libgphoto2-2.5.9/0000755000175000001440000000000012623156275010606 500000000000000libgphoto2-2.5.9/configure0000755000175000001440000310756712623156013012446 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for libgphoto2 photo camera library 2.5.9. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 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=: # Pre-4.2 versions of Zsh do 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_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } 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.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= 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 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do 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_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: gphoto-devel@lists.sourceforge.net about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_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 || $as_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" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error 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 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # 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 as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # 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" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # 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 } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac 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 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then 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 -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' 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='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # 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'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/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=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libgphoto2 photo camera library' PACKAGE_TARNAME='libgphoto2' PACKAGE_VERSION='2.5.9' PACKAGE_STRING='libgphoto2 photo camera library 2.5.9' PACKAGE_BUGREPORT='gphoto-devel@lists.sourceforge.net' PACKAGE_URL='' ac_unique_file="libgphoto2/gphoto2-version.c" # 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" enable_option_checking=no ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS subdirs HAVE_CXX_FALSE HAVE_CXX_TRUE HAVE_LIBEXIF_FALSE HAVE_LIBEXIF_TRUE REQUIREMENTS_FOR_LIBEXIF LIBEXIF_CONFIG_PROG LIBEXIF_LIBS LIBEXIF_CFLAGS pkgconfigdir hotplugusermapdir hotplugdocdir HAVE_LINUX_FALSE HAVE_LINUX_TRUE ENABLE_RPM_FALSE ENABLE_RPM_TRUE RPMBUILD camlibdocdir apidocdir ENABLE_GTK_DOC_FALSE ENABLE_GTK_DOC_TRUE GTKDOC ENABLE_INTERNAL_DOCS_FALSE ENABLE_INTERNAL_DOCS_TRUE HTML_APIDOC_INTERNALS_DIR DOXYGEN_OUTPUT_DIR HTML_APIDOC_DIR HAVE_DOT HAVE_DOT_FALSE HAVE_DOT_TRUE HAVE_DOXYGEN_FALSE HAVE_DOXYGEN_TRUE DOXYGEN DOT ALL_DEFAULT_CAMLIBS ALL_DEFINED_CAMLIBS BUILD_THESE_CAMLIBS camlibdir HAVE_UDEV_FALSE HAVE_UDEV_TRUE udevscriptdir utilsdir effective_target HAVE_LIBGD_FALSE HAVE_LIBGD_TRUE REQUIREMENTS_FOR_LIBGD LIBGD_CONFIG_PROG LIBGD_LIBS LIBGD_CFLAGS HAVE_LIBXML2_FALSE HAVE_LIBXML2_TRUE REQUIREMENTS_FOR_LIBXML2 LIBXML2_CONFIG_PROG PKG_CONFIG_LIBDIR LIBXML2_LIBS LIBXML2_CFLAGS LIBJPEG VERSIONMAPLDFLAGS POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV MSGMERGE XGETTEXT GMSGFMT MSGFMT USE_NLS MKINSTALLDIRS GETTEXT_PACKAGE MAIL_GPHOTO_TRANSLATION MAIL_GPHOTO_USER MAIL_GPHOTO_DEVEL URL_USB_MASSSTORAGE URL_JPHOTO_HOME URL_DIGICAM_LIST URL_GPHOTO_PROJECT URL_GPHOTO_HOME LIBLTDL LTDLINCL CXXCPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED LIBTOOL OBJDUMP DLLTOOL AS host_os host_vendor host_cpu host build_os build_vendor build_cpu build PKG_CONFIG_PATH PKG_CONFIG ENABLED_GP2DDB_FALSE ENABLED_GP2DDB_TRUE BISON FLEX EGREP GREP AM_LDFLAGS AM_CXXFLAGS AM_CFLAGS AM_CPPFLAGS HAVE_GCC_FALSE HAVE_GCC_TRUE NO_UNUSED_CFLAGS ac_ct_AR AR am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC LIBGPHOTO2_VERSION_INFO LIBGPHOTO2_CURRENT_MIN LIBGPHOTO2_CURRENT LIBGPHOTO2_REVISION LIBGPHOTO2_AGE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_gp2ddb enable_static enable_shared with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_nls enable_rpath with_libiconv_prefix with_libintl_prefix enable_largefile with_jpeg with_libxml_2_0 with_gdlib with_camlibdir with_camlibs with_doc_dir enable_internal_docs enable_docs with_html_dir with_rpmbuild with_hotplug_doc_dir with_hotplug_usermap_dir with_libexif ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC PKG_CONFIG PKG_CONFIG_PATH LT_SYS_LIBRARY_PATH CXXCPP LTDLINCL LIBLTDL LIBXML2_CFLAGS LIBXML2_LIBS PKG_CONFIG_LIBDIR LIBGD_CFLAGS LIBGD_LIBS utilsdir udevscriptdir LIBEXIF_CFLAGS LIBEXIF_LIBS' ac_subdirs_all='libgphoto2_port' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # 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= ;; *) 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_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=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_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=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 ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_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'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. 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 # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" 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 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 .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # 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 -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | 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 .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" 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 libgphoto2 photo camera library 2.5.9 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/libgphoto2] --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 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 libgphoto2 photo camera library 2.5.9:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-gp2ddb enable EXPERIMENTAL PRE-ALPHA gphoto2 device database code --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --disable-largefile omit support for large files --enable-internal-docs Build internal code docs if doxygen available --enable-docs Use gtk-doc to build documentation [default=no] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --without-jpeg Build without jpeg library (default: no) --with-libxml-2.0=PREFIX where to find libxml-2.0, "no" or "auto" --with-gdlib=PREFIX where to find gdlib, "no" or "auto" --with-camlibdir= install camlibs in directory --with-camlibs= Compile camera drivers (camlibs) in . Drivers may be separated with commas. CAUTION: DRIVER NAMES AND CAMERA NAMES MAY DIFFER. 'all' is the default and compiles all camlibs. Possible camlibs are: adc65 agfa_cl20 aox ax203 barbie canon casio_qv clicksmart310 digigr8 digita dimera3500 directory enigma13 fuji gsmart300 hp215 iclick jamcam jd11 jl2005a jl2005c kodak_dc120 kodak_dc210 kodak_dc240 kodak_dc3200 kodak_ez200 konica konica_qm150 largan lg_gsm mars dimagev mustek panasonic_coolshot panasonic_l859 panasonic_dc1000 panasonic_dc1580 pccam300 pccam600 pentax polaroid_pdc320 polaroid_pdc640 polaroid_pdc700 ptp2 ricoh ricoh_g3 samsung sierra sipix_blink2 sipix_web2 smal sonix sony_dscf1 sony_dscf55 soundvision spca50x sq905 st2205 stv0674 stv0680 sx330z topfield toshiba_pdrm11 tp6801 --with-doc-dir=PATH Where to install docs [default=autodetect] --with-html-dir=PATH Where to install html docs [default=autodetect] --with-rpmbuild=PATH Program to use for building RPMs --with-hotplug-doc-dir=PATH Where to install hotplug scripts as docs [default=autodetect] --with-hotplug-usermap-dir=PATH Where to install hotplug scripts as docs [default=autodetect] --with-libexif=PREFIX where to find libexif, "no" or "auto" 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 (Objective) C/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 PKG_CONFIG pkg-config package config utility PKG_CONFIG_PATH directory where pkg-config looks for *.pc files LT_SYS_LIBRARY_PATH User-defined run-time library search path. CXXCPP C++ preprocessor LTDLINCL CFLAGS for compiling with libltdl LIBLTDL LIBS to add for linking against libltdl LIBXML2_CFLAGS CFLAGS for compiling with libxml-2.0 LIBXML2_LIBS LIBS to add for linking against libxml-2.0 PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path LIBGD_CFLAGS CFLAGS for compiling with gdlib LIBGD_LIBS LIBS to add for linking against gdlib utilsdir Directory where utilities like print-camera-list will be installed udevscriptdir Directory where udev scripts like check-ptp-camera will be installed LIBEXIF_CFLAGS CFLAGS for compiling with libexif LIBEXIF_LIBS LIBS to add for linking against libexif 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" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && 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=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_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 $as_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 libgphoto2 photo camera library configure 2.5.9 generated by GNU Autoconf 2.69 Copyright (C) 2012 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 ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------------------------- ## ## Report this to gphoto-devel@lists.sourceforge.net ## ## ------------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* 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_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" 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 eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- # Tries to find if the field MEMBER exists in type AGGR, after including # INCLUDES, setting cache variable VAR accordingly. ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 $as_echo_n "checking for $2.$3... " >&6; } if eval \${$4+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int main () { static $2 ac_aggr; if (sizeof ac_aggr.$3) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$4=yes" else eval "$4=no" 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 eval ac_res=\$$4 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member 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 libgphoto2 photo camera library $as_me 2.5.9, which was generated by GNU Autoconf 2.69. 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=. $as_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=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append 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 as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset 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 $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" 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_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; 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 $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_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'; as_fn_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 $as_echo "/* confdefs.h */" > 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 cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } 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. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_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,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_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 # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_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. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## 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 ac_config_headers="$ac_config_headers config.h" ac_aux_dir= for ac_dir in auto-aux "$srcdir"/auto-aux; 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 as_fn_error $? "cannot find install-sh, install.sh, or shtool in auto-aux \"$srcdir\"/auto-aux" "$LINENO" 5 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. am__api_version='1.15' # 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. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$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 rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$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' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # 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 ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$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 test -d ./--version && rmdir ./--version 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. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 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='libgphoto2' VERSION='2.5.9' 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"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Use the silent-rules feature when possible. # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' # make sure "cd" doesn't print anything on stdout if test x"${CDPATH+set}" = xset then CDPATH=: export CDPATH fi # make sure $() command substitution works { $as_echo "$as_me:${as_lineno-$LINENO}: checking for POSIX sh \$() command substitution" >&5 $as_echo_n "checking for POSIX sh \$() command substitution... " >&6; } if test "x$(pwd)" = "x`pwd`" && test "y$(echo "foobar")" = "y`echo foobar`" # '''' then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } uname=`uname 2>&1` # '' uname_a=`uname -a 2>&1` # '' as_fn_error $? " * POSIX sh \$() command substition does not work with this shell. * * You are running a very rare species of shell. Please report this * sighting to <${PACKAGE_BUGREPORT}>: * SHELL=${SHELL} * uname=${uname} * uname-a=${uname_a} * Please also include your OS and version. * * Run this configure script using a better (i.e. POSIX compliant) shell. " "$LINENO" 5 fi gp_config_len="30" gp_config_empty="" gp_config_len3="$(expr "$gp_config_len" - 3)" n="$gp_config_len" while test "$n" -gt 0; do gp_config_empty="${gp_config_empty} " n="$(expr "$n" - 1)" done gp_config_msg=" Configuration (${PACKAGE_TARNAME} ${PACKAGE_VERSION}): " gp_config_msg="${gp_config_msg} Build " gp_config_msg_len="$(expr "Source code location" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Source code location" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Source code location:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${srcdir} " LIBGPHOTO2_AGE=0 LIBGPHOTO2_REVISION=0 LIBGPHOTO2_CURRENT=6 LIBGPHOTO2_CURRENT_MIN=`expr $LIBGPHOTO2_CURRENT - $LIBGPHOTO2_AGE` LIBGPHOTO2_VERSION_INFO=$LIBGPHOTO2_CURRENT:$LIBGPHOTO2_REVISION:$LIBGPHOTO2_AGE 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$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" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM 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. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 | *.dSYM | *.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 if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* 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" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg 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) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : 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 ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_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='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&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". rm -rf conftest.dir 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 am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac 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 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; 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 ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj 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 $am__obj 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$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 ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } 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 ac_ext=cpp 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 -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes 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_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$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 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 depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&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". rm -rf conftest.dir 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 am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac 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 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; 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 ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj 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 $am__obj 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$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 "$ac_tool_prefix"; then for ac_prog in ar lib "link -lib" 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} { $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 $as_echo_n "checking the archiver ($AR) interface... " >&6; } if ${am_cv_ar_interface+:} false; then : $as_echo_n "(cached) " >&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 am_cv_ar_interface=ar cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int some_variable = 0; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a fi rm -f core 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' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 $as_echo "$am_cv_ar_interface" >&6; } case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) as_fn_error $? "could not determine $AR interface" "$LINENO" 5 ;; esac SED=${SED-sed} if test "x$GCC" = "xyes"; then # CFLAGS="$CFLAGS --std=c99 -Wall -Wextra -Werror -pedantic" CFLAGS="$CFLAGS -Wall -Wmissing-declarations -Wmissing-prototypes" LDFLAGS="$LDFLAGS" NO_UNUSED_CFLAGS=-Wno-unused fi if test "x$GCC" = "xyes"; then HAVE_GCC_TRUE= HAVE_GCC_FALSE='#' else HAVE_GCC_TRUE='#' HAVE_GCC_FALSE= fi # Activate internal code AM_CPPFLAGS="$AM_CPPFLAGS -D_GPHOTO2_INTERNAL_CODE" # CPPFLAGS: C PreProcessor flags # CFLAGS: C compiler flags # CXXFLAGS: C++ compiler flags # LDFLAGS: Linker flags # Check for va_copy() { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then 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" as_fn_executable_p "$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 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_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 as_fn_arith $ac_count + 1 && ac_count=$as_val 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 if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then 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" as_fn_executable_p "$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 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_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 as_fn_arith $ac_count + 1 && ac_count=$as_val 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 if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h 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=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "stdarg.h" "ac_cv_header_stdarg_h" "$ac_includes_default" if test "x$ac_cv_header_stdarg_h" = xyes; then : else as_fn_error $? " Building $PACKAGE_NAME requires . " "$LINENO" 5 fi have_va_copy=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { va_list a,b; va_copy(a,b); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_va_copy="va_copy" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { va_list a,b; __va_copy(a,b); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_va_copy="__va_copy" $as_echo "#define va_copy __va_copy" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for va_copy() or replacement" >&5 $as_echo_n "checking for va_copy() or replacement... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_va_copy" >&5 $as_echo "$have_va_copy" >&6; } if test "x$have_va_copy" != "xno"; then $as_echo "#define HAVE_VA_COPY 1" >>confdefs.h fi # Note: Do NOT add specific libraries and stuff to the generic _FLAGS. # Put these into LIBFOO_CFLAGS and LIBFOO_LIBS instead. try_gp2ddb=false msg_gp2ddb="" gp_msg_dp2ddb="no" # Check whether --enable-gp2ddb was given. if test "${enable_gp2ddb+set}" = set; then : enableval=$enable_gp2ddb; if test "x$enableval" = "xyes"; then try_gp2ddb=true msg_dp2ddb="(--enable-gp2ddb detected)" elif test "x$enableval" = "xno"; then try_gp2ddb=false msg_dp2ddb="(--disable-gp2ddb detected)" fi fi # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_FLEX+:} false; then : $as_echo_n "(cached) " >&6 else case $FLEX in [\\/]* | ?:[\\/]*) ac_cv_path_FLEX="$FLEX" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_FLEX="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi FLEX=$ac_cv_path_FLEX if test -n "$FLEX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FLEX" >&5 $as_echo "$FLEX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "bison", so it can be a program name with args. set dummy bison; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BISON+:} false; then : $as_echo_n "(cached) " >&6 else case $BISON in [\\/]* | ?:[\\/]*) ac_cv_path_BISON="$BISON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi BISON=$ac_cv_path_BISON if test -n "$BISON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5 $as_echo "$BISON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable GP2DDB" >&5 $as_echo_n "checking whether to enable GP2DDB... " >&6; } if "$try_gp2ddb"; then if test -x "$FLEX" && test -x "$BISON"; then gp_msg_dp2ddb="yes $msg_dp2ddb" else as_fn_error $? "Fatal: GP2DDB support requires flex and bison! Aborting configuration. Install flex and bison into your PATH or run configure with --disable-gp2ddb to disable GP2DDB support. " "$LINENO" 5 fi else gp_msg_dp2ddb="no $msg_dp2ddb" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${gp_msg_gp2ddb}" >&5 $as_echo "${gp_msg_gp2ddb}" >&6; } if "$try_gp2ddb" && test -x "$FLEX" && test -x "$BISON"; then ENABLED_GP2DDB_TRUE= ENABLED_GP2DDB_FALSE='#' else ENABLED_GP2DDB_TRUE='#' ENABLED_GP2DDB_FALSE= fi if "$try_gp2ddb" && test -x "$FLEX" && test -x "$BISON"; then gp_msg_gp2ddb="yes $msg_gp2ddb" $as_echo "#define ENABLED_GP2DDB 1" >>confdefs.h else gp_msg_gp2ddb="no $msg_gp2ddb" fi gp_config_msg_len="$(expr "GP2DDB support" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "GP2DDB support" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "GP2DDB support:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${gp_msg_gp2ddb} (EXPERIMENTAL) " # # [GP_PKG_CONFIG] # export PKG_CONFIG export PKG_CONFIG_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking PKG_CONFIG_PATH" >&5 $as_echo_n "checking PKG_CONFIG_PATH... " >&6; } if test "x${PKG_CONFIG_PATH}" = "x"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: empty" >&5 $as_echo "empty" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${PKG_CONFIG_PATH}" >&5 $as_echo "${PKG_CONFIG_PATH}" >&6; } fi # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="false" ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$PKG_CONFIG" = "false"; then as_fn_error $? " *** Build requires pkg-config *** *** Possible solutions: *** - set PKG_CONFIG to where your pkg-config is located *** - set PATH to include the directory where pkg-config is installed *** - get it from http://freedesktop.org/software/pkgconfig/ and install it " "$LINENO" 5 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=no fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&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 && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&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` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; 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 enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump enable_dlopen=yes case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Backslashify 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' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&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" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then 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" as_fn_executable_p "$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 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_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 as_fn_arith $ac_count + 1 && ac_count=$as_val 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 if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then 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" as_fn_executable_p "$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 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_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 as_fn_arith $ac_count + 1 && ac_count=$as_val 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 if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$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 no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&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 yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&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 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&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 # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&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* | cegcc*) # 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; ;; mint*) # On MiNT this can take a long time and run out of memory. 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; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # 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 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; 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" && \ test undefined != "$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`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$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 cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&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 # that 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 # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; 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 ;; haiku*) 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])(-bit)?( [LM]SB)? 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 glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; 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 ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi 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}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # 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. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&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* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; 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 if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= 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"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$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"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/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, # D for any global variable and I for any imported 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};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,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 lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # 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\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$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=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && 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 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #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. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$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_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_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 yes = "$pipe_works"; 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 $as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_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 dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || 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 what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; 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* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; 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" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; 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" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) 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 if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&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 there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&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 yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; 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" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf # Set options # 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 --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else pic_mode=default fi # 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 shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$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 set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=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 func_cc_basename $compiler cc_basename=$func_cc_basename_result # 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&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" ## exclude from sc_useless_quotes_in_assignment # 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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; 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= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; 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* | cegcc*) # 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' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +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 case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # 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' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; 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 | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # 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* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # 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='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; 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* | sunf77* | sunf90* | sunf95*) 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 that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&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" ## exclude from sc_useless_quotes_in_assignment # 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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; 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\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&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 "$_lt_linker_boilerplate" | $SED '/^$/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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&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_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* | cegcc*) # 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 yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; 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 | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [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 ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, 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 install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _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* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' 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/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' 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, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; 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 ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; 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 | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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 no = "$tmp_diet" then tmp_addflag=' $pic_flag' 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; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # 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; func_echo_all \"$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' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; 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; func_echo_all \"$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 yes = "$supports_anon_versioning"; 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 tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # 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='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; 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 $linker_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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $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 cannot *** 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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $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 no = "$ld_shlibs"; 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 yes = "$GCC" && 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 ia64 = "$host_cpu"; 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 GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX 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") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; 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 yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; 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. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_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 "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ 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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_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 "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ 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' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' 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* | cegcc*) # 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. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # 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 $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper 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 `func_echo_all "$deplibs" | $SED '\''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' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all 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 ;; # 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 $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$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 "x$output_objdir/$soname" = "x$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 yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $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 no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$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 yes,no = "$GCC,$with_gnu_ld"; 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 $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $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' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" 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 "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $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 ;; esac fi if test no = "$with_gnu_ld"; 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 yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $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. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -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 ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; 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* | bitrig*) 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__`"; 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 archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; 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" && func_echo_all "$wl-set_version $wl$verstring"` $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" && func_echo_all "-set_version $verstring"` -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 yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$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='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-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; 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 "-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 archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $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 $pic_flag $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 yes = "$GCC"; 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 sequent = "$host_vendor"; 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 yes = "$GCC"; 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 CANNOT 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 yes = "$GCC"; 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 sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test no = "$ld_shlibs" && 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 yes,yes = "$GCC,$enable_shared"; 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. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 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\":${as_lineno-$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=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # 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 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # 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` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac 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" elif test -n "$lt_multi_os_dir"; then 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; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; 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 # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # 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' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # 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' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac 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=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $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 # correct to gnu/linux during the next big refactor 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* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc 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="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; 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 dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. 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 # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # 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' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # 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 # correct to gnu/linux during the next big refactor 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 ;; 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[23].*) 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$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' 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 ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" 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=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' 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 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; 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' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor 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 yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor 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 ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor 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 if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # 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 # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) 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;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 # correct to gnu/linux during the next big refactor 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* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi 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 shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec 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' ;; 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 # correct to gnu/linux during the next big refactor 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 yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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=sco 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 yes = "$with_gnu_ld"; 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_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 # correct to gnu/linux during the next big refactor 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; 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* | cegcc*) 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; 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 ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && 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" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; 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 $LINENO "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 /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 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; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; 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 $LINENO "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 /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 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; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$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= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&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" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "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" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$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 if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then ac_ext=cpp 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } 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 else _lt_caught_CXX_error=yes fi ac_ext=cpp 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 archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$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 yes != "$_lt_caught_CXX_error"; 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. # 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 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* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS 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++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&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 yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&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 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_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 yes = "$with_gnu_ld"; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -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= 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 -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test ia64 = "$host_cpu"; 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive 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 if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no ;; esac if test yes = "$GXX"; 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_CXX=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= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_CXX='$wl-bexpall' # 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`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 "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX 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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`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 "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX 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' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' 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 ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # 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_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='$wl--export-all-symbols' 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, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; 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 ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_CXX="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_CXX="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" if test yes != "$lt_cv_apple_cc_single_mod"; then 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$_lt_dsymutil" archive_expsym_cmds_CXX="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 ld_shlibs_CXX=no fi ;; os2*) hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_minus_L_CXX=yes allow_undefined_flag_CXX=unsupported shrext_cmds=.dll archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_CXX=yes ;; 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 ;; freebsd2.*) # 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* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; 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 "x$output_objdir/$soname" = "x$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; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) 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_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=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 ld_shlibs_CXX=no ;; aCC*) 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' ;; ia64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $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' ;; 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; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; 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 $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $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 ;; interix[3-9]*) 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" && func_echo_all "-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 yes = "$GXX"; then if test no = "$with_gnu_ld"; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$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=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | 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. 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; func_echo_all "$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* | 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."*) 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' ;; *) # 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' ;; 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* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='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 | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='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 | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='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 | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols 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' ;; esac 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; func_echo_all \"$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' runpath_var=LD_RUN_PATH 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"`; templist=`func_echo_all "$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; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='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 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='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=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='func_echo_all' # 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' ;; esac ;; 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::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes 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__`"; 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=func_echo_all else ld_shlibs_CXX=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. 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. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) 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" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) 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" && func_echo_all "-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' ;; esac 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=`func_echo_all "$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; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac 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 -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no 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* | sunCC*) # 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 compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # 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' # 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 yes,no = "$GXX,$with_gnu_ld"; then no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $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 $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -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 -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $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 $wl-h $wl$soname -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 -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac 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 CANNOT 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_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='$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,$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' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) 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 ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no GCC_CXX=$GXX LD_CXX=$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... # 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= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev 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 prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$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 no = "$pre_test_object_deps_done"; 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 ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken 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. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-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_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # 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_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; 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= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; 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_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; 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_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 ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # 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' ;; 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* | 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 ia64 != "$host_cpu"; 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* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # 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' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; 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* | sunCC*) # 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 ;; 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 ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # 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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; 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 # # 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\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=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 "$_lt_linker_boilerplate" | $SED '/^$/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_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' 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 GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX 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") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_CXX 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. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX 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\":${as_lineno-$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 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&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" 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; 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 # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # 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' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # 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' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac 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=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $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 # correct to gnu/linux during the next big refactor 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* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc 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' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; 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 dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. 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 # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # 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' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # 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_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor 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 ;; 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[23].*) 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$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' 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 ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" 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=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' 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 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; 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' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor 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 yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor 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 ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec_CXX='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor 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 if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # 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 # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) 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;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 # correct to gnu/linux during the next big refactor 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* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi 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 shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec 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' ;; 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 # correct to gnu/linux during the next big refactor 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 yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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=sco 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 yes = "$with_gnu_ld"; 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_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 # correct to gnu/linux during the next big refactor 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_CXX" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && test no != "$hardcode_minus_L_CXX"; 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 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test relink = "$hardcode_action_CXX" || test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS 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 yes != "$_lt_caught_CXX_error" 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 ac_config_commands="$ac_config_commands libtool" # Only expand once: if test "x${LTDLINCL}${LIBLTDL}" = "x"; then ac_fn_c_check_header_mongrel "$LINENO" "ltdl.h" "ac_cv_header_ltdl_h" "$ac_includes_default" if test "x$ac_cv_header_ltdl_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lt_dlinit in -lltdl" >&5 $as_echo_n "checking for lt_dlinit in -lltdl... " >&6; } if ${ac_cv_lib_ltdl_lt_dlinit+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lltdl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 lt_dlinit (); int main () { return lt_dlinit (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ltdl_lt_dlinit=yes else ac_cv_lib_ltdl_lt_dlinit=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ltdl_lt_dlinit" >&5 $as_echo "$ac_cv_lib_ltdl_lt_dlinit" >&6; } if test "x$ac_cv_lib_ltdl_lt_dlinit" = xyes; then : LTDLINCL="" LIBLTDL="-lltdl" $as_echo "#define HAVE_LTDL 1" >>confdefs.h else as_fn_error $? " $PACKAGE requires the ltdl library, included with libtool Please make sure that the proper development package is installed (libltdl-dev, libtool-ltdl-devel, etc.) " "$LINENO" 5 fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libltdl flags" >&5 $as_echo_n "checking for libltdl flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: set explicitly: ${LTDLINCL} ${LIBLTDL}" >&5 $as_echo "set explicitly: ${LTDLINCL} ${LIBLTDL}" >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking that we can compile and link with libltdl" >&5 $as_echo_n "checking that we can compile and link with libltdl... " >&6; } saved_CPPFLAGS="$CPPFLAGS" saved_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $LTDLINCL" LIBS="$LIBS $LIBLTDL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for NULL */ #include /* for lt_* */ int main () { int ret = lt_dlforeachfile("/usr/lib:/usr/local/lib", NULL, NULL); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "cannot compile and link against libltdl ${PACKAGE_TARNAME} requires libltdl (the libtool dl* library), but cannot compile and link against it. Aborting. " "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CPPFLAGS="$saved_CPPFLAGS" LIBS="$saved_LIBS" 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 # report on compiler/libtool setup gp_config_msg_len="$(expr "Compiler" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Compiler" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Compiler:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${CC} " gp_config_msg_len="$(expr "libltdl includes" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libltdl includes" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libltdl includes:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} $LTDLINCL " gp_config_msg_len="$(expr "libltdl library" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libltdl library" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libltdl library:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} $LIBLTDL " cat >>confdefs.h <<_ACEOF #define HAVE_CC "$CC" _ACEOF URL_GPHOTO_HOME="http://www.gphoto.org/" cat >>confdefs.h <<_ACEOF #define URL_GPHOTO_HOME "http://www.gphoto.org/" _ACEOF URL_GPHOTO_PROJECT="https://github.com/gphoto" cat >>confdefs.h <<_ACEOF #define URL_GPHOTO_PROJECT "https://github.com/gphoto" _ACEOF URL_DIGICAM_LIST="http://www.teaser.fr/~hfiguiere/linux/digicam.html" cat >>confdefs.h <<_ACEOF #define URL_DIGICAM_LIST "http://www.teaser.fr/~hfiguiere/linux/digicam.html" _ACEOF URL_JPHOTO_HOME="http://jphoto.sourceforge.net/" cat >>confdefs.h <<_ACEOF #define URL_JPHOTO_HOME "http://jphoto.sourceforge.net/" _ACEOF URL_USB_MASSSTORAGE="http://www.linux-usb.org/USB-guide/x498.html" cat >>confdefs.h <<_ACEOF #define URL_USB_MASSSTORAGE "http://www.linux-usb.org/USB-guide/x498.html" _ACEOF MAIL_GPHOTO_DEVEL="" cat >>confdefs.h <<_ACEOF #define MAIL_GPHOTO_DEVEL "" _ACEOF MAIL_GPHOTO_USER="" cat >>confdefs.h <<_ACEOF #define MAIL_GPHOTO_USER "" _ACEOF MAIL_GPHOTO_TRANSLATION="" cat >>confdefs.h <<_ACEOF #define MAIL_GPHOTO_TRANSLATION "" _ACEOF gp_config_msg="${gp_config_msg} Features " ALL_LINGUAS="cs da de es eu fr hu it ja nl pl ru sv uk vi zh_CN" GETTEXT_PACKAGE="${PACKAGE}-${LIBGPHOTO2_CURRENT_MIN}" cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF sed_cmds="s|^DOMAIN.*|DOMAIN = ${GETTEXT_PACKAGE}|" sed_cmds="${sed_cmds};s|^COPYRIGHT_HOLDER.*|COPYRIGHT_HOLDER = The gPhoto Team|" if test -n "$PACKAGE_BUGREPORT"; then sed_mb="${PACKAGE_BUGREPORT}" else as_fn_error $? " *** Your configure.{ac,in} is wrong. *** Either define PACKAGE_BUGREPORT (by using the 4-parameter AC INIT syntax) *** or give GP_GETTEXT_HACK the third parameter. *** " "$LINENO" 5 fi sed_cmds="${sed_cmds};s|^MSGID_BUGS_ADDRESS.*|MSGID_BUGS_ADDRESS = ${sed_mb}|" # Not so sure whether this hack is all *that* evil... { $as_echo "$as_me:${as_lineno-$LINENO}: checking for po/Makevars requiring hack" >&5 $as_echo_n "checking for po/Makevars requiring hack... " >&6; } if test -f "${srcdir}/po/Makevars.template"; then sed "$sed_cmds" < "${srcdir}/po/Makevars.template" > "${srcdir}/po/Makevars" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, done." >&5 $as_echo "yes, done." >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$GMSGFMT" != ":"; then if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 $as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } GMSGFMT=":" fi fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi rm -f messages.po fi ac_config_commands="$ac_config_commands default-1" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # 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 # Prepare PATH_SEPARATOR. # 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 ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 $as_echo_n "checking for ld used by GCC... " >&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. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi LIBICONV= LTLIBICONV= INCICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } LIBINTL= LTLIBINTL= POSUB= if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if ${gt_cv_func_gnugettext1_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_gnugettext1_libc=yes else gt_cv_func_gnugettext1_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libc" >&5 $as_echo "$gt_cv_func_gnugettext1_libc" >&6; } if test "$gt_cv_func_gnugettext1_libc" != "yes"; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi LIBINTL= LTLIBINTL= INCINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if ${gt_cv_func_gnugettext1_libintl+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_gnugettext1_libintl=yes else gt_cv_func_gnugettext1_libintl=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext1_libintl=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libintl" >&5 $as_echo "$gt_cv_func_gnugettext1_libintl" >&6; } fi if test "$gt_cv_func_gnugettext1_libc" = "yes" \ || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$GMSGFMT" != ":"; then if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 $as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } GMSGFMT=":" fi fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi rm -f messages.po fi ac_config_commands="$ac_config_commands default-2" am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 $as_echo_n "checking for iconv declaration... " >&6; } if ${am_cv_proto_iconv+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : am_cv_proto_iconv_arg1="" else am_cv_proto_iconv_arg1="const" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" fi am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:- }$am_cv_proto_iconv" >&5 $as_echo "${ac_t:- }$am_cv_proto_iconv" >&6; } cat >>confdefs.h <<_ACEOF #define ICONV_CONST $am_cv_proto_iconv_arg1 _ACEOF fi if test "x${BUILD_INCLUDED_LIBINTL}" = "xyes"; then AM_CFLAGS="${AM_CFLAGS} -I\$(top_srcdir)/intl" fi gp_config_msg_len="$(expr "Use translations" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Use translations" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Use translations:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${USE_NLS} " if test "x$USE_NLS" = "xyes" && test "${BUILD_INCLUDED_LIBINTL}"; then gp_config_msg_len="$(expr "Use included libintl" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Use included libintl" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Use included libintl:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${BUILD_INCLUDED_LIBINTL} " fi # same trick as with libdl: # if gettext() doesn't require linking against libintl, # we don't have to check for gettext in libintl. Otherwise # we may even require libintl. localedir="\$(datadir)/locale" AM_CPPFLAGS="$AM_CPPFLAGS -DLOCALEDIR=\\\"${localedir}\\\"" # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if ${ac_cv_sys_file_offset_bits+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits _ACEOF ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if ${ac_cv_sys_large_files+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGE_FILES $ac_cv_sys_large_files _ACEOF ;; esac rm -rf conftest* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for asm .symver support" >&5 $as_echo_n "checking for asm .symver support... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { int f1() { } int f2() { } asm(".symver f1, f@VER1"); asm(".symver f2, f@@VER2"); int main(int argc, char **argv) { } ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define HAVE_ASM_SYMVERS 1" >>confdefs.h VERSIONMAPLDFLAGS="-Wl,--version-script=\$(srcdir)/libgphoto2.ver" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else VERSIONMAPLDFLAGS="" { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -libs" >&5 $as_echo_n "checking for main in -libs... " >&6; } if ${ac_cv_lib_ibs_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-libs $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ibs_main=yes else ac_cv_lib_ibs_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ibs_main" >&5 $as_echo "$ac_cv_lib_ibs_main" >&6; } if test "x$ac_cv_lib_ibs_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBIBS 1 _ACEOF LIBS="-libs $LIBS" fi LIBJPEG="" libjpeg_msg="no" # Check whether --with-jpeg was given. if test "${with_jpeg+set}" = set; then : withval=$with_jpeg; fi if test "x$with_jpeg" != "xno"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_start_decompress in -ljpeg" >&5 $as_echo_n "checking for jpeg_start_decompress in -ljpeg... " >&6; } if ${ac_cv_lib_jpeg_jpeg_start_decompress+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ljpeg $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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_start_decompress (); int main () { return jpeg_start_decompress (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_jpeg_jpeg_start_decompress=yes else ac_cv_lib_jpeg_jpeg_start_decompress=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_start_decompress" >&5 $as_echo "$ac_cv_lib_jpeg_jpeg_start_decompress" >&6; } if test "x$ac_cv_lib_jpeg_jpeg_start_decompress" = xyes; then : ac_fn_c_check_header_mongrel "$LINENO" "jpeglib.h" "ac_cv_header_jpeglib_h" "$ac_includes_default" if test "x$ac_cv_header_jpeglib_h" = xyes; then : $as_echo "#define HAVE_LIBJPEG 1" >>confdefs.h LIBJPEG="-ljpeg" libjpeg_msg="yes" fi fi fi gp_config_msg_len="$(expr "JPEG mangling support" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "JPEG mangling support" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "JPEG mangling support:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${libjpeg_msg} " { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dynamic library extension" >&5 $as_echo_n "checking for dynamic library extension... " >&6; } soext="" case "$host" in *linux*) soext=".so" ;; *sunos*) soext=".so" ;; *solaris*) soext=".so" ;; *bsd*) soext=".so" ;; *darwin*) soext=".dylib" ;; *w32*) soext=".dll" ;; esac case "$host_os" in gnu*) soext=".so" ;; esac if test "x$soext" = "x"; then soext=".so" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${soext}" >&5 $as_echo "${soext}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Host system \"${host}\" not recognized, defaulting to \"${soext}\". " >&5 $as_echo "$as_me: WARNING: Host system \"${host}\" not recognized, defaulting to \"${soext}\". " >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${soext}" >&5 $as_echo "${soext}" >&6; } fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # ---------------------------------------------------------------------- # [GP_CHECK_LIBRARY]([LIBXML2],[libxml-2.0],[>= 2.0], # [libxml/parser.h],[xmlFirstElementChild], # [...],[...],[default-on]) # http://xmlsoft.org # ---------------------------------------------------------------------- # Use _CFLAGS and _LIBS given to configure. # This makes it possible to set these vars in a configure script # and AC_CONFIG_SUBDIRS this configure. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 to use" >&5 $as_echo_n "checking for libxml-2.0 to use... " >&6; } REQUIREMENTS_FOR_LIBXML2="libxml-2.0 >= 2.0" userdef_LIBXML2=no have_LIBXML2=no if test "x${LIBXML2_LIBS}" = "x" && test "x${LIBXML2_CFLAGS}" = "x"; then # define --with/--without argument try_LIBXML2=auto # Check whether --with-libxml-2.0 was given. if test "${with_libxml_2_0+set}" = set; then : withval=$with_libxml_2_0; try_LIBXML2="$withval" fi if test "x${try_LIBXML2}" = "xno"; then REQUIREMENTS_FOR_LIBXML2= fi if test "x${try_LIBXML2}" = "xauto"; then try_LIBXML2=autodetect; fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${try_LIBXML2}" >&5 $as_echo "${try_LIBXML2}" >&6; } if test "x${try_LIBXML2}" = "xautodetect"; then # OK, we have to autodetect. # We start autodetection with the cleanest known method: pkg-config if test "x${have_LIBXML2}" = "xno"; then # we need that line break after the PKG_CHECK_MODULES pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBXML2" >&5 $as_echo_n "checking for LIBXML2... " >&6; } if test -n "$LIBXML2_CFLAGS"; then pkg_cv_LIBXML2_CFLAGS="$LIBXML2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML2_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBXML2_LIBS"; then pkg_cv_LIBXML2_LIBS="$LIBXML2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0 >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libxml-2.0 >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBXML2_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBXML2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libxml-2.0 >= 2.0" 2>&1` else LIBXML2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libxml-2.0 >= 2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBXML2_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else LIBXML2_CFLAGS=$pkg_cv_LIBXML2_CFLAGS LIBXML2_LIBS=$pkg_cv_LIBXML2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_LIBXML2=yes fi fi # If pkg-config didn't find anything, try the libfoo-config program # certain known libraries ship with. if test "x${have_LIBXML2}" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking libxml-2.0 config program" >&5 $as_echo_n "checking libxml-2.0 config program... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: xml2-config" >&5 $as_echo "xml2-config" >&6; } # Extract the first word of "gp_lib_config", so it can be a program name with args. set dummy xml2-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_LIBXML2_CONFIG_PROG+:} false; then : $as_echo_n "(cached) " >&6 else case $LIBXML2_CONFIG_PROG in [\\/]* | ?:[\\/]*) ac_cv_path_LIBXML2_CONFIG_PROG="$LIBXML2_CONFIG_PROG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_LIBXML2_CONFIG_PROG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi LIBXML2_CONFIG_PROG=$ac_cv_path_LIBXML2_CONFIG_PROG if test -n "$LIBXML2_CONFIG_PROG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBXML2_CONFIG_PROG" >&5 $as_echo "$LIBXML2_CONFIG_PROG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "${LIBXML2_CONFIG_PROG}" && test "${LIBXML2_CONFIG_PROG}" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 version according to xml2-config" >&5 $as_echo_n "checking for libxml-2.0 version according to xml2-config... " >&6; } _LIBXML2_COMPN="-lt" # split requested version number using m4 regexps _LIBXML2_REQ_1="2" _LIBXML2_REQ_2="0" _LIBXML2_REQ_3="" _LIBXML2_REQ_4="" # split installed version number via shell and sed _LIBXML2_VERSION="$("${LIBXML2_CONFIG_PROG}" --version | sed 's/^.* //')" _LIBXML2_VER_1="$(echo "${_LIBXML2_VERSION}" | sed 's/\([0-9]*\).*/\1/g')" _LIBXML2_VER_2="$(echo "${_LIBXML2_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\).*/\2/g')" _LIBXML2_VER_3="$(echo "${_LIBXML2_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/g')" _LIBXML2_VER_4="$(echo "${_LIBXML2_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(.*\)/\4/g')" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_LIBXML2_VERSION}" >&5 $as_echo "${_LIBXML2_VERSION}" >&6; } _tmp=false if test "${_LIBXML2_VER_1}" "${_LIBXML2_COMPN}" "${_LIBXML2_REQ_1}"; then _tmp=true; elif test "${_LIBXML2_VER_2}" "${_LIBXML2_COMPN}" "${_LIBXML2_REQ_2}"; then _tmp=true; elif test "${_LIBXML2_VER_3}" "${_LIBXML2_COMPN}" "${_LIBXML2_REQ_3}"; then _tmp=true; elif test "x${_LIBXML2_VER_4}" = "x" && test "x${_LIBXML2_REQ_4}" != "x"; then _tmp=true; elif test "${_LIBXML2_VER_4}" "${_LIBXML2_COMPN}" "${_LIBXML2_REQ_4}"; then _tmp=true; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libxml-2.0 version is matching requirement >= 2.0" >&5 $as_echo_n "checking if libxml-2.0 version is matching requirement >= 2.0... " >&6; } if "${_tmp}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Version requirement libxml-2.0 >= 2.0 not met. Found: ${_LIBXML2_VERSION}" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0 parameters from xml2-config" >&5 $as_echo_n "checking for libxml-2.0 parameters from xml2-config... " >&6; } LIBXML2_LIBS="$(${LIBXML2_CONFIG_PROG} --libs || echo "*error*")" LIBXML2_CFLAGS="$(${LIBXML2_CONFIG_PROG} --cflags || echo "*error*")" if test "x${LIBXML2_LIBS}" = "*error*" || test "x${LIBXML2_CFLAGS}" = "*error*"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: error" >&5 $as_echo "error" >&6; } else have_LIBXML2=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi fi fi # Version requirement given, so we do not rely on probing. elif test "x${try_LIBXML2}" = "xno"; then : else # We've been given a prefix to look in for library libxml-2.0. # We start looking for libxml-2.0.la files first. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libxml-2.0.la file in ${try_LIBXML2}" >&5 $as_echo_n "checking for libxml-2.0.la file in ${try_LIBXML2}... " >&6; } if test -f "${try_LIBXML2}/lib/libxml-2.0.la"; then LIBXML2_LIBS="${try_LIBXML2}/lib/libxml-2.0.la" LIBXML2_CFLAGS="-I${try_LIBXML2}/include" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libtool file $LIBXML2_LIBS (good)" >&5 $as_echo "libtool file $LIBXML2_LIBS (good)" >&6; } have_LIBXML2=yes elif test -f "${try_LIBXML2}/lib64/libxml-2.0.la"; then # HACK LIBXML2_LIBS="${try_LIBXML2}/lib64/libxml-2.0.la" LIBXML2_CFLAGS="-I${try_LIBXML2}/include" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libtool file $LIBXML2_LIBS (good)" >&5 $as_echo "libtool file $LIBXML2_LIBS (good)" >&6; } have_LIBXML2=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: wild guess that something is in $try_LIBXML2" >&5 $as_echo "wild guess that something is in $try_LIBXML2" >&6; } LIBXML2_LIBS="-L${try_LIBXML2}/lib -l$(echo "libxml-2.0" | sed 's/^lib//')" LIBXML2_CFLAGS="-I${try_LIBXML2}/include" have_LIBXML2=yes { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * Warning: * libtool file libxml-2.0.la could not be found. * We may be linking against the WRONG library. " >&5 $as_echo "$as_me: WARNING: * Warning: * libtool file libxml-2.0.la could not be found. * We may be linking against the WRONG library. " >&2;} fi fi elif test "x${LIBXML2_LIBS}" != "x" && test "x${LIBXML2_CFLAGS}" != "x"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: user-defined" >&5 $as_echo "user-defined" >&6; } userdef_LIBXML2=yes have_LIBXML2=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: broken call" >&5 $as_echo "broken call" >&6; } as_fn_error $? " * Fatal: * When calling configure for ${PACKAGE_TARNAME} * ${PACKAGE_NAME} * either set both LIBXML2_LIBS *and* LIBXML2_CFLAGS * or neither. " "$LINENO" 5 fi if test "x${have_LIBXML2}" = "xyes"; then CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="${LIBXML2_CFLAGS}" ac_fn_c_check_header_mongrel "$LINENO" "libxml/parser.h" "ac_cv_header_libxml_parser_h" "$ac_includes_default" if test "x$ac_cv_header_libxml_parser_h" = xyes; then : have_LIBXML2=yes else have_LIBXML2=no fi CPPFLAGS="$CPPFLAGS_save" fi if test "x${userdef_LIBXML2}" = "xno" && test "x${have_LIBXML2}" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for function xmlFirstElementChild in libxml-2.0" >&5 $as_echo_n "checking for function xmlFirstElementChild in libxml-2.0... " >&6; } LIBS_save="$LIBS" LIBS="${LIBXML2_LIBS}" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 xmlFirstElementChild (); int main () { return xmlFirstElementChild (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else have_LIBXML2=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$LIBS_save" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${have_LIBXML2}" >&5 $as_echo "${have_LIBXML2}" >&6; } fi if test "x$have_LIBXML2" = "xyes"; then HAVE_LIBXML2_TRUE= HAVE_LIBXML2_FALSE='#' else HAVE_LIBXML2_TRUE='#' HAVE_LIBXML2_FALSE= fi if test "x$have_LIBXML2" = "xyes"; then $as_echo "#define HAVE_LIBXML2 1" >>confdefs.h gp_config_msg_len="$(expr "libxml-2.0" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libxml-2.0" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libxml-2.0:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} yes " { $as_echo "$as_me:${as_lineno-$LINENO}: checking libxml-2.0 library flags" >&5 $as_echo_n "checking libxml-2.0 library flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${LIBXML2_LIBS}\"" >&5 $as_echo "\"${LIBXML2_LIBS}\"" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking libxml-2.0 cpp flags" >&5 $as_echo_n "checking libxml-2.0 cpp flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${LIBXML2_CFLAGS}\"" >&5 $as_echo "\"${LIBXML2_CFLAGS}\"" >&6; } else REQUIREMENTS_FOR_LIBXML2= gp_config_msg_len="$(expr "libxml-2.0" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libxml-2.0" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libxml-2.0:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} no " fi gp_config_msg_len="$(expr "XML support for Olympus E series" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "XML support for Olympus E series" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "XML support for Olympus E series:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${have_LIBXML2} " # ---------------------------------------------------------------------- # [GP_CHECK_LIBRARY]([LIBGD],[gdlib],[>= 2.0], # [gd.h],[gdImageCreateTrueColor], # [...],[...],[default-on]) # http://www.libgd.org/ # ---------------------------------------------------------------------- # Use _CFLAGS and _LIBS given to configure. # This makes it possible to set these vars in a configure script # and AC_CONFIG_SUBDIRS this configure. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdlib to use" >&5 $as_echo_n "checking for gdlib to use... " >&6; } REQUIREMENTS_FOR_LIBGD="gdlib >= 2.0" userdef_LIBGD=no have_LIBGD=no if test "x${LIBGD_LIBS}" = "x" && test "x${LIBGD_CFLAGS}" = "x"; then # define --with/--without argument try_LIBGD=auto # Check whether --with-gdlib was given. if test "${with_gdlib+set}" = set; then : withval=$with_gdlib; try_LIBGD="$withval" fi if test "x${try_LIBGD}" = "xno"; then REQUIREMENTS_FOR_LIBGD= fi if test "x${try_LIBGD}" = "xauto"; then try_LIBGD=autodetect; fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${try_LIBGD}" >&5 $as_echo "${try_LIBGD}" >&6; } if test "x${try_LIBGD}" = "xautodetect"; then # OK, we have to autodetect. # We start autodetection with the cleanest known method: pkg-config if test "x${have_LIBGD}" = "xno"; then # we need that line break after the PKG_CHECK_MODULES pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBGD" >&5 $as_echo_n "checking for LIBGD... " >&6; } if test -n "$LIBGD_CFLAGS"; then pkg_cv_LIBGD_CFLAGS="$LIBGD_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdlib >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gdlib >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBGD_CFLAGS=`$PKG_CONFIG --cflags "gdlib >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBGD_LIBS"; then pkg_cv_LIBGD_LIBS="$LIBGD_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdlib >= 2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gdlib >= 2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBGD_LIBS=`$PKG_CONFIG --libs "gdlib >= 2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBGD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gdlib >= 2.0" 2>&1` else LIBGD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gdlib >= 2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBGD_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else LIBGD_CFLAGS=$pkg_cv_LIBGD_CFLAGS LIBGD_LIBS=$pkg_cv_LIBGD_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_LIBGD=yes fi fi # If pkg-config didn't find anything, try the libfoo-config program # certain known libraries ship with. if test "x${have_LIBGD}" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking gdlib config program" >&5 $as_echo_n "checking gdlib config program... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: gdlib-config" >&5 $as_echo "gdlib-config" >&6; } # Extract the first word of "gp_lib_config", so it can be a program name with args. set dummy gdlib-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_LIBGD_CONFIG_PROG+:} false; then : $as_echo_n "(cached) " >&6 else case $LIBGD_CONFIG_PROG in [\\/]* | ?:[\\/]*) ac_cv_path_LIBGD_CONFIG_PROG="$LIBGD_CONFIG_PROG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_LIBGD_CONFIG_PROG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi LIBGD_CONFIG_PROG=$ac_cv_path_LIBGD_CONFIG_PROG if test -n "$LIBGD_CONFIG_PROG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBGD_CONFIG_PROG" >&5 $as_echo "$LIBGD_CONFIG_PROG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "${LIBGD_CONFIG_PROG}" && test "${LIBGD_CONFIG_PROG}" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdlib version according to gdlib-config" >&5 $as_echo_n "checking for gdlib version according to gdlib-config... " >&6; } _LIBGD_COMPN="-lt" # split requested version number using m4 regexps _LIBGD_REQ_1="2" _LIBGD_REQ_2="0" _LIBGD_REQ_3="" _LIBGD_REQ_4="" # split installed version number via shell and sed _LIBGD_VERSION="$("${LIBGD_CONFIG_PROG}" --version | sed 's/^.* //')" _LIBGD_VER_1="$(echo "${_LIBGD_VERSION}" | sed 's/\([0-9]*\).*/\1/g')" _LIBGD_VER_2="$(echo "${_LIBGD_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\).*/\2/g')" _LIBGD_VER_3="$(echo "${_LIBGD_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/g')" _LIBGD_VER_4="$(echo "${_LIBGD_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(.*\)/\4/g')" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_LIBGD_VERSION}" >&5 $as_echo "${_LIBGD_VERSION}" >&6; } _tmp=false if test "${_LIBGD_VER_1}" "${_LIBGD_COMPN}" "${_LIBGD_REQ_1}"; then _tmp=true; elif test "${_LIBGD_VER_2}" "${_LIBGD_COMPN}" "${_LIBGD_REQ_2}"; then _tmp=true; elif test "${_LIBGD_VER_3}" "${_LIBGD_COMPN}" "${_LIBGD_REQ_3}"; then _tmp=true; elif test "x${_LIBGD_VER_4}" = "x" && test "x${_LIBGD_REQ_4}" != "x"; then _tmp=true; elif test "${_LIBGD_VER_4}" "${_LIBGD_COMPN}" "${_LIBGD_REQ_4}"; then _tmp=true; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gdlib version is matching requirement >= 2.0" >&5 $as_echo_n "checking if gdlib version is matching requirement >= 2.0... " >&6; } if "${_tmp}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Version requirement gdlib >= 2.0 not met. Found: ${_LIBGD_VERSION}" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdlib parameters from gdlib-config" >&5 $as_echo_n "checking for gdlib parameters from gdlib-config... " >&6; } LIBGD_LIBS="$(${LIBGD_CONFIG_PROG} --libs || echo "*error*")" LIBGD_CFLAGS="$(${LIBGD_CONFIG_PROG} --cflags || echo "*error*")" if test "x${LIBGD_LIBS}" = "*error*" || test "x${LIBGD_CFLAGS}" = "*error*"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: error" >&5 $as_echo "error" >&6; } else have_LIBGD=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi fi fi # Version requirement given, so we do not rely on probing. elif test "x${try_LIBGD}" = "xno"; then : else # We've been given a prefix to look in for library gdlib. # We start looking for gdlib.la files first. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gdlib.la file in ${try_LIBGD}" >&5 $as_echo_n "checking for gdlib.la file in ${try_LIBGD}... " >&6; } if test -f "${try_LIBGD}/lib/gdlib.la"; then LIBGD_LIBS="${try_LIBGD}/lib/gdlib.la" LIBGD_CFLAGS="-I${try_LIBGD}/include" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libtool file $LIBGD_LIBS (good)" >&5 $as_echo "libtool file $LIBGD_LIBS (good)" >&6; } have_LIBGD=yes elif test -f "${try_LIBGD}/lib64/gdlib.la"; then # HACK LIBGD_LIBS="${try_LIBGD}/lib64/gdlib.la" LIBGD_CFLAGS="-I${try_LIBGD}/include" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libtool file $LIBGD_LIBS (good)" >&5 $as_echo "libtool file $LIBGD_LIBS (good)" >&6; } have_LIBGD=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: wild guess that something is in $try_LIBGD" >&5 $as_echo "wild guess that something is in $try_LIBGD" >&6; } LIBGD_LIBS="-L${try_LIBGD}/lib -l$(echo "gdlib" | sed 's/^lib//')" LIBGD_CFLAGS="-I${try_LIBGD}/include" have_LIBGD=yes { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * Warning: * libtool file gdlib.la could not be found. * We may be linking against the WRONG library. " >&5 $as_echo "$as_me: WARNING: * Warning: * libtool file gdlib.la could not be found. * We may be linking against the WRONG library. " >&2;} fi fi elif test "x${LIBGD_LIBS}" != "x" && test "x${LIBGD_CFLAGS}" != "x"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: user-defined" >&5 $as_echo "user-defined" >&6; } userdef_LIBGD=yes have_LIBGD=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: broken call" >&5 $as_echo "broken call" >&6; } as_fn_error $? " * Fatal: * When calling configure for ${PACKAGE_TARNAME} * ${PACKAGE_NAME} * either set both LIBGD_LIBS *and* LIBGD_CFLAGS * or neither. " "$LINENO" 5 fi if test "x${have_LIBGD}" = "xyes"; then # ACTION-IF-FOUND # gdlib-config --libs upstream does not include -lgd, but only the dependencies LIBGD_LIBS="-lgd $LIBGD_LIBS" fi if test "x${have_LIBGD}" = "xyes"; then CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="${LIBGD_CFLAGS}" ac_fn_c_check_header_mongrel "$LINENO" "gd.h" "ac_cv_header_gd_h" "$ac_includes_default" if test "x$ac_cv_header_gd_h" = xyes; then : have_LIBGD=yes else have_LIBGD=no fi CPPFLAGS="$CPPFLAGS_save" fi if test "x${userdef_LIBGD}" = "xno" && test "x${have_LIBGD}" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for function gdImageCreateTrueColor in gdlib" >&5 $as_echo_n "checking for function gdImageCreateTrueColor in gdlib... " >&6; } LIBS_save="$LIBS" LIBS="${LIBGD_LIBS}" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 gdImageCreateTrueColor (); int main () { return gdImageCreateTrueColor (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else have_LIBGD=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$LIBS_save" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${have_LIBGD}" >&5 $as_echo "${have_LIBGD}" >&6; } fi if test "x$have_LIBGD" = "xyes"; then HAVE_LIBGD_TRUE= HAVE_LIBGD_FALSE='#' else HAVE_LIBGD_TRUE='#' HAVE_LIBGD_FALSE= fi if test "x$have_LIBGD" = "xyes"; then $as_echo "#define HAVE_LIBGD 1" >>confdefs.h gp_config_msg_len="$(expr "gdlib" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "gdlib" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "gdlib:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} yes " { $as_echo "$as_me:${as_lineno-$LINENO}: checking gdlib library flags" >&5 $as_echo_n "checking gdlib library flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${LIBGD_LIBS}\"" >&5 $as_echo "\"${LIBGD_LIBS}\"" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking gdlib cpp flags" >&5 $as_echo_n "checking gdlib cpp flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${LIBGD_CFLAGS}\"" >&5 $as_echo "\"${LIBGD_CFLAGS}\"" >&6; } else REQUIREMENTS_FOR_LIBGD= gp_config_msg_len="$(expr "gdlib" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "gdlib" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "gdlib:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} no " fi gp_config_msg_len="$(expr "libGD conversion support" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libGD conversion support" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libGD conversion support:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${have_LIBGD} " ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } if eval \${$as_ac_Header+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_ac_Header=yes" else eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_ac_Header { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi # before _HEADER_STDC { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # after _HEADER_STDC for ac_header in sys/param.h sys/mman.h sys/select.h locale.h memory.h getopt.h unistd.h mcheck.h limits.h sys/time.h langinfo.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* 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 sort of thing. */ char tx; char *t = &tx; 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 sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; 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 if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi for ac_func in getopt getopt_long mkdir strdup strncpy strcpy snprintf sprintf vsnprintf gmtime_r statfs localtime_r lstat inet_aton rand_r do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tm_gmtoff in struct tm" >&5 $as_echo_n "checking for tm_gmtoff in struct tm... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_cv_struct_tm> int main () { struct tm tm; tm.tm_gmtoff; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define HAVE_TM_GMTOFF 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext for ac_header in sys/mount.h sys/statfs.h sys/user.h sys/vfs.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " #include #if HAVE_SYS_PARAM_H # include #endif " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_member "$LINENO" "struct statfs" "f_bfree" "ac_cv_member_struct_statfs_f_bfree" " #include #ifdef HAVE_SYS_PARAM_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef HAVE_SYS_STATFS_H # include #endif " if test "x$ac_cv_member_struct_statfs_f_bfree" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STATFS_F_BFREE 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct statfs" "f_bavail" "ac_cv_member_struct_statfs_f_bavail" " #include #ifdef HAVE_SYS_PARAM_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef HAVE_SYS_STATFS_H # include #endif " if test "x$ac_cv_member_struct_statfs_f_bavail" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STATFS_F_BAVAIL 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct statfs" "f_favail" "ac_cv_member_struct_statfs_f_favail" " #include #ifdef HAVE_SYS_PARAM_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef HAVE_SYS_STATFS_H # include #endif " if test "x$ac_cv_member_struct_statfs_f_favail" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STATFS_F_FAVAIL 1 _ACEOF fi ac_fn_c_check_member "$LINENO" "struct statvfs" "f_blocks" "ac_cv_member_struct_statvfs_f_blocks" " #ifdef HAVE_SYS_STATVFS_H # include #endif " if test "x$ac_cv_member_struct_statvfs_f_blocks" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STATVFS_F_BLOCKS 1 _ACEOF fi ac_dir=`$as_dirname -- "libgphoto2/_stdint.h" || $as_expr X"libgphoto2/_stdint.h" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"libgphoto2/_stdint.h" : 'X\(//\)[^/]' \| \ X"libgphoto2/_stdint.h" : 'X\(//\)$' \| \ X"libgphoto2/_stdint.h" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"libgphoto2/_stdint.h" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` if test "$ac_dir" != "libgphoto2/_stdint.h" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && as_dir="$ac_dir"; as_fn_mkdir_p fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint8_t in stdint.h" >&5 $as_echo_n "checking for uint8_t in stdint.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^|[^a-zA-Z_0-9])uint8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then : ac_cv_type_uint8_t=yes else ac_cv_type_uint8_t=no fi rm -f conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uint8_t" >&5 $as_echo "$ac_cv_type_uint8_t" >&6; } if test $ac_cv_type_uint8_t = yes; then cat > "libgphoto2/_stdint.h" < EOF else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint8_t in inttypes.h" >&5 $as_echo_n "checking for uint8_t in inttypes.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^|[^a-zA-Z_0-9])uint8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then : ac_cv_type_uint8_t=yes else ac_cv_type_uint8_t=no fi rm -f conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uint8_t" >&5 $as_echo "$ac_cv_type_uint8_t" >&6; } if test $ac_cv_type_uint8_t = yes; then cat > "libgphoto2/_stdint.h" < EOF else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint8_t in sys/types.h" >&5 $as_echo_n "checking for uint8_t in sys/types.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^|[^a-zA-Z_0-9])uint8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then : ac_cv_type_uint8_t=yes else ac_cv_type_uint8_t=no fi rm -f conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uint8_t" >&5 $as_echo "$ac_cv_type_uint8_t" >&6; } if test $ac_cv_type_uint8_t = yes; then cat > "libgphoto2/_stdint.h" < EOF else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_int8_t in sys/types.h" >&5 $as_echo_n "checking for u_int8_t in sys/types.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^|[^a-zA-Z_0-9])u_int8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then : ac_cv_type_u_int8_t=yes else ac_cv_type_u_int8_t=no fi rm -f conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_u_int8_t" >&5 $as_echo "$ac_cv_type_u_int8_t" >&6; } if test $ac_cv_type_u_int8_t = yes; then cat > "libgphoto2/_stdint.h" < typedef u_int8_t uint8_t; typedef u_int16_t uint16_t; typedef u_int32_t uint32_t; EOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for u_int64_t in sys/types.h" >&5 $as_echo_n "checking for u_int64_t in sys/types.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "(^|[^a-zA-Z_0-9])u_int64_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then : ac_cv_type_u_int64_t=yes else ac_cv_type_u_int64_t=no fi rm -f conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_u_int64_t" >&5 $as_echo "$ac_cv_type_u_int64_t" >&6; } if test $ac_cv_type_u_int64_t = yes; then cat >> "libgphoto2/_stdint.h" <> "libgphoto2/_stdint.h" <&5 $as_echo "$as_me: WARNING: I can't find size-specific integer definitions on this system" >&2;} if test -e "libgphoto2/_stdint.h" ; then rm -f "libgphoto2/_stdint.h" fi fi fi fi fi ac_dir=`$as_dirname -- "libgphoto2/gphoto2-endian.h" || $as_expr X"libgphoto2/gphoto2-endian.h" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"libgphoto2/gphoto2-endian.h" : 'X\(//\)[^/]' \| \ X"libgphoto2/gphoto2-endian.h" : 'X\(//\)$' \| \ X"libgphoto2/gphoto2-endian.h" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"libgphoto2/gphoto2-endian.h" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` if test "$ac_dir" != "libgphoto2/gphoto2-endian.h" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && as_dir="$ac_dir"; as_fn_mkdir_p fi # We're only interested in the target CPU, but it's not always set effective_target="$target" if test "x$effective_target" = xNONE -o "x$effective_target" = x ; then effective_target="$host" fi cat > "libgphoto2/gphoto2-endian.h" << EOF /* This file is generated automatically by configure */ /* It is valid only for the system type ${effective_target} */ #ifndef __BYTEORDER_H #define __BYTEORDER_H EOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no 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 if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no 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 if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; 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 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for le32toh in machine/endian.h" >&5 $as_echo_n "checking for le32toh in machine/endian.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef le32toh symbol is present #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "symbol is present|\" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } HAVE_LE32TOH=1 cat >> "libgphoto2/gphoto2-endian.h" << EOF /* extended byte swapping macros are already available */ #include EOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ntohl in arpa/inet.h" >&5 $as_echo_n "checking for ntohl in arpa/inet.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef ntohl symbol is present #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "symbol is present|\" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >> "libgphoto2/gphoto2-endian.h" << EOF /* ntohl and relatives live here */ #include #define __HAVE_NTOHL EOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ntohl in netinet/in.h" >&5 $as_echo_n "checking for ntohl in netinet/in.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef ntohl symbol is present #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "symbol is present|\" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >> "libgphoto2/gphoto2-endian.h" << EOF /* ntohl and relatives live here */ #include #define __HAVE_NTOHL EOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } true fi rm -f conftest* fi rm -f conftest* fi rm -f conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: checking for swap32 in machine/endian.h" >&5 $as_echo_n "checking for swap32 in machine/endian.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef swap32 symbol is present #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "symbol is present|\" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >> "libgphoto2/gphoto2-endian.h" << EOF /* swap32 and swap16 are defined in machine/endian.h */ EOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bswap_32 in byteswap.h" >&5 $as_echo_n "checking for bswap_32 in byteswap.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef bswap_32 symbol is present #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "symbol is present|\" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >> "libgphoto2/gphoto2-endian.h" << EOF /* Define generic byte swapping functions */ #include #define swap16(x) bswap_16(x) #define swap32(x) bswap_32(x) #define swap64(x) bswap_64(x) EOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bswap32 in machine/endian.h" >&5 $as_echo_n "checking for bswap32 in machine/endian.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef bswap32 symbol is present #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "symbol is present|\" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >> "libgphoto2/gphoto2-endian.h" << EOF /* Define generic byte swapping functions */ EOF if test "$HAVE_LE32TOH" != "1"; then echo '#include '>> "libgphoto2/gphoto2-endian.h" fi cat >> "libgphoto2/gphoto2-endian.h" << EOF #define swap16(x) bswap16(x) #define swap32(x) bswap32(x) #define swap64(x) bswap64(x) EOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __byte_swap_long in sys/types.h" >&5 $as_echo_n "checking for __byte_swap_long in sys/types.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef __byte_swap_long symbol is present #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "symbol is present|\<__byte_swap_long\>" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >> "libgphoto2/gphoto2-endian.h" << EOF /* Define generic byte swapping functions */ #include #define swap16(x) __byte_swap_word(x) #define swap32(x) __byte_swap_long(x) /* No optimized 64 bit byte swapping macro is available */ #define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\ ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\ ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\ ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\ ((x) >> 8) & 0x00000000ff000000ULL | \\ ((x) >> 24) & 0x0000000000ff0000ULL | \\ ((x) >> 40) & 0x000000000000ff00ULL | \\ ((x) >> 56) & 0x00000000000000ffULL)) EOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NXSwapLong in machine/byte_order.h" >&5 $as_echo_n "checking for NXSwapLong in machine/byte_order.h... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef NXSwapLong symbol is present #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "symbol is present|\" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >> "libgphoto2/gphoto2-endian.h" << EOF /* Define generic byte swapping functions */ #include #define swap16(x) NXSwapShort(x) #define swap32(x) NXSwapLong(x) #define swap64(x) NXSwapLongLong(x) EOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test $ac_cv_c_bigendian = yes; then cat >> "libgphoto2/gphoto2-endian.h" << EOF /* No other byte swapping functions are available on this big-endian system */ #define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8))) #define swap32(x) ((uint32_t)(((uint32_t)(x) << 24) & 0xff000000UL | \\ ((uint32_t)(x) << 8) & 0x00ff0000UL | \\ ((x) >> 8) & 0x0000ff00UL | \\ ((x) >> 24) & 0x000000ffUL)) #define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\ ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\ ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\ ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\ ((x) >> 8) & 0x00000000ff000000ULL | \\ ((x) >> 24) & 0x0000000000ff0000ULL | \\ ((x) >> 40) & 0x000000000000ff00ULL | \\ ((x) >> 56) & 0x00000000000000ffULL)) EOF else cat >> "libgphoto2/gphoto2-endian.h" << EOF /* Use these as generic byteswapping macros on this little endian system */ /* on windows we might not have ntohs / ntohl without including winsock.dll, * so use generic macros */ #ifdef __HAVE_NTOHL # define swap16(x) htons(x) # define swap32(x) htonl(x) #else # define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8))) # define swap32(x) ((uint32_t)((((uint32_t)(x) << 24) & 0xff000000UL) | \\ (((uint32_t)(x) << 8) & 0x00ff0000UL) | \\ (((x) >> 8) & 0x0000ff00UL) | \\ (((x) >> 24) & 0x000000ffUL))) #endif /* No optimized 64 bit byte swapping macro is available */ #define swap64(x) ((uint64_t)((((uint64_t)(x) << 56) & 0xff00000000000000ULL) | \\ (((uint64_t)(x) << 40) & 0x00ff000000000000ULL) | \\ (((uint64_t)(x) << 24) & 0x0000ff0000000000ULL) | \\ (((uint64_t)(x) << 8) & 0x000000ff00000000ULL) | \\ (((x) >> 8) & 0x00000000ff000000ULL) | \\ (((x) >> 24) & 0x0000000000ff0000ULL) | \\ (((x) >> 40) & 0x000000000000ff00ULL) | \\ (((x) >> 56) & 0x00000000000000ffULL))) EOF fi fi rm -f conftest* fi rm -f conftest* fi rm -f conftest* fi rm -f conftest* fi rm -f conftest* if test "$HAVE_LE32TOH" != "1"; then cat >> "libgphoto2/gphoto2-endian.h" << EOF /* The byte swapping macros have the form: */ /* EENN[a]toh or htoEENN[a] where EE is be (big endian) or */ /* le (little-endian), NN is 16 or 32 (number of bits) and a, */ /* if present, indicates that the endian side is a pointer to an */ /* array of uint8_t bytes instead of an integer of the specified length. */ /* h refers to the host's ordering method. */ /* So, to convert a 32-bit integer stored in a buffer in little-endian */ /* format into a uint32_t usable on this machine, you could use: */ /* uint32_t value = le32atoh(&buf[3]); */ /* To put that value back into the buffer, you could use: */ /* htole32a(&buf[3], value); */ /* Define aliases for the standard byte swapping macros */ /* Arguments to these macros must be properly aligned on natural word */ /* boundaries in order to work properly on all architectures */ #ifndef htobe16 # ifdef __HAVE_NTOHL # define htobe16(x) htons(x) # else # ifdef WORDS_BIGENDIAN # define htobe16(x) (x) # else # define htobe16(x) swap16(x) # endif # endif #endif #ifndef htobe32 # ifdef __HAVE_NTOHL # define htobe32(x) htonl(x) # else # ifdef WORDS_BIGENDIAN # define htobe32(x) (x) # else # define htobe32(x) swap32(x) # endif # endif #endif #ifndef be16toh # define be16toh(x) htobe16(x) #endif #ifndef be32toh # define be32toh(x) htobe32(x) #endif #define HTOBE16(x) (x) = htobe16(x) #define HTOBE32(x) (x) = htobe32(x) #define BE32TOH(x) (x) = be32toh(x) #define BE16TOH(x) (x) = be16toh(x) EOF if test $ac_cv_c_bigendian = yes; then cat >> "libgphoto2/gphoto2-endian.h" << EOF /* Define our own extended byte swapping macros for big-endian machines */ #ifndef htole16 # define htole16(x) swap16(x) #endif #ifndef htole32 # define htole32(x) swap32(x) #endif #ifndef le16toh # define le16toh(x) swap16(x) #endif #ifndef le32toh # define le32toh(x) swap32(x) #endif #ifndef le64toh # define le64toh(x) swap64(x) #endif #ifndef htobe64 # define htobe64(x) (x) #endif #ifndef be64toh # define be64toh(x) (x) #endif #define HTOLE16(x) (x) = htole16(x) #define HTOLE32(x) (x) = htole32(x) #define LE16TOH(x) (x) = le16toh(x) #define LE32TOH(x) (x) = le32toh(x) #define LE64TOH(x) (x) = le64toh(x) #define HTOBE64(x) (void) (x) #define BE64TOH(x) (void) (x) EOF else cat >> "libgphoto2/gphoto2-endian.h" << EOF /* On little endian machines, these macros are null */ #ifndef htole16 # define htole16(x) (x) #endif #ifndef htole32 # define htole32(x) (x) #endif #ifndef htole64 # define htole64(x) (x) #endif #ifndef le16toh # define le16toh(x) (x) #endif #ifndef le32toh # define le32toh(x) (x) #endif #ifndef le64toh # define le64toh(x) (x) #endif #define HTOLE16(x) (void) (x) #define HTOLE32(x) (void) (x) #define HTOLE64(x) (void) (x) #define LE16TOH(x) (void) (x) #define LE32TOH(x) (void) (x) #define LE64TOH(x) (void) (x) /* These don't have standard aliases */ #ifndef htobe64 # define htobe64(x) swap64(x) #endif #ifndef be64toh # define be64toh(x) swap64(x) #endif #define HTOBE64(x) (x) = htobe64(x) #define BE64TOH(x) (x) = be64toh(x) EOF fi fi cat >> "libgphoto2/gphoto2-endian.h" << EOF /* Define the C99 standard length-specific integer types */ #include <_stdint.h> EOF case "${effective_target}" in i[3456]86-*) cat >> "libgphoto2/gphoto2-endian.h" << EOF /* Here are some macros to create integers from a byte array */ /* These are used to get and put integers from/into a uint8_t array */ /* with a specific endianness. This is the most portable way to generate */ /* and read messages to a network or serial device. Each member of a */ /* packet structure must be handled separately. */ /* The i386 and compatibles can handle unaligned memory access, */ /* so use the optimized macros above to do this job */ #ifndef be16atoh # define be16atoh(x) be16toh(*(uint16_t*)(x)) #endif #ifndef be32atoh # define be32atoh(x) be32toh(*(uint32_t*)(x)) #endif #ifndef be64atoh # define be64atoh(x) be64toh(*(uint64_t*)(x)) #endif #ifndef le16atoh # define le16atoh(x) le16toh(*(uint16_t*)(x)) #endif #ifndef le32atoh # define le32atoh(x) le32toh(*(uint32_t*)(x)) #endif #ifndef le64atoh # define le64atoh(x) le64toh(*(uint64_t*)(x)) #endif #ifndef htob16a # define htobe16a(a,x) *(uint16_t*)(a) = htobe16(x) #endif #ifndef htobe32a # define htobe32a(a,x) *(uint32_t*)(a) = htobe32(x) #endif #ifndef htobe64a # define htobe64a(a,x) *(uint64_t*)(a) = htobe64(x) #endif #ifndef htole16a # define htole16a(a,x) *(uint16_t*)(a) = htole16(x) #endif #ifndef htole32a # define htole32a(a,x) *(uint32_t*)(a) = htole32(x) #endif #ifndef htole64a # define htole64a(a,x) *(uint64_t*)(a) = htole64(x) #endif EOF ;; *) cat >> "libgphoto2/gphoto2-endian.h" << EOF /* Here are some macros to create integers from a byte array */ /* These are used to get and put integers from/into a uint8_t array */ /* with a specific endianness. This is the most portable way to generate */ /* and read messages to a network or serial device. Each member of a */ /* packet structure must be handled separately. */ /* Non-optimized but portable macros */ #define be16atoh(x) ((uint16_t)(((x)[0]<<8)|(x)[1])) #define be32atoh(x) ((uint32_t)(((x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3])) #define be64atoh_x(x,off,shift) (((uint64_t)((x)[off]))<>8), (a)[1]=(uint8_t)(x) #define htobe32a(a,x) (a)[0]=(uint8_t)((x)>>24), (a)[1]=(uint8_t)((x)>>16), \\ (a)[2]=(uint8_t)((x)>>8), (a)[3]=(uint8_t)(x) #define htobe64a(a,x) (a)[0]=(uint8_t)((x)>>56), (a)[1]=(uint8_t)((x)>>48), \\ (a)[2]=(uint8_t)((x)>>40), (a)[3]=(uint8_t)((x)>>32), \\ (a)[4]=(uint8_t)((x)>>24), (a)[5]=(uint8_t)((x)>>16), \\ (a)[6]=(uint8_t)((x)>>8), (a)[7]=(uint8_t)(x) #define htole16a(a,x) (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) #define htole32a(a,x) (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\ (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) #define htole64a(a,x) (a)[7]=(uint8_t)((x)>>56), (a)[6]=(uint8_t)((x)>>48), \\ (a)[5]=(uint8_t)((x)>>40), (a)[4]=(uint8_t)((x)>>32), \\ (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\ (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) EOF ;; esac cat >> "libgphoto2/gphoto2-endian.h" << EOF #endif /*__BYTEORDER_H*/ EOF if test "x${utilsdir}" = "x"; then utilsdir="\${libdir}/\${PACKAGE_TARNAME}"; fi if test "x${udevscriptdir}" = "x"; then udevscriptdir="\${libdir}/udev"; fi if if echo "$host"|grep -i linux >/dev/null ; then true; fi ; then HAVE_UDEV_TRUE= HAVE_UDEV_FALSE='#' else HAVE_UDEV_TRUE='#' HAVE_UDEV_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to install camlibs" >&5 $as_echo_n "checking where to install camlibs... " >&6; } # Check whether --with-camlibdir was given. if test "${with_camlibdir+set}" = set; then : withval=$with_camlibdir; camlibdir="$withval" else camlibdir="\${libdir}/${PACKAGE_TARNAME}/${PACKAGE_VERSION}" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${camlibdir}" >&5 $as_echo "${camlibdir}" >&6; } AM_CPPFLAGS="$AM_CPPFLAGS -DCAMLIBS=\\\"\$(camlibdir)\\\"" # GP_CAMLIB(adc65) # GP_CAMLIB(agfa_cl20) # GP_CAMLIB(aox) # GP_CAMLIB(ax203) # GP_CAMLIB(barbie) # GP_CAMLIB(canon) # GP_CAMLIB(casio_qv) # GP_CAMLIB(clicksmart310) # GP_CAMLIB(digigr8) # GP_CAMLIB(digita) # GP_CAMLIB(dimera3500) # GP_CAMLIB(directory) # GP_CAMLIB(enigma13) # GP_CAMLIB(fuji) # GP_CAMLIB(gsmart300) # GP_CAMLIB(hp215) # GP_CAMLIB(iclick) # GP_CAMLIB(jamcam) # GP_CAMLIB(jd11) # GP_CAMLIB(jl2005a) # GP_CAMLIB(jl2005c) # GP_CAMLIB(kodak_dc120) # GP_CAMLIB(kodak_dc210) # GP_CAMLIB(kodak_dc240) # GP_CAMLIB(kodak_dc3200) # GP_CAMLIB(kodak_ez200) # GP_CAMLIB(konica) # GP_CAMLIB(konica_qm150) # GP_CAMLIB(largan) # GP_CAMLIB(lg_gsm) # GP_CAMLIB(mars) # GP_CAMLIB(dimagev) # GP_CAMLIB(mustek) # GP_CAMLIB(panasonic_coolshot) # GP_CAMLIB(panasonic_l859) # GP_CAMLIB(panasonic_dc1000) # GP_CAMLIB(panasonic_dc1580) # GP_CAMLIB(pccam300) # GP_CAMLIB(pccam600) # GP_CAMLIB(pentax) # GP_CAMLIB(polaroid_pdc320) # GP_CAMLIB(polaroid_pdc640) # GP_CAMLIB(polaroid_pdc700) # GP_CAMLIB(ptp2) # GP_CAMLIB(ricoh) # GP_CAMLIB(ricoh_g3) # GP_CAMLIB(samsung) # GP_CAMLIB(sierra) # GP_CAMLIB(sipix_blink,unlisted) # GP_CAMLIB(sipix_blink2) # GP_CAMLIB(sipix_web2) # GP_CAMLIB(smal) # GP_CAMLIB(sonix) # GP_CAMLIB(sony_dscf1) # GP_CAMLIB(sony_dscf55) # GP_CAMLIB(soundvision) # GP_CAMLIB(spca50x) # GP_CAMLIB(sq905) # GP_CAMLIB(st2205) # GP_CAMLIB(stv0674) # GP_CAMLIB(stv0680) # GP_CAMLIB(sx330z) # GP_CAMLIB(template,unlisted) # GP_CAMLIB(topfield) # GP_CAMLIB(toshiba_pdrm11) # GP_CAMLIB(tp6801) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which camlibs to compile" >&5 $as_echo_n "checking which camlibs to compile... " >&6; } # Check whether --with-camlibs was given. if test "${with_camlibs+set}" = set; then : withval=$with_camlibs; camlibs="$withval" else camlibs="all" fi ALL_DEFINED_CAMLIBS="adc65 agfa_cl20 aox ax203 barbie canon casio_qv clicksmart310 digigr8 digita dimera3500 directory enigma13 fuji gsmart300 hp215 iclick jamcam jd11 jl2005a jl2005c kodak_dc120 kodak_dc210 kodak_dc240 kodak_dc3200 kodak_ez200 konica konica_qm150 largan lg_gsm mars dimagev mustek panasonic_coolshot panasonic_l859 panasonic_dc1000 panasonic_dc1580 pccam300 pccam600 pentax polaroid_pdc320 polaroid_pdc640 polaroid_pdc700 ptp2 ricoh ricoh_g3 samsung sierra sipix_blink2 sipix_web2 smal sonix sony_dscf1 sony_dscf55 soundvision spca50x sq905 st2205 stv0674 stv0680 sx330z topfield toshiba_pdrm11 tp6801 sipix_blink template" ALL_DEFAULT_CAMLIBS="adc65 agfa_cl20 aox ax203 barbie canon casio_qv clicksmart310 digigr8 digita dimera3500 directory enigma13 fuji gsmart300 hp215 iclick jamcam jd11 jl2005a jl2005c kodak_dc120 kodak_dc210 kodak_dc240 kodak_dc3200 kodak_ez200 konica konica_qm150 largan lg_gsm mars dimagev mustek panasonic_coolshot panasonic_l859 panasonic_dc1000 panasonic_dc1580 pccam300 pccam600 pentax polaroid_pdc320 polaroid_pdc640 polaroid_pdc700 ptp2 ricoh ricoh_g3 samsung sierra sipix_blink2 sipix_web2 smal sonix sony_dscf1 sony_dscf55 soundvision spca50x sq905 st2205 stv0674 stv0680 sx330z topfield toshiba_pdrm11 tp6801" BUILD_THESE_CAMLIBS_BASE="" if test "$camlibs" = "all"; then BUILD_THESE_CAMLIBS_BASE="$ALL_DEFAULT_CAMLIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: all" >&5 $as_echo "all" >&6; } else # If the string starts with "all,", we start with the default list # and add the explicitly defined ones later if echo "$camlibs" | grep "^all," > /dev/null; then BUILD_THESE_CAMLIBS_BASE="$ALL_DEFAULT_CAMLIBS" camlibs="$(echo "$camlibs" | sed 's/^all,//')" fi # camlibs=$(echo $camlibs | sed 's/,/ /g') IFS_save="$IFS" IFS=",$IFS" # Walk through enumeration of camlibs given by user and add them to list # of camlibs to build if we know them. for camlib in ${camlibs}; do IFS="$IFS_save" found=false for from_all_camlib in ${ALL_DEFINED_CAMLIBS}; do if test "$camlib" = "$from_all_camlib"; then if test "x$BUILD_THESE_CAMLIBS_BASE" = "x"; then BUILD_THESE_CAMLIBS_BASE="$camlib" else BUILD_THESE_CAMLIBS_BASE="$BUILD_THESE_CAMLIBS_BASE $camlib" fi found=: break fi done if $found; then :; else as_fn_error $? "Unknown camlib $camlib!" "$LINENO" 5 fi done if test "x$BUILD_THESE_CAMLIBS_BASE" = "xcanon" ; then # Gentoo mode... if user just said "canon", add "ptp2" ... should save support requests. BUILD_THESE_CAMLIBS_BASE="$BUILD_THESE_CAMLIBS_BASE ptp2" camlibs="$camlibs ptp2" { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"You have just selected the old canon driver. However most current Canons\n\" \"are supported by the PTP2 driver.\n\" \"Autoselecting ptp2 driver too to avoid support requests.\n\" " >&5 $as_echo "$as_me: WARNING: \"You have just selected the old canon driver. However most current Canons\n\" \"are supported by the PTP2 driver.\n\" \"Autoselecting ptp2 driver too to avoid support requests.\n\" " >&2;} fi IFS="$IFS_save" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $camlibs" >&5 $as_echo "$camlibs" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: # Caution: You have chosen to build a non-standard set of camlibs. # You may have disabled the camlib required for your camera, or # enabled a camlib that does *not* work, and overrides the camlib # that does work. Consequently, # YOUR CAMERA MAY NOT WORK! # # Many cameras of several brands are supported by a camlib with a # name different from the name of the camera brand or model. If you # are unsure, please # * enable at least the \"ptp2\" camlib # * or even better, just build \"all\" camlibs. " >&5 $as_echo "$as_me: WARNING: # Caution: You have chosen to build a non-standard set of camlibs. # You may have disabled the camlib required for your camera, or # enabled a camlib that does *not* work, and overrides the camlib # that does work. Consequently, # YOUR CAMERA MAY NOT WORK! # # Many cameras of several brands are supported by a camlib with a # name different from the name of the camera brand or model. If you # are unsure, please # * enable at least the \"ptp2\" camlib # * or even better, just build \"all\" camlibs. " >&2;} sleep 2 cat >>confdefs.h <<_ACEOF #define INCOMPLETE_CAMLIB_SET "$BUILD_THESE_CAMLIBS_BASE" _ACEOF fi BUILD_THESE_CAMLIBS="" for f in $BUILD_THESE_CAMLIBS_BASE do BUILD_THESE_CAMLIBS="${BUILD_THESE_CAMLIBS}${BUILD_THESE_CAMLIBS+ }${f}.la" done gp_config_msg_len="$(expr "Camlibs" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Camlibs" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Camlibs:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${camlibs} " # Check whether --with-doc-dir was given. if test "${with_doc_dir+set}" = set; then : withval=$with_doc_dir; fi # check for the main ("root") documentation directory { $as_echo "$as_me:${as_lineno-$LINENO}: checking main docdir" >&5 $as_echo_n "checking main docdir... " >&6; } if test "x${with_doc_dir}" != "x" then # docdir is given as parameter docdir="${with_doc_dir}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${docdir} (from parameter)" >&5 $as_echo "${docdir} (from parameter)" >&6; } else # otherwise invent a docdir hopefully compatible with system policy if test -d "/usr/share/doc" then maindocdir='${prefix}/share/doc' { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${maindocdir} (FHS style)" >&5 $as_echo "${maindocdir} (FHS style)" >&6; } elif test -d "/usr/doc" then maindocdir='${prefix}/doc' { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${maindocdir} (old style)" >&5 $as_echo "${maindocdir} (old style)" >&6; } else maindocdir='${datadir}/doc' { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${maindocdir} (default value)" >&5 $as_echo "${maindocdir} (default value)" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking package docdir" >&5 $as_echo_n "checking package docdir... " >&6; } # check whether to include package version into documentation path # FIXME: doesn't work properly. if ls -d /usr/{share/,}doc/make-0-9* > /dev/null 2>&1 then docdir="${maindocdir}/${PACKAGE}-${VERSION}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${docdir} (redhat style)" >&5 $as_echo "${docdir} (redhat style)" >&6; } else docdir="${maindocdir}/${PACKAGE}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${docdir} (default style)" >&5 $as_echo "${docdir} (default style)" >&6; } fi fi # Extract the first word of "dot", so it can be a program name with args. set dummy dot; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_DOT+:} false; then : $as_echo_n "(cached) " >&6 else case $DOT in [\\/]* | ?:[\\/]*) ac_cv_path_DOT="$DOT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_DOT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_DOT" && ac_cv_path_DOT="false" ;; esac fi DOT=$ac_cv_path_DOT if test -n "$DOT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5 $as_echo "$DOT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "doxygen", so it can be a program name with args. set dummy doxygen; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_DOXYGEN+:} false; then : $as_echo_n "(cached) " >&6 else case $DOXYGEN in [\\/]* | ?:[\\/]*) ac_cv_path_DOXYGEN="$DOXYGEN" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_DOXYGEN="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_DOXYGEN" && ac_cv_path_DOXYGEN="false" ;; esac fi DOXYGEN=$ac_cv_path_DOXYGEN if test -n "$DOXYGEN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5 $as_echo "$DOXYGEN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$DOXYGEN" != "xfalse"; then HAVE_DOXYGEN_TRUE= HAVE_DOXYGEN_FALSE='#' else HAVE_DOXYGEN_TRUE='#' HAVE_DOXYGEN_FALSE= fi if test "x$DOT" != "xfalse"; then HAVE_DOT_TRUE= HAVE_DOT_FALSE='#' else HAVE_DOT_TRUE='#' HAVE_DOT_FALSE= fi if test "x$DOT" != "xfalse"; then HAVE_DOT=YES else HAVE_DOT=NO fi HTML_APIDOC_DIR="${PACKAGE_TARNAME}-api.html" DOXYGEN_OUTPUT_DIR=doxygen-output HTML_APIDOC_INTERNALS_DIR="${PACKAGE_TARNAME}-internals.html" # Whether to enable the internal docs build. # # This takes quite some time due to the generation of lots of call # graphs, so it is disabled by default. set_enable_internal_docs=no # Check whether --enable-internal-docs was given. if test "${enable_internal_docs+set}" = set; then : enableval=$enable_internal_docs; if test "x$enableval" = xno \ || test "x$enableval" = xoff \ || test "x$enableval" = xfalse; then set_enable_internal_docs=no elif test "x$enableval" = xyes \ || test "x$enableval" = xon \ || test "x$enableval" = xtrue then set_enable_internal_docs=yes fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to create internal code docs" >&5 $as_echo_n "checking whether to create internal code docs... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${set_enable_internal_docs}" >&5 $as_echo "${set_enable_internal_docs}" >&6; } if test "x${set_enable_internal_docs}" = "xyes"; then ENABLE_INTERNAL_DOCS_TRUE= ENABLE_INTERNAL_DOCS_FALSE='#' else ENABLE_INTERNAL_DOCS_TRUE='#' ENABLE_INTERNAL_DOCS_FALSE= fi # docdir has to be determined in advance # --------------------------------------------------------------------------- # gtk-doc: We use gtk-doc for building our documentation. However, we # require the user to explicitely request the build. # --------------------------------------------------------------------------- try_gtkdoc=false gtkdoc_msg="no (not requested)" have_gtkdoc=false # Check whether --enable-docs was given. if test "${enable_docs+set}" = set; then : enableval=$enable_docs; if test x$enableval = xyes; then try_gtkdoc=true fi fi if $try_gtkdoc; then # Extract the first word of "gtkdoc-mkdb", so it can be a program name with args. set dummy gtkdoc-mkdb; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GTKDOC+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC="$GTKDOC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC=$ac_cv_path_GTKDOC if test -n "$GTKDOC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC" >&5 $as_echo "$GTKDOC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "${GTKDOC}"; then have_gtkdoc=true gtkdoc_msg="yes" else gtkdoc_msg="no (http://www.gtk.org/rdp/download.html)" fi fi if $have_gtkdoc; then ENABLE_GTK_DOC_TRUE= ENABLE_GTK_DOC_FALSE='#' else ENABLE_GTK_DOC_TRUE='#' ENABLE_GTK_DOC_FALSE= fi gp_config_msg_len="$(expr "build API docs with gtk-doc" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "build API docs with gtk-doc" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "build API docs with gtk-doc:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} $gtkdoc_msg " # --------------------------------------------------------------------------- # Give the user the possibility to install html documentation in a # user-defined location. # --------------------------------------------------------------------------- # Check whether --with-html-dir was given. if test "${with_html_dir+set}" = set; then : withval=$with_html_dir; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for html dir" >&5 $as_echo_n "checking for html dir... " >&6; } if test "x${with_html_dir}" = "x" ; then htmldir="${docdir}/html" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${htmldir} (default)" >&5 $as_echo "${htmldir} (default)" >&6; } else htmldir="${with_html_dir}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${htmldir} (from parameter)" >&5 $as_echo "${htmldir} (from parameter)" >&6; } fi apidocdir="${htmldir}/api" camlibdocdir='${docdir}/camlibs' # Check whether --with-rpmbuild was given. if test "${with_rpmbuild+set}" = set; then : withval=$with_rpmbuild; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rpmbuild or rpm" >&5 $as_echo_n "checking for rpmbuild or rpm... " >&6; } if test -x "${with_rpmbuild}" then RPMBUILD="${with_rpmbuild}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${RPMBUILD} (from parameter)" >&5 $as_echo "${RPMBUILD} (from parameter)" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: using autodetection" >&5 $as_echo "using autodetection" >&6; } for ac_prog in rpmbuild rpm do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RPMBUILD+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RPMBUILD"; then ac_cv_prog_RPMBUILD="$RPMBUILD" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RPMBUILD="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RPMBUILD=$ac_cv_prog_RPMBUILD if test -n "$RPMBUILD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RPMBUILD" >&5 $as_echo "$RPMBUILD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$RPMBUILD" && break done test -n "$RPMBUILD" || RPMBUILD="false" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for rpmbuild or rpm" >&5 $as_echo_n "checking for rpmbuild or rpm... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${RPMBUILD} (autodetected)" >&5 $as_echo "${RPMBUILD} (autodetected)" >&6; } fi if test "$RPMBUILD" != "false"; then ENABLE_RPM_TRUE= ENABLE_RPM_FALSE='#' else ENABLE_RPM_TRUE='#' ENABLE_RPM_FALSE= fi # effective_target has to be determined in advance is_linux=false case "$effective_target" in *linux*) is_linux=true ;; esac if "$is_linux"; then HAVE_LINUX_TRUE= HAVE_LINUX_FALSE='#' else HAVE_LINUX_TRUE='#' HAVE_LINUX_FALSE= fi # required for docdir # FIXME: Implicit dependency # AC_REQUIRE(GP_CHECK_DOC_DIR) # Check whether --with-hotplug-doc-dir was given. if test "${with_hotplug_doc_dir+set}" = set; then : withval=$with_hotplug_doc_dir; fi if "$is_linux"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hotplug doc dir" >&5 $as_echo_n "checking for hotplug doc dir... " >&6; } if test "x${with_hotplug_doc_dir}" != "x" then # given as parameter hotplugdocdir="${with_hotplug_doc_dir}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${hotplugdocdir} (from parameter)" >&5 $as_echo "${hotplugdocdir} (from parameter)" >&6; } else # start at docdir hotplugdocdir="${docdir}/linux-hotplug" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${hotplugdocdir} (default)" >&5 $as_echo "${hotplugdocdir} (default)" >&6; } fi else hotplugdocdir="" fi # Check whether --with-hotplug-usermap-dir was given. if test "${with_hotplug_usermap_dir+set}" = set; then : withval=$with_hotplug_usermap_dir; fi if "$is_linux"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for hotplug usermap dir" >&5 $as_echo_n "checking for hotplug usermap dir... " >&6; } if test "x${with_hotplug_usermap_dir}" != "x" then # given as parameter hotplugusermapdir="${with_hotplug_usermap_dir}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${hotplugusermapdir} (from parameter)" >&5 $as_echo "${hotplugusermapdir} (from parameter)" >&6; } else # start at docdir hotplugusermapdir="${docdir}/linux-hotplug" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${hotplugusermapdir} (default)" >&5 $as_echo "${hotplugusermapdir} (default)" >&6; } fi else hotplugusermapdir="" fi # Let us hope that automake does not create "" directories # on non-Linux systems now. pkgconfigdir='${libdir}/pkgconfig' # ---------------------------------------------------------------------- # [GP_CHECK_LIBRARY]([LIBEXIF],[libexif],[>= 0.6.13], # [libexif/exif-data.h],[exif_data_new], # [...],[...],[default-on]) # http://www.sourceforge.net/projects/libexif # ---------------------------------------------------------------------- # Use _CFLAGS and _LIBS given to configure. # This makes it possible to set these vars in a configure script # and AC_CONFIG_SUBDIRS this configure. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libexif to use" >&5 $as_echo_n "checking for libexif to use... " >&6; } REQUIREMENTS_FOR_LIBEXIF="libexif >= 0.6.13" userdef_LIBEXIF=no have_LIBEXIF=no if test "x${LIBEXIF_LIBS}" = "x" && test "x${LIBEXIF_CFLAGS}" = "x"; then # define --with/--without argument try_LIBEXIF=auto # Check whether --with-libexif was given. if test "${with_libexif+set}" = set; then : withval=$with_libexif; try_LIBEXIF="$withval" fi if test "x${try_LIBEXIF}" = "xno"; then REQUIREMENTS_FOR_LIBEXIF= fi if test "x${try_LIBEXIF}" = "xauto"; then try_LIBEXIF=autodetect; fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${try_LIBEXIF}" >&5 $as_echo "${try_LIBEXIF}" >&6; } if test "x${try_LIBEXIF}" = "xautodetect"; then # OK, we have to autodetect. # We start autodetection with the cleanest known method: pkg-config if test "x${have_LIBEXIF}" = "xno"; then # we need that line break after the PKG_CHECK_MODULES pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBEXIF" >&5 $as_echo_n "checking for LIBEXIF... " >&6; } if test -n "$LIBEXIF_CFLAGS"; then pkg_cv_LIBEXIF_CFLAGS="$LIBEXIF_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexif >= 0.6.13\""; } >&5 ($PKG_CONFIG --exists --print-errors "libexif >= 0.6.13") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBEXIF_CFLAGS=`$PKG_CONFIG --cflags "libexif >= 0.6.13" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBEXIF_LIBS"; then pkg_cv_LIBEXIF_LIBS="$LIBEXIF_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libexif >= 0.6.13\""; } >&5 ($PKG_CONFIG --exists --print-errors "libexif >= 0.6.13") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBEXIF_LIBS=`$PKG_CONFIG --libs "libexif >= 0.6.13" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBEXIF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libexif >= 0.6.13" 2>&1` else LIBEXIF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libexif >= 0.6.13" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBEXIF_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else LIBEXIF_CFLAGS=$pkg_cv_LIBEXIF_CFLAGS LIBEXIF_LIBS=$pkg_cv_LIBEXIF_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_LIBEXIF=yes fi fi # If pkg-config didn't find anything, try the libfoo-config program # certain known libraries ship with. if test "x${have_LIBEXIF}" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking libexif config program" >&5 $as_echo_n "checking libexif config program... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } # Extract the first word of "gp_lib_config", so it can be a program name with args. set dummy none; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_LIBEXIF_CONFIG_PROG+:} false; then : $as_echo_n "(cached) " >&6 else case $LIBEXIF_CONFIG_PROG in [\\/]* | ?:[\\/]*) ac_cv_path_LIBEXIF_CONFIG_PROG="$LIBEXIF_CONFIG_PROG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_LIBEXIF_CONFIG_PROG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi LIBEXIF_CONFIG_PROG=$ac_cv_path_LIBEXIF_CONFIG_PROG if test -n "$LIBEXIF_CONFIG_PROG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBEXIF_CONFIG_PROG" >&5 $as_echo "$LIBEXIF_CONFIG_PROG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "${LIBEXIF_CONFIG_PROG}" && test "${LIBEXIF_CONFIG_PROG}" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libexif version according to none" >&5 $as_echo_n "checking for libexif version according to none... " >&6; } _LIBEXIF_COMPN="-lt" # split requested version number using m4 regexps _LIBEXIF_REQ_1="0" _LIBEXIF_REQ_2="6" _LIBEXIF_REQ_3="13" _LIBEXIF_REQ_4="" # split installed version number via shell and sed _LIBEXIF_VERSION="$("${LIBEXIF_CONFIG_PROG}" --version | sed 's/^.* //')" _LIBEXIF_VER_1="$(echo "${_LIBEXIF_VERSION}" | sed 's/\([0-9]*\).*/\1/g')" _LIBEXIF_VER_2="$(echo "${_LIBEXIF_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\).*/\2/g')" _LIBEXIF_VER_3="$(echo "${_LIBEXIF_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/g')" _LIBEXIF_VER_4="$(echo "${_LIBEXIF_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(.*\)/\4/g')" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_LIBEXIF_VERSION}" >&5 $as_echo "${_LIBEXIF_VERSION}" >&6; } _tmp=false if test "${_LIBEXIF_VER_1}" "${_LIBEXIF_COMPN}" "${_LIBEXIF_REQ_1}"; then _tmp=true; elif test "${_LIBEXIF_VER_2}" "${_LIBEXIF_COMPN}" "${_LIBEXIF_REQ_2}"; then _tmp=true; elif test "${_LIBEXIF_VER_3}" "${_LIBEXIF_COMPN}" "${_LIBEXIF_REQ_3}"; then _tmp=true; elif test "x${_LIBEXIF_VER_4}" = "x" && test "x${_LIBEXIF_REQ_4}" != "x"; then _tmp=true; elif test "${_LIBEXIF_VER_4}" "${_LIBEXIF_COMPN}" "${_LIBEXIF_REQ_4}"; then _tmp=true; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libexif version is matching requirement >= 0.6.13" >&5 $as_echo_n "checking if libexif version is matching requirement >= 0.6.13... " >&6; } if "${_tmp}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Version requirement libexif >= 0.6.13 not met. Found: ${_LIBEXIF_VERSION}" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libexif parameters from none" >&5 $as_echo_n "checking for libexif parameters from none... " >&6; } LIBEXIF_LIBS="$(${LIBEXIF_CONFIG_PROG} --libs || echo "*error*")" LIBEXIF_CFLAGS="$(${LIBEXIF_CONFIG_PROG} --cflags || echo "*error*")" if test "x${LIBEXIF_LIBS}" = "*error*" || test "x${LIBEXIF_CFLAGS}" = "*error*"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: error" >&5 $as_echo "error" >&6; } else have_LIBEXIF=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi fi fi # Version requirement given, so we do not rely on probing. elif test "x${try_LIBEXIF}" = "xno"; then : else # We've been given a prefix to look in for library libexif. # We start looking for libexif.la files first. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libexif.la file in ${try_LIBEXIF}" >&5 $as_echo_n "checking for libexif.la file in ${try_LIBEXIF}... " >&6; } if test -f "${try_LIBEXIF}/lib/libexif.la"; then LIBEXIF_LIBS="${try_LIBEXIF}/lib/libexif.la" LIBEXIF_CFLAGS="-I${try_LIBEXIF}/include" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libtool file $LIBEXIF_LIBS (good)" >&5 $as_echo "libtool file $LIBEXIF_LIBS (good)" >&6; } have_LIBEXIF=yes elif test -f "${try_LIBEXIF}/lib64/libexif.la"; then # HACK LIBEXIF_LIBS="${try_LIBEXIF}/lib64/libexif.la" LIBEXIF_CFLAGS="-I${try_LIBEXIF}/include" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libtool file $LIBEXIF_LIBS (good)" >&5 $as_echo "libtool file $LIBEXIF_LIBS (good)" >&6; } have_LIBEXIF=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: wild guess that something is in $try_LIBEXIF" >&5 $as_echo "wild guess that something is in $try_LIBEXIF" >&6; } LIBEXIF_LIBS="-L${try_LIBEXIF}/lib -l$(echo "libexif" | sed 's/^lib//')" LIBEXIF_CFLAGS="-I${try_LIBEXIF}/include" have_LIBEXIF=yes { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * Warning: * libtool file libexif.la could not be found. * We may be linking against the WRONG library. " >&5 $as_echo "$as_me: WARNING: * Warning: * libtool file libexif.la could not be found. * We may be linking against the WRONG library. " >&2;} fi fi elif test "x${LIBEXIF_LIBS}" != "x" && test "x${LIBEXIF_CFLAGS}" != "x"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: user-defined" >&5 $as_echo "user-defined" >&6; } userdef_LIBEXIF=yes have_LIBEXIF=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: broken call" >&5 $as_echo "broken call" >&6; } as_fn_error $? " * Fatal: * When calling configure for ${PACKAGE_TARNAME} * ${PACKAGE_NAME} * either set both LIBEXIF_LIBS *and* LIBEXIF_CFLAGS * or neither. " "$LINENO" 5 fi if test "x${have_LIBEXIF}" = "xyes"; then # ACTION-IF-FOUND { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we use a version of libexif with ExifData.ifd[]" >&5 $as_echo_n "checking whether we use a version of libexif with ExifData.ifd[]... " >&6; } # Check for libexif version CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="$LIBEXIF_CFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* CC=$CC */ /* CPPFLAGS=${CPPFLAGS} */ /* LDFLAGS=${LDFLAGS} */ #include #include _ACEOF if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define HAVE_LIBEXIF_IFD 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CPPFLAGS="$CPPFLAGS_save" fi if test "x${have_LIBEXIF}" = "xyes"; then CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="${LIBEXIF_CFLAGS}" ac_fn_c_check_header_mongrel "$LINENO" "libexif/exif-data.h" "ac_cv_header_libexif_exif_data_h" "$ac_includes_default" if test "x$ac_cv_header_libexif_exif_data_h" = xyes; then : have_LIBEXIF=yes else have_LIBEXIF=no fi CPPFLAGS="$CPPFLAGS_save" fi if test "x${userdef_LIBEXIF}" = "xno" && test "x${have_LIBEXIF}" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for function exif_data_new in libexif" >&5 $as_echo_n "checking for function exif_data_new in libexif... " >&6; } LIBS_save="$LIBS" LIBS="${LIBEXIF_LIBS}" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 exif_data_new (); int main () { return exif_data_new (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else have_LIBEXIF=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$LIBS_save" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${have_LIBEXIF}" >&5 $as_echo "${have_LIBEXIF}" >&6; } fi if test "x$have_LIBEXIF" = "xyes"; then HAVE_LIBEXIF_TRUE= HAVE_LIBEXIF_FALSE='#' else HAVE_LIBEXIF_TRUE='#' HAVE_LIBEXIF_FALSE= fi if test "x$have_LIBEXIF" = "xyes"; then $as_echo "#define HAVE_LIBEXIF 1" >>confdefs.h gp_config_msg_len="$(expr "libexif" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libexif" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libexif:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} yes " { $as_echo "$as_me:${as_lineno-$LINENO}: checking libexif library flags" >&5 $as_echo_n "checking libexif library flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${LIBEXIF_LIBS}\"" >&5 $as_echo "\"${LIBEXIF_LIBS}\"" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking libexif cpp flags" >&5 $as_echo_n "checking libexif cpp flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${LIBEXIF_CFLAGS}\"" >&5 $as_echo "\"${LIBEXIF_CFLAGS}\"" >&6; } else REQUIREMENTS_FOR_LIBEXIF= gp_config_msg_len="$(expr "libexif" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libexif" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libexif:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} no " fi if test -n "$CXX" && test "X$CXX" != "Xno"; then HAVE_CXX_TRUE= HAVE_CXX_FALSE='#' else HAVE_CXX_TRUE='#' HAVE_CXX_FALSE= fi if test -d "$srcdir/libgphoto2_port"; then subdirs="$subdirs libgphoto2_port" else as_fn_error $? " *** Hey, where have you hidden my libgphoto2_port? *** I needed that! " "$LINENO" 5 fi # --------------------------------------------------------------------------- # Create output files # --------------------------------------------------------------------------- ac_config_files="$ac_config_files README Makefile gphoto2-config camlibs/Makefile camlibs/canon/doc/Makefile camlibs/konica/localization/Makefile gphoto-m4/Makefile libgphoto2/Makefile libgphoto2.pc libgphoto2-uninstalled.pc examples/Makefile tests/Makefile tests/ddb/Makefile tests/ddb/check-ddb.sh packaging/Makefile packaging/linux-hotplug/Makefile packaging/generic/Makefile packaging/rpm/Makefile packaging/rpm/package.spec po/Makefile.in doc/Makefile doc/Doxyfile doc/Doxyfile-internals doc/api/Makefile" 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_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; 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 if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_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= U= 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=`$as_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. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_GCC_TRUE}" && test -z "${HAVE_GCC_FALSE}"; then as_fn_error $? "conditional \"HAVE_GCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLED_GP2DDB_TRUE}" && test -z "${ENABLED_GP2DDB_FALSE}"; then as_fn_error $? "conditional \"ENABLED_GP2DDB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBXML2_TRUE}" && test -z "${HAVE_LIBXML2_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBXML2\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBGD_TRUE}" && test -z "${HAVE_LIBGD_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBGD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_UDEV_TRUE}" && test -z "${HAVE_UDEV_FALSE}"; then as_fn_error $? "conditional \"HAVE_UDEV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_DOXYGEN_TRUE}" && test -z "${HAVE_DOXYGEN_FALSE}"; then as_fn_error $? "conditional \"HAVE_DOXYGEN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_DOT_TRUE}" && test -z "${HAVE_DOT_FALSE}"; then as_fn_error $? "conditional \"HAVE_DOT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_INTERNAL_DOCS_TRUE}" && test -z "${ENABLE_INTERNAL_DOCS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_INTERNAL_DOCS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_RPM_TRUE}" && test -z "${ENABLE_RPM_FALSE}"; then as_fn_error $? "conditional \"ENABLE_RPM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LINUX_TRUE}" && test -z "${HAVE_LINUX_FALSE}"; then as_fn_error $? "conditional \"HAVE_LINUX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBEXIF_TRUE}" && test -z "${HAVE_LIBEXIF_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBEXIF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_CXX_TRUE}" && test -z "${HAVE_CXX_FALSE}"; then as_fn_error $? "conditional \"HAVE_CXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $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} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## 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=: # Pre-4.2 versions of Zsh do 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_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } 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.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= 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 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith 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 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # 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 ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac 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 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then 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 -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_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 || $as_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" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # 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 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=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 libgphoto2 photo camera library $as_me 2.5.9, which was generated by GNU Autoconf 2.69. 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 case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # 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_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent 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_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ libgphoto2 photo camera library config.status 2.5.9 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 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' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. 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=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= 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 ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_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. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append 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 || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # 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' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in AS \ DLLTOOL \ OBJDUMP \ SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ 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_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) 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 \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that 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' RM='$RM' ofile='$ofile' # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "default-2") CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; "README") CONFIG_FILES="$CONFIG_FILES README" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "gphoto2-config") CONFIG_FILES="$CONFIG_FILES gphoto2-config" ;; "camlibs/Makefile") CONFIG_FILES="$CONFIG_FILES camlibs/Makefile" ;; "camlibs/canon/doc/Makefile") CONFIG_FILES="$CONFIG_FILES camlibs/canon/doc/Makefile" ;; "camlibs/konica/localization/Makefile") CONFIG_FILES="$CONFIG_FILES camlibs/konica/localization/Makefile" ;; "gphoto-m4/Makefile") CONFIG_FILES="$CONFIG_FILES gphoto-m4/Makefile" ;; "libgphoto2/Makefile") CONFIG_FILES="$CONFIG_FILES libgphoto2/Makefile" ;; "libgphoto2.pc") CONFIG_FILES="$CONFIG_FILES libgphoto2.pc" ;; "libgphoto2-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES libgphoto2-uninstalled.pc" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "tests/ddb/Makefile") CONFIG_FILES="$CONFIG_FILES tests/ddb/Makefile" ;; "tests/ddb/check-ddb.sh") CONFIG_FILES="$CONFIG_FILES tests/ddb/check-ddb.sh" ;; "packaging/Makefile") CONFIG_FILES="$CONFIG_FILES packaging/Makefile" ;; "packaging/linux-hotplug/Makefile") CONFIG_FILES="$CONFIG_FILES packaging/linux-hotplug/Makefile" ;; "packaging/generic/Makefile") CONFIG_FILES="$CONFIG_FILES packaging/generic/Makefile" ;; "packaging/rpm/Makefile") CONFIG_FILES="$CONFIG_FILES packaging/rpm/Makefile" ;; "packaging/rpm/package.spec") CONFIG_FILES="$CONFIG_FILES packaging/rpm/package.spec" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; "doc/Doxyfile-internals") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile-internals" ;; "doc/api/Makefile") CONFIG_FILES="$CONFIG_FILES doc/api/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; 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= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # 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. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[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="$ac_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 || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append 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 '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; 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 || $as_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"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_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 || ac_write_fail=1 # 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= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 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 || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;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 " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_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 "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | 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) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf 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 -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/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 || $as_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"` # 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'`; 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 || $as_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; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options that 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 # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 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 this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='CXX ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Whether or not to build static libraries. build_old_libs=$enable_static # Assembler program. AS=$lt_AS # DLL creation program. DLLTOOL=$lt_DLLTOOL # Object dumper program. OBJDUMP=$lt_OBJDUMP # 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 # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # 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 # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # 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 # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # 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 # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # 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 into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # 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 lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # 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 # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # 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 # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # 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 # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # 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 # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # 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 # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # 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 # 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 # 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 # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_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 # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps 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 # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _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 set != "${COLLECT_NAMES+set}"; 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 '$q' "$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" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # 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 # 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 # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # 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 a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # 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 # 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 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_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 # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_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 # 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 # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX 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 # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; "default-1":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "default-2":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "README":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "gphoto2-config":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "camlibs/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "camlibs/canon/doc/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "camlibs/konica/localization/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "gphoto-m4/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "libgphoto2/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "libgphoto2.pc":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "libgphoto2-uninstalled.pc":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "examples/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "tests/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "tests/ddb/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "tests/ddb/check-ddb.sh":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "packaging/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "packaging/linux-hotplug/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "packaging/generic/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "packaging/rpm/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "packaging/rpm/package.spec":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "po/Makefile.in":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "doc/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "doc/Doxyfile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "doc/Doxyfile-internals":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; "doc/api/Makefile":F) if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # 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 || as_fn_exit 1 fi # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then # Remove --cache-file, --srcdir, and --disable-option-checking arguments # so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -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=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; --disable-option-checking) ;; *) case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_sub_configure_args " '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi # Always prepend --disable-option-checking to silence warnings, since # different subdirs can have different --enable and --with options. ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 $as_echo "$ac_msg" >&6 as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_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" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 fi cd "$ac_popdir" done fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi if test "x$CDPATH" != "x" then echo echo "***********************************************************" echo "* You have CDPATH set. You may have to run \"unset CDPATH\" *" echo "* before running \"make dist\" or \"make rpm\". *" echo "***********************************************************" fi # Message about configured subprojects if test "x$subdirs" != "x"; then gp_config_msg="${gp_config_msg} " _subdirs="" for sd in $subdirs; do ssd="$(basename "$sd")" if test "x$_subdirs" = "x"; then _subdirs="$ssd"; else _subdirs="$_subdirs $ssd" fi done gp_config_msg_len="$(expr "Subprojects" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Subprojects" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Subprojects:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${_subdirs} " fi echo "${gp_config_msg} You may run \"make\" and \"make install\" now." if test "x$camlibs" = "xall"; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: # Caution: You have chosen to build a non-standard set of camlibs. # You may have disabled the camlib required for your camera, or # enabled a camlib that does *not* work, and overrides the camlib # that does work. Consequently, # YOUR CAMERA MAY NOT WORK! # # Many cameras of several brands are supported by a camlib with a # name different from the name of the camera brand or model. If you # are unsure, please # * enable at least the \"ptp2\" camlib # * or even better, just build \"all\" camlibs. " >&5 $as_echo "$as_me: WARNING: # Caution: You have chosen to build a non-standard set of camlibs. # You may have disabled the camlib required for your camera, or # enabled a camlib that does *not* work, and overrides the camlib # that does work. Consequently, # YOUR CAMERA MAY NOT WORK! # # Many cameras of several brands are supported by a camlib with a # name different from the name of the camera brand or model. If you # are unsure, please # * enable at least the \"ptp2\" camlib # * or even better, just build \"all\" camlibs. " >&2;} sleep 2 fi echo "Please check whether the configuration I detected matches what you would like to have. E.g. make sure that USB support is there if you intend to use USB cameras with $PACKAGE_NAME. Please also check that PKG_CONFIG_PATH contains ${pkgconfigdir} before compiling any libgphoto2 frontend. " libgphoto2-2.5.9/tests/0000755000175000001440000000000012623156270011743 500000000000000libgphoto2-2.5.9/tests/Makefile.in0000644000175000001440000015643012623156012013733 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ EXTRA_PROGRAMS = $(am__EXEEXT_1) check_PROGRAMS = test-endian$(EXEEXT) test-camera-list$(EXEEXT) \ test-pedantic-c$(EXEEXT) $(am__EXEEXT_2) TESTS = test-endian$(EXEEXT) test-camera-list$(EXEEXT) \ test-pedantic-c$(EXEEXT) $(am__EXEEXT_2) noinst_PROGRAMS = test-gphoto2$(EXEEXT) test-filesys$(EXEEXT) @HAVE_CXX_TRUE@am__append_1 = test-pedantic-cxx @HAVE_CXX_TRUE@am__append_2 = test-pedantic-cxx @HAVE_CXX_FALSE@am__append_3 = test-pedantic-cxx subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @HAVE_CXX_FALSE@am__EXEEXT_1 = test-pedantic-cxx$(EXEEXT) @HAVE_CXX_TRUE@am__EXEEXT_2 = test-pedantic-cxx$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) test_camera_list_SOURCES = test-camera-list.c test_camera_list_OBJECTS = test-camera-list.$(OBJEXT) am__DEPENDENCIES_1 = test_camera_list_DEPENDENCIES = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = test_endian_SOURCES = test-endian.c test_endian_OBJECTS = test-endian.$(OBJEXT) test_endian_DEPENDENCIES = $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) test_filesys_SOURCES = test-filesys.c test_filesys_OBJECTS = test-filesys.$(OBJEXT) test_filesys_DEPENDENCIES = $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) test_gphoto2_SOURCES = test-gphoto2.c test_gphoto2_OBJECTS = test-gphoto2.$(OBJEXT) test_gphoto2_DEPENDENCIES = $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am_test_pedantic_c_OBJECTS = \ test_pedantic_c-test-pedantic-compilation.$(OBJEXT) test_pedantic_c_OBJECTS = $(am_test_pedantic_c_OBJECTS) test_pedantic_c_DEPENDENCIES = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) test_pedantic_c_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(test_pedantic_c_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ am_test_pedantic_cxx_OBJECTS = \ test_pedantic_cxx-test-pedantic-compilation.$(OBJEXT) test_pedantic_cxx_OBJECTS = $(am_test_pedantic_cxx_OBJECTS) test_pedantic_cxx_DEPENDENCIES = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) test_pedantic_cxx_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(test_pedantic_cxx_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/auto-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = test-camera-list.c test-endian.c test-filesys.c \ test-gphoto2.c $(test_pedantic_c_SOURCES) \ $(test_pedantic_cxx_SOURCES) DIST_SOURCES = test-camera-list.c test-endian.c test-filesys.c \ test-gphoto2.c $(test_pedantic_c_SOURCES) \ $(test_pedantic_cxx_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-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 \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ check recheck distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/auto-aux/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/auto-aux/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/auto-aux/depcomp \ $(top_srcdir)/auto-aux/mkinstalldirs \ $(top_srcdir)/auto-aux/test-driver \ $(top_srcdir)/installcheck.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir) -I$(top_builddir) \ -I$(top_srcdir)/libgphoto2_port -I$(top_srcdir)/libgphoto2 \ -I$(top_builddir)/libgphoto2 AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ SUBDIRS = ddb EXTRA_DIST = check_SCRIPTS = INSTALL_TESTS = test-camera-list # Now that we build all the camlibs in one directory, we can run our checks # with CAMLIBS set to the camlib build directory. TESTS_ENVIRONMENT = env \ CAMLIBS="$(top_builddir)/camlibs" # After installation, this will be CAMLIBS = $(DESTDIR)$(camlibdir) INSTALL_TESTS_ENVIRONMENT = env \ CAMLIBS="$(DESTDIR)$(camlibdir)" \ LD_LIBRARY_PATH="$(DESTDIR)$(libdir)$${LD_LIBRARY_PATH+:$${LD_LIBRARY_PATH}}" CLEANFILES = $(check_SCRIPTS) test_endian_SOURCE = test-endian.c test_endian_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) test_gphoto2_SOURCE = test-gphoto2.c test_gphoto2_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) test_filesys_SOURCE = test-filesys.c test_filesys_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) test_camera_list_SOURCE = test-camera-list.c test_camera_list_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) @HAVE_GCC_FALSE@PEDANTIC_CFLAGS = @HAVE_GCC_TRUE@PEDANTIC_CFLAGS = -std=c99 -pedantic-errors -W -Wall -Wextra -Werror @HAVE_GCC_FALSE@PEDANTIC_CXXFLAGS = @HAVE_GCC_TRUE@PEDANTIC_CXXFLAGS = -std=c++98 -pedantic-errors -W -Wall -Wextra -Werror test_pedantic_c_SOURCES = test-pedantic-compilation.c test_pedantic_c_CPPFLAGS = \ $(AM_CPPFLAGS) $(CPPFLAGS) \ -U_GPHOTO2_INTERNAL_CODE test_pedantic_c_CFLAGS = \ $(AM_CFLAGS) $(PEDANTIC_CFLAGS) $(CFLAGS) \ -U_GPHOTO2_INTERNAL_CODE test_pedantic_c_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) test_pedantic_cxx_SOURCES = test-pedantic-compilation.cxx test_pedantic_cxx_CPPFLAGS = \ $(AM_CPPFLAGS) $(CPPFLAGS) \ -U_GPHOTO2_INTERNAL_CODE test_pedantic_cxx_CXXFLAGS = \ $(AM_CXXFLAGS) $(PEDANTIC_CXXFLAGS) $(CXXFLAGS) \ -U_GPHOTO2_INTERNAL_CODE test_pedantic_cxx_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) all: all-recursive .SUFFIXES: .SUFFIXES: .c .cxx .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/installcheck.mk $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/installcheck.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list test-camera-list$(EXEEXT): $(test_camera_list_OBJECTS) $(test_camera_list_DEPENDENCIES) $(EXTRA_test_camera_list_DEPENDENCIES) @rm -f test-camera-list$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_camera_list_OBJECTS) $(test_camera_list_LDADD) $(LIBS) test-endian$(EXEEXT): $(test_endian_OBJECTS) $(test_endian_DEPENDENCIES) $(EXTRA_test_endian_DEPENDENCIES) @rm -f test-endian$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_endian_OBJECTS) $(test_endian_LDADD) $(LIBS) test-filesys$(EXEEXT): $(test_filesys_OBJECTS) $(test_filesys_DEPENDENCIES) $(EXTRA_test_filesys_DEPENDENCIES) @rm -f test-filesys$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_filesys_OBJECTS) $(test_filesys_LDADD) $(LIBS) test-gphoto2$(EXEEXT): $(test_gphoto2_OBJECTS) $(test_gphoto2_DEPENDENCIES) $(EXTRA_test_gphoto2_DEPENDENCIES) @rm -f test-gphoto2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_gphoto2_OBJECTS) $(test_gphoto2_LDADD) $(LIBS) test-pedantic-c$(EXEEXT): $(test_pedantic_c_OBJECTS) $(test_pedantic_c_DEPENDENCIES) $(EXTRA_test_pedantic_c_DEPENDENCIES) @rm -f test-pedantic-c$(EXEEXT) $(AM_V_CCLD)$(test_pedantic_c_LINK) $(test_pedantic_c_OBJECTS) $(test_pedantic_c_LDADD) $(LIBS) test-pedantic-cxx$(EXEEXT): $(test_pedantic_cxx_OBJECTS) $(test_pedantic_cxx_DEPENDENCIES) $(EXTRA_test_pedantic_cxx_DEPENDENCIES) @rm -f test-pedantic-cxx$(EXEEXT) $(AM_V_CXXLD)$(test_pedantic_cxx_LINK) $(test_pedantic_cxx_OBJECTS) $(test_pedantic_cxx_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-camera-list.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-endian.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-filesys.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-gphoto2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_pedantic_c-test-pedantic-compilation.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_pedantic_cxx-test-pedantic-compilation.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< test_pedantic_c-test-pedantic-compilation.o: test-pedantic-compilation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_pedantic_c_CPPFLAGS) $(CPPFLAGS) $(test_pedantic_c_CFLAGS) $(CFLAGS) -MT test_pedantic_c-test-pedantic-compilation.o -MD -MP -MF $(DEPDIR)/test_pedantic_c-test-pedantic-compilation.Tpo -c -o test_pedantic_c-test-pedantic-compilation.o `test -f 'test-pedantic-compilation.c' || echo '$(srcdir)/'`test-pedantic-compilation.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_pedantic_c-test-pedantic-compilation.Tpo $(DEPDIR)/test_pedantic_c-test-pedantic-compilation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-pedantic-compilation.c' object='test_pedantic_c-test-pedantic-compilation.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_pedantic_c_CPPFLAGS) $(CPPFLAGS) $(test_pedantic_c_CFLAGS) $(CFLAGS) -c -o test_pedantic_c-test-pedantic-compilation.o `test -f 'test-pedantic-compilation.c' || echo '$(srcdir)/'`test-pedantic-compilation.c test_pedantic_c-test-pedantic-compilation.obj: test-pedantic-compilation.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_pedantic_c_CPPFLAGS) $(CPPFLAGS) $(test_pedantic_c_CFLAGS) $(CFLAGS) -MT test_pedantic_c-test-pedantic-compilation.obj -MD -MP -MF $(DEPDIR)/test_pedantic_c-test-pedantic-compilation.Tpo -c -o test_pedantic_c-test-pedantic-compilation.obj `if test -f 'test-pedantic-compilation.c'; then $(CYGPATH_W) 'test-pedantic-compilation.c'; else $(CYGPATH_W) '$(srcdir)/test-pedantic-compilation.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_pedantic_c-test-pedantic-compilation.Tpo $(DEPDIR)/test_pedantic_c-test-pedantic-compilation.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-pedantic-compilation.c' object='test_pedantic_c-test-pedantic-compilation.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_pedantic_c_CPPFLAGS) $(CPPFLAGS) $(test_pedantic_c_CFLAGS) $(CFLAGS) -c -o test_pedantic_c-test-pedantic-compilation.obj `if test -f 'test-pedantic-compilation.c'; then $(CYGPATH_W) 'test-pedantic-compilation.c'; else $(CYGPATH_W) '$(srcdir)/test-pedantic-compilation.c'; fi` .cxx.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cxx.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cxx.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< test_pedantic_cxx-test-pedantic-compilation.o: test-pedantic-compilation.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_pedantic_cxx_CPPFLAGS) $(CPPFLAGS) $(test_pedantic_cxx_CXXFLAGS) $(CXXFLAGS) -MT test_pedantic_cxx-test-pedantic-compilation.o -MD -MP -MF $(DEPDIR)/test_pedantic_cxx-test-pedantic-compilation.Tpo -c -o test_pedantic_cxx-test-pedantic-compilation.o `test -f 'test-pedantic-compilation.cxx' || echo '$(srcdir)/'`test-pedantic-compilation.cxx @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_pedantic_cxx-test-pedantic-compilation.Tpo $(DEPDIR)/test_pedantic_cxx-test-pedantic-compilation.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='test-pedantic-compilation.cxx' object='test_pedantic_cxx-test-pedantic-compilation.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_pedantic_cxx_CPPFLAGS) $(CPPFLAGS) $(test_pedantic_cxx_CXXFLAGS) $(CXXFLAGS) -c -o test_pedantic_cxx-test-pedantic-compilation.o `test -f 'test-pedantic-compilation.cxx' || echo '$(srcdir)/'`test-pedantic-compilation.cxx test_pedantic_cxx-test-pedantic-compilation.obj: test-pedantic-compilation.cxx @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_pedantic_cxx_CPPFLAGS) $(CPPFLAGS) $(test_pedantic_cxx_CXXFLAGS) $(CXXFLAGS) -MT test_pedantic_cxx-test-pedantic-compilation.obj -MD -MP -MF $(DEPDIR)/test_pedantic_cxx-test-pedantic-compilation.Tpo -c -o test_pedantic_cxx-test-pedantic-compilation.obj `if test -f 'test-pedantic-compilation.cxx'; then $(CYGPATH_W) 'test-pedantic-compilation.cxx'; else $(CYGPATH_W) '$(srcdir)/test-pedantic-compilation.cxx'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_pedantic_cxx-test-pedantic-compilation.Tpo $(DEPDIR)/test_pedantic_cxx-test-pedantic-compilation.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='test-pedantic-compilation.cxx' object='test_pedantic_cxx-test-pedantic-compilation.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_pedantic_cxx_CPPFLAGS) $(CPPFLAGS) $(test_pedantic_cxx_CXXFLAGS) $(CXXFLAGS) -c -o test_pedantic_cxx-test-pedantic-compilation.obj `if test -f 'test-pedantic-compilation.cxx'; then $(CYGPATH_W) 'test-pedantic-compilation.cxx'; else $(CYGPATH_W) '$(srcdir)/test-pedantic-compilation.cxx'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # 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, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) $(check_SCRIPTS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? test-endian.log: test-endian$(EXEEXT) @p='test-endian$(EXEEXT)'; \ b='test-endian'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-camera-list.log: test-camera-list$(EXEEXT) @p='test-camera-list$(EXEEXT)'; \ b='test-camera-list'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-pedantic-c.log: test-pedantic-c$(EXEEXT) @p='test-pedantic-c$(EXEEXT)'; \ b='test-pedantic-c'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) test-pedantic-cxx.log: test-pedantic-cxx$(EXEEXT) @p='test-pedantic-cxx$(EXEEXT)'; \ b='test-pedantic-cxx'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: installcheck-local maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) check-am install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-TESTS check-am clean clean-checkPROGRAMS clean-generic \ clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ ctags-am 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-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 installcheck-local installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am recheck tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile # FIXME: Only run this if not cross-compiling installcheck-local: $(INSTALL_TESTS) $(INSTALLCHECK_DEPS) @total=0; failed=0; success=0; ignored=0; \ echo "Running \"installcheck\" test cases..."; \ for script in $(INSTALL_TESTS); do \ echo "Test case: $$script"; \ total="$$(expr $$total + 1)"; \ if test -f "./$$script"; then dir="./"; \ elif test -f "$$script"; then dir=""; \ else dir="$(srcdir)/"; fi; \ if $(INSTALL_TESTS_ENVIRONMENT) "$$dir/$$script"; then \ echo "SUCCEEDED: $$script"; \ success="$$(expr $$success + 1)"; \ else \ s="$$?"; \ if test "$$s" = "77"; then \ echo "FAILURE IGNORED (return code $$s): $$script"; \ ignored="$$(expr $$ignored + 1)"; \ else \ echo "FAILED (return code $$s): $$script"; \ failed="$$(expr $$failed + 1)"; \ fi; \ fi; \ done; \ echo "Test summary: $$success succeeded, $$failed failed, $$ignored failures ignored, $$total tests in total."; \ if test "$$failed" -gt 0; then \ echo "Error: One or more \"installcheck\" testcases have failed."; \ exit 1; \ fi # 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. .NOEXPORT: libgphoto2-2.5.9/tests/test-camera-list.c0000644000175000001440000001672612610415536015220 00000000000000/* test-camera-list.c * * Copyright 2001 Lutz Mueller * Copyright 2005 Hans Ulrich Niedermann * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include #include #define CHECK(f) \ do { \ int res = f; \ if (res < 0) { \ printf ("ERROR: %s\n", gp_result_as_string (res)); \ return (1); \ } \ } while (0) #ifdef __GNUC__ #define __unused__ __attribute__((unused)) #else #define __unused__ #endif /** boolean value */ static int do_debug = 0; /** time zero for debug log time stamps */ struct timeval glob_tv_zero = { 0, 0 }; static void debug_func (GPLogLevel level, const char *domain, const char *str, void __unused__ *data) { struct timeval tv; long sec, usec; gettimeofday (&tv, NULL); sec = tv.tv_sec - glob_tv_zero.tv_sec; usec = tv.tv_usec - glob_tv_zero.tv_usec; if (usec < 0) {sec--; usec += 1000000L;} fprintf (stderr, "%li.%06li %s(%i): %s\n", sec, usec, domain, level, str); } static void print_headline (void) { printf("No.|%-20s|%-20s|%s\n", "camlib", "driver name", "camera model"); } static void print_hline (void) { printf("---+%-20s+%-20s+%s\n", "--------------------", "--------------------", "-------------------------------------------"); } /** C equivalent of basename(1) */ static const char * path_basename (const char *pathname) { char *result, *tmp; /* remove path part from camlib name */ for (result=tmp=(char *)pathname; (*tmp!='\0'); tmp++) { if ((*tmp == gp_system_dir_delim) && (*(tmp+1) != '\0')) { result = tmp+1; } } return (const char *)result; } /** Define the different output formats. * These may be used for consistency checking and other stuff. */ typedef enum { /* Text table with headers. */ FMT_HEADED_TEXT = 0, /* Text table without headers. */ FMT_FLAT_TEXT, /* Text table just of camlibs without headers, * which will contain duplicate lines! * Treat the output with | sort | uniq to get meaningful results. */ FMT_FLAT_CAMLIBS, /* Comma separated values without headers */ FMT_CSV, /* Demo XML, don't use this for anything (yet) */ FMT_XML, /* Just print the number of supported cameras */ FMT_COUNT } OutputFormat; static OutputFormat format = FMT_HEADED_TEXT; /* #define DEBUG_OUTPUT */ /** Parse command line and set global variables. */ static void parse_command_line (const int argc, char *argv[]) { int i; #ifdef DEBUG_OUTPUT fprintf(stderr, "parsing cmdline (%d, %p)\n", argc, argv); fprintf(stderr, "argv[0]=\"%s\"\n", argv[0]); #endif for (i=1; i\n" " \n" " \n" " \n"; printf("\n" "\n", "1.0", "us-ascii", count); break; case FMT_FLAT_CAMLIBS: fmt_str = "%2$-28s %3$s\n"; break; case FMT_COUNT: printf("%d\n", count); return(0); break; } strcpy(lastmodel,"xxx"); /* For each camera in the list, add a text snippet to the * output file. */ for (i = 0; i < count; i++) { CameraAbilities abilities; const char *camlib_basename; CHECK (gp_abilities_list_get_abilities (al, i, &abilities)); camlib_basename = path_basename(abilities.library); if (!strcmp(lastmodel, abilities.model)) { fprintf(stderr,"Duplicated model name in camera list: %s\n", lastmodel); exit(1); } strcpy(lastmodel,abilities.model); switch (format) { case FMT_HEADED_TEXT: if ( ((i%25)== 0) && ( (i==0) || ((count-i) > 5) ) ) { print_hline(); print_headline(); print_hline(); } break; case FMT_FLAT_CAMLIBS: break; case FMT_XML: break; case FMT_CSV: break; case FMT_FLAT_TEXT: break; case FMT_COUNT: break; } printf(fmt_str, i+1, camlib_basename, abilities.id, abilities.model); } /* Print closing part of output file. */ switch (format) { case FMT_HEADED_TEXT: print_hline(); print_headline(); print_hline(); break; case FMT_FLAT_CAMLIBS: break; case FMT_XML: printf("\n"); break; case FMT_CSV: break; case FMT_FLAT_TEXT: break; case FMT_COUNT: break; } CHECK (gp_abilities_list_free (al)); return (0); } /* * Local variables: * mode:c * c-basic-offset:8 * End: */ libgphoto2-2.5.9/tests/Makefile.am0000644000175000001440000000603112610415530013710 00000000000000SUBDIRS = ddb EXTRA_DIST = EXTRA_PROGRAMS = check_PROGRAMS = check_SCRIPTS = TESTS = INSTALL_TESTS = noinst_PROGRAMS = # Now that we build all the camlibs in one directory, we can run our checks # with CAMLIBS set to the camlib build directory. TESTS_ENVIRONMENT = env \ CAMLIBS="$(top_builddir)/camlibs" # After installation, this will be CAMLIBS = $(DESTDIR)$(camlibdir) INSTALL_TESTS_ENVIRONMENT = env \ CAMLIBS="$(DESTDIR)$(camlibdir)" \ LD_LIBRARY_PATH="$(DESTDIR)$(libdir)$${LD_LIBRARY_PATH+:$${LD_LIBRARY_PATH}}" AM_CPPFLAGS += -I$(top_srcdir) -I$(top_builddir) -I$(top_srcdir)/libgphoto2_port -I$(top_srcdir)/libgphoto2 -I$(top_builddir)/libgphoto2 CLEANFILES = $(check_SCRIPTS) TESTS += test-endian check_PROGRAMS += test-endian test_endian_SOURCE = test-endian.c test_endian_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) noinst_PROGRAMS += test-gphoto2 test_gphoto2_SOURCE = test-gphoto2.c test_gphoto2_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) noinst_PROGRAMS += test-filesys test_filesys_SOURCE = test-filesys.c test_filesys_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) TESTS += test-camera-list INSTALL_TESTS += test-camera-list check_PROGRAMS += test-camera-list test_camera_list_SOURCE = test-camera-list.c test_camera_list_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) if HAVE_GCC PEDANTIC_CFLAGS = -std=c99 -pedantic-errors -W -Wall -Wextra -Werror PEDANTIC_CXXFLAGS = -std=c++98 -pedantic-errors -W -Wall -Wextra -Werror else PEDANTIC_CFLAGS = PEDANTIC_CXXFLAGS = endif TESTS += test-pedantic-c check_PROGRAMS += test-pedantic-c test_pedantic_c_SOURCES = test-pedantic-compilation.c test_pedantic_c_CPPFLAGS = \ $(AM_CPPFLAGS) $(CPPFLAGS) \ -U_GPHOTO2_INTERNAL_CODE test_pedantic_c_CFLAGS = \ $(AM_CFLAGS) $(PEDANTIC_CFLAGS) $(CFLAGS) \ -U_GPHOTO2_INTERNAL_CODE test_pedantic_c_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) if HAVE_CXX check_PROGRAMS += test-pedantic-cxx TESTS += test-pedantic-cxx else EXTRA_PROGRAMS += test-pedantic-cxx endif test_pedantic_cxx_SOURCES = test-pedantic-compilation.cxx test_pedantic_cxx_CPPFLAGS = \ $(AM_CPPFLAGS) $(CPPFLAGS) \ -U_GPHOTO2_INTERNAL_CODE test_pedantic_cxx_CXXFLAGS = \ $(AM_CXXFLAGS) $(PEDANTIC_CXXFLAGS) $(CXXFLAGS) \ -U_GPHOTO2_INTERNAL_CODE test_pedantic_cxx_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) include $(top_srcdir)/installcheck.mk libgphoto2-2.5.9/tests/ddb/0000755000175000001440000000000012623156270012474 500000000000000libgphoto2-2.5.9/tests/ddb/test-ddb.c0000644000175000001440000001236612561423352014275 00000000000000/** \file test-ddb.c * \author Copyright (C) 2006 Hans Ulrich Niedermann * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include "ddb-common.h" #include "ddb-txt.tab.h" static int compare_camera_abilities(const CameraAbilities *a, const CameraAbilities *b); CameraAbilitiesList * read_abilities_list(const char *filename); CameraAbilitiesList * read_abilities_list(const char *filename) { CameraAbilitiesList *al = NULL; int retval; if (0!=(retval = gp_abilities_list_new(&al))) { return NULL; } if (0!=(retval = yyparse(filename, al))) { goto error; } return al; error: if (al!=NULL) gp_abilities_list_free(al); return NULL; } static int compare_lists (void) { unsigned int errors = 0; CameraAbilitiesList *ddb = read_abilities_list(NULL); CameraAbilitiesList *clb; unsigned int i, j, n_ddb, n_clb; gp_abilities_list_new(&clb); gp_abilities_list_load(clb, NULL); n_ddb = gp_abilities_list_count(ddb); n_clb = gp_abilities_list_count(clb); fprintf(stderr, "## Comparing ddb with clb ##\n"); for (i=0, j=0; (i 1) { for (i=1; i", al); } } #define CMP_RET_S(cmp_func, field) \ do { \ int retval = cmp_func(a->field, b->field); \ if (retval != 0) { \ fprintf(stderr, " difference in .%s: <<%s>> vs <<%s>>\n", \ #field, a->field, b->field); \ errors++; \ } \ } while (0) #define CMP_RET_UI(cmp_func, field) \ do { \ int retval = cmp_func((unsigned int) (a->field), \ (unsigned int) (b->field)); \ if (retval != 0) { \ fprintf(stderr, " difference in .%s: 0x%x vs 0x%x\n", \ #field, (unsigned int) (a->field), \ (unsigned int) (b->field)); \ errors++; \ } \ } while (0) static int uicmp(unsigned int a, unsigned int b) { if (a < b) return -1; else if (a > b) return 1; else return 0; } static int strcmp_colon(const char *a, const char *b) { unsigned int i = 0; while (1) { if ((a[i] == '\0') && (b[i] == '\0')) return 0; if (a[i] == '\0') return -1; if (b[i] == '\0') return 1; if (a[i] == b[i]) goto next; if (((a[i] == ' ') && (b[i] == ':')) || ((a[i] == ':') && (a[i] == ' '))) goto next; if (a[i] < b[i]) return -1; if (a[i] > b[i]) return 1; fprintf(stderr, "Internal error in strcmp_colon\n"); exit(13); next: ++i; } } static int compare_camera_abilities(const CameraAbilities *a, const CameraAbilities *b) { unsigned int errors = 0; int i; CMP_RET_S(strcmp_colon, model); CMP_RET_S(strcmp, library); /* CMP_RET_S(strcmp, id); */ CMP_RET_UI(uicmp, port); if ((a->port & GP_PORT_SERIAL)) { for (i=0; (a->speed[i] != 0) && (a->speed[i] != 0); i++) { CMP_RET_UI(uicmp, speed[i]); } } CMP_RET_UI(uicmp, operations); CMP_RET_UI(uicmp, file_operations); CMP_RET_UI(uicmp, folder_operations); if ((a->port & GP_PORT_USB)) { CMP_RET_UI(uicmp, usb_vendor); CMP_RET_UI(uicmp, usb_product); CMP_RET_UI(uicmp, usb_class); if (a->usb_class != 0) { CMP_RET_UI(uicmp, usb_subclass); CMP_RET_UI(uicmp, usb_protocol); } } CMP_RET_UI(uicmp, device_type); if (errors == 0) { return 0; } else { fprintf(stderr, "Difference for <<%s>>\n", a->model); return 1; } } libgphoto2-2.5.9/tests/ddb/ddb-common.c0000644000175000001440000000160112561423352014574 00000000000000/** \file ddb-common.y * \author Copyright (C) 2006 Hans Ulrich Niedermann * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "ddb-common.h" YYSTYPE yylval; libgphoto2-2.5.9/tests/ddb/ddb-common.h0000644000175000001440000000425512610415510014601 00000000000000/** \file ddb-common.h * \author Copyright (C) 2006 Hans Ulrich Niedermann * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __DDB_TXT_H__ #define __DDB_TXT_H__ #include #include typedef union { char *str_val; unsigned int ui_val; } symtype; #define YYSTYPE symtype extern int yylineno; void yyerror (const char *filename, CameraAbilitiesList *al, const char *str); int yyparse (const char *filenname, CameraAbilitiesList *al); #define YYLTYPE my_yyltype typedef struct { int lineno; int column; const char *filename; } FilePosition; typedef struct YYLTYPE { FilePosition begin, end; } YYLTYPE; #define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (N) \ { \ (Current).begin.lineno = YYRHSLOC(Rhs, 1).begin.lineno; \ (Current).begin.column = YYRHSLOC(Rhs, 1).begin.column; \ (Current).end.lineno = YYRHSLOC(Rhs, N).end.lineno; \ (Current).end.lineno = YYRHSLOC(Rhs, N).end.column; \ } \ else \ { \ (Current).begin.lineno = (Current).end.lineno = \ YYRHSLOC(Rhs, 0).end.lineno; \ (Current).begin.column = (Current).end.column = \ YYRHSLOC(Rhs, 0).end.column; \ } \ while (0) #define YY_DECL int yylex (void) YY_DECL; /* #define YYLEX_PARAM void */ /* #define YYDEBUG 1 */ extern FILE *yyin; void lexer_reset(const char *_filename); #endif /* !__DDB_TXT_H__ */ libgphoto2-2.5.9/tests/ddb/ddb-txt.y0000644000175000001440000002215712561423352014162 00000000000000/** \file ddb-txt.y * \author Copyright (C) 2006 Hans Ulrich Niedermann * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ %{ #include #include #include #include #include "ddb-common.h" #include "ddb-txt.tab.h" extern char *yytext; char *current_driver = NULL; char *current_device_name = NULL; CameraAbilities ca; unsigned int speed_index = 0; char *alloc_parse_string(char *s); char *error_string = NULL; static void reset_ca(void); #ifdef __GNUC__ #define __unused__ __attribute__((unused)) #else #define __unused__ #endif static int compare_camera_abilities(const CameraAbilities *a, const CameraAbilities *b); %} %defines /* This is supposed to track linenumbers and stuff, but I don't know how to * make it work. */ %locations /* Pure yylex. */ //%pure-parser /* More than "syntax error" */ %error-verbose /* parameters to yyparse() and yyerror() */ %parse-param { char const *file_name }; %parse-param { CameraAbilitiesList *al }; /* parameters to yylex() */ /* %lex-param { CameraAbilitiesList *al }; */ %initial-action { lexer_reset(file_name); yyloc.begin.filename = yyloc.end.filename = file_name; yyloc.begin.column = yyloc.end.column = -1; yyloc.begin.lineno = yyloc.end.lineno = -1; @$.begin.filename = @$.end.filename = file_name; error_string = NULL; }; %token TOK_SEP TOK_COMMA %token TOK_WHITESPACE TOK_NEWLINE %token TOK_NUMBER %token TOK_STRING %token TOK_INTERFACE %token TOK_DRIVER %token TOK_DEVICE %token TOK_BEGIN %token TOK_END %token TOK_SERIAL %token TOK_SPEEDS %token TOK_USB %token TOK_PRODUCT %token TOK_VENDOR %token TOK_CLASS %token TOK_SUBCLASS %token TOK_PROTOCOL %token TOK_DISK %token TOK_PTPIP %token TOK_DEVICE_TYPE %token TOK_DRIVER_STATUS %token TOK_OPERATIONS %token TOK_FILE_OPERATIONS %token TOK_FOLDER_OPERATIONS %token TOK_DRIVER_OPTIONS %token TOK_OPTION %token VAL_FLAG /* %type interface_usb_vendor */ /* %type interface_usb_product */ %start devices %% devices: /* empty */ | devices device ; device: TOK_DEVICE TOK_STRING TOK_BEGIN { current_device_name = alloc_parse_string($2); /* printf("BEGIN_DEVICE <<%s>>\n", current_device_name); */ reset_ca(); strncpy(ca.model, current_device_name, sizeof(ca.model)); ca.model[sizeof(ca.model)-1]='\0'; } device_type driver_definition driver_status operations file_operations folder_operations interfaces driver_options TOK_END { //printf("END_DEVICE <<%s>>\n", current_device_name); free(current_device_name); current_device_name = NULL; if (current_driver != NULL) { free(current_driver); current_driver = NULL; } gp_abilities_list_append(al, ca); } TOK_SEP ; driver_options: /* empty */ | TOK_DRIVER_OPTIONS TOK_BEGIN driver_option_list TOK_END TOK_SEP ; driver_option_list: /* empty */ | driver_option_list driver_option_item ; driver_option_item: TOK_OPTION TOK_STRING TOK_SEP | TOK_OPTION TOK_STRING TOK_STRING TOK_SEP ; device_type: /* empty */ | TOK_DEVICE_TYPE VAL_FLAG TOK_SEP { if (gpi_string_to_enum($2, &ca.device_type, gpi_gphoto_device_type_map)) { error_string = $2; yyerror(file_name, al, "illegal device_type value"); } } ; driver_definition: TOK_DRIVER TOK_STRING TOK_SEP { const char *camlib_env = getenv(CAMLIBDIR_ENV); const char *camlibs = (camlib_env != NULL)?camlib_env:CAMLIBS; current_driver = alloc_parse_string($2); strncpy(ca.library, camlibs, sizeof(ca.library)); strncat(ca.library, "/", sizeof(ca.library)-strlen(ca.library)-1); strncat(ca.library, current_driver, sizeof(ca.library)-strlen(ca.library)-1); ca.library[sizeof(ca.library)-1] = '\0'; //printf(" DRIVER <<%s>>\n", current_driver); } ; driver_status: /* empty */ | TOK_DRIVER_STATUS VAL_FLAG TOK_SEP { if (gpi_string_to_enum($2, &ca.status, gpi_camera_driver_status_map)) { error_string = $2; yyerror(file_name, al, "illegal driver_status value"); } } ; folder_operations: /* empty */ | TOK_FOLDER_OPERATIONS folder_operations_list TOK_SEP ; file_operations: /* empty */ | TOK_FILE_OPERATIONS file_operations_list TOK_SEP ; operations: /* empty */ | TOK_OPERATIONS operations_list TOK_SEP ; folder_operations_list: folder_operations_list TOK_COMMA folder_operation | folder_operation ; file_operations_list: file_operations_list TOK_COMMA file_operation | file_operation ; operations_list: operations_list TOK_COMMA operation | operation ; folder_operation: VAL_FLAG { if (gpi_string_or_to_flags($1, &ca.folder_operations, gpi_folder_operation_map)) { error_string = $1; yyerror(file_name, al, "illegal folder_operation flag"); } } ; file_operation: VAL_FLAG { if (gpi_string_or_to_flags($1, &ca.file_operations, gpi_file_operation_map)) { error_string = $1; yyerror(file_name, al, "illegal file_operation flag"); } } ; operation: VAL_FLAG { if (gpi_string_or_to_flags($1, &ca.operations, gpi_camera_operation_map)) { error_string = $1; yyerror(file_name, al, "illegal operation flag"); } } ; interfaces: /* empty */ | interfaces interface TOK_SEP ; interface: interface_serial | interface_usb | TOK_INTERFACE TOK_DISK { ca.port |= GP_PORT_DISK; } | TOK_INTERFACE TOK_PTPIP { ca.port |= GP_PORT_PTPIP; } ; interface_serial: TOK_INTERFACE TOK_SERIAL { ca.port |= GP_PORT_SERIAL; /* Ideally: Prepare serial entry. */ } TOK_BEGIN interface_serial_internal TOK_END { /* Ideally: Add serial entry to database. */ } ; interface_serial_internal: /* empty */ | TOK_SPEEDS speed_number_list TOK_SEP { if (speed_index < (sizeof(ca.speed)/sizeof(ca.speed[0]))) { ca.speed[speed_index++] = 0; } else { ca.speed[(sizeof(ca.speed)/sizeof(ca.speed[0]))-1] = 0; } } ; speed_number_list: speed_number_list TOK_COMMA speed_list_number | speed_list_number ; speed_list_number: TOK_NUMBER { if (speed_index < (sizeof(ca.speed)/sizeof(ca.speed[0]))) { ca.speed[speed_index++] = $1; } } ; /* FIXME: Make sure that the CameraAbilities usb_* fields are not * overwritten by multiple definitions */ interface_usb: TOK_INTERFACE TOK_USB TOK_BEGIN { ca.port |= GP_PORT_USB; /* Ideally: Prepare USB entry for this camera */ } interface_usb_internal TOK_END { /* Ideally: Commit prepared USB entry to database */ } ; interface_usb_internal: interface_usb_vendprod_optional interface_usb_class_optional ; interface_usb_vendprod_optional: /* empty */ | interface_usb_vendor interface_usb_product ; interface_usb_vendor: TOK_VENDOR TOK_NUMBER TOK_SEP { ca.usb_vendor = $2; } ; interface_usb_product: TOK_PRODUCT TOK_NUMBER TOK_SEP { ca.usb_product = $2; } ; interface_usb_class_optional: /* empty */ | TOK_CLASS TOK_NUMBER TOK_SEP { ca.usb_class = $2; } interface_usb_subclass_optional ; interface_usb_subclass_optional: /* empty */ | TOK_SUBCLASS TOK_NUMBER TOK_SEP { ca.usb_subclass = $2; } interface_usb_protocol_optional ; interface_usb_protocol_optional: /* empty */ | TOK_PROTOCOL TOK_NUMBER TOK_SEP { ca.usb_protocol = $2; } ; %% char *alloc_parse_string(char *s) { if (s[0] == '"') { int len = strlen(s); if (s[len-1] == '"') { char *ret = malloc(len-2+1); strncpy(ret, &s[1], len-2); ret[len-2] = '\0'; free(s); return ret; } else { fprintf(stderr, "Error: string does not end with quote: <<%s>>\n", s); exit(2); } } else { fprintf(stderr, "Error: string does not start with quote: <<%s>>\n", s); exit(2); } } void yyerror(const char *filename, CameraAbilitiesList __unused__ *al, const char *str) { fprintf(stderr, "%s:%d: parse error: %s\n", filename, yylineno, str); fprintf(stderr, "%s:%d- near: `%s'\n", filename, yylineno, yytext); if (NULL != error_string) { fprintf(stderr, "%s:%d- <<%s>>\n", filename, yylineno, error_string); error_string = NULL; } exit(4); } static void reset_ca(void) { memset(&ca, 0, sizeof(ca)); speed_index = 0; /* FIXME: These defaults are of dubious quality. */ ca.usb_subclass = -1; ca.usb_protocol = -1; } libgphoto2-2.5.9/tests/ddb/Makefile.in0000644000175000001440000006020312623156012014454 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = $(am__EXEEXT_1) subdir = tests/ddb ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = check-ddb.sh CONFIG_CLEAN_VPATH_FILES = @ENABLED_GP2DDB_TRUE@am__EXEEXT_1 = test-ddb$(EXEEXT) am__test_ddb_SOURCES_DIST = ddb-txt.tab.c ddb-txt.tab.h ddb-txt.yy.c \ test-ddb.c ddb-common.c ddb-common.h @ENABLED_GP2DDB_TRUE@am__objects_1 = ddb-txt.tab.$(OBJEXT) \ @ENABLED_GP2DDB_TRUE@ ddb-txt.yy.$(OBJEXT) am_test_ddb_OBJECTS = $(am__objects_1) test-ddb.$(OBJEXT) \ ddb-common.$(OBJEXT) test_ddb_OBJECTS = $(am_test_ddb_OBJECTS) am__DEPENDENCIES_1 = test_ddb_DEPENDENCIES = $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/auto-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(test_ddb_SOURCES) DIST_SOURCES = $(am__test_ddb_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/check-ddb.sh.in \ $(top_srcdir)/auto-aux/depcomp \ $(top_srcdir)/auto-aux/mkinstalldirs \ $(top_srcdir)/installcheck.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ @ENABLED_GP2DDB_TRUE@flexbison_PROGRAMS_ = test-ddb @ENABLED_GP2DDB_TRUE@flexbison_check_SCRIPTS_ = check-ddb.sh @ENABLED_GP2DDB_TRUE@flexbison_BUILT_SOURCES_ = ddb-txt.tab.c ddb-txt.tab.h ddb-txt.yy.c @ENABLED_GP2DDB_TRUE@flexbison_CLEANFILES_ = ddb-txt.output check_SCRIPTS = \ $(flexbison_check_SCRIPTS_) EXTRA_DIST = \ README.ddb \ check-ddb.sh.in \ ddb-txt.l \ ddb-txt.y INSTALL_TESTS = $(check_SCRIPTS) # TESTS = $(check_SCRIPTS) BUILT_SOURCES = $(flexbison_BUILT_SOURCES_) CLEANFILES = $(check_SCRIPTS) $(BUILT_SOURCES) $(flexbison_CLEANFILES_) gp2ddb.txt test_ddb_SOURCES = $(flexbison_BUILT_SOURCES_) test-ddb.c ddb-common.c ddb-common.h test_ddb_LDADD = \ -lfl \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/installcheck.mk $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tests/ddb/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign tests/ddb/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/installcheck.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): check-ddb.sh: $(top_builddir)/config.status $(srcdir)/check-ddb.sh.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list test-ddb$(EXEEXT): $(test_ddb_OBJECTS) $(test_ddb_DEPENDENCIES) $(EXTRA_test_ddb_DEPENDENCIES) @rm -f test-ddb$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_ddb_OBJECTS) $(test_ddb_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ddb-common.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ddb-txt.tab.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ddb-txt.yy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-ddb.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile installdirs: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: installcheck-local maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: all check check-am install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool clean-local \ cscopelist-am ctags ctags-am 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-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 installcheck-local installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile ddb-txt.yy.c: ddb-txt.l ddb-txt.tab.h $(FLEX) -o$@ $< ddb-txt.tab.h: ddb-txt.tab.c ddb-txt.tab.c ddb-txt.tab.h: ddb-txt.y $(BISON) -v $< check-ddb.sh: check-ddb.sh.in $(top_builddir)/packaging/generic/print-camera-list test-ddb clean-local: rm -f *.s *.i $(top_builddir)/packaging/generic/print-camera-list: cd $(top_builddir)/packaging/generic && $(MAKE) print-camera-list # FIXME: Only run this if not cross-compiling installcheck-local: $(INSTALL_TESTS) $(INSTALLCHECK_DEPS) @total=0; failed=0; success=0; ignored=0; \ echo "Running \"installcheck\" test cases..."; \ for script in $(INSTALL_TESTS); do \ echo "Test case: $$script"; \ total="$$(expr $$total + 1)"; \ if test -f "./$$script"; then dir="./"; \ elif test -f "$$script"; then dir=""; \ else dir="$(srcdir)/"; fi; \ if $(INSTALL_TESTS_ENVIRONMENT) "$$dir/$$script"; then \ echo "SUCCEEDED: $$script"; \ success="$$(expr $$success + 1)"; \ else \ s="$$?"; \ if test "$$s" = "77"; then \ echo "FAILURE IGNORED (return code $$s): $$script"; \ ignored="$$(expr $$ignored + 1)"; \ else \ echo "FAILED (return code $$s): $$script"; \ failed="$$(expr $$failed + 1)"; \ fi; \ fi; \ done; \ echo "Test summary: $$success succeeded, $$failed failed, $$ignored failures ignored, $$total tests in total."; \ if test "$$failed" -gt 0; then \ echo "Error: One or more \"installcheck\" testcases have failed."; \ exit 1; \ fi # 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. .NOEXPORT: libgphoto2-2.5.9/tests/ddb/Makefile.am0000644000175000001440000000234112561423352014447 00000000000000if ENABLED_GP2DDB flexbison_PROGRAMS_ = test-ddb flexbison_check_SCRIPTS_ = check-ddb.sh flexbison_BUILT_SOURCES_ = ddb-txt.tab.c ddb-txt.tab.h ddb-txt.yy.c flexbison_CLEANFILES_ = ddb-txt.output endif check_PROGRAMS = $(flexbison_PROGRAMS_) check_SCRIPTS = \ $(flexbison_check_SCRIPTS_) EXTRA_DIST = \ README.ddb \ check-ddb.sh.in \ ddb-txt.l \ ddb-txt.y INSTALL_TESTS = $(check_SCRIPTS) # TESTS = $(check_SCRIPTS) BUILT_SOURCES = $(flexbison_BUILT_SOURCES_) CLEANFILES = $(check_SCRIPTS) $(BUILT_SOURCES) $(flexbison_CLEANFILES_) gp2ddb.txt test_ddb_SOURCES = $(flexbison_BUILT_SOURCES_) test-ddb.c ddb-common.c ddb-common.h test_ddb_LDADD = \ -lfl \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ $(INTLLIBS) ddb-txt.yy.c: ddb-txt.l ddb-txt.tab.h $(FLEX) -o$@ $< ddb-txt.tab.h: ddb-txt.tab.c ddb-txt.tab.c ddb-txt.tab.h: ddb-txt.y $(BISON) -v $< check-ddb.sh: check-ddb.sh.in $(top_builddir)/packaging/generic/print-camera-list test-ddb clean-local: rm -f *.s *.i $(top_builddir)/packaging/generic/print-camera-list: cd $(top_builddir)/packaging/generic && $(MAKE) print-camera-list include $(top_srcdir)/installcheck.mk libgphoto2-2.5.9/tests/ddb/ddb-txt.tab.c0000644000175000001440000017061412604174244014704 00000000000000/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 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, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Copy the first part of user declarations. */ #line 23 "ddb-txt.y" /* yacc.c:339 */ #include #include #include #include #include "ddb-common.h" #include "ddb-txt.tab.h" extern char *yytext; char *current_driver = NULL; char *current_device_name = NULL; CameraAbilities ca; unsigned int speed_index = 0; char *alloc_parse_string(char *s); char *error_string = NULL; static void reset_ca(void); #ifdef __GNUC__ #define __unused__ __attribute__((unused)) #else #define __unused__ #endif static int compare_camera_abilities(const CameraAbilities *a, const CameraAbilities *b); #line 106 "ddb-txt.tab.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 1 #endif /* In a future release of Bison, this section will be replaced by #include "ddb-txt.tab.h". */ #ifndef YY_YY_DDB_TXT_TAB_H_INCLUDED # define YY_YY_DDB_TXT_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { TOK_SEP = 258, TOK_COMMA = 259, TOK_WHITESPACE = 260, TOK_NEWLINE = 261, TOK_NUMBER = 262, TOK_STRING = 263, TOK_INTERFACE = 264, TOK_DRIVER = 265, TOK_DEVICE = 266, TOK_BEGIN = 267, TOK_END = 268, TOK_SERIAL = 269, TOK_SPEEDS = 270, TOK_USB = 271, TOK_PRODUCT = 272, TOK_VENDOR = 273, TOK_CLASS = 274, TOK_SUBCLASS = 275, TOK_PROTOCOL = 276, TOK_DISK = 277, TOK_PTPIP = 278, TOK_DEVICE_TYPE = 279, TOK_DRIVER_STATUS = 280, TOK_OPERATIONS = 281, TOK_FILE_OPERATIONS = 282, TOK_FOLDER_OPERATIONS = 283, TOK_DRIVER_OPTIONS = 284, TOK_OPTION = 285, VAL_FLAG = 286 }; #endif /* Value type. */ /* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED typedef struct YYLTYPE YYLTYPE; struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; }; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif extern YYSTYPE yylval; extern YYLTYPE yylloc; int yyparse (char const *file_name, CameraAbilitiesList *al); #endif /* !YY_YY_DDB_TXT_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ #line 198 "ddb-txt.tab.c" /* yacc.c:358 */ #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #else typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef YY_ATTRIBUTE # if (defined __GNUC__ \ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C # define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else # define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif #ifndef YY_ATTRIBUTE_PURE # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) #endif #ifndef YY_ATTRIBUTE_UNUSED # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif #if !defined _Noreturn \ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) # if defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) #else # define YYUSE(E) /* empty */ #endif #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; YYLTYPE yyls_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + 2 * YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 76 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 32 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 38 /* YYNRULES -- Number of rules. */ #define YYNRULES 60 /* YYNSTATES -- Number of states. */ #define YYNSTATES 107 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 286 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 135, 135, 137, 142, 158, 141, 169, 171, 176, 178, 182, 183, 186, 188, 200, 213, 215, 226, 228, 231, 233, 236, 238, 242, 243, 247, 248, 252, 253, 257, 269, 281, 293, 295, 299, 300, 301, 304, 311, 310, 323, 325, 336, 337, 341, 356, 354, 368, 372, 374, 379, 386, 392, 395, 394, 401, 404, 403, 410, 412 }; #endif #if YYDEBUG || YYERROR_VERBOSE || 1 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "TOK_SEP", "TOK_COMMA", "TOK_WHITESPACE", "TOK_NEWLINE", "TOK_NUMBER", "TOK_STRING", "TOK_INTERFACE", "TOK_DRIVER", "TOK_DEVICE", "TOK_BEGIN", "TOK_END", "TOK_SERIAL", "TOK_SPEEDS", "TOK_USB", "TOK_PRODUCT", "TOK_VENDOR", "TOK_CLASS", "TOK_SUBCLASS", "TOK_PROTOCOL", "TOK_DISK", "TOK_PTPIP", "TOK_DEVICE_TYPE", "TOK_DRIVER_STATUS", "TOK_OPERATIONS", "TOK_FILE_OPERATIONS", "TOK_FOLDER_OPERATIONS", "TOK_DRIVER_OPTIONS", "TOK_OPTION", "VAL_FLAG", "$accept", "devices", "device", "$@1", "$@2", "driver_options", "driver_option_list", "driver_option_item", "device_type", "driver_definition", "driver_status", "folder_operations", "file_operations", "operations", "folder_operations_list", "file_operations_list", "operations_list", "folder_operation", "file_operation", "operation", "interfaces", "interface", "interface_serial", "$@3", "interface_serial_internal", "speed_number_list", "speed_list_number", "interface_usb", "$@4", "interface_usb_internal", "interface_usb_vendprod_optional", "interface_usb_vendor", "interface_usb_product", "interface_usb_class_optional", "$@5", "interface_usb_subclass_optional", "$@6", "interface_usb_protocol_optional", YY_NULLPTR }; #endif # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286 }; # endif #define YYPACT_NINF -25 #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-25))) #define YYTABLE_NINF -1 #define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int8 yypact[] = { -25, 2, -25, 0, -25, -2, -25, -5, -8, 14, 22, 19, 4, -25, 23, -3, 5, -25, 27, 6, 7, -25, -25, 3, -25, 8, 10, -25, 6, -25, 11, -25, 9, -25, -25, -25, 8, -25, 13, -25, -9, -25, -25, 9, -11, 20, 28, 30, -25, -25, -25, -25, 24, -25, -25, -25, -25, -25, 31, -25, -12, 32, 29, 33, 39, 37, -25, -25, 40, 35, 42, 41, 34, 38, -25, 1, -25, 18, -25, -25, 43, -25, 45, -25, 49, -25, -25, 47, -25, 40, -25, 54, 55, -25, -25, -25, -25, 44, 52, -25, 57, -25, 46, 56, -25, 58, -25 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 2, 0, 1, 0, 3, 0, 4, 13, 0, 0, 0, 0, 16, 14, 0, 0, 22, 15, 0, 0, 20, 17, 32, 0, 29, 0, 18, 23, 0, 31, 0, 27, 0, 33, 28, 21, 0, 30, 0, 25, 7, 26, 19, 0, 0, 0, 0, 0, 35, 36, 24, 39, 0, 37, 38, 9, 5, 34, 0, 46, 0, 0, 41, 49, 0, 0, 10, 6, 0, 0, 0, 0, 53, 0, 8, 0, 45, 0, 44, 40, 0, 47, 0, 48, 0, 50, 11, 0, 42, 0, 51, 0, 0, 12, 43, 54, 52, 56, 0, 55, 0, 57, 59, 0, 58, 0, 60 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, 25, 26, 48, -25, -25, -25, -25, -25, -25, -24, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, -25 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { -1, 1, 4, 7, 61, 46, 60, 66, 9, 12, 16, 33, 26, 20, 38, 30, 23, 39, 31, 24, 40, 47, 48, 58, 69, 77, 78, 49, 63, 71, 72, 73, 85, 83, 97, 99, 102, 104 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint8 yytable[] = { 44, 64, 2, 51, 86, 52, 27, 28, 5, 87, 6, 53, 54, 3, 35, 36, 42, 43, 65, 8, 45, 88, 89, 10, 11, 13, 17, 14, 18, 15, 21, 19, 55, 57, 25, 67, 59, 22, 32, 29, 37, 56, 74, 62, 68, 75, 90, 76, 79, 80, 93, 70, 91, 82, 81, 84, 92, 95, 96, 100, 101, 106, 41, 105, 98, 94, 0, 103, 50, 0, 0, 0, 0, 0, 0, 0, 34 }; static const yytype_int8 yycheck[] = { 9, 13, 0, 14, 3, 16, 3, 4, 8, 8, 12, 22, 23, 11, 3, 4, 3, 4, 30, 24, 29, 3, 4, 31, 10, 3, 3, 8, 31, 25, 3, 26, 12, 3, 27, 3, 12, 31, 28, 31, 31, 13, 3, 12, 15, 8, 3, 7, 13, 7, 3, 18, 7, 19, 13, 17, 7, 3, 3, 7, 3, 3, 36, 7, 20, 89, -1, 21, 43, -1, -1, -1, -1, -1, -1, -1, 28 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 33, 0, 11, 34, 8, 12, 35, 24, 40, 31, 10, 41, 3, 8, 25, 42, 3, 31, 26, 45, 3, 31, 48, 51, 27, 44, 3, 4, 31, 47, 50, 28, 43, 51, 3, 4, 31, 46, 49, 52, 50, 3, 4, 9, 29, 37, 53, 54, 59, 49, 14, 16, 22, 23, 12, 13, 3, 55, 12, 38, 36, 12, 60, 13, 30, 39, 3, 15, 56, 18, 61, 62, 63, 3, 8, 7, 57, 58, 13, 7, 13, 19, 65, 17, 64, 3, 8, 3, 4, 3, 7, 7, 3, 58, 3, 3, 66, 20, 67, 7, 3, 68, 21, 69, 7, 3 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 32, 33, 33, 35, 36, 34, 37, 37, 38, 38, 39, 39, 40, 40, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 50, 51, 52, 52, 53, 53, 53, 53, 55, 54, 56, 56, 57, 57, 58, 60, 59, 61, 62, 62, 63, 64, 65, 66, 65, 67, 68, 67, 69, 69 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 0, 0, 15, 0, 5, 0, 2, 3, 4, 0, 3, 3, 0, 3, 0, 3, 0, 3, 0, 3, 3, 1, 3, 1, 3, 1, 1, 1, 1, 0, 3, 1, 1, 2, 2, 0, 6, 0, 3, 3, 1, 1, 0, 6, 2, 0, 2, 3, 3, 0, 0, 5, 0, 0, 5, 0, 3 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (file_name, al, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (N) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (0) #endif #define YYRHSLOC(Rhs, K) ((Rhs)[K]) /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (0) /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ YY_ATTRIBUTE_UNUSED static unsigned yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) { unsigned res = 0; int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; if (0 <= yylocp->first_line) { res += YYFPRINTF (yyo, "%d", yylocp->first_line); if (0 <= yylocp->first_column) res += YYFPRINTF (yyo, ".%d", yylocp->first_column); } if (0 <= yylocp->last_line) { if (yylocp->first_line < yylocp->last_line) { res += YYFPRINTF (yyo, "-%d", yylocp->last_line); if (0 <= end_col) res += YYFPRINTF (yyo, ".%d", end_col); } else if (0 <= end_col && yylocp->first_column < end_col) res += YYFPRINTF (yyo, "-%d", end_col); } return res; } # define YY_LOCATION_PRINT(File, Loc) \ yy_location_print_ (File, &(Loc)) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value, Location, file_name, al); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*----------------------------------------. | Print this symbol's value on YYOUTPUT. | `----------------------------------------*/ static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, char const *file_name, CameraAbilitiesList *al) { FILE *yyo = yyoutput; YYUSE (yyo); YYUSE (yylocationp); YYUSE (file_name); YYUSE (al); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, char const *file_name, CameraAbilitiesList *al) { YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); YY_LOCATION_PRINT (yyoutput, *yylocationp); YYFPRINTF (yyoutput, ": "); yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, file_name, al); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule, char const *file_name, CameraAbilitiesList *al) { unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], &(yyvsp[(yyi + 1) - (yynrhs)]) , &(yylsp[(yyi + 1) - (yynrhs)]) , file_name, al); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, yylsp, Rule, file_name, al); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ static YYSIZE_T yystrlen (const char *yystr) { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ static char * yystpcpy (char *yydest, const char *yysrc) { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per "expected"). */ int yycount = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR && !yytable_value_is_error (yytable[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; break; } yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } } } } switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ } { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return 1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyformat += 2; } else { yyp++; yyformat++; } } return 0; } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, char const *file_name, CameraAbilitiesList *al) { YYUSE (yyvaluep); YYUSE (yylocationp); YYUSE (file_name); YYUSE (al); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); YY_IGNORE_MAYBE_UNINITIALIZED_END } /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Location data for the lookahead symbol. */ YYLTYPE yylloc # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL = { 1, 1, 1, 1 } # endif ; /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ int yyparse (char const *file_name, CameraAbilitiesList *al) { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: 'yyss': related to states. 'yyvs': related to semantic values. 'yyls': related to locations. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; /* The location stack. */ YYLTYPE yylsa[YYINITDEPTH]; YYLTYPE *yyls; YYLTYPE *yylsp; /* The locations where the error started and ended. */ YYLTYPE yyerror_range[3]; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; YYLTYPE yyloc; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yyssp = yyss = yyssa; yyvsp = yyvs = yyvsa; yylsp = yyls = yylsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* User initialization code. */ #line 83 "ddb-txt.y" /* yacc.c:1429 */ { lexer_reset(file_name); yyloc.begin.filename = yyloc.end.filename = file_name; yyloc.begin.column = yyloc.end.column = -1; yyloc.begin.lineno = yyloc.end.lineno = -1; yylloc.begin.filename = yylloc.end.filename = file_name; error_string = NULL; } #line 1277 "ddb-txt.tab.c" /* yacc.c:1429 */ yylsp[0] = yylloc; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; YYLTYPE *yyls1 = yyls; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yyls1, yysize * sizeof (*yylsp), &yystacksize); yyls = yyls1; yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); YYSTACK_RELOCATE (yyls_alloc, yyls); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = yylex (); } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END *++yylsp = yylloc; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; /* Default location. */ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); YY_REDUCE_PRINT (yyn); switch (yyn) { case 4: #line 142 "ddb-txt.y" /* yacc.c:1646 */ { current_device_name = alloc_parse_string((yyvsp[-1].str_val)); /* printf("BEGIN_DEVICE <<%s>>\n", current_device_name); */ reset_ca(); strncpy(ca.model, current_device_name, sizeof(ca.model)); ca.model[sizeof(ca.model)-1]='\0'; } #line 1472 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 5: #line 158 "ddb-txt.y" /* yacc.c:1646 */ { //printf("END_DEVICE <<%s>>\n", current_device_name); free(current_device_name); current_device_name = NULL; if (current_driver != NULL) { free(current_driver); current_driver = NULL; } gp_abilities_list_append(al, ca); } #line 1485 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 14: #line 189 "ddb-txt.y" /* yacc.c:1646 */ { if (gpi_string_to_enum((yyvsp[-1].str_val), &ca.device_type, gpi_gphoto_device_type_map)) { error_string = (yyvsp[-1].str_val); yyerror(file_name, al, "illegal device_type value"); } } #line 1498 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 15: #line 201 "ddb-txt.y" /* yacc.c:1646 */ { const char *camlib_env = getenv(CAMLIBDIR_ENV); const char *camlibs = (camlib_env != NULL)?camlib_env:CAMLIBS; current_driver = alloc_parse_string((yyvsp[-1].str_val)); strncpy(ca.library, camlibs, sizeof(ca.library)); strncat(ca.library, "/", sizeof(ca.library)-strlen(ca.library)-1); strncat(ca.library, current_driver, sizeof(ca.library)-strlen(ca.library)-1); ca.library[sizeof(ca.library)-1] = '\0'; //printf(" DRIVER <<%s>>\n", current_driver); } #line 1513 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 17: #line 216 "ddb-txt.y" /* yacc.c:1646 */ { if (gpi_string_to_enum((yyvsp[-1].str_val), &ca.status, gpi_camera_driver_status_map)) { error_string = (yyvsp[-1].str_val); yyerror(file_name, al, "illegal driver_status value"); } } #line 1526 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 30: #line 258 "ddb-txt.y" /* yacc.c:1646 */ { if (gpi_string_or_to_flags((yyvsp[0].str_val), &ca.folder_operations, gpi_folder_operation_map)) { error_string = (yyvsp[0].str_val); yyerror(file_name, al, "illegal folder_operation flag"); } } #line 1539 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 31: #line 270 "ddb-txt.y" /* yacc.c:1646 */ { if (gpi_string_or_to_flags((yyvsp[0].str_val), &ca.file_operations, gpi_file_operation_map)) { error_string = (yyvsp[0].str_val); yyerror(file_name, al, "illegal file_operation flag"); } } #line 1552 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 32: #line 282 "ddb-txt.y" /* yacc.c:1646 */ { if (gpi_string_or_to_flags((yyvsp[0].str_val), &ca.operations, gpi_camera_operation_map)) { error_string = (yyvsp[0].str_val); yyerror(file_name, al, "illegal operation flag"); } } #line 1566 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 37: #line 301 "ddb-txt.y" /* yacc.c:1646 */ { ca.port |= GP_PORT_DISK; } #line 1574 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 38: #line 304 "ddb-txt.y" /* yacc.c:1646 */ { ca.port |= GP_PORT_PTPIP; } #line 1582 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 39: #line 311 "ddb-txt.y" /* yacc.c:1646 */ { ca.port |= GP_PORT_SERIAL; /* Ideally: Prepare serial entry. */ } #line 1591 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 40: #line 318 "ddb-txt.y" /* yacc.c:1646 */ { /* Ideally: Add serial entry to database. */ } #line 1599 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 42: #line 326 "ddb-txt.y" /* yacc.c:1646 */ { if (speed_index < (sizeof(ca.speed)/sizeof(ca.speed[0]))) { ca.speed[speed_index++] = 0; } else { ca.speed[(sizeof(ca.speed)/sizeof(ca.speed[0]))-1] = 0; } } #line 1611 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 45: #line 342 "ddb-txt.y" /* yacc.c:1646 */ { if (speed_index < (sizeof(ca.speed)/sizeof(ca.speed[0]))) { ca.speed[speed_index++] = (yyvsp[0].ui_val); } } #line 1621 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 46: #line 356 "ddb-txt.y" /* yacc.c:1646 */ { ca.port |= GP_PORT_USB; /* Ideally: Prepare USB entry for this camera */ } #line 1630 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 47: #line 362 "ddb-txt.y" /* yacc.c:1646 */ { /* Ideally: Commit prepared USB entry to database */ } #line 1638 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 51: #line 380 "ddb-txt.y" /* yacc.c:1646 */ { ca.usb_vendor = (yyvsp[-1].ui_val); } #line 1646 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 52: #line 387 "ddb-txt.y" /* yacc.c:1646 */ { ca.usb_product = (yyvsp[-1].ui_val); } #line 1654 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 54: #line 395 "ddb-txt.y" /* yacc.c:1646 */ { ca.usb_class = (yyvsp[-1].ui_val); } #line 1662 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 57: #line 404 "ddb-txt.y" /* yacc.c:1646 */ { ca.usb_subclass = (yyvsp[-1].ui_val); } #line 1670 "ddb-txt.tab.c" /* yacc.c:1646 */ break; case 60: #line 413 "ddb-txt.y" /* yacc.c:1646 */ { ca.usb_protocol = (yyvsp[-1].ui_val); } #line 1678 "ddb-txt.tab.c" /* yacc.c:1646 */ break; #line 1682 "ddb-txt.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; *++yylsp = yyloc; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (file_name, al, YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) { char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = YYSYNTAX_ERROR; if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == 1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = 2; } else { yysyntax_error_status = YYSYNTAX_ERROR; yymsgp = yymsg; } } yyerror (file_name, al, yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } yyerror_range[1] = yylloc; if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, &yylloc, file_name, al); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; yyerror_range[1] = yylsp[1-yylen]; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yyerror_range[1] = *yylsp; yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp, file_name, al); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END yyerror_range[2] = yylloc; /* Using YYLLOC is tempting, but would change the location of the lookahead. YYLOC is available though. */ YYLLOC_DEFAULT (yyloc, yyerror_range, 2); *++yylsp = yyloc; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (file_name, al, YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc, file_name, al); } /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp, yylsp, file_name, al); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif return yyresult; } #line 418 "ddb-txt.y" /* yacc.c:1906 */ char *alloc_parse_string(char *s) { if (s[0] == '"') { int len = strlen(s); if (s[len-1] == '"') { char *ret = malloc(len-2+1); strncpy(ret, &s[1], len-2); ret[len-2] = '\0'; free(s); return ret; } else { fprintf(stderr, "Error: string does not end with quote: <<%s>>\n", s); exit(2); } } else { fprintf(stderr, "Error: string does not start with quote: <<%s>>\n", s); exit(2); } } void yyerror(const char *filename, CameraAbilitiesList __unused__ *al, const char *str) { fprintf(stderr, "%s:%d: parse error: %s\n", filename, yylineno, str); fprintf(stderr, "%s:%d- near: `%s'\n", filename, yylineno, yytext); if (NULL != error_string) { fprintf(stderr, "%s:%d- <<%s>>\n", filename, yylineno, error_string); error_string = NULL; } exit(4); } static void reset_ca(void) { memset(&ca, 0, sizeof(ca)); speed_index = 0; /* FIXME: These defaults are of dubious quality. */ ca.usb_subclass = -1; ca.usb_protocol = -1; } libgphoto2-2.5.9/tests/ddb/README.ddb0000644000175000001440000001303212561423352014022 00000000000000======================================================================== The gphoto2 device database (gp2ddb) ======================================================================== Important: This is a prototype the developers can play with. The final version will probably look much different, so don't invest too much in it (yet). References: [1] http://article.gmane.org/gmane.comp.multimedia.gphoto.devel/2262 Hubert's posting from 2006-01-01 proposing storage in XML. Note: We try to talk of "devices" and "drivers" instead of "cameras" and "camlibs" since we also support digital audio players. ============================================= The idea ======== * Maintain a device database (DDB) of cameras (and audio players), their abilities etc. independently from the libgphoto2 drivers. * Updates to the database are much easier to publish than updates to the drivers which need to be compiled. * libgphoto2 uses the DDB to find out which driver to load for a given device. * drivers use the DDB to read special driver specific information on that device. * Other software (HAL, udev, hotplug, etc.) is served by converters from DDB. ============================================= The implementation ================== * A flex/bison based parser for text based config. * The specific details of the text format is not completely ironed out yet. * It is possible to use some HAL device database instead, but do we really want to require HAL/XML/...? Depends whether we target embedded or desktop environments. * print-camera-list prints the current config in the new format (minus driver internal settings ?) * driver specific settings can be accommodated using the driver_options { ... }; section. * The binary code (stripped) for the test case is about 22KByte. I suppose we could implement this database in about 35 to 40 KByte. However, we can probably get rid of some code in the drivers to compensate. For comparison: * The current libgphoto2.so is about 120 KByte stripped. * libxml2.so is 1.2MB (stripped). ============================================= The testcase ============ * The testcase check-ddb.sh checks that the CameraAbilitiesList read from the text database is the same one read from the drivers via gp_abilities_list_load() - for all 700something cameras. ============================================= How to test it ============== * Add --enable-gp2ddb to your ./configure parameters. * Run "make check". * Have a look into tests/ddb/. ============================================= TODO ==== What would need to be done to go into production with this: * Find a way to integrate the gphoto2 DDB with the HAL device database, possibly using a sub/superset of the HAL device database. However, HAL does its stuff in XML, and we probably don't want libgphoto2 to depend on an XML parser. * Add driver specific parameters to DDB. * Rewrite gp_abilities_list_load() to read the data currently stored in the CameryAbilities records and all driver specific information from the DDB. This should probably use a caching approach, i.e. it should check the mtime of (the files in) /etc/libgphoto2.d/ and compare that to the mtime of a binary cache file in ~/.gphoto/ddb-cache. The compiler which creates this cache file needs to be embedded in libgphoto2 itself (so that libgphoto2 can "just work") but should also be available as a separate tool for embedded use cases. These embedded systems could then compile the ddb-cache at build time, just read in the cache, and not ship the parser/compiler at all. Another possibility would be to statically compile the binary version of the database into libgphoto2 for small-footprint applications. * Rewrite all drivers to read their device specific parameters from the new CameraAbilities record. * Maintain binary compatibility for applications. * Administration utilities convert the DDB to something HAL, udev, and other similar hotplug-device-management systems use to figure out the device type, what program to launch to handle such devices, and how to set up permissions. This is partly done in print-camera-list. * Administration utilities to maintain the DDB in the face of - updates from the gphoto project - updates by the user - update by third parties One solution to the problem could be a directory structure like /etc/libgphoto2.d/camlib-agfa.ddb # the devices from the agfa camlib /etc/libgphoto2.d/camlib-canon.ddb # the devices from the canon camlib /etc/libgphoto2.d/camlib-ptp2.ddb # the devices from the ptp2 camlib /etc/libgphoto2.d/foo.ddb # devices the user got from somewhere /etc/libgphoto2.d/bar.ddb # devices the user got from somewhere * Check whether there wouldn't be an XML parsing library with a much smaller footprint than the 1.2MB of libxml2. * The DDB device names should be Unicode strings. * There must be structured information on device names, e.g. the vendor must be readable without parsing strings. * Store other device information in the DDB which may be of interest for a libgphoto2 frontend, e.g. - thumbnail images of the devices themselves. - camera features like capture modes, can delete single files, can delete all files, can mark downloaded files, can upload files ======================================================================== End of file README.ddb. ======================================================================== libgphoto2-2.5.9/tests/ddb/ddb-txt.l0000644000175000001440000000716412561423352014146 00000000000000/** \file ddb-txt.l * \author Copyright (C) 2006 Hans Ulrich Niedermann * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ %option nounput %option noyywrap %option yylineno %option nobackup %{ #include #include #define _GNU_SOURCE #include #include "ddb-common.h" #include "ddb-txt.tab.h" //#if !(YYDEBUG) # define ECHO do {} while (0) //#endif extern char *strndup(const char *s, size_t n); static char *filename = NULL; YYSTYPE yylval = { str_val: NULL }; static void lexer_error(const char *msg); %} %% \#.*$ { /* ignore comment */ } "interface" { ECHO; return TOK_INTERFACE; } "{" { ECHO; return TOK_BEGIN; } "driver" { ECHO; return TOK_DRIVER; } "device" { ECHO; return TOK_DEVICE; } "}" { ECHO; return TOK_END; } "serial" { ECHO; return TOK_SERIAL; } "usb" { ECHO; return TOK_USB; } "disk" { ECHO; return TOK_DISK; } "ptpip" { ECHO; return TOK_PTPIP; } "class" { ECHO; return TOK_CLASS; } "subclass" { ECHO; return TOK_SUBCLASS; } "protocol" { ECHO; return TOK_PROTOCOL; } "vendor" { ECHO; return TOK_VENDOR; } "product" { ECHO; return TOK_PRODUCT; } "speeds" { ECHO; return TOK_SPEEDS; } "operations" { ECHO; return TOK_OPERATIONS; } "driver_options" { ECHO; return TOK_DRIVER_OPTIONS; } "option" { ECHO; return TOK_OPTION; } "file_operations" { ECHO; return TOK_FILE_OPERATIONS; } "folder_operations" { ECHO; return TOK_FOLDER_OPERATIONS; } "driver_status" { ECHO; return TOK_DRIVER_STATUS; } "device_type" { ECHO; return TOK_DEVICE_TYPE; } ("none"|"config"|"capture_image"|"capture_video"|"capture_audio"|"capture_preview"|"delete"|"preview"|"raw"|"audio"|"exif"|"delete_all"|"put_file"|"make_dir"|"remove_dir"|"production"|"testing"|"experimental"|"deprecated"|"still_camera"|"audio_player") { ECHO; yylval.str_val = strndup(yytext, yyleng); return VAL_FLAG; } ";" { ECHO; return TOK_SEP; } "," { ECHO; return TOK_COMMA; } \"[A-Za-z0-9\.\+\-<>\|_/()!:,;=\\\$\'@&%\{\}\[\]+#~\* ]+\" { ECHO; yylval.str_val = strndup(yytext, yyleng); return TOK_STRING; } (0x)?[0-9a-fA-F]+ {ECHO; yylval.ui_val = strtoul(yytext, NULL, 0); if ((ERANGE == errno) && (ULONG_MAX == yylval.ui_val)) { lexer_error("Number out of range"); } else if (EINVAL == errno) { lexer_error("Invalid number"); } return TOK_NUMBER; } \n { ECHO; /* ignore newlines */ } [ \t\r]+ { ECHO; /* ignore whitespace */ } . { static char msg[] = "unexpected character (in string?) '?'"; msg[strlen(msg)-2] = yytext[0]; lexer_error(msg); } %% void lexer_reset(const char *_filename) { filename = (char *) _filename; } static void lexer_error(const char *msg) { fprintf(stderr, "%s:%d: lexer error: %s\n", filename, yylineno, msg); exit(4); } libgphoto2-2.5.9/tests/ddb/ddb-txt.tab.h0000644000175000001440000000553712604174244014712 00000000000000/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 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, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY_YY_DDB_TXT_TAB_H_INCLUDED # define YY_YY_DDB_TXT_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { TOK_SEP = 258, TOK_COMMA = 259, TOK_WHITESPACE = 260, TOK_NEWLINE = 261, TOK_NUMBER = 262, TOK_STRING = 263, TOK_INTERFACE = 264, TOK_DRIVER = 265, TOK_DEVICE = 266, TOK_BEGIN = 267, TOK_END = 268, TOK_SERIAL = 269, TOK_SPEEDS = 270, TOK_USB = 271, TOK_PRODUCT = 272, TOK_VENDOR = 273, TOK_CLASS = 274, TOK_SUBCLASS = 275, TOK_PROTOCOL = 276, TOK_DISK = 277, TOK_PTPIP = 278, TOK_DEVICE_TYPE = 279, TOK_DRIVER_STATUS = 280, TOK_OPERATIONS = 281, TOK_FILE_OPERATIONS = 282, TOK_FOLDER_OPERATIONS = 283, TOK_DRIVER_OPTIONS = 284, TOK_OPTION = 285, VAL_FLAG = 286 }; #endif /* Value type. */ /* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED typedef struct YYLTYPE YYLTYPE; struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; }; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif extern YYSTYPE yylval; extern YYLTYPE yylloc; int yyparse (char const *file_name, CameraAbilitiesList *al); #endif /* !YY_YY_DDB_TXT_TAB_H_INCLUDED */ libgphoto2-2.5.9/tests/ddb/check-ddb.sh.in0000644000175000001440000000202612561423352015160 00000000000000#!/bin/sh # "make installcheck" testcase: # Compares camera list printed by by print-camera-list and parsed by #test-ddb with the camera list from gp_abilities_list_load(). # Fails if differences are found. set -ex debug=: #debug=false PACKAGE_TARNAME="${PACKAGE_TARNAME-"@PACKAGE_TARNAME@"}" prefix="${prefix-"@prefix@"}" exec_prefix="${exec_prefix-"@exec_prefix@"}" libdir="${libdir-"@libdir@"}" libexecdir="${libexecdir-"@libexecdir@"}" camlibdir="${camlibdir-"@camlibdir@"}" utilsdir="${utilsdir-"@utilsdir@"}" CAMLIBS="${DESTDIR}${camlibdir}" export CAMLIBS LD_LIBRARY_PATH="${DESTDIR}/${libdir}${LD_LIBRARY_PATH+:${LD_LIBRARY_PATH}}" export LD_LIBRARY_PATH if "$debug"; then echo "=====================" pwd echo "camlibdir=$camlibdir" echo "libdir=$libdir" echo "utilsdir=$utilsdir" echo "DESTDIR=$DESTDIR" echo "CAMLIBS=$CAMLIBS" echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" echo "#####################" fi ${DESTDIR}${utilsdir}/print-camera-list gp2ddb > gp2ddb.txt ./test-ddb --compare < gp2ddb.txt libgphoto2-2.5.9/tests/ddb/ddb-txt.yy.c0000644000175000001440000016204012604174244014571 00000000000000#line 2 "ddb-txt.yy.c" #line 4 "ddb-txt.yy.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 37 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart(yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires * access to the local variable yy_act. Since yyless() is a macro, it would break * existing scanners that call yyless() from OUTSIDE yylex. * One obvious solution it to make yy_act a global. I tried that, and saw * a 5% performance hit in a non-yylineno scanner, because yy_act is * normally declared as a register variable-- so it is not worth it. */ #define YY_LESS_LINENO(n) \ do { \ int yyl;\ for ( yyl = n; yyl < yyleng; ++yyl )\ if ( yytext[yyl] == '\n' )\ --yylineno;\ }while(0) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart (FILE *input_file ); void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); void yy_delete_buffer (YY_BUFFER_STATE b ); void yy_flush_buffer (YY_BUFFER_STATE b ); void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); void yypop_buffer_state (void ); static void yyensure_buffer_stack (void ); static void yy_load_buffer_state (void ); static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); void yyfree (void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define yywrap() 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; extern int yylineno; int yylineno = 1; extern char *yytext; #define yytext_ptr yytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 32 #define YY_END_OF_BUFFER 33 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[273] = { 0, 0, 0, 33, 31, 30, 29, 31, 31, 26, 28, 28, 25, 28, 28, 28, 28, 28, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 3, 6, 30, 0, 0, 1, 28, 0, 0, 28, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 5, 4, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 7, 16, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 18, 0, 0, 20, 0, 0, 21, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 6, 7, 5, 5, 5, 5, 5, 5, 5, 5, 8, 5, 5, 5, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 5, 11, 5, 5, 5, 1, 5, 10, 10, 10, 10, 10, 10, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 12, 1, 13, 14, 15, 16, 17, 18, 19, 5, 20, 5, 21, 22, 23, 24, 25, 26, 5, 27, 28, 29, 30, 31, 32, 33, 34, 5, 35, 5, 36, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int32_t yy_meta[37] = { 0, 1, 1, 1, 2, 2, 1, 2, 2, 3, 3, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2 } ; static yyconst flex_int16_t yy_base[276] = { 0, 0, 0, 312, 313, 35, 313, 0, 308, 313, 277, 276, 313, 8, 27, 26, 275, 22, 283, 293, 280, 278, 21, 41, 39, 286, 274, 284, 313, 313, 59, 294, 296, 313, 265, 264, 280, 31, 282, 270, 40, 265, 272, 47, 269, 268, 260, 267, 263, 53, 55, 260, 256, 252, 260, 255, 264, 260, 265, 250, 263, 252, 313, 255, 245, 245, 254, 254, 243, 249, 247, 236, 248, 248, 247, 247, 245, 244, 243, 232, 238, 226, 58, 236, 243, 313, 229, 233, 235, 229, 235, 220, 313, 232, 222, 216, 217, 224, 214, 225, 226, 313, 223, 212, 226, 220, 209, 223, 221, 208, 212, 201, 205, 203, 210, 196, 213, 209, 202, 201, 202, 196, 208, 192, 313, 199, 200, 201, 198, 187, 193, 187, 184, 192, 193, 179, 183, 189, 190, 189, 313, 183, 185, 179, 172, 187, 185, 173, 169, 169, 177, 181, 179, 179, 178, 166, 162, 175, 173, 165, 164, 313, 151, 153, 156, 158, 167, 313, 313, 163, 149, 157, 313, 153, 162, 160, 143, 142, 50, 153, 152, 143, 152, 139, 140, 144, 141, 145, 145, 147, 131, 145, 63, 135, 139, 121, 128, 124, 128, 124, 124, 132, 124, 122, 313, 126, 122, 313, 110, 113, 119, 114, 120, 117, 122, 111, 107, 122, 105, 120, 115, 313, 103, 106, 102, 111, 110, 110, 112, 107, 107, 105, 101, 91, 106, 89, 90, 313, 89, 88, 94, 94, 81, 94, 313, 85, 79, 86, 87, 93, 92, 79, 86, 82, 76, 76, 65, 67, 62, 73, 60, 313, 62, 65, 52, 313, 53, 54, 313, 53, 17, 313, 313, 93, 96, 41 } ; static yyconst flex_int16_t yy_def[276] = { 0, 272, 1, 272, 272, 272, 272, 273, 274, 272, 275, 275, 272, 275, 275, 275, 275, 275, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 273, 274, 272, 275, 275, 272, 275, 272, 272, 37, 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, 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, 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, 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, 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, 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, 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, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 0, 272, 272, 272 } ; static yyconst flex_int16_t yy_nxt[350] = { 0, 4, 5, 6, 5, 4, 7, 8, 9, 10, 11, 12, 4, 13, 11, 14, 15, 16, 17, 4, 18, 4, 4, 19, 20, 21, 22, 23, 24, 25, 26, 27, 4, 4, 4, 28, 29, 30, 36, 30, 37, 272, 44, 40, 34, 271, 41, 45, 50, 38, 51, 52, 39, 42, 53, 272, 55, 64, 54, 272, 272, 30, 67, 30, 272, 56, 68, 72, 57, 58, 79, 69, 81, 73, 111, 196, 209, 270, 197, 269, 82, 268, 80, 210, 85, 267, 266, 112, 265, 211, 264, 263, 262, 261, 212, 31, 31, 32, 32, 32, 260, 85, 259, 85, 85, 85, 258, 257, 85, 256, 255, 254, 253, 252, 251, 85, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, 85, 85, 237, 236, 235, 234, 233, 232, 231, 85, 85, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 208, 207, 206, 205, 85, 204, 203, 202, 85, 201, 200, 199, 198, 195, 194, 193, 192, 191, 85, 190, 189, 188, 187, 186, 185, 85, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 85, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 110, 109, 108, 85, 107, 106, 105, 104, 103, 85, 102, 101, 100, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 78, 77, 76, 75, 74, 71, 70, 66, 65, 63, 272, 272, 33, 62, 61, 60, 59, 49, 48, 47, 46, 43, 272, 35, 33, 272, 3, 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, 272, 272, 272, 272, 272, 272 } ; static yyconst flex_int16_t yy_chk[350] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 13, 5, 14, 13, 17, 15, 275, 270, 15, 17, 22, 14, 22, 22, 14, 15, 23, 17, 24, 37, 23, 15, 14, 30, 40, 30, 37, 24, 40, 43, 24, 24, 49, 40, 50, 43, 82, 178, 192, 269, 178, 267, 50, 266, 49, 192, 264, 263, 262, 82, 260, 192, 259, 258, 257, 256, 192, 273, 273, 274, 274, 274, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 243, 242, 241, 240, 239, 238, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 206, 205, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 177, 176, 175, 174, 173, 171, 170, 169, 166, 165, 164, 163, 162, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 100, 99, 98, 97, 96, 95, 94, 93, 91, 90, 89, 88, 87, 86, 84, 83, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 48, 47, 46, 45, 44, 42, 41, 39, 38, 36, 35, 34, 32, 31, 27, 26, 25, 21, 20, 19, 18, 16, 11, 10, 8, 3, 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, 272, 272, 272, 272, 272, 272, 272 } ; /* Table of booleans, true if rule could match eol. */ static yyconst flex_int32_t yy_rule_can_match_eol[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, 1, 0, 0, 0, }; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; #line 1 "ddb-txt.l" /** \file ddb-txt.l * \author Copyright (C) 2006 Hans Ulrich Niedermann * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #line 29 "ddb-txt.l" #include #include #define _GNU_SOURCE #include #include "ddb-common.h" #include "ddb-txt.tab.h" //#if !(YYDEBUG) # define ECHO do {} while (0) //#endif extern char *strndup(const char *s, size_t n); static char *filename = NULL; YYSTYPE yylval = { str_val: NULL }; static void lexer_error(const char *msg); #line 678 "ddb-txt.yy.c" #define INITIAL 0 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals (void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy (void ); int yyget_debug (void ); void yyset_debug (int debug_flag ); YY_EXTRA_TYPE yyget_extra (void ); void yyset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyget_in (void ); void yyset_in (FILE * in_str ); FILE *yyget_out (void ); void yyset_out (FILE * out_str ); int yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); void yyset_lineno (int line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap (void ); #else extern int yywrap (void ); #endif #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void ); #else static int input (void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; #line 50 "ddb-txt.l" #line 860 "ddb-txt.yy.c" if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_load_buffer_state( ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yytext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 273 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 313 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) { int yyl; for ( yyl = 0; yyl < yyleng; ++yyl ) if ( yytext[yyl] == '\n' ) yylineno++; ; } do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ (yy_c_buf_p) = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP #line 51 "ddb-txt.l" { /* ignore comment */ } YY_BREAK case 2: YY_RULE_SETUP #line 52 "ddb-txt.l" { ECHO; return TOK_INTERFACE; } YY_BREAK case 3: YY_RULE_SETUP #line 53 "ddb-txt.l" { ECHO; return TOK_BEGIN; } YY_BREAK case 4: YY_RULE_SETUP #line 54 "ddb-txt.l" { ECHO; return TOK_DRIVER; } YY_BREAK case 5: YY_RULE_SETUP #line 55 "ddb-txt.l" { ECHO; return TOK_DEVICE; } YY_BREAK case 6: YY_RULE_SETUP #line 56 "ddb-txt.l" { ECHO; return TOK_END; } YY_BREAK case 7: YY_RULE_SETUP #line 57 "ddb-txt.l" { ECHO; return TOK_SERIAL; } YY_BREAK case 8: YY_RULE_SETUP #line 58 "ddb-txt.l" { ECHO; return TOK_USB; } YY_BREAK case 9: YY_RULE_SETUP #line 59 "ddb-txt.l" { ECHO; return TOK_DISK; } YY_BREAK case 10: YY_RULE_SETUP #line 60 "ddb-txt.l" { ECHO; return TOK_PTPIP; } YY_BREAK case 11: YY_RULE_SETUP #line 61 "ddb-txt.l" { ECHO; return TOK_CLASS; } YY_BREAK case 12: YY_RULE_SETUP #line 62 "ddb-txt.l" { ECHO; return TOK_SUBCLASS; } YY_BREAK case 13: YY_RULE_SETUP #line 63 "ddb-txt.l" { ECHO; return TOK_PROTOCOL; } YY_BREAK case 14: YY_RULE_SETUP #line 64 "ddb-txt.l" { ECHO; return TOK_VENDOR; } YY_BREAK case 15: YY_RULE_SETUP #line 65 "ddb-txt.l" { ECHO; return TOK_PRODUCT; } YY_BREAK case 16: YY_RULE_SETUP #line 66 "ddb-txt.l" { ECHO; return TOK_SPEEDS; } YY_BREAK case 17: YY_RULE_SETUP #line 67 "ddb-txt.l" { ECHO; return TOK_OPERATIONS; } YY_BREAK case 18: YY_RULE_SETUP #line 68 "ddb-txt.l" { ECHO; return TOK_DRIVER_OPTIONS; } YY_BREAK case 19: YY_RULE_SETUP #line 69 "ddb-txt.l" { ECHO; return TOK_OPTION; } YY_BREAK case 20: YY_RULE_SETUP #line 70 "ddb-txt.l" { ECHO; return TOK_FILE_OPERATIONS; } YY_BREAK case 21: YY_RULE_SETUP #line 71 "ddb-txt.l" { ECHO; return TOK_FOLDER_OPERATIONS; } YY_BREAK case 22: YY_RULE_SETUP #line 72 "ddb-txt.l" { ECHO; return TOK_DRIVER_STATUS; } YY_BREAK case 23: YY_RULE_SETUP #line 73 "ddb-txt.l" { ECHO; return TOK_DEVICE_TYPE; } YY_BREAK case 24: YY_RULE_SETUP #line 74 "ddb-txt.l" { ECHO; yylval.str_val = strndup(yytext, yyleng); return VAL_FLAG; } YY_BREAK case 25: YY_RULE_SETUP #line 79 "ddb-txt.l" { ECHO; return TOK_SEP; } YY_BREAK case 26: YY_RULE_SETUP #line 80 "ddb-txt.l" { ECHO; return TOK_COMMA; } YY_BREAK case 27: YY_RULE_SETUP #line 81 "ddb-txt.l" { ECHO; yylval.str_val = strndup(yytext, yyleng); return TOK_STRING; } YY_BREAK case 28: YY_RULE_SETUP #line 85 "ddb-txt.l" {ECHO; yylval.ui_val = strtoul(yytext, NULL, 0); if ((ERANGE == errno) && (ULONG_MAX == yylval.ui_val)) { lexer_error("Number out of range"); } else if (EINVAL == errno) { lexer_error("Invalid number"); } return TOK_NUMBER; } YY_BREAK case 29: /* rule 29 can match eol */ YY_RULE_SETUP #line 95 "ddb-txt.l" { ECHO; /* ignore newlines */ } YY_BREAK case 30: YY_RULE_SETUP #line 96 "ddb-txt.l" { ECHO; /* ignore whitespace */ } YY_BREAK case 31: YY_RULE_SETUP #line 97 "ddb-txt.l" { static char msg[] = "unexpected character (in string?) '?'"; msg[strlen(msg)-2] = yytext[0]; lexer_error(msg); } YY_BREAK case 32: YY_RULE_SETUP #line 102 "ddb-txt.l" ECHO; YY_BREAK #line 1137 "ddb-txt.yy.c" case YY_STATE_EOF(INITIAL): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = (yytext_ptr); register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart(yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { register yy_state_type yy_current_state; register char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 273 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { register int yy_is_jam; register char *yy_cp = (yy_c_buf_p); register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 273 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 272); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart(yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yytext */ (yy_hold_char) = *++(yy_c_buf_p); if ( c == '\n' ) yylineno++; ; return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_init_buffer(YY_CURRENT_BUFFER,input_file ); yy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer(b,file ); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree((void *) b->yy_ch_buf ); yyfree((void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yy_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (void) { yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer(b ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { return yy_scan_bytes(yystr,strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ int yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /** Set the current line number. * @param line_number * */ void yyset_lineno (int line_number ) { yylineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * in_str ) { yyin = in_str ; } void yyset_out (FILE * out_str ) { yyout = out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int bdebug ) { yy_flex_debug = bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ /* We do not touch yylineno unless the option is enabled. */ yylineno = 1; (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = (FILE *) 0; yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 102 "ddb-txt.l" void lexer_reset(const char *_filename) { filename = (char *) _filename; } static void lexer_error(const char *msg) { fprintf(stderr, "%s:%d: lexer error: %s\n", filename, yylineno, msg); exit(4); } libgphoto2-2.5.9/tests/test-endian.c0000644000175000001440000000473412610415536014251 00000000000000 /* test-filesys.c * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include #define CHECK(r) if (!(r)) { fprintf(stderr,"%s:%d: result unexpected.\n",__FILE__,__LINE__); exit(1); } int main () { unsigned char buf[16]; unsigned long long u64; unsigned short u16; unsigned int u32; u16 = swap16(0x1234); CHECK(u16 == 0x3412); u32 = swap32(0x12345678); CHECK(u32 == 0x78563412); u64 = swap64(0x0123456789abcdefULL); CHECK(u64 == 0xefcdab8967452301ULL); u16 = htobe16(0x1234); memcpy(buf,&u16,2); CHECK((buf[0]==0x12)&&(buf[1]==0x34)); u32 = htobe32(0x12345678); memcpy(buf,&u32,4); CHECK((buf[0]==0x12)&&(buf[1]==0x34)&&(buf[2]==0x56)&&(buf[3]==0x78)); u64 = htobe64(0x0123456789abcdefULL); memcpy(buf,&u64,8); CHECK((buf[0]==0x01)&&(buf[1]==0x23)&&(buf[2]==0x45)&&(buf[3]==0x67)); CHECK((buf[4]==0x89)&&(buf[5]==0xab)&&(buf[6]==0xcd)&&(buf[7]==0xef)); u16 = htole16(0x1234); memcpy(buf,&u16,2); CHECK((buf[0]==0x34)&&(buf[1]==0x12)); u32 = htole32(0x12345678); memcpy(buf,&u32,4); CHECK((buf[0]==0x78)&&(buf[1]==0x56)&&(buf[2]==0x34)&&(buf[3]==0x12)); u64 = htole64(0x0123456789abcdefULL); memcpy(buf,&u64,8); CHECK((buf[7]==0x01)&&(buf[6]==0x23)&&(buf[5]==0x45)&&(buf[4]==0x67)); CHECK((buf[3]==0x89)&&(buf[2]==0xab)&&(buf[1]==0xcd)&&(buf[0]==0xef)); return (0); } /* * Local variables: * compile-command: "gcc -pedantic -Wstrict-prototypes -O2 -g test-filesys.c -o test-filesys `gphoto2-config --cflags --libs` && export MALLOC_TRACE=test-filesys.log && ./test-filesys && mtrace ./test-filesys test-filesys.log" * End: */ libgphoto2-2.5.9/tests/test-pedantic-compilation.c0000644000175000001440000000131312561423352017104 00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include unsigned long stdc_version = __STDC_VERSION__; int main() { printf("stdc_version = %lu\n", stdc_version); return 0; } libgphoto2-2.5.9/tests/test-pedantic-compilation.cxx0000644000175000001440000000130312561423352017463 00000000000000#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include unsigned long cxx_version = __cplusplus; int main() { printf("cxx_version = %lu\n", cxx_version); return 0; } libgphoto2-2.5.9/tests/test-filesys.c0000644000175000001440000002105712610415536014466 00000000000000/* test-filesys.c * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #ifdef HAVE_MCHECK_H #include #endif #include #include #include #ifdef __GNUC__ #define __unused__ __attribute__((unused)) #else #define __unused__ #endif #define CHECK(r) {int ret = r; if (ret < 0) {printf ("Got error: %s\n", gp_result_as_string (ret)); return (1);}} static void log_func (GPLogLevel __unused__ level, const char __unused__ *domain, const char *str, void __unused__ *data) { printf ("%s\n", str); } static void error_func (GPContext __unused__ *context, const char *str, void __unused__ *data) { printf ("### %s\n", str); } static int set_info_func (CameraFilesystem __unused__ *fs, const char __unused__ *folder, const char __unused__ *file, CameraFileInfo __unused__ info, void __unused__ *data, GPContext __unused__ *context) { printf (" -> The camera will set the file info here.\n"); return (GP_OK); } static int get_info_func (CameraFilesystem __unused__ *fs, const char __unused__ *folder, const char *file, CameraFileInfo *info, void __unused__ *data, GPContext __unused__ *context) { printf (" -> The camera will get the file info here.\n"); info->preview.fields = GP_FILE_INFO_NONE; info->file.fields = GP_FILE_INFO_NONE; return (GP_OK); } static int file_list_func (CameraFilesystem __unused__ *fs, const char *folder, CameraList *list, void __unused__ *data, GPContext __unused__ *context) { printf ("### -> The camera will list the files in '%s' here.\n", folder); if (!strcmp (folder, "/whatever")) { gp_list_append (list, "file1", NULL); gp_list_append (list, "file2", NULL); gp_list_append (list, "file3", NULL); gp_list_append (list, "file4", NULL); gp_list_append (list, "file5", NULL); gp_list_append (list, "file6", NULL); } return (GP_OK); } static int folder_list_func (CameraFilesystem __unused__ *fs, const char *folder, CameraList *list, void __unused__ *data, GPContext __unused__ *context) { printf ("### -> The camera will list the folders in '%s' here.\n", folder); if (!strcmp (folder, "/")) { gp_list_append (list, "whatever", NULL); gp_list_append (list, "another", NULL); } if (!strcmp (folder, "/whatever")) { gp_list_append (list, "directory", NULL); gp_list_append (list, "dir", NULL); } if (!strcmp (folder, "/whatever/directory")) { gp_list_append (list, "my_special_folder", NULL); } return (GP_OK); } static int delete_file_func (CameraFilesystem __unused__ *fs, const char *folder, const char *file, void __unused__ *data, GPContext __unused__ *context) { printf ("Here we should delete %s from folder %s...\n", file, folder); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .get_info_func = get_info_func, .set_info_func = set_info_func, .del_file_func = delete_file_func, .file_list_func = file_list_func, .folder_list_func = folder_list_func, }; int main () { CameraFilesystem *fs; CameraFileInfo info; CameraList *list; int x, count; const char *name; char *foldername; GPContext *context; #ifdef HAVE_MCHECK_H mtrace(); #endif CHECK (gp_list_new(&list)); gp_log_add_func (GP_LOG_DEBUG, log_func, NULL); context = gp_context_new (); gp_context_set_error_func (context, error_func, NULL); printf ("*** Creating file system...\n"); CHECK (gp_filesystem_new (&fs)); printf ("*** Setting the callbacks...\n"); CHECK (gp_filesystem_set_funcs (fs, &fsfuncs, NULL)); printf ("*** Adding a file...\n"); CHECK (gp_filesystem_append (fs, "/", "my.file", context)); gp_filesystem_dump (fs); printf ("*** Removing this file...\n"); CHECK (gp_filesystem_delete_file (fs, "/", "my.file", context)); gp_filesystem_dump (fs); printf ("*** Resetting...\n"); CHECK (gp_filesystem_reset (fs)); gp_filesystem_dump (fs); printf ("*** Adding /...\n"); CHECK (gp_filesystem_append (fs, "/", NULL, context)); printf ("*** Adding /whatever ...\n"); CHECK (gp_filesystem_append (fs, "/whatever", NULL, context)); printf ("*** Adding /whatever/dir...\n"); CHECK (gp_filesystem_append (fs, "/whatever/dir", NULL, context)); printf ("*** Adding /whatever/dir/file1...\n"); CHECK (gp_filesystem_append (fs, "/whatever/dir", "file1", context)); gp_filesystem_dump (fs); printf ("*** Adding /whatever/dir/file2...\n"); CHECK (gp_filesystem_append (fs, "/whatever/dir", "file2", context)); CHECK (gp_filesystem_append (fs, "/whatever/dir", "file3", context)); CHECK (gp_filesystem_append (fs, "/whatever/dir", "file4", context)); CHECK (gp_filesystem_append (fs, "/whatever/dir", "file5", context)); gp_filesystem_dump (fs); printf ("*** Deleting everything below root...\n"); CHECK (gp_filesystem_delete_all (fs, "/", context)); gp_filesystem_dump (fs); printf ("*** Appending root directory...\n"); CHECK (gp_filesystem_append (fs, "/", NULL, context)); printf ("*** Appending some directories...\n"); CHECK (gp_filesystem_append (fs, "/whatever", NULL, context)); CHECK (gp_filesystem_append (fs, "/whatever/directory", NULL, context)); printf ("*** Adding some files...\n"); CHECK (gp_filesystem_append (fs, "/whatever/directory", "some.file", context)); CHECK (gp_filesystem_append (fs, "/whatever/directory", "some.file2", context)); CHECK (gp_filesystem_append (fs, "/another/directory", "another.file", context)); gp_filesystem_dump (fs); printf ("*** Getting info about a file...\n"); CHECK (gp_filesystem_get_info (fs, "/whatever/directory", "some.file", &info, context)); printf ("*** Getting info again (cache!)...\n"); CHECK (gp_filesystem_get_info (fs, "/whatever/directory", "some.file", &info, context)); printf ("*** Set info about another file...\n"); CHECK (gp_filesystem_set_info (fs, "/whatever/directory", "some.file2", info, context)); printf ("*** Getting info about this file (cache!)...\n"); CHECK (gp_filesystem_get_info (fs, "/whatever/directory", "some.file2", &info, context)); printf ("*** Deleting a file...\n"); CHECK (gp_filesystem_delete_file (fs, "/whatever/directory", "some.file2", context)); gp_filesystem_dump (fs); printf ("*** Resetting the filesystem...\n"); CHECK (gp_filesystem_reset (fs)); gp_filesystem_dump (fs); printf ("*** Getting file list for folder '/whatever/directory'...\n"); CHECK (gp_filesystem_list_folders (fs, "/whatever/directory", list, context)); printf ("*** Getting file list for folder '/whatever/directory' " "again (cached!)...\n"); CHECK (gp_filesystem_list_folders (fs, "/whatever/directory", list, context)); printf ("*** Counting the contents...\n"); CHECK (count = gp_list_count (list)); printf ("*** Listing the contents...\n"); for (x = 0; x < count; x++) { CHECK (gp_list_get_name (list, x, &name)); printf (" %i: '%s'\n", x, name); } printf ("*** Getting folder of 'file1'...\n"); CHECK (gp_filesystem_get_folder (fs, "file1", &foldername, context)); printf ("... found in '%s'.\n", foldername); free(foldername); printf ("*** Deleting a couple of files...\n"); CHECK (gp_filesystem_delete_file (fs, "/whatever", "file5", context)); CHECK (gp_filesystem_delete_file (fs, "/whatever", "file4", context)); CHECK (gp_filesystem_delete_file (fs, "/whatever", "file3", context)); gp_filesystem_dump (fs); printf ("*** Freeing file system...\n"); CHECK (gp_filesystem_free (fs)); gp_context_unref (context); CHECK (gp_list_free(list)); #ifdef HAVE_MCHECK_H muntrace(); #endif return (0); } /* * Local variables: * compile-command: "gcc -pedantic -Wstrict-prototypes -O2 -g test-filesys.c -o test-filesys `gphoto2-config --cflags --libs` && export MALLOC_TRACE=test-filesys.log && ./test-filesys && mtrace ./test-filesys test-filesys.log" * End: */ libgphoto2-2.5.9/tests/test-gphoto2.c0000644000175000001440000000542112610415536014367 00000000000000/* test-gphoto2.c * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #ifdef HAVE_MCHECK_H #include #endif #include #define CHECK(f) {int res = f; if (res < 0) {printf ("ERROR: %s\n", gp_result_as_string (res)); return (1);}} int main () { CameraText text; Camera *camera; CameraAbilitiesList *al; CameraAbilities abilities; int m; #ifdef HAVE_MCHECK_H mtrace(); #endif /* * You'll probably want to access your camera. You will first have * to create a camera (that is, allocating the memory). */ printf ("Creating camera...\n"); CHECK (gp_camera_new (&camera)); /* * Before you initialize the camera, set the model so that * gphoto2 knows which library to use. */ printf ("Setting model...\n"); CHECK (gp_abilities_list_new (&al)); CHECK (gp_abilities_list_load (al, NULL)); CHECK (m = gp_abilities_list_lookup_model (al, "Directory Browse")); CHECK (gp_abilities_list_get_abilities (al, m, &abilities)); CHECK (gp_abilities_list_free (al)); CHECK (gp_camera_set_abilities (camera, abilities)); /* * Now, initialize the camera (establish a connection). */ printf ("Initializing camera...\n"); CHECK (gp_camera_init (camera, NULL)); /* * At this point, you can do whatever you want. * You could get files, capture images... */ printf ("Getting information about the driver...\n"); CHECK (gp_camera_get_about (camera, &text, NULL)); printf ("%s\n", text.text); /* * Don't forget to clean up when you don't need the camera any * more. Please use unref instead of destroy - you'll never know * if some part of the program still needs the camera. */ printf ("Unrefing camera...\n"); CHECK (gp_camera_unref (camera)); #ifdef HAVE_MCHECK_H muntrace(); #endif return (0); } /* * Local variables: * compile-command: "gcc -pedantic -Wstrict-prototypes -O2 -g test-gphoto2.c -o test-gphoto2 `gphoto2-config --cflags --libs` && export MALLOC_TRACE=test-gphoto2.log && ./test-gphoto2 && mtrace ./test-gphoto2 test-gphoto2.log" * End: */ libgphoto2-2.5.9/README0000644000175000001440000001113312623156026011377 00000000000000 libgphoto2 ---------- Hello and welcome to the wonderful world of gphoto! This is libgphoto2, the successor of gphoto with lots of new features and additional camera drivers. If you miss a feature, would like to report success or failure, or have any questions, please don't hesitate to contact our mailing list. What is libgphoto2? ------------------- libgphoto2 is a library that can be used by applications to access various digital cameras. For more information on gphoto, see http://www.gphoto.org/ There, you can also get information on mailing lists, supported cameras, and availability of gphoto2. Another source of information is https://github.com/gphoto where you can access our SVN server to fetch the source code of gphoto2, gtkam and GnoCam (see below). What is libgphoto2 not? ----------------------- libgphoto2 itself is not a GUI application, opposed to gphoto. There are GUI frontends for the gphoto2 library, however, such as gtkam for example. libgphoto2 can only talk to cameras the language of those it understands. That is, if you own a camera that speaks a language that isn't published anywhere and nobody has been able to figure out the meaning of the sentences, libgphoto2 cannot communicate with those cameras. Then, there are cameras supporting the so-called USB Mass Storage protocol. This is a protocol that has been published and lets you access any storage device, be it a camera or a disk connected via USB to your computer. As there are already drivers for this protocol out there, you don't need an additional library like libgphoto2. The list of camera that use USB Mass Storage is getting longer everyday, so we won't publish it. For a more up to date list, you can consult http://www.teaser.fr/~hfiguiere/linux/digicam.html Your operating system will tell you about that because it is likely to recognise the device as a SCSI disk that you can mount (for Linux 'dmesg' will tell you). Again, those cameras *cannot* be accessed through libgphoto2. Some of them can be switched to use a different communication protocol and might be in that case useable with libgphoto2. Other camera support a protocol called PTP or USB Imaging Devices that has been developped by Kodak and other. libgphoto2 does support PTP. Also working will be cameras labeled as "PictBridge", which is a extension to PTP. Almost all cameras that are not mass storage support it these days, including but not limited to all Nikon, Canon, Fuji, Sony, Panasonic, HP and more. PTP camera unknown to libgphoto2 will be detected as a generic PTP camera and will work as-is without any changes. MTP (Microsoft Transfer Protocol) capable devices will also be accessible, since MTP is based on PTP. Platforms --------- libgphoto2 should compile and run on pretty much all Unix-like platforms. libgphoto2 has _not_ (yet?) been ported to any operating system from MicroSoft. How to set up libgphoto2 ------------------------ For information on how to set up libgphoto2 and its frontends, see The gPhoto2 Manual. It is available at the following places: - At the gphoto website: http://www.gphoto.org/ - In the SVN module gphoto2-manual The gPhoto2 Manual includes information about setting up USB hotplugging. If you run into problems, you may also consult the FAQ (also included in The gPhoto2 Manual). Frontends --------- gphoto2 is a command line frontend which is quite powerful, especially in combination with scripts. See The gPhoto2 Manual for a short description. For the GUI lovers, there are for example digikam (KDE), gthumb (GNOME), f-spot (GNOME / Mono) and more. We also have a GTK2 reference GUI called gtkam, which is unmaintained, its only special features are capture abilitiy. Additionally, there are plugins for other programs available like kio_camera (KDE - Konqueror) and a fuse plugin, gphotofs. Reporting Bugs -------------- Every piece of software contains errors and flaws. So does libgphoto2. When you encounter something that does not work, please do the following: 1. Find out whether this is a known problem. 2. Reproduce the problem with debug output enabled and the language set to English, so that the development team will understand the messages. You can do this by running: env LC_ALL=C gtkam if you're using the gtkam frontend or running: env LC_ALL=C gphoto2 --debug-logfile=logfile.log --debug using the gphoto2 command line interface. 3. Report the problem on the mailing list with the corresponding debug output if it is small. If it is more than a few kilobytes, please don't post the complete debug output on the list. libgphoto2-2.5.9/Makefile.in0000644000175000001440000011471212623156011012565 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Process this file with automake to generate a GNU Makefile ######################################################################## # put file lists and special compile rules here VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(nobase_include_HEADERS) \ $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = README gphoto2-config libgphoto2.pc \ libgphoto2-uninstalled.pc CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)" \ "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)" SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-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 \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(doc_DATA) $(noinst_DATA) $(pkgconfig_DATA) HEADERS = $(nobase_include_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/README.in \ $(srcdir)/config.h.in $(srcdir)/gphoto2-config.in \ $(srcdir)/libgphoto2-uninstalled.pc.in \ $(srcdir)/libgphoto2.pc.in $(top_srcdir)/auto-aux/ar-lib \ $(top_srcdir)/auto-aux/compile \ $(top_srcdir)/auto-aux/config.guess \ $(top_srcdir)/auto-aux/config.sub \ $(top_srcdir)/auto-aux/install-sh \ $(top_srcdir)/auto-aux/ltmain.sh \ $(top_srcdir)/auto-aux/missing \ $(top_srcdir)/auto-aux/mkinstalldirs ABOUT-NLS AUTHORS COPYING \ ChangeLog INSTALL NEWS README auto-aux/ar-lib auto-aux/compile \ auto-aux/config.guess auto-aux/config.rpath \ auto-aux/config.sub auto-aux/depcomp auto-aux/install-sh \ auto-aux/ltmain.sh auto-aux/missing auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 GZIP_ENV = --best DIST_TARGETS = dist-bzip2 dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ bin_SCRIPTS = gphoto2-config EXTRA_DIST = HACKING MAINTAINERS TESTERS installcheck.mk \ libgphoto2.pc.in libgphoto2-uninstalled.pc.in ChangeLog \ INSTALL README.in README README.packaging # Note: @subdirs@ lists all the directories from AC_CONFIG_SUBDIRS() SUBDIRS = @subdirs@ libgphoto2 camlibs tests examples po packaging doc gphoto-m4 pkgconfig_DATA = libgphoto2.pc noinst_DATA = libgphoto2-uninstalled.pc doc_DATA = AUTHORS COPYING NEWS ABOUT-NLS ChangeLog README \ README.packaging nobase_include_HEADERS = \ gphoto2/gphoto2.h \ gphoto2/gphoto2-abilities-list.h\ gphoto2/gphoto2-camera.h \ gphoto2/gphoto2-context.h \ gphoto2/gphoto2-file.h \ gphoto2/gphoto2-filesys.h \ gphoto2/gphoto2-library.h \ gphoto2/gphoto2-list.h \ gphoto2/gphoto2-result.h \ gphoto2/gphoto2-setting.h \ gphoto2/gphoto2-version.h \ gphoto2/gphoto2-widget.h DISTCLEANFILES = libgphoto2/gphoto2-endian.h ######################################################################## # The following default options for aclocal and automake # are required in the top level Makefile.am for the automatic # re-building of the build system files. ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4 all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 README: $(top_builddir)/config.status $(srcdir)/README.in cd $(top_builddir) && $(SHELL) ./config.status $@ gphoto2-config: $(top_builddir)/config.status $(srcdir)/gphoto2-config.in cd $(top_builddir) && $(SHELL) ./config.status $@ libgphoto2.pc: $(top_builddir)/config.status $(srcdir)/libgphoto2.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ libgphoto2-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/libgphoto2-uninstalled.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-nobase_includeHEADERS: $(nobase_include_HEADERS) @$(NORMAL_INSTALL) @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \ echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \ $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \ done uninstall-nobase_includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) # 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, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) @case `sed 15q $(srcdir)/NEWS` in \ *"$(VERSION)"*) : ;; \ *) \ echo "NEWS not updated; not releasing" 1>&2; \ exit 1;; \ esac $(am__remove_distdir) 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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -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 $(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 $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(SCRIPTS) $(DATA) $(HEADERS) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-docDATA install-nobase_includeHEADERS \ install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binSCRIPTS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binSCRIPTS uninstall-docDATA \ uninstall-nobase_includeHEADERS uninstall-pkgconfigDATA .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ dist-xz dist-zip distcheck distclean distclean-generic \ distclean-hdr distclean-libtool 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-docDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man \ install-nobase_includeHEADERS install-pdf install-pdf-am \ install-pkgconfigDATA 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-am uninstall uninstall-am uninstall-binSCRIPTS \ uninstall-docDATA uninstall-nobase_includeHEADERS \ uninstall-pkgconfigDATA .PRECIOUS: Makefile # we use just ONE .PHONY target in order not to confuse automake .PHONY: rpm cvs-tags source-code-check install-drivers ######################################################################## # source code check maintenance task # # This finds code patterns we don't want to have. # # Use it to get rid of existing patterns and make sure they aren't # reintroduced later. # # The output is meant to be read and interpreted by human programmers. source-code-check: @echo "######## Finding // comments" find . -type f -name '*.[ch]' -exec egrep -H '(^//|[^:]//)' {} \; @echo "######## Finding remainders of Arnaud's comment replacement" find . -type f -name '*.[ch]' -exec egrep -H 'http:/\*' {} \; @echo "######## Finding explicit libintl.h references" find . -type f -name '*.[ch]' -exec egrep -H '^#.*include.*libintl\.h' {} \; ######################################################################## # Shortcut for installation of a subset of camlibs/drivers # Usage: make CAMLIBS="canon.la ptp2.la" install-camlibs install-camlibs: cd camlibs && $(MAKE) CAMLIBS="$(CAMLIBS)" install-camlibs ######################################################################## # The following rules are only interesting if you want to create # distribution packages (as source tarballs or system specific packages) # create RPM packages @ENABLE_RPM_TRUE@rpm: Makefile @ENABLE_RPM_TRUE@ $(MAKE) dist @ENABLE_RPM_TRUE@ $(MAKE) -C packaging/rpm rpm @ENABLE_RPM_TRUE@ @echo "The RPM packages should now be found in packaging/rpm/RPMS" @ENABLE_RPM_FALSE@rpm: @ENABLE_RPM_FALSE@ @echo "Dummy $@ target" # add CVS tags - used only by the project maintainer to tag the files of a # released version cvs-tags: Makefile @echo cvs tag "@PACKAGE@-$$(echo '@VERSION@' | sed -e 's/\./_/g' -e 's/rc/-rc/g')" # 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. .NOEXPORT: libgphoto2-2.5.9/config.h.in0000644000175000001440000001716712623156030012552 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Whether we have flex and bison for GP2DDB */ #undef ENABLED_GP2DDB /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* The gettext domain we're using */ #undef GETTEXT_PACKAGE /* Define if there is asm .symver support. */ #undef HAVE_ASM_SYMVERS /* The C compiler we're using */ #undef HAVE_CC /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `getopt' function. */ #undef HAVE_GETOPT /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H /* Define to 1 if you have the `getopt_long' function. */ #undef HAVE_GETOPT_LONG /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the `gmtime_r' function. */ #undef HAVE_GMTIME_R /* Define if you have the iconv() function. */ #undef HAVE_ICONV /* Define to 1 if you have the `inet_aton' function. */ #undef HAVE_INET_ATON /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_LANGINFO_H /* whether we compile with libexif support */ #undef HAVE_LIBEXIF /* whether we use a version of libexif with ExifData.ifd[[]] */ #undef HAVE_LIBEXIF_IFD /* whether we compile with gdlib support */ #undef HAVE_LIBGD /* Define to 1 if you have the `ibs' library (-libs). */ #undef HAVE_LIBIBS /* define if we found LIBJPEG and its headers */ #undef HAVE_LIBJPEG /* whether we compile with libxml-2.0 support */ #undef HAVE_LIBXML2 /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the `localtime_r' function. */ #undef HAVE_LOCALTIME_R /* Define to 1 if you have the `lstat' function. */ #undef HAVE_LSTAT /* Whether libltdl (of libtool fame) is present */ #undef HAVE_LTDL /* Define to 1 if you have the header file. */ #undef HAVE_MCHECK_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mkdir' function. */ #undef HAVE_MKDIR /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* Define to 1 if you have the `rand_r' function. */ #undef HAVE_RAND_R /* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF /* Define to 1 if you have the `sprintf' function. */ #undef HAVE_SPRINTF /* Define to 1 if you have the `statfs' function. */ #undef HAVE_STATFS /* 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 `strcpy' function. */ #undef HAVE_STRCPY /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* 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 `strncpy' function. */ #undef HAVE_STRNCPY /* Define to 1 if `f_bavail' is a member of `struct statfs'. */ #undef HAVE_STRUCT_STATFS_F_BAVAIL /* Define to 1 if `f_bfree' is a member of `struct statfs'. */ #undef HAVE_STRUCT_STATFS_F_BFREE /* Define to 1 if `f_favail' is a member of `struct statfs'. */ #undef HAVE_STRUCT_STATFS_F_FAVAIL /* Define to 1 if `f_blocks' is a member of `struct statvfs'. */ #undef HAVE_STRUCT_STATVFS_F_BLOCKS /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MMAN_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MOUNT_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATFS_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_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_USER_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_VFS_H /* whether struct tm has tm_gmtoff field */ #undef HAVE_TM_GMTOFF /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Whether we have the va_copy() function */ #undef HAVE_VA_COPY /* Define to 1 if you have the `vsnprintf' function. */ #undef HAVE_VSNPRINTF /* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST /* Whether the set of camlibs built is incomplete */ #undef INCOMPLETE_CAMLIB_SET /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* gphoto development mailing list */ #undef MAIL_GPHOTO_DEVEL /* gphoto translation mailing list */ #undef MAIL_GPHOTO_TRANSLATION /* gphoto user mailing list */ #undef MAIL_GPHOTO_USER /* 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 home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* camera list with support status */ #undef URL_DIGICAM_LIST /* gphoto project home page */ #undef URL_GPHOTO_HOME /* gphoto sourceforge project page */ #undef URL_GPHOTO_PROJECT /* jphoto home page */ #undef URL_JPHOTO_HOME /* information about using USB mass storage */ #undef URL_USB_MASSSTORAGE /* Version number of package */ #undef VERSION /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif /* Enable large inode numbers on Mac OS X 10.5. */ #ifndef _DARWIN_USE_64_BIT_INODE # define _DARWIN_USE_64_BIT_INODE 1 #endif /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES /* 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 `unsigned int' if does not define. */ #undef size_t /* __va_copy() was the originally proposed name */ #undef va_copy libgphoto2-2.5.9/Makefile.am0000644000175000001440000000623012610416734012556 00000000000000# Process this file with automake to generate a GNU Makefile ######################################################################## # put file lists and special compile rules here bin_SCRIPTS = gphoto2-config EXTRA_DIST = HACKING MAINTAINERS TESTERS installcheck.mk # Note: @subdirs@ lists all the directories from AC_CONFIG_SUBDIRS() SUBDIRS = @subdirs@ libgphoto2 camlibs tests examples po packaging doc gphoto-m4 EXTRA_DIST += libgphoto2.pc.in pkgconfig_DATA = libgphoto2.pc EXTRA_DIST += libgphoto2-uninstalled.pc.in noinst_DATA = libgphoto2-uninstalled.pc EXTRA_DIST += ChangeLog EXTRA_DIST += INSTALL doc_DATA = AUTHORS COPYING NEWS doc_DATA += ABOUT-NLS ChangeLog EXTRA_DIST += README.in README doc_DATA += README EXTRA_DIST += README.packaging doc_DATA += README.packaging nobase_include_HEADERS = \ gphoto2/gphoto2.h \ gphoto2/gphoto2-abilities-list.h\ gphoto2/gphoto2-camera.h \ gphoto2/gphoto2-context.h \ gphoto2/gphoto2-file.h \ gphoto2/gphoto2-filesys.h \ gphoto2/gphoto2-library.h \ gphoto2/gphoto2-list.h \ gphoto2/gphoto2-result.h \ gphoto2/gphoto2-setting.h \ gphoto2/gphoto2-version.h \ gphoto2/gphoto2-widget.h DISTCLEANFILES = libgphoto2/gphoto2-endian.h # we use just ONE .PHONY target in order not to confuse automake .PHONY: rpm cvs-tags source-code-check install-drivers ######################################################################## # source code check maintenance task # # This finds code patterns we don't want to have. # # Use it to get rid of existing patterns and make sure they aren't # reintroduced later. # # The output is meant to be read and interpreted by human programmers. source-code-check: @echo "######## Finding // comments" find . -type f -name '*.[ch]' -exec egrep -H '(^//|[^:]//)' {} \; @echo "######## Finding remainders of Arnaud's comment replacement" find . -type f -name '*.[ch]' -exec egrep -H 'http:/\*' {} \; @echo "######## Finding explicit libintl.h references" find . -type f -name '*.[ch]' -exec egrep -H '^#.*include.*libintl\.h' {} \; ######################################################################## # Shortcut for installation of a subset of camlibs/drivers # Usage: make CAMLIBS="canon.la ptp2.la" install-camlibs install-camlibs: cd camlibs && $(MAKE) CAMLIBS="$(CAMLIBS)" install-camlibs ######################################################################## # The following default options for aclocal and automake # are required in the top level Makefile.am for the automatic # re-building of the build system files. ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4 ######################################################################## # The following rules are only interesting if you want to create # distribution packages (as source tarballs or system specific packages) if ENABLE_RPM # create RPM packages rpm: Makefile $(MAKE) dist $(MAKE) -C packaging/rpm rpm @echo "The RPM packages should now be found in packaging/rpm/RPMS" else rpm: @echo "Dummy $@ target" endif # add CVS tags - used only by the project maintainer to tag the files of a # released version cvs-tags: Makefile @echo cvs tag "@PACKAGE@-$$(echo '@VERSION@' | sed -e 's/\./_/g' -e 's/rc/-rc/g')" libgphoto2-2.5.9/gphoto2-config.in0000644000175000001440000000207512561423352013701 00000000000000#! /bin/sh # leave these definitions here # they are required for correct interpolation of # @libdir@ and @includedir@ later on prefix="@prefix@" exec_prefix="@exec_prefix@" usage() { cat < (i.e. stdlib, stdio, string, etc.) #include (what you need) /* Source code here. */ header files ------------ Please use the following layout: /* Licence, author, etc. */ #ifndef __FILE_NAME_H__ #define __FILE_NAME_H__ #include /* Declarations */ #endif /* __FILE_NAME_H__ */ camlib ------ Camera libraries are often very sensitive to changes. Therefore, before you commit any changes, double check with the author that your changes won't break the driver. If you want to write a driver for gphoto2, the easiest way to do so would be to copy over the contents of camlibs/template and fill in your code. Use something like CHECK_RESULT (see for example libgphoto2/filesys.c). Let's say you write a driver called sillycam. Please set up a file called library.c containing all gphoto2-specific code (like camera_init) and another two files called sillycam.c and sillycam.h containing the "magic", that is all gp_port_[read,write] functions and the basic logic of the communication. This makes it easier for us to adapt your code if anything should change in the gphoto2-API. Use the port provided by camera->port. Use the filesystem provided by camera->fs and set up the callbacks so that libgphoto2 can cache listings and file-information. Please keep track of the changes to the sillycam camlib in the file camlib/sillycam/ChangeLog For test compiling and installing only the sillycam and doofuscam camlibs, you can use make -C camlibs sillycam.la doofuscam.la and make CAMLIBS="sillycam.la doofuscam.la" install-camlibs respectively. Compiling all camlibs is sped up considerably on N CPU core computers using "make -jN". libgphoto2 ---------- If you add code, use the coding style of that file. This is, code like int my_func (int arg) { int var, res; /* * This is a multiline * comment. Use TAB for * indentation! */ res = gp_some_action (var); /* This is a simple one-line comment */ if (res < 0) { gp_log (GP_LOG_DEBUG, "Error happened!"); /* Note that we _don't_ indent the case statements */ switch (res) { case GP_ERROR: gp_log (GP_LOG_DEBUG, "Generic error"); break; default: gp_log (GP_LOG_DEBUG, "Not a generic error"); } return (res); } return (GP_OK); } Please always check the return value of gp_-functions! We defined some handy macros all over the place (like CHECK_RESULT) - by using those, you'll avoid lots of if {} else {}. Emacs users may define and use a gphoto-c-mode by putting the following stuff into their .emacs file: -----8<------------------------------------------------ ;;* gphoto-c-mode ;;*===================================================================== (defun gphoto-c-mode () "C mode with adjusted defaults for gphoto hacking" (interactive) (c-mode) (c-set-style "linux") (setq indent-tabs-mode t) (font-lock-mode)) ;; (setq auto-mode-alist (cons '("/home/user/src/gphoto.*\\.[ch]$" . gphoto-c-mode) auto-mode-alist)) -----8<------------------------------------------------ compatibility ------------- Once gphoto2 has been officially launched as a 2.0 version, it is important that the API does not change frequently. It is annoying to users when they have to upgrade all sort of libraries and applications just to get an upgraded camera driver. Once the 2.0 release has been made, try to follow these guidelines: - New versions of the gphoto2 core libraries in the 2.0 series shall work with all older 2.0 camera libraries - New versions of the gphoto2 camera libraries in the 2.0 series shall work with all older 2.0 core libraries (this one may be relaxed) - Before fixing 2.0 in stone, look for weaknesses in the current APIs that may preclude enhancements in the future. For instance, there should be some filler entries added to the end of struct _CameraFunctions so that a newer camera library that tries to fill in an entry that is added in gphoto2 ver. 2.1 that doesn't exist there now won't overwrite something important. - Try to work using the existing API instead of making minor changes here and there; think about whether the change you're proposing will demonstratively benefit gphoto2 or it's just a "nice to have" - Instead of adding a new parameter to a function, create a new function that enhances the other one (where appropriate) - If a new parameter is absolutely needed in an existing function call, rename the function with the new parameter, but leave the existing function as is, calling the new function with a default value for the new parameter - When adding entries to a common structure, add them to the end of the struct so that the other members aren't shifted around. Consider what will happen if that member is not filled in by an older application. - Don't delete entries from a common struct; instead, just rename them into filler entries. - If there is a very good reason to break compatibility, wait until release 3.0 to make those changes - Delay the release of 3.0 until the benefits outweigh the consequences to the user of an incompatible library version. portability ----------- Please remember that people will be running gphoto2 on a wide variety of operating systems and CPUs and will be compiling it on a wide variety of C compilers. As you write your code, be sure not to make any assumptions in your code that aren't in the ANSI C89 standard. If your code absolutely needs some feature or header file that isn't available everywhere, write an autoconf test so that the configure script will detect if that feature is available at compile time and provide an alternative for those compilers that don't support it. There are lots of subtle portability issues that you should keep in the back of your mind. Following are some of the major ones that affect gphoto2. See the paper "Notes on Writing Portable Programs in C" at or "Writing Portable C with GNU Autotools" at for more details. * A char can be signed or unsigned. Use 'signed char' or 'unsigned char', or int8_t or uint8_t from _stdint.h, to be sure to get the type you want when it is important. * A pointer is not necessarily an int. Don't cast a pointer to an int and vice-versa. * An int can be almost any width. Don't assume that it's 32 or 16 bits or any other value. Instead, if you need a variable of a certain size, include the gphoto2 header file _stdint.h (or gphoto2-endian.h) and use the C99-style fixed-width types declared therein. If you don't really care about the size of a variable (e.g. as the index variable in a small for loop), you can still use an int as it's often the most efficient type for each processor. It's usually the case that a char is 8 bits, int is at least 16 bits, and a long is at least 32 bits. Never assume that int or long (or char, for that matter) have a specific size, or that they will overflow at a particular point. Use a size-specific type (e.g. uint32_t) if necessary. * The sequence of bytes received from a camera isn't necessarily the same as how those bytes are stored in a C struct in memory. Many compilers will place padding bytes between the elements of a C struct to improve run-time efficiency on the target processor. This means that if you read a camera packet directly into such a struct, the bytes will not line up and your program will use the wrong values. A similar problem occurs even if you read just a couple of bytes into an int, if gphoto is running on a processor with a different "endianness" than the camera. The most portable solution is to use the macros available in the gphoto2-endian.h header file. When you read a packet from a camera (writing is similar), use a uint8_t array or heap space to store the raw packet. Extract each member of the packet out of the array one at a time using a macro like be32atoh from gphoto2-endian.h. Those macros take care of both those problems at once. The macros have the form AANN[a]toh or htoAANN[a], where AA is `le' (little-endian) or `be' (big-endian), NN is 16 or 32 (bits in the word) and `a', if present, means that the preceding type is located in a byte array, not an integer. `h' refers to `host', and could be big or little-endian depending on the current CPU. Upper-case versions of these macros (where appropriate) do the conversion in place. Do a 'man ntohl' to find out more about why these are needed, and the generated gphoto2-endian.h file for more descriptions. * Your code won't necessarily be compiled with gcc. gcc is a great C compiler, but it isn't installed on everybody's systems (yet!). Avoid use of proprietary gcc language extensions and features that aren't available in ANSI C89 compilers. Sure, there's probably some code that would be more elegant using a gcc language extension, but somebody, somewhere will be denied the use of the best digital camera application in existence because of it. This also applies to new standard C features that appeared in the C99 specification of the language. There is not much support yet in the installed base of C compilers to allow unrestricted use, but this will change as time goes by. In the meantime, use autoconf to detect if the feature is available at run-time and act appropriately (for an extreme example, see how configure handles the C99 header file or inline keyword). Although one-line comments starting with // have been available in most compilers for several years, they were only officially added to the ANSI C99 spec and some compilers out there still don't support them. The "inline" keyword also falls into the same category, but configure tests for this feature at compile time and supplies the appropriate inline keyword as a macro. Finally, don't add compiler-specific flags to make files directly, as many of them are specific to one compiler and will cause the build to fail when using another. Local Variables: mode:text End: libgphoto2-2.5.9/installcheck.mk0000644000175000001440000000205012561423352013512 00000000000000# FIXME: Only run this if not cross-compiling installcheck-local: $(INSTALL_TESTS) $(INSTALLCHECK_DEPS) @total=0; failed=0; success=0; ignored=0; \ echo "Running \"installcheck\" test cases..."; \ for script in $(INSTALL_TESTS); do \ echo "Test case: $$script"; \ total="$$(expr $$total + 1)"; \ if test -f "./$$script"; then dir="./"; \ elif test -f "$$script"; then dir=""; \ else dir="$(srcdir)/"; fi; \ if $(INSTALL_TESTS_ENVIRONMENT) "$$dir/$$script"; then \ echo "SUCCEEDED: $$script"; \ success="$$(expr $$success + 1)"; \ else \ s="$$?"; \ if test "$$s" = "77"; then \ echo "FAILURE IGNORED (return code $$s): $$script"; \ ignored="$$(expr $$ignored + 1)"; \ else \ echo "FAILED (return code $$s): $$script"; \ failed="$$(expr $$failed + 1)"; \ fi; \ fi; \ done; \ echo "Test summary: $$success succeeded, $$failed failed, $$ignored failures ignored, $$total tests in total."; \ if test "$$failed" -gt 0; then \ echo "Error: One or more \"installcheck\" testcases have failed."; \ exit 1; \ fi libgphoto2-2.5.9/TESTERS0000644000175000001440000000534612557123324011605 00000000000000This list of testers is intended for driver developers to find people with the required types of cameras to test their drivers. Therefore it is sorted by the camera type. USING THESE NAMES AND ADDRESSES FOR ANY OTHER PURPOSE THAN DEVELOPMENT AND TESTING OF SOFTWARE FROM THE gphoto PROCJECT IS STRICTLY PROHIBITED. (Just in case anybody gets stupid ideas.) If you create some changes to a special driver and have to test the driver on a type of camera you do not have direct access to, you may contact these nice folks. If you have a camera not yet on this list and want to help develop the gphoto project, we ask you to join the testers. Just tell us at to include you on this list. This will mean your name and e-mail will be distributed with every source copy of gphoto2 and be published at http://gphoto.org/. It will also mean that you will test software that is UNTESTED AND POSSIBLY DANGEROUS TO YOUR HARDWARE OR YOUR HEALTH. You will do this on YOUR OWN RESPONSIBILITY. But it will also mean that you will be able to help develop the driver and possibly be the first one to test the long-awaited working driver :-) This said, we developers also continually test our software risking thousands of dollars' worth of hardware and our lives. :-) ======================================================================== Canon EOS D30 - David ROBERT Canon EOS D30 - Marco Nierlich Canon Digital Ixus V - Matthias Kramm Canon IXUS 300 - Konrad Hofer Canon PowerShot A10 - Jeremy Spykerman Canon PowerShot A50 - Philippe Marzouk Canon PowerShot S40 - Guillaume Laurent Canon EOS 20D - Hubert Figuiere Epson PhotoPC 850z - Valentin Rusu Epson PhotoPC 3000z - Gilles Grandou Jenoptik JD11 - Marcus Meissner Jenoptik JD350v - Marcus Meissner KBGear JamCam v3 - Marcus Meissner KBGear JamCam v3 - Rob Hillis Kodak DC240 - Hubert Figuiere Kodak DC3200 - Kristian Rink Mustek MDC800 - Marcus Meissner Olympus C-3030Z - Colin Marquardt Praktica QD800 - Marcus Meissner SiPix Web2 - Marcus Meissner SiPix Stylecam Blink - Marcus Meissner STV680/ Micromaxx Pencam (USB) - Marcus Meissner libgphoto2-2.5.9/NEWS0000644000175000001440000017177312623155770011244 00000000000000libgphoto2 2.5.9 release Now maintained (source and issue tracker) in GIT at https://github.com/gphoto/libgphoto2 ptp2: * PTP/IP: fixes to support Ricoh Theta and Sony Alpha over WLAN better * unification of timeout with backoff handling * Canon EOS: fixed a timeout bug on wait_event * Canon EOS: report protection status correctly * Canon EOS: unlock the ui on close * Sony: bulb mode support (in manual mode, shutterspeed and bulb option) * Hook up PTP OpenCapture opcode * Nikon J5 support. Nikon now hides prop and opcodes even differently. * Added USB IDs: - Sony SLT A77V, A7R2, HDR-PJ260VE - Nikon DSLR D5500 - Canon EOS 760D, 5Ds, 5Ds R - Nikon Coolpix AW110, S6300, S6800, S3700, S2900 - Nikon 1 S2, J5 - Ricoh Theta m15 (USB and WLAN) - GoProp Hero 4 canon: * readd old Canon IXUS 30. translations: * updated ukrainian, vietnamese, polish, italian ------------------------------------------------------------------------------ libgphoto2 2.5.8 release all: * Missing COPYRIGHT headers added. * Bug fixes for issues detected by Coverity. ptp2: * Canon Powershot/IXUS CHDK support Install the CHDK firmware and then use "gphoto2 --set-config chdk=On" to enable. * Canon EOS: Implemented new capture method for new Canon EOS to avoid hangs. * Canon EOS: New configuration variable: continuousaf * Canon EOS: event output for focusinfo / focusmask * Nikon DSLR: New configuration variables: movieiso, movieshutterspeed, moviehighisonr * Nikon Coolpix A: also manually add override opcodes for capture (please report if it works) * New USB ids: Sony: DSC-HX60V, Alpha-A7S, Alpha-A77 M2, Alpha A5100 Panasonic: DMC-LS2 Canon EOS 7D Mark II, Canon EOS M3 Canon Powershot SX520 HS Fuji Fujifilm X-E2 Samsung NX1 * Media Player IDs synced with the libmtp ID database. * Lots of bugfixes. libgphoto2_port/libusb1: * Prefer libusb1 over libusb0 if both are present. * Asynchronous interrupt handling, to avoid losing usb interrupts during other operations. ------------------------------------------------------------------------------ libgphoto2 2.5.7 release ptp2: * Canon EOS focusinfo crash fixed (affected all config operations) * wait_for_event sleep backoff increased (50 - 100 - 150 - 200ms) * Nikon: fixes to make Nikon Coolpix S9700 over PTPIP work better * Nikon: WLAN GUID setting * Sony: tighten event loop to avoid loss of objectadded events * New USB ids: Nikon Coolpix 9400, Nikon S9700, Pentax K3 (in PTP). pentax: * added Pentax K100Ds * added raw capture support packaging: * fixed missing libexif in pkgconfig translations: * updated ukrainian, vietnamese, french, polish ------------------------------------------------------------------------------ libgphoto2 2.5.6 release ptp2: * Nikon D3000/D3100/D3200: It hides the "good" capture opcodes from the DeviceInfo. Override and add them. If you see capture bugs, please report with debuglogfile. * "exposurecompensation" now in correct size (-3.0 <-> 3.0 usually) * Canon EOS: decode and report "focusinfo" variable that outputs the focus information of the camera. * Canon EOS: autofocusdrive=0 and cancelautofocus=1 added to cancel autofocusing, to avoid blocking the camera. * Canon EOS: "eosviewfinder" renamed to "viewfinder" * Sony SLT: Make property setting work for "iso", "exposurecompensation", "f-number", "shutterspeed" * Canon EOS: crash on 700D fixed * Nikon DSLR: race condition on object addition handled better * Nikon DSLR: make sure we make a pause a bit during polling after capture. * IDs added: Nikon: Coolpix P7800, S1, J4 Nikon: D3300, D610, D4s, D810, D750 Canon: IXUS 125HS, PowerShot Elph340HS Leica M9 * various bugfixes libgphoto2_port/usb1: * fixed a memory leak * api changed for gp_log_data to make smaller debuglogs possible ------------------------------------------------------------------------------ libgphoto2 2.5.5.1 release This is a regression fix release. ptp2: * fixed all Nikon S* coolpix that are not Nikon 1 * Nikon: exit from potential endless loop on trigger capture canon: * On EOS/Rebel DSLR do not query or set "zoom" as its manual always translations: * updated polish, ukrainian, vietnamese ------------------------------------------------------------------------------ libgphoto2 2.5.5 release ptp2: * Nikon 1 support. Final fix to get it running by Raj Kumar of archive.org. * Nikon: liveview capture without autofocus enhanced, now also for card * Nikon: restart liveview after capture * Canon EOS: New property reporting method (OLC Info) implemented. * Print read-only values in configuration table lookup (for Canon EOS mostly) * Sony: Fixed Sony SLT-A900v capture * Fixed the various "datetime" hooks for PTP generic, Canon Powershot and Canon EOS to hopefully work better. --set-config datetime=now sets the camera to the current time. * CHDK: some changes * New ids: Nikon DSC D3x, D5300 Nikon Coolpix P330 Canon PowerShot S95, S120, SX260HS, SX280HS, SX160IS, A2500, A2600, Elph135, IXUS 300HS, IXUS 255HS Canon EOS 1200D Sony DSC-A900, Alpha 6000, DSC-HX5V Casio EX-ZR700, Fuji FinePix AV-150, T200 * Massive logging and error handling cleanup by Axel Waggershauser * cleanup of the USB data handling * Bugfixes st2205: * add support for a new type of 240x320 picture frames all: * Massive logging and error handling cleanup by Axel Waggershauser. * Various cleanups from David Berrange for mingw32 builds. * fixed libgd detection and linking. print-camera-list * add a mode to print udev rules for the non-standard USB support (usbscsi/usbdisk), needed additional to HWDB databases. translations: * updated ukrainian, vietnamese, polish, french, finish, chinese, danish, dutch, ------------------------------------------------------------------------------ libgphoto2 2.5.4 release ptp2: * Sony SLT DSLR support: SDRAM capture, Tethering, Triggering movie capture, property reading * Nikon DSLR: bulb mode implemented in newer DSLRs (D600/D7100/D5200 and later) * Nikon capture adjustments (always set controlmode before capture). * Nikon capture in "live view mode" no longer does autofocus, use "autofocusdrive". * Nikon "applicationmode" setting added. * Nikon Coolpix capture failure on empty cards fixed. * Some Canon EOS 5D Mark III config adjustments/additions. * Canon EOS: enable trigger capture * Olympus E-series capture: some improvements. * ptp2: implemented device property description caching * New IDs - Sony DSC-W510, SLT-A58 (control) - Nikon P80 v1.1 - Canon A3500IS, A1400, SX170IS, SX510HS, A2200 - Fuji FinePix S4850, JX370, S4850 - Apple iPhone 5 ax203: * support for picture frame with id 1. sierra: * Reimplemented a libusb based mass storage tunneling driver to support non-Linux systems (e.g. Mac OS X). libusb1: * fixed timeout detection for USB interrupts all: * Lots of small fixes to build with mingw32. Translations updates: * Danish, Spanish, French, Dutch, Polish, Russian, Serbian, Ukrainian, Vietnamese ------------------------------------------------------------------------------ libgphoto2 2.5.3.1 release packaging: * "print-camera-list hwdb" output mode added for udev versions >= 201. Put this to /usr/lib/udev/hwdb/20-gphoto.hwdb (your udev hwdb directory might be different) Added a missing "i" in the PTP matcher. ------------------------------------------------------------------------------ libgphoto2 2.5.3 release packaging: * "print-camera-list hwdb" output mode added for udev versions >= 201. Put this to /usr/lib/udev/hwdb/20-gphoto.hwdb (your udev hwdb directory might be different) * "print-camera-list html" output mode added for http://gphoto.org/proj/libgphoto2/support.php all: * Lots of Coverity fixes merged ptp2: * Nikon: added a new PTP capture opcode function, allows capture to card during liveview * Nikon: rewrote some of the wait logic in the capture routines * Nikon: enable --trigger-capture support * Nikon: hook up some more configuration variables (funcbutton, previewbutton, menusandplayback, changeafarea) * canon: hook up configuration variables (colortemperature) * ptpip: several contributed bugfixes, and event handling * panasonic: allow deleting files by setting MTP Responder code. * new ids: * Kodak Z8612 IS * Sony DSC-S780, SLT-A57, SLT-A58, SLT-A99v, DSC-RX100M2, Alpha A3000, NEX 6 * Nikon Coolpix S3200, DSLR D3200, J3, V2, S02, 2200v1.1, S4300, S2700, L27, S02, V2, J3 * Panasonic TZ-8 * Olympus E-M5 * Canon Rebel G15, EOS 70D, A1000IS, SX150IS, A810 * Canon Rebel T3, EOS 1Dx, EOS 70D * Fuji FinePix SL1000, S2980 * merged ids from libmtp * lots of bugfixes canon: * label PowerShot S110 from 2001 differently than the 2012 PowerShot S110. * fixed "new / downloaded" logic * disable unconditional "clear halt" calls as they confuse newer controllers ax203: * support Nantronics N25S80 chipset directory: * support NRW files sierra: * capture fixed for Olympus C-3030 pentax: * Various fixes from Jiri Pinka jd11: * enhanced de-bayering a bit translations: * new czech translation by Pavel Borecki. * updated czech, danish, dutch, polish, russian, seribian, ukrainian, french, vietnamese, taiwanese libgphoto2: * use generic macros to check for libGD and libxml2 to allow better handling. libgphoto2_port/disk: * check the right fstab field for ignoring filesystems (avoids autofs scans) ------------------------------------------------------------------------------ libgphoto2 2.5.2 release ptp2: * Fixed Raspberry Pi and USB 3.0 "connect only once" problem. * Experimental Olympus E-series (not Pen) remote control support. Try in "Control" mode. * Nikon DSLR: real movie capture! (use --set-config movie=1/0 and --wait-event) * New ids: Sony: DSC-A900, SLT-A350, DSC-RX1, HX300, NEX-3N Nikon Coolpix: P80, L820, S9500, S620, P520, S2500, S2600 Nikon Coolpix A Nikon DSLR: D2Xs, D4, D7100 Nikon J2 Canon Powershot: S100, A1300IS, A2300IS, Canon EOS: 700D, 100D Fuji FinePix: H20EXR, X20 Samsung: NX1000, EK-GC100 Also various MTP device ids merged from libmtp. * ptpip: major/minor number was switched in init packet. * Nikon DSLR: out of focus during capture fixed, various bugfixes * Nikon "controlmode" config for unlocking the camera. * Canon DSLR: "keepdeviceon" pinging in get_config, liveview * Canon thumbnail retrieval fixed. * Lots of work on getting Olympus E-series DSLRs in Control mode to run. canon: * wait-for-event: handle when camera goes offline during waiting. * fixed mtime 0 (Jan 1 1970) issue when downloading files and using --filename sierra: * Fixed the Nikon Coolpix 4300 and 2500 USB over SCSI capture mode. * Ignore register 4 read errors after capture as Nikon does not supply them. * added commented code on how to switch the Coolpix 2500 to RAW DIAG mode. libgphoto2_port: * gp_port_reset functionality to do a port reset. libgphoto2_port/usbscsi: * Use timeout supplied by driver, not hardcoded 1.5 seconds (fixes Nikon sierra capture). translations: * updated ukrainian, finish, dutch, polish, russian, french, vietnamese, german build: * specify lots of _BSD_SOURCE et.al. to make the strict MacOS ports build happier. Might break non Linux platforms, please report this. * libxml2 needed for Olympus E series capture support. * cleaned up AM_CPPFLAGS/CPPFLAGS usage, do not use both of them together. ------------------------------------------------------------------------------ libgphoto2 2.5.1.1 release ptp2: * fixed 32bit architectures ------------------------------------------------------------------------------ libgphoto2 2.5.1 release translations updates * lots of translations synced to 2.5.0 release ptp2: * Lots of new USB ids added - Sony RX100, SLT-A65V, HX200V - Nikon Coolpix S01, S3300, P7700, S8200, P510, J1 - Nikon DSLR D600, D800E, D800, D5200 - Panasonic DMC LX7 - Olympus SP-720UZ, E-PL5 - Canon PowerShot D10, IXUS 310IS, SX220HS, G1 X, SX40HS, A4000IS, SX240HS, A2400IS, S110, SX500IS - Canon EOS M, EOS 650D, EOS 6D - Fuji FinePix S2950, S4300, X-S1, HS30EXR, XF1 * wait-for-event also for Canon PowerShot (capture capable ones) now waits for "shutter press" signal and triggers a capture. * Canon Powershot Preview mode fixes * various Nikon configurations added: angle, flickerreduction, rawcompression, remotemode. * Nikon DSLR to-ram capture fixes * merged music player ids from libmtp. Includes big Samsung devices rename. * EOS preview capture bugfixes: some waiting reduced to allow higher preview / regular capture speed on Canon EOS, understand newer EOS. * some more bug fixes ax203: * SST25VF080 and SST25VF016 support added. * ax206 support enhanced. canon: * decode "zoom" settings better * "shootingmode" fix libgphoto2_port/libusb1: * bugfixes examples: * focus.c, sample-justfocus.c: focusing example added ------------------------------------------------------------------------------ libgphoto2 2.5.0 release libgphoto2 API: * gp_context* functions no longer get varargs, but preprocessed strings. This makes hooking them into other language bindings easier. * gp_file_new_from_handler(): Allow passing data in and out via handler functions (to allow streaming). See also CameraFileHandler function pointers. * CameraFileInfoFile: removed "name" structmember and GP_FILE_INFO_NAME flags. Use direct passing in of the filename to the API functions. * New: gp_camera_autodetect(CameraList *list, GPContext*); Simple autodetection function returning all current detected cameras. * (TODO: not yet New: gp_camera_open (Camera *camera, const char *name, const char *port, GPContext *context); Simple open function without needing to involve libgphoto2_port. ) * gp_file_set_name() and _get_name() passing in is no longer needed and the API will go away. * New gp_file_get_name_by_type() will convert a regular filename ("normal") into one depending on type (e.g. "raw_" prefix) and adjusted suffix (like ".ppm" turning into ".pgm" for grayscale previews). * gp_file_set_type() and gp_file_get_type() are gone, these functions are now implicit passed via arguments to the the put_file and set_file_noop() functions. * gp_filesystem_set_info_noop(), gp_filesystem_set_file_noop(), gp_filesystem_put_file(), gp_camera_folder_put_file(): Added "filename" argument to pass in the filename. The one from CameraFileInfoFile and CameraFile are no longer used. Added "type" argument to pass in the filetype (GP_FILE_TYPE_*). * Adjusted to new GPPortInfo handling. * Rewrote gphoto2-filesys.c to be directory based (in a tree structure). Change should not be visibile outside of gphoto2-filesys.c. libgphoto2_port API: * GPPortInfo is now abstracted and internal. If you need to retrieve name, path or type, use gp_port_info_get_xx (info, &x); to get the value. Name and path strings continue to be owned by libgphoto2_port, do not modify and do not free. You are not supposed to create / append new ones to GPPortInfoList. * Disk Settings have been removed from the Settings union. Should not affect frontends at all. * Started using symbol versions. PTP2 driver: * Lots of improvements. * PTP Object management rewritten, able to do "on demand" loading. Directory driver: * Use GPPortInfo instead of settings to pass basepath in. * Abstracted common functionality. Build: * Removed dummy README file from SVN. * Ship README.packaging in dist tarball for the first time. * Allow building "all plus non-default" camlibs. * Fix libltdl test compile for cases with LDFLAGS defined. Documentation: * Optionally (--enable-internal-docs) build internal doxygen docs with call graphs and all the dirty details. * Improved docs on how to selectively build camlibs. Test cases: * Test camlib loading of both uninstalled and installed camlibs. ------------------------------------------------------------------------ libgphoto2 2.4.14 packaging: * new udev 175 mode for print-camera-list (from Ubuntu) libgphoto2: * fixed stupid bug in directory listing (fixes "canon" driver) libgphoto2_port/usb: * Fixed stv680 usb config alternate setting (unbreaks stv680 driver) canon: * enhanced wait_for_event a bit. ptp2: * Nikon viewfinder enable/disable via config * added Nikon S6000, Canon PowerShot A3000, PowerShot SX230HS, Canon EOS 5D Mark III, Sony SLT A35, Nikon Coolpix AW100 * lowlevel Canon EOS CustomFuncEx support added * Canon EOS 5D Mark III imagesize packing/unpacking support * Samsung Galaxy file handling support restored * match configuration table values more exact and correct. * mtp player list synced with libmtp translations: * updated russian, ukrainian, danish, czech, german examples: * sample-tether added libgphoto2 2.4.13 libgphoto2_port/libusb1: * fixed accessing freed memory which lead to non-working communication * use the correct context everywhere avoid crashes on startup on newer libusb1 * fixed and rewrote the whole device caching mechanisms for major initial speedup. ptp2: * Implemented fast Canon EOS directory loading storage: * add ogg, mp3, mp4 extensions to "good" translations: * updated polish libgphoto2: * capture to card added a lonely file to a camera folder instead of getting the content from the card ------------------------------------------------------------------------ libgphoto2 2.4.12 libgphoto2_port: * Added libusb 1.0 port driver. * removed baudboy.h support from serial driver. * Updated translations: czech, german canon: * Secondary RAW 2 format for some cameras. directory: * Handle more suffixes to mimetypes (unknowns will not show up in the file list): moov, qt, qtvr, mp2, mpeg, mpe, srw, 3gp, 3g2, dif. * set the correct filetime ptp2: * New cameras: Kodak C1530 Sony DSC-HX100V, DSC-A1000, SLT-A55 Nikon CoolPix P7000, P7100, P500, L120, L23, S5100, S3100, Nikon D2Hs, D5100 Canon EOS 10D, 1D Mark IV, 1100D, 600D Canon PowerShot A2000IS, A3100IS, Fuji FinePix F80EXR, X10 Apple iPad, iPhone 4 Panasonic DMC-TZ18, TZ20 * Canon Powershot event handling changed to no longer use PTP Events. Should now be more reliable on MacOS. * Nikon configurations added: videomode, scenemode, exposure program mode, effect mode, liveviewaf, liveviewaffocus, cleansensor, microphone, moviequality, autodistortioncontrol, autoisopadv renamed to minimumshutterspeed. * Allow per-camera configuration tables. * Canon EOS configurations added: "Immediate" for shutter button pressing, * Handle missing runtime iconv module support (as found in embedded devices) * Bump retries on EOS liveview getting * Fixed stupid EOS event handling bug that caused a 1.5 second delay * Fixed more session startup issues * Tried a fix for getting bad thumbnail lengths sierra: * Bugfix: handle ACK as valid response code tp6801: * New driver for Tenx tp6801 picture frames from Hans de Goede. digigr8: * added Digital Blue Barbie Camera DC150, Cobra Digital Camera DC150, Aries Digital Keychain Camera, ITEM 128986, Lego Bionicle jl2005c: * added Sakar Nickelodeon iCarly no. 88061, Sakar Dora the Explorer no. 88067, Jazwares Star Wars no. 15256 libgphoto2: * make jpeg and gd support configurable (Gentoo) * Updated translations: pl ------------------------------------------------------------------------ libgphoto2 2.4.11 ax203: * Various new ids: GigaDevice GD25Q40, GD25Q80, GD25Q16 ST M25P08, M25P16, M25P32, M25P64 Winbond W25Q80, W25Q16, W25Q32 * Various bugfixes canon: * implemented a basic wait_for_event() so --capture-tethered works (not working correctly for CR2+JPG, but JPG or CR2 stand alone will work) * Some bugfixes digigr8: * Added Lego Bionicle camera. directory: * More mimetypes that are images added jl2005c: * Reduced stack usage (do not have 5MB arrays on the stack), making it work in programs with stacklimits mars3: * Added Shift3 camera. sierra: * rewrote the USB wrapped command handling to use "usbscsi" port. Now its no longer necessary to detach the mass storage driver. ptp2: * Allow by-camera specific configuration (used for Nikon DSLR currently) * Added some Nikon D90, D3s specific tables. * Canon EOS: support remoterelease (remote trigger manipulation) via eosremoterelease config option * Merge some CHDK code (not tested working with my SX100IS -Marcus) * Make setting properties via the "other" config tree work. * merged new media player ids from libmtp * Timeouts configurable * New cameras: Kodak Z710, C183 Nikon CoolPix S7c, P90, P100, S8000, S3000, S9100 Nikon DSLR D3s, D3100, D7000 Casio EX-Z65 Canon Powershot SD1300 IS, SX210 IS, SX130 IS, Canon EOS 60D Fuji FinePix A220, Z700EXR, * Some capture bugfixes * Lots of bugfixes st2205: * Minor additions libgphoto2_port/usb: * Avoid MTP probing. Done by libmtp these days, also confuses some devices. * Do list less usb:XXX,YYY ports for things that are not cameras. libgphoto2_port/usbscsi: * Fixed symlink handling in device detection for newer kernels. * Decode SCSI sense data received. libgphoto2 * Updated translations: danish, german, spanish, basque, french, hungarian, italian, japanese, dutch, polish, russian, swedish, ukrainian, vietnamese, simplified chinese libgphoto2_port * Updated translations: czech, danish, german, spanish, basque, french, italian, japanese, dutch, polish, brazilian portuguese, russian, slovakian, swedish, ukrainian, vietnamese, simplified chinese, traditional chinese ------------------------------------------------------------------------ libgphoto2 2.4.10.1 This is a regression + translation fix update only translations: * libgphoto2_port updated: russian, slovakian * libgphoto2 updated: italian, polish, russian sts2205: * Fix build without GD development headers due to stray ; ptp2: * linear backoff waiting for Nikon events to reduce load * ptpip senddata fix (was broken before) * be more careful with USB interrupt checks on MacOS X, as they do not timeout currently. ------------------------------------------------------------------------ libgphoto2 2.4.10 This is a 2.4 release branch update. libgphoto2: * Translation updates (polish, vietnamese). * The "usb:" generic matcher entry is not reported anymore. Auto detection will now always return "usb:XXX,YYY" and "usb:AAA,BBB" values. You can still pass "usb:" in. * The generated UDEV rules for version 136 and later have been changed: - PTP class is shortcut to avoid 1000 entries to be evaluated for the common camera case. - USB Mass Storage is now skipped and not tagged as gphoto supported. This should avoid confuse users with MTP players in dual mode. (Done just for the cameras and MTP players, not for the picture frame drivers). st2205: * Link iconv (MacOS build fix) * "delete all files" implemented. ax203: * Various improvements and bug fixes * new compression method supported for ax206 ptp2: * New PTP event handling added. This might have caused some instabilities in capture code. * Fixed EOS capture to card waiting 1 minute bug * Fixed EOS capture "no focus" waiting 1 minute bug * EOS "eosviewfinder" enable/disable option. * Pass up more EOS events via wait_for_event (property changes, and all unknown events). * EOS Viewfinder Zoom Level and Position added * Fixed setting multiple configuration values at once. * Handle MTP -> Vendor id mapping for PTP/IP cameras. * Lots of bug fixes. * Added new IDS: Kodak Z950 Sony DSC-S370 Nikon CoolPix 7600, L110 Panasonic FZ38, DMC-GF1 (only download support), Canon PowerShot D10, SX120 IS Fuji FinePix F60fd, F70 EXR, S1800, S5800 Pentax Optio W90 sierra: * Added Olympus E-520 canon: * ability to read and set "shooting mode". digigr8: * merged from TRUNK: new camera "Stop & Shop 87096", some cleanups and bug fixes jl2005c: * Decompression decoded and driver now working. Enabled by default now. libgphoto2_port/usbscsi: * Check for scsi/sg.h and use it only if present (MacOS build fix) libgphoto2_port/usb: * Do not filter out "usb:XXX,YYY" ... but have both usb: and usb:XXX,YYY for now. ------------------------------------------------------------------------ libgphoto2 2.4.9 This is a 2.4 release branch update. ptp2: * Fixed EOS viewfinder capture speed (2 images/s -> 20 i/s) * EOS event handling cleaned up, so that we can also have dual image capture (RAW+JPEG). * New Canon EOS properties: autoexposuremode, cameraoutput, evfmode, uilock. * New Nikon property: exposuredelaymode * Fixed a Canon PowerShot configuration bug that caused hangs. * Fixed a Nikon CoolPix configuration bug that caused hangs. * Fixed shutterspeed setting to be more generic. * New IDs added: Nikon Coolpix 8800, P6000, L20, L19 Panasonic FS62 Olympus FE4000/X920/X925, Canon EOS 550D Canon Powershot A2100IS, SD970IS, SX20IS, IXUS 120IS Fuji FinePix S1500, Z35, S2500HD Apple iPhone 3GS * Some bugs fixed, some memory leaks closed. * music-players.h merged from libmtp, bringing new MTP devices. ST2205 Driver: * New Pictureframe driver from Hans de Goede. st2205 based frames present themselves as a regular usb mass storage device, but cannot be used as a normal disk! Communication with the device happens by a special protocol which consist of reading / writing sectors of the disk at certain magic offsets. Also included is a "usbdiskdirect" port driver, which allows the direct sector access the camlib for these devices needs. AX203 Driver: * New Pictureframe driver from Hans de Goede. ax203 based frames present themselves as a usb mass storage cdrom, which contains the windows software. Communication with the device happens by issuing special (custom) scsi commands. Also included is a "usbscsi" port driver, which allows sending the custom scsi commands. Note that if your ax203 frame has a usb-id of 1908:1315, you need to tell Linux not to touch the HID device this version also presents in its USB descriptor. To do this add the following on the linux kernel cmdline: "usbhid.quirks=0x1908:0x1315:0x4" digita: Made to work again hopefully after breakage due to filesystem changes. ------------------------------------------------------------------------ libgphoto2 2.4.8 This is a 2.4 release branch update. libgphoto2: * Updated translations. * Added read-only flag for Widgets. gp_widget_set_readonly / gp_widget_get_readonly. * GP_EVENT_CAPTURE_COMPLETE event added from trunk. * Some bugfixes. ptp2: * New USB IDs for cameras: Kodak Z915 Nikon CoolPix S220, S225, Nikon DSLR D5000, D3000, D300s Canon PowerShot SD770 IS, A580, SD1200, IXUS 95 IS, G11, IXY 220IS, SD940IS Canon EOS 7D Fuji S5 Pro Sea & Sea 2G Also merged new libmtp deviceids. * Fuji S5 Pro capture support. * Bugfixes in Canon EOS preview code. * Fixed NIKON DSLR shutterspeed not able to set bug. * Nikon error decoding. * Several Canon EOS configuration and capture additions and fixes, focus pulling. * PTP protocol stability improvements. * Lots of bugfixes. sierra: * restrict list of choices for Nikon Coolpix 4300 directory: * Merged from TRUNK to gain the good stuff. libgphoto2_port/usb: * Updated translations. * Check for MTP devices by string descriptor first and by OSD later. ------------------------------------------------------------------------ libgphoto2 2.4.7 This is a 2.4 release branch update. libgphoto2: * Translation updates from translationproject.org. * Widget and choice lists now dynamic, to be able to create longer ones. * 3rd generation UDEV rules emission, now able to emit "post HAL" UDEV rules. print-camera-list udev-rules version 136 > /lib/udev/rules.d/40-libgphoto2.rules * Disabled LRU of images. Not really useful in times of USB 2.0, also disabled by at least Debian und Ubuntu already. libgphoto2_port / USB: * If we detached a USB driver, reattach it on close. This allows using e.g. cheap camera as both webcam with in-kernel driver and still camera with libgphoto2. PTP2 driver: * Renamed various configuration options and changed values to match a unified model. Some common names have changed: owner->ownername exptime->shutterspeed eos-* -> non-eos prefixed variants etc. You will need to review configuration setting code if you have any. * Create config submenus /actions for action triggers and /status for read-only values, moved stuff there. * New IDs: Kodak M863 Canon Digital IXUS 110IS, IXUS 100IS, Powershot SX200IS, SD780 IS, A1100IS Canon EOS 500D Fuji Finepix F200 EXR Apple iPod Touch first generation * Lots of Canon EOS capture improvements, for card capture, for LiveView, and for property setting. More properties are now possible. * Canon EOS Bulb mode support (available in newer canons). --set-config bulb=(0|1) * Fixed Nikon DSC shutterspeed setting (also for times < 1/1000) * Enable Viewfinder on demand for Canon Powershot, not for all capture things. * Generic PTP Property Get/Set in the configuration handling. * Decode more Nikon DSC properties (for D90 now nearly complete). * Turned several PTP generic commands to macros to reduce number of functions. * MTP player list synced with libmtp 1.0. * Lots of bugfixes. Canon driver: * Renamed various configuration options and changed values to match a unified model. ------------------------------------------------------------------------ libgphoto2 2.4.6 This is a 2.4 release branch update. PTP2 driver: * Fixed Nikon DSLR capture in LiveView mode (like gtkam uses). * More Canon EOS stuff decoded, added experimental "capturetarget" support for EOS. * Canon EOS LiveView support (experimental, reported working for EOS 1000D). * Added new USB ids: - Kodak V803, M1063 - Canon PowerShot A650IS, SD990 (aka IXUS 980IS), SD880IS, A480 - Canon EOS 50D - Fuji FinePix S1000fd * Retrieve filedates again from PTP objects. * speedup: Do not list files on / (there aren't any). * Bugfixes. Canon driver: * Support Exposure Bias setting. * More shutterspeeds. libgphoto2: * Fixed a problem during file retrieval which causes Canon Normal --capture-image-and-download errors, handle CR2 and CRW mimetypes. * Fixed ordering of filelists again that broke the digigr8 driver. * Translation updates. digigr8: * Added a new version of the disney pix micro. ------------------------------------------------------------------------ libgphoto2 2.4.5 This is a 2.4 release branch update. PTP2 driver: * Increased timeout for Canon Viewfinder enable. * Fixed intial Canon timeout (0.5 -> 1.5 seconds), was too small for some Canons. * Canon EOS capture mode and tethered mode bugfixes. * Nikon DSLR LiveView support, with Autofocus and ManualFocus Drive possibility. * Nikon tethered capture fixes. * New cameras listed: Nikon CoolPix P50, S60 Canon Digital IXUS 85 Canon PowerShot A740, G10, Canon EOS 5D Mark II * Merged new IDs of Music Players from libmtp. * Lots of bugfixes. KODAK DC240: * Made driver work again. * Cleanups libgphoto2: * rewrote gphoto2-filesys.c to be dynamic and fix LRU problems. (backport from TRUNK) * Translation updates. libgphoto2_port: * added --enable/--disable configure options for: disk, serial, ptpip * added --with/--without configure options for: bonjour, hal * backported Gentoo "if just canon driver selected, auto-select ptp2 driver" usability fix. * Translation updates. ------------------------------------------------------------------------ libgphoto2 2.4.4 libgphoto2: * Updated translations from translationproject.org PTP2 driver: * Developed in parallel with TRUNK. * Only retrieve and initialize the ptp filesystem if needed (this will give speed ups for config operations, basic init and summary.) * Export the hidden vendor specific properties of the current Nikon DSLRs. (over a hundred with all camera configuration details...) (D80, D90, D300, D700, D40x got, D200 guessed) * Lots of new Nikon DSLR and Canon Powershot properties implemented, both printed in summary and available for config functions querying and/or setting. * Query and Set image protection flags (actually used by digikam). * Lots of bugfixes and changes in Canon and Nikon specific capture routines. * Some defines for PTP 1.1 added. Will have to wait for implementation until a device gets available. * New cameras added: Kodak C913 Nikon D90 Canon Digital IXUS 960IS, EOS 1000D, SD1100 IS, SX10 IS, SX110 IS Fuji FinePix A920, F100fd, S200HD Apple iPod Touch (just saved screenshots and uploaded images) * PTP v1.1 defines added (implementation will start once devices are available) * Synced MTP device list from libmtp (0.3.5 level). * Lots of bugfixes. jl2005c: * Experimental driver for jl2005c based cameras added. Can only retrieve raw images currently, no viewable images yet. Not builtin by default. ./configure --with-drivers=all,jl2005c libgphoto2_port: * Updated translations from translationproject.org * Serial driver: do not lock device during probe to reduce startup time. ------------------------------------------------------------------------ libgphoto2 2.4.3 This is a 2.4 release branch update. libgphoto2: * Adaptive Homogeneity-Directed Bayer array conversion added, used in several camera lib drivers. * Translation updates for various languages. * libtool 2.x build fixes * Various MacOS X compile fixes again. * gp-byteorder.m4 fixes for newer glibcs. Example programs: * Addes some basic library usage example programs and helpers. PTP2 driver: * Merged camlib from TRUNK. * Tethered Capture support for Canon EOS 40D, 400D, 450D. * Always handle "no directory linking to /" problem. * Disable more Panasonic cameras (product id 0x2372 is always mass storage) * Some MTP fixes, lots of new MTP devices. * Fixed canon viewfinder issues on Canon PowerShot SX100IS. * Fixed a ptp property packing issue exposed by newer Nikons. * Added new devices: Kodak M893 IS, C813 Nikon CoolPix L16, CoolPix 8700, DSC 700 Canon EOS 1D Mark III, IXUS 90IS, EOS 50D Apple iPhone 3G Canon driver: * Fixed some unlock keys problem for EOS cameras. * Moved over several PTP2 supported cameras to the PTP2 driver only. Sierra driver: * Implemented basic Storage Information function. * Fixes for big endian or 64bit architectures by fixing struct packing. smal driver: * Added support for Creative CardCam. sq905 driver: * Updated postprocessing, by using "AHD" bayering and new gamma methods. * Bugfixes. stv0680: * Storage information function. digigr8, mars, sonix drivers: * Updated postprocessing, by using "AHD" bayering and new gamma methods. jl2005a driver: * Imported from TRUNK, for new small factor cameras. American Idol Keychain Camera NogaNet TDC-15 ------------------------------------------------------------------------ libgphoto2 2.4.2 This is a 2.4 release branch update. libgphoto2: * Camera abilities list sorting now uses qsort(), bringing startup speedups by seconds. (0.4 seconds on 2GHz machine). * On large files, do not try to retrieve thumbnails. * Updated lots of translations. PTP2 driver: * Full merge of TRUNK ptp2 camlib. * Lots of new IDs added. Also changed MTP id handling to share devices with current libmtp. * Canon now can capture to both CF/SD Card and internal memory with extract/retracting the lens. "capturetarget" config option determines which ones used. * EOS capture support made working with newer Canon EOS models, now reported working for EOS 400D, 450D, 40D. * Handle MTP -> Canon/Nikon vendor id transitions better. * Download cancellation support. * Handle canon cameras with shorter timeouts on startup (hopefully does not break) to avoid very long second startup delays. * Lots of bugfixes. Canon driver: * Configuration of Flash, Beep and Zoom added. * Enable/disable remote mode only once per session (on demand) * Fixed a CR2 thumbnail download problem. * Fixed a THM download problem (for movies). * Moved some more cameras over to PTP2 driver. Topfield driver: * New driver for Topfield PVR5000 device(s). * Sony DSC F1 (old serial) driver: * Merged from TRUNK, working now. libgphoto2 2.4.1 This is a 2.4 release branch update. Package / System integration: * HAL FDI files now use "info.subsystem" instead of "info.bus", required by hal after March 2008. * Suppress another Olympus camera in FDI file that is better of done using Mass Storage only. libgphoto2_port: * Suppress more known network filesystems in "disk" autodetection * disabled usb_reset for Canon cameras in "usb", broke EOS cameras. PTP2 driver: * Merged all new Camera IDs from TRUNK. * Configuration bugfix for multiple options with the same name. * Capture bugfix for Nikon Coolpix * Various small bugfixes. Canon driver: * Increased the event timeout, so operations work again. * Fixed a bug in interval capture * some additional configuration values for newer cameras Mars driver: * Synced with SVN TRUNK (1:1 copy). * Better whitebalance postprocessing * Camera ids added * Decompression fixes Digigr8 driver: * Synced with SVN TRUNK (1:1 copy). * bugfixes Sonix driver: * Synced with SVN TRUNK (1:1 copy). * bugfixes ------------------------------------------------------------------------ libgphoto2 2.4.0 release Build: * Non-recursive camlib build: Makes "make -j2" useful. "./configure --with-drivers=..." still works. Selective camlib rebuild is "make -C camlibs agfa_cl20.la" now. Selective camlib install is "make DRIVERS='canon.la ptp2.la' install-drivers". * Fix sierra and canon drivers picking up old gphoto2 headers. * libiconv linking fix for PTP2 driver. * Require external libltdl. * Ditched autogen.sh, use standard autoreconf from stock autoconf. * Put auto* files into auto-aux/ and auto-m4/. * Accept utilsdir and udevscriptdir set by user (#1646520). * Introduce libgphoto2-uninstalled.pc pkgconfig file (#1643245). * Remove make dependency on $(LIBLTDL) aka "-lltdl" (#1548195). libgphoto2 API: * New gp_file_new_from_fd() ... Which allows mapping CameraFile to UNIX filedescriptors for both reading and writing. * New gp_file_slurp() function (for camlib use) to sequentially read out CameraFiles. * New gp_camera_get_storageinfo() API added to get programmatically the storage information(s), like capability, free space and labels. On cameras not supporting it returns GP_ERROR_NOT_SUPPORTED. * Enhanced Bayer algorithm added globally. Package / System integration: * New syntax for print-camera-list's udev output. See help output. Note that we generate udev >= 0.98 output by default. Use "version pre-0.98" on the commandline to generate the old version. * Add new permission setup binary doing Microsoft OS Descriptor retrieval for MTP devices not explicitly listed. This binary (check-mtp-device) is used by the generated UDEV rules. (Not working currently since udev does not create the device before calling it.) disk port: * handle automounter properly. directory driver: * ignore anything not starting by '.' because it is not DCF compliant and it is use for things like Trash of metadata... PTP2 driver: * For Canon capture capable cameras, enable shutter and aperture control using "shootingmode" property (PTP d00c), and focuslock mode. * New dataflow engine, making it possible to upload/download images or songs without taking up any system memory. (think multi GB movies on small devices). * Enhanced MTP protocol handling. * Cleanups and bugfixes. * New USB IDs for cameras: Canon PowerShot SD1000, SD900, A450, A550, A560, A570, A420, SD40, SD750 Canon PowerShot S5 IS, SD1000 Canon Digitial IXUS 70, 75, 900Ti, iZ Canon MV750i Nikon CoolPix S4, S6, P4, L10 Nikon DSC D40, Kodak EasyShare C433, C613, C653, C743, C875, V570, V610, V705, P880, V603, Z712 IS HP Photosmart R967 Minolta DiMAGE x21 Fuji FinePix F20, F40, S9500 Casio EX-Z700 Sony DSC N2, W35, W200 Apple iPhone * Several new USB IDs for MTP players, including all from libmtp: iRiver T20, N12, iFP-800, T20 2, Clix2 Archos 504, Toshiba Gigabeat P20 Philips PSA235, SA9200 Samsung YH-925GS SanDisk Sansa c250 Canon driver: * Enable formerly experimental 20D support code by default. * Moved handling of some cameras to PTP2 driver, since they cause as yet unidentified errors. ------------------------------------------------------------------------ libgphoto2 2.3.1 PTP: * Fixed a memory leak in continuous Nikon / Canon capture mode. Bindings: * Moved all bindings into separate packages. Package / System integration: * Add README.packaging file for packagers. * Removed obsolete print-usb-usermap. Use "print-camera-list usb-usermap usbcam" instead. * Fix libgphoto2 symbol list: Removed gpi_gphoto_port_type_map * Add new permission setup script doing class based matching for PTP class cameras not listed explicitly by USB IDs. This script (check-ptp-camera) is used by the generated UDEV rules. Example usage: print-camera-list udev-rules mode 660 group plugdev \ > /etc/udev/rules.d/90-libgphoto2.rules or similar and set udevscriptdir='/lib/udev' at configure time or adjust the path to check-ptp-camera in the generated /etc/udev/rules.d/90-libgpoto2.rules file. ---------------------------------------------------------------------------- libgphoto2 2.3.0 PTP: * Improved Nikon remote control * Improved Canon file download - faster directory retrieval (especially on cameras with lots of files) - "new" images are marked (gphoto2 --new, digikam) * MTP Playlist support (upload and download) * MTP Metadata support (upload and download, Artist, Title, Playtime ... ) * Lots of other MTP related fixes. * MTP autodetection on Microsoft OS Descriptor. * New devices: Canon PowerShot A540, A530, S3 IS, SD430, SD700, IXUS 800, IXUS 60, A630, SD630, G7, Digital IXUS 65, 710IS, EOS 400D, Digital Rebel XTi, IXUS 850 IS, PowerShot A640, IXUS Wireless (USB support only currently) iRiver T20 FM, iClix Creative Zen Vision W, Vision M, Vplus, V Dell Pocket DJ Nikon Coolpix L4, L3, L1, D80, P3 Kodak Easyshare Z740, P850, Z612, C633, C643, C530, Z612, CD33 Sony DSC-U10 Leica D-LUX 2 Olympus IR-300 JVC Alneo XA-HD500 All currently known HP Photosmarts (sync with Windows Driver .INF files) various Samsung devices Canon: * 5D - 20D experimental capture support (default disabled) Kodak DC120: * Bugfixes to make it work. Mars: * RAW files saved with size information. * Some new ids, lots of bug fixes. Ricoh G3: * Added Ricoh Caplio R4 id. Disk port: * Addes Solaris filesystem table handling. * Fixed a crasher. * Skip "fuse" filesystem. SiPix Blink: * Disabled build, since it cannot the downloaded data to usable images. Sonix: * Bugfixes and support for Sakar Digital Keychain 11999. Bindings: * Removed the Mono/.NET bindings due to unclear license. * Partial Java bindings libgphoto2 API: * Compiles with -pedantic in gcc's c99 and c++98 modes. * Marked a few definitions as being internal to the gphoto project. * Added gp_list_find_by_name() function. * Made _CameraList details private. libgphoto2: * Fixed some directory handling problems for MTP players. * Improved error checking and propagation. * New error code for "fixed limit exceeded" (exceptions would be nice) * Added a few internal functions. ---------------------------------------------------------------------------- libgphoto2 2.2.1 * Fix build for FreeBSD users (and other non-Linux) ---------------------------------------------------------------------------- libgphoto2 2.2.0 Build system (packagers beware!): * You should generate HAL FDI, linux-hotplug usb.usermap, and udev rules now via our program: ${libdir}/print-camera-list (hal-fdi|usb-usermap|udev-rules) During a chrooted build you can use: CAMLIBS=$BUILDROOT/usr/lib/libgphoto2/2.2/ print-camera-list hal-fdi This obsoletes print-usb-usermap and print-udev-rules. The hal FDI file should be put into: /usr/share/hal/fdi/information/20thirdparty/10-camera-libgphoto2.fdi If you need to generate different stuff based on the cameras, please add it to the "print-camera-list" helper. * Added C# (csharp) bindings Thanks to Patrick van Staveren 's initiative, we now compile, ship and install the C# bindings. However, a few things will still change about it, so don't just completely rely on it, its file names and locations, etc. just yet. Client programmers (KDE, GNOME, MONO, C....) with specific character set requirements: * We added new function gp_message_codeset(const char*) to API. - If you do not call this function, libgphoto2 will give you its messages in the codeset defined by the system locale. (The system locale is defined by the LANG, LANGUAGE, and LC_* environment variables.) - Call this function with your desired codeset if you require libgphoto2 messages in a fixed codeset independent from the system locale. For example, GTK+ applications always expect UTF-8. - gp_message_codeset() propagates the requested charset to libgphoto2_port and then calls gettext's bind_textdomain_codeset() function. * Added gp_camera_wait_for_event() API, to wait for specific camera events and return them to the caller. libgphoto2 changes: * libgphoto DSO version is now 2.1.0 * Lots of bugs were fixed. * New translations were added. Driver changes: * PTP - PTP/IP support has been added. - On selected Nikon and Canon cameras it is now possible to capture images into the Camera SDRAM and in turn downloading it to libgphoto2 internal storage, bypassing the memory card. To enable it, use the "capturetarget" setting, also saved in .gphoto/settings. This is useful for: gphoto2 --capture-image -f /store_00010001 -p capt0000.jpg Or use the timelapse capture of gphoto2: gphoto2 --capture-image -F -I Or write your own client using libgphoto2... - Support of MTP devices has been greatly enhanced. + Creative Zen devices now work. + iRiver devices work, but have some protocol subtleties / flaws. + Object Property (Meta Data) support now works in a basic way. GP_FILE_TYPE_METADATA type get and put can be used to retrieve and set meta data for files. get: Returns all available properties and their contents. put: Set the properties found in the file to the specified content. The non-listed are untouched. The metadata looks like: Elvis Presley gphoto2 -f /store_00010001/Folder... --get-metadata file.mp3 --stdout > meta_file.mp3 ... edit meta_file.mp3 ... gphoto2 -f /store_00010001/Folder... --upload-metadata meta_file.mp3 gphoto2 --get-all-metadata ... retrieves metadata of all files, with meta_ prefix. - Better --summary output, listing also Storage Devices and Device abilities. - Lots of new device ids. * Canon 5D, 30D, A340, A700, S40, S80 * Nikon D200 * Casio EX-Z120 * Kodak C360, Z700 * HP M317 * Panasonic DMC-LC1 * Fuji E900 ---------------------------------------------------------------------------- libgphoto2 2.1.99 (pre-release of 2.2) Build system (packagers beware!): * now requires libltdl (from system or shipped with tarball) * works with contemporary build tools * new ./configure parameter set * no more accidentally building without libusb (use --without-libusb if you insist on that) * camlibs and iolibs are now installed into new directories * libhal 0.5 is currently an option for the disk: port. Distribution that ships it might want to build it with it. libgphoto2: * If set, use environment variable CAMLIBS to find the camera drivers. Ditto for libgphoto2_port, IOLIBS and IO drivers. * disk: "port" for USB Mass Storage support * various USB fixes * Generate .fdi files for HAL * Memory usage greatly reduced by only keeping last 2 pictures in memory cache Drivers (camlibs) * basic MTP support for iRiver mp3 players using ptp driver T10, T20, T30, M415 * canon * IXY Digital 600 fixes * Added A610 * Experimental SD500 * Experimental A620 (not really working) * casio * various fixes in QV-10 driver * digigr8 (NEW) * support Digigr8, Che-Ez Snap SNAP-U, Soundstar TDC-35 * kodak/dc210 * Added DC215 * ricoh/g3 * Ricoh Caplio GX, GX 8 * Ricoh R2, R3 * Rollei dr5 * hp215 (NEW) * support HP 215 * lg_gsm (NEW) * support LG T5100 * mars * various fixes * Added Argus DC-1620, DC-1610 (experimental) * Added Philips P44417B * pdc640 * Added Clever CAM 360 * ptp * For Nikon, handle ISO speed, aperture, exposure program, capture, focus metering mode, flash mode, AF beep toggle * Nikon curve * Added Kodak Z730, Z7590, C340, LS753, V530, V550, C310, C330 * Added Nikon D50, D70s, 4600, 4800, 5600, 5900, Coolpix P2 * Added Canon A410, A520, A610, A620, IXUS 55, SD450, IXUS 750 * Added HP R817, Photosmart M23 * Added Olympus D-540z, C-310z, X-100 * Added Panasonic Lumix FZ5, DMC-LZ2 * Added Ricoh R3 * Added Sony DSC-H1, DSC-R1 * Added MTP devices (mp3 players) * Some iRiver MTP devices (mp3/ogg players) are supported too, but are experimental. While the "Creative Zen Micro" is also an MTP device, we were not able yet to decipher the PTP protocol deviation. In general, MTP devices can be supported here, but you need to add the ID in camlibs/ptp2/library.c directly, since they do not have a USB class id. * Now supports a "fast filesystem" mode on newer Nikon PTP cameras. This speeds up initialisation notably on cameras with lots (>50) of images. However, this mode does not find the special files on the camera (AUTPRNT.MRK). It also cannot represent the correct directory structure. For normal users (who just download and process the images) the "fast" mode is recommended. It can be toggled in the "Camera Settings" menu and ~/.gphoto/settings. * sierra * various fixes * Added C-770UZ * sq905 * various fixes * fix some crashers Bindings * added Java (patch# 1108091) * added Python (patch# 1152835) * added C# Translation updates: * da * it * ru * vi * zh_TW ---------------------------------------------------------------------------- libgphoto2 2.1.6 General libgphoto2 features: Drivers (camlibs): * sierra driver: - We now support the hidden Sierra Mode on Nikon and Pentax cameras (which are otherwise just USB Storage cameras). The USB Storage driver is automatically detached on open. This allows remote image capture with those cameras for instance. ------------------------------------------------------------------------ libgphoto2-2.1.5 ------------------------------------------------------------------------ On 2004-12-16, we are proud to release libgphoto2 2.1.5 to the world. libgphoto2 2.1.5 features support for more than 400 digital cameras. The changes since the 2.1.4 release are mostly bug fixes and support for new cameras, and support for multiple cameras of the same type at the same time. See the CHANGES file for more details. Have fun with libgphoto2 and your pictures! The gphoto2 team. ---------------------------------------------------------------------------- libgphoto2 2.1.5 * Support multiple USB devices by introducing additional USB ports, usb:,. drivers (camlibs): * PTP driver: - Lots of new ids were collected (across all vendors). - Raw download support for newer cameras fixed. * sq905, mars, aox drivers: - New drivers written by Theodore Kilgore for: - Aiptek Pencam VGA+, Emprex PCD3600 (mars) - Concord EyeQ mini (aox) - Lots of SQ 905 based cameras (sq905) * sierra driver: - Toshiba PDR support added. * sonydscf55 driver: - bugfixes, downloading of MPEGs. * casio-qv driver: - working serial support added. * canon driver: - Several new ids added. ------------------------------------------------------------------------ libgphoto2-2.1.4 ------------------------------------------------------------------------ On 2004-01-18, we are proud to release libgphoto2 2.1.4 to the world. libgphoto2 2.1.4 features support for more than 400 digital cameras. The changes since the 2.1.3 release are mostly bug fixes and support for new cameras, nothing major. See the CHANGES file for more details. Have fun with libgphoto2 and your pictures! The gphoto2 team. ---------------------------------------------------------------------------- libgphoto2 2.1.4 general: * fixed recursion problems during capturing * Support for multiple USB cameras NOT included yet. Reason: It breaks several applications. drivers (camlibs): * Canon driver: - added support for G5, Optura 20, ZR-70MC - re-added support for A300 and S50 - fix erroneous file size limits * PTP driver: - enhanced Canon Capture support - added id for Canon Digital IXUS i - added Olympus C-350Z, D-560Z, X-250 - added Sony DSC-U20, DSC-P52, DSC-P72, DSC-P92 - updates from libptp2 * ricoh driver: - working G3, G4 support * sx330z driver: - added Maginon SX-410z * spca50x driver: - do not delete everything and fail to download on Aiptek 1.3 * polaroid drivers: - fixed support for D-Link 350F, Skanhex SX-35 - added support for Trust 350FT PowerC@m FLASH packaging: * linux hotplug scripts: - use correct directories in usbcam.x11-app libgphoto2_port: * serial bug fix with speed 0 ------------------------------------------------------------------------ libgphoto2-2.1.3 ------------------------------------------------------------------------ On 2003-10-19, after a long time, we have finally released a new version of libgphoto2. Version 2.1.3 now features support for almost 400 digital cameras. The most important changes since the the 2.1.1 release are: - PTP driver rewritten completely - support for lots of new cameras - fixed a nasty segfault bug See the CHANGES file for a more complete list. Have fun with your photos! The gphoto2 team. ---------------------------------------------------------------------------- libgphoto2 2.1.3 * builtin cache: - use all available RAM on systems without memory size detection drivers (camlibs): * Canon driver: - added support for EOS 300D - fixed ProductID for PowerShot S45 - fixed support for serial cameras - fixed thumbnail stuff * New driver for Ricoh Caplio G3. * Smal driver: - misc improvements * PTP2 driver: - added misc cameras - thumbnail hacks (?) ---------------------------------------------------------------------------- libgphoto2 2.1.2 * fixed nasty stack overflow/segfault bug * improved/fixed support for Sun drivers (camlibs): * All drivers: - report vendor/model in a new (formatted) fashion * Canon driver: - added support for capturing on consumer class cameras, tested on Canon PowerShot S45, Canon PowerShot G2 - G2 works again running from AC adapter - multiple new models added (A60, A70, ...) * PTP2 driver: - Next generation PTP driver added, using this as default now. * New Agfa CL20 driver from http://cl20.poeml.de/. * New camera library spca50x for all chips supporting the spca50x bridges (merging the gsmart, benq and spca504_flash driver into one). ------------------------------------------------------------------------ libgphoto2-2.1.1 ------------------------------------------------------------------------ On 2002-12-01, after almost five months, we have finally released a new version of libgphoto2. Version 2.1.1 now features support for almost 300 digital cameras. The most important changes since the the 2.1.0 release are (see CHANGES for a complete list): - new support for quite a lot of new cameras - improved/fixed support for a lot "old" cameras - libgphoto2 and the gphoto2 command line utility are now separated - also moved documentation to a separate module Have fun with your photos! The gphoto2 team. ---------------------------------------------------------------------------- libgphoto2 2.1.1 * separated libgphoto2 sources from gphoto2 command line interface * gphoto2 manual moved to separate package gphoto2-manual drivers (camlibs): * Ricoh * Canon driver: - added support for Canon PowerShot A100, Canon PowerShot A200, Canon PowerShot S45, Canon PowerShot S230, Canon Digital IXUS v3, Canon PowerShot G3 - fixed Canon EOS D60 unlocking * PTP driver: - fixed some bugs - added support for Nikon D100 - added support for Canon PowerShot S45, Canon PowerShot S230, Canon Digital IXUS v3, Canon PowerShot G3 in PTP mode * added support for Mustek gSmart mini, Mustek gSmart mini 2, Mustek gSmart mini 3 and So. Show 301 * Polaroid driver: - added support for USB Jenoptik JD350v * SoundVision driver: - Added support for RCA CDS1005, FujiFilm @xia ix-100, Oregon Scientific DShot II, Media-Tech mt-406, and Scott APX 30 * added support for Aiptek Pencam and Medion MD 5319 -------------------------------------------------------------------------------- gphoto2 2.1.0 * repaired "make rpm" target * started "real" gphoto2 manual gphoto2 command-line interface: * optional readline support libgphoto2: * support for periodic keep-alive-messages drivers (camlibs): * improved support for PTP cameras: - multiple storage media - image capturing - driver stability and robustness improved (less problems with different cameras) * added support for Kodak DX-4900, Sony DSC-P5, Sony DSC-F707V, Sony DSC-P30, Sony DSC-P50, Sony DSC-S75, Sony DSC-S85, Sony MVC-CD300 * added support for Canon EOS D60, Canon PowerShot A40, Canon PowerShot A30, Canon PowerShot S200 aka Canon Digital IXUS v2, Canon Digital IXUS 330 * fixed support for Canon PowerShot S10 * Added SiPix Web2 support. -------------------------------------------------------------------------------- gphoto2 2.0 gphoto2 command-line interface: * Added gphoto2 manpage. -------------------------------------------------------------------------------- gphoto2 2.0beta5 libgphoto2: * Added Sony DCR-PC100 support. * Fixed serial cameras bug introduced in beta4. * Removed SiPix StyleCam from the STV0680 cameras list. gphoto2 command-line interface: * EXIF support (extra tags that contain information about the image produced by most digital cameras). * Fixed broken --delete-all-images. Also, recursion is now the default for downloading but _not_ for deleting. * Localization for Simplified Chinese. * Progress bar à la e2fsck -------------------------------------------------------------------------------- gphoto2-2.0beta4 -------------------------------------------------------------------------------- Hello lovers of digital cameras, gphoto2-beta4 is out! As you probably know, the word beta doesn't keep us from adding lots of new features: * Added/Improved cameras support (Canon PowerShot S30, ...), * Most functions report progress and are cancellable, * Support for Samsung 800k, PTP cameras, * STV0680 improvements, * Kodak DC3200 fixes, * Camera summary for Kodak DC240 driver, * and more ... Get it from http://www.gphoto.net/dist/gphoto2-2.0beta4.tar.gz and try it out! We are aiming at a final release in about 2 weeks from now, therefore if you want to see gphoto2 (or any frontend) translated, your camera working, or if you have any recommendation, speak up NOW! Happy downloading! Your gphoto2 team. -------------------------------------------------------------------------------- gphoto2-2.0beta4 libgphoto2: * Most functions report progress and are cancellable. * Camera libraries are now installed in a versioned subdirectories. * Stv0680 improvements. * Canon: added PowerShot S30 support, CameraFS support, big-endian systems support, RAW-File support. * Added ptp cameras support (Kodak DX series and much more). * Camera Summary for Kodak DC240 driver. * Samsung 800k support. * Fixed digita thumbnails bug. * French localization. * Japanese localization. gphoto2 command-line interface: * Now reports progress information (when user can see it). * Folder recursion is now the default behaviour. * French localization. * Japanese localization. libgphoto2-2.5.9/aclocal.m40000644000175000001440000015425512623156007012373 00000000000000# generated automatically by aclocal 1.15 -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- dnl serial 11 (pkg-config-0.29) dnl dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15], [], [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 and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_AR([ACT-IF-FAIL]) # ------------------------- # Try to determine the archiver interface, and trigger the ar-lib wrapper # if it is needed. If the detection of archiver interface fails, run # ACT-IF-FAIL (default is to abort configure with a proper error message). AC_DEFUN([AM_PROG_AR], [AC_BEFORE([$0], [LT_INIT])dnl AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([ar-lib])dnl AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) : ${AR=ar} AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], [AC_LANG_PUSH([C]) am_cv_ar_interface=ar AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a ]) AC_LANG_POP([C])]) case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) m4_default([$1], [AC_MSG_ERROR([could not determine $AR interface])]) ;; esac AC_SUBST([AR])dnl ]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])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])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. 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 m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [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". rm -rf conftest.dir 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 am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) 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 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; 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 ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj 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 $am__obj 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]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf 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 -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/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"` # 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'`; 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 } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. 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"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # 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.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl 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], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # 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]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _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])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. 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])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .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 # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # 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 ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # 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])]) # Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([gphoto-m4/gp-byteorder.m4]) m4_include([gphoto-m4/gp-camlibs.m4]) m4_include([gphoto-m4/gp-check-doxygen.m4]) m4_include([gphoto-m4/gp-check-library.m4]) m4_include([gphoto-m4/gp-check-shell-environment.m4]) m4_include([gphoto-m4/gp-config-msg.m4]) m4_include([gphoto-m4/gp-documentation.m4]) m4_include([gphoto-m4/gp-gettext-hack.m4]) m4_include([gphoto-m4/gp-internal-docs.m4]) m4_include([gphoto-m4/gp-libltdl.m4]) m4_include([gphoto-m4/gp-packaging.m4]) m4_include([gphoto-m4/gp-pkg-config.m4]) m4_include([gphoto-m4/gp-references.m4]) m4_include([gphoto-m4/gp-stdint.m4]) m4_include([gphoto-m4/gp-udev.m4]) m4_include([gphoto-m4/gp-va-copy.m4]) m4_include([auto-m4/gettext.m4]) m4_include([auto-m4/iconv.m4]) m4_include([auto-m4/lib-ld.m4]) m4_include([auto-m4/lib-link.m4]) m4_include([auto-m4/lib-prefix.m4]) m4_include([auto-m4/libtool.m4]) m4_include([auto-m4/ltoptions.m4]) m4_include([auto-m4/ltsugar.m4]) m4_include([auto-m4/ltversion.m4]) m4_include([auto-m4/lt~obsolete.m4]) m4_include([auto-m4/nls.m4]) m4_include([auto-m4/po.m4]) m4_include([auto-m4/progtest.m4]) libgphoto2-2.5.9/README.packaging0000644000175000001440000001055212610415510013316 00000000000000======================================================================== libgphoto2 README.packaging ======================================================================== This file describes a number of things you should know when building packages (.debs, .rpms, ports, emerges, etc. pp.) ======================================================================== libgphoto2 and libgphoto2_port ============================== The libgphoto2 library builds on the libgphoto2_port library, which is thus internally contained within every libgphoto2 release. By installing libgphoto2, you always also install libgphoto2_port. ======================================================================== Installed files =============== A standard install of libgphoto2 does about this: * The most important files: * ${libdir}/libgphoto2.{a,la,so} * ${libdir}/libgphoto2//*.{a,la,so} (camlibs) * ${libdir}/libgphoto2_port.{a,la,so} * ${libdir}/libgphoto2_port//*.{a,la,so} (iolibs) In most cases, you can remove the *.a and *.la files from the list of files to ship. * Packaging helpers: * ${utilsdir}/libgphoto2/print-camera-list * ${utilsdir}/libgphoto2/print-usb-usermap (linux-hotplug, obsolete) * ${udevscriptdir}/check-mtp-device * ${udevscriptdir}/check-ptp-camera Defaults: utilsdir=${libdir}, ${udevscriptdir}=${libdir}/udev. You probably want to ./configure udevscriptdir=/lib/udev and possibly utilsdir='${libexecdir}', depending on your system. * Documentation: * Man pages: * ${mandir}/man3/libgphoto2.3 * ${mandir}/man3/libgphoto2_port.3 * ${docdir}/camlibs/README.* (camlib docs) * ${docdir}/{README,AUTHORS,NEWS} * ${docdir}/apidocs.html/ API docs * ${docdir}/{README,AUTHORS,NEWS} You may want to install these files into your custom locations. If you separate library from libfoo-devel packages, the former should probably ship with the camlib docs, and the general README and NEWS. Try configure --with-docdir=. * Translated strings: * ${datadir}/locale/*/LC_MESSAGES/libgphoto2-2.mo * ${datadir}/locale/*/LC_MESSAGES/libgphoto2_port-0.mo * ${datadir}/libgphoto2//konica/* These files are required for the konica camlib to work at all. * For developers: * ${includedir}/gphoto2/gphoto2*.h * ${libdir}/pkgconfig/libgphoto2.pc * ${libdir}/pkgconfig/libgphoto2_port.pc Note that utilsdir, udevscriptdir, etc. can be set at configure time. See "configure --help". ======================================================================== Permission setup ================ We consider it a bug in the package if the package does not offer a way for the user to just plug in his camera and use it. This may at most require adding the user to a "camera" or "plugdev" group. You will want to create HAL or UDEV rules by running this utility: * print-camera-list This utility requires libgphoto2 and its camlibs being installed, either * at package building time by doing a DESTDIR based temporary install somewhere and setting LD_LIBRARY_PATH and CAMLIBS before running print-camera-list * at package installation time as a post installation hook The UDEV rules require two helper scripts/binaries, which obviously need to be installed by the package: * check-mtp-device (not working yet) * check-ptp-camera You can either use fixed permissions in the generated rules, or call your own permission setup script to dynamically decide what to do. (Contemporary example scripts are not being shipped yet.) ======================================================================== Development packages ==================== The recommended way to use libgphoto2 in a build process is to use pkg-config and thus these files really should be shipped in a package: * /usr/lib/pkgconfig/libgphoto2.pc * /usr/lib/pkgconfig/libgphoto2_port.pc We are still shipping * /usr/bin/gphoto2-config * /usr/bin/gphoto2-port-config for compatibility reasons, but that will obviously break when you have a /usr/lib64 vs. /usr/lib conflict. That problem is one the packager will have to resolve - we consider this mechanism obsolete. ======================================================================== End of file. ======================================================================== libgphoto2-2.5.9/doc/0000755000175000001440000000000012623156300011340 500000000000000libgphoto2-2.5.9/doc/camlib_devel-repeater.eps0000644000175000001440000004134312557123324016217 00000000000000%!PS-Adobe-2.0 EPSF-2.0 %%Title: Untitled-1 %%Creator: Dia v0.83 %%CreationDate: Thu Apr 13 18:17:06 2000 %%For: a user %%Magnification: 1.0000 %%Orientation: Portrait %%BoundingBox: 0 0 408 151 %%Pages: 1 %%BeginSetup %%EndSetup %%EndComments [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def /Times-Roman-latin1 /Times-Roman findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Times-Italic-latin1 /Times-Italic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Times-Bold-latin1 /Times-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Times-BoldItalic-latin1 /Times-BoldItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-Book-latin1 /AvantGarde-Book findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-BookOblique-latin1 /AvantGarde-BookOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-Demi-latin1 /AvantGarde-Demi findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-DemiOblique-latin1 /AvantGarde-DemiOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-Light-latin1 /Bookman-Light findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-LightItalic-latin1 /Bookman-LightItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-Demi-latin1 /Bookman-Demi findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-DemiItalic-latin1 /Bookman-DemiItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-latin1 /Courier findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-Oblique-latin1 /Courier-Oblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-Bold-latin1 /Courier-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-BoldOblique-latin1 /Courier-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-latin1 /Helvetica findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Oblique-latin1 /Helvetica-Oblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Bold-latin1 /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-BoldOblique-latin1 /Helvetica-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-latin1 /Helvetica-Narrow findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-Oblique-latin1 /Helvetica-Narrow-Oblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-Bold-latin1 /Helvetica-Narrow-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-BoldOblique-latin1 /Helvetica-Narrow-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-Roman-latin1 /NewCenturySchoolbook-Roman findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-Italic-latin1 /NewCenturySchoolbook-Italic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-Bold-latin1 /NewCenturySchoolbook-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-BoldItalic-latin1 /NewCenturySchoolbook-BoldItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-Roman-latin1 /Palatino-Roman findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-Italic-latin1 /Palatino-Italic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-Bold-latin1 /Palatino-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-BoldItalic-latin1 /Palatino-BoldItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Symbol-latin1 /Symbol findfont definefont pop /ZapfChancery-MediumItalic-latin1 /ZapfChancery-MediumItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /ZapfDingbats-latin1 /ZapfDingbats findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /cp {closepath} bind def /c {curveto} bind def /f {fill} bind def /a {arc} bind def /ef {eofill} bind def /ex {exch} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth pop} bind def /tr {translate} bind def /ellipsedict 8 dict def ellipsedict /mtrx matrix put /ellipse { ellipsedict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc savematrix setmatrix end } def /colortogray { /rgbdata exch store rgbdata length 3 idiv /npixls exch store /rgbindx 0 store 0 1 npixls 1 sub { grays exch rgbdata rgbindx get 20 mul rgbdata rgbindx 1 add get 32 mul rgbdata rgbindx 2 add get 12 mul add add 64 idiv put /rgbindx rgbindx 3 add store } for grays 0 npixls getinterval } bind def /mergeprocs { dup length 3 -1 roll dup length dup 5 1 roll 3 -1 roll add array cvx dup 3 -1 roll 0 exch putinterval dup 4 2 roll putinterval } bind def /colorimage { pop pop {colortogray} mergeprocs image } bind def 28.346000 -28.346000 scale -5.950000 -9.256637 translate %%EndProlog 1.000000 1.000000 1.000000 srgb n 6.000000 4.000000 m 6.000000 6.000000 l 10.000000 6.000000 l 10.000000 4.000000 l f 0.100000 slw [] 0 sd [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 6.000000 4.000000 m 6.000000 6.000000 l 10.000000 6.000000 l 10.000000 4.000000 l cp s /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 6.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb (Camera) dup sw 2 div 8.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 8.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 7.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 10.000000 ex sub 7.000000 m gs 1 -1 sc sh gr 0.100000 slw [] 0 sd [] 0 sd 0 slc 0.000000 0.000000 0.000000 srgb n 10.000000 5.000000 m 13.000000 5.000000 l s 0 slj 0.000000 0.000000 0.000000 srgb n 10.800000 4.600000 m 10.000000 5.000000 l 10.800000 5.400000 l f 0 slj 0.000000 0.000000 0.000000 srgb n 12.200000 5.400000 m 13.000000 5.000000 l 12.200000 4.600000 l f 0.080000 slw 0 slj [] 0 sd 0.700000 0.700000 0.700000 srgb n 13.250000 4.200000 m 13.250000 7.700000 l 14.750000 7.700000 l 14.750000 4.200000 l f 0.000000 0.000000 0.000000 srgb n 13.250000 4.200000 m 13.250000 7.700000 l 14.750000 7.700000 l 14.750000 4.200000 l cp s 0.010000 slw 0.000000 0.000000 0.000000 srgb n 13.400000 4.410000 m 13.400000 4.810000 l 14.600000 4.810000 l 14.600000 4.410000 l cp s 0.000000 0.000000 0.000000 srgb n 13.400000 4.810000 m 13.400000 5.210000 l 14.600000 5.210000 l 14.600000 4.810000 l cp s 0.000000 0.000000 0.000000 srgb n 13.400000 5.210000 m 13.400000 5.610000 l 14.600000 5.610000 l 14.600000 5.210000 l cp s 0.000000 0.000000 0.000000 srgb n 13.400000 5.610000 m 13.400000 6.010000 l 14.600000 6.010000 l 14.600000 5.610000 l cp s 0.000000 0.000000 0.000000 srgb n 13.400000 6.090000 m 13.400000 6.330000 l 14.150000 6.330000 l 14.150000 6.090000 l cp s 0.000000 1.000000 0.000000 srgb n 14.525000 6.130000 0.052500 0.052500 0 360 ellipse f 0.000000 0.000000 0.000000 srgb n 14.525000 6.130000 0.052500 0.052500 0 360 ellipse cp s 1.000000 1.000000 0.000000 srgb n 14.525000 6.290000 0.052500 0.052500 0 360 ellipse f 0.000000 0.000000 0.000000 srgb n 14.525000 6.290000 0.052500 0.052500 0 360 ellipse cp s 1.000000 1.000000 1.000000 srgb n 14.225000 6.170000 m 14.225000 6.330000 l 14.405000 6.330000 l 14.405000 6.170000 l f 0.000000 0.000000 0.000000 srgb n 14.225000 6.170000 m 14.225000 6.330000 l 14.405000 6.330000 l 14.405000 6.170000 l cp s 0.080000 slw 0 slc 0.000000 0.000000 0.000000 srgb n 13.500000 6.650000 m 13.500000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 13.750000 6.650000 m 13.750000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 14.000000 6.650000 m 14.000000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 14.250000 6.650000 m 14.250000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 14.500000 6.650000 m 14.500000 7.525000 l s 0.600000 0.600000 0.600000 srgb n 12.950000 8.000000 m 13.250000 7.400000 l 13.250000 7.700000 l 14.750000 7.700000 l 14.750000 7.400000 l 15.050000 8.000000 l f 0.000000 0.000000 0.000000 srgb n 12.950000 8.000000 m 13.250000 7.400000 l 13.250000 7.700000 l 14.750000 7.700000 l 14.750000 7.400000 l 15.050000 8.000000 l cp s 0.100000 slw [] 0 sd [] 0 sd 0 slc 0.000000 0.000000 0.000000 srgb n 15.000000 5.000000 m 18.000000 5.000000 l s 0 slj 0.000000 0.000000 0.000000 srgb n 15.800000 4.600000 m 15.000000 5.000000 l 15.800000 5.400000 l f 0 slj 0.000000 0.000000 0.000000 srgb n 17.200000 5.400000 m 18.000000 5.000000 l 17.200000 4.600000 l f 0.080000 slw 0 slj [] 0 sd 0.700000 0.700000 0.700000 srgb n 18.250000 4.200000 m 18.250000 7.700000 l 19.750000 7.700000 l 19.750000 4.200000 l f 0.000000 0.000000 0.000000 srgb n 18.250000 4.200000 m 18.250000 7.700000 l 19.750000 7.700000 l 19.750000 4.200000 l cp s 0.010000 slw 0.000000 0.000000 0.000000 srgb n 18.400000 4.410000 m 18.400000 4.810000 l 19.600000 4.810000 l 19.600000 4.410000 l cp s 0.000000 0.000000 0.000000 srgb n 18.400000 4.810000 m 18.400000 5.210000 l 19.600000 5.210000 l 19.600000 4.810000 l cp s 0.000000 0.000000 0.000000 srgb n 18.400000 5.210000 m 18.400000 5.610000 l 19.600000 5.610000 l 19.600000 5.210000 l cp s 0.000000 0.000000 0.000000 srgb n 18.400000 5.610000 m 18.400000 6.010000 l 19.600000 6.010000 l 19.600000 5.610000 l cp s 0.000000 0.000000 0.000000 srgb n 18.400000 6.090000 m 18.400000 6.330000 l 19.150000 6.330000 l 19.150000 6.090000 l cp s 0.000000 1.000000 0.000000 srgb n 19.525000 6.130000 0.052500 0.052500 0 360 ellipse f 0.000000 0.000000 0.000000 srgb n 19.525000 6.130000 0.052500 0.052500 0 360 ellipse cp s 1.000000 1.000000 0.000000 srgb n 19.525000 6.290000 0.052500 0.052500 0 360 ellipse f 0.000000 0.000000 0.000000 srgb n 19.525000 6.290000 0.052500 0.052500 0 360 ellipse cp s 1.000000 1.000000 1.000000 srgb n 19.225000 6.170000 m 19.225000 6.330000 l 19.405000 6.330000 l 19.405000 6.170000 l f 0.000000 0.000000 0.000000 srgb n 19.225000 6.170000 m 19.225000 6.330000 l 19.405000 6.330000 l 19.405000 6.170000 l cp s 0.080000 slw 0 slc 0.000000 0.000000 0.000000 srgb n 18.500000 6.650000 m 18.500000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 18.750000 6.650000 m 18.750000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 19.000000 6.650000 m 19.000000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 19.250000 6.650000 m 19.250000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 19.500000 6.650000 m 19.500000 7.525000 l s 0.600000 0.600000 0.600000 srgb n 17.950000 8.000000 m 18.250000 7.400000 l 18.250000 7.700000 l 19.750000 7.700000 l 19.750000 7.400000 l 20.050000 8.000000 l f 0.000000 0.000000 0.000000 srgb n 17.950000 8.000000 m 18.250000 7.400000 l 18.250000 7.700000 l 19.750000 7.700000 l 19.750000 7.400000 l 20.050000 8.000000 l cp s /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb (Repeater) dup sw 2 div 14.000000 ex sub 9.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb (Host) dup sw 2 div 19.000000 ex sub 9.000000 m gs 1 -1 sc sh gr showpage libgphoto2-2.5.9/doc/Makefile.in0000644000175000001440000007466612623156011013347 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@am__append_1 = $(HTML_APIDOC_INTERNALS_DIR).stamp @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@am__append_2 = install-apidocs-internals @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@am__append_3 = uninstall-apidocs-internals @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@am__append_4 = clean-apidocs-internals subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = Doxyfile Doxyfile-internals CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-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 \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man3dir = $(mandir)/man3 am__installdirs = "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(docdir)" NROFF = nroff MANS = $(man_MANS) DATA = $(doc_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Doxyfile-internals.in \ $(srcdir)/Doxyfile.in $(srcdir)/Makefile.in \ $(top_srcdir)/auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ SUBDIRS = api old_EXTRA_DIST = DAEMON build_OS2.txt \ camlib_devel.lyx \ camlib_devel-portmon.eps camlib_devel-repeater.eps \ camlib_devel.sgml camlib_devel.txt camlib_devel-y.eps \ frontend_devel.lyx frontend_devel.sgml frontend_devel.txt \ libgphoto2.3 libgphoto2_port.3 man_MANS = libgphoto2.3 libgphoto2_port.3 # doc_DATA = FAQ faq.xml ######################################################################## # Conditional rules, depending on tool availability ######################################################################## # FIXME: Depend on source files. @HAVE_DOXYGEN_TRUE@DOXYGEN_STAMPS = $(HTML_APIDOC_DIR).stamp \ @HAVE_DOXYGEN_TRUE@ $(am__append_1) @HAVE_DOXYGEN_TRUE@LOCAL_INSTALL = install-apidocs $(am__append_2) @HAVE_DOXYGEN_TRUE@LOCAL_UNINSTALL = uninstall-apidocs $(am__append_3) @HAVE_DOXYGEN_TRUE@LOCAL_CLEAN = clean-apidocs $(am__append_4) @HAVE_DOXYGEN_TRUE@doc_EXTRA_DIST = $(HTML_APIDOC_DIR).tar.gz @HAVE_DOXYGEN_TRUE@doc_DATA = README.apidocs @HAVE_DOXYGEN_TRUE@CLEANFILES = $(DOXYGEN_STAMPS) ######################################################################## # Common part ######################################################################## EXTRA_DIST = $(doc_EXTRA_DIST) Doxyfile.in README.apidocs $(old_EXTRA_DIST) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ Doxyfile-internals: $(top_builddir)/config.status $(srcdir)/Doxyfile-internals.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man3: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man3dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.3[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \ done; } uninstall-man3: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man3dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.3[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir) install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) # 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, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive @HAVE_DOXYGEN_FALSE@all-local: all-am: Makefile $(MANS) $(DATA) all-local installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man3dir)" "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @HAVE_DOXYGEN_FALSE@install-data-local: @HAVE_DOXYGEN_FALSE@uninstall-local: @HAVE_DOXYGEN_FALSE@clean-local: clean: clean-recursive clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-data-local install-docDATA install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man3 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-docDATA uninstall-local uninstall-man uninstall-man: uninstall-man3 .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ check check-am clean clean-generic clean-libtool clean-local \ cscopelist-am ctags ctags-am 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-data-local install-docDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man3 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-am uninstall \ uninstall-am uninstall-docDATA uninstall-local uninstall-man \ uninstall-man3 .PRECIOUS: Makefile @HAVE_DOXYGEN_TRUE@$(HTML_APIDOC_DIR).stamp: Doxyfile @HAVE_DOXYGEN_TRUE@ doxygen Doxyfile @HAVE_DOXYGEN_TRUE@ echo > $@ @HAVE_DOXYGEN_TRUE@$(HTML_APIDOC_DIR).tar.gz: $(HTML_APIDOC_DIR).stamp @HAVE_DOXYGEN_TRUE@ (cd $(DOXYGEN_OUTPUT_DIR) && $(AMTAR) chof - $(HTML_APIDOC_DIR) | GZIP=--best gzip -c) > $@ @HAVE_DOXYGEN_TRUE@$(HTML_APIDOC_INTERNALS_DIR).tar.gz: $(HTML_APIDOC_INTERNALS_DIR).stamp @HAVE_DOXYGEN_TRUE@ (cd $(DOXYGEN_OUTPUT_DIR) && $(AMTAR) chof - $(HTML_APIDOC_INTERNALS_DIR) | GZIP=--best gzip -c) > $@ @HAVE_DOXYGEN_TRUE@install-apidocs: $(HTML_APIDOC_DIR).stamp @HAVE_DOXYGEN_TRUE@ mkdir -p "$(DESTDIR)$(docdir)" @HAVE_DOXYGEN_TRUE@ find "$(DOXYGEN_OUTPUT_DIR)/$(HTML_APIDOC_DIR)" \ @HAVE_DOXYGEN_TRUE@ \( -type d -exec chmod 0755 {} \; \) -or \ @HAVE_DOXYGEN_TRUE@ \( -type f -exec chmod 0644 {} \; \) @HAVE_DOXYGEN_TRUE@ (unset CDPATH; cd "$(DOXYGEN_OUTPUT_DIR)" && tar cpf - "$(HTML_APIDOC_DIR)") \ @HAVE_DOXYGEN_TRUE@ | (cd "$(DESTDIR)$(docdir)" && tar xpf -) @HAVE_DOXYGEN_TRUE@uninstall-apidocs: @HAVE_DOXYGEN_TRUE@ rm -rf "$(DESTDIR)$(docdir)/$(HTML_APIDOC_DIR)" @HAVE_DOXYGEN_TRUE@clean-apidocs: @HAVE_DOXYGEN_TRUE@ rm -rf "$(DOXYGEN_OUTPUT_DIR)/$(HTML_APIDOC_DIR)" @HAVE_DOXYGEN_TRUE@ rm -f $(HTML_APIDOC_DIR).stamp @HAVE_DOXYGEN_TRUE@ rm -f $(HTML_APIDOC_DIR).tar.gz # FIXME: Depend on source files. @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@$(HTML_APIDOC_INTERNALS_DIR).stamp: Doxyfile-internals @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ doxygen Doxyfile-internals @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ echo > $@ @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@install-apidocs-internals: $(HTML_APIDOC_INTERNALS_DIR).stamp @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ mkdir -p "$(DESTDIR)$(docdir)" @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ find "$(DOXYGEN_OUTPUT_DIR)/$(HTML_APIDOC_INTERNALS_DIR)" \ @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ \( -type d -exec chmod 0755 {} \; \) -or \ @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ \( -type f -exec chmod 0644 {} \; \) @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ (unset CDPATH; cd "$(DOXYGEN_OUTPUT_DIR)" && tar cpf - "$(HTML_APIDOC_INTERNALS_DIR)") \ @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ | (cd "$(DESTDIR)$(docdir)" && tar xpf -) @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@uninstall-apidocs-internals: @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ rm -rf "$(DESTDIR)$(docdir)/$(HTML_APIDOC_INTERNALS_DIR)" @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@clean-apidocs-internals: @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ rm -rf "$(DOXYGEN_OUTPUT_DIR)/$(HTML_APIDOC_INTERNALS_DIR)" @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ rm -f $(HTML_APIDOC_INTERNALS_DIR).stamp @ENABLE_INTERNAL_DOCS_TRUE@@HAVE_DOXYGEN_TRUE@ rm -f $(HTML_APIDOC_INTERNALS_DIR).tar.gz @HAVE_DOXYGEN_TRUE@all-local: $(DOXYGEN_STAMPS) @HAVE_DOXYGEN_TRUE@install-data-local: $(LOCAL_INSTALL) @HAVE_DOXYGEN_TRUE@uninstall-local: $(LOCAL_UNINSTALL) @HAVE_DOXYGEN_TRUE@clean-local: $(LOCAL_CLEAN) @HAVE_DOXYGEN_TRUE@ rm -rf $(DOXYGEN_OUTPUT_DIR) # 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. .NOEXPORT: libgphoto2-2.5.9/doc/frontend_devel.sgml0000644000175000001440000000074512557123324015156 00000000000000
gPhoto Front-end Developer's Guide Scott Fritzinger 2000-07-26 Revision 1 Understanding the gPhoto2 Structure Role of the gPhoto2 Core Role of the Camera Library Role of the Front-end Implementing the Front-end gPhoto2 Core API Functions Required By the Front-end
libgphoto2-2.5.9/doc/Makefile.am0000644000175000001440000000624112610415510013314 00000000000000SUBDIRS = api old_EXTRA_DIST = DAEMON build_OS2.txt \ camlib_devel.lyx \ camlib_devel-portmon.eps camlib_devel-repeater.eps \ camlib_devel.sgml camlib_devel.txt camlib_devel-y.eps \ frontend_devel.lyx frontend_devel.sgml frontend_devel.txt \ libgphoto2.3 libgphoto2_port.3 man_MANS = libgphoto2.3 libgphoto2_port.3 # doc_DATA = FAQ faq.xml ######################################################################## # Conditional rules, depending on tool availability ######################################################################## if HAVE_DOXYGEN DOXYGEN_STAMPS = LOCAL_INSTALL = LOCAL_UNINSTALL = LOCAL_CLEAN = # FIXME: Depend on source files. DOXYGEN_STAMPS += $(HTML_APIDOC_DIR).stamp $(HTML_APIDOC_DIR).stamp: Doxyfile doxygen Doxyfile echo > $@ $(HTML_APIDOC_DIR).tar.gz: $(HTML_APIDOC_DIR).stamp (cd $(DOXYGEN_OUTPUT_DIR) && $(AMTAR) chof - $(HTML_APIDOC_DIR) | GZIP=--best gzip -c) > $@ $(HTML_APIDOC_INTERNALS_DIR).tar.gz: $(HTML_APIDOC_INTERNALS_DIR).stamp (cd $(DOXYGEN_OUTPUT_DIR) && $(AMTAR) chof - $(HTML_APIDOC_INTERNALS_DIR) | GZIP=--best gzip -c) > $@ LOCAL_INSTALL += install-apidocs install-apidocs: $(HTML_APIDOC_DIR).stamp mkdir -p "$(DESTDIR)$(docdir)" find "$(DOXYGEN_OUTPUT_DIR)/$(HTML_APIDOC_DIR)" \ \( -type d -exec chmod 0755 {} \; \) -or \ \( -type f -exec chmod 0644 {} \; \) (unset CDPATH; cd "$(DOXYGEN_OUTPUT_DIR)" && tar cpf - "$(HTML_APIDOC_DIR)") \ | (cd "$(DESTDIR)$(docdir)" && tar xpf -) LOCAL_UNINSTALL += uninstall-apidocs uninstall-apidocs: rm -rf "$(DESTDIR)$(docdir)/$(HTML_APIDOC_DIR)" LOCAL_CLEAN += clean-apidocs clean-apidocs: rm -rf "$(DOXYGEN_OUTPUT_DIR)/$(HTML_APIDOC_DIR)" rm -f $(HTML_APIDOC_DIR).stamp rm -f $(HTML_APIDOC_DIR).tar.gz if ENABLE_INTERNAL_DOCS DOXYGEN_STAMPS += $(HTML_APIDOC_INTERNALS_DIR).stamp # FIXME: Depend on source files. $(HTML_APIDOC_INTERNALS_DIR).stamp: Doxyfile-internals doxygen Doxyfile-internals echo > $@ LOCAL_INSTALL += install-apidocs-internals install-apidocs-internals: $(HTML_APIDOC_INTERNALS_DIR).stamp mkdir -p "$(DESTDIR)$(docdir)" find "$(DOXYGEN_OUTPUT_DIR)/$(HTML_APIDOC_INTERNALS_DIR)" \ \( -type d -exec chmod 0755 {} \; \) -or \ \( -type f -exec chmod 0644 {} \; \) (unset CDPATH; cd "$(DOXYGEN_OUTPUT_DIR)" && tar cpf - "$(HTML_APIDOC_INTERNALS_DIR)") \ | (cd "$(DESTDIR)$(docdir)" && tar xpf -) LOCAL_UNINSTALL += uninstall-apidocs-internals uninstall-apidocs-internals: rm -rf "$(DESTDIR)$(docdir)/$(HTML_APIDOC_INTERNALS_DIR)" LOCAL_CLEAN += clean-apidocs-internals clean-apidocs-internals: rm -rf "$(DOXYGEN_OUTPUT_DIR)/$(HTML_APIDOC_INTERNALS_DIR)" rm -f $(HTML_APIDOC_INTERNALS_DIR).stamp rm -f $(HTML_APIDOC_INTERNALS_DIR).tar.gz endif all-local: $(DOXYGEN_STAMPS) install-data-local: $(LOCAL_INSTALL) uninstall-local: $(LOCAL_UNINSTALL) clean-local: $(LOCAL_CLEAN) rm -rf $(DOXYGEN_OUTPUT_DIR) doc_EXTRA_DIST = $(HTML_APIDOC_DIR).tar.gz doc_DATA = README.apidocs CLEANFILES = $(DOXYGEN_STAMPS) endif ######################################################################## # Common part ######################################################################## EXTRA_DIST = $(doc_EXTRA_DIST) Doxyfile.in README.apidocs $(old_EXTRA_DIST) libgphoto2-2.5.9/doc/build_OS2.txt0000644000175000001440000000123312557123324013610 0000000000000030-7-2000 bvl: initial release about this Document: This document is a summary of what is needed to build gphoto2 on OS/2 make : nmake v3 available on hobbes, http://hobbes.nmsu.edu/pub/os2/dev/util/nmakew.zip compile : gcc version 2.8.1 http://hobbes.nmsu.edu/cgi-bin/h-browse?sh=1&dir=/pub/os2/dev/emx/v0.9d libraries : pthreads unfortunatly I don't know whih version I use here but the one from netlabs should be working ftp://ftp.netlabs.org/pub/pthreads/ make sure the emx\lib directory is added to your lib environment 'SET LIB=x:\EMX\LIB' alse the pthreads DLL's and LIB's should be in the EMX tree libgphoto2-2.5.9/doc/frontend_devel.lyx0000644000175000001440000000205512557123324015024 00000000000000#LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 2.15 \textclass linuxdoc \language default \inputencoding latin1 \fontscheme default \graphics default \paperfontsize default \spacing single \papersize Default \paperpackage a4 \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \added_space_top vfill \added_space_bottom vfill gPhoto Front-end Developer's Guide \layout Author Scott Fritzinger \newline 2000-07-26 \newline Revision 1 \layout Standard \begin_inset LatexCommand \tableofcontents{} \end_inset \layout Section Understanding the gPhoto2 Structure \layout Subsection Role of the gPhoto2 Core \layout Subsection Role of the Camera Library \layout Subsection Role of the Front-end \layout Section Implementing the Front-end \layout Subsection gPhoto2 Core API \layout Subsection Functions Required By the Front-end \the_end libgphoto2-2.5.9/doc/DAEMON0000644000175000001440000002447612557123324012171 00000000000000gPhoto Daemon -------------------------------------------------------------------- (note: this is a specification. it is not implemented!) The gPhoto daemon uses the following protocol description. It provides an interactive way for program to talk and use gPhoto without needing to have any sort of C bindings. This document needs better formatting (color syntax highlighting, structure) Overview -------------------------------------------------------------------- - The program provides gPhoto with a series of commands. gPhoto can also send message to the program through 4 notification commands. - The arguments to a command are either a number or a string. If it's a string, you must put double-quotes around it. - All commands to gPhoto are answered by an "OK" or "ERROR", possibly followed by additional data. - Designed around simplicity and flexibility. - Picture numbering begins at ZERO! - Notification will come after issuing a command. Example -------------------------------------------------------------------- '>' indicates commands from the program to gPhoto '<' indicates commands from gPhoto to the program To put gphoto2 into a daemon mode, you must run it as "gphoto2 -S". You can open a pipe and then read/write to that file descriptor. here is a session: > notification_set 1 < OK > camera_list < OK < 3 < Olympus D-220L < Kodak DC210+ < Epson 650Z > camera_Set "Epson 650Z" < OK > folder_list "/" < OK < 5 < birthday/ < PIC0001.JPG < PIC0002.JPG < PIC0003.JPG < PIC0004.JPG > folder_set "/" < OK > file_count < OK < 4 > file_get 0 "/home/scottf" "file0.jpg" < confirm "Files exists. Overwrite?" > confirm 1 < OK < /home/scottf/file0.jpg > file_get 1 "/home/scottf" "file1.jpg" < OK < /home/scottf/file1.jpg > file_get 2 "/home/scottf" "file2.jpg" < confirm "File exists. Overwrite?" > confirm 0 < ERROR "Did not save /home/scottf/file2.jpg" Commands to the gPhoto daemon -------------------------------------------------------------------- setting_set key value Description: Saves the value of "key" as "value" Outputs: OK or ERROR Example: > setting_set "foo" "bar" < OK setting_get key Description: Retrieves the value of "key" Outputs: OK or ERROR if OK, followed by the value of the key Example: > setting_get "foo" < OK < bar notification_set number Description: Turns on (value = 1) or off (value = 0) notification Default: 0 Outputs: OK or ERROR Example: > debug_set 1 < OK debug_set number Description: Turns on (value = 1) or off (value = 0) debugging Default: 0 Outputs: OK or ERROR Example: > debug_set 1 < OK camera_list Description: Lists the number of cameras and all the camera model names Outputs: OK or ERROR if OK, followed by number of cameras, followed by camera models Example: > camera_count < OK < 3 < Olympus D-220L < Kodak DC210+ < Epson 650Z camera_set name Description: Sets the camera name as the chosen camera model Outputs: OK or ERROR Example: > camera_set "Canon S10" < OK camera_abilities [name] Description: Determines the camera's abilities. The camera name is optional. If not specified, uses currently set camera. Please reference gphoto2-datatypes.h for available abilities and descriptions. Outputs: OK or ERROR if OK, followed by number of abilities, followed by abilities Example: > camera_abilities "Olympus 3030Z" < OK < 13 < "usb"=1 < "parallel"=0 < "ieee1394"=0 < "serial"=1 < "speed"=9600 < "speed"=19200 < "speed"=38400 < "speed"=57600 < "speed"=115200 < "file_delete"=1 < "file_preview"=1 < "file_put"=0 < "file_capture"=1 < "config"=1 folder_list path Description: Display the contents of the folder path on the camera. Outputs: OK or ERROR if OK, followed by number of entries, followed by the list. an entry in the list has a trailing '/' if it is a folder. Example: > folder_list "/" < OK < 4 < birthday/ < mountains/ < PIC001.JPG < PIC002.JPG folder_set path Description: Sets the current folder. Outputs: OK or ERROR Example: > folder_set "/" < OK file_count Description: Determines the number of files (pictures, sounds, etc.) in the current folder. Outputs: OK or ERROR if OK, followed by number of files Example: > file_count < OK < 12 file_get number [directory] [filename] Description: Downloads picture #number from the current folder * if directory is specified, picture is saved to that directory using the camera-recommended filename. * if directory and filename is specified, picture is saved as filename in the directory. Outputs: OK or ERROR if OK: if just number is specified: followed by mime-type, size of picture, and picture data if directory and/or filename is specified: followed by path and filename of picture Example: > file_get 12 < OK < image/jpeg < 98012 < image data ... . . . .... or > file_get 12 "/home/scottf/" < OK < /home/scottf/PIC0012.JPG or > file_get 12 "/home/scottf/" "picture12.jpg" < OK < /home/scottf/picture12.jpg file_get_preview number [directory] [filename] Description: Downloads preview (thumbnail) #number from the current folder * if directory is specified, preview is saved to that directory using the camera-recommended filename. * if directory and filename is specified, picture is saved as filename in the directory. Outputs: OK or ERROR if OK: if just number is specified: followed by mime-type, size of preview, and preview data if directory and/or filename is specified: followed by path and filename of preview Example: > file_get_preview 12 < OK < image/jpeg < 12453 < image data ... . . . .... or > file_get_preview 12 "/home/scottf/" < OK < /home/scottf/THUMB0012.JPG or > file_get_preview 12 "/home/scottf/" "thumbnail12.jpg" < OK < /home/scottf/thumbnail12.jpg file_put filename Description: Uploads the file specified by filename to the camera into the current folder Outputs: OK or ERROR Example: > file_put /home/scottf/picture02.jpg < OK file_delete number Description: Deletes the file #number in the current folder Outputs: OK or ERROR Example: > file_delete 12 < OK config_get Description: Gets a set of meta-widgets that describe camera configuration options. (needs explanation on structure) widget-type "label" value [min max step | choice] * WINDOW and PAGE are containers. any widget coming after that is put into the container. * value is a number, except for TEXT (then value requires double-quotes) Outputs: OK or ERROR if OK, followed by number of lines, followed by the meta-widgets Example: > config_get < OK < 15 < WINDOW "Olympus Configuration" < PAGE "Quality" < RADIO "Resolution" 0 "Standard" < RADIO "Resolution" 1 "High" < RADIO "Resolution" 0 "Best" < RADIO "Compression" 0 "None" < RADIO "Compression" 0 "Low" < RADIO "Compression" 1 "High" < PAGE "Miscellaneous" < RANGE "Zoom" 3.00 < TEXT "Camera Name" "Scott's Olympus D-220L" < MENU "Flash Setting" 0 "Red-eye reduction" < MENU "Flash Setting" 1 "Auto" < MENU "Flash Setting" 0 "Forced" < MENU "Flash Setting" 0 "Blind me" config_set "label"=[choice|value] "label"=[choice|value] "label"=[choice|value] ... Description: Sets the camera configuration * if RADIO or MENU, "label"="choice" * for others, "label"=value Outputs: OK Example: > config_set "Resolution"="Best" "Compression"="None" "Zoom"=0.00 < OK capture_to_disk path [filename] Description: Causes camera to press the shutter, then download and save to disk. filename is optional Outputs: OK or ERROR if OK, followed by picture filename Example: > capture_to_disk "/home/scottf" < OK < /home/scottf/PIC00012.JPG or > capture_to_disk "/home/scottf" "livepicture.jpg" < OK < /home/scottflivepicture.jpg about Description: Displays information about the camera library Outputs: OK or ERROR if OK, followed by number of lines, then camera library information Example: > about < OK < 3 < Scott < Camera library for foo-bar cameras < These cameras are kinda silly. manual Description: Displays the camera library manual Outputs: OK or ERROR if OK, followed by number of lines, then camera library manual Example: > manual < OK < 5 < This camera library is a good library. < It does not support capturing image though. < The company that make the camera helped < by providing information about the communication < protocol. summary Description: Displays the camera summary Outputs: OK or ERROR if OK, followed by number of lines, then camera summary Example: > summary < OK < 3 < Battery Percent = 65% < Free memory is 31Meg < My height is around 6'4" gPhoto notifications -------------------------------------------------------------------- These depend on whether or not "notification_set" has been called. By default, they are turned off. Use "notification_set 1" to turn them on. progress number Description: Should display the percent done in the current operation Response: none Example: < progress 50 message "string" Description: Should display a message to the user (pop-up window) Response: none Example: < message "Don't you want to be a pepper too?" status "string" Description: Should display the status to the user (status bar) Response: none Example: < status "Done with current operation." confirm "string" Description: Should display a "yes" or "no" confirmation box to the user. Response: confirm 0 (no), confirm 1 (yes), or ERROR Example: < confirm "Do you want to delete that file?" > confirm 1 (gPhoto will not answer this). libgphoto2-2.5.9/doc/api/0000755000175000001440000000000012623156300012111 500000000000000libgphoto2-2.5.9/doc/api/Makefile.in0000644000175000001440000004325712623156011014110 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc/api ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/auto-aux/mkinstalldirs \ $(top_srcdir)/libgphoto2_port/doc/DocRules.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ # The name of the module. DOC_MODULE = gphoto2 # The directory containing the source code (if it contains documentation). DOC_SOURCE_DIR = ../../libgphoto2 # The top-level SGML file. DOC_MAIN_SGML_FILE = $(DOC_MODULE)-api.sgml EXTRA_DIST = $(DOC_MODULE)-api.sgml $(DOC_MODULE)-sections.txt @ENABLE_GTK_DOC_TRUE@TARGET_DIR = $(apidocdir)/$(DOC_MODULE) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/libgphoto2_port/doc/DocRules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/api/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/api/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/libgphoto2_port/doc/DocRules.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: @ENABLE_GTK_DOC_FALSE@html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am dist-hook \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local 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 \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am .PRECIOUS: Makefile clean-local: rm -f *~ *.bak *.hierarchy *.signals *.args *-unused.txt maintainer-clean-local: clean rm -rf sgml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @ENABLE_GTK_DOC_TRUE@all-local: templates sgml html @ENABLE_GTK_DOC_TRUE@scan: @ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) @ENABLE_GTK_DOC_TRUE@templates: scan @ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) @ENABLE_GTK_DOC_TRUE@sgml: templates @ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) @ENABLE_GTK_DOC_TRUE@html: sgml @ENABLE_GTK_DOC_TRUE@ if ! test -d html ; then mkdir html ; fi @ENABLE_GTK_DOC_TRUE@ cd html && gtkdoc-mkhtml $(DOC_MODULE) ../$(srcdir)/$(DOC_MAIN_SGML_FILE) @ENABLE_GTK_DOC_TRUE@install-data-local: @ENABLE_GTK_DOC_TRUE@ $(INSTALL) -d -m 0755 $(DESTDIR)$(TARGET_DIR) @ENABLE_GTK_DOC_TRUE@ $(INSTALL_DATA) ./html/*.html $(DESTDIR)$(TARGET_DIR) @ENABLE_GTK_DOC_TRUE@ $(INSTALL_DATA) ./html/index.sgml $(DESTDIR)$(TARGET_DIR) @ENABLE_GTK_DOC_TRUE@ gtkdoc-fixxref --module=$(DOC_MODULE) --html-dir=$(DESTDIR)$(apidocdir) @ENABLE_GTK_DOC_TRUE@dist-hook: @ENABLE_GTK_DOC_TRUE@ (cd $(srcdir) ; tar cvf - html) | (cd $(distdir); tar xf -) @ENABLE_GTK_DOC_TRUE@.PHONY : html sgml templates scan @ENABLE_GTK_DOC_FALSE@all-local: @ENABLE_GTK_DOC_FALSE@ @echo "Dummy target $@." @ENABLE_GTK_DOC_FALSE@dist-hook: @ENABLE_GTK_DOC_FALSE@ @echo "Dummy target $@." @ENABLE_GTK_DOC_FALSE@ @echo "Re-run configure with adequate parameters and run make again to build docs." @ENABLE_GTK_DOC_FALSE@install-data-local: @ENABLE_GTK_DOC_FALSE@ @echo "Dummy target $@" @ENABLE_GTK_DOC_FALSE@ @echo "Re-run configure with adequate parameters and run make again to build docs." # Local Variables: # mode: makefile # End: # include common doc generation rules # 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. .NOEXPORT: libgphoto2-2.5.9/doc/api/Makefile.am0000644000175000001440000000046112557123324014074 00000000000000## Process this file with automake to produce Makefile.in # The name of the module. DOC_MODULE=gphoto2 # The directory containing the source code (if it contains documentation). DOC_SOURCE_DIR=../../libgphoto2 # include common doc generation rules include $(top_srcdir)/libgphoto2_port/doc/DocRules.am libgphoto2-2.5.9/doc/api/gphoto2-api.sgml0000644000175000001440000001202112561423352015047 00000000000000 ]> GPhoto2 API Reference Manual Lutz Müller
lutz@users.sf.net
2000 The Free Software Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy of the GNU Free Documentation License from the Free Software Foundation by visiting their Web site or by writing to:
The Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
GPhoto2 Overview GPhoto2 is a library for accessing a wide range of digital cameras. It works on many UNIX-like platforms. GPhoto2 is released under the GNU Library General Public License (GNU LGPL), which allows for flexible licensing of client applications. GPhoto2 is written entirely in C and has an object-oriented architecture that makes it easy for other programming languages to access GPhoto2. GPhoto2 doesn't depend on any external library. However, it is strongly recommended that you have some library installed that handles locking of serial ports. GPhoto2 currently supports ttylock.h ttyLock, a header file provided by several locking libraries (i.e. LockDev), and lockdev.h LockDev, a library available for several systems including Red-Hat and Debian GPhoto2 Utilities GPhoto2's core provides some utility functions and general datatypes. In contrast to the objects presented later, they cannot be classified as objects, and are therefore presented upfront. &gphoto2-result; &gphoto2-library; GPhoto2 Objects In order to simplify programming with GPhoto2, an object oriented approach has been used. The different objects are presented in the following sections. &gphoto2-camera; &gphoto2-filesys; &gphoto2-widget; &gphoto2-list; &gphoto2-abilities-list; &gphoto2-file; License This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You may obtain a copy of the GNU Library General Public License from the Free Software Foundation by visiting their Web site or by writing to:
Free Software Foundation, Inc. 59 Temple Place - Suite 330 Boston, MA 02111-1307 USA
libgphoto2-2.5.9/doc/api/gphoto2-sections.txt0000644000175000001440000001124312557123324016010 00000000000000
gphoto2-library CameraLibrary CameraLibraryIdFunc CameraLibraryAbilitiesFunc CameraLibraryInitFunc camera_id camera_abilities camera_init
gphoto2-abilities-list CameraAbilitiesList CameraDriverStatus CameraOperation CameraFileOperation CameraFolderOperation CameraAbilities CameraAbilitiesList gp_abilities_list_new gp_abilities_list_free gp_abilities_list_load gp_abilities_list_detect gp_abilities_list_count gp_abilities_list_lookup_model gp_abilities_list_get_abilities gp_abilities_list_append
gphoto2-camera Camera CameraExitFunc CameraGetConfigFunc CameraSetConfigFunc CameraCaptureFunc CameraCapturePreviewFunc CameraSummaryFunc CameraManualFunc CameraAboutFunc CameraPrePostFunc CameraPrivateLibrary CameraPrivateCore CameraText CameraFunctions Camera gp_camera_new gp_camera_ref gp_camera_unref gp_camera_free CameraStatusFunc gp_camera_set_status_func CameraProgressFunc gp_camera_set_progress_func CameraMessageFunc gp_camera_set_message_func gp_camera_set_error gp_camera_get_error gp_camera_status gp_camera_progress gp_camera_message gp_camera_set_abilities gp_camera_get_abilities gp_camera_set_port_info gp_camera_get_port_info gp_camera_get_port_speed gp_camera_set_port_speed gp_camera_init gp_camera_exit CameraFilePath CameraCaptureType gp_camera_capture gp_camera_capture_preview gp_camera_get_config gp_camera_set_config gp_camera_folder_list_files gp_camera_folder_list_folders gp_camera_folder_put_file gp_camera_folder_delete_all gp_camera_folder_make_dir gp_camera_folder_remove_dir gp_camera_file_get gp_camera_file_delete gp_camera_file_get_info gp_camera_file_set_info gp_camera_get_manual gp_camera_get_summary gp_camera_get_about
gphoto2-widget CameraWidget CameraWidget gp_widget_new gp_widget_free gp_widget_ref gp_widget_unref gp_widget_append gp_widget_prepend gp_widget_count_children gp_widget_get_child gp_widget_get_child_by_label gp_widget_get_child_by_id gp_widget_get_root gp_widget_set_info gp_widget_get_info gp_widget_get_id gp_widget_get_type gp_widget_get_label gp_widget_set_value gp_widget_get_value gp_widget_get_range gp_widget_add_choice gp_widget_count_choices gp_widget_get_choice gp_widget_changed
gphoto2-result GPhoto2 error codes GP_ERROR_CORRUPTED_DATA GP_ERROR_PATH_NOT_ABSOLUTE GP_ERROR_DIRECTORY_EXISTS GP_ERROR_FILE_EXISTS GP_ERROR_FILE_NOT_FOUND GP_ERROR_DIRECTORY_NOT_FOUND GP_ERROR_MODEL_NOT_FOUND gp_result_as_string
gphoto2-list CameraList CameraList gp_list_new gp_list_ref gp_list_unref gp_list_free gp_list_count gp_list_set_name gp_list_set_value gp_list_get_name gp_list_get_value gp_list_append gp_list_populate gp_list_reset gp_list_sort
gphoto2-file CameraFile CameraFile gp_file_new gp_file_ref gp_file_unref gp_file_free gp_file_append gp_file_open gp_file_save gp_file_clean gp_file_get_name gp_file_set_name CameraFileType gp_file_get_type gp_file_set_type GP_MIME_AVI GP_MIME_BMP GP_MIME_CRW GP_MIME_JPEG GP_MIME_PGM GP_MIME_PNG GP_MIME_PPM GP_MIME_QUICKTIME GP_MIME_RAW GP_MIME_TIFF GP_MIME_UNKNOWN GP_MIME_WAV gp_file_get_mime_type gp_file_set_mime_type gp_file_detect_mime_type gp_file_adjust_name_for_mime_type gp_file_convert gp_file_copy gp_file_get_last_chunk gp_file_set_color_table gp_file_set_conversion_method gp_file_set_header gp_file_set_width_and_height gp_file_get_data_and_size gp_file_set_data_and_size
gphoto2-filesys CameraFilesystem CameraFilesystem CameraFilePermissions CameraFileStatus CameraFileInfoFields CameraFileInfoAudio CameraFileInfoPreview CameraFileInfoFile CameraFileInfo gp_filesystem_new gp_filesystem_free CameraFilesystemGetFileFunc CameraFilesystemDeleteFileFunc gp_filesystem_set_file_funcs CameraFilesystemGetInfoFunc CameraFilesystemSetInfoFunc gp_filesystem_set_info_funcs CameraFilesystemPutFileFunc CameraFilesystemDeleteAllFunc CameraFilesystemDirFunc gp_filesystem_set_folder_funcs CameraFilesystemListFunc gp_filesystem_set_list_funcs gp_filesystem_list_files gp_filesystem_list_folders gp_filesystem_get_file gp_filesystem_put_file gp_filesystem_delete_file gp_filesystem_delete_all gp_filesystem_make_dir gp_filesystem_remove_dir gp_filesystem_get_info gp_filesystem_set_info gp_filesystem_set_info_noop gp_filesystem_number gp_filesystem_name gp_filesystem_get_folder gp_filesystem_count gp_filesystem_reset gp_filesystem_append gp_filesystem_set_file_noop gp_filesystem_dump
libgphoto2-2.5.9/doc/Doxyfile.in0000644000175000001440000014226112561423352013406 00000000000000# Doxyfile 1.4.2 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = "@PACKAGE_NAME@ (@PACKAGE_TARNAME@) API" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = "@PACKAGE_VERSION@" # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIR@ # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, # Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, # Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, # Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, # Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = @top_srcdir@ # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explicit @brief command for a brief description. JAVADOC_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. SHOW_DIRECTORIES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from the # version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the progam writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = @top_srcdir@/libgphoto2 @top_srcdir@/gphoto2 @top_srcdir@/libgphoto2_port/gphoto2 @top_srcdir@/libgphoto2_port/libgphoto2_port @top_srcdir@/camlibs/template # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm FILE_PATTERNS = *.h *.c # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = @HTML_APIDOC_DIR@ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = YES # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = @HAVE_DOT@ # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that a graph may be further truncated if the graph's # image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH # and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), # the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, which results in a white background. # Warning: Depending on the platform used, enabling this option may lead to # badly anti-aliased labels on the edges of a graph (i.e. they become hard to # read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO libgphoto2-2.5.9/doc/camlib_devel.lyx0000644000175000001440000005471612561423352014446 00000000000000#LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 2.15 \textclass linuxdoc \language default \inputencoding latin1 \fontscheme default \graphics default \paperfontsize default \spacing single \papersize Default \paperpackage a4 \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \added_space_top vfill \added_space_bottom vfill gPhoto2 Camera Library Developer's Guide \layout Author Scott Fritzinger \newline 2000-07-26 \newline Revision 1 \layout Standard \begin_inset LatexCommand \tableofcontents{} \end_inset \layout Section Reverse Engineering the Camera Protocol \layout Standard The most difficult part for most developers is obtaining the transfer protocol. If the OEM's are lucky enough, they will simply provide us with the protocol specifications for their cameras and the drivers will be written at no cost to them. Most OEM's refuse to do so though, citing trade secrets or company policy; this is truly unfortunate in that they have effectively told their own customers who use operating systems other than Windows and the Mac that they don't want their future business and that they aren't valued customer to begin with. \layout Standard When OEM's do not cooperate, the developer is left to determine the protocol him/herself through reverse engineering. \layout Subsection Sniffing the Protocol \layout Standard What follows are the most common setups for sniffing camera protocol traffic. In all setups, a host computer runs the native camera drivers.; typically, the Windows serial port drivers are used for reverse engineering. The drivers are run through a series of functions that include getting a picture index, downloading thumbnails, download full images, deleting images, camera configuration options, in addition to any other features a camera might have. During these operations, one or more of the following methods are used to capture the communication between the host computer and the camera. \layout Subsubsection Serial Repeater \layout Standard A serial repeater consists of the host computer, a computer used as a repeater, and the camera. The setup is shown in figure . \layout Standard The repeater runs special software which reads data from one serial port, logs the communication, and then outputs the data to the other serial port. Data that is from the host computer to the camera and from the camera to the host computer is logged sequentially in a single log file. Information logged includes hexadecimal data values, direction of the communica tion, as well as time stamps for synchronization. An example sniffer to use for this configuration is \begin_inset Quotes eld \end_inset sersniff \begin_inset Quotes erd \end_inset . \layout Subsubsection \begin_inset Quotes eld \end_inset Y \begin_inset Quotes erd \end_inset Serial Cable \layout Standard To avoid using two computers, a Y serial cable can be used. The \begin_inset Quotes eld \end_inset trunk \begin_inset Quotes erd \end_inset end of the serial cable attaches to the camera's serial transfer cable, while the two \begin_inset Quotes eld \end_inset branches \begin_inset Quotes erd \end_inset plug in to two serial ports on the host computer. Figure shows this setup. \layout Standard The camera drivers use one of the serial ports on the host computer, while the other port is opened with a hexadecimal monitor application that dumps all communications on the port to a file. The downside to this approach is the developer would have to determine which sets of data was generated by the camera or the host computer. Also, a Y cable would have to be either built or purchased from an electronics supply store. \layout Subsubsection Virtual Device Driver Hooks \layout Standard The Windows platform allows virtual device drivers to \begin_inset Quotes eld \end_inset hook \begin_inset Quotes erd \end_inset into other drivers to provide additional functionality or feature enhancements. A combination GUI and device driver named PortMon by Systems Internals is a communications debugging utility that hooks into the existing Windows serial device driver (vcomm.vxd) and logs communications. Figure shows this equipment arrangement. \layout Standard This setup allows the developer to not use any extra hardware by simply relying on software. This is perhaps the easiest method for capturing camera data. \layout Subsection Making Sense Out of the Protocol \layout Standard What follows are some pointers on decoding camera protocols. It uses a protocol that isn't really any camera protocol in particular, but should demonstrate some commonalities between most camera protocols. \layout Enumerate Cameras like to ping. This is the in the form of an "ACK"" command that is different for different cameras. Basically, it is usually a short packet (probably 1 byte) that is sent both ways in order for the camera to know the computer is there or vice versa. It is also sometimes used to wake up a camera that has gone into power-save mode. It usually starts out the communications, as well as confirms each packet in any sort of "mass" transfer. The opposite, a "NAK", is sent to basically say the last packet was not received, or an error has occurred. Again, this is usually just a single byte as well. \newline \newline Example: \newline Computer: 01 \newline Camera : 01 \newline \newline The Camera sent an ACK ("01") and the Computer responded with an ACK as well. \layout Enumerate Transfers are usually in "reverse network order", meaning least significant bytes come before most significant bytes. For example, \begin_inset Quotes eld \end_inset 00 08 \begin_inset Quotes erd \end_inset should actually be reassembled as \begin_inset Quotes eld \end_inset 08 00 \begin_inset Quotes erd \end_inset . \layout Enumerate Most protocols use starting and stopping bytes. \newline \newline Example: \newline Computer: 03 50 00 0f e0 04 \newline Camera : 03 03 00 3f 03 04 \newline Computer: 01 \newline \newline For this example, notice the packets begin with "03" and end with "04" (don't pay attention to what is between them). Also notice the Computer sent an "ACK" to confirm it got the packet. \layout Enumerate Packets usually have a "command" byte, which tells either the computer or the camera what to do. Let's say you told the software to retrieve the number of pictures, which at the time happened to be "8", and you got the following: \newline \newline Computer: 03 01 00 00 00 04 \newline Camera : 03 01 00 00 08 04 \newline Computer: 01 \newline \newline In this example, you notice the "03" and "04" specifying the start and stop of the packet. Also, you notice the second byte in the Computer packet is "01". The camera responds with the above packet, and low and behold, you see the number 8 in the same packet. It would appear, initially, that the second byte is used as a command byte, and that "01" specifies the camera to return the number of pictures. This may very well be right, but don't jump into it yet. Make sure you look at a bunch of similar situations to confirm this. (Again, notice the "ACK" sent by the computer). \layout Enumerate Most protocols have a "data size" byte(s) in data packets. Let's say that you told the camera to retrieve thumbnail 8 and you get the following: \newline \newline Computer: 03 02 00 00 08 04 \newline Camera : 03 02 00 0F (15 bytes) 04 \newline Computer: 01 \newline \newline OK, here's a brief breakdown of this transaction: \newline \newline -Looks like the command to retrieve a thumbnail is "02" (2nd byte in the computer packet), and that the byte that is "08" specifies which thumbnail to return. \newline -The camera responds with a "02" in the command field, specifying it is returning a thumbnail, and then sends "0F", and 15 bytes of data. \newline -It looks like the byte "0F" specifies how many bytes are after it in the same packet. This is a data size byte. \newline (Note: this is a simplistic example. No thumbnail will only be 15 bytes :) this leads up to the next thing to consider) \layout Enumerate Most protocols have an "order" or "counter" byte. This is used so that, in large data transfers where the picture may be split up into several different packets, the computer knows how to reassemble all the data. The entire thumbnail more than likely will not be contained in a single packet for logistical reasons, so they break up the data into many different packets and give each packet a unique number (or \begin_inset Quotes eld \end_inset order \begin_inset Quotes erd \end_inset byte). Let's say you told your camera to return thumbnail 8 (which is, as mentioned, pretty big), and you get the following: \newline \newline Computer: 02 03 00 00 08 03 \newline Camera : 02 03 00 0F (15 bytes) 03 \newline Computer: 01 \newline Camera : 02 03 01 0F (15 bytes) 03 \newline Computer: 01 \newline Camera : 02 03 02 0F (15 bytes) 03 \newline Computer: 01 \newline ... 5 more packets and ACKs ... \newline Camera : 02 03 08 09 (9 bytes) 03 \newline Computer: 01 \newline \newline You notice that the 3rd byte of each of the camera packets increments with each packet sent from the camera. This looks like it is an order (counter) byte. the computer can then reassemble the data from all the packets in order to reproduce the image. \layout Enumerate Most protocols have some sort of error detection byte(s) at the end of the packet. This is usually a simple checksum (summation of bytes), or a CRC (a somewhat complex algorithm that reduces the probability of mis-diagnosing a packet with errors by magnitudes). These bytes can take into account only the data, or maybe the entire packet excluding those error detection bytes. If this isn't a known scheme, this winds up being the hardest part of reimpleme nting the protocol. Lets take the above example again, this time we'll add a couple bytes on the end for error detection: \newline \newline Computer: 02 03 00 00 08 03 \newline Camera : 02 03 00 0F (15 bytes) 0f 02 03 \newline Computer: 01 \newline Camera : 02 03 01 0F (15 bytes) 0e 00 03 \newline Computer: 02 \newline Camera : 02 03 01 0F (15 bytes) fa d0 03 \newline Computer: 01 \newline Camera : 02 03 02 0F (15 bytes) fa d0 03 \newline Computer: 01 \newline ... 5 more packets and ACKs \newline Camera : 02 03 08 09 (9 bytes) d7 38 03 \newline Computer: 01 \newline \newline Notice how the error detection bytes are usually different for each packet. These may be checksums, or CRC's, or something else. Only way to find out really is to try each one, on different combinations of packet parts (data, order byte, command byte, etc...) and see if you get the same thing. Try this on the shorter packets to make life easier. \newline \newline Look at one more thing that sticks out in this transaction: for packet with order byte \begin_inset Quotes eld \end_inset 01 \begin_inset Quotes erd \end_inset , the Computer responded with a "02 \begin_inset Quotes erd \end_inset . and the Camera then resent the same packet it just did. This shows that the NAK byte is "02", and this could happen because maybe the error detection bytes didn't match with the data, or maybe something else happened. either way, the camera resent the last packet, and now you know how the camera can recover from transfer errors. If you didn't get the packet you were expecting, send the camera a NAK and it will resend the same packet again. \layout Section Understanding the gPhoto2 Design \layout Standard The gPhoto2 design is the same three-tiered structure that has worked extremely well in the past with other software packages. Here is a listing of the 3 tiers: \layout Itemize the camera library \layout Itemize the I/O library \layout Itemize the front-end \layout Itemize the \begin_inset Quotes eld \end_inset core \begin_inset Quotes erd \end_inset \layout Subsection Role of the Camera Library \layout Standard The camera library is in charge of talking directly with the camera. The library uses the gPhoto2 Camera API in order to provide a common access-met hod for the library itself. Being dynamically linked, the libraries are loaded at run-time depending on the camera model the end-user would like to access. \layout Standard In order to provide flexilibity with variations in camera design, there are camera \begin_inset Quotes eld \end_inset abilities \begin_inset Quotes erd \end_inset which list, well, the abilities of each camera model. Some camera may support serial port connections only, while others may be able to use USB and a serial port. We've run into cameras that don't support thumbnailing on the camera so there is an \begin_inset Quotes eld \end_inset abilities \begin_inset Quotes erd \end_inset field to specify whether or not the camera supports thumbnailing. The \begin_inset Quotes eld \end_inset abilities \begin_inset Quotes erd \end_inset also list other things such as supported serial transfer speeds, file deletion, and other functionality. \layout Standard The camera libraries only make functions calls to the I/O library and to the gPhoto2 core. \layout Standard There is more information on the specifics of the camera library in section 3 of this document. \layout Subsection Role of the I/O Library \layout Standard The gPhoto2 I/O library is a platform-independent communications library that support serial, parallel, USB, firewire, and network connections. It is a work-in-progress with a constantly expanding list of supported platforms. This library uses the gPhoto2 I/O library API for accessing communications devices. It enumerates the devices available on a system, and provides read/write access. \layout Standard The camera libraries all use the I/O library for communications with the cameras. By doing having all communications go through a single library, the camera libraries become as portable as the I/O library. Porting gPhoto2 to other platforms become extremely easy. \layout Standard There is more information on the specifics of the I/O library in section 3 of this document. \layout Subsection Role of the Front-end \layout Standard The front-end is the application that the user interacts with. It is usually a command-line program, or a graphical point-and-click interface. The front-end talks only with the gPhoto2 core in order to retrieve pictures and perform other functions with the camera. \layout Subsection Role of the gPhoto2 Core \layout Standard The gPhoto2 \begin_inset Quotes eld \end_inset core \begin_inset Quotes erd \end_inset is the heart of gPhoto2. It provides services to both the camera libraries and the front-ends. Most of the services deal with error-checking and enumeration of devices (cameras, I/O devices, etc...). The core performs validity checking on data passed to/from the front-end or the camera library. \layout Standard You could consider the core a translator/interpreter/spell-checker/army-general in the \begin_inset Quotes eld \end_inset big picture \begin_inset Quotes erd \end_inset of gPhoto2. It does the grunt-work and performs the coordination of the other parts. \layout Section Implementing the Library \layout Standard gPhoto2 camera libraries use the gPhoto2 Camera API (CAPI) for implementation. Here is a listing of the CAPI functions: \layout Standard camera_id \layout Standard camera_abilities \layout Standard camera_init \layout Standard camera_exit \layout Standard camera_folder_list \layout Standard camera_file_list \protected_separator \layout Standard camera_file_get \layout Standard camera_file_get_preview \layout Standard camera_file_put \layout Standard camera_file_delete \layout Standard camera_config_get \layout Standard camera_config_set \layout Standard camera_capture \layout Standard camera_summary \layout Standard camera_manual \layout Standard camera_about \newline \layout Standard Section 3.1 details the purpose of each of these functions, while Section 3.2 discusses how to use the I/O library. \layout Subsection Camera API \layout Standard The CAPI provides the full set of functions for doing various tasks with the camera. All CAPI functions return either GP_OK for succesful execution , or GP_ERROR for a failure of execution \layout Standard What follows is a listing of the functions, including prototypes and data exchange: \layout Subsubsection camera_id \layout Standard \series bold Purpose: \series default Retrieve the unique id for the camera library. \layout Standard \series bold Prototype: \series default int camera_id (CameraText *id); \layout Standard \series bold Arguments: \layout Standard CameraText *id : unique string to represent the camera library \newline \layout Standard In order to guarantee that only once instance of the camera library is loaded for each instance of the core, the camera library must copy a unique string into the \begin_inset Quotes eld \end_inset id \begin_inset Quotes erd \end_inset . Please consult the gPhoto developers to determine which string you should use. \newline \layout Standard \series bold Example: \layout Standard int camera_id(CameraText *id) { \layout Standard strcpy(id->text, \begin_inset Quotes eld \end_inset my-unique-string \begin_inset Quotes erd \end_inset ); \layout Standard return (GP_OK); \layout Standard } \layout Subsubsection camera_abilities \layout Standard \series bold Purpose: \series default Retrieve the list of supported cameras and the abilities for each camera \layout Standard \series bold Prototype: \series default int camera_abilities (CameraAbilitiesList *list); \layout Standard \series bold Arguments: \series default d \layout Standard CameraAbilities *abilities : the list of abilities for the supported cameras \layout Standard int *count : the number of \layout Subsubsection camera_init \layout Standard \series bold Purpose: \series default Initialize the camera \layout Standard \series bold Prototype: \series default int camera_init (Camera *camera, CameraInit *init); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_exit \layout Standard \series bold Purpose: \series default Close the camera \layout Standard \series bold Prototype: \series default int camera_exit (Camera *camera); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_file_list \layout Standard \series bold Purpose: \series default List the files in a particular folder on the camera \layout Standard \series bold Prototype: \series default int camera_file_list(Camera *camera, CameraList *list, char *folder); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_folder_list \layout Standard \series bold Purpose: \series default List the subfolders in a particular folder on the camera \layout Standard \series bold Prototype: \series default int camera_folder_list(Camera *camera, CameraList *list, char *folder); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_file_get \layout Standard \series bold Purpose: \series default Retrieve a file from the camera \layout Standard \series bold Prototype: \series default int camera_file_get (Camera *camera, CameraFile *file, char *folder, char *filename); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_file_get_preview \layout Standard \series bold Purpose: \series default Retrieve a file's preview from the camera \layout Standard \series bold Prototype: \series default int camera_file_get_preview (Camera *camera, CameraFile *file, char *folder, char *filename); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_file_put \layout Standard \series bold Purpose: \series default Place (upload) a file to the camera \layout Standard \series bold Prototype: \series default int camera_file_put (Camera *camera, CameraFile *file, char *folder); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_file_delete \layout Standard \series bold Purpose: \series default Delete a file from the camera \layout Standard \series bold Prototype: \series default int camera_file_delete (Camera *camera, char *folder, char *filename); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_config_get \layout Standard \series bold Purpose: \series default Retrieve the configuration window. \layout Standard \series bold Prototype: \series default int camera_config_get (Camera *camera, CameraWidget *window); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_config_set \layout Standard \series bold Purpose: \series default Set camera configuration \layout Standard \series bold Prototype: \series default int camera_config_set (Camera *camera, CameraSetting *setting, int count); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_capture \layout Standard \series bold Purpose: \series default Retrieve live data from the camera \layout Standard \series bold Prototype: \series default int camera_capture (Camera *camera, CameraFile *file, CameraCaptureInfo *info); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_summary \layout Standard \series bold Purpose: \series default Retrieve the camera summary information \layout Standard \series bold Prototype: \series default int camera_summary (Camera *camera, CameraText *summary); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_manual \layout Standard \series bold Purpose: \series default Retrieve the camera user's guide (manual) \layout Standard \series bold Prototype: \series default int camera_manual (Camera *camera, CameraText *manual); \layout Standard \series bold Arguments: \series default d \layout Subsubsection camera_about \layout Standard \series bold Purpose: \series default Retrieve information about the camera library \layout Standard \series bold Prototype: \series default int camera_about (Camera *camera, CameraText *about); \layout Standard \series bold Arguments: \series default d \layout Subsection The gPhoto2 I/O Library \the_end libgphoto2-2.5.9/doc/camlib_devel.sgml0000644000175000001440000004356212557123324014572 00000000000000
gPhoto2 Camera Library Developer's Guide Scott Fritzinger 2000-07-26 Revision 1 Reverse Engineering the Camera Protocol

The most difficult part for most developers is obtaining the transfer protocol. If the OEM's are lucky enough, they will simply provide us with the protocol specifications for their cameras and the drivers will be written at no cost to them. Most OEM's refuse to do so though, citing trade secrets or company policy; this is truly unfortunate in that they have effectively told their own customers who use operating systems other than Windows and the Mac that they don't want their future business and that they aren't valued customer to begin with.

When OEM's do not cooperate, the developer is left to determine the protocol him/herself through reverse engineering.

Sniffing the Protocol

What follows are the most common setups for sniffing camera protocol traffic. In all setups, a host computer runs the native camera drivers.; typically, the Windows serial port drivers are used for reverse engineering. The drivers are run through a series of functions that include getting a picture index, downloading thumbnails, download full images, deleting images, camera configuration options, in addition to any other features a camera might have. During these operations, one or more of the following methods are used to capture the communication between the host computer and the camera.

Serial Repeater

A serial repeater consists of the host computer, a computer used as a repeater, and the camera. The setup is shown in figure .

The repeater runs special software which reads data from one serial port, logs the communication, and then outputs the data to the other serial port. Data that is from the host computer to the camera and from the camera to the host computer is logged sequentially in a single log file. Information logged includes hexadecimal data values, direction of the communication, as well as time stamps for synchronization. An example sniffer to use for this configuration is "sersniff".

"Y" Serial Cable

To avoid using two computers, a Y serial cable can be used. The "trunk" end of the serial cable attaches to the camera's serial transfer cable, while the two "branches" plug in to two serial ports on the host computer. Figure shows this setup.

The camera drivers use one of the serial ports on the host computer, while the other port is opened with a hexadecimal monitor application that dumps all communications on the port to a file. The downside to this approach is the developer would have to determine which sets of data was generated by the camera or the host computer. Also, a Y cable would have to be either built or purchased from an electronics supply store.

Virtual Device Driver Hooks

The Windows platform allows virtual device drivers to "hook" into other drivers to provide additional functionality or feature enhancements. A combination GUI and device driver named PortMon by Systems Internals is a communications debugging utility that hooks into the existing Windows serial device driver (vcomm.vxd) and logs communications. Figure shows this equipment arrangement.

This setup allows the developer to not use any extra hardware by simply relying on software. This is perhaps the easiest method for capturing camera data.

Making Sense Out of the Protocol

What follows are some pointers on decoding camera protocols. It uses a protocol that isn't really any camera protocol in particular, but should demonstrate some commonalities between most camera protocols.

Cameras like to ping. This is the in the form of an "ACK"" command that is different for different cameras. Basically, it is usually a short packet (probably 1 byte) that is sent both ways in order for the camera to know the computer is there or vice versa. It is also sometimes used to wake up a camera that has gone into power-save mode. It usually starts out the communications, as well as confirms each packet in any sort of "mass" transfer. The opposite, a "NAK", is sent to basically say the last packet was not received, or an error has occured. Again, this is usually just a single byte as well. Example: Computer: 01 Camera : 01 The Camera sent an ACK ("01") and the Computer responded with an ACK as well. Transfers are usually in "reverse network order", meaning least significant bytes come before most significant bytes. For example, "00 08" should actually be reassembled as "08 00". Most protocols use starting and stopping bytes. Example: Computer: 03 50 00 0f e0 04 Camera : 03 03 00 3f 03 04 Computer: 01 For this example, notice the packets begin with "03" and end with "04" (don't pay attention to what is between them). Also notice the Computer sent an "ACK" to confirm it got the packet. Packets usually have a "command" byte, which tells either the computer or the camera what to do. Let's say you told the software to retrieve the number of pictures, which at the time happened to be "8", and you got the following: Computer: 03 01 00 00 00 04 Camera : 03 01 00 00 08 04 Computer: 01 In this example, you notice the "03" and "04" specifying the start and stop of the packet. Also, you notice the second byte in the Computer packet is "01". The camera responds with the above packet, and low and behold, you see the number 8 in the same packet. It would appear, initially, that the second byte is used as a command byte, and that "01" specifies the camera to return the number of pictures. This may very well be right, but don't jump into it yet. Make sure you look at a bunch of similar situations to confirm this. (Again, notice the "ACK" sent by the computer). Most protocols have a "data size" byte(s) in data packets. Let's say that you told the camera to retrieve thumbnail 8 and you get the following: Computer: 03 02 00 00 08 04 Camera : 03 02 00 0F (15 bytes) 04 Computer: 01 OK, here's a brief breakdown of this transaction: -Looks like the command to retrieve a thumbnail is "02" (2nd byte in the computer packet), and that the byte that is "08" specifies which thumbnail to return. -The camera responds with a "02" in the command field, specifying it is returning a thumbnail, and then sends "0F", and 15 bytes of data. -It looks like the byte "0F" specifies how many bytes are after it in the same packet. This is a data size byte. (Note: this is a simplistic example. No thumbnail will only be 15 bytes :) this leads up to the next thing to consider) Most protocols have an "order" or "counter" byte. This is used so that, in large data transfers where the picture may be split up into several different packets, the computer knows how to reassemble all the data. The entire thumbnail more than likely will not be contained in a single packet for logistical reasons, so they break up the data into many different packets and give each packet a unique number (or "order" byte). Let's say you told your camera to return thumbnail 8 (which is, as mentioned, pretty big), and you get the following: Computer: 02 03 00 00 08 03 Camera : 02 03 00 0F (15 bytes) 03 Computer: 01 Camera : 02 03 01 0F (15 bytes) 03 Computer: 01 Camera : 02 03 02 0F (15 bytes) 03 Computer: 01 ... 5 more packets and ACKs ... Camera : 02 03 08 09 (9 bytes) 03 Computer: 01 You notice that the 3rd byte of each of the camera packets increments with each packet sent from the camera. This looks like it is an order (counter) byte. the computer can then reassemble the data from all the packets in order to reproduce the image. Most protocols have some sort of error detection byte(s) at the end of the packet. This is usually a simple checksum (summation of bytes), or a CRC (a somewhat complex algorithm that reduces the probability of mis-diagnosing a packet with errors by magnitudes). These bytes can take into account only the data, or maybe the entire packet excluding those error detection bytes. If this isn't a known scheme, this winds up being the hardest part of reimplementing the protocol. Lets take the above example again, this time we'll add a couple bytes on the end for error detection: Computer: 02 03 00 00 08 03 Camera : 02 03 00 0F (15 bytes) 0f 02 03 Computer: 01 Camera : 02 03 01 0F (15 bytes) 0e 00 03 Computer: 02 Camera : 02 03 01 0F (15 bytes) fa d0 03 Computer: 01 Camera : 02 03 02 0F (15 bytes) fa d0 03 Computer: 01 ... 5 more packets and ACKs Camera : 02 03 08 09 (9 bytes) d7 38 03 Computer: 01 Notice how the error detection bytes are usually different for each packet. These may be checksums, or CRC's, or something else. Only way to find out really is to try each one, on different combinations of packet parts (data, order byte, command byte, etc...) and see if you get the same thing. Try this on the shorter packets to make life easier. Look at one more thing that sticks out in this transaction: for packet with order byte "01", the Computer responded with a "02". and the Camera then resent the same packet it just did. This shows that the NAK byte is "02", and this could happen because maybe the error detection bytes didn't match with the data, or maybe something else happened. either way, the camera resent the last packet, and now you know how the camera can recover from transfer errors. If you didn't get the packet you were expecting, send the camera a NAK and it will resend the same packet again.

Understanding the gPhoto2 Design

The gPhoto2 design is the same three-tiered structure that has worked extremely well in the past with other software packages. Here is a listing of the 3 tiers:

the camera library the I/O library the front-end the "core"

Role of the Camera Library

The camera library is in charge of talking directly with the camera. The library uses the gPhoto2 Camera API in order to provide a common access-method for the library itself. Being dynamically linked, the libraries are loaded at run-time depending on the camera model the end-user would like to access.

In order to provide flexilibity with variations in camera design, there are camera "abilities" which list, well, the abilities of each camera model. Some camera may support serial port connections only, while others may be able to use USB and a serial port. We've run into cameras that don't support thumbnailing on the camera so there is an "abilities" field to specify whether or not the camera supports thumbnailing. The "abilities" also list other things such as supported serial transfer speeds, file deletion, and other functionality.

The camera libraries only make functions calls to the I/O library and to the gPhoto2 core.

There is more information on the specifics of the camera library in section 3 of this document.

Role of the I/O Library

The gPhoto2 I/O library is a platform-independent communications library that support serial, parallel, USB, firewire, and network connections. It is a work-in-progress with a constantly expanding list of supported platforms. This library uses the gPhoto2 I/O library API for accessing communications devices. It enumerates the devices available on a system, and provides read/write access.

The camera libraries all use the I/O library for communications with the cameras. By doing having all communications go through a single library, the camera libraries become as portable as the I/O library. Porting gPhoto2 to other platforms become extremely easy.

There is more information on the specifics of the I/O library in section 3 of this document.

Role of the Front-end

The front-end is the application that the user interacts with. It is usually a command-line program, or a graphical point-and-click interface. The front-end talks only with the gPhoto2 core in order to retrieve pictures and perform other functions with the camera.

Role of the gPhoto2 Core

The gPhoto2 "core" is the heart of gPhoto2. It provides services to both the camera libraries and the front-ends. Most of the services deal with error-checking and enumeration of devices (cameras, I/O devices, etc...). The core performs validity checking on data passed to/from the front-end or the camera library.

You could consider the core a translator/interpreter/spell-checker/army-general in the "big picture" of gPhoto2. It does the grunt-work and performs the coordination of the other parts.

Implementing the Library

gPhoto2 camera libraries use the gPhoto2 Camera API (CAPI) for implementation. Here is a listing of the CAPI functions:

camera_id

camera_abilities

camera_init

camera_exit

camera_folder_list

camera_file_list

camera_file_get

camera_file_get_preview

camera_file_put

camera_file_delete

camera_config_get

camera_config_set

camera_capture

camera_summary

camera_manual

camera_about

Section 3.1 details the purpose of each of these functions, while Section 3.2 discusses how to use the I/O library.

Camera API

The CAPI provides the full set of functions for doing various tasks with the camera. All CAPI functions return either GP_OK for succesful execution , or GP_ERROR for a failure of execution

What follows is a listing of the functions, including prototypes and data exchange:

camera_id

Purpose: Retrieve the unique id for the camera library.

Prototype: int camera_id (CameraText *id);

Arguments:

CameraText *id : unique string to represent the camera library

In order to guarantee that only once instance of the camera library is loaded for each instance of the core, the camera library must copy a unique string into the "id". Please consult the gPhoto developers to determine which string you should use.

Example:

int camera_id(CameraText *id) {

strcpy(id->text, "my-unique-string");

return (GP_OK);

}

camera_abilities

Purpose: Retrieve the list of supported cameras and the abilities for each camera

Prototype: int camera_abilities (CameraAbilitiesList *list);

Arguments: d

CameraAbilities *abilities : the list of abilities for the supported cameras

int *count : the number of

camera_init

Purpose: Initialize the camera

Prototype: int camera_init (Camera *camera, CameraInit *init);

Arguments: d

camera_exit

Purpose: Close the camera

Prototype: int camera_exit (Camera *camera);

Arguments: d

camera_file_list

Purpose: List the files in a particular folder on the camera

Prototype: int camera_file_list(Camera *camera, CameraList *list, char *folder);

Arguments: d

camera_folder_list

Purpose: List the subfolders in a particular folder on the camera

Prototype: int camera_folder_list(Camera *camera, CameraList *list, char *folder);

Arguments: d

camera_file_get

Purpose: Retrieve a file from the camera

Prototype: int camera_file_get (Camera *camera, CameraFile *file, char *folder, char *filename);

Arguments: d

camera_file_get_preview

Purpose: Retrieve a file's preview from the camera

Prototype: int camera_file_get_preview (Camera *camera, CameraFile *file, char *folder, char *filename);

Arguments: d

camera_file_put

Purpose: Place (upload) a file to the camera

Prototype: int camera_file_put (Camera *camera, CameraFile *file, char *folder);

Arguments: d

camera_file_delete

Purpose: Delete a file from the camera

Prototype: int camera_file_delete (Camera *camera, char *folder, char *filename);

Arguments: d

camera_config_get

Purpose: Retrieve the configuration window.

Prototype: int camera_config_get (Camera *camera, CameraWidget *window);

Arguments: d

camera_config_set

Purpose: Set camera configuration

Prototype: int camera_config_set (Camera *camera, CameraSetting *setting, int count);

Arguments: d

camera_capture

Purpose: Retrieve live data from the camera

Prototype: int camera_capture (Camera *camera, CameraFile *file, CameraCaptureInfo *info);

Arguments: d

camera_summary

Purpose: Retrieve the camera summary information

Prototype: int camera_summary (Camera *camera, CameraText *summary);

Arguments: d

camera_manual

Purpose: Retrieve the camera user's guide (manual)

Prototype: int camera_manual (Camera *camera, CameraText *manual);

Arguments: d

camera_about

Purpose: Retrieve information about the camera library

Prototype: int camera_about (Camera *camera, CameraText *about);

Arguments: d

The gPhoto2 I/O Library
libgphoto2-2.5.9/doc/camlib_devel-y.eps0000644000175000001440000003455312557123324014665 00000000000000%!PS-Adobe-2.0 EPSF-2.0 %%Title: Untitled-1 %%Creator: Dia v0.83 %%CreationDate: Thu Apr 13 18:51:15 2000 %%For: a user %%Magnification: 1.0000 %%Orientation: Portrait %%BoundingBox: 0 0 294 151 %%Pages: 1 %%BeginSetup %%EndSetup %%EndComments [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def /Times-Roman-latin1 /Times-Roman findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Times-Italic-latin1 /Times-Italic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Times-Bold-latin1 /Times-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Times-BoldItalic-latin1 /Times-BoldItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-Book-latin1 /AvantGarde-Book findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-BookOblique-latin1 /AvantGarde-BookOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-Demi-latin1 /AvantGarde-Demi findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-DemiOblique-latin1 /AvantGarde-DemiOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-Light-latin1 /Bookman-Light findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-LightItalic-latin1 /Bookman-LightItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-Demi-latin1 /Bookman-Demi findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-DemiItalic-latin1 /Bookman-DemiItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-latin1 /Courier findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-Oblique-latin1 /Courier-Oblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-Bold-latin1 /Courier-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-BoldOblique-latin1 /Courier-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-latin1 /Helvetica findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Oblique-latin1 /Helvetica-Oblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Bold-latin1 /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-BoldOblique-latin1 /Helvetica-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-latin1 /Helvetica-Narrow findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-Oblique-latin1 /Helvetica-Narrow-Oblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-Bold-latin1 /Helvetica-Narrow-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-BoldOblique-latin1 /Helvetica-Narrow-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-Roman-latin1 /NewCenturySchoolbook-Roman findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-Italic-latin1 /NewCenturySchoolbook-Italic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-Bold-latin1 /NewCenturySchoolbook-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-BoldItalic-latin1 /NewCenturySchoolbook-BoldItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-Roman-latin1 /Palatino-Roman findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-Italic-latin1 /Palatino-Italic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-Bold-latin1 /Palatino-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-BoldItalic-latin1 /Palatino-BoldItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Symbol-latin1 /Symbol findfont definefont pop /ZapfChancery-MediumItalic-latin1 /ZapfChancery-MediumItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /ZapfDingbats-latin1 /ZapfDingbats findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /cp {closepath} bind def /c {curveto} bind def /f {fill} bind def /a {arc} bind def /ef {eofill} bind def /ex {exch} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth pop} bind def /tr {translate} bind def /ellipsedict 8 dict def ellipsedict /mtrx matrix put /ellipse { ellipsedict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc savematrix setmatrix end } def /colortogray { /rgbdata exch store rgbdata length 3 idiv /npixls exch store /rgbindx 0 store 0 1 npixls 1 sub { grays exch rgbdata rgbindx get 20 mul rgbdata rgbindx 1 add get 32 mul rgbdata rgbindx 2 add get 12 mul add add 64 idiv put /rgbindx rgbindx 3 add store } for grays 0 npixls getinterval } bind def /mergeprocs { dup length 3 -1 roll dup length dup 5 1 roll 3 -1 roll add array cvx dup 3 -1 roll 0 exch putinterval dup 4 2 roll putinterval } bind def /colorimage { pop pop {colortogray} mergeprocs image } bind def 28.346000 -28.346000 scale -5.950000 -9.256637 translate %%EndProlog 1.000000 1.000000 1.000000 srgb n 6.000000 4.000000 m 6.000000 6.000000 l 10.000000 6.000000 l 10.000000 4.000000 l f 0.100000 slw [] 0 sd [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 6.000000 4.000000 m 6.000000 6.000000 l 10.000000 6.000000 l 10.000000 4.000000 l cp s /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 6.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb (Camera) dup sw 2 div 8.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 8.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 7.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 10.000000 ex sub 7.000000 m gs 1 -1 sc sh gr 0.100000 slw [] 0 sd [] 0 sd 0 slc 0.000000 0.000000 0.000000 srgb n 10.000000 5.000000 m 14.000000 5.000000 l s 0 slj 0.000000 0.000000 0.000000 srgb n 10.800000 4.600000 m 10.000000 5.000000 l 10.800000 5.400000 l f 0 slj 0.000000 0.000000 0.000000 srgb n 13.200000 5.400000 m 14.000000 5.000000 l 13.200000 4.600000 l f 0.080000 slw 0 slj [] 0 sd 0.700000 0.700000 0.700000 srgb n 14.250000 4.200000 m 14.250000 7.700000 l 15.750000 7.700000 l 15.750000 4.200000 l f 0.000000 0.000000 0.000000 srgb n 14.250000 4.200000 m 14.250000 7.700000 l 15.750000 7.700000 l 15.750000 4.200000 l cp s 0.010000 slw 0.000000 0.000000 0.000000 srgb n 14.400000 4.410000 m 14.400000 4.810000 l 15.600000 4.810000 l 15.600000 4.410000 l cp s 0.000000 0.000000 0.000000 srgb n 14.400000 4.810000 m 14.400000 5.210000 l 15.600000 5.210000 l 15.600000 4.810000 l cp s 0.000000 0.000000 0.000000 srgb n 14.400000 5.210000 m 14.400000 5.610000 l 15.600000 5.610000 l 15.600000 5.210000 l cp s 0.000000 0.000000 0.000000 srgb n 14.400000 5.610000 m 14.400000 6.010000 l 15.600000 6.010000 l 15.600000 5.610000 l cp s 0.000000 0.000000 0.000000 srgb n 14.400000 6.090000 m 14.400000 6.330000 l 15.150000 6.330000 l 15.150000 6.090000 l cp s 0.000000 1.000000 0.000000 srgb n 15.525000 6.130000 0.052500 0.052500 0 360 ellipse f 0.000000 0.000000 0.000000 srgb n 15.525000 6.130000 0.052500 0.052500 0 360 ellipse cp s 1.000000 1.000000 0.000000 srgb n 15.525000 6.290000 0.052500 0.052500 0 360 ellipse f 0.000000 0.000000 0.000000 srgb n 15.525000 6.290000 0.052500 0.052500 0 360 ellipse cp s 1.000000 1.000000 1.000000 srgb n 15.225000 6.170000 m 15.225000 6.330000 l 15.405000 6.330000 l 15.405000 6.170000 l f 0.000000 0.000000 0.000000 srgb n 15.225000 6.170000 m 15.225000 6.330000 l 15.405000 6.330000 l 15.405000 6.170000 l cp s 0.080000 slw 0 slc 0.000000 0.000000 0.000000 srgb n 14.500000 6.650000 m 14.500000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 14.750000 6.650000 m 14.750000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 15.000000 6.650000 m 15.000000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 15.250000 6.650000 m 15.250000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 15.500000 6.650000 m 15.500000 7.525000 l s 0.600000 0.600000 0.600000 srgb n 13.950000 8.000000 m 14.250000 7.400000 l 14.250000 7.700000 l 15.750000 7.700000 l 15.750000 7.400000 l 16.050000 8.000000 l f 0.000000 0.000000 0.000000 srgb n 13.950000 8.000000 m 14.250000 7.400000 l 14.250000 7.700000 l 15.750000 7.700000 l 15.750000 7.400000 l 16.050000 8.000000 l cp s /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb (Host) dup sw 2 div 15.000000 ex sub 9.000000 m gs 1 -1 sc sh gr 0.100000 slw [] 0 sd [] 0 sd 0 slj 0 slc 0.000000 0.000000 0.000000 srgb n 12.000000 5.000000 m 12.000000 6.000000 l 14.000000 6.000000 l 14.000000 6.000000 l s 0 slj 0.000000 0.000000 0.000000 srgb n 13.200000 6.400000 m 14.000000 6.000000 l 13.200000 5.600000 l f showpage libgphoto2-2.5.9/doc/frontend_devel.txt0000644000175000001440000000047612557123324015034 00000000000000 gPhoto Front-end Developer's Guide Scott Fritzinger 2000-07-26 Revision 1 \tableofcontents{} 1 Understanding the gPhoto2 Structure 1.1 Role of the gPhoto2 Core 1.2 Role of the Camera Library 1.3 Role of the Front-end 2 Implementing the Front-end 2.1 gPhoto2 Core API 2.2 Functions Required By the Front-end libgphoto2-2.5.9/doc/camlib_devel.txt0000644000175000001440000004037412557123324014445 00000000000000 gPhoto2 Camera Library Developer's Guide Scott Fritzinger 2000-07-26 Revision 1 \tableofcontents{} 1 Reverse Engineering the Camera Protocol The most difficult part for most developers is obtaining the transfer protocol. If the OEM's are lucky enough, they will simply provide us with the protocol specifications for their cameras and the drivers will be written at no cost to them. Most OEM's refuse to do so though, citing trade secrets or company policy; this is truly unfortunate in that they have effectively told their own customers who use operating systems other than Windows and the Mac that they don't want their future business and that they aren't valued customer to begin with. When OEM's do not cooperate, the developer is left to determine the protocol him/herself through reverse engineering. 1.1 Sniffing the Protocol What follows are the most common setups for sniffing camera protocol traffic. In all setups, a host computer runs the native camera drivers.; typically, the Windows serial port drivers are used for reverse engineering. The drivers are run through a series of functions that include getting a picture index, downloading thumbnails, download full images, deleting images, camera configuration options, in addition to any other features a camera might have. During these operations, one or more of the following methods are used to capture the communication between the host computer and the camera. 1.1.1 Serial Repeater A serial repeater consists of the host computer, a computer used as a repeater, and the camera. The setup is shown in figure . The repeater runs special software which reads data from one serial port, logs the communication, and then outputs the data to the other serial port. Data that is from the host computer to the camera and from the camera to the host computer is logged sequentially in a single log file. Information logged includes hexadecimal data values, direction of the communication, as well as time stamps for synchronization. An example sniffer to use for this configuration is ``sersniff''. 1.1.2 ``Y'' Serial Cable To avoid using two computers, a Y serial cable can be used. The ``trunk'' end of the serial cable attaches to the camera's serial transfer cable, while the two ``branches'' plug in to two serial ports on the host computer. Figure shows this setup. The camera drivers use one of the serial ports on the host computer, while the other port is opened with a hexadecimal monitor application that dumps all communications on the port to a file. The downside to this approach is the developer would have to determine which sets of data was generated by the camera or the host computer. Also, a Y cable would have to be either built or purchased from an electronics supply store. 1.1.3 Virtual Device Driver Hooks The Windows platform allows virtual device drivers to ``hook'' into other drivers to provide additional functionality or feature enhancements. A combination GUI and device driver named PortMon by Systems Internals is a communications debugging utility that hooks into the existing Windows serial device driver (vcomm.vxd) and logs communications. Figure shows this equipment arrangement. This setup allows the developer to not use any extra hardware by simply relying on software. This is perhaps the easiest method for capturing camera data. 1.2 Making Sense Out of the Protocol What follows are some pointers on decoding camera protocols. It uses a protocol that isn't really any camera protocol in particular, but should demonstrate some commonalities between most camera protocols. 1. Cameras like to ping. This is the in the form of an "ACK"" command that is different for different cameras. Basically, it is usually a short packet (probably 1 byte) that is sent both ways in order for the camera to know the computer is there or vice versa. It is also sometimes used to wake up a camera that has gone into power-save mode. It usually starts out the communications, as well as confirms each packet in any sort of "mass" transfer. The opposite, a "NAK", is sent to basically say the last packet was not received, or an error has occured. Again, this is usually just a single byte as well. Example: Computer: 01 Camera : 01 The Camera sent an ACK ("01") and the Computer responded with an ACK as well. 2. Transfers are usually in "reverse network order", meaning least significant bytes come before most significant bytes. For example, ``00 08'' should actually be reassembled as ``08 00''. 3. Most protocols use starting and stopping bytes. Example: Computer: 03 50 00 0f e0 04 Camera : 03 03 00 3f 03 04 Computer: 01 For this example, notice the packets begin with "03" and end with "04" (don't pay attention to what is between them). Also notice the Computer sent an "ACK" to confirm it got the packet. 4. Packets usually have a "command" byte, which tells either the computer or the camera what to do. Let's say you told the software to retrieve the number of pictures, which at the time happened to be "8", and you got the following: Computer: 03 01 00 00 00 04 Camera : 03 01 00 00 08 04 Computer: 01 In this example, you notice the "03" and "04" specifying the start and stop of the packet. Also, you notice the second byte in the Computer packet is "01". The camera responds with the above packet, and low and behold, you see the number 8 in the same packet. It would appear, initially, that the second byte is used as a command byte, and that "01" specifies the camera to return the number of pictures. This may very well be right, but don't jump into it yet. Make sure you look at a bunch of similar situations to confirm this. (Again, notice the "ACK" sent by the computer). 5. Most protocols have a "data size" byte(s) in data packets. Let's say that you told the camera to retrieve thumbnail 8 and you get the following: Computer: 03 02 00 00 08 04 Camera : 03 02 00 0F (15 bytes) 04 Computer: 01 OK, here's a brief breakdown of this transaction: -Looks like the command to retrieve a thumbnail is "02" (2nd byte in the computer packet), and that the byte that is "08" specifies which thumbnail to return. -The camera responds with a "02" in the command field, specifying it is returning a thumbnail, and then sends "0F", and 15 bytes of data. -It looks like the byte "0F" specifies how many bytes are after it in the same packet. This is a data size byte. (Note: this is a simplistic example. No thumbnail will only be 15 bytes :) this leads up to the next thing to consider) 6. Most protocols have an "order" or "counter" byte. This is used so that, in large data transfers where the picture may be split up into several different packets, the computer knows how to reassemble all the data. The entire thumbnail more than likely will not be contained in a single packet for logistical reasons, so they break up the data into many different packets and give each packet a unique number (or ``order'' byte). Let's say you told your camera to return thumbnail 8 (which is, as mentioned, pretty big), and you get the following: Computer: 02 03 00 00 08 03 Camera : 02 03 00 0F (15 bytes) 03 Computer: 01 Camera : 02 03 01 0F (15 bytes) 03 Computer: 01 Camera : 02 03 02 0F (15 bytes) 03 Computer: 01 ... 5 more packets and ACKs ... Camera : 02 03 08 09 (9 bytes) 03 Computer: 01 You notice that the 3rd byte of each of the camera packets increments with each packet sent from the camera. This looks like it is an order (counter) byte. the computer can then reassemble the data from all the packets in order to reproduce the image. 7. Most protocols have some sort of error detection byte(s) at the end of the packet. This is usually a simple checksum (summation of bytes), or a CRC (a somewhat complex algorithm that reduces the probability of mis-diagnosing a packet with errors by magnitudes). These bytes can take into account only the data, or maybe the entire packet excluding those error detection bytes. If this isn't a known scheme, this winds up being the hardest part of reimplementing the protocol. Lets take the above example again, this time we'll add a couple bytes on the end for error detection: Computer: 02 03 00 00 08 03 Camera : 02 03 00 0F (15 bytes) 0f 02 03 Computer: 01 Camera : 02 03 01 0F (15 bytes) 0e 00 03 Computer: 02 Camera : 02 03 01 0F (15 bytes) fa d0 03 Computer: 01 Camera : 02 03 02 0F (15 bytes) fa d0 03 Computer: 01 ... 5 more packets and ACKs Camera : 02 03 08 09 (9 bytes) d7 38 03 Computer: 01 Notice how the error detection bytes are usually different for each packet. These may be checksums, or CRC's, or something else. Only way to find out really is to try each one, on different combinations of packet parts (data, order byte, command byte, etc...) and see if you get the same thing. Try this on the shorter packets to make life easier. Look at one more thing that sticks out in this transaction: for packet with order byte ``01'', the Computer responded with a "02''. and the Camera then resent the same packet it just did. This shows that the NAK byte is "02", and this could happen because maybe the error detection bytes didn't match with the data, or maybe something else happened. either way, the camera resent the last packet, and now you know how the camera can recover from transfer errors. If you didn't get the packet you were expecting, send the camera a NAK and it will resend the same packet again. 2 Understanding the gPhoto2 Design The gPhoto2 design is the same three-tiered structure that has worked extremely well in the past with other software packages. Here is a listing of the 3 tiers: * the camera library * the I/O library * the front-end * the ``core'' 2.1 Role of the Camera Library The camera library is in charge of talking directly with the camera. The library uses the gPhoto2 Camera API in order to provide a common access-method for the library itself. Being dynamically linked, the libraries are loaded at run-time depending on the camera model the end-user would like to access. In order to provide flexilibity with variations in camera design, there are camera ``abilities'' which list, well, the abilities of each camera model. Some camera may support serial port connections only, while others may be able to use USB and a serial port. We've run into cameras that don't support thumbnailing on the camera so there is an ``abilities'' field to specify whether or not the camera supports thumbnailing. The ``abilities'' also list other things such as supported serial transfer speeds, file deletion, and other functionality. The camera libraries only make functions calls to the I/O library and to the gPhoto2 core. There is more information on the specifics of the camera library in section 3 of this document. 2.2 Role of the I/O Library The gPhoto2 I/O library is a platform-independent communications library that support serial, parallel, USB, firewire, and network connections. It is a work-in-progress with a constantly expanding list of supported platforms. This library uses the gPhoto2 I/O library API for accessing communications devices. It enumerates the devices available on a system, and provides read/write access. The camera libraries all use the I/O library for communications with the cameras. By doing having all communications go through a single library, the camera libraries become as portable as the I/O library. Porting gPhoto2 to other platforms become extremely easy. There is more information on the specifics of the I/O library in section 3 of this document. 2.3 Role of the Front-end The front-end is the application that the user interacts with. It is usually a command-line program, or a graphical point-and-click interface. The front-end talks only with the gPhoto2 core in order to retrieve pictures and perform other functions with the camera. 2.4 Role of the gPhoto2 Core The gPhoto2 ``core'' is the heart of gPhoto2. It provides services to both the camera libraries and the front-ends. Most of the services deal with error-checking and enumeration of devices (cameras, I/O devices, etc...). The core performs validity checking on data passed to/from the front-end or the camera library. You could consider the core a translator/interpreter/spell-checker/army-general in the ``big picture'' of gPhoto2. It does the grunt-work and performs the coordination of the other parts. 3 Implementing the Library gPhoto2 camera libraries use the gPhoto2 Camera API (CAPI) for implementation. Here is a listing of the CAPI functions: camera_id camera_abilities camera_init camera_exit camera_folder_list camera_file_list camera_file_get camera_file_get_preview camera_file_put camera_file_delete camera_config_get camera_config_set camera_capture camera_summary camera_manual camera_about Section 3.1 details the purpose of each of these functions, while Section 3.2 discusses how to use the I/O library. 3.1 Camera API The CAPI provides the full set of functions for doing various tasks with the camera. All CAPI functions return either GP_OK for succesful execution , or GP_ERROR for a failure of execution What follows is a listing of the functions, including prototypes and data exchange: 3.1.1 camera_id Purpose: Retrieve the unique id for the camera library. Prototype: int camera_id (CameraText *id); Arguments: CameraText *id : unique string to represent the camera library In order to guarantee that only once instance of the camera library is loaded for each instance of the core, the camera library must copy a unique string into the ``id''. Please consult the gPhoto developers to determine which string you should use. Example: int camera_id(CameraText *id) { strcpy(id->text, ``my-unique-string''); return (GP_OK); } 3.1.2 camera_abilities Purpose: Retrieve the list of supported cameras and the abilities for each camera Prototype: int camera_abilities (CameraAbilitiesList *list); Arguments: d CameraAbilities *abilities : the list of abilities for the supported cameras int *count : the number of 3.1.3 camera_init Purpose: Initialize the camera Prototype: int camera_init (Camera *camera, CameraInit *init); Arguments: d 3.1.4 camera_exit Purpose: Close the camera Prototype: int camera_exit (Camera *camera); Arguments: d 3.1.5 camera_file_list Purpose: List the files in a particular folder on the camera Prototype: int camera_file_list(Camera *camera, CameraList *list, char *folder); Arguments: d 3.1.6 camera_folder_list Purpose: List the subfolders in a particular folder on the camera Prototype: int camera_folder_list(Camera *camera, CameraList *list, char *folder); Arguments: d 3.1.7 camera_file_get Purpose: Retrieve a file from the camera Prototype: int camera_file_get (Camera *camera, CameraFile *file, char *folder, char *filename); Arguments: d 3.1.8 camera_file_get_preview Purpose: Retrieve a file's preview from the camera Prototype: int camera_file_get_preview (Camera *camera, CameraFile *file, char *folder, char *filename); Arguments: d 3.1.9 camera_file_put Purpose: Place (upload) a file to the camera Prototype: int camera_file_put (Camera *camera, CameraFile *file, char *folder); Arguments: d 3.1.10 camera_file_delete Purpose: Delete a file from the camera Prototype: int camera_file_delete (Camera *camera, char *folder, char *filename); Arguments: d 3.1.11 camera_config_get Purpose: Retrieve the configuration window. Prototype: int camera_config_get (Camera *camera, CameraWidget *window); Arguments: d 3.1.12 camera_config_set Purpose: Set camera configuration Prototype: int camera_config_set (Camera *camera, CameraSetting *setting, int count); Arguments: d 3.1.13 camera_capture Purpose: Retrieve live data from the camera Prototype: int camera_capture (Camera *camera, CameraFile *file, CameraCaptureInfo *info); Arguments: d 3.1.14 camera_summary Purpose: Retrieve the camera summary information Prototype: int camera_summary (Camera *camera, CameraText *summary); Arguments: d 3.1.15 camera_manual Purpose: Retrieve the camera user's guide (manual) Prototype: int camera_manual (Camera *camera, CameraText *manual); Arguments: d 3.1.16 camera_about Purpose: Retrieve information about the camera library Prototype: int camera_about (Camera *camera, CameraText *about); Arguments: d 3.2 The gPhoto2 I/O Library libgphoto2-2.5.9/doc/libgphoto2-api.html.tar.gz0000644000175000001440001407515012623156300016207 00000000000000‹½ÜLVì]ûoÛ8¶îÏý+8ž‹™¶ˆmQo5 ÏNi4éÊg¢;ÊþîN œw œPïý˜f)Þï€ê®MÂu‡( k% üëa?š¤œ/ß½ÿ'c€kôxO¥÷sC þóÞÏ?¿ßÿ×rì¯å¢íÖ*ëT—+äeô˜ké2Ï+ªkeòQ Ö`eý™EÔþ4ïµ™ V¢T6ø)£¦DiƒZˆÉ²¨äfõ=n” ÍF9ŒJ?]¸JysÏ-ó²„+:¥Eó ¼P.Í:G¬;aeöU쮤ÚÞ(Ô·7 õåF‹sLi!ÀEAóÅ£ãˆÒ<”TòÀU3sÄVX £5 „Ö[ÆäÀ˜0f{ŤA2 1ø)!û ã¬7üi@öåàX8–*Jþ*xl[ON3<Ž£„‡Ä#¬‚Æ qÕ´3-úªˆ<"O Q¤$Q€£kÛáèšB,ÓRW º @ê[dÊÈÞÿ §A Ô÷À=6øãœ â4Êòg¤žA(ÔÍVpúr7<}KÀû†§OYvŽ˜Ü” ª’ ¹¦ƒšºÄ?[‚D?}9úUé8ÿýòâáú†ÏH±Ï!ÐöxN·ÁhÀ8Af "ÉêOug3Ä“?îÏ«ï‡n‡èv}:Zž¤¡Ò[Ls¤ZAÀÔÝÍhïN//k´z´þ”à<õ-P~é$I¤A bªîm}÷ËÍ—û´±4´_Ddž æÚf¸W7ןfan‡kè/WÍ ¸î—ãûË›ëã+×Ú×6—áÒ|œZ¤ñ ˆÂзXÃÜã½ï¥ ï¨\ÃÆf°_¯ÏÎ/.¯ÏÏX§ØIÊ#qIF²Pìc˜[ô:w³Cà  Vn¶£b´eX[Ðνìx´•—íˆVÀcÆ»›;% Nd›ÑVN¶«‹ 8ÍØÂiW7dz€ á^å^žŸŸƒ(ÉhΔÀ8£Z–†, 6c ±Ý|=¹ª3¨ƒ6~ ÈZ3–ií_,›¢dÏ©ZfÕ¦€‹L•üß0†©’ÿ›ÛÂ:-¹X³š*ø$-Ÿsx³ty5?Ä0èå¤äˤ®åfhn¡ ¿T^a˜Ú澦€:ÌUêh‚ΤëÕœ»MȲ${ÐY—úPNÏí}`l²÷!ŽÂâ¡ömûS@'¦Ù>õ­AРıÅKÉžÀ¥SÀ Ó  0 †¬²¬šš1-E)èx¾B¥¸æج&õûŸ~4¼ýbÐR“í$~97@IHË% $Ó~ãZÐó‰§mmIÀG¦£Ò lº…ye¸‡Ó0F­Á˜ÆtW¶B¸˜G‹¶ \bz !ÙÒCò9Õ<[Úë…ã–ñÔ°–µ>ÎieF4ÄÌÒ‰­îÌf‰.Ïö@1·ÿœzCY×µãk}ü³˜8ð9ª}ÌÙdÖîh,fjZgëöÛhý §2, a.Ø#>5Ñ“–F@j–)!"+3ö[X[%-ˆI“h/À@ìYT`é\Õð e©uc:ío—ã·!N«yÕ¼+Þç¨\¶ž°´Ö³l5)BÊdÛd(H–cn(™`0Ä9îõä­O@ƒ–£Ÿþ“âjK ú³dèo…(ê¯Äg ˆÏR!>[0j²µ—a èɆ-ŸEP++h«4Qƒq\>’`ò@†4LQœ–b‘IžrÌcëí ¢¤(ŸÞÏ!±p.‡EÀ+¶ñ ÏJlAø·Ma†³SèoîÏ”†LïvÊ4ÁöRÆÞ8I–fpØ=ß·u)Ø–ŠŸ â¹m¿‚Ÿ ‚°í´s‚ӛϟϯïÁçs¹Û Â¯í¾†Ý ‚¬íµ´ûÒ™ÙrAy!ËEm­ÑxGeZÌDp¾¼5:‚ì´ É×ÙÓË Ë|ª¡\ÙSðËADfç5"³#ˆÌŽ©Ò¡‚˜åX²ë¤øtóeJpžqŽü8‰Éô’­‹Ú3”“XûûEÀýŠó‚=A íY—C(ˆ”Ž£„°Zð{9B̳^ðÅLôžr±Ôqwø[ÒÁ'Ç&Ù½‚ëx;c«FÆœ\Ϻ‚ð骄OW>]¨$ñ5~º›øÌPøìÇÒG{¾c_Wn]]Í鿦²öáÝ#R€]Cde3M åìÛl×Ty“âçwh4NpHI;€«Fl—XN¨âêHC¤€\5"¸e zG˜äqÀ9­VY— m9.pÕ¸€ºur“³U[ÍŽs,RÀ®œUkÔ¯Ù¨¼ä™H1¸žºwŸárOÀŠa2rqÒ„§)üŒ¾a°áÃ@^ÈާF8Ÿé&Ù ÊsOÀ8žãÜQ¿ßð©à¢ ¤\0÷Œã©1ÎM϶v4” 枀q<5Æ)©†‘Îmü¼Òñ ¤%RÀ8žã|Éž8-²^oÒ¤\0÷ŒãÙê6y2%ø4›¤+fÉ@:r Œã©1Îï_p‘%“6)Ç8ž€q<5ÆùCòD¤€q<5ƹMPŠòÓ,âÁ$_öròT$Í‘·‚œçвã¥Z‘_Ó˜¬ir¶\º%H(©Æ8ü Î/ª}€« Ïä@ꊌ“Eä åx-P¤!©Æ8gtp|6‚Ôå@šjŒsœ“¸  ãD¤%©Æ8¿ c‚où²ÈFçr mHÅ1NP>=æÛ¯Ä$ÆÅÈ 9ޤ³“wAé aHkÙr ]H5ÆùÇíù§[ú[³Mêr3Pó =e|, ™.«‰Ã9H¹Œµ—9›ªÓåf0h"/©Æ8œú§”ºqQ§ÁËÉ %5)`¨«ƒ¼›ø>f«›ä Ø§ÕÆsª«'8åð{á•’ŸbJÝüô×$#ûýòäóm(Ø©uÅg:TiLi]oœÈ %ûסn*:Q•S•M Ùâ“– ì£ïðPÿ4K²œ¦Áìý3Ë 9ì{‡º½S8¢9­hÒÕå2"ÁÎw¨«±ÏÝ$GÉæ/{|ŒÉt ¤\²!Øðu5öùt{w™FÙ†˜éê–HûèŠÏtîn¨2qø…oR,Ö@JM¨BÁ¶vh¨±ÏÍùéÅÆ§%¤ 6³C*‡ …•0Ë =Éu'P°ƒúN“W74-ŠS”¬‚” A‚ëÐØm†íŒb$ñß8\)çÝ‚=ëÐ0•Ðg)×®MOS’K `«:4v[E€ÃjÑÃüù)Ì;Ô¡¡øLg8ac †~å{»[vÊE°/jŒs<Æ9{×ã ÀHIM ÇPcœ>ØIéOk09HIï0ޱÛxç$FESwËy·`ó:4UW€¶Zrtà´aSã ¤\.,x—\}—B»FI‡Ý>é`ïh‹„ö¶|ÅnæFHÐ)Ï{YzWÍCuÎRÉò¨Ùq%·ÛTg ,µAû–6á±>æëÁ>ôýò]y½áG6öä•„H_˜Ð­øÍ•  ÙÄâ"èùY@õq,ì@ …Ëõá/å9Aóë gÓÌϯ*;Î*Ê2²t´Õâ!?4=Îù¡ø÷²É8dëFRŒCöªÜ,ìÌ Ç?ú@êS°Ê–N}¢má_„‡“úÅaœ?„‘£¾éVaWó5ì8F8.²\Ç@f¥ãù™`³S”ÚÞeùPœú¬¥£˜æ-•Zê-žùU–©Í`áøÄú8v†ââ±]e…x4Xiµ:¹¯ª5N€2»Òéó(P-Vã+Šš™F}‚»ÕÑÛ7ß?oþ“Ï­}¨Øýè×翚–a8+翚¦£}?ÿõûù¯ÿ…翲4\Ä8 ‹ï§½~?íõûi¯ßO{ýï;íuóù¬/qúë¿ãi¯¯|ªíRF·ÞzÍ7 b bË=N’V½YW~x¤œ¿Ô¯(™¿©Éh.ÉhHvíÜŸPµ‘¥ªäו|‰JA])¨Ö•B‰J¸®„%*Eu¥H¢Ò ®4¨4¬+ %*Åu¥X¢ÒÌЉJ£ºÒH¢RZWJ%*eu¥L¢Ò¸®4–¨”וr‰JE]©¨DêJD¢Ò¤®4Q £U#Ou#OßÑþw>D{™LÏÏ^<Òzqú”âò“,øÖ9úç|Ë ÂŽ+`oc­AÒœ­:ó‚ &){qº-w—±|¾¨ÏÄ.KöËRËd³YN~¯ü±R Œ( †l`ÊDš³µÎ.E×¥é?-Ì'"?›·AÓôd‰ãáá”çÅKzü!Ýt|¤»0ŠBaäÙ†œÀÕ3tÌvŽV+2oKá·Ø~«{ßÑ6Í/f-A¸~èØ†E³†fXvàÚô?†-W‹æ Ö[XE“¶ÏF€èÓím–“»²lñõ‚Û´±ƒ+òp€ŒÈ2]ÍÐ [sìÀôi¾°^uâ®ôë®ôW»ÒGtXç»)TGºmžá™NèCŸvq€<ìèžëš«½Bý˜Rª¼Ã4;K*¶çùºãc=r"ÍðèÐζ‘Z®º¦£kÚ,k+(4¨¬*4@lÈJ¦ßøY#»éÕ´]Ë‚X×/BA¤i¾GíßsÏ¡EíõJQ±€šÏú®ãšTãë~=ß5M×Ò‘cûšÎ™ |¶ºùÃ8çZ”@è6†®Qïdy®heSA:Äü¼¾§GÑM]M÷Ï¡öú¶jV`›nh^~ôBnÖV®Z›vÚŠý*0É+¼ž§ÓxJ;M3Mõfà 2\Ÿzµ#D#\U~EIáüU»Y.¤f¢cû~Hƒ™ã{ZH»É|Û‹4›í-7¤6àFé[!•Íóƒ1žÙn@£©f!j"ž‰h|5ϳ¨iNh†:L+õz ×½†W{ çy–·2¹Û<~Dìx9®ûR·£V®y³qO·Ã B;Ð12Øî²õª+ªÃϱ"K;” iä4Í@<ÍÖ!Dz£Ð4}Ÿ¯¸Ùæl-ÕÕj‹VÕVæ8íÇ ·ãIg5zO÷ ÓÒ©»ZFhz!e„ÿgïZb$»Îr‚„FY€³ ˜$@¤J8ï‡b'!LF ±›r¬ÎyÎîG©ªÛcoˆˆ… DB!%°a…Ä*BÙ /`ˆ ‘¬ñý·êVOW×­{ûvÁJl·Ý®:ç?ÿóûÎÓjSVUYw^.|¹Áô ]ÒÏuºš€¦€'ª ¼Â×T)ÀA¢ìˆK=ÒÏ+wøÜ*}¶)ÉŠ Àd„Žt?l¿p骔¥Ê¢R¼Ôçú냻íŽmæÎF#ƒ-^¡B–B;À9ÅéÞÀ¡±MshÍF߯‰FÄwõ\V}9-LÕÉ¡ê‡ H{ã›$h^Ð1iñ¹pú µ¸5U¼¡ Ï´õš£6EIà%iÒůíìözCG.Ï*ñ”u⹞‹’r5ªòR¸ˆ¾wè :3Ú ~M¢U–ÆY­CÕ"²¨¼çE§ìŠEæ°W@Ó$ÑMÀ&z&YÓ9É%¯6x†²ƒ (”ÖE[y‰–½ugÛð&‡h••\äàx@ÄZ&œƒ¶˜ˆWÙö #*4·:äm0ÈEˆ ]èHˆï“÷ý6yßßNÞôHÑ ¬µ»ôdÁ¯A%IÒžB¦+s"Kí┞­ô¶¥_­]©ô ‡£Ê³d!•…IHqÌXX!ŠToVñ½Ó0GáÕyH/—SÚ¤22ÊC-*r˜|©>fSƒ5Ž©š‘Ìø ´d/ûùôªl ¼{&GºèDJ…,š9XyAå÷ûØØ@œ´:9ÙÖɵH\gŠkIÜÈúèXQ%T— úüéd¾™{yÍ>Îmåzò±JÚ³.j²¶T—äÞ“³ñ`ÈT$%«ÁàcxQ€‚’çÊ| 7T©ç­ÙæÛf›‡Åìôµk¬5˜P`"–½Á§ªUªø; ýDOMö®54Rœ>¸j@)¡Q0„ˬ2mLT]9gŽCY\- .™hïΖ/ß-J:ma•̬°X´` ÔJ ÙR´µô •ê²±mdŒϧålã)És Tñ’»l… ë‚ìQ}–»:§¯ok: J»m‰áÅx‡<´â †öÊÑÀC•åE³ªÁƒÛ„]§1àsç¸G÷ 0/dY=ŸÖÝ¿,ŽfÍãa˱åÃTU8 &Wy‡ cªˆ~'L°®–ÞòAb^E‹F1î)Û·:©‚³Åò˜|)9‹ÑZ”^/$Xœc²Hð: î9Ù)#“uj¿ò2+´sºÀ 83ðTRXö…ütܺ“0Úg¥e–1‹uDÆq ù(mÝËÃÓÈFsî1:‹ Á¡Éœ¤V…)ºr%šŸ,Ozg¨:—÷œ†*aåÁ)ZDoΓPŽBȪWÎe|ï.èœ Ý ž£‰2ÆÊ¥\ð:¦ZïX´¥h±]ŠeY¯”ÌG _<(„T5Ðj@IÁÉ”­¡ƒ¤ Ó«º¶{1ª{N*ˆŸ”Ô&È š#P­ÂˆÌ:º¿ºƒ"gzµ¦ÒU "û÷Bïv˜rÔ0kRÕ DÐE­7(Jˆ!}`ÊscÃõ.UI[s@qˆöEº1~›|:L5j˜ L†­Ë29Q‘lYÍPÎdqcÃô0_àÈn^ê"™0B©4Ø·-rè0õ¸aêÂKrÚHÐRL9 ²ié2ÒzsNË#rwpÚ‹ˆx¤Ù`îÀÞr.H2µ’¡¦5LDG µÊP5ó€1sjk2nl˜†ör)A{–¤JÄ&LÅF”î}ÐC‡iG 3à Ñ&0§˜Å8+Ï¡¢|sÖÄȤKµjÚ*Æ%À“ð™C·‘¦°ÊÐaºqÖ亢2I9›²âAu,* 'iz©`²ÊMˆH;@X!råR€v|£Ú›Ø4±l«ár».ÐÔ¡¡f{ã6^j3§22JÒÆŽä$&·VráKò—ÀÒ–u–×[¹ ²Ck Þ' ˆë@˜b´RJ€ªûëðz'á0Bßú¼3×H¢.ùÂå¹âVG Üvᶯƒ9ݰ0pûâfo‚ >ÜmÂ5òeî–,T/ZWìè³Ư{S‡”%h™B®•å”bÔ‘IV…û›ßÔa‘\)Á„MºZì(RHçyÉòq,æù £eî“\BFÍ`ܨÇÇR 0éÅ<Ò4]¼<žçx£•³°+2u¿¸„DÀÁD"ßÁ¸òœŽÚä]-‹€R‚eÀŽd*ò¹Õ\YÔÉÞ} ËÓpz6~·÷,ˆœ ª´VE78”¢“  t%»yÇ’€Vxšö5‰âY– ÞSãìq8s%ªLû¡DòUU ‹> !c¤};£w í¶©kÒhq¨BÐÒ}¢­¤Ùðà£è·éÉüz[Cv£þµ• ɺÕÒ'c$SÁ›ž[žõ­.uÖxWÊÚ샪ÈU)Êà"óÒ Á¬¾RyÚ–ÑÓí2J§ LH¿€µGZÆ9íYK Œ˜ *'È1þÁ¹Ý€8úÊ–žhU£ÿHÀ…*"„e’fP\¥w·¤±`Ž|;r’ºªÈébvÿ~Y\kG3˜°!’¬W)'ÚÛÈ¢U•ZÇúgï Ú•q,|1”j$ÊA[ªu•‘7G½¾ùŒã¢Eé’Ð7Òþ­X l¢cÐÊ".ËþD%Š´ã™ƒÈ±Çtú‰|kßþD[xÊYð´äO&%‰TŠÐ½§®0™P¡€@6@‘¥c`ÍŒ›„Ôk´¹\tâéÕæù-w<¢K™êQÉSÁ”10yÝâ³6wœm玳e¿œ:%ä[™ “FƒðÕU€pû؇¿ÑëAÓá˜uY#PÜŠò°¥H€5郥•b¤%zy6õ=_œdt0¢÷¬ÍtžºÓÜ ÄÉYЪIu`ï§'édÔ¢4ùSïzâIÊïº÷ñ»ŸÆÏwâï÷|Ç·áŸ_ù¾¯¼ˆŸ»w÷'^xõ_ÿÚ/|çç?ò޼ùÇþÔ÷|ï/þÉßû£÷þé½ßü7êo›ð¯>þåùÔëOýÓ“ÿüÿó/ýA^Lþîs_X~øÉ_~öé7¿ù͇?úÕg~é×'_ÿ÷ÿ|ÿÏ/¾ük/þþ¿¾ñ¥{ò‹G¯ÿÀ?~ñõ'¿ö—ÿ7oüÃ3ïûÙ¿~ïwýÙg¿ÿ«SÿÝýÃßýŸÿð›¿ú™ÿþö§þöÝÿõoüÖ‘¼÷~ò“wÿ⣟ýü-rüø½¾|m ÐÿR˜mü¯5¿ÿ·ÿŸÛûQ €¢ØþûñÇ#þ±† (‹BùÄT5A9˜3Òž-(†km+ËžÆ g¬òTu•Íj«òÜ1 îi{¨o§ªûÿ;þ/.f€LÜ_„ùƒ…ùó‰šøçšsŵEü[cämü¿%÷¿Ã Í´áÚÚwÖ·œ·ÿù¡'ž¢ 'ˮ㣠öÕÜòñI.¢7}ÏþƒJw&ÍÍÐOßi¤‡>ç«OLÎÝõOš›¹'/нÓËöÆÛfv4ÌŽ—›o­>µž¤kØOyùô©øT›©rrêds—x·è²Côg7Á.Jþƒ2i$ xû4àíÓ€·O^q\7öàíÃVÿW[õô‘o]­̹-Z®Ð6ó{íKhó³øþpzº˜Q ¹ðfqøÐ¶j/´Þ‚íÇ´V¿ }¨í^¸jã†ûßïBÙŒöc'‡‡!ž¬¦¥PÔÂýE8jøêN‰Ú··¶šëx>Œ1ÝEǨ°Ïx×Ú› R6Žªåw|yõ]|dM/Ž«i³9C±’ž&~×k½½Í5 Ä}Ÿ6ý»ûˆÍåyÄÉìüDçùZð®!¦¦^O¥W™ûí;áÛ- ½ïv< ôÉ ‰“ƒºY”¾ Üðh¿@“õ³L]qG+ÓR I<}Õ#ТÜÿ_ö®ªíûÏíý RQ*’ŠBœ3Ï3ˆBz¡¸7®æé&3Æ#JÝn¥$=î%TSRHÞå‘(z ! R“Wˆ’üö”ºª÷öûýÿññ˜™söZ{­µ×Zûìý]›kGaŽ!   ò×"~®xl?l|ÉPÐ'IÀPð8â{Cé~t¢Þ=H»CaïÀµcX¡Ø Àç9QØV §îd¸‡Áh²ì¾¨'’v¿@ ÅûðÙÛrϘëI|»)Ø3Ðü}".pN Åíã(AÎ œÈlÁøBÛv^[c{¯±b³¸›{=˜zïÜô#¯,œ}äš­±‚œ³;ãìC°b´*…„…É0†d:‚îØÂ"8¢O¡áðpOïïZî2©5*lvÕ¡Ù¹¬ŒsÏËîéC¿àDah¡=@'ð2 =9¶€û¿q`ô1Q*Ëɉ…VΦ j««P?Ómc3E0•xÇ{o•ýHC}Ùü¬)d•A¤Bd`ZJ•é`ôGG~@H•áÈ“ADP8‘D" •ˆŒ¡ÔŸ´Pýõå*vø“¤ü3 ® cþVÿfÇæ NdJw•ç |zr–‚)8Zo¢Ã(l†pLÒ±'­ÿVÝ9Êðã7(ÏA;L@ƒ¡Ç°h$,žNvaq4&‚fÂq÷uZŸó›ý§ƒ}|â ´³¹µ/ÌÀ À£‡…hd,™N§Ñp8,£Ò "LÄâat„¥r„ õ}”ã€Î5ì„ÒÍ@å5Ý@X"êWIÀ˜8&Eú2© Á§Ò*™„à‡R7BÐú>ºaS„4Ö ¢ˆuà‹I'™4&‰%‘± <ŽñT@‘0¤Ñèë´¾b(ÝÈ„ 6×`TÃÄS&‡Ö5Æbñx“D€‰†#2 Ò`#­ï£†« S(Í TZƒÑ ‡cЉ`H2™x,ƒŽGƒ á)•IñPjFZßG3èÂ?º&,”v*±AiÏÄ‘a6ÒS’G&bÉä&x G Â0OúÆ!žˆü€iÿÏà¿PD3ì+ã†!lüaa÷£þË¿‹ÿú‰­Ò¢ý@ðOQ|†}ãÝDŒ}âl¾ˆ~êÃâßVçÁ)Á¤cÉÆ}<(>»£¿[ ^›Û}$˜þÒ° "67 dk4``Û×ùüyðNP3^ & JXìàíÿÿÏfp¸vƒ‡ÿ~Íÿã‰$ìÇø_˜D‚‰?üÿwÇÿvÀ—á¿ï¯Ò—S¬é––TŠƒý7¯´”NÙìdãÌYβg¡ó`'7î’`’¥…Þ'Ca³)nèÌ´Ç[ɰY\'‡þwb!Àoa!़gÿÜ}™6§ßMWD”<Æ ÍJ±·ÿ2ܽ ?P!AéáI$!è¾'z ÃJX<^ ‡Ç~_H(‚àŒÀÀ! Á ©_lßÀ€}ýpC Æ ò,QˆMŒÈ?‰0„±HÀ LOî%ËqD–ÓæÆCÝ! %T¾”‡þÆFoð–‘?Ö+YÀ ‘ }fÿ})3ay鹡?fHÀNQf¼Prùa±`ކtúMuþ]<*24@XaÂLú×!Ï8"Q K€•à”HÈÀƃêÑiÐ%‰ ŒüµÙŒü#Å)à Q&`HC.ÿ$LŸB)jâ$ˆ$Œ…‡§OÂÁ›@ˆÐ{›Êy—pÏûN^øËù?Pô§ù?‚H?êþ+_ýÔÿM?žcFß±³h­àÏ(ªž¦ ýM=€Áˆ±ƒêº»tn$ûí±œ­ÿ9_ßù«k$vÕŸÑ1¨'7|„Nð±ßÆ´ø ì³ 'qÍqí¤NœSþ\B¥¹É‡r₞ضUUÄëŒàpßœÔ+OÛF7Š÷¾Ý2uB…é]/NZÛ“?_ÝáØŠúú^† +¦lœnA›c5b¿w˜º[·QIJbí¯¿ú…‡/prrª¥iˆœŸ={v{{û‚:ã±n«VM¸[P{¾óH«¹u>ÎØ9J®Š~Qoˆ£Ý&!%鬩&ß§E³ÉŒ‚M9­duLèéÓ£,=;ã×oñâ6®œ¶©èžã¬CùU·/âs-’Íý’’ö7o¨Ïîò|ýüt-,¤Lz'sž>§þ1£õ©j{MCCtbL‡íŸ”´´´bîDiuß”õå©3³ý¤vîÞ=–J£%¿,+3Oéz×qéèiÝÎä i‘–鿲hmEsX,–ž‘Ñd7µsGŒù¨(rƒ¾ŠZTTTN^Þõ?›*««½qññŽÕGT,}BBf§¤¤lnz¼ÌÁsÓ&ÅÉS¦Äx¼f»º»Ï…a1{{û1cÆ`0J–i³°ÇÎg_ZR|m‘¦¦¦ï5ª¯Ž¬]Y’X[ýÃá˜צarrrÀ Kò×ÄѲ'ÌRuò}pøVucKKV݃ÄdÏèÂB“zñ9D¢DdddÙŒ†‡—Gƒv¦N*£¢2‘_™ybÙžIS§z©¹Ô/š¸r“Ç:yùÑK—.UÈÖ ®÷;IŒ›ðz÷ù5ff¾YY:YYY•/îÇ*pWWß­’þvrG[CöI½ýOök²#GŽ\n` ­£ãuW3¯éIöÚ_~ùÝËkDVvöɸ¸©šo‡¿º} wáâÅç1ʘ¬ëׯææîã“45g³Ò;‰5µ™±VùÒ- +3†Ñ™ÌÇ÷²G°9Šˆ•••ƒ¨¸¸8²¹3yòä5&&^UUô¨­[¶¨jiiUÖÖú.vu¥ `ŠfgË”aÆ]`Uh6ásgbêË’w:4õ¼Åe‰+VØvÜqšÆÍQ±¸äÕØ¸¹¤´ôêõë£fíÖœµ)+¹?##ã'11±$võ8ÓÛ{ ÓgÎ̼vm¤¨¨hÙ»s¦ÑZ²þWŠŠ$,Ÿ—´¥5¢”ÜbR|óæïî§585"ÄfÍ U¬šíјj¹ëÄýX«“iiÒû¥?~ÓÒØx¥ñQæO˜iÊæK\]9ã˜Ñ£G{yyU¶Ux>-ÿgÞ»'>WÏÏkÇŽŸTÕÔ(¶¶ã&NœxŠÇku+ÇT>}ºkíI]JÓãk®¯_òJ5ðRzöNî?§'ÚÚÚn¤Ñ2íß½ý=2rQ[ljêâãênWí÷èÈb¶ïرÃèÏ3«C"ZΕD©p›_¾œ4mÚhyyy ZY’£µÍRwwµr×'û–¦ú5?Íçä_(8½23L{d•7 ¨âjy¹t¢Ãë2w%kb•uu‘øz_±¹IVÛÔÔÔ<í씀QŒõôôLi-Ú`Ë%%Õ¡Îâp8˜íaa5I\Üsss×ZXˆ‚Žb®TxvE‰ˆg|Úð'Œ‰‰ÉÆ·íMæ?»ìÛ­£ß¹ÞÔT1žoÿðüy¥yrrÔŽWu®Oƒ]’ˆd2ù(™Sj™}p¾ÁúɼmJfÛy"ªªZJŠl¿ÙšÒîmõÕZ÷KJ|A¿Ùͦ"A·b·$ttt*krÿ,‰µšè'½¸ô)áÕü ’õ¦qŽ..zê27ܱ½‘âåãs">^ Óõm£1@–2À]ÅÄÄ\ˆÕ ). ØÚñêlʸg¿eðCŠòsr¶‡„„”î<“¹!bÜœjff†Á((*Æpùë35-þµ·Zëçì5ÀÇ‹k¡Óé êŠß8ñBC1MMMáçÎeœYí´‘¨è[:é¦êôu¿ìò¸±núâ-øõQæ»[ùÅ´ÛGa³Ô-ÓúgÏÎÖMJé¾*$ º½$,¶@ÜG²½)ÅAeÔÃ$ÇÙ6"RññÁn¦åÅ3^ŽÂÂÍm7„—¥¸ˆˆŠŽÅ¸·4ÓJ ã‹Þ _[Ъ1-LƒÈ*»åÔŠêE:º.fçeEY¥tDI)›—œox&"ùbY€Þ™Õ]†¯|שo²¾è¹»ªö¨ñäÕ7o…œ ¡3B;“‚¸¬j=¹i¯Ã…ÍU/î_ž®Q†ÙþSéµþþçŠJ*U©“·¾q‰Kt†ñÝ~ð`ö¥CÏÜÖkOQ)\÷çc/õÊ÷îõ‰5–8Ú.ù2„·Z¹áÊ€ä,‡gÒã“ýÄÄò‚^«T±ï±êÛ;TËRϽ›kgØE™S¤Ù”¯©RxXRRRK!õVó^i ¶T€~5Ë÷‘í­ª—ÎAÁ·:—Þ¬5>yB|¢ ¸jOBB}:ý|TÔÈû÷ç«çÙÖ‚–ÂnßÖJq {—îèz-Çz:Jp5nÆf9ÜZÍ.·íQ>—ä¸TÞåuU[ii*êjWZYùº½8Ý.ðÕ2]¦ Ôè m}£ãP‘µûIûñÒW뵪ŽÅ·2çÉG_OïêŒJ;ƒ¥_(ïøåßçv_y«|ž¶¶¶Vñ‘Z‘ûÙ%1ÖYcSóµ+öçþIj_ü¸Nm'+Yúà¿¿Fñá%¶[W/‰~ÕP±?"B¡üú“Î=1íÒ%7§yƒïú"èj¬%»Ê®\Yò$ÿÒtK…Æò!Ö÷²—˜e/Á…jGYƒÐýæøo¿Èú‡s7lØB—a"Æd2››µW®5UÔT]ÍÛcc[Ÿn=jeJmY<2þøb÷"þ¥ v`äÌ ÔoªÌ¾waˆ{æ¯÷zT_Õs׿öKÏg}Îßü{«e×ëö¦'U••Kdý}AÐ ‰ñ/--­Í×89vŠÜ3¥Óœ§ygã:ªXZ—ÆÙÌ›¼ÛúÉõ}…ee·y<žp°ÔnYý•+«K ÂZ3³é?›™àñ毘7ÙÖÁáôù)˜‹.„^¼xQ8S2‚ÜñŸ«—´-d±».íúÞ9²'äW?­"öWè¯z,<Ø¿u4Ó¦;>å)n-´/yviä‘ì躿zæÖ\óHP“’Ž–=|¸®499Ù±.(8ئ8ÊÂüþ%.íŪ d)œùe2ìÙ3øîµk׊%'%ÝÉ V[WÃ;ë`c³0íÈå-tsu$öhõYGCº¼ìŒB~­¨{äbou•ýòrsy '@oßz8tuv´8NNU7ÓÛí~ò¤öÙà;wê§ÿ^7µÕ¤-0!¨¿|¹LŒ™a[C…¼¬,È##"#ç÷i×¼éØ)À¥¡¡ar6žÆÆÆÑ¥© ü/LÔŽßÛÓÔßÚ7­|¼})~ܸq²Ç uut@ÎRõìÙ{’çùµ‹Ò´5¬ß5zX€žµq(”9r+ÿLçСC›;  ± 5 —Ý;rAà9[ñø1•眩¨’ S§NÉ,Z$zøðaÌvƒ#Ê™™;7áÌŠáM­ +ò«@¢kbf¶Ä"<§Æ°4Õ´LO¯ Å­9<<ÜWßÀÀ¤, u5yÁÞÞÞ&kÖ,‰eæžPIk×âu'jv½å°ÃIee¹iÓ¦ñœ¹\î ¾³³óݪ6 婨ryz ¤­[·Îq«H·EBÍbíãk}óÐB`mËeý׌‹»<°*ÿ€€)+xF3o‰3º ዉ‰òþËuÂÂÂôôHÎÆÆS¼}|z{–¸ µ ’Ï78}ú4ø0ü\G¾f—“;«äLJ®K£ò“`/ú{×´Uu^a´¶ ÕšjTPCP _˾_BŒ“Z‰É¥¢@‹h÷U(ÑX¢Pc¼5…4Þ~¤Ò41@ðBlµ’V-^’uLŒ’:¨# Õ´:†ví“69çØ†Nõ‡ô{×yö³Ÿg­õìó~çüõÄù7?öøãk_Û¸ñ÷ç^~ùO¸êsÿúäâÉ?|â¤yç¬Z£Rô“ÈÓO?ý̺+ïÙ²jÔŸž1nûñã=v÷×&Îß[à×Ïó÷®?ëÔ¨¬µ»‡^sÁ97Lþ!|üo½‹Nž4é°wß}÷Á§.ÿÞ—·o6ä;×sÞäÍ[?øú·ž>°õ³lòλýÞ¹§pçü Ž8zØÛs0C¬†©¹l=T9lºùá·ÿí•¡Cæ®=qâ¼?}}ù‘G9é3Ÿáׯšr뜭rO.ûø#=¶ñK#õ[®Þé¶>rÛåsçn\8ì¸o_{ì¹Ó–|õ«ï¿í¬?™=ûðñãÇ/¸ñƥ˗/¼gþ«OŽ1Önxþù?vËÉLü4F©KŸ{`<óÔ©Sá€/|ß'_¼ó‚Ý»>rÕug{îX˜Á×÷Ü"¸íþûå£/Í=zñ¢Ee8ºûÎ;¿ŽXBÃa—>û÷‹nZ·åŸ~öÆßxóÍ+>ûöî10j“1==bÌÈ‘#/;ñápÇ«¯?¸z5¹ûÞ{W,[vꈉóV>{Õuo==­Œ覥;v|j‰˜ýž“>üç“Çn:kÆëßH¥n¿ë®¼´u+ztñ±ãÇ}ðƒ‹Ç÷Ň?¡O¹~Þ—òôè+í¼]ÿr*ÿC˜% ]rÉØï~îíÛÇOùð{—¼~äÊ;ïõÍUë÷¬›ø¿æ+h¥o¿†ë¬›ûÒ'~rÔ£¦?rÕ<ø ×ï{såýÝM75êúѧœr×wÜpö'?yjýžO{ÿ͹ö¹‡Zû~øû1ð]9lذó•Y?¾/]±sËi«ÎÞ5}Öº‰«A—N<CÜócÞ¹áæ™»¶þxÅׯ=bÛ;i¸hè={ö˜+·síž·/Å9ñ¥mˆ|)èlΔiÓn\?çÜWž™4iÒ…/,Y2âÔ±c—®[7bèСÓ×Î]þ¬Å.†|ÿ?ÏÆV›0á•î½pí_ ß·œtè #w¿Ú¦^8ió×Oß´jæúÕó^ûãå÷AqЉ\¹røuïîúõ/ÿÞÌÅYïÿùÊ‹¾;â'×üûI'Ÿ~í_nºå}K׬ùÃKOƒÓ_°páË–:fÌBñœf3&¹©³/zÏ¢CSJ<úè†/üæÈÉ3füEqå¶ó™Rßzõ©Srþißšþ+ÖrñÎ)6c×+ø$&£±Hí}Ù‰ ,˜|óž£^þíÑ¿1qÑ%ÛʉÍÿîövþ÷ß3k¾ªJúíŸû;ÿôýO¡ôÿ?ÿñÿìûŸç|têùçyæÇÏùƒ3§ÓQ§qõ£÷q£õC3Ø`væÀ¾~æG”DA Ó$è ¸ó6ÇÀqI1ò+”®«@N¨à£¶‰:Å… å5á‚RRAú6¯yfl"šú$¸ÏÉ«¤¤–:¦Eô¹$D((xTÌ)ïUt)x‡ÏgW^Ïs;"&ë@13"8—VQ%å #Y~'H©c;GLUr`AZÁËÛ4…p” ¢Ö–lÌÎÓöÒª@”ÊË+P£Ú1a³âZ8ˆŠ)eÙ¢´”¹‘Ÿ™« õ„KLÚ(bÚ»Fª@N)Ï”#BªÌ#S’H¡&+Í:@¬ºk4PE"!“S`̹½wTh«eèUëˆ ’MØ4!<¡!$M±¡åòÖöÒXˆrP]ô‰„[šc†aÁPEÛU;¤é©è·Xþ)"w!HÁ³¦"¶WVÝ4ÎG#Ä"²t)'ãJm¹hï~'äHÃp£àJ«äjÂ)b§e« "„Õ†æ²2ê K(ÁDäœk$íÔu5Õ(ªt'%’MJÉ4I2’tRT-Ga¥ÈÖ¯“Ë íË™w>aëÊ‹anUMF©Ð]& ˆd†H4-1›9Ïí"’Õ€d6$aè•—ç©+9’ÊMŠÛÞ³j®a:x)Œ´¡{IH˜*šÉqâBÞ'-ˆÁšHöÁÛ„ÿeÛUw_y¥”eT9Ô¤Ò¹O(L=š¥³ûõˆby27T ?Cˆ&‹š·Ërll7ˆ¨ª£Br‚À* Ê€foQŽZ[èHÆ¥vaÓ*–L¡M:."Úß¡ |ŽîIæÔªÒ£.—uˆ* Ã'LeÐX.eí¥ñêöC6 ”DG£“§í€ª©Á9|NQQdÑlY‚—¡ «)kÓ5­6ldÂù )%‰úCж`)3¯x’ÐÛ6PU@¢„WT´#ÀcGð¥…!þ0¹ Äë<Üc†áÖ&Ì$ºx²chª,‹pbå ÷Dšœ™Â€gE ±6JÓ.ÇúÊ" gÔS+JÈ„´\¨F¬öÊX(é"¥Ä{Œ£yu.³“Ó•Fã´s]ídt.ûæ3c Øœ%’²V;×UÉ, »é¤cŽbŽAÏi8]]Öå±W™ÕwéÞ-ï¬w²u`ãnT¨ß¸[€öîžfظ[€ö>€Ï:°q·U ~ãn³´*PÏ)µ‰ÈTúM© P5Ù=§Ô¨ºý=§Ô¦ŽH¨ßtY€ö®W¿âȉ'Lø¤‘LQ°»Ðà·#¢²”]ð*gØ(Çm¤VÁ/0Ì­’dSHUÊ£‡P?ðK c¼#:2ëÊ䃧Z@õ•y˜B3ùÓ)JÏyÊ0ö*‘¡¢z®1A­À¨òÜ ?î¬ÂŒÁáZÚ+«¶ZÏ ¼Ùý* ŽÁõŒqž(ð°¶ y‚jGT-ìò›ßžAæÔ4b¼Œœ$ÁŠUùvDŒ #`¹ù€´J¥Æ˜' úÄé"p¿@~q¥vp×ÊVbs ê*ßq½Ð,j‰–¥iеn]Pa«PmЈ{®tí™VÒt¯EêZÁPcµ…#tÂkî1¨àÊ-›sÈ,w¯EêZ¹<,°7œ¬åÚÁ…ÂÕ*˜´ ^'ÝkUù¼çyQ# õ û51U…¡ç9OQ1íˆe©XQŒž‘@* å0ÓQájŠzó4UI¯ç1OTeážÇ<H‘:Í œ;Œ2ðJHÍìThï>cäàE†o+,|sFpŒP˜]WæŸÎ•*h—U &%SÌ 0 G§B”ïCêê/8¸ue‡B5>;T&Wz¤‚$)‹À“î^«J1=ÏÜ#S/ “È5ÊSfI³¹àvÀ¸ÒV jõ<¼k VWúÞ5Yªõ-TU¤ž¼_öQ+³Œö›˜ê«£©äQ 4Å•§Ñ9ZúÆÀñ¯õÔfqºŠ„Ead0,cÄÆD“M9•û,Ó„·íÅÕ³ÔS‡š,Ù:’Íó66«cI6°~BH/&D;K² ÔSК,Õ7NYË¡7Æi )®)Âæ–¯¦àœ¶ó]¯ÊžÂØ„T_\O]lò]/tµ): Ú1%mƒ»$pº29I[Hû N÷ïr+ŠŠ%–1ñ‚Wm–¶$ª@å/1`fã3×^J°µoÔ˜’ÛÑ:P?ÉoÒ]߸žŠß Õ{·§à7HõÕõÔû©žð–Iàã4l;Eç'Š5Šr-ZG‰û4î³Ì84HõïišÕ™*ROßÐÐn}u=mCSäÀE!Ø(¾¤¥™¡«* Ë;tI DššeϼÈZÂIM-‡ÌªSÐý°ü~/V.§r‰tBY\²œß¨¬¨&®Ã”î§{{ú¡‹ï)Xl”+Ç~ø‡§6è¤IùŠCHè£Ò~¶­Ÿ±jBªeÊ!™ÈÑx±Ü®,sAܾ‘ÃV´K© ”y`rk“V‘kih$¬ÜvHÐQ›Û5Y¨§ÕkÖ¶:Ùëy@'ütYœí.Ûû.õÎ3ÿ~ù#l_?Rž‰ŽÈHƒv™$Ô=ç!ú¤Ë÷E:_£ƒE±‹C‰Ý€Š<Ãf!-®”bGšÖwÙé £Ö…DÊÊkN©3¨\ÂÁv{ìJä9ué,Kò,3œç& ð¬Ò+i|bÑ&D§+cƒpУ”GYîù•Ã#HdLQoÁ`ZÁ1^”7f:X5ô¡‚¡¸Ð]fÚÏàJéâ¨\î|MÊ Ü¬¢$1 ËÑH.–Û8•ÝÒ0œX !V(ÅhrHw öroL:Ö†‘ {!ñùl ¾|ãÛjMa WQtWe+8!yí¨%ºøií¹p弎"iÊì:Y®ì:<°/Óx´üÃ8¾¢~IyÂ-3mUƒ)_¶ÿÅÞ“€GQ%EdUlB€€9ú>K!" ±×ÉÈdf˜™$„{E ‚ˆÜâŠY9\TDPD¹oTõ¯×3“Ì$a.wý7ù€0=ÝõêUÕ«£_½*ž—düþ’Y–Ä[È$ÏqnùY¼>™a€È ,À%Í@Šw¿ž…!ȼϬü0 X%ku0æÉHÆoÑA¡ƒÏqçƒígm)48$8rà'p$È3§©2#Bð¨é„øÊ²®ÃbÔÆˆ8Ç”yœ²¤b ,â¼á°þÀ¨¤ ê^r@ðË$ ­Hi 5ìTû?td l*`!ðH†07ïI¤!´B2é«y(?äQI’Á¥‡@é0[dHD‡ÃÙI¤ªúÀ!ýÀÉp<^F¸L8Á')É÷ ¾¼áHþÀh8‹TîC/ÎØž±èjU¥|¸åŒL+Ò o»ÿ®dH @ÒöãgVÁ¿²©`ø‚à†IZ£DAâ•"Yª€ÏÃ!ð8ß•îGx Œ”Düv`3³â$4)€`d•ÕŸiQ~֍޳ËyFÔPÑ2•Ž3S9 B1ªà£)?*¼[™V)AXpÝtšT`]ÀBÕ$FñS}*¼ña®wGÐ`THÅõCAœ¸ò ;‹À3×”F4‡ßAÈë%SaOÝ ÍÑ<^o0{ˆ¥dœŽA§ žƒyc#ù¢p2˜eR[¯àÍ],é4ÇH*ÞœQHod®n×XæHpãŽWÔ"±…i÷‚Bù¡L.ˆ ïŒ.±4ÞeBÏ«,EB„Ž@ND3°K^`h?æ(Äa~ó ±u ѰèˆÁ@%àØñ^`üAá!è@ ‘¤‚ð‹=VâT$Á©¯œ7)Þ˜ ¼!Cöüaœ3dPXô']<„5 hð4§;Q4 ÂgR~ĆgU–i/(ÓUV„ç5…gH¯ ]¦Bz^0ÁyfƤüH_ž™!6~VTž™Á)?´V#„§ð/ИÖedFW 'ù)ÞkòC‘Ä©“00X g{Á’TI!ÀN“½…¸*§¾ ƒ+´ÆãNï:ëã Ì¥U–3Ž„{ÓÆ6«j`C9`P±ø@˜Ñ(ÄÛ™cð›=]|IÓqR6 VˆÇäußqbÈ ´8««(Öñ Yð4žB8N¤Yß‘¸IG’A ‚C Q$5°Ì:+°€ÅùŽÄÜÀH2¸ˆ ¥4J'iVÕE$#NÔ5|ò“Ô}G¢n`$MWœ( 4+¥‰$Ä+€bða$žö‰½‘ð9XRξãÁecyp@@8'ª¢ïH~h1­±üi жàß“<Þ…Õ(#¼!E·x0 Œ„ú™v±Œ?0ÁÅÅfhý±‰µí»jûU¬ÿõˆ åÞpÑÿàû $å]ÿŸÃý_øº¶þצþÿDøk3êÿw[¸igUõÿo_ï®ÿ¿htfÿ½—¶¬ž“Èæm_ìr¹Á—úuÉ­óhÝ«W׋t÷㛼òÙÃmî}øî)ÓKÅ'Þésßé¼w_ÿdjޒݧ þùC®i3ºÌèqgËWºfÄo¦M¸ã®Aë»·¾Ôá±YênÌ¿”Ûq“4zùªƒ¿³rGûv[þ1µ^ëF6eAiûcmÖ6ÆÕm4±ä›l­÷¶k×co½Å6lØp_dÛíQÄì>+Æÿ>nVá”™wèÐaêôé~¾ø¾N÷òÛ£>?rdúÁ5Võ™’­;2›îH,úþÙ}¯‹üq¸aëÖ­ÍWÍxž±5¨aëºÍêLÙ°ù}yPZà 64[º9uš4ìÀÁƒ+rw´˜uÏŽTËŽÓ̦_έ·žmWº1ñÜ;Œ>äÝa3ž}¶ujZÚñÒ5G’{ö¬›˜øàø´´[nºé¦ˆŒÃcî¹uiI»¸¸íROzóÍ7©ƒM›4yá_ÿºk]áY\½Ý]?5{öæ«ËsÖOŸ;lÔmïïúôçÿüwóž}Õ“'Oâúç7mš¹hÑí‹úÞ:qÃë{Wê.Pšœ‘Ñð͇ÞVì#ÿ¾${ÐúqÝðM³fMüí·q{ÆßxKjzzû®][³}‘z6aQ£+W®L:õošõãO?í9pÓû«†ï½£M›ÛçgÔ]1hÚŒ¤«õÖXßÑuÌå;"gÖëÛ·oÇ+ J>L;¶a¢yõGܲlÏ”èß;¥uÖªË?l¹gæüù·vïŽþù¥×_¯ÇänO:´ Œuüر @Æëwê{ì§ÝsÇmÞ¼ãk4ZHKKË\’K‰>q÷½é3ÚN\Úsذ¶}o¬Xx¦ù%%w¶n=­ÿk}Wü0É,˜÷MX¶,fíÚµäÁÓ§yçò—%³ûLêpßœz_ßÛäçÇwúìСiËß»Zÿðáø2{ý Ú5-‰Ý£D%_éÞ¹ñ8®ÝÜm?rìØpð`«…|þ£YK>¸òÓ73Ÿ}¶á’ìúýúõ‹ŠŠšw¹CÇŽ-¯Ìž;wå{ûö %©]tt=€·ì×/7—<µíäS}ã?ÛN®ùׯ˜¿² ¨hʬYÖ­ÓwQ¤“?ز¥ÎȨɇ§‘9/®õT§¨NÔ#téßl5⫟¤v»‘Jbz-ÎZýÎÃnê:ò|DıS§>:0%¾Á•_¯|ó¼yhLÓ:­c2>ló½ÐöàÇ÷9qâÄû{÷6{ûí·m#FôÈɹ®øëùÔ7‰¬>ztbdûöOšŸuºó37ž– ¬Bs'ïÙ3`õ¡C‡>žzÓÀßZµjÅ¥_~>7äÂÂÄ¢¸!ͺ<:(†o¹¦´ôÓ­Öe«ï¾ûî}ïŽxë‘i°Ì ·®-<ÛòÚ¯¿n™}î³yŽo¶oÞùrú‹Ù]àψ¯?i1æ—³kæ Öç`¬D6W6nÎÌÌœ0gNS–ç•ßûµ^ƒ)ƒ5·;;¨ÿdÏ:“’å/ç.\X·ZWô×ýû÷×»ýöUkKŸzêŽ'O¾XZz{~~þÖmÛ˜¿;ujEÞ}©—¯~·üÎ;ïüKnn.„ˆ+÷Ư¿öèÞa£?57L1eòää3ÿöòNÜû }ðà–}î»/vÏ—gö¯lúÓê¦ÇÍ èÍ\°à‰çžk3duÃ;wFLøþ{KT‡Ç÷ç>Ÿ†Kõ/]úäµËý£tȚ䥻#£¢n¾÷M@hÞ¼æÑMê¹öÖˆ¶‹ÿõJìÐ79÷Þ/qÚ$Ü\TTÔãàöí}óØ–Mš6}éŸÿü,ïÚæ’f+;®÷âÚ½o-©sk#¢sçÛ`Þ7'¦GròMú'óäÕM¹tvÓBë{&ªh8qylÝÅY’Üê]ûÉúcÆŒ!föŠˆˆíÕ»w#¨ é‰zäëý“·\G ycÒªWë~ë³ïÄÊÇ,hyâë¯_Z¹²q›6m2£›œ™~ä÷»YÕò‹×ú‰z5+Ö9ä÷“纵únOiÊCµþú“ùÿštyÂÅå½ýySùÉ’W_íhÞÿ¯[–\®çÏh¼fñàŒŽ¼”a3oy&1ÃöjG/XïˆóßÎSŸGMÞ0?Ærô½ØC½Û¯s…–îŠX7RJØÞ!÷›“7‹ûºÎùhTñ¨QÓMMíÐqîœK®Î_,޹Üì™9•žN[ÝhËœ}?/^<¬û„së×ßqfy7u¯ âÚ&©ñÌìóýÝlÞ«\þí—…6ç˜ìGIzèßÙ¹_M5—~¢ÇḵCo·lÞp†>ñÔ¯?ñQN~ëÙù+†P×~zžûìÔóᇛÚæ¾=µs?Ùå ²F‹˜±P¿v‘zw\D³¸]¢#ªs•oOž¼dÙÄ dÞ®¤ü–¶OÜÞ* >“Õ0wÇÙfû앱O8¿|üáÍãû‚ybïÑ{Ö5I1ZNþ|ËWLîãçu~ìðãÇþþýÆÝKiØpÚ¸¯ lOe5öé—´Ü·¨yßçßCö/ÅÖ‘Ÿlµ>ååSMÞº²N)ÂØÔ­[7cG³É)¾þÊ»Ôñßj÷Þº½­õþƒ¿¾6çµ~•¯>ì·_ÍC¦(ÃÏüÒÿ¾é”ol”ñªÑ¿•¼Û}ŒvõBn¯¨«Ýn¡æÇ/ÉN8½)=cܽ_ÞùþÃä ¯¼¢i;±Nè³8¹ðÒ·ÝŒº\'çÜ»?yì–V´ùzÜÆ’ʶ¶Ñ¦q/ ÍÛ?8ãƒy_-~ûí­xsÉ}¹¢é€ç[dee-ëöÊw”lVWï>åì•‘ñØÜ¹Íž]´èÎ6mž¼t©pO΀“ÏŸ·EôŽnÙpZÙúÉ'o]zjÀñ oUW~§˜y¦O‡?þ8sÈ’ùLndRÒssÖÚþ"ËrÄ«–÷fLܽ™´è –ß±Ó§qŸ™ —.%/ß«n›ûT¯¨ó/n9»¿Q|îög74ˆ'4gTÇŽ/-_>ãâ=’ý柾Ù1eéÒ{A|p`ÕàØv 4ì±ï¿Ÿ~â„váâElh"Ž}ýõäÑ??Õ-àö¯¾è×}ÒóÏßÓµ[·™³gß²8불o¿ýöýe®<á‹~ O ³€Oqöàš•û;&%µ\ºG‰üòÞï@ƒaµvݺ”¸¹­vŸ|¼Eq¿/ÿðÛg僓Îx¨QƯ€k“ùÀw_ùå—þ<Òeì››5iÞ¼Wѹ#‹'O® Æù¡Ám·ÉãJšÅ¿º(±è_ïýµûµ§Fõ-.ÈæÌ'×’~9ÃÔ¯_ÿ¥«WGájÙ/¼@ôé×Ox|ÛÓ¥ƒK_=rd˜>dÀ€žÛæÆwŠ| ´àôé­¥ÈyË3ÍŸ?¿I‹½?ýôÓì¡Cï7nÜ3óæå­hºi?XØ!«§µlÕª÷â¬×®ü´ä…Þÿ±QËÉóBW^_¶Lûnïòœ×&5hötFÇ—Á¨ïöÀh§uçKiË–/^úè#íÐñq›¨ÜûR_Éîr ¬ðk`V7^·néädzuG³'†DÝ5ÌÃQw=Þóɔ׋œ9õ­Ág_«n~¶yÇkI)cÇvòæÒ¥›`º¸-ÂAëú…«çïܱiÓÄÒmúwëÚuÚ‡ùyyä­–æ?ø` EU_ÌŒÎÌξY„ˆÛ;̉ÏIzsÌ”/œ?ÿ·””:Së¥>fæÐ;Ň Öt8õغu‰ ,Ø7ª¸XjRÒþ‘nŸi_ï“O°Ûš=p`úîÝ»Oœ;×\Ì—¦MkXšµt÷…[Yç]¾åæ›3Á=Û½k×gÛâ×g$ž![Œ?quuþÁèèè©-[¶|ýÅÿñè£N»®lìF}¾qR\<ßùÍö6/ßsÕêÕ >ý}›ÄÂÏÞx`i¯Òýóóc1à‡zvóàÖ¢mB¬õè{‹’SRz—øb÷Ò&àè…“ss¦«ýö_&ÿž••œ””Õ´¤wÜÜþà¿\¼xqg§çÇ$++æ;vɲeÓôÏåŸ(:¬Çà>ü—Ç7+}úôQ¾xY¢`y‚R¸«wÔ]O÷ŠŠš»m~Nvv“Op% dŸø œÑGÖù뎱_Ç5Y3`éâûò3.lõé|fÊžÒ!éC‡Uߨ|ÇàÒ9OÏšÕ;ræS%% ò­éL8,^Ú5U~çÚùMݵk×{¾;}zëÁƒ Kû]¸Túøg­äeƒÀ¯8%mÊËÎÎÆ–ýìÙ³yǧôéSÝË?¯O…•׺Íógæ[û/iÊß™2jT(ªv³>:öÍ7·‚c}á‚sO÷k–£Ù‹W¯n hß¿ î>úÙµ±»•¬[ØWZ‘'5~vÉm^ê÷ѽiÿûßgµ¸5÷é<“éÎ3Ìׯï>`ù°'ÿñ—_F“k»á~`sÆìJZ7žL˜²ážiÛ¯Ä{é×kÝÇÏÛÔ~ÃÔµõª¿žxíÏŸÿý»ÿµO*d Ö§(žñªÿNá÷?SÛÿñéÿÞ.µ_Jöƒ™iæ2‘ù@rFï"26>~ “ŸšJ ê•}AÅ‘D¶]¶8LN“Õ"›ããÓúF‘yN§-!>➸"&ÎjÏÏΊ‰aQøa÷c^OÆiN w‹7™o¶8ºU†’$Éõ´q/’5ø•œ2ïE# L…F?U'²8c³‹m7M5>u‹Äi¿®‡Õ<Ùî@Înd÷ŒuµO­dPì=bS¬ù6ÙiRÌÞpz§u“ÊŸ±Èù¸›-² »ì´Ú½îKµŽ,†ë@$1Ž"'Œ†¯IåË‹0~yš»[ÎÑå7t&zdöN ¼ºÔë0.èïê-ÜÓdF]ã]pëw5›,ÃÝÝf²âˆSŽHÂŽÌÝ"Îb3rä!äŒ$œÅ¸M­A|FÌ¡ÚM6§÷7È…²ëj$á°«Ý"Q€ìÅq8"“ºÆ»¾ îA­Øâ@*f³£âÓ^øºûKT+Êvä0Ba ìFF“røO‡ôdR}‚ˆŠÖܽ£;ÇÙA¶‹£M“3 OBìœhÜSd²hÖ¢Îqf«¬E»fØ ™róœð}Õ¤Õ\‚i £™°{i)V­~i¦B£Ÿ±Ójƒµ‹%4+a±âæÛùÖBD8óLnŠ!LNþ«š­¤J1áºë ‹+n™ŒW±ÏP‘Ùì°ÉªÉ’Û-’Œ4>ÛdMsòtuº°ÿØ c !Œ‰'o™hа«S3†°Ù­¸=¸l6åZ"=·»Æš‘‘qÊw=E”¡æ~¯êÈ*†Ô±=Å“‰]a.€ù ²G&Ñq\œl‚¯]ÇÃÈâñN O.ÞiwýrÓ>Þ þq£A}dÑ<¢m²Ýé".þ"Ý¥†\´÷Õ?ÆM^!µ[‹( ´Yv8\úÂE ¢kÙëªÙäpº¿€¯Ì¦¤®²[®Œ^0®ôÉ$cÂI÷Ë&‹‹™r.rO³k¼ áÁª`Øà>‡Œ,„Û¤kå`ÁÀ‘- ø9X©°€]€ú;íª³ÀîšgÒjÝ‹0²:ÞOõÅëݪAu/0»êá¬/Éi’Ó!Ò¼jL\sÌ€§‚¡U®ÙªÈf_(é®kÁÌÈõË7P¾+ÛaÒP,̳lަX»GžoË/EV$P,ÖœšT¼ë¶­ŽrÚxßâ(¶¨e’ʘà³Ò*2Æa3›œŠl/S±ùÖQ±du 3¬Þ‹Õ‚# ÷¨UM.6O¶hž y* â¯¬öõ‹a/£;Æ ¯\˜ ³îT•Þ)¦S§Î‰c}•¿gbØC³H÷e7ê.õQN~ŸË†~®ð€ûšÛýpM­ ‘p(“ ÏŠ*ç[™z&ãÃt+HXDx¨!cVÝe^°àÇréW·Ë¹ù®¥êuL2¯Ë73¡E¤K¨ ½ìuŸÅ™„9J¹%ß­¾ÝÓò”fý¥Y_ Þ·Ùì,ƒŠð“Ú›tÐ¥:‘““ÜãÁ´¬œ^99e+1(L¸˜pAchÀsácÂÀ„ƒÐ í(ÜéýdUÒ…“{uZPNBˆÓi Ÿ©¦ ˜@,‡ËóŠªC»ôÞõ(5Yí¦à• trßIT}“ï¹ctódjzž²‚ Ó¼¬“8ó–“UYVtø/Ë‘­‹”‹L%B¸QŽ…jÕj —ôe÷ÎHËÉJOOÆøÝ2†¨â'Hâ²5N\U¤>ö+錪!©ºÎ)² i’Àи˜ªA\¶†‰ /â¦g%§»‰KÝq¹'®¬ò"ÌŸ}d KãJ䊀ðQYq—«aâÆÂ‹¸ÉééYnâÒ7B\¾Æ‰ËˆšÎ³<Ïi,§«2âáñ0S•çHqù&n`,¼%79Ë#¹ÌW¨qâ )󃮦ªëˆfp gŸãuª»ˆ+Ô0qcQAçæôî›–•Ñ#%-ÕMg6&TâŠ5N\Äòº@Ñ4Ãè¢*r¼†+Š,+é B‚æ¶ìb 70tneâr!WªqâŠ"ëps<¯J‡hQPEEÓqÑT0àHsWªaâÆ¢‚έL\>Tâ²d—¤EQäYRgRW’“8”D†‘4—Ì4ˆË’5LÜÀXT镉+„LÜÑë­ž©ÂLðÙÆs9)ÈØƒ¥àJ‡аL LÀ(Ç ‘I&‹³, †FH¦T«ˆHÄ 4­ë: ."Gñ,²È¤\[Žë4Àj‹£¯@Åaʵ Í_,äºï¹xîêb²Ø œ1DP+ ò¾<÷…‰§µÀ‰ ’«Þ°l•ëØ×i©I'œ&¼{ä$¼J`¹šMM@´ŽTYi†Â]ËðÉVfU’”ZõM a8µ¢‚hx-ÃòÑLB¨!ÑdŒ¦T$¥K2ÂÅâU§$šE©H2-"/ÑÐÈn³â-Œš’Ï|9Õ€|þǹ+à®x}îªÖ|×kàø.!½­d¥cJAŒIt!²ó¡[Ífk‘É’K8‹¬„羃(p ž’Í Ùi*D„ñ¾U+°#B•Íf¤=4Ù†¿ yŽôL%4ÜõÊ´­<\1¡ÙM…`ƒ\GãˆJƒÓ#’1,ÏÆP¤`t±ÒèE&-9+ ^]·b^T@EŒÏIA ÀVBAÆ©]NrÄâJ•ø àä$GÍfµcãâ.Œ‘ÐÌë„ÍH…ËC&ðÝ<ઠÅ“¯h‰ ‚WÜõy¬Ì¸¨BhÊ%6,Ë _•Êâ‚_ZLÈ¢"O¹ìy¸o¯‚,ìâéNc(Q €€P†€åÛ°×\‰©î£ôÀ!WÉ¿%<÷èÈæ¹Å:>:W(`?‘”‚ÀOº®dË*·xWæ”È0§$¼ÄÜœŠ¥UëGÔ¸ýwwß ßðgÿ)–¯XÿŸg(¾Öþÿ¡ö¿òÊ4Ö¥Q‹Cõ8þo Ñôú4eô(ˆŠÃi—¼dO=&|aµáØÆ•F[IGH˜>ÜËt)HWQ•1Á–-ÖlÍ Êã›=öÅš[…A–(2F³Br,vK¡ÃUþÇeL‹+v¥;/U` ¾‚h IÓt0hV²¸N98çÅukUXÐ,oðV> 󄪩.^òƒ"%ÿX’Š¡iîÿ­Ù©Jÿ;ŒZ99†,c0'GµšÍ99¹vÙ–²% ÿ!ä½ô¿AÒ$ǵúÿÕÿ^Üöh{ïKAFwÑGünŸµèºV9‚bc¸·:¬uíþ[ü?W¸\Ö膋ÿ\ÿ+øÔÿ¥qý_øX»þkëÿþÖÿ-«ÎX[è·¶Ðom¡ßÚB¿µ…~k ý†>»,ü[i†Ì Ͱ*lz˜Í!T0ÎÁ{÷¾4òœ«J!8>PÈv^Œ!AÁêÕJ¶«J¨ã8Uîm{€¦ÁÏK¯P°C…àcUÈj žOE Ú­µe£ÿ«ËFW¦0kF{‘ÑmüŒ„àwNz¦áttögJ‘Õáõˆª²XÊ6z]w{åmâŽî’ÆÉ/€›§!¤½bÀµæëÑz'*€>Óh#E°%2ÍI`öHð9ð6*`¡€ëáëäÅ •FÇnft0 ˜@t+ÐäI ©Ë %h4°‡TˆÃ ²¬©$_‡2¾˜x¥Œÿ¹N ü©óï«Úÿç° «‘´ˆDÄ“È#`¿–¡’F“âqTÛþ?Eöÿšgk÷ÿþˆŸBÙNÃo¢[ý!†Œ!<ú 2†0Äè: Š ˆ/_!ÖÇ#ÐŒB³ºà’ð oŽ$†ÆxÆ)—ͬ8< x…­q’î³È" ÜGDˬ r£ËÈg¼@7Ãxõ‡&ÖîÿW•ÿ ­zÖ?E±4Cû®šbàRíú¯Ýÿÿ_îÿk(½ø )Œ•emàÚ´Ú´Ú´Ú´Ú´ÚþÀÿ;½ÁùèpËàë;)7ÐEø¿§ p€ÒÆ4zàôÌ^ý²ûÑ9™ý²²z$÷Îèý`èÝx̘¦Bï \}Èè¥@‡ÓY‹Ðä€fB`‡Á Ï|*[}{dä¤ôKM m¢!ö‰þ£[>›tÂÅ]-z`ï¾ ø*å|[¢ñÑÎóUN|™Ö?+%'§ó¾%4 -Õ-¦š~B£G€jý´\#‹d”k² wßáâ ÉÕr&Z)pþ·V`ǧð1ã .Í·™\DBä_€ÂütpMrªé'´LíÌ„Sxž  U™àµª»T":š‰®È ü®Ž¹ÎÄЦ@•2tP«Â1PñäƒÔÅa…ï2ÅWt«\|Îu¦Ë¸êtÈÈ*_¨i&x5]`M£&™.«¡µPbhf† “ŽbG®v\á @g3R8]K(S– a–†sÕ»_Fïäþ¡µl ­w¬_$\ª#$Bl ë £÷Hh£ß@÷ØŠ£»Ýz *5ê8¢ÀêLŒsý ÇÐz¡ƒ#h Uv 5ßæƒcÖ"p14ôn Ëéÿ±wµÍmÛØºŸó+Xåέݱ,|ãÄ;ޤ&žqlíì¦ÛîhøÊj$QKRI¼þ÷ €¤DʲI]wææC,QðààÁÁð¸)‹f”NgŒÍ2IUÊÝ˹ÇBNmELJø¶¸rs ]òJÈ?ïÎGf+ý#N>·½$f$"¶‡p× ãëƒCékÞ¶¸Ç±¸ô©ušåÁ&›î›jF[ñÒï{¹¯±loïÏ.{}-÷zìåvÅÅÕeM®ÁÆÙ %iv²—ÛK,b=øéü²7èÝi)õ’àþd/WÂõ¯^.ÆÚæ/HÇæ¿Nörå¡$¾³þÿëÜÜmˆR#Ç3XgÎös¢ ±~r²—+ÿÐÞ]sßk®½ó›=ÝÐ÷×¼®Êñ=aÇÉC;NFù9zË‹}%iÞÈÍÆÒÑp6Èw/Xç®öUåjrÞ)à=ÛØ&ß¡ùYJ"ØÒ6·C:éx4) á—†{òë¯âH€EmK¥yThÛòÆõ˜ÒÙÁ·CmžâÔ+¬ø#ç3´v´•jg“gëóµê´^4ÞgƦè5U¯à[G¾Þ\ uGeÏxÙiÎËŒ/–K)ƒÁíÕ‡þàê>œ½;ïÞ÷oú²k'ÀÆŽ¡Rc€8óÙö# SÇ’Y;¹ºílÑ‘vìgÜ‘zvTèÙèÙ![¸|¢8>ò½äP+Ü=‹rxØqwg3li9€¨‰ŠaL%HÚïõîúüJ°Üùe÷âc_B%SK€} –w€m‰ \bÈ#*Ü«CšÑ闃ܚ?Ë?Ë5bð7iÆß/ëà _oge¯qþX’_@ÓÄ’—áÍÝEopqöÏŸ‹Ž¥Óu$‡ `l¢²TJT¨”TJ$¨´ì§ïÏþÞÜõo>œ_ÝÞË `M"Áš }j¼wzW·½þßϯºwbÞæØ{qÚ£_ØÛÙXûâç4Ýò"ö5•uÞuu…ÊŠ În¾ìjOüãíY²A»›»Hª9¸íß½=ûØ»9»ë¯‡jJBxÞm¸C!ÑØjþ(Ó&Ô›òí-’ääï Rëri•ZÔÙ„Yn¥Ã(Ý5UzØ[}ٲĿ ô²{ u>ÛC׆×Rª¥¥×j)Ù0AÁµ•09V –ÃŒ)®£„ !½ŠÉà I.QÃd˜UL¦&`\r]5LVMN– &Öó7bb¿+aÂz “-‡ ˜&£ŽÉ‘ÄLX “]ÇDä0&C­= å-0¹r˜L“ÚÈ€H “'‡É0©ñ86k˜|9L6€IÇͺœ9L€IÇ]»†)”ÃDLŠ<îòF¾ÀDå0¹&57ˆYÅ$e‘±±r3&¤ÂãýOwgÜ.ÈÅ%‡àp„Ôð¼x„¨äðü”ø»{{þÏþ²m’˜þFJüÍ@Y5+ZÀßÈTÄdW0!IL#K“SÁ„%1ülELDSoO#þîÞÞ]]¿]b2%1üTø»{Ó?ëUäD$1üTøûú즹”’ìw@\º¦«^oI–Ãp<„U8üýÇëîÅRw²<Dá!¬ÂãÝ‹«îÙÅ‘Åð8VöÐô?-=4’˜Çjv¸åTŒ9$é¼@@ –¢£ÀZZsHÒ{€x?„Õ,qlèf”!  r¬fŠ›6oÜKP¦(€Ë±š-.Žô­´)9ªSŰ«’’ó`q|ÈÐ=N­¡Ë¹0€8@d¨¹UldÖºœD†š_ÅŨ¦>9'î‡ CÑñ+œÚ Pr^ ø[0z”œˆþC† £¿EúФäü@ü2l%Pb”©€’sd1€Èp”@­¶)9Oˆ FçÎß:(9W ˆT‚ ˆd‚óÐ p]ª¾‚½óå)„"©È àcSaƒK÷<_mÔ¿ñ¶Ð|ao4Í3Í÷æ¡ÆOÒø󔆇{&@ù¦Â6šî‡[6ãõ6¥4'^òY‹ Æjf£àó!?k”=ì¡æÀ¸b6Ûž£½\LÎïn»w·¬ÖdQëèG1%Õ¢qüUœG˜ÄcÉUrDH"ÓRé À@bÚÍD3‰C:ÑxÂTº^À°!ÑX¶Ë»ó«î‡ÁE_SÝš„€HGdUT½»› *¹™*‰LWkÒÕ½$R¨€xId骨n杖³»0Id!eT7T’ž^ ¢YXU·ªAI_/[‰,CÕY¥µKzVèKd™Ê­ýòÝ•¤oÃD–¥Ì ·KYÉzW`LdÙÊì•­}¡Q9d¿[Êü~s^GÆ´*‡ àxK!š1™ÈR¥è·çÝ íØ]©ªAÈÖ•QÝVQ½•CP´­JÑïúÕÃîË¡(ÚV8QœH&гÙäìѦûÝÖ@À'²MIüj[Ï5 a È¶›n …€hOd;Ï6 A¥ÈVae ÜÙ®DLaJ5©žÈQB@è%rгí&@€'r°LÌàõÕíù§Î§«ëþ¥r¢:‘c<ßþ"G…„°Nä4#aía>™<k¯dÏàA@0'rl•Z´è4;£TË[å&ª"Wñæl4¡ò§­" ¸¹*Sx LÉ„)>>t7U©&@wîŸZ2B ‘k©Ÿ¼;ÍTÄ(O˜Ÿ‘+V½o¾\ŸÝœ}‹ÜF@$!ru•ͼě¨H X‰HBæèT&dp7§kc bËD V!ͧ£4 U!Â> Äûa«dj™ú9ŽÃ2ÁqÀ9Ò§ûa Jë¶Š SggG'Ø%ëN˜D¥î.éîGu¤Â@$F þ@ „£aôlýˆ\Ã7w›ïÀˆ¨5Œž¯7Ñm™*m `P$9±×®„}×ËUˆhÃH…k4Œ•LfDäùvf€‘+ãÜŸ½,Š“‰Æ^ž±ÆÃG™Ê•uK«@ $‹†ñó=s1k«ƒ@ÐÞtöä¡ÙÕ¬´…üBÚ*/¶|ò~Ä@\ŒøÒ ± „“z¡ØÈóÇwuJˆgGü6Ãrtž|fã3¯EYèÁúS÷Ö\²Mó?>ýG–3—ÖaSyCȦ€¹½Ê3 Ý #×ĘDFèyì‘GLÏöª<“Éó‘'0¬­û=²ÏÕ›ŸX–RQ¦é3,3¡¹l.èUqÅœŸªû/Š °WÂ÷Êâò‘9¾o°Žg¶…}/ uGûÜD­´®üzŽŠ¸êZ WÖ7…7n¡”·ëˆ6 \Ë5ˆåÚYvx!Š,ÃFÕ:"¿C˜×w!«ƒG ›· À`Ùx¹Wjò";2ØüÌ1­[ÔðC±‚Ð #‹ÐªDò Ë+­gµñŒ’Æòl­M1Ÿ{•‡… ×u=DÈÓCgD|‡Ø =ßr½ª'{”XNiE¢=v(±Ð´½žàyì–zR(7íReš5sê§»T‘fŸê±vÂw°tKõ(¹X›êF$ë8"É>Ç!¾¥k{½À±-õ¢êq{Z5U5h¯õÒ=­&š%#ú…š*‡¤xžqƒ¹:,±œv88ñpv08žßm'5×rÃÁ‰Ö;YqsôªCzƒîD‚}’÷bWÕ”ù¾ÝÖ¢Äòù•ÖnŸVócFØÓ”?®¾Î·‹ßòŸøÃ4ó’L‹â8£ ?‡¥ø‰£æúŸz_Ú3/»o•u`Ä÷<ËQÈ-§J𿼨Óßýÿ¿?áß²i·½ÙHh¹Sk\£i·Ç£4+ S¾ q‹…iò¿È±tñåßÅQ\ÈпCØÆ;™¥üšÔÍï´¿” ‹óšÿ"ÿ^ß»êÞý|Ý׸nµëo/λZ«ÝéüÃèv:½»žöéý݇ Öuuí.ñ¦é(:þeK«rÆWCÐÅÝMçÏ ñÄÅÇvVIyfÌ"zñZøm2ž¦oÖdƒ\×ÍS‹wÙ0ÈþLhÆÈŠ½Û¦ÿž¾¼iuóá¦}Ç×Bʉ „ô[–'>á6TJ³7ï~jÆCk2ùÔþxÖîÆ6îŒüq5Ÿóþw™&÷YsþŒ“Ê{½œæ ~)²Q6¦•‘C´€å‘x{žxÌÔ:X¾p¨]Ÿ¿ÒVÆšÕ;úžèœÇöwÌÝЈ2“#`æeট ‚g£Dz¤iKKèøM+ÍÆ4½§4ki|1©× ’Ñ,«þò›÷ÅËŸ„ÿÛ¿ç4y8þ->_ñK³„áÃ4¥ùòÇjê ^6âññ~§šŽþC `B/óÔSK¥äCäÿ0«jΰÃcn >p»î†WÂcmõðD¼ó•Ññ×Ããqì…y ßÓÑð>c¿¯m9T7­ÖÃrÞ‹Qº4à²xÖ*Í?2˜ÐIÌæÙ=3ÜØKGÚ(ã6\>g6‡Vý}ÝÍÕcUäÝ=ãuÓ:ósüFÓá›–ÞßgÜο3ñ¼Îr4ìC¢‰ 0*¥YöìÛ‰áë,EÌ’ø7Öè˜õ<œ¶Ê׋ Ûc±Dú±E'y*m­H—O,d{ô ±{¹rQÍp>ñ¹E†­ãråZœDüCòÊu²$ÿSZHB>KˉKŸ/p Õ¬lþCÕÞÓêDUšÎc<‰¿¢…-Îù¢´ùæãÊSN9ÅÂÆ\N·ªÆ¢¨ðéo4Ípí —ÑÒ^ÅJ]ÉcÆÞKkyÜÐ1¯Á2›´I>Þ”µGž®–Wuà<£[a0O6å¶Xiš'‰XiZäÎçÑu”œ×g•ºUÍÖEŽk"Ç’2_$¯ãÅh±‰`£¬†ãØ÷Æõ\ÞåÏšÔ¨2 d„PïÙé(¤mVÏEç£vR˜Vþº|ÔZP›3g)“ÕçåŒ3]ʦúJú0 ‹/§ %ÔzÚªbÒ›Où^² Šö$þO{žÒ¤²iX½šÆSzÒÒŠR×U®}ïMòBUAÄÿ˜öËùîÁáï|¸ô¾Ü±Úü°ÙXÿáè‡Oþ¨e+óõVÝ=“ÉR¥üæ“ ã8þrÙn^NiÊzX[¼A™x÷Òª=‹MûXSÄæI%QþÒžPN€,Ñ/Hâ'Þå_¾ùÓr×ß@S×[ ½PVêUUôò¢Ìuä±´ÒÝ*Ù„cAjçÆr_Vð  ov/ŒOqë5^l–ézþ x`)ßÃ=eÂþ’¦.²ÜeæÇ C(l]6ÐL¼£¿ÊüOLøñ“'3/¼pÂý–£g™–{o¶Ë˜ ÛeÁG6¶ié½ÇA¾‘g;e 6@nË‹&(}ñZÙ\ÿ÷¥ið$¿ŽÅGžP|È™®” ›Á3‘3…Y¦}„ˆyd»úßãÞÙŽMñ7’ˆ´’Na2‰säZG¶Žøµ $0‹¦Ç<e[å¸nPxÝÈâÄó ÁãÚN0æ&Z‹fbцրp]¦!„ÙØ`¬EÑXk›.:ÂŽÁš®udè:P¼oj®³qCÕÖ Öv/Ã$¢{$Q‡QQÅù/x¼˜÷ç$šÛ|! ÆÂ¤b3üŠ}ÇL F¯lbÄÜG0}Óâ{wïqùÎ0‰ç³’ñû WU>¬¼xd±ÞãS1óÎçÝ•‚¢QF'¯Š’ÏÙà e¼Þ£!Ã’pDKûR|>’"ž½ÜÊó”ÉM=gYüÄšRž߬yÍDÎÚæ… 61‚®<ͧnëj”R~´G'êt[þÒª‰¸ ?ϬpFì]w«s¡»râªÌ3lÛv€MêQäG7m câ:žåè¡¥¤Ó¥b¼ipÏeÅûY“²8øb¤Ô"|¦ãË‹S¦|P¿ÒhÜÖÛŠˆN‰I°ç»±]“¸–<8utq2Å΄ݠ¬í…Í­Ê0žx£)—õÁ­˜Óæ™Uÿ/µ!+¡m´A ŸøT'Ä iHul9¶b‹bß'Ä vªem¯!͸Bv¤ Yñl£Š›ž8éùad3 0°oÔ Åé*;SEƒ²¶WEXÕEOô#Mû@ÓÔÒuZ)Õ"+ªmÔ‚†¶g‡¡:6ÝÈ6ÓsÝ)v:84(kj 6é…}â ¦[©GVd[õšÐ£éŽ£[$а:núˆè®ZÄÛi¯ËÚ^=þh® ) -¨Z§žü­GRb[uËA¾k±yÁ¦…ºIùFè°ŽëxÄÇ;í±Ì•emÖ4›Ñì›;µá²¶×Òô±€˜^òO˜}êÆóéZýˆ_Þ¼A‡+Ò½*RÁ*“ãV*ÞD#ØÐEfdy”žeb#` Ç5v«2¸¬LYvd±É f%8vˆ©[Ô‰tà ±v9|*î¢..¿SOT@=½E]×=tuu}àÉUUwÏL&“ôT&Ä N”dÝU_}ý¯ÿWU_}_¡¯ ZÕá{ˆâª{оÀÑGuc !«ÓI¹ÛûAÄgc`ÚÖô\Z>?‡Á`,vï ¿¡„E^ÆœãLYSdÙÐ4ȧ³¦j)º¥+¼döqƒ¸aÀç+¿‡<âQ!7G`‡ƒ;êìîë×Li).Ó®Tj¦ëŒ8Ä)#J‚L†Ð]‘ê+BJ‰ž|ªË¬¡©‚ÊKºx]€· ƒwé¬j:RýåïŽT+a?B5¤Ò©™©³QcNS‚1án õ¯¤´Àɤ†Ž†/:YS²8AW,ËäeÓ0¨éz¡ƒÔ_þî 1¼_¥ŸaZÆäVT·bHX8? Ó=* ×… ¨cEaQ˜ú¿’÷D¶xKdéþRÑwZPæÓddTS†¦ Ñd˜…¬!qª¬ 2ú7`Á'üåïÞpxó4šiÀ;5†q‚€ ^3Æ»þÓã“3ùà“× ÙE ¢9'P8Õ Ó9‹ÃçCXfÁãÓ_þîø4ðºâ”NÏ4­#á)8E'âS­ݩÔ_z¨ÒÂ'/÷’ÆK†,³º$©¦®ò&Ï2UYÍP$¹Ð¡ê/6*.mGŸ‚Dk¿(ÒWp~¦Ó?ÇâV¢‚MÖBƒåéÉþ’Ð#™]ù Y”,odªLàYµ$‹•SåUƒ¤BG²¿ü="9™ÅøP!ÙM…Ó+’éôO‹d†@ÙI'Ö‚ý% G0-ªòZè—tM¦ sª$•UdZ ÂZP•V,tûËßÁ-Ðy×ïðÅ®ƒH~¼Ò\fxtös`¢ûdH’|N2uíþÒÐwZXæÓ4•cuKš¡©h d¢!aK5NÓ,rHGAwù»tŒ~Zòîy1¢ÌeëœèšNÓ´¸u’lY]FÊY ë/=dia”×dOQEKâl˜¦ÎK’†W?DÍ0!«­ð'{¾òw¬ÝߥfЩ›Ê'G‡[Aú0ó£ÄR^T«²¦)¨ h²:ª,0 YÞ´$¡ð©ÖWþnTK;ãËjs™ãÑišzˆ€gu9R­¯ } ZJå5Å“yNVDCE‘5 Ñ”U“!£šÅ‰jÁOñ|åïFµý Yʵ :uÓR-nýéÃÄŽKyí£c-Y‚–ÊIã˜xC€h0¢H¼Yð;ù»Q-NîÑ_¸¥JûàŠÌʬÂJ¬tN1y ¬¡[–¤ˆ ¦cŒœªš<9K±Ä~=‚îAÒ29– Çá/} Ei>=¬*BÅâ5ž5T©p²@7U]rÁ÷ù»1ù ë¹tºçHk"(:„¿ ô‚¤y­ýÉŠb¨Š¬ó¼iȺ(‰Ô°³Oeaá›ù»tÊÝqù¬ÏQ)¶Ï›â¼]Ëq¾•÷a9Ž)´šKҢΠ¶­áÞ'Z›–g’‹ ÉÌ„NÆ­P4Bö(÷˜Ê §šHö43 =ÑJR2Õ5äuUzYešÕ3¢±N‚s†gYŽ™×žXÁÌo‡á0Œ§i}á±ôô ¨²l$_Mj¡I?šND§â?í ô{Å4ô«Ý†èwÜF¿‚¶…GÐ/˜˜Téí5·@؆•ªÑM+¦9É ÝÔhfÈŽ…AçTÆI‰VŒDíØ´¶ ›9'M£¹ÞFinˆ@7ʼn¤‰sJw×)–ÂÑè¼#6Lª´ §ªôò7¢—x3 cG­DˆÃJ¦3ÚÎH–8Db$â!½!>”`@ĬˆÆ™¶¨‰w1£Ú#8û"öË$`¼ÍƬßÌ©kfæAUïæb 3õí:z8Œ+l&†?±[,ø.²‰¯Ñ‚™E…“ÇXÉÀú>Î,ƒq·‹÷êqK+cP“AËg¢S° Ρ˜¼/˜«¶zTSJ¦çjÆpæOT9RGG(ftˆ‹²ÚÃe º’9»¶iî‚æ&¦¦nsvMCCM]Ó¢Jt%‚8ú.ƒN9¡¶X8„ŠEmƒH¢7qþ¬†sÑõîad¸•³k›êf562³405L}MCSíŒæy5 L}sCý‚ÆYA¦ÂŸEeg…"œ^?‹NlÔŽ°É´‚eáÅ€¡eïO3P§¥€C8i!Jq²¨º:¯Äç E¢‰2¦#Ž ¦·×­' ”1µ#XÆHºD–†Ñ3jÄQ³C*|v8—1Ó£v_>¿†ayŽcË9Ksc “®'AKœçc03ݬ… õ²GÙä°<Ã<Ò9Ó(Lèöi,Žìr*ÿcf4Š“¸µ$yÈ'ɦš:󳋥p®uOFéî¤ðR²¦ß]=9ˇɃñÝisNêÌÃ̧ª^ªqO¾€mÕŽ7½(ËØM%ë« RÞRØ9¡:[ƒsk¯»:H+»³°Ž^d»ÑOþ¬âNé± ÝïH¯ #ÏnèÈñ%%U±\œ=U±.4BÚl;R_CDÍv’JJ2Qì]_â5;»þœçî6 0Ó¶€§rz/ÃѲŒX4„sÙa¶dݬ”éh ­½»Gˆ(u£[KRŒÃ$%.•Ī ""tŸ¼ÑcG÷Ü4ÄU)Ù˰MŒ{Y9ƒ™ºô(Ù¦8:m ¯S ^^?ÆãˆéqÌQ:½9B¹5ØLîù"½ƒeÖä5ƒó‰à̪$K°,ݰ,wèÅ ÎÄ}¹ h|ò”-Ã4xMd žÓ ¯-]`eÍ’-¨tIø4uªçšr4U’‘y¶:ö_Â.0:&k§E:>Ôtì,¾6:öYXDtìè¿tœº‘’Ž=Ýé¸:y ±#¯š¬ÅJ²¬‹ŠŒÊF#g•S Áä3èØs_ytœÖ42Ûë­uNJÅ´32UUeuÞ€ÐT5(hš ˜' ¨¬¥r²@–š’7;ÛÌÐÄ=šÉSzoµW³s¬AªF…‚ DÀóº¢+4J*')†*«@sކto ÊzhLPkïf‚ÈÚlÑål‚ƉE«Ç)1Ø,œ_`Y8GÿÙ-\êÙ2Ë@h˜‰FÊárt->”_‡´ÙBx i"©›Šrì]±Û dŽm«Sî”æ2 qÄt}Ôd§~Vøø4·“ÖpEÌd¸Z‚9€Ò }A¶oJÐa¥ãn3Ý“Lz 4 REÕÂ$Í@á¿Ò[ñ"“ ÍŠ“¸ôÁkÄ“D:Åß÷Åõè^†'÷y fÇ©’l”Ë^³Ü)NŸé«)kᘾòŸóÑÎŒ*ºÌJ¬®‹ºf šbiUxI0xEáX+}FÚÑôÚh-‡¼M…Æhd‹N‘Ðz ´ž€ &.Ãm°»4‚ŒÀmïœÒ›B„­‘ÐfðÉÌ©ïíÁbH–c ]”5A…À`YM@£Á Q¯–ÁÞПë±eÙ€pra;\ú“ƒ q *‡@öBãzoÖR\…êË*T×ýï¹íÀÌKgôið-žåšc-šE2VÌðRˆë—qV^ú¾üæØ|âÙIjŒrRÕÅ3…Ët„Ow»·¦}'&f‡ÞL穱ÐÌ4NÎYœ’õDÙY²}¦ÙX#q£Õu˜»ÍÀkÌIß‚M:p誶®Î ÑAb#"˜='…³®žtbD0ÀJ8±LýŸ£Þó7ôšË½·Lö€¸ ‰ÿð‚3ˆ+!Gwã6Ûí±XØ-;-#à4`(ª.ð2Ô¡ÈAŠ¢È4›SRG#V¨…Ì} †ÒEµÓsˆ‘БXBxq fF™Ô ʼn*¹!M^œ"š£-ês!ĉ‹ï³w)Ë̯ÜK½K’-4ÀV9«œ(4…àSV!àYSRµ4ËÓ\wfÝ‚³ë×/hh*Üž(=LhO‘ž{¤O.Û†Mg†ûäÄ“+M“ù ®Çe“]_‘¨ËÝΖ)w‘…#ɳ!ºnAtl“`2¨?ãx!-#ôߎ"+én6Cm áï=áÐRÈ ðÔÒ ß%Û0°ÇyÓ…I`“Om}LºšO•}L>˜O•}Ì’Õ[•‡ƒx ü¿…ù0ðóõ,´!^Ÿû¶‚…»¨Üë2æ·1ðÉ»å äÅ)‡l„IN*˜ë6x§™¶ÛNg4“Üñì$5Âã•Ùóî¬}zÎQ›™œ6›Â´Ûxõ!9¯,µ—½ÛJog™ vŸaqa4Ë&ÿôtD´±ý½Wc@©5•ØðÛ«íBªÓ5˜[‘Ë¶Ž‡MÁB+26W¦6NºE˜§qæ1·-v)ÕÝkéy쾋ìU8‘(þ'%ÍØÅjEoK¯œÛx8çQsrõx\ž 5¤¬Ü²§}—è¼°7°ŒáÈá܇3ÅdoE?Pï†ã°Íø–“á ð% ‡_ž·¢á(” ¤‚19œQ`†£˜¢­ðR´þ Úçm>9ÙZM›-i’üR±MR¡x/ Æ$!K %…5X‰7$5Uã9“c‘JMNÀ·;—I ÃK“¦© Ú6h‹1´…ÊÇ8å3Êw«ÅôFB€Œ×d¼I);Lñ’±0±ê®9­\âtÃN¼»Éù"ø¬‹d¦#Bnyè#|,I¤ÅN]èR‰Œ¥Þñ*™ôáÕé¥ È½N%ÕÂÐDªyCREŽÕYj<Ï*€å¡i¢Þ¡aW‘ÊŠ\Ò‡HìGZˆ!~ÄÀÀãO )ù±hÑŒ#UFZ ºîÆ ˜9+Ùž2\<Ò º7e"µ+u"rBÎÉ16 [Á2RI,º0Ä>—äÓŽ’X›œ, ×#‡ËBÑv›IõÆì\ßçèD ™œÂ¢`p¢&H–YËPMCxIâ,£ç‡•ž6¾¼eгšÙLyy—ÏQ¿+w¿s¾ÂÚ €QbÅðkòF#`Y9æß ^Ñä½SdÈ$HA0ñz\"Å¡Çäj<)=ö°û´Ã¡´²`öp¨šŠ/–UC4ÑT ªPf5È‚b±²*p]05wxÑg#ŸÂ¡jªªt^¼)iºÁjh.£‰zDE•4Á°ŸªêÝLâgžíû ‘¬(S‡Î“Ãgdâ#ƒÎ5Þ™_­‰DljEEGGGÐŒ.ïl‘`4ÞRA6Lºµ:7„ÚZ2Jeì¸ÔãÞ‹´àõÉO&TÊpA5ȱŒ'_UE{8 —zÔìÄqUÕ%âÏ øI½ÄB'YG°Æb4b3ÂÁ6£­ƒE?²(⿜"±ä=ç¼'?¢¨8^æ$Ž9I «–0ƒJ‘n[’ÉOzžÄd0^Eæ{÷ÍiE©@^8àÜÓó+ñãÍ—[A G6ÜäGY\¿uIÍÈÀ¶ûk D¿Y¹J ̽áåkÇ\|Æþ§??rÄ鋟öêKï¿âž!ÛÚai òÁE³Þ±½óÞô»ïxê›í7m°÷üÓ'F?±çš+FìøÕ‰·þrÛ¢ç. 0ãç<÷ÔIËv^ùØK»øÙ1]³z×ìÇ+/w~ÜyŸq¼²ÿ‘;e¯yë“ÿZþþã+ë­w6¼ºè"ñ–—~;måWï}ú1ÿú×»n:áã¯Þ­»¦võÓÏ]füééÇOݰ©ùê‡j7·1~ýé÷n~wë®goÿú÷Õ~tù7 íÙS¶õÇ,xoá¬ÒÏšÿ}çê?ý`âú×®ú·ÄÇN Ÿø¢þ`|n€QϹçèßÜjžó@üýë÷]¨½|h ºõ¤/šÎ½¶,qß’‘üð±³k–Ÿ0ý‚ÕÅaÕa1þKÚVwè×WcÐ;ÿsh(§ÿÐ眬ðr‘ÿ¿%þýû1áÿGÏ=ý9J?sÎÌÀAüßOÜ{C püëÄ"ܶÿÍ‹ê›àÉÃþúQÉð«~pÓ«‡ÿꆿ-¹qãƒÚ„­žs⢭«öλzJé¯_w£~î®mÇœ°ðnñŠ}Ëw|¼ð_o\x÷¼5#— ¿kùŒw'¼öÖ+÷­{žÙühÕ>6 ýgçú–¿ð?øpÏéÃÖÌúìÐWvü×÷ØÓ† »ùèµGî¼üÙ!ÖôÍmOþqï–¥ÿòäÅÚèÑ£ËÎ:ÞX±g÷î·7\W½ú‘GyuÅí;N¿è„Q£FýP°v ¥k¹}uë«Ö¼øbý¾!—è¯Ü×ÜvÞ÷Ó*;?ÙøßŸ]<Â)r_@¸ëÂU·¼X6úíU«gVWîÜ´iÄÉ?þú×›¸½¿«Z¿åÕ•~ݺ¶E·~|ÅŽ¶¿|ðÁºuëkg_¶æû“ôÏ>xerEÅM·´´»~qVÛY??ë½Û®ï%¾¡#o*^|þ¶¿=´ñÕ¿{Ãöè“OŽ»cåßGMŸ1ãÆŽ]ûò½ –>a:ôí·7köiÓ§OGÕ¯Ú»÷œÐë'Î9jÔšuëFž451÷œÅ—½óŽyùO~2¾ªê¤;vüâþûŸÙõËÆ!ÈÉåÿÏÞw6UuвDPT¤„"PJÇÛ£-E ìE6åÍ64MJ’Næ(e (‚Š€ ”!KCAö‚€@…P(ü÷æ%mRÚ¾ä¥ÍÿÿgÅŽ—{Ï»÷œ{æ=÷ܰä¯Ãr|ßEßøm(ùa§ÆW,œr÷êÁŠº[ç¾­Y¥J•ã§NUm1ãÊ3Ï<“òøQfl»vA4]7//ïøö‘[rÿ¬ß ÁŒùó_Ó½Ù­[ yÿüwþº´·Qdäk-ŸâÕøÑùë³Ãük×®Mœ2eוý –åÅú»q@Õªïøáøï¿­óòËW¬Þ>óŸ[g¶Ô½uëV؆Jc<Èx¶råN—oͨ±5çDË+¬eiÎÝ_š6jTÑze_«'óߟ7oÒ’%AÆÓ›juìØñ‡ƒÛwê ²>ù\{¾´I½·2þÛ³ççþóÇ‚ 1ïÞ›1pmÅr¸Ð›^X´hQNNÎŽSæoW–ÏnÍ̹sgl§e­|}z`‹ä1##ÿ¼yóÂíÛ3&O0ä-ì]3dç3YYß>\»êË¡;À“Ü£¿ôžž~íÕ´Ûg·uèØ±U—.ÕÆì­ˆòãáX›4©\¡B…?-«Z#0zâ;Uë.é³zpåqsñ„£þþ½®nLëOÞ„F¯×¯_«Nñ¹¹¶qÂO\ⓤœ¸µËúé§ó.4 £·=ÿùçŸÛÎ:Uo£éÌÌÙ³:5³7jíòSÍ7¦žÊŽO:yåòe}Æ*V©ËóAY¹ü§ýŒÀOÀ";ØâþG¿ÜeRÎÉ]yíÆæ-¶dffvÌ _ ü*¯ï¨ôʵÆÄÊÍŤ€E£gîûˆ­ÿðþ±å]o5¸õÊÉ––k¤\Ô¢g¯^ÏÌêTI÷àáíoSOÖ©[÷ÓøoGéÆ lÚ´©Ã©j];,:m@¯^KŽümÉ':të¶gòKÍ‘Œœ!ËžX—ð×OÍW?×rÆóµ› ùnü󑉓ï~š:lØÎÍ©7–ÆOÿé§N§·¬ðÎ3÷oÙuq÷”ZuëNìT!éèÊÓëG-Ý^½zõ5_>èœb­rÿù^¸´gZ0áÉS¦ôìßòo¿Å-¤&Mš´iT~äWƒ·MîÞ2¿Ž°w:i2D?sæÌ½z9óÅ776ä­X¹’89{âšÌ»2`¥'N¼Ú¶mÛC7÷6ý=XŽ!¢» iö]úÙgK²³ëŒÎÏ«;;"~ºyûß•ukÒnöqÿLú¦ôÛ·În›0Ý1PpØ¿4ŒëÓ'©þí‡mUj¼Ž,·¾—_-Zú©N\\œž¢^,Ó¬ðÁ[¿8reý±Á»-ëÜsРi;v¼ÙeµÿM¿þúk‡®]w?úûn…èQU-=7á7–.[¶óÌ™3CNݹcùpöì ÆÛf¾3~ñâŹk›Ü‰îöÃe¿k8üwã誉ӦµíÚµz»é¯7«iïîÝ YöÕ¿þú ¬ïïîüþó²Q€{vΰ&éXø¾t͇÷nŽu70ÊàÛ+ZèAëÝ—úµ¬±æÕü«-óÏ_<´ÿü½À›ÿº0nÞ°1û¿iÒõµw,LmyúëuëþÓ¯FQ[Þ?éþgóÞ¿uüÉ“Y óRS«?÷ü…]U¬—t N¼×pä/Ÿw¯¹0/0ðÉwçwŽ íñ~ê%ÝÆ Óöt¿ñA娨z]=š\©ùÚÁ¯Ÿ§^ŒérãðÄÍ›+?º=ºMXß÷ó.‚–fsãÊÕ-Z¢ûxÌj³¹Ú+ç‡^[»òÅ*›¦ÅÆ>عç³ÚÆä(îÐRnvøÞ¡ÃÆœêÐ÷xçÄÄÄØ6mµný ç“ýïU›òrXnžböë{S¦ì¹˜š}õÔ’¶S.Ǿ'êÖoàÀ©µµò×ÅÝ–w¿î_3ð·gt›Ó‹:ü¼z=êãM›ú}eíê*·^3((èr]‘ïÛ×儃º“´v“3í÷vÏžµÎŽ¸ÛµŸ=!³omî™GÙvZöcrÒСˆùltîµÃU80qêÔØ~ýæe·hÞ¼jÆ £¡ý€Ä®#¯ˆy¶[¯Nÿ1¹nÄੵ›vÓƒ&ß>yµ9íæä¹s_±ë|ÄtzÓ†àÃÁÖŸ†e³n¦õå7‚‚Æ‚ñu1ÅйóìÐOoËz¿ÿªÏF>¼×óð‹º_ç?üñر9@éï_5çË+–%Å{ù÷ßÛvZ6sƒù\xÞŠ/¿\ò÷Ý«¬XÑü›o¾ùul¥ª_lÞ<ĈÏé¾Ù¼ùЬæ}ú;Ç.íµ]_»`aÔåË—cccÚ šÖ®Ñ£èùIËά¨«•6uëÖ­K× ízo›t÷ӣ؅ì˜O&%æþñ«íï;RHpðÇÃ.í¹öè|ÅŠ¯Ig»ð]¥;wï~Ú{ÅÛOã¢í¬Y³²‡ß7YÒÒfÿ³ªï×cåç7kÙr1hóã¹s‹ßþj`³¼¤/—mxçwâz÷n¼~ÿO?-ùøc}PÐɯ…*7OóÖƒLâX¯U{®?°dêÔjY`)tùÙ á;†®ŸdlpXü¦”VW«,þàƒFa‹£Ò§ÿsÿvDò ÃjÕ" "1ï­åq‘—¨›Çâ:'/VÔ²¥KßèµâfPP@ÍšŸoI¿ÐrÆ•þ_éÛ¢ëÆÔ‰º(†IlƒÁ€I-0­^¹ò `P§oŸj ¬…Ô=É'W/Ÿ}òÅZ ™acGŒÙ,2r~§Î'MübÉ’±cÇ{gñÞ£«,›óð® õV°ëׯϺʅXŸ}0oû¤»¹¹ß/ý¸YXÝ—_¾žýãÁƒsn]ýý÷OÒoŸ=´ö“gÝ¿µŠ4µjõŸ·[¾uJ–$îŸÜk@[´ÍÊŠ<}ú´N7¡fƒv=z¼—s7ãÆªoÎXœs¸{ËWá[ÒÒnž²åÇŽ£“F{{õட¶ŸñÙ£G#BBC—‹=èê¼$`Õ~8gN{°(ˆR²žäß_–Ü•4 è9H‹€€€/>þx ÐúfÍ™S/ùÔñãbbb²Mg"7Û®Í<& ´ð;‹'Ä„ºrÑ•KĪƒu¾«ß::+wâËaýcÁ ¬\ãõýúõûmÕ€£'WHŠçòÍ›]Á¼ ¬?›7ô¥³â7_~9üõã‘#³´þlXñšÅfû-ëþW«oN«GW¼.rÔ£ŒsákNöj±oÒàÅÍÆWÍÙ>òáÀe8d<8pyÜ—£'¿lξ¾?GO °"eï`Ž@½Ø¯ß«:uZcµ¡:0âÀ¿Fí¦¾w´ækD‡ÍñqqÏ;yù `ˆMž<ùÍX&+7Øbµ^¸tiðÛVM‰Ÿ4/~ïÕ *èþømù®'?dÛlãþXõYŸþy·ÎÔ«T©R¯-ÀøytGpàæÍÛcÐÚø±mÛ¦ÅÇ?yp£òåÇU?îúmCÞ&UõÎsÂw©–ìº!¿ŸÔ¡Cnß\´büˆ¿*™În´€6/Y»¶×õ«—/¸vÚ›'ׇÅì𲇧6$'-˜Ô·Q绲ÛïOJîÞ½ûý ê±,Û ·EFΘ‰kÔŒ­X¹š~øðá¯aâs#÷ôú6lÀ†3[|Œä¬'¦[“®ô±£G?/ÁÚz‡­{%fÖ¾ÈèRl†µÛ—ý°gOeàæŽX´¨Åz°V~¾q£ËéõIÇR€SÙ¯Òšéû¬yöìÙîgâßóê:"¦r!c…ž|×Oèå'c¿ú~æ=oÿÐû_ÿIÙeÃW$ËwÿAÄ%þgßÿ¡ˆã~ù"%ŠÅI‘dT¢8Bà9– Q@q‚)Bø—CþwãÿéÞ½Â$Æ[Í©AÉ*kþG1|¹ìÿ¢0ÿ£ÿåÿä4ŒíÞ&®_¶zH\}Þ­»tl£ ‹ˆèƒ·‰ˆˆ‹Õ÷í×µ‹ Gôq0ÇÖÓý8cDDÛnAz׬³tÜžp×+"ÂBagǯa6—žá¢M„¹öf$MÖÅ€Aɤô¶·•8˜æ™,Ù8=l& K5¤ÙK¢Ã<Ç0x!È™Ù"È&eØ”ÎQ0uÖ*ÙZôŽkÆØ3:žÒ7¬w«°6æäÎfà®p:¶mÁöQr\” <˜€^Ð.VI”sdÈÙ{ØQ\òõöz¥®ŒÞQzM\Ø ™¾UŽ‘ú"™+& OÔ¿eçA};ƒ«°Cˆ6LI޼Ç[ë5Ho‘Œð@¦Q²&J’-È~¬ÂØÏ*X )6×O†riœòÔ‘8tXªdÉ  ó}#”O<ë(fšù·Ö¢½]ÆkâÒ`i™Ù"Y Y’†!;¯ÓÞÛ«ž0ƒò`Ñ,¤&ƒ%Ô,ÜVxf0,ÏÒ Næ77‹²·I7˜Dsz³pX1*X™aÉhŸZg&§G¨ÕÛ³œ æHât¦ÛÌ)AΤb½ÉlÀ’ÍiŽ›@£P˜-Sãf«’"íxuC÷ôbûr…¹]—â’ÑhMáƒ)¡Edÿ;…EÇß=Ñ6e40q\oŸö‰GêI*%#*HI8í¯H±˜‡‚EÇ ¦ gsÀ0£$ƒNH8)%+½ôCsôs3óŽ]!$ÇÁ 0“@û©A1X8Î2•+ù²zç¹GN;øáL u;S¡doè!…Ür·á®éÀzw)äLÈvIñ¶˜ÓÑ‚ o(/œ)Á©F—§0¹ð Lzv¦»æÛ'Ó•3˜ôà$Ç4Ý“˜‹ÀHí¬n0zIöc…`¬žÀáL`=Â~n°b+€Þ*¸²dhÎI;ŽYB‡%1ÝG ånñ ”¾€[=©2$Òã!ñ€~e0$JeH”ÔÓ*@iÏQoŒ©¢¤ob´Eë§²ž** —s†Ëš-j·;„Û‹>4Ið¼B£2'F ¢X ¬kTY¢BŠ1Õ ÿ÷jv8Rú@p¤ä$I™éf p r%‹ÉÑPïÖF9 D<°iš K5Û¢Ú(?œ†{8Ta£ã qYïD”kCÁœ¬H®ˆWœêC"ŠkíÖ;Äc*³Á4,+¼4ÑWÈEöž¥ þFœÀŠF¢,+ <Šp. I‰•H×·9cª¤Ó°J¶f‘öÖ…ö Ó¤ß0Í %R(¬…Ê MH2°ÆxaœHð™B ò)R ¢TáYÃißÃé‹öéØ-¶{¥r’³`3}°'{n»Êmn¡¾o~¨iߣskÕQtÝñ·Ò½™§ÄW‰ÓZ¶Âh•.«R_©ì H÷B‹F XÃ4Ë&’"…£ˆ$S£ SA¦eUã*@ý⟓ &±… "Šð|ŸÇd¢U0êcˆE)†³ÃÊ¢ÀP(CÍœÌÉàýÍÑE¾1âFŒ2Z>«Ô/#’ÈP,.p,ű"CÓ Ð40*Mp_å§lVƒ'#5ă(„§BUlBÔ/6!À#ÑÉJ…,…0 Xí,NшD‰ŒX—Î KÇ¥?¶ùCàPØ– ‘Çq|3}±}$`ñGó1±°¤¨ýF€Èè>F_´¼l$,ƒbï^ÈW/P>È×V¶ DÜÇ™ŒRÔ ‰’¤çÍ>sÐJõȵ&üj ˆÁ`Wú§ûxp†ºaîÉãL^¶ÚköJ cÉ R¸/d"qXÀM+Ô½MtÒèœxJ&G—â}˜’™Þ8 7(p°L"gÕó’drZô>Ò‚¥VZ¨çðj¢…©ÁÞ°ŽK×8ö1ˆ¡Å'LzÈGöÆ€€¶D þ3»’ÔG R0/¦ÜÔŽz¡òQ;šj•¬ñxEà(D;ºÕ])MØôÅCó†[œýJa•BÍCÞp¶×[áÝå¡m —¬YÛ¨&±kÓ6¾æÆk’q°s ¤³G6õoì©ée%ï 0å[™Ê<ÜS[ýh“&šú~bJQí½= ª£ì@‘ÕÍñ½ìY–„…]´’W½Œˆ&òj¯NR*Yƒ‹¯gÔÌAQX\Äd¡ú‚ò!ú’)WPI¹óÅ¢—Í}ëT›­Àïµú¨i_œ-ÕŒmΖÖD O9¯ SñòJ…D{òƒò«’Ú ü^¸k]J`ÂfÕ[Í@XÚ›³Àkl’ÅZLFÃÄ­T/Æ¡‰€Zj|xJ;ØÞKÿ«èbÕse‰u{üQ³ù¨z‚^›ùèÓÁ|]`·ž^R¢ ì종„òÐ;0’¯•8êûJšˆãËv•WbMݶW7í•€…-ˆ;—…ÁZÐÕW[õÀùr¯Ýï¸B®4Ü[&,¾°N˜–1;¯UˆÄHÊÛ1+È÷~ä¥ßóâæ}0¸ÕOjjâ ­@½òxAм(g5=õyAÛr_‹•_$¨œ=Ågc—L¢§[—$Š\b×9d3ëy ?€,²ù7MŒ$}a«§hóP´g—x£(J e+z™k⥚(ãÈ6Æø ÌÕÓ*µ‰,ÍÙšžR¨°—1GjZ‰tj%ŠÐüUš9/¸,KÄ—Xªzu8M$ÒTtÎSêØ;xiúÆJ¿Ñ/•%`ýzØ j»__ÆdAi/"¦…×Jzb¯¨]Fé~ e)Qs ¼Tnê;/¦- ohq´Tó_µ9ZšÓj½ –ÂþŠ|vK±u•ª"¡hDÐ.Hîp} ¬Ò[½œ¬¶ð’÷Uj=¥hüÔ^½RyV=ˆ«ê<Û- ÈÁ[Ê&þΖ疣úJå³å¨íꦱÞÇ`ÍN|ëãà-ÐGZ…9ÅXÈI+R’ËI™Ž6½5ÑœjõFC’dÌ„ÍlœÁ¤ON5Ú  «¾pááá¾™±>ÄÕ7k¢“ÖSÓÞˆHØÇûH9!í¡,„m-É )9Þœj+»í.”õÁûV/É£‰LÚ+ýxC(¥—g¸£0‡äRZC±Lã»í‹c¨ZT›c¨µä¨×’¥®…G}߆,°9 Á:Ý}…´¾Æ‚ ö Õ ùhSaZëyCH{§ +9KyH-{ãrv8áK¬^­ÈÆX½¶ÚAÞ„_¼HâPÙh„)óÌ ŒDÊÓ4T½ÿ©œLC ÷N•ˆü®’)µ Ú ÀYõö;ÅšùššæƒY®~èU›ÏäËYZo·í}ÙY´(½vÆ®P¯Ÿ¥‰2ZËry£K<V*Òª}ùI+ÜŽQ¿—C[n ÷×}xJïƒM~>úV¿ÍA›^×vI„§dqtñâ2‰éÕCU4iÆîËÔÍ!XªÕ¼úu壿µ\WrÜÆÜçHƒ)¡ŒRϽˆÖ(ùÞ†åŠFåÉ ¥N¸crŠÑ.+ Moæ‡JL Ü žCZK{c­xz4ÒQ¨ØCË¿¼=âE«—(4 ÓË.ÁîX‡…Ÿ<¶3 ÍÇ®ÍÁ ÃŸ)Á‡Vg;3°¥ UåøŽÒßÄ¥…¥p¶Ä çÈÁûß HX¶Àª7I’3ÀQIMyE¢Í–‘žž.š32$S¸Ù’a0‰R†ãmJCrB¨z«EhpôJ1%é9£­àIP„½ô” gÂQDï_tDtÁZáÍb&ü _ ûÿøËhàtãR vÜF<­ã³ÑŸ`áRÓEÒ»w ´æø¥IÄþ7ªü­|ˆÅ(”DQ%qLBŠÐéÿ«é˜JÁÏÿ’/ã9œ%qš$xž—p$J–„aQÝ¿_ºÿMþ—2 r|áдà1 [/­Ç¦lÓÙáÜÊ=ܽ%wjCòÀˆq}+Ä,žÑ'~äKmÞ­v!«™ޤtœ8(*#G?=°ÅäãªX·Õùîk<áÀ9”×,ÝÛS×ßÒôý9G?þà†ôÂôý è7Û_8gI`ŠËhm¼­ø¡sQÁ4ü›¨À)ÍCfÜ8ºjËê‡kÞ½Ú ~ȯrtºöý¥-ä½™{\˜qæ¯Ôõýèä“ãYë•!'³ w÷Ó=ããŽzrùÇ^!‡Æ¥‡ÞݰùN¦ým}›;†ù×iëÁaÛÆ×X~äzÔö[Œš8¥näËÞþ\wðüÅ‹c§Õ£×ž;øÃ;Öp»6 ó6™up„ñ}ç`'Ý[6kïŒ{ý}µ^é²õÉ㇉ÉÉïtû|×Þ£§¶|ü׌ŒëË?ÏyxûÛsq›³þÉ5DççžËZ›ÀÑnØ@Ý{Ø~FàîÓßXaï×#mó³’’šo0™ÜoÌÝûóÄñÍ©ÍOž<‰Œ~uu\QfyUW¢¿s1nÿO1Ìù•–2^X½$ż»»“ÑÐpWO“™»°çååÝÛ܇£ö/**ê¸OHP;*r9Yû”¯^÷ LIGðKê©!*…Ï9± a¼è«ÉDæß¼:jC'Iè•UV¼\pAÇ¢joÂ*q:Õ‹Kûõ v¶Ê¢iÛ>‰ÍÂ_í½ˆ¬,æ‚Ç£›D"ýre‹ýž²été“õõuJ:º.0Ç4æ“ss®³»xa®gÃ"‰,&¯¸yxdUTz¸ìv^¹}¼à5=ÿ·È¸¨>¾…ö´æ“~_óÉzïðÜ\¨Õj§öÁ\ ÄÌQýÕJ²ŸãÃõ&IL79›^Ï‹ú›¼jû}¼ÎpŠǕʈó19iíÛ‹}Çíß ÄÌHÆ*—µ(‘ÈØX_ÇÛE$”úu»ÝÝ]YYY/³ÙJ(Žºäs½²¬4}!ò¸³Jr%ð95›ü™Ö·)ÆÌÖ Hÿ°btt´7™Hø’:ïVe×Õýå"&.îÓ(QxHdïºã~Åd1(H&F÷+~R'¢*F‹îú“jÑOŸþ‹9³áã ^ãU¯µ} RØÍ'7/¯ÄíÖ>%xWož|ôŸ9÷‡ýU·åZ-°Õ55ËÝ©í6ƒ<ˆèèè4jÕ‘÷gÛ£jóÉe ÿÖ„Yö¿5á¶3š…®X¨æÔ{H§^[ލds¸·þïPãÏÀˆü/žeû ÿ‹âž½é2Äž œžžH¢?1}Öß÷Ì~x›ý÷íŠ!tÍû³˜88HÇ»ã. Ì¿Wª!.‡û÷*̬¬¥ËøîË9‚Bÿ¿ß2G÷/…æÿ‘“æyXP x›½aËIh0ô/ OU[‘©¨ªÂ@°é4ÚËyC>Å/çd¥´âàƒ4O¨Ô–^ZíϰH¤pã*iìŸÙò\€B§{óöí£¿Ú€¿¨cð/ÿ—¦z<4äy¹èA,—)±ýbARM`ye&êÏjådAž‰°‚Yn^ÒOù\Yõù@0g •ccÌË}ß`啨Ò2319“½’ÓÓ!G—lqÍ7WÕ$¯›áxyÝ–7 ·Ádbàl=URÊ:p­ýKÿµtr*DÈB<±=”qƱñ?3ÚϤs˜ŸXL~Ë4áäD^ÚŸÇ&Bäp£ww%?¦æ…¢¢¶f'§Wä>KM™A.Û±¤µºÂ ;°‡gf‚£ÈDt† A<Á|k¥~~þbä {W^btž3Œpï"ç?+¼\uóþ¨øS(§B „F£‡3M·3´€Ùeé‹*"]QãÑÉNÈÖÖ¬¦RúpiÝvb²Ý×>2²<@3%]QÒîd©yÛº-ARô²ÞV.d”§PÝ ýoº1U4¡HHE?óÄ„­µ²´”së.™]h.($—›;6ɧâ®!7úUvwgÇ·ùƒôÕu&úÞ&Æ’Ó}:âÝÝ&˜ 6¶M)¢dhyÍýc(Ö¡€~_$`d„ºv¢r‘š£VþÊø<ì¹011_¤hýP“Çkr‰@Ý^¡·ÏéÎ×¾¡™™™Ó’&pÔ‰oaÙðƒ¨S@!î˜×ðð‰I™×Keu3++íÉUiiOââŒxäYÕ oîZý>gË'Xì(lîíYºQÌ÷smõñ]^bÈ<…~È?f9RŠ…ÕXFQy\L܄֌> >`KÑ7‚–Ål`ôèµù_¿yn‰ƒ F[$<µ{`´¨Þ —I_kèçG5º¬€§Ç©”Çë E$ÜsèOŸ>oo‡ÍÉ ñAðkLÞ}²À€Ž®äèXMJNþst×îÕØú†âJÕâ e6”½!O 1E”nr"S@ÈO/Ȍխ~Cyù+‰.dðI_ÿï=]¡Az‹þ7¯©Ä%WÍ>èè6>>¸&´D Ó¨Q¶¥­F%4¯÷®_]o€B‚x{scbS›š¾#‚EFÓ7™™¿`$Ó…›Ý¤q¢‘K5º9=ýòj;ËT^EÞîýûp6IW=^täÁžˆà"ï)@?üµq:—‰$ˆÍgšºÞ•á°¬Q¢‰‰‰8]º!GUADŸÃÂðÔꕃm6ƒ­\Ÿžœ T5an¿E9:·ü•ÈÖ±Á5 °ˆƒ’éYpé@¬Oàw==—¤åÓX_/öƒOÓ»Ì Äj™ÿi¡†B«=?Í_mŒ GCãçßíß«ù©Â<åñZÜ%óÆÓ‹‹‘¿€œP;Ë`_õÀˆŸŸþW:!m­û—¯—o¿A5óÜ®ÎLÆ@ãÆ˜èŽ:ÎX­VÞe…*ä!rKó[“ì~¯¦Oƒ™3)ÀçBØ_ÖÞ\^~LÞxã~JžŠ¿¸¦®îé±0€©Ž,€)·dªø›VìâŠ,E“Èo_‚ÏÎøÿ|Õûó‡’ßÍ홚z26Eg¶ì°ã²_ éó––ˆgl¬Ä‹–õ–:6„Oƒž~CP¦©D…?õá=˜¢®p½åÕï-ߺºg7—è_o{Þ¾¥·ü ïvsÖ8bz:29 4=\8]/‹¤êPúrÖÂI† ÿçg–R.[BÂ'G½RÂæš7x ~J¦ž¡¡9°½û¥ê§ÿPµâÏœœ uôJã‹R5Þx›óíUßHŒÑHŸjvri¢À%-:_ß«×ìSø))…|1…飸22?ù……1ñ«Õr}‡ }EßøÊãyý§ !ùèÝâ#P`û¶„Ð;¹ÄQ³ïS«½ÉïßUd•³K)uï7’l@yù|h\é@°î+¬’!FKõ³³´²úê"¶ f’‡‡úŠk+qHŠÜÚß[RòqR¾á«(¥«ëÜÁ•»ÜçÏÅ6›R(DÜWá…ôHC#+hlU7.nT„µöý/ß¿§ÝêAòñBçmÚu™³›¼·βñÔ8„ô﹆ÌVU^øååáqktT ühÉUÈ‹ŒŽ¶æoÐÝhur[ÛP,%)•™Bd`€1Õ¬Ù2Ä|Ž%°´'±Ùu¯˜'bf#ôÁ@ãBEEÅX„-Ûx’äkŒorf%oRAÝØ¥ÿõðÛ¤UßÉU>ö¹s}«¢2HI¡:«~§ö õüã× ¢©oiã;€†>8;c‚âfd –ùüÎË3⨇}V¤<^ø•c·›_8ßýV¥ÙìĶ]¨0‘±‰úÏÏçÍ ž9rk]‰±s.x OÂPP(Ä¡ÿ‰·°Ppé– ù9yjùP´¼l|uSiÛíûA<„Œ‘É-*QUIÉ,aþp?6IVã ¼¹YØ×—™ÿuuÀØŽ±ÒÚšcKK ÄÂÕÕ­¨¥7oœ4tõôÚñ|\‰áëŸÈBB¹<–?ݲʱ%µòaÂ& G^ït ™)áÝÝ~Ljl#Wò EÀ"@ê‚|ìpo‚jh2ZR…‰|«Œ„̨ލS&ø«ïGb@Ãÿ‘œ¹'3öÀ•dda—x©êg˜™q"ù½•@ñ’Ç@0'"â‘6¡Ç±º0ż8l¯ZLõë†*`}bÉ}1¥U]·¸x€<à9ÈË„Š–f¡‰M£ù-DWr[aµªmºøðL*Ù¹Axk£QÖ–ññ§99!u{î‡kV£#+÷Mn–ööͪ÷˜£™oÆÝ¹¬.}Ľ8l ¬·|pà„µJïvóšûÎåÇ|\9ó䥠zn9\}ýwò¹ÂL/ôLmt¶åô_w$2Ee…Šêóð¿Ka€ïzì |å ;Se%Eœə©]—K=¸š%- ø'N€NÁðPqÖe~Ñ”á?c¨›:д±¡.-í™&yš%½™^[û ÍUPðJ€ µëhyù‡dX_o^ûÃ=vT¼ý«·oYÃњ϶ƒD¥ˆÂ## ·{Ï›_ê¬÷4üTÒiñF,q½NW¿áJ“g]jAœ\²ðH ìé²›¾gH¦n ÅM*±ÙdJävÒJXô0ÈÍÅIkQ÷pÁ‡Ï¢X”‚ 5O‡YeôQ"7³‚ƒÍþþ¯B­AU}5 þ9¾CkßË —|¬µ.ÎÓöƒ®Ž¾N9Ô§Îò5Ô§œ-(áZt‰#JP²ˆøËè RBB<Á!ýÅ e yyIS» ’uýmÅôÄ€ëZSÅZq@·^É}¢Ó|Ò^lóž±.,[aOÀÎÞbjÐý-)Y:9dzaø¾oLpˆbµ{V`bòUô#ˆ\é‘󔅛ܽ¯óë!º;G“JQ6ÃbÕt\¶Q«–ñÆ¢ˆ·)µÙ[ëæ¦ÑLñï¨Ìè¹Øup”vŸ$T×°ÂùÅ+Åä1ezùJ…”2rº7³w3 +4[ý¶œp±brF&NN`Â9)_œƒø$àT³mívVjÅÆfØ‘=ñóuÑnÝVâ ð‡FrMéÐ…Ná¿N¢®=6xcC‘”NºÁÔÏŠ™å›³åðûʺ$̳z|²ªÀ×ÊJçÍx2@î˜d¤˜{ýÛ*øø,ì®WÏÑþ´ò´7aQtêÞœ}Äáb­ï½ìë•TWO.Ñé{OËÆ’°{¼:©;šyÈbbXÅ …\ ¦¢×K®;ü‹aþ‚=yØøüj²É½Å5s9‚Vuƒì½”«æeŽÌØjñY(SŠ«ÖMO7PÕA%à ZççŸÜß"–º­?þ‡]fÄl™¶†G¿Ö¸7@ ??çL«OŠýÆ[_·34o¦+uS…;…yމù`i“>I B»ý_ ,ù¼62y²òòaÀ¼xÉ7-ˆ*B–i“øG·‡×¢’ýÍè|~Žâµ1$²ÒBKÝ^|ÉòXçbá\H~þ‰ù;63‹‡»}àñÛ—ÛÞÍ/¨ßßL•¬ÂK¥¸&ª§>yBEó¥?.a5N)séz“x;2®ÑÆ.,'GüLá•^þ—/ëÿ¥¦zÃJïéMKS—ó—Ï%€‘¼ ›Š<uMM6Ñ7 Àô>žÿ²mS2•D^ûœ?ðåOhù*ÈQáG&dÕçÏŽç‰UbVÍÒÖn$DãFzzœ9’ÇÕ¾÷3ª{MTšê˜ñhçæ~`âãÃç0Ã~6b÷Gyê?Ù[ñ:¦;ê»ó«Û‹d;;¬çϽ£b™Q<îV#ÍUMÔÕ™\)yïÏØB ¦ÝÖ37¤Rêƒ9lx['5éZIš¿QöÌ™ß6a°7¥™(?¸èÚ mÑjoz¼ÇW,˜‰ð‚ë˜*7â%%»¯Û{˜ °â×&–H¤o6oe·Ùx,Ú\•¤Úí¿ ^I ØmýWº”âËÊìЊ·úû†ç§x&›/²bzM´év8¸¸^¿n¶îªÊ!N)"DD"áùÇüý1>—¡Üá"pŽLPz&üìçiίrÝÕ£ g@?S9¸¸B”ïr¼>4‹|Íà«#¦Bq­o§ZL\ßÌ+¶XtÚ›wAëèßš”öÅeBоØÓ˜Ú¯ìbÁ ª»ì,8 a3{¬Ž¡°ðUÞó“æ»·©â#"caOp÷K‘ÃÀÇÓp¡®©‰»ÚÕt £+zþî]L±áðÔûÇ{º¢¶4g!œ.™ÿ‡~fˆgFf ’$L~ßÿɤ®ß˜)ÏZ “BV§>ý ›`Ïí>ýœç­oäû¿#ÒÜ!/’ØO@ ö*sü•[[*ìi1=¸‘Ñ©fZ&¹ðJVB_~ì7äþ¨P àØ@L*Lp·³ëgw”ñCùÁ£ŠâáA’))Þ´!RŒ¬öþ˜‰i]¹„´ «G²ßíz·þB…*œØãÉð0 ÏI"D‹Ál†¼º–“„ÅÎ*‚ÇÜ \…‡Õ‚ןV5|Ù ‘ôèáöôÐèóNòV˜6Ï;ÁÞ¼^Òmõeóµ-‘¡ä’÷Ô|l²Jkµ“ìêltñ(€OPç|gšÏÛˆY%¯!†¼CúÂEu¨Í¦½n§þÞÜ5 ðÞSÀùSƒXãq¿k.¯˜[b4ºšÈü®Q•¸ˆ-ÀjO…æ¦g`=¹ÀS1¯jж+¶¤³+äÝÏÙ¾d§óÛ}z§“ábjè—¿'ø‘`þ†°o^¼TH«®þNè-#+;_(H¤/€N@<”QY¨ôù³.CÜÙÉ:#ÈhŸö²’[ÚXY­9×8´»&¶Äý6d°þú":Ú_{gL°ºö¢ïLøÔZŽ‚1_mši=sßlÎ~¶ê1T.Kc3ïЛ·ËïÙ[v+`h²ˆ•ÍÏSÜï‚VôÃYÖðUŸþ™(ÆoèéÑ–Ïñª‹&N×ñ9%M¾·¹A¯r‘šìÏÌ̧©&‘LBÒ$˜æaÇú Ü?™?nKÊP3Îý3ý]!HnÞ‹—͈ïjÉž :•{gÜœ‘Æß¾ý~å¥ú_¡L„D¨~ü“ÉÔè. ×$ÒîÓ|–M)ªí…þ¬æb á]ä·w]=qFÕ®Óòæ73&Ö'uêêó¾QdJË¿:WÁÿ/¯V™¨¨vŒÇThTYqC^…-›V•:~*|6¥‡éb# Ï$~i~>ZºÎ$¦þܨ’9µ€{ãsL 9v‘ûÔ ‘¯[š½¢Í¿)J8k€Ñúý[G ±fîEO÷z%m Qu‡Ê|–7í·Î5yF—jZ?ãX°ø÷`¡3="ôûçÏŸÈ××bÀH¨?fñüørfƱ8l <ŒE 8Èm@ ŸoÀí°`=Qó™æ¿âö9í·™½¤;N\/ç\¯×e”•Ÿµ?‹àa…?Ýäó<²l"Ò”¾µUÈÓ'#ÏÜ쑜uY+:^P²Üð :ßE×î Çbw:±Ë3íÑùÙj3èæß#ÆÂj‘q¼Šxv…GZ×™©øâU.MrYiÏðÈ‚—'zP{ï¯"𷬱Դ D 0ê¨ß“Ta áá°@ÓžéÚ\kЙ±øÙòŒÄ cCGA§«ï¶t}ã»}É·K+ ÄÊSLÉÌð\› õ³%ÈE@R1 zyc#tjêµèoÌH±Ó¡³=›²’‰¡aËpzf£9…´†_Ç­ºØî!–HŠÌÈÐÆáåþSÊœ9wÖÏvÙ2Ug-g£TDÅ`>WçxØÐÄ/t´’Éx6œ>©³7¥œ¯šÐwnÍ96“Û¶øø€jÈ;šþ6‡0þà ñµ¯WŽ”­*šgûõ‹‹Y ì*¾í휸_»8wù&ëÏåF|| ¬ƒÙH2þîðìAF1’ÞáëÁVyÃÆ uÚ–#´¹çedk ‘Ì_ 9Ó¾Ò;Yì{”¬ot4¼« ðM_ƈe{—øÞ ª @YÓÃ÷òò2àí¢;蟶!}ëcžÝµ½Hq=Ñ”¡g·~ÓaìŽøYŽ©Øv[‰Ý™ù ˆÓjt›ñ{Ÿ@u¸0ÊÐó^¯á@þ¬W°[¯1úY9|*˜xM!¢-Ûé¼ý—¯ £13Ônè'ÆÀ͛蛼í`·))e¾ì¥Ù³dZºŸBæ{F ÝÅhÎÇ{­ôÞ¸þ8É´bôÖV×~XV¹%aÄosPÏ’¢ÑŽ`þí›uyµÚ× ðÀàW;9V[7̽×ý'ÒŒ è,6>dÞ1”¦ Í+ߘ,‰¬¿%$…ãh7ïѫɩ‘Ë:‰úqGr±÷Åw8=½F­×Yg¦\ÒÒÎŽßxG§0a4gÏôÉ«÷wðááhWw§˜˜Ã§oû ÐWŽ–ÖDZW;;t€æažŒgX¿–ðøü-ðŽLL"/}]í·\ÛÒY*|5W²Dê÷…útJ ,¥“XAÜ}bªnSºÙÅôšI‹FRH%¼Py |¹ÿµ¼¼ü•0ÐSs[[ÏŽpÖ(]BPQq hŸØÝ8‰ÇÇ%--—ÈH[u¨r¤`úú Ú½à°Ï'q#{M0 =×Ö@·ãU„éMhØX èqôz\Žš ջέͭԞê÷M…&s¥¶¬uÃÕhHe›$gñÝãC ÈZŒÁÑ’¬]7¬Ÿ•zÀ4ª¹Fç÷ÿ]8q?9k¨&¡½|‰JxRç¬ò'20€†„z.$!Ñ,ɵÅÏ_¿R‘„1ÒðwÿÞM2QÝ´ÏKÓÜü‰Šª$†¹#î¶´ÅŸ|‰OŸÂ:äGzzµèÞÒ×Í$6÷wtDí®Û';pS¶Mjf­ž¬[vh$rØ môÇ2Ž¤î®—|eä€zmñ„žüܹ±¹žmåJStà8:Œí×*.[Ÿ¥®¶ú=ÿÁ^B %51W Ðt¿/¾·è™§Øßéý„¬Fãse讳J‘ŸŸBd÷š)în5òßÅÝ[‡™r]©¯“Âö·Ïäå™VW# S¾/d½Uî J¯©á £éÃ^^vŸä»)%"EO}òŸ›Eæ}¿(*+ûyþ<9•L ÎûJ…kçà M",|CFÕCŒ‰™i”^X8'ÅõæïúHMÒÜήêÒÎŽo5;ÔV•ÄŒBB»Øp®™—*hô'y_Öö·•7‘^ºš¨;–í®xN>Q?wQKêãÆ‚«MæøÙø®(HWáDý¿è “èር¡‹®§qô8¡–¼L5k|áŸ" ÅZòú%ZºÒûæÀÏŒ¹TËtÍrpp¼¦Jo{‚‡üQôðo˺¨›NLaîó}ˆÈÛ®CWéêÅ“þa·ë ÷_)"Mýߤèâ;ùŽ™çö¨ÄW–>⢠À9S"|úÔFïtò!ï–C9> ¹Øzذ²™ÇKV3Î`t¾»§YR æ/×k“¿4=`Øï±{ÅPx„ºÝ¾×ꎞÇáãES­ì« ’ñk­NiùÁÎD§ÛßC%".ŽËûæ9]H£ußš%¿gRV%c—Ÿ‚¡é¤Ú‰Ò÷š!MpEÈ ùi‰ ´Zÿí¢‚Š³:Ï}d *µ¨uÍ/)‰IG×çuœ0pÙ]‘$i …LLÚ®·ûÀW·½ r1¥Ÿ›W¯ÖÐ x¯NÕ,ÊŸ¾XÝåVYÇóñwŠuŠ0[}Ð ; éí„Î."ES%%ÊUλ7¶0w›dTb¾—_üܪ5FMˆ;\.Áû^tÚQœNú×s¿µ¶¡žŽaø²U‚^LÊo`™ô ÀÈ€"¶²B¡ú§bR+0†¾þ7¯¹çÐ11M…¿ÇU<סø[þLE‰õõb!e ’N³—úºäÃæ¬³¿þ®djeEë}‘–‘ Cõ°‡†˜ÃLp|­¡Ê ôw)Ø511c ÀoÛ£X ác¹â¦øx*ÅÚm˜®ÓŸD/+78³Þ\¢¯9©ªpu¢n펡6ËDáùß’Vû¹õ²{#²Í¦; ðHW'½MÍ““üç@0 ¸„µ °ÇŒQ­­_€èð>îcú° Š«V2"*²WjªÙÞó· ›Í—º¡´S5§¸)Ü‘»ës/ãr1#øððY@$Ê[˜vÊ(·Zj‚.öh²†–ý~LÝÿ$ "¤YŠ ´ì%ˆ'¯êÖ'À`××ßX7˜êtØrÂõôîN}x1ô-—-‘¨½9lˆy¬ë—±ÿGŒÖ¿÷dاï}ÍvSJO<¾c³{fSb‚Z f|bîåUY7ë5'óÿŒaŠElK—‹§Qß¿{»G~ÌbZZÐ¥7S!y»üÓæÆzf[@€n?Þ,%Ë%tAJìCÓí›ûLL;]ýÇ{5Ê– ¬Þ嵯ª÷E@Vè D «ý\4}W:Σk%néß¿n†“Ë"†Fÿ•”E+Gkyýÿ¡„7zÈ‚¶­s%•¬„TTxSɉ}Z?~ Ë+|³×el{ø!üé–Ž¬™þO4’Ê@Î%ù™Bø#1ÜÔ,Y[=ßlØÈ0$P?\Iª6X¥à£¾~ŽÐ’¢æ"¬’E{GPT$F(PáÐÀòdšùä1d,ç4û\33ú(„xþÛ£ˆÚùiG•ÉêØ•jæÆZô+Ã"‹©©ø¼w€÷ÿtæÌá 4“ÆWXRëâ@=4ã6ɼÛ×jÑÃP÷ô‰5òj>"€vgTwOdj‘ïÿÚ‹‹0ûgåQ‡‰Bé27/ º1¦†ìç—ÉkóäIæ‚ )ˆg•ƒ&ÔiSä}£Š$3û ï½æû®à—FPƒÐ ¢G†nWüôÜ@ÃÅDŸ/!—ÔÒZ÷¤™5¶™St Ÿ P´ÆÛƒ·u)ÜS_pØ\«ûŸL_äçä¼ôó£ aœÈÏ·^óãë%ÒãÒ-ê®=CÒ5)àqbãÆÓŠ‹wœ)³øÝÝ_j(ðç˜B´¾#oÜõ{s`‚0I O¾†íÝr¨†…VU{RBØÆ&õðL.\D—àŠŸû½ÄGU@‚"I¼3;øf#}Mÿ?R˜©…޶t^žIg‹cF¦þk²t$Ò(ÄLI¦¸”O¿1ÕèSÊéØÔÃëèš±•›ke³à0eò-¸9 °[üwµ{ÿ T|Ì÷ïäwǪË[”Íl‹õSÔþ¥28I}šLßbâû>Q€Ð:Õh=¤·[«ÏkÅF§º†Ã¦ÞzD½\…Çžü õØø‰¯—È€[剡‹ó'ãÕàÿ-ë š>\ƒáqý(y;É;#œÎÐ ?³øúõL‹¦{ž+W" ·ZÉø¤Ê*½^+Óyg éÂò¤ÏNú"‹ÃéïÃPWœ9.3€80é›ú75ahzÜê©»  ‘‡ÎVžœ* !Ÿ´Ç¾{Ñ9\¡âóƒÀOw÷·¸Þaù+àì½?úðg;{Îa~ÄØèºäàx u;à,‘žêe•3vÝ0ß'œ)B O­¼žÜíJRB– T8,i•¶ò¤Çü »‚aœ.v¿Ãi–ùµsB õîÿiq) }&!©ñ¤ç’_eÓ³J °è¼Õxƒ<—Hñï“b׆¶—%A]ñØX£)ê ¹í}ßTL•qìîbúý'/}ZÙo›Ëm´¾Ÿôþ+YzÆ,ÜŸÇr\ Á<­!î[ÓÔ¯"8­ë’0Ü7Dle¥s¶/N±tÍ×ÖÒc;&¦:œ3¦ŽÉFTV³—H²8R\ÖÔ¼üòe}/Òw4ëTV}¸XRÒ;ÚÌèù*—„$Õ ¨¯nvmåXHIHp ÕfãêfÆ=¨PÅ uw’¸Ó 5¹½X[[¹L¿²ÿ {çðpì¶[ŒRÉ*F§$F.ÿ·d•nŠGþ¸ÃÜèwä) ‚¹þñ‹~àž$È ×ľV¥`A§Š@®˜Î?›°+Êerl,d P´+; o]jª«ñ@ªá&B×)¡&tRupΑŽäÅŲóµïT¨’unxé JúD¾Ã±UÆ‹ˆ„LÁ1ãi/ÜÆÆŽ)K¼mp­AAð1’-Ë {:gXµzÿŽ®¨Ía1¹+Aó¤%I:Cq}<àÐ/WÔ[5z%û_¾È¦·ß«…ˆ{ºÁÓ ¦¯ãkø3l1Ë•vkvŽióÅ iË5›¼m³ƒ­Lƒ¡ wŠ^OWcÁ"#S†–Qüq¬Ö|¦æÍ/,£ ñ-[„Øøïö=ß>$Ú›j4ä ÊÅä“!†ÙZ|ìì¾w¿‡ÝÓáÞæPdfÆvï›t¦/3[Õóõu;„ms—Î^b;{Ûo0…¢=*%leGØÚWz£npæÖâÒ¿ô·Ã̃šÎ†H5 Î_ ”–z^>±¶¦’QÎö–2ðŒ‰i;Ç.iÞ%IÚö#=þå³¥¸% J¶Ï—%J)‡yåf€õ):š_zºçîÛÙ° EB÷{l##««£·!ÚÈÜ#‹îæÆgÛ°})÷0w'tŽWË WŽüwAr6(¥ÛKwØY¢û…ÝÕñ]k«kF´‚NkµEODk+òêžÚÿk·+|û\HTi‹2±ÎZ¨å"Ùœ¸ïíQÃfüeÀÂS §'²ùzŠŠÆ&I0ss¶ ¸ÁZ½¿ù×è ª¿ýÝ·Lgic#ljŠ‘1‚Bã›Ø{8Ÿè>|d¼ý«E7¢ÉB#¨ A£ôF‰½Ó¡†yî$~‰N‡<÷q;Rcz¡<ëÒXŽk_"C¢Ù’3pá‡m³utW+NáJS÷Ìx´Â!%ºº%æêŒ·çÀ$¹_}ôÂZ5Ë|T7ÉCƒRt‹VûýÇoë›ÙŸô…—Œ|ñZ°Ï7Ö’ÿ½gd6ú¿îéJÉ0™{ŸÈäñØv‡ö™^ÄÚ]}”j£Òñ~D.è®%úeÙÖ¨0æÿZôKÑðùÏ¢ŸAþï¿‹~Í›£I¿ZQäDÅ{=?çÛÚBW H8¾Öù›¼cãñhÄ)ÓGíH²(ÏCXïIÍÔÎóç‡=Ãé Ç}L·‡|á6þ6 ImÀbºÚ ½è<×—Hz¦ßœ ¡èß×÷9[> b^8&*Š$,Û4Ñÿf@\W,Ç+1bè¤F ®ÎoU»?ý¼ Õr>ÑU*”ÿY8 Ï‹‡±äõpÇ õLÈp“Çë_ép{…t/jØúû þôP¼ùÁ›±³CÎÎ~„‰¹lÁ ;“’®¨ÙE–½¥ºÎ p‡EŽòÁúÄ2o|pã‘‹€+Þ“Œtù`áx>sÎv<÷~håjv‘|EÚϬªŽZ$\-leÅøÂ¡ÎˆˆŽ\…2Œç#\Î$ãã,«“#–GZäð°¼¶œ<Ï®Uí³-÷«(ߢ\BŠº90mPcä ³ˆ¿ˆmîŒg#ÿzT:¢•ºHÂ_f*++a’ x@û}N?‡ŽÀJVüúo§'ÖBŠÆhŠàïôû¦PÀBúÌÓá'”¡dл#þÝ ËûPøÏ^؇®ºØ-x²mã¾Ã´ëÂ~R0Cª®Zê»H$áÉ7€´e þuíó[ãÓÄf3ÆÒæB¯™ÊÆH-óŠ,¼@è_Yiß;ü¯%DÖ¢Ü\LP5¡Ä|Kám(rSM|X‹î.h@öêQº»Ûާt},jú“9ä<×Ö"´èq G–KÍÏQˆL©Þ±Ð±…E`ëösárAÃU»ÚÙ0»müª«ëÍÊ\ Û4 êůY«Õ‰ô_¿Û0F~H\TJàýéÍkÏø„͈K×Ⱦ»>õ8ÕºK‚à“šÀ›çüTaÕe’Ð;·û…°{ûbu[¼ ¡‹iÓe´~dM,0gþNúô à´n£/jÆ ‡*aRg$ÕÐÔÔ ÓŽøþæÉÒŸ¨ßW³§ÊÆ|`Žuý:¹ž¹¿?ë‚íæ“VÖFC¤álD ˜Ÿ8£»»ó@èÙ«½æî% üf·óqÍ£!žòÒÂóã.¾Õd´•£åßÿø|ûêÖjàéM&ë;Qî®ÑíNƒŸNrr"4)à´î}†ºOH #:¸CóÚHž /߯t!SQnGËlÉ”HR‡pÉk›çSÜÒ?ÜÊj.zW˜  ´Ý^é;|ÎÇ 2HQææà½åñ`r˜ ü‡_ÌšÇÆx÷N³åŒ±»íd=bÅ»sÁ¶¡§€=òÿ¼Q*™Zȵ¾z{Áçûw»§J(éÖNü>~ùBûŠ'hRÃe̼—ÆBo¾–øô5½@Òaôòʲ´¼_e°üÍ@øüjÆ9Xâyñ±ÂÐñrfz:¤7Aºã—®³½•z;ˆþ%]•ÈžKÍ$|ŸZÍ$ýÁùä¥Îdáb:ü§v—Ã~ÅFæéâ*¾N{* ¿V^@Å”„×3ªòÿüà×)¦Žöš4ÙÄØXÈܺðóg qx³.-í gËI΢&›Òƒ³Ûº–¹öÞ°ÂymM^íp<³9Ž:3ÂøœåÈ‘ºôù^*ÎÛ®=R´¾ZƒuA83'ÇàxÐñâ›çvÎŽ˜¬@1bÏô W3OÒïß,HW¡gm*—=Ÿ;ëN œ9Ã-8m"º^-G=ÚP`¤óÕôPGk–Gp]ûó:ð©þyyLäR¡eIÚÈÀ"®lgñµaq Ó:°;zúøÀÙº£¡óNE¤¿´6Yn•¶¼»zYÎ×·rê´tz}µäCÁ Ûù:\q²Œ÷zM *â0Í’|è^ž]DøÁ輎Þ!¿í‚öö%Rê1M&ú:±¤ï¼v×ÏðöÛª#1ˆ%1äp èq¢"ŒM$ò à1Bxާ !…ñÒù¾*¥Â[WoþWðÄÚþ{ßþáµâ+š)/b¾Î³mŸ£NüQ’W£·~ ®W¢M!̮핲SýL·›ÄÌ!ÛŠ‹~ IâuC³ñaâÂìläÞx·0&ƒ˜£)¶ØÇÛEüäx\ª8TQi:¸ª> àú1Õ#q`s˜ ÎqsþAÀÞÙU=Ú+K]>Û¾CGT*JW@¶<ÛÒà k¾:†£w¹ ÅÇ~F‘uÀ!n^½ÉlÖ½Q/è·D»£—SgG½ í©b¶4™1U×~`M (î.›W¼ "â 8é±è굨ºÍ4£ñ0—b(”¬A]o$ÝHsºßÛ=‰C·úYF/•Åôúݶ@Èî3xWvNäb£Ñ; ,ß®®òGz‹òÔo_ãr1=–àF»v5\X)ȰŒÙÙ‘šWa‡¢…`GøäQŸg‘±Aa¹ImumÍÁ•8òÛ:{|²yóo'äÊ‘aeµ#0„é+ÈW½­aÁ³¨Iª+ã\ì&tÊô³‚Ù‚û­ ôN¦t‘Ë6%MÚÚ¢[Ó±×\ªÃËÕ6™¾±F¦ÄXXž@|gæž1«@‘9UÍ!³­Å· ½v%â½Ùz 2dhn.8?ßÚ^´u{ô©Îíã7é·¿ß©O¤j£H¹Â~|ƒ–ÅÂɉŒA°GœÚ˜È놡ß7c‚ÎÝvn“m_ß8¢kuùöð18M@ÀÅPoby¦‚UPˆ¶ê긚åíí`—Wç3Ú›qKÝUé55ý+ »wwucy ê­,,¶ wœÍ Mãá„ ÿàR =lj ôAÔƒÞ`l˜Íö"Á°bÿ±ð‚sÜŽåÑü¥l»:|.þí÷Å!¶ƒ=ÒÑî8ØX«a¾¤¤hñ oyy9°Ø‹Ó͈Ÿ¹ˆ#9á3Ä ëcó c‡+Ÿ¹o¶nAìh ~)W¢Õ"Š÷Ü10«PÞøê¨´´Îý ñÐDf€b^°`&W¼c;&ºsègÇíÓ5“œ7Ð_If“@ åJ£™‚ =†QÏ@@øäª˜óÅš4KŸçn;ˆýsjèö _¥ŸŠfßé= 'ìmý%ôøÑ$¯pÔÿ˜—×¼Úñ¸_Ãm(*JÖwºŒo>ÃTúõ ''FW8í®‚‡Óz"ã:Ï_cZ±Áà¯Y´“b‡ŽŽñD6 |*ªZبt‘„i×ÁvhnKÐ|€r¬F—5É„ lq«÷®¡©ìšõs`A’)¶ÙÅâv¶ôk'*/Jìêÿo”§ß×Eà¡Oµ³#‹Žá«Ýntä&räþéñø!_ƒ§nr?–ü²«þÇ÷§6ÖTCö6çóRðw§‹Ç7».i£¸Í«Ç¸Û‹’ÀØÌßåï¡?±l׿{páUÌúøñ% Bs}šp'ç^òlÙ80O6 Œþ®rt#)Ÿ§=«f"@_ySÑ}–'–CcbàžcùL/æ¼oò»/ìj+=D„GŽÕýíb1åå8Œ¹ˆŠn==;ôF#ÌÌj»gë[”žÀ´hùV9hþà®yž’Ò•ï<˜b›‘áúħ ‘× µ­P}ŸÒvÙÙH1­±ñ‰4O6]OÚä. ÆQ‰v›Ïug£ËCfš.Iž?-1™|´j €…fÏ7޳»œÈÀ݆r½ÒËÞ"RÆ-qR âñCo•ˆ‘m¨0™š#s'Rñ×KElZsÕ0Ê Î¯øù ù©kØ+äk­…¼66&Ð(`‘wKõ\"¿oIagz$T¯c rNY|‚¼8ž—oÚœ«p{¼_µÙ²yj>“ܺz\¬Û5 Ð6¦£4Ûò;;·v8¯ÅUIU‰Eæí…xÓRÙ ”Îþ È „±…s}-=A5$…AïȧsóJ¡[”=BH„ÆíÕÎ% À9r‹"ÚÚvu'yC…›µè›§§aJJ>‚¯ ½w™ÅÏ_ôd:{ñ ¢usöqªöü)•…IV…B@G_×r[‚3¬ÇéaýùqÆ„—)v_#jNNÈñ’OSv9µb†öå“ÃÞ{ŒÄ)Ú/Œ˜â R;vU¢—P¦£È‚….»¾W£OöÜB9­=ž³‰XZOèj›O–Z‰,Ônüäw-Ÿ c[orJç1í77דtÐ5, !ŠHÐÀ ÀÖ$°-xÍê&¦¦¾Â6»fÇ Q Ø?ÇwÀ\¾ËWw87`š™Õ¢®­A,,”äs——šEšÜapØeB¯G'fªÙææ$Ò7PàЈ¸EùlFÞùý­³_O+=™Q_¼°ðÀ,..|ê°º²B¯Õìù¾¦èbfffüöÒìYnîw ou²òòn“Uvvv­qÔyøå3³‹—¿Å/WºˆmZV¿!D Á»úÜjý‰ÔjïxBúþ=&&/[Üfmmí/‹ÅƒÝ8ƒ0¾ÍÍÔE Á%–Ëp vÚ÷â;¹\Õà¡›.Ü1ñÞî¡  Çƒ)e»»:O·qµf¿1pcfÆéz»/ÎSLµ›.Ou¼[ÔdÝ€‚ƒ"\ÿàŒ ¢ÂÉë¾××ìµ \MÞP5ïÙ€‰ì—Èlô¹jþqþn¡ét@H^¾|îØíÔñÃbc¸¨r×RKãe­ ?M¹GêpcWšS¹~×lè<¼ãñc¢×ö¨¤YþñU~–íÜ‚®£» ³!ÁÁü²²Ï4\h_Z;™e=–Áebÿ¾ºÒÊWMðšú)sYf0¨su´¬ÞðUÇàæ‚Öá±eu~ªD‡ùûÀçï<éÞ‹Cs®iâ Æc”w³êÖšû/_¼øð>Á¡×m¶F-Œë«¥%ýy# ýÆ}´·ÒÒJ@£‡ªŠ˜& Ä÷Ï÷÷o7úq-í_½&m}¥„ú²µeùÂBЇ››ÞñhÉ\5åáGÓͲ««ƒ6¿r?ϽšÇMÎË—’Ž+AWDNõ./_¾|$h=» f_Êx›½àÄ鿊â}€…5ÞPAOŸ3¾Æ@Z>|D‘h{ÅiÀ¼£ÍŒ×Ç;ù«òÂdËö6öõ›µ‹IŠUII,À¨2ŠŠ.÷º„bbÆ2jjOü~ÁÐÒìÙ>Úv¼zÜ›wP“›¼E<’FÂÿJùçü[ÊŒöcÚð\ö\öÜà …¹@Å‚Êñ™ó²;ÛwfãÆ_òØKŒ­¼¡àþÊf·,&é¾¾oIø#Êïù†íéàíù‰‚¹Ía¿ÍÏåÆZwÍf8>~TTÚ¹û!‡ÍÆÒJGÈùB÷«W¯Ž./•¶] sÇÆäËVóGNvgÎ\.*ÈYXÖÉhYJRv?+U¤™œç®ì|Ox?~5¶hÌYñ¡ÎþýTñ2ÁDÁ螬[îëçAC9rjµ¶A»2‘11t5å?ÒÒ½±"Š”$e÷ßk6†$s‰7"f{ÿÚçe8fp>S&ÿ21ºê5¸)@ù»¤T5mf87N¥ÂúCÈ«JÃé4ZUÖûE,…/¸¢mi[—(66d~ÂÍ0›²áa’EÔÏW¼¦Ën …lô }Ùý³Ã&n[aR´t±oRÂå ™€Ëþ$Rn׫hrÏ7bãAß™ŠŠÎè~Z,¼ ¡Î£á¸\úˆFÄÛçÕäasŽð ‰DpU"qè%“Áƒ_6³g›â¼ÙŒïXÇ馞´ ‹àéëщµ`o¼}´`R]m?®sO*ú#zÝÝù•+Ïѵ3²FHG`°ÿ`о)¬Ô+±fÌ0FwŒààÐÈÔ¢€ÛËT2ž{Ž‘‘Ržûš5Ìggî­ÝS’W!$/ûÛ»ºø~ÂÈR?{¦«¬ÌþËÎd|nàh—ŸïÕrÝ!šîår_ÒdÄ®% )帧O/›†M} ó”˜Þ —¾Ã/ùÿ•š˜LW[;Üp¼ÆÜœÕÒ¦ì#h¿ã7aJŠm×…XO2¼Ž±1¬Wú˜ª†FÓûÎ76s H¶·#£Ž Þ½“ŽŠ:F¡Ó|µÔÂFJ=9ŸÓ×ìA"0CBµÃÉ{_NÇ#ƒAú±›í—¤˜¸Pq)£tˆÎÊEN7,bLû“f[[ùoFèÔ{>ÛdÌx=·4QVùÞ:8(´£f!$ô›ž•ué5Õ߇‹ì  ™Øíò>¤õåü}n…¤ýÁœZÀO¹­éxjÅ|ϰ0ÔÏŸ?C~4X_ï’“/2/OôõI¸ÞwÏǦ“:í+ÄèŒg(3 9%ÿáÔ¯ÈaÊ]ì‘—%–ïùdÒe7+«ïög[Éî`s–M•€3ã…nÌó²ëHGc<çû¼¿›LÁùð‹ôÐCÛž\l… º·KHÐsÔí­mmpè“ÂÉŒ§LMM_hTUWãŒfI‹”é÷kééùE‘‰¬lfEO¦ÿúxQKÁ÷ ™^|:©qÑ÷Ö®:RN÷àœ÷¢¸tÖýÄ5Ž]µºÕE©lR?D—8Q>?9¯X»¬“T´0Ø×`Ùo4æVHÈi’q±+( ž5Ú±ó{n O§Ùè[WW÷Õi{ä7°€F½cÚQ-ЂÎoL/_úùúÂ'~ÿ®s²Ö=)ýƒÝk¡Á%´ï]ÁKY—q‰ Ž…—ÃÇr’çâçÙF]ò›=i†<çxm?_£gdò Ù_˜ ¼”Ñwן/?¿›`;P=È딳ûvó¬Bi’3¯:9SC‰&KHL\„æÔ–îî§hhhde£ÖΛˆÀ«‰6™kvÀm¬vE´ŽbUVVBŸ•ùðÙÛßÏ›QRQ ®±Ùl@KII>Ç$¬Áá`î©’’ÒÔÌŒNo<­Xœ]^ðÛá°tttÐ×oζãƒòo"íò{°Ä/..D¥¥êÞCøÜ RÝoÞÁÂÂ.­­ùÆQ+­ô}c‚xn¦¶õõ¡““«¨‡¯U(u™/·úEkÖ“K§„‚VCš§Ë † Õ¹›A[»Â á  +Z­¾O£ÝÖÖ×[ÆÆ^°™ÏEÖ%ÓÔÚóþ¡ò_¥}L0B¹Ñ(‚¾¾¾ád!!p?”v© ‹EMÁ¯hUš'&^ÉeI{ïÕçˆg|«wnsfT][»Òê÷l|ÀÀhÒ¥63AV‘«PÙá¤ÐbdK§AÑL<¸¼;w7gO.<ÅÖÇ †øñ!)³òrŒufNd¸£QÑ)ÿ%ŸîÎHÕ¢ôø½âÛ‚‘­;¹¤ÙÂJ'³/2,D_Ü*ƒÏ?º•W((ã{¸‚£U­ôõñƒ>¸K¯7:s’ß™[nÎwóÌ(öÙ û.Ù…ÙíŽW„â¿}˪§Ñæq¹øjdd´7ò[¼o|~.þé“6P¡ÂJóñ}r©NNO§Sx\ãââZÏe YÏe±Þ«ë@¦îo/_ª4erBšÏ¶ZzWVV”µ´^ßîä½)êÎø® t2!))©÷äÉ“h;P}Ê‹n¸º¡fóµqûs5r»½²qù*燿ÅJÓJw¼"&И:Ûïäàà(M-íŠ .ëObc¢  èÄÑÝHÖ£ýû÷oÐ)ûý™Ž™r£¶v’¹ý¯_RO¡üÉ“Z1“Éz0_×U¨^§˜g¶פ3_ô¥Ì¿¦®®L·+¼zÑ iFiiénÎÒp\ÈD…‰Ò'®½¡4¸Û½²ÁŒÎÏ‹7â×&y•“LB»U®5‹¦—ó4llU*zÑK×Dïõ¡Ì9Žn(*!gìúÚš¡Gîçr& ¤)À'o{³¤SõAs:ËʘTœY¨))µtJ×76ÁW!ûõ-,¤$sÚ3tN¹6tÅ¿W§šÈÿg?baYžôh–¸¨Tè€Ï+ß¿>Ý|)Ö¬``nnþY7ÇâÞXV`ø†V³Ð‘W¡@TêûÂíµAÀÁj‹Tï'L$'õ…n^÷p²Žè¬–zœœOÊæ;¾´›QÄ¿8Oº¥¬›Ì­N­=ËÉèPJ…WsЖ”h6²q·§+¢íåB4Nòõåý^ùvI£É½ÇEÕ@!ÁdQw瞨 çí³¢^fI 5 MìumT”ìoa˜XYõCãXH£Dß8IFÁÿ()±ª¸·%¡$~÷Ƭ)x¨^MÒòsd÷úúú¿ î{ÝÐdÿ óùïÀÿ+ž´D‚™æçç/o$Àg3ÿ ÁL”èŠäÜÆÇ‡……½„~Ó·ää¥Ý1L\\\¬†C¯íW;Q»íG3%u ¦ðèúûûG‡ÐéJØ+Œ_ºµÃÿ¨?Q¢I úT^œ^¾æ&Óc 0^åÎÂà•fxO—+ê¦>qžbRË:ic6à^l[¡A/@óŠzŒ<ï¡ _—Œ–õý-EÓ£û·šºA]Ò¨ê8»f|Må¿vÝ ‚SìöåÆmÕ#/ª˜ÏyX`² ö…fê+i ²Í`¥°n gâ=c*4Ì*å6/Ù;¿&¤nxŽ’yúóçO$ˆˆˆRíæôð0&¨½š¬ŒŒæáaÙÒü,¥º¶ý½=5#œœót“AÅ ´è˜˜·ä䊹6_ÎeGK>ÛÎggSº^-(7¹óØïMÁ¸¸¸@ôN Ïög•v{1_½BP¼€™Æ®©”““ôí[¡Òû<¥"Ëû»#Gnn·›€M_ G… ÉtÛ· wyÁ!;jÀ?yÒ2=ýåä{ý~ÆpÅéÇᓺššOýÔØÄÄEC.òf………Œ“fÙçªÍÍ6LF /m%éÒƒíÕ’LH~&#CøÓ0 GGËmÆEïFe×Yü{9±‘öd••AMZ³‡|Œ12!š¼UêÉLìš&¶±ÀdaÒÌŒ†mÍ|¯IïÉ€×Ì/^<6æu‚·Kåt101½ÊË™;ÒÙËùÓí4û ŸÅø…~_¢HËÀy?Ð Þ¸sç¨PÈÑ‘X¹ÈøxÅ}«æ$V³ÜÓÆ !€OÈòò²¨˜XëþlƒÙ ³ßN}¦î9Ð#¼I½P(Ë‚«xÐ>ÇÂzû”5𣂑ÇôÙ‰lD###–›„(8ôè£# ZsÕVSn\¥eeQÉÉaww®Ýöêµ¶^2”íU‹î!%º]Š3Yõûx­×¯‹îšgW ‰ˆÂ#xoS‹ØÛ³‚î“#—EuF”êzò4::Úrw‚V"™SÁ%Û:UÚîãäc®a×I¡êo ZZÚ½ÞWÀŒ_oëø®¸™’r±tì(*åÞjG‰÷Iõ–5§Ha’WÁ¬ðÙËÞ4£Íb*C—áõ+?·“̬†|LD.,¸ë£nc׸3 ¡lî J? ÍW&ƒ¯öööùV«¦=±ïò««•OœAá?CG7¯÷ „ Šš)pÎNk.øõ‹ô¢›"•c{»ûׯ_‰55Na³Ý*о™óÞ¹¢„¦ õßX,~LOMYúí¨-”à1èÀCÑÐxëI·“µOiCëÀ[¥c­G Wª)+ÿÑïÿÞ¼Ú·ß¿ß>CEÕ³X¨×e¸˜Ôô`@GG×ÿúµÝÕÍ-¯ÿ-³^Ï }Ò/M?ê÷cÝx Wh³Á;†’VSMä*Pë÷ÌTY ¾W«þ9D› °¢G«R®ÅÊÊJCJêýòåKUé¨õï࣮Átº36ÿ `áîfQ¹ž¡NƒùT±‹ù\b…á°7!·£Ìò¬ÕCA°núŸRÒY¾ãSÕvVsn¥Ó`Ο•©š33"F¢nµ9/Þm0IÍXK2¿’73£«;X¯ÐsÚü0î¸Va ¹Îâ«*“G„hç¡ øA9WŠ}¼«Åñ‹°°ÿW†( ëyg<,´0Jr„†âhªJ=iï5]Ÿàó83g1êÀJ%€ŒWWg²µ;+"æ*çY¸íTüp{¼Ç|+œQc|{ý›Úí…ú»€÷#€ ˱Õß!NŽÍ‹ŒBÿ+cI´@½Ú…ãÍÙ»ÒÒRhì@!âNÜ-SÚù¾ÑXHHHT\¼-žV•ÞjE°°D0g‹ó’ÃwV3_ƒAë4²ížŠOJ=Ç”fB c}Lä#Pß.J„¼¢õŽ‹{  –®®PÈ++Âx•qyDàS6è9;¶Å8ä÷=…n/öÜïm’Aô”¥ªÍÄj%Tv|øñÜrdKŒXè¿Á˜ˆ ûY š§á{›½¹š˜]zv9Bà ¥Â†Ç’ cƵPÜn!÷Ýzþ÷Rââr¿y69QÂ2þ¢,ºº]íg´BYâ‚埘ÿ>¡7;_þ´À]ú¿Æ$û÷Ù¼¿ø\cc‘jÐþ> •à<Á?–¤Ê( ¡ÜàD¾Ï2ðù.„Øû÷¹ˆxŒÿë2~~¿éÖþóöïVÆÆä323­ ƒ;A5SÍV5º‰q°³S0tã]$¸¹a¥§/öjlD=;Ç_íáÑ’8¥ø¼q|EÏzá[RÂ¥ÑÈ왳׀‚b s$«r#¨wH‚šjñTNÎbmSÓGY BÏ`ôDWýÅËy++¼öŠÎ ‰?RÍ?&±YX^ì}‰k /+/—ß~ؾÑðßùÂ’­1^Ä{ãíý<ñ;k(w ø6{ ×óqÛÝ@"‚4¡Ý/ÊÊ?¥Sy©fù*\~™É_óÀýt‡ݰøá)ûÈÒWƒ&a×;7|?`µwñµ7¸Lc„ࢠ\YÚ”ùED0qóì“`Lµ >©¬ «F«LY×é ÷(6’CñåÇä½úI–)±FAa×t¹Ö= ÙŒ»vQPøLھРTl½¾èxÍHL& ¯3ðƒ ¬½Ææ»#LWxGzµ2’‡‡’¯ïÉ›vt{ûWÆqü¢mÌF#¬ÀHñR]/>àûúٵž›¯AóÃà|SРÁI.°½½KTjàAó×>Ìóç¥222°â²2Ïi&xĪ–³mž¥ÕQ""û¡ÑÑ´ÕííÁb½Þ'{3vÀ#=Ûõ~ŠUÛÚÓ#oÆptíLIE¥0{«ðÕ0;bhh‡ÃåR£ï.¬Á¥H«=ðC_Ê<" ‰»r¥)¼ŽN´ÕÕ‘$ª=Ц¡Ÿ§çÒÓã6O˜Æâ*¥ý5hmURH/4áNjÿ­;Pr*Eåò¾åå@½×Ö(¢‡Í.› e•ïü¯‹}²²xøùï–VWC+Í’+ÜßÇOM1 §ÛžVײ¶x?!Ááºà£güühd¦Õ,âÎ[eSG±âŽÞ^ԤѺ3žuÔE¬D¯Í¯$(OÆ^êí3 pxºc m«ævã'²Ù,'ûÔ3€J‘Ó Öñ€7œnÎPÃê¡K]xì€ Nö¾¼é7[U¬YFŸ ¥Z/ÀÃpm\gØ3ï„è*¦àhæwÛì_í:þrYK šR+3·H(¶mµvÄ¿<<4¥DŽ¡+„,«-/„…opøŸñ p;ruÜ…5Õp« †V$ú'tg\,ÒÛªóÙ tÅÂ;|X/0$® ŽÅ|*å†=vV`·<³¤ÉýÃ\¨¸€Î…Ÿ‡à22¦¬^ìÓÌ5Þc8pÿª´l! ÈÊ #»9?õOHÀR©²÷LJ¢=;?gWcóewIº!C,ªÖÙŸÿÕ ç–‚=Ä¡2)†âRóu2*TÞß¾a‚ù@öj–bTJªªb’(w)¬¬­öx|ÂjƱè^‡‚…Fì©¶¶:‹ýCb©ª ‹ ¼šBx¸"´z:C·C-šxIÉ@Õkºã~ÞÿTò2ÆjÑ• G©(sõh™}oÑãeTTÖÒÊ|K‹Æó•ælGŽ3çKh e;6‡ r‰‰8­--Á»2ÿ%‰qÝî´ŸÊ»éùµ~â“Klýª~­P©ZEt‘sC÷Ÿ{tV;mƒkÑDDL\œ¾MaÛN(ƒZu¤·dÒÀêZ7|¹Ù®o5_s$ Œ Saê ˆQŽþ‚7•x*¯-Ó)ËWâ DÄj-\°00…ÖU§gåYšJÑ¡!Áµ^Ð6#ßß\¿~ÓŽ½?[7œ@ Ú&ú©{¢:‡ì¯ pUAú"8êûMùˆ«™•ºÌgR_`<ÌÍ+Ž­âçøg* ˜$$Y\Î^)‰‰ A g1‘"ãàÀÿø‘hª‘LU5ZÁ3 ‹Äà«¿57)ø” ([xuÈ^Bý/‡ê‚ö1ÆÅ[^¥T›ƒ?>è¬èÆÆk™›Ã[X\ÝÖ­¬Fø †ÎÍ™6oÊE§‘×ÔM•Q¼2™Li‰ÃœM8Q€(-íR(ÇÄ›šÅRõSl´¾Õþ0Å»-Àb%„î:î®Çb¢ì#Þ\òÕ_éX–+‚°a³ð&&Lg{_âCw^‚žRÑ Bíe––i¶ueáN¦ýWs!¦uv»$ÁÁbÚúúðtt"¶[KáÅÅ…Ìšª„Ï=œ—€}syù{¶â)‰`W{gž –ò—oÖ„ÈŸƒ-ü”âyÕ¡Æú×ÙýÙ/”44Qœªuö…̤"ŸttG1pð†‡†rãx^Ñ/·ÁiÍpÖC€Lö=ÙÕÍ ‡ )ç\¾²A™þ½ÓccØãƒ;hrÞ)orrÁÛîj‘å©ÇÜß<9lìW*I(ÿÀÁ!\ýÒä#NLÂW Smy}Â&ªÓꚇ!µ O ›)§;yJ—«^mgaU[‘ayy™OUšÁ:ŸŸÀFdÕUííìîn«Á¢ABCÏJ´Z ¶»äÍ`ÞÒE"Wˆ…ÓD"&ΪÒÓãÞà&ÄÄD@ÅLi_râ鿣×{uxúfl·[gê³ÐGÿ ìÂî$ƒiâÊi”da¥BxœÏ'‹»Âð/­îoÜæjÏ1žcTò=žk#<¬K¹É¦7˜DhK·™ÊÅlž»Ý>1] ð‰~N²àÁárò­«£LËQ˜FbŸ—l†ñôó{JJÖõËåRñêîÔ­Úñ˜h¢àãý{ÉØÞ‰ ‹«"Mì¥ö xŽç~ÏÛ7S}šš¨µ¢7”áššaý¼ã‚¸%%û°exXl;ëïKÅzŽ~P°xÛ`ý–ðéÓ/Aíÿ:IP"Þà€‚¸ø÷)¥yà5tO7pînvß&~ÃÕnõ}u4ù»¼|‰¬£¿èÇ2¸‡yœNìÏöoáܯõP>>w»|Qù.me±ðbe®æ €¿Å#V’,ÐÀ‹ÀU‚/“ù„Z²³Ñ÷­n PË?¤'(p„£ºû¯öÇWµºx¯<%&ËscΕ¢Ÿ?Âgfú›ùÛï«-ƒKKZvÕ¨*®wp¦3¶Dˆhj"eúa î®ØÐR/)™L³2^lÌKär@gdŒ·! žyñ*~ Jy|…Zs‰LÊf§w/_Æ‘’“ã /¶¯Vkíýß]n•¼8hl†Ëy.daASçþÆÊñ‡¤p•\·[ ŒW¨r™¶›œ/@Ä>-IÐè©é©¬T¤ÿšåüpO*•¦È  à>‡€ŽÎ3>ƒYN³ÕŠZ~ãyÒË=q¶WWÌmè|®ž—‹è?WOùPàÕ8°°î®V)áá™»¼ŸÜZ­ “+ ûùùí'j™šzd"¡™Ë½Ã­r½Ö¼ºÙ¥º¤E‡B8CÔŸ4›ÍMš—̃ÄÃCäí ¯ð7£~|Êþ’š’²eV¯*ª³3þíœFc_@NÉL¹ðô|õ§áˆxlæ‰Utƹ¥hDõ^ ¡$ 7Îg­)· eHvŸÉcNKK^^ÖøS©½ÔœZb6 _AÞ@E¾ hô¬|•Ù-"µÒªW3 I#÷1­ ³‚*#‘É&Àº¤£@I²îíRì^wÌdµ+‡B´¥¸„+J”( H^ðµÚ [.6rÔ×ÿØÊÉÀ£b«Br¹h'eBßtî ”]¡À¨ò:ú=rê ÌkB®ÚÕ«ãi>÷güü=Ñ–00ýãDiiop«¾vÓC×°Z¬ÛÕ!Ö]í7ÛÒÖ&µŒÉ/* £¬ìCU¬õé½ô‘-Lù,—JÊÊŠš@—µ¼è1ù툣 ×j²ƒŠÎFŸV¹Åâ¯#°èDkZmþ6W÷—½K§çô:‚ˆ@Í|“a{,:^" ¡2 BÐЧšøF3÷Û‡Ò¢®®7‡¡Úmp|ôÿö±àõä2v 0“Ð ûõëóÙ¡´MÓß'­ÓŠ5ó_~ê®ú½¼Òáâx¶õRBe¸² ÃPš>§½éÇ*Ã(__š|MW²²“ÚAÒ¼Ûa%º‹iºÊÏnn,DšY¾‚¢›ª¿Ö¥Qyá·=ê°æ#‘»†kR[A¬Óí´_K­á{8tÐ<@~ó’\õQ4noά8- YY6Œk0ª³ÂÿÁÿSv੪˜°ÀàAǰ¤dûO?­÷ïßï8m-Û®ŽÕ‡JÒ¹\]¿³LÉòÍЀ7ŒIè†X Ê¥µÞƒNÿU2§†¸n71DÔþ5µ( #d1 D\×õrždmmmõtðÖ†0Þ7…H::ôö ŽDTÌÙ›LÄ\çñÁô‡ûGrÁpVÛÛU$’ 4k›Ë>uuÎÿ˜‡_Ú”0J¯±ÄŠÔ>‰HH0$‹·'± Δcºº©c`?S¯E‚Ú®³³-ñV*Ú—ËWǪÊeÌ€ª^Ó¡ÎVJ~(ÒЈ5ÌFăQš_ëž.Ïy¢?p÷ÊØ·‡Fkvm££D))n RšŸßSí °Z𢋈PŸínúDbh–[fFcñ’sØÓé0\ó¯Òd¶P,EG§,¥z|¶\æG~¯.Ö±;ù¤¸„¡Ëãaôù³W¾¯Ð#«ðiçP¤:‡ÇóÝÁ•ãU¥­éÑg]án°||Ø :ž®“-ùòcvEÆ“Üi››û‚Â%Ÿà»gVIQï$ä´ÅJbKYíÔßNgð9:¨+`©”Ø—½ ½ ¢bæ¦vté¹åôt&¾*këþÙvy}}¡K€±Žˆ˜[%»¸]âC¹Z2%0…®–|Âsýø‘_ƒ&™Uï†æ™G"=«Ù …¹r_±ñ8Î'7£ÒÜîê­-øìQžV«¬-33(<.ñoWk,„ª–€ÌybÓ ò½S® Šýw½lya”@ñB…äÁ•QêGuXl¬)S¿Ün7pXrÉÚD²¤h·že„’öð§U}¯5Yb8öÄ9èúŠPÏ 1 …ú`ŠÆT Šn—y{V*€a”Š]¯ÍƢѬKAýgЖA=uzk[k+Èr±¡d¾ÌŽ·—š>@¼}f-ÿ1€Ì‘o—pt«].~Ô„”`aâ'¡z¦¾þ2½ÖîTðÛ›èìt*^å–ñЧ¯h>ààã[~—rqyFæó8³ÙVzó9rÐ%ã•Ë´)5µï¯iò©[[kW–ÛØÝïâßàNfG1@/ 0¹µ¸ˆ ŠZ-@‰Ä¸§-œðQkªøÂvÿï¯Y“çŒò„êCwœ9µÙÜÊaýªWGH)ûÔ3{ûx€(yA}v»4èbÂd¡î»n— §ÃÁª÷¶-³ª2Fð?¸çktÆsYÍ(ðX[ RFew[§§U¢C]( Cººcž&2°ñÞš{{sC×nÎO½jj0'—Ÿóö´·¿!£ÝÇe5¿Küw>ÓÊYa¢£ÃV»,–Ûƒf«Na¹››8:ÃïÑžXX|ï’œŒ‹E²:ZB½;gMM3¦#à|áu±?[Ë;ä\QA²%ãç r´¶~v=é>ޤ½‹ÑŠ0ú3;§ `YŽkhà ‚Úæj\è=ˆ·F„Óæµ/mæSö’D a€ڢȬ€Î ‚Ô0€tsvì_VÆ2IòœE7t¹ÕïÔÆRH“ÿ4S¥ø1…*à?”-‚ T¥öJ_&ÔZX†+:Ý×Bîo}3%i‹Ë¦C‚Å0±bB¡ü@GIIù0ˆ¯ï•v3Dsjv”R‰?Pßq3¹CTÚíçŒ )¦Ÿfã1=ïÕO8Gîï‰cý9rôö{x“&ù ÷—â,‚‚`¦Ù%›g|]JßjzÄ¡@àu±Pytt_ ù…­¤@¡w Näs„edP ¡Ø 8:J3°ÌÉLÚ•Äæg8¾óìîáö…íîF·» Ã1ÃÍåãSb_¿gÕhr/c¬<Ýð¯¯;@ŒÇì‰ÃYÎó \A_nã€]HèwÜCjc#‘/?‚×Ïw}Û! $ßaŠKR¾h›u!Ñhz[îCŒ‰Ù’È”GXí±t3GJ€Ûm!ÐÿK-B,IléÊÂE# öô‚Ñ ÆT?ºÞ¼=šµHXç£"ß°)7üˆNšl–Q@¯V ÊÝcèFÈ"W³$[SÄÎÎgÔÚçgFïíîñÙR”i:ÿD2ØíÔYÚ–¯p2~¶®É¸E‚bÇö5zhËÞtÝòþ¾DÕ4<[ZâC7 ¢ß¶½A_Ÿ.Y%U,¼SÅg/&äæÞ«FKÀøµJÄý'ê¶Vô 0WÂa¡Í›lõÛð¢÷¨D{€ö¢Ž©Ð“9 V=Q Ëòí[þ½Y‡—ø¬?¬O°®nët¦K1¡64 UþzB°m¾áIµJ£y¡AIKOÏ;«ŽÈ ­d ZØØÇklT§¦©èï´w¼…šƒÍ ½%ƒ/jýr`y5ÑýM@tp½?ý‰Ñ|²PTæ—Òg„œC>Hz 7ú:r˜h »¹q¾ôPѹ½:[ẻ‰B [ i %IMMô¶DkŒ—€©õd?Á€Š7½@¯4åˆP*B>~¸…Q®0F©oHV8¶ iïÌ$™âWú!‰ËÝâcCÄ?+1•-‰‚O ÷;r{'ÝÙ‰<Ç P„\ïu檪Ñ>‘)HüÿtÈ”QŸdƒÑ­µ´šE>}:'N:;?úQ­”øÉ‹šÃD¢`sgØfî}ö»çA †‘Ä"Q€e~À( Z ª[ì|n(HJ09šÙð ±6¹˜+W*¹P>oÐîä¡8QþP^¶ÃÄçÍAŠå?QìôŠñ–ˆžÏ°?/-k#ò>î3T”ùÚíòf¬ª‰CX3%71 ïßñØþŒ‡:Í?QIÑ·ì\ªéÒÄb˜ü;f-Þ|%&“ÆA˜nnÜâMòøÜ^¦¦ƒzƒîï¼nŽÛå)P¶"à»;º|L¹#wKòñyY¨~+µí®tsqÃʺ1Uf@õ6l'›û¥\NŽôò–¡Ÿû½+tQèÿÖ+~Ñ‚PÂ:Ì,©ù'G•»}›»iš|‚Âá¿×ðe¿ÿüy!Q ^ÖîŽÖFBÝïÓ–‡.Tä-<­Q©/© »ÊÂ@ûîê}`àÖ&½‘ò¡ÓM§©Æ{ØJÓOÀ([_ÊœG±žÙ‰:ß0Á?¡õªï hä%Ž!·kkõ#1•p˜«ÿçÎÿuMo,|ײ\Éñ`(-IôS·ðÿnµÓФ±2±ø×vGÖ]22%ƒ·À°65Ñ‘’u°øRŽGð¥4Gð=Ð^GÅ N ¸ÞU†€šTkxn ²b«÷“ÛåÍMïßâév&ˆzÂÌÍ Ê˘¾Ñî´.@iz4À31‘¹ž sAWwì^ÙÊ7¹S[í*¾j×™NˆÔíâõJM ÁK¡-38쬱ùtMð×C¦3p¼æä„¡z³Ôg«¬š”f0XúUíò ÀðÅ3ÁÜW´iÅÅ/ >))Dþ¨ÏÚÑù\?¤è}åîâ:tEïÄu4!H½ŽÜŠð‰o¤s®¬å ÝÎPuvgf4›Í ¨’ì¸nýÔë}hÝfw8`ª®é&jxEüIbMîò‚›\Þ3 {ŠU«Ó—(EÏæëõ~¶ñž˜Fí*«‘xÖþ¤Å¡ý˜ó£;'"oïWº+í@Ð'—·2úú°Ù­Ha k?ãy¸ÅÅô-‹±¡¹0®ÞYBWôÒ#܆7þôñþÐrçñyÜö¨ÁóÅ؈®¶\…4ÆöÔÝH`ýÆä ºzCõº«¶¶¸€[z"”ŒN؆ÓVµHÔ>ȗ꫌’¯î’9éÃМ/ó6tÕ Z^ļÍ~Ï4¡¾ýí"žg‹Ïl·Dáöî)ƒ©²‹XãxLX‡~ߖߟ?rеfÐì7ÿ®>û ’6iB7›¡[R¼7†Lõ MíkݳÇ]Ä€d~ñ–•-þ4™üÍn¹T‹LFá›=êƒÈÝÔºí«×Ky-,o2UüçXTüÂ6¨‹…¯ ‚©2ÖT®»`v¿5Cæt0OË­FÁѽ:é…›ª=÷þêNçæÆ[¨q,™ÄÊo”ƒ$+;Yâ|þn®îòEƒ³ è °s–ËüÊSŠ?¸¿ÉìYB,×þÐ\ݎ±íäeª'@O7P+†®qþ@XNWbQøŸ¥‘ß.ôôC"2‘ˆ(GBMî¼ôllÑ5ûñ´ Êå[v«Õ‹F\X7ai¤£“uñ¾XBBBj¿°¬­C­6¥°Ø9Ö[ú÷Y&—³ýüüžLä¿Ï¾¹¿\\fj¶‰•úÝòjÏKf£ÏŠÖÆ ?aFFGÛêN—¥Óធ̤)>­,Io<ÆéŒþ<¨ºšøpµ*öÛ©¥‡|´ d‡ï,YÇ+BD¨ÆGG)H{¡‰–ûkÝð¡øU¸/S‘‡ö³z.€Î½·\nÅ6þjr™™ý¿åŒé² ¥Ó¿ì]¢·Ð<4–¾C{zýt²È@lãi¯X¯¾º–u9>ƒ¤Öõš‘Óá ôáþ¶ml,ðGŠhF@ª¶î(ýóïtõÍÛ£YVnÕÕÙæï•°±±™Íçp`aî#©%ã9òóƒµõ{ì(ñ¶Õ_aÁ`0@P(&ßò‡gFC|º86ÌD>nÞNuà÷ A¾×ø¿~Š'Ë/¶·C\‰„Ã÷·G]š¢}(ƒ21‘;ŽŽ¯Ÿi¼}H&lµË¡EIu…žqþ³ U+×!ÍßtáñxÉ únøŸØ"%P¨ÎÃgF!+:$3·¹#vòš©è¼îNÌ7——ëôÎ#‘±KòÉHj?©ïwut´ôWè  %úÍpÒé˜ã**p¡7\ìkƒ¼‰ݕұšÞÒ¶8¤cp8H1&ãóãÇD~&Î`4bO£æøa‡vöß_x;Ÿ) åtÁYn—é™bxQ‡yU %nz2<ü”1Uÿ)D§¸¦JÂzTb"¤´#3þ–ÎLÌ»{£r¿R·£ˆ‚(·êëœ/Nø&&ô¡k&S56ÏÍçoШ•Ü=óó•"Y‹0 tâTZ4y¦ E%ÏÓoD’þӎؘ„¥P¡‡ö­á䡊¼,NRãÏÀ=ȦO¬îMgàa™„ÂLOYí)ÿøþ‹l¦uv—VuÆ«‹?çüáöù2 YY9QkéßÝ5ÅÛ%æ(?¿§Ð-ÌŒ F‘çpzU·‹ÕVÄóutm×§ŸŒC#ÿéëo<,K“‰²Qš®Ãš„Ç,N§™HmE-ãyÛA/êƒüÇó¤sØ… ‡í Ã3ò³ßê7ÿaæÏî$ÓñÖ05€åg>÷g¡ã?\_µƒÕº5¼[b½nUó”ëŸ_-h>”p©cñwƒ¸ÌàÒ«¢âKòâ..üÍÁÔ¢Ó Ádd_åN˜/_®£»Vãxz’÷{zyõõ£eGÁ|gÆ\:*ãð‡ñØ‘±mä3Ëéˆz=ª‘‘ÕtÕ{f]ÏšÀE¤d>ÂFãí­­°n7g9ã¬óµN­ssH À<#ö˜Š2z_¢š.ñ+[”i³e¶| GnÕ­¤Ú´!Žú±SÓ£c¥ ý =ÃòdñËa{;ŽÃ ˜ˆ®çÝ N=}ý•¼¢ÆÖ‰ÕÝztIJDYTIöÊ1á§$¾$›Í¦,Ñ^½"O¤O3iXøºÞÀîÔpñ1¶kjŠPQñЫD'Pð#èäõ«Í4|oþs/À{OQyH û£‡GÂ}CÚ×Y ö‡ôŽïÜo¶)}ʽ½%âue ¨Pj¡®«7N\SCGoý&y7¸§§Ç;==½uotjâj·Èÿ›gû='Á;Æ#- b4¢¢‹Oå\ÖôF#Ø”ï3M$dfO5¦§¦–®O7‘ TÕÔB§Ë @ŽøÓß/”ÊëVlGöS.Ñy³ðƒr|½7a¸Æf“³bþrá´ål›+ éΰ]^Æ/øq““÷·—Ë+¿œÐoªívI4¨ J¬j5 ë¤e)±®úää  öFÛúû߀üu·¨Â—Ã¥öKÿœãÐn<›î…†ÃÅÞ4»Íʯ_¿@ƈð{† =‡tYjÂú6¤¤ÏQ!/l;CIâKÓDZt±_‡œ&ãË Ë™ÇÝš±¶=\@Öa0¥™Ç+0Ñc(ÀǰWWÌ1w66e~y&X€õ½ ÌÈ çêFFÊùAæ:ˆ‹×9˜«).+óÉÊ¢@#ä”ßöâä&B 'ðJHÀ653cÀ«ò9œ«Á*,,,®¨èˆ§U}óØT\Œ‰‰Y\Uàã§?ð#è×/Òêº:8èѬ·dýzÏ ]Ä]Y©îÁžž PÚdÐnB “HÏÄ䤘NåTÒã‚ v4Kºm|\áóEð±µ/@*¾0þ[ßÈï$š Ù-QA%ÃQSËÙu ‘†ƒá]>0¹º €.“ô&ÐuÅQ+a`aù`‘22–Îpò=\‘ ý ØJ…j-#¿Åßu´·/Ì׆†æ3»¯tFDˆHH  ¤òETW³Ó|)dlÚ‰¡^ÚØ wP‡°;¼áT)v8Yc3ÑF棨hàD‚ÞÐòˆgåJS\k›¼Ž¬‚òë©Ïøf8f±üÆízœ» ù´u©™ÐLéç´ÛɈuÃü,[¦ß?ü’ºÜþ1C»Övû9\óÁb“fÖ~–ôb·p„FÖZ6³¦ÛnÆûœºû‰‹{xX˜ˆˆ W%Áó‚=`<¢×©• ‹Álˆi¸-Áè†2D‰Êq98\ßT« LÐ*}þÜê~½ŽMޤ¬¦F Z=ÊôãAˆÂ‰NÁ»”à¢î­ƒÞß…*Iîñ¬ÄªÆé=顲|É¿Ü2Â=¹\X1Éɶ&úå¶Ÿòœ¯®Ž¢XY¡W£ù`ü`db.Õï. ©°ƒ‡õZ³ ££ãv½²SƒÝà¢Iˆ‹S0kzY•×_k0˜âWTDW¨Vãm³9ÐÒÕ…x}}Mùî Ù ÅÝÑLÉ¥cGðgk,G.¬d⌨@¥"/‰utBWÜLþÆeKç/ D%›;:3[›8PPŒ™Ù ~xQûöíêj5b·pˆÂf¦Ì/>§dö3uÓªÿv$”2‹Ð„×Í-‰„‚‚øËº4!£V«‰›ÏIÛÎêœ\\« .ÑëcccÆ»o((Ĥ$$òϘ•¾œ¯nm)5½{÷Ž1–Úâ>»¡pþ_g7:qpt«]¯­AO^DxyyM•«$#<²:Üå$–¨ïPî㩲(Ü©ÖÓÕM?ªíèèHäuãüÎb‚@MMJÀñ\:•7®~à\·ó¥‚Ç×o|#º$vûŠîu÷·‡˜øøÔ×v_†+ó¶¹yz9Û.Æ]ŸŸÿ²ù|<ø\OvÂ@Rà±Ëž¦µ­-*:Ú»¼œ9g²÷èÈòÍÛ·Ëû³‰¬fx¡¸r«î"ax~¸LúK ÿÕ‡D¤¤¤Tf—ÿ?OT|zi"y,¯ÀÀkö» +~ưÍ(ÝãszîeF° ÎÆ cÀýõ&ËïùÍÜŽ¥ŒŸ¶gÕƒž"RopŽãq½Št;1=Zj‰ž¼½<DFFÞy!¢¾’³kÏ—ÞxÏÂÏýG/ô€6íú§yÿ>ü BiQãØÉ PÙ/îî¼³eèe¥¥Ñ¦UZ-°À6±ÅÿøÑó¥Ê|~ê—PÈ›Y…7ó€Ä4þ'FÛýí©ÖÙÓºÜ]1@Afcm]›’ïÖC•þ‹ùLVWIùlnïËGZÛwøœ¶”½}}_i^¿ö”LåUßàÝ5;îÐ_jNnõó˜pr1“ŸuÝ€Â{-ú­¸ò` ϼ: 6vvzQQQÈ]Lº(ýø•öû*úffê9w/»¹RùîŽXÍçØ/Öº±ô ºî/5¿Ýæä6n6fR,ñޟɱj5Câ““ûaûƒ€Š×4ŠÖ)y—n&x ¶ðÓê\Ûõ©1œU^EèýÃå’yãy¸}-Ú¯\ζ~,dT>e7sç®zϧ¯6³800`z¾3žÿó§gP‡N|RµÏ—ÛXa!£Ï°RI†U Ô´ÿû9ÌÿÕë•öÓ‘ 3» üñÊ…òÚÝŽwàͪUoz¡§{‡‡-D¬&^Hëëg®¹}Mî]?$Ûuu¿>ykco¯ÏËË»·[ÔTXžœËWÆÌ“”ÔË/ Å.´¤±È%´Š4¢ëyN¾*øåÊ×~Fë¬SÀ²¬µ6µûMjELýv ‰d&Så•5Œƒ½OG:¥>ºÒ=yŒÆÀÔTm{òÌÛÛÛ8y?¸hss“IWW·ÛD§¤z¤v=444w¿jÅþe·jBI©*j•yg8!õöÖæúzId$F]Wg>® ë¢@W8axï"°@¦ÀëAd¡â1ÎW[ ì8ü¡þ+€îþÁ ++k¼©êÃàÔTõç/TæJ‹öy¡t¬§›‡z åœ^ÌdWžg˜}Qü¤«»*VõCQAŽ›4JÔ˜#·Seôún¿j‘‘7u°´¬ŒÚ,kço‰a~Ž"'_BÊ žA'œ•wA6Nî„xN=ËkÌ`¹q4W÷è«fâÓQk·ç7œ.BÆÌ,p£ÐM•Î:2±:1[P~ Š+ÊôqgœZ­É]]ÿ sÚü‰#7=ù'JØ¿MBDDü Šù“0ì|w’š "%e ±JGq’CúI,HéWñèûT,þ@ÿlÎ7R”/J6ú7K\tãXû +«~ï®ÖØÝ3¬Ž<<p& 212ê466îÍÕØDOæv’IŒÄ¿Lû}ë±9å~åŽuGÓ³gϦó¿”²ç)+/ÿš––¶×ŸÄÆr 0SJke2ˆ­¹§{ØÔ”û/ÿVVê©óP@?Ô÷é[r2¡É\5C£2õû÷Š”DNëÙxyù§Nã¹ }““ q±±ô8\ cØXZFöU@AQûDgÇZrC'õ{¸ùÇq×—³z1ä’/4”dnI| ñs”V5â˹2ÊÙrÌ`¥”ˆ ¨×‡¾~„¼ú÷_{>5ïø >þjþÕlWRi¦´06=-þ‡³ ¬%LÖõ×ûlåÑÚZß¿¸M–ùmg‚8W{.3#nlµÜúÄ7 `u{4ëOOO+Ç#­•jè)¯ÐB õw…º(<<µ¿‰ÔzAóüOY$öÿJ6«´Î¾yyÔ Ö@_²ÄyRÿWòx‰ý^탑ѻWïÕõû¿·ôô ±ÖÖžvÆU¨Î~_KGVZZš€Ë>Ä=÷ ŠÊÁÁâ &d]½NA³D þj ˜É’t®BþŸ‚dæ!W´*ðÀÊ!ÁÃÂÃÃ7wv"„¼¢ý‡‚¤Vriÿ{Ïz»ßyVTàNj2ÿ§ofÿSBÿ¿ÓN§Û 6£pÜ¢meÀzÒ¨V¢¸»»—J™˜â&)pó@Û@.C† ¡¢v¬uÇD¥¤„ƒL¦;’ñ©Â9øCHó¿ùdžǸÍ£•ÇÍè±ÌDIzÛcOJý©”¸]ü?çõä6vq‘Óe¶Ë¢^<üì88® êŸþ÷®ì_.zˆÈË¿àææ†@šîNžù£"óððìÍV¡ÃzA>|ùµ„Øú²Âp˜ú0’©bmëŒ]Š‹éR½£‹ ˆété“Íd0æÀ!ûƒh®ÛûÒ#\$ø¸¸0žxéñHµ¡Šã1É}…SçŸûV<žF€aº3šV·W®ç!ôwIÑ´_¾\åÆìì´oQ ao©^à egÜÏ5ñÝí`’Úq^æ,í~ßý¼9wyÉãzxûã”cñ-¢BžbÇÖpº¶……&©ÓT@P`ûå0¦%'=CŽO™Á£¬=ðÌT¾Øt"dKÙw3%ºˆož?€ÇlYµ²²2œ:òÐ|“”˜¸t¼Úv¿t™šž•…‰ã»™øÖSâ}£½Úvú@€ÿL]}¾~ÓnæeII < @h3ßãðäºKÍ^ÁÁ7†\ü U¼Ää¤Ï5½–îUWÛƒvÿ ÄS3¡cb¾l ÁÎÎycBJ:ŠÏ†Ö:‹Ú‡wÓ² dºW©ú+À½?‹ŠR/‡‡‡SÍvmLÚe¯døä•”omÀ_bàâ~»¬W*ÒX_)úFTT´ÄN llÀìˆ(ļ܋×ee‹ïŸž]YOlêÿÓ˜'Õ‡Lm§›E˜®Òßœ·˜à?6÷&äÀˆž=]ôxäq¿;"¡¢B–Ë’ê(Ön£×iG’øÆø˜šjG^5uõSÂ*Ý.´¨çr_XL§è«««Ao«ÝnYo.öC*L&a! ¶ð¸\¼æå%>JTR²Ÿ«ÐxÛ›.k>–¦³À–ÿÛ¾³aIë0\]?«ÕzËÇ&üÉϊ䤤7¾ÙÙð>BRü‚* ê ’<Ãg5möGýÿ°÷%ðPuïãRI²´SR“V²Ì¾dËNÉ^´Hwfî0¶ÑÌ !m¶D‹•$)Š¢BQ I‹BR²G$EeIýÏ¡ý}ãÕûý}ÿ_Ó§1sçÜó<çÙŸsÎ}ŽôµüÂB às›KÏŒðh«Öm-OÕØšóÁ¨3ë}oàÉ“ó%®ÚNp|äݾVZZº2óýëiú¡¡¡Ý;™mGßWiÌR÷î k½ 1iB‚¿ÉÔÚMö"#GÊ8UL%!‘)K’ » äæNê˜xøŸóÒ’½•÷r€‡Zš(–b0·9~íe5àÖöìpfÇ»‡Ç’ªH®Î†Çš|Hòò3 –Zo›E^ÕÞì–a“ vÕ<{Çt­¥w¦´—¼²ÏûÞñœ±cÇfƒ¬4…óܘÃÙÀ.¯2øð ÑÞ’ à Ÿ>{8…ó|&µ ¢¢Ü/\À•§9¯9A RוÝ{Ìëý«yî›gÍšUyÍ÷ÚûÊ®}2¾Q+±gï쀫}ïíKN2‚Ò»[VM? üIÚÝ=·(3]3(ýTóiË„m›Þ6OyQÖÔ´ƒMéI‰j{G‡ö¦MefM2mY9¡2ìKnN§ÝŒÐZ<úä¶ÉÏ3ä”\}þòC;€ jZXLòé}—\WòŒ½\iW3OB¦G‘ètiKˆ´rÝóè`¢ÈYã¨ÅÉõ/–M¹evAQ‹”HGûSNÁaÉ’ÊÕ~I΋Ö}rœxñÝ¢‚¶»fÕÌ’YŒ7] /·´ìV¸ng^V^¾Sf»:µèØ) U%ÍÅG€ÅÒWZ£)Ÿd·ØÌ©*Bép£]rö,³±²³“ž¡*µSÅãã ½ù²æÉ‰‰3œÊ¹l2>ì ˜´¡«}®SÕ⥠y$)ʃU„¼]ÓÆìÝ—cf¤;[X0'wVì*œZJìøæƒ3?ôŠeÃËËÊÏjÛÛ_,Ûˆ¼,ïØsXo÷8>)¥ vŸŽ={orÚºÐÒ3¾yûå »nƒç¿I\MõâEd„ÊûxûiK/x½¯Û{äˆ?+ 3QEÄLÄbyűEgm|De2Fge=¾ªƒ¼N`EVl [:Ï:ƒ;þ¬—€Æ5éyQA“k_”Ì5ŠÊ˜õîÝÑxÛkS•lŠÇŸ¹«soE¬Þ¼D›—¶5Žä uÊföß.·uþòK¡“f:;‹µ”„4>Ú‡0KÄ×ßÞgñ¡.°ŸõH%«à©BR‹;×(¬æ Veø„윲h?]IVþ8 `Ë“éÊ!‡‹h5Y¯›ÊSƒÊRÞ¼¨¼ŒÑ Áœ9#‘Õ}SxÓ¦Ò¼PK‡~yÇV,Ÿ0¥¹w’l\˜Á\W÷´­g]—.wˉ^>¢,±°°i±çóx÷ñ¤;È%œÝÇìž·’µNÀN0›à篗{ïž$äÊnÞ)g‘£5º´r¯kö¶]}ï{»^ç÷µ¿ŽÜ5:.çÒæ¾ÙnŽòî¢Ç Ù®ö@­É‹_ùGUÍßè¢}ïPøÐ¯ŒŽªN+//§æ/<ßÉ%Ø;0‚eb+ Œ,W¯©®®}Ö„?š.s§å”ŽÎÎvÝèg¬Î®º°‰úòJGÇU[HvÅÞ={¶%X¼§[ÞÕ|fº°ÛïÂ…;SkŽi&$®!‰‚§8WÌK©ß/2v¬Ü%å™5›Ü'×J¹è´gÇ¨Í &5Ux(¾ªò’w?ÁÎ}øpò½] KóÒów/š£(¾îZc“!|Æ,VäVÁ 39`¯2i±N¬^]Ò²eq‡“’3¸/d¿;®&l{‰¼Véú}—Ië®ä=¹p_¾oDt|bØÝÑ3Èãwæ÷K²áââ„ue‹µ-½äd°uJ"ÖL‹W-ÝrŸ¶>¹àãÚûn¢=“(_´.Ë(¯,eÝ%Ï ‘5s¬ãËsy¡:ò 8œ´’ÒµÚ[{ÑG«¤Qõe‘´4å£ó‘ƒ7Þ#^fóÇ'׿ÎÞ ±-©uuA$g”»{ëø-+›w²ÐLs«‹ŽV³Œ{÷=:Ï}FøÔñ®cÅVyÇšŸÚôv'™k/»éShq¬GÎÝE:-'Ž#½¯ae¿(y |žh0 È%c2³8î\Öé­Ñ›{Ä+Òl´ n©éÚÉ71Xºi»gGhŒG¡è¡eþ¹k÷sL4ÄR¥c â&&®y¾eǺÂ:oó²ü"•5¡Ë¾:]é?]Ç/.&ÆÿíK™Úæri`{ó®xæ£r,{¢}‹Ï<ž®êùFd‰±þûWkÛö¥¹*{n“ «fªOoZÎÄ1íÍ¥Òº Ùã»A£®î{œ–“Ýš…%vÏÌÊ2FŸ¼]µ_Ó*åô€ƒVÂJk/)‚ás[ËGÎ]p*E@?îŽìV`òуúzÏQŸÝj504”T™š°åØ1aQ©ä™©ŽVÙ·ÃJîÞp”&¯8sgjë±€üõs'^ÊèY(/1ÁçFÒš M5¾#DI@×·/yw·r-‚tdÝñ~/*Òç ‰;mÄIÔ=¹09¥>þ鶦lP|xÎvYËB¼Gçluuém욠ذA0^¶<½Í“æøøÜÓz\dfÃÄ Ì"-צ:”[§ßqÊ$ ··Ä,2°éÓ¼§hÕWhÉ)«Bºº—çÊë4Ü9DÕ_4aÙAqÿ„Ö®ÝS”Þ¶ˆÎD•‰r«ÜÓfpglöåäò—â&…*+ƒÊ'R§Ô £éO*ˆ®‘XvðhιkÕ–:óe]?~Pä¾xƒ qÙô¸žÜ_¡Õ©=K[¬ç^:e9¯D%•*o~ì³Ê Å~ìªW?ª¾|ðDÀÜËíĺz —\`¼m¯òÞð®EHø<Ï·Íb3f¤Õ¶?ÕHæ<·'«TÊ$âunƒDêRò¥NËÛ»2iqÀ«ªkzI«Ã§Œ‰÷Îðý4mþò77Q+º`‡k©z)yOk×4Z³$#XÖ² ÓÆIÎÌß3»&'—æz9ëÝÝÓµµ^®ÜÊ1GÚã³)ñ6‡mËÑè6m‘‹¿ü°.Ëx;æÝ|—ôs¿‚'ݨCñ*¾§.v{sý]ëAŒÇYÅûG"W¹³ŽœŸw3$w‚LÔ‚ãæ)*¡ñ۶ɶèvìl«Y äržK%y _`Ø‚O9íO+ö9ð4?†lSíjwnª|2(˜BP ³ËÇ“g45Y‚P´~ü„×£&-x¥»re¨¬‰‰e£ªw׌9zN¹ñf*E©³·m¯B»™BÇú­;·o¯Ùò‚Ã%^>ŽÎ/=SLÍŸp/ËÇ ‚ŠÇëéò€ˆN¶É$fM²@Ð\wõÒí¨úÇ©wnï¥Gêêö6»ëuTŠg‡½Ãé`DL &”»f›QvÍWVKëô†Î¢ÛÝR5Ê,á`xøö凕Ž/;ýº6›3C]uìšôкž ¶i_%û”ÜgÄ-30Ð\r]FTú‘& ÆÒÒ†j]½&ú@­’SmŠŠÞ¬Ù¡ÜºîÚýë˜ÌdZþoWˆÍPy7çôÊÒ›[FH·÷¶½—Ùj³o_õzàd›ª¼Äð„Ò×/Ï]@hf’î”ØpCó„Q/Khkia(P@xåW‘¦(\zš c!Ýb~a¤¬œ>~¦*¿ËÝ;JNFgŸ‡·ÓtN¡™Íôĉûô$f·<ñ€d\ú¬É“G›f_œƒjóÀ`‚@š2òÕ+Ÿ§Me†/"^²uµ·ÞùC[õ—-Û»¿dR¶Êƒç“í ÉxÇ“ xNø86Éhr-[WçC0ŠÚq™ˆ†\ô¼l{á,øÀZ¥Úë[MÖµŒqnq弩’™¼æ¼ò‹/‡ˆÆù~za_ÞÙ:¦85…5»+ÒëÛï*‡-;a£9¾èxžê•Mo…¬É}r‰Ûs%T@^‚[{©}–Ë;Ͳ?Ì ¿Úagj:j¾qåÈIaÈ´ŒÇ‡ùˆ¦mîØrwÊäÉ[§,º_{3D‰x÷Î?%e6˜nìšsérwÐâ]3˜[Ÿ\ðŠ¥æ‰ X†Ý-:­.È®p]}Ë“ÈíµÐñöøøQÂÛ¶,²j¼~+þdNEÈ®]ú§Œg DíQ1µ@j°Tu×·Žmª¼œ’S1÷øñ»þ: #ä 2ÁSÅn4Ëhl¼_Ÿ¯¬½‚Å1M0ÿXì‚­Çï§#3ñ †O_UKnã;2HGÖœj>¥ðhÜú–2›K›Õ„ØÝŸ\C°)Û ‡ÌÐXÊ#óÇGTž‹B&^>¦%C¹®Í¥k[âÃÚ`©|½˜güÜ8¹|„ð8/anŽÑ¡‡£‰Ä{YUóKç 9òîéÄk³…·ÄÆÎk,l‹~ßÕZa‚öJSv© ÌF*$Õ=œÉΈË<$ýÂÔ6moTTGvýôéX‹&¼ÂåµKêoºlì[\»ûL‚áláë™UšžDxyLx`µÈ8¯ÀâXã+“äíË/Î yõ¨•éÁÛ'€Rn¿–¹óöÚŠ3÷©UžsX¥OØ?81dïKôn‚,ˆý8‡t7È“F_òè{ïãT=#°ã9+»(yþ|£&Q¯Þ´µctýœ+7N¸{ {NzæúÄ#*¤q€nÖ)u¢îmâšÈŽ]42ñõìâ yÆ}ÕÚ›,åo“Þ(jŒ}×6k·’Íäôùk€:–•%~|Æ©/Ø_[I±;kfxâ8’ÆŸ«Y¬ê{tÛûE&3¡þNøåx‹S;ÉO«'Áž:uÙÞÈȨ¶÷ØÈÉ Æw}ó ~{)âÝf†ß…$[˧åÞuTÐÒª,ŽBaíÆI«ïßU¾äÑ–PöºImëÖ íí]¶¯Å@v<ߨ hcyó‡Å+“ó_”ଽcU)ö¿¼%òá›w ÅŸY6a¼«~ŒsÀÍl‡C‡M./ŸÎtä/bF…Y#X-×dtî£=åzUÕûØ÷GfPêêÖÕ>»--{!êñµ ìQ•½GÕ–eoS–Þ&TÕs40R„;‚U™¤†‡è½ººó®ßdLyPrA½kýlà¨c´G¶”a¦ƒ*xÿËUzzÄ•gUÇ™ Ì]˜<Þný±í5¾Ñ§’ÝÄ«@ŽmàÝòîôÉù~ w ùû&?š?AîQU¦Iñ©Âé æñé\-T%Þݽ|{dd̾’î76¢2 a…{—Î*øUÕay¹)ˆ!º „àÙ³[žæ8#^XÉ6+8ÃíLNvŒš¿(sŒÚÕfjþ"uW7mŸ©¶²îEɳÝg«æíXqÆáiséåøÕá£Éòe w=0žçI æ|óHoSMø"Îzºå…2gn¸þð¡P³îÍÑ™Ón5°N>}G±ÚXçSØž=Û@ŽÚ_"?zïíMO.LŸ±eÏxζšéëÖÍîzW½žumš~èZíÕ«O–aîúãˆÄŽ]]»%k–Œßòð¡ÑÆ]‹(2áD\â2‰‹Ý>KÜvp0%¤·ðDÒµ;»u½s¿“°8ÍEÆ//xÌù.½u²sê_¿ièzf\Búʬ¾Q×>¼ 8ÜgýËG(UÏ7/ê½s¯—Ä®Ð|oõ‹½aT¥n¨­Ë« {wI€@{ëÉ“‹œ×dWg)‚ÜáÓmR£%ÄGµ­>£)”ѾÇnÍ _ "Ï‘Šk¦/œ=-œ± µþÓGÓ‚(¯ÉìË{¬*×Îkzx{rï{“…îÒ ›Ííyû|oøÛw•GØK-Ï[p*»°MÈýÕ•]™ÑZ66{9l™?P†gì§ÜsAˆ²ÿž¥™^ïRsv\ -<¼îdÌlm穾äÖ_µ:Fœ:21|¶G›ºßîBÂF¯OþÏáÔ­-Ì—/÷O¡)¦€Œ2®qºÆfpp‘çÐñ'çk»»‹‹Š9®o¯e¡é·Ò‹?ÇNG0¥ÒFœ t©Ù,¨qíZís‘³Ôöš-ï|ùX¤¯7]„W7B­l®Nóò*”Ð˺MŸh0w"Ýîîì0CÈií8†,yùÈß¾´yQDÄà Î}2òQXìùB´”O9òêáGöF80ÖÂh̳%k2‰.3BAÊ)‡&L’SS÷ñ£//éc¾Ø3OHÁIЩÙÒ{ö”Ux5¦* â ¥û=ÓüE»§:—fbF!ªØ/xD°òjïdd6„»Ú)¢¢Ü¢X}\gSñäÖ ÒÂ7·$mkíË’‰Àôž6-,,(Ð177ß[n>ÚäèÜìêÍcÌͱo–¿M°ÉÄ®N'. žú¶èЧÞe­äùø˜Mo›M-,&QrÛQÂ_×å-xL–?½g}Ad}€Õ¹h'ë5—.q•ß\þø'T³5ÿ±íã¼æÒí1gÖèn5¬¡^[ ¯®{eú¦Î‰ ŒwÔ7KðîMšæÌ1Õ¹a‚LV×^w ò4Êþñ}á‘cÒv¤ºÑìí'û\L2š¿=44T.˜)M­l0~ÔÚk3ƒ/Ø}ʾÌù„’—±xñ”b*w¶<=p Ä4…ê§µhÑ¢1bÒÈZ‚Y¬Ú˽­ð¬â$™ýÝ3åê|u'!ñú®²°:bóç—Ë®ø$oõ¨«©Cšè$ìãã3ïÔ\̉'P ‰7îG9”´æœö²e2'#¦Ô«Nóttœs‹>'Öw4¾kr÷&¹ƒã„%L–¬_¯ ;gRŠ»ó{ê”l‘98ÜÇÇÇZ”LO¾ø0 4´îÑÑ—E1#å-VzMá­UªN­]jjd$‹Ì§ ¬äBD¸šŠcå@ãÉé|’ ŸÞ³£ÛÝ'4Ü '¤Ðo£D¥ŠN^w<6vïþý;ˆÎ"›WmxÛ¼¢éåËÜë[¤•÷¹}ûö¥Í}‹ËÓYË—/O©ôï;j€¹Sò†^«/C¼ãyòî„QÓ¦?º~iÃJ)Ò}=¡.î°ì eü²G´®n*-Š[6Ézõ¡ë••£Ž+ï¨Zfa½uÿ²H¤ öÙE‰L€õ •_º†æØÿÚ0š2ýïZ&âøò\Š÷å(ìqDøW±ä¾2[Ô'Ëô‰Žn¹·Çä•ðåee×3_l¥å»h))W>ÚY$ÆàŽýöøKìÞ„ã=‹zÕ̺W>x/PMãmÒ`"ä+G"›ÍÓ’Ý[{ï°hâ:™ׯ±}¸òÞ!BG_Kssnþ¤p½¶÷½&r-„×óžÏ=~Þﱂ„ø©c§i|¼´» ÀI`Ë¡ò Á5Æ¡ª,îa£ùºQ‹W;g+óöåãmYYâoÏhË/Ï·²eú˜­ êÞü®½«ó¡Õñóµ}›?Éù]Ÿõ숎eZ{Ï$)|*LžbyùüÔæÇç‚îG-Ç8Y¹t©3çfHîÓç¤)¾}©ãSRmh-œ¡¡>Åñ‘· ¾ö„LùÅâí‰E­RÒÒ#š%‘¨=âå!¬#»u÷n‰é@©lll6zzBÝoŠJJ´C¦’Ý^>ºòœÃЫÊËh4zIªC)Êu".nJYZz:ITLÌìÌJÅ–òÔ—Ë>í T_´p¡pÒštÿ¦-_¾$H³ÞyDƹ"-†Yr2Þ:EvuºKȤÆÏ¢ž÷9Öµ<¹€&t“V§Ö64¼-æLÝTµÓü¡Ú<ГsùÅ­ §]!!Úk³¯äƒÀ9dÁÞ>ðúõ%‡ãÜšnMHûðჺʽýï¥ñ›2ß4r”)óvøùùcÚ<¶zø ¡È**ãÎÙ^›šæôDV`üI“h¥+›ûV·wvN>½âÌ÷k%$$ ’k99%ŽŸ9S)"2r¬±±ñè´MM Oœ<) 1ë¾ÇÑœ vÃÎñÒÒ½yùf/öïß?w”“ÉôS×311)»ây¡½íÚ'W“;;;ßÌôJöÚ´IäæÍ›9/JNùù~ê³"û~¼²ÞÁáÐû#ïÏÍòý`f`l<•ȪV°<·®/öù©w^²¥fû/Ó­²àº¹ùah7…wÏÒ˜ú®µâ}¶Ï›7õÈܦ=ÈTëU«Æz´UO‘3Ço¦Ú&ï7ê•^Ff¯.ðfŒ6NÔ¿3ÝA#aWS“ýÜyób–&4,W)µ¿*œ4ÊÐÐ0Þ~Ð[Öd©o¶NyŠ›IP`àÐÛÅÔÔ Ó§‹p8Þï÷¶·»âYÕ3Nž<Ùþö­nGã½È‘7öOÎÃ[߇ÔUÓv²£ç!Ê’S?Ù²ç„üŠÓKK5z8gËʬ›š›F/‘Ý{ÌññYV±ýÞµ£Gg ,‘‡%OìC6Zè(Ôˆ·½¦.$>#0>>~·ºòüùÛ%ž¹Vj¿rÙç}Ÿã14@q©2àѺk›C²·ÉÍÉTqoéªíº"=rcoF9H4¯ÔŽˆð&Îià ,9ÜVd0»¹ôLÀ­[ÂÛ4Ç·óŸ ¸zý­ƒzz¨˜Ù†ys箿{@108xûöí#ý%f},~^zÎv–oß[«¬¿€ÉÕuÞÉ0ðØW'»™lpuÝ6iso+É©üâ‹íõœàÞžžžîÞÈ~Õ{·¼D-ÚÛLºgÿ~Ëލ4QTII Ù?êR“’åÓKm-Oh/fu--7‹M¶+œy#?ŽºúLÀ³î™…­ï-N!çl¹`W( .oݺ9¢wo¹÷ûÕHà° ahd´ãСéjôè m¹¹ƒÊ&²?%ikkë˪ë“·ÐäÜAÛmŸî‘jP8Ü$äYæž·/÷FF©y½s…%f<<<®zŽXßZž*,,\Û|Õ½uúLßÖõ•Æ­±õ@Î9¿òöÑ2ûY ÿ£q’Jµ‘vGGœ©öð_߈Ûwë–ÁFOO¤ÒëZqâĉ®-eëd£G¶··_¿âÙ¿ãp&\Pÿ ‘ÓhtÑ¡TäãÇ ••Ÿgix¾™+;gÎÓ/Æš˜˜èèéÕ=»¶ÚíÅÝ—¯^Ý‚Åg·(®I[ÿªòò•ž3ËÒg;sžßÏ‹7‹-Êps Y¬¼öÒ–íÁ-+ÚT´/F¼€Oæ””„õVÆêKLž2e„€ªªê¥¶—¾Vœ=vlKÅ¥q@uޝ<™œl[ÝÓ°ëöለÀBO3®z½¿ èRœ`± O†p¬ÂÔkݺu«_ž9}z›y‚N¦{«ÀÃê·ùØ »ƒ192ãUG”ŠGms³ˆ¤¤ä³ÆFvMÍU¯Çë/ßRáTˆIY|ÂO2³[©Êÿâ“'ÌO6׸/& IÌ,p^Ó‘……‹ÞëT~qì“'O.¹½œú(iM@q¬>­³©)Æf³÷<!Â~ùør&:2ûZ¨Þ+ª|¥}[vš  `2”+Б%‘$«MY™™Ahå Oƒ•³®ßšô´¥e—ŠÇ+W_Š=iþ™j¯fõy·ê•—#ÂÐ\ã9ž/â¶ìm‹=~\°Píý ---††¤€ rð´Ç«µk3Ý—'U‚>ó‚%cÏŸŸ8bĈuŸŒì4-mí “&mj42þj‡••˳[{#T=±Hù6 gQžË–.EðôîE‡· æÎ•zxlYºº³XB r µêÆö-Òò‚©…fIn5ÓŽçÝ舤ڽ¨ûÐÝÑô䂵66#ywî¬{•2p'±õppc‘sRïÙÐŒ=²Î¯½Ê˜‚ûÂÂR6÷mÚ¿ÿ±ääñ xßv¯z¼´¢gM tjl…3_½·‡ÌøŠ‹‹K¤Öyµ”|>t½<]rßoœd2÷…yÔ íqç©UÔJ“ÛÄT¦‰ârü£DýGçØÍU˜|ò5Þ.þ@ŠpÌÖÈBë…»\vÛ%Ĭ¾7°0ÙTªJ*¶Ð\;õÐ$†úœäG¦R?ñÛMâWæj{ÐQ8ëDçCåô=žÏ "·+±ìLb¢Îúõ¨%%nÞj`$%X/Ý(,ƒrŽY-VÑþömÞðEO_¾ ’U 4ûÝÒæ„»½ï¯}’y~?ª~¥¼àkeUhtÆbûÙOA—® :Šûaô›ö`ìÇ•>xtP{ü´iA@ds«ªd`vxû°Ao?¾¥¥åR‚Ãã#×›ŠcÝŒoq?™Œöºu’ãX¿îšOL4ú& 2™õJ²úaŒvFy±ßYÓ$gË•+©Ýoâãã‹ÊÝ«<ˆD¢†:Ê8Z]lÖ¬YÞU°6>òèt(âKµxŠH}}ýÈ% ªš%ba¥m*åì ¾‡H“¨OÎÃMÏͲb´”¥H©¸+°’ü;›Dd”†*MO³%=¾I/²:«cm-å/.³³¹Ù!ÄñB§~茠ðEVÇ¡ÞX´ ¶®î¸•6'ò¬8±åYPj@NÄbî-ë‹~Ìú§¹É©©~Z1×F°/¯u¬ÞÜ×sò¤­o_ªžÏ§ÞšOÓãJö'ãfIì_W nÆrã£1M"¥îʤգõõõwøûS»ÚŸnl»ú>™Y2?ä {{GG.à©°††FêE@²‡ñ¸ ”õé ‚_N á™§Š4±÷¯ªrÇÌòFô:¹œšf;M]cŠRV–Øç]ÚP¿ã@ìF–1œÎS‘2IG(œ¢í1Åþ —E¶æææh ”Wºê‚76'œBÚ[èèaiw¬ÔTá¯]2ðÓÅÔ™çÏY§hÙ:b¯˜À6jéû' þ>xG1W²²²·©/µ²mÐZ¶zñªU2¦«voî¹÷Hhï¨Çç<ü3½FŸx°ôB꡵k×¢RIÌ•Ÿâ·¾–”“ó˜ uIüÌÊå9»¦å”¯¤?›yD#z+ÎîÀ17Ç1Òæ™—ÅúضT×ú Y¼¯Ç“Z~1†ÁjÛ.±NkÕª)TªqäUÅ”œ‚ÇZe)õ¢gmîÞ,O=—sóæ‡œMÆEmkk¢‹jPeåËdº#UàUµbvþ¬YÙº µçsÓÜŸß“MJïzÍO¢&E'¢{µÀÝ­Á˼ ¢?y_H{Y»>¾{óimvÍë—çÒ¥:c®Ø5|hמ:ëÚV‚ãüØg¯]–™üPbóf¬Žþ¬Kó^µ–Dî”[tF‹Û©¹c‡èÍö§Øln¢5f2bIUh±¸è)Åú€ouÛ%vˆMÛw»M»‰öî,–X¨˜4Ñ2x^v]܇½ÑeW{U?¾=Ôôð¶¡=H‹dŒéCÔ|?÷RÐÄoa¸¼Âº+üÕ×w™ŒS#P”;)'wd{ÃÁkÇŽ+pÝ:U@;Ï,1¬ÌX±e·ú¡¹'÷Þhgº‡vú^T¬|°¾ñÖ¥F 8z§U#‹cºneÜ(.žÙñ\c÷¹¬ÅÁ*;E%“Ù݉»Þ×|¯®6/8Úª|qr0I¢3gÊã9672iC}‘,ñÝÄûQËòógÉ­®^iOY’žžw\—6^ÒcìªUÁ‰ãGx¯ÌÙ>fŠõå7èê´QB¢M³/θ bª’ö7Í•uçú  wë!;»à÷Õ^förB)©©š7 ÔÕ)ÍQÉ´¶§lÃL_¯onsiXqÖÕØ"öFŒçÔ¥Ën×ïiŒSÔEGtë¯XA¨ö!MÕÔìòW³ã@®´—ך~£k+X¾yW½$üÌ.𖵫ʘefiêÛ÷rJLœÔ½‡ ÚE aÁb—àÆI99ÏÀ Šß¼e7³ï%m/bﺙ-~Ñ §È¾¿m`†”ÊßÐUQ£Šæ4â´î2ñ8†èÈ :§µŒéP¹óØ6Z—ZÝÕU_ËX55gíEVÍôÙ³·§8W(›Ê¯·¬­nõõÆY_h\˜“#ØÞU¨m›¤4§±kŽrÛìP™eSW/½S°@ë€RŸxÔb ØR¯-^å´ÑÓíæ8eÕPåktíåî‰à¢o‘7ÔIÌP;´‹àxòzqñ:{Ê|Ú#µ—ÙÒ$—g"ŠqOÖ7NšÐа{ü”)µµšR­Kðì‚l\a—Ö|NîQ5É8¡;‚}?õúÆŸ>}3`V íÍg´Û«<¬L×}4 ÁÈ Œ®l·É¼ÿtÖ§Ó¢TÒ§¬]%t–Ì„.ð伦ÎßçšÿÊ¥°ØéÓ§_W°VE¨õ.š<õÀ¸Æë×mŒQÞÜó¿[ „‹Þo¹c‘ÕÇQ˜Þ7ʪ^˜˜’rpÇžäBIW“g«õe™Vn9qªF_×ïUê²ýw¦[Zªæäø}ÊKZ3ú^|¶©æšÊb7öùò ³@õÜqiiŸFz$_¸g½Üo÷îe8ù ¢NÎÎhËYGT™Q}¶ìû^Üz÷.mÏÒŠºÞ6IÔ\º+îôy…£¾YÊJ¶YÎáÒê©–ÿÍ\7ä”ÍO«6ÔÝðÚøæ¶‹à 3üÅ:üÌrÚ®ÙUÌ{†î«£©9 }³^cÞ®‹õÕWÌÊ®iT:Ô¿Û³ì {S±öλ“X§#£ŠWËTª¢òô·üÉ“œû÷…¤‰Fù—6˜ˆ$Þ?/¥Z&}í£ƒO#ÍN}ë%ö¼qîî©™5ÕÕS]\d\ŸÝÒb¨*ŠNRã[x>#°ÜðTKèôGÔ^4u‡èã+ù39’«èb7&Ké¹bˆ ÌŠ2Ó¥¬KŸìŽÜ=[d±;w[ð2•3"ÊçÉ«rŽ'{¼ªÌ–f])>±X!fÖ#ÿÌLÜ«ªESVûßN&w¦&XÞQi©ôø™3C]ª2²Ÿ<™6{öì[……Ï€èåŒâÜÂÊõBâ FvÈà2¶ 2Ôƒcãã=ªuƒ§‚Æ#^¿~ B¡ò‹Ìí—9ÏÙ/ÂæMÅ9W6>Øß‡s³ GPRjÝm;ߺ÷äM…Æ3gÏÞÌlËgee…켨ñýtµm$»·6`Öæ%5Y>Oëê¶µ·»Z®èC¶‹¾wá¶UË€D¹,…6æ½ ÏC2ÎÆF!‘ ™êŠ+Ú_¿!péòe¤\ó¦Áë)´üöj¯6èú–H[žê¸wÏ… ;ÂÂ&­NwQlތ׉^éãl0w⇅MÕWU¿ïé94Éêñ»K¾5›î{£Ž  û:O«¤Õº›7oæv4._jbr ¤t}'L—,ˆ;qÂÔÜ|"R™ô€²íý¸{GÕËËË/$‰ŠºÌ)Ò__ߥ˖Å^¼ˆóþý©¦&û³k}:î̽¼ö~CÈîݧ®__"+[~™³ µúêšÎ>û@u%zP}Õ+!1ÑH{–í.Êf.sS]Ä!Ë€Ñ)… a·éÜÖr‚‹Šœœaý±åFFÏÒ”m³Œ²²²Ö®¹å„ ¥À:…w¼~]Ÿ¾ùrOÓÝ5Z1ÇĤ‰{ŒæÇž81WVöž9qФdpÖ,±âS¥{Žö0µµõ¶Û¯e.ïxÈr·ßú™”Å‹O÷ÉÞm`‡lOÛ¼IWw4¸Àfʇ/UdÉ$­N}Ðßû2ý{ö,ñééŒ)*2½s÷îÙãoÞ°§kl¾ÒÔ›CÁ%ö·öÌJþ ÖtáÅw¹RFPV}þ¹°ÌÞŠÎ&3·°æ”ñï"–”Lš6Í7 $22aïEÅÞ#‡íu´z}7•š'ò¦£áÏ‚‚ÇŽ¡Bp HÌ•#ÂA®Ç(w> ˜ÅfŠU$Ñ^<ˆ{ÖÖfòâÅ‹ýGüøÑ¡aéÒ¥¢+,Ÿµ¶.ö~3ˆD|ŸŸ¿¿¹±qhSoŒ˜Ïj±LkoLcWq^‚E³W‰áVfŽËVͽú´üjàX ãÌ›«2IyùùiÎ¥ÍåY>*o›Š·Ÿ0—ÓÕÑ1BðQrÕâgl øºçÌ™E—32Ìéô¹VJdrÄ‘#Gš%­ÙÔQé±[záƒ4ޱkE§¶tÏÅæ’’ä,ÿž.ªHG…VYUsrß¾óKi³#ò½ÄeŽ'&*¸¨€Áz{{?lž8òÑ Ù§©‡r¼ŸßCXcimÍ]±zÔ1 Ùú%++ØÝÝ*ai¹=NïжÔÎÜÕñ™g®z*l. f'«¨hÏCtoÏÒ¸ÀÐÐÆ÷ÔÆåZZ/ÓØÀ,Õe2ç ³É\)¸#ÆXµ8Ù¹"­ìªWúýNÅ5i±«ÂhŠ}7âVHæåM±/¹9"iаbÞ\ë{•Æþo-@DhudÇ»zw—·wÏ‹SЉ Ë\ú¤È"êSÃÔÉ’VÖ¥òÕŠw¼ÍÌÌ®¼AЧ_⾘¸éms©BëØi'çÌß¹óNd÷;Í¥g<“$¡¢ý¿/*K¶HÄϘ8SÅ]Øÿààqî?ÕEb#E—8—U%[ØÞ«ygµØïc_o¬ÛËGM€o¡3(‚«s/Æ,RM˜·¡×}D†G›ÂEÑ’ì÷A(£ö=–öÍ’÷¢5¢1`v4Þ{˜BÓOêì ¨”rˆ—(¿â‰khh(ìvn®¶WyóÃ)GçN=´éÃÂÉKß¼Ù >óý§Gå©âÖ*„ûß¼Äy.>¡ÔÿYVlµä™6Ο¾xaø©»Ð×@é`ØÒ¸ãçÏc“º¹¥ ‹T ðo».{âv#ìölFndÞVOÆ%kA jõÕ$n“i’'RuTêhjôáÃãlmm]2­Î­»uûöÓR=™ÆG–°ÙØ+W‘´æ\¼î„öã3!!¥ïvîÛ¿_lÌ•[ô³ Ì™¶²7úᔕ³²Æœ?»GZÝùáÞèèÝ€­(I©¼¸k®ËC¨eƒ6µNFõõŽ13f$>ß·ÒQÝëÖlY­1kÚ´i·nÝZû¤I´‹¥Ì¹«ï¦g}ìq¬¼æ;ë}ˆstýV÷äø&ݸâ\A kJ›¿ùSŸ‰j÷‰ƒEX£q5#äÛífÊÚ#å2ÝØåB³ ûÑLìÉ“'•sët- ɽRƒ?Ýr'¼BÀíõn5r¯­›Ao—TöKëÞW™‹ L®í¾uëy÷Ì£ÇwØt¼^';yJx,ˆ÷Bä£÷ìèúØ{æ’律­•ЇOŸvð~sÛÌ(Z}26òp»Œ\(¤©Ív%›ri›´+&ì ã‰×ïGÙ-W,¿îÚÍ‚üí,å¶Ø{£žGâ^¬–džN0{ þáu¾Å­I„1âü»ºÎtu–Œ­ÔΘu £`_LZóÒv©4ÀÁTÞñâÉ'uw•}™§ñfaQ6»â–½¯û8 þòóÅSO ÆzM8.§É#†§ÔU«UI<2YY6;Ì‘¬´/ D§§oAJoª|26--­,«_í«!Ü×ë¡ÿü¾sqBXØŠ«¬P aä€ÜtüÔ©ëÃe§²6s/~Û:µõÈ‘1Èmz»šB>ö%95ÀG+/[ìXuÁ½®ûy¯CKôáL@‘ÖÈsÌ­Éii©…=kú.º#Š»kšíqÇÇ¡e—6,vr²6%ª™<ÿ KZI,%5u´€Ë>·eÇ×MÐÒN¯+ž3¯®.çÐm†"Ü% –Ù÷Ï2·ï¸vß[ÞÂ`¢­ÜóEºí&ÔÕ?Ï-MÝ^´OAÈ“Á\û7:Mù⊷½A#áq!‹¬Î·Wyeõ>]`ÑFxñØ{÷L¹I«W=W½ Ñ©_F·“¬ÏlË)ÎLw;§ÊbÚ+ððÆ¤•0ÜzÜ0dìòóÜóçE0œÆ•·DZjfe¿rx³ãžëÓ­rþQ+V” ¬wÃu[{9äàºÕÀ8zêd¨ÎA†wõjÔýcÖYÖ±Ýâ2;å,²®×f«“½7ŽÈpw›ºz_RÀ “éºp¡}¹–þŠKËÊ jkQgmÖ­XÒÔ´½ìÂsÙjoΨ㱶ۮ^M*:Ÿ(¸Af¬`ñÙ¨9.Uòöæ23-i©üqò¾]»¼ ¢z§€ô.ï±maNGaú•†¾‚±Òîo–TˆIÒHN=ÔxOEg‡š—Òú‚ˆTW6û†‰ÆÕ»»ì„Ê"M$}?® ò랢¦¥åŒ% ˜Q¹ó:{LýëGkæx–†GÛ IJÞ%Ù®[7™Ê;er ÎÌú 9þöÖ¢­è–ÀñÓ3¦y˜®]ûúSÍ#¥OémçÞV“çbÆvo¼Kªyš¸s§v€xÒIÉ›.§#¦1²„@6VyÍvç‰go³æ)âÖ ÷õ¸ÕÛ°45òn¦N™¼¶¼¼82RrJ"Oã#&æ¶ã#´hîÍI«7~êCíÙùP\ܽ©ôn¸GÔèÑ ÷6󌺤2£ù2ËÔÕ{NÏÁÁYª(Ö\=aRKÁ)¿çG_™1ƒYóü¼„O—м:Þ½ŒùÁñæô»—9Ó"Ô}ÆMŒ0ì˜Ðì(Og…Øú†ÛêêØ7ò óO¯‹x=jK¤É˜Ü€»hz DK ~ÖÂEáò/ó}5åä”é¼e%&jEeLñ›Le‚%”ëm ̤¯ßÚë˜ìɬöRŸzuûÖ‘Wï Š‘a¨#ŤŒî] WÞ; ñIAP€ûòQ1½üâ†OµŽ^ ûÕ–'l|[ªŒz×ÙÖæÇy~@Võå°æú²êǹ׷V·w„1ô͘ѲkSæýÖŠÑMoßNÄ­]ºìL{ó™5Àu­lÛ` XZ*âdu®¿XIŠg‡Qšk’ßõ»-qËò™k{Õ>^ Èöh+}þ®Uk£×²åŠ!±€8Æ î»¢s!!£®}`—8M—º™ nÚÜ—ñX^vXÌŒôú-î>Žè¸¾„$ç–öò‘ŽÆV-*5­ÚÞ+ÎÜoä˜Í¹!Ò—ÅÙè™ÀX*¬ÂÈôé쮌ê‘[¤I¯êRò®’œ=ÍùTw#Hc£"¢L\ývûm7ôô1ÀtÎô*¡å¿«?Bj4~¾}Ì”[we×ïöŠXûøNxÀàö64ÏÙ»&ÝÅÕÝ]ÏÀ@äß—;»º6E ³g`Ũw6GŒ¤ubvéïo\$/_åQ|\×ÀÀ`‰··ªK奭DçrdCÁÚž×õù˜Mö_¦§òíG=Ü¢ôoR'‹Œ¾Úq_åaÜ2É}·éܦ¢Ù©oš@fÿð”ɬ}Kã&Oª¾¶ü¬Mæ­»wƒA¢í\“µhÁÁ»ÌºŸ57/uqq™öÛâƒéâ~ZšÒD'T¤‘ž¡¡¡Žžù`®¼’ÒTéÇMÎÌV{[Òab5Ðÿ󦦸wÁ ï‚ö¼˜2eʳ¦¦[q –ò©WÜ.:”.Eör4Ç*+O0ÓÒ|û¢$@K[[NYyw`à»w™º^o˲xyvÝžÙÚ¢„ú1¦ö­Äη‡%«¼—g=­{ñ"h×.Qœgñ¯8òî­wœ_fØT¥:Z¥n*)))½óú ÎîHœrÌG¦{ë¶ÃkœM_¦ÐòÇKI-ìÙŒÕRû0Óƒµs÷îSiÎìö½ïZÆêK âû´¥E4ÒÈÄH¡%ò᲋ZFz¯ jñæuRçÍ™mî+ù(˧wüĉÔö)«Dõ,ÆŠ‹ m9A7<²ð¹;Vê‘Àw‹Þ1œ×3‚!¡Üµk/¹Ž.eÒjÿõöGº…$fî²²õY!¬x¼±e•Ääɧ®ö—":Y¯›µ²ÞldìnkÆø5iWü®Û´Ô^NtÃõ™´”Ö»Ý~ºîþbµQ…°øÌ2ù¡óÎøx¼¦Îßô–­ Ò˜Ëmk×–C w‚î)îž-^ײc%JïÁƒWOÛŸÎh¾¶fôhØ¡bݺ¨Èn©ÅPî}=ô†:<~vK«3¾s¬qÂñó ¼CŽY)[uõdhÉGÊÈš4¿“¥n&Zœ]ðØ`Ûö1ÙV>~vÌ$¸¥ Ë.8PÇ1²ôÞÜYd{R¯·¨äþ}1Ê4!¨ÑqîÌ™2¯ZT­§ÅRÞ%‚ ´á`ôÄ%S´@(¸õvØÍµ9…7õ¶inßt½ªjj…h ° £Ömz!‡¿òRn¯Ú+ÍÆŠæ‚‹‹=\‚í¢[ã6ÔÃ-e›å¨cYó±ÌK@ h§±fÍØ}^ÈzåÖ˜8ÛIž¯ó6'_8S¢sýÙí‘£WÞ?®À{ù 犕Rj=,»Ô+í9õ‚‹¨£«9*…G(Û½Þ¿Š´¶ßÀñ%ÐTñxš~¨·ròô»7=šª©©éÊåN^½3ïºÊéìêê™KãTnÒ Ò¡ŽIà.ž©þašˆnZ[á@_ï{Z±øÃ§§³JYÊO–®­]Ï¡ZËM ÚÑ·‘´å§û*­tO7¶œºMÅãUm©„ïŠ$üaÚ†FGó„ýÕú»gÎVUQ•á¶ýœ––Öžèè¸üü|ZÎŽ±{˜ã-ÞåΊÝ3ë ÆÖÌlBە੊ZÈ3¦õõêoŠ]d–qžßoàíx,ŽÕ?¬}RÓè‰gý.uÿ Å «uÀ~·]éw{ñÀŽ&³˜ØL½E|–º‘OOçìË¥Y®Zu;®µ<5øÊ•+òá@Àp™ üKca´ÉÙ³gŸ56êíÝ»´2¬®®µe­Í Þ$ôÄ Ý]]E¡2*—6ïÜ,ŠŽŽ¥©é’ìììãmiŸ¢•’zÊ–,09:WYYYËùÃþCêYRœÇ¿‹Ìûv‹þêYèæú™·éXà>¦§GíßbCÑüùóÙ•mçÛÚÚ*)ª¨ tp4|úŒÔþáškÈ’N’vŒi‘¿˜´Áü03só‰&,?„Ú¬[³ÛŸgÙûð õ0è·-¨¸’é·Æoø›-œ¼º-ðžÞ‚»+&ibbB§Ó]+"##§{>xðàRaBBpð‹Ò“^}Ÿµ)m^nbbµ(ŸÄrXD„TKyê8ïl¡å‡ÎF£M;û"ŽS…uvK*Oè`°ûêÕ«+wÍÏy|]wÐ1oçàô©÷òµ™n·ëin€p»ó,(Žº)WBãÙƒéikòÄ-»]Sý ¤DNM-êC__éðýû¥ Θ'ܪ¨8¬Þýlà®Yï81±8o¿GÓô%ÉG{zº¨¯K´Ð…ÉNŸÞ9Ui­P’Mï_-ýúõÃ4ç5©i¬cµM( ³&Lpðx ¬U:\ÛÍmž••Uj&ˆÞ³gÏN¸4]S ´ƒöy_ÚÍ]);7ÛkƒhmÓôGMgÙFtãÑ»»Åeë¬ZµªÒ °7¾tžPbÜ,G¸±äºêcoä¨3Q hÝ{øpp|üÂlÆ.ühÇcr±˜à_û¿¸ë^ÓÆéäÈ>™â/£1ýƪ{•ÆBÚNèŽHŸ§ÚoK¸>D« Ñ»þ <)´s'¶Km\ 3Ýñâºe îŒÕ9"ÿ‚uT÷܉c7w=ÓÙZ!©¤¤$,!¡¿bÅcçÏOšéÊálÏÌTAŽ'3ü²ÌIÚÏápr[+ÒGœ2ŽÊ)1Ñj››Ÿ?æS_›oiyÕ;‰MïZÆJJJ&IÍ9cuÐX ýõk3ÇEXìDßO½5—½ìKNŠ]wõô…ÂL6½÷¯ªe[w©«…Àî½Bé¼Ù3™!µÁÃã©Æ; D9M‡YY1À2œN}ñüy~*ecûúMŸúÞ_¾ØÓ-êó±á m<0]–66Ëutj¼;ÄÔ>vÕ;„]”~geÕ´oÞìõ§¦a E%goÔ²377¿r別ü”( ßêõö{ÓÓÓõÔ¼Õ…/es8± úž8ÁÌÔt|Òº««Y¾n~J«&R)›Mè(pe*ðI(HG0Hg[Œv»æ.û Ù7¿7,l¤À­{÷3˜>:c¥¬$&0Ó«å~ð íͳÛß=±Kq® †tú;764N›¤¥¥!ûÅ‘Î99ZGÈKN™<^s37w¤ÀzÚœf_»`퇟’E£"‰ÎÓsrs7¼ª¤8•_4œs:\¢¹µ§ó¼ÆH̼b"´w—ëÆM›šïÎ$N2;l" „ú°…gm¯…&'£_`¾_)9Q}áNn€ÄåB]]Ýä ´axÞe[q…‹Õ?TZx˜Ä’¥P¦u4ÞÓ¶·7;ô2@½!¼0|野èOãõ+VœmÞ%n:{F¥`òâ À:6W^ƹ½|B¥RíÛÁs›L϶ôâðÏ _*‡Åî;}ú4¾¹ôíª5÷×°®ê&­I?ùàyÈÇiœåº˜zïVUU"µ9oŒ³b¢BË“ úöró5òMp9Ÿ¦@»cNŸñh«Î2?:›8îLfã$¯¦‚s×>îÜ:rL²;–÷$C.zÎJÆŠóppÑÄC;®]Ó–Õï@¶½Pâ+àaG3Ô…´Q_–ȉ—V’T^G·ˆ””Ý;Û+Ý¥êáüÙ8©›ëíì¢}?N›£·küêq×?ÍörwO£ø¡¥ÅÝïý${ícx[É.ºî΋üyý/zþ y°¦äÀÞ£QSÿ‡Åbç¿°8 ˆÅ`ÐÈ_ÒŸç¿þ/wˆ=ðT§-ïAl>¿Qj"kDPàµ%kIJÓss¡É* d9\¶Ûÿ”è÷WeQ6 wÚ"¿þLš;ç@8,„£1pt NÁà†iÅÑ0‡w»¸99}Ý¡–…Ž­…É smݿ£“!•ަ¡©D ¢Á q , 3ˆtîÇ® t­uV,7µÕ22Ñ^f«cha©iü+(‘„fÀ ˆAà42šN…p2‹& i0Kûk(Ú&ËMt-um Kƒa0( ÀÂãèX•D£P°t<Æâ© ÄÐØÐÒÖú½Sé 4C P0$žF‚ˆ8, ƒ'pX齯úûÞñt"–N"ñhÐ…Œ&’*Í “pd4 ýuï]l­ u, þF#‘Ñ4 ™A£¨d:“X! OøkË utŒ~A{ º!‰h*ŒÃÓÉ8<‰‘q0–„ù[12ÑӳеÌðX†ŒcÐÐX,…H¦1€!ÄP¨82‹¡â±0ü# ã_艀%‘ñhLb ÎX*bÑT‚'’ŒŸôhçŠèý/z%á]‰:¦’` •BÃbÉ,G#l‰Ø¿êÕ¢Ómýäot‰Ž&cÑh‹tM¦ð@—°0™† ш´¿ìžq¡_È!/ƒá¥ÁS™J§Âx‚ht:úˮٰ3Ëòh*Ð,OÆÂ*„o4àØdG‚!Ò_Bð`rŠM€ï4Þãô¿ ¸H‚éh:¦àq„: cÁ8)Ô¿åþ‹ˆh LÃ"Õ˜H@&`4– ””NÔcü¬[¦­;ÇÅ•Ítá2þ¾sL¡BtÏÀQÑD„¥¨D†a¾q•?!ÙMü7Pm„ÏÆ+þâ±$Ü÷ñ þÿýGêÍÖ1Ѷ\eª‹BxŒ2]¡ed¨’UTV¶Âi++ëXê ¬ ,—¡0Jh”%rá09)+ëË¢dí¹\×ÅÊÊJ8%ÛNÙÒ\y#Ò¹¹ÿ£"÷«;•è\:RŒp£³“ Gí'Ý`( ÿn^[¢ƒ?Î0B!má nL÷þ‚N.\EKOW)>Âû¦&‹yâ߬B³‡Ø˜«¶ÂRO‘_å‡N¬Wh*j³œ]ù¥:}Ý¡®åË=üªgv° R÷„Åþªk£'¸ˆDV ywðŠ§¨Q/ïÏ@Å›þª¨…_È¡4M £~,ªÖ¯‡J4R e3`6ìBƒU•ù0DT˜.Žý¥\¸•£Dãpd‘2j 4÷t‚9ö0Ì•Eq=‘0<Ò $946Ó•ûõ/;Ä¿*‹â°ij²Ü`¶'ÈÿdÕU•ù¿ îFº§ î/©õÝÝ_áë¹sÙ0ü[Qôbn‚ÿÊýÈ Å?¿{Hwªo:w!EsCŠ%É)±œ{.dº0¹æÈ Žr*¼6L:ËCNɉÑòGh3íì¹à÷Ÿ“–ÎÊÁ‘Å«ÏÓ¯fTÝü¡3ÝyÅ‚¸,W0¢ÙŠŠ(: åÂBª8!qŠkÏä @#“‹iN,LGQ=Qý g£¿îW¤¢Ñ\dl(ìäÄq…hL;5Y´,ï»+û¿ò¨rùØ€loÀZð¾E ºnTáÑP•Kçpe³:SÓÎEv y‡ŠN0Ü„V"ÀÎü»PŸQë¿ÑpÙ!+-ÒÓü9"ZEŒÅå›Ýœ©0[V«DP¢6Ÿù€•dâÊ\:28e.›ÿ§ŸöÊ<ú x yÔ‡]èýóP®›Ë'.òƒ>ß$ñiÿ­-â5új @HÙ,  ´ÄáðíŸ(U7§¯®"ÅÞú?91ÕU¡~¹‚oä'ÿ꼫/‡˜.|˜Bvpÿ0U•!ðÜø³>\A;Î7}˜ó+^}é†3˜~  È}ßô¥˜ß‘ojÂýw½ šæÆv úsï¼B]ßôÌ+ÑõÓ®T•Ýœø àì·$Ç~CrìiþsLøcDŠa†VvN,*äôm/úükƒÿOÞ€AøV³9L:¬ÆùyŒnLEö€C üúå’ì÷RD,çM¾¿®Øïg9_hóuŽ'2ëÔ˜÷Eý3¾Ñ´ïÃqubr©û³¡PtfmRtãÀlEì´w± ËV‘EõCýÙàí!úÀ€¾&Ô/ ÿf åB9/ÄCî–`ô ü<_ °`œŠÏ·æ`h ëªÉö_îGžo@¾0`€nnÎÎÀ¶ñê´öËË:Ì`ºÀŠÎ0bÃñ—C46‹ƒ bî°x•¯Ú"¸i©7PL“×ø;ÒƒÏ'|‡bÿµ_†?H§?O~ÇŸås@»¿ÈÐ7°_¨ óvBCcÑaõ9üÚ±0jþ7WÜÆ`Ú)Ùó¿©*óÚ¨RÙ<ùÝ N 4Ð1ì4P]ï‡Â¬ßT—Tÿ‹hÏ!Ý|»AÀäpé€SÅóiòÃýê2ˆÕ>Ë…a×tØ8@iO”rµG1XŸ§Š?ódñõ¿íìç¢G—ªLg;~Èôƒd©1'‹¢²Ø#^XtÒrböÅóÚb¸y ¡ò€þóŠ_«ø§7~[ùgMWÀøw᥸ /J ܵ\(šÄ«¾‰”˜Äb0_•tüVûC;>Óù6)\ÉS=Ä}¥ÿ *âb7 ]ÔdcTµÇ´±c³Ü\$Su ûÞ.!š"2`œì±ê¼˜ŠQ}4graçÅ¿^vàcôù.Cp—z€°‰>eQîý_ùáñgŇ\höHrˆ°f0°äûMmÉCÿÌ¿…Jeq¹,gp?UÝVU™ª¾„:€œrü>¾~øåçdáÀ®/:a,n•ý†_â/™ðË9êßÈ„AÀ>Œ†J™As¡?¥ø×ÕóÛP€GÚ¯â_ë'HÀ©x4ŽŽ†©hˆÆ± †F `è4†DþG¢<‡‹B&ƒPòÿˆÃƒpìŸW~9;WÛþ› Ž-‡'¼H dþHvü"÷—T¢ÃÚP©„Üã‘ú_ iÀº:o–IÆPP¿¿GÁl6pþHh²ÀÈb…sH9ùè+@ìs08䖳ذ’’/ãà+¿Ô‹¡ŠÅPõBä+ÿÂ…˜@ø‘tÿ~rô²¯Ãkˆ¡óCq ë2@¶â°\h¨ j`¶òë>Ôþäâ@LjvF&@dÕßøÊôþMs>&ª°³:¼ª2ø8à¯Ôå~†Â·×úçR>=úýè,$¯Quý§>OUÙõ-á €Ã×Sä3 ,糦ˆ|Ϥö"üù91ÑOèsþ/8~åо5Š/Ê"ý²üÕ89¨Ÿõ20R{7gžá‡èü ¼þáò5™ßžEãM˜òl åLeºðRáéïÀÑ ˆõŸ¼ð½D-”0|ƒ‰ôÆá¸Jß“vÀ±a®Û…ObsÞç/ôÕìÇôË1|”€úéh¿Òs„8Ÿ§–8¨¿ ÷~’Z#»xhT ŽFÐ0P MÂ!*&SÈd<O@ób>Þ»I€(<¼ß`Ás‰‡ÈwçḦT"ƒF$P *L&BÏ€‰D4šŽÁ`)8 ƒ‡ãó)¶tØ ¨-ääÄGBwÈÄ@’¨TD P±2‰Ž#‚ÏT˜€¥ÐHd2ƒB ¾‰òõÛQ;qúe¢y`ÒŽ?ÛüåúWÓ›_VA8\dQ„Ábq¿Y ùzªØâÚž*xßù]2éˆowæqŠˆËpgŸOš=°–Ÿÿfíôhùyɶ¥3HXÇÀh ¤sh˜DÂ1™ @8„ïŸ ü2õy.~°P~žü8úÝ$ÿ—Þù”“Uÿz5‰ßf °ÿj•~`qYªÿzAˆ2Á÷m¯ýkÂýwñæ÷x³KýWxsv ê_´À¿ñY.ÖÆPÎù×öÿð÷óÚÚê›öŸ—õïîÿÑÐ÷û¿‰h"öÏþŸ?ûþîÿù¢u(þâõŸ ?6üüÙðógÃÏÿå ?½EçwlúoÜðó›ÇõùpÓŸ÷¦Ç„èvýWïúyTþïïru£*B\dÆPÔ€´üó­=äüŽm=_ohÑf99ATVÿ9¿t&ddžœy)þ4†¹åÞØÚÒT[[ÞΙ¿ÞÎòõüÀõþÌø[´y}µ³…_‘ðr‚¡õÀ<.Ķƒ¹|W>0A€taËo40ÝÀû‚pÒæ³òôÜèß^-þF¼xSßßÈØ¯—‹éD B„¢¢q$*ŽL®“pt* ‹Ìçã~ëN‚AÀBF𙩆À( kÿpOÜÎ{ú ÙZðËÒ¡b8Û7d"†±4:Mƒð4ˆ†Ç£a<&AX4…Œl—ú}D,„èî,&ý®íEiÞ㄃"÷PI0réÈ +–F¥ãqdMÑq€¡x•AÂÑÈDôï$÷ `}#ã¦l–p„ dúuÂîÚß-owðb?TÚ ‡ ˆS(t,Ð1˜㨠Q:–†ƒ!ø;ù0X?åà W Âðï`„¯§Ásb¨Ô'00‹§‘¨TŽÎ à©"L%à!*˜>*•Äøœ¬¿Ð–ëïQ–ëà¹0TÊ ‡ ŽH£CÈòÏ`à(T:†B ¡i –Ê üV. Ö°ÝÀg’Í • Ã!9…€!c "C'Ri D„( ‘ÈP9<÷;I>Xß¾.²´: ‰ç-Í^Ò‡JŠáÃb°†NgÐd`Ò€·¡Ña,™Ah,òûo$û ` [Ò¿zðb>T ‡Þd4 K§R;‡:–",4‰@c:N‡~'½ë17sƒ9HR6 IßÐßÅà…}¨ñAº€G£1T ‚(d ž†eP©t ƒBù½;ä kØÂþ µ/ïC%ðä„!€|‚Ž&‘` F£px:FST û[åý×°¾‘wmp7ì4 i§ñ:‚¬‘ÃzKd  ÀœÑ` C"cT2‡FÊ7Át ú·†0ƒ€5lYÿŠÖƒ—ô¡aX &PÈ4 †JC3phžA'#5³p˜€ÃC¿5‡¬o$ä°\7Î0$Ãë`!̉1Âc±DVd™ø«’C·±”Ö¿PõÃÎÒþ¾ÞZúõÆÍÿvòþ| öëõÌ?»kÿ¼þ·ïÿ…ìé¶¶TÈf¿ö߯÷ÿâ‰"þûúÜŸý¿öÿþ¯ÿ‡è!O ÿ”þû³øÏNà?;ÿìþSúïOé¿ÿK›~ Åÿ¿/û÷wQÏ?ÝŒ_~ I ßÏÐ 9ô tdˆÖ7:Ç€aˆL$C2ŽF¦a©D"ÿˆö·î³¬ásÃ\WáÅŒ@ÿzÛi1ºÓTM„!<‡œÁEfÐa“± &ïüé>X绾¹®®ñÏ)ù%å‡Jay ƒ†‰$,°sx D'AdDë$Žü[½Â¯a ŸòZF+tNxì¯ ÿ‰1,ÂÃHÕ52šD¤id˜NG ’ÑqT4ž C0™þ[ ÿkXÃ'¼¦Îo þ{üÔ#{ÊÉ/ô“Ç-ÂÉΑJÿßÕ™¦ãp8, ²H"b@I§1hÐ?“ºÕè'?ÎýÍÎv®¶ÈL$#we!ëüÊÒŸ7Cñk`3!;XÙ…òàÿ±W@ýÝ4Ì@½?K¢‘&0°,•²) Æè*I¯y3i–L'>\.øð«RÖCcÄPJY~¡ BÁl!›‚¨_Möñ+^º ÌõµP<¢|[Éú׸ ½’õPoXÛò˜d=0•B!¸›B¡A*O¢€$†ñÿBþkœû…˜^éÓŸÉ·‹«÷{ùþ® ËËkô?$öCcÍPÄ^›7Í"Ï—t6ÄAvÒñ–:øBŽâ•yEdžÿÛ·Bÿk̆.ôCÄÿîòíÃ]Nø«ê¶ƒ*¿bÓìQ¬RžŒ²´‡Yt¤‚÷2¦“ò÷ 'eQ,𓿍&;pº°ï§ÎsÁ¢N\ÖbðÇ‘éÞíXà -ïx£º±Á»‹xƒén TúKï¢V‘UwDÀñ—½ûÑèLŽ«ä¹Å_K1äŒrBªV»:Á_*Dë0]XÎRÐÚÐ4tæï®F  »ÃÜjAc"K‘ (؉Ãtqd¢V¸0yêͯÖo Óì]XN,;O¤Ú¼‹¸ùŸœ8€Ã£arí¬©²»ÆÍ•Å?&Àrü©_ªcÿ­ÅÒY4ÄDöã 4ùÀPË`¦ eÀdCŽÔOq@$ÊJ e ±9 ¨þZÛ_ŽC0ÔÕÕåo„øá8O”!ÏY4˜(g§€rg9)¡0xÀf%N¡ß®›FPús¤ÅŸ#-þiñ¿äH‹A„vÿsGZ ¡ÿ7éÂp±ø.꼤„wž…ê¯Ï¬ø»añ:t„=eÕ}Æo<‰Ãã#ÒöÿãHS\øùéÿø(~zÇ@ð‚åÓ/_m,Ê À ¨Nn0/bÇ //Ýùò&²±`ÁÈ74²E‡Ÿ=õozgñ#`:Ip.¨¯SNÿÍ1ùp`.2>§¨y˜‚/Õ®üs`›kFÌáa÷MŸ_ä‘O €)…l>DŶש /\ù1ÛÃä|Ý ] eÈEÑYýÝqÀhP,*"×cË>ŸÞH'ÁXLƒd,C¡Ètˆ„Á#õvÐúÎñÿ‰Žó2|>@~4ÒŸÞ#5ˆ³i“ÓÏ‘üïšè?¤ á4‚2ïh°_SG†t2à@0–J©4†‚ÅÃ4•aÉðïÀ—òŒ•P+8ýO­|…û«4€äÉT=@¾„Ütœ§‹ I€9\”¦ÎWÒŽhH ïžTồ!žŸõ³³Ï†vFÖïZ³8j0‚04˜F¡àIh˜@Âb ƒi †H‚hô¯ˆÌ—¤ÁžuõÓs¾D4K¡ÒÑx,DÆQét"D&AŽÁâÌ¹Ž¾©­É²¿>Üê/ ÿzIè¿"…úŠEÿ“y”3ïY£?yÔÿ‘<êO2ô äŸùÐÿTÂWà¯rþ„AåsBeŸ‚ ¶º?bÿߟü[™Á·!öw¡ú×}{Ø3iö({„Ä U@æï¿ˆçoqºa‘.¯ß}í°Q?+ò!Wdv™çÙ´gñâ:h`¥Ãþ«•úÀJvfõ/tü£SF% y‚ÙÐá+"ô üYòoâ¹/k?¼#Qíad.{ ù\Ågñ?êÊfºÐ˜®NýpL6ˆ(A\ŒÌRó¤ÉÛ@–ˆüCä=' HÊøRE¨ŸkH é høîે¿«è«Ñ ,ð»å¯ ¡2¤(>WxKp.Nž ý !¯ ‹·6Ÿo¿}Y˜`37±\¸_ß „F›Íâpi,'$¦B2Od<òqíÙ,7;dUB5°€6@…Ï+ȪÐÀ´‡7ÏÏF: F¦¨¼•w˜Ãá¯l€ÿà;fó>“GÖƒÍBtâa¢„¬‚ C€¾üT™Ëã)“ȞŤŠ,°B²ƒl€ bo{˜Gƒþ鞘ŸÏdü†â ßÓé»_‘'½€›Nöw:ôu’å@•Øž<äÆq\a„|`dÈZ•3ï¨d*ò3"^ˆÄpœ˜tž¨ñ*pxrÃèŸgøù`x‡Æ5º¯Ó»/pù’:0TØ…ËD¨Ïó,ý¶™öø)Ø~ö|QIdxü¹dõØ™¿ðÉï)2-ÁT@“ÏÃä²XJ(+{Þ’`úgË‹¨„OØx+Ñ #6p ²,Ä ¨Íq`uè ¦|!îï‡R”®ðiWþ*+r2 q9JCÌâ†[AH&P!"LÀP LÂá±X*†J%Ád"QAð¥¹J×ÜÖÒÐH×VK_ßü—ÉÝ A“ÉXànð"x#Œ%“hd*%`¨x<ÈÞmkhl©kn¤©lßÿ]XàÈtO$& ]ƒ‰8Ž€cÀD@9ýù+,ôµÌõh4–L&ñhŽ„fÐHh…@G#¹$…NÅâ¿£=ú_!Œ…q :‘ÂÀÑè04ƒ‚D¡SH8,}‹…¹Öo$Œ'2H,‡cid‘N#QÉd<žÂ*F¢Ó~ý¯€ qÃ!šB$QP *|ÄÐt,ƒŒù s}}­ßšD@CD:˜^–Ê`ÀX¾ÿÜ:ÂÆ E€¿ÁÑIt4JÅQÐ “°ŽJ$¤@ Ç›Ñ5771·56±]®»ÜÄ|ÕvÒe0ç¨Gè!n;ýs‚ùï>ÁüÇÉÃoªAü)­øªÿ÷.öï1B8âÀù7êÿ¡ÑXÌ÷õÿˆ„?õÿþ3/wˆ(”€ðÛö ¿Qj"kxZ±Ì3ÿ×þÕ…V² (Ù¿’¾QÅRp0GÇ Ñ$ðÏh ð8,N†‹‚ñ8Ѓ‹ÈmDlTþTãüïÐÿ/UnMOM\aþ”œZ ôõ? |§ÿÀý’þèÿŸúŸÿëþ u?9!÷OñÏ?Å?ÿÿüSüóÿZñÏ¿.×ù;Šþ7ÿüÍãx<þ/z8tûOEÐÿÞŠ œÿûÅA¿9®ý›“ÚÿyÅÏÁ„<éü‰¬í Ù)Šõ…Z(ÀÇÏ£ú[šþu¹O¤ïTü±?‰þ‹ß4ú±ø#oÅúß®­ñ ›y[Ͼáõ¯‹k Ix4‰ŽÅàp0žÒ99—“ðt,ŽL£þÖã€~ Ó…»ðŸT©Á‚’[ø+ö~™P¦á1x,“s—ˆ,…‚AD™B¥¡a<™¶Fާ;ò¿®Ø2Tš«lL ÐéT–Æ€!®)p˜D£ çh¿µ\× ` —ðÆÿþ •¦Ãã Fö[“‰ O¢@A¤R ¢PIø÷òï—°†Ë?`¹]þ ø74šë”L:G# ˸üuT4G`PÑdR0 Àþ­§dþÖpùÇKÿÇ8T¢«ðà `a,GFS© ŽFD¶`°8  ýÞ¬k¸ D‚Ò™ ý»ÁyûÇá ‡Hàá0“A¦`aÄ~ÃYl‡`,‘D„èd*„Ãc¿µÀë ` [íaš#²—ÿ?ÉÑA²u¨¤[18ˆ†cñpÆDžá04 &añÐo­Ð8XÃe+¯–À¿ÏRq‡¦ªC¥ó°€Š¦X†É8‰L¢Ax <4<MÁPo½Ó_Ã.OÝ\é÷Þs•ªÃ+߉©Ãäh˜ Áž3GÃ`sùÎ_Â.í`®­+Óå_×ËÁ÷L “ 2š„#b©0 ‡'É ˆF“hx ”¼žŒ³7ìK·`®a&“©x ¢¢±0ˆX…2U¤[#Øv¬Ð U†#tD |fÀ8™ ÞIq=X §Ð Öp…ŽóGè~"t¿¹¡ŠÁ°*¢h4šNÇ‘é8:‘J¥àЄÇi$:FÿÖ a°†/r.t[*Èÿu©TÐ1TòËzàqhW‚T’ <$žŠÃ2¨H®I"À84•ð[óƒAÀ.+Nnûÿ.•²Ãá"L£Qñ$<†ˆÂC‚` G °¼­å¿“‹ƒ€5l.2]½ÊîLÚ¿? ü»Lº;°H%2þ7W6‹îF›‡Júa±™ ò °æ1 xD¬ÈdL¤14úo/ë7²Ù–êiË»í?Åo^ïü7êWßx5gÁù!rc8œÇ!Õ;ˆt:š> ,Ž ‘@hIÇQp0ý·ž3XßT…!¶­=äÄýOñvý5C‡Jäa%û:KA“i ÂQð2Ämx,LÆ0ÈxÒoµØƒ€5\†:sìlÿ“8ŸùɆ7¸Áœþ:é¼BJý–Ùê30{Ç«ˆÕ¯äÌMð & †È•áHÂã)$ƒ¥@x K Ñ4 "Sq8üï=de°~‡ü¦Úÿe*S†#X ™ŠÁcÀ–L@žÃãÉt*C%×Bû½s¸ƒ€õ;€÷@3þüÿc0Tþ ËÑh –Ž…!YG`à© 0<ˆ “HX2þ·ºƒ_Ãú½²ð¿ß, •=ÃÚ†.¿/« Ùá ò©@ìrÙŒPr²cÙ_ÏùPËšþŸ™Nee1bÐc5`Õg)iÄÌґň™XzfÖ¿÷õ“¶1„l: y÷Ÿ;öý>dîÿnïÞÿþªlF,,tÌz,º ,¬¬†F,lìôlt†ºúz FlÌÿì&(ÙÙë÷æn¿÷[ûÏW‡h¢?7 üŸì3ó¯­_ØôõÙ è ŒXèY! ŒôõõôYéõtÙÙØÿi¶2D}Cvm³³1Ô75‚|°®¥µÃošüãÆ~ogøŸoì·hÿk'ê?FòÏa±¥ýqÿþ°•?793µ{õǃ)¯œtí^ÿý¬ßß[Íý½à+Èk¿wu<ïõÏcŠ¿¯þ×~´ÿx0åÄþ½ÛÉÿv½ùß>ôß<¶ôÿlPóÿü÷‡ý?þû½¸´B´ÑÖ†<鉲ÿ«öÿ`ddee`„ìÿAÏLOÏDÏÌEÇ@ÇJÿÿìÿñÿ•ÿ¾ÊH #Âá@RQTDP Î êQÀspä*&)|Ñ„z€üŸÒFFTOÁ9awÎÉ9Âpúþˆ1V”:Ýuøù[ô·*P|ï ¨¿á‰Šø[0 S„öMlì›p†·M¼­ŒäÅÈ>¬þ\½qY¯% }²ÞëðÔÁÞÞþùº÷»½ŽÅwÊÿy4PVŸüÇCÏ_|NøO¯zÄŠö¼zø‰æ_?Ä'ßíS“ÃÚ¿ÄÎD€ñ¾¿Ýà¥äääÌ¿]$ƒÝÞÜÜ|nò¯+«`#ÀHÆÐñuww¢yÚ6èOè™Íl>¾yÜC‹lO^ÁÆ¡•NLúÏ;Üű´ÝKÖûq7è=¯·>Ñ<Ç…UmRàÿÓc>·}ü=yÎ'õ|„"ú û½xõ„ýÑß?¥ ¯­­áŸ;jsÛÈÉ˧Õí×î¸iêWó8Aú‰ëßý4(I£½‰êj¿ä‹Ep¤æß–z³_'­éÛÏyÀu·ðp—L…)N¨´Q”¥6Q¤]4Uf|¡ŽØ3b÷ Üɧ¯¯þÕÒÓð¢&žÁ·§?Ê𦟺˨WY>\ s_­†ãÐëùDÑjÏû]íäŒKƳ˜næÜ)yµœÎ‚›×ÑyýïfÝ¥ï\î_Ì»I+k|ð]ï‹Ïr;hP¶´´´åH¼îâ½O  ©QÖrÉ`±š´|ãÆÇ÷)ŠJõ‡ËÉúVã;¼›[ÝŽӼ‹0<&Õ`½ËÉéz¼µkHUEÅÖ§gƒ·W'GX;à{ðÊÂêe8ÑapPQUÕågÅw•ì§ð˜d¤¤Â_¿~½> ñʧV¯ÄšwË»‘ ‰ŽŽÎ?š´|~:¿ÑR¥”7–‹B,DFEeñówcOÿ{ ß}¬?Ÿ6¿ÞÑ~ÈuÛ¯ætÚ‘æ-ØHr“âtÜ„FæJiº?+r½Z‹®K¬rÜS»»¿hšà¾˜M+jºW3Ï?š¯²œaá¾;©Ý«œ9@v ÙØØ0Hâ®}¸¿©Ðë€Û›*ÎS.:Oº§%gf> 5kzu¼ÇéTxQûþý{Žõý`“¦†1ì®ðtãd%ÖYïyç• « LtôÍÕpé¨t¢»ß£°ùFá‘mu#£|špȸeÕ\&2Ïå;놳(«†3¥Œ¬,JjjIÖygýª«Ú-’¦“y·îeM‡ÈÖÖVû휬ܜœn·Û»‹… êªÙ§§öàM;QêVC7M úšþjñqqÛ{žWàÎM×~EªUZL¡ìUUÕ"+Ï”öD€¾><<´š "# |ÉøÆT„÷w×þÇ<öËg>Ø“MÊ),”úµÎ½ïVWubfnÞ@HJB"öýóçÏ·ýì6‹ïªv®“.,Ç­æj/朒;C‹0(•Èxxîq¹%æüÝê{{{ Š&¦§)²Fr67MDå$%ûB=ö!Ùo?ö/HyœžŸßëV—ž.hT¦***JAK{AP”Ͷë ;Rç÷‚ í®P]Kkßi>¬P³É³áþ8ºió|Æz‚ÖëªÇCp·`¿m̈é|6-»¸Xf$Kú“+"²O‚濳úÕ;÷C¾È¨(³ƒù†Z@öë±ÆÛ½Œ£ß0(””2ý+P«Èq¡TÊ—15ÍùàpÐp±ÈØÏ¶«ß—È©|±àÕô«§GQK«Òýõëëëm…{›› ª¸Ó¯N6(YX”Þ¾};_E<¤>çŸW@)]€Ëb1˜¯ZVßåü;åS†¶ÿ ½+òÛ¹c4êÝŒ®}¶9þ?§iôm$(@ƒK1â—€µõ¯¼Õ™œª­TÖ<ûbkÇÈd>ÎÖ—À.NšÕ£óÉÞôwƼ¼Çxü¯×›š~ØlþDâqØ¢|Ý£­5Q³1Ÿ— m¶Ô麙ú°Y6pÞ³e¡ÎÍÌÌ\»SX×8Á +XŽys{†«ÊœäÐòßÉÑ\ž€G-º½š ý&'#Csg|o´3¨nͦÓh–4p¸›4dèt+ÍaX4 g𕶤P»I«Ìx`?Üœ°ßK+[YÛãìË8÷å¢÷tõ‡´]ǺLÉøLuëÅ’’è÷tƒÛ ý͋¡ÿ¾6ÚÐʇª:+'ãⲂ¾œÞù4iÞ9Jÿ¶‚bº´L)üŒââ!á†$@C[^^!×!>}FœË ¸R*­æryïB¾…„Lè‡pg®õDï {]¶}Ì.âE(w… Å%ý¿£¹XN{!¿´ÔXmfhˆÈ?Í®ÝոخÁ/mÆcج¬ý <|øÈÖ(8-²¦ýÐûÚã_” ›dç\\\(¾}+Îd=Ï5ç´àafm}1ÿÂ2q¬ÖIóî'’G••,܇ÍÐq¼^4—zïÁ+'0”5ˆD!)()‘k”¾ƒ+Uè´<^[]%£§—…´£Â°'ŠàÂ![ ù \mºÔ0“Jeq®ÎÚƒ›;ØøÄïª=ÇÙ¤~ÈVi͈ËFbhr^Aä÷r‡¥»MaÞaUãÄ Ê¢z¹d÷㯠µZUyIIEI§ç.påþ—Jð3SVŒ”dffÙ[ÐÎÚ6ËËÍ㮲ÌÍ6‘‘—ŸiãûÎäÖ·¸¨ãë‡Sn2$1gÓfú«W"¾_6¯&%åi²{é›­š¤‘`|ÎÓfhd222ÖÚUgæ…c^nì‰Rw{Ö^#qÌæåݨ¢Ã  §§#Òyàí=Ñ´ìöã±ÉÉEÜnç›÷7Ñoæ<.æÔ\+ÆóUÓêë¹N‡Åçw.*ÏãÌ ‡Ž×z0 4ÕÒõƒÙ3'¹í¤|Oò8W7‡G¯ï×Ï}¡Ñtíº¬Ê븫R YÊë›…‡ÂÌL’9‡ Mø)¨e€d—ÝÛÛSkt¯)--=I¾WðºÛÑv8S60·¨HÙ|‡5¹ççO‘†«õxàu*Œúâxü¬¹ r YnD%àQ½˜=ñݯÖOªâç´­™µ­ã| ©žÃ·­ÓœëgÄþ>gí†bñç¿ë‡‰ìnN /ŽüXœöw¬8ðhž>{FND$ +ûí+¬²•U-䤚¥j꣓“¹´MùƒµœköŽÈ†Bd$$üôôKß‚‚dŒŒŒ¤Ê¦V¹1ÑÐ cbžwtúQ²OٷϽ •–šhô¨°­»ë2ñ÷Á^µ¯uØÎYq¸;Ë2ëOHH;w¿îÕÌÄä0x)*Ý ˜#QÖ÷2 ’p€•™?~¼n:égßÀ›ûÐ…ofj:4[cWa2ô£gÂ'ŠyJ[¤¼W_ßÓҸ͛f%fŠÓÔ†ðÞW—ï¦i^¢¢ ªšI©lœ”çÄâ7²«û,nM‡‚LjµtaAÈ%§§§í»Iw:q­#ÞÌ9ÎXº.~zVnÐÐÈh;ºé6ã¢תš™÷¶øþjÀk;3Þj8¯¨ÑUðléÎ*ökEYÝ‹û¶a{-w÷?b ${bŒ }¸4ü—AK«dÉ¢Š2gÙ  ýu:¦ ‚UÉÐð,7·ô—‘¹"&SL0”dd*{{H¥ædŒéî&=|ó”Y_¯Õ¥‹Œ™Y(5Õc&Úèê¸êô¢©©œ˜;Žé@ÙaÒ$¤öHÉ»ºèg#þ­ö/²'Êÿµ?X©ÁäY\‹ÂŽŽ-  //µ5’µ ëЙ¹!ê'sáØc¬”Ì'Zbb Œh€vÁŸˆÈÈÙ4TCß‹6ˆ]\yÏñ/ТTöL©d‰Nèß'{KTU8IÐèS,¼¢ÒRWEYÝ¡º+eUÕ†ÝsǃiÝúÓNOÁ—qée3³@9yýg« Æcø¯úÝsDCG˹Ïq˜š@ü)*©!ûaÞ•‡Ž_ú"Mƒ&W}tzº††ÃÕ‡DBdl²¤›ã|Ò~m=s+=¼“‚‹+½©j†4Sš°Àn ñ‡/¼´œÖ¼1A÷|4à| 4©Õ;—ð 0Û­KhzœÍß ð>ÜB)]ì!dª=Ëko'»;Í2Þ™6ߨ<êš0]û…<6>>_ `,ò…$}»´'óÌ9q\É?7Ï’‚À7ÎGGa ñú ^-}Ü6öb4@ž6¿h3qø»A‹&¥j{ ¯ÚO ÇG' Ïòò̷ǹ‹²d2§,䬬üzä«RŒ,,ª¿‡KÎÇ餴u2 ^á`þõþ¬¨`º$M„¶¶nè-xlµ{+Ž^1M˜´Ç$Ý€nòý{_S ¼ÊuZì 4®>¸Y$‚ ¶ðl;O=2 ¥ˆ±ŸmS“ nMMƒÝÌLbnvqvépîñ1Ld4+Þíä‹…9 ÄÒ)µ;3Iñy5µ¡à@E3³üá‘&[ƒ„áaŽ®?TˆÙmƒæ=ûЏMÌí~é™î³dΚY²O†õOƒáSŸÙÜû¸1Äû5mv ŽÓN’éo¸YW÷Ö ©‚ˆ*ÂýÑäh OµÝe ò¼~Íï°[² B`5§d~tÎînû#z~¼æ‹‘ÙÙu|ßFkíD11¤ìêËç»9ŠŠ‘¸/‘”dBO·²:®{¾à­r% ʤ ‰fË~m(45·ËÍýµ=Ñm÷pßÏŽ‰™W_Ï××g9Æd3Ð+qHp‚X ‡Ñ¿ݪ‹Pô·noÒç¸$ÙuM¡FvUŒFFFüU2™¤öè„„¡/Údçææ iÉF2%;(¨¨ÆÁ—R•]ˆ>æä­©Ùª=lE‹ˆ/\ àØA~Uüã‡ÑæDÓ|þŒõÃêbØ+_{ÇQ6¹ñº¹ûÛD†·i¼b»Š*1²ªª‰|½ó££L¹?~,é(Küúµ­¨5Ÿòã v–±1f— !!GÇ3 éÇ ñE!¡úááe–®AKlÐ$¸7)Ûþ¿" Á]ÇDCrrz ÇŽxumIZƒ…zû$2jÜ|$SÏr¾^ˆ6H@ÒD«¿|yÇB­ÎûpÅÇá çm9,4’pG¼ ŒèvèèþÇ2àS>>c´µ-ÿžæ0û!–{~a~_ÁÐð¢0éæ4yWñOtt•VÈÏò–4>â»Þ±ã3…,‰¼³—%"TŠ2>øÏ_æAè‘Æ pk¥,+ÅÈÃîªY‚2F>rrž|’ÒdŒäÝé‹‹ŸXƒ'¶ìÍ’â¼çX.¶Ã¥ÏsË˵„ô‹…B¤ÆO·¦ -a4 ”rOéÁ¯D€ñ&‘ˆIY]]õt“¨âT±ªY/K£\àlùB—ïÜ/Ù×**(äá:™·ùiN—ç¨8ºÕ"g6WIt?V‘LŒ+ ×ÿcɆ±Ô³6¾ÚÝ66=lŽ]DéM¤¢«+Ä}6Âd>>ÉSx¸y9³0?ÚpјV^Άyo$sÇ¾ÐØ ­Ý(§dÞƒâÐ|úåNªåÌ}JqqãÍõù~ÝÌYY2wÖµkFá~…¯6“×½BFzÌéÕFÆtm… Hnݶ¶rö ãâÞ @pMUo³Lí4 Ím³<ÐC@¸}ƒ €|P¥´´¿j}åà°~FF‡éêO• à­ˆ‰µ¶¶>ˆI¸ââ¢4ÏþâûøPi–Y©¹ûëÔ‡Þ ÎÌU(Öi ÖðÚ±óÔþ7’pDtt #Þ¼ }S3‡?]‘§Ï‚a>W›x½™–(RL"p¸7VŸÙR­2Sz@ÉÊJ(E¼ÊfBÓz³åÙÂÁxN%)Œ@ñ4áÍš «Q0Þw2sCôׄ JJ´¢®+ACº aªXgåþÊ} Ÿº¼ -Œ¾ŽK¿Y»³©ä˜—ÍÌœ \pXÝu`Yƒ Ö‚üC\`¾HS€p@@‚®ŒHLLŸµ·¾è×Õ¯wÆ’sm ³©ØX5–tWµ(.NÈšŒ“‚¢—tq ÖÅíTBìÒ¡DÂü+¢°©jý8¡c+­ø$: ãpâ)( ̬ë¤Tb†²8«~£{Tè ê´0¨°éš21Bry\–Ýaï‘ÀþóóGõ㥅Kd©–ušÍ²Ù¥ô´CÍ;6šÓÝã°ù ¢Â¾~•U«;' "H•óðR¯ŒØôç­WþnÀ„c¿WQvÖôÀIÛ¬èáÚ€Åû£@]Üm×s ø‘ñ»Rm^i·óÑM¬&g>\Ö}6˜F>>¾é’•üGZš–Šºº%pð` §,.^÷š¸ è, Gœ¡“ØÙ×ùÆd+šØñh€Þ­×ŸáÖŸuÃY À1SÊ–‘›x†³«ÚM¨&+« %ý)”Ž ñ?uõÏÿ#„—á!=4ËoLí@— —þ&ü³7ì<ždPP¤TÀs¹HéqØ‚d ÄAÐÏW]Tä%cBùa… ¶†IOû9gÜöÎM€ù¡¤ärV?#³óÜÎaaàÀóâ[’³^ƒ“5Pp×·' È¿>ª¹Õɳ.$±Î“}Ÿ™;ßáfk7rv½ó020æàǪíyŤ!m^a¡ªª*,ÙåYUcðÈÖx7ó|aâû÷àLrUœøÜü@_ûrv…HoyÏ!h*åÍÑÎnÕhjZÊ›š6¨©M¿5áeFþk-€ƒ_ÕÊ qãÞÞ'ÖƒŒìSé€þ‚°QP!)vðé_)vaX1­¨h¸óA¢¦cøˆ& Hçõ$ç„H/0âέ•`ñûÕÍÅÄÖœSÕäïJÈÅÏ5ÛIýfc©`)ö·Â Ët˹#Ahªg{Ý®@3vQÝi‚0ž.jz½ÁMNCSšLyë9»${¬Dƾ×ý¡ùùî‡G¹Û7jf¯÷¬µÇÃ¥­d¤iëœÛ"¤¸èÅ•5™Å±4lê[[ïÔôõõó”ò•ÉÉI¨5]·ek2Û–†ç*(((Æ2%ç8 £fæˆÂÉ5ä3íƒõúúA3°Üºmâœæç–ædvfÞÝì”;YÅÅM×›ëë½¾­u62|ëÌiò2<ÿçÏb¨}nx0ÿšÏù0>G_ðŒÏÕ–+åÉØÉUß•bâ’_à†uÖÛºK¯‚DjUVYó^”@ E„¾Èé–Çng ©ÿ´`yZ+À k§¤k|«57µ#Àxûl" ¾… 9^%+A+„ǵ/e·¾ÊóŽFÓqJÀ³+PÈ›¦Á>7ж‰ë">~Ïu˜çEò›nÚÁXp¬$µ\Òd"eí¹‡‡2š6-ÔjOÑ×V ú#2nl˜©(ËΖ¨sTÌKK0*ë.2ßÍIƒÑ|á’rü„›¿ÞƒÓmÆé‹z€SÁñÎzÈn¦ð]"åÑ,ȳ6‚z‡Žé¿´‰ôÜøô±I…ÊGG²özx¯+-)G8,&€ެ´¢V” µ_þšÍ*ëâ‚f¿[bj/Øá4<¿?:cí•êOx/Ïz ¼ &mRŽ8Ml. 1ÿé¬ïõ–tò »··7“õ0‚ý'=] Òïj6ŒÉ¤±¤Pö§¦D¿¯ßaµýOÈ 6q¥JHcTIóõ]_¯[áÏÖÓ\ f¦Ç¸"˜‘¼EÇãbÙäò s xæE–²’’i¥¥¨§Þ„xi'É?LGJŸY:#A ËÊæxœ7\ocvt m–ödîL›S2W\,Îkß×Þß_\œíh'áZ÷ît™…4V-ÜóOhÝĸºNˆ›2ÞØ^ò/Úh½nÆÒŽ0_jõ2Yï-q½\zë¯Qg½ð¨@ë®Rb /‘SV<:éÇTYb^çØ˜RSab²g­4"bŽ7³k¹WõÉåJŒ¥òtKvA_Îð°ë:DzþâªÚQTžXÕŒ]Aw,à2nž5…x]XuJÿ|_¬+û])8cËœÕ3•• ’TTT:(©­%aO´j2?ý¼ã(aáVÑ„…ƒÆ:Më† IIIË_Ý¢CWÒCÊÓ‡•ÞO4(ͬ+#y@Ø»uei»n•o3˜TUíìåÙßÅÞÉX.ÔÞ_gžÏÌÔúsó M7Þ…| DØÙøuí×7þ:mȦ=­•ÛKéø¾ÜjN È‹t_xéa å^ BeN:—ÖD`)¨fóþRÀ¼÷Ò›Îë8è b< Ày4 q{^ÂÒ 3€ ëXHH~¨“þåó"#SZ<®Fƒ‚züO¾mîV”09áÊ[UTâí›îaŽæXžÏœnþ-ÎÁ”ª=:Ƽ\¨ØÃýÅÆõ—ÓϽýAXRƒ­Û“— IY1±Þ%ÚÇx.OI“TŠ:;•=Î '}Ë”ìA²7}¤ z%F_A=¾l‚HŸÚ‡{Jû£ù›’ÒO¦…fÜw§BÜ7»¤¶š'½úgi„‰?räý7’ ‘AšÏÕ™×krr¯LÍL'| &H"û®5‘ÝÈsIÊÄÒÁ¹«Ü Ñk"·¤d¬®²*%++-«å^s"ÈŽ¦‹èFÿ7àlT& þ|äìø¨W2yq­ðÉfwך8ô¯ËŒ7vHÕŸ2œœkð­Þó£@i¯µÈt,,Á•ïh­éüxk-êœ‹è €É¿ÈWÊúï”'¡&&'s!D韢ÆÜCGû†Ëe4 OƒDÿ¶Œ7ó†¥~Éøon54U™6A„É?¶F„ͯO-L䬮n¾‹¤6”uqêªl›5u€ÛÍltv–2MhŒ„¡ Þm c'íflŠ´²T³Î?K >~Ê7'9yí4‘’Ù¡§ R 2R©¢ÊéÀÓèt+øåuĬ¾kðÛ7‚=&é'(0É` !Æþnmå·_í2™¯G³ßÎYÙ‚ Hi–bÞ}mSþå8¤´ï¶Ÿr_­úµ#MLh?ÔRà¸û&™¬RaÎJNÕ› Oæ5¡éô­3DÖÞZÊÎ.¾ÒšöbkZ5s®.øO ®ö¸ŽÚe¿…&¥í<ƒ_HɲV––^,«#…Cd¦`fÎT'•–ÞdddLB* üWxßu AÌ’§Þ9úh~‘uTÛÒqД½hšßèÒ¦<[ò×Þ©˜¨Üøý×üǼ‹¼ý~M HVxû¯Øz¹y¿hq“û/w’xÆéxÜí5|àåæyè-:¯\ïó1|!KË´$¯FiÞY€ß²ßÊ’$„wþ#¦[-õo”a ¡¡,~ûðŒ:00ÔÊ¿ñm[QnØ¥®¼\ @UÍ\⇘ìl:C{ÇýÞÞÀ Ç#ð¯²Ðç?.ÙA½°ù§uIó?®Tl’=Éfl.q9ái8lÍr=£6³²ùJ<|µA˜@ÃÁ + AºÐƒËÓËKM×-{M§9¼Œôö'µå|o¹ï¹/#k[W 5¥¬::™§zjלž^,ZƒAR<ªWNMM#¥Ý¢ÓãÞ%þ"È.õª¨ìÊJYà:EÏa8¹„ŸÃÚw_Fá!ESPP¼²¸°¿ ¢.¸€á†¨S—ëy)ñ€4qn¨Þ[Ak@mªT}sêÔÏêôÕêž2››ã6ÐÞºÚÿ[•"'}:Ð>´áø—1dá‡MŠ(iRL<-ßF²WB¯‘|JOۋ՗ɶk^gcʉ+#EuVÁë}œŸh¾, ðõ§A<ðXüéj8®AÉ$³Ó¾ 錺h=ÝÅÿ`0ˆ\^+°S'ˆ`pŸëþ’êþÙÜ¥uuYyyáÌs§ºÍïè¨z2®®ÆR)Æ? s4 Aϳ <ù›ß›—þ7Î?®$¶˜ÿ#=žA0îZn{vÜGí®gоÚÄý•<“×ý×_ýRpö.Ø?¸VF½Üââ8cyÝåp€üúDc9HüÓåØË†³q dL€`ï<”NY“ZÍ&4î¥Ü¸ÔßÚú»DéèVÇÏÇö!àû9 WW#%[ÌᮌnÅt/'wUÏ/œU[Çé¬xR¨E²–þbÇüÏ{|a3Ô"'ÇeAU%9— Äö@ÔÛìlà»h¢üb›"H~Þ½ì''ÇÖ0;CüËdÏò«»êuN›9Y,›SƼa#[ñÆyâÒCå¦S¶ÚÕÌN7Ôuéâ‘3 (åÜHûWâ;¡ÒÕ˜­@Ž'.•NˆÎû ÚY7f†@ ~㘑ÑAQÿ1V|€Z} ž@Ñ}ü'O¹¥ÉFÐ:O÷¾LÉË”56ª"ù÷àh CG^N‚†9ü»„½Ðc˜ØopZž.eI®fÞ¿~áDÄÇC¼ŽÙý-dfló˜NàËY‘—åЯHÂͼ"Š—Éó]ÏmÏC23Y~Gíq÷Ùõq\cÒ9JÖH·Ûm["ȤŸK6Ý8©G+ò‘àŒU†Eõ#ðð7¿u!õ•Õ×óI³JÐ&œ¡ö5ó…èÑ<,T á?5wN |+ º"Ô©¨!Ó1¹¿¶¹•€Ìò(Nƒs@vR˜Ú»j€†ô‘‚þíwuõR8€TŸ»ßŽ”› !áDbƒ¦øDFŒnÅÃì‚ àμ"^Iq›Ã~LŸ³Àû]—|¥1pÌ!êj§óýJW@¢n+ë !¯ì÷¨FöçÆlë8 Xâok“lø£PQ<Öd¸îN­s!í_ÖtË.Ù‹=ºyå‡ù·ö£Óýiø_¥NÄÌÞÃÂ/MØ…@zäúìØ8œ´AýŽˆ:¯¦jÊÄÌ'œ‘uèPEÈÄ\±ÕCÛ4ËFÓ­ÚPzG»à“Zƒ'ÍC›ëìŽù±@±Ò]þNS›kgY!„ øë4áàà³½À­­/[¸¿˜â%â%¿…„,¿÷‚Zø\ÓÃ] Û.±Çù”gpîù6ZB–ê}eäÒç„Oÿ€s¼5&dž/Z‹Cópfà¼7)›$ˆ¢ŠJþ/-Ä ¼!§¤äÉ4¼yÊõ²‚»¨åÈhVg褷oïu¥:hDáäÌÌòW"cc!SË‘‰‰Ùùùý$òÎCm>úʰMþWÙœ%.nìÔûÅê·“±£""RÒ·rDÐaË.°e°€üUÐÔ ïg'UžÐ`„L%Ý€½ ™;ôôü¤TD:7_T…ëlh–h¸Lm¹nÀ«f9EÃ±í±§®Û9ˆ¹EÖJV¹ýùu 2 }-;àuOMNVëù¬ëk£—A-8ÜS¸Û½}’º ‡·´€mÔ&•^5VUm¨Š7ÖÐH ÚFpvçâHã™õØçoÕqúö€pHë¾NPŸª,Õc“\ŒÒ´œ—ä}ýpì·2F*,¦LŤ³Vp¯£ŒÝ¯3h‰û5óD¯¬»»AŠ8îùs[$ $qˆ#ù3瀃äµ›wë£qæYUª¼±ÂÐÞ¥eáL®•UnÕŒîñ?ZÕ:žœ"ºîÏkRÿæžßåßç è@i.ãÏ$%zÒ¾…þÈóÏS(Á¿×EtѯaŠ@|yn©kdR¬.Éùß¾é.êG¾Ž5ÛˆS€ÔbÆ frJôÃÆË ·èëïSË… Û×gézµ6pz¹²S®ßmí¦`­ò«'ìÏÔ‡Ô5@ʯÓϱ£B­Å%o·¾ú¤–)ûäfwŽ8`P+-)åÍódeu!4´ rž€ÇøÔL¤ZàhÝlY¿4«Zpw³£ ¡‘d¬¨œÈ>báN FF>UUØùÆJJÆ›ví_B¡CÁ0ÿ~Éÿ}y˶îî³Âœì$ž~} ¤¼¼>¶Çs‘²)µÓÛ“ør³1/EUÓ¡­,éaõ&绞ˆ fïq¦Œåñ¹_¿â µ;413¡,rÏ„T¥€Z–ù³ su"­ ø¤åöS;dàÁfc¼à­-›C¬Éí¥‚uõIz¸%##Ñà[ýÐCD—óÑ!ù?)é û‘D5,L÷ÑüS(ç¿U ‚UDë‚t*ËJÉ4ŽpQN’É´6––X€LŒŸ²sw4þh’ KÛS5U˜ðN„¶©^ui)µvùÛK¶­Œ mÜve ›-¿ ”&|Pêýû ˆ@Vs‚(£©?tÖtÛÓŒ ÅÙ„Vø]ÝÖÅ7§ŠÙ}$ P€$ê"LÎhoφo]†hâãi:Û¸ÖVíƒ-™)DIF¾ü’' L0`œþw™ê2#z%y™™¿Äò¦gç Ñþ‹qa´Â€jônmmp=lyØl¸hTptüE[d _4Ë)¹´sÁˆ¶—f†éHi€H•«1„«ôÅä·7䬬š¬Â'ë‰Í´ˆ%%-éÚZOôÿøÁY¼¿ÔN‹‹²ù^øg0\M÷µbœNJú¡!¢mÍì÷[$n‡Ó'u?ÿ…—`!ó¿øQ7>ÁÚ³ds¥™¶³i» c$ö-hU¹ï¢--O?6.;:mÞ]4‚¿Zƒùt¹ÅœûÉÖoãÁ÷øÅÈÃÍÛô® `ãávÅ~%È%Ž-ìhË‘¯?µu?ĺà»X¨À€§Ó4Ø×6ºbâÇ>{_ Èé¨ ”x< FÐSNß>MY Ÿn¥AfŠlíF˜]lk[Û®|Ýyê``DW̪fŒ+ù¿é6€›È–ýÊíÇÅȰ|UÅû1õoüØö?.¶¼Fílº"þtPàa¨Ñã™ý¸j×vf¼Ô,©ÁÓZ&]|||µ¦FF²uNž»ió 2š`Ð< Ð<ˆÇÒ¾UámÔº»/ŽY x-þŸ^/ò€upØ»Ý-»ËÍ3ÿ>„?”Þ Éig7™æ¦Ö…&Z ÑtÓÃÇ󽼑FŠg „ƒàê‰e€†É|™«úƒÖÒ‡ÒÐ"ãpp5¡š«„þBHl) !KUâê‚È«ÔÔ‘»ÊáÍÆÇY~í?X·ƒÐµîŒñ¿À• Zòå†ÂNæFËeqÎn`&7»x³>dBÚó:× 0Z+D¢{œïÍv_ž¦ú½Ú\³©>WŸ âÙŽ„0û[}Ñ ¥/]‹wpö©¨¨¢Jˆ›šýÕ'yáx€ÇÚ/Q%xú5—"ï[²ÉÃ=´çÁ@£ßX((¸Ù"cü½´ ÙÕ¾˜/9GGTí(…¿ðãc˯ÿ‰þ¨JÅ ušBpðàÂÃ=!ðajå&™Vµ¦4øÁƒY®É<Êh¤™0µLxûûs»™î–ý÷÷ä^E€ ÕÔñI%þ=xŒáú™”×€’.‚Í€H‰fþpϱ÷§¡¡-±þà] ²Hé÷L44Tö_"DçÕ&ί]ƒéÚ§ÿ‡uf&Í((O€4®÷W’j·–ÌLL;¥=™[ç3rbb)âm/ÖþPU®§C!§ónÚ€_´°F1”{uܯ_¼µs65·ÛÖ~˜þ©âÏTE›¯Úkº¬u×nþ@CùsóØ&¤ÅÞ”üÊÞ´ª‚B.^ŠnuòàΙtùsµ«ín/#hê¶šUìì5Á:EEØÃ𔑳´L|hZÆ=îí¦§$%}x ‡s<ÿË—A¨¨æW~ئÿcؽ&s{|ˆ«”¥?¡)Æ@_‹u˜~Ã}¡‘Eë%™ ¬¶ñ³jt)ì5zœ°‰ à¿À¿öŸð@kò øf- Çü ëþ˜}š.Ï™œi°»Ø7«™ÃaâÙÒ¿2 §§§"ÞI·lS­ «{ë¨Yd ìANy¹–•“qþ/ ïÄ$+@ä8Œ$±ÉêPxˆ‡£@ÉÿQôVñ R´Ù­¸ÜS÷.ðT1íþ®Z»•9úîËc´êj%óqw Ô§È¢{ UŽ -Na4’«84Ïm[̇N¬‡õC<Ò€€ø³Âø4—)íƒk©„L¬U¦7çÿ™ rä…‡R_>Z‚uq 6-:¶¼ðáyKþ¦=%ŒXߣ³< P9º¡ 1q’võS›ô¿ê’:ÎÿqqþÈ_‹»ê‡˜#®ú°O ¼ãrrè!°e2df?€õ"¯Âº}WŒŒ3µbâÑ!cWÜäF“!‰ŽN¡'µ\§ŒŸÝ-þ©÷ihä¢5Y4•5J–¡5 ®cûÆsñ9)êWtÙ¥ÛÉø¨‚îð ‚þló'Á}ã?¬6'š(«íaEÓ·¤j µïÝþà#ÐÃÀÄÌ+.VÌò/ØV”—S20H„“:îõöõ Bì ò#èà¶%9`¬Ï÷ Æ’¸+(höÝgÀ™100EållB‡GVÀPï f†L®A<0ð†,=Øv§­ˆ‡PÁÚ_TpÚkV‘—ûk|%Æ6 ã=d¡ž¢jC×öv\}"4—+¼áu0ÃÎ/ )r²/X Gq@—BæÛ!rÃÔôäiÇl»¾57ê`ŠËSðEç»9c»S© åUcãë£M÷ïC¸ŽS/h¬tÆ:¬E’š/µ> Ì'v±Ên<@{I¸f‘>¦^„«Ýÿñå#¯4ºŠì‹ž xí5¹ŸñôÞk*Ë®ÊÈ*còG)’UUÑÀU¿Náï¨x†nÁ>=L,lGxr£Ï!0Lb©Gbº0Ðå-<Ò—Ûë/7QÏ;ñšAŽ`w=ìŪMµÍ¶B…LEYqñã®åf#»WjŸ<ïä¸Zèã|ʦüF²Ìe”:ŸrJ'å·v‡‘QæùiY?‚¦äúœx»2߀F.ú¹þ™Ï ^™Ððüω| ÿ¤ç•©ášõù‘OlõÑ;ô}ŽÃ¢ÅY´u¹ŸÊ6%;¦[+âë‹@g¾Kï€EÍñõºÛy¡å~„Õüùi•þöèQä7ïY†áȈHÍvμö(jÿW¨ôØœQ~Ò¤÷©¯Hkð|}1.½de‰ß ¢ì×î˜IÄ;B__H#:Žˆ|)›I$£¬Û¤sóÍxɶD&'›é n°Çb3‚†ƒ"ò¡guÝ>åbYŒK æ¾KÓW©ÓÒ‰¹~#Ýs6CÙ>KSeeáaááÜËCiÂxs‹ïE6S^‘þÑJðÛ’?²á±®„5Ÿ¤'ÙIæ¥L¦›¡DãëL72ù4Y¾4Y"šoŸ !¯¹¼¿‘w>îÞ#£.h½»@îøñž8UŽÜ{Žjøý%ǯ"™<ÓKûeB8ÛïÁ)ñ%nô“Å„oßFb³ÑAËg"´4\Ü¿´eŸS¹ÕgR;Ú)ÚðÉMôõ5–US{e˜:”Í•ë¨e'IÛÞñ´ì²ÃÊiùÖ…ZLŒBVNŽÜ‡;àM³Îb®s®Üévä—$îÐ,®Ò2æŸÝ¢B 8d‘¥¯Í!=e‡ý»‘Ÿ3LÉÂá ¶ãŸ2W¨¡åæUÛð=‹ï²à¶­i/à0,“!!ì\ÍêèxJDÞZ¸Þú”Z)ÿûéS^½ÍÁFç󩺆×[t® O =ì±qYv»¦Ê°9"ÀXî óI ‡]~¼zFè"ÍK-hañ†D;ðæ ‰àåË-V°0ÞO›îç‰gUåä`¡–ú[¼Ëlú˜^ ð}bEÕÊ͵½jÅ qó>[ýYt€¯ ¿žë…”`2ÎéV¸ÓÏþñW,Q­½>Ožÿ» ­¶ÅìcÐ7OY@Ce¡Dr^™%q»u>«9óyòô_¾Uó.³QUF>9µV-˾x ¯oœ8Z|6W_ˆ ‚«žjîîLoPe_œCˆ‚hõ82BAo©Õ+­øÊ¨¯¦bª= ìv0ÂÁx[é˜ßmäåõ[š<à228L˜Äp£>·x£EûI@’ }ê ÿ› LpE»ßÄ‹ëu«Ï_?¼f„ƒ@ÈÃ¥³s@q·Üûºñ¦•÷Nú« Oª@øQtÓ)‚c™6Z@GõI?gª ™Zb4ru?g>¥ÿܾX† ” rëbK,$‹¿ÿñáp‘O£Ú&íÜ'4xì´(/YYÿïßÅ@‡ ËÑ̺`œºÂC½baA½»>ZêGQÃ÷pOFÕ¢ò¾ÐVóõ\@È…ù¿’ûçÚÒïxhxY•b¤™ˆâX7¢/ù›HHóêa˜ÑЙnÑgËSÿ6_ÖùKäñü+²"‚UF ~/Ñ[@+ÕlFìh7mØê{y؆ ]jµÍû‰8’¤ek´m­ôI¹f° •_Ÿ‘·zL{¢`Apóá;6׳±¶Üð}qpd±E›‹­GÿÚ^­7–‘U¤àuúÊ+åߪçËÊQ=$NÆŒÊ/Ë„C.R%‚„ž ùVW“‰d,¿Ú¥ÿýž Çu ÄõÞ)0º«!-w 6_þ<©399}hOâsOŽüÿàD¨Ô(SD÷S†3 !Õ `ÇÆ\5ªS¼ûÆoiemkžtw›½y›ãó-f?U‚'°Y“€ñkûÛï÷‹ØìNÙ!`zøŒŽbïÎÝ<ÒÖ1üùßÀªó¯”šþú»Ißbæ?Ç98MîI…80á×ÎrGÄ&ä?7;NímÄP4øÝy[z0ðQÔ”Íç{¼z×§º@ØÑ‡vošãý-‚9Sš þ–ÄPöh”gZþäf}Ù…ãi¥r¤y–­Rñ¯’ÉäÙüée«Ìº¤@¬¨(‚/Ãï&Ô–%{ÑtíN´é•螬?û°t÷yšÀO·¹Ô" º¤`?½¾Ošû }ÞeŸc^¡!é“ðéíàºó(­ˆ¼=Á‚³ºÃ÷EÊ‹²&@[¢þ¿°n»ôùZ “}¯ÚÌÌ(ú“¸gÖø}þ—ñ†|n t8^ ‚æ>„yFEDeå;ÞüqB#B÷Cîã“*ýÍAçµÈn`Lù¨TKßLJR=bfföì3¯P+Ñiy¼;߀ ãý˜|Îñuÿôôt¨ªï+œNûí“%úñ}â]uæ©'Dz[®wþZY=Âw?vÎÞ¥,Ë6íÔÞkci+Á¬m~v‘D ]X||£q¿ÎR«o‹ÔGBÏËGyÊE~mKU¨íÜ—ÿ«dJäÐ?Æ WýÍ¥Ÿpj»|ŸÒ‡7¾ïiÒd0ÄŸ¬÷ÖÀ†ðòÀ½–íZ0ˆŒ‡÷oûd9SyÕXDA’ª@ŸAÝӗȉus¾×–)šx{ënR¡¶;Y’Ö7c‰lm‰ÏíÊTi5—!'ÚuÃP¾q‹tz½u¶«2ê5íXGçy{ùñ¾ÁÿúéY@°Š1¾µ××=‹ùú—GˆJ<990ÏêÎñ­ki|'vÆ´Fy9vïÔ©ü™šÍÍWv«?¬|žCà2Si©ÿ¨É?m¤Ò”efò—µº‚ý§»%ùÝý9Þ2 yz ÕÎÈã“›y Ïïo&ʼ®z(w&¸{Îw¯°ã¿‹”y5¸rwj9Í•íjßù=ÜíL]5tRU–§äñ«PûºÎíb`™7A8ŒâÈHµq+'Çiž?"m9ädcgJ6m¼Ôã†F—÷þÒù]ÕXÒ@”;Ïý¢7òd~> Ñ'ÍT•´¡ŸÓ,Ž`ð,ääPãûö§+ò¦lÝÎwuo.HÞ¼)¶[ïÕí3*;œþ`à|sÈ[RDD‡Õj–ŒÊ˜!vòêd£ 'ÈORJÊèäøX¥lª×ÈȨJ%H¨-*2²‚¶§ÔBI óæ|Æ~§  Àp̬B»«E¹N}šê|§¨ÉÈít³å±Éøxm)‰DÊÊÜ£Çw˜Û¼£^­kÎ'+Ü£´ÙÚ>=Gû¯Ã¾Ì•ŠÿÌOî÷Ÿ‘¼£9¼ .O½s•}x^sa>ó’‹ù Ë}ó 'ÂåÖ™ý¦‹t2„‡c–*‚]·w÷ m±²fEÂÞ~êÄ»uEejcá@çTU²“ЉF=ÞëM:È;¸øc¥²ò¼Cžü*‰;ƒ©ò»Ê\-óÎ+ðªªÍUCÚH„< w{U “€§Ê¼Ÿ!EÓhþ⹘µÛ=\j›Z^Ö«,/hØ«œ‰£v‘d…í<ýe”ìºM¾TËh\*”vˆ*&[·†4Éù3>½Þu9¹Ö¨ˆˆbb¡@hZíù|Í‚>·íQòqØ“ýÙšp|vÛô?zÒ|ægñäîüГNó.þså¦høH/¬øú÷O]å`¥`»š%œ\AWÞ;¬Ùúȇ–q&>=ø]„uêÖ$Ä'õ§KƒF*ûÃCJöŽ/Eì<,2Ï%ÍMtSýkFÌKü_·7 Å ¨w˜#¶leÉþ(HØÓr:Þþ„3§å´PejË0ùÌî&-K>'É­çêOFÆð¾þ~#xxxß­®Bk‡ëçŠ ÅT=¥RY#ú5ùùùF;Úýšâ'Ç,¸7ÛyE¥SSS»G+Êü–9s}w5™–ø¬VxêÊÊgWûîõ3ijŸæ¶ÎÒïÑîÑ‚?ÅîŸrÈ6=¿Ûùµö<땱röÂÓª…!òrmÚmB¢ Ï Ï ²> œíw™2Ë%šƒ5‡Íã„„ŒÝP"/cá µ©ØcLàŸí¯qNV˜ó/x\¼ª"â¼î@lêáî€K]5ǰ@É­ØÉÿP ­ò¼«²P›N³ð¼?—*`Z1R«L@”ÏŸªƒçÛeÞ½:a{k·ÏêRCKÝ_0áÁîDÝ×SJUg½ÀSéõp¿;š#?Esi‡­fádnY6e¡u‘“šú ŸÑH¢lïÒu61ØÉÍGŒbCÒ¨×ç¯Vzº‘D-Òm¬T/ͼ%ôÕ]©Ggu‹çœ»ÎwÞ߯ÎY¢}úKVTT)ë·ù5éu_]®Ç¿eó¼µ&£ÕúñãòÀ+¹y¾!Dg$óÙÑv^øQ/£þÑO⪥OÏüôN7ùªï¯y6xŸqÅûf²îÏ3þ´eÓP©µ§Lr1ÂJò8·âºÙ{ñ5F‡5oNLĻëýû÷›Se¤Ã##ŽWEu¯sä³Ô4i˜™/uë CFGB΢¢¢\©6ê!Ätw±R5ï ÐôÀó=<\}¦OifNm&].gâÌã|Ê›ÝÖ ®ja,ÄIybNK·Cs.¥åçsâ#.Ûd°Á‡‚{¾¿b»[›P†CÞÅ…°†£êÎsß»M Ë©`6šhت…ûgn–˜¥eáa1؈_}xHþäpÙ^#\gn88Ïv΃[ÂLI\Ì]ÍJaBôŽŽŽËµhm:·s ‰D ù,©Žz—5µo¥¥ €”Ó§lOÖû>| —J`ûÄn·®s¼Ú]`e¾Üþ5†×‹G*‰ëk8©ôkZÚ}öD©‰ízª½–ÏOöôèé½þöí›×ýáØþøô8ú¸fãRaÝþ±ùÌ» ÎyMM'7‡#a'7ß2MÏŸÎíq¥x ßR×Î@F¾ýZ8ÞÌ õOå•Áè¯d}0s{yéÜ´Q¡Bµ ÌÜä驽RR€`¼Ü\Ÿ m—5 ÇþÄ=³g´èçie5væ7j78ôEÐþìGÆÄþÞ`ü · éâ®àÈgøøÜ£‹ ?ÚÏ÷çâ!La…€ŽV5*Ìó!aBC4TÔÉ„<ȉ-"ºlqY­ Üζ; T:H¿ÏÈ®ìŒõn΀¡ò#3bÞÉd}=—n ,IqXX^Õ€%%¥R¨úû“ ¶K3'qKóZ«Æ0»‡¥ºê }g·ÿIǬ‰¯×ï7µ•i„Ù æû¡·Zöœì5áö&®…6hÏt2±Äý©Sßò·aÃX’æª:„é–¦ÿµÔ€†¢s=5±˜«ÅË(íÛ3‘v›®Ó0¿šš™Ÿö,¿¸<„û-4œÙð¾t,;ùÿiɤŒ[W»Ú§Ê&K Y jYMcåds®ŽÞdðÕé†F çA½<öã[Þ¦'âÙ•uyçÏO¯$ï²îø+æ4ÏþbÉiZ…™9Å'c`˜'ë]míìÚlï4ϸž9:­Ì¡kFó«ÿ~¿µüݽÄhgÄ`<ö ¡4íκŸ±í瓎»ŽœÁ úêêªÎÅþ€)#‚wƒÛ…^óÇG"í³5vº%*>¬–Ó>IÜn¯ééQ¬›î*éæ,Xˆii‘»»»EDE[Úy:>ÑõÎÖ–A*™gn¹êpÊ8YwèÇûêõ8óШ(¿±9ð eo3¼QÙK¨Ã>Ö…E@~r9‚RRH.xÞ 5Ýs`ÒhIxí×lȨ¨|~†¤óp ™M)_倨w††oÕ° oÅC8½Á»‰ü  @ÎÐëwúÜy^ºj*j|Í+¬…3Ïç“•E¹¿YxXnþ}yÔEXb2ôª9‚\žÎ|œ*ÇG<ŠªÅ™gÓ.qÞyÙÚ?ù›S!¤H‰Š6dk¤ÍÊ?¬¬òØL n—ÇþTëy ²mG×ñZ š÷î®…†]³ˆˆH38â»a܇Ñ>îRåt E‡°r²°9”&P:÷ΙÀzY­ЖHŠïÊŽàÝgŸ:.€Öaý¨Á!r((‡ög÷Da,Î9!³Ä÷Ó½32Bµµ{¦üß—/¡.\ ã©ø¶¶¶Å€¸5\Ö"¡>¶¶ò#à0ýÔŸÜÓï ÖLáƒú˜&¢0–Œšúi]vvö;WW ¬v½’bƒù†» ©³`\V)•þ»> 7@˜A6O„ìÂ;Yë@ ƒ„÷åh¥KÿîúìKPâÎÉ=#úxxx¸7ˆxLéP=nΗRý ø¾300ÛoÉI$óàÃù>JC‘••muÙ0gsðòSºpp¿]%1î]\ ÑŸ(Ô¿<›°{ðÞ†-áwÙ`5\ønóÍ9ǧ™ˆ²ÒÕ„”7öiofƒ/Möi(‡q6ÿç J„)ám ITÔàVþÇŸ Å}˜„ÿî=¾7¨Ö©ª˜d”u_6’=¢—ýp“ºj´[ J+Ì9×ÖÖ6G²BÝ@úÅ÷…'&RsÐé@sJy›õâ+׌Л=VH}âyÒÇŠÍdòÆgHãA€ú ™øô XXX¨tù!âúÔ¡ÕísèÎ{Þ]Æôôô„}ÿþº¢|Su¦êYÎ+jl¥mºýÜÛ+ÙŠÍå8}¢Rsßá1x`íòîB 2 ã4[#àÏ‚¥}‹”-{10°P2doð+¹ÿ¤ŸÇ óŸEÃç?·è´øö#žø§dÝ ýWMú¦> ë—¾*f–´vû7 BbN7r«ZÓ·ýÉ!‚ê n[[[KM€±™ã³ÒÓ5|€YròÓ­/defÓoÈÈÈ è¹â<èOäüðpw±RP5ß ü­BÆínÙíêÏâ…—ŒF U‹©ü‘`{Ä2ä~«¸Ó µÛÓil˜±±1gÐögÙ%â˜`å3%ŽLÂÛ–  ’—ä½®8x,54¾Žåñ¶ ¦èÿ mZ±öšñ]é¢ô9ÌìYs9Ëø»~bL§B÷a™WF}æ# "nn–II8u0š1,–Ó†ii<¤¾¸^nc¹Š ±3~pÏlv±kÈ.˜5í×.h>M¼YÊÈÐßÛÁ,’ÞLõÄšÞœôãÝÖ×Äõ¸úÝ…;MÊá0n©09©0iêª8uTAI‘Â{· „wcû1¶YT˜V°%Îrà!‘Ús”{†w¯Ë ›”·Zm¬;Ôh«ìÚ°iõÔê”±/ÚcȆGC”ÒYªqù]{|«¾«Ñ€;óÆÙ²VƒêÛ7(™« ¯+  õæë]&‹u¡Ûõ裨T‡-î]êæ‚ÿN…N '‹I(( ’NT€sà+Pª‚XN•bGÇÇÇ¡11_~üx­{ô’nÇ7 Ý&ÂýHVX.LZ­@Å<¥½ñ|Ulòó®;Ô\‡ÍÐÎÛ9Y6;U?rsá„ÒdU¤ ”V€¨èL ?l…§-¯F¼¸ƒÜ—QoÌYÝôkŠíêó馕[j`Ív CŽï:±¢:–Ú eȪuÌíË¿{þ:RìThOFëÉŸ®CѱѸ1àd£b²DŸ‡aùó\zqXh(„CLÿ,Ídr7ª(Q©CÕ9øµè4ƒ» vØ'"''7Ù;9w™‰ßHö"!x¯¤4nXѵ°W±Vý=˜ÏƒÒf85¨ÿ®¹‚½re§v…'ñÚn#Í«úÜÁOÆÙ4øZeq+÷OÛŒJ’¯ô Œuyö„ú¢m‰ ‡¦‰I1Ô"û Ù<æ3‡f³Š60²Ž Ì™˜btK&}OX™TtÊ>„ôÅN‚­xkJ©P¹‘K«>?)ËσRyåòÝ篵_;°ý(9è> ¾†á].W¡òS¡BÝgïnýòõësTØ‹z‘öw4Ñu¡r¾ "ÄJ W>ŽHmœÍt|ûFP §þ㨂÷BÐ×OÔ 0Ãr/¯¬-ÐêÖ$8‘ˆgA$€Z¨ÄbªTi">99¤#kÅ× jÖiÁ£ÕhÞwjjqtoª‹\òòò>\ŸšR©•?À¤>Vy½Mƒpß@{£'Šºm%„78UÀ¿Õ‚E¿7†^¥Â j1ˆuþ–Q_œ/@½¥†‹y´(·­ŒhäkÔ nÁµ®_r¸“¼Ð_ïÅ'X ÿ°ô :Uú&-³óc‰þÄ·—Bž^ɤñ`¸[ògŠG6w’9×InZëvWÙdOÛõ`Ä2bŸÈå`‡…ÍÞš9ø,X’þާv¬(C@ìþ—[YŒ“<®gbÏÃ[Å,--ËLµÝžVZÍáøŒ;[‡ÐÂcR57zÜî{CJJÌËKXfÔ׌Ïùy¼qÜ }ulbBÛñKõŒyχ·øÞ×J‹ÓÂü¸‰7ŸÌµÉ,º&º<8Î6ú…ïhlövRÇ †ñÎJ@Œ)Èþ±(¡Q›|xM/uÂî‘hÞØ>ŠçªÎ9‚Œ•Æ¢lk‹Þ‡fJ&å-[öpuT88T6ª“{H1}³AByÅRy‘E*.9¶o¿ïRi@}w‹'Cå{NÿMÁ€Fám´¸Oq„…ËÓ׆¥â!k¶°«¶äoPQÐáDõCÅ>yþ2]ŽÞ€üGš!ˆ%†l±¥½¡Š#¹žf¨î^ž‰[ón ÍN <·1$-_PØuEœÏÊŠï~cõðj#yeÉŸ°3ŽÙ x‹¾}¹xŽLéäy‹©L"Á‹…H±·jªÃNœÿ!Ïí¡@È‚G_ž Ù-‡cÆÝá8/ÿ§ ó ½½éŠ¾uH½¦+ôhߨ?ák,£±«fÑÍJæÍÐðÑáyïöÎEJq1L#~[ݧ¿ÝÆ6Qä7ßÐ*Vh“ #<žzl¹¼‰xܼéZ³:£2ÉKÞ ·¤¼SS&5œä*V—$K÷$u­,ÆÔÚ8·yÅÖ$yç$õ¦²#»²¥…;”—äþ‚¯ýø‰>ñùмá·gÂBWÌA×Á¦yN-þ*ìË‹—äÏÚªý߯…ж>ÈëÑ{g“yº¼ù)–1ºòÀë·tO¸²‘J$ñ»NÐz~Æçôlu;èk&¼¿~¬ù¤n²Ì‚¬X´z­>°* ®ÌèpO{‚á¹~ŽÐ¦Ž;u`¥Êع{mÉQÀ[PWW Ü·þìí””D|MLœª@¡[5st¹¢?’)ùåë×qÚŸºýZñËÙ9\(pôçÀ€·Akm#™ûúéXã#h&siñ›cà0ˆ@`OhØ!Béœmñ´…}âК¯\ñtç¹;•çº=lËÎËkûIIo9Íd`l ¿Ãn³u ´¹®'òåž`jçÓ!aY ¸]uÀ(Bf!}õ—óæëð¥y®Þ®}ÝãëvЀE©\há0£‰qV0¸«¾ï^ L…Yå¬17ä²€—x“ê²ÿÌŒsÁý“Jå·ÒØí 4>àpAݺxVëN —S'vèKÌ×jÀAAA!˜HÌÜ3P­œb6W¦Ã š¬þ@ •’šúHTTôr¿îÀælLÙ-?ó\|Û)uæàòŠÕz>м¨s€ëò¹ Ø0|s¾Z‹]éÑø°<±2¯]F蚌©2ÚÅ_âÛÃ.ùGQÄ/ ƒÆ‡”Ó¿ëÀ}Óßm˜)±878ï¸ð¯yü¦Ó: šjãë­,ñÐàc]ÙQ¼TøF“/åü»XMnˆ^És¹œlú[2_‘öW$$Ë‘+3Ï£ µÎMnŠ€ðG HcŒBìQŽ‚OuõÏΙtõ3v¦U‚w¶EZ¯©¾}¯ºäzø£[ºïu«[½] ±€ãEÚ!A¸¬­VUúÀ®ñáR,ÙÚGÞmþ’“Ó£sÚï‹á¼0BÇTqqPâq# Hhl.ó“lJ­ZHzº Ñ&¾Ø¥9ÌÃäŽȈyÈMí¥Knî)ASb—Þ&%f+·äèž· Ì>òa|N½}¸¸å½wºwáù8=~Eüz5T¬ß¾ýY¢,džK‚q fsÛßSDs Rã°XhÄg‰Gd4êm†§­ÿ˜•ì‰3À}ÿa±ùÔl¥R~3ãôGÜTµ_‘ØÌfè?ÒÒdUUÉóí€Áf4 ¤[#¶¯ÿ"øº7‘s†·g‡3ÖMºà%1ÌæQ‡éEç‘‘‘Ÿt±CÎËËiµ=¯ÞÊÉÉù¸üéí·ÌúH“Ý?CìÏÉzŸJµ Q¦d¼ß÷ïßYö²š2%b?ßÞºâsb&»ÃB>'"Ûm|çƒC•ë™·+:0Ç‚ŠŠ€5‡Š´y{c»,˜G«øë¬¯ÔŠ4h¬Ïª7ë/‚ûï¹. KEÃI–‚9÷›“¸Ý –\8¾~0vÉ— u˦èìÖ%¸nvËTJôÞì=Ü !ä%¸˜µC†/‘7¨»Ó𪪪ÀåÅQÏhÞ¼=«Üuº½UÖtÀ͹ۋ¦_¥¼ŽrÓ‘b`a!gÁë*`>ë)ÁYÉà¶þ’­£…Û¯ÊßEž•Üäš”±¸%Û:œ<ÅiŸC&¾mK¨9cñ@´¤ŠÅ÷=ŠåÇ*EÎÐTçd½;[ƒ¦¬åò °á‹•Î SSrl?>]ÝÔC‘_ïVºBº®ÏvPpqð,f*ûô¹½a³iVòÚR~üx ÌœMè™VÛ‚Šn꾞²™=ˆë:š6/Ò…¬”`³ÑɧµžùÀˈççÏŸç¬ü%HNœ n¶ÌqoW¨4kÑG²¤ýùS?™*((äíõwwóññ=º?ôç…‚BÂçx’6ô%ÞºqjÓelhÃɸh€ÿzã8%êW5®Â}ŽåzkÑ‘¦‹'5•kj¿ì¡c`Ctg³ß|QèSÛäù‘õÄ+íD)Hq¼ÄåÄhÖ~D‚ ~È„ÁoÅ£˜f&‚·£õJ°UYYYÅGÁw^ç,øZ5Ù%ó’’>”Bý=<ü¤>)€Ìí³¼¼ÌÒðpœ5À4&{÷¯HÿÓµÊæYÉ»¦gæ˜×ïý¶Ç¡t?Fb}>ú÷u*Þ1Ä×5Ô¤|Aså&|L¿„ÐÞ ð!¾¶`Á¿íibÿÿ¶)î^ؼÈ<…näÈœ°/¸HQºØÕñŸc4.eÇJ¼A(£ÿŠ›'g+`KÍOl[ódhèW'QFÐjî;!Žàn”³3’Ñ1f¦{&¸‘êd!€:00Þgboôª5hÚ;ãÂbUýçêx-<ˆø9 =O"•àoœ¤rw#n³Ü®Ê–H…gªÿ^lá!KÀPõ‹à–g윹Ú>+9Ä2„ðž„æƒ-Ó?2^oy C ÓРŽïØ/_¼YÂE*\*~™Vƒå¤¢" œX”JìY`=Éu«ìëoñão ©)ëeœØ­°­yÞ¡úmYlE#N䎂†6¤b(“!7Ž](äT¦À¢tV«0 žœàw@’ØÉíÞíK/9hFëKonÔºRËV®–F'Á M…IÄÂò¸¤$ìKP „Ä“ïß6Ç(5Ý_¢âTËÿ!Þ§÷ëÍK60fѰ¦Ñ““3%Vs#T˜ny=S{R·§#è«|ÀË™9fY”¶XmPØr&j¼•å!û¥Œ<¶Cû”·æ#9ûiñ²šÂÐÊ´ý§,°(B*ý¼Z”у‚•˜ü„1Zû††à~®ÍJ¾¦À`Õ̉à˃c æG÷>û-:ܾßEë¼±O±Œ ï-,Þh¹Ê©ø°Ag¤§ fGÉAê^ ûe|ffRI\ä ‚äÔÔIЯÜ[ÆG“=üˆiY%¥¥/Trä³n­ ¡’‹$Í÷Nœæ9^ÓÒ"C„l±n›¡Qo̧—ŒF—sãç´Ú3ºüÙÔDß[x+kj±.¸£AJÝiÃ_è l~Œ­ùb³ÞûòtgêpLYB©£=³÷-ÛÚ×qá¸B+LdtûÃÚËþoMítêeerÆl>®3š-[¬Và|³W¥>k4ÄíQ˜Ç|1ïFK"<Á"pû‡8ËOj­›Ò=±âîú=îGGÜï¯66G²¡Þe,Ý^è`gŽ]h#ùC£~M—l+¨Û)¼ûA,Ko¢Q£ßôšä3dÚ´Ùî×3rŽpK±r·©æþ¡”wt>c­?œ.Ú×5-p÷C_œð]vq¿6ðß„&©Lé;K[Mg ¾½xz›Ñå>–YË‘ö¢³^a¨ûÛ¸Ð=æWìŨž_ 5õà¢Û7ÑvÚ?OõÄÄ<¸!(ôë~ÁéUaaà·å\µZdR1e +õ ª÷+w¯æéi¹ö>¥¿Jí 2/;ËV€kïxODC#—Ãn"ã'ÃÎHCÃï̬`I Š …!~%aƒ›ùmÜ€‘ÝòáÃíåÊËÉ=)º@˜WÓ;µÊÚé’ñ÷£ Ì®gb‚EZG"RJN;f´oèʧ¥?ôP÷öз”²¯ Ê#@ß®^¤ef>bfFÌΆђ=9F.«±ÌdPT½Fñöñ!kïH“%""‚ûúuHDl™€ômNh vÐå%Ù›7‚C5RõËÞ?`ae©>d|ÌRÅ–Ó*Ú °c½Qá"¨SÖ(Ê¡oÖ+iÓ)n5)‡û$ç•ûUH˜Ç:? vL æ[jR‹ìE×m}XجûíÊO‘§?~lÞC*©ÏÕ+ñZ!KG2Ÿ å)óÇ£ÙdJ¶ý #ü8;«A¥^‰ú_j‘v’’1tLMM/·²’!S“ååLK5@¾Ë[¾Þ)vwçÒr?z¿»Ð´PÄRžžq~´ü½vhlì–Ýüö¶d:/“ºõÇû®ñƒFEaÚFü jËõÿZ¥<™ÚâN;“ç¨M¥ÖžhR×É=G pðX4»ÅðÂÆ9m52Ǻð†§IÒͧÉ~àPè| ¾âå%Ôï î°¬šó;hz €‚x™@f8ŽD¤pÉVýîu‡†{ q*Ì•$·ý·ƒÿ+.½âw߯5³Ï9þûÂêǨ/ÈoAî 2Ÿ Rj=Ìã¥åÀ<+Y¼(±áÊz9¾`½ Yxƒé ¯¸moBÛ~µíâN'ŸÅßBmŃ[®V¦=FýÒïQ›ÅÕž}©ÎÔ8¥† M$U ]†\¶ÑKBBߟ"±t bbbo•[†ïÄøk‰‹”·d3°( m›v¸r•”ÌR'Ôã h¢«³¿t+Øcaaa”o—Põüñ›ìUØ|º…{«%õ¥eËל¯Hël²ÎI<¯ÇýD…DÒ¡í9¡ ðUÃ#úCY!0ªª_7§ÅÆÂ‚/[[öèzÙ ;ß••Ð×[´wÀ,}ÐÔ„5{›äåéÞ<-##óÑí Ñç ‘óÓÅü ¡—; ÖŽrŒ|NàM,õ„.½·[¯f^Ç¢tuÍ‚®«“i#>Ö þìM—œå,±Ë&þ4Yfþåþ·o"Øðh°ƒ0ùÓ­àlæ®TÙ¥Ã)01)nÖûÐlPÚªS IƒR –™” u&5îÖaɬ¨Ý¾E@t,yX*Dࡠض·“¡ aeÖ ´Iƒ{ItNÿ½d2­Åy Ë诿5,Ûb%¿Yåm£3Si‰_Ês1û©Ôí ‡I[ª¢ºÛiÞ%‹NCǸ<5ÍG^½MV8y!±ÁÓi´jš$bzzúÞÄÓ§O±y=¹ðžµïáûe`ØkÂö›™³á‡Gq`f³[G`±žÇ;´ü×zÎ&Ïm'K4)KDæ%gÍíç£]Ó$ ÓÓ(j›XOÂÂq%÷Œ9òƒ¡ÄÁ©þÅ'”†Á‘¨êlÁ¤]‡.F—i8ãOC&ÞZÖ~ZÆŸº .jð¿ >)QyãCû“ªÇ#uφ͆¶R¦Ç3«øAÏÔ­Xøõë ¿’ôæ·Døy••-Ô‚¾¿h$Í›; šXµÞ¿ï‹Éæ×Ðx³¼üÄbB‚€-"ž¤¢”nÅ¡À€€Ïbjmƒ@2ŽŽ}ˆ|êõЀ¹¶V™)%ÊvÝV¨˜€KmÉÐÈ=„ 5Œ¥¥xÐxƒ„F"aâ /ùäUÇŠ@ÀÜ~ûÖ3›G-Œ{ ÿ½©ß£t9Òׯñdò ~þ¤+¯EÌ’÷‰Ãyª2^vœÚ6äúV0ìË{±o(øŠL%©|p¾­°_Ó×^y¹½ bø¹æ(ò&ñhP/lqwŠlrOoÒâõäÞk6¼Ù¦Ìj\ôj–Z „U[R©¤[2KN»LÌîî2z«YÜP‘vUå<Œì9jK"¡ÀŸ-źÀÎOíºøòƒ< Wfìž·cF}ªª¢ò©¨ñÇ )¬4ê×ì£uŸ`Bפ¦œ[}r’”“æFºd.ãofMZ¾ÒÅx4ÒnPtõ¤ÈˆøÄ[¸W}ƒˆ ç‹nËÎÔÄîŒ ”¼ ׌è "õK&éûI€aüì / SÇ>×Ùâý¬ÄóÎÕb¶ű²$b²Dß{ŽŠ¿•ଠ9eçz“yÛ“ ¾?™7¤jÁW½²\Kã“=×¶“ÏF…_ï?K='Ò²­¨ê¹óñ’8A·âY #3 µ%5v>ÿeijËã²)§K9ŠÈw|oPùÞ,·FÓ`a݈0·ÕÀ‹m[ƒ –ñ„ž>¬«f6ºú»Qä¹»l¾¹©Š"?üˆN„’¹Yþç,¬Üõ㉱—ñ¾i«¶¢úÏŃüà…ÖV߸=I€Á„Ã,'7JDØOk‘Ý6UæÀæVI°Ñÿá¡?©@øý{üܼ³ÖKÐW[[%"Ò!jjT÷—]I"âï…„ðDÑõR9ê2‡¤ýÉîòJËýYa=>dMSµÆýS C,J»ŽN¤,ˆ3%T:e_u˾aÞD·››„þ(gªTÅGF½ž¦éaíÖ‘b©`+âÝÞ^ÍΖiÑ M•Nv}COcîÑx{®ŽgÁ‚"'("iùQcþ˜® ¿Ûmi¹ã9[böÈå ¼M‘€„Ä E%~Žr‘ó›·ô ÈL*H.]\C1á`H%å·Žø·”6Cžì£ÿA‰2æ‰S3;ßÉJssÜY?û‰ÔÊÊGcc0õ?·<7ÉGGmøìýW†¥D3ô ¹Ç®ÔÞnB´Ñ~'!¡@ôö=P ‹Š÷oÓ ª/†ÍL˜¶{ÔBz:Zuè€8€K¦º¿¨ÿLqVû—I¬.ŠJÛ²rrkçª>7 Ëräæxµ øû$WŽ÷è*µ¾‡z¦ÄdÿkR‘ýQÉMø‘‘îWkúsËåNZ/;7NÒ„‚ZóUËϯõDëáø³¿ß?µys(­ÄýÊvéªßD@6«ò{sjãØNAþÄ~`ÿ]ð„ª%b–þr2ïíǺƒFÜ2ãN@žØ»ëöÛNø´ ÓbC®Uºà³*ap @è&þœ8\ÙÇøpiÆ.éÿv¬ÎÉ¿.*:WKì ‚àkšwZjU•ÆÜk¾œXíˆÊS£ð¡•¼Z¨ñ‚˪‘b6³ZÎðË Û¯RÆÇ8­ö^ÞÉãLÍOœ ;Mk•†MFE$ƒ`ëh³/Wä5ûGWóÌŽÛX££'`1h®ô‡Ò„ë_¬ä^~a`XÆñÞŸ³àÀãPX§—|Ò¶e¯;šýI¥þRêt+Ü^õæd¢Éª]YûnûäÁjÀ2à.î×Û[úê‹yÞ› Ϻ¹¯”E½« NToPé «_#Ú„Æ ú5°ÆÅžHyd…¶éö­˜x 0àÊå¿#ID޳.ÜÂxÝÌÐ|DÀö`àÕ>[ÚªÝñÑ¢(Çncûè°í¡5U §í{AS&›¬ó1ßšn×¶?V X9-·!#ëw|kÜ¡¶á¸·ÏU;ÝD Ù4aÏW"íOZ{<44$6ë¬dUceÕt‡Ì‡k¨::Ž#+¯¸FAyGVÝ\Ð0‹–¥ún”¯ˆÕ*HW jÓÓÛ_Gö<Á€3•9 •qÊqåź\}œ‚‚ÛW®Æ(A²ŸÉäÝòZánCøÉ¡ƒÇ²õcs¨†ÓInô\“„‹a®Oµãgkâo• ‚±˜eÃwšý`X?b•Ê6úŠ?ƒ²Æh³²Æ®ÕÔÄŸ^3ú¹i°Ÿ©O(Ò uJ½8ßEô‡˜‡å°Ôá»,%s¿–ņáH‘öw$áïHШ0ÞèáPB–$Oi×…÷©üµ`ª^¹9B¬£+Æýy8¼Š­®8N޹ïÂÕ;íG¤bjhžùسxbÄá~×ÐÔô!ê«Yˆ÷ |ƒ*»òb}6ò9>¹Úš?½ü ¨§WN—ÀþP–¡£Ç6¸%!ù8.š?>KZۧņü0UIøù£>`ƒCòQùã\ßj8ç<Ô‘üáår°i°`ÑîëëÕÓ„w0ž6”¨ì^žMœQQu­`€oËOáñD‡>Ã^lyfÝN2ûí§HÍÂL¸XGõ;ùa‘¾™RЮŸ.Qï˜JÃu££ïÄ®#©ãþ-lž²Wð·oj__SÁôñ'¨¥Oi‰{FP ™TúzíÊ…åxpÿòéSá£.Þóö6ä…oêÖ ¯uf`>–—«XÌq<‹g%l•—ÞûضdvSFEg ’ü±2€4òä/fí˜7¡×"‹tXfÔì µ<-XHÁæSz¯QF­,;¦C·2" _ât@…2ÎÙ†D(ïËNa#'º“Пt±Mö)wl°°oýGC =BÿÑí d· -§Êκ:¸_- Rä2IÕbðH¸ÔÄ!!.œ±^läæž’ÑÚÇ÷#Ò j;$¾mž‘9”L^Fþòõkú€´Ï‹aÉѱ—Å 1tKºøË?$&âœÒÄ…Æ_‹€Ñeÿ°,]d­…î5WRE—¡A™Îlõ¥«yEïßöÔß^Wj¾é…¡dn—³Ò÷¯_eáà´rIÒ^ðÇ‹eP ú¾†ùýЊZA͇çv‰Â‘]ÀBöñË™9ø;ô&$¬v.Ô@µd˜Å‰Æ PYÍ v¤ö.Ù,Ý^¹*(Œ®ìNq€/©õõJØïZŸÈè*P`SScBT< £ J‹ˆkÝ ¦6ÎDM-ÿÅrÚko¢šœ¼þ­Ö<€†ª…þ•Ë#¸%íGOjËCÁf"ƒžÐÿ:Wçu^[/ÒÞ¼¦GïîÌ’äf• Ý&ëf7À=±ØpÑhþ L䉟n‰ý8£]|•.“Z‰a²óÙ­¬²±E½ê£Ö+ÚpQ:ýÎbÇŠm± „“õ¹ÏÉ ðYáü]!Ê‹Ÿž±¤h7¡÷&Ý=Ø€ó>ÉצGð&—÷Óiÿ‚·ºfÙFœ¥ž_‰ƒ…õuÆJÝ·Å»ŒÎB…‚RßÃi­7WÇBf[/w´­›ëÚ{h½`óÆù§™nF´p_Üv›‡Šf1¦VW£¾}«HFžÓ>À–Ÿ¢¹ÄrFjÖ-«·Wðt/ï(ûÛLš0—ëéx±EY’p&%2«;ì:å‡5Êûã&,L¥Å¼¢S6/­”ñ5}wŒUñ.¯³‡*4Û§MgžÃ©òeÒ‡·þY綤—kk­·’.ó‡É+³”ží‚¯XXÓÓ'=T›†µ Âž}à‹Õeé-ò¦•q ÑQþïg‡![j Fõ»XøKÌ£¡{¯åìì–)MxMâ¾~›,RŽ UäÞ—Ž×D¯VìKmØðŠUð´Ú0ÚÞåD0ç £å·/×Dék[b± 'š S2G¥0Ъ79<ŽÁ­¬ªUCï^/±~ITTƒŽ”‡ÕÔ”›ÿèhòdyÈF®! InŠœÃž.O¢¥Cvö¢@œ¿NÙýÄÙ9 ¿BÃPü ¸—‹´¬kx‡GVB£0½«C³-X]O_A5ß] ¿—“³8áøý yPk+:fÒ{]ݧžWkTT˜œ¯‰×°é^aLhNà"ó°=†~fôŠSÚOWFÙøg=཈¨, ¯£ê«õG{óþh¤ýK+!!9­•n‰Â¯Qˆ_óû!âf.ùá^WšÞ98ÕŸô?ª?¯ ÃWe—Óx¢?ž ð¶Ü‰õö|¢ ©Ã¼ÈÃ÷Ú5œ.9<*Ba9L¸Rgí—4½ùxP ƒ¡H³_oÿÏ/mç{'Å.'DTÚпg«S`¬tâÚF‡x?/±˜b¡Rmýáõ€Ž€”*p£÷3tÞ2·y3,Ì$#‰4Áç Ü‹‡Égñ}äO8V–#xò†r@–q±Á{?3v‘¨šI¼¼=A»÷dAts…÷‘K„Ú_áv10Y¶ÁVi;Fž¬üw|òCéÁRxAÇÞžÖrì;Y ¬¾ü™¢ð X¢HÛ1ú—065PYáOÛè9i劕ØÔh„v¿áñ8aææá‰£È}êgf^CÔG«µÊÏ<«mfVJÂ[,iÚ^ kw.Vk==&@¡¡ÍO¯ˆúkBªp˶7nWr)¸)(¶uXìø”A«GG±!z&?_áå0.NÚssCƒvß[ºÃ»ëŒK¼Üš\1ÿÖÖ26÷K&$Bš¶¯h€‰^E~ ‹ýÒâÍ¡)¼˜OÌ<Ì44¨¢¢CÙ…,P‹Á¸mt1¼F½É^ð¥•ÉÚ“w»“GhbbCyÊa·‡Ø$ê7Îd_£¤9¼©¸G00h¿jÚ6ƒ†<í~ØraS£B;1'ž.‡bÔ‹=¿~g‚œ!çwubÝa7°gª„ݤº2[ãÊu6*U{ŒøAÒç ÿ.—øxŒÝ±²è½s(Í˜Ë »dF³z§w9JFçh™S‡aêp%ĸØË ²ïõàke0?ݶRh6°äinŠëé½.¶Y‘Hä@¬î{±ð€äXïqc6]O:p(í™îé&_ñL"›s1ºÛ9^›qòÝ『O”E]‹-ª@ѼWŒD24d¾\@ƒ¸ýI‹ÙžH±¯½½ON·#?50"yEI «ª û%h/aizæ3²{¥²«’2®Œb†€CÅ#`)ÀHÙœ[pC6ð…çÀRÒ}ö… 4*ê°ï­ŠæR¢²ÄìªÔO¸kpa<® ð±wAh»œ‹n8baªW2çÑ]HYžÐ€ÉË=í_3gs¶NV½Zt²°0ðׯ…<~=h&é|ÜôÅ@˜„¶»~ëu¾ÏEUx=Ox‰ëçñr\UÆûgñ›P¨°ÕBi{{ïYÆÇ Ô¢“ ª*öFföÆs-˜/\“Ç KÔ0dqqõ%âM^™=~CDE„pCÇØÛÊÀH]öpϖІÓîóiéÄ•€óåñ{õöƒƒ¿·)ÀøœÔ÷Ö'U^^*0hŠŽƒãë,ng—%6®¾äËËØöÉÉ7XÓx„Úl¡/c¨®6€axd´k¥‚ý««\º¯¡`nÿIV°Ï&ûÉ‘ˆè×snX ^Q±oš¨{R>¡EFv½O´I Ž Ç&`Ñ··G"‰cgMxù²[ÀÕõõ“ςϟHˆ”¥¼B{ühäG·{¬QfFGÑfX•wÜ.ÙRK‹ìé)vµK69ú1&ijúÊEkö'Ìè¸Ó3,ñq׺,3(((H¾ü_¾£’ßï-Œ§¦ ~;Û14žËTT£èê"¬jÙ€®´ ï$QH>s¶ ènpã”Qžô~Vײѥw²þšëzq²ÜÃÕM2;÷Ú£Ù²µ­ÍfΡÃy;G˜&¥‡yxZ¼æZV÷­÷BÇ6šŠ8Íuwçâ)g4£t÷Fß®¸wžÀ™C^÷/ñVÓ6ý+î>Q~N /¼®zÝ.!>Ö‰£t©§Ó°—¥¹pùðA6;_áG©ìGØ4¯{d…ÉŠ¼§Ò¼ È%%²d”ái¹ß®ê™ÍÓ7ö$È$ÚÓBæ?Þ4=öº?áÉW%¾Ó¦eøîOYHÖŒ¡Œ¾ø•ÔÌæP‡uÞíàùýy•À¡sýd½ sãYAPõò7~A¡ãÇe¼7N0³oÞv< ‹|½º*ó<,ÔF7N|‹åM¦BRã’Ù/vÆ_,‡ÝOÞÈäu ޶3¹KIõÃðĆõz|ÒùÉÈÈ{c•û)*4r_C¸Ï*¦¯òc_po§z³ÐÏ%]F©„Á„ñ3HÈtÔ=vñKÄôcªq—4³3Wøüñœ3¥ú¦óʽø²”/H.Kø$Ïò¼ÊŒ´“ÃàŸ•¤yÝ©3ÝA+È™Š‰Àhmø±„à·on¼3)Kÿö­\¾f¼‡Žê‚ë–gÍ£¦+Ifšš7Ö6Õ²Ú ¾µµF»S#~‡‡t Škú;ã Sr\Gǹy÷_ÂIýA.ðºw^5r£|=‡œÔªfÍ›ƒîàhNÛÞþI\ܽù.t²ÛþÈSuö;_ÿ¥Xc«6ÖÆ«¡ñ±9Ëfoä{ KK5p#A!<×K/ÆuŠSJJ)nw´IS&ÔCC_¼Ò(÷¼ó¸ðþ6&Á~± 9$­°VÛ}(`u•MA9zy\VHw©k ÎÅÑakhÂxÕóa2”wßà ,Bìƒ 6>ë©+<LO}Ø>Œ7†Ù™=‡]s¦ßææó/¢?û¥8ר.d¬IߌªP9î«\) ¦ØñZ1H>a€.ÛXݽûôpuÉOˆwUÎ÷ý**þv‡$+wq²æìÉ'ø½.Þ{úJë‚]ö-\§ƒiLšŸ™ Œð ŒøÓ†4Šõí!‘¤ËE€ Yd­éÈר(Aâ­VÐøJ;>þ+AôóØt/¬¹ÐðPŒÖ½s=aúú,1eÄÞSë,ÝLfRÍf‰IÌ—·1±2Fo~üx]½Þµâ;²ÕrZކ†6òHŸð ?!££OÒÓÛ?¤ù £ñô×?òUDÒ0ޝ¿ò.àEi}qZ/' ’LòƒýxÐ;½æ;õ6$É„ŒŒ,H|º™LKWô;–ßìßûªù¬—©eU§Œ ²ùùu¦ öÕóvV°9/1~JR00,¡5yùR”ˆp˜tÆ•¡›Áé\>ñ4Æe q$¬i*š(š¯]ÔEþë랣cÌúýúÀ¾OóÇÅÙ‚ÑLªŒ<¤õbÿ¸p»~ð%$¤žv6¸‡–öR̼d&±z-jÃf7Ƶeh…kÖÃé­çݎ׃ØC Ûìdñ CÌY"|? f² i4O+jæ´êOå¸Ñá±XkyôkÛØ #"öbŸC?«Õ©â(×T`qù%Ü«°ô„®Èd/µ=¶y‹çfæ¸ žøUU‘ïöŽ‚¬ó9Ó3zÖ>I¯·nJLÊÌ-”|zöHš^ß¡H1ú±£oÏ©Kui‚Pïu=+ÏÂï8]~˜2®Ì…xrÅIì“@ÝÃ8rÿ²:Ì΂a±æóˆåjà·o‹ý{±$n'™SIwl3öÒ-Òü?åVl]lÖ"}ù?âsî#Ûþ­FKK[ ]³°n ‚%ÀO\í|^öH2¼û Ù‹…;À¡ xþíí&oÞ´¿âà@]Zú8³½Ø6‚Hž«:u7"§ÔŒŒ·r)ßB1šWŽô >ü|ÆìïO Úcoá1&lj(rjhHy¹3M ù :ݾÓÓ'_E_Úú¾|[^Â]P á<˜õimíµ»v•ʽ»#Ö(¶³ u‘Í9¥Ã·ŠYêí]¥ßÓ|VsÓ³»;ŠÆsM±—ÄOä%Õ³aq(ÿZ4õš?ªfËTù]©ÛƒMnHP°T?'Á¡õ`òMýç‡tTRª(㤩ÒäYoègž~ùù£:´þoŸC ÿ”ýÿEÙ_@UÙuaÃ(‚Ò)-% HIJ—4ÒÝ ÒÝ ÒH‹tƒtK—H#ÝÝÝ!ÝgmŸÇ÷}ÿóŸïã0t(pï½ïµæœW¬5×ÞjfÅ“¦¥áƒ-(ßQ’²³c@¾?©• §]]ÍÂÀlTÄÂl;qi²©Ÿ/ŸI)WÏÓ«˜†¡« °=ÀÛÙA`Ö+|Zza9ŽŽ˜X»¶ê»Ä)¯ÆMg`3 Z93Îvi}’D0ùÍîJ'!un]ØohðªÎ’"ý½~Û»J>^>X55S¤@–œÑq×ìj•Ï¿>ÀÒ…õgmlD9¾ö8H&`íðC²ÿš^,ÙàòPy|’5«Y )äÕ³‰‰œéšèúú6]z4¨ã»Ótà=yß++#½Õd66|…V»àDEìy˜Qb™©Ew/·¾¥oÖ²¹ùd|Š9<õà :p¢è5DÖЇüþò“hÊ9k’.k¶Ÿ?áéšß¡-Ý.nÔí’•R=}WÝrY´?}±¨M>ÅIBDô$‘Ös0Á ‘IÅbxÛbŽçÓ Ê3{Á´ý9;WΫ»é—^*þQ§¿öÎ$¡ôÒæ<ÓÚaýôa'J©Òb£ÐxTZ¹ù¢ÙÇ:H†,¡%$$|Ä:ònQz8)dÕ®¹æí‡6\®VÌýšÿó>IþÅ7-4d,ëdª"Ûœ8Bó"rŒéš}¾4Z22‚‚ t…³²\–OÚ0pp`óÆÂwLqAB¨–(à ¢½©¯®ÞÖß³"D—ð‹u‘Ñú K,‚uàͶ˜@jQ¥ekàÛÇK©\«§oZLC]Ð\øÈÉCè2Ò²ë×|îçÞÁÁŠ@w ¤*Ùç°t¥~Ø|/*ªkR™× Uæìebï†?:†éÛ¼>&oº±ë0K^´¬ÖtRR¬–êÕß¼‡xo@ø`î¶¼½P@,¬šNL¨^¶sEÇh­²ýÜÙjºfÈóx—ç²Ï˜ËLK‹Éç… ÑŒW‹—NËÙÄM7—²Êq˜ã,t »"ˆÖ}S--_»èQR'¡8i;È~Aôvoæ}÷.ÿx5®ÜûñÃúú·µ4w:A)©ëgs6ë§× Üü:éžžäÛGl™µSÁ‹Ú˜ï’­b¾¾ nâ&ÅBžüþíßÓ‡IFCcÙÉ&+-Óh4Ë“8@"²ö40h€¸¦¿ÉeÚ&.Ï/,Ì0X¨Ÿ1Pè‹oXØ+CÃW‚ÔRüFFLDÖèϳîøf¢ê:™:S³¯Zxj˜©©¡©¨l5Ù¹©¨œ˜¢)Iìž„£?×Dã9có¸Pc{ñâ³¢¢*$õ?õá›âï½ß)–ÀÞO©ÇZ\0¦ÆÀÙÆu‰ÆßÙ)ÌOi¨Nö3˜Y» —.—5FyK27Äç'êOMBi™÷""L duÃ_ß3̽'Å¢ «¯(óêÜX ÛàÓ¿íKªÀ1ëÿ¼qhþê Ö«WBp'\H(öKwKÖ¬+í“$o“]>°n> íÛs‚dÁÊrž-ˆÙġs}­oõÎM8š ƒoZ‚—dÚù¹V~‘yW%<š ’oÕÛö¸·LÇýÌ·'WkÇ=äu·‡ÔP>3Ý(lwøZZíuÀלÜ.Y£ü¦N4êýþ]”תÛÚK!üÈóˆ ªÿhôþ²%P†'DE§™ ™µñ·8nüû§ö ÷‘ጶ7é)þÊ\WW&_ãze•:ÃôèÎH\¶q®}Bßdôçö‡ æ˜BYHˆšÄ&ï ¶X2ˆüð’»¹‡oï0¶ê–C鲪ýÚØÑì‰AqÙÜDŒ?S½ÕÕ}ó|ÛÁè0A8¯ò§IÕûlüîãr|å½w—×''#Qb ²Æ`²™˜ÓE‰}¡ ã >uiÂ#ú8Ë;n²ún¿*&c³>)$dÇgnÐÊgCÒ0M#äKÝ–FÂeÁFL”¬óÙöKà'Ѐu;¸šš„uçøÏ{šª%Rö|è)”iÔePÍTŽ´Ó¨ÏÌÐ#Ó7ÈŽùÙÓìØhÁ®õo Þ…‰Ðäæuû ù“¿}m^e ¨œ¯]÷ š_>¡ô¬2& ï%nR³®›ÁÈmñ©U÷“6_ ?3 1 HZtø„)‹Jì¹Üĸ¸ºÕä¶Á¼±Z³¤:(q€Öà×H°,3 o‡.rF³s„à ºÇML岋Ìñ¬jq?|°Umd¥Y&û€pñeèóÔž ½=ßînR…ýã´ªÅôKQ€…Eñ 7;y—+Î-·è‘¼n0‡ ELË-áá3ǬK·Rcj™#ñžGõkýîÈ‘juvù>g4ÝN±Ñ»ñ»<•¯,\‰ +-œÉÒ®Ùj5 Òüšçí''rºKµÞæ—X¶ ã}g43ë•UPx’ÉÀ8Ýw+?W{Ôúx7¤Í}1^w:(Õª=¨²yârrÜn½rä͸•ÞB4¥ÝH1-ÈÙúöÅ E‹ýn\3]»Q@Ü(±±â_ã·2 ÅñÇ3JÇvD,-1î¶<ñˆY׺Ø–áøê8·? à!ãä+ÂÚ åŒ æŒ˜˜äDÃÀX‰“Jðç<=í|ùfýìŽmóšD¡â“L¸²Óíþ&磑«j±ÂGã<~²Ìn åçéCAÑÑÂÂúk<˜†HÕ2LJ, ’xyÒf~æ=Rpf2°ÿ0ÿ f³ž4÷<ý»P:DåpOZáøÞ«©I—Çÿw,6Ô7åU• ·öaVŠ3j‰!g*>øãÖ`>bœ3ÿK1!0_bÖ¢¾b…öˆ-JŠùf‘fH¤È 7ê•‚â9€ôÐDØŠÓºI‡ oöžAó¶µSe|è7f’²á—,™ ÃI3_{¨Ê$iÀé𔜬-:--8 ™",11:“!ºqHOCפi)`‹:ašáÁcnÙXµYïÆÎ™=§¬Ÿ£7'3ÙýöX„4Ð)ˆè¯_ËýjøïRXßõÿ›ô; »?‰$Y)È{é&iApž·5-·_¼òà½[Å=Z gC]™1¶n?ŸŠêþAâóÜAg¦dyåíÁ ·;×:Ý7cÓjP¼|F#S›ç7Ç+AÝ'Ý|^Ç1K áù®9ªVŠ|ß6çа×à†ƒK¤”&ræmÛê “IŸZ­7‹ î NÚIÌàØÊw\  |šÉºÁœÂ=LúÌL%J:¨inD÷çß¿€Ð„…I¾Ï3xC6”r«f”ô}ЗŠé ÛØzbµ«ÑÇ2ff|0ṳ̂ÃB³Ç=dÇnžu³Q¿FBqþ ù @ò8ÜÆ|ôQCí~¼/ü¤ÙP›Û´LBÃÖùi|cŸ@”—_EÇÿå7ÇNH@Ÿ‘ƒ¥Úmÿköåêýd…ÁÕ·=½`ôF‰ýœ©V)ºyöäÃ÷^11k/qÞ „mœ’8F¬­ Œ€ íX;Ø%ã]ÝŸþŸ>É!#‡e´,= ò»žé”,KúÛ Ð- L› t¿ë¿ßõl@÷šöôˆe¥Oq$¥8,w ¼U×`Ñ´89(!2^jj,Jú¡•¶äL&ýiý ƒ£ETàî×–[­Ž¯+¦›êáYX6¦«L'¾7š˜ÔAnkä›åeʆF”„$ý®BQÑ÷[ÐôI€ ±?ƒÇÞÜHšX ((ð½ ¸3ð™ÚóëØRg•ÿ.«L!*.îQï¡ÍAh5>åœYZŠï~QEÊͬ¤t=ÝP¬QƒE?g4Œ¶ ÷i¿—ÅÒ¶%Mâý MÔHîï˜ôÍã>oÒïŒÄ`•éýlzœ£MMƒŠ#ceEüøÑNQ‰1<Õ|R wãabï\oªtÍe5daؤ˦›(ùxX0˜É—, Ògç‰ÃsæBÖe °o¦Œ‘MNú°_ÒËø+ %/P`H|jbxUo_ÏGŒŒ7ÇëüívÞg®áÇp.¿Ù)…á†þ˜¶ZWW—Wlü P}EŽN˜vúúÈ—wÊFFˆµÑ3|gõš‘ŒjÈÀ ÇÆ¶ˆ*Å>¼_bƒûŸ:&Á 5××wk}9°ü’¹&²dí¤ëw}yŽjŠB‚˜#9¡ei‚d NÆD\˜Dddd bïÓw¯¿`š‹½¢ê”Ρè1¥¯«<G Õ¤üö«æí‡ªàÈHÔUçêï©ÔÅ39¢:éÑ·jßÉåî»Óo[¤Ñ¦“O}ÿ!îÌ>/&ÆÏÏ‹;?_'÷iøÎûèüfx~>²;ïŠ ü°år »»ò¯^Ñ.Ý"{¼)kY‹UA]õ~¼Ä±Xh`R§Neôpé}¹ZÑmÕ‘êl…xa—ÚÚ*¬ÖðôtP`  Òo¹]k£*™MÜpØØ”T¿2Ìmê¹]nD@ÀÅÄ ÎÛvSÜ-é9Í­ÜÜlÑ3|hdö°ÙÀñµG0€ºLô~.aYêÄ©úzèÙe§4I)ŽÌ‰$hµööþ[õ×Åé¼|“ô),ýúCö¼ÕŸ0¿ €TÜ>ó±W¹¸ëÖÕ4°¬™¹K}Ë¡rÐP®ÚJ»ÅÁj<™1æ±û®Eà—¶óråÖFFÓ0‚~G~ l`À õÞůcõ›Ï›/8щ‰QóÆPB;QÃR›µ­W^H#eôâ]"’Z¿5î´¤tÒæ#´€XT½fGÉk£ís£ÃÕzmëÖžžW—×ÑÑÜðOC º"º5Œ;^LþåóפÌÌ@P¡#^+V?eOµ7P×eTULlvnòSu,€N™:– ËP¶}â™>ƒ*tW6ëE»~9Ó— ¶¶~Ÿ“í"å/Aa•xâF§êŒšAAYêÎü*àzŸù·ub¥9½ö¸š([ìŽ J_y|8Ò¨;éBiÕÍr»Ùñ¼Z8âí°öÖ?òª¥žîS›œÖ5ôC„CMñŸàD‰ŽüŒøŒš&¶îw¯€¡‘vBè.Èš!¾Gª4÷CÌŽnÑ5c¾ÛV?ê=„ÛŒ’¿ÌtË;6ŠçtŸU!ýl3˜g"óŠR!q+ž4Ýv°€!a¶J´\6ˆ4¡¸ê#vîï•LC˜î ŒÍ%ãä$ëY T`ê¶Ã A$¹"QÆwï`ƒüf„ˆð%ÏœõK¾ìévrÚíŸ3%µï)P-«»Zí>N=Ò K¿ß7oÕFýOhá߃àÒÝ9?¦[ ½åbŠ@1¼ÌËû‚[›÷ÊКAwµK°"{×L¼ï†¿ƒ*éz_¢$æi×ãQ¤`6c»I•]«õŃóð[œ7¤ää ùÞ6K„¶¯týü K}â‚èzªïÎâ¾=I<')qx­#À¸ZzmýqsŽ0JŒ)4x=;ûMÝJ †÷¾c`W3ù¾‚®Ñ¹6«¦ãà@~~)]g%vÏ6¬»ëVøÐV;½÷5±¶÷=÷í¾eÝÃÍ]z*Ê4W#>bo\¯û=ëåEwz´ ;ßî5aÑ 8‚v¯+ à ¿¿STf2˜.*ü*&ÎÙ’\#"ú¦Âó–øî¼LG÷`––ûáJJµñ¢­Æ—Î82õƒ::…ÈR:N.GMóW·ìÅŠŸëlòä©D”•©‰T´Þã„òd¸yûß‚AORÚϤG{gs»k¿}~ðMEÑ&©O·Ð`7´6J8¬—>™±@šÅ43 ¢0çºÝæÇ­˜á3@öÝÆìÛñU+ÿý ‰gÀ״݉ŽÇ=š~®ÎÓðm³&í ÂÐPÿ±:&ä°÷%Ä(x ý@´QHøi¦E²ìÙ¨Ô$Ë‘ö/VÌ{Ù­xÀ2H€¹åm›DdO‡óf$¿îu¿~Ev™õÓû{Š?úÆû) Lß6åX\ïZ€ µÔ'ɸˆÂMÒ[u ‰¼¸aýJŽá‘L“¹ýCÖŸ[§ü¯Ví? €Zèí]§±zZÖ©ß½ØLY×hõ[X>5¨pµÇ.¦Ât¬0 ©çEký–U·ã6œûþj0ê«ë¡¥Îv4P’ûíY]ú7ëßFæ¹}nÜr+*›µüÊËе߮¤bc>½p±YõGm¹êl„Ø)6ËŸeÞ÷Gb22ìô:\_UiJëÇZðݹ…ªL”*ÁyЪªgh(£ûP˜çÞ™©{çÐà!Y?+›¼Î`sæ§ñópM Ã6íJ”´(˜gŠ Ä~ÎçAõKíï7ìÙðõ9­N!|²nÇ©C.‘ÆòT³Y] Û>´gÅF0Mý Z90°Ëˆ×¨ëØfùêÌ­XNþÅLE_@ioÿâ÷ÒyÉÉåÌ—ÜÖ™ˆöÌîiñÉ4ßn=Ÿ;ÈpW”5_p ’<`?¾}ýߢƒ}Æ¡7þðð“±Ú^tíš-èa™ªÍMD ‚€èèŸ7ÆJÔ<Ȱ4>3¡\öô=Ø8F£&ÊxEŽˆ/Øß%1š¼[›ß¶OD7"ÉÆ&FÃD„¸é¤zö”Ïà^…©¥„¾Hf—Ä=‰ìF—:ü£ÜúžÞÞÞH›u¯œßÔåâ8 úú´Z fäæ-3áÑšXve×Ö f–Hùí˜â>ž%§š€>ß?„ ç^Ï¿ñ4£Q-W[ÿ.Ü_F®àþd™’ [r?"jD»G¹\tçðºîóFº°SFökýÜÕY;.÷ö~”àêZ¶œ:µ 6óçæ:U7é:§FÌ!ÞFï›1^,\‰rÏ[VÊXš[¯cÍzMb0”:{9ÖíùFžh¨`!ûŒl…Z¯Vá\Ïi"»×FLR9rÓyJEè˜?ɵ£øp¤Å‹Ý ¦Q=ѓɌŠ<>6Ë¥ðOYÿʬ» }:ëÿð€Áòé5:pïìD…vW­÷oâ&ebúâwÿ6 û§Yª¤D¨¬BV6¦ûþK'¢üƒ²«ÞÑ’9£ÙÕJÌö­aøƒ5Wµ©[¡_@õ¦¡!pdÁò½L$HéŸåwàsqüê3ÐÆB|ÂÄ#heAIj¨‡JäÖKà|¸TÊÎÎŽÚ9èIÎööAª°ßyìçü‚åÏñ¯˜?-Ö ¶að]]É::KŠmç$¢[uð"ÎØ‘»öü°Yéë³/¦Û—¹¡á ÒrR]-±¾€u¤¤ðĮ́_bQ" m[;Y âóÀ$ñöÅÕ®ƒIf+C½ø÷-•+råvÉ›¨vÑÑë²1yûŠNtdøg˜^Y™J«~…àK±aܬïò!}ôô>ŠIvÊ:••öxh|w8€é®F"K;ï/uB‚á9½8Hæ­è«fO|DjJ§vut¼ƒÚœöµ´ËöÙ]ñÖÌWŽ„M!h§[ËܸŸ+óhõëÄIòÒðcbšÓõ3îDc™È'Ô±OÖÖ€‚Ô×ï—¬S¡¢˜/Pd"Ü9‰O¡—á­‡£ÿ¡ÙÕ¥3«ÿ,¥eÁZ׌ÞËÍ ™¹$©}{w4»È<@‹ˆ¨Uk[ŸÞicx==ÃŃé cMÍñ~: 6‘T¢é5KÏ<÷Å%ëUºB˜O™Í3#[’& ™è\Z”œJîö*S ÅÊ›Æ-²H•’qwwaؘf¨¹#3k]Ù$¼óHÙ¶eJŸÑ‡,ó)#r É¦%´åAE8Y [Z’; T¬¬–ÖgË9j€ÝÈ¿qb»×:!Eâ9¨¢sOô"—_."½«–[átºØT mA”èDBÄ‘¸DDêtã3ÓÓp þ,ÕIjlåJE}yþ˜£Ówp±:¡‚¶Šæ}…Τƙ涋ª w¥Qµ>0h`{‡ÑnE:ö3ÇåG6”œœ×ïû‰")cõ±°‚‡¶·>Ð5Õóƒ  =J½ß·Ýد’ÿy- ÌBäóïå—%Ô±iîi§Šc>Êeqà NvÊ@˜ZÌ_Q6_2Ýu{kbþ/Áõ óæ„©õñ~âpÇ0ÇC J6ŸNiöy-ðáÎïßþxø‰Ë/8dœ¿<§rv7[&{U•z˜ef]† Ê^Ž……%­1aw)ëwtjêçiU3Õ?Avà´/ƒbå¥æÎ¬%«“Ûìì;v'ÉðlQ¸‘Ñ,ˆ´„zICƒ½7elp0kQ¬^Ck›ûÙÿ¯Ö±ññ¯c¹J4ßµF@©€’€!ñž âú*•LÙáJñp^†Y·•¦bsþúªå±1v6;.À©ºFÐðøxä6*Ñn` í4x`Þ4 ŒAêRµˆHà»Ñ`÷Ò "ž #¹Óe¾÷ÀMìÔGƒw*T”ôËûõî‰î ¬Ì¬Å÷*—f^à‘QÂùKˆ‘ðf–ÂFˆïƒ ŽˆX©î34íéMBq52Îû4Äw¾DCúêÝô4¤·ÎÆÛšž9ÀDW÷)pÖzzzïõ/ Ÿ’úKF>%&ÇÎø•N•çm·ËJ€ÌÈô•¹ÙÚ?þI^„©ÍÊyµá-˜FˉŒlA¤Ø^(ÀkÇÇ †Æy™/a®¯Aš¾/À"§—Oø49Iêà°]‡¤F=f‡ƒ¸¿¯xè8ªõ!t+ºo£uzú2ì^SôÄ” ÐØSF“eÐKŸ_v$ ¥Å|±o*gaáï Gsü *í‘nq0— µ0p¨zÝî6;9® ®¾ÿþõæÍÉÂÑ0óR5?HOËYBÃÓ TBÎà7#,wdXnm¼ÏŸ_ý»J×›êÌ·|~s<*q~ÕNâ” ætˆû”x!ØÆ—ÅÐi©©œaa’Ð>[v«'.™Su>o0/ Y “‡iÝóʿĬAû¦ÎÌ<Ùb¦¹¶M‰’ݲsÍPŽÈaÊÈëö‰@%˜)¢“ŽüB€§(©{…ôô`‘˜+Ü)XØÊl01Çòó]°œ—´‚H~°þ/S©Á?ãðÓ³ýtá„‚¨iSY;Ùúí;@€úÜ~_è\*fVVDå½wÒi†"95@T+ùZÁxð.5…*¼~-ÿ‚QH þÄÍsxï­¦ýê0:Á(¡Ÿ:böH¯ÖxXxx’iÙ‡OŠIˆeêÈæ6æ•X./•öþYF3QV¢¦¤íç¶ÜÃS{1±#%uÑÞ#Ù~xD©B@¡a!’RSÛÉj§ù}ùBKKvÓÈ £]†60pqƒ©Ýº•åz~„,,ÀÎ @±…0ï~„:>å¼R=uØú:^6øTÓãD˜Þªñà™¦Ýbm—T!aá§îÖßIæ"rއÂb£nCöGVW³ ϧ¤ÔOyÁbþM“Æ”ååÒã‹ñ]9î!”Â" ¿;¢¨ÙŸÌgý–ñ—Kåï ‹?ßj:Î#ÀXlÇD$Ã#ð€lòô¤¨ªAµ%Ÿ$Qi7A¶°¢£ú%ð!äkãRdDîZUìrAÞÅjýo&«ô™é#ÖzÓ0Å"v[ôû;Œ?÷Î? Eò{yÁ^>ÍòF_sÈ”Š&±I®6¯ÜÑÇ$%ý©_aoÉlvNh´4iÒµâÀ$õyd#ê×(‹i7¾y«Æ¨_ æClhDÙ>4éut&ž2n»ªCBÇÆþ”’âìCt ù{«R(Äð}g笱\³nAûìâEýH Þ§Ä—÷~ÉãInNÿ±× ʘç²é³`ÛqÁ¥~;¬ky|U1 ëÅ ×’ë6êã6$gy1]||BBaA˜±I×c]H£¥˜„ÄÏ×ñë™ß¿ 8}îü‘ñËñ6cRÇA|ã/é訧%Þëfúl…`r†E¤q.«ÉF=ùäCLÇù. ë‡ ë‹äV¨è&)ÓÅÐ=„ú³ÇÐT–Ò¿ªÂ/ Ý€Ap;x´ƒêZà€¥°¬ì:ÕÏÕæ‰¿`……Çw ô-Xᨩ‰;ju>§?œ5üoSк"e+ïÌtUU¾íþôË©* ÑÒ‡à>½Ä•…klžüü"”¬ILöª “Ÿ_v¹êþüVZ)? M¬¹?Yf+0HyA¦c†Ýí #sæëÐMøø¿zú0íèÁäŽß¹Ôã€s²$ááž&æcºn³þþ&X8Fv­¡ôƒÙï9Fwú§›±««ÃM¬§È>ð;:RÕXP2L÷iØÆ;¬ßR"äm¹?àýYܲ¹»B·ªßà(ÖI×n˜î‹šÚt®}©CÙ•1}}ýd$ØØˆß¾u¬yó!m<ÄëNpÆ·ÙÐ.‚r–›ø¨¿~o|7ÚgdâÔ8"xšÚ§-];×ëvOxHÅ‚ÁLo²Ú<ZëžÌmŠ/+‹¬ ÕdéÇ´ ­Z:WWc—•VmVQHKõ’_{·prú>¼ñûW¹¨Ó"ˆYÙUPàKJ†^,ý4w šÒÀ"!ž°œ«šòêøÚC¶\$¨€i?×Ú*å#ô¥m!°™(€ ^M{3¢ñÂ[#ÔÄ3‚q¬+ô«'Ÿ”Š„‚ÃsDòd «¥õtuý‘ÊÉGÜÝÃ]š‚ƒáƒ„¾øîï¿£{ù>{8žïÑé07× àRŒ©/A´¶<™°pôư B­óe?ÿÏû0Øár<À 6~9t²™|©w³¯KOõ­ªÖ¼Âr® ºËAµ{þŽe¢}c3@Híî)±;äãln©n¯Tün[tj´g=k""»qÎ'æÍ9˜äŒ"s¼…XIII]ïëk|€²ïùŸœª`)ظ'VÌ>ilmA@ðó#·aOP²µ•ˆAŸGúF (E;WNÃïïÄ^Qa‘&¤ïY‚ù6ßC¯]¡ãå}JIZ‰L"yl§«+ØÎ@¼Éh–ˆ ÝÄŠ ¥dÇlõŒæ2¤ñì¼Z–ôTá/ØŸ±H¾xñ‚ð×ãõ Ú&ÕkšE¹âš=ûãzv_ξ·?ðKåȇÓ¾"¦”^R"hbaø¢!/7åô…]%îŸ&«žc7O«CQ Æœ¹aDD!XÏ/ ÈÅBœFÚ¸Âuè‚ai©Þt>é é`™–@4žy|œ&:8²v± Ì‚Žù÷ý¦‹YcÈš{lBpB‚ `+tLÌß¿ •¨ä´-ÖCƒ3Ö:d;‰ Ê»KJ^”z¦.ô+È“¡°³ž-!‹Ç¥¥òNè¦;%»?ô¤‘÷l@_c¿1¬OHsÊlÖò‹‹#%äãõ'…e``ð ¶)V#ïì G„œéèí³‚4[n”š€ºLf½GUÑÑòï&i¡úßb¸fÂZ7„ 8ÈNéêî”ØÁÁdÅÉ4ú$m8EJYÙ( ôÁĬٙ™É滀ýÉh‘0×´¥ÍÌ8èFå´íóç1èê.ö-/SNâ12³Fâ§vÿH…~±¢°\卸²CÃÈt¬8ß©~‚é2þ¦íg!C²»}1‡6 d߀y@}‹;ÏíQ‡&(h ÉÅÆ¥_îÇ|RŒªØý‰Ãÿ±#XÑ8l¤9+w`Á‰­[î¡þPÂ7lH?WR’qT$Hét‡Aù`âl.Ê^䘫µö14ß^8ê»L‡*+Ö¡TŠ}+ħé;ó`{À{ÌE>êØO\¥†l!¯_w>³¸£¢ŠÖ?7C`i €¸=‰÷¡oæ&ËFÂÚ×N Ùï)Z«hˆ|iœHaÄzq™Én“6 À2+_¥Ø/i$Ú†Ö- ÁéU8ph)¬ÊÏÿÖ‰!‡j=¿t|ŸŸA7ìÈðp8ˆ»›:ˆªx ÈÏæsý=b¨u©œC¼{­­~ÔãSE Q‡§“eñ¶­¿í\ßK¼!5<*tÛaó‹»rù\*TB9`%¬á@Á’$̹oíBÆôåh(á­{ç¶ÙÏï½U¾Šch¢ÉËÎÃÓ|ÖP[ÿ·`R973¹o‹¬ùÛ+$ Ÿ~nuúÿ"•ø¿uxX«}WϳÝ+2°±yZ]–‘á#ú!¿{€Ï¯GŒØÌœ$cØ;xtï-`‘x)¾ ûñ”î?ý[ïÞåÛ,¿Çh2]Lj â£i+üäÕ—¯/ËÒhqB;‰Ü™R9u[ÒDr$¬ÉPl«©&|ãðïÛø¤ÎÓkI¹DÒºü²²U¶„Øoì—Å ±`é(hJ,èõõoCM8ÃPq”ÀkwuyA ÒU8[ø©oƒßÉiVÒàÍØlb 9ü…¼`P°ñ|Ÿ@iß =Z ýO¾À`G/¢YõÚtK &H­ÕÊ¡½JލÄİ^ñ׬–êRÉ_Oé¾¹qkr0ùÜßr g˜ÁBÉjÒvæJɪý ë AîªêùÌZ»`hcóiÉ´zͦ±`Á¿ß˜Aµ.tÃS^eŠ!¬  *¦^óç3–™e#í´(ßfÒ~o!7ð„Ah—­f©ššXÊeq6­}Œp>­§8¡Dî—N€vàМü†";7„Þuƒ—Þöº¥ÑHf^Ðò¦²Üúæ‹´±ˆÔ3<Z;×7T;Õ´®OûJ—ÚÏ[éåú-«v–©b„«£VzÞ½cH~J@p (“4&'ó»ü¯æWoÆ(Zc7%»*™RÉè¶?l±d~̤z¼ÉÙy"@³¶î˜/«² 1äXˆzï‡cX_`|w€ì“LvY B§5—«çÁ°Ú[,6%±^¥ˆr9·C^Î 6Àºò¿–G€«gÇβÆf·ÂÛû Ä¢‚i`µÔO’¦¦‰Eâfæä ‘áåÜýÏOt N=;uûß=•©mã¯ûÐC¦§ñüž€e¦v&WH×K5Ʋ8ºïÙò©ïVT禓;#;»oÌ› úa#™È'ÍÍ"V„ ª)ÿv 4áèOPch±«=ü<;Çò¤U ¨ùm.Öºz¯æ0õ2œöOO\H¤± A[{»¬Rld‰F_ùG Æ{ÂA˜"GÄÚùß„U³¶ã“¼P9_RZ ßIëÎÕëÕrÉi¸ó…Ï"Cê²Sä².xuT»:·ôãêk:Ϥw×ÂT@’þÀ *0n hZ;q·HI?%ýT!sâæj´ çñÒë®<½®€Ä:̘žúËð‘Dðokûs>å‚3@;OT]³å©ôô(žcî&FéÚÕsCº:ü@‚CÍe‚/› ®pœm'v%M̘ѨýúùÍù„·×< Ò5þwçÝ.W€¾Çøe™‹}Óöžot«¥ÉÙT‚‹J©;bUpV³Bí0°±œ€tÜ_\øìýP óö­™Ðq¹m6´Š–’Q]Vj£¿æ{§FLÈ®ÂEÒðÒPU`Ü‘)cß 8(!!Aj©É¸@`({ %÷àoŸñ<%ùóFv#U»a¥¦¶C\@ë@1 Ð5.M6Mb>núª¸ô*VÖ €¥@‚ßû· k%„‹ÑÓeNV oþŸ»*ÓSDA•àq‡‰Ðìî>¬ÿ>Ó¥‚œpek¹¦GVãê^S`zLæ¨ýÈë’Ôë,Ûüø¸]cp›<—h$jÖ4üÎÅÉÜ'‘¸YdðÊCf†jûG[xäÜðH¦ @é´ñìJ…  Ö€Mlkk‹Ìë닌…e˜Q΀€/Kù Qoÿ)ô£T”––ÛÙ9>nŠz«4)PÙ²ð;W¡Q/AeÌ/0·Ò!#‡½|ýšXESÎǼT-¼ž>#n¡²Ü|ÊvÞy õî4_OOäÿ+œä=¬Fí|3Ÿ5ät–žÕÎ…†ÒÉëöÅékzžï>͸ñà­ª1+ww¦á½ÉÇê þiHÝfKÝn¡(9 mL»uÿöbH²Ð­,zš:ˆ ¥¹ÿŒ GšNøÜ•ºzò‘F Cÿ4œ"@Ç4çà4¾žÄ"ßÑ)üÌuÃ?“ÝKs€Å’•å¼Ý¢æßÞ‰Ä)Šºä9~y@áj5ªËjÌùgf2RÆêÍÌÍ…ÐÓ/ǵ£Å᪱tG%'qÙ"BD¢cá\º™ÀA½¤¦†¶su{/«P€•™ñÓƒ7¼ŠÂG„9¢´TÈïúøC+˜©rªØÜ÷XÙ/aŠ”CêN¶±¦5ëC½cC[î‰~YŒ~ÀåèèsÁöÇÊ·±zÀ»- Ñbüߤ‡ïã3V&¦dk/X€GM§PZëZ«ÔëÖ„Á럀@Žl¡×€‘6ì}ô¸Ã]µf§¿ Ð.C;8xÐ:» €$Ýc4ŒmH3x–À'À¾ª)Ä?`ž›!Ã"©k°ÌSN*£¸¹!ï=*=½•Å™:– ry{;Ïç c«¦B2h§£SÝ’³å3 §Þ¼|8®®ëÑÉ}’Sº:¢Â#Gˆ¤[¡c;"žÍˆ$^.„S •3€ç]Ö`UâG` ¦´.ù@ÒþÓþKõß¶Acs×§ÇyÓ˪L!¢Úf-œàø¼¬LX^~Þ·¶b†pºþoÑ㔸|Ÿ÷QÁÖAXþöpî×QqäÝ.ËŽœÜmWýq€þÞÆf[–$Õßþ&úÆbVÞ(…¤„ã<:]nw÷FiçgêFt'Øäá‰JKCßÿ#lT1]žú@ÀóÏú”ÑjÙÐ7¤[ñ}­[é—Ë~hêÇ+AoËgR pÞAŒ@­’ìÍâþÂ\ב>‰ç™àׯ†Ïþ·çÓØ|–#/OëjÙ§é¤ ×Äl7ˆ kÏ=2È301Ëx’64k…Né<`Å’Î#˜ÒÑñúNN­à[t¡?í{y»!¬@¶Ì™CZiÔKðX¯¬èAšÿ,û˜OöüÂxO-õ$RÔ[Å[ pÄ;ŸzÏ(“T»!ó’Œm’Ç#Ô‰¤geI~Ëy¦Ã4÷tD°«‹—÷iÞ /¬ù”Q60Ô¯_«M×É=áåcî{mïÒÌûŽí2T$ÐÓ~›?Qìf74|õ í71H±ª…st|Œ|q‡¼®û¡+60«ál‡(¿ªÑ|ÙèDÔ ƒÖxäU‹øx®óèÅÿø8r`¶eu†Âô¬ÍÇ^rs#©HÔ1îƒÏçˆL‰›;Pæâµ/æó•Ù—Hb ˜V î¤¤ŠÎöÀ à½æØÀ¼Þ4‚ïk³2Íù§•™Ö‡Xh9_Ûú£BöOyÔÉgÕÝxĺ6&#CÆÉ Í6_þr䟧›7{¸d$eM¿þ÷Pͺ&móË­ãr|Hg2äÈ/È!‹ù0 ëfødV*™ëõ"p$„íô,9Âá€AÜHÈ*(~ýzõ§üÜ@^BÚþôR<Á¤«û! #.ju¸÷.@Ðõ&Kø¹ýQK¾<¾Íïu†i¶Û!²q%Ä¿ƒØØØlÖXsŽ#…¥˜Ïç÷ð»ºö¡V[Ò}²mvÂwv–²Ó à77™…ûÝ$½`Æ+OHcãî.±˜éàFÏÆïåEwç йœæý$è.¾ô<û=È%uµ‚¶Ô!ˆfÙ%ãe·uߘY*­P(!¶°Àêí]Ï/ÔÁ5U-™‚Q[Q­ÔþŒ{F¤Ëßß„Kà°) ÀªþÎg‹ÏäÈ~­œÌi Á‹ÚFŠî “_ °sÓ×&~õôòÅŸ¢ûY¨DÆYJºŽ! á¢Õ2ï{B0AÓÇ3§å”EhË:x²XX¸ÂÊpÏ„Ÿó3Ëix°T2aWkRÛã22Wê\([7'åä¾½0‹Ûüá”cT¨O·ü©(£Ø7+k¿¿ÿúž_Ò‡¦ŸiiÈÑöW?÷Ç¥Þ¡qší¦× m«?‚ÌrQáÁñ»ÍãóvÛ·¨„ H||ƒf2Bÿ|¹}pFä(Óêû¹;!ŠAìõ„ˆSu9œÍ—ÁÉâH=~Óíª^£&¥ër‰DÐé†ûR­éfs{¬;üÍ(Ñë×L¯Þ,É ºÉýhRó¸{‹… ïªÆŒ¡‘æ ×™ó»7^±É…èÙ³×P½¿ šd+=`cé´ö9’1•äÇ,’YY-‡³Eßl0í4»Õÿ–ð䉊¶%C2ØÓ¬ÿ‚*Ú}ÇÛô¦+Å?((¼¦Ý|rt숔ýJ#!o-/ݨu²¦¤F0K0­Áf¿ÔÕZ$ÞÝÕ<â3®W£Q–sÒkµÎ«c2¢z«?ÔCV6…D(H©©ñƒÐtÚK4ê·‡[ Já‘e£¾J|•oþ:4©£=­vòˆAAÑeã`¡cº9HÌÃyBeTÚ Æm½ØÏoaAaµD—|^íô}ˆÙ"–ù§›Û¬M5z–Y §#ÛC \–žž^à”¶;t Å3üù^Jxd¢h0â ½vCË ÁC0.;K¿Îíý@÷–+Ø {õeì¬þÍÙF}>I©×,5õÎô$·KróW¸XˆŸT´wü~ÅÀýüUà‰)"ý§¾þYoίյʯ:ßrHuͨ?ù rmÄ¿ØÐ±»ºb· a*T6- ´µ­µ9P‡Õ×g²97ƒ-Õ’è^h¼†‚2ßcÝí$ÖjœmïëCÕjä|O]-¸7IÛÝ‹ˆ(n³!þ"+{ ;6l,¯líâ ˆ‘1°‘Ëxn\¼ôÕýe<W(æ›çÃ5–4È/Ö×—¡Îö¦‡²QÅdZ‚䲕3…‘0ïÎÆhqÚñàë5?Õ.ÎF#©6^°€Ë³¢ÄãèQhT"€Œ z¼Qa³ òKf³GÇ«A¾­0¨p9΀‡$Jc-œ¯ï7—Ý‚R“¼†C=ˆ [«Íwêì^©”å®ÍV#~䂚žUoëî~²¸ˆº=9€ÀË‹jc_¹Ù_î?WKBÆûÃ" úêJCL¬GD@çûw»'P%êÕ>yÆ3û©ÚÚÇgUr^8òs[¡B©\®Óu'ôÅ:ÞÐ ‰ñ¸XÑÇrQ„ò¤må.‡øt:ú l—¹ö&=â¾¼!ûçË/»Y`pzZÒãbæÉÝíÒÕmãêÜʯ7ãêðQñ*·ÃÆ4Ÿ¼ ‰{+Å`9û^2a×r®Æ¬­'$IZY¹ÔNyà{Ö€FphŸ“Ó@¥\]ÃzX°bÑþ~7®y. &f¥œ:µh_ÅñïïAµÎ3¸ùZ _±-_ÌZ |ãe³šo­·g³y¸“Jáq‡adÄú…U^mšÆ£5\Opw¯µ¼·g1ÜW‡ŸµªA)¨:­FÈí‚ßÕ%²½´„”-rÞEºpS‡úA‚†fÕb¬ ™Ë©ÿ}êæ,jȸÊ2(,ÝËC{ÕÊM%düQ­9ÒhXxRçCVBvôpw£önQçÏèëvÏJµ¥TèÚ½6%Ÿ‹‹ÚØîgd|ÿ8}{ß6ú½ºFð5Ïù2?©¾s,³sW·1)++&–„äZÿ Ñœ™û;Î“ÇÆ§P,ÃR.’ÿñ¥ã|o&ª;ÖÈ»Ä%Ú¼ÖJº‰2:)§­í¹Å’l‘ÊcHÿ-<*jÇœ5Z`sóƒv i<ÍñzLzëÔþ’³öÜ 0(¾XDÆpíbC…C/ô†Òì·g'ž á w2¹LÍæV)Fxs*ûÁ6*Ÿ+ãý\!y¹ß×½ŽD™·ÏH_?ÎîÚL¢o²÷cQ_¼P¼øÁpÜ ¯Ë—_Xu^<‰:aqC. i*:Ávj…¡’¹?AƇIŠ(*2I§Šw€›¬ÙÙø˜w`S î§Jã 'œ•ܨtdoo•§ppºWÇiååËîôZ1)Ù"ž¡DÝÈUÖCdÒ‚¯üÞµn¼©0›xŠL0) È׸^F¯;çàÈ¡¶‡{ëÝý°ø€€×ìî°$ôɧ½±ïððñ[»»åÔÆññ¶#âÞ^§}yQZ§’WóGJî]Hȯ÷¶ÈFF¹ÇNï/¥{Ó|»F#PÅÆõFu 89©úò{ÈŒÂÖ6‘’.î ”p§|TÅ9æ*pªj'd"LL‰Ðî)íß?ÂÙÞ^6=¸ñõ§Ý#ÏVµ„2±Zr†\.-…t/ÅÖ´“þ[Dfa¹4ë_û°U[žò>ÞAÏ./8§·Ÿ]æWÂìÏÒªc~‰9ÒýöÒߟ»$ž„rWQ²¬\B’’vÎÆÇ{ÉRRûŒ‚@Uäå¡p:ÓÝ6[j0[ÉpÒ±ÕBÙÚ~ìLÚxÖ:2Rn¿u\šÍÜÅu† ‰Íýl»ã£s´ššÍá<Šðëµý‚àia€¦““–ËGGŸ} ØÎv7utŒqÌ·ëëê4¦kÈœÃÌvµÄrœàQ–—ßÿPÞ.ÿömÅ »¸dN÷öb‡võ¼Ç™ûdIèO\0aŸA2À¹íAÞÏH}šÝÏWŸ¸ºvÖÙ¬ä~/gæäÄŒt|ñW^)C‚†3#—«“C”ZØ$v°;စõ•’žö÷¹£¼vþds#¦zõjqèYä¨<‡Õ|ð$ûE4çß¾¢0"ed$΂ââ’p8´LíSæ¡Ò(]ˆ(RŒâ§lÚØr¼ô2†ªÜf…!Œ`JÔšî=5u'¦ mWåS·÷#—Àÿ”‘ò–ˆhžþÃ]jphc€Zeš€Év'¯=R¹É¯Å‚Û ~~y›Jm% 7~ …åÍ®à_Bšš3òÛ‰u¶k¨†LÏéAxðFV»jgE¯ž­@zCG;Ž>ÔëÜŒ°WTê=úû™b2­Æ¸·¡‡kkÁ¥Z‰ßžnéèøNß•õ?1Ìߟ€ µ={_âäç{ç§Oëø©«'’éòðñ/m—ß¿aꈥÙ¹Ò?ýÞÅeÚ„‹»°  Ë®ÆôlMçÅÁ˜k¦óïë­–Õ½24ƒÑ<®šZ¦(bRÍ¡zíÊd/¢˜OýÈuÞšðÌn¿ÉIF¶zÒMÂØÓS‡f·=3öìþ6þmçbscÌbx¨ƒ ø?áDÙ\ø H8J,,öȠάRð½ÁP¢bIq±æÆè>¨-›S#TcoIûôÒä|õN[;8ø -ÃòBµb•­X˙ǽaõtÈ4v÷š`ÉÃþ©Ž—+ü:ÿjú÷¯þ-§æ¼iÒ§?nñpèƒ@âÒª=G–j@‚¡Óï<Û!UUõ @Jß²`þVYè5L‚댤Rú-»¼Ü⃃Æ\Íñ¹ãƒ{}éw´»æ¦}{¢‚oùùXŒŒ‰€zQÀukL:: ³ÀssŸ‹å|Ô!t<Ø…"!ó :ÿ’®V¤2+œý«gà­O½«„‹;×K†a­zEΖ}VÂÿ«šfq#)ÛÚZ´¼?¡Q#)œÌÚÀg@R0U¨$Zîrâåñû—DÂ;*±¹•(Xˆ3èòEãuÁˆys9åÄn¦‘Œ¬×hÛ‹›¼Rù÷ï?×"ÝÉ(Å>?iÏÉ?§÷å †ÈIB€{ÛÛï4ëåkÞÝ‚è0°²ú66²¸mûóôîAQ¢a¿)]¨Ý9ä x WÅiÄJ[›êçHOSÓþpNhóï¥ÁTK= ¾7zBv@u6JIñxÛ¢—Àjé3ø@rÒê'p¶sª#™„å_»Dœu`üï×8¿}@ 1ÖÊAmíÚrk_³1úæ ²ÁZßÕLÓ5Ý|Àb3O¹Ù„‹¶”g¦ÇÌîo´£ìl ̘̻åÅÉšƒ¥Î$§Þ¢ëèÝíA Ôd_a’¤lÿúµGWoäùá!kïÇOÏTˆÇyªÐløqƒ‰T-Ð}XˆO@Ø{Ya`†K’cÄ·ÌGI:;™ùˆƒÊË+Ù]Ž™ÂÂÇ[ZpEÂwHì»´yb¢¢â)ÙØV´Å½/"x(î+®½×ÙHhÓGHå\ýî¼Z ]*7Ÿ¢ð™{`3.˜¥rƆ†Ï?‡~üW'ÌpÞžï…] TQãgœ¹÷®JÄË£¥¦¤p‹½êÚžŸ¹8z4æhŸªÅôð T ­^ h6̺c²øS"n¿{LÆ}­^‡®¦¤Šh’üávI§Üó?…óœ—Þ‚üßòÌLüú•0Œ¨ñãÝ‘7&:Þ¶¶1A¢ä'¶¥ùÏéÞ?|ž!êoöç9\|ÖaÒÑYí ç‚È1R (»æjûâJJ­¨Þ’ˆ:lÿ¤ñÁ»å˜Jçž”IþcD,®ÅÍ g¶½±Τ\s!¢fc\)í,·#5†óázkGÞâb<¼_YæÍʶ»eÄ‹ Yøžä00ãðh->wwú@M’±³Cµ]ž¤§5{eÐu‡–Ê5§?–[àAŒÑ?2¼×ø§[h­ÉÖ &’Hoöö j•Èmîe(AßRåW\§4^O¢œœßâ©0pNzŸ`M%'>Î ¥·„¤¤|¿€¤ÇcLìcߪta¸fé{õYžŽîG…y@êR˜˜ìœ5AŠfp::o¦¥±«&â•{ý!ד\½æ]kåØÊ®YÎAÔW&¦Ãl–N—Ë…-Gjz²¿R9óA`poª’Ñíìq¸"›£Æ*•¦¨!þú-U´ÞÍY8(†î›ó˜á²tÅTR ž¬oBëë\½‰h}|†2ê‘HŸÎÖ°ø9ædI=á´ý͸ЋÑeGñ{e¢_Ÿñ6壼,uµ_¨„è[QÉJ®Û•¥JÄœž=£™}åMèÕ ç}³b—±£ ðJåÖKÂûóø@BD‰;ñ_Úþí8@'œGjmýT^±B»u³ßûLšžžËböݳÍMÚÕoLliîGz]ayîVÏÌéÑë ,š6*äºi†™ez§þ!ú®ëS6Û;—ùýxú<~2FßÚZr`p¶—t>/6/Œd=[ŠÚT¼ç›Ÿ©d³9ÒöªîLõòJMˆTÌ”þå‹ Ÿ;uK93##b€OAÁS+«É^lí^>’íñ¿Ö–ë¾_¿Ú‹Ê¼"AÝLÿð„ÐTEôJ÷æ ¨˜ötoºes† ÿù9Ž]W÷R[¾\Ñò®Yø@r^~Õ¾8P:e?nxAJ€Ÿàõ±ýÆ%/o‰“NGº½Ú?8|@$<épƒ#DK}H;Û:7÷D¾àíþÁœ)—Å(3bÀ{}}Ñt†Ôyp KÒ3Dn;-­f{qc¡Q ^Þ“¹8f$¹{*,h@€_+-E„_“¿~ ÷<„ %,Ä5ºÚ–ÈÈ×xQ ƒ»S£!0"â€ÑÃE&Œˆ À2HÔÌæÚîEW„V8¸©rÓ1Å*«€G3 çï]ß„r ŒŸÄ ßÁö'3 ºbfQó>,ÔÇ)ä=Ó yT’.ð‡ïË´K·—Z,º­RØÝyL¿ F ”cCÁþà? À2>J`ÓÝ6T† LÖÊÑ‘¯têqŠbLºÎÝeX*>DMOÿqvÊ“0P‹Ú€ØÌ4Wqߨ‚ÜÞHÕLP;d±fuÍš”Ö§Á¡bÊŒûô+ݳmë Û5,îÓ°Zeƒ¿2YžùÛÎèãÆ*P(þ~‚î œR9ô è.§–Œnk3Êtw~{cgkË/..n H³¼¼ìSUÿüt*/©v.–„“ ¼“#æç¡!ªiaáÀ¶ÙL \wv.çü‰–˜72ú?}žDý2”⦶ßìoí¥‰­UP8Z]íüÚ‚ÄÖg$ÐßG#ŠCq|bû>’xb¾A`³$poÕá!ˆYáqý;v‡=DÈ—\4B÷§w, UôÊj'ÖÇ#CC& !ÜY”·"b÷þœÁq®ï$æø‚pÞrfÖ±#0RÒ•Þr”º<(²¥ñM õ÷Ô¨_/?Üà ´<”* ¥ãp¿L5ÙÆ‘L›'y|¸DJiíûéq:€A«ã…„6d=)|Ãf½ù’,Ë¢fˆPd¼œNUï—~¤Á#~ºNÊØ‰¼"ž&*!¡„v¿Éå„¢Tóƒ(( €ÇÓtÛ}ØàF·GÚñKÔOÈåîoŸ¦½k¬c®;ü÷=¯žiù”˜ j$n%5ŒüLD$ «ygÈ2Éýí–ÙÛ% ~HÀoE\t³U=‡ù·6£a ò¢˜éËðÈE<›šôï~÷:ìçÏqôÅ?ÆÒxw78Æ0˜DEöÞxõÜ?00Ëzé J"òÏDfãã ‚㋹Çö¾Èíðó#@$öïï‚À6ÿ)¼F.Anôü æStÏÉ›«µª¨¨á¿|*<›sër+¦í‰>"¶¤°´41ÏÆwcFË[S‹‹¨ ,±ãæÏÜ '`c°^äF ÷9ëL`4(·Z pqyú’‰©`öã( Ì#Õ|±uéÉi1/­ðÞ$E”˜"Í,§ý&r½j¢$lÈ7/Žoˆi|ó µô¬­#ËË€ŽZÜÝ ÷§5ãt_tå¥G¬ÒÀ Ñ©èN—Ç20F¿äæþ:t°DãDÌ… ‡öY×|çÓ§CÄÕ¼F»êgfL99v@‚ÁõÊnOPPààüã‡4<²ƒ(Ȳoò8ó Í”XÐTT½F¥ÚRÝEø=ýMhPåÕÕB ›{IøZ¤·‡[5ûäbHë½[ ƒJ}b•üÆ{¿lBVé +>„<7¨óóÅÉMÞIÅ܃4O€ôx·È(¯ÄìßÏå[îžÅP”´yÍ 'p(þê9BÅŒ/0õ¬¯ ™ÐÚhÊüõ‡3®öæRNZ ÓSu¹÷‘/XÄ è¾ñuE…^]±¢·=ùñc\é[VÆ ³ k:£þö6þ—!­i•ÕAÀÅA4ƒ/°ÀàwxÛÀUÓÆ ž¾y’Ä×rr÷aÃÅk,ŒH¿÷+ £™"½Çõ Î>H}ddüßÏNÓãgÍeL¸SÉc¨lÔ!>ð÷`Ê!ÈttDXŠ5È·>O´MæjbksŒ^ÑÐàŽŒ˜ö"Uee+ÈiÒ ÎÕõ†Vyx¦Ž4ÖrÙǼX?\ðÐlNŠè‹šîs(®Bô—/0P6N‡´»´·´íø–sI¦ú£Æ!!3x¬¯aÑé[Üz?Üãô~}’Àf-s!õwEUȉåft†þÇ Ât3—ÐÙ`ÿ­Ë^ÉðnÎÍ¡ì!ÔÔT¿Þ»\Yà|Žêª¯_h/Õ2¯&‚ů•”LzÕ9_ÉáŽlmO?¯j­ÕóE"DDqPLkºúm3¶(üS¥¨ Œkhµï`Q~þkß$%ÃbÄ+xÂÛÚžC–Þº#ã¦ë÷LÿYhÁøìˆ^X7ƒK½Æâ¿3ÿ$WG\¯’ ½€—;!²àbÅbÆî¨oX ´¡dÇÏýP‚7RªµFÿâUûT¦_ýwÕæùf÷ë:FìxºØÊïN¶@Ä·õôÀAض´„ýé“Õñ¥s@P‹qÐëXW·YÝóݽ2e°ßTš¼ô~¨Äµœ­2å ù×$©gÿ¨`÷¸z¡\zG$÷4ÛX7vÔF¥‘e`lì3Þëõœ.¡qëfX–gd$¼¼j„„Â+hU|ì{×t³{ 0ã_ÖB\‡¿÷áø—°ûÛì“ÃF>= TgQEóªÍ&²ämǀɺÚ+{*$BÔ8q‘2ѧÄD*hèù¯Ì—;k­ï «O ¬öXnìB|´-‰ñÐâ{`"H"»g«»¡ ´µ/\îlÑÎv. >~Ìììù^emñ&}ßüÍj¢©ˆKŸ»:_OüY¼+gKVQñ3p#Eñ4€ª1З‰yRF€Šy+"Ó`µü“îjÙ÷dDÔý =ä¹Ã/ññý›Ýéu>˜L|¾þðoƵ¤$&^2º_à„½˜@Zëæ+µkH–Y¯vu>U{Õúò_$?;؃()ý6ÿ#×ßnÅZ·/Ô«–ûýnJÁiµ8_Œ÷#-]ÙÉk®&ú²ÙŸâ; ÚJ¿„2üÈÆ<ºTé˜Öú{£¥u¾éµÛ…ÿãÃÇgÆms9GÙႜ\Vžñ5 ¨Ymn`¯µ$³Ó DùtÕÎ+q‰ ମœW*¸`‘}+íáÞŠJßtLN>÷ƒÓÐ?^¶‚‚†èq ìØ°žžWeà¡‚„ô‘¢z ‡Mx{ÃÙÞ×'Ý7SšÈ]ÏGFƒþü;¾÷#I\\R2¿*0rÍ—N¤”b…ý:Pp"Ãú·ÿI±ÞÁåë a߯„¦ª©™èÅ(Ë?lWálíl1IJÖíô!fråöH'(1± ¦=Kdw¬F0С{µóöx=FKÏ¢_ =°¼ÚR£ ü²µ#ôõmûÛ·îH–gy•¯'7:֫ΟŸ´–×;6ö?œÒÒª+'IÕdd<ÝŒ˜ñ ƒ,>~yŽoa9GÆ0Lê$ZÅtÄn'0dÚÚN€)´3ÒccC··ß ‰Äa;Îãçô³³ñÑ6/]ç6¡€ê÷Wx2<çø¼w6ôÊ¥Â÷Åj§ožcVV8˜¿Øóû·ªÄTÞm+Ô:î‘Ùì*’]¢”LÙQ€ÉÝ›|{<©áG0j釼ÜÞQÒ¶„†¼¼üñJ‰þýÍ9Êb]˜ ãÔ® nWfd‚ùyÒÚ0[åÍX€í6ù¦úýN{Õ[ZZd.çÃq'<·Ö…æg$ô•CÒÕŽ™5í™-á„Ï ºÂLeç‚V~½á gŒAH˜±Ùã !.ޏèy©Õcøb¯Rƒ|}#qõáŽÝëõâ Š4L÷£’Ö!‹á7"TTTÕz»œ®‹¥éS•2m—«ògvö$«W'\Ó-ÐXˆä ‰¿VŽÒŸ‘goÞ?¼'y·yÞB·ëæ=þýõò‘µSŽËñò“ÁÔ¾®‘ìxÒüöiÕŸƒt$‡‡õfÁ UÂdѺ'«6ööæ²·¨Dýv4xl‡\Üç_kí”õ¼x$â>×.CÖj«ÒÿNïÞT-P¸¨8ô‹‘ö°™Кûh8ßA (¢\9^Q§\÷ÓäMixlllï.®Ád±š““àZ£~Û³m9¨Ÿ©\κVVÊ%ê;çìÈOì¥øºôàÌoQ=»¹Ç"mñ 7“¼Âü‚«†’[7aÖå k ÕI ÎKz÷ìvëðOŸ•á½~*O'¬¨ˆ ¾ÜûÑ«X½z7Ú‰F¹øçáB£íz†°°R54#ãŸÏÒÞØä=’%îñi _xŽP7ÂòòÏ¡–Á”(rÔ€bwØFW£ ¥›Ä›ªÜz‰—ûñî*cjA¨Ÿe0ˆT¿tg“åT’­[/8Á¼•l²O ÌŽ×ÍNq pËYF»¸wèxÛÞîhþèá³*@µBMm-Œ€Àn-ÞßYXĤž­Úù¶=nš&&ý£Ä 3g$»[!·¸Ì¹1 øãP˹š‚&ÏN=åûûÕÎÐÞ999¹¶)±y "¢’¦ÇÑ ÇšÓ³3EÞ¸¤$jtPÊ*f[‡‡=^45Eù5–}±_¿—ý¸±Ý}MêÜ0–óÑ"¶|3qu[[ÛS(Ò˜_ŠV $(3|öR]™ŸAG“‹6yz²>ö³ÜQïº{ѧñõ½»ä^»Ž©Ï°ÍÀJjH½æ²^t:éÀ õ×,•í{pÏÒÂfþqr7Ñtr±ƒèèý`sm—dãBÓÖNÿÎŒÌ07÷"ÆT™qÓ_únÆÈ Kéìd*Ö¼æê ߃QQ¡QJR4#rˆßÏcw¢´ŒcãT@O¿ nžØKçûmäoJs999TÖ\œœÐPaá4®ccc$3ÖNç3C|ÀXñ cc÷Ø:5…{}}MIEÅ{qðä½u·^>ˆ&ª`§æX³-Ùfâax»,㔃5¡Ð7\I|Ÿõu.v·w"s™èrÌ%ÉäµháP/þ!Åü·ìŽ»œeàPœpÿÆÆê$ò¿»!£žÔØv€ÈCRR¸ûOËܜѱcýWõño.Î‹Ý ÞGFª< áââ²sp22ʹ>žïMíYl-/g4Y*ZꌽHŽŠ’-H-œ™Ž‹ùFº#‰Å¼ÜvMdzfæ *1w0©` åÜö;2¶½Ôe×ßupCD½™tžÍQ¸c½ðÂö7{elf$ ¨‚™Þôô\À*t:/9Qrf¯ž*ŒýÑŠžžùÖÅ…eHkÖ¨IöÒ{Ü¥[¸S¾Ïm÷”éœ85Žjœ6»I¹Öã1SÈÂŒü›Ý;?8‘8Яn×ð8¾ãá3Ùè'/¿²=Mq@€•‘;Ê…kkk[çqÍdÔŸð “B·Í_@úË—/庭¾¢3Ð/éèPUJ5[û™­æë8oÝ®7â ¶xEAAÆÈˆ/vvcss²¾ÚºùG@PPÏÒ2|zZuCÆÅ…]ÛãDxƒ÷Ì‘0ðs}®ûƒ"(hPÐi;‹ÿÎaåwyO¿ÕUýþ$¤ÁÁA“©R¢®0|¿ý}‹5@7Ç+í,F©ã¨£a p«!O×7ãÂJUX0/¢cø:gæÖo:új—%°Ù“+ o%Òº…1@ ^:¸dÞGnU?Œç'©®Gçq-oe™AE³1n$£snÉͼçf¶º$¤¢¢bºÆ2¹wN…Ðhb hB*nnn +àQP°………³òóÅúS¹TTÕÔèéé+œ´õôôä Ðøî^jji@.E@ÀˆÜoÙ=ðõ…Æxþœ ðJ@II x¥·*66Ü>T[¹‘ø$c6½ÕNeWC§;³ˆ'ï{ ™bçÆE/†4ÇÊlóÍúõ×{¢©­utþ FKWfáMÚÒnè–Ìf":·7ÓTÒåueæ.óa`M2‡}îölu»ûE±˜„fYóE¯GÝï“­4wi@vï(#;ƆAѽ;³V“^¸.’¥ZúÚd†åí8v8OY¾·Áv›mÎîž §ÒGw©;©êcG1þ&wŠõ-ŒoóPÞv;œÜËÙ–mJ*¤ó½zeˆ Ú]¿ºÜÚG]«V³¯²²ú»xXდ¿Ê;Ñåœ|ÏÜ×ÂÁx¬_Ì·çË-;/ÎÌ,_LŒ8dJ¸¸ÔÕÙ®þv²°(¶qvVYœŒG‹FùHÈ2Ò)ðõ†éëVl—¦Ö]VÎä ¦¯¶ãBSˆ{}²i$‚ø¢R.ãDLI۳ו߾ õ'³ÉLOOÃ(R·µ·“P>ý%4Uú'L öF9m3álŸ¥S9hhhNÚÑø(ç°±°‚g*‘444ôŒóhíí1¡üKJ,ÁÕ»5È+¬87¼ìíìü ¢ :’-ºwÏ^ÈK‚„C‹@¤mpPº?G£ÔŸÝí,ße¿¢Û?11 ¦F­UÉ»®ßdÖ\\\ç:™1NG€ƒƒÉ„«p;ß¿§Õ¬“… !!Áè¸;.ÞÉ/Aˆ‘ÊéIåê 5%Ko %“Õ+ÕšýŒíÅ{O9uj•=¯j©\x‹Å&5 @À=o¢ÓÓ˦º•:§àHwy C•èâCYÌ'á­­­-6_ÙÚzsq¸PdGjìè=6«ŸÈã^“ðÎô‹  /V‰zõó­¡t\ñ£º’üÒ)l¥mARcû>SÁ>F-wïWB§e ]™¥—dç3Ê—d»=ÂR^¼ ¶«ê'mH:…U–BB)6vnwWkáE¨h›™–:[-¤_o{äSµ¥rÑü¼@•ùTCëAõJG&•œœXGÇÆ*t[¡›5íºe»ôzþ :“ kòGÂÀÞ?q"eþ“™ôqtZŸóó)Á+è%Éù\±jt£óQ`X!½–ˆ£$ ~/)‰ „W€ëé&Õ‘N• FVv6˜ÙOkÝ‘k€ç¯ÎÆd¢¿~} U縇3??o¶€…JÄé_aЭ¼{tÒM‡€éš#³³6úâ×ög*ÙmWŸ^ìÏø‰¿7Y¢ÀûÐKS¶\ÑM,¨¯OÆ{½Ž °®HþhöeÈklgG2ü242"ãå%~¼?ò>9l<¢®½] ¥Gz$æ 5è­ÁÔö»ëÓØHz­,ðÔwww»û•…Iq³Lvßøìì~ŸLé Ì¢ çy^.8O·xóErøžn ­ÅÈðŽì­®îÁÈ^V(h›O·§{~ì‹[¹9ßSmp0mŽS)=´V× Í ØmÈ„õ’››ððððøôF¶e­&«A[96sËAÊài‚TkÔiQ©mþ^³˜gÒyspéÖj¢ ¤ûrkp!ß±1,ì²S¨íÒŠ´ÐØSÑ¿aï3£9ÌÆÙ[”ÛCu|Y~äឈV ›Û]7‘Š 4’Ï'kÝH íõÌÍi]ÖPl<7Ö€ìS]Ú5¤\Ë!í§4¢ŠÎ ˦h`7ñÄïµÿóóC=¦”C‘Ÿs{ï¢BÁáàŽ*V\ØÁ¡ê÷EŽDïºi1*¦U‡Gs亦è86çÉO¹GßXíºcxötF“»¯„Ò{µg “ë)»¦À÷'×ÂPQq°ÛèÒõ<,ügÛˆ´à„ /+K>…7Õ?/ýÂJ..®$:Yc:ßón_Ü[¿ØXìçÏ{ãÚ˜ eŸ˜³ž(ÿ†ÝO:ÊÒÏ?ú¦_NþÍfÌ¡­€¾~Öï  }If(xyµ¯Ý-,h ¿Öš»IR°‘’fÊs)Õ.4:ÓSH§ÊÐ]ë FŠÛ]0yäÖV2_žÔææÌtzn\@Ðë©øö»ëF¬ ƒù$íÝù”ÎÝL!5 ·W¯^QÞþð~äö²ìŽK‘6#ß:½Á%¥å¸Í€’*zåx¥`˜±¯¦¦æÙE]áÍ Ôxj÷Dçîæf .b='gÃ,{‘ÂÂRU©ª¯Ÿ_…ññþ|=æý͹_LLÌïŠÂZì‰óý|dž<óä? Í!“.¨u$¼+8Á{NŠ+v,ª§‡€JävÆó Wç.âþ–~¥ñhHb—õo/€¶_QQ,NÖß&’Q)»4îÄ`0éÈ„Ûù¨œ ÝÍî×á³¢ö.'úB""ÔePE¨8r2ÏvB2­\3^uµAQÞMÒ‰³ÅæûòÃD=h¨¨(Ÿoß¾™¥gGE¡wtv®ôÆÒ5BæNeËKÇëú# !!!b’’B&&&9NM­hüjX7 ˪jh³²*_cGàêxÈuËMÙ„þâÅçoß^»ÑBºÎý²ô÷IJ aBBBFy9:‰×)ÔòJ{cDvƒ×¢ëѫׯWf«ÍñX-ð”K5ÕjªÏ¯ï/—¦­!˹ïßûD†Œ“b~8_ÚX²`"™ÀÀoYTX†ö¾="Œ¡ébÖœÝåøå÷ïßmζå€ZÍ<‰-¬¢BËÏÏõËðêj-2v.¾hÈVãdºxϱSßMzêˆÇ$2GËî‹ †ÅÐñ Â#á3RÜ’’¹å7œS¥ö±‡|6/_Ð(ßFòy!Üßðp&Óü[r•ÊcY{¡¸G˜÷·Þ³Ûs€?ô·‡é_4§ בּœoÑ’í“Û3PRUM€ziÈ”¨}¨ƒ™ ˜ÄhÔÇh·.Ö¼ÐÂÊòê(ɾÔìæÎ(KƱ Á=0%ˆÛ»Pt‚q=Å”R‹Ë;¤Þ~ Hª•×@/ÑÐÒÒ~„Aç»;ö³qtÄVVV&{õJ ‡š¤(õÿåOÐÁ^HMK‹e¿ÙQSS“%„ªs¶“UW§z}XZ¸;‚( ²²RµÒ(¢ä·ÇòdR×òÝËËe›®7“!BSU]›¡phÄŠsÒZž…1ÝÝñ:ÄÏyÜî4(±Ã÷[ XÖ›äÇ8ˆ|¦ëíóŽÑ!·üî"6öέÒù9pàF…&®Ž÷}5MªìÆUã/îª5):@„[S*Rî5ø®  ­°ÛݲŒ¦Ðäó%# ÇC²ýÿ‹tèóé\DhZ|‚kkËÊ“>’–NÄuºeˆé i«1­úÏ®¶òZÞïÖÖ¢Ždk+K´¹šT+«ÓI ë³½øú¤â€:žAAäÁêÚZ:‹÷¶Š¼<&eJJ D'p:RRRº¦¿~ýZ¿Õ÷Y[k+?°î!@×ÓðA±<¥*Ôâp¹ Q¿ýýýþŠÔØ·—G¸ð—ËDÙ/1¯¥zµÙk€V:æ…gŒôŽ'¡8žr ¨“_é­¬¬z¹é}sÉ<ûÓotI ‚ÉE#‚•€ì¶Á6GÄåíz=Xm»öœ¬ÞrUf-ìK,¬?ß+kAÊ¢¸¸¸£Áqïëm:›uZyE†|¢PДê»ìH×<ó­¡ãcÛµ.”`¬WK›Jè;ë€ÁÙ”ÑÍ‘ j[|²=Po¹XOZmj[çZt?â9ªÓ„+LÜ¡:ªòGÂØGÆn‡ƒ{9AzüãBƒãÕf²õòþ~ž;£9ìÛÃäs%:-Ä4*¥þÉÉ ý€jïë“@ˆ)-xö2¾OÏÔ4dJÇ›¨¢âc÷!¦ ÷B>/B¨rÇ=e€àODDDªkŠ>»~ðÙ½–ÇÓx{w:AEUUÕw`µ‚Á4ÊóÄSƒ8F²ZÎ.‡³-þlv¿„‚"`µøÉ¶äS ˆ(##C«ÕPÕuæðvÙm¸T‹ HÝ«ÛÛöÞ^DãO¿OLÇrM9'ð{ÙÅì4C6ïÒ½»L¹°š[× Ýn/ü¢£åÂùÚQ̇½†R8ü´›ÝôF¿}Àc·Épó£€ê7ÝL0Âÿ“½ò‘¼žÜÇ{eñ¤þÐlÒŸê]%,ƒ„þŒJÉÂFfªV¨Ÿ…#D_½CÎLhú]¾Ü2c-y?6Û)û,6»¯íŒQ×J-ÚÜì™s ॿ,ÎD¬õÖÎNAÓBžLºˆˆTƒ‡DÆ©V¨Qþ%iB{ò”\$ ²¾²· rÄ` ‰¥÷‚¥º¨Ôz3G¯PFº0‰^‰Ñ;)(É®@"ž®×òÅoNåXô,þF´sÇz%ãqÆçÛÛðP ,,J‹*,ñfÉrÉ®S.ÿ?5œé¤Ï­ãA..H£E_ÜÄCm:õ²­R³^{ ËÕ½¼%,2žð·…ž-g‘ÿIÀBsÂqHS/¯6S"!d¡466 Fð/ÆŽšN öëK¤ªZå_íHPíÀäbã epq±fõþú_]·«ä…ŠŠ*&&&[ÓòvÓ)Æ„Ú?8øš œ¿-½‹œ™™Qmvc†?ºwW'½N­­­Ó•ÆhN‡ó!^÷7­¿~}¸Vµ< Ö×~Qz³þ­ðŸ¼Ë§Š§ÆùÉræˆ õÇ{¾}[ò?S•“&ÝÕùãÀéD«¹ÅPyÖ <¼ð‡d•²\s.È.…Y ¸ÄFç¹è«7[Z“ÁáÍ9Q«ÍA»: EM M×ܼ F:ͳ†k¶Æ2 ¼¼ÒlÎØžÕjž½étKL\¼­Ú|ŠÁbš¡X³þùûIìZ$Èþ99Dÿ н‡2ÊTÑñÄuðÀ>Qéée¸XXO%VyÀä̯še¤/(œýý ÊÎþ‘êÎøAÖñÅ §¨MǽIRzz4‰8Ú‚j´M½SÙ?Yñ~ƒ°àÐI‹B2Áè* ˜_RQ! áÐæŸ±ŸF¿è˜@<˜­îÐ?‹üzÍO3•µËg;{Ó à¹//Û BÙþ®ˆ›m¾]ïx+ÔèT21RPð”þÇ^L€À}Ÿ ÛQó%1Ûǘ2ÖK?€”éüþ±ê}½&%­fúâââö\-}šç…÷i?s`ªš6 "y TÏÛƒZÕ* à›!+gº z{6úŠø\Ž¡ÿwô϶Gl„ì옠6Ñ”Ê2Ë @at>Þ/=B*Ê­Ôö v6@í·Ôž˜+T-×}rw?Rk­ƒLĉ¥'ÐÉׇÂt”¤ÍÏR#øR‰œœÜáèÐ_"^¾š‚ç,ävõЙ™6ÛÃJwWk†Üªo®®WÝŸÿÍ{ìEgc+«'@öæLFPH!¶¢x¯LédŸÌÛóŒ7X ’úçŸ8u. ô÷—ëw"‚ÊÏšôLHLÔÛè5Š kÏ |Ád„‡ù~6j.;9ñùR±sŒôÉeIvå53¢á·ºït”t–@´Y?ö~ï´eÙ <-¿Î«cÖWYÈ!¯18îàõpP»Ä`==­8ášçÚèœ.(Öc)Ïl÷ºzµöÎò”T®Ÿ3õ0œŽÔ·ÍŽ{8³¨±b¯½¼Rç¬Uªˆ`!€)ßtk…çuÎÄj•âÛM°Úao3r@’ë–ÔÂbv¼÷ß¹ÈÚ,šüòœC½*ÿ"öô¸¼u8óÇÕÍ9íú«QAaaážžžŸ@Ÿ”[αþ9ÙúíR:…ý¨ŽÕ ¯÷¦¦T8´ª>ÀQ˜sÑ6‰‹ L÷ºùðöösd TO äPRGç‚/Ð5PŠêJJ4˜UÖKÏYY¶§G@L«ü‹Ì Ø9‹^G|FDúHIý…ÆÒÈâl„c†«lÅåüY×ÊÊW¹düö‘¯PËÌŒ ˬh$ñ jõ.üïߟõôFä³=Y@3àÑ_†H±#šºE?J/ur3tG¦¤Ø<]\±n÷lsp!0ÝûG0‰·Ìý£2ïds#9`KHÿ|š[a‘úí맆éÕ„—FÞ!š]ï@Ú=r ò54äôò¶¬Nø¿P’íf?~ÓÙ¨D£,,*aþŸg‹p$>øÌFï©cÛúû‘A5´ƒŸd”ŸÆÄ`B¶êG²E‹>z‹ˆ¼Õ3f#ò‰þýãó³” ÈÈi¿’’“ËÔ[ššâÎËÝ ÄO–¸¿'3…1X‹c`2C€üÃÊz{ë„• þSRc)=H÷õk¾±©899æôtÓ§¶6vn—ccžÕËO¿“M<µg‰~Ø"ŠfL‰ÍȈÀrÌD'ÉÐÚ 3ŒˆKy.S–yey9c$KÏ1½EìÑä÷yúµpá±Wf4Ôtoc!Mìv¯` X%»|žhÇ×VY ˆv;Õy$¤üåÜjÓQS•gç6 úóŽ7éwaÆi'Ê·ÅéBß8``‘.4:WCr3ºµ¼¼üg®TrQà¢z~Ü[ÜIÏ‹ƒFÈùO9S!èÝŽà4àã‡Ü+ÇÎÆ~íY>hF<öOKó¸+ij4Þ ß#~į•üñHêÉ2¾OHέKjw'Ýr±soµnh.ö9"cÞ$mršáÁ9™L>ûòÅjÏ‘Ôx釧œºzáCð¸æ}–]?½™Ùë×L’É5O ÍØí¿bV‹óÌÕlNZìøïöZ¼Y›uÈÝÝóp‡«E÷ö¨Øs¨%ooMòÛ¢,NHœžQ›¬·¨ÆÐµ°ðLµ<飷?>ŸZùѼÛWXk¢ç»¼ …G@ÀOS$ÛaúÔÀÀÀãöà©dڼΆ×.Y ¸8HÏÐÐÿêJÃåª\l£&’gÓ7™ÍÞæÒêÇì*é93“o¨„è|Sbö,H½(l¬¯ºmþÕìžœ\Nýù€ŸçJ”~è~þ—úòë Ä%%ú”ƒC~ ‹¡¢0¸_0«þ¸cC&ÚERQ¡ ?ûçäºb*€ŠUHw™÷ý­ÕN,`²…‘0Ç•ULõõÃpÞJž6 žÜìÝ¿Œ~g±³0¥sN 3YŸ*¤Ùn›,ó^‹~MM`~´xÚ3èEúÔj0½¥ÀŽäáªwÒ宾Fvng»¼¾>7‹ é¢Bî_h¼†4/ŽŽê_¢;¨ß2HKE¥yµ„üwFfǸzÄËCl“â±™ÊôÖ²ƒÅ¦x¤ägÙß«¡ÿit§PX¦FHø59ÂȈ©˜X/:tM%Þv„ó">¢ŽÎ›„¤¤åú-b­M2F_'MÇmWÇí¸z– ¹rŒrœŽ/;ØHãi º::ðââJÊ=o‘¯®ØY [ ýѯv‹{çrsŸ ‰PhöÌühæÐÔ*±YFâpLMNÆ–Nm(iÂã3_g ·Öå òc¡Ñ¸}a¡a5"âÒ˜þ†}GÈúÏ6äì\­ Ñ¦'<é;yCÈ´çHt/_o©¬v“È,ŸOù/Âýs<“OM­>8BZÐÐÐuňúsèG“±.d­†iƒá—$´šìÈ&öáÌß_¶srìª@â}yžø›×À€œ³¦{4ÇèpKÈ´­tú—<÷tXŸwóß±ÄBN¼9¦ ¼É»?¬,\ònùÜÑ1Õ{Cÿ6vmý×S¨¡Â¦H«B ̘‚‹i±fMÍb`+L-ƒøA Á®‚´‘L©Ã™œ´¬øØ§ê¡p|ðW ÔKò5âoò\Rbõz-P'N‡>«úøß+IÚ&kJD8GÚñí7﯇†f‰ÖZí¦~ üYd //ÆRm)Q‡YY_loÎçÜ£CÞÑÁ¹öSY¦¯ :úr äž…æ­°Ør[VB^{‡ïõizçú¯{=3jSÅâxºÈ”¾ä¾ƒ–”zÇØF²²‚kó赋.)ùj{v‚X£FR°;'|·’rúòyÆúooÄôšbü¦š¶â95ÓÍ·M"«äç¶ŽÕm~pÂuÞ-P@¢M:±CÆ×AÚþ•jo¤2f²ÔÅr6¡`¾ænõ[Õ;»¿›Òßf¤qã# zã>Œ(’¾jºÞ|™ÂŒÏ̺ºÜZ«kU:ûš‚‚Âåz#þäw½9-ë(ð!Bä•]Ð]•OtÌE"‰K*<%^=ߟ®4¨—¼Ž)ãàö–çHã+(È¿½s=5аs=ËÏ7°†Z¯ù䟣Ÿ]!žšÐnÖ)T …=‡|ƒ„+ÜÏÌ{uä-ú³5SËoí-UôJíR©îé¦BPPÊæAØÉIPÎGs‡}ÈIú§‰Å®Ž!x÷·þH”ˆ:¨Ë«_ÍôcÉ99QPˆRW Š‹£~þ,9EyÈðA h(¨Ãù_¤v%–éÍÐÒ†ÍDÇ€è݇D—°ž˜••bºÖši¿ŸÚ°±«ë¦§ï‚|5}:m¾ÜåGšÂ6˜š¬(ž@ß²0>.Š÷΄Åé( 7Y|†þÏõJa\Îı¢‘‘2í¡”TÑí³ œšZŒ†=î\í‹sÔÕÍ qš¯•פmO÷Öæ71yµº*/[¦âq³‡Ç ʨ#âR½/ŽÈuéyë`ʯ"Áññîpq#=½°72ÓưHKK [it 4U*UaøËѳÅÊ¢8(O†C=õ_½·­¤­Öcjdä‹bFFM]1ŠÈáèPUáv΀LX‡øéM…ñÐx©¥Õ-Å/Xfi $¶µUù¨ÔT´Eß@ËY“`¾~~7?ÊZ717¨õž Ù<ÓÇÙÜæféTqye×77œÀ÷…AT ¢ê‡BûÍý®²–´¶ñ-F×ïÖ-C##™.§¾ Jiœ‰ãI†BžÈtõáæà–škF}g ùHíÑÐö’7°q™"áf±5ÿœÕº¡O”ü¤QË„/¯^—˜ð„]×R‹(-MõZeJÝd±‰ÕÁQç¶(°Wòi wbpy9!;:š„„2ÞrÀJ{³\enÁôÉâ¬óÒõZãÑ)<ô÷ï¿mŽu¹ç? ñÞBɤã¬.6[|Ëããovcém’rw·ß|Ò,õÊ*é8S$–/ðÿã›ÎÄÕÔdÝÎÊ‚AÂìNž´Â |ýN °ì.òלO¹LL€ÄÓÝ%¯óº'~ÁZUR,™¯­E’ÌÉ_¦-±rôÈ\cMG@#>Ç÷gGL)>:Úïêª18ü¾Ñæô÷F#%--µÙÉp…‡'°sh+‡Úp››"úÝ% õõϦkÞ¢ffF‹Iy>EC-VeÄóò*‘{DRWWÏ—ËV7eÜ-×[žŠÿ1VjEVž¬»=HFÏr`iJ1¶´U\|]¿û%deÅ|^*ˆùþ> Á¤âì,Ä'³³»#i›ù‘ËÞ®[€É..‘*÷ööÈÁ±ƒöÉÉaüpïÍ?”&Qa9Ç^MÜýG"~+Lã¡i›(ÚÉY‘IÿP\œ€L®Ö ýï}ู Wö-J¢qu×ÖÆÐä§r ñ‹Šð¸7è]Ù¼3Éh Ñ¿É4påÌSW»çá ¥¡‰ H¡–TQëìÜïœõ¡Ÿ­?¥Í•š œ,ÙÓïüÜÊÀȨ¸û€…˜ÙÖ]ù/$˜~™Ò®›œ8Z´šþÁƒ (ŒúÞ‡¦ÈlºÆ’Æ›éG¸uUvNu%3Ø?1”"ƒ‡þSis±o™Âuy™îïܳ¸0C . ìÉ[uöŸÕ8ÈÈÅï ïOp½…]¬†Ri¬ðÿ‚†wD@t7µ…‚n«/ŒjÅ*PÁ‰ÌJ½=öüº¢ÒÿI*WƒÛØž<åv9?ÇÆ ˜˜š¶µáq9…uÿüT4œ7dg1û1ü…’•³ìŸ9žï«aÐiн};Ëí|ˆšÆí ËÃCT×0›­ÕxÊÇç-¡x·¥y0Žúc¹cÓM×ï~ÿF©6W°XàÄáå¥Ó-zðzxÊûÒ*J¶$‰Œ8:1Qƒ¿@ ÿ›<‚hd–¡–G²¹Ãˆïiè´ÄÛ •OV‚¨-—ìê³äEþž`Ÿ (›g13 í ?8ž³fÌÂùSP@ÚÖÞ­¿Þã¸½àŽ¯\Fèt°ú%àOÂÅ~4\ÉÊú¬¢‚*øÿÏVšp..ìYj•³Ãc4:¤éœrŠcñÛó¿½ÿ‚>3<öa¤ö w•DèÉ-lÜ>ÒØ¸Ç£¥ÑQ<4’ïäyÔ7p¤ ;g×ÌÆËÞw>ÜǬ¬ê+Üý¢ò‰Á̳ü»šÐ,žX:N8ƒ3–gÝž—aKg§\V)•,Bþê¡\YW“ëÓ:Ü÷?ûq¾¾¾úš?ëë´ÃæX¸}ÄDþçvÌÆ‡ï+.¦›ÝÉŠKŠB“òÀ@ÁKJý¯àèõ`éîè@¿¿qÕHja°H`sp¨ŠM,’¹wÒMÒŠÇaÇãvv…Ð÷¬uª¶bºâÏã´%(–g«ÏF­’A…Bˆ(DˆÀqïÇ´åXgç uõÕ0>Åÿ*ú/BÈEK±ïâñδº¶·µ©î»(‰T›Áö ¼Åú7ä „öñ KYŸ?^­†jMWí¼ D»lÝŸáQ\õü™-ê ÅÌü_ÿÝÜ«Q½quµæÊïr…ÿôYµ²rn­¾¯V#…îd±«E‰¸ç{a'=…B#Ù\ÙŸÁú’îuum d°_@ãüÂÞKÊ|ðO†³{”·_Úi¹ã¾Å¼ ¢óï§ÚZfåRBh>>•Ø«ï‰ Qb¯¢~am,JŸï–”î‚ûgÎÅÄ{;¶GlŽ´QY-ð2åQÐFÇÒ¡ ÿ Iÿ§…¶a±0ªRšH™øŽ‡ŽÛ'gAqS? p2ÎÛ]8Q‹éžd_/|_NGÚNȉ žÂ^‹Iöÿœ©¬}l±a~öë—Ú0 µûV ñÚ¢HZžDD(ëw+œœ˜‚)i 2Î,¢á$¶ÂãøþVSÓ¢#"7îìÌR¸—Naáç'ûjrÏ^‘}tý½’"ü:¯r4§5˜ tu8}z.9”hçÙåáGA@ÐÊÊ«.ßXQþ£µR”BžSg©Ö '[Éäͼ0É#ZàIêö'„onÀÑjN£f! …¤Î;ˆ^œ*[´Ø_N~#C±z²f PWx­ËéøÔ>@"H==³^9_ëìK‚l@N˜ÌVáüxh`»9³5޵㗓»Fâ8?w”UT”"¦ö½ò”£ë+ Alœ¸åPz'ƒS£‰9Ö;;2º––m¨7õhÙÉd@Jnn ßr¯«äã/jjr{{Îw'K>5»óµÆëˆèîO‡GHw¤pðèY¿qz÷Ç)C!h{¢O­o ôqØÕÕ;,ì_iZZzÇUÑ7››_på&øÅÅqX­yý¤’õ£ÒuÂè´’t/öÿ?t½TWYÔ7Œt—’ JJ7H+Ò-ÝÝÝ t‹H—€´”twIww7H÷w®3ÎÌó¼ÏçZ³XCÜÿ=çìý‹}ö=—øàЃ+¾}`8R¨l ¹/Û«A "uk¢‹ý„¶Œ=<8x1K 4?yR‚Wu~2yÉ—<< º£øun!hk­‘ìS(iêïnŸz\{ R±¹»¿\ëGó G2è™ÛØxH£Á £¡aÿwX™¬õ%‰„Jˆ¨©!‚Á|ÛÜœv$_õAAA:úÂ= /G û1æWS¥áÙ1€ìd·YÁx¢Û O‚L°†‚„¤[¼lLÈS×à‰CCEõ!¬¯ÆsSBJ*hIçÉo©‚ƒNÕIÙã5ë¨çt×:–Ã.ž­¢`§¶®.™Ã·ñjÇýÀŸ,>Oÿ˾|çË(±Wæñ$’È€Exf& ÒlÐxüó·t.ÍÎ4Ãø½kF•ê´´B 1k¶Uº]ÐA®œŽvp0Ðé׊§îû_Zšƒ¢î¾¾>O[¹y1˜ÐÈJGzó)vÝÕŸ¤ üV7„ŸÇÜ?wu«‹qF主úQ©¬X-!K49 ƒ…uë å‚Í/û-Vè˜Nˆ³~­ô}z#Çc+öSðü‚‡ëÑÎsÍ„ÙíFÙ%¦G}º›ðýÞ{ZÚÐb‹Y+³YüàÉGrp§|×$ oˆ ƒ–„¢ã.°cèn,Å/3Þ¿ »=¶^f§P¿ô—hÞ^þš•åMÌ3spر»°cFëPJµ˜²Ô ´¥–…Åqß´s} %‡‚”¢"LãÏÜøÎ·ÖêèXh}“(FÌj¾H”#,Á›·]ƒ‘(ÿi$ªëã³116Ö>\º=8¹!n¸¶AÆ¢tÈíTá{5€f Ò<<®tmÀlÄr”¨VU÷Cárq{ìã÷·ê ,7OÒ‚©ƒ|¨¼ü³–ýÍÆ\J«Ý) Ju÷fxÎ ǯÅëªyaž²U|U›Ž»Ûì|IïH‘ë´¹9ùêÕ­R1ø€@ˆ~²RPµ»>·@E–ý4ù¼»i9ÙÀéø#5 ÿåÇœûj£ì·Ç^[Yá¹ÝÝðÛíÍ<<ÙÎ;­01elË×-v܆@wgÚaÞc»¿˜úCüìJe? s¬.ó‡–zgf * Íu®¶`@iÀ xT‰v§P¤ßýÄl ÛûúZÇnsè¡íÚ±OxxðÄ`î÷­Q˜ª*_2JRýj×33s‰¶ß(»ÿ‚åƒB|‡ZiO§/1 tþDÄœŠ€À£Ò²2i0gÅéV!§ÔÇæ~c,‘ÕÂknæbÃþgožårèÜ8ÏÖ°‰n¼2ì³€L@ÙżB—t”°¨¬'«Õmv&§¡ï¡U« jnÆTVMøª@MÙ{xO¥Ì"“Ãd…Ù—Ø÷ÈëüÞ‰R¦9˜Û†ÌcÃ0,;ÛgÈz“ƒãâë˜wBƒöc4Àâ•U¯©¢ˆb‹w‹uÇ!Y¾±!Äή¬ÕìöøU#ÒÚÚÖ8(.*T§è[íÄ€•vK™q¹ÿ ·n>ˤO-K9Búº²rBþ˜ŽÊWžŠ_ZÚÔíàµÇõ!úZß Q[J;Ðúõ_Ôïc{>FRF¢cÙ"áÑg¦PŽg‘€f&Ž©¦©;NMí{êIÿwY„¸8©bwWV3öÀ«³’ÁÌPHµ´˜U#8x'¹Õóóçã }°VwÔ+ß4is-fúøú‹„ès<Äì¸ÇÝüím:ð_ÀI¾r0525ÛçŸkýóOÿú“—«&Ó†)îGëûZÇšÖ ØoPé²A $ð¶ë§í‹s±|w0PÕ`ÁÌnñ7ýùvÇ Ê%ªœoBaHx{O991 ñ;SÅõ‚.:8‚Ú3 dü_ÅüDéšrß ™MˆèÁ:Ljl|wï1°;å×\ÃO££q†#䍢в•`g«£ºŠ· K‹¤¢Y¨c×ß8à3g¶øgßCÛ¥ËáÓáÜïâ 틌OàµÚ‚š äijZT.Ö)šrT´±+mÎUdp«D«¿²à»<¾x¢^ÍÜòdVº¡ÞŪ!ä¾°©º¯T˜IÎÊ kmýò|»¸8¡PüÑ\õž„q¸Ý©Qÿºº*0–_¿‚Ð1¬‰ðY¼<¹²²/ë`›?O·œ_ß0“Ð’èZé>ŒŽ^—7gH0¥Ò%™&cÌÂüü 5Ö¹Ùß¾‰äÒ: Cõ`Oàzbõ‘è4ÄÛ¾½­‡Ü?@¢½m°B""t*e¹ÔØ ºìk)µ…ƒƒr…ûýžMá|·å~N)d˜ŒþDÀÀÀ²^édéIi Iâ¤HáÝ‹å,£F‚’xii˜8tv>„6HK嫎·ŒäxÃå“—W7Áƒ }®“ÇÕ.6"Ò»ŒwX×ÙÛ³o “ϋ梪³³“¿7>ÓR­,üá²§·]­UCj*öît?˜&Øqmsósuª_Aè g1¾yãäu6où t•XTç#c· ý‡„„4Å–ózÌæ*ïv”Å·ä1CB޶r/:ÄþæYyŒ/Sœm -pià_¿éTdçTI•"qÔß+µßßo˜G¿:Uo¾¾€[ؽ¡u9µ\«Qí …K-˜™1¦¥c.𣸰¶æ…€ÅÙÜÑ+‘0&{%¹£ ¼š†ˆ²22ø½Å­Xó4^11ar+|œ*»»%SQ™ZfıËÀ)ÔÄ/˜u]¼½¾Æ|öLï))éNNÌN=ù‚p ò)ªçluïÁÒ12¥¤½Å•¢'ps­uî#µÒƒ‰¼«xÊ$¾‹Yƒsóåõþ©DÅ .œìÏ#²Yò¾~ó†Ìsn^xt4nµ£eXz‚ÎÕ);ºËÃÝ©^Ñdˆû¸ìÀ_G¨@å,@Ä`•­®ÏQ Šj*ÝÌì¶ð5€¿¾TÑ'îÏ%%'ÇãrhÕ¾¹4âvúäÍjžXl³Šn·½†(d+Ê5äù^5áµ’\NNøâæ¦|¦ýœk!1&P¢ž›Ë€üüªáá²;³£é4ë‘hii™-Ì~ÇiÕ[ 9­ÑÜeåÒ§‰Iù”€ŸQ‚¡Ú_Ú1Š„`üKÞSÒ.¤”0n‡ÂhPï„ ¿ŸÎ|}þx±,Hä…×ô:}Áµ³˜Æ ö‚AsûH=Ñð†VOo‚`‚Øí©ŒÃS é}ýýÉ¡y e” yc£hBЍ­Bwwêäg((Á#›ù’ Î-»ŽR‰«ª"cüæ«Úš=ÐðEæ#Ô$1bÏ3¤Ñæ*±e‡¨U!¹ºÚÆÆãA»Ù?«ÒèSHˆÚΆ¿ývZDDÄo¬Ñn·ÛÉîñu–·-´ôÞÞ 8°ŸŠ#»››»ÓË•RTQ_EÑØ&¦¨É)ê|++±a^ã¢Û tÙzß,¿ÕîLÝÕÃá¬+í‰0…%Û=¶ÀÀ·€e§*,Ÿþ'Xe7}aÖ ¶ÇBšòdê.%ÝÎÔ5t@sѨsB} zܯŸOñà Ñn™‚“Ã;(mÖûÈ¡ÇüÑ4…ÅÅ1ŸašC­¤ŸWèl¯WËÜœÌA(W ˆVDÏk 4°zÇÛë©‚ÓE-TuQ—'æ00O,e:7ú 8-òƉ8\æRtâuq5쟙­V|Ŷ¾ bç§´´tˆ/ÒÝk#£gµuIÅÆÃFõpž}@Ü¥šÇÍ«þa‰Áy¡—À´YZ~WaÁ&-ð‹ÃÈ”:âzã•£…¥xü@RffĆkBàzµG²vô öJK;0Ờþ ž–7½bcÈ’ -²Y•.µœ‡ñóÛ9Ï7†6’yð8>³˜sƒ¼Ï•¹æñî4æï}‘|FŸ²2hc•èçKWW"Úή—00o@6?`6’–‹“É ¶daqñ7ÿ“…ÚýÒÄŒé÷ïjÐ:…ØFw~g³3ao·;%ÿ;UÿBQÑR¨Ì4S…€K‹(deÅü•…Úèö‚޾ “]‹¾nw4“rÙÖñÂpÖ>¨0,ª¦i (µ"Ï»ç;3θY’Ï›Z[Ñy\Y;*æO¡‚ì3Ì0ñq¡ÀÀ'•‡ØÀ ¡T©}Ø›MX^Oñ¨,Nš|ó ²j´ýâÈñgm- ßÚÚ­¥ƒÅ<éÓƒ©}ˆóh¡J»—(7—ÎE¼I×3àm«unÐí+LB¾jGóؘüŽ2%Ãyà›4ÿ‰LrÀ¹ñ5À§xÖŠE©Ø‹ä%"â „÷²“ #L]DƒŠ*d—!5 ÁÛȈôN,˜¢gŸ¿|¡ù®æ|ŸË!Ñ8@hv­ìv&СݧoŸ?·P[›! HÌ+='S|³çÌW~qf–(ñ Åm'çÑ6a©°NN#j\‰V}Ò+l= " þÈHÿ‹ÌHµÖûJb™(ïæ<¥1Ãæt0{á@Uf9ÿ\ù½‚`w4ЈÿTG„èWz…óþúPP€ j—t8ªˆÞ2c²CÚ2^Áð·ØŒ¦å Úoà ó¯Û‹j4Ò©ø{pòo-Òjºçã'Ò<7G˜â9Gä~YꈀtÁ¬ "‚ê°Ã\fšþ)..Ë!`£Éœ¤/í³u¨õ$CÃ)}}ßÅ·Aº¦~B…GÝûÞãtŒÛ—,ñ¤ËÖX&dí"¦jv‰Á=BűWvÙl};ÈÉyŠusJ¡G²½ÑÔ8^~ü³½Dd„ðñiÑ dîŽ7§!SÕ’:a-/¢¡AFÖ§;[ýb¦Òšªœ34ÃÕ¹”iÁÑA§ôž®t1!Uエ‹å©áº<9r[†-‘ïIäÀbŒûþYVV¸Ús¾«+ó“ØjQq—h/ÓÆÖ϶0…T3sób½.Ì ³„õ»™¥èXrX¡ø<~qﵟŒß“L)÷ýðÙÂ"NL2;îúæãñcåÔiBNflÙœ‡©©$ @;å~þøQçú|™ô»Š=¡…ªrÑSül®èŸï$ÜÒ:C=xÚÂþ¼>ì›…C.êqóÙ<ÜRŒf˜ö\mN‡Ì  àMBu;2ÉÉtÈè cb¢¢…Šq­މ0xûÎ5$™'†ŒœÎõÌãã½µ?GFŸÑÑ¡B‡Þ!º+ùÏ}Ì1ÆØ÷DF G)HʳNtÜŸk“â»yX¥ÆÑÑvt7kdŠtð«Zs¬¯aü!¡L¡F9f¤qÁp–”îÕé.NµH[&Ãσ™(H”PÁat±Ei°|×íútúeOò,V£”†á“ÝYWŒµ5àðÿ릾a¦¦Œ7xRS •}UTTvz.èïA;Pu®“ž±Zò†ŽæI5ö¾|„b â,5¿7"ªîìø˜Ù§§ê™˜ˆ­=amni!(²eˉNâr„Ê›Gë÷”µ¿¹:+<è+Ö•”­†——§ZÚ(~ æGÓ­˜˜À'‡½l·¿kÑ*VO‰Wõ ; {J– 7ð§àï’•R' €Ÿ×dƒÍ+]ªŸb”,ë ­—&¦âuÖzÐÐ g`!{ä‡B‰ñøig·w°0…òþ™ßÄÄ­°ðs­ó{£É¨cß/àÁºêˆ‚«³ %Á›noe+úý†€?ñÌF?”AåÊÚüñ±*_:÷õ jK—Àwr­Ê!ƒ‹môddT5±qº ˆD›=Ö=…‡:Öz§ƒ?cr¬õ£5~å×ø]nŽWárÜcýYÖ§æ?¢8^Eð9Öá±1iµ£æÇé ’ ¢·æÀ#A»!a„q~ÞpÞ‹@§®v‡7ÍÞ¼C&ªs¥’5€(òPÕ7Ä`L³³÷òQò$s­š˜XXpHÜeªÊS;k×j· ‹³)¤"öûR$ßéŸdÎüä¥SpƒŠù;ZÐþ”ÇQØ$)~Ä<Ñd {AªðÛLÊ·¹ËÊKW¯éƒš€$Åü·€§" $E¶úô}€ >Åż.g·O” ¾½ÝýkÏf®Òj‘úúÚ:>ß G„Ù”µÆî¸ú)¼NÇ32²\FFF ìÒG¡ÓdÌÇäeTK4hïÞu3Ò«ÊËû.w´ÌÍgffÂ## lBU?èäFzaâŽ<èD nŒ·°‡×ôWwœ?=Ìk{s>¦‹¦Ëe‰ün`“åJænÁÓÜ©°NÍ£nJñôÓZlö ¬È‹—ºýÉHg–/ÿeY¬@ãJ§‹°ìÌpÜ££ƒúPI꩞•}ËÊò†˜u{¬˜Ýù2É^h$eä@Þ8ãù¹›?‰Ç9ÖË—ïnÈÈ×X`"d{ üKŒã“ Ñ\æpbª£MMMì×ìàìN¶ããëo f„“pÚÁ SéaËí\vŠº8Z¡$Ëy VïNSt²0´‚ƒ·x¶öõÃÛ+¨_÷Ò_<’¸*Éþ€aµ—îMërã³–â€^,‡wwöõù7ðuäbýSQÁ±¹ÿø¨‰Rcæû÷Ut&ŠÊÎý½uDeMs"{öZ2ù¹#¼ß+%…º¹Y2U"Ár°þæ>¦ö“'U ðÅǧZ?¿Ð¾‘ìkn%×ÖÑy¡ýù3¦x'ÎØØX¶f¯ÇÝÍÙ]ÈÑ\…% >‹ÉCjjê>b__ߌð»ÓiK+++¯¨(œ±|U%O~þ{ñ F¾¿ÇJqû…€ˆ„´¸@¯¨¸˜_Lì§i ¬—7šÎT©±•££RpQp¿~?8X„Žlol|¾l˳e=œ)‘­ZA÷ýû÷W;Ê+ëë1tŽ; ìììÀâSJ&D«¥¥CIIi6ùcÕ×ü¶Ä |ë•NkÀPǯ_¿´ŒŒðèj‡ó’©í¿õ­‡‚äÉW­h_j ¾NÂçW^Κ)™„ó©{õSËíÍÕ»plDXÅBÐöP‚–ÎNx ‹‰C©¸[wbbë)1ˆD<.̈ˆˆ.nôéT…¾ \›š›÷&ŒãÒ芠âpfDHâò ¯²õ}íEIFÎmñtdS7EÓf ë þÞ•òýS­ÝÍQÂwcÃhyÚòj)¯ÐD€`,§=õï&NYדíi­±ïhÖ{31±ðRR¢PÁkoO3Ͱ?%´5’²¿5ì-»Óµ~>¯pKŽ¢Vv¥˜,ݧÑñðü³³_ìÌ7tÇÐßõ3ãÑ·¨×@G´¶µÕ ÐSQ!ŽjvüZíÆÀÄ”u¹c›wó>?w&edÄŒ¡Sovœw÷_Yуi ¸°±q>¥oá`±ec¾áéÊt¶šFk¾Þ}c®®fФczàüt><]4|éúâ(–ËÑbS¬Ms³/Ò`­³-2!;:˜Xè™î™*[ës¼ò£þGk½-É<®O#»``\Ow>DFbųYÞþD.t)‰àLa‹wºuÜC '†…MW)3É€MÁ£×ÒÖ&å´Û8hæÌSÌoþ‹tps6¿ âR¹ÔHfsℇžïöœÜb¦òƒ\–$t.4tx[©ñðŸ5„˜t;üÆ ¬:*˜Ÿíê}“€‡WFuuµñª²um™P–Ú1Âßœ«3¥Ôi„ùOÁø/;:=;‡Þýž66ˆ­aéÖAAb>‚þðX”~’’ðpþ9ÍŸHM}̧u|¯¯É~ïƒä$R@,/—óœ/6yFÄõæ£8õð/:::77·ÍÝw1tý ŸªÕ:;¨©%JjÔ u =äG ñ¶ÙERRònrïh›gß¾û6½²RY¹Ú.gai‰L­Úî-úCþƒ³3劉–w}7ÕºVvv4î;îš êÝÝX؈¾V[#9wfë)úúŒq€WÈ y\äÁŸnŒå'¼ò¼½ŽY»4œUâQÒ?,__Ÿ^º(ô UbØØÞÞ.`m]Œ„¯Ûé¤áGy*œdng2•Ò7ào§‘:žÁøÊÿ`±°áÖE›+""â¾/=_3‚ï,I¸Ä­¬­7oT5‘>|øð±¡áN5ÿˆ1œxáô´©¹Þo¾öH/?ª/p=n/¤ çëÎê1~Cû7ªÅ«ý;t5õô à¨£¹?­ÍÙA“©ÑD)ë@,q9†uô&œ æË~ËàÁåú,28:ú¡ÐRªz¬÷÷7UÌ_’÷)—iö!a:µc0}|# \(­ËcóÇœÇ<À¤ÁÁ|Šr9ÙŠšspp¸ígƒÉàc3º¶ÎÜÐf`ÌãÐ\ßÅåÒ³üêÚŲd'‹ràû{&èt)0óò¨AÀû--éÄÆÅåœXûøù ¼{‡¤÷Á/[ÊO’–ßÓÃf4ðõx½¶–ûxwzy¿‘ц'”2˜Ý/›@:CJÈaóÐûŠ‹¹X£­7êý••ì@r¦Ü±²µÔÓ{Æ{¾ÀwUg»ŽªRjtØì’RßECVNN¦Ä w™ˆËAÈÄ„ê!¿Ó&ÃmU-.*a€¿|®7*2Ñt‰CU «S¤"§CÒ'ÃÄáR¢Àt·†eb#Þ[\,†‡?ð’§ÂàBý#9D¤ïò aâÙ Cݯ(ÁX=<øÈ89evÞàwµ¶¢?€sѾ:=dwu@¥Ú !`ÛÓíü$Íl~ K!1eÒ×ì7â’“%ëˆe )ÉD0èß{é([f2* ++»¹«Zaqcçãã3”b9SyOUuzhZE…ždÕÔÔôªÙ KS¹ð{·ˆVç'Rè„lV‹xÀ\0MÞpƒe¦Je|aä¢èá?z{Õ`WSÈõÎhZ6§ôxýÃ8à‚Xy×aÆ×`öú5ŒÃþ\¨ùtyÓô4¸‘ÿ¹eeeƒùªlÐ1;Fƒi°œ;-þh䌌¿2|ÀÐjF:këèˆÙt..+ÖÑÑ1öÛÙ1Käó¬ïY¯“Œ˜ˆ“Ùë·€žL‚¶®?~TÔäo4ÖC‘?°­aŠÏA梜íéë.¼SøÓЗû_X$ƒ‰š3¬Rãå{u.~¥ëˆ±²RÎG§K—'®`òed©‘ú™˜:^㵎ÙçÈHÝö;&íæ‡3µÎXЩŕÖËsÅ0ÐÉ( È^¾Dxûöm,³ñÒöêÊJ­õ{~t !o#)š~þDd³˜yq°…øxç¢á£²=OX‹þOlèj1ôší@"18,ÄÐm ’oll|ýúÆv­ç 7HˆŒîËóóב‹Û ËúO5Æzå"³·Ó»Ö=+,f¡#$JMFes°÷îxYÍ&`ÀÒâ!Ƥðh·ø-.4yCG,ýÊà°3ÁÈCrªùxs8"11Ät¼`±¯õóów€;rÏU:{i_ÛÙ‘]_Çÿµ12¤g¸®Û—o·Qub`0`mŸ31˜ûåd;}°@Ýãý€mó°º1@߃£~Q•²¾ÅºlˆÂ@oÊóºQ™MãR#?ù!RT†KH”… è÷£Ü<Ø©Ö0Q!¡gAÇ@ Bĵô¥¾ä-<ÌÃ8qÅÌU$$$ß—r™ðÑÑÑ7—'à3á›&&*­aš§ÊL}9í· 5û `ù|üøq¨#ùìz÷úÚM|ç#ˆZ-ssZñxæ»:›K›_¦1î `2<«í6Ó0:ûçïöS*̧)F€,*-ÅJð6.nýñã±BMzeeeøÓÓÓæ\…<: zuEô‡ÚÀ|Xÿ)!áê'~Õ …¥«G=mòÝ–=!}dR-XWx  °Çœ¤ØØÚBÙèi,Y¥FG£Z.`ñÐy/JÍ&eÂÂpaj_¾xN!•L0LAA! --½iº0ß¡4Xè ôeÓüü]þØEÅîô²ÏT™ ÏÎŽáꀧÎtÑyJ)èø¬×âFSǶÚËí‘Õ Ð¹£¾|þü|bR•¨šì_Ÿ!ñCðúÃTw‚ -‡Ël¯,f,³º‘Bù½=‘›H)•¼Øa:Q±)™X µ^–š«’xL & ô»Ž(â²Õà÷Rݯ`7RïEÓ<É>¾Ù©Âr¿:õ§ð"s^þÕpwËÏbª8µ¹·Ö›(Uu^‡––6»eZX‚µ:¬»Âr¾=S"áKuJ_T»‡%ó*;ÕTB2ÃÉþ< c2—ÃŽÓº92I=*ð6µÎv°ÐK€dyddby\Ù€Ë}¥÷†@"ZÏ0èOF‘““«¬¬^Ÿ$˜m‡ÍåtÑ<Ñ,6htk=O@cJ½:Ým “Ûd^­ü²œmdé¢12™Ìƒ—šŸËǧô[r*T¡ټr¿dµÛ. -eë}Å||Äß-d Î\ŽÉ‚üü —g–ÿÙ¦ M/NM¡„¿ïq±Ê=r6oéóüÝ£l3a9ee€úØ„œv8PéMD*ޤ:¿d¹:Ey¥x=!®¢ß ð0þø÷סӼÁQ¡ÕT“ôÑÀVÙ¹Á-W:ߤ¤'Šß«5uA»©‘)š!÷Šôº´cãñu.íø ] qtDÉa}½P‰p¡nEµ ©öÏ5È ›@ òŽŽÆm݆w<ã|Ìd@ÎiIL­„ê[Sã ДÛÝý¥››ÚÂòòÇÂú-_j¥=hSz‘Vs³Ž–ŽN@¹¹ú@Ž9Ô´9šG@VG¼þ\‡íá½ó_ÝÉ¿ÛÍP>GŸ>6ìŸkÿö6éwÅ^žH0ƒmló;ÂÚ©ÈPóïJ§ÃÀp&‰z^(ôŒr¾j<ÊÍ›w¸ñsÄÜñÇr£°Âˆ“ü°š¡Ð㽫å 3£v ¹ôœšR±²/óÏËã¨&c9Á #Dz:?P€£©iÑh°ù^›ðꉉß[ÃÄ…„Že‹‹» ’ÔØ÷'ít B«òÒÒȨë¢nní˜o[ívŒøü ‰ ŠæŽ2¸‘U\œ(¯Âú)ïÖVd Ru.-~×OqëZFQ”™Ê±s©ÿK=ä 9’0P|gJ¤^dp;%nm},è‡l uÍ£cú2SU¨{ñãGr..Ñp–TA¥b»M ·£^^f 38Íùö‰â{33„O#Œ‚¡Y† Pb°û±¢‚©ÚÞVa«ÇŽD £‘NÜ‚‚²Êb"b*ù-ÞÀ//ÉÉñ¡‡À|‘r€ BÖÉêò@©øŽ“PTÚ7¡0[ ×\Ћ×À´@ÏÊ€5‚Ñ20xèééø&3"*âÕ|û&N£r wºWOB‚•­ð™³_:иøÆÆªžóîq}ï4pŽ¢Í.cÆ{?@ÕšœnƨL°FÕœ‡G!Èdtì½R~~¾ùîæ©«äîg“àô 4Ê ï ‰Î7èBcg¢â…·`æ`Îö«+ …m:.ýžíßðJ™™q’‘­!ü3¹Ù]&Â’E&î§;c½8¶k×hXn>ý|ž¸³ÕUˆD¡{iîWŠNǃõÐÒyeìÖdO®ÎîBJPÂLUXú¦ Þ¼Ò‚ñC;ó/±UM%ÇÂa:¹9ë ì²ÞhviÈÿõKLÏŒrýQá[/•ü_ý… ä²<‚4ê¸ÑO ¨×T7wtøf0R_\d×ã¡dô"á1~JÑDl¼_^®˜ý}äu!öøTy+ ì‹ t¼0m̉Üq!çç„Ùò&BÑEEE^"é,îoô››¹O•5ïaaa`ð°û¦Á'°îv„ó%‹¼~ w}¹m†L¼CnGs —âéd}º‰Tê?v™å}ïNcf»lTB'$Ûõ[4mmÝÃ%„Xꇸ¸¸ÀÜ+«£c.ùBo¡j ¹/$J XD¯rŒ$O…òMA@ðƒ]6öƒGN%• kQ–ÚCmÜšRÉ'ŽŠRÉå”WÜ’~Ÿã«˜'*ì»Øñˆ…ŸHžŠhg×ü°Ðþ3OÝC™C ÜSxó>Å(!Cï·ôSÉ÷•̪¹ˆsó:œb:ÜŽ»;UV]8=U¬ n#?©'F\ñaÆ–ì¦Î—h*mcã{Ô/¢*nwM˪¹nó;ÂvëjTÛŸ“‘¹µµáœï”¼p»9‘™˜®é<|8¡ë®mÜu¦Ý«. @—–†y0ëHÿŸð|[2@Ð1ìëRG<ï†:šw×èuoî|%2ë)n'.L†l(“áÕq62ªš€ìçûùªÓ:OI|üH„ @c#z$­Ê15HqQ»cRc¹;¬‡ÁÁÔ û +nÍ„Ûpf*‹°X‘¨•ßs4OM=QTì+*wøPV†ECó=uÜ4UÚ ¡NCÁ¿Â)pçË—D!ccñ$÷Y¸Á|S$®GJœ'^¾¾©EH3û <öûÈÒEäLÇëM+‹*+{|ÞØÝÁNÓ©s.-4ÁžWAÂ7oà™ñ{ÝçQeM›áúú°ŸÞÉk:ë³GÓ&ÈŸ¥‚IØú ’ßÖÏ×±psv&>¨}ºƒËaûB¥´—6Ýù¨|¹ÙWœ·6 MõÏÓº—X}d†8xtzK£JwÁŸ1Ÿó^n¼ ÁÞxsü)Wr›Û…9b˜30 {îÛ·íó”‰JküL‰íñ§q‘¶ÈEj×–‚\/ݨ©ß•šèWÙŠ.eÄh™N³û•¬¯F-üZ5kí0$çå…³¶~ÿFªáQ’$ZD'¦¢b´t²ù éÝÎ9ï<Ññqt;<€sÅHKiìíM•l¸½¹¼½Âr:›ÿ:ž>5µ:Òè•ëé5ö‚äáÑïEEÈÓåºÛc- ççä,ÀÕ 7B/ŽD¡§T‰¸Ê×»tMÅÞ)œïÕèNÔr`RE­%‡¯(YX§üPSó`f–hqo†M4 Íá$16 `cnÓÎegÒÃtl§½Ìôy,ùcÛõ0Ÿ$õw©éƒî½uî=˜k#oY‡C òÿ/u#Ž22¨hÞÿx°¸X ýÝ~=Á#‚„v›¯S òòKç‡z@MÁÊÈ(}Šáª‰†G&cWJÌ88¶Ãä¤P"KßpM‹‰e‹S¯¨h_1TõCÖ»´Ô O=ܧäé06jUŸ½‡dq¸¹?EDhn•—û¼yÖÜ'x8eš>PžQ(¯”Wæ´™q×Çd\iNÌl’¤Òrµvc¯Çíõ Óv~1Ëí™?†õ½ÂÚ_ë^ß:õ2ÌxŒ¼ÉW.FÂÀÀ³Þáª}üOiÌ£¸Ó™Ë!±íós®…ÅEZÕd¿O¸Tr¢wu~ÙÙÔЛB9£‚~0※’hë[ÐÒð‚û{âïƒÐiöé=?z¥vŸ¯ppÃêÄäÞçÈ£OŸmPrrœß€Ë|ùÂý» Ægk»»û’’«J˜Ê-ùB¡sòêJÎuÍi?JfuDJv4û.,^KÝ7Ü<~̨‡ÂÈT(˜uµž•2 –9¯ÜÌמ¯Øº;Úˆr>*j”H>ÏóEÍǼ3 }–ë/£L¾k}°lày“½›œTþÁÙ|)æ¨úà¹öÊÚ\£a Q»çëÎšÞ R5P™à:œía»A!È‚“ÊF¬·ÜLGÕ›¦ãˆÄÄa`e|ä©üä©>øû“só$iÞ˜ÌYàp¢ fä:›äWT ¥¥ã)]Õ¥¥ýª!&Q*œsAÎwq«¬! p js€.PXø˜VuйóæYZ&5++”/›Ã9±ìÅp¸´øá`^|ÄѲ³³ ùùóÖt‡ `qþ)žÉÈuš 18î¡UÚ½D Æ•hüþžTmuBȸŒ N¿tQ}v{*X“²ò)üSN¶xœR€ÑEÉN:Ô?»b•L”Ëߊ¤‹EdcŒ#ËÀoÌO •§ª¯â—®><Ú–^>Kíç oöCqÍ“`)ýÉ_8¾!ꢻØ|ø±ðž§´?ªz{I¿ÇIxŠ¡þsB½ó“q¥ms²åËÛMOž¡"HïÞ!Ùmé…ol´0ݳ9Û Žå»ÍǧTSyøuÔdqcâQjª:ƒøS?ÔÁ`ܱûßòé¸jÐØD—²R$›š›…ýš*P·,Ô\¯¹½ø)†bcü)Θ»|%SUQ1ÕøãöiçöŸ^€Ýçå¹|ŽŽŽÙ1÷_ z¿ ¡i)7œ¨>yEEÍ2*Ö'Å=ˆ–ÀÆçܯù. H¦v"Ø~ -¾e­§WV6W•‘[X ºÑîø<²«ØxØCHHíµUö»hq¡pâfÉYþgƒ¢p)w„M“%Ý“ ²é¶¸óBªT…¨þ|éÕœ§'‰Ë±Ue wÛÉtïkgçç:ºÃÖ€I¯oqÍÌóѱW€ºCÁâªq°_í'#°+EÎ4g‰ê Éx·£˜J° ¡ªÒ!ÿ¡—¶ziV–\YZ¦<PXW®õžwÏkÏ—Xa.ôyˆ(Ä7>´w´tçJ5ÄñºSK&¾©ÚÎÕ¦¦ÆPSß-¶œß6/P¨[å¾ÐM䈴¸,îù;Š¥ù;b Ë ç†º°÷%·h‡‡,â¥$|iiˆB"íË+]zÊï¡ûxíã{â£lFùÆ"½´Ôô|Áûê(øž/œ¹™µÞ_è´ X5ñù36ã‡0S*üdÆpå€J?¿x+˪¤äZ§#ÖÛ}²­~}ôÂl%J ¥ñ~0nh‡iahnÉô+ ­¯ÒØ‚©/ BžQRKkX°‹€O&ã†Vª¥U•rb²ì{ X¤§••™Æµ^¸ƒåð¬ÅmêöíÂpee©T]¢tŠižw£N«©NË¡ .2AU^©UËu(baÖ‘r1Îð"Q ¾´ƒCª±Êz±.ãÊzLó`1Ê#´Sá7Ø‚~ovK™€Òz…(Œ¡Ç‹K?w/TŽAѹŒ¥\§8ɸ¬$õûËòT9Ã]€ ||¾ÃÁøøœko½²ÛÊ‘¬/ç`÷ä}Iᮟ«•‘ñ|ª´¸-ų^fo XydXØç£…úïLÙ‹?¼ó;IT6šG^d®ÊLC£uY1‘…R öÉÔFg µ›Ýé€1-­à+Ðw@ç“1—"57»PEÁ;è1r°Z\c¹žµ7!¾|I°e®²6›¹’™¥)h]Œùz–µ =Ó¯ÈT‰FÃýÄèÒæÍz¯ÆG5»pï§÷–tà[Ã:0d°••ýúùøB n‘úúÌi¦:måÜ«]¨Bp¾»qŸ(§Åg`ØÿõåJòk"[¿‘ÎaÂÌHy‰„L$ÞªŸˆ¯ £–Ò>rQLiÙ4Nþ¨Èÿâu+GGlˆ^x¾--!‚ÄL£nÿ¡4úRâ ð¨p‚PÔMì•K(î§‹:¶ázâáŠ"œ7ºèO"©½Üî~ð˦ÝéÉh¦¸ŠŠÊëg?Z-z…Sx‰Oâ…3†¾Ú®ûVÞ—”•ÁcQž¶¦ðÈVÜ==Ýoð׸ºà3‰x¹Ý¾̇ôò:U”  Uô'OÂÀÑ‘Ò>Œð˜… =]Ngá5‰ò{–k¡ŸÝ1¶Ÿ¢P°(ަ™Ðéh°Ý¸¾Âø&k]ö²FC£ïŒG;&›¢ŸïŽ…ŠŠªØýŠú#a°cKÙ®P¯”qâ¼»#²j9¡OYކ³þc އ¬¬ŠÀ qʃه$ÔLUú+þ7©Ëÿø(<Þ,ÊÏ ž·/ë©_=¦Ä^[aŒóX©£Ëdµ$„  @ÄÌì€@@C­xsOÀyÃ] 1¤« Ù½% JÍ~Y¨(r/Wj%¯ÚÁùhí °N×§Ó„ö…‡mv”1¿Oø~{ „¬¿’&Ñ]^¡·˜^‹9y¾¾°õ·—Â!ãùsGÏ(~2¸ûáß%€o;ìĆ~xÐ[(”¤𾤾íâ(¸C}±}Ïk&•|ÔÃÃÉ€Žý†QbBBÝÖÈ_€/¥æÓ0›½ bÔ4ä——E~ý™ù*‹££¿K³˜„¨ƒé#d'4Õ Þñ G\œ(A:z C"a©sJ251±/ç[y «1¢O1¶òZ—‚›ŒFƒ°bÒXL–;H¤Gr3QR®þôW° ãrȃÑQ+݆‘xr‡b¹jõÆ‹]"²¡¬÷x<:Í>Ö|ðÀ·¾bú/Á:§j6ô=fíúDŸ“™(š¨¤&ƾ51I6Ò­qÈ—; ÆÌ‘¿OB‚ 4šõU½úK(ƒ.«öÕ©'é³V©€š‘Õ<•^ Z/óãïóñµí[Ös­v;òg ·4ßW®²AÔp16ò^á´ZÀÔpÒ&y>”ûý; t†]v¶°ËËþ7郋 ÌÚcÔ%LG÷EEDî‘‘/C²µ¸x³¨¸XZjê‡Ç<ÕÔjjSc‚[íùå/}dÉË?þiZ^®øéÍ?UT,Å>‰# }§žÔ5ã›Kžóͬav[ƒ‹D-kßËs*XpÒÚt¸€ JV›–’oøÙM "û¥Ù¤ :N”Óíi,—#öλ}mNµGòƒGßÛ,ÃÚnYÄ7þ)÷õ"'¢mä`×¶KÖîÊÀ:ìazà&d ’#ON·GÕ—ø¶e01‘7É$~˜Æ•d/\2Iy癋rTþ·ŒUAŠÈ1R öŸ=[™K\ƒ$á••e•–™Z¹¹»k£ùHÓeóîˆE÷«¹ìša³/Q9œŠõ»I+«8´Ú‚ºsüxWÖ/“Wö˜ÕŒgh胮ȫ9WKïÕ«~Ï0­ÙêYà›ÆÎçiii‹\N°kÏu¬¼õ1øù_^Xhêf·Û`ü"ÆRí`/ld„'?‚T_¯“JΊÈõ“‰`Dï1»Â´îxMŽÒU.µ¥µ®`ìI×ÎOeçýžÉ>¡¦£ù@²Ã£ñŸÍ{gM`Ò„D\µ­×Íd8Td©IM‡b:`ìû.ÆoÙóŽ ¡¬zŒ$úìý,IZßtÝ£Ø ™@ÝŽÏÚBýÆSe˜ÐcÈ#Ùðx=_¯A#Åã5EO2ïŸçêÄÞÜÝýÄ|ÚF@Q®LDOÒÕÉd7ÿákËtùÜTiìqåã•)²48ǼÆ*’¶6ˆ·œvËd¬Ö°O×^§¾hÿÊoZd·)Ô;XJ/ûç¸LFA›±ŒØXùÚÛK©/^´qíûXsRÎF/$™"ÙÖù’ÝÞ@  š–ãýùÉc A<6–€Vו-xù„bü‰g|î½™øf}æ'ÝO<<ˆ´LM,'£énPàÐÚ—[3Ô<¯½ÂH¤Ú­rE|ùÖXj|sp:µ°0 ²¡ÌÏjN–®_qS@ìKCK `ì«¢){=‰“¯¶çzó¡Ú#9ý2Èy1±ÿÂèJ'»a7âèß(jwt(}nšm/©Œ'ì`µ:Ô¹›šM³ n¼í»ùn^Xý£nËzy™|Mƒ…À¤ ·Æ!©ÅŸdOT²EšS ü}DŒÒý…1fZ¡9ò:T—WŽ>Iê-RÉÔt¯Sx©‹µšØ{âq†*æ'2þ (6­ØŠÑËö)æ{tl¯V®ãÝm_ðáéþ—'Û=û½0ŒŒˆPü ±»²<„ÊÌÌèºív«BY.ÒÓø[€ ©¨‡ÌÍóu–Ï?· )¨ªž*‰µÁÄZ}Ìëö ÜòŒS2Rvú0M›?õ«»…y›1“ÐöÆ_5“í±]~Àb­²Í=n‘앆H M#x4/kÃê%:%õƒ`‘%D&½žh;ùx¿€ïñÞn ˜A-ÃqÌ`¼ýFMÏ:MÍâÕ¿pQ x¿óíB!£2Nð«ÓËÇv~^ OTü¾ò†aBYåÝ»¿Ï˜Ï½¦”¤ße`Jê›h!á^ʃ¨nâ{=+œ}qùlK Æ.@„ódtŒÙ¤âƋ۫«¿EWãRÖÂææ3;fÌΰ ƒB„\åÇÆÈþ£–DAJS‚ø£oàþJp,};‰¸àÙž…@Gšˆdá89Z–TN–dÆSê(§K€v™ £­1MÈ!é­WÔœÃ^H[‰(ðÛ‘”g͵Ω‰tR0^†É˜6Ψ„NÁ‘Žqði!3„*Sç{5ËÊ h‰‰S:-~ z…ÅÙT´ ‹¿VÍ€ÅöƒvOÀ¶ŸƒÕe´Õv›F*s`fvvU‘ˆbz>YO}±ÎÍ,öCEŠ{ðumÓL6ç!//D¹ÛÁN‰& –Ŭ Π÷Ý}t­~(®Åºï½+¶Y%?8Ûj÷³ÌéU­>Ñ{ÞÓSbã…„€N!Ä*œyÂpi¿ƒ£‡6K ĕع*p8Éf3Ë›ãÅ)üesAþ¼©¥Ä×O T¤™Là$ݯ š{âšþ²Í©œ™²ÆOcðFfä“´úÀœÉ+˜ÐBÌ…ó… ¹¸ðBµX¤ö¦Žá #=Š0¢wÍXRna)ž·l½3þc¼û”WÌŒªªØŠôÞ²C«Þéª 4zð4Qp<{¾¢ÿÊ wk›:KWägìíàW„¤?áU;: ‚XÚ˜¢ ŒÖfh(WJåørRR< ‹`¼BCq¸y,q¬BÚzû’Ô2CóϾj¯®Í½nðÈ+¶ß¶e/ö°î‘ý_`F›à30ð:Uw4(}_ǹÉÀÖVû¢&ñmú©+ë1K‹ÔuWd·—ÔÀ¯Ô¹ºjo¼!šF™›£!f~ô»ÐF¤_62Âý%úÖö½Us·ñ¨ÈÞ? ÄòBB§&[ÛBÓi@O#Jó'"¹oÃÎf&¤8f/ž<ƒt´.²Þ×' JΔ6¼É`1ãDøb;æ¿@Û²,i ä‹Í&%Õj?zÞ¹²k¸ÒbC(§+Ãô9E3hb ºÃa lÌ<’Íù6…Íäy‡jå`A}ÀcT‹J"ÙÈÔï¸Üs ·!ÁÁÁVäqCìãߡӉ®ù]íâMI‚8‡õ’ÁñÎfØÙ\•݃— 2aÞpËÖ zú’%DƒqÇ3¶âaQž6O«m8.» ß±Ç1à„á €LÚµk¸·÷^tôG›ýRkïÆD1Oýõ/ØÔti,y<Óéº:õjûá¿w#± Š&Ýô†‹þWÖ7.OÀJÀ6ðÆïSñM•nJ]¯ó‰Z]ŸËÖ+½þÛœêƒy¢Œˆ8tZOš—–—«˜Ã÷ÇÓxܜ㯧ø—îo뫬̫´"ų̗÷ÇÚzwêTr,1aáU6¥¯Ôâ”XX«oÞv1%é5¸Ï~/®4îƒjß¶ &ÊL d*ih櫦lfùäDò@:„@fëPÆb@p·€P+wj:³+ðgìnì÷À­±Û<»rø<Œ%qq!Eà{ Èè]ν/ûï?4ä™,òbÅg+’Rî`#=…ŒL‡ð4ö³,š,Qßp‚È^`·eÎ3-x:’VÉm>›'é S`f²»úíÍ>†•µ6iømœ€ŒO“÷øÒɸ¨îéNÄ¿Oö—£7Ôzö2šÖê̱ß&”þ3P°—û]Ü·²’&‘/åƒí:2 `VÈÎD‰ ”dq¹œØˆ†[€ø‚75ˆì°.ÆÜÜÏÅaÑg.©HyÁV tvˆ‘®@MðaŸÿHF6M¨?¹âB§µ¸!’Y¢Nç￿Ǻ%Ìa+¢5ö]»÷Òúf=E·ðd§Þ¶óaè“—ô…­‡Ëo!sðŽ.µR!Gþ#TÙösàdCC£ìdia’ bD“óþ·ã½Â—œÄUóU"á2AèüúH3½²ò>—ã¯÷ùÚÚÄÔêT¼zz¶;;_T^ض21!}•5†aeU´²/c#â³°õ°0Xp9WoÐðƒ :æÓaüy£KUë–£”üZ U9˜á|sBmt„ÑŠtG»Y~ø;S;Å‹: ††ŠíŒÙÃß¶¦‡Ÿ6ýмȤaÁ·qŽÈq^ XZ*H+•‡%  ¶ÛÂàq©ŒãusNÓ ieG.ø^΂ó0|;OâQ¤Øs€‘òÔaŸöÄ•˜¾´bdbÉO¬Ÿ>»¨ÉOp°µÍ>©Ú¥.tó“‰J¤Ò¹Þ8²2“ñï~–èÞjb¦x¯¬ˆÈ½úÛË·g XàJëÉ>1šÄíǯ]xˆõ€v¿=_fá-øSFŠÃÃå ðþÁˆÃ{¹S¹Eÿð¡]k<‹ÐY ¡‰ƒ{ÙØƒ¨#££C²¶V‚øTšjÔhv W½ÚNLÙÆÜ,ÎlM ?Ί¦¼~Æ#cã‹Ì@¨¦$ @'&öyûOÒÂ:%C’[´XÛÆP†\]nÆ%y ^ªå|ÔùZÂËóüÚZLÕ ‘Åa)´T9JWfbmmß0ýèæf^‘³½å’5™Ôô÷Ÿ?©Z#È š2ø2°y¼1;ýü*ƒ‡›£Ý΄ÆF€Þü?JLi²ÿvm×_ý±‡¿É"€¹  ¯w"lƒ~NŒÁR;E±d`ˆ'>xÆ Rp3΄ÎNìÍÓÓ°ùªGU¬,´J+ZÛc-UG„Ðùå ¹¯vžq@Š_¬éÉã=®y‡QãØ/ÚŸ¼÷/V¦m=,\Óœ³!e‰Tó··< ¿ƒkø† Ë•] ÖÕÔ¬$AX5`dg4^€¸E¸Â¢ “L›òÞ7Î,il~ ¹XI²n=?ûöÑÜ¿…œ˜Œœ•…¬ôð@éÃÛ+W°<û,Á‘™.uÄЮ< †tNi,“áÿ¶$îêù²ç.P }ý³½ ÑTˆîÒEõ¡ùüð FZí;ðÌüFFOk ¾o7¿§(Ùµ"ý"èLt4.z Í`C7Ï{Iòjusá~€Œ™e»hL81‰­­ß–JúÓ¬ôϯ© ‘[¾¼t×Òo£E=¶Áð˜Óލ=tÛï/ñ÷çTöÙ@á¾öœ*~úÝd,'øÉ®¯péýËÍ«dã)2dCÏÏ [Ûôçgâ|¿=ãë Õ“%7¦Ê°ªí™¾p¹»µr7ñßeo!h Ê Kψ‹ÉB;f¯O"›€u–Íi•Ÿ1lVYp}¢ÿkEjao/€V5—S¬ŽË‘îAwÌ~+XwO5vbIIsŸ0ýS‹Ud\ÚKXÆIeÕ`Ÿ0Aû×郋3UvBBj­suÖ½u÷””\!5È|é¿? úiýKQÃeSRýùªÓñ?ÛƒE½jb ðkÕáú°Q$O…²ò+ ?k‰â÷þ§“†¥9­@GØ®iâÚæêjÏ™\' Ôéa½œÂîÊŠÂϯ–ñ™HèV3ÒÛì>Õr¬ÅÅbv3†ß^óÜk%3Ôͺ÷¨Ÿa¢H›ûZ?I(`øû°¬&— âdå G+£g§TÒÓ‹9,‡Ó̱ðYpìSœ±òºÈ®ýØúÜ9ÔQbâÂhh¢çö^ÁïT?ìßC¢1…—ºÈ|9„xÖn´E¾³£¢³!ý ê#ƒnuS_ìS—W%†wx1túˋ£™°ŠŠ&Ÿ\ 9hZþk8ט1YéO/€äÓg¹êæÃÜû¯vÁ‚J&í8§>%ñŸ­¡×êŽ|󦳭3â4u—'Û4vÌ&:PíŽçòè“Ýl¼þ­hfÐØ°:°Y|Y m'-¬®†¬vSêž[y±ÌÂ^¦üíìííô«²£¡ šÖÃtZÀ™_¼(ËÛîíJJBGˆÈ£JHKû• ,!\–&(&F\:¥* —#Ì× *ÇØdÿ{¯¬šËµ„ô‰¢ÔÍz WÆòe·7&‰-xþ¿Ñ¿$WAî`DŽûåÔˆ:°rž7QN„Ÿa’$ÃçêxÐqǰ°(ìDýQ¬¼ R™bññùÞMÛ¯õkEãìz=W#ÛÆ•Ÿöùs4}}ªßNšÓÎÈQô%°²ÓÓ¾mÌ&§&\ÑCC©ß„¾ž'…ÛºäpË$äçOùóÃŽah“íS¤íH¡ÏT¥d Ñg¦]N覄õåqÕX÷%þ³Ù³,Ü— %2«ÙDp@a·Ñ“I’\v{…¿²†«@Þ¥çl4MêàãL´1E1[[Û[]²—ºô¿úh¿Š¦…¼Á†ôsÿï" =…ÙøÀ¥íÂpõ>[è¸;¨'òxø{N~ONÍÁv¡¡õÎÄÅauô, „æšNq)RŠìˆ hëY¿›B»5ÂBªöÑƸù_â’Š¯³˜Ä÷Ù°âpÕᢥE)¹ßšÿ’¥ý~c~YrÕ :Åû¯+íqXBÛz½¼Âh*?-¬õN‡õôÜß™áPÚx–¨:œطŸ7X€Øáéô2î˜Ü†²„¤ìçû¤¤ÛÅžw c½ ìzŒLHP͉Œ|ÙzK0œËɯ×ÊÊRâ‰0ßr¥’Ë>øÜµò˜Ã†œ÷öü¥xÒ”èûÙ·òMï—/_PËÝË®úbP /ö¢ ÔA‰2‰ 2zÉšê© ŒÄÜáÍch“—÷æ½/ñ­ ÐbN›©±œehw)2ÞAÁ5AXlº7—‡#r|þ9þíÇ%³Èï›$‡©ÊYW—ëþ~âàPûª 5gTegÊ5Åþ«Ë*àÐ×1C¢éoÒµ—Z{F>Z\,ÑÖdN¶ýg£Æ-åzŸ¾ÖîÔ,´™ÕÔ$û]ùð/ãœÝU9¿™¤^SÍ9¦ ÕGï·d`óãþêjL®Tp„X[æRfaa¬érö ÐoX”"ò#çWlõû‘ÿˆ%17’“…ºßpç3 “!à ü`Û‡‡Pý;ˆ¬²Šãé³V4¨q‚µ‡äwÍU–ˆÓ“ \¿Ýq¾Îç÷¦X?÷Æ ?Äç|Ü;°Hž|óŒþô)¸°ž3hÞƒ+PýáNɨ½Ÿ0‘^5EER?´y¯ÉQ­ÛëÁÿø.×2CÛŒáÍbÃ~áïê5ÎÎ5­¯…¼vüíÈʦ Ô=ÎËKÌÝÒÏ(BµªÏÁyJ…‚y£M@“à_ŠYàr·œíà…ûÓ;áâD%Œ©+ª{Æ}þ —:Öe³ŒýMU.âÙÁ¡õ‡7­]´#Ç¡Ä7÷.OOZ§ÊˆV“åååu¦ËÌæ ×Ë•kî77» åM^ìV(×Þ^†¿SéÇ9=ø¦ï Döîx{ü ˆC¨sÌ…€è·+»s«ûÉ—|ðh)ÞÔù†éžšPSHB´ÔÕõE%²Àü&Ûrdèè(ZY=uTE-ƒS&qô]%¹¼¬¬Ú´ h¥™åb#Y€£ÝNßc£×"qÒ‹’•Œ?°s§ÑéÆ}±‚UÝ›¼‘Ϋ}þPµvDI•\^ÙùÅúc³™J´¨(•ž8¦ûL†¨ÂÁ¸c¢ä&™Š8 Œ.½ “çÝÓ”:øÝÑ··D¹ušïsøUTþ‡Š“‡…ù[Åq)¹¸Ö|µ7UM½E x|nºã>H›˜W6ßœ ëF·O ÌT,¼}àë»ê´¥ µI!<J¶©i»Èrž`c°Ebƒ}Ä7zjÎq:`D%©ÿ8$‹Ì´™ÊÌŒ>[s4ŸP5¼}ò˜ëTðͳݿž“Éz[Y÷ÉÀ­^Õ~ëëaS·‘ÐÝÎé¯R™‡¾iça´(¯wålfgµŒ'3W€9¸Ú_/¶ßÖ~öl…ìE'„tËŽ†Ú‰=×Cýy€Íð€SûO^µQ>zv+:º(á3%Àº‰§Ì54sa &™P9Q<{Œ˜Ì™„Jñ\¥ì‡oYÙs;N¢  /Û'£’YXÖ(Ïev=.7™£i:V»M{.Óüð‹Í&é¹bÂrä® צɪüâx–:p/¯çÊ?ž!÷ó°½s#”#óÆN;sî÷…ff‰0ðñ mz-/¶ïùÂߦ¯o¯œ{’o4wæï(~¶¬®<ó-- ÏßÏQ‰kû$†ÒÅuÇCµN~=?.v…âùKi™£/3¹úR¿·¨§+ÃòMÇÅnÎ:=?ƒìðÝí<ð‡èœøƒDˆHÝè˜? «SlЛþßYë £TpüçÁŠK¤½=Tå"-B ɦf¼ˆ×!”i¡r~!”ÝzŒ_ÄX`¾*P«‚O¼?6 0½³Ÿþƒ†e¬ÀÊꪙJ¿EâJΦ#›aßݧÍ ÀUÂ/X>w9ìZ@5»§–Ð&:PÊØœ¸³ÇÀÑ4 #¸½’Øx1‚¼aç¢VýÅø-àú}Ä)üëÜM‘Ÿ,CÊm¦rÏhØO®Ü7spã•Në#h{CŠ×Yeƒ½WC?ãQUUÅO#¿õ ¿—§ïßû˜ äe˜&°w"¥ìÉ«~¸ÜÝØÜ£‘ž÷0«£w{¤;Æ ”"ÝŽ÷¥ÆºÁÆÃ—ºk=Z ``Ù)Aâ°X÷-$Ó©%þ´2bÀàrlZë¦ÝâWP ‰"«Eö‡pï|æxöd|â ¥¾”Ëóg+KSe˜0~]БG‘±’No3tÀbÔ.£\ÖäIAZn¸dá­|0t:ÜZ܇X6zù£ÿ?(lQb2º&) ·¢* šjð‚<¨”ÔÙÕ‰ 5 }ü‘3Õª-å‚ò`¯¦aqc°íàÀ ›utéttHɸ« ñKÌ<‡õÁiÎÙš¼9#^^v±*Pç/hî½. ŬˆááùͶ?4lMÊ8wæ=¦Ë…—[¡zC#CZ[#¼EÅŹãÓ.Ê?½à{wÕ÷˜)3ï_Ÿ¿ÑTÔù¶¬Æé 0=´såuoŠ®G¨ÇÀOɤû»Ü¦ñ$8ZòK@›CfY˜ßÌT½Íµ5˜wÝþ ×rŠ™²ŸSG ÝB:†?~ Þƒ¡UQnW2»Ü˜™|ÂËKwpê°Hm‚ y£ü)¼›K{\NT˜–ê=à€'æ“VVSÒxâWe+zË,ubÕ:OGÄV¢‚‹!ùÇ773B'šB‡¶Ëà€µH3UR‚v2€±ªvtÄâÔ)‘VûÞú‰Ôô “¼®Ød;uy@0—ÓzÀ©X^DäÞÐp!´òõ”,><üq¾Ê$¼}@T6a}9ÞֆЍLøízf»=ÔÆlÞqÞÙƒƒí•‰üSƒ>äµ¶ž#l$Ë&ŠŸA- N‡wºÒî³Ð+HQ< ŠÿeBùÅKuØ)‹%Or;x÷a=ÜYffÔþ_ ±ißZ_ÙwöÀMÚ›ùEìøä±€®;_Q‚í%ÁÓZ-¼í+ÿÔc\m·ùˆ¢šÍ¥ŽøÞ½wÀsa4#yû† ÚÁ%I†¿‹ùuÈAÛÐßžÁîìªê®tþn8è Y?j ƒ á^ŽüG<Ç;Hö]ûñt¶N.ž÷o+„å©vÄ È˜]ªQf±²Í³½ŠæJçÛH%š÷ÕE[-ç¶—é•…Û¿ ™2³Z%¿^ð¸é#•-³š_.]žÌ§G¶˜K«oM“ÿøñ#¾'Ð7—’ ‹'3…:ÊÆ‘/bs}üÃðþCY @0™ß25e?ßïêrÎÔ$[naŽ$%Ei··cv9ØÝ ¡Ñgå`°¹ë‘Än}Ÿ””tÀˆY@”`lL²¨<úkíµ¬÷\w yQQ‘€õ¡¦t^!ˆ9AoZ›eALá͘ª¥öp¦Äɯ²Þ¨7zþåæpé•ç/RH1­6H}||à‰|÷"óÝÜXÁìC‘˜ç?ö˜ *0yaýÌ;?grº9!)†üÉïªÕˆøJŤϖ4_õõqòFïe»'1Ó¤·Sððð][!òÝ:! õõs3¡ ú]4èG‰y‡„¸ééa/µèø%7´P×ÜìûÂÞžÕÑ„ #‘n{ ÛY(öÉÙ­Þ°¡éö=UU4l<N±$#“}©?»¼!â´k #âÚZÝ–Já%ÚÜÜt:êeÛ^Ý–[f0Ÿb6›¯'Î’ÂãDäùvg¹?·œ–{t÷¡A뵌´,œákt8ë7¦(ݬe¥c²ª%¡êÈ–m,ü*ei½õ¦Ïãxfv²2*ç~ QÅ–f¾x©÷\?ÍÜÆöu@å‹gdx¢ÇGW-«0L=O­ üÆ ûÖnÖÝúvyRl÷Ô8P‰¯éyﮟyœ“’ÌVshï(ÓRˆW>À¢œ›ÌÅ)(¨ÿX¬«´´èïOÊÊ*´g 2bÅ3:´ýÍÖF,ãaéÞlÒWÅ59–D]W׳M¶o>ÏŸlß×ôLòÞnhÂÓLü(;‰$—Öº3‰Ö8|Ä:¹ÄÈ¢c¡­ [ ÉFÈP‘¡gB’RoeWºoú~.åY£Ã¿kfCaã Œè{ŸËagÁû˜®€4¢[Åò‹¢âØõ>ÎFFèçs1d‘O29.ÜòfN8ÄN½þº(»ßï½_~Önna{ÚæsV¡%_œéSÓù»œ#q°'''Dñ“Û”ÓMGRWòOüÑRøm~õ³ÛmŽŒª·%9ºè6ûhŸ§ˆhu¢GÍ:ä²Ír9¸—–6¤kò±Uµš`é®O8;¯Ë((À-¬á­«p63 ùóTw©!ýpÔ×W8ß)Yžø±jz}¹-<ãy‡îãÖNrÇN()9–¤÷}|<½²òG›ÞÖÌŒìÈÈ aïðððlÁS2 fãÖÂÝYrõ |ÃC7JÆw÷ñx!mQ[{Y¨¶\^<‰SVl¦4oÄao‡ÁÍI ™doØLãÚW9¹’bç£^8Ý:׳Ưü?qEù6¾M†v¦¶ÆûQ€E£Ovû¥12¶íí wœ¯®}²E¿¸=ÎmGìyMB˜S¼M?µ²šÔÑ*z8eꩃI9ÉlÛWœÆúñ#"³›ÔÄle© Îýû#ÖÇñCá\N–0³wÃHƘȗ‚Ïãb×)5ÌaÛ>9r¢Za!9T¶>QÜ»ž0Õß—Dó3¿w8úöŸÝ3!;,,ŽÀlAûùÐoÕ˜Þp˜^‹tgsyüFFÆ>Q¹=,OUõvîƒhk¸uÁ ãx|INêˆÑLn¯²]­t9Á‡Y(ŸvH—ÁçF?:©‹8ÞÜtNP§Lð\&N<ûJ»™(öÕ"*ð¿8|ן½á<Ûoo²Š‡eŽw·ƒ—ýuš}¸ZZJ²ÜÝI×ïn-Ñ®¯¹ÑqfRÑí˽MV*IÿöMÖ%R`y¥¤ÝRAëד÷[Cœ;³WäKK²qïC[Ü‹t„_eJ!àáVµ˜:®í†bq—”¼+²œ‹sãwyIpõþlOR:Ï2d-g4ås.ò†îIzôŸŒÀ°W_y–æ08ðþýóÍŸßüBE ž°IRóÈœí£ù~DÃÌ^æàälœ®A«­»ÒÚQÎoª5/HÏÞ`[Y×ô’t¼wq±nýwæCs/òËÎA±±#‹ÞÍýJ{à©~ Ü@AÁìj6>FĨô Âëù«Å³†³–ÏÏå¾-o®§¤´Ö:«ÖÕ`µ‡BsóÊx(éà`ã¹cgÅJ0½$éóçX‡‡âa©ty®g éÈ’±VþMµíš{¦ÜCZ&&¬¬æTüê³£"ÛÒdO_ÏîNƒ[-|R+—…Xì~Å6QwÇÎÉùôņÅõ¶f‰UуT Öг’Ìtç±ñùÊdóꔌ¬õÅ’þ°e0É0~šßÌãßð}‚s9[Ë®ú'†l´É(1â$ E5æ`õ cÞ Áýø!ö ,Fn.lµ½móW~6âz‰X+¸Ò©Cxxé–þB¾™™Ø‘±w©Ð3¤lÄ:¡xfï +»{i[[ Yý°=nY/64ñBÐ FBHH=àKOªíZˆ ó…>!¯Û£«Sý…Q%Çå}ÏðŽYÇ+¥Vh–ööç5÷¬he•qîÎ;4®WéÏ´Ž7šlüõ¢“pòëŪ‘>„FrWXðЫÆ‹ñ›Œ:p0ê*Ù­Šñ ž#° »¸_ß\é.6£QR%!ÞzPÏ’mü G §¯:ØŠö®žÐü ™2ʲŸMM÷à#S¸tTm^¾xÑhZXçø¿Â™hL:\UFEå%©‘ ?Õ—ïk++÷\j-4z€ÉY>ìx!#÷u ®Þ!~'}æ"à½[çË Bºk P–ÁJ‹äÓLŽÀ`M/Ã!gªî!çŸ~Ø7Äa6p¯Ë36+Öw&>4yõ´´@/ŽÈÎÉiÍS:lF¢!Kúô)ŒëÙ‹rHî«ÓÝ–"í–…ÅÅoFFGßU˜O?ÒÔÔtrrzJG'yénnN›–žžª˜·¸¹¸žâIloopTñ8C1/"&Æð t:}ý9Ù^Õ:1òãW0yJ…"`…`š}‘¬ìíoò˜U¯åæ\<1쯴¬wÆQ-ïi ŽÏ‰¯Ûa×úvä­ËéŽ_ª à‡X®3~Í[C³IF8Ô:Ÿ6ëµÄoßZµÖûœ•K0÷ê”ÔÕ!Ö´]HIölåN»'çàÄýž ?]Szx½÷Á­r±I¹åÝ£œœÉΟ¿YÄ!8®ãþt¶?ÐÇ.€Ôß'€ IJLÔ-TÆ!âj¶Þ™ÀLä:cõ¸¶~Â{ñì~aý%;±Ók$Ò‡õ—TH5› r{fí¡Ûïé¹/7öщoÑXäSFhl\ø:KÕw¹#f©¤Ÿìðr›ßi%BÛÊÁ¡™m>±-WAóuêÆôÚî/Î&Ö-þ?̽h÷Ž÷|áÁ³çÏù Ç—«Ö“[~­væ)ÑËÊ"gaÁ  1+Ÿ‰g1-r=³Ø8qgYAM«úæ„D[“!м>þþº§;“0^8ÔŠ #9ràG°0Üg3¶ÊU6Ð6 !!¡´¬,Yþ¼ò並'±OVV–<+ø”tÑðG0;Óhá|·ì0OYYÇ ¶µë·ÝÔ #¢l÷ad¯8¯ 2ÁÆU|¢Úfy~eå.­¨è> ‹ Œ—À"|Ù/¯»õË(m¨Çv8ìØ{4×Örƒ¤“§dd?XPÈרxæÊLñ2%Õi¥¤…DR­|*I<5Ýœ]U¼j¸]±ÿh?öçí­4ϲ»­íì°¹÷˜kÜ– †Žº")36íR|óp²$“>{¤DD nÙÜÞÞÕ67 ú ¨3)÷õ÷NºÐÇæü@9v©S®qÈ0)##'„'²²*ÊÎÎF€O(ðçXZ^†…‘ÑÔ´–Šåóä5èÝ*7è‰ý‹„û” ¯ªª* ,ŒU¹\hô‡y}ýúÆK6Ç,ÆÞáá;Ý’q ™õb½»Z›UDa‹ËËÞÓ5(Ù‚ïßÇ17X§ŒLN• ÕJÕ»üSó!èQe›5¹JÀ™™Âws,Çàt •*O%lgWš—‡ Wg±ÙW G>ÈË |üÓ™™äèéRãÈÇÌFŸ¤©¢È¨¨ÄFÆÆXU=‡7ããñ1ppžËSEIçÈ“qrª¨Ð={&TY]˜$iøÃìíÛ@˜¥þoo#‘ËÍóN^)¹¹ÕÂ<ÝÚÞîÕð ØT=õ$F2Ë#^‹g5‡GEe­©Í˜úáQÎ2ë_EÃs÷-úýöEBq¹uLB8Ïi,`™ªÕ“Ò¨ªéRfV×|%×íe¬†¤Éþr{¾½ª‹£õàTAÿ ý†;ë_ÝôKq†ÉüüüC×í@JM‘'·;Í q8y~GPÞ¿ ýÓ“†¼×9 kŒ²ÙÚ*‘’B/ah`€ÈÇÇg¬²çÿqíGŒËã‚ !u%ûÓ!ÿ©wJ ØÚÐ+ÚwwigfgÛfªlQ>“Ó^õóá ú£âˆeÈö¤ð5´µÂézRþŽ¥÷Ck=mB’Ÿß©^N¶ãßÞ\!°ÀÄÂJ8ñÎ<íÈW­úðÜ «ùÔ3Z%99r\å§Ð’çÊÉ¿»Ê*‘½¸¾N¹´´ôí$:&ÉÑÑ‘ÔG;E¯ûÄè§<÷Ú’ó»õ…›·G`ÖoÞþQ^o¹5ó%wéhiQddd^PS ÊÈ`€ÙÓsUÏ/Š¡ÛÕ¤q)íšãÏSsGîš÷>hŒå«ýQ|@@Þu®gd@AÄóÙ®‰‡î¢^Å`¾ÞÝéú°ã g*  µû¡"@0¯'9~Š‹ Ôí#¬Æw}ð@Ãí°µ­Î g®Ž\UÀÅ…sÎí¨×ÀþÕ©ãß«›_ÆAæŠE@ hå[f&tÿöX¾©bûÈml||“aŸÖlµ½2ôº‘«ɵm0]4 %ŠZ©¼ÒŸ Pjëñæ0J9›Ë±ŒŸûgÚñôçíK©m}…»ÿ"Ù£*¹·9GöÇlsy¹¹BFFÙVŽŽxTQb×'…ž8xô_Öüýý'ʧ#¡(öXNÊÞÞ ¹™ÿkÞN_‘eÕ]“LBëÖ©¸Û2t«š74è»áy·£Ð7’’Ñ™ý‰ätšõ4š taD\cfÇe?Š‘¶†FL©Ä[¨M¬GRJ‰ onn‚؇'õ98=Åݯ;KÉŒ1^¨‰§   [µ° b`p‰“`KAMF‚„×MÙ¨lеm–™×ÓóÎ`Úlw_ÏÂìT¥0sU¼ŒÃÖú˒|;üäÉÜÝp___xÒõƒ¢Ä”Í’“òR’ Åò…x¦ã8*ùŠzzzð¤ÈWÏT Då2—ð_ÂíKÅwhli#ÿ[ä{»”ÄI'ü¥šŠÍlº¼wãúd{ÜQ‡Ùܨ‹ÏÞuÇ©§²h®ôw¢àë:@/gg1™¢¡øú¯î€¦Šå´§¢¢¦f°Û0è>Û›%€YØÙ™Y*å(UÉ?vÜBñÌ3JJÝÞx–#æÇ,&Ø@aù56¾–WR,O—Já¥Ø^ÝÜ4>à OJVcìÖpýë] cþMROà.ø‡÷ô¤ÐBþgb+tšiœ@¨÷¦„¤ìßlŽ¢+'/?bVG»Û±ö帘Wž·n!„˜¢a„Tò-ÆÆ§LxBpÑìiOm<Ì¡áý½ù2vFñÞ·íN¼0èç“2¹àÓcѶhd¦+@¦__»srp@?’13cÃyÞy]›N1¾¹ºê›˜HOúÔ§ÀõRk ënºÄòѯ_&ŠíŸ"‹'êÁÀk¾+ O¨˜‚¶OO€4:2!!Š¡Œº¡®¶y,!2rxÉcFå‹„ç|¬»¦æeÄ퉡+#*WºWÏþnlç[Ez ŠÌÑyê(±’èÍØx|<“Ña¼YO·Þ”ô ØÙ1º‡^Ü///ÿ樻»{qeÅgjJ¥ötÊÆ o‡PmÀš?6og |(*zÓ8,ÅJ«Zþµ´;###» ¬;ÅR e²Qy2Èo—ºã¡w›vçë) ú?±k¯öj̃ WC½ÿþ|3+Z²žx–¼÷qc·’k­…'÷½B Øð¿0®ìH(+?NKKûù Ir|ÉÙ›ãJWŽÉ §ñ#,Ò§„„à™5!QQšq§;fEEøÂÁ¸¤œœøÄÄÄ==_<âOß–« 5¡‘ýxDä~Óèú7Ä£Ùª#¿IØ\û*j‹W•Ä rUŸÑOóI?–}ÃÃÃû^Ù……1\Ød[z3w9MkÔÞ‚†ôNçzíÂï‡×øï§<ÇÇÆ‚€¥ÓÈ–§‚ŽÁrŽÛzõ'Žñ-à5áŸððp°TÞðˆˆ˜é"¡˜Ì–û™™î·@Rµ-4yûÊæ`Å”VP OÚêy{D ׉>Xçêh=®îH.H—B"~ä;1))ióè¨Â†gކçÕô¼J>îÞÞ9yµj» kË©Ò·ÈøÌo^D‰A²ÅÄÔ4!ŠéÄ‘‘²ü×/cïŠËÆÖzôó:Ð~¸GŸ–üŸZèÛÅÚ^¸D–©‰‰¼ü {2d76ŒŒ«2!&|þüùý×Á|fòEM§-§¹-7 ÕOöÝòƱO$šÿ­¤vºª>4ˆØ1 zÌ ãcem*âv<(:Ä £¼ss¿¸]hÞdÔÕi{MÕ 6 ÿ>Œ‘šdáxðówÑð–––‹{{tk}IÔ&&&ßbï?xà Ù—/»Œ®Û—^•‡E/™ˆƒß䶸ºú|ĤL¹HëÃñët¦‘—2ãúHWž¦îz¦_üZIËThŸ·ªZÖ=¯­­4ز¥\wçñ½×„œvo Ù¥‡ÅÏd>/VÅ¢°)ï©òÏ9±~·ü’;%†ýÑkÞ‰y\°(%™ƒ»£§åÔOøÝ]K|o§£'TÉ„¸fÇäóuž¾Ÿê§  ú+LLr@ý¼.ÿÁ”Ö@jÚ›$±Ïçœ×‰€íZ]]mnjâ§Ñ¨UËݽ®r·|ºµÞýÊí,~ k€v‹_`2k€Vhõ` PÁ¥× ¹<Û§hüF\œy[#³lÞÔ )yþ_¸0±ßb\Ü€A¥Ñjw 9#ãÖ-‰›×·oÏÀèá)% ÷ªJf=€ùòåËëôAæ„»>®ý§LLXaD‚&&TЫöjÏ—‚a¼¤k&§§Gc``ˆår,h;a,©sa©¿»uý–‘¡ÝŸÌ•ñÀ¬ÓÌñbDð˜ä‡›íÆþšuœ'%'ÐMÛ²3Y"£¦²³cV{ØNàt±“a“†ƒ…Bž"é«WE£æñ\“¬rëÔÑ¥1~?,k- 'ÚB»iÆÍõ5úãÇfÓfª þÆžÿoí…ŽýÌQ·¨/û/Àÿ.¤ ÂXìÐ×¹œü.·¬tE—ÐBr{ç­Ïj6áU1ç‚dÙpÃÚ—Ì<1¡¼Y¶]\\üFJJ ÿóçÏE³œÞú¡êY¿4ÈÿhmwÛÏ\0[œ¨$¼È$$$Ç;“Xç»óÈk…ê5¸ó\0 ‚G@húEmé\cmmÍn³?bÂâææ Öùhí `?«Ý)–ÊššåIÃH ·m[ns²ZÎ…¨×8ð§‚%YXç±·/k›¦$û!š‘O$M§Ž¨¤¤Ô“ÌC½ün»°úß8&¸£õþ˜Ÿqœ"0¹ y5ó7}ßÿçt·ï]RÂFÌt¸Ü±œÎ+ ÜH¼y‚yp¶»¯¿7‘€ðhïÓ3ÞÅ’¹@ÿXF}DðÁT½Q7ƒ[ü#2RÉ!`Ñ·Fó Á‡FŒGOöü9ìrG¸(ˆ”è÷5´Ðˆ¬—ÛïÁ€ à½> !`ƒÞ`ÌïæÆ]ªBëE˜‡Jø)Ú|—sô±ýË7ÉJa#ë?QiMžìºÇÓè~6ëV zЕ2ï߳Īš¹¸ö™€¹­­mó?ÿ=nõ¥¥û¤?GFIkÄŒ‚Ï‚bPPKK+ø@׌h­uuŸ^"Ÿ%7”åÙw‰«Ù±Ëα°—@–?‚açâª`Ÿma¸ïõ¥È°• 0ò¦f·h%-–W³ø[ó…ØçÝš·gkuÏšl÷C!P™aÆ•¹Rið¨›!µƒwÍÇ‹`±±µm)7Ÿéû3yñä„\ÈÐKk€>>œsÝ'zD4œXD*±ëN±Á6»ãá^ý•…÷|(p¯Ž.Iý1ýßU¯’ÄÙšÈaûÔÇ ]@, –ÖxˆÃ“qM6W}t˜ÿÈ™iºb'ggRJJÑ õ¥¶`vë%H„I+*ú•˜ž `’Ùƒç¡ ¿\\Èøø4ãY£*ù…ôöãOkþ Áý­Ç÷SxÄ×Hœî—·}ÖåÕºtkû|:T¹)ÅÈãzº´CÛ4nKË}ÜŠÞraˆ0FÁ¸Ù99u~­tð†ôzPÈ€iP_1b>?ì AñpÜy ãUQÁ¦/c>…Çu쫚éxNûË?ç”3DDrJ8;s$&&J«ªCÍ0Ò Ï{5ÿwõ£'íDIQ±üüê}‰ÁbFŒÆGɬ–~¾»—r™ ¢`a¸oއ'~è#‰½{'£¢2•9ŽRVÖnm>S9ø´$ eèµ£Pµ8;»ÈéJHè4»Œ÷G™nÐói‡£Ÿ#¬“ ŽDkÉ…ÊC"@ƒ//]®—IîŒÊyËiëµ ‰dî'ÐËÀµãñµ¼èOÒÞpwcy~yY~®œý‚û¨‡i¢Á“ÜDÄçÏbƒyý_‘ù:o}ÕÉÕ:‘?2ðªUHr‹ª(ûgÑpã½SŸŸ?–Ý:™dp8Ïéãöp’p™t‘E_€™ó¼sÿ®\| ÔÕQn6©c]'žŸn¬†R¨ß ¶P>™ oÏ;ø–"D‰›@HÑþûuèä:2ÅÍ#o\ǵ÷.‚ž›—.žlÅЩ ©ÕÄýϴľº´Š°´÷`À-ÏciÍ, †ÖÑì‹Tlµ(èZ´fp“h0M]ÞEôèϽROðÿþ{C!¾òyùÏ¿ÏXÿÇïë5ÿ}ÿë_Ü«ˆÈÿóò’6p¯“ú»º ò„iÕW/SúÅÂÂÂÿÇÞ“@IQ];¸ *¨(èWÿ£!0àtwUï=› Ì Lœ93=n“WU¯¦ ª«šªêYP5F@ƒ1ÈW q!,ŠÇ¸¡F>ÌQO¾DÛ7‰~‚߀F¢þûjée¦Gº‡c~(]]¯Þ»û½o»¯u­Ûõkˆ'ýàF÷„ ?Ûº{CKÙÞ_OºwïÜé%xŸÆÒךŸ»°ñ”žkV:)ÃO·ô¶Ê?¼L’$˜ôþø?fÊ¥ïm_~{åÉ0o ŸpLÇUׂ£?3}ÜŒö§™ñÀœ:¯{ñâšßîÜY)¼)\:ºôxè(O†y0T¡Ä_ðâÛw-ù|’ÃpIÉf[}® ·^¾B›15Ï›]íì@¾7Ÿ±ä7:õº³Ö3\~Æçó•°¾ÏÏC>ÖWµ¨†Jþ™.‹&}ÿ'¹ªÆÕÍž›×R¨vQKû´¦ÆéÈåözçø§{½u±:4wf¬¹ ±Å4¬è’!© –½ÞúY.äŠF²Âëíîîötû=ªÖéµz{(,–6¶¿º¬–Á\5¥U&ž„¬èÕyÀ°ÑhÔjmÖ%X€[‚Ѻn²0%uU»¦«ŠAÃëMâ­§j—Az «q%ÇšNŒêöXƒ;âòæ2×Ý^ëž®&’Ø89Nc}u4ÓFÁ Ríê$ Ѱ¡jYõêÔž^(!E<,c¶0$C&5÷Bæ ñCÃÈö*T–©0Õ¶4V LAõ?Çó:¥'Ž$™ V"(<©òZhK«dIY€âA˜Ó=¼®»Fäj—nôÊDb¸b³¥E+Pºu^“’Fö›ù¸ [¥.¤k|µkþÂäóuWM•×zSXC¡WÑ O­@ïÛ:‹^w!CJ²FtiÉ616ðà[Õ²¦¡ e‚ʧ`[“=˜~o™¤HF+eƒ…N®4ëtKŠ vOöÈ*Ê,g©3nÀûü¢,;-L´ˆÊÖk{§ ½p¤.$ PIMGãÜn$¨HQ –P»2â’Ž R9’ _yYÕ‰€¸^d£‡Üîl8Ô\1°HÜ ¼!žÈ²žÄ¼¤tV»—ùœÄ‚`?ƒxª ‹ø¢!“ &ã(JöTš2¬2ERSçƒÑaYêT\Nu [&"4bô‹YÑ”>QD5D4”Äša —¾˜aE)Kö¹áɬ”Å(©¦v³ iëº/,Y ª”œU*Kºa¿€W²TS…m»C$=+X› ×4cI±Ђ;‰Íf•Ãh˜Fêé90Z‰L9È€Ñ ƒ°GÚ.V8°¨ÍÐR¼‘Ò¾ šÃ4ŸÒ ®Óiè"ÄÛ\*iΪʛ’-…:šÍ¹/Gä¾"ežŸ‹Ç&hUˆ¬:e•Ãr.”VY!Y7ÓÞ äz¶. Ä |¦yLInÍ `Èy›)rõ›FNG&}ËÝv׫gd“]EïUø4bó¡&­„Oë«=)K‡µt p'ÔEî”N4·NdðÞ EUH¥ ÙXó1çŽcEpÊÔAÿ°/¦³¿,›|%ífá®p_6éÛ†è“Ê'Mš\yun'à0Ù¹ìb›+ŒdÔàH/•HpZÙ±šñ ÑÁ¿Üf * Î…²ý ×Ðèç Tf5¢L Dt'Ð*f Prž©Û`ËÁªÜGq9 ˜=JÖ첇Pt·À§m܉;ÌÁºåd•_†Ç«©/)¼œš(•À¥]È.dz‰“QuS×vèjJã‰í£y‡ƒéêž8•ÏÄN@á5ÑVqšÙOCA˜ÄgImdÈ0mw6uIB·ºèENÆ‘¨j(¿î*-å‚Ìoà<QDUR¢Óž àETPž¤ÒéBœªuæ@¢@'Á4³†èæ½Ãç<ú€èBX†iŒV‚’=Ÿ 4êɃhG}â Ò㘠â™KÝùj‰–! Ó›ÒÕ{˜8>¬¤M.“ͯ´¡ùŲKG0g‰‚6X¶<,gƒðß2‡ñ“æÀ@ #(r@ ”COYîcÙƒ ä• ýÀœ½Eo_O)P@Yò‹ÇŒšòñ3ÖŒÒ 6“éJãa1::·|J«Ý:êŽK<øIÀ¨ò-÷"ð6Ï9ONÌ0Gö´æáò9pû¡w<:´¾gœûѦ‡æ|®õ]*È<_&ç,¤í-gòyœƒ:f$:xÇžBœŸcƒâPj±\EùéuhÊÐK6Ô"|¶X |ç†3¹K†¦ ³Ö >˜‰Ö/°>䣿Ÿ„B Ãy&ȇI”#8<”&X.Jÿ‘è"irIkÞë¿a÷…š[±Ò>”à†¢,apÁ ãs„A‰>Ž ip)Õ,t C$xÙîŽh×P¬D©ƒ`0“øù(C„¨‡B|”Ã@C”燶ƒ?8®‚ürȺ„!25§O(ÔG‹•|±]Bi:v;³lk“Ê™r›sŠÂ~Y‰¨ŽX»\Àœå܈ä ‹f¯€pÊ ª‡WFM­ù½Ê _«¡fºšì5íù†EM)cjNY&ZÖôÈ…T…—%~Aµ ˜ö˜¯&%°4é‚I²¡VÐ[Ê€ÏESá#¥øÔtøðè"ýTàƒ“*‘FŒ”¦ Ë:©tÕ@£ES­ô{3Rô¤Œ{+µ YãQT=95á±÷jé6e1õu ÀSL…ÖdU Šd*ê~2¥TXm’x¢è$-RsùÙɘ ‹k¡«n¢Ñ5R‰zÕâ†&q)ƒÐ4¬^UC UÄ^ZRh¾]²3ˆ–ЭÅ:‚fÌjGMDôvöƒŒZR(Ù„ ¬£$-ÑãV^mÕ@‰h³‰@ *7ÕX‰ˆï5Ô£ Ê—ÏÁcC+§ åeØ tk0}¦&±½ˆf-¤Ûy •Ö€bÊHC€ …IBܾrG·$ˈ#”˜’ËÔDsc3g·ÇPí¬yhNmkkí¬Ø¼J¨ &oI±àH‰¤,Xà]ÊÑKYl®o>ê×NkljŒÍ£\64ÆfÕ·µ¡†Ù­¨µÔ¶Æ§·7Õ¶¢–öÖ–ÙmõÔFH:MUjt›Ïtòâå3ìD>dÅq{á‰Ô\@L§-ÂdUé4…b-öÚ2¯D’HsšÊQ·³<<¡”£F…÷”£ U°²@µÑÐ ‰¼AVU­MSuƒVo®EŒe7ë‡ÀÒÞV‹²E`íë óì¥9Tg§ ଠ—¿?+`©ÅìϲB¦Ýïºú•&5èß2 }‡óV¦”“A“³2V:Vߺ‡i¡¡#ºl—áØ›a¹O¶VI *’¢›y×߬Íó%˜iæ ¢–æÈYžK¨ P»W¤Éh&8›Ár{‹OÐÀCtóµ¬vËddªºiT>"aˆ)+GÄà=“=Y$ôšh1O}I€:093až;;I*z9 ]@P©¶Ô£áŒÃB˜÷q‚_ ú£Qƒ_” ¢Ápz ĽµÉš¹Ò£R6™j¢¼¬1P6öù@ïD E¢l„!˜ç|b$(¤±¶‚Û!šú ]•šè‡¦èXØMNáùñ1‚öûØ0‡ yžãÃ,‡£‘h†í94Ú‘ž$¼$ÒPy äLÂÀú‹ÅŒ[e¶1õÝ%Ë$n9 ,VöV¦<+Q(“U¨4ÉPTU#'á0;õ*‰x:õ Ìg ¤$ÐîL!àó‚ÙÐ(Ù%‘î´sr­4³œ\<€Ed2Àš¼ i¡_„DHˆ‰²8ä‹L(âg Áœ_ˆÚ!£Ïnd:Á­T¢è ††É«?Žø# Î`ˆÀ\ÛÏùb87e¦hߪJcꓨ—Ádi âWVF¨UÇÅf%ß; Â4?;©Ój@7ñs¡ÚyÝv+sãÞÜ·µKÌMwp;ñÔ¡ÏJ#LÛ¢“ßJQÕ”–½Žà•ïüÕçòñ”²`Ðg~ ?ÿÃ2lÈßçüOñùŽžÿ9zþç_ðüévvºÇу=Gö=Øsô`Ï¿òÁžâ ÅAŸïâÁž!æË™œ­A"²pô´Ïwú´Oßùá?á“LqnlÐegçxc'ƒ?~3ÐÈfÐçmw>AŽ2©¸Ž$žPa™hDÄ@3L“h„gâà ˆß܉ºËpÚ¶3…нÃnËõ¡e÷áÁXð‹!H€°,Ãs!VñÐf÷•p &: ôÏtæ1èý[:.-HÚÅJ ø-Ú¸æ5—©…ìMkýŽ íÅûn¬£ÎôØÄ\/¥‹Ä¢*Ëj7]2¶ÎŽ˜ ?ÐÁd†UÞ|+`󓤳_ª>-Ì^èÊ^Fú´–Ù7ÚÛ‘óèßÑëȬÿ9ÔcsŽCžõ?– éúdÙ„r6ä÷…®ÿ‰ëæ–Y3N)=‡:å)3ëZá¾þ'OŸÚö‡Ám8wÑŒº’oè¿ûžøö’’Ó^§c©çîï¹2vFç—;~yÒªŽ5aJóúR÷Ü?înMŒÙtàŒyÒïÇ_|œw†gþo6¶žyfbΘ}ëØ}ì†'Ž+_zñ§oµÕ/\{üsk.ÿùGÊz~É-ÙŽ6^ö«Û–~þù ß±ô¤UÂÊÕBÍû=+ü{Ôìù¬ê³W_©ôïynï‰ô§§ÿ2évU‰\òζ—¶Œ°3|Ö²s—myò«+Wž¾mûöik^»s뿟:¢sû²³ïdù†›H÷\ϧ.ú«¨_8°óã17ݱð½í§”|ðìØKç>¥œW}þÂ¹î… .zùvü |¸ë¹»|]tó %±X ·ý[Ó×|¾gý9º‹/~߆kª÷ýn4ûøÿ¾I}¸Ëóûöµ±™ßÿþ¾²ÚÚèÑKŸ~:ko—^QZº÷ë{v¾+><Ö¿b7ýk$­kGs›Æ–0Wî—×|qQxýh¾¹¹yÕG‹?{5üô¢}SB‰×—ÞSÙýÀœG¯˜ÙÔ´ë§Ï'ñÛ—Ý¿õÕY¬x6Üp×]wu]¹åºã‡˜_zòYk.ÙÐpÉ%ç<Ô|×/½4óîÊîYï?žüú½¯Ü¹eË jϯyò_|úÞÁg]wýõ?^µêá7M¡¿ZxÛm£–Þx#ýÐåË—Ÿ8bı%K—.êYõц ·Ý ªª«ßýðÃÕßrÖý=6ª¤åòË—_ñü¢Z4걊»ëæÜe¬V®ùë“ê۫ߘ8qâ´µ±Öóü|ìò¶pôf(o¿°ü'?½mÇŽ÷ö¾»µ"åóû7á­Ã¯Ú÷»9OëïŸJ’61oáB¶kÏ[Ëï¼sìÏzhþç{ÞÜ·ú{áðúƒº/^{컟|²bvÍß[åíxȤ㾫ÎûCû”)SÐé7?ñƆoÞžöQÇá­{ÿö?m?¹nÝ%Kv¼÷ ©mÞ¼µüS©ÍŸìz dåÊ•ïüùÏÇß\w̘1cž»êï§ÏÿÅ9_}¹OFéb–¼³<üÖ»Ï^÷ÀÇÜÿý‰ý|ãëG=pÆM/˜*]zC™×{ÓæÍ•%ï<õöâkÛÀœGŽY²¤iâÖ%ÃŽ}‚Ä®}æÙgŸÜtéWü{×Eµµ±Ñi‚¡/åJÓ %B$„$4)áÎ̈©f7€Ô æÎÖ2õÛ7œöîŠR?¯sîܹÖi0¤:w¾rvO#’ƽl… ~Jjß¾Ô›Ó§wëßòÕ«©}}×ÅõŒý5®_‡²QÑÑUªV}íL»wZñ“êœ?IþòËö‹–, òŸuòÊÉíã'Múfë¨2•9”þåR¹Ò jÜ=Ò† ­;††nÛ³§ I?ܼùKÑ÷. #åƒjÕªU¹råW/_¾q1$$¤a»vu;Ïô{ì‡WBìÝõë¯õ\Ò54$¤ôáÇ›žïѽ{ ÿ¬ æoý^á»_‡_ïwûþåSgÎ þý‰êÇ¿qiã•ëÖ­¸8ªÜóÏ?±WŒx»€“מíÿÏÊ'*Õ‘^íý™ž&ï°žÙµuÛ¶'F•®øx©3g*û–u?¸ñ›rÕšøÌ ¢Q³—©9 8ÊŽéPGJyw¡²í‹güüýÇvlؽ{õæ-ZL›??i­Xkì€f/RsÔ7ÒÀ]uþºxˆäïõÉ€ÇÞ~ûmj𥾉7g4‹®pñ«Æ½:ÕIÈh#UnfÕ2óÐoãžÙ9ºZ.Í÷ŸÚ³Ù»fÿPñ™øw:Þ›úißЉIIIŸ¬Ysñ¯Ú=ãGnÿlÌG±1Ë&ûŠgÇUj³qdäÒù>GZ­½z|\ý¨çª>³¹qãSoViÔcú­¡xÝ¡K‡{·?|¤gÕ9jVœß»N™õôÂz:5Ÿ63½ÖÎY#^=ºùâÆ#~ß=§¬bµÒÞcïü¶õõn•Îÿ|çé qNœœ2ìÚ‹?ìÚUº\9vꂵ·Oî'~:xfßò»æoUÍ7Éâï.´[{òüù‘q?ÝzpMïW.¹»eô¨jê¸cj­èm-[ø_Bæ”ëÌ£Ò¢»õù§jÕoË52ðóå«?ýôãÔËW¥_ Yåûìµm˺O·¼uúäÏ-ÔôÃÞXrf€_¯cSnܨÓôÙ}MÎÏú¶×ŸysËÞ½¹{›x‰ò©ILƽ=^)5ðLÀõWÆûÞ°GËÌÍÃv/\¿¾ÂË/ÿøÝÞ/Fj÷óÊo¬XÑ¢iÓõkÔŸ=zß«–ýþÔ– Ÿqçü½ã“Äí“ÛWqsç¼²þÊ|þî´×3CÖür{Àã=ZdBÓ\^õÊçóçlo¢üy:²mFÔ¤¿þbO§³¢×bŸ•±­¶o~€}ìì‡/µoœšù濪]ù{ÿöÓÛ±ëÚèAûvWùµ~H~·‡Ø Í°rãŸI¯þV§Q¯Wûâë© ülœU÷é¯j×ÜöÜ¿•Úe*õÏüfB¥U(ˆRG—Mùì«ÇZlì²_³UÖg6ºsùÚ¡•sÕ­ûÊðv•ë\P×|öÕG&¾þzè{1Ë._ÿ¢+³®ÅŒ±õÈ÷!¯_j6uÚ•ä¯3#ÆNè\ߺ1(ìPïã©ÖjÔŠÓ¥›øùÕ}ë­5;vöy¬vmý^ië]Â^Û¼¹å§Ÿ¾_“_»¸Êùõ#åÔSÍ ö'ÕòiÕñË¡ǰ÷vøìØ9«yÂAÛ“¬>qký{g“’o˜Èï*¿nÝ©±ïåÛíuÔw;­[µ¶÷ñ-3ß|³Ó ‹oÞ¸ðY˜·cÏáK¶Úñóª'í)뙤m'·ïN9ñõÀÒ•GeÌ–ÙêkÖt:uêëO”ïù]/ÙkçôÙµãçVOš¦p×®6>ù¢>¦Ï"ŸI›Û–«6hNõ-q?v=>FèÕ2dÌû!gηÞ0Ó—[~öU¥º_qyYókÏßEùto^ñöí€ÐÇf­·›–>¢ov;§S#'ëcžÑÊo;G|Yÿî'5z~²±ü“e–Xk\“®õÆ4 ýíÿø‹=ŸBó6ÉϞܾ=¨ù÷ã"TzùåçO|3!äò¶}×_®¼0´»nB»±kB/\Z3ëÜ… nßP„LôI¨"¶ŒßqWÙJ׃CB›ðÑc¥*ï½]~ÚÅÝ {›ãß¼ùS î}QîÉ—Ö”nþVéÁ—Ún]pwuÍ›7×}¶n»MCöŒoÙçêÔiÝ^½ww]½ÑÜÓUÍï»gèú¯BzµÈlѳ^Ðâ½g/$¿Ô°i‹a“/_¶}·à‹j»ì?/è >ÿ<øòßGÆŸ:5¦å»=ÎgöïÝ{‚o×ÿœ÷–³”[?lÖ­äå_åòïË\>~mw¹˜åó>± h;¬G™5s‡&Ö«W©©ßŒ9?°'¿êDÝÒòË+<¾`÷8ÀÍÚÄ|NfnÖ;ì>»õç™S.\X ã]eíÚŸ’§_¸pùüÊ uÅO£&/žñÇ ÄÄ›)é—&ÁC³¹sáÕ†…Ô?z´áÛm?¯°2*óè·.î\)üœ+–úì›6•zB^©Û­ù[/Þ¸„š>xìÖÖô²˜¹éßž¹ý$:þU©W®Ùž’Bù4ýtㆊÃ>·uϪžó^^4©bý1c.Ô?˜¸.éÎÃWl=óç€øã:VËÇ¿Öz“­³eK=˜S#ß ê·úµSW†¬Øü:zÇg„_žäýP’åc—õ˜y8iÎ$´­ï´y?¹}hÝÀ~>öÕ˜2§Ó—‡~R–'}„.ãÕíêß{©{@Õ\8ø·è÷â³¥êM:¥y·žÛ·ToÖz¸8|ï¦o}WnÅ¢EÏî2ß^øò½»üá/’Ûz|d)uûd~þÖtpŒëcŒWÿrýÏóO«{áèðºÛ§,;a‰Ãk>Þ}~›ê £–Žîå7vúôj-'§Íú¨Ïæ¸U}úõ _ùêé¾­[·VvT¾U¯MưaêÝWþ\)‡ÙÒvpÜÏ“.l4ºÃ­{ÇÈô¾Áqüò„ui¥áú‘ÙÓ¶¥ÏåŒL§ç*²Ø¢7óqèêS™½ä÷Ùý!Ï-\¾<~ÞÅîË{ÔÜøôä_ãÄ·ý-Ù¶°ŠÞà³ ]ü?K8yrÒ‘§¶ÿ±z÷š€ CëlP<àÓ}â¥Kߟ¯ÿL½¶>Sêñ#êütkõ®“WHÙ*’æ|ˆ«Ô2[nœxz|dž¤¦&¸74«|üþ¿™Ú è‡/FŒè ÞêÈOÿh7ìÚ€³?¼W¹ü˜;vPz/ý7ª._¹2<™M›6MwhSÛþÿôyþø¡ä/Ƭ['ÞúëÜõë×׌¿¸úùgÀµ3kÖs£;4H¿p`Ï{áÍíäϾ}û•÷#›¶^þÁâÍßþ|¨ÔŽ% þÝé÷ßÓü_¥ Òª°tùòFK—.]4âÞ݃®\¹Ò˜ãfìИ¨˜˜Ž!Sê…×hÕ¿Ë/gnßü3løðv¿¿µÛô ~/rêíÛ·“ÖfÿÊX_øóGÚÓ^è¸wïÞñ}ý}­Köm8í…>?·^„¿>räS§OWý¼oDÄÛR ôduÚÁúãþÕyæÔ¹sk½9sfÈÛï¼Ófõ/UÆž~±ëüJ³ûNÜ·oßèÊjÕ®ÝæpÒÖœ¾ã·Ô‹×Îý¸äõ%K|ñ‚Å‹Ão¹ZáKÊ],ûÁÝüjL‡HçÍçZõŸúÁM¢úôYÞ2¾î™ñUíøå³‡Vß¹yfA³ošNÿ¶lƒ ¼áSñÛ5ôÜÛ{&/Tÿ|ÿôôôºIë,Ó¿=vútéz+3®&€?®15;ßxÚ O¾{Sõë|⡦þþ™Ãщ¹ÃKf×¼z㊺éÏ]m¯Ý¼q#ò`â·=ÿÙ4ø© ©ßhtý?-V;ºy)sðÚ²eÍoß:¿rÆ”~_‰~jQT³ÿìÜY¥F±ãÇæ|ÅúuÆŒ“x­zõêÝò_°ý6·Ý£gí» 2† ‘z|Ü÷õq•êŸ8ýý¼²åËwˆŠªZjÀ¡µ‰¥ |êo>î·ñÝȦð_dì¯éÝ^›Ù744T=º)CúWÓgË?uõÏ?W¥ÿªÞ߿ܺ1‡ÛÿN¿“ÛèoËÖ& ÉJ7.7hÐqðŠ½µ†ªX±bã&MÆV¨×v6h†iãÇ“ÈãÇÄ6ýÆ,U37mj{ºPmdûö!“jíÓûh½¿Ö¤±‹-šZ¥QÈTèétZÍœúÚkÿ‡Vã_L>ßæßý~¹Ta¸š±ÿ¯ëé !“ë¼>ò‰2{¯OP º¹>ãÏ&·ï܉;2sRíRsÏÔy±ÅЫ ŸÇµ~RɘœÕò­J_Ý»dè!·þjvdËìêÑ-c"££?:hÒÙÖ%ʳ¾™øb·×üŸ|ü±¯ú£á½nMõñ»­v׸ӳ»Üë©ë¥ÇŽ’S”S*¼í#û<áòLæå{ šÍInÿåw…Î(þèŸÿgë¿þ/YïëùO–ã„Gç?ÿKÿ¤£¬ÜбŽñ¶´+ßÇØêcid‡"Ga^0Î9¤6ô³d]ÊÉ÷Kûf’»'Zúù9‰‡FƆ‡…ÇFõ$ïä…ý®Ò‰QQgDV%AàâD‘ç4]Ç¢¢Ã›Ii ‘qMV“)QãÊr&ÙJV¤EFÐt ÏÓ3Ðå¼BqŒ BDœ@+X¦4hÍñ@ãÖ¬q_Åõ ƒ„yIÆ”¤)4âÈÜV$0|ì?a¾ãHª]Ê!a]À ŽŽ&wybÃûFõ.|0Ö,/RŒ$’ü_€H¬É2CS:ËÐÄÎä5à®øéXÀL20l4ƒdIæ5NB¬ÿð—OÁ»âá…ÀˆŽ]‚£ŠÀˆ.i"ÒDUWYÐÙà3±¼Š$ØÁ¬€ÊbÄà£_Ãî~ÀYgÁ"j:hp–cè£1,f‡Õ¹à7ºÜ#,¸gái#汪ê¢$Òà­i:¦%0¨¼N((!Ÿk™Ÿ…ˆ®Qá]ŠÀ‡Ô5‘§ÂP §‚ˈ0/éÌ(ŽÒ=ràÖÞxl^—5¬0:Ï ÄxBQäÁüÖEUòØ|`÷Ža]‹À€„Á©•DA ƒ T$`–Ó9Ô LópïÞzl_dsÐuüiZ“(BšS5Œx(ŒÇöÃc;Æ…ºŒ9]åÁ©×0 18càÖˆÒõ$˜b\‘öRšÕKÎnÇêÉ©±‰qðƒÍí¼ƒ’RLÓ/ fQœÊͬDVc)¤HkÊ`iD*À–.’Y0rŠÖjøÄ®)« %¹& Æ ² n$€Eg3Ä=×)Càaën'§d¸sŸ¸J²CA!pÓ%Ž£X >3Ý ] Û0Äú^ˆ[·¼>,­Pº"€ …ˆâ,Ô­ªŠ®Û ©‚ÜÐ¥(^Ò”i]ãÈ¥JP0„°|Ÿ‚|v'ÝØKŽZÇ‚É%'Ü]7BsH€À<`ˆC1VÑ fxY ( ËŒûF¼Ç;Á¨BDp# è ÀMVdY‡c Ø 7óÉÄÊÂ/ B¡e—R‘³FzY9‰wå\!à¨ñ¼&!Ä‘Œp áxöœÈ«².‰¬gÚ±J†á(²J‰’.€6D€"A•“­ª<øö’,¹n# v3M)Ö–x^BÆªŠ‚9^ÂX¡YUdÜ’%§Ücu7Z€bE²ºBƒ¿ ¾¦a–ä•mÏj ÓØ òƒ<9£’šZU4¨1P¢XDÐJƒEAn&.ÉžâF7ŠŠáA13Š`Á²(Ò¢¦Iä*‡›QM5x\ÍUÄ@¼£‰­@¸Ò xÄ ¡xZ4E»&kEéî@=‡Ð”LjE ètžfb ÜrVÎ ]ïu9…Ç:«sŒ ÈH±Âdž(ÜEÞ}#^è0G2(q0–ƒO¤Q´€5IŒ°î¡÷:¬%QŒFC\È‹*MqˆUA†hQSå‚Ö—Xr«Ô½l8ÏÑ Y™Óy¤pKq:æ$Ì#AŪȋÅ[ìÕc[9‹½z]‹ˆTMÌ]…ˆ|S¤¢}9Éx‘úѬ‹’hSÑ,°:#ÒªL ˜"MK<F”Y‘+ÖD›^´UèËQü26õË"›³N³Ç±3+ÏWl7÷‚ž1 ¹Wõ¢‚ƒbòóÈß/9ø…¬ètZ×± ê"§«0?F`Û™<Øæ„cO3ÂÜ@šÕä„/g„gFÌϳ(-’Ó,3 â9IVHþZUZ•x é˜ÑQ.ñšÜ3ÿù4yqλ& ó›ian4Í ÓÂ3#…ðÉMBµ(ÓB`x éºÊË*«k’H²£("KrÂr±†ô¢­¢†Ìgœg‰È±{©§+NÎÕxM³.Êhê´Nó<‹ã!®ƒ9ÆpH’^bdE¥äâM/Ú*ÆÑ´Þ÷Ñôj0Í ¸(ƒÉÒ´&È¢ ¨²¬ A¦J“tQÑ‘!9NJºÅòÌ®6^6¹hžã Eþ#ƵÚ<™sb.ôêy¦sÏ,˜7"fÑS¤#9¥Ê Ó@Ñ£1:-L#–Q(I/éHõÌ~¤’‘9ù›Ó±¤—¹VþÈ®‘K${æÄ<’Í¢«Hœ¼®Q’$"cŠ¥t^§V“I¥Y¾Äopzäß%’Íž)1do—˜“¿Y$[ (GL\"Ø3…Øê4‰ª¢ XâYD+ÐÏ!‰…Ô?)KüÊhüܶüØVÓ‚’S2 4[ ×´¥Kšm¨%< '$@\’-õ†–ä$5!No×1†Åßø•o"Šómá›`KnMþ—fƒÏ¡íá#ÍŠá3Õ þV|&Á¶ù¶±¤b[Zj’EG Vܦa¼4´½=Ó¢#o›gMI@­-ö|mþIÉÖ”ö‰þŽ´v$£›™ç­À€¿™’ìódDRK ¢Î'SÂ…]¢]âTœdÅY"59“K’;Þd±Øš¬Û£TÜÆ’‘œfQ—T lØRã”4&7Q’Ö Ÿ˜¬‘É_¤%‘Œ Ä ±áÔD«ýÎ8¶„Ft·tÙ ¿³'ŠL°D¦)08#dµ¤o¬ƒì)$É[ÆŠu´ƒ K„Ñš1Œm,8~ŸjIÇ©VÒ/ÆÙŽƒšIµÔÙߪøkÌfXH …¬÷ü½•–K1eKCs:_ƒ’SHN'hÄ18.!Á¢`BJOKð³À“–ža1/tíc ŒèméÓ» < ‡ßâtl§—˜’d¡ï Wl¤‹áÁQA/Àóº„Åô&½ ‹‰ŽŽ¶„t²Z"£b‚ºw Œ²DvŠììo‰ÆØË1СL%iÙŒIn^>½'VèG‚f„Ò1àEÅqé˜,Æ’z &àœ4Њ=ç€Cæm,q:Iÿêgœ fѹ°ë (~–°$ÕßÏÂÓðJŠO€1Š&é@HœÄC NHõ³tH¶ÚÈãኡiª%Í‚béhÉ){f0:/Çud 9æbq&ò@9´_Á»ì^\ #»ì9u§Ã-h˜ïÛ”T0¾ÙI*óÞ³g—u&“$ m³ÿbOa›÷Yã†óƒ8äHCëd¥U6ky2Ñæé±–¬BHš‹‚/Ú³T¤ä »£˜áH”óiBÃè2€d™gdQRâl‰ÈoµÏàÄdâ”0¬†´ZH5 ƒ¨çlG¦4’u©€TzNÐlŽT¤d Úsšf'ÃÄòÙÙͳý9- û8[^ÜÜ&ƒ“óövÁÞ‘ÁŠ},@ØÉÙ20NZÁ3Éjœ‘&×!Œ\N1wÊóðœ²_÷¦[Ñ85”•‘HætÃóeñœÝèÝÁ›>Àc®o•çì¹íM:ÆYã-­,Ä«K€É˜–dKI&Aíƒê•çûç9{eÜA÷¦[ð`«°È76ïªçWÎûêÞ Iœd ëJÌ4"þ‚b-j69â:p3ÒÁÜ?ˆ¾z¾óž·¯äÞ»·³)œt*ÚÑ©T4ØB^v5ŽN[–7K“ ·ÂyûÚ„;áÅ5Åÿž;Aæi—U-¹í¿ñv@Ó¾t’$ál¢Qß( KY9ÆØM3ôáÄûŠüàgqí°¸“„A/g4 (¨ÃÞõ×q4Õ,ïöÅpø¡ =ñ_ »Í\ö!ÿ…ñ輸ôkŸ`ÙщÑg«=.‰$?cˆø¬YJù¼(v>_ÞÙí‚ågwGÇ¥QŽcT9f·{vùgÑ0Œ‰–“IxCÚÜ‘6؈¡“áRf¿èh%K~{€RÞ¡¤Daˆoà=k֋Π+ر‡©Ù¼û‘P;Õ™‹Ü?¯,‘ž}õÃ.Ó(ãçl"gnD NM…Òð‹sDMv¦-X=G©Øš–`ËYiÒYO;«hš€$ñ:«ëŠªëœ‘®¤«‘‘ƬG˜Y×6ªƒ«šÊÈ¥2´ŒIe‘ ƒMd]б˜+oWëÖÎí$»¤òªpêØóUƦŽÝÐGêø~«cû.ûæŽ=\°|ˆÔ±]þ…PÇÙ/šTÇNÙ=RÇ.Ô1Çð I£tŠ ‚!ÚÒI6rZTYÉ£ŽçTœê8G׌Edw½+8õ{#$I¥0*Æš$cV–YVÓiñH¢t‰Xc{*ëeûV­½&qÓfî{]pÎlR…³âÃ(¢"ÒX%•Á%šUIlÔ‰u¼DвØÛ1c‚¼¸ƒYÂL±fôÈym‚Ìef³¢±_N}Ø,œ‡›¡‘…³Ë¿` —=¶–t”gpèÂÞe“1iteïþ÷ œHK0ß`žQ ¹ý"ªªÂaYa8IaD±y œóv÷#çÞÀyqÅ¢¸×vî¿óp$̬JO0Þ,Öî~[÷‡Æ„™½þô€ì™8Ù3£˜×6-—]4J8ºè¼畲 ÉJ¶% ³î”‘]$Æ1g)D² °‹SQBB†…|Úu/©²šÜÒQCKK%ûÄœóÜyÝN/L7NÐ$`r&ÂH¯i,Ì) ()Þ\"ÕÛÃýY•‚¼8ëîÍMÃ)p ànBRrRK<ž%e~Ès Í(ŽœÎ3ºh´CLEKrhÚ¦‚9¶ê¤Æ}K;5‡4Îwä„ÂøøÆY 2V¤d,9ûšc2†,Mñg±$£Ø¶ãø(ؾfþˆ}²ŸâÑÕ`\Öõ7éŠÜ¯…I3ŽB¡1æ6æ­¸·{Jš7îv=¼FRh.š«$“.#}°æê„á[uêÙghk`: %X4dCÙ¿·>ü¦4$ESªÂ 2+a¤R”Ì‚÷ê<–1Ìj^Dy4dþ V¦[,¤N.Ù.Å©ƒKâ”—ÁJš®wF-V¡ ³ •ûþ¨w'°æ¥3óÃôð-žy{³ô![4KʳbF–Bû2ö•—Â/¿Ùm¾±³“%1“AU®)BSMKMŎ݉?:šö?˜Ý3íE¶£’f¦I‚«G!™+•]@Ƭ‡)‹Æ(UäØ0wtƒ¬1gí-XI„ðTbîÍ rçr°qå2‰è_ç&…£V³s#™4GºÍ~EÚôZ°ÇL£YõÓÝåCu— [ظVê¼óil%X’S5»i°¦¥¤$x^ËÎæšC´üì] \ÌÛÿ %ZE%i“¢u–f£M…²¤Ð¢(3ÓLæ5šy¦i¡ˆ¢’õõPDÂSh}ÚDiQD«¥U)õ*é3SyžGø¼x¦>³ü–»œ{Î÷œû»÷œƒ¢‰dž„Fa)$Š’‚§èèè ‰`6§óvÖw*Í™3÷åùmŒ4•õvŽG*s˜…à‡s aN …‘ ×±xìi+'-<OA99¡Hx,‰§¢P8"DqµÕ¢U«V®r\nf´j᪵£ƒð/U?æ’WR£ˆ­3ö”ÔpÀ¥ÓÉÏÚEþþX,ß©gχ"W}k“«¿ºõ|‚³LGÛïCx‹CáÀÍ“H2GƒcCÀÅöêÒ{f~ÿŸå¥**K6€3©ƒ!‚)ç„ÅSˆ(„OxKóX™/3_icÎñû.=£Þ7Fáùë¸öü€çoÝÓg4Û†¾1˜~×ÝgôN<£…iÎüŽÙ—ÍÙõåÊàa7wËoP Àµ3€cg8+ˆIÙ ?H{'¢‹´$o³è >ÏÝSA§¹P€€#SÌWSú/é†Ï™É~~ˆý¡éÂçÔúéyÅ¿¤¶ÏL¾û%U~fÊ/©’ˆFàu(8*Š€BqÀ68$ÐÀD’žÆVç²¥}¨Êïa øk¬ÿŽmχ¯?_E"ž±fÂÏçþmCpì>TþàcÌÃðyïÖPƒ†ü”i,"ê’2ÚmðÜn²xýäZ3Ã;ž¹±a{…ÆÙóÎ}ö9´8ÊR˜û–)6OÍ‚wPŽtEfd/ûßžô(È·¾føãÁè{6Ù|ÔŽK@ûU0öÿ½Wã«BëÒ¿ãVûPý6GçDÄC[î ÌÐ` FÛòÎæÊ‘“<Ç"§á€¦<)räA*o¯åЊÝ½ÆŽ'ÊG'Pc fX?B¨ýXmù æ®þžã¨qcõ aù—‡PÄ]ô´ÿœí lcFq|ü1ØXS?‚½ýXú°âøn#¾Jq|Â:ѰâøXœ·Šc¬8%!ßw‰ˆÑÁH<ƒ$“IH2ƒ'R)(* GƒŠãGˆ¶±¢íûжú{Ðö‘˜l‰¬OÇ6¬’>Ší‡J+«—cF%"ÃÜ¿§’FÌp5…Èø%ÊéK¬üát…_áaúÇó¥?úkL+pòÜN†îæ¤-ƒSh G:â@¯l*—ûÎy­Ã½K;îˆÁÉ„á „n>ä^3”Bt£›s¾¶¶‡‡‡–ÃÓË™âªÅØì¬ÍÙ(É«•{m“ó;¥*°6“Yxw1]á4¼nÃG”´9ºS©…×B"†Ú§«Í¦¿Å$†“ü W¥?ú^#|¦IdÒ84Ô~ÇuϘ/d:L²Ï¬^Xø‰Ã 8¿‘Üßà Åâ $ ‹Ä ‘:H B ±: ¤ðMÁ} ~#¯ ó%“e`^635YAÀ0 žÄŽüDÄ‚~Ò²%&Ð üw*#*#cf²pgxK׺Ò]ƒíR=>µWéIR ÑÑž¿úÜ~¹T÷¦þØ$ Œz«½úm†{tôkTkÂË‹¿Ñ¬z©OF-&Óƒ,/ÀÜŽ«•gÉ/¿ã›Ø±M_N_öŠþ‹þ­=‘g,æNSð3š¤Èyû)òbÄûÞøQK‹‡ÏùG‹Ïq9w/ðô[7ž‡o<«ÚZ{M¾¿ç…‡´¿îTÉà]+ŽcÏ/â\vZe~RlØéõ·Âü:Jfãñ¶5‘bw5"ÅÂÂÂN9rŠ/e*M2g2ú}Ïg³š¦†l—s¹c J…/1Ù·±^h¸%2–›w·Ädß\‚ñp3O/þ5|øÂI–³áþð_ 8Ù¶,¬ ªŽØþ†mÉä\qY îãÙ^õçø›ëõ·\ªÉŒ3QÊ®¿}é\,«;ÐUj{‰*l¢d©½ø¥s¢Cº› ¹`ïåÞCED>Msk¿© JÊâêØs1>ÓÈÎNæ~¬}€üö×âåi?“y%dl™N${N¬,Áq› 7ù HÛ&?‚OŸN}IÄÆÒ¨Ùúúr±±±—þög_s<’\ ¤±.MÌÌ̬'¹AYUµn—”CVWci¢W'5)9y4B×kjbbb¨¾ÏüýòÅᵕ•{üý'Ü 'H\¢Þ622⫬¬Dlã eÝ C[ZZÞyÆç›ûX‹•¤cgvww{¶&?`ÖìsÕëȯ)ë ‘Hà§p^AªÄ¸ß¶¹©i.4{ö졎7NàÐnJ€¨|s„Ïn0ô;Šž‘Ä­/OeÈÿ~éÒ¡ƒ}Kôû…® ¾é÷I­º¶Ýà~Üú`p™¢ªª€Áàk4«"Ö>5ÁåVŒm"_UÊ&rqmÆVÜËÎÎDv³5½â÷‰½½½å—œEYU~¢9ùù¿5óe웉$æL¨ßVZZ*.+[[Ø*íÊ|9¨¥æŠÔ²#Ù‰ä¶` 0ãÌâ}M÷;*;WpÙÁðÆ Ð껿SŠ=~Œ_ ó>ÌÌxéyU$µ¹­½>ÝÿUóò³›‡ÿì¹68`´S  ¡¼ëÕ‚’W,¼¬‰‰‰nwGò@¯ §– §8âÑK6oòäÉ ´RÝŽ< Ï'Aªps=|8òôi¾î-i/ÜíSè á˦L——?p#DÕ ËVBey¤ìºŽ¬ºŽvó}‘T:Ýû9{úä‰)›ªv‡¡s*+e@nE´yZT‹·:\°ÕvÌÜ{çÌæò¬¬aG<2Jﺅ.yTãQ»ˆLž­bX^n wØ>À¶µ³#u<É7]¹òóJÔÉ-“/ZDZXh•塾§HêvÙN‘ÒÊÛ?kA{ÁLd᪸ªÆõõŸ¡z[±îmÕ‚RRGl”§Â=ªJev·V-¨¼Ìj“Éõ{Ò¦–²õ¯íûìí#‡º’oÃŒ@j2FÜèúìtv³d ½‚ï©ÿ… j-å‰ãtYzØÚŸdpᲕC¹;§‹‚§¥á¥ed”ÔÔ&— ê²z“h¥÷¤×7üÒñpë ½ö—ׯ_ß6w*lˆ‰ì¬<6IÑî7mðÑhvï¾ GÒ8…þŸe–Ïö¤”jß„ Ôøï9DLŒuòöœðh¼;'Y¸°Uã¤À!Se˜§aRDEl“Ú`‡©rSþs9M}žB ‚ÒiÅEȹ8œèšêÙAÊËËËÊË{šÙ¿ÜÜ|±““2ô(/HÂ6Ó›`«!Y]]ÝÞt1Þ}?d›´Q|ïÞ½×j<¼ ¡Á@#³;==.8xÊêǬöG éµ™³‚¥´ÛJ.fÔ¨{õÀ1œÜ¹sgûãùœššŒ¢*. Þµï*›)úëîOOWi÷Tj÷Lž«»píZaO]ñ={b6P­Ï·µ·å’CK¢cÖØZYMÄápõ(ÎÔÞÞþ¼ëÂ᥀ Ç^Nn|Øßè*më€üž¹V,[– , q11_Mû”¬û÷%—Ëß-<‚üø…IÜ·ôõ¦?È(±±°°Hu}`¿wß’¼˜¾éö£§N‚öö¬òаìâb>É„Khrñ•žÚ@N/6êÃÜÑ7ëòºq‘{ïÞ•{¡~qâ›"e’çU;$ÔƒÔKè€ãÇ…««cˆV“ŸŠZ[[ó;::B†ff‚---ÐÜ%]9Q}}}’;P¸Žêë;1ZÏÄnÈtg2Ÿ3 ž={V³\šÁ¼3/þLßZô¤¢¢â¸×õŒÃª–Ÿ˜?}u”y«{Ì~âboý³ú³çξzU¶ôÜŠæû­[­{èÿhnÆ·hú©ôùòeeÂÑçiþëâ6ÄEEEM±·G—WÌ“Àˆˆý ˆ!+«ˆ¹­Å*¯²Ïº{×Vó@§çº2pÏïNI_´¨l®Vœ‘8}OðÅ6e“èh±…J–*k…„ºµÐÁÍL°ÅN$fß¾ÝgŽ*àokKS¥ mÅឆĻMÀæxqµSäìªyOêê^/ ,A  t¬¯v/€|½‚:Ê>—˜(N¥RÓ¼{QÛz)õ¯UOzî$ì>yRν¥üN«t: Íš7öú]F;6U¥ˆ%¤¤,Tfõ X¥wuuN„ÀÀS¦. QYÛfÖqë‚ÒÓççÖJçyçûÊJOÛTWjÔÑä$S±@E±{‘qqaÍ©˜3qq‚ë´äùvH³Ù+¢cb^¼5RW_'¬Í¹ysBq±5Ó-É?9Y•ùµ¿@}«Š}À<èÛð 2:úBMĕ҉i3|Q½9¤Šœ¢"z šDâGIKñïßäÒÒ×¶+õ^M³ŽµÛU_O]Š7ER‚`K¨ë¬™Œ«€×6eWd?Ъ®ŠqmѦMš¥{&@õ·ÿ®T­…Ö7ªé[é.ðhó.¯>5ÈÂÒrGkU* Ò¬¶ÁêˬŒ7ÞçŸT%LJ„çÂPøÛ²£Fj‡•TTøbŠúèßË./‡Nžtoïj¹Jjt”xÔyø† Ei‰—òO»-æ.Þ²e^SÓ±°¢*4ên@rr£OÐL @$¤™œªªzZº]n–aå—Œ»5bbqP¢¼gDc£¤;Ld9÷Ãz_…Ĺ‘êײ9RO¿w Æ8¾âq4ÜhôçŽö"Èy8µ& ÉìêÑ·‰Šžø €¿ sgçk­sÅ3!~˜FFF—Ò™O8œ¡È¨¨²š`¬ß0„%ˆML×VZý¢ŸNÇÚšÝÆæŠËnîôqªõjqñ¤vůß¼ícc)0`Ÿj°[øT—•= )ät>¼çPÕ$É~tufÌÜÛ'z9Ðm,¸]{“ï‚Á `|<ðT ¢ÀƒUŠ Ó•—÷B…¿QëÖ€43óÚÈ<º œ Ð/2»‘gÏëHÞ´â^\lî¢4ˆƒëéÞ8ó 4xú”ßÀbl½ç7!CA©)€ûCrËgRë«·‡×ýhHÔs/ž<<:’]T~ç‰Ìv«ü˜aV’_¬4ØÊ×O–ÚÀ`ÚpcœŒ,ƒ`bj4o)JC C£\TÛÚZP½«ƒK—îæiö‚ÂJOH¸òó‰ä›Ü§±tï> .Æ5ò=Y·yþöm0:Îöß^_âØéÒÒÞzûÖ·OO¿[йäúžŠÂßoÛº‚Ù68ˆ 7{)ûBGåK<)Û8fZÚá`¬äÆò±‰ÜçÏ ³Vu®êMªþxÔ˜/³gÅ¢ u*~ů‡øùÑÛÙUÒÕ¢ðòÚ‚Þptæ¯SÿžŸ§ L燫¬DË©ôâ™.‚®¾ÁÉÌI¯¡=ßÔ§½äª·úÈÖÐ9©…fQîÕ‘GG%­N h,h…ÅàPÙÙC`` Žƒo ¥îF&!±@xiãÓÐP”@vàlSûüy´cS¨ ÌËÓáéé—ÂÂn ;,r›\jR›“eX ý;·ƒgÍÍ?cb)àq”XÔÿÍʪ®`šOošŸ¯¥%{®j–í¦6ÑÄj£síŠÞ±ŠµÉ÷­´Š]oé~ìØ4!šÎAR =“8/ϸ#ÿÄGº?‰àË{;gçö+‡‡Áò“¿Èƒñx-°Y‹8.¨¡Ûž›ˆ¤Snïíµuu…èðö-gÒ÷÷ãá¶Ý\ˆ‹€‚r°Šà&ž6,*ìõº@txd§Ž¸Æ¦Ž(ó3?^5ÿ]ïBªìö™Š+¿³–†±‡_Àá✳y$ŒH±íínbw/^o!VVvî±×›ä`WWM¢¢¨18¯¯…²'ºz{£>LæÒZL›䌒r‚‘\…`c]NÖÆ=\r£»{ye¶JH½AÉŸSRöógd˜£“ò®Ÿ$8<ãOÛ}µ´±¤¤&¬k9Ñm÷UÑMLñ¢ýwúîoË<~ãá!‘ Å¥—>³©c€CÅjk%»¤…KÂ8×ÙùÙÛ[á~ÿ¶ „SÄ ›Þ¥È;<üï ç¶A6¡”tÖÑIþ휵}V–(ô'&ÎØÖ¾%¥"Ô9ƈ»ð˜MÏM·í]Zmã8º%•/UmméȨ{Xºe*Ó•ÆòKÏæ¤óÓ:òõCL˜ÊòOà¶]©ËLªC22|ˆ¿¤’£@pÚ¨aǪTÙããºV\Ï¡DÊËãJ¡cmè´óÅ뇄Ä×·ï¿U”Rûü­¾\úã[‹ïß¿ÁÂ&’ëDÄ¥¾QÆÁ3™Ty T‹J–ÎTq_­["<(¬þ_øß¹mI——.—r98ktƲ#¯nö*â˜tКïl>ÕTÏñõ1º£~¬×µx7wy~>µUj½öŠ‹¸m²Ú±%ÌÖæjºr‡‘@ ÉwÛˆ˜]c$ÜÕ‡#ü Ò´R"šk[æëÌ€¬fbgïðG×Äá ? ‡j`|g;èû [ÐYk¿¾2…2esƒ\ï:CísŽ3?Ô×Ù+”œkm(ˆ•K°H9•¹K§¦¦Ðut4P/ÅTâ°W°=„¨Bášoüò%ÂnëŒ8ã‘úR±Hx¬¾—êÍIA÷·%«Ýá‰ÃSS¢h¼ŽçmWpX;[ºÌK4é;_·¤Ö×?!veB¶¶–ã·i©«ƒíèp =lvA—ÏFz˜»œ÷õ÷¯r:þcÔx>ɶҮѠä/#È+•€éí¸ô+ð½—úÍú4ª¼ºzH‡é8¹É¦&îôô;4ÂÎé²Þ׳"ì¥z'¾aÀsto¼„Zo`À ‰âÀT×ñʵU…séºam*@Ó“%`mÛè6¶im-è•âb+‡jï‚ö¤¤ÂåUÝ,ë¶·F‚&ùIôY“Aèóg¢ˆÈÓð¤$¿ôtZœmmYTo?2Ò6|21§ßƒŸn«€·!eœJãèÛx “”ôo7ÔÁüœ©t’¨å7<±ÔžòÓò ›çK º¤ØŸHÀÀ‡‡‡_ÊÈðŠˆW „”éÍðFž fg¯JKM}õü¹Ðú–2)£ŒÕÖžäø]ÿ@ ÄÄð@<´ ½pw=:·¿z½|?°@ŠãÚlC§(*JHK+‚†°Ûº «¨ˆšwvpG(‹‹GÄnp°—<ؼ¤¤J‡·ôÒãW¹ú@ÌKùîMçŸ n){)@›HÈçÌfqðP:_o•21IˆTR…wÇ |Åù£FÒ©às¾I:Yã·¦ª,ƪªÇSZ5ÖË­ìIü‰ÏyyY¥9N·Ä/$³:«L{Mâóó“‹bähŠÅìÎr¦  Fô.é^±“êÒ/ºž~h¼1‘ [°tÕBÀÿ #ÅýÛ³ ÒŽN1íó]³¾Ì\ZqJÔ€uõÆî?Ñt×?%ô¥Ê)yB¬×`«Ž]€ó¹¾nCéI¢ö?ÉXPðÔÑQ ŠÚÒPݽ!--‘J÷Á;aÀÄ­K[[Ÿ»™ƒÈEªæŸ­7(.Þçà¡ÖÖÞjœgiy*9hvh_Ÿ…‰……°¤äõîß ^ݽùžiibÁG¹rîþÁgíþèÉxsÉc¸ñR¡|$òȪ_fi}||˜2ŠÓïïPJN‹BòûÓ©£>FeYå©`¹Œ;4P}4òp÷è ËÉ™i¾'è AlÕüdFlx¾{_ëÄ px~…Ÿ%#Àí½äÞàK§üóˆñ*éöÂúh#¶kd~Þw+…Øk£êÒ˜b(ÃÄÄDØÄAS¡úÝB½"œ†! tfzY2ñ¤ÜÉW²ºŠ¦ †t­Šæ s™Q¦­¿V¶¶$ln$440hiwe5‹ ;VŽE–O÷â^ÙtAÿù9 ÛåáæÝÎÀ¼Fkû*_PY„ô.Ð܉,xàœº»©bææò€µ“Z¥Øú;˜°àN„—eT¼€Vï`!©c3xW@÷8lݯWV¥ƒ[Zäê~Ÿ‰°@!¬ÿ¾Ðž¬ùt@3íV¨wb¢t !'{Òd>®–ã‰JbäÐ_î1Û¬«jð>EÄݾ ¾{FìÁG„u~w館§Gç~wüªÚ‚¨•·_Xˆ[ø>‘½"PTD–ø4¨Gk*)™¯£«ë_ZÚÐî#,¤¢zÿXJwY £La%)i’*Kͳ@þÇ€—„º»H‹j§RÑ´àìS_Ÿ&ý3XfЀ¹¹¹zƒ…˜¬æ Àº;¾âš”ZíýÇÀ0ie¯˜ì`Ušù’Ô“ªþÊ1-Ó©@«}¸PÂâ”6qØ%¹mÛ¼ß[Ùï_¿„³7¤ÚÜUܸ ²n{g§mªf­u1M˜ŸmuàïE,Õ¾* A­ï’ûGu†. ï7 ùâ~·Ù àÈøŸ´o/lýC ôÖ:§5óbä¾4\ÈðÅDGu1éj8<èº>宵ËÛ¢³%R”–&k~¸!h¾¿€ y܉Éäáž)FÁäôïÌåÝ ¡$_/cUWà0·!¢£/‚ƒ“±)4Íåß<-«}úéÒ<¢·'ïi¦gù¬˜¢±ðÓ€[ì J&Å9…[¥üˆÀ˜„›Ë¹´9 ‰9|üûq1´@iš¤‘9ÍLÍ- ×~&‰;2@>‡%<* >OÁÈ&gÊOÞ€òC<Ê¢{Ãi|'¯• jég,•7°KÀ½ú¢^v­$ãpô?%!y[d2°‹ÆÛrï€ÜàH•Q{u`µ´3æwÙCõ7/ïÓé@ šÿqÊ#Ÿ×sDR—s—Oì½4*åú®%„9™™xz®WWÎ@ÅN…žR;5ªšÍؼl¹‹€õð j¼ÞĈã0Ï­oÿövŸó½FíOd„OŸbüýFêõmd~þOɻ嬊ÍPFG+†‚LÂxfe176¨=¢- …¾â¢ ˜èçÈ//WíÖ× ²šjÕ)3Ë}¼¥ÿ,è)$ N˘Õí‘D.{Ú§ÜÜ®**8zwW裸p¼0àÏûVÒÂÒÝ\^ùÉûƒ¢žŸ‡ce%ƒù\$)™ÛʲvÚÕ„iøÊݵ—2@šöþ~œ±lä߈ŒÁïeš¦t 7«ôãx˜ÍsÕÈ,JYN[Áò:^ pdq.N{-ÀM`Ôª @ü臚CÂ7ØòÈFJê:N8©Ù³ÞÝ]Ë«ÎE‘cn>ŠÒîÓúµ½·Wa!íâ#Àg 7Ö·ÃéÞi&£I ª&ª ›Ÿùð°‰T)ÙáïȾY¦¡9ËÑu/.h+ÛúB)çút!ïÞÞo›7%¬”¬k¾n.+ìõ§Ü€OUé{àžËÜz¾÷‡ëÛe(‘´8ð5||™¾J"PJ¿lëoÆãu*ÍËC®±Œµ—茊RXšJÆD_áOÝ’ÏÕ7T^ÞJ)Y®Yú MCPR¢nŠêŽf¦ ÜÕº7áX6_#^ÝÕ €&2¸êt¥zwš2â´WDårïôSçküù 6]ovÐÉ©¶ÈQ… ºcyÁKÛs橲)¶ûX.1x…~êZiCGP@>A )êR¶[µ¹îÂf À#$$tXˆcùßZ€Úº/íC23¤[[s¸ŸJ«³ET<&')Eël6‘Ôƒ_¢÷öE{”ÕÔœÓAŒŽŽÞù¥‚ M"8¯mfßÍŽŒDä[ú¿£SýÈ.¸>ž'Ñ.ÙGG¥íÀEƒŠFhkob/×øÀî(üá#ÝwR¯ŒŒç¾HÇÛ?ƒÓdz¢ñðÕ¬·‡‘ïîN_gfcµ÷õh13ãºí† +@Ä·HMFçtS‡–Ÿ³ób×sÅÅ|Î+‘ãþ9ÊV»€Úû»} ]B ]*dB/¹^aÔ©4\ •—÷2Ûï¢5>>Œ©V¹fg£çå‰.[½ ëýö&8™É‰ ¤·»%¤?_V ªfòÌ‘f%˜f˜E~¬I«ãHȨR| 4¡ÁRîlnoŸ( ýçŠûò„sÙoãO·YH¼aiô+‰BQÁ‡Ú'€åž<Œã±GÈþ„ýê2º†”h½-‹ç~³ÃÂÂâttj JáÙæ a^õ! P–\m‰´\­ €‰Õ=Ýt¶öð” 1‹ÀÃjf¦ëðÖkaÛ- ?)Êö‡û·gµa¤á:K(f\¡Gm8oµ¾~ª$fp=&Ŷ·—¶²*}§ŸÉ˜ž1ƒÃÉspP½‹"Ÿ‘·ØQ0éáX}377—¦Ñ&ߘ¦Ó‘PTVöúëתåã([«Þ^“ÃJÅ…¢æ‘©)ŸŠŠ×*oÕjè©çrÍâ•hó-ȼÑö6N/ÛÝS³:Û–†ðR¹x€æ/f…N£½ß¥,¨ iz! ²Š5èÚòä–X~G÷E>}çTË ¸H8¸h!G¯|ÉM€,i²Ô€È˜VWÓÇ5ó£³ cz†”eª‚¥(Åíξ{ÊþZØêjqåFâ¿|ýpg‹ Zñöî*,—àÝOoï1&¦á®Šµã“¾µJæo‡V:Àú!†á®¡â'69ü*z쑬 ïY?ï,ÕVÖ,ùëWm?òòÒêÛ©<"Õ‹ß}ͺLÂß^-/Ç‹ŠžH¯¬„ËÊb721y ³½»Ë4—4îš–ïû‚)À‹%62"˜HÄzoˆ†³ýÃ1ƒÉT rY„‹nä¯pœÅ‹HÙØåç㥖”¥¾á¤DÇx½dð‡ïeú÷¾XÛ2G–OIµÏ10„ùNûeùRÏãåƒy§¤ô\©ð 0 äÊM bää¨1㸎?"õ·ÅПN`uåÉã:­øfIBžéq§ÆxbƒÎa) åþá{J ™R±ë+ÀôŠŽ*nÅ ¦J°YS-h½’“Q~ü8°ø‘¾ÒÖ$NžVZñåúWd»¸fò‰ÝÇ g0À‚#ó nQzþê–·}4â•Ñln–è¨Î¤ôízˆ‰Y ­ó˜»J­óÚÆÆ»%²ÿ\Ý«ŠÁ¡68P¬\.É“„wõ³¶—Zé`¶µÝ(«y¿“õ;;+çf~M š›†r‘ êœYß~ÅIêõkRH¥¦¸×=”-i0YˆÎļCœuÿ9€×!©[‹ ë'I¯ .1ñ¹b_.oLh¬Öºá`£pU@£­Gâ;ãm>‡•OÚBÇ©ì ôðrwx"¤\!å"z&ç¨b"¯8á¹¾ÎGNic½"„¨SÛÄÄøÛ¸•6  ñæú(ƒoÿL,H2ŒL,0 ëxZ&W÷¾÷ÏŸ„ø¯R³µ­KK‹?Mënn°²ó33o>íE•›çÂA–ÉÞÜ| .ž“ˆ¨0lé¸3Q•4ºÄaÚ:ÒŽ#æËç ½—4:vÆâ.ª»ɘ-5õSŠöAY»7 kn-®®šüã¦þ™È¬'{ÓúeaŤ²šƒæáf"° à mCCß­ä ÖÏÃMLœþýû²På±Vݽ%7ÆøøÑß@Aóí¨½ß@x¡º Â^R4MT–`Öys.þ3*ÊoÛˆ€ó—9„)üYTìf;ìªªÒ Ö.ÈïÑÏ7ŸèÎqÁ<—wPx¯¤8+ë2Þ:2>ÞÙ_CC_ô$,Gj>—ÖJ$Æ34%)é ú ‡ƒÔ«®™™ü¥»EP)Ò"=¸£–•UŽ·R8KÍ羬¯A³"SZ)þ"Œ×V57?W.¡‹üüùåÏ¥1X/ÌÌúѰ6}@~þÔŽYuEÄRu4»ü]Hü1;+L´V[›ëέœëV%e”ËËa™ ¯µôPAò·Í‡ ?±†°+´)X¨qB}îÎÐ{¤ ±ë•>Æ­\Þ$"ˆ\©R„ ¸³?þ¸\òÀ#"rØE)X2J)¬³"Á®”Õ”(: ºÿù£º ƒ"ñ‹Âœ…µ/^_r ÆÈ<úÇPÉ^¥9­ V·kK®¯rA§ãÖâ¼ñ'’õßÀáŒ××?|p¼·{h0ð²®$X~ŽªÀÕ+ 63“”‚‚¨üný^Ef`'ÄTâ”[¾=-FVUËâr>á€DGÖÇ:+‡ê¶þx²£»ÓŒÛ}õä$-ff^;ÝîCž½„ð‹ÿ–g{%V+&—³sHPëwË£̇‡íEs´…2Ä-uïo2€[AÇÇÿî¸èük¥H«Î±Øß'³³<?ð8Rµ_áK±càõ ÉþÄGN$LU0]£2WÈqnT•Ȳñ w÷‘¾uæd+ŒC‚®8·ºבr5Ñ’á8¼ÓAÂ[ ž'ƒƒJnxâÖÖìcÉ+˜?ú6–¦ÒÙ¾U ªkìD.,¦Î6ŸwOLR¶GÊøj_üe’ŠcÊ]¢àQP˜`Ñrw†õ‚o p¸»»Ñ*g`¯fƼóûÓÌ&Q)õí:ÀGãkIý L.>°ú%BÚ ÅlÚŠ $Ä@&³JµÙ+s–ož››ê JHØÍn H<<<(ÍÀɶùØŸc ~œoàpHÏ€¡ ïn]£1\ˆŠŸ?u´÷sænO*1ŠÖzíÀ‘‘Ñ¥¶V%¯*0Mè–ÂP"# ¡Ôí–ûï|<‚žÞSpÑèAX!»‘iÅù2æŠjQ'² 0òòÂÐÌL43™øÍ0UM“Ä[‹NËöƒåŸÀ2zÂö§ÌT´këe<Ô iôô¬¬ pz¼WRrn)®¾r[m|’cõhåõ.ʆÀ’»Ë“7$‚AÊrÑôÿK7 OMµ”t.CsEL~¹yÆ}uýCÛggŸqðñßG9zÿ£4iÙ{4 óîµÝü¯ù¥¥¯€Î᱌ÿüëâÒq—3è (äÃT^¬ÈÈEW;9%$¸žòókG¤wÔK·ærޱ‘Í1߬ѩð'3s]ø­Å÷¦&n ŠôiõÀ3±oÝ É„¿3‘ÁÂ~£©^†É¸¾À3ëzÇÖ »ä^L°Xø‡¥Àö±÷;¿ÇçüL ©ÌÌ«hþÄß_¦Ôj…ºPõ<ª¾}‡Ôtõ>7Ø¿ûô¥®×úý‰œåK”g7øßß! žÄé\R0“k-UÅ “#m,·ôEÔž—À²ªe(@³ˆªªäÃ##O‚¾ÚnÔ ÂÂ&¡ãlÃrÌÅÓf!dÄäEDàå.væ*yÌîñs‘ˆ`QtÆ„±{­÷ÕUäðÈ“˜·¿qèRâ•&É苼¿ÿŠQ‚ éDJQp»‘dܼ U™ÿ!ìg±ÜEÌH<ƒY5k² "–ÈïÙY……{ÄØ ûÿ>N°Ð~Œù+¤™ “ó©iÁ²eŠÐûþÜÐ÷ökÙ=º àn¦¯Éݯ)ž»»‡ªÔ|JäPXÐ1Nºh÷aÔ\‡fÙ@?ûŸ‰Ú±áit1‡«(ò!ºrÅæZªJúÓ§çµê Å3‡ÇÆ|rrámDµSm.Sß3@býRÐñÃÒgÅê–Ø+ÂWœ@Jÿ쉪°¡º˜àÈÄváHN¢¿ 1š¢áÁJFØÃ»/_¡˜–HoHÆß¹®üZizœœœ‚Âs~þ^zÉEÇÙ(×åm aîÛ“˜þß^y?{ÖVÐ:þˆ’ð$ ×K3üëËÁ=kjø«ÍâÖµ9AIÈ…æªVÒØÎ:„$ïÈ…JŽUó†T—^ÓÃüI%tèwXñÐyhVÈéñ>w§à ”-Hn±Î…•6‚OOTÕxQ°CC L¥^9¥Fö¬SÓ|]4ÚZ? OÖô½s%<-Úßo­͛͜6£úf+}@Þ-«É°[©A ¤@hBX]ý…F©jÑÙiúûŸò4ï7$™2Pi¶µIº^Ì0C·“z"½Êöƒ‰¾¤M»;ÖÙÎÐ…æþl8Õ%%mÔù*ÊØ9ñ^‘â´5ög´}$%ƒäÚƒt``~©Í†&0Ü+ÑÊzù9lÙçûE5$Üܨ—ŒoïÏ.¤Ÿø’«BßÉÄ-þÿ¸ÿ¬ÇCè×.PÐλk3`YZ´ŒjK/r Lw–"#óò˦üŠIr“ë ³¡Ž'$U0߀Öl¶Fjc]áµ%ÜáÂÛ‰fÅÞ……˜WœÞ?áÓב®çÊN×3ºÞŸÞ×_wå¯ÙDÑ\µL§zsÒ”<…ÞMÎ`¾>Ïo¯/»(ûeö…1eíÀ/²ŸÎ#%]Å(Ô¼Gm<U±÷3ߨ -þ ÿ½™™w}»>Àd·[.pšgxxªÇmˆz¥f3ä&í;û~ˆZõQA@3NÏÄëS f—w¶{åÇUú¼“"Ñißxùó—Æ÷jާ[3ÀûŒàš_ZÄ|vK©ÒzQœ`qC”±Òáý󜇘ñqRHgÓÒý¹Zö2DÃÆžØ8ŸkÁiv寀p2}Tuïáƒ"E…­!iyÅ¡RO³úÚÇŽ’ùe §­¸ž«4r‰‘|Ux¼ÃqØ—„õ;%¹ut>•þúgÔñåŠSXZÚüjÅO„œ<é{s3ƒ¦;c[¨ÀÌ¡¨M,€:õ&Õn…Éñ©¦Ä‡ôŒ™86šÜ9b>´«C>ü‰‹Ü—¦ü{OÑIÆ%Š7)éí!ÏÓ>gþaðë[ˆ#ÓÓ/a˜XFýrrÜü—ó{ño’ÉôµÝ;¿gÁçHj,ÊAÃÀðglùÛ¨êÁœ ­Ha»ÜÊiÌC?‘ôÉr//O”Ðqow÷ ×ÕÕ 8ù¶tD ÆË½pžÂ—ú_£É€ÚPg .*ú Ý zñý;ŠÃŸÔ÷½™ÈŠjá]YªŒZ*¹R“¹××Ñ€¿«CËÑæÌWöö`€,£t^;<|æâbk/øL¨› 4´39iWS-éEÒ¾–-nO6/Ïÿ&&âëL3É´êJ E0ã¥VÐÆo¥‡,k”DÈÕÕ¨R ¸ù"Ì›àFO*ш…ªÕÙŠ¯.8æäó&uÅÄ í‰äÔ¾Mz -¡»çÌzÓþ¡âï<›ÞL EGŸ_+£@äø2[Ò`³]õ²­ ¤Ü²© ³Îñ*Nãé fÑuÔíí!£îB}»Ä‡k´ÐЄ¦*†üñ öµ£•]”¬¥zëŒg£ÿ1z;jÊH>y>å¿So[ÿÞ£;hF¥e«3àã)«}>3³!UNÉß5ƒ—•“Æëûa2×·½|æ“»ÄÇD'Ë„:¾"lN¥ÂóŒ’DNÎÄO5œ¿¢ÙýóXEæÇüÏ!ø2ží4?BC˽Y¨ý%ëØ£…ÒÞ}þ,à°_ŒAeñ{|¡ÂЄáå“'ƒ»(%]yù_'‹ï1,,8€’÷ûÇs+……Kèãðß´8ôü¾ZÄÝEÙ²ü(MßVi¬vt{h©½.ˆ|¬„‚Ò¦ÌbAG_ÿˆÉ~íîvI~eãkÉA)Ï Zƒ ¼®5+!=“Í?ó¿þ/¼CêÛÉMRgñ&š{ÅØ=§ÛÚpQ´+~¡áí†ËbýðZ¨ÌΊËòÊ7//ïN%4ûúuÖíxÁ_•SFb ²4Ëï…ÑìíìÀ‘Q5]­‘:C½³(Š&Øìí¥¯Î§ ®–#~ÆR‰¨ÄqbÑãù€®3Ùgœ//Wm<ŸÔ$§2Õª î]©ÒôMAËømŒCãL"3Ù±é¦Û×ö~£‡4˜/ ¸m0 ‹öõ+»HH뜥`Öñk…YÊH2²µƒÃ‰¨(ØÊª¼H*m‡¬@Ú+ö¼Ë÷::¿^â]¥d­HšY][×–uÌ®§dÿ5éI”'™”Â(õŸÛmʤ‚Zþ'6è0­­ïP‰ˆ7g¹Z‡†Â¿pZê¼?|°C•„»LT)0>6†²²¢™›‹¶Öíj6ˆ=Ä ,sžì@·Óëúzž8·ÚÉh±™òñÃmËï Å/ô¬fq }¹Ý/ƒñ/¡™ê2ã1u?½Áä!õyN.k]Šªv‘ÿ9ïù+ìݽÄãÕ §µQ‡~ ‰sVû³@†×XƾÏY³Z9²²Lxñ>ŽȪ!r µSB?à€Aþ=9)µ ƒA?:I)ª£óhEIÉüx‡¼ ºÖ¢B)ÞÂDT+1íTD‚maX!¢×†p©“ù$ÍÿÜZï sÖÙÞ4ðªYZôó‚—?>Ÿ : óðÎç5;AøoV¥ùþ‚´XƒÎ;%…LW °øs:ºý;¥7h@mkYoJQn…u$°éè¦kœÚ* J¶›–ì·~$!·°r–K#Ïñ„“ׯä@–MÒÖßá@JD¨ w{ggµjJ÷hôã‘ ¡²â„ç”æœO˜`rhê›)Ðè‰3:‹yêƒÒ’229·Vú™%–Qdü€ç åA;;YR«”@r%àm$æ›ÝݤåälvT£#ìÆMò)Â/bå¹Dr¤‚¸€›äDÁ3?Žœj‹9šX·—«9ÖH"õëúƒj„„ t×éïc@™ÞSpŽ[ˆeŽŒð.äÐܵµÔ"K)\®\ÈJû~!!4æ AÝû‹ú¬_{)œgtnö?jC.GYkÁ§ÂPùûÀdó‰&ir“6e­_.—´¼‹Šp• `£7"ÏÞw  ’·MNbЇ6~`5½yò[`gpôœÛ¯‡AÊg0 ÝÐ}ÿþ~ý¯Šo@$€déÖ·‰KÀ#e~þþ}1 ¹Á²/mFfQü¿åEpäÇsš´”[lcåX,}Ûœ¸„ŠªvS'Ç'9h”ƒõXëu,Íõ}í YÈÄœtúq<Àõ2›ÅQó>b~€|u1‡xµ“ËäÎWT±Hþ ÷SR­ÏBC¤õÎg>þýRí÷䛃„/€f±÷›¢zˬT²6–ÃÊäáN.ðàT?ižX?ϯR{¤Vd~Þ÷:Žë‰p÷ûÕ•ó.ЏÞñµ=´êðïB"¬¥%|ãý&ßýÚööv*`Š q—y pnnü\<ªËÛ#œ;òîÙnU¦º¤Ø@‰üÝ@Uè@øïí0=cc èÉ‚{TQé/`R×ש—p b å¤â;ìÅÅ `þHÈ;þYê‹â€ÏT‚/±dÚ"ºkQ%ýܻ팣²‡ü¨/’~TÒÈ+gg¡$þDŸÓ­ kàW€†âê9°ºý8bY_šxq ”»&‹N™M•TˆE>a§hùñ»DÉÄB2ŒdÜC‹î<îÈìÞE3ƒr™(¸lïí}–È1ŒžƒbH+´¶c¥½‰É#I€ÿILLçtÕÞWv±©†‹ý5mÐŽ‡øí¼}|^ 7¹=»¾r=þc !k»¯órÓerçÁB—Í:eæg\˜wZZ¨ÉÉ\®NÜÈ9û9³¨Ø›V/¡U„¾¾JµVNµœ¡_Û{zòç.ód©ÑðnH2A¶´?‘3bÁ¸î?C¡HîÏŸ ˜ƒêôÜjÑ‘#Ñ9ž³Ð¤ÑR$Üщv@Ù~&Ý›fòYßV<ɪ՛õ¤$>gü¬,v&VÖ¶\9÷8>I;ÍÍàxÖGÔ±ŸZyù&>†G¶3(/Ÿl¨ÿ]ü¬×5ªóßTþéPØd‚4ÿ¾r—ÒÿÖ,P`NêïjYŸèÃa½^4Á°RgdtùgAŠ€×gù &ÛÍÇ•0ÁÅw"Þʼn1€uY7奒 ‚í÷ H鋞SYߨQnö¿È Lè²Z{1Y"øãcìIjFFkS Ò“ÑO:"W ºGAãDxs³–»:øX¶6Wþ×½®Á(é Ä‚¨ ¢¬?ýÿ toÿ¬ì¢ŒlŸŸGð‚«c™@ÊÏDF.¢lÊËÎFçæv]ß|×bk{†ÐckKvuÍMBÝý Hv©ï‹îEÙð( Ù$¬­Ù?ýêm͓Dž–DzÄáâ¨(Oy¿Àh‘ý‰è~³óµWä’õ?yl“±12à¡ãÑzÌ_{—Ÿp“Ÿ­°5Þ ̰n7a½õï'æGdeÍ-·t{¸f6ž¨–'0<<<Ã#O€ÏƒÖƒ®mlœ¾Ií"pêñþ=3'VHF&Öùæm 2WêίÍU«—Lnß„b§FÆÆþŒç —šÏ INš–^ >¸œž™‰GIé‹€ØÐ€¶ÄºvwmÖ½±¯…Bë1LØ'æzÇÇÅ{ÙoŠœ~­ÏÂÝÛkò{ã$>SZUõ-]´­°Â\ºð—þ~4޹2Õ ÜwwJ€V½þ”ÿÎIlËüðžÿþ§Lm ¾ zª´«¬M6±ñÒG÷cRìžgYjÏemNJ\ ¬Í…5Æ(TÂÏ¢3[¯ñ`æQýÿÐCÏÅ@<ïàðü¿Å_*ČΠ|ÆÇuûãÊ^ñ±"=^zX_j,6«¬uÖáð«º|u9вZn­B xñšŸŸW·'âX¥œnss6<—0->Çpîvöö;ýT`0;61ñ»ÍGN¥å¡N 0ø¬X èv& %àLE¥¥ÉìHÂíšRKJà……Ý\ïŽ+D…ëÇÝ‹Êi#c©<¹ËÊb†…UË”~çY~¿®Í„‹Ë'•ÜøÄód+\%o#HFð—¨ÚDMžÁÛ Êð¡Ã¾ûBzèAÜz¼V'U%åRah)üùópIó©k<Æ"<ú9CY-. Éãw)ÊK¢Þ¦òòD::<õ[êO)ƒé¢K·7 r¡%]e6‘M8¯åà_rÿøçdÃ…ÈFšp{›šÉÝõ Ð6ÎÀËß®;=õÙ~œi8-Íí­A]^Â}‡&+òþÝ;¬¯ïdѬ¥Ó¼íS·rgÈóO{­š­”•ÝtP—­”óCm..ß¿;Ý¡< ¼[€u螥©ßÉ0æÖVCÉv0É6Å0™;Év¨$t_B¢Û öݽßG’LÛ­ôRÓ©×óñþ¡„smCCø‘T—#q‰Ÿ:q€ˆ)¯Ðzk°|ê ÄZ±¦FàニÖÇÇà(ÄÉAî÷µ(5=Y™úSuIC[:WVœÁDû#"è4J}1ez] ýñĺeµƒÏÆrêðN¹ßªªº"<Û”üF¹C›STôœ¨äN·Š§ð‚V¥…¹ÿÎØ-‡}­È÷+W¢d·'ææô=Á£Ñ¨„¯^…=Ü{tÜœ¯/ºXHcQÉiЫn§ÊÜÒ>Š@Èô½½”G¾¶È)f_:XÓ¤ÌÞnt ® ¿uפS½Û_ò@î [j‹ 8Ô]íX¿ Å" 0EÂxSd:JRNV6Õ`ŠZ\Ü–‹ûËð•Yæˆl_<œÓ5†|ÎÐçÏW®Ë –{f¸á‰jþAØÄËKh˜g0ŒZ1©Â~Õ8\Ã/žÂ;¥ráfÒ²²»Ýþhy´êO^hé¹,)&âïí˜.SêØ³œ=88a .­àö¦ã×ÏŸ>ZMd⩵*þèdõº»ã5Ã~„~á¶z·o 5ÝÊ;9õ67Å$¤~çYêÌ”£ãÝš‹ú¡h¥ææJí²ÐÓ ,:ç V›'¾47?ßeu»±{&p½Ó¡ë;û }1g†„7ž@&߸ºª›Äm G*§ÁÙoéËì‹Í(ÿ…üÚù¦!>Þ§{ˆ±ÄÒUÕUàÍ«èØÇJcØÚ†Dê·”£Ný+;;4¶MrÕË7çÞª‚zÇN0zïj,²ãØòÈ*«v|ãÆS*ohÌ¿žñEEI<>Â7yœq¸Zñc>:*58¥’³œØËQéÿ™”²½ãðAXJ ˆOBøó(«¿ˆ.ð`­3u„õve? ^ƒ/¾ÎÈÚM&ÎddÞg˜…QsJŽ]Ÿ^2;¼ŠyI‚˜šõ§+_1ƒÉ\uÂS^^ky¾Ž:‰ß§´TÆSÀGw{x‡¯c¶f«™˜è'H^ÃÃ_Ù~8“»þ˜ eüH±$râÄg6}„Þ¼„Qf¹¤¨^÷ Þto2ŽçœÞõLŽ±Ò¢(Þ‹i©.2øréQ0O/†ï­&ß³ lÓƒÊggQ+››Ï»,öŸú¸ìiam·üT‚ñ8Ãfg] ¿°ÂERæ-qát…¶odpÏ †å<57_S,JËúŠDHˆÅ'¦¹øup•ôdlrRìË—}Î*Yuu8ñ®,EU©c'>#ÓSèÍ*8^²*.:ªÔo]}ÿþmyƒ…MMêš¾¹ž—¢Ë,Üú@ÍPìÒt²LòŠÙõJ‡Óî°8—•’M)Wäi¼à÷[#uu">ꔋM˜"ⱨï 32|€¤Ãàx-88¸Ÿï*GF%“œ¡\rغvÌä`†êz:?®«2 ‡ÿ–›¹h ×Ç{ã#§Ÿ®}Z‹†·”ÙÒ{AÓÓvêµVÄ[ƒ ]‰†ÇÆÞ·¸£¨´¸óù¢ì*°æ¯oa¯].µ]oÊêf‡{û ´EÑðjQhRá;ñ-o¥ é´ûz„GœÀÞßò®Ni=úýöúÅ^kaaAb084ûíèØ ©ÁQëO¥q2³ñ|·¢¨ªjñøVUå‡T+Œ¦ý¯8%š÷§ßpS†Ä¿ÕŸÈÙ é8;’Ýx³u„“‰3¹7þe^·±E„DÖÀÁÇO•Æ4 |Ðt´Û…FIIOËÏ8ËCïîêXAðƒW·š 1oóÓÆƒ]»¿ÓôI~ÉÉOW©?¥Ç¯¥À¤æäœš4’›/a¼»^g#úº âÛ3€áø3E ÉÜ\€€ 7'épqk¡~&U¯«Úå+:ÖÅö„ö4RWèBÛõ©œJƒÁ¢[l}L>ä`7‰` ÎéqGÖGÔVœ¯Vœö"µÛ#kj™Ù͞ЂF{ “¾eX.…JÎÁ—é^į)zÀÈ}µ:PÇ4¸yM^;k—¹ñ¢±+¬‚ÙB]æ­úÇß¿Ru/>0u.ïÝ——kNòè!é½{ÿž¹ùf×ò’2T–;3kcÜéÓÇ °4a^½[‡sPÖN‡üœL¯O7 sGˆ‘¿šJh$õî600ð®­eW÷{ï¯ '—‘øÙ؉/Y?»,ðÑ×·ÞhB·×y_z\ëO­ìwn±°”Ô»z æc܃ºÃjÇÛ ½»ûKiLìØ´¯}›0Þ×XTG,Ñ«5­ó¼}ûžå B–ZÈÂÝ``6ì½WR©Å—ŠJåê®lÀᙾð¨Éº³• 2CçÄÞ1XÄ„¼ :[ƒ;Û³õ=p§n΄dâÙÖ!À[½UµCfö7W÷ »»Ó•ìo,×gbÐ .>gU|O¹¶ÞÓpuÔnÃQøC4‡otÔM¬Ýíèäfû\«Ã߸lô€ø—dbvÏõZï®áÉéDH™?N¶%Ä#ñF{^ëxøGÏhR Qhe±ùìÜ^[OžÕn{ëâ"»´‚Õ§©‰FµjÔcâD‡½kã/¬Ë«ÉÍ™ð~ù©#ÌÆS=qqÁ?ûsjí÷˜nèïí°BƒKKSãÄ?ÛÖ ê‹ÕË·ã/º"€pJfˆ]¥Î†œRz·èÕe²ˆ@TRž°ö2¡ëÍ1Z@G•{jÔÒ;—TÇË iv~ç‚˃¬å‚’Å5Ìè—Ë×…*èol{—ÊY˜î/‰""+¢uIꣽ[ u³]ß|ðBƒŽ Ž(1Nˆ&7¬­Ç"b«Ú¯pùp«ñ„©?ÅãhâÍïw’½ˆÅíг#0ûÇ ŠŒÙxsñ¹Ø„„ôЪùŸµ1ß`®z`Їz¯m¥Pµ.&7Ã(ÁG%… uiïMEĿЯó|ð…v„eðópùWÛ³±ð=Y,=¤¥_¡„¿m.¶N¯¹¬–ߪqý¡)™ŸêO¾7 ±6 …K{K‡ñ^Fžˆ¨‡©µ¬''F™·Žš£I²¿V»+4/„㦅öÛ£›cTÂñNŽ SfΖ5á+(ÛW eèž ±½ï‹ùvt†)aðõ%BíSâ/{×ø/¢ =8\Gâ®Çx¯Ö#¿Ž62¿hr™às¹x¥×iö{²ûIwlÜzz¢OIµ­Ýx2FÛÂgûsr–'‹Þ²Ô9)Dmûï«( œO k‹‹9ìì*[·NAŒÐpœr2‰‚™¯®îB++ù|tLc§Z *Grdà]®y¹l;QA8Ç z0©k(f$¦ûƯ‡äïØÆØ"•1ôÖ³LÏE{­óÅò±õÛ·#ÓJŠ!¢¸Z===qÌzøæÂ¸¡^l_´òÜ#f©Ûo%ÏåÝ|ü¨$‹£÷H1e•(ÛØsŽ/æö¬5%1DÄ1³ÄúâççÕç›\”õÄW–Z‰,æ% /÷DH}M§ˆtWÚH^úç[CU6SO­?—––FM#w˜˜õ16ÂêÌH$zëì¬r¸Ñ™µÒ(í)b§ås==·J“¯žJEg#ùÑÁ!çKµ=i´±‡ûs;µNÌxªª|Ó3¸íUôêêR+ËÚow²###=þôÆ+©*/ê 4ÝÉ*ÜHøuO°P¯w¢ï¢Þ€•~tŸ'É]cޤÛk—K±åѬ>£‘ô/d"Ê‚õõõÛcâ÷ÙÇ1±/’ù](§ê)(( W}Jâú~wçŠDȃ™Èi)6WmþæÉ“'8Ü6™¤íEŠzDðSÇáS¹îŸï ÙkÜ}½½µ‡SßG|ÁÝÓ5áAží´1¯qÿè;=ÍæäR"ª4Y‚p²Ä¦ž®íîî>]ª#½eBn()) ¨?(ècäól)¥"›%‡{½I))aggvg»ˆBi¹ƒ–Æôô·0Ö4@‡ÆÇ_[ÙÊ÷_qq––—ÿª.Aâ±CÓn…qÁD$ËØ4šù,3ê}ôpkåà 4-ˆ¯È ÅË ÏÅËÛ:3;Ø'èvI%ƒ™Ì%7i³P3”×£Ú—«ÊÝP[«=ùÖò“*ÆÆæ&)…hEK|ïà`ŒË‚h 55¸~&Nήò¯}L†ƒ‚î0VóÜüßäÒ&ó˜Ã¼ö®ºMóÜiYóSÔÇFGß`¾´^ï癢£}¥»3ŠÓÛ¥óÌ©¤sÎeÁ)ý «€jåð÷p9V Âübèû98&} ö’ñ„Ð6ÊuÚáv¦" ‚ƒ‘°01îC²,6¬×Ä`+J¯¢øÝn„HæP_¾ÔÅÅÅ}9SM+{vlª{-&*Z–›Kís ŒÑWÅCkxMsóضÒîå1TEKOÿ5›ÑÀ|®ú+ìwÏçppJÎü0'ë&óä© tuÛ6»ÉûP¸Zgk,‡¤¤¤¦Aa—н}«ˆõVðbÿü|ÒõÍMyz:©¡a ++kÌÏŸ²[õÁÌ––C€ÿf,8XYXtƒ™c¢£ÿt†àçœtÉih”MV¡Âü]ýTèv{ô.äj]néF^KAPñ+?ãæ:¶¥DAp¢Æ}s »"OÞ‘™8eišséYé/^¯/ïZͱ°.ü)ÈõËÛÚ^ùü‘Hèœ.Ó›LùdzpqÇ‹ø§$ÍL»vŠ–º`àÔBí‰ïÿà•ý~ã­à׃…šM ÎÎÎeÓÓ*XÄÄCMM¦êQ¨xlþüNGž¢""¥DüßJ_Ó)IÄ $°½ÆÄ,m÷C­P*Rý y9¡¬UŠª¢¶– »ëæòp(†Q‹ÁYã«}Ñíö™’Š õÎ7o<‘ñ9‚™;§›Ýn§{Á+>påÐ)}9Fß¾¿ÞJy+(ØòžóE¯­Üûè%åüÁèk·¬›¼‡óÈ\FÉA¶ŸõÑ] ±ñ‰sS/çšëç]Ù1) ñˆ)à¢+î¢è¹ÉÐTôõ3×­EDDB‚N%‰üüü*B y%c z3wÆIçŸð¸¸ÜâÍÝÕ÷îªÖ@ï?œ«4ÆÀ@xö–”ô Ðì3§[Cÿg€ šÙ(œØùwÍŸï3oòúé&dÎKRDÜ&b’Òfؤ޿§œ_‡â…&$AöáÓ§b–Ÿ^^Â!öÏ`¿¯[nÑÞ'ÑÓÓ?quŸøøc||œÛ¼ðË<< Eä••èUêÀ¢zŽŽBË@ άÿ.6áó¡‚ßM.—1¸…n\ÜÜB¤óv!$¾Èu§íú÷oãE%]Èd˜F<šÐ+V•””œ®ŽÒÖ3ÄÃL 1°±©®y))áög«"ùŠÍñ&ögg,\]]£§z,Þ½ƒÉþô+PËýú9< g]7Ìòß™ ³¸^â®þxÖß½j¤doßJ–¯ŽŒ„{´Ú)¦æC‘Ø9–½W½ŒÞÍ9súg•=ñç{SíÏŽaL»G‡§òèøù è³&ËÈsò kªº§?¬î6í­!)¡*¡I—¯JÚsQ?W¶[@#ŸÝÚÕ !!áÙÒâb†Š†Ú¸?‘5’R:¢ná¥öïÏÁ…’ ¸"hi-Ñ–ô D×1è!aÑÿ()a”’–FÇÀ »~„ÔOìš ú-qV7úµŒ}ôš¼hþÍ?Iýò*¸9Á%oÍÃnáŵâdSÙ¼Ìo‚T_qõþLOÇñ;“8™^Zjy?nãžþvcDåâYç/£üô¾­T‡ùl·zÎê}Ñ€r1ݹóãRe1S¶ªÞàxŽkÝÍsö7½´nÚ)ߘ¯àb鈕…‡àíÍ+Ò¢ÌûãißÜÚêÈ—‘A†ˆ€ íëë±áL\Q=+3³Ž€€€¢AMnáÉZ[›ÐæÚZ{\|ü—è/ÌJºòûGIÌKôâNxø¢æcu‘H|y-s¾¯&CÔËað#¿¹‚c–ìF(¹)–éi·á[ß „¬­™¯U”—늉‰™Í×Z¿$V+-+®(ØÂÛÍ`^ŽÆG«-£e 0ÌçqãùQeºÕÔ‡Y~ßÙØ½ÕiÏ*Ö?;‘ãúºõK³±llöMÎÜô­B§M±«zˆµÀOGÞrj5J&¦Ÿ€ª>uut0¹¸¸ôè1ìê çöY3ušö:ئ1ÔÀë)ÒÉÇ^*j„z1ç§„d¥Ýæ íA`Ìc¿Ûa±ØØóùóçi þfºÃÉð+µœi„Cß…÷ÄsL*()ùR|Œi}………ut~.jm]¦ï,'‡îêæ¦ca‚ˆˆøV½V¶<©kmº•w^ÍÅþüòùÙÍÍMözöèè蕊!¯øx\BBëÕŽñÒA(D|øøøq º‡‹M–ߺifëÙqôœnΞO¥ÁPô/,$rú4&q?…)­©—Õ„…A‚Tf»õ©¶¶¶µµæàà )ª~`÷zÍ£¸ ¡¶‰I`4ƒWZ: º©˜MéZ‰a¬^`l4W-ö$–NVÓ!–AãGHr±f“jÆÜ¯JÛ7¿¶ò¿Ež~gÛURR.Ñô Ceae OHxéááLÀ±Wº+ "¨õoPó$5•í¹Q>Gî½' ó“Ïùô{f7;;(E÷hÓ“ÙbG“†˜XBµ)ûÇ™ Ãc€ÍíííOcbb®vrRÐ01ÉÏUv•šSWyêW§éº¨Ì£c8§RÙ.9'*ØÏïŬM˜-ÿ~KBòÝÇ×—D¬Ú~O©ÇæËé£J©çÆÆFÙþ\ «žž^Ï^¾ŸÒ±ô¶¾¾ ?åWWN›ûûô§j£_* Ê~ü€u¸:Ò™ÌW¤« a>7åŽLT똭:ÕÛZRî¾Ø»¨ÍÊ¢˜kvãýøñ£žËÅ_0Òˆ¯ÑKS€Ñ™Au9löã‚ou¦Df¹ËkÞ[222^,ÿ~Š…ŽþûÛÅßž˜·_HÙc8‹è‚i´úpE£,5Rvvñ2¤¢ËDý7T€6û;$ø¨}};›Si«-Ÿ²…#?hS¼o«‘rCkžh©ªÔ;iC)(˜"Ìä3-÷aëë1Cñ¬âè:< òµ!Š3Í׊ÿ§²£óúnóº~ãL õêk Âj{Á!GÌomx©” •Vï~¹ÜŠž¨:h®¢£“¦¿àé Ãa6Í”×õY@rÞ>O}õ½ÂƒÚ¢º°üÒu¡Zä»7ÐûG#ùP‘¿b3¨ÿä‹a'v³±aÑ+t]¼eè ÄBxÆ^Mµ't×IˆY„T®IÐj7&I'¸LÀM©ì|oˆVî¼éºÀZµ™ŽÔ[¬ €{Ê{£##1\¯m¢§4ëlD‹×û)Â@¡Äÿúõk\e‚>מÿïP2¿±¬Sâ+VלØû‹`LI&Ë׆º7™,ù)"ñ4j÷QöüÔû9'næS¼åCt‘[õ-••Q法/žÁ‚’ü[Ž|UâSÕ)½}‰¦F»·ø>ö¦’/¹‚Fev:ÒîÑÕ§¦ª ûÓc·b÷ÖÖÊêçuB Ûѵ$/·b¤}•˜ˆË” ƒz­§ËåÁïÁAb÷+ècZ—»+æzPÁÜŽŽŽur#vÈ0I¿~…ÇÄ(íÕï*)cÊ5— ŒMäýÓ¦¦Ï©¨rTc?ðÂ:[XÚÀ°þó‚Û„õ:¢B÷²}†›óOnÅ_‹ð 899½ýüÖN6ú¬ìíÿ,4üûVåáGËø²ÞYq󩑪ýg[ä^ÓNµŠÒÒwŸ?G¬û bõ1¶Hõ%„57ÃëýªøÕ%Œˆ?âOú—d!GÓ·™•›ógQѵ(Ïããã(„ÿ,/Ïl½*"•Ì÷e÷›ƒƒC-€¤è-R2²Yquõ¤õø8œéééñúâú‰×¢Q%…Cvö»JÙžwªiÅ£ƒßí’ æ“Pahé¤åS.cvŸä¡ŠŽcç{‰Mt ÿ¼àTŽ"³§:×>¿MêZ¯j<¯‹)1…ŠziËÝ "Ò0¶¶¶ÿ¼÷üw¯Ëö›ÿÄÅ•LiYüþËå"7«ñ(ô¢eR’'œó­óu¶Çw×¶='7ƒâŒ}Q4òËkk^1ÈÉÉ[7÷ž€2ätšKÐ=Ò6\ßÂ&ãS¿y')m<[i ½¢—……ågxø÷?~Ðö³?” ½bx0™?ŠgÏŸëÌ×Ùì· ¡–••Õ:mþ rf8¸>Ýÿ¤hµèÅ×—ÝZÅÈ¢ƒyå›ÿ[ °Å½ƒ÷Y‹½ªA{o´ÑÜ|-T´sʽohÔ-”!!¢ ˜€¼¨¦Üª oO{§ÊªŠúpÚÓEƒ–÷öååå;::$ÜMäÕ Ï°wì«Ù$m=ä›RäÝnG±_¿.©¸Î:YoozÑC•Rñ ¡_<Œçæ»"ƒpýÞÜ<<å ÐFFÔ§öUü1¢„] ¥™e†gz£Ÿ„4/Ü„Ò(c‚‡‡Ï.(蛟ŸÏ&c¶˜ç2ÐÖn}õêÐȺ@|úôIJK+Åþpñ—FÓ7ÅbfÃPî6»íVH¥mEÇÀP\–̶‘f¦7HîŠs¡BÔË…ظÑg’ôo»@Ì¿UÆgÔ»¡8å¢5U¿+2Ó)%‹Èe ýVHÈ+ž×Õä¥TÞKܪM–g7·ÈM{¶JÓÿÿh Ÿ}™™¾Œ´ÉbþözßÞBrÊ#=/¾æ˜õàÚ§x*jº{J —ðerE¾OZ4»!—'$$¤ÌÁínAI\tôkÈ·UÅôß ì¨wØï=;;‹0›#“R\þkw®è¡æ×/§­@•í6zòZ-Ø.5óC \ñ_áMïòõÜ ]NŽÿË2ªÛ k©ªöb1jöÏV›÷=ƒ}‚4÷»:žÉßõ²÷…-õÍžwû5KqMMÿ)Åõä5õÏ·®ÍÈÀæ!%#633S&øp•Ñë@;iïèhHìqW¦ÿÅÝ]Àt±‘»ÁíÖ¡¨,OžP©ú†fï›lôn=íŸYLLŽ7Vò ßÎi²þ0>®pu{«|¹º_–Mgèþ÷þ~>õ&¼!{jïŸ&Û|âãKöUíög_ãs˜½“’Bz¸=ôöö^ž,R»º;zI%Ó™Ämû3.èþdþÍÛ00™99íƒƒÅ“ç ¬@<5[¨ l·ÅÕwôòoç&"bb¤ääÏ”‹Õß‹ˆ<›,üâe¿7IÂÇG@BBÂåvÃVm±@k«¦ß“8]gKõ)E |z(¶«ƒ†Cò>ÚKªOIù\¯Ð–Ü. 7‡R´¾ò¾Þ+V­zùýûw´—>0ž­­ï¦çæ2L§Š«:ßÙ«Xo“=ÍU·1¸>Ù0šÈ ÂÏÇÇ:øÇF_¬-aLoYûw??z÷Gþ¨=Y’‰açÐÜ‚*Ó)Ý»«c&6¶ŽÅ&èÕÞ*jjcTj,È@MuMå—xFFFÖÇœ1(ð×Rœ`xjª+ŽYïgddÆO7´sÛía³ÅF\++«ÖléÄ£.bíLJûéò¯ˆ`$<ýAzæ±&ÞŸPoñŒŠŠª¶¾^wo²ˆËõªTÿËÆé~ÖÇXèÍý•¦S(ÐfÇ«¢Ñû …¼vÛ²ÛÛÛ˽Ñt0ž .žÊgKåÙÉç·’í}³²”@LY0“.V[ÏÈÈß z_øÎÎÎt“ gppp-ÊGŠûCä«­ ÉoP H‚PÐ0SSJFvJÊ:âÏ{}]Ÿ©s=¹8™ùBÌz´rWïËXÅ$ÇF>ߨ¢’¸ýOÊ¡ñÖhÅ”.zzé“Ú“ë ^V¤›‹}:{«±@ûªÊJ&“qj^¤¡dþv€uú(LA‚€:˜.ójßÞÖÝxåÈ6ÝpXÿ{~ÁåÒ׊ð% UöÏsg1Ñ9ífSÅ„«kk{@o-ƒºX>vbÉ)(1²I‰ˆ8ãb+ý×tg§4.‡ÕŽ ‚Š5(«46ì»B ƒ ÷”ƒ±=UB\XX¸ü}—‰$Ä/‚OJ-1ìKÅ t› J—=—7š[wæ‡È£?ØZo_ŒŒ86] >Íu©ÿ Ú ƒQ«¹UðNvK€V¦æÃX~dç繨‚òì¦, ¼Ä”b]==ëÃEþþ_¼Ø qáõš•UUr Þ¯é”``NNO³Š÷vv^¤Éú[¶ÜWw^ä¢`¤«D%XeŸ‹(ÝLWîÀN¥¡ !Œ¼žžÂÌÌl¸ÆR«ñ|R­´ªêÏÍùÞ˜¹jóö݉KË0~— ¨î"¦ŠÔjP@‹Nk0Ûm«ÖVPQU%efF‡a2|û‡m§/†^¸á-Á³½)T ‹«“>Æ•ÃCTð :Ž€+—ÁP2²°°pÏ^.JD'‡ãzãíA›ڷ˃![©Ýo‚÷g”2ÉH ¬ÁÉž‰‡z×ÔÔŒÛÓÕs ä¯bŒ!¥HYeЧÕGee|Dl”ßSZÄíT)HžUö¦ÅÂÐ=ßü0ÔŒœ¿|NݵÎöIB3•èÍ›hàA z‘…6ö•NZãF/÷˜I¢‹‰;ëL\æ|ºI»—Äe mñÏëÞçÍU›wŸÆ¡¥^تÿYÒë -:e‡ar»±“JÐe‚ä4º«šðxÅÐ7–½E,T“ëý÷·—‰,(YŠŸ? ð’SGˆñï ¢ ˜ÏYVìüþg)\\è}­XØ "dàlÜÜ>Lìæß›x[Çä=I„“t :ìã¼*[,¹ÿ³†Ãl†—LÜÁ4Âm0ùž.=ý3:Á_™KXojè‚ÔÓ3RtÇsé·Gÿ¼º½ðNKc€Ò…@’ù$·àI~A¡Ô3ËÃóÒR#Á‡¸1ý[ Hà““M¡å Ë‘2pl3î/FÈ£’Hl‚B¤»¼_ðW›¼{¸5«4Öë¶—€J,ü{=-zº€ûÃ5‡e³ÿÇØfÏPj —³UÀ©÷!¼¸~e`@Ÿh·äm jõÛÉo¾/0Þ‰‹#ú¡¸Á~ü¨÷Þ I°ÇÇ_׺rûBÇ{…QÁd4¬êzüÇ Ô[iÏ¥–º:œÌûöÒ’\šFz5·ð.=*ÕÃÂB>³9Ž×÷7ÜVÿÜÍLÉ´W{Fä0®€ÆÞŠÓ~uÌûó×ý+Ã!†¡¡XTÖ€”››[ÖÆódFªL]>é¾ѳñe“xÿþ£@ðXÙÑNŽðò'¦«€Æ5é÷o ü%óF{:³‘Ýçž/.2lÏŒÕ×Cg±·º:B~«yGû»­½Ý·‚ G‡ÝQ„Ô·µõyÔE&:8Ac¸FƒÞD~$W)‡y‚ }¢í¿£Žaa=µ¾¿!Kô † €*’ÒwŒ„ÿ¹Ó­¹a\¢¼2…Ðø@ö󣓛'bÎˉ–b6„(¤¤ÉË Žœº·y8ÌétÒ9@€§Cð_ınÁÀø{ ZªûA›æä6‚B™oü 0b‡ˆu:<쇀¢™ÎÆš=˜â†Ž.ƒFÐølvÖµ¸D„4>[àü¼P¡¦ÛË–{¬@h™×þlËèÏ[è º_óíî¿ÁJ~ô)-3>5AÓÂvræþ †ÊÖ]eŠ <Çß…[f_ÅdÆw‘‘+;up‚wLp”g›<BãÐÛ,2xìia©cÛÙÛ—ºß;þ[aþ£ùÛù˜¯^ùn¥ÊC&j(” ”‡ÝYÀ/Þ[ÂOÈcþÔÙ^/yh½—‘ñ*ç 7¤Ø†.DX½Ôd‚ZE­fóŸ{ÛN4Ð.4ÄÂjh˜ïæ‹ äéœïÊsY-ã1hi¦G}˜ æ|oòö A…Áù¢è¦6o½’02nnüÇÛl{;h¦3#å-„G˜PGe’ñI´—ê®ÌY vT»Õ¡ä(AwïÃÉ8Ѱ.ØÏέ QHh¡¢¥ ™®ÚcZ'8¹ÔõúG`>º”Buyù :–RUÁçD_€Ù'Å’^ðŽ?|DéŠÛɽ©iÊâV¼P9¾3ûbPaýR^ÜÛÄf|9\0å¨Ò脳ÙÛ d[.è7Êððp¿ÃAŸ–ÇæÊʦW·¨9ÇFP <‡.ÝX Ní^˜$þœÁÁýZñìÃfÞïà§JKKŒÿâ -€ôDðE~\ÏCpršn[òà*·Û^êܦŽÎìµ6ŸÛÏ ´Îß^2YiSeÅŸÄ ¥ó°°œ ·<âõÇ­¼ðx\Q÷#‹-,t=Û='l~øöÌ ÿh -…!•Å¢I¿=ù;RßÿZÞÚBFEUûgõ…Pfþ¬" .nÔd£ÛNŒºzcÖÇ«[´/¿Î”ëq¹\ Ǿ‚òþä=©€èÞä¯?ÐZ£…†§®®pzËï¨Ln ÝÙäÿüùŠ€*S8ªøác¼£#¾“Kƒ,¨V‰Œ[à ®–/VVêŽÎ0­?5efm¤Ê¤L¨4}ä”Þm‡âJð;ËjM ¶Ú¢É;}e]?TF×Uð̳š#eoÚÁ¿+¬ÂúáÎ jfN òÔLo¨rÄÜÝ™á®ÐI™Ís¦ÇÓ?^m£iÝèûHm--ñ´utn®‚ÙŒ : ’ÖÞ^œ±œËv  E!ÅÂÐ{° ôíñ›ÍVeKz£ýf¾Í ^¹øí{P0ê~coÊÊv€.¥¿8L ¨Yr€úLñgI€¿Ö¶G¬üÿ éuÚuã&[Ù±mñ°Ö •L.–üÅ«Fs^Yå ÜÜÖ'–EÇÇRëµgÁ¸c¿ö¬»;ZÞQcïP§î'äß›¶Ž$gˆ“Ëfîb¿!°£Ãp{®†Làaòe_H#£[ I¯øØ/GŽÖî\îP¢_9' ßxé1Y¯2ry<°ÖÖªØ@­áZƒ‚©ÓêÜ„Ïý–ÓpP$]ÿi0áF$å¹oQÑ‹©€År¯†’›DŒ¶…¡žló1ÊÌÙJ·7}z¶¿÷:•¤áé&âtí1ƒÆy±1<ª¦ƒÆÛãÓ!Œ:´h¡Üt›ÑQ«¿Óô\GÄÉ|Î( 9¤’çᨾÓjÁýç,ÆBUöŠ6Õ?IqX:|  FFR 1[-‡]É[^]!mò$‰ÙnËâÄ0Üã×XÉÎÛ"¬Dóï}Ðð2ðwš°N­ PçíÝá8üõ¼õŽ5Š×iPi»ÜqÝN¼i¾´Þ4 )–| Ç•&ŠÈõøO·³ý¯+gþ Œ¬‚óÈt¼Œ>:w÷ÝBù§{àÀ™TøîÉX¹Ú+I„–¥Þ^˜3™DÁ‹…œ¼ë 5¯C CêÆÿ9¡h :@EÏ–¤d¿¤ÅbuLæñÝ»VX»C àóB JÄde‘Š5n#š™(D }ËL¨xnhn)C‰[BÎÎÔkë¾èm@,Ó߯jCH°ww7}‡¦D è¯P(J Ÿ?}"ilœÔî@p,ÔäܳÂ\ý핃ÃçDRÖìÆûO²¿ƒd›üAâ´¤\]ïA€8¹®Îçè¨ô?º´xš‰“s•Gf Ô þÙG§¼ÞËË8êÍÏèÕ84û86¥è˜/àÍÕÈlð` )@¡£¦A_íVIâsÆÞ]Ùè{¨Âè'f)ÔééÊè˜#Ô33Œ€064¢4]=++ D”sIK c2èWú»Èÿô°qÌ }÷hÿèRPòéS R*Ðü!òŸIE¬¬>ý l­³•£¦¦þÞàâ‚D8   ëPÂÑ„ÆQìI½êG?“,º»š™K[-·¾n£¶­ísm}W¬Vs.+_ŠZ–8(ÈÉ}ìw¶¨ùóÞRüý+Ål¦bèäâ(vyP=<ºúOær3‹%IH¬^~óŒeü˜o§¸»´ô‚^ â[ƒ«ã.Ö銭—€Ê`ƒ”»ºº ÛœØ&q­ôÙS{SÇ€v(AÞ  ‘Ëñ@àáz‹È­áúª'¾HÖ¿[¿È×:=í¹Çô‚DÄXñ ßngô)Ÿ[ÂS=½§g{[op9;{¡$³ µûÅ;ÝîÛ«”­º…˜ˆÚ¬±eKÏ…”–~-­¶PI í#÷9´I/¶ÏéV†õ­Ã+œ§óó…#--dp(v?«ò\²¥ÉÏÕDZ=¸VŽKt6 }vÖ®˜ÜÛˆ°];*gF¡”w$¶Éøy†,µX“ËÌ?H …X$\XG'/Sq¤Äéd ÉîxRénøR#8ebáv†.üxï•Ä >¿½môæâ°Å·¤EÀ—Õ+ÍÖðch†Ù7 'Dœ^1hÞ%³&gmòD! ‰`ú…¯o½ºßË`( þ®ºº£X=rzç‡bpu½õ¢´Ü™±„=ŽeƒÞõ|ÂEݯ©8¤xݯ" íB»ƒ.Ê~@›*•€#ŽŸŸðì`áÉS¸¨0ŵm£O¬?Ñ„„΋%åäh–¬¬Ó ¸ÿûþ¡]Yë9\‰žž¨C·èQRfpô‘FgÖbáuo•þåƒfXVÃo:¿ÔüSbÐ+ùñf* Ññnж†–º|Gº{h S0¿`¾¼Añ¨e+Çšp6{ o´bE d¯»;]¨+HÎ+µ" 5"§É¾uþô1UXX£Pƒ…LÌnƒ‰ÇâúšPHH ö©ñ$¥‰08¦ËaCH…„V­öUù’=¿g¨·ÏÐG&ñÆJÁ^ž­º¢Õˆ¦ ˘å0ÿœg}å ³ ßÐVlM:.[÷ Á.¬˜˜„©×gg;®'=ODD\ƒ&‹Œ/ä…2¡ýp¥ Wñwñ9_YíÏ ¶†Ð›Ïl¤"‡ðÛE¥x‰æ…ѤTâžì !jL2ž×ÐÅ_ŸŽ¹r~°ð=¢¨·wÀ|lÏÚ;ÿÚ32>NËÉ Y^¦À‹M¥ÔÇ-ªhº ´Ïà šÞ½©01ÉÛÂ;*`Bnn†›oÎv<5›þ®l•ÝG½ A&k(ˆ S­6ž -k0) £ðKKz±@Š$KõºØ¶wMc­Ö:ÍýHªÍÛ &¥}“®O$8õ  :6úÊ š®¬¼ÚN£Þ{¸"‡ÿÛY©×;m8¢08\J拓yE0^¸¼DõæaÉüûË»&!Dü‡ó£¦V^ %Hˆ*gýüÉ•ÄëH\cA!ðaÅ¿æò›ˆhÖ¤“¦šâ@‚±Î\5ÍÑÅAÿ{ýÞµß^lHDX[ƒn¾ƒ¿èÿ)R¨r‚e©;3ÄãPe&EIJß00¾»¶ áÿEe R*¼5¨„w»D²ëÿOÿÐ00xyµ¿òY¥25=Õ15 ô‚7üÝé«ÊÀÒ¹¼ZŽ”âÆDìñ·B$B(²p@™Zm êÍ7Æ{ÏÕ“‘®¾ ”—Za¸ª€ýß§8ØZ…ü_:§Ã(—t~Œ`¦¡ùB¢¤¶É‚‰š²zm]P›÷|Cð©Þi¥t"2Ùï2lïíév…æAêht¤1<AN8`€äØHø“Ïß9ï%À£&¯NuÕºñ¾0ÓÙ›üˆÐa4!I\\üºÎnG÷¹šFh˜'ìø‚âŽjý?Á”ZY R@èK¼Ä¨®3H³åâ<âÒ…RÇCÅâö7"4r}¸Bl"::4DýïÌÌxHÉäÑp¯Ÿ9RBŠE¶¼®ÿˆÚú˜šRk+¦ 9o¶ï½€µBßkjNüƒ¾8¸#NŸAÙRÊ,¤¦â€®ÐÑFjpx×⎢î—U¬%ÓêGl!¦2ÍbrýA‚¤ˆ×ë×Ѥ@/’¥4JNg¾ JÞ}úˆM÷Á‘;Ö¡´ÆÑÜO#å''IQAD³;+d'ú>z‚nxƒ÷áq3u.o×b2jÅ´öôÜ^¥3¬ÛNo±¦q¿1æ ;„rùÚ1Ÿšƒ„„¤àsÛæ h(S~z&¾md„öûLA Ç$«iý´75}¸Dðíe_­FÝ+?`zµ‘Ø€kófœœ”øða…©ªu ¿µß +0è ç%)† aD›±©éÚhÖÇ£3³éÔæÅŽ u¦´Z–ºÃÑÓg¡ gÃó@d§§íDÄE¥úåEÄsV€Øª ¦Ò|öÓ§ýåÕQ”OŸ°¬,à¿·&YpôB…NnõñÁ’T[þå^ŠHü±ßÕõušLŠ€º_:V2?o@Ñ”[¼õZçÊÑJ;§…º—f @c'P—-÷ ádd"U#ž­Þhñvv•Ãu<ŽÕ…'®JJ€™¬ÝG)ÉÉQ\.¼S++£¥ýPÌcy’±=žÇ§£÷õkÿˆ©à¥"ž-&8€ôdÊ6Ù©©Ïï/ÿa‹¨.³`ôÇsËö1yPB¢~2$6{ œ¡„}ö8"O¹yôL¡')F!lÎü-%­Ö:^ùœÿyÄ–·ógy-¨ŸÃÃeаc¡7ƒ’ < ff3ÍF%ÿaŠú{+H7ò;).G`>6x=ÇDZs¾ë²ÅÐãËé-ìjD·µ½k`e]Öq{ØÍ‰ db…†n:ݰÁ/b4"d«J€NŠí "©–ˆŠŸÈQZf슌|hk‹”ƒƒÐÚ×?Œ1…}7L°˜ŒžZ¡ÍÅ÷û÷o$p¨ˆ¥ÉÉ¢´,Q/4Œ?è/ÿ\mľ¹;jÇ…Ùˆ} >êtñ—BJ )ËAÑd©¹±ñY_*$øÐ„ÖA{1ûeb·gFjd¨N¼Ãà FJ¾PL꣦tuuôèH‡ÊÓr+{fö¦„ê,Cš^W5ðdâ U#iÂjÓs‰B22~$»P¸l·ˆD¤¤ð:t­C6ø4—®ÄÃX~FœÀBf©ÿöË ’•7ðJðr 4ù}³õÐÔ ïVo!hkòÕêq/??d>¾ü[jjçèÊžwêê<«k¬Ð—¤´¯r–¾vjP±t„†‘cegŒ€œÊ°e—2:Ô•Õ îIÈ©®0kûª:+ò¶ (ÐâL;*—þüù#!!#Ý©üzú¤‰¿¼"¨Tû·e­5º®õÂWrÌÀðèh¿?A~?º2¼‰I¼ÇáúÖî<ällX” U¾»Ý^°;á÷ZìvŽWR^¨EñBË‚Bä/922A®F‹*‚è‰ù†„•Ø€|yñâ ´J|¡¦ £ZÃáùë× 33)mCCXµ¹)AóYk‰FFÔøøx&vvàM²"âãæj*Ž8 åTU)Y™åWþG$%½Å$ ¸ÃÄÌü»Âph]µ&3óY}[ÕÏ””°4a?ÝÓÍ£¹jz˜7oÞÀ‰‡*è×V™ô¯-ó4wNV›#êlÚ–[ E½†JÞ¤}z†ˆ©¢“F•~P`¬RýBº«¬äüÂïZ A|!<ƒÍR"Y‚ ,Š¿­-Jhncèø• ŠÖ«cþ‘Âø»sllì:ãŸÏÝ/ytÁ,¿/ Ф66=µ¾¶yûÏîËú††}MÐþÞ˜˜Þžž0q‰‰z3å_ãX QB‰Q`€ß %âÏÏ•Ýëúmï2Ð_Hñ ƒØºÚC( Ý>‰Ê;—TÎÅþœv+ UÜJ€eË=¥¥ :·ò† ‰z¿<‰ãu„é Ýay8Â÷ÏN5"£¬€Ë–d}¼!«¤ä;$p‹d```egוowº~ìÄe¿‹™ôë—Ž‰Ià50<µµ*åwË¿½JËʾCK1蜛ssš››·õóñyŽÅ î¿ºª;=+C maÚÑÑÁ3õÜ”´…¹ŸŸü[zúã1A豘£¿3¬888©ÐM>7‚‰‰×¦·ÀÔÚí¼233#ïÒänÎÖ×¢7DÈ U¨Ã–ƒE ²È÷7/LÞuwC¬öÈØØp@ÓÆãy v>ܤÖ¥ÁÓÑé©|©»½0×þúõíLqt4sp2¦–‰ÉµÂZð“¡”–Ž|EªRö/ý ÄÀ^ŒŒœkëéy;.ZW8d´±yy¼*JbcÓëac‹¸²¬½èþ ¨4hA[{;ú«W°)a 6S*†k!\q$?~d¶Ý”øŠªRgCó†œü*_kž|ôô…ëÝqŒçD2 Ë+@õ0ž_* tØ¡Æëþö­^ÿ¶ªèv€s Úw±´Ôi¡œÂíæì LýK2±`Ù뵟ÙÕ*{³â¢Ü… X‡Í· ª•FrÍÙãPû|ÝðbÓ«G?y6²­Á›hxªO2C¢D _ëš‘ø4Óÿö9L}ý,H¹Þf¥åPw:Þûj›¸¸¿±¸»û™‡¥ge='$ ”Þ}Jœò[Žg°¿_ÄÎŽ  'uxM™•C1/´a}‚g×ÚäžÔoOHHx<¥å‘ö1–Ƴ»[¢¶®îCs”e—K†ùùyNËÅïhÄĨDa~T2É­½½/uËpTUU#¦ì·‡Ÿ€_ŠÕ¼ßÎŒzöh—ÒÇ«,|ÊËYþN—=U«6û=’!¾²»Ȭש=U¬ÁÄÁ¡´³öóâa« Ð‰”ŒŒ¢gØÚmWÆ|0¥%ÌxÌŒÆX£©Þ #}p;ò ²‚³•®±äG‰Îߣ¢¶œN2ï¨(6žC“²®vÑ1œppõ¥å,î»›öA‰@_ «©}dIµ~.ñ,\Âû)|±ÐWÛÉG§§¾>¢t>ĜЦqáIIÁÐC D¼\\ã*âoœNÆgfpihh"ºbbb``Zv^æåå±W«]ÛŸáäâÂ6~¾ù À&++ëßK‚Ö| $<‡Ùž(ÀnkkÛ VœHJJÊ윧mþáhå.Äö.‘÷ ìc¾ Õÿîg %(ŒœP’‘aãâ:K|b°´?=ÒcГìE„i ùM Çúp:„Ïe·Í#j×5ž·€¯¢/wÆ–ÁBCâmÕrJ,UYít–»ù¦ØÚÚ:B‰€™™Ùhªø—þs ¥Ù*Så¯ ÇÇÇŠšT‡õ WGçç[QdddzL¡U{:í¾ywÖýIܬ†ƒQ¼J_Ž···%BŠòŒMcµæ|tCÉHDœ¡í=…¸H 6¤¿Ä#`PÞýx|Š­odI+åû`ûwÚœ@Ðÿ)\¥e¥…´ú§*hO\5ùl©ïaa¨‡‹ÈôôôW··S*9ºÎ_¾àn$ú}ˆ¤ì™?€ö ×þ =¨³¼·§¶a_WWÇÄÂ’o«Ñ‰ƒE¯úLKK+.!”’Rì䦵õ]á— ±°Œê†ª?´tÉ»´]SQ••½‘¬ºÌ ¸yï*ØI‹¾EI)9iïä70ö Æ3åο7bªÝøZeÑN»×Çü´Ý¹½õûSP´¨®×±,5 f3,v;£ÏïoÎ…[Üï—77)j­¡7ÁÐÄ‹æVÛ³²²†ÇÅù >üâ±Ï?‰Œ§Ù Ììýç‰"0Â|0BÚz?È)if<ùþ‚D$€›‡AÔÝÝ:zˉ¨hYUZØT¨¹æÒ e\ζuàõôÜ›àŸ¡  øB«Ytu‡›Ý\ÌækÑÛýPý€ðx…`ÀwxXvzzZ¥|Õòx+HNAñþ šöFo4· 9Ž J' Hh­˜ŠŠŠöùîD“Îòƒ lFÝÎ`Ü«ó)-ë›3c>'´"Õª¶zû½£ßðÄã³ö"@óá¾DD<^ ”4èÍb…”ÿç–'2I\O899ÁÉa`tõô˜]¯¬>Ô¼QÜqÈgèzbElª‡„@€u!fþ^¤£†‰Ý|Ä=½>W ƒÄ›:ou•¥Ñõ €fxð;M‰ŸŸ¨6/7žtqT5ðWDaáÚ’¾þþÂËfJ™äà¯}1:ëÝá\¶›H _!QQQxòß-–š ÷¦JºbèÕ–Bss©¯®®$ªY­WE =í¹œOÈxy1{<¸~°sâ÷Ù<ðõ“±ª†ùXÜ+àp“ ”Kt(MW¢ööö.†…“‰Û*5åõYç €N]åz%ÿOãØZ ~ìSÚi'jú6Ó>2¢>*ÓÀ L”¿).®i•;~µñåß¹TMMMè½P¶g«>ž\OWZ]íÛÜ,ðwÿxõOm‰Vƒ}½Ý´Pn­¤å!¢Ÿ£Ìb'‰×±x'–Q ÅÍÍ-—n­+ÌcL˜ÒÔü¤ÞÁ|³ᱱv—Ã&è;¡…ñ~íÛë9 ô¹J…U=ƒ ž¡¡JŽ(E¢¡É¡¨¨ädاn‰úZØ ê­!ø@{ù-6¹èRÙrN$èl±P¯è<¸° qrÙËÈlг¾¹)¹O§Å\šÆ'Ÿ ¤<Ç– :³kx •¨Ðþ hS‚¯|ìŒÝ䬾a‹wY™{Q…6zzÀöËX4!VÖ2½.”Ììl]heŸsùøùß¿­¶Ñ‰Š‰I>$sY“n¥„™NëìM±kj1ûþ‰Ê~)m¬J¨ÑŠ.„÷æðÑûÿ<Un(PhJr.èÿíòÐp¯f8ò?^ƒ$ŽÃïâp),8I__?üê=™ŸW‡Ùwü”"@h8” N ÷ãÇ&Çõžo333Ó“brrè@¡?é*)k ¤‘^[[ ÿùSVOr,æ´I¶q¦´ýÀå’G>§E÷„Pó…¡®î‰Øí&*™À€Nüƒ‘Õæs¾@@´/.¹\üýýpKÑG+SÅ ÔpÛ¿‡†P/..®VƒKÍç8zêÿ×p9†Ü÷$ŒÚM~ ä׆î•íû»ÿ4mÂfÔl]\lýõë¾óvôÙÌÌs£…YÏ=&9Ú¨$0ÌÎùB^Px±¾§ —ë“f³ë ^^Þ£kWÐ$@#ÂSSS¿sr‚î¬ÒÅÚޜ헉Éìra=‚š––#ûuvÈãñ›ADI ÀÐòúºÂ×À½]yïÞoR '*mì.þ~áâáiǼ½Ø Ó“zº¹¹a!-** ÈÆ§®ŽûíÛ·¥V+B˜ØØS¦qtlº²½íÏjøÐÒä–ŸÿéJða^ö 2=Â3dQ‘µ¦Ñò>6™éÏ$U}q1¸þÎø9ÙF”]âÜ“…=ªÛQŸôfõL¯õMÙ9ìÐÇ»©ì0_»¿Gãú»DJ>GÂh;x[cúËöÂñð~æ­™½ÀÁ¡£é‡ÁWÔoßJÝ^–«|Œy+§¯Ÿ)$$Ti4’þM³ÎðjÅ _9Üpºì LÂÂd‘ZtTTf[›ÐÆÖÖ©„<Ì;/דª››½vÓÉ·Ò‰ÒÃ>|~ÿþ»­êØß™Šè_¿Š@šÏ”‹~ùò%ÕðSÓày7Y˜Q›÷‹ÙƒÁ¤¼œäo’Q‰‰{|ZŠLçÉÈ„•LLòY jÊæ_šØ#¥Š¦%=akˆŠÂ¬²\Ò¿;U’àŽÆó&ŽYÏôqŽõZçðì¡jõvy‹NkÈö‡‹ ŽS{%-Å-÷‡ç<±:86\/_¾.Ó«íðm?%""8¨f! ï §š“SS—£“häìÎ&ìQá6`Rg4\3wz"©eeS++Ùž?·va…IÍÅõ%igbÓnõ4鑸ÙÉódïRävêÈ):6vk”›áæoÅP%ûýYET+í¬ÔúU]¥ÄÞ–ÀýùxÆv¦ñ Cñ‚ ú@Çì'000žj8‚îRcQÆ ³ÕæjUzêô<@×ÓEÓpss¿DEuÜ!À~…eòûÇóÞ¡¡©í‘ (¾µîֳ̫Kn—–öûx… $ Ca+©£XÁaÛrå2ØŒGÉgöÀo **S@üç<€ãŠ/]düP‰'WÚýŒo)H*Å£¨¡ši¾O]]åQ#|jdMmËÉ[Óé}“Ëådê{/6£á7 çv®·RJ¦˜Nb[Œ.þÎ޶ù ž/ºr×üéê¢#%m»®Ì¦Jq-—;mh(gñca½ÜËN¬ÿBøÜÈÚµ:.̹N‚AUÉÞìæáa 碓°eãqç@×Oá$™õóå_ûLø|éù8—†g*¶ìçÌ™•ÄŸ¨ôâÂÉŠ‡”ñÀ‚àm¸LÞ©·{QÍórx²§ŸñB}Rûp±FCaèh:Žo(lpM00%ç=T37‡¡U èIå Ÿ}Šd¿fÉ *g¡ÁCáÓ Î@Jж=fª¨î{mh¬ï"U›¾5´µý¯±Ä†r÷júi˜Ôž¨Xåm/ÔæÑîðû¯¸J]OTÉÁøþùÈõß ׫J±úž]êwA¢ÜO¡0bVÉÇ¢¥ ^ÆÖäýß|Åë¸IG¦—’ì~ƒOÆʤIIÉ«W¯¢~.ÿ’8>E o·VzýúÏùâT×ÖË*ËGº_\e»†û‡4®nx×[‚ùÓÓV ßL¥0(aç‰ÿæ²(‡Å|î°z*“…–ìÚïrêéÒo ô1·‰»'¦Ë*جr(%¦N®¯®Œ¶‡ÓBÊÈdö&÷‡yïT} µ¾3Gc“.þçâlýC“óf*üèHV:¿ò:üº?|6é¸2õðpå*Ëðy¥ÿ}¾­õ%rÑcTv¿zt4w¾ëÁžéX›Y‚¸ÓåãÙF,w'ãoîçHž¦ÿûÐZWûdTvpp’IŸ/H ý$Õ'Lv1¾ƒìÝ0õ¢õõP™Px„ÿ»N Å4¿/ÚkZÊ–n +â´¥ñËòx¼­ö³5ýú…‚â^šÿ›·ñÉ:h¦§µÿ–·æ Háõíí„iÊXNйÇã¥pHØ€-ˆÎÖÄ'—,Æ–FÉ%­\Î%Wï©Ö!‘ÿå;¶g©E±éâúä£KÈŸ~Q0Dã„B_[µ%ó)p•l†ƒ¢¢>*„ðVjÿ!šõ±óógã%I=ÝÝáJ÷S”ZZÄU&t¾=Þ{pp¥4aw»Çã½P Á±ö‚.qÓÔþ¨1BÙœxÄm¸/%}‰ë›æ°?»H7»=ž§{¾cR\·Iû¾FÑåûîÜe¥äË/.¹Ì.bù0"ÂóÛ%Am{‚Ö}à×ÑË?εl FÒ©>Φ+AŠÒÁá±Û®µ¨7ŽIv9 :ßYÓðé¡“Ž;J¢»Êh£õ)ìÿB'Ä-ßÂkûTMù[[dØÍ'ñsË»lc“Î௽½<™ggú>Þ•<¯–Ñÿ—^Û-ɽ¦ÍþƦ¤xÞKŒ"•ãE7ÇÆâ¦ê p±aÿ«Û$A­õÖË­›¼¤¼ûŸ’·K<†--†ï®_ÔŸš…>uÂLž|”á䘙üŠ_û*ù€éL¹Ç޶ÀäGFþT?âæž].Ï.ˆ€¼6ã~ý¹aíO×VÛjÍ¢ÝV?<±k–ñ˜ÀðzãN^ŽT½áÿôyâÀOcŽÊ¤:§­`ÇBîÓš–{ù±ƱŽÇ]Ζëhh´þc*^C<¥|§±­,º_6„±™ÏjKÿâ™çÏøïüHí²O-“Žl6=frg*¦¨)6Ü¥ã¬ü c‰ÿwå8bíSI4Œ-¥h¥%%2z"&áŸå9·= ‹4Ýã:CÀ!•Sÿ;$žÞûeàÑ>|NäpAϵ梊ˆô8—ï|ºÊþí ¦€ì‰¦— DÑʵLEy:Rz|l:Aõ‚ƒ3é02&Ó’c>gS¥ý{­þr‘ ú„ÏŸ8:¯bwz¿œÒ‹;Tg» ji·¬kÔîl×íL.ý欮sWÂsjEnößò~÷ŽîõëhŽmì>\™øÉ³ÎÇÉŸ$%ùééBÊ‚™Ÿªxÿw\£¹êpjãaf†bÐK94Èijó•K²r¨ äsP”Äa±Æþ-ºb£Œ C|¥A§¶_¬ (~5(!b¹ç$×k06Z¥œ¢¯Àþ¯x*ÍçÄrd8Aî˜è{5úâïî0¾Ýìü™mº…¿¿Ê`³Ñ÷׈ö/û1ZÿyýÂRÔÄTe±ï¾ÑsÞpö·â£ý„âwÕ¦›/.æâ৯P4žþr Þ–dÞÚ8<¤J0ÊT.il:Ý*›.C<ïÓÒ,°ß˖뇡Grü¯Ùög¯÷ÎvVá3J*‹›oÅ$ÇÏNN>­v ŽÅiºÙG­®Åw>«ùPhk›þâûRX¤v¹Óú]Çj9÷áþ0Õ õ 6#çc—Íz°Ð,»õ¨/«´<±ëQ´ûãmôKTËøô¸8¦½'¹Oþ½Â°³0×¢ÂBap›—Ñ)ê(~yWW5ë[[d‰Ã×§(ç‡Ä6Üò*Ó'}ñ¶o,cö*†ŒÏ¶ŸÜ´û¬‹ž(ƒÿñoúº˜¥åihˆÁ%½‚Ô׌¦Ò¦UsóAý'âËíÖÀ€æQÁÒ:ç»û ܧÂÏŸ_ïµ£b°[is‚@Z=A„…yÄå«CM³˲«R3Å„t¾»ñÛv½÷9<çá/hzkü:*L|Ðh¾VÊT™æÓGø¸­!²ÿ†UB†Ïº(ýñÑauÛh“¹êª¾.³cé®0lã£eA0üçœ @îqyZw«Æ[ƒ®ôZÁšÎšOžHéÁοø/FãÙ!)ÉnÅx‡ÉÇÇe;¾øõõ®££6¿4æÍ6¤äFœCðªÞ9;Sí×ÀW¹ßKÎ9þíkº|øPA^¨-d¶Ò8Û¢Ž¢þKù#õóÈ7©¶P¸¼\=ÅÆ‘˜V[;È@¼·=RÁ"-OB"ýH½ø­3D-ÒkÎÎ>f;Y±JàoŸRF‚Ý Ó„µÙ—L%fck5¦4|…áìüÑúÏ¡• ”š8ÌýX³HWŒV—³ˆ7a=$ù°;Íœ+ǪYœÞ¦ »ºhÖ!:VK¥z…ÉþhÙºéjõe‘ZðÆÆë›±”W˜ÄK-“Æj0óOÿ«V#TA×H¤üϺ@t>Þ” ĆUx<ÊU¯å”–fÓj~£Ñ02àŠ’’Wm¾Óª¿Þ42_¼S£ Ÿ—`~ê„ð/E ‰å<æ÷niÔ«gµ¾›Â~**ˆÜ˜I;Ÿî»ë½J#9±è×LĠǘžñe*HªD~…¾û‡ÑÉ,†Ù§ÔwÞ*¹ºšíN ÿñ¤ á¼ô‡±tŠÈüÔ2^Pâ®jÎlÞ.—¦¬u¯¬‘i9LñÉÝZÓë¶/»dB¶¶..á$ûÀÍý<0´¹þÅèHž)k`çðl ÅîÕp°@™üÄ´<~³ßÃ"mgRÐ<=\,ŽeÍÊÚ(ŸCœ(ˆÝ3¯¥…ï·]þØ@ÜÄYQŸ<ÇÅ™ÂÑѱ!ØV<¾¢ÿà]é ÒýEÍ¥ÑÝUK¯ë8øäFÿÁ‚`~a¿\Ésoðh{‰–û@ì³Óf¾f‰½}„ ó×DD™ÓÓ:¼wê÷xò隟$·1iäBë~ ²]·•Ù¾RÊ#tºà˜–Ÿûóæœ÷ï‰@Χ*% ‹Ÿ7g4 züo€lË.iAQt¾–ÁÀsu¥]?<”ÕÖŽ¿»ïÛ8Ô*öôd©²Ð`PCL¾d²Y—!àÝÅñœK7yÛpËÃ9£ÛÑoxWb±¡ä.EUÕ_ êíÆâ–æR9Ûi³ì¶ö €&V1LEªŠãMzˆ§CòWOñ<ÿÁŒ#í¾XÆX>uWׯ t˜š©–Áÿ¸˜#×»+ýŸ˜ÃÀ”þÎ0ž>ÿ–›ÿˆÊPŒ…§<ªÉßé2d±µ(tN{öOéÿëàÏàáø.î®O%¥¤¶M4»¹P“ç–别åää˜N—êH£W| q&”N¸†Qù)B y7O¦4Ë––”‘î¾ -õ%WÇÍNNýíAC"©Á/¼Sž!·“'¥pÿž2::Úøælç%2²bÑÿ‡½+¢H÷ñ±¬®¢¼]QQAÚ€!GWWõ•@ ¢I¸Â)˜­î®N&3qŽ„€€® ®« r(‚r DÐUŽ ºx@@pAVWW‚ ‡"røª»gr›ž&Þ{óS2ÓÓ]ýÕÿ»þ_UuM·7Fí\v÷Ž‘´b›Ãnuë­ËŸzê¿ïèØqÙÂ…ï–ÿpÚ?ñDNŸ>ݘ0ü?gׯ];ôÃ?¼úšknšÒ–/ùA›1}z§¸¸»§µºñÆÅçΜÚúøc=öT‡:glT¨y‘,:³3ﻊyW¬]+]u|ÿ–7¼yˆfÁ…Û·ðØöö++Û'$dM°-®mÍÎ//õÏ]·õ…úò S-ÇÄ–†Ù%ûvX·ïÈ¿œ;õÅ›_w‘Zq¨Û¸;uíúùé ‹7É“'Ivegg/:7¢ís/¼°bÓmã2`oLº¯ôÕWÙŒ›vÞÌiíÍÝôÓ÷_“9‹3w|ºº`ïÁÍÇÜÖ½ûÆQ¯ï|d“£Ù.Ë£æ÷n7>'##ã£?ìïr­ÐËŸF2 ˜öã‘}Ë禜÷Â'³€z°ë‘Úc.Cöýté@ÿ>kàÀ%Ùƒ<ž¿coy[o«˜7£Ëƒ]y[á™C/gd ;ô‘·ìžãT;Kþ3göª×—™~ûèÏ+ä(Ù³¹÷Z\w`L™,^²ä¹‚½«ý®™Z∵۾۾è¯7·iãìxdzß{ï½ò‚™ož8Wæ­Ø¼paˆÐ§-®½–æ™gæžyoÓ¦çzè!Ýår½¢^sõÕ™;ÏßÜuÌ«½Gôöúxø½/|<µ¸dÞ¯¿yÊ·Ü<ÿß´Öß²ùŸMAŒø.·ßÞcÅù£ç— ZÞꦛ–|ðAŸŒíTå¼ï@¿Š7˜wØ©ÏÎèúMr‡SÞÒ®]Ò·ÿ8ÚæÁy“YÆõoø ¾ãŽ;–¾új¿Ó§OÏ‘½‹']{«î/{|ú¡˜/GZQªÓw¤Þ»fµãŸOZòå—Z´p¡´¦ï,öíøVÐ3Ÿú¼K—'ááי塃)¯üî§²Y»~ƒÚX©7&fècfP¢,öuƒâS+wšïÐÜ–ÝÏn;xÕ±ÂÉ×µ@CÝ+S®XË›I÷­fþï>ë¿aÆò;¿}‹ïÑcã§eÞ”œÁƒóý­ÖpÔ-—·q=ÙÛaòä‰LîûÉŸ›O=tþÌ™¡m›?xÅ̺å5ýC§vŒŽ‰‰·Ê㘘?ÝþÑÿ™¦Nok¾)}uâ/¿ÿý£#©i?;ukß_\綈Wj­»?¹îà²ÕEºæÿuìÆIŽ9‹wÞnŽ»•QJÐnÔ÷_%jsS«Vó÷­ËÓbcþõ¸eqë·ï+>5Mû4ù}J£Ò&õÂ]1ëo´DZéÛ[ЭU«Oï„Ü0öÀ‹¶L¿êÁ5–ä_Îx`|ÁØcooøáøñ¥÷gN¾î|©Ølþ‡Âø;“N6{Áž‚ 6Ü’zvÒÝmÞì®_näÌ›þåüÈn¼1çðê¿ýÍsí­»Ö̾þŠc½eɳ¸µqŨ%£“×ì>¹;Wíó¯Išnܱ·— |îìÙZµ›¸ Å‚—ÈWÜ¥XÔNE}ç†nxéžvËGÞ¿­YËî‘b‚eæî[ÁW¿=ýó}?ÕZ8uäŃŸ´ßüUNÌúæÞžúòásÿ)Ìé32ÀǧußOQ T’»ÿúÄú»ÿ>®7¶r›ÅG6Îëœ3§¥u]Ÿ[ÀK3w䌑ç?òÀ"Zeùý;(kÇÁÿ6¾Ó›zÎŒ™3óüOÜø¡~MNþinòªaådXÛ%é?œ<¹óý'oõzeÍð¶ÍuÚ0øJ3›>ðÃ? òQ«kÛHÛvJ0aÂÓÿø‡ëé©-§n[‘M©Í„³ß÷^®ÆÜ6Ùb=\³ß¶ØöÁÓí©‡ÆüÔrW–õd9[:qÏ'o?|%_ôÝg´r¼cÄ•1[­Q‚ùï]uÝuE%ß>^1cÖ¬—Ëç¦,æÇ»ûôé‡ñ‹ÞqcǾIƒÓ®VàЧ³vÒêà3-ïÚaAlSÚ¤mþæ5ÊwÒ,?¦•‘ëŠ:3Ì]×wÌ,týrbG_ÿ©}Åbúæd~¿Ÿïÿ4ÛvÂ1gyiiæŽ%}‡äç¿<öÄ-9°gÏGöo·2ë9!cš±0ì­·î:}æÌº“f2_5÷¶EÁçkû?ýôÓå£7¢v1£-Ó~yWãR0èM³?ëMë|JK¼wõæE¯QN¡­>>~ðàgK¾rUt¹ÍÞ­çâ†Îû¢]ÌŠ¯ËMãÙ™<æØü—,˜{”öó>’IÒq¿ÓYJ÷ù£ícc;d÷~³²-ÍdæNÞ|ætż.‰‰Ù³gÏÞ³¾äõëŽ$Sw]úÆ9m“}…‡õ¹çžgpk®Eµç—áè‘þùzÞªÆ jÚù]«lèL¿ ¦3W¼z›é4Žêöówß}÷€ìì)¯—÷îß§N›6í ÚÓß— ÜÚõøï?qóÀŠû{?yË"cñŠkÍÇ®5]d¹lû„%Ùs—yKsæ$û—M{æ™þð‡—¨”Ò/¥#Ê´ìzìÁ½¹½³F}4|È œÓòÁ÷Jç2êŸùòÒÛFOš>}ú¬‹3ÁÃ?¼å¶ncg}ûí·úÞÕ]ÚŽþ÷?Õg&ŽÜL>ìÜùÃøÄÄ"׺³ëo¢Ôª<ó´´´-Û¶õƒ²üϲ\$nnÝ:ÿþý»’WÏŸÿÖôœÃó¨—{—µîoÊÎŽ™Yá4~ÂʵålÖg9w•Ño?­,(QnÕ®]nÅgÔû:SuQ˜¶ðïãN:°íÅrGJ:ÛnÈó‘¿Ï®¼W¶m³˜õç]«V»öÑB¤ìqÝ»ç¼òO_Åï”Nä~ÁÓ6¦ëMd)[y™’Çÿò—þ'œkÕ¦Méôé­*~¤…ÐÐYå~zê´q¤ù—É‹y#–Ü÷ˆ£sþU&>¸øí¹fz˜?§Ýìñ§WϹOÜYvŘÔÀ @IZÛÊÀ}_¯IúeýkåÍß:½J+ŸÑÓ¿Þ<7eMùÖ[ˆYo…íoÜĶxeØë½(¿úw¿ë¯(/QmwȨDRÖÜ\YöȃsÄ3;Œ?ºâàÞ5+Ïž;GMxÑ¢{fN>zæèÆ•®}ovîСçõwfSRTñü¦W:/éžž>(yeµ4ÖW´)þñ»aÍó›ëŽnXþýœ™ñÃ^¢‘¶üO^J?y~ö…¹V"¾p÷}㲺 .ÝFã,8ß®¿‡ÔC6•}ACÒ‰º¬<°y6 F“AÓÐØù#'ž;ù·½‡iyö×_ßeîñ¹ÅÿúdϪѫð;¿æðã‹{†y½Þ.sG¿ûØï‡—yт䎌.CVÐbc:­;~ 8Ž{cÜ)עŋGíyÑx~z̘ÿ²FÅÇü¾¸dÏÜzφñë¾ú꫹ϭêEâùçÛøíÊ¢Æ{pߺ5:§¤ÜûÎä–C¨3µx§ QÞçpë7OtÙúB·q¦< G>5rJ_ž›»wyJµ^êt]Únš±ûºÉis“ýÛ hSŽ®xêsïT׺ëoÙ½´H3˜)u¶œþýoo׮ݪwWŽ:òÙfko=bæ¡?-­6SQQ­äz¦Ã7]’“÷”½2îÔ‘ò‚iŸ¾ž·õ–­~ªcÖ{Íçž¿nß¾}™sãÙ统ÿéë­ov¤íw;±-͈òF²0öÛQßb©Þc]•1mËû»Ñ[{­¹Í0­EïOm—´ÑðBc ü_l_¾{Üßõ3fm‡Î]»Ž(Z·¯,áÎ;7•eM;{ö쨮ÆDµ‘b“6üôG#Ÿ¬ÎPþÁÌ+î?’K§v??ôã™I»ç÷x˜VIK†o:.¼5ÎJGùO× JÇËŸé¿ —cû ªwúŸ±aãÉÓi.–sÛ¥eRÖ—˜¸ëž¤¿wÈ(_åèàøhzç=ëŠWÒôÿâ_®¿óà'½Û½2dÿ=[ N²lýúIÏzf|S¼ûº˜£Ö´ìüô[RŠJ'µ¸ù¥Ü³_Ýt&Ö&ž/ÉØ~MÒúù´Î½m~[PþSÔžß›xS»v+)B;æ¹¶÷m%=i$ÌYãÚ‡œŸ±ûÆŸÚWþ½á*ÝN}¾ÀP¯AdN|»cdù¸Óe‰ÙÉã~cRËv÷9¾{¦oê°•óšÇlµF&¼éþ™ÍG&å~°{ä¹#Åw<ÔìÊçϽ·í¢þk?>ÚòKWpêü…Å”t?{ìá†/¤^:¼í•w]³éŽÆw åüîúÒ)Û˜Üñ'g¸Öþû·Ý¾÷ú7¿ž’R:¥ÙüGI.¡üÏͯ1NZóÅ„uSÚu7&¿]N õWÑqÔ²{÷î”ÞÛ¶™ë»SS·§µì¦ù[¼µàX§ãÔ¿:)çhÞ¼ùàM>÷Ã÷ß²íÅ4ÊêÆ´9RIêF7PTü0ãÄ‹Ö}(ÞùË•ËÇ­Z\žåL2>g¤g÷\ñÇ?ý9&Z/§CÉ+ÌwûÜ\.t$æû œI¹R~n®Ã¥: pá…܃¥/!ã/yÖü ¬ÏÆ AVˆœxàùðˆbb.§W 3•/“WWª[Æ¡u‹ (=¨üÄüXÆ… H}_¤^Ý{f¼ù¸žà!ª/ÖlÃåÖËä{ˆÞ-¶CЮ Ýµ%Ó¶bŸÃç¬ÛjÇöˆO1N4n±±Œêv{4o·X Hñã!ã9Æ&5x¾Þû'8Ýy!Ë0Âi¾¥—Ô# D 9I|<XiÄú¥ñ¯ßé W ëªú‚h  !H%Õ‘Jw8Iqz(^Ÿ«>¢1óã<Æ]H<Øçp»¼‰LYdSSB<`%ú†·Sud¡!Ƀ=%uÄI£æè)a4£ˆx˜|‚5â©G(€x‰ç9 +ÚÝ^®s{/ñù®Ð¬%pn}*á¨}P1âÅä€õۉå»)Þ°MŸÐ2bzq}â‰Ð4ÄìÕ/ñVN‡ÏPV®×í÷¨$,1«µP¼eÓHADP7îX ;ˆ·~3éAÆ­3^¡!5rÕ00ÌÐæœ^ÆÈ|~j—ñ凇©l®›C€†&jp¼(Çs"°“µnŒ²n]GÆŒ‚B') .“fÉæVFѦ)¤Á€7ÄÃAÁ±Ï‡Õ|ÚŸÛ™ñ–x}¤ qÄÓD/ŠÔ6%[që§êvùȘº˜¦YÇ©@N§‚ÕÑU¡‚Ñý.õ×bÏÊfÌŒ˜j2P=!#Dùwk ÑØ‚BŠZ MëÔz„Xdæ9QäCÈs@¬7ˆSב¢—uœÚ5'6L½*„3Ø¥1Qø×cº(˦d² ‡"YÝôF¾ûõ$Ç" À±Ub$Qþ’zuÌÿ¿¢Ïÿ«‚RõÐmþÏ!ž‡Ààÿ¼À@ù¿ÈѯÿŸÿ7ÿ¿½gß´œaýÒC¹L¿AÌÌHcb’’†À´¤¤ž9=™¡}r²2È29ìò:Œ(IIéÙ±Ll¾ÏW˜œ”T\\œX Ýž¼¤œIcŒ¶€qqàm‚¯Ú•‰šO3jó†c œ.êÜu›²,[W›çR¶GÿfŒsÈý~GQ á¸| 9%…Äæ§n±F².NQó±‡Ò´nƒrz%HfȨÓÈЄA=ÒÜ…4*Îêíd¤w“«® ÔCÄeÄN·§Úy=ÝcJèq ’”,ªb†¸Ô*÷bÌ?ÁTà¸L§ª:3=úe$3µbbÀ ó™¦2F0ïšdµ~uW§Ã5:l)‘ò&ª^o¬ä»Åz}%4êçB#³¯ÄˆÒ&(Æ †x^Õã(ôUÿf.ÂÖÑXÆëQ»ÅŽºßOùvâ(olj×$ë›Ð.ÔJ\^Höµ®®&¯ ù<„DUdš<cI"„ѰG~uXW¦^Í0:inÕoð»Î‰4j%.‡o€Ñ L ±sŠyN±Ã¥¹‹;':ÝXëdõ°qäåûè÷õC«Yæ´Œ™F¦¸µúGs™éÜç.¤=º=!ÑÜŒËmÏw¡ìÒáeèIñŒÃÇзªÓí¥¬B¡Õ™uëÛ™„„êíæj0×}Fß•8ÞB¬RÛ-–5?bM |¦ðtõYÒÐ7ÆìfÇ“^(“bbØÕ§™·(ô¸ jŒŽÆóD}B9šUð2…Øã³À5¾èm# ûšQÈ<©ZG©‘zÜŴܦTÏëµâ……ÓÕï¬vÔàÈ/èWNGjW°+jˆdŒEáRͧfa‡Ë Î#nvMÂôza}mÒó¼5Ú`qÒªf¼¡´ƒ]Ôëj´Õ“:°ÕÐ@ŸÇ¯úüž†Z vZõ{<Ô c«Z7©t–M]oS]“üNK¡AÍÖ„œ«9&æõKbõÑ(aCÁ*ÏéV°³f+½­c¡ôÈúcÚ 5=ÛëÐHígeýŽO0€1Áo«ÅÖ(ÁˆœALjOdXo6ÕOñ–¸ÔÊ›R+•PÃÓj+Æ[HKy{*EB{l‚ßK< ^â¤Þ›ìr»HJ,¸k}Kȧ•S°CÕ² üuÃ~°8îÔyœ‘²qQí}§;dâwÆßygç”ñ5³@°‡ôAðb‡}°âH•j6u­ Çj«³õ‰ÕR¥•}¬J“UvYÿèGjowp#”5†àÖ­ÌcøD¢i²Õn {p^åÅÕŽÒ¬HL¿¶È›Ó¬=b-{7Cvµó\îØTCÙ àÈè_ÃrBÃrBÍF«ŸVh ç¸UâõRR™ÚÞ¡Ó0«3¹¹½ûõé›Ó—ËMë‘•> GnŸÜÜJo I$ÑF$1d‘¨<ôº(ˆ$Ùˆ$E½lÓ¨ôòj¡Óï5þ«wmXÈþº £II±ÛCë"-ˆÇ8‘©qŽ×ç¡d†F.ê,ÔK:ÞïwûRÒ¬?Á Æ…(ª@2f”›8t&TõUwåIqÕ1eâ’ê;»f³áÏÙô†‹À¬j Qzfõ+Œgí1Ot ‰˜•9¢i‚ ¨±kd‘ÈIºb ‰•„m-ÄH+ÔLë5‘Ê“¼&ý©T ®Ò‰V)®uNnnZ ¢›±7ðÉ… 㲪«B…—oXgˆo"¯E6‘ÕŒÜãClÕ&ø"ñrr0d·Q$qÙÄm$GÐ(oƒy6t³2'€ÓÑIÃk½ž`3Ó”Z{,§æy…©ó*ƒwˆ=´ Ý²ÞØ„n>’ÐÍC›Fa#@Tk ¨HÁyŸÈ`B6=BУÚóIuº8!Ò>Ùdžo„>Õš‰ªÓ¥àôSd=²I%¼‰1Ûd^l¢DÉÛ$^ºdè-o“Zxùrʾ‚MNØÌJ¦·ñ³˜^UdÀ… ¤Æã®!ª\£ÓŸöX‡" €¢a¨²æ‰×dYÀ¦ÿ òVå:= ÕÛ)£ß±©Æ\T°ëæ:‰{!ÇÄ1€åÐÈ&´~Š6Æ Ö4†ñ ’ø:º¬:•m‰É€Šxaú4Iûa_~•ŠòE·Q‰^ŸÚcNÐÌr«¼.°’!"š¢È"U6{-±h§†ô̽€“FV]ZgA4;Ë‹‚©Ob“iJ”yÀ±ª‚°¤p"‚²: .°³ºÛi̱ÜðÈ0:kCc%.l¯¬eÁ5†á’ –`Þ)³Q° ˆ‚¤¤Qš V/rª(˜BÊl4—¸üa2 4Y‡1"‚Š%^F2+"Kò‹8ª¶H¦H¶Þ nqz÷ËMëÑ/gЀôÜŒ¬½Ó Éâà 2×tðêXRIÑ1¤ÿ <ÖxS± s2í(!¢/×TðÚ‹S Þ¬¾ƒ3"6¼„‚ ñ¼(aÒè*Ò0í‰ÎBE%H³à…M¯½8ÕàØwPvOsè38=;'wPö=Ù}‡d‡À+4¼}¯Ñp”^"F`U5‰’")¢`Œ‚ð M¯½8•ðædd¥÷”¼bÓÁKÙ;OE•‰ÄÓÒEÕ‡ˆÎ±Xœ¯ØTðÚ‹S o¯ŒÌôÜ={¦÷¬D8Dx¥&„W—yYBû€%™(Hä4‘W0$¯ÔdðÚŠSoßÌžéj"¼rÓÁ«k¯B• Ç)2±4DKq™ƒ3¼rSÁk/N%¼AŽ“Ö7«_fzNz5šÌ á‘'úý±ûz*Ä:'Iœ K(R„Õª¨¬¨cB?ó– ù&T¡½@ú½‰B¨;òªôظ*´®˜­ÖˆuÈj*Κ.Q Ï÷€Zó=L¯¦4C1zå9'@žê™åBZ+R®ˆI4SHŠ*a6Ú d)à¥h†Lxf(6<@¿¿´Í·ŸÔdjŒO îÜh‰"ʃ(æ"îPÕ/Øà'DUý!N0q…ô]ÓæUQ´AB¼0KÊñ8òòˆ§I ª‘’l’¢âký<¤ÈAŠ-„Ÿ*»«cˆV#ÆZ¡PýÈ&›‹ágó&¥’M±$±¦ßþ‚ì)i Ó·Y$Àĸ„¨Zɦ“À%!m¦yA­iÞ°µš…]~ì *õòÑ*´^ÚZµ¡mº0­öPÜ~_¥R/­ÚÐA‰¿´µjÃÆ$á´:;|½Üs8ªs´ú« TèM+9 µ¥PhÃÂ$1J ŒêGŒ&ïn•"·C Âg]b<½*46ôK’.eÛæ¢9ÆbŽÕ5ðHaHKu b˼0‚¹Ú‘«g¶«Ñ 첌†RÛ~n¯¯©† ¢¬À†]“cÅð¤9.Òå…ApzUîÑ\5IÛ¼¸O¥Õ©öaýq!⢊O{,a^S‰$q¢®¼ÊÊXÁHQD­UQ­©Lz×hMEæLø0‡Ò³BÉÕ·c¥$ÇqQV'!Nt€%$ë3UÀ‚ª«"Ʋ”À]†J°ïY!½EM-„¨e%`‘%¼@¥D*§Ë¬±æ4 kˆZ zŠ’"™ŠHöÝ"ôU.Î|*g³eÇ ö+™«?ƒb Ÿûû-V=…š0b”-BAÖd(K Gi P±f, Ó0Çi—«‹ÑZæñdWHä-ÒϪæí‚&¢2¤h»'$‚ÀE–eU”5Mb¢("„TNIW€¥Œh- ‰xÊç”aßCo„ʰÙÕ«µ«ƒ½›š#³ÆÆ­aº(Œ6}ÁŠ$JKš**œ¢Y¡Nâ9, †ò¬  ¾Ô™Õa.D¶Â¨ÖªGÛ‹6åÀš*ÉHÕT#%° ÏéˆU6×¾Àq6ÀÕĈ 8[a|Ör«"r0ÚdM @åXU%”Âð²UVå¨ó˜Ä|nÛ@†frÕ&7"ãW¶ÂË-´îr¼MÔàËÆž;ccoOAD) ÑvÄA!QÔdŒt¨BUXRXŠ´n´”¤wµQfµ™ŒÈìßV ¯u‡:4-äømnYˆTVã‹”UÒ'bŽ@Ú ‰ÒWA¶€m€«š,ˆ,âÚKQ`Þ¡ÜB.ê<†C¢Bë" O², *‹EUâT¤‰H³x ”l€«4UÙJ;Ô‡[ˆÀ!ÎÂäæ+“áòŽUnä@Ñf”–ABÝÈ”,ó 1ÌP¦Î‹‘*‰¬NÚ1ê#ð‘y€­Åô¹4âæšÌÕ4"pœ¹ðô8€x‰§ˆhŒ±s*16Éó{ Í æ^yºßÈUL±Ã—O­Qó±+/ðóL`àÍØ;6låG›Y†D:¦®"Ó¼«±‚¬jCQ’,'F0‚GykÌ Dbö¢yõzw˜^íQx– NVä uŽU4EÔÌÉÓX Yt1µ-ˆ, dù(#««H4EP€$ñ<J­1)óÀ,’ˆ`!Ë_ díE " £l´I$K4V9j”|hfQC™U$J/hVŠ„‹¬½hAdQ46Ëdyˆ*ÑŠê¢jXD¢)Ûc‘ˆâEAÖV´ ²|46 åe^Ç:¥ :ÏʲÎò@š¢QÃ`9l!+] díE "+DY9ÊÈjTã<Ñ%‚E—TÉx†‰×t i(-d勬½hAdÅ( ˳ѶYÀë2Vˆ%QÕ$^gU]%HD 굊už½(6k+ZY)È6¼‘«µb¸±q²¤„0-® ᑤ`V¤´ËÈH ÆnõÌ`‡8¨d³Y"Éf‰œÍf‰\C›%^Èìnp¢ÔQ„}$3ð L}GCí ²é ºxëJs{HÍ• Õ¾¨œ‰¬ÁzÛ :›áJžÄ².”+V-CáC]€•}C\Ob³3#ÇG²ˆÇf³?N`Ø¡«Z¼ÔÏÜ¢5°rÉøP}—úŠ3öp UD›*€D¬z^ ð³…µ#°&ð†*ªMĸÈE­µ2©¾…ITÒàçPæ£á3í±€X C,è@¢yaI$"PTYÓ N´@Y%ð6#lµƒs\ÈŠ…¡å‘¢ƒ D%*æ@„æ7 Ðò©´Ye‘îögËóÂÀÔ^öB5,Lm"˜P3‚Õˆ%›f¥H£lÓhÛ…s6[Wr"°Í9ui‡Ç5IÖB€ y'Ê2‘d¢b‚UAÑŒP›W˜¸ÈeMAÖ¢½‘®{ ,| uɪhJÅHȧhC>EI£6VÂÓ‡¨TZ„ÓB š¬èD4YF@Æ,+‰P€º$WWª±.¥rcøJõ6þC"=*ϸz+=jJR)XÈVbãú!<×xØsˆ¥å9u'!…ªJÓŽÀÊ*Ívº†!®Ž}Þ%Œ}\øØÛDHQûšvjþ €±¡Ivú0hj½Y Þj°4eÈ*46cr!<ŽÙ4y—4qaAc“¥öÆád›¸.ÃÆ¬®r*Pu€±”%ñ"‘5+ v6õç-$D Æ&y¢Ë¼c¨ª²Ùg’“Q££*HˆåU$NdUQ Vd]S¡Ê#ùlíàmTCFÊf<#’M-!Û0¢ß76üDT–g)ªˆjÚ2aEZ¨”ÔV¯?öûh‹>¢Ö,õCÂ?Óüyšj:°~iÒЃñË5Mú¬d¡ ìK–@ #Ìqб) Q¡@x ð¢* –IuØßoŒ"I¿§AÙÞèaÆØÙ^EC‰ÐYäˆ(Ê Öt$aR#xŸÀ¸œçm$Z·î6É¢tš14€%Žð‚Ž8¤AE ò †=Æ{%6M¶€ÀÆàAã² ª¢‰2%‘DX% Q”X•A啺ÓGy˜KÃVLyB5Ê —²©Ø0]®Ñ™®DÇÌBB) ‹N šŠˆ xp˜·5hKµgkââíq 9&ÌE“ _º;ÜBΆTsNªy¬Kª r˜ç$–ÕX‘£¶ÊÉ:„z!ƒzž¿ÜÆÈl¶a€mlÀUÕØF2°ÆªŒá­ýDU§Õª?8Þ4™#*;ðBhÃÿ!¸„´!Ӱѧi 1†,V5¤(DD,5ÂꊪȄ~UcùGÝ'L™&›| k;Imx>„Q1ŠËn3Im9¼”¹ÍFF2÷mˆ'Û¹:Â*²½¸%ˆHcuQ•ˆªqÄ ÆµÆ|nÎ#ŽÊÕ%M3ä4кmFÕ®5¬ûµq‹¸¸P Ó†Bð7€ ISqMÌ l()Œ`µ)D6n¿PU5cu@Y¢ÆZ®?ö%è*Ï‹Z¥ÖïVçsó¹Fš®ekŒ,›Jõãõ5ô€LÝÖŽ³$ŒgBDß&~ °Iã²[õ€l|5zù+j*§ðDEŠ$ëÆo­« Ëk¤4ß[&xÙ MLAÒÿ~´©pQãO©P¡&pXPAÃDU°¦è:fU‡ºRjÄI|$;—j |Þ¦ÚåÙèÚ_tMÇæ[È7úô†š& É@„<æyEÅ à5¨ÂzL§ÐoåÎh•`!BeS¬ò\4(Ú†ÌèµHñ5ú*86'£ãA+2Ä«¶êÏG“M‡4ë!ȉœ*pGU"ò4*ÉÕGX"Jµy\ò(š>ÚðPÓ† ŽÍÿ{O¶ä¶‘¤ŸýÍËŒBGÝG¯W «­q¬e)lÙû0á`Ô)qÍ&{I¶e=ì¿o’àY@Ù–fÜa«›$2 deåUy\ÜÆ– cA¦œrŒc@‘ÎZ‚lL´µÄÄúÕìx~ÑHÍ}h˜„‰MÙ'xjq¿¬˜°¶éÅ­m=”:ç‰@r5Bá ,NßcŹ»™ýÖeÆÏ•Æ6ÿN¬ÈR‘]\*Z«hÐwPCIb¾;´˜P‰ Ð `ø+F•hÝÈÙgëö±„Pd…ây-§G½[(tJößÜ”‡õÜ›‰ q̆ïu'%ä »x-*TŒiÄ ”yl£€BCžq´#ÔãNZüËì¤Dô€É…4`#ñ„GÏÁ§»‘]ðå»$ †4Ա隡`œ;¬Œ zÊsHì!•t椭?h#%Ú.`Ž>ÅôÇxÔ‰n˜ãóí±¤?ÝáÆû5 Sè1¿x54PYâ€1DxgRÁ¦ÔZAÂ%§f_íͲçMÇýă`}:á pz†>÷fí+ÙÆ6hlß~ed´¬fÞ;êQßõÐwþÑøaì‘ÞwyÆ1ÿ„ãD£|ùF-Á&†ANƒIçÃ+çdìeåû:½9ÜéȉÏV§'ŒcþIÇçåÃÄb,xÞØÙ*y¸š·Ôd»mqßÏ ObÔ0Î5ü‡ ‘`\!ÏÓaµáÌ»ébünêìö4áíÕüq©æí’ÞËjÊ„'Aájö¦Æ2KÆVOŠ%LÉ2ùæ°n¨ñ¯Ña“°J$?Ï 6Ûµ 78»t £Bæ—Ø £Af$’enF€&˜WCZ- %H`c0;CC ¶j¦ži7È=Ôe\^¿pÚx ŸŸƒ«×н'ƒ·ïM~2+©X@4Æ OŒN0„±‘–l3Hس»üñ©1ȉ‹Vˆz/J,SF`’è5FNõ»»Ûù̸Åb6ðì¯ã8±Ìíänÿ2æŽ$zp‘\ÿ×+K`e½ÏMíØ¯›ØyüΠ¿ãh‡Ñˆ'ž†çp€H 9He©<;Ý_¾ùÇë·¯Ñèë篮x>úÇhT¸Ë¥yLÖÂjÅǨGÓ°mt‘<5.Ћ¬¹ÿíï³ÎŒkaTíü­|ë†Z‡ƒ±ú•~öÂùØRq<›^}õTÇ®»Ý»~b®h,9¯ásH˜¬˜Ï#a^!þq"¸üÀ¥3óàYü°šùzêg[…ç„ÚÙ“ª€Ìï¯b`#Eåýj†Q£èNñh Äh»"çöcÙDà‘X,Ó—Eê–µ-ƒô\þ¤½íî»OÞwî¼7åZæLO{@×Þ$Ú믮šQ)žìŒ´¨V¦€Éê¹}êCÝ›kàR­vëCÛû«ßr'©ee’K ¬"šcÍ­.\ Œ÷Æ#Ÿ)oÎð½/ߌ®¾þþíè§ïÿëû×ÿý}îŽ[¯%ŒS.!ÓÍ-²èTØ3£¯’ÛÝQwªu~€/RÔà‚LËÂß6° ÒDæä³A^-4guöîE˜6ý½k¦}ûí«ë×?½=Ó²|B¦;cfÑ)¿áf_~Ý@í±j· â¦kæÙ9XÐ#.ÝÒ+‹îÙ†½:Bõ·5}›†_g§x`NOö¡Ïãôìöö}I¾úÛÆ¸\Uמ›Ä Š Je@9uA(H'¨2ÔX‚ˆó(söëÁw‘Êéï]Kåo¾ýîzôüÅ‹ëgÌ<Ÿ–éjÐ,R™öåÙÐ=aQçyT1c“‡²õÞªè²ÚNØj“µ6o®Ò?Înž ̆º@ë9Š+ŸœÅ>À>è}ðêjkôûñ¥¬kV«øí«+*?›Wþ®öÛï®ÌiG¤˜ðHÄ„&ÐC%‚íŒ48Æ­bD¼€ðiäû„¿-š£¼~Þ©{®¯$:€GÖ`õ-•Q“IX å—n^9eÞW I«Ùmø·nÓS¸0±£ïåTƒ—”A'-c.ˆe%¤Ó„#Ë©VºË©†ä÷nTÃëï^\ÿp6åP hÓ¦³ˆUÐÀzˆýØ‚´ W½¨ÏoCÆÖιtG Sh4@D;Æ µÀhîˆPÞ mD®‹ŸFÛ¶Ör˯k—盤( T_'Úlý=á.5A¥þt2(|A»­¿å®‘6ÕxÚtkÊ—ÉÈ V-= )kÕr&,õÝ&ñú‹‡`˜( jzÜQÞ)DÆ¥¾D×_œ¨ˆ‘¬ÐùðÀøÖü÷2ÍN üêôÜØ,F(GÛ—#¶Æõ„ÓÎ`ÙS’pÑ‘z"ùg®êºß2£Øâ™ÕLmN)‚ÌH¨G8P•ÇŠŒâ4òãÞäàûöFh)á)¤^*íÜXA=®‚#:ØUÜ7sÔò ŸF~œðbáÅ=ž>¼mL˜áÒtk†ÎhwˆNÎS´'saßùév°y ².³ƒ ý èáºß,¶zøðQ]5ñp˜ ú2JÞqÏlº%ˆ—Ëàmï©PCŠhIGª×vfGI ï¾ » ¹·®ñâU†gµÓÝz«³u#^:«Ïè<”Ä4ã WT l€¡Á¡ A(. %%‘ï ï]ú{¦à¼i ê¸Ò–#»ª…©â?ÚÖÍ«zi¦ËÒ`.ð=ÒM6óÏJ{wŒŽo€{ÅÇÏâ†'ðé61YkPÔ}¦7ý»€YgÝ#ˆ¨¼š®*ç_¢zðCö6IŽ0ÌÛ&Ù“‡¸e½Îö/v´«³ƒ³Éa¯yÁÙŒ²½7D¸þ¼ ®¬„o“]ä3Å{asúâ}ÜKÄ\þlBZb´&ëòŒÖ’ò¦Þ¥ ¸·«"•C¶ë^}P¡Û àP‹´“¬:ܵíoû· Çæ Åi¼ýj£5û?K¢kÑñ“јР¦îÚ^Í:öIuòÊ<öÉk6ÈÌ 0ÅΑ̋­nQç7}¨Ì_±ôtÕ¬ËÚ:$lÒ@<m§¯žÿt”’‚3~ ðÖ!®ÃÐh‹P’ZLFsð“h÷ò&úŸv€þ~᳡àô–dê")¼#DLœ£Dh¸ERÅJ'hn80v'qš¶¼­vãÕ’#Bûg5Ïî«°Ýâ6`õãF÷6¡“ª4¤ã¤Ä¯ˆ…Ìì ˜4Ö)Ì…€E!4òãñx8(ïû ¤ `“n®—,ÈíÙ7HƒF sªÐ½žo Ä¡–nçתuÅó¥*•C1A©‡J2®0Ä*fœX—m(á{_¾}ýüÍÛŸ~¸ýøú§ï_œ´Û€i¥î츸—Ê+…× èc±¸ Oh€âA8‡‡äAÌÉ«4ò}yÕ£h`ut¾rZ#ô~^MÆËe0)k€*²y«.+"Õ€21©!IhÁ²¹› -Ÿ]í”Ï6ï—–ÏL±bÀ€Ò^ª™ö@†ƒ×"r™#¶=[ý}<ÐãYAä»;«mÚŠ¤˜V·G¥yž% éaçyKQ6C½ïÝ=âþ_´æPj¬@HA°4S¦°G@[Í=”HbdA‘±’F~ܹBƒœ+tßÎ)¶dVËWHb¬QÈB )òÁ«7‚²š—4ò}ªEoc[ Hk~׆ã–#Ëòƒ»™-ë ôå|6éfþC¢E²Êz(6Kê`’ ¤óbdù}©ù X¦7|~g–Ë+*ƒÓˆ©ò+O”>_XmA÷H•%g&‘—Wl¼b÷-¯ Ôtzj\^0¨tÝ@cz€ƒKUʧ¿w])¿:jùúõ«7ß]¿½>Cµ¼,vµà‚(a ×H[(µ DP¤8‹•×eÝ8ÒÈfòÈàï¦îçyÂçò€aŽ&oKž.o`÷µyó~òD!X6n>U“)üFÏI»›~'ä›f2 Ä±öY8qÇ¡6ÒZìØ(f“W™À¹iš9Ð4󻱞«ùÇØ7sRØ7³¸²P”aåX]ÚXœ †¹ xe v’È;ïtóNïÛy/° ÒÃ:²”Oñ ±O@˳;1ãÈDŒÍ@Œ¶¸­ž8Q˜0\’²m…´Ì9h0õÔ9,¥Òå‚–×–åúœi´rO‡‚L;gq:1Àìëjýºó@ÏkxÇÛþ<á‡ÕG®3_-înc\#H€VqÝ̬›,:ÉA¿çú ä¤÷h&YXIÇ8„tA6ö8ÌÎÞI¢Ý‹­Ý¨_sÃr+ÐO&(ÇŠkPAX¹•Šxlp•Ð Øà^Ö@ |_ÍõêûÔx7—6òqv¬„;¸b•Z]Öä 5öëÝ|=¶UÌR-ïªå\Mu¢Øž-ìÙ ´FPCIb h1¡3@ Àð\!›D»ŸèŸWù/T ‰úï£Í½QË÷9…&n¯Ø$¾yRh?ßø1O­Žžé[S ÎÕ‹—»ÃØ1†œ–R¼´ÓšcŒ©^f&‘*ƒ"o[=ͪEïÈ[ÓQí†ÛÔ"òôô]¹(AÅz•° ÂJ…Õ΋dÍŠÁ-E+“F¾¿2CzE´õ¹â›Ùüº‰³í€Y Sû9$Ç&PwÞà"µ½€ ¨!P „° Ρ–Þ­ ¢—˜]ššD»]!”wJöîÔ)Yáј„äs,c*™ßnFoÞH$r¯K¦6¢98бԳú­Í¬=W&í]M"ìУ­ ÔvBíÉ#­ ²Ç5Ê«!‰-µé°i±gQHm=æ³…#ÃE˜"N±erÀéU§Ábév}EÉ´¹öD´pÙÎ#ª[Ÿ´}„Z™c1±5;V•wR QþS¨½uÀC£ à^¹ðšæ  4Ú^ýsN_é@šÕ‚4|ÞV_Ϋ5J·Ô4ìý墲óàlÌKÏyè`e¿ßðjx<|Çv\|ÿó“B²½üБwñ‰7‚ʼnBQk\àNî5£H¥Ñš%©6¬ìÜ&ü@3ï¹Ëë彆ëÙÊ[;'T]¦—w JÍ‹Ì1íþížn1.Ì‚¬¤_ºðŠI€Ö(˜³†8 )…H©ü8{í^BzFû߸×M :×ÕÃÛðï%òÚ‡6¨X÷|j¢®·ìÔçÉÞ´qû¿p 3k×4½Ç½^÷ –HÇ'*q‚vcÐWpXõW».ÃlÖhc²¶od'´øÊºk"¼0SIˆAÞ81ê­ÂÙ­Ü“hwg)e´-~7¨mñÃDßâÞG)’]°tØ+a˜Ð^áð£ÊR†LVH:fœã—*No§tøÕ럿½îW:\ÝÌ‚ûPZ<ŒJ­'ë,¥Î G˜Œ)b¢µZ« FŠYOiäÇÈù #r~ßGäò‚¬Ng)$„œ %¦„°A €ìNgøÞ«ûêùËž¬>­Æ7¥-u¯Ãâ6޲ð\Ä /CÆJ%oƒ(Ö°ÐSH#ßçõô€‚í’̪èéÄ¿&³Å:ô,ÁQTì¯a€IŒ*^ãNœi®Ã„pTc2”_'‘ï¯BŸ&L ЫúÊz%V@§*õ|ì|{m{^©¦7¶ÚxénẠæÕ{µˆ)x¿NcÇÊ3ž]î$84/þòøqåƒ[‡½W?ë¼Ý6ð]Ä·»—‡{Ü~Ö|߬³^‚lÅc“ÛøwýQ¼×È SõÛãh´?XÝyx£~Ý  2|¼¨¦ÎÙV@ÇLU[]ÿR㫪¯î&ñWøc2îàrwS3Gû–›‹÷UÁ'â Õêþ¾z ½æ=³ãïøUϾüâóø™ŒõÚ¡¹×dzÙx (pZ@lh°C<„ ãì]íå“ÿYôþ~!ñ7äÔ¯aó4ó/ bÃ`/BôE¸ #úEõÅçôÓ>Ëú÷gòó›šW}Ö»úÏ/ÿYïžV‚ ¾âö‰yðhój$L³Ë¶ß{Pýòå/ÿñÅŸ?ŸÏþß:ΚÌÞEs|³äžÜXš¹5Ní@@ÜÿBH ÅqÿÖûsÿßÇÃØàm2cÃ.·ÁÉÁ[î½c€)#þÜ!ÿ~ûÿàDŸú~àþÇ ý_ÿúsÿß“þ?´Þ]}}d­Ì¯Q³öô×àDzÀ½ÕB:ᔞk-Œ§àb…éÝdRýòh¸IKà5ÁQe”C ¡Ð0PK‡‰Í)‡ðŽ'vìöÓˆ]³ 0Wáî ñRkÎ,s„ i…÷ú8â‘™ÝM— ôŠ ’´†±VH8Œ¬80D?—@«Â *¢Â!•S,nÄvÄIÊäÚ^÷ÌtxtÈ­ŽSç¤åÖ`¨°„qÆ;AÁÞC>N-6&Ø”Vaì´aãY` ¢PB¡(§fZ?‚9ʆ5ô‘ïPȱz¢4 v¬8„ÙÏRܦ$ÅA>¼Œ)€Œ¤FZÄqàÊ}¤¥Ý$•0*¥Ã0,R #Ú)®eв2ùt½Q¿§îÔö’ÖR q`Wð;m0%R¤â§¶•,Øþq^‚Ò°À¥jA3„pãÝ>Î:äti”„í¶-bZKá%£K$ƒÀ·öIoÕ<½ü„‰°<á°`x HXskd,*³ìÐJÅî³³éäcr‡ig-Ð6ÈG± è° l ‘â’Cˆ}¯í¥þö®<ª*K•¥ƒ,퀨­ø,fyû’(’Q@" 5÷½{_R¦RUTUH‚4Œ¶ã‚:ŒÚ­†Ï›nƶm\Ø”EP[»Å¶ÝØTlƒÌ¹ïÕK½ª$$UdPÇÄO’zuï9w9÷Üÿœ{Þ¹:RDz94"’‚Ö1t¢k<æšS‘ôl·¢ªª˜µu¢‰,1¨5Å4YÄïÍþ_!Éþe¥cýŸ1ûoÜðIeJJJÇ—L–Áð»%ÓS Ñ´±Uz=‰ÒÔ:ι¡!aM‘Eo€Ý6ž¢œ¸S–uQóäOå²Ùl^ÌfoÊüŰޕûƒóÿúƒ:òG¼ö„·ÏÒhyýs,Sòúy®cýŸ‘ýÿ²âëF”Ý8¾„¡sÍŒŸxõ˜ÒŒ''/ïaD^^qY13ytÙØ1 —Ë2eô Ý:@Gþ¼¼’qÆ}èZ#Xç­eòj)-ŽVŽý™uÕÌÅQLq„۶ʈ6C†Ó4Í®m•Ë ~U‘(bhÙ2£Ú7³Ð3Â>cÏ¡q°ç4¾ÐCcíÊÃèëµ-œX62GµðD"“s&Ϭ ¡¨O÷»é”–jñ:6"*· ƒaW¹bûœ8v@lÕ°€NQ|y1Ö/'öÜËü’/0„>¾4Ÿe/¾‚<›@fߨŒÁª(Ò#¹F$â¡ åhxGŸD*FíÄX¿iÚŠº¿¹ÍDöÓØ‰÷Í3ªI¸¶xOQAžýMÛ*âº@„Ä¢I’j»ÚíÚä0¡·¹¤ÑäXch‘ôk§T“Æ\ž…ƒF5uf ɥ,‚2v¬ f•±ï^’ 9β{8šøÊ+¢ð}óCëÄ*´ih FÇÖP,LÁ‰:‰C'f… £Œ‹•‰Vø" Êf|QxBãìw°c¬/KŒ^±Ä•št¹Fi߃øý‘2;zXõ9„0Ž}†á)ˆÚ­?¨ºŽšVÇóIճư Š-¡pðf:ä÷• `†ÎPBhýÂðÂ$*'ÞÇAÖpDT_8A/Õ~×S¿mÊ1L,È&2掖±:\4ùöŒGå$ÖÍÄ0$!(I 1ÁÎ'i y´ÂºÜ´ŠaÛ„®w^C=5§Ó±´®à8ëŪÊ#íËi›!eGú¸g6qÈù„!çSóæ[b÷‘Ýéô.†á¨6n-iôPH£‡©µn8½÷½u¡pÀ) zK³ø@m§æOb+èAtq¦D…ªÛ*Ž`b¦D„€:I Rœt±)š «9BÁp*dhû“¦'=b‚ô)®·´ °”×ë4Ê›J—t7 Ý!¡§BÂp“0FJë&8%áw“0f*$ÊÝ$Ê婨p“¨pHT¤B"ä&rH„NCãyä$âl“ܺx%⛈“æFI®öå„Ç8߯y’—AÅŽä'?w‚…#ñà.© Œ­EK-o$/¿HÈï‹ê(Ü—rª‚³rhuN„øÃä‚2ÌÃĸ6×¹œ ÀN‡ÜÕ*üm ~På¬!·P<Í,ƒÞg Nœ¼ÁÙƒö‹DðëtÉZíI ªwaB8´K÷JOÑh&ÌR¸g'…C~?ã4’ÆU;›H¶•ÒÂÚ ²LÇéTGÃ/úâ{4¦â™_´‚¡ÈÜŠH§o8ôP,ÔÜ+°aWd4 Ô„¤=Š‹*gar¬Ca+ºD5K*eíyYC2ó™æ"¬“ã0©£NfES4DU1UQ•é+ª<}ŠCÍS䤬3í…a±´ßcO‹­$H¼f°:')ôQEÒ$N%“ ª©·ÄÖMýÊ­ÿ!‡¦·~þ—|í}{ûÿxIa›ÄKb‡ÿ¯Ãÿ÷côÿ5]uŒmç2ˆ ÛWÀ ¾Áß`‡o°Ã7øãó ¶lýµ‡¯ðûèlç~%ÝžLm¤øq‡©ü½6•OÎÓ4míŸgüìôÑVÔWL„„ªõ†}TPÑa©3$i\¨[»@²mn?kè¡„›‘?›x£6õd„ŠJ;KB6 &®É­4žŒµõ3etcs%" á"µìR -¤“Lžp£Ï­KåæÚk*”ØVLã?"è÷#=˺‡}¨<Œª,“´)‹üf ­œ#ÔÁ,Ó‚--6=1ÒÓ29¡EÐ>k§†Q…B ÍÕ´+Â÷1+5±;AËbµÛMcca†§¦e(ž²HÛâ»|]ãml‰Á‰4m¥%ñëÚr™&aŠV”¢Ø¥Ø2wÁÓJêÑ6EÊ"ðã%-1*²ÀžV[‘;Sí'ÀÄš REárµ¡œã(¥³àµ ÅöûΛ•¿C96W1Øfs¨"ÝÐëë,g4×J§áÙE—ÁìPZ…š-¤‚wÊ”‡ƒÕ!Gà ³*A­Xn¡ÝRÁYˆÉÆK.ŽÐš"é„SÕ` VÏ—±aX6x‚Aе©±V)ÔÀ5€F˜5Š-=ÌÌØG üRë1†ð,îM(LH¬¤£Ñ` )ZQmè ‡ƒÖ=ÌTžÕ›š‘ !Ë@M}L®wªz&Ï=-Ž?Ë!CW°$‰š¢ð‚¦°º©ÉHÓu¢¨X0Ó{̘և³åD¾gjúZïüFV¦-Õ¡LÁP¤M“›ê€ŸÎäò‹eU”U «4…/‚*Px¤œÄœ’Öäú£^ì·î™ýÖûá¯hÓà§: müF³ÝÙÏägoZla+,¶ -o'¯ ÙɆaãké4«½q­ Lm`ÝB­í˜)vpÅšØìÉV[6 ëÈÕÁ˜ðzš< …¡[q£/Ø.Ç8£^£øÛO”\Öºy¥Xoí³®-6N4/N5ÉS“ÔX+³U‚åQIÀü³(3U$‰%y ÙöI£™cyrZSŸñ³6ª.s²lØ$ÑPuz«ž EdUÞ¾¨ÝªBó\Zܳ†Ð!·1S`¤!QV8™1«‹X2UÙÐ%„LMÔDŽê9Œ"‰Œrc}L´†›—–6ì{ß´´iVØlTÐ^Rf-zwöñ i»kéí p:Ç+"ÏJt„x•0K0VT‘×tˆ¸˜Ô[“µ¶ÓçEE×EÉ4LeyÎ%D8AÁ¦Èb,*(Q ­«–Ò’gq¨ X'ª.ð2щÈ•ˆ¢ÈÑ·rÅDyŽóIEœÛ°Ù|wâìÚÅ›Kº¡¶—P¦ ý~t›íw&ß?Ii&üî$åLù¡ÍÊ¡«ÛU;º½:§-,«€Âb YãTÌ+DB‚lò «*„7xE‰K‡QAŒJúb|êJ ÈP‘!Ð\2ÇÊ’"ÁÆ(q¦¦)¼"Í0ñš(’'CTDSá4XP<’11DžSSY“gá9qq¢g~i0P¡é’¡Š¦Äëô*e npXá0áM3v¥½býÕ‘ŠÔü_oPŠjbÄË,ÇÑà*SPx¬!)¦© ö-î *ä ¤ÎBS@„)¯ê‘hò Ù”TèŒ(j’K¦@”Ó ¯š²ŒYXŸˆçeª`d¤—%¾xSuÏ=‰H>‹5b°‚@0S× ½ ª@d9ÖE7}Йi‘$ÑÛq9ð¢‚t–êUV@¶Ó1r«dR™Æz“ A'<¼$ÊŒ;6x‹X5¬u»é°W‡aJƒ‹$ëªaf±ð@Ç&–dU7Ó45NIâ1">¯Q•Æ|¤»ƒ¥ÂÃÔ‘¨¬hX TÀï UŽÃ*GDy¤·,$–ÞÁ®0 íJ“òða5Í0Ub&²ˆÄ^ZN£+"H)2LÓ¬7°ë2½Dø›†¤ˆ®Ù¯Žè  {+? 9V4–NµŽ8zM,¯¬ Žçbh°ZÔDN¦¤“™># µ%aYU ³ÍMg/`E&ß"+¯^çµx¤¡ X‹HR8ÄÂ&¢€¸™„h`|‘´OâY)·¥©uxU º ڟȬjpÒÁnàXA×1 d¶Ä­& 8* i¤æ0ìöªŒ5^eaÓEbHª¨ªéXlÊÎGQˆ‰`HÓë L˜!‚Üsô”—°DxžÕIÉXéTÓì$O$,´À“Ak™&4ãT‰UÜ”ez]ã8N5$”!69ê#’ «V—uØÎY 7å“СÔ=•ÐJ,6çd†nÀ " 4Wœ™‹Ióh¾"œg]r—ñ»&­Ñãf݈ZÞ©Óx§ôûƒ54å< 7Éo ÷Nráå%nkOãɵ-Û߈ÇsüpC­O™cüÔ^俢 :²7ÿmG?~Þ—¶æ‘•äüŸÏ ñßg*ÿ‹5߉ ?«üô>›±®Px@£¢)`h¦¡³!55*³¨1íw[ {\Ýb’çTmÛm,ìær§6è~^ГzY¶B°š‘¤*XµV¸yV–²vHȵ²¼ ¨Ì@i²²*p„ ¬ú~­nÏ”ê-åÿ—ŽK`3³š* = yQ)…á%€CTuµGþÁÎÿäÊÿF¾v¬ÿ3ñs÷øq£zd^D7¥£‹'Àïåðÿ¶ngÁ¿;æ’Uð«‹~í¨âŒ“ô¿¥ë[”‘ÑûW¥ÅÃËj^rKÙõ7¬ßR“Õ«ó¼_Ývû[뮽ñüáoð%”8ßžñ‡Û³\}õäµ·=Þ{ãn Ïß3éÈïÖõÍ7rs?›qðó2Ïï;´ó²Þ£Ïê¶õÚÉ}»vëµ­aÆÚ-£û_UúêO¸ñkcõïÑoëÿñ·Å‹ú ëóÄäs{ïZ:|fÆ9˘}¡[goêüE~[•i§ü°L[}à}ú£÷-ÞÐ%;;{Üb•ûjÖöµE'W¼¾¿o߯öî-øèÒs—Íž5ëÙÊÊÊHhÎ%cãŽcåê¿Éº}hV·o¾9rÇÁË>9îf¡­¯ªZùÅEÝ/î½ì‚ÿXøÙÙ]ßÿIýîwÞ7ãùÍ›kGŽÜþÙœß?pó<²GÏž½/¾jù}‡yq;Sû’wî%¦…MÞs⛾;—(²œ©+n9ò<ß©,sÛú;7ݰúüoŽ=ý¸7ø›úzQ–eIªk¨=~GsÝÒëÊiücß³ÕÆÛ{ð­·ËñÝ»p¡qâdÃà-/W>þÏ£/¾¸O/ôÜŸuÅÁ]/Í_ðˆ¬]¢}±íر§îÌÏØO–,¹„ïž‘QóéÞ{,ˆÌ˜KïÄ—¯ïütßêñ½§çßý ýš8±fÝÚ7õ©·veúK³ÖÏÜÿšòñÎȼyOÏŸ_í}ÿ-G­<~|JÏÇ5ÔûùnmÛöîýÆÍýçDôóŸ®Yÿíî_ ¿1–HÒÄ“ÇßúåªU{74 ìqðë¿/è¿úþMCž‹®üã3ÏüíËý o¯©ì”Ñ«ÿçÙ9ãó322»¯>´÷™®—FÞÉ/ ºfðýÚ Œ÷ýõú;{’Â9{‡\øoµ˜s`ëÖÍ/ìó>ùÔòÌsF XóÖª2 æLûY¿~ËW®üúÇö©ùùgg<üÈÏN4¬Å“^Ú2jß³Êk×Õ¬¾u¤ðH}ýŸÖ(/ ýÅì½™™ó>ÿiÏþ{µýŠŸ>üðà ßìÛ°¾öÈÜõÇÞŸ»dñ»¬éûZéc§Lštwõ5]&3Ë—O$Ü<½ËŸ?96}Ýñ?ÿ˅Æ=öí·ï>vÝs«Vùÿ§eåÔºÖ­{gòÛ›7÷ÉXºìȬ{ŽŸuù¨W”çÔ~¾ôµ;¿~ýÑKOf=0xêôóêŒ={öì|¶k·«æÏ^óÔ‘'îÿ=(}ô×5ÑnOÔ¾nÏÿ{ ™÷Ô>Ûïí4vLűn‡ŸµvÂŒç¿Ú÷Р/^\øðÉ·6ÔËòté«Wþ²éñ¿[¹rym–>~À¾Q ûŸŸùuÁ»yû÷—vêtÙs5¯ ‡ßöê«G/³mû+c¿5èóéO.ª9œù ²tÃÉúU«ÞXкóó­÷¨ýðž~›¾ÈܬyÂð}sô’¥æŸsÛ¤C+˜'£çÕ-ºæ¶®L}ÝÜ¢ù/lzôÛ†ïë—wÇÉ/[úIE—Œ­=V7~×Ñ®¸aÅ ³hö±Ó/ìÓgýܹ»¶n½kÃÜ÷žÿeØ›÷âKƒ>þïڛ؜9«‡žh8« pÉËÛ?½qÊ”Ò~çö,:xèÐÖWÍòò'Ìè3-°|ÑÖÅeçmËØà»2§[¸~õŽ¿tÎÓëÍù÷<óÌÀŒ«²>U²;¸oÎ9ÿy|vù­÷ÕãWz>vljWƼùÞ{Wy½×÷Ñ›¯Çƒ§dþv÷׳»ŒtEaáþ^s?ßµ{÷_ÿ@¦N»¸ûÁ^Ý¿¹këkïܵ ç¢OOžølÍy‹‹‡üvuð¦›Ö­]+¼vbÔÂWÿ~pJ÷ò—ü_ö®®¦ü‹?[a0#„!ÓÔ»û½(*‰,5–Dê¹k/½Ê”…lÿ‘}cIƒdß*ûn4D*£B4D1–J–ÿï¾zÚ½3Æ»>Üåß÷ü~çœßùÝ{~çxõ-plx?ÈÒnsíÌ6f |ö÷Ž¿Y» ô«ÊNÿÎJwuuðõ›?Ðá𰜘?v²v!ÛsÍ:6ÙÌ¥ûûÏ··îœ±3“3lĈZ’+©Ä©k²7&¡³Â^Þ[¼¸Ù9ƒf®‡5j©ääÌãA‡dbú¤¡5dô]úãÇQuäîîö îÙ±cÒÉ“—SS¥&&ܘµ“Y\zëÖ)uHݼ,ÃvüúkìæŸ\†_ݼe˪!E,ʺyë–Ï?†-^Äœ:Õ·S§N‰‰‹ õìÙv»ì°ñÄ»‡\Ï%»Ý^²$ùñM“n6võä}|^>Ü×2¦ÝBùƒ?¾ß´¾ÃïgÏ>]ìpëôiÛ줉¤­‡—hšŸ)-[.¿uÿ¾÷ر¯SÜ'¶hq§á±¢AXj (/)uS²SF­ŸìÂÖlŸüä÷‘M"—œ9"¯3‘·kh¤¯§ç–óçLÈÕ—ý²â—lí9¹ûá˜G —=¹´þ~B¯©þ¡›û ¨c"ïüîÝF[;™ç:³ìä‘#m=îÝ =øòåí={¬%’ù×<ù=£„Z’ŒsKsó48yúé£@™•pÏ>]W²ºûÒUKŸ¥‡‡›ÕYhYWW·ðEŽ^ýÐ̃×ÄJ$­¾Õë[v(`ê©TÂÇÉeä¶½{ü7oÝzz’‰ÉýÌá©ÉÉtxãÆá66·ÜÜn-MJÂuÈXØhe½ämÛ}Ú÷(ܰm›­møôm ·÷ëgV¨{èa*ga>cìøàë)Ô˜Æ:e¥¥­‰Žî„ãÛV­Ù±b7Ç´Ls†®Oô쉉ݨÚn”§ÇË|{ÞXÏ-䯿¤R©vf>ƒ‚"GæIjm^ècy¸žçîݨ˨Q+W¹ÔŸ¨y{6;³Ű㩗³éD¹_¿¶UW·¨ýkw/iÓ¬ÙÊÙ¸OOß"÷K˜k1:mèQr‹LNKÈzõ÷ùÛ6¬X° ~w‹é'™úu·=|xìÂÂm/˜Ä-#®]¹²`u°”$G§…=Ÿ¹qÓ©³‚×-˜ú×7Ͷ·m7Ål{oSýÈÛ‘GPööò:åÝÃODJný°þºþWÆÚúeèìÝzyé¢Z’„ˆ7'Ê#Å w_æßv…{O¦h᩺:¡ÆÆSL|ŽdfîžÛ(ižÁwIí:61çB$wí*ˆ š¿m«Ó€–=ƒ’Ò/]:%DƤtÉ'“mG_îÏ 6™Ã…¤ïŽÐŸ¹èÚñSNr§˜w/>˾6ztÚqýYO&Ž?˜»ÞøKKí8—ÿ•ÝÕþ1oÌWúû˜/|“›¾ÛѪNW7V®ŒŠ¯¥4CÛ}ôŽcf­›={Æüù=–Ž=ÁĽ8:m¾å¿Û¸ýïÀëgÚoì—nm 4B—žéLšôÂýbsû¼ò{v¡âê¯ëƒ±Áë=³ˆoú›¤J&A´Dgó žçFnaœ“7GGûúûÈYaÿüUZw“É-Ü7&þáèî᱇™õ}ŠUó›÷ïdz³ÞÉ¥ëë¿y¶ïpøÐœ¿IZöËê ÏŸÌÈé± ¬[TÊ ³9ëô¦~ãÆ{˜ßj ) øVoÞÜHKssuÝvðéL«ÈÄfzziSe—Rü\ûÛ°»wî`y/ Ü`ÇÎ̶͛‰´É;ÐäàMü<àƒ[X<Ì|:ÉbR»ùY÷îEEF‚éWoFƒäÉ6oÑ¢žŽÎß=c3³‹×¯:p åôé¬Ûó{Ck.O»‘—œìÌóÞŸÊmõòi¢ÃÙ³g—-[fª¿eݺi[¿õž|í|ÇÐ]VS~:GGÇ€&MšÔ–„††šÉâc¼Ý÷ò±(IòäóìØ±÷ÃÒÖ9vÆ0ŒsÿÁ8&"áκ¨(ª{÷_ÂÃ'g¹å’9ºÖ™}¬­­utu—›ËÚ»{åJŸ mùéÁç×FF‹:;!++3sÿ¡®½bÎÖ+Xvô€_–‰‰ÉhWWϱc/®±®}þ ¶°ßÓ§÷†ž]o¹Îñ§=52:¼ï^F†ãðá¶rË_CîFA”œm¶Ò1jØ,y‘î²'"##c¡(Š{¥öáZéM;лwȼyóbƒ:´oÿS#›ö1ùS î{õêÿZ¾eïÞ½‡÷z¼°_-ýtIÈ£G¢¢¢Z‡5êP@nRbb‡Žz{g^¿vm„L6µ/ÍîÿSÖÊmRïL—$é þÙ™xäHÆñ¯{un#‰ ÈM›3çšg­±³fÍú=ÿ+çÔ#¿hÃNšôKßõ€‹ àž¦ÄNDæ,¬¯}ÛÅÆ†ÍM‹Ëß5žeom™òg¿ºu–ûHz;;'gfIz»¸¥ÇOþöÛqkí¿˜%‘ìpVxy½Ê<ÛLÒ{Рßõ ó=2^dƒqë¼äÌ™~’#÷¯n¡7¾rÿÉŽ'NDG›Õ6þ¶];‰©,~õŠg=Ó&eo»}z>ÞLzmëæKÃ#"ÒSRú飣£“““3a„ºêIö¿wùøì¯ç¬ôtºòW¾ŽÄÈÈÈ4ß¹yÔ¦nëûž&¦K4×KpÂÌ)tÚ’°æê´Ž9A9­Z·îbÖê»ï懅ívE5hp/7·“ñ _«x”ý¦°“±ñ²åËýü &aW×¶½o=± ¨•«W+æÖ_‚ÙâåÜAëíííW‡‡‡……±,kÛ¾i’ÌÙYÎó¼B|óX½­î ÅܳÜe9:thb~~àÂ~ËÖ‘¬½$÷òRÎÆé“ó\ííÿwèИ‰nnn'R Úw÷™çL“z’#7Ç ÝzLx|÷÷U{ºyzf'msyó/ïû¹•~ú³ëÇŽMOÈb½¦õ6œ8bÀ€¯’äÞÞ8‚€™Ñüì… 5åâòØþ$@MÀðεk3nüIêÖÇÔ2½iÓ¦tÖïÙ3¼sóM›6Ù§# ìéfcsüè Ý[S¿Ñ××oÙòtÖ“‚`ËÅgOtè5U9ÿÑ…Wâ~÷ÿõÍÖg,Æê\xÛIoŽžžÞܹsÛ ÿõ£'Y @VÛ´n µš»côx•»G¬E÷îçÆH*úG&>{út¦õº ÓÓÒÒÒc³ïîw=“,‹›´'.ÎÀ“ ˆëÉÉ_ ÷×[ëß2½ vçÎEGÇ<ÍË ˆÜ´I§nÝárhG~ð®…®®.¸F_öÌü2[¿oÜkÙ8³¿²³[êëÛçuun×bÚ®üy>'¬5Wâ“+Ù…M €m4îqrHß°àNFFßìJ³8:34Ô;9fÚƒæÛCròê–8ůëk’¡÷zÝÁeâ«þ¶ƒûD[™®Mò\ÕüÏêÿ±Ÿ¼þBhßÿ}ŠC 8”æh)ÎÀ4ã+ !–=ǘ$amý¿/Pÿ•õ`••ùŠþ«™¾’÷ÿQTÿ¥Lý`´ú¯Íÿôåå*õ‹nÆîã{¨ªÔ*ó¤(÷[i³?i³?i³?i³?i3ÃÿãÙž´iþ©4HGñÔ@2a9RÚ8kà«n^sö–Ùn0‚sqO¹oÅKòò—D¡3ôð.ås W÷d°÷çx?eä–ø“2Ï‹6Em‹\…Kj‚(i9'“1ôDÞ·$ŽT¼¦¼¤ "-»ßÿ}äT‹ þŠñª-b%¡©E×ÍÊíÞÿpøå&¨Ýi//ºTÜ®xú V-`3_Î>µdypù)ºþá|¨èÊÕÓýløøô’ö±8ùä’%ºjT¥øF5dKEYþÊ5΋èETdD¼úá\Ñ”«£ùYàÿÔò¤\ƒLôSϸQ½‘PR–¿ƒògÄËgTŠ·§Vd¥øFÍóòÖÖ³ï°õŸÑ,¢ÞK©®×¥Î§ü8žäÇÀÿ©uCÕ«¾½Ï†·šÈ¾CµœüÖjïë'– ¯ÀKñçå-eù;(×8/œ˜ ¤+E×?ùúX|¨èÊÕÓ­1>ÆŽãK)‡xöïöo‹ðÊK㕼Åß þsÛÃ5ß÷iYúì{‡¸ºøoÑ>ï–ZœG¥lRø*‚U9þ †À¡ÿø$°!Tà¥â¾bfIe0Œç(â()Žsªúòâ¿Ty4l”ïäÄÏRý”ßó|?Jý?‚Ñòù”ÐîÿÖÆ}‘õÿ*h¶þŸ6L¦ÓF€iëÿiëÿiëÿ½×;ÿLëÿiâô|hý¿é2š–’â2…Šb`Œ‡X‘ 8D0@ZÝLeRÍkЖȘ§üÊ+1–¢‹ÒÓœ±4ìÒy‚gh"–™15ô4qT6ÞÐD| K¥µzªÚ+Õ)”ÄÁ<Äã(ŒÀ‚A8Ç“… ¬À!¼€rRº&G@ƒ¶ª;¢Q7` æî ¼eåÑÝ-=, Þ»òQ©jOUgT0†ahŒƒ("¥Æp¡¤$)…±šÕ Úªî¨(ÓÉ~¤a©jWU½°ÕGÉu[ìM›kðéBæçãïËòïù‚ñ¤¶U?é«›@µ©mµG5÷ÿ—D?©¶ÿÓã>Bþ_.Êÿ[üýSîÿÇ´ï?Íû_±³hÛJA5þÆP¬ÇÛ@·öÅÎn¥ÏiV Ùè]ቪbÈ}‹®ƒ U|…¥´S%…{”ßEž~w}fˆ¤L)ÌÁ¥¦ UR£B++]¡Â¥ŽyUÀE ‹(ŒÐ^CI PˆV(ÿ ~¢ Ž ¦N™a C•Â!*À)ô>4o#ƒ*À He§@†jÐ+;¥|€´ …MÑuC–V(šõ,‘Ã’÷å…)Sô.ÅLa)R ²œ2qƒïë‘¢P íø²yñoåÍSjõ§BóV phVTÕ MåV±÷4‡¥pë5@aꥵ jSJ`ß©A¤´Hf)´Df‹JŸkçî5ÿ«ÿ¨F=€JóÿKÑrßqÓæÿù$‡˜ÿ_íx—®àÇûzÐÊôôêECU•‹£E8”ƒYá9X¢PŠÂq¥Àï½ýŠRÉòýý˜ÊˆJi^`YÆÆP–f)žF˜–b£–(çáçÉy(íU%ä)†P … )- Ž‚6` 7)“(KòjÉ‹•¸*#Œñ$%z±Æ è ša 0)ѳàæ-áËä_ƒþ¿Â‡¡~2~­¨fê ô#`¸¼þƒ•€6ÿ6þãKŒÿ°+R>mŒ‡6ÆCã¡ñÐfù©^ìû#Fþ=1ê‘ñ8üêC¸+öáÊP};µ|‡Hµ8T‡ÆJ¡ÐDTΨø §l©ÞéT… Xî”EáDƒ¥ £à«DE4¯e¨ˆîÇ U"ÂóQ†ˆ-¸PRýƒ‡¼Äm/OØÇ·*øD~ÊÖ×çä-#=H¥§ƒÒ(ÉæCz§˜ˆ»Šˆ»6ÊéßåTA˜«ŸÆ«È 6T¦óRP"g@(º2†ÝŠ’z©¾V[[´"Ö ­ÌÚÎnHÃî†ïIA%WyF˜` ŒâyLË[†ƒ!°¸áQŒÃ„dišÅIŒ¡qƒ(šà …ab‚'qV7öe±R~ånXü™»"YÿÁÃl‡ ´²±íSCÀH¦YÅpœ¥(Œ‡I‚%N€1ˆAQšç4fg=Ä®†Ð $'à(Žc‘ÀÒ<ކ<zŽÅ1©†hj¾›¤0I’8*B*°„£0NJ‘Bq Œj4~vC¬kª›XæÃ)a9t á"(Ž"†h ÑÔ|7ñ(. #ˆ@²$†s,Á$ŠRÃóÇjlˆu ¡ax Â0N R '(ŒjÈà¿(&å`„4DSóÝD`Rç°PeaFxA kosâ° j)g­Ê-›»Ê²¹—·lvŽ2+ÇaÇØÊú²²³}3êó_u âNŠyãy‡8œ„¤@Y1f Šg!åq`O0 ¥¤ Ó$ŠvaaZ*Åpõ)´Jõ{)€ƒœú×8@&fpŒæ0fiœ‚)€ÈgUu>¸OMäaó&@4…sà åhM" Ë£œF€´:“õµµícme3 lc;°2¨e¿·v y„eYŠÃh}áƒÒ@k`VÀyT¬+€59óÉI±ÿ³w~½måHßﲯ^ ÈâßGźv„È’!ÉIg^²H‚ín4f±ûñ÷Pîžvì8ºW–vgèv`)º?ñ«Î!yÉdЈ9 »êšSž’¯ìiuvýáì ¥Tˆ‘‚€XLŠZ'ëUd„ªãQ óáãâzØÏæ‹õþ~ÙÄÐoodø¯©YTJ¦ÅÜ'MrÉìGµ+™ÓÕĤT*~Sm‰Y³ŽÎ €Csòý½¿‰½E.["î†ÍìRØ1šàt£Ò!ÙLNçH1ä>]©MÂÞ,>"ow³ÝÃ_â~3\ÏvÃüDö’¢Øl?`YŒyVrÙQ©!B¾Q „‹5FõǤ³¦ˆ„\³NZûÓÙ‡Ÿî‡ÍânXífËKÑ»ªj(¨Iõä!J<+Bo4ý¡åï7ëùÃõn±^]ŠÝ8“T©”‚²¸L$ÁHAûk‘Ogß ˆúÕíʼnÎêšAÏH:âp‚…Æ0ŒwN>">þQY®×w÷Ëa7µú Ñ*ŽP׊H ªF“2(9D9AXXa±¾ÂzDö©¨Òå‘닺ÉÓ˜âòHzÓ•Ñl>æçf$ëmÍYb kÆD›Ú4%ï³WNO`\/ç†ËP¶hq·cqÈ{Þ§k6^®T@¹CjX?ìÎ èð÷*iÔBã lÄùâ9dïlø°ú°ZZP‚ ~…J2Ùsö¥yNFšnc£ðúzØnûÜæþæØ}~ºŠ ºÁˆöÉZÜ<êÙ ‚^úÒä è×`5¡zé¥7Ÿ ‰ þ J<í/®Oÿ>áûÙj¾<*&b¶PЕ½4áœR²Š‘ƒ¤·©‚øé˜wÃÝzóù¼”¥0„>à5²­–5Ô/í&ÛHÊÅêf½Ÿ-—#àž¬7…ò®UYj úß›åª8_»’¼¨XÂcUP1±4Ò¾4ÕšTÛWvÔ| ñý°¸}¿;;%%R‘*¹¤ ^dã E¤ò Ð+Ù¥‰”w=ýœ2jï™ ù¼#ç4Œ/rº‰ÈêÖG4rµ^ŸÑî·†t¥U«¹ÔH©áeå…j-¡ñîÛ-tÒöüÍÙ“gOyÜL²èR¦ÊÂåÛÖg—´,ÞЊÄ5“YWëÝ%y5¡×ÌÐ9ÈÕ>?DÿNŽu<ïÁ«Ž‘ _[ÕQJc.½a) Åé‚D©Ñ™‹‹)Tˆ@ Í_ˆŠˆ t¬AGRv¤U=à(²é |¾±ö™­*×®Xe¤(¦äéÙqº»a7›Ïv³ó¢‘ªAíŽZ7?e¦EÕ,PÞÏ#òû„«õæn¶,EÙ*§þmðoÓÇÁ%!ù7ࣺC†RˆYRVш$;QÞ=¿xœ‡¸|ÐÖÁvA>{?öÅ 2F«ZØ÷±ô7Áo†»õÇ‹MõâÉÔÞ}Y%Øyˆä‘3þ3i þrø8,÷ï·ÇFú³¾OMªT1h¹ŒâîŒ5ÞÆþx˜JQ§Ä.GNb #Vta¶¬¨ôçŽa|ŸLÌ÷~l¹þt^°b²EÉw‘ ’ r”S]ŒæþÖäF€­o÷#*ëóGÿ‘q‹,…¾VEÛèj%ðõ3XÉ唽%]QLô:#0¢41÷í³ºüšíß›¼Â7¼{¸=?`¨. 惽Cc¢€…$‚Ü Ÿ'Pã‡Íf½9? j¸Ñ Êê¬*£´*/:™ª=!ðÊxÀÃæÝz;œ‘¬-ЛA$çÀ5d/ˆÒ—„$geâŸùæ©å· ²á®Â"5§ºÊäêMVBÈ U“‹}ð–ÃÃÀ{ ^i]b1&¨>€8%å¼D³bídôÖ< WGȦèI¬‘4+lŸßåmèoû9ÞîZÁÝ«*Y)¼³ö稃ª6†->M¼„ÿ¸˜ ±Õ'K™k–\C æJ—ê_C›Ñ׫›Åí¥˜-|+“ÑoC‰5ºÐ  ‘T|DrN'ÆÊtØñè®A{15†dUèCÞ°eŠPÜ¢+!äÓˆw›Åí-TÍïr±æ†?³æl BˆÅÃ]z‡èчîïŽù$­€B‘cõ‘¹¨FÚrP,Ú¦»“Tn)öaLÓœ‡ü²ðGªö’8EǵÂj·=/§ð[ º¡£%ôE™Ú—ÜrômÖ|»9/Tjj®¡†¹ª[45 ÷Ôàûd±3*ÄÚKG {M"ÓåaÐÙ(¢É8¬Íñåf¹JôD}ÁCžTÑœ}ކ¥ªŽRÈ®s—P$#k­rÿ¥r¹àÍ*r ëOiÅZov°?Ûc´Ó—¿µ_ž¥ räÉRƒ›„©IAHrkÖõ.Ôí>\‡f]3‰r½ôµßÆõßö™‚úÇ%^…‘ O†u( MÔ—2¹€²‚Wn¸Ïɰ÷»ûÅý¥h­íËJáìCTÕèשrªÄÌ µ&M¦Ý›ÅÑA¾“qknÅeÓ|ì±¶:TAãjÊ¿¦ NÄÝßÏ6‹ÝçÃ2¹I½ àLh b­ék™M$”?§ÞÄ„©®ýyŠšL7õÄd R$IÙ»¾Æ\Ïçç¥$¥$‰¢¦@3C>7…Öw bBp§QÞÜœ—²Ôä¨]Pd.¬Z_§½é»·p5cÛòaûîb‰ªP·¢™5§¢µÃ¯sv½×¦ðtçmoT¨òJßÅ’2 Œ¯SÁž…Öåçø8xʸ;/db],J,Dnh¯y‡bŒvžú_N<¾¸x"$ƒ(Aá/ÄÖ÷Im›ñz.Ø ÛëíâRá ácFOjªA«Hó¦Á^äÓh ¦„çv·ÞÌn‡Çµ§×‡)çõjùyêÔh…ìõP”Èí‹°>èâv2«¾\š“?CEá†öâœ2X#ìrJã¦r_ÝZìÞŸ¸îà(xCˆ–hñ¶¾4ÚÆ¤ª%-Y³ åTðO( ç§…úCÛ¶{±é“•Å Þ…¡³ÉË ´}éôdÎdµÓÅ%éí¥zVÕVŠäJÚIç ¼èä JBäV|¨ˆUÒìdÎw³ípvÊ’‚#rÙ–,Rg¤ÓóF×3~:å|Ø^o÷#:š+®xážòíáñ®ÒŸÄ¤¦”…Ë:¡‡õ¨íçín¸;e5èQ^k¼øׇTf‘˜us}•—…zµÎ›éëf3 ÛûÙõpN=Ì"{iÁÞ+¸WÛBÔ a!OþðîóîÀ™ÖÎÎõ­']ã}‹aç«„Ö¦oal¯o&ƒ 5«¼µâ%ÂV‡ycŠQ >@÷•¸U¢Í¢CŸö¨{y×±×õ$ÐÛaý}}³œíÎL¥â×ȶ-*!+H‹R’FŸóHní-ÀïÃf¶ÁëÙòìàªC³Á4$` ÖTرþPšÝI< üa5n«é ªŽâBÝDxÜ>~š´¾@ÀB•%Z±Óc9{7,ÏŸHëª}ëÏÔB<¦`%曆bëA1ónöÓõ ™¾ñüy7E›ˆ}2И?˜T6ˆŒÖ·k‰n2ì¶/Vøi˜ï7³»©´P0*ÙC¯TC¨¸% „6ÇZ4W0U‘¨”|Ìt=bŒï ­¯Ðíúü´„„€›aÐSkè`†j†çE@êóI´‡õ³w}¿Ž ´¯¨>)k¡,¡õàmªÄ’ðîÄhc¥ Õ€ƒHb#’BñQ 'Ä… §{t:«S# fô0;…µ¯‘ÅT Åk£}ëáïd>—[s]ì—PãBMÈda\Qû´˜oÿîa·;ªqÿëKùk}b|Qñ« Ý ¤>Áž:(üb‹Â`Ñ}f‹ædI¦)ïuoݪá´yúÑãGp>;ê¾&ãå¾> Á)4Ô¨Z¥dÔ.W‚ô­°J ðî†Õùñ¤Õ³'zºËýÁx2¦ïޤõt"è(Þfv|­Åd¾” ¾5øZ&[ +[´ó©„¬§ñ­nÏ~{ûv5¸ŸÖq–­Wy'¡=S‹ªußv³ñÄ ý£•(­dãaºIA(¦Ôe ˆÝ¾s͹ñjaÛ‡NŒWÈQA)Ç䛨„§Ï!Ç[ßÞ.Ï~‡ûšntâ>3Ù*tR1)g]ìIlÎLÉ/Ÿ«ùÑ¥{Ó»0õ“ ¡ðÀ/õÝ#¬Ê‰B`#¯}ðÿíÉr?N|ûñgÊùåËo{8rÍ™ÑCÆJ¦z¨‡°Ás2ûR{Ü‘ó_Ð!Í“óßü¿&£~œÿòuþÛ˓޾¦›ú#/‰›¯O…zzÑg?±¿êg„…+{ì$*ýôúF“{|Ú‘<• CaÔZKÒþ¯¾y*Õ‹‹ãʤ®ú©\&~çêEB þ9å?ëSç8?þÐ__T»—×óW®|?íÈ—å§éûOÒ¡ö½½ û¾)U_ š2—øZcïûÄÖËó¿ô•ŠøÊÌWÚØ#_›íg÷:¾<Ž®”7W1\©Ž\O}çzú›× /Ï¿ë'­¡™ ®gœ$öjþÿã°Ù¯6zؾ;ñ °£ù_ñ³ó¼ÒæGþÿß:ÿëÕûýô 0ô¥ßtìG_½"¿–xg\õ©Ïü÷êš5X³#ïÄd~y®sû2ê³éè£w±ïÀ…¬8 ³¼äöò³¿ü­þ:æ“áêsîó}>Vú`Oî;<ô½y¥èúÍOþû¸.0“Á%ª5;àÃDW’‹X÷áÛýêVóñYEØÅÆJh›b„úãʦ”*N•—ÿé¿Mòïõïý°™1—H­š¬8‡h©¶˜ êlß²Í4›Êß8*í—ÿÙ8&’£ußß[å–[_Ø*¾ïÓ(Jzùч6&V´³ð¡– ç¢Kß„ÆfÔ ½SÕÿÓÃöO™ÿÿeë Õì“«˜küÆ™_Ë©Ñá‚÷ˆçáÆÆpgÃÖRnXX@XXØ659‚°¸¸xYp? FŠ¡ô7³d"t Œ8ü«û4>wÔ+"dø ¶µlT»»ë“B~Í™\ö$§ggÄê‚£Ñ&MËß a9mfV>V;:;w.?>¸Ÿ.6uÛ^q;@ cÂ"yŽZo‡W©+pèÕW:‚Ÿ£–õáÆØ]rÚüp_öÝú~Z¸.-/ßý¡d®Vy¤Ýuoº¼NGXrÜG[ýF@QèÞ%uRbâS­EdgÊ:OªöWšˆÉy§ŸÿÅø©À/&yòŸ‚*+Yå2‰YXXŽONÚ¼‡­p;˜«-¸ ¡Û©µ—ÛÛ³·¶M™òÚLÐ@ÇÄ LK#*¾ò<éÆË¦AJdÒ³ºLÔLLæ#¯Õ›¯…µ±nB1F~ö¬ý3í[%]]Wß©Ý}ÛY\›«Z[„ê²Åy uï*ºÀ–mÞ¿Ûƒœ6/ÿl`]ßޮõÇ ÀûûûGá³õŒ’-| ”<*œ´‚ü1!Ö¾’enù„€FÎË;Wt b·=YŒ7Uªjžé;ÅäÈ}í‡?]Qs «&î°3FÉÿxwæq³“rÒK:ÏQ6¼hÛîæolW½8=­^¡-A Yg—Î~r‰¢Sa,—ü:{ôv„ÿ,*êK‡ÝÅL*cæûšyÞœŸ{1Ä|T9}—óOLLMg«ý­÷êz®OÖMÁÔ»1× B*íy›>w×îͰ2Ú¦ff2/6¹×5"klm»ÙÎëäQÔÕä1XÄ¢¶•ÿÙÊ4Nã‰^2¨4y¦^®o«½Tc÷)>~õà z{Û¢Š‰ABù»a'|WW×KäbòžJÓA0ïWVÞ•h× T—ê—÷®uGbàã‡ge½”KåDÑ.RCEÇÁ nñ¾âÔ1—ep½`×ðkj3_‹rrr²=Ušºs ùò¥± Z›Ñl$#ú×/¥ÁÁ†`D……, _¾D¬v†®6IŠŠ>!ž¶ižNŠ–¤Xò>8?Z&mmm•–‘éè‰&L](ÿö‚— v±Ö² ¥¡¡A$º/yæ+ß_€üaõ¹vèNÜß·Áô©¿ÛQôÇÄÀÈ¥ñ½9S+VO©=XnóÏmü¢­Þ[\JjÄë[V–p­ý2ˆyÞÅÅ•5¼uu]l­^oÝâM…ºªª´ºzb1ßTI:;¿›¬c^^žL¹~K—{DXˆ*%?¿î¹WËdïMRÛ„d,‰íœÐË—Â A$Ä7VÚƒÖ67)ÕÔÔ¿ˆÆÏéŒÀÌûÎ×z{w[¡è Ç¢*¢NXÕ|NL¬­_ì§–È µø|{Åuã008(!.ž?ÎÑࣧ«›†œè¾?Cæèè˜çÄÊÊZRVµ:²Ñ?4ÅuÑøífö¥§§§<‰T§mnnî‘Û~2HȰ°¾«eæÃÃC§‹]5 —í¤þw£FžÓIX˜˜&W‡‹f{ccc_äP¿D¶0ò¼›wõ™·}ažÄ¤gò3™EEUÕD]ÿþž±[KMd“ÓÊ€U)ÜŽ9üW ΜÄ{íAÝ##Š.¼é ‡qµ_‘¨hkÓ &1')çJ†—Îé8ýp[¾_VS1%¦ÙËÛ{ý=ÉüL¿ˆ®.q›¹êgR1D–•ü²¦ÈìˆÐªRT”ÒÖ&XòÚcô9â’–•íNçcñ:߯5¶=š9ÔË_œÇ,^<²²HfœiÚZÙL2H %ñꛘt_ÜŸ­2ý“·93£9[mÿ"ZrÔªfÈÌdˆQJJJVA!Ʋ¡¤DŽ•-ua$‘—°²º”ñ‚«nÁA/SЗÀ4{ttTECƒÚÐÐðtκ<ÅUyDÞÈØX>“òöÊJ_?£ðŒú¬,[±õr«¯ü%‘fD»öAéV€ít…íôÍÔ¹¼n.Û¹WàP§™wR‡Íg ‘›ì=ë±BLÏq>@Fw\N÷«F~¦°AgœÞ´Q3J ´<¼·ên Ã' jÓH‰3ˆ&¦¦dÀ\™œnôWÚ/ šââO`aM'‹Ônв™ý|àïû³}ÚÀŸ188¸Ò¸õO7³ß¨‰Ó;Zx뚺ÿ%ÖÖÖ¥ê²66%>ç£R¸ƒ–eQ(„œa™™™ Î#ä䕾·n'ggÖì1½ÚÐJir÷kj‹Ó,]UéÖ7Y¬±Nñ± €€IÜׯ¯´ÚüZf9#$*Šú @¨¦ÂØtûWöt`õ*Þ×I+ÓÃ…Lº÷ïß³š`GF÷Bçû|°ê›Ÿ¶«kÍÏ4ž· ©È¼Î?ÎV™Gª'XŽçõ·\-ÍÓBÁíö2!ø9@#ï£j½&·„VßÛ€Lò›„Èðž 5)ÉÈD|||6~§Ú'BÙ&åŸd`äA7œw5™¯¡šÊ«µdRÀˆW¹»»ÏÕdÈo`èZ\Ô{¸™n‹“VSKððò|ú\;ª†öï«›ÜÝþž¿áàå?–ñ{ÓÆžYs*ëe6Nޤ‹tÝ›r0sÂ:ÉöÄ]‚8ˆqKj¸ô¯ÐÑN ²Yjž]cËÁ‘pÜéµQÙê©•MǘÐ*V«cÁg I"-Ð3šÿ6vQÒ=ˆD!ÿ•Ö‹„Åä²™ù•èøñiÎ[^lجê£÷âxLºÂ&&_;÷þ<Ü<¦9æNà<r°—ƈôu%¢ÆÁzy«&¦HÙ ÞÝÝ]P¼G‚ÖœÖN}ƒ¢y“f'GS#LECæB‚fÚ@¢¢ }ó†žfÒ dIsoÿc*`ÊÐÄå*sE(_Ò«—8Xë>¢ËíÔ 2§¥AZ”·öæ¤jo3¼€ôcrvÓàϺÜ)Ë0Dä¼ÿ«“”x‚, …¸€ÍeCƒ˜ià3>»êFà;šÊ®òë(fêÆ´Ñ8ÖlÓì…ß[:wá,¼ÈýrV~,asàâ*éèÓû^w± fØyA ««V-\ó6ÆnÁÜQoñUdxê.rAÍ8¿°·•2 ž}Óžø<•2,K—ð¤[ìý ¸žÆLEõ÷-+Ó¤]MÅÔy„?X˜˜²Ìñ ù}Dù³œŠ4¤Ó= F+X:¦‰µµ+>ƒñžQ©¬rNr{E|ÈS<>>"'ÇüV†žÑÉà¾{Êz§f¤¹O¼UgŸFi^Oȇ¿Ð{ï/Žå)þþ¹±Ó/Ôk)µ÷±ÔˆC'Ç*ÙËbd¨1Q¼9gMï&žCDôµŸºU‰‘ã]FÒ dÑ@¢í‹ëéw~¿7h#EÈ|‡Ú+ÉÓ/Â·Š·~+UE'¢Ô@¿ýháîqÓT£ì2·aC £:=—üâé–[¹“én«þ6ÿ÷ͳO©Oìkøzšñ–åu‰ãƒÜºêzŸ‰Ö%b}xÀ¯Wˆ›ø<¹jäEÙuìÜæ0œˆI-)~оBÝiÈ®IҚ礱òÍ­÷Oh¡ …"—°{#+ýä`5áÁõ­¤Nd³ìGy(BíotÚ%:Eoê§‹aŸ·VœÇjQÂ"ðs˜-gäIy´¿Èn‹êèq‡ß' »ƒàÝQ$¿¨Æ“C#çywTO…‡±RÜò‹£çy“wìU†øðïOfU^9{NµŸ…ß-©cã8˜ñ13~låõ©ã'Ý#å}fiº-T¡“{5 /’°.‚G-!ÃXÇZk<‡)ÀyoÀIǼâ­zˆt³4Óv'‹ ÉZeŒñÕý°Ý}¼sø&¾‰b5½ÞÝPA:Z gç»Û¹ã‹§¯eyp²trÐzüÒVJ~õ«êO¬nK÷-i"/+¡!{1`;¢Á‰mæ½›ÿ©«+Wþ¡B!ËéíÊê^˜)1%RfóPyN#§_Ãjx{+•ãÊaÅCº$ýÃð\û®ëµ pr§áVMG"uµzz%¤ýoÉ£\åKT íꨓ}ŸBüC_ïã¹8ÍMŒª˜ò}šŒ¾ ~ptÛ``ÎþûÇÇ]n¸ 3£_$,<ÛjJ/›_Ô ß–/÷kåLSb–+¤ô;ãR 9çQ¸kQYN¯=¼^À Ì]¾|½ ·5>ðËüAD0j_¹ùÆÊ@¿ÕÝͽGÁí©î¸>8æË(×é›@5»´·6neð„=¦œMòJŸñzü3f$1”½Õt …õ¢ãêèk›¯D ¦¨á‡&þ¤-©Ï­T˜nY+yiÏKbÄUMøwDoc®ôteÁ¾s¦ÂCS}wD}<ÔÁVïU47»ªD80«m3™Ô±ó˜X+¾ܭ¥íÓtÌ0¦Ï´¯Ô÷ô¸}ÊSðäªyOj‰¹ /^1»WXÙ§!øjyb½‰G¸ì›Ý‘ÖÚR±Y‚”·)¶ù1—v{¿úÚ‘b­62ƒû[ŸÀßÿy³gvmŒZð&XŠƒûRãôò3Å«vXÒ£÷Û…„ ë’Ä“)ß®/g«®ï³MÌCEQUíÓ1²Bfœ…呈7BMß+8Ê-Žüî<ÊóÁç0( Ãçã3eï:û§&võÇ©÷,¿[4? \º»Io%)Uy!Ÿwú–ßfI#,“4÷¦P„ý1àSLáòÑ`ðm~×F@IGW@Áú6ËÇ70±îôõt*86å´cÃæˆ¤>)Ó³ð¼lš¹½âÿÃs¤±‘»Ëj~Lá„3œŸ°>¸œ!ÚN]•›í•„ÓÇtøø’$¿µ9"Êoµ«‘~Û»œ (/äTyHÜV8êǬ½¬ãƽèçŒÑœ«°—gç \1u¬Ÿôð]ÓJ»¡‘¡cÞE÷UD©QVÑ,Ô*0š¸­üémP˜OÄbB8Fß¼NŒØ‘¾è›ܸ:„µßùèDGëû¿ Ò„QnÜ?_  £]F /Õ <îþÌ ª[ ±gõJ =ƒ·’” aCóÉ‹ó'\Š‚á}K1[¬äGˆâï˜ý?ìGþCš«‹Hªß\ûæ4‘s[ï7 "r’ïe/ÛGÆyË›O‘€FþûãÎyÝ\º´{# ­è8ì÷œíG´´'5IÊù¼|¯RuëÍ’¹ÐÜñÃäê;ìžÏÜ™ F…äam%é{=C@%¶±a€øÙ™4—+ä3ŽR8wª=n°ª’ a’R¹Š%A¦[qd•±GB÷ ËzÂâ3õ$@%ÿ²D–ö 3ûйØtò¸þÅÚß&uB{ŸçeþÙáîûöñŽ×«ÅÛWˆ _õ{æF©V¢#iÌ×QN—é5RWÇ•“›[áv =Þ¢WñßzaÅâI£ËýYD MÍ¿¦}ùBÐDÄFÔ4 Æb£«˜ŒLÄÎ5¶DûÿaÖE˧Oֺâ¢Ä•”ÐóäSáKÕ#+Œ{–š=óX„ÌV/®0Ä}Ë3­Eg<óÝP³Âè)$ëëW8º¤þ3dÈw¯“¦I&,£¹[/Y§ž ,7|ØnšL>6õGN]®êïzÉÄ„ A' ˜Û0 ¾að Â$ÇË-.Š7~¤ûÌì笂̛«7ˆúüy|áÛ|?¿Ö­*I`&-õ:…B÷é5Ê>oo[Ì6ºçí†P .U·>ø=6#“ êVVUQòñé@EµÿÍxæ¾²íêX»Ì쩪[îL_Åp—Nû3,ø¬&a Z•]Õv}qŸ¾|¡V¼ÒeGŸË.mcsó¤d2 ¿¦ŠŠÊ+5¯‹]JÉõšåƒÿæí1$œüî8æ.lÿw‡ûæéI˜qåMLîi'áŸÆQšÌo—sÇ5ßF>ðÈ¡¼åñ<ý ì! At¥ÿ£_$õÄÍà³gÏ*½¯ìª\---å©€ùg¨-øž¹ç&:8¤»ú„ÆáE@$à5Q–‘aÇ+1ë%Áã~úôiÞ&1Ÿ›4pÙªjjáåååDÜ@ZR)¤ÑŒ\¥i3&8¯ˆá•®@}ö{(^"7<448÷ÓÍAÓ‰e·kì¹<%êzæˆÚŸ_Wx­ãae3É”uos˜âÒ-ÿOË`G}Q6!äOÒßßo¶ÿéÓ—…£ÿdZÉ…„Ú”›÷ôæ ““-Ü|ÀYæM‡øü9Ûüôààó¥¥%•÷Ç;ù™ä US9m;â(¤¾” ªàÁ£–—3Ç%&†Ô-y=_ö9Cÿ;°KQ$s$¡sT>Þ+¿ó‰®>¾–ÍÌ;.ƒ¯ P¾È{£LÆô d8.+xCæô;°sÍ÷—óÑSÓ“z©Z•xúP êëijb®åçáÁíäì,?Œ"Ú‘¦bèÏáaÎA×Ýϳ'žÉú LÔÔN¥¡˜¦¦¦Ü>ׯA1}}øZqykHyŠCÂJÕÔTBÉh‚àhB.r>>B™,FpµöË1ÕÕÕn DÜÚÎmä²€š^IЬ’¡Ô÷u'µ ;ó ¾TÒc`b ijâ«ÖfLdÐz)()ƒÀÁïu¢ }Ìmû&+ ¼V¬Àå‹ZÛùœòý…,E ÕøMÅ/ìϪ̆Díì˜Àù°x_ÚÈeð7\ 싚 §…—”0 ù7ùÝÃ'žZ±˜ ‡ß?ñMÌÌŒ~&³xk ¹Zòf–‘•­0éÇ”Kç4ÒJ`±š )ÑmÀs@ÏÏÏ\lpDê{Ž‘““ÀÄô¶ ha"uò˜|}7mä!P踽üƒ®½[¤Ðê}èãq‹ñçjßé´ŠÞ­Ÿ’§G™öµ_Q…üT>`j¬¬ævô üò7âª÷®ˆOœÃC•þŠJV‹ç÷GÔ~_€ÿ‘)0LÝD-j«ó3|R¼vÙƒ3©—«íïjŬê€$¶=§é/é*}0;RÌ$>j½-‹Ïq²Ío­Gb8^!8ãªX]ýËr^z*ç;Ó¶`6=ú˜nñG‡‡í‡÷øòJ­œžÐùð bÍ?:Àk°§c6ÔWVqÌÔlE¸ £ÈW>q•1‚;½L\ßF®÷iFºÊpÅXÝÕ<«JŒOÅK;’‚{íç¥ ÜÅeDZЕd݃à0jdß*(‚|÷“P$¢ûïˆI¨ê9½Ì>,^j R)îNßòk¸/ËÉ7üô"²õ_\Ï“„á ÉYÛ%¿ß8U«w)À "yîêF³ñŠcÓUúvÐ3mY/f…›ôÕ£ v‹?>Ükê,¨ÏU좙©Ø&2’t•ò•6Kª$8T¤ƒÀØÞM äQ‹“çÄD㩇—¼’l¢rµióOAk‘»7ê7ÆÑõ5´„aÔ °´ý0q È^"zïûÕ]Wš4ΔÕ&*â?ÄüVñ¢Dmy»²ÿ:L—dKýeå'o<œOÌȰþ„iCÝÜw~d¬Ó"Ë·/Ø9°EZZ҈ɵ>•sW…ôgX=>ý£W|ˆc .ŧÏЂ_N·÷ͪ“â­Ÿ¤¼hýÊeÔëâêæ¡:ÒMJçxœ.[·^c®¥ ”¦ÎR\A¼K»¯ÅκK#Ƽÿº­‰Óê}ñ¤ÌD=wšøý‹[GþÆ‹+W7MñøxØuUás+óP‘‹{p‚‹üÇ+mXèc±Šì¯*qÀóœï~ág;i\háÄäœA3 šsɽNÏ8\g>í[RÂHªÍ‘ŒéÑÃÌ6œ„’œVÂôV8/‚¸mÖijï£3>µP’¢×¹77,•{h~fj•˜µ{Mß}#v뢺à‡þçq¯y^Z‰+ÇÊ¥Û}ò¨|ÞÚ»zK.—g+8­‰/PJ)¹o É€8ýÈψüFÑ™\ Doäwœ×Sj•ò,Ù,B*ŸÑÌ‘“ºšÔÜ-¥ØR‚4›”Ä7Kù’cX†ˆQ»kû¿ÂxÀ¾–sæì—$ÖÍj9ìFsŸŠ•ïb\í½CöâÇ~XÍ©[Ð â+Îd=é©äIóâZí:˜•ö¥½j˜®®„ã¯Êçéas1ÖËŠýj£Æõr6~¬–5¸ùˆÈw_$nxiGò¢…—DÎG€ /S‘7ê¥sùîP-¿»Jƈíýy:Éð>±6ÆlLNX‰ËáÏ×ü|¾R?1C¼ <8ßZfÕ]ÞkÅÄîÞ•çùwJ¦hpÞsd›ÓzÇ’[Ùè°+|'˜ ÖÄ*±5 ¯¨{xò˜™ x_f}ÿþ‹Ìt|$?p©Å›/ õ=4Ñ©ä¿|˜˜P5}¯TNƒ¬¼*ÿôˆ§$†‰ÎÎÃ¥;a.•v¹—BѨøc˜~OIm‹ IVðvŸÿü—*í|g'¬««+*mª§ãšx‰^ÓÔ¬¡ ¢Ï)(!xØžXÒØ‹½i>¾Ï™%Nn·•z¸^܈îóÁ¦²2Ô½©ÒNŠXþµï¼¼MR$žpðAÆ^c¼1%##ëëwÜw~‘m”îNήßyP·cز á}[›PëÃ5ÿåŒññÕUo2‹qqŽPZÑKo‹'!ÁÏñx«ÿš4q—j±=GªZ'NhU:mÊ ¿x 9j{lÝiéêÇÆÅ5êŽÀaº ±•ã"`rbmw ÷B!àU‚úê/>aKäüû§åùÃ'JÙï^Vã§ezMÓÒíííÅ¥¤R]é#Q9_RQÁj¶xq$2ê„„…!Â! OefgMïUxœ‰KJ’ÓÐ ŽçÉ©s$T÷¢ŠKHJššÅ”]ìš\VÅŸ¯µóñáotÝ3»á_[[ƒèÞ>iôÓù¯|Eñº«„ aâ<| yq©>˜CûºSà·¾‚Ý&»…Ÿ23™­§J0j´mµ„d2DK.ù^éÁ¼ì‹¬ TÙge½¯•MbJp\ïy£¯ŸabbÒd%%e·êp_%Ðátôô:%U••cûRÅ“_Jíw]e/¦„͆¾Pâààœó±µµneúëC-Àììì§ôtÆ¿}õûEF¿2”=:»tù[îJŸÚè̽ºÄ–GA>>0?ê•WýR¥ê² þ‘óéüž*ì*+ËôÿÞ @ý"Zr¶Íß?ËÆÓ³!,lÛ¥‘*©<222>0ðÉø)°Q¯˜˜†U€k˜tå¼Ká÷¬œ½ÉÓ¯Sõ÷…¼bf.ï_·¨·¡µßCŸœœBj\¥ ]•ºnð³fáùÎ ÙéH ¾ÖjçíØ¼…ˆ4û¦{eoïy´dP(©ß‹ÍÍÍíérƒ\§'Ož@t½ýüßNƒÇÈ~î 033÷)Ž¿zõ*yɾpxïv&çÛ aDX˜Å)7A£Ç ¹‘‘‘Ü`EEEßÈH FGí‰ó}sq;÷7‡m~Í7»ÅÑ y`²Dlm}|}a ÿ›bæÒ5€ªc'§—Ó^ÈÊêê! º© ­m¯÷Õò/¸¾ªh¹{!¡¡IÙÙ•Yò¼ººê>«5ÃùÅžpÃjšÉáB·çé+¿³Ôåw÷}}}?ž37p-yÀú?œeÊÏãàáu..k—âÊ&2À@TÕÕçt—q«x×þ$Ç>%%囲¾ÿýU]F:—v#›´ªÌȸ¸ð’¼9©3vÒÃm;mƒ´³ÊMÐkcêóü™DÀK:–DÀ”ŒYÐJ ¡óËŽZÇ?kÇŸï}iɹÞ‡`5 .–íÉÍÊ]æÐDˆå«º¹üéjSô^7}ú/ëƒá´_²9á9‹È©?Ç: 󠧈ƒÂgûb·CNîôtÿD?èSÍ:ïûdììì¤ååÎG¼IGmɳ |Lù¼|ØMNîî ;¿@œ±¨ä~|x†E¤*€ŒtCéåÕmä¼*”N<€]­Û~}ýAœœ>Ïugggµs§ˆó"àá)üÀªïˆ qÖãèÐJ®dt`RR’ØÀr•9ÒóçÄ*µ-Ò¥H8Gâ"ÊÏž˜e:»qs™ô}$Û^lª«êÜFœ'Ï*ÈÔöX'ñT|a-¶)Iª³3Ö1}ž‰ÜX# û eí¨:~Ý>3ÌfŒc˜0@8*Pv'áú´._Ií«»›æž•#ÿÅiÍS:¦ n®—N¼ ¦Mâô·ÎQrÌÆ5¸ûý*¢ªZ!*BÛø±òyÞtÄ“ÏéÅ®FìH‡ÑÜÔ˜+ûc$è*Ê5pî”×ç—i¿ÜÁÈÄ…8Çðç·ôïJšÜ‚µ6³³øcÒ‰A´+µ¤›¹”ŽòPŒ‰ßýzöÀ·Å®àë8éù>N> ¾½5é,«~Ò»•Æ|D$¿ÌŠ nÚ ,—û™¯DY´ØÌY?‘¶Ä¡ jÈp d!™ËX¹YçìÌ®n`RûÌÚ—^¿`ð¹}î°qÿd_ÛiiBM¾,¿65T'«ðvràlÆù×, ˜ëT×è3ø¨ÄéH g^è¼uRÖÿ²Á¾c¯˜=5c‚¦¨WŠ1ÙÝ û ªU8Ÿï<í.ýF-AWïU‰4÷©‘3<¼D#­´»9"õ`vµ>h8HâY¹Í²—x‘{ØO·½3 °Z›ŸÍcKD\c²<ˆ÷Eà–žn©â׬£ÝSòF2²{_¥ çëŠÆhØ“5ƒÏôŒ[X|Þ`7öxññˆZ ÌÚ*¹¨ŽïsFz£òò]¡¢<‹¹`Y. Aºëh|É>‹¢M˜CÌ&S“¡`¿Þpè&%´Gnhpp4Ãc9ÜM­vŒx¢Ä¸æ¦¯È›Æ4¿ûÙPÝĨo7qªí`¡£`OßNap(@Û°ýÎ^” üPhç•Fh㨬Œ»xΆ•‘<DGønæÜÅIÇU¹‹ÍD`q~5bÌV:¥I tNÒsT^»è+Z ¹ü²Df<VP~«ZDN¸>ë,ü›[;,Œˆ| ןÿ<ÓOéÚ=I-ÍõÀ­{î’è#ÏÃ,f\çkÛn­ÉãÃ]ÔÌwhæ¡¢L!@ð`¸ªH¶¿ý*&<’G,ŸŽ÷/@Qú_q%‡ó­‡x=uQ1¾q@ÛëŸ)½|ø"Œ Æ£.¶7 K^ ½˜ÅÛ[V–,³Š­¿yý}ë?hsú¥ðTÑðœôÆ(5X+Œ?2v?˜þ0»¹!ý]Z( Yߥ³%¹"cÆáTç8Õ3l²Ú<Œúž`%@œÜ‰ÖûáKèóÛ“¾­ûÕáÇ6“ˆœ‘²pOñ » Tß üÇß%Ñe}cì?…×aÿ_kê#âptšÔp×p‡ZÑ^AºÀ<¥­}^ä\}‡ß©*Ûì!ê Æ–¿—h× 1·Ý±ê{n⤠ú &1×yЮÚûß²²²~7!ùúíÛ*H×ëÛåÇ¥¢ä~·æàg{ ð|n¤©ÑŽ»™ÇægW]5ÕÖ#ûóCÄ r[ìêÓÞæ+±²b ^?Ü9ÎÛÖ¥0¡°7Ë9ø6´ùiÖXá@·àŒ7W¹äù‡°äƒé:{Ÿ?›I/^¿›‚v½'ZLAa¥W®v½KV|ÃI•ä'ÖûA|µéCÝ•w—êôÃc-‘Hï•õ´Õ†/,“GË „"ç'1‡3…bZT]¼yóFþÐýdM¢««+9ÑØØ8.3sù?N¦ðŠ9Èap‘ ÞM%M-º¬bI©¡æ¶†å ˜RWÈ»Ëà¥|ER"§.›¦¨¨(ªA´ÿUÅ–F¤Ø@i¼ À>9wëËTfˆgÿ'JH™|'2äýû÷×ÇhÙ£ß]vTÆì2ޱ¯Í.(@äs?ìz«(0iò'žJ¾£D«êcjjä‚îÏ ÂxjE;×…¿Å)Nœx×{[ÝXð;ÏP¿Õ‡'Ãûº=ëjÑ=Ó2Ór}2¢Ëoýþýu ¯kÑÆÖÖàkñRõȰ¾zJ^^íZ»Eº§OŸB·W…ÇÆrØ[ éìfM­."‰ONLT¬fË73BÏ|˜‹ÒFžž:ÁÁÁ —OwŽWž^”G\_{ì/µfggC€7º9ßé°b§Ïý†O¤óåÛhb iê|¢9n½ H ½eÛàöÙìzv1Ë-^0oÞŠ­’ŽÞÙDÁÀÀ@ hh±À»‚ ÓÔLžõÖ××—÷#ÓùÒ^ñM‹ 4ýÏè”m?üðn%°½tüÚ´G”¤Ÿ""k†ì¦‹³6AÆ`aLJHxcffÛÝÓ3'Ÿ Ý9ª^ÌQª('÷ðB•íÕÁ¼¹ö¿O@"9ß÷K’ûÿhµô;:ˆÿ˜|«íqÓÔ.ôsÜÎT!ƒÿ9.Ã6ó))á,Æ=+Ó\¥ÀÔrµÔ²ËV±sråÖ¸*Ñóðñ‘‘ï"â2éZLºYÕh+d ¬X”ÍÞ'9Wî\Í2þ3VÓÿ²»ÆÚG±¶·Go>œ†7Y¬!ëàð]\Rr H­ØÈV—m%–ȧ¿SíeÑ^__÷ q-3]À1iüœP焃p:…/Ë&vǧ{ ÈF8 cyQA¡WÝ$á`K´×ÚΣ“’ÆÚ-6^ìNBêë¹!Ó‡ãmÿu?å‹z¯1;¢ŒâôKî˜3¥Ð2äù1Uª]§k¾^‹Lò„¼ QÒÔ ›™Ñ„üX~¸ä211y7’!ݪYaÜ{|ÕöØ2y‘”^ø^Ä\Ü?ß’jþ¤ò †+b#ìesrèÆr¨èbÝAúž“öSOOϰ¨(›ó´€$œ›ËƒH@˜°ðÈô¸ õŽ¥$ß“«à¼ÜHbðáø¨ÙÉç¡20F$€Ù?é))ŽdáüïI.9TdxXU:µø½ÝL·–æf%mm$û#ëgÑêÅÓezÙ“V:8Š®$ÝZÚâK¸¿Šœ œ×€ÙÝ}ñÙºŠSŸW3¼Y`“ÑþèÝ4VP"T3qqMW§ÅÇ«Oaí’aÁ*ì-pB•^èè:^kX«Nô‘þP¨ò² ¯õÕØßÿþ·ù-N<ð+ŸBÉW"ö§â|oIt$sO ,'Wbø@/>°%7•H'е«äãí±–÷fÑñºåÉÄçÉ­–‹^ v¢É^{{ûæ?¿SiÄ ÉNbý€bªhŸû1f›"|VgHHÌçö’Ž ¤L¥¶…Bç¾Ö:ñÙ9°í2èˆÌßW‰í idIJøÃùss0Éx¶Òô»:d%”Ôït·„ñ¹JˆˆÀTVUL·=àŒÞ–X¶I‘úbªëêŽdn ‚¸–OóÉ&œ°‚ Þ¶b"’Vºh'Àih;×™rºæåÐôõõ½.­2Õ¶Ðɳ¡ê]ù<$>A&qÏ ÝïðB ¸ìó¿§½¶‚´ôëù¥9Ël”ª3h)#¨Ÿñxw[ÿIË¶Ž•q1qvÌ6¥í¼ôb;7–œ’òéíåA'У¾b¦J{P)µ+¡h©ìª…¶LÂuÙmó\j1¤ß29=¨'p´45”£2’ãgn>N+ó¯ |/ÔäRXŸ>{öl{¾Ž¹'†8Òû¨e#¾†ûe\XììŸ;ž õ)à BF{9˜¿RîãÚ¾\¯ó3+b(±ÐªŒ¯kÑìí+å•M…žÕ¤å¥hCí¬+ÒRûaA1 ”vêšùÔ>å¾D4©Á„N;6vB á™÷Úݡӆ¿Áê¾Qy9.‰ Ýqì6p1éë ðwU–›Ç ê•"CUnE6§NòK‹Y:/—{©‰9§íEÄÅÝØESݘ&ß42]C? cù§EÌgF^0þç¡ÆgƱýómçøÈÐì*zCÚeœ&ƬòØc0Ì¢ûᅧ¿’PþîyföŠŠ*G§ÎNúÍ› nœªÿâÚ \¨(nö<“3šš-U7LdÌs*«RíùnØùݨ "üæÍ3U:œ Ïßø€öw¯écÿn qåŽæx°í\²#ˆlµÛ´T³âI¦ÿOëý¥Î×ü|ã±oy®ùF~5Ó»´ûËm¤Þ—ûíÙb¡Ç¡Bw0PAcžékF q¼üø€´`=`Q‚IÓÂ(å\ÉUO!û‹Mx3 ÎÔ•íÑÜ‚ÂÂv=÷ÅIøLIêWâââÀ¢|I§¤¢ê©f¢ è¬fbbR@BB’äsÛÿÀ³°¨ÓÀÀ€Çaˆu¹4ne¨2ªâÕ¦[‡nºØÚ¢æMWø=”J‰Ëˆ Ô-#c¨­ÁåÜ}ÿãWääi•)aaá‘‘l- rrÕÜ8Îúú$?//NOëê¸Høßn øcÑÜØ¾[óßžƒ2ŸûÅg\¥€ÍÛ¡ÂcàYAhê÷Êš^›ô¡G¾eaÖ®Fî½F¨Èv?ZòØLЀ@222^ùñƒY<âXúއ [$ï®W!óvM(¼é1-ð¨=[€ïîÅ£žHL>d|ñøgñ00Üà¢NÖÓÇ‹ êÓ…wvJ½Ÿ$$¹€D5ëίF|³"e"mBà.Ÿ¸3ã 6;ŽÎfÏ”p7´;^¦†;=èF9G •׿Þç=Û¼¬²‡øú¾CI^1{V¥pè;¾K¢æÛæÿøK¡ ¡÷Û< Û¤-±¨á˜^ª"˜÷zÞ¨s2÷R4m§ôˆÏž‰((Ä`QäìAÉz’ ”üçßVqU5÷?ç^xzC|𼫛³# …ØÖ¡WÁ" júà>©a\*“ø£µÍàGâiò±„½÷Ù£’í{wézÜZ/òxxE41½h !?§ÙÙìêç‰fjw»ÅåÐË¯ÆÆT ?æj¬1ððB‹Š¬Ñ¬ý´Vor¿ˆ‰‰yjµK@}lÁ³§¡ìˆ1W!WQ=¡Öol|¼`4ýNzI{e‹€_uo»%Be¹-ê=,Âß­+Œu O~4× üsýaŒ¿ÛÑô"-ÈhŸÂ÷ÆÅÄÔ4»¤èaÀì'¿ÄÐ Ê»O&ªg‚o‚nii z-—÷ÈààóÉÉIðÌ­×äú«Ou]ž-6¹sÙvnüpuüù÷-œÙØôë`ì[.p[oí~f -ÏfJ€FU¹Xó‹Ú¨»ÑîDa2‡5îT™^¤}ëøTN['·z“§Ð·;øøâ}Tl¤’ÚÆ]ÃK†¡¢z§Mݧ§Ïñ˜>h—öð5Û”r¨ÿrº›ü½zÑ8Þï„Í-늇l¬ÿXôæžh¯—¤§&wrÔä»á.bÚK'F °Žg¤¥{ºÛš·%¯8¯»¼ ;iÿy3[ÁoJ™Ölo0g upÀ³ ,þû4FÊz§œÙÕß/f97гÑ*YA”½ìt/߀U )UKûV³Ç>$~mâV¶ÿÝ3a^ËgßèP (ò8´PèU&A+ö]1Ïz®Ê Äõ¢GiY°Í-Ë»1{3`¡Aà$ø„‰ªgJ\É…Ç÷í! éo9usàBºŠ«Ï0 Æ( ´ai]‚‡mÉíÇük÷ä,8ü§…ƒÿ´¦ÀWغKÏŠQƒû÷7îûe›IÏlߤwzV;ÜמðÓ*tRúÚÊÈøŽñ„å†ï¼2#+kh Gæôÿž$ìò›gRSIŽŸÌ €àR|ú^Y•6sÚºwÃÞ»ZŸ£ámTŽÈY¹Ñ(ú«+@PjmÕÐÀzvzŠŽÿ¬EMQQqÜïääd¦Å›KTL íàœïŒÇ%$WV²BóõšÜºÅÐ>PÊ&ΨrAåèÜL©3…’Ú×Þ¬IF;4µhôá®&ÊW¯Øÿ´–>RÇš‚xxx$·d&%…~ÿþš&≄òk£.ÄÍMqtlìÔ™>˜Ô i?Þ* ˜:ïÿ §¦° ÿÍ…üöÉóe³:è‘ Jà:ϬŠ÷Äñ`sÙáœmÉŸ?8rU8îÕˆIHbÒÒˆÂÅáþ½‰@xCñþ°éˆ³ ÛÐ5óHD|"Ä÷Gggç¹ÁûÃÎÚÑÒ'Éa†›3‰/÷èÎIm]f_Ÿtê¼­¼%±Œ¢5ñ1Ìÿºùð@å÷¹.ëú"ZR.§Êl¨Õ 0ÐïÆóäÍn“¸ü¯ž÷¡Ç-–´‘@—o. ë*ºì{E¬^¢iXq»dþ9³XÄ1—rV[W@+zÑj ü~äkùቾÈ!çt1ÍocÔÝéÇÿ,à‹&¬8ô½8øÀªÇò|gWÏÎ˃‡^#¯òö-0ž'{ôe]mÌÍ·ÒŠŠ¡@î´ÞÊþLfDñáÖwÓA\hSþ;;Mt±eñb# D}·!¥‚îÈÇs ¹9(¯ÍA6öó†…òÝ[r%·2øÞ÷9:´§ð-!5.´§±GŠcý·“¶ŠÑtSDÚ£ZËß àÿJÔÝCQj ‡Àõx)–ã óžÁMµ™')d¾€9 ‹‹GÑ< E´µ$ÆÞœ+Íéá=ëÊzC÷TÏxÎîx èÛTb.³ŸÉœ‘ßÈ.¡šS fŽ·ršGwwì%ˆ„jUcdá'ÄÅ%l` Ý×t×)@L²•Ìb¬{9FŦ݀ïÚ“ý{V8_Nú|N}òýòÒ8=k% ¾°M0fŃô¼•}Ô½c"ÿL ñKp˜zе PXX°¤¤¤ÈDÜèÖÓe®nšC•zͶóœã77ónìeNwu7ë«®÷¯,I¯/¿_Q?‰òdF}¼uCnD;nï)3ê¼–óIÿ(F¹éÞµL ¨osç¼6?_?Õö @¤Ü+0áw«Á¶Ä ñ¢¢¢»j¡ŸX{Ë!`Ä£·I"}E/vìõDKó†÷U‚r »ÌõÞ…¿œ- vˆ—b¢ü z~SW9Yûbpð?0r#_w3?ÒÁ7)ìóx%-/Ïáýˆæ ‹J*eßv?Åt1£Óé=qPSÚÂSdgNÜÆq h`+ÜÓ›wâHb„ TßÊh9{Ã}7)çÌQ~ ^Sñ Z'O¨³úý3e|ûÀF²¼a“õ4Ó+jêÎùyB€¤fIP=‚BˆŽ…ð¡D¿…91qq¸À   «IºñÚļŽ}…ûBÔâ*ÊÄÆÜÔbèe22P ³¶¾^ầù±?[uÒ…¥˜<ðË‚ºù º‘z±¼ÖG‡×ÏZHJЍ­ÅãºÞðøüµÜ‚& òûµ¼,kƒAw:ñ…Ýe£_J—£Ç/J[à²i8í—¢ººÄ]ö¦Phii°³¬D•Íœž©0f±_â›RSS£T<9Si*;ƒˆ—^ªS§°ïé¬|ܧOŸpëžÿŸ÷ôCR„ü[-Ø <¯ÝŸüLçÓ`'ˆ.ÑmP ”›gÒkTˆÚÓÓóS\ ˆÄÏŸ±ßòPHÅ|ž˜P-,)±©©"-U·®m-œš$ÅÀ ;j>‹^€@êóˆrrè6úg¨¨¸-úÌääÖS%q÷·‘£6nm!®:ÎwS~11Ü~Ö Ò·Åͪô_:´S/ÊV'ìIQÖ¿s2AX4C÷çñ¹É… ã“Ë&2ü=u +«¢óÝÉÁ xN»šÕÕÕ<Î1›{u>Œ¸Éýt¢‚I+à>m›â©#$s¡—ëß^Ù»Œ113ãa`¤+Loœº:::ª()½Ó^ª0\š2Ðß×÷½q8D¼ˆSgybï÷îÑlU~óÅ”ŽŠž£d®2=½„ø×²2@H›ÀW­ v?t¸©æ\¹áâQ[Mf.EÌ2Á¥?£¥Ñż”õ§ ÿd­óúy|õÕÔÔ -PT€qáXÔÎ#æz÷ê¶â&°Þ™i ÓÝfëì r¯Ðˆ¸_³[& £Áí 1ÓWdBN¹<…t«“Áüo¦ÌÌå’VúúúFìO¶]——Ò¥$7½!êU3+S•aµH‚ø˜é)l,ŽáÜ£Ü)ØÄ¬1¢¢ØáQë¬}](”aõQ=RäL†ç4¿³=G1.,3zw Âr²öŸ Í]<8”( Œ½3æ:½O[¦çZ|x„ûáÆqoªEe6oâOÉͧêãP*Ww@¤H›5hè7º¼áµ›*Ñ‚.t77óûôóçÏÏ—. UŽœS~¾åƲÕ¤= ¨V>KÓÖÛi€7ǶÀ_*ªNiI‰MööJé~÷^SE…|nf& ¨¤±r¿ Ž÷Ùþ>‹Ï‰‰2½(„œÈÀÕ]Ï/?„€ºžýåàól9¯ºòEÓCȆ.mwÃ6Ãvѹ7ߪD¢*’¨Œ R™^SˆV•YûôtݰŠ^ùh®TnA¢¡¡áñÕÕt›SË8"9¹@M—Ð3kR¤¾¯ëëæ¦¦Ö²D‚º€ë“T7ë!6ÚN—077wȸv}²ÞÝ„™3SÝæQ£]Êí~¨«üM%¼¶¶ví3íÛ.0rÞXk™ôQG#«¡Ý~÷7ás5XP˜?é Ǫt†‡‡PWWWù“OÀ;6öeá!D°NüöbTEÁ½•ûqï`p-NÑ.²ñKf×Äot———F™‚¾]£8 ·ÞÝ^Aï¥, PÕØ»aó‘Ñ™‹/<Îy3­¾Þ;'©‚Ü#0øDI6œŠB÷ØW‡‹b>>Íb,bwÃÀÓÌØ,<”¡ßS»´ëœ¥¿3›­$>êÉà{Ïö £åÉÀà ´5lýØF~‚Nu,zÙÁ@÷¢¿Õ»ñÅ'ÆSWïÏ>Ö²ˆ‘Ce–rÊieMiÿl•ù_ ôððð‚ÅèCE§å‰¹ÆËQ¡§ÝZ8ÇwÍx‚üÛvß»„33ÿ€ š˜Ô…® æ²nšZëÄ×-û÷ æNþš S¢ËÊxöœ»¶óë˜ïo ý$z¦ŽÙF þQÿ N÷$ÍP©h§ÌçûÛ¶/çN‡ê+Ê’&S§íh¡»;ÍCQ¶auWѨÞN`ßÏ@ÿ W­¡õ£cîçÌjur`à“ ÌxXÌpð¬Éò’›Õ·7”ð/Wúâ(œÅ'šGLÕ5‘+«ªÂA j^WOOY[[{«èKÈ Xr+–¥¥¥ÔlµÊ‚ Ñ«±‡úå“Ob– ¬llÑÄ¢A€¿î<»z{—š=ÏÎ`!â«@‡q;ÿFf'@¹»»{íÿàÓÕÕõn¹ÕÚd ½æ09‘ðë·o"èpü>׿²Xœ0_‘³Öt2•F¬ Lú͈"èÐE¼ääÍgÃ|É\öúƒ½3k€k–ìHi?t¬õÿä§äIè»×°¤úUœÓ:‰ãÊK|wÏb>L]%éPfÒ;¥¯6Ý(ˆ‘‚¨Œ° @÷9–³ ÝaK:..7'É´ÿ¥ƒ£cûG21¨½ÉÖ(ׇ^ÁhcÃpzzúÝaUtfvÖøDDÄKúÇ——!¹¹¹"Ëê+É@cÅù>°<ð½T«•·´Ž¡•xI³›²•TðÚCë_àÑ… nàFÃ\&yK)6GuéTÂŒä·äÛE›é Hl0î1"”^ Çð“­»€ÁÛOQ¯&¬ú‘VTþÛ0¢²²N7¨>¸AÄ`­Åu¤":q“ &¿~ eèî³¾¾¢A×>é)þ+éUÚà'õé]u¸Û›{>&WŸ8 K»Yô¢ÃÎãc•´:v v6ßý}® ïItsaAñ™Àìw¬EôÉPhó#nSŸ6¨ ×£3­Øç[œ>ªB 8øãÍØ"eµ½8‘ß‚;“W'½âîZ<{e¸¯«6–]&NFCÀpò«9BÇ.· ze¼ŸC„zÝzÂç¸ó²€íõOƒÈäŸ~Ç?ŽOÿÜ®‚Z¢rQ¢ÂM1f=¨As¯‡ÿ>þÏÕnùõÿüõe2âŽòëOõ¡Ïb93k•óû³º½˜aùoŽTƒ·=öí9ðy0À—Ò·Vþòç9OcǼ;‡ÛÿÿßfA2&L_ :(+ʈˆˆ¯]ˆz©¶i—ŶÚßyè¢a€«Þ³ šÿ½»‹Q*TuT/(-*BÊÎÎvps“ÌWHGGG‡”ª?‡H+(@WÞ™š>åââzEIYóN¶ S\;šèt¸‰‡½[çƒr ròãõX!#@8P)~vÖ¹Ò5PÔÔÔBBŒî®O [} o4Úü—iÈÆ¡ùRð‹‹àX'gY*…Ho,©Ô»w/UTTVö÷£$"qÛ——Ie¾aX°Xn½´GNaTIîÕmbb’*&ð廾¸¾¾¾šèf¶2ý–ˆ¥oèýLê}ok+:)± ›ˆ¶qÖWV€¬ËATÆÎµp8Y“@ XXеYjÆ×ÒÒ‚:À¦QÄL)Ð âå/  {O [Íüîy—ü}KtêP!¯mçØ˜%£¦Fàáá¡adäpª6‰€îy'äþSÄÓ“ºUCÀûR¸xÒh¦",:Z"•Øa£ÀÝýí•”‹ {©ÝçË;FÿäˆO Ì\ÔÈé"¬£ˆák ÿ&ÍÏ”ÖÓ»þC%žÿ9Á¤ÿ¹ÇJ?´™ÆÊ‚ôæ€÷ >²U'·9ôñö€ý_}}#N7Çßlÿ ¿õ+á <Lö_ ÿ7¯ú¯28åEpp€ñÐßs ¤‰È©‚þáx{ÆÀïÔ€0íüà^½zõ‚9‡Š­s ~´XƒÙ8Ô¨º(^ž{ÉÃxx؃\ðæS|<‹aÇ Nh…œžlA¢gÒ3ÛöåOÛMRs òGIüSûÄö¡˜í“ÁKF¬ä÷ÀH5C¯¼ äÂÚ! Š_T?B¹Ýµâ Û%A S}ä  ù™?)~µ :të²­§Ë€9 ­.ÿ/ª'8In^Þ ü ß=«olÌ©®Æ¶ª!€€Dw€Þ¼«·zöVñ§EÝs‘ÿp |t/Ån˜–QVÖ…H¡Ì*Æ<9| ÇF‚!NŸÃçùúõUš?ÉÉÉ  ÀÉtAÊóŒj8УÐÏL!R–™:{RÀÏÐÕ”Ñ_QQuôôÀƒ<õ‚F*è“ •g‘ÀL¹Ö|¯®H-Ñ>rQŽN KÖ‚4îÎ… ß/ÍO Å´í¼û® '",) Ÿ–ž®¬¦öTVV–¿…±©¡aK€!€õÞXŠ×¯Ñq†Öÿñq@K‹@ss³É#)R`^KM4ïæ>3ØÒðªçR`B&Twü)j\9}FÞçæR@~ttˆÖ €Ò€Þ.Éö-]ºF:¯kÇÏ6(Oµ=.­°@!2^YE%hÒ5à hhhÀ‹}||ŽLŸšÉž¯>Éx=d﫨¨HœÝíùž†„ñýþLH™”¬^ùy%¡ÅQæ{2¦¶N4ÑxuTÄ'âzo;¹kø‰ìç:,¤f.” ^‘ç®ú£¢¢^6ý~òXÍéé(ÿ» ^:ÔuŠ ÊŠõ°ˆHHMM|ÀÈÚÚFW™M©}¯­íIµoµÜGß«±_nݪuÝ>þº]ÎdæKãõ=nGàö8~™Ö”}™ÊÚËÅûn-¦þv„<-rX´?HFX¼%¯„WçGe“½Øcd#Zê!îö%Â4onUqBûúÙÅEwàÓçèøøáÿì¶z÷#f¦Úë_êºùP¯Ýö5wf¶OMÕκ²Aãë°ò˜{Is¿×ÖÁÄ@¯·qqzgoopÔšÂfÞÚ%½«¡«»`´eWpŸ§ Ùußÿåý•øð¡ Ñ|Ú,ûÕÕ›OÚo!?–&‘Úôf sPûÚ”#€r¨÷­GŸ¾Üè8‰Žñ0.ˉ‡6–ߥø‚Õ±Z›º#¢¯Oº«§‡œ™ º¶ü”ÓvîPìÈļØnnnÿHŠÁΫÆ`yo&9"Éfæ; °Õ`àäœ632ZøÊØ'uËÐ]pÐF³ÙÏä÷ãùŠ{®¥÷úÓã¯V;ƒ_ÔÖS—ìÿ$K~&tÄ¥‘©B7?¹ß–6 »t»p¢o#Æ‹¡½yq±ÿ£}.3A†º¢ˆ€F"œ;º²WÞ& ÈÚ‡Lb–5Ɔ^•d0Б0ËÃÅHą̀á!Ð,ÆØÙÙÙž­Úrž/-)ùUªÃµsVi:­à:7ïM—'%´9®ÃC7KïŒçƒE ]C=•"5Ü›*Uiˆèº·qtt´Þu—Ó~‰áz Pö£uöË’{V5•þ#Kw»cJ÷`T½X+l^__¿deÅ„_ÎÛ¯ŸïŒ?nï…‚DÆ›i÷`·!Û«£$øzŽ¿­ãƒågêÃ…† ím‹ƒ6÷Ã`=÷¯$ïÏÕ<'õ¿cn¿ÿñCØf¶ò›Ör1Þ·×x¿–‹Ÿ?\0÷PÇX˜[ç@*$Kn9$Wû××íÍ¿³ æA/HKW@±¸c./( lžë¼5¼=š‹@"äÇ0/”M‚ÌÝ¡{,äúÏ‘BÕµ«¶G™¯NoÞ¼¹ÞˆW„†”t‘áîÏÙØÈl/¯Ž¢QÞeï#Ù6ë)ö¹˜]<8ÞtTNNNh"@W¦ ?˜ýNž'§¦®V„2:ßs->ªÏ›Zþ¼7£yK̲²òŽ›‡§X¬öv€éÍÐÍ,‘¸Œ„öÍ0ÞÞÞw»m§x-Æ¥÷-¬ØgnH×nöÇűÞ?Šªðu÷ïòbŒQÃú^Õ×׿¸o¨!°[jwÝ›2\ltU¢KøeUƒøü¹ •t”©)E¿÷©©©Óþ.,,l‘Oøõ6_6WñPì=F2· ‹Š>¡R̈‚…²º éi aH<µ¢h©ú:t£.>¾½5~ÂÐó9;;û¦q@]~°¹¹Ù?°±±‘eÐæWi[#ĵémj;…„|þÖ0+³¨{÷µô‚¢WÈø¬pÀ~JxxÔ— ¬ÞµI©©á| Ö«Ldì,Ѫz ðUUM ºGe¨¨LŸf•Y´Ë:#£„Ÿ_«ªûAjVöîDÝCN9ô^ˆ= ÎŽ§o Zu¿¨»w…a@Wö¼.vŸ7êr0§Æk.Æ{2öMÏÄÔôÍø™©i68n%+]Raa¡ÇAÍôW[(¯^m#$r h—ûî¸m„RhÄÊf\LÎf*ÿ¨ Ǿ¾®×EàЗûß?/ ‹Œì|¸¿…nJ(\“þÎÌ,@ÅN†ºúÔÆ t{ £N-PÜÒŠŠÐMS'±þw¹Ã•!Eo—o4JµƒZoQ%$$ ûù<=\¬Ë[B¾|!ÖäO¥3§ ÑñFÞ\Úe[X…9//Ã}¢@¢‚£SÒ³vÀAwØo §‹)+c0é5~(((H")Άn¤Z³³ü+ü ;¡W‚$&&B-6‹õ´^ _pÚ$«B•š­><çùBí££b¡¨ -Ì@i»-Cb¼9Uép®×y þöæøÜ™ÜÂûã©)hiŸEâ1'Ƽ¥Á~!èÃ=00ðÚçÚa–‡×LL2»å§óZÑ·säy éH5ÚÑ<οßq´=ž0ßÔ´'š0Tènm¦Þ‘š‹ n/_½/·6E*¢w©¿¾Bà®#“­m)(Þe±´­¯}‚Áñ|Zýu†í|íêjg(" ´¡‘ŸO  ò¹½ý¯¢a.-Âs‡[i2+:ñ;Váàé<|ä8‹Mî½€~•YÔh3èÖ£Coê'´¿YªtßzáA™Ï×ÚvÞ\ì9- €WíŒ}ƒn*WÙÛÑÙ Ý ÜÑz'šPW£ëÔ”%º?ÃP†LP*7ž=kJå…ÞËP¯ ÷¨å*Cß–mC\ü< ä º+ ç¯÷«F¢ˆR?gÜ!^ùÓHNÅv{|Ö£p°òÐ[vVÎô½òÑÓöƒN@ïÚéæ ãæN¯+äµq2ô¶(«««*)ÐÐlbº«ÚöÌÊzié/FÏñäÇkè;tí êt,,h $ô+ô>.WGËÓÅéP‘Þ}J@³ÒäMË- §¨zÖ.à¹ìVªF;ë×_;¬‡ŽSÝŸOŠmIœ_VýŠQB±y4¹€¶QP‰>ö¼—’2^ë ¯Üx rº•Ž¿P•îîþÈ?IÐÿÏfÒ˜Lôð0´ÐQå|[×(×GÕ Q„g™š˜ø15…ëçç'¿K»jü”Ü WP=kj`|«iФKvYòeu°ÍP¡¨¥¥O‚jÐÜ´wI™äc z¦o§p¡*ÐùÒ_bEŠ';––H´KÕé¬àβÚþÑ™’’rûW6¬¸ò‡„„IgXy@Ç o³”h”´´h‡Ò’?} ¬±ž^ûñö¿ÇëD&½"w•~˜pqñ‰ßŸï;aÙŽP™ì|¼{I³Úˆ‰æÚŠVçœó¤ýÚÛa& æçåu´·‹¨ç¹-Õ»ì|²™Sž‘A0‡F[‚@·ÙCÙ«´ê²r¤¡¡a¦Ù“­²²re}=ˆömÞ61=)=:†rªñzfŒÜI`Ê7Ã-W‹¾þx¨^„ÞÙ‚NDt·J­PA_^N»…0‘ øU±É|îeÕm­ ÖŠ\÷Õ–ã踸!ʹ’ÀK]ÒYCïÏ"n“ã;$+ yÉÎŽMBBò‚×…&•8bÚÀÿ¾¡‚ÚT”–Fœ°âÀeÐ ˜™Ñ´|üD)»ô'™XÈJiÝ’h¹~ËWö BÂÈÍÁ$±RuãÛË€ã|ê1äáÿÝÏ`ecgeåúOŸÿÀyÍÂÁþþÏÿ¯>ÿái-Sø<‚[O5ù?þƒ»æÛ­y„ãïî3|pO°?“>ï‚©¿²*Õ¶^,¶ª™Ô®qÓ´Þ+ƒugœÊ)5ZÌÊY{¢úH¬ø×rˆ0¬ËB1¿{#uÞÇÿ¸rö¼é$ÛB%OóqºÊÍV¢¡ù÷‰S©fŸþû—hÏþý39æ¿õ‘$R÷¡ƒvâ"°sõ£ž„—%EñTqzà0·ùï‰mÁ¬¨±³³óóóÛØØô1}]—QT$}ýî Û>&8$ë^ úFÍÃà•ðÈ/„Ýpˆ§ÿ÷3Á€'s0üï&ýïŸhþ÷³†›}¯Ql_?ñ„â~ó™³ â³38Ö&QqèxéÌ&³” “Çíû =…TÌB½£±¼<Šãc:Ÿ;`µR:ð‡JÏÿQx.pšô»ùHµÀ–œ€—ÝÜÜâ¥)õùŽW‡‹ë½±™¯ ; ŸŽatü2-öÀõɺ¬ŒŒ¾$Xô´t2«)R|ue¥v½ƒ¡Š f°èêÙ0"///:556æŒç`ªpgÍÃ?...%%¥ 0N³çÙl•yªß6°hËþ÷µ¶ó€\nö˜×†ûïˬSks´ÔÒ%ÐO0` Îævv‡áXÔaA#i<Æööc°4ØS¥:(âüO"»OÏÏ¿*ѹp4_W^¤6ù3r gœ÷a`z!KËP½ì9Aôïííúwíy¤ÚÕé î®®zµ6³€TÃøÀœdççã1`#…{—´µºì¨DK探õº¿¹0Ë÷ع¼¼¯ëKa3¿´6KŸÁ¡ÔÔ\<iþõ¿IYçvŸ3Ó€}bzг«ËF¯ê÷°Í»Ž ù·~ÿ6³¶–ÍVš±¹úC~ÿŽÕaåÇÌÌ §7¯•òäíl½c.8Øÿ†#sñÒ&>~¾¶U͹y’ª:óÂ^úøµ°^¿ElËÁãð†ÓÓ³¥S[îêúDe—øòÏŸ¿FG&&^ò6®^ä+ÈË·8¬vhøR&ÈtvvÂÂÂêhµÂN–@Á[•èoY%P$ X[‰spä|ùÒ¸»kîÙ{–¼®•$5¾’›-2¶Ö$Ñ¥rQ¨ K7ù£½ýgׯ¬íÛ·Ð_ÀBß¶+@D|ÚÓ’roZ£¹uŸÍÌf¹Õw®ÚÌ«ïÍùŸóqÅð[©h‚‹UƒÐ«¼/jÐ Œè%ÿ«ÿõrõLÂÔ4°’UD>:Ìb» °pëLœçiFR¶•ýM¸—×0 yyà þïðàg33è÷›Þ¡›}…çω‰Kqi5ÅÄŒ;CPʵ,`KQžC1{¹Š}‚ªbA_‹ŠÊËš›kµUÕ(_=ÔUVBhü²€19ÉÁyÏ «ÇÆ&¾œ¡ß­­±¨Æ‡Ò® róH½Ô" õXýò/~—¿J¢/*Ú-*ú09™STÔ8 chúí{QÑ¡ç“Ó} òŠÓ·..Õ?‡P¢ÀCÔ dkƒåÇ`bù@4 ;Ü:#lìóªÜ܆  ð=>>8(?Úìpå]^qä9ˆnA1òËñÜ¿¾-x‡œœÚÙèÝ]^r$K/þ+`ÌlììL Mlm×íÌMMEÅɺHeeé&Jòa**¸Ù«¥Q’tî·•aRõ$ä2Gýú^ÁâèÂN=†E0”&YõÒûùsŠÊbx ˜iôo"!çÛÚÛËäëÌÍ©ØÚʧ§3‚/[›—Æà÷ï™fêK‘ƒ\rU{+öS`3)ᙿˆVJV¥Š¦¾¾Ž2YI ¶º*bE¿«Ku\WOˆ•¥åO“9-Tô«™9è´0F×ÔpôûòÒÑSP¬Û¢b…c{yh“â’÷›|Fóù€+â³nañQ!X4[Ƀ?£¦ÆYOo½=¨n`©{v¶ÒÛàÄ|æû!8û JL-哨œ‚0iE¸ÙYSÿ»v,¤Ìè QU©¨ÜÜTyÇfgǦ­ŒÅ&•â¶Á9`î[ÀB E‘aü2²øIN `*ðä´ð3{±Ø9÷`FÇÇk+²çæ¾hk€‘óÇ ÉÙØÈ10F—–Êÿü‰ÜïK¾)™ëذ á£$¦3/*Õ+©1-¢1­¬3ŸSDWTQ±r¯ðµÐÒÂdÃÔb[Oï>SS÷´õ¢™‚B6HƒCãÛ=ƒA«Ï|­-6Rðž©iB¥&nä‘£“Óx¨”qrp°0ò÷æf—ÉŸNë¹ÈŽ l5ÌǼÏÑÔ >Ý܆·]dØÎa Â)³ï«Ï¬ºöÀÖÙ^‚™©é¦:톧Qeeµ Ù¥¥…¥Œ2kkó¬¬Öj•tæ·•Ûs¥ž†‡?%ÅC ŽV-jÍÌŒ_mB##Ý¿ŽÓñ¿~ýŽFÒìúàS™’²…o6¼?]͈­¥õM6Q|ãwb¹ÛÚÙHjmèK‹¾Ÿ êTTŠ™‰ «Þ¾£¯}cat{sÓmdùæY›åú³QïŽUUÚ-ô¶¢“®©©jù  "… E |VZ¶3?ÝE_g´³c™šÒ ׎ ÁLH8ÁÂ<…~aq;5tL% ¯ì "¾sÙ“ônó‘aÒÐmËpÜþuP_oƒ†šÂK­°_È;O(ûªR¯ÉÈm?ì’‘ÝòCœ¶ ÌÈî7ò¾—ÔBmºLšÚ·7c¾¾é÷wi¾>i…ª÷uþ‚âwo)†è#"ŠÂžK›®‡³²(U8¡@ P8·À ai)ÿæYæ`)S-ã¦sÃ$%åݧOáâ’Dƶ¶FææVöö¿·-ììí­þ~I.X¢–/d©½ùv…l'**Ùíwü2©³„óc‡ó+sÏћ˃m‹²Xytü‡ãF¦ºFƒ¶á*ó+´g'JCˆû£¹ßd1wýÿ˜Ž¯ê›$Ù}èè©fG'(Cçs^Ž91±=Ñ?5t¸µµ¶µJÒÒ²Eñ£{ –éú³T=5ƒåæ“?ÄEUUß"#qj}Àd¨…@SjIDM8IGOEåŒÿá¥ÓÇ/Ÿ0[Ü_ÐÓ“#dþ<8Úß— îjo—ÓÀ3îPS•~M[ø±Ûk‘:)ic^´Å ˸‡˜ÀÀ,j’»?[)r‚vº± Î.»&g«hóE»{Ý©œzüN¯ì6¤u¨R¾íé’”sR~ ÓüÿñãÈV$2Š«€q8%ïKΨ Írôhê¥ø- ã?üú{„ŠìgWƒÖ€-´Ñ¡Óãÿf¼®+:0Ðé}Ö{nÀÛJ†¿ŸºÆD£LêžÑŒ]X[eÄÁU§zµAIõ›úÕV@¾û{|qªÓ|Ü£WddGÇ«õ²Iš11¿Çó¯R8Kc½LQXXvè5$ww,fXjì—@è³MXÿŒçó“3Y6ú Ò¾ X=9>u²š•PŒŽûM-!‘ kW£J—¯DÃË«‹+9ÐõõÍzø#*ˆù5:” xÙ³¿Ç •UÑÏîåäÐqÞÎ’¾ÏÊͶ°°˜™QÚqyNMý@[ÿB dÕ÷:®ñq1¡°Œð.KK"r,ÏëïY1Ûˆˆ”ú/ê®§„0ÃèvOî¹2ùi/Onîβ×ï&\d$L¿9L½µ<ÛB»»Ù[=°ŒÇ{ŸEÆÓp|²ÞñõkŽT, ]@­îùnx¯¶WrCÏŠÝú-1˜mùiJ6Î$º`äagÁ,Èz@Ëêf„C³ÒˆÙ´)nÎt'¡¢:8W±°ŠÊ†y¢ÂzN‰yú)>òfŠÓLQÞÐôtC‚þ®†*" 4Ò˜âlTâ9ßÃ?¿áRÇN·—5®å»½ “ ó‘ó2½ƒ~¦|5öû Ê™èhBB,{{/aMØŸ%X¯eµq}ÎÍä­iö þ#‹ÜÆÆ¹¬$P°Kh #.%il~Ž0Œ”÷03Óô Òƒï4Ì唂V††ç%ô;ˆpœ}'øQ•ndhóŸÔèîݪ˜UäPVÆ)ž)}´d§ €[ª-ìÅ{+tøp6"FAÑ+¸Ëa­žÕÒ¢UœQƒ£Æ¤åDΑp6ÄE¡æ)»‚;:CcZ1srâyrÒþç‰HPJ ÙIôDqRqR­€È@O|NŽÌ¦ÖÓ§8â·„›Á=ñ[ýå…ññO9 ÓÂ*³z@™"™¾½K’«®á &ÂG¶†ïŒhÿîæVûê†KpµlM J¿Ä³gž]H_n¼*ÂÃ[cÑ^Œvª(6„¥óñ ‡LþLyŸé36ÿC¸®fD©PµÕÙœ½‚ò8†ø­­\_Y#:–\ØùÁRK~w7<|ãb#<\ýåшMª}Õ´5§xø¶-]цC‘i¥y45*ªÙÀ7Þ,—Ÿ@-@s!Àë¥ú€‰y’™yݲ S|EÍ7Ö·+YPi)r|ceÂÅä!¥˜ëœoßò”òÚ\\€Ó+(èE@]ø9Ĉ†¬º#ï£3•+ 1e¾Ö—sMÄǶt§~y_esøW—Wn¦õÙ+L-µ¥U©YO™ú:·m Æñ¤Ûb´¦À@° oJ;pTRòéîÎ|Ðäôlp*2$deÇ–Ív¼ÓlhÔßI<°tzÕ,ãÛÂÍ‘ fBî~ô[Umãh«éãùÞôlGGA´,]ÑÝÙÈ-Æ!AW®ä}þäþjëu‚>5ùïnm·ÀyÙ/p×¶¸ 5+k¥X‘_öf+ѤóÎbZ7Ý\ìí¯d5Ò—^ûı²xZ®‡Öni)deQމruª|;Ÿå¿¼€ÂÚ§7¯*››O÷÷Çö÷+ÓÒ ßt3ÄÉÇ'&\ØÝ+¬>…ÌüÚÁmlœ‘Ƀ¥¥Çú®icä`&ƒ¤Ãȹ˜2Ùª0uÙ-è²í¦:a,+»n9~ãóà韰K`a ëp0çêj?eé›ìmÚêÍ%}ð³gÐH6zz·¾å;›²6¤¦Ê—ë—µx7=…w«­b£lúQG×iý9<Ü©3½™?CiFšèÌhýÙIPªìH-TÉÛFÔïSM š˜&€|â‡S†voðuŠÛá¡›\^i~>ÅT»°|¯ÀwÍ40¹ŒŒò\uæê°Otu\o'¹>I›h”}%áv8Íu]îª3E‰'õ5Ï‰ÓæÅÙNþ}“”3]\gA oÞHUL Q½þîÜæ—~{y0qé«È˜£µîôš³ H%l[£©7ã=XWÛÛ‘‰ý!:T(ŒÑ[‘©|I×S×ÔLIÑ"Ç• ×*Ùa2ר4ïzh3o¨s.Bc#'C÷Š5îúšÿ}ÖÒŒæÈô4ÿÍMPÔ„ EŠnÑŸdV—ý{IyœB{± &\û?µ x³ö1ÉÔô™œó市r±P{³ ~¦¨72=9ÙÿÖíœføÏÙYVš0|ì.dT·|”>¦c1 ¬\}þþ¡ÍÉÉû¶,£Â˜tâšþ>Í ‹2ˆÅz°N/ÂÅ/Ïiúã×~þüÒ„œ1UüÞ¶Èn,Ké­a·t¾y·]“ +L¾úJV?QÑV'· ݲï5ß0ãAÌ_,6Žªš[ƒ;>Ö1æggŸ¸Ýˆ_ª2{Z8¨ýLe¡-³ÉÃñC¼éHÆN‹WÃ'½˜LD~¯-…áÅ&ž””o@K ‹»‡·µÉÞê(Hï«È½¢’'TüLQ—¼ëƒ?°FRI¸ahcãø¡¨xol¼Ÿ!*j­¤D%\q L,-åÜ¢‡â±HH¼×%óŠ‹/Ú±¨/ÅËÇçÑw5Jy]w0­g+™vTWc^¹‚,¿: |°ãëKìï/ùøð3ë¥ðQ—AüÊTT#R=HÜitqÒrDgc=XxxÅn¿Üa!YЀ73‹ÆeÄ%ö¼‘]ôTIËÐ×Õd ILFª^¯‡/P=‘Âpˆ@<ÊÈ`°Ø$tqqÊ´mnÙéz‡aoߘ‘AתÔD_f02ÓÀöûd]Ôß¿gö>íªcïÎÝâîäãõ5÷Á,±/—}xga«+ýÙåÁ~}ýþ‚¸ôtK‡ïÞàK ýíS¶.õ P‡«¨±‘=X€© +®× ¸¡ÝFUši¡hÏAÌ?‹77[èë+Èå7¬³‰|CïTÿT>é—/vvœúúìFÑMM2GáôØœ÷î>×CŸ>}iHdB99s&k¢áHLPk|×îH¢øÝ÷¶7;;Ã$)WaÃIB›€š‰ à>(” ÍÝ}|Ì5|Üßøè+E_fæ-l>'&rÚó.a`*‹“6p,%5ØÑ!’LõàèX¡\(ù¯ÂüñØ·± K‚ê~lŒ[Ô07&&±©)=)éíÕ!;0ÆÀÄø¸¢2[Ë)na¦HÉÌÊ:vvì„ â;8¸×rò“ïl̵R^’¯-e‹9ªîçÆz ¥rH²Q7\fe‹œŽ+â¡’¶ 8ø¥|H9õÞìμ5Uº¯SÇzv:€‚âz{îHÈ^°÷㽞žnI_™Bð_a ÔõõÜY–ëýg |y.”Ñf1œ,ÈãÛÛÀÖ2আI`bY[‰ÿKWÄ#ž€Ü«„›Ì‘ìT_¦H'$ñ;[hxåìܹ3~ëpÚ¦{lm8÷ÙëÂ’wÑéñL ˆqOX7—½Yw·é38”²²© xWböëLÁttý¶ˆÊñ”d0®ôgó/SŸMÔ„öïœ,"ëÏ . @zfu YX˜Öû<þ©˜‡Ñÿ°{{û{²GcÝ$âYø…ªqíòÒ}æ3WG[N “`ø Ù™µ—[Ó‰ˆ'K¶€_hˆw¶,9Ùå_¶Lþ´7òçÔ[%¥ ‡ÕLV:µr$\e³›Àdd G‡¿‰ ï—–ßÜÞ±ÄÓïìh0+ëæj%6ë¡¢ªª¥M÷Rý[î¢ &//h %ii 4ˆðoèiˆÑ0•…ÇŽÈÊý”•îfJÙœš¢ ìÏþ|/¡éqÎééÜÆ9n¤¼K$;»tI©¼Ï6(½ â°—q}99$G‹ÞôÅË™'+Ñc/[ìÃ">Êl¶Ý9Y-bQ]ŽÊ?/*@ïélpc\Ÿ*•{ŸÕþJìζµ5}y  Ô ú:«BL.¹úŸÄQ—ø¬ÇÚo3c“¯Rn #èzIµ¢S9}ñç0‰µõ3@¢ÿèí‹ý±ÜPçX¦ä*³  ó‰j‹”hÒþZ”.rªqõÒÜEEñÔ¤D¼Øj”Dl=î«"z3ñzª¡ÎVs•¦Ô¶¶…¨>&Eç×ú5ã%5âÔ€- Ì- BK9q¬`0ÃKŠd ää¾°g|~‡ÒÅÒÅÔý¹ú+ëÿ®QT“#A[øZðavOç/ו›+†´ åj0kð.Uã…‹¯ÿy" f£mbQ°·³#¬sqe^ÛNôçÏæê*—b¦_Ay9›±äòˆàóÊ ²¦‚˜ÈÁÒ ¡ÇØ’’1`ýb‰#%¸JK[Ý)xy¡ÂŒM -éûë‘_JŠ8Ëj2¾'ÈMrö,ç<þé\ÍUŸ|ÐlXß01´[†dÑ8ð¢Xb{5%‚Î8ÅÉIµ´ä²Ö] Þ9/âGäçNu-7'§8qò·¨:§95Uö©Õì‡ïa¹F2|årSü< ßz¯O†Ñ¡G~ºsȘÙ1LìO~¶èE@ðÊÑqVÜúþr?9÷Œû„󦃃ƫ)œjæXjlNÌÞæÑ»òhµRÂ+ˆ01´vA‘Dïä4Š~}­Ò~yø÷™``iÉ9±NNÈ›„•xT ù¹’’’“3?~Ä#Íì5ÓÀ¸ÅÅPÖþÇq˜LÏœu¹ß€¿TšºžÆÓ¾ÞóÇÒÚØ@qÒiSfÌ÷ŽK$,‚™ÑãÜUý§OHåúòM šlUd&I_gYk&oe‰èÍKU%ÏYNýSW['p6n ºeYì³ß’5‹rmø³Çá"AJáÀÔ  æßüú93C}u¸yú‡ÈFAßÀ´ åÔûæ¢R[i&é>Q–Ñ«“l8~B†1ý庤¿š 4e°¼œ1 ÊÅ«&JÔ|¯¥fcm÷œ¦ç•ƒ;43ûE:u•FFcöK??âxqÇl²}HjiÁŸý#A‡ƒ7M“´KC¨èäìéêúX~²ñ‡Šo‚ŠÂ˜Å"ˆ UÉåš8D³ãz?0åbb‹~÷¼OYn/ö&¾E ÜØgãÍÐEv¿‘û©(¿Y]eXl¯ª1íqjòŸøŒíì$;^»9Åit¨ÚÒ×ïα¹Œ‰ÓВ˜Í~ü`’—a1ÖíÍX(Êž MrRq1Çì·vYô&l¬p '“£[“ˆþzé݉ˆ‡F% ö°Ðxæ,èêÛØ˜ãÜ^9¼ÒkšC{ñËtå L™Ç D~r:Ø!q*§+;5µô÷ïíêìb9ÃÀDsÑÑ|§g¬SP‚MÂç¶u¼Ê]¡Éë×¼ø¹ùÇ[¶­aÊRmœßfX$´évoÜxˆc4¢cG"c„üÃ{‹]Ýj‘Ÿq Ì/g޶æN^Š0$&~>NåÌ@ƒú–3<ÜXÎcm߯Ò*ÂTr mT «Þ­fW“»ñ¤ÜÚøŒ¿sq0O *Œ<&f& ï!¿Dî‡QÅ?=;• ¿§eLÈ7’z…ŒFDС‘4ßO !£¸šïsY«lð •žûlMƒs¬cG“»?æ_GüY·ÌãúµÕú¥ºŸ_CnîÀ³¢b¨ûœp®çÿYÚx@Ûr/µÄ‚6.JŠ5ÆÆèè> ‡\|7\ììà¿¿Ó­®v°|‚Lߟ)èË ´×°¦V–– „µÐ¾âþƲ“¢âVHèrT„×þÊ;Ao·GEÁè?ÁÂÆ¹.À)fDÔ;üÚì<1þ(Žؽ¦Ûú³Ñ‡‡ƒ:ÿçÀ€ÇÌërå\Ÿ›sÇÎeY¾_34ŒŒ›ôSd÷ÍÍïhj "U€ùj¡PÕ×)áIÖG†>aÐðÉíÂjw(U+:ÓÀàæ#Ùb(òNH{±0:!`åp¹W‚‚Š/ ¸8§Î.\©8w'K) ²éêŠNŽ’¹ì!µE–þ ™ w7’¡ÚvÿÞ °7îç7ì}5ü½–“¬‰(‹ßw É'ÅõÁÇI›` ¸ ñ(ŽÂ×ëÊMB}Œ ã¿/öÏ ®¡`¤sªÆ¹ç Äg[ñÌú&ý›§é_J#q-û¯IhLMï>|ð1‚ýRÍ£û`3CW–§Ãõ%Ï,4ñå?²¶U€—§!l¦ˆêUì[̹â Õá4žÞW˜³ïaÙîïÒú™2 «ŠËôåùüyXX–,ŽWÊ€½~‡¢€mÕâ]ÄLuÚt oi°‰‰Ÿ?§ØT!6]dhk4æhì ¹„5PŽªÍýhgg<`ÐÔ´¬×¹C{¿ÿ¹ÅrÌ"t;yœ€§Šœ 9Ðþ¥%ػۮ»+»ËçóýccÉûjÒ¯¶úVã!x3èàþÞ‹,µškÛÝm”ˆ$ØvsP—k6r¨èÆsüø’þ}¨%%0¥XÉ_è°âó¢©|óß#(q@e -vÚéß­Õo²%ss^@ãÏTHÆœ÷ì-ÅDõË¿¡%)­ÔÜï‘,ŒŽ¯ãj1FÕñÍlO!µCÒ2þëåŸí\ý³ßOËãQ%²•ö½×·2™c·êL_E¥*‹(fžg*¶:ýéÇÔÑÇ h–Œ½lä¶°øÈ®S zxPP +‹§ kâ±M T•CëÈÇÔ4p< dûÈóÑR:§]Úòö¨ 1&ÓO_½ü;´®.èLo~WºO8 ¸M¨sq1LùÍ›¡‡{.Å´úòü|6kõó̧®Q¢V%¦ËL´œ%Ù„<ò"#qf7 âà¨IJåcùR^^šu†zGl£¯È¸éeEüÓÐIIþœˆWñôéæXG¹ªžø-zw9 L~¦–ý4ˆã~ô[\|¡Í‰rò‡°û¹E&>ÛëÞoi7½_S»»ãã âTŸþö‘£¢Îùù‰ž<Ñöùí[±JkU½àà„PÔذz©o?“G݇Ó`4?ÁëÚ]€¬LÃç&GÌY»ð"C(óî¨- ‰.Y®I9·™Zn;Üæù’Êx–éÑeeÊзŒñý`~ÿöq,ÁÃF›1ññÁÙdCAlhpñ‰.NÖÝ3˜ËæëÎ& [BPÎÆÆ;#ÂQ7º ‹kkUsဋ§î¾½ìθM–d{¼;{Ï¿ê"Wêðûaì[¦àýqÛã§Aë–æ4*…}³(æZšÀ«ñ’qž«WBm͵—þ ¤ÿ åm—ç%wOyMŸt.0Þ`Zq#}ý˜’tJKKwVW·¡íì€öý££iû“ð±G5Öø@iŽdÆúú¬&<Ü-5ºš‹Wm>Âîì\Ң˚r7šäÔ œ Mžï>û3$Éì0ŒÁ#x´I»ì¶ü Æ7œžnzB×W”93~íà&;ÀýBòPìzÈ…NIäàáÔãpÚJ…±÷ö¶Eœ^uÙè÷Ÿ:¶6ŸµuR¯¯…·“êÜöòÐxö̳íÞíb8Ýfý¹=-m¡ÅႱ¶ö©˜Ÿ§Ç/›ˆ›[¶0 v¹<Ʋœ%X V»y7Êàƒ£Í+‹w/ã÷s„mJuçga9š6È—K›‰ßwZYêÕtúý3LµõúÉú=•"êöXwÆ~c,™-æ?ë!³9ùùò?yFÍ×áåýB1t‰tÐ×I8šßã½¶^ºÇB=‰ó*0y!û9+(EE»œ6a¼Î¿ã”µçÐìÏhÉ㸣ÅLÈÃÃÿpp‹‰é)*JÍRÿ‰ Ò3Sœ<2«Ùzºæîîô?ë¦ÒBÕ‡Aæ¤ËÖ÷£¯v‹ëëïÏJQ+ð¿„oRø2á<ðY(_%ÄIš Œ´«\¶üdŸ°Qóe^abõ6WŸtÍÎbÍdûB;Þö¥%$©l½jjkÖc½ýO$hÊVU3E³¹]é;C n¼*ÄÉs•hNNö€Ô÷úîÕw LŸ¤M ‹õõÙ ÌKrnÀlR+öÍãé(+ó™Eá|hl 3ù€j=0óóMî¼ú™̸‘ÄŽÀ{ÇI/ÔÙç[Žß Ï ¹Š|ƒ ûŸ«'VáŸzþº¤76üqƒ8/0ÑŽ A†Áˆ±™w«)*²;5yL yGÐF@CS Ùp:qË3@zA@@t«_3©cÀÿ¸ÎPŽôvEL=1¦ûµCš&ÃýõúÒs<Ôê:.Š& j•·ã œ,–²²¶¾Ü^ýi2—-A°„€šßÜì„$-í>£•bú\ê¾D5]·¬Þƒe³n¹lã÷)<ÚåL¥iCRÖ¬L3!<5^‰¿ÙT ½úß?›J•ôê[kF5n}jÅ!ÿ «ÿÀgßtÞY`;Ž€´ÁÇ߉Ó#¦ÿ»®±zoèJ.ÜÛaT¤0ˆY½‡cÊî…íqžº²ò¨y¦ï¥BæX¢} íÈÅZ4'7ms„89Ÿ// ·ÇYàÓÞ&—ŠØèû›X!3 RŽo¥¥ –ã]Ñ„½‡3UFÝËöUÓ°Õ°sÀV‹K2Õ»X6df‚<ö:¿¶;˜cd’ÿki%ð²Ó÷] ã© FÄååÖ0e4á_¼¥÷ŸÓÓ2½I§ë°„„É=4 Ýj‹¸øøø””ÙÏ´o=øIýUU'f*ŒÕJ‹ð|ï/¦õˆ›ÑL¹+L¿–3ßO•N®®fºAüzR«Ëý‡ÞØ‘ZÓµ.Q cj××Å–[ï×76ަK }¯ì޳»¥ e2Ä·ø¬£A,/Ó‡'ÏkétŸQÃl£›°þQÒÓü¾rýᙟÿÏôÄÄÇýˆ¥·¦¦›{hšF666ªªª^^ÙÙ«Ížga·¹¹¹ª`¶KÍ ßŠƒÜ)pe)ȯï×â¼k¼¦ËlúÊžgu#ÍlîÏ~ûöíN9× ÂOÈhéÔüA qÙù¸Þ]ÁÂ.þ9‹E{qÂÁƒޯ·Ïðz~t²°(iiy,V­b#üNqVõ†V«ÙØÄäs„ >ðÛ¼¼< Z¯Ól:žŽYã>Œ‘©z//óë£Uǽ‹ËëÕ´SØ—ã¼Ãÿ(—š>®ôðtÏ bÌxz{ döÙùýȸÍm0‚ÕêI‰7ËYïoÁÿ…wf|ÜfµÕããÇþhÄŽöödGK 1~½Â T¡ŽMK[Í JLÙÏ©¥t,tG«Çýo¤eeî}C¯Œc{›"`ÓÆÆõ bnî­&·ûš¹´x› ¨q‚êS"#'.¶5mmm8*äó¤ºSÌYÔ3dúõ·"JKK%‰ù\²Ï°é¸½ßã9.ôè3ÊËÉa¿î£(,,Í™«õ.â M@‡º%ñà}þ Ú¸Õ&§²]P"9rœœMû³eTØë]þV+ͪ§?ã^B‡,Óù¨þÒRëK9 §w±;ŸÄfmœ)‘ô|ÿ<_Ièþ¾ëõü1ä]Í䊧*¨’<©kêÐ -¬ßÈ(vóïp«¿¼;¼^õ ´mh®­Uºe¦þüùƒåj½Ï€>å -ÉgJJ)á¥ÛB£å©&­¥—ûPöNG›õMexì¶Â@œßZhQ‚v¢Ò3Œ™ºØN9{jläðððø+eæs&ÂÍÝ’–Î%çø_×~×ÓÏáqgÿ·¯B†‚€Ù4ºPÑádï{^™V vÙo-µHêOGöÆi<†Ã‰ÓUÑÔõÖã™B@U566v[jÝÁjg¥‘ ²ýÝoê˜wÙ*TŒÈÉq¯¤‚~?ì‹4PZª-™P6ZFÞ„ó^ˆ¢dvá”d¥›;˹ªÜÂBß2ˆB>)ætƒ½BÒŸ?\ÎÿÍ/,„â1}úüYT•&ç˜HƒÆ F€Ä'3×í¢TùcW›"çùkHo tµ4.m¶DJ£W;äÚëIU_Wwê n̸:O: ³ÎÎÎ.É“‚“3©>"!awíÄ\/÷zÇÖÚZ†‡_J*ô¬–ýÍf½Þà““€~‹óó²ÑTʥȄ Ó…‰Ün,§ò7>ÑÊÆj‘UUL6êÂÂþõ {SBA8Ë-nN£©Ü’¼â.íÙ¢Q#©Ün{Síí_ß…\MÈçÏòXÓ¼,2.Oïûט=£¼:ýöì8;P[«P¹ôcEVV¼²R¬/tYhIGö¯Œ^^½?`˜°°XÝÏD=î¿{x´©7^zz²Ï;@…u %œþû3¶oãpµ-mhK*…Ãa¡ÚdÐp`àjQAËÃÍ©º–—©éS[ù_æÑÆœúz$}8ÈÔ¶×rÞ¸Ò‹° Ú Wë^´Ç2_ª¯ðz~šŸŸø@?ïKÀ/&&&yyy·Ë½ËeŽªÎ «ÖÛOllläÿll*.ú’’ÃE¨áC[Èð³Ú^/ïÎN é`HÈEw ýÇËiT©•¾~mã}š+&CB Š£›žö¸œVøóý çWʘ…¹9À1DÜ® .Û ÒÚ\™]ö¿{&äó0]¯Ÿ~H=ÛNŠ ëÃVW"ÛT&N»üüYHºŸÂœÍzÍp4”µÚ…Ñ7ø¸ƒ@ˆæ–¤&Y¡Ýn>n5 P ´N³¥š´´´Ý)û3%ø¬––––®®®::k€“RŠæ Y£ë´/‹y7ÿ*ýðev¬wÕÄ>ßlÜÎpöر46Viuoˆ‰‰ijrSPˆ®¨`°áõågw¿) zåoOPLVmLZ~3 f–¹ÙËQ”œÍír¦ˆx+ÿÐ!:¶Uÿzðƒ€_¾Žâp«]ˆHáÖ¿†€‡íw'€Ù2üHÈí:4þÀÀg..÷ƒ¹Š·k¥æ“!§‡[xxxA׉ƒSm»{Å)’<ž‚lÐ'ïjjPä󎎧v÷ããíF¿!‰ÈÊšôC]6µj3¿ØI™ƒ{µpçÿ&ŽNûh©¡*55µ®îºD½î7'@8uC###SS‹…/«wW<%Ïÿb)¸Ìä[B‚v¥rϲZ4ÞÖeáP¿s5bô™ÖóäÆçWWŸbýõ Pˆy’w~O޽?ï 5Ušv)ÕT—‘±þÛ€ãR]wë¦Ì÷¿}ÄW‡ã–—ñ ­ÚžìSóó‘™…8Jíªimϡϻy¯˜ /€+—¡yõÊÅíj øûãÿ­àžn£ãÀ"Xiý?Ž4¿±¨D‚x_ÛÐè`4[JÈîáª]iÚn\T« ÷]ß”’å ™ž‹º¢ë1WÿãívP@À­€ŸýbƒiíÕ‹f|213³œgÔr–dõäq]g³¡")‰Êb:\ß$òy®‚ûecÔöÅ9 BmfdU–üÄÃźçóQ^}e(JÁý¦ãVÒ&xˆ3+ yjM×ï»/Û+E>·÷÷çKô8±˜À03»ªªâÔÖ’„(y&¼1Õ7T³nød`ð e;_ZzeÜ#¢ `7à.2ÞÄ ¹% S•>ð£¼'iYY·ÇmÒêÍÎå11¯.!ö_@ã~I¼µjÓüL]ŒŒr)(]–—“³»»Ëfgø>ÊÄéHc –ªjŽfãœÞ,¾ ô¯Y‡eù_cœ]\<îvó ÝÊwé¼¼x¯7®_–Ãúˆû¢4Å…ãÒ´WÊVs'ópÀ/@‘Š‹Qt=Tsµ·¿ëò‡su]xz “ÕíjääH¬ë˜KZl`ú÷'AxeEj(Ö××Ï5Ø™>‡s×»÷W‡ØDO/¯©Ûòv z3[fôp·¿üÝ|B‰ê…c`„–ÉÐéùéǽáZ §":æ™ÙWˆÞdn€…ËÄ Øz¾t©æP½ ð^/›ÎȺ™¨ÿT9Y±–Ôg[`ãÎÌa<^¯ž"û]ƇÚ0ý¿{.zñy ÙâR´‰<ïS,10f—–~Ø~µèß D•ó¼?´ÕÕÝŠþ 5ç?¿˜Ôr; ,¼&Á„ÔÈ*õ3›æ¬zÑMv½ÿSîávQ¡çDÄû$%ôkwV®àátãg||p‘²|ÏVB>¼#ê«SD¤ó/ÌÌæ÷®jŠŠË­/ë••Œ·ƒÆÂx„gñ Z{»ò+}ÄǬŒœ.¶DZ[œCopérÎ…hë\£½ÿw#eš ’+HÙã£0'`µ¬S¡æv²,HPus¾\ä†òçOO;C›ãËM%9<¬(ЯOk|¥¥'ö FQ./ÎlIêʯå•gæR4›Jw÷LGÓxuF’u45»B(óŠƒyL-,º¢Îü°VbI‚‚%æ/M-,Òàh´¸ò=6ï!é3@äçC(ðxÜýøó'ò|;nܘðûɯwxl'qí_ÿ¡ñ“6… ’œ.7±30쎛pi•DE Y—»çY—7©e#_^þÅ"':XxC3ÈûÌe¼Òü£·×URÖ½”+Í{qa2Ÿæ5ryn÷ P+owØãrSÙôlïãëÝ t,,Ьޡ/ôNPñdVVf¬ãË-pš±%s$$G¼®)…’þ ª&&ÉMAš¦B[[¥FSi32RI¿9Š»WÕaÅQãIä¼ ×Ć4'ˆ¥r^«¸»¯d¤Á!4Ei¢æÌt±¾>2[XPCÂAÙyº»ãxêû6E–]&1¸V£Í×´‹ëÆ"¿«ÞZjÈyzB®4sÉ9;[Hbe*ÓúâA‚͘à.Ÿ‘AÄíÆ¨ða¾#Óâ@Ñßzó· p•ãqªßªÒÉJaÑþÕQ·-ÙÈŸ?Ö?6R z†K¿$ Z½®„édZ¹ —ŽH‘æD¬£# õàlÙIo€vsøÝ;2€{ãã»Ê¥Ù¶ Ó88ßï@e¾eÌæŒ“Ò³Óиº^}¾Þ=ð¶êÎ4´M4#d æ3vàqÛóñXÆb‹dåÆVO]ë*)íþÆ-Ó’DB´Ö¬2,Ó*¥9+‡¤Ë•jˆ5ts²®Åé(a‘“ý†#º¾þà¸5Èõ.šÕ@¬}V­®ú˧&ˆqÝK1dj{6T;‡™=ˆõ5£Ìëí›K`­¦ÍJ†ÍÊçë, zº³Wc>Æ 6:dÁÁ1p?<â_ˆ‹™…9¸;(£L‹ÛýD' § Xßå&i£aŽƒCI^[}œÚ#?4ò˜Áç'ΧºUZV–A:¢/nŽå©D®æPé[/†ôzš‡ãæ¬6ù Æjk*uš­Í‹M-%xe¸¼î*è„)ž»˜EÙÙ½ƒƒÎ ÝŒXQu‰'jʳõ^^©Ü¬ÔÔÁ±4H÷7Zjj‰%š,pÚ¾Ü P¸¸C¿7äæú]uøC„Œ¨í‘·”Ó:ó•åònz ¸jê—¼|dcu¿¹bÐs¯3OxiË»«G“nÄã+î zª¢‹…š‹ á°×ööÕÐÐ÷×F¨x-òäIqDtý$¤X@4’Å âÒt&yB¥´´n7Üh¨ƒŸžÜ~øúbÌo}å”U\­=܈:]nd/ÕæÍ•&f­¤‚ö¾‚°ôÚÄ<•¸u¹ýëöŸ„ž·ã…Žž§¾HŸÑˆÜÅ?Xd-¿àÒÎΗÿm§þÌöýÈ›?£ÞúƒÁd.—Öa±*Ÿx,òËÝÒw‘ö-%éÄjeuõó‹]ßøR8 Ò¬›—út 2Û;ÚŸ ë%S†cÁ§ÐŸÈüœÌ}ÏÆq'α ’òñã›·Ü®u–¡ú³ŽúŒ·YÂp x«ççs¾}sõ¸w´µ© ÔÌÐy¿h%Ìή®ù ÐW”Âh`åѲ9Uw‡@³ÿoø@ :º2÷•f(ñ8¿·xº'(wô—üø8dÀõQ £9Z¥Ùkà\/ït;¥j{q'¨õ˪¨ê.ØýXH™áŸcgô²ÃÔf“S^MÒçZȉ'%å/ù܃¢’@PVýc…$l—›o3CC¯XWƒãÙ*È=w!ín‚Ðé˜Afüüž„Ü FçÿD ?¶Úèµs:rpü@FAYøáócÜR‚Çt¡nHˆÜ÷óµJÆÖšÑÿøée§ðéÑWÿ@CR(Û¶E¤¤¸M‹š¨Õ¬ÌÌ™%êeDœŽ}CAWaXî»@NBL_6ÇÜfËÝÞœ¶ÍÎÌh7V/µ;°]{ävU 7ÙŸmÛ[˜N=P[@M£[¨Ù†Ãˆ¸DfR?´k¹Vò8ª‰ 6›y×@ñîìšÜß3ñ pû£ìíKYÎCÆ®`ú™L¢bã(=<^?”jöÓ",dÐY¨yæWñl^õCÑ£¦ À4õ²£èÌbÁ~Hû8Zš¾ËÌFy l((^‰ÌrÛ-™J3¤a–â&òf=?**_VK®—ý ™ qÎpÞ¡_É0G“]ؘcÎgµÏOxx«á¿kÝô†lïíu#¬ÿïÏW ‹ƒ/h+@Á£»qáûZó„‹Ó¾`,ÔÚï.ôô˜6þ΄kŠˆ®–*IeÈZ-TXõìzW ðtcÃ'!Ñ;]T vög8†Óÿ—ó/_—ÄÄwµ¦Ãô×{û=U†„¢b”\6ßSÓÒ@×Ý“a\6U¸];p,ÿõ'îExai H>(9ýÂ|t?¿§wèk>Ï×|ú6ŠÏjy=œ¤Í”pè˜ãak;h—8Õ6ûÔ½£çóãç×HTzß'ÀX†˜¡7©©¡€žYiiIѨÐCòß²x=%ä¼ryÙ³d›¾<8J&µ·Pó"ŠÓ<¿fé†Cš¡@ð'€¸,ïBB¢*ÕÒÍÙ{¹õ‹Ü ±¾]gswÁC¥„ü¡)6VYC£Êå¼ÇëÙc Tãã×±®ú"î×–R@v¿ SÏS¿:*ÕÑkø/!DF[®Àýö,*޶"” Á×é&CQH8Ïãz™Hºü{O8»ÝÏŠF,È;L®ŽZN‡èâFRÔ÷6|zæjŒ^^®öx§¬;ùrßâ8ìññzõ_‘21ûDSL­Ù§f̦õì\Û‹K×+ûW(— C++ÅÌ#7^Ë.÷Ï'Lâ±™­Âjèßdògûb‹ËD"¬6Ì„ÈífW©Sª ÖŽµFˆ-P.Ro_÷Ý &U'$0 ÝßöyüIùÓL2œ|íâµB (Q`ïåJê:eßÝÒ01ú;´/,àÒrqÚ}²ìF´±:ZXT!‡†”¦ˆ€x‡47¿ÆŠŠJbMjlíæ@Ò)£ãUUO“[(-¦þá€ÿ>‚b¶´åä4 c]Z Áÿ3uÓÓÕ£›?¿¥††£»»”ž^RaatEEcÅé[ g.ù×_ YûÙÒ¦ŽºÑ4§xNe¬}6o Í•­V=©¬ÖùïKüP°Ú90 Þ‡_`!ÈáS.çR§õn×\ˆ°ñ•#ù êniQQOw—½*F·ê ¿P—¨>Ø80_œÄOß'O/ˆ¹Þ_‰KH(ÙÛ÷ÖYñ ÂæJ)&0› °©dÃCòÀHžãü•N.¯©Iù ¢òx´ú\o·mÁETg—çB;cÀ‰‘AtÚgY{gY¯°è˜™KSv6j-‚D$iBC–9„?Ý?4˜‚“Uc8Ý_«£Óú9djsH:§ÐóÙ\™;èé9Ц†!AèØìw:z‚FC‰µaï› pòˬØ=¹8(vnƒñ²P‰kcãp;^æ­ù2o¥¡Ñ2zö‡ýäé¢<½8zq[Û§L!\íÖ¥žß•¢ —³é¢¬o¢Ç«¼ÚÒVd3WçFò¶¶P¦¢ššU™™ù?~VTÜ]ìfé`C’w6väó¾K%—k6;cΨB¤Ïs­÷g~ÿýkêäDІ¦ç| ž ”wO¿~¡¯/]„Èï` qóú·¾üÓ M¶[5fì&3È‚¯Üì.v`ùXÌãŠG1xs°_3Síã—(E¦>ŤyµOPV|ŒŒäWɃ\t`çIõ°?ÜaƒÛ§ö&‰.RÖ&ྒྷ‘•Eî­‡† ƒòkÿÎÃ#=’âvÖ„gÝ2œÔÅÄ$NÌ{ÕÍ!bÅí•Úf4ºÜÙy*_g΀ÏMjäîþ¨‹Ÿ/üI¾74†‰^†™…(«ˆó§¨ú ò©Ìû20ÐÓÚçÏ^ Ð`þ!!ë¥ B¼ñ^®Ê1?o`hÈÃé¤V¬ÁŽF·‹‰uKÝY).+‹½OÍ}sQ²ÜŸ'm2F?úôÃ-+'¨Ìøøbá°‰¡!³žn?‰4žÀZd"^ÈIèFñý]/·éáD³„"p¥5¥Ñë™›$Âz³ŸÎ÷$î#&Då—DîHÊþPµ3\‚!¯gXÓ½k¨ð¬ÄÄ\p"ÿ_ÙÁD4U^mӛ掛t[[ŠÝ=@~êçä✞b|’R`ü¢ÀÌ€×GØÄÓ“.Mzn4ùFVW×êßhšõÉôÜ›·"Ø—+n‚Z@Âý»ñ—%äí‡Pœv’ÔÔŒÛÛ7hDæí"¸ýú{—ûtÍ-Y($–‹,}½ßpöŸ(˜™%é´°»{ Áugfë()GsxÜjï6Huň!½‹÷§ L<<â84?-T¡Ä?’mZ.`#‘ %¨`amç@…xç¤ BC¨67£ïV¸G§§ÑAÈRy†í‘]ë’—è‹«”ËxŽ—\¶'óÄB‰8ÏX)°MMMeÍÍÍÍ•<=}ÃÑÛ22 üØ;˜×ûHæ÷=r2´Þ…F«õbºjjPA‰[”Yq;ÓS’mN/5$ ‡ªýþÊù Ò úšž0&PM-•}s…M«^mG„,Я75ߨjô"ap°QÀŸh©5…áØé?Êò>"66—çÛ·ª¯^5`¿v8Pa×Û`èíÝÛèèø¥ ¡w:Yóàmûu¾}¸=<ÙÉ´Æ>& Aû‰ù "‹Yi±XÒÆÝÓ µærß °)å Ìþû¶+æ‹+O2 6ç}%;||cãↆ”Zdr–¦ÊJ))Ë9ÐÈÈÈ !Áß‘»9!ÍAJ¬;::¿s©ŽfÔDÁ"䩨óºN½Ë‚´_¾ÄÙîña^_Ǻ{AÍh•‡ª¸ ‚ ÒÇÎ×êÑ$üíÛÛ®·£iÛÇ yÕÛ‰ÌL3¥)ÌÖï1ºèÂÄ„@ç¥ñކ ¸^—¯}Í,=BpÆTeSYyPcø¢å¹JXgµäü}Íܼ8ÀhÐß ;V‹×¤QŸ…Ãâ: Y!ÖL/-¦Ïº"!Ò/)±DKÑo·AùùþðP%d0 vèðÛÄÌLb·ëo½½†xøEÄ\õ_µ´`£Þ&ï÷…õÞÜ$«öë×’Ÿßó§æ½ÝÏXåÌo Ô?3wbi000¬|~ÆŽÆ3¼„‚ËÒËõ_zÇ“X}Ï·ÓÎÏÕYœJ?Δ¢ÐRµØÑi×^ìªð¶ÁÀ àH¤þù ÑÈ- yø'©+'÷EŽ—Æ£ˆ‚ÿ)½¬ŒÑl&~¾jÚ÷×M…ä:K&ŸˆèÃøxBGÕåE½¿mûÓÎ!Y_è||"?¸¾âËõ‘$˜™¹?Óò\üžV1‚R ±v@“\(Ô]‰2¼P±á( °ßèÀ¤\šŒÊ¹À¨dcãÊÛÜ|¦H9­@AAS3–e]Q@ •­¬Àä5¢ˆZƒmb9ý”dæµïÞ‘'7ë—)Iqq(0yáñEÑâÐj~ºŠëÿ Pýù•çÃÁ<ÎÇ6 ÿÔ55Ì_­@[Ï«¦ÁÑ]o ]§p“}úG£–Ýd盿ƒŽÓL1 šÍíöLŒFBÂPQÑççÏ|Ðo€OªMLaàlÖ†¶†ÄD[œmð4Ò¥A™íϦuuÍ^TR¼‚0qy&W˜ÈÇÿþÝ~{~u’…aýñÒ ²JJœ 〒Y,“Cp¼¹YëÌx=¿ Ö3]*ª©‹nòr;$'÷G"]^*&ÜÙ¦“.üR^°dÃÃËñ?ÝÝAfeQJcPk<Ï^Cis9Ågø³Xuhh»72æfa¡€ðœœ\Éé4S˜/òá¤ôxŸÅ²9!:ºÎ³å´7ä“3ׄÕûe\ëñiÚ· Xs°ïÏÖø“kЈ¯‚ŠòHÙٽ¶j,-™¸¸‚u PüZ½¬DDúC‚†<¯¨ó $çT–眃CG¹ˆfÇÆ8 ÿH½öãŒÿÚöîãáññ÷ú·µPkïihÅãî€þV*/ƒÞú¦IÏÃë|ÒZztÂdtàYaCè4××› ?—Ó³ÂÀÔ£¡Ãò©©-ô…,¶8•åøtaûñº -ü³\v52/ö¼9់‰õ¨®®&'ÇLÁ둨©¤DEËcÿïCg§Ïã&gë-f,ÏÃÓãùáá%½ÄàeMûêØ˜ëõ‡¨(_ñ$56IýèÈóq±nA¯Ïœš¦¦<rCõ¢:@Â#"®ã==‡ÊG çú •ÍÌ’º:—ÞÞ$“aníMãö…rcâ»îŒñÏ!F¥Œ“7{>¨L,ˆ‘DP<ß; ú'&™¥²U ^õA¥ÇáƒÄõ ×{¸Ñ óÂÏ™Z|$ä¸xOOÿʰº}÷Ð|nïÉÚæe°Á¯ö ÍÌä©oBðz¨O“=———ã9ž³)ª¯_X^6^nT]FF€;ðz¹Û®¾¸´¥|{ƒ˜™ Ü[›l@OdMÆÀ FIɈŒ Œy-[‡–ƒ£kˆJBPp­Îßfcóe²;hñhÒéifÀç¥jÌ„{¤éXzz—P0¿¥SõŸåoÆë-N:}·±ßô`bÕ¹¸$ð{ü’wP9Ë»CüùDâþÚÔh ž$±4dÇ/8ØZ%~q¶Œydä¨Rg-#SÚºE™™;ÉìyR©Á¹rër_ É ûÙËMÇ+M×<ì.yékïA×V¹ßÆÌ(ɉôzòÂf®¯[]·õò®¬ûV…èp¥N/,Ü팓¾ö8Ïð:<Ý(«¨ÈÁ=nHI™†…C(ÿfGPLl°½²ŽVY5„CËÅëRÙÖÆt€G/œ“GÛCÌye<‘a4B‰Ù dj:ÚK&ºÜŸ4 ô7=@©qrÆ7 6Z_Ý£à[fçî¬&Þõ|‚âç÷¹½E89GÃFûž‚-Þ‘<º½“ˆÈÒÌ,Èáõ˜QÔ§Ï·÷œ õXøvÛ —ÞÁï>>îŒ÷rZ.ÎkjUõß_±;saCÖ /Ã…ô]¯ÊrE…¦uMÚÍb!ßmòNÄåþj(–f½§gÚlväâ„þß)=ÝZõ?å¡Èl"»]pÙñ„ÃþO 8‹A5î³AÞD¼½¡ž™Äop0ëî ëÁ¥e BëáÀ†¤#XÓ"@`d(¦ZÜHCB¦ó$廀ö0³ûg 0zúÑFÇHøò’¦Éi5…÷¹8~.¼¾~XK+W† âmù'W·/´UÐ׿ hHÛÜÜÎJÓ¶¬ÚÝäÔÔörJäòBxíÃIeH¯)Ó«p/ú»õ©QýƒB†NûçæŠñ˜š³2y’9jÈH:5EE“áN!ïÉU½jÓéj ñh¨n§*ŠÛ¥RT\\·ã§@_ÕpHù‹|8©{‡¿JìÕlžÐZXˆ ȼ ›ÀÜ8ÿnOµ/:fšƒãŽ“n$žò³I°oC¡ ܹ·•Ÿp ¥¥|B€ƒ×pù:øžž¤Ü®T\Ýxmä´W:@¾Î‚‚n_mtgÏ( 9Ø2øé€ÞŽ÷ïÏ8P,ÆÆâ—òþÄÛ—ŸÜ.‘Kͽ~uitŒïMƒs++'÷÷à`)Ïÿ䀈˜ë>䜑uû°EDÚj³Ò*WY—Á[Ûš-¹¨H×8±/죡až­í`¹,d€û ¯ËííÇb-î¯Åzh"}CT¡ñúú3‹VÏÕæ›‰Z ŒØX5†¤OÒD¢\íbß¿_&›™ùwtDKG÷ò>¾ffꊗûú/ïP28¸,ÕÎssƒf+&†éèGEµ_ ÓîuqD–el ¡¡¥ç^oˆòKíá+x¼=ÿQZ:YŽ Íæ—¾¶V ¯HÄó`U‚RâÒÝßßTXøôôˆ²²ts‹ ^.áààpàìêÚÛ×Ô¤¡Áéùy™ZM £—„ÄŸƒùªyš7sƒ“5(>>ZwwX·û¡ pÁ5Þïß,—TjÿШwrsñ2«á¸AáØi¼KOß¼ÜñGÆû ì‰è¿‘i÷»/IW-ù;þ!þ ±ØÙwy]þæääx;pŒÁaT›L~ef®Éϧ¸[@!@½^ëðaÐëýÔÔÔTWû¤Æëðxç $$dcsJ¥\:vdbbrzr«ÕæéafV‰ùóåãµ[ÝwÏ °|™YY¬V+Å%%4TTng›77ΰ|ž7Þ¿ù˜˜Z±éÓQÓÅZ‹ÊÊʉ‰ ""¢ ei‘xzÝNpñ˜èhË•fѰwÅÅÔ44„ØØ›‡‡àTT””{ÛÛÂ^µšMŽãJJ%jÓünSUF£ØoÞDEE5¹/Hy>÷B…¡¿!´Ýè-<^ÝW.¹‹“ÈÆû=À™ŽnÒ²OMUTHìeç2¦½X+dlrhabÒǸFÏÌrv–ú²tOJÐÐÓßÏIS»/ÓLEM]ÜçÔ%àŠ÷îÝ¿­­7ØØc ¬Æ×¤ˆßõõ£Ábcs‹ŠšœŽµR¨”ŠMM_#!aáàä67™ÌÝÚ~9¤“X,FS¹«Iw鯷@­{YZZæ¢ãᙘšfËÈŒ]îÏ‚2XŽ 6IVUQ‰ŒÌÌÏw~zpYx!£¥¥9ìèèèòCɾ<;357o¶ßYÀg17ß[¯Cs¯g ãÒj¨ÈÉE¦¦––”I¹E˜ ÄI/ÊÆ­:³ºžŸCØÄÕÔ*Ï”¤GeŠ} c¾tÚ­£ñ6z׋u¾ éþÈ]Av¶_Ç~o6x^裑=G gB.ç¶–”`‚Ô™$ùÓö ‡@H…öü#æ°ló¸WRUMpÜž-Ó–ÅΑ¡¸ ‰æày¹·wHº¹Ý'0)(*NNLÈ`kÖ[ëJJ¢4åìÝÅDDð5¥€ÃÅnJ‰Ššœ›Éy©µySMMÂÃyŽå\^uöÃ+P à &a™y{g&œ{gøÇðÑ"õr±ÍÍyeVÈ3|~=½¢*»ôÌ¿¹I¬Úº)poÌ„åhH‡çCEròïaA07TOò£É’â÷™ý}ø}!Q];ª¢¢••Œ‡µb}t……–ÁxL¹ÕÕÑŽêJJ8|è\OmÓÅ«­û7Ȥn\ï?|ÐNdæààX_Yöü¿{@·HJJ‚ ê)@AAzùŠ®?‘-J(/™Ê•ð¤233Ð"K8ìèóçÏŸˆ?ONO%ååäHhh$ŸWù|à3(ß÷çËf5z-„¾Ô~Y»ÝŸÒõZÁþ~Ä.©=ïeDDdddû«S—¿[o®žï»‚™Ñ(QhéV9ù £Q â´ûã¶!w'ù—ØŠ‰wþZG#îTÇ@t˜ÕŠ”$ÏÏ^KŠÞ.CtEEƒ¿œ˜èÄÁÉÓn£íþïô@_(ÉŽ‡! M°X~騰mv€(4îí |(%ÅïÞnó=ƒÏ €;;˜Î„c¾Æ,5b|ç ÕÏÀ@O8o^LœhHvL_jjZÞ¾¹ÄnÚHò1õÖV†×¯3Ð!„-ÏÉÙ4ôü€µµÎ°ÿox:2òg‹{º¯¯¡€Àþùö­D²æäÌu´Äîöùóò¼ö»;%`•N„a0é4¬Uí#›î/ÓÓ_¼pû0Ðã_˰q•W¢m6Ì¡¡ž¦½G2³˜ ÿ°]]š wùã·4KÜO‘ÑÐçä@îÀè?ÁÂÂÃ#”—Y©¶ÜQ&Hô€Hx ¾_C#®]išµ-åyô}Œ‡è`²Íä+¤¸QRqþ4…ååfbFz¼â1Û³5ø'!++ëe‘ö°/*>ÉŒË3Êìå£ °ääøŸžF>N %pñ5亶gê|w1a6«U¬íÃÃiG,†´C ™uu­°—$ãWÄx çmë>¼«³bÆìAòöOç÷‡ 4­Ö‡/‰ï`6~h‘` þ\³~L`øÕ…²¶õ³çæ¦û· ÃëœÒZ¿q(NRLÿÓó°,¹ÅwøÚ×÷¢ð(ïæW´ørX¼æÊuqÈä„ô6=ÛÂÃÇ$^çä|Œâ79¸Žº€–ÒXŠà/øá>°*šM¬& »»ýQi! víóÂB p2¥ê¸™…”fœ/¹µï[P³¾={ÏÉÙæ †é¾ r÷šå.Ýu HÂ"å&`@I™C ¥îõðŽWk¤Vu^×ëöWn.ðr„¼­¿?œ~M«®­åq½øÍ¿{«F¨¤\çq?£ ôòÐÐZÑÐ\öËÜIçƒ51ÂÃó40èx…ÕÅÏÇÄdE…ôzÏ_GŸÌLçýt[ž©Užùò]¢¼|uRW¾‚ýù¿Y6‚J§²«± ÷G·4q99ʤ¤½½®\©9y¬#e†B2LæÏÍÕÕÍÍ ……¾ü|‚‡tBJJ_¿}ûª›–ÖVç‹öùóg˜Þ4 ö&³'J¸ÆtvßÝù[-Û¦1 %ˆÒu˜Ôq$_ÄzÞ)ˆæd ø!+ÈE¦§\ˆ†à‘’R>vÿ¨e±U˜BðzîþóÇŠ’2U>–:ì=}¸(]^I‹×­­ÏÑ6Ri]m]”ÉóPŸpyÅ8·Mgìºî»wjÇË÷'ÇmóóÕ± pHÕªUÑ»Òýú{Û£ŠÜµ ù¢hˆŸ4öwÆýqézýýË~ô y“¦S¸ž¬=Åa…ÕøMA¼`@a>ÈòóMäx»Ðûß Èv ‰w—¬[[þš­SæCm¬v¹×›ƒc ˼ËaJŠŠÓHíã…—·vŠÆ;IááÑÿþ9bEU€:DN¶™Ì¹r¬ŒœÀám3Xž½·µ4áZ9%‚†z~¸uü÷H•î0¶ÔxÖÞŒšø´+™àçלý~FªK¦ ?Jþ«á¿:réæîžŒ@lo§ñ|ø¬\Öš_`’È¡Ø3=m=SÌ@=7íKKK»`—õúwúZº%êbņ’H?fÀÄ©.q[ œº¸ãÒ°ÑÉ Kci©ßÁCÜbÁ0iVuMŒ Ùߘh²ôá_Y[›ÑÃ)n® Ò9×̱¬ƒËËY“X|êß, ^ãBêa^†¿à‡Â:1)žÆ³ŒlEÃEAž·Ôó±¼%{33ãÃè`\*Ïc|FÆÞ˜àyŽ_vãÂEÿ¶•ÁÃýFfiËXõ<_N&6,€ÏdZ=&›ùÊ[Û·~´z>nÁck‡æä00ÚWÊ 3V~Ò&ŽŽNO­q¤°ðhI–»ÌâbÇ=…7nnÜLL(Wm©«C,X((.ŽfáPmM÷)þ}(^^ävv(/¬¬.+K ÌDmÝ,§³5”{4\ºô 6áá;Ø_ó4[D€R*¾º0©mºw`fÞõ†Í”ñòÚÜõ†(¸¹ÂHÆe)šH’¼{g[-?8žeÐÝ]N 2³ÚÆúË¿­Á“;';[MÙéWQQFÁ.›¡yà”8¹ô7a! ‰¥™a}FEUq7έkºuëú¹9I½Þr{1Ä–ö‹ÙÆø9t33Íâ×ß’b&=’^ Wó~¢++÷G›ÌÌâNàŽx  V«ø« ü‚Õ±P¹7®÷Šæ+ˆæÉeÈ鹸û³çñZÇ[„þU`æËÎ-ÛÍuPÒhÄZ¿D©-¾ý{¼ß¯©ñ¯zšVÍ4ž>8¨ÌÍeùu(\tõÆâÉX°{ñLð×4Ú–ù¹Ÿ|(ôk¦‘,5±ÿ»V-±‡…¶ì Ÿ--Ñ‘j$c¥þ4°Ub`EktIÃëzàSTÁjëãŸÑ²ôc~Iü\‹O%!æ&.~‚™\ÎåD¿ÜFm 26d¶Õ¶ãñÊ}‰úðò²Ñ÷øî±“þbU½«ƒŠnz½ÇÖïªo/cÇ]Ê29Y»iŽV#˜'O‘–Våo“uGF’^g犳«ßïtDXh¨Õœ Š9˜˜µ•ï÷ÒxOÿŠ”»œ¯î(°þùó031!Eö×ÀÀüéÇפWµbâ^‰ñÉ_ßy\QÛ‘ãÀ´«œž6ÐÒþvz$µÆèY1RóârT¦„®÷é´dd¼¥3›333GæÙËëëïζ îîþ,ÛÖ ‡ñ4;ì//Ö¹±9• xØô¶•}–‘A__:®†u¶¬­Ùíš;A"Ûí ði9êt‚oÏî+,ìë㺽ñz}D)<„A]ë‚BþŸ¦ÌL>'Âî^?w²þp‹¾êÂÑÏ6—óËü²wøê’’}ó‹û»ûEÖ}hÓi ƾBÆL‚µQòÞu×™9⺴kd.##Õ”¯."!c/7SÆb¦U10~P)k”£B«l'ñ+Ͼg¨Èàãš_m0y¾JšË½^öe[uË„Iõ^_ØGРÔjʤSÿª(Ë&kÕ ãääÖÕõ,¶s°Œ•P«³TbíûÂZ;CA8þ4˜+Ík¨›±»e0Xì19ó-4àörûÿh’ùÛѶU×yÃNáZÛ‹Þ¶_þh¬•Îh¯Ïìì^ó•_™ªlò¤é|)_A–_zã™”j? ÐõÉ óÝåKƒ£¿¹ï"Õï –5]¨­9ý,šdV~(W&•¥ÈëUš)“1^Xíˤ¦˜Ìæî¯_Í.çŠ0}ö Á„Mf“Ÿ˜Èó Z¼~çláIJº\­°<ø®ôlì™æ 9jrógȈ‹{Õ$Œí}‚ƒ‹i+ÓÆg• õÀq±zíÛh<î[Xè·c, åè2IgMåu²¿¨«ž:;Uí·k…è°¼ÜÍâåâXm£ [íüGÎîý:òê0ÈÞv‚×Z‡GÝCãe³àã=±¼œceר®Ç‹9À› S:ÄZ€§RÐÆfó' ZÚ;`ûU¶÷ÞõHæIѨ–mºF³±¿ÀÅÀ8¹ÔlV@¾¸§Ž²¡Aïä5Ç£üðàÝ̲ŧ`eYYV³™SÕª^ëÁ6DÈ&Öyr2tqñ§d®†x§•J¨ª—‘¦56þ{…uu¼l¶û¿}{ 2Ø—§.7°6vÙ“Pâвs<˜™Î]ÎºÍ–ØØqÚ쯱Ðwâr§§ \Î_›<–¨[=?^ ¹¸ÐX¿€ŽúÎ{vALNnÁö²°¨¢Âõ˜¸ÆÑÂZ^^]fÌöœ¼šü@‰ú10—ÿW žýýÍ[—€,'åÇÕvz êãó¼;)^RâP>ýuµ»o›ƒAM}Ÿ€·±0bÀç 3ÆûáCÙÍÍ îÕú_Ê5A2LƒÇ;|4âÜN#^¯'Øâ {>yy-YÙ‹Ÿ/8Ñ";€ŒÅÔÕEA™€àZo%üNêloßÇ{x€×ÓÐD™×µ•ÔfþRM‚ȨߟÎÃ-&bl &g‡É´M]ÝC©&à$èÈŸ>òÆ’Á‰šéÿFm§¢ ¤¤ œÒMY8Zµ°´$G?±µmmÛåT¿Ë±ßÊTtë-Ô»oN_bªôA¥£þyë°¹Q¨¨Œ€Ft2Ê{Ðêþ‚®¸¯ mé{º¤Yãh´íH:™½½µo¨~®´P];%òx`ÏØ<í¤yeff1i7ÏuÌå=N+¾ˆ}W¼Ò†»¼,ƒ…†‰:;£¬_ƒm*?ij}Z¶·WÙâ5Õás­Ýúp±3þ ¤†ea!m [ŠÎ–Ç¢Tæ¨Î*|V½‘h8¤Ö:^÷ú;¯T‡ç§È,R«Ð£Q…èpž¼zë­…Znnq_—–^ÖÀ ¥åq‹˜÷ éìå.vÄåŸaf:­àÑÚû!¬Fâ’FÛ­/ŠŠ§oº{ü)ÙgÓi&ë=8c¾¶«ªJ²y­ü@º*761FÏ.C¢¼`fñ‘#hí” F<ä €ƒ‡…ãÞîΑ þøù³¾9µ “‰±ñãÙ§GŸ¥ZÒ«³gÿôálRžÎùª«OŸÈшšÑ”• }åoWW¤´Úž^î‚Ö˜½øÛ+hào=_¡Jz`0þ2éÚÜR6…c§Ã¥²²«_¾l·hanormoÎÔàÅ{8™÷–òÍ‚„'ÆÁ:k™|^a|BH°§UÖR‹¡„uð¨d¥* (ûlrŒ—mßïåä'/6Esë®IŠ} †ƒw†fn²BBg«^qH¯NõóŒØF–4H)÷6þ zqänOÓÞoÒP÷žŸO·Þ=4P~¹³³k ˜[nÚÆ{›ÿ0°ÐâOä·c³˜¯úœ"ìù­(3, p®îþöUçb!Gñ~ÂaÕÐöúè>TH…Èœ)ÕÊýû÷Ô8åüÜÜæ`d£8HJÔäÔÂB®ÇýѫרµÿíÙ†ÌÁý!‚ð¡o>ÜæözÜ”ÃßÛåmÙDòî£ÃáÂkTJœfûž‰³?UFê;Ã’^ïJ^'¹>¡üÿ­Œ¸Á™)P>Òƒ-*ê„«=8À>•Ç¿>]D×ÜBld@¨¯Eo~:5 ÑsP¼Þ•ÿˆJÈaÜhsçLzT:Q[]Ÿ‰ùÅÁGSŠœÃù¤µÍëûWo»4Gï àe °B²¤L†Á?·º5>ÓîG~Œ«®Æ††Ñd3Ë×rãTU¾ö®½:‰ ýxvN51!VXødT]˜˜ˆ}oä¡}•™ytuè¤\J¦¬4s*‚Àgn>óßâ}yv6êƒá‘”:^ŽÞfóLyòˆ––ÔÖÖרne%åå+†&%Ä-ÂBB‘I…¯€.±Û¾;šcpš.Ü}¹ 3*ƒ½ÜÌþ0’2®èêJZ ¹zÙ陜Üf<ÞS_?¬A„aöO2`pw)4´ÆœWP,­pÑ_ëߨYxoKÑ/†%‰x¥ •W$Ô›Ï+°³§Æ œ5\d&#:0ÀƒB‚æÕd¡.¨›Ázþ³"xd ï_'ë´£c>š[/Ìï¾B²k‡æfé&µø”'Ý—Êñæüæ´wÿ—BÄ«µ>³åA™ ÓÎ ØùeùàOÂJDÄþ')…NÀæÁ¯©ŠªI@Äßͬ› ˜ê7Æ_ P_cbzqªÅðg˜šjV|_ht¨z™ür“1kUÊå‰K[TÔ} RT 습E‚p’ ‹ÚDìr…„{g„ß½Sks¿}ÊÃðéíÝ;:úêHdíY÷kþq‰ø`Š^ÿU¹¦fPÄøN9=ë\é¥SuÔ75ö²ë0S+òªõv=óõÿCóÓƒƒwêu+Z-w_ø¤$ œim‚êüäcj*<Ì_ÈQAifž+'Ï+$d¸Ñþs«^GâŒaf)-Ig \ÁïßÞa£˜^€‹À§™‚œWÂýÐ ç¿5T†LL[k‚ºT‡ù¦Æ7@°Áíº¥¨èC² o]+Ù{ú“»Ë¯ïÚ¤ñÂ.ÿ ¢B1@ûU¶?×’Ùß÷GMyÇà^ÿI+´jŒö,YO¸"­*ãü¼ªö·oo÷5Ì•v­ò.LtEÔñ£EžDä䯖=r“’0J ôÚ}ÿ.$hrrîààY·ÔD|T4vd46#½LΣUKÔdž^Q>NmÂ[¼Íz³îî1úsLk ¬¨ ·+•£U/éoßæ^nw¹|~™‹2 Ñ4I RU Ç&&ZÍUu€W˜rÕ]ç)ƒ{VúúÒ 1D¦üHÄ-æÄN¨¨È,(ØÜàz)¤ªz8U@GËÞ9}O4^Kjañ0ôÞc–ÙkNs¤ž‘ÉÕ–¹cc³q´=Ò ™{¦lf3o)º«äž$zƒ#0Þ¨°ë­òeg7·¸§ò·çoÃz÷(•&+ihîâQÒÑ–”¼¾ ‚ad¥Æ\õ«çíË®z(¯ ÁL6NÏL¼ÝŒâ¥s‰I`÷&'Û””fHƒqiié64 [šƒôÞÑKÝꡤ²ÝÙ›ÄêûãÇhV<‘Ž^Öþž)"Ó{×Ý>L»sù2íãØ8ÜÝǬ‘·wÉg{Ó´ÿà6É0?ÿÎÆö‘½á«¬ìÔˆåÙßž¨·Îð¨Oßòê¼Ñˆ½n¦ ù‹ü&÷>y5XŸíNš# <{CŒT,aØp}ùl"Õ.Ö:àwôàšaŠ ?ތ痴ŒÎ:í>ÜŽq÷Ÿ²X6ßžèª þjÊÍuC°oþÕ?5^øçüD÷®7„µºÆ¿Íù4ðEaNÎ 8 )Ào SþííÙÍͯçD³½lí†B‚›£"k¯sãE¶7ÎÉÏ<ä&Á ”Òx•}ýZ_½5±´deÀ3³*C µ“¹>Æx´dš/_ÿÆÏoÉßYëyÁÝþéþbqñH¸Hôýõ,ÒË-TH1ä#f{V©†‹çÅNWu5ŒBWéqòáÙV7 ÂÑã}Ù~±ªžñµý»’»¼GÔxµ˜õ½½D½ï•™™<ŸÈ6å (ˆÂ²dò«é$S‹í·G8Ì7*$\ïf×Ö¢ëä_Á&ÇLÃ’“?2èéVx ‘`KÁâÕØh~Lìp²ö¸¹ùxl0K ‹Íøø?ÞÞÙuVmTâs RÕU“>“†µ=ù,Qww3xL¡»ûEÉ<-ÑŠóP:Í•• ìvîÂa±­žp÷^ÖÐkÇÔ`&À13Mzß!手 r:Ó# G‘gq†*rØýÆhûVô²¨OH5dÃÙæÀÁq'_@ñó}õ³Åó›šÁ£g8)Ί‹ki×룠ÊÊ_yÛænnÜ>°Uð.еäæÖòpfdÔHW‰%‡AÀºY]%8ïͽTJ » ÉBç÷‡Á˜É¾ÐC’×åð‰¯SC->Y­z6x>¸q6ÈSeÆÆ~Ï[/þùÓ'”¨F«–ºýyrÁ.[¬1„Þ/8ø¤Æ¬TIɰ±Í(ìãK‡s=ÿBi?t¿‘©t©Â›áûê5&\”›‹Ãíî÷¾ÿö\úñaΠš&„ˆ†É~gíîÇu[DÞzïæÏÊŸ'jêÏófwg¿ ß9¾Y³ãÀÝÛS»»È÷ó›ÉÈì„_Y9krmr:‘9;˜'7ïÅ¡{ò¨‡È?šL¨% l ¼¬=/fæ~bv­®¨¸û ·°X·:1‰ÿjK³½¡7$êüRˆ8fƒqò—û«ÿ~b¾Zr:Ê |-‘RøÓ}¬Êò[Q¤ˆ¾®®'Ý$ƒ^v_HÔFkê{QQ>/¯<¡ Zû[E)êˆ/,µ Z%¡¡W{gÞR´ËË!:ýõPDØÂç®1EƒâßÞKí­³ ø£VÖÍVÕÍf1ÇÌÛ]¯u仜Wÿ'?b{9wæ->],<‚¯Yß^6—–hy¨ºÍÁ¼µ¦E :51Ñv:¨/Éý„‚¿9‚}t´âaeÀ Å‚` MxŸp~Neg7ÄyÅÔÔø®°P ØÀû»Þ¥ÖGZFÛåþxŽ›\ Ù•Êž¥Å{ ‹ BTÿ“S›9º“ÂB¿â´ÿ¶å ¦¦¦H,× ÛÔTU€\¢Rޤ¢Ú7æ¼IL2kO42DÇùWVdv4)°·¯.Œn$G¤õÍŒr¾ÁÎR°» °íjò!!´n†íŸýº!—RHd“ ¸jK ¼‡…¦e`Ðs$"›•€ìÝfÜÎàx¯.#Óàî²¶Ñ—ú²ÈÔå­ºv͸æ9=òáCY®´òäX¸0:01Û£ŠF£ º)HïEê²sì„©µ-OîšóóÃfK[.ÎÕ{—/1ö AñõômGD£:m°õ*+\tõþãWTäŽûˆù ÓjÌW1­Î²èpol7‡ ÷}öXùˆn|aA[“ ¥ÔÅçK™'o_‰dÝÇ{¦;¿½¯+×ë+Ùè#¦Sû2ÞÁ'ÍåXõO¤­.Øô­måúF©¡Á»«<“O}T¿ƒšpt´¹Ž@B‘V·†|Ž–T‘8¡,á8 G¸„)ëmáøÐMLt©¨JÎΫ«#qé¿§áÊRLML¤U_2V+EH§QL=+š¸RRPŽ{ƒq ¬q``#Sóöè,‡û\bÌ:ƒ‚ò,—ÙÌéà +ãí¬ &4TuFhÑAäÉ“GEJж¼<>7o„ˆˆÄÒÝ…‰”ŽŽœMŸßÃÙ¼’–k²,ôÝáöhnfæP¸t<¤2"²ãN IyÒ¬aDË˨|½‡W_lgŒUR•TU½ög½ž=dµ´8 LH€7Šì8÷’Jó´_nTÝŸÅ'}^5ŒLÓ~ùØÑT­ÄX%9Åiï÷¿ÃÑyKÐ$ ‹wg[M e»s/š>’ë ÚÒ³¢Bu(nÌ+À™1Ã<Þ»¦fd©!qa¡ëÔy$ugàßÎP(þ³3JF¦¶šêj¬¢¦Æý—Õ”™¨¨O¾¾«zz¬¯‘õ=¯"R4 ÿ <š’}À< ‘ä²éÄYTh9ÝýW¨¨< Os·:¦J‚AG˜]£oÆ9Þ¡XÉxí£KAš5µpç. @õó½3W¨™ …²j\”]}ŠY¿þÞÉz­¦ÚË ƒ0}PQ”ˆr‚Pjjg@°â"~Œ8¢:>=Lnôe¥ñ,/<ëõ™|º½qqÙ²°HY”øÂü†Œ,}V‡îóçÑ‘£³õ.$B‚Ü—Pôú¼„âÕ«ñ¸;‡Æ(%* k»¤õ#¬(¥¼IƒŠ‡‡À¿M³» ˜™?+*´á•¸. ¥pZ s=YË/7›Õ²\%â»OîVi´?‹ =X¶;ÿWl[Bö¤ ª¿ˆâ'òãµ\%SÓD{‡ëºêðƇÂââþź¦&gƒ”Ø™Öþ~‡ v$ï˜ÿIè×(šê‹\•EEë€Ù<šhW?ÉÿqòÿåWztº&uœG(ãdÎ$+åWÁ Á"—LãÆwÚm.¸¸ Ò®s¢þÆš—¤"hÆC­ëy4mžjêo7{^µé­05E9¹pY:§1Ö:<®—Ý€Ýã6ƒMNÚ$¤«Q °·òØBÒ©Á<”µCü\$11(Ç+o$“r{ïÌ›¿ êl înp?z\CCåeMvµ}R{æ iN‚Óid¹yþb ê@1ò¼¯BB²œMâ±G†|$:‚$+‹n¾¾ÇËMÇÛ£icËæ‰êÅï"W ù›Ò3> Y|ò6àâ–äñ¤¶±kºÚ À5çB¨G¶€]ß9¬?Üyµ¥}m Bs¹2/*§çÝ—·yYIí줼®>8¨ÜÛû¶ù,\T©#ø¼7­¼ÚF'%2×;:jq%÷ßrW@d¤)lÇËÕe³‡ÌÒˆ)½®®Uû…ßy¤ÐPVú_îö••à7T//iÕ8—Gû„=Ú›žlr1Æ €åQ„%Î$öö¢€’úàÿ-§©-¼/áÒÌ·•¦ëÒª*¾>& ï’uRàJ##k_½zœ6BcL¸»µ{SAžžfNJ¼ë ZjnH¦[„Œ‘Ë@-Ñ1×Ìuv^_ßßÞ ^—åYØÁxö…"GGG×9Ÿæ)k†„L«žØšïÅ÷ö’'&-./-±ãî³iízvwitg=ÃûÝÚjåàGŒêÆTA¼|^êÃSœíý•wKÄ2×ÉBMœ?êòègçût«……þ—ufèHFF±˜ÿ-ð,î?zzÜ_59ìóßÜ"hµµfÞ·´3^^–Læ¦p«?Î1à÷òØå­kãáå””dKY|B>؇…ð…O¸œK•i°ƒgÙ'  ìs½¶ë²¼|Ús ZϺõÊJÐÁÁEù@÷{ffI@Áóo"¯v[­ýXÔb¾¶ <Ž+¾y#:3ZŸ#7®ZööÎۉLjÔÔÔœœœbQßb^øíýC¬”3z)9LØ=+SÝþ]þµF üÛèžÖ±! ý£°T‹[_d–‰ÑUZJj¤¯/o{ÃY]^>©ôèiaA ööø8«Oµñ'—3ïçÏtŸ ±Î™~òˆK?_aûÿÖ’l·.*ô vµS˜¶±->…ñ:X®pÑDþ|üÖªÝÄr³Þ’˜(Ñ,2Y0¼)=Ùéí„adœòÕ™³ŒñŽ]Yy«2Þ»ÎAÕöÿEæ „ÇYíþk5ïüVÌn›]‘BE9;u!¡¢Jޝo!mÿ *Á~[jïî’5•{13“dþ1‚ÀòlsàìLc…@A‹Gg¬¶Ž–ž ðo` lÁoÌh¨ž‚‹EØÎ²gÌd·ýÛ»Ëý"å²µ–bVZ gÇÍþ®P,ÑÍ-!­¶#K%ÒTJAï·µaaEýh›s=^ñOOßfgßúkR¸¸Ïñìçl‡T>ôd ¦éèä%¢~jãP³ “Èffr©°»Ô ±`‘`”e“ñY1É*Æì­:Ä`¡)(³Z.W~ïù¢²Ðe¶´TÚâªxs0ÿO·Kç+æüKOæQ t=«uvž¬gJ§:Wt%xñ¦S¸>{.ü€¹¦¤ÚÿŒMùÃûùáVÅÊÐËžIíò˜Ÿá/ Ïc|èÈ Â gzT$$$õjc ¤ŸPŽèÿ½ 騠e|Albš[F~Rä~’ÝgƒNc'C…Ëíê•€@fµ ƶ¼vÓÕÙé†=Ôƒƒ‰yc#°ï ØþnꟌòžëÖ¹ý10ôdbævYÿ ãW­Ïx¹X§=dÒÔ —™ñ×]ûZzzlŒÃt [§úú5àkqpË1óˬØÏëýü4ÂJZ!Ö°ùgÐGÂdO¬|¯ý~ ºë¤#ùÏÇ´à°ýxÿU8G6C&.fo¯2%ô˜ÿÒ£ß[C(ñj1?ø´ã¢ʺ9!Écï[Qðƒ¯B²£Oœ›ssùÃÂ(?(Éè4 ~¾*6‰QÈe{ëx¿TÓÍæê`2ô–OûeÑÀÄ$$mµ’HÚJx*3½¬&/¯èŠ %b‘߂͙™ù™™Êâ––ì“ÉááÑZµ ››ÑãžE2ÆŠŠ-I‹5çÛ¨„jùY0‹g°|Û#óêêihHnzÿÛÊú@ãÈË ,ÞéécÝ.] ¹ÔÜU½ŠŠ¢ÂT †06ÐPa™‰ìDaC#´òÊq%ÅÅYÃÕÇljýá?ÄÄ0 #{{÷LMåôzû­—zÍõ§gYgF,ñkë í6„y©¼ÏÅ••¨B˜Í{À`ÞÝ))*ŽÜ§ u÷ø‹‰ :²Ó%ˆåôöm«¨¦¼z¥Úcc… aØÚFDxu.>W®Ë2£ê‰MÀe“9Ñ Vý|8eh»?ÃIœö[ÈËŠi`„–ý¤ZȽ:ä­í Í(ý€f>“³"¿.ïΣR–Z¬Ú>ºØ5}y¿•>¨µ²¯°€µ#NžYO†b%5Ë¿â/ryL/-a_P6§f3oSxŸ§:t_»ÅyZ1ÝÞV}¦ÚW—’rqtœObõ-kË.™#dÔO–eãÌ_4ÖÓ­ßÛkX¢Â`ñèºñAþû™&$v¾yþ`<ëÂãþÈæ¢œ÷¿wŽÑúºO’‘‚|0¯àÌ“.7¬%!›uYmmÎÆ¯  _¯÷cìgåLOe7X}[¨1£ þ64¤C ¡Õ5ã<½Ø†{peß“–¯²jhsÓïÕkTCI–vôãUÜí±Nv‰’üüªò“=‡°Ao¥âxÖ¥†<·kÛ^ÿ(Ý.Ø‹KÅËKE“gñOòHHE m×Ça·U·×¢d¯¾÷ô<ÍÈ(«³dÖn´güÓ±þÝþ”ÇÜÂh»Îx¼éÛË FŸ6j«>á Y­¶öpÀíWWË Ãâ}AlÓù¡¯¿IX¼q¡¤«ë¡2·=8ˆËט )b°%-.ÂçãÊ6½.($Ä«ÕLøZ-TBºËT".&vu´Œ=uï_þ^‘zìøáñ[X˜Vóy“Í}Exx&æÍï߿‚pq¾¹rs¢#ÂÚÙ·=kÞ=Üž'î'¸—ævˆÛ±nÍFð³ñ§z´Øc ôO?‰Ü™©/ê*7´Ú<¦ƺř¶ÿÛTí³B00Ê« ÚŠvÅ÷Ä`d£š‡'7L¡ñÄÄ^K"þOòEEøu–(¼wë{Hß`ÏUÀ?ˆ{¥bÀ&0èE Ìi6u÷Yé>Ë:A^=œe.Öùûù}Oùsòý»¸©i¤r)W€C$:F›5ìÏ÷bBèØþ¤»ý¹Ÿlo¸……Õqrõ"€ä}…‡ÒË!2ÚÝÝíùp3> eaa¨_VVåÓ§OF£©1áá_ÑÉþïëi/»fJÔŸí¥ûÞ¶÷ò8ï:‘JI˜ŸVU é;x§‘¡ú‡ì–~ü‘´ÔêáÖñÎë–ìÛ·oúŒ \îˆÿô‘ûö¯[ÃØÔ'&õïBi_‡_;…9uæ!°DGe…„m›Y‘ßÝñÜÜ2½îª^ò!‹iYŽX·)lóšØ¬è §g~“"ù=2ÜúèŠOáUŸÕ'3꼞Üûÿx{wÜ]œ¿ïç}¦Žg9ÜÙ 0›Ñ×¢„Ä¿#kþÍŸ177÷Ëß_ö"½²²4=½2==²VØÊÓ®$"F¤+àW- ã£éÃlÙeü'ƒ×¯}]"‘“{@C­ž«•Y‘–½¹¹éïùü¹@³É±D­fïh¹ ñ'ˆ'ý1¦G›üe×x–ðÿ‹×šiX׺5òg‹ðý9×d£ñÚǧîî¿.÷,‡†-zÜÿƒÔKÑöœêþ¿ÛCÕ‹ÀÏ}m>ba‹¡âCaáDÖ7Ñ‚|J*ñÂ|1äžO¬;q­O\¤ˆ$ä¬æÃ‰xÀH8Xaaþ5’£‡ÄÂHqAÖT,ÞÝŽŒÀ ‡>»!*^?Ÿr:Zü&ýU™Ø­§ï±@m n0 –AQ"£Ùô:ø"Z0#P)ÚMõu„GZÂý½^jZYÞῼíËÙz»#öãö‘–m;Þ ]…h;ϧ‚Ÿ?åÇÇiFÞªª–()jöq"ùt|E¿ØW¦›ø> íê*¤§×·êE÷Áªîñññè訹¹922r4•›Ôã:¬.}E ÎÁá]¸r–»w.r:6…ÜYˆˆˆlnn†k¡­ôDhåååE¡*)+wÑK¼G‡W @9ÒMßjG`y?>;ët¹§øêUÀÁù[?V«•‡ýYºê‚wºººÂÂ/ï x´l]Xeý4I„ŒŒ  &ŸkJt4Ù‡P]åéé/`ÔÔØø[ð»›'¼wìWZð…ÞåS-ÉååzLt(1ÇÅ/ÌÈ~$ò¾± \ºêššñÜÁ……D}¾ç“uX¾ÜÜÜÐÐP Zl6z­ ùúfœvŽj«©‰½+ÿ¾=ú9LðXMM xú¿ÿ°vp½klôýäùi}wn³£ þd"áÒžœœDÇÆ¢Å™B糄œ]ìR;e˱]@ ÙððY˜yggJ¨ØØç}~æ.EÃAµ B§Srqeé›:ØÛ“Xa`­øž0Ï^w*  ó¢^>A:m0&Zð³ M]y¹µ­-% Ýs ¤$*JÞÆÆFK+ÕÇÇ'!aÞšÛ|¹qz~¾¡øåøÓÓcn`f¶o¢óÖÑÁÁÁÆ&ÉHjü‹°Åóѵºà®d17Ðv.Õ,á0~ô©•§ãô·k\ Üþ-,.ª«¨_„<+÷B ï¯éÀAA16;Ûæ~ËË·XkÑävméñßad´¿<"ogA¦ g\™>«ºyxø¸;IéF˜Xä'éè›Â9 Ÿëh?¦ûäPùµŒ‰CQÁÛ×w`Âör¹ÉŠ“³Äå"Ü $ü×M¶^šHV­½µµJµ±,Ð’’!11Ó~(ø"}—ð‘b™ÂÓdx–K§Ozüo¯i鼿fYM ÉCï,...–›âüý…åäÎv'ó˜ ÿ¼e;Iá$!!áâ⸼¼¼|B/ú¥±± ³ËË¡©¡!B’'¦¥¬»ø#oܪÃþL†Ì´•¶2¨AVÖºðð1PW¬æséÅÅï¾pq¹áÎIKK píä÷gø¡·lsËË-F£D<<<¨¨¨@ ÖÖ²¼õÛØØÀ¥Õ褖Ãg£½àÿîðÚóâ³£Å,g‘ ~UücsÁ·A¤ú]%BárG¨Sú@± M β;SÅdŒ ù@N æƒË#aiÇÛ„Í7µ ð¹_ 'ä킌oð†¶JÊÊF‡‡-Ž–011ÇÇÇ}f—âãã…‚pNONØØØÍç€ú`ú‡ˆ(•Óé(\ T ;'çùÙÙÙéiÄ•èd@’gg¨æsžf®òøx÷þ hÀ”Þúy==˜˜›³(úàɵ‡kò¡_€¸=ߎªÍ‚ÙxšYLö~’ ÛÚB9ÿw8ПßÞ剓= Ȱ0 ¹”›í)Å/P1’dùj¾2­,”TT÷77á+:ô–––ôȧÎRR#ss*7Ïy¬?¾Ö{Ü_PË“LÊMO?¹Ø•Güéw/ ¤ ÀAmm- ¤¶]d9³ÝüÇô½kþ[jö°“³³ØèèvCÈs2&=2999EyE…¨ˆ—× çm@XáR&VV Ÿx§y~`îcúÔ@ââü«LÍ!ðë{©z1˜Q±%È#dyyù>¶´u]¢Øp­pÅä‡73]¤î[ƒQÎ\ºŒ)ˆü’»´P¯­‹€â+¹ Üo„ríÖz&ff¼®¿±Ëé7ãx³Ï0Òy±DUæÈuu¯WVž^%sîÕUX­òxx<ÞÝÝ%&&þ%P_Þ„I:¥Ðš2ID¦æu†»ÅÃvš¨t·ÅR™Íb33I»ðððÌÍÍSRR`ïïîeõôô<ÞœÂøw‰Š‰ñ£Y"W©ôeafBöžoúØ÷LõBÍ+Q¤W…ç\iii è,zd`ÄÄűº?¨?±ßÕŽ“)g—iãßÜ^ÿµ¾Å:ú1áí‰Éä¾6b|ŽGtøüS£èïfYyNÎåÃ[TäkòÉW¯íÃ× úÔq¬ 1ï…¼t§>À!³Î´w`ÐêxQCÝ1Ep¿Ë)ñ°ù¾ Z¶º®.))ÉÎÚäéås—rr|í—FF,¿“FÂÙf¾Ê7'ᛦüuVÃ@Jª×ŒR^ZZм„¡!(¯§f ³½¹ÞúådgÃ#(¶¸œÃÿL_ç¯É¯ ]@+ô¤‹Í\u½±C`ë=[wæJ ;ž.R¦GÞßÛKe·ó³Ì÷ííã úÔFb1o;Ù½ùOß5B'…,¨°¹•‰`ÃÝOø¾íýl¡H,ÕÁÝ¥²…ùÏOó`ž’Þú”Œ±Cøøø‹ÞÃMEEf'‰œÖÍUUQMìÃ/¾ÀUSTUV¢þ_ñà­ËÆÎî2ž)„ƒƒ“$øõǨ…Ûû{tX¾±À7T~XôK*`Šmw!b "þXrrúKhÜݳ@H °^¹*}¸( …þw 0i(–æþd½ ¬¬¬,ùVKõ ÎöŽŽWêò‘þËÖi¿CBPÞÁ‚QFˆ.ªq˜òîܶŒñy…Ë6í ‹sz¼»ÔnuÿP°×ÚÞ49’Ib×I8 ÓŠê—Û7¯ü‡¶·WÕ5ôSdPË¥¤´¦Óþ«‡ƒs¥³5 2…ÔQzdPê6Oîu½½$Â!¨7ŸTÌì/²oD ºBzþüAQJ"Å50@ùû·Y¤ñƒp¡ßÍ~ƒ‡‡×Ô\ÞÙÙ‰ŒÄŒ&êõ¿a|nî–î À@ÏÛ3ƒµQ€àÿå9co[-0ué± ñ]HE+#c pàhhʲ²ØØd„â6”£$(!BKNÇ­YÿÒ7á¸í” oÚSÖç¶™`ùœ¹ˆ~¦'&¾3æ’ñRüB/££§çùÀ5¸ Áòçˆ} )|;„å½ÑV¦Z•›½ $0 б÷UÕbÀ [Z¢ó £ÿÚ^ëð155ÍùïßÀÐ >™%{™Îh¯6"R¸ äÃýw/ð€Âc¦£áåõÌ;Ý©Wu*p±Å:¾¼Lþ¾œ•–Öè{Þä|äËBVCª”—Ì|,”dqà¸öï0­ëñ˜ EÄÅŸY8>㊺»»8”“‹LN&€åëòÈìòG•q †}{{KII ð’þî?8=ª2î¯ø–Š Ð¿££ˆå2­7jº7Ní¶G¶œ¿~ýnǺ?6*AH_5¢T[::úâ`o/EŸ7R…²®—6 P¸ÎjÕÒÊÊÉÚúæüHJËŽt÷öŒÈWÑ _ w®rñè¡õš3ò`?Kb¿c8˜¹S¿X>i3*ÓëÍíÙ‘¤:£Nž^û+ dzz,À±ßŒ{‡‡¹Ïv/]ì¨ú·071ÑýþÃåŒ ¹ €555*ÏöÐ?¬˜Õ6™Ì¥Q¯¥¦¡AùÿEWOºÄx!Pæ“ï[]/Ÿ~92"e*ðýÿÎ,1‘ã—ïrW¯d%±dF4pä¤bÔˆ—·m¾ÊˆN¥|­n+wSíÍ€ƒ/€×ýf·×HmÒ­Tï×c‡’L:°/¨oôJξ_Ò`¹/ËÏÏ¿žõéá"x¤5ª—­ÏÏÌïæq+½26¥CQÒoC(#ü؆ˡ烀@ÎѶD¤¶¶cV;ÅW¡8Jþµí°ôzýq$Ü¿ä«o _á¾Òb¶eçä°³³3ù253ãêìl>We"„þKIr617Ç£OÅɉ4Á/3øÛFLìåsEçæç?~ü¸ñ÷ï{DL,,Ÿ÷¿ÃÂÊ23ÿŽb ðóE¼ý'ëí[É{xåö…‰È×ð>#ÒþRŠ›™À#57sÑÓ»è7¡WQþg±‚tl‘“…„„›ª¨0+Ë :%>á³×‚–×/4è;¾m þ¼ÂÏÐ00ß”•i9î†v$¡ Ø 2ï vÛMDrò¼_¿º'rÄ]œC Øù9,Œ_ý…Þ Hãåtv6$)ù OTXUUQ~>ÐÜå55¾ïó›› ~¦76rÈÊŽó.æåæX]©·éYPÛE´/åßQ`Æ2áŠÃ‹Î¾xKZóùPBΙRMñÝ øþÎΛ=ÅõVõÆÆ822®8ÎVƒ¡’.ÿ,6C%G‡Ë…€ÀÀ_¿GÁ/É‹…>ì$‹ƒó:ÐÓËPP™Q|Î-"Ö)üñC÷­ ÄTÏÜ8'gg¶ ~È&”Oe„§ÇÚÉz~ròÞŽq\@Š”Ñj/äퟶ¡Ëv¤>HKù‰ƒ£ãH<ƒÞI“Wª–¦& …&`õ]“-444V†CäÐfØþE-¥üÞôÎB$è¿§§ÛÄÄ÷ÅÅ÷E“º*+ïjk‰àáƒ#†{WW·ÿíy`d„qòrÜÚ8gdc£a:ËÄD:ÍÛWîí`+Æ×KEH§éºÔù=§h¿qà"ƒý)˜¸v/csó4&爯PPPdþ'o¨”UoNAªR ö…ÊËȼmÏ@üùö­÷ù{ðŸ20ß¾Ác`µR¢=¬ßza¡öím Üêù¹™ÿÊôÔôîanoß¾ÊÊ:`®ÿgg7êý¾Îù¶'ˆnµùóÓ~Yˆ'2Ä›€ž^§|®g`À8§¯¼à 2&$,Œ†Xýã}ÿÂËáú pDår#pt¢‡‡‡ ývdý>àdÉ Éno0"´ºÖqkÛkt´lx¸$ ôÉö–ÕO# ‚Šò5Z71Q**0§w:‡jh<_˜ƒ½!S¨O˜ˆ7­«Û©¹ù‘¢t¨Z‹EÇ‹YjumíÕùyvëæšš˜ŸéÞÞÞ!Ô/ÿŠƒjR¤P¦öQêè›ý¡¸ÂÑ´6Û³á>òŒ††ªôôÚÆ»Ù½i$åRr÷†¹`¼âþ×ðOÁ……°¤¤¦¦~("fPoÐñ"à„;»UåÞ9&öîÀ½dgg­´ˆs€ŒQ¿ž”DEIiª§÷â°Á¬m¥ä•ãä”ãH’Գʼ\¾üûõ«ŸU‹¡ðu©ÆçÒâfž× LóáŠHà ðM,íQÑÏÐ`ÒƒP÷èÿ›ù½ªjÇÄ'ÌÀ¼–±™Y\tôà @߃QùoÎ(/Ó"¡¢Ê/¡Y\Zº¼«ÙM;<^õz<É8˜.ú™Ä…÷–d‘2F“’mO \¾Øîk½™ÞÞ³ôÈ>kÚD¨ûðDRÒ `OÇšYm%Òhggbáùô–‡té%胉kæƒñ¨\]ÅNo´£°~sÄÇïl{5Ôá¢é ~}^`ÓO¸½»ç+èÿ0¤6ØÝ­ÿýå`¼-ýCº!¡¤Ä`h˜:3£uŒâX$qyu•~¤ê-ÞÛ¹W¿BeÕ+Ë/®Y;­á2Ï´"./6 1üû“p{½úÚ Øp>`WÛžÃ÷÷“¾xp샊‘ŸoÛEÙ\ðfl8DëÐÿùÓìá±ÃßÏ™¦\‚y}JC÷Ü Ó¡Áèˆ Ç-GKLæñpÌ•)z›øïßJ‡iBЛ·’N¬“ç“•¨¨ö1·Á²Êʸ&o aŸ56íôóu³e^låú#k±¼˜›jâQ‘‘{{á "ôšË q×Tte µµ@§ÊŠNvvú˜Èåspžzzú>" Ñêêô­Ü<=VÆÆj ïF$a žìNª>>ÂÊËÛˆŠŽ ˆÁ‰¡pXÖ†ÃÀÄô‰lÓb¹Ë:<Éͯµµ¹µ• –@SdTPd’tj0»õ{ÛŽŸ ïÞMMç(•bçuŸÃ7jŒô…¡„yLct~‡3^N\¹¥¦¢b³x7Ô¶õÒïL/¾㿃O­ç´âRc &úI€¿Ñ¿ÝÉoêµÅoïi4½x;–³BGCð…_[ºß×"ÿäÁÁ­ûý›Z^ó£¿)äV×Ððà˜ü} 4ý¾í6¼ß‚s]¤/÷ƒpëÞáS} 1*L/,ÛÂps½›œ¤ÂĬåebn»žÑQ1aavÈÙäÔTD´B|¼Jx²ÆÜø8Õ‡#ÃÜౡÁבû—qtŠ‹µ·H¯GZÝf]G’mâôf§4þ b§ééV˜nÆVVh·˜úõˆ³¡ßÞ9T„ÎLõ&®ŒMF9Ù¹M-,ôt0LH%EDðII‰HIõK6•–Æè3ÚÙ¹U{yÝ$2G66ÚîÏ x·pLÓ³j¦¢26ÃîÑ:9¯R«Ôç™ë |óïÅ=|û.i'ÛÝÙi±Ù˜Œ!'æyXÛ+¼ÜÄîkû´†›˜¦=ÔÙIö‰ÅhÓp~^#ŒÜÐP)7'FJÙ»’ž‰éê ë„þóÝ݉£cGEÅüõ‘*Ì=bЬ††ÓFoÑå~ÙàñéÉoc“Ý…6íëóm½ÏŸ‰,-lmù7+ÚÝŒŒÔÔÞs-éB_a þœ›Wýò§§[?¬¢åÇ~ÛJÿêjã§ÇuMM¬·ÑOc‘~ï)*tòNNmTÔJ_#U°Ûü Æ€åKM۵õ¯3op8^iêí¯ê‚| kn–qo.ª¿Y Á/ƒƒmæSCUS©à/.,,(-}còÒ^¡Ã„0Ú;\ÂÁåhµ¥þêøÊÂbZ[kF¾§¦¡ANËã4e”°ú[–/8ye¥ÂÆÆœ‹ÄÛ¶¼œþò2$ÕAVV^½:tª¬*êê<ˆ£}.ä¼vÚ=šFJöæ&ùì,mi‰ 4tqɬ±1u"O ÃËGŒ\ÓQàpqf,¸¸|C@(ðŸó[HÍ£‘?íí„ ªDDãè’JU>°¬ïú¨VÍ)*àðx¥V¹œWž¦ °wë7 œµVWOÄÇËç}on&4ji\/!-í¹ðGÌ><žÛÍÕ8ÿpkèU_(÷ð@ÛÌïB¯uñXD&zÊÊÂêš·DÞr/+íw÷¯tuÓh5~TUÊÙ8>™ÍP_‰^ݪGåïPÐ’•”hòz>˜U|Bÿ=??-*ê 0ëû‘…yQ4!Àr‚ƇŒ¬×e…¦®gÝ&S'AË# q*ÐÍX˜ ƒ]ÉÈnìí7lËŒ‚zÕU6*Nœ«¬LÃÊz(zå×Ckh`àzJ2»ä¾57ÊH/£Òªaþüd-Ð…ßäXp¼˜Ç}›Mù%$5µ9nv#4tå•‘‰®‘QÇ÷œ •ÝÔÔ§8ºsÒÉå%"BžAiéŽ~ãyÐÕ©ŠØ5€`ëL††F[µUœ§WWÅ!˜ÈŠ0ÊßI^Zz§C•ŽƒŒV“O ¡éÅ N‹+)YÎͤ¥MIJ[zÄ¢¾ú +Cž´ZT’†¡ý„¨w9[­ï™œõä_ñKKÃÞ½[à° wä€÷‘URÂÁÄ$ÉÊ.¥5„†Jd¯J öýªM ƒ„Á¡÷øM 𖋆¦Ø™ W™Žt£ž×ÙÁáÒ¸½&”Ô¡zÝŠ©Å!*Zñ´5òWšÕVæuë[6'4mÝ·Z•‚sí_ù”•CÓÒþNkît»ârâZì3‚uÇñëîýT_RÂIýÇzû›`6@LôµFÛ©Ðd$N‹Ó}弟û³4"B^üââÊææŽ‚‚®®®=Í.ÉI,4Ë=ù CÞ¯äÕÍõ°.ͺrÄÕ¶Âc}ÈPQ?.ø€Õ< ¡Žf€É‡@äõJõ¸»8_X0ÄŠÚ²´ÜwvaïŸóRTŒ*§¿î·°µ-Dˆû€¹ž™yL§µùƒÂ£º£‡¹¤þ¦ï—ôj““•¤$ŠjôÅ=ó—rV©ý½ï‰Lyêrg¸ª„ µ,3î–Ÿ ´54¸ÞZÒþ™Ÿ·\€…Í'Ì]™èTSç„ñéø“8=Ô3Ý5¼Ìä(>6³áÌ!Ù75õ%)~I_§]P¸IF—å=,4S¦?•ˆH?MÉößÄÒÌÊ“N8¬³XR¼„™™RBNh;;³£•­&¥@åwoû99üB¹g é¿}DÒÐ$ÞÛ×®­’_mÓ6šJWkÔ¿:Ø¥RúÝÓc5.Ø :uÉ=§áv03“8"/ŒØh©þTLÕåGÌ´)!aCÁ-·<6Ti>Ŷ€êÜ,'›±³ë#£Ôxv8ÀMV«OJ !oq@UÊàDÚlÌ×ïíiïÏÒ¹ÜXÏæ×Ÿží+¹¹æ/(b!>»| éÐinÑ›)‰ÒÕ„’QüôÑS³³›ý%}}zšíÝØ837wãÏ1©“ÆÆ ààh¹Žu Þ6Çóøjjë¬Ô%?ÝxuÂÂ6³;ìÆìK¥±dŸ=ÚÐ[¬Ë…7çòæÍagçRbℚÚˆC{ÊÊÍ]MG÷&P‚æaDóçg#üj¨:Åᆞ8¨Êc B‰·äÒ–j rɃA_.éììÚjkSó)ŒLL ¯yVU2¶¸'˜²`˜å†œXûß_óp^}ù\p²§(6˜õÆÞa«¥E‘ù¹øÅªè©fdT‚1qIš§ã”,= ´Qdyy¤ Ew÷M÷t8¯ç[[YéÑ~:íÖÛ;µ‘q"/Ó~%¥“íÑ«»;¥38H?b5”LøÔT$yêl÷Ùɨ닩œðY'KËáFÜÉ ÔÐÂFûÝŠd0:ôoµµƒ.÷ãdøßê|_jº>ú“° ——Ïe).Ž‹GŒ—pze±ŒgâÿÚlVLÖÂKKå¦kìÄ/9ym¹iñÛr_ß6»/å瀻[ÕáD¡£YŸè¿dÓàAU’`—TTä—·«ˆ½è‡£ËcìéqP¯]Jf ;òP§-Ý‚ –RTœLbýȦá)&†Œš™‰h™:9-.·¯ïêðŸ‡úú\ß_srp ùYY×ãYšQ»›‹u¹-nÄ€çëæ³˜§SÛg_>•‰¨ÍmVMÞŽÁÁ4(X Y¢¨ÌJ³Å5£æòäpÏ{Ê„æÍ­é…9ØË«¿µ4꟫ L'—–>Óxì¬wiššF¾˜2?ÐOؘkº9YÈó¾iøûÓ ÉÃÿµ¾]¬…‹ŽMÅûPäef6û·Ç_'‘﹡°ÒÍmÃJË9ÿf·ŽÈß »’JÊÙ>‰±™™ó3KO`–¤¤>……¿2Ö-,T)Ýh–ªwïn—Јø›[¿òu8!!y¡¢^¹]›ÃÂ5 +0n²`ÅÝ ȼYè,dd:W¯6Ö².¿ü%ω@ÜÞšFŽfcË-Q%Í(hp^æHÈ£IC¶ZÁ^œƒ¥¢øs}½*õ¡ËØþ×h{ŒN;ÔÎ.Œ ÁÛx×3ýàââöñ\Õèp~ùóæÊ³ŸQ䬲ºÅOžçÛó||&»»opÏÔTKXTÜl¤[ÏWmC¡Æ¯gìïÜàNØæ‡$/.“ÄÇgÎö…@ /÷ÏwåoìNWb Å8ôßSQ‰ìbïø<Ê;$6ö¯N£ÄGW§]£¹è)vƒ)¨^I)©šÚÚÑ&'-lÉÛ•Å ¯ó\¶OŸöoÏ  äç~*(£++¢Î8K ¸Þl³Á¬µ¢ŠF¼¥¤®åú¼ê»\G•ñ/ó˜hÏšÖV‹'÷#f3²rSŽ‚ö,abn.K.¯•_¶®wúhilãS .g-opgçÏÓëëG†-RZZz§b¹]ÿm 5OMÁLT§¯¹Y[/D‘'˜›ÿátÌ?šËxEp׃ÜÕÚ*j4Ò÷–B£^‡1‡Z&‰U[»\ç¨Á®WéÿT>)Óùât­¶¨èE;·ÁÜÞlß¶ÂÔvÄñ[Ë%g‡£¥ §§g2o}ýn ®®±b©1BC–%u¼+&¦¦>P¹±q-ñ |˜ç$Gÿ Â/$˜Ý汸¼\–Oa®“^n291_…$™_d¶\ºp±[šßäÓƒ5¢ËyîÍ™ülÖ#ŽŸ€+jY!e…e r¥þ8:›Fk‰EyiéÒÖP®ñœ9 ,}}ØŠ¹•â/®ƒ•á÷ZÍ7ã§e>—„¢vF:‰»ü£kð aä+­)îGÍÍTʵRw’&&9½½­Ä<‰¼iL–¿mÍ–¤ÿØû €*·u]Ÿ ‚"J "Hww ’ÒÝ ÝÝÒH‰ˆtI—´´tIww—tÃL\kïµóìsïùÝsîÿîo»×œó‹ïxßç}ž1Æœ$q8È\œÿT­ ŸœÌ}ß·´0]MïráòüùÖõõ$QfPØ’L„€Ojj|ú]ÈÃ;´öWZóa]Ñ(Ú:%hh¾\œ¶dE%8w${Š‹ýÚ…ÛžLlMØÑ¯ Âò~9ëú¼“€††òyg‰n íxdû]â&ï{/ffâ:Ö&^6>{†FG7.™änn¾£V%×üýÕün}4^"q~v¶È?Žœ/É;Ÿùr¸Þõr\jœ›c¼å…f_–/{,´XîNzË|ÌÊ®=ËÂ$|ÌÏ.Ùß/ie¥®­íÎÇç.(H„]ÔÉG© "*zox…0[@ÊRÓx\\°cãdÓˆ‡3“ÔÕv$¹AüúúòØïÖÝmöÂÀÚïÈ¥_¸>»Õ…µ¡/Ô%’¶$Ù9\€\r<зÖѹ8?O` ^à°·(œ¿=½°€‹AmúR§Ÿõ£ó|c×åeäŸ|12õË—…–h ™ddŽ·°0ñ¾æ©ªÂÑÑÑÍTé±ñÅìóó;‚°°ßÐiŽN¥ä?ê¼JEECÛûTUUçªÈÆ6 ]Q‘òÑ‘ÙÓ§®÷ïïûù½!- (+;Âľ(/³`KaËvyõ=n±--äýÇžD&¾ÌÜÆ$-ÖœRÝdØ“ZGÚ¦.Q\#*HVf&W-þË—7g[UU ¼¼e&é ‚™˜D`eiÂ^ &¨ÿÌ”D«0W¾>Âгñ@ê§ p9ÊW­øðrDß Üpî·®h«\EšÃ½q¾“‚GŸ>]SRŠÝ¹3ùd¨oÔ?ìýoVë“‚êê•\.¥¤±ÖæAžm(½‰!ÕV‹Q€Éf2n¶˜x~ùÂhÁ …ñ]7ÔÕß÷ AÞã$èÏh·ë©´škAî&»››Ó—ÄL¬™ðð¹£cæçdÚÚ½ñtôÌ ©ñäßuiª»›:ÑœH©©a`ÇZ}AÐA_¬õnÁûé›­ÑáacçêªsE¹(Gêm¢ÖÖýêËË«p°J/ã­uÝEýṴ̀º6†‹”ŒØ›*ŠÎ–-òÖÜ\—–à.±˜¬¬ŒŒ–¶6¯µµ–Q6$zz÷ú·z¤4gÍwfÇÆÜw¡íû>Òo ý„ Üã­ö™ƒÕÞÙã-§¾¾>ûµ¾Ya'%)ÿï߇J ÷÷%ðë|‰ŸÎÂf2ú±Þb,ù›G=Òy¡Þ ùÆA›=½7 k©gãKdäç))VÔdFõ‡8¿”A õ0b„žVW.]@þ…½pC}2oe?2UjDVì{ÂÈÔ«S4ðâE•ï|@IÉJO‚ i&í³Ðn±Ò{—g3{‰JêW›ã%4@vvb¿,-Ó{ôp)š#ͧ½£opÐÂ|GQFæä´%ß‘ ݽâëO==¤Ge)_oÀ@jbDÒó"ÃóW=hªtÜó “lÜ[ÄÎËo@ð{“Â|¨@¥¼Òº:N\ÜG[AAîŸã.ºã;бŒ)ð^m;ËYûš—çAq]á1ß |nxˆF6%0IçîÇè9é½ÐP{i>t%L?’ÞøÀÜì3=íâ©iu83:=F!eåwevR²²þ……¾99°Ö¤À¯}| ³òýZñÿl®¾±1« û7¯¾o²ÙèW}{[aªìå§RùæÍÍÖT¥þhA°—üÑa†¸èÉÎpêgÒï_à89ìëŠIGœ`&5»ßÌ<ňFA‰ŒJÔ s9¶UWg{ݤz¸æ>9+9VÉðs03¨]XèÙ³;_–ß¿;?1›Ü‘S¼á^¤}oã¡d“×¾3¾œß|šPÒý{éêßÞÞ ²”~Æ™xzfC„¤ˆŒ›$«qçâWU…ŠN‘ŸRA¯„B@•ß<Á. mONÀ·wv¶‡8ÇÇ35z]""¤‹\Nš22BY^NÐ]*» I8£—7iõIÈèÇë €”›¬Èeç0‘Ér>DMIKíÞ–VSëIä«uí7)'#ˆÑÐ¸ŽžÄ%ÖkÝ;¤_*+GYÎzXÔÔkkRR)¦ÔU••GÚ¸V8—è•U8È ?~»|P^qÂÈX²¥715óY ùYLÄ'vtô걎u»#ïSà¼^ÙÚ#]qRþH,ß"€n»±ætßZ›CÖÖ¶>HÏÇf!ÇÏ7ûZRò¶h@)ïpŽ6h…¯% ‘–RŸßHÂæV»Œúpkc½ƒ€Ê §ojJ¤¸ˆp À¥°ðÏõµv­¢`i/¯€[‡Z3³ñ\ÅîðœÇ\:÷sccunY#ìúHL\uqJèè,ø%ãS<·YÀÛz„"ý]ÀCsÄüx¿²BÁb¡hàöD.ÜcnVÖ,UÕ\¯7K(:­G&+*|ýêNöã#em¶cŸÅ¾V#yï =Ù¥úµ²ïÖ>Ù™.‘ós{{ØaG­©µõ}iÖ /òj¯ÃÉIÅÀpö…2`ÿOQ—ª,|¬!‘)EE¯%v,¿Õu"Sg˜™MÓh®´´êg~A¥£§¶ñóë2l$€øi9œç™­·-ËÓõ…÷‚ósP=‹ŽOy£%È‘ÇÇ'22A;Sã)Ä¥ÏÏW'+ˆ?Löû?Ö|†IÛ¬U4PUe]‡Àˆ7×ÝŸ&é°%Ååî S,ù%‰³h -ûcžV×+âE¹›iuÜ—ã%­ìì¶Q \ÜÜ£­Ä¤¸ô#÷ñ º»†÷Þ;°qr±¸/:¢{zZä:ZP=˜QtV‰J…߂͊ŠòR¿7‘.¦Ùñ…?ýþõÓv9ZF2¤‹ïàìÀ ¹¢T|ûð¾ÍÅ1sç±§l•M±ååÆ0BÎÎç²²¢ø 5ízo¿ç)@p& ¢7{ÒÃ&8$~UèH Ipøgüüêxi­VôV{ž¥Í²2Ý]{Ü´¾±1 "¸+:§O*N¯K*ÂÍ“È5c¬j¼||FF\£¶hQ¾±±ÁeezÒŽÛØ°wû»6÷®.p%âÇtõʰŒØ¤òäm¥0¼ÏB¦™™±Yh.éë;Ñ Kz‚ô5ÓÄ„³®n«ÕÑQÿ¦Ô1@p`ë$ž^fZ)V`îÚ ¿”»ââ ¼_®¯/C‰•ê#+N.Òø8·‘ùÓæ!¯&.7'çU£ïiO7šÁj½ÔæÜ訿?ža4ƒA±ÇÍŒØ3È>PŸ£ax¥4q¯6>Î;=JLt˜‰¹P³Þg…™*S¢j ¼·8cBxðô,šd¤íz5—R}vzBN˜ªª••z˽ma8ééF”ôÁÄxòïC;çTT«}|+™˜Ò%§J­ÓYc_· Ö^Õ:ìvÞ…qþ*Üå•ì¡cöE[»8ë-~ [äö›K…Éh"›Ç ,‘f#a S°Y?þunW¿)þüêêáIÅQ .0dGÆppv”o¶zJﱜ¼Y¶@MÄÒá±ÇÍõ&Yû+‰//Õ@r"€Î­Ü¸{úøйÙtN Ë'¸óx˜¡á2 ‚ƒÇkm³ÛÇzÙÝ9Ï3÷ ŠÝ‘zd±;¶¶F£¢B/-CE¥.„‰IšŒ$(Z‘ȃëqd¼Pf¢ÍÜ'xJ'$ÿÀ@RL ã‚ØûûSï#bcW>~Ä—ÁDz!ñ„ŸðafQ‘ÎæˆjHÈvØ‹qÑ7ûÒ6†U™99ëÝqOŸSó¥ûö]Vúe4? CHÚ览Œæl¹™ê÷0\ª“ñö®4Rï­½Å‡Š£BreÏ’óó/–:>·á_SûÈàGrÌÃê&«%á!Ì(O§"ÐéÙ¯®`yê?"bhÀ#ôp»9„ï•x…‡‡¯.ì¿Rú<9;ĽAùÉ;(èà06 ýU5åÁœæOGm9¹Œ°Þ®ÝYU1±OÕ•F·3=CkròLdI®{vjª¸IÑÒÒI²²¥$0ßj#Z ˆ‰Ùëê:›˜T|cÝ=?B|ÃèÆ2·{s>V´f³úþǵ¯5|nnqQò¯ä‡ 9Êͽ£æ1Qýd"'dT ^A6ò‹mçÆíÔbœ#'å ¥Ï~«<Θ[¤#e»è̺±ˆw·lŽt$ÈZ7~ü8w¥ÚõÁåäÓCïËž‰™š­³µõƒ›[U^]ÆÆ°øàÒé¸@ýdÿ@²ÿÍüçÎNAšÂ62²–ÖÖ7þHÏ’‚γ³NÌpäGí¯ª*«ÎYïþèï¸8Ñd±¨KŒ:z|Γõÿ®gÿ) Ó€ÂåäzäkÖ7O«Çù•§éé=2‰—x3ACÄd±epvN|.ÓíÜ ã‹éß¾Q33SÐÓ/È}ð ¨è»wg8]Vø6;0¼ß;àÄtZj?·NÏ :ú9Îë‘ÁÔŒã5NÏ›iœ›¶37ôKöÈø åuÈË‹³(+Ç45Ú‡¨> %_“dymOOOž—·´ §šfCSe¦ ‰~ø (}ÿ[HNb⓽½J}ýN¡°‚Ìïîú~ ƒI ›ýÊñY¬¾¹›LO_­öb›˜ Ê#©çôOóXâÑSnE¾{×êã̸í!­¢R˜a¯_sòúå‚Já FÚ‡$ÄèñšJ§ê’’Ü n'Ýß} Ö­‘_ÆÄÄ àûœÿ‘2†gçe¼Rá&ÓìÊ::DÊʼ˜~i©ÜúîiF("üüç)¯Ã?ïKÓ¹€‡å öþÎÏ=§õ…ýäââþa;œîá×8h÷ï¿ÿââŽ_aö¤¼–y¿ÑRWï^Ç~Cpðf¹ieKËf 5µŠø¾7kYYwGÇMà'€k©º„ÌÌ“ãl‡…õèšõæ¡ñ÷B››‡©¨TeÅóEù¾ú~üù3¥doûÐÐÑèò¬]l–“‡tEl¸<Ÿ?ÂGiTÊ\&y¤:lÁ‰K&!oêì\Z,–ëÚ´²·*,$ê$Xò\‚ )E†Ì9xbt 1•- eMMa¹¹]]Ø¡S&w@¶h4s©Ó3qŸ Ïa](»»ZL¿¹¾<Ãl±½#˜R^ÎÆÍÍBLLÁUëöZRræû+ ÛŸHƒH((¯_}·‡µ“ðûö-^½z0¼ÉÌw¥èäV7×ïàp7×ÚÕ+µÙ5šˆ¨øiã·¶Œe'ed\F£#1¡bŒ¯.èÊ!±^àÅÙDÇþ6;|¼ÝŽq‚s|üd[Á°±)^â'§¤¸Ý\ÿlnv••]^lcùZ2(¨WÚð­Ú?*ЉÓmã}ix`øG¹µ•ã_ßõN4Y¬2èWƒÊò·Õ9çV Ò³Hß—ÆöMOW¼õj«ua)5b$6¸ózß{—™’˽­µ7òòò -ˆŠÀI¾ ‰?ÿ€ñ€áÀ±VØÓ ù™ûÕÆûà®ÀáÞö¬¥¹·£Cj[K‡Ñ€í ¶¾$¢Ô¤v¾°Gfúà ÎY´kX¶û.oxÌø›—)ãåå ‚‚u¼¼}ëó’‚~¹~ ó´ñ'»õæ“+…y5ß{{Êzo¤…%%=œøø®VÇíìò½½Õac»ðýH·æ8ÛS´ç—#]¢³ ¼0Fli´6Ä“±L€‚ŽšëÙóbb“›ëÉ$ò5:yÁÉ¢¯Ú¾Jºº‚4‰èÛýXXÁ–ßÜvv´üüXÊ-¹\ÇÞn\æ~@dcK9=­ M‰cVç±mÿ>áüh ¨õ"ÁOü;ÉÈ_¥ãUtõ¹°“>)¤æ[Íy&z7º;}z ÐÓ×7“•µu>õ£óº ŸDÏÀšf”•Q¼|ÉÃÌÌÁVi9ÁˆNEõ ÆWåΗLÅ;Í0Ô˜\YéJòcÔ0Ü®Z]¼¾}ÖÖB=I,Ìô|޾þZ§×WÛ„z“x.:Ñ€Õ=zŸ ×ªª”7Q‹\."­<¾¶åÊCS¸’äÁ¬¢”ǧ‚$¾¿!ïUràæîÞãé¹]z$g4œ#«ZžgiÕÏÿ›µ|®*¬vÜÓ9õÑÃn«6`qø$VVl##¼ÃÃme€ßMÇ0ô""HHKŒÉeT`ܬˆ[‰‰)¨©IXи“[™ÌÎnÒÞYît`â/š&N†„¨½·‰ñP½ÒÚ+) eµ,,|m»ewüšzu¡…ÊÏïPyEëa L°ºXŽÊÓýï^ÂQ($ÌL'þtÞm(<Íó ‹6]Ö6½RŠÑÚéLŒèýæÒO‹¥”Ç õW„Ÿ¾~mfÔcÔ50€û®aªÖà1¼wrNÎíúˆ®ÐéhOáüÃ?}*”2^ù§c*àA¹ŠV@Ks¹|:V{Ù÷h:ééG€X.E|bP(-s““CÁ®ë …xÏï<΀Û)>ÆuWû~2B% |å¼úŒ96ä$…æ¾\éKŽÛÅIzzzösQƒÝtüÄDglfR âѪ  ~ávú /¤šõÌŸcg>EcTÙuYMj®­§·T’b¥ËÉ»……ªwpGkWÏ8>|pÿBC=˜˜í I0ˆ‰ÑŸó¼Ïñkjbàb«kཌÉJ«¬ŒüˆÌòòea~¾Ÿ·¤R°ú¥ªñ*™¨þ E®çÙÁl­Éë`yªÃ#´ãmD³m>æ¿æË³©ˆˆÐ“]VçÃõj‡tÅ‚ÏÁiÓK_¾ZïL!bú]Ízjݸ'Èç6ã<ßÉWuèŸõ¨þBˆ;jøx‰d¼D|@QYmµŽÿFÇ OŒÅ¥}x0¬'ð5îì|³:ë{'kýBÒý å©2[h&N~A„¼|>åñä5áS2bccÞß§š{ÝÎÎJÔù¼{[û¤ŒÔ”Éý_ËÛÍŸì-/ó´4¯ˆÕ±É/0t|­ô™„ÖN˜Cèo€ÙØ8; *(²¨×™"È„ïÿüAK/CO/ƒï;¯öí'>Y6ðµµÞü|õÈ<¿×,®#>MË‹–g¸Ü®@c‚³²S–KÑÖÛXʈú7is 35ƒx}Ó„7MrHD`º¦y©C¿†·?º©5©« z_S×TW.ºaý12nvbB^yœ”<èXtIIJZùtÁ7.Aý«WÃòæhwY©n¸¿Îׯ´ ¬EÒíMø<õÇ#ùfk…KL&說ªÈ!ž³1'Z‡B::mÛ“d××…«= ëÛfßì65§IwÐŒúãFúxyÝqŒKN36–ð>'ÐQnÑ.ù8 äÕgùÍÛǧf`À™º`œ‘F¶äÓ½–°¹)‡®Oh=˜ý½yÊ[&#ÂÍͺ)Íü|||Þ»ã%Ó$I7 3QYµŽvxZ}ÅAÿ@Xèï#ô´…%prâÛïsO}Ìɉ©!k˜ß—• àWL¼CDÈŒ·ÜØ1uÜ5Á]ï0h¬ 5Yf¿I?1bÓ}%$dsmùœÚâ@•íCxø‡X ìê¶^šå©ÊS‹7®®åðð–/©6––W  ò½/·&Êø¼Gæ5äåe-J0êæ¦Pé÷èLÚ¯JlðÜð!Sí:Žê« ïýù3¦°ò½;¹;5†q==3ss¥&£tôô[c)Ú™Ü^©/Åè¼ëZ_jµ[|Šúqeñ€žåvÙ§ÿàœEEã@5={õüù`É!¿öst·\| zçmŸúSVU5,0ÐBGGHîcI2Þ†y‚´0H¼»3þ½II<|ªeñ³= ¼I<Š3Õ ­çyïrç¿X†¨â?ééÊm¸ÝŽoŒjÂÑИZ£BB€ó—á~•údÅ,yâÃ/¹*++îbbïÖìÐ.÷Ó{á@Kýߘég¼Ï¢DšÇzÉÈjϨ갊œº€å$Ž9dùÚÃ2"swÖ£¬¢žÃ†¸º¾> ºš±|Ù3ß$]YÉ$™ÄN@ýï²-£ž×k;;Õ7Me&êên ä==±kŒe±>Ô‹yÜœÖWU_Œg:O´G­7Îïëè”D~@È”4ø`o}n²­B¶A"œÄ`áÝxéããZ}¤Üì °Ðæ8¢è5ÛE¿3ï{6Ç[Náqª6—§÷mÏ dÊË_ "Ö œû?ÞŽ¦Œái-¹Îó³ÙQ›Š ~úÔõËG"ÒÇMë;;òéÀh››“+½«%‚Ýf8ø›¶eä‡uõWFGý=ŽøZ{…¼}›<7ÿ¤däÝÄäg"Q ´¾i~û¹ðÝ«ýô4>£"¹í O}uua^Þ ßêÙ²¨#66JjÞÈäçåá †EQ`Ô8Î뛸Œ~ŸëôE$Þ¥áUé÷x«­‡Üêðø1DêÎ[ü®ßöùi¸öÏÌ”¸UçDF¶Êó<e/(èVæÅjfÆE£¹ÒúûDrVΛÓSÓþÑh¡ãM@ž``d{™øzí«ê“ÞšáÈ)Œü<-JûJË2`mø@&ûÎêÇaçç#¹ŠÝÂ1qŸ>Q3”LÎÖWpºo•öó33rûóç¥j„਑>%F7v•çLLâ"#ܹ- Þsô~ÿ>¹òì ¥‚Š„¼‘Q©‚Âp¹ÙNNüç}%l$_”âš›/Åã>áçë)))ÇÔÔ‚¤j¿ëþÕ~{üµÿCRñ©¼ñ„e>„…„°qTÇR‹B×z‚‚¬ËËÍ”®;KõI Eù S¤rž²&rZ±»0÷Ý1Y‘ž)a&æq' ΋2tç®™aàµ{ã`f’›«†;4ùÝ®0] ׊ ´ôçÖZ±:y%Ùíëþ%ìí|DT=<^˜­! ì îjX 46þp~¾Ø.ià$ù¯U;býÞôFa¯ä›Š0×ËS&üÆ'œC±´FFD## ˆ=Š3.èYŽŽÌT+f6¶¶!–X “”úÎ?aJ½¯–O,öæMD¾€÷€úz´Zô:†êîÆFŸ•Ò)˜ÃÃCÍšÓý•nÂG!«½qáé5W„t´ß()(Ö¶ÍJ‘èÃ×°BçÑÝï¾%Õ¨iŸ.YõÊZ{îq³MºçÎe³r–«èËÏ1Àñ¼ˆ–ÞùµÑoELM¼›%r¹ `sm—m 9+ÛH£î2éÛ·Z#¼ö®M­ùÀíHIÞãýq/Åðp…mv€—Wc†¸¨Aobhié¬rÙÆGp ÆYÑ 65R–)úfÎkÓFâ—’le%׫‡ŠRJƼää™ÌÆ­ƒcbè($Z‹:üÕ:,S“åý•Äß7¬ã;•ee‹xË F.Í7=~ñâ à5=˜\Ý;z V¸ll$û‚­ fîs¹¼(¯8‰gÓÉÊ$á9ð±ôCa¤bµ÷ŸâÈÕü'_I$é-fJ‡†£^« å ·|ý:®°°è|á./j5Ç'Ñ‘Kq¡Û= 'Ô†p~óÍÍÞ%‹AAîkëÐ%™’ðR¤õOVx"²²p((MYB²œ"à tåñò07Ý Dî¬Þ­N>££A§Hgy‹ôà% ¸ªªŸ:éßbÿ p<£§aB"ËZ‹›æ°‡½¾:‘÷ð ¨:L¦¦Êg¡«dsØÉ2†ÔØuiåšåa&Pdë²N||îr¨zM–׌ŸcÈtŠŠ‹½ {Bø(¾Ón- ´‘xq]„¾ Íóâ×Ö¾“ÿq]¹NmkY´…$q|bfx4šÇ¦5<±HÑÚÚè0ØïßÛ~.²ƒ ú(ûZL?>9{pTöjŠ^ R‰–…X¿"NõsLÌì¯UFiŸÊ”?-ffb{{ôû÷¾xlѹ3£ûû^)¸Ÿø¼L€ƒ’H¶.­Žn¬wõ_òöN–y8r> ÛÝÞÚòÅ[k S¸{G×âÞc`p YW{Z2Ó£rrÞ<çÌ¢¡yüáæH™el ì}*bâû440Õe'oµ­eù}V·” öƒ_£ ×'r]<}‘¨¡¢ÒÛÛ›FHS¹¾Žôx@àÙÀdpÛ[Úw4ñ?~¼Ÿ­SOîûvïÞlÑ"2lÉWÚéjƒ´r«½….Ñh Zc¿•XÄR ¥±Ì«‹& 1 4˜Òbe 5ÐÆÆ` Õ)ì6?åì[=ô™on[2Ù/­ n­÷ðGwwÂçÚœ(•Ñÿœ‘kÂÄrbb¼ñðQÙ3E,k•̲2Q‰v Ú +dyÝ5Îòs;/zš›-×ÐÑЇÕéwÁÀøº]ØfqRË ~›L[[£yù²:Gåïgd¼h?ôKÆÙ²qââQp¡ÀbæãÖ]|g‡Fû³ä¸\猬¬fx‚î´ññƒÅ%7)‹5¢•;Ÿ…³:4˜›‡!áЇ‡Ï]LÓhæPkJ|ŸßúÈÏÅi«˜7øúëÚšÚ® î/éN”ÃfPª“»nÝïÌzý—šM;:Û³€¢ÊÈ$10üö½‚Ä=½?-fÀ+Líí·ß‡†N¥ I2û>λv¿ sÿ]&5âcIÇŸ`=Ÿ~ÉT4uâ÷!!5\g[e ïMt³²¯«w¿zŠ›”/&¶ÖD«†)¡‰{Ç¿«m~ŸÇõ´ó»'݇€7 G-®&9:"½¥DE¿¦e9Yœ{ûøQY‚÷,Ðÿâ:•6þ­Úf÷ 7~¾ÜEÇ ËílËÅ„“·µµs|‚bH-fD.“IB„)¬Z> Œ×«W¶ùtÀª9 ~´¶ª)Žæ¤Xäçcû¥€ ®‡wVæ°Ûùð‘Å¥S|LL«àvßK˜}$8ˆÐËÀ›£šTTù£}J¨XƧù ì¸IÐíoAAêj_¿[XÊ%ruWÔ_¬.%нËÏjw‘£q³;*qvÞßÙa ‡ØíL)ërÞ2w†7=ºƒ˜i¥¤5}Vp&²Ôêâ-çñ­Öôr2ZýŸ>yTÆ›771ç„3ÒA4ªõ‹ Ðé­ùÙYÉo½ÎÂ&ôÂ6.ºZEKâ¥ÚÑ—G¹(þ]aïÅ$% ·6›^#7·¶ÖbÑOƒÃ6àš¬.#+š—ÿn º%Ì4I&%†ÓñgCצ•R÷PÙ³¿–‚bÆ(”ÚVM}0?Ÿ$(Þ,hpx‚Rn†ØýB­ý”¸w¥Ï'îûw9X9á6Ûd,ïL?¶±ÎÙs¼K@Ãóº9š¸‚F„00 ¢È£î輌'º¦™±Æ!ºþ÷ㇹ¢Ü¥)Y6-Ãöº£²ò»à.7ñî=½£ sen—rì1¡ÖÆ›LìËÞãw^wÒR‹-)]V22Ì͇†Ë®PQ…UÕa‡G Ä(ÛLLúûw+,OÖq]®ªá$H ÆÐ¦„ùùm f²UÛÓ1›Uµ¼%T”^ÄÉŽG|à´¾`=ÑÓ³¿¿Ü²]âËþ…rÜ´§Éÿ™#ܱm•kM˜¯oA¤ì÷*»Qì/áF…Î÷îñPPÄ9®|ÔaÄZ>\w:?OPW“ˆþ(·€jŠÍQ~Rë2ó©Êt<ýãÇ»¦QϘã¶UÇS^Ÿ´Äaøò½à™)î7Ä¢ÑÕÑÝ&ðÄKÆd¦3øÁóñ0¢ež/ýÜ£óî^‹•þ´þÑ‚ZZº~•’Öž™™7Ä;™´?û{žÔ<î#×k í8X}lrö މYÃfësð»×šÚH«&&ü†s ø ÓHµutPŸ¥ö#ÙÙýðñ1½Op¶3-ÇÇàú­²¶v¸9ÐmÉb£ùÜyd©Cˆ¾îÊaŒ<ïËÔT-{€SkPN޳ɦS.¼!,¯ðd…¤F©á7GXqc÷ù8 ݔڬ9øþ¿ Å »ºØ­V-g¥T¦¿»«¤"-%u~jeo{xqz*†·=Úk8õmf±MÕ~÷º~ý…“ÿ|Ÿ!*¦9Á˱…:èoz~ýn¿*ÑfïNB«Ó*"//p¦dÚ ¬Q±#¸Úƒƒ„›H¶®üÛ‡Ó‘å]Ñ@k+`{Ìq²êÓ}oÞ“HrO¤wvÇ%j'©–ÖV:DEF b“¡LWϸؘ7»œ  S?\p»O)âÔmkÿ¯U ‚üŒ1BøydG"ÏÍVšrˆûÞΘ´ˆlÉâ𜋎¶ýG2#Ki¦jña•N\W9;Ó.G›]×—%þ„0¨Ó£…õ+=\‘ ê>e ‘Â_0hÊßæö23~}ÁÕ©Mû!-uÀØ$æêüÛ#KË5ŠY>´ÅVœÓ³’ª~\iý•Ùv²`–BÙÌ7·gJ&ú‘=ñ1\ì/Ø¿w›a6DWòJÛ®ö0¼ØÞä{`Âúüpºš8ZÚ ¬,On¶Ý×2&l†ŒÑÓ½úŠK‡Ã;SSg11gWW}½åb³íÙYŸv_|%Ê¿G,…ê.ó›Á+ûËÍÝq™éÛ+IœJ Ëç©cƒ´¾Ãm½­Âñ {êr[UÙݽ#žÍëÝýrR©’’z+¿Ôµj‡ê/õ5HÔûûA$â윮ßÎ:"m&œtT—–ÑÂp=¾–_çKùkÜÚœ‡¶H™SVö=î«UÂg$ÔûŽs±íWæ¯Pu‹Æãõº¨gª£'Öƒß9ì\Í5`)ãÂyNW?óò û–€ÔÖlý‰ÙÑ$KÅØÈqÒØX:ºó‡0iC+«˜` ¸ÑQ†¢ã'°¼Yrû~Ž™™ ¾1\‹+.ÆÂÆÖaŸvÞ_ª+æHJÿ:0P×·.ôY }‚ÊL1š:Gû‡oËÂán}Ú·oOy±41³åèƒ[ŠÊ˜f+z³U+¨µ –Râ/l¡) †³ÚÿHïïÌW- )^›RÎy·‚?ã~¶o2^,=EeÊl0]…ÍbQ·â`eùõ“>­wV¾Ùw…ôÀPwM99-Ý!½Ÿg[®Ãf}jg[šœ.Y/fj‡./Ÿš®Ï®(4Ý©!'ߨ™µ³ñý⑼ºúî΋Ëë@›Ö÷^éÍ î×yåå3o~š'òñJî/¯rØû`c?g£ïx¥FVï|¤Õ.™ô¦hU ÁW,%äÕ´2¥dR,äŸ?“@ÉÉ‘ÑÐÑРó'CJÈR¡å=eXçzö’ýüª5䨇ý@^þ¨ë“:§ÇõÿAþÑ¿û#G›¢,¦_+Šèä£V阨hç-Yi4Wlz{½ï•/à.Î[e—–ÅqG½Y±ìãv«Âáb7¹:ñóÃÒþ/!Yxj>ãjw}9˜òÚÅv{‚ŒžÞn{bÞ[W=ôùxä¤9¾Q[h !¡néù¡QŸß›ÞDvDôx—}ÂÕF_ß4Á'©¯FNÂÃ1êêì·÷ 3A´£?q;>íÖþrº¬¬e¤*§`æö‹ÃNRýMˆA«ùÆ6ígï?jv}ü˜UUµáSÕº@ÊRá8œ“KTç|Ä+š›¥Н¿FH–jg±pn<ô -éIp)¶LÉ÷ñKŸãï0z5Z€„ën¹*Ñéy‡¸&á•d‚s©™ª¡»{ Ô£×Æ»3nd¤¤Ëõ½rRÉãÊ¡Xz/×ôøgë}}—…Â''Uss+‚Ÿj•媨ã,¶ÉGЧIŸR ÅˆI¼9gµYÁ]¨úº¹éÀm…ýÉøë3ê.ÀœÚ"è"O/æÅ³µB©ª\µ«½4˜,;ë>„Ñôôu!Ïl ½’IæŒtFnàÓ4®Ç -èB$¤¦¨V¼ ½+U [ìZQ(†FZ¿å—šU}ᛕŸÅÏåRÞ1¦$«Èãôa{Ëõ.4šÇMK%q¯†s·ßFyŸå:7xÛìÎzLûÖ鉾†Á&2ÕÏ8ðMv©q¾©xäy‡ÃÄøZ=É›_û7:fjXMó·¹Ý/ç·Ý ¯³«šHTP†t)>>•Nç˜!ÆÄä&‡xÖxvIq]VYØB¤1'«Îù¡—vˆú}FƯϟ‡ÒÇäq8(4æ¡ã¿-a³˜q} \i·)ïäDõf¾–°Šj{q#;y؆þuÿÈÜK 8-Ÿ)!fpâ„OŸ ÿì=Aº©Lï'…çÓ¦W’tï,g‹Á Ã\n+5jKâéÝH×1Þà=ž-]Wp>¯èë[þ€$ö ¤ùhªj)Í^c­ )èÏT›R‘ó‘—|k± Þ<Ÿ¼·Ç­¯Ÿÿ£‡â›r‰70 ¼ÿ;%¥5ó)V£CC¾CDˆÚ£Gy°ÍÒå冬«?Šša]‚Üš)Ùvptâ^”ⅆɭåîYßõIËõó”ÈÑÒòòú¯3UCp&' ';ØSZ¬•à¿(ÄJ›è´¾ á“’J-¿ë‰$aëé¹3uó¡ƒÁ—Þ޴Тè´AôR£§‡¤pɤD¼§ ú6‰ï'ëy:dnæžuEkö´“6¿àÏ–{£ûåd·~11Ö¿è>AÌÍ Z£Ä7b#ͺK,žëä„„å†wƒ{¡~t1[>>[KÕ²¹¹›FŒôÌ{IÅôÛýiÆîÞ5sØ×½ìI˜gÄ"b²#)Å€á;“DQWW×Õ%Œ£Z™¿ÚîÆhQ,Xz Ï—‚gʄ蓕3PZúÑÎŽÃv=5+==/;ûKz:Z™]N‚VÓ„³õærbâõæPöûë«25õ{*)+?bÄîÝÛgÓÃ…ì°‹4"/òõïÙÙ©Òúz6ÞvÝTW'Öñ¶hA>8µ¹¸ÊQöõ«~o"*,oYGßú´ûM-ÃÎã˜Ëf™úüœ÷ÂúǸî?¹‡ T9û77S=UÍÎÊÒîKV¯ÜÕQŽìXš›ó5ÛíKLÒ,6ì¯|ÿ¾Ä•ÐûµñÆÄ“=@ÕàÒ>ã(¯¨­E£Ë$=?ÊÅŠ£3׬9}“©Bß.ÃÇ÷ K—ÜzÈ•úëûÇ_ z5g[=>a¢ß' "'ßÞÕœJ׬RJ:"$]×ËOVIi¤þFUà‰£Yl7ÏÍ%QÅŠZ]üÚ¢Í;9_¾‘~éà ¢¦Ê¥ûÌ#+§VŠìêHm–éî1¬{Ri¼ima»6ç‡j ƒ{{•VÛˆ;îðÞ‡;ù¸8µ‚¦^É€óÏVS›ãÐM†úò¥õ+Q*l^ˆ`òKKÑÊÉ€"Œ®O­ÄÃqaû‹û&&ÄÐså(³Ÿ4ç«VdH$9 &‹_ò[_­f6õa+¿,Ø÷¶Ž¦’ÚÙFù8 4ú›%M¼‡¯SÂqy4hÚMùñO÷—GÃ_Öu‹£ñã¿ÌÉéìè˜À<×—¯w¿ éëZókãðÀÆçø˜Íæ!5Œ÷w`ÄàǺD,kš,‘a×'G¡:|:¦«ŠSïwI€>\Ü`¼ûbhœ“ÈÍÕÛÚŠÙöY@J^þ¦ —Ãã:Ïl_Ùû ÑÉú ãPÉôõÐ,½ÁªgO‚¼DÂÓÔôWå_•â÷ë`ì,F„ÃÀeôÆŸù{Š0m, ¦Ëè÷0âÐ_R #®u.;º¾r-¨u=$ä{ypL.„ìÓ¡Ëãúyï§–ßØhååÏ”¥•nűf5F,ßÝ“µ”ZÓqR¡6÷F{ØWÒ‡[ã>8"„_ú9»±ô€¼NàpÀ䪊YaX¼·íN_¦êàúˆ1 ;;ñÊÕxIXöÐ %[`Bêkÿœn± >Á˜ÑÔŸâ‹#IÏp=‹bu´R8v¤H2ïYb”ŠDž›Î¸nÎ7=tq¡¨ÑyR?5¥íq³&¨ˆö‚4?#),Tƒàí,£d/]CÃM(¬në§O÷aén¬9´…þŒ pij‡@RJíª¤ ?)‡€Šše[u´Ü¬Y;Qe> kêÃu^_þ€>¦Æh0_PœÄ¬Â@’0ð°~÷ y~„ß#ÄÊX«‹KŒ¯ÆŽ#È1¢'+ü‹ÆŸ_Ûå} T°Þ—à©A!9ŽªGƒ«edÄu´€,00Îa7qb‰q°U÷íæ™ÏŸm×…Hóp8ð9à€Â¡Jy·p¸ƒË­†S TmiXi²(Æ0ï;±Ý)à½}}RVö/šk¤³Cv[•)3%Ó±™§žr6¤‹ ÉêÂò’¢Ê\¨uùÍ®tƒvE'-âÀC^µ¾BþŠ rjnîÎ<ÝùѦÙË—¢ma7 |/uc>GZi`µ‡ë‰ŽFLŒ¯ÃΗ·õÝ2¤¨DDïŸÁàr©x¬,h5ñÇxÝtDÆÏ7êHΟÝôÕÔ,,hïýxMœï/wáz\ç”~ˆQ¶¿v-÷¾󆈂4œÃ6™ŒüZGg§Ü½{!‚ ¤¤áh¨¤K= QïC„‚ˆ÷ÎoŒîí¾òYÙÚRSR p@½Ñ±°¨5Qôq-;Û_®¨8™kxוÌ?~Κœù.@N'='$do²âÞ@‡hg€,l…ñ+÷ŸödO¾lª¨«'TTTdddTV:))}ÎÉ!/Çá /¹ý¾š‰±±³³³uæÝ•ínê²²‹@§çCîƱñqe_^«4œ:›ܳӽŘòiƒÃºñ•J‹:ªpý6—Û>:,ð¯ÙvˆW" üª²]ØG²³³ÀÄ@K+%+kcoOMNÞXŽËfMH)ö­þ rÔ·R,O)¡ªßø_Â@ûÿ,Pªþeu€ŽŽÙÎ4J¯öž»`V: Â=]]M69sw¤Dª‰ˆW66 .Ï¢¿Â- c‰ÆÇáûžrr^.¶…mþø!&+;èÒhgÉA—öÁ2ઋ¿òŒX_î¤3á³´;„ÍßÈ®W¯ë“²’RûÕyW4ÍÁJ·­ms¹d,c ‡ðgVéÀ`Öþ)éí’@~ÜOžN¹ôɰu•@v˜Žß+"ôUD©ÎI‡5Å'£)V†r 1c5 nEü ¨™âSt7ž«o¥#’$11±¥¥E³ÞýhoÏÊÖ•ùžž¾Ü¾ÏgƒÏŸ¥;P´µ´‰$?‹­Ä2™”–•uwwàã;^HÌVÚd*j¨¨¨¼xñxì8ƒëÙ3##£{÷îi©›˜ÔÖÔ€ôjkg§˜§$­¨h`l„ÚãÿoxVVÀ¾‰±±µÍM\NGZjj$^ OÝÁyR rò›2÷+g777uuuóqbüˆÔÔÔÝÝe¥¥= þxÂiи•î8@@ˆLOO›˜˜€&y\ûâµç*vÿø‘“›‹3 G‚ć†ß‹Nc.¼··çvq,¯ ÀÌÂöþ=ÿiŽÁC¾”Áütæ?©#¯¹²¡?Цô¿Âž‰_‹mõhL—å°“è“"#%RCw|ykÔ»¯¤j¶‰¼K»Ƀf3¥¯Éyy'wvv¨³õŸßAf ÃëÖŒ tò |õÆÓš:ú¯b—w67A³ã¢¢¢"#̧Xw®á½ßc1‘é}÷¼3YnÖÄL­RšUUÅNHȯ®Ž3i3˜!Þäÿ¸·z¼àv=ÉWí¿¹¶\BrrršÂmú묃6ÊssÉà|¸vyyÙÜÌO@<³"~P rr‰xÖþJóË©!€& f¥€a Éacc?~üU`õG (iw¶4µÞqÏû†TCÜý'ºp%ƃ„ˆ9ù`LÝÜ®PH$PÑѹ\45ëû«/ýåŸIݽ¹V–“K)ÜÅA‹9þ¢rõÞ'ç1½œh†±iäh© ?¢ª¨@±xìR…I<ÜB.ˆ¤qøÀû|!ð.h÷øžTÂ"ÃiqÌÀz[[$}QÞ¹Ír7H’""óµ›â­õÎG9.';c­½Ix§®• º__Š”f9öÊ«LÔ‡™ÒÑÑQ­ÊKIy¦·ÞPz¥ûQɤ®C/’B½:ÚŒöòâMâv+·˜í™.ñÍÔ¾~véöxstxøliiÉòÄÔÉÿëׯl6+ñìv¾ˆìììðÞüãããO¨r|1´g“kŒ_îØ ‹‰ýÈ–ÍTé 3_7Q””¤!!­ÉË£$# äÇw»¾<+ÒÑi}¯\ël‡Øfý¤Ò%9P³,<#‰Óis´°D¿ÛÚÊÊÈW GcqEEA¶‘ãaV gK0믠‰QãY¡QÈq„  0yѯóî;UeÜÁ<#~*..þ$Ô¸ôË.zÿSXí6MÁšëë‹ÝhÍãµþ×ïøúa<­ìì@?tttôöZ*‚u”+È݉\Õ•¨ú=ñ•®gûSÐC æN"HúÝÛž©k@ïÔÔÔ”––Òßh::ž.uD4°ˆÉ÷x¿³·×è„tQëËqk ñ…û´.Ç[v›#Ë««™™™“““¸Ü®Ÿ›æ¿UVRiÖ]n ç‚yxÿÝMƒAOi8k ò­Mb<ÌÍÍ¥ÞÆ;öÊyFvtut~¼ý"ÌNâY~zÍi¡¼{™œ€@QUÕè<¯¯s‰ÏçÞWˆRÚ×X0Í}r˜óPÌbðÜ]7î…¡&”ëÞ,LìÂlýªw(+Z2µ¹±QS[ ø#HHçääå‹¶á½ã¹\FÆÆ”@žDÁ~ëÍ8ÜU•‘Ñ:8(« =&»º'oéO}Ç-¸yÄä~éxW°Å¥ä,ªRíHI)Òíøp~~޾oLO>^)PËNKKËÈXYX‘–žßݵÐÓîëÕÐ0« €š™îή´8q0‚Âp:gŸ«¯ðeNK÷IK­Ë ÀÜ”¬,C=½£µ~Ó´oä0oN©¼¼´1M7 %ÜÂóU‚˜åu€›tãx#¨A¡p{›ÍxHã R3Fà yKp=SŒVYîþXc|^dŸ†·JJJ†ÆÆÔªå«í›§Ô¬SÝò?¡f`f. l¬EEU»ú[[KËÑö¤¢ˆHGsóRgÅ”.z•®±qNvv%è)¬ÒìúW[¾@–±4Y]Y©µ ’À/"¢½6×ùF_óé*#cc(®df=9s—[¡ŠXNß¿w/…4ÈîEÿÈHG‚qÙ„ÝD¾µÁÁ%åå 22ô Õ.'Ô糩«<ÏÛdVHf—©ág°ëfûú¾:m¨WÇÆÄøúû³œÝ TH¾ûA¿Òßßßãòô‰KÂmAµ­ …*“,?ÕFǧKk¼×`±ƒˆØuxT èÃè'~Tšó7¿GÀÀ×,ñÓó™î¢åEØ—'—…O—¨E……ÁP•EŒXh .7;Ý­êGÇÕ]KŒÇÝëB„÷V‚1ùÑ|¶ûø:—Ë1üÂæfH$áá?ùâÅãú nÒææúêâx;7/yéâdwlv O¹äüx;..®Úd”¤MóâLɤ:—sSSS™ÐKx<ž¤¸9M+´/z´‹a<~ÌÂÄTV^¾ÂCD%Á"¨änèS8ü€÷ï]¯ÎÀc_#ß?ª¾º¾âQP#2ò ®®¾TÊÕÕFãýeÅÚÙ‰¿ 1ñuêl½ÇM®báÓ§Owfj].O÷V|îšG’Hrrqçêݯ6×Öøáù†²<¥”€Õ~öKoŽö~nþdH}kÈ7åròÃ[YCçî¯ÇlbÊÊŽR^ûƒ±Lârùlh`pøâÓvw:î\;NŠZî 4Ö›+Ûˆ~´bÙ¿!-/ß2o ¼Æïg©Ð>±‰¶¶7ól°Ïɽà–þþÀiÛ…æ@8FôúZ£ä(g;âßUñ©h"Çéí.E´hkÍSù;*½±™=úY*(µÓšÈßúˆâßç[3Ç~ÁYº ]"KŸ¡Q#7Þ\;ÛÖÄŒŸ—¿/3:bxZ ÜI-Àux¿jkÃYekOkï†Ü)©+Vm¥r¸zýEÛéþ)Õs¨_Üí%~z­×t:JebHoú–ù|–'0`Y½àëî9±ÈëXîÙYš]*Öëâää|óæ **êWžvAäyhÏØ\äÌµŠš>Ew,~+Œ#•¶VØñ6,xu\W©÷ÄéIþ«{CH]8Â^ã„! OnV®'+4ͰL^_ö«ïËwuoo ¤c4CÝúkëþl”Õ¯æ.W›#ùÈ¡ ©.PUµquþlº’`ÏÎÌó2;'GQ^¾™Á黇b«µ‰uÌêÊNUÑøÃ:×3|¹KD¸/žJ6? U‰Û«§–;߈ŠfË›™m—›M"Ã6è“ó"7ONrPPPPQ™­¤Ê’ï× n9öU‹Ýdµ'¡F¨c/È™þMV ݶÓ4¿S£æa7U0ü=dßK¢¹úkÄÝWžïÉȲ·ÐvI—Ô"»8YœFó32ÐQQA†ðíæîx Ü44`˜ŸÞãÚ•ƒ£:‚@ “öíbk¼·éLÍøÀÀ~/àÈÀùyy_Cj⎎Žx\O=ñÚÞÁ©«©9oMZÔ³±³‡b³ M€ÖF‹c1Agñô»c?é̉‡ó¥ˆ%°—¥¦jO”Má S©¶†=œ(~ÓHƒ‡÷}t€õáÖxICCØàLª¿Ì§—»‹‹::: ºíá($Ô5JòG³q/o þضJ^Ooz±mÜî®îƒ T\žkZæ‘fd¶ «EA@äAX"=£o;ýî#Ìà0 àhö«Ö;±Kν\¬=iÈgî\úÇÅa3‡ÀG×Cž]ATÊ¢'Ÿ€ÖŒc„*öÙäxGGvê©æOâ¼?¿Öd²ìö[cº;ݵ÷ÍÚ4»ÍL‹?”ÆLHÀq8EðèM†ò¬õ4˜_»%Í ‡™‚"×d´ Éhž , ËïŽN&ptè´6r ã1 vmn|ÎÈPq„Ã÷w´HÐzy{8:î¸ô§ L•‡}Âm›CGÆ-І¾±3YaÁËË b¯…âù*‘Óé)&¦ãñ–2qäƒ.üòïããÏv‘ Ó‹exåËîø‘#®¬öj‹QÑÑI‡æ¢ã!¹¸˜ðÔÉÇ ¦X~KJš½nyekÉ*ìÆ%®CÖXdg‡JDT>öú}ÊÙô[ÂÐe–d;X,ÃÅPø›=?þƒL‚IwwW ¹;^e—[UU2bHH` @‘í…XÞGzΪÓú°&-üc#_Ô\>.ÏÇ=$~}L,,g—`"2’Là]àgô3ý‡ÏY‘wIU„2UF¸Ü㉋fffüüü´‹[Ûpd¦Y³ò±ÀÜœ§Ÿ®„ØÛ•y¦~  ^!%/?4äS) äHÑ|˜¿€Óèñ—ûrµ7ÉQèÙ;'g¨Á½Pï¾÷!!ËÅσRý‘¦yl×rä Ë›8âáU1vI_U'gfÎTXTp8Ȇ¡;ç=b~*+¸=õìzA€ÏògãgJÿw=Ÿ­R³„WGò‡ß¼ÏC$›-.©wØ-q@…@Æ_%k@×&=ᱦ¦¼/¯tÂpl¼ŽŸ@&`\\6]N>‹Åà2ãóôôÏ”àb·|[¿MïÞñ%MÈ ú£ÜÎD ²‹ióÉJw[[ÈÏл<ìä@XPâC ê‚ËÍÂEMwøÊìzoxjšî@„ß½{g§§§ÎÇç¢<ºr¼ÍRWçPn·µÄøj‰ßÖvèx×ÛãZÄöÐ…®UÐõè(Ïa·nb :¸¯ðú ¼ë•‚žž[EÅ ð]-Z…‡XºA¬Yÿ lE9³.í0rXÚÚµµ…ÔšÜÎ{ ófbÆ„¹Ù²f …u€ê}Óå3Þ0 Ž4ÓÑyï€l¹]žÕˆ$Yw¸_Ú€Vá»L(¤”e[7¯{²âžè'XÖã½ÒO°nn™dŽ.šf<&uN"²²ÃíYˆ3^ „×(ƒe3߬^Ÿ[Ažpz\«½Ïæ­ìB =9©Y¦†ããÓ(Pu˜îéÙ_ë ‚u~ÁÉ$9™®Û[éiHýÑý…Û•4†ƒÅr­ï…»;ƒˆ¶ÊY’t6µ .û³}Œhû"„á\Å3ñ‹8¾k‰<ÔpøžŠ(àÝräà À =¿>|øp"þcõ/ëhÒ§"¼¯u¬õ–üüzÛöqµÉØ<©4l~Î]ÝC4uرõÁ‚LpqÙQP¼¾O ¬'\çA“Ä}Å_a®.ÿùuzPÉì‰çâÄÄ´ 3DlÎÓŠY÷MòÖ:tIu-¦„Û8Ÿ<ÃÄ<=ƒó8ðÈðQo†‡‡[8ú¾v!A °ý}ßUÊ6Tø›U5g ^ÿD‚»„S`(¸ï38Ioöò –óð$L\|Z$Múg¨Àrò ±½UKÖ””®áaŽ.7ôàÅ5Ǻ³•%2×=/ ÛÂJô°ž-´ ¿~ý¨Fç¤ýþç`àƒ×¯y½6vy\Z‚Џ¹YÊM,[&ãÄvvƒÛŸaÇY-w>5Ľé[AC+“LZ™Ã ø<5:2æà©Á æT¯:äSÇAÙ €ìï->f¿j¯°Ð{òD㵿}ÇsШ‡˜ÎéÞÒÊüDâ3 õok‰O5ý´¶éðIM°µ5Vµœõô¢ÓåE¥š%v¾˜EMÒþÔÿÄ3C<‰ûçþrKØ =6¶{?)ÌãHT¯t ±_ gJ¼yØô‚«t ò Õ¶ÊNW7g*Ïä]êÚDÙèâb‰÷; áy•Õ vÝŸg44¢»ºL0¨­m‚y\IŸqMÜÝ}ÃÆŒJVö¸6B±#¯¦Æ›‰ÛÑEÑÊoÔ | ¢.vªf=%}øÉ®%Wm yii –+<@ìwòU a`Vv-ðž?Ɖmз¶’°—A‘ø%?_ÿ·ÀS¾ ¼¾§668÷uÒ«œá€­VýwâÙש©_ß…YÄc â©Te·©mdô:€ÏqBˆ77_çÖ“&(R8úÎϯs¾©Ä|Úýa™X:—/d²ç2¤?k` ÈwÕèA‡ÐÔ«í>R771áÖiíè“b« $$Þ´h£ÓúS½:cg‚ÉW̯ÅíD3cþYa}2"_Ã[ðåûÌåò³%8˜€@Ö —[]Z:ØÕzm{ò.û¼/_‹Czzú™y…s·]Êв³Ó½¶©JƒëÓ¦¡^ â@ŸUËÆYÑ“½˜oºÖÖwBµDuu¶K˜‚„sÝÖÕøŒ{Š“òO½ãþRšf]ûp»ÙÔtuôñ¨f›ËÑ"¢jAff(üÇ_eªÞ\*'|&ÕÙœ@E‹’Lroüž|ÐicĈ03'úéýsÆvÛ– ;;±£ÜädŸ½E*;»y0TŒ·æKQVZ›©­–áõ2¶Ø%Áåùö¤!†! ƒŠÅ.§ô˜Ã^ Äó-}cëDû@3š5µ—9«cDP>¨ç/ÓâwŽOÌ"’7ÇÃþNo_P@O3 ula§uvÚƒùªÑð…;Óe 놊€¤…Ï'}8×UfRX¨D7¢8D°ây™ 5-ÑB3ÈÎNê1 þm†5:OP£ÞpÛÿ ¢)<íK¹Cþõë—ÆFz‡“'·nv[Õ—Œ‘ùátÙŒÃ8ž›­JÉŸHþJ›Ê¢Ñ€$= Ø*QAM•'»ûꚀ`qÒû/ Éñx­ ³¶1%›M8›ÏÍü Hš cMþ¸b1ÐŽ`Ü’æÎãíɽPåK1bX噪~Ÿ¢†ßcö£|zÁ¼´ÚkŒ=h1ë^åhÕ?VT MŸxþì ïÅr p20fŠ.7Ûp=®ìj,j3W¥³‹G-z:;i™ŽD-F®‘“õÿDÊTV,ä~üHœÝθ$µ_MX~Zd™² `‰ZݹÜqïlbâ~MSƒ²ýñɤ¨rô˜×§‹,·KÅ>MNOÕMܬ703^"¹¹žÄQñŠ× ^|v[ÃûqÝãÅD¨»¯bå5{÷\hMFpw¸J§[û~àËTýV´ÕìJ’éùáÃP[w$ ’PµývóÛ¼ÓíŠGH¸’›èò@Ú‘Œâb󕑤Aß¾ ø&ƒ4éê´’Ec㇟¡éF ’¢¢¹55­sP—}q»¿MXêæšý}@B$$žÌÌÏá.-ogú=f©·ÒQŽ¦Î¹­Ê¨I@ž¾š4é|Õ”‘A{Z,'*º‚¡ßu¦&estöòüØ›QA^ÞcKé}Ü$­ººÝ­!anѺƒžyD—Vam=›ƒõ¹Û9#Æ®å8ÕšÖÉ‹x¶×’€®.ñnA N€–¸P'꘱><±ÞÏF†e<‡æçh6Í®¬©9=xð”÷>ú`ß÷ãÃ1éÞ€ÏÀA™ žÕÆNº*½±\¯r‰ÄÌ·=POJŠ×ò²Ýr{ÄZ­K‚ýv,q“OP V–_©É²]Ïöa4î˜N¢Ï5TÏÍ Ôºl.¢½##— {“ðñp}(Û±Fç,Éb¶ó. n¡ SÚmÏ(õ߇@¾xñ½”Œóoâ­04›Lbt%En ÉÏñ’)ƒ©ç8ó€%»õ÷IUº°”•—k>)cs¤ÝXê8õ„ŒFP}Iªæ·Ûž‘ލr°Xjಳd›Yw{b¤ÿǽ_¤æ4!žŽß‡AVúâ߯a¶ºÊrÐè ¬¤‘Uh0Áïz.·1g¹Ô­é°“÷œéÍL"2Bß03³±3ºþøA¥ãÞxÊëÇÇ;v±Œo:•EÛ>À=¢W/Zx%ÁJá,Üt˜“å⟦‡¡¦…½5­ü`æã[#+W׌HÙï½IÃŽþú3®©ƒ¶²lW{Þ00à@#¡T($*ê×£79:f;³V‹ùv›Ä?bü¢ˆécl×¶>|èT¯Æ<lœOV­˜yA¿T±·èÑÆòâïý³ËáåZM?›]o4ô--–TéWýí¡F‘vÞ}‹ïŸS.ÀEº÷¢ÑOê¶ÆèîµaB Ö ¤·²Âî°ã˜›M6¸.¤QÓð“ŽÕfeïQC‰Ác¤‡ñ…yyž z÷ÌÌœïL뮿/ëh'µµAÄbÐ>ÙÉ–iGrˆ$VO0.1a«vúå¡Ùºv`¿“tQP Û}¨=à Ô9fª–Ù,“;×Iø^GþD²¥D7¸:Çæ°÷Ù`º‡^x‚ Ë<²r´ö¡gm0s¸²ŠÊF'[æ•ÖÆRí@¯Ûj QS£­v4©§žŽœn:i‚Ûªµì>- –”šîëÝqaÀÂFÐ ©ì%À”@çãT…á ‹‹7m ¿´YMT®¿¾ïOà§©…ËÓCNIÉáÊ+Ás¹.k$(8¿·XÇ<þúd ë[êÐØÈ·»3%G#Áÿa?¦ú ´v}Pò[å=£û{{1B;G.ß«÷~Ä´!b$ÆÑ§Ïú"³ÛôB¢1ó®Cww­¿b—Î? bvAA³öCR †áö`§ƒž¡aº'°ãE—3µ¥ß¿;ÕßÐÔé}(*ZÉGº¾¦:›Íz7›æ lvV–¨µ¡ËÝ3Tߦy@óì–ÚkVŠJ?3NÊÞ‡x®Üf:ä€òrÃ5kQÑwFƒ¡\Ž?‘xç¦À§’ÆF+ü·1ºR`bøHϪÜ.yã~°2ù‹ßsX¾e¯Peeñ‹‹_ù"öº_fñ;ª~kÇ/‹€½ß*KJˆçvÉ: ¨f’ÇN<×Å醪ª ?å…~ï Nmþ^ñ8s· ?»Ò”~R+«31tþµ5Jtl^dô`YÍÞËýåÌœm=½LoÐxý_ MEŒO€£T²ì™åѹþèH N@ÚöÄ\PY9dÿ’ûùž³Þpš¢¶ÃÔ”7µ¦ÄCxKõÚ c-sCCì°°ßð…sÃt”á—-dX'áT‰ÒÞù¼„f¡*K„D…¹Ižõ<Ȳ§mmÅãÏÍ…ˆ#ß•íW´\œÌ¾Íýv# +aÐk-ô~,îóçÑÖæ;d¶[ÜAFd« ×Û/§ªêÎÅ£G¼È¨ËCÃE‚¡[d¾˜Æ+½s ´oˆ"³²ž#‘zÙêé¿z÷ €ÁRZ^fz(øæí[W ºÁùíñþ”w ]Ѫ ¡7Ç-(¿¹D阿´@B%jÔ. ¹ý¶D"ÛÁã¢Ux läÕ¡øºÁÛ[=XÇ4ïlkœ˜7”œœ|wÖƒÄ+„8úùÎ2S†Ž‘H+E–ÒʼnÐ=XNˆkõó¶™›ë«áÆŒƒó#8íÐ]Pü|$¥õ³• aFw!¡´`AFvsnþ´?í‘´t.@2rr™ݧ#'Ÿ;t·'1Èf¶œ=äY. ÆO,-b{ËýñåØÏ߯›tKÃÍ 88^bŽŠðŒW5(ùŠ»'Éã 1Ès2Ù ,mqÎPÝ&/aDTÔ,ðN¨n@ÕA¶Æ[«vÐô¸ÎCgNðÌ Bèó&ÝvíÕÁ‰Ãƒ‡ñpЛ}‹x ]&æ³î6×—ƒññøOùñ_ö÷›´°’» 瘌Ô&Kµ›2·5òYÉz5瞎““:6ƨ­­ÐÂnÕïþ§²£òý},Ø—!¸7+ݶ²²Td°d,î×y•ûÆb?\`yCqèÓ“¤üÞW²Plº)vçNí$"äUçmÞµŒüüYIS“¦ÑËÉI¯¨¥~lüŠÙ­ÊWÉH‹“Ÿ2r_bë³,Šˆˆ…ÄÄÄ´ÝQ§Ün;à·IXŒ1¬zpü¢o#Ñb}{ö¦F(¬‡šú—3üI@AV«ãÏ·Ò:„>ûûûKKKÌÜɤX({é'åå~ˆèJì¶>Q…]œŒ¦ ºÀWß}Bó4P×Ì,?ƒ¸Óá$™ë”¤wu­ñòòjg±´³Cð¥,¨Ü”Bu»ªú> #)H¬‚Äã¡ '·5]]¡´\áK÷¨HÿÐh =}ª*6¼Ë['§³hMÁ÷˜/½’¿d~ûÆÊÅ¥N‰q@£ÙIŠú¡€iuw¶~w8Wq´@==‰ ò*Cz@8d¢L"ÝÈèIúÍqs YU%55º"Ãï¾]vß_}¤{¿8˜¦ÔÃfU7‚å­:äOÇmpÿvüú²×oÇíôöïüíYüË~M|é§ëà=càÞĽh޽ƞLC´Î»<¦[Ù^,$+‹² d–'©#M 777«à]•+gãJϹÉGOŽ[r<.«¢ä"ïjMt3—ËñæãÍìå»Þ,ÈÎí¸ÃSqs×YÌÖuvv®¬¬DDDÀ{ŽÅ‡OMK;˜o‚Cò0»HknVÖáö$ 'g¼‹\½ûÕǨ(qqñBÚ 3ÂáǸ܌ôôAÁÁª%ú!ååå••Nüüü68Ÿi4j uu¿¤§£¡¢Fõ"@ |‹µ„øœô„!Ø,U»¹¹.;SÐ/!¯on:¬,eËŽ!‰Û¬tûùùmllìì씕•]6é}½—êÆµ‡.%'÷±²²òÓ§‘J›UäºTSX¨eˆH ã›[ZÐÐÐÊjÂêê®QH{¹r ÃÌ–4jaîÞ' @DDLKKëîî.ª°µ³›žšªs=³^HïIà° +.)©¶ßžð{„mjfVR\lmmÝ‚=ºäpÇ/*§ éÁiEEŒ¥Eüv¦«îºÛƒDâƒ7*2ŒyÂä—«XX“Ãî´OèG¡X—“ƒ?§Ñ÷w¶å^ëúÖ>DGCkiiypÚ/ú]òåÄ(ŠÅ*€&©© Í(5³²â+D|Êð26`ÀqH¯WtA ™Œb¡†zµ½™îë×@ŒVWV’‘‘É+*ææäàÃóá_¹•ýÊj·ñ1?ŸªÜ†Ï¼¥ÆÄÄãâ°Û:^_ž…¿|ý5hcãœôôôÊʳî8**ª'°"ââeÅÅ 7Ôx ®˜iiç,YQÂi‚Ovg àª,¤{îÿß$<ùÐ~Ëí°1Ø¡KNJú³®Õž–…Åãp-"4ÉÏÊÊJôe`eó¾F7,,,>! 8·zÀû{ϯ`baí£#XHï?M¡„ÍfQöøþèrJKs3ð¦˜ÏŸÅbè‰XX*ú«“¸Ý6F qOêµhÈÉË_j¾öGâ²Yy¸{ ¼žùKrr2tKñ§\ÎŒÑeuuÜÞxºô®²äe2%aSú C4t€3€ÜÈÅd,ÇË{çæ‹Ú}U<Ð*š­Ã}ô7ˆÉ”ìî(>0\ I"é~un7’§LMM2ÃDGçtqLuRýæN°r‰¾“£#§ÛùáéÞbÍ…ŽCêýû÷§&ÇkjjVŠýÐï@¬Å~mWÝTPWPøôñc³Gÿ»®·ˆüÎ Dr.pïA^±ÿ R3! ·ÇðððÔöòò2¼·£³sO 996{íºÌÖôÀ€ y”ŠªjµÙ$3,/9…Ó ív®ª{IG£@ áhcDÒ¤%½ÐÅwwgçªÚÚ«ù&ÿ'ß"¼.-ÌT° ~ ¢ÊñJøáá111ƒšZZÒ–÷+kjÞ4ù?†nÖº=2226GòÁßíÔ'‹‚Ðó¸Øf2•P ÆÅÅÅÆŽ{ùÚO,žÕjo¡e b Ë ÝYÓvÑn¨%D°‘òþ½»n;²ŽÎ" žå3T?CMIªEª7¤ˆõÛ*à4";øù•”•Ÿ={öþCT“ÕB3ºß$>[G¨3ôÎÍtzQ áîaW5›,/0™=1›ÄššåÁ÷¶g~)F±]ËÖµ½«´ûìr°ƒšìÙZ­Þ€`]]ÃùÅlÈ[¨%!Yb·ˆµ«rG›ªËºz:•"Ôª~v³*´2ÓXÖFÀ>O{À)Dµ¸‹œññƒLP«˜ú(ÛêÂ\~ÍGŒ y:¿âå° ç ›A.×ODÍ‹:!h±°6®Šö6ëÈAó&Ä3'Ç¢±=”îåÈ}=-" Á_À÷ÖòïãÿÌaj¤m`ihakAO¥eiDmhkfJóû =[[#sMVjc›ÿ:hÁÁÌÈ}¥ca¢½ýL÷ëóíÁBË¡£g¦g cb¦§£‡ÐÒ1112Aðþ¯2äo}ùÓëÿ%‡½–5Þoã­ùçñÆãBPEÀ‡*¾ì¯³ø”xø6¶Öv:¶¿¸õ•¿9‹§Nùû“š|²üš²’ò2¯ ÷ý·‚A ¥Ë ËªÅ ­K«C«ÍÌ¢¥£§ÜCŸ^‡^OŸY—…ž–9žôN<}pñï´‰‰’‰hÔÐÆÿ =RÖzöFzÿB‹ð,ÝúšDÇJÅÀø/4Šé?hôõ_i‘µž)È(ÿ E ,´ EL´lÿq‹˜ÿªEnÏßiÇ?sF¨³020ÿÉYh€Ïs#ü›ûý#ü×5²Ö¼1ú_/Œ·§ÿ¿âtô ôÅÿ™éYþÿÿGðÿ%¿äk9e)<èãIÉ󉉼ÆÃ§¢¡QdxMCÃ/ǧ$,'.†GGM‹'g­enc w-S |<|C[[Kvjj k9GhYtЇ{Keû‡'©umu¡¹ã¶BG3Ss¥[ Û¯§oïÕÓÒ/fz¶ZxÐ{©ô¬ìŒì¹ð_[˜Ûê™ÛRÉ9YêAcþö¾­ž£í¯‡9t µ¬¹â’—¤b½ ÿ¿)D‰Jž—êµ…™%@2mÓ?–#"ÀÅöçg~åB=s€D¶Ö¸ßÂÑ œFb¥¦£½}⟸ÿ^x·/x:·8†Î[kY;á‘þù2<^)ößÉ8±-ÞŸ/kZZXÛâÉè™ÞÂ-'ͯò8MÌM~ƒJ[-mj|€Ã¦\€—;tm¨ˆ&ž­boͽÚ@k#KÛ?^1Ö²×úuÏÆZ‡ ߨÊNÏÚ ˆ?|nNš_WþµuÌmœƒ†ÚüõÓh¯¹–½­µžÞi“­õlŒœõþšü[ctµlµþןþO=É T!©®…Žp"2j uHÌle Ð®HÆq{ƒ‘¹®…µ©…–.é¯ ëÚ‚ëß´º¿ò_3-ÞmRü-Ä´-tÀ‹®‘ým.¶µ°=zIE…§kgna 3³°×ó54²Á7QâÙâ·:¦6zºxÚNx¿UýŠêå@Ýšî¡Ñl 힎ž©©¥–=\ø´ø·Ÿ-µtuû ÌÃiû«5à5ÞmRÜvœ‰ÙÒ‘ãÖ†œ¶º·UXZ[§Ó2520Çÿýöß ¤2ÕÓÑR3é™ýz ïOMûí9htãÿ§Z1•œ /æQ ™¶ž5>7=55&pùWÅ ÁÚß6œÆVÚ9[ë_/¿ÙžæÖ>Ð7·7ÞZ_Ï\:BzÖx–Zn ½ ô Ž~Ùþ/qèö¦?t8©µ…°´©–Í/¼øe = ­‹“ +««³ž«ƒ6=£>Ë_V ­áW ÓüÀÿ¤ùPsPAåê?hþ_^ÿcóÿm¾ßÍcjað ®ü×›ìWâýÛÿi¢¿ožÿzÓŒµ3ý;µý:ÿ?Ó{þQ›ÿpñ¿ÞPözÖ6ÿ¶Öß.üÏ4Õ?lõ¯þ—ëoªû7 ý_c”ÿŽàú¿Ã4ÿ"$ÿ&¹þÀä§~¿èüŸÏÿ,þY„ÙØB5™¾……í_è³?rqK-[Ã?qqpâöó¯"t¡ Ú\OO¨8} k<(µÿ5³ÿï}ù»”û¥;n¥ËÊ”Üì[ø_"Èaá?(?×ó«wøÜœ¿îù]Býaï÷ùèLÞ5ã¯ŒÌ þªÔߦ~{ʺŽ|;ÿÛ|š[ö»®ý½}¿tØŸÄÅïòZÕ¿ç÷ÿ÷æÿ™µéYôèu™Ø´uhÙXõØuÀg-FV&6à4zÿ™%ÿ`þŸ‘á¯÷°°Ðý{þÿßóÿÿ/Îÿÿ•†§ùëI~#èB©xVFO_ÏZÏ\Gïß‹ÿ^ ø÷bÀ¿þ½ðïÅ€ÿÇþ%Úú¿¸ð+âþ<&qúÒþêßÎýKj‹¿ãC¿ ÿ“ýe‰?œ‰öOmüs%ºz–/@-Nx·›6oæ_µ‰ý÷Šÿ²´°(NA븕q¿2ü¿`yMÐŽ_ÂNÛ´ñå™iYrá@Kø‹€–ñ›0ühÒ­`üÕ%èÇ_Ìí?SÉ­+üë÷ÿÓ½ltTãÿ’‡þi{Û_wëo¶B²P2ÑSÒ1°RÒÑÒþ[êèÿóÓ.¿7ã·6üMõŒ,”tŒ n:6J:6æR¿ž®Ý­7›jiÿåôÄ­\bþõÂô—ÕÒ1üM¬Œ”tôô”l R–R¡Ž©í_žU‡Q—–žUU™–N‹™EŸ–™•NOOK›A—í?gx:fJè?FÐqº?î*üÝëþbõÏLšüuõtLoCöÏ3oPƒ@7Íÿš0³€2 s0¨à³!ýï÷X[ØYþל¿«Û …›Š~ËM†ô˜Ñúc- z#[=3ö´¦óSànp·àHÐ^þì ¥Yøxö¿}¼å·‹Ž¿±¿šóû­™¿|JÛÂÖÖÂìŸOØÿMÓþù:Î_Nãý±Ó6z€Aeû_÷Nö÷+øaò?vå_¶ &«áÿ@ãý“õÍ_3Ÿž³û{ÏjÚXØYëü†Dܪ:;Ôÿ; };åÿ?ÍI5ê­Cü·:&ô?¿”þçÙí/÷÷ì÷‡;þ{íøûªÊÿ4þ©]ÿdµç¿ÕpZÀüŸf¹?7쟭¬þwÚîœÍþ¾­þ?¶Ñ_NzüÿÙzÜ¿FD¹ÿf3×o“ÿ©ªþ%±ñ«ú÷àÿ›ßÿÖ23Óq¯©id®c Šÿý¥±¼þGÏÄÀÄø‡ï2A¿ÿMGÇüïõ¿ÿG ”„Ð#,h¨<æ—@î´÷ðÐl_4 ^îk‹ ñCn ÿK®ÍŒüýï3;ÆoO;á ÝÀý<1@NUÒyNfd:1M]>4®ZÙÙ_›-l,j6ifl÷„ÜVªÿ¥Ùz9ÑaZ©m ~ª5!ߎUÏêI›C]ÉÚÓ®Üi£‹…’¸»NI’INç?Ú.^7C2ignÎòdG]#{oo/44tdd¤Â|šÝãº&$¤{ªÒ¦P½šXÆkzŸ‘…—Ëy¨µÕ¯ÞB —ýc´@ýàøøxo¯£³“ÝíÜ–ŸŸ___ÿÕ+ÏŠŠ“eèOª ^OZpssjÔ²»SÑsq]®¾xñB(ôùËÿÕ¥¥Ó‹‹‹³³å¥¥x6?C×õ"ô`¢¯wøÖ€ùÐÑÑù½öG€'""r;™v€©%¿=U9Ø×÷óG CW4ÍÉÁÁb~o{;«ÕB30ÛÉ䪂ú‹uÚ-AiBaAc¯”*|1¨kœÈñðæNf=ê=n¸wG@†¼åÒN®¯.°11›[Z„„ 5ë5…„ ºc™.©ÔÕÕ¨t´µ¢‚1h>EG³00äfg¿™ªužVW„àMívYâ÷û”èÁ߈km×e¤¤ÂƒƒùHÉÈŒ~|¦ƒ6úìôô[uunnn‰RÞÆ†ñÌ9‘è'RRRpæe©é8ý½{¾Ê%ú{ä[_½¾š?Ã`mc£S¤ÔÚÚª¡¡áìì¬Îu ¼7Q)´H[ë»ç===ø—888Ú,R̺ÂpyžvaaaÁ¿|ØäØýFTôÌe®lëkC‰A/ð#C]Ý¥ÕÕÌŒ àvSSS™’¸>R""ßsXŸ÷„âp›˜\œìöÖÎÔºøèêé©RC-{­ o’âùÔ2ÿ FMLð ÏbúZZ/‹V®.NUrrsQº.ÞôõõÍI))µ›Œ»¿knnæ¹>ÕYl /i±±X|¤llÐ?ŽEû ×xµ'AAA¸1ðõ —†‰]uõ«&ÿÇÍû‹maN:w’Ñ¿«?çveåááaamk3˜(5Ì?88 v#'G@BZ±X_]NJºYéÆýÊ–ÍDØìkllœ­ÿ =úfg“F‹ËË”`ž·…=g+~ÛpW^~¸ÆcºÞÃcê›U³¨¼¼²2ÁàØ&V2è Áògø­ãÖìfÉL±˜§ÈÈП‹‰YßÜœœÿyB³ékÁ†HEU•Ãi_×ÅÅÅGJ\<$.Nu¶ÎM]Mm``À‘ÊàÇçùõõŽyKJJÊç88¾vk[[ÏŸ?¯æÓ÷E$2àˆ}ffæ—/_R¢çš½ JMMM†x<ÀÂÍÛ÷|úR‚aÊì·'Ô«íÉHIY98À@»¬tû?ÆÝ¹¦{2¶ Üxª/²µµ5»óaVn®‰Í´üw÷!ËoÝå?ha–ë´…îôžÎ5¼ã}wŸ.FÌGÊÝýú•j@ýœd,#5uÁ…ÝÕ¨R<ý»>6/Цî$gÚòðÔƒVÞÌͽååïÍ$£ ËǪÔ8GF‘““ûD©Ì——Ä`€ô(÷.äçw7ùX9¹©r3ÕÉ#ló®tœ9Ð e¿ø¯Á¿A3·ýdY4G4ünHÈ·øxO8³„kOØï²ÂÁááe.2I1Þ)å³Éýý.µáÇaÆ–•Ãjæï°ßÒ.={ÏÝÝ®N½L£ßÑadÅZ¸±1 ¢Bxò5;4Éÿ¤ùŽL™‘ùŠFÕ!°Ã¤¯oÒÖVÝÑa|Jöxf“¢kH$É.6×Ä÷QÅ! ×ñ¯óS³«3µÕÊÒEŠ£oº{¨ë,_._žÕó¸åà°˜Tí*\^Ò­Á†ÞÉžxmYy‚ír2ÓùÿcïKà¡ìÚÿ•VZ”öECÂc_†RŠ"eËÒ0ƒÑ˜aflÙÚ7¡¥ÝÚPÖJxJI(ETD¶H%’åî{ö1JÏûüßÿï÷ù7ïûh澯së\ç:×ù^×9÷¹Kb4)ŠÂ*&N)ëJÏ î~}éöm%Ũ¤Êò¨TŒæ›†f-—ßÈØÈ²—/û«Ÿ*o œµ0æ|jªšk餉ûUVî»–U„\Täö½ /M Wÿ*È ŸÑö}òøñ…¿nîóx…©¸{NÜÿ˜;¹©4¶¥"3Í ÿ¾ºtðݤâ.£Ð]ÁW…î¼jÞa  öñó³ Ó³vízã¿”D2Íx±ãDé˜#SŒ­÷4ø™>.É  ð9qêÛNÅ8¼bwŸ÷ù%Kâò§- Ï ð½Ùœ)ÚÛøá¤m»Cö §‚}D?Ýe m©ë°þ˜®Æ’RFTJÊà FΕ•'þ®ªJ\F8 W›oÐWz¸N¯ ìšxû@¾µ2È.³”ê¥ÒIÅ®XÑÒï5ðí£ÙêÕ›:.-&¿¿{grRÙ€èî­? °p¡¸h¨$ƒ.]P6÷R’š‰ñßÕémÀÇÞ;!_tö¬ê¾iÏ[zÕ Aöcf¦T•šÒ¹ÞØëNoŽÿ V¸ãzTÞµä4JíƒPƒ“SFTÔ£]ã/ÎQ\onnf#|Na}y¥¡á‹ŽÚªŠr‘+¦*u9þE›½±æ“‹Ãk ô$kRÈíÁ›æÏ7ŠŠš<èßñ(R<û•õþ-ù¨ƒŒÃôfç,*rsLQÙ{ö\5¼}ôôi¡®+fQŽ!)5ú¢"úf§o¹v»Y|­=˜2éüÀ‹Â Y!7OŸÞ\ß  ŒŠÞfsúرû±ÚQJ ð2ÆiL]¾aÝ¢ )YRó£¨"Þ_\öZHñ›æ›#ß‚zB猟='8‹æz3GO;BQS=Ý4&ÃÑò¦ùª Lô÷Tûè½èÿ¾4òÄ{!!Iå©Ô޳XÍãǨ²¦[)5/ÑåŸgIÒûßÄhÙçå”VÒkõý?“ëô†~|üø1_æºÝF±†ëRK-SÍ#‡úÄήb²øË™(a¡±—–åJ#?tÔ´ÝÛ]I×ï5G^¸ý{ä «˜hÿšš˜ÁÏ¡³ï`—îñi?pè@¯®~prT”H˙РI‡hÝ­7-ã;òý6jù¡+JKéïî?km}tb–°¾Ý‘$úÑØØlÊ›”=Žæ§îÖey¿80Cúƒ<®ñQÙׯ»^Úš{šÊ6‰ÏÓ±úðòúåK¾uòü®&$ ÃÂÐ¢Æ .-ë>vœÖÓ9¤ ¢RRIû"åfQøbé+Skï|qj)w}šu*zþA¢xOg~ÆM]jûËòhÕü²«ªÊÊ|£Í‹/=Å"r­¼y7e_‡*5ǯk£Ÿ_y¶/h÷‘éÖT€i?|ð³ö\YY᪔=ïÖ I'{—–W9¶M˜¨|ôñœ†É6g¿)*£È¢‡J b¤uÕ_4 <ÜÐ[™¸òLlÑ}?Ų #IÇŽí|{O·*->|Qbg‡¾‘“ÿÚOŸ³ß~Î °‹6}8Õo™|¢†fOFºú@÷¦Ïû=†Î‹ðîû:ðá©èÔ©?^Õ„l£l^)\ä¼µËjvÚáÃvO¤8æŸÕ¡âC|{g–Z®jyÛàÀû%ÁZæ} êGE-™ÿ½ù©Á’ç/4NÅ„1ÎEš7n€&Ò§]Jºw™ó½¯./ëý·Ø‹¾nK×§²ï:Å*±ÆÞŠÙoذ¾þâõ™w $B¶oóð¨o×Ë ñNjk!l˜¶%èS×÷¶¾îJå|¼¿ß†ãñ{‚~Ç/,.ÚÞÚf).ò@ …B5ÅhU •nl Öóíè{¬ä‘;À$ k©çøñÚ€ì+W¯Nß?­67ðûä˜'_?Z;{!Ùüåóél§½/‘ÍÛŠ»†zj(›Œ£©Gfö7\ßÞ§ëÛ[~¹!, §7GLÄ"rQŽÞb½SwpÂ…þ‡¤Õ£oˆT´õL¸~ýNL…³e8ÐgÓã‚Lʺƒ]¶66K##‰:÷Çl˜d‘ž}ãf¨ðX'”c°“ÛKÊÇÍ¢Û¶‰OØýHOf‘öÌlßΔüÁ¾¦ŽåòÚÚ2–WÚ¿|½ãòD:i[ j°ËÖå[}+-6¶(|‰Á©jÇ ;lÖÙ(å´ö²óÙJ°n 6m /ºúÙûÍŠÊiï;¥ÅÔà§O?–)­$0ˆ2q܃EÛ׺lÞ69!)){·¼ŠÄ¶²sÁ¢sí|šnü<õï§ÊÓ'ÐìÜ)¬^ûZ¶ ¢­peûyV›7‹/Î=ª‘%îx´6>â~ah*¶ýFÇóäés•õuh²“K{ÉýçÏVv?D53†Î »b~væý‚ãÁý]õÝmïK½kƒ”·Ì3`v@fúÅÛ¤m’K†ü®ôU¿<¥¥vÙ½y<À¦I ""úß¼yרrïE¢ÖÂÞž@Î+~æõøÛGZBªÑŽ3ºi{÷bD¼¹ï”házû}SpNà÷®;´Þ Úî•Bvv–ÛÚ6:”›*j<í’{±ˆ¨°—ý{±[1?Rí4÷žõ_k›§÷̆ׯŸÍ ¨èò°w|£æÿ9oÅn5ó¸Á³­›„jJ(èè8l¼^õúNÁIÅùUg( &ZŒ³HÇv¾Ù4nBÑÞýe•í ú‘¥`¦Ì¢6¶T§ãfÌH–QnS%-Óøòå¢iSègu}Ç=O76ôòz^*ŸÓe«¡! þŸ”DöŸs@øRÒV#£ÙkÂ@ÜÊšêòüº|s·?ë‹.1sò¤çñ©®ôÌL¥çéô­%Q/Դ謭éû+è⬮ËÊ'QX2qg—-vÑ%÷m—/«ß»×…\ßwútyëóãÍqñ{¼ÛJ¥e]j³3Ó)ŽFÀŒ–{{çÞù~Ö«aÊÀÀâÄT£ò]¶8Üôò QðÅÇç»û·óY(Õ?’WHž,ÒçxVG7dMöŠÓ1wú{¤œœUccÃ÷íQ̼Õú~Òª¹â_¨]õÎHóÔSêÙè>¿9£ázéÙ [ëÂïº+‘ñ×ÑÉÅ;¬Œ(›GF6:Ø?Þ”ªvÑã¬Ô@Ôû£³*x((/,l²a•+¸òKØ+W„#y]ɺµÞöfÓW‹Š)k6‘¤’×ÿå)mÑ¢¢ §ß«ih uW…9kë„·¨L_˜¡ßc¥¤œ6uÊaÑÉ&,Z6 Wõ™¯½ådäF§/0t»?îÛà€hÄ¢;nï¿¶j7¶±1½©©ŽÖ4Åñf‘SÅ•/“'ÿ5Ir] e}¬íjoâ,?€/¯‹xgŽZ–´£Ë¶¼ã‹ÙóÏŸ«ËÊö\\ÓÙÝ*“½=þ^ÞpR±—sCÜ2íI’ý5JÁæÍ›§IЩv—KâBô7ç’Ò¶`ÌÌ^GÍA$æ÷ñçmûþÁÞ¡s#Ž—ßÉÓwý:[³øÕ«Â)4ÀÞi0ð5QCZú]ó³*ÓÑa¥‡0š;>Íñ¤ØQS’WLÂÍ›3óštªîí=ÓµëÚbë)(8.v¿­ÍN¬ïæ‚ ùáâùóo‡nKDÜ» ð˜¤Qò‰yÛ»[^Ýœh·êEU¶ì¬JjiÿåÃ’òJ«õ¦¯_´z•:”%Žì|y=àÆ LIT˜cú£ó%ã“ZÛO_»6±&cÀÄþU×ßDlNëZöáUX˽{^±ß÷ʹóÝ@WJ¡äenMÑÃĉúåÕêó"ö6ôímQï;þ½ñ¤cBêNÓèh£/ökÇ=Z¾s§lgMÝ6÷ዳ3ÝŸ'VVöG* 'L@ih+ 96SVK ¥|ûy§!jn±—žL£™‰Éì!Çç-+¾Ü?ºôº=ª´1c0,gÛYG½é2õâ%ô'Œõ•õ‹³H¯Æy|Tpc ¿c•öû×DŸ»BSqsÇmJÕ;c`°ÜĤî~>tüPóƪ$J]`,˜M/ìª(¿O@£AI ½Þļ¼–ÊÄ;vdO™áT¸§3_9جx9ï{Qò­[Y·ÿõ×¾Ó§?'Z*´h$®µKLü¾î¤„²rš‡»;ñ‡åÔ0}"1ß$oYâ‘ÈnIÌçgwhÓö†߸!blâ¿[¬£Y˧‡¼p^ŠŒ?i-*jðälе«W÷õœ?vï®ËS‰9K†Ý»k“‚±»SnZíJéI%µ¿<ãQ¥:oŠeŘ5¨È¨®÷qúÏS·õ ´gœLžt~ÿôÌ‚ÌÎô†ü†ë}/_žú\䜰é[­o¶gl¨XÑVtÑáù³fÞ°OR^ziãt“ç.ºC8šÜÛY¡2ïÔ±cý=obR6ËÔVÅë=ð]ñ9Ã+ÔããæÐ;×rõ÷¿½Ó ~oÜÞQ«‰žÒÕ9c÷Îj7nª^¾¦Aì *l,‰0?“å¸áÓÁÞò“¯_k(?`à,¥C¾v?zÖûY…åŌʧ‡Ôr§ï•WJ¹~]ÛÞ¢¶Õ|‰=j‹]MY~þö§¬ö”ì×îw|#µ´`ƒÕ ÝàÀWæO¢RÀhjÕùþµ%27 äKÈZzž‰‰ö¬9²F·Ò­How™ÐË7Ÿ}ëÖ‰hSYËDÇüºÓ§st[;yrŤ‡%%‹kjãé3gÎTTT<ó0!ËÎÊÚuë){B££=Y¸åL[kk@ß7Å-J㪫‹îÞÁÉÇξZ¾i-®ýhni™=k=?nýF‹—¯ê•œr~˼}8Û€¹¦ÝݯâôkØz`ëöM]è7Ôÿô<ÅÍí®W`sÙù™iIû¦¨ddÆõÎ5Œ;œzõªtãcÔ²eÀiçy¾3ìÉ–:(Þ‚••‘ùÞ×ç“¿äFi%ÿòÛeêùçwÆ:n?~üB Ró å+¹žÚµo_TÔœœ¼¼ñŃ‚hëDÝI$"¹ÉÝ=¼¬ÒÞÐû/"Â<9aÆ'Q3KKK‹nºèÍÚ;«þέÏH¿ü£*Š>ñNñÚÍ¥q6k×®5n÷x|Jû#vŒÞÑ£GS^w9& íØ‡–ÙŸ˜2>>)ÉByºð›ØìÙÁ(3éÁÚ«ñ Æ¾– ¤°°°Ó«š»Ïã…ˆV66«½'Ó«ÞIVßör¶···²ª «¼½§ãc}½!”Ãÿv‹XÑli{°›ÞJOÒPW÷¨Í²^³f¡Óì쪪*ñ6íEáÙÙÙ@¡…›óƒ±×% ®57»-]ºÔÌìIYÙ†=b1OVO"‰]oƸ¹»Wß"Ѝ†ÁdmïNºúéÚ5tPP =räHjGší¤d}ýà÷=tèЄ @ð¶ÔÆiÞœùó‰nn;]7\¹²§£6ùâÅ‹©©‹)B‰þ Ãç½Y·v?HÃ))¥hR£Ÿ¥,¾ôe†˜Ïý­ó|ú¼ÍÌÌ6mÚT“ü1ïVPvºÎª±o"ž={£I‘Pw?^ºSxb}}½˜áåË—A7‚Úo%Z²wýúõ¾¾¾ƒ5™$Šä`o¯µhš¡óÁ€põêÕš”º÷¹‡ò'N«9»¾ßX‹æ©_XXèååå—=ØÛñð8òCS0Æ–¶¶%ú§l‡*Ì ¢££ ð|ñ÷÷Ÿá\R•b·ÉÚzö¼yÀ¦Å”¾k®Uì¬NßVÿà`Ú–ÜG¥¥²Á®µ(Ãæùi))al°¶öÈ7žÑc4kÆŒcÛÞ!¯Ï Müþy×®]Ÿ>yÖ½Û¿ÄÝÝü3”PWW_¾èÝG«ýSÇù”¤Ý,^{"hÖÞÅ9Ût_¶Þ"†LÔ ç¹(d°ÿû—Oˆ¯$÷lXµj•îÔ=gГ$EEC>\YieiY±X×ç­á7£—5a™“wN¥R©­­­&lܸ1**J+|ÿ¾}ûöî}–’dS\Q^þp{þüy]]Ý‹/@C)\\Fõö.ô²_³‰F_KHh~pP\GG'gSW‚tþc†N@ÓËjè3/>ràsêÖ›¯ZZZP-,,LM§\'mÝz$*jµbü•+ ,˜)ÓÔØøN«îåK9Ϙ'C›q‰§ãâ"üÖ­ •›xh5Û&ô“™ÙÔ“%AŸÞŽêØdcS?$!>H˜±pR{”£kDä{ËtQ.=<¼’tM|‚ä*ÓK;üÖ®é4«ôqÜ“[ë#örGÙË—ÍO]nàµ(3#¥¬ogŽì´&id'$°  #Ü|¥¡„=!55¼¤ÑfÓ¦/[ ßì¾¶7£¦µ=z¥aÒ299O­ØŒ¶ÆÆFÿ|O ÆY³f˜i îÇÕ5¹Ö6¼ I¹Ö3ùdï²ïÖ\ºùCJdãÌ5¶òòò@ÕÎÅáyþºÙoÜïL›ÝXõÊY滕GÈ_'^ Nóù6éí13krŠá̼ŒŒ¨Y÷låûuä³I$Ð({û×G$WÆž9s””˜­ê:­6Iǧ}^—Éö¯ÍÏVM Ë‘š±¸JÔɘèè–úúûẋ'1=_[*l¬½î¼^ÙÝõilFbuË$Å9mk2PA÷tn9•‘ñ­­*í`#ðmCò0§ï5û‰geeåT5½Ÿ4à3µzZ“˜MþîÝ»““Û~ôL_¢oZß´ª%*£xí¬Kíˆ3Ëu‘66s®‰Ž~ ž^;GÉü¶p•‘‘Ò–--­^ ÐѤóÀÕ¬[·.Ë:Ú¸Vꬄ~ ±ZÔñã ÝGΜ1ë¿uáB={óöEž81nüøÙsæè€²Ú”>I§¤;¥¥7*Tã+[›››;:ÎÆÄÄÄÆæ¸<9ýù3Õià‚Qè‹»ž¾nÐGààtutÕÅß¼y3&ÆÎÇLJLF Ù&7Gøfè­”œõª©MTÁ»ö—×…%­”Þ.ŒÏ^¾5³œzu•dûmk›Œžñc,èãà‘¤©™¹)m 6d0ðcuúÇœƒQíOð^T¬I~ $Iñ=MaSêãͲu:­yÑâÅX,–F£9æj|kß=qºÔž(Å¿¨­•‰õð§ºzó…ˇ­56663 »¶suNÒß´^e{£ïãŠßy¾Hs|ŠÇ<¯¬´IÛbf:¸¯ÁÏÁáLLÌÂãñ˜èŽŽŽc¥«‘¯«›ºPÃÍÍmÞüùFFFò ¢Û^ùü5ϤnŒ˜Mˆ›[è³g·xz^‹Œ|~JÅÙÓ!DO©!w\”û;Ká9ñc{û‰'¨4ÚÞÜ$Ý5B'ÛïðYß+Ž\?ezùÊ•Ož¤œÑÿ‘“½»èĉ¬7@ٳϸJŠX2;NŸð­Ó¼Ôù•Å*só§/^øÄ•£nû´TThÞ>·ÔÝjÙù懅äî·y‚—ÇV$ŠFŒ´ŸáyWlë!! âoë–؈—ê¯^:M©¨,ÿÜöýË «‘øD(“âä´¥©1²+íŽÏÇWù¡§vî¼ò~ÝáÛÂBBÍRvvâÚÚó% ¤\Õ/µ†DhÆlÛvüÊ•9+ îM˜î²`>Ñ$ ±}ŠþlǘŽÁ>AíãÒÒÇŽ5 Ù˼32®LYÝfåA¼÷¡tñ ,]â”5^tuÆ‚5{pn½Ÿ·ow·Š\¥ Ú±¼J%zÙÅÕS·¢OJO™PðâÛ—Þ¨±µxgçÏot“{Û_$,Û7 ¾†ñíð¬Ãì¾7ÏàlÊùó¦8ì‰Ý4¡‡ÖRTU—þõ—”©ç¶mâ‡D/,Ú9—}5Åì¶ý"I饧ô’JÎσ/_1[¸V¯îQ½)¨OnƒÃ´Â­BBÒIyyƒMOb””Æ.19æTT´Ì<.êºíT„­ª 1œM—=P'Ñtuìò (‡,¼‡‡™÷ì÷mÏ×™^¸õuJ¸¦¥ƒèC¹Æœ>­ólKàe!¡jèWOê~}Üjîò¢sQ/kj|[e<Gìä#dxM‡-[ênJtºgN¶2²½ˆ¶šRÆ ’-, ¯F:tãÆ vÖõu䓀ϧ;r Ûòï…-l¨¯¿pá–¿gÙ¾”¹sç: €Y.Þ,f5ÀÔ¹µ( »>§OŸÖð¨~€Ç„>œ Úµ0ÜK0o€ù .‡¶¶¶ƒÝ8¸W@+))ù`Á´ý ÀÑ_¾\ètøfð¡lݺC¬¼¼|û—¦°» ‰­ù pÿ Ô×®YóáîNa&'//·‘‘žy³u¡ùÖ1c³ï£54lãäÎf:{'$4ùÐÍŸ‚2·U¥Gæmï^¦«sÛXúÅÒ= RÃ`0––Êú¶¿\qµðGç¶mÛ–JIŸv0Ê`àëñèè¿l Oð™'OÎ}vìgønYðXQ± ¥uëJ\è:ôTð…þôÔxË`hÒ²Oªª éWÄ^ì(iœ¶HËóM^Ðü@Ð6Q‘fëä™kB¸šúÙ”ìÚþ!wóøÍÂBY&'|‰AA ˆæ<°æ‘‘»'瞕à ޽5üœœšZ ¾C˜ÀÔ××÷Âå3gÎ;fA&§Þâ·€çêA}ô6Ï[='+.›ÑëX’_K Iû%y,bãƒÇÔù`è^BQÝž²äMi.¥±&õEèeo®9ôõøŸ‡ž‹¼Þ†ÍLqñÚׯA°%"*šIz%•÷á´ÎÞ³ÖÏÄ€‡¹ÕÐØx9)é‘ËÍ5a .Ÿ?ÿ®±Ñè*²íú…³V³‹¸ï®x£CïªÉrã|¡—99AnÝ«ÅSÿ®„6,o ùQb*䬬耹¾5ð«h”‘•…ÂØ7ygN©Tî-x‡ØSßаæð¼ó nx<ýK“Y]roÀÛÎkÏé!)·Î 7TCl6ƒðï ÀЖ†0R¾ƒ(|Ïž=ÅK(u9ó%߃O}ýgÈÿÙe\ÝœžTPpÐ C ¸yZž[kâd¥¥ñxü"ýÀÞýK‚Akž%"¯ ÕVîE"d¦t™,v¹yxÁsQÄ/"w]"ån¬µÐŽõºÁýZûpóö…ÍWÝgû¥ñ¤ãLQb)Î íMÜ»×hˉð: Oœk¢OÙ"'‘s|¥—7.f8eõÓ‡ÎÞD íH%ê^— déyxGªŸ={¶ùY½{è«—.IËÉ%\»VlüáÃUæ4šªa¹sç,í:ýw'C3Š¡¶ŽÎöíÛ›šš w~k5qºÄªIJÝx_™hYÀØYµnöìHãŸ>½€B¡ìt°¶±™) TwÒ´ë„d÷œqBç„-¼#3¿óÔÓÓ»uë€*±±±òx.Ê÷n{t B¤ýSútÖa/4‚AÀì„© èfW6ù,º`\¶ØÖ¾7w“û=ÓBe‹ # YIèܼQÀ‚Vs…î~Ã`޵ÎÜaìgÞuh ?ètÝÌ ï[Í»êrrrMâ·O¤Ù·Žd˜¢bHøý©ói׎NýóR±°ÿ›Dq‘hŽÐÓŽøÿðå¿>ÿ ­ŠVãÿ—úÏûþœÿôÿãùOkƒïÏ™NÎtús¦ÓŸ3þœéôŸéÄ>´Æ›J…²ù7Îx¦r Ê1¿©sÁ’0Úh Jý“Ö11WöÔòZ¨úµP4+H¤ÿ a08åÕóÙÜQ™‹‹<\lpT"48‹ äny¸@pOpù-&àNx˜ ÐÈÿÝ6|ÆĈBý6ü|ŽÀ™JùgÖ£Æc=ªÿÌz8]¾öRŽÎ,ÉœÿSCbF9L¾x_üïè æãÂÍÇ…ÅÇå·ù¸róqeñqým>žÜ|α8²³Al8ƒ˜€•%Æ qàõ‘àŽèG‰K&'/¢ƒt€àá ÁÎ;‘T´5´TñxUu5‚–‹^ ­‚×ÔVÓÒvÆãœÐR²Ê0Χa%W¥ÐTû»µâ54ÕµÕTÐ8´¦¶¶Fï¢êÆhkâUÔÕÔT\Fª•ëd‚ÿ]'Xü9æáÿïüëÀk6l PY/v§YÓœ,iDÿ»ù?4ƒæ;ÿƒFƒÛòÿ…ÀˆŸö7+bÇz}=ìaR?7†×TÓvÖVÑTÓÐÆ©´UU´ðš-NEà¢áâ¢Wý—Þ_ÿçóïN®ëß#U5UŒ _þ_U]ãOþÿ¿6þÉ ÀhéídBÆ 4`_Ä *ç/°¢ 5 \ t(ÿ"Š­ÇyäE€o€x?`^DùžnAs9¤2ÎqÂõ¢>0`“Ò¼€3ÞCލ "ÐaÝ€ŠP to*…³rduÄr&È)Û+)»*"‘ò€o—hÏ ÀCÉyS‰ Á˜Ào®Š _ü‚ºG`†ápc5SViÌû¼íbÝõv­ÝGyàèÎn iÊx{_Æð´²<—<€Öø8+i@£ñJ¹ÙàHÞ9HË‘(Îp.A…£Ó©rHˆ)ÏÅOEž£d»-@%HÓHùáXSI¼ì‘K‘ \5󖀦 ¨S%D%i‘<‚(­PÚŒSÚŽVÒV]¾TYÆì(©£ˆÒµ—³—‡DD “âL²¤S¨8W`֞Сf<³z:ÕÏh,Ù¹©‘Ð{4éx„¬,ó›/‰B‹eÌ^l7 èÈ=¨û‚ÀÎp÷äyëu±Adç¶= •`J$o“ƒòý ¡‰.9Ii9©¥ìÀUô½‚ÖrHèRf„†³jF”–ÆVÉ "ŠpÅlÑØ’1‚(X4ŽX¿¨rt"‘ªsÆ9»ð¿WS·?éN­Œ*Ð |. (m ÌrŒ¸2hEè®"ÍâËñP sVŒÕjD"@_i†þV8Wx À?KÉÛ¡t,ÏÁˆú¹J:ƒèžN` 0„f|G¡š8âpÝ’à’/}€ä"¡¡Õ&@5ƒyh²6þ E#ñkO9)€=X²ÓsôÂרäç¤pT0>áScá„ _Q–¬¬) ¶jnÏ}„vÕÂe%˜ÿ°e⌠Aªá ÌÞb–dŽŠaåùmotíåi ìo¡ÅÜ‘­ºÍR2ôiãx" ȵÉ`–$(99fr!Ó°aË^&Ç“*Ü#€‹–iëS †—€H&¨ðþp“‘zEެ+¨sRƒÔL™èƒ,ò*Å•J Ñ8ýÌ5»pœÃ•c¤rqSôöÄ­˜²€Û/yRhŠî˜ûoKi9äR®L&~`/1¸3ý’œ[çÆtø…ËPêºl»ÞP.$Ó‚¸šå@=Á>SD@p[Á=%ƒkÀËî‘=æÈŒyŠÌÍ ý'r0žéÜgGí|· ¶à6÷O6 žà ¼ˆÄüª€PaßdºUÆmæöM"ÍÛ'K^àU˜·HÄŸøW‘á]K¾™n¸÷'9­áXNmÐI꫈>?©Oô‘â0bÒ£àÕ æB‚á̬€=Ãö 6‡ZÄÀÐ*ö”¡\ŽÐ›JbNýÌ›&œ!<œûH>כĉäøJñ*†uÝÑ›$5RþE Ú†ÂK-h’àj·{cæÂøH`DO'\÷ùrçì4 OR Ä1¬˜JdBûŽåÙˆ’,06 ð²·: §f 4.jÖ>j!@Š€:4ÉŒaÀ¨d,¯ñIÿ`êyÊæ]Xe·ÉŽÐðrÎTo'š¬#vêfÐ%=B¾¡Ï¯nEf!>mónó…mñÛhŠ@Ëâ³®Q™¬¼ÑÛÖ0]cyÖm€œ ÞWÌH}³8r± âMoÐ$ sPè†8oâ‹‚¢S \[ËP(iex?O“ î`±À2p‚@9×Eø¡Gþ‹4Žê "W¯>ù EØyê âú>òÄ7*;"Óåq]×ËPÜ Y,vh®*Ü?0¬eH"KâÀ­ðOØ6dÖCƒ÷§G 0Ø[(2×Zt¶¡ÕŽUÖÁ* C=¸a<¾ŠJ€ß/Ç‘vü€¥üWç—ŒØÁ‘$/g€% û’Øõ+l¬,ŒŒ€š€r `¸;à!IN8çm:°cd fªÈŠZÎSHQJŠÝnd]–ûùm¦ã‘œe&¼“œ7™æFt¡Ë1A=@“4lnP#ááóó€o¡™XKÀÒ(³µ?é^æ¢ ÷ÆÀ‘V‹ g¦hì öòC°˜X ´ íHà+ÌA¤¯"‹Ê\‡a«8Œ¸Iöìû€ aY{9¡k—ï–¥${<˜gä¹Åe>P¨³ƒÏ( EÂ#kÐþãF¨À”‹,=¹)˜ИB3ܰìáÂr:Dæn4æî3¦iš¬_edkGTPqÐÂbò¢‚«gÀh‡×·@Q´.¬zÞQ  ÜîÈ£vïÆÑ¶rQéð‡¨løÃ?HfB®©@€‚ÕÍeÐÎt$·@qynˆø3ÁG!<ß~*Ø ÔX‚xÈÜÀEÞAa7è™9$ü(üìRÝt(Šr¤¸¸0žÃƒð€î[þµ~¥ùêÕf–k@„«¬DÁõ‘ÿQudAµ­©2:¼ŒUgèM§ƒ^îóq>Ðmæ$Np¨Ë±èþ°ýÒ¬Ž`Ýçõl^ý2ˆùºˆ³(Æõàw~UѲªç ÉÕM¡jî=ÙÃMƒûy`ÚîT)6•°°1„8à/Œ‹#lAaÜàÛðÁÙølèo‚—ðT6wY¾ƒ9¨ð?›2Œ`TëmÌ2?[çcÎaìu˨ìFó`ÃaÔÜÕ±¶Ù ¹®qv×pm­aÞ´m‚y‹½ï†™×¹vÂþr/_f4ý³]”ü%»Y»wùïòìáÝöý_gæº2×üϵöËa:бÎürøñŒax©™ûyü‘Ý—.{{Øð øg 2bŽ`¶3á÷B\I/FꟇµø—ñØc=Rqø– H»Ãö½Aˆ÷AöuTbOjì,›áHÏqg RÎ$Ú(R´ìGŒØeGÈÐ2Ùqðš„ÔìíUHžeîHNâb±ðÃ= –ÿ­-(\Íù­'£ÙwÄ­^^-amøaÛ ¼·p$‹áNK ØÍÈ…U†íïåÚ‘‰æTû M³Giù̵mhêûóHïÿ½çÿWiÛV© #ëÙà_>ÿÏÿü/FEECãÏó¿ÿÏŸÿçô÷oÀe&Ìs[TñhÚ‰ ŽA«ª¸¨©i¨;ã u5uMm M´ÚŸ³þgÿ˼3èÄ"oÝQËÍÑÀWGG"Ù™„òÀyþ{çhhªÂã_E]EE ¸èüM0‚þŒÿÿÆù¿ +á…8†àõ;ËXÿÊ.US×…nÀ_Fr“bž‰ûÏ ë‹èA†ÜŠƒŽº‚ã)(ŒÀ°d’f™#Û' ±‚êâÈŸ-ÔK¡âiX)MUuE4FQVTÁ0ÎöYM~!†Õ¾’Bö!‰²3u|'”e’£Ã$PÁ`4UÕªêà‹æ2`ÐÃK"Ù…¢™Ç:¨Š-gp~Û“xº‡·[ †ðˆ)Êy¸àšŠÚ@n-u ¼Æ¯äV,7‰âúoI X ’SKS’ƒVÓœÁrBpND‘îÿoÉËÅR€ÜÀé©Ârc41£‘[U°Ü¬QòïˆÌH¤ÅhkÀÒªi¢G#­š@iÿ1ɦ¦Í° ÑXG‘87¼££Ο@&Ø <ΓNô! Œ)èpЉ°  CÀ# ¡r”—‚ŽzcnÉDP)Þy4¤:m0˜ —€QÑú…œ ñçÐú"h(C¨jjBuN'â<6fL h}¼Òî rb·˜){ƒX¦Jê¸òçÕfÜkß! ´b±§Ûm Œ®g·Óµ®tÿ‘xiÅÃ{›—0ð|eä~™Êõ¬qZ±F­4!2¯ÇÞD>¬ßÄä$NËÂÀ€ø=SSÓ>±Hüf§Ã¹ÀÀ@ÝŽÀÁdŽs!®dÐ*§ë=­Owæ YC¬8 þþ k¹YHdBDDdË+)1ªœíSw:H°ã¥¶“ì)ð[&­ä£ëYv Á?*hÀÍÍã‚~‰…=ÖÀo©¤@„c½==õõïa!!$·®—½½oÏ ÿ]¬ [R‰)Ëìhw†bÒMMO‹!“’n‚d#@wÌÍq22Ú¼€õCÀãtÿ-º .“vãüÖûá4H•ú鬟n”ñX>ÿâáö Ÿ;¯´”´èÙfÿ;šçã¥.g«…:9²–åC1ÿ—«ûÐú޾ ñÊz‰Vc\LŒ=è3õ—Ó5ªóùK{gçV‡Ý1?(ø«ãåÒ^*ª}€åç[ƒóÕæ˜‘=¡!!!aaܶkwµÓ¥:t´´¼;#¾o`vîÊõ{F¶½Ÿ¯K[îú…-y°^漃‚õ¯¶¾ ¾ RèX=áHþåý|âÊ-`jН¡¯‡’Yòù3À&ö—×ÃÍz¤`²§×ñR³““444¨¥êêê¾Ãí¡sv·‹f÷ë¡4¾å‘›†û«C¡ç«¥fwе••÷{…¥ …By[]NõàÆú¬4 ÿä?þ£ìZŸŒŸŽ‹=íï7ý–Ü_¬[ykh8©iU¬J-ÂÖ¡ÇÀŽ‹á/-_¯ùÔÒUÛÒRI).yt´ØøòôêjË®^˜è½çROX½à P¯¯}+Ͻõ˜‘!#{Ø\ÃÖìêcȤäŸJ[Zxçº5ëc•oÏ0þ7/Ź~ºÇžükll/$D5IGNNC]}puâgœ²’2\¶<|ÖÖF„†>‘ûZÞ-i”Ûðæ%@49^ªÿÑ»¡iõ.FM<מ‘Iâ‚¶©©’ˆˆ–ãåó°–Jûj™¨èAÅ;߯[âdó3óI¨°F~‰¡¡á‰j¥Êˆ$Q+*g?}êúôi`bB³Y’2VCí ${8þâütüζILñ<— bU@T”N«—ÆàÞÃcÊãøÓ“ôÑ‘;îÕ:Ý ÊðÏÿã—91¢(t eãx#ãxt4›Ä/ˆ¹¿k”)¿ož=goº¹¹ ¢¾ëšúù¹*[/9™ú-$Óë¶dá ;%EÅÓ;ÇÑùÚ®üü®¨£>›éé4²™ž|F§"º»°µsª9ÚcƒcþÉÿãagÔ3%&F!.®;,$38++'EÊWR+o^'ëòB½äíÉ;öÌ??“lÚÝ&&T1yy¹ª©9ŠˆàqzjE}bëøŠüæ ¾þ0~z{Ûòß² x¸)ÉEaa\¨üff§ûÓ"¥:˜Í® ŠÚÚ…¹Aû‹IhÈ+ÜÎGé>äÎί1à×·y¢?fŒR0cC=ê +ËʦÆuKJP‰Kè/5Æ+ëÐu¯—£…àqžËœ;nÍÃþ+óaïÃyz{iÁšÖ–÷wÀ`{Ó+ ޶¶¦¡!£E;›ú<#”y‚‰…—:%¥8Oѯ¶6 ÁÁ˜Ý«Ù9 ¨¨ðàK Šš˜šª’!Øæ°‡3ùùYEH¨™–wä›»ŒŒ»ŒÌ}oŒ2dTï)©’ƒÛ‡_Ž— ×'Æ¢ôF©C½I'¬¨®nxóBêÌØ/°8rHIehèQE¬.'çjE ’®4¿Äʤ"[S‡ÀØl.ôsUYm-aLñâ⡇gp³;*(êF:nhÿë3C/¥þø[I#RÄ Ë3»ôQÍí!<4ÜA²4ç^vÜ8ɲ˜bb"Qc,m7·ÞFgÒã¥rZí°m;ó÷¶ ù‹IßžN¯É®^ ó«ùáðŽ·µ¥¨(°_„+óPíƒm¨ÒàæY€ iLx¹jX~~Fa!M°xÆŒ›ëìý=W}Ãܯ_NúêKªrrP¿2{z¶cã”q°÷ `br%3.÷ÅÞ"8°²õ½w‡9ð<˜¸ð§u>þ26.±Ô¬¯Õðó2¬ ‰zæ›ãf÷Єî N#ãË€lM‚¶88üÛ¨¨Öã*²0µ´a§F Šýb¸cáÄonh(I¢îæ‚ÌÍ ;44¥XМ”„‡_º‡=°ùöí-8NO]-œKµïÚÚhß@×½ÃÝÁÇÚ)*-…b³aÀ ‹ŒŒLIÑŠ?®Ïh›)Ã÷X–ÿ„«_.UøX{»é&ŸŸš¡ëÙ£=d°Ç”¨æè uwë¨*NÏÕˆ¦u§Ô/Gà b˃ߧ2%Å4þ¥_ˆ^ª‘_ÁËǿmÝÆlÄWª?4Ô5'g²Û:0Ð Úš8¦wïÛNþDgçÉšß² GW…Í©X®˜Pa…Á FG? §nÒ'Æ6»íÞß¾7eþâÂ+še¢µz¤T¨ûó§Ã!/öEHˆ¤k“¶¶¶++ÞÀ×$*ZVT¸rE³K±Ú¢¼%í¥þùÆŠC.™Ú¨Þ2^^nOÏÙžZ«ßÙÙy$v(Ê* zj¶»£}³³gÞBºýþ¸ºšÚ䎄³5^]!VéìíMþº­>ò¥áLÈ^,O”0QaQ‘êG¨il A3++3Ãèôx‡.=V†ìÀ6|—Þ'?»;rr*LLsÆÙ@€æ¶å Áû袨f/-4œ¤ó5iulÔЮ‹]!|îlü£ÙÜH{•ðï{ø¥VË-;çÛi s%Ú<ކ¯¯í(äâ{^Y¤Ád„ßÓ»Øo§®ï§†Œ÷Ô¿yÿ;‡A&%¤Ù•i¶¯ÏåÌ@ÝÀ ¡¹Ùu^G[s 4<§§k”€oVX±ÀSø›µ »ãˆkÚ4Vy ª>¿ƒE  Z…߸×àììL¬²¢ªêWWೆr7Õº}}õÎ,RPâ¿P`·ÈÈîØq•3d'¦%@»[8UËR Cjé­é­¯ù!&ÌÿèÌŠ=ó'¬m¥«k ~8Õpz¶×`¿ŒÞL‹…;ÙÌÊ*ûh‡9”ŸÓùèöéqô÷ïæ–G§‹ÝǹI¿§,«eiµ† =ÁvQ”Þ³,œþͯÇéd¬*¯Ç™‚Ìé*‹Ù®™`·~{>¹Úô¬mØÜÈɽ5â.-DÀžtÍüØÖ¶át(@ñ“„×#átEÀM\<66ö4]ŸXô& ww^j™“·•—§Y8±]‰(*®îØÁoüBX#nÕÕíccfÌ4t4Åzå_(ÕŠ(s¡S#zô¾ KÀÀÀsq) ñ”«’aH˜™}¤›¢8•?5ÞÁÁ©žnÞÏÃsÈ¢Ky/,<†Ig—•Ť§ÇNÃT©‘*ÑÆ]PäCœ¤¢PÕûñ²E•Z£ÅCÕÀÀŹêwãæ÷¨¨¶zû(Ë…§x£Ç'÷µýi¾šý_I²åúó¥(âÈxZ¼¯ÇDo¹.½Ýb ëH<÷èØ®«kç0„$v†º7þÐtœœÄœœë›ýõš«ûaßO‚¿Ÿ.&Mxò Ku/Ÿ±ÛÝzw/½yÓ+[ à÷²`–Î2BºÙ§´ ´Õ&‰“Û7ošš›9¬VV211ŽÅÙTRº¸t{»ÐÄø+qýDˆ`yެÅ'4.¸®@Ár{‡‰N†s Ûúj† ‰ååïÞ¡ðñ­}ÏÛèz½»¾PÕÙ œ!»PӠߣ…Qh6”,P¨â=&ÕÑ*"‚îýè±ÚÞ¾Úá9wÝÞ~62‚''ˆxiv¼J«õEµõiX.Ëíxž­Y…îñª¥©¼³ÓoŒFÍBƒ=ùåføaƒ#£×Ã+1±Ð,±m‡•ï¶¶"¡Cõ³©¨³·Ö ()WÇr¾Ý¹§]ªUäÕÖê÷8‘ÆS-5S‡f±=)ðÝf×6ºOÇ_[K«UÓ~Ê?™,ô¸°Âóý*š%'(¨ ä' 4N×ÈÕ»ÃûÂBŠhjD©( òòMùÙLK†ƒ…%¸ñC[¸Ésä·Ñ0ÏíìúÎÎ멈ìA Ž '¯rwã4q„§ÆÀó>YÑ’”$KÒ²´¶æÕû&pÊ$&ûƒeTÊàRùº•ƒƒ¨*–ãøïS^^¼îùÏ$ÑÐP–ÚM.CЉç.Û%âQX­š¢~ÝÅñŠˆ[›—§7”ãè˜i¿Môø˜ÂYDùzTÇ›4/)Fe­ÁF÷fgô)åqÏúd†>ïÀËØÍ©„…o?¬åT¸ã"êpXòr$¶Ýsª ×%]Ô,Cp¸ch"=ÈôÇH8'·">s#£¼¤$-©\{0K;ûåçøáR1äΑÁÁ¡Å”•#+ííU@ ݺç[ÂD»•ƳÎÇ¿y\NJj”wŽe°ÚÙˆÚs5â_ícx~Úé׆d·œ¡·ZáwFǽ¸»Ìž,,%#{Šä7Ëp„>ÒóÎb®Éõá`ö —ÓÎÞÞÈ8)9"Þ/3ÅãˆÃl‡À‡fwSáÌMð#FC¸_uGóE “2wvêØÝÔ±Çÿ~ö!ŒÅöžØcN)¥åÛø888ÀëTõä$Æà’)³ŠŽQ-ðé¢/9甘E+ŽÍuMlH)M¦1?›˜A¼Mmx^¸ “³ù`y#9%©??ÿ=¬ž¹ùÞ®éñª®LÊÂÂ7÷Á\Ò{SÞ¨ÏØ8Iö÷Np¿rò¯Ö»¡$MLwu‰.f˜ÆP¶EËH§zˆ©y=?æê÷@çà÷ÔÙÞ ‡ê÷l9­T÷Ç‹¡cÄ-7ß[EÒÆö±YÞí/Ôc*‡?5Êá-ÉØ䈧mnraÐ&‰Ù6ÞÓž)e¹˜§½Zš,Èh…DÐïùùaqŸIXv€€¤uC‚µ < ®ˆ_ho ƒ©•'[‹G ÔŠ ¢£ Îΰë5} ¿·ð¦~®zÝx4ÉÉEà ðQz+b׿qÓ¤·¸*›©™*ö !w.,|ÿBêâ6—5>Wí)í¾ÿMP\÷ñêð§÷“xi)& LãËH¦DGbÝó „>Md²…AêÞÙ]m½3û›)"¤È1ODUèps¢Sª£Ãj"+&z†ŠrF.Åy1ÌWÈÉ‘ÄCI©ûxÇ×öv¦Ö:ÐW@Eú°¤u±)Ñãl£rA‘Sèi\æ±ÑàAíòݪ:ylßùyýÎwul&–ØOÿy8f¸ð-l4ášš@¿ó—5"L ï}~®š\::üi Únš ¸H[N.>EëWbïÐQñ¶£#¤,$奧‘tJžâ½´tÝ$œ`ÆÆj‡3›u‹ç‰Y îƒQØ3h¾ç‚7Ùò·Ç­­s•Ûi œ£M®Ë¨w¯WøNzηëËË÷9¹øÊº¿£ƒ§'âÝÍ*ŸDóàkX¿Î®Q6ˆĴáÎØ£ÁZÙyABd((Ë'PÔ¡ïŽN¤‡R=[÷—{{“¸¼)¹’x¬—L!†ÒtvvM—{›«óÊÊ·UJš:õPÉ i4±¤sœ6}'fKYXÚµ~Ü"ÝùuŽi¹ ÷öån™@¢Ï‘¹¦¿‡EjÚ0:¬ðôÖ–è;‡z ½³SÍÿªm•jÃ7M1dñTIÑÒ·­m (#µ^ÿŠQpÚ–î»Ü/V@±àq£×“\æ÷î ‰7ºËy`¹åü2€ÐÂ'X,´g­. ^ã¿“Rªö÷„ÛÚ’TJñ/7ãñ†oc á1S¥$¨8ì œl;ÏdΩ¯N“Ëðê—@¿;S­£÷è„M+ÁƒVqª›²eèìl0îêØ $Ñ¿~a»¹r¤_îÝ];+ô?¿¬ÖA€Ä:|S¤4®,°Ù̆|TPRW§‰úûÃ3.‹xcÇ„ƒó«•µõÒjN. Ë;à*+*gÕÔŠŠÆ’“}ù¿µ}ýk`nm CGcm-¾ÀÄLÂ×Öª/ óÞ–Þ#ðn’–ÐçäTÃ?äótk=:¢ø}ngÏÑèü î `®ŽÀr­±æ"&Þ[ƒÈÚÚŽO&Îú4Çý’žî1&ÕeÒ¥ÂDWsàLÚµGã†ýÎ^ADñTø<}ÜŽ”W·çšàŠ·çB¹2ÇÆ —ú+¿FKÐw2¯³³xè"‰ã©@ëUÉᆋîÎOC©Ó¿^†x™^)Ñþ¤*Ññé.ö„çy´AM‹%½wWWfŒ.©ÿŒžÉ-©ÃÆÂrÚÆ¾ÄA„¹ƒ¥¢]‹'×f$_4 ÊÙà€›ç•ZÚ0â[Ûi‹”N#•ç«ù*íúÆùbõËÞ:[Ï ¼÷g[ïôê:Üd6ÚÏ=xÕÛÓÑêx÷è÷D"i6¹|OÒ¨Eð1—ªSž˜‚«¬ø ‡Š ¿Üb¨¨ø;ξµ·-ægú‚H¼/«ÖÌ*†9>½EÔ´[ ‰±áß…å!..lH¢c++ccbÐÕ·Þ=ŽTÒæÈ»ZÑ’û<‰Ë,ßY©O#ŽßÙ—¸8'6Š-ßú,CWïðiµ´5Z„ÈTøÛq¶x[GнIûHZÍúù>ž›ÇCQuu/Û²°dÚ’Œ™•ÇýalUU´Xä”CïRw$ßWcc§³&ÚYœ½Ñ¬ :7w®T^(ÒAs³oÓ%¤ø|O?KŽ~8 7SœbÀjªµþ`ÒÛpqq=¾õæu²¿_²¿¿Vú7Pßd„Z0üÂD¦jZOe_ ()Œ‰iŠiŽ FÏ€˜‘óâÅÄã‘Ðoqï13A¦RI½¿çru›N:ƒh.ÐzÑ =öG\w¶¬¨6Ku¾º§#”àƒ½ÉN¯zòxª8Z¼›Õ•K¹© ì}}“Ø,±ùŒ‡þÐή†ãX+—4=ìM>ãâR7å^¨·—Y=­;߯tsAn°&ÈLþH€)æl_™Äå<2øØèHY÷›å›y€0Qÿµç} ;i@TòÀßa: 4Z¯SÜÿÝ @Ëêyß Uq¸¿¶¹™.w ²š‡x&/B˜ˆŠ¦Ø*9.>ö´~á×ÚÚ— òrqõV‰,ùC Sõ%q/ž_‰¹9±Mî=zô”võõQiiYv' ‹)í±/K~_nöK ‚…¯zɽ*ÞÁ¾»ô?Ö¤UYhNjð¼O9;›ƒ‚ooyrû–˜˜ÑàCžv8çÈÇáZ™o: ¼œ¿í@ —ÉåžœV…)b®Q›ß8:¹ÌÐa{ïÁåÞ~{¦÷麛+£åéÚG €œ ß}<êÏÄ^ÁÜArRte•iœ»÷w(£ço ë„¼Å€töNרªkJî-úÙ¿œ»~—ÕË —ë7% `úâ"zbBY‚޲€¹³­­tç¶ØÙ9ñÝ ;'‡š£3gÖoÑ›ëeëá÷ÔDµ½UFRƒî°'úûtx໽ïvAÊ@Û.•éRû¦SÑ">æèðõ ¥Ä4Ú¤5:- æý´ÛCÛªAŽ!Ñz´W¬Ñ›Ä&£ZFXdî¼ÔÒP¨¢“ÂsßTÆçQ7ܰª«[Pg˜^¤CÛד=Gqñ€ã¥X€¶#´¶OOÙ¼žÉƒ\@$Ž|ÌÈ—úz‚çàZß»4;û²àíTó1¦8%e™Žñ¸àc] 2¬ð‡Ô›Èn1Œ]OOÒ¯^ |.zÃȨš+ݵԔÖ³Þ‰”ÌaÏÿ5½²ÁìÓ§O]óµË^§DtÔa ®çŒÅ&*nnšèZØVÚœAi°©EGwdž“á{b÷ZjÐªÓø)˜Án·qçl<°ÓêyO‚.“õÙàù!ÆkOÑB^>£”ÎöhA@Çc´ö~ ™å÷ê»UÞìÓ?÷ûÓ"JJ~ÚÍßG(€5vx©ÒªI1˜¥Ê¦‡,5eåÝV<Ÿåím#£fnžÃØO ¹¹Í!Yc€Ð^íÏÕ__?ÿ@LÜA. ;6óŠ“FI^¾Ú|º™ïÙm£I·£îéqqOμånïu¨’ëýUíòùõ²Ž÷õvWèå¢v=°yIÖ´ã&%=‘Ã,Lû“xA&x ß6î.IPQ;LÇïÓövfbÍ/5rÁØÕ_½9†€±ço@äWÐ+ÿ9h¥~C×F…ürôßÒóPo¯¹ŠŠ†bÛǘ^{»>à<¿Heÿf~•1qalŒðÏ'Â?½ËËà]<³­¡ DÚáÜèìt]¾_Iv·Á¸  —çnc£×xhHÙ|*lê¢eñú鞟íÁ‹aßÏ´ËÀàß=ÞîŒràp;$÷áCÀ’X;ZueeIsÅžŠ®®‡ÕæÁ¹2=§.ŽY¢—©,æ>fF©LE„êL W—Ó˜¿ú4™AþïôÇï/¦¡¤¤£\cÀBïÛhjjÂxÔxÝVô‚LÓßÂ;VÉÉ1ÉÉ™¢cBÇÆ¾@¾Ž ömmUøJøapL÷Ñ“’² Îaw³+ô”1Ñc­3®·èWÁÏÏæ›ƒÙº70zaáï”‹ï æª¼ÔåPïWÚ:‚Z=ë“ Rè4]jªªî–š­õ·)ƒø€ ƒöwÞ›xð}³ØxÌ_,dü7ýôb'°µu¼Hí ™ ¢œç©·¥)ì4Q½fT|¸´ ):)9ææ–Ý†T¢î ®$"¢ÓééG³§Æ—ÕV¬ìýt±ýè99“&FÚŠŠ¾Oºô.;>õ¾¯R%kL#S$k”ÕûXÍ»R¤é„¿IÖŽ“{ý¦›×W‡” #™ÏùX;Ê„ÃýÊ'‘ FUÕD™ŽÏÇÉd¾ù¾…Ÿði¯ðcÜ»é<‚fe ´/|Ž1çó­·‹ßþ\“á{<æ‹G §z½·ß¥ã‡ŽSo>ý3_ÁtÑ9½æ³„>ÞîûSððYŸL¢¢tÍ>¬MeÚŒ¹¬<£Ù÷啺YªhÖˆI ó¯Âš¦÷ ƒ½þ~»V2CûÇÇ÷ä—bÃê}õ©­eË•?ÌWt¿,¡·†G JKPýþ{'?_²\ÕÌÈ yE2«þîž+à[àÞŒ”ãm W> b§a,"îþ‡¼vÙ¥F^âU¿3êìÉ{"i›È¯ª6ç›,QVŠ$0ü帶;~œ?aE Í`»&  ÐÙrÐ"D›)KquäYæ|܈¡Æ"ѧ«Àñ}*:º÷ÕÁ9Сyr͘4ظ¸™%_« ?j†¢Á‰XÑŠÍ’–äå½êºsäåf &vøkøß@T3Q]¥#²åàö!E»[OI<ÇnãMõrrJ1óí^A†ÀÕåi¡ ÔŽàÅÞž›§§ÇñRv:¡,2ýÈìì¬ú"Ã;`°í´R$|EͶ’á ÃÏà=Ä/l¤¤èVóN÷ À ú¯§J $ÈÌ—Ý—šÆ_ûžÜ].ºýÜÙ s=—æs«êî/œ7_~¼ž¥*EÀÝñºØÁe™Z—E Í©µjæq:0UVνa`0óí­€Y²hv8@Emí¤hùäÕ„UŸ%xÑùÁKèUà! ˜a²÷ù¹ªš)¹b¿œ\T9Û–³0)Oûvçç›RPPæ}y55@%¥·Èmëå$Ñ艇{fBdóuuMÏYwvÂ)ßjV¶I·¶ìÊTÃ’’ð8‹FK  G”$ ‘µêÏöNV{…|RT.Á}{.Ø(njzÙâ‰Tªé:ÙÈfúxWž‘¿‘·îtü´ýp‹i½d!/0^ôu‰Æµ˜`»è¤ÓìÁÌØ8å4N¬†à{òò¾1§ÂCfóîŸOªyzàNâýÄ`ûf.·®#J1HéÉmoyYÊþhT#Ò«]NYr_~EUÕSkií¨4mUÕ¡õɰ™¹A/®Ö±:Cö@SÓBS˼–°lº@¦Œ56ªñûÖpªI)žÃÍkåŒB ¥Ø•ĺñÜu”Y ëãèD MÜ–Éh”´´¼oNÖrSgç~•¨1Ý…ÒÝ™UüŒŒþ² (Yá÷·" 6Q¨ ˜Ïºº\íùNRrm«Èïa…ûãÅx\£÷KÈdŽîðS>¢ˆ??ÝŽfÉG¶ƒpŒêÏ’±R¯ ¦ z3&®¤/7M‚„ÑÐß{pr82û ûe{Í9@ÊÌ"ˆøÑÜøŒÊÙÐPªQkB߯SuW8 ƒ»»éŽú[R/wæ}Ö& ~¢ ùÏÌÍ‘t¢7O^“›îÃ,Ê*‘²{ܜޞÓ! œDE­t£_­Lbfþ>œÌårò?R«Â`'^Q¹ÍÆÁ¹Ñ™Îr4ÓþôG‘ï«÷•EJhh¸YEL¯óQ“óÍIÖß¿6R¼Óɶþáá»Ej˜Ô°•UÌÊβǦŽBu“Ó¡ËÍTÞù»Ïn/ÉÈ }} °éX,Mw^¶žB9Ž\bO‰Åœ“íŒnnö ,tøHÑ„*•¶h‡E¤õôlçfÓgË1*m‹L[õÈ/~BäîÛƒ™rrhh7‰xÄ$÷ô¨¨GæpÍ’:w6ÇùšyníŇ[]*å°‘o{†Zzwú.ÜWk]"”\™’dŒñ+_Ï€sUt’ÝXž‡$»Ãc§b’™øo¥ Hndo`I%]ÝÝ¥ZjÌLJ€Š`VìÇng!é­¬˜éã8·pªNÅZN›¨-5oõBÃ×3Ìùt-õ²O &gŽø4s«»¸x¬äÕsõìèîàÀââÛ†xì G·èh8}ýÝRmôï]òUxœá¢8'B?W):û¬ðTµ^§ò“Æà ذx®ð;›\ç¬.5éÌØ’óòþçO\¬­/¯=Æ”p½‡SaZŸŸBËïeºÃ÷—”7ÌÖ»“b©èÈÉžòâÔ—Abd®~|V6¢–}5d¼Ý¬JÖhp˜¹»Ôg~ư,>™*®%—æ¦Czw™„2ôЕ±ò@€+ÇÎY›* ବd&9 eô”h‰0>H¾Í=ïCsÐMnÙ˜E†‡·á ‰ ÜêëfÒ GÑ´âCþTÃ'i=¨ UsØÚ^ô}ñMIÙ]i{¹Kù¦Áü`LjË¿m¾évËæúÝójP¹€€£Xv%äëÑzûáëãHV¦ýj»Í¿»ã÷¦œ¤dÒÜ&úúngÜŽPÈx) ÎGùέ/}½ÃyÂåi¸R•‰U§YârºöˆàÊ8ë¶5ðTiŒ4±!Ü0\ò6Q25ê´¥ÒT·¹áÎ3êöÄÆìówó¯„j0V24T|´zlÙ=4Õ2ðS~:s¨²qòâ3*¡+9r™ÌRëÎñýœ9Osç”5l|éwðYíÉ<4c#„¼.'££Y‘½IƒI=HÖr޾;`¨7OëKTöÒh²«Î'Ñy)ZÑÿý¡S¢©†‹”ßMß>ole…†žÓÐp!Š‚ZÝa©£ãèb÷o·d—Þ.Ï<ÖÚyFÒ´|îW· Óåª@céxq¨v‰Üsò_`æëü¬Îd Ÿ ­g}òÇ]˜ÆôÇUæ¡4%Ž?Jö#îÜl½xÙè"%rã77mA ØD F@ÖÐPpvæ‚ëÇÔâ"ðuêl^ãÎÚÒÒj’’¢ë!¶ººeôˆ?v}3³˜X­šÚÖ'iÔºB`±2wÉ@Õ ¥\çÜo |¨2¤Â/<Äa]p9#Ù¿=¿ÜK©ÃÁIb²œ+o}ºkÐá«V‚¡ ¦NcÚþùrûžvlyù­§ÝíYÛÒÅá¾Ýþ\xs—šq“Íigp.ð.þЮԚX¼zß"»E ³cšèÓ»˜x×åÊTJ|)¸¸°YZŠÐÕUĬÖáccbZ,~!ÅßPR\PY_Ÿ¼ ÁÈG÷)_0hPKË`ôÑ‘“É'v¸.D¯9míû3C/M\¼â>sKKF›twU,ÇkÕˆ’سóúçûeáÔMÉ_h@SB,síæ¦=ED7»_Ïo1ͯ¯íÌ×,ýýþµÌvœœªZ8ÏíÝ»µôtÀ†ªy ú¿%9ÔUÈ›Üs°ÏööîèZ¹“¢Û¹]l¶€/@›­?OÌøóõ‡P‘¹ g½æéŽÜ` [[¸.§¥¦‘LwµKƒÂ?MþnxkYÂNCuÈHR Ç7ŽïºpOõ}ˇGÊÝ“‚ƒ€0ÊÞŸPƒ“æÈMy¹i‘Y TöéE•J ëõ…ƒO¢> üIf¸ýظ„ »äWB×Ï: û%‡ff؈øk ttA‡ó|ÇóÓJ‹ïM›{}|8ÇC€®t¿ž0¿û”&#ehµìµ}kï6L½è|{Ö¹ÿìqnó²±K_`ç¢â=±×ãaín Ù¥’>JðAÁÓÍ㵊ŽÇ{»G77ß¶¯Ô4á((¬f"=?¦€Nzz8‡™ÂPc2º‚qÌß»22’¦¥Y$“¢žÎÁóűî£&*®ô»9\ÚOùô<Í¡]7w-2‹0HW~ o!|ý´Ö?çØaî-sÚrpª©åü»³40>ÂiG±€'ÖìxêKQCEØãŠš‹Œìüt¿thvÖ­6í=± ßñ¶(#º º#ù´­ç4ˆ¢^V«n3´6$YÀ@/CÐãÑá  ýË+¥%tJµï€a|z§kE€µ™«;­|õfaï7v~óôbŠÍÉŠ¤#ÌÙÒ/–i|ž>'æ¹Ê «^<ª˜O?UÐ\¸­F3ÛO)Xµ½üøt_h¿­]6;Ùtz{oô†ÕÊÁ¡{¡>×–=,`·/¶ë×T¿V-N;‹ïPdhä°û)hóÂÜ x’¬ê¯÷WŽ£ÓAïá!|¤Î ’ ¨ ¸®s:¸%ÊRür”Í’?| ÉäØSÈ‚…  ø”“s}wü Û*֜ڷFB†îöé~ÿx)v gÎ~JÚ¹ØB(xéþÍco¦•Ó™ÒVüýÒ©[ÕN‡;åúoܶ†!( w%±µN%Ýïmù¼W˜a¶ QÚ¹9{KIÎïîM¹j3C.Ó2]¢)GÃç•0ôãÿ»N妡ZÇÁÁ„ŠâšJ¼\ëºiñÔrSÏG„ðÙÚÝm${Þ/Ýxz\üLÒ?t,ÅQœ"í­ƒJûrc«•n²¤„ÁÝ™°g‡›µñîéñ¢ÑYЩϫ£÷ïyAƒÕÕÍäq1ÐÜ<Ü &Yk5Æ]€Âàr’$Bž`J΋™9ؓ˺RVz›-ïzÞÚµZ6œVJS¬DÈnOfuÅÕÛ›Ä\†u9ž;Ëd„Ûêd)nB¡t)–Æyi¢‰«%ƒ4íá€'€L¡onŽMÐ*PH?ýíÛ ›§?;®² ’ó‘¦K]®úëý„+Öo\î¬G=Özô ™m¾o˜€BW"°'ÏÈçºËmhÀ?„ò˿߹c°µü,FQ Ú/G"HÀ ÂgïrÁ‡¡üë᜹§ñlÅ*k˜åq?)Šš©)˯äíŸ99±Ûö†Œ/{FGý¾T__“gôÖ76â%/7"Ǩ¹^[Í-6æ÷ö" ¢ú¯vxò>NxWèÿËå}¿ñ¸„è»Þ|Ípµs™4“’2\wÄcxWÃú¿¿×ˆ Èæ R´ž)ÓÚ»õ‰SdÑ·ÊâéaÜs»7¦ÚìSElÚp³+%¥oG~ÛºmxPz”w?A‘“ú¥¯c,±þñŒmmoŸFh›^¹XÄ>—2•ÌKSX6˹Ñíáó ;ŒÐ¨~ô2¨ç³~´j¶¬±×&ØßÏç§¥@\UÉt8=LC›£“ÕjÄF±†u³ó)È^ôí-ò8YY<œÿTªƒ™ø ;wçý*—G]dœ6³OMa1ºÕâÝ5hŒžˆw3õçðú@õ*ÕÛdg7CðwÖOÒ¿­³ë1}•ʱ±·P •ÿa;M [#/º«›Ûe»/–8žŽ ¤kî+³^¥”l©>&Äè ïÙ ÷ÑîøqõE?qL¯iU±+/û*¿€Óá/F}Qoôž©Þ d«?×Àø„Ë ²ãÆ Wp»ÚµÔ½¾AÎWLMì Íêé=!Lô)ÑeíK–\à»s'±míÖÔo^9§.ÔÐþjNѤ_#H ø Ý”hcû†SÜŸúéœEˆí ÿüýœ&½<»1пz2>öåg¯ëºÙáÓ“tßFò—ê £¯‹pÍ×Þ÷N_äå3F¿¿ç]ï¾í=«IXö°¯¯Q®³ßƤÏ[Ú$A™HìÑi¡6a% ‰éß4i045ÝX]]ÙÞ®s»¤2×ÎÁ~Ùʃös¹ñº¸áé  _¤nnφ‰)'GQGÇGïæà·ÄX¥‚ÒHÔPCUj£¿È¥yy"{ïŠô–e"øÏG鱺Ã×ã¨?øýhˆÕ,ù,þÉë‚â|4«èâ…Ÿ*êoÒBÁŸõrX¿Û'÷Å^õÁÞýi:í—¨øèv@QŠéøþÐõ¥:Ïäñã.úÐ㹑ç«•_7ñ øYžbJú7íð#s»MâZZZêoŸK­ñ‘t±¶¦Õ!°àÑÑ!$(¦jõïñx¹Cùé§÷ {ÈÒø…üo.÷‰þò|Œª*ƒ}Ù£[žŽÓ#"˜Q=÷dŸ¡'UòíÄÜß®›«««¨h vÖ®:‚ÑÉJ¬Ÿ ;‹FíÓ#phÆ­lËÈ@†zzóò"/B¬H)PX¸n’u`qŽcmµ,­Kï"œ¹™›vùa}¹¶´Ðj¡Æ2>mX«áBOW÷öê0†LÑÔ°‡ÍJò³¸¡ï.|¨ V‘b_ÌWyÓXEõÙ*­’Ä—&a¢Ý£,\޳›?¾;4¿ZÈ8¼|yÜK%ŽÍEJ‚ø_iÅœª1£dcã°!,×á Ï+>Üß77ŸJ¼%ŠªjP—URÒÑÒÒÑÔŒ‹ÕѠ€%qtÔóå—×¢!B '&¾wpý³Xp)CLoƒ¤pžÑÚµnÛÝ}w= ‹@br<©O•ög4KÆëéV:Ôž R€¸õû+)g›2“ãá€>ŠÒ—îóuíÔýýñq/8G¶~a`@Òáê~(ŹK/Q0ãG¯:{âÚiÝ{â¦Zë´ì’–jŸÁ’×óÃ4ï–¡jRšžH$\&²tòÁã3¸†ŽË}ñýéçÝ#«ë•6ç’‚ú‚¸/9[·iGì5,÷&ò=ÑmwÇúéZ`G4ñ~¤žåÍ÷äBÌ<çyx9ú¿{Z‡Ðà^þhA‹«À2Ë×ãZ‹-`ÜJ&÷ðd·ý„ aBÏ' 4.®àºê'SÃrÞÉ÷Q_ ««Û]Ï¥ARï»0KÒ<2kÆÞâMÝ‘ÿø©x“Ñ*O )GB²tߢ4ŸÅK¥ÓcQcÈQ é•?-"𦕆ïºQ0ºjjZ… í‘Ï—¤Œ-ÖrµçöZÐ0,ᆦ%=„û¹ ÿ½~ù÷^m²˜Z»¡ÁêØÞ+)ðËK -×G9â9gmþ<׉¬NÔ<;«Ñ1úã´ŠJ1ÅDh°9'$W!|€v]nmMŠ÷¬vó…óуÞÝźóQ¶™©9C:<bó°ä̬¬ô Ì,,UeôŒLû†zz_-,^3³<Ùï——ûxÖ˜Tïa¿Áú}-ÇÂE j#´«ÏW’âab27G­êOùE±Ã¦r}nãÍˆÅ í¯¢¨•6LCY——'d¾¿»Z¦¦J­Dœ!Ô?šiÎH×ÝäõxY¬Ñë´½ã~·Ç“kY,úÅæÞ®ãm‹çèý5.ë€ññ’éI,Ä/ŸŽüàˆ¡—-`zi'6ÃÀz—j8ótB¥Ô¼ãïy¹3}% MÐ*;Ñ+>èæyÇž”t]QÍR]Å\SÅ\Þ+ÁQþïü¯r×ÝÅ'„[ˆ†`ÚÜ}QÑ^Ïäû [«‡lUjTè¬Ì¼ï/Ó‰ïùDWji²s-£¬ÝÎÆfÕô‰vËÕ•ƒZÙ`­“Hnp1Ð'0¯ZËít²ðFƒl(‰ âí®¼PÕ« ¹~8ÍW .±-kÖÛ2<ðû"vè1XöN:ÆÖÖúÖZCB\ ›±¿?^jvßJyûö->>>:Ƥæ|­EJ ïR‡ÿʪÀÎC ÿËfSQEÅöóíz''#ýè0Lþ,¹ <ÌÂÝ]RxÌTPNlVxX;§˜­%œ“U™uu.ã¿¥Œ‡S-ï%‘•ÎõY¼ÓýüÍ`%Ÿíý–ÚÏ ß ‰ŠzúwÎâ9‘É6*J}Dáqúø¦Ìx kÊDom–~ôØAèh÷a#W¢¹„Kq“á;ogŸ£¬À|.¾ç{=½Ì  ?Âeïçæ½7‹4 å+óÖ¥7·–šåkÑÕսǭޗ[ƒ¿‹5ÈK±½xLnÞàãKH`ÁŽ.¬ —ÚÇù.œiØÇÁÁ¡¦ª*™ÂÛ¿™9¼Üäjßþíí/ %{žÛ\Ô˜^=¥áäüÑæ)÷È+Uz]ߤ46,ŸÄëw'x4¢Ü}À<"j=Åð¼Íp'˜÷Æ€€€“hÐVRÉh’yy0Fþ?H3݆­ËMÄ[TÄ÷õV/‹/}qÄbFAr3\&’$Ñ^׋“±T¥Â¢:u'9Q Ä{°ø‘ÓwÐ…ÊÅng½ƒIlLŒŒaaatÚa¼Ï'«QÄbfꊃ—çç]¡§þ0î^U‘éd÷[IQ^^èT´ÁÂòŽ=~„–7ÿ¿»Ëß@õyªXCŒW¹Hõ#Üè666øR×Úúxeådm9}XŸ>Áûé¶g|||j #åVÓƒ£A@VVÖ`ã¾EÏÑÑQTTÔz¹ÅÒ‹}££RUi8us •G¶Y×?’ÇÁ#Fí¶õyQö4#× k¦P…NFfØýúè#ìØMÒ§ø~™döU@é¸XX.ûSÅdtÖ¡Óß¶<,Õ'îÄ|®·óNÅÓ{«c¬4ÉB3<*iRG~œÈ@˜n ¢þz>‚€X… êp=ÛÎTâr:Àâõp|(ÉëqC÷ø _2w|×án¥ÍßûáTÌ!|pZÇ[KAÁþbGNBB¡¿F„Ì…‡›››œœœ ÏÁÌKR åáLÂ—ßærO >tÊßbÝýUJç6[2*—ˉ4LP¬~÷ÃhelìÎ=D8“ª ¤eW·'z» +hN.—{“ÃXáž;þ„Ët;***ä„Y-ç²oþäo m³m~T_ äãkmiÁ_\ÙLÊ —§@ Ñìršù[dRuýóO¤öŽŽÑ&Ìs Žû#äbáØ—÷Ç­ÓSSœììÔªeéÙÙ$””§ùàG‹SSS(Á@Y ‹ˆÜÞÝõmžmÁXNh¡y>»:v¾»¸•£ŽsRÚ]ípŽˆXÖnþ5£Äåq¶ñ6¨ÃÔ‡(êåá(¬Ižw¦DQßyó®9í6`ëñ“#""®..„Ÿ Âušºçî«Mõ,G»Íæøàº¼½#°[Oɦ¥m³GÊdÖ³tÂ0dLÂóOQMú½~ywðÝÅ%555#y:òîPz:_ÑÌÍóŽýãÇddО’²ccc#=ùùùGGGp¯~¬­é~ÄMJËý ~|}Úk‡»Ë€.@’̼_ ;9»AÉÍ­woReqaª¡¾X«ùÎL[añý+››b¢ÓùX*:ø€è’9c±¤]dHqqqrRÒOÃêƒ2,œ­ŸF× )ÊU=Vþ¼¢ŒýõëW,™Ô/E5µ|S9–)½© v• ñÍ¡ÊŠŠ½½½ ; <ÖU2p>çÈ» ‰ÿ -D†ïÑIˆÑœ{àq‹ƒuÜÝý³õõÑýb¹}õLÅæï¤ù¹ §øƒbÓ·Áœ;²žžÍš´¥ÅÅ"iŠOî@«ƒF•¬·µ°° Úu;§ÓÖ?|œ«bxª1YgÝ'Xkå _v‰1Ï=ª“”7™É=¥¥"gÞ,™¸|ë@­õ¼£auvvÕÂU‡ÍÏVťůÌlabbòÔäëëk×ù»¥eidD6C––(¦w‰`·c·!#C÷_Hspø:hiEÐtü[’cm¥Œ‘ùb[(H¯ ò¥¸_E}®°Û4D1ÌbÐjܮɶ$àì „ÍôÐ&D¦ø¿E.`­7†|ii©Òxبr. ³¤Äj¡ÎöÆ$øþh¯òãÝ¥‚¡¹Iùͣůììl¹,ÑwXô_Ûü Âur¾îŽåôÇÑPÑÑMOO‹•²'™h¹»Ô¨ÏV’42t>ФöøÛ[èwsÚ ãíÇGWfêÑ)) kô^ûÒ{=ÜÔZ/gÊP>7Ë‘œ:ÙN±þÿµh%ÿE‹”2òsâæÿ%¢î‡ þþBrrïïØÉȶnN×wôÅÄzšš¸”±*ÉÊ"¾Ã }¼ùø™$ú¬úöö–`á®§@N*üd"æé±v(Í[àÇù6fww‰FE]ÆÛ7ŠJ¤ ¼3‹ùÆCÔªà»{oL6„rÇGafggû*•󆬋­mη9ì·pù¼ÚàŸ{–Rz„š[žß¤•ˆçÄG#‹|ù’Ý%/7…aZN’3¦»Y•¬(†#RAúS‹$63-ú ¶·%\m©•oëüÜQ]Øh+uÓ—7rXÈeØ]û7Óôµçbtt4;.-ÇìÌL¬<'§ü2’v‹Gð}@KÔÆæf~<(Õ|LP¦ššš©<îN·g›-µ{<ÆÆ999‰ˆôŽêØñ5Ó¹ Á¹Y™ä‘Qq¡8"ÿZ]]mps”27Ÿ¾:ÔEƒ#fõ+(-½>=Í/)©)//¯¬¼?Ê]ï‰<žo"¤£+MSx¼žÆŒá¶ôÊyò+¸Î.=æå*ïéÉþÈËàu¤'¶Âå§ñ§|Î"=V ~¿¦¦ÆÊÊjss311QZZ:<<|b¿¸¸¸ÖjQýßkokËÈÜœëÄ~n~¾±¡!îçÏŸññ׋åÃÃÖe§ƒèè“Gsè –s«•Æ1q´“.WÞ.u1ØM–>¾7'«¡å§õ¿~mݸ8 ±|ðº„óïXÕÔÒ 9;?OII¹w¼›Ü×è/EüCoѤßöéáYO_p` f’¿ãp¾ýåñ3½½½KKOi^÷WáAA¹……û@˰ãFpŠNÄ—”ÕÂéva²<ϸJåajúŠiX´dp$Môô„˜Ÿe8Ω‹½üAgYk§yaq±ÙóÞ‰ÁÐp3!ëãÇ ¼ÛõMßOüB×{J³¿X¦srj÷wp[>Uçä :ýÑÃ祖U^Ò7»;ž.µl廋D0wà+¥zzZïGEEµwt<ÜVÚÏ-µª¼«ë­ R^qñãé¥Óh¦ˆdÂ^cÐ~Ï´."æû÷ ºí`{„Ë"p°°X}2]ë €Ý,aïž–`r­+”’’ÒÏÏTÔ‡êtdŸƒÙfr!Α:!øôA€¿~æ#Ó•¼2y¸ f8NÄê ð |öo ð¢½~ÃûöÍ|h­’q!ÐH""P—vºº~~í#Ãoéä½Ãø=g+àåå~ÿ~îîj&ú›'ôjJÈ’ºÖÞ˜]‹Ë)Ûâ~’ g¯ÙWHñ¢Òz™G=%ÓMEe8[üžV;ÛÖê·Ý*_.Ö§›ãt%W8xEõŒž’0C‚wØzõC.E÷ǯ!vÌGbVw?wLNV·´´44Ìq»°€ëH„8¹(…çÆë|´¼?}/ñ¶§§±§»!1ArsË(dûíWtFÃáÔ¿1ä¨×GZwÃ|….®õ£[ºC*X[’"H‹‹‹ Ù¬fêl‰÷¨ƒÃ=çGT›Ý ÷ª¬—yx6ßáX)*±d½†öµ×¦BÜ#èS_™PbpH%H™YHp0§¬#QÄøììúöµ¢Øvg†Ð¨ºú:>ßÕŹFiþmL /ÄEiaaOÛª¨Á†¹bø¦×E¡J0 B”Ð@ÅÆÅÅùûû·´ð‚Q¼Eôj1¾K` –…É ¦¥}Øì¿Z[kWVæÕiõZÖƒ §¹I€„€À …q„¶Q4ÅO¨ºõõë±R-÷±E)ÍF§¡­Á»ƒGSô%{ûí¹j/RRÇZkëÑ)üHΡç‡=ôîžž S]7cJ·6kmkùßJ²²Ísï¥À¥¹>~l)+£ÙÚÂ,.òÈÌÔþꌄAá£Ï RøÃÄšÚH³åáûg µÁ…ÇŒ:v´½•a%e¯ÊêfQ’èõõZ©ÂNDd¬I99)j¨ ,Ý “Œr…qïÃ1aö·°B)/k€àƒÙä$ßÛ!Ôl¼êœ¾fÀÞÜÉÛÞɃCýõ»}áTQ=- 6ZÕ{2ˆ©±QïÁ®•æÓzC³iòêêÌ$ãg›ñÉÉ~Sç'ô]}ì/çô€és$üñúMšVSÂ’hVëÔã<6=H¾=YŸÍœ\L.Nhà.§†­y¸³ úëí·Y¢>×”â}ËPTÌöóÇ!¨±xÛäæøî,îÇË9oÞ{d }ú.lg`0Õäš+ÖblÅËC¬ÿ|u(*«æ›úýoEõ¥V…0‰*8)Ü;O]#V)ÅŸëdLMÑàç£SµVVdÈö¼<ççÏuº¦±7V`WÏö@’³ÙöÍñá´c>'‹ú„ä=M¼…º¨O÷„Ês?ûí¢¯ˆe™!{,æ[éˆ~5W7ßa·dŸ…'l_zB𜈠£UH_l;DÙée`¬‚Ëru˜‹NÅÜÑ‘²±!š! 9Ó³ÙôüÄeûüd84/k¸²ºÚV~OÀEWŠ¥Ô!÷tƒàÂD°|st„‚ý[0âN†ÏA@`XI)'W G"¦²œèÝ»zP2 T÷§na Ù/–]#{0Ñ^^ôÔøƒ£›~–¼tmY…b>Ï´3÷ƒï!}{è‹®ù(Ðú€6BþQ¬Ûüý{º´¯¤£ãøîøõÑÒ`*¯ÖÓß÷LRƒ¶y¨¯®|ug‚Qߪ”òòºMxt@ó|ohl<^l#‹yo”^ØÐPRi|.)Õ³·÷åñT|©Å:‘O§oÂwÞÃ%æçωÉI¼5quÆßR\gÓ:[NNœÌâ] gç…ÅE%thU¶W[9‹rrrrsƒ¢ÚL¬.vF55…RÔÿ²¦Å¯Œ¦÷ÿ©òÆÄ}Ç‚¸:I³Ã+ šš:‚Ç<º¿ÏÄãº[@%ÎꃭñÓÒ”ÍÚÈÅU­X='œ‘‹¥×Èh ƒ Õò»ù»µ5»Kx­²¯c9Ne¶*t:ËÌt¥lÖO((kB)PÍ!!Ð88:¸ˆÎûS[¶ëÿ• ÄÏý¨Ž²¼¼ýžµïÂ}C)Ý`eÉX#‰’§'ux¨çW}è÷¤r=ºö=‘=ËM‰QÑ º#Ãq)ZåV)­ÙÙŸedýü¹3"óúâRf8•gõ¸•FFãòÒòêjzoOÝÏŸM*‘(”óå<vÓ'qï)¨ kk®íAh.vS/÷·‹M sƒªLÇ¿}[H'Ë›Ü=ÜìgÔY®ZïQÉVîYµùõk}m½ö=lgŽÝÆ¶ÊøF25 qVv]ÝTwàxnÛ5)-/eŸ’””QWˆD$ffÄË# l8)¦g44®£ˆηӬ,¿H:\_Õàñ`c·¾ÁÞßÛ+¯m}zpUþV™šÊ¸ÇnQR]m¾?%KLÌBU˜ÈÌ}Xg«gk;†ÖM­ãÅÀ»Û@Ä jsbOS|CÞŸŽØ®ˆ´Ýè:>ú÷³å"gëÎ[ÞúKxqÃïÿFç1ù|t½Øño~¼¬µ¦$â¶5@ijš°gðÜøPýÙÏoËYsbrS¶G×{¾&Àói »!xkàöÖ5žnúá¦|u"¿3Š8ÈÞBìâîŽUføûb#faÁ—¬¡v‡ºúú8j¹\Ù2˜,[v‹+ ‘‰à—«#Š$…Û@ „‡ãÁ ‰Šˆµª• žïŒnf‰>VÄÓA O.7ßãâ·@™á@Ã" K~þ[ïé.Á÷®!È/>þ¾Êœ”4ø Lf_ëÓe<&fãE(AYYY¼ŸŸ‡D|û¯ˆ´ŽõS|ünAÁ‡žˆ.6g<½îÁwã§/×õ·KQ(t0ïÔ¿¼¬{ºö ¥f²V9ÈÖúæbwœFÍ@—J°×µ_Ϻ–&Àëy u…ñNÓõOhSÅñSSLì{µOo’Øö%ă— òn€ïQßICzy^2–C 1Ï»w‡\Î|.'KKÚÆÏ^1ï‰oäÈ_[À›9BGQôÇëì’®¬ëwNç'ÏÒò²T=To½¸h®2[ïYZjºÝXYá3û)û5=+yâ?ÌC|m?¯*ifæëÛ–ØÞNç|T—Ìiø¶š3 oòÃñÃíýímN±dqÄú„Ói[Ûðö@"lõ„TmZòA[?0lõvÿ{ºMÎ~BäÏ ¥ZûlæSßî¯wv$ùS`˘Àé¨ö³j÷V;¶bÈÄμ8е<¤¤Î³Ä¦ŠÃ9a©¢~¢‡ØMŽa·šMNæåYüwZéW)«jÎiÅÅž”´še³õã ii˜@€ÁBŽΆ‚št>nL¥ý'¶³C83s#Bé|‘Ç?¼Óm;Iû´7Ùchè˜+Sê·dêÏhÜ;QB»6 Ê ÷w“ï©ÌË“>}Æùë‡^W²ZÀ&°Ë=\ÒÄ"â3‰õÚ  ý¿Ÿ•”f¢ ps·‡†š[/Îù$a²±Å—Ÿðò¦¶>…˜[ML«èöë… gÖÕ/V”'æäŠõH{„„Â—ææ’‘9œè©©5ûúR"!±íɾL“Ë¿ê·(ápÖÅÅV‹x$ç­dQYt8¨ùšCe77Û¯+Ð,, $?²QRÞ/pPÙž¾‡Õ—ïÒin #Ù¸í¥¥ÅÛ1"nwÖXª£Q\lœ‰ØÞ>U’‚ŠR±{º.ÈÄt<œ–ô2Î|…¥MÀçåè€WlÙìÐkõäb~ßA?0ÎÄÈÍÍD?"§Cj‡p¶)qîõ\¤™ïúp7¡ö4G«-(ÈÎîBœä)Qçv©äåµô‡_lB@UQà»WJJἼ掺/ÏYåǤoÊŽŽYþ€“¶¾½-%~꣎Gß}º~ Ôº—×~†²1”½=|ìd^›?ŽqÏB–˜ËãBz•N§èèï†Scgfw!ˆvwZ°Ð'读ߞ ýW"W›œL v›QYú>õ·;;ÅŒŒÄr=¯pW/vݧKxN¯jX˜…Rü5›~Å*Ùn†ðT^Fô;bÎÎƤNøÆ ›´²½ýx­“Äã—Ìé8<Ë‘@£"óïé®õCšŸIúZ<¥“?Ï´,î\˜öëv`U]3®ØL—ò^IóxÎ X`ïQã’Еî-Ôß»_Ó*)ÅŠ¦l’ ‹@u´×P«e¶x5{óóCï± MŽ …„yXç¾y·jú}î˜Ýe}½'à÷ï¥ØØeYò—˜ÍÀy˜é~sÜ "ª°Z°99¡ѱ IOß‹èÄçkiï6ÂÌ®¬ìé"³]ïvÍ«|@¡£»€Ÿr¿¢æ°!Ü[i3 pOéìÚ¬ªrPWäÇûönw¿„Ô’<æ“D¼ög:pZpů²%L¡ ¨1ðPP,ååV¡Rÿ®è~}vuÜÚhzwi/g¼J„(ÂÆ\•ÆeÜÕÕ5qŸ#$ãé¡Ú¢åasrÞ:IJ" ¸Qf½;¸«Ç:‰É83<ü¸ÞþZí.éå)ã>® ÇÐ(©Zit¼‚ÛPPu¯©ÿÐÓéÄÕ×AÎÏ Ù9³ ¦T’·6:îo&2Å:/vì¥pÑ&&HI>=žå|pL ¢-ì»3±F’ÚÚ1¹±á%Hc!—QwqÏ-ÑöÌiiyçHôr¹Múm`¼âýöí(ôY‹a’?pð­E:ÞB::›Á±y•6q`âH‘6x¨1ùy•¯%jC‘=â »ˆ‚Bø^@(•uÿE¬¾éëÞñ\‘xÚÙ·oO3†ÎÈU˵<.’ެ¢0öq :aŸÌ§§ð9 ¶S@EJHï ¿T¹„Ÿ^"QææËoQ;­lÑp_f²¸ØYmþÈÅå.(Èü63¢C D/™7¥Î|zmw|SÎøÖžzš–—d# q–9¡¥ó« ÷Ò¨Q;Ýñy¦ÈvE%ÎàeøÓ£y…æågïQQáÞÎÂVs~ÅB ®ŠèììxeS»nVXÈèP‰²ÀnUãm( tøêPïûFºR¸_Œö¿Ûýa¸È%±*=êkk)Ͻë_$=:Åô{³=Õæ¹ ÈHrî…·[ÞˆrÚ¬UçàK"‹¥¬ãò`kh-:ìFãÍ3à þGkäRÑScØ‘œ°Û(ÿFå°óc¬JqC{• úK½-ïÍÅ$‰f³l˜‡ErÆf1cßc÷ñ×l¾c'Ùèê ­¡æAMÉÉAd{0ñITC^åJLm¨µåaH¨»¹5Ž#²´X –÷s‹ÈþB·ùÿîx¸5^[[Êü/HÐÓG2v’“ ¨Š‹¿ŸPƒ€—à±%zùXù¢UWÙ—[ª—ÕëåÇ<8÷¨«z׈‰*N\úbåù¿˜^å8IÉ+ÓüfC‰IL¥/‰N€ü¹€Žüíb¡¿ßlŒÄô彃Ås5‡qÕ—ERI[Cí¶ôóåë¬|Ïô¬KË©¦ó]A-ªå‚ö°^žOÎÏñ¹j¦-¿ôÝ­Š†á%ðÏ›~502b„Ôs°Ô<3á@¹Gí㯨ÄR¢fï9UôôhúP{°Õ’ÇÕ‰nÛíùÔ3£nã &]_HˆÙáAz/î8CâÝΨ•œ\[Wè°VËÃÉßéÿ‚Cÿ‰;0ãY¶ë-6ÂS"ƒ~Sä067pë P--c`Ç¥%ë–RMHéÙR”—7¶ðšum bØ£F@!H«´œ/¾=W¢Õª@Eæ¯? ¨´·1ܬýéüí?°WÝáë=ë““›MÍ–Ýá¨ÿ€Áݯ—V×ÚÓx-ß¾”-QT“®¿‚‚ñç¿d€•Ksƒ6p‹²IV·Œ¾s¯'$H†‡9ˆ.Ѷ”—¯/5s›0ö ÔÕDD¸õör54¸…… ~kâÿŸÓƒ˜ ~þÚÙ¹àý\ý]8ÊYføor²LFFÒ×PGé”/7§û›ýWMM y•ôhLU¡Hðî½ÃÃðT‘ i!!ÍîólÖSË×ÅÅÖZZðÿµ5ª¯]Ê%%vn°­:½ó‘ðK¶ëÅ……·ÀÙ F¦‘}AðK´ÜíÖ:¿@0äUþ¹q:½»Ë§kÅÂŒ"‰f@€çYoË:7{óÕÇŵž‡;L_¯Æëa¦ÌfuĬ•U¤•Ë¥¡±<7·a€$£û–ÇSÝÀØypÜ>84ôÕur^NŽýj{%6¶ ~9càÏ$Ç ðÑc=/v΀Kºz|¨ è`øWá¥ÀÙ—8 b*F› íÑázOj__43Ç×°+§vàxj­š«ÊF8Ý8Ä^  .—Ãó —Ä·íॱM2ß`ýnz(¬®>n(ð~4DlFùaãÜzyk¯`²cäå¥=¡&»¶µÅÈš:ÐÓs>­c;8˜rwGÙ,ó—É8Úé ŽÇéÀ„…%1cù}Ô竳™fIBäþ¾=,eMMrBz‹vH[ZÚª¯ï:O±>H)«ÄŸ_{»65Ít£ä ½H.жN£ë£.PÒxRƒ¶¶¶VÅÅ‹ÒÒmhpPA6ì¸ÁÂ-n—¶®·ÓS›šÉ79ƒÖ×ÚáaO a¬ýnOŠ> ßçìì~%<7¯#TG÷ò‰8>p?÷/Ö¶¯¹ÎÕ·ò¡A¨ÿþ·Áé08>~òb÷ p>]醟nýKKѸ<ÔÙPïì<ÍNÞœo;:ÆÚýAØ󸱩Íɉ ê9œ,,õz`ŸØý÷TýB»Z«¥?ô}ïìGŒ,,Ô›*¤×Ô´/5K¢áQJʵ°.õç„gj§¤¹Xl¤$ŠzX—©¯«CÄý~WFð3""õ¸¤mýôþš®²länÝþõo" ö`¨{{ñ¶ÄÉ܉7®ùiËwrYY ÐGKž/Ë: û úé¥Ãá8äW€L``´tu_qãwœ?j ø¥pÆNÌÌœo[[“_x©tutðX§žõÆ`}AH@GBŠÏÊZêjìŽÄÔh¾+HÒ0Q'àµ| úÌ&ça@±™Y„ÿe¡Ï«£åáV»ÍQð«Ô@]åýúµõ&“ÍbD«NÝã÷ïl×ï·Î=VK _MØ“pø,f¼±ÏÞÃvŽç¢>làáAîíp"!Õ¯6ßÿúû­;—“Ãç¿¿“ØØ¸Ý• J½9áÿ“´´+oÞ…WW;’“o—¾¬•Á~õ64¼´²ÊØŸôÍÇÍ“¥˜™*þˆ‚Ò~E\ËÉ™vÁí}épg“ù´Þ^„?7÷;n„0 ujм[ÿq'ä¿aAAòòÀöúùu˜$ãГ U÷DòHIåZ.㙺‚jÁøo Ýéš¹å0HK1Ÿ ˜*MAá±N/IÏ”}ä_ûûÞ~B}ºõ™÷ïГ0[||t{ÔÔ¢òò]]„Tû²€1…„X¬¬hññi½­=>"H.nNá'Š‚‚ ²öUúˆ+¢šðEEõöÛ²¹ü‘‚m °§uÊ›š¸A`««¾qX½µWa%ãªnn§ õ¨r¹CÃǦ_¾ˆŠÞDVuL^\|ñ…R j7û²‚àK´«ƒ–¦AÙ'$ÍÓ‡%$)gü â!0!a„﹨Á{Y†þȰŸÖb WUkñÛç‚}˜¸xÊ £ùð{sÚ“™.óÆ|`B“5^ÕäåÔi¦lô˜•¡úÂ\V!¦Þ}úrkð««’›[nSStc#G ÕGp6 ÀwƒUµ¨{{êºx#B€cÒ[Zú¶Ï_Nv{;™+³<ßì~Zez0žæ÷ªøŒ’ŠjºT‡//‰Ðt¥ý Ót[U•|©¶'·õRþÍ î¿…NŸe»#lì9z„˜h<È2„MM¿S—¦ÚÚw¿Äø -ç18=âhΦ’”,z~ éšœœœ—·³7Y¸¿¿Ÿ?ÝÓÙ™”ĤAùÇ÷æÆ¥Æ’ÉãÊb¹ÉµOZZ@">Õû²×‘âåskø@t$ݹ^u´2ølyx¦eçbêÔëÑu»ÍiGò»¡ávM„ËÊ ÑsöáêPãæ`¦|ýt½‡áx¹ m¡É•éòîçO4bbb# (ö¸oßþ&2¢ ÖÂÃ"h´<¬ÍU{¡£¿ûOñõd¤qíf47ã€K†(ók€ “Ë !¬` ªnÿt½==};WF£¯/B8eóú»ðÚP ) ÉÏØØõµ57cƒ•Ó›oß •”&ô»ëêêœJ‘A¥0 „ã°åM;8:Ö×׋ùòE\Ür¾¦¸±QC@Ì|Ç èë\˜›º ­F'S3³¾¿]\]y¼°‚:X˜™x5ùù}òå/=‹®fÁ¬ˆII7·¶¦ÜMMMÇse0‘‘eee;ßÇþð!?/‚”Ùfkàlj£Yb÷wwW©‡|ßLD= &±9;:ÊY_ºÞ†……¥¥^qñ=­ùà33o-ؾEr¾{¨·]jRr™¹*ëí>@¼a>[isÿôézHú5 @Oä­¡G÷®P”./Í“»œ¯5òü¿b=_9Þw£º¹¹‰ˆˆ’’NèZî]²ãZµùAðzüœœšzÙrwÙbääàð-((4$D>r¡Õû¹Éõ<$ôåµ=˜ä¼3òq/ªÙùtüM__'W>Lgg'Ž>222.î€E¾[ ·ëØŸ?éMM]¡˜gggñt:¿µé@ VVNnÏ·üøE,v%zyrbbm}}zÚ¶jstttxx¨R¢¹+å²7‘K¥¢¬¬¼µ¹ RÐPW'kmhaáquXSS“–ZSšö´öˆõ÷üÕE¤äoaa3\EÅ nwÖüƤïÿTî‰÷Šeª0Ô_Äë(Ð& îmìáS¸où--™ö“C3Š€ÝÐ/.ÖÊ«ü:󧉔4àúÞ&Â-¶ÒÒˆ—vÊÊq™™D—}” 쎣ààà<‡GÜ Žµ. RSñ­­­Á/.,h"t(—hÎÎÌüµÈ¿ãU>^jÎÒö:]13£¼< B"˜›Ÿÿ„Öw¾=|/jijš‘zØØßl|¶ y–%ùóçϼÚ=©Ëññ«Ëq&Ðz_44®™®É$gŠ‹§S¸Ô ›b_Žû¿y+°C@G‡ŸËÖ–Ãù¨ ÖæÇd”ûꍧ›Ó bbÑ“¬!FÙØØØ )úQÉ¥îA¹’îAþNãS ëÿûwņ¶äYGIKkñ¡YìéʧªŠÙØØ˜†¦˜\&õó—/ ...Âp9¢óåooo-êÞu &sTZ¨U]¦47/¶·gæäŽe‹{ ªª‚^9=;órN,¨¨ÿò¥àšüBǪ %%åcZM)·í`bh´+®™zŽtUJ¸—*ƒ32°÷4A Ùñ<!|>()2Ì¡íä0¿”¶’¦¦ûšp{¥hÑ$;¿²rMUÕO·ú¢¢¢ãHP¤ù˜pðð999ùñÞÑrêê ×`ÂÍbWÞü’’¿XÌ=<=ýýüHHImÙ5íì*ÊË*sì²½´Ï6%>}Ê Û“’WPpWɘŸ™Âí~up¶Ù_÷*&.ŽöÓ§ŒÔ¦úú[йË™µÙMW¹t¾‘75)óyäçQ´X¥´÷lKÈCüg4]Æg9x£XCÈÀPìh¾Lcr\ÈÎ QY.ÊÎ^ã;gÿÊÌÿ±™ÉÝÍíê1ª°Ð\NNÎË«¥²²²¸ø°tè«¥e³ãþÔØËKž­v‰XC]ÝË"P—ËéÀÆÞ‡ÉHrõÇÜȨaêøÔÔÔà`1(j&¦ñÞÞüòò(·ÇZëe—††DÞ°ŽÕ¹¹9¯óôççÊÃ¥æÆ¦¦¦ôô¯³†˜´š7G>i©SÃÃÖ„ä0YyGû¬ £Zü>Ãíkg{“*ËÍ÷^”/k“¿“­VfÌÌÔÊËJv²Y~øö¶QBb_fÕ$IŒŠÒ-.~: ñŒàZáÿs—ÑÇ Z^ö^¨³ÕÓÓ+))ÑÒÒšñžöºÖ>:8hûãåf˜…_o6Y°Úÿ|áÆN°¬ƒA£Þùí¥åÀoÍ×XÆüøÅb6G£ûíùîÝÿs‘WlÁñfI ­³³³¸¸øû÷ﹸ^vÝG™ðȤa¨iÜk×}µ4Íçì÷.Ònnxž>¬«c÷èW\DEÅ*ƒ^”½ {nüMx^ûßzŽo\y}>¶ÓSâHt6©²âW½eRFUÅ¿»CìP’0>ÁÀa66baå GÈêë÷ÔXÖÆQËר{ú022jji†/,,äáá”#o_M`A‡h èY§w¹ø{~aÚ_UÕ>[)s°L ¤2íljùâ]!69!$7þøæ ¥z?©pŠÍ7^#bbbî?Qár:|VTT¡RPP”<ÉšØg³^Bȇ¸aâæÖTVfbb¼z<.‹„3`¯qw†D;|yXá;V»7>j$¤ÍöÛ—ƒI8Ýa|p€{ë•€ƒDMI JŸå߯œ§S7‚î Ý®ä|,4mm+ KûóÝÕÕÄí¡ÅVw¶ùn£©©bø®®Uœ—‡V¿|ø¢dFI‰áö ÞÌ.fFHH`–˜¾–æ‹[N‚ø“íâZxàÊ·|¼[OÂzP‹\:UÒÂâ€?ååS]püìð .èÎO`1ß¿gwA­)B$§©%ÔIPiŸËÔ(„QÏðp£éxS<’Õ²öàžÈïGÎtžçqöêßy¬>{ßUíEôñ#ï‹ýð ߪY¯7ÜßÎ áà ‡hï¤ý#Ñõï¸}ïbãìÜœ˜óqD^qËKÄLÞô9B SQòÙµ Ê*(à¿ùžÒídaäó]¿G;¤í„µ¨¬Mð¦…*0:§'«A‰L‘õõÊŠÌé/ ÞgS B6Söå~ƒˆÈ©å<‚P €ê4j©5óÌÌ ý9û}„EE3#èaÑà¦&Eðy“¬ÙÞ½[ôóãöócnÉÚÚÂ8ÒíØaßÎlLZ˜šbrcæÃÄô’eó¸=#M!ò壷ÀŠLI*Pš«µjnð¸]mrÍU.M]Ý3£w:0™}YȦ¤˜~Å¿Û+ÆÁ+.Îõõ5« ûÕÂGäÏÆCe†,ååå¹¹¹ •ËùqM¢ È£¤È“&ñ²4 y^?ÿB»w0°¿{;ö¬«ß]D…ôkíé&Â닦ǶZ䨛ê,âÜÆF„Ø*>Ä õm\»ˆb£~‰g[“Œ±âO|&bY³Q}®D˜ãŠOÖxZ¤ÁÖ3å¤,9‰¿Ðp9ö‡rqÑd®ªvÑííÙ99qR©˜ÁÁ"àôqðÑVU_óñšMœx!º_€òÕÔÔlh@íh¯AØÄ÷Þ[ï)åå5<Á&•Ä«µÔi°WaˆMÄÜÚXSsIЊ> 抦‹9­¬Ìª‡EF=Àgµ€EJúÖÐPœ”ôåpuM0|ý²ˆ¦ãuô/ K¢TÒNIoǺ{0C/¤>Ç_¾vx!ñÓñòÇËײòwrbôÂhp/kååÄŸLa^Ö"Ø‹‡ÛÚ†³²–|6@ÉÇaJb `©¢ÓrÃBþ•âY÷Üáá9þôÄåû™dݦ.bZ­’ldc©õüPÃýëJ%È# ›óß¿a&&Ç{{‰ÜjS#²Ž·vRP u SS%‘–^óÒ•”” u‡½R>ÅAI)OÍ óis[E§1ïQTÔ(;++µø°è£WâK ÔK3É–øûRQä©5Ý,´ùÿŽˆpË«´¡¥+ÝÅ$ #µLcÇvÄPJ¢Á›dCÄͭܯË|?±¦†33Ó¹ Þx{åêê(==¼•‡š—7Hò÷ɉ©IXxä²hÂòîîGCÆ«ìº:e ÷¦º›ï˜t}ÀcÆþ$‘’d–”Ê•J¦hu?ž/^ 1 5çóÈ351éy”ýS˜ß{ÁÇðŠ~ØÚ‡‡ÔÀÀ,ÞdëÅÖÑ+™Öäò¦èŸ7Â$ÑááÃoßžŠˆYãY›ðS@02Z BJâ`ßÉj!ÁÒ h¶0ßgeMÕ3Îer>v£îcaåe3ŽXx$`µß*/(è^zûn“ÊåL4Øq «jfÖ6[Ù{¼¬B§Joº+ùððëÛ·ä†e×ÛQxÌ‚ÄóHã AC³Wiñ×õuu5yy5é鿳ü}:VIH¾å3mÇÆ’‚I“ÉÄ¡£}Ðê1xó†éáq=ˆ›¸‡MNV_ ¶b‚¶G÷”´##q>·#QsEÁ^¡0%å= œœKKN.º…Wÿ($_ý×퉒 ¾V'ßIɶ¬æÐ°W¾þó >ºª¢¢âŸÿ†nl8ûùy``¨ã°í…ãõ§¬¯W ÅLs¿²X¾9}t´=?çr=óöÜÊ««;éë“ÏÏçúÀñ{d¢\ÐþÙ uïZ`¢á$£©© Š8K’‘!± ´´½¿°Ì¢UH® 0)op;u·¿o¯×ŽŽ®H7Ç›õn*ÊŽB -¹4¾xZž¾;vâæG xxš„Ë—ýsˆÿ3©XªÈ¡dñ/â`*'¦j¨Umº<æ–½5Ò‡ÚÔ5××–înyhhKrŽúºoÖ>òòöÌrÔ5=H>ÇÇ(È "&>¤Õ2qãooo—¹œ¢q?àø‰ˆ§q:–æçwôš¶ÄŒû-¬€——_êéÙnòÒúHMýÕ$ÏÌ$ÏèkzŸ"Uï[Hyqq-¹ÑøÌLõ½ç‚lTd,V["Ç•GošÝb–cÍÖ'æOŸdG–¼jÀd`^vZÃÿ7“‹c€øÐÐÏu8õõ4Â)Br ±““ SxeÞò|gg‚‚Ú ÍIƒƒálli-V‹šJJ̃ç¥:Þv›}YµÖÏ{Ïe˜"¼ž.c55oN×»R¹gC³3ˆ}ùÏÎÝíNõ |þ”ñ¸Ç©«›]‡Ëi-þüyAËËKÎÕèé|´ÜgJ­]DKÒÙs“×*BÝßß*/¶Ò“Ÿô'«ÏëáÙòuiƒ²&îլĻ»š•c6k^sËCFÖÔµ¼Übüe½É9È_xç«;³7É»ÜRMN~ü5ðCYòîXN¨w4œ}VÇ=Õ µ„÷¾ü!¡îîw1{Á¨¤‡Æø¼¸†¯n¯—ßšš|úÄuÏñ»¸Xô’Ìrÿ‰ËC,Õ•‘Ñø†@–Îÿî8aÃÆájjŠö÷O+,ìOa/—:êyÈýóç¿RTkíû»Ÿp° h´¹ /L>’øÂäUW7f®™[cÞµ·ÓÞ_}j XôëÂÜ6NúQ¬Ë¡ººÓù &Ö&T`fÉoþ'_Äô'³mþroß8YöÖ† ;=ZÜ6ì§uq£µuÒöá„ÿDUØêÉÅÄ|!bl<œ)Dµƒc¬lPûªMÝá|G‹—%üÛÙ‰a¾«Ä}à666Åø¼½|xw¡ ªªž€±¸¸X‹¥bAÂcDE½ÿ´´°p»ÒvÿíÛ¹LÈ_ƒ¾‹Ý322)©Üò>—Kg÷¿ÍÞ:‹³·­@lŒ´Yí€rHÚÝÙôÃî¦@‰‰Õb$ö'šÜËG–ÿQêä盦ò=_üb±¿:Ö ä„ÚÛÛS«ú+!i!lÍTÕ¿ª &f9à[Óß¿Qñ–æ\ýsnSyrrÛw|NNÓÀžØ>59òõÜÜdãqaéb]êÄIþ^±a·²¢}ûvõ-j§ñ€ìɉjgz]k ®ªäÀ¼~Ï,äX†ÐïBeÓçm8Òòc%%øRƒ¶`^Àz}­Ÿ;hĸÐqsûÜÔ´°Þ™aõ,}ø¨9ÈèI8j XH6\ùùE54jËO]cj!ôo†xÿ;CµÚ¡Öªª£ÕŽEú¢o!¹ÆóAHÎöÔssqÎ:ËuQr*Ó‚‹±–½(ŽdDwŠZZúZ<=‡Ñ1®Îúb{ààôÑкÃpÈŽ• @Šuæd¥ÓZ0‘0¸×¬íŽÇ­w_ÚÛ8³1ð4³ƒ¾"%m­®ÖëÖÿ'pž~m0·À¯äk´ÅÇMþþœæçç’öéÂnDù°L³¼ÜÚÓcŒ×#ON%~¾L`zÁƒ“ºèÐÈÿúÉ‹òÓîbà;6"¢ä­!ÃÙ.ÜÑ,¤««éRíj6‘šÀDqYŠ™JcÒ颣ÏDñ­L9ôç8**îÑA²Ä¦K§í~ñ$aa§²Ð'TËßå`gÖZS9!”晀TU™Æã¥=:œ.µœhXì4 ,´¦šz<]WÙ›q·µµ´²2ôä¡ö!H Cñ~ÎEÂoŠÿ‰V^›fiÈ‚Úr2Áúæ†>19™Uêí¶% em­œž¢P£oÛ‡7o&í·‹dò32x¸”lNBûú¬Çû Ï¥¶Ié[ò‡‘²´t„öB…íÿòE²EŽ ês‹Ûåéíù5¹LÜéUÍ¡·Ê­¶#)W#//Ûǵ%%"Ú^ífddØàt꛹e1ÿ(ô,ŸÀÁ™qr²ãJ &pÚkkia`üyÞϵöõýPkmì䀌ðn@ÑþeÊË"’lÉ8ÂÏý1±ˆNaaφëÜÁˆf]¬£Á˱±;$'†m 5þÅØÃ¡”éŽ@Û¤_Òö6#JrQ‚xfüô11çuv†6ãD¬umÃÃî·<~£_€_JÒ0‘“+ê!"Ï…zSZJvp¹‰„FB¶Üéß¾Í*8®ÉÃæ½=u·Âëµµ†ÌL:È×ÁAA¢F$ÕnAP'Íy<ùÅ$¤"ÊE#6 T¤¤!/ë>ÿGM.ßždtÏÜ,ôÆ`°²VʯÊN—òq8QÓrÎIý³Ì¢ææûáž8È?´ÍŒs+õ~§R²./IËÊÏ¡b7¸>yÄú.›Ý_•äúÕË„Då±*Ø×šo¿%Éí½t‡t׋Ž>IF²ÑÙÝBCSLÀ£nòäœÂÝåŸãÒƒÙ+îj<ǃõ?ýý‘¢xöD‘tué4Ô0¨6vòØ€„e½Ç‡€`‡ù¹Ï Êg'T°m` ‰!4tºƒ÷3ú$­¶ÇРeFcãû=j%yyL´‹‡«C”Ù¿&gÝánêêërAw¨:-ÌæfOè˜Û¬yAH=ŠÝÝ £tXƒÍ®ç½ƒ4U99ýóóN²ËRJŠŠI¿îxI7=•§zþS+zë Í*î\MM-ί<´µ•´´¨Ž@¬ “Y[år\š,4nç¦Âñ_¤—úø„ueÅÄð(*åȯ óðdw…Ã/RϨÛaï¶ó蚪]”Nß=çh-"/pOÓ»ø ç‹,±F÷çÞΪªöûkžÌ0|P©©©Q££Ö¸¸€ð¾„k©ÝÒ€¡zx íO£‹ž 'å6ÙdìE“î᎕YúÀ¯a~{ë*dø ”æÉÉ€F­vM­3ŽLyå¸o›ïÇÿ¯Š§gRêR/‹¹Ñuë+ôô4˜,bb&îRr68GŒ†Â<Øwž0®¢Йæ=p‡û Yy¯nŸžØ¸ï#€i¬««•I=ÈС¿{ ï^ïí=ñóS/¯y`Ë^]CÃ'Xþ0Ç:M›««S“Jê5’3.}ßß?0‹÷£Ð#YPSÞÉ«ªÞ¯ IÉÉYª©ñD}ÞÚÜT–ÅÊ*¢f1þ Œ{HÈÄLyÖÌJé– ,¤ü—¾ç–!>¯°ðAIªÂÄ,±Ž¯\ô\ÿIõóþ¸t6kʱ±«²)yÝšÓ ñ¨ððã®ÐšJÅ&´fÿO‹Q¬Ã§¢þË“S¢Ùëqtb‚‹ëþ$nšJ ŠÇûö ô¨’îjü`Ò›¤$®R6ýÀ×RC³33§'º‚‚Vêê11µedfGdg\àŒ¥ÃÉ¢(&'¥&Ïù_d‘VS“WRúES8ëç÷kee[Nn”©Ä„Ji*ƒ3mU¨ô-¨ÿ@2/•ûSEÍÕ[æ;¯QYX°°’G§ð½ç8'ÔvrZZh™èOÔ¤¤Î“9P¦À S~>¼Z¤Þ¾=—èx¼„‡£8¹qü|±Ö5‘œœu/j‡ÉV;ƒ´DÀ¡w´’.ÑÁÄÆæÌërÂûñãuo c"£gCSp¯"èSÜ5çã×7MMÃ]]Õ¼ÌÌUë3noꇆRØtuK+*©²sDTŠéšæ³üy\=Ê}úgÕfq± ~H2•º£»š(F£vèy±q8ÿå½îªá|kt¢ÚÑqZjòƒ4ÿׄœœš¬,|ç?ÒTUå§4”œy½ó€¹""騒¼Ú° :Ê@&R¸Mô™ö;ƒc™­1§''c¢äPÒb’J*+Åì“£¢æÆr°ýÕÿt{5øâV?7UT8B¦òÜ ÇÇNöt6ÿ[P`¦¨_Y6RQ6¢·›  ñ€ÅÜÓ¯ƒ¸)O»Ã/re®ŸÚ%¿îøù¥Ï;“µ»¾üÍŒšI~u5íQqëóø‹À/±¦Èb™`¬÷"çsHˆwà;œÎF..[-žÎý}ÒãtX=ÛËø¿ó9†–—}¥Ãƒww»NO9>}º-.^üò%ÐÒÖÖ8¹$rnÏby^ Î_9±**`00d•ãùø\+¨Ci}2KŠ‚Ã¾HdÉR;KC]€²ó£'ç+ŸÄòÞ*Zˆ5µæH™9 ªd ‰åäFmT““’>rM*ˆ- nmu'%É´z̦Ú_a¢ô²ãZ•A½ÁæÕJJÄc“Xzš AÇd L¿Õ:9?ÇÆ.ø€]õù'è§µu{¿Tw×ÅÜ©ÃÀ@3 2™[â:úû¥húÝKM-)©Ƹ^ Ç.ÎÎúÿ·Fðæxâý Ðôªzjì ITTÄUTvoNc¯[_–·ŸPPÚ©TÌfç†ü8^Ø ùÞ£HQtš7P·PYËÔœ˜„¬¡ã;äúû`{{kÆ¡‘ËÝÐ8R¨°Ùuƒõ—*+¢é4»C¥«ûj¢‹’Áy½;)/ G± õ}Tµ±Œëí‡;(ý²‚QœåTü1`É?ÐïH‘)€jn{Op:Í<#½ÌŒbžÔpœ\$---xÇ•”èÔ¹–Nïçý:Óñ µœfSSO‹ƒ$€«ÃiIyLnƒ¹ösKÀ˜þAø¯¦84]\~õÖÕYŽçög µƒšnueZòDRNëÔÐ~b¡>P2Ù m%J6?»»³G™ÐÝìîñJIIÛÿ‘Ñüúè{$Á3ÀÖns‹ÕÆ«»žÈw?&ý–ÆëOàÊ‘-{x’+2Äí(2µÙ¨P )†Ñ‘1ìaân¹ía…øLÌé­ E¯Ç¹@ýê+G ‘hŠé‰ˆöŸ=ðñK û™©iŒwv$}È_vw œ·ˆCüV*/T£UÓÌ‘D»™òúRŠË¾;ÚÑÜ‘(*9ù–dCDT4¸éÁ3ªŒŠÑ‘Ú¹LçÓú©ËÕ=†ÛDÞêû÷CI¬‹U nûSÝMC6¶«““›“›ÜÜaÿ-n¬­Ù=<¦EàÓ0{·„äñôDgMè$çJ³6Ý=°äMû·@œÌOxzbó‰âûµ¥Nâ|«½½ý¬éYñZÞÚ ~R0{1ÕW0Y²ö“_þ"ð¤ÛvÕ_—âb-à°ó ûïî¹Ò‡ÎÈœ:Zpõ\}I´JÍÿÅÖ_€Uõ|qã(%!ÝJJ7H R’Ò ÝÝ-% Ýtwwƒ"]ÒÝÝÝu‡ïï}ÿ7ž»Ÿ-{ÏÌZë3s6“õøß JÉzí¬ÚnLÔø#œ,{¶ôÉeŒŒ3áÑŠ¼w»Øî, õõãÚÛ•þ“UXÈÉqå)9ðPZ™í‹ˆ[,¼ôl"A!©®þd³0STÔD:"bC§¬nggÓõG;>Ñ;>–ÐÈœgп/Ô!ÀÿK¨œ¤©‡›©ë¶Ç©èÓË0Šh“Ñr1bCÛ²¤ÏÂÚ”[á‹ãö=óu†FâÙ#Ý"Ï–aÑ"Ù§§•&{}ƒƒG-΃ ŸÜ,„„£k•rUbaÁ½oNvz{wJ5võa^ZÝ@;Õ³G”ê(Ù6ÖÖî³<µ\ôôdlšww¹],¢`aw£{¥QSs twwvwg^aërl¨ÕþøØšq…Á?ÂÂÂxÊÌ@O¨27˲17T©”·NN|Žu0HÇKõ›g%£·9µ6Û ó8Ú¹©­>Oin^ @nø§g{.^TôÆbZ“‰Ÿ¿p¸Ê×/#ƒ;ºsÿ¡üÆO‚Âf#)]›}m¨Òéð©°ÈÌër· è RÁçή®²’’ZË_Àû½~²OÜÀm¥®‚Ž®„:öø&…Çé0‰¥v…U÷ÇÿµËqkÄÂÿ7Id¢ÏêÔývøuëcHKØÿ\}[wO»“BD¤K'òÓŽ±ìÅÞyN³3jrö+P gø-ñŠöØáà´°±?Lf%©Š‰+«"¾• y‹ò¨Âeûòpâ·¸è7€(ZÂÙöt´¿($xn€ï‰×ÿ3+ñwãŒÍ„ øWŠœI¼öîÐI˵SSSüÕ•0'""Q<§Ë-°é‰¿ç€?”KÇêîݾ º?Îí"¸dµf%?Q®ìW ùŸ†ñin þþÚÉ)¾­UÍ’Š“ìÿ㣎ºÛÓÜDåmih˜Tdd]û @ý)˜]¸75Þ~º>BG@ˆöYè¥=é?˜ Üà ÃwtÁT­h¿¿sPôxä43“Ÿ´{ÎÉËcÕenþ»+ð ”Ù½£P€×üî]` «>_ëJ¢•´Ýãö«¢‚‚8EŒ›[6v·²R.PÇÔ21éì_$%CìF£¦§ËÝo㳫3™°1Ö5ZÕ–†,çÂуB‡€xÄÏC„ˆmqe©kjrxÝ÷ìWÙJj³ü‘—i—˜£Ùö¥àËE›»´VIbÜ$ožØÁ"œ¬Éûqþõ×®“Yj°W+Í%¡Ü…W—QÈË0e€å–[›~/>f—•ÙH© G IÊäBG’’²’’:*/O ‹¹½Me39&þˆ‘½OÂjO!üõ³Ò&†˜ïÁ ÜÍä ÅÿtßÈEw·Stt…”ä>3àòmU•„}+ñ™5P`@¯ª¨°²Ñ7pÈΩéêb}^@¯‘ŸURã„,ÒÛ0 ÌÃÊ’÷÷©øÛ[\˜–[ÕIp®wŽIpУ?z=&ÌÌKšyjV­å ÎTd„òÌË]^F¯Œ¢"¸Eÿ?þ"|¸4š\eg wfÿ Ãëq¶Æ†·|åü\2"rTFê"W‡y[^kÉÐ|¿¬†„ ùW` › &š„\HµÜÜ͆zgº_’“L“~ɨ*&üz<,ÎË«É\•â¸zADì@ƒ§ÐÖ>FÀü«¬œΩIC*™Ü‚ý›ýýüÜ\ {*tTÃð~ÛæƒÊ[æ3’½ý† ð¿yÜ´ nX,¬ÉÜ<·?&(ß»˜-Ï7¡edÒ5]ù¼f7*+7z#æþZ=ý¿W=Ìö¾UêÆää,/6aþb (),}ä´˜>ËÍ%& °‡î˜Š&g™›Ã>;;¾DìQZî¨H­Ýâ|õÙ¸°æ‘ä—tÿÈëßXôÖÐY+[@Fžšœ‚;“CzÆû%}÷xçÝuâéù`}ÕУö}è[q‘Y» S…Í’µia½mVñˆR$(ˆ:¾ÿYì||J Z@+kuSLªÏêhkÇW5-¿€*WPÈŠ(.‡W¼šj¡[D¯¯ONO_;]‘1hI¢.«¨˜<ïÓ'‘øÑ¶ÊàW øm"ÓpƒµU¾³1&ñSO7åí£Ûð›™#¬_ÛœÜõõ­­¬/Í––f¯­ëíšÑ›œŸWV»ÍkxylqÉ¢“OóíÛõ¶ðvöžqçÛ¶ëÑ‘òÕ4^—÷—yРõÿ› Ø!2díîë“c§1%ß§'Z{¼‹CÄU±?áñðhTÄÉ–"ÖñPVlþx_guïxçQTa6„„ä¡¢8ñÿ^üøåöñ]ìƒÞãV/Ï%àKA4òe¸šO3p‚@ÌO@ˆ…NÜ_ïLˆõöÍàèËãêï@?[[:F†b„r,¬ cò?;È{È£iŒŒ®€#§›[ÆÅy1àn;ÏäQE®(EùèìþÚj&dLÌ {Žgn¬ùj#P˜a'–¨Òÿ›gOs€É%ýˆñ°;f½='ÜÆ n/@]ð6ða4›$²—yhÀ|ûlƒn—…*6MKÏÀ9²wk‹øinbhÈÞûårsÓ ª‹ž¡Ž˜ø Æ >Ø@E…ù‹íééX/L::ÒMò/5!^EIh¿¤«ªÎÊJbªc¸ø˜h‹e$ú‚#Gˉ9Ìo}ßÄJKçï”|r`ýùíOQK»â 6ö“Í•ûJÛJL,麳g[ „€×£O` †ªêëBÐXv?|C@|ªÿƒøï’Sxw†îæ¿oû@SÖØþÌÏø ˆ¢@Óá‘Çã`Ÿ–†burùüô8œb#E„8'ÐÝWÏ…ÿ9›£pÂ=–ju5Óßjhi¦¤N¶ÿþ7QH¯õÝkºðß8¶ÃýuÙRçêÐã]ìHFƒXšQ¡€çýõêo÷ý÷&èè>þˆÊYñc½ð÷Ÿ,Û0ûÖ”™ù>°†¯ëTmö ¤£‰yÙqg2èÍ +l¤¾ôËÉz%FË g}5N®4Û ÍïˆÈ½ª€‚€(…\¾ƒÀK(8J°© ?åχññ¯ïü¨¨¸zÇÇbÓÓlfî‘zzL.'™_mñìììîîò¯Z[‹£¢páÖÔtu¸ØÃeš/.êÿw]þÛEDæ›F‹¹…†€—åíeQV{»UìÒZ×Ý}Ó‡ÄÊJˆ. ÖȱÐ˪šN R‹>ã3ÿ¢W\¼í¥wÙ³‡#Ú "íSòqÑOŸ>}GWšT–Ï z#ІˆsX®6Ó\Nç\åÒðFäMÑ[ÎOy‰d¢ßvÛ\0bÜHu8C•ðYc7Ÿ½O ™x}Lêg69nÛ±œeÎil<>Z8ññù`1óý-ücMßܸBˉž€‡‡ÃGpöÐmm!KlÜœ¬Hùù)VèxËåŒ‰Šˆm ¼wIÖ;6·êÅÜ/ãÐ¥Z\Ö‹ÔÔŠàÃí¼ØéŠ ñ,+¦5².7³.‡,&žÅªs—Çüãº=Ëù³øøxwqm©4¼dµrLŒ—$7þKgsk ŸKörºlj·ž%Pïv½»R*ñO‹ÞÍa<ªutÈÔ”‘JEz³cQV|NÀ›4ï§äÏT3Õ7·” r±¦§êœœÆÈà××ÞýÛ;}¸y˜šÊ{˜íbÊØ¡€Ci…‡—x>Õ Tæ¡§³¸=}ÇÆÇ—Æ¢>?ÿÍäÙƒA^Þ9ín´¨Pé›—‡‚[ºíH…Õ†Ûæ¦Ks;j±3q­ž|Qk«¬õd©zìÐ0ÇoZˆF‰yèq'k]—WÁBñ÷j&ÿÒO´ +99p¿‚ìãB %¬É(ãg—Ÿe%¡íÞ6š Á7ôn77o¤¥J)Éó½?­©Ðq8:´>=??==ýZ¤µôüéì ÝÁaôÚ.ryLHYaþåt ÖÁaX/;q~žæb[+‰YèÏ›µQOO ±¯_÷ äÔa ô°(d44ø+ûðhé£'‰‹uÔÔŸœÓêë[CB ;¼•õð¨¢%ÿü§×c!‡ä좦Árk?›I±Ï„-sTylî7÷T÷ÖZ W!Þ¥2-Ñ'y…¬º+£žâvßÓ²²4BÎÅȈ‘¬1S´É§rùO?˜8®`TNõÉÙ <ï/náW¡KâS¿^jiólm«¬œž¼4”¢[À–—×Ô|^ïžÓÏ8bç¬osO$A>{ö31Ilo÷ /ÈÍś΂ôÜSiad« “ÌC@ŒüªBÒ+±ZW»yoÝ£ýõ+&AòõõÑÍß¿Pï£{ÿЏk†79pPIGéÎ1½îü$ ÓG–˜ùH/™òñ"¬½ýÏÕ¬ZïQFm¤–ïPfkbdhùÒòín_$ßn-œÃjɼ”¿È†ÌG-Ǩ^cLÐÜûæûæIF­ÕÂFÆ ûÙ9¡lZõÁF[pðNNU ŒçÍÊ¢U¿«‡¹~Àö¨ÖxN†ôö^×î;›ýöÛÛR x4´Ý<ì™ÞŸSùttVˆÓ0IÒIHÒÇfgó3™a‹hQßbBAt²|jŽ ˆ*wàDìëxñÂÄwCc?Чt¸@ÜÛËyêó‰Ûþ¯ñF~!.>-M¡zý¡±²2¦ƒÎ5<ŒéŸŸU:íDÂ7ÿ>Eî:º^Ö¸¹M±Ï{§§ƒîìŒ2éTeW øfe™ðŽ ru6«¤ççwÖÆÆî­uMƒááIKÓŠŽüÓ5ñùó€5³––Ž–VWÔ²D_{exˆÊIùí <êú/Ø øùÛ°ú&Æ%£þüÜÞNvØ1Ï|þù:ÿºR™0R¤(Ǩc”ÜP¥`eZÍ‚׳ÜTcÌ=PÙÛ«ZÞº0=='žÃ½û‚¸íçë¼wàç„VŠF\ïõä ¿ÿœÕêÝ!§¥•ɵÜþ´7’&×ßßÈÂÍy¶ú;QðѽJNTã@M-\>•ž™¹©¸ø—¼Òâ¬ZQ¤ËÝ}ÏÉò“åL¹[yùEI‚(âeY~>%;ÛåÃÍxXXuk+-A8#}˜RzâØxÌÄxŒªb¬>£ÈÕÀÒ˜ÛsÊ@É<3³þá´—òü„„Eˆƒ‘ŸŽfYpÙ÷€ósø?ù–”¢ÕpÓ`³‚Š˜Õ¨áævƒåÒ§'^mf%cf°Æ8y#Gv*)iM…ÖŒÚ5¾§ŸÝÉŒðÁ‘Ç_Ö¦`âóâÜxŒDAÊY¦½½}ww÷çE®$Áa1±îNÛdð<Ž}Lä9‹+Þ½§pA. öžCÏÏsNVt"蓲&Ö~ÂØëêšÛÚš‹ŠnÜž(³²tün »½ëúp±c ÉÊ©Òîîþó'< ´çÁn¦±q‹ SMÁé:€ãÚÚM*¹„)0,ÿ¢„Æ#PÌ=øî–Z.++kÇÇïµÈ(²°)¦±‰k}k¼b¥–ƒ¥¤Ølibàÿ~é$-îûØ Us`îs !÷x Š MS9&} ÙÆ–Ø|>Ù:9qppˆº4ù‰ù•ÏçåyˆŒË ±ù ãbQ¼}{~~ù&èñ±‹»øúh¡A*‘ѧäøS«wF•ùÿ¶jmÝÖŸ?×—Oåñt'aļççF½kHáV·Q{›Ž\dºÔÍO(s“‘¤ØBB*t¨·vTû‚˜Ô2ùmÒó‹öD´µIà}““yØ׿þß½¨ä‘··Aþ/ªCó­’†‹1}(Ò÷Õ(5ÖäLF0ßÀÀ¸ûää« Ãêîögeð¸¿ü@LjÝ(v‹i ÑžÏf‹@ÑÀÃ@ù@Œ™2³bu z>ÐwJºB@TB• @ü‹œ(ðë nr>ªŒÃgcaQ¯·œ³=Äï|Uˆº˜ú‘ 3&6?Îç÷O¯å¯_K*V^Œ5õ¯-¯ö&”};¡á}A“&'鯫>_wv*Éöp™Œª4T•UØyð)}spôë²Ry­¡Y>r 7,¬š0½KkCí{¯›ãý}cx_ JÑh§B®G²Øròšœìj›EW&š>Sn½$åÏ]þþuÌ'þêN×½ÿ¾ŽÐ]\´€ŒäãH qóKýúÜèO8aIg¬„nUW S{À£tA×üü¹§\Þ¸¤ä>•4D7Ù‹Óif]ÝÕVPPöʈ7LxnîÎ΢ð(~nî$’QüŒ+üT/D‚¡Õ|Éø¡è´'\y—Ñ* >77©©I-r®%CçOw¨MÖ‹É ÀàU9Ði)IÚÆïÙMM9½Ä㦗þ𦠦pùé9C@0C0ò@üKĤ^6µdÒ, u"ƒèt$ÁÊ"I=aêH^^Æ0ssÝÔ¤ÜG¤:ý³çò²GCMZÀ“ÇôÚÒ‰Yr1¼¸8®¸x²\ëpl׉°ªê@„#q›Ã6>S…ô¯EÈÕ¯ ‡mÅÅʸÊ6ntVn××yà}ssÿ‚ûƒvÊ2VÒ„‹ù‘í^EÚ¬äkuOžä|†€€Àò™/€øW"—Q-àýl·ű?Üô9°4ÊNÖË+;$Di…ÐÄ0îü Zv³Yxדױ‡ºà|ªD¤úwEjê@†ƒL¼dI‰…Víî~8áÉo}fëžìÎGÉ;kkD„îìä]ý&ƒÈl?ýÅ7·U®žÒÅrp±&ÕÔµì÷sÎ^çz›?5£@ðçL¬”æ(Sý̓±ª”…»Y »F)*>¾Qq±‚gbÄŽ0(˜6ÆŸÂBmP&ðHÒ{9„ábc«à*3åW–ææ&Fº¶˜¸¸¬lŠKÍN×e%Ýa’4ä/ KBes~7Øx§òÞ<Þœä•"`@@0ÂQuAÕn í£iùîD9탄åÃ|Nòüx1úps‚úÈ@´ ¥Ûz{úÔŽK­Ýêz¶ÞXš£ëŸ€#O ªxapw¾åió+ž#9îØ…mä†\†¿ÞŸŸ>–€ƒü;¼ÇsÄu¸,“X†ì²r23WWûõ!m®ÁvýLÂ3#(Ëø ‚M’^žãðIµ!95¬¥Åh0¹ å ³"–@N>úÂE*gÌÁžvgT°"Kž×\i æ+5õÎñq„ÄVæ×1Ý=|دo¶jà!«««ëtx…‡„HJK/6ØÂÉÊʦpZ½í‡C!²µ³Û3h€øôȇ8F›rµÏ~ÙÙï›vEC/¯.{" (Ü^ŸÕ*­ A Ù?>ÞR…W¼¾Þ|¶qÃçqëÿ¦×—¬¯·· YIYù ƹƒ¹9í"¢ÐWIÉ·çƒ1£qCCCõðÄöÙÞ½(ùì†Æ€¸k ã/Üôýª¸¸ØüR8e%%]JC¬llß¾í:ÞÏT踇JÊËGß©y>v>Ö€·º¹}<¿D%7ÔÃKˆmñzúŸ&kcm×ÙÛ WV¨ˆ¯yX¸R"ù|?¨#¾cêÎkÄ-,Œ²‚õƒ8ËÉzæK9T9!DÁëÒ)).ShÙGnéß|þDâ°ÔîÙR[;966Öß¿‡ëJçÇ uú•š–w…ƒ#Âñ©MÔWågéLo8áÞ*óÖý>>ø½D&2ÓádTRÒÿK«£Ža¼ÞÕ±¦NW\#kõV ©ûûÛ R•ÈÐ ÜW—NûJššD¬¤oGh?¤K$‰¼XDÉùrK_ªeâÄCuu9îô¼ï'Wö'""PTUU,z{{£££÷òóóSK'‘½{WåùPÖ¹1QtÆÊÊ `bÜë±Øä@]½u¾5èïïqqá¾òz}±ûñîÂO¹Á»H„H|61míç‘4ÞPV!”ýƒƒäàª;#à¶£”CzÌÚ–66+u¯WNJJŠUTTÄDêÊÊÊ8F.öolìîñÎ!ƒôJð´ÕÙsÕçªekºLcjj àýt¹V ìM':º’úzÎVQ¿§Oî ϸ׈3è-.‚\ü_òÆ½ŽŽèÜ(Ù~¿i„KX‚A¹þÔ¨Õ‚"KõôxÓЀ †Ž›»ìunʹáû`"Æ{Ž ÄU+„Ç?~üðõ…ÚÜ ¤¤ì! äo\^c£­ï\wLÎ:œ«1Yl´ˆ 9t#æã㳿¿ÒO£ÁÚˆOÍírwìölƒ’‚‚Ÿ?šaa~ÞùpdùJJ>.!óm)IIV’RLj=puÀn†¨uuuúúúÌH 8L:íD6ò,`t[ZÈ_@m€ûÁ¬•—3ÚÙ¿})à kq؉ˆŠŠ*//ïè„j{Ãz»uºÖê\Œ‘‘DqiÝpzÃf>0+÷Àо.uñx¦ÓŒ s”ÍÛrYŠÔŒå¾ÌæÜ\CggÎEÅäË‹¦·]§½‘¤NNNo``@Qúùùéá-Wô6;D5°sq!¾}KEIyÕhÄåÇߦþ«|cŸ¼ë.ø' 7½‘‘!!«fÐ7ç«$wÝ%ï%f eßÈZLþpL+£¤Æèkl÷Îø=àwíÞÕf³"`aqè8} …¥¶å¾ˆ¹ÿ ôÒð°UO¾ ×c_ÿ/.’ ™q0lll gÂÀ8•Ûì'䪯¯¿f34”\ƒDÀÃu{è×ܛɟó!Þã js/2(K¼œÏÏÏÏ888ÌH+€éÎ6z]CCÖ³¨¨¨0#ÁÁÀ…„€¬íbNŠ"ûïiý³/Ã)\@+  vuuMMN’Áïqñ8lçI…†„HPÄøøü•¹ºÜAÅÿœï‰'ÙŒÒuš/ƒŠKoû²Õ€Úàã¡hëô~íñ2àa(qU{DY]}dJüš½ÿà *i‡Å çk‘^@[[¨Íh¸EA›»‹18§ï5¬Z½Sâ=8Ô1þþÝ@$¤¤¤À¹Îw>¥y™ja 5£ØÒÚ~{~´´š«NAÄÕÖ;zh[âÀÙÞ36.N³ÃËóógèó{ dÔ0ÈxE»qÔRË7Š·HF!©((S|¥‰ÃOÊãYÑÞþ Z”vª‹—În†qñ'°¯OÞ÷ûCø÷×™Þð½Ñ3Ò€¤òÞÞ)©IiúÛ-~¤’ÿŽ&ÂΖT—”€T߉ÁŒˆ8ý£¬›T‡œûÿ»SZÐ6v÷ƒ{÷™²„€ŠRߦN¿Nu<„÷Ç&,c§u­o œêòÒË΀œÄÛ i ª.lFCC¼…‹O'„§ÇâûÿH¼6…ååíæS´›ÆåyyÝ==°6ò ‹¨¾dð¾ùÒ¿„sÆ(();<îôMMñ01 ,-‰ÐÐtÍÌÜ6z·s@’³šK|ìZö"5üãDšìÉFÏåÎJ-êçŽïjjš‹õGg_¯™=`Ïe~ÿ|™ Ë ]È‚ 7³Ùè™yy[ ’ ¤ýéíåî•„æ¿Ã1Ôöh¾NOO/>>Ø–E ÂI;ä#Ÿ^’6.¸9r1ôé½¶­­C¯ëëꎈ~èD‹ ô‰²™±ñôÔ”Óú_„íü$~ëà£=~ÛÛ»¾Ùc‚[3r*ªí­­©ñq{€$.þ±%ï!V±èN›>úF7-á÷¹`bxx´BëÀ§ìJ’`'¢”MŠÝ©SpwìÚÙ„}$$';ûéùy:ŸFÀd^^Ï Ÿ]xy;Íç~‰ýùó'2rNNλW`دzщLƒz¸mâ*Ôä_\„rrŠ”§Ñú¼ˆºÿ¿Dù‹SàÙ«ÿÈ\¨ŸÂeƒƒ…%R/tÙ¸õUÖFE6 wT¼Ç™z¼S.(òþoêêMñî›pµå!º¬|EfáÞ/êêQå5¿:;±ÔÕg./¤#"¹Pž{owFi®­õÈAµœÍÙ£fÈ#‹ÚtŒU oíË+(P3uð’‘!ÄG}eø/ Gá!æ_þ9å#ÊÁ;5€æä]&JÜpãN?}úO!n²Çvq2hdyÊàþ`¤¦.Iá– ¥±±ñZ\FªÐW`[b\0±±ãý5Îï~]É£‚‚ALÜT Êññqðôßjá‚Èà+ä‘ß<<‹UWç sðóçT¢lª®^dgÈgååä ® Z€Ë¨õúxxÞ†½öá‡#13’_ ÞáÖÕAîãcq›;C%ÊÏ tx‚p*ðÃC¾(ÑøÞb @AX˜šê ¹¦îÏV¬¯¯ƒ6kXüü³öJ­fÐ[QÀ™–¿çæèÒSã•#œÈüF1@#(99§ÿý³]jvª1þÃ3¹úßÀçæ‹{Á ‡ô™LÄœài<ÏE*‘€öCx7NýÎÚšR½ô/Ö¼^Ú¿@[%2j)()±³°|ôzl,/·^á‹÷' „ã“#Â@GLûòx´Ð NŠ-Cð¦žÙj^Äín¬B‡š˜ÏtêeÚÕ÷m2™ xYM܇õÿ=$-z?¤î¨_ÿ€Ð, îÁ'n¡b?Øñí@ü¤B(ˆR`,­®´Û$s'ôJ þSü™¼¯ËUÒÿ5 þ4O ¹óÅåìܨ6 ¸ÃC$)©ƒ‹*˜ÿ,ÂñëŠìgLKrfférÈÏôÛ2\\\@¿ÈÉõž‰Q§]SE%Ašê3Úß/þ¡?Ú ‹%ÍLûZ¿Ç9½>ÛÂnºZ3P6°B;¼²nJQ…$Љ>5øl7äÌÏß_xš†á¨tº¥úà ˆ€þJØ™ò6?£¨Çoÿ»„x'©ñd'³ší ‰¯¯BM õ²¦?¸<3Eww7“vk'Oˆä[‡õáñ<Ø98qCµoæă—ùc«ùT…òä_WØ42ÇtߣŸh+bÆKPÀ#æx°©kjÒÓ3]>{ÉìÀN0ÔåWñ°¼\¼Ñ½Çc®‹×3¡Œ¸‹Ô¥ZþsavW6™"܉âô`ssS»ÕµÊãξŸè½¼’Èß O«6¦ð '®{éÂçE¥†&•î¦JDRs@1´¶¶š¦-‹d3“fPf v ‘®pó´• Æó£ÂQÌGD@Ág£>jÁ@½ôES ¯è&Í÷¿/æë»t„oeµ²w‘ÕóV(;ÛøÏXÇïtñßDóTŠ”±$ñiÝ998ˆïeAWúq~þ¬ ãå9çá©þÇZÚu÷êà¦ßA@Ü_d›…¦ ¢rwuð„K Áçàòzôò„ÑÐ6yÜ- &KJÜV©52ÃýxQ«þ»)øøí¨H%©'[ŽÂƒ$üXRŒBÜgjŒÂäääH¯øä¿¨±)âŠ^mqq¯q 9¬Ñ™ÕàòòÑ¾Í >>?Ö°g=—Óy­ªÂyvŠF%79?3†ÿzEEØ.lK—4Cò»»©ÑŒ^X \܃âbI†o¹ ¦ÑÏ?0Ôzß@A$dwÏp=G joîdtñ eª2#1©Ù~ÒJ㵨ŒxãKô‰ìöööÜËb×ÌÌÌòrúBys^Þˆ½ 7 9›ùÃõGÅ ‘¯[X.掎nneÒY§«¾98ˆã+ ¿ÇîíED´x‡ÅÁ©Âʪ0901€‹¶ÚÅ3Ùd·ñÔ¨³¾|ŽÎÈˆÊÆ6Ȩ]«Óøµ"’!%… *†Tð99A…ÕnÛÝÝ.v,Ç?íJðuÉZÎG„ö‹4}a‰ÅÖÖ–¼A Ìü¼ý÷ïo=<þf‘Âw¢bÝv‡þììÜ,.6VV.2D:: £ ­Š@@†§ר·Ð°21.¹¸¤ªK aë_] Ñ àõè´Ø] ;W¦ÆâŸˆK±ÏÍaÖ·ÙoO*h\%Ú,›7ÎÊ6¸¾Þ'aœ”¢ñ¥ +&&{~þÜÙ9| À ~÷bØv~.öáÙŽkN\Ül‰êÂh:ò\ë<¬”…ñeŒhò7©©Ò À_rõmNl™3I9½Ÿ ©©'ö&”ª ÔAá,j‚ó®CâšW<"t…ª®AñçÏ[£èI- mee ÕÐ Ì2†Š2†—P Œ>//„™rÑTbK]æß=b.gúO,"•(h³$xZâá‘r‹YŸ™.ÎGô‰áÿÑI J±²®“Œ¨Á£27X5š8¶åço¤É‘dPRˆYϳ[\íenr?§ñâÞŸ [Ê—BïA†‹— Ç8`qsÔ% ïa`cUŒžNàâTIeuèì‹Lx|q~¾Øþt Øùø{}|56׿îž›«Ö±ÐPëxÿ@ýÎïh``C¥ô“UešzdÆj_4T,Õò¹‡¸’À^ ÝdB=‘!ø$€ðÎÉiÌdD©¦~ºªv§Ç+¢òøž^êãӵĦ&2­Þ¢ÓÓK >áÏ.»™Š6λŸ@ç<<=‰‰gŽfíä44d5Ü[óó‘Z¤ÿ7ÎÏ',4º}‹ ahu»°!“7!·³» ÅÑ á Š¥J2¨YéH´ïŸ-Ÿ¢$'ïÞèÅE6¢njR&äZ®(2krs`bÅ©þáZž†] vááSÞøùEÉÆF?¸ÔÒ¶8i¹Ïo˜IR|ˆÒÉeÙà ¾Ó ©ÛË¡›,\3µ5l©jÈ~o޳ÿÁx®Îm žl§„eh¯ÊÂø~RWÿ¬6{ÓÓé­M¢¬üÁÊÊ˜Ø |µ´`Eêô Lƒ´­5û§ÿÝÍ᯽®!tòÙÛ™5aXXÌ¿Ýþ^ChµN ¶jÂÃK=ž·úO‡¨d‰pñ-N–w""\œX]œÒ£þ8\Þé'å5&$<¿ªlèÈËeŸþ­7‚­ø5c|¨W\I1VA1}²Â¼<6ò¬»KhhE&mD!4rw¬ì©d4}‘ÖH•X› UcuUcV¦¦ˆ¨r7Rj-ÓŠJJÿ5»@‚^[:}ý  (:.¹«•”5-õxÝܔؗL@ ½¼œ±4çŽéÄôÝ»²ü| xý+Ÿ@ñ ¬l 5¯Eôìl6 ‰ÂIûâ¸ÄDÜnK62TÄig‡1ÇÓ3 ßÝD—Ú~ed¸\l«ÌŒ®¶ªCkêOä20Ë¥[ê¯q‰Ñš²ßÿDx°^´ÝoQYìts÷æõ¸Ý*U-×vÂÂÄ$˜t÷~,;½~ž^–Å?þ}mœ<¯¨ís³¹ù'9ç}´¸úÝÊ`Nù±k½WcÚÀ°°ðgg†>°ÐÑP–n@A´¾Rëã#¨†4Ü‘NdŸPq˜Ú©èùþÛ³ó陜–¶8;ê€&3 `äß¿˜ÆFÚ~§püý«Æï»v¢ª0ÞìÎUB(˜ØÀ¹øžššÏ  ¶½†t¥Rð01&†•íáÎiû_ }ñß¿œ9w)©®À1€§ç –wVKîú#^©”2÷ôAt¾{Uf{ñßÔ\!>ý8މy[VÆÔñ½né¯þÚi^UÕÑýjë†V˶ޔ Ó`‚øJÇ ÿìoR%²AާGŒÛ»`DÜ}«EnEQј+=Ç.w\qkËÇ›k,j?©¹ÉÌ`¾ƒi»_ö¹g………¦“3‚Ç5F«ˆé=ü”ë_£“ÔL >r^¶>šb¹hh,T;l46zp5äEDPuÔdžà2a¤óÝMÏÏ›éeu€š=Ëm¼}?í±T¦¾!¯±€U‹xðÉö§dÞÝíß4~Bá‚.†ç€#Öû{†²œôôƒíÑÞR?%™ÐH¹Ãq _ díìYëj'{Fx¶&./Çë9%Óâ-¾khð’òµ{=A‡‹iÔßG;ˆŠ e| —ãæNjlyØâ·5 æV‚+hn䣈ÍzfŽËÑi<~ü x©¼ ‰‰x̨õt´NŽ©ú6‚¢ÂP5Æ{.[[½3àòr±ä‹Øåå….ˆhÒZ:3èõÝj+èB@Øì윜©À$$˜¢² ÅÙ3pÕ†„(u86˹–Ë•¥‡`^¢cïlLÚZ§«DÙôp2'ÖVW'c©¡-,4RÓ†mc,†S\~ϪímöSÎté´oººŠˆ‰ÒЄ©7ÿƒ±QthAV}¿÷µ¡( “:‚0ÂÙÊ*®@Π\+ÔÔ¦ Tͳ7âcv¶o!é›Îéé²È”äy¸:ÇÂa¤Å¯ïQ°IH¢Aäæ§ãå?úçÍ_)©»¥ìð|(zvo½zG]0>ÃE‚êw44?O¨y¤'5UïyÔ‘œ\ÔÎ)ßú·).Aòô˜PSvZÚšï›ù÷ï3ˆ:§€¹HÎÌTÂM„£¤<Ö…Ä.?œ=û)Bû|{q«I2 àÅGÆÕ0¾¼ì:J‚øå‹|)ù}ïŠw‡Û‹ÀÅDô+[³6ÝïM¨åöŒÿñoN៌ëæ)Lw"ÔÎx‹ùïß­‹ùî?\çúÅt¾à&/þìºøjç£Ë£ƒj{H]H¦ŠB‡a6ÖÅ{n“OÁzö熺JJ× î'h†öWóué22G@ häÚþ}€I¡RÎþÛ¹²p“ƒ1BSI Q(Ê÷èsÏzj!÷ä˜hH¿÷}\w×ç$–ÏÃ##ÿþ#ò]A7bJÌÈcbÏW®yɉjk·Jg¾)-#§ÝÚøgdí@9!Imu‹0ÅÆªì¢—4!$Ä *bWp×·¦sY…ñ³w(·™%uuÀ ?ÜäÍX[·tÔÑ!’—Í ƒ;ut/oK@Lù£6’…õ±­-ó\“c’úÀ\”>©NI:³ïÙ{ô^‚…z~k«<>×J/µH`NšvbõÈehﯞ†J͵Á.d„›™íuŽêºséÀ/˜YZºß0.2­ &¡£û¸]°[Y:z?È/šAk¾É=(D@”Òh)©<…jœÞè]ëªXn—y¸>‚çò¦ùø1—ñçØü¤_E$–eeá9*ÎHGGXNW]ÇÇt ô,< $QÝ ÷ !û××… +ÔÙdd­±¦…%"ç Yß7·<,ôô8‹‹ÇónûÆè.fæøgŸ÷§”()ç} æÆÑ¨ÞlNNžÜ›pîò$à °Y~´½w¬ÌÉ NYP¨}a…]ÈÉqÈÍý niëœÎHÎ6ÉyÞƒ¥®K¾µ…üû÷ »OlÖ«¼ªcaU€!EëD~MXõZ_¨2zõj(•tVÌ ×ÿ½;p:ø¾›Ò ‚ɨãus¨^’[rÀGH¨UJ¾?¸Þ=ƒ…ÝÛÜRÑÉ+G‡+úζ–ú·IDO2›-·Ç$m|B†ÎáGÝq ³mÞÉrÆæïÐÕêjXw÷ ~÷m)ÉuÓihfi¼¹ÐCUܶ’PØj\œž©áååÛ›•au‡ÆÎN,Õ“oßìoŽ?æðúñs5 M¸7‘”Ÿ]¤H½^æº3Úܼ;7‡ýáƒhßKuõ@Kó.éææ '§Þƒ½p8ÊÛìÆÆãá”ÍÑóóâÍM±¹ùý…B¹TøäNÈT¤× £ÊéÔô3Лò†aîŒø xÜR <'E¡Íx¾GF¶â²ö8=½ås>ìKã&&–9íp|Yïn欧—´‹'ÊëkQme%û6ã_YÙ|Ëæ¨ë,e¬M?½ á=Vyg ÃœŠYûþq+Û8ø-,|øó‡|$µ ÚÁO!@2ïÉd”Q§}1ÈnxˆÞÁùz?Ø°ÏžÇØþãW× Hõl@õæ$æçbP.ÈÅÚÚQíb¦§æ’”“ƒì_®«Ýüé/ôÄFÿt+Žw¾.*,/Ï0322"!ÉîͪõâÙ³§XùÆÞ~ä7Im|X˜¬å,³ÍQЬ¼;o7p«óu7­­|õõvÒ–-¨š@$d‹Î4—%uפ¦ˆG¶ ¸ãtu}V«•X™›“ÖÒ"8Èô"NCép‹=ÜÆÑ”#£æ ,(,LË y[\ô…¥Guj2·2ëÖ š}çøùzªäïîîgµÞA­ýýoÔrë-F÷ŽŽÉ˨_­¬BC¡1Š6°Å¥¤ŽÖ¸E´µ§.vìFÓ»Ù9«{AÝ20¤áãçQ(|ñàûÈÉYQ\üKbS^åÙe¬(5ç;ÅA=<™U`7Á¥£©lëë¿ëÒÂt~yýÉU™Ž$-øÛ΀c{0ÝŠÛµ¾i'w•SÎx±S…ËÔnemíâ̹Æ=-DKË9üsoÄÏÇ_úădì\.00î®"Æ&ªxø¬ÁÐý†²º.öõ»¼æuçÌml™V±¹9¾ëþiäòR¡g—NA+,ºŽ€n­  â_Žú;rvÉAÍ㣃eÜW»àˆÑÑpê‚5‰’yļ×÷gÞzuž©z7gR¹Ïztôtôï ]Ú`"q`ÝÛÑQ¿#Ë›¸Ø¬H›Ôªª˜ªªìôt(/ž;¿s%¥ú a55Ýóßzç¿Á•*½™Å}%#ìx+o:ò.ÍTÕ*û Pˆ¿ãc:À¼Üÿ£¤ˆ’KG ‰¤ÖÐ8 â3ífdëww|¸.°˜y?>þÜó"ù°Œ…3ýÝÝÛýš>¿é.ÃZÌØ˜>m†ç3’¸ˆa*/nò/uc£<‡Õy1ã«ßœ—ìiõnçx ‡þ²â6–WØLMò­oÔ¼É0a*øþx[’¢¡«2m†dpûx×›/ƒ àh d—˜~ 4š‡MöœõØÿ³VçbÓ¦ææÞ×î_¿î÷Fþ&ÿ„ÉýÃÓˆ)7©M¹/!{+ßtý2 ‹cÔ®íåIX»Ú÷oyÐÈý¼MÎ €RMœ]©Oó_P'«Z/+EŸÕn›{4‚!C“rI>£–ù ÚÂÂC À&&¤ÊJ_wL il‹ŽñŸè!ˆÒ›’–•z¬Nå]_÷˜v#]<Þý[Õ/ƒ«D&§+ñ&@%!ù“#N ºíßÇÇ}“Qý ÁȲ ›4Nÿ2¸…3óý¾ÚÐHêÞîèØXD óoIÅ==!ÉÉÕºýý¶%…¦Ho%‘‘¤¿HРáâVW××°ÁȬBpBMA«®®ÎOË$Hp ÖøÍÕõ¨RÁcUå­Ùdµÿ3…åŽS’Gé²uu¹G«&þ/ ®.ÒjEÀd"_]­×£hvá!%CJPÐnM¸-œÐ¤zûºK^~®@öM´¥ÃŽùáBƒî¹áœš}ì¼øuyE³1Rß2œùàø²‹ö¾ü—³å2mZ\™˜l\¯-Ù¦}>99•̸ç$.7×}!Bž&Šs«ô\ä–çåíâ°Èïﯺhgeg·ùó'Tî¿€¤Â­~JÊ+HÈ/vMMÊÕÕ9ôôµ L\ë?²P~l¼Fûׯ-‡íÔ®\ ¤Î¡‘ã€L²•^Æ×qû€ùw×ÎÔUœ_wOOOó]»ºçke•Ft}65Y{{ûWàûe]m- >¯¾§ò&ˆ2›‰oll(ó¯Ð±ÉÉôx呾åš:2øý†U|®‡: ;šêº¶â2†—›•ÐÀ´O\òrÿ2jÙw¾îþ!{›g1J’ñãGnÇó·ÃC¾´ø@ªØ ¢®Î‚ËJ6j;/á´‘{²ÿêØªR,Vµ[χÝçâBІþ±a –e[Úª%™–¸ŒÐðd‘õÉòq;$]¦Ž™åÅŽŽ¡'9Ž©EÎb©ÓÑ7RÒ“íáMMc;CÁÍÞÈŽtî3*ò®ð /Þ\¢´@qC‘ß?Iñt2DÄ2jQ9=Ý[¼¸÷Wå¿~íg}žæá¡iPy~n%è¥D¦½¾~NG—’ùb|"&²¨º<ßxÝçðpmž@Œ~{ÔP“0ÿpÍw'óáñóôÒSZèàPŽ8nuc.|¼$"¢”‰¥NÛwZ¸QíÃé`¿3éX?ØËÏĘÉÉ8À¨Ü™¬aóª­BBÄ<Ÿ6l–ÙÙ•þòà×Y-l”–žƒ²Leß–Î÷ðXgÔ„·²Ê+Õâ}Z§ª˜p hôZ³((g|»Ãx|Þóÿf'Ô¿º€ŒNNî:cbd|ùã_¹»KÄÆ6%ø\9>A(H$ŽÏ³?[T$ª¬<üÏ»Æx5”¡ey&ôÀ쥖 UN·j„؇‚/±(@«Ö˜O)•BßEÎTÄjje gÞíOÅw}clçÒd]–QVv”ÔSP§¼¹¹¼ƒCàˆŒúúÖôeWOÏ7àt®è¤ÆçÇë'd>N èÑÓY)#ª‰J:RRb—ýu~ÓJwxˆTñ†˜ îM^º±æ·o666­Þ”\X¬œUúÝqK-;Ä}§æf{—7rÍÞ‚úÑB§m>‰Œ^ø=6°0¡¡ˆ :Ö|÷%ƒƒýU+ȃïÛ=¹W÷Þ9„„Æ©'´Y˜õ¯ì{q•‚ˆ&\ì|þüyBÀc6Ò‰lñ= מ°‰µ5÷@³òa4#ÕRM7U‰ —þX™Ùo:šB·sŠž®òúú7ø– •ÿÖÃï¡'§ÅîžÛ~ÞÅextȬÞî §XäðZLSœ¢"êBå˜*|u¿«ÞXï¾Wƒûþí2òË|•ÁH½•Ce„Q¡‚bèÒ¢ovNÍðR$±FÐhKÃÚŹџã¥Q669»©‹Ã*ÁW¦ŠÝž윖I,žÍ™TÂ&Æ ZíD$xIú¦…½D²žÖ³'õÌÛ”ëÿì7z@ñwÿ%ú̓fNœÖæqWv²"·^߬fd4Q¬ìRR’B*èü»U 5^òáòÃà(Ó;ŠŸïÞ雘ԚÇïÝž-žMÁ¿ dáäì(*Js“Žû ¹x7ê›p? ¸,÷ á¾¾/  ’Øg;F ˜E@:ÇÖ_Ë«ÎÜÑ—g½%;^z𸶔ðxd©oÄ>–ùòåiªdM.£gw?Bб/¹m›9'¯ºú‹ÎËm,5c±ÌéÛ°‚ƒUæîþþÚ£é‰Lˆo%§fH; >Píóë·+ËHÐVœ¤·솑N¿ip¥±Õhøî&Úýj+Ь×½WØx=ä+€,+KcdD]_ïs9):âÒÔÌ$Ôn“lõlÎÎŽæ…[øÅ¢±¾Ñÿ:{!Èø?]ñc¡I‚[õÛ7R‚äí›'÷¢°°[ß7óœœ<==’j½olßUhv©èìÐâ< îZþ9g¬@NÃ¥œê¡ž¸¸Ä¢Íé`£Í=£7’´Ífjäà' ›I: × Ÿý_؃O̱±Šw»c3@¸ºÂ‡âìñò¦•H½´ÎE’bÛøù*PËÄ,× ¦Êîv̹{ð5ee•‹$édÄ—ôy ”ÍÊsRœ#ÑÁ§Æî©t ö=nö”h‡§®æR¸úMFèÙó¤z“åýimëðÿÕ†®]?4Ûßç®u o% N„;S†TUµ¾ÙoOÏx; EeˤC…ƒ5I&³ ìñW%¢P'Mjè=žäÒ2&€*Ïw $Ò¸lê­Ü‰°¢ˆŒëë\Ñ<¯ÌVžŒªPcñß°X¾>8]SÔ`s£K ß“üß²?ß{À¨aaX\–I¿i‚SÓ´ìžî²*)Sº%Ãa\‘°˜œÐÓÃ) ½>ûÛøÄR  TzúsR¹©€j­ív£tTTÞhLþЛfØ.‹„CýfµQ1e¢[Ù†:4Š?1.ÉÃSøþ=ùä”QÔäÒ¤ã{®ÉjQô`¥Gà÷tuí••kŠ‹'«œÅbb²_£KöÝ­Þž`íæÍNdš½=ÛÕqq·mîU(†¶Q(V;£ 4µG &:‚ТjLôôV]ã+Z=ý’@ò®J .·öƒ„„ìǤŽXhs˜„+\(u2TjÕ¸ékžk!úÖ¹ËZ¦uðâ¯÷Å6m)4~áÃMNñ…NÃÈá­F«–o§®{G¡Ò·ïßÍìíõìíåËxyqÀ½}kpy…}y‰¾ÖÖnvDødŽí¿ñòB÷wúÂÒÒ1‘žÂ… "l~™©‹ãW ©õˆá]¾HÓ×V5 i§5ï9rsß® XÁ¡¨EàC§›¿”i)^ô-”µ[ñF\_ÿ<‚Ä3-Zþ­ 1ñ4ÎPjpèVÎa¡Æuz‚Êü˜Ð; 7Ñ7ºIÿfga»,ÕA´@¨øÜq®ôJ¡×pppŽ' J*gÞfVVÖ§ÎÍî¾ðè=lìpq|®§y­­Hõ7YYY Š¢¢Û¸ØkÃñ~—”1Øèfêššêf’}øàæÚk …‹! <ÿhj‘±U™Y=ÔÁ?ˆz®°7®ÿ åÿÇ«&þÛ‰ŸXýYÕÈç‡.||#ƇÃÎà·æfý¢â;€”|&É<žùTÄŒãRR– å…ÓÓåQP\ÀÀª”%7;A’°‹8òû’yy½d‚Awusa‘’2ùüYãógwð¤SRÚMéÅáááúá´«¢ö2e·1~´¿B؉IÅöv¯Ë4’…L¯9%åëÎ^ crÌ8PI|æq§ç[=tªÉ•ãMk䌌ìîõ÷‡sû}/e¥–a¡äÀ`b"òóç*œŽÏªõIØ5¸T¡“»s€S.]óþÚêpDËmp(­Ìÿ­«—ð# "çÀ´Ù™a}O‘“»ë -]JX¸œæÿx¼OLÕtÜWZMdj26.î\(.Ô%F÷JãÁÆ"HÆÁvB¸¥òíð[€f$%CŽgY›j!ƒ•ž†G™|22m³–{Âـé ÇÙÕ~_^šžxs2ˬ´87×­¶lYšý¾ÿ÷ÜC¬NÇvÀÏF}bxÕL³‡ãEõ®Tƒ‹™Ò¦àR^žaÑÑ5Q)Þû¡’z}`°J FªG…whkžÝÂBãN¾¯šìM9*2²•PPXÌŽ€’&Y=Ül´¡#6Ù¾;\ëbB@ð^T·ÑÖžjrÈ_ˆª‘’Dc@Œ¾,*j´°°")ý¨øíÑZ¥¼ö²íŶ¸ÍI…AoÄbÓDkÁOª×–Ð=˜ÔäåqFõ•ª7ZÏñŽ—YmJø|‰ÍýXDÀWÓæî))uÁ¿$«±Ñz ®ÚF—x°BBŠN½é<"uq—ZNó´Ãø§<2{=½®AN×Ç‡Ò }Ô0Œ"nÊ1 ¤?nˆ¿ KŒFçbOÕÕeþ ÐùÜðc}º*«#–äÌÎè »ÏÁáaò+aïL¡à˜ë!â4¦$Ó’ò‡‚q°9˜î¥c³rü8k€J/WªŸœ»C°¯¡ns Ë«âzžovy?êµ9±—àã00¤¡’Šé´\§Klª7X7‡–F“¿ Øø/ãåu¦­=î°mj9Ë ½Óm6F‹øù¿á¥—í¹žª4b¡¯žž%ùÛè ¶ÿgÅþPrÚxIäóñÏ©À3?OS¢²4<\v~µòLÑ&ĘIêMG[, » 4(­T[‹EM…CöRRb±>3£ú‰6 OºÓÍÛGojLù¿}ÿg»›b ¥'D ¶,{#¨Ãí"I¬þò É*ªLWzµ%Âôóë‰ýl…Ë8»‘‹¢®¯¿V¤è³Ò¾õ+ÅâUƒÒù&pXðøoóŽ/knùï«RxÓ§ï5á„&Á!(RÙ#a’yþþynÿ-Ðÿ?CIZÚ´1’­ôŒ¡î`¥˜XE„®—þå«K, 5~–ó‡›q· FqR¨DÖéʺ¶bÀHç;JoM-rJµ=™x[Ö»C­Sª>Kûéé™ùú>èâyUò~¿'±p¦{º·z{c7Öû>~Œçãƒ1Ú²ë³wÁÄ4r»Sƒ …Da1‚ŽÍÎ5SY5,ŠcF@g€ƒêÁÄ•»ûï§ïxŸ¸‡+&,‘a  ‰TV&ÑS°¯wJó]Ú öµÚ¾£§¡™êÔýM>É×ÌÇ÷žI^JN°ŸEùÄíæD|©ñ,«$´ÞxØQ:AjsSIàûåÕ\  ÉŸlÑû$é«¿ŸAyìs¹ƒ˜éþ®î‰B‹ ô[\¬!º ‚ *¡TÍj¡þ#cªˆþYtÝÊ´7Å%)Š !QNraúN}Ÿ5 ºûc·\]Oy?X&Å%rÁXs üß½p/0²’’C’½=b½}裓> ù}|>hÔó òºôë-·??JSœÿ3½¬2onú[©¡ìæÖ•'u’ΚÆm·x¼t!X¿¯,à~ÝTY¹4?®Ö˪ôÖ¶u"Mÿ›!ò|¸ž›°äúÿ·q´ænù‚aÇ=99esž¦)„æpm­Ë¬wizÉôã»ýŽÐ'oÃd±±o´š7+ ƒ!§«2úX w~_ïeâÿ³ý2õ.çøf=ýû÷·==!P£V¨˜ö´+­_¼žx>v|ûï¡è߯¯{ÕH nßT76¾Ký¸#à1‹ú66ó`ªäooÆ¿½—ôr(ŸÀÀH¨Ö+⢢Ý]NÎÎuõÎ×Τ‹ÿþ9oôÀBc1ñzY"r4%`F:Ø{Ú[gµ8˜žSë=? ‰cÔY¹ Åív‹ˆH¼-õj"Ž«ñ á݉ Ù9ü2*JÙ¹7õŒ ddŽÔÕ·< OLe¾Ì6]|ñô<Øèeü¼‚ý¯¢¸ØXkÉÀËk!_6-ȉ~w£5ŒX^y ø§Ô†›†?Â̳‡Qmgg›³³ë닽{—NHz¸øñ¦a…ÊNï•.½Tb’¿))O!±ôôHfþùóžô)GÁÌÜN.£¾¦‹ä¹ÐÇ;áûÖVÚÖjÕ\BÂH<Ý @¾Û;«¾½–>݇Xj–7o8À71”°ÐwÍŸ'ÿý NŠŒ¤.ÈÅ’§Ñ¦[âWs‘"uqÑ;ý‘ÿ»]D4¹“A-sÉÆçihè|}}Þ킪†JV—¤MûÓƒ'¨,Že'2¢­Å¦)\‚ŽR3n®®""·~~ZcûƒÈ]§ÀÿœýgØôô|~þÌÑ×–—Ÿë|ØÙV™[ ¬°‰?)©ƒ££p-­/R¡Ä“Q““µÀúola++OQ0ðK~ªhlŒÞÃ@ǶüLv:”Vâµ3BÀa24ç®  geus˜Æ‚ºþüTXcò™u±±žÍ0A\ÜúXŽn^÷˜Û‘TÔQ×/Òi;ä–ü|Þ–0мcÉhrSSÃííº•ÄRa[Ç Úà¾\üíî~DËç©!éøšÐ!®ÿ=G +î~ís~åiÛ»·5”ªÖRiÁ u f0@ñôô‘Ô§xCÔ¤ VŒ|ùTÇã×uî7¸Lëfì<Ø€@ÛÜGqL³œ‚nr"‰Ü¦Ž…(Îñd¹íô«ˆ¾ÁAÁæyÞï…##—j€‚ Ȫ19R)Kq2}ƸÝ =°´ºº>¬Ò=hfL "dñUýÕ‘•¥%,ì °°§gZµ"?rÔÕ-øþ~ƒ”ß’NdV”TÖÞ¾ØÕ53‘©Áo‡©‹‚ŠÊ¦?æ oôá 1’™#†’’ŠŽŽ‘œ\À*ùmASY‘™zëí|zk…¶•‰'ªŽŸ·@z˜Ò› òùùý2u6äEüj’p199¦§k†“ƒ™Eíùù×ÿ{|Ñ/–ÏN=H(ÖGÚòcxXqxI1Q_É ò¬LL‚Ø}..Ãø¼ø šŠ¶7ÈC‚–;:~w~‚<ˆòI¬ïéÈÃg6þÛ ×2-Uº*Âß¡±‘ EV/µ jm³¿šéÑËÕAîÑB›÷3Ïé9H­Ñ ˆiŸ’²Œo‘)=ïãâ£åa»˜II™&à}{¿IIYÑo<RÈ º0ÆI—×WtýB\ ‹T)BôKóéÒìp£w…‡÷CZÚ‹ú¯?ƒƒ9™Ì=3.t-r4«²CÔ7¿yÚ2sØHâ¦D¤nö‹·<5­mQžŸ~b'ÎUúÙÆº÷@ çu2T{RËDgi¸Òß.’Õ÷ +šFdÚpPA!¢šB)ûkÈÁ;ÚxçÚ‰ö!goï¡®Œö£Á¡EÞ‰ƒ»ÓÞ¤cþe‡“Í7‹báë³…,Ùýý´jûÚltº5J›û…”µµ1 î§z©©8ê~8Õxž­£c`Xñ}Cjôù­KEýâv±mbi9ßâ‚ÏÁ1)à‰E%3žÎ-o²Øø¬ àëÖý‘<‡†›Û§>5?ÿq½›üýû˜˜Ø—ÊD÷±_hBHÛ·$?{|~3ìë˜F—Àp¡¤ÏëíE¹ì±5ئ¯?®V!UW—v¼Ë¨èßû77ù—–µëAû; „ðçÍCa»L™Xê 9&Ë"Ÿï·¶¡YïF"« ðpðyœºJd49òðŒŒ+trå^—”–J}¹›hú°Î¨fïä9~é‘õUâü<ææx®“mô14þËw×Ò¸ £“³3u##aáMЫٹ‡J½¶[‹}ñl|ÞiJޖܽšsÓK׋ž/?Ä÷ßßoˆ?ÇPâ"!Õ–kk-”‘Ž"üižkÿ~Å %05åùµèòöö0)iœ6+^Ñ»§kmÔ²“¿X V£Þ¸Š÷b» !Œ¦SnmƱ?yùg÷…`”—K­É;gû€áɈ<½ z¼‹Ò•³ø-Uc’ñtÏ+„öÖŸÝdä+S…rêýÅ&¡Næ2®“Mð»á¤¬šò)çà/ZUë RÈX¨Û¿ß"J=ž¾«™«+U ¾/R\ëï÷Þ!Þ_eNQŒ%¶GuáVA¹¾0yì¤ÂÔÕî2Ãê:ö]ì}ý? 6ö¶bRLÚÚžW äÈ3,Ö·¶" ã'Éæ9‡ÄÓ;4pî¤ÉŒ2’ﳬ­[ºR>æçk‹‰ù--©:7ØHbc×E’x693\÷Fz4ÎÉ¢y¿¨ôvçµ}¿ÞŸŠô˜œÚ2%au¿^•Ϲ‡_Žýp|] '˜7‘¢NðKøÝÞ^‘NG{:Ótõž™ÖNH…Î…ñ¨Àź¿_yùÛå*ø Ì#C,E OÏá?†S›«.@¨|ßsp\1líÃûFõSPaº_ôWdˆm‹/4¬¸Ýž’§-æææØÛcȬìÄíŒvTèœ ê2§,÷D†Ë8ع=-TìMÀñpQú•;«õ»éë/ÏT¸)Ñj}û¦$.nÔ‡† í'#~sô—®ªÊ ô»ÌòU, Öxk`€¶ /3»¬ÌÒ²Uç“[iuµõºÈÌúú€˜Žù `5ÃÝýDuÚ$µêö߯ö"‡#"Tµ‘¦lïßoÌ´‚q=^4霃K‘E§fd,-(èi÷//+›ì&T·˜¹çó~n»ò‚EÇÞÜ®_ük¨¤ºÕÊe22—õ™CS+±ÞáAlîHÌý}Óðˆæç§xwSjC“Ä0â×-NÖ_Ž»ÿ²¸9©ÏÞÀQ[έw¸ß,2hä¯#Z«q-xz(*|k™KŠb³YþøÖßãx1„RêÒ¡®¥¿æ-ê QjTê£É¥iY‰êéÆ"{xn¶tºGö••–hôRËÎü¬ã fìW”8) ­WÚZ‚Ý•g«6f*té2¾.·)¾‹®Ôë ùéŸâý§5‡é‹Ä×â²§FþàŸÁ!ãÝÝ{ì,,ÍIxZš©Ù©|¼}†Õ%%%ùùTpƒX®vv §–Ó?àãWÅÅhŸmôÒcb2ÑÆ´‹Ùž¤×U2ßý ®l°a£’þçlŸÜû»`¾º:d4-t¶ÖLrGl½Ö!¤ñkjäš‚Kµ¹Tú§9 Ÿ>sr¾žÅµŒPmÝ -í´óe"ÔÑïðëÜÚZóݯ&:+WlÆ»Nå0oëÑ©hOÍñJïÑþè‘ÁXa4$¡¯0BÉV’òXz¬è0B“S%ìƒn¸4ŸÐr›ž‰Ç¬›\˜–Çδí«C“ðšµ±D‘‘‘9ØaÂÄž££bsB‚Ǹն+t(0¨eq1sBƒþ-,gY@ACCCAIKëÆÜEØÙ·ºßxv–Þ_F{?Í:QRlÒkl«ëÈÙpk™G’ÄtwcOäï/~tßý‘f]W§är#!7JÓ¦g#8¸¼\ÈïîdÒ8íÔÌŸ5ñ"µ´çˆ‘ÁŠGAßûýº4>&Ûù=Þ?*ëZê›ãn^îE)Iž¢^SB£À WWŽ_¾ k-ÉŸ(æ§JÈ003ïnì7‡­dp,4ž}w½å¢ºè@ügÈj6S>W_?qþöá®­Ý{våý0‰ZS˜Ø`dâæŒ6¸àŸ„‘|žóµ)|\B0[[lÆ©Ócòívä+ZŒ–³/Otß”&]Ó XÍžPPŠ**o ýÌÌÊâ:`ˆ¥FLä“oo«wšxxHö´ë1ÓŽù÷·bNŽâùÅàÜŠ…ûuܦ˜è‡Þ L7ù /£¹~H°5ç§k”„œ¶ö?ÍEDÆÓùoéð¨B²3Œjèÿ2hñT?)þ­ƒ«¥öøIxôEIi ‰Åó#÷¶¿ðø˜t¼^]ÃCHMÃ56Iü¦¦éyþe;(:‡‹ÔÀZ`{©%L£aùhååôt ŸŸƒàÈû3â/éõ.¹ï—g«¶ÚZÝr~1vVÖõôô’°p¦ÅÖ;ç«ý*×À ½Ñùid¹‹Ù…4F¦³\›lªN0é§Mt2ÒŒÕÏ¡Ù4\TôÃCôÚõC5õ ÓŽž¬¬øð®^O®ss”²²¨Ù9ÞQÓoà‘º¼GŒlþ `ÙaR™.,Œî/bÙAÔFüÖíéÉ·ZéF¯ŠE¥ú†K{ÂéÚ2H¦æ&7w¥t"–ãi3œ°ZðxÞ¨Öz ÆËƒÓk²P©ÇÛ/àçÏ>BNéÍ)T-‘÷YééÛˆ8`4.M 73è<‘‘H>Vs33?/6íÀŸ{Ãv±â ¡’VoóºïŒPqp|lõ=T ß70û8×Mé¸-Íod„ßÚ¹Ÿ{ Y«ûûôs pqÉž' D³þb£ΆͲǰ.ó¬˜V¾ÀØ©ÃÃÄ¥ÁÁƒäm@ÊÌxjöç……qfÍìSnZÄÃþ-î׺0Bƒšnñ‰77ƒ‰­'+/î‹.§ºNžOË3rxœ¥ªÚKO˜«õrÕ/O%ÇëBËï«oæ¿™}$¦wwO¾VI¯.3ÈO"VÏÝÚŸ påi(®Ðyjª«W¯¶¸¦rWIëdŒn[MNÆÄ|Eh„ §ªuBÔv ‘ÇGΡ4wç ãB.Î?Ë-««×ïï“_ž§ØŸÐÓFúFYXí[<Ý1! °%®¯kþüÁ@%~{vþ-Ü…>“H»ÐíaÂf›¿¾¾MÄÀ bDˆG«—g7 ®¶v³hæ~Ÿ‚lÓ¨þ›“]?§™öF]u†Z±`ßùÖ”ÏrÛ â[Úä²7¢Ñ`˜ï¯ @‡~ûêUFq¬¶AÔnûnnöaûGRÒi_´§XÄa×½““§Â¸ÍtøMe¥ˆËMP»'vJê¼Øàܼ-&5[¯þt8TÆõñXÖÅOYQ¨'O×V°þ¾É)‘þïØö÷í¹¬-5«7ÿŒådÁ¡Ðÿå%‚:»ñ¦¦ÉKV§L‘5IˆŸbÔÜõº;'Pã…ûû÷'*‘Z£õRLJ¾­-#!Ä7¸¦¦BqÔ೺ÏÂÄðrÒÒ³KKa¿; •R‰LH¦ÄÐr++õÇÞGÆÄìç¯üYzøóWÿ_GE“Æí u;†z¶óý»§·œ`„h°zÂcµÛ]¸*õ²}|p6÷ô×å¤#,ü·ó“EW@ðñ±1“Ïóíšd‹Æ€3’ûånhVÖàT K™¦ y2‹Á}u9·šFWr¼/Ùç@óTÞ†õó-U/¯Š³šââ}Ðd÷Íf¼Çõùq¢Ó'í—Hš4Õè/6q¥85¤ZêGJ†22JÊ—ÙªkƆè¹¹¹³³³Ã—qÓ¡ÅÅu•ú‚1>>,lltíZSô±ìuç6".§}%ž´ƒÁtÌCÃü ž­A][Ýw_YÕ…ÅŒqbÕ‡uã&ö¶`tœxUHm¨c|}?ú¿ï}öõ'“Æ¢¬z~ðÖûõëEZZšP†jR•„O­ÚðKbN7 !ââD©ã•—Â|*.s%ÒeÕ¥~÷ëÅ6÷Ä'wï°ÝÜ&¸z™Ã‚³)>_\XD Óй÷ø‘µÀ‹úonâð¹ÙóSä"¨5æa–MD|‘ä´¾ttÕXi'â.k Yàg yt)&ÿ+/Jâ=¼0øã žPE sÈÛX ,,lQù·! é|_Z½<©o|Ñ•°Þú‹tòüÞè½!å,Mlpaçû½Ì³»Â«dC“Ñ̬ @ÊÃ}O™6¿Šîô-ƒ•§1¯³ˆ¸8ÝÉBÃèÀ- ¼PÔÎh,,­õÌ #ñ´Í9Hˆ™ŠŽóšš¼¤À Œƒƒ½dIÉP[òJjIazðñ!·gâââM9[943‰6™ü{_Ûè©Iôít‡Š£™{9ÁúUYÎU»ßW=¶Ø¬|FúLƒ…’ÍNëd%%+Ûêr’ÎÃCÛæ~39gò´19Ê3ÓEóý¾voà ־mOK11´nnx}~¸ÿs§ÑJû“‚üÜó³'l¯”Yf"(ù9>®€Ô*#-„£œÓa2‘ÌðV( —Iûrÿj%ŠÍ¹Më±u>Xq Â#>^Ùû)ùawÌDnåF¥¢]áë×é`{WgMôý!ÿëŸ~G-.ø´´ ±±/¶¹ì²¯—®6œ}is:8ê‹ ç'&>ÑjÅÃÆIHJ},ÈÏ'é…Ji¶ÃÁQA"tîü³NÛ¿i©”ú†Ÿµ~W„SICjjlîh³+<ŠåÞÅëdåÖÎrr.‹B"¦úá‰Ñîn£õ¿ÁEEE{{{l&#–®™ri<””[39bá<¶«Ã`˜TTUá``úªëíí“Ù;½¯O)JMKSר.1uö KN&˜†ýýû·˜˜^ÀÝýýr«[¬©<ǽ;'rf^3xÃñr›†ºúܳ ɸS'2o9¼Ó¶°ûŸßÎcgË“EÔ°à8$g ÷×åïÏ œ+´¯wFÅm™)"üH~­81jõ2[>\/\l§m¹ò-B<ñvÜœD•_üIã=ù~UÍD[¼jYe•î5??\:£Óáeåšé}wîÅ# Ðþ[Êuq~ÎŒdÀŒwÈPW[Kй£%ZCXùµHÉÅÅÅÊê¨B§CÏØÒòñæD'[tj÷dŽýG¾~ÂO'îhpZÓ¿tÛ}‡…½ïßeÓÓ™€ã0jf„höD|/)3ÌÈÃã¯øÎŽè²ï±|bï~¢`erò0$”î# F¯ÐËòU!Á¿ÛbÇçæDà!´–ÚHH¢S@<ä””â<= óóó×|F¼:š›¿®¨ÜûðÝ¥ÐÑ£(+ UÇañDÅÅö÷Ë¿ÕÑ ’vUß]ì`2Ó©–WŠ„‘ð7çA|+•Ìã )–‰*‡¶^³MeÃÇ sÈx¸ØYQV>²wjù?Mç¶›Ÿ_ŸZ’êü÷满×Ìžc[ss»ËIÚÍI¯þç¶PùµåŽ®æƒV2ZZCsóÕ™_‹™ååÏ;rÓ ¼‚’RRm·gÅÅ´Ný§JÊÊs”¹5 –ž~«««S È›÷z A™ÁûòyÞOöõ™Ê[ÍVú8 VþÚr)P´èð|I,\\.GóuÄó¢ºÛF‡4ï_Öÿ~tÈâ_Ë„Cˆ )Ë˃®€p…çqÖJ+Áª˜îŸr*Љ¹Ì—ñR¢%-š“µKðü¦­-ÀÏO¼7‰>8øµ»Û_d­’êçÃïoRZ[='gffgMMMAi%''ã`cW-ï\û¥…†˜@ÚÚ2y ï¼¢ƒ¢¤TIºÀS»~·iúT.L{™…c¾cí{L\Üvg+-1±1èß®½Âd¾ßãH‰v¢>=܈Ïó| Öý´œ!¸³Jü­€Úÿ¹Íí¨• µydù¹­/×C8Ä577×ÖÖ¾»»߇{Í;º´~£ÆáIÓ3ßç0;?X"Ú¦ÝnrŒÓ&®v®w>Ù•ŸwL“Ì+)9G¸[lZrƒ½wñuÔêÌËß.)šã÷~N#Ï«s»WVQINIìë£ùð¡L§£½´4ìª=>[j—H_¬ÛÂ5AÝ|Ñ—©/«¬ìéhkú ÁfP_½¶ªµ5cIm¾¹Z^z73=-­¤†aW¥÷ËsQI *>ëæêo¿C;áÅK\b@+úéMÃBà Ÿ¸¸: Í÷»‹\¹Ëù÷x²¾aû68©9ôG67ßû#¾ö;IÚØÈÈ('ƒs‰¸b:¸¬°PÿöÚbZÓH2œw7º…ä?=2sˆûÿÑeâ®J½.ÍæËꉖ ØË“Ôî‡×É3m¶ûèhBñï.?”¼vÊdq©ï-í ÄÊW)'¼01y¤OJJXfŸ^IƒHÀ#Iš §ºÁr ÑnB§Õ p9D–ãÙÅýÕAEó}0(ÿ%qðD1ZGYW²E×ã­ž‘Q^nn­íÚ€™\÷fäÜõ²ÈmÞYYU]½Ô5ÝΗ}ZaÅy9XÇAVE±VRâ‘ãŒù˜TDîó{KnÐ÷.Ïã—¾¿ÖܬnŽ?ù÷ù)Ä…ì“îÿiyVvvLZÚð<%+ëùxžTÙŒèûºicP²ù€†Þ2ÑÑvù$Ïtßĉ¹††#Î÷[°0+ o÷&àÖ‰%Ñ ”ßyi²ö-,<Üœ¬‚eçâ²qN úǃgjµ"pqº&þåKÇYDžVßéžü|áP~šeŽ•«Gœ¤T¨²òÔYµØ?d¡æ‹ææâP܃–fí3‚ÿcÝ qð:¸ðÜR:hÞB(€i44†††PI,—[ïNV:Êf¦è!ŒQPP~ýúêéb{˜×å˜(¶_³ÁziºLãd± hQ‚yÇŠÕŠzW—éûþe[·åkÜn:Y„ðxø[]k‰ 0z-áTÿ[+­zzúÇÇÇ·ˆ¯GIIÉÜ f«Ó|»g¾©”TÇþþ÷V3B»8~IBóùþ÷®¤y11Ùññ¶DΤV×3sY7Φ²ÚË+Ëm.÷÷=NUD?áÏ 7Vü3TS¶Ðþy «NJÊ<þï–óµEÀ Ç7'‡ëABXh°QUQIˆŽd_QXxzzŠÇãH/ ꆆFBTÔÿjQ·«-™Çâ&k¤f#䆈˜Xã®(5Uo¨þ ‹SÉhzÙ‰,‘Ö]ëñÒÿ’DO//|“Ïë¥×HÔ²%Â4îq×ÖÖ1⢣ãó8î‚áR³Á¨t2§ì–í_~fäz{‚öÿ† ï\‚óïyÏ8g;æÇäv¯´å4.øÙÔ‡‰Í”¶èü Ü1r%8d‚ÚŠêêr:ÿÓ½½™î‹Ÿ·êR¯Åä°‡¨/F íe£‘zm‚«UÊÅóäÆòkÈlBÈ®uW‰Ô©tÇ´¤²·,9Þ¨jÄ÷õQ(+ó¢0F,|üG~Ѳ?…ó®LÇ;ÜïÌzåêDkì’VNŠMeb¶k£kÄš*m¤ÕqrÙgµ¨¾~(uuõ×-çõVNNNìV;#iÀØðððD’ð››µ §p£V–™i{4ÏAÒ;„»¾¾,‡‚’Òåøx/àå5bt_4ÚO†Èâ•‚ž÷JÀþ ýž™ÁB³²²‚Š‹W÷[KᤲJ¸;ß\ë ÞÛÝýéïÿ>ð'-]É^ÔÄ¡ˆhõKUmêO2¢OC*þIòéf°åêl^7Ç‹‹ ÙY"á°FïSPŠžFøždѾkq9ilä&¯·Y@FF=—Ÿÿ–ÛÄHx×Ñ5O˜‡5õ¹9ßÎâàC"£hbœÒëR¦¦&&¦8ôõÛ½žöARïOÝÞÞÎÎÎRË¥»~ÿ^_k`ii))RP`»s¼o ì €V”WWW[[[iÀÝœÇ"¤ôCÎßß߸à¾hòÒšt|!!¡—ç§èm‚XND€ ÕÕ@Ø;:ÖÖÖŠ Q°±Å*gx&[31G$ª^N5ÿnî ÷ò¯¥r~ü'[]Ÿ±Q™k47V2}T€ÿ¤-¤$‚êÛˆM‹ dÓù>ZÎVkn¼‚VUU®9_g;®™¸Ä#tðï¬y ÕÜ|_<Œ»Ñ@|'£UøÖÁñ¡Ð¢™ÊD чs¾-'Ô¦@€Iài2þÔΟo|ú>䦌þt¡–fѺ‚{Ø*í¡µÝ£_Y~Ž7qØÅ~¿5Èßg™ÊýCôû3£g·gÔšeyØ0–…A5\îD»ývmô¹ÿàKv(«©¡‘R×G '//ì—oóa~©Ón8ûSëê1õÿæÑÐNŸ' ˆZ ÖÊAùeÓ„dfeéuÝb\ªÐœ>JàåþŠŒç/6ðBµu¹8?Nj'UÈ^^Jš6wîÍÿB'Z%"&æõp]&—!ŠËd\Á9ùö·©3£v«ˆÁb£—+„Éå^Žíéª0jdßì,{«ä’¼“?RÀÉÏ|ÏËÐjLöÊJJj‚iMˆ“œ|‚ dâç÷‹½ýy«ÛÅHo`í?# v4[œË@¾¦%31Oî÷Ä´ŠvƒõŸ*ƒÈ–5å5χkd>×ׄ2Àèr›;0H ^z#ˆyMFˆ¤¤¤€9˜N ä²þË¥Ía%=¿¸µÞÊÈÈøíÛ7 ×¼¼€—‘–nB ³ÿ­Zâ·oØhh6fƒ…}¼Há Ì̪q‡2žpðð"_gÑûhÅÐråHß´B£Óè:Zj¹i´Ûè‰ .)*r»¿4Ëõg|˜,Rt¿>Äç´œ-U¯IN — æys¡ocƒEôøºTŠIp©2ƒóâôõÐ}ÙË@Éë°äK^HHH¸³ÙħÎJ¹SãÑûNÐúàS9Ú<>—~ üV„µ¶`¼3¯ª¯/<˜ÙËÑøç“Ï7‚D¼õÉÉDËk?¬ß±Õ¨))Ã9ùt«ÝRíòõ1ÿ£éVB5Z×ÀϹ¹NhkGñ8JÌœQøPíý⡱ A§J€B\ìãÂíÚb¿‰.æçÿIC8ë«´Ìëq†’ ýÓŠ’"@YÙ3wìíi„(„<Í¿¿é¸ø)Í ÞÏššx'jó¡ÒT+mî‰'éÌ0á§ÕNó-.ÚÒÒÉiKi?~ óñÚßV‰[I' c)j=ååðf5Þvîï.…ôòxÆãÜìå|z/Äö¦±}ýÏz7ùãÓÊñ<6N}o¤’£³ór«[M}}}aá.H§YD߀ììì·ooÉ÷òÆ’2°;¾+ŸîÈÕåçOf‹†Þ_F÷ðÒ}¦ŠÝúåç‚õã£Ö÷"ê5Æ|Ë>Ž?JJb(¥N# "5¨õôBZZæ›L*´Bµ:¼ÞÛÐnå4 HÎß]¬ˆŠH8;»ÓÄEl¥ª«c!ä,%æ’ý%µvVmOííyù§ÝS‚o•GbRtl¢@¦@Np눸Íh½µëwxnî&@Ö³ß]*é¤.ðVtô¥§7Þ„ªêê&†ì³ îë}Ñž§(ofgOÏpôÓz—qæ½Á ù£H¹Æ¼O»cÿÎ6êœ]£ÅÎE#K‹‹ïó¤ø))(|ý¬°±óxä¡bï6â“Ê4d®•7]]=Þ½{·0ðvzBsÆÓf#Ñõµ—™%ß9€—!•ô¿^F_öÆ:F†«ÓÉû+Ldäëç–òðÊ_ûãEÒŒ$eÔ²“k>%*áiZ6*/ççX}Làöbá¾Ñ§?pW“ÑÖÍ8¸Àº??'XY{\ÎÏqAF 1kÊÞ3Q°Š®§'o¯ˆøcõßY5é0œ (†=#„Øàí©Âb•œB2A7Ç­:$ƒrT¹2?ë@áÑTu«ù~Å‚?7':?\¸EÐñð¼÷''ºq‡3ÃüºÓ?ÖxÌׯ>ÜÀ5µ¤ØUª½aü"ÇähÇÒÃu½/ðÔòé=)Ÿ+Ú ^ç‹U,,Š¿«ôçœÀtm‹8ZZZ{™ùHÒxÑ=}}_N‡þ¨wŸÁ04º»U?މ¡ÕY™eÐx„†0µ kif\j°yŽzG ,lØúZ«û䨿Áæ\šŠ–rªœ×,/O_Ð{à‹Ä¿î”£/êêáuWÃá„Ôr¿X$ú@~B×çÿ.A$HÂi—]_\  v•éýûþžíü´%iBB”ŠOTT¥%%ß/MMWÚßBÃÚÖÛê¿…¿=½s( Ún#î®ÍûÄ:ùú„&á¼íͳÓê'ÛOAAZü§þ3JÊG­m 8ô«›y:ÿDW:^Úí6®žHýýûðÕÔeTTm|º¼¼þÈ=T_‰7“NL m³ì‘SP@€^ºà³¶µú{U Ímƒ‚’2$É*tWe<ÓÓóÓ{}U® Ù- ‡0cC¥#øìôñ‹mí¿Ÿ®þ.Àer.*Bxžñ£”b,,êwsuLƒÐñ°•)t··O.ÈŸ6Äñ†õ ìø ÏZD¡¨Xñ‹M®ÃíÂádÙ !0‚H©‰‡ ‹ \^E%'—biäH§UB âÃÞho¤úb"WSSÞLEÇrÓ¼½Ó¿´,šïûqf^^M-î0ËU«{½‘ƒ˜T¦¤¼=Ý¿FF§& [ºpg¼_н†’9,Ж}~C;ù‚BvuMò|JÞÙÃ÷MâZ£å;GϿӾù:xßÛ;« ð¥½.;;W1b4Yyù7zoßI‚‹=÷&*J=Å´D¯mÎVõ¶}¿bf#ôs!ƒX•ÖÒ²6Ÿ„$8ý?¼8›;‰¿RtH¸¿nS"–G,â g¥ Ú$DE9ìKO à£÷S`˜ºŽÀŸÂçüå°ÍÜ_n»Í@9 4€ 22Ä:Z!e÷¸õA-Grz¾u ˆÍx÷·ŸÜÊZt³¥«¤$% Ñç—Üàó‘#vôõHùï×[£„}I æîï“]LÙ…R0 d¼_TR’¿÷÷iµÔGÀEBVØÞåÞùÌü[[˜‰fwb³úÕÚ À8âþKÄœï Ç ƒµ™ßTUS‹p¡ÿÔÉòKÍÒ2Ù¿{*3R\4ïpŽëÝÚj,ÕÓý‡ub+ÚâOòJBBÅü„½s«Æ¨÷Ž_Ø-"…Ï*5ÇNt¹]Èf ¨AÁ` 89h¤ÿR?ÜÂw¡çSÖÒªé ”4Zloû"&–Êo=ÏntiÊ©-\‘™ÉÇȸ49 qòéÔOVÍþv½¦‚Âäü½1W+-’kNuõñþT‹AD¹Úš–ªx‹—§§æb:2!•¤Dg¼A'é[D:Cÿó'ð]•`ðxž:ÄéÌØÄ© £Ýo$";Iåh-,\?]ë~¨>¦ffFy¶ÕÍÍ!—«NáÃ{f+s±ÕìN3 ^Œ9Q`ì[«hjºmJÐŒÒnåýø J"o~WŒL‹šçDZÕ*ªg{gd¦ÕÕ!êËréH)ì_¨i {Ú ½”45³ gËOr½°T'N‰iãÑÑNÓyíÎæg*Üp™ÄŽ–ùÅÕÕa_G-A&%‰¨ÐÜÆ[u•Zø3LW¥V @jë•úý…ęϛqñF²i¬M^üŒ¬¬¿z•/:ýàHÃïüý[®„¡ô’ií@77Ó’;»Â.J`:´;Ùèmiw¶4ábX¾Ûü‚ieeà/“-$”‹b¡ÆHSó[NÒÐ Ý7ˆöß3Ó –g\ì‡-ÆÃ®Àºü°í3ŒIY8·YñÒjÁ u¡×t¹=ÍÉÌü9˜8ƒ„Ÿí#á°ƒ¢U-âÝÁÛÝßÓIyv¦.èó+©SµS1ªüŽ<ç7 Š ü÷+ZlÐ[Ò’ââ›o^£ÕÕ6'SUUî––ùg‡EœYÅÅÚ ÕZt mßãCô—»Þ"fð?Œø7ºîŸ®‰ƒÛ˜ŒÐޱ@°K©ªvO;ߟmèùrý6üŒËØÚèqŸ²`ïQÀèbÇ‚ƒ‰Y_ÓâÇaöÿbï/ÀªêÚ¶at¡(Ý¡„t#݈4ÒÝÝÝ!!‚HK HKw‰tƒtww÷KoŸç~žýìï{ß÷û}ÿÞÿºqÅ\s\sŒk\×yç˜s®Ûá".unKÐÿ'Ü£×-Ühõ5}ÖɺͶ’Ý[fÛ¸±š|JJ%55‰"ÜLïnƒ„ƒÌED9Æû@µÊë®4á——ÿ<¥eÏf™«ïÖeÆŸ)?Ôz]ohìz^‰Ï1›ÄS X2 tBé5¦p Œ—®ñ;±í“¥¥•JÀSe»1y.FFGç¾àw‘§’Si]ßÂñDæ9--꣛½–g@ÁÍ x*¬áS…¤ðÖ éè8´"îåçë×µÀx.µIÑÐ4>D×n´œáÚ9ZÞÝ5•fžB   Œ‰nÁ­uwHžõvòØ‹"*áÇ£ –ÆBžèd-}—©iÏ¿-á BèOÈj«é"‚_=zxæB›„›`iâb2U‹Ïñ„,“€-7â}ïÏûð~,Ì! 2Ý÷ôZ‰†E`Œµ÷eëZDüçÅ!ž’Ò„R^at¬ò! IÙææ][=ƒú²¼œœ÷ÁbnUU=;û°¡‘Þ47kyyÙé—­ââ !¡ecŸ€ôŽš¢„Ø ?džéèŠòòÎ^8š>ž-†4Á‹…­×Ûg¦•:ȹ¹IOiE$I'^cÑá[Ä]®ûû’Kœ”,-¯/¼Ü2j¸>5Þi …ð¨6ù‚ ]cùø‘ŒÃF9!>¸S´c\°ÔÞ^B Ì,ž“ë\C?|^£kq(Ûn²Ð›#B„¬OŸ.O‘ßúœíR&÷ |¸;2­¬ªzWS3ý´¾¬ £ ‹¤RÇØÆ‡ƒao®ÜbKD4prûÍfîÞ“àåÅCœ=tMÓׇUv7€ö~ ¡Â DZÅÅ5éãiᎥ¯ö¹3PRºÉU28HüÒ6øÝµÄL£M©cNvp°Šîg§¢'®/aßAo‚%Nßßÿ‘ÂK>V”úÍyö€‹œ†¤…lIQ÷ñDi ¥¤ j:²,,µx5Z:¨dËYLRøÝ'ææJTŠR‘„Ì}ˆÅâuµMT&Sò%Žé¡Œ &Ftb¢Îî”Jó”LQ·…y77ÕÛÁ\mÇ­ÜI}ºŒñqôõšu®éé³Å¾»ïlMØLQÁl_Y™[äPP`ßÝ´qø²PÇáàðª'Êü<3ës>oic[͵Nan>É62ðpÒb4Lã›îøxñ ¬îÄwÀñc¸í ;Á!¡MU«²=?Þ¸¿³sÿ«"×l±cg£ÏHV–ö“'d€—î¸Q `ÿƒÈúðyAHY%;c醡• 34ÊmÚZZ6úösüãµ9ß¿ÛsTf·OW³|ÖáÏØ‘MÝU­°T”D]¿GòÁÜbŠmDS8Ÿíñ§¾'ý ³ufKmÁXXKû A–õ“RuV¡eŒ$YEå¥Fi[vnîí(C‡ûj=Wr±`#Ž8oõU@ÂFÙ›Ry¼§*Àñ`ƒ‹ØâC±‡`ÛìÌ3ŠÕ‰ÉY<¶ÍýÞDåBVÏ;ï»LI,OÞ|l_™¼‚Ì`§íN+åš>Ý}£š”‡&35 Ù›»s$ó*››öÜÎ=\§œ©}`^ lŒ 1ÀZ*+Å€™b?^'µÛî„ï`&é:‚ØGZšÎ¨£—À'llÕgùÝݱ goÖjîƒÉ»4š­s3B“ÕÞNl ¸]>­¿‹)d®åCx_ቱ Ç[ɱÒRIЈY¤¥Û‚m«q Ï\1´²"Ù.€Ü²žiÀˆ" DO#Âgµ(£äa×á\ÈëÊÊüŒºy<΀œ4¥£‘\çÌ„Ì3Ôºôë1g· |Ñ®;ÝCµwÖÖÕgF½3 a{ÙÎI)àuñÔ|«*»%'oï‰B­R(z¹€Î¡ØÙééÌ= ÅÞ*ÒÚrØÕõ)YESscãâûÀþúj/Çòòû÷Øù}†§=¥<”cá>ã“ýê[¶\‚Ÿ£#CçÝ­GçG$¯Kªó+ ‰WÁ‹„({¢bbž@J44Øý>¿õÈÎÎlªrn¶Î-7fİÎ`£P¥0¢‚r«©.¼Ùⲯ¹¹³3¼ö7—ÁææöKj¸ÅÇ  q¹ÙO¬ö*Üãå!;@w¯´iüKUï»2™ô}8Û;»º°ŠgÄß«‚”ÉðÔöM6ø /,mñ}$üÖtºÁŠüùCƒy˜yùŒËí‰#߇>à˜ZçòHo÷f¸±?äxŽÿ¹`Oµ&@Dhf¦P¬‚‡­Ü±Xnî Ÿq4*¿ìC|åß”wìO©¦¦.¹:㿾(]Äìñãóèàðf]1ÑLÍz””ôä(PÄÆz+d!Çóy‘Ì.°ÆÆ eÆ…‡; 4|â]§˜ß­ÑU/5žîMÄOå—ýħ©=«&—Žš®@ÿ½‡NíèKEE*Ý£<•ZËx„j.ÈÎXpó~y¹"¬ ‚wúÅU#K-WÍìHž© ¼ož£“’r”6 f´ 3à} ïÜ=4¾)—£ý+…tmoöoα oçFƒ Á9Á°»úîÛrs%szœ&TU9‚½''¿q¶­2ѵý1Ã;Ôaº?Uy¥º4û`>—Â3šã˜<à2Æ„ìàà±¹ŽcjÆyñýƒjÑc‘­cÒSZ)>·ª}JŠ?´O<=«ÄÀ¦<Æl ·ÿÃ…¿š Goi$ä­¥ÿxÏÏ×Q냙yWÐ[k|–¬¹®˜Ù”ÀHüTED>æäŒ…áfÏÕ]T›ôO÷§¢r–¨ gÀϦÁ4‰ˆP&—¼ëð_ÈËÛ+¨]]8X¼¾ˆ‘‘9VaÌÅÙ ”´´ à8Ù…áÆzv+{sæ>>’ÍO„ÔÕ¿?8R)zm3ãäB{—6œÐ××\j‚šÂl¼iŸÄ}R@@ÇJ7–³s©¦Vêö¸]œDæ¡ü™’¼¼Ë‰yXÚBd¹…ìÁÑ~­IËÛà{ÎÅÙ¨X¬¼Â½úé1$Ä®÷ïyù=;j<\†‡2Ÿ‚ÌñÝmWk°äID•ݯY×zb15VÙõl—ÂÉ©9)ÕóçW>vvT"ä¾* ˆ`?ä©:B úêkÔ/[~¨¢òܵ ÞÞøß¿?1éµ—”¦kâN·¦d)u½»ýüø)J.t–ã\àa-S˜„QŠjzüñc:&f9ád`L!úÎÄÉùyþDi¿\Îq¶¬ Þ)(ÂÑ$Pk\#lžá¼å| M¢Æm Ü9Ý*óµ¾ @‘ÇÇχM‘=Ÿvv_y\:žæà~²ló  »áîÂd5Ùôî]28Z©Ijµ;ÜžmÍ ôÐ÷ҥߪ¸ôü¶B±;Yø½yl¿¼jôq ‚óˆüø$'?k€^¤¶6\o¼5T¾­ û-ò ÂÃâÀlH’E§Ê%a=B‡Z{DÐLíÙÂb«R†ØI32Ñg9qlúxCŒdÞ+‚9ñÓ¯édµFH´³pï X‹g¼”Pýü”††ßóŠ´YYMmmïÎùpy©;Îcld°®^¥½m·¸8ºh A yþ¼877üÑ[ÊŸŠw·Jªš¼Þ× ÚyzIBö1df²PK çí|<¯vãíå÷@ìl™ÜGm4pÚC?£]œµçw‰N­à´™`×¹Fn¯#²ôÀ¤¿q¬÷H“?=sÙµt¿ã3h Nå{lÄŒù&2¦ïÌ{ M¸¥A^&q­ŸXŒ¢¥R)þÊÉ•ÑÓŠNIüTydƒg'®¥ýa*]]0´vsåïªS^ê€,2YjB´—÷YúC¡‹‚„³ËžuE%—óöA‰Q 'g¦ëËE¹¹›77s2ÉîC?æåç·My8iNkã'šùUÎ#BÈŸ?ïrw®ÏÏ_펛~Áww¡0zIÀ1$dˆ'¸ÐÍç6º@Õn£#ò%¨ãõÞ^õII°áÍiäÀÓ—XÞÉ·Û.§‰Èp,Ï78Ψo.Ùlf¸ ÷-p–x”£)÷§|\ë+ðÜŸWï0Ùy­ò IÒÒ5›šŒlãö&¢°°mhhŸä FË|ŸyeìÇVS©ü¡Û;&V³<˜qvñ@m7º«,)‘QT×sYTãñMcöåHÖööGÊYP ò2€‚¶/nç÷Á{yÀ„*„‚üfW¿F[M­Ò4ÒÌðÙ®Ziƒ#&–2­ÎnAÅÚVm!÷Ú&‚ß nÏ3zƒn¬;@Ãù¼{fë&о}û("A¬CAJ:trHÌ’¾~u†EI|vZQå°Æò…( pÆ®Y×Õáa¤•eV`ÐÞ×ÂÂT¶îÞ¹;+Iúª²gYÅÅÞ’H¨ž¡£ß·Vœ|xrrÜÔtž£ K¯¾¥tÓṫ‰‡ÇÓŽ˜y& Ñ÷ap`g ôŒ×ÒŸh-;ÐNF%©¨så>,jô¾ÎlÔ} z*“ÂúF“⇎‰‰Ç”^!+¥©Éå§ëÈ¥ þîçÉÅÚ½ûK9Šb‚‚­ÓÕ&>wZÀæ#FOÖÛ<}Éüº‚LˆÓg––”´}ò2«ø pqQ¹%^juklC‹¡.=}÷æ ¹eÝÑØÍmçpe¶H;3åE±”‘.ì èÎû›ÞäFÛèÔ»O§ðž"9<Œ„oõ!Y+=£´½­=OùõÇÁ±1‘DÉ \dËÙº4‚¢â {I-M"TboݱB¸Q±]÷KÇö£ŒwŒ¬™aÀª5Üc%••5EE+Nf$%^¤àTøø|HœÎ⿼¹šûÄÆ—È>£Zç*âXÖ½cQƒ â[jÊÚ°êéK"ï£UʨàASdXÁǰiøs.NÈ-…šn­†úŽ\ Æ›ýŽB±Ü¢£gjMèd«ª>||22ôÚóp™&*˜ Ç‘“š:s‹¼Ñ5²§¡®ÛPç- H)¼W´ {6cHð¾’$»§dBvöŸÎÖ+ººjXdS9Â$2K}Ü×åb$\ìÝÑGþ8È£'œ8.v{lh:®¢–z_Ùßݸ×Þ¨u¤DAþu[?ιÞÍåÇáa†CQ\чøž ¬ë™›“<ûY…-,oøãÝlÁèLf¦RH̘–Vêùù$nl@p¿{G‰hÖá°™ ¤ò#Ý¿_A¤EFÇ1CR ˆÉ œˆ 㵂B¿.#þí»N‘Ÿ»‘˜ïúCööj¯žú7çeßGÚ˜q¾ÒÒ*”D Ñú\AÆÐ‹-éQ¸˜A@Ï–ûÂÂBð{k&œžåeþáìÔÕ¶8 È‹{CNãû õß[\^pöž†§ð\ˆHIQû‘ØÌóxœ&wþ@ƒúÖ|6œmÙ§\£ÛüÍxN§Âò™ ùúd¹*>þÝÞœÏ8oÓã§ÖPžV¹pT®Àoï¼w?öµÛƒ &ÏH![x&ÈŠ¿Z]¶u}xCÊÍM&k«¡¡8%EÁïƒøz±¬ªMƒO*§EìÔÆ°,‡MÊáb`ËxñÍ Õ§_ÉÃ×^¼õ™.HˆÔêÕ]sY4*ÚòTw\„-Œ°Íáë7Œ²»1©½Fr»àÊ)Êæðº,©ªb¦+øL³2löõk´Ø˜ŽêžŠÒHÚ:Fô@Ì!Ìüñ1A*Œ¡·Ð Îñ¾TxVWffÎÍÖŸu2û‘HQ|×Õ56Ž+- áTÍÈÏ?ÿ<ù¾-6ƒJß5Þ¿œuyãBÿî–dtÅŠ¡èŽŽOGUuaõÔñÇ;n¸ã­l¼š÷l»õ‰²7÷ 099êlƒÕ¯2™Ë2õjÿþVðEÕ‡©– T@ :ÌeARDQêèÔK8ÙVUv>psë¼Ð22ÆJȵ `U†Ë2ttƵÞÈ-¯¸/Î/‹tî´®³ïR51ZÐ[Pˆ½—«Zß~ÂÛ<Ûóÿ²ªR.×!/Ï_óÚ[SÓ]úQÁq¤8ôDŸ•Œû==‰<Ýë׫=ÝާνuÙóÎÊÄdƹ;¡—¢(Ízkn¾©¤®ÞÚ¼öþ%;Á¹ET–ÌÈJÛæ Î[ÂhŽÛãèÊ>¾zwN©ÁÁn•ÈÈ(sUÆ­ˆ-@¢êÔ¦u@ $} îúÎ2lÕÄ wee¦àsÓãyqäÈÈΩŠk×ÔT)±‚(û­.YåÝjðÂä|ýâkm($\‰wJ…%'þüy²ÔX‘NÄÓÈOw»ïõâ³×B;:–ûbh!†F­úÎý©üÈ¢ƒYG¸ æ×úkYµo&Jm¤SSÉ"A)Tcác¶Ç.ñöÂáoð6Ž’1ÁÀPÌ×ÜÐÒ\Q2Þ_»­±g<þèé‚k[–4G¡ö{+×X)±J«Z#CGЧëÛ˜ÄüD¶öŸÚGLVa i_žÕ{ß¼}*¹²ü#&z²Ê*%F)=‹¢=rjæáCN|ŽË’·¥%s_†@ÔVáô'°|ÙR‚@lIŸ?_ܳáô¹ý&–±(±£Y£­ò²ÖnI:Cc‹QMHÈq®á"ŠbÑYó 9¹ûÁ"µÍÞˆ¾þ÷÷bšú8XÄ©íhŒÈHHW£¦a¼ R¯å#½÷›V;"[¿g„ ¢a|Ùúüpžó«Êš/,®äÈ$M]#§Œ ä§ôô<«$§cÖw…áÞç|ͬ!ýÈ ¤’ž^ðû65àÅ¡!<›PJÙíXÚÁ ×ûÝÛÆ§  A!žmãq@ð34Šù6ʵ›þó§ßJwý†£ñ0ÖG) BîÓª+„ì™Èé1ë\ƒ—XK-  S•u2ѧû ÙŸ>µMP QD½êŽÃ¯óX3´âÅlxC‚À œ±nD*ÌŠ§E¥Çœ`3ëhÏYÙŸê )A=qG)‡!ÇÀázb‘FJ;ƒðàÙ'?¿ÃPì u‰\d1EÅÃȧiI¹}㪩2&dBiÖzp¿O\DAWéëÏ/Oú}c¨uI ÈG4á󺋫ªËK’>±–­IIPû’™9Ðê~wýœ…©ZUå¥UÅ+=Æx@ZxÝ«CË!ýÀôõ¾äRÙTvÒ¨;ŽŸŒä™,)ç?د…„ä Gó‹töx݆¾˜Èª¶îø°²ºÃÂOMNô>‹”;=BÐRëÛ™(ÝÛ–$“,/OM¢{”£µ¸øMž„ `“E]}†F¦ z­ýʨ˜9Ö]ZÏŸ?†.‘­.¶^<ÊüöM¿ùÞÙ—/:tZîŸqéÌûúuI7™¯s ùúípŽÇÁª3@z9=}»ªºz¹ap{£[>MŒx…¥ä…zñ÷ýUiIyyD§üÂÂî~†-¹‡{s&Y_®õÞWé=:bgp¿õ\‹¡±´ó}üa PI%âɬ|Ú–ËP'#ÎÊöˆÆ!SäQìÉHo[lò7ðS¶<ðµ WÀÄA\ëq6 è¼¹yWT'•ɳ']—ê=oõÆßÜo§U$#þŽÇçÖVðK¦(…ÔÀ®ûÚ„„ÖR“ZÀ‡Yµ°¿Àä7¤`¡í§(Ä܃¸Š©«÷Lº#ú}ÞI0¡§Ì.„^V¶`xDIi$ñ“ûÊZ‡;\Œ”X`àóü+›gOrs©¹=]‹V_ÀAöS;£à§E%$ØT4_뜓Gª}"åâ¢~ó†ýloÊ1“t“âøÄ£ÑuÑeWn”G"Y£Ž»öMŽèc5µ‡>>ÝHØ=ää¢Ué ÓajßQý¦ÜÉ'5éé›Ýqùeeé@{DE! #uwo¡Á>Æ¢%©7Ñè|óÏô3߄Р»0 @åÂÃ}DKs55²æ÷Ctô=É§m†^ D\ÑÇ¢8ÈùÍï0Z>,/Ëô B|ròò ÎH Ë+¸úúÏžc åŸÐ5z>'ˆŽ®ÄÅ%æ’ìÿF«.þúÈ„38TÜ»F•·§ÛÏs³(Òòi³¾Re}yVø•ª«†ãø3z¹ã÷¯ò¬lln Øë¼ºº$‰eÚêÍMýÛ[ Zº½ë …ÓƒËùæä{ ÈòðDvæ~íŸNàTÀ\\t¦{GCKKû´eÎaŽ9àÇPa´íù¾åýûï3^¶XX˜Ey•}ÙI›æ'CõÔvoVmhH纛c¤Ô¤?–âÞ×ã“ΚoÖǨ¨Ð¼míÔ8@Ä#ãTR’µô š.W¤âYFkUíÛè>zÔG¼½wÇË̬!FFJJKGGûô)xóŒœúüü9«û1‚ššøãäÏb÷á!hЍÄ|¬ììm܈(èèÃäQF¹¹³åå¤iCw\*HÁÏK×^#ç¥ Jlû8^êpÝûËV½0½8\qÙnæF„¼ÛÉSѺÞÔP{ÅëÃç=ΘévtYî÷åËÙ~ÙP¬“TöT‹|ý«4*.³¡/áA¯HZ[[_½ÒR÷Ÿùõëåb+,ar ²£%õbIIÍ\cÞñq WË×””?!•5^˜Ïó»\¦ È-`žŽ«´æ(¼P\îŒJôjüú•Š“Óíp¹™  â-˜=üöMwù½–?D>´I@šxqÞ>"x!'_,Ic Jd©ð”lJØø8펈hþuòx¤œª—´ä\;׆ÖcHIq :BÙmažrAþ<¾¿q$üóž„@| æÿã}ªèÙÊýyØžÞ^­Zg« ç…9ã7>Oášl÷ Ž>•ªúô÷Ý(-”BDBF‘”DDƒÞoŸOKåvqhÄËËûðaðBKPP@À·3<&ý€øøøØØÑdnU›ô?䯯¯ƒ ÔÏŸo¬¯ó¸Í$•Ⱉݞ©­ôóû^n1æzX{¤Ã”U½t0$=Њ¶ŸýüüÞ¿—ÖÒ"ܺɢԵ²*’’’® «©ÍÍM¼ ¸^k_’ŽálY—ÉÌ¢¢¢¬¬ÕÕU,BÂ÷$â¯^€¾à¤¥›€|¢ ™))ö3›B`5…̧Ëû|‹|ˆŒ¼=V”RT´×E9òó§ûé¶ÛÆù(+ž(×ùL/”••ËËË¥‘‚Žj0“¯îMìßw¿<†ÞÓºWTÄ0´œa ˇÔÄÁ™\ƒÞñÓècãÀÂÆÆÆÀPt}íILL Þ&n?ÝYl UWW×ÓÓ»¸¸xüø1W>qÎׯù•»€ÍÝÞÞÚÛÛo×ÿ¾é¹Ö¤?%2 <²³K­‹Ø °?üýÆê \`ÉÑÑñÊÛ +- ¸Ó* üçG¢-#ýêÕÅåÉÀ1‚¾å¶÷¸89¥?ßMÖžÅSõÝD,õÛ†0<†Åæ™VŠx-НnuO°bšWFR9:ÚFµEmj1įó~ÐOC}[Pš-k„Õ™mòã(R{+â×£V¬4²Ç °oÒùWûcgï±äïé öó]õ˜à;7ôôì—üzl gggfv*{ÜyßzºjðçÏ/ÈŒ Rvvv%´ÀmwóÍþê’F½Ö—ݯO-=z>*äâbŠ„M¯Ye«×Iâõ8íKæNŽ(že,paÆç°¶´´ìééÁ²ÿ–V\|°Á_a™b^\\ü+ˆPjêààW22ÉSåÛÔíÔ2 !)„êEŸ¶Fg}î¢dùŠù>–Õæå#™ÜÚû6T£˜pªÂÃÁy¾y·³³º"‘mä‚‹‹ë¶;ÍÙ=´ÖOƒªÕè]_\\\_sµ×X9{„…‰ÙY’?¶ó–¶;000¼ëD£Òº³dzttµç.Ms‰mפËéåT2ZúçÏfkkkAAAÝ(ìMr[¸´OéB¿q NNÖxœY×k-EÕm/$ô½Þã¬,¶ëÓ $<Öhc{Y®Dƒ›µË©é•O¦&ø8£jœÂ¸ŸÇ¶læ Êú“83ƶ¬²wFéj»ŠC¢ŠÒMà?ŒÒ|-)y}{$±Qà•/UrbËÄã>‘£]¨YýäÉ“Ã!I†„ÞU”ˆÛÃn†( é’ëv‹"™ƒããUºÍ~`7c##µˆˆ°0 !Eeå·AA4¼ €Ã±ÑÐHl–ŠðÖ$[º¸×k›‰ˆŠ*))=·šzô­¦fÒ®»ƒ~yyYäåK0àTnëïQ‰xL­¬9í¿d½622zõñÙ«×––ùð,0ñÉAp¦½ßôZÐðN†tuu1´QÕ&°˜PgáŽr–Þ·è*sÏtôszóƯQþ¸drrÀrÉXZŠü– RRR€á×ªŠŠ_XciÕ>&%y,¶†…!otñq02”,5Ø-½Í=*'`Ø4¬¥¡¡QÀ#''çJ–1›²öåJîcvs«62\»/E1‚Isº=á0ßãããC*âì쬩™4úº@½\â¢ÒE[; !v¥gð7«®îà†ãÊÊJ—õBåœw­ãÆÇåç™`hôm)ïôÖ4 V‡kŸvÑyžN˜€ Zí°ÖçJ{srr"„àß¼¿™WdlbB£"V V*æVVXØ×Ò’Q]íÖK'„°+ ÐùíááaHâ–Íöº-5‘ƒ}ÙÌCRd8a3³ PÇ µÀ±_¿då¿@£²Ï’=±×8cÐ7gûÑ6Ê#N6¶SÖËËËØë…ñbÙcêÔS V÷_¨Ç²uÛO¤ÁLêM0&W:n Uκ祧§WUbkŸÏû£ÂN9¹oCJ$· ˜æsóÁQîiÝ­&Ú‘‘Á¡ZUwS11Ù­¤abbZYY{Ÿë~‰‹%›A³êóõã]˜?¿Ê´‡Ï”šÈzzz‚H°tj——”””‰ˆè¯²[’¢ˆª¬¬b؞ѢànPêüd1 wÆrVèR2³3SËñâÅx{{».#+4£²²(ü›ç× V¼˜ÈØú730†+öµÕÍEi¤¯…٦ᆲí¾¡áfÝÕ‚OZî!ìpæè¡¯5ä>ûùÕ Ež%FÔ]VÕ’Þ`Rêˆö£pëÖ—GÄT»nF&^™Cj›)\;)¯|Û#ˆ#@ÍED|"Û—À’%¹˜¬¨¡¡¡©ÉcЦÝÌú2œ@­ÌT~íÊ ³œ‹¶´^Å\xq)) !N{‘H“@dT:&&›û±i¹ÿ‹V¶p%Í%%äüF‚ª'ôoÛ!¶ ßø7Ë«ZZõnG«çç®åè0…²‰SÉì €–?èrB†˜™™= Ø:abbâããÍ)ïi¦fìXŸlŽ|)ÉtteÞç' ıwjê @°y6„ˆ!¼¢¤Ò-ªè•:ØGÕä7× èrúErXƒìžÞ4Mxè«€ÕŸ]øp‰ú>>Ë©¨`§¤|¹CR/öñYùSÈæþþ>ZD;ÅþôǨģeål_ ¿ôÓiשî 4AH^½¶ƒ>Š'“Vîq›¯W5Á|AÊGBùHÛmnÒÔ4XôÀüë :¸Gx|žU“Ï!˜eeež7'c ´Ìá7¶Æ|î6ó–(d2?ðquEÏÏë–+@ÔUttæ&'sC¬mßÄœžžÖÔp•+ûÉgˆUWÛé1_â¯pAšŒ6ª£¬ dl赎ÏŠzÏ¢'Á jÞû<þ5ºÏœÑ[¿Æmвò›~®F¾ú®ÊÞÿÿã]~Mxãb9¡ÙïÓÇéîx¼®÷àÁÝXªØÁ=¬Ø{LħŽÐ¹+lmMFkéÈ¿œºÎbÊw+žc﹋ËÕJͳjr ™5ЈW Æ–°%ÈC:•à__mâ³Ww·gç·° ÒX ÝŠûø±º¾~©½¤ª¶¶7 —ÓrM‰ šè¬fö¤ÜDúóp9v•$}`T‹ùeÚ}ÛçÚÚþƽ— ×:­Í7Ý]ŽE™‹Þ=‚ö(ï•ø;·ã¯3‡AAWÓÕƒ²< 9úÏÀ˜wÓAÈW}Âe!»;­lŽ%&æ5÷ÙÈÄÁ<‚ü9舫{ ЃÃGc-¨Ä·?ÊÌoŠA-ÓC-#…D¤ïë%¢}¾Y‰3 Íä†@ tJ°¸X/CÌ ‰”ˆÏ2‘Ã&}ÒîWøl›÷›žþˆD‰D*Atz[ÄÄÄ,,,Hp“‘}¿$­×.bcÉÍÍvðEûÞ»ã³Ç<222Ê¢*æÌIBII „?ÿàCèR®ûó‚[‘OÙb¨ih$Uü¨o`@øÀ–U  0šoФYW×Õý<¬ñ¼(±ÚüîÁƒ‹ËËÝ©Ê"Toà7»— >åtÜÝ/3^ʦò%§¦%íÎVXi ²¶Þ½8ZCBBª´™+ ›.·ú/ °U ^„Þ-#•ôbÐ’d#'çóNvª·;@ŽálYG³­Ñ‚dد_¿~“‚J5€¡¼îÇâvÛãÅÙ)î]§Ïÿ&E7dÀ±·MØÕ0Å[}ÆWÓ32ÑøoŽ^¿~íææÜiˆÇï]‡–œHJšVW§ùñKz:Y¦ÂÇÛ3,åׯ™·UŠêêêLR½”7ö­ôõõEEWÔ’YAlÜ»•‹Õaµˆ¾»ë£ —:ÉŽ ¯MMM§§Î..gÞÞ,+¡Óˆ+­3!d`®¤¤¤ö³çììʃ['O©©FH Èki:ЉˆP% ½ëèŸzˆM«Êè´ùhü-ï-3 |w y€Õ8ï‹õÁ —½Y^ðíP¦ä šPUõ "(f°ð¸ßÛ ójµX#µ¾înw .£Å^½ –ÉF€Q:‘ïG“,„ ++;õ0î_T#8(I²U€}5\n\Î’FBF.ã~»gÂÛ+Z×øX¨«»Š f”Ú¤4êãGPhM Ð¢°Ì#¤¶¡AÛìçȈ›«+ô×a&JDÒ¦'èÄ_½zNGWo¿ÒÂ-–AgÖ¹; Ÿ÷l:ãeĬÇï–‰Ó 'TPX³¡vSTTMÍiþ»‹þç Yu7§SBï\æ¼\@>ƒn%²[©;:– ™ÑòOB"pax~6çãMdd¤žž€šRãÞ×mùj¥Æ@~²˜ô…½?Sf¦°†›O©XÔèsç-$ägÔ„oS7Ê€ ¨ƒçOˆÀMħáùÄA££~~b.Gñç}yh:C¥Ä·ðòëË­"@:Jo]Àï6hÚÇh×«ï ø¶ òK¥ð\”i'2¼T0¸ å‡1FÆÆ¹„ ²Y²©Þ`y‡ø¶þÄÇùWNˆ/šÐ—ìlŸ‹•8 b€Iy€)"JJ1“Ïçó[C±A”ÿúÒKò£‘Úò/+ó²U.ÿ+ óëkw0„Ú„äó‘œYÐϯDeD …tý ÿÏã¿ð°4Ó7±5µq´a¦Ó³5£7u´²d0±´Ñ׳tÐ1v²6бýµíÿèŒàÁÎÊ }eâ`cüõ™é÷gè;F&&V3;3 ;33„‘‰•‰Bò+Gþ ã?^ÿoòà!‘VT“%N3‰œ’Ô+a2:aEUqEi)&zFE{=k3G3k=KQ22SGG[.zz{Å× ®P[LÐÆ½¥sü[KzCGC2>Dž_tµ²´vàýf˜899·þµ¯‘ž!x±2rÔ#îKgdçdæÌK&lcíhdíH§èfkDFbðû/™£‘«ãïÆÜ¦zöF޼JŠbt/Èþ“U:%A:a+[=G3}Ë¿Ûy%ÊËùÏ6ÖzVF¼d&FÖFözŽ6öÛOÄÆÕ lNzAÏÄø«…£™£¥ß?Ó‹ä× ‰°a¯G¶ÛëÙ»‘Pýs‡ç$‚r¯¸H^þN>†ßy,ͬ-HLíŒÁ°ôôè ÈHì,yÉÝ,LŒÉHþ7th ìÍlÿþ¹ž³Þï­d$ö¼dævNFönôæd|< ¿¿ù¯54t³v02€Î§Ã¿·þ[­õœíŒþ/í²½‘ƒ™»Ñÿ ËuÆPÏQïÞú¿Õ’‘„ä•¡“ˆ’çôö ˆÝ¨Ì¬Í_C¡bí9÷¯}\̬ m\žÓ[ÚèRý¡¸‘™‰©#øþ?»ÖðwÄý×\Kõ-Ã_9¤ocè^ ÍœIÌ ÁN6¶`D¤tt$†6$Ö6ŽÀ˜•³‰£©™ ؉–ÄÌ‘¼5°´q02$Ñw#ùëФ$tt· W=0Dhº:BÇFb`dié`«g`fmÂKÆHöë³­ž¡á_Ÿ{x÷¼±'ù5¿ÎEÂÆnëÊýˇ<ކ¿akoc‚NÏÒÌÄšìÏ42éÙŒ¬~·"ùG×þjM_²ÿvFB-Q½¿â ¢‘+ýoØý5`>i=3ëßÓ31úk˜< zàhøŸlØ‚ýþÅÆk#KèþiÆá¿bGÏÄ#´Ý¿Ø üÛ‚£½“£“ýÿÊÚŸA8ÙÛƒ$$û§uc3Ëë¥tË4ÅÃàdù{BÿÌ쿺œù_\ÎüßôùîÉï1JVÿ“ÑýÅáþÅê?JËÿ`„,ÿG#üO½´´ü?Ø/rú¯>~¤ÿJhý±â ÈÁ¿XQÖ³7ƒ&çË nÿÅ ”Žÿ·Œ8ù#¢`4óÿ»c2rë?²±ÿï˜öÿ߀ÀÀÞæ=¬ÿ=,ÿ³èùç”?ý…R:zfðß×/Ucøw;†ìþ·íÿÝŽñ;Æÿm;&·còÇŽÉÿi‚ü¥Þþ²kûÇ®í»·ãðÇÎ)~¿ü*e€kü+ip034¢!òðp2£³ÿÃHþ|ûÏMdÿ[tPRö'œþ};Ý_üÜáŸaõ÷]ܬ þqà_øþ¿ÿRÄÿ=¦l-ÍõõìÿÁAè¬lÜ霌ìéŒ,1ಶ±6â&#ùë¨ÿipt¦zÖ†ôwGýo9åÿ;£4þ ù¨ž{@É¥Œž³"=åˆJZJÊçÜ^ÿJ+ÿŒ Øýã2²¿6ÿ‰²:òwYB’Œ+í gm` UDP3ÿ 6t$`Ê÷;C£a¶NŽ:Ð’÷«_TϹHþiÇÈ’ìÖ1²²…’å¼Þ cV}FN}NÎìú¬ììúìŒF†,ú†œ/Èøþ´¡7€ñwHþÇ¿EáŸÁüÅnÿÛðÿɾ¡dÌØÆÆñ_ˆÙßãÈFÓÄØðëóo“f†Pêl T oÆ6ö$аt63r!ù3g¤8Üïœù—Üþ}T2¾¿3ÀßûüÉÑ¿Éæ?‚ªÿNâ~70³2ù7«鸿ZÙZ›‘èY:þc cPþ!š²ûïÎ/ø,ôP|ˆÿÏjÚÿ¬ÿýµ€•“¥£Î S@lut̬ ,¡‘òéú3ôÁ]ÿcbcbbebÛ™88˜XÿŸõ¿ÿo<‚åd^>Băæî£Wâ"¯!x.æ)Ø"A/^àô%_Š@î ÿ}®ÏŽúó›®IÛ3nžŠ'Õüûý–¯Œ?ª}”2¦ yå «öÄû ÍÏÔ9Ur¡S:Eå*“£™›õ‹o+T-,è~’µl.H'!i†êàŠRûع5±vÖžà`oÌü¦dÍ­Qûè“—=EÀrÏ…gêÚc‘ŒA*Ò4¡¿?"??†û×mà©c#ýsÔ¿oe^•xõïp¨ÖŸý›Ñ€0ÎÅÈYÈŸ=$sóòäµ´x‡Å“üüîñÜ?­Çýc5vД•k_ð¯Ö­gw^ÛÓÕè,Æ=8Ò¤°ÝbÕý^Ž9_¾YôßF)ðrÿõÃ0«A2Ïñ€0Ô&â¼;ü’ÈÍð ‡ÿ_zKØûŸºˆáøä߇ÝF€Èõðß]d€ò ùß[` ò“ù3¾ÌX¾¡DHh«eªça¾¶k]Ä‚3מ™·Ï?3þÓwK=FqZìóípþ‚@ªéu2ò5/O˜ ã;MQÝw%ÿBF"ïFbˆ-èõ2%3yœ¦ßVQ#‘Ž÷…ÑôÖ³ëtý§ ü&éRìŽBNã˜óDŸó¾¢ƒömîf×ÅõlÆÅƒ7«¦/‚ï’*ÅûÒŒ€ß›àêjsssÒ¢h¡°v÷;ñí>üî©t"ûÂrg”ëíÅÚÁ´C?ôýxËٴˬ|uuõ d´H'“FÙ¶HCC#—Å9Ý m ÅŽ¸8‹ìÁ·©{£a]ý@!KJÐɉM]Cãà;ÃüÅZêK//^vëiˆëõA»¼’R ˜Â1M‡G)î›9|:, ÿ«ar;Ï›ð_á"""~HMа©/3°n¼qÆÀÄL++Ãp™qÂæ»=7ØmÀ·®‚^^t^twÉP5c½{*Ëw ºO šÊÉÉùrïÕ¡ƒÐ}5dµ¾W †¤Ùº 6ù¿ÇçX\M´k‚MÅ¢Ã;}I´iÀíŽcR¤n½ÚkŒH½Ù60e¥¢£k¥«œö»ÀÞƒ!‹D.¶_‘¨;´ðjXXߺbÁÀÃçÞ_ MÕ]é:Q-5nùàM÷'‡$þáQÙ—±ùšWÖæÓC³žr¨°=Ói×/&áçO­ík졦¢š§ÇÆÆÎÈÈð¯-T΃a|ƒ¯cbbR4¶Â¿çHäMYT íý¼Aùù´çž|B¤+‡L7|ÐÎ…ˆGI} ¹ä¡!!Ukj´Xšn+1v:4ääM1¶ÆŠ^‚y-ÐÚÎ^ÊJ´þý\ÁÝJƒOº¦÷þÈØ™ £H†üÏÑÍb/º ë<¿ÄE¿lDûßžüÉúªd}Â"˶ b¢Övbÿ«½9¿C{Búú²{ØZ¬÷K1‘Õ磣¢îû7û ½†xxxµ¯Ÿ¸K¥ðàB&'C¶·-w*„ ”Ûë ›ußyÌ @ï·³¶ÿƒÊwNBMM]µ¶=×HŒ„E‹s´·4$ÉК§=¹Uþc1%¢ebbâ¼ñ^äÄ•g}{;¤h¯qËŒËÜûÚݤTŸ[N"Ÿk»ë“"Ÿ•|” Ò'Á—È&ðæßî÷Ù¾ðó‡O,vÚ¯9A£ÅÂ~ýú¬ÄW—‘ç™NÜE//$ÿ˜Râ§I"¬x¢/YñZ+çð@Ú¬te3y]úWõõCŒ—èÚ>7NÓÞW;çc·1Ç'èsí ²¼1e]Ç–T4ŒV“÷à„Ñ‚É ƒ=Aµ¨u¦|#Bæ§™—ý%Dð\Íc%Wù‡]ÀE‘¸Wø‹üI˜°`‘ôª³YŽƒOÎÏíH÷ ò"÷¾d_¥)s,Sîâ8œmOøwFQ ç܃LNNÚÎyÙaúP"–Ãájë¾Â‰€’€“­9a½QÛ5¤ˆh(¨Û ªÓè!§”lJa¿dGÆRšç>s¦+A¾D´ÇÕNñÚ<[ò/büÉsçÓAC ÂæÓyW»mëØ²†ÔVèÒ²gB?µÃGn=¾£}~“V5fËUkÇeÁ÷ôñi±üù¾Y: ea!ÊT…U ˆ¤P9ª€8m÷‡’±´œ½{Mø {uˆAZ_¿Rý˜­§¬¾H¼O“¥{w«Ó²sú#¤ic[ìÁ›îaFœ·íKk·w®õ0°þ¤Uš|-ò/´ÁsÕ ì=Rh<ÏoH]y¼„ªÚQ¢…HÅŸE«+ÒãÄt¾þð‘LLL O„ &Z•(‚ÿôŪ»‹ Ø¥YáíÓ'ÁÌjÔ!¬â™Ï?H$„0æ°>Ð/FÀÅÍ‘ËùòN &K\ÊWŽ*L€$ ­ …€Û˜gç ñ¡-׎iÛû)n«¸š œ‰¿zÕì¶– jdmcnîfY¥Þ³°¸3&íNØóë£ËaompÈÆ»g*Œ×п^Êr®ûQ”Ÿ™Ï˜bzM‚ ù‹"¦UmY~îÒI3àæÖ*ž’~E¼eït„Euü^''W±ë²€G)çË´Qæk¼<‘ê)ww¼ú j>ÅêMÆhù_€''u¾¾&$”OA "ź²Qe¾•±^›¿n–¤NûÔNÊt‚¸šçÑëØ×fˆØb%Í_¤Ú4ede…ÅĨ¿¼Îš”xö„ ï½=¦y³.,ŸäÂÌŒ ˜æÂšá…õ·Ãж\ÉÂá`Á ¾*¾vå)«P—½ðzðN$½£K¢]š#9b¦V'pƺM•×ÑxÎUn¢/™û ãiÄ|7ƒìâJ{8¡âƒû¹Û¡ ¸eÛwī˒—ªdtôhF· ß~¹n§Ša64ü‚r:ÅG×$þì^m=~¤¸lLî¾/ø›#ÞXz][Ï}ZKÉŽÊy}âz=½'ÑN|V§Ù=¬?’ó¡óudl›bºD¦Ô·\9Æ4ª#n¦G={â ´$ȯ<˜àâšéþEéÝåDÿb6ÈS~lj¡Êû[3‹lÅ^*qÙshÏÒŸ7¸¿ÊSú¡Äp¢ô S±‹  $w5cLc²³G%ï5{ÈR¬P3µÓ-0ª©ôj9嬥Рúä‡Z† Ü:z¤^JHô¿üÜMïÑ0÷9êÑ lZªfiºæ\%L´ÐÀóÃîÆ¤~RaÃËcÏiÛ} Cý«Sõ²ŠIˆ ‚þZ}§aŽëÕ·ûLßoËïÇí;kƒ—šWëÃÝwü“c;R#_¶Ë‰íÝð Iƒð~ÄJöf6Ž›÷L&¯™ä"°>0[•ÖÖúƒjjjVü}ÕI,¾Ë™Bn'âõó%¬ 0 ‚ô&~Š·ß'Ðbnl<ÿЩéÚ5‡˜ ul‘ÈŒÖPü‹Æ«Šz”þ•¡÷AjZs(pv*ËOîhæíœ6/=lZØoSR«™ñ~‘LÊ}”ï^ !¡\ƒ‹Ž›‹0Åõ˜ mžÁp½62J&[Ü»ô›àÃ‚Š½;J¯‡°BÓ{ïr'ý‘ò–ÁG¡­oáÎj[0Ralœ|êY >ŸC=PúÂlhÜõ!!%F¢-™™ÅȉNAvk²õu‚k“Ò`팔‡MZ^.ª­ÒŽ”†íª»d(›31zY¦TÇæÑƒ«ku¡4ˆ}5«²ôº³ËëêFBàa—ä‹«t¹ã†÷¿…ß‚È~#®<­ê6®bDî‘8²)ã>O´ÎK^`¬¿Öp@“|®<"c‘³¶öà³¥6}YÙT=c¶¦kg㌱lŠöB®É|Åb9™OÑ3&pñˆe*¸^KH²yÍb¿œµn×¹-Ágh¼†¢5جZbHM‹õÜw9-»äaXJäúöî“{49X± ükØ{z´Zê8.>æ¹´ž¼böñLJR›{0"#ß5˜ z7 š— NÀ_>®¿¼Üõ”?c̓ç&ð‹Œ ‡L’­}£ËDëÓàø@Þfcc.f– FV^çÄ0ìÌ•ï—÷¨OÏVtƒÅ24º”¹’-ºÊ64ŽÜë{Òñ#ÚQŠeÒÇñcU]VMt{Ùp¿ÓÇBÉÎ(-+»@W¡'4ös\k•ýÔùwËþ%«™wAQ{‘ÌW¥Ù“Ïyúù…GrAô²ŠäášAOó´í ·}š’ʽ ¹rÙçÙß×je~l%¬3Ê¥î¯C|GܤNk/®MGŽ®!MaA™cèíM‘%Û$A¨œ œ÷I¹´te)½Æ® ƒöÉ« iˆ# ËP\[ƒÑ“^èÁ}ô»÷rhízÇÆi¼¾öÑ=˜ÏŠYd÷««íMË™ï> d¼ ’#n·A "ÞÙÙUýºá×<ï§½ç×»º”›(ƒÅ@ÿiHá5ì·‰ŠÅ¼"®ý5þ½ïsw·ÒåI06ù÷ÃÄÞ€‰iÛé¿§»ê”;b¿¼–÷y„:21OȺð Wò“‹‹„sÌŽ^¥Gny §.FÖ…›a){GôعÁߥeµ+—ívüA™?½À 9fñ\d•šn†1mÛP{h¨ÄÁ[YiMÏiW$¾™K­S€i*Û0º¯pº—óúy &} f bµ&b`:¥”QžgÂVgùê/¦;;hèÏòY"mÖÅuŸ>Ža´íCuÕ§‰ŸTEnÐ#Æä¾]>ÔO%ðB1ä–JñùJ¬”Vì½3z@Ø*àïŽV[Ä銊NÅb¦;1±±‹ù=¥o›û´éÚ”—„ƒ,’Š‹rr²æóØÔç1—…4¬íq;C~ìÐ@@7ãYLžÜ{ãψÓð}²Üƒww^…ððé÷«µÇ°hˆïDÜ…F¢1`–íI©I£%@ÍxŒˆøãCg_>"+Žˆ¦8:"Lš/Üõ-•f!‚H:¢ü¶Ç½w­÷ ÞkšÎŒ`¾‘ °go^ ô]ãª8BÄ·¢‚äû}ß°¨d‚Í ¨€v,(Éþx|GúlùxwNŠÊ0—.Ê*Nˆô;ª÷‡Ç.S€ßûonšïš|Îh Ó¾º‡ÏáØÈ?m3±[Ë/jgçL‹c(CG§ß‹ß+ê<ÀˆÄÄOÔoe²Eäå·Ï‚ŸDQ94j”©?`Å{ëW¬4²mëzu]?5vïIéÄÄ–S›‚Pñö©µ+ÏmUì.©‰FxÄM)ñíä ×«·ÞíðifÓs·s®:§ttý~–±v2ú¨ü.+ò X8%ýZÁ[AqoÓÎÆTŸ’"gWf5D—¦ÈœY]†³2#TÅCT™®³iÚÊ4žu"DÑ‘A•8|öDlå¼Zîñ[ε•*’Á"?,Šãû,ÊÇxih©•¸JJ܉8Q¿Ãùëá ³ã ;¯ŸhG½ç^ƒg´ÑÍÚ”ÕþçOÖ³«˦j× žý&óž–‡.s^€&|‰•¦T5Ê.^‘‡ôôgNÕÓ¥À𼄫>H“¢#$:ˆˆT<¨³‘ Òx)ȇ:w7ª‡æ>ÈAK,®õ:¨cè"æ6$b¬›Â/¶Åž-¦p‹Û˜5qýR„¬³%æö]+õòò4Âê\ÚÉüO²õÝ ™†Œ1Þ‹‹‹­»ÊjM¾ºÓIl×Û‹ˆ…84”—‘/ŠJ w+;úÂQe¢ô„BÉùŒd{{ m¹¼¦—&3ä÷û0íLW?—u¾òöy—¨Ós«]9ÅûJïԪyÇÙf(!QT=¿Àšë‰ÆÎ!ƒ‰Q¦pAìS–¨ œHñh ÈHé^ó®Áyõ ZP ¾ ÿN….põƒŒžç*8]}«{qûk2A2¿ÊWÆã¿–5Ÿ¡hè­Vuß/°ä¡íº¥ÖŒ¿ˆúøåÌÈ8ë)¹‘«Fkå[§SóG‰®Sy´J<³2á‹Ñ¥ì”é$°ƒoF•i¤(à±+ÊÊT'͵m–î ueõ´=‘õ9¾¨è„fÕ“`&³¡»gVò´X¡À/ß›†jbþ»‹­i§Hñq“Ä•†w"÷ ®»Ü¼k¹¾ Ï>™n><ìN]H º ž( Ý¿½â'Ž-ªv;Òžö°qÒ<É¢<ðü¥Ašœ¯C?Ý÷Ñ—äƒ îmE>7(Î;\0o|Å—Þ½}Œs6S‰X9S±XÖ;†ß´ÚëQ¬×B¹¾iÿï=ž‘·³ºz ^Ù§¥äø©3w1üä!cc"!#Ž%cBÒ· žº³§~bÚDÃd*yFêË›Ž=VPø6Å0àC–Ϊå ¹^†Ï²ïò‘*IèÌÉѧ¿îéêpfwH‰i¥ éüÔÙ®¤”¥jëgW¹Op2Öµ·±Ï×¢›Ï?ªg´´RªM•}®ÍÌ>j—Ö˜Íùþ’κ-Ä㚥‰çÇР Q(«RÔ¾÷Ñ)ñw°Œ!:|_ðÁ°?j¦½Â[êËÓÙp4„Vjs™¢Q}»Sóadž²¤wVzð÷¹ŠÊGð°uKÒŒ-,°±e¦ŒïK±ÿ¤¥íÁÛ‡Yàt zÛù“ÅFì1)Fˆnkˆƒí^}£…r³¯6å“àÅåWH(ÄÖ­÷QëEdßQó³‹×/†pº®§±ÉåÉjÉ·3ãí¨~›¯Ì&´.yö„4$Ôá›Ù°OÆ7Æ­0mÆ|Íj"''wÈ½í©³<½©Ø1í)èrÙÑÒZp€ëv1íÒûµÔ“Sè‚ Ïùü#áýKŽdPbéhÚÃpÝâ9K!¢¢j÷ •QáZ\×’ý]O'P‡ôÅ2šZ"’v4^Еø EúÎ{|oŸê‹.MvœíõmG»9¤bU„÷bo®¯¥–Wrª¼½-ßR)$óÊ?{kk)j¥ÞÖG%U38Wš6ÆB<èHÜc½·ëÄo˜L÷CÔ5¡˜¯¬»?®.®Œ—ìŠ!¿*dèojóAž Ù!æ¾³‡¬@»¢ó³·1ÍF:0HûÌ|_£s¤¶œšhì^›u1úÀ_b#¿­ý†UkY^£W\µXèâXåî%+B¦—IžœgÛÙy”«Þˆhœ^ù–WC9ZÌ;u¿ UÚÅi¦8¿Á{OðàU‡à?ˆˆÌc Sˇe‚S…@±±I£…&ä6tÓ'ú§Þ]ëK%¤oœ¹QDÝB)_Ü_P&àúéWÔhíß½"lž‹³±‘ómª¾˜ºYäB €[5 ÐÚgL.Ö¸Vg• oÏæŠ¤kÓøï½Ð¨ôýxûhL¿ún¬·7ùÅÝ5%Ú{1’Èwvý¼y¶í„s¸E©ù%GŽ Ÿ ¸Ž×Íü¼y×r>5×дç}FtïÍ­‰¹¶}§+«êÀÏŸoÄŸ!’=Î^3h óìIêLŠ‹Ûº|”ØóöWa ûU´9mäf[t^ÔM§Ã³÷,1x›Zl-ÞF¼zFfh”é02Å‹DŒ1½=Pü‚Åñ²qнe\$‘/¸äð‹ÙÌwêO@¹Aë"A A⟸©»ý.:7´±-séA÷ôiLå\û\¿ÁéTbX]Œý:[$Æý×i£·hÜH!é<&‡‹Gü·ƒë#êyÕT>’‰gÑŽ¶Ia©(%¨ª%ÐæôŽ_Ä‚™ÉɼzF/ƒ’“w«¶dL\¦ÈŸ<Æ7gEܵÀŠÇ‰m|è/Í\eÉŽÊÐaxOª¾© @¹¬Ü©yˈZQ„ŒÔ‘˘]G]{u-¯ ­ô3‰…êõ¬×þ×ÂÂfL•žÖ~o¦Ð‘z¢%竃^¸Ÿ£›òSoo®&Í@¤>E¿¿8’”“—rOQk!Âç5Åë4C›Ž¢UÿñÐгª³Y¥ûÖ Sq““ìùšǾÄýp<#ïÍùl¼«ð\M@=èa!&Á PÈŽ.õûpæO¼Öžv™ÛJÒ*Š"Çî¨[÷dSÂÐèÑìzb¯ÿÉÿ¼¢]?9ªmLWc£Ì¥ŽÈvã‚©¼¹ÅTUjïÓ—Èë»(´XéeŠþ {Ñq[@Ë·LW·ú×<¥™Dgï!40Ë"¢v-aë-iÁŽFGß÷FˆÉ5”ª­Ä6þ"ѲÔMMÛѱªªqPK‹hwÕƒ·Øª^‚ŒàM¢Ø¼˜.‰"dß­* š_r¯\[‰ãoiA½Ëëï’y#€æ’*B&¤5c þê±ÞX¡»å„=„Ûù§ †îD‰}¾¶V°$CAôüT…×û â[ÊcÊôA*ëz§Dž¶'fáÛ^õ¸íg°Ÿ-}‹ä¾¤ÕñÄ! tw;ųÓa?Þ¢¢Æû±¦†‡oÇÔ¦R¸hOÈ£ö>¨«îõtì’?›éÔŸ À˜.s¦%h²¹ëéa%lýdÒÕxÿ(y‚‘ÎN^MÇ¡4F·òn Ô†tgDƒŸßa‹äCƒ·5ñ¤ñQÛjºGµ—UEÆÃ»Ÿ*¹râ‘11)r¼ŸR´ãªß?jߘ‹‡ž_ÿM:â—/ôy¿¬eÂP “…Õûp{7¼±!ÖbrYÝçÒUôø££Ÿ„Ÿ„Ûbâ€úš×ôM5I³V5ª³YIoŸ†Ôñ’Ò•Ž>™ ™ìå\Z ²~šg!FY=MLN–i^A@‚bÄó€O°ŒQ€R¤Õgp ×j.Q”RøØQ©jf¼ ø¦CüáFTè^¸~ÃØóåË;& e>ãþ”€‰R$»Ýê(¹×é|y¢VySû#‚ˆÔýó ?¹Œ"8ïä¶gDÜâÏy°"b`³(pXžãˆe$#ñ<¸÷ƒþ%)V(±oOÚ;:#SGƈ¥"x+0¯ÕŠæÉd?}š ëÐÿÀ³ÁÂs(î9þüÉC&c¾|eŽcw|ˆ†þJîùQªÆ™gv)>±§-,4 dùyáh`ëð +)•Ú5?îËêÜC]€Vi¿÷;þÛ8MÇÁ0o:¾¸î ƒöIô{ìç7¤âÏÈ¢£—mGº11Ä3=õé¹ãÇÇ $”ÁA–ÂéBŒ6Jk©w8²||°÷tGóïYÎys¸Ì½$&l eð¾W®(wëP¦‘ëü›‘¯ùÛµäßšu[NwœÆKV €D}HÌû]|ÏÍ• U•ã"°1“‹ïE°r|n‡.“Ä„­PNtZ¾>¶¯Lrnfn+,JGÚ§ÙÎéÁ¥BJ'xïïq%û!‰„†Ž°Æ¹£=¸GjûÝ÷°ENvÛ™2_Ù×ÇNUý¬zÁ=NNÄåeCÛ:G.r{ûø–Ü·ƒeó†é‹A×Ôó XÊÎÌ0îàƒù|pÙ×ÐY¶úÝâ¯l,®ºàb-p÷—äu÷–óîl2êT¦Û_Û<. ^Oà]026æú±<²=þž·éc>obëbHë¢Ê·Ó¤³²5}Ô9üŠâŒFÎJYõª@˜_ËH¹UŸƒÑê2[Cn®ð«uÖåï_/2ïíêJg4¯i˜ ØÜ¼ïºUpÀB˜KˆìñRŠ}s„wYþÜýÌD޽À–Á÷SÖ0º®Ôw}?oÎlš·Šö„Ij©‰!ŠÔÏÍ-ˆñï÷ó‘ÞîÝU gݵ…`®=ó’’–FOqÕÇ?ݳù¾9ãºß<’<AÌ¡7UU¨EPy“žn©¨ÔÛ†êý êÈÛÅäç˜ç¼-Â"-^2∹»SvýãÁçRcLjBŸPZ8¤©²b¼h­Žïsðºw·”·towiäUãEÐ\H_M›,ÞŸ0YêÇ0’ý9ézü€áæ&®sŠFÑî‘|¿ 9C¾2v’ŒNјÿ‘¡‹¨ƒý²¦ Æ)—'7wòé SX~ù`|VáºHÆ¥Ôs=*³M½úcŠâ°ù“.cXŸ öäá7u-Æ„$Àö¾ëÛÙÑý ƒçâÖ²+({ýúÀŽ"Î\„’9ˆ½J¯šp0‘ßÎZ¯¡¼£€ûtÓÛ¹¬COÕAP.8*·á÷³ °Þ…¦7?²¶,ì“ÑIû…„õ$ª„U;„2™ô}a^Ø×ß-’×Òòÿô‰âëH4F®B··†É¸0B@é4/¬ï®Éß«»X¥S­auÓ_o.‡ß•dÅk½Ú[±ºÓ„˶®!-Ž3= 'b›ïxÌ }Ÿêf!€DdÉŒèµºË ¿Ó’Ê)Tÿæ·ôÖì_µçø7‡ƒ÷ª´2»{/Õ?=Sîìïƒïòn@ TÓŒ¡ |.œWË mmíåáHØ\xZüMxxÊà­7 ·@¶‚mi_Âh5nñM#2=A&{n†,#Î.f˜³s `¼U¾ÑfyÛ2\BBϞؿùª>ƒîDVûûÝûCÁ/8@î½zûkYÂ0L‚}ì£YËÏ+öŒÁ7$g×oú2ÓF%ëòèÇÕ4ƒÇ@ñþ¾ò9^ùP– xçáÕ§áQѾ/¯&âyÔXÒPµÕ ¬ ^ „A3ëâS³.Wò$ìXèu.=ÉaÃGmÓ{äl;YÒÅ/ ªT­ÈG¦C­uNnúH®pÐñÔ‚ÑJ}WÜfóóÕr”í͉ÜÀÙK¹`‘šÂøP“5O|çX BnO+ö*p“ÄHì‡êäÿ¨qB‚/Ã!}¼BÄræ’íö¢¿H·ÔÑÅš)7×x©¤»OT&Üg¶y`©²Á¨¿×˜ÒwÖŸòÁ°ˆ3Þ$`³¦fT°úÛÛø^™õ­}÷„>|/§º4B¡!%T„b\ÏòpvÖm[õoœNu‹°1 eÖo‚‹}ïöR-G×s¨¯Ôº¼ÛtMÂVWrÚ¦ùСÙ"÷ûJË  êMêôŽŽÇù‡åªšÓFÆ|¬]®5%ÓäÐ,‚£ßôHáV>‰×‚é©1R71ΊèÆõ2 ½ñ®¬œ˜Øó¨%\ª¬’»ªé…Ým¦P$\²Ìƒ‚Xί?ˆ u¶©——;ÚE¶¤˜ß ˆž–\sZ\ßïÜn6¸…1âú0 Ê@Ší¹¹"?G6¿c2{;ÚÏÐì÷@ªJM»Cš×àz´ h‡5¬¥Ãîµôú™·q:·È¨¹ž/tï'ïIoH27^±i{Xõ?'ÎVì²Ý_jù&êßm}¶ØŠ}çÏcFÙÕí°^Òå›JŒ°?aÒ^ì´¥g9§ ŸÊðŽÓBogò¢j»Ä4.ûÑÂ(*éÄ›®û››ÇÐå+( ƽÔ¢¢0Æ}†“³À©b®¡í¦¬]NOL­v„,ò0¡K]N€²Ó |ì†R´›ý5îÒ±œó.Hz};õ}æ‚|— qÄ!]‘‰y!3}I ì—¿Nʦ|!¥ò˜°6Áª«¨œr÷26ôü]ߣ³œ«ÜM©xöërü_\¤ÍîE@5‡RM ’\ªK‡Þ1L‡ñ“b!•pÒãÖ ”Rv<óÚ²£ð˜Ðýfw„úæü>Œebå¥Ãêjj*Œ¥­&½c•˜‰ÑÑV%Åã1mv w¾÷&¾“£ò³i`²M[­-?‘Œfㇱ´ !==Å7µtÅlVÞÞ£ù þ[…ܨÉÉô׋Ø6BE{ßyÏò¿ƒ*å8Mlhm¾Ù„­ÃúcÆy¯ÞfaÒ¢_ØÈˆÔEh¯Û­Æ® #8i¯ú‡|—6×küíßÌGhûÄÃÀ2Nµ8÷ÜžTŠ Ó@ÑmçB¼G«¡>’Gc·‘³ä\üqx£¥r®¢]ɇ5þq°Hšœ¸¼vahÞm—’¤ÜÃ)õúò‘.§ìÉ£›–/˜rcý·íJWôs ¦ª#Z7c)=§“ÉF±¬ZÐ#%x‡m–6=¶&R=ŸÖØú«L{™ô¨)FqϨ„ J²Lpr.Ȧ’ßD®cµÙÚDy „N‚0|W›Æ”‹rrjÇîÈ¢.ȸ—&#Î6cÂ6#!P§Œ @ ¶èÛ`ÿ\ËÝÄKI.š$ç• ÓžBS}Õ¦±‚Œòr`Öú¥¤$å§ÄSë]I$ÙÎß8q*Ú!»b¼(ŠyMÝ8”Õ”OS;íiÂtšø“ —€ã¨0̾æÓ~yÔºú=0sIVõÙ“Vl$'§GVWx€ƒÄi2£[Œõµ¸[8 úæ}?^u Ð“ªãw²U$öêÕ])I{i]]* öøõ{½DÒ¸ŽÜ.Þ¡s׫Z8ÈÎ×Û&Ø £q©òóŽÎKþ¨áºSEÙí$Q™ó‹¡&鹿ìôUº“U¨„ÓÖü mM©''ÆܣẌÈÕ<†³VÚS²LM‰ÍŽÇz?WWß—ÉŽð í'¿÷ ê6<Ó6ÆcͽÍüjÏ_j§?L- ! Л´[YÉùÉ£ÖôØI8×àÊŸ,ÐÝ7wwëõuÄžçàGLÕ¼Ÿ™Éµ;Ð/uwÞt¹y¶ó,ÑÏéël¹°¿ÈF§fÒÔÖ^•Z^nµ%üDÚóοþ{=)Z¬ôX¯ÃŒ-)aˆïl¬…ý«ç.>_# ™oñ]ÂÞK«Ê•óF3gåÒeg¹ZÙndj‚Õ3´îˆ¸¼Â´@é‘ðPD©ì›CØ’Oønž{UQ5 óF,¢ 2á~Ô§€Ò!ãüB¶¶ä[>ǃ–ž1_!U¯s¢Û¼ö%°Œ©cÊ^_H+Á[•ï »kL7¢j6Ýr™±"Èx?¥ìýÅÆP?%7…°t"¸Þÿ›ÍÜ«í'”2ñ@ê2Y(‘dHͶÖKóF=™i(‘k„ßù]~ŽgpÚ×}øÁzØøÍYÕËØQ™­è°VYøvEL²ñ)ÐKå 0V¨L㱪·qpN×ü¥?Æe ¹sy‘|8ùÅlŸ¾%~w2Â^Qäw@ý¤ÑvHô!¼7+djc¢Þ‰‡Ì¾~R1î„ ·ÊÑÞÏ«M--¨­-;EmìñäÁƒ„bÔd SÖÃÇž/ Y׋Zig´$Bpª«»´õŒÕP€T£B&&ûµÄ]d…Ò«Kwt(÷—íoÂ\õÛgX$l™·BL *õš|ÛãòAÐ öaj{±â`7,½FYÐ*’îº( ¨íÔ Yí,ýù F¯¤Ê>£ëžúh». ×/R¾íŸz CM¿sÕݱ÷ÇK2áŒKÑÖ)*)é^EEÝETVěЋ¢Ý­Á‹Bh.Üùsr–5r*‹dȲÑOaY:75S—B)«œò(ïêíïÑNAts£ÆÀø—pt}-µyÍ~~“6®¿–²_šá¯ÛKïËŽ—p²ý¬îøX \'ÚCư+³edÒ€0Á_ôW‘O‡±ÐȲd”å%G˜·&½Î´CTùû•þZCaéOkÌŽ¿ê¹¥f|ΘKëƒÄk‰žh »í&´´oŒH`2Æ=¥(:¾ø_Äà3+%P”U¨/Mb(„ND¶£²óßÕŒj7¯¦‹FQJ%~›œd·œ,ÃÞk¸ÂÜŸ¾Ú¢°v·Î{T½ÀD¹1”]í^Ñ[×Z=¸Ù>Õ#ƒKΡ>íПx~Ø-6mßm¨ |9 (òoîKלX\¥ê4éîNë+*1Ť,'Oˆ#óCW/¶ƒLŒŒÓýÄ#ïs,ÆàŽJ\µ‹Ð4H,ƒü—²XÃP\M¿ÍUdU–”êꂜC%ØÏ/ü»ùÍ%4îÑ·¸ÜK"ŸïD£ç½3{K\HÿÛ… éQ÷Z|CÏH›[oùMl‹¸¸ìºMLàBewT†¯ØÓ õd˜÷bo’’RF™'&zvŽõLÉûZ Qï§wFÅV™÷²0]Ðe "•®Ï…ýxrð tsë]ƒ§³@£OJl9JDÇ®~®R}ÿñ ›„D|·¨èÄO}gèÝ~"ã¶ÕÞG VP€*0,:êÖÅVÛÝê(ŠŸš¬¡­>wWhÚ>^Äá„,P-]n±¶ðÉ‹”¥ô®«×Ïöj'‘$á ö]µå£aåitÎuØø®ÌÞij…ÊÆŽ’RÀžPmgÝ¢ào¶`ï‘zžNØYθ〠솤°ø¼j3Šp£jU¶5( áÄ­>ƒªDÏÒ÷þfBì¤ÈÁÀ¹Û††3¯¹_gáà“dŒ3EÈ„´S¨Í®®rÊ?Hä<±Í×çF8ñܵ۟\af¾HÕ‘=¹:8x®&¹ò#3ª³ï¦ânüŽâíçkVþh4¡·¨ÐÒÊÜ T1Àü­xî½éGQ(¡­˜c‡ätÒO*K"ÑO$Äõ ¾äÃ1UÚf\$îÐãÿ|`Bx°†OžèÔB4>hŠAEÕñ—âYŽa zÏa…Ô@hÔ£c6LµW©¾7xQ[¨ð:ï^c¹×?bVC4îéh÷{ U×@€“‘-Â&BnN[±)¡çcúÀç(úíyíijúÜè÷|R²íZ jyÌsµäz:a{Ðʲ<ÌÿYÍç>ã ¿LìÄv“×™U3tÁ±|Œþ»0ª»¡OW ôE,ü7 æ„` ×^lŽÄ¨Ö×|JV°åò:?:­Ú/ý}®2P/ñdBáFM9+3dWžÚîÎôöȧp@½Ë«d·wFa´<¦Ša OÉTËÉH#öë\ž?õ9']ÐØ•ý$r×·S«cÉ:Y}Z%öÔ§'è>JPœ‡§˜õáKuEà ÈB¼°ºÓ+Æ–4_šP–~HzÈ·=%jÕ “1“]šè.Bæ§N‘Hü)1oYnmÅH(Oi`ÎPaþW¼·}c¡8w`”ÅÔÍÊ 1`¡ÞDPp‰Ä<5Y£ËÌYuŸúµ"€9ÕŽžVõ.Fât–´A*SQ*ÎL–‡,¡!T=õž $ææŸö/ÖNÆ¡V’„ë®ö܃ ¥H¶ÀŽ˜$hßበš¡ JgMYí¡+r€“a`çÉn•Ë$1u½¥DEçÆ'ž“Åç]…»gúçRŽÒ‰7{mÐ;ñˆomBYü—ÌWoW¶¬g.Ù*¬yÃîÃJS”°ô³ØyçÚÛdèãrÝ,$œÐ""ñÂm17M–:†–þ<ÿ+•ˆžÞ¨¸ 3.I#À¨2ÍXacf&zoo²©uPæ‹XÄÔ¯A‡ (³î9va<’°ÿ3âƒïÈ\áÊー&gÌGUJÃÉ‘H¨£cž…Üþ6J<ú]ÔLMO—Df翜:SÀ¾GÞ± M‚±·Ç˜þntzäãÍÇbÁÎÀ%ä(Ôðëöа'ÉÉPØá®NNÞ¯Îsr~‰­{¯¨AH²@ùá{1 ¨ê/õÑ;ð,o_¬¬zõêñSÜJꤹͷÆßpM1F©—¼´` û2ï€lëËRèÕ"™’ÝUQ¢1Óí‰ßŒºaên/ù^@ÿWÀˆ Œòä«+Ù‰aÜ]ô3M;OYPÑt·Ò]£qr:ún8ÊLTâè Oì‰ïæ–àzкe×ÇYÝrZ~⎽Œ¨åÍÍãŽn½‘\D(™iöÒ› ? ÀAÎ(.~ ø»gf³.¢(^W·CÎÎ6¢¨.ã¸þ% R4瞈‚üµ·1Á»×Ï…Íž³dו±ÂŽVU½R¶ÇÆw2BÍi§lZrZu}s|}Ýóp*ЀLbT=aŽ:N]ÁJqႹ³ƒýwrî9lgD…EÛ¾¸W?û¶­ %‰ÇLÐ ã´´Tà›æ£f•ŒÈŒ/Ïà[[Í£c™×ÈÉ9©žËóŒ2}Íl Ѫ݄"3ßÕö‹¤>kŸ´š/p%ãbõ.Í:úû 6z 0“dˆooö„{ö—Åÿ\ ðµ°PPZ]BÒJ ¿YÏêÔwîÄa3 ½o”¦()ˆ2U“{Áø "ו ãøþpªu[š0ÝyêZ°†Óötn¬¦ôênNY9\ô7éÎê'ª®«©èzqG­p#Æ÷K_O’^Q‘½C˜ºѲÐz°Dñs,q‰…€ß: I0ê= œÂW–KªúhæÌœzÅŒ©tøøt¶µáØÏ,zˆžÆ3‹rÏ^nK:øÝ•¶yè³{ÉM÷£:í€xT‚R”µý ¿_K1I¦6•vGXñ£Oä˜ØXôƒ{#à›”„¼îô«Ä¯KßO{ttט¨g)ñÞ7´·%曈-¹oE§!÷¡µüéë<±ó™ÅÆGó˯dR ïK¯Öåä ¿8èÒrs?-$óåe W†e Äî²WØŽ­={÷”……0[vaÕòõüÀS¼÷ús b×KÄWû³:Â$hŸssŸlÒ}÷{@nBøÊ·]¯¬ªnN÷æ›áUP‡”e¥0SÔ_4·½O]6—:MÒ2JþDÝöå•9"sçç¥ÊOFÊW‰U÷µ¶%4ƒEêx0»º§ï T;EÒA­íñmR/{y)¸ÖÐõ” æ,Ìž„Š7ÉMÖg‹•怄±²ª2z8?-ÐxÇf±ŠÜE–nûÂOçÖiÖóHòz×Å®—-N/’‘ ~7¯Hݶ0qÞù “-è¢ÀKK ²H*Óï£:K3.¨ß­ÏôñîÞ¶Ol¦:¦rçœv7¤€“~Î ædcg¶²•M)ûœÑò‚HEÛÓýO*!}arA&!=ó.]D%.‰ÿæ«viž~ mmŠyÅŸè¾%iœ½Éñ\Ü3ŒxÆ=)´2…Â1ª´bóÆ%, i=N—œdÈÐËÐ?¶,HOöùó²q¸4mÛE˜Lyì K&Ë<ÛÍøL‚Nö¸ÀçòÓû¡É.E³’f§gm#s:É>å’ #¾UÊN{˜W–ß^5Z´´‡WilO_Ð5\—<8œ½¶à‡”…“xþÆåù³4}‰ì;­S6ÄâÏš€'loNB™,”›?{½—£òK½uD‡.½h»oˆA¯áôØ óë^r¼ÜïÖQ^Ò¹ã H½6Ä%rÕ=yW)+t¾]º½[»Â¦È¿û”Ç(A—Vœ0p„èãPœÜµÏ'ÞfeɱhZލ¨ˆ¡ºM¦¨Ì¼æ8ïvmWíY )Cô(Võ 5ëžO4'Zïp™x¾y¹“—ÔÔ̬ïÝÝ-IKvcó5ÍõhVpjPŽ×áç\·´ë¥çm'?*Õ²ÔÒ>4‹‚êf¨ùð¹Äd€$š’jþÍp¥ÕÙ™ù­‹"Œ8«)Q (Éájï³F¨—Ô»VWr>$æ‘6»ˆÊÀ7’Ñø4’#i`ÆY¶'®¾þÐŒ†0ðóg0ëEBÃg_åÄ^õ¾×B!“B&Š ö8eψ_–m lÖ66æ 9åžã„¯®6ᶯs¨ö<kDYQqYJ´™”WÎj™,?²qZ̉~´9ØgÕÉèØþFöÜ∊O(žp''”̈\ýR Öyî[˜Ø?ìæxÿi“O­ÖyĪè‹3P„Ò Ý±1'›ùÚZs¢¹‘Ù²£ñOퟌ¼ð¬zTP  —g§¦AªžwÍ¿‡—ÐÎP/Y9ož+ ?Ú…KÔ7¦XÛ?†tÐ&''œî3Ñ!Px\ nÖýæó£ `›ýC ÿKDQuMÚÓµ ÞÁ9Š¿~†9kªó†)ª@Ö½kUcÌTçA”Ÿ8¬8J Š˜/á„yÈ+fhï|!üŠ&¨$'eïÒýÅÑ_eùÔ*¥ûù‹ÚNy,Âd ÆKO×Rbdôb¯î9ëÑ*Æøf¯Ë,ç;¡ )Á[…Ü6ßÛiK½^VÚž™òm¼»i,¶ÕÛøà™â×Ç2öóçâ»ó"@NÇ«àhÕ˜kî¹µ„¢òó„XM5´e§ùKÅþ2–›;]ƒULã …¶á¦"9ïzº±1‰¿\ý-UëõùׯTMùj0Ä#¼}¨ ~˜œcŽù¼m”{/Ùõœ…?ˆƒ5¾úâó ýóÎ4ty.À' 8o”°°±×Ò>§’ ‰ó@ CŒçí iPsSd`«v`¶¯a`Ë ºŒqEé蒈轧»ú ¥©ý}p€Zgû·Äš¾40 ü”˜ ,%-MøëDD(Û®¿¢ž–M»ÊûÅÅ”dÝÜwOýM(lÃ_ð”Ù7E7¹ Ëÿ]LÜ[ ‚´¢r>_èBôZyP–—;ŠM ¡×ÿhz„ ñDL[óCÏ—îOZèÌw<¾Ÿ%58¿™‡=?iÑï/Áæ8×&&ÑæßTÐÕÞJÝÝéW§åÔ ~ÃÛ—Úg\ßìLYØÍy͵îTú˜|áxþ<ªó t"F ‚ìæX©q¡¿s¡¢Å†z´7žúX—{qÕËûD )_™ã‡>©„$Ûtþ_kÞ" £°‘–©•EÔr·÷̆í#£„K)ÓA­‹ê|Œ”WSÕÿªç»lVHD¦²É¾Ú<ù×ý?>a Ôë)K”º…¬cðLõ$üJXGHø_…±IÑ¡§ð>èE½ÀŽj\ú}‡ ÏŸ‹ÂãxK1Ëðl ˜“‹˜-ã'‚ÛÄ(¶w¿÷„…)ò.¯þ©Åâ öSu5µù{a8i€5ß»ßÂ!Ñ®\£Q•P¿±‘xU°ÆBŸf6ªBÀc”—¶Ç_aˆ½1ˆ½Ž¡Œ-öÅÙô«ªóE\Õš2äRcÌÁý<Ž9¯3X=MûÎe›CÑŒ_?2½ka¼îÂ8Éev™ôîúãÉ& xïcTœ_ÞJ2ü¸<á÷•bw§9<þÅœ[4lv ÊðïKß0JR_~ì;ÜÝR¼ Ðþ}…Þçôtßß§ì®ÐÅIЄ àñðhMM3fÃÞ±ȤlÏóUš±ÚGÇ0=Åéê*/ô¹kFV9;.nÃ]ÿ¬WÐK%+/Èm¦ ¯À½zf34?Ò4EF˜è'¾~9ˆš­¨…ªEˆ®Jh¾ŠÔ¥éE¿P¡©ã}9›õ=f6òñAvH:¢0érO¥DM0ìã´ÅÊ.(=+Äd§öæ›/¼+-‘¨6 sïÆä3•Ûhdmd„ùr•v}ÅjT/¬¯¯vëZý:•ò±W"˜dzRŒƒyA£Œ‡wÏͳ²±Zæ!ÒAÑ1Èið?ù½ÅT"~”ÃKH›Š~ˆ>2<"2˜›·ùñõ»èèt8ÑÞ°°'ú¦ÍmƤdé…E}“Òö@i…yáOJŠŠoŽÖö®/®ªìÉ*)9Ù:²¶VÙYãpô=Ê«`ô%”S¡ü>Qj‡ð¨þ-ÊÇùmË·*Ú-ÛOkNÌî¤ÃšÞ4~ó¹Ãw=U;³ž*ÌJ2«v¦Ã”Œ½†( {#kŠ*­ „Äc•ó°àN1KKs‹ÀõálJžü*íTmí 4„ž:­û˜X±vG¾]YvâÔóî‡'ëiHÀ~Uº ãÚ*¬“Cé—”ï_o;Pƒ“4;0¯N¶ÈÏZÒ¤6¼a"s¾~µbæøjé=”?ÝÒ­®®ÎȲÏÍ}Á)”y79.ÞhêøBH`ÞÎPäl|IzŒçÂkoñ‡›_¼?%²°0C‚ƒ/¦; -Ž0&'Q>S~ga¶^-$þì®'ù9¾»$ûv~v6Û#©IÇ;o¢¾äÚ R“%4Âä÷D¼ŽLîÇaP³5`? †é;h ƕƀ7BY))(ùW-ªj¸¼·•üù™Òî5¯½:W©¢{¥©’]2ÌÌÈ]Ï¿!ú²¾ÜÞ[X§JæP`÷y üZ*ôK¥£‘EÂVW£®X¿Å ±pàö5?Z»£kud$ñZ¤·|„Þ*±òÂæˆaáš±›Hî0â½àƒ%^FËø§+Ê”™YX û â×ÇÃNŠÊ£d$ºŒ6õ+­? —Vâ[æÈêm’Ì.B'A1‰›~>JVF¯Ùi¼Äè“Äì@AöÂP¦˜À9ŸQ«4€Nºmazñ/C‰åõ11ËßEô KI¡XÏJµŸlåPÑú†‡³'%÷V-X××Y2:~å=>v/÷ïÍÍË䯶vLKY´iD_˜@nÕÕ½ì=…‹ÙÓ£å§SXšý|ï̓ã“W뇤›¡`>¾×p=FDü$Ó5ãŠ÷yãËôá4Æ‹×Ùš2^ŽL£ =.:}¦¦–‰ül`hȯ¼ü1è2‘Ï+¤O((¬:0ò_Ãyèæ,TI¾ùV»ñ§dPn’°”b¬õÍ´T;œÙî¨#B ‘ çn°ø£ù[Ån¿C@n^ƒvÀÝì¤Ç˜‘ñ)|ƒ¾¤Çˆx…¼e!¡4Œzß•«j5ç›Eó·(€Çó3^Ú,&»„ënþL 3†žbdÑnwš÷ú°›îúÂä^Yy9£s> …,‘_gT\šð €Ã^bbYK£È?þÌpÙ#Ú?.³fœËÎË{0·ð„|ð5 +±“™u|gÛ9jêm8TTTÂî5eçϯ8È3pqÉÑ[!᪪xû3aMÍž…eC‰ ÅH¬rÖ{Ÿ®ÅZ ”šÐL`îÅd6:2ÿ”ùí[~Wf5)¯Y¸Ð÷¸ÃC/OF]ÈNb'¿!ªxW¡ƒ‘èÀñ±þ;‘¡­‡ǘ±¡©±¶Nå¾QQ9üÇ‚ÂÞ°img²%%D¶G]ì >ú66È’ñŸ†>d~q32éè 26ü‚®gc£•êy,I2öO@ ¥ççu))Ñ­YñaÊúɾ~xõîãb¸´ÏŸ‘EEW!~…‡$Rü®¶ 1¡d1ÓSpxb",‚—Bíøø#ïürP¿)Ï—ìääãàâ7÷{ÍÆEÓåZ[1Å¥z^ÚÛ“ÆÅ½zHEÛ·5Yë‚ æº¥µdËYQ}=Srz ÛñW<•Âg¼Dÿ/¾þªª-lÆ)éFº$in¥Eééîé.é––îni¤»»;¿¹=ç¼ï;¾ÿßã eïµæ|žû¾î9×ZûÛ%Yÿ€Ùg+«°­Œ¿CFÀ;æoùM˜´»‘^ÝbÊææ«Ç-ëï a"ee ÷À©Î¼Œôö«¥§à  ¥ãÓ_ü$á"þC‡Xä‘ËËGºÆÓ(™™¡q§OºF¸ÏcWÖûŒ!B¢Qóúó— b–æmBö€¶©)¹—û¾ XAÎ`cãˆõâimk NGGÒÙeæs/&²UECÍX-‚±ˆˆÐîžøÈø¸7Kî«<÷Ÿfu¢6{ÉÆ3z¤ªøÏÇ sr/ÙÙ8reï!e5xýZšÈ^:j!wÚÛ››¤¤°ð%)’K ûìÉ€×½}.ˆåª0PÛ3 øxxƒ‘;‡ËŸâ}Ô‰``(Üd{ämc^Yþ•‡b@;QR2¦ÝÐ'Š$5¡´÷õëbTNbœ˜Á ®<=þ íEªT^œÐñ<}ë5 "H'ëù±Ó¼?î¼>I/«`ßä«ŠŠ–ó!÷jŒ ’´\nó¥x8‡ÙÙ¬-í³µÚ÷;íNðñ,#)‘݈ziŘ„ÞÞ1ÃÇç5‚W䨽_³à% ‡ºÔÔ@;<]Ýh0ŠþqqX4²ç"Ÿ—1¯oxOHÉvr²²Œ¬£œoJñÏÏ›0•%‰¡…JôÍÊŠÿ_ÇÐïT+öÉ_šV%ýääFJªWTDÚÖŽêöb< ÚüÓʦá3nn gí#eÜÃÑ8“c¯ÔÃݼ¹š?®íš"±³ï>“VWÖÖfàn)²Ï7Pû8JJÒ$æ.nmoßT>{•k~xÔåwÀ)ZùÕÊAççØ_ ã_P‰òqÿ8_Â^ߘÁôår÷lu5ìg#n¨êênÛ%™–°°m1u…`1l 6/((2R¸Ù9•ø H¡¾}°väêÆ¾ø‡†ž»ihèç6¿Ÿ¼'IÓ3Z åÝñ×\j¾ØmÁÊQHC±À$ØD÷±gù|‡ŒTGëwÚt·!XZônöáÚѨJ-1j€á3<$<Çø%Úrs)ÙxÏTH¶¶·G«_ëâ¦{\Ú…møòož’FHd‰]Ñ3vÐŠŠŠÌðòÄ È·ÂØìì„I ô×ñj ‡d8³ë,ÓEç á5Q÷¯LŒJ¼®úàîNÆ““©k…·9?_ãÍ QIç-U:::^Ù/6–ò0]ÖÔ”M^!ô“ 1qkWWç>W¼9Ó‹]9Jœh›Éd$Ô“9zÀo‚é¶µý†'˜{…žk7ÈÇ'@”•$J ¡Ï•©9ñTçÙ3ƒù;FFÔ•mc77¾äÖ¡¡D†/cÓbŒñ/øï W×rE]»{¶l:\‘ýõ¶·;&¡T:ím¿¥Ç¢’ËÚGYR¤d‹M²³Ó”µ‘$3¡Ýˆ r -}á®NkˆLL4' ¼è>vƒßãcÉö¨oÀ彸8îõNžý62Ê+òÍA7¢a¡½;«êAnŒ¯_“zÝ—§“q¬!áò5èx4!†â“·^ìÑ!¢i…évÜ ¿[ÑÓûes¾Í”Êcƒ^‘‘Õn“õw"êæfÿÃx“Œ[W,=};›+KË¥¡Öƒ9BˆJXX0)]+ÈÛ_YÓÌK·ýúæsÉëºvò™ é_«F r­®ÚÊ)( £½¤Þ/NH`ÒB‰æzGÊË‹•¬û|Ç÷@3ˆ"º™çéYæ® ÝS³ Ê_µH¥¬KâÄ’›òÒ@.†Œ¬}éaíá!˜®ñFjëSfL”a%WgQÑö‹4*1OÛdÚI®Ø`s‚PXó ƒtT3¬4R@ûõöhñÜïÕÙ)ïíG9v@Yx,«Zš¿·á±äÃØæëb x×V 0Úû›Ñ?7ˆIX0N,œ SüP ·9I]q@öÐëÍT­ì%‡EH>#U¼¿œ³(Ò¼¡B'U÷3ÊpØ î/ë â/£–+¦×cÒWrOgØlI”kô .ìùæ4oÚ,›ýi WE4rrÀPk¹ é>ål®¾Ë†„ЃÀÖ5xáDáHÞÇÎΪmxžžOúqûâ`l¬ã;”Áíù’‘ûarßÀ|zú¤½WP¥ŒÝx[odúÄXG·½…ì¬(õ·´[ÐSª“(/s~ííì´‚2È·¼ª/)©`)ÆË'‹m é/›UN„Ïn@‹MHØõŠ¥ôÙWxýnfÃ1æœòMää«£­ÌŸÒ|ëævÏ>ÔoS,Ôå}Óè—ca!¶ÜV›Â2è èXhPãqyL++FÅ}ElžÍä>͇SŸš&´«‰.Àx<ï™qÀËAN¬­ŠÍ£>R}áhˆDäãs…<×µ˜†Ç@C²Eh½@‚Q.Bìº9»²Ù¡Óî$µð €L¶ÍªØsÁð@©@”xªîª Áo}=Öÿ Žåb,º礔+ߌ wÒ• X üDÏ|*5””H,ž<™€Ú ÑÓ›f?ßÙU½c|œˆŒLùø¸,ëæLª¡£”QjpÈ*Øùûzߟ©Ð¨tíöA6†;åjrدž®mmm9oY>õ³g½r1‘|Ÿ³|ÚÄ® ZK|'èºÝ>6VöZ¡º£º|ç#¿Ù˜_‘*õ,³PdЍW``‘Ô:88 ³z5‘ú..hØØ§ÄÏSRŒ$„$ ¶e½ÍUg—<|›MÏ¢·ú!ùbðÀ}tÌ‹Yïäl˜ûx-rê“–V$¾6Ÿ?JOû”JU`½f 3êÖP×Ê鯕qQ:@[§ äíþ('×7[/‰ØÂ,ì@BÁ–ÌófïñžzvV€—ÝUôMëçícRJ¹¨õN kþÃhŽÁ´”³|hÙ…+ôpŸj<ä2¦ëïo€Fö:<¸ï-à0ýí©ä%%ñh›ç§¿rß¿kèCþ~*ÛÅúæÕ2R0Wb¶¶XßbP¢¾É‡­¯‹”à§×Gº}•Λ#âùtÛTQAèz™ƒ u½œ‰H&‹Kd2*ËÜØôÚ©àkƒ¥q‚«œ—á(ɸ¡šZLà€Ä;x£,ÔÔ++³h>:ÆÃ_w¦íÃÌ~ÛD¢¡Ïµ±ïþ!¬í¬Ë Ø:5íjIÿU¬Ýz¥ÝcÁ0vÇâ"ÝfXkaiħP—¬ì슓Õй“Aî6çܼktÉ50^Œ'mÏð¢YîÎ=¾¬^ã§ÖŽ‹SZÛŸq Aäu ^;ÜGHlšçqÚÞÔuHHR éíåèì\ACC,'§’ +÷Qš$ýÞÃ;qº1¹_«õ÷¾ã§v^|¼Iœ¯ÜÑ õØÙë=©h—ø#‘¿‹É}eâNGQäBñîçžñPPQ‘™ÍÃòd!çƶ¾. fjŠõí[ŽC^>ˆ™77‘«¦'*YHHÞ/Cìë.à‰ˆðb³W,éÏŸ`ˆ_×Ö’1 ½¾v§¦Á[Í6…úZ^=?ÿ¥ë½ °Zk»ŠœFÊ…¶€ß¿å;»6(™™@GS°Éñ)¢AïŒãÀ"HŸÉ«['<šYZöÚ­ûÙ˺» µw-_Ÿ4@¤Ö× íèôF^˜5w(hrGD íľ÷¿¿—t¾ÝñFD' ~Ó8±ù#P¬ÕdÌ‘€à¼s4{ ÿS È@$€„UË>“Î÷u–¶”|mhx¹DAÇÔ•Ø÷ßµþl„ÕµÞS† s]ëÂobÕïfu–ðUTž¤ §G©±2ZJ{à0øÛ7iPã­ ë…„Ð/¾––R12™ðÈÙPFÈ×z c\n¬.6iηd®®"C}õ÷§,fu.c @öTS©"ÛIüù“`dhú˜×Ytª¦ß¾ùÉßÕ«.ñ[Ö–À@\@)mßßNn/é\ÛS/H¾zNbÐuˆhÙþ:_ŠQT™‚…zÿ• zpeEÍɉ¡¶Nmä•þz0pÂWáíÔ¬;úøÏ›© ¿Ÿ‰}ŽŽÞmmͺÒll$5»6š½ÛÓ•¥yCù2²¨âq{î×Ѐ+ ÀHŽÏÁ´¼i­¯¿›ù®>òÓ+ ii àöu«wMnu@þý!K©ïWvLqÙµ´˜t¸¿ZVbÅ%Äœa®¬8YÐÚ燬²ÂgýãÏÄ`ÍØØf¦®^SRf©”’%òŽã‡â…û§¥Ý¢^ÍYÕœLj¯Ì×9-oJø“¼ñ—ÝÓ`³>¾’’aèƱj›­TŸÂ R²ÜÕaS—ýzí:?7ÝÜ,kíTc~\6’ÌiVæqç(Îí¥¥¥uÒCNÀnø>ôˆŽþ'ø¥±,#MMfÀEÑéÚ0݉šú&+ãÕoYè444Ö××í%‚¾U”—¿utt m)-)ÙBþ>¦†…ŸÐƒöÁÔÀÀï­oŽøÇÍ áBcjÖéž:9»jVµ®.2*™¾éˆe îúZÀRHŸŸ_ü³‡ëÅ"\+êÌäù<±“â#2·©-Ó}&&(5lÿ³¬É]P^XXÊï`AKªFÌÜýpq°}¡!©ÖEMmŒBpð÷mû¸‚#HƺvÖ¬™ºaïj¾ îàX†ŽKœâ;«NÁ–€Æ-6ùý-×öBÂ’.ΘÁ—ØÇÓ&ͦä0``º÷οSwBG³ä¡u¼îì•Ö”y=)QS¯wôô•6qùΖĸH•õ¼c鉕üÐï`NÄàS\¾8qqÈÓ±5 ù–N$b½oooÇ|þܯ¬¬Ì±éi4Û•€p”7‰o¶Ú‚ØÜÂb. åõ?!Øäõ”ÑÑ¢àòŽ š°0-Hp« GBboÚRËþއ©Äf6ÉHÂk Wa8¸;b»±Q>øÖÞω4)Zª¬’ÃUó¼²­Þá­j­DIAÐqpH­ãQµÕRÄÐü# sI+¨pM#ïZ“€¥·íËm“#ã…í+Ä6뽑ƒÒó¿ ‘ ê÷y~½»:³~ò$[];³9ÒfþõKš"šõü tãsÜ…gú'ö÷ÔLdÂΘáåˆ"É”ÖÀHQ ‘ŸœŒîÕÑrÀ"ØF¹€?: ®¿VÊ'dž$ ,2++G|ÔotTF´Œ¾>¬ÀE¬ Ï=ë— &@±™Y¼;ŽàdA"]CN>Åp†7·Œ³ËŒÞæ{ ÈÀsæô`GÍ iÖ}óÓñ¬óg7ÒËÌÎgÓ‡›®2#ƒçýêc`¿Úê]q~)¾îleÞñÒÓÐdv…ð£3)ð†ã!~h÷@‘ ±Ý9òÌÌPVƒþ)DôG2]ÝŽ]ŠÂ$v£SR˜•™ÑlIþ*M0Wdøìieîuç·Ú¹­¤CÓódÅõ{"PF&«;WÂlÃíÕ[¿PÌê^ËŽÇtò ŒÝ.®X½ˆØ@êÒ;GGgz=¡X¹¹;Aé$rô¡¤§+pôÂ_^îr PSœvê!=>ò?“Œ\ìLb/Ï/ÀÒ›x…ï~c€I#{îã †ñJýË"‘HæNL$ø<šUž(ì… :Æë$F‰äxPòµñ„uªŸ}@]E‰ZHkë“ÞΘ/"’P¯‹Ä¼„¨Ã,Àª €/èÎËAåtDÁ#°øF £IÔǃXFºR®¯U—abb±ÉF™UBC0€læ‰TP;Aˆ*%Ç$Ïåd Æ ëîNUaèP”÷jTÈPÚ·8¥ÚZÍÎîÍ\\66¼¯è¿É~³´² {ëk~|: NBÈïø\ô€G†&›Ô:0À–—ó”ÝØ~¼"«Zà ühpÖâ› È õº(µ¤¸o&6’/8¿ôªŽF—l`£çÐ »ÞsHþ»Ç´Ös”U[ £­]­Úâ‰ýãƒ2 ÇSy–’ÒŸ•érþéš#d@ÉêC-æ´!Û{Æš£«Æë›BYâb–žØöø€Âj6ét}ÕÒq2*ÉrFŠMA?ü»ˆ%,l÷ýï§Ýˆc­,(+#U é÷`4Æëïÿ Ú–V¨u8÷’;ž/¼Zˆ\@9Vù¿dÁƒ~|µTp}wô\³!Þ§²’õE_”µaÉ:¯…—ŸÙåhæÌõmD„Åâ-®ýÍÇ lïè@ù°Ì|¦T¤ÿ?«ØcØ8(Ö§_ž{>\p½~-ýSõób£\¢àµkôT_¾Ä.÷—Rqœ™šî²„p;î#c_Ê<1¾ÍúMŽÉ"(ѱ:»ïttàØ+è]ãõ:ƒÜQ‰•U¦Ë~ýƒLÈ䡳%™;8ä ø¨CÐmú=‡ ‹Ogýœ–žê²Ynéì4o›ÒnKdƒ¡·u„„j÷û“w¨Ä—ÐB×/`@ù^¯E^©ú·¾±¢·íçuyÌÒ´>¾£}5Wc% (_Rü‹Dä./n.Ãpeee™ÅCY w÷^ià÷ÆÆêÐ,rb.óe~?äÄJ¯ÚÃúz>Ff’êêjÖׯE>} ©] ÔŸ­4 A¬ø 5ƒ®$Y÷C5ÖL>Ö(DÜ壟`üÂF²hI½…ªê4NijTµH¯^I­ÌòÚRoT€ùŽo¯y{#>ë‹,,×Õù¢ w}ÿ!$—­y¼‘ðT <¼ h9}Ðr[ÃK¢R½¸€þPÝÜô‹´î`||²u„‰f›xAâY­ëlØM`ÔU¹T{i빟}U ßÓÈÔTÇãƒÕçÕN Õª]IP"_‡,ÖÝ/gŒÜGŠÆÆÆ[œ@ñÕ:ŸP‘ÓÕÕõ¾Zò"—‰gl+×ï‚2Nß° N)1ü™­©ÀØÏI×ÏÞ•%ð÷ åJ|m?”ÇRLmËYýmç11eeºjËr‰ˆ{Dhè9Èe hÄ4|®([Lb÷(èù@ϰ‡‰mK˜-éåssvõVE…ƒ¹óOá‘î(¥½mõêX®Ñe÷Hæ%Äú+ÊX;›P¬Oô÷¯}¬c¥×²Ž"…ŒŒ““Õææ—”|zÕÉÔkggW[_¿z}²†?>6ÖÞC»²² j 2™UUOçé‚öÛ˜ûº¦¦!w—6Â¥m?• ?ëêBËÈÈ4^LjäûÇÄà@µ¶·Ãììì7ãC ¥òú:ìM¶õô LNNN×;00k7"B½¢£{›!ä1R¨ÂgÈ÷]S!Ü1Ÿ¯Ÿýñ€íçüc܃£xØóL_äyÿ©Åæï$sð?ò¼œvÈã‚gô%Lk o»_åÏ?ÒI…=“«bÔÔŠ Êö"ʦ§IšEÇ¥ _îgGʲr×\%úvð›oôŠŠvR¥7¸95¿Ü×úX‰>ë…£ô#è~¡éES²V}ìHîÞ†‚Q‰ÌÆÒÒõ˜Þ_××Îx¤¤ƒ÷÷÷Ó-,— fU@~ÞÙ)Ÿšú›æ}âÈ—:£ x¡©©‹ÅƤ»…,ñPU%%\~ÛuDöׯWãçjm¨Î®®ŒÞ½{ÇHG|swWñ!…‹3¸°øêÇ¿ oãÏøâÅW¶îéLJ»™LÑ@ý÷¹s£dýÎRu?\Œ1Ä3tìíb~NE\~:÷Páó”/é9‰±-f˜%c"]Êyç,î/›eÜïüýer°e,ŽÁK<™épâó…zªß]°5^ƒ)5qû3 ñß…Úè~ ›Þ3³%º‹‹)Ó :CdùëüŒq†¿i÷+†eGùŒŸ>(&e:¬’O/·U‡Õj¶²¿ŸÍÏux1˜Â”M…ƒÇHCpçbooŸ2PW[kÝ204dÆFƒJ̸µ¾>ñ¥ét Ïì éõÅÅÅþ^i‹!Œ÷WqIIön‚!>·ãehý°{þYQÂRrº)ÅRÒƒLiÙ~ö sI·|õÌÛ¼`Pìïs4÷B+pù‚å³Dhå8 F°Ÿûƒõõ¹´6?\ ³­ŠšÜp]=…yܸ(ËË·94kwF· h»ÛðWTº§4·+ãááõù‰°-e0–«¶ïïOþZòlxÛË|à–3é_ Qçr=§5ï}úÙ%ʦ呭üHwñó'ýÒÒáó‹ âûÆúúz­>OÚh©äíátÁ”"O^—⦶nнó 3óuvjžÍöpÞýýÒx½M’Js£Úÿ̯ú1‹½½|:ÿ¬Ìä´X³~0ÍYk´³1ÕÙMê|Í}$iá=ׇw%YAŽŠÊÊx›ÃK›w|Dfn‹¥¨SpÉ©ãý˜‘õãë÷”~Ç…YYx€ÙÅ>8ŸÝaº]iCv_Vïo®Ï†ÑT›ïy ˆ‰IHÐÑtF⳺_ª–S>Ÿœ|°YíÔà±3D3:÷/±LH-1ËY]µXUð„Tº!€Mƒp6“9ö¦‚ƒu;XÐM[RS“¹ùzÕ©¹CŽTùüRYMM  yyùÚŒ¼?ªëRãâp¯êsÝË@j*[\__‡¨º‚~"·™ãÑb¸/ÈÖ0_íÉr¿~…²$T²¬ÏÒThv̧`ößú97ÌzbvOùimï*9"áàÄ8¶@>] òyt 8………A"zVåáä ¸,’)Û©¥ƒl“_aoàSˆRcôörédŠrë/Ô³nïíéN•¸ÔºØ± Ý¿tvæð²•~NËÌŒ¿7Ø6l…âxp‹3ž‡ÑQev¤u8µ¼¶Öêälš™“ƒ õÙp2aK까VÄ °»1ÁùyÆ“6„ñ2»-òZW΂ƒg½» £ƒ¦§UµêŸÛm ur(×ëB¦¦¥¥bb*žÙûŠË ü‚ ËÆÆFµÚœèÞøfµ¶Ç…R‘f6äóŽ€1ª(+Onºê«V¢)«?ªMMMm­ƒ……•Èç@_ƒþÿ9l8fó]gïRk¶¶>fUìí÷ÚÄ3éîOk0ÒÒ6=Þî™óž?Òq?é‚ײj Ÿ¼lÔÁʠˈuØVÿ0dâ0Àf@Η)(ì…ݯ“ŒÊqN±cHGç¿?ÀâeÔèÕ‹æ_o4ü2y/ZR¯Ü/M¸Çpp¶‘iÉøYûå~]çϽkôL õqC»¸`d .T=)'èW¿®Õ²ïªÓuZ?úöaz$3Eͤ`—L§Þu»©¬Œusÿ÷û÷ï§ÁP¨ZX0ª”ÒÐÐüþó'Î?0Ö~ÀßÏÁPO¯]¹HµÍÔÔ4¹¨ådHm5tCKˡ߃ƒ3àEj7 “»@’ìF¯îaõö-4ìÈþ KãÈ繟³—ò—{’`ä¬$Ýè\ŸæG/Ò ”!=P’ ÖJ|Raº©k!OG—ÌŠ“«ÌÌÌß}}ÁI‰‰e ]Å())•ßÞºV;¨vÃÁ@‡ÿšÆ¡MlhàggcÓÃov¬K.à533ƃƒƒ‡ÝΤ¢¥5¨\¢ÙŽ2ÉßÿÙ4ßk¨ßóóm ón„1²ñõVKB–M¹¹¹¿GF¢ØºUmlØR8Íð®BñY~yíáá±¹½Ýëy»“`̬\®útÙ €€€êÑbSRM 7 †ÕÔÖâ˜Ñ¬:#ƒJÉ<ÆåI99¹6׋ݮÃùº‚Ùûz›5 C}ýT4´™Õ®PâçMÌšµ­ûûûÓq *Dò::Ã\æÓ­EEE‰àH5êl_^V'Ð?çãdÊûÃÔ£xð¦pèæ³ÙŒ~YFFÆéf»i¯Ç3rCƒ.xT‚VǃÙ?WÕÕ\´¢CCš£^ú±u÷÷›ªªªRƒ3¢­ø¥>€¾ð{Ñë‰ÛñÉ“y)Ó¤òô”¨ÔØæV¿šF©a…áÁ£ánÎÄ;û¦½)…¤Ü¹¢²²ûàÉñ臚$qu¤áOdŤ- »óÙT[õ‚WÆ{楇ËÊÊΛ‰[µæËð«g…ME’æ2{Q9˜HÊÄÌÈíž^É%8VŠ¢¤ýÏ_l_Lä’2­ð:î«â‘“geg'edßMµ†“ ü<>1±÷[LÌŒN2ã0ZÛ›ÛÛ_ÀJ!æaŒUøó§žd‰®„„ļ-1·å—ÇÇG>¼|ù’ÍËË«ÚdüMÕÅâÄÄüÇ×¹+€hvèß]¢“®z™˜ôá1ª¶ÚÚÚª¿Ú[jñòuäÀßJãOàÆïqË10}º1Pw𠮬#£€?|¹;¨µýº­t}½ög«Ì~/.¦L—grõ*t‰äÕoUÖo$¾&3æäl™5•Ô¸¯2›úü°ÚlŠþkÓÃå\ѯ_ßæë*Þ6ð.NVÓ•2ØF#§‰É‰Q²5X¯iüZ‡²³väå-6bPöû5€“¤Z”ÌúGÜÕ•Íí¨I')tžËzþDér‚š;ÆœŽ _Ë Ô¨öáçQÝY}à5d°ã_¯r¸?üi‘ºW}5Ÿ]<ü«©~ï~íöBÑP¿"àá¸CÉßJ«~­Þ~¡ÞÁüt½”TÔÆúzYBÞ/N³I땸ÙݱˆøWkú’KRZ³£ØJ,ö?–$!ß:¼‚|û÷§|žôêpf°—·)µZlì#!%Mzóâ3ÛüpvvöœæPW—ÿH“úïgÙå=yiióhöâtdµÍŽâ JKt¼8!ÅÇ— Hñ|g|xfíUgOOEšh©é%¯§…ÒÁ®ÝÍÍnf­ú‰Ï ,:–N™uÕUªb”XeeŸñ™5?‡±q™ŒQƒ“a³‡ ^RX8Ãí¡‡Ü‹ÕûM«ÅÇG»o´˜ˆªææŒW·`÷ïoÎ,ªß¦Óãñý„tuìɛ‚»:>.ÎfÎäÐÁhqn–kÃAœY>3ƾª±1pÎj˜]¸…i~¤2ýa°€r.Ѿ‰˜[~ÆçÅïYWN¤]>\y-ù#€€ö{ìÔ?áLlo§÷QC!b¦ÝÅâÿ6mÓܘьö‚ËãIÆSª¡¬ìžš©©\y)ƒCƒ‰¸ø3ttÀ€ ”©M'ÝÄû£Ù’óG ŒjY#N¸Ûöä¶<{bÃ*‡ùÀ8ø'>ߟ£lÈ·|ÏÁ·ŠD*X_™ý²—o#£²ôáííí{–¶á¹ªÔ}§ÓŽ•^–© £áÿ¦Çà=_X4ô~'f§Qu5µ>XX⢭ÍÁ׃`óIµìû;þäÐ*•Rí®%JŠŠ• #3cFãêŒèbÔÕÕU$I6ÿŒ]?lgoýûJb/ä½)£Y¡Šš››gTnò ØëëÿTÝV¼JU®!Qè†-þ±©¢q`læE_Z5Eêbe6;…['å/;†»»ëÇH¹ŠŽ‚|ÑIáÓf¤æhûH¿áz2ü¼ìU×nd¹Ë=ðG9=½iRÜSÇKóùÿí3þËý™Ž43tr¡ÆÁ5'•47ûuÍš¦-²_•çjÕ*Né^ ñ0Ëâ>¤ßãâ+š-M‘NåŠq‚¦ ’ûøS{›úç[RÐÜ ¬Ø'ÄGXÍ~*ËÉ¡>¼ó󃛞›ëèî†|3? @t@ˆ[qnîŸýjà(DEܼ¼um¶VÎÎ<`,œÖ–Û|ËÊÊ  Ryíà¡¡¡Ñ&ÙÝ.Í!ÉÕëáßqzô ?h€íí §#®k5€ 6\y ŠU ‡Rƒõ{"(Q³%#Ÿ^ñ300 ó}‡²ä|¾±½®’¼¼)s’øøøÞÞÞeí a/2ðR–NüŠqõ[ö2p¯zê}ù¶þôŸˆ ?h6)å˜éèį¯×bŽOn âIaôQ—<¸1¢£SŽXÚÛÚüŽ09••”HEDKu÷§?²yy"Þ^…SIƯþNâ„ì.Ö×# /Ð0±²n#±WxJÉ0V[˜ö³i¨Í•[¯ˆºŸÝ^ìYýפ †2¹¯Çþüéözâ'¶±áA¶¹ƒ"Òãf#•í­­í민¹Ò7â×¢¼b±Härœ±y9 rBUïWœ´•KµÃAŽíì$‚ÊÝJ …p(//!Pðé2]ј ÀOÞÕÕ¥;óË ‘ÝH6eÎõâ ä#srr^¼|ù¬P¹Ø´LSMM-åÈ Lw0™SµÊ÷ý‡ÑQQ­âbbŸw' ЪÕÔÕ‘µ´´€_}>Û„ú CyM³\ïäÓd!séïïYd‰gÖš5¼û’|÷~.Äàw"f°Øô/”+Ï$^»ÍÏ·R22wWl.§_ÜÁ ZºžA‹×o “0xØj›/ÂeàOù«TË‚p¨ U§O[÷¦…¤i3B“Õ;uR×**´íÁ8rˆÈ·è+5K–kq*Àž:¢©d »\‚‚¤Íªââ¸Óõ¨î5˾”ëš™µnñÑITƒØôáÜ%Éì¹Ä!Bdñ¢Z³ݳ|žNê$%‡æÜ3ÂÁ i?À=Ý;QS¯Ÿ‘¢C÷Ñf¼xýî«á“0ÎQ?EVÑlJ( Íù§Wr象9Láv9'f|ð5Y6øqȾÿ] 0\BVÏÅÈÆËÏψ±Úô½²†Æ€©™Ù IÁÁHv øünmýÞfKAAñ»­Í¥&EçŒøðèààÀ©Ÿ›ÛhssÓüÏO¥yÛ ÃA=Ûs]0ùÅÍ5ß¿ï+ýUНíœùnîêhi8,<< Ä«¹&7î. "b6=±Âò.½ËAî%VnnîÉ'+ƒ¬Ž»1´ææf•ÃØ.7S¬~i7¹–ŸžžÂïèZµÞ«x¡TžÖþ~ŸHËæ±ôäßeVdSRRªJHÀ_ñQPxóòò>à<€Æ]mºZÔž²É[è2v\¾?Q×ú»R¤tweµX8ÞM`Õ…øiw䓚zó`wÄCì¿+£—íb+ÔØH î¼Ñ…È_§»Ú9n,U+÷:ç B %¸~øß³sÄ|þö ²R1m§»j~Q-« tž(èÏ : ÜÉ6yŠ6 3ÿ¯<ð;†á©˜‹訡®nˆ-7v3 8µžûÒZq¢ø,Ú_f ÁÁ8îNÐJýÿ7Æwmà ô´å3+ìÔû[âm»FG£tg:OÙœø|ÓŠa[ÿOöà«")Î;q%ö*=¬“êPHˆ?-²‰àH`·Û»Zò2‚ñþ ©zÈ æžNƒ#;;»>dÅIL¬òúI÷¬$w˜%^«É4FÑ99,[;»rÝø÷)\ᑟ8D@Ä’R¢£zeБõÄ·[‰z2ž2üˆ;Òll3ª-B¨¢–Ý?>ô,o‡@ô|,×K÷ætë³¹y«SQq³¶_¶¤•Þ|í0ÖósR2ÁŸÝÞ°(6‡óü«‚ÒnУ+u·?ñÇÆ*RReçhTç1÷ð9˜ ¬ ·zoª6Ý>3_¸m±¼{’Lþ6˜«ñéS+ÿì7‹¹jÐØÐ^OÜ%šu>s5VúS?,Ö8ì)Ï×; Êè*×ï±¾¿¶ÙŸ«ùHq‚óè „þ A¿ïÛK©{ Ÿîí|¢ÕFÈŽ‰…-ôdƒÆ¦& ­¶~™1ù’œÜ\è¨Í²ìlý˜WN½ø:îÞÃÂO$`FÓf#«ð7² M˜tÔû+ºyÇ”‡ ZAF°Ù›dr¿^ T#e"»Ôè‚£R¢Ù¨¹ x/Þšb^ãZîHÉ8 !áÛ˜­== ÀOWšà\ݽ”‰?ÆÂ;’M@bb*Æk¡ù˜>_p±XkÛ€Öáó åø7û°½ÅÔÆ¿Qõ]„C\W„­Ú¯rÙBoZ¹:;×Rÿ àºÝ_| <ʇ“–¦Ãñ •ü‘bÑe ±±ÑÜúd^L¬¨ýú$}dll•_lLV4`:S¥”¬ÖS° Ì]¹˜…©_Ãí33¨{“¤Þç+fY¿/æ‚áUWW8³6_¯¢¤ò;•ôÝ]-E–6ß"GDD°éÁdBUQQ!£¤éÿQE ÉG•1 3“bs8cx°ðþ|ü£èÇÐá¡ €8°SÉŸ1Ûp9ío—›Òú±üëgÃÂ’Ÿ>a¢¢¢‚rߣ ÝÍ­r79âUq+Ò¨A…ÝElÕèˆAºõ+ä¨`¼¡˜™™¯WCYÔ5µÓN#zFÐPQ­·G2ñ¼Z̦J,Ã$\Þ§ ¨Qà‘ÒùxùmBi½è¸]²íûò‰— ™!Pì¾§Ô½Þ+ýâ Ý‘Ä^¾ý§áÇû“îŦ³•Ý.'çõòœ˜ýE¤–GW»Ýµ‹©Œn³Òð€`¤‹"%%WW>ç]:þùÚèmÂ’ã@1J³o¯s Ç…3üéC!—Ͳœ~›kpbán:^é°þîÈ’÷LFf^x|j A¿¨ VÀ…µÍŠv$Û*R6M¿˜¯ý㽋ùRsZCôí‘×1(È‘ÑѶ––°%Ï;4mmm¯GÈŠÓÒ˜í EÊ©üƒ=5ù\ C¸Ü¡qDüißà`¸ÛG£Kýp‡ËE¡¬]Sæ !“§EÙEÅÅÐP®®®óÃD[òfT¯óOƲÿ~P½Îú†`;dÁT¯3ÐùâÖ«W¯:zÈ?J*N \ߟ©)®+bGG›8T5pÚÍ7&D ¹r[Y¶ÏVAƒ¿…íäwÒˆ”‘ œÕ]l”›nä%ÉÍs̾Äc†\àA OJÿ úk\î·˜˜º rAW?~§C®ֱ1lBBÂù½nº¬Ùçq¢âââÓUfø@µØÃ! Ø ¦òâôDŠªªHD’¡:3ÑFžÊ :üßÓ×üfbæÊñ055U¶K².¿>y xò4·iKó ³x¡²ÑH_ß76öù¡ƒ©éÀTûn¬“â?Ÿ+¸#"’IйÔU¤Æ¿²×ðŒ‚B…U?€åñÑŠ’R™‚ǙĔYm,¹WÁ~+óun‰|fïS.ÑQNþ¨”®®v¡s˳SIðP°WÄ#SCA·#¾Eeª1[äïg@Ká÷öÓwhÕY¦Kþ¹+äÁöZ«·­‹Îdi"?¿~³(u^V$YS°QÆIi  Uö"íº¡T5ß$vÌlѼžÝî©)$`²µÀÀ>!ŽJÞÒˆO°>ßf¥4äÄ“óì¨éŠlÿàà(†þD¾œµµuk‚Ž'Ô¼µ9T0gggçÏàç‰<6”é^.EZ ñ¥eÁØ&LއóÁ‘²²²ˆHHmÞ°µ_:¦âôoÏwÐ&gfmcÄ´Íê^›M2ªjhP j¹¢fÍS0íì{4·65£XYY5·£0•dØÊÙUƳo¨­‘˜Ü× ðƒ"''#âDŽ¡ùÐØ@÷óñ°”Òn²“zÑèr‹®®."2²|¯f´Ç$é xK ±³W·GoÄgeddP$#HVlònê¸?fDxCþ>î2+D#Ny˜½®¨<¹r¼B|}ØúŠ® u¢@´ÜýÆÎÚ¡j™Ÿc MÛÃr]lÃѦƒ³Úßͽ÷7üFC–ÏñU–¯–¦^-ˆ¾´'÷ë¹ 沜µƒz½é8fñ¼ÉKùǃðJdV¤•ý=õkû{E²žHòž( ÑÏVVPRïßw漋Q'mWŽ«´w·0ñù‘^à•ß–¨‘‘‘‚¬Yþþ¾ùôì,½;q¬ŽŸq|V2‰ Q°/“„å¡(ä®°ýy^|hhß̼¼'g1Y›gèd÷(n—šb”o?X3jp¡ÇÇK¸JÔG·´7ßl PcÃ[D {Ø]”LÊ’š™‰«µ¦Àt5•”DQWÿÚÜ|~Z"‰a±½óåÝímýÈŒ½}åHvà¹I~¾¢:‹z *ÚÚÁp¬¯wG37ô¥¯¸)Šï¶³Ø,ç· ÷Þ€f‚£ß+ïÙYõõ Ý¥fë›­Œô@Ðîr.–HtÃÄÆ†Éü`ïól¥‰{`®õä4’GþüÉ¥õ”ª‰Î0Ö–Ûv=µQ OÌk›Ó>ù2µ**øà_¹¾M‡ÒGU)•v³JçÅ àóæ{Æ“nŽIÉL¨©²á€–`Ýrƒ¤ë/Ú­·Ò^Îʱ?èdì‡ðøX2ýë% ®ãË꽑_\\\ÓÍü /¾oóIêx½¸½òÂú ­®n|ÌÑTߛȥ&÷éV´¼Y\Ü­ž1žLÐüóçåÀÙY1E•%ðk™¥Gacc¬Ab)*5Âaa4«+8˜¡ |8¿º?ý8ÔT€äý–p\w7¼‹¢œ·å|« K“$m&¥¯ð“@üaÃb¶I&ÙÿÍ 07B€_Â>¤pÆ·sÒÙG²Ã‹dFEª"Ê€Ó«¶Ã2ñ|Ÿb·´±¾'RR÷hq@JšþkB“У3ŸáoxÁæªp1‰ÔëȲi!iil\–¨óuÙ#F¡°I˜h+ íìD5ëc§WDŒ«}²\_+)9O#fgdÚ‘’ä Ç<Ѝ¨Ã"¨^j~VVóô¬:ÀÙ|ÁÞéÈJDô)<ÁɘT£ZìóT‰0fcðZÏ’OE…ZÊ€¢Ê”þézé÷Bþç=‘-âwz¸¿\/Px÷ÑÏ2Ưïí\?Ea~Ø::ŠDÀ˜½ŠB(ã¬áçÏ_EÑOH%jJ‚Ùþ^Ó+öþ=×d)†oÍ•! EÈÕ±íþMG_ɱp‡—”Ѭ©0~¸‡›Œ7¿54¤«¶òÂU)i õG鑎yäâñœn¯Ó+­3Ò¯œ,¶4Õʵa°Ù˜+«á>ÂAV‚õõ³#ããm“Å¥ ëòøš˜€©¶ûß]ïW(HI½ZÞäà ¦™œlßýƒÃÇùTP`¢Ô…ÍÚýI]Ý?Aûžöcó3;»å;{Ž.î¥ßm÷7Çgv"Öe«?è_híå&¤·CnTðzâ'‘ŒdÞú[Åàì‚Bþõ6m0Y"¢¥ 1ƒ;Yu1…îÌáqÇ*B )É„ŠºÏw:0±ú´ÀpyÇ‘ÐÒÂ@`6%Ϫ+ÒãFFòï“ øÈieÅÞZªÑØ;Téš™…yÜáµþù“¥0#ø©Ìbî)*N Ù‚µûž wQî3À2z»C¸rƒƒw6v¡!bzÏñâõw'Jmî¯çXÙ÷æv­õ¸­×t¯=\yùæåq L—uú‘«««O7º # Ú^ê9v;&ÅþgòÄü!÷ăoˆ Jdý*ŒÖÊœŽ €É¢±7>\:ÿNbÇ–hºAäX[é ÷óÓ|+Õ‹Ô¥P9ÿ®fæ,Š€õ;†€`±ÍŽü·~\>¶Ç[BȨ^O¡¢@á5µ˜X=ê1˜µ¤ÅìíñTœá“ íúc3Ÿ«¬^3x6ÄÒÌãÛ(°cý+ Z¯<§í®²²òxRc-³p®NMîýb "„Ȫw¾í=2¶{]*vÊ`}¼¬3]±…moo_f½BäO•^*Ým“;U€pЉà@^…¶}c r‡ÕPj°ø»w/á`P~§p#{{/b"ær ¢a‘¦¡½Qßž ¨®Æz°‡7&-°Ðî y|Èò[\ýâK"Î×»¾ß_´ÈZ @ýþ}Ëy“ôé•„„¶§ B{‡JëHÙÆÓ0¦ëÍ^çÇ–“!þÀ“‡«R'>¼±¦E/aLÈâ]^F‰>`i÷@ÑÎWNîX šÅAî‚\„)|oËm™ÓÖÖÇ ,rI4¬ú“ØuLœRˆ 3ǹä ÅP¼ýÑ,£ü¼Êr}­“Aî­è$5d77ý擬?ÈTJiÖ:ƒ_An ßÝuE%úâ;¥íFÄÒ²+)9N3‡ÚÝpôó†O±8|jéI"/ðç3(Pб S0o ÅeII!w[’¸žoß<=6efg/ääåƒÓ65ÅÒv1À ÓB‡õMg*阞†âw‚6‘køæž"Öåe·óÃEÞÉFBËÚF‚‡ú1CrI GàŽ7- TiãiHûdqv¶oG †B ÔÓ¾ÛóªÃïß_À={FgN,ÆùŠoŠÏ›ŽÏóÛáéÓþ‚“¢âÔçñhñroÕOÙàŸb}•®ÈRm],ï éVm ¦¹,)ÿ܆M%ñ¬ 1>šássЫ¦ÁßOÇh-rÐFµ¨‡Ãê%]¬Wé í$Ý.›© #µ?(3îJ°°°¢O¥¥¤Ú¶Ê†y]b 1¡O¢WWK¸{k†,4\as´-=!£¢ÚƒŒØæ;÷]äZyvô·˜öÎ/\›ƒ{Þ¢Ò=¨¿œŽ^caÛgf:YïN®¯K}61AÄOÀ³¶ac™ûÍÌ\hssª¾kào00Ÿ™«tžkú´·Ú¸½ä…szJMÎzgGo²Úw32ùX£t¶yv¼ùAÝûª °°ýwóý½çµ^K<#oÀ‡”v›óí牉îJ4ô„G‹Y{þ‚õ‚?>ìQ«Gä#áwD•/P¬DUtÌœíùp‹lÂ/$D–À¬%/5—£9111Re¦¢˜ÿ=ã¶•?…*È&)±¡€Ì-,pǸž<ÇZNŽhãü>><|ÉŒ êO%æNoï¡Å††V‘«ûEs{aæ¯Û1›)KªUž=j4_A²7éOùj›/,ü‚ÍÓ]œlWÓœTIê ̇AÛ,f›ÛÍ|íí‡CIyøVI陣c·µíkñ­¡A¹&×.Ê*§¡……¹švÚט°ðæ"–‡=]²œï“VÃèR[nùÐÑel®>.––”Lë §³e¤ ÒG÷ŽÔÁ7º%@È{nf%OïR¨‚ ßÀš*,œ×Ûr'ö÷?F{l,,¹¤¨ª¶h*•r;¸ÃyhöŠzZ´Ûˇtvh™ºP|r=ð‹~~ó†Ul6YTõNÜ[EòAL²ú~~gŒ21!]ô¸?£‘Êcƒãí=e Ž¿?aêkø}û#ˈ¡´”lùܱꊈ‰¯ È#HêBæ5 ¿üzÒÐV–)$aÖIšy`G1ë*æqØ¢=R‘siñ;<Ýxh®=ÚÅ?Z^.CmrÓÐÍÒI ÎÂÎŽo1Ë(–!¤œÈ]š7mùOªÏ:R–’’RÞôääÝtÕÕýIÏRooïÛ<ÙÁã9+]‹…7ûÆç„>/^pœ£O!µÅ1D‚B57“áÇå'гqt”P-k%¯± ¬sÑò×Þ;YãFDª om5 ŠˆŒˆ IM}¿¼¢‹€€€SÇÈV(5ŸÖºÒ¡Âj¥qk†ik] †ÆFbÂ@I µ½³ó¼öcÞÏŸÈpo¿z{3 ’ |èªFEýùùÆÖ)Œp Åí5k´Œ„< S±íñ©mg»¿÷ñ±1¬/½ž$åßÿ^¶‹Ð‚n¥#Mzß:Sa,@ ‚´Á{÷ƒîº1*¹¥¯éŸÚ}-š$×s>å"žàÚZ8¾ä¬Ö¯‹ŠP»"$–õõ=Àñ¼xýZ‚Â(1Q¹> µu/(ÜÃÿ§R•®ÕÒóôtôí‘L$މuÏâÓ5GVEj8>q wÙ:-ñÆ‹èð¨Ó~ûûW(0ád Ú–ScããÞõ·O¸|þüy-¥ûùÓ³ÅE­F?‡ËÍíÑìg?>^‰ª&rœØˆ{®¿=â8]ω )Çy§ò5L,ˆa¯ŒU‚ÌáW¨°YïU2ŸÁö¾»ÂÌ ™ãöXWØO¼-//öþœt —ÿZWh È–~Hè¬\“øüD¾—«N<ÖŸÛUj^Æ Õ:슈X®d28ŸosîNŒŠƒ2XÙ7á² ¢[¸~Žçˆßx÷yŒÚè}Ê$ÝÓÝÓþ ïç7fŒšÓ–Ssåk¨›ƒüpJJJRÔ¯§gßb~Íûƒ…ÅV¡Úµ21ÁÈÃÃ蛤Fj>Ç%o©öÎæò¨Ñêè!(,Õÿö¢0”4ðoAÆÂ¡¤ÓRÜ]ªÐà˜Ö•)šùó'ŒŠŠ (Pš¦Á¤áÍ/¸U`„[dTëN©ßI§ã%¾î"D#šÀçÕ …h<ï¨'?4¤Ê½H‘¾ccàµ1âû÷=)))ïL]N0Éí]]$““h±Ž‘3)Ü™NGÛ„@Î儱qÆ?å†ÐôÇÅ,­¾üó¹7Š 2xÂÓÙ 8;ßrVW·¬le¸énTw™rÓÓã=ÜYµ×;øŽ4ÔÄÍŸ~Ó“Ê}]iÕBÀ¤ÁÕÙ÷Ð!úW?¤}ü!íFwzšÃc³Js¹Ï™Ÿ¯Êa® _ÙEaÜ“ÎQàÖ',Œäú6½ksKêãpÛH¦›¥¦$¨Ä ÒpÄR¼¶v=¡j+r$£-C>ZZIŸÞ^ 8ÝÁ8Üѱ±èTT¬“û,,,ÖËñt<¯ÏÚF-¼;ü⸇|MÚ>ia_ˆøIÛÕæo^¿lÉÒµùº™‘ ÆEÏv›$í:^âT”z4ç Tôt#ølúä”TFm#eÉÿiRÙÈ;pN¹ÒzzDè$µAsÃ/((ž¡£Ó—ù!ËM£¸`êëímköÀ/óôx56nÇ êÅÙ•¯¬õ]®leágSõ»Š;hCƒÕßIjŒ¼p¤ÆÁe×>0€Z°Ë”Š?"bàdÁ‰³Ìlʘ—–Ú%FÚ ¬B#ŒË¢¹cç“ðÆs ÒDþÿÆ$G‘“·Õ:u…ÊeŽ(ªþüᮦ½38"_­âÛôhòúògŸ…†aQL? !±èoß@›CDkòUÈ;|A+ ###êìæäÊ{~Þ¿XÔÚ(@€qõÖÔ”ËLJ&.¨œb¡2V¶dMÏíEë)bÅ’"¥u.ÎÝÁdhk­@_„ìѼá+d)éSÀi!Á8¤˜¡]x³´‡v©!—5¼)'ìÊÊ̪çwJo[h`Ñ50Zé°X^)¹k‰^ÍÉ5П*©€ìíÈ<ï˜ùÜç¦X î'÷®ÞfŽÏIÿ+k¾äøÿ×eAùúÅÄй^V¾ '2hø, ª¦dµ7ú+³–Ìñ\ƒl‹9ñíñd¼Z¼†´™ ø´wÂäj‚Ò64´]Á^ü·n ðøÀ7RpÃ-]¤F ¨,õ ù¾”+óNRû;öM)ÞsÙefÔpo[G2–wLtŠUÄôœ/ Á4gúƒ$¢¥…°k{q$Ÿ[2W:W_9;ë`Ñ]øñŸËŠ,àpa°+Bá…ÎRE"÷+8.<·ºåß¿5yø˜}££…I^nùQ[¹]¥÷ìÏZ¯´k2{Èþ­“Œ®¿þ—èŸwqÕâôží‹”Æ?ÆABŽLÇË Ëï(¦»79þIE¥#‹ Sö ›FHœ‹G’·€eªZÔÞ^øÃ§r=—ûK žÄ72…©ÓX2@™¶Ç`idí[+MÒº"ÎÞÉ  È•jsîOËÝSnÌT\­6cµ< =t­ŒÒùV3¯‰¤^uûÌÒr„øC½Š¿Å öW[äóA­É¦ÖØX;ÝpNLúÓ•/W äË/ yú$?êÛ·1¹T[EúÄ+ó¢’/¢ëwÛ_6EŸ†»øÿnËéi•|u%âËË+«c0ਲ%ÞØŸ LüTßÏIOA›Æ_úÌ×þ4òÏŸô:BïÄŒ†:Ûœö—„ÉÀ¬tYöÌÍaÐ~\û²ÎÈ\®Õ_ Œ1œ¸Ãzgì^¾ÂŠÒƒX1_©Èþ» Nè/`E‹P¿ÌÕzD™n~@ÅÆQ€¸,05 xθƩÒñ2ƒó9¼àÜýýitÞ1¼ää¥ÉßÜòd¯“¾jÔ¤SP¯s¡“7ûbèd;ZhÙΓ ý0ÿ5ñG º1ƒÓÐ ˜.«ilZoŸL„"½èÓ# ÏI„…”L„ÊXG ©©sV×ûL>)(0)›˜Ì%AEü¡Úܘ‘ŠóM 7çËêÝ‘W@~á¸ö>ÏßšQ”.ÿ+ж{“vû³x^¸á¶Ë›“ØkÝofëõ$³),BZÓ·¾gg³éÏêO¼â‚LáÈ‘ ¼C³™$` ?¿çDʾÀ45CüžþÙ°êùù¼/>ËâÊÅ0¶,S:.ƒìç…zDÔT?-‚HóFôôuÚFmãm:¾B‡. `eó¼·„Ì WøFbÔºÅá|ã>ü㣺Š÷‹¿UóÏñë| Áä‘ëk1J`nK*8Ußßóž}ìkt¿A7›ôû¼ÔŒyäY^<ªqwbÁD__ô2'ˆèÍáT’%«{„;Àjee°²jä;F·f;-Ÿn<¿+gmz’&üuxH\n­kR”ì>8—Ûå[ˆ$± {üYlí¸Ynóóó|Sg»kû^êôüÜäõl•†ßŸB„,'+†¡HŽ®óoÇâj¨«s¾*Öø¸vsVcV_gÈ‚ý‰¼gP²é©ð88¾z56úñÌ‚#Ÿ¬è» )‡6ocºÆŠq?ì?šÉEýçÈ_ù¼Xö ©PÑ uG¾OB½Ê$6?îhƒSÒt5¶Fuj@@QwäQ¯ OÁ„”ìPk‚æs{R,¬«ïYY>ÊÅDí}}ÏÝÔ¿K„KÛ6iùD%oFÛ–hrý³>ëhrÒCî¥ß*LÂà m1ëNë˜ZJƒ´=c‡¦¨¤´r$\>]qOM ú+ÃÂ=}¼/ûbî$òþ<Ýú'Æ‘ëþ ¦B TT@#Úª-¢ƒ‚]ž™íÁr*1M \ÎÕÝÝcÒYà']½Ñ\ì?`é•äg´¹¼ñz"—ÄÀA¦ {‘ïîš–UqŠ\n¬1z!MýZU©µ7º:‘£ïîÖÃì5(Dgõ†HðË×z»Â‰?ŽÏ™©9¸qKH ‹ §ïycµß3dîñ£þ¸²rÑ"8„’ KþÏÀÿ[2ß6ìÏØ‘ÍU‹S€|ü¡õúäÒx¶2~z4Ÿà5»]¹¾äsÈÒ´"}W™.W"Ϩ\AB)õÆÕz1Â’ÄçeN1É4‘— @RÛžýƒ:;»!Ã80_ˆxßhè7½ÂTÿ˜ùnH;ƒ#aQN\ ŒŠšô~¡D>™È±ƒ‘*HØÛ«62FO 9pYÙ]ó¢È‹=„PRÿ¿¾/õ×ø·aGG#Ë\ÎL Á—Ól÷s'"1*ÑQ}ý,PF½Þþþ®Å&/ý…úO_ 7õ®­‰ß§nC‘’~(Ï妧ÙÄõñ)òŽn9¥eÁÃÃá*ƒb¿=GDdšµ^ïù@Wo¯ ¹Ú«’ãùK_Êýi,ÿg(0˜Ï9S¦°ø#4[@kÌ-Tä½ÄcÚÕÚwÔn‘õ->°"`k‡g7rŒK ÒÅñåb$ þf¿•öß>¥'V݆`H7$üްÕbËýq=à]:ÙF« y'þÔ ¿îˆÑ{z U-_…úÁx÷}òº¨EÐÅÍoŸžs?<”®5# PônòPàáMÊÒïù‘k˜º3mƒTTLüò²{ÅTïï{v”é°š)s—¯½òËXzù>­Z»ì×O}ÇjKÁpX,<.X Ï žÐï,A¬(û¥þÀ«ƒ)íÿÈbDG¹¼] CvŸmY­,†ÁÀàŸž%™*d'f«?Ž6:5ÚÉÉì}Æâ3N3el§Dsä ™u"$?/;º’–jç~×n2éßÐ-8àØþ Ý‹ÐÎÕ®ë~Ÿ×åV‰lü6³8bb÷ª?¾88=‘Z-æ¬t›t¥c1F÷.ï7’ÀÃ+• @(]­–C»»+ÔN<åáÃ?Žò·Â—@…+‚ G’‹’ÊÙþ3€ ”o™ïe|­Ën‘:nÀÀ,µ¹ŠqÎÏkÉã 1k:$ç±]§‡L/ ½ž'‹Ì^ø>kbÂ\U}¨'•WÕÝ™¿|Í=îøØ€Ã˜ÝÝCpyý ½#‰¿+Áû ís (ž×mÍÓ©À¨?ú_¦‰ƒùË1¢–‹îÀ„:ÿTþÓ ò›i,éOÅQ0°¸1ïi–G2 •¢Ýèè «Ñ10€Ueª„Fö­˜©ÿÄÄþýêÂÂ\yOg½ÙʇZw^²•vé¢ñv@Ï¢ÀeF²ÄµÌg9Þïó¼ÔÛè™.£@ÕÕeÿl¬Z<}FÖ„suØ$¦::DÀ˜ 6‹šô¾µÙc­3BäŸñ†ú;Þ©à˜& øO‚Å“9 ÃG³ç:þüùfµJ_^µñúÕê*öHM)çÙ?>û®qMSS<ÙŒí’{âÌ̸€¶ðƒôå‘%º‡ÇFº¸ûZ·‚ýa#v ÆG±Be4@äŒ{Sí»ÚxÜ.ó¬ •@RXÿ©ÆòO©ºëåÉ·ñ’'d™4šÊ+ë}¼¶üYY†;þ—z)£ÿòŠ¢„Á—õåã†éF^࣠Žá++º*› ¬÷x–ÒñBk¿9Ãølfæ÷ Å5ËD¶\_ŽðòÒ^Dôè¿ÀCƒsš"èª['øÙí\54­ÞÝe´ž$Ý/n«±Ñ’Ê0²èñØü²ÁõÎ'®WÚ‘J…𭃃õÓ÷§XÀGŸ¥ò_á@ÖnÀ1¿¥Ëüâomcâ]gçôï‡X7¤åc@„Ô›«~¤.K24V8ñd‰CÞ|Ÿ¡HÕÛÛ{ê3`¾ #'Éø~Þµ0é€}ŒûÌ""–T÷Ìþ@ΠĜѻímELþ¬vÈ,‘ñc’ ÁJHÜêõÐ}Ëð¼EfÕ>S!ü’=l¤çSy§tFƒ‚Õögºvvx§,±\/~uú<+±••:-3Ubuw§´Ù臉e)ev$ù;àØXÿTJg±Æp¹ ˆƒYÒ¸L¨¤³xT’³¶\Ò„Ç÷7%0;æÖ^)ŒZþŽ®\ÿéò|T×Óu4_+*Öc¢¬ì5¹ùg•VV¨’’8ö¦ð§z’ŒX>/¾‹¾,«¶üº1p @–L@ʯéAžQ{¾?âÕ¯_¶+Ëe¨`¤Ú¦¦²§ %.XXl8hDÖ.c4llh““Oýq ý_­`ý­•œÎ/¯¡†»Û@ðĤ«§ÑËåMÃABtƒ7¶¶ðžO‚$@"%ê•V66‚„<šþ ŽŠüo££ÿG¤|7†W§ W†ÃB~À6D>~”ÜçñíXÄúû5©©éO½¬Á:»«•Íj,bnô·Ãéx]¦¢”ÑmmºtÉ\ÅþRúx)ú:€|žì*ÑGœ`ó#ÿ”à ¿Ùîel ÃÛ7­JE:^ÈWG´íÝ›)À¶?Ééb½Ÿ-ðykˆ]µë9ðp6`çGKÈ»»K–+>ë{«?Zž”œ£a}éËj¬iiì÷§c[Ì lm©nñÏ÷M2Ÿ$,¶d¡“âéÿÐü¨¹Ï“uwÒ I"ÇÇIùrÙÎn½~6Ÿ—©UÕ‰úy)<ŠÙV—ADmk-R³øo…Rê¯]ÊS"!L7 "78eˆ::’Ý^>¸ù&[‚„dÛ¨Ú®Çürû6à«ï?GÊeïÊô ˜•ê{÷?9’R´›Ýë Ûgêÿ B_É¿½jè¦ ückhP¢X]©3âL-†æÁ»P…œŠrUrè¶û΃‹ßQ%Ôuú—sùÜΨ>Seeÿ_0d!éóÑ™Ùj ¿®Ð…ÿVˆ(ÿò¡RgwsûX<άDJ?uŒ@ÊüÏO¥çüD}Þ@*·G÷T+_Aät×¥4þ‡T¢±ïœlØYé±qÆ?ÉÁC |þ»Á@¨ð [»—ÆsŽX|¦â¡·A¤[1éÂ^¡Õøº7§žÖvxü²X@ú¸uf½»{NÚý·ÿ˜‘Þßwwtw#¶Þ5™×X†û¿+¶rd™Ó;ÛD,RwÀž*yøñìoÁxdÿ}ú.fm÷ ‹¹,ëóm‡‰B4ТzÇË\î쥨Á!!]>Ïk½„±n«:+MÒ¾ç©¨í«æäü¿­Çüß ¸ÜöÒ‰mÑÝn“DDq‚¼ä‡}žg· @€°½Uœ(²rüøçc÷ëý=3%‡=üîÄ(ˆÏ¾ð ³ðXCшÛAHqèý=¬åñöíPpÁ«o߯tMxÉ÷&ј/=‹þNBÎü?§`Ú5Ov¡m¶*âz††ÀC™\¯ª}’‰®²²ôNöJßÖºœºž—µ†j}jñt(ׯîÿý» ò%¨k=V” øÊÊv]¨OŠ»}©"ÓÐ(@ ˷ʶH‹_jŸ‡áü»`~§ÍÁRILƒ=Ñ7÷]&!ndt´³Í7½K}òjX˜e9/’V†“SIŠZªÕiéÏʼn§ïÅ9¾ôâ!Â@ئ<ûŸF@œèBNèhcSÓ×l*`u4{ÊÚšõ훯ø€ ‚HÃ×_13C£àÃSR¯s™[„[ß_+rXiK‚Ùø²Ø<øÆx›î™–¤X§ 7F&46;C•óm]ïdN†`Òòß##Ÿ:ög˜ ø'ñÁQ··g¥OG -o9!ÍÙž«q–©ˆwØè/ÐL~»=i Çr}þç»^Bö•ö;6óÍ$àŸbÂQ´ô"Ajfxʼn럒ÂIó~ÚØßuçÌKšÀ‚6ÁŒ Þ]> ‘gH5z¤“ ª^“ä°,¢uäø– ~‡QÑäîJǯÀÄâwʬÅ6?]ôÿ1/ÊU2Ù>…ýc^ì‡;??¾’´,“Œxï"=jôŒ^‚6õ¢ŒÚû4ޱòƒÉ˜EÚ¤ak=yYïbÔ3¹˜˜ˆIù™» UŽ Y\ñÄÄÅŸœ Ôj–õ]cåÎùžÍRá?FÒÿÛÜÔݼ#?R?^¯Yç·¿<¨Ö'Œ‰‹ …¬=:Z¼¢W.úJ§ (žYô½ÿé¹ÉkÙôFÿ¶¶$ý‘‰ÊÊMþ}n(!½2#‹c§U÷`ÊðHî€t‘Ž0AII¼^4Tª ¹¥%±õé:ÇêLb€vÓ$•  qOć›}í©×I_½a¹WæëÈ/3öÆ1 |/n™ÓKaëÀH`q¾~ÿo-ý{ðù~ 7¨À£l·wt Ã"TÄ+óñ!éûAÖ¡ãÉë³¾ŽF¾„…CÃã~9è@ b®ÿÈÈd}F&,7äÙ]¹Ïfk¸%êlç=DÇH:_k¥ =PÑ+ý|áHFÞ‚2œþ’ŠÕú×´\l;doq»•™™©ìKß–Q«¡Ñ–îr뇠Ïû½­`]Ce•E¹‚ f-W¿tÁ)Jê/|ï?˜ý·Ã#¹ôØ1=ôÿ.€š‡&.Ãm¶ C~¡¡ŽšÝæ{ÆÇ«*pÀÁmÂM'–ÓƒÏMØØJ1ŸÛ£AC«Ø_ZRÒÙ©(.ùCdwa²A„âÞRM£Ü~2S ™éÞü»^¶ä…!)/OäzYÙúw« ¯©? ”HY¨:KìÆ³Pg›b®;#ÄsÃþïΚ™”””?HYg“®i_ýñ úð8úÛ7oC¸¼Úýœ/èŸ!`¸†ØzÄÇP½­±,üÔÜÈwÿÐÔ¬ú\æÃ H©öž5˜ÔÓÓG+C£:ÛÝD$À |¯qÛ+Œ¬Fë/X¦ëÆaòü·êýw“7š²¦7œnÙ)}„ ­ýú„T÷ó'ñ}ã(5µ:‚áÑh€hXõ·Â°ÆÝxy±Å$º_€™‚)'' fk6ÉH2<ãyÕûAЍäÍÙk¯]xCä×A¾Ïr9«;¾< ¨"}kÐöp¼=fðr~²Û¾¨#ð8˜b_[_ÒµÖÓw30mjœ¯{¼\íÏ—!-‘!´'—-ñòoL{õÏ‚±H­=äæ›î`ˆ¹üVz£ óåDÀYë|ŸÌW,ð( m¬«{õÙ¼(òd¿äH7Ñ8]£¡Î•­ Xë­!”óC ^;×Òz=”ÑMn Á eB`sæŽíÑààSØ %…{|®tw䯰 Õ^Æõ³~éUîìz¹¼Þg’¯®tºÕÙC›)É)%-èýWLr˜Å;GQU4ÀÜ;9™²{åøüŸå)è¿k¸ò H?>ª”Ùèèéã@#ýñ#‚ª7&?Ý'ÓãY„¡u–*X¹&{]uõǯC·Hy¬¡ÐI^yûQ¸]ý¤¤{‡³» cïP!W¬Ž¾dþø!ÀR¼0?¿¼¹I㈚»µç†Ù&~|X­¶ ò×aáVÑ_SS­Ÿ µ´œôb"«0ôQ¤WúÌ·›b6ešåzñžÃ8J=ßîׯ ›5 4©\zã¹KO·fC÷Ù–'JÃ!¯ÄÜž+§U›c J©_œcRRdMb®:”ÕãÖ ‚®.;Ü6J#BÈõÖËØææž]m¾ lN–Êø$.»ì‘yvs†,ûN¯@[…†ÆjäçbÚl× Æ\z[€Ýéþμ„\E¤õNÜ=×' Ç·Éí¥N³8ëëR#¿ :(ÓœNVÅïo¶2¥sç98¾/ ]ìá?nåн­0,ÕýUÒúeéG)iF½½ ú[LLl[™ˆ‚¿µ”_)Ï\Û$.5Õ›”?«ÌãŽp}}]·õë$w ¬éÔ$.˜•é?…Y)æ§‹VûÖ8%è "›Œÿ@»¿¿µ½WÛ`×§à¢þ«mhˆÕ _hQP=s Q§ùžÀÕ••£H¹èŒ—FÎäªj-ˆ#ðLç´;HA€Ž„ý Ò·‘F˨Y왘h…,góŽáÕ×ë,Ö„ÆÎªÐ]_L½ p&<˜åìî‹ÉyÇT®%G——¼äEެ2U5ÝxÃѾ÷½ÌLÐý:ùÇÃ;Tåwª TAÁŒfsüßóûK)ÛO nW/AšF^™—ç«VQHa²DìÈ!_–J‚ÄeÎãÁwð—iü’m}}Šûªb9bŒŒ»ºÝaÌ×5/T5¦ã”<ü5·NÖ¨ ˆ”U¤æÄ Ę!$W·Q¦ý F„=ð8ƒäðŠÞìî¾Umn$š™™IãÈA­«ëÄf4DAý2WwWÑ(Œll£ÿä%6î°»µÕ.InK|Ѽl[¦:µÑlêJ++Æ+Çà~lf™¿îð 2¥ÑpoßHõZœo—ã•”ìjÑ€^ôWÈk\Ù4¤Üâ†\ ¡­íÆæ|Œ 8DçDÖ6oqYJz.\\Ü"Írì`ÔÅÅÓ%vn•Ry šù˜ššê/Ë+Ttý»0‡üwKËCrÁ(òýƒ½ëc‹‘?D@v€i\^ÿ‚ ^(£Ï;ê×€¦Ú'/¹Å${ô‡ÓÙŽ/.þÙpd¨;v»[ïà #`[-œ}…öp]ãµu31¥G‡F˜ÿÚÎzXÈÞÑþ¬ƒl‰E‹{„RAÚî¯Òra@kÉ0°yO_IJ¡lß"=°6™+c‡èóp¤žä?++Ïô ÞŒÚtºþ‚c¶R-hgüªc¾‘¹½Ý°uj àQg„äËud­µ# ËqÓ夘dB8——º"^&ïþAf`¤¥EÀ¡yÿf¡ÞA.W8FppðÍÕÝÝ]ÇŸ?JXl-Ré×±IìFžÄn»§§ tO¿ýNq"P)ŠÖhHJâ…ú*Gß[<8æ§/¿Ò“3,wî¬ûüNR‡‹+‹Àùÿƛó¢—rIñß¾+úŒþÚVýµNPïÀÞSgWQîzñ†€x/”4RºwoÊäøt6t±i*Ûñ€%ÅÛdœ/ÛýÆÊ-i–ÛjñùítB¥€Éããc­ÇWee%«ãþôý¯¯ïÊþ~QP¢õ°§{ÿjWh ¥‡/à8¹nAW{7Æ ••É  ׇÖUªÌZ¿§¿O<ç !+ .w80 èíUýb´üï.Ês?ÈJ} d_¯ ©Ò´ 3…ËÂÍ©üÜOw…ò,rÒâTˆ0è$µ~¤ /èéÑ U0ZôA.ÞI ÿ–¸3ž¹[³»»›Çv½Wr þÙ³¶ÎN8NÓ‰V?$œ¨´¯»ˆƒÅ& €|¹løj«¥ô§‡¢"Fg—·::äU¦ÚsÞÅD¥¥… Ã@_\œlf“¡@Ñʦ~­©á.**úÔàhQ¤Z³²²õ5'‡ÚØÌLTAA¡àî„÷I+Äæh±éú°áèS¶Z¹0YRRÒ ñSŸÄ×ôøûû·Œ` ¥¾ƒcdbÊ,(醴ÔìA^y3\OÀiªøè±³³¹QâO¡ŠpÒŽB$núÏŸôª-ž¬ýq @Õ› ë,¾Ãã‹»©ÓÄëÉᲘ…Ô<Ô×õõ/ù'¢œï@A(Bè@"èÊÑòêEL_™Á^br²ˆ†1""⫉an »Íß}&|Žûª_ p§[|bãOúFGŸÏ̸…„à2Áþ¥ ºDø<’'ÙI´j/ºG”¹ßØP¼|©°¯JíS[ ‡ƒHŸ‚ÿÍ !!ïKWnnî¶ÁÁâ‘õJ©²Š ===¿ÚZž¶™µë+N(Ÿ¦¦&ë«C­•Û‹=Ÿªª*V¯Çûû;‰H2¦/_¾ Þ]áÿT,øæµ¸?Sáy0‡R^^.bn^4ÒìᦻØèr³õ0·áq¼ì•tã5üÒËË+ÓnkÈçb{)¿ßBƒƒ‡ðã^KÝÓCUZš–'¹zµ9äβ›+‡Ãyµë³aaÿÊJŽLåbõöÞh*£át$·Ë},{aã­ ýH2AzÅBå½8po1/÷g¨À("¿NÚ™ºPÅ•ó.¸>œwaæ0ç½ÞH ÒYP6Þ¶/Ø×E4|y´ô4j·aûÏLex=ªmO§¼@ôÁÄÄ|±½½f¬ˆ½}å§L‘gTTk¾{VóµrÆÓe™ÖûÓl+ "RRAŸÍÍ¡®W×~9Ÿèe~Ìj¡ýèGÌm‰¨¬¬ÜjyÉ+®ú¤@&!®ý|çnc’쟭ædáx{Ô¬mέåSé"GÛì­WûdqžQ‘f¹~4¢­ÝËöÛ‹LŸÌû¶6Ýë~}9ÛçáêTTT+ÝáÄ75¥:-£)'S%Z-;c/3õß\ zÜ*b½’Î%O*Ó툜}¸ryº¬ÓŠNIa(ÒjPf}ý»D§…ÑçÅù褔¬¬ò­çýÔrÚÓ¨/<ÚéÑÝUh†œ¼<”×Iïyœç%îíŠÄ(±@ÿ‘E££Õàˆ‹Ç¢­ù¹ÄkèaB_‰€Ñ>¾H4^Áïë×B?²ÖÇL‡üöNyB$ïµpÂÀjâsRR&Å"U¹ÞÁAܲiôû¸}€_h@ž—"ÎGx;Œ~ Í¿ñ¼^#²_¾ä@-‡F†FGGŸn ÜÏÄö‰Ž–ó~¸+ã*Öt‘7Õ[¤æùÇÏúÃ!‘3Z¾Á㎷±ñâV©¼8â¡·Ëû33ÇÇe n‰£yZõ爲²å¶¬MükÁ&eeù´ŽE".§ëHDœ¦±^ 6kÝä¤ú_¾Ä>U#¥ ºÅ{58ÌBA)ýÁÐYm‘íøä¡-ôµ®Ž—Y«rÌ¿£‚sô/))‘¿êèéA §§ÿ$'÷vo²ÅüÊÎÃùæÔàñ€æCòºWZzzD³Ç]Ñã““›ü4¯%Q06Û#$^Rpp<skðQPYñö|× ²ûj1›좴ïH¯2 Õè–@Wjœ‘S4¼ñ‹FMUõ P•f-‘/_¨]Ï·¡QPPÄ$$ œïn»>’\8 7wa©¢¬ìÕÄÚ)pJ ¾MM‚é.0o1‘÷×¼â~œôÍÌô=Cv+ji@' LáÖE225…pìéU7”ÆÔD@@àE£Îœ×Óƒ“÷g (©›NŽÇ#QCCCãááù¼5”ÆÊÁq¿Ü÷t8yÒÁj'55õ PÁk=‘,k¯G^üNdƒÅ êLãwirs*Ònªo}¤ë¸^ß6öY^ÖÐëù{Å¥8¦Q—&%eV{Œ´D–òpEŠÕcž9]…‹ØŸSÅíÅÆQðÍvB„èÂ%ÒÑ¢A鬸‚>#?¿FâkƒOM®mÓÓªÇWWøôÊE‰^ÂPREn/üwÿ¢¤§§‹åôxº<š¬á“——bíöÎ’¶¶öÍV]CÊììl{G †°Û~¡J)Ô³Ç=Ð IÛ’o3<îª222Žœ–ià766úíïïÃÜ•é÷ g‚±½ë&ÈŠDJ”1átçkm|~üø•œ|ÛÇè_÷ðr>[AŸYs÷O M‘±üº]®|Ò§¼¡ ½ƒ µ A¾¸‹:Íøž§£E¤ÝÝÝöv”go1ýÂÂP35ëlÛÃÙ‘ÓÅIû;ìM"}HæÀ“êwÔò¤Íc·beåxV—Ó/€Òtò5ë~±:/ßÛì´<(œÐ1î—|*œü²²3þ¥®úož[UÀòÓsM© n}ãÝʑ׳ÿÝŸh«4Iûl¨¬²oLý«µÕ,‘sÅØ,¡g,÷ÐxiQu_ŠÜÆÉ êúæw÷šJ2¢u~^ÀKYöý{Ôzǃä–Ôï!!Òå†_ã*a”ÿN$>99™np*)U˜Xúø­ô`.›Õ«YØñ€(<‚4ÅýÆÏ«¼,1òdí€ÍðýeÚÖÖV çÃ-îíŠrú€A.ùéenøû‚ ÈÚ¤9ºá°c[™îÁú$ó?›¤‘f÷ Ä$%¡gHUZ6aŽçú‹ BÖ²Ý=U×ï»!ë„ë½ YC-P`—6ˆ®àJå…ýøñ#5 ÍêÍÙV"¯¦–¤qÁÛ¾dâç'†2À)6×sãòµ(Ÿpnn³ûãËÎZÜùîð Lâ;é·}Õ\˜â<{çj.kcòÐ54¨Çÿ.+Âÿ]CΕ–¦Q.@2ÛË(w>‘ƒ|nc»jƒ#fó]Éé)1ŸË­Þ2ÛÓ6H‡ nHÂ-äeöü78ê’¸­ÈâÁØPUSËt½ØMä¶Ò~|Ðï‰ÀeÓZ‰‹óŒ­DÁg^¾;jé„6š)ŠP¾ö „éfã‘ï|hgoÕÕ3‡Ù_I¾ÿ-óŒÆ­´H a@Zxý@&RFm}Õh¸›‚]åߤD-©Yr½XBll“åòžYÞ1øl‰™LS% “rtÇ×'ÄÎnG=K^­‰l¤¬®F/g-bYû®˜|rUaï|²JÊç¤ YL;!„ÆÅcI?›ÒMòÖÓó½9ÝõoV–K(y‰šÕ7U:>’Õå~}ëÚ::*VbóWŠÿ®.ŠÅ€cõùù‡°i (7ÍZV„ÅE-ÕujM݆:FmAJÂÂdE²Û¬}%”ÏŠŠú³µÇ²´·Ö]&’6þËv}SÚú`çY½äzÐÌ(^¿–øŸ³÷Bdïœ*àv‰—Â-ùùhñ,ŒÿY‡îÞèê‘ FZGú—Ø8ãËMä++NlŽæ’ÎnNu¶î3"bâÑØÜªQ<y¡>¤µ.6ïE–ª”™NMŠ+*2éP¡ îþ™l!ûwUûu;_pP~§€Ë)¼ÝY@ø`)Ë)çm?³fb(‰êzŽ»·÷ÔHf‡d—Ú‡ÕÍÑ)—Áv±ùÄÆFéx_M\Ll¾c á¨3ÔÜt"ÛÁʦa8Îå !¡Ð~Þ¤<×ÊHÔà¬!›?šš0éÂ^ ÿ®&~ÃÙpŠ Š•ÿ›²Šûø¨ò©¡šy?ÜóA]‚ÆŠ!Ô/s×zÈ1–¯OR8ò9ñ­ýããmñZæ]¼ýà,òó x¬Ù¡ÞÈ „…_Œ6ºXpX˜Béë{pX¨£Ä1˜§ÆIûv….€D#FTëí#ÄÿÈË—Ü>uE’.ôr† ëËh[³™_œ`bàÿ^òÏ…V}ÐÕÚ€1­?>¬ð¸_#qOv„à>Œ&àNü©ûåñŠã½±éJTTÍÓSø»Vƒ„žä-½„Ä-ÔÛO}OÚ††è%Úa{SKG…´1HPPÆÙ–ZÛ{f™6kýùêU"¶}_`=ç5M¢‡ÿL(–Ûäçç»ß,—¯ŠÃ›NNÄÞñœì«ÁÓ«0JÇ­7ôìeKš8_1#ÌÌÈKQ¿^ßìŠ{é-Fù‚V2dßœîôtÑ‹…V2 ±ñj)FÚ›B”¨mº6Dóìù$€T¹K-¹’Ït´I…„¨ û‰Î.]“ÅÂ7î컸6ÇŸ9h>:29 “𼈬¥–¬«“ðJ÷ž­ª’+!†ûÑ{RàîâPi¹€™÷±ç×?ÛWŠïÚ±Å'}@Ü›L1Þ&…ÌÅ¿«à¢JJåÏ°å… fTk/÷y1ððTë'Šßÿ¶6ŸW=йzPX¾—”€³±¡ •†Z_ï¤âÑ¡¨ãà€¬ðzw htvDIo$ï,UVÏÖ­±‚N{xSb±·îÿÓôÙú& %í–Я ò·”7§Ø™:–N$ŠJ o0á@É@Á!Â|Ï:myhþ¤t<}u6|•pµ[Èþ\%…ËB¬ ·H–TË|žÁ²û¨%p-|E@VK WÐM§ñûäuÅ|Œ€™Q€‡Z;9%8™ßJãÒs”Xr#ú º¸”F§ÜÁÕÕ ƒ/0>Q Žr¯lÝU°wïþ¡ˆ’6ø¤°xôÏ ii! '`PQRÞþúß;;ª`]ù Ê´ÂÞ*Å›&Dê[ ðä'FÙõËàÐÚÑ’Æ‘ºîW¥æW•Ryd‡¢€"EEEVGsðKßås‘‘û¨ãú?[ ‘÷õù³(ÿ,,„lLU[W[à²p`TîNÜ•';øfüGÕºk¸/B6›Íªv~~ã‘‚v:*§©"äbcÈ]°sÕá!UøûÙ’¥l®•,zzÚ"ôq¸·ZZLóuQäP™0³Ï½ÅCaÊõ{^ñð%?wþ½ÐÀ²²\öüî2\ôî²ûejÔú;Vëe1‰nhÌï€ è•”Fòå>LÏf;ìüTÑ^n¿VsBYNˆ~Ïïâ¡®ÿmÆ•þ³XY•Ÿ¯Ê¨åJ’ÀÒ³…Ï“–ú¾+B<ûÀ‚†Æy~`ÙÆm`Q¼tq»£x±Œ Cãñëøè°kc PÿêíejÄ:ÓË—8èèQ‰‰ÈÁ댟4Àä+¾ž­2 ‹g"nB¼ØU¡+·­øuK€nú.&õ¿+/u‚ÿ.èá½Å„¬Y*?[›­¢-«â¨§ÙùÞÒ••M®;–ãÙú Å»ø»]U ¹ 2hnW/õôuVÀ”€†|chÈ J ²«L@¼×1­J~rò½YiÙ3ÑÔô'¨mã¹j¬Ç+a•ÄäIær!ͦ[¸…úâÛU‚·gÆa”Ï}òúy÷®¯s$S¨ÖvÃæÑ¼íçèÈu‹s5„e>5Vã(Œ? Þ`B½…Jæ. /Ñ­È{†Š†¢"Òu}Ò°÷aFäWrÙ—`bx KýæO3 ´]_¡SŽÏM^ì“_~ß Ò›?%¥¡§cŸ¹<úT©°x$™Ù‹èÞ㺧………oiÜt®Sùªp~|<Òô¡!`¥/†›ÇyDá_Ÿ>ƒìrdQFK@.øá4ÁÄOøÊ¬õ›ÕäN2'C]F* R<‹°÷‡”öÑæ&6å¢m•B»—9dc+=52éV :#*öܳoª?®êó—àVëŸ~¡¿oš­×uzcq}£Õ>Qp'ô*¿ ¿‘å—ñ'س­«ûõo±!ßZ[ A1­Ç LNz#þìú¤Ç2‘µí­®(õ‘Ò¥#çkVº–Wù?úX.ü.w9cõ×â¸'ƒÇX<¡„9~4z…‡wõœ£`ä€öe®þj§ Їõߛ٥¨åÿ½(5íÃhý…rR—tÿÁÁªý^5§Ùnë°Õ½äÃÀssOÿâb¬xFº—}ã‹M[lúÝÞ,r­w-´^œ;(T`úúñ¼ž ×ðÏ×U ÎÎn´¸·?é ­é =ñ|m©Ê&‘£—ç(xE=ð1\g2>eÁÀ)x¦çWC‘>i]äBU‘Y‚j®H`¡ª²ø¾—;#âr>Œsd,‘OÞûå+.%í<¸ T›4÷ì),ÝpÜy oýû Þâ]11DŠœ·ß¤rŽ/›}Iù}¢¾ÂeK^uzÃê|í_ã#жs:ú¡·Ø¸Ö;ÄÜ€6”ø:—|*ú 2Š8Iå‰÷ïÝå&ÜÏ·éiÈà¤ñí€_{–a…ÄÎ.h0Kf1Wí|Tî"°€ìÏÌÉ©TiúU&!¢µ3˜üí‡UC³?}`°˜51—÷gø %sYøY. bâ)Ÿvç‹106åj·jñð‡†}¿Ç¨ "‚×¹z¿ŠLôi¤Êì dð¦þ£ÐNˆÉ¸P÷É÷R"Ù©RXÓ«ÆMÞ_ê=S£&8´†«ËmŸî}1`sÆž2$ÿ>Ä@àwÊÖ×ïßUážu-/·aB >±½­ ¦#À!0^y¡h\ú¹L¡ò õõ1*â]ÚÆíôü·”””–wo‘”‹o‰í¶øZGÊp%ß½³H¨#oo—·Þ|Í?õ T0çGA¯š(¹—9r°XHYY 5†)›¤BþUÂ[Ñ%ï×/[g·¥¶¡´60¤ø“ªõöp|N–=”[ÔØtŽûbïí©R”j‹(XXKËö„¸8*^^å^w^ù³ÇsÖî‘FýÄÄÊBV阞qÑžˆâÌS[cN\üP]Ó]h¨‘ s?”@½î0o Û‡ÂFÊêôo¥¤`Ü=¨l¡°ƒŸ_^‚`AÞßùþš}þ“.9''ç±óÁqùÒ„Iùz†×7V‹Y+ÌÐÅW?ó¡Z¸H©$ìK+Î`Y&ƒÖc2¢££uL(ÀÔâžmžK÷öö*ºßè~1–TSã…ÂÍ/(h–;öõâ㣇ùü¹¯F ÙW¶€tÁpVû|È]¨>ÁïæˆŒ^ô¯œnð¸ŸtY©6¹>o¾Ú`g`°AÀúY0•­çöbˆä%uUA¥"Œ¤$Hކ-D游¸€·P¹-‹¾ÆÇÓ Åù¦-À»ßàÆ³8­ó!ÿ3èë°Ÿ ëéÕhb´¶\"ó;?#[À9ÛÂÈ%>Ì‘–WÈh<àÉÊ?^pÊ>þ£kªÉZ„f/,̼ÏÛR1¸ä½o]êž™²rYÞé°)¨(ppþtu°•Âu ¦¡«ÑÅTTÑdäÓÏS[:JJyë[{w÷C‘WŒþáhyx/Z§Ë¹ŒêWo„o¾à`ãèÔ'íñúájgùŒ‰AÀé|[øú°¡¢ÖÅîålUŸœˆ|ÊØøÛ—^CDÿ¬šËýîsP‘1Æý{eæIøzúäS5»ã18ÿ<òi—‰ÂOñøWëÎa:ȣ࣋æÉòiJR!·OqcË$¸¾UQAq»’õ÷÷÷LK¥å¿ã…ó±ƒÜô+ÝFZæ% ï· j  ýã”ìwÆJ„³À¼%jll_ÙsÃçåõ_>9_^#ªùóç§}K“‹þŸ0(´Ï³å×§Ég5K"e†áÜPŠõ—©¿Åx•Ô,Nã¯ì^Ïòý¤™˜øZ\̦\J†fw6›$}5,l¥Û¾=_Gêã› h’‘еÄB³‘ Ãv¤Þ•Ì]h ;Ã]O[WK5ëE(¸Âèhy‚NezÚþ›ÇÓFþÐãÇr‹9¸C˜oê¸$$¡,Í׸¥ŽIÂáž’”—çâs4÷eÒèÎVa¡:¡gµ:â·vŽ˜ž¾˜HÀþ;–Y­ù#ï)àZCSrh?.ä½H Ë¡-¨nÁR.ðe7¢du±Õ¹?î Zy»¼fh$œþÛ]m",¸ïM9Ô÷— Æêj„ý?Ò‹¢ƒ5e¤z}2t¨‡RƒßH÷ã;»ZÛþêÕ¨D†–”¦¥2%¼¼²$äñ~—ã¨@A7Qø©Ó­†}¼#Ža`—c h’DĹ˜¹ùsW)ÐvæóÛaà00qãB8ͺ'Ô±®G³ó¢¤s9ÉÊowŸ×p[Ñ@Áã6ñëp_v6nøº(êDÞ3 Í–ô  £­öùû'rj^·KôÍ!Á€P|üL nXt…o³•&ã.û³¸¨ç]Ûw›ƒœ6  žã'èíȳ@~õ]Ì­Þ`ò¨ñdXˆÃŸè4­¯é‚SËÃÂFm‹‹a{<ÿØ\QädÖzåpy²þºsÕPê~'kwŸÛ|2í;RÒø#—7Qýý)Íç¸VÂMp WoÎVU$ ›_™vw~yÁòjdÒ’ž8éÆvWMFÆÞNŸ›ŠŠŸY¬c€uttgdÊ*‹ªhyý‹Ö–?F\||àKYJjj,@~ViÌÊ`2<&QødK¦Ì1ÈÖ?÷F b†¾ü¤ àÊtý+‰Ë£Ÿ ¯æ¯m¾ƒ lüø2•0ök,ü„àÚÚ©÷¿%45iNÏtžsÌUš Û]‚ŽÆífð¬T°²2yB2f]Ú³óñÆÙÅŸB@àÙìl²µuÙW02ð¨¬Jµ"ÊÆÆ”Ê¥B¡wWmª]tæœåæ3ˆ¿ÓkíHùž‡Ä1vZ›.·bs.ãí¡{gÑ7€£×•¡k¹HF+ûÛuíf~^¤HË =ïc`G_—¥}|!†aoE®ÌG !¡CMÉ™k"9ÞXÈ2'[OzW‡ŸŸãÆé­v6[ÛŸ.®>§(•ù8Ü3_׃I˜ÒØñÇUQéIÇ™AÒÖ–Œ,ÎÁÉIRPä°˜º:d…é÷ïÙŽßûâoRúÖ¹¸®I-¤éól“µ²…ï_¨²–ùã2Ы¡¡&ȉçÛžøÆ&ÈèÕ@×Õ=à ¦. ;TlÍÖÙB‰öýïZý^ÌP×áN‚ŽÉbhkÛ]hvö&ît–W˜º3¿xœ˜±Çóæ@‚“³}p“’ê±¶.£I–îÓþGר'&ü2£òU`Qѧ)ÂlÕx{B…A×¾ZÅã×7Q *ñ™6úJý–@+6þ#|‘—É x•€€¬(%]ÏO%Yk›ò⿈@ˆàVW'ÇþýD[¹Og³EÁ¯xÛM•|~ŽʦÛ.™È?}0[µÌG$÷¦¹9Zµ~¥¾^}ºÁ‰UÌÌÛzsÒÁímû 1ƒ=f†(™ejxxñ'‹^à=ˆHï¾–ZQeà¿¡Œn_\D¥’TïU/°l~|p‚›_ˆì˜›#¥ @šnºÃî\µ•Ê•÷ó/ŽÿÐA ¬©ÌýÆ$1iGw8½¹<àd´î¥Ê§O>:^hmV-þ_Ùè Y5—'|°“”røb Øóí%­ÍŽ< #°0 ë›x0Îw|ÉÊʤ‹¼0¹™ô, +Œ uݳÅì×.ŒÍ'F#ŒÔÌw²8Îj¶ °+*I-4@ÜbX([[䓳á-,¬hŸ„„~Q&::„’ɨäÛçÄÜõËî6¤ýbY¯ýüÅ>F½ÈŽŠ» !å« hj"¼v—É%`›Çôî¼>¹c³Í᤼Þro‹¶7u°0—•ÍdÀA¬Ý ãç“ÕçÓÌBåðöõ>f¯ é§Ç=6SE FKº)¹Y›ó¿,¨yqñÜëµÈ=0i¯ûNºða—7¹fg—©h£¥¾Fvv2"™@dKQ‘ð T2ÇèµÕ—ͧÐd­†jɹj‘k8 USWÌàŒÛÖvÚºr¹SÓ,â<‘wݘu÷&¡4[šanoCøÛó+}öÜOîŽ2¯ïíˆÍ§—à ‰ìH g±±-oᬓÌUP€}¸Kñ®ÑÁ¸³ é]+¾Î}›¾+xA¤(iB¡{bÂZž³GÏÐb¥Š5`˼žpAÝèÄŸ(^{†ú£<µgK~´Þ #þŸÿk]:tòÕåT~'ÄÊJŽº‰uEÇK»Î.J®Ë§=cCQÆø7ZZ¸44ßKJ|üüÌ!1.…«î»ÑpÇë"m¼ØÿpLÀ–!ÈÐÝCþäGȾ_fmû>ÓÿѲ8Ew©Ùd{rðëžg|zz$#,ÿfSØÀ•üss½ÍC4 Ñ5%©l6¤šow_Ð|< Ìð$ B äN¬\lÛν4mGi½½Ø„ʨ~ޏ4Ü%ÞÁj6I ltƒ/~þúlXCµîÔŠšÚü»ÜÁ¿öbaAߜՖç+¶^ScÓ[ãŽû'>q‰°³±¡ÈÉôö¸ÏÎ('ëŽfÅEÈv8-…·«è }‡1Â5ø²¾Öîo q&>>ÒÛ[&6=?ÜÔԢѼH¤©“Ý…ŸJ^kóu ×[JÆ‹š'ÂÊ4Ü5˜g›i­ÂOÔº}ßV¬H‹Ž³·¤¥;k=„ ¹‡À+ëkSXTRÓàf~¶7²iÂ,­Ej^Ë…¥ûÿ{_å÷þ­½”v‘,•È2û[I– Ù“H³2af˜»TÒ"KR(Je)’RÙERT´‰DÙ—¬YÞóÌÐÞ·üêÿþ¿ïõþ\Wyæ<çÜç¾?÷}îsÎ<Ú æ.sìù ¿h]]}[à¦`]˽{÷:Š7§¸wiµ»e½ÈâLñ£N9Ì ÀõæiHfÇ›µ†Óx6ç?=©ólu•yu¬ÌŽõ™ ©’Xì$"xžP¯0 ! ¶á7âxê~??u9¹zòœ‡p¥Ž×™KE Ûõ´¤¦¸¶™œŠ)]4èµtphJ{'¿¦›ÿµTLMõö BB[g o¹ýÐ-™MÛyóV}ÀÇë½/âDY äûž±Èî…ÎLT‘^uÿÚ%c™‚ëžï§óûkÊOºæP¾ÔãJJÛ_\¦Ø-‚¯mZr°üjðÍW¯&€ÒÌ/&FZWz£ü*ëL²ALŸHÖÞ½rrÛ…@½ªK˜Ü¤h HKìIÂÂ2ù&ˆ—ï,±O¥öóu\øøvÙBð†ˆÈ<Â%ðø£6­±qÇPzX¼xRÒ,Š=-·)>ÞB.ÿeêˆóé !@«/­‰ú‡l*Ò?u{aÀë£G}7†‡Érμm}eZrœµPKKÒáµú ßi‘,±„Ò¸xu-]]If÷ÕXã}Û®@uï>¦ ë—Nb!|JîØEò37†Ü80ïÀš4ˆ{—oÔfŠÞ™P($‘ç'±³}÷Â*‡rä,VÛªèͳ£2yÐú ¨¦ÞŽ•º±'¸¥|†EÀiºÙJæƒã¨¾ÀÇnëúU}¶NŸüþÊMª—׊[DèzÛ*ÍÍKê;‹Ñѹæ¸õº…FsgrÔö€˜èð=Ø A–1/~žEô# }q, I] ä¸TS.#Ȥž¦V{{ûžô^k½húþçtdS²`Kp­ ÔÐHqÎɸ¹0}h€cÔx3-GÅ«o*TÞ˜]ˆzt&•då>Õgè­ÿ„IzPЂˆO˜‚šßáÃëôNU Ù—h_¥ÞC¥ºqÜ<¦¾µ[MOËóO¤ËtDºÖiäÈ1[«Äf1 ˜±@}Ov¶fêÌ-놯;¥’ɲάUq4zòHþí…>#+å,Ùóµµ™Õ7„ž­?‡=ƒ%˺ùïŸÖ´wdÎz;5~ÚÌ™“,,®íÏì?„ÁØ{~ Ó&7•ö¿©ÎŸ«wüÉœ¦Ò@Çö&Îõ 0]ßðÍJ^Þm’Òçæªž·²ò((/_¨–UQ¨½º:tÜÛ(ju mâªwv_hš«š¿OàAß`W••N".X\mˆaýP¸2«›/ñ¡™6Yúœxß“U MéuÊD_§ «-rÑñ›Ò5- ®æRžíš| Yû²SÀ€—îXµäÙ47ÿ zîÄ=úwBJ­ŠÆ0‰‹ƒcG8 öÉ7—³f€bO/ê…«^ù´µŠ,SVòà:ÿº:Ñ[·rVÚåöÖ­ŸÇ·Æ&oùXP,Á h31©Y×çn~5²F[[ËŸ$æx¨k…>-ìæµoqðžê7ÄbN¬GmõåÅ Æ&mAhZ9Zï8 Æw§Xì19wó2§I èáüÙ³ÆË¤ëM-6u< J¨3ÉÉü B]F.Æ$Ì9º¡üéPÚäë<– 8À‹t†H@ÀËgžSÝþ4SèlÍ[Á}€MÞ:0ÏpíhõVE&J{¬óßÝš+’%:uêÅŒ ‚ÌÇ'—DºNÑ›ÔV•p9åý-Î2ÝeÆ•™]DÿŠ™B“u hEbïwÜ•¶Î¯ßJlßÞ55[{»µ ´Tp_%h©fÉpò·o/š45b­–Ÿöñç·ºêo7”µI{õ¿å“³VÞÓ¤ä\{7T²$ÚçMÞYi‰™‹fÙ·K-^0ÿÊ\QQß7„×­‹=m$ÅLÏpD€îkæÛäU\[*+ƒòKôæ¬_oïqÙŸÊ)ˆ4?az?odéñÙ¼öºõKÍ/Šø|Èv¿¾*Í(((˜yðà’%Í%yuÔÂyÜå:…òÊ>‚Jo£ÖIÞö†¬b-ñÍ¡!! wîËOækhÜ‘¦í–3ü¬®ƒý¶ußöµkQïLÊÌô{‘Bš¿oVJ5ˆF«VÎ] ƒ‰ìÜi­YìØ‘XÝ%_Ó\¹Äw*'.22uû}F”Ú’ÝKpægµd„¬ @ˆª û§Ú?¬‰ V&•%¯ô<Ž(ÎW÷v¨Päöø’-νJÏÉÞÞ^ÎÕ;QRTŸ¬zñŒøé‚V9s_>Iš¸ªºY¾½6mU'ª'GD¬¬_Ø JfaÕ>ÛÉSä÷ÅÅMøÄ ̸ܠæNñÄú4Ç w@i_©´UÎÅå|ú²á^À?µwh‚¾L6T_ÍžBY¹$¡üBxÈÚÊe=ü¾û‹hO™×Ñðö±'Æ3Ö®_ btWý”ú± Ûv•”ØÂávË#ß”‚\Ëå:&ëáÀã¨91FRÒ%gç¸võ?x÷ÆM?Ÿšá!0YW©ÞÆõMÊÒ;eJJÂj‹$VÄ®÷Î }Ày‚$w‰GÍ3õFÿÚ¼Âà6_­Cû0çφªÞ½s§èºçâÝ;±=Hr>»ò+2YÔ.ˆ/Ê l§ÑøLL¬ý²[ÂnžÕò©ysÛ®$úaÑ`¿æ±ÖwuGÃ7BµàÓs5µ,!À¿”óï&L+ JÕh*½r4w¨þ¦åÔ߉<aÕ§g)tvx›EÒ÷O[Ú_¹˜æ\¸uÁ¤rßþs§×/lsàµÝ¦‡ ¬òvJØìì_(LT”ÇöÞV41,'x÷¤Í—QŽ8ÑH¬H›ÑPõêp“Eꎒk8êiA¼¾ÂgzÀÅì)@<{¸ºV–é ã-G—[ž`Dz”޻מ÷Þ¶»Î¹±¼Ò/öúƒÂÙ®›´F†­3‚LëR&IJŠžSòr› êÛäÚ•³l^ëÊmqæüâ2ã5:îä¢+iªîÆ{Wm~|ýÐÆpâÒùÇÎlÅi¶÷/žC hÙ˜›ŽRü:ø¬ä<¨—ð-à,;Ëgl| *‚!¨ lwîY¾qߪûûѹ#UKp õ5knH&Çð‚ÝÚDn=`\ŠˆšïiiSª;jm…WçÎY¤ :UMM–Y*r ð›¤÷¶mS[_mÔôÊÀÊì&êú«Y®g/¦?ê,–ïoòÜÀ¤QÒÁAI§wz“8»Šžú††b€…w§ ‹«œ9sfßÓsõL1­šØ¸·„žæ˜@‹þ‚RÝe“2ƒbçB ûVH®\9PÁ;v‰Ul¯^#féšÎ?ÁÕörÛìöæ-ˆ0¹Å»û»ö;‹\É7ʆ}>ì2˜ ذ¸„ORŸD¼2”®Þ}ëV ]¥Þ?}´Tá"]ìÌDÛ¡•ÜÕ´d‡£ñkïóìEKBÏÇ ¬¸yïž!Öòª§«¦ÝÙ^€¸¸ùI–Ý8ƒ¨ ?ÆËÝ+ãrGÿc¢³g>8yèVs¹sxp¢ˆÑfÍùª¸L¾ù57zç¿û‘E[³eÊRî3½ÇlÛ–•Ô°Xìäl}}m# ë ²Î8V,²*:ºðoaqIgç^‹tº AµÊóæ‚«i%3Ë’—oï¬Ëµ¸î>c”p’D<ûàBC/íÏ™ø¡¹<äÓ ¸,7Ñ?»>Å`ÓÃ5dr $K‹ËÛWB»;´ßfSSÿ/fz ùÀšgÏ>-ÚÈÝRŒl*(i¾}íª¹ù¾†Ç11OôâÌÍæH¼{ÓtiŽ””ÔœŠ4ý[ç¢-ÄÌßÖϬiSÜ(ïÍ“Ó/Θ6mfFÆ " ¸~Ñ;,Œ@Ñ]PµSÊÁ°¢¢eÀršÊ \[gØÙ'><•p9óNùÈÚ ‹ Ríg–œÿüBÇá ‹=º‘7Q,í¥IFÐÊÍÀÁní+@n€öVô"Úç•…˜ØÑx«óí¹ÇI[H/ëöhøf9‹%h “à8›sæèxõS|’kÇ\a×6.›/cp2+Ú÷>Ö-º¢ûveæìGeç&Úê/\x¦®~õæ‰ë×—!®]C¨ñÒKâh”çâã³ Í_h%ïÚåk› èOu¸MîÞ£%ÉRÏýR(Ò,7àªo˜9T67•m¾qã´`™ÓÑ›OÏiY\®Þdu]$ؽ«/bµÏÊgÏL3ƒâ.ûº m‰C s™s@†ýfÁÀfÄŠ”«»@QžÆˆž.®n¥#É¿ì;büìd’YE†ÓÇíÛÍ?ujAfÐèjÂDÈ'îL;²añƒS7J/N¸‚þÞù¯^í¦÷lÖâûA5‘Ô­ñµ¢lï‡ÿºþ.¢×`‡‡ÞÉ—sÄŃ¬ŠŒdyl€ÓäE°¯˜‘í¢æýC{hÇX|E†>囃ÖGOŒs9‘Ïëî*“Â¥Oí]?ysÙ¦Œ u õ˜L9@Ï ÍÍ?³áý:•!{wíÒúœ&pÓÀ>aÒôÙA·ãõëçIDÏÐѱ—³i=`p’´¢ìÉÓ®‘%gúG0˜®Î½†ffç ”JïÏ}•½ä4 @ž?,5¡Ñļ”UÕ?ílÌÓ”CõüjÏ·áçÍ“QòV•ÑÒ…a7 ã@ùªÙbIÖ¢ºgsV÷UxϬÌH¹¢!´¿Ñ˜ÍV¶²®.¿Jtó0˜ œtY\gÃã§#þ§œ& ?úþ9mANV8‰¥TÍð‹VbNB¢¢I­VêaŠ#G›t×å/\xä¿)¢Ê ý¡ý$§˜C7KœM¡‡‹úÅÆên>òaô$/2 €üæ\ôà\±“A!RSØïLu—úàDvÚ÷À )úŸ€žkS™yÒáeyë+¶ëÝý%,±-g uâYA§µfêv‡ÃqŒ‡œX‘yÓŸT¿œmó:ûÎ]™ÉÁç¦ …W1]Òü’“•uÜQ‰W¿}c÷’Ž¡^’üUåóÕ€ñ™íÛ§Gô$q×^žÜy÷²Äýµš  %C@„kšF¼I³ÉSˆo72–œ·øîÝMp—$—Ö¨Êês¤Ÿ÷¶åݵÈé[æÌšyÙ­c: æÒ½e™VfÏL¶îÚ• ð‰¶i@0a_Ez(„âÊœ~>¨T²|»L13h¹Ð¶“;Íaº:ÜU‚™Ö`‡š‹oR£Õ •Òï9oß.¨ºžâTë\sƦ‡ëùqG–.¹sgˆkÅD™M7!¸{W„TôòÆ‹ ù²]Áû'º§‰âµoã®åÔ:zƒo¾¹ }-Âïºç9™æi¢ ó‹Þd8}úmcãÙ–éô}ÀŒP ôèt²Ýãµ)U²2óH}펺îÞØMUòê³GÓ“päÎnùÔá•È. N»¶¼¸BɱòYc(vzc8åÅuOYíÀÆ|Îè_hºãÉ=‘“”œ‰µ¾ÑÝtðòÕZB¿³ •!MQî×Ï/<æ•.„qt ||e¹ Æ~#¨Réô¢¹"'PŠÕoGá5 ¢,^ÜŸÁ\*²má@ÁþÜ„ S¤¥í?¼'Ýä¨ë»¶ªî }:[T-¦¹ß¥VÙÀ÷È©SÁ7’ÊÊb«Ìn•ÙÌ©S6ömÿvßJ22%×¢žC[‘ç* íÅSjÌ7·äü>2Bæ€Ø`q­a` —íÃKNtÏxö¬Žµ÷ÃiÈö÷çÌ¡35Ÿ–Ãyw߸ý‹\µé¹¹! ÷>‰‹>ë3¢`U”¸ÙôÙQ Pôô 4i7ÏWÌóJ˜{»ç狟ü‚‚ý§rƒLé€^š˜äGÑ­th‡y‡wnõ´h+?›¿5Ýàôpº8H“NCÞ“§Ü†ÁªÅùgjUw|¸Q¿uÏÃô]/¦w3´´â„Õ<¤ç/@ì^ˆø ã•.“ÆH†è‚ä!èPå5¤ŸYÕ¤$e¦X“ÀUªØn]Ó}ûm™c…m§8wc,Z!½½ëÐÚ‡§Ä q ¯Üåe)•MZú»aååSøªävô´¾šqÑS«ä}™H>ÉÂiª„OåϽ¦hoÝÓ'Lx º¸ ²1˜t¸Ë¶¾ :ʤï”8ypð,œõNBÉg焤‹oÛ¦r4kµç¿{ 6ƒ1k®R›"á½.&¦i+-ar:CZ Ÿ*¤0½½¯ÕЀ.:­1ZÔ³Ðöñ}ö†3ýâ"”»7ïõSÛ?u¶Ø@V¾wß¡g§Ž•†œ™þÚ °äxôö»GjìžéîŒ×ªJ‘š.mPy3odggáWhÞrb`a¶«ÍÍhŸá™€¼ÊYÀ‚¼³êùù€pàÄóÐ62ÑÒšRX¨<"ˆ±YˆÍvÅ™pîԳˇÖôû:¶F¨yÂUUÕÓªþ1aß(K&,‡(¡í@t%Ù:XPùš²=?ÚõëªïBø f6K‹øïÝ+7yZ 袦F0T±´´B¨B®# X[;&K•FXÈí¾Ðd4yjÕ¤—é¯êûÞ¶*’ä÷G@OS«)’ð>ótâÖ´€¢"‰bU@›mvºÏíèhz¯çAÜ9¢8{„ì§µ¾˜·7ox@¨°Ð±ævr´OÕ’ÄÄ{FÕ ù7.+…D ¤gxöÎÙíÌÙ³{@®#Ç /&)C)ÍÒs£™ª^þZ\ðB¨>}üøD“®à?v*GŸU^ÊÛV0нsº€õÍs«¢¥—Úy³…ŵ¢Sj&SH€/aÜ6E/‚Ž{¼/Gx|1riŸ×Ìöþ0P¶Ö¨ë™mS¸ý$n›’{§ ¼î=°:îçþp]£ (nnQÚÛ·ÏZ±©õÐó :1î,ºŽÆ¹¸·51Á¥7‹Š íFQG“|Î(É ¼ •ÖRbVËîêy™j?ÁÕU}…Á î›ºËŒUÝ›b¡5aP*½ŽØY rµ`Lݳ‹[ç@PôäÉ­|_›ÝÐñÈ#kOU¼Ä쨂ök'ÊÈø°ïêUy6'5#H§ÑPCcÆ@÷ǡҽ·Aµ0Qí@_µ•ÐÐÖVß9ì. 1Hî!çgsæ OòYI¦¨í?CXU¾0½§‡êŒáÔgà /ÓO*ö´åñs8f/Ê; ºQ¤_[ýd˜âjt ”Na~ˆ©¬®c)Äeñú#®ŠŽ½Ðßá‹Õ¸W¼€ø:w•’|òÅ­¸‚¤-ÑÛ_^ |7µö¶ä î{4+sOðvÇíJ“–½n::v!'÷aÕBìý’ºsÚ²®Í/ô¡eyßi‘¤úwj•þ9ç©mÉî58•è3¼EK*ïmˆZÑ;; ò}—2]Zõ#­N'¬ªSYv.ÃñɺI“¦FŒî†>J¶ž™,•~Ζæ9]ÿ¾6 Â~«‡û´=BçtÖ­Ÿ·sðñ´±ãÌwÍšî1:m{ãâÔK/¹¾«UAâ® Ü{’„§ÍÙ({ò#)NÉ ÌtÇàÂ@Á˜ÇOZ·¿Ö½/ƒ‘’4>.½7+KVOïå]þÞÂ1 &?¡m?Ý/Î"£]1jµâ®ýEç (qÎD„úû„¶™ÓqOžtn·MŸ`_ps³M¹“Ø~Ó|¿™AÎR¼æX­Xûúù©—…è.t Ú…v‰Z,'.;ÒÉoRi¹…S­LŒ Ë>(¸Ê ƽk”—ò}Ÿv<Öù€ÛãQ]máææ¦!VݦûvZ ¼_ª®>³ªŠÕ4T9¦æòotêkç4¿ä@Ï)ŒPû¸bHeRV{oߺE¾-8ýIHDÄ>èq' ¨ù1L‰~\­„èŸ ê?ba€& t7r½Ÿn·-ª]¦óOçwRët[œ8j{ª¬2¯Ìق٠=2~,2ŸÌ@Q_$˜…B‡R(ÅnJ*½ï”1§L‘ùqÂþÙ~PN1Ñ{(¬Ûe¸`?c{­öê[·/žÛÊK‘xm@¯’™ú©«„—/'zuÜæ+9Ùs5QÈÍM¦Z¼Ð¬ÌŸpôzJ2µ­êä£DÁ‹ô€aà®­NìÆXß×;?&VúÉzçVÆùÐ×^º¬vPeï´¼›í5¯@ HLȱòo©˜”âí9WTTî2¨bTÎÂb÷yö>YåQ¸¦ë›æb2Kôޝ¯ï”}MSååõ“IùÞÔ¢Ž//­”[xæôš½åW§‘K;a½Çë2Ä]Ý:Ö×Õ-ÜÞñf^„ú«dàÍà"‚Z¢P™{ýD!ͱb…§Üüc0]Íu·¤öî_}ë¤Jðá“Ö| K‘Ó¶›¤ åX5O‘3¬ú4Óuv0~þuL– 4(FÏX žØÅ ûÇü)`»wóþÙb‡OzÀ™åwúì“é-×jòV®*~£lp…F¯³´)C4ê~¶1üÔâ7¥4>±{–¶‡v®?‚”ë—塃¦=Yüö­–[gÝä²”ÓgÏNptœvàöûGÏšýsT%à+Þ)‡=ñ²u´Ä]UM­©îÅó¸3g¿|éu4LŒyQyµMŒ¶,¤n¬üÅ.–ÌD‡c•ëµØÅåš9Ž«À‰n”ÃÞ¹ËßqpÝ“sNb~9gs¢Ÿr£ÄC¥hípTÔ ‰èlh ( ª1¯\q¾f_6ñº:ÚQÒlÒEšõý}5V^ýo5@ bqphüàõÝ¡ßÖV>[Û­ ;ž¿Ï|kæá¡¼HÎb×Ρ'1­Ýzï”×\Ìv¬Ì¹¤hi©Ùg=k11èmñ¦Ú'6¿RÐÖvÌÒN”QTœ¶¶Æ;J¹{Á½âÅüü·ìžï˜U–RuÓ¯‰o£"Í‘3PsòÃö‡– ¡™B IWY¦:îý‡îÈs‹ÞÔø4éöðñãw9³xì“»Ò–zç¶½ÍÞ¶m›î†'{"+ìÖÊÙ ÔR(à®X‹\\Ï|o,÷®?°Ó(eLöþÀ3¶¢}ë8jžîz÷‰â›æ˜œÛÀÛBL3x`7ÐÓ²qÈeRÙai¬“SŠV°¸XM£ÇdÍýôüx}aT¼PYŠ®€áj휜œÆAQ1eöiû@^¸“ çn§–ÜiÀÓ+_h5…ð “^d÷"±íE/R°Ð^rªúÙŸj T÷ÖÛÑmµwîmÛ‰3}F¦X¤?b½-x[ìô"ã±_iÃò½£‹knòV‘2‚øõS¶ß=YŠ‹ÜÊy¬w³RIõ?X*„êí “ôh KëNŠàÌ‹^¦FC›ãrV}Bûæ¼öu1t*89fÞÚ±?E›#Äݹ:¬|ôHçä§çF‚¢¢&öŸ[5ÐÛÖ™_$÷ƒ¨ ²Þ¬Y"ÏA J=5÷ÉáYKJ6'Ëä¸!œë\ £$Éɾg7H„Á>Íh{‚x®±Nò¶Àý€˜ ‹¤Ýô›9óñÍ&‰ ?w—¡¤¤lùÔ4tïá9¥€½D)!ÊAlyÉš.p=ø¤ŠtŒuö"+©±1¦»¯’eÏ¿9OPP^XÕϱŽ:´*!!Áâ*U`¶˜²i-鎦JÆ»·o§(**&“ËÖ5»(~?ÖqÙ‹'÷j¢—õY<<…ÑöòZr4üš­Ù ÷í[n÷*kòòåÁÕo§Sr–={öì2¡`*»ñÙÁ¦•|ç&Ïp·›V¶HÁê€w2éÙLw©Á õa7¼GOÉ„û{¬Y L'§å©|Å;ÖŠ¿<ÝäP}c·ÜÒ¥»_åùD ˆ))U®âaiiØÅ-Wµ{*q¯½ ö®]ªâ޹̾üJœCÞ±U›‘žžžawæ/Xpüúuµ­×=º—dV¥·øN›cÃVƒõêc “@V$ê‹S~t³ŒŒ ¸P¸,ÃÆšãíµ¶n Ÿ ¨2ñê`&eA‰çï¾nk<ßÔq'/k0[¿mu‚¢çzñ×>ORãÝZÎódkó¾¯m&LIõŽ‘A"{”ää/Y‚.š¤]º° ƒ´ñî~>ííÀ\‰#CÖGS­CòíÓßV–ú8ý®¦Ê¶å ÷F‘n ’¢Uvb0Õ—&µ Ö^÷hÏ”™‡ÞÕÐ`—‘•El|–¡Ì‘­¬¬dŽ {/“–&pÄh®÷nßÞ½“+³]ç\µ}XXw7ôµgòÁÒDà^º6¬56ž_ùêÕªæÞÁþ®^z±pé5­­A€ªHª«oëyXT4-F'8LLÓ¨B#±Õ1ïé  #$>>eeåTç’,ÃW÷^&ï pè·Ÿ–p¢1çÁƶDÙ &ÈoM»<=$4TÊsøyîÅ\ADÅu—Äîù'cÀ£ç4³·°f‰§^×~’`r΢þÁÉãAA³Y®®¶’!®“LÛž?1>&¦„†ˆôtœ}UŽ»ßÐlqÕ;ÊœÆ[l6;"2rÉ*÷Ú¾K«A¼¦Òét½Í›Ãß76"Ad(ß âéþ éîÝ»m•ØU«MpkÊ#ì3SJ?›“Xç;`Xþ°As¸DIYùÊ›7oæ¨è›uG=¿ŸÔ’èhx£œð0,ÏÅôØ•¤Ç[žbMmóʯڢX,Ö"qñOž>-·Ùy·0`1o¢ñugÄRCêÍü¯iKC& J_b5÷¾ö±Ä:’8M¥#ÃC‚i››HEAˆ @ú¡ïöÞµgš+Õ<>l×?&¨Š÷üXÜS|ÿ>RZê–nmm]. šbQbžluxÃñ´4ìÇž ƪ…s.„V”•…ŒD‰‰‰a={šÓ«›ëM¹Àh´b™-gø=h4Ë5ØòÒh±»,Ûÿ61Íî±$à*…µÁÁ— ½ÏÞV¦$JSq!d5Wçû^ò?t¨¼2“uä„§OŸ†¾jßYÑ”sÅq1 ègïÐðǶ+µêÞGiöö¨BÙGÿÊ ô¡aÙb³Nó†$ÊûIGãÄŽ…¤÷FcÎÈåIQh:.ä†;}ëödìR>s84Ô7 `–(’®Ê¼Qß{嚦‘ë,Ášš¨ÅƒSj‡Xõj€>ÃÕVÓž,ûÐ\¾`ýúõÙ.PR2!ŒøŒ ÙDBx°ÉTª$1¯©ô¢ïþý:ÇƒÅŠí½½EqÙõÄ’íáƒSî-,‰Â/€žìs…RÜÞ’þú^OGW—ohè>¿˜ïð±cSH$ß às%$‚}†û§9sæÀ7Ž,߸ãhÅÓ§ ÀÀ8èÉr—/Ã*3:±¦=¬D:–âXv¡Êõ>fá½'eA ó˜·hѾG û>~$=<¥ÆpèJ.ã€j@ý²íCq9Ëkº=CÑ;fLÜÍF™>c††©éB¬Ã‹öÒ2wJÅÄ5††sWèEÖx tO2La˜Ô¹äèSÜEøyz¾§·e§Î=:yç©øËŽ™¯=ªáíu6÷òåÃúÇ‘~•а Ðîi.G•w¡l$=í*[Ù¥®eA7€ž–ŽN±øë÷Ð)Ó¦‹ݾrö¬äŠcÊW vž¬*ÜðȽ¢vs:@ò;ºåµ`îF…I%n©º)($„J0½Ç?s&¥Â{¸¿^NQ±íb‘Wy2È åµÅአ­mŽ©¼Tßô$®xI½×ë‡ ‰å _bô&Û''ž®–R>wÉ$ÌÅTû”6»ÓMuÅÜéäà˜³g»³ 6n>aÊÂê BqAÓ†«½+r—-:Tþà¤Êâà"ˆ ¤ø{GJ¦×rÚù«Ÿ5Ù2ÀÇ›æ­þÊâ6]à dzvެã*KWÿ|™Ù„cs³OàA Þš }lBè߇Œ§µc‡lû½¤ge:ã5ÿC!AÁüòòÅ£WïÏÌì_òÑžF›À‡F£«2dÝTO5ÛÏœ9p"ß_ßš÷ïgAuÛkŸ5èag §§XrwýªuKEú¥öë+ôOìB˜·}lܴɇÙ;•xäâùóº2·…}ýý7øµTq¾ÀRÓ%1“§¸4÷²¦—7nðñN´tºÀUÆiÙŠm×=AºÑ†SØòxÙõǶ«v¨Èšl9µo-Wû‘&a¯C®\ËiOà#Á'O}óüMAö© ÍM¢—â=èÆ( ¢Î† þÍNL&zÐŒ§*ð¿’ã¨i8z¥[Ó‡=©K£Ž——*€Ç¿ÈóYD"á Þqä>fÇ­Yêƒ'‹ž•• }ìÍß–„ ´}xªØ “µoÛÃs—.bŸ÷ãÍÂäa°52Ýi½Ö¬º‚g±m+ü¡§Àg¿R4G\Õéz=yUöÔÝÝ«D{‘-sªÒ/‚”¯¹oÒ´ÙÕwB¤®¼©nòNyùá¥äºÌëmo>^¢ë æ?¹mX&ïÙÖËa³¯m²¶õxÕ”©ûvŦS³@®¹»¶§¥‚ÉáhmÛvª¹Ps@ýÅ–/_ÕA|§/_¾lŽ’³¸Ì7cÆŒAAû.\X=™¯ïÍ!Åö" ˜ŠÊ’òòò¹ü~||âjµª>Ã9k³Ã¬ýëêÈ· ‰uwB^äz{vfff.]ºtBoë«@ôîuÀ°À!d!‡àk¯`䙽hµ.MPã¼’ÀpM323kÀÌu v6µ¥Ë^j*ÓRš¤ GŽ©nmÝFÈÛlSÌñ{FÑÖ«oT1Á´¹”šÖ#òq#ŒÑsÚâL$Aaé†xõRÝă‰ÔD‡ì;ýKƒW7…×9Æ92˨R¿p¡Ø2~J]6n¤<”PfH¥=ÝÇix´[L‰¹+p1j_wKE8¢çÝÃ~ëà×ÝÝßS Dá PíD$$ÈØWf ®¦¥QO$+°Ûè°„±/ X.-]üã3ìî\ѵÔÔò£2&Ϊn‡9 Š|ßÐÇápæÆÆ….mx³åOÏm:vÅšQÜ“Ë &öìRA…ö”e›ìÙþ?f2$³·œ¡Ú7oˆïÞ½+ds8PÆ’†·ô@ ïê•+»҇=¯3Lž¹ä´ 2<­ýsµ¥fuö ›÷j°×+ßã?0|wÈ ÷Ö£LºNFÎcöøÁl>—faA™Ö¡4i‹ÞÊ…÷Nyr²Ëò°X,•/"99¹¹°æBÅA¨ßn ÚÙÝ&Ÿþzg1Hɔ㠎äŸ@Ónº©Šwõö^BûPð²*…Î×7È-ºJ)Cx{{C.«*25qõ±Ît0ý@2Úž>7QåMðÄ­¡+m˃/^ðy¤HÛ{aËÝÖXìÙØ÷TÇbÆ9E§¾µºJ.f–¿Üc±&–P|q®  õ@ä ÂíéC^#—=ó¬jª ̘ ‹lz+Y­õ]Ã7êsWG{®îêÙvZÞô!Åv­Ð«·^†ošòHa‘rÑ"W{½ï¶Ò÷ï߫ծ~‘”$w•|÷Hu.¨ Y·7Gôôô9•ŸôT|njÙtáêÕ«Wù-:¡aa‹ŒÃÜÚ ²âÛ¦áÚ=óþ•í¤„ØØe z$•^ÜjK}EKÎö0134Þ”áNCãá'^œ›ÿ.úÌ•«WõÝÝ3…&ç ‡S6lØ€(œ5gNdSrö/§ #FêcolÜBHÎéÜzü8Mýc3JŠKº€ ° p—Êì »3í}è™ N®žÀÇKszoy£¦³«ëرcqR:Av€ñZ¦9l¹3 ˜‹M¶K‹±¦¦ïËŠŠTà:NÇ*ž?_¾^ÙéÍ^cEEÅÍ::û-·n}^Y™$±³OãRÞpÖ²„Ó§×øùù)»4G_Ke¿r¾B0yÖ… @ N_÷ìMŒ‹Ó`zB©™‰ÉÎ_5:¤Ó{Ë–ãUÞ½Ö*Õ2hÉn虬²²”æÌÙ˜ÅÜòþÚ54ø$(1²Ò³ßÒÒÒÔÔ46TzS#(dååÍèôäW-y󗻎-Iê||JÍóšÏÈ΋ۮ[n “3b0.)«¨¤º´X^ï(\’_+yc\ƒsµ©èÙÛ®þgÁÞ¯5Èh¼ðüÅ‹•ë_¦3¢§N›Ö]í;g_N|V–% eOº›8 ÃxSí·š›Ç2‹Ááìœ1­öâÉ#™Søøøú‚_\Âk¢ŠÑ¨e#AN;ÑUÿ0²´´Ôȶ¯¹"]1ãUi)èÏ÷£¶¸mwßG`OOß Ÿ¡Ôë X¬¦<Ã)¦¿éR^IWýý7Ö¼è+x.” ëcšƒ"F¸r¸5»M8Í‹Zi‘¼ó®a7o®ÍÖŒXpë¤]!ù¶I·øÆîIùÞædkj¡G’EDD€ú¼Ô»¨´,•Ùk¬‡Rž6uªž†ÆîÌž—ö÷qUvÛÜj¦°O­Þy.ç)Nl%+ú1 R­‘OâÝÍã ’cp’teú„¨°~³ÉŒ®‡†ž½­˜ƒB®ŸtI½í/¸B]½j0Üø¤¤’>¯Üê”Ý#>Yýï"kïÑvì@ (kx¯ù±·-8qį6V}Qõ³þ@‘ÄHÏ'›'èEèGbßÇ…o;²ìþq”N¶k[)¨¡ºŸ™lJÈ˳q­t*:_æv½ªºpqPJèÊå \8ªyj£®îa„vwwwâùó†;v$oJõèÞÁh±RÍ=áMVé¯\¶2UTT>ÎßzàýéÄÄ{­sWh%¥Ùg\a»!¤ËTDí)Ï3æ)a 6©vìUú`òʽþdâ¥K›9œîN¨§¢ ‘x6þJÄ%Ϥª,åÉl«‡ºÂÌè—ïé”Y±—ɨ«ï,iÙ¥Ûe,“%ªtE¯óʪ² 8 ç¹Ùæ„‹õÁÏK`íÆ¦¦çÏžÅjË[\Þnº8o°óõá)±N+só°ØÇÞ5 ršƒ´¤)1 (hÅÔðä)¢u·…lŽf2¯ª…ªúûûëÏê©0 7:ûàÁƒêZ„âbcõtåu~VS°ß·# ÏÒniiqδRvïŒMLLdö9½­¯¿pú4Ìa°f廒 ÎÎW²²³}+Br#¦íJ;%£õ WJhJRa`HÐÁÓ—)¤ýiŒ×ÉÛòlămK²î^ç‹}ì^,‹³xÓáVT²Ò¡:7±±‰ìzx¾‚bVx'ëøráü²U—r΂tê=2Ô zTåÙ³îI»žà^o \"uÿ¤Êæ‚‚¦‹éÚÇtZ§l¿-‹[œÔ8§xÝ"Vù®}JA}W•+ÆÀ…Œ¼¼¨OC>¾IåÐY€q†¥Þ}5û7¬_¿¸k´–––ãÝoÃm¦6‚ÄÞ>$t°éýs$Ì7oÞÜ^ur‚ùPðCy ˆuÄ3 ˜€sœqöýû÷YÝ¥[EF^БðFg¼nëµÏß3åÄjŸ\÷î—ö—³›µ-zI’B*ÒnÙšBô366f¿öî•‘–Ö¹J½ÿ„¶åëA`óøØ’~,,,þ~$Î(Ç(}•ñb¡"Á ÓcË.Ze/^¼øÞÝ»IÁjñû%vZviT6‡ÏUåÅÀÐfxµHø ž‘ŽöB’%2…v ^¨œ«¯î¿ìIÎbHã²K·ƒtÄÝ×ùúú‚‚åÔ2hlMMMÒ©û2ëA²UP0wrJyòäÉ5¯~g3só G@îàô¾r]ôl W0#‰í©!Ñ[!@Ü­Gšã‚ø¶Ó>ö´Ü+.¾š3g&ñõY­CˬÈIDÈZ)„«÷×…nvµìO!¿½w¬±µµh‰ìºrýJc`ñ V%uø ß»èP{@õ²@NÝc»G\™­«Íx¶ÜáܤB IO‹ž nݹsçtRSS]öO€ ̞ݨ‰¾~ `©TW¥ TÏ^zñÇkK]º?|há-Me_øê$¼ÚwšJq¸¸¸{÷離ÈnùF€!ùDoÕvœOK ³1’z—ùŠÈc…Xáµ4P]« ÷Õ,xTïžÖ<»(äYYYS##‚ëÊ˯÷VÙ»NçS(H4»P×ûñm·Ç±Ã‡Ozºãy¢™Ë~(UÛȱ'îò=~!'§²Χ7©ëÝý§ïŸžk™]ðZë™=y|þ‚©œ&óìH¤¹…³ ©Žýì²Ky4ãÓ»N “?½«VÝzÇ]¤<áÓ;¥ ŠV¾]Õ.6n«2­"¥òMÛKP_ˆMä›IOßêîîLeá 9ø¾Iƒ ¤ôß ¢@ˆBx ƾàÝ UµÂøÎ-}&dãýчr1þø]ž­™n¯ ÏCãpM·.pÙ¿[&#³4IU™ÛQ²ñ„ü`uvvöóÒR¬ ¥`Ë›7oêºú>¼Ýu%qÍÜ™'?OTt¿çÏ'3û«–Eò ¥@¨O?0‘‘Iû_È…<“]½_¯e°.yíö=|ÿýù¿úã@#Ú2ílRžÀ¤)رYlg‰­Ip¤8´iCÛŽûÉ8ü`ÑhèÃÀ¹ï¼÷ÐoH4͇@b‘(‹D ùà, çƒý?¥HÞdàŸ^ÿùQ]ºn“¦éC-d`˜¡ÙZ½õš0IyP£ 4×™®ƒYèšêëÁ p˜©3΢±i :ÁAQQË@&iÇf3•]]]\Q g[EScE7¨/tóè¯òì/îT ³É’êüªÜÝè,µtƒÀãñ¼»¹m)2xq¤° 0¨­<ʼnCsQ“ÔdÐÙ:[ÞÔI‘„‘xïÔ$Ù76ïf’Á™Ea«™™jË+I*þ¨ y3 yM†#“À¦¾ìg½–þó=tàj’¶:ð 6Ãù‹vënîà:P’’νƒMc;PÔ?»Œû#q½ ®;œÝa+?7i®W†}ív0®/ÂŒ)TŠ3…N¢¨*ò:æWu ÑíavÎ*˜.ÈR ±X’0gŠƒš$‹íî@aÙQ(lI(fTPH2É™ÆdùÉ‚ wUÆr&©IîpâPœÝv°$ÕUyŸüÞdw:‹B‚ìÌúöî/ä¥\ØÎÊ_ٙ¢yPþ‘G…!Ø„ÿüîqݩ΃-[If8Ž=2 ÎÜî+itÛš`PF…ÛÆ•F'3\eòJÞ u)4[;6øüǪ%óø{ª…AºUõ-"ƒì^È4 1˜`FKååadŒÎ`ƒÎ.ÛŽÆ‚Fr0~%90X2Œèz)L^þË~ ¸À!7fCsƒ‘(,&D£ÛªIÂ%¹ï™2yô=P*›' øÅÆ܉+Ã0X¦› W‡ªl2w¦3cÁfK—k>Ú¡¼… n‚+`(޼»`ŸD½rkÉq{*ÔÓ )®¢ æBÿªCŽ#‘â,©ŽTÀ(à™ÀǼÁÈ\ÁÙdhrŠlgÞ˨î¹ú~á6äjŸB'à QœaL‚3›§\è^âéþëÄmôÅDH® i‹Å‹<]ÀT9_\u ±Ø£€hꪄQ\ RÜxá˜;au}ÎS€!Á–2:MUEønüQLÐŽõUÆhŸ»aý¼Ÿ11Ig ˜Ÿú%Ð>¡~¾ê{ph^ǼÊqþ§Þ?÷F¡÷k)¡`üã[U9<ƒŽYök•#¿R9rœ:ÿËóâÐGó{Ó¦QÈ¿5MÞ „ J|íî,™"&ÿiâš¼óXTƒ}úù’ä·Z“‡Â阢¾½.?šqYŸöe–;ôi`îõO–ùÊý¾µ‹é@c Ο¢‡¼#ÃCžÃ¢8˳(À¥•é :EE6:ê&'oG “Ç&ô¥¢~™ ¾Ïc¶Z)ã ¥‚‹)˜ýJéŸ2si9iiï¯ÓÂØì@ïcŠ“½<*?/°|¶Á˜ê8ŽŽ æAÇÐ#Åäå l¶3 j`c€!¨«Ò¯zç&€oƽöK®uúØñ:þ„»±ÀðüªLu kÌ?`$ ÖÑHɶo LîeŠ @Ï 0`ÙOsý©–¥È€ÒÀú gŠ‚‚ÏM˜¼UI 2E]ŠF'9pÈØ ¶ èrT8Šƒähïcå/¿Ø(ÙÙ°geÔ-¿þXÁb…-èJ‘Û=w´±<ÊëÚ‘¥2… ÆeÌ/ôR p(I (çÒÕ$ARµC޵±ufp˜c0Pã¸_’€ÿ+‹Û!Õ¹)Œ—À¾ˆBcS• H,‡#)†Š…+)¡Ph ™HF 0 ŽBÂÊôé®õà.=©%aÜ,è”ì%a.£oylä“6 t’DÀ!tÿÎXÐ  B`4aseÿn|㯇$2Øl†ã—£~¶áÏòÒ@*æzÍVRÉú§Š$SX¤ñ*º‡«FõŸÌjÀ›§ºÆ ~éd”ü`ªDg@ ,‹hTþŒßÈ&c·J~…Æ/Eý) 08,E$T$ŽÁá1$œDD”ˆH…EÿM@ýÆXÿõki¨ ྣ‚#Ñ¿ÂÔøtùŸbŠ'ÕŸ!l¼Vÿm„}bÚco,²óæX˜çÆ÷ŸËuÜF`Fë(¼Œ ò74~é@¶':0Hö ³ñæ$^¬ÿæ.äñaýK%æÁU,}Tÿ a¡RF ²¡Ïa,‰Da±¨õ º pL 'ƒÀÞhâ´ŽÛûï¤/Ò(L•¨,Ž¢ ˆT8ˆÄRÈ$4À“h4Êl6£7J°R†‹Ù1²36a^š·sVT72ŒQ#®NÀ|y(O#0W ¶í§BˆêÌpS‹ÃR¤eUˆ¾BdxTxÅ¿”—y ™ÇŽ¿ ÅcD„ÇŒ?_ÿ‚‡}.ãXl¨ª£2ì¯*¼/i-ƒO´\à¾çuIãšN¡¡éCÊ<Ñ…Fqý¤Õ¥cÅ ÂUJ¾»oHú–·}S+|îž7)Iõ/+U^›1¦õŲߨ´ö÷e±É»æhûM¯£ëM£w1Í‘žý銤"×yÇ â1ù¾´x«»¡¡Ôùÿ»þÏ[ÿÿtHeÂ’‡jÔ1WÿËëÿ‰C~³þC¡Qÿ]ÿÿïúÿÿ‡ëÿŸ/üÄH0(òþwKà¿[ÿÝøï–ÀÿÏ[w©üç ÿž-K›£¸ëwteëÀ ¾îE‡wí¿«ÿÿæÕÿæåÿó[t x˜<·elàKÏõ€"­òÅMd •F§Èó©¡•sÉ™ñ“¶ÐÄ?·ÔÛ°ú“-†ßæP²Õy´ìÂâ0™ g(þŽf G™âÀ‚ñ¶F×lhΰOÂ@û_ªê'» ?[PúfÃÁ‰Ã`«Ñ¨4[;Þ»±]îrÿ8w(¾ÅÙWD~FS¿Û¹ø© ,6dR òo6¦1~»­3Púo6vRüfÓRpŽÃ¯•Åk6%ýÓ˜èä¶¿u¬á_w”ýrØÑv?•çm?ù—A)ñ)\­•‘La>|ØfëL`ÚqWÁ~æõÊcþýu§?ŽŒ$p‰»+->q™ýO° ¤2Þ*‘á $ä²XB LàÙŸ‰¢ ò§Œ.`qW®xR‚›G‹Îßì õ¿×Šë ÛÀXv(-9ƒ,Ç» ƒúe$àÆ ²j’ÿÆ& ji 7 u$%‡D£åÐh¸R íõ~.)(¶î _ ù (WH¡1*Pc+î¯\¯ø^<\…BÉ¡Qh9î—Ò`~ ~-ËXDøN% Z‰AÈ!༧ô+!p?wÓ¯¥à.ã‚"Í™æJ žgýÀ"h4^‘Ã"pr$⣣¿[N‡|Ëí{hò®¤88 $ûϰÏ'U~ FI…FÈa!ƒ`q¿û½*X¿g ^ ûnx,Ï^ Žÿáq?'Neü¾ _@ºñŸ„C ‘\°"±Øß«Ò„ûm‘~4< †Ç!€÷â1<þ‡ºþãE‡ï²Êo*é‹~¢"4ÇUõ+Ø 9§þB°Ÿú7üpí†@b0¿e”~ºeõµ@뙨°=T<¶'èLaaÀu("Æb5Í&ì@ìÝüc¹¶ïøÃx€‘C`ñrX$ˆIx쯤ýÎЮ4²-å÷ÔÇkú¡±nLÄ¢0¿‘ße níÎúNmÞu0qh¥Œ»”ò).±¸;¦Ð9Âè…( `J(øï†ú‘`ßI¥AL–@‚¤[‚Ú}!Ú$QRÂpCŽÂ~ŠUŠ€R|±ÿÅå]ÿÓ‡‰¾-?Ÿ'ú²vü噢ÿè„Çè6ñß=¦acÃó'1£ÇÇ\êû£xuÜ?uø‹geþ=ŠTœbŠ ´’nc3¦£±ËÜ«ÿ³Ú]>ýÇø·«\Œ-uüú¸†ª§(¡•"¥„Å£•ð‚ D‘(88ûWO7ýz,HøÑ…›ÿDuˆÚ‘Ž]U‘¨¾Ò„[ˆËð:ûòÿ±O~}hœú“³fJ(¢‘WR‘)d ‰Áa±d$†‚$•”Ф¿jßëÏ­r(d¿dŠñªçOLAF¢ D€SD2¥„&“*’ˆEQ0d8îošâ7ÆúsS¿´Å:®‡ÈÁ`ú‹`Kù‘UÆ>ú¥YÆ«ª?1 !“±,™Œ'ãH4žŠEáÐ Ž%S(TÌß4ËoŒõÌBú'»€ß džñªì¼†Œ%SI8Ç(Q©H,‡'‘‰PµâÉ%Â_õš_õçæ!ÒèäoRÊ'­£Aœšáìþ#óðZý†óŒScb„ÇQ(4–ü‹%ÉÀyI(,ŽÁ¡ˆ”¿ißëïXÇæ³yl µ]åWÒäÃù#Wqb$’€"QQÀYÉxšŠ!P($D‘õWÏ›ÿÆXn$›¿”ýÇ«˜?1Jh4CÁQá(4ID $RÉx4‡¡þUOù±þÜË ãÕÌ%{8¡„T¢ )HJD áJX I¤Ñ80(ù¯&û_õçVÐÔÕÒÜhc¬eb¦gʵoiîöð¤ÑÙ0g˜l¬‰ ŒFo¸;c0¸ Ì™Âæ8ÓÁï_S€q*ò_Wå~½?ϵÄ›ô¿Qæ*¡p"NÁ#‘pޤÉ$,¯„ÕàhÄ„$œ ƒŽyÂdÿÖòÅ?Ÿ´ú‰Ø2myÔðs:$¨ÃV~)íè2¿úºÎ¸´6ž¯ë˜PؼïžðNƒŒô Má"Œ*î™ä(®Ÿ·¦aÜM¶¯@þk™ÆòñïO@è2GDS±Dè  CEað, Gã‘̿俖ÿ{S)”ÿ”ÿÈÇgñ€\L› p[š …û”£›_#ü×áãEÝŸ ŽÇá(p$IÆ 1”\I O$ãÐJ%À°H•ªþÆXAúOýƒø0CgþmÈ4gˆ´þ¯Zö%’ÈýówD¿>û!E£SÉT%$% †ªDFS)D$–€'#1D<0³ŽáèÁÞ £=üº ¯åÿˆ, 1`xAÅ`°KÄbH‘‚"áÁ¼þõdá—òÿzÿkqôeŸ9ɸì>."N"ÐY_œºà’Ñs¼ãY¬o¨È/Eù¨È8aýG[lJJp"’D¡•ðB‘©4CP‚S•XÔ¿Ý…~-ÿ÷.D¦°AÂý—9ÑØ‰CC†3{=Êøâ0Ã×y]A‡Ðl~í”_‹'b¡B"…T€R¢’ðT$J E)áqjLô/$þ×d–ñBõOÜ‚BAÁ)4 ŽE%!IœŠ!!(D,š„'*‘ÿínñkù¿w :Àý¯t‹onüê韮r»ú$ܯrÈø,<®º–«Gnù\ÄŽžåû¾–ýµãO ãEïq0*EA“qx4MB#H' Iô¬$þ_ÏÁ~)ÿ÷žâüyñ_XÌŽÏ"ãA¶1w)òÇ8þõ¨ÿ'¶þhŸC&0$Ž‚#ðp`[d"O¦â¨Ðž4áߎã_Ëÿ=ŽI ýß‹ãñYd<8Ö„æÍÅ1…Îv†Â3Î#ý&ÓF!ÿß¿–füø/æþhE†„Fã‰h* Tâ$ÊÿaïIcººRXjWRõ$¶D–÷Þ¼yoF‚&"‘J“4 ¡øâ­ “™13‘E¤>;­jZµSj+ªmP[,UT)µÖ.>‚i$Öÿ½ïÍ–HdF¨øþŒefÞ¼wï=çžíž{ιÀh"1ŒAå8ç‚¢ê[4¿¬µ²vx¢.^L~z…v­«FKE”ïØ\9¶ÑDëÙ¡.ùÛ5"¤ÀÄ1ÉK)RÜj,ÉËqp”.+åwÇP'ä(‡r¼\ŽQ2K °<èÅy¶ÊûÝ+ÿÓ<3<è&ò«a¸/ªx1v¾—݆¾c“î˜9•ÇHÞT6PJÞ±Xü€›$¶JR‡Z5‹ˆD*CRÊç_á@ŸÃçï ÅWõº•Hp5%ð«­Xã%:Ñ÷ºpÆnâç?ð1€ã€ KYÁQEbXÀ»Hˆ^eL=ÀBŸÄ§.³]X¶BjÕÒ^,¬Ïc.Z>Â=1Ä ŒI´ž÷GR´‰ ¢ç9̘g<¬äCk8? §ˆ*!^HÔÀ’3ꌼ>Á`.íÑ ç  _S5•ȨU,®by‡µ%uðŠa¨µÞ¥¸CcL#NLeòGx@¸ -èô„áæ~L­y#`Ph#·ÑŠóç ›‚À|-Ës¾•F“œÙPªÕA¶t$©Ôj„áaSB¢Úw"qa±½"ûÄ"ý‘¸ÀèèÀˆØþþ"+jÁ¯<Ôr°U‚Ä•v=­1Š:ðƒžÑ=zûƒÂÂÃbûC(CÂb#zÆÄ !‘ÑH Ö£Ox`4Õ':*2¦§/cÚæ«xq*õ0a^dÇñÓЉÀ¡æ¡4?zžåÞæ` ! XÈA­œ"Ê'£ ÎÅØ*í$@ë–"¤åŠ7¦a}½9n¡5ÃÕ`Žb`™Ð@ˆJ‡CLïi FxûŠcêƒ³éˆØ¢ÀTu´l™aŽrB‚m«‘š¤FÙÛƒv8Càö ­Ì1 îO]Õé’´½)æ%U«2§²¬_¤’X¥ï…Z± ¢8Ùeh?´â˜Ñr¦ÅÜkÉRlåä_Tì«jªZt¡þÐÔ9éY±Æ}c¯OöUhy)³ô"ª6•;Ó/A¥ÀS$Ç…Ù¹!Jj±û´®±µéíã~;ö÷«÷K‘$Õ†ú«2Ô—qrKxM•ÿEE÷8LU•Fr¬ùá×e9÷kÎJ­Òl˜ÐÔ èØ*ÁÞPAµ)®HM6I0C…fw_j;Õ½ƒ,g)%–‚’ó/ŠÞLÓ©BÒb’N4j%@¬ëÓ9BÒŽX Ù ž…RíÒqN2à „!¦*í¦Ê‚–C“ Ô%Î.#¬Tõ&‡ƒIßB³ÉD}h$™ü¬6A—Q”h0ŸÍT‚,ËÐ’ Š•¸ÕByòò-oÁÑUxIËÈîgÉ­@%#°81ÀP’Á螢”¸@S ÇP8†Iq¯6ÎDi1æí@2Ç”8®P²A€%&ƒ3(Kñ`Õ§DYe­=ˆáPötPù5s…­?UÓ°(‰R¨h£8Ð –΂ §Ц9%iãd¬L!(À(Íb¤€Ó2RÁÉÒ¤R.Ž *2:6>8,ÆÎX»g0œ"pTÎr2†¦áñiÊs¥ Ô,#%K‰Àí »ÑX JJF*•”’ýƒÓ,J³<ä'Èe˜µ'‘ºáÎ0<Áª2]R¨@ÊyAÒr%F4°Jå8+ã109Îet ÕxeºÄ•, (RÉ󤂦0K²2ŒÁ ÅQ\0:Y»´®Ò+Ó©È8Šæd$¦`AB‘ ˜€Ï+€N”Õ)~³·_¬Ò Ž’Ó4Š‘Ûƒ+Ò©©1 œJéè´*Q ñx•ñ:ÐÅ,`ŽÄÓI_M™¦ • ªØ º’S¼Åä$1®Tò-;pê¼R.È•ršä” X¸)8%X¿+i ¸))J þcxcÙ£…¸¶*Zƒ­þ1øˆ®ï$ZÏJÄúèô0h]â+¨ŸU´Z•*`#Ωy*ÿéŸa ½|ÛÄŽbUÍ6%PªM’êmÖ*®ðíª%óªô§w-³ûj´``¢æØ)17Ì&ˆÐgÝ(´ '{Í”ÂÿÚòØŽЪ§‚¬™ÅÕªè媢rê Û€ÉcÿZ© ‡S´«CbŸ#$öYš¨Æªmß"Î_†ž We–%›õðÜÊ;“Kë+gÁ4ð ŒÇ€xeå…)€ºÂ1%†)A&꫞ÑÑ‘ÑñD÷ ˆŒ‰ìüún·ý+©Š+W55 -¿>Ú«ên€9VÊZ’×:k2+°Hi‡[¨Ùv¦cLÅ|+“ß奈Ɗý-~+ÑÒ¯ÐyõÜõX-N,{–våUo-#]M§Õ%Ât+DU½$©²¼âÊcUM–‹»¼ÕÑ /b£¦d•»ê…ª+‡Ê£Ëç=¡ÀqIaÇá(¯NRX—Î^ÈÓáTFXTfQn9‡ç`æÊ¬c¶Ô,­˜ž-3`d˜j°nzµ6øOj„špLFÛ¡J6¥4T_$\QÙdÌ#î‰FÁGáþRö/µp#Ñ4 ÚG‚^›€”sVa'OßjÛ®âHZ—+åðìe ÏP%‡£(Î)€µBÉ9’—ÉQkLs)ž–€“8©­”¹£1Ÿ×_ù˜~“~‚%é!i!Wéàgñ'È‘PBjè‘>0ÍÀÝ %¸ ~—šTqí4<]ó"±1Ï<ÑjOvÏ ¯àîƒ;}Ö›»·xÄ”ˆü• kã’èÑå›Ó·œšÖrø¬^A®žEmœÛ¦ˆ]õ‹›!kçÖ˜o¨_küïûó€+{ »4&hÅÒ1?å>Þ‘:@}þqí?´ÓîL)š{/å”_®rYÞôe5ƒ\jŒóÚÔÚÉã>zØsü”ˆ¶áF×:÷Ö_Ú5é­££k®:výä·öýñGhzú¶¸Ñ[ß½¶zõêå«V¬÷ßõæ­s[?™8±öÚ¢Q]ÿÜóa§¦ÛÞ{±íé Ú{+ºÏ9bn^³wFãâñïžßuÔ÷º‹AÁ¡¡—¦Q綯°á†Ú¹æ¿Ïvhêš|€vц '<Üâº8oIXµr%ÒÔuQßUÅ9§Û„·<š‘™YëÇ¿>­ÛÂwaVV³9dBPß¾ÍO>}S}'µkaj×w»§zåŠPXX¸pãÆ“¬Û6— AkÏÇñ|û Ș=ûúìQƒü/>LÍé‘Ôñ³Öþ!ëÕ©É9gÓWľÿ ƒ˜ÿû¸¸_SÚù¡äü É‘ç6tïþ͈ÛaúÅË~ïç5ódöÇÙ1×½;wÞÁðWÒ¯Ÿ¶|»eËü½¿2ëÞóšéÞ¶m)S¦Ü¿0î-” œ{>¿qD­°°°uêÔIþûÂŽ%{š»86lçüþ†-ZLòÛv¿¦Ó÷ÆkÑkò’S“.SC“‹ÎçäetÓž `з7Þ½pÁ¾?C6pҜ߾ÝéÁƒÜûޝpóqÁƒ“ï$þÝ Í_.õZ½b𤋮áaýû·<ѽsçOŽ;Ö(sßF.©…4ž2¾^½zŸÏžÝªq“&Ä¥?Èùo¯øâìÂ?{/Ù¼yÎð!‚ÐØé yð—ÑN½8®Ý¾ƒ;DÎÈßÛA©üúÑß»ÞXT”—ÝÑÓÓsà“)kómýñÇ̆A{÷ɈË_ùm›z«@Õïc€ä©E÷ò<< ¶Í?‘{°õ£Â#‘Ÿï¿ þ¾[wû›ëúÕ›\sZH-ðwEìTê|ZÁÏwC¾ÁÚ¥×»¡`lv®1ÈåÚÍ›í7¼éîž1yr°û†Ü€ð^}ÔjÈ®=ÛÌÙ±#ðö㢼Ìû÷“·i¹$Ús]?ïÌ»ç·öÿºë(òð°¬Ìm·VÞ¼?»svZ~bD‹GÍgíéÔÔµiӦώoù˜ôçÊ _e- Oâ<}áäôË¿5[Vp±É†7n ¿ãþ´…iüþƒ…#Û›Ž]š¹Ä¥É¼ YW›æüªhmËsùW{xÜx¨¨Vò¨¾¹wožnpæÚÔãÆ“î;¿×àɵ܃6qãšk7äää\X1ç`ÀÆsÓ×ryŸk8®þ“~ï\×m0Ó°éÛ}Nï9xº8™Z7Q8©ËáÐßû<\ÛÈé߉3.|5 xQÏ«Qîr+þþ£=QÃùÐ@ùxÅâ =æ]½ªöxú†Êx\†í`Þ®?"vǯÓ†äo,öT¯?bMÍ;v¹—&¯ ÎzËp*Ôeá¶ë :Æ[7vÊšm§ü¿½í<¹~²þü§ËROÜ;Ý+ÊãaL±Ë¦'ÔÕåJ'D=ÑéÔÚ¹?nÿÄU¾xøš– Iöö›o%ô­y'ûjÿÝ1›®O­±þpîÜ´vcíÛ-áó6~®b'Ÿ[Özl~‹c'ötYXüVkÏù®‡ýgŸY¦9-«y§Y—¾ù1WÖ}û^ãÌ€&ûܘw¯e§LµûÃÉS{Ìj_ø¤G³˜F^k¨±ý¯ì´qÙïúô?Ó°[ÓâÑå½òê3°3xYÃ]&˜âÑtþHÖ,”’»ÊrÿÌ?›æ~tj„Ì{«iºüís׿YÝâÛ¦Öõ¯»°½Æ¿FΜ9scRÞ»_yõNƺ®Ò¯‘‹ó‘õ›j÷ÎkžwdÍ!¿ø-é…#fîh½nߟ¿Oõä—éÎ.šE箾ºàÉÏóŒN_øéü‡…ƒ›?¬ßÜ{ëfºK³‡—ë69[ÿÈ ð쬫éÌûM^®ÓäläŒ/¿Ì9¿ûú±UëRï [²téÅKÓ»7Hì—tóžq$Ûnœ×òÖ×n¤vçÕ/Õ,I2»d-îüdÍÄmŪå»\êºf8˜ääæ×Ñ šY‹Ô“(Ò§z¯zV[GÒºž]qå÷C‡Îx¿ýw}‡wʩӪا÷¡ËÇßÝÝ<}÷Ôfý~šQ±çÍãnnn=Ÿ¾°ãdŽ{Ïv¸ZØ{É¥°o¿~WcglW-™þÙgÅ·®˜CµŽgÂe¿íßßñÀÉ£¯»,Ci׉***q÷FÿŸ²²v¨Iöíߨœ”ù73#ƒ>ѱK—VãÖŒv4 ­[<X¶ŽY½víž¹4íºÍ“GŒL{øÉ˜éÆUǦ~ñEãzõë_<´¨Çò+SS»pxËX¯™óXÖ£•›Ûˆüœžiwÿ¤Úò5kîžœè7`½:ÿáècÇç^;¢y#iR?ï+|nïï>sN[¿ÉXgݺu||.¿¯kÞ¬Ù¢ìì6®j.]ºtîÍ3?~ÎfY¶mæ¾ï“òþµùRþº‹û·oWì´ÃÛbØáÿ>¾´¥à ÿ–iSŽeŒ™^¸6ûq« &D´ÏJºufÊÎA_ÞµsçÆ‚Úi 'Mú?öÞªïý׊Hi‘&-Z,³/„ì”wæÞËd,™±G¡Ñž´©´ª”öREÑ^–T¢UIT¤„þçŠRÓhùúüþïÞïdîœ{Ïsžóz¶sÏyžùoŸ˜>yöLI]}²å– —.‰-J·k¬>ñpûÖ­‹6Nöår·W)kùõ¶ÐÚÎn1°½€¹Émaç}J!Æ{Z<|èîý5ç>I…4¼6DÑ ±±±7nÝê-R’Ί¾ç¨5¦|»Ç1§qãÇϯ®¨€Ud | eó€N<ä¨";z´0 Š: uu¼åœk›5£¤.=õÝDŸß[^^~ÏOçÜ·/'¤æ¬èNqW•¡§F¥«ªªÒ¹Ï$ýkÊâuÉJt »\/oYóºéí¶íÛ{3Œ“>½ý_•„§¦NÉÓt1?qÑî·ë[ΣGæWëGKm;p ÞÃÒù§ìLÒ'M%¥Þ/^¼(9áüàÍý»Î™aòуŸ]X1}çÄ)Srîyg lx •zs®•Õ¢YGPèݳ«ô°¦ÜêûŸFNÃ-ºŠæ¼º{dåÚµKüªŠÞ¼®ï5"ô|D¿óŽV+Ikœ$’ð¦©yïں듋6›[Z.ŸÓ_z©Aåë×ÏJÕ3›ˆ5%½pjjR"ƒ^7¦ø>O”— ¯¯¯ß8sƒžUz¬ ­l¦X`°Ëtà˪ªÍ=<ÅUƵ,ÖÃÓ/.zÁ‹‰ZúúwqÍõ“ï ¢ÏÓ^PwÓødà%*§dQlì€åïÆ—oþô©îîÛ«-µÏ/×i‰¹vÍ />>˜Áèúªb}µDýÝ·A]µDÖãÜøëÇh¯ê¾ñÀ˾¢¦Ü¬ä-K1^¾ýÔ©‘¡¡¡xYI !åû¨ÛÙ ³Ø¬±äÒ%“5‰‰,`ô¬öÚíIM=<»ücÜöíJ㔕õ•VNSZézyÕøëªW2¼hp>…öîíÛWÔ$³g¼eƒtš?¿¶9ÒQ%Êf¯pƒ¦1ý‚Kt·YmÀœãÚk¢ºº±³óèa–<ó½YoÁ»š²³U‡ÏÔ§ÎÜçóä’´‹3¾÷"Ëí™-UœQë£Õ}Q7mæòh°¢åe ÇV0ñ®–„…Û÷ ýKe&„ì_Z¸iÛ`êîö–C¤¶Ž¹£‹(øÜKBµ>y܉w˜Ûnjha¦çñWâ?$ºÐÝ]\°í.BEz݉ÿˆ4"‰Ô!þ£ˆ€/i4âñßÿMü×[üîÃÿVŒ'=í*þÉ´ÅmŸß­õ.Që«»rÈÎÞ±±…±1C¬z»vÚã€ýò=õxÖ; ?ðhëäã §K'ûE,Z1ý¢ÆÝ|û¨KV+µô®}5‡',[,ùúº_М¨Mï6iZZX¼žú|¤J$;XOlÌâ;×g˜–Jc¿·>< \¼mâ,ÜâÁz1VkTø×'g‹N‹Ù_ûömDbbâÑ3=RñúµZ5^l¥‡Ê¨º&kæ3n\ßgϞݒZcêïOe²Xº‰ =§ qN2b{sïß­ÓT‰Ý=dÈÕÙÇM4%õž(ÔÓ×tŒ¥aã%Àe1éØUýôœ²JKž|?_… "‘\`KfÛÕÏ}Ÿa–Dìô»Ò‰ñ‹M[b.obpwÈëÝe–t«ÒsÊäɇ¼j_Ù@‘’’*9ŒH¼}û¶ïõè¨(f]åMÕØÝÁZ›µBd¶lÙâzä®êäÕƒ•f:”&¬S]í/VŸýºwÝqÑA ô°ÆÊMÀÿ¿qãF\û^× ¬ɉèa=µ°jïÖ­"ª“—V â?âØÆ+‘ø€×Îf›5†c6Db'Õ¤µ—Yê4“QÉzPuÿœ˜„DÎóä… {mw3^pÄTÅÁƒÝ=âÆzygoí»wC›Îîß/©  °žê9j—e²Ô Aƒ0-üúþ)‘EìÛ»ÆH¶•ÇE|>·„^Ù¢%·k×®……ó×NyóäòP‘,àmݶ­—ŸŸŸˆHbÁÅtV^߃CÞ¿Òa!ûH Ô/@æãÜ*އD€KByÉ6.¢dÔéc^Q†ê9aÌ5‰9q‚vÿþýòׯ@´IÃoÐå9GÜ®—WTô¢ÑhÀÐì½6wîÜ’Ó~Sî?x ÂY–úµÎmÖƒâQT¼©ˆÌd·?ÐþtŸr‘÷5—ïØ1n“Vˆý¡š‹q#úe–˕ʈ¼u7rþã\ñüøeˆ]q)#ebTC¢P†g6½•M_ˆ fÞÙc-«Á›(¥05æ„÷ÃGåç#K޲‡’Éäyg®ÝÞm)Áê/·}[±™[ ›š1×®]«¼{DyÙ²e‡Ð«£úŠŠæ<|¨¸Ïá`ÿW£ÂÃ{Ùïw´vËÖéÜ0]]݈ç2jÎb€y޳fm;tȪ¶AŽæ•u÷îHUüvrþc£³óÅïÙ»¸(¾|ù²Ü÷f”§ji½žx¯=Óe´[>°tçÎs<L9íWÕDÄ*.çFRÔî+Bg0*Þ<ÎsÌ Ó Ðm$g(È_]¼¢Hÿ¶ÖP¥1… U~¨ˆln¤ˆdeeM«mxùÙÛ=sÓ¦ÑçY r‰»˜šnéååµÙw_MñÏœœœtúõIIÐç–æÊ[;%¦Ï˜qþ©ïͽ¶ÊçýïÞ½»^;48þpá;YxI ÿWb¢¢¢›¦6JŽ~æ^ùe²M€¿»,>¾—ÈÞ½{oܾÝgyž>pÓDDÔ]Î ;•œP~*ê°ÆcÍÆ•+­Y™¹^r£F èä”ï#*5ì`r™,a»CCCãÃÇçÉý–[[Kô<3}ÅæÍñ3Õ ÊÛè¼ÊÁçšßÏ–>VˆŸ>Dl¥öéº1‹GO Ìf³M,,¢2249žž‡G\󧆱ZZòIIItß'&››1=JÞ±c‡+pÊ}èJË)^÷é£é>"#GŽN~VxÑy¯ììÆùÎŽ‚|*oŒ1ÛHèäädbn>¼é½ÚËÊÉwè¢sίk¼")iéõ¹Y……Ã~n¦ÉFO›“÷,%rär­l ¶r3ÝŠÓæxÜñ³d¨ ¸uéÉåÕEWh™¢Ž‰þ"Ãdd˜…©3oܹsÁÁ%¸N—F}2ßD—–£r¦™šŠçÆËE½{¶tjQD? ̵HèµgÔü¬‡Þ¯JÒ×Xýû,ÚÜÿÄÕ‚}à‚HU¼x1+¥©"'ZÂK´ÄCƒ2›ßËÙpZrø0qÙ(Ê€)öû³ž$®LLŒfpŸM34ìçQœ¶0¯¿¤¬ÕcªQ(𭆄„¬<˜8øÖiGIÕ: 1×¢ý³.]¾¼²rHa@MÙ’ôtB]]ˆà|ÉÉù)®w"Ž£DDFŽ÷o:•i@™óLŒ-­&Èd  ²[š?aÝÝ¿ï<šá»ã"Iiˆ^Ì`JL¦8ôütÖÝÃHåýS$U§qe7oZÇÞ”Ö3iÞs½÷˜{ædøë÷ß?ûDÚð”1‹Wän[×3Mb†—{[ ·x;޽vû´'rì˜BØÍmì¸qJHâ:â[÷ÆÉe?%ºÊÊØÍ¼è€r8û? »c` ¾â󡻜À  (uæÛY³†Ž•{ãFåÀ™3µ`·Ïýµþ”ºÇ}›ínK+ûu ÅLO¼hK<ù¥‹Ùtúø=©þú†÷íªÙ»£—ü椉“ÏŸ/)27¥Áóá9…è·o&ªšOc³{Ož2û\>ç'­·! õgpÅÆÆ·üñÐ^ŠÉb†;õggô™`&+"**±Lá\jj¾^Ãõ«ªÊÎÏf&\ÿ2VqᦈtÖÆãÞ¥Í £ÏW¶\¡yÑûê Gk.¯þìZU´OLünŒ‚Öi2ûáýûz¯î¿ˆ{÷¼&熕hU±åâ”ÙÈàOÇÅÂÃÓÅÄbŒL.‘Ö¬±s½±UáÐ9ÍŒ<©ªl‡£ØæcŒÁÌGõêE¨}/•):鯭yƒä6†ùðF/Ng}Š1,²uÇŽÑyˆG.=f›G{XRqäºvDìôÛ§e´n‘ð¨Úìãç—u±7S>|í¡ô#µ‚yç“HÎèˆìØy»µ¥éËúõ¼œÓ~þ>>îηDDÄù~fò²E‹d?|0ÀM©’®«ì=û^Ë¡c”¼aÚ‚¦)¼·z=Î9^¬¨(tãý>Ï-¦†5½0dè|È{±ý.:ÒN‹»$Y¯¡6Þ-A¹¥‰ËØ¿ÿʆ9R"ûüúnÙ¸lÅŠx  ƒ–J<¼½;©ä„ºHYY…¬ö™Îί¾;æÉtâFšŠŠt~þtYB¶ØèÆhyÕ­»‹O¦Ñ{¹HŠõñìµS,W¬_?04TÕlyðñãÏd)ù}óóÍÛž˜N®ÌäììUYëç)îÞêp0M5öÈöíCŠŠ4offöšª5bi™îâM›z;:½ÎÊ^’R[}BJUmˆ‚VpÂfÍPéQDK8¥O…÷ !gœ9á7xذ¸­[ûŠêΟÏhlp‹Ìy!*•wÆª×ø“;´›úV¼}ªl2=ØX*&ÆÆ’Šeûn6”yÌ0½¾q£ú‚JxØÄ’S6uäX#Ù¥ãŸ5ê3¿|Ú`¯¾½6P]G´Üt2R1ì䲪âL݇çcvšmM5Dò¼û¢Àq>s2ÕÐÏ*Y3àÑ›ÌÏs 9¯f”Ü› l‡‚bØž{|÷5pË5Lª$x>8q7TOŒ â)§£{Ò§Bz‹Îõáu'GGˆÄx/Žœèê7ÄÚú…˜Tp9ÞX$‘^Ù_4:´$#@ ½";¡èpxªú{b¥CÜÝê·n•¹¾%íxâšÔƒŒ¸ƒ5º3£¯74¶³[CXxðs#C2bË–]% †1½=ª  =ȶ¼Z>< öe¡¦®í±””%%^â1!‹#ñÙ·ÃÎ_^í’»+¹¤@TÄ¡8³¢Jné½snœâ†,Yð´âÖNcŸ€Ì„DõwnUÑö.V‘Ÿ&EóÖ64½ü)L pÌuÞôwŒÁ6ã% ÞÌ´üõÞÜ<#2‡ }Û’#Þ;ù¤1],çé[W·rÿ›¦~ÜiÐKäãLJ—†/*êúéýÈ!šRV…ÖïîŸúTr$Ïe…;ƒ½ ÕLWÜwôhï€×Æâñý{õºyéšÚ¢mÛ¤8œ=É}ÆZž6Ì?˜éÏêº{^¾Bç•Ê'$È ùT?q©´Ôö¦Æ*UνgñååñxâªWégÎ(¸V—êÌš?OR~ÞÄ›¬^3Oø\Ûr6ºhïóOß‚—Ž_§*7%1|ò” ˜¥—§¹º.s}"±Ð]%š•0ÿqãñ@±Ic|A²žª,æpP[×Â"§»žˆˆ™™6}rrÕè œäB÷Ç#\™9QK‡è(äà×SªïS]º8Ò3aûvbSKÈÄ©S#¶nß¾lø”ýož&Ú3k6ZËe&Gž ±“PstÚÐB;½=ó‚SœØJ]àÉ~´×Ò=éû”àË•è'ž}g¯¾+G%©o¯Mb¢ÖEû?öÙ¶Müdè½c—«tÈ@?ùÐ3Þ<^n›ø¦Òž1A1óÜrùŒžÕRŽéÙ£$F$DlØð¤8'¤ùô`0“K–[öõz«XùìYÿrŸFS²ôx#ÀÞ'–AŒ'¼.Žì ³^ihpެ–Òš+¶¦¦Fîc|hzwó@°÷§›)Ï×Oý(’0zð²ãì5ÕDó#mw·œ¯¾§f“¤ú¦¾J/08ª¼òæìÊ"ó¡Ôõ¤ç)ö/&NšdìîÞ»w–Os0Ù×·¬ëÃ;šu:»u‡ÁŒ•C—è]î½rfAÎÉ‹z×øôík0V'ÓnÎ,YÛL…õÎ}Ìö# ¤ÑRòwæ·4åÛkQ­ê¶çY‰œ¨Ð—°¤‡/óž\ îdŸ7Å.Ÿ³/í‘;÷q;næÒ>™È ü[Z¬1m•`aì8»!<å1ÎqVÒ±é¢c†Îç4my ´óÉ0­Q††ˆ¬F>]C 8IKó*ânm;Ú€á÷Ríܧ׽Ó\\–Ÿ ­ß9$2sá°sѯ%»,½™2c|ÿs.pFÓÇÌHTȹc7È£¨äøËê­/SÕÕÞ×VpÝÝ÷€0µ S^nÅŠs2ltD•ê8¼38¢¼FqÉ£G¾º¸xÈ„lÝõgÎ0—)œ•'¹Iå Ò1[é4zZáËu¦¦wOq#Íš‚âBú4T}ö#S.äÆ¯Þ±áÒ“g2Jô“¨Nô}IL;ŠíorTgà&6<í-WÀ× ·qÓ’mIÄ™¸ùŸ­«;Qr¬`ĵ©ó ‡Ož <]}@Àëææ/Ô 6­|#coïåxvCeå7æ„6Ë3³ZšÃÅ$—…ïÜ9ÉyN5ÁÝÊro®]óèAb1ºaa¦ñ§´/fO3˜Ô• MMCt• ]š¬Y;€zͤÈEÎSª¥¥² ŒÝ\œÌX•DŠž¡9ZdfœCõCÅÌhÞµ5.­¸ãó9ŒèÿºÎÐÑqˆŠªyzÐ;¸®ÆW}h^·¶>Þ`út)žŸ&ó•ãËçÓ`™ñ;êÏ„84=Œ]DÙˆÈË‹B/QX=ñX u(™ãÚXYîtÒ÷¢)¶ÄÞÎ.;÷™[]åÍ~n×TVûÓëOs•îÿˆÓÐÿ^¸Ê«.(šÕÈ Ó³®¥e iãv,3¶j¦–®˜xP™¸~S¦|èÏÖÓç‹ðx;q"‡IÙºÃZ^-ÕÖöØQ¶cî½³!¦ëµ›q ŠŸ{ûû7ï”·8+¥ke¥rÿþ‚•+jØî–:O{hTçX Ÿ1ô©%aÁ¸'#§ݸÝÚnS­®_Jž.óáéÓácñµ¡[w\È^O@?7ÛŒÂÕ‡T/8L€ÉÎ&bö}±xs:+.FÜÓfjÇj°<ä°õ®ÝÏúœbåQ@'_Ý[{•6ö-¼ @×ôÎRosEöëá&½€†ŸZvNUÏÊŠsV<xHã¨É ¹—J :Î9Á}þz,¹n6ptÁüÄéÔ×µ¹·¤ŒÇµ0g¾~]üæõñgךe÷9pwO1[ÿ’´¶±ÑH‰DÔ¿é¡ã¯ûHåfå½OM=|4g\lܪ~·4í ] 4xtÓ°É“ó%/‰Œì7ÁbôD®ùÇÃ`h‹«””4-KÛÕOÂÈTsô6‹VÏA¥ð£â†Ødò«²êèíÛ}´|t§3î^2«rÐôhîù<åÑÀiމnœáŸúáÉê2bq°ñ°þ*l"éOµÓ8L#5x)ݹc×wsúóQW›ß8<5[wÍ)îrí„HXX•“§Æãg®«ìݵ+"n„Ãå™Cƒ€Kè3h¹œ•½}vþÚ"Çð$™l·S~ƒÉ‹ÞÒClN$G SroÐâsçÖÕ÷vùª~JNF¹³ž¿§‰-ï¶uè0ós€‹q´TÉÈ||Ð3o€ãþöénŸ7&/¨[É9±¨ÖÐ`Çùóâû×›#G’¢L57M((˜’›Î:ñ¦êà‰­€¬§yÇó$>zûzÁëaˆý³­­jÜx€Õ}úz:yéXbäª~6™@Úk&ãÜçïL·ZnxA˜(4}ÆWäiÔʱñéÞÙÑ·Ç¥¥-Ì)¦ 9᱕ûüý-©Ý³ÊÎLÊ®È9O®“BÕÏ“Òþôjì)Srxj½Ý뇖FÓ¦I¦Í‰ËÚçP“…z°øB¹aÙª~oç:•Ê9g*¨š Öð•Û˜ÚWw®šÊ["à1ð=ç¿*ñ¼êݳ÷wFLÐÉfo¯‰ŸÿH„óPmc mÔ€šh©~ë^dTÞ="±i3MI™ãí’_6V{sc–d ±X<éÒèé2¥§ïÜ)¡E8fi§š„¯³95c°ÈG¹ Ü•wÏO:^&îà ª2_í³a‰Žú…µSöx{¶Ía§=J«­ËN^Ø"1tµ—㉴z‡“Ô[žkãØðz¼®éÒ%Òc—?ûD£’§šÕá23“ ¯ÏGs÷Èúð&ô©š®È.ðûâdä/Æ8(-{rnZYÜKÙ¨óûgE[YYEy]zªþ¦ñB^fö­™q3*Ü d*€ñ˜==)oè–S£ííQ0m† ixÎÝx‚Æ^Œ3Z6=¸‘<ôÓû~Y„9Ñ qqZF äuþŽªög“#›pøpÙ67Ky ÔÚ·ÏÞ3œ¯êg˜k98Í9(ظÊ*L1a öXOðýèaY<@[kkq|(²eKÜùÇÞÁsg=ë*÷ï§U$/±Ù±æG{–H_ž‡©ÜðpBD˜”“S5ÄžUx]Wæ¹Í˜!ú—#¶W(‹%ªëèÚØP%% lº†Ó¥úºC±x€ ÎEµÏ…í ¸-*ÊÀ/T ¼´ú.ˆÛü_ŒŠ‰!ƒ /2®`\]õ§ð£9Cö¥ÎfFggÙ¶ÿ¸Êçå•îÛV\ÆIo…u¥k;ÇOttËm×HK-˜5ë#0)Ž)ˆ2@æºušå¯®„9?,e¨ÎÂϼ¹8“Næㆴ7ÎsçŽ} DB_ß_šWtÀáMÝ‹ÁÄ”êCtΆ[àU¶ vÕ*ߺšëý£o/odLœ0]æ‰uý³ó#*>¾sÆlÔñãÍÃ'èŠ,ª­µkªYKÈ?"¼ÐÆú9j%§¸2Qƒjú‰8žkÄBzôk¯ "ób ã”&M’£y{-Ú°aPìÙEÊjßž^>ÅaW}KÊšó!nfõýqûëµBú8b["ÝÄ\R«Àœ€ˆ+šï§62–fo|Bü×oy^yEΰÀc± ŽS}yGW|’c«¨}°ú)Ú_ßšÉ$fU¼ŠZ5DB²ÙFê0`U?¡[liB¥6ïßnŒÑ’µkå6mö¼qÌC™s×wøÅ‹O]eû§¥½w<å»é¨þ0MµÄhàNЬ1÷ÜÛ{‚uêç§‚)£AÀqÓ̹ñUSVÛf]9qÖ ¤phß°ëO^θ3Ù&Bdâk±è—-+P½êô€ï+rI <áEÿ…Ÿ½‡ÞýqŽ3®+.]¾,*‚—v5bó‘ÑšÇóošJ-LOÕ iê×ì¹iS®¾í‘ÍGõWÓÃt0ÿtjpÝèyó&SÕ\3 U šp Z£riÃË7?,;eŠ þÙÝ›ó›™gÌм0A|åÅÂ}–‡‚Þ=éï?ñ­Xt©³ó™ÚçÉŸ·oß~8÷áÚ5Ž®GŽ¥³òÌ€kºÒ†·ÊÚÙ9A?ÚËõs Ï)ŠKF𗲑×ZÞÝãn×ËrÂû„wÆñð…!ëâ‡kp™¦¦ 5çÀq¶æÅÑ™Ó=1dÝ1d³—lMÎyr9òfƉ-À Lueì€,Ï Ø´©·nɼ~=oµÌÕUkÖ ùzéºzøîçJf[œ¬-o‹ö˜8q¢õ%i©cóéÒCW[×p§OW© ”|U­z飯 (?÷§•®‹¡¦6÷RÁ”þ‰>yËÚ•„4>|mEÃCýŠ é¾Ã‡#û¡å|O!=䄎v3JÏtMM[>)õ¢|bSQ¥#Š­'ÈÍ€æî‹"é„ÅciS¼¼¶xLÃOlYüS’nyA~pôÒ¡ J´ƒ§* jlt:°zkÒœ›Ft²‘¡áx33j{æž´Ô7K–¼{îðhµ¥™“*Õð­òvÞðñãŸö_ ¥/J1Î̺°´“:}dVfµ?0J˜B^äxÒgëÊãÀ—”;Þ€Óʆ µ4­ôánœôtÏÅå U%%—]¬¯²61»"c6*¯b=«éC1ã°§œÞe=î¸ èãÂ}S—)x–îhÎ/8uÒoŠªÚwqÙUÅ5C³oGå‡Z.<ac¶åŒ"˜Àˆ nãÇË÷jœôÉ÷Å¢scc§Go~°¥²ƒMDjê)y§=x—MÂHÇCåÀë/<Õœµ{×®e;gä1oOˆ¶O° ž ›#fy}ðh­`‰§ÙÙ—/÷ç>[ЗFsÍ¢â¾ÒÚ†YQu0/§°pn¾ô ûú0)àDŸnÑ>pRoÛÇü¼g…õr!¶ÖÌØ“šŠ›ðLy¥ü­üü“'C5¥@¨„­EBPR¹öƒº9ü$ý»Ñëï/äDOò;7ºô˜­¡©øÅÐ;i–¹+ƼÍ̲²Ý¤%×Dbf¿Írû€µÐ{~­zþûWÄ%r)-ÏÌ¥eÔµ£ò–»ÜùTÚËõBÌÜ“ îžZ;vµêÞ½Ó¼EZZ>Y¶ì´¥~`~þäyœf¯´4)ÇcóάÙΙsÐeÄ£gWw×¾YšŒàžýO KƒõKJ7ä\óšvÄûæÛ@ÉØ¸‚áëv¯·>|ÃñéSgNÙi·k÷õg®M÷yÿêp°fÊ›š¼ èÇõîÆ¯…*o ª¨¤›lsà=~#«2û½fïÞÛ«ÎêØ¿¿oȧð¤µóm=ïW.ÉlI½wÊÚÐpdnîðâ‚Úðuk¶¯ÞÿÖWÊ©H,îs'ವƒƒ®^¶Å©š ÊRK—ÞõñÕˆ,)IXv¸ô02yÚÚëÃM7îB üˆ~AøïQÇuÏo"//˽¶ù܇ÏgÄÇ,ë æ$· ýÙí).ÂFîM 5ÖUø|–œvµïù‡:H#ún;`¶ä4ûv¿M~'λ,Ÿ6sõ»'½JÜŽœ÷yÙnK—¢³ oœoùð4ñ£{±Å›š‚-Œ¡ýŠ3Ï?&ø­Š’£Q·z»„N2œ I$–1Ÿ\òXv¼—ˆLÜ­ôñ‘ëÚó.^‚pÂÂVšX\ ïU‹7†Ýq{tálLŒI¿¬ll ýt”úæ£G¯é2âb/æ¯Ýmíä4÷y±/ðKŽ{öoj¼Ig¯ñÀ oõþÅæsžÙ+5u2E›V’®¹y¿¹s§Ükúh—ÜÔdÓWTgI²Ë0=½-J ,þá›÷ž„À3§ëó™é® ¡Ÿžmåº]œUn&9qÖžê–fXeÖ[Í·ï⬬oÖF¯±´µísóæ½R8oHÃ*|È{H—»76vÈä)û^qTáU—Ї~z™â’9èFÆ `§S¼µ¶‘Š&¥ÆËõi¬›³~}eÅrs6ëÇï™›Ç*æ?PtPY߸~SCާ˜7X=÷ ŠY¾pÉ“'£§.Ü·fó¸qðCλlX¯=z•ËÕ©ÈHTßÛ÷8¸r]•ñÕÊ{÷ì10¹DR™å«ç¾p0°†•/ý³¼3Uwõ}uöôå쌀šÁ e•Ã!òs6kŒ„¬¼‹î®h\Wv@UEEAÕÖ»8FÅ~ø@»QT4íú–Í7SŒ•eeÏ|ÞÖæ8)îböVÝȧŽÀÁùA!jYÃF8¸>ÍßÄÜwßô|­‡g7&ØîÞžš1ü4oåfÊÐÕÌlÜíÞëÖ¯©««3òvqÊ7´·—ž{vrö>‡%õ©bê.2J¤#"K– —ÕvVô(NXa²ÿpZúó³`’Î5½=yÃ4{Qª¢¶dŽëÕQ³÷Ïñˆ^øùìnŸâš¨=ûö±ž\Zyìó«™ÏSgÚÛ÷‚\½¼Ê4V^Ž©9÷.âD@oG•¢…\e»cÃì¼ç>è·áÞ,™¡c &H€ñº¹;$#fFÎÒ¡g·ïB¹§xñ“ºœ UÏ«Õ3Z8¿uºþìÙ3ÇÓw,ö#Ç휜6\¨²±µª|tÁÜ-*ËGJeƘµßŸihX{8æZÊ`ú0ƒ&¢:VËÖúrSîÔgh×”õÀ‡{Ö*[§y²ìµÎѯs…a‘(kižÚ£7Àαµ± ë›V>ßËkŒÈ®›¤ÁóæÍ;~*ØÓÓ.ó@Šê®¿ÿñ Ë·¥¥•Mxi#cgÿvðàÁªDë= y¬Úë:â1KMs>¾›€'X¿j˜î·íI©þÓeIIRõUÑ^ž„˜÷×㇠çôÃÂØñ™“¦LÑÕ׆`ekk”—0 (µˆãþ!{R'§€ÐÜ ˜–°9w÷£Õ Ž7¿³ø¨8ˆY¶L½Û›BAÎïÙ‘;@\<|×®Wu;WöçoÆ9*{îðqÇξ ö䰇$™È|ˆ[Hö—^õ^¹¦Ða÷ÀæÌtdeÃ8keÏ[f?ö;¾öô°Ä;wìTæž9Yö¼²yÞéú#ÄÅÅ™ªŽZ¦§¥ÆoQ©|I /G›Žrñæ /O¼1($" Óf¤jÞå~|‹`»gDκ<&Áÿ~æBų!Š6êÓ¹ëWáÞÀõUÅñeEW¯šG¬œ˜°ëÛÏ.3^95a¯šÜAÿ96.oY´H¤¤´´÷Ö†£ËÎ…JŒ›"“xû¾ÇÙq1ãg‰‰‹Ÿ/?y3mŽæú¤¤óÅÅ#Dú®-<°cÇŽEy+Š].9uŠ¡Á«\t>RôqþÚ)¾©´”5kÖ`û?À˜°M˜öçÆßºµ!gnªfh#YràÀ›Ç<Fë„9VŸ‘zaæîÂB¯]!ïU–ÅÇcßìwLï}ñâŹ)îõäs á©§3‚ÞM÷Iåô|]Bf¦Î•+W@xã€m•*<Ûµii9EÑ“Áõ©—véî{õrÕò‹Ìó&Lö#oéPeà[«ÉÊÊN365N-Í™ îÅvðj×-Z·Næ\ãË)€vr Çpߌ­Ü"0ˆëT¤9ŽŽ1ï«ï=¾¼ZY¯¡Ï¢û÷y•7zU—Ki˜!if¾O¦þeÙYÍ!C†bz1ëÃÅEñÚµk”s£N‡Ýi˜£tSžw9?ŸéñyÖÄ>}ú<«­È1CÑ ÜW%„\lãŠs½þh ^ Hd. MºrÅl¿‚@" 娆Þ3ßH%ØÛÛ›-X0u¨¢âuÇY³~=›'š¥2çôšI“'3¯mÖÌsg³)“¢ õå宦LÙwù“iêÓ;ìêÏËG’¢‚ë& •–>¿L–1þü½4™ =.¦[N4å `æÚÒX¥¾këÖ­s4 ÂǯTäDôôôŒ‚dÑ{Ç=¯¬'°ÖŸ#xsuIzäH°©«7mº²xÉBTTÔGÎì‡õ)þŒz­´fç׃Æ$×¼cšÊÕü®@=0&¹<5`À€¾×g.œÚXy=8=“õðÞ ïâOQ¾``d4@ÁØÀT¯ (²zݺ\¼d޽yfÉŽ#Þ[Pù|ŽŽ–PÐ ¬]ô¢pŸÃÙôKúÍÓßžyª“¦]”VÄ c×™3ε›öîeoæ:Þ‰ž#]5ëNâu`d£‚\Ž)¾Kn@RRRDÍ» 637—›ŠÎ¨²‘Y½$êÚ,µÄ^MÙæSó÷ÏÁK’Ø·Æåy~&™ƒÇxZv&hl ÊòšÄýs2=ŠõíìÖ”Ïwt”:l˜ë^cšâ±‚½5ó«Ÿ;_“˜!sÁWNiâD1kkëÊÂ}#´›ëlÇM˜P”ñ n„:¾´bÔB¹©>gïÑßqÌÚPS¦7bÛR:qÒå "ËeVl.ÊõVë³(¬¹q ‰tä¼çðaá¹Å—díÐQ \tRSkž?³47?À•ŠÛS¯»kׄE ~Ÿ. À¯«¯?ÏLÏb¦ã½îÓwìÚE¥P*BôŸï?|˜¸Ë|c D‰F¡««»žæ½åRsll¬ÕܹRžÕ¹#¦×8ܾsNjAÓ›¾[–žNHÙ·¯€®©IÚ¹s§ßq+sW\ y€%ªxâÜóé3f$ó(&ž>}8#1«¹‹•— ÔàQ9Ÿu‰©%±¯`×]SSñ#èÕQ»B^›=¿¶9éã»ç$ ÍÕv§Ãé×#q×øñíS³ ÿê¾õJœÌ·o}s¯]K»Fxò¦yÕ±ª€ê`lûbÊîÝy¼·–Ì:·€a ÔuÍñcŠqUgÝU PÇÏÃ'c{úJJ—ÉkÚ_a/åHˆ‹¯¬L]½Jͥȴ±¾àQPHýË™ŽŽŽb^5.^„ní0?-ÓÙ3}Ëøñ&ô®ží©wéQñëÉ:yw¸]´ß5ukÕ‰@± B&Ù[уMÜÝ'bóüê†a×ǹñ³ÞŠIï¾uË›©o;žæí=š3f@̪~zãž|ªÉŒÖh¯ÒªòåËGàJ¢¿£A¯fð‹,•#{îã8êÍ—úNŠªÖæ1‹y¯J¤w[&¯ó—Ý1ðÐáÃólv3ô6Ä:}¿1¹ãµy‡"Ç.”ÄK'×Õñžª;h²p¤¼üÅÃHÁŠM›– iP"“‡Õ××_º|YXà~œw{ðà¿'A"‹@lû@Þô‘Â!àmƒhTV3àõ°ÒG¿¹çYÑÜð0ùV¯¸„ƒ;v\Øb2¢Aÿ °ôonÍP¿{lÄðáÛNŸvZ_TU Ê$==½­7Ý9RÛˆI’ÇŽ‹‰_2}§žŸå¸ç½¨õëe ¶>lãèÏáHn¤yç§;ý±ß%S=2ËÑÒÖvèy”­—‡wi^“b¤½ ÉpxYÛ ã9‰£¿¯065uò¸qã° Ù&ffضñ§~ŠÊÞ)r¹n¾à]Ñ=rÝëÜG´èÞ½*ÆÚéA³µ9§/¼u7';;{qH ðýAX5ô^:K´OÖ ‰¤Ë0søðáœ×÷Oe?~¼ŠªjüHÉþE¥¥ù¯Ï¼³XŒÓþç+ §ëxêƒL†ß7^¥¾“­Nkyâ'5pà]Oï€æàŠ%#JÊËqŸ><^¾$<Ó,忡ӧ5Š<¸:JNî.Æb¿ÛyKï]²Yo±ûˆwòýòšE dJÞቂc'NV_¾°ß~Цÿ«õù¸º."ä–TVîÉyQ%£æ|étFÆ’À>îS¡i8p@¡xSSþµkÇ“j*=ê7Ÿ=sW¦äù×gó.^L÷Îl.Bµ¢)úË⽯ܽ©ß²O G;–––úÔœm(=š<5hHPPЪúõÀ“[·o_‘æë“9^Züú ÞË©¨óëÙkòÚü]æÛ¬5=örvÞtãuÚ„w¨K@½üîÛŠ¢9™L&S¤ä\CZšFï §.\0Hn¤Ï—{pèòÒw œª¢¯öîÞ´ßW¸«ùâxú2»•þþåY½ÐcNIw9þ§£}hnº;Gã<|xÐ::,™FQæßO«ß\ø™}!/ïHNô {W<Øìù'Eßí\þ:ë²Â²O¦a4¦ôÞ½7WH×ËKÒYîžž†óçò ÞäÊy‹ŒŒ7ºôÔwýUtØðá½D@Œx&-¸bå¨[ B\ssÃY³’ræ™·‹¯}¸u0"¢7ðT°£A‰ê.F\.iË– ¯Ðº’'>† Ê•eiiiqªK™°'í´¹ëó†u„ò¶ Ë5ƆÄ[ðÀƒäÙO?ïü\å«—Ntõr®™óôHŽk‘øBÎìð7sÙsD™“ ¦}û]‰wi¹-š”r`˜JÎGïFƒšåw¬²îW~(uÏhhz¿)%gÇìaøýÕ㳯IF'néÚôbrÿÓF5‰k¬²œ?œ:7B÷üµäéCU+JãNéõâV\Ž5kNš:jsÉD×MæûÂ,¾Ñçè…“¢\ª*ŸíWï{7ߎn¨lzr»Öú•aøŒ5¼˜qß²¨õ£ú¦²»ñ·53ú<hºížß™ÅoŒ·fàGEÇvu/#ážy£Ùµlh}Ø!‰jåO.¯f®«Û·ïêM‘E.ÏúV²ÃÃ|°Zš>>>ì®lRR’ä"ØåˆÛâ#wIÙ}Ê–Ë!(ûq숆^<™¸~ƒ¦Ö.ª•«”öèÓQEÆÚãã«Üa¦þòç{.Ãz3g·Ø¬Ñ/åf 0•0‚@ Ò ½ÁvÒ¤IR÷Nx=ˆ y}J|p÷ò’Yw¶åØ0S ×ÇOœ8qšž^oªw™äN›¥ØZ&Ð4À[0±°âØÜø(NýU©ž¾~/‘)iÃ24ï›h¸º„}O5;X¿Íü€}ʉ#€½¶Õp­¨¨°x~`ö ‹ [jÇ¿àkœ€SU½šZÿ²0°¾ÐaÉ `˜Nû~¨ˆÆ%ô£¥ÄßÙØØl-®Z téÑ£ä;ÅÅÀJ+iiÉ[N}ÓWj4§¢©­0'ÃÌØ±}öîÝLžHTÚÿüJ [18÷¹%$‘ò`¾¿˜ßÌ…©«xY J÷¹çyâî±èÅ‹q“'O_VuàÄ`9¹8àÎ0¯n ”œ ͸ú¶ºººä˜Ç__ßCž÷¨²ñF¯îõ(N3œ9sí!gOOUÉþ}´›jõ×$&>¾Š‹%eÀ»ÊZý)/ WÑÅÀ´Þk¨Jk±÷BGá¼zwŸk H604¬ØµÑ+búÎÃrb»ÕÄau7­œbÝ’Ce,é½\§åäÕ­ýýüü5šÙ99ÒÇ/¹ßyͺuÞtoôØújžBÈ´ñ¼¨â…ªƒ™¯ß†žÜ§3LÛ¼c£æÌ™cbbrˆýùMž¢µ½}ÔáÃĉÃ@kâ+* è©;mÄEV<•Ú}0Ã÷iìƒ1AÏ®$eŸœ6´¸:m—ú‘§SufŸ_ËËZ§:»ÿf‹h­Ĥ§ÀcDŠ¥V»n2}zvI‰ì˪ªÐÔÒÒáCd³æÊ³¥W½4¼ÎÁÜû¥¥á*mÑ––Ñç]³4kÎD*†}èµyóæ¯Ž\?´ðs°b%%qtºlJJJöÖd‡ƒsëO—éÒZœŸ?²oŸÄFªgöóä…¯}f-,¬;Öb7æÅ¢ËO}±¸€ðÀwWiØù·uëd€é­hùT3b]AA–["~æ>û1&ô•|uç@KÄÍíñºÙ^ººº½Þ¾{'-/_Í[1¹í‘/uÊP.ox¸p÷=¿Þ;Nž”]¹råž½{¥ìÚÑà ¿ÜxXùcÞrÅ<ƒgŸñÂll†çÜUb.QßÅÉZµzõøæ1ê§¢¾±{˜üYŽ•”’Šš{0zîÁGT’p$’íàís/'6¦ôÙÕ']Q~Úu÷ñÎ7;ˆí‘y}ˆC›õw'ºõ;!môßÚÁŠÿÛ/  òçqÛÓþüdø“(XüO$àŸH Šà Tá¿üÿäÏÔ1–úv³¬ qØã¬fê™™êã”TÕÕHúêêv8G;s3A ³ó…¼¸l,9*ÄQW7´PÂuÌ @â§µ³QÄžEÀnnûU•×áN5˜cI¨ùzr¼¸Z]<†À`0Zïæ·E ,°'ƒpX[Ud¾Û_KI¿5+¬ª–º=¬––à·õfM,ó2áiÍ´3R¥+©wõGÕ™ºªúÞž>Íät|Ž©¡ãë=XÖc-%·Öü¨X&î/í ZÓ˜¶å/åßÁOëÛ!Á+ŽÿO{F_pÝò ÂMüÚ`N×ÊT£=/ú·B¨æŽÃâp_øNUoíaÀTÛË£-C+brÕX\®Îá`…q‚ÀÍîÂSÂaù³Ûƒ5ÀHÄ*Òúð:~3ò‡Z¯¶el7ßñ R›‡%Voýæ×n„ƒ¼Úr5s¿½»½^?–w÷’ì‹pÙÁH7Hn#†_W·Ûw u'–ãvÜDØ›åç `4IÍ ÃÁr•Ã_Ãý•ç@^Ø}že¸õA¶ü~¾?{Zû Û2õ+}}:_óvz2¦»~Tk¦êŽ3Û™åÄN,' Éó®)ickeÁ¼rãx3!Nç§·^û•uÈÆBgÉæ²aDŒóËýت¾í ×þí×KJß2HÓœí<ùöz{æwîWÞtl òb}é˜ÿAûË$t’´o'†ëÃaó˜ïE¡êé¬êÇE|U¹H¯†—·¢©„k/ÑÅàTÝ!/¸}@³Ú Püß«ýö¼ó'…`Àò·Ã*ƒ(ÿÀWVQVž¤ÚYÿ·­CÂüoÊ}´j¯3ÐÎ8?OO Ü”øõFZ3Ö áÑRå·@÷1¹Âu)HS|D²f‡›°ñªê‰`ªÜe×záÍ "¿¶5Ÿøu0¼½~ÐcÒ×öí•ÌZ3ÇÌ7>ß°¢íš`G {j‚Ðúä/’ЮG¾¢•_l­õ©XAßV×^ëͯ@#àζ j8\‡ÁÂÀédsÀ“̽}55µVõùfZLŽ7Ëà+¶ =¶µH%‚›ÀáiòØžˆšû7žæTuþ·S™¾|cÿ}S.˜IÞ/6þµ:Ý.\o?_Ò¹"ú7íÔܱqýv¯m…*~Þ%¿Ÿéƒ‹Àþ°F?ìï» 2§²ÃeàJ‘ZÓ6ê`ÄøžA8þ;y~ ‹ï¬ÑŽÙÎOëZ3°À%¬~õ¾Kû½æùšR Çä—áûm@izB>±mw¸¿¿µ­à¿ÒC+Qà–öêg·aúìg 0•4(ŽëaªÖhîÖ›¼³ÉŠÈ)¿Ò^I+ô„X_¥ôKA¬þJÛ @äF˜F¦Tèx*‰¦BÀÓø!ʉ¡þ³)ùCÆ’)š­¸ý®w"ŠõNþ¥Þi?@pçÞu™\¿Rü¥BÖ®ƒÒê‚ F‘€ÿB†:˜Üo+¼‡t;,¼hÅ6×Ý;€‹ pg³ÜùÄ`a66¿\-pHÛ?µË.?4ÁZþ’÷Rîî¦ ðï X›Ÿb€Øø÷²:ÃàkŒÓŽCg‰íº…õ=I$ $*Y…@$#é絿ÐaêéÃA0/©­0]{íO_Ä+<èÅ/™õ¥R2ÄãA,w]µ}­¤Ô`Itº ¦BÁh%ÐJþ­¿Ê³Öö]°Œ¢B$ HT""€ Ê÷ʃ~¯É°Þ‚ÚjFµEŒ]°€È ª¨ 2ÆU@ïü·Ý°a7ä×´WkÓ.ôLF(Á4P±ôÑŸ(æý-¥ ÒâÏ‘Aø…¹¢ýp®~2m7t¡5d2å(¡CIWvÏñbcŽnûêBW¢K‹ÇP!R*]…H£ èŸÑÞ?CÌýýŽma˜žVWªµd{û¶jÄ ¡á&‚€C“º J$ñÉ£ã¿@ð#XÿêDµaûûy¢uˆÍÈWûí†yjû:ø·á!¿Þäw1¢;Q»C‰¿·U£ÔPÒî\AÒ\4CPÆP¶ Å[íSÂù·}ä/G¶îPÅu¨ùýCl:ßÇôæñ¼PKíû ¯XÑ+#¾óÎg|ß´2ú#ƒ.뛑a—øãÒþÕXƒVšùA#+¿çëÙê‚‚)†€Ísó‘bë¾mÕi²;Žá¿ùþù|ë›ïÝõló¿úçsí…ƒ°~qª¿’ÿßDÿ|¢»žã:½ÜvK(x^ÿ›ÒŸL©-äÆçSk;Oî÷ßÿÍinë­«™þÉDÿ` ÿMù¥¸5~ÇVù¹ß s‡/<Ù€Ymïbÿº?ýÝ›¾Cýõõ‰@OBY,<„ $%áé,‚("!„F"ônMrYmÇýI÷ùOçoÈÆþCºã× Éç¿çøÿÊ…V*B£è7´Ĥ!t¥hT"žI£Q DƒJcá)$*;øoû«‘À_Ç­`¶t3J’á/Œù•1 ]aáô;Ð…ˆ4„@gÒˆD‘ Óé2žA¢Ññ¥A0Šü[èþJPó×a+˜%Ý ·„dõ_‹Ç~e€ÂcVXýfa…Ó)$˜@`ј DC`”I ¡t˜ˆ´‹ÙÇg©‚!lÐ($oÿ|Tù+ƒÂ"æ·4*ODðx˜3Q”Df’Q&D%ƒÞQ •F‡ÿ‘Fí^¨ù÷u«@æt?’ó#Tþ•vC· ‰¨ßA/b 0„X‹ˆ2Q* b2L¢â‘É"ÿ;ÝÚöÖûó?A«`ftE–” Çaa5lÛ&½/ºUçíÅ Â!>ümí_÷·¾ƒävF¯`Ú„G¯°ˆúôÒ2ÌÄ3(D2žH"S™(EgQ! B' (Âêz¿Bòb¹ctaï]¥/lå£ûl/ÞÄÉÝB,ó;”a[°£©êLíI¸‰ÿÓ¸É(W;(Äåá°£Hà³7F|Up¿°™±­g<“ #x"“A"Ò‰4&e1P"‰N¦’è "µ÷ܺë»_çï͆q“±ó,?ïí›=qc!ÂBa”ND4"“@ÆžŒ"L"bÀD “@elÕ¶a®µ¿¶'Lˆiaqö;˜FE……Áb€Ù£‘ "2` ™JÃÓÑ?‰é_èëoaÚáñ×®z¬;]÷`‹›?‡ßñÎùF„¼°0üÈ#LDL'‡JbY0J ?ˆ “ ˜ð'!ÿ }ý-Èÿy>A=óÂâðw0Ï étJ&ƒˆ4¡12ãid‘Ìü£˜ÿ…¾þ"æ±ÿÛ˜ï°ÄÍ@I$FI42‰L"Òˆ,*&’(D*£#=Ø;0>5_U~}½¥-úùz¡m4à·)0‚øw†L„·)t…)xÌ¢P…I¢Ói4ÁSá?)0¿Ð×ß‚ÿ“¾Äø¾RÉ.Ønh”‹€È • ¦Úá»ÉØ¡ò)Âöw„3© „D‚(d¼ " OA J¢Sφ0ÿ¤püB_K8 ÂCz¾xô@4 ‹ßz?΄d”†@´Ï¢3d„B%áYd 0 %ÿI4þB_ V~ÿù6ÿïú6‚ø·Ö1)0¥°èx2LC ‘F¦D<‘A Aøý®c îëïªo]§§ˆLO\j ¿ƒÒ©$ˆÅ ³È$”ŠPxˆNGèŠÒñ0Äø£1¨à¾þìØ¾=QG÷XWAXXüé4ÅVÔ!*J&1¨"“ “PDb¢D i‚¿Ð×_[íþú~ûÿŠÿð=nòdŒuß¾Þ(·µM‡÷èÜ yaaø;§ tĤ±ˆ‘FePQ*‘$O¥2PH¥ÿIÈÿB_!ßö¿¶Íý‰QÛó˜‚ßB Ëä·¯¾sŠ!þ,uÎ3$xc=A& áâf¢42FÞ,†uDfà»§[1ºp}'†`Ò¿ÝpàÖ|J!¸¶L5­D¶‘ú';‡hxA„‹@$ # <„…  0¦‡\ŒLÍ ]L-Œ,],,- ù¤iáð*üLI"…P©L„L§“!˜‚6ˆD` x°Û0…ˆ~C –3µ?Yö÷/ECñ,„P ˜2ˆ(¡#À2*…ŽGÉ4æ7dÙš:uAñ“…'Â4ƒŒ`6ƒI&‘H,„E¡Ct"Ä"`*á²L ìL¾§‹„Ñõ·A†‡ðÁS!" ¾$‘i0ží±e1‰x&ú†TCSc»ïi%ÿq2˜„'Ó!8"TˆÂ€©¬aKþå¬ mÌMmmM--l¿§ŽòÇ©£Rñ$ÆÓ`:`eQËPÅÓ ~K­®ÝÌ.£þy¶i4æYÑ03D$04 Bf0™, LÅã¿!ÌÜÎÔ¼ ‘ ý è½Æ€YT Ft`8aO¤Á(¥CDÀ“¾å¡®™Y»z 42j'ÚÕn8ál’0»áôØ%BFXÀ?"2`"±öÏ315´Ñµÿèëšu×H ‹@Â^ø",…É4ïCÇ¢µG%ш]O¨¾Q»÷#•&”Ðu3ãŒ;`ß—å$„G$˜°n(6!5LwÛ¿Úó×¹L ÿ%F‡Z‚7ü‘X"N€ 4*B#¡À'¤Ó˜È@¨Øöî¥"c{ñþº®L¸› ú|.^­YCÿÑêÉ(w’€$OÂq^‘Ó÷E°z2"mùH;e|êœÎI0ÂË—°˜ú­S¬tॠx L£A0 Á3©L„N!±@#0õXü &¼3~Q_ù‡Œ_á8/”ÉC„[Á½ [a±ô[) Q„Ä€°´§Dl;.XsL‚A`Ó©dÖMCö }av£»¨g~ƒTȫ؉m¹ÿŸ;Ýú €ßʃø²t*ÄbQ¨À¥¥ ™ |n8>=VI &¼3ô¸Ï{ââåííóOµeOLö‰ô/fB8ì »X‚|ÝÑÖñÝWÛÎ]¶/ÏâàÐorX ¦Ixã!¬Œý^K„€à‰$SÛsEá)ƒBfÂT"•I`ôXyLø÷òÌÏ8ð?-Ï=#_BÐÂ!Wm Ë¯ˆÛª Úªc©l!×a±Q6w‘æ^09Â+a…ó·¼H* <•N%0ñBCPŒ)0Œá‰‚½+롊@0áÌOñ?® þ™”  a¤¬5*Ì´b–7Ô×Û\jeL»íý:yßd?H[7²Ÿ )¿u›†Ò˜4<‰N¦3†)þƒ©,¡ÃÔž+r‚ ï,rXÕq^ZqŽõB­˜q Æ?ƒ­à¾…‡­°Pú-—("BAAf‡ÌÄ£4”BGɈDbѬžë2 $¼3lYÞ~^¼`z†»%Ô¬ %1›[¥å«êçÂú‘ ¦¥¾–¨þ­ uD"LGd„z0žŒY‚aAX`qhø+A‚ ÿæM Ày v¾¼ü°—[Ûô4‡K8l#gfÞÞ~>_L6æ¶Ò]l/ l‹jplž;p¼Ú%ñ›t©ëF:!¥á÷Þñ;ä€Òd«Á`X–mHéfª»óŽGá%Ï [îàOàÿ¥ü}­vYëIM8,µœˆ`{¾3– íè,fãÜØþˆ×!üöm” ªºó6J8ÔÿV‹Ig $ :Ei¡SÁ„ÁD˜B%z®„ &üÛÆ7&ÿ­ü´è¯P`FČߒñM×Wo[2è°J×…LR7ªÿ ‰ùßÊšIc‘  ;BAE˜tL‰ˆÇþ2˜h^°Lxgùâ—sâîá!ØŸ©;Õ#äU8puG^±ÁbâÚîýÐÏLH7ޤ )9¿USˆJÀS1ìÑð(…Á¤à)D D‡:  …Ùc¥T0á]I)ÿ“Ó&§ÂÁK¨ “OˆÃÁqý˜mÓÚ!"üº‘ª+¡LU76Ø )H¿#´, s;Ó)T”Ê$IÑhT˜FfRhxJZÁ„²Û7xüÿº Xfáp'¬Õí¸™bzûµÚ៽ÊLO7Ž )[¿#Ç$e"4¬K@‚J§#0Ì “¨ ™¦Þs7¢ $¼ë=jÿmOë b,ì„[OêJŒ¡.DW0 ÝØƒ/¤8ýÖ»E&…€'Rè4Fð;¡,Ž2(ôžk‚ÞÅúlû¶ªÿv¢ýoïD ´ÂÚoþ²V® usÌÏv&¤ïE…”Èߊša`àVýÏÅã‰F…`"ÿ$xOšþí†þOü…*±Ø3ân¡*¬¤Áá±ÛwÂýšÄ &¨!·Rø[ÇI`™HFÉ0™‚'ÐaA„ˆ0DcéD"Šï¹{‰þÃ]§ÿ½2úé!¡Ñ­ §ßï4ýæL‡@ºq¦CH ÿVU+:O¤Óù¹P0I*‘ˆt<™Òs÷• &ü{'ºC§,X=«¬U^á×÷GÜ.Ò¶¯j±¹?´“‚ ^¤…³ßi*J17I‡˜"„Ðñd:ŒR©TžF'B=÷}’`»8¦Õ^·ëÿX˜¥èØkŽÇb¿v¬7'Hz„›da°—:^àø"ˆ‡-ÿ¶¥øÀùx< ¾ßœoLS7ŠŽ æß ) ™ ú¡@(ÌDt‰É¶˜I¢“`ˆØs”ÞYp|üþ[PúeAI8Ð £fúp¼!¸ÝæjlßpßzÖ FüÙ¬ŸÄ›)ëF¼)¤ˆþ–eRQ•€˜ BZà’#T*ðË"ƒD@{®Hx—ñ&Púÿ`i³®BM}wËv+x¢`ZºaU…„öo-Û¦Á”E&“H0‰BB 0‰DE)4 –L´ç.Û$¼³yBˆ ÌîiÛ|{ÒzPPèVî±/[‘~~6E0%ÝX¶迵sžBñt žœcF‰L<& (BAit*‘÷Üó ÿö퇧·ÿbõóóBA±²ás¿“Xñ×B*[‚É鯮y!ñþ[羂Ð)("0B§Á(L£b9ÌÁŒQzpn?„ã÷ùyúô¬Ü~Bq^(· •³°ü|}‘ö#Ä]-‚IèÆ‘*!%l…÷_Ò²Âbs¸­ øÚ?ðÓìý(£«¿p= ³|Ù>­«ÈîDðP˜íß~ ¦…˜o–x˜OÇܺí+CÞ>íåÞqŒÃrÍBmÔpSÕ}°Çq¾²¦u òãaÙµ§Â(HÐì…µPóòæúLó`ÄZiƒGû Óž Pæ¯öԀ˄I&Á[Pç°™¾o[[Çrir½QV‘Bäí‡c^|ÐA+W›‡aEÝÛK8ÏFƒ° ~^­g ñõäb§?°Æ3qf gŒ€ …88+?&`;ÎŒÍB¼¸ÀDqq>Ø®;@#3ˆ?¡§m8#oðpþiâ`¿À³ü_~)Rb{?mOSÁ¢&B<Œn_€mì¦I€Ø †ö/÷©ý„_Ç ·§¦qBÒz¼ 4€ "@&‚S†úqTp %+`9Ó§k1 ç kc£ka7K“ok±wv”ŒÍÓ‡ƒ‹`T¾/#ÞÜÐFß´×Õ353µ›…Ñodjgahk‹3²´Áéâ¬tmìLõgšéÚà¬fÚXYÚªál之ò'É[òá딎#Ÿæ– (äÀ8w8 ¾ aû#ØÂ ˆ¦SÈñörã·õýL75ql“Q\þBÔÏ&WgêÅRSÁQ  äåÁÜ·åÆàFl<܈ãí œ9=o.kn®‹Ã ¼*„'àfÚêâ:ª u ¨<±EAqÞ,?O`U ڳ뜨‚÷­òs¢vÔ½m~‰ÒwW}|}—qü?ߥüÆ,—o±ï}¿~À>Âßµåµ §uô_s`oÛVI]ºØsû÷·õò â×aªçWûØ:‹Ù{³{´Ù³N/ ;ÔZoµ]>|kÀ?‘aÏ k „ÖÇñg#|“ùÁlïïSB~y—/D_ò±Ú6äòŸßFà—~O—HCt¬ÈÈ„étÏ Ñèx„Ò°„®ÿ›ØÑÅøÖ5€ø_uE‚õƒ~þ”Z“f|GˆúYóVuˆòk·sÕÒæ"< †±\ÇØ§¶¥xf[Íí/YÐø7´&è d(‹…'”£$<A0¥3èxB# úÿ&È:¼Êéâ›n@L0›ºîæ/! ]7?àqÿ Ä:7þçcÒì.F%â™4•@$0¨4žB¢b•n ÿ›³jµ]c¬íËnÀL0³~ØÓßBZ»ÍûEeÖ©ý?›à¥Šÿ5°µ­Y|‡³ -ÿ`1çÏ€«Sà"°Ë‹„ûÿØ»¶Þ6Ždý¾¿‚È“ Nß/‹ €"ÑŽ°¶$Hò:>/B_mžH¤!Jq|~ý©ê™!‡ÒÈÊ4%ÇD€˜"gz¦º««¾ª®Kúûãd öýPž=ˆ—£¿J´IÃnû}2¢uo]}wжB{Œ|Y~ˆpûîÂpƒ÷Uœ˜áë«ïŽz©\¥ÃâõÇÙð`À¡=WÞü¯‘+ [õQ¸7»u5 ·4þï{âÚÛQŠ‹Ü{Gã&C&¿ž»:!×¼Ù’’ÅI0cÙy•§ª8Í Á93êMPG3>"«á-uÿ%ô}ÌkßÇ/éâ×Jnþò3|¬¯-Ü‹>æxCÞaèÇ×µƒo€Fï ¯J‰JŸÉÙxlt­Y¢Ü€èNXò°oéÏ·ZlÅRrn¿j ÖÁd¿Õjẑj½X$RÉú,+¿øü.[¶¤×…»üspýÆ…+x ¿NŠ'­QÑÅ‹n­ñh<•Ñÿ%àµý\\€Ó¹©(/¿x‚Vž|fÂLY)…çeDHЛ)I$ ‚PŠ‹‘*ç¹¾©„‰5IÏOž™‚ï0N•Üžá?AçVÕ±¼~ÇËtu9J¥¯zÑœQO­Ð^S¹”*fÁ’ o½èû»_4|HáÏÅW…yÿ\¯Rñ»W:K1ø©òMüTtÕO5øú©¤ Íõ×Ådz2dt"«Vs {,lª²¬å›ªqܯ¿À#Úg`@×ýÕ‡ê\¢º..ŒQm·{ЧI –Ťàœ|L–€-Ÿ(, ÓTÉ—Gg/ö_ ÏJÿÁƒÃƒa÷±PyŸjSÁ^8˜4¼ ÑÌÁÂΚiÁ®;ÀÅI#\”šÇ©M$HltÊr-§ïŽzÑ‚Ûñõþëa‰oD'ô†HÒ™„ ¼£¬`Ë2K&QX.% ÉÀÿ$ìÿOo’Š 9²AŠ‹Z[‘ðlÞ ÎyH˜Òn˜ œFE;(z»¿wú{_’>"l¤ Òãµ$åX„¹Ð‘Xô‰†¥rôü>Üùûi_‚>¤"ù7G‘M‘a—`·('mTÉØˆ Oì èhxüzÿädÿðà¤/YuCd²£é´²*å¸ •"<°Ht4°j> +–­ÍÄ(«T'§;§oz“7üv=­Wmð$N>1ä7ŧYB¦5GØ®QŠQkµLÂz¤Šò^Ÿ‚xëK]9UUg²ƒ«ÑÅFE"(¬vj°o&LÇ Êß9G ïZºW¯úP¶s~>ãs:B5ÝV]MÜA^ƒ/û™Ÿ°"9¬¬œ#È “™„%­‘`ú}gˆ}99s€{4ßèë…쵩‡>®Yç°¹Tip]Ðfë ߣ½vfGá­»ÀþÂÃæqg3²ÄsËfÜ%ˆÓ^j•mÒŽr½p†XKìžC¹½ žkIë5lõ¥ÄÀO<Ë­Ê@¥„e“ Ènϼk Übއ;{}ˆ9ó{ãä蔤KQ'NNO…ñVf›•¾ƒœ½á«ái¯Õy[Nð7LÁl¸e†›dKÅãáWª%Ï:ðÐAQOY¼6‘kT2ï.LdÖ@­ÞDê½Îâ;¹ËÉ™‹Ü“‚AÖ#mgr³6•ä¼íøQú±}éèù`·Š «¸xr(T z{/ÖD^6£ŽæÀ2æ`]šD`÷2Ʊ ŒºÄÍ"“W0„êéÙÞáÛƒW‡;{Ã^©:ª|ìs¸¸†]¼”@©‘}JZfÏM É¢£ –‰NïGœ;Çš;Ÿ¿LàjÄÒ`nRÙI‚¶>'Æ›ÄÁZñì;ÛàËÉYp·ï3ªI¿\Ÿ·½6Ïè·wyý2}J%ê°¾¬]"ŸÞLSý5ö7A¯Iå#«—«~<:=B)1Žî2žÀ_g;»gÿý÷Ó”ËÀ) Æbc‘h"¹° ´£HŽ`" 'z®ôNNw^+d·@“·ÇûýÔùìÔc:(PåçAQðkKé㎠í87DiT¥¨\ˆÀ•¯ ÝIßáÁ«w÷ ïs9yÙqY0q9£Ò:jœ@Æ‚g\š¸Œ¸3Œ$]–uZŤºóóɧé J[üz1H–¼dÐÁROŒU”© ËBœªð½‰Á¥ä,ˆÁù™÷úDaëýÃu>|®$Ù¢@,.áÚ„Ì÷̺§x¦ ·ŸôŠ€²Gcø­Ç'§.—¬ %e“ϥ̰ì€$“‚†Lr”©sƒ!aoö†/öúá‰7ãjb"†c_ÿžèœüuÈ”e$“˜àkÐ ÙRnÀ¨‹YÇÖSZ8•ï$ùåð`x¼¿ûâÕN/op îÆðÖsw5S·O0ßy4ÐA]¦ß~~º ¢ÁâSlW#2XÁH‘‚Pèc&ª`—ýûþðxçþÙÝyµ ño¾Ùå ”£2+}âàwíLРF×ìnŽÞÛ}ч²½Ýý×U’È<ák•“L±¨\@fŠ”‰ÉƒO„©ð½½Ëɹ‚²Îà€®”nÅÖ¹/ò¹>÷GGâhîbÌíØ¬Û£.zÑB¼/™iQKmEПr<™…[† ݽ~Û9é}´àÝ4ÍE× á>åÁÿ^O¯@ÒMç Ê•&ñk±“—ÒîÀòOLgO“÷$8#ƒõÙf¦CißIû«ß†½Ü+çÓùm>y>Ø- @î|:Áð7Ø;<œãÅ› 9¨³L„ð,­Ê£I“Œ1²NÜa ì Ov÷N÷úPŽiŸ˜øå1#Γ%7AŸ’ ½t`Öç½ûó™¶MÊñt‡=°;<éu¸së”sD¥4ÏY! ,ÊÈ|bl`˜Õt’ús߈ˆß–ü0„±› J t¦€9<o–áxÓy©´èÞ}è±:ywr:|Ý—®êßeÎJG¸vBD†8¡^ÂÊÉ’R”½Þùcwçhgwÿ´—ÁýÚý=º½ÜGFWålëOÿù*m„!™&Qî• L WÎ8k£à `•Éw äãáð(þç·w§Ã^Û­d.‚F i³ô9Γ&Òà¹ÖT"ñ蚨 SŠ|™¾ý×ðÕ=è+AfÓ¯‹ üX^[¢“ÀÌùh@àqÞ¦È8ýÎÀârrÀâúü3‰ØÀ“›¾‚ÚOða&9«˜å–A×8—iîKíò W¡r<¼‡`Ùü;E3·ØþOS°±8ÓÉò ’í+­ ìítöæà?‡oú¹*@{%Ö –’FlF±æÍ”Á,$ùè= ÅHÊßEÚ‹ý?†{gLJ¯{a @‡Ø&.ÿ‚Á¸vÚ(ÄPLýTp¡´Y§¨- ÜiÂî.ÚŽ‡¯ÿ»óÛ«aúJe¢Â¹¦ÑˆDI Î¯cV¡k@hTZ¯¸dývV[¿mOÒó÷Ï'{ðåÓ h©—ìR¦Î‚ÆL¦Ñ/@}­z,æÎꋹ@0Ö|øsBDb!6¤«ð´¿2»#ŸâESH·…Î1³$3|ð$ë,MÔzÐôa]çXn|±¶P˜\Ãw‹úªÜû듎/›±îÍÊÁ+Ý·$Q‹9¾ðB5cFM•Mólp·"þÒ|•ÑþLŸúµkbúÍK»Ùʯ_ªu=8 ß¶hÚª“š›ás×½Ëf¦s"žÞ9;·ï¸ŒÛ-Û«ª :/Ë›ú®Þ.¼T(ŸVµŽŽðsº*­xëŠGÿº) šëÿÕPÞ=‹¸+jÊÜš³OW£+¬Kt¿tÑ;¶}Kp/!¬Þ/3âê‰kÇ)>³¬ÄÌÖðßõšºÕ÷E3uÖ«Qõ í®ÛgáígÌ8hêmU5qjö›¶¨n‚P«r€wüªê[Uüw\>Ï™_½¯ø¸cÔA)ŸRÏÇ ]^Âßa äšÕë©¢&sºLc<ÈüÒŒ^¦éõykB •\I|0†fÏ’s!•9[fÎÔÙðøøðøloÿx¸ ˜ã]‰ zqøæ`'ïù 9¾=*ð>&u>/½Õé[¾ÕéßB§÷+ ¾ÕékÕé-ýÒÖêñæZüj½âÀé" â ½añÁvà2oUÖtõqðÁUaÁ>Á¥3])ÄŠ/n0×¥cÏ3,™Q9Ï'{Ž&&ã„u ðŸëi“3ÓêŠWƨŸyð5Ýý ãªÚã3¬¬UÁ†Ñ´†")Þ «À®Gó¾GìJöØÙm‘ÝšI¨;:máé?žv¶DÝ¢Òoïiº“V|¶ [ ¿hrµžðC`Ýý<‡¥3LYä"z¬ËMcKªkh6› Þ`V»Çgý·xQ…"§ó"ÞˆŸÍ'½¤js°õC#ÓN¤è¼"‚‰~*‘Sã‚t@OÖ™øÇŸ§#¸£Î@ýVз*ëѬëQ¡2llöEb3yðt¹&¿—ŠúRS¸Ík¢R¶ù;ÓEwÉÅûmÝÖÎm÷`jÕ{ŸÖ(G–.ß×»÷°<{‰“JDF­] ‰xåAàðÀ˜Š)ºÇ&bJ/·­ˆ¹_yœ»|sûmqîÚJ,‡\8©DùHzX'Þ-L)uÖ^n„±ÉÅ(6ð_T!'•ºÝ€yš®*œø}øï´5ìÉ^D+S`«¹A§å‚ÿ8iuÇö>;i=“0o\ÁgŸ$³A“­4ò‘Éo¬-¿=ßÝ:ì~T‡]ñXÏ[jÙÌ9H£Ìµà‚3Í‚b‘q‰^÷¨l›9›´ËU§åªÜ÷§¤RgsëN<ó/î¹Ë[Ÿí÷î³}™*#jÝ•ëöemë·?m|oX»Òãï×»Öï¥mjÜöº’k­aoV•[í-g¡¼†sÖ ¤+„_8ñǾ­—cÚf€ZЬhkGV,3Žm0^Å0ʃéuÀ¸Û…ÐØØPZM®§ÀæMŒÃ<ŠÚuå¼n+v¡Š¢-Í’êÀ…€UŽªò•0¨kÌ› ×öÊó){lA¸1±H-cœ •(çN3£¬å6RÂmG9ì¿9:îííœîÜ3þöë¢*–ƒŸÆøÓÜ“ !«àÑä„ôܰ’UÒ±™ñwæ"žœ!ÛåÉåÙÅ>àvoLÁþÍI8¨ò2Õ"+šñÌ•b´ÜÏŠ\Œþ ìÌ3lùs‡‘H£â&‚… † •–ú$¤IÉSt‹Âqú´úð:$¯Á¸$åƒö\8™ Æƒ9­¹›?ýzZ`­,(±ÌR–À`­ s&H(ce^|ØW¬g90Â|t ç;/#ÖNäRG°Ï­X|òDÿgôÅÝ.æÀ…T¶™¤Ñ¬¢¤"DÊI)ÔùÓ¬¸7VI:þ±ÿbíï 9!dm4†ŒÇŒ@‚ÉLNF€c–òsƒORS®èýEËó‡p T\_„éòÌgáH“™P-Ï%HýI¨)Âg4á[Y î¼Ô✖–Ä%ýò Õ;Ì1ò+ÞcwsLw¨V¥~ÐÜÓA¤r…é—/¸ð¸\®®9pç˜)ñ¾rƒµy¨úÞ¢TÍ›Õ\~V·FnÞ¤dT”೎sLœƒÉe¬ç*Õj¹~ÿé6ú|ô€¿¯;ðªñÝ8¤=hU—’Ÿ7U&Wµs ;;í0'— mRLjÆ]ô—äÎ =Eï] ³+Á£2îå4çGçJ:PÊ¢6Ñ*àËlh¶ ŒÏ$W-×F1¬n¤2oêĹW RYF¤h¤Êðþ‚;ç´VQ /5yŒç¾X·}‹“·ç¾?ê¹ïF Fµ‘¯c]=ºé¯øCC,TƒÀ|l#0L°äi‚>¢Ô£¬ŒI8ν 2xo|âÌgëòÜjz‰§ mVŸŒÛéçM Æyo6Xº¡Èkà2x7¹\Àú}rXâ}òÿì]{o#·µÏßýªïšöšïGÛp³Nc ›»ÎMp‹ÂàãЫV–TKÚÇ·ï!gFɲeym¯¼YÛ£’CžßyâïÿÆm5kª"­ÅÌ µ>R3Þ[²ž®±ŒÅžÈ›7v‹×µçä:†²ßôqN.êÂmY¾Lóò_ûÅRtUcÒä (nªã,ÓW¢ð¢uåCzMñÑ&uk6‘¸aoròPY–šÝ~¿¢C3Ûëê¬Ö{¦…ϯ‘0Fþ_Ps*±QËÙ»aUÕÏ¢bÁÙøŸ¶dÙä Ë…WÛe½ß¹Ë~aÄ+Ï®r«v½iÁ¥`¹Mî×M«9œwtRüx+’Â]|ù‡¼“q&wß/¶ÁløÊËžïÁ³htù±±Úµ[úä ð]IdvXÎ1æxë9¡†Ä‘"’¤ƒ0uËMz;\euàŽ†\ÏL7œâAÀÉÿ[Ÿ¨Ý1\5@6zÖÊ»ÝAªÎvuë¥-ijÈþì³G#ó–3ô7)ØÄ¸Š«©ãͺþ€OÝmEåÉ6})°)¯çR š.ËíCg'ÃÙ®¤¡ÚS¨,Áäm))î³ãÐ0ü„-"ÕªMy«IÜ’_43xT «Êhs3g$µGÚ¨7ž­'¬éèyÂ<#+µ¢–âתò UðØ¼š,J|_—lºÅ E¬? T:üøÇy;µÃÝ*Úùúíh i6àM7F»=·Š7°å½ÀEi¹`"€Ö–%§}ôšQÊ‹ÜYqã1 ãmbA–{ˆ)ë™÷ZqP£pƒr*š¨LrdÑC©¶}IåØ`'È%­I°(JKž©£ØÊ#ç[„+-÷Áå@cCÂkÜ,ž A K‚Èeš>ž\‚’Ó Á¹´Šê()gJÉÀU RêHÖÄXäw¶$%¼ñŒr \ÒÀ(äB‘E©e«–¤ nu@Q’-rI“$­—D2éÀÏ@éwê”YîÀNv:°ÓÇ;™J™¯ÉÌ7Ü'+­+¸³òyXäóôM‹`-?± <{Êpæï5Íq6 ¤kMJ­÷ž×©º9âY†:K8§9µÙdIúª{ô§kŠ”,`NÉå1MK…½>Žq2™]dšÎjýBå®w9Ê#õ¸>töu…¡æjþ ÛÍŽ¦Þ “?vÀ©NÏ8i\ /!*åõHsqŒà*x"#Üœ*Öpwè$e$F­qˆÝ”æßÙ¢ü/XđɸF¶ldŸí…<Ϙ¨HJÏ–#dè]òÁz€× x«AwŠ]/Æ¥Z€®XâsVÇFÿž{KÑÉ9z`ˆçu„MÂÜNn}4¹uî½3À¥éµÖfáÛ¿`$[¤×̧-ÂÎ]±ï!ƽ îä´Hu%5óóðBÂuœôÖl²Å¢¶ÒÂUë±*,÷ÞôÖ¹)e9|pa:¨ÂFc¤Y˜–sh=; úœ ŠÊ´¡‘jš'oÁh+±'P"I»&C#"ÜuzW‹¸Í5Hyw¤˜Û“ÿb*»-k0pcL?v5ÞîßÄ£Ž$xÏ-I–SÐÌq¯t°Ö:K _Rhœ½:~…¬ýé˜â¢±1ç \& À-²_ Á ÊGEÛê’y¢ÿmØûfwÅÝbï-9´S’tJ’ç•é¯Ó2láTt E¿Pò¶´;Õ£ª2r\›®ùÓ“Ü-õñŒ@~~Ý›s`oDõ¥ÚV‡éÓoUÕfsûuäw*¢ó)1+ÛøÌI!¥`…2„Ha5QÒ¥œ*Ðy®EËgnQ°x³œ¾ÜI,Cš`^;B< ¤H‰ÖÆ»¸è㊼¼ þùâ~(ïã¸d„k4÷>Rá¹áѱ]KÎ=žuE™;‘½+ÊÜeîŠ2w¨í&Ôö˸éus‘~‘6aØJ™ÕUi~\ðÖdu¨ô6ÉÖ×>~­"æI‹š[™êúY#ÑFUÀÓM‰š§Ód^ÀxVí•lÚžN“4ì·M÷¹,L›¬yE¤gâ>Kâ[—auß>º(€{Dw"$¤I{AÒJÖzýê臧c¼p{QXª¹tRúqKÔ[Jyàk|=›]q\´±’èNá¢y!ÓuÀ¨FÏÍ(q¶µ7ï(¥ Lw¤ä춃÷³´3¿ýèsQû`~fA|iß *19º©«2u/giïpå#ÅÉÕ¦«aŽ`K£Ù0>@)Þ8z?,`éÖMWçD«Ù|án>Ë ×n5V]j¹)*œL‘0·Hœ_8j{ˆîñ^M ì޴ݤÄÎHþöõ Ókõ/T¹ÿ]S+Öák¸Iu¥hò}õžÊYÓÖ¤M͈Ø{i§‚¬ÜÓk0Oy‚X¾¤mj ܘݱQ”^×ÝÙ>Ä–f J+_rÝ×E ŠŠ`)×úâF\ךab{óãÚd0XºÊ`_n­i8ç_©h|Yo—iæ|µÙzÚ»åä§™ªüÇ) Óyäɽƒ*- àímwÑ?;-6íJ1)‚Ïko&7¹µ´û®ïªÐ’4ZLªì^ì¤/ãC+&æö^Žª°§DµHŠ&F<³FAŒ–û¹­²äGÉLä Wï,OêmíË­ÎH¤Qqµ“Æ•–zÒxʃ^FÙmšwœÄ ARÑ"ÒÆqjS2D;µh~6Äfîd×Þ''­gÒh½ÙÓPÑ@³ê‹„ LB±…9£÷Ž mµ æJ•·Ìeîàáº1«ÌŽ)†š¤6f¨Ó u¹^:(»ʾ.Lb)×KæºÀÙ.áˈ³*rÏÖÔõÉ^æ k§S¾0ᄆšHòJyiˆ4Y°J@¬Ykê<þíäÍé›íUÝ9–à¾õ&’Äs‚Û8 ê´iÕ9ö¶ïõ¹ê?7Âøæ,ë×§9,ÿØõ}"P‚&n¤À½DÎõ„KLBŒ¦ˆYciþ”ä‘R'í5áF‹˜$J§ þUH`¢R;)²6æ E=w¹‚•B²µñÖÇèÚjêw9 ŽB­ ”Ã0˜ÅF[YK=Ó\ýpî^4È*¼Ìófp™=–ܹë—úœ.ðûÝÔ¶=2R‰Ú À!£RÏd¤rjed»IÜ/múÓ;§ÑE®çµv1ñʃ‘<0¦"DçVϬÅY² ܬ¦Ú)¸¤%ë4+f¥ó¹é‚º`„NÁ¶^ê;*ÅÄk“n~ª0º[©ðÝ)ت`Lã²¾ÔÝÂÖÏÖúÝßž‰e¥Õ [xJ·S j°0é9?šMëh†=< úYÿöq…* ¿Âû“…Õ—³[Áæ>èÐFíÆ{_÷_`ÅÞÿ±·Wò „º—áÄmäíFÙ‘¥`K8pŸˆÃIƒˆÒ·¥RÒìžUR y;¸qžªJ ÎUi¶éèê ~6€TQÉÙÙ‚ÀOpaæ[ApIU²„ž¸£É 'LVJiðxXóìŸþ„r'wÔïÊ ) "$$©HZ xg•ôÔ)­À)C­^É<à‰Ë]LûÛ9 Ì%"1é“#)Ÿ´0,)G, Ô K´³LkN­ˆRŒZ«%ë}Z(Ba&'?~÷ÓÙ«Ó“WÇÛ¾lpÌkˆ:æàŽ¢'RM)¢kJèâe·pÂhéaY"&îsòA(Ž{$&q[[¹À´èm5—[ÄëЉ­â^p–’€“ÏEZÈ„¬e%^çè——'?Ýû b \H­Å I YŽ‘r’ Þ»2ˆãßN¾»÷1àÛ‚@örbŠ„¤D%·QQðAGÃÄÊ^Ÿ½<:=Ú¥ªûœ ÎCIL2Ƨ€ÉDpóä+£øùõñÿÿzïÃH6¢p$W€ä¡¤PŒ[• ³2Œ×G¿î¢¯U™ˆ=D#URž îœÓZE-¼Ôd­¯U&nÓÙ§ª¯WÆmYgSÑöº4üÕ(štóMqåz ¶ˆo©H°éžS/.n£¼XŒ£ò×ZŒ¦LM¦š žËŒ¶³^Wš¾°x`¿7èÿ»*Üžï7‘å÷*#C¶––&ÊQ9áR<+Û'ÎÛ8o»â6âdâYm…‚bV‡ÄC‚óÞ_kÍHؘ<·ÊNãÍ¢•4ŽÒ ŒÉ8Þpeµ É0³ƒ§~ GéýÎùL Kô5ñw¯ö68 ¨N&R‡r|›>3*º‹ ²_žëlrOÝ&÷æ³A'Ôݳ!®ús¥¢R1Р(Ñ0¹‡¼Í“Þv  «Üjä~YÍ’ù¯Mhט~”Wcî`ù¥[ßdÂkwµÕ¶¢ÍggÔZßïÏ•)³±Jj–D¤ WŠ’U’r“8‡ÄA„«zÀúñ»ö~4‹ýQ£¾µÌr!™V·°Q£ì,…1›0rPÀº‡?ј¥%ŠEE#c:ZŠ äƒ,ÕÔû¶³þߎ^žý|ôúèÕñéñ븵á8B-¢‹ø%:k¹6Á3â•[1¼}|ò÷ïOÄ‘a—xö('sQcA²Ä„§N® äçãׯNÞ¼9ùéÇ71r̯wÔF›,Ž PAIDŠBû•Ѽ9ùÿ㇆R„‰ŽWǧ qe’µ‰e•Z”7§G§¿<È|0iA)ÂûE³m*@²%â­ $[o„ZYÔÚ È'‰œóWæ§¥ÖÐÒ0~=yyúýNÛ\T@ ¤l‚dJ‘RÖ (‡+ ×°ù1\^ô'“¬ñ¹·ø”î…½!Uâ‘)I$ ‚Pƒr #WCÝ'KV­m4"8#…Qš‡ UJd=Ñâ™ÇwT#Òùewj‘N-Ò©E:µÈÖj‘\ܸ¢»ÂU®¿ë_Ng9é]gûz¸„_Ž*£ÐÓ³Pfœ K[—nR¼û·òSÚhyj~³Úr]6§~½[zNm”üæ#ÚŠc\7Â"±¢)Nßeãá=<¿¹éÜäÿñYq¿Ñ}üJëÛû‰¿½»Ÿø6^âoïÃKü^}Ä?³yÄTgÛïš0›Iïà`é:žtMNù*_,¹‘ó޲çAÎQX}•ÏÈŒ‚†îÝÁØMßî5¯ƒÊßU“ýR:aK!È*¬9kÙæ÷ûÒ2ŒÙ f€ƒ~«-d¸´n¶bÿòL0¢’£Ù]“F‚L^ñäB¢ø/­½ê‰­øÕ ÿ×Ûvqͱ0o°ùâÅÛyÓ«¯PM. ‘Þ¦ÐV÷¸º“·ÓéøO‡‡ïß¿G>žÃðÅèòü°”Ô¬»«è_œ¯´Ú›\œˆú©ñð|¯çÓù•½Ã‚@{ô…yAI¯ß_óTÏÉÂâÇü3wõ×ß}Õ}vý3èû†þܸ_Hä°ÑÐÌÏæÿš|J?Jˆü“jIÊß´ú;8Ñú+Êã´”ÜûŠ ô«Þ“šÈúeæ?ŸÈç¢ó+ëÝûæwÿ(lâ½½àðˆ§×½ýÞÞUÚh $¸x"®%8Hš«¹ˆ9E’ô”0|v8C!áŸûk.!;7µ®™JE¶€" *½±œ€b¢%éjëåÜÜ8j+©¡9ÅCT>HëP~už8mP4çe¯ÚÝ8h‘˜g‡Î|!3Ò9Â(Šžµ:oê‘_é†ÓË+•kWúád_î»ü,wrˆóðëºýUë{6Í.Ce ¿oü§B¿þ£_•»X·ÿeÿÿþåOßf×”^^ÛÞÏ¿ü퇓o{{‡‡¿òo_ž¾ìýöýé«zôé^ºá¤Ÿå*78<<þq¯×V8½çE×túúðCn‹æ‡ë_¦­'_ÄiÌœ¤tøáb0œ|³¦j­­ž.÷‚Ë€ ˜º^¾÷þ3ë¿ûfïÛJÃx]í5ºÈÐòaZ=üçlžÀô›_N¿;0e«_iä·ƒ_޾]ŒÝ´ïívNŽ¿±‹g*–ø_öžµ¹m[Ëï÷WpÝÖöØ §žÉužsÛ4§3ý°3m5²¤KJɺþ÷Ń”H½À‡¤(·öL™"ÁƒóÆÁÁ9·6ø¦37f÷½°1²<8fž0Úçj.^^¾ bçêzÊÒïx~É÷üýÛ§EàwQ/î¼#ƒž-gc‡ÿdzAø©8ÅÃâì‚gÙ‘>D§ól2»“R)L½k›cEß áËxÚOÊßüÎ>3{5þ®ëB>\ü®÷ŸØoê=(†y”;[|ºï}ÖÜ­‚¬³œÿ-@ÎÑv®ýÓžÔÑÓÿ>#>½W0;·±î_d^ý_ÕȾaWmȵ0ç;Óú¬ß˜ñþðöÇ#ÿÈü=fBä+ô<›Xhô6¦g& …™øS“ñÿ]Ùna^¡Ö«¿+¦cƒþíð¨¸=ð| õå½}Ê›–?g·E›Ê«)O9PsVœÞÇ:X/ðUdR_ÛÛX¹W¤oäûê¿"x^I °'º§’¦PeÛDQÞ ðªj¨Ø )í®¤£/`¶¹¢õE±0”®ê ¬yú˜Þâ(¶ÊûfÂW?³þÐ"à=»•ù4« cŒÕ}YeŒöÌï|˜¬Î8l¨øQ?Wë…`;ÐM±Í¼a´bÒ|š¦J棛͘ÊȯìŽÞŠ¡ìH™²U”à ÊaCœ¯†ÄÎQ{Ðupu;ÅlPåµ½VgF¥m=¥ª’­O•œ«yÎæ8ퟧ…óŠoç—Žt®5g“ÅëÅb6ÇMù–ìaÈg/6\͈P‘´EÂdãA³t¦(ÎïGœO3™žgr ¤÷ép4”—G^‘ã³brçwl(Š U·GŠYí˜Ç'j ðŽ}þ¨Ëûþ°Ùÿáì‡N.ÿªšbŠ¥ Ø…Q«H愨\6šzáüÚ’Kb§»‚MìP3>)¤lNË9g®Î09ºz=òòÆu®lÆ€i¬¡“ t†áÚÒ’”ÝÞ[A.]U†Ñæ¬Yn`Ö6¡ÖjíÒ}ÃÑÑ•¦7Èå¢È'³Ü<(Ä›…¸:hù¶q*•Ýà2Ë”cyõ]?Qš6ñtpîÍ/½ë_Þ}|ùÛÇÞ›^o&±µ`"˜Hm˜@ê¹mÀ:` Û ?r ÕG¾)¡.½ï“Ël"Xz{q÷ýíä²Ù$©Úb’Èß<(òp˜e0>L3ý¯ÑìC~XÈ'ùðe”ª% ’w™ó½Ê=Ù$Un›ÒÑʹQÊàûOG“Ëkû_ñÀŸ5A…Pamœ)/¬Ÿx¢Ê7òѽÕ;ONË8õNŸ¬º»:l3Ä#ÇlP ¶ 6QsžËbžìží«  €õ7œ,¢-¨âÓ•<2»)¯^Rà‘͉"äâ©“êfÇÑU¯š{Üìáʳuqí`Ƕ! ƒ+‚®h?KïtõÃkùÁOÂ!c4 b!C Æ"Ð„ð™“ºØ Ø Ú Üaììdï¥ y qKÀ˜ràÆ ­(á$'0 ‚ÛT‹Ó w¢>^mä;€ìOܘ)"ŽtÑËX0û Áúð¯àÉÔ@̹pŸxr8EA§ãí)v©«eR™ÂgŠÅâ€ùBžP”(1Þ¦b—Ãé}K’»¡Óï•”"fü“¡[M¯“ýa– ¡÷õMb3PîSEJ­dQO–P?;Ÿ²]ÜÕ€çõûÙêàÕË—/þùüú_³ƒ¡óS3µîÑzj!TŠBø˜„ªéqD$I}†©Et¸7D»áY…èëçï®_þ”+ûúˆv, puõWÓÉ)õùh@"!I‰` $A(°3TR e¬«éË-Üf¹EË-²a¹U^¼šÕ®›¯êàXfÐ\Õšâ’Ç§Þ ÛoÅ@jO ³lÅèyõìø©Þo©k!‰Ãs&p Èx©ó;gØØ!2òó±› `~ŒöŽ¥3|í¹ŽA[@îÉB+°û7B®cB‚- ÷g›/›c÷o„\ÇBŒàîè^L[…|ÿ“g¬Zúm‡|5èX¡²Ò×iôó-ð‘cFÂo‚®Í±ŠíêØšt8$Ú u¥»Ãs$t;ËY æt˜õo‡rª.­R&ßû<ëþFŸت.¯‡Ðáò†~w"n@O2±™FP(¸•µw¸Ê!ØàÔXÍ™9üÞî”$­+t¸”a[—²øY%7¿šÃ*û7¢¡ÃÅ ƒiQ­¬¿S)œ™îu'çp±B¼?¥§êÔ…ÜáÛ„ä@eÇጄádçf2 Ç!t8aô-ˎýéar`äp"¿E@-réÔ ¨ÝÈÉ͏e²Ôâ8IMŽ‘ÈNš†Ú"‡•`‹}ªÒ¶’©¿RÄõ¶j«9=‡1ŽPc6\ BœíŒ!6 º¨r(8Û/66Âí ´´¨ð¼ù©äºð9,iDºÃ7wÞ¼Ò¡ãº:LfnÖBzù©ëºà9Œ\ÔÜÈíBÈÖ*¢Ý…l^BaïZ:ŒõÛóÈlç`®w@ ê° t'Pé°øÞ ä°Â¶'Ð|÷aF¡]Èah)êN Juƒ=Èa…iО@åxN¢]Èah)îN Rm›½KÃNÓvz[Þ©9 9 »¨\\fßr84jO Ò`A¡]Èá$йÀßlšÕ÷õ–†×l0X¹4Ô»%mV†ÀqVD}¿û ÆD&B¹à¢‘I_o%’F'P7€• F½Ìœeÿì3‰Q×ùÚŒªŽ‹h[ óslIÓ3ïâââ¤&®W¨ñYŽ×ï~½nvøŠÕö¼×c“IÚ§jÖ;>îõìüÕçqÚN’3x†NNêb;`ÀÍNh4Cq¼¼j/ë B赫 3¾ìˆ D\E{ꀂî^€Ã‡‚f€6‚ÀÝO–Ð(J8Œ©ôiø8`«K1‰¸jv¨ ÃBBØF3@‡Ú‡è[Ð BrÁõ ‘¤\-‚¹$Q#³¨j¸mÌí+qÐaÜ`ÝÉV™ qJ €>eD ýˆ‚*ý+(Dq(¨n4WÂiµˆñÎ}¢Ž9€ÀQ€À–yJ_Ósð xtÑÒG†í´4: êki‡½lPᣅ–vË…r55‡£žØTÏcíê¨øY%Çv[}÷2ÜN“­¿©¨¦"p”'lO¬ÏQ¬k?J‚[æ»°£~»â‚Úˆu8AmŠ¥ä°ö(ØO €ÖU­Ý_5GuØD¾¡r99ì Ûp€Ã¡hë(ZQr«#²&n i¯(1§å½W£ºHu¼¼!'ÛEÕ’åfš“‰Zô­ÎóªÏÙÌ\ùÕ$ Þøê….lfŠ?}ö$¾òëÜñ§:iÃ<ßîê#íðØ®ªI}LšGjãR76}!y*ïM7¸´èNç™6ºl+:@^xݨa"u­ÉᎷ#GÛ(s}‚ä­ É™Wn¶œ/2ækŒ¤z¯ýoE’|Ì¢Öâ–(uŒÖr/QÛQ¨ãÒw=¡ ?ÇË¥¯c%ÝŒßX¬rSÑ$ôzÅk¼IÊø§þð¶³€á.æÎUhG¾V9õ¥K?ÑHÛ½MúɃW9°*.NûÊ¥Ócy“þ½ìL Ô…î0];J´ ÿ­§….ôä-dòV ³†¶ƒªi”ªäàNÉW>Q,ó6«¶>öLPLåÞ² ´ÁîÊ$µCÿNë3uá×»§ºÕîê.‡´#„v­ÃÔ©]Œ©»þb;œµ©ë¸^”ô®W}îXëéõJø:•l¢D^­Ïä—m¹/ú°n{¥ëÜÎl©tÛn“ÖÀúLá®b+îæóìÓÜPê2ëŠ`Å :;›úÌÃΔήtʺ„ë©ÕÛ›5l«§:ù*ν¾–bÓn±¥Ðض€@°Fb)pÛËû=lB\½ÂÈ¡ªÀÏÛIûuO‰Ç¦òí›Ê/µOXѫᱩüãO­þó=Ûk·¡ÿ'`±ÿ;Âê¶Çþýÿþ~ýÿòfX^Þë±ÏßcŸ¿Ç>}þ¾•>ë;êRß¿­ôù{ìŠ÷µºâÍYiÏðŒsëîwå‘âÁˆ:ºz#S©•¬VC™Ý2 ´Z7זּÁ3(xº¼,WkNE§QúPRÀ«¾I †”žèù½¯ÈÏjIv¥mqÁ´NÏLržøÒ“»§@ëeÑWÞö‡:ûåÜLC©Ý"—f¡Sia,Ç –¹ çûŸ?õ›%: øÞ³.µ*%Z‚LḚ̀µ¾jë‚:µ¶¬˜òbᛉ/<.Îö¾þ/.hÛØ‹xçHÀÆõ? $ðƒ…õ?FëÿÇõÿßrý?¿P‘à îiÇÔûPäÕ=†C¡ÇÐÀ·8ÌPÀú€E‡ÐÀÊaå°!ÎWCbçhHn\ÝF1TGym¯=;9رÊßnØ#›Þß3(¸å»¡Ì”\›;¤B½*¯,Oja¨—¥‡l‡øó{©ÕžzègÆÓÑš{õtçwÎ:äÙ3ÆUjÕÎ8ü¥-GkžéìšR³xÓ›\=–ôu»ø¼S¹¹çYœ»ðÀ`r¹iKßÒû®—¦)—ÕmýªkhöömƒzÇû²‰PÖ«èfï¾¹?ªy¯LÓaÝ{§C¥²Dm t#øº7?dOte¬º€˜ íz÷n¢Ôx”NΣ['µŠPlåú‹ûJ=l|%ÎÓÁÄ ¼½m-èË B%Q)(†35ô6‡Pȱòn””>x·)ß™8YUšŸ®H|RC­Ös\]Ò/01/ã/(Ñ^O#dž¼âQª 1þ§Rþ÷l¬”ÓÜÅëÁ…Gó™ ŽYˆÔ#ÅáÀMiÕ¼é­}•%ð²;¦M†Ž\Ú‡† Íhv(â§Zþxô<Îôí .¬¾ÏµƒhÖb^¿Z¼ª‰+dÑð øð Ñ™>åþd#m`þ*0 üóýw¾Ô7ÿïÀ|4b° ðÏ(VáàLEu@ƒWBSE®® \EÀ–€~(!„u $k%Î T!uË@À€€:” Wâª(%ül€ +vŠñœAˆ TO”ˆ”BÆFSTö&¬ $dùîDÉæ+ýŸoJŒôjqøã‘N½ƒÅ=·éh:.tÊì î¢£ÕÖ?–¼˜;XÙC˜¿XAÔŸÈû§•íuñ­ºø“ZIꙫU¦Â²^ŒyŸó?ÍjÙæT«Â…‹|ÕçâÑd2Z“äW¤h^›…è+còmŽæüÊ|dq&™TËE¯ZšËMñÍQµe°+[+;§Ù¢ÿhhV8‘NR1ŽÆ| C‚H˜$Å8 €‡œƒV´œ„ ùÆ•–¨:ïÒÀç.q+Nˆ¯zï¹yû[ïæ—_?\¿Ô¹µ. 7FAmXnDÄP,|îÇ$ —‰zw9” ¦ûÛÖÐ]ã][@÷?o^4AvStA6ð ˆ`$ 9Kb¥^#Â8Œ¥Â$òÅ6‘]ã]Ý‘}ýæåõ¿z^ÞüúÓGíckSNìpåßêSµ©÷£WÜréõõ‡ql=ÿ$?Ô ®œè"¢5Ed¢Å” )PDY¾4J8•A Ã@âm­Æ»ºíçç¿õÞ?ÿøFl™PPŸþs ¿)JÎFUã§¥à…ÛH%¾‚ H„ GLRLA,IÄM¯Ïæ<¡$d[ÎÆªpÓw5 ¾÷Ì#ùQ¿rq¡EOfÉ©º1Þé©éÄÉKMQÙE”}…²¢êµR¨â"–a‚T¯“‡I67Ô%²õ’ttßKÄvÈwfŠ!$ÂMƦ¨íBF)%¸Z-ÁaõL}Ì©à1ˆ&ÝP/‘ѦÓmѲ޲ä}éÒPoJÀœæÙ~¤§ã´ÿ™MjH{SÒuaîû8,ƒD>‰ObIpÂHäs~˜l↺`“$•²3klPÒjF:A¯)"õ3Wk¥o°hºÒÍ*›yõçP„7ÌÖ@VÄ.¼¥Éb½{Qʳ«ƒÞŸGj°‹ ³7aQ÷z­!£ubjãPŠP€˜‚DICe+CÈl—›Cdj'ÔSç®vÏÓðØ„§ßy*Y&«gÉÔDÄ÷ÅçÎùµàó†¼×…ÏB>'c ¼ Ê}ÌHéz5‰Zß…Œ&Ÿ»¡.ø|VÊmçœÞ “M8ÝTŠûêœîž_sNoÊ}]8²0Ö% ÔKôŒEÄ”ýˆ}DM½äät7Ô§³±ÞÜ «WK–è¿3oV¶m0ÞšåŠÎ«s{¢MÑÞ…Ä%8!,B(â4Š( pLpK(¨Ä<8L»¡.Hœ ¦éx[.ÑVS²g :ûãT'Ú äÐMá¦XïBáË8d€úa pÆ(`aÅADCÄ“Ân¨g–“ž¦IO­ûzš; v[InŠû.tNdÀ $Â"a@?†4"RŠâ ü9¡.è|»+:—ôöZrŸÖ£wStÒÜD ,b1'SåDDùÀ˜ªævB=“köy$ÖWt¤½†’nˆàNJ:ŒC! •0NK† "BDè@•´ꂘ#åh}Ub6Epb’„3B©À¾%ÊQ‡!Idâ“€ “Ã$¦ꂘ| Ùp— ÄÝšâ²Ûr‡‘€RB(óYLH>òÕ/‚1ó“äP—;.¨gt:“M袊C“íwæuÇfÍÕY 5#J'“ªü2ŒÕR‹T@æƒR.QbN“( QËpà1?j4-Ñ õl+Iü>Ír,¥{§eSüvÒ²Œ¬L3 ‰d$4ຌ‘Ìo™+¾{-넺â é³›[Ò°à J»ê54kCôvÊW„‰ùP€(¤8äÀŠcB!–‚S| ›Cn¨+sû¤¬IɦØmšŒþÒɦ ë2›«_üa+.¬I8an’Â{!í ÓÍã®?.ó)š|tM'w¦ ¤˜\=7ŸŸ=QŸ qu=?Þð ïûÞ WDö^¥ýÉýá­NÕz2BWz[w8šH;ê;õi6æG]¦(“¢>ê,C/%“/,•—ÞÃhjÚP¤Rô³¼+´®ÆâÉ(õîGB·ÓR¦C]äD·£›Èô>Ó…õ¯ßýêý$3Ý<Ä–<xï§ñ Ï½Ÿú\3é±Ìë+Ù-†¢Ÿz¥¸Éð^Ôà&8véɾú>õ>Ë4Ó“‚Å{òÑÎ<Ô1›h¸ÿŸ½gé‘3»j’Ub)‚‘/ž@fD»}ßfh©ínÛ­ø¥r5÷é®L¹ªTUm»Ä X!öa…"±–lˆ ”߀`) +D«pî÷Õ»ëÙnWW»¿’ìªþçœû:{Î=§5óøˆ=ÉRª’Á{ÛyW]Kí¿6ÙÃv¦Òp9ð£f+9 ¡¯kõzªÊqÜ ñ¸¾•Á“Ù³ƒÃ{žf»ŸgÏv+•݇‡Ï?'aôànÊИé½lÕkZÕ6îI"þÁ~åö=x~÷ÖÁýƒÃç‰þ;‡÷Ÿ<Éî<ªd»ÙãÝÊáÁí§÷w+Ùã§•ÇžìogOBX²wc>Hít\;Ÿ¿£-cÛ ë>;2¯RX µW@_*úØ:Yas—^jn‘`¨×›ù‘˜v[Ùk˜£ƒr…³w+;h¸í­ŒcxÄ4¾¬Cï?IÉDÀZàwêÍf{+»ÕìtÓãv3D0F70E8{údwrTósÔé´¹©5:ÉåÚ  ¾Ÿ´£³=ê‹f¦¾ê_OUo^f°J‹çû«!Íöãzè䉓à±Ìxè­OíÎ07f:d“—d¬Äâäì †Ñ?…’í& í±Œég†–PJÒù–Q†Ó“L×O]mµA S´LÃ)r+]ÒÎ ëj±ÙâÙ^-ÅùÚ[?ƒÒ(¤¦\”Çþ²('ýÂf„ãÏAÓ«´^îÄüMøÑ—¸;O#|üZ/+Tÿ÷XvÓñ¾ÏkþŒ2ê}§`ÑÓo0`Ú£¾69@ýç¯õÇfzSŠfôZðNâ®G„èH£³¬·g ¤â`ÑÞ¢öѰ±f !´ÛÀÂRÖŠ±euíÓÖÎ ML'[˜écüÈ|r™§’¢Ö#FŒ¢Ö{a”4<Ò­‹‘åÅáŠâzÀ2[sAµHµêœt†ø¤µÑpm WÒS¿màD;©TÔ\ñvoÁRÍÕåôçG’0ž­h:X"ÐmCøC(xÙ˜ÁV6{ÁÏë‚Þ—áäúÎb&2«½£»J«6 á\xNÅ­ÚŠ"D ~L{qQK¦>›§—ÌýsŸGJ1ÁFûm™·ŠöÖ%$PM*ÆxˆØc¥p2P‡i´¢¨2º_©<ª¤îÜZõ‚jªAbã´†iï‘6B0O£bÆ TUŸU÷c÷.æ?®t@Ê[lX*Uiá>à ©8AŠ`b@b xŽ{¦ õðáŒI”Ópçàþ~u÷öm0]Rnâê½s§#¦cÃ^ºè¨5ÆpL¹ñ ÔªTÚ\BXW{÷÷+çNŒOµTQRÁ=ÄcðTp)ÁÆ`§ó`ÿÁ£Ê󂓤ߗe´†%B‚6CkÈã¤J ¢´ ÖÈø/)·¼4 j˪Hì´« ïÃ_4\ã8V‹3>‹º0ÆpC$JÚë¼e$NôÂm¹56»k-í¾ckt"l„ù×£r£qÍö!G4 µÎhA}Ç^q‰ÃŽ*ÄM³ψƒyä™cŽ;f"Þ̵ V+Šrã8ª•ýÝ½ÒØ-Ý5v—ˆÑÚ Õd2†­´{K»÷¢Ú»WÕÀ~çáÌËš†k律Ógm÷ÍC¡JŽ;ฉs¬'ƒ[>›JÅ66ÏxhzÝ^Yðœ{PÞ¹Ô9ÏU=Þ`)Œ'ưId)¿ã¶eÜØãÍ V,¡.¹  Zxk‰Y/ˆ€žÄØé5¯Úh6[«+ÙK$RØ%ûÒn_Z{äré¯Þ@=sd|ôŒ¨_&{pð`?Ï“ulËó-ï\ž­Â~—8ɽAì7WÇKÖ»4ëíë_™ëçÑKŽ»‰·›K|Ècí§׫Ñ.‘@psXjºZrÔ5)³E’³’«n W-†fº ›¯‘«¥½.¥:.Nm¹Y|®Ÿ…´äwë9$ÝOͺ‘Áõç—vÕnìf\踞Q‚yoK!¶‘Bl¸àzä$WUÿb?QžÆgic[;éõbÝ;:g‚8˜B#@áZ!e_ä)‘R²¨‹ñ>‰Žúi„ºæËPøû˜¶ÓûDv@7è—wÈRj*èZ7ó!eâHÊB³HTÕë²ôhÞm}uÚ;+:²—«p*Ny¥Ÿ& Øñ«ÐNý“k&-˜^µ7[Y½öeJauüÒVSÊ«¶y]Ý h‡Vݸ"Ù•;nƒ>ÑÍ:Ç@$›Êd¾s-ZÒÙG)ßT£cÚ'8XS¦Â%{ÜJ:ÍÂÁÚ1¯R£s2);V"ЛÜ›Ðhhh@/ƒUùfûeJ"•¬¯Õý©«1o£‚ŒDI!À FcäŒÃ,2Éx5fè ËÝ`»O÷–ñ‡®H„Ž2.¼Ö”c¯Pžcæ<¦(*xv‚ˆýÏîœ; ÐÚÀ¢ãƒ…™¶˜SíÖI¯› áÁþáîÞîáî¹Óa§Ì›äµæ¢ &p½ š¡8AÇÃG•»÷Ï¿7(uÎE©$vÔû0táYlˆz‚ŠÇ•ýß;ØvîdDíƒ%‘S`zΡ¨âŽÀ—SdTvŸ]¡sÅ+Åí!½ É Ï• šklã*‹©“›“Ó-‰½‹±E6ôJkçv;€dÍ‚w}1á`c{ ett¸rÙWV%yËà•Ux>¢ô(ö¼ ÓA‰‘zl?lϯ¦„¨Õè/ï¿È ‹3¤·‹þR…4¯Cô¹xMöôáÁg¹Ñå{©µ›í« çÒåG¨šÒ?åé£a´ì&€ !hå0ÑÄR<ŸkÄöNSã´|ó8ÿt_=´Kö.ùqªÕa ï={ªå½ëgóÃõ_¾à.xÕ¬ùÕ©oµk¯L7”’pRwÒneÚCm¾€{iº5—õÆúªËÂÁ”öá©Å´<´Á6´¸2hpª«¬~ƒ`9î„÷LÖ¾ý‰M¸KÔ©Þ ›2핾þõøúû~°Ò3¼‘žááð”ÉÁg# ^z䬥EMqÄP+¤ÓZ9ÄøðÑŠ©gÊt<—6EÅRix ±2ÀüÁVãf(âR… 1<mŽ =TfáÏÂsÐp`ptRÉ®sÞu}ŸÞLý<˜¶éOÒwBµsíƒ+üΑ¦UËû> ”ªI]{N8|céKŽò¿qñwþ!X|€‰ sA0þa *ÞÙ¥êÈ^[ß—äó§ÞýƵ_Kkà÷ö*ðýø÷í¯}þÿɯüäsøzz°·{øæ+ÿõÃï^û#ôË·¿Óü«þìO>ÿçÿô7ÿíÍ/>ü—¿þ›ÿÚ×ÿï‡ÿôóÿþÑ7Ÿý(|ø ÚýúÁ¯f¿NûÏÿá÷ößû¥½ßøñ7õßýëOÿã/^?øûüù/~ð‡Ïÿ§úŸ»_eÏÿòg?HTì?ÜûÛ[¿ÿÇ”Ÿ Xÿ§S U«®Y¯W«/Ú¦u´ýÒ´Îwýó|ýcŽ1ð"ˆ#^®ÿu|>…ÁÌ5š‘Ѿž§£¿”¬qÐò²Î‘iÁ­6Ø…9ÞKôÕ†o/ÈJÕ7qNßïIqЧšÍ¶qÏ·øfr‹é ªÎ«-©×·þÇŒ¬W`ƒ¾ J`ŒWß~éù9ËÄÐÈú§ ÿ¥d´\ÿëøDäL´2€% fzPJF†0ÎÞP9+WÈ_ÿð@Û´O’¥þýÎ;Ñÿ1'dDÿ'°þ'¸\ÿëø¼2íþÖ_5wu8ÞÙï^û<·Â?Ï®Wï>~ wµ’Aâ s}+¤ œ¼WÈú9\ϾØêC.îÝ/°Þ¯uºéÅY3°Ø+Šš&?†4Â[ŽR”Ñá‘1”;0@h×볌7b>*ΔµV­ð†å qÎ KÓÚ¨R•¬ÅHŒ!êK ÛTùÓrŽˆGÞØàc<ØHlˆ‹ñ4WhUd†. £N'ggR§­*´sx1¶îR#¤¦*§¥A„,wˆ;´ Fð\ûâ“ËÏÿ­9 í·aø«ñ"šàÿT€H(ùÿšø¼Gþ­tí0Y~°8¢·WO#‘Nr€oÁ€YO0Ö:0î¹¥ÊÁ+Ÿ÷¼‚ ÒîóýJõ09—+wïÞ:<`! º0i!57À·€1 É8ò$ªÉe>‰önåÖݳ uŠ½Ð¸eÁÅÈ­‘ÚkI ÁfÚ[wïV΂Ö8¡OJZ¤ ’2B,¶ ¤+ᢱ‹Z{«r¦ÖRå£`BpÏxt&*)§1 Ä Ž Mc[=xx¸_¹¿{{ï,o‘NCðŽØÉ-›y¦aˆK ó[R˜ˆBiTNqá´J1¦£ Az·Äˆ¿%Jã`’Ó<%²>Ž-¬à—ü·¤¥”`(R‰¢“ˆkîQ{Ú[ÂF¦_NÀã²ÕùªÉ{<529Šc°ZKF«3Ú*&µB@›*­Ä<ºÕ¬›î4°0cyÄ1@ AŸ‘œ‚Öá`"û©` 3I LâÀ6V –´/\ØÌ0‡Ts`†7-ÓðÓ`ìŒ*“(pIHŒ1 \…c!aÐçÀœßT™èÂQ›@¬ÖE¬ Ymˆ ó´“Åû¿I'ŸØÿ]qhåýýRîÿ®åÃ`BRi‘ð2å•òD-ÖØÁ7èÔ>–;$Wwÿ§ºÝZãÅÈÖŸ%÷ç#럧ý_ÄE¹þ×êÿN„þøÿÖ‡ŒÒ›Û®ïZøÜ\OxŠNM²£qÑ<$G§¼EZnaD¶ˆÐ[˜èÜc4›uŠˆñH²¹4N!A0Ó 0[‚ŒNQl=4—ëŠôð÷êùOxe 9Šª-Í·´"[`N/¢†L§&ýgl­^ë¦Íj§yÜva%âF L!cHTbÌÑdêéT®0z#”ÍH©Ø–Bt‹þ~»çñÿ<(îMêØ*hÊ­5ùÿHîÿã¥ÿo=dS°(˜NK€-+4Ç`5H¦·¥†tuõ¿~ðçÛn/Xÿ11±ÿË.÷×îÿë÷˜ßo$hÄ¡7ytaê­Q/_õÖ“½ê“GO+·÷G½-ãG<õÊPë‘CVHi\ˆ0M"q$ÄdŸžÞ ©>~ôäà³…€õÈ„ƒL©“¢ "y¨ºrª›èö½ýÛß­VöŸ<½8.F+`•,ERÂ8bƒg2*4eGçÁîgÕÇ»‡÷fôZûà©Ò&JëÄ¢Utìr`ÉOÝ%ÊAÿýãN‘G£›íaê§ÙÈ$µÈ‰€f–^0Œ[jóš¤Sd²V+»\Ó!k#“Û4ÎJ_Æ O`tmQMÔlÈy•“Ù€–K™ ¸Ù:™G° ^ ¡ 2VÅ¢þœçÀÌ´5o.ÈÞ5G:3î¢363ᾘL´<I ̇…âtŽY˜œ"x¯©d‰Þa üY¢„´Ø(/¢aåaADOc ¤dDs–•Ñ‚`Zt ÖÌY†8±ÔƒŸ{4i¢´‰”<³½K»Œ–¨¬”U’†Q!í¥Me$í!¥¦–ÿu?qpŽsäãü¾_¿ÿïã깟뾮÷õ~¿ÞëºÞ×}óÛ€Þ¬ø!lº¡g#:›S,ùÿèNŠÿ;GÌ(´í$À¡°õô×Ëoñ;mì­)6гVÂ>=~„ß‘bïHq×!ÚŸ©&8;Hæ`ÎvÁü O7ø­Ú(ÃâÐpüÄ¢ÿBìŸ*šÿ –F£;?ÙÑâ0Å‘ßÄÛÇ„öW1x 4 ÿÑ6êoyõ'aþu/ùÓÞÜB{hÓùÏlÀbiBÃÁp‹Ú_÷ ]-ÈPν˜­Â…¦ßÙÄ"Ñ4f€mý}p ŒF…]}ßÙ”ÿ ˜ÅÊêjHßÙGÐD…Ç ÿÕoý“ÿÿrôó×¶€~ÿ£ÿ¼ÿƒþoýÏÿüþÏy½dfÿÇa™O ¾^Sø #Ÿ—üðž€CQ¨(0•D8Ây#q, ƒûï²Âÿeùÿ‘ÃýÿXÿ±䟞ÿ‡ý÷üçoÿŠHþÃ5€?îþÉÜ€Hè jßÏ þLÄ—ÏÆÖßõ-9P‡_ÒwÒ¨B ‡_Dò»$ÿ „~‡,$C„!qØ?ûâ‰Òÿ?‚å¯5ÿ?x,Ô?ë?…„#¾ÍÿáX û_ýÿŸøó×ç?ÑËÓÑ-b\®p‰Ûe€+ˆê*t¡ÿ®å%œ£’¡=êJ³§ñÓÉŠÃåµ{vëìR]%p€O'`H WÊ®ho!™MfúS[#áªÞ¢ÝúðO1¿*aSŽÑ\þ<«olz®:{¯ŒImxßóNŸ—õã>¦CÝ}Iýny­)*ŒÛT ?äšÎ&tk ?º6ÄAèOlÙseÚ·j!1AПS—n&3ñ/=²œi=?¿¿žÂ¶§âõë â†É/]6€†ËÙŸ¶¨Mo<󰸘þÉ%tËV•®]»w—¦YÕ?,Àœ bfR÷Øawj#zUJÞÄ¥äJ~±úÇçDF^›E¿ËfƒÞT¨ùó¨•Yi¤m@ðÒ(CX2Ë$Œ 4ÖoáG£×U^¼­»iúyXoâÁ†Áˆ˜ƒX¨«  ùjfƒNï.GüÞ$£å¦¦¦¹sSý©Ï†ß<柨IÐŽujIÓ¥Æ=xÖË%{Ø:$4EsÏ´: À…A™õÌ ‰nÁŠŠ2FH™ù~œ1µnÉݰ~ýú}÷ˆþžššÌÙ.}{7Qöîº<—ºI}Ù3Uaç ±Ã6vºPWtí¾ù€Õ›Vr·U]Dn±=ÐÛ˜!ý4JþäÎsÂ…åå ·÷&ÓÖ·û8RÎ÷3Ÿššj›*0,0ÕÑ9xGœnç‚—Õ%›0]Ô pè,[BÀÊzþüùU“Ë8u?%ŒõTÛ»º&%I¾­ºxü$§ôRº(ïULLL‘—/orV Œ]FÇ/.Î47=^<=Þ·„N,|•rs¡]Á\ü £€ýÔ0Aój%=KÉØ»š‘¾”˱îÛ:¢l7Þâ=jt¸|ÕªUý¦û+rl!àäfâ¶n¸"ï9ÑV²i_ÎaÉÍì+§÷XF1Îv+~<ªóð}Wå=§n-¨c:û®ŠuÖÍÙëÌžE•¯®;`·„.Ý®5´1ÃŽ Cw$¥`~£ìáþ‡O¯ÊVgØ™ö7fh7û¸ÏhEÉmß{gÛ9áÝ/gÊÊÊ®“ÊC鎤š=»n˜rpEkX‡ÇXÏQÅù)úXµ¢pqCoÎz2bC¶ó;½ŽÈã ¬ÄgQò‘X;Þ†t›“%%*wæÅö±¯Ys4Çu¨£Ñ®@õðaÌÉmmmˆà ï“7AÀ“‚Äîçzûä2ƒ™™'Lô¿Ž›Lèkû6àÃhwçÔHg¯ ‡ˆ–_Vþ ÷ø²™ÙíVE‡ŽeK—.mëïg·.[¶¬­ä¥N§:ÿÉe¬aØ0AÖÂÂÂH¼“ð‘¢ç6Ãs¢O7EH›îÅiDÀ¬_Á6 ÊÊnâ”>¨xÈÖö`G¤÷ÌDûÇù¡ÏcÕYQ/–5±²“1Ì¡W¯ò 6ç0`±Xº‡s3“ç®\9U—t€žn°%ïdüîË·2Â' õuué*9“ƒÍâWâgþ7ZÕ'—^W=ÙöîÝM…·MYNnïâ"˜óùÊÚ k<ìF@hëÖ•6éªõÉ&ó³î%ee‚0ØÝ—î<ÜÜö£oŸ°oÞlîlr cÜUq»XGK‹åEM šÎ, Y V;;¡ã£e›ìòwhi©íÚµJIIi×@*`Ôæ-[àð5­^£«W0séXä@êw me?Ô"ß”ãÊjUwg«ƒ±––VÜÌ*»¶Í2Ì| Ü &Ós2yº¯ÞÔ·´RºÀ€B#ŒWÞ¾íá77·‡/_®5É9\zT~ÈÎŽÕÓsFo†u†Y#Bª4Ë©{xj„dœë¶2Í=ÙÌ\0:;wùûÎõ™¾Êqµ»8'ëøfG\ýI|NñÈ®ýúõðä¤zqÀj¸Ó[MÀ‰ ¯º“2ZŠù|‚rsåÆúêY;ËÃR4kÆ¿yó2`|–ëàjöU;‹¾Q-”ûÄÝ»0”]Kn“w´œû±óç×.c`Âá2Ufšs\ [(æ‚‚ƒÅ\žÚ6go>£Ÿ Ew„ó ÛÇ,ã¹Ù©-îÝ<‰bË–/oo/4¯½µn)==Üu°iWJ%P°{„âS33±×®ÑåyŒë)NŽZÌŸŸîÓ‹Õƒlîä¿xlG­à •c[4.´¥Õ¼íÜŠ4{zÍ¥¯®wß›½ÆªÕ_e9‰)b¤xÃê±e/Xmn÷g÷¼øäŠ,fgÙ€Ú¿chiQ[Ñ].¾/Ï&36æìççw xŒl©Û§âøÊú”À¨ ÀU®0ë(9q÷þý¢œ¡ü“À\ÓUsÊ›|Ùȼázq/ÊLbîyzE2äd÷ŒL`^0íÉÊ Ùaèæ lÌBÇŽïx¹ïü’˃æ %:8è½Ø@Zã²2mW Û£g ŽN{tD—]ÂbýUôR1þl;´ Ÿjݺ*xS©l¹ Ü}ç¹éÝr`zÖ´ë)OœØrCO<2r_QÉùVÓ §wI~œ·£”ïQÑCDÞˆ³9®4’¨ÖbZ om½BPÒF|m0sH虚ՉºŠoÞ3Ž2Š­W°x¯ûäÿŵc=º׃Kãô–ƒ€ó @ê²#ËvÅíšóq`ßÙ>Ö$¾÷TaOµtmÏ쮸UyžgÇë…î¡Yòó›Ñ é¤ríáù;âû7 è[G¡Y³ _ä½niÙðr Néý¤¼¥XøÍx?ÍxQìpdd$?n*o#/Ý«œI¹³güá—ø1˜›»Ê÷<çöw/(CCÒܰ4€÷úÆáѾ„jaaöqzÖM¸ vÍ7˺Ã+Ã÷åÏzÒù )pJÍî‰ë”—ãvXˆ;jWƒI¡‡'¯¶µ=O,ò¾¡Çñò¶YðUY³¶'XÓçî®ýS«·nÕŽÑ[×rÕcnÚ[tmœzDEͽXÛ¦[T‚¡9¼‚±ÕnSSciHO 40š@YëÝ\)!Ñ+ XÄšç™cÕueùòU^£OXéæÝ¹µ…õÛê’7fTg§ñ¼íÚ±ÓýVø%c”YuÑ%¥ò‹ü=ŸçÍøÚ÷ÊG^ B4TU-[½©®¼ð¸S{W×õ4'»×ïÅyå+ÔF¶îÐÔܜ鵴ÛÃ(ýÁrºÙqÃ'Ô0!aËÀÔöØ/mñ´šŸYeö¬¥H$šy»fUÁH‹gÁrZ{Ž¿¾“Cœ[AŽðßr`6+ qçàœPÔUçj Û{÷.iÇ6ݹˆÞˆ‚•7ç¼3º ù—¦ª×w=êÚ¥¢6´­MÔ¸ êØ`³Én¹5ÇW¸+‰Iκ¿©oZXR@'ÊÌŠy•ñŒü0JÚ"!±ñâÅn‡¯»_Ô<ÁÄ9hp3é‚äeûP<Ø» ˆÑ‘L}+$7Ë]—¦äá±~‹×šÊˆ0µúä8»=N‡mOe´ôúJ>IÚ018~<))|oßãÇ[·é=½n‡F勽' Í÷¾¯¾ D VûRߊgsÊÉ8ÔUçÂT1ÅÇO#Ÿ•œŸdrtªäëZ²ÊÌþdÈî" \/ã¯^E¿¨ÙŽGSð1«ç¯šiÎñUßñhçrÛ?Îóâìùéšsrz³ \Þ½`?Îà)¨0/pöòt„ƒ—sUÕ ±=§+oc.½!£º:׎dá?Šñðt–jË$lÞB9ÔW‡|•>À|~׺€Õ}ÁûS§‹ž<ѪۓèëË:64ããýî… óƱÕKé[ýØ–ž8a‘éŽ\‚¶­yút#Ýé €yz²IíEJÊ„ eúA§féw_6"LÂ\zÅïÞ«ž÷£¦\mðZHÍ-fx£eZõôt@¯04]…l'ÂHõYŸu“Ûªêê·öå"wöÁW((˜ £êö›Ê{_b¢C¯²Qå@‘){fï@váL ©G öÜ9ý#s3·îlŽoïŠh$V^°à‚]‹MÖ¨¹$¢ýžÿÌŽC66º˜àÐ'5{÷Óäs"&𔚥åút›™u11Õž„·_u•’°^ô¼ÞÅÂ(ââE++§qÛZUØ?+k+`cÚ¾ ÐÀó„ã“ÝÑ“w)•)@NGÓÒ–Çk |n&1z?\ èÀÝô:ë¹kÁ(ë}ÑBLÉc\øW ØOí†æXfª<3ñdäCw1Ü‘ŒÝ·/ò]v®QD„ˆòÜ4z(txÿ>î”P•tŠ9X3þáQzÎ5kÇ|×<] ­[äÖ¥ .9¡r½ï}ÔåcKñUO¬x=ªž<Ñѹö\Išå4=ÃLôàÙ„Rf,€eàX[Û óÖü,À Ç–.—°œï³²µ]uñ-q;µI™õ]ZI ÊÏÿjY(Áb?+©ÜƒÔûRÁÞÞüFß g1EÓäðÆ)³ÓÏ%Böm‡/|ìôAW©%Û·+‚pÚÊÞÁ"8LÑgSg¹g¬ÏœG¶Ôné7ÝV}ýG]Üï Dµø^e)CAÄ{Öe êíÓãk‡ƒq\¨G©júÈMBYÆ+õk.Ißµ¤ w!?³qG7Ä^–¾zuyy&z†ü ®JõX+CN“ˆø ?¶çe¹«©ÔøÓ•îž´$Àû⢬ë‹57†˜äø7°\jÚó÷úõ4CMnâòH¬ÐÓO½kÓ˜«f›Ì<”[³@Оž”—¬qYõ$ ùâ\´t`~Á*@’{•f5yÏ}ÔBE¥äaCÃRý„‰Â7½Ÿóa±·äÈׯm“Íȸxy4e d‡lg(¯cWj{wùUæÈÚP¾‚††$ŒPˆòÏe¨¾Ó9¾âí£Ç[d—/wÜ·ïeÍe©Ø|n+ˆÓU—-Ÿ;55ÅÐÓÒ¼î2V»´/ÅÓ>]Zþ…r´ªjvcƹð=tââN’Ð}7 À¼üÆÆ¬û_ÊblåüOâfæiX^XÈQïíd¡Vв6?Úß?»QRê–ÞJ²Yw¬nì´Qr(¤6À{ÑñÃá« „ìßgTWüê^K¤L+7÷ÆwÙ(±ãÀ ýþý›»î´ X¼~ýwæÏÚЛéÔÍÎì4QΈø©©Î ¸O.¶·¾Û‰wº pŒîtx¸éÀóÑ1 ^ºkeZаe–w9mœ\rdx×Ç{­”Iöɯ<ºÚÅýÆQµ‰%tÚQoŠZòcÔÊýËùÅÅY“Œ^_ß#~€LY§åµßÊ… ¹é¢d6#‘|ííÝP‡/jRaöm'§†|SmÏKjÐñKJr 4àÍ«°­³GnÜ`N4XJwˆ(x4ÍÅ»*º€i Qöaiéúäät·w[°ZÊZЂ’LK¦“0Ô¯Òú°;ℇǽW¦RóV-rëqY;•ªw#žjᥙ %yúÊ,×6BîÍe÷ᅦÂ$©ƒ¹ôÛ–fŸ˜lñÜ`ꃿ¿·WÂñò^¡Ãà{%åX‡1s‰+W6 Á†WkF>?ùÌž ØÖcñ»“nqyuÌ ¥l»)‘·[Êðf#lz`zÅfè~&fy5µ8vœCÇÆº;øPò<¬I]¾7™û8¡8÷eE·Ë©©ÔÕg¢’Ý{FƬ—dåž*Åêëož¢Ó~¶¾A4 BlŒëDÿÒþ–9ÙùÉ‚s™¾WNON“¿`pO}œ®¤E]ÕFV>ªenABr3ûJ?6Š­¡Øž©¶ãöðB^©åPÜ~çÎ ¯²Ç™Ómdéãôü ÅÙĺ;ùöN©5.•FÌ)~ÌM™¯«[oïxÿÃLVÔY`Žåàå m8#}~•|uuuO} ßÚUþR½1b–/%$šN_ö\ŽÇGÜõrW¸ ]pæèÑ£û²ã&6nN²x}k(oHÒ øÁƒI§Ï¾_»+îVÉ H˜8Y^RÝi.7Ö gçÎG•b¶¹¹eBÝVTê_;(¿õÆ‹%Fvž]áP:â‘sƒGJj÷™K—üså.–||¸÷%»zXمȪ‡/ ‚Á„®ï¾LM3Ø ÍØ6ÜÓ³1Q76ÊŒçF ‡³ÉÒ=Kã¶ú±ezb•;Ó<ää¯jì¦òû=<¶Ü®Nm!2;Zã¾fƒ('ç›ÙAÄ`áUuRz½U§¤ªjmgù¤ßIšÑFÝÜ ªQé|™Q×cæ+WOJï‡Ùµô5HÓ”7 jp7”çªý@CžOgWí*hîÞ sè¨4oiŠ¿p ^°m]QU\|o—<Ýó›úLÀ32¶‰ÒÌœbÒ}¯Ââ÷ùõÌSoA+# >T¿»ÖV™o:Æ ´º"€@Hœ¾Ò´LHíT€Á­×ÏjjÞÒYÌ&—ùøè[elÂZ¾Õš‰-™î‹Ñju>‹œIwÓÒjÝZ[:õáCŒêÉõwïÝy\,àñ­Þ VòñE7ˆ¦ê5ô&KØÖÿ:5[ªøÚÖøH”¼>ŠEŽîäñXË•«H«{ˆN׉þý‡Á¼ècÂÏDu\2¹5 œÖQ«¾q(çPáRUU‚……eêÍ9m˜Ó[ÍþÖ>ºáÎ0ÅÞþâPÌL «ÇDÿctÌ#þÓÓ½ÙË ®S÷Öd¢“=Ü¿­¯.‰`fø:ÕL‹åtÌâ*ø¨Ð?0Pl"Ë-çv·ÄýIJ@V¾€À@†þþþ¶îîÀÙY¯ñ ›ÆôÂÒÒå‡fdbÒ/ˆŽˆEHT”‘‰SÊ àc)§)Èv×Mùô®•2Í?%]0˾råJº# ¬¼kkÓŠ¼—´%DûEÂI»®¤˜=‹¢;RÈJztZ€îÐg¢%ȉþ×Bn9J¥“¾3R7MËKJ Û¥ˆ$Ríi¾W֋Ά±-ΟßìǦtÓàîé“'I9¥aâÉ×½O>"#îQŸl„n¤Hø±K‚Ö )3 0gó]âB[ž‡þ–Íî±ÉÐ6¸<5ªP†³ô¾QÞÜl2—$¡§§g?9hòÀ¢FmΧ1ÝF\^ ß?×ðøñJ`áõîÏzN†[fL9ìy=ùæñ¹ž—79€ †+¥ ÖÔpàñøÓÉæM™öêÊ ´ ½¾…ƒss!›°mK¡µl¹ùÆ qù§ÕÕºsÓ¯»‚q22Ì'ß>¹¼%´Æ¹õÑ£šWpk^e»ˆsssÓ­UBÚ·m‡4„e'æZÍÉ5çyržÑN†vXI…V;¡Uÿ—=+™™UŒ¹“³Žø‘ŠüVFÂKgçæFßîÞ¼yóyü“´‚ÅŽŽÀ喙ˆd€ÖÔÆŒIå¡¥MYN}u’€B¦%K–l õœ³ ­ ¥X¶lÙçOY°¶M:¾<8{:å@–=„Ä9þ'·œæ.÷^ö$±"*¯uwã³1¿ÀÀ“uI˜8°† VÕÇ'Ÿ‘™ymzzúu“œÃ‚„Þ¾ýûÃqR(”ÁËÚ]¯Vùúúž‰ˆ0¼5gfÚýö-ô‘`g' ÔFuÛ¶#Ó8SSÓêkÛéÏœ>­ÓžÏÊ+ÇFW1ë1ú«q¥Qg&f+É#>á–bM-Þöéüu@^Çì‡QA @ÍK¨SSS‰àž}oÞ¾Ý{;´÷¥~s§X_à½ÄÁ4‰"3(UeÜ«¤½Ìlà‚úÜtYÈ&LD_·ü0Û@”˜ Ë÷罨)¼^ÊXôÚJ¸©¹¹ô(=Ã.ÿ~0Ô F0Y¸ÙÓ+ìN@ý¯S*/ÕÕíõ ¸VùäÉ:§î§ë&&&Š ·óp›˜˜,§“3$_HKaó?·ËÏßÿf£÷XÏó—‰gØ”‚<@µ÷õY ϹM<ëŒ S` …î­º*kØÀ¦lÔ ó3ÁÔÞÛ+vx°iÿõ0ÕümmüEEE%÷)•~±±±æ/nœ`da‘rˆfs%@_u¢®œTÆìâ¶Œ˜£të­×ccÅåºSŲ/\:íÀ!¸eVÊóy u›È(«êèxŸKÆ9q‚¢ê†û`|Ϋ·*=ã4õ8èÞµn '§ˆmKîÖ·Î=BŒiOÇôx_Çû®Êë@gˆÏn鵩IÐæ:mƒ••©y7]W=Yr;%_¬£³SÕË+×m¼Ö°´£ôdmù:Ãêü »V)øYŽ ¶®`áÚ \ è$´Ý’?û^£º€åôiþ§QòâÆÆÆ*::§=)=¿U_û*ß;è¢Ã )ãL²™Ùɶ¶CK¶UE+šB\úêÂ{ê_Äi”­*iÎqUµ¶¾3üþ=»OïahÈÃC-’÷ïßû cöïßßÑìÚº.d#š”ØûòfÇãs"½H³§wjG­NÞ‹•›^ïÁìlOºÒ pbbœå¨:7 ÜR´MS_ŸbÊùúõk¥8½àžó½€5µÝ[û\FFoܸ‘húqvôY¸­YkÄÇÀù©ÙgIt!´#JÆiÞþ ª4‡xÑeËÊÂâZk}o¬X‡«bm»ÓÛªí¶Í4“TXXx(AÆ7oÖÚQ[B'ï1&ZËjg7ÄÞýèéÓ2`êGÆÞé;÷<1X½zf]äÅ‹á²vT纲íß·oã:jç•u{íu¯? e×W§½)ú/W˜£&êûmª4èÒ9.ÊÍSfW0¬XçÓ«²½˜P>ÅÐÓ§ÙÆû:Ë Ÿ=c-˜Ÿ?vìXÅe€æL÷Ñøé&í(¹B>ßÙ˜|–Re½=Ï·º ^ÏŽÑòº¾.þ–&“æ3h>ƒn`¨Ô·m£cgg·lÂWEÉoÚ°aCï@¯ü±›7·¾ÿþ.ù1;ݶ½{÷ÆÍ‰öÉñùL @mÐÐÖë¾4Ë=gö:?¦xï‡&(ûØ ÌÕ€»\MlŠeƒ)ÇvzB3,Fkíý«Ý]]'€Ï]éééY}c'ܪNBWGçZK¾Epõ ýêëªLkØÙ½¼¼ü22\〞º<©è›|3Ž¡ü™äGUU£8›«ú^ñAAì¹¼zF&&Ö‹&¯UZ«•$~fGI‘?“?›’èÚUIˆ…OAÂoª[9DïæZ`ÿ‹Š‹•÷~ž^aɵïü*/+dܱ8zò¶µ‡©÷ »˜ò}ñŒØ >/]h)U@q›Ý&”9Ðî%t8ïiÔ¤¤5ëÖ-§Ët~Ç,q5P-ör??¿C¯ïS¦¦ûRf&l$Ló½OV¿÷Ó½zès-@WåŽã==æÜxÇ/–šKïìßVm€"@6ˆÝYOŸ>MGç6ܶĨÄD£6‹XºêŠ¢/o‚vtÙüÜŒÃpÛv`Ù,æ<¸RÈ‹[[ùnÞ¼™é:Ä«0Ý#ŒrOö1äÚ*ùªXFù‚Ù÷Loñ>º8§ff:+ÂÅÝÞ¿Y šç)¦Š€pÔ'—ЯXp´xôI‚À¨m¼Þ´<`õ&:ºéÖ…­>L®®®Àƒ¯¨Œ–v°Þ·+nâÀóê¥ÒùS‚P í3}ó… Ö¦ÁoÏí½…µµëZZZ^åybÒ¬ò˜t$æra0hK;"‚ÓÚÆæžÛq|â"Ò¬÷®Ì“ ŠÐj³¿Vüäf OäÞ2oD™ñÓ—U­>3’îõ´ÄÄVg`•ª-ƒ¶¾’Mr.¸¥€è†N,Z+óþ;§Jý×cùxÒEÁ¦}ÓÛ!8Š2ÛÞè~má´[SfþœŸxÙ‘‘‘ž†4q`LÝ+´®Š!Ç2³³;€¡ÜÒr2$d¹Îç¢ðÝÑ¢*â'¡• Áë û˜‰ã+Ve»ôAû³@­c|?οÊuGS Â=Kà[}¡MñòPžb`à>üA´@Ÿè%Ó^ÿLRAÒ~d«£øå–Úîe ®_ÔúüŠŠ|)ùÓbt× S‚`‡úžÎÿ™æ²+a06[[Û©ábÖ{¶Í2tþVÜÜÝc@3.EjUäqqññ{@Óငá÷•Ò±à;h‡-~ÚŠîHJŠô•+WNGF2Òõ6Óê5<<¼-å`´Mß àͪËBÊšjÅÍurÀ=ÆzvEëÂ÷‚ˆSp祊ƒƒSçfcSïR2Ðù+r¼Rеéx& 2®vXæ fËÆw5 ÐnðÎJRN2íF ¬ô b4‰ ÀÎïZróAGwù-1¡Xºøxv”õ>íÛsnÜØ p¤TOžVpyDAÀ€¬ÐàààÝ»w6Ú˜e/x›âLüXz¥ÂÌvp©ømÞÓ»’Î\Úx«6}–w™ÓhÝ£Çø°þþQ6¥äÚ‰ýÀ#º˜,ó²8’‘¡›å6j{Ó`i«/ßI»ü+ë“›ééNñô…¬W³— d5-;µá²ÀºÝ—öµŸÓ8ô2q¯ ‚V1Î$s•ª¬P)S‘2PXá=íub#$%µœ¶FQ૘m×öZ¼f\B&¿9Ô^ÔÌ;„•äùìÔƒ±Gàâ" ÞSÛÇ´lÅ`‘©oœ2ã¶›…UšÁíÅym½– 㣗.]:Ô„³‹¼¸SÀïÈ®-l|Ù„Ô¼N®äÀ´=½êœ} §ÇêíÞ•+K¡5ャ`öœƒ­¾KÃoÁ¼ÖêŠíIͶ¤ÚáÁùÄ]WXé´®+G+˜v´~l «ªš5’Uü\ôâÌ©SÜwö90›d{?S=¢æxMï„Þ³š‹—vÁÝìEØ6ß©³„2ùƒ>Y«5wk̇óGˆÇܺK©´pšç4ÜRÁ ~Þ’9}YüxÆd÷¾´^²Y÷Gùûzo@Î?Ú] Û‡Þ}éåù¢Q %ÿþ~9‰ýì'|æ.´W]h1ù޾1`I[½'yÎê¯Éót5‰8ô@ácƒXøÃº¤ ¹ý+ÆÉ*‡ „Ý[Ò×ìêIœ›}ÔEù8ùÒ%u±lÂjùH¡!=±P¾éâÔóaR[gXAqºÙ®å|úú[=&m_•5“Ïðlö<Å+¯ ô»yÍìY#Óå¥VV'»÷r@lß=r‘W‡}©¨èé⺺[/‰×Vù¿Ï’«Ô¿rNŸ46ØœþÒo…°0»ó`{cƳCmÐDŽ?W¾!È-òÏivå®5Ì„Å$ÈLEúsVôxp†#ç[ &´­áÞëF@#A0µþŠœ;ý ­òJéŒj—ie9è½)¼ã}±lë×'õ9BÄìj︡b´UäÔkÀnsùh”üÀ#¬³9çfáxÂã³;p2 ‡€9s1¡¿fvB/³Œ!›× õU–õêò·a“ÄÉA§  áã'“+!˜.}`Š´×$ذµ¹(”'µ÷M àHûìn9¾$£×½4Ž ð Úˆòº¼\yßÁ¶­g¯ši/®”Í9b5¹„ƒmÀò¢7ƒùÙ4¯ˆ*Ø¿ÿ"©1}ƒŽèª¦úahLà×’‹šG-j0í“­w­êûeøÜ‚×&µ;u–ÑW].G{AËr·¶*š†žàÀv@í<'%œß½Ð«ßòn«+ƒŸÿîÂ{$Ñ®ug¨P€U?œŽ)ö²)éªÜù*Õ #ãJmÛªñ,*éžeí¾;&‘›Ž Ðzÿ&ã„ÀÄàUô򢃮;Ë›S¡=“ˆõ^^Ù‚«OrªU߃·x.7‰€ ä {ëØõ5Q}õúl¼ ›xdp€-ÇGR|TÝܘ˜‡_‹€ z$ÊQˆáªí,O\LÎn?Sî6”’é¸e¸ÒI#`¬ 6ÆfÁ5 ˜li<’™Éð*5ðhBöýT&˜õ+£GäUÜr\GÔB$¤Z»äÊ£#‰ìYYÍ+û¸ÜpEúȽ{ß‚üNÆÑ‰)‡gFl q÷zC9ÀîÑë9øL¹Ü2ÌÚnnõœQ W€Ø+ìÈ‘«m‡PÚ6>¥‹4Ö3’pë,—ÛƒD“œ"´WþG…õ•xj]ðP@ö̦âôÅ‹aÇ&…TTª¶çfÉ–zÜ3Ö[»âöÞâ†4‘»5 W;ÕÔ2Vtx³ˆ¿ ‘¥©yƒ›eå]‚ ÈTƒKON?~¼Â.·pAÈ38ÏMºð-ôa|´ ÛjÚŒG—3îl+Ôx•SÏj’ýà%MÉd@Åü…‹ „'Ç;eÏÎ'—”œØdß©¶Š…ç«YwY¶Ô (?cTf]³ŠþY$¼pÇnJ[uxÿÒ©©;G•bŠŽÒ;e@¾ËbµâšLŠèð8 |¸çtx8˜·£ýý^ÉíÐDŒ€pi¨IÈâ’÷§‹º›açÇ#KíhH›‰Ä†-Àý0lLçê.·cg¢¢Bò<çÚ:^ÔoY³ª~xåê«ÇbÕI÷¼>À?ñåHL`ï õ°ûp/76â>p ÌrÓo»"A¢ ܯºõë÷·ô’¾ÜÅ#ñéNíge=Õ}§Ž 媟\¿ÛÙ„=œPÉ»cWÅC‘èþã±±«W0÷$ÒÌÖ£m˜[ú/jRÛûrX ]½œú°£êÏV °qe2©‡•[ó³ ù8¯䜺þP_çÚC×Ö……1g’5W?êÚ¥yw‰ƒƒq1´‹|+´ò{ð@bj:ù8àuK³\€°¸8_q@’?`fáñ%æ¯îæƒ;!ª‹N0?ꉋ£^&=,^Ã[L¶±9:Ðÿ"ŸÆ0ÝZØØi]Ý’ÌrÀó´zw3xz®àUîj{Î|çÃÚÛAòȹ`(Bàc§«Å˜å¶ëˆíy•ãÊB¶$áøº_Vÿ¯SìÉæ†Â6fyòy(žâ‹F³)::Ìu.ß»‘ñ5ë=ƒu³‡Z}$®%m2òdgÐôء㇨ª*~|—Щu.;oPHåƒÍ̳3­3ÏïS8r'Œ<8åq*5ãŒn–ë\-Ĩü¡>£Ìw^Ê룷ÄÄPôÉPž8…‡Äž*Ëó ƒ;’Ù6¢`ênSÜ(‹Ûê·èJž`²ù£€Â¼ _ƒˆÈÂâÀ uEWÉíÝ»«ôêeQ²®ƒm¦§9A쓬Q}`WÜJ)Ótÿ¸8öFÅ.x—ÐÔTäÞdã›} ±Àï¶-"ŠeAküŠÈ5¹-e¥»"ëÊ’ã:Tç²Ác·ØžR¹ºyÍÛ{É7Ξ=;üÛÚz_ßå H0üØ_Hnõ¦õ¡Ã([k¹£ ™ÃÃö&Û v¹¹áÔÂx“†)=Ëطsç.xÇXV9ˆ'HÀóÓì5m©ë1˜ Œ¬ÑÅi…ã] H=~îôé€5BÇ™™…È{R‹ËÊ€Õ†B3¼Àø×[ëv m¾C©Œn—Ç£CMùWƒÁ=ϯ«r@&&VY®aó™Î&K¡”ÇçDêW{÷¨;”ömò4©ÜH‹bàE0fØ%ß9Ñ´8êdv›õiV†šWeöäIÊÊnLÈ`:Ü5 ²»Áü/ôGFXAúq½r`òšýû?dK©‹@»·Þ[M—rštW-)-=qk ±­d„N¥Àg®d¼¯¾´«2Bur°¹ôì—ñÚÑRŽŽŽ Îõô ™ÎRÞÞwéñ=6ɾáÃÃÁ!ômå·ÍŒÜ Vz–êmïâ²ÇNÜg°¯>åd¿uŒÞÍ’‹H³]iúR”bØ:JNp(1 ¬X½qó)#ª‰jù×$m5àXFÆ™–£Ï<‡ÇM@ùúõk.¼ãæƒ>(Ö µ¬êÌ®8=¨{fb@ÙÃCZGé,7ܧì^ ¼\äðGdžÀµ{<°ƘçéÓ§™.}¦Ç348øøRæçËB6Ù;;HÙ­"©«—³´äº§–8\ÜT÷‡ˆàæÍËdØú?N¤ÈŒ¼‚…Û|x¤UÚe|f2I‰¬RRR½õT*µw¨0`ò6_‰‘¶]àã}æâÅý¶’—r“™£¡Z4e5JAÝ)A‡»v!Ô†=½z€X†ÅÖ› +V=, ¾ þóJYÆÎÒÒRÂókÛ{‹7³Ÿ(³ywöÞ˜²ázI#?àŠMOóˆº5ïøôn•ÐÕ`Zg_u}抂÷F Ä»w— W«ó–—«×Sö\¼7Öé^ù왺’ÒÒ¢¢"˜÷´3-¼à0I,û°Ëö}\ ®´Fe´ú~äiÎv)>¿U¸Á*å-êÉ+llÜ!"eœyÜ¡Séy^ޏ’rløüñ Ö3 ÏD ¥äбçN®ó^‚e!L…ÒY‚§ŽÒŽtYr*³ÊÂáþGÔY±~ZÛó<˜Üz—GOÞUjIgy`[­a#r˜í]Ly˜“}{ÏìpñžDƒ\J0ó Š./œ ÊeïI_·´ ÆU—èÈ› ¼u¤$À4Z€ÊJJm›vl'7‚ÜæåÌU|*#”PÞÕ“ ôÄMÎ JìLWDõî²Òrr¨»ãéÕ;ìC;7ñWíòM–4ÚWXW§t{üM×Öá7'˜Ÿ\>`™f"p¤`¾øªu›ÙÒnë­4ΙàrÌÚÕI"#Ößµ„‰ik¶ó½Ų́©)‘ZOU=<xªJ3¸?zz^Ô¸o‡Xø¶8½íãš[ããÙg'Ÿ¸9¥R07q¹Ì›_PðÅ–§-ji½­¶@¡V÷Ô§Ð;&üðåyWƒ½ªÎΨéñ>÷é½ÜˆÞH§QÊÖ­]Á~bÙ¶®è’Ñ÷#oë&½$‰¡+Vg_ß~!ñ>‰÷ïm—&~0 RßMã1- ~*¾Ý²w…h8>œWàLda‹ðföš‚°z¹¬­k-vhÔXôÍÌÌ6oÙbÑ„A•Ô0‡hí¥ëk éµ]ÆßÕ08fq+1æ}hH5Û²™}› \×wÏÄц•c@é–ìÜ9cé5„:\k¨ÞþÃZW×rzGÕ𻎴í,¹ÕÒ¹mÌú5eæMnlãÓÒCtqz{bSûh%Oì”Ç.ºÈ‡ÅÅkV©¦«uëÞ$gÚ·;1oª[wd™ÞMjo|¼žæÕÞX_.7èÁʱm“e¢õ:`„¢ÐJS«OåC’¦Qºõ±sCkß8Râ€í>½ãÈÇØá®ˆXK”ü‡s"YŒ«dŽ^Df´U]låž»ÿàNàµk'Òãîe«í§†·0.!SßB‹FPå•„ä“öööeçz›'ëâCä˜ßJLÜô¨ªªÆü¾þVê“Þ“¶ÍF^¼ RdæmZ)ïñ ¬ô¤ëð›R~‰™Ô*Kõõ9@±×¶-ÙtyXš©+Pmað™usï5¸…µYJ/ÛåI³j¥´Á•Fß<œŸãŒÑ9ÏçUU¥yˆ@]½©¥X<åÁí‰,^ŧÛ÷íC;®}ýÚ6ÝŽ+Tªp$ú6ßüxJa­m À೨ªŽïIãK¯¨nOpU‹Ä­>µ¡&¶A±¤qPBe9Õ>¡rÌ©{~µHBY­LȾ› :¡E¸\¹ýþ1µ•·×ÍO‹ó¼{÷šî];ü9¯ÌÏ;–”–)lÉ×Mëå_¨”{q뜈ݡ÷otrÇ/ˆÔÝÙðì!‰ 4vj¤ü6ãjy&ÎÁë¹fÆ7ô¶‚Œ¼ø‚dMõuÕs–Wû¢ïrø[J¹¸¤ò¥Apdd)Ȇ÷%9™ƒ6uª'6H/®Ú^^³æí³Ÿ©5Jü(ÔÆhïõ+V‰¬w» ²ôMߍޭç¹úÒžÇ猽æÆY_åâ7 Ç%ß6+L:`ZØÔ´–•OAÕkV¹¤T~›µ5;‘tÎaô­2£Àó»ïVÝP¹Ýð˜s@‚Ó+ÓjihÑDíFë\èõãýŠÊ@ÀËU̪¨ø}”¤Zm…'§Þ%X鈞ïinäé~º…_$áÚËyö•0ëHÎüy”„Ä-Ÿjj,›à²éqÝÓ×êˆVDuU©ÂI‹ M?ìýÀ½GàÜÖ¶®ñ „cwHõÞ)¼ç&~7“òÞ½>7._ºÔvÕ5»íåMܳX§î nÝW¥Àß§öÎnî-°mñ ‰‹ÙÓ¦c*K]­šXª«ù"<÷îUH6-{õŠ\R& ¥ˆàk–ñJqq'çž¶ ÃÜmƒƒtÚÚfν/ïïµ•ß ‚ŒU@ŽÁѾù¡7õ‹_òÞàÆ|YïfÐOçóÉ ¾re©›{ZÑi«pgsÎW¯÷wg-ZÃë£å}Ù }T–]âà,KünÏ8£î=¢níþÚ§¯šè¼ RwfWQÿÈ”œ|¸VÆpϲåWÞ§¨W®>´ðŠc)—lÝ&ñ½§’ëÜõô¢½¸¡c\àSP’pqA¢l,ýG»9zžS S'êa÷Ûß½^*¤~¸XvÈy{*µnBwáñˆ»ä›yå+Žém…yerÖ%'5ô;:f±¯\iÑ[}íÕ«ÍÆy¬îîˆÈ‹;Û{-xW¿s.c’Æ¿¸0Üj ˜¼Tï­{×"½Ü°¦ƒÀ†\3‹™ßæÝöo‡öÇnúq0kf¥ÃÓc»§¦“éé@OéÄ“Ë 1зHã½ÑÀöµN:yóæZ»üK1Ö‘±NbH$ŸIŽÔvÛä;MÐI£ÈË—‰Z!ÉÛ·]ÊçÚçIâW!´½«ŽEçÏмqFóÖ †àe Ñ%¾óN׊¼Cy@Šc„Οê€))]¯à8³k·N|ÿkdNYLÊ£ ’ç´'¶ß4 ”WIç4y3­Z‹sccUÇÞÕ¹f˜‚ÈŽüÔÕ]’d¼¶bu•ÕøäT{qàõ ^‘+Û¢ùßкºÎd|ôäZÚKꉱ”õ™Ý¿»ÑO76Zža–[±Yjp _¾_PÐh¦ç䙿Mo—c±Oì8s? ^Ô¤Â}ç7E? V^0)o ß8G£·OÚÆ©)X02ZŸí2³ÖÑý]· 0ý÷ì¢A˜—æñ²C ûRßš ¬÷Û?®<×>5bRÓŠÊ]ÂÁ±ò {O‹OÇ ÖÁáòÞ—f&É+?úÅÈàUŠëð[ ¶@®³Ïµ<Ìò’ÐBÚDÒð¸÷‰£åÛÖ.¿ê=3¿ 7À (Ë×gÈÒ–2Ýã¼&^/áÆ 3€ cÖÓæ¢ïü-à1Óc¾ƒè¼>8AÁ] åd‹ý¬bëîZÔ¬lžÈª78“ í4ÒæÛ1Ü^œÍ‚DêçÎg3¨…öÔ´2õ/Õ.èï_jœs˜õ޽ǘ232½ð+—®ÞëÒG…¤3¸z”h{¨'FLÖñ âmÕë€êX&zV;ùjÀGVûžç[¸qök2lãŠß„CUp.qâ»ì\GIeÛ·+’ž\=Mj/’§[UË¢1}ƒÏü嫳MÍYçB[ò>òˆ-A"·ÞI’d[g€Ì ¥jL×S{û‰SŠG_wÛ£3ûTTJÚf?Èš¿º«°‚yø!PÐê ;†ã‘óï¬ä˜Ÿå†F½|éBgYÿt‰t>ÀÁ& “ˆÝ**Gbo½üm €“<½{q†YÎCÿÊ“sL9PJ@Xx KÌÍ^„yË•Щª¹è×õ¦|Å·ö(ko9@˜¥;4Ô2 ¼©ˆØÑ¶¶Éá§²W]ö¶>°¸l?f.-H=z”e^[±~WܪùùÆ‘m_h½¦§ZÙ—~ ]SÁÇe@ôÏc4p¾ó,ÖÖp·»"@*T6E¡Ò­áb›Eç=ïûÁÆÊù|Û«c‹ü÷D_…Åè'\¨½ÔļI™Õ¢ÜMâñ¹™¶íÀ/„Hgß/S=?ËÖXà˨ß07írÄàÖÇÁ¬kµ èf¸çün‡fäóÛ%éǤ ­ùLŒ«¯Þ©™‡Žômј •÷¬?^ '!ŸFåù›ä<ÀÆl·ÑØUñUÑXUE…9Ùxg@lìêÊšCJŽîÁÚ‘:ZzÍÒÓùoO´¿¿ŒÁ…‹wè”Êq¸mËÔŒH7¼AL¨-¨32°kz>Wm?Æzjy´©\I\_¸ï˜qr `àðÌÐJÚn‹‹‡Oj¥…rµ“éÌäÇ‘9£wãŸö³¶™.ÓЗ2_º´Cï´Ñ~ƒ;Z·[§¨ê0f66qžÎNKMj¶2»õ´c)O„nuÅõëmE/³_¶ÜΤÛ+pLoûòµªé~ãssGo,9{z[Ñ“<|tw»;cVÖdîc{Ç!σMÙãtZZÍ0Û&&F–‰ÂkÛCë-KKo$´Ö?‡m_†Åά0óŸžz|™•™QÀÏ\]•Õ¢®½ØmýzÿŒV^´ÕlKùwb6¦1#º´·–á®GßzÉÅ.¸$½={Žg9e´W„Ë…¬öÏÉ‘¯HÛá½d-gÄ©V_;÷@E}ÃVX̼µŽ üüñà`Ë4¦ÛzÅË”ÛEÄ<‚öZØQª âÝ©7bn™:Æêz/Л…ã‡ã—ßSð™j—Û{'¨Po÷¶}¯n’ØV©®£>™æ}÷Î=è$“ÿåË~}§4´¶oWèiΑ­Øx%y5GSS¯Ô™M2/—›ä~#c­Ä(`¤S­Œº%íööɦ0ŨU5&±èu*bófãÒ3B7oÞ,í©vñºÉÎíš¾ˆU²2*¨§‡i_¾_‹ïÇÕ¹“-û’‹á¢Y¹ìH3Ÿ°ªª¥%¥þ—Èì½k_¾ìxg½yó ~…y¯¢Tñi©áÑÑ¢;[ŽÙ±=w#ÔÞ6j+<ÎN·{“°›n»Ä`•C‰›R¯nµòËà°‚S¥''ÍÏBŒ­oô|šuZÁΞÜñêJtí.¹Lì =>ÍKo’F;Î{9LÙ›NmÑ(#~p4DŸe_¿ûäùí»¾¾¢ÆÆý™,‰‰ßvx«i’Ï«µ"+WÊtn6æþþóPˉ>¶Foƒ‚ :––R¶-U $æôtžKw¶¨0ÝfWbÄ&öìîoœ!cPÙ±å¾ñÇÊYZZŽTJ_ É ºqÃJTü¶Ž#/Œëðá¢Ùò‘GgÖJgVJ¼=±ŽSæÒ»~íÚµÂp²LCްÚcs=Õ†L£U7’ƒO®Û¡]PßvGgïÞ%P¯ý©‚Ì\‡RŒ5Õîa––6“=µ®žÀ¡t °gc¢´Ûz)îã{n ;ò„ò[䨥•ؼbu\vöúýû—W(í®T62’ ® X¼f™›7ˆZý~ؾ¨­0ïÉÛûÛÁP(1FºCÏ¢œöe!ÖW^È ¥Tì–á.|ô葲±1¢£ãì™è*û{4/"–yO3& ¤HùÌãéÞZ—¾y¬<Üì*@ŧ´·ë-[n£´{·äÄ+Çl‰ï0ñöÝñ¾]sž Þ½}ܾmyú¬#Ãòå½›„3³wU½UæPb´X æz¿m~§FDh§ wËmÓVòÇyGO}ͺv•ìï†ñ˸¥•¤´Úp&WÍÑW¯¬<–Ðrœa #sSÐÄ€äNNË I¡CÍâ º¹cGfðIN»X«úÐHX!ýöíÊí5åwžÒõŠ)~Ü›æ—HX*à×s<˜ɹnápîÇ|é 1Çâz™®NM‰?ªÛ–rФ½O–ÑÇ'Š sGº¾Ý¡·£´1RAžT–Iª‰ß?vB¡wþ+^ëªJPˆ‰Ÿ”‰Œ=»™£#oûp»xЉ¬ ËØÑö¶çËírÛ·Èʘ7Á¶ W–‡lšÔ¦JëêöÁÁkj IŠzz7=>`¥Û¨Šj؆ƼN¯)·ÂÔ67«ü›šÊq>r«ïØýähž7ç)>ÓÉg½Lº_ĵÂmÖŸÚØ„7N!<^ó5ã›JʤŽ%%}X¯0Þ«(‡³oCضúЉ$ØF¢7Þyv¶WäØÏª~PI*Å ÖîÏÉý$=k™@I®N5)þðÀôr>ïµáâåBr³èäâöÕµ•ŽgÏ¥VÇi0äNß’6 wì…“3þD0Ô¢€²if"ëåYÃþþÀH9w!nžœŽ@¾õ‘&Vf6æ WÚ1š§¿8×ÕŒ”œ‡ÁŠkïäì†ZŽÙDh3ÂM Æ"c† k+†”3û°£Ô`(|¨ohzÜ“qUÃ2mm‘þ¦,ëäŒ grôè¦öþ&Ïɧêå¡S‰z^nSÃëä܆ջ•o¾T?ÝÇ›^¶šCOßét´)ó5‚À›^1÷é-ñÈW~l-ׯ—W©¨E•™Eó™Î#Ö)@«‹‰‰•ƒ,°Ú2C9Ð òU×÷æ<ÉtèT¸ñb7î.çáKêNŒÎ§/î?òðaì!¯¬k>ý™Dào.n®E'³ðæú]¿îصÑp~¾¥§ºØ+»}Cå9‘.íË[fu™)Ô·±ébœÌ6efí¤Á0"±.´fMÂH)gàÈk³% îÅ1ød׎]Ù%%k¯(\eѨ<Ì…±ŽCăء¢m$ªÃ°¿ËÇܜ̱‡-y£ÉGxm›2¯]{2óØòùëxÇúeÝP(NìYsw÷eŸ"F˜j°Ë«rÁÙh5ÞèÞy.·:UÄ»è•Ñä§ÌžÃÚ:j»q“ óÀ®QQæ®"ÿqâv#X ö熿Ň«¾¶m©«[‘’§f•¥biïÕ«9TìRíì÷&ú~ŒºûàF}Û Gƒ1FïÂÑZãn£O"2Yžèx6¦¶.¥Ç^O¿Ðœh¶f)ãÓ¨pÂD¿¯ÿ!X]Òå]þaG›òf¸ÊCãÚŤæ®>Q²ñ¢¨ˆ[\2éáxŸ+ÐxÅþˆã/_rÜ6ÙW[\|B†‡]ÉYM5Œ.é€+w_ýGNS_ž ¼SUl[Œ?sã^aë±c˜˜[·VÌLBaŠËŽc.ÓÎ2-^N›–Òvä {ÇçHŸã”À¶r¥áï%/.I¸—7Cá³gÅã]2r© É„"»‚fUw÷―¶¶.V+Wóô*™]Y)`©[-kõvåÞ„™ålõâð{ú„bjágΖ”Ü~Uð‘ý~*ŸïÇžÖ‘úö•{îqë½£ž?/j?|ˆ«„x Y™=hÌw^«*jŽÂe};ãÞÎɵŸ|׎G0m8<¤{¥IÖ{Y^ƒVX!˜»B¤€ŸNµÐfß™Føl'Ÿ"±9û&ãÊ e`xÝÚ;½fב)ëVß?è{U!ÜF¼´t•ŸŸuYq`ΞŸDÑ ¨²æ–¿ …ƒMg¦Æjè’‹×Èí6 £§,*- íÚ8î¯3g¤tófV¦;’ïüUÃaó»ØÐšü%³`p6ß¹>ølŸ©È]Ûfƒe 3ö<¡Û»ÞÈ)˜·¤ì  ˆúrͺ±fÏ燄Ÿ…B©7]ë Pjlp÷hlƒÐa¿€Á²\÷XöŸËd)—0¿$"΢ªó\G¦Æ¢(³ÛÄþ5+˜§b Ç._^68Èò²6ŒíèõëêtuÉòÇv_Ö"ÎMß<½Ë_w¸)ÇÐ/V]?œ#$çð@ÐJ9¶µ¨ó«xX€rßV ßsdn¦¸G¥´Ä¸ä>Eñˆ7%LdBûì«vy«?ÊÌ$s+x-‹[WzØÝ—UÇE**ÄN‡ï¹&·éü¥KÇ<0Ñ«å&aæovôÉ®¤3n¶r¾}"rPŒ‘U—Ì•½MzéÀ8ŸâѤd ƒÑëîø*ƒ8ÊØXÔØd‹q ybb`fø^RWÅȾÜ)àá·¬|Ñ߸½Ølç<¨É4ö~§‹‹äýû«6ÞÙrþÂ…“Àì3JW.ð‘Æh$æ¨Ø>bãtîS[ÍÁØÎ!æáÖß—ÂqR¹uvn¨†ëѳcëYQ6áᵑ²®²zzŽl›réW¼râaw·‘ÚTÛñ}wŒÐkN®i—áN×1hïß¿ŠÔÎ;¯¦ƒy<Ø$¬5V25ÂÛóªúR'ãN?¯-)³w N)ð‹„‘ƒàh«Ž{¤òí|#C·êØóœ=øO~'ûÔCƒ=µmEþA'ö3²²Š$+ †X7O#ëîœÀ6.Ú½&¯`¥©Ïü95«•v‘ÃMND#ÒI6Žmª¬Ï`eÃEF¦žùγ~œífÖŒ’‹ì;í,øGd\ö®æyýÓ¥±jÕ"1ñ·€ú¾cè~fFlÍ÷fø­ÌæëÛÉo,¼æ?RÍõŸao™Ý׎Ê=Ê“·mÚ&sNrPRZÙï™0è=/oЫHó““ãnïê:eu¯$bU«ÖÉËq—óñ•<½ú±¸`M¿dI¼É0°QÝÑ}ÉuëÖÕNÕDO ‰š‹ËÒþÚìÝ%W}}ý“ÏŸ‹^Álšè¿Æizco[¼msöæ;¦Ñ~ó{‚7 ÕìyXtcG®¨‚@,w¨ùJ)œÔD°Øé´Þ_­¹èVÃFáÜácB2Î×Gý¸˜%…\Å ¡]³nœ)ÝúbÈH§|&ËNÉÚÇyåa Û¥R.7õuwû?>Çë9©e¸ãÈUݦx¹}VëêK‚|ŒUœÇ2Ôï9tjçæ¾©múd–·æèïÚœâàs ×—ÔB®G|_n³ˆYçH' óx,ɰë5?¤›çdÀUž¹æÍ%l‰=íG³uÓ]¿þT@ÈÒâFb«@ë´–¡–3°TÒÕͺÒËž×ç2ßo·‘,>»ÅóLd䱿œÖR éñn ª„é·Â›°Oý °õíl<Èî;vL‘ »æeÕG¬7Æ`C6 ߈˯XÀµ Xèäd—ˆGYYºœ»•ÆTUÃNNjoͽJí–ê~X_ZÅktW{ij¸¥…évÑ' M½£úNï`òþ@Y:?7„œšŸÁŽL÷I T+«©ñ²s¤?¥††+ggåÖ€dqnººaß۷Ͻ_aµò¦Ô†¬ÔÕMM›¡€GÀE`ˆJÓ ÒP˨ð(«¦¥% ‘tîL¤ÛºJ++ŽUnï –»¸ÝXnÀÔ—t µèÕ=ú,––æEmJS¹úÏqÕ?Ý )èyŠ«7a¸,]©)&²VÎ}˜å[¶tëê:\î³?Da.épÕÕ×göWZ‘%G_[VkkE¡øŸÑ&¾ytFíDéãÇ+³²²Ô^gdÝ»{Wmrð¨¨äܺUªëëÛ{žTW¯Áãñj¯'_§šÁ©U\††›(ËHK4Ö?Ü·<ø¤ï[®Â}ÙÎ[ëRL[ãË äoûô<§Èyí[ðl¢t4gIÇS›¬pùÞÂÆ9‡9ݷܹÓc×µz£03÷«“2ñì©äç×Ep8.0Ø>€ß˜Ã\ôšZVºº[²-òs4íía×cc×ps[ŸÇIHHÜu~§wŠkûÕ[Ì…/ßkv?½Z ˜pèGg\¹r»¦æ)Ý ;M핱;GVÜ÷™óÀáñ—˜ÆGE:;Î:ô<_w>|h·ö x­R¹¿D ¿à?Wk"èúáý¨„Äòç΄= ‘ëÙ>jwâî†Ù+ çÎqÜл㪱ƒ£85Áédãâ"ÕµáDHH—Ì2 Åw Þpë}¦^#¥k»ÎÒµúx®ö>Ìxœa2À —Þ××ΈýaÕ~ 6—Ô0ü–”n!ݧó]«äò„½D»€³†ADÖ£¤­Ä(àgv') v¸Û)YhÅDORRnï(†çZiô #â=ɲÐ4X}ŠC±Ÿïìjk{5|½"¶³oךƒ×¯²)1¶ÃÏ$æÝ§“º ´õÝFvý»DUÔÞäS¥Î$W¨Æ4fd¼‘1&­mdEŸñ×}€I9²ã"&v«VêNo{û2±Æòßp7Ý ,­ ’ºq ¢ 9Pð©Æ™LWeN€DhÛÔ÷öpÃ:KTP½/gï¸B+k‹JÛ½‚>I²•Œ‰Q6yžf¥Î¢¾}‡ò§^_‚t‘²Äù£ÏšPîª bÈýð󪡡-­>*Р÷xÄAÐ:W'–­-zxíbãKtêaØÉ‘êJ—R`éå¼ó Ç’û´pÅîÕ$!æÊ©;ïñêµ iV€²¤¢"¥«&éÖ´®ÊøOM¹íØÌ~ç`ÞÆÑîgå…Ç–ÐA^À[y[>rÞÐuÑA7jî¨ã“L¿ V^ƬÁ\ZÒâå„”,Bvœ“©©™âôy%=Âz¸¬?çõÜ\î={ö@Ïw(!›ššì§†ÛW„¥Þ½»HŒòw멦‰‰Ñ][1ã:ÔÒ’ç«Æ „~ßí˜ÅÝÞÞ~zÇæ»åžCy þJGó½û„GvnfoÊ÷>ЗNg?;åûq~† Afôïõwé«kySŸîH +ôÈÛ»÷îµã¦Bߟâëd[Zö9uœM)há›Ãw]4«íƒß@Íû¼LÔí/ Ù$±e‹?0½§¼§Úûo§äcÕBˆ6lèûä²uS¦Ãn^,0š]^^^¯ÎÎO>¹Œ ¿×Óc^¤ÚÕ¹7ɨT-Œ÷ ±áÜc²5˜^ÿ9m vC§F*…rïý{Ç®ô‘‘‘ªúúxÙ«PÙWƒÍ9H§ê;Ÿ/§[ÏÓ4:1ýÂõãy³ÙMRÀ@^æ~vÚè¾oz>D™SòÃL¼8©ÞÎ@úØ|CNè­RÍLÚNNyÔƒ{ZòÝFûjX\\(7oÞ¬ˆN¸q5“9?7#>Tùø1á|¯¾~M›ƒ÷Ì„Í}ÓÚò›/Òmò**vM€àë\Vvöýóç×–q‘Ž=Ú_«~ ^ÖçÐsL[•µë¢E¨2§—¸‡h½¦wöµë\›ÖÉûq­>É[«ÝUQQ¹c3QðLbá³ÊÊJã9ï´´4Ë03›frÁ­0ý8›e\².½k\]ÍR©Oˆ“C­f€#£ŠÙÙÙóÃ.ÜÙúÕÊîTÎçëZƒy+Ð5›“{ÊÔTYbÞÍ5Üx;†>÷ø|kBBôj{gg*5þ}÷þýûŸ(<-,Üî~ Fe;CàŠ™<÷QêñòwÙ6@µ¨Ï¢B=ÚÑ߯Uú4¿ÉÏϯ(C*©@㱉Ñ˲¸ýø}P»¼ñ½·'«:u(–#Ã;;³|{óë#ï O…³*ñ€¿»nöîEÜ£G¶m\/e´?• =0˜‘‰©ÀzEš$¡¸¨èô™3G­ê“ Õ×U#á$µÔòK›ë¥žªªÒ$S©‚rr¹…Qrî/úÓOÁ%¤3¬÷TÇ2¼¨© 7 dá9VPPàÈçÅȦu±çìød¬l»³²ÍÓÝ·Ÿdél¸õ¤À2ôÝè¥ ´7‰£7³AóÀ­+Œ¤–Ÿ8q‚07=N:|ø°„œÜ•­kWÅ눾z§qñêU'''àý­Õ¼6˜·Eýýýûöíã:WÙµ{¢uê°»;ž‰‰‰D¼y¢”¸ž—7Ù˸ë¾W÷„r\ú.ÔÙŒ¾ÏE—fšR0ïqœ4 Ä·4Lʘ®<‡ž`»ˆ Ýd@®ó–ó•FÜÞ¼æÕ‚oŸž=wn¿­­”çèìþmÛŽ¼Ÿ_É!ŒÊd®~5ò`ÌáIH1Ûª%°%~k|]É­K$ãSûëI½›.ë”SÌ…eÔ!ž_¿~]ÑøîÝ»;v­ùÆŠÕÙì8<íºº©’»·‚e·æ½žêƒB1§”9ôÅ<ÄÄÅ_¿ïª„Ϋ^¼}[\Ö¹GçÜRY£Y99HYYÙtóêë+–¿M6ɉLME¦¦¦’Ómô’ss¯HÌ… |fÇyUR´‚7ðú“›ÖFö¦Sî$Ç@¥Åá3’äôt À2^9·‡ÇŽwW -{P+®/Nx€‹ÇÓŸÛ±Ùz¤£´¢;à^6Þ±¥¥Es3û=ïé»yž“bCús§ÕÏÜhÌHµ+˜»€Çá@ž}/((hE£å´‚˜Xðø@c˜ú½åLëï޿躗—› ©]rrrÿ£3Bå7ßFf×çÞ¿6É(-/#ƒ8pàÀÄ`ÎFtó؉|0“rï VÆi?}· ¦úlf¨à™°Ö•GïGG!¡ŒNNšU^Ôoy¡xGiC °—´‡ßûiF ÷%Ƙž5V›Ï;˜w©²F7gJ{’•îæL±T}Üc1ôàîÃô‡›ðu9®vé5Â]sÖƒMYXl„ªªê=À^±!ú‡¤MŸîÒÐØ¯¢² |Ø_>¼¶u“œbC0¯‹ÍüÒ`̬)ýÀpYQ@Ÿ¡éíëôF”½nkÿ¡Cü9NÝ,»wS”˜ À{HƒöN˽ÛÍðVÖ•šðCÁQg³¹m¤£c<ÕœeÇ8½Õ¤ZYUGä93±_W÷Ìûù£Ý›Æ§ÁìŠ&¯«‹¦„é”Åœ` æÉUƒØo06œ%Ÿ©ÓxÅꤺaü^èûýP]NÝOïqˆh‰Úµf:¿pá~CƒÑD¥tÊ}èt×mÏù—Í{›÷ÖLö6Ì"Ë"cc…3„ÄAô Ìã7T²®Z†¢[Ìæ2 r°à–³À§‹ÚÚ|¸Ù7zÃÊØšÎ]W’—é±ù´yV+OmgTemg˜žjà5~dó4mf*‚gê4NJÌ}äåíý:hÐ+`ÈÒækn¤§¡óæ¶XÏÏ~ДXôõõ=ÜU±®l_ ·¾«õ™%GœfT×ÜNJª•Cï׎îÞ©o½eË–cܽCšs‡%³®$Á¦ßöÓ~æh½SC‹ô e «Cl8U½ôB$K~:§Çe§˜9Ÿ×B²²Üg §/:eÐ¥à-£¤¬=Þ‰sœŸŸ,ÈU0yŸšÕ½3╟ŒÔµö!='|½e’Bàâw›‰>‡"2ÞM÷ݰ¥ÿ(³±ŸËf¡Fu—M¯ÃE’eWDÆHš|æé†+V²ùÙÙ°‰V´÷¨¦TDêd‹g°>€llú¡Â¥{uucr}ËCyîxNV=~|BUMíþ‘#t¯)û²Èv);ýú·Ñð2Q”Eyâ©66Oääå__Dší38ÇMºóÎJ*¢òõÙ-‘*‚`³¬ßV]¼“™™©êÐw6º!JÄ„(.!±öMæËÒ:ã§ï‚ߎÉÕî•äºlÅ3U£­733;<Ñ¿?©ü¥Èa}Á—ײfŸ¿<˜š…us‘äÝ“QsA»ÁÈ¿•e÷Œg„X²ÓÙ`Þñ]—Ó¹kǽwº°³³Ã¸wypU••˜ä{eí46îÖ°ŠÔ«:?ÑÔ-&Ò¨ZùG¯ÓV?ÝêQƒi‡¬“]®¥¤H7fØñ‰oÝZí¡éMÄnQ’ô¸Tɺ{í2g ÞkcóáF’‹éRh‚ _C ]ÖÓb/k. ê'·ÔÚ„q㋲]‡žÞºu‹‹t ²GGé0¯UpM~x±è8cÐñ2‚(Ðö“:ѧNG%4ÜZNrJ¢ßs€l)¯pï2{Ìzù']ñ—’$=tK¯»b!•îmîIÿFFäf®öP‹J]“ÖƒŒ¤äd*û ?¨Œø†²0¾guÉ&·1RÉ£qhÍ›=kvyÚÇœ*ÖIìiçŒy›ÀV‚œUK3\úöV]Æ²Ò wœ”îxzU¶§µ àý|{q öUþƒk·oß=Z¤©¹ùr °@tG€ºg2š‚ÙnyfDz2.ºC,‘áÓw‰n ŠÔâ\ŸF+¶ö[uõöÞšÿÐ]>73¹šýdº—ŒCÇ2Œõ«#À‘ù ¶½«+ã³5 ‘)*’÷¬Ùü™®wKDoFHˆÎoÕÿôH}ótåD®«2.E „E·ð­YSPýàŠNÙöªs:£ú‰K«®y6ÊåÆZŸqcUøÊØS¡Vpg=icN8ŸE¢Ã Ý“‚½—¬Ò/¤{½x™­o2{ɼAÝ Œ›ðǸá»âpnÃüÐq•÷•ÒÅÕÕº÷¶š‚\Ú^uXU›dS{L7ºîhCèëø¤Ù©Ÿ×С¾Ð+ß“e´TÅNŸ´ú¸»47Þqó­Û·G#°¯ùº˜üØÎ=__ÿüâÙtËÂDí¾m&a‰{}l–,½ZSÓdw3OØ9²¼&³46ùÃd—áK¡I6|OJK)Z/®Ð0.…¯ˆôò?‡•J"ÅVi¸”w˘Ÿ;ÆF@®@¥Py¦`ÎgO,YÆÀ@OæÃœ¦Q¤¿~ýú Ðнo—µNhO  ¯€µ5î»c<4[`uÞ¬ÄØÜ£`½—=È«ËbuD¡×#X·æó(ÎÓ×·Y[KÔ °!·¹«ùI‰ˆ0hiiíöÑñ´ßéõ3ãõ¦p÷÷P:Ï–’û~h~6/OþÎ;=UiSïß·|WsZôY~œ¨r.Z·Z™Qà”×ì~ÂhdñæÑ™Ä[·:d˜íMM&1ÐÊÈ«Üch‹àwAó…Œ\]Ìûéûk´žÀoŒkPÇÛA6Èb„GÍìQ °9è´M\\$Çü›7—˜—óÏê—£ß6d±ŒæÒk¬ÌïÇöBi}ÕQª™YgGéÉ€žv¸††Æ)>E^Á3Dg='$Þ¿ê¾]‘4ù…ÔCQùëV-商²þþèá“aa¬ÆÆÆ™, ÜÁÄõ ‡FøG_ÙÉckÉ h\kùi/Žü¤_D;²;øA¶8L{¥¥³=˜‘€¤$?ÙŽßÖz‰½Ýa ¿³¹…?h$ÁoáÌ~%YÛ9QÈüDwþOC ðKJ~ÝWè­™*;Csã'Q¬­ì $ [3yA˜ í³=Lþô°GÎyð‹#?mÀLÐ&.ÃÆØ»ÉÒx(çL¦ aïhg @G°¶0³üÜüS‡’Ö*¸ &…¦Ø,ÜÅÿiŸîƒT[ð§µêIXŽÉʹØ~Ó¡‹ ‘â(¨€BKá˜À× Kƒ‘i„K;“¡ÉI;;.üøÄ{i _h iܧؒ?¿ŽÝžàè¼À\è õ[´Àûo­ÑW u´s…N[œœìÅ/øå\¬¿º ½õÓà+k 9Â'\ RÜÞdª@›°Ân‚…ítf”OÓ”“&€¿àÆïõaÚ9}Ó‡z±;ùK7NßÏg2I.ŽÀ2ÿè—` ð õóMß*@¡:^°¡.ŽÿÔû—Þ¨Ö¢R ºòÝ[å¤]¬úY²ß²ñ Ë?Éóy^.¶Ÿ ó÷{S³ X“5Í…4+ñ­º;Y)’`òLÜÅBÒñ³Uãÿüí—K‚æš$dN?3êÏ×%?y]§/ ûº‰“»-éiþÌ7ê÷gi9Ù[[8 ŽXI;I'Š£¤Å¨´Œ­-EVÿӨߛœ¤9Á–üyB_3ê‡Þ௾೬D·zBnA‹pØÌ^T䟣s ‘­²Þßú†ÏSC|æžà§ËŸ&±`]¾â3ÿ\ll€á£½§ù„„ì]ˆ’ggG È~@ÐáÿŒ‚ŸùúMï4/ð§q?][TÐuüü-tþ?[ˆ/ ùú2ˆMþ˜ª²µ5hì'à2pg3G‚ ?ÕÎñ;1˜Ìça¿íëûÌ$KÐr6f ÂßÊÌÔ”¨05CÛ›CïVäúhN€Ï†`xþ½;nßz3ô·Ó¡uâ¦ÏtC¯ù^ˆ_Є“n²¸7`;åoßýéâ_^i Ga(^ŽFa%P?|Ý6âÛÁzÝN´ŠlñÙ~S…©‘⢠?ðÒö"ÁG;*?èÞžB² Z>y|)þ¿Ð†C£%Px¸ “@ñ?¢ þ}>¨}k€?·—àhaçâô9Þøƒš/öú¯Á1€³pä"˜…ú3Eê::Лſ!ÄðF]‡û@¯çwúì^¾Gz/:!rw¬‹ÿèïðg ö-;!-ù"­ÿŸ^›ÎO ×ù  `ô:i9ˆJœþ¸k¡Õ_å‰BH 1xR‡üå˜ïS®mOYÐ6§¿2‘F Ý—%@K %0˜ñƒñ±ß§-ÕîOŠõå‹¿Ž‡BCÆ `?ž0îó€.¶€úÏãéSœA8ý§Ùîš@Z´˜Ïm¾§AH,Ð ð‡ú øïÏù3 úG ‚õ·”è|MÍ;ÑZÑ(û®à 8 „´ù#¦€ÄþIÚ£¯ô#z@“ OcR¦²ÿ1ND '+ è¶Åe\P#à?Ì€ÎÐnãß©ý·Ô¢px  'Ác$Hô¨EüZ}’“ÅbèÜ Ñ©ÿ‰NG‚+¿¾²þοg*.—À`qÜÉüïE þÝœ)6Ut‹ÏVê“í¦þÑöƃ@âpw0`Æá?$ õ#Ò ß¾ëf¿mòÜïhÀµD!p?rl°Òag â—QBkôWl" ü…Ã`0 úGvŽþ{bþj¡«@\H6 1Ò?ÉÁI Qp "¬ó#®À1ÿLÈv²Å¨â[~Ô’¢ï)NŽAJ ‚À±ÿL“Ž#å°ÅuTWJkúwd¡iœ‚cá‹áú+Š¿O’#ÅÌÅšàø·œÂK ñš=EÁ˜Àñß‹#ÿ†’ &PC‡ÂXÜ‚€¤AÈ ~,ä ÷ç<ÁšbF±% *É•3Áь⼰äö‰ZoºÐèS¾¾ðÊ´LþHÒ?÷ü)Ðÿ´¼¶0‚ Z…"SHÖ´DÈÙñëŒ ˜U£8“ùÐRœ- |6G|ncæhçbÿ9[’û¼üýMúQ²ê›Ð¡@[ÙZX×újD@ŠP|‡Áãp0 ‡B“©£à‰T‰FàÂ'šþ¸k'¸K“Bu†¸ma¨t„Öùú¸°HIø|Á–d­ÍCÂ]ÌXÐ \l@W2dÌ?­çÑæð:ô¾šhçìlg:!*€Cü›Ù;Qì ´MƒŸŸ¿þç[¿Ô×tþ-¯Ñ ‚ˆ ’h"I¢à`H" …#àQ ŽÆ#þM^/b,ˆ×_î¦X/"}SøÓU¨ÿPD„E‰çgYö+âA ðT8MÄá1*N"£ d,K "± H&RþMñ,b,H<ÖΦdë…U¬ÿÍÖæ‹âóÏÎýWøL S1x2px"F„ƒ1ÈX( ¤‹ÃÿM>/b,ˆÏжäÈ`Š££#Äcþ gòCVÿìô…Õd$ž@Ä©p$œL b¨T A€aQTù_µ8‹ë_²îÀJ™’ì\líŸåÁ¯ð†Ä“q‘ŒBáñHABQ8 C… (4êßä÷"Æú†ß¿€q§EzÓŸÿ/™k XüEHH'ÂðX" ÀPÿj䲈±þ-^SÜ,œM).™-Žë?ˉ_C8 IÂ"áÀ%£Pd"ƒDãÀ804KÅ‘a°á? âúnH  pÙcÑðþ¹Éÿ £QH …#€s€Q0h2ÆÁ(D" E‚èÿ&£1Äè…àÏÀ†bçâ¬r$ghý?ä½óB7¦NP?¦ÐÒú¢Dð³lù`‰x$ž ü4I€a v ‚N•âÑ8Ì¿.b¬ïˆÀÎþ_‘€ýâð³Lù% ñT"ˆ—ðd"MF“`x08†Å1p û¯ àÇcA8lgAæûEŽC› ‹cöO2àW˜MÄà©0œŠ¢Rð<ŒJÂS©H|@£ÐÀðý›Ì^ÄXŽ™éЂÈ"xþ³|ø¥N@ÀpZ„ ’((4Œ„GÁ±x [$þ¯Æ0?ë_ŠÏ¿â¸©5Åvq1ÌOrbÑ\ÿ£‚ËÜQZÚ"ø\Ù±°| md8Ù³äw%8ñ›ýQÇEu´³¡íPSí¬­í\-lÍhKœ2rPõ TËóeTú{K)Ÿ‹¹v#Lq¤OË(ß^—"})îY(ìùªžçséÄBQÏ—ë_U|©@£9S@¬ó7Åi_WäØœÍÿ¨ÈhŸº– 0–B!CS‡ãHù´Ôüiç[àsÛBõÑ7U` /Š5ÅæküýyMéïÊd¾Wrò§z§/ã,ÌNPáëj»…6Ÿ‹b¾*_þ\| Õ0]0·pTòm¯Ÿjf?ÝE«¡­*ºB+á (|.êûLß×B?>×BC)¬úÕúÿïcè×Jãÿ¶þ…D!ð?Õÿ£1hôëÿÿ[ÿÿÿ`ýÿWöýÏ6›Ÿ¶õßcÿ=ðßcÿ=ðÿð1€·<þïü>ǾOÉÂ5Á]‹á•™µ‘`ým/ê ×þ[ñÿ;Wü?ÿ?_éoKÛ¤µ |.öÿZ£@^ ˆ@É~u™Bµ°¥H.Tž€›vHŽvÓšð—–ÔFÿÊI‚ÆLÿÆ)H˜Dk;’@ÉŽLQ²°%Y»)üÂ.vβà6ª…™”ùÂ'9iZ9¢#ÍÉþékÐ`y¼¹©“‹#‰òm:ÿçÑœVa¶ˆ1œÉÀ‹רøÏE7&¢1T·¨¶Ö€äE6ý'ŽäºX;ÿ£ Í~‚£ÿ4æ§Èᇃ~j÷/ ÅJZÛ™ýpØÏ ÿvÜ5ù ø›ã5;?QI¦ØƒÀ(Ÿû¡Ú:ÏŸÕôÏ×üÅBššBLúû5_%@üåæÏu}ß;=óƒ!ÛûÏMwzæ/êÿ§£6öÖÈuð/¬bñÛ¡hæö·à:´nHø·œ $s‚PZZüTÊü½¢n¬ƒ—À`põãböŸdÕ¯ˆG“ɆLÆ“± OÅ ±(–Ã)*úßË"ÆúÄBú'¹€ß }ë_Ïϲ열†Œ!SIp Cã¨T†ŒÅ“ÈD8†Ç“Ѹµþ}cýºxˆ¶ä?¹”?d´prÞÎÑý{âYhµåùIŽýŠt’DEñpM PH4HŠIp4üWO‚,b¬_—Žé¿äX~–1¿V? l­<†D‘Ði+ŒH%ãQ,šúïpÿx¬_‚Ö¿%…Ÿå̯HCa( !R‰8 d¬h,ŒŒ¢’qX þŸIá×ø¨¼}·ªÞvÓ=Z{ôUUh,%#Crvû1ç~v6¿„_%ˆžDÁS‰h2… Pp,™€D¢Ìÿçôþ`×BνX¾ýì\~éì ¢â 8"–B "ÈTA$)x8¤’Øÿ ¾íPUÖ0ÕÖQÕú9¸ýìT~)%ÂÁ°,’à »Pðd¢QC$þר¦¬©­¯ús|ûÙ¹üÒÉ …"#dN†cD,އÃá(,ý¿7=ý¯õt±\ûÙ™ü’q£aJ¢Èhñ£á($I¡P NF’(ÿ;\Óü+ÛÀ¿Ðñ"LÜOÎè—NŽ àH N&Rà0"¦€A “ÑÀ !H88Žû_ÓU=Uý=š4K÷'½ý9ñ³ü%džˆÃÑ0…ˆB‚`X žD‹ŒH(<´Mü¿ÄÌZ; ~ÒîýäT~»EÖo«h1óW¥H?^eÅPáxŠB@âМJÄc,¢Cá”ÿìHÕzjÑG‚„A·™½é§› 3â´²,ÑE+}M¡ÂqX  €LŒ'qH ‹ÀQ‰ŸŸîBëYlán þáÛ½H!’B¢’©8PO„£©8Sˆ OF ‰ÐãZÔu>mT~eáÃqý³bý¥•žŒ¡Pà$$šŠ¦Px<‡Y*…@ÂɘßB?¦û „l)®ÿ§ô B‹X—ùI~ÿŠlñ`<š€!ã‰T GÆãQp<Ãa‘$‡ÿ]eûcº¿ÈÖ‰âlJøúMÿ[vâ'Ÿ$õ¥¤eëßJ‘Lq"ý¬¡{h2ü»gUA d¤ Oq^x&ñçj­/U6_.F»¡íP))ÚÆ'­nï‡jð³ÐüµðFÅ‘€ÂxŸƒ“H,¸ OB`@ˆE@~W5ø1Ý_ÔÀìÿV5û‘|&ÿœ ÉvbðÐ#6@b‚L*A…QCF ±XÌ¿ûÄEŒõkÏ~ù'´Š7¨ˆö$¯ÿUœüõyÒ _.,túchü¬¸~)ƒÂBûÂX ƒ"cI(G…)X…LÅRAîû¯î¦ÿx¬ Nÿ·AcqÈøYiýÒ£¨$ X'$K…£P8â°h–’©âoLÿ˜îïÀäÓsGÿg\ ôPÚ€?øÏ á—Ž6–H(8…‘°$ ’@ÄSÉ$$ F `°ßVà?¤û;.ãPà‹òOrþ—¶XPx,N’á‚‚ÆPQ‰Dbá$4ü·UëÓýEÊ £ßE´?Ëî_-†À’ˆh'ÁhØ d玀ÿ¶¹Áéþ"ZÛßH¸?Ëð_ÚuËp<‰£Qd< ==à…ÄÁáÔï*ÜÓýE¸TG åw‘íÏòûWdKÁ104ŒHDIXøz<†E ‘$ûŸ>2ò@¶?¦û‹l .ÎvdŠ3…´ˆð¯Ï„ÿNÄ@…¬D<ü#=Ø Ä¡0H ' ?Ëwá?$cèþßfüg…ûKÚ S$P‚ˆ%báCAãàh, ‡Áð”ßH?¦û  3ýÿí¡ü¬XÉá°T¨V™HÂP(8èÉ X$N (<Cú}mÑéþ6 Xx¸Àï¤oM Hx2†c ÃA‚á0I‚cÐ2‹ IŸG0¤Ý÷iËfá¹F¿ÑûIýRÞJDà “ 'RPH"˜†‚Aƒ™ ,ŠLümûcº¿]¨øÿb3Àþ,ˆ~)”'â1 ¯§àÈ$2ŒB%’1T, ÇáÈx8ñÛ†ò?¤û[ûéa8¿ËŽÂ7›7À䥿 !¿vàÌN!PH8$–LF!1X ˜N%`p$2ñwEãéþ6[‚õÿ`\ ô·ÁâÏâã—\9…!ÉXþ`ìÇtÿcö. ÿaß\´@‡žÿw_? U*èE"ñУ߀ÑA!X ƒ #h ƒÿ:Kû–³þoÈô~±¿ö5H"p"‚jfàd$ Gb „â`$ìo{ø‡tÿì]}o7Òÿ»ýl×Ú­ã’\’KÚ¹}ï­r+:fï쨼ò„/IŸæz˜Ç`¶ÀIð®hÉ•Gúƒê‰þ z tLŠ.I‹e~ÛÙ\ Ý2lX"`\@ÚH•‰µ0 tˆÃ›'da»ŒSLTÅ:wÅ4£^3å 7Å'DöX|¶œ¦µXÂ)0ÙIÄZ'³–x)h’X娯 “Å oò,ÍÏÉ%"~µ‰¶qÀ¿ndEÌu§›•Áùê?Š|×Åúþµx:ó+èàagPÂwt:¯x3©ùàñäØ~ôcÌú麓ñ*âŠ#=ÊcxÁÇ\þø¨xÿèGxûȹǿô—S"Š1F§˜ =vò@Ð<èbð2õ(y/½åÑo#ßíÆgǨá@ ÛíØßÿñzX€Žýâ«ï.t绾ëæýƒøk”ÃëÇŸàe”yxf𲟅øÚƒŸwC†=t7ó‡C¡?=Š3Jä2æNulÐÕ—¨×ïÅ'ö{ýlðSŽøÔc¨zØæù °ß¦@¯<¦(† ^ºsç ×Ï}9/ûqëªÿ³w Ui»¼±}PÖù=ô‡è²?‚9ïÁ@òaÇŒr:yÌÃücSgwÂeü`ÔÖ+x!÷Ë,&ÚŽ<{ù½ðŒzæ{À:]t<203èEÇú^æ‘ÎÐ ~’Ev2—E©§±§U#ÐÓ>T^Ìá!òø~ˆÞûa;Ek:Um{µ£óØî!ꜿ ½D1“ô¸Ü~ƒ«f`ÒÏ( ŠÊßõЭwP-tôC§ÛEÆ#˜Õ0êî!xýëùÙ?_½>CG/ß œ½<{sO§Ã·Ñ㹨§k¬ÕB¯†º—_ÆÆÿöää—ÂóG??ñüìMlÿÓçg/Ÿœž¢§¯NÐ:>:9{þËëG'èøõÉñ«Ó'ûèÔû%G7“ƒX ŽfÏßÀÜfЮCïô{sl}ç=´–9,µSØíƒpˆÝ…“Ñhxü·#„)!ø!I0A¯OPs”I‡¯‘ERY!F©‰Œôkߎ¢ôÓ Y9?:êù©btÔ¦¤­Ô÷ƒ+Ÿ† ÂàcTü\IýåÿøÛøýpòGüÓ]y¶Ê‰fòov™.øxg·umQQ]ÄóŽ)õô‰gKÚ€¤§,ÚâÖuüî/<ž×Ò[hhþǼÇ5wnëv¯mòÕM5_òé4_¸¾ÌbÿŸîŽüA ŒÛ|"€•™õÁÔ§°^ sÿE7óóï:y÷ õ;v÷á·oóÃ-~¿í7Mí«¯¾š—†cæ;ÿcw÷pÍ‘Ihð¹ï.šÁv}]ð&Gv1µ©‘P´»‡ëð쟷¶ÊÿœóMžÛR ^†ó8 çË$‘™ª®”ÇcØ~“©{®ÊÕÁ…¨FÓýØ·T°ªü ƒºD„ËUu•€ŸËj|~fP×@.èô–|óð!ª•!zø°þ|üëšøö‹Sn‚k&fÜâ·-~»Q{Cg•¾/kèÄçoÝz2YÞz¯¿jP¯¿¥õæ–õõC[kÎù%甊RúlâGÔÉîÆ‹ —ÈŒ²Ë}´Ê¨—Ýw ðÍYœLq”–&õ:PhBMÌO‚J‚Õé–˜W| X¶€ån Ï¡_dw®j€Òë Њè5V]KC”¶2Doß ½ÔîÞlþ¼5Öºƒ}ðuä?e$”8ã 6N9üÎñà$µ’"7HþŸ<9}ýâ¬PÛÝÇy -ÂVuýµTWT%âð)Ü~&øn µ±…¡ˆÊ¶\ »‡·!€Ê*ª¶ýT€òâÕ³ó'h§tÆ«êòa§÷¶ Òy¨»°ÿ3êç‡ßþ-Q‡ÏŠ_(Þ—èï®ü²rÓÛC«…ÇP¬7'C­&²…–cõ½¤«ã°¹H`Ýñ¿#¬‘:O´“Óz w’1ÁINN½Ø ¬q²…[X±…VÕ•æ&ÀŠB%“;RÉSŠØö/Ê)üñûèr\íàyÑëû¬Whã¼tnÖÍmÙ+¼Jâæou%Ó‡ÑÝ|§Ü$?_&õPY¨oíh8ôM!„5&v1íÊ™½ÓX{»ï4QË.à•lª5ЧµùíÓÇqª®l-3jJ¬ÒØSí4N‰ÐFx©¤dñ2Ho‘¾*©³ó²Ãå©Å\møí4}ÒfåiÂz­ gVšT$©Õ6†§rÒæxɹ`±g%úŸÉaUdÝôòõ‹•§e»](»{›‹ïö· Æ°ÜX¸ÔQ×4£WG3‹}©£™[XDןÑ4ƒ1 ëªØ)ôZ©ÑV9ƒiô(úþµð¬Ve5À‹WåÒ¼öRo9¤ã²;ÏŽ£Tø>~¼{í1Ø3ŸÇËM¦ŸyTH‘RÍ\ø,+nÔ¯: 0þ„bqsGaÆ+Æ\BvÄE¦L9Q„Ä4Z¾!Ga'§[ûäŠ}²5NþzÆ «Œ“¶ó6Æ8awdœÜá¶»‡øh­M­`°–Ì2Ç™¤œ°Ä$Þ{J½$.±~S´Æ‹­Ú¸Ïjã¾45&lÙª¸Rqü Pq|ÃUܧ÷RÊüEã ¡Œ BÀLˆyå8S)\ãt¢M’2»ÞÍͶ´Šk›e¨ñ¥Íøç-)vþ…m|TÃ]䋇{)ƒ¼íÎÎàBïÞñÓ;“TYeš¬•ö3bÁÒ^ÅŽ¾&„ÅÓÊ™­Eè ŸÆh¨Øflª…Jƒò8¥<±4M ŸEM;VëQ‹7ˆÖ€T·™4­¾~ä/ ýèGxó9AÆíšl;$¶. ïïœÄðU5cên•oKæ¯ÂŠM‡À*ºœ•—Žã{(3 Vá—¾ž];õó_×]¾Ž;¥o2; Ê;yŒ9u„ÞÆh?‹ ñ…®¬€" R3(+Ž–&‹Ö»j82Ôˆmöé.¹a©^µçÖºcñÆ@Y ª*Aev‹ÑÐÇnN3õTóÇ<‚ê¸d×EÛ*z9í'ÅûÉœëZ1T›´¦4# Ê \Õ­†"ÞÔÔÈF¾«G·˜„ ËLÿ>*ê( ÇP^–ƒ.ð¨Á»¯O®ë©"· Ïê»Ã±:ìùhç[}18¬àÏ\a½S撬「ýý}äú=ÿMñ® éœøà‡”}r–µétA¡úlFçK)±¡Ö{'•O”JÓ\K$erºqá²e wvã´î­DÕăÂ0~b‚öpå…¢˜)êù<ªŠXƒ&¡¸Z%‚ÎØa'°r}b0ú<šÝ¾vkÑL)ñXa¼”˜ÄñT "BªCR3&°Ç2$§ ),Õú¢F™Q=hЩqš@’ tÓƒï¹öœ¥Bjâ€{¼sVhá¤2h<¡P¡iO úl_&_ km<åÒa 3ƒOz-5ÔŒ¢$mOæŠQ(Dè€`* 1ª-ñ¤8GÓ4ÞGƒ¾=´WÔJIMª16K'}p§©4ÚMˆ,ÉJsÏ=¹ÀŽ*ã0£Z&Æ9¡eªa†`l¬¸—öê—¬=ƬžÑŸTYSÞ ©S"­° 1$L1 NOŽÿbá–¬uQ€íVÉD‚" š¡5 ÖÄùI¨Á2Ì#º,»]GS¨Ù X/^'{l9‘xþäÛѦàÑ=·Ý„¦‰V)F 4ÃI:Dwr.Ý1ÇìW f©(jljOLÀ€‚w–yE8HW­ËPΛb Y=ˆèä¶L¡õBè¶FýUÙM6…fä¯H…´$ª(ü)ÁZŒ§D§·¤_Êyª“Fµ™¼(·ã2›ýíXçï®d€‹®Æƒ¢äÖ4¾ç¦qÅýˆ~Ô¹Ðoýºè¿ï”Ay³çJu`‚D,ãIWy Þvb„ÜGѪÖ@ñvÿŽléZ -gw¶••µÙùj…xÚhJÒ.mI—c¸RwJº± 4êÁµz‚Æ»þ¤Ñ3Òpùö—òà“í¿^"Mö/ÆV=²C¯óIx麽ý”.bƒ£¹‚l»u±ÊÖ…¯\ÿ"ƒÇü9ãˆÙ1½ LÂTò—¸OáQ£½™bªç:µH(Ù¡ ÅãE­qÓê)v>\ÿC/bO(5Ê"Ý»È »ünF9Gçç‹Õ·Ðë”BF¦’iél †ª#ÊHÆ$§:Sºd¶àÁAÅÁ+IÑž`Xrã<‚Ù'¤Ô–kEM¼Ò²¼ã嫳óÓ×ÇǯNÎb é¥ývY o­Ö)Ìa`};m#æ $²U)¡nó0ü9ˆЉ¶XþŽ1ë5‹Ûö8%·Xõ‹Áª¨^ÅVú‡~ï»ü:eUäz(Õc©Ÿ²Ñ Ìè¹b WW„«å’j÷¦¡^üdͬò-käžÂ§þÓí•i`ŠL!£Ì—JmJ›íì§L¹þ=òIÖ¿€ù(Š¢AÇ– ÍøóXÝíÆg&uììÞ’¢ÂK±µÞ¶P2±Ør‘®ãyO>¤êŽ|Dµ8uù$ºÕB)Ç1¦‰{šŠà,u”ÁEÛõº·Ìþï4£,NeŠp 0JX…CÐ0uZ*9!P7œ›Ëó¨•V EÌ@^@À'Úpgu"ž:@„ŠMhe-Ž6Úåz×Zò„¹˜!=1ÐfƒôÚs\¼©}b`æž>ñäüìÍñ˜½“ߎ^l^"òþ¦áq‹~·hp“Ð`7Þ›ƒ–÷*Õõr¹?±uSk¤Ê xÏÕ¼^ܮڟV³eE’µ&¿5"ƒb‰iîJÄô¶ð¯êyït´7ª½²X`ÐϲNáˆqëÐ}²¬QÕ|Ú;÷<ÏcŒÔ¡/'ÄÝ²Âæ)süu»eò¶:H"ú7׊ïb¤‚^Þ½ŒŽ<`õ|Qrz ¯é­Ш®°ºÛùXn¼¶Ù’k²·Ä…TÌ0;sãcëóáü¡Aú­îônl/Åžƒ*g P˜Â‚¢©#Á1f s7ñêT5{è.2©.‹Štçcï–èî“âD2©¼vŽëTÂ?'lðÒ 1†h¥°ˆ7Á}¾Î“j-KYH¹¹ó–Q8P Ÿû‰GKsÙæ7®„Nu©0 æF¢2.©ÂŒ)žNôþ“ ¼içÕVõ•~øQÌ(Ž‰Þ ÄcRï°~ãCèq¹ƒƒ >ÝOƒÕi¶®¹™x¡$ôAsF˜§ØÍÁlÊ`¼sóÁÁÀ6¡jc-½èß­˜h™yš¥¡xàŠÇ5d‚Ò)ňÒË4;QªÙœæc'·e½Zf b0q,W,‰þTŒi’0 ƒÈS¯\ІÌ,¸$€„mïиˆž{)÷žï(#À«8i ¬MÚ /Œ4àMO[SàMf,‰Ö;Ûý®óÃûÝ…íæü—`ŽýZ†¬g½aØ¿¨ƒk.Ýzˆ¬µå^â¸Cå+îÙÇöÄ£?ˆ.gl»ã¾ŒeØLXÝâVĘÎa”æÇD:+ëC§ŠJJ¶³0½Ô¼Å'­Üuïh3s±GÆf™hïnQÌÅüUPL»#–æiìï}C^& é²Å³÷ÏvüûbÓw‚g#jÚL¹…Õ÷VO¹€/â´–ò¼ ©óÊ ¼ð ª%²·0v‹Bó@ ¡) ·NB÷Ôd™µ$á ‹±H¬”$êµ–”3Áx`µè†Ã̯ÏOžüröêäMá:óôÕë—K¸Í\‰‡›ZB¨K¥Ó˜0!œ@Wy†å‰hÐ+œ=Zº)s/5&h® á2uIÜ¥7žSeS)ƒâ’Ïš{ÑUçsØzëœ8§ÁÜ£ÄÅâ q ã*˜‘ ±Mçyå7BÛï›/&µqæfÑӭ͹µ9ÿR6g!Ç"åÜI@$„ØÔ(«Sï‚!)èS¢ M›úý9¬–Õ¸³S”ÜZ`_Œ'txQzÐhÓå´ÞÚ<g󌖮ª\­M¦Ùâù›Åó3^P•l[[‘ENDP˜Ø$$06ÓÌ{#â¤Ø6¡eÀ\ìºl‘cÌ,ÝãÒi¿¶)R˜#Fc,Ájå$‘`ÌúxfÍÒUñÅÔoòêèÊÞQwuÇ x¦©%(’² H ØP%c,9ÓWœÎõ9çYçã w#ÜP)RC´tÂâ„Æ¬ÿgïj{Û8’ô_!î>Ü0²ýþb,$ˆ³0.q‚Ĺ`ï‹Ñ/Õ6ÏIpH+Ú_Õ=CrHQ‡–ä‘ÓYdíPÔÔô[ÕSÕUOykSä `_Øåôì!@3N®hðI Ü/@9n›Ìsd‰v¸?©eÐWdÏpK\ÂS@ÜÕ¼|õÃÏ8˯^<Èk$‚ðŽÚhÑN  ï J’D¦ßÚ{ß^þËÔfʃ0]×Ìà8µ…ˆDÉÒÁkäòˆÁ[-7QÜDt$+-EyÒxʃf»Õ?‘j`ñ‡ä<„´Ñ¨­bL9oJ0™îF‚Jì øã—__üÏË ¥ãœ à?çõy›Ñ¯Óh&~øÛ·æ¯†­ž|ØÊÅmÒŽ'×S]\×ôJ«é'Ždc„zci?ÊÍöª.‡ÍPŽ{ì= Fµj ñó&ÉæoþÌVk÷ž™?È[ËgN5Ûmah¦©qÍd¿k³&-œ‘´°@€(e´øJeÚ” M"„9ª•‹™ùf¥§‹£M §N©¼9‰*ñÈ”$’A¨IJ32:Oº©7úÕ›®7úgÜè×ûü¿¤cô[á‰Í4c­k´ÌT¾¹N{r1}¿½Ë ~x9mšÂÓP’§î”ìÝîŸâ” Ó.{‰Âý4‘[’†·IEƒ?f­c†† ó…—ÕTÆä[iÕÕ9]“™C ÚÜt §’ òÅ£bNy¯¢ƒà]ô)9¢>Û §–S¿©ÍlA«V¬ZAÍÐäÃUX¦v{Ý1*ûÁ( M5ä÷`È•W)(i£rÏAœ¥Éùm–Ót ižŽqšò˜œK«¨Ž’r¦” Ç(¥Žd|¦¼íWôL5åÕ”×¶ÙÛ<¶É`GèÔì5O¨ÐfDÐfÅ+ {LfuàŽo­Uà §8zÎHþ×úDí! ÛÁ†á=€90j36$!¼ÆÉö$hRXé5K>™Hö sÊ­Œb’H—‹¹³–u$y¼Ø hŽGꘗÂcê¡Á%-8¾<‘Æ‹#Ëß+’¬H²"ÉŠ$ Iv:§bÉŠ%+––E‰r%M’´^É$Â/0š@Ày8Ž%Ûc\ÑäC´…òJ)˨r€‹£Q›(aQýB@9>4yéÞÛ8]V$Y‘ä} !ÿ­"¿§ß¥«tqÏõ03¸š Ž@k7_^—ÞE[è×®uùk†Õ ÔF†«~ ÷«Ü¸ª4P+ËU¤í¯×ÉbÚµ¼…f÷¼¶@¢W+"™yžyu”)Áyä’'9WIjxî´ø6æ}Œ`Éq|’ˆÂRÍ¥“Ò‡ õ–RøøÀÒb݆b+Xª`é>ëF˜*ýC3ÐWêù/3ÿ¾¸˜÷jÈKÍkÅÃ㮑¨ìæO?JAøŒ]2ƒ5š{©ðÜðèØ :® e1-MÜH D"ÄjB=!Æ“‚6j\Å´-,^ÂåüC"V`\£ˆÝäÔÉÊÑlò7TH«ë¯N %n)w*xz„`bŸÊ¤_½›†wYR«ÕbKlEÕXâウ$e$F­q11OX¤ø,™tînoRlÌü(ùîlg>Ø´„//„¸=‹_ÝmmÏ0#?ä9+EèEûoWSp—)x8=ÔSC½§ÅüÞ!_ µOú‡?º_w_kççÍî’ÿ¡ÿñÍ÷ÛOžçaýãïþ›íû¼~7m&i=kß¼y7__ÄÉ > C{²nð±“_.À5å?‘Ì+ÂtðRiá2€<$8Eu}’ùB ]æ|Š@\üú<Ý|ã*2A%hòh§@këQM‹¬çúïNWgqX£Géµv1ñʃ‘<0¦"DçõV[Ÿ¿ºÿô^(š2-‘!rï³8‚çKÂpËʯôßþ4Žê 8…2·ýT“hO¢W"h¡)ä+·îûÏŸ/½µã26fÆøÀe’ÜZ0¸ |T{ ÇÕ~—A>3x¯ïöÅI&à8¬žÐ@£±)™¢ãnDv9“´;?½˜f›Êx¼‹”o7³¾w›²ýô¼±»Ý¯?ÁÖI=°ÓHëwnT…B÷ç÷æøX?£ÑysŸndÇžTËï„ >j‹œâÂð7$¨ ýèLDncVÍÃ㙇×ðçjÏ2¼>;„Z¯†•¿èƒ=’鸜¢OX­âÙV±œ–“/Êwuó²»Ïw‘ÓâŸçlán9¯wŽ|³{Ï×Gƒª5&|B,fñÍëëÅ4_­\?Ã=0Ý?"ùÝtÖ´ù \Œ¸‘š ªtëšfÄáýl~uñ-\â.kžM`¾žÜtnOê\¸]áO0¡½c†¦ñ9Ϊ@œ†µˆt×éió‹ÏŸw›ñ34óSœŒNL8ïƒ0V¥9§A‰ ÐTH#K¸ÝÒômEK®¦1ÏúvB‚Íé/Tö*PO‰sY—ôÈôE³š/Ý[¨-%?g;C' B¢Í¸ð"y§D42I¥M„ÍŒüÖ.ÖËn83ìÝLSóÙ§(oÆá¥uËyÅÛWoò“ nÖÝÿÌ­û ¸kë}h‹:Õáj‡ûíé†ó˼ÑÛ:¹Ü<ß™,¶þÝ-—î:p»i/+4ɪPC·=¦·K­/=~’CÅE$ÎÁr›½\=ÍAžæ~d¦¿rÝÙzÖ¶;½tN/×—Åë*µ\ÍÂx¶½Cì¦)Ó#ïª'žM¦©Ð&£kÑ–”BHø0 8ü×ÇåM¦M7¤6Äàf™Ú ½_tç¥2f²Ýh÷k+7«öÛ‘—ê–­Çzq‹I—ÃÙ<Ëûµ++ÅqnNIûg9œ8ÿ™7úäjzq‘ïCXuþ¢ Ú[):èà—6'¤ÿ‹›Ó¾;pÑf°´…nÕNÚVÀËUžçVg^\Àò¿ò¤7 tw§%)¸T©¦Mý*ß\¸ºI–)O`¸Y‹©‰òJZkJýeÐ|äFy+hÐúF—ÍÔ9Ê‚L‡ A¡s&†H ù¨’Vš-Ull~}yé6ο?µë‘nù*¢ý‚îG¶@®[ÜB:ºnG½ûx‚wËtÇåGMgëäÊ–Ï&øýü77î= zÍ÷йCyHÿw *BQ³ùj—p‚¬W'·å/ã›[!´ŽÖ‰Äž;ã‰åš1¢å±«“í)†£<pŒyí5…ÀHC¥FgaD8j:›Ö¨Š&Æ„&^â–œf^ô’I7ë´rgUkzÅýaŒjµ·Vû;@ËÚFÚL„WɳÛ6ކĤ b¬]ÃN»6››é…[½ûÛWÅšßüa^ üá©LÛ¶”2I+ŠÖ'Pè¡[A­#Äh®x2v‚U³`Þ–îOúlMŸK¡c˜¼L-Òxç'Ì&s´S+ˆÏ¶SÚ/qmÝz…³²Ê»×Í®;aMÚÆy›î¶Ëf5™Ï ‡×ö¾¸Ì´fëYD©Úì€.à|ް5‚+}ðÃG g™¸TB·K7k\ p>@;a~¹ÈíÖ šž/cäÍI`“9Žs9q¹áZÛò¡›þwˆJã‡6Y»·&9à6ݶËuЖÉC< ÑØÌDÂyLT8ér–U¼ŒwûËmƒ¦véNa‹¹MªŽh/’ò™ÈɈøMZP–zO“z*CÍ­2)!LHI)©æ&q­3+ƒpLæÛ›ý<á”IT€–+š¤T1³W’2í‹:ñ˜ðL6ý)2IÂâ$sah\QEq¨’Eu2&—9¿^¼¹ÄãyñIãÕŒ±õMTŒ¢ “Ú*ª’vI'íÉîQÝÜ«rû¸âú¸°CïCè€nNÔ70JEÀS’pçzê™äªçìüðòÇÅãùáçß_ëíDï’× U#óyMbL;Í ñÝVÞ/¿ûõÛ_ÿ5|LŽ…à# 9zdÒÔ CŨ͢ïÉøéçï_üøÉƒJR%< Fø`¨õ ÕQpŒD™Wl+ð÷Wÿýêç?^½É.ãÐŽs10e=ó^+ …!ž 7ŠAYÉ‘]ǹ€¶äœ–vBàj€Ê"…ÕOvò™øÈs-z=óNÕ]ûÏO pšœ !ðLšH)+N•ql÷ü¬§Zl0TFÐV0Šn;h€–'ü3á^@/8xµ/・XŸ!„$–cÐËÅ“é˜h EJ´6hZwBNÔÉB„x$lˆœáæ @²hÁÏaÇB.ºœúú;¹ZÚ ™B²hˆh”k$F¡ÝN@^‚þÐS”¿|ÐÔ¢Z´•±†H|ôÌâ ,&ÉéNZþå6c²@ÒóEj’z5 ½¥Z ”r’ßÍ‘8"2{ÈŸ"Ò+<*†t/’c^¡’KÁç]Í™'&ˆtHo“iЕÑ.¢7R ~Ò¥ë8àè3óÇdÞÇŠ¢óÌQâÁòZehíE`‘â‰öÜ¡ùdzìüí2Wó0¿8O(pÎ’¾8üè’yt3ðO…Æ9TÞ·mÖ¾7»¿Ê9.˜g®9ô±qoJf@H ³¢·¨ŸeñžŽ þ³8_Nk¿“Õu4W9¹…è(orF\üòm—•×ôÅR©Ágtÿ3]v”ø8¯;Ú”Åü•i¹8º˜þ»\‚™ ô0Úuw'„ýVg{Ó„""Ï”YNA3ǽÒº­³Ôð½ký7?½øéçSbO7r#9²%7ïý=4a9õg‡ iË¢.Šåíê½Â–oäx‹¶×]Nîù,YIÿš¯'3h§·ä¼ìå%á«í%- q8îÎPÝOmgc›½³š^Âd=»ÈI,×ø’W®èç.!h/èfPï9íw2ëÁ }¶ï®óT¯6T0Ç;i<+W€³±x•”JxóÖL­iûå›{<ã½®-£_›³ÿû m’W&¾Í[ãxÇ}ÒÊæZ¼;5±e³Ñ÷ù;”Q©¥›­–ד«éê]©f¼˜–”¥võv]ØÇ’dÚ\°¡ÙIÑ"ëaîŒ.ô>þ>VCUÃp¿—xf,M=Ž`Ó+PR£€À´ˆ> iV>ì'LJ]é°ÿ¢µ;TÞçà­A•Jn] në7âŽÒ\·<YÆ®®aÖ»»çű¦mÖ=B¤ŠÙlâ¾ËÓOµwñÿÖM]í܆fŸI§–BÞV ÉA)ˆamÐ6FC< „åœKƒšæh+—fo‘Á½XVðœ*„£\°Rƒ9'idpï f’ü̬gƒ "ò"<5øÑwÃ+‹æ'Q ´Ëß öNåg)ëß™¡¦WÚ_âF‹å¯jmóÚJýáÆó¬è\Ž\Eðë·o³¸Åz¹È%w_O^eÊ€ÎÐ SŽ e²¤ –a²íÅ·ÏIšö‚Khsšn£·?ï–{¾XMQT©íËÀÌTP¦(¿Ä ÚBÂ}{>Ÿá^Í—ï›.@Kœ¹Éÿ³wýÏmÛȾ?ç¯`•w—¤cYðKÒd&ÝœgÒ¤“8/}Ó×ñ€h«‘%(ÅÍ»¹ÿýí$EJ”EúKâ^åÌÄE `ûÁîbk0~4ÎÒÁ:s–?{Ìj¢ö ³e,,(*A2ºÁ¿¿áH&ȼ¿áDæ£|NÏ„þ•ŒaͱzÓTi™ð$¦‘fZa0s@¨PŸ&¤~¾¡h·Æl’T Ç£h,€¬™Dð˜DtÆüîðíÑóW#¶ñaÞ"Å5Œ S žaÊ€Qid*Dz–]¾Í ÛÅø´ˆ¹}—SlÍ„ÆcA¾æš©È‡5Ÿ†¡OcÇŒ`\ÆÞåÿ¡Pµñ-ʽ³¥Šñ BÁS*SÂth©0Þq‘Pí¯µêJCÛN´¼× 1îlSf8@„d’~¨ñƦF ÚüëÚ1?M†zÙ¢×ø\Ävnó›·yÞ$7¾ïær6ÇSg¼‹íìܵM¦WëÏdz7ºc…¡3si9—¢íÇ—ßa8.é€è+ ^ís»²%3u-êæ±©Ô—Ú=¥ˆ]a0C»¨0L§‘M`^ÎZÚ<`C 2šL¦t‡sgS“ósx 6B_´†v˜ÛõÓ%úÁ®Çk™-ÖîéÎóÃfÕÄ«™b6”Ü¿’Á§«mîËGœ$¶\€Ð5 ÁYä+ ‹§Sˆ¼K++QùÄíTú ªŒÅ8žº$Î Wù|Ü--~ ^*ïüÏ´±•œš÷h™ßd¬3g´Éƒ¤Ð+ã%f~ù ‘G¥Mr’cç?jMBM§ÛаÂ8Tm:ÉS}k×®k¯¤>OÇ•“|K÷ô KCX"ÕÇÓ¦ªÂÀB›Êiõ=—×z–g˜¯ëW½˜m3æ'‰«)F¸ 9õTOüDKI|*7*ˆJN;*OLÕTsÁè•øLÖU!£³2<TÒ9 ‚<>…=ûDç¦Ñ*~fþ„o¶tÝ_¸X?=¹ß WÝ݉Å4¦ƒ9 ¨R:J¹RÔDó}cn;dY@`¾C w ÿd~3à¡rå°ËaVl$`uú´Ô ;gÚý°îI»T—áJ¹Áa/¯2iDZz7¶n¡6ìa°W­ô÷†a-"~8nРÃt£ŽŽ#ä5Yç6ç7ª2㥥ïJA0×…¯µC¾NìðÕœZ]4£ÐPsœF*™,"D“ùIÊâÔ÷Ó»´7ŸÏ†§§f§6¦m§w‘²wGå;î̼‚=A Ç6.çxªhxŽp~§ow¹µo4t&ólÐæÌœOæïÅ‹"1´Ý‚¾žü‹Û1×rÜxn4&…Ç`<|ecW •>[Œ«ar8?q›ÍLòæØr³=¦Ñšî®6Ã\°Åý'fλ’ŠgÌO¢0‡þÅØrûR)Áý4¤\×2w Gæ$ZÞŦnŠM•4Ð’jÅ\i%™¦$,寍˜b¾ÅõØÔMÛy·MX¨Á#+â ebî«”*߀2z—0Åb¼ËÄÑYÕ˜<GvI*Ž]¶§]6ÎÛ&¶™¡!Öì¿‘ÍDw\bÎ&½yÝÂ/–4Ê0_¤24†pœkMy*4¾¢~š•ÌÞwG­|+­ô¥ô‰Tš'‰ A‡ÊÀ\¨$†-°¼KS,$J'³í¶¢_õ`Ã]ñw™KîGÓŠDj¡$iŸÎå!&Ê/çòì8¦ì>©–?]0戻ZÊȱäÏl#ù ÑY‰®Ý±çN빬¸J¿>ëy·êç—çôµ©\ð¶oìëpìÑ%„4ûÒ/k¡"¸yù}÷Ú[Y¼_’ß:Ö\‹á+kv“R&óÁ—ºÖ¾n¨)ý6àf·d4QóÔ50?Y­Íçܬ1¥½´+wÈN”Z̲"UPYÔEºA„’cï»rþž>E4÷߇¯OŽ~:|óþض_Ζ™m+x¡Õ©Ñ¶ÁÍU—5ãW•ÛÞí#ÌOƒßï­7’¿Ú0ÇûÞ»üj÷UÖ2ãŹ;dr#OÙúƒÌð7Ú—WÛÃÓ¬¤ÀU¼³Ê4Ze|ø1!c4– ôQØ"O}ÉUj5Yeê˜s3¸vKð·ý¾³`â6½ß¯=‡¹Ÿç¾Â‡Öa1A›áÿ¶_áRŽè|,?õñˆW¯è*<°Ÿ]• Ûñò\Ø–åIŸæ°Cú44¥ð}këa_Œò5d4¬ÔeFã›FRg':E§”Ÿ2¡R‘„˜0ôS[6…0jyú¼Ñ0ÉgÖù=GÃgm[iÞöžÕŸï«²âÕ>¸‘Þ°·ìÍ­³Ï½#ó&ÎæóéãÁàââb_Oþø|jÆû“ÙéÀæŽÊ[s†ç§+µzÙLÁH䥦ãÓž'GóòIo`·FÝö)ñ ú¾àX—|‘LôgüM=»÷ÍîçKü,Y²/§C;̓æ³]ï³ä`˜}<ÂrïN\µm¯ 8Çß4Ä~¦î3þE<£,`>£ì¨`âïO5®3¤üý'ùùþÛƒ7/ŽÿççCgÔûùý¯Ž^x½þ`ðÁ1x¿üãø§W »Ä;Æ«1‡¸ZÊÑ`pøºçU ß®Ço`] çöç•’ûz®pÛÿ8³§ ÕÐ8Ž]iû®‘Á_ÃjïöÍ?ÃOO{/œšè#è åiáœ+ü@Ë  ÅÓ÷Ç?ö#Xˆ*ù¥ÿþyÿÅäôÅ _¥ž£Ã§ñ² "HX‰ÝŠf¡ò½·Îå œ-a •ß˽vÉç1œÞÃå ¼ç?=ö.“:ï•L¯+Rm3÷`¡Ì×qÀ­Ù¾Ê²ºÖPÓ™ì̘yÏB |tð¤ÓfNçÕo~—Ÿ¤{š¯ë¿ÿsafŸ÷ÇÎÀ}Ó® þ<ÎAr¶ZºB/è=ÔÆ7J2`&¼ ;É91^¹t§’¨ ÿë!`žú,íÏ€Õ??ÄPÜ·Ø Ü„³{ÅÖØŒFÙT*àö§=Ò³Ÿ§Rëü3 Ï÷sG në<ÛX0lÇ{"˜þñ¤çvÚÚ61MÐï GÃÓq¯x=¯°;™ÇÙæÜ•òJÒòrn›ØUn±¦ÜÌ}×*´1ö½gl_ìÇ0MðµkØá¯0åOøU¡šÑ¡`{˜ f¨†ñ‹*¬óêËQl+Py6¹ %RÆõ¢€v‹Qå)žÇ_Ú¨¬P±Š m‡Ÿý$‡c7?ËS“w³FWê˜Ú€“joÍ{°¬&Û\OAfž¹¢·¬WŽ?±žZÝ ЮâwE¼DÖ†J{kE­¦ñIcQ‡g«3[rVrÖqÌo¸_µßzm?ÍH·êfeㆡ–5qφÚô¡óeÇÃþ¬XÕ¼âÛå£Þê¨õq9-jõy±IÌ–V}%ûš?i‘¬ä$›,fʬ˜¦6+†ÍÏ Õ8ÿ´³^¯úA9i£¨{¨_+Óè93ê5ôøiÖ¬ïÏXñÆ‘O .ù¾ÀÇ5^°ÑCœ±jÀw¥ÅÜWúX¢ÛÐÄF|šr¥\P¼ðC‚êÐ#(õ ô:Ú@çøChÐó>å-vÁm@ű^ÃÛz¡d2ŸOÎ/»!¡Åt·è Ú¨¬”üJYô[óÈd ØÀˆÝÇæ]Q´W›ÄêH¸ÖJ°QLcÁªn‘(øÖ2ì8°/q¹ø§¸dÙù®K7,xÖÎ •]Mò; ß@Še6€An•Jš]û-†õë¹ö‘u/Ý>~Œ\´d ëøÀÉlhRïØó‡áöÜ©€ùaI²9´àÑ Ó¿<ò®p„À­Zª¼É’ÆÌH©Â(ñY`é‰ çœJ~×S,-ïXn¶,ŸÍö䦮λ³öâ6ʼn­w!3ï´DË¥3%ŒF“ ŒQBÈ÷Øš1-¾%dÜÀÒì UÕ údo»H^®èwæì¯hÿÍ]<å½}û¿gW6n¶ÿŸù¬nÿ¥!¥|gÿý?ŸäÌÛ4ßÞÓ{¿ZùÕë¡A¬·çõ6òFxBñXÄq˜Æ>÷•4†ŠˆÄ¡üˆUŒ£‘÷Û^Y1,!ss"G#›ˆ¦E>5q*1‘œOBPÕ‘=FYD¾ô}¾± ß²Ióc?aŒ‡I*0gr̃ˆê0FR²Þˆ­Ý¦0lÙ„ñCÊDLáŸÖR‹XFRóؤÄOeDú: àM§F|¦xÂÂa¨ŒÀGqHˆNUiÓõF0c—‘bi¨AHl$£¾$& M"¬­S¿¹Ôåm[ài,( RˆB¨J¥„pÀgZ†F³Å‰MÎÚf?:`aä“R%R)R•qèI;aí /ZUÉ À‹|ÒX_2¥¢ˆ¦ZIƒ´¹r´ì¶¨<ö óÓ8P>AfÕ±N‰`5IlTÚ0·çò£9A‡u[î‰`$˜ÊÁð“Xá±—HJ˜j¡X¼ÞÂtÑ{"hKÿ`RØŠR’"§¦Ìz héÔXL4,¦@3c¦zž¤ÀPxŽG75Æí.EuJ8Œ|JÒÔP.Rf`>bcd¤mê@ 'Ï-ªOÆI XI˜€ xÁ¦%âi’¶^}ÖQÆ4 ýFPJ“4„šuÄBRXɉLZpû³N­0  ð#Xùàšú‚ Ö>a|ÂY¶rï·';ßü×ÂÍ7|\mÄ,dÌV🀇;ü·óÿÿýÿ…}¡.„ûg.¦;ÏÿÎó¿óüï<ÿeÏÿÍzÄ7ÇÜÏ3%®¯ T›±:M9ª×òÒ=Û9ùﲓ¿Œß¾K)×&í;1Œþ±{à|úÀ|Œ?©¼Ž'1–ïÂ'ã.cÜð>vwù~yŒà:[ÓUC6¹/»ùë—gðýBƒ•÷Ö½÷ÉÌê鎭ç:·4šŸ¢ÞÐæšË°: •ÇûJ;Ê)ÔfŠ9ÍÇê³w:“Ó3ëgZ«ÇŬÔ+kæbeÆÖ÷c=7}­ ÉÉ sÝ$6'©E Þçr ìW¸ôØZÉÜÕc}<Ž$(Q@ÿKJ¡à]ò=Šº—I\зåÊ c•m9¯Y¦T(NªaJÌäçá5÷¹›³ èòŠ.Àþ/RzÚã,Úc‚î„ï±Ðí‚6SÃ/?¼Ì&{>Ù<ÅñÄÉ•>¬+âp/"{aèïQn¡U´»_½¤Õ¥Mw¼˜¢ÈÉɳwvgž«ü.øály³z¡a{Tˆ½0ˆ÷hl¡4ºì²¡’¾¹üû}.ž8‡ñZóaL÷|ßß‹¹Øó²¥yJWÛOqn„Šÿgæ`Ù’ËÜÙD ’ùƒ†q¡‘Ø£ÛóE°G£xakSX?ïvéиW'ŠbK%0AÛ‰Ös,gí(ÀÚg·ljßBâÂvwbmå’ÿÙ?±àeÄ…q°Ç8Î!{,Û&ˆ4R7šœv¥ Š4PàâÔ„!kAMÜH þçDõóªªkI[¥† #ÆIdGŒó­,Í›dmm´ž'Ù|& X±ãÄ÷*ÒÖ \,°|Eð_Ñ ÅÒ¶#´QÖâ€Û ¤F¨˜ÁhÍÕ3ŸÝðƒ=íCv6¹ÈòS¼vÙʃÂFŸ1!lI‹O*ribmÏMã €3WPøjøÂ¼bà+ÝPFQTÕù`ià(X!瀬©u• ›ú°Ü3º…%ý¯ .`˼… 7VÓ+¡¶VÊ]—bâ$$yû’'6^°Š±¹ÏEd'HMK€ ˜…Ú·Û–º=„ECaÇÉ'¢Å8…[.JØ>_y† óYl)áA•¹Šõšpü'3Úôb¹Q¯²+jBð‘Ãmƒ'J% B0E·6Eh,LS–67…W¼ïO¬$Ö~a„5Aa?´äEl¹ÁhÐ6Ê]nX…Vv¨/'¥0W´YÌóµ}=ë1íkƼ´ˆljW±–0B “@Ñ„)}Eè$dR«+µoˆfnÑ’Ÿwªˆ‹Ýž%âC¾YwQ›ÕgÖlpCÑõͯû-zµJÑÆ)Ñ&S]§ËØ ÙÔQ|Áus„™ÙXŽ–¹y½©Kr‹wº!OK…©÷'3 g·6–­‘ÿ]¨uä³ò4>ç4Õ!7IàÇ¡æeŒ¤!Þ¬{sÌÚ¢­*³ÂÐ>üî¶Ym;MUV{‘cÎGÞÃÛ˘wy®˜ëË˶®ŸEìÑ‘ìÆx]D²˜$Ï™ì¾ýa¼1öÜȵÅ®âÑõέ«³º±ÞÊWÝb¿]ŸE*4¡ á:ŽaLÇ2bTí§±òÉ•–›Îé¶…{;åU¹(Sþ+çŽ{޾œÊlW*è€r¢XÌ#ତ7‘$Š|®|gó:}8:xyx ¿^¼ùàR<Ý»Q*@šu bðP§"ˆC_ƒLcfÕ$¾ªT¼;|q|ôæõma´/xH$iltL%3$-d”2ù¢JÆñá/Ç·A×2HRX1¹  ë!F‡RÐT‚§cS¥áíó×/ "n™Q`uMauÕqHR#à#—IÂ4¥~§^ôZ›7/_¾:¼Ñ‘ ‰c’h)ìÏ ÷)O¥Ð,A%LÕGçàèÍm¡´¦A SBaªߤ„s§2Pq Z#â§Ã×ïoGb0¼Ï<ø t C'ql}ÆYm:~x|¼˜[æà"ÒVÆ(`g©$ èí*aÏÝGG”÷ï&ýÜmÕó쀎]Góëìr1Ä£r²ëê+{õØu;]ßUÏuÐõ_\í×}îv¶+Ž÷í:?¤<‚•&Œ#¡˜:ð)1i0¡ýˆ¡j¸‚ίçS¾¿îÓéI^hl.¬ºø îiö0ˆ4›{öïw#™˜ÑíÃüï\%ÛÐx·ùî„Æ­P{x±èE.îUo3eÝE¹+û^g­'¡|¦‘~0¬·Z§ÄpC直l§{)*xÉ@wY¹ ¿¶c×ncÞ…]„žf^‘†ùC¿no»;¿vå¡ë𫎉$Jž†©RÌiÁ5 _ÊðÜå×ít/ù*ºKìÚmÈ»°ëÑøÒ p\Bs 7o'­;7wå°ëps†"&i¡“Tp¦#®p«ÄB…Q|W¹y;ÝKn¶WCÝ%~î6è]øyË…NÛùy;iÿÏÞ³6·m+ÛÏù<ý”d @¼ídÆm'sÚ$c;ÓÛO›Yò‘d»¾¿þ.@Råɶ ‡žN£E.ö½‹Ån8?‡òØ:ü\Ê…Í9/dN3BÁ—ÑXÛ̹±òs7ÜWü,O]™èc2ôÃûÙê¸è.¹ #nˆÜìy”N:Æ/´ÙCÚåº=~sŒµ•G7}•G¨@¯£<²B +SÄøð(Æ™")ÎÁðfȱ*n¸¯”ÇéØü Ú#Œº!ÚãK…Ó^}¬§>º ®>BEzõa%åB#FŠ”rh!3cÒÜ*BЬ°±ªn¸¯Ô‡÷#¿yyÇ2&§: ûA)8·æÊ¡nÞäßãªn´„ U(£¯U`ø´Æ°TK®$â™ðTű²ZàTÆ*TÝp_ •,ÇYk•Ý LÿØoÕñëGȦ/e¨ÃH"Éûf:.͹™æ¤Z{3¤vͨÚZÔ…!®n W7¤áÂÊðëA˜[‚…‡ii…Ëõg¦(Ëi¡t´«î„ë[qùÍï=®”mbÓj)1 #þºbvQN¿þZÔjR´d,~sÚ´p‰•Âu$ÔKAŒÌrYHi ¤É©}#É@ñÄ*ñÝpß"ñåŒj©c‘ñ0rß‹Œ—ºp‡ù–tß´{Ý `¸<…òøZ»8Ó„¤®¶IrW“Lr ~±Ên$U´»pß"O®>fsÔ==Ù #ý½È–[~-]:å«Èö'y~ù2¨oë㬠T ¥à¬”H-ÏŠU¾ºánË—ëqú´r²/Ý’ºd(Œ¼«Ëƒe{œÌn¬„ m¨ ­#´)â‚ÈLE (VS%¼²\æ)aÑ–tuÃÝÚ*%ðÄĶZT—à†‘xuÁ­ q¢{WMY74áÊÄkUá– n0‘‚bÃ,gkÄ4Ob)áÑVátÂ}%0®Í6<ël#ÞãùÂ’—þñÅ9A´áìSï"x8îòÚºaX¡ 'ÇÖágaÕLSI³œhmlš¦:K)ó[qñFEÝp· Àø9€“è°ºŽn±süÞU7ZV8ûÈðkU©ˆÔ€5BHcTˆ¢‚dŠ`®¨P–‘hKܺán‹Íg:+J‚(±’©ðÿ–¢„j&lf†K$¡He Ä$–T$ç¥`«¢=(Õ wÛRl–™—âæ0R„pó‡e¹¹„pnå°µ*€ŒÁ²&BJj5'ŠåEfó43™´:Ú  N¸ÛªÙµMÜ7»§wVQb%ÕìÀŸT-ee1:›ÞÊÖÝÀ¬PƒÈjë°uŽ™Èu¦Pnµ #WS'­´qÆe´ái7Üm%½Y¶^НÃH±ºO¿_—“h‹…Á]€¬RÆfkùÚÜ•³¥4Ï j˜Í1¡šÐŒ¤Ìf¹È£­9ë†{!E»1–~¹,O‡‘bCº5<kº‘ÛÓb­?+¸õì:8íÙlÔ‰6SY&ÕŒÁæyrÛ””·þ"£“·@ÉqyêŠýP”g·Î­\-QU5…gS7ؾš¾Ùó¯} /ÕúÍï£ÓK/¼IŠJHaò~\Nÿ¯Ëí®s‹Ñ÷¸k÷ަ¦ºë'x5»§Ÿ]Ϭu:Ó dH&#;½cóKr9:K”ê8¢,΀ÿÊi"‡úõhìæñ–öÒ}p6th}IŠŸÌR/>}Mþvï>˜!°Ê ùrV J•ü!áX ÜS÷ÉÄ^..ý¯Ü¬„ä "y?‚›û‚Ë_SÂ÷ãäÜŒ'nQióœún;n–÷s0÷8y¼`/7‘vö»]ªgnýÏpµN ÊÀßüxtj*û ½(7SÄÁž v¸2ùëãá¿?=Lö>ýüµ·¿¿÷éðï_|c W b\ݧ<9”p[XÕX§—ø?ßíÿþo¸~ï·|<üÛÁÿþãá§wÉûÏûÉ^òeoÿðãï_ÿØÛO¾|ÝÿòùàÝnr`̒صžH€ÄšçWþ7Ðv48çNË(Sž| W€ÓH8 ª>Ó9lþââ'`»äxt–ྸ;ÉÇ¡ÚÝI2 —Èá÷`ÿ` à ޗnþ~0w’ßF“©»üϽ¥£W˜ œ|=ØKæ% ‹ ÎM*LüÔ¨f–±œÙ›g.1ÌÉÀšøÚtÿ|íÓÓ1(kø8ñ×f7954ûÖ}?¾zãÞêk×úá‡_çÕæ\¯¯»Ò¢þÛëÕ#°½ÏÜçîQ]ÕPf¸Ò›œé°]s¡ûíü2ä~Uýd79\¨‡«N_‚ÈÖcÄA¶ënÄ£aŨîêæI-äÛÒ ´ÿ¤š›6å¸e>rÚyz\™ê:ݺGE–Yi‰iŽŽ‹oö.<8«•C=jÆ&%^–uEáìý¹¸$£-Îj)i Ü?N1(¿pIÜ@W ¢zr6˜–ðÓäq'I6~ËAmæê=ú¿'‡²x‘Ü2m2qû™ñ´{&d÷@Ì6!k0—¡ä øuuOØl¯ËMÙ\fQ‡à"ÍXîá—Ñ=¤³½ ?¨s)â Jç=ÞJºÇz.Äö\Š$£££Y`3ulÔ÷¤ýóÌÖ=,t‘Jo?~^fiûR—#çÈMçÝï§{îh{=nöè2Ëù¼€&î`)øØ/G×u2m/«gºÌÂêQÛ§cðF‘NÝ#PÛ rcP—YÎ[Ëo—Þ}¾e=GU»T³nqm›iœ.íÅ›si]B榲¡¤í„ú¿y~ÇÍ}%›óøkçWH&ÍQÿXj®4'o.êßÂËävçú.|ù;~7—?¿¹ /Ë¡e~[9t ÍÎ8¼¼é§]˸ê·.åú/V B¶¨þªÒ WYýI•Ïù2+Ñœeuž-Š^sý³ý7S²aÄÅ‘Nmqñ‹óL½Ë´­e2§Gï^xþó¼ÕünÆNIRgOn˱ ,fXQeß¿¾"‰Lj¼%f<H]Äî|ÆÂ{"ÍXºÉ˜wÑì+°‚rÍm1¤ÁÒjDS)H¡5“œXK¬-”µÔ‡AŸÿSÍ `€ºêdóÃäw½d-ÚÖ›íä·¢±“~l[o#ïÝFƆ–z:ÊV™Ý~¤`ï¬O§ÛîE¤^M¬>žßj»˜eV=VJܽ*Fç&é½’{Mßœ~Ǥ;¿˜ÂõL–(ŒÅ3©ËÌž¨k2S3/º]Œ•öÍ–ªKííÄmvâá´¦‹>Þ¶y´;¿}ÚÜ"Á ñ¢/幯Wn…¨ÞÓßM>©uYíÜ—®pbfÇo®Ðପ9r9]¶Ä ÅhtYkæg¯ÒVRi[7D´×®›Ñ®õ™"à9‰»ÙQõ•dAøJ)â#’[¡Àƒ3ÎÊ-2Ô´zƹ¹ç/B]´%ŽãŦ֪C”½V[[«mÁiÔ^©­¿ÁðxêÏ3ÔªqzŸß¿EEwhT´/Óî5ó*šÙÕO® MÚŒþ‹6ö«Šq—é>íè( šSLÑémáaå2†=m5·´O¤Þ˜H}üø Œó,G– ”éÂf4Õ‚*WÉ™rˆD«…ÒÙnˆP°—Ö–jÉ!öà™ãIÇ@bS‘•›Í×í7²ï}#»}âsù½æY'¾ÿ#ìÄß4Ny¡sË<Å[3•«ù“}à¸Æžô ±sÞàU”wE’wºŸ¸ßbó–|Ís3åËÞòEaùJÝÛ»'jïü±e'gÞº9B·ÌÜÅFóÛnæÊvÝÕÕŒ™ΰië äbX§)×93ÇZ 1tŽ9. á Û»ýýÏûß~Û{ûíËÞþÞŸïßítôë'@–R›´D·9½ÕžµãÕuBò{b‚ Ì-ÁÂ@Ô¬¥©Ît–aвœJGë@TÃ+z"¦£Rõt•ÞŸxºþD-vÞ“¨ÉÝò*ú=à§ããÔôssZƒzOg›=n»—á½?gç>áXª gšÔíþH^H®)T&x¦T±ú;~ŽvïîÄäîTÞ{oçéz;•Ðy§"vŸA¹7ï¢BèüCöí¾Eï$<¾“Ðm,ï°V÷ç#Ü#KÓ螯—‹Ðw‰§ 5$"çæ‡è{³êÄ–Þ‚?FšÅª€È{Øô-l¶©ÄÝhÁr¢dÎd®Á\ 0á®x•S žƒÅ‘í¾þáa v8ìåV«gÃò¿góûÏ}þIô%o3MŸc&r _nµ #¬”VZŒ H“<6M?´£^×ÇÛ8šl³ÖwðOªþõ²p£8ú|äÚÊÖóD¯n¯U<7n‚W©Òà飌í°Isf "‘©Û¾.(B}{U´¥ ·UøÐ»ØOµÆ¥Wû3µb* E*!&±¤Ú ©87(5˜°ÈÔ~_ŸÖŸÕGlÒÿÐ4z›ß‹îÝê{ÛæÿT£µêúZwyì•îL馈 "3i1Dr¥© ^Y.ó”°Ø’ØÕIÙ^í>ý¢®ŠÒÛìÁ×¼ê”O r¶]¯71WÀu:òOoæÍÔ‡w•ªîý•¢G˜#– Ša"5ÍòѬ`–©U±º»¶·OIÏûm\ÍÛÁH®°cyR·tù϶‚^ÕØœl±œŒÀù®$ùtfÖúœ·ÖÛW–õéûå-¶W¡¥W^`C4'*?ÊØ±{/˜êžÜ»ÀÁUΜåE–ÒJ]-J½âÒ~‡çZÅ,*¤5X§g¥`’|‚•©åðÌØ ÀhÔ§€T££óVǧ½)yz¦ÄóeÏÜ|R´Û˜\׿÷w@tý§/5è† axšåF1¤r†„°å„qd˜:2ƒé³½ÁܤÁìŠòÛh9„û¯†š©ÿåöÚLϪ½Í|r6³âË>ôZ´$ª™¦’f9ÑÚØTC–Rf] HtMˆÎåà¬7%÷oJÎG¥ÞSc›µ}ÅN½ºrê¾æÌ¾ÅßV ‘GˆùÉ9Q’ZÌ9À‘ç&¥9Iijç÷—~ûzxØŒ>ºW Š<¥Ü1Ÿ5…2FéÂB)UÜh+æx»wø.šþ›ï°Ávc,ã¸î £IF9`„ãÜèËÔ`FO1N Ù<‡ïþ÷ð@ÈujA4tîzOeð–Ê¢H5Æ„ç–Ñ–l~þðáwQŽ%[*§‚©€Åñ\dʵþd#cY‘fšˆ4‹é˜ÉÐ\<–¼ZÞ`å¬AßoüIí ÌE7[!ü>6n ^&NÊÚ'nNß‚‹jφ•¨ü•“úÒXKµ&§F•¶4ºÊm9Íì;Š•çfX'Ý}¤ £•„™eÛÖî¾ô ‚œ$ ´ÌvX±Ó0óÕ6 -t ZÞ¾'±ˆåŒ 0,qÁ(~å™í¨M[¹ìLø>FV¸Ž))â X[Å8S$Źb8C¦ˆÈ枎ͩö½²¶Ïjým£¿TÌéLQ¬£®eŸ_{j³5ã±~9:K.Fg ÊïÆ±a£ÆGú£¿ýäõqNùRó9r$‘Ê2j¹Uàä.›QMáuj È9T>QÇd¦c^t;«XÎÍ‘¦»–JÚ3@±ñuŸ÷çtïÖ±²9^k_Uˆë·Øgz„*j ÆQTC¥($ÏyF…ëdF1IL|w­t"éâ]ÑÈ¡ œ:•óÍ “c9I c†I½¦^®êz×,1[O1Á“†Éű猓 ÓàØuÊŽMÏéb`ƒƒ¦…Ñ {Í–&Ú»ãåð(çÍ_<;\óI¤Ê݃ d L„”àr¢ÜaF›§™É¤Õ‘)÷¾pt[GÛ×x&Ø}óßnþûñ‚û~e·ì$ˆÔ(MÒ¢¨ ™"˜+*”eDD¦‡û&‘ñÎÐÜ>=Ü÷ˆì{Dn@çrVà‚ŠTš*I.5CÜ䊧Æ0Ä"Ó¹}ë°‡kbµµÃ¶¶mØÒ4ÌÛ¸¾_Xß/¬ïÖ÷ ›Åz:ã‚ ksÉ•aÞ )r+eNrÕTäIß/,²•íìvó–J9™5ë¾ÜM‘ã¹mQl©\A³ÚžJSÏþÙÝPjÏnÁÃDÉÁ®´ãÑIõSãDËóØ·b˜a©à)(6ÌrF°FLóT!–™Yè²?dð‡9Ð>S ­³ì}pûN·Uý—je§pÏä¹Ëh¿|á«ÑÚg€w’öÐdá€îNòܧ ìoøpºø•;Þܺ¯?×Y Ïç‘ú;ØŠBªï‹7¨iß“±èÏÁ÷çàûsðý9øþü#•½3ÎAåZ&P¦ ›ÑT ªÜ¢SŽyDnôÙ°/|_Õo|k¶¨ð½ÞΜÏq@Ÿ£½:¼«RŠxƈäV(P"F€éÖB¹E†<ß…ÔŽ¹ëänÅFÿzõ p¸c˜W¯ZŸS½ª¿«¾rN¦rìØhäæpº×þ+ÇŽNÍ åù«S9=þ¹Y|àßW·„à­œ$Cc´KF8^(ÏKs1;}ÿ/? ñÙ f§A9w/3púè&œérü¦ˆY‰¹1ˆ»3ΙÉ,¸V*‹áÿØ£Ñ!É£×áæ×׃òͲ¸Y…ÌîW¾{<»ñâ*´ ˜!ðýÔŸÛ®®‘õ#ާÓÓÿyýúââbWþ¹<2ÃÝÑøèu9ÔæŸúiÕÊ“£…»&“±4Ô¿:ýœÈÁtöÉϯ½‚Oð®ØÅ(iàûõµCôŒ)Š‘¾tÿºG½yöSÿ÷Àƒ²h¸Gž–žÂNÏ}+ï鹄º1Ï«÷þ¬ßO8e)Áßë'„ÿŸ½'kêhª­G½[‹Ög´m ÷Åe‘€P‘C¥ø’¼ÀÓ„*XëIý{´VmÕz–ê×¢Ö£jEO´ŠG=ð«~ÚzQý{V«~³ï ‡kmû}ÆŸ$ÙìÎÎÎÎÌÎÌÎî‰D|ìEHf,¶÷È+':ªOËæo Ik¦ŒwWøß£éKð·¤cÉ`x3†ƒG–áz­<²Õx¬CÈÙ’üƒG6mje~®xýþÁ®‹weùZš Un];Ó\ôïUnx¸×š{oÌ'¿¹U>îôš ¿uO÷Å);äMNÇž8”q:¢8þAçömçU¬m³ƒl2ç£ ýÌ–~Òiœ>ã§/w=Ü÷¨µÙF ÃC¢”«zÿð…¨>7ùg Ì„ÅBê“ØåÿO’¡L&ÚÉ¿ä_*àK^ÈÿóxùwSö ŽKˆÁÐcÑñ½#ƒ1Ž77PÌã)ã”Ø °¸ÈX¶ùXœ ×›Id%á:/$ŠƒÙÛ é"ÊTˆ‹áe XÔ˜ùèm±k飱hKGu˜‘¢Ó›j#P(tkª.#‹ü0T ®7‘j%Ó8Á´yè.ã°†$ºv&ÃB7öC!N`䀸¸Po9Ø µäälH;‘ ßNxH€¢ª r"À£m'ä×Úê)i‡±m¨Tl9°J¼0êÝ÷‚rnÊÄ<«*xaAÑá¾XUAu9ôQc¡$ø<6ï<ª“æ`áéG²7îà*³Úl怢ŸÄ’©#ÌÉaáPÉ2 mP„¥Ym"û_Fài8]Êt#R­„)ÓgrÇxô/Î5ÔdêÈ\½µ¾`ð"ü™¢ >9Šx ”d4¸úÖ j‰LàžàéX‘Ïìåƒ6`3=I=i‰Aƒ@§—U'lpCº—΀k<é†dR²~¯´¬)îi1evÓrÆXá¬Se19¬KFmRƒ‡R—-ÉàLA%.FRIjÁLßÅtÝÍÑ9£Ø‡!"‘fx”€`ÄÕÀß>‡únÄ5æ;ÇßBcƒüzŒ¨ j྘DjÌðãÐñ Õ…ÑdL‡ëÈ$=‡­ÎôÖZhÄ÷‘)t+̆ÓŽ¹¬R‹ 1!‹Þ 5E…<.¡ÄGÓ?ÓÓÆF™˜(¼±C¸…ö}Ñ#h†<_ôƒ½?‡9*#ÖµsM†tÍ?Fú‚õé¬:»Ri¶T…Ø—ÊúˆöÎ 5àÀHœÔÓˆÆQÞ Uèè…Vƒa„zf1º(LSÆì \üˆÚ9ÀR‚Ó€bÙ-½'@c­¶šÐó¼9Uе o±D¸vP´#k?³Ž$:\Ø@š×Ž =Æhå ­’t®s„Ò‡.sfDv‘PŽ’m&5„7ŒÓ6F+émbÆþZUÄ©N o¤9YšT/g£@æ*ÚØW1gêÕ¶Ž©/¶Ip´êc6êH‹ 7Ù…wŠa”·ÕL˜`ÍÕôúê zƒ±ÑZçŒë5ì€#\õ(þšjŸAyzF+@ž‡‚huä\/¿,GýÏŽÍ.xV-~Nkª` gMI寡ø4Ãt×f-oªÔGr…Ù‹ˆŸPìg×HChI=áB Í"qµÉPG]4⪚¡ÌøéÊÕ&Ì{j%©6.¦¬~« A­…«iÈ6¶f•Bë9tÓ©ÒÔ#×P 7°;©Wë¬ë™j5XüèÛ }’éoþ<ªŽ¿ÊD-³Õè Â¢}¶YON4¬&5áõ«a&R῞INôj¶hHàèd]Xõœ®l¢0qª²UúKãdå'Ê 2èj S½1x¡þÙa+6 ßZA ?¸ŠÅ•Y+ÉjìÎØsª]1Xç6EÎtJ'ødbI&ܘLEÈkÈ“/+9ŽÐjW6jBOEœ©x1e%×Tf‰‰hÔtÄXe0N”)z87‚’¨²¶…5[3Qf*¼Lã­_­¾–HQÖS©CÐΘ9GjÜ«ÝNTÕ-«4°)FÕ¦²gw±ÄÏ&¯ìÀŸ„ÑÑ2®€/ä ¥ ®@H; uã ¯S êG…HÅ ¹@ì àòÖ-õc*ÑQ)©\$ç*$\…\Ȉ¤õ!#¬;¹©.«Nâæ y5pðùR„¤@ á;¥Â‰ÍUÕ7jªX ®ÞÂ5"©4|5_%•Ép5¡ˆÅZ¡ZHh¥™è©¦°®{ëï !ÏØ£OŪÀÄÞ±ÊÄØ~ñ1Á!þiA͘âk8Ú¥m83þHƒ‰ðññ¡–)ÊY¨WÊ D™IÁ€Ò ÔZ‰VD(øjèV çËTRJ SHqíß–ñêGÜŽñÌÏŠñF®†0X3Îò\ýH4œçÊ ÕÀÍíL N‚æ¥ÃeÌ:Z‡–UR• ¦$èxhUJ©Öª™ˆ[-hU¥’ƒ¨Ï¶ÜÀ`ƒ1“âbLÈçó±X5°#j"-£€ò„ÉþGM¸(jIC Áé66°qh—†Ýº€(13´–tpOü¨´G5޲5$ŠÛ¨¬íçàz Üÿƒ†Ôf¢«m"(‹Ž‰îâƒÅ„“s ¥¦Ò„b<£7œ> À'ædêÒûd< eöª 2 FÊ·ì 3è“ègYìhNÙmzƒ…‹¥ËS—ê?‰Q¸X¸^íÃÅ$¨‚ëGê`ŽbÑf%µêŒ»Éùã 'Ù„ï˜h”yC¢COwÀÔÄOƒÙ ¶ÇúDSsQ×½Ôšj{®ÉáÙÌüQ£F«“Ý ÛÓQ€õ…tx²6(0zu@ÇXmã3¨“¼Ïè€(!I´8JåK­@#keRµŒ©"­Jª¨: êÜYŠçzeAýFôßfõ1¿X}^¬>Û;^,<ÿ ™½ËÂÉ5‡Y\(äÿ.wÓü7—ÓheB‘J¤JÔZBÎWñ ™L¤UËä¸D.ábf­j‡þ©OÌU‹ÚÕ’%ô?zfîIç?PÎ!Ú+OÔF&G#E#yöç¿øb>:ÿ!bÿ ùÒç?žÇK‹ËÕ|¹L¬Å…Z©H,—Éäb.S‰B¡åk^œú<ÿ…§¤àUyY)¸ñÏ=ÿ)• íä_ò/ðE/äÿ¹œÿBÉrŽipôüû¨95’èl¿8—׃a¤êÙLZ³Þä|®@&â ø²zÒ§$U}<ì7¡\‚P£ ®zQÖ@áÏHᢔ2‰„+)¸…Ô.…ëÏ?ÿi»f *AóÙË?¬õBö*ù£óŸR™ì…üÿ5ç¿ë\\\Kš¾%—Ûï?o¯¨úöQº5+QÓGÔYÙÁMúÍÙ«W¹i^J呯¢UíB ƒ/{õïßßÓË+(,lÊñÜ6ås†ø”ì™å‘zq_'eŸ>S‡¶jÛ¶|„¬ÏqñÒ‰ñ­§ LÌŠ¿*œ¢G&{­½GT‡üÎæFwjG¦E#w¦˜Óh{ Ü…1Á“[¹å7îбã¹uóW«_ßf==5ÿhùÉ2"ïWwpk ÀÒ´‹9 “ïlx/·Ý;òŠïÝ8/qÄó÷g‡&$|^y»{Ÿé?-™üæˆiÂ_ß[T–Ê[˜uçă“õ€ˆ£^§ðÿNäææVZ‘V:O"ûÈ¿£Ï)-Ý¥ÅÇŽuì;×çhAöý[ä­K‡—K~ØòNÖ°’‚äk¹§Û·Ï Ë9ûÍêÂmÇרoü~óÀyxŸöÕæ]|;”ÌèZò*oËõ®á;?r‹öì°¹ìîÕ㛵ï9|ßg‚{çgô²(;z¿}ùhÆÿïñèOËó†¼Ñ|âKîvvùiÇ"å°a]6¾üAìò(|Û„f3Ãz\¿~½øÊê¢é&4vy73S¡ƒED­V);t]Cìíèò.A¼5©¥û¤Õ…÷›»,>”Ìu+y<µwz¤ Öô¥´k''¾6,ÃuFà}Ïa™Ü:ŒZŸð8+þm·Âß.º—ï^”ÛwîÒU«Ví¹2ò‡k2˜‘ì9ª×Þ¾8²ð!Œ0,2r'p ®ÕNr{gÀéµ¥s¼_?;¹kïÜüƹǷdІeœ}Ùåݘ˜v…îÜ+»3Ðrçî»»º¸ËôÊQ£|¬|ÿe—Ak5ͤ)''”Η©9¸äÞµg,%Eå€E9s|†6—Édårrr€9\\”FMZ‰ï_I^‘X”-O¯ì¼0û>Ùã­·¶îßõÚÕ/ssƒ–D/NÿµbÚkÔM²ý–´oa€ûÐÍ–­G¿¸Ætámoð]Ѐ ï{5.>þ,ð×ö“ßœ¿¥ð«Ó•YÝ9œó%m¥HÄ8÷oè%}GwïÁƒí´^]pç¤÷©ˆE]Æ×´Y³­î†-ã²ܹ4l¾¦P§Óñ3®ˆ—ž)ÛK[:ïå±cÇB[õ±¼„ãEcÇÎ’œ&'&&–7w&ûAË‘e«vùW¬kr£ù>phJC6]ßžÝüç‹J€‰Ro_ŽˆÝºus-}wÒ´i‘˲²\“í[Ô«ëÃû·ÇÏŸï¾tÙ2AzåiWÑãG~Ú [òx¼ & ?¹ž”›/FÌ*+ûôT˜õwù6$gaʉ'^¿yóp€>£haQQQeöò¨/¢ãâ¾}õìYW¾H4r}¿ÔÔÞ%)›ûn‰7hÜ·ßòó†|ßN¯×¯X¹râ{¹Κ5«bIeyþÍžv.ïfdÈa <¤pL'˜²ÏFK÷/ ˜ºc‡²GË?pݸ`ãâÅ.0ä­!Ïçð“×eú!Ë~Î[¹²[ÓÞ³Ê2Ö1¸2‚µûðáö …¨íêòï‹+ÖN‹èüóþ/\]Œééeiù‰Güýßè"óðX~(»´üðØ ‚Q’ŽÜAìÞV£ÛÖ¨µÿð[e7Ž«gœ]SòæHË ùy¨¸{ÿþй>CÛ¸¹M%íÇ‚¶æ‹û¾¿°%00p“éÂ{ËÎk5ñ•¬Ôôô’s;§Zƒ¢¬VÉGS§ÎïRÌ_Ñ#º€Ò•=–¶í:ü³gîÑìÞ»wûfëý -|ð»ãùÍ´c×®ŠÛ›¶Oj¹ýëøofΚ5~Á‚Îyï÷õ¡ì£G¦—hÓxÌoæ"pöòåòò¸å×~9´,ãúÖ&ÓùÎûqub/Ý™Â.å›­ãssßZºtéõŸÝvê”{EEÅF]¯´«ƒÆÜ¿´\n½Üá½¾}?ž9óbïÉ•¬œiÓv63çμo_Ä–•ù÷.ÌMœ·¥°ý31ÙnXÖíøM›6 ÿáS¯Íe}f¼é­²–&½]¶Ä>:ÄQ?9v)Zún­È…;нú+•¯Ì Ë¨•²åWJzaet³fÄÚµk× Z³÷ _P›èMŽŸœ—3´yùòŒYó>þ:®ê ë†A¥»»ié”in¥»KºADº»KénTº‘éézgëuûœç<Ïû`ïß̬Yëkfï7䔹-††âr—†††øC*ÄèÊàiŠ* €@Lœ ]¬¢{ÿ8jh ÷ú£”ÚBîÃÁA·¡ÑZDii¼gÕ©_¿~uõôˆ–Ûán,çù+=ds”î._”kÕ।ô¹_¯ÙºoDcì, (ok×£ùÞîb+¦»WIÞ)$ŸàĶˆ‡nå9½gm›ÅCýy‰Ø2'‰hÝýèãöÈ·Ñ·oIHýZñ|¯×p‚‚ÜëçùXõ~J6Ø’èÔÆ’ÃËÈ|’zΤw‹×~v£QV|Èþ/På5"ªÚ#z”D2‚**pô½O)Z¯×ÅXX_8ÑÑm¯ÿ ËÓ®­³ê+.-}u0÷‘ÏI*û Þñ },xÐð¿Yn;: V[Nëß_oȺ{ lø=n³ ÞYûÍ-è4ü¸Ùt„áx9^WfyùFæ{@S'!4.î–VóÖr=¦„Rjð’g¾d}±\Ç }–, 4ëñÊlà÷çF6Kõd¯^½É‡g>uzôÆebÎQ.ÎQ/­qÚöÊ$‰<9I„á óGáVP#›ò>6jlâ3ì w¼ñ¯®ÁØÎ\ŒENÞY!y—!샂¬}5×ÝM<˜tÜå÷øJ²ê’Ãþÿy†ŠªjpUht^ʲç>Fëý™áx@ªgJ ÍÉ™c@` Â·+•NÙM»|\®Çí¿|Ñ m(÷gÇÀˆË1ú›E¦ëŒŒ¿µê,ÉÚïŽàÓ3lj »èåS©—ÃRÓÌÌÉÙÆò$ïò ·¸õÔF»»‘ß$=_ìLiz€÷æ²Eù@X]æø‹ô‰¬+ÏE¡¶†ïàh•Háut^Ö¼±¢é@&h®ÿ$¯¥•,^1Ãé©_0±+òùÈ"Å쓸1‹ë_Uœïwzª…_ó‚Ì·ñ¹É€ÔÆõ)ŒûÅt,Þ Ôk##˜Ö¶ ÚÑ›ó_l<1|üˇ‹¤Ç­ß`23cæÚ}psszYJ†éÛ¢ªkêëƒÄr&Ä!¢&ä? —)-Ý5±Pã°á x¡NtÆduϰ>WCžÆþû h튬ÕÐÿI;Ì®_ßR’ùœ¨_ZÕõ¼ÁgÏm™£ 3 ²•ÎÄ|,r ^Æ}OæSŒ‚ðñé~=ÓÛ‘‹ßå¬óñá¸v¡vì²z|€Qåv/XbvÿI×âhuã£Å¬Ó»ãp@2ZC)çðCÃý,oÔq•¹®|ˆÏV!qùîüo:–Ïee9ä3nýÚ÷m «a`Qa´PÚUeMgÔRY󺧃҅{zKy±™È£û³<é* ¿¨ÄÉÕ…Ð>0Ü‚* ùWæÚár] ª€’fóreÚñ©]RòoNikã üòón_Ô©ã $9!ìߪ®È®­%T+ò,zÅ Ÿ§2vކ ÿÖlÐHyùÁÑ ¯%—$I-þ!kþ{†&÷µ`;(¨·QQÀ{’•ßí¹­Ó3Ž…ª×à‰ ;úwV€ÊáÐ ×Ãé4(È;QüîOi{R[ª¿MÂrsq]Í~„ºÂ%ihm…­¬üß÷¹Y1Q­è‘l}£àúñN“ÍÝ>¹u$CÈ¥ 9[oIpÇ|ÿÏŸ˜**þÃÂ…äðô¬I=Ó jcgT‡Br}\èÓ N2‡™P ™Ò€’ˆ‚‰Ö¤¼’Ð4ž¯/ɯ™|ŽrŽÛq¶9Ù·ü|B¹B}ý‘[ú¸ÿ‰«eND„¶àù¶nã§h2¿ôaŸ€>–´Þ½3«ÇǰNç…ªD¯®o›³|R²c¤ƒåþ«œ ƒþ‘ú+{ëMÛ39ùùˆ: #I,ËÆI¦_˜˜†€AÌC*4ØŸ,R‹ŒÑTVrÏŠW`a¯è5m:ÿj1ÁoG}w#¡¯ßª6ÈŠ(è‹ÍÊðUL•RÐHTáÞÚ2gÞ3x6Ùyòý_7ù›°Îxuurò)_IU- ë­SFâ¸< ŒbÜ– <é‰Öë·isÌ×;ïýÎ؃àøÀßawPAÑèûÞPiÖñäƒbd$ ¦ÍÔ¿Û¥%çÏþ¡!d _f~E p þ·:q†;ß~ ˆ§{Um1YvLïÊGÛ·¸ˆl×ñ@Ûc(´ºóa2wC·M;*›RަÚÿh©ÿ«™ßZÇ“P0k{òÔºÿ”`žÔ$hÀè†ðÝ^ÚüÂÜåã+ g­uo´{ùV¨UÔ%­0WHœÈò€DæË‹+8¡wà(Ÿ6wkØ Ù²*Z굩éëÈËgÇ;UÛ.}Áå!À}ã¤Yi©ðîÝ;÷Ó>¼ã}ü{’€cXÆëp‚Ìzm¿ Íätᓌw/KÑ´‡»;§×Bs3?¤ü“½‹K_–²–V±—ÏB½ þ+sy«/š·­¨]ú¯#;ŸÑÚÊÑz1£”Ì[#ÒÙ’Î Ä÷ÄÍŠ÷¹Bo_Ÿx§Œ¢bH[›P¡bF©—Ïh¦>»±Äÿý$œh©Îƒ_ik»»A~O:é*”r˜NÛ#Á <ÝÝÝÕ&1R“ÚCCCÕV³,Îû3(™™™ÉÂ>ü–VV.UO'=hðˆˆEEtí—:KçÀÍ3ˆEóöñ4¹¦ff(©©_@­nl–iV-;è@]ŸŠœ^.ØQñóúúúj5;3¬¯¯CAõõõÙÛÛÌÈÈP1~ÚÍB¹¾½5ž)½'è~Bž››køþ}è§Oè€ab£+™áQP‚«ªX[ð~¼Ù>9?li˜©Ð™Ý굸ýÙ—ò#AaÖkÆ~?’ÞG%]í²¯q0W“§²sºè4 xbYæÍ›i2Ÿ 05žù§ß?â!ϼ¨òƒÝÙÙy‚СbCY" K_Í?¥¦F€M¤&}?šÙ·`×QáåsºÞw}>:¶¤%óÜü_  ©}ØŒôNÌpU§{¾ÎÁSèˆ.Ë›2((ˆÓË+\‚’š––»x?`ìÄ„jíþæ¼y H) WL\Ü¥Êìý{¤rx˺æq_ Šâ†5_”%‹OÄ`1àæÈãd‚ðXàÁk6ú£±* :lÿÌŽ’ Äøüù³sl,™ËÁBƒÒ/ $U˜œ„Ñö`é:•5­­ºn™…¤<‚Júú™G§þÏá^„Kä (öì7NòÙ¹]}åÓ¾½J¹ÜË2Xú·‘Ñ«¬–×iUõðú¹ØéÏ—’4/_"åää4è5;7™'´¬Tèð|7åX2iõ±Éc£k‚ïïÌ™]®vº?\ÌŽ)‘lƒ.®¬ ËyŠJuË?Se«©ï5VeСS™ç÷ô=étez"nnn£¡uÀ‹õ1!ám|ì¾™™Y×ìløS}}=ú h¨±:«Yó¬ÿßý”ŽFH‘¸‡b\•Þ¸[[ë,ÇDZµµœKþüÑ©“+h¾+))ÙIqtz˜èp4Wc’·¡ßäXéRº‚²OôàÙzÜñD*,<ÿ¶öñþ\Iðv'ä+Ðý/D?’Ãó:¬¿%êp8ϵÄ~y¸0[|5ä4* Òjcg—ï†Òù°,,, i]þîᡦ¾¾ï¬ Œhgš]{ø»oæ]““X`½Í `’§½XJø.‹Öë½á°q988ì÷¦Z/ç­}š.>ÆÔÒÖcIÚD†‚R×ÐX¾àOå8n ŒŠBÖmvFÈ“ŠîŽÀy™ºx©¸­Ûáë9ª ²LïÖ_M]ÙܬˆÏf˜ÃföóVC@ú×G€`ˆN[C‚‚‚A€Ã!À——wäÕͳâMå¼7%{rr‚n>”Lñ}ÓqÉ …Ë[WMj(™]üäò·µ­-,c÷’HÄ·uuu•àÀ¢ÃÂý½7ôëøiR^êÊ sÇ&Ýd!¯úÕÃCæÆ¦&„ÉB¬½½=ç*¿«%·€––tttòrE@Qc~O-úñ›ŽM'ýDvÌ ˆŒŒd³˜ ÎùãáËÈ–!Ѐµƒòè¶ò©4ß.z¾m×5’g²*èîÉ_÷“Oøáš7HqEËŸ`·Ç¾½Wz ÅbÐåw¿AÖü0<4dˆL6.¿É?ß’øø@C™Ë]“ö·øÝ”„ÏFäÞž8Ë›£rº;ÕËá÷w °ìçÁÁÁßüèÏf>„_3hÉ®Öô—qzßþ}#56ãPV 8$±"Ë:Ž„OW§óVU¢”qó1È&ÝwTyùìM•PjÌz:’¼ OÐcó¹E³wr JK{¾¸D(ëO¨7-¥¥À_JþN]¡ß†æá±y}:`aœäˆ$--}XªÁÇçp¾ÎFk¸íUÂ>yç|`*!ŒéWkHsp}ñKÒ,Pñ‹‹Rö“lSSB®NNCC©À(. €ÏÜwíý+&RÒ­f#¿ß±û=šÀÃÛcµS¾·H‰9n÷ÚMÜ´ú”eàvFø%iPEC#hò%'>>3^7$˜ÍFß6 ó›Ç¹¹í]êB##…ZÛ2Ö‘ñð¼›ç»6ûMZ¤FIÆýkÜ9øÎ·lDeÂèoFñkÞPpX²°ÌW4UTµ;”MDO10Œ/ï‘åÿÞ­/)Sãš_¹MŒã?:Š9¹tõËhmM_ÝÝEFC“vwçuŒÀÅHáü«šLUëm…B15¼»|—#:Õ¿W$­?<ßÞÜ|”¨,Mt ¾wTT„—›ý¬¯ï­2ý#ª;óðÚÑ@7ºëkÞž¥% `XNÎ&–¯Nü[Zžƒ¡ÖöæïÇÂÿ—sWy÷.MdÑ_6–œ¿9~n}\—w®³« VTô V^+)™@ÏR)æëË''W ´?ˆÚ—/ê||x}} ô %rã‡ïml<¨zBBC'£wß±œœŽÃ ¶·Wžœ9†ÑI¢Ç­ýëÐnlĺ‰æ¯.¹‘Y;áacÞ_ŸVx¢F÷#OOkWÖCµ·OWx [¦¬{%§ Ø;”l à‡MM©×¼ùÀ­© ÙŽ¼7xǶtðÏ""Ë”uuƒss±q-Å3±ñ4×ö¦)ÓSüS;½{ùíë×ÿZUÁEEñG£·¯fga@„x¤ àÎò/ê˜#Y£ÝýÑ5Ž›NÌ{M9hh"÷l˜˜˜äðË1%iy_'äðÆÔ5uòÚ^ÿ÷.@aÿ³CX$$”ÅŽyCªx> ‘RŸ[ì0½Ÿ$ _ærçP?BÑÑÑð;—Y‘“à°ý%ÂBÒÙ¹vÎl'8 A¡ A'ö+¶:jy¯õõ ""ãÒ‚ƒq±€Áù>Ê*mS¡Ú[WGÉÍ\¢Šýýgš×7Mݳ³8ÂÂ,鉲W}òcÛtH'Ч !BQ±þz3iWЧ ';›7ƒiccnL,³FǨòÎ_¿P ‹B~mš/BIõ|¬ ’gh8zŸðxÏà` PaÀáþÚ ¯æô´ ¯+Š×- 0M;c]ÐhBS0ìì˜È$ó8ÀWô²Ä‰JßÜl6CegçŽ?,.ªbãj짤¤t Êâ-_߸‹K0פý­`‚¶‹}4“µîŒ¹Ž'ç£ÅVó"czziã\y¼!`³ƒ»»å€nøÆ’'ãMwMÎ4$ý;¢ï½¼ÿð0Ç«7èd¬’Þ­Ø @¨ˆ+06¦æy–nÏË?¦G»®]!êà@cú•ã÷¦…˜5$ž¶¶|ŽŽr*êSÎÅ ’m¯'/ú+ž{{ëZX°œ%`ÄÁÿõq/_–u}„Žôz(kå²ÍÊVº`‚\¨MoH¦àFFîs¨\Ü­Å_H ’ŸdZ1>“ÿíœÖ‹rluæ4óã(füì\뙇¢c…%"zóç(J4°Z1–ôQŠG,J»²µ¸îfþù»ù8þwïh¾ÿ`°™âüÕ×G *ÑQÚ0ûRéPé}PˆgÏò²voE®Æ×4¡¿P[ÌlЧ¡±•,ü`4n …”ÔZ4ƒÂEÞû¯*šE 0À)cìÆÎÍI£ƒ¤B÷Fï ªç‰Àl–¾BÑ3–ö†cí†Å&?ÜöhÕ~Àù øí=¤ƒZSƒ¡3/ÑÔ8GÅqvùd3m‰R•"^/T^Ãs£°­ÃÍŽãëW9g!—Ú<çt üX¿'Ô“+»û÷¯?YÛTÌïM„ÉÄþkñEihh À¢ÜbCŒu<šu¼“†ú÷¸ÔÔÙÚjÚÚМ„Ð##õðHçÓ VˆHç¢îîÒ—ÅJ…Ý[Šàx¬?Áž÷­õ¨¦óÆ¡Öi-=``Que‹bþ9^IñK’)ÊÏ/UùDŸ@ù²ìÇ;GÇʼÜ\†Š¢"µYyvvöz"Û6`SS윯ª ?~àRPd6£ÓqN!QPèƒ)þ.Õþ'±£"UKú?QdQ02—i*M ¬ØI1ÏVÌ8oÊA5Ùf{sp;þJ¯Ù݉¾#ÎÐp’”5Ô õÆïÈôØŒ2ÔÂaÑÑtÝÇ{fe?Å¿W¤­×žŽVRûšgiïlSpé{úmÖ'Í»o1ÃÑÄÄÛ rž|M%¤"þfRU‡pÐká±"¾„MM2ò_€dÂÆyû¬±n%J"÷!øcÞó4/º¤—ö[C\ÄÂå‡~ñÉÉ(Vv'a-îV$¤–}¿ƵÓ'Xšš'’3W@-—Qbóô¤˜˜Dryè.¯`Æ >ðɨ£rhvá«ê‰És,^ú× Ùßò}…€9®%ÿ É€p:ÁœÅ Pš¿kq‘¸—%íO”ô£©YÂNwšx(K^®Ør±Çéj—‘½k=¨Ë÷?­axç_¡ïîJ*Ó«³ñðˆf·½÷qod¥Æ´ùÔCóãGпÛå·oCß$9’'à.&O|‰îíµžš.qþ8<<ü)ám@U‡/ÆsX犊„935"|þ)K”ÏñNÿA b‘LXQ(JÊ{t,*Qkkž?»XC%Ô„ rééªKˆ¾“å{EšÓ¬²,q׋Ò¿ƒ‚o¾’¤<û+¦.ÁdHæà¼ÎÃX=°Ž¬f[‘šL[¤¬B!ÝáKf4S®5”|Z=—ôÚ&Ì_až¹¢?ŽJ2ÿç ߇™ÅCQQÝwrX ¹8Wmï|°Ãèš"¡ËΑ_„'V1ÃIð{êI§›”ÏTâoqªì—ÚÁ.Ú Bù]¥Y\ûkSžÚ:ò­+ ÿŠŽ&Š©õœG•ôËV .Œ <$ó—Ò¢zBYAɤ Ø÷« ›*ïÏÀñ]Pqïw “U¼{2ƒ0¿çŸ“÷~Äê-7X‰› bÿ8®Á» à·÷Uk·–ZZÉ=+w6Ûù²ÏÑÇ-·®®­Í•›$%jl´¯³{¹2õærcbÿŽÉΆNæ´€²´Jàõ¹-­|.T 341 o÷ tŽôúsbÇaMcùRC—§Pâ†Ó³½PÊÿ¥&â§ÔÔÐ|j°a'ÛY²€Å€ ä¡ok!kv»’–"35a¥ã€ÿw£€ÙÕéÕ*ÈjšÊ:eÖgDC€ ŒìüŽW }Ï~ØZÏ;Ó)Ú;+xõbp‡cÒ)æ¬2… ‚™«b¾ìÞî<½ýRÓÓúáG;[Ùx,¦9ÕŸ^¢~îZýBiè~‹@äSU;'ô)®8ÆZýmY©W÷`^[ææž§YõZKgßÝ΂ëöâÞ®•ý¨Oy»š®Îþê¥ÅÖëÞp眕§ÿ¡©²›O*ô@横¢²èY[ï#ÖmM,/Ç„úXT„2t ,ÙóÏ,²C1ο®X×}}ïÑSÂKôÐ,,—ͯ.Vx]w×—ö^~÷¾?e±^öȳšg‡åî/hnFÝ13Í4=øå„ñë×ìÚªa ÿsq "" ñæî•ŽÀ93L.33fUUǸdúI.¾v{ "Ä`D@¿;¿^¡£ ¢G}ÿ%xòšMW—·9êO|T¼ò5¬Èã-4çŠÉ¸â?} – ª&6 È4§´Ùã\/تÙ]/†#76 xÝÙpêš·ú :‘`hRã$Ù)ʺ:9°köGº´#ƒ½¿¾Í~JÓŠÚI†z9,b/H؇?ÇíøuPHýc‘éç9çd r¦¸¦íhùøà¸¸RQ÷"ÅÅ=&s½ÄP¹³¼„FÂÏ¦Ç µ:ȺahcΠFŠÝ‚MÙ,’†W¦N˜.àä«þk}5›øñ²(>;eÀpäsóÚ9v+†@“•{UFèï¨ûé>úÞ2ýv„!&±A']Æá€#…—RWG_\J›uΚç‰ì …aý!îHF›mÊŒ©•ë/…õÂÒ î²ÆFÄØ¢%-á{LDÄŸkkkaÐÏÅ였¨”"ᬤΈ¢÷r¦ `D"¥Ñ³ s=|gGqgIÞçÖY €!Óde22òßËJeÀõèe¥ª¹x0OÏ8DÇÝšÜz0ÿc1ž«w}³Ïë°îwlÌÀá‹l=;˜t^cgÀJ–¸h¨XÝÒùøht«Ï”ƒñ¥•ã7.§¯s‘ß芃,&&¶FÇÁ «íŽ”mÐÞÆ}B—÷÷Xþ;>§Û®Jx/ ¦îno‰ÊëGu™\¥,?“™ò5ˆþ¬¤ˆc¯¶È¡Io é -˜ká!PµþH „•E'"‚ïmô›Á°à|–?á ¤œ?݄Ù)?""£áû÷Ñ;;äög šƒ€êŠ +ÐøKÁß?«˜Ü €È"YYŽ/ ÓÝÝÄ$ÀìH 'ï ^³v~Äyy¹:”‚ šÎ•š–û§­¾÷Θ™ºúw".VRÁÆ—é¿Z“£ DEù3š#®ÝÀDðÔÄÄ­™áؼáy¼¿¸o\RY)îé ÑÓzyÝ@Í——3¡ü2L õû³³†& 0™E˜¯^ÊnØ)&øèÎÚúôˆeœ$ûÑeI¾b†¤,ÅG,íúwØÕ¼Ìãsû‚hšS9wáÇ0sÏxž¦ýïï8½oâ² Pß¿×ùsL‘œ ¡ ûÚ”‡S¸ŒŒ¿e†­8+]F‹©ã|¸TØ ¤5K¾Nõfƒã^ß{!`¶Ð[ˆ9 ­wl+ ªúÇóæ Ì¯Ž•D×ô|²~:œ8w‹ùx𕨫ß1Ö7ªVçj8A¨Ö£º{جµxaQËÊÚæÌ&þª´|;ž«´8¹ó¸”wÏ^/ضÊ?ì„÷¦½™ãF'jyŠòz=RÖ8I  Gúß’6¯x‡ë3@Úè€%Öz¨ØŒ%^5þ¡\ÆÕÀG:FWTWèjÀÓžW¨ÝÕFzìÎxêoxµñ7wô§ÿK‘`YÄ•!þù3#Tt´´löûÑ×î|áºuFwF…P½.‡$¯Ž|!»&±;¯M£˜ÕÑZ÷`÷ù³iu]X–ðü_t’‚–1N¬Úáº5Ÿ8]˜Í“ûÞOz€&^„  …æåEÏ™©žÿí¨X¢¨FGEQ.§þ¼Iúͧ  ÷Ý€”j62£k߯VSÞψ¡¿¸¿?·‚Ä#ÈeWÍȈ•D®¯Ý'É ·¹ ¡£îlQ£ÿÈÃÆÆ“mQtû]U–õuU‡Õ׈`êˆ#¯ éI}jᤢvPíìÞ× æ/üÝçoÚù…[⨅b`hRfœ¶w®…X¨ à¡ŠŸ¹9ûr²?úNÖÞT;l”áó×–Ím~‚Š®¢Àè|Ô+¯% at¶•þдû÷/_5 úþz¿ŠšXÐÀÅEîÏI˜4鮿4Ù¡ÿ˜2kÍ›ü¿.BåNãÿ’ÃBÔ˜Ç@5;Ÿn žhp8mÑRÓm>=6üš %CÚ@ˆ r­°2±`2bJ96**7>/6ðR`j/Órâe‹ËÔÖ¦J!¤×2’—ý €TìQ8»IîXÓ«¢Üó±iiÐY"YÁ¹¹rP —iq2Þ ÍXû¥A¾ß^„õEÒÞ_·C²!Ä%¼ ÝÃáÿÑ<¨m³ A5Aç𵬃-R2èÉØ®±š…Ò:WÍOðTÂ.Št ÚÖ8iNÿ/1ONªw¤Uª¢§W´Ï“—1‘O"„pÎÖÕ8i©rÑ¡ãÑ·HñµˆtŒîE1YÜXµGM] ©;¹Älk#xt :u^¡†•ý!äªÄq]n«nLqñkÁSÎþ˜hs¿öú>È2£tÞ¾%Œá¯®mo"§Æ‰õí,¾Kž9%ÕÃx^¨ÈÁAyKaqÅ[JÆ=ƒd~xóÑœbÌw6˜.¦M…ê•®­-@ܱ7Ã<›,?_(RO™‰Lh¨ˆÈ2û{÷TÛ› :Ý=ùsüžF‘ss èý(fH°$ö&pM8ZÂËVµ€Tr¬”x¨kpppÓM*ÿßÃxÁÿšùÚ¨þþϤìPZÌûo(%%¯ååéF Œ(Ǧ³ÊKäLB"uIç÷„Ñ#ñÌ¢Sñʦ ÿC`˜¥¥{Õ^W0§¤ó»àèë+âóT¢õÇ#…÷JœÉÿ½¯Ë!ÿ?Pµzìû óÇÊd*5¦ª8*•4‹¸}5]ûý™GÍŠçì&ýRs¤Œ ·õ ZÚÚ«ë}±`γ! \J ÑÏÞê÷+U,;—— ÇÇ3ŸùcPQ¢ã¶0M‡\+uÙg½èN ¼_XrçÖ>ádúÏ·w°·@ÕâS¦~±Ž°ãðÐ>öž\uÒ ¯öp¾«àÓRSP Å ÕCîxtøR@ÒÕøéñûãÍTêc²¥‘QL(ê@ kƒ‘ÄU1¨ZñPU•…¿ÞJoíÀú%ð̹ãð~NOÕ\Ã1¦ `:›Å”|*çÇIè‹@ˆ˜«Ë(L…¦û'ž¿®È_=V7¼ï Pã~? Ĉ˜î¢1…$?c¬gk虣G|UZZÚZY­ÉŸ}]‚ñ‡ÿï&Àœ-@²×à™l<Û£¤ï ·@}ïO©áóq`Vµrà‹'™ýÅýââbIKKÛ< …ÝÝ`À öŽ_%g+!í—2®‹=x+«75ƒ…ÜêúúÅÅ~Wd_Ð"ôP ’!÷Óx²>ªzì×Ò ¼¤¦c >>cWSV'†d’›uDáì|píè( ¢„±¨ºNÖ–V76(A°†s•‹«}¼žAnºBzÂþ9É|N¼°h¨X-œ&™çÈào3Æ`ûúgÂ3ø(<<¯ øâó4ñnMƒ>£›³û˃ŽÕß½%PSs?â ð\/˜GuÞ¥l„ÓåV[NK`”RZúüŸM0M&×ö6Çi¾b×0pÁjEÕæÃП²¶Ö)ÞLoŽT$1N2H:[ ×i?H©jÑn;%/&F ŠjqÞŽ–ƒã£Sr‰l99í2)qˆdd8ˆ¹(::ɃÝïí¤•?Ü6ž8 Lq Xrë©! ‚¨ú¿8þ«úÛ7©,á ¶ŸêŸLM?‹°¤¢ú¹Ló¸‚HjthCwô«;­- Ÿª-¼ ž](õæ£à˜xêÿBKé4ü“äáêòé¨wW'ö@">¯³_Sô~¸È‘šÌÕÕ=øô¥=1ñ>$q> ¸ =w§”ì<Ìê°ÉÉ¡E@ ©UgÉêûpÁÔÝãScØõA1¡ùd/€¥¤¡i¯-DÂûš£\¼ú¿yï2†³ˆ¾û‘ºÆÏÓýªW½,ÁÈZŽŽ¨Æ&I;¤:ïÞNäC'H¾8,žýý›Œ|ïNø:,ìD\>êЪl†¯é{8xAµþø,¹´ éÞ^-E;ÛÇ2ˆaK»ÿçB«Ù²¤ºä?ãmÆëon%ætÄ‚m¥Ñ‚«1q2*ª<™+÷»Ëw÷†JSA–Ä|Ž0@-ööPÒaƒø­æ„6“ÓJõt×ä•-Ù…œs#¹­Cº…DxÑhÂîÏŽŽbŒ“Ìd u”òõÖ¼ó¢k(é=Sù‹±Æ•(‰u§­á‚„’é Ý&¼§›Q jêûÈèW»•åsfƒ—¯ T{ žÖGrÍ¿1‰z·ºÞNù?g(ê÷_cýŸ21ª®Y5Ä\¸òx·@žôüˆ5é‚»vÒ°Ç \Â)£Ä:ó ¨~ý!Qà)€{Y;^Æ ) .>£¤DQ½FødQÕÞí ð‹ÿm"<ØIØqlðù-#J‘á¸PÜ ŽV½5ÚLe´¸³3÷å¯Ix¤sŒ¦ÈÞLÐr‰–ú˜ Y–‘ô—èB.š¿¸ô7‰Ê'~ÿkŠ¿_²¼@¯“xPöº‘”ÊšÛ¬-Äcé%yÀ!ß½Þ‡GÿÖd¹5sg.nxø8)#ƒ„Ôë€Ý7p)çí:°úÖ‹Ï äh 3Sqg¥ãUÚqÈÜ|có|ÃN²NCfÏýMÇê·ÑÌîdv• u¾”æ|j‚eß» ËZ=ž:k-ÄÎ-U!ç¨ÌF3#µªWy€¾ë¿¿™Œƒã¹uÿË®ÿÇ\½–Û½¿RAZÓ±eïs:ÈÉÉÃÝ FËÙ?¿tAU0÷€ =ž¹éì|Óȹ‚ä¨óíѼ÷£™ÆI¢° aíOsågÿÓ©ËÛê{¸skßORamûCòxÿ !*Šp+ËïÑ9RœŒòõÌN³ Üé¯÷yÀ:—ëÞßßó‡é%âCp‰¸¨ã¶+¢R…çÙzŽ—’ÌŠ=¾¯þA…ª§¢ýc¸L£0QSË{]¥ ¢ê·Z®§X¶?Y„‚F¹Øs æ<19‰AHù?¿öãw¨é)zµ\Y(äÅB)pÇÿã "-x&ãöâE#×¼4ð_‚÷~ÊoßÂAU×Ö~üö E£<9l­§%ÜÀô™ªÚ9›Ï­ÔwÓÙÓÓ 6[]²š7–V-7\LãB¥ÅŸL.ö´Z¸Q·¶Ì‹G;Z*++CÛÙmÓ^©•qɼy¤^ŠbЉ9QÆ¢¡y õh +èé¬$!#6šé½å·}JKæW½×zâ›áaÈÉmm\@húØß~°ŽÄ{ò¿ZY)µÒ'ŒŒ†Ãc&K94T‚\ôW¾Bùw±Û™û¡~O^L‡|BiÚ…VšÆ8Ó»3:óÑe°øÏ§7ÛJ=}Q‹£8%”’ŸP šð\ÄÏŸüÅÓ„ÅÓ( l=}‘î^nª%RRRq¶üjÆÆÜ <ýu+?Bmb­“¡_ßL0p·A-ðy'ËÏ€a©¤œß÷XQRRýo½=lÄ¿gZ]I'†ŒÜ6üÐ/_"…xvýüùLns…,Œ“ðïȃ3"äöò +$OjX£¾DGÓ€Ú Ìþ~ļ·Ÿ¥ko:~¬Ê l® A1ЛÿÆÀäéQ‹Î§D xQô±)%e++$ IÈeœ‰ Ä «Õað"×9@:-Þ[ô6 ‹àóÁÁ>>›!·µ{Órìöz‰tLÉ[u-­p ’jÜOÉ>ýø ÅùPVÖüB”ZÏɈÕÍMè‘, *„ô+ìZ1"ùœHÙ/Bz!œ"öð0ƒœŠÕÛ Á999-5H)¨0rÑ¿,µ¶~JL"T1CpÎ.d¾.ËOÆÍM™`â-HÝ0¥ÖÖtˆ@†Üáo@²‚:t\ªvµ!†ø?M©í}ušDðÈB ñ!Äy¥U·ÇŸIiö÷#0!ò,š†Ã©î']±5&@‚¸lÜ(5 ¿€ÞÜt¼}ŠêÞoC'>øQ2Ï%:¦Hå}»Û^]û[:vÆ^Ääëׯ'둬˳ìÈkü©ûŠuÜÞ‡®W:Ž‚”â®;Ÿj-”N`Y[ ¸½íúAêÌJ«@øÑÀ7%¦W‚@*F7æË]P \÷S´6ýÑl<<¡)) XK“Ã+OLÚµHuurÅên¨–„?_ÛDŽ\ôáÔ®?¡H¬ó¹2‘åƒ/Ò^5W0¦ ((˜Úf£§GR¨”óñ#Tcs³qw=ÓT[»ÍwÁ«ÂÉJã9®]Ñ=?¼¤°,©¼ð8p{àxóæùk”9˜`±hPDˆtEôã"û§3Ü<^^^¦ææ{‡Ç+í]s v,Ïž-žÄú1 l ÓýqµïfP10å hmm­ö¼°ÚŸ*!M'º¶÷§ŠrvÛ[uzrø)†FF°Ñ° ŠqÚö(bâiú {"i½åÿ½ ``4TžvÒíFÖhæObîF v3H&Ùo >çÃ<xx¡6 õ]pI 3"*tžA]ü dÖ©¯Õ(qËÝ ]¸`¶¼¾æú6‹±ûFÇïQ¯–:8øLjôNZOÿ3W×Dàæƒq™×V ‡»º01e xùµëd3¨3žAnqõõõÁ#"N,8,-‘ÔXLªƒ4°m}¸ô‹KNŽŽöœ¨õ¤F =ˆWÆëe ”—nèx͹º}H8„×¢y¸‘€5Âêî^ÆñöY[â¶æ80‘’–F:ß¶ê+ ï2+Èv ÞÀ‡Î•Á¦²àÉà%6âZEÃ2&ê‹p Jë•v½×*(«¶)u!׳ôý\DY’öõï;;_C>px½•fç|7=5»µ­ †Œ r–ò.@—/ 0* ¡¡áS\œÃ€ Œ(:˜u]ǃ†ÛâçϘ]}}’è/Dé1ûcÉìþÌ:|klä…ÜР˜˜Éz¹µiÜÅz±Qáïõ1‹ÉB„éééæYB[·ó‡BKÛÆ ±t\&-òë»;$–vÆ©©©˽é²$C+«—2Ô˜FWGK 3¾Ï Ö†R^1ÏÇFIƒ­RPbÅÉl£Í/ÂCìëKP-±ýæïð!2K ã)“>(d«?öI•ž5©aÞc~Ž–ÛtNYçåË2Ü‘ŒAl€*/±q58½DÀJ/šèx¥¿´³ü'°¬Úµ;O¿ZŽ« ?W¡­D4^Â|¤„- @AgàV>hsÃPQ×ÓœÍj¶’ĨvsÐSÑ­!ÏÆ&‚f˜hQ}¡ñ'ÕãÉð‡t‚g<[Ööé;±£ŒôA1¾¾P||üOssZ˜ddJR±¤Ãi>TTT˜$$ ÝÝÝa11¨7±"WÌíéØ88 ñ&ê¬4<êm¨¨¤c¨¨YXb¢ˆù>ÌÕz-o·»YSòX¼†§¨¬¬4 BcÑm|ž‘qóÈß>S¦ÉúÕôæçÄD©JÝ&±f—ýË>0 û*qMÍ$ë¥æ‹4wß­ý*»ã…†Xù þ„üüüO³UX666_͇ Åà)888~÷†cQSQ¦ ¸Å|ÿþ}ŠÐKïC·ÔÉø kŸ•öžãÉøÌ²,2ÊÂÏÖ@Zkú.)ƒjz_Q,î/ÙÚm·)‚¿âvÙðUV:¬p#%õ;|‡ÛHpq/‡‰îÇÆ”AnæocåâJ@“yûvo›žÞûÕÑö¶Ï‘×À =++**jPŸq\u5˜“Z‘" Ÿ·‰AdL mpppPÏÚ§íѬ§þß››áED`(0÷Æ2_y-&\Š ôwïÞ­ÿþ-‰ÚCSׯ—Záíüøæ45Ñ{ùÇÐUa!\xó­+&aêÄAììТŸQD.}Dnª¤¬,Ÿ •‘QÎgzo ˜ˆˆˆÅ99¹âãšFƒ²âbo•;9))X(r¦ûÍ?,BBiû¥)y&>ÞÞÙ••1`©×··b (’’’`YÒ ¶K×·ü#™BƒÌ1|Î;ÊOXR*¤…`PI­üú&Ò¥½QRõå öŸ½éH¢Ø¸8 UUÕ×ðþIIxÝ==¬¬±?âé¨((rdIãséåÐeä\»¬Ø?|b*TtéΓÆ¢ç4WÁ–TQÿæþ‡ÓÌ ‡í•Ú{~ìvò—/ïúÒŽ{{{íbÂ#ïž.›ØÙÙ?%&n-ãb–¶1×ÖÖþÁÛèðsX%ÝßÛ‹€AÂ]*QƒÜmÍÏ/”ñ¾F7ˆÙ¼ÛÖ€ž‚N 0ÈÈF£éXYѺººÐ11»ï®ŽÎ~Ëæ™Œ¤ó%óØéÇ ÒJª|ÉÞËaÉ2@DBbfÒó„fa±.·dK­Î)¦U}ñ¦ ?ßðt½/š0¯rÃ)•$ÀÑúÆ´7kßÏ75ÊØU>ø··La‘n¦`­l~ÞZïÞA.†Ö¨«÷¨ÿúUÌÚš‰’’ÒÐÂ"¼ÉiûÑ~ñ×·÷&‡óu222¯ÅÄž•WTtðO)‰&¢?#""ÒÒÑAZô³µµ­®®^½Û/Vpuå–”TQU y¼~äkg›_O ðr’îî¼UúÑ7çÛ =…¯<†²ÒÜX¬mlâ¾| *.¦ONKëY^&…ª¶_ƒ\ØiúýçO1•6°¡©˜¬C~/0÷œ†ï¯Ï-&¥^¸º¾223‹Š&ªZû™€v— ùh ·Ø|ö³—;ÑíöTžtl–p}mí-mmÇ©¡dö@S33‡cÏ?ô..6ÊÄ\îkü³:<Ÿ““¿·=xÁë{"ZY3Õ† Ð|8;‹K_¤u|àOÛUÆW[éØŸ˜PýjÔKÉ¢ø%!!¼¬ìåî\ Õ•/ÔïÅ&§|»•v ]ÝtZŸq½]§¬ì´ªªŸeää|ÇÙ-ú£òÅCQ œ5K熆äŸeÏø™ôGa„í#áÉS(s¼Üö£D­è{¾lü÷±ñ¦½ߌ?û³±a‘‘XVVVªÚÚ· ‹.>.CY+šªªb3UJ°d’Xô¾·zœËøúºPÜÁ¡‘¢ÓÐÐLÔÛèäVV*zûøXE·±Ô†D¯æ¯Ünï°È28­Ì«9×-ÌrKOo «ýëxiýÉêÅÌ/ÀíëÞU:ꑘ˜hÚùššž>,¿  N27N6žÖá˜çÕ«»ÜsI§É±s_g…9eìãÛ»c< …€)íoË{wn‡[[RË­=m$XXç}Vø¬BÛ>±Ùº¡ÙÆ·ÑXÓ÷;÷ ;)OõAÍŸˆð×S¸¯ylϱÛQ2·ù§ öh!£¼ŽDU›Úfdd¬¶˜¤¡{÷ŽÀíhñÆ)¦¥E@]]œ‚ŸËj&ìµWÇ·o¯~ÿþ ùKNªªÏ@Øddes4«ôµlIäÞ¼ÉÉΆ‚úôù³˜£ã™[,Léþ ÀÚóóó€ôýÇÎôxu}}JÅï¼óÑõpþôÂÅ»²09ïËõ ÜöG¿«»ãŽ<@ú;óu/5*uÃ2€šî£áââ¯Ô ùrãñá ̤×üE@ àÙ|ƒ]ì§OŸŽ35“š}m±§ ›ša{z%p2žº”nìNUý A‚¸ÌÌ Õ 'òeåCßÚ8’`OkŸœ·ª owpÕûÞã;::ºßþ±ÜjâÚð:šµl‰™?¹œ˜€_hPêɰåuȽÌP2æ7“P.iÏb»¿ÙÎêíìüØÛßÿùúÚÃóÏŽÝ×QàͨùùSƒ‚ƒ1HHHÎÈüìuÚ½ùAš³ä[ÍV.ž×Û,HIÅË®¯¯Ëèêð9RC¾çªuÔçx`&«°¨½‹ À?š uÖWW×­»ýëùÙ _®ËÃi BåZߟ­ ¯¯ç~÷Íãz/Âç¸8Ñ‘ iSSSxŠ @ ŸI…ºzë‰,ÏtëÎ}ÒSå†Ô÷¹“uV³2¢¢¢ ”u}𳂷Òþý#N»Ûï I¨Ûv°«ì »„)‰PÛnX£Åtv{autPÏ.sHL\¼©áùóçá¹¹”WíSSê`Úoß¾5H/ÊÎ>nÌʺj:&ÑɦŒ——Ð19`™ÒôäÁÅûð½Á@Í?¾_]ö½¿f7ªÑ@Ux|<bÔPlllt1ø’òrjÇÞ……4t±ï×§?Ú}îM¦\ôõf.œî½!|~©™‰åq3œ_\€Kò©’A¿÷]zñ–èvǽ‰Áó“>^””í\Lîè”í³ùó‘q´°òr“Õ‹X4s\°V•¬7²²þEÕþ<Á30e= …ƒƒPÀÁnðûw(¨ àŽûI9%¥'óÅÑѲÑaaaeMMiCCr79……!àÍ_’’òtl½}HÞfú„Äæ¼3¦=PñFNÑób¯Ohåûwxò ÎÁA¤µµµO`Û~ÿˆoªÐ—”`3û‰½Øì‚ôKPRÒ,‰ô‹ËÃ"}iÇ 9qHÈÃx{þdŽ2 u‘Ϊs)Ѭ§Ë㕬;ñ­&ª ©Û‡,™óÅh¢ãÇ{£êZçþ2M»dÔí–ë§" ËHº¦ÿPä†/@ªç@s6ï•ɼyãÇnëí}·ýpPÔ¥Vµ!´bð`«8˜ÿë‹LCg.L:õÈAèèb'g›ƒ`q‘µµœ€…›¶·77)xyñ‡pzRÌ ÿóLjy8`l62y|nÛ}ˆ€Ø ÍÌ${ÞtåsÜ:b2(ailæ~ËIºÑbÌæ­g[2O¿7pí²L¿s¾Âm3ïÍn Ö ¥üî” mŠob¶PÃѲ ˆKýÚ;jÚö÷üéüãA(’>æ÷7aļ½?þ\m6˜hSó¿sÿM_DT3ä®@ÕKzÇÄÄ4´±yèóÈö¹]ªznn®s~žü=,<|íÑÉÉ ˜n˜i“¡ ¼úúz8««c ÙÙ¡Ai5ÚS€z */gKË).óÊlof|ù²Æj–e(Kä)’½Ãmˆ "VIF¥Qt1CËÒŸÎôØY%‡u¥Ür†‰$ëXîùí¬ÎWBFœZœw ÝÄêjô»Ëû#o_’ £Ì—””ÈtEŸâ÷ýoÎGÉY«’w?YΞ-TÓ—nN¹¡ÙYX0üª6z ÝÏŸ?{§§œæâ¼D ù&ì ´^^^ˆáª}ÔÇ·¥±19JY š¶‡†ÙëOMCãsõÿdð«õ›û}@_}#þôªñÜž/†eÇH‰iiD/Q®\åå‡ð¶Ï©••+ó s44ªÿõÊœJ Ôz ç¾Ì"‚Ùä§7gÒ/eP«5²Øšš".ìYÃ4㇊X§#}ûæ”q•%èñ&Ï‚2:·ão@(#X’§ß~Ê¡¶¶æV›G³dÜjq:J<ùÆ–ç5+++1Ÿã‹³³3|~gz×£E”è,_&QK‘7*à Ê[ÑÅáty”2[uXãûðv±±¶»{È­?·ÊÀ,¶$×ü`Rø÷ ¹‡­%üÓÓÍõÜ"–jwT3¾‰À%Zú’ð×önœc`ÿMb2á'†ú¯ñÂ:9‹xzlk`µi’çZ¾šŸzVQõÀž:Í¡®žoda$òÔÉc'ÌA‚ Ñ”ÿ¸gfª°±«ñ#˽†|mŸßã  D{PºÀ+„{­D¼"Þü÷oS¨lÉ †ˆÜbÚ:£žv'Ÿ××ÏŠÂqâj÷„@l±”¬ÜíÇß¿ÑÀŒ¦¶±ÖF;H\™ÐX ôõŒ°ûnqCÖ蛜Lp`n´Þ›×èyA³5BÒ¯Åaب³3¹Þ÷ ØÙ ¢‡%ÜÝQ¿~ýÊfÒ\Øcåc¼3UÒº¼Aù‚‚b9kqk³N˜CtœÍ-?)…2íˆuéÌ̸‰¡ÚÚ[D0Líü k_0z)¨9Ëœ\w†7ŽÏ~mÄœnLUèÀI­g#EµKÁ~*´¾Î³â÷êäÒ†»´”÷0Dˆˆ˜Ê‰ÝÅ*ϳ‹?Ì” ë ZE~ù2ò}/°Þw¾®¬|öf||i¼Æ„ïöDZ Mux*þf8lœó±vÉÀþk T¸°ðݘRF çc}X„pcðÑÈèñáÉÚØ8Àa£ŸV’+¬Á ;*êV\ýËQm!}„qjM ;`8íéû$Y‡¥1ðüü‚H_oû—Ó5&ÒLZÕPrrrò¡ª¬ÜÜ&û3/‰…ïá[ܔ̩a‘u×0£ÛÝm ‹,SüÙÛop©¦†€þe°…l¦¦Íþ}Ÿ», k¨sÊ™`Ì6õ?,\žöE鉿AD–ïï DCÇÀ@óñÁõ}˜F&$ôÙãêï‹=¹¿éàu2Ç AÙŸÍæå%(QËPÖÒ YhàÉV Šƒ>§¢¡ÙéØ=œ&zrÞ•ÆÓÍÆõ¶¯Ö"ÐèÃ\Ç/Ò¤ÜbVì/”ää——NɨÁ }žeçåψ–ÞÌ-ˆ´µÑ)¦ÏE‹š²#¨ïë6©±YèHñÃ×b*Áõ§µ¦Ïü”p±Ûa*O«ß¡(©«‹»¾ñMYUµ­@Zõë+-&†ï&»ª>ô/߈ÊÊb·³óë·y"ÁÁ)¹{J‰IK“òØUv¬E\Ò #µ¸­tÝ^䥗CC_1÷k8 ü‡(±È#þþL ·{ù±Å¬"2íÃî(¿·p×–Ûf¨Ð#q3Äg+Ì C,&aÅ¥¥3ëÝ ŠÍoã!¡†vŽ)§ì*ƒò /í{§“¶¾9H]®ë@JJ4^2É**Á•Ãç²¾ÞWt½_åÕèî`)" ª“™Q =.n7,Lf{&%”ƒŠÒÒæìûlýùEd@À k›“c}7PÖèwW–’W&A ¥ñ Ê×ÖfY\ X[ïîOxÉJN5‰Oka´%¯GÏxi=ÃK_ʼ{@b"±‰W ¤m%ÛÝ-f¤68×ú †N‰Å”Ÿº!< ~Ãï) Ó3ÊŠ Ë|5œ[ $6,¢TqDB²MÜô·€©™Ï3å6c)IIBOO9­¯¿Ÿ4‡€H\ûîa`mM‹Jvù±Å ”íêDH#›©ä»Ë%qÇ38AÏÚ’õ˜Zì˜hd!=ó·v‹-³Þ:yí´/P¬fðM† M@Úw/ aÏVÁ­ë[­¥šÌ&J2Y´Ÿ­”EÊŒ‰&‰Àºú#þ“že'ÐF.úðÂy]­¡ÍGQñð¸ÍG¦Ì kÚÝeè«A%õ–ÁâÆ~öAZ]Ÿ’j…‚ã+?I†ÿçÏŽaˆy™ÊoºÎ6añy•a9ÐñŽ¿;ÏyC2,&FÒ3’“ûÌëá=4‘ccSǴ罹L-bÍ¿ÄÅ…n duþºáó¼&´Xx¦wޤíí::¹Ï™æjaa` Âb|*ø°0ÏpÉDpsÅGDÊ)¤EÒÓƒ¬,.+û™ŽîKOü@¬H×ÍùãΘ(òKMBã__ã>,Ô{Xh‚ªµøüœ‘±tõ¨½½Ox­¢ü7 ^¯°ˆˆÎif%›èÛ̹9ùÅV‚ 4žçq h¸o'‹ÐúÌ `ø¼{BÁ¾Ð°ÒõÉŸÅ^gzæÒâbdà‹ºÌéü‡¥^¿Æü9ø¼” ¹ql¶J_´ÇXöìÏÏַꆫޥ–(¤õõ&9EÆüåYæ¶¶ Ãø–…£[¾Õ×Gài@Ÿ[ð¢df†ÃÅM­þʱuƒÆT:ÿæfOChXÛÑ⻵2Æ’ª ÃÞ°`Á#žìTDˆæà Åàbiü‘²ºÚ #w %ïyu„ÊÌÌ÷Áò§è›24X”½%kYè½ÀºGéd#é§ÁÅÅðU¤ÁoPNYmR/žnI¶GïzzLL"«pÃc|CkLÐLî.õê£:桜xƒ,ö.5¿¾,Ì(,Ö°ùýݢƎ;” ù¿˜'dè]ÐX»bЉ«)«¨Àð5‘>Udªt@ÞYj˜Ìyü’œŒLÌwtd46uè²/odùÓO¯ÛÖYÔÒµÒÀ®¦;¥{ }±V@ Hø®^  šÄÞDÎÄäϬBþU?ªÓr™Ÿ ê´D ÉyH^O@ ·[fjõš<ŠÂíÊqIšQ—‡}Ù4¡]›9%¿àRSɸbé{ú"•ÖvvP00Œ˜Þå†â¼D†h©áÇ9hhÙdîCüËô&§”wR¶ï·ý7Èz­°~oÞ8yìlg-yE—2Î[DXêq¼}cE§««!n_âÒÿß»Y~f÷QWÇHè蟾û(  )VW£ß^ì#èéy@ÒWI ¡ÍÓŌʳ€¼<<Û%O33†r‘æü¨k, ˆEŽ¢ÇÆôäCÏÔà)€ ¤ƒhO­wçf_£r‹o›œè^”i l\Áe`[Yœ®~~^àtÖ@ÝërlË›„†”$4,}æßâ•54€FÛéÉ·üðÇ"qžN½ØÆÞt’½ý‰PЏ,S=óu´;‹M7X\PŸ² žaÅ=R_a:]úõós''¯°ððnPI+v]y 1f¾÷GWèØ‘óßV™àÌ-~ý* Ê$¤ÃxîÀ´·Ï RÅ@Í,Þ¾º½-7ßÏŸ]TUýºöûw4àþ¹ÆJssQkû (+ZC™>˜^×¶ÁTiA&¤=“¯0ŸÃý4¼9‹KæL³«GTÃ~ëGÄ}ŠFµºY‡ÀÁ±ÀÌò™ÕìctrrÔÖ2¡"wëÑÃݳV÷¸Û£X`+‚®¯™ >~þLíFY’G¥ùë´¨[ÝÒ0ñPÒìâbâHÜÝ®Ÿ?áõšk~û]ì ºßp &ÈZ”’lëit­qÚ¦Öà“ÃË}, >z@•×NbÓŒ11gÄÅ«YÍj°“ȵµù¤=8Ò"°Ð‚êÆ³™3섲ØÙÿ–]ö2–Bü¶N‹£­)¿`³»« k¶‚ŽåzV”ʲþ©oõlßí(/³|ÖM s†¨¸…†Àœâ9¬ÄD©dÁwi´· rP`»L{v–ÛžÛ.ëR±öUùÇA«èÜùpG”3^ÔDBkí®àêJèìšU6þûC¾’^Zêá€ÂØÉ>O…¬¤$Ž®î\õ·ó×¾¾[CˆVVX22µÞ<8@¹Z[Wvýòà‹Š‚­½Þ˜Ýêô‡ãõ™‡Ó×OƒáXKNM p;ÈóZ@AåY ú3— ­:Kl&æhH˜_÷ØÎÎ=ÎÑÌ>*˜‡ ‘¢:-¬Î.eVc;{Œðò nÇgöë½X¼"¡ù¦ïAÞ} 7Å|-iFToMŒ$ÍF"—„8D76ÃæiVUjµ{SCèæªl–>âVU^¶?VäÙ›7TÖ󜉻öÅ´l–S¾ÈD3h~\M¤´ÖÉÀa¦=9 )II9ANMýâíô“A„c>¿›í€sñ”€ø€2+6à:[Ü<’ùÔðˆxb‚ÁĤÖ= ‚£Õ£§ÚçNBʸX„¯?¦BÏöͯ«„KZ&¿ štàaO+ …Ï)æÔ®üî‡(Pü QYÄÂ>ŒR169% pÏ÷P8=›­ žNévõàAX¤[w³Ká³´â#£µþÏÍN¶³ÔRP dó ·V>Ü?\!9Ìá"áÅtžmRíÊ}ñ}spôtÁŽçtT¤ìE%¬®Õo ­±è2É™¬5†_~è.,Høòe†ë›¾õ_ß^HHw<‡*.ýixm/‰LV–#~W'­]j1í0×rE:1éÄîTÈüµ\DÓÌhB±|æAXn.‡ »aS¹´D~ÏÐüåAJÀÍyè+Åoe»œ.çæè‹‹bÊêêý‡œ\.¥ÜÍ.UüÈêû΀„€ ûþ](Šu—…AÚݰáäP,==ýCneZ»0¨ó3Ÿ¶òæß¿±×zÃéxý–ÉHøÃŒ6åÄ™t¸?og§õ$2ó|úô)Øï©Î˜ÿ íÅ© ‹žgÄ«÷÷¯á»¢š“"øF`¢'&ޏ_2‘ff¦{?XÕZ”ªèéÉ‚ü+ /‘[Ã#µÚlÔÉi¸¬òÜõ—$Í¿'}|v1 *)zP†Á¸UïŸ2R%†®âRSŸ#!)@*ÜFM¸ót#Öá©y§Ï™·®ÔâÕÑ¡ `@ùÐIãŸ?×¶5½Šœœ\j­¤A´ZüúŠôüjwpó㜤¤ÙSÝ\%K+'E2r®!••Ïþ\”iŽUk}~Öf‰õêV̺ NN¦×¨àè(€­°$š‡×{î9€ÉdÔ‚wظ‰kóuPÄÀ&-.%ç^ìK‹k§vðQÁ¾(¸¿W"õ¸•íüåÜé›=¦-Ÿ²´ÞÆï0Ãì‚ sœ¡‹‹”‚>„h~O¼‚¾ÄÑ .!Ý­]Qƒ,ª<è?}PSµ;‹OÂÆÆ†æ…1:çòe{ÀèA¶ÔRd8N¹¼´b ¯Înr@N1ŽÀÂRó¨ a¼Óê†(`,z€h`}Ïü<öK(ë˲ݨmM=j^NNœ·Ÿâ÷OWê`€"+RÚ—½ÄÅIX[ï+²wþôP"ÓxÏÏ„¼±Bq+¥¬~“þ¨ x¤…>ŸÆDÕÉÖÎåG aoúÁÁ´å 9Å2û9*؈( þÁÁÏžŒž_¬·8nÂÔÛuWWë ×'ÐZ§Š½ÅÚ®©ìCw·*Ó æŠv6Nõ#¿â’‹Â_jÐëÇd¡B^G”Àå™›ïUב ¨›žŸ¿1²ôDˆrØü‰˜©ð®#Œ„Jœóë[( jÄ•Ã!ûƒøÓ „½±é·†ü‚¥ ‘žp€UÝÿ|À2Ûâìt¥ƒõõë×” ° „P¯UT>ë8ûõÂhÜäH;8ð±èž„ÆOš¨¿}k´&&²ûj©œp£'ôYqÙqçÅ~âØ¤š1º¹¦Õèø8’¬,™¡uy$Ô¾ýjŽWÆžŽRLwhóZrØOÄEK„ø3€D!Í·ds~üæ#S6{kÝ…9rr?OÿX Q­­aø£‘!Ž}{O‡Oß3¥Ž ËÔ<, ñuÇË^ðHo‚ÃùíHg™ì´ î!Þ߯mš òx™¸·¾ÔÔ_ýÏ\q6¬eƒ‰¹Ü3ÌŒß`GŰûˆÕ˜p,. RÐééOúåXJ]ø¼fÐBQ¹ôRËË•€S{²ú–ÕØ(ï§ân`5]*@• ì¸Ã ûÇ$IÉM­Z4 )ç˜Ó,W&=!ãZ_%²v•µ‘CÅWI`¼î¤ádýcbËË£ÒÊ|ŸIª ¡ôEŽRQR¢6Ó¹°"éÐi9Š®³Ë&»©L‡F›e¾Ôÿ·¨(‚ù()„¼ý—o'ÑÕŠøEUT0ÿ:pl©ê_²/ö²)œ ç–PNÅ›0MaahvÅÞû&cH"€gÍ}Ý„íîqãq9'O­¾‰öÈÝCr}žÁ—ˆwoŒ¦KU jæu½ðÉ™e¡’HŒW¡ášØr…€ì4³HÇ‹@X›ñ<'`5ÔPA.”y¼r¾²Å'Šx Ü ØH',ÎÛ[&þk˜€À•õ¥#:úú vã ÊI#¼Pq6Ÿ[vÓ÷xkkâDí‡Ø_Š^Vê!uÆÓ錕á-^¸¥®Ûó²±eݼ…A‚ª6)<&#v Žè8 #"pZ[!$ä[ñÑj~ C(·~ã³eI{P2J£}C)ÍÕ5ÏJXäCû'Yô½C|îŽ(h·X Å× ôÆë°Î®«HÁ¼„2˜H`øx¿æ|$§"82rDALÒ¶vÔžI7Ȭ,Âí´…à|8OZ¤ÈlýÓÀ€Ô‡ˆ€Çí¯lé—Û¿~Åî"c7ÏãÑÓž—“~ÁÛÅ¥žì‚i¸™™Bïo;'Fh¼¼îk(Ê*qæüé°/BÃe]ÊzÌçà«Û9§qó¤Ë&ÕÔãùÜF@½{s8¢+kkûÏV©AÚ3Ü@;çfgccbf5ªãg¾úú¶ó“€%&×ÝÕŠ4Ø &&· ­ï?ê2G4£O!Û)ï &ó]QFnâ·Fô—/Öé|¡/53óœ¶]µª yYyòP"¤x_|3Ïb@P»þçˆßýÑDÁû¹º}TJJWžÍР#,¢4·+e[Q¥w¿l»BéŒÌŵ\®$Æ 0iî—Gç’òÃÝU÷íEa2›hànµ¯¶–#­¢`Äáñ/Žç…=µÙÙ¦ò©¿Ãò¤· ÷¦ºäC{Ü€oìZzxP•uñO!8ä”ä™(Ø>}ôFFIè2§ V{÷Ž¤š¸¦¦¿µûù»[Š%ÈMŒ—ˆÕÅ;44Uã²ïþ}p2`ý".MdÏ Dø±9;¹v’PÛþæì’ØG$©Î Gìf—ýNçØ’>›€5’“‰{‹UŒìDBdöüùóghý¥bº@à “~dëR#ƒnZ..8RR È)Åښŧģ‡)6£~gçß»ÔßdeÜÑàà”ÛIihd­çØ·¶ö¼/¼”uucÆóÐrÜŽ=]h ú…:ž|‘xì`»Þ#-aŽÁŸž¾kæµÁ†Šïæù—/Ôì¹°…òã…vÈ%ÇŒôô’ ÷îï×;Íé(èwPà) ºÀÀQ °ÏŸ]qÍ€©$ â/š"¿wNN)é™q%¶Ñƒ'$0´°ˆÂyé««SRžÓ$±ýý5vÆ3åյĒ ¤jر÷¼„çÛYþmÖòY•=μêB)i &À¥ òæ•„X“ ¤¥§S.6_ ÎV}ÃÀˆC•ý1ÂÆ3 „lmÝâ‘îÞvÁÿrp¯õõŸAº¸ü.l, +ÕkdîžRÝ Ùª€¯z‚5:ìNpö`ÀÇx!t¼‚GNN§H xˆXÑ%@Jíš®ž¸ýÖ1X; ãÊÙUlÏrÛ:n""î¹ù˜²:Rô·"¯ÌÓ_//½ç‰ßUv×Ò Rß'èüÕgRަ²åÓ“~µJ"b1ðC³ÎΧþY$ÈÚU`óáçÇÕù`»æìy_øúÖ4º2C¡‘IeÛè¨È'gûÿˆ¯cw.~&!ñA(t†^H¸HS6?¿¹óçOüoïÑÖVBï® LnÎ"í¤bm¿¸ nÜœ¿Ïò%ˆ  lr >ª”U¿Í³çó­®.¤75oQšðãçí î–f^¶´Œ(`Êá‘Dß¾ ii“URBXjvéìx‚íêß"46~Ìí+'ú˜ˆïÓuIJÀ´sõÃé¶m¶b +RvtÛZ2w•¯¥x8ààX©éü>ÖÔ BüŠ^Æ£¾*ö$#c)›YVDÄOHó¾Ý†z‚08(¿xR‘zɧǶTc™®7s¦æ¾ÝQÝÀ¨ª~…´ìÏ·Pz~ÿÐÞóǵ³¬öeê-QæõšÁ€dhc\ê‰ ÅLTÔîr<­ÅzUG!;°?7³i ±±……uÈ)D5ý9ëRÕ@Þ¯­õ؃uvu¾&˜,D韫 üÀC}vià \Ç XÚžYÜ’>tœˆd°Î±é„O–Ìr hQ$¤Ú{–ZöñÃÒý``h6€‡Ü?,d½d «0,,Jc_©ëáÿô0Šâààµ[ºë¹nßÚ–g] mNÕh÷Ö° »{µàdŽŠzYbf& g"£xœÄ¨þ!ý¨åÚ\ˆ‰‰R ìù†ÔÖ j''F¼¶ËÈÝã;S»xÉie&§Æ>ÈøcÔ)ÌJ›ÿ1g¿—ZÜ:KßæUvÙ‡…Ÿºy îÉÑ}JHˆ E³yq‹u¼¾îˆODö1Uû¸Ð6^Úgó\Q-–L:O<ôé˜ÓÌ”ó£fnÔ?ª TÃÌzóZJŠt¾/°´ØåÊÊn¥º;.þ*y·Î$3ºÐ“×Å31±àÚ. ‰(0Œ…ꀀÏJž?{îöZª!304Ä‚×袢? Mí„vyyõ˜Q¹øëG¤!8/YÖ{Ãaœ øÈÞµ\Ú™šþ^ÛæR`'ö£³ž˜ptxl%ÓÕ}—eð X d.+xðæ¢î ][[Œ‘¬«ÝÉvt,¬¾Ò·!ZõÖ¿•ÚØ×àbbô!wTËsr(®³f„}cS^)­N•ðž?]Ãß5uxi ɧýÑë» Ö*|úàÂBbdd-È4 uÛ È€½ÈÎýŠò~”’1©»ˆ/Äa![€y´µ ªpÒ¡XYÇÛ@ËvÉ3x{´k·1€üÿ8ž«6âžÞÅÅ„JqBòr h{ .Çàµ[1ß8x'¢ÛtF¬×\Ûs¶IsÔñnöã›y .¾ÿŠ_V§3ï”R2[éÏŸmö;Êy-xg¾Ý…`nGAÀR†‡“e™ "ïdj#v>59;ÿüƒË<Ñ3_׿³ØD2™Ã9œVÕ¶˜+íMaÁ¡TLà3,#¢¸¦á³ÜR]P¤dea&§òeµwæâp=ì¢@fµgD )ÌÎÍEttz|3BÿÚ †¯iË€TÈíˆ"QbÆ%,¢§¦ˆyù=ײüžU(•¿3 *Qƒk(¥æ¯ºYyZ„È{RÁj#~lÿ  ¬FÒOûnÎ?ÌV¢à²ÎôLÀîÌ× 0üÒéä`Ôè†E_QMímaOŽï*DÄ ˆHÛŸŒôo1¹óÅ2Yä³vpO\P€2î¥F”D‡¯P jô:4Î[{ð  §åjÜk„Õ+ˆ\U$$FøL³ípö[L>}Î3iÞnî-S0Rü²¿1j'Õ7|®•?‚z³M; ãt ]e çgÞ O#óÆÍæte˜;&á¯}di³ùEÛסۂ e±k[ý•£ÿà—ø4RûCm¨z›–àëkN‡™!GÇûµ‘‘Œsià͇ ¸¬¢>X<‹°4Ÿ™ñÛøïîaOýàµa–“À/òƒh Ý~ä>/„´ƒ±tÞÓI,Bâ-®6 Ð…!yr´$ÀFBØ÷èpP†«“E˜C)¯°­fSá½õ‚mgã*Ñþd¹°ÇHÝ×—A*z>ƒ {m•- Í*ȹ«t,¥Ã¹9z¦p´ôöÈ¡¡eiÀî¤ ›q¦ÕExÈâoäÿWmÀ~7ŸôùstŽøUçð0!?Eð ‹2¿ óÅz”W(°[Í ‡ELH TÁ£ú"99yµºŸzE– æ•6ä=+AWGµA”ROÈxm=$W<`©(+8„pÅFߥϾZ=¼ÄφEª½od´Þð˜Ó/ËÎA.íÌÕ ,J ïMKi5Ú¿˜o(º3)Ù“ˆþ¿zÆ8¿ÌÄà·FEóóÑ -ž%ËgñŽ„›ÞusþæÃ,!ib\\¨×•¾“€ÂÅÞ4ÎÆ@YÝOE5P©õohÈÔï§ÏŸQTTŒŠ‹¿C*@OÏ™ ·Óiïx¡/•k$,ziÑ öÛÿÇAq­+i#ãóÈ‹—K,SùRÛÚè–Ûà_½r™›‹ò~îoú‡ÇŒ|Lù…i½£I½"A½ éAÅÌŒ×`ûŽË ‹ä<>hŠŠú€ì‚ ØqYˆ‘RT J¿Å_­´ßɼô’Û†p¡t~>ä×UsÏô4! )`z^•WpÂÂ5'—ËCÎôÌŒÿ¯‡À‚OOeu“ÓKÁ7ç¡&‡ÚX…â –„AÄüÐ10vÙØUüëêjëvƒsS'‚‘çÚ¸+õtP„„hì­î"[íw``Ô±“}gOª.ñ zÜÎ:º¾®ŠÄÛ—Xm¾UFQ;¿sXí|Ñ))ü¾Óò«Ës2‰hd¢4vçg· ÷÷˜ø„Gßã~ò:šrO®)_È(,-å ‹’‡iÖk£èáÑ·3WÃÌɵ™]¦£Gí¾3æë­9ú~OîÏáKh)7¾U¤à`³Fç]àÚɦˤvUŸßŸ½!*Ïóí€y?Öä$ÀË7lÂÿE#ý ~`Å×§Ëþ£|ôn$T>ìNœCZbI³æÚüAÒÓµWÂËDCSDüȯÒ€‡\”¯èúÂ0?Woó øÐg|l´R8ûUèܼ•®!yú¨Ð±ý4= ðÓ 4ˆÉnôpBY*ÒFR•aÒvF4 â.KK×W9XlÄ EëQQUõ_ëÁa·™7Œ"*êÿ¶ð':ÉCŒŽ-99ÆÍMäÒ“ÂØÎþ76ûl&ƒÙƒ5{xXäk”Ž'aèóm4 ¢Ìߪ«‡Dâeuuw‹i5«“½ÔÀŸ@‹»Êr[Û'“P{ö¡Æ$¢ß¾%(×bÇT+ü0ɇ"É¥êë‹ ¯€¹ÜfjqeJjfk‹^t°"Ò–#^kÝMKWï÷°c5ûŒÍZKäà׫„#»‚Æû‡ ð@ó„‡#Ö[ á$H½Þ²êxpÅ–¶gÐê•©™ŽÒq–™Ån+æÚ~KðöžŸ²HUmí³ÇGÁ_¥ÄUúmÐiÀ y¦©ý? ¿*[_ŸY÷˜½©p­ª¶]an_ß&äÊ+P¾»ÁHÕ®ì>,kjÛ#7&W¶<Ö ÜÐÀZ‡…ÉHëêâ1`q÷'ÚuÀ&§óoBNÇ[ÜÜ´´ !×òÚu\dTZ©©©aâiù ê´jÖŸø44íokÑ‘¿°Ûg#b¨Â¡ B<¹¡—x臦 á‹}ÿ¹¦IÈçÙG2p««Ç¬ÃC ®?B,ùaKè§OØ`ãNØ>|bš4bßT3”æF83ÜÀÁ¤£S¤á‡F²„Ñ̇™1TÏá¬jˆ³}¯¿ þß»: D'—1ÝŸinTý6¸X’ØgN·¶Úç~É $îým¼l$¸Àc…ÿ€Ž"äú8c~#KJŠ¡õõ·à㣠2Ê€åé å¶Áž‡»*sêw(nº¦¦ ûØÇWÜ^Ÿä@H-r/``X¬ÚÃÿþí ! `ŒÉ*á Rfê&ÀVùa¦x]q³‘ÈÅ—ÈNÍýò éxá´…\W‡`0£˜[jÅ+èï¬`&))yÒñôÎðÔø7*ê6®¶V’=eš¹>^ìLÚœÏ Æò$§±BÅÙ€(kõ8Ǭ×SÕ±,ááÁÇÈÈûaEYEÅq1”å>ÿëçço§mæš§‘xr™†m)Ì-¶“D­øÞá-5× ÄQ}c7•Ù·Ü›>š.ã±·? (zOíìü»Æ¥Œ eÀYKÐ= i”ÞXR›Ü ¬=£ÍŸo ×§bÆò«?FDµxm(˜™ùÜÚY©¹Ä­žœp‚ÍÎ1èÈ\¼}åé)·3Sá‚wúЧ!´ÙÓîþf[Bmj}DÆ,µ¥—DF LÜzx³ðß’dðï¹yT¿~_X·&87wr@‹Ç*Ü÷ëÛcqii÷PЏ¡™™ü7C))Ç™¡a5š¤ä&:nÿûÑp±FÏßäµ’‘#¢2ðöFâŠv™A ²²|@¢Áàáq'2Øu¤ŒÄ`C uybŽŒO !n6¯b§Ýñ²œÌõбçpÁ*§b H§k9EE d”+úz])šð—¦L;§::!õÄ/*ªÅÓZˆê¶nà ´û¤¡€êñ÷ÿqr).'Ç-!œ“Kùü¿'aÏ*tÎR""é_>EøÜšô#“x©N ôºZ÷ôd1™ ŽÆ—‘u1âç, /×qÃŽÔbùyòÉÉÒÎxžIÆ•ÚÐËÿ^ö"jjêKæUyÎÍmÒžåæ`dr¼ìÕèëÃ¥ÅÔµœ+§â¹Ý_ð†•œ)!!õÈjR ’|çÆ!z«±m^Çg£!S‡–·A bÝ^kλ»|¼ÎŽ-vG`¢³³ð:þþßú͵u&ÌÆ&¯Øm€Hëé7G†Ÿ†§]K›#ËO£»óu `Ü¢8´n€™ÐÌÌ|ôô2ÙååϬ]9@Aik ¹hûWa/oIèpÍ2 ¢˜ôÏAz•í¥²Àgœ@10ü@w¿–&!bfîÛ=–㥬¯ïÕ]h5{qû-8/—°´µÓÖ–2ɉI'#£œð:+…ì|ê›>`÷‘ ¾¥¤d ²6ºX1ß^÷)Oa÷Eñ<«1DQû6'7@mŸ}©ÅMÂýšÅß2¢Óîógá×JǬ‹ímõ1G\»!õtJÆ@äÑüÙŸÅ¥ –%,”êè1Ú ÈâÇ¢Û6È-[ÅL](''—Û •ȳ3¹òwQ¢¦5¶ Ž’BcK¨ÑùÖ¾ûý. ÿX…J…hËavá `˜“‹hI @>SPS¿ðð@(7!´šÁ_ õ„GQ Eµ†«P¼O ¾µ5×( éŽ@ €X ôgÆÄü°É>}Þ x[†ìp¥®¡áã$âƒ5jÐÛ+ÁîÓŒJ«0¹d‘žÞÊn9å‹OTf¸Ä¯öÁâ4”®^ ää-7ÑèÌTz±Ù,ú¹¶›J©‹Ìý=òÙGx||Á‹ \Äò³Éý…}<;GYëEiŒS­ƒ‡S^µCZù …û–Û&?¤µk0ÑÐ<¿Þ΂¢g¼ ‰Z|ãO"`»që­àÌíìhžååAJ÷ƒ¯  4(û¸v “­šžT3ÏžaÆe :œÆŒM}٘ɎK8Dµ;¦ïçW8LùXdŒÒRduõ|‡+[|GGD‡»Kíž; Àü×çJnA¡E+²i<±¹”~4éÅ!  Ž>Q´|JÒŒ}_glL™,â÷Âõ8sH×^=xÂåe^Ï)¬®.»œ<ªX`ãªßêQÓø¬Îì=+ ì™ýFÍÔtZ!¹äéWPÙs¿„zkL–¡‚”ß¾½CLã¶‘€|èÈÚf ÎúãžµMÀ¸£e=ƒ5¢šô€¿Žè7I™ë +CFSÉkô‰‰‰KŸ£ ²T˜ÉOl›°0øW$„JçÑ}é|E«;¼x@O½"‰y}}µBÁ Ûò®j£t¢4ýOR„éž(ãÄOëË’ÈwØ­þ% éÂεõ²Bj÷˜……“SÑDþ]Uë¬ ”aÁ+g !¬‘ 0ŽOOûÀ€PP¹¹Ý€ã€=ÃÀ0úþ#\\A¶´”CYóˆwÜžqßA°OûðÒ/n÷¡„EýbÄÏT¬×x‚Ýñ代r½_e‘Ìc‡§¢Ð7˃£ï~±‡òógéÉEé3##Šû³H|ÛåÚü2„b * ’¬ft¥´µx¸¬-!;œµRÅLLpÁçvÅV®ïC°¶Ö2^gÕÖ¼ÆÅbÔ³†>7ÿHæuE2-qÙ}Ÿö»/àc%ãœ×±N¯~µkËå3^—C"WM•ªÊ€îuFW¦(5ääôˆÜžo<:D®S`ŠâƒîøBà_o)n¡ÊÚ.·º’’ŠÎµy1Ý^œZÊå¹c‚tà"ò„ëïÇ1|?KB%]Ÿ'¦íý˜p´”1^ocs°À“¹oÏùóú74G\§§o“ê55æddbÄÙ½yÒvù})±yØF¶ú›O})” mž’Dš› òjïGÒx²"'¿Ðz\±@WèT}jÑ%_…^õgÊ~šñ¯“¡!5·íŸ¾ Œ‰>ÄH¼«<»™7ìq2¶K3ÃiJMæÑü~ˤ::öø*œVû ð(>¬ß¤ý_wJ§pü²Ñ®ÍÎEa áx%9W»KézÜŽ(L†éwïî·£Vâ“•‡øùóÄxñ8&Pâ•Õ&÷¸m†=ø=d~é]?â¡ç:üžyþù ûÅ< QNq„~Ìy"K¸Àp¥}Ÿ×~eÐäÒÚ* U[[½˜¡K÷ôr¥®ÃGÑœÒ j²»P“‘ôøë öÙ4~ÒØÐÕÕ‘!j‰ÆÓSR‘)CClÛ%ÄžÉ"öO2øCÃeÙo’ºü\Ë‘Ô&å—ª$ºíŸ|±YtáYÆäÕR£ØCš]Hâ2Y¾´Ä$&BÕ×ÛT[Lž`FÉ×áé›ôÀ\ß…æ(!ÝŸJÔÚ„îW‡!6º³¿ ¿â©â.Øê^#e•}ÿÐcdÕ"0êrí-ììRgûy7™'è ¬¨¨J2ûýúF<9ö#OaçMÒåÀïK¼Q1öPPˆ4ú£ëƒ•ïÀ¤m ­m¹UVvl$b 䌤7Å69)­¥¤8ÂIÞžÑàx]ê–í+¨—ª£N=EÕ˜äÊÇUœ¢’µGÓ¼yìß|5Vc¢WÙ3ŽO÷âîR¯çöâéãÀÆAÑÕeÙ8Û|ÿa²ÿ*jÛxÓ·‚î Š=›±ìC÷rBÊ8ü·e‰Òö'r•┈œÎ;,/`¥~¶]l¤ÙI¹]|˜ŽˆàÎÿ#2ÿl3“׃JPÿO]8A¡Ã&Ô*u'×ËàPiôgÏ“pÌ¿åâX+f¶†Â )N&öÐáO6‰RBkוŸo;L! XØ»´…w<6C“0˧]bÑ*È©màŠº»{^ÌXLú>GyVHŸ“s ¼/F«'NÖöªUžtÃÀ|øÞæ‰Ýá´Qxä( eeW´T;añ7‘±!( £Î‡–BCAÞ7mÛŸ§@?1²Y‚­ïW™f=ùx+–ƒ¿Ð`ПÌNbhmý»8Òn$ëúîŽ£Šˆ™Y˜˜Ø³g¤²¥û*íËÿ®@·õ¾H-|""rrÃ]´ÑÓH¼c`ýiܽàòÌS«Bê\¨‚Ä8{zBíÆ::ðMvæ§‹¶ù©sÉ•2[%«ôu[}/U´íݲb4*,XÙÄÔ?e­8 exa†‡ï¢‡÷¢Ã»»Ÿ™â0¾elb핱…†ŽÃçüwÿ€—çzøLé£êµE›ÝJLg®ä{6?_%Æ™ŸÒx ŒoÿäFly|8@ÓÔkÖ¢ ¡Á²µ}œ«Ù@|ñL¸P~7¤DÍ/¤½}Ëo¿y¥ð¤þ+G:ŸP#ªt^ºÐ”‘Ù™®4=öÆíE5f„ÌEx&ైJ½Šì<µ{}GàüŸãèž/Ó¼VR‚‹&JË5èØÚ™çºã¦{ËügoÏ2Ïïikg¥ƒsbõ-–¤!âóçBÎÇúÕ)…,úÈ][ÃOë'k ¼Þî¹?ý´ªk9C^w>åöl@'0&»«‡Ó>úçSÉ^w·ðGvraa:%XÃÅÆ¨ÕÕhs­7ˆû>Xε¸ß^%­<E‡úðk‚ØçŽ;°áÊ„ÓV>0 ÒL…íÖKa¹Óo"Ñü?¢ÅÉP>ˆÐâ¾ù”HÛ{²æeö›³ÖBÜ„ n"Ïë*¤ø5JÁX,º#Q&óFÇM˜T›a—ƒ‰[ôúx<¶A¸…†jmN¨ŸšÝŽySqߊ¿€‘ìšqå sˆÙŸ)Ö}ÁÍÍ\m5ËÖgE¶Bà꺤’#ö¸±€~£QÁÆÓ°Ðèl!šÃ¢ñY¤Àv„˾7ùlg<ß©»  g­Cƒ[q|«ˆ!ÈFxTßH!¯~£ÕNÜày}¦ÄÕ_ß´v×®o¹p6&ˆ&þR³n°Ñ!:œŸÖa{SSc°¶O0Yô@v¹saÉZÏÂÏô¸†ݵí+â×®í:‹ž'­S+q¸Ä³ð àcKðÞÅíÍVÅõ„8Àªˆq[+ß Ó‹Èª¨øb¾Õ˜»?Xnàt¢$ïýhÀðW½ì99ZxÄQ- fð…'Çâs[ãr„{Ÿ ƒßݳqrÜ¡4^¦£|ÎËïùš)±¸·¶±À?'Gxq©Èd¡Þ¯ÆeßlWæŠÛB(Cù€°0wÝöûò¹“òU~Ý8ú@â9Yÿpá-ø ä‚nËVP,9 v±kGKšÄÒ…º²²ZÕ$pǽ-núçÚÚÞ ÀÑ•²*»§Ëj\•‘ñÇ"¸‚/z¼ ¼ûŒzÙ‰‰×VWY˜)+@"IüÁâ”ÝÃQsªÔ¬¸º~¶êª«Ý‡ç7î×ö¤/_bÄCm¬Ÿþîei'(üõõÏ蘪Õ5vgÌsó.0fƒ{†÷×1}¨1öû“EØÈ¤­ÏÉ„©7oWû·Ï³+*`üW;дµŸM•¿#yZ„Чs„n„w.9”ꂌ‹ûvmu,mß^®noúåú½‡WÑìQ£@údò—] Gw=˜:ñã½ö7x€7(a3ž †QŽ-ñaãˆ4L4Ð耦¹ƒiì”ìÎ..†vvÕ®n'=—‡š¦—åðîcã¿÷ºJÊÊ¢›]¢éñþî™!WiŒå4ãúDA€KØ÷óÄb .Òy1>¦¼òóÏÌTŒ œor¢6ñÝïÃpã  uIãu¿í¸Ñ÷cÓ8yÖï(œ]$Ç&±D55‘õô0œ{WO?–—£·ºC3iÙô|ßœœœì‰!PÎ °¼|fïzÙTáéqÇ9_-ÕóWïG$9®È›4:ÚI»{^®-òùIH? »ð"â‘ê#88w\°pþ!E#Ee®¸ø^ò¶LÃÞÙ™é+Lj6< lìÀYk0g‹}\›.Ðk=<f˜µ{Åuž2c~ά„éÄïïwHæ0 ›Še¬®–¹×{óæìi– ÃÙ%,H\I)ˆÃLbl<Ê=ú|›líþ¦1\òý·KÍ.üQƧî7Ë3…Öããã×ç£";c9” 9ˆ¢ØJ8#/7éâ¤ÿþ¸r$õ¼°|f°BðY³}ûWÏÖbS¨ŒÒhwÆaÎÔZO(&¦j9·ÌiJ MŽ~뇙ªù¿Ø’•³AÞ©ª'˜:Kš®9^XØz5Ú­¼=UUUûßß1‚BËÌY!ø~°ìƒóRc.ÛVª²GÔÚš •T0¬Ê Ã‘qeœ åŒü:?vØ¥ÇMù/Ì/ƒêë‡î§ ²ÌÝ4X<ÿ$b.óáýãí~ÕzP:«‹;ÉøLb¶ù°irja®çv“H¿·bÂcrr~÷ÛCè¹ÊÄŸ?¯±äåU±g _ÐÒ–TWˈ=ÜfAÆåwv½<\Éó8w×zç#:œúƒCNüæìÝëÌR‘ëÛ[GØ"d$ßH=ssZó‘ôpB.Ëlã¾|aoÈ·[ ™˜äE±|ßPéî•~¿‘½)ùI/ÂÅ*âue€ÇºLÅqfÒ¾¿"üg—üÏî$vHÈmªåj§?À2ŸšŠßišUú9¶Kͺ¡jªªü1] ¢û£v;]x›Ê :H+´ëÖù‘Uz€îE“ ‹UÓ]lÈ’hõË ²ˆ’…åÿÇÞ_@ŵmk£(1$HBp ÁÝÝ$wwwwO„àÁÝÝÝwwww£’µÏ>¶Ï:÷µ×îk·ÝŸµ’P0jÎ>úèý“QsVaøúæDs»1C#R«ºCžusq  }ú2ñ*µP¹Ê¼ÏîyüÍí•Í—‰ ÜBµ:h ‰èèhÍ®P¢hv;òþ¨jۭלœœá(Ɖoœ°U;ÿÄ8l³¿vGô,-·#õF‰$îtïi!£EyÝ\¤iêŒð.=zº…ÃõöÍð›y~¦çO]ÛJV*Ã~·|{ÅUb•F„›@¡€º¼5"çxc/’âÏä…tFð®D³å1œ¦ÞàÌêqïZØRêĉ[ßÐ0T¬Å'[ ŒiÄ¿Ù^Ò27Ê•Ë[^lù:Ü”••yÃNbbâlùLýÄÀ€€—£… \\õ¾¾°©©©ÇªhPÔêõÏa``ÊÇà233'ë ³‡º<ÝB€«XÁt°†b¢~³xäXí|FÞÛ×—Ñ™ÈÀm—Þ¿qv,1@±–µ½šõ¾Ùàþå5w—‡qgËת舱w‘!øáUÂ_*ŒÇüØØÙQëpx­ý¾ׄ𼻹¨A Š’Éz¬x¶m3A1¢É¹5~¿V©2ÇÉS««”¾øPDÀŸ@Æáñbæ>–ÉDq¢Pmª'ŠFÉÑ‘ug( ¦ç* êf-JcÒFÑÒ’Öd$þôvF±Db¯´ŒLL]GžbIª- É8𨨨­­­ŠUæs“¥z=é3káµEê ÚFFFÃv`¶JàºN»íw.gÙ½à§öX Îç3í,ñí®®.žŸ HáIáI x¤<i4ÈTŸ gdõŽÚRßâãÕ¯}<»9(4mõz"0}u±È,-Gù¾ÞýÎWI‰J›BÞѧQöèê]ì8f¯U±1nKE%¥‰ÄOx`A?Þ­tw~øð!Ôÿ°žÅB£^1ª¿™BýÞt_š¸SÁ˜¼<êL£GYi©vKKK]Ç·—­®W©çG õÚ}4‰ñ=ŒKOJØ“º%º%下“r#’¶¶”z[[¿à𸳀põæ_…Ð>}ÊŸª#8†ç…$wjgT¾¥ín+ Óï¢9k:>—•—ßjáPPPlÀc1ó‹Šœ–ääA}¸c¦gf>÷±·1Wˆ¶X¤ß‹OJúœÅ|öýH¦XHl¬_~>¥l®¬PAðJó—' ¢Àÿ† n%ëUÁ×g;=bj9;N·á ˆÝc¬ ÔÒ‹=wˆ—ɪ­¶§b8ÓE5Uoº÷¢ÑÊ ô–ö”!N„µxƒƒ¸à~S h–ÝjµZn4BŒŽ‰)l {}Û™*Y¡CYÌÎÒÖúî4ª^÷*[bU‡Œ·MžïDʻºúiÂ)Ù%¶¡Ÿ·r±çª±11øïÞñ^_Žå)ðä#£¢ßq12¾¢¸#/\e‹Ô¹ê–––j*)6kÑY̱Ï÷f|ƒšþ|úþ<ºÁùŽåYn-ngºPX3ú—ûs=,ã·ËCãã‘qµÒ'ÂWd¸ÿ˜æÊ;ÇUÆ#óyWX |pbžÅ hã#J%ú{Ê01ª)Ïd¨Õ¡~ùòex;/--wyì͇R–V5z=Щ¾«ú¤Un²S^–{?k€6‚ë å»R¡1_OϾ¥6›èš,Ñ¡3§ôòñ! §—^S*Ó_Zë‰r¼>%Óïþ@dcfÿW–Ï÷ïÏùùù›çç¹'ì}}}¯ {ÐÛêN€@ (óŽ‘Qözem͘´Ü;«_4`rWêý—£!µ‰R°=ª—vÏÕw¿¿6á#$1xKJü%HoŽ´Â(ŒfgÔH,d¿=4ƒ°÷‡Í'¸9óŽŒü_¡wïïn(‰‰¿‰EÓ~™šœüu±7Ã2ñV¨;(+{fÍû™Y¡v„€\‡®¨¨ÁÞtvÚÇ=½×¾^#ŠÇÒ¡Qä«Fuþ˜"VE|Œ/±äXb£›º“¿ßR}âhŸ Î lùÒ²ÞŸÐó^ ´vtVÉÈÄD5L³ªššà”è”ü8&T ‰(겕òrFf8}SÓÞ€ÀÀ˜††[ùBU6T Œ˜Zá-4¸D]]]¡°&nnn¹¯ªÁ,œ0m‚uèíí `2›§Òh䜰ïn—Ý{"hmMÅ ÿ’–V³££Ãtù§/%>þ‡Z×íÑœîç2KŒk¬è+ÌòÝkƒ`þÇ $M>Çý㧫ÖXnŸÖ£GEº0š0G™©‘O}G¶ûes{{ýºƒšŠjχÅ-*+3“^MMm«4~åûêl¡h =OyœM]ü1¤‘T0 ›;‚p(Ül¢CC[¯/ŠÎ;K<Ü¡uH& Õ8böº]ÚòAÌÏö–¨Aúg±T“Udò>‡R•ùŽ’³³¼ïA)ÜkŽÉ}däíÆ¨|S0еÑðج?¸œO?­;—¾¹ø«{œç™˜<ìììlæŸ5Ü.¿òo§^¹Qû%ƒccù[pMR·TZ®®œçûsþ““Š˜Lp:]6w9;vÑhv\±±Mc¹rmö4»¼ºÒTÿ,Èg êÊ^@?ÿXýë|£›‡CªËÅ~4‡û—é!ä"d»Ì€“Ñ¿dg'˲½ÂÅUÏw#%G#Ëò¥G!n"E;Ñ72 ˆ¢áù¥J|‚󃿵yÃæ"=w‡Q'–[MùC.æ 4j~]]ÂD ÷»k­™J3¨ÏO`Þä™É½Â¾E©Tó “áa4%½yD,ù{2K—G+Këëߪ«Y¶·ã311MÇ—vÛEãý™Lš`𷆮w¯ÐÑ¿od­=ú,ˆ„†M aȧÛƒ¦¶þ~ ã¼’’ð¨U«ßV% [' ñÂ}PW/Tóon~¯¨¬ùëLÌ¿÷·u‰#dÃñâY—&|ì S(Œhw±%®}ú^,*S½_DýhõèÓ„¾Ÿ˜èhZ"ë÷¢G†‡‡[`•ânøø«¤JË0(e‰›L~å"ë g¡ôï+ª±±›d2ߘLÆ檭øjwo߸AP©Šˆ®‰Ñ[1 ƒ2ƒ}ÐSùÖkݦÓåF” eïVí°:ɘ ;ƒpòd ¤ ¸A·Ùè/1Ëê„“>·ãU»F)"}È«6”Á‘t'·²Î&Y¯ $^eö ô¢‘±ÉŽÉ7õØ`k¸Ì´ MÉ_7Xk$³®Òd"Bûà+–š*®×'w9UxØñìd ¥K~žçz»52y0­±ÊÆ£š2®Õ›t[…ÛŸ~á;j¤yß‹ÊMAáß—Ä“„A”éúÚZÄÓ“7×övW1M<Ñ×××ôà7ú††¿ûýB×$ã<())9ñ°¼( ¶Þ§#–Å¢ßÖÎÀÊÉQW":ð ¼µMíúJf¹.â2î¨ðPökÝ(òeúbö;ãT‘íñññÑ114’É Â!¡él¬8q«[xPW¶–BX .+£N¾µ ·-Óxìøò”Li<õõÒÁA0H'ä³JJJ,mm½á ŽÞDë:à‘°¼¶Eª4Åx¤³”mlh€±tË?)@J5Ïo #‘°‘ÌÖ;!yýø„„WoÞx#ùœ!ຫ Àƒ¥v´É …öwm<·_G逿¼bNœôAÄK¯âïêékEØ ùd¢ìlRVvvíîp ïýú´u’µj.Á¦æÌÆÁ¡³Òh8_ÏVi:å98(9[clUëWÄÅÅE¨÷îA(oÖRSá†~oÉ|¼¼RC1 yn y/[å ãg€°ÁODÃv|»<:˜ÚÓËCüW/P«uf«ƒ6‡Òè&–Ÿ‹uiˆ±!H³ÆZσx.• &¬ ±¸¼Ü+#ƒ¨Òb!™D¼¹¯žÃarìíñ‚®3Ê uÞüSø|Þáèw|œ>jciùþêxÎj™ßõîZnßùغŒÖ‘÷§6ÝË—/g,šPœã9º·†MÀô »§ggV‡‹vgk™ŒG߇‹-îBúgŠ®ïBÐÙõ ŒÌçÁĈèÜ™HŠÀ”U‡<ïtSª¦è~Ï¡7 ™Ø‚F$!´“3x‚c¹k%¦SP…mdtÿiE¥±a°›W»ÂAíMWÜh­×`-PQ¸ž~MGGuضp¢cl —¼Èöª/L£ñÑÚo¥ý<ƒwwOŸçî é\- °º÷-ޤÑZï‹C»t$ÍbJªwÍÕhj´M,+›'O5a_[[«€ÂÚ‰®Óîf-ÕX]MˆŽÑÕø•o½LOWö1)ïhûþœÂ+$$X´(©Á‘‘%vlÞçøé²Wî±—]q¨ó½½”  ΆÛJ¡ ¦gÍd4¿{jye¥Äá@ýgG‡öh¶¨,ÑDèð‘Œ/õ®ÝJ’ù‘ÍѲ~ðj=úác(#üúlR´5ÿ@±÷Æ(zÔaW “Õç›$HíQ‘ìÐ^¿~b` ÁÊ~þád©Á²ß»ÂBuû<αON¨Ñµ}ª)d;‚ñYXX ØNM““SIBL,ì‘O|ü/(ã¸"~±9‘ÈÈÈ »R‰7ɪ”˜è‰<ÁÞ%½kô/˜á1eù¤¥¡µµW„¾gŠH ´}ïWz!ñÊ ô«/:;;ƒôÂØïN†˜$¡s¾;5Yª÷j˜HZzúЩpÆ) ¨W#Hh¢⼧‹ÔÒ$ÝææÔ̱ž9‰2N\l(+( Hj/PñPd)ÂŽãt².\ö¯çÌP¥¬Ý™à“j¬§Æd¢¨QÕoÉ4UÂQT”mÉ*ÙÉÊá} ïíããÃ;ýî)P½áãçíþø¬î·Ôçû8ˆ2#ÂÂ3ˆh···é#¯RŸããã•â9ãHqiÓ…qä=º’P/û…´vtqÑ œæÒö6\ŠäsAAÁÉÉIKÈ0½³ÛŸ}Ùœž~Ó£‡j •l¥#Ãé¦\ÿÅ»‘ŽákT0o†ÙWŽl%kŽßÍ}–D×È6»º-Í–Íay\ôð:5ýù˜b". y”i}UÕó7ói+:??z†ç­1†Žžìzu¬Xnøj" ~àrF¥DA®àÛìÏärßÞÒ‘Ó3,Xâu300¬°{IL•êEs»±k”œ—ç©PðUçø^PP­­Ü‹Ci†”ª“‚ûìÖ/˜Åb£µî±à`ŽŒÈàï>&É*;8ø•–qtÀã+öOmØëÓ)?ë5÷ÖôʈÏtß®Næ¤R¾ÈSД´%dñŠaNu:‰f;A+låVA¯ùÞÆÑ±·¹Á¥ˆÖv“Úõš_ƒ‚^¿¬wäÑ©U"(`ºpL/ã87Èï¯6®«P€ÖCÁÔ4BƸzÅa©Õ⩞-—wùdu{'ª¥;â+D7ÜÞµ¡ á+•´"—”À‚®})¶$ö_`°¶âµjt —#äʰ¥¥î¸®àß…“‘©ß:4ôÄíšQàbþDg@"“çN$ÐaŸŸ”²yøã;­hž‡7Û£t­éB~qMú›ó ø¨TÇïå#?iíE~œ(ôníÛC/ƒc`è‹mCâ–.PþVm©Åœ+ÇÐüùÑÌÖÝ0qÞO"‘ñÖÖÐãùªÉg'”“²ʸT*±+­Þp°…Œìö»Ô¸œŽT*WgærŠÇ !ŸE¸;ï&—²I ¹¬o9ŸÉÔô¸Ñã8ä=¹9ŒÃÅÖåZÔ5:›5 '§áW½‘ááÖoðXÍ+G£—‚Pnwã‹'ro#‡ÏN[ž<êçœët¥tŠg¶'<8LOº|þákPìFgËâÉ]ö±„ÖÉÉl«ûs•Ê€Ï%%¾T.ÑuÇ/ ¦¨(–u`µ´PHb÷ÅÊ [Y mŽ›qul}&¹¦ÐësÐhïl¬¶nd·N¦‡ëG÷ råáñŒjc=ÔZÏŽ5Îk|/×蕦Wh*•ª­MšGË‹G~,ß°Bö€ÙpÀí×V—‡„Œêa;?žKe·|u€ì_*–éJ©‚¸Í@,·GPU4ßÞu´z…×onl.,< ÄŠkí3£//‡ãÔÏ•h4‘ÏI 6ŸÛ^Úºi÷/ ?:‚ýVdñ<>Á,B>ÿ7³y¹w“:'¹O,1åî“ñü£ŽÝ)®lE¾çøÂŒÚüØÌÏ&Š|ZÇíY]…ÖØ Sß©×;7ºUáSˆ<µ8¨‘ÍÇÇ$£¦†ýøů|¯ÂdªìÌØèX}1oÏÉðH4!oˆÊ\øÙí†øM¦â“·It¦ôéL泎¾ÁxaþotÂâã¿dˆ h]VnNWÎá½ÈðEgÊ庿Aöõ5^Hªíé~­Õf8üóe™Š ¨ŠzjµüÅ-£``‹˜ù?º¯²¶–`±¨·vèsO0{FEqÁ_K0Ê»º¾èFs®;=¥ät½„ {î­Ïj… {Ê„dw|¾‡ö·™ý1˜4Êõµ7žvæûgq@ü¤˜Nѳڑ'rʰçS¾Š¤Æ‘Ô¾Q-Õ…ºtå/8!+qËÍØ·Ø7`i…!· G‚ïõ#5G£  ÐI\§žŸ?*ä{‡Íø¸#èî@“ö£IÀ*?Sß)}룔FŒkn&ýί½¥S¢è‰L²OFÏÉûýµ·O§ÖábÂàÄD{ ƒ¿lõ38Åâ¡‘‘–l©=ËÍ<^¼V÷XáÚû ­G+Åú}H²…ª…?ÏUR<©#©°>ëtî/ßße¿ž)ª­±Z!RU³Ðº»N±Å£Å÷ §.êòæ@Épfüq›ÏAŠŠ“F:³Eãwï\´.•L•æ89‡Œ°RDGGBP’‹SšÖµv”gø¯…Š˜®)?~ǬvçzswcÁw¶²´D÷D.÷íÝcÐk…——tøó1™`[–ò<¨â=©$=ºCÄ}À¡¢µÄ‹xm@ÝE“ͰñôúÜÌŸOù÷:‡ ëõl/6Y u²féwzÇ¢Zú1=ƒ@4÷©ýnµ'äB¶û[uUþïÃíízh¦~ÃmëÓƒxóW¡p $p¾H©Ø !éÌgÝO7‡Ðqq$K´§´+=c”ˆUX<ó(à‰Æ ¢°nPL&PÝß8 (5¹“¦¦rkÕßžœ»ÞÇñŒ; ÑÀ@¥¬²´ØÛŶ®%å@rI«§ý© èôôt[ÑDWôž(­¥VîÉF7F[[?ýèCÈ5ežž©‡—V¶%ùF&œ«+Ò>ZvÏV*ƒ3°ÍÕ{îâbb:K“šÆcƒê“keSÏÓdèñåK?…5 TSÑu:l›C–öîÀ··Þéé/!ÿž°==h‚‡…5‚pÑtUQ›Ý'¯ðè" -Íd˜/É–:Äó8Ô'¯}Ÿ$6´}…)BAÂÁç—ôÄdG¬Úã r1Óx¾ʸ}ʽ‹í®"äÊêù† ÔÏÄ?>¡cãp V—uü´cfÚQžÃí¡ÏŽ”Ÿ“HŸ†&vûü?¯ªY_ne]— òósššV¯S€&yvtØÖüeF X04êÞ ìÁ‚òë㯱öNBéXàQÝÿ‰*¤$ý~ýBÒ>Û~Q\2…@A¡syE%y¹ÑÇ+¢caoqÐi]»!ƒ8ߺÒiQl•f–B±Ù\@Õü ¾ÍrO™ÔÕÕØ'@òeIŸ#"èÖû÷Z~G§k8˜Ìî꺹Œéþ®j©+¬ Äá×5Ç…”&øà `Å¥Y€wTιÉÙ™Ý{¾àÀ{v†ß›—ÎÕ-i±k[HâyÔþœ‹·†‡]G‰ŽC±û$6½Y‘w!õéÎÄ˳íÍûZ×P+«V:< ÷-bÆXãÉÖÙWh™Ì@‘@5¦Ö;QtñAqfwš)R?hM}míÏ6»ƒé¾Јó¾­xœ×dž ú\^¯tصõ”rŸ¢—å;.®ÎÎÞ=¯AÍ Ø=}Ì€wN#nèõãÝõ5 x~Û`J¦–Ö÷<:g[˜CGΌݢÁgXÜI0 êT«Ñ_½:êþ.TÀÊ–à"õlrt7"À¨O-ä[ú ¶ØbÁ._‰á)Ðôk¿½ò©BáKœØç*3ÌѬGHb¶Éú¥¥üÅe —&‹µÐå 0Ÿrk°YhÂJÁlm)‘ªTZr™šÏÁ}­p{ü]É#¯ ¦#úq*¡×/IÒ ¹÷>yVGÚÏñ ÖéÌLv>óž³ùFµ¿ÐĦªJ­3S)2Ycª#•˜ˆhuuÌP]'!Cߎ÷Hyh% Ptîoeг‰~Kßô×aÑÑÐ.7+›cy°ß-þÔ)ܧ·‹:{Ó)Ùj3Ï=î·|'Šxt®Ž¿[õЅЀozp‡\CÙÙ62”ƒˆ!øIYY>ÅÂ×Ïïú»…]t©^O²õZé'ñþ÷@ f¾È•=[&+w¸qˆÄkÕhÝHš ~Ð;^þ×oŒ\sSKÞEêsqáµöï³Rk¨¾>Ë#c§Žˆúñã›ùÜxšB1${K¿ÚÑÛ—\×DÈ©Õãi ÄÌb±?I³\ó{&:+ë1±_ƒ%hwwƒÒø|Ø'«,Ÿž‰¬÷½"‹óÑÚ¼C‚kgu¶¥§¤ ¬AðEŠ Gø©ýíî†ä#VŠd@‘ƈdŽ´ÒÖÞ-<»Pöè,…i¡ïˆ¼~-àÙíÔC6–Ú7·z»iš«§2ðÞ¼¹¹ùüˆ  òEÉ¿>v¯%.ž8)ÖWÓL¤¬úv®‚bî; ÓEm"«âü| QL€"<Û›yiÐßËÿéÓK+w7O’-8.2]_8|ð†«… Ú…Ï¥¦¸©’Z^ñŒ–ž<ÉdW(ŸŸÚS_‘yßÐÐÒ¾^éÄû\°g¾¹³Ó:á€k¿‡©2ÜŽ %€Þö±?ÉG¯zy{ ­Új%㎴S•…`sÛ 7ÛpO¾–ªú„MWäiwh[­ð`>è_œíH(6Î"d=xö'PýÞ|ùDWaj„`qÀr¸9〕Èå„Ô±˜:³)ËteE3 t© c'0þŒô =TçA-%Ð…?µ1‹¾!éÌ[láÐÒ){bdáiÈ­Äb½¬þ9ŠË>ÇÇ‹­×œ¾·¿hO¦§÷²´´Ne¨Î¹°¬˜Í&_ËÔô3ÐXV8~Ãßÿíb½K-‹ß^+õ-“‰|ËÕÉy¶Z¹©©ýbwĆªì6«%òHfÖé&ÂdÓCÕ;15Ñï™=½oø³.WT¯n¥O”ü„¿ñƒ\9 DÎc•.$"V7gvNNýTPMª> õžð?¸¥øù±99=ß¼ îž)ßzÇí!.µee¢;44,HÛâVj‰L;ÇÍr»ÿ£7 woA’Y¬1/Ì=Üm¼ãfÌ ùÈ#øßÁ[Õ쇢®XaLÛ÷Tàì¯F"?8f/ÒáÎà.È åFeËôq¾V¿¼ìõ*Ý¡r™3G;Êux´h:œb­6žÍ™*Œî¨ 9~Uò­«0Ehù"Ü—ÈÈO@ÖʃpvZ;2ŸÅÇ÷§Êô¼Æšª%|ú”H¬<Å*sR`æ—c˜0 ŒÏþ=¤Ñq -ËíïÞáRÈOJ¶${¥§ëjO3²€'-/¶,h™Í}‡(z#`Šý¢8n"IÉ'‘RŸK$u,ÿ ™aµYç¶µ-§5UÄ‚Ü#*Fa…+ Cÿ«%…L9>Á e(^øµ/!DbHꓨFÈúISõAX˜Ø£¨É7Ädd8ööƒ .|Ü, ³;WŽh=Üiv§P;ƒæZFsÌ-ZãDv¸i Í¿ýí¿¥=œ€_퓃Åá% X\Œ™ÿÑjõ Å”\žòI–;«í/<‰$ãuÍÏwv8@Û”hµÑ:n߈©C¶u­4v<øtúÇR ~ĵvVªú@¶K½^¢>Î’Àº©úǵÍsu¯ WRs» /±žmJ1:ŸM?î@¤kÉ~ù›°ÎGì蕲òcDé§4îͱLó†cÆl™b6À¡¢Îη X<údL¯çÇÓ^J–®ùªÍ§J`¦U±ú°œ—¼+wuo†f²tM£7Fž‚Ò,•CiÉN66¬ Y0-=;¯*M1>”É€N&É |Vß°±¸3ÁL€ôT}Ò­\Ýø ûŒ¦Š8‰‰çÙê ï zžÙ‘“tµ¹ïµÀ§"ḁ̂ɒ:tVK÷{§'Àri_ÚWÛtÂîøTÀ®Iš¯Ù¶rîœ.¨þÝŸ«±¸h‰ éÌÞ˜&k?ÞÃ+NÓYÖ—‰íËàpª>2 {’Jl·”Dc†á›î§ìX>Ç÷²L–§âS­¦Å"&††8C‡}~KœÐVËEbb n¯_•—7‡È0¹Äññ»óG¡ÿ(IêÙÊ]ù*Õê§6,ä&>P&†Ó¶ÛWlNÈ!ˆÓÜœai½íË”g‰£BZŽ(yw=Fk¥–¯´o²ó–Y¾é‹SÓÆ>îsZGçi£Ñ^¾³…¶Õ®90­g§»SŸöú#>‚ÙtJ68 P*Fý 8[:Ãr 6qíÕ_ “õNO߆£h,B©9E/ͽìtâü…¯,=ŠÎŒÁ»¹mLñö/£+Ò›7Ï,4¸~±9YBÍlû¥Ñ-ŽWBÂg …w‰ÅŒõ´£éûë×6#ˆØê‹Ê¦Ñ.q>{v{®‚VnnÔ‹‡»ÄååS+kHËíXµ·¯½Näláyè•ówA„Å÷"¸â+»]®öù.²ãÉ:òzßNŽü\¢Üccbý^V?È=Z‰%è´ÉÏ åPùÆNDÖ¹VR‡Ûõµ4¶vÉÓGB`;x8?¨ª¾ÎÏ¥Õâ5˜œ®ôމÙFÀU•…{HÏËÊz‚äë—2<ÍÃEy¿y_¥ÒUJ[»Š¥ÍIŸÉp0=“ „öÍ¡ZÝO&¶…¸U(Ïž ´´¯ÑËç£{AÃçþöPH(GfÐ9»óQ‡Àê²r Ndã–v¿A‹ú~´¢ö ùäèÀ÷q̱z(øDBoùÞ‘Ýk¶@r¼%…ˆ%Í.Døòâ@p©Õ[ÓÑ…'Õ¨#` Êdç£át9ô>y„t-1Èß—£­­a›Íáva*˜¯ ³ Ö——|'hÚìX…ONΆª,XÙš*ÎgeêC’¹'™Øö¨’®þ:§e*ð"“A ßFñ{wDN¤°ËÑ2WGàL°õZw3 lãÑì^`W²Àã·LLe“{ºúÃTRé¶]ݯ!W×þÙøtó¡íÛ»+ רv;˜V8Ú¾RÓ›rþh_Ý1n:1ôöx†‡K‹ÐY‹Ÿ9Ÿö‚ «œÏ4 ‰3u€Q+ä뚀àW|ü—A)ªµÝž2"h|Ç êGw×f|²£‚…|ÒJ,æõ^}öýyÀ«²ùøüNÏìBâã¥ò™½xé¢Ï½`œß ;<|~ýÐÜ"Bg½ªþú£V«—xµÓ âå›f¹\œ«øµP±å’Q¹‰Ve¥ Yþ#öú'r±´›Gð±dˆÌ׫èï€@ Í®Ð{U> Mû©òž(L,»Ö Apàû÷jiµä_½o´úã‘Ïà[Î÷ÒhuŸ‹}ÿNN£q«’:þÌ^ÑW¸\Î_?þ²ôŽ”ŽŒ,&[±„rº¼ä}}ÅP¡£‰<ß0YÒë¢m,à_&ë X:‰&èìåðÁ<Ÿ ´ì²Ü–ý,ý‚(‹ƒ&h—8^"Q¼‡xwÅú,™¢[™ã£oÌúb[ ¯™Èž¶¦ 9¯R¡ë›\íñPÁû‚y¢¨é©ÎÔ×SÇ4…ªNAKm3˧[o±9/9 FÙ‹ÔÛ×÷QBYÛé–9:§#Éù.ÆE›¨d_þt³©XÛ¾Ö¶$täu•ªš…ö;ž£ÓTšÌÖ‚MÿÓ³›5ȈK×ëŽ0$½©†Ló9gXÜ`_ ‡å×°| ÕÁÂI—5›¹_‡¿$ p¦î˜(ÊXOÏT$$$ßÎà´"Þ c”¡F73Ðü‚ YRE‰°gÉdøDÓmëqéÚ:I m|¸%CÎÿÎÊž–wÖÊ³Æ %c—…šËÅ<’{ýÄI3àƒ†ÚÃ-CÔþZ?>ß÷«‰¥Û«ÎÅ£RÁKh(**ˆÞ÷ÇúFfªÙ´ËÚà{Š•l·£ Ø#²õœòâ;ï@6CjxµÅ‹…:¨_ûÃE ò^Þí-³õpæó·|kæq÷·lÏö¦ >*+£¾„ïYÎxFKG÷^>òùÉF][Ï>p‹ž­qÈñ1x^VVº«̲qâ¨{o6=…#hm €—¨8{ø¼K€0tÀ3§ÓñùC«dß3€ØÆ;ˆg*™!…ÔàL¬ê£¢aŠg‘+ÇðþÓ§—„¯}Ë‘  ”•]!÷tÚ¬“ç€"44‚M–jqð¿ÖÁ¡ÃóY­Ùô9×™£Ðበ‚`çdÛ]»„p‚>äS€6”×°mk=éí±7PŽÏŸ;z …!@º–1”hÄŒ¡áe¹Ú”l™Îç=‘ @ÊPª0CdÖà“o@-³Äê:‰Fâ°Â:=Ëlzè-Iú´ùGt4´Ê̘ë½lA?~ cssÂ6ÝÞ¡…%CΛ¬øÑb ÖÖFàÁ‘c½*×Ò12^’W,Sĉ3™Úòòë£U¡—‰œNþÍͤOŸ €•}îvGÙeÍ/ÀjéÊÁ~7˪_ö“ïy±V€ ŠUûxP/KÏMõå1= n7>^m«v¤[õy÷“Xì¾Ø±æý¹•ðñÁ=}?Z›u©Û“äÃ+ûµÛoKíþ¤—eÆ€^ >SO /§ £¸íÎq46/ðC^ú°»¿%ÊàñÞÌD à·Ÿî]$!| M}§µü´°ÞõêÑ\…—âíÂNE%3ž^·ašv»5d³ÌBøì 8¿Öæ/3kÔEr=Hû¬(Õ sßÕb›[RªÞµdð»ºÒCfÒṕN $¼¤—TTÜÛEßä ŒS^Ø”›«1¼'–›·ê<©«ûœNÏ«PÝ-¨Þ˜ŸŽNãðP‹Q¹‚>ªN\j® ¿Jñ‰îÅ9DgMùhß^ŠÃ-4劈õñ¿Oøô±{ãÀÈJç\MÔCwÄÆà8êê¶VXØ'®®¯;¦|Š‹ÏN¼x=L×\’çÞ<¬™¿ÿ” ý9¾Q®n&K­uBãPP±³ÛcBÊÕ–:¢"ÙÏ<î/fmÜOÓ’× =yDÇ£42s2mrKéÓP(ì›?«Çr»9–uB—Ûó¸ç¹ù+亹/™ß#''—RŸg{moeàhØRZÖ42ß0µ@¢ßÆÐ”"ë~!ok+qw^Ň‚3'24Ä5–ñ¢M¸Ü¶/²xk¤SâájÙy=&Âùáçøø8×6îè‘xÃÅüÄužöXaÂMëL-SÚ¸977÷üöpÆ×Hê;³´²ù‚À&´ÅäN\ ‹¦;¹@¾0›1Œ¨úÂúz›é2&’CJ¥È¡Í!…¦—wÌPŸ‰£ÂmùŽò˪ª2:ñªæ=<ääÔ„|e<.ÛüØëh°tNOG(Æò&"j×"7õƒ gÀ*­þ"5›­nV[%"êÿHdŠ€ÓA÷Ñíºú`+ßCX8¾ûkÊê*»åb46kn"ËE>aל€àÅðhœ­-MG‚Q{¬ÝàÒçÏÔÊÅ‹ÔíÃ:Á Y:ý£Žh56îwÜ63ãwc 0k{{¥¥ÛUÄÁ!B‰.rÍYÂÓí÷°·24L›‘¸Î']Be·ºÐf*ùÈ)¢NÏv.Æ.kÚ– ì÷ê™,æqbiµ&¡Þó%ðhä’É æTW—wÔ™P“’‘(hàŒ âíÓ¸/5ž„w(–¦Y[‹]¶)ÈÁÂZ»‹×³d8ƒ( ;£86]± {Ý[J) Àt»_ÿÆFOI>[¥ŒŠÍù´¼ñj]Åí¤¯jºŽEåæ|”`¥ZX¤g4…C€ÿi¶Çƒ&×é éݦà??¸qÕkÅTC Îãðì8‹ý¢¾¶ Íö»«¢i< š†“~s±IÓépi½øðãB¥¦û3;çû«£JÑ,Ñ„koŸ›Æ›ÈÍÞ˜“ˆû`8¸~ ‚¯ÖVê{©Íq7š¼aM_uõ5‚ ÕIfwh(Çuöó±ÌfÑ‘Ôsù³³eÖ¬ùÊu»Ê‘Œû7×W«ãu_°–'Kœ×"‚w°M o¢>|ä7š.×"4Büðrt²dhÁá†Çg®®ŽÝÎxa‘—3¥¹™ºv—>)¹Ä‹Ãžž&,Þ?üå‰`DhhÚJç QÄ2.n2˜-  ïÐPÃÔñ´>ž–ê‚“O­C©ëzƒ9é?®t"ŽÇ³Ÿ¬Ë*É;5™däT˜4Aú­ŠÓwiµ«¬»Ÿ{-Öžµ~ÕÒqGÂ#6]ãÎx‘hb!ön•$E¹îü¢v#±}ºê@eBg²¡¡áôl‡š]kÅ6ÒèîÚ­YܧM¤ër‘ò§1 ª¯»”ò=ál>Mã§1, ×&{éŠÕOJ1CCiYgÓ&IdÜ÷}˜'’:ﺖårdÜݘ¬–%l&(X«UÊ: “Kñpò‚¹…#eÝ÷9-“>R%Å:‹jiÝ‹½R޳¾w͉¤º‘Öp É%Ù¯KÇ} oµ.š"-$ï´¶ùÓ÷ø§h5Ê«WÉß¿Cbœè€êÉõxxûíóû@ÎÈâšd P/ Kd$¸kT³$Ðj÷Wk¬£ö.†a æk™øÐ:„ŽŽŽ"P4u0 |„V·ž3ûðþ=ZêÕg÷‡­…‡ùÂRz‚žÒr·ü9§ êÜ~HÛò4}’¾zDIš§î²‡+ ÈR¯Aµ¿¾¦g´9h ƒY–ñl¿NcËã~ㅞdž°ß§5¡ø({E‡Y«‚Û»"ÃÈIûƒþa—·=LþRÊ Dì´g\ªEXæ›oï>‹y}»6š­þ  ‚&$c¯5H‹\hàiód04ãxdÑX#@ÓTÿ‘D"1Œîã‚»‹0—‹º3ýÌ¥Œü¸nNOWšÄI©ö¢w`Å842-=@¦ŒV |Œ$1º½ÃàÇ„ß8òê{¶Ò?ÚÇr1AQäšêýb¢g‹rdÆÂÂN¤U¦ò+}æ-ánÁévžÃÐAQÈt•Ãæ€Gb~vö[®›]áˆÈÈ-ž¡ºÍëñ‚­ÛØÉÉ/ÎGí¾Û“!‚½ vÓƒûýüojôû±S uSª÷0ð$RO(#CÝ£Qv€§IØãþd•8¸=MÏM¢ [œŠJæ`¾±öb~‡I«UÓnÇ~Ëð‰eÓTY§a»_‚5{&Ó¢%ÈCNNç´‰z‡£ h@DÄûƒ·Wxd$á!Cn—‡]ÅÈ-‰´ééÅ«_3b`Ȫª’ Ÿ5¨Þ]_Q0–û˜×’I¿zõÑRDûy±¨Xð#ãôÝ]Ó rî=áÃÝ¥A¦•`â×rl6¾]œåwõÆPpqI\Ì"§ …A3NÑH$p8ŒË)¨ÚiäßÞºâ°Y§wdq©åãp”žŽìÈJJæ_,4©$°3q7?Á#e8 _ï­‘âûVm÷ &Ïd¢Ð<j½zÇÑq]4„ûŽQ ϵXbj*KOi¸Õ»Š‚ñT˜E@¹¬@%x³‹„G@&7§¬NçGròíá:aG JJQ3÷6¾r²²éÕÕ¬k.ìof„ÄörW:9Œ~ý°XÛ›+>H^Ö¦q; ,jm;-Ñ1Bœ<þùó§a<[7ƒr»Ð÷Í@ÛyáÙ!Ý>šÑ,b‰œéÃÖ Ñn7{dzú‰²ÂÝR8¬–²>ˆI²úëB8Ü®ÒÒN4ÉÉ…pˆ4^^¶ Ÿ>9€öꆙHîÊ·i]ß)jŠÙ’Íß¿±ëDOãói”IâŽr|ZäADA™_ gϧËDAJ*©¤SX·_K¬ÒÙþ«·ò¦vkû\!½]]Çk.§gaþ˜ÅW‹-œjNz‚v[Ë 7ûÏž=#cd5³{ ¥ì“ÉŠ»?ç"ŠÅ¬»Y9“ú{¶¼ªzc e{§¨ì´,É[u‘ˆÉŠ=¡»§GFT4€ÝaÝóI1—š––&XÄZ»•~O?aázÛuQ»õÍ-Ieï»›‹Ùa ‰¨S¾Ôõ« 2†“tÊi%¥3U<<÷«žGµûµ’zºá La‰î¼JJN ªÃô”àà¶sÝ\²-4x¼½Ï$ ½¿]“h v{2Úìg>W[±õb­·Wtmuu’^K§³:öñ >T2³Ù–㤤··÷t­,Vu»·WßùÞ 2òÊ–å __‹ÄÃe'Oxdd& ƒ¡²÷äòrRJšˆˆ±û§\44"8ì—Ùééõ"FüüŸ kso.VzŸf[,à:û¡ ¾”·y €_Éí¤;)KmT{Ù”=×72{]±Çzž_‹F;m¶)a&aÄ¡!cËщˆ´„ŸȻBÛ–æé„ËJM¦›¡XV° ¿ï?Ôxu}܃¨NÚúøÕÞdHÂÖ鯓S‰5g{Nª§ç h·÷juö§ïG߯„?ú}lÒû{5Û“>ÈŸ;µ$e¦§ wáøT¸8D½i”XvÌ©žÌáó±¶ëc:w.¥‘ŒC+&;È3T}¨Íã–Àžù¶‡eh{=ÙQ‚ls~RËu6*£\k»%0¡åcïÈ+SYxãl/ÏjZ˜¯Š˜ë®:44Èp¢P4#w$B¡ö «ã½LÙ:scc#<5‡xt ±h‚™Ú˜ÙØ ÙK¨÷*-NÏ×Îo¯NüüýeŠÔ —ŒúH`w¿­6q×ÖNÕÖщ{×ë\S†#Ö"¾¬®y}v2áûõl·¬j'ÁA37¯Ö…2¹Å4¦˜ÍéX÷kOËÀž]¥\•_”Ù³ ”÷=#ÑM3>xîŠ7‡Ç=ßŸË Âáæa«ð*ÉõØ÷c æØ­ñž„=C8WžÇû+%^}XL–‹ïí6?¼zõêú° ‘H(%%%4ýóg(NGI===罊‰Ñ&»íQ¡'0£~(ªg²Ø¯fK) ”Ê>‚§ŸœØÌ¥*VôOCn ÂÇÇ?]½Î\õ”É,/wærÎaANQ1úñ“'¶[Ò}I<---Ûó u¨TÊ«ä*ÒÒ©$I®ÃCIÜnµp/^˜¨±ÌàAi’ì³+LU[¥AÃc¦#à°“22ÊZ4œEš$ê))7¹7ðòò–kµA÷%r©Üßßû}ÿ>ØA±ãv Û)^.KDDd·©g4–+çççš””´¼¼,++»«1Ó¨¡¨˜íåõôÙÓ§¤´´’ˆœ‡ŸÁcÎ΂‚|BȬšnæÞ #§-.j6œ‹Lk}%$caQ 타£lË‘›K1^;.uä²Ë;S³ÿxögu è<1ggç´HXf‡›1qñ ¥R]_ðؾ/}|áþœÓ˜ûö/,,L‡ûîTùÕ«%r™’|B“qJ›õ^Œ“‹¦‡9Ûñ‚v“w]³wëXÖæé@7˜Éº àq›VšN gëŶµÿ”³S‘›ëæ<þÎærž¯Tm™¢‹ëzøÁæ|W餪é®`Ør_1{}Wo/cWW11qÇÏöö±Ú~‘©ûÕY÷çP†XÔ뎛…6ÍÍïmÜ.bòó)h»/›¾êЦÓé±h2ÃuÙ¥c0¤ Õ––‘éË–JÛæô¨Õ1øðáËH›ÍºhZäãÐÈH}˜½™*–ì[›.…{ê®tºÖÝ™ªB"¢“¢†qNÐl…N{7œG^5GX}_žÀôBþ²Ì®÷'ì(¦ÖvgfeÅyz>V˜úù“ŸA¿]'€N$Šš©'’Êäh/;·PqÇ£õBÑÝÝ=Láá°õ1#c¹TÕ(y0‘©óù®‘ºÛ™œŒ¤¤fww·¨»{£‰z;Ïñ¯_ŸN¦ ’ä”ÏOxŠ˜´ÂbbŒè2«««§ëk?Ñ aÓu ¯Ø²ïPiÈ©OÆs»M£Ÿ´1²»}pt¬îêºb(¢…‚B^…\ Ðe%V¤Ñ4ïåã3ñ'Ÿ?Rîkù@j·Ê" ²*d€@5ܯô*VŒ­­Ké2o«–è:@2ÆâŠkÂuHtËè 3Ÿí„öªÕ©ŽÌTš1ºù"ÐcÛÕªv ÉÕÕ“·k4tKKKÄdd]è:½—G+bêêêþ‚rvíÊœ(Lgvh°XåøyœãDÆ{ÓÓ .UÒfÌëÄŒŒŒ˜"9\/‹AOÉn•Œ+[XZvuvf Ñ©)Ž÷ôDòÝLv¿…¿åc¦jwí Àñ44üJ‘OÖf`(—Zšº‡‚â°š¨éž*3šì©šÇÝ™r½£UÅQK[k«jÒÅÎDÑ<:›}j†ñ¯{\\Ü}g<” P^¶f7îöööÎÔÑ¥X,棟=)7›av;Ÿ2ð þH3Èû¨TlÚSª×OÚqëþúá¬S`ƒÖ؉éw@¬ÅyŽf}{iE¥Z-955ËéTš)ž ¬SÃívm¸ÑŸÁ-".^X1/r•VT”ÄŠIBJú)''‡¾ã:ä¾+£Î œ sƒJ¨fñY»Bz€®ííí[þ4ƒžÏ^äRy,Á'r¹È ÃedeM`@€~j›uѹÉãÁÈŠšL“™‹¯žžäcq±±ÊF5ß"ÅDEGÞø£nj–|ÿþsú1VGÆÈò Ù4ãÛu$•Êv`E£#æÛ‚Úû6GJ-Ð*›v»“t8ö¢ ü<Ƈӭ‘ÐôËKÇ9—ƒå2ý@é™ðX̆àphý/ì„sШo“—+ke2E‡<\ôtu7ã,‡ ªæsyî¶$B'ÁRÝØ€¥ê #Y³d•à—•è,ž”¤aææ0gµ¼²›ð²/†!kØ5(ÁPl{f!㸩 <üÍÞT™ ƒAÿh8™ÌvÃpºP,“Iäðð0DWxyy ÷ÈýFNºˆ<·Å¯_¿^ÝØÈ‚¨NB>°ÚjEÙ•ÃXF%ÿ¬]eBís\ušÎX{Î1þ1îw×17ã=–ݾá²ZæÉ‘! ÑŠϺÚÑx0~G@ –©o±åkßz_œ N[fªßÊN~‘©ØÈ™‘˜ÎähEfÙ ¾¯ˆÜ†?~P­w4GFínu®á.Pë%Ôû½¿.C$*øð8õç°B1““Š º¿tD×VÔ¤¤Bœ6S|ŠŠŠ|¿§õõõ]?î¡qès¸( £3]çÆ¿¹ %=˜o„ fò«Ð E.žš””˜ÈŽ………Ë››8@/ÖrV&.§›R9›Ci*ÆÒ ùví2™ûÚ/!mJ©cŒ!™þªñþÚÄng¼ï,º¦ô˜ Œ;œ8ÂDöydÅx¡ŒG^ùP(BZåÍë×ï„„…„†¨ªf‡“ ¥ÐÒŠ‹%UªÌå~kÖýYÂ÷3!‰‰…ÅÅ´f jtttg‘EU”yãVˆ{éå|Æl%ý)ÄØÝºWÅ!cÇO¡ 4ŸÂwu­Âã)¾T„`III" Ã×zT{Pš„¦@Ž™jîÏÖlOWäµ¶µÍI ¡¡Ñ—À11¢õH,µñÎ `n@á’²Gz$ Å <+'DÄ¥÷Ð4©?±E_–má¡Qm©ÅðÑæè߯YúÀCÆA}îûñGöAc¼fþý 3_ëo• Õ¬?˼i ¨G<žu©p[9Þf£ß‰ÝK™-¡ŸùÈCFYy{ —ò—SUÝÝB„+P«“ÇÀÀHDxR0 j€ çñ élh±ÑBcƒµMD\ÜNжr>`gv/ãé*‹¢åeí½¹º‰‘FP¤.ìO¡>ÃWT¬hñ999ÀìÑJFÙÎðùÎ^ut$¥œ{äˆÈõœlÒ>Èöoð'¶Ïß—ÐuŒ|ø-€U•õ`²3ªJpZåeñ=ÒäÉÃhûǬ>Mþ™èäKX¬?ßÅák=ùý&Ãï¬CÿÍë•¢ÿ— ;á÷wÊuõõ6×—+sÇGVÙn7Ç=Å2Ypá‘ö¢À5÷Ȫqø˜7Ö4Õ×SJxÃ5SêÙ"Až7{·ð`6´;uÀ˜½;^ð Ñà¬6õóÕ£âš1[ßÇó3[ëòíÇ–Œ%ñtaB…¢ÿY¯XÕ`Ü»9;·µ=µ¢è6-£åŸ&qtäPöÿÛâK—k—5²©Ð„9Êðgƒ/ÍÎ0\&f©ºKÓM küö%¡Tÿäå=Ãæìýœ­L8vÐv” ÷Ú„Z¾G—þd˸j— «,Ó\ê#pû,.œP»þrÅ6”æ‘ßC}’s•±S„•¤a€(ð¬9èÇ6Z˜OQ1¯QFðqÈ EßMù5‰òב?VÍ¡¦ ÓO”WUE} ¼.!x¬)øgE’1à±PS¨Õ¨Ãٰ׺b) «{Û¤cý5£lš9û™·lØêÖìæuf?²økòýõä˜öi#£vÛáܵ-K¨I¤?g{ÇÌ,©w”»ô;™¶‰ræûâjö1Á+%;;c g§æ/ÚF~aBii)£ù,«X }ûHʤ´¹y»u6ŸÏ Ž×õf{ǶèŸ;ÿ”Í . »NGö—åïi/S³ø 8ý¨¥þ÷e™Ü^FÙ3‚Á妫> êŽò'Ÿ¹þ:¾þÕõ5sõîÕÉ Z –“‰ÂÚ“~; M&nzmïè`ˆ>³6àˆåÕY~"ô{µ>3ï¬v…ÁSßãeBH‡ù—±A±$î9¦‡0 î! ´cÿ2ˆ)tGHGû™*<<Üð|wêøâBŸßK¾PU)ÇÿpFÆ©©©®®fEAA©Y§ù¶ìº0,,,Üóç’ššÉ¸Ž‹À02à®Bß !%…AW’ÏWJ[¸Ûwðóõ•QÝy‹Èl²øChx\\žx;ð×Tµ8rc(&j;Å”"@ç)|úô=oeå‰$ÏŸ‚0] ö¸M«4›É‹c6:ÛS.ÖüPA_TìI£QÈÎÝX`OLæÁr‹n*Åâ÷3³s²‘è"ÜÊt¹Q÷í ðs[Þhê’?~#ÜLº=’%‘ G´5"Á3Väq·#¼s³%áA.™¾ûUFå¥ýhz¥âŽr§÷­Ç½ëÚÆ†‚?âû'è¿+è1 Cýþx6xj<\\óа0µ!!¡Ìe"Â2“ ê‰S´(0¬&ó!‚¹Yú…{¼¿}“Ï«Z¶F“;÷ÔpÕtÛ”\z:!p&+Á,€¨'ÅíH6Þ.*1pÎã³¼>ŠÃïÂ*öZ腚̛³…Q`'vÜdeÃA=«ŽGJHSÔÅ”ìoůÓm>[-õúå çX2vve e¬¬JjAöRgJ´•"‰zJÿ¡ŒCBB˜: “µ>ýuB _É©¨ú˜Õ Kõàâ`¡(9ù-PàÁ?ààre-Œ3Ö0•™éè¤ܪ€)Og™wä{ôèQhw§ƒ¾¨¿Eg¹Ñˆn@ÝG•JÓ–ñëe ur蘡àùþªÇY» 5¿à`cã\zzzFƒþxc=ˆ® Mår97\×n8e*Óï“VVŽ…hÈ?$jÀbN¨Œ£§Aö/@eB*õþîF­…BÞp¶Ú ä´"‡ œ3'WÛ ³¹L­ô÷v| Î×ôìì_œ§ƒ|üüüÑ Ùl®Ö¢êÖEèE")é\. û3ÄÜÜóoPQk×åd­j““›vvbyxx¬XÁªÚ#Ï:d»=Ú¥««;ªtêë£t`ÑPš`•(#à3ý²ŒÝäVLžwÀªê¦ïˆ^{i}ÃЈ¸ù HäK«&ÌJ–”?4Ì lûXƯRÊ ¯ž¨ña„®²fû‡GÊ1ñŠæ‹!µò†€‚rDýƒB•´ûªv{ÓrÀõv Âb‘cyÜ®m?NXdàH÷ø¡šm¾~Á*¡ÁŒgQžw0fØj©¿¡·fì|s?÷ÄØeAvZï 7ûº¹ÍIKˆ?*º®©ÖÜø§h>cÅs: SŽ?Ë^ÞØWFƒºy÷ÅÊ(Eòä ¤AÉÞÞÞ¾X—šúNHZK+$‚ÍÍï¹›Ÿ:EêÝ]ŸÁÁÂZÙ1œlù C$1yɾަðÁ€^Ú†ø“òy–W·›óˆ¤¤$ýÞèˆÝo¨h'ƒlCEŒGüø‘¼p^Uhm0(qk@æ)ÏÔ›NÑ{{yý(jºwN«ÂøœùßÇ]tS^¯)W™'€¶Y¯[«ÙH”Æ›Ùl:}€çAtºó’7šjÏÝQ°ÇèíÕ 87»ói6P¬B €]^ÎÈuÒËàçïŸWÞ?¡î"–§P4Ú®\§ò x?&‚´áZbÑèdP§`¼lh¹v;dj±&…9AÔ[ht¨÷×i5ÚœªÏ7‹ÿwݼ¦Z#ãYš(TäÕüLhts¾Ëh*-#3Ve¡ADL¼½WIHDBbr{y$,&¡§$,.nßÖ…¦è41„ht:ƒ¦KõüÝÏË’jÖ'Êû}‘IÈAXÒ\ðN¶ìce Wëq˜tÚ^A8yZm߯ØQƒô”Ø­W¿;Ÿïæ”–Ò;¹¸ôEySé=<Š}.ñ».!~[1R¯«”ƒþç™Ó¿*B!OÀlÙôÈO2I$øøq¼¶°Ì`À¸Õ ¶öþz§ÂñhÙø$¯„d#uzuo¯`Æ¢I­'ŠFÁܼp¼P-L&s´Fô÷®C¿osáåÎÓß4*Ç,ÖŽ¡S®×ƒ:±ƒ€mÙ°ÐäÑäééI(ôáÃa›>11»¾0B<¼$å ¦ÿdØûŠjûüøáožÎ±_ÍwÐôÐxVä±õ Ë\r ‘k‡r ­áÑ ÁŸbîó`%,ì84-†Á v_2ä_¿/6¬|FF>~J‚x÷ž³Çñª6 *êvNVb(á„"K(ÀD2"":‡ƒñ Û 5&òu¿LvÛléÙ鈄B^Vf Ô$ÞŸ>6›·p?Á Ä`øÈ2gVØp®Ìu¹šN’ä*­ áVa^½=gÙ)u9dqY¤2)š†ÓÐLñ„Ü_¿>íÍ(ˆÀd2Ï»§e´ßU D§ãåûöØ2,l‹1;µMT»õ^Œ@<žFé©›ƒ¦&©™ÇŸ¹h7iKÙ!ièÀvEK‘³ŸÈ›ƒ)|Î'},@8©”‡ßÁ¾ËÃI ú­|,üüüN÷ª¶Ï&4&T, Š­ö¤2È’¸°}¥»3^€ÉéX¼_wÀ Ç=;²e‰¼ÿGeR©VŽà«†bYÔKjÆësœ•ÏÿEƒðWIb#ø¨» 4\.û'"<£ Ü"]$]‡#ûsÈØ°Æ.!áóÕôòp ðp™ŸIò‰ÿá-hþg«eõÉyâKô:`ìT鏸޾@~ $ Î_È«é õ¾þÿ÷ej¤m`ihakAO¥eiDmhkfJcckm§c«¡Á§e¦g­¥`¤k éX˜šjhXkYR›iYþ_8-øbfd„üKÇÂDûû1ÝŸÇ/&:(:zf:&::F:&(Zz:Zf:¨·ÿJä_“ù·ÿòÅ –ò­‘.×»ÿ°ÚïÞšƒGÿù‡ÜpœZÖzZom µ,Á/­õtÀ@ÈsÍ-tõèß½5´ÖÓçzGøËçwI½{kkdkúϾ{«ejËõîÝ[ k]®wtŒ´,”ôt ”tŒ¬t”ôŒ´ïhþdzÑý«ÓIZÙkÙêñYXëý·gþw¿ÿ¯A03ÓQÒÑ1SÒ±Ò2Hþ&úÄG;s[# s›ÿ‚¼–µ‘…Í[߃ÞÚXêééé¼Õÿ·áoÿ»˜X(éY)éXØØ(™˜þ&&†ÿ’ ¤¤…µíŒDÖPï­ $¤íßZ‚_¾ý3Öä쿉€Ž $ƒŽ´( ÈÊßEÀø/"ø—+#dn«gm®eúÖòψ·ÿÄ$ßÑéjÙjQ¿•54²ùg  ‚·úÖàdÔïÐþÛU€ô5ffPÉ —¶¿ IN†÷ïâCþ‡`Ø~çÒÜŸ:Ú¿‹ÆF›ßÈÆ„ßò¼ÿM\fZ6^²°Ö2óûio…$þe¸Œ¬l”ô´¬”ÌlÌ”ô tt®ŒŽÑÿ&P1H 2j­åðV†OFè_§B"Ll”Ì,¬”ô¬çÆÊ?àýAÛÈÔÈÖHï?Õ>¿žŽµ‘¶žÍ[[H×[CZ2 ÒÿËÿ`û£ ¬`½!mAKGÉÊöw±1þ+j12Õ³q²±Õ3û¯Pdô ý‹`ôÿmìß<3=%y+ÝßÅÆô·±A¾ûoé÷?ùoú‚’Á pÞßñ/Ýßbaª«gýw¡üô_A à6#€R: ç(Yþ»é˜ÿ‡hþ+€C~ V ºÙoæø—ˆž™•’²8,” Ì—:–¿‰äƒ®Ñß…)kó·Z‘¿ é¿-iJz6 ˜@U3€sþMP¬”¤µž½‘žÃÿ",Ð}¿‡þ«¸˜~犎…î“+¶¿ ë¿–ò“µž©–õ¿Ì%ýoÐg¤û»î§§ýo‘é_„ò?=ŒåÁBOÉÈúgh€äç†ûüß?~Y*k=;S[ V #sSj3]¦ÿo¬Ñÿàÿhiiÿÿc€‚Œbaü?þïÿŽ/ff=F}m° LÚZŒ¬´ úZ éiõ™èõéÿÏÉÿûöþíÿPBT¦F6ÿ,Í þ×ÿôÌÌôÌôÿ®ÿ™ @ñ10°üŸþÿ¿ãËWR\BðBŸø¥¡ žîAA=~û²«;å– þÖä‡z€ü—Üö÷mrŒßsP³»émˆ«¤5’_l>ï\9^B!n¸6M ¡ 8%íœÔ”wƒ¯ßïÿü×_†~ÓÛ…ïÿùƒçR1^öÿ~:ìž×?Ÿ1HûzöŸƒS´lÇÔ>ÿ~ƒgµb»ùJó¹Ü}z/èÁ¡¡¥“žÎ©)¥¹ ÈÐTܰAñßßÀ1Ý)|>†sµµ"¯Œí7ñݯþœF*°ù÷û`§Ž¨œ´Ààe×½LÑ÷AÀ‘v€…üÜJW‚ãŸà3ü_ ÷GÇ¿»>sYÜ`²¢¶_÷§itÌ×1lµûsÇĸ…a€3mÿõ¾ñÏï¯ä-„„`5ÜÎPV:u&‹µ\O‡uõõsÝw'éœÏ¶åõ¸%íÔX€ñ¿æ‹Z{ܳM½TXZV–çº0–§€ŒÝ›•äÞý Ëp8V$’RÊí®7†Ávk8ƒ¸Û5y»áw´boS~§–êò¢tÀíæœN«õéÇ ì®R½RrrÞÉó “Ó‰“ݲë埾‘c‰œN¡I‰!‚Çc Rªªù××ó .<Aºûs¹3þ~~Š5ÖDi!Ÿ€¯Zº¼¬M, Õœ-•öéÓ§ê·GŸ<<WQY™ÞíÚ¶?‰ñ½¼<ªX,cŠÕJ‡Ý5ûŸð.¬}ñ{ʆßoï-ñá¼=išnCñû‰Ÿÿ)…|>”æÑr»ét¹o’Ç=äJ̳汣»4uÇ/`¸¦¹yaíA»?šÑ\-‰Dbº`0.”é|}Mÿ_‹‘ùCüOÍ0Es¹0U×Ö_ïÙ.~8ßj3)jøöõë“óósÑ8潠ξhº´á•󽙬ëi›.A°àN˾$¿úúäæ=Ü!x Æ# ô&rÅÝÝ\,TÞÌMô÷‹ UèÆ Õz(Šê‡ûØÏÕÚ=É™øS~dé#¿‹‚[6‰ƒƒ#,2úsCCÃöù OÓÄŠ´´´lSUyùÓ÷""yÃ:Ò22¬û{Á.Ñ7Ð00'`=—¶¶ºŽ×zèXX²Š‹‘¼y¿„„¼’䨤þGÙ…üc¦ßåÜp‘‘¿ÂËËËÿloÏ1öX\¡¤¤”mzpø%×2<\:lµ²¼LÎU˜{Áe¿‹2Ìf³Þ«5_ï”›LAK‹„‡‡7¦³½ýW_¼þ«/F5϶Çf«­¾þúõ)’Z­;ùÃWtFC¤ž(fæH/¯§ w:W"i4ú±X¾ûùiO•ê]^_sª‚d´û¡€p^¡¡uú¡PsQÓÐ|¹ ¢ Ðé‹e‚|ГŒŒŒ¶¶¶lSø@"—\gvÞ_ ÒuÊÿ=OÌ—xÜñóN>õõœÐ/Ñ›/VåÑ[ïAÇÂ:é¦(²E#ŒE¯ûÜ¢á õÙ³g§ I¾È$ †îJȇ¤ç+½¿:÷ë<Û›‰¢Óé8¼»XÐ10p¸Ñ××ýñ£yºÂD©ÎÞ,cÅÅÅ%/²ü1çI/ƒÝ1ä¶ØËfÌ?á/¯¤¤SëÿnlA¥y#r_&wô[-ÿ„-.)y´ØˆUw>s{{2ðÞéPÍ3ãÚçb¸Hƒ‡Ùb¾·ÚjeTÍrŒí¢‚RNùßéæS­µõ]ë‰ ‹‰26&§)©oS奈Eíü>Ÿ$É_ ÂøR¦#™b1ŒF¯AïÑ‹&r*Ùñðð0É+Ø­ýéÖQ¡ó?8ˆt}}]³_wq{Ïfc\+¨ QÈ÷ûÄ ÿ(Ó?Áü…C8ãEMän{êI<½G¸rrT¿Ç˜‡üu‰Îë1¸Ž7ß_äžFÇn-Ü«Eý~&ß?ÁuvÜCÃsx¾»»KΕ™ir]å1A9ÊÐà'Ãߺ²äùõ«ÓÕZ”ÓqI ­Ö㛋ƒ¢Ó³ÿ÷ÞT,ŸÃ"CÑ’¾~ýzß1€7e±î Q”æK,æ€ ÙA8mEh~†Ipw• p÷ldåÙRUá=¨wV«¨Uɾq=éc À`ø6”&Xf½& ¹’ÂÖ2óïµ¼¼º þb++iy¿?S,.š^TzÑ©‡‡*µê/^°/^¬tâyä[yÜ_@UšÍ|KH˜ÃÑX¨µ£ ££ËW®•.„ŠÚJê‘b±æ#wwwÀ 4¢Ñ´_rñœÚÍí #æšôDRy}ûV Âà¾ZE п?W‡w}û{)bEæžýEÛÃÒD995é™ë?¢£Œ©»º¦ÒÓWD~ rÞV®µ%g4ŸE cmmMîæ€Ž•ýñ!À½“!A¼£a®s§‡ëÈçøÔÔ°'Ô_oçQªÕ¾¢¢¢ &úöíÛK\ÎèF·îÓ#¼3ô:‡ƒu€Üýýà°ónp/^ü3º?ÉuÁÀp‚Ä*"-½FKMD$h§BÔÓÓËíÜÚÞNÎÊâ3ÊyMÛ1U³n2Wa•»ùÄ|¥²ožž¹/ŸË.Íîý;”§ª $!ap>Ý®ÚÚÚ’’—ïL1 Ò;ÀyòR]]óáö¤º®n¡âÞ¥f‚.W: ªàÁŽÞÂù+GD¼RWïÛï‹p¿SžŸm£ö1™ªÜÃno‡ÃdnÿHH¨‹ï~¬³ï;:,ÖÛŸ5JO½®Bø p¦L³åq,£Q+€‘"õ†hê<…"hÍËÃ¥ú“~ŽÕµ5:Íf¨Ž`<5‹RÐÝ©s®7{U½ñla©©ï@Ù·”|>n8‘/Tí‚äÏÖV4¢›ÚGGÓŽr½c yyÿ×xýÞ÷)’ƒ¬}jõÿÙû¼Ýó@•ßpÛº§f%$TU»fcîNÙÔœ¬xý1ж¸œ±µ¿ÿ)HÎä$zž' ¤vòcµõô**^]_;_pyhiÁâã[±<©=N¦¦§÷.-¥ßݺ £²’xskKZR’×ÑñuMg^dÏ48/""'—™ÑÔ0WÇÂ6‹96™ëa ÌØØ;ñ&÷;ÈGƒâ”q û­Í›*…³~³Å¾¤¢¢ugè¨Ç7>¾LÅV¸Õúú·ÉÉhMø—*É»ùŸé®9¹_¿b°³OË*¸ºôó縫ռæMù9: %!1—GµµåäåCRf± ÕÛtl Y3 žyù‚Ø¥%­¯)Z+ÆWîÜ‚ÔÜ£€ù#wíâ ÞÙ¹6:#»•…„ä…««ªlSÑ%€³€ÊJùŠ1eåÜUÐ$Ÿ°ÙÇ67Z^a똛ƒæà¹>?#$ HuÃêÆþÇlv®Àhfüˇ¯Óƒ¹8T*ÌmÓÓÙÓÛ¯£T*óŸŽ}ò€°rÏ%ÀÄÆwy) ºJ.Ø´³ÌŒÕøx‡¡‘œº QFO¾O¶Ä+Ûìá6¬¼ IRZÚ4'»uª »ƒ}&Œ`Åà $Oüs$"„þ7,_¿>+ç8ð÷ª31˜ÝK‰«ªzQYÙ‘» ¢‚4gII#fÑî¼°H„—×ÏWèŠxsKm)ºhƒåFÈqššƒß==µ‡GNh™Ç³À¤@S‹w•­¼_é8.0 "“átºÞR­y-¡©ùf^óæÜÆõ¨]csÓpe]_¬Î¡ÜdmºÜ*{|måw5?¬NA*ªo¿Röl¡EÕÚ¡ Ñ’…Ž®¹«k9H/W\•¥U„}”‹+x’Dâ2Rë|>OS3ÙçË㓞‹¾‘qhP~GGV) )””±¹5Öø¸ùR82ÅA=ËUéÙ-ÃS«×Q&y4úƒiÅ2›‰‚¯Ô@ú*÷S§úùù£èêrª;¨ÌãFœû»ÌåÆf¦§‡d°Y.¹\Üóéê¾­-))éYY‰ Âut©¬)c˜Ÿ§.Å‹ÎV,ytfXda’ìŠáÈÏO2³ØCúø1¯bÙ:h€&+++~`Eö¦ÙS¾8;ŸªBÊ}mUé ˆè‹m'WË0ìóçZAšž_uHɤ’ ¼¥•¾5º€ÅO1™8þQhc`°½AHHèÌ}ýiNJR6=8Q_YY±±ì›©íИœìÌÜ‹³¡Š*u§-…©³ª:˜,ÔéRiËìA……̉‰•ŽÎÓôöù,PllÞOa:‘ÐÑ»ÚýK(Õ®Ybb®6wv†2ïúö¹`jílÒœlN¶«±k‡ÊzUM׿uz Œ]'È52Vœ¸û}ÚúÃ~myöÄœUðòr»¢ûõÖS5|jj»º’î¹Úš¡* °x‡§å, Y*U¥v;òvQ_¤sÚ±>þlÇXÚŽýR`æ^ÈÃ6õyTÖ­¾~w먤ä#!!ú`£¹³ór©Zµ¦À‡/Ô}±kCùJÔµµÝ0<›ú+RŠ%£2ÅDŠ‹I›‡K¡Ü¥}x° 6:¹%¼w&FdñçA;ÞžHP ë9±¨·7:®á8õ §KU$(@ÖÓ$ï÷vÊvþê*6D}úEHWÂéåïßSí¤‚ê뫤«?Ç¡¾ááïú}¢%%d9¤ÜÌutDËô3AîrŽreìí©T>]>Àëy}ƒáƒ í Ú#þûpAXãÂrwf?–…YQSSh›õ—ÚÓå÷ܳ‹'ó.3Ï–Cp“BB:—€Ô™©ŒAÇ侫¯ÇlÊÚ‘+CJE¥w¼ªÞËtX®&"ñô™ÀÊÇ—ޝBÂÝ]]ž_ž¨¬lLàâáMtÞ¸û=‡õ•ñv$÷ºÒTCaáx/'à©òrÝ_Þ^ø (¨‘Ùç¾?zrG©ÐТ>¨«‡lßã(4€ÎÁæ@í¤Êb³zçY^Ž  òë*•):c6S±]–ƒ]Ôô[}e¶[ê÷×PœK]hm-¸n¾ÂÑ[-³ªß݆ð•DG3ÞÞFŽT<Áb®ÿ^h~v[×ÛGµìƒTb½ænk[CŸFÓ4{Q¥K¡Ï…%ð¾YÏ~¯ö½­-y_\ƒ¡$ÖííôÊÞž4EŠ’´4ê—/R¹FhÔ³ÉÕŠ_€ˆÁagÍͳßÛÎ-‘Iÿ=E½ßò)ÛmjÊ òk07^^bXX¥Ÿ™ÈxIµ ÅÅüv22O¸[YÒÑôÙî^Ÿ,ŽÍ0ÎÅex7=PެއäÐ6kÂ32ÖD^nN•=àš+T3©¬û4»µØ’Œ/ªµµ_4:H‚ —B!!­fó;++2\ÜJÑøÉ@ÐÀ@8§ï[c1zx÷-×g“å[zÎgÎõû 7B"=z{Ó|®s¯€u:sç¼PE<=Íe©RmEÐôp2ÛŸØ1©ˆ§¡Aãê¦Â ùè¶ÊpRh(0(ÆBfšš„@ýÝ0ØØ@ÀÍM«WAŸ±…’X]¡Ô”_ÝÝEo:æ¸gñ‰‰''_ŽáêC∈ÌagS’Un%çÃa”ùðÎ`àc™ƒÅs—sÕwÔÔO€ïÝÝ1‘½@DTIt¯E&øhÞ qÝM k_ï›ò'Ñ4a+¤-­8_oE8:1é´xYsf”(¨_}Iä»Z ž*75R êlˆòòÏgûÕHR\J¯}nªq’T8ÆŒ´² ÷dÃÍëûû€Ü#`þÀH¶kíaЧãˆÅqß?ëL‘$­qe¯`™Ï‘yõ³C?9//0*ꮬÁvgýãÉúºqdú=Dµ¿õ(«*­ÀàôôtY»‡ºgÖàaEK^ ZQêµ7=Üz^ ’22„§+lš§¦üFGUÅ“‚Þk4½ú ]¡µ«h‚ÁÇù¹ `½®5GfI4qÖßéä[nÅ‹{LM>ÂõjͰϯ> …+úãÃñ‘L±Ë» tÌqqeÀçòOwвˆêŽç À«é¨óc'«JÉ›G†‡SM ¥m­KˆÎ)OSôýÇÖþx2ÄcPûĈOžp)WUvvv¢Q €>r‰ ¢þÏ~¿¶2JÅÄuyù¯¤]‡ÜSÛœœšÜLL掖–]}tÜ_L&ú~ ööÄŒ&úò{Xy/ú~$iô¦ð)LÕ]à=~LâSWÇ$Á=ÙèÆ‹(¡¿Ò,ÂÒ²v{µÕ|ÎÕͨQ6…²ÓI_Ðþ½1O¢¹fªÄ½·Tªµög©ø?RóªÔ9×1iH´ PLWYô_ŸÑŒObmå«Ök¸³A؈AÿÔàt“zÌ=Ð! ø»31w742²éÉ@ÏßÞ²/nL<ÂÂZÁ,ZÒ"Ðóò&²^}óáÃP<²˜¬,Üô´2 3¾(jj ÂWžPCðNð·_M‡S ôÆ'É’´{pÙ# ùŠƒ™yzÊy~ÐÔÛèQôÏžµCó¹ÈâŠQXM ¢¡"©¾¼A!C§K%@&¶m›™¸O4Ì4’'¿§ÓîçVnqð+”hÅh¨õãœWyr²!P*6ë½7“3qr7G_¿ê s93¥ :è¥Z¹ßÂÔØSùFP\”¸Ý°)—/²@Ó™*Þ(ß8ÈIJö–èL^ ê$Ьn €jL‰ÎœÏUYËfÇAEŽÿøIÏ×úÅEt?¿7Š*XK{jó¾{{¼q̥Ͼér¤ ¡ðŸ+¤äÒ½OQÑiµ‹P Pß§âíf‡ ôÅÆÈOsìŸîïë«ô„íCÁIèÖðPÓHô`u ÆäâR»>=Ò=\d¾¼®„ôÁJgÑQÓŽÖBcð* VÚ,êŽ),ë륄ba \XíqæÄÌÌ_Ùl éÌ””·sa·¶œÊNpU*EóJ¾`@嶺Xß2=Å`-v2Yh¤’»‰SkĨµó™,Yá‹e\æy8Ò:^MÄœS#0‡tŽESCëxéBscjÒNÛ9z€~ºo‚³‡NêîíÝ/—Xynɹ\j'6kpW»#¯É?'pÐ æ„!— ÊŠ8ÂTA_Þhhnôk¦8:,nŸ¨bjlT¿¼¬ÎÍ(ô‰ }»ô}ìתïíªQ­¶üº¬-AVÁͽ&b¼cl é„ï¾µPRºb‰*ÐWP®tnº[½oŽ ¤Ûßg~ÝíÛ)?–Œ°xyd9ž?5—ø¸g4ÇÍñzK|s§g¡­peÒ³ö¥V+B~§ ÒJŠã…’Ç´®O“~ Ðè·}ËarƬ¥1ß êòò¦é[\œ]`byB]ÿñÚ£§O½÷öZgkø6Çò¼§·¥È{X]˜á<^ìNÛ}ùù“‡êðÌ,0Iㆽb@(Ž(êö\ö£ÇOÒ€DÉ2é…akÃfæ=‘.D`E±Ú„c§"@êàB«ðª[à#qXœJzíÁ/ É‹ü‚@+[Æ(ZþÑï——¢÷—+Ø€Qß²²B30ð}{iŒŒó¹©”‘Qž´RÇý]”R‰6€Q€š´6ëPЧ¹ 4ÕÏ.o`NöëšÒòòú ’µ~ý¨Ü¦ÎùH©^Ñ_Àdu È)*¶V[i„ÅÇ6=˜(*aŒ]²å½#%E¡8Ïi­«Zp÷Ã厤kB‹éŒ}Pvö`”Ð9«©ÜÝ÷¶†Û3Äíò#"ɹ4b, ¼FGø-«§¦òØœO-‹Zª!ì.aw}±>" Ø@sËáYPé‰eezôøT{ûÌÜŒ¼µE*Ù¤™©˜îFÔq]´R— Js®6 Ð±vt?q+8’Õ‰ã&", T˜M¾rEÒ÷ïºÐ/µÏw¿[Ÿø)˜Œ,Îaá.Ëå^kù§ùíES½qê~©qo¥Ù‡Þ˜ЉBªüQ"e™á‘tnW¶! ƒ9vç XIý&N§³p¨® æ ž!<˜KŠæÐAKK]ŠŠŒM‘—WvÉMòvÇ`B{þh¨‘Ÿ”0ªëTF*ò(@OÄ©4LrH^ÿJ á±k ££% —u>E%i¼œ­W¦[LѶ¨9þÑ­¢Æ~ÕÊ7ŠDxüsƒq†Û³ 7pD“ |Èýž_ hX÷»3F“qì·€[ úhrö’˜úêŒüü±8ñ£.m­¡pÿŽ»]³g¦/÷wh%ªÊÆòAâz—‡k¶›‹¿®Ïd†††ò“n¾| ìúÅsb|8˜Ç­¿Ù§Œ_¸_*ˡEG0‹Kˆw$˜q6Î\Dä=ß çìK.—…}¿ÒQ;9;ûê›Òâ¶±ØHfà˜+¯¬˜«+ñLÌÑNÑÈöö¾yß÷W8\µ/úû#/\UÝÝév&ðôúb¿UÜ,š0¥N“’_ª‹[g©U•M©Ôv˃17-·ò%Fé<<îkCÝ‚D@Võ×Ûˆõó–ên‰7ZØ\˜I{«ËíŠ>– ª¾ ÖV4ÔöÔò­ër>‹:Àë/ó¸Á὇$‹´» ¼¦Îθ=0s³ààà<ò_aK¨Wî¿cþ¦náéøáa:GdñLjÄ,¬¯ÎæàyýÙ8R`´§ ,lÌ÷çÏHÀ3y"4¸¸Ðš*º@#š«XÌëV»s‰UÐÌ/µ¥ÌV‡¸wZúƒÕ]Ý(‡5Ä‹KQ–äom %÷¶Ê°•½ïÐD”4ÊDޝ-¯¬€¡á»8æ„Õª…þÐ8•_Ÿ©‹FcU+¼ŒV,]µx\†ÎÒ÷pÓ„¯¨bÒ±*rd "¶`ÄC)_ D"oaú^ª÷Ï¢<‹B!¥dºÖÃÝ=³9gK$ÕÈѹ}ÎÙ O@i)ýù^]oª@]5Qb ßÌÉùŒÄÒ¶qÆþð>ÐUn7Ôe6Ïpjý*+Q8’%¶å댶‘’GfhËWèŠÜ“˽1¤Ôj~**/XXL ;» žŠP'§brëd!›.>`mß89 üü™þ G ÷g„Gb7P7?ÛõÀ}.±BÜhi_)ëfk]* ÿÙ0{Ž0U‹Œ\ºØá€ÇtÖ1¬–‰Ik¶T‚ÓýU¢\ìÇlÙÈ“‰gÜ®hVVxmqÜds™v“1 RõWëE„Dz ûH™¢[TÒPÀÛÓ¹^‰'8# ú+ó4:¡)ØÍùtkSÙa_4W¸¼Ñ2áë'¬Vh¹ÓF‘¦² Ú ’<„ŒrY¡,qqæš—‡Agû}ßêx~Õ1‡vªú¦úhv÷§MûÌÌ3 »(r/¤Ô{°î߯WÝ]zä쿦¥ÕˆÊ#ÃË+*¾¦Io$3lu …ÎÑR¥#`‹÷á¾ —3ãx²„–ûr±µ- ˜‹F6t’¬iDþ3PÛºC©sùáîwÊ¥–K“äϪà@‡ãâö± œŒÊìJóiiÁ‚táöž(.ÍÅZ’p¬²\ÒøÙ‘9‘“„Ì6‡=< vûƒF~ C88V6&¾hµM똨<Ì'ÿê§–„¯`uc}ÖÍÇ ÃPëà%ˆèPkg“‡ìáÙ dI¶È=—ïÙ¹%5=}  ˜Å{—žš¥‰+ø ïlñšÓÜŸ™bYÕŽGÐûûã ŽJtê4µ¤Î24^½ê‚ècHõ-¶˜9=Ü-a.°ì[<Ü÷ÔŸô[¬®£ÒyÜÓ‹mî‡2JÌ'1¸:¬÷ã¤Vb6;È×—»éŽ9M\ì°@ñc“锺œÁ~<›ÄxÌb^q±Wš`DÞ4=@ì4³öáÙ™öhvuµáþñB§P356lNôž2Y­°pµâ iÀ/ §ùpÌÕÕ 5ÔÕÝò¼õBZ¶‚PQfW?5!;»÷æfùLdq$ŽØ§_ÒbÚL ?§¦x+¼ÎÆ­å_˜š‰¥«ˆ‡ù˜r$SÆtÚ6ôöVb* Ûà ÏH@ûËå!îUùXY—.¶! iô`櫎–ç绢RNvu’ì4æž U•ât6†GFJºîƒ§.k‚ãòŠ* 8äÆwáˆ:&°°¶[ €&Ç»ôÎà‚°a‰Þ¾õš«£ ‰Œô÷ñ(/PF2 óO¤S$­¯¬±ƒ¿A^#Ô·ºúFÛÌŒ¢Ð¶$¨%OK’÷(rqšž–ËÙõ°q¨h›æ­ç!¥šÃ½ X­;:žÐ@+)gÔN7Æb`hóaâMYÐ(3ÒŒ<êÀúê¸ä­nGMŠqõO™¹‘¬u¸d¦ÐJ’Íg»«¥ÖÎmjïææOÁ±G+nŠÕ–ùµ=N„(#™QÔwqùù‰E7;ò•žìÌ&ZýÙÅ9ºhúÜôàf#û(X8Àÿ…û¯MF›øêG²@ÿìîþn>Gø¨ "`—¥dèé¿û -›š*-›d »úˆIì^++²ƒp»ŠÖ©©×hh"ØØ½z›_‘ÆAíÍ Í9>‡û93㦱Ûö—õѹy÷EÁÌGÇ×½þMÓÙthr´ " *NÜW@þST†òŒäf£´Zþ騷y€×[nÄsÜCตA2ªÖO÷ü ’rŠÈ–ΑÀ©2˜ñ®ó,ÙH«sÓ7÷÷h“;}}•ÐÐZjšüõRÇÁW Ø#`8!—ë:b_`Þ"m)-Ílùp·ÆÉµg8«¨Ð§€Ï'WòÔ~¥#ìÍ›7nÊÛÌ“ïÃÝr,)ÁèMzàæ½ÔB ²» ºBˆÀwGieH8ØEÉe½A£8<ïLXAçW™[ƒZ›óHr« ³Û!f°5t±‹:Q„ƒó›*ßz“'¿G@S½‘tÐÞsGGG'é`ÌŸC¹’ä¡ ûüùÒÅÂWÐ'í--$I¦3š9Iø_ÂúÐÒú1¤²º²†ïî>¦¤Š.ICææ¦R ?‰—ѬáÑ[‡ë@b‹rÔAU;Ðn,iùÇÅØ?ÇÇSRÂðAô9«yUæü\H¼0XäZ-ãkCk‘ 4—þú}¢JÅšŒ ÎÙëÝfþ q÷gû€:ëZíjp¼˜KÙÜ™Hx«ûó;Š£ót©á«]Têñ¼ËÌdù¡J•x–˜ôäñ‰ÿÕÕ† d‡ËÓS›Xb¿Téö­=FJŠïî,FoÎð<ýýáž(/ ðͽ!ù€pú•²K‹T$†S^A*õ;4äj;(ißÉÉ×*‰ Öz”(ˆK™Íóó0/%ãÇ„+òÇæçEßæè ëaÜ\hèO•6AÍyþzN¡ˆ˜Öa_ŸZ=`m-ê†Þa_óô4¯’Z†4ÜtÒ2`€gÁÛߟŸó½‹{e¦= t¦šèa ö¥e…E"êO‡¡Å“‚~.<0©ªít¾ùç+ƒÃž92.'Ã"n;í¯ïü hÞ.B^ênîíý™ ’F7æl3>pÕÚ7.6ìf^ÆlÞ2‘YœO ¿deÔŠ €®´j^ЪÄ´ckëk *½ Ô«.ö±!"ªŒA=ü3¥©þ^V5_³3è„RòrßhG¸ }T¤"-ÝͲ€­ èòÚj»gšóâñšã¼ë‰B¡º˜æzï£ÞĽ™dÏϱ¯‘ZO<:½_àéå°…Ù¿x!‚ÎaÏ”“SL}¡TW!Ä0].¡S(ì Æ‘É8÷¸íô©Le½BBòlò ŠBG;u ù‹:P‹¾$œX³q$( Ž$-—ùY³$CÔ Nq¹T&ƒ6_…¸»»w) Ù¾b$œœ1¿~…Ç5…‚µÆ§£{¥¦fpÇʦ¬µ¯SAÁDUÊÊ®"S‰A†Iã Rj.0…—g#ùênŸOOU?üÙIZ׿›ìDx »?Kõ³CŸÖ ÿ-ÐëI^çvªR!žryç%ÚíÜì¶–º]¡‹û÷— ü5`ŽÊU‰ÝaèÜõÀÂäRQ¡ñ4­EÇbÞ0lϽÞìíum¼Ù¾àî‚®¦†£s4ÇÍp8=¤V$ Æî”Ê"“Ñðwõeˆ NtÎÅùö-pLM» ÎF¢>è[m€à`  “«, ˜:ª– Ù«%Yˆ#?yÚ˜’RhŒ bˆ C^ša©[3•³F™³9ÛòÍG‚‡\ Âsk|œ§tŽîíeaoôp¿Üöööø~¶ ¸T•Û¿¡¡~1gçñ‚«¦‡Q€ƒ6ZÝáó¥à!ôyòö˜EjÞ‡‡ºß5‚ªª^,xðd¨;ÄÀpr}¸“/àà#t\‹h¬¿\F>3_” A0ëW˜¢ä¼<>`x_b'-<'Þæcwc;M Øúüe@zö§/aaÏÀt÷ÔIÔín5È€ :‚Q¬Åæfw2ÄŽÄÇóBžv_ÄäawO æÊ•Aߤ‹}¿Þ¾>c¼¿h"€HˆL1,'k u׉ 1INh6ë·~Ò9«a‰ú@‚ŽY«¦p³±yS*ÛRxÝ-û[ K©}E¥šî;ßûÏy•X+R“¨ƒçÞ$Ñ£‘ϵtx‚Z½²ÿçx³—5*«vöï_‡ë}Ã\€7À=“6ïíµµåÜNLåæ \yEÅæH'²ÆÂøKŒaÔþ×eØ×Z(¨‘–GËðc’þ2YïHÉÈä¼!K,˜ÀK ´¿Ðþ j'z·|¾–OlªÂ´AÿÐÐc`fgó-ã¶g¸å–Ľ.5´¯Rí©Åýí gPªhÒ|’ÕJ}žO€WîûK ÷Û£§‚öº-žCÁœzò†Aw74Àº¨t ЬÏ9øÐI¾’=H`}ÕM—Çf·ÍìàWµ»+Ú‘¬‡_>xA½¨b‹=ug#. œìw£«æ’_¬©uíŒã,{?§§?ÍåÊ1þáÃöÿ‡ª¿«ªÙÿPPé–né”n¤KZº¥[éF@º¤»¤»AéîFº»áÎò=¿û¿—ç<ÏyÙ²÷šùÆ'ffíõöy÷H¦tÀDCCrº È ÛŸSX<vwÂÒ™?a±Ü¼Ø2¿Wùþï½~=Y/•ROI~£”b—šêx~² GÑy/"–û (ÜjK”ö……D®Eç( ÕUwu// Ì KJr¦yò@ëJså"Üö[t`À-7x¾ccKùüÿQ–Và œUùYY8L¥×.q9¨#ÛaÜLU)žj÷k¸ÚHÚ”X_pòzú^S38íò/ëªjM«kl×7»>À=¡§§2ºXxܾQS¬âÐ6¢'\«cI hO ¯3€<10 ’¶³ áöz¨§ël°§Å#%ehlÜSÖræç/9!ù„H1.%È+ïÑ „ZHßKJÊó©(D 9Jð_ee/•§>N´rìWËðã`И^Þ0 Á…‡?770¡èÌÌwþv=&GSVÅ¡žïTzÊlÁG2ÿAW0L,P©ï4Ë,fØ~ É‘bâÆ´ÿüò§~£á0‡ù³øœ¤Î%ð`žbªªCäÀŠÚ¾”WÌ‘½'óüƒ!Иw p°›âT]f9÷öä$¸î>ß&S”çSí‘mÓ^uXHŸ.hŒó ‡ãÕwܼš“Û\ìÈ(RÜ®ì¨À]=<Ü’ƒ÷lÍÏ$|ðÑ€RBµ«¢¤$z®¬HÞEgHD¦D´h#9¹* ÆhÓ9À‡ €1J³²~\]õ'‘Ú4m”| ¢áªA¬½ÅD„8¿P¼»¾1$Øãt«P’¸/!Ùk4Yö ^ôxÑÍS:e–˜Pòç6b„|δÀ4¼ÆÉŽOàXï rbᜤ¡¥ Âtó´ññ1‘ÓÒyì%GSK²þÃ¥¯¯{A¹¢sj’×#ÊÝ­iYI '¹;3`þÛ¼üúD|⤶`\Ø»›]ÓOŸŠâßÚÁdŠ:4¯]Ϭ÷_Ý0Â÷ªUí¨§zÖG»"—ˆþgKº@i4¹ QÞÚÑ'ÐrJ2“¯‘1…8(bŽpÒ†îãµ)qÙÁ¶éZ$­†úü‹ÎSà<œ@X–$Lhx¾nmKJi„™S©„ô5, Øßê‚ü"è0›ót¯¶` ”ÜÐÚn)†Ê,{SÎ…ã›Põ ÎôÜܾDŽ¡‘º Ū4¡ñЙ ®r[I))XèˆMü ýÎßþòÃÖÑÑ@¦¹¡Ô³’J=)ÙÁtƒŒé2=ºææâ ­AÒ_¿N@Ó<ÚÌ;LØ%Ì™šÈÕÑ¢yØqÏ5ˆe7èÕí±[6W{ü ¼gC¤ÚÒ_‹€¦²nvY ?˜¬/ªT’øø‘Hû«Ó¡Ó¬¬¿yOøZÐù4^ÄÄÇ+3ñÖt´?ëyGÔ`tEBÂõô4ÁÒ'É] ÀA'w:ˆi¾ŽO¢¢~)¹õûùS«$N"¯K‰@bا?L5i5XÁ4i =);¸=ŒÐÿ<î«^ÏjªpI„´ dÚʤ‰ÂK6}a±æ+ýd{ý ŠÝ)òµ¦KÏÍAã7[;f,Ý0Ú^ß÷š²(üQÕ%o/Ô!&•ÿÔS$•êsò´R¾-ì?\àæ®RJpÕjˆíì¹n¾'½{äšÍ—_º¿¿È 30 ONÝß䣒leo.íÃ.¦à‹Kö¶ÿ¿ÃjÖÖqt~µ€zWfŒ[ A‡7žO~wm¨ÿŸ•P–2}ú”Š–NA)Qú¶›…36 ëqüËJó×8ȯXXÖ}ÈK´¤Vw&žQRFžSVö ÆÜœj‚Ìîà€³`h_f÷¾a@0pVHH cÐÉ`¾l–9ÒÛZÖO²²×Y=nä@Ìgºl$Xq|!“gÐ[Nî2šš(vvB²©îBBHz]£Ù^§–‘oÊ4€(/8-¡-"tRâ•FÇn–ÕQ¦GªÖäªÀ ’ë©ZÒYá|Lv±w@Cƒ¢o0&ÿÚÊ/ ÇééPéän¸Jö¯Ð ãLDÄÚþ-|`²]ììàÑÌN[a¬/öd,æðž™Œd‡`/¹Ÿ úÄkhª©Aç†bü5LÌãärŠ Ì(nW(:©"‡Kšë4¹Uùq(Võáfg5 î×5*ËÚ4ÎG¦ÕtÖQ(vê´ËtÛdAM¹´V‹hG¬Tœ¾Ëq×ùXºë‹9ü­é‘òîÁW:FFüOáßP¾}»Y"Ekoo¼ì"@•@Ùy)gg;÷ÁÖ¡,7'.‡8E WW2©¸ÃÿLsseäl+Õ4¾ßÕ–›ñæk¤·÷\l¦ò"Ñ“¸ä2ͧüG‚þÛPº;îq94ìÿA!4ËbòѼÞÉIu¿AƒÿÝõ»“äo'-Bðð®Eš\ ü|.HUŒ qØ4ío]ÙC…Jž'}ûö,…—w,WÎ…F»Áq€üúJàÁÙ;–Á’Xš«3ãCôpI=-Ž$àÙ M.U ÌöøÍë°)u¼è«¢¶Ý×x×ÕZ|¿aµÏa,”ĉΚ­Œ(¿ I*1òýåñ|q4ó!h_ ±Î%,Õn,'º?­%,õÝ‚zÓÍ üõj£"]ŸóFBU2¡íRÉë×Ïô‰cd¬RJqþþp?ÒÔ@Œ‚ªâDëä®wØÒ’Ò 422ÒL…391±ÑòH:(Åô.=yÂøîªôðöPVS“ØÃCËóÑcÃŽÉA^äëæ¡×·²2áþ´í¥\OOÒ×ôôK˜VM•£““ð½Îka»£‰&\4’ ›[¶FNÁUþxR†c\ù})ÝáÓøhEñÝÉSy0äó O¨ûˆfT„)ج›ØÏG\ôtC™*yÅæáêµè6Tª®Y¾ù©ËÓX_ ’}íÃââãÿuDS®éÔà·~"õµ6IÓü( þ+ Üov›!±+˜Ïx»Ò¢V÷…\Òp"5Ç~k8¹å!Q±C9¨@£Ú‚‰˜“dm¾ƒÃU§4S¬:P—‘©(O·¢²œáý–F¶ßú£¦oò;⮣z2gRRKT´óéòµ*xÞìoÞD‚Êþe>Ǩ.¦£ƒá—ñ#*ªiýpv"¬Ê<­£·à)®)mTá…mÁý‘lJðϬ¬ÊQOçû›ªúÍæ ·‹Oú;ãç?bb ƒ•……¸æS²9Êô ÍÏ)|ópŸÏ*de½á¿³Aðz —½V)ÑÒšnö¸"ßÔ먛,Þ7$'§ðí†õÿrwéî¾i¼¿P %ËîÖ¹ÛØÀX+doÔ«G½ñ¼AW~y¶'O®êù0èêUßç+é›~"ûo%½J=§6â÷o×ó›ÐbMc“»ãÿí‰xÃ=ü]ÇUÖ`mð¸-‚¯@ÅÑÏ›X–¡´èõá‚5õ ´•¢Ì ”[:ÌåäÏ«¿›øK§üaDÛºff­NKM/´Új€¸¦~ýºƒ‡GÃÙ%æ0`swªÛ®¥Ecú–»/¸á;;fŠ*ð¥-}€G·¸|1W±ÄM.¹ÿßv~œŠ†¨®îO1µéöG'qnß¼R §ëNŸ{ÝÑŽk¼1Ó1$Q£W|Wª#gǬ¾ýgNþ>FÆÄ Ýœ+n¸(- %p|®%ýáÃñÀò{`T£ é Š<ÛZ‘*)©­S/løl‹ÑÜbºÔü6?BÕ‰V9*2²'ê•×iFòíBÁH$‡yª²“iUFQQh³GË >>uÜx.³,ŸX<ü%ü" ƒððdŽ/½H*fߨf’ð:†Ù®Mòyòðà¶}Ì‘;\úYÏ]HGA ,!÷——? zJ"£¢|êê(š\«~:Ycà1- )(\FŒMNfhñŠM%@·Ñá Ù›ä*ÑIHI)ª~ ’“ÃÀŽî½}ÝBÂ{hñŠ•u=UÊÉqß5¥±Q:¨Ùó T3 ;û· J8@ìÖVá¹Æ×ïOlJîìÔ'é|óB¼½3¼ˆã˜zXlõá ôF*c=RþD·tµµ%£稘Z'gŠEDÅÇ«¡LÐ10¬õ11}ÿþ½´~`¾‘%55§¶xmÃ(4A½Ãù©”˜X@nªk0µLb^ñ‹ýšõJ®¶6ò‰+âuuu­†¾m=a‘ìãõ8X2‰LÑÙ½¥G"jêD¢¾övÁ ¿îà`œ[B)’ÒÒDÜ× ”—Ïùò³‚‚¢_nq±_u5'²­£c·Å kÕ"+kÁhK´a/“$»à`º·lñ¢ç¿µà#–2ž¾oª9 pZnÅòûÀ…”ÇèJf„(66vGK

½Ú­ÎÿþÆTYÄQ¯Ÿà–5¬ís!ámsÕÇ ƒöi–I$!Â_þo š‡¦ã(%äi+óìw==½®ê"ëGöç5K7×VXd/ß”ž&¬%»-¦œ^ë^ìéZÌ|ÁHRí)R_@©ŠÈôA°ÖíUi¢KÓö[¼Ê®°¹™Ÿ•m"9üDˆšíý̯”ï ×O åÿvFõ£ä8„ ÉÛŸ«Ét» lmE1cšE¢XÞÚ ÆE9pØž,†•z¢™¢áçë›Wõ:=übžËzQ)_F§Q\ùÂ&úÏ–S#‘´ŠÃ##¶GKQìêëY×±ƒòóÿ”U‡ßœs4,‰9(T¥À._7Ðõ¿zñÌf£ß£Ò” ?ÿÒÿÛ‡nÏ¥ù¸çòÇíÇåÊ6÷®$Ôr©>[[›.wF›Öƒ$ôÛƒ³ì6 vÆIk˜ðîo¹z²$Rø¹G“êߨÙÀ´Ü;b®õðvÌ5¤[%*­mLâ__ày²¾bãÊ€Ðʦ5çž4©‰ŠR³²²²Ø,Uš«â¢àoÜ¿$ÇŠ¤Ö‘…ë‹ÕUP€ÿÌÚ ‹ìG9•»·Xë°ËòëIW``pèô´ðÕ ¼ÁíEŸÉb#¼JÉ^G? ‡æûJó©ÔNo¸’«‡[#¿zJ­$Î*]++ï0â!½ñA… JਟfåöQD7‘ÁˆPÁ¾øù1ä°ÏÞÁðµú(&5µ¿ó û¹Çwl,S¼}¥2g[¥% òŽ)ÒSÿ€*>>t[[‰Þ¯©©Œà¿ÿöÆ|²½ýe¾_5σ +¿#‰ñÉÆÐRÄh6Z¹óñ¥™× ¢tR561gr÷j×@Än¿ÔoJ¹¹¹>÷-­Ê=+û ‘÷×ÏGÄX88D“89ôôõŸ)*ü 5ðe5 Õ3»¹i1ì%È´˜y|¼ž“{ ðõ}/@uþ<ÒŠ¿¿kžb‘ÃŽZËe§T¿¼<ãÀ@g­~·«#‡‡÷j|‰¡••, XX¸:¹²~z³•¤ÎW̰–++#d¯$q֩襾¯=-7è1,ÒàÀÔñÒªfÔ8ß½„‹}óZ¢Ê”K:Õþ¸E®2]kë;ΈœÒ·÷FíkÝæêÞLEž|¦hõˆÚéšAœbLs3£…倮yaêH}``ÖÉß?(ý øsÕZ‚èUåž÷•ò´£Þ¨«#;;?[^nK–˜@£êË÷—==/Äq###ãY à'‹5/Gv‡}ïçæ\øÏœòMáešÝikkٽӖΊ>"ÊÇq=F ¬rÿ=>iNž½4ˆÍ}Ì ç¤-ØO^ºWXwf(°ÞÉ-O)H}GŒÏøé} L4µL7–üñ‹8ã¶¡ÃgÕÉ!}qä”/tk³àxý[çÜ¢UðöøEü œfw&èk2¿¬÷2spø%%¯®®þHC€ƒkëê!e9Uú~{LqþóÃê[ƒ“Ô…ù™izöæœI ¨öû8•µ´÷{«ï¸ÉÝø_PÒ½&Ò¬t{¸{»··÷cÌns0† ŒÆfkX¦Òâ-‚ÝÆ^×ïÈbÛ½iáJKM©_| œ~¡58ÞL"üt9݉2¤µ@BB¢Ú][ó1è §xý ‡oy9‹hèÕãT :_`8i6¡^Í‹Ë5¡+Ò§ÅšH‰Ê'ëbYáQ¹w$Ök¶y‰w•LsJ.Uôs'kî{×_ó~º‘eŒ3¹+«®öÏÎ~ÕØØø=5µäŽM[[»¬¬ì+xµ;”0óîuôJë·§666_NªHÝÜÜ`¾úùÁµ··ÿ8mžY¼:^pŒŽ€€°·ØÄ;4õæîþ^ÏÀà)[‘VÃ…¢SB`Þï À@±Ç/ýVé9ÍåΠ?\ƒ„ðð£ç/|[ÇóçÊ]N]®®Ñã ÿìÎtÅ$!A‹OHÆóÝ\Õ‘ÐT:†ÕÒÝho{û 2¾ßÚ0Ü6Ë0ÐwñÐÐШijáèÇí¸Gó‚ŸŸì•T¬/¨5•C1«Å{²2Û5Q¥B4###3EŘSÒw®8œœœÜ;8‚‚‚ÃyòT„„mƒƒèIœ–½Õƒ\§œfãˆBþ¨òž±QQO î.—¼Èû;ɉÙrž†“6øÐ«Rf‡{ÿŽÉn1)** âÔÚìq ³Üd ’þúæ—<­NÉØ7AþhÄúS%ZoK'Ö˜iDöió.<dìxþfåUÑþtmxr˜v¸ønjÓ£û¶hÝý{tƼŠp–è*iyyùêt¹ÁáÕÏF ZšöŽŽ®™ c¿°°0µj‹„“Ó|ÅÜ`•b ááXDDtUf¯räÒ;wãnü0‰KJ>§W)Â4ì‹Uf¼´ªäknnο­,4P¾y#m¿7}Ü䲤evu½/Ž’™ùc|bbA£µàß–w•f;ôåºmžòU;Î#]¶wW¤ùT´÷'}dòÙ½Üå^UEä_QQ•LKÞÁÏU[v1Ñ5Q¨*Z²3”íGšÇÏ)Ž˺·ÇHp…d®×¯Å¹yyQ(|Õj¬RŽ./§nî§ê–Üúbbn‡+MY\N>¯êŸn P¾}«®¦¡Ü惒—÷ óhñò;×)˜Šê&íßë_(|1aaa3÷gÓ?º3Ïåº_:W +GÈYŽf÷=gÑýªó­ôÄzLÙúuqqqW0.}g4\g"‡¹oUUÕIEMD.ˆ //o¹õÿñß?ض[Ã+ËË?“7 Â;œp;£–îU/o&FšëRx•1-]׺Ñl׺ÃÜ™âÈw̦¸Æ¬¡œòÛÕ#Ðïݾ¡`¯H8;äè1—ݽ¯^õ •/¯\q¼¸¸X½9ßíÝ®0 îÀ ÏÝßÛë¬2ôêp8ßQ–oru èÜVýü9 S0044#õÅRjuM—µ‡KÊ òw®/}1)ééé§\ìÚ£©°p•01eûqÐÑ;Ó¼Èð¿¸ÄŽGþ˜,yG[TÔØµ1°9Qv‡#rRƒ©ZòI^V§Ñ™e®êtYcI¤uŸå"`öÎÖGƽý}(…~˜‚g[#B|nÒ»—kZu¸R‹ šššëÆÖÖ·ûs”¯^‰¼ÆA¶z9yj´Øß/­§§GNò–Ò3C1WVÿ`¾îí†kÅÞ¿\„g¨Uò:ù—ý:ÁS-ÅÛr=uSÔÎWxuÜCî8>®”þñµð—/¿@½&ŠÔI<ùæ~ÑÈ&Ì7¹L_;Ò‚³m4Ñ‘%Ý/ì­[Û·t7K2Óg‘˜pô`»wtkrsß°ÇP™¾T41âõÚZrð ŸJž¼Î·ìºUÈÐ7í£i!#&$ Ú™xl‰H7HL×jpìÝÞÚÚ²H›Ê“*//ßkjnnóµ¹ùAÌòpà=nK)iØ~{D`Þ°o€€Èáb!3>ìæ*h4r²mÃé é¹¹„›¿þôb±œE—NšÄµ²’Éú¾Ê|(©„¦ud„¥Ç|¡á_Œ¯¸^¾|v¾;ÕÓ‚šÉv¼PƒI§YXT¾7–¡pâves!A>AÚŒo½vqþbåO4Mï6¨PºÇÔ¨(ïÔwn.§G§§nÖï¬7&&&D.ã£wöô¬­tlåÊ•^-PïÏñf8ZÒ¿Ñ¢³\r \XÏÜ<ˆæ•Å&··ƒ—G+Bìfã¯ç†ˆ8-òF9¿ð¢/)‡ã;TZ{²½1W|îè±¶ºÐð¥aÍCå@ Ni5e†÷écT)))aaá×¹äü¡Ê…*´¹ÅEE¿´>žÐ54<„=q-Ú ú|¡%íòõg—ó®÷ÂJ$Y9Fº+íOMÆ6T_¾ÌÒb”»{p#Oˆ‰åITÿMJxÊ%náI¥)E*&c.gb’wrèt0ÿDZøvØáu©yVÁ)<\º×ãƒZ•.§Å4 Lém £ãäÍ=ýk_LLÁåù:»·%\5eååò²->³ NÖ€ö×Î¶Ç‚Î¸íº¸-j7¹êm¦Lÿ2Di¾;‘j‘v õî ’ äàx-àÇÝí¡ÐŸ/]]zë½1áᢇ‹M#5ÖK$›UU¥‡íæS%ù•aó@T­‰î'¥¢~<›Åùؤµô{?=0ù Í9-¦Aî-9LWaq`Þ2àã¹4þ£“AggnÆOµ_âZàÞ;Ôòøàæìêº 2TëtHˆúänßÞ @†¯Ÿß]ÓJŸÝÌ[,y[jßÖÔwªÃ¿ÖIŠÔížå8t5{,šÌO«ì˜ÌÌ7†­tegggD;;;èß@L…541W;î'×/Ô]]ë..ðpé”0ÑÑÑ)3ý S¦ZçgOÁ¿ }/<»·1`2Rµû\>?*"žÏ¥Ðùá.{<ò vôëädÏç õ ¸¥ÚP “~‹¥é|r›,R§*P)¦£SÊ{ÁÇǧ"ìfïà€  ÎÊÊJÝ 166Ìß«ÍÂÒfºç·‘ÑÆ0/@ER(RCoƒ†èêê~[fµÀ#ßìî"_÷ŰÜl‚neu•zpóZ£ "Ë—¿âzŸ?¿ŒŠŠâ‰1Uþ»y5.:U*†dnnEâþê0AùûáÅá“Ùx…ä×;S¥iÅi53EEoÊí·ä+Œdô@¸‰¸¬ÞȦðd+¤9üÚ4Ç“¥ˆ¦Üߦ¸‰ÓS‰ût¾ŽóÆHé ûwž8×ïÁ5šä©ÍRbSÞ–r¯­®ÚìN2TZ-Ü`K~Û©p»´/Õѹn[hpÉW¤‰![z H\$~+!áâw}zi°Pm2Ü _a|ù>…gR¡§W^CÞõâ“ÿß¿ö{3lðÀ3á÷:²>yúteg'q³ÑEËí3kÂg9Ôu1ùŒ|é\,,,àe2gkbÒÖ5]€ 9YG$à‚Ó5­²¨5nž ý®`¸² yn!·‹.Ø0-«,…Æf«Ê+¾®Î ‚ºÊîU)Þ…;ÏW<::zÿéIFf&‹éèËÚÚZqÒ@q{lËÙ»`MFý›3k,œ¿ùåp EoàDÃç¿þþm|tI®m×pGG7•šñ‹ÜáÝ;RwµG ©’)·ÆÄŽFhÁV£ <"ú œTYbÂåqc$Xûâ"™¬¬lÞÇô'¢sxCIùGD¸˜·©ÌvÏŽdžsW%5RÒý+çƒynÛUƇsD ‹^)ÒM@ñ¡,‚íöôt·òÓƒiÝaÄGËmîíé0ÊJx©©ûå6+À@~Øáî";¬ dÊm yñM![²miIg‡@X˜Hˆq¨}g‚B­lfoŽòõol™D“ÉØogj‰b™‚áP>­üURÞá®ëÝ­vJPúô8¸×§SCâÏ!Èá¹Æn{3vpŠ9K^&Ò/_-ca™’»†>,m]—,ð½Ñ°Ç$#Û·Yþ¡‚³gµä‰ÊTFÀW ×üØœ0n(NysS¯V{Ä›Ìm‹Ïëô@ï@B ~ÂÚ3H±"ñ‚Ãd¼ã¦DÏvªP««¸mõY»Ãìü››KÆGNÎVEèüQÕxèônÎJ u„ ³Ï>ž÷Í­¡„¼Ç{3Rùk˜ „LQñöê7ÊyR¨J.‚Wa»­ðìɃû›ô²jFzöDŠåmB˜:>OOŸÊŒßâÂ;\†’Æ?^§c§ ´Åny©URQŽ>¯±z':U"µ¼Û€`e•¶r´‚d2W;^~b8Q°ÆíyÇËt€Œ+)AÈîD˰’)f½RÚ" ½(Ne²ðGX¸KôÄÆÐ(“ÑN¼žpï””ðQû;bñl4Ø4Ž£Áž—y6–få¼úý &³ãèUæ€Eƒ ÏR8ÄÝÿÌJó°nY…I—¥ °Òô`jSö,ò´Ðí±–®å6†Ÿ™™›YYYö¡$ud2I³úãyœ =°0[ÛÛmhVVV bòô ÒÝÝç‘1ç$ÛÛ+ =éîÃcôž-š¤À%ɦ¡wäÉÛ,·rçU&KSwkÖ@ÈÀA3þiç®YãÓ\ hF3-/[Ë)§òå ÐVŨ·¹…Ó?¾  øPÀGô§µư÷G$<.UPPþÑ9ZwwØ&t;ÿÆà>’””b¾»““W2a°Puëü¼ð7ÌW è)©©EwÌ¢ò[ØÊ¹í_#—jÓg‡ iT–}œ»À{SëϨUÐÚöÁ-BQ&£°0_pQ;¯ýþDão ëÁ6ß’Ñ«œ)nSs°°`ú}—µ‹aÒ!ãáÙپΩ­¶ÞÍž¸±.«­Þm˜,Xƒ„}Åy¨F, ó¡Túx^€ùÌæ*NöŸtvÄÓ:—Qs¤gü[ɾÅ2f…+þý³®Žˆ|ƒ‚wïÓ¡Ó:PLÛñH„K«²ëX\ÔXþeÆ~ö}ñ\ú*0º6 ¼I •»±Š&Ðà'«¬êªÉ `Gº¾þó㌹ã!®áÌlχ:bi™°ìðs‰ƒÅ°69}oЇx{ãÒé˜Ó —tƒ yyÆ6væÈäi¥ºzmK¿£/LA½Œå:u…~ÈS{NÊ3Ëóô…|ºÁHx ¸>²_ë’WZÇÀ¡ rv¹aŸ u­µ´7O©D‹ÄŠ5bޝ%w¸Eb1Ÿ¸]jwÜ]ß/·)AÄ!¼Þ»ž.z&áj4W“Öº°@îvêçãs£}H šyTøÍ,ßë7oð zˆ¹2VÖ'ÈVéé~d—Ë=ìËýsu{ˆ5<5Ã#i¿Ñÿîêæ m¢0b¸Ê\¨H“K˜^ úæû[;×Õ‡{nTÂ_x·.â;â@« û‰¾kšxŽ%_‚ƒü-†^h¸|í LkºÐ‹U²]$í4)¯#BgJO£K“®a×7$d TÑPµˆÔwqéJ´B{K‡>ë}·åºb"áÍÍŒ*ÅD•ìo¡?(zã7 ¥-Ä\ç ++l“+CGòÛ6žJ\oïF]k{í[IYٞΠM0Ú§î§aŽé¦džß‚°k~j5\#¢„tÝœ ap#;ìªDñEÎ*©y=¼ÅÜ\è)RoÈÓP2 î¦"Öxø ZÝè×ÊSÈ&ñöéÁû£ßןÐð=6ö›zE½iöoçcJܾXR¿´%[ ²»“ß¾ipbÛÚú R¡ôšˆãW[Ô+f×3x ÕÉ|j¾ÿËyäl¹‰˜°bFFjG1Û`JCÕ¬îjgiÈgë\Y?ý±œS ¾aè”^¿r )¾ÜQ¦†Öî·G©˜™‡»Î¶µFjñEN¦)z¥¦JмFl9µ÷öâ :d‡C¹ÈR²?ô+³íªJ|R’îå‹ÉðÏàñÈqà÷I“F²¥<ìú§ôü0Ÿ´µ©®ì‡^]}%™§«þ¼#˜ÅKZ¦Ò ç“¿p¢=“Å6_~Eþoe`YÔ¶¶â¹mQÐÉ›ƒ›’ô6¤ñ  ÅI¥,f¦ôQZ«Ì#ŽÆälܹyœJ"LÇê3²)ôPŽ´Ü’F·´~§0Ç$Ùð"‡ÂÿÙö2%%ÇtÓ-²Fu²OY™Ú38ýE¾)J­2^:Tb®Ô޽™wzF*;Ü´œœXØ4Vre[(¨¨°œÜô& `߈c6 ©ª"ôÅžû$$ Ýœ©ûuv*åSqcåÃAE÷šá)6µEÛïÈÝ‘bM*~>²0â9IR©bE63<û=5b­Îï<á“R}­¿ ņ3ºHHÞ¹·Ü_¼»Ø#|J“[  F5ª–-Óê&™œþÁg’ò£ÃKÐqOz¦ ‚‘ÅÕÔÞ@âekËX­î—@½£åk‡,AãAí—¯²õùTó3Mp)žU[6ø¾µ» ä8ÇíßLÒloýgD©¬¦‘ "rkñ#” œ #·8 ˜.­;`ù<‹W¬ÁÁ]“¼„ü$ï…^¹2Ï{Zà˜cJ»6:’F€ÑÈ>ºXôej)úMã̉¥zU/ ʳg¨= l—ÌŽ{K_ûþ¯ÑPÑù?|ùÂC-;ï½ÐPª{´ŒÏßd^î2*„ø-_±&ÓóžÎÆÁ’Ôçž÷äOž fØ®pÛ›ð™MüŠâÁ‹T1Ÿ.Cž,&önöPÍ”NØ×û¿+<ƒ²@¾ÝòHÉú2®kÝ+& õ9ã‘È“ÅqP½€ž¤Ž– ËlrÁuœ,Z‰ÔÉ8®06¨&–‡½>é#‚Bêñˆ²Þ×^k;¨ )—›ÏPù¯Gc>1ŸLî­}|½9q|{èñ±\ÿØ•ƒ4€ÝÆ3ƒÖ¯ÿZ–}6Œxäj%`¿öË:<êÕsljw4ll¡|,Ü· ©Xœ¬˜¤ãËàrrº X³²ÿ›?4…ë# qB‰ª`!Ï×b¶PëÓ¿®ot¹ŒŒô;^»fï xI£ßæíu4¥“;\k«|w:ÄÝŒ,•eÔäÆÕ‚ŸÏÿñ•äV¦õÒÐí{6É…9v4{{û2ã!‚ñBUõñ¨Z7.xh¯¤´åBpæ×«ìðL[€¸IC{º@I,×,5‹EÉvýª•zé7’9÷†ZfÙOð§×#ÓKÙŸoûïóÛ󾆯€q (DÈôSP‹êLj£1›ªö/4WÌ_3I tF‰"=ý¿³Òñ˜§›×to"}E#¬BÆÇQ¡ÕvV~[1ðÑA"¼”Ÿ>Ò2;ð¿ÑñÄñ¸a÷)µŽÐgã±­¶n …¶Ï†RˇGV¢ ¬¯«_Ý_v¨ÕŸ1ƒšé|¸çÏÓšÓØQîš½:üøúµÜ"²ÇÙÞŒÚ4s ©Ò„—4¹T0=K]"KmÅÎê'ëô€²>´xêüÔBç?îΖÂ`ÖkÇåïðE$xû 膬pajÙ;"d¿'_Dþs-³?ë žd¾…<tò‹W븎gŸ#‘[{cz ØÂn‰å Dò[nµ Qi¶þØ?ýËúiNÒ©wh¬¬¬+ûMHÀû‚¶óÿ¯"þË!·ý5ß»§Ë˺A–s| Mó©$ùùá UüZû Ÿ"¤µî|îýa).3Ð:_×4­ƒéŸÄ¯ùç ¬¸\þ-M.Мâ¼üž "BÛŽ!øä‚:Ë›i ¸»»‹Õºmž?è )„4ÄIEF_­Ç-LWï?¯·7ý:SáöÓýzõík¤Èêëm|@]þCF ¢[ñÿ·/ ´iÔ¿4 ,ÉÆ“Èáâ@VxK{GDQñ\C¸¢¢ð =‘ÒºËpýñX¾_Ö%)™mp€Œ$±ÝàÆ Óz¶Í  Ýú0ü9Í¿ædV oZJZHbsÛ{WœÉRòàÉbsIR‰L(}¸Á–riÔ« PÈüÑÌý@ì'»¤(-7ѳ% õwÆ÷¡(ç§ü×4?¨ ÏU •~¿Ô\óTv¼Ä’ÁáeØÉa †ír+Z‘ŽŽ«k—µð8•˜•ÞÝÕû­Ý]ý¾Ø‘«Õ0éŒ'̺ïí~Ð)C5ñóã룵­Ñ bŸ )% ­† Äû›{$;;l‹¢ C[£Áy¿!þ ¡Û‹p1Z% ‰m(ÚˆˆÜ!©ïˆAS¦¾V.ð/P}Ä›UTÔ(@¹­¼Y@á‘ú@g³è ÿä°ùR,ðHõJý»ËÔ·§S]r<¼ˆâ‘LçqaÅê6ÎXo¡žâj§ÊÇöd1–d Ý7,ªI* ¸¾¸KŸôôfp]ðsç@‰…Ë€¾ ‚3Òè‚/\ Ô¨€Š€Ž&—•UÎW|=:¶ùË¥RáLQNnG‹ç(ŽÂ]ï¡ IË$^ÆOˆb¥Ú}Gw×Rÿñ)¬.4îR^FP=[³U°*¥dÏ_]µÚÊ:îß`¬¬È±˜*Ðägâ{=z¢“âµ.=²›áAΧº(¨oGó"Ñ@¯ KK?¯w¸} TÁZ Š»{‘¦ÓóÔTb}a󻋹ˮ/ºpÊ`àeÎÇ  NȯَK¦cªUn‘»ßîæ}ª#¤þPE„ŸçÉw´µü,,ô±nVúXüŸq ~˯/(Ü|x‹Ý£t ß,D8ûÀVcuìÏRKVX[ûÚ€>¡?yÛûƒOóß­H:׳-Â’OAqLbËûÔEj#ÏÒ<ŒTÿò‡Õ¹Z,„?ÜßWl²‚Ú{öO^„@W¥MÀ'õOQ)âöW¯p„–,–×'´w¸‰dÒ1M–<ùIH‹zÈ=¸sæÊ-ùœ;”ëwÁp¿'•(”N¬Ä}x0>IêìDt:ègôš†hšL±[ª—Ñcßl‡•hKþ7Í´bw®ÐÀàÊõ¾ˆÕ8 'Êus½——éÑÂhÉQ`Ú¬Àº_. ³ûÞ@S¦{‰5[ãôìû­bÐÍM=ÉoŸÊØÈHØÉRTŒGŽ^r|2¯!Hù‡•ö<—¬úü‡¢?©†¼¹ù³® >ŠgÐÞ8H†‘ŒTþNm®\ôÊvÖæÐRO(á’þ?¼Õ(Öœò ’@zȈ¬îÓ·ƒ…d\ù¶¨?Ÿ¡­ÍØØœxVCb — €\m+IM ‰ßTLX$*m ºl…q…nnÁòr! ÈqþHç¥×<öñÀ‹!¢“õy/ÐŒNMuÕ,qöV9Ëç„R$r•ÊæŽg:AÛê‡-þÀ‹¬ÌTÄýÃÀ }oÀt_ª-ê Ù¼:0–t[aðö”(|[W»†ëì|(Ïhm$Mé©f˜*òîÍmúÌVg‡+¿„ªòSjÌš1ÝÖb‹˜Ie¦2=ÂÞüvÐÖÖ¦í5ð²Çÿ»Ì×¥œ <ñ`»ÃæPÉÓÂmœ˜ïåw4{LÙ\`;»9ýà‘ü&#Aæ¥{}b VÖŠV¨Šá”>^j4°§keµfüůÞÁ ç^©r¼ÀЯɭ§}ºöà œÿÿJÉߨBоLسŠqÛÊ^r/ ¢Ï5Q8üxb{ýåYr >`òÖù£y"©¢ÿ 75`£¢.z‰LÎÏ?ˆ"€™˜×V¢¥½5œÎéz©ígØþ¿þúõâµî×ÖnJÔ­,Qè¡.gegB 0rظuVöYº?þ˜8mŒ˜¬Ü¾ì(-‚ Ð"뜒r•Åä;9Èox[¹Úw9zU²|%1€g b×/¡³2{Ó2ä´ €ÇƦÊ7À5ÆÐ»¸X½:íϺº­éKyÊŒv6{)‹ifÔŒ%A|˜ÄI/ÿÉ{:}HCã'=ãªÁ…G¥„¤5üðt{0…†Ûq/|RÀðhChÝlw*­=‘ÇÙÁÌxk«ÌY“ ÞÉÉ»ùa×ˉ•ðc•Üx²=<E¯L' ÞPZîên)þ PÇÿq›â¡U¸yvV£ €o=ÝŸ^+ÌœÀDMªWÑ=›(HH·œÓ“3¹<èJ·Ûìr¾»‚&Åx³^AŒNÅõÌFÐ(ZiúõøžÎ±@µ4DZ¾0öU½ƒ&²×#ÛÅH Õü¨$²ß׆ÕÕ¨2Û5›ôª ;â4Àjñ:~ò¤^ìA·?žÿÑþ ‘èna›#µ šo^¿dýû¥ášïc3»Ž ôõ}¿~]‰gn#ṮðÉÝÍÊ6ÿ‡€•$P¢bÜ=.—;ƒÔ™ ”h™€•8ÛL£Ñ53+ªº€{–,’Æ_8RmÉ`1·ËV1 æQíznöäýO«ɲò•1ºÔϬ„ó sz÷7éÜ_þâÕÛ«{½ d; T¼h$ ßqŠÀÀƒ¾ØÈý,y†‘½#’"£‡"¹ÖͶ²2‚NF¶Ÿm‚GÒjÝBê!'vuåž=ºLÅÏÏLçkß%'êΨ]離Eù†A1+\ñåöÎŽþ`òÛ<ª‚qyq8ÈÅ–éíÚj“à1Ü /¹+êüS«YÕ'  tøLü­AšäSáä@TÕ_ã Ÿ>úËŸ¼¢—úö'ºFÿO”ÐÕù”6@<õõo¯Û}.>×3ñ¤š§Oáv&ÜQB2Ñþâ´^ EÁg'õQúlhLÊˬüSTòf² c*6E hM›r”ÕUá¥ÂÄZ³ó‘F¥¹* °5 Ê11Ù­‰4G÷—ºúú/Hb@½¡¶~{ÊU¦/âeüH£ÚØÔ´²³Sào/¼“mf›È.ôÜ™Äi} Pkac™ ÅÂL(Þ±ËÑ ©¸OÞ@vX%µÆÚšIôäŸHèdõð ¸ËêÆå• •fNNR‡æõ¨G®\FE天Ù"@é·pŸrþ¹,q)Hçjè±WëqËè't4 Ð"ðˆ¼~Žûfm““Ò;¯é\î^5ßZÁY-y†¦ð¾Éðk‚Þ’-Šf··°Ú\†Î™A{÷(aˆ¬çª¥¦kIò©ò¥±áQCC;~ðá7%M,#›‹ZT.Öy†!Ç4û!ÐzMüçÏ6Paà­˜+Ó"rÏiÿ¬,ö7Z³Äõõ|ZûsLTTT(VV2YáQ…ôª”Ç Nô+?û|ýŠÕ•ƒÑŒK—ÇwX¨Zº|pÞCß1>Žcee¢èI†ƒó ß¡³_ñ¼¼J†/™»‡Ûòa‹Ôý&SVdƒ) Lÿí‹FjʰJÃ>‹%OÂ<\e9uÓ_ç»r]ÙX½± €õžï›ÜJ½££Ñ&‹C#d…+™<þ\)uª§¡'œTèãGL«ÅF$h·æúºÍa¤Ü@ìÿa;\ó<FLÌZùmnn#Éò†„2TnD¯))ÉjI©D+¡ƒx@¿L~çF^c-Ðýv ;üäÃTÉ;ï¤9dv 58ó)ôÈJ]š¸>Ï;çø¤¤Ž¶6اÃÁ‹àLij!fRR=##x''§¬ÜÇÇBˇ‡‡²òòo „“%Z…w.Dºzz°RRR¡„lðÛÛÛeOaÔÔÔ–ÁÀëQ`ÐIZ}‘°—ÿþ}fnnþæS-&˜åS˜ÎžžÌÏ¢˜YYGwî/{þþ‰Ö³´DäìâbØGøü¹·hQÛïßˆŽŽŽÓ•¦ŠÕóõôþÑÁßiÖ Ÿn øTUqôÆ1E(ªÎ F<也Xwb‰ƒÞ.ÙÜÉÃmËWÌý²`$Ë?+ ó±Ùöî| óÆ)èà ë–{R óÿcalaa¢—TTŠö{µï¹y™p zhYECÕ˜xœdvÈíÏͲòÔOF.%#SUû8a[[ßÇlœŸŸã2hVã8.âêééeô„¯îKQÃд½½°´=ßQÉ’Àf1èF]7îðGÃfÒiÆùöí[ûø¸RÝüx¾¢H¡J±°‰I"n±FÕó±\9UÆËêù&¯ÇfqåAbœ—É))~˜‚`ú²W··æ÷ž–Ì3´)ùø>T«LOOöÅÒ ÔTVâø `àÉËËS¾xñþƒ&ç81—lVVV` ½*2ŒþÞt9tZçN3ßœç@ ¯*t°GXT4Ø|ª‰††fåà äSDEEÅt£K…¸¬ì CÒao1ƒrLÚZ\¥¦šZ°p~®çú÷7c‚éÿÓNYå~¿¶Û<À(ÁYY±àÏúü¹‚oØ€3tÄ/?óï–L[‰\š²ý4RdKF@SSS­ã~â—›‰ÂC܆’OuÉÍÎÇyÚMõ'bd€÷ööVƒù/¸íz¸ÕÕ¬s®^.yáCç¦À;)€µ¡H}ç–s~{Ìéææf{ã°~6SaܵÒ3Vc½„GKK †Èf<ØXÔ»ÿ—ýþÂ1•Ï%#™ßõ,¯¬¦Fµdsÿþ·å“íÊÐ:ŽŠŒ¤ÝèG‹¡¿Eš‰’ç¦îÈåYÒò§ÀaEv78îcA{Ÿêõ°s‹t_ìÇý,- LÙ•"]œÖO§Ce“ÑN•Ì›²ÐPáó‰˜1³qgk20Òõ%RRR,\Üìäêêjx˜­­Ï‡~”<<7MçÍMŸ<7ÐÚ@=ÔÚx’àáá9_Ÿ¼beeýXm¡^¼ˆ! €J̉ s4cœÖTC>ÈÑWöãÎÙÞ 6˜džrᤡ´´4 ÌÍÍÍ[Ù,BB$)©> 6vv_Ì'0+Œdbj®K0ª^ÉËÇÆâr²[OÀ{a]izJŸ#³Üì!ÇC-àRzÚ½¤ û ët {º¿9ÎÉz¯ý¾Æ*ìã¯ÏHù™ŸOst§ŠÔ9Š4UË<¦‘( ã-,ܹ¤!Öó/<<­òù ¯æœäÞz<>ÜRñøûûÓ=zn’ª©«Óæ.pXª¨¨ÌLãáÅZ¾UÞDCF||¸‡Ž>Ÿiô;ø¿ÎNöFçã›–º{>`S‚-vY™Ëúm‰ßnO•’óññ-on"hiiI'²o7¹,º3ˆv=39Û£:÷|¼¿<:;óMK#‡ií룟ûòûZ1Gºä™bymí)S|BÂÊ` oïºÓþ¬ß[» ÷ÂÄ0à´µµ¡Y®®­A'vPÉøÔ®]Ÿœ|ú'°?‰ŠŽ–¯·ßæ»\_Ø—NæÆBÁ{óÞÕ•G4”VL¬ÇNP¹z{s3 ](`Ã|N˜\ðbŽì~(:) ‹ãu¥9pÒ +«£â;&”4b=ÞHÁ ¤ Jæ÷À()é+·7%·?YôícO–Dôòê*¥C‘;=Ýíáè…Põr„ºÁdÑ´cŽ÷ÆF¨Ê 7;\Ô9\  ½¨~Ç›i=+»s>¥—ym92›Gª@xäÚìëWZ>^Û u÷‹x~´5b',Jý‚nŒ? Dà‹ Ì{UU#£l=K-<•èdG ]ŒOÝuRî_ÉŽùù¿M˜¢¢ÇF §¾ênÊÊå–gÙ‚Òšêèé¹¹ŽáaÌ^§nðJLZÄÿ÷ÐÏáCzyAŒµî·k»¥»m=Æl<öj_mךÛGZþ,ì+߀V>ž4“I GýîWú Ì8pê­û$î_ýDBðì01™I,gÇ;O7™°ÈÈ"~ÿö}¼wÑú¦Ô‘F` Þò>†n]¾îË[¥’Oè`½““†zVÚð®®× „Ò î:½ kptÉŒ9Ù™^ç;>5âó¤å!ˆeàõî ÁHWaº»1gú·{¤mþ˜^Aõ`p¾ƒ9ßtû,CN·­ä+0^@õbS¿x±ŒzV®ß%ue!hañ潎>AžÚÈ3<<Ã-ž¸ÓÓ?Âd\ }må‚ôÃäàŠÐ>œÓa·n:ÆdGaa‘„æfFh3Óº9?B"ºz5ÉÏ`ø'‹­>Í:eÊC\há[ZøFÖ²?³r£;t»õÁé„–Mñ[ÆQˆÛ¥>^Fêj›3ŸÛÅs˜êê í##ÈÀi“WWãêš›ÃÓÓ ºYJ¦cÌŽåR0Û¼$!ùBFûð ÁÓÍ ¤sÕZíC‡Ý©ïT:0RF U±ÿ¹×1hyál›W¾<I4ŠÞ' ¨Mꃅ®&7[D´°jÓ»O´œ¯¯«ÿó9O)ÿ ´Œrs^øÓ͉F©Ø ^sô‹wHŸtûÅþìdÔ~G(á€aqÒ™Ší仇‡Õ>þ,('‡0Q ìëãój~>ÈÚ`hõ½ºÚ¨wJK92!ÿ½Í‘2*á¨B˜[TÃòr!´UÏYL_ïäõFLЭêÞÍÇ~¢ôR?…‘&"¨\î¸qqé‰6ܘ£_¾2lí|¹IY]Ÿ•m‹É̺ªJ;j¡ã.O*.­„®Tn:æ-Ñ£“šIý[$>i1ʆJ 4DðZMæ¿ãòIEoàÚ;ÒVg«ÄjŸ¬±z× 0'Æc0!)é§‘ŒÔx‰eX"ƒ|EÎ+’7'ÊɷߩĬҽ¼’ßñ*G} ¸ezþÎQh(5ìx·´ Ùã¶.ÿSkFFFV¸¼Éç_Ï™9…ÿDÉŠK5ýý[Wk¥_Ùݧ™@Xzò/U\®%Ÿé_Ï#> CLE…utÔŠ‚ã'xü‰æcÀ73˜ÔÔÅ??6ú~"C¨ã»ðz”y¯¢¢ÿÍZNNèy% Èî Jî@YéC·¬Ó<4ÕZ¤¾0½ôÚUšíŽ78/oÓdæ zw„£‚Ç TG ¥v§2ˆÔ'qeF&&Âzxh™ñ8ÐÄè{ÄÝ)šX¢jÝÖéRÌþ åœK%1ùs,¬F­ØŸòTÄEZ¼µÃð?÷Èø¥¿¦-!YÌÚ£××óØ8XdÎµŽŽV¶VGÆd¿_ï][ÞäBLá™Pt©ëé¡ —ú–¯È۱Фõm½þ'O)_oé4ºÆM›guÛ8–h¾è:J*eyÉ‹|µ;ÌäS ™1W&î9 ´o ¬’ÃŽZ¦Õ‚džbîs î/¬¦áƇ³•¤ˆ(!",¶«S¯µf?þƒ½¤ÐV7´Šb>EFñòsÔäEv4Ÿ‰ jɧ ;ȃsE{@ð?^§#ˆ‰Ñk"9ìª6¹Æ€ÈžE†+!3ðX4K Õ³ÃG‘tK|`’‚@hÀni†@CCÌna’Y•Òe=爴Öm šP SšpMp&§å‘P:µ^åL LÙ0©kb.¢Üj:ž•-E¬ßúuƒ€=®7&ú`»Z0â¢à´’vw›2Т÷Ò@³vÔtWšj!óè—èë?/÷¸}uwéÂç|¤t}STh®æZ¿µ/¨mbòæ`(µ7¾˜Ì\\ßšîwsqN÷ö(¢ËåXoØóó Õ~ýÅT)F†T0[jÄ=9ô‰‚±Jþ¹I[Ô«›q ð´ã–îñ_£i„bäÆÞ¹ž¡‚‚²±¯¦®6™ÇcМÅ×ø&µzäƒù ýýrtÕ©õ£³Ûµd0å?”µê½×èäÍ~Êôº@êÔn2³Çñù£ª£<}ú®HmDgÝÐlâ6(Èô­gµÉˆÓõyé èh…fvûÅ~Ü÷ädÆëÝ  IÉ`e½‹q:Ô~ƒƒ ‹-€ÍÈ®¨ ’~IF³a÷·¥k!L Ö~8ú×ÒtŒÐþܹ¸´t×fÚ­þïïx~ ãHhamùŠzÜt¨ÆC‹búút’qœÂc9Õ dÑgL;u±v¾G ;ì>êx9øÞè„……J·r-½é6N›Y@8ÉO}Bg¼ÒúmW­|•‡0ÓÑ‘IÀÅ>)GA1Ìl0P«ÐÙ:&ÅÜÁ狽u7¸?Ú—¶ø8ì ‘$U1oÏg z¬2?K ¸zprÑÒ–ÚìªTž˜6Nu5Š9ŸÓ±õÀ2íLau錢?>Übkа9¸ YS»”•âÐ’yFF8PŠ :ž3>ICk{3ä£4ó™bC67öÓÈé@‘úQ$r†CÇÿ†Jý® é{5W£ã1dô©é†MZfâö¯®d/½ý~ý_/8<&b»}ÞQÉÉá­­(Ð4W×¢Wö>áS‰VŠþÛFí¹»¾-÷zt yÇ#¿n¸3™âïëûƒD`llìCk7t ðÍ›^¥þˆ†Ò¡ êÜHsëÅPQÈúÂ2-✘MU‹þ‰z•.C´÷÷ÏÇ»3EL µ}’4!’ºUyII©@m/wuS¯†0œü•%à,RþVÄFAg<8»D_Š `YHÈbk™¤ÙtC)7vs*CÅšoO§^°±¡ÀÂvLÔ“ú ‚rä”öüö⺵·W©xŽž‘’ {ùÐ ïá!7ý#bmÝ=¹Û%)^×ù9ì]ƒ=N›·÷ʼx%C§ËT™‘E‹ÔʦòÊ_ŽÄw^t?Gq {Bí¡ßæ‹“(^ñùµ¤µæÁ-‚ž¥ø‚!Êæ)_Ù^ [G™ÛEª[°»Öé¹S£éÊ[ÓånÓ•Û|úúžÅ'<±±æ‘±±÷›1?p†ó£ÉS4_(O}‘¸ÞkyäUQáw½°°]³`v¯Íî?WY;…—}ðžÆÑceb?‹aN¸Y÷Å×j ÔÔj—Ç6¥Äd¾;‚¾Ívfæ:žµ‹ õ«?ü+wèÓX™Y¤Âg±ŒçíûsC¶›ƒDq™_êÜŸ!´´†ÔÚRÁ³°þÌûýÍOÄ|z.é§jéEY¹éSeåkz§âð¨Ñé¤fOw®r+ó{W’w®øwkUM-Ÿ%„…YÑIját–>²›çÀªªòöÇ $&îD¡KZ-†¶uÝbbWä÷²hj–ö48%¬ó÷¬àÈI¶­ØØìϲVZ—RõÚˆ¬öÌÀ£)±èûfKÿRÙèK070P<ÚQæù:ÔÄdÒŽ•¦ã+à]f·Éñšž^¯ÍÖÆníÕ«ëÃYD ßq,ÉY,Aaz–ãwÍ÷ŽlÕV÷è²²Ä:ûûs¨@IBÇß±ppB’“ ˆ¹||÷öet§Âùÿ<¶ÏT¤«ÕY—Çu»ºÀ¯ŽM×Át«…XòžÈ¾ÐED õÎÝ´|וagüš_¦˜fß<ñBgçåÖ‚vÉ'õàÁ”ó‚Êð°øF$ù§ÞÞàå/×ÌœVß°ëÿH_›š™Q¦atä+b`‘ÞãíÏí¶ÎÌàÉÊ.üÍùÄÌÆvØr|Ü›t$Hš“SŸíº^e]úNòïWÿºþP*1°“x¨¨‰ú×'mœýÞQõ¾˜‚âûò£á˜”F¤]§›´µŽ–êÙkŽŸøú7wNÊ#"‹€ä()ÇèškòUì¶~KÉþUÆnë$Êçì2€7Ç)iœp‡^kÎñ¯º<†§§â—/Å÷YÑ7P„æÿ‰‘œˆ¨€™ÍNqluÑycãæ /,&íîzÆtã5å`š2q'0ž+eå‘ »‰˜‚ˆ‘O~TRù‚©nM:íÍq hüh63Ã+Ñöðß q[ßÀ˰œÃ³±aöv=3Ñ<”Ò. î[ÏSR+×GÌ‘­ÂïãTP`e1V™ž®lûöT1_†Ããê»O¦ØáòÑ ï£ÌªF„'3ËHŒ½ åHÕ®kmƒWˆzEsñèÉS«®|rf×JÜî° Ñ8Æ›­qS4Ï{‡ä龆]A¿8¦>ãk MJÖ´“ÓÞ”ºj;cÄNÑp?¿WzkݧÀÅ£_\P«Õ}É6ö£¹üLðj‘"ƒÍn«³'we¶Ê0;Š÷øØ1°u½Ëùä/ÈãHƒ“ÛÙ¾9œ¬/£ùµ< ÖmR[µµM7Ýò”h…x§ë±I§˜aàÇ‘}Q¥Tןaµnt¿&ãç·3Ÿïnó©9¾=ŒÃ$¼Q  —|µ^a<Ä/**JT-SÍzEÌõ—ö²²©vB¿–äºÉNa|ÿ³ôð"äà®ü£¿ ŒÔ=ßÑ*껽ôTÄ7?!„eÏ‘áõÎËû|¶;…„ÏäOñê6<¼ ûƨ$ÓHï\+cæ¸þFµøïËÅ3§óƾ±Åq¹åç§èƒs±Ÿª×ÑËä@ÝUû‰ÿÉÊ2ë%ÐËÞÅÅX9rðBþñª<%™Es-xއèÂjÓrVk…öÓ3÷Þ^çï#È,ERÎhéVW&‹7¹A-1j!‹ùÀÓ°dЃjýV\,ßDZ+ÀÁ]^žÿ(ã*ŸÜ"g€ª¡¦«Ÿ!„­ýûÛÏŸjw7»p¾~¯ä‡x)²Ì^›Š!æ×y?a,щè¾´=5Bå&Aï8_Ùš†ów @gxEš1Œ!ç¹Æù©¹Qø¯µ+%Õ’ngàcG‘ºG¹ûµnd5ƒÜ—/ȶ7gB{sN؇‹†?uZÂãZŠŠçÄy*y2H ¯Q9-ÕÖ]Ïg}Ó…ÊÍ&˜±Di+lî“ùï1åå­GJ´PBIfªSPÓ°°XK÷J‰‹?MczŸ)j¶5œžÍilV€ÂV¡rÖö= aWwØC` ¸èã)4û¥*Â<@ß]ý£}¿ï¬|¹®uaƒß|×úí÷Ðf†­C^Þkà‹®M&‚-&ý4Ÿ].a]óD^ ^ŸÑ⇇Ïé~'¡‘üq›ªÏ™˜è‡MsDâÜò)Ôl6NÕÚÔ‹Í_3$¿ãÅXh˜rÏð‹¡÷åÿð€¶÷ód¦€Öº=äèè%ÞIoÊQûü<Œ™YozÒó©Œ2C)hÙÁ']ˆ¡ÌbF·Ò|Jp4 dgÔ}ïñõ>Ï»ç›CmS\8ÛÛoAa¶ÖÚrÍñ*9å7c¤}Þy÷WXM]ƒ±œ^l%¸4¦¯…»ž/_fQ¼Ð•(v•ý“ùû7×tË#õÝ]êO‰høxö|š™[xÀßíMžwø$ÌÐi¿#‰¦>/²åÁò è±ås«Æ #šXB’ãgJCC üZ_Ï ¾‡JC£yv°Ð¼;¤ò÷‰Iò¹ È]d’&â«WpÄ5˜Ýl,#~a2Ä즂—œ¦˜ÌŸj1ý-ç©øùÑ2EÕõF2¾e܆ž)mú^‚WPüúÙ±íå»kædÞËg‡KÆ =;4u÷Ôˆ+M3Ñ`â¹_¶wDÛ¬u#ä…ge}nŸu}Nž‹€ÀYÕ çCNRçc·‰7Ì-ô¨º2˜ÂíìºÏp¹}mݹt4[:ëŸd,«röÛaÄ=“µaä_tõÊñÄ"dÅ@A™££M;?Aî®0¶®¶D %šÀ\ÐÕV]‘hb¢i¸Ëïþö£c; JȤÉHF¤/UɘDkë뻋9‘ÎÎF¡OÒr“‘÷jÕ±ö&–¼„x]AC"AE"£Pë¸`Š»£WM®1èn·2Яt‡–Ç~ì<ZòhMäx\©ÐVáqZ$0ä NáÕÚ²Z%“ƒÝíÒ¡³;§ur‘Œì~¸ÅKlgÿÌo¢ðñƒ³3ë`šÎÇBGÏžš¥DýýÙHÊ`iO>¯To6c²•³í€+Pé““–Ë?‡°ü„RQþrB#,JMŽ’2 +2ôÇi˜÷}±a#Ù!üõö#·‡ üÕoVwÉùu¾¢à·—Ù¿ÈÈX̰^Bç*õ*î=„”)¡(”VÛ_¯Tò4LpÝ'k¼“ðTbŽÅe†]ÈäóÍ÷$>þÌ6H›ˆÙÃÈüù5›Æ(8«)ŽI uÄ–„¢;G&ƒ¾&FT?·Ç ß;Ÿ£ctÑð½à·v$& 1ÈÉ<ç0æ“É"{¥UDOm½°H’éUcƒ™y®×+2.W„d„ U·uC?hj>MáÝE‰vÖªßê.S_{‰ˆ.Ûy°0e{¾Ãv³ )00úÂvA2à;Ø"lÖDÙ‰Ø?æO&µTVZØ>`{Þ˜Úwÿ¢œèXC®;5{£ÃÿL1wvª¾ ¼K4ôJàèúÉÕ-SQOu‹û5,üÊa ù{uuX ™JžÚ;T½$M u÷ùö´fyc“b[Þ8FÝîÐŽÀàYD,Ñ×i¬¬'ˇäþ=ò K283¡ç~;»+S@C“ ag»]q]ìl•ù‡è‹@yñß({³¸b†Ó}vBF2‹·;´œÃI’o-Ù«óx½‰õ«e¸Â¸h@¡tÐ`ªGhÆÔè´¶ÃÖÃý³PÒ”˃b¼pz5â¾X€™¹µî.M{žƒû øØësŸ'éÎVZ3Ûêcн-‚gŒ‹¸ØWÕß<¹ÎéÞw¿úþÔî”Üö$‹÷æbÿE;⺎ÄuQÜ”ûøzÅêÇ‘þ*4âHÜécQŸ¾aÐñ{à V°?ã½;Ÿr¸ºñÏ0ìëŽgÉÄø¤µ¿³ 2´LùK¯vP6¶ýTž)á@«CÕ ¦š(qÿN×üÈ߆ۚ Œx÷ @µÎ,$N‡%š ƒ˜mI¸—ý)„úE0S,^ÝW½r¼Am¥é[w¢kßøðÏš#ƼEšª Ç[®ó gÊíó3) u­G„;TOk0ü‚. 7îä¹Kd¤õ÷4g††"„øÝôײH9³R’7÷·Ö+ÿÜìúû§‰Ù@”|'] ‘B˜ —®ML¿µžÃ•î0ssÝ~sî·> êûÝ›³åkÈû ~b“zBÊX"Ò:- ‰¼ww§[UÑß¿û)Ô61Q²ˆz—–¤¨˜K¦ÿøä|ËùôþÆÁ7@L`z–H‚‡=¡Æ½Ž (²•]ÞR•ýþ4¯çùùêG'‰ ¿wJ£NfÀ(() ]]e˜Í~àRËüÊll­•,üœœŒ{]Yíá—BLþ>ˆ)AÞÒ Øf[á;ûøòž ¨Âò¸[­<¿Ã÷Mº/¿²ÀÓžÇóLnœ—Ê3i7ö`8¾¿l*3°Á{­pssúÕn)q` ‚¦&•³ó™ù—Iøf°þìKñ,!‡ ý0ˆ‹,ep¨RN–ûä/`9%~zÃ_¿1±O«•J¯®”Ÿ¡By »lÑv¡¦æ±_ºê‹#·9ÒÅ”Mq…ãæuz|IP®4(Kˆ L©Àj,dÆ!øå^2|.'DZ ÕÝãùœý¿]1ß¾Ý÷~.›j_½ùF‹°d{¼J KÉÅ èTâê§ÁÁÈÜNVßæC âb”a¬u÷fìHÁ(mì÷¼g*n'·"ggªè1Ðá(Øí=Šg¯{*Ñ<‚Pðñ‚¨™ ub‡èèèt[¿ÊÚ8T¡ŽV ÌËãj>“.#sɸxy*û­á_J”¥ Úçõ•½º@!OL„ò®?m‰(•—¤D ö õ Ê}@\Ë븡·V« «„L¹ÀIïí@$öù/1*I-œ¶vÅ®ûܳ£³Æ0HáïÍ0q¸®U¹ž·@%»Þ'¥k1ÿ k²XµtteÛ¥Aé0L'C™žÈX^ÁÛ›Ål\v¾¡†ÈrÖdª–”©T·èÓ¶ÏôôÀ—èO±"ÀZs‡ˆäBñ&ÍÁv[¾°… ‹»³ó2»û7 †œ Æÿh­ý—†Ó‰N–_ÀÎ"]¶M¾59@ ˜sÖ ˾Ì2 ˜²ÀJºÒ,ƒ~þçIܺǫc ˜~Ä\±ŠÖ(,ô¯—Ÿ¼Ï·E¢‘»ð¹C'±)ttûöMþêÁMno~Ûp’nްoMÛØ)§»‡ÐÈ/C÷G9éÄqìÿÖî×¾\3³iú¡‹N˜ñÕomÕlMb<ƒgôI ŒY‘SĹºúÁFÊÑ‹LDjqÀ™öùóQÉW'Àù½hAìí ff5cÜ S=Ñ"1X•ÌlpZ³=Z¶üÔtƒ:ÈáB ˆÚ$Šáÿ|Œx‚œ£CU´³%†Š q™Õ‚84¬ .yÚÚ½Žý¹ò­Qò&·š€°0,>>YÈ„ÇóÕM©N%ñ^r` ]ïC@q“²?ÃëQ€8o‹¹ -­}oq¤g¨ Ó )(˜†J…<5€!‰ü‡X7‰L$ì‹ ‰hÿé c…°¹åãgÌ,êA:^¤Çk AÌ< šÿåòèã) @Ä|©0¶¶ù¥üü™hàã½â¿qÕÕ±¨©ë¡QjÕãÐ4Erp¸Ni¥àà@1ô]Nç0*\ªýoišîÿ¼MlMk\™¹ê }ýÅtÕRGHËÜ\>ƒƒûÓ¢;_±Éã¸Wë=<Œ6^˜.äˆ ‹¥‹úQEåY\B@LJ$Îååa¬…âL7'vëEñZYWW`Ô§žÀÌV[~ó¸¥îWÂ_ò¸ÄŠXéÉf½¬éë£ooyäïnöà:^ír Šñ.˜Aº½\‚Vª\+x8í­BÏwÅ@ (%ÕÕ¯¹òËÜ«Ü"`óï56Œyßzt²Ž , f,éºnh¸.$!»?»Ý:ÿI'¾w\Bxlh= ZBØ”%™­éî ZÐF,ÎÃiNla³2(É n3r­ów¤Jü»†R¥~:Læ³½:,x‡n´3øzÆ"í{&êŒq:o€:r~ÂÜ]üý›Oܘ0G‡-,Ö‹ÌÝ?óò`Ð|°¨Þ'C‘¦©~1ŒÈ푟¸'|¡+]Èé;P@àX¬µ½ EéíañW‚B:zÓe¤µæ†ÅÚ§›i=uܶú9ˆ™T«Ïñã­1¯®žQ10olÀÿ[o¿Cb`r–FN{¥#€ækx¸Qþ/ â$N“Ѭt_*¼°«+vh=WNàYDOÏÑJl<‡T½v°óùøP[¿üñr·ÚºÅƒü˗Ϫ`*éhk¿¼z®˜CÒ¾?GÿŸ:QdÚ›wAӬѕÇ:,ì³á&qvúê æt#ª$©W7ÿ­Ó€®SJˆÿIÁrü¼Ù›æ ©tê<ŠbÎt¦©âµ3¶9ˆýN%½*zÛÚ +ãÍAsnÏ;2oŸ)`(­>³v3o¼%ùñg@s…?E@¨p}ç–Ïw͉wAdj:ÓK}RT„:R”àìn]QÑ¥µ­‘†À9¡«nÀÝ~@Hï.¼$ôâ ñìädAh}§Á ’·›ú¬5ù­G¶ëðhLåÖ…W¤’M+Ì_IÉ ½xýxQ”•…HC£i±ÀCÓJ ”+kþ=2RÕHTB^ÞëÕ)f«ä0µµ‡ùµ&[@ƒŽ{ñ·‰“–—…÷=H§JDÚ†Ësd« µšQµ¡®ÌÜ>gKÇ$¦¿3.v¯| y´ƒB—V¬Ó,ý·«;gy¢ÐÆÛå¿ ˜êç.¡,óMÄ@l­öƈ³›e…C[7ÀéÄ'îHþ«ì“h’~äv æ´uó”ÅÓÝ °¾OxxN–Pá0 êá†Kj~>´§ðöQöÜçÝÅšC,zí‹_ÒÖl¾æÈ¯¦(Ò‘Ððñ!…‡Ï5Ï’¥=6 ›»+Tnîø‰<4~¯Žû*Ë—K)+?Ó¯"e!>ëjŠqw´Yä~öÌŸ @PkªÙ©uu߯½j ÉR}A7­¥y‘ ÉG>ëa´ùò+)ˆú@deXýý|P©ÕZΡ?a Ÿ‘ÑÑdø§Q“ìK ®ÌÉÉ]¯˜þ„µÛ6;1¡¡|ö{µõý‡11¸#¥:b$<ìUã‡Kßz"tbæT$r9ÄÄì,æ8µ§yåHSÜ‚ëì"|X.ÔM™hdûßß^ðp;î‘…“· |{ÿP×ÿm@ZcþÙ^zÄ8ÛÁk¹c…wq©µ§%1ò×?ù«­|P5—;d„Jn”-EÚEÂéËÔgìàPÅìX„F-»‡NEµM¼(§¢ ¸)VòoWO®à ÝáQ3lì…?|¦oÄÞ¦EÔùäåÕ˜,i# VÇ3§#„õI"RdqB¸öz}wåhåÅÞ ‹€Òó`Ú}µÈJ-"†KY˜Mü¿~ì–ÈJò~‚LAY WSK(´ížÌÏ£ ЉaôÌê¶ûü8ÊËegW)Nb©w`Ã{`Ý‹„dšMÝ:ޱö?‡‚Pz”Ô_³,x` këg‘h Ž/ÐÛÂIU}›$zBËsNÔA,p3RÀ ><è]íׄˆKÞ‚VÕ;^ýÝ‹g8ÓŸ ö=*ÊÏnsCŠç‡kßÂýë»ûŽV ä­?}ã´¬ì{clZ‡njªÜÓ86ü±£D«dk®ÆgÚ`þ×ús 4rât\ppq–Ûˆˆ:de¯¯|uÛ¼[@pDD°sg ög#•ÍNÛý˜kÈEôW?ʧìVøú²_Ýø·Ïñ>“ ÷CŠ(7(6½‚W€ëÓ_uÓ³n\=”xýæï!!\#£b õg«Ìå£ëAÖÔšÀ‰®¶5¤áÜZhË)Ó¿ÜkX‘Bxã£ËŠ \œ4â;`ZÑ ºÕ þ<# ⌶W£ŒNL ²Zðì'Åfq­ŒÉêȯ™,>Âìƒn¨ÞùÎ €Ö †úŠGû5-°¯Óö§†Py¥qns/BYî®ÖÔIøÝs%‘xa>*ým]hbš,"dœœüûFç L1—,–·™òcr¥Ýn²ÊùMee/QÉÑ.йôdvÒ†úŒ™´QÒtîOfŠŠÜ¡O|£ÆüÕuo‚jxÊ(ù­"þ[Óå¸Ò2zú(À¯Ù¾x¦áèûäI°[ôb6ƒ*±Ñ7 $Ï©‹‚dån޾•"  ×)¿ŸiÑ ÃßRt€èÛ¢³¾ÀWÌuOFÄeõU¯ã Tþ9™™Hü:0Šc±ÀÈÕõÍ×b=ýÉMøK¯Ã(7©=Ûãë'o´Ý‰€)YçZ±ù™•ƒŽ°|šÀü­c“í\Wð;~Ê·Ä\áÐáç“¿ ¿Ô`tQÓè>ÕEéÁó»ÿÎÉ"…ýh{m‚—¼þlÇ€õÂÒêã!ˆ©àUhAKäw¼{•QT„¨¨¨@®ýϼ÷¶”LÔ)Ìßð±"¡U{¼“Ÿ%%Þᤚ1´Å¸ëÌaDùmàïde«ÏéH!ߊšÛv•¿¿_CÿÌÄ<”ÈÎã¾×-ÏzÚÌàj;W>žµKû3ËsAÄH¾S1ñW¿~”Û¿@'©õ›,NÒ_¨Üš*ÍÌêxŽB&÷”ŠwE…e |2²·ÏSg>mRaÕ–¼Â¤ ÛµWG+8µó—댙ù3øtt7¿×¤tN”¥Ã±sH]Þ`#"·©Á^Ýñ!>›Y>=¥Àüëq¡|?4o`ývõ—É¥Å\uñ`µØW¹´/#-xYÙ†>CL÷5***¾…æróÜ9’–¸¸ÇºŸ+I0d¡R·õ•ú+,q]1­3k¯8ëÝß>~Þ&XàóÕz\¹ö#™0'ÛÝ9/(W½ «†R›D>ÀâïìÐmŸßYQ†©ej))IM-=ÀU£ÍÌ2âWj aP·ÀHËM%ª–¡Îƺû¥Î’íoßú-ÛpCiœ«öðGS6'ÅÎ2(óDM°Yô…îÕfšØÕõ¦0¶jΘóó®}çº7ª¥ü>Isæ› $ßi665A÷3;»¹M}°?GIúžªýa¼¥^úÏ~RG~ÃÌñÉ©‹¸d¯Ÿ¿?+;ûá²tVÜW\¼KS ThðððöV’­ÆÖÌÓè8¸ÇR1rôôôú«dWçS¶ÊV…BäeFˆƒ¨”(鈘,Žtí^¾ÌJ·^Z’,îX²'-Ž=•€#é½»»Fþèìïß\¿‡˜¼ý¢ Mì˜ÿD¾POØ19™'Ä'ÐB϶ÉÍMòS( öjŸËXMƒhÈÕ•ï &¯¯?©©BõJ%æ(’)jì¶ÐP»‡]]Tô5–!iùw¤)´Y,GáûG ¸ð^;`Mðˆ¸»ÓuGúÇÐL†Ì4åH¿ œŸ+ôä•o}¦éÚÞ*ÌÊèï(øíÌv# —ð¯^‰¸_jqÝ=4ØÅÌm/¸alk÷{Ú…Ei ®Çíõ€ÔØ(x´5‚²µcöA§©½=Ê·Â2î#`¹lCs’·¬MÚw¥4U=kHß¿WY!p™H¨ºÈM»³Ùúˆ|õQIéëûVèôÉd1qÐÆq:Pús5ik ½€·þ xlÉÝ @ˆÍ¥É`*ƒƒ6=-íû`[î7”úO¡Ã&ða¦b¿7µ#’˜Vï®s!âK}wòÖJËe±e¨û|wdºÜ #KˆÂ÷wmºÃòÊðežœá¤OÓtšžyå]ÑÊÁ>¯ËÍχÇÇç­­†ìec£·írk1+ïOnØÓ³msT¢J\¯Çýð‹}‡—˜,‘¯€p3ìþMÏétò÷žîÕ ™€§_FF‹nHKïå3XØH EAy´~•%`þ‰ýߦ¼ÎÒÇ7öȽ†ƒædr0_[Ž9ŸmÁqZ‘HUØ` †f4pQÀœœ—9˜Ãð½³î˜®}+›’èÇï!ýŠT%åäÝ¿¾#§<‘¢ªF¿ SX¤©mn¨mù!)0ã.Á°ETF†î‹ˆøŠÁÚFY¹©O ïÓ–zÔš÷ffÔð‹þMn4™^^×$ ±r.AQÛÛƒ{zP\¾ôüßåAQ£*´Çÿ~ƒÃ™Ö¹Q°Hç0D(Àj­f)YÏÚÚ»;Œ¸ub½¤ÄñèÜ#ô­¬û+Jøî¯c¹>XD7ÈrB»“n˜— yµ/Þät¾ÃV¤}ñër™çýkéÄqÅ’žâÛDhÛfO8/ŸVŠG0äãÇååÒêŽ[zíÙ€÷­no`ò GÃýÚüóvùK‹'ú‰óÄgŸjë\VÈýõæ=("Åz{ƒÿ[¼Úzúš,)ºoŠn§¸Ll±Éí´áñX!…Q±PòGü›óÝÀ%O;ÁB•0X˜ËƒW@‡•Ï“e½úpuu”Y·Uåî|ê%°WAöäH`ª÷}Ò˜'iãão =¤h·öþ"\HÑÐ*þuË*EÂ*ƒ›wNòßDF†?v¯±ý,(xòí+R_s¤²rP”cÖ$¨ ›õ^6›º˜4¯WÖe’îÊíóUýþ` šAëoxxÿN.<\uBö‚ùQéз„„k7qêïNÂààØ¬>VJn¾Žè“•…¥–áù ”c¡50«oÙ±àòž=ñoyôüšæÅŒ·þXŽ-¤¯²:¢òt<ßbx=2Ï·´Ôk°EN® ã ‹­bk7zÞíNë0Ÿ÷gßSVÆÙÝòØßÜ©¤1s`ÁêZí ‰LN~S}±þ'W® 0xT´ÂÈekxE1f*$Ìò ™,)oN Ïunii„å\uPö~“ÈŽ'LSÓŸâÊJøÀ0KïÑÇÅø#ƒÇ$¿†¿xÊ'M¶kOì¤7Óm¾|ñŽŽŽV›½8>þ!W5%%=.())„øl")HKÄ/"##qÀy>K–Ç!ã´žsó> SÆ}G'ŽR¡TD¬¥ëwäcÀDáã· ;®gðŒ¥—@NAÛ š*ôz4ô•UU…zzƒ)(OŸ>e·š'Xë‰ÓÐH5¹â.y\jåïÏÌà]lFPé»ót7]í Úš­¢_][;>€Ò’ºÔâ% ¡µõ½¯¿ÿêfšcM S þéfµåœ|<Á|ƒƇœï®X@ŽàalüxÿÃ¥WÑÝèOPž¥†v•Ì7v#êìnõ¦™Q  IúÚ hGŒª±0žœÜMðëŠØë— ª³S+T ™ž(2«lŽ‹Ã/´ìììôõ @!ðó‹Ñ ‡q»9Ë?²G4Ÿ*I9ªËÊzÙM`p·j:îÛGHLgzyzί:òëUppðtš×Ãiii555ƒÐòrƒž_ä½`â´<<‰ëÿ2{ß =¢jÛ„*&(—NÀëz\¯ÉíRöê ðQ?ø…¥;¾¹™®Ê¿¯¯ÏP‡¡±q±›Hrrr|t´bÕT!:L_ŸTÑÜ‹¬ê·´Øê $,\ÛG¼G^_%„…4¤H”Åñ±ðß1ÞO9­Îz|‘Üô w§T¡íÉ(t)³wÎßÙÚš,¶{më|Ã=QÌ}¾Ùã–µ/>>Ñë¨ü™·çgg00ÈÈÙÖZÖ‹´cSFçE3I\ÖíííO(((jvñú"“’B22(ÙMG…s.;ÆÆ°IÐÀÿÞ¹‚wÿýûWw¾Övk¢ŸïÝ;ú…§ÃÅb9‡&À7Ð÷æt¯-/*ÕùwR°„‚’ò‰¨¨(Á;WvP$"¿d¡Ãsÿ;mû…Šý uÚ{­çPÿÔˆfoéа›$Ï›ü‹#=JàÍ>(*6ÉVþÑ¡ƒþþý£QÂô´ÚÊ ‹ÉDAÌÑñ”¤³f•™rÁBmm­Â®²ƒ:}÷ÇûËékòpR^x---˜.ƒÎ·<< kÒiü¤¡,ÌÝGËmOaºÖËí6»@'ô1œÞ@ECë ˭ר2ó«­åÖã#$$DDCƒ èø ¡Atq°Âe½¨ Ê+îNÃög-`ÆŠ9ÒùÊÄ£eäòêó«‹Lêï¬V_ õ’•ú`¼×Ô$¶µµ…ùhªbJ!S.žÈN‚âÒˆ·#èpQÇOF.(®ÂÀÑ·npyð>”¬ ÛÕU:*X[+à‰O»¿Ò!|¶5R=XÍe:úÒÙÙù##:èNµr}‘C>>¾£»k;aQQè{àllmó+°©u]#"ÄÜÝù6†ÒtÌšúûû%ã CBíŠðâOä²]¸—–F=CçôV>õìÌþ5--…€9 Oa>£¤éTš`¥ x…"ö§¾#ަ–)°à¿téO³³µm;Y‡¾%0/ï5tç(¯ã Œt*!tC°™‚¢"¨!ÍbË(ýÙÙYeíê²2Ln\YTVàè²²³‘Ò.ÏÏ»òä3;±Œ²…ë@øÏ$'fØì”Ü,f+‘ÚÚÚÚµ×Vù7ƒþW½H|Dɼô/ãŒû®äÒ>ß[þÁŠåÛûÛß?‹ÊcE¼12â/±%ž ¥Ïüùó+ƒFe ©¹9ÀáÝÝ>vvvß¡§ºdŸ-g+õÀû;:|Ö77QÒnç7#NONâÆFFôxxx,î®ÛÏ“SRÔ;üÑÔõõõýúr²²˜aÖ=шØÅ/2ù0È9 €ß´Xjö°Ï“/ahŸþU}®Ú2¡ºš3 Ä0öå”ç+HKßÐ1 >ãgˆk¤¤Bêêë½HǨ¥ Ø¸   ¿½Ý{¡Þ¡p~šžRÎ`vâLÇÁa2‰ÍÍ ‚ìþŸ?@³†…•suè_][[;l5O‚C«ô×=fÀló‹ûÙj&ðn‰Ž·/#¦Eö%Ç4ýf»)ÿßKZW³æ9½±ÅHDcá˜uË2ª,‘îÍ_÷g‰ ©DïÈÝŽW›²„¢Þ‚+2ìó{CIY×m©tÙõ”ÛõIö‘­´4*''l >ÞÉ/òéÙ(G À2E"!x^__Ǹ¬x>ܹué6“üÖNò•k)o·FÕôJ›‚ßîúúz¹Ëé ))iNa!½ô"!! Œ´˜X®RFM£!!}êô_0ÛvDZ±±„ØX<Í—‡KlÆÆÆ KCç[#>@¬ÊÔ¢tèIÅ¾Ñ eé^;V[ëKhiia¶ê¦ Ÿð°;]Ne>ü¶¢²òsss3êûìžì¼¼Àbí¦ÄíÝ]6N» 騏8ÕƒüŒ5ÜÑØÊèu;qÐÚ@>¢Ì………áv_^{º?ÔÐò…–Å,%%•““Ó HcÚ°P&2)<ÊÓ¢ŽŽœŠªªÆééé¸%ª©³Ú(ÿï󢜟<}ªZOýãÇaƒ×QŽÍ—}ië+ÞÃñ‹†!ä-¿¿ÔÌÁ·О5)ž— öë’/Íg¾Pô 2æj÷`)³˜aå´˜fŽML슎žùI5d¾ßP_/ ŠË † µ¥DC1×/ëækÿw^É]]]åßž"ĺ`./·fdfª®«¨ª2ƒÁæç2èFMJêkll„è· Eç|{, «»û@âÉ\9òjÇ}×´B“___…wÔî ™™TEµ\Çk=†ž3ÆäÊJLL즎¥{:S,">1‘¨o`€¡êþÛ³ãñª@[^Çóe#3³^%×OœÖ‹ýÝá¤}Ú-ží UUI¼NVu·—ÙÁášÊ⚣²±CV{Í/Í%‚ €ª»˜Òñ*ÔTÁ ~­Ucµ 5ê'Æ8põ l5 ê|c°t4Ím'74¾Wg¥¼I:qgàæáù5–+W±··G”rºÞ¥³ã[ÚE5ÁOÊÏ,ÒH†Ëƒ.6©>‡þIǧng[†ëôßKyv`Íç]ŠgóB¾ííYlììôVVVƇ‡C %êûý“ÿðà@»Ðy'¸q/€/\/( Ÿ…þ´ýxöÀÃEZ Ží›QQQ]MMü:CÓÓµÒ i¥—uÁ± òJJw§rFúú€¶ÛA‘…‘òÆzÜ]Éo\®ÙAÀ@DDTj™A»1¾X£*˜–ž¾B.¿\àáÊ5kœŸ¥[-´÷‡¬$ؼ³Z Ê@´ÈuZ0ßÒ)A%{²Üìlèk¸œO7Шe“UUUW\eee¹Ý.Þ6ip²ÞÚÝE`Ót$Áµøb)œ¡áºÂþäßd²qYYF®‚¨\»TL6 û÷ÏÎ[ày3äÏ[C~ú‹'ÜÁº+WYCVSS³?ò{=çÿŸÄZOE!##s~¸{KIEÅbÖî2çcýþ4r€øbÒÒ¡G€â1¨ÄÂAÌ^(·Nf¸HÚÛÛ»5UJNòö‰QlƒŽ••ð¤ïp²š¯ý6Sa¬º .W«{}²..--¬¤„ãFìOÊëÚ2555†ŒIºpó;Ÿвòˆ ŸËÉg’w®8ùùùâ22"VV%6ïÜÜÜŽœùîÎÆäâÙMò9é5"Jà¶ùvƪ>ŽÙiKI¡€þ”•Eàúi…sg ZyrX¨‰ø^ðš6ÀrÁ)¦#øŽ×‚nu5±Ù¼CCé'™p9ÃÝa–Òäʘ<œ2@ì,–––NC¨ïï/š_NÆ÷{¶Ò´°yB@€XþÌyó¼UPc#߯ÊJh‚ÿ_o•ÕÖµ SÒÝ4Jw‡4" Ò Ò%%Ý-!)!))Ý Jwww÷¿îó<Ï÷¾_¼ÿÇÃ@ïØ{®9¯Xkîµ*ÿ[PÉÿ)Ó\ªzõê•é€ïÛVx4b F##QÆêö¹Ý$Ðò;)<Y§µùB+‹vÿüÖ«Öi[q*[aêûX3“.`:» 4qv~>Û„ò­¬Œe|l̸¬¬Œ ˜æ…Ç’¾ÄëzŽ1 rÆÅ ¯çüv/£ï—Z9C71¿ÌþïííunÊ«Ug‚bdŒIœt*ÑCáÞc8•Çv`®ÖVçȦ‘öãã?ìÌ•O'B!òñWÎuÕTir…^SY"ñ _ht²&'ÇA_b¦­W⇽Q$Cccñ`œØqpp\W;_Vî ˆM¬ÖPÆò?&}Ñ•S¥:œ ¬®'+oNQãMü:‹e2‰)6ù³f :‚F`Žþ_JÙ˜Æ*«É×<k’a½ÈõàÙ0ÝÀjQ¤—dIq•lò¾#†…·yc¼æ™.X÷eÀ¨§Ðã\ša…бDl,{BÍÞÍ­/‚€µÂ¸y(*ØG(Y99¿¸¸QÍi ddqgg.™Q´òIrCy[ þ°@Ô¯‚ÔÖä…t1ínE±‚þ•ÄÄN½ZF3)#Ð@‹S¡“ qšÉ Q±nÇ6 PÊ2¾Ã*Zݾ†3é=ðÿ¦-iÇLJG—+#"‹IKŠ¥[•Ý£GÉÂâìÝ7Žs&h¥zMø@ˆ·×;¬L¡Ìg+܉$N0 ÖŸ¥'*¢j¬§‘³ÜÜÜ’ ÕéYï)­ÉÎDÏÑú„Îw…`™˜©¬ÍÛµ%:ó©HýN àR5ÞÆ£Áì%¼:hˆVHciïù˜–v€>Bgêd•qf×ùpîÃØjÿ %%%#%ÈŒç2øÖ ï{WB"¢l`´Ú|„™˜™Kš™úâ£ÇX%&!ÛCñ¼wîy}TÚea¥‰ØkA– ßMÒx0Àu"Þw+ë}1ñè¯òÓ°Þ¿A¤ _:Ä dìŒ$’9™·#8d59¹?þûµ¢„™Ôy//¤/Æà­n»÷3[o;a ›”¥¥åL“+°‡@ütNNÖ|˜Ï©rø#·ûJF‰Æn⺠03]€›D5ÿ"ÉYö2:COg¡-ëå.ÛÞß ôë;£¹¤xåèä$/œõíÛ«‡Ùññ_e]&nÈçQèÅ>½9•çøô"y°ë‡|ÄH‰¦ \ˆëåÞ$:’%ù„<‰"·«ƒÙ0^33„À’uæÊ ó J()a°ê7CA7§ýë3Å÷(E™à‡¬½è{ {Öve /K¨ª*ŒQN긺~ÿ1 y éîÂŽ†,Z×82ñþ¢Æ&&ƒz}ƒƒû%¶j›ì”ÿ¾ÂY9As8˜à(’a“㥴ÁihFMô ˜¨AZ9ȲÃô0*k°êXt,±ûÉ t«lÞÓuëð𘥠™øpQ #GÏ?ç·¨áá.¿ì(DñÅ%$^¿w©†’}ûÖßÏÏo¦N™¢,èî;K9‚ÿ'A,eö$(1œ¶Ée qŸœ¨z£kâœe7D©e\ƒÒæß4{ÝBÛÎYÈ Š nm©µ[Ž@%ôû÷ïðxx¸ø­0&Br!ÔšÀFO¹&1gçåÁ Ti+1ÆGŠYw6ê*ëhŒêìL6žOŠWád`àSVV)SÖøMûì8¦ìL ŠDP\®èÕÙUlóÔþ{{AÆý/}÷p,¼xºŸæ|—U; læk~ýÂÑ™¿»»;9=Û·Î8ü‹‹ÛMÅÊJìåc¶É(Gé°Qu]…eá¡Úffä èTtt/B0”¤bÈmiɰo!‹WuŸD Í6•Ʋ5S—WW½7§ëEB ²ñ¼ KKKØÑj“H„œf]¾ÁµµÁy]”p¬>íÙoN΃ÅÚWÐŽŽ¼G]8+mÏ·³†WnÐm¬®×8„´ú“ðÞ™ |]*Žæk"ãñ¨ëý•)¿#Át™p@~¾@oÌ1d™„·\iSNñ)pdDÓýî/SDA\R’ÃÑ %;??òoÆ¥‘¥%”üàTEµ 5µmÃá¢lÞôz_ùÊ:Näùö?Kà::ԑĦA«]Ì#?‰c¨'ˆ(œUBžö‰ôñzH‰h{ÎDâü¥öu½n™eíb7¤”La±F , íahuN^ÆjdgžBlì ÉĤ: zQŸ¤O”E5$Sç]êGpÑ\ŸÄæ]ÝD‘0»•¸èh–I?=$°qÛ†=Þ/~.îÇåØXÕ*¸Æõ¾ãõË}ç”´V÷Ö{gŦC† ^Šˆ ­®Ê!b(={b#£xŒŒ¼ú¦Íyí‚.ÅÖ<÷$žÜn»ÌÌí] )kÑ¢ãM@šøiñãÊŠa`ƒ“ÌûÚ¡âª*ànCÃÄUT ×Ö”?|@È€çæ~ñ‰;³ö jg]²@qÃûÕhkxøkÈýµ·ÃIʘç*e±TTùEE¡£¢©÷÷0ø¿l}aC;§)ÛoÂdàƒ¯¡!lÿÆë„Xíº¿8qqÚˆ(óˆ羂ñÕÔpxràö$vUp©¨x”É)sflÐ?-¾õK›÷ ú!¡úKŸ‰°g\ÛÖ€Š:—ßwmªM( Úk[ñµF™PÌÓcÓêD‘ÔrµZn}=Lk+;ŸÛ42ò€‘•áùÖ7DÉ4C‡Á_§È˜x‰QáádeGØm´D ‰‹í<®á£¤ã_KÞ÷÷3ôN–œžœGHhh áâ5™ì© ó ¿QPðÛ;AôÇ¡±”©ÎL6©ø”A¿õ‡³ƒÂwˆÆîKà{EÅWCC®«'Fôï2ŠïgËÛ7‘Íþ¦ÿéŸËJIûøñbd$>7eϾ¾»§É¯ËèKOq¾ÀWÑݳØÄIR­ŸÈÅ]–ê1äè†•Å€Ø B0žƒºîâPÅWÊÛÊÖ§Jqšo©'³1©ò‹‹Éõõ•!ÇdgŠúF9¬s­Ø «ŽwÀ¨C³ðzë¯pôÄ„ž£Š–º¹¹ÛÆfKçj×9Û狻Ɩõå?iæ0´´K¶sØYœ)é郲%îk-Jñ¾Ö#­&%iÀ,ÞÜIƒxbïíyÚÙA Â^)˜yãÀÒAÂÃiNUáqnúSOœ„ç]¾éÉO-t¥L\0|”vá; îZ}ÉÀ€Õäª'adÄoö‡£3-a´$™t2»feÅ÷õkáÓiƒ+µ3å?Ìfè!33º sÛggIAiÁh¥¥é2!iKK³ó‘¢ýú¹}äý iéb6.5¿ÆÏv~Åõ»¡Så×âÊ£ÖºÍõ‘ 2”x‰A 2öŸ±!‰~´€eïHŒäqûW-äJNÐ ~õo†ÚÃ5Ås±«®{èŸ4V“‹l>wûOMÑKå­ûKzðWWþêÞÓ©{{ðyy¸ w”Xa >Q ÷˾~=2F,†¯‡ið³2.Ìóz “0åËþtBûÇ*##v¸©)fTsñç#ú[øÑ†Ú9­u ?\é@ùÜYrøÜ M®bn\/—wŽsbcÛHO—©…œÿéì;½?ÖŒ‹?ƒÜýLõï†JĺºÅtÓƒse¶UÉÞ¦IJ™®ž¬Î#¢)øÅ«`0éÛÀÓÄÁ4}ɯ®&>=m}; £¦Æ““S52ÒèïOêì ï¨ÔÛ_áø¤Óú@:c㘮%ëˆieó‘êåKr™˜¥7V{(G=¯T«ç¹rÕ1½ž=&¦9íï.Œ[—ìÔÔ û>£¨O¨!”¾°œžg}]ܾ9ÈÎçDêèz©g-R»#®›¯>™Árqñ5pÍœ NÂÔTX\< €i“›ê›‚q6ŸfºƒTP§ï™°à !iÄMÖq8[á‹§Q^›'@šC¦®1e´ÑO–"¢GÑö,’±gßúAW—ÅõH9º¡¡‰J—f..wÎ…¦–úF}q‡ uSóä•‹]{Ýú¨³³ vß'Y&mc–9º„¨¯_ÅAبH0È?æüüÙØSáHMIÌR]~2ópK?šÂtu˜¦ Ì+–²î  û;g>++b6—bŸ„¬TÈæ~UÎb·øÍ´f<—7IIáÙ;ðTWðyÍ-ÖMÃ0——(‰Ç+Lº)*Ò-Wc ³6†F‰›šê•D°ÈÒòŽâonr×»2#‰ˆŒ‚:{“Ì’adYíé)á—Ö&‡ gââMÞ ú„Ømצðë?H!û]Ÿ‡QhhQ1¶íïw &žn·áýý±Ù½ê±yìj{C±¬ÔB&éÚñOÌŽ~(–¸}MK«ÎçÆóé“‘!‡¶½3WïÙfîh›/o±„õ¯­¤¹¼<Àtë§ë0³y?’¦Íþ ¼4ê‹&R GôËËóªoX”jtIN—µM7ñÛE¸Å(~Ô$–šïOD¨ø<Ÿ.z~ÈǬ…M’ù5íÀkÛQ)ccbQ]g#›Ÿ¯åÞú·!£ b‘¦£Ú3ùè†ú<6Ÿ}´åã#—·†š\Å‚ë0 ìÕ°õg¾v¶³'(•7 îØt(Õ×Ô”I›wž7 °ƒïs ’Ò°,*q”ætXEåí¾î›*7;ćÇuûç'ipÿt““hõί°û¢ßÈÉáÑ)Œu†ã™|/ŒÝiÕRWÆÆ>ÔÙSÚ_RnþÝ\I{g÷•C1Q²N[Šë;…ÉJ_Ü€`Â; W{£>B"âìÌS] ßþÛ’æà-該ϰâ{N4½KçÆï_{W;%læ6PÉæyITT°…šXñ#¢08&Ý„=:ÿþÅ<ߎ Ì1vË\dåbm´H-šs¦ ej|Ùªöáו}’€…ŽÂ’kˆ1ûËõ¥ªj…I…Ñß\v,ú†$‘¢\/¬§b“´”“¿Ýb'%5Ž+%x|îyÔILž^é´wj ÉÞ<éÂXg÷¬­bÿ<]¤zí°3ÂÜÝ÷,íÂpèßaر,ZÖ“^¤^ÒÛ1¦"aQ2±d[¤ðv ¯+dø=àZb.®;'+™hÒ@ra8ó_eß9y—ƒvÇ/+?‘i[HV«ikc€Q%tEÅAÈ«û÷ï§j@µkB†ž¿r®+ÍÇ1µ±…¦ä`ÓÁ¿Æ'†/°À!#7Ì]¬õXë6`£¸]Ûãâ©Û—Ó)Mᇣ„ؾ`íþ"Z54´s)pTH ­Kèí#&ÆòB8{ñr_N«õ ˆÅ¾©ÒZµ‰“ß~°Ù3M¼pe0¼Ô…µµXGGF|îl¸kkÎ?µØáYXðÅ[ÄÚûè‰EŸ~þl+Bÿ±ÈÍZzsÜF?2qóCž™Í»±U6=@³YÛ&nÑJÞöó]ÎãA27aœ¡åy¹\ÛÅèêf常á÷ ÀGììñØÙfFõ Nqq8ïÐ=ûò¤NŠFæfe)32‚ËÀxÝ#•ŸÂi—÷Cªn¯¿k«Öö\æó]–ZȘ¸”s‹pЋ‚$ãÛû¼šË"dÑkÆ£?AÔ€>åõ# È ÙØ€Äõ’‘‰ŒLjgïµÑ=-ø‘c·\¦"ÿ¾°5Ó¯¢Âùæ®wTðˆ…1/ P~ÙXr˜’(ÈÑÿøßlX$HJϺ€‘Új,Vú\PP•öÙ¯jm*³™ÐyÒ¬§±+ÂÂÅO2™b¢¶™aÓÎûC.âüƒòÕ®ÛÅÁ«¹ÒÄÛÛr{@üîŸE`2°4J‰#–ZšÞ“}h²&WYšgàà@¯úP=aeÑÞhe)ã©¢r‡u=ÜQmù €ŒéŸŸíããÀçq„a¸TNâ“üãÛ§ÙÞÃyQe²„”w<µŸ.»¾qbÝœöÉi5¹ -?Óý9G…¨›“T†þ®¿¡Pð#± ^·´íP.ZÖ¿ÇØ—bxä½”a17ÒSñÙ»ùº,qiil:‹Î^i“^Tœ]IÞ7¡lÀÔˆ0s_¾ÈW…31Q¯o`¦Rº"›¸¯Õ¶„b>,Ð5¦p|MŸ}8_¾¶;¾ ¤PÇÖŸ)ªofÚM~&f7j!/5uOe2t®á¯ý–âàÒRrÀÿÝ+-EèQÿàŽ•U„1›Ö΢N¦Nдò+’oï5–¾ü2Ï`J0¢œÁçÛkk=!…%ÖQQ,e¤!”wïɈ Jµ°ðð\ø<§¾í½Ù[h@˜©Úä€ÈdaOÒW%+¿¿ê鉈YÙÄ Ó,·xw¹xøþdCnÿüt‰ìÏ÷Ra¨ÆFX©ÚÏYzÊÊ/ƒüegÇæbwüg•£~ÙÙoCê Å1©üÊ‹ñ|zàÎW\Ä0Ý̬wwø6bgFݺ8WCŽˆäáŸÆ;}n[öÎÆ"d:¾T쫵­%äùIap”†üâÅ&Ç\´õôÔ%¥žRŸˆ^i:˜5‡C†ªª·lŸÒáAö HHàK¬GláTä[5çÇ»×?ðV\I IZZÞ°·×Šjò-*sÂèÄ EV"!·&$P±_¿bðÖÝŸ\ÇHÄW¥ðÃE¤eëÔE7¼qº»Ù !4S!  úÑÕÓC|ÑêQkʘ© EI«N½½ZH© K™WB»§NÜ´…’Ô·ßAˆ'&=ºââ”#K4×W· B~þÄfxíÚ7Qôˆ ÿÔT¥ŸZB0úh²„xfŽ\¬@Ñùæ¶4¸Ù˼X‚ NÌÖ–úçÏ«7 áZ[="…[=¯_²±AÃÿžiž%îí-j}£¬­“-ÁÛ9îÄÏÄüž ö_nº£# 'ÍÖV È>Hù9RŸLnûQÛî¯X1¹žg¦@\¨ñk/ÆqÑk+¦×G»qd¢£†?æ…"Ñu¨Uݯö·†W^žÑ?a)4bÜá©9B,ýÂÜ<¹½‹ºªKs¹†Ž·.òž8þëטîn/.JVÖ qý²xÒÒ¯mþ­$•_Ÿžæ…ome`) lüL13OÒþ÷¯M_f âK9Á5 —¨þs6ý¶² ¶gb†Ð¿Ílkó¦€Dæî RÒ0:Fs}k+*Hﯟ "‡|dJáKTÔ§¦¥—À¦òÙ G“g,gûÅ„…t©Õû#…‡/VºW¿[1H’ZÂúú´êƒmÑä9”°0m6±HF’F »ÉSçb“¨„^‹I”+Ü“'gáÝà#Kzóä>Ø;°‡ø½é+Ìy$…x¡>™e¿š0"tÜæ¥„² ÜçxI7"w±̉ѥÞñÒY ÿ/Íå– ’@é/Œ¢Êɽèïg€éZýÛçYGUžÛº.4%Åž®s˜¿Ü`ZÜÀ€ˆ‡§1…]‚b±Ém¨ØÜS ’-ÝfN+Ñ……ñ½ÿé`‚{QTå¨Iœ‘\™á•wTFÍè`,ç7y­íwòL¢\ßQë—™ÐÖåÙ¯æµ> Ê!¼ˆMLìö‘[ñ1Ì#„¢VOg>´/¥ž¹æOé{ˆûÙé+ýÎÆ¡Ô¹ÿ}SxÄ`PÍe[hôSbºVD,½²Ã• œ—·ÉKjj$ ˆÃ}ûkÝ67ºCEËÆªÚ`ÔÌìË,šišÆâ4ÛQ%SAù3é–Ì"µx=’”ñ|ë›áî!ºzÍ"~b⥬‚÷_oæ°˜a)KKîîË÷êê+, ; N‚© Žå% a€Á€IøÔƒ©¥³ß>ðV&× '$UÎe”öÝq£“-Å-d¬¬M¼šÓò3m¾è@/µÞ¹ZY“¬‘ HPRRFoÊ€ZÏ‘ÀxÇÃóD¡‡pžW>ŒÌ¥½³¿V![šq·"—sÆØ“\«¥œÕÎkÛaÁU‰Ï\37ý#*$‹Ž._•ÛEo¤çäÙôïÙ-hð± Ô# œü§ÖðUüdúªÓÅOŠ~u„ÖÙ(jOzZ)G ÔöÙMÀž`¼ØSõÚ2 -ž=cSBÊ{ƒá}\+}GJdjâк׌ûXØñ‘ß¿K.´¤! dŸ®s™›FYOôM("`ª¥³÷@4’f‡•vÒ¡ôÛK9œõ›õ±t!ã’øæIŸ™Ašš(­ú\Ñ6òªªx¡p w­G½7§©7·Û¯ÔB¨*1¬ì…­÷¯õDLCt­õ´"fñk<Û*ä°0œò-éãº7ʳ*žç[&LºîÈ Ï±80”êz‹P@2‘ŠúÌÎÒDfKÏøß›àEßàdM\ˆoúeî‹tx<°(ŒÚö´‡¬àÃc]@û߸Á×~æ4BÂÙ99ÑjËÞÐÀΚë×j9žÞ8@ÏÔÙ‚1€5ü˜‡ kŸGý?yË”Ttü¹mFLPY\ Þ÷¯ðYœJö%ÿ5yƒHÙŠmm-º¿¿¶Nõ×,©nSRh†`d†h(Õ40Ë'•ÊyòE3—Ó%*ÙœæJ"²ÿVq¦÷ý'*JJŒàà×Z5V¤r¸^Mç‘9¹¿°°âü«¾d^DJM}l`®‡ðšßØôPc-›vapc! ”p½û)Öß,_(ž´(Ëñ`0×ù\Ù•æJˆ€ÿãâ²³_AÔý»wö7â~ŸŠ<ÛîÊ”²X ¨È,ÇÎ@Å{ZC]ýRöÝ„®.ùÚš#EVD|ükãl½Ï(ˆ²+„ñB)‡¾qPÐ&"ºbp.¹(‹d›»G))jöî/{'ˆâ_‡þhÖXs)ò.5/È÷9CÂ…/0¶¨Äº;’(ä½¾~£¦†wÕ$ pÜ_&& r'‰™ç½ÚÁß>‹ ®©€a![Êdáï!½ÚU‡Eœê¶ñíÙ(D±-XL}°âÿÏäVPÓ†¸^ ¯’b# Ðod‚þ'»Ñ®m¶þ¼KzØãÀ¸óñ3\ÂñËÌ`(œ*=ïLNzƒh2Ûëð ÇŸ`áûnÏYvF%NXû…=¯°èÔ¶R«ç›ØÖ€$'ä98ü9¹Ú•¸vóRä+àƒïßá€4~É[‡ ™5É øÆ‰Ö/äìoáKc9=ª®>ÙÕk&º±‘g{6€.,yó¯ÆÞž/¼¸ø³nC²÷]µ.IZ$mNV9S¾™Ì×ZÃ*5ŠÜ †0 ÞŠÐ¥~ä õUš¸abbÆ|ZÌ[ÝàÂ^,6ùø‹…xnUÕ“‚¼-þuwI¶_˜~Ëīϫ””Vèéó‘@LIgf-(©tòÖ„ú”Ïõ=SÄè#>Á4“³¶~¶!¸ðWW!ÙÅÅ_Úžª ¾ºÆ¥éÏþІJBú#÷p?éöö­0›Û"HñwЭoœtlÇ¥²bÔN¶6Ýêʘ¿¤¡ýÝZáîk+&FúV¾$»´X†™¹½lMVþb De±xW2¢´?AŸdYÄì+öÂðýo°MM'ÔEöJã—éj‡Ùÿò¿T ¨ˆª‘–.V y}òt-*JCOоìË=™Xãïï˜.Lâw¾Mݾ …Ž.}ótÏžw¹ËÈöÍ&/×QÇŠBdH0 Íîrš•d*‹p±É×Cþ°Õ›wõ˜"ÄóÚgõÍEwÝgOÛÃ2c J#…Ke0)ª÷dõ­Zö»wOíéüÔŸkh'³«Ó’YKØì–š½´ÃP’V›ŽïTÉÆ,ËZÏŒîí囸€¤ãè+Éhö4bxUÅÎÎÏÀZnyš:Ö\™¤‰·$yo\9ã~ò€O½5‘‹ **EŸwi<éC?éBËe@¬fÛ zIÕ;šr-)VGŒåwëIÀ©j°•ŸáffvTÈ2G€3%hš:»gIªì/8nð Y—„$2ö!M\©©éêžæ#³6õˆ•[-VR#®®î“»©z!©¢»òp‹prœžŽkö‡£7žÖlƒÊ@\ñ{õG¤¹­®"ô½É ®öÙY2psöN:p(”j!=²—dÏ\1–²o_‹©¨ˆ`cŸµV|ÿþ,Ão&3.Ù²‹Àþòp^Ð}¼Ÿh¤qn1gf‰ Çh˜9j_¶¢Ê͹¨==9h5œÁ\gÁ V½J² (ן4ÎÄLçÇL°ðØVGD¼°àr º‡p½â‚„ “%žà+ðn>`˜€ 4²š«^t|pW(–ÀA‚ ž¬û¼ YFÔÝgøÍßsÇ'Tæ¹e/® þ¤±R3—"mý*<Óbªy¡çÏ¡d®yÑí‘Ý÷‰\¤ØÛ·þ{'’Ï·Ë OHÊôõ`aañŠ»,ÝÀ·ZOév_îËñÙ²ØØ^¢ï–˜PL&(j]Ož›“òÑmWX“’2¥f-Gu@³²BfŽw_öæýÒ<û€D½Ç9°O÷Wªýý²Æp `p‡RŒ>Vüñ"a‘ÜÝ•Já0¥bÍïp¾@• p®ýÖ;>tRD©ŵÎ>Bhh¤Ø¸¸À>Ž‹#f%—Pñͱ²E‘±ñç<ܸ È " WvïFó™è¥,“‹QN\ܯºéðhQO IpÞPò1šº¨ˆÕC2ȶÚk·çÓÿ}ºŠ+/1ÈrJćäó5þdiô&djUšF iü$”p‘]ΕƛV| ™3†â´EØ5:šÂ¤±R¹EKðG®9%…tb’⥉‰ëåš±¨'ú…¸¡ÕÔÔü€xø%°âÞwÎ~‰‰è66Ά…âñËp£ñÕû@­±›ˆ‡×9lÇýJ‰®) ÃH×cti==j|&¶ ÑH`¸h‘ØÍÿ²sñTÙŸ®©½zOV6©sÛÊQjÌ]X8êfEôÐO»•"è'àv$ébAµkÂ\£¢‚½³¤?˜C©Žã•”¡ç?^еº{‹ÆÀVã„¿ÍÕVÂ`²ÉÊÞg¤ÙÙ&©§Qç|×ÃFxÍi$­6ìÉÕêˆÈHcwO™uˆ'/²|9éæÕû±*.õ¦²’?H[]]–LaFè.¿c7€[D@Âô{Ä@ýþ–(ãœàý-ÂhR¹­Y¨¸¸^ðÚ=…BÃ6*ƒ4ɰLO¾ûoÆw€u@ MWR ö<Ü~‚,{68ý¥š½ëBY]%|åO¯ô$V÷É@d"ëÆ±¡ÁÔÞ© #F&6é(0EÆh”êWù‡b±j=XäUp«hhïÔÔ'-¡;:ª,ðëTÖÚì~Õžcø DêçÛo;óóGÑè$ÝÚ>ÂÕò¶©²Î“Ž&€)ïÒoÈŠZsgšÔ—ŽZÔÉœW±¶(„€K1¤K{ògë%‰Ÿ_È–žýéš‘iÍà¨(³¡z•°èp-á033}{“ë’ù´~+åÀtBvµ‹‹Ó®¨êUò+¶*çñfèéíj=¹ˆìÎò3:ÒÅ!—a\pt|Ëî¸ø3$i ª¸k7”£Ãæ[¦h²¦€ôt•H’?në^ ƒ°½ɱ›Óçö1XÑg¡Í€aîa6+Õ+‡ªIÝ ™V¢¥õõØ,Bq‘ú•ÆLÁhûò.d™¹ëìÇËhžWC9¸­Èh ~‚õ ?X'©*ÛS“I·_æ1/#„RZù Ü.Àº_Ãcc;£’LA´÷Èù°B…åp¬O ‹YýLyÇÃÄÜ>÷ACC 6‰Îä](zj*ü»ôz„Ç;—žòŒýrh§Rccánvˆà†fùÑ i?³ssozêºVíO®—;øì_âB&€cpdò‘ôð@ãâ®kŸ¿÷Æ"dM©‡eÏÓã3% Á¿ÍH0ÙIAb~G³ažÞ½É¤¬Ç¹­„ÒÿL\½<ËG«yÍÆ£qxRšù‡“äñq}¤¥ 5=]:¾ÖÚĪ‡ÓœØp±I-¤Ó ƒü£ñª8oJ jgŠTcç+ ¦DDØëíW)÷öd/3^üa–PSÃç›rº|´Ò[ôÛ™sŽQ£¦­ûîíÚÑ¢ÚÈ.W$E9Pq‘äÂj4 Op§èm!J:Š$‹øŽúîšþPRrÐÆz»ß3p~HÌ¥Ð3Õ¿‘óó—[¥N´ÍTïr€b Âþ¢b1Yó;:’·oE×6~¥pH¥íÙ‡òæäTÙßœØtÓn ÇgæJ—Ý Ð[4iïΤosÕ³ N6ë$¬ÉlÌc»‹ ‹]+ë8h·SD}ig‹ju‹WëyR÷ô$ʾØ® £ÛÊ­Œ»}Ó˜™ßOSŸÃ® x§2 Ï7†pþ²k›?‘vp ½¸¨]HT'dÚ³g8¿q „ÌåûÁ622Ý™«1J¦£Ý\ï L„šPG¨-#ù)©¯sÇXƒ +>½É«¨ íèø}rݹÞ´3]ÎH§4@IÄ*Š_c:œÕücóÓ»´ü ÁCoL{nn4>':Rô@Í—•á¬îX :8,¡Ò³²”}ùuN”÷£¥ýéÑ ¸K|¥#­Ýýç`ÓAi“]”b J‘µÍÁ×é¢~ÀÔü13™b2,MÊüLpçªý÷Âzr™˜¿!Ý”ŽrËʰ~ÿ~±„Å×äi±8\Ü÷N:VQ‘j,·w³ò@IBC-ö{ÇÒ" sºÄKñ—<<<<÷XdÖ!Ïž¦qM¦~æ¾ÒW…®î¢ñ¯IŠtÑg(ðñ„\²Ð¿ÌˆŒþ¦c} hþb½ôåéÉZ~ûoÆ PŒ aïÞÁg›+UI¥$ÐÀÄý e°L¸±•ôpÐ0lNùÐ_=UÈÈßx¡€˜©Ûð pš‘Š›š’• ¼z…™»Ãý—”yzº(¥QFA+?të8¬ÒrÜT·Is:L«îLCãCïL¥o×ÀÛ4¦h,˜/çB,,¶½^o+kk‡´x’ zå˜-¬Ç&&úÂâ-;'ø³H2AÔ Á„·ÄozWí1É—Ô^\.û*}/š¥Oþ`xçì­¢0!wÒXJÊýVðhãÃXx‰Q;;6’’W&K0æ3ß) œ?ЀôØ…´‹t|¬bó¾³R'Áã»øQ²W,Àt`¹ŠÐ¥¾CÖ ·†ºbüc†¯ÉÌzûšu¼ûÀ[Œ`ŠZqÌþ &¤7ÿ‚4ð57s„FŒÏ¥VÈ%–Ž"^Èžëö(ýÖ.ߥæÑrœÛ"ÅI‚ü þý±kÊU”“¿ÿT<ýËœ pÉ D……6Z:û+ÉùbR?&Ô5y ﯠt›o¶£ÛíÚö1‘а½žù¿~UË6»¦Ͱòƒ¯Õ– å©-¹(KwŽdnÁç±±cv6½š­•þ¿¯è½Ø¾-ä.­™pä#JÒÝ)grB¥¤l©Iïõ2„÷ÔýFrCH·þøZô–PJsƒöX[öÝ~2ëCßз‘òæîž ÝdP`è¨_¾ÌÔñæu··*Ѩ³³{,Çž<;1¦ú•IkyMeåˆ4Þ,H¯YhPd$ Ý»Èz`o$‘4K¶0Í¡ä OŒ–[Ó í#±NîˆVyù­í­Þ¼X„)Pœœ.6K6õ£â®»Âöv8›™•¨V秊þ¸[BžwÕæxxêí#'u1t{©£»\yy_ÒÓq³¨¨çäõõ‰3›—µÛ‹ÕM^•ÛãÁ±³Ï¦\B­­×!-ƒXþk:ëc ÄOg ’ ÷ËÖü±…˜zÞO4C"B#!ëiILìÔ‰©TýkJï2ŠåÍ’}$_™ ñ‚·®¶ˆï$uŸ¨8].&2VV΀šëVÓä})"’|?‡ <+P߸¸ßs9ßÓð~WÝ쉘†»ŸRhô_é,=CÓ°$$d„DE€†eöAEÕÀp­[øf“€POðž="yqaaÐÏŸ¸;JYí›ÛmÙ''îp@ýÛ,X ©Žwx…ŸÍol|5Þ8—U`îÌWÐЪîÿ9é×õî`‘ÆÜ%{ihóà ŒË—ßkî<ØÙÛÛň ¡EOø9r„[>«Ã* Ë@šÎÎ>€[jÚdäå‹b‰Ü¡OËá{±1W$oñÔß©iĦµ{Þ°áüø1 ˆÍd¦Âg¡¶ Ž![&&iX“–VÂÙÿµxÌ*ÌÝÝÀÄÜ0ñ§ëAJÀ‹Bt)CSódÈÑ6„lßI ó€N’žÖe­‚P•2qÿm¯€ž õx®¡ÊDÛéíµŠM¦‰+Oü9?ôygI¿Yö"í@b{>RÝ–;ØYišNÀ‘†ÖžPÅžAü4¶|`° Û‚ÿN¸f³7t³™a#šš×T6¬89nã…ôäìì¾2:ÖïØÛF'k Ê øž›‹(Ú6)Þôê¶#àÝÌ,ÙÓÎ6-ÍÎL…‡F)q__!¢¾å¿:ú€¡l‚[ïµ4\h([€«µÉGéïߣþáåóY¬Î'[%Xxg33vq Õÿ¬béÛ„ƒ”W!è05»£hni#H°Tû=ðºcè›B˜ ÒðæG÷™Ø½¦èÍG´Ý]©ïã–ïUUW4Ö¢ˆ¹ ïâ¦ãËãþ{‹m|fÝ/NÌÆ2(ñ¸¼ŒB{7Œ®©Ò'Dt× |3ßâ.J÷¼ïßIUózJ4¹Á‡¹ßØËG¬ïíÁ§ “D?Þ?¤ëšÿÔá…ŽŽî_V¹¼ØE©oüLÅ}ùÂçÁ;‰•V #xm 9%å@Ì[ÖY€,Î;‡Qϱê[Ã-‹§†Œ0óóõrÌÆ)³ñ¿Œý`³kûeg#C¦‹LÃkeé*>¬¯ãDeù^½Ñ˜Zžƒ( ÈkêÜpä & ˆ—}F“nDõ£*£Ä7^úââäùïfCB0êÄäŠ&W›##Á[±BR‡^< |Öm!Žá4?KO³Iá¬&Œ¨ `Õ§æ¨zv½£Œ?6¦ÿåÏ–˜‚dv˜]™Z®¹¼ÝÌ '!ª½]òæ¶²j¾¼«Wš€ÓlÇw´*¶»Û«Ùý”8Îò”ÍX„—²ÞÔ“¥UoësÛ©åWŒ%Á5—m LL ¿ƒáÈÆ ö×—}Í: ;‘}]ȘðI k¨ñ´[T.€—nÈ–¼a?|x¬4¡F'G•ÄõE§k q½Â!×^ýofTûÖÍv³_¢7ºuŸÆÜn0²d±³ ¸]!vÔ\\/Þ¾®ø×b4VQŸƒõßô°öLaÞØôÁÉì]uuáææˆ€päDa@Ôap×……LBŸ/P_¼Ø¤°Áæb'¢™ † Mò÷Ç®ôºÕþh~LÇY4ÇÀ\Šèê’ýƒÊ|X aY‡«Ln˜Ð È’ß·‰qs«ªÈ$ÛÅ»cRd…ôJÓyjÜÈ YƒÍ•F£R_4øþ?wòÞôÀYïûb$GôDü©´M+!PÇô’Œ 9CVÁÛo¾Îû6¡)ºðæxðX„‘uœÃ\ìõŠíA(1ïµµP¾jämkçýÀ똜ÄééQw?]s)Q·ô}4Å /ˆÃ•¼¶µ²"þž{ÎheM¢óàëà@ ™Ò  ìœ.BB@.¦¨ˆ Y­-ŠÊ&E/:»í›‡<@.<'n¤Öœ˜ A@±úp‹`øk²Â”ÄBö8ªLa]tøO7ùÇ<ÿãV±^#Dh ‚C0²²=݈žA¦£É[`yëîC£ߺ¸‹Ó²³S\]…°J‡G§p¥êó%áÖ\nh Yßß™Òènö KñæûøQ¶ÉAæ½Á0d~<'÷—ó€[ƒÔù~ø·oLLÁbÊ•`¼‘ƒ@!ÒPžv;Î÷W,0zpW€Ì‘_ìdSèª100„Tž¯Øó ™Ö€!šb'YúRNЈ€4ÕÜ||Ãí?½nîÌ!E¯¾iS†¢B·¢ b$á5ÚÒ„ 4@÷ÝeÂHS”òAÂïΛÓç—œç´Z?“Ô-¿v¯¬V¾cØ®8öõáscY Ø8ˆ£VLPéìGôa|UÔÙà„eï„›ð2“à&êé±I™lN“ñuñ—¸QW¶o6ýý²â**0bªØJÀæçý̶ִÙ9;KJLüXˆ~ûO×öD›n[f 4l£Ñ’PB¹•rI‘e{}ЬT\œváÏŸ ø_ ?æÁPS«2ä:™ñ0X@¤W Ò³ý33##¤‰=6~/°Ò$Äx¥Bb¸xM¹E…O‘¡¡ï†2%õÈêôø'YÅ'²ÅÆïOð”ÿ÷z­Vˆê¦Ï6Í~ŠHëë#ËɵåªÒ;ˆH_Ùê·þì¼=Çì.ã⛯8ÙŽgÂfCè[ü""‚1ö«ÚI~) ’‡!›VÞ ±H²{^ ;½Ö»'@56®5äíù:Cô Ò+ú”âà¶]¦°EÇ›žE1 ´”|k˜"踕z°\ xºÜ xÁûëq‡cý×ÈÈF, !r¤°½Áñ¾‹=Vò8ËÃôñq@D}'æóTã•HØÝý…ßIÚpûï·ô£ÄñÕ8 ¦„ÂwJgxIÌ$ .|pO÷ꤢ>× GãôZ`êÝ ³ëY+ ÕNæ˜è­AµBN Öóøôd¸G³³õ§O«þ„ †¦û´ #ÉÞ%CÖE+ÊÃͲ§ÂÈ»ÒfÖâ]O³‚Ý1É7(1mñƒD­ŸÚN§¹rnHHººL¦hYÔÖ*êê¯^…ñ´9(¾I›÷†ƒëΠ p^‘g–55Qîõ_þµäBA $Z”‡JP\rd”ºÜ=¤ù#Ff!¼ñX›y³¦XH¿ÙÏÿ¢‡»¿ ZÙ½­¨ÄjÐ}£ |s‰&Žì%Ù©¶ MÉဠ!]ssÒ¨"˜ ôÖ9|Æë<I¿ëinRAׂž4ÈGïì vïŽGd©Û7 tHŇúܪ_ò˜Ä~7¤FV»ê*œÌß§a«r¥ò‘¶÷˾ðñ)ñ  íq=@ìþƉ4$;»˜®.)>£tÞønŠ6J_Ì0Aª ~šD×!Ãëb((ݦÚ衦—.ÿ[7òîø À‡þ ã…J,¹2ŽŽÐeºÚQ>7mÜG@6YXÚBGLÞᤧ¤vvòˆ«×dQî­Ÿ³y^±ƒÊ2𝵤x„4¦éÔ©¬l¹RíÞ5=¥ˆúâ;ðâ æ“¼íùË3à¤ó ü …‡¶ò¥qq¯¿~ýüž¬¬ÿô4¬·Ñ%“BAÃ혦íÇìÍ™ÆI ÈRÊ?–j¶iܨ®÷ö> ,mÛË Ã +ŸÖ»²l¿0…4–.@]ÁHÓ)ØkçÄÄ)Ðèèø]ïqΙndd[ÁïùªÍ‚V=*jí:€?È´:¿›ù_>“{ZID$ÔÒ×Ç£§„À⸄G÷v­cñØœ<ê댣"±q@š¦•ÍT´ ÕóýIƒïu޽-?¹q Ìz% ?>þLYEåÅ÷]©˜?[ÕZ*•fQ´UYlß6QÌͱñU Õ¿°²¾f=#Ó+.lSìr\5Ú¨¤¨.ã~‡‹ Léêv]j<ÜŸ‰"L’´óŽsÒ Å ÀÁHõ\§tv³û¶’€ûŽÇ–ñz¸ÂˆÏJL¼¶ÎŠÝ`dvV×Â<¶ÅK;¨»[蓼í?”¤Õ"YY3:âx|þüvf•÷óÕíÐkÍ?¸7ß d ¸Ddh‰äo}~:Zð@6XNü˜-.1|Þ¨EE®¾ ©vÞ°óò6©0û#%+ïæßtíM#Óc¼>šË‡@O œUb¢‹V…!.]-ÖL„Ö.YšÎ<¬íÓgŽíh‹rsH$ ÖŸ‚SSaðkv=½¼¼VÖ×»ÖûC¯Þk¿ ÛØÈd~}ÐÝ3»³ð ÉÒ²7í™Ç[ömÕKºÞ¬ò–áƒÃCÇùC/B®‰ Ùï`&'3Þ«O"¡¡Ù)qÕT¿ý1¸°‚\X(²3û ]"ø«*Y´Øúæé+›ââ½ÕM<ˆò^Ÿ,±‚<;Yìð^óêf—žÂÝCÊ¿Ãð¸?:?ÿ+ÝÖfd‰à‹Uëtò½Y¾ú÷†e :¢ÉÖ}Óæÿ¤Å¬®9–´áAX[ã²™åÀ“Oæ¡U%mçì‘·Seš+õé·„žu|Jì׉ òL¿³3bHü€³û$_ ƶÑõ± ­þø5k9ð!>P¨{˜´ }ƒÑ‹‹ï0D¦KÓ¸Äÿi[þ<Éï]à…Vî.]v擟ջÉÞXOº¡¤úTìÎÏÝÐÐløuYî!ÎþêÃBGÆ•R8‘7¡Æ(?SË 1Þ÷fªdØ›†ë½Q†•Kµ"@œ°ê÷çþ!µçS0ø™§†$ÕS|…ñS µ}©Åsùy™Æ’Þ’Ÿ2è?-?! \¿æãã[Yí acg_upî®+.'q¨äp3{ó6ÚÒ’®»GTägEj ™]æ‚HyŒ¾<*77va)žÌõÚÎÄîú9 œ‚œœ¹¬<çKê®<\¿žýuU-n;6açüLaÏ0‡u.C;»ÐDÆáº”"ñ‚qJúi¤dÖòµùN8¨þ!/$§sŒ’èF—iñN×V ½VÒ€káöÕïRûÆY"zvYÔŠYè2È O9‡¾q®åNÒæ0ðÖ¡*+k/$ÍW:ba pöKíÔQ|«ÜÃR}Ü?Ç]½{‡ qznÇéè£âÛ;î¸þŽõRrÆéH˜ DR«ê%¥ÆaR1 :–}B>§ŸéHI1ÃÀâ8ìMx3SSØÊÈÄÔ·3êëÀXÔÓ …Ž ÕàHÊc[…ªLÛ=ÝäÂøâ|»Éh¹u–ìµöþáa”ö/³šúX] º ³³˜¦[\[i†‰ZM÷À/ƒÃÃ}¹21";âР¦€4E‰e7$¾:r±9¿æçヂâ/¢mE.¡pôÂ^ö'ÍêFûŒ"XÞ8±2}Šðæ(ð7CpuìǦWF¶ñÇ Adä¥Oª ±ßMf«Fgª§Ú±Güü8|¬€ýcs>;ÿÛ7gˆ'daÁ'ä4càŸ…{¯¢y‡vÓiÞŠ„8åýûØ€è¿bŸh3ËŽÚcXo¯K ö  .C¶½£3Èl¦~ôm³çÕB{G@6s’rÿ <%+ ÑÙ²âÙ¹ÑÀWoÈ¢@Š $}"( ÁíW;%ÊH|ø€ 3çÁGãÆîFÏ+¾x×{tÈ„mºè3¦ÛÑ“£ú.Åxz5õ.Þšµ×ÚÍi¶2æ©‹yvE©õtt®ÿKDqD0à]Zb+ˆðŽ­€MݘäîìXE46®ºÅŸßøý!6Ö=mˆcòÎòÑóHö/’ ú’Ò ô—B´ÔÔÇ•ÝR“>tj¤&ÞÏ—ñ]7§©Væf—ÂJ õ«áê%L”´´êçªyl8ml1V|ŸÏ!íʃÖõu@H Áçù§ôô¬­ÌÚ§¤w.6©=ZñzÕ;FfÔó¡YOEÒ#5¹æÎ(2‹ƒl†<Ý8¹*ÄÎΞ’Z¼>SùøÒàÍAæØÔ»œIæožžžR¸÷ _3ŠÚàÐK²¶ieû>ºÙ$àÈ {Ù y?,ž±çá6—Íþåìž4&Ü›êŒsš½=BŠG¡ˆià‡®®d0ñ“þ&§ôÆL¯Ð}Úq†Ì½£S$Ôf€`à{ÙU¦7-êÁþÇŒš’’",ìV(F.¸Èj޹¹©h+”œÜ¼Ãó“ôÁ ;lqq‹=¦‡g™KŸ†RÚNÖc’O6äVêº>V)ëêúñ;Ewõl¢¾•/¹}î:IimU‰Ø°Ûþ›ÁæûÄ€L­ -]|³Ïêy°üLÁb-Žžk®¤}q8_:¨ÇI—d†–α„å·iÆì>ßÙõ¿jºMI²@ÅRN³ [ß’›“ƒ_¢©£B†üŽRR‹‰bòyîÇÏÙgmÐuÞú+ì—ÆKq.ÄbbÂ-+/ïxì9J¥š¹LŸð»CÔ}åb·‚§¦ò<Ä3áð:6-PÄEÂèèÞ™:;ž£ååо˜çv ,‹ÂnnðÓZ–{Œ¹ÄÅÉ»º?"°èº3¨ØJŸe4ØSS¢𓩨j=²ŠcóíäÁÖÊJ~µq£t~œ§Y¿ûwt(üü¦)\–ä¢Ol~J¡è&&êC)Ù1zM"ºBR˜’ó@gbrÌBŒJO—ó&˜L÷”ؤ鑎մ×fNíÆ•+^ð””Í `´Ø]ÞC) 001s»öuq‰²w€ö}®ÇG¡ úý±c˜U‘¦¤õ¦ÈÓè]Ê ä™ÚH¢.JÊÓݺ,pIÜÜh7·æ3sä’f[ò"RžÔÒ…ÐÅU:Õý‘k’óI̪FFì¸Ytêz^ Ma€é±ýìcÊ¡íþ؈^[‹`ÿìCL‘C]XeÔE³±ÝÖùC>N-DS¼ä©#P¬Á•‹Õ@ãìòªNXX˜²º++†Nݧ ¦¦{Íåà—¤’÷8mŒü"AòŠŠè9¹¹EèëiBžaÙMß›Óýöö¤'¦8thNº»¡ôPàNy‡4PÊ;ü$&þ¨ÛóÉ삾¦8T½&[)N¶xßgF¡& º„X„ø¸44Pl¡И°iQŒ˜´4@‘…DFò5ºì~ùR›œ¼¢íÕüÑÂÑÔÔ4sÑGK‹0<<|îáòéI©ãcíæm,:Bhä¸t_ã³ ¿Šêz˜_/¡ ¶¶Z0I½×´àt²D¼ Í®.ÈPCÐÿ”B3i­ùÂM%(ZñŸÝ.O§ÔôQÐ}ß~‘Æ HI™TwK箳£¸ÿs®¶=Ä=ûkÒðc^ûò—0žû¤é8?XOÃ+R~G’_æ$mÚ"’^Œoø^ns=HĻН }³—òýÕØ¯ ÃÆÆÆx¼m%$`uõô.÷ÔÕÔÕÖºÃøÜO^ââ¦ê<>>²ÛÎqéß+Þ:½'£8Åç<:mpX—ÖmtÛc›ûFhÁe9²›ñ&÷·¿ô>ª€|io/EDdXˆÖUÕÔ {ª•?2^²bèvqx/H§ˆÚû7ãèí¬¥ýZ7Ÿ€€cªßð´p0‘»ËÉíeûzÑó½’üÃußó4TV9å“oœ,44}¥ë!»âyBøä‡QçõLËýkŌϡ"ÞsrìDE,ÊCNÄ{Õ NåúÞí—ûÃÖÉ‚ÓÊ÷›Ü°Y½ïœÓÝÐŒŒØ¸¹{ü_ °uÂAvS„²ß›xE*ÔÿçÔØzÙyÜóû{µÅ«W¸ÈìÎ;ï!{‡î3ª¥%$$ •7¿zýpCzzz±îUO„ÛÍVšAûöù[]‡ÜììàÞ¨Kðù¡fˆ;0óóƒ+*Ø®í`¹¬òÚ•‚uÄ7~ûÁ"¬0%V¥rY‚ÀU 8£h”Gw/4<æ©” ÝN8(jþÄ´Lèuè }!îèH.6qVÌMÙæ¸VMˆçwÞ'晪ûTë¢Q ö²(:#ccIIɯõdA}ë«7§ë‹Ü‘QQ«««~Ï>·èHH~?~Ђ¿Â"$dxznnr÷ð蘘À533;¹º’öñùYZ íÕŒ¶6ûË<‘JYY9…Û_Xq”Ÿ:u耄`¡š½ïñG¦¦4vJ«~&Nv¬ŸÚ_hk}xâ5Ñ;õ —[Ö´ÊXA¢ÄãdíKç„ ‡Ð´>Qô-4L;š€uj­7J å¼³7ª,…³€B:æÈ?Sxþ»I„¯àbQƒbÆÏ ÇML›¥‡ä¡¾}šÀ¯›H££§îû ŽqÃ/vÒó£‡- 㬅=ËŒœ¶ÉªI„ ›‚?‰î·xŒŸ+ëëù’bcÛ?_îõ„óâAA¶ífâáI™ã²7Ƭ߬õ°Pï°®P Í488xírk8k¸ÑíøïÚúº¶——ÐþR‹ NµEœ{ËÚk«Ýñ&^^ÍfÈ6Êuuæ‘ëÇ€TÂd­îÛìÓã½¶††Æ7¯øÂO÷q.·á­*÷jOWr¡BEW(_‚‚ƒªÑs>‹KHX;¿+ú–ýÓTž\ëë˪š’éLK2dd¸ƒóáíJÑ'>Ö µ³¢Æûlª,”þ¨‹aË×–¢;ãzÑ?òÍ8œÎ-ÊÛÈ'‹Ó÷|fæff*î¯#(–›Üʇ¢Ý®ôN×Ix?Uà3Íò¼=£5‰dÏ~¯e,lm½Ï±‰oP^?ô˜WQk»P7 Þíy}ÄÞKèäìüñx¹MóæŸqVß|õ”ÎáÎpvÿöPõvžžò,Pà04'^^íß—ÙùráÏ?^¨°f1NXÊ|”Jí‹“Kpe§/`Vy%O®î&ª¶á-P÷į`šáêìù“TÐ÷‰‹{òäoÖ¤e‹œœœÅhNÐÃ`ó “‰‰ õS“Ëþ”ûå^âMePÐ ¨/ì³Íñ ƒ_u¼Zö˜<ŸÜ€¼0M ‹‰!x~¼95IIK‹  h iásr:ÇÞ¤£¡ùª¥4fÚÕÙÉf5Á`³ÜJÖäzè_TôêKÌuÉüü<ãƒk}SS;|/a™^“†éTñ™……Å×4åW{ à¿„¦D¬ss®«Yhiird¯y-A^+¡=b}KááÎüÕá™Aø(¶zð« >>Z…é ¬¤ä‚”l?^Ù:©‡»o¢ƒn“+sdddll,”˜À}~³­Ét&b`½÷=ÿ´ò†N&È,…[Š®ŽK-É¿¬?l_F“òcgffÊÊÊB6÷ôòò`ZßÝ ¥%ä~•@¯\Rb¸‰N!Bªšÿ®üÅÉÆo0‰Z¬ÔÔ¹¦D&=…››› ml"ûb("žƒBBLÚ¿@#·‘á1€’y˘©„õϪrÏрˤѯýþŠœœÜb®ú*ÚêÁAdu5×é9ÀYB>ûïLÆr©ó”Ö“¿?lƆ>QÞ>)/9Öjo¨x<9»ÃB! ïYl’ÓíSFªfÕhe}ºÛ/¯÷yl¼yM+w-#elœƒnÿÅÿº}4„m®ÉÖÙ¤ "’4~›áÌ’–‚F¬íí_–ãùìÔÔÔfÖÖƒ) 7PL/_~á¶[J'""bWRRJJN¦÷)«_‹qrrúVP@ÏÉÎnDGG9û£93!g|rÒè·D–û»Kkøï ¾-ž×ᇠJ¦ÚŒƒªÍc·4”v&Áÿ „¹íÄE¬nÆ%RæÐ‡«žOKÍ¿õ[>÷HÇÿG'eði5hó¡…ßOtÉL-ÓœtíO­nQWW´ÝWÎg?ÜÈÖ{µþ¤œ Tõ©.rò¡­xvhC½ ™ ‹Ññ’é`5‹vÉ äeh%s­ZÚŒT‡ëýõol†R Š镊›(^ïAR¿+=˜.ç½Øî.ÿÐÍkP´¥ƒÅG!¶îî| áôÅ|«©©¹©Ì¹¸|=èÊÖk«á±«œt­®]Àn•Õƒ‡_EÄiVJ•“„„Ÿœ\ߌm ²®FéHXy<Î6°ôš\+Íþ¤Bþód9ynaA—Çt²ú;…ÜŸ?B_UÖ"ä=9®0ÛÛÅŽ—Z ç3D²÷.5{tš†Àq…ˆˆÈÐÂBú·ÔÔªWªù¡ƒ…ÅèPLñæØÀ—8xoš231}<ß6WHå2‚œððps >¤('ÆSÃ?M™uj?ÎÎÎn&©~0-ÿA³Q:®7ŸÈqD‘uöõúºÁi²ÛzJRþ¯ÊJ#ß§[z“ŸWúßj,Aìõè'B0øöË“eKÔUäPeí'$îµê‡/ƒÂ´™­úQ¿psãîк6¯üÐÂxì®Jny1&ýSçw£ë£ºÕæï„½£G–ïLó„uÚEãŠÐÂ>éCCùUõõ_?$«/bÌkÿ2cG@@€ IxTÂö|¥,}eW!ÓYôÞBÕ<>SƒDSAÂÜ+ít*%OŠÿE]á÷‡uË3¢íØ88³“%šß€`8??OàþúJUËÌŒn¾Ñ…Ñzäû›°CÖO›‰C££qŠ*ÕüŠ&äÀÀÀè%4É•Ž2þôéÓÁåþ4äDˆÇÇëe¼ÿ+f?™Ÿê C>Q^Nβ=óÂæë׿x“*[® †Æétšxª÷‚þ,u#¦Çú›åD2»Æ_µ÷9Õ1Ô!苆RÿÂø­¹ÆkæЬJGaI(áš—z´¤`lf¦ª­2Öô¯ýüÉÄcÜhfhØ9ÂaXôyhl|¼gX)…-{êÛž• ‚É‚Yb"Öÿ©ã†Vªwqu¹|ÆÁ¡öñæÀukˆ(윆–6l¿hnOUøÕ«çÇ~W ‡ Wšt…`ü”K ûé}9*ƒv*!ï<7gZûlʲ ÿð-ÑuÌØ&þsx dK}Hæ…IR%%&ª9â%j§¹j-ºÎ±÷ÎüÍê4&tc©ý»÷5ÿ .Sp˳ûÓD*Œªúj€w“œ !ã_ÿçm†+òÎÝe·¯èÈX‰~=² ?޲ÈÙÔ+qY‡³)‘šêê·Å™ii:[n§ÛNŽŽ ¥“nøãdÕŒg•ö@Vä/¬íãiÎVEz7–ª—hØlôÇ­±>Òøéûüð\ÐõÀ°½¯òmëÓuþêk®3cÅÔ¸On´b€õ?|ø°öYôq|l » 𼉕•7wM÷çxgµ‹oÅ—qkô^í?)7.¬ùŠú<¤(¤°ù}KI©€†…¯t;úÚ¤ëa5ÿ‰¨ä^Q°—0MȃÀzÙ‡R^áÏÏñÏ?²iOlÿÓ PžœSk¤>K /Êòä¦Þ—6f:ájðõÊacµë£™O¢°w*] Çæ ‚,Iµ)K™_}¯Ðи¡ÄÞ¼Áê“C¤ ”}«\ÐîßÒÒÒiÒÔ$øÏÖøs5Ölœœ]6zLÓùàçëì’ù0²Xg§ifÐÐЄî+*)õÎ×u|r¶)o³ÔL$útCm6”B©ìÑ£~ñá5•”­æ@£¯33Ú|­­„£#‡®®.›qwèÛdV¬ùýIÅB”¥%Ï—Øìeëý_!7³@0XRž³®à±ak01^‚Õ?4´Î‡D p¸¡öx÷êËÁLtB?‚ŸõtYP\66¶•zH5ºý™ëwš³7ø‡þs©^ï',»ººØ Û¡‚–£Ç€Ù]ÝÜ êî–Ômó!K Sè…MûWõÛš¶žž»ç• ÝÚh®Œ½½}ûÝå>%v›ëÖ»o/¾qšÛÌT"ž^_'~’úQxøVû:f ¾¡’ðß×+**†m'V.îíMd-Ëê6œÁÍ×em D¿{eE¢Ñã]YÍûÅø â9c}Ë)=°?a/½¯pƒ?æ'ë95÷ù“7'gÚ‹náý¬Éf\LLŒä ·ÅÈaï»jiÜe2šÒrå\iìä¢ÂÃ+ Ó—®Ù¨¶¥t¥Þ¯÷ª¯ÿM¶Ì¬¬1žžœ888SFÝÔ5Þ¿©œ9P›ë<¬ËždÇ{TTÔ™P,ê°¯Úçׯ_&AAA€a¢É…†††º×ÙY ª=uñ<š„5”竸í³>¹}üHc=[E[¢YNy‹.¦(ý¾ë a]Ý7Û9ç`nkž€ÅÆËô„;ëœÆÿ-K¥úÒŠŽ+iò¼I_11AÀk6 çºD_«cä°’[óÁE5è|ÿLÍÕ“)†=aÚ—±B£tËäoz«½Ó¾J‰#`>((tÒXi¦†ÞõÓ÷ãtz .% x<6‚~ÎǼ®Vú8Êò5»t2°¹f84(èPP˜!­Þ÷áv³Ê_¯å´k%&'{¶cú$,, ëËä›T’cÍÁGùõ‹“¾8ÏÊÐÖ–¹ì8Y¼$™ea`V`ÜãKOKÛ14ô®Y7†\8²£sJ÷öŸŸI&cEsü1V6?ü­¦~bÙØ¼;6ˆ©¼°¸ØAk‚:]¦ÇèF$çöâm)ð‘Ø€l)ŒV«°çOOÏ ±^&ßsÆUp*ÿ¹Æj0<´OÏãß³k¥!쓟/PkC¨öSŸì· ©8îÒý5?”„YtB왚ó’ʃ8Ñ¿95Yþqj±Ëë×0P :Åüê‡é!€þbDk{'`|u þÚÀÉÂNJ™BKº²¹ùBSsÚ*quk+xeÅ0/?ŸŠ›ŸŸŸ6s¸¿óùðø˜5qAÒEmBZ&š ¸9ð•/ÙÙ±€… Êýçzûõ#ð£*mf_Ú,~ÆŸ.S„%¦Ì3ÎlyÓÜ82=½%€\D©©© 9Mø<÷‹,RRÒ ŸÇÏP‰Y¼$„„/ÙØ0VÒjp4ýá2rë"7aI¿MJÖÖ}¾m§~„¯m© pˆ‹ãÖ{ôeïk²ƒƒ6»¥f«ÄJÓAüŸZ•0SSSƒdìí+nøéééµ´´BÍëˆx?¥«ãlj*“\žž¾é‹&;j>Çn¹•PÔGèââ¢{_YrpÃ^p„¼ùÌ|]@ݵþGÓM'²Ì Ä”ø©©¨†è7VFÀ;UTWK‚Â<|€Çù–V“+ó—á´iP Ms@ ï,6¹mŽßºhïé"¼L´ž@=œçíyzôÍuÚ®îú¶¦IœÔºWQµ]]SSi9Ng3W]Ôë23?ažÏÌÌÅUÝÉAãñNMõÔõ½2IThè—º:^ŸçG7(H¯1ï'ÝODñBtàzeÿ”~àÆþü³wìǪVÓÔ·}¾@†¼înÞ›N“2“X+oÅì?^ÜÜÝ%i×Vo9¬÷&î|)ÙYH°š£(ød´V#é`ZŽ|’2€ä™JP+ëë~°Ždò›…EEFÏO¯y]¥]ŠŠv%d ˜«ªÊìÉ‚¾rØÌ°}K*/+C777çT¥‡cqq¹P°œÅ(Ñ4:˜»8ZÄö¬]ˆŸ)˜~›£>7—•[È@Ó±ÿ!ùGö(¡•ÕçþáÁ ¨]rlœå‹ †À‰@/24¹x´½PÓA*L,ji¯.P²ds±èRá [XZB^ŠÀg^H¸CÃæ~bXfÒ_³=ükåø™>õäâ"°–Ç»&–>CÀ%ÞòÖ|8Òž.*G—Ç¥ªªZFýu´ÉM‡OÀµ;’èÞáê'FdäE±~úÅá|N³'²0Lq¾JC?ØÈ¨Kvï;ŸÄ”–÷™Ͷº&/1vö¦$dûÝwv,ò2Ö³uxuÜ?I+*ú½Û{G…Õu8?\4KüÒÙ¢ÏÍ™<£Í܈1e`aÊÄ**y3Ñõíê%(¤}Ù@ÌN"[[…›Û¨ök%,ÒwœæÓ‰^ÐÒQs~ºKÂäÁÁ%}ëF‹æ?nÍV!~›ÌE&U|cf&â2‡¥Ë…äÿc!’œìKJЦÅtYX÷¾^Ëg<`"8Þå7Ug—³~IÒÀšV惬ÓyGÙЋe_ýŽzðr ²›vAÂ$Ió£~ÉÆçãEœÊeÙîB#ޏª{¥Àîáˆñp&×ú¼„ÿ'ÄL®Œ—»{àKJJ¼ÕUýŠŠØÇÊþîn¨ý)þõí¬€“.ŒÒ‘‚GCuœ%ÑÀ¸8òu<ÛáC£ühEaɬ7ésñ3“ôpUt¦¦zC##ßxy½ö¹+ èÞša€-ÑËóò-F¹þdH¥ƒ~Í4^˜{½Û0á‹{Ü ˆ¸lçpºJ¥ñØ~Ôy]§T–—¿÷’§ËÙåÅÈ”ÆBtS£EVñQg_}ã'™­™:;˜È¨ýx£wÚ@çŸ'Æ¢£ûF²3òxˆ`^…±Cö]Ùø0óË\h®6ña-hÎj´î÷oŠ ÓAm>$á–Ï.uUZ­B0‚¾ùš»û{{€?%Ós~â*×íxéGÖçn“‰bÜ¿»ã€BcNìY»µ`œ¶ÉÅÅÅ_£“^5&³ôtÍz0Þx‘çän²JZââ…Uدb,yãÉ'£wÏTê5DKnŒd k²»Q‚ï›,ÉøžÝ •8A º\;&Â\iïAÒƒ¬}&}/à^YMûÒÒr¦(ö&ô'cë™÷çÛ‚/_®P‘ }Ç98X—ýý{¡´Éœ”LŸ„^Ë¡¢¥¥6Ÿ‡ô‡SÄ8Ƥ¤(L¬U4`‰Q‰«‘@&8’…MÄí츣V`E‘ì¯Ï°Ûy]i›”Qc‰‡ŠC2do̶ªæäáV'’¸vÙëœhªÜ-®IŽ‚‰™ÄhwÌo¦ö4'\ò4:y³4lë—ÚZ:CjMX¬£ÝøX©^çTT„‚û gfÆ²š°¼¶jZs"¯µágL´ ì§’ü`Y©Å³®kgôi¦fy:.48µ’}Š¥E| Eé\éÏ€Õ1ƒ~”–†q[§;l Q“ º&ïó!ÓssÃþý«3Zm)a3¿ä“Ï5ßLÇ 5ÆØ¸SC4u²±±þêh®ïÊÆD l®Û\ìõSw­6>ýV¯˜Éjð270Üð_¬b,“SSýX—o}ãdÝâí!D¹A-IniQh´.MàîyݽÐba¦M{i¡ÈƒõP†'âñ’©™Œ`G“îP2P²Ý™Â8ßs©—5Í!BÔKã—ÙŠ@¸.2Z ºµµ °Çéÿ\æ^µ*ÌŸTîÎxZXà€øu[A,ié·×mÊ/÷­Õ­[@106ãHH€BÎ*·åß ŽéëŠ$º:¹$‹Ökb1Yë6ÜØF×”—WQ¨šÐŒVPi5ùÀ!¢W«×¢$"e¸ÍhôÈ„Z_<í*¨oÄÛ[˜ú†Ãö&·Ù™O!T4—úh5ZXX²›;t™Þ¤"^ ÿ\GTúb÷ɪÁàâáŸ@bp½Ø]!nÒåú¶«‡-!>£Œt¼u˜{{^…ê-öìÊ%J`#A±‡á\Ǧ?¼!•d­¨˜a¿‹P¦ëáŸ-ñxrÅìÝÊÐH•¤­@QXÌþ„/’ô– ¥äîξµÑæ%Ÿ× ‹~äº@´.²ÔÉÅBÔÌŒo…ù°;—娗}Yìý¹Iø££E6ß'£f¯ÛLp½Ô\p0”ººNdA˜A2®o»§Ý'&'Ù,ÇXƒ¸º^AªÊbeü|{ýumRß:5C#Ï(¢2a†€öêÍi‘û³Áã}y_½%ÈHî P!ÇmÐÏ Ñë}kÏOÇNÿ”ÑØÞd óÝ•mŒö/ô—¼u±àëÃØá|òyòà‘(˜VW¦¸Öãœt$ON¨£|'6//¥ÿvçd‹±dˆ)¥‚‡@D$ h¸~½¬äH&ò±…¯á)I¯4vre«ñc ‹Ôë…‡ÇÅ‹ÈÂà­?Qöõ¼ïÞ¡žŒ+‘Ø_î™gÕè²Ïw½ åíÍL*¸…FB¢ú¯ Õ©ìÄ""ò˜©XåšVÞ+V§Ç$þL˜ætRsJ·¯KAÁˆ.ÉwCŒ7·£.®Œ×Hœx8ÌÁ-Wü]miâ÷CÁ¸+x<4<|U}ÛÑ©Ä÷Çâå~Ôû£ÅÔÔ=6ޱ <-¡³cá·é‹sßÀê‘ò±!-6ÍßœØrùDÀðû<£/ú—·VufKOf¦‡@ÌZJÊNW_kí'ሌP§šþ¬&ãùmfQ8w–}.é*k¸{ -!®¶yJZu&}R^Ï-Ìj¹V)ßúõæê#ÐrÙ-Q,û’…`x®E°¦:…p–hʬ%s³_®]žþ­¬ÌÎÆ5ñ&¾Ñ˜°ñ‚c‰é2­ªßQDZs Mn¯ÀÕ‘‚|¥c…ÔAvßç­*T“^çž±°–HâˆE&@å¶û¥½ÄEv8˜Q»#…Ç$÷A '§Lá†N ¿^ˆVcëesÜ@§¡kíØçÌ.щٗu9zzLÞï#ð¼Šì»^Ç$ ”íxÓ8¦(ǬÃChàmUi{2,º«Û·úîÓ'hgg®âšè )XÈp@„P3Ë^U×pï¢àS>ßqý:HåVœ©?EÍWZÆ€0“Ê[ÀcN[¤ÝóÛêÅöS‘’tõÜC«ÆŠ\HVúŸõ}û£³MzÀ–(¼u,oǼ|ªÉrpœUØhÃM;ð­î{"ÛÎøîé¦É.rE%ç§}Ÿ€÷ NKÔÞÝÖ,]]cýÌH5\îlŒ,®!o)¢9ÍÌȧãúÛª~¡°}®…<îŒ!ç–à?ùù2QE¾ÂÑÓ圉Pè'çÃÐ;óuÂI¬C.¤Eœììí.ÿÝÃÕî’.€GpM 5°¥Îð”c’ Øß….ùù3‹®^]ÉÆOu ó˜Ò¥D×MeÍíñ—À¯¹À¨ ï™/å(Qy^ï˾>¾ÜGE%­Ç x  –ýeN¹4Dh6i;.«¼žˆ®úèΰíáeã™ [‹åVÀ–eÕš¾óóu ªôï²Z),-•>¼›*¥Ñ€ù*WQÖüÓ§ÐŦ>jöS4:…¹ŽšìðEc¹ù½ïeëž±T25J‡ìnÔ&€~zä]6PWFEøÏŽ%2B>Ÿ’Ã9îUlÊÀX_KKË•ºåà•™Ê¦×nxSóu³ö.°øøh˜¸\ø  ueâ‹ðI, 7‹ãÇÆÄøFáЙ'éœHF©"áúº}j `T׿ ÒÉ ¢rQe»ì¦XQ~¾´&0QH88Þ¤ükaÑdi]¿-Q:»ŽíÉä6%¥zÚGG1J?|£fB_Y ˜%ïëÑ¢-»»½ “–½¤é‘ÿïˆA¶^LÒƒ2l.à;‡íhX Ûÿf$ƒÚv²ž’옚R[5‡¦“$r'b€=¯ÛoÏcNχýÖT2VÎ=Töª×³ e]‘ŠÈÈàࣃJöyS„øá€¼ÎËôæÞ °ÉíŽB\¼7×Ç›ùŸ+j_ëýö-ær_ÉLj BoÔ|¯]±RoïeC´šùÁAjçྠ“~ôÌ nÙzÿÐá<«ýZ·÷PÚ¶˜æ,,P:â­wÄèïzÿ¤ ³›½ƒ:;BÌOƒWx•ặg¥ò*Ó´ ¿·µ µ ¤l8̓‹'&[\pž¨µšùPÇó/;çjþ¾×,¤ ìç4Y¿;9Ý>™š’2qŸƒ›˜È•£E@ɤÀ§ô»ä l.¢ØÎóøÕ]“ÿx©…)àVÛ‹!Z½A½°ÖÙBÁ¦|>{CŽ£e_$‚äÃþ¿,+ñïNo½ŠœkOoQN®ðôdb±c {ÚÚÅü5L›¸†3b‹žx:uÑ Œ®þQ`T”,æ§`DD]‡~IED¯ }“AD'á±eʼnäâ"ÂcG‘OF“Å8º}q……„ €Î·.·!—!p¨ö~¾ŸÏ±g8³Å¯dßõ‡È·­Ó—‰Š‚– oB_WÖÙ…„"²v÷´ô¶û‘Ä¥?øí˾¥B/:Ú§Ð:iJd–Ï?Dþ‹û oõ Ëè¶e†††6A¾°Æ:“Ô‹(7¦øW'²U +œwÅlæ]ÑM¯IÍ¡Âò¹?Tº8^†:Þ‘,ó‡HýÞ^Üìì„Ø¯è]Á¶= €Àx"YFY&g±‰›‹•óa®º²= g¼}û|u¥‚œ½¼>:ïÄØDue¥H'IiE™Eâ¥K&ÀÕUad`rº–Û?¤–I1*!^Ö>}«QJÞê=„! *É7)éÁÊf Âîn¸ºðØØA÷Ó5²­¡ÝA\ñ¯Ä.sEl€±!U‡Aá8ZžÅº¶¦ïD&·—7kYðãed`!¹ª*,©°À Û9-Ó•?|ÞwÀÎáNõD8rYPÿü LÀøuXªÚßEÃÃ%oÝ6Sšw¦ðùq×ÙóƒsÚac X]¢cûœÍz º,wb.ƒ_«éІîÝ ù?S V˜ø;0@H¯øNb< ÄAW1ÿÖ‹Z•Q³L¨£;¬ƒ}øKˆm31ü YrXTñP¿våßÞ¤jÁõ·X± W8ð)3uvTw—Ö1€,±0íMTQ-Ï„ÆÖJ2¿xˆªÒqó=“¾¤Ÿ«3HÆRà ‰­·â“®Ù(ÖrŠÕ}ARbb+Ý>HÖÓUœ¡Ç Ô¼¬ ¶ùÅzè„F)tÌTúí,6‘iü´ßˆ^Øû?•'76Î9òýõsTO‚˜fù´¢òç K((ðZmK/"0$¥ßC…‡[ùO_\TçqŒöö±ŽGcZÚ»ÛÎ/y«IBØÜ,^Fý»Ôߟê]&©¿BÚSgo —e ¥HVˆ¯K7¬N¾¯éù]3‰JÑŠw8§m¬ËÉ-—‡ŽéÖ°›XÚênƒÎk7¸IÚ¸P£¥f‰›=Fë‡ U„²uÌlð½_W4€êbŒwu«–BdÞ¬Hcoz:~ ½2)ëÌÏ7³ºòRßÁ7«Ò˜À…e€]9hÆ#`é6Zn ³w~ˆÿ§T?æé5ÑòŸA8|÷Z”o:Ñí¸ŠÝ¸›Âb¢PÆ'8?_`:n#üxx¦¢ÛÂ{xøëHVðÁõ°ÑÿþÚRæ'îüò²zßU¤ŸŸÈìo*èA)äj–»@a:Î °<ÊììØnuî¼ R\Y43D€}4Ýìê0^[O´ãHOý|u€FJÊó@J_´ÇzšÈ:„?1‰ÎOwQ²ßÃ,'èÊÄɺºBëêÖJ”~~ ¢fM ¾³â MšOË>.¤ayùfÆ›¢ì–cÏÙꌜàq@‚·$æêÅî7 `àm;]”‘ù¯¾ffâ;:¡X{ïÞö) *¼úAèel9‹ˆ…µd1–MJ:µ~0«UFíÀ" í}w“c$AF*ȃ—å=•òO÷¾øù¡›ýÙƒªÓý/hŸ/1—ñÕ«]ÈŒÜ?“wr«‘$Óh‹³ãN¼ŽŽÈ ˜~48ad+S ¿Ë˜‹î²w¯šÏjDŒ £ãH«ÚŠç“P» î‘«6ðl½V./q1=™(9Î,9Ò—Zæ.,|æ\‚öeÓùíWàŽš‰„ThššZø_ä*A-ãÈ ÂÝpZù5 6û»oU$uvmíK-8F¦¦C.4AÝë§ÿ]M¾¾Üκ¶?Û€ý©Ëx$B•­\@V„ÓÐäÉâIÉrÄýùJ7‚„7ÓLÞøóg Öñò?õ®ÀYÃBeáPIq3S?úbiI˜Ýüï›Ä4í«qÔÊñüîBe½ Û4ïWt˜xÝÛç6³/%eè!ó—º}¯¦ãiB##;¢ÉrGkK_L;আ…AO•¹ô-j:ì}õj]¬U±‚˜ž.m­I^G0¼²y!f¡‘éÁS¥Ø?†Raç/örC@#ñâ²J[û2/$.þZ1Ë'Ôz:ó­®ô‡tPíý¡,÷ô’IîBäfC!åÇö šD t‡â>­_öµ8è1W7kHxÒ{íÚÐ:Î6,¶„Å•€ÿ4Zig­ø(Gpì­PrffD5×ÝÙ¥0Ìò3Íp.¿6™B8vÇ ÈÀÕÝ]<¦·Ö)eæ­.µ$›>ù>=tA¹+#¶Bø¾€,nÁ·nð)Yço¶¨AwïÀ´;É‹Rî7lD¾O>>¾Fwã##ï»b)}*ªR£@H:ÿü¡ÔOËr>þ3)Šdð5e¡ùv9€&8ÝzÌl‰ºÐrWui5BFÅÌÈŽ¿G„Ü{:ÿdG, ÁS`ݯJ—ý¾Y)”È”±ó^5îzÂïŸú½„9¹8íZ³%‹× áÜÖTuQ@ÒöÔFÃñ¢7ë˜(ò”o¾Â §Éu;v¹9öäf3éõáã»1~¼S]k"àKE… VÓðÎÃbˆ¯€è­9q‚ø¤taA’Ë}kˆ~ÖøÉÇ«¹ø'ÍPس¬çæT°ÒL†ŠêHì%æZWé)ô{…( l†À ljU\&„.çe^™×µž¼¤¤;%33Îã½]ûx¥i’œÂŸöBeA ¢ãâÞ®üpÌòLîsg ›)ì‘+Sð]&FÃ%=S<´™ƒ›»ýë+Qãõ^NDôV=  ÞŸ$)É…n ¹-ù€%NO¯mï2q ;¾†š…†6“`áÞèÃ× êߢ£éV®mÂ,xÓ™Äl>Z0|æ42²ÏQúüxOºÐxI*NÙ5W£LÈñ[…Ýó šOÐ7ˆÂÇ‚yü‰xj ’ Ó0€Æ$ Wh/vÏÉ…ïBöµ*êìP  Q˜ps mÌ©²†C† zÓE”UQÂòðäƒR@¢ugÙW"l~ÎÉ euí áoºG`JŒcJ•1V@òô'à ½Y¬§ ¥:¬#mÏŸ-¬Š×»Ã,-ƃ{á @%™…ù{nnÀ*JZZñlDÈyÔ_66œ¿M4W†TЕ ¬Ì÷%}Tݧ–öî°&6/wó¡”QºKìv`~››}ºûØ Û¥îöN=}vU„Q"в·@52<éÐ×{œÝ]]56'11üúŒD©‰‰9µ´W@aán¡¦ÙãÝ-dpðô] ú/a?ÿ\ÖìÛç+X ¬ßk–×[¢À‰;ï¼oQLíÍÄüÄeS‹@— \1dòJ&zÁ_¶›ÍR… [öæFê¼3ˆ/:!Éådíf0Iê%|{ÑL0úeW²Á‡Õv»”Tb{¢é°À,¬dñPqrb@ÈÒ¼®…è¬{®|8]‡dŒÉŽD¥Ûtç}÷€Nl»3š‹çó8©¼çÿ¡š-è}¿ýóÓ 6Ž#.îêˬXÏŽÁ­®.¥ð“C`Côgïæ Ò¡;Ïönñ»¨ÕNÛWÊq…ÛBú5eVrò zâõjå™ê6J9f3 ‡L0û>â1. e¸õGPw×Ç`ý“AV¬çèB6c6ŸÇK¥H ŠHåÜÖ ¶gB ëqÛkÀsO¿|Ÿ—o¶Òð M@„&›äó\Ü“9Ê.¢É²³³é|tÕh:Ï·)B¾§7aLLìL(kTU±;™1Ð)-5 ½ù¦È†Æ.HÀ˜Ðx~þ¢Þ~Õá[mïL;ºÛQdp@×çòè@LSé¬fÉד·''7ÐɬÙ9B ŒOŸždånÝw}ÌÌȧÊEÑ 0‘¥ìfƒC0Lãèðêx]&ºiÎs[Oa~þ|IÃr|8ÏÄõé]†k }°$§kÐ;ÓÃè EN÷ÉvŸ¬õè,y'vÒ–ø"ïîÞB‰l~ÄD&r=jœýuoø;Þï Ë"ôþýË/bïOKcaüÞï-çrržÛoôÿáÈ’’‡¬Pœ¬(pÜ•í›<¿¹>bt8Yqaë +p 0GÑóZOý[»û!âêÜ7ÎȱƒÓXW½„` ùD¼ú‹î 4»Ÿ¢û>8@‹ýÆ¡ˆÛY7_öƒŽ‹‹TG¤<Zl!ñò‘Pˆ2XŒônöVI½:hÐXÅÛ—’¢úøqäý‹ÂÍý±dÑ”üÍr‘€½¡ÅõF/ÙOÑâDe[žúûÑ™»·}…|÷›˜QQ«è‹Ræ9BÊ1æáó]BøôiÙèöÌþ`Æ¡²›:û}`d¤.ŸÀ€lù½KßËDîFgK`Wk°Ÿ‡·Ï ͧÕÖűâã—²=œ¨-ehÕ$Þ 1Bôv8Ý  *Cw£KÁ?>³Œþ ‚Q<<¤Ó³MÏú†Ûñ6³›xWGPÌÌQÈ‚ª•…/?µ=œ0B`jÞ0üt—žSÒ\ˆ"¬léž<Ê»8°ÞWÐÙÙY1¦;9qÃçvT©¶FxÓOì½OLv£0Hˆ¨¤h$ºoD‹H 7)­£ƒ©ÁrýÃa?æ×Ø&’ùtë«·û¡â{›{ï%8£Cý–;(?1YHb2aa™‰‰8Øbºã'¸²bAC“7eÔYñ¿»È}+¸œa½Ã:ÿÖ_aµßˆÀTÄ—éÙ‚8ªqY|×ù$&ÛIñüáµËãåt®¯y.ó3áàº7)Î\o/œŸŸèø :ˆ&îöðp_PߦSØ5Œ“4-Á‡ê?CÔ [<ë$œ/¼fæë¬Z1ÉWT 4މçÒÖ‰£å'j><Æf5Ž‹+ëFì÷¦íù¾¹{Ò€t©Nš¼nïù¶4”†¢æÄÄÍÎBà w!ýo%æòë§_nÏc&”«âÁ˜n ‹ênŠ-îíYFþÞÀ'98 ´zº7ìÔT¯©Àx³JZdçò3ÕÄÄÀq¨ªêzW¡Ä£sš›At_Ñ„ÜÀØØX{8^&~cãÓ%§¸ÐÕ±7oû²JÊèM&rËÊàmm~~Ø $”Î5’Ð+š”A,Çq9ÈÚ×¾­¹4‰® #Òzïá×»ƒ˜óíäæ¹2sé‘ÉD/ìppû#Ù,¨h.y©˜Tüz‹Ÿg*M¸>-ëûKEøø×Ô°C‰IH´ U:ÑmMyiC‹…툧”ÙüÊ)ˆêä–¢nlt´»ÂÈ`u¢èpÂÆæ4˜9ZïÞ¡BÆÐùèA;Œ"hbÂ=4ê±`jSÔó Àºi´ÞÞž×ή¥ÑßôÖzo,éÈ›`³˜Rjï»j0Jº·}c<:8ê°Þ0±'àÓ|Óƒ'øØëþÐ<4:3‹º5îƒp`lj®’>§Û1øþì¨y\d‡«ê¡oNcóËÅ% î^±à`≉‰ba¤ž„ß‹sâVˆ”Üæ6ºÀ;c’ c(+¯n\ÐîMŽCe 3žþHêƒÂ4iS‘È“{Q*•åÓòôàÄ |.;û`å眹ÚÃx`„ãGÇKB›ú–°v÷5uŠS-—?Ú”ùùÒöþ¹¿Éø†Á[wl¾EåîþðåóåÀ“¬ôÇÁ™z‘«ã¬PZyxq…(VŸ.® û#ÝŸj{¡žQšåKƒ“££íÅꕾÏ4€©e ‹ËBR—ÈÅ…Ûëö‡i˜vð9÷ èI„$*ÄöO–PÿH5¹:axý†7ÛûžnòÃõj×Çj[ÆÛÃêÀØÆÑVoÕŸÚë‘‚nI†»c~´e­2âƱpqõÌ=¦JÃÒÓÅÙ®N¢ûÖ;ÚÅHÖ{]dœ/„Òù9q€Zµµý#0(‰H)éaaQh4N§éþù j©-@Jô³Z“bSz:ÌÁ¼Ì›8÷Ú¹7kw—AZ­^˜—–ùïYNÝ…ê›Üº²|ƒ‚¤` KÎ)1±ðð¨Ï”2½Nì„Û“ xú‚PœvöÄ70cäΫè: ͽ—Ö»¨o¤då»ö§À™·oYTTã2õ{ Üö|i EŒZ)>]f¦Râ;]æ´(¾jAm@¢ºwØ2‘Ùpk°Qׇïªô&E¦Êøùùù;s5ŒÓì¡Ø˜a’î×Gz¥ƒ ¾Ï¤"^qq1^ŒŽ†§¢6²`˜Oˆîî®#äè¦:Qˆ|¤HÕ‰ÿcÙw¹jê×On«‰ÂJxHƒeÌÃ×GSÓßÕÑ!G†=á ¡’¨¾›hÔ¹©Qü®+í¶?µ°^@íŒmr¥œÂŠÜ¿Xç³¶²êl«)ŸŠŸº&êÄ1¼ÜçsÜ`zùzÖ̬ÆÓ[&½#WæU ûº ¿7åjYÑÝ径¼|‰†) >¹o¥%$`¥¤\ÜäµlOÝ­Þ«r6~–(,áý~XXJ¼t¹¸ÀQ)‘Qøuw·—é)÷tWX´û†ûK% $&{{{˜ˆpº}/ß"äu¿yÿÙddsouoò£nÛFo´mLo”©à—³ 9 –Ø[Ÿ[‰ZŸ—°¥¥ÇöilÆóÑ"£ve`‹Ä!ÿð!uh¿Á“4B[P˜ÜŸh§ŽvYÙ(Íi‹Éâ8µsÎÇKzŦ¯‰-}Û ¿¤ñªbââXŽ dKEÀ×¼fd9"#æ‘^ï#jjrXïµXl¬Q  U.ȨZ=uGDC JHÀ™VÅ´_JÏÈø!ðôRYÏÒÒÒÁÚúüäY–ÛŸx¾=œë²?e±PÏþOó—ìŽ*½B-Ÿb'™@™oÞÛrØOñ[/$À?cŠÿó¿Ðôl 7ÿë÷ T—9¬ÿúÊ2kö_¿óKd¸æI[ ÒÖsÑüì} @ÌùûÖbź1ªÕaª¹N”#RVB>3󙚚«™é’Šu•¤É‘rÅ"Ù¥¹•l¡è…$IEŽ®ÿû=GŠ˜iÙï߯ÙÍgæýyÏó¼_Ïó~ÞÇóù´‹s]ÕçpjÉêåZU+ð £×ã[øi 3Ƙ¬½žêkü´y¼õy¸á0uêÔAÆÎ³g«õïߨZ»v­ÐÛLèw¼}÷矸¾£i³‡áèܨþ}ͳGÚÖ÷f7ê‹‹=,¶­¯­Ý´lû~~d @'À¾÷¸L8ݵìÍ‹]W²ìb-4+rvYÍŸ¯1ÆbùOššš¶Ûp“šš9ü눓ñ‚+ñ¤d«a‡7‡@­ªc×ÇÿÈÁógFÎ1Þ|ûh^MØþ} ó@àêƒúq]<ÞÖÖv©‡Ghppð ¨iõ`®d8ú¨sòÚÄD¼™™Ùï±±Æ::?nݺG¡L]ºt÷ÛÖúº:xŠÙÁÁaÛö틊F½{÷îϤ¤žjÛvìøŠ°ý…ë“Ïùž¯sv)µtöFü^Gµ?ÿúkvÈÖʼnŒUùGG…††2{÷îïtlI¼ïfµ Ë^=½È`2ïó3ÿ Ý®»eé¡é7ÃFQ7>~ô–d»¹é-´4½‹÷óka“ž‘qâEÉ™SB‡…LH8ŽÆZdŠÄâô,@ÞßßÿªPÕѱ~˜¼ïdæñy‘÷ïÇT—¦Å¢(yÝi‰ùP^²Îd+«#ñ«ØÄ8p\\‘3×CtD’WÕ¼­—~øá‡mkÖ¬y›RÆgm5Ì.,ܱ‹æù[ÜþýÞ:hOtvv®%°Ùlîó»‰Ïïqâ¾yQ?iUÏ_2ßt¹±Ë49ïæö<÷3áø«waÈ©»»û©íÕ.íêÕÌŸàÏÑC“£ykFPë.ªž•ÍrN抗±å…#dz„};Îö‹+…Rß0‚8ßÛ›R”ÄÕý»]™ÇOœ¸·ÕÐyÆYû N ¬7bõõCJÒ‚b½žßÝäçëë8ß•—vâöþ’Á“uD+rR#m½Lª¹\îÝæÆ7éá5%gœž\~ÃG è¸\5(äÛÀů;–âåíï]tÖ˜u㪵)<$vÂ}Šek“Øûá¥5ƒª–œõýõ¬-—‹ÍÊÉaƒ‹SDqÙ®›–Ël*p«ì vÏów”¹°’9ΜAÌçå>åÝœ{ )÷ìdãôa»¼GŒ±!±õþ­¼pËÄÄDD__¿,Ãõf J¡P†æ/(ªÁÂÕôìÑ»‹˜sa Š8,BÖÝ»wƒ[ù%©ä%ç–ýÈEnjêgRö=zôHÊ»IVŒeÐoooà—õ4ZtzECu‘¶®n/·¿v¯œ,X—–fék6üoâóbšøÙÛ¦ú›Y7æmZŸ´sÀá“ìW®\¹™©¾ªçÏ—6ëÚg.~‘:ümik‹SYëù·e}jKïÝ»§A`ý”*©ü!(¨•PTxLç]´~Øu éš·.åIÖ±À×G$eWB*S*bvæçç{§\µ¯hnÓ²ÊðÀWû$yûm*_>¼|KßáÀþTÑó4ËæJû[¡F©zšTþ¢ÔåïêN&$í2ñrßq`qéðƒuô[÷¦„Çò(ìÖ×zì“Â%®ÏLÖûÌ”Z¹6–†$pÞÄô¯7yÕà#6 ²_×OsFÚ룂¸¡C‡Vö¾è÷ûÞE¼Ê"AZ@a}n§—ë,qÄóè»9+¶èØ4• O î‰EÔâ´À€ÛùùSQ³¶~^œBdߌYL«ž`1æ˜ÿﺫÐ1»ëzPgÇZMdýÒ ìÆð 0ö–§V%d™Ìÿ>š> tö2™ì FçØS<5!ûÜÛ²Ð=ß=ŽrÖ1íþÐÿœå[UKÓÖ8^™8F›ç‚èG¨¹Õˆ_fîÌWÍ?Èû3»û5ãX¢šÚÄ ‡Â¡‰q3£®^Û¤½/5Õd¼}Ìh@f¢¤2ïÒÛKkúm}žõÌ2Óê9ožÞø€€55µhNÜ‚^Sí©‚ç™÷šÖòh³}sGÁŸÙÚŒ¥èF^AE_5µ ÛŸL7ÙÕ®ˆÓ„×GòúÁ«h*§¼Ò÷ì.+¢k«WÙ_poùäfl¬×–nåÑb£ààËëJ¯Ñ®_˜³ðYù*¢¶MDpðÝ“‡¤I¢§Í=W¬g&Õ.¹Aßµœ*]´¼6}Á´“ômn‘n˜üèjÝ–’3Ô*î™7DÖÖË«=îŒÐ1ßÀÀ ¬ÐãØ “ž«.Ô–g0[[šd\‹ƒ@YÛ×s¶Ù…‰¹¹¹ÉÈ6™ú$‡^}úÁo}ŽoÜtˆÑøæF†EC"­ælýñÝVÍ ÍÛ¸7Yø°uŠõ•ºÇ­›=A–‚ƒÝjKß@&'ÎPM¿v׉9zÕ0ãºÅû¿ ¸ÍŽœüq»Óš*íÏ0s¢[ÃÊ3üK«×õµaÜØqõí«ƒGÞë€'…jWëÌ;|ZÄ«s‹"Î&caê°-ÞC"ˆxEO¿Ò¯`,A'¤ò–îÔ÷‚m{‚,/»ÅiNq}Q¬3Æô%óè5µ>åð,€àþ–À¶¿vþ!ú7Dþº°°>ÁeA'!­e} íð^$¼Ç¸’R›n¼dŒÕº­’Q 5`7û,o*¯@(V{`>Ãt}^4}sùÓ\fÉKolpî]ÿ Þëï ??{ðåµ»Šªk‘Ëk¯fooœ¤¥Ò_¯ZoFE´ÃH—÷sxQ¬uý CvòS rÌ“I—YP@ ôÝhºSÆ&í±ÑZþ®y¼úHNÙ}rŸÛm¿jƾ½|©¹ñèa`Lº†î]ðB9:Î*âô»'G˜OÿŠÐ09©ó${û _~¹¡7±4dÈ©ÔÔ7v›ÌEæ/¯¿³ v˜‡è̺Eª½ØÐÐ07//ÂkC±»Çî‘po§gDÓácÇ€¡yÏ„Õ$ºyî_<Ðà FÑÔN¾n9 ªÝ¿Þ[•·q‘Þ„ ¦ÑÖúØÖ+À±gŸöÄ‹]Ûf&"Çp罫 ÿ8rÄt¾Q2¾Â“mg‘g:ÃT#üž}ð¦døM‹Fnüâ3”%À0hX,÷Å.:ý'®egiÓxö^FC¥mN9—¶k9dÙ{‹·DüèÚ&ß+{1nÿñ«ç=4*ýýëª3ÑF;tl¸wÿÜñ½gÏš 3^2Ì×Ôó7Ë-QQ™‘ú„5‘èíØ±cïÞ½ZF)"NWÄøïÝ·OûðáÃZZ0q‰ßãÈ%QaÁo_ Ò,miHf‡ÏÎÞæ &_å÷\cƒ©¥Ë‰9ÀëÕ pﮈÉY–UXD‰Ð qño0aBqMt(OÝ8ͳ†»ÌÜüüaG­}uË>8©©†õWÛ_ÙAö`”_ ƒ7ÃÍê¦#ñ§N‘—,«Œ›ŸÄ]PÔÚ¼&cì²§{îžð?™”tU|Ó|8˜(„®H󮹯9p ðVÂfŸ;Y€jk6•^u:_iT´“Â[hm EÁO­<ÐÍ2|s¥¾‡ È·ÕË÷Uî´òW•ÔA°Ñ# Oï|ýúõÁ³Ë½¼¼R.5óŠ’âvùDO jyw©9))Iriuï5‰Kü 6ͽŸÏª˜;w®—³ ¢Â+¿èxéò·Â÷—ǶàŽ&$Ø%óжàì.5 êhrÏ&3»ÛÎùçë$cq‚w·J‚ Ö…ÇßÛä-©väØÕÕ½«¿Ñµ‹¾ËÛþìÙ³KÕ k|›_ôy“±aÄà­ÖJJÎ5<¿w‹wnW¬I¿ð¤¾»‡Ç¾£G ÁØ›é´dDkË›´ràQx>\3¼ßS¿øù‰Z /tlÏn `W{Œ^³ ‡¡—àCô~~×M 0.nͰlÉåmr LúglÔăÉê¥æœ‚°*.ð çŸñ(H0ºizþó(—ægNÌwukØÍÀȤUvÎãJ‰ðòÏÝÇøÜ÷sÝÏÉÙq5ÿ¨scv¡SÌ«u1¤QPµ\f˜¦¦47íKLÄuzƧfã/3·JœÀ„Å#ŒÏ¾œ\ìU°ØH«!å~>î”ø”jVWWçÞ¿?fÖ¬Y‹c|\Xi„ÿâLÍy7w÷õuuuÀšöðfªWUY–KKÝŠØiöË2Aýr Õä˜t°"o¬Ý›, •çÞÜß¹522.j±÷‚T@…äJðÀ5µÁÓƒê6Çîmz¤{ xº'Aæ’§³‘ø9oJfÂM²»£‰ûí?N:tèåYà(½s!{Ÿšû%UÇþfi—íÆúý$<€™¡‡ÀÏnQiÈ;»5p°™˜æa—GšÕ˜<~™D²¶¶‹ëõ Ó›ßÿqôhXff&ðRÄ®Ù1æg„Ë8:øÞ;/ƒ¹'b^´À‘a9ËÐ.§EÌ,‹ñ¡¿á›A7ÍêmçÍfG?úÇÁNKü~ÑÒ‚Ž¤“K€WßQ,°Me‡Æ<;^rçˆSÆÛÚò}°VÃ…CjÎ7ò‘sæ7ÿqøð³ãG8ðö*õü¯ó_ìò¹æO.­ï ÆTœu¿søøø 7óSD9il8J=ØRÛ)Æ·,dþ ö,nñi|aa¡ú´Sæ¯þ²J¦ÀÇ ÆÑL‡õ·l>ô 7o˜oöþé>Ï—.‚ž;ã#XÌà+Ë0ùÊA‹×‡€Z…÷»8.FwZ¶Ô†—WŒÝ6Šz€4Ê÷åÅ^öúU/JΜá‚Ù_"˜¦Ó–½r³¶ŽwN6‚\>’ðÌSšÊ¼™ÆéÀT–µ4ÖX¦;õôj< ͺo%ôV`I|ÕfY”ŽYkSý¯ÎΣ j©e^ü­G"Ð\ ËÀåpXI8]¶ ¬h6°IPm"®ß½Ó&º¢dT|~ñi8òpKRÉìc—hXÞ£Œ9’ñæEÉâ|±Ar¸¦é0fÆÆ0(ýìíÄò«£€«zÂ|É(c›ßêSŒçw=›ÞÖêé뇘×ì•)EïªéÀeºveýÐ Z6Ó#tØíZè{ WxæÀñK‚š_ÂN¸ÚÛnÃíÁQ<Ë®\šo}e¿ÍæeÅù¦5gƒ©AèÍåOˆ‰Œôõür]~}õþÛÙbÐ]üe7¨¥J›_øHÇûh<óªµõ•ßÇÝ_û·©«,Ç´fi–ö¬[wS½<Öv0vÁÁæË$'““‡_r™«¬a"q /J}¼Õ™Q[–^»Î²iÜVCç|^ÓÞ¼yóOÛL±hª‹JÛðäÉ“mxæÔ š¦IýSùcäÚòhÔT0ZâûpÍ骄3êÓÎÿóâ|ã ˆ†† Ï^ë%uïÕo¿¦4ÍrÆÌ™åí±ªm® ²ÔÚ+¬>ì_sŽ ­c×¹{§x6V'ÇÎ{’S”ÚPè¼¼}µ«Æ6í.Zfç½e,äõº^õµHà hóO?\û¶©ÂrlÁ"ñ¬å¦¥`†RPãï™>ÔéʆDÆÕ #Xœ5Lµ²² ^V%†[¶øƒi"ž“·âæö;éñ N¨g/<©Ç?[{u]̶ÝeBü‡ÿ²¤û–Sª“K7¦ˆ+¼4gå çÜ0è ÔÖY ™²twÓïB,1øÙoΔ†AX&.{ý,~_ôÀî¨ÔäLÚGªú7_"‘\Iky} >‹Âìõm™Øw0#bTŸáFÙ&—¦Õa Àvû ¨Ë²É&ôÎp+èy‹}ë®ëžØørÓòâØÐäûË&Ti@q`(™Ö•¯Ó[tíÞ={ÆUiôèœÄ ."ª q»~}^ÂO· \5Wvãžä4Œ‰O]eX|Åoà ”Ì*Zû³ÉSùUÍ…™ð·Í;ë„ÉKSûþù†.‡á*tHCDÈ1r“ð¸ÆŠ¡@$1ôFEbŽ€ïBss ¼DLTš§KmàÀ‡B"Á+žJÆIãe¿á7 ŽHPÃ("žL!à j8ŽD&©aþO RÆ ®íúäc6ÎÚÞÊqÁì)Ø­˜Ùs'ÛÚXa´ ˆVÆÆÖŽÖ˜ùÓgÙbðF8Œ£á‹9„kl<ÅN £å&‘MŒ}||Œ|ˆF‘«±ãc_X–5”´+iÄ’°´,Ôͤ úò¸|±y'Õàétº¬´4/аÀ…‡J Ìkˆzzq¼Íµ¬| Ê—:ú Q- SöË\K‚úJd…M™nˆHŒJÌç:N5¤iwVÉ|ù“ ­¨FzÁ0A"ÒEˆÈ£÷!ƒ>fÒl̇¨ eìT)Ü0RÄLåpQ3cY›êf\ßã&BÙ@ClÄ‹µ0"”k®%–øqQ±ŠJ´0 3¹¨`H´˜)â%íï¸#Þˆ,U #1͵Ü=½P‘Ÿ‘»XËÂÌXvGµ‚,?¾eBˆ?.ÝŽ^>â-¡è7%Y„Š9ËпA²œ"Aþ~é.•´PÇ`tôX¦KßHpï§Çás$s €§¾©4‡ÏøèqKOÆát”ãê&÷;-KRÕD‹²5–«CÀòÇÃaL!àhœ¡!†%ÀðPOàb$n1dÂb8 øÊä Ä( ÃðÃÈ›‡14l_„+X„.¼a˜(—+"LßÕ\ §%ý-DX,ùo 3‰ŒðE„‘2¬‡”q ™"ô5•ÊÐLÂ’6! Üè.Ç•¯¥È.¯Ð‹²A!œåÉJaÚH“—ƒ¯Õe%†5×ãš©à…ß¡B/iYŒÈFtÐMඬacв”pc 2g,É.rÙKå¿H3J¥òYØC¨#DD™pái2%“}GÛ$ÍÔŽQR‘À$ÍEÄb™½ÉcæÅm—Êåˆ%òà—ca†Èq€ˆúÉ,µ”a‹Y‡/ÀlÄ•³ifŒ€?P°³:„ Ÿ¸CsP.äàC5bUêAø°\‡º¬Ë*rˆ¼˜/Ñ—jS0Íô‰€j}¨ ¬lG*¡Ýí¼*3c/®¬C=ÛQä„"'tQæS"ãÑ”REV®\áv¬eš,MŽd)Þ€Aè¨Ùb 5|¶ñèÅ1) Fq÷C’ÖÇ2„–S!“Ó åã®øƒlÚgûñ™m KX´uBMû¸cÄB.GÂ@Dm†Â'Xfè%FE†b” ´×„/ࣦZy«1gè†ðY †Ú J©áÿÔì³½øÒñROߎvˆ·#à^OWÿ\«««oÐq,Pð ÚQˆPKž,çDfM>ôF‡d©¹þ¨€<­sçDÆx'€‘Õ׆…¾}èÕíœU9f§ ôÀ°ƒb¢C ¼0¶l,‚Zb$q»fØ"Ä•'Óëv©`œD¥š.sò¸Ò™‰–L¤F¼]>¾@Ëv?^®&r[/çòË•”TJø¨ÒöÙ„" #LT,Χ…6‡ /ãâ2möt{G{‚Ëlû9Ž.ó¦Ìq°±·s™îâÒ¦Å*FPBAeÂU Ü7#Œ¨„0âßé’’JIŸçÖõóˆÀj2àUžÓy& ùŠþ*GVB¹qÌ´ÙmÒu˜d1Çà°*¶EQÒåómëd{‡) 5¼ŠQ•4FíÐXhlžLçÁ…!H?Uû—¦¤%Úß ]I¥ô¿Q)÷åJ‰¸.™=` ¹^bø×%=#*±LD¼ *F5TÄïT#ÄpºÁ \S`»Ç{z $¦V²K„¨ÄVU·UÀ‡æ°»&'%öˆøwìQ‰="~3{FÙ6÷°Ó,°Í )rè´iâTà”èë}ª˜oé70=U‘c%FŽHVã¿ÅŒ«Pº²â"Ÿ¾¹ÈÝŠoÁ“cJ¤üh(1šDêÊ@(±©ÄŽ65@ÅZ•U"ýÔe’ãKÂý#)1¤$|×8Â(XjŸ‘)àÉœXcƒ/8ZãÎ wl¥kSbzI„¿#1%&•Dü¼ÄÚ ¢kŒ(±¸$’ mb 0¶&ÂÅÌCD8ý›t%FDV¦!œêJ§­&²!ÔâåÛatU‘$%6ŒDQ$¸*Ä—ÂÅ 0f¡&’®‘¡Äꑨª‘1…Ïêb—(±r$šJ Ôè‡ÅÅü®˜´KVÌ~e )ÒÛMÖ?,ð‰%p½-H:¬ýµ_"·¶U ý-«’«³|8 ,P‰U¼9¨F±â0N±L([ñé°,êB¹(O*6yÊÕR¬1sD.“Ä8JC)8:¡©l…FÄ£( ²èòÉûGmkM]iŠÍ&©8”Š’™D*•F¤1i(™‚"4&‘A ±©ò¦äít¹‰/¯>|nѣÚه–d½¥eÑ~qV–G±ØÑnL±VwÂÚ¯¯Ê px®Õ*ßb‘—ò]µ0WÒ–¢e,Å´b XAŸlE¯ ¢Š¥fØ”…ú÷½ñÿÙý„ÇCà‚¢ º¸pøL.„ÔWm~ÿÜ¢Páþ?žŒÇ“ðd²OÁã)ß÷ÿÿŸÙvÓ~V µýg›éÖsÀ5ü ‚Ô·ÙÄéãDŒ™Ó¬ÕZá»Ïܬ¦Ö÷9<{ï]½+ÀÖ¡bLÆØÕö>Ývò惙#x×EDÝ•kœUØ`Ó%½â×c/w{ýò8ý®-뛑=Q}åE:ðîCë¯ÂM¾mÔìs?Í Ov*X¹2w¸ÛÌ›ÍåÜŠ1œð³'{ÄÞ¯¨ïå÷¾¼¨ô]L½¹ÀÜ\ø\8º×On NåõÀ^Y·jÔ–±Å»›\]ù¾¬¥¹qlÀ«ÜçÏŸÏH™”=Ó~hïê›RÏœ1^t(>¦¬™¯‘Ì/ùAí¯'Ó~Œ<µ|ã€Ðq¦¦þv=4[ô|Ü‹ªgyzÒ»‹7æÔõùé§Ý£°?KÏ¢žîÀ®>„VïZ_ml`™}Ýx«Õº~æ vߪTWW×ÒÒºï[Ú é½÷þ½{)â »ªQ‹øÙ™Æ÷çX »æÔüš5ÉÓÓS ØÙå¸ÝXŠ««« ^foóȱó¼û•ÚšŸŸÿô©›ElГìíÛ·8·¤5}¸ËÙwOvþ°r÷‘#¡©‡†¦'&&.·HÛ½{â‘;ƒ^oݺõÚµé Àëgs÷ˆDGÇ!ƒ 9r¡£ãþ;îûöíë¦6nÜ8QJñ~5µ¿JJ4GŒ¸^^»Í–Í`” Òš{ªm‹Žfá46nÜ(IXæï_^^þæEÉ(MÍ€æ÷^yîþþþ¶¶¶nnOïqr0lذѣ‹oß>9qåõ$1.¦v ’XuàÀââ⦦¦={öÔWÜtrr*=pæ?ô¨ÔäóçcÇ=Úüh³}]}}¯^½ÒÞ=µWoÓôœXËØˆˆ9sæLv4˜0aݺu}úô™¢•ûò¥pîÜ¡ãŽ)ÒÆ÷P[qöìÙ &îµ ji|îGµ¡éÇÎ5ŒT[‘3×ÎncT”Óܹs-Šž®£UÕ½{w×›1aaaæï_½}ë‹¢MkÎÖ?Žr1š=±`ëúÚ Æê¡×!w¯†JYÄŸ1c†³³³X,‰ŽŸ9sfçNçÉ“˜»}ËkRöðò:MMÍæææÈ¿üšØl²y!ýh¬q,m|ÑýÖÝÍyöìÙŒ™3Ã5M{BÊΟ?¯¦fâôîÝ;µ)©©"Zô¡CúÇ]ØsUbPk Ú…Ü}ÓFô½º²{¯éëêÕŸÎÁC–½¿—'ôñÑí¹“*3vl/µÓ))‡Š–Æ7Õß´ Áo¾þ£ÚÝ{÷6OLÄ»÷šC?¶;99y÷î EEÎ:ƒŽº¤.[¶ðXÁ±Åg†©íž­g›šçFZ°`A¤{ùÕ°Û6ñKÎT{ðàÎõìÄn‹ ®Ïëa·–>}úÇÁƒºj.®êÅ¥-Å]cŒ¢ú¨Á7»UnIHH°Îõí¹Ívü½Iã7oÊÔícbjº~½]ŒÙ»º,ãÁÇ_¼à;–‘ÍH´Mͼ~ÝÆÖöÕë×w*%3MûmgãEE^™Þ›žž®­­=çÉÒÒR~¦ë Û¸1óqÝñã„ÃsÀ ŠÏøÔdo'Kk1Y|ùÂ… —.MÞn;~óuõ>}lâfÄíü€¶dÎé²²²ºcßWÔ4õ Ø#&ÓéàØ÷¬¬¬njî§ µ²®°ŠjÎ7æhÝèMjîÑ«—+‹õ‡ãasÿë©SPÛ2#n¶Þ"`™ïm³aÙôÒ*lê` Áƒ­ fcl‰ŒÔ´ ­6`À€‰z>5÷5‡ ó~QLï·Ž‰Ý¶mÛïYã¤VluQòàF=µ‰ŽŽ[lœBBBÚíbà4~X¹´"g—®]´ž‘%hû6n㻊ر4á…¦'?zßn¼éî­]TX˜]StçÎãÊÊëìÝÔ€”*++¯ÜcNœ¸bÊ{çü¡X–«ë‰ùñ;vŒ<Î8Z;(ÄZgÐ,[Û aa‘‘‘æ¿XÄØ9=Yz´©ßX `xšŠ–ÏOLÛ8zܳ^ýÇœÌró‡ñ0Ó–¯_¯,·¤$Œ‹[ÀYßgeÎг»kÂÛÙ¼°ú¨††4yåüêk~Kg˜Ï»¤/‘H²S,úнŒG~²„¶fÇíÛŽî,oJÓ› Å‹}._ZÏdú45–"ªÓÞ­«=v¾Å©ì ë‰ \äÄ»Jɉ°°+7ß²l¡ÌóŽ_sãIA>G&wW çÏu bÆUÏï³óFM^ܨ~ýލ©-k~þ¦ô©0Ò›5”K´<µ°(Oäp¬µñO*q_šwµåë3î²oÜôŒºkWIÜÌ´øÝc«ï§¾Ê:<·õÌ1–wþËËý»¼5eBÙ¡K=ëwn›í#é[ùº§ûÀŒIâ¬8ì‚þ£²%&°Î%å÷ôÙCÙVšš¦ÑWll0¢ïÚØ 1o…¢) —sVM¸åxAñiAÝÞÝçΕDNÈ\?|wa —WZÞâ¿îTý|ê”y–GƳ»yÉ?«©í¾uCD«ºå~*?7÷âý–š;¯¶»ry¼w½Ô.Ôß<¸uë˜ÞýZ fŒJ–”ÔÚÔ½Mü?göçÏ®jÒz~ã[˜Œ­A–â’ ‹Ž-æ ßÊÊi` S%T wd6÷QEEøÆs&ŒOJzùòåãºUóGŸ:uJlðômû:·FŒ}wm^ùÅ<\}uŸ‡ÀrL sªÁqëØIi¯^If¾›y´yvå¶íÛmf̨¦ÜÓ3dÃG½!ÖçöìYy³Â¹ôˆ9/0%%ek]âÄ`ÝÍ–+Ož<™””´víZçdþÑ%çvø¶˜ªíŽ‹ûEOïÚûžQ£NÔí{ñæðáÃfææ °ó&OþmáÑüJÉØå/»í¼Ëçr÷¿à[”RWj||~üþýû++9{—üú+|aݰP/ ¹{÷æºáúý‰t_wÙÆÎ.&&f|Lã9äòZàl¢¦¶cçNûhZ"¯ˆ†«³gÍÊœa2™ùñž"Ñ^ñû÷[2'£Ñéž)Å`ÀÜzr¡³sÕãÇé…™YYö±ÕOž<c€ÅéeKÀ˜¨c²ËH[ûòa—.Õ˜j´>}Ò9 ‡Å‹Í2ͱÒ|^xÊcéÒÝÇŽÝÌÈÐÕÖ.¿}ÈáŒwõÈѣϊ+ú%–mÎCÝ䔀ƆøxìÞ·/ÎÔv<üì™ûðáÃ'ûÕ=²càø¾dgÛ>RùãåË—ÝOí@"‘ž%÷Ϩ^Åúõê£3*yÒ¢OŸ>›››™™Yã¿ñäû–Æš ‘3Ê8ùúúú3âŽïß¿ZB;våaoÙ,¹c>ç#v˜ ðä¡Ó§}ïÿ2v ü´Ìv{ø“GEE37ø/[–Ľw©¼Ï..cwåee…êmܰáÍÂÔt¦AÊ"£SÝéð¶ àvªXò1áëÊ}±oZ¸pôA1‡ÛíhðsO+'§áwž=z¤“ËËñ]ùÃfž¯YŒµÖ¸«ŒÄÓ§NyÝÿEÞtíÔ’¸9x¾=WMš\‘K?dïÅ¥ÛnÝÊÍÝT¸Ò1‚b«.-ððð¸fø?¬\d”á¹èã3ßßßÝuô3#‰Á 4â¦f‰¯´{úö´Ú—û ¡'¥¢ò}ãç·É#ÕZkƒ(eQ4ûI2÷Þä’y"Ç÷xýú5àxûŸ—¥‡>Jɹ“Ôy玀ž©û—Ž/šÓÜ¿oßå ‘[·–Õ#ѱéiè×¯ß ˆÕ«\93à§Õ“î2õÙ?§2:|Ää=B¡ðå“;Á€Çã%?ïÛ»wãXË@àtq¡1Õ@WW·òGÚF`« ~ëåÇYQý5M¬Ï®É¹óöíéU«@ë×33P³5k Ž0wœ\¦……„\ÄÙDz?BGÇlÙ+7ý[»×rrœÊÁ0Ã"„8ƒ °áã7WVW—üõ׃çÏm @¿Ÿñ«g߬?D=Dó'Ü©ºÃwÜ÷̾Æ>qKY‹¬&hi1nì Ï9t{ÿà]%žö©Yrœ¾ëH]xzýû‡ƒ±Ü"¶¦ªjfEæ£ç·Âb‹çíËÕÑÕ=q¾?>íÍ}"‘Xoä—õÜrø%ÀKMišýAéùYÏ‹_fTˆßí÷è3¯8(gωzC †¨o·ÝÓ²eQ£¯Éâí«NÕeegK<=Öú%ñ˜ào·Þus\믔߆{”T—=¾è×_‘EºÏ†Hôú±Í²N³¶¶Æ¦õ¿28h·3™E±áá7çNÝ: ôÂÍ›‚œ’JK“ÁÎ^§AÝF>}7§÷™ƒþ+ƒ:›ÿ+Î Ë©ñæÿžØîü?Ìÿ‰„ïóÿÿÌÇv6#½äW"Æ_ºÎÈ@˜®"ŸeÈá!®¨ ÆKÄÕÓY\pAHWzƒñá°$n&<÷‹,a™¡tÍ&áe)l_bÏ(ƒ4¢Ð·]"áq¸~&][/&‡…`¦‰PV —I½ìt”ëJ8L;IÄA¸X1ŠQ‡mª ®.£[NoûFp°‘õü´»O—Ý–Þ‡§,å9xˆÈ•Ã7ÁàdÊ ·ýfqÄB.ˆ•ÆíX—£h…+@$&x¸¸³R†ðH³i—ä w gœ‰…ø`³ò-Œô`bz99m­3¸¦ÇÇ|a¸½á#o…!à²>Cdâö4¶Ë&B…(ÏJÊ¿}’A(…‚˜ˆ`c²ÛLW 2ÁhhÄIdkY<#i(vCX@ªÐƒ—ÿ‰\ˆLÆb>üƒ3¢ë·+ÆB™‘ô4 B8ð–ÀK…ù‘¼@>[;)°ÔN¶&noT¤\Mܾ,"ÙÅз£Øl¶*üãÏÒÿñF¸/sÞ¦FòsÍm¬~~ä?GÀ÷ ‡Ëø/–’‡§ f D’®Çûumü'¨JÇø?<™H¥~ÿ¿ÇÿýÆÿɵ#‹TÁÌAÙ(°ÖÌïÑ}ߣû¾G÷}îûŒîû|<Þ·ˆöû7F÷}c¾ä‡ºÄŸ©m*å²¾‡üý«Cþ:qÉ¿mˆŸØ‹ÇÖ®}ì¶Ð‹aˆH$"4/T‹…©j¤àçÝ›¿+¨n&´ptC1ÓfK­7<‡+Äz®£N¤¨Íž‡ *š%Ùdá‚ÆBY½fL µÐ†' ¼X(fÊòòìZöêlǘN+Ø›ÒÀH‘|yÈ>˜~`„²?i#u1ŽÐÍiÃÔÅ㸭”,—œg82Ò%’ðX2K¢±4¢Ôuý<åÄÎ)·¢2á‰;Á-%Pð!çÀö±x*K$(ižÔyó6|¶ cÃín|ÒEÊ.˜°+g—¬hÏ‹ÏÏÊku@%à¦}Äë\¾<~W¦ÆŠ<È›L­S±$*¸ÒHJH tβ‚®-w¤dv{¤J'–æ’RÖ)E€º¨L&Ô/4×a²2j@–Ï“B–ÊÀ¨\64%¤ˆÖ±‡5–R…(°6@€!pÚ"-†±±ÿ,­d,GÃð,HVB*])©L1G"gA"äDŠŒƒ•ƒÍgi$±2‹§“°šŒHc`ŸÀEfT? @CÎÒ²pC…¹¢Ù¤J1X@Ëè"ˤ8 /ý‡†Åmn˜¢f¹ý”O d-ðP8Ï`¡L®4XL•Ú ¿€O`äÁ ØQX üv#(òÀ%\¡bŒi }è0ÖCJÔ; øn éÜE6si×" …#Ay&“ÊbÈ$2‹cЈ4‚px “Hf1Ø * •ÓÔVÊ”²S4(l0}] gyZoùOÙ4´m°EøL7¸ä¡ J[¥Gú9À²B7\q¨_ÁQpTÇFx*‹€Ð˜8&ƒÍ&SITa1q- æà‚“t,—‡9AÙ|ÂßœŽ,1‰à3¡¹&*ð)‘“ñÙÎa¡bfW;–‘vÍ縃d¼YLÃ$0ŠŽ¶Ç.H=ŒC„1þ abLiáZ×qã (ªÕàí)ý,FÉd6ŽHF,<™ˆ#ИtO¥±ñ$<•Ì “èÔo‰QÚR£I%âYpÝGeâQ‰E™†ÐÙT*È`(©°†ÿ8:•s(nGŠ„v­kº‚P+ùv×G…Šðì*d¾žx›Æ$Ò¨(¥Rè@)Ø8&™H#â Â$Ñ(ßž*´õžÊ9T€ÁEãlù®*À´k]Ô˜*äŸhÀó@\R©]EÏ× •@ âˆx¥±qx<…H¡² 8 Ì`àAs(î["U…¶ R9|É? 'ådH8IOèæ'æÀGZ€1ƒ/ÛÑ—Mì€pQoTb#Á0ár‡8Öb!Z¤w½Gà%ÆðP‰›€%†…¸.êr1>l«XBó30(&åDbéW„!†DH¤Dð0¨Ç‹é¯BX e)hŸ*’®oƒ&Än/.\èàÃý%‘löù+ñôBe-ñ¹~p [N‰@„ù°+¦¨·ƒk«\ZRVJʦt¦ «r1²u±|•‹ë‡•Þè¼Ùƒ@@fEGÈv9ÜDÆÒ>ëøCYþ6†0>@®m[¿l‘€'­Ž-à1ÏQú´Céàößçž#ý ö/dûƒíð_ô‹NŒaÛ®Õá³¾ôüÙÊSþ"ügÎÿãñTÂÇñÿDíûù¿ÿÄù?¸15îý?^›D6…0bj)óÅLªmzét„—[ÇåúÏVïöɪ<ŠÅãX‰†ÅèªnzétXæ \U"f^Ä•Q#pí„•ˆ¥“±$< ŠHQu£0(xqU“†,k'$€I›T 4 ]àqK¤ ”´Êç‰Â“à–F¦a „ö{'ßÏ^ÿ[Ï£¾öGùûÆ_¹ýǨ”ì?™úÝþÿÿ³ÿ°ÿ¡*bóå7T;–¡#ƒ³£™2ßfªÔSm›ºA÷MöüBà2=W´Ó]b5hà¨ßmÈ?¬ÿˆH$ða |ø_õÔ'ÕõŸøIü‰ˆ'~×ÿÿOÏþ†ý_»|ýðhøÆÜsÒ§=u«.g×}’FzíØýëü´h÷›}çò&.p›Ìɼ´j€[ßÞ¿uW륶2݉ºxLoÆÁÍnÁëÇ×ÄF Ø 7XçÝ&ýÜ´ƒù¶ÏºA?iœ M¯{GôþÁüìâðµO ^4yMoõ¡ÝlÒBÍ'÷JÞ4yO‚é音…þQÔ—ô%  ›ãjä¦x¥‚,|KzÀ@½‹abŠ~ì|£õc·ï“±Ï¶)–°ÀÈHT-3|“Š™¿ÄMÛ†Á—¹Qì¨ÌÒÓû²½›/·ªÈøÙve`ù >—g#§’…ƒ£‚~²p7éRæÇ`ýʽOtÿÃóØ;Ïk·ïOø¤°b]µ³¸<%;®w–Eµí¿O”@ù>“B:‰s¢ÁM72nxá•mx¾€¢o±ˆ#b‰DðG¢b‰Te¡Lxêgõèk¶©$,ŒÇÒ‰t,JSuOTA‚”¾ŸÒ`%K~0— Ÿõ!±Ý1šNí¡$Hx,•¤B¡ª£×FÔëþ„ž‹J_ "?°#`@Oßi„ŠA:< ƒ(|vD"A˜nÀ3–¿(TìÆ4^§á{D:–Œ#cñtŠªñ{m‹g p&8¨¸ómmè£ÁQb/! GN|5WŒ‘>H9 ’#´U×¥d PŠk GSeŸ·³sûJ!ß™Öá°$¸C#cI$¥ÛÌŸ(¾Ô•õBÁTY:è8Y•Îf>¼JVÁ€7äó°d*] ~*§øiÓõµÇˆT‚íd•ÐNW- MU“ ~‘8²Ô6áˆT°MøN‰ƒÿÈpé÷ñ¸«"•íjèœF<Óh$•âŠÒ®>Û$ù±B&Å”^ºùøÅPj*.íI:‰®BOâiJ럣Àãò.„FJчò(ÔŽï?)úñ¬àC°hû©Ò€Ñ¿uôZ~ò[|– $Nr7Cvâ¯}ÚçÏ98Eüµ‡„ÿñ~ë81“öZ»Ù™ò_*žDC *FfXd…ˆÇ¡l ƒ@fiòß‹Nû†Q;Ï’µU ÛUè"/ÄG}¤U=•¦oòhL*Je’8‹N'à¡ðŽEdÓ™ðý¾í±¤–® `¥g—c冈0\„r±˜®´Í¤³0æQP*ƒÂÄÃø„ÈÄSȃJ@XÌŽmË d•è+9¹ßµþîR0 °¥øh@ܹsß*]Öþa-ªòï*|¿&ì„I á¨d ¡²iL€”ÆbÓXÀ_£³q( Åÿ[UE9ÝT…-BÑ®ëÊßÁ«jpíšÌ»ש€Sà€b:Œðª¼í®ãµ«ú¼²è8Ç$“Il*›É¤àéx›E&±Hà;-}7õ¿¯Êéþ€W|1ö¿®]yWàjÃgФóc±<ÜD¾L `áÅ—´…¡|ÍÊIë:š»Š°¯A3…J%Óql Ÿ!A&X4“’O£ÒèÿV4+§ûš½øÿ2Q< ó²aQ郪#Ý–•}›W Ã+„ƒÆCØ›ä¬rÔT笪Ô>ga­LÆP¡1äHF0OSŠ1dÑn#–Ã=©&¼¸n?±gÀ^ƒËX¬Ú:Ta±­®ïÉZŽ[îɶì'ÊÚö¾Iª.‡¦:UW¥´ùŒCGÀ9!™¶”*¨°Þ#H`.ã5~Êàž¤êƒŠ>YG.7~ª¬ÄütõG M›@e€Ô1ª‘Ù\›.,8¾)BaK€„ J©#‚‹hwËáž4ÎŽ¤¯ÏJÓÕ–¢¾94„'ÞÚ±‹c•ã§ÆFPEòŸ‡Õ¼ÅÅ-K‰°š-(àÜA eÀRãÝß,‡{’Õ†…èOÍN!Dçz˜UiœL¥®ÏÁ%öo˱R#„§"/Í£™°Áœd:Õ&ô ÈãÚTP‡Š6„§îI¾ÍcÎÎp7¿4¶§ÒbÔg±˜Åá±r´Ô;ªH÷sjXšrf!’C¯ˆ =¨a©4EÑš¡åpOzV~¬Ý3ÙW~ÞÉLr=¾4~£ÒZÔÚXÎáxÙÎr9 55*ÒØ<ôÌCß j°ÄD c¬K½¡áíLêd ˜Ô±Òs9Ü“:ã è¹%W[…úÊb‚œãWåh©Î\U ~æRy îcJ ï®aˆ¹Æ«„‰ö ²îæ’Ýî \œnTqôvÖ*ݱ®¶¸•ú“å( áÛ1²hÈJ• <Ê×§ºð¨ÊÐsíá«Âæeõ X§)£¥Ph °*Ú=üR¸„G·g/¨ô¨¶º•zŒ8mÄÇ|â£|jœ—Tdé¹ÎK$fÜ{ H¥˜㸒ÄÚpŒŽ"ÊE{^R ÷øÈ£éçüÖ³í˜R ªa¿R"b˜saÍ'¾@'#¥h©q2R‘Ð犡,„äÒÔH¦%`Ds?ªfP;Ãaí¹z9Ü“ÞrNYg+â‡}\Ô<…œâ™uµ%¯ïšçÀ$ÅÜ“¢´Ô8:% †¬îIض§¶¢Ê!­´R‘àçj« srë3ÒññLÄ€¬´‰Vc•Ã}s=Vûg}ŽqZ©û3±YµÅŸ—Íö²íÁÉIÁjƒ¥˜à±øÕi9Òªs|U.œ‡ã½xQÈJ"¤’Ò)`xòò†K¼à‰•ãËá>†ãÏ"¾93±ðxµå>ÏÌ€Áæ'¸û¨Ãœr«óSUŸ«&$¡É%SÈ$Œ·‹5á^qƒxsÊá>†ŸÎ>ù%Þª¶ô'Â[yÒMÁ]Å:”òW95ª4T¤ù¹ZÈÆ‘$Òjd‘7ˆ Ö\û+ǤH6 §îIþ*¼‹óµ+{½˜TU[âú|T@˜åeEzÊ¡©Î0U‰x®¼5 ¼ûM !QK®µ¿µæ©c„‚hóÖJáž Úîtλ„)•æÅUZÞ9Á=, ”WŠ•)qi®ðo),UX­Œ#Àx[U ‡…#ÜBNm´áߥpO%…įÓáÚ|¨¥Äµ:r'y–µG—òÅð2–À*Ý®´<•£ÞúoÕåðåg²ºÅ/N w)vjÄpWdˆy˜@hÊ1¤ˆòÔ*L„˜(J LŽvK¤î)yFÌw}Œû®±ßõ™ù¯Ú ÕSz ΄å(ªÎ„Uc.³CͬbÔ+Y•BÆgBÏíÆû•*Új|åpÅíóXow2}†(Åø¥Vf¥Õ¨hgò0™Œa·…00KRÃÀ¬Hòó˜3”Ã=½óú«ˆL ãŽBS&ÒgÓbÕVhž ú\™M’ŒA?اŸ Ì*…®F`VEšœëäK:ª5!ÒùK+ˆ0€Ic•Õžë4%Ñž|•Â=¦RN¿„Oé©S%´W¯n’¹Ùkö”ÃRãp©"YUm ryÔéÄØ™µúE‹žáEsÓcš¤¬åY“¬Ù¢•fÖiç=QŽmiZSÔEAÓÝíNh¸bvn­æ×7WüåMc¼6ïîçL‘¤€ä¡öÔÜîe;ŸË<îÃsa2¦†;ôÞдxë]/xÚ};zíVè¿X9êÖh{=ið²–ÇÅz ÈQð~RÚ+z²ãÏIBI…2§’#e •œIâsJ;‡¯ÜòȹÿvÀàÉVš’ÚHJª(²`,…“T Å ÔùÈcËR€ÚŸž(R!€2’ˆÅb'‰I©·É¹J'ÀÈ &g­œ³.Oõ¹?ZOÎÞžÌsÄyâ:26´ R±Jí6õ +`þuª ÛsÌ&V/ßÛØË]ÖVö47GB<\©Îs›4VIs€§ÎíŒÂÌ+h*2Î*)¡UŠ ÐõÀx¸þæÖÆý{¯È0Ñ€ 1ЩÀœaë<=) 8GXÿÝ8$ïnÜ[»ÿnUËd†ÈX,“Áæì95MFbæZ¹‰QGwζïÝè‰ãôÄ«“šÁûÒ¶kÉ'›–Ýá+8\¼è‹V¢«0C0Øø\N6Ú‰4&+¶7³Pñ¾oGÇûhÚ (r6Y6CÁ†hdÙD‘F¤Õi W±¤‘®g#]1 ž6Æ8îhC5?º«„¯Šmâ¯^«j¢Íî›X+‚´©6·T[€h·F¨ÍÀpzâ/'¨º~z³¿Œˆ.Wшè<.¦‘Ìu$sÒèJ«>ù­ïç½6eóè+Ól;žLýÉÂd¬6Z=³´ÙH=r#õôýƒê( Œå€åN ÇÚY"Sæ}>‘¢µÛö¯ªîˆÌP³/-7*æÓdŸøAödôúìgÍ£4s~NâO¢Ähã8Ö>“!vÌ<ðò–¤æI÷9·Ûªè¼ªìE§óŠ‚æ‹Aóe¦ÑwçTßÍX´QsuÔ\6wåÑ|Q›ñnw¹(4iÊŒ Öû±ÎxZ@•â¹b[ßܼ¿ùøÕµÇV7WßYßZß|XîÐÏ¿2«—zŽ'ýÕy\òbb†²×Qƒ"æ QªÔ ˜|cOœ_{b1{46Ng°¾cfÎDÏíÆÒYdKg¾æ-'gìœ$3”——MÒÞ)ŠÎ7æNDæNQü¿±vίµ3[§‡Æº¨c]? È>Þ¶hŒ„Ó7æêOsr6 ‚1SžFyý¶¸L„¦jL<#2n.DÝ›º! ~Eh¦£"¯aÓ”°Y¤wk8HKA¥0^]s¯ÂCð*ÃØ[F¦´›ø‡W£°«Ãž-´³ºÛÎ~cwüü¹Ù€?—AMÈÛHÒ H¹0ÞñÎhN!àÀI餃À;i’Å&éÛ®ÓÈú¸|›°&‹,õü½g²(e­BUãf?rna›ÓD#nåŽj&lšRÌtª·ôA~í Mu ÈÄm¡¼= ZP;øÐ˜Øç5Æ¥û#±ïÙT" 4á*¡ÄÆ©³ µÑÈÄ~ŸÔÅG,ŒÐ¿3,ô6~ݘÕ'vÌo€Ö¢êë Êc#tGB7Œ#I¤ÕÈ"É´Áškå˜)¢±mb™²Ø=ÿA]ÅJ/²? Õ |¢(³èr}Hc\ÝN>ú°ßÌãþ¯BT7‚þ@ÐÏÐÔ;&A_td?Gr>ŸÐ™‹y×êÈ'–ϲö‚._,*èY[÷ì³Ö‚ýŽ7¾ NîŽÔZ³§å—w /,ëÞõÙ5v.6ª†^å [õGc¬rQÚŽxÀ6’*çékJaXãG‡N:ÁŒ°“Sž*G93*I± [êDØ LPJ\ÄvŒÞ³ÒtÚ­ýÆÛŒ#lj¸‹ìŽh*ú–—ZÏK= Òæ„çPÄ,PÒYhR‰ÂØ«$íï@­yê˜36Ðé4[`«1¬óB+•@§*9ª$§ËÆŸ9:S´\™–æ'— :ÿè35ºaœ[–a5ZPÀ¹ƒ@ Ê€¥†›Èf¾[Ð(̳T˜e^þ$Z¶üûë¡f'ÿåâêÌœTyîtfA—ë5­I¸åØPƒ%&c]êEI1u!$º"DÏek·Q%'¯Jžw2Sø|5YÚäÔˆûs'î”Ù”ø[ˆ&òP¯~CZbópaS,PŠS7~¾ôÆ£­­aë£B‰³@|Î*m­6Ê*ç])­³Æñq ÖV·Ö£©pöµ–"8nŒ¥׉Ba "˜yŒ0(¬P¦RX aj9"ãPl­ÿÚÖ+A˜ÔyÖ0"Ôž"þO,•J „ˆ GñonÝ¿sçîz”mÉfÚS˜ûÉ1Á‰¥?)‚À:ªRbOILi&m»wZ6p½}ƒÚ»M½ñsu‚2æÝ,Œ‡ðfφ#x™.›Ì¸éÞÚò&ªÛmö¡ÎŸì5T«ßµ:s™5ÅÞVÌyEÑ'ÙsÛ.ÒI—OÉɘ؄í¶Í]|æL99dh–㠯ź-OÌÇ(X™ÔKyË·=‘TP̽zä^+¼à×9±=öbÓeOÂîLõs ¢BÅ”0ê‹×¶š2ªQ …¦«"ҹݞíÚvS+kñ´Ö(ý  ΠŠbmu-›ýµóÖ[3þëûÝd¯³Û2I+{jÅx È<õ·é¼~û”ÏÔŸC 4!Ø1§½A"Â,ÁûëÔ!‘qâQyN “‘Œ¹Vn`ÔќÑaö€+=Óîz;Ͼá~“§ûr+‡éµîF¸æˆ}$G°ÆÖû8ïDi 9‚ÌC%3 YLr¤Ÿñ9h£Iÿ|1ËÙ²­V§r¼d²-û‰²¶ æÔˆÑº¦÷€$FóQŽ©ìm[?N/Ù³C‡JùíΩIã1YìÉàá°„ÑwH—&&7dzö“Ä7þð(1x@'‘ wg-TÀ)ˆ¸”Þ>dH‡dF'Rb‰t&2áÞ”Žîèhñ*»)þûŠ‹ÿnBpS¯ì˜“žZm0¥  Ó˜kGL7E"ãí¡¹xr¸©ÙÔˆ<™Ë¤°TaA´2Žãma%Žp 9µ‘ÉܦtØ«+bµ°…ölØ)–븦^XS/¬©ÖÔ ùz†0Ž€sB2m)UPaoyH)ÀQuEî7õÂ";QYÌjaG©dýQá°Æá{…§)²7V¡-Š#•hê© ãÙï‡wx”ºÝV˜p;ѲÕòOº^çYñÓüʼnéeÏc?Š¡–¦œYˆ$ÇÐRÇ(‚PÃR hŠXdj¡Ie•{€&¡}$&rÙ›]ÀÅËŸõŠ™uý;“«aGûúµ<m2x)™L]J¦t—’«ùvÁôsÃÛéq:ýUHožxož×Y8 WÇ‘ú¦×Jê§Ó/(’´OHY4yðM|“ßäÁ7yð§öNó"×QˆQŽàÔp¬Ã¤S9ã""3z·Ý¾×µ×ì¾O¸·ãçcÐìÑ$ïêF(’Ìqí…ˆå^u€pÀb Ç«ºžµ/ËÜ-Èèµ7<¼æÆ‰ûž¨n ¾+¾ 7û;²ȨúpuÃuþU Ç fÚòù®ÜÙ¾2œ”¿‘ÿ]¼Ò;oY?i[kÂfD EåóÌî²ï_Ëßç×x·5 §V6ö.Û òè(œ™¬÷Ø8–"…¼ðô’,cÈiÆ%á Iœ£ñÊ­V¦è¹¹ÒÊnÍ:ÊÑ+ð>~Y^<=‡sž lÛ“þNžº]<#ClïìtieeoooÙt^ì?±íåNïÉJÖ6öÅ`´âÙ³'SoMú=í11øU·ýäJ"[;£;WVrŸÀe¾ A2„ïæJÀõˆ.TÇì‡ÃP·._j>èsÀ7d7Ë©mžȜ—ogmÝZ~fÈœcü!þ…Œ€üoXü]|0¸S „’ô’ÿÒÊ—’…Bä`*£ä#½ØôÊKÓ4åB"FIÊ™FÌÛ«a£¹xü?¼á¿ëÉÞ~. ŒíäW2'Êÿ¦ˆñ¿¿Ÿàkøÿ>¿õàÞO]þ© õ?µñÖÚæ¥K[ñןÿÄÇýÿÿõíÿù¬ÿçãêí;k—þ/ü÷Õ¿øÚï]ò+³±¶ºõâ+ßÿÇý_ÿà{ÿË~ð·uõ«ð™$ùðO¾ø­>û…_lïKÛŸ[zíío~ã»ýõo|ÿ§çßžÜÿû•Ÿø…?ûÏ?Ⱦõ•¯ýÇ—ÿô_¾ô¡ºþ+øÃ¿ùC¿ýGWÿýÒǾó_ÿý…þëKè;ÿüIôÑöÿòýo¿ÿÍï~´ûù?þý¿‘ßîÿÓß}´ù‰×~ä‹ù§õ?û£OïüòZø˜O~f%¿øù»û~þí[?ùå?ÿñOûÏï.]ýúÏ\úô¯¾óÿì½ •[÷?®YT!C•$Ùϑ)sƒŒ™³Ð ÌTŠCIƒ„2+B¥2‡’yˆñ¿Ÿƒæ{Ó½ï÷ýÞïÿwÏûÞœa?{¯½ögMûY{=ÃÝ5Çe܇õ¥Væ…ð‡ ´‚÷1KOx{—;ûáñe†R‹ë3™KÂ%¼nb-¯ðg:´–9×í·X*(ˆä åŒÙÆ¢–Õ……… Šˆ0577sa±‡‰‹ˆàíøD*¾â5=ÆxO·­ÛG–MHÍåüj?__hÌ[÷²³¥¯Þ?å$ÖÒÚšìСuxêÓ{['§"ÿµ[cß¿ˆ<~#ÊíéBÕӈɗ¦q,l‚€bhŽäÍOŸ>½ã9é6ÑcãU»3Ô¶å‘ß¡p‘Hi×5I¹c"EÁ|7o ߬<Ôñ)Úkj¸ŒKÊIÔs´yYÇÀ™3k”TUIõév.`@V>¾•©ûƒÂÝ–3À­ëA Bå®ç`hiiü9zù2,=+‹ÔöìÞkJš†Ãq–––ÚÚÛŸq”[çvAWMm…±[Ǧ@>)ŽxÝ…;ýR> ¾õö^ü¨¸˜ç’=Œ‡ZñJ»ÜѺTkuC=Ò_Cö“’[âÍ›ŒT·kiiÒW|#Ú“‰¡½>ƒ–`м5, %e˜Ù”x@ªÃiï^V ãÀüüü]!z U.¸rå ÞmH0Èn¸Û@Ô(ýåÁo¸êââòfìcWÿÈÈ2ꫵØuëÖ12220Ä^»öðùó=nêMœúÎÎ#»zŒóóë»f Z­/…†öL B#Öòf…§­í‡Og"ƯH™r½ámô9ÀÎÁÑÒq#ZèÚ ºç’lüC¬‘‘óòC}Mü6y“تĆV†Ë–-[Ág›b[º‚K³#CCn²"¥ȿĮÀHèùúÞbba)BŸì2@¼š&gײxáÂ…±%!å¯^%›• Æ]¬zóðøž©cV+‡ËY,jRÌÙ¬³ýXä&^ÆÜ%/—––¾ã>b°ÞÇ×W¤ffé6nÜxðcgåã'OFJ9ß±kU‰OП†w_ãÿ¸'Aw Å&7Ñ¿H%ˆ›ÒcëëûX®³\ÞÓ{yÛ¥gÝwC]9€C îúÜñ©ìªª!b[kÍn¹Î:¸U-Zz¼û^{ÙUŸÔ`|˜›)$%r¨ZŽeàMÙ»AÁø7àºydùÑ<ÚFr zéùiÓZî #ññlûSlۂʲ3ØŒð<<ºõN‰²±ñr{û]§"xGDës ÝGüOG&K²¡eOØëYøìPR¢B†ÎÈõ}Û·YR%ß±2G_\6â()¹åM÷í#‹.¢÷>(¼Ö’°pÏEüe+ÃM¼Ï¦ö3^¾£ “3Y„颭-£œRµoù«c͉l½'Np³³›½ÌÎØ`d$ÞW¹°£ƒ¢·˜‰éé­åoß3ßÔæÿïY̰lÙvܾ« ¬›r™ù£ë¨Aï!=Óß·¸¤¤¤-ÙºP .“M_¬5¸û(¦ØŽÆRTÇpsª0+Vér¬ §·hûvȽWnî`¸{ozQê¶‚vÒö`[ËUªÅš"†ùeÉ›Î> Óá?züx|…µu¯üMíå, ¸½½­ œ{»YbûWȇ …,bðVtuú´7æ¶è²wï$…·ÆÞ(c—­°»ˆí n{¾¬)O/Ø?>ÊB= ÍÝ šÂ«—‘_sïÆúÎQÌ:ÙÃé5u ôE.ør§TÆ{=ô_+wåöíú›=çv©¢mz½×n:8Úoív? D£ÀíIºSϪ3¡6˜Xë¦Òð\}Ü¡·Œ€3öÒ£\ºß>.$ã·]ì[±SWW<Ê%FpùDÏ}¯uY×jjKK¶æŸG”¥ÛoÚçöì¡ü‚kå (î¸Y ÂC\ZûlZGÈ]l›ÏØ;É^Ä9ËGË.s^–7íɧ#·jLV%`ƒoˆ†*èöÞ¢]×ms¶>>=2M½j€ŒæÛ¡ž{bÁ"Ùġק7¬fK&GqÙUUUÍ7^T(»yzD.Wà»’þN‘sÜñº“»X€áÖväÁ9=J·Óˆ¡½Çâ=¶-1-mî9œžŽVyÕó2>\NAabàm(Ÿè‡Z6ÖÓ5€‚ãgÏóIOgT$ÔRm’“™72ân»±íàƒ#°ÅËÆ¯˜¾6«xÌÚUÅ—ÿáÝ2‘´Ãï‰éðI…ùö÷t‹¶¿ñmKoÎêk»Áµ®ë•†—’ƒC`Å}• ^ÖuŸVpˆóN·ÈðCb®hkßS˱ð$ÔKõ¶í‚û`MÜy¹i‹ØëT½Ì@µ+ i–´:&Ç»’,êlDÚÙÅíØõôØñã ,H`]Óâóæ ÜP#´ê³5<¬¬Öößeqîeóö LCP\|­ŸîŠö¶Ë»9ù½O.%€‰ä„3È>̺Aw¡Ëè=±ý#½k‰ ™¯s¤V9÷ݺé§)Â×ÜÓ°p|ø¹bWU¢ã¶“·cü±7š†Î‡¼Ø€§µñsHµñ{™×Õ‹›Ð±»þ¤ðbjjä}K@Îeí‹7àG÷8ÙÞÎ¥¤<¹ð„ÂÑ»wí…Ù™6nœ`ÙŸzè–s^ÝýAVþè“ééÚ ¯ÁdeW^»ö®È2øÔj/ÀiXBdÚ˜OëšZÍj°ÌëÌcÇÖDÈMs¯ß£di)¸f òÍ›ËÛ«YΜá%+eïË_eu*ÑÔ¿yò’!JIypq#»Øõ¬™x°¼Ûž«6w×3’Še[«çp´ë®Ã±ä憟dlPM¼5Á賓·¡n÷ë¼É0ÿÖê+))ÙZ _¥'¯¹ª:òÀkÚ}½U]Z¾¡MÐÚ‹èºc—›ïZ à¬ÄïúA1tX/®btrdEdzg¯ôN‡ë­p¡¶×ÜËqpRq¯ öõí„Öë̲s»‚î™&í|ò´/Ït;Ðàº)yÁ,¼£Â@h÷ï;ì“M5žà_ \§óó×€( qx¸F@˜ýÁÙ-WÎos\mt ’u}îªê×.߾ͼ xKËs§=#7ÇótEO×$†èÄ3\×ÞF|zVSÔXº(¦XÎmˆIH}"o$>a¹ð¹` à¸ëÖÜ¡>—ëzÅÈht‚Ù‡Tq³—*™u¥ŒñðÇÊ-é™ÛHÏÎG±Tê\Xê5åÊp‰§ ­ÊpƒTÞ‹h•êDYH3ìðåwûÈtsðõAÁ«ˆÕikǪ((J¼Q j©ˆ‹ƒÔ ãÊ•g¦ %ún±ë}mÇTV†ÐŒ«pùX9uõ¾c×ò—ŸÍ™ —-ltà@Ó´J IU# èZ£Cß Ù”³bôp¼îsÛæü5÷7ï õoAаfhÈ`7w×x]VXÖg ¥Ås•ÔÿgZŠk{Îã_vÕ]}ÝGDZQز¿mÛŽAª‚âñ—÷m`õõ ¤´Ý![`y|˜³÷õk%^™‹¾¯n컬¾óÉ.[ÛÂp‰$ŽªUk4÷ï>Õr‡Xòø…D‘EÒ âp·À¹Üó]ñM jò”ZÖùI_:—T|fõúÜÒ7Ø©.­‰ìôïÜÜèf±¸í¿n+6\”Xy+z`r„³ÿ[pàv°¬%ù‚¢®îzqc5U#£[ºšWYÍš{¦ úg äå£"pŠJC¶æx6Ü¢¿˜¿úÚòáê”==“Ñ{·¡ÑŒÇ—É¢éD§ì,yzN®¹·AÁÛgYkÂý¨ÇrccV{ZÀË4«x7?Zsþ` KÛ µ€Isqa”DÇ·d¸ ø"¥îÇ9F=®¹çÕª± †Å²>|èé2=¹·½²$ϘˆèŒáliÑŠ-yî°»,3uk¦³M±+JIɱp²ó…‰e»WÄ$"\o1 ‹ÞP/ìÀRj‡+Ì,hw“×~¯lþê¤&àã2¹JC£ÏŸ’ÂÛéá;1A<^‡±ê ”›å¿dt!.¾¤$œ¨Q=Vnno9Þ âõƒ©NúŽZŽÏ’I;Ó“Vï¹´íÊîp,eøSg))Ü]§t×A»$ÁÖwc&óÛÚªVhH—_ä9صÉ,ug Pð§¢<9IECòOl°Ä>Y˜EV³é½€õpÕ Hv¬Ý}ãFòA .ï#MYW¿¬­%È \QÛ‚bb†"= bÛË’LTS¢ü|¹a#'›iòx_¦7ÎþeJðcd–®¸‰¿Wžp)©æiËþ3«"^ÄO¥–d#Ý í/6Ô^©¼usGǸøöñÐõu¹“¶<’-'­¥d^³Ë)6c’Ìã,zúôiN^•ZaÍ:Aê6Çwn*)U=‚Xß[•p8BÖ£ò¦N÷»`ív‡÷=®ªÞc¢VΪ–“áHÏfCÉ3™¯¢–¦u3 ‘½‚‚‚‹™9VÜ¿ ¸ª-ö@ñ)!ÀðM›(•/Ζ„,>t>è;ðÆBãñ®þ€•$¢Ä²äd¿ÑÑÖÉt[¾Ò¯–€xÆ2G{i<Ëð©l³saa¤¾Fš~ƇÍõé§ûú®¾ê/ôØÀÜ\Rü@¦ÀÚtH™HJŠ -Ú6ŠE$·Ú1ß[Ãú„hËòçuº{g쌌˜d?½]?øD`ÓS‰²6+‡Ïf›]ØŸXdàTÄᮩý¨-xÇN0K8³…0“¬ #·íM"Ù}2ÏD†ÓÚºk,ôs'–ñJéî ÉÉ™å|$µà.£»šqJ ó‰DƒAf€e„«½×³ ƒ ûH:‘¸ÐS§(]K=ã6²êæ}û%%MÜØ*.^Ø€ÍóÏÉ8é°hïÞ¼ƒM¹.ÒÏò7º¾7¸”˜NY5‘m¶–#ìÍà‹mc0^>>8­í ÚäöaÓ¥]"ry\æx74«Ýˆ‡‡0>}èÐC;n%“"[ÆÇ¿¾t©W¤WÆ=­ >Cá`B n…1çB¯æcâmV¼.?ÅüxÏ"ž £S1‚`8{M…ù5v  žž)ðåÔ/â6¼wµP" Rƒ"é&ó£Û÷ŽŽÕV‰ ·…={XòÃƒÏ :ßžp¹‹š[IMr.«O?'~PØèŒI 6ÝÒÙ'ý‰¼¬æ6ÑÆh™‚ÎʼƒïK_™½jcõ4P.P7Nq­yð JÿÎåf¡{E™Rü`1Ê÷£À¿À^%am®_ñ(Z}ºî*p†Ç}ac=E»cÝ@°lò\¸~}¢oà[ŠÂ~5ãõÀ[Ë¿=åÛ——wd½L-±1›°’Úûª@ r œ¦˜ó ÊÝPö"Â|ÉGŸ0ŸN@¥øç8³êk\°r, ¿!ë„~Þk#믛p‘86ôDÙ¹·?Ùí.Né4ë¬QÞtÍåÔ‚3k­XW[¹¶×ûtä#B{¸¯ZT/¤Klf{-Þï± Ätnw“ÂÆˆÞ†­ÂÄ’GGò¼”[‹v©E—ÞÒƒ»–õu×äÝ9üi/pm!ñ1ær23í¹CŽï̾ðèÑ%[‡›)ÆÚM¹GmiÔM¿ž WCEÐ+Ó®þBÎâÕ||‹®•³¢¨èîÒß^s`bÆ •íz˜ì{qÅÇoá³ÉÝÀÀ5˜àI”·ÜçÞSØra-*ÒVºx‰«}ã ÖÊ“O˜÷zÄ›¯ug`\1”R¢Óý|ç5-RW•þ÷nЧý mÀ‘Ä6P¦Ú´A@`ÑUÇb©>é€#GªªV•X³©«ÏÈ[Í.IW>n{c$_jƾ¢ W‰6êÊʇº¿÷DÌAèJìyI>þ$ÀÜ{µ¯ß'6Èî¼+¹ÀÈÜ<ÒȬ質·jÕó^íHÜÕ„‹¯~Ït0?œÓ¨£À õßVõR/w£¼Ü¾»v­ÏÚ­ž žž¬¿A4Ÿü†Èê§—üŸìn^ËøˆÉƒ»”e§NÛq²² ÿ?=½ÿ|oö…«ªl§ÃÂÄžO¾ 3í­NÚœéC€û7=fpÓ7*lœØµ»$Ù¹Oò¶þ@åjVÖc÷Ý8 ³öK¡kˆ>Øâ…¶nÝ:4ãZSÓ¡ç—Ì…™û×`‚©w‹mxrX¯Ä‹!]Õ}zÖ(ââz–Ò¥SÙÍÞ/L}±þ‡˜K©G9Ƕ²ÒKeQ͉™.TŃþƒÈ¥zÉ÷E­Êïô€¡ð­(úZ…ßÛ €=éþ“/Õý§Þ†òÛv”¯ô>áXœÕì퓪xOJÍXôê;‹£½Jï6¤]Ï6:þö­áHõÅãöé>m—T›½Žc·À>°Ûßét§†*føçPt ´î… üÔ;3±O(æœj 錑<„Úy—ÁçGÔªNjVùD‘÷e—­êt«Vó"}PX¹ÏÉizÄ‘áªÕ<—|)%íŸÐâ‹õCÎgW„tw/´|m»øv’ÉÙYïY¤»Dîkæ]׎§*^ù0!!Ùsj¾/$Q·]ëÞ% aôa{†âÍ€×—'ÇÔu¸6+—††9¶ª¬Š‰ñ,*¼Qvå¸TÛ3×¥­E2Ë!]˜ù ÞÞã᯵ u°¿}·öaeå:·”ÐÒüA1Áx  ‡w:¯ñ.T¡¹÷RÖŽ«½½³>Bfœ³êö§%y–;>Ùß›EhµùA-ƒW3¾½DÅý±ú+×knàßÜÛ`P¯¸ôVé%I;Áu8ë·@(˜é8˜aÂp¹¥{EüsÖJ! 2ºNO†CÇR@óÃ\—Î-rÙƒ¥ŒC}üäž;Ü¢BUçλ°mÕðþJ_rmK‰O-dëà ùìV(| k>9îì}ßy·…Oí£ {¶­zº‡wvÕÜãk+å{*aŽ=ò$À*Ýa ÛÞ½r»wN~Öš1Û~¢çO^ò{TÏ“ãNkÝ{oP§­uç 8ÌlQ5qÌ&OÆ'˜Oá57^OR<Ÿý:ìžé4´5`Û­/ˆ~Èy+» º÷‰ÕŠïˤ& J$qõö>ýHì}yÏÔ]7iã-ˆCY€CÒfIMƒè‰ICRÕm—©O7ô#‹‹à®É{ í |2õȨ̀îN;ÜÏö¹ÿ-¿}°ÍèÍÙÇŒjÆ* SâHîÉ?%ýÑZÊ!~Kªù #õ…'7›Ð³‰§ðmaZa‘±£Üc´5¤ RdÊ*ùMÑ©µWo R×°Ùä—•É_ıײ¦mUÏj¯¬©äÊÔ.)zHP`}Æ>à9n­Jîï·U&o¬N>µHH"MƒñèùórÉ–5 Œ2ÎøÝ¹ÓëÒ—whcÝóòñ±»w?Ø3‡FúGšP—Ë´E£ ¦×‰½jš§6{eoøüèÿº¤î+ó§ºÞÜjië9½1ûœE~äçz05ÉÙ?P² Ën_MUÜ´ýß/{ÊMØÈˆÛP } ðîƒÎñdiÄŒÇÖ‹®KÙ¨¸o:®ÕqDüÀáØÏ&Ç•âu÷$ð‰œÎ@¸^ÉŒÏô÷8|˜ûi ƨиM[“fThͧàê*)¤Ñ"I‹"lâ½@ú è…™l <¼41q"¯æ¥ùûS‡^”¶_Â0E’—ÝÚ,‘œœÌ…$3‚xâöZöšSŸß“Þ==Çð,ÏòØæ;‡*EvŸÔp|ó¶bAˆ4r͉ï÷껬âÞãW§-b×þRÀûäÉý±“iVu‚6Z•(¿º®ÁÀÀÄüÂ@rMׇ•ÝÜ2S \„YJý‹¶Ç9< \wAyÊ`ŒT:3³×s°1ÐIàý­Ó»Â«žh~|Kémðõõ}ÐÛ•Hò=·U/Fg«œôä}³ß±ý–zy± uU³NŽ-‰±i ¶uN2”,¸Œ½qƒôðØjpÄún­ a kv@¹º{÷®32ê´Qßíâ‚wê©=š¤$i ý¦u¼*ì •Žv]¯›p,ÇÈÖ¶ÏX *A*PÌXv—ÂÆQË&ר¢GEB»LMííµËíׯH D¼Ø‘¦îõ(Áß«í òø±Ùɘ˜4*)ŸóCnag Ø,fýö¡ñt.Å”ó`ÁÒ0‰Í­ç~¼<­dWúHfye|\|cµû°h²—’R¬Ï%CÔáþ‡ÂÀ:{))OŽ4M³LMöm˺@ž‘œÁ׌½Œ åÑ`þ#¿µ¦±ñ¥—jînâP`ì(ï‡6{ùޤYHºj?Ÿ}Jžé„ǤÂN%rRmйŸ†ìòâɰmÛ–2st?Êtô¹sð¡m we$3ïù¨(1¸›Kàú†E §¢MGGÑqÂ/zL/ëÒWðƒPKPPª<Íjëá;ñ@ to.uÃFñETܹWs_memóiµôÌm»O¸0\þÊpAû§ÆÆ¬F"Ë®ªJ™7®¨¶Ù°»µtxWQ^ÞøuºRüÀS%íŠç¥]Ù€2½í•ôð˜õôï YÚ:fúü–¬M[W’©Ð?úMK9WCæ§ú¦´–nµŽœb)ì­òÍl° XÎÝ)æ·RRТÆÙ\†÷­hÝÿáñû÷qm¥‘--ÄÑññE ÙÙÙ§.^,‹zë3Ž_ßs)¿°P¹jòÎ2^‹í>õvO®ò+)Ul?ª£ýZ–GeÝ¢¥+V:ÖpŠ­hipnZËï1tš ~ðHºý;ÿ»v­)8¹2>­ J½˜¬áç—h£µö²ÉËË·2Ê[Ù7ó<ØÞ‘14ä à½úÝ»wç†GF’ œ†ÌVñ×tã /b,”45O¥Û6[­àû>Ú˸>Ç]Q€ÜÀBz,†¾÷Ü“KQý sñ«á.à…”ƒÐð‚N(gƒÉ&fæ÷îݳurJJßu yH®‡Æt½¨URRRÇBÏYîÀÉ´µ ¾€ë¥‘R;C…üž=S´,Y²„8Ô^V޵ïñI~–m{»ÆX.pÓ·'ZŸ €ûH61̳«Æï³µÏž5äþ„„`bb²qóæÝ!&9n©U“@¥mh¨¾¿ËöÖJ$õÒÙ³Úær¤û YÎÆ®ïÖZÖ§Cé.ÇÃÃ9øw%¨r ôl¨ö|½5S×å#Ó‚¿—ã‰F¿;v²ÚؽçJížíwS]ÞÆvÖ§_´¾ô”—ÔMÐ?$ýÚ"¯3´04ØÍÖ§ç¶îر‚1ܼ|£ÚEôò{¦/T´´ÖhiiUÞæ>l |Õ%yÓSRPŠE¸‰gFiÏyøZÛ3y{{ä™ÐPÖuë Ìóêëë÷ß_«p2ßÀ@oŸeâ&¹¢“ã½Y}pê3®¸•ÃÆvkºY‹/ô|<Xð¡6Mϸný…øìì^.Ô;™$›ëEÔ¤É[zBע—Š'¿Îq¿ÏÈȸº··W‰Ôbçä„Dxµ‡›{{Å·9vnîmØ –]×<ïù%\À*¾mŒÎÎÎ@ô^mmí„É[#:"çÎ˸§õ ±á„z©•–6B[ÕjÇÆÆrÕ·=¿´p{ÐôI~ãŽ×ôtªá*¾Øó±@ÿT…ÄkšVÍBª)¡{ŽoÇ<úPÛÆÅ³òã]„GRCAöõLÒ³3Ó6Ãçé´#q/\•ÎM›d 5äþt·d$¼×p| *,gH‘ßPÍX"Ñwšþ~7ý}ýý.ãŠC©úé¶WÌ2S™˜Ö4yŒHUrmÊõ€4PÀžEHÞÓŠI·ªÃ–%‚x€µií¹¡¥}x߸q(‘3gäÀkÁv77Ý]쵺¾þùË Ó,O×>/-Ú)÷–oOÆØØ˜X&Füôá]ÌžKØx]"P çÒ*ÝLJ{ò›šLÒ³²:^ÝÈÏWèx-ã6´º´´TPXxGwSžI­†s`åPT|å¡ P ”Å(3#;+v-?ºÅއ;:5G}†£”gëJÚ΄oÈÙE¦PüW ¦’>\Øáš1q4%ܳÄò$ '[u¸œÅãmTöë’q’ÄäËâ°3œ’á×Òª?ÔžlA„%l’à÷šHv븡¼k—?ÞõC¬YSnŽ~–SÂPöýû÷]&?V+«¨œ|ë‘åòö´ªŸisþ‰˜Ë—·[¾¾#ϰz°í9$í ™ŽçŒùŸìÞóî݉ÕùÅŪ·MòŒÉTª?@!3??¿¹\B7u€·~šå(‘Oyÿþ‹é.1.žl.¼mp¯“ýþ•óî.²¥åp­ÄÔ IRч3ÑÑBêÂûS̤ed ÏnÙ§¤®<4‘bþJÔí0-yþóªSP@@>ÓëÃÛ¬llò:Î ¯æR‰ÀÛÅÔº‡_º´Õû¦Ëä¡Ì¤¬„Ü:̹pNh!jL£—ŸÛµ ÍôøÅ‹ð´W|$ºŠáÝ÷kß\Qô V3²‹– òˆ zn<®ã(¥H*ÕdžgŸ’~­"]ØÈÛo‚2®¥½ÿLXü¥5’@³s!ˆÞí¯n„@Ü^ééŠqhziåÑ7ý®$¼ÌB1Šˆ÷šÊ^3Æßñ\ºð¦ôÈóš34wh+=UÍ5r¨0,:Ú&|²|RîjC¢x¸Ÿ¥RëIñfŠá]C1ÚO­a]¶EnWš|"%®'';-g²éÃðpQªEuì8žÚU‡ékáÆù`Q ÔÀÛ²ªÚÆë€ksb%J_s鸷kQb¨,ÖßôôñØØŒ0ïíêê«€1л1òâåhòc9g†Ü$9|ò·¡©”—šÍ“$ÝÛª³;÷BüÙè8„åÕµvßÇTý1T@g¸Q‰VÝ>× B•Ü>õ9J€öTÚµ‹©¥¥N*ZY07Y))ž]×Ö(++ëg» `rrM·ghÒˆ ”È]h``ðøéSA€A›‡´?³ïS‰D^ s£ë²-[¶Œ¾CªVRV®Ü"K*2µJ E$×Xäy:~ˆ‡F%ä›sÇ#±Bu•ªÑö+ '¤ºÔpUrößMæ6|¶¾¦œB²Ûm¥ñ.u%_Þõñ¢;©%Eþþþê3h'ÀŠ™UÞ‚âÒLá-[NG5«oK£±YÕ¥­åÁY³l-ð ‚÷}LëåÉ<°ÏÕUÀ{´Ù‡_©8˜ïDhhh{cNÖèÇj“û±EÞ7§¢8×®õsl[.!!A× €ù§ÃÃõn¤­‹>i¼™D,)-M+ñ¬d‡Ø¬÷ –áYwÇÆY´÷=Á5ô¬8ç…Ò~š$âa×nqõzºÃ…øz£׸Ÿ]ñìå{0°"©8 7B¡ä—”ìæ•vÑdxôøô†Â»”’CßÏZÍøm¡qñ ™¡Í1Þç,kS–Ûä~b¸¬—d ¢Bv&&¦þ|f (9RÊ91M8eY»ÃÅ?{†Þ-jnnÞ?<œ8tþÞ=´Yí÷ð–Nü›÷ï}sÜ[£§'6» µï%MŒµ[œO_¸hѵqžD ÷ôušªk×YE¼€!ˆsk 7ì ‚‘!DvìfYq…Uh«ª¬Ú'µ+¼Ö_D§ÔmÛ¶XŸn7Úvɦ´5„çöê‚äýÀa8)‘7¡Õ7åA›u–ɯ …ØØVy+(g ˆG+ÓÃß1ÇQ€¦WzO“®~,«V±ê¼ZÏ«£ûÑ#! â'¬bS ŒPqHöùrMI£)ÙíÖR Ú8<Þsø0¸±‘>àë5q‡“”$âËÀû0b¿#ë1¦Ÿ¸CÂCkƒБ.¼-lsƒ\,,|¶¯d(^‡qÀêXÎämòÿÉA‡ÏGnêZ©ÅÝvñýX°œÁøð€r@jO{»/@¶ýmÖ#Ë¢eÂI¦€k8¤–>9¾©x+«A”‚¶AæÝôt®e«x·»ºf¤yÖðòU?¶Ç¢:±ùÙ‡ù¥·…ee¬Tƒ½Aä¡\T<±rì“àç+(*&ð-ee­|uè 3+¬•µ’r8cAw²ÓjúÏJ©øÓ 2zF#E ÷:BÇRv*«+%*<öï­ÿó_–6D‚%Í:¡mB¥÷?xþGÁQÐù/$ Á"ÐùO Žþ÷ü×ã%- ¤¡¨m © ƒ–¦©£ ¶S&(&!¡‡R”PÒV‚éïÐÞ£CˆÃaÚökš9thŸ`)!¡¬.ûúìº3Š~l][KÂê ]<ûVÌá«+ÅÉd¨Â}@+KkšÌOºAHJJÎ\MoK!@ ¬(ÔVŒbçhî$#¨8S­@Lª2W×z º‹ÃÌÅRPÅ-ÅAFG[E /(ñ³NôÅtäÅm¬l æD˯ûÙ©,#ù娦…Œ éÌ9~¨ÌÊçvJ3ÇígÏÙÓ¯ —:ûªðŒþg® ãìÑJ˜ð—[`òš;·ÁTg„OZb¦&iKsk‹¹‡»ˆ4q&³§XÊÒ\-)43 ÅA^—yvÞPˆÉÞÜÖáë_œ3ßÎ8dçH±w?Uþ˜ùe~’]­g‹oо¿ú+z­ NP¹‡ÿ(Éöš¹å/aÙ=sëh õô/¿­vò]¶ í›>´(–Ð ¾tC›O?k€GèºoúR<ÓѾ¹ê‘ÒÛܤIŽöö@¿ôN5·üŽJ蛟v5S0åë•ý–åÈoXŽüMžÿœ’™9ª«þÊìf}¸ozýlZþ Qk†?£FÞÒòoLŒîœ~˳ÙzBó‚Ö\/NÀ9ø¦]‚½9$œ¿Õ ¤n¿érGÈêouBêä›N”Áäÿîœ(NÀÇúYG6ö¿Ó DÿwŠ€doó×Ѓþ=¨¿†ž/K¾®¥LHs”‘~g^ô¨†üu?ä¹~ȳÑÒl¿Ô¹~©¿MŸé×ý˜ÎõcúÛýØ~Ýí\?¶¿Ýíë~hsýÌ _վƷNÍœLù Gs1û9ß6÷ë—¯¿Ç–ä”ÍÁéûïçj™Ñ¾Àêë&4WkÒçéd?ã÷#þ=¦i¶–æD‚ýgDÌÊÆMÌ‘F±£Q,c°ÍÚÆš"%›«ë÷“ɉ™¬Ésú¶NÛ/|Ê=ʹJjÂ[Ü!çRठ•‚Ûüdnݼy‹”Ç·nåܼ¾*ÿö]ȯ9c–˜@H†’ýyáÉ/à°ƒQabÀ÷é5ÇH sgI;0á-LÛ~ZÏbe y _ŠáIp O  °T8NF±d‡CPPU"FPvîš™rlL3˜¤ic <«¿4*œ€DÂQ  G‚±±H‘LAq$ ‰?õ«kÿ·Šîý[°îßúO_Ê]:Qìi0§ÔŸïÿ!1Xæ«úOX8Çþ[ÿé©þÓðþ=½þ‰ö‹úOúìz™rý6÷³³íå1Øà_ød#5±,ŒîTòkÙ¡ý`I}LË1_¼uY GóvkîkYí½}ï]]ÖgvFÜá­óŒÛwC}«÷ê…JJJûõŸð1°²VÚ¨±+)Ų±-aeíx¤$¯¤´­æ1ƒLŸ”ÓÁâ`>{yŽgMMüSSSàíÒ|%ÂR§î×Gù=G$åŽÝª¿rjI¦móBøÞó!&Ô@g|±9ÿt™YYŒ²½Ïö¥Eî߀ػšõ´º;Ç-ÓQ˜)k_šÁÃûÖÍ¡²®‰$ýCM{'ó•ä¹°–çëÌжo¶ç”„……kîR$%Ipˆí÷^Ʋž ¾Íñ"qÏ®]ùu6yV)\"¨k¹WÇBüŽÁ ù‹3_¶—]Uu ?ã†)”ò ‘›â‚òðº{zX×­3Ð^aîÿq¨ã•Ëàs\‡"åz…³ö4b¯fjsP i´¿¹p°à}´WpK ñì¹s„žÚT—éÉV^Þ@¶ÍêÚ[UsÜOüØ]Ã>2CwE=oòvÚ66,RRR÷z¤îòª±k?oÌq‡ÊU))+ lذ(99Ù7 @qÿ~nÝD#¿k»Ã[wtmÀj޶_ Y½v퉡!‡Ã“«Ës+*´ JKóZTÝ>fÓ¹6\Â*xuçð'{£ÜÃëL<>žÓv®N<`ëè‘*¸aCY¼žDGúûÑÕã;­ìº¶ñ3XÖ¥­ÙÃúµ8û·;^×Ô\Q Yÿ¸¤$4_Ò~1@€Zûø,ËÏχʣÙuˆtuvŠL~̵¨¿mx•€€€[ªža=¦cÍšcQ2î1òÇ—V_ä€õ_4CŽx³|¥‹‹Ë޼û–5kœû—0¤geí®Û:˜ÐØSwÿZõ®kk.k WtÖgÐnÔÚm­ŽßSC{_Jèë.úð®¤,Å|_ÃÊÞ‹¥Õ1ÊÌAÅ[ଃn2h˜Ê]°h:My³v‰Nhd¤ØdÔ¹sKLMMñ’’›7«ÖNó{Uè'Ü£–wÝâ·_{v×µZ;š½}Eg‡!vË–å»ÃDˆ,n+4ŒgÙfeWÍ~)(¨-ïðßΤç}‘𽚘x½¤¢]Õ§/\ð»ySy™ÇØÐC@ßéÈÈ úz#%UU½øûÐ2æyòé%=„ ìÜäq¿ˆö±³’y«îm(•ÅÞÞþ±)ÕíÓ§O˜°µ Ÿ_Äp¡ÍVóòñ>wnÓd»"ÄP]åÛÓŸ^x½L0Ä™gIBŒ\%³ã5=Þ„0-å}ûþýUÀKÆ+3¼}÷Nf—ÈZ£  `;5ášêÖ—3²žúüâ‰ü|…!0ô•À›F>ô .ªˆÛ·@:röÞ¾HçÆ‡§¡ê>é™™‡ÄÆß<\ô¶­ J½Ò¿oY;ÀÆÆf(oXŸIŒ¿%XæÞ:59^nËÚ?$¹–„a“€÷))F7Ù ¤{Œ§É‡¯ƒÊí¿o½¬Ãp”'h~rÏ‹(™=ŽrÙ]²hÒÑO1cˆˆ¸ã1(°¨ù%[Ç& fmI¸Dññe,¶ïKù+K†+’ãM§ãZÁÏ”·ON ¾`eg÷æ4vYp ÓááͽWc'-]q ±íù™ÐÐfþC M4Ó«¬ü=Tµ×ùD=;‚8å›Òü2ôèeF­ÊŠj-ïÛˆbj±½­BHV1.©äA軃10qŸE«ÔÙ±ÌÒ«„˜˜MK<‡>õ?m{”vÑÂÜ|ËÒ\GB7k,d€ Ð –v0 #‘k +KC/^ô‡;1:Ð^w_âØñã¯4äâR¯]Ͻ-ìÜY±eñ²ez㸗Juyœ{u€:./À>úÐ|îcoPŠ…¾º¡QPZº ˜ƒ³¥ÑçÎA·Ý …þk?~¬é>–Ñ"mU›ò°¥0qðÃa H!Í&;Þ ²ºµe8ÚslyYYTé®*ñ@|ª CÏ´±’b¯>žf¼ªnu‰^Uª…ž´ÛcGGG¹Çáí¬V2àmß0\ßsédÛóK%%Ìb¹€2EG©^ѼœÍ»jÕªþyKKË„ñe @/–Ý!(uU³„ðËU­ËK󒈹5ú r *üÝ(©frI#TÉ,©5ÓXÖè•k¦c×I¨ PÙx€Žª$‰syŽ]KYÖßv Ë)Ÿ¹0îpÔãÇ; œï‚“+ ¶&e¦äêžKØÔ^þÍ›73Ôê¥%¨Í±M­Îþµ±±1CŠ„€ªCªÉª¬–ô1QŸ„8K-­5vlkþXmÞ •Óš©–ªºØR6,ß!ã>RôôÜV(èÿÔ·· PãMÓa²¯íúâ¢E¢ß¤ûúúnwqÁ{N ¨B§.a­néL3¤Ž¿4=ó°krì¸ýkÇœÃéB`µ”Œ×çN|Ø ø¢aÕ”Õ—ÐÞn¤©¥6Õ*y×ÒÚŠYoÚQ~m´7«ÏvzÊ£>Ë™EYY™»¤;Ì4>Ò—”¼â46;æŽ&…B¡æñ:ç7f5ÑÁb±Àä- æ•<¶^Æíf‚±0äåKMvNΫÕ‰Ü}ã мSÌÊ&8št~¨16Ïî,_Ví†\ä˜Z*)æcµ+ùâ¶Ää)üÒqŸ=Já{O‘€™UÜd=vŒnËÑÖõ¯É›×ôý:¥¯Âv_ºÒÁÓKQIÉ›õª«ìuö­{=Š·2 –ûùóõu ÆÀ#Ï ûúîØÜø ËÆ)nô F9àíª‚ƒOKúG“7XZí~y犹èA=]j€jï@ùniŸm ›csþ’ìÁR)Èßyü‰ÉÉw«\/—VøüÒªt,(é½&IûM¤.7qÊï©ë5«OçJL\bV›²ZW·íc`—T_6©ªO¾%´F›EÆEóH¤Ô vX.Ýe€ÃÒ*aïþýÁœ&)r“8^>ž§|1*ÁF!T=U ÇÜWrg9r$˜qE·wµ‰—Aãß! />*¸f<¸€ÒÚÊüQqôÃÐÍïV+\Ξè¨{õt×Ñ€e¤Š›ÖÞ8Ï §ñLçiþ³aa»ë,-oïÕ^œ°_’0Ú5×(ÇÙ§*H•±[ö¹•ðiå8µ)®ÏYPS3,¡~öǰðzÓKH1°ãî£wZ‹½üî™&ž_<8Ô1hš¡ˆ\þéS!ãÊÿGЇ‡ `'W¸îë=õX±÷”<…Ò lÛÿj`øù%¹7þq©½·kW8ûú­Ý<’_Ÿ1I P¢F¬oNþÿôé½Jh©ºº¡$lÀ–F»±Æ|è9n3ÂT]úðaã‚ï €Ó¾ÕyYþ¼ðcØpÏnyý×zíå×0€s›R®›:wj 7ø†‰P^„¶™ŠÄŸxs{ó-!Glyôœ ùve£tÔΘ`¨ò…Çx>àµÀá§/^] ¸(Ë;^OZN- ,(”#• Êòë™îfYÏ~pbtÞ¹w›nÒª–· Hø'[è »?Wì=õ,*(hm˜èºcU —Z£§ÕœÛê|‡üdµ§Ôúu‹“„Û3&&u×Ý[˜Y£ýi |UÕ«8vg2„Sý …ë®ã\¥Z|’ ~PR="}#à àMªÖþ±Å(ªeÁý¦¨BUþœ©1Ljã­Øôô¬¬M›rÙ™‡Bê ßš Ÿ å@:›EöµoE…¥eíЂ©áûzoWùݺsïÞÃ[:òýì”a'Æ,Vqˆ}h½Ë?d†qËpû¸êØñê ry\†iÅñIûoÚˆ#½&«×OaÜF<—lÕ ~Ó“A%(ºN}¦Ì$û%lPk9«ÐÛg¶ŸiÃEœ×òK¸H3Ù]ª‰}%“÷ Éke£[ óÀÀ¾óÕž]²IËoÌiÞºÕ'©Ï>6Ö⎼{ìéÕ OŸö›—s,^âXÈiØöò„߇!Ë“pj-z¹¤]Ö®Z¯–‰àu‹9´k×S8I…שO6ÀkÒb5PÇBÎ;´—EIo)Î?±üuʖ嬬pÒɰ^~@º1#}ï[³`›«Mî%[7Ï^½÷ÔÍ`«†‹,rÅoÚ´¼ÒX”Þ½¬Ò×ïØF½¤FyÍ—œ€NUËnüMmq{¥¥öÝúÛr½ïßߊµæ  >笯$©±/fÀ{Œ1Ö"¥c^ràzjÆîÝ%…7÷"å·=o}™–p¯^`¯Lá¥ïôô}\H2&ÓÉêøèèµ5-^ö…³ÚÚ™¯0i¢àíßâ2cÜüýòé<³¼(;ÉÈ[³²«*¨Åaxþú¾;VuJC=ã¦`/a7A„(òºÝÕÜ´‰r´înp_Åï%͵AÕ °ì à®Eoá™MãˆÃ.¦/¦W Z9{ã¼°èK` ,/·† QWŸpà¤ÔCssÓeš©)“DΣ>©ÍBL´wO­/IPuu•$’Š— éІ»1|Y @,ͳ¹ù!EN”/ILl‡–ÖÒF÷>ÚªvµûÈIÔÎS*ÓM¢ðfK!mneóÛwùn•¹H‰ f5¾|ƒÊá£ëe²“IÅìÂç"pµéè¢ÄW\Ÿë22ê‡ä1ßš'¾ŠTuÆ£7oö­^÷‰Ovô²TÞ¥#‡Þ= µ=àÆMô퓜þfŸÉ+šý“$óóÂÏôíìÖåä]ô~ ÆôhÿHŸ0³˜Ü©±m¥AÅî}9')%'iÜ©'1ð}÷­eŠÚËé@2ˆÄ¢Ëz¥–1ïi.K‹B¦×XÕa‹‹‚»5ï=%%Å(7c=°e¾A|!X«‹%@ýüm¶‰ ?Ìè/7xi•Øê¥ ü^j>À6¤§ã‰}æjk´oìOÓ†ÞšUîòi2ñ›™ó[·€íĺOc]¡Œ«ŒCœÍ}ø¤„hÊšHF $FÛ.ùõ´ I&áˆ;7@¨,º²¥‰¸·E¤Ó]Ii„ã&¥jˆS­Å!­ÀìÙûìµá•8î1žØlãEóIJºQßü’v7-M%Ïsò MÒ”’,Û ¿­ÂÂòfíº¼2cR‚!\ú/Ùû«,­¬öêê 9s}ôÏñà9Îy9ö-K†â•mwhïÕWp£wX] RKÖäKwdU ~´îÀs[ÙµÝ@‹»WÚÚÙ¾ýHý•Õ•’'® °1±}ïÓ0ÅÖÔî'Aso¸ˆKð{ wAÕ-æ“ |X€Ã©XºQ^ii¡˜f½GŶŸÓ¥/§š•_nÉžKÛ“X/H®’¹àûÔ¢Lúaà:YÀ %ŽczìB—oÞd'[+©=CÜ>Àól#AADc_Õp–@)eçÝ»w¡³~ Ý6ŠqaÂÁür« ¿3U½te÷÷§‰b=.|9ä†ì´’’Òãé÷L_„I-:»ëZ#% AyÊž=ñ¡ÄÖÁAéàA˜uC&…¾A‡XàééY™v/¯K=õÊúz#h+n|¸G…åd»+´å%%eØ OÙŸéW/`æ0Ò{ §DEI †@°._¾ÜÖÎîáħAÖ5kŽÙäMVaâß“ ,ÊÈëd’jjOwß¶·KÙ¸±l•îSSSùMMM—ß3ÀZZZé×õÞ·^ b;…8m?¶Íþ‡÷ji RŸ¸ˆ³×9÷:ÇÝ9ÕÍ}¤wmOm*Û®kZjQÒì»Æ‰$TrØ[+Žkyªs-;»oܾL¦¦¦Í--‚ùùùJÂè ,"2R™J½^zW:ˆ‡µ®æémÈŠ±k-rûx<-Ý1’åPa¾fe1'4ŪêîÛ9Â0ìÌW6|(ˆÃéE[¿\ç¼'ùÜÙ³f–ûŒ£€ë°=uÐl¼áÌØ¸¹»ÍMô´`FlÓ«òò7ËYXXŒ2vÖz~úðŽ»+##cgÒZ¦çû° õõÁî-Ê©nca{vìxðøôV>¾ ½¤§§WT<ãnMÜ‚54|n’åÖþR`t´]N§¾|,KüÉEáÇ»¨ã“·;¥Ÿ¯¶JKñŒõØVþêððüw† àñ\€`Æ•+ 8O_¸gçojf& Z t%å?¼}Â… *½çÆZr]Wôß.Þ\~m7#3ó¾ø‘þæî&è1wîÀ¡ I1±=ce>iéþ ·üõûƒŽ.ZÖéhýàÃX–ºNÎ#xÛËW÷¢nÜ£º…‹‰ˆ¬ ݬÁ±~ýz•‚0Øöúl×}µy‡?ÙŸ>uª_ÍNû&K<­æžiõ'Dôˆ‡é!E SÎÃû@.¼Oœð‹‰Ü«­½ñºF´8üþáa ¢1{¯ªúˆµ| ƒN›ƒïÁôt.¸ÚS¿dÉA4Z/%Å „&õfÁ‚ùÊ[q_¿‹³®?E]¯3Yv@0akÚ­âD_ @ùPO]øä├¼=Ƚ×ß> UÎrêv”œœÒ¸dÜRúC‡GúšL¬¿|9 m‘s±–°êboE¹ÂÊx½kÕæææÐ±¨ž‰ë7s‹¬''oƒ£ÝÛãRRاG‹åÞtw¯°±±é®¹§jÅ(E8P½ñ7oßzoÙwh̵y”7·ü'O *ígÓ898EEWˆ‹‹Û::Bç5µµKHH0 `N4ʈ¹'ÚïÀKk{v¡ýå•Eõ ¬ëÖù=z¤Äð RÊùÍ›7G–®ä>ï %288¸Ï}[Fz:מ‹è‡S“ã×¼’> ¾ß­ávÒÛ„ך‡Zø6wtøÅÆnœè/`-1™:.~PWdzl¯fWÈÅZý½½/¯(‚%8ʆµªý¤­(·ß\â}òdKU‚!TlÌ#ë¨æx|2áÆ­ WÓôدK³d|àµÜg­JÏ&¶?å•Ôݘc˜ž‘áW^®%ཀníñe,-@÷Bõø‰OÏnÑ’>÷þvVVV@ªEµ?ÐãÉ„‚¥Í½½‰Uücivq-€h"ÉôJbâa5«É›,´ô—‰ÑdèltŽ£´´´å8‹ìj–õÒ§†}¼½¹ºë_êkÌÙﳃÁp¢º$ýüùv£U_ß{õ¯‰ýôéˆmŽ»©ÖgЮMŠœÛeåßF>±ëÚ™–¸Ãž@®“UŠ@yZ£ýÊ1Å&,•BÙ™ÜåfÓÑ©êq^1v&ôášq¥Š‰Û–Õi×%{NºuHÜ¿ßè¶tä :ï«Ôˆ­­íêuëÖê¹=Æ““‚é$¬© ;oooFj„í›í%yÒûx¢¥]c’u2Çöò«±+½P­ÏèÛ{¾Súí-Ú=©|Àù8îr±ßîÃÛ 7ê ‹‹Ax,A¥6Í*Þ)8€Sb—ãzi—#À´îЋºçÙU%Ý‘””„¶e;¤«;–÷\ÔÊÿöÛZçIê!ñz¿|í÷z‘Ç­nõ¼ŒÕˆ–M÷š–†Á8·èû{ÐÖý³gjÃu6ý?BÑëM+nî}튂j÷_ÂÙÊÉM_¨½¹GMM-ˆr“šjàVÇÕ9ެMõ{¡ÙÙµ¦}?Ð&7{^†~fÙ•çÞËÙ”®ªAlªÎÏW€§)y*kjžrj?]äKL±ªÓ}]Sã7ÜS@*®Ì ÊS©–Ý“dAŒSÔ¸8æ÷*7Õ½ÊÉ`áÌ¢·!YjŒj OÔÄö2œ4q«‹+Ãj{é`§cŽ{÷žn;ð!BÇhÙ®åǓ؄ÔN­±7È+çi´QHÈ×è¢øº®ŽØá¾¦¤ª°‹cwcê_`²(³„$‘­[¶°NsX[[C•8Ô"·élS±âÝû,BrßèØ˜?àŠw·%´Â¬¬¬WœˆûŠ÷Ü!_?/¼"g(-CmKöÒ¡ÞzU.j è6Ò+†D¡”ííïBu âõ’ªjÕ­V„ ?£¬¿›‘Rpæ1>T^׆ìɺ®}#OUÙñ 7öúõ]I¡¡¡…Í>©iûxŽobŠËgg;q%¼{üéd»킱µÍ´šâÈ’]°\·Î­ÃŠvq8ak•iô{og§?sW ¿l`{{;wWG€ß±*'ÿ®{ðÄä¡…ï GÃèësBÀn*G'%~€Ë-ÞÍïá•ÍHëø!rûµûÏÍkŒ„_7ÐX«fåæ Üè9PA`íײmVg/,,Ü_w#(mä~‹—ó®4›&èQ.Ú5jÚ}K/fp[e?¡p8öF/ÜE§åê@õ3444¶»¹mûصy¥üº '3‰»’/ŠXõÙðX­íl‘[¨npråî½:b;4žV^ÞY ¾v½´p¾g×ZÖ½=ð½\/Yäb›› #)–Vk¦”•”´ÝÕØ—:Œö/‘>`l’U^nxzrIëbÛ¬ÀËTI4Î9^¡ý1îì`[06Í©ÕÒ±V»Þ¸¤&l,gf;q:#cOq¦ãÕþ‘¼<ga%%·æ¹ûv_¥1üAvÃÿá¯CËÖWž`aÁ|BP&çêj '?κ[,0¢¡¤äÜè¦4aèó%+Ú¶©rßÞ½{—–†I­,](/òCŠ>ÓyOÊé1ßBÖÊ…}?º²K銦𡉆ÕïÏìÖÕå( \7hT ÜI˜à V›2å—Ñâ¦;ŽDGG äßÞ{ í¸ï³€'ý¯íÊwL8¶•Y–JJ‹×°±Wõ3§øeBÁIÆåËO{XªLñÍu·EL<>®…noÞ¼ÒsÀ+”›`îhp¤Ü‡»ã°äT›&ÙìÙ§Cݲxt{š@ì#-#Ó \Aà³ìªcfffåàXÊÉÉ™ž™I¬M19ÎÉð °p‰^¢Q™P#ÞÀC…|%[ggU2y# zJýÑãÇq£Í–f 6nW¯v8W¢7™óß÷X“Í_ %ÏVÀÞáÔ^ÐÔd2:>Þu Ê÷-å®_ pªÊ»^ÝÐÐMØU)–“°Òع3.ÙøÖ*Ö£:É„Sqàí¶T7WWfS2Ÿê kºU÷öjÈ¢ÅÆ2 xsÍÆw«€Ë;ôPIž¼_ »W{*+'g™fã¥ö€eq«Œ­glœ8pØÉÉi®?&%"1ªöÀ¸jˆÎ>|øðèÈ‚E±È뵫<Ø/p„f¨îÕQQ99ä¾?7´bÍÍGóº³NÂ$׈$ƒÃá:RÓâ® ¨8Çe f¿ŒG‰ÐÆß>>í¬bi) üi¾Á‘ÓçIù>–¾`sþW1Û.«¿³Õä¸ã *\|ÚuòJÔ§úáâŽ2C)ãNe™ŽW´E”õõÏ”AåCˆcC qÚL Z؇qcÅêÚœ\C) ƒ¶5^¾ÔÜ«¯¯ß3ªcÂÉÎî >6ww‹B m æáñx_àþERlêÓÌ&:êî'Õft¬å%Ûió½`µkÊwÆÊÅŨe ¼R³¦\ÀÐ íÕIÑh‡«šÂ+ܦ2‰â=/…`0†Ñ†JBùdŸ(ôÎ]»? Ò+¼Ï¢d Ó6GFûd¤a~k~~~…îÙM‚nºjì:ÐȤœ{ÏZgz48›½¾#06ÜÃÌàëﯨ? m2¾ö*zvumlzj$o ãFtK®q»¦æj(ŸæÝÓµ€E<Àa}éR Õ ",¼ç=+HÎÁ'g6•O-Z¶ê èa´:oêÄ:ÕLZ(@TÆ^ âžiHíšV%¥Ïô5†eJBkì!…°jÕª–Џ}@VN®âi+ÜÚ£§}(à ŸŒ›öMmG¯n\Þš”ÞÙÜ,ä{“’«k ¥$Ù›T¤Ü²ÐÕ [ÝÒq(¡vLóš–_E…v‡#piñ‡Gm{¤0Ž’±§Í“G·úŸ?Ï%ÌÎþïÐ[¿n%öу£‹XùùC&&w7déõ¸ß¾w÷î›ÎN‘ÊŽÊxλwïÆn=%7Ù¡¡USàòƒY›°?5¼//)í±1Ä7f¯® eZÕ¥AæÇzƒ¥•UjÚ†­[w÷pðY‰5W R…<Ç{p R€¹CP‡*„-³×müèù%Üéèè¤d£=ñ™‡ØØØ®rèýèv+Çûù¦À«¸Âãê¯Þ„²$ÊnîÝp:<üFZÎ;šÞ>>ÌÀ┥ۑXÙÙ7®—qÛè}3×¾ Ä0Ê p? ÕÁÂ;uŸOaqKìÜÿñüË»1Ö?wÕ_Ô0Ÿ|èήtýÄn—SevËY_å_ÙüÓt ¡Ÿgað\|ÜÖ7ºöòb`ãÎI-†\„¨gâ""ùG-ëÜ™Ì')&{y%7ø~¨ƒW~È­ax-༸x^“^¬cŒŠÕÒ-ÿ—«]üYþ7hniî`N¡‰ÑÏMàIâ‡hÿÏÿF£0¸ïê?ààÌ¿ùßÿ—Á6»Þ&Ÿ×Ûdv½a2L†ôƒ†0AEú9iù¹6ÐÁTAQ˜ ~×äg?Ïùó6‚°¢sCPmì)’™ tDßä«Î羟ùÁäû~¿ÿùë.M fŒç™>($E¢¢È’d²$MÅ(ƒF¢H N…}X;ZZ~Õ-ÑÜšlÍ"ÛXÌ­MH6d â0ŸÁ’$ŽBÁ ±D" ‡ÅˆdIBa‘p E¤ü|°/cÍg 2K¦’pŽÁS©H,'I"x¸¤$ƒ'ü8†âeÅÝ&ZÊûtÔ´ç3ŽEà‘x š‚$¨DŽÇHH"…ŒÆQñpò#I¦hóês `Á‚q$Z’ŠEáÐ Ž%S(TÌOºÿÞÉH4ð€SD2…G“IH IÄ¢(2÷cï¿Ñ9EÄ)p<G¦)p$¬1‰¡ ‰D<MÂþعú¼@ŠÃ qx4CÁQá(4ID£‰T²$‹ÃP‚›ßà ôFÁ£ñHQ…ÇJ¢ñ’‚€'áHÐß?aŠí÷ƒ`kK±&Ïg4 2€‚c‘D<`§bH ‹&IñäùŒF²q´ž×’ 0d"C"Qà(8BXS"V’LÅQ!I!Ìg02ÅBšð`Y$ …Œ—¤ $%Q(2&`x8À¢æ3:Õ:±€î€ãˆh*–Ù†Œ¡¢0’¬$Ž–DR0ó `ûËWó‡#Ñ8N¦`0 OBÃÉ$4&ð…4ŸA¡B'óRH ™Š—DaT ‹!±D,+ˆ"I˜ïX&dsûùŒ—Äá€Ðb‘d C@áKÉ84zDžßx6޶&VÀ&XÎkL- F!QN°ÀI ’ ¦âç' Öçy±‡DPà’@mPÈÀÕ"¢ÈÀÀaX*Ž„GœÏPöóµt ¨(h`zÐH4 ¦†ÄÀ h‚¹ƒHÉŸfE¡Ñ¦”ß±¨<УH"‘p@L&a‘’x–ˆ‡£¿`„é€Ô¿>Ãÿ+íh mö7KÀý¹ÿn?òûúoP³ýÿë¿ý¿WÿmöÓwB(nƒjÁ´(TŠ=ÅšDù·>Ü¿õáþ­÷o}¸ëÃý[î7ª9ýÕzpÿqú_+âôSgü/ÖqšQ _`ŽoŽVV@·Açð²L¡š[SĬ(ÌŸ«þF…Ô-õU[ˆö/-¿*ÄÇúo¡Û„ïHœýî—îÔéOà9Óñg|þX¿ê›±Àº-mH4PÀ)»*nãH¦À„,¤~Vê›Ò8Ÿ—Ä„fãhOš+ø½÷U[q3ˆ'B¦ s ú€ÒDûãK§ÿHûêkàW}^ó´’)ЮàŠ+ÌÔž`kF¯øô=ÿ¶ÍqêÛÎþ Üø ‚^¿‰îÞü€Â/u€aD{@Ý„ù±"ØHÌÝS@þpålÁ'z¥§’Às¾õŸ\!ûO~‡° $ F3#@"gíÖÍh Àg䟯ßÌÂÁèÐûÜfný„6 1RP{#KúÛ9ŽÎÍD`þ€k¬(. ”²(‰ »«`f_•­ú k¬ yY3«J3³q¦ÁœÍÌI`…!‹¼/h––®0°ÞÀ.Ï}šÃ0ÝCƒZþç×þ›BP¿ pñ_ÃýÂ?‡Ôd~H ˜‘MLˆWŠýÜNÒgÈ“ ¶æÀÇÝace…{æ®ô¥W¢³xZ Ðu0‚½=Á gkdÁìm€Ò‡ý€ Œ( E Ðthü1…¨9 NÜŸMûÉØ<…@ÏctôgI!›ðÃè_œ_ zqÒáPxh847á0ß æÏ7ù>¹;0*Œæh ‰$XŠY÷œ¾ÛJ›Å>ð÷ú)æ€OsÝý„/HB‰F‹¢ÐHQ$ó J±ßS:3ðŸrhæï¬Þ˜iÿ†áñ(:8X¡_‚ûžz=Åy“µþ ¸$†®¾HìgýõÇDàFÍ•ö{t€ ~F §“‚Â#æAŠä÷¤ü8HÔúgD á3üÀ 0ó ÿžŠ9•4_:fÍÊO(Á`$g ‹$|>” ¾§„FqªÁtþ¤Ì^ð3Zp¢-xô¼¸òƒÝu6‡nÔΟ”™ö?Å+P3t©|™‡Ô P$¿ßYÿV¶–È1‡Íd+ÀlˆP,³§ØBw>¬!ÎÀsj‡àà@ ™5ä`i@´Åê'ÊbdàÈùØîê‘~¦Si6~cÏxŸ0È¡„͵§;ŸÉ$Ûsf«·ü„>+ŠÄ D1 Œpø_чþQèèÛ#?°“ÎD×9füšŸ …#!€‹âp\’Ø_ ÿ#\ÍÕ›…Ôþh@ˆðbD`þó×=ô ~o °žºqpÜ|Àý½qúq OÁÚ æv‘¾Š~² 8‚Ž_µ\¥F¡:@|674ÚC›˜‚0§Ùô]ÖÙ˜{v7‘NÀh}{ÑÆÁÁÆJPöÏbÕoÜ ó ]UÓDYKKCËDQCKKGS[YÉDI^[ž»Ò‰ûú_1 Ó`"0E{{G[HA[è°¯_"ÈN2…Fú]vB×Й)û¬‚Ì0Jö;ª€ÜP€&"‹UÍx>ÙccOŸÁ'=dÿù„h[ýÞÐï#dßÜ¥‚ßùëþ!Ñp‘HÄ“I`(€!<NDÁ d à°hê?¿¦ý3Uvª)›(ëïܧ½ï¡ˆúÒ~U¿ƒ4úÁ’¾›£¸·’ö-Ê~=ôï£ìwWþï Œ€$‘ˆÀõGû FÄPq<CE"$<•Šú'£ì×´FÙ %e5u m u¥?DæHû=výÒöÙRHæTóï‚_˜3F¿AGµq´þNÁýš–߇ÞïÂáï@Â0Á‰$<A%")‰AcÑ*U‰'ü“¡÷kÚ?COi§–²¢¶†–Á<à‡ûü~e ~3[Ž6À¿ÿìýšßÇÞïâáoW @’qx2Ž@c±šEP%)X"‚ˆÄ °ÿhãúKÚ¿5®¿†þWöõ·¸õ×`… †¸_Óð ío¢àoi;$š€F“ð<…LÀb‰<ƒ'Q©h*þÏ.~MûO´Ý/|:É_©ºßâ×ßUuæâýš’¿ ë~ yH8‹&0 `‘H’D†Sˆ88IÆPHD韌¼_Óþ%¬•ߣ¬%o¢ ³Ïà@‡€ÿt¿Çªß¶eα3§}†Ñ‘æú-Ø~MÁïƒíwð·ÀFDPT U’Œ$ਙüm8GÆ€±(xø?l¿¤ý3Ø4åµwÐ «¼Â> 5må?„âWû-†ýä4 fôGFƒJ Òl,(ßí—cÿ°ý&þØPpI‘¤ ‰’8ôà.ÁJï¤?ÍFs$‘(4ÕÑò[ýzøßÙï.üß™D$I’%±D<Ì3‘H"0XCBápX"ñ½+üKÚ¿7Ÿôµ_mÄý¯~j:Ö´ï7H(öö6ößíùþrü¿°çû›ëÿw°†Ã‰PL'£ðhI$œ€”¤ D8€Eü£±ökÚ?cMcŸ‰ŠüN5­?6›è_ í÷8õW‘F%˜[:ÚÏÞÏléîµ6ý|Køkðýš¤ßßïâoYS2™€ÂS1($ƒc‘pI" #‰•ÄQP "&ÿÑÖô—´Ÿº†É>MyÅ?†Þ¯ö€O¿=uà©Q¬mMÍ`ЊU_û éo®ù¼ñ5{Úáü–ï·YÊô¾_¥*ÿúž/…B&¢á(("‚ã0X8íu“0™„AàþÚ¶ ÁDþ§‘ÿë ˜ÚšÌ^D ™Ðì£éIÜÂæÖP ôË–_@þ÷¸ô[q1t†žÛB˜M\˜±ë3y€Bðƒ¥ pÈ ÊŠ¡“ÿ­\üš¸ß—‹ß…ÅïÊÓW9 ÀÈÐfò>æ>ÌœÛøì+Ñf(QfN ¬Ó¡þ‡iðdË/S¤‹Œàè=Úüä +O/-ÞJ“ɲŠ6¶®tPÃ@܇í#PÂTìÍÜç)P;h2dèѽ?ö bMÊL¯@—Q>÷IÏxž;lå…ØS „ªƒ3Áž"sµqN5#ÙZa"ˆT¡hk²€‚• Ùœê }áh %¹@¦ØboE›³Ëªê:05{€ßfNYÂ4‰–æ$˜š9‰bMà¢Ál¡ohf3Gª «T "öÍS¶œé‘ŒŒb~·‡Í¥á"çÆ™íMÊÍ&8@tÛ§ºh ÖùóuâtV1Aógúž_æI §wn¼ ðt &êlni #R ÌkP‰Â@K˜ÞNí:Ú0yu˜ž¼––¼º¶h VüJq¢Ìôcnek ù.ÎP:±µƒ+DèHè@Åœ :W±´±±…)ØÐ æ{äap$C à˜Î>yØ×0“þÿ‚JÏ<RJ…Îþ@@šKï#|%²?}Úú|¶ìèO%ÿJàgMšàßÚÚ­úå Õ÷yæ„äÜ(èPæ—3Ç0¿o;ëÓÁ~¶õú'Û®_†ø2ÆwÇ"¿#lfÊå£ýÙþéLr™­ìlnçN ØLž¤•P!Ð`•Lµ£Í¶ÿ>åíçë0àô¿ÿ­…øã@|n¾Z*{ÊlB?ÍÆŠ³0‹ä}¶=]'Bjè¹YK˜9žK?DŸÞPÚY2ƒ4ø\4ùŽ6T M4Ñ›@q±µ¡ßèªÙÉÜÆr6L™`J¸ÍÊœF£Ë?ÐÓ@€)–´Y… šÙÒèjc–nª½tPlV³çæ‚? ×@óØ©úGÚiü“]Æ¿?Ü.œCŽ<‡/Mì)vŽýí¬Éëo"ƒ%&|hp‘¥%‘@²€üh.ŠêÚÊúÚ&*ÊÊJ òŠ»g§E¿»üeXzkº+¹ T(‘üN¤3J ÒQû{šâשÿ¤…þ&ôïäþ=DüQ"ç" sßôB3 g•ÆL„Þ|Ö/ßdÅÓ ¯€ôm÷³ B~HA·H€‚´ŠÀ(WØÌ9`@Œ:ÐÐ7¢Ÿ;§»gdÈ鲟Õ&@ÿРB#sÚéK?`8(Ož®T>Óÿ]¶²ŸOÀÒ'ògÑßç9Ÿw݈D*#IDbð82 Þ)¤$ ‡ÇS%1x =ü›½ `^ ú(¼‚£øo|·¬ÿAÿ>áOrþ‚ç“Lðµa¤Í£ý`ò²).è( ÌÙlÖۇζÅfí@ƒ€GÑCé/Ó1þSŠþ&ò¨ ŽÇÀqdIÑ<’—ÿi0ûswÿŸt‡~–NþsOˆÞò/;AŸ]o}_á„ýëÍc "œT>š€DqD`sH(,ü} Å$)_í£ÿ%{Ç‹†¢’qTœ$š D.IB0h>H ùÓ(™î ü×Möï›¶¿a¶GßÌãhØ?Hß|wàïOûý‡ΟÚû¹â™iú ¿fº¢+² efl…b)&Ðí—Â:@Û@÷)gö±þ’Bú¾–Ù| žËþyQõùâÿ?£?~øóÈ‘ù.½éOR›þâÌQú Ýö_lîl›™;ýPÃø:ÚBångʭЫCüÎû<²áþA+ñ%ËñO2ÿc÷â~™ªøã2ÑoÊÑ€b€.ÒØ7§q¬é7N­ÍI3ÌÞrŸ»9& £ˆ›ŠÃ,¡.àº/·ÖfªÓXÿÅeó87ðZÛÎüÉÙ¿µÄ??ÄñsƒbûÓ¶¿eLhôNh³ÀÉ×}‰ÂÌÅA‡3-,Í-(0A轄ƒÄçý?Aq˜<äÛ;ZÎb¸¢¨f¸(4(èx†Nú­zWöPµ`¨>½û?€Î$ZÌeüýF‚Å<¼þ÷àö%Pö“ì=Ø·°¢÷!+ü“/ç:†rÓ¬ ªµ‚²æÖ_%¥ýIóJ¤)V²3ÃKK€·s™|²[~F Ëã¯eΈ×l4úh3yhšÐ{ŠÅžö9éûEškÏ4·>?gÆ#fy0G"ò+¿JõûjÖ0ØlBÔLÒÐWó¤Á~ÖËÜLìгâ䙪˳ÓÝ9£âgÚÛèU®É³z›hn=³•B×Ú„Ï:û‹Å6ß#JxË\ŽÖLÎÔ°²ø÷¬Kô³§88Ú[ϰX‹þþ åg)ýR^m†$ ~:Û¯ª¾ñEi°ùWëý¼3K"J¢H’8I€ž£„ÀˆX ^Áf&ò‚®ü ¾ö ÿÖ.Ðßßmÿí ðâ6ð—êàs•–gJ„ùþ«šÔ_J×Ó JöT‡oªÚ]ßRñŸë{ƒ/èŸgº4§§kYõ<»±åæ9™Sœasµ´æ àÏÔ2ÿ¦à;è ðò2¨2A#á€9…ÇÁA0‹¡`¨D,ŠJ Qà_Ä·Õž?WOŸï?OÒþ±ðõweÙ¿ô>Ã6AÙ¯ëÿÏ´™Ëwþê¡*sƒ€ž¬òu ÿ™  R¿ßö:ûÙ«èE~éâf¿¡î%ÈÎ=f`޾™¢ñŸA1÷4h(Y¦ŸµôíùO_TÇן­¶ÿÙç¿"q88ôü'D: øxóÔ¿Ïú¯<ÿ *¼ýUMíoJeÎÕèø›ÚÜÐh~…·7þ” F¢PPYZ=ª´¨(ùï–‚Eáé²1ØßªÇ½ñ?^w3S?…G…QÌdüÍ‚¯HI,½Ø*â¯k­Âÿ?Qñ V"8`ó û ÿÅbåÐc åBJ"~§FøÆÿÚ´(Ä rÐhÌCµŠ%ñó¨Uü¹>øÆÿV-e,5S;.9ŸZʈ?Äöß®’GÍ”–—Ä~©,?SÅw>öŸ6YÚ˜~ï1ÿQû‡£¿¶ÿ(ºýGýkÿÿ+/’J¥ ôH„$J£h’ '`xˆ±ÿzÈÿïùÿ4úsÓLLf¼•Ï[ÐÞ)ÍÄ„dciibB?x3¿`àWþ?Е_É?È?‡Æý+ÿÿUÿÿç«=çøÿÁ¯óôøÿPßš7è…9ôð!k‚åçÓUŸÛÂhsOóû™KÅ«‹ÆàE1ø¼€?D:t»ñâ~ÚäG¯,>+ŠF¿’¨y{&H=±äW”Ðýè%! ˆbðQ”$rÞqÆ´ì´¦Ú|K=MÏÜ:ó6{DëO  ¬Ï¯ƒ3Ì/èó¯ˆ6¡së åìãŸÄ>Q ˆš·Óÿsz4íé[Žó fk?»;ùs’€ÁD¡Ðó ÷ ¢~„ïÏ)²§˜:Zìÿˆ"(Â/ö—á¿£è =?¡ãO%ƒÀ‚Fa¿{ŠÚ¿¦ú¿¾ÿ÷ÍmÒ—¾ýgŸÿŽÎ'ö+ûe­pˆíÿåå§©®º’‰¯•;w(i¿#à¿ Æ…àß·zîWÁŸ¥ÄݪJ ÓÐÿ.çÜe`Xg¸SI^Û%¢'Ò\ŸM¯®XƒÁ€‰éÐêÕ‹c™ü+;ß©§.OgÇ-&³%èlWP²T®P•ø¸WÓIp·æck½ý÷/SHæÀ±sr, œæ“wÚìóq6߸|µ2´yB6Èǽt2úBÞæÍ¦½Ï4W/^°š1îôCC†Å‚N—KÞ.ËäUð„Þ¨ª¿ækÌqßÚZ@½Wxe© £¾!ôjM 2x;¹Z[[‰1qqq\¶Çê%/`ØÑnvƒj°¯î2%nI·!áÆ5K—D„+>fqôžØ>÷Ʒ䋎asï(Æ]MLì­ˆÛÇÅ6±z\ßÚÔts/»‡þ}ëÓ rrr°X¬ÜDAÙUÕK—.ŠÀ¤¤ÜËb”ëÅ ú#Þ¼>K{¯nw£½à†Fô # Ë‹’’ñ>¯éñ®¤<‘¥K—úë<¸ªÒöìBArŋ幾 ïê£o­[·nxx¸«:‰eÕªÞÞ^j²þéÓ§y°–¶öönýoŒ¼wQW/­J0¬N2á_³¦üÕ«ãiM¹uUUN“cÍÍÍÍv;;ãŽ?|nwõܹµÇ¶wt$ß¿¿ŒÁ²>=93ó¢  ‡«®ªªzùòÔ®k½µ©]5÷L'}ßëäß×@¡î™¾ˆª©­Q=ºÜÌÜ|¯¶¶¶¦&ì¹äi•c=ƒEA<žžžòòòÊÊÊvvvá&âÂÂá\àKÀãwÁjêê²NÝúšššBóµÝá/‹&&&ÒÓñ/|}SÞµlÚ´‰@ \¹r¼É›æá>üîéZ11±Ü G<ØN£ÑR|8%ŒÕ.aøŸgï^ΰCMÍÁÑ1ÇuPèþ‘ˆ^66¶3‘lqŠ1â7^udffFFEEtttd9÷U•••^Ðh­ÁÎÎÅ‚($òe‘˜aš°°°¨ÁÝØ„„•V´÷«"իˠוWνõ¡§mŽ„……;¶0 0ÓþÝ.mí³»å.ºžcÜÕÙÒB¤R¯ÇÆ>Êq¬?¶„y‡“zl°@c3?÷¶mÛÚOææz’H¶òX=ĺlèêê*³9ÇÄpYSX__Qq‘3‹þÛ# \]]hTTTÀìIEëb©ÎòÃ5÷ãã ‰A¼’ö§&w—HžÞ¶q[˜ž®n Ï»w︹¹A³þÅÊÁ|R m¹aÂÚ"k»®ÜºÅÐ- WW]]]RRR\lú äI¼’¦–dF®¢Šµuo¶ëàÒ¦¼”:ËXXX’nÞ[ÉÄ´?™Xè¿v«‚¢âÖ­[ããã/¨ 9“ÍÌÌÀânÚÚöxW²ÄÑÌÚz=‡®ôZËÁqR9íþ}f¦í«7 [‹‚:ônú*´T‹7½[ºÖvzj²/w<øð{¥ÎS픞ÚÔñ‘>“L‡¸„1†Ë A*Wƒ¸1O ßp꿽¥?ÜSW]Scˆ}óvSqóæÍB¡ÍÍ à(”â†={öà¬jÙyxâ¯]+äyY_otàßZèuâcè¹s›„—$­ÉÝ™!¿$BÆ}¸µ8¤=ð ™qœg*6v#Ð §#Ž-cYxòc5`&Ã&@‘æÁ³g°úvùz©§p33ÓMKkM£ÂR†ÛÂt_¾|ÙÖÖvòäR¡Ðš÷K›ûG±ÙÁÊÖíæO³¬YÃËÛÝÞ.,!‘gÛ¬`jjšÒP^®uioo¿Šÿ .÷àÃ…Ë·.ð–ܼqÑ‹uÌJµGQŒÞÂ;¢K’ª.Úªý°_v¹Ö› ˜ Ã8:7W×óÞä”?µ0œEÿ±H®Q¶oœ‚ãƒlA¥3ŒÇ”ˆç+èæëÞôü„îXôäÅ Ód}Ñ^¼ãàÁƒ@ä`6ÅÁ|êêêÓƒ,iœÎ,õ|Ã’*+8Öòñ嘿²>+_NʸÉdàgteìDñëehjyìÎ'Ož¤™–F,gfÞ*"¢Ð·/ o—_^ŽxØØ( ƒ|0Øôž qæÌ&fæu+ŠZ‹ûšòB‚–¼Ý^.Ω#°õôVí¼~®ñ#…õÙ®´‘Þ nëèè11Š`8¢pÅÏK¡¼;·U¯¨°pe Sÿf11 ¯ÖñððËvÉ÷^®ØëdÇXâ)@]Wg'£Ö•‹/ú¯ŠÙwC]YN8÷-—«{ˆÂíÛ·ïì´X~á¢E¡¡¡=ÝÝAA÷­¶™—oìm\ê…ò?ÌÍÃÃb/a._.žtûöÄXWÒ ø£G¬¾~jm‚¦òHK‚fOèBÆDÍwÏë¼¶;9a?Ä»ô¿ \‡zycQuÛàžŠvñã:Ph^^^===+W®dgz fll tŽ×ôäˆÛæÒh¹¥÷j,Ð4Ngã’r²Ü³gå˜\ç“ÐÍ`f°W º;_è+é<Þõ–©RB²ÈS?÷°dè“Û‰‰žÓS9!!/úò¦W1ôf9vU‡ð_ºx¨µ—;»RRRJKÕ»-ü.cÖ^t—RµBÅÑÑè`[[ø“*ÂF™°€[§*KKƒï¬½¥(«‚N‚=\µjÐâ×ÊÌ„„„Úï³jhh,=ÎÊÅu3>¾«µõ¸ è_EUuóÆéYY&YN ÑF ,hWõ¹z•äà’•%Pˆ¢gqdçq¥.}%}Ù]¯™tê—ìX£_,h|ð„¹ß׳Hð-â ùÌ·³O¬àÓŽn÷]ø=]a¤¼ßx•;£à" ñ‚}ž‡™mæÑ2ÉqÛ´¶ï{í»Á¶çuÙ®¨-M‡ ¤3ãw; --s2< e'm¡›Ñ>=ý& .nË€Éðò“wÎìÐÕÒŠÊÌ2 ô«I³çP6\__ŸLT~pvË~Nñ‰G†è¥§lW10\»öq|xSFæEÿúLjRLLD_£X ÿØî·‘ŠKñ–È«ª¾è¬|("¤—äÈ%°õº(+ëOϸ¼é^Y›¨£çµ¶/^PloûæA_jj´à†û¾/@O8Ü=JÉõŒŒBf¥&™U² áŸßôÆÍr«–'_‚Ëg³ô\×~øð’jà©k¯¼ZmOŽ¿¿á½®J\Bø¦¬K¿VVƉBÜš7né߆¹ø "7Zu qøý;>>™xÝ%AÜ×\ÞùsÝhÍVRm’ñœpS8Ö£º)Ìá<êpñ‡ÉñÐKk_D5í XÄàÔ=Ú˜ßÂÃ-–›˜¨sÆÕUPñŽS¢Í(ãƒ÷CÛ—Úçl1XÞb°sg”J€é½'NѾçW¨†ç¹îóí×Ùæ‘×Án´8ûûÚw— ‹’ßLGt·½ëéiÔÄҨíªÝ´5à½×‡×¯Ý}XLöì°=ýzµêº‚£\˜»ûfÎYI ßlaÇð DNÜø¾5GSrZ˜vÈ ¬ ä]Þ”›Ü¦wPÁÜÜg¢‚ßUl¹´÷êÙú†æÅ²Wl¤ 6¿N¶pÖ?<ÃÚ¸Šè÷v³÷74š|¼ë‹ ™/¬·±èjÌÌï®q‹ŠZv‚yß`9{òÛþž,gæ*…ý'JFºwŽÅ >[7˜‡—òºO(°d HMs±Øìõ¶&ÔÖ—’ÂiZŠ?d˜oÈì51‹óHµÐ“X²¹=ÆgBüEÉV9ω"‰¼Û‚ŽEÞ½»04#‘$‡óÙˆmô~+>=÷ªcݘ퇮ÕÊN]ñ "nqp‚)y÷.S•öq·ýbùáîímœË|NèêÒêZ·n•kIøÿØûx(»èÿ)¡$´‘µ"…ÙûØB¶,©Ð4kˆËØ#I©,¥BÉÊÒ‚z- m”ŠDY²¤(„(K(áÿ<3”z{_/ù/Ÿÿç7}ª™gî½Ï¹ßçܳ̽çœÃæº÷²Åà••€ :çÖx3ÜsßêÍ·oŸŒ¬Ö6÷„ܨÀ;b%<Ïo}«û«ï´ôø§ÁÝ*n#Gçw_ÉxwΠ½6ãŠqü†ê‘+ŸÇÈ3ì:œÜ 3=¯'œ?kÚøð‘nÿ;½+G–Yåîî¶îdE+W€§÷†Ì1™PÎÕ«Óöïu+ ŸÏ‹‹[,$d ñŽéE¡ÔÄ*e$%愬N ÉLxÛ•¯geõ´ZȨBRg=öîñˆY ]»çÑ£U½Ÿÿøq©Ä¤Ü+k¿~;˜»"-È\žAïqrÍϤ .]^}ÂÁávà€Õ†~ú®]ªM». ÷ÝŒ)Â@àDÖ!«â|öV¹ôš¶§ýÀs“Q`[ jŠFÅã\¥•ò±²ö¥ï+M•×¶·¾ÓÛdó –žîì JÑm鋉9åïŸ5þmow î¹ÊÚvm<>ì1S~cš’ß7Eà6Bð› Žµéžˆ¿ÒrZï8‹Ýöêõkô†¶Ýö®ÙºëM?º,åìýtK ä=—ü¶àªÒ‹Jçæ¦Â¨×w‚˜ áÞQœœ¯ËoÄyÐåfé¹_¡ä£â…p¾¯ƒ¥¥p#Þ÷/‡8št1Ü úÃÅ@#¥¾>ƒdW*U æO°`~ÁíÛÕ¯Tü>w®nÈYU{º«ËltÔñYü³Û.­‹k<‡èÍ}­óœ6¼à{Þ ”P)/»ññÈHCË5íÄ»ÊsÃs=úrÝÐíHŸ¶®Z±ôݾðOåEBv¾95/ì©…¡ˆSµádÈJN ÊvwÜaÌ·¯lUkßÖŠ”ãs‰çòøv ´eKú>| -’z;Ü»¤¨g^^¸•+_\¾|"/ú’cœ‡ûróEíeÏÛûnÝÚ¾FÎïiôj#£ žûîÍ[€¿_ôÑÓÓÚñ‘v}¬PXVZš§«r¡U~ï_8䮂7ZœÎ‡%!Ñ9;­¶ MvÁêÆ×ædÖÅtÕÆ7¯y£{®Ô8öÖ—÷ÛVŸîPv¹(Ù´ËéÍóKA|¢­#»$àãT6edµs8ÛìÞùÅùY\ ŸXôõȲ2 0?iã]¾ý¡è°ûNů|;:^ ”]\öËÇ„ð®WY[ó¾ïàMycƒoí}­Ö®ýfçήNuõSæWFd$¢ûÊ7rK0ŠLXÏø×RŸ6•&± .—·‹63›9œ-—¯T”Û˜v:Óx'ƒþÖ [XøAì€2_|úÃÐÛª¨õŠž=[s>­ô‘‰©á͵`§eU­ºrW¿÷‘¦Ýîûö¥$‘Ž ¸‹Áì¹pèkü1eÇèœÞóO—íQWw(Wž„/öò24,ýP·e„ß½óLö:ÆâBŸ¡ÀG]¾ƒÄЬÛÔ¥io;úm8©2÷uØ+þ¸²X%KAl$EÄOÁ©ÈA #÷iCn¸¯†Uí"ªEô:{{{õ ÎPJHIct,ª•ed ÿrÝaÜf4Åœ<é?zú¨ü?•Cƒbbx#á›Ëü*%õÔŽÄ<¥¸ôúõzXŠíË—/3ëâG—Ç8É_í} ïé8Ì @<'§?Ld'_íqM'ù;n]ë‡EJ$D4Öpµ÷©y%˜@Ôß,[Ê/Tìâee5Tè£í€æ\Ú¼Œ_ãêç>€? ¸“öbÆ?Þñ}dï¼Xy[RAÁþ†Gn–öýûÑ‘¹YYïZ[›oø¸ß{y]?=ý¯dC³ß°í<>f&&;n:%è6/ŒÐw´µ}/}!?¿¡´´ëëç®k×®65ï"rãMgˆÿ™3g>wÕ FÜìçnADyxxHqÁë³V"‘€ZçÈØ™– næÛ·ûy© ?‰½{¢± X7LMM‘(ßZÅw--.Ÿ;- w»r öX²~£×§mVVç#"ŸœÏ/ ¨+àå6SQQžßZ =&!¡9{_m¦ä¦óÛ‡Uifiæé6ùŠJJ•'ÛÆÆF6b€À!w&ÓÓÓðälííŸw ”——Vê|‰ÔߺõË"q.Òž=Ë„…ƒ+^¾L½|ù¸¸®¯oahè’Jsç"KÈëtp‰+««µ»· uzã£øÊöXûµ ÕÛ™™™7ozŽc£ƒ9ØnýíÏÚËc}Þ=âÏrüÀNŽR l73Ó”âU¾Iy|*‘õZ¿5RDuÿªÐbÓOKd6nìxÿ^d{ºõ1ñG_úÛß¾}{,ù¸ðíù Zwå¹PI$Ò¾}ûâñ^Ÿjyní߳譋¦fÑJ…ݞūµ |µàÄŸÜrBÔ0¹Øñjjªú²…ÚAcÕwïúçsn^¾õr)%Ezóæ²ŠŠOÀð\;vîD¡Pü†B˜ý ¹žFiD iß—·47/ÖÉ [JW#¤w?~ÜVŠS.¦ý– 77w£ÊžðÜ·çqP¨TÃXÅêÇÓnÝZƒ?™“ƒÞºukbš¢ÏàfÅÖ³jn‹Ï pù<00°­Z­ 6xǦcσÃÂÊr•ݧN-ïQüÕá… îÖ\¯¨î‡'ÄN|6±¶Ñ;yê`Ú¯ØpzõÊ•)ii‹!ºÆÆ„<—õ•æ£/ŒS›EU÷Ëèú_°–Ò -•çãâº`šöàÁõ³¨]mŠ8\¥mVKK àƒ®mðéþýûÀsè©Ï.½woÂçîî.**Êx}ÛwdP.Ö¨DÒj×® ŹZZ[µS^TWWóŒ•ìUsÍj Ò¢@¥Ÿ{Ù™`áÍNN|N»"ªrëâůEßíÞã¿}Õò¸ëL7·îº¿‚ô/­Y½úÒÅ‹©©©º!þgÏ®òõõ•ÐOªÌtãpØâŸ”tpõ@†´Ý³‰F?yò䥽N¼tôš&{"¯nák´’0o¿«óÇÒXËԮÇJîª<•Yša“?ØóJ‰™áÂÝ»w!¯Dëïç&]^ž á/+õññúø:X¢—.ÓÈü¦AÀcRŒMü¥K—²}†èY± SR„£çÊ•xµ¢=¶¶\Šªªwq×Ǿõ?[³fŽŽNma%wìĉÚ/Ì,-O„† mϹù¸¼<¹Òð¹,,,šššZò?Ê›æhŒ+nïêÊgv<^11"**…Ÿ>9eÙTR‚‚JRŒwA àÐPùqÆ:øÒ[¿+y£âÍ× ²³«++·jj’G»Ÿ>}j›¬‹ä]21³¼K–ô÷÷WvÇÄÄ’iUAÚ ¨éq@øï[Ýõz"å¦&ð„Ê[÷Á…ËùMán ˦Ȩ(c`I¼Úùæu‰5p b÷iiã‡öºYÙÙ÷Ôƒñ¾FqÊ;MVÕG„ðZrU„U>î ˆ˜[±áá÷(ðJG|pì!U xÙ~X¸¯ç©K½²\Ý.œœœŠ±»wíŠ>¾«­­¦ª*0‡vÝlY@¤Û³X%é«ÊGS®ôܺlµFþ·7÷=|øp?¯l¿¶+Ç¡®©Ð§rP3h©a¼ªoe¢v𠹯ƒ >,tXµ°°pXI¤ÞŸ;c•<.ƒŒ¤äþaÙvQ-sÞ²OàîÚÚNž< ûèø@–žÞ±{{ªX¯À#GdeeçC–¥‹Qö4€¿ÔúxœˆÇß;³Ñ,ó¸Ïíü¡º#ˆŒ >–·X ÆÇÍ  g/$'·˧®n1d¸+ãíi4ÀÐ …Ùßfè Ð#zS þ¶HTÀ}íM–ê;%Oàê5\*ßå‡vΕfbbÜí'_Ï«ü¡wOü¾,„¼yÿþ}K‹éöímÝÝ…®íåó|6ÉÉ-„4_¨~ç{ÓãcÓy ã~QÑuc—Ä¢Â7–†‰¨¯ˆ;®­›ŸÞg®©©™Å» ²¬Ìx»Ïd2Ëcp/*+ï5;í²²º^xÓgYÖ½ó[S×Û<Ö¬ˆÖŠnkk î–vùr˵£ïc”<Â4Ld`OÎl|¯ã啹⫥««ë€Ÿ6Àý~~cÅÇ0/ýåöÅ5Ê!—èz–ö7›å(ztCÄÔnß¼¹jtŸ«kÿ‹ã‚ú€Â177·°ˆ_R’T _ðƒù®ŽiVòÒÂK—.x˜«ïè×Ï|jß–-_>âäî~Û©YÑõòñQZзFX¸¡¦¦­½½$wÓÕ2‹ú(fBéã‡98iz{¤GI@@À×wÔßQ×Òh”æååÔƒ¼õM¯###ÃÃe ÷ïäŠ ã2CµAÔ|ü¼ll^uÕfö¾‚kynd2\fewpÈ»7ìõ¹3âà±ÐžzÁzõ£÷÷""·%é{·ZWKÇoÙÂÉZ¦ñ©nGzjª­ƒCH” —–Á]Fü²>›¥j­oнW.$¦¥¦.{}è”Dâ¥ÄDÒýÀÅr­III§Ü´Ï_w¡oS¹z±FS1ìx+vý†‰vZì°¨‰x(VÖÕË‹®zò\Ód~™ 6ŠãMôÅ\`*ürâwꢔ·7cWU(+°oÉ­ì`Gß7qƒI$¹Ê“]]%Á iIW¦—ÕÕ–JeJŠƒA¾H @šÙ5"¦~cOt'²¯N„„Ù;»Q]¼äíY…'Øßü·Ž/úD@¨ë¯½§ÐK'ºƒQ|sJ2–7u$Ofž}ïõƒèÖÉP&Ž£o”g¥“s‘˜‚“C{7*±ÚxØÑ) ò`Š ö u©`)àûßC;Ì÷Ÿ g¼™Xuq|“a™¬º5A¬ vj2v¾b Ñf°*˜ˆÙáʉ¸µÄÏá,v± ü°ƒ¬©`E²}¯Š$T’õÙ‰H¡L|àQf²©c¯ÅYKWG¡<•$Ù1ÛÖ-œ\`Ä«fŽädó‰å¨4 TEud÷ÿNÚD?v,÷L×08ÒDà™·â7““cg‚—üPÓ þ¿‹ýÉ(v™> 0"º›³—‘žÞ<—Þ,-½QÉ÷gU09Í)‘ø¿ä'™Ì‘2 ÊO—YÒú—×~kš°§ýva÷_&WÛgúƒCÿ9}ƒ¤êÆd %ej&v"°nxö”ÅÁSîBs!îud/ê)W%IR'ÎåŸLÖbIð)íè IUðÙÃ&ÖÈd†ö$ÿ}Pø4ƒÂtj3'0è”ækqIÙÑ©K'¶˜è›à &ƦæSm3 s‚.ð}ÿ'ºàÓÐÿÏtM$?š#ºÓÐ…˜ÍC@N3(òŸ' &»bq‚¬8;“ XÏ ØœÊ«“ RtVI‡)íØ…  çÊáp¬º3ÀýÒä˜`õü/PPh(Ž#Q H8‹ Q(h"CDÑ4 ¬ÕÀÂe«™1À‚ñVñyAg6óiVb6Ëœ[8©pŠFó… QTŒCÒ0h2†Š Ã4Ǧ9K8YÉÄþ M9ØÌàDM'j6pbçN EÃ)hÇPph*”B„Qq0 ŒD²)Åþ œ ¼ÁoŠ7Ô6×65û'|fpâ¦7 8‘ð¹…AÁP d ƒÒp'"Hh ‡Ãq0,‚E)þGp µ MwþˆÁ‰œFì#g#ö‘è9æN‘FÂÀ‘X"– §Pà$0‰)–°*ƒ€ÁÙ²‰þ#8 ô4Lñ¿‚ À‰œœ˜iàÄÌNÔ«" p%‹$‘±0$ŠCa K%¡–-;QÐ?‚ÓÂh«‘±¥Ë$™ 'jFp¢¦QE¨Ù¨"Ô«"" EB±(0’'¢±X"¬s$AÅÙ²…üÃÅnN0³0ÑÔÖš'zfpN£ŠP³QE¨9VE((‚†Œ$2‡£¡ç€‚Eip2ŒŒÀBQD*›Ò?SEzÆ¿×옙Á9*BÍF¡çXÁÉPXÜD™Æ²˜0Hœ†Aa(H4‚Lcs'úÏT‘ŽÞm-@‚ê™´whjkk±˜T;#8ÑÓ¨"ôlTzŽUކãPP JÆ‚ål(X2hÑc"‡¢Ø”þ™*2×3Ô ÿÍžF¡g£‹0°9ÆÜ‹ÄÀ`D ÅQT NE` T,ƒ#CÙºûÃÕþCvÌ´MõðlÃsfxb¦ñÜ1ðÙà‰š[<144M"f&¬³„&R1*œ HO‰H†Mà‰š;<-Ì4¾ò3sŒ0èiðDÏOìÛJd8àL$Žª—Ã…2Qe¢øïš°kš€§A'[ÉþxV`º×ÿÍE#Xùòeþ™2;úwòÙ]7þWø¦Ñi³Ù%‡M³Kû·]ò_X‘J§ØÑÄ'Ù쟶ÓÿñÄÀ”Mò¾É̘5Íܦu¢˜L²äÔ¤é¿Åy…ðxåç1'Êèÿ÷óáßKë0™*Ùnj9!qV=¡ß×?xu’I?X¸˜¤ª !Ö¡oEe’ªøïÎ ‘ÁmÖ;W6yZ<\öÿe‰4–Œ¤@áX*–Іâ/0Q hðg*‘„ à&Ž:ýr$|Æ¥FÀ[ŽJÅPQ€XæX2–ŠBS‰€YD‚#i˜9ªfòÛ£Zÿp>ìêšü?ÿ`w*‘ fþ&2‰óçÄ¿3I8Mþ?(à*þ’ÿ†D¡þ'þçÿRþ?àïK®EÀ¿•®û¯ÿ.ÿÿºÉü¾&æÕã%¯ydìùd/ôä¬Ò¹¦¨ñùAUeŒÈ¹#¦êË‚`ÛÌœe)áH‘½å¼ Wm5pn³RFÁÞÿj†>‡8˜±@^æÆ£¾Ìû7â_‹s÷ÈoþPdS®’q.¶¹Ge(æYO°OOÞPÏëÅüüØÍ‰L~Åùa£o\V)¥®’"6Úš§™k¤™sWf9»¹=h*ôï/Ê•{wÅ\Ö¹§'íŽ- [[t˜gå;«“*+!´§Ñ kH˜÷/Õ” çªA«µÁy£J¡ÖòENy¼E­ðÔVo/¯Åklø³ó=>rïˆt¥¦ã¾!bj¢I:¡÷o¹uUÔ×s_èWîî}{i·üaÈêC!!¼ÿŒ ˆºlDbbâ}“Áª4³O½½xuuHÍÕdÛ¤´´ÅR:!w[K£Ö~ë¸ê¿@\R2@RRÒa;D’<dF¥®·És9<ŸƒÃîíÃP-­þhÇz­ÐÐPæ§7ø5*ÞYÄü 5U÷Ò¥Éä’°mtº¼—··)@?ÿZœK`²Q¬¾wámÂõy®^ݼI­Ùß*áÑR|ì¢ioiŠQlâ1éåÛÚ£¬vîÔÓÒrttT Œ>åÓúDHRòys]„~Ú… þGîöîX¯o`ðÁÃAã‰Ð‡¾$¹´«W 6tõ6e‹ÔÇ¿=Ò’â€á]ý|¯ÍiiãE^÷Ô6oæ­««;«ê«h§|l`€)¼…N8‹mSí-‘“[ÈðhEE…¿ÚØp‘“Míƒ}'êFÅæW¤¹¶•ã`0çKèÆgOæïÿââ㤵µUfãF¼®.—êø7×àœBqun®íå‡RŠz^åó ¯8­]$àâñáå<11±²8ágjãÊ Îú«f=ë–”’’ˆ*]’ÔÔÑ-,,Ì/*JïÊì^*PÒH,:"±qãb===®÷ bî„ò'O:³7C<==Å‘HÁ*ƒgCÝD es"—þê~-á@èÇÛ#Fï¾ð(Åáp'u×ÑîvCß¾ô{¶Û›éýÙ¾,^íµ¼ãKá”×®šîQƒ´¦¯ÔŒ ÏüœâŽ!ëò»ÍßYy°ÉèèÐëÄ/Ä[{¸œóI]5×ÜMÈx|Beëb³%ä5×Ö§Ÿ?/,$$´¸µiVËÙx«…²ÜU;†)lؼj=¦.ÒïÚ`5úÁY¬ß_7fgè¡%1D#r tǪP©Û¤ê£—>–8ªA·£«¼yîňBs‰„“÷ìNÏÁu¯1)9” m×óæöUÛe¥rji="¹cóªlȪÉåYyæÐžÝ`w.c®uòê_>x<5(uLw,Šm¡¼Ý>â­’€Œ݆xáR:–t¤X=fp7öÔ ÛË \¥D¨Ü·‘Ê­ÜÛÚz½ŒÒ½Á»Çwæ-¡aSÃ}6o,¹–_ÿ@› çzjIµ“s—Š˜vÑÓcóVÞ™wÉË#¡ö³o]Á5{N-)^£qáË[‚»:EcJí«S7e\¨\ŸÔhûº9léSâѶt“/ ö‚wë·ÎÓj‘)v¶Ô½Ê^è?V½T´YBÍW÷ª({‰ñÚ7çãÔÏ$†oÒö’/lª¤¾HÓÔDÞß÷ÈÅ ‰Q¥LS‰äøÅ÷®½FÉ»U9R#X¥¨÷aãªtgG©ÿVJ®¦&›ˆR×SP™1‚æ%Ö‘§Žï–/ÕÃk+DµèµÝ¿pé>ø×º…B†¹›yö *\úªtQn¯÷“í7xîė¿K¦ ‚ê¤wš ô¡Ïp¯=¢ÉÚPn_ËÅú` »ßú‹8³¥éý’'ùfÈuç·Ý´>2Áz•„ÞŽZï±ÍÞõ®µ5!‰ì¤Ê™1ZŸd«ªF7QûËR6‚ÔÓ˜ÉØÓaÐ$æ7|¯ùYAvké+*6Ô9ŠG4¥€Á`F n×t0!Æž-/ÅkLMMõs”Š&§¯šÂà ÀÒùrÇð—/Äâ£ügaä#NGÈ%lžvíâƒ{\êë¡>ƒ­eèõ’ãB›2]Zõß½{Ç%iQ0Ò“¿"ÂÕ¼I÷Þó ““IõYvÃW2x?žƒ/D¡PºúúººGM–œ-.Ö ~‚“e\ÜãCwwGç8Ô‘üöï/(‘„®X!).) â ÊÈ`œ [I†«§™ßöŒ~ŽwõêÕÃÃoO⢹££Nêº%'šß‡l`æÔ ¿Êo½_£,'t/¹¨wúdTç]f“n>±£5 ¸IgÅ8}58$äâQ¯À'¥¥rc鋪ý¿P[d‘[v]Í=üüéÓäUÑÞK^1>ÄŸoíÇ»xqó—Nó=sË ? …'"_5*+6ëm~@Nt-ÔèýhÅyx)õ.—)übï`Ǻz cÛq† ¨o!7ýƈFBü+.VkÆõˆW^g«R²ö íŠí%j±[!ÅáImÏ6dUes@ô]»ðÞ9\–%žôyë©bÄ ʲ_k~ਔϦ~—Ïkûì™Y¢¾ÖëdJ-yD"eB¯ÎÓi¬U^µ Ó-𡳲òá˜É!¯õ l5$›{G6ç¢HÒÑ·çù÷ªd^î>˜5?péƒmÀ¥ƒ;~0¶ÌÔAºˆ ¹—¼ƒ–¼;à²BË5î»–òÎ{µ×„·¦N°mYacÖŠd´Ô__2|@‰ç®z?DõBgØ‹õmY+Ö¿p¦¯¹’Åü¤¤ó±ÈÀk%Ý&é½({ËìyÀxOZÖÍ-I0…N˜È1‹+Û›ë³÷¹‡”«Õ¡p>^³ý~któ`wƒîÖ­šnn¨H9«#»%hvb¬ÓWÇHÂR"œòhº††âT|Þtuk-mØüˆ[xxøÉÒV#µ]+>Ì[Q>ßM‰Ð=æáäM'Ü¡»œäW~ •g8®š^ú±ÝeGÁ²ú'…|Ð’²4ó«½*ÖS O ox=’·ù±wpM]ß?êODÜ[q=Á ò²ÊTœ,‹"×—‰d`@´"\ Ö¶Új©« â¨B+nÅÁp+¢Tð'²œ¨8þ÷¾$ Hh­ÿ¶¿äÓjò¼ãÜsÏ=ãÞwÏ1=Èil\Š«<ê `Èê™$øƒì€¾¢oåÓIݬ-,Ì€qœµaŽ0à ÖcäÜüñ'î¥dï¬Ùõ¾‚ñ(~ø¢íÞÀ0ddgÛ‰mÿ®í>;7·ö«Ç'ž ÎzuxZCÄ­Ô¦"uy>5àHß©S§îK¾8;`nQÛm»Îåä9K…Âá@ –—KâJÆõ±Û1ïPÊr¿x×6ë& ãv ‹ß»ï—Ò‡'gDQ”•’BsÚÿåûw ¶nÝŠW·¨¨hœ››ÃŒý£.J+žŸ[ë8gª´Øy MÌéÓãbbb >=õ¶¦ºeá»W# æÞëDõÝk|îûÑN­(ŸoË-:gžq%qB|i%pÒ{€6N~;lªïtèfJø>>§rsŸ:l‘vùñù³g qþªkùù+²ÖsèС3O-édlbâ8þáÍ@çI“â‹â+v—Þ>´ø‡ÀÈî²…}5ã=|}gç)Zm:r$¿jÿÁis6þú"êÚ›:-êþ}·Ï–C‡LÏœ9ÙùµC+çyól¼-zÁ$¥Õó»ÜYø~LÔÅûëvïÞìäêjDÙ”˜ØÖúØK3OOÏMžÛCÊo²†6}Ì•Ž:¹€XÔÊï%Í7þÜÖý;w9šyÅ¥:cã‚5åñK{,óö¿Ÿ•‘qüúõ> lÉɤI UÏr§à¯ž?gxlˆ[O%ÈŽ-€#ðß¾~N‰êÔŸ=óÒ†1ÓRùmïËy Ò‹/ˆh—““¢ãYñýS%·Øÿ122³°8»cm`Dq/ggçÂ8ëcǃ÷] ­øö¡k)~ÔÏ Ü›8áS׃G!1R{oé×Îdqk—ϯJ®P²}·Ò ä³¤¬ò|²Á6¼³mXí°ÝÈ‘Æó«+ˆ rN¯g¿i©é›nÓµ4“°÷÷~âÆ—€\ØÍø¶&_q©èšO ËرKý£ïæ-Añ¬™9?» ¿þø§¾e'÷¸§Ö)·§ïvû¤ûúæ~šD>AþŸ:ÌÈ? ý«þehã± þaÀÿø´ø_Á%€ªOК+×BìÝ?‰# ‘¿ ^—£¸³Y× ¿Á•NSÁ¦28t=`SQúÿ7J1Ibã²84=°qã“'qs•ºÐ^ás@XÌÇð`DyàÕ}Í™š.î1Ø4*ƒ‰RY 6•Áæüü[…~`Á° ¨`%ûç t=úoz«:û‚\úS«¨^aÅQGbÅ`€ùâñbµpV éµEt*:¨Ayt’œ«fÉáé¤FoJtöOeB°9Ä(æµZšäüCµœ#d×З9Z-èž2&CN‹Ñ,‘Œ¿ÿšÁc«€”Ù}€Š™MC¸5†ySÃ6ÊU‰|ê–¹Á¤D@àbLý@„2CñÌEiúPÖx½58ƒþ{4'҈ౘ$ æÓ È™£“?hpà+”r ‡LÑä•‚å´8¤ƒ!.—Ô?<Wýƒê^T-ኖ 7É ¸q*Ѳê4¯ï_qþ?;„˜e5[ñ‘\ãáÓÏ_/ÿ'Êd 4ƒÿÿ)>a˜©›odŒÉ òÕ™ˆ. •*ͨˆ™–8¨o—ÓpCY<.›‹ Ø4—‹aÉbl‹Ã•¤¡b1âOÕ´%ÁäÁ„\gc4‚ÉEù¨ç  ”‹cWÀ` 9LŸÁb²k3ñ·5,×OŠÿ=ÖÝ( ã ?® š[ÿÌFëŸÍ¢± ëÿÓ®ÿ†óý]ÐH4Ô/¥2i4¼,Í¥ „ºÒJ²9|:ðޏõŒkšm–‹8Çdð€¯.@™8“ŽÒ8!N¹0§…Žfe@¬õ#ZÈä t>B!›Gã P‚ ÃKߘ€Ecáÿrý£ký“¯¦òé‚.`ñø@×s™‰ƒß“ÃeñBŒ!Vëc¬“¦µÿÇ€ù¿é,CþïOòaX²|&ÆÆ„'p”ËàL3x\ 7XÈÿ=û¯y  ”póP.þEþ?Aã°ÚÔàÿ¢ýCþÿ¿Wþÿ†ùþÕ‹Ð*ˆLòxBBNHqCºCºCºCºCºCºCºÿÿ…tÿ ¼ñ›ã_*‘å¦}ß4ZB@xïª9œ'/H6àgK‘švjþ0h€vg€Û|± ®Ã¸$µ£÷†Æ‹¼É“µ‡+ð DžÃA£OÓĈLŽu§ù¥zÙƒ¨ƒ°Ñq5t¢›ñ8x»&/¥’C㉠„»*êw­È»©|™ÐKÚF ˜,L‹æ*0½q}P[sFg]{Ÿ¾à£ö\›©©u£½©2‚èš2³ä²ÐÍr¬MÏP_åÀ~M´ôNÝŽt˜Tî’V‡ †HIHl06J£ Q˜U–Aðh8ÉC¹4Ÿ-࣪Iª­åjM~!d4ðÁB×Ò ¢5?IßW$Uj2AÀÎ5àY¿_¦TÊš¹&ß@—›ëAø¬@M-ð·*›ˆ*OƒH@Ugl&"4_I¼‰QM²K@(ð–² Ö!™e×;`3ì¼%VE‹„"\-шf]iÝå×gè“drÂÊJ%†|9bÝ„(ˆŒ Ì[.^šªfõäU{œMʓϢpSÈÆ˜\”Åæc.ƒÇ¥s6‡ÏùÛÊ\ó„kÉܬ%s-cWKdΓPÊEˆLõ¼æ)i¹àµTô¼ÚˆP£*„Í«ò÷Ô?T>|ZÖ™,ÂDgBå0­J*Õ¦'qÝI%Œ`¡Ê 2áŽ@iç@~&G ~ ìœd!¤(#t†xá@&W¹H9pž€åà`0‘FãvAG¨Z ¾Õ¶IºišÀš#à;%T†«k‹DÈBAt.Eä„@SÓðC•ÜN¹5°£™@$Œ€B¥Ð¶B#|0‰BeÞdìä©ÈDB\~u-FÜCA†#EÀ_SQR !ð‰"H^ÃZ®/5ˆ« 4N¾¶e‹"ðïr$ X/8(º¦ukTèPŽÄ”n9"#'` 6Áom=+’U&pü& P7NðGÉÆƒd!Ð'Í‚†‹Äb„O@oQ*¦" $âãæ=æîv˜<ñqðôt˜ì=Ý”³þ,U;" ˆ@³`TrLªŒ€ÄOrñtÊ;8ºMtóžéwuóžìâå…¸NñDwOo7§©<÷©žîS¼\¬/‚Г»Br’Õò«=òé`nÕ8JAXÔÀµ"Da€> â€¤µ` Å2é,r¸*—FÍM[D$„bGEÂŒ'¨©É¥"nRÜŠŠ°PP“‹÷½`x p Aã®bà¤QG™B ‹Or@ht¥F4™êå€h¯U`ÓÄBÕ¸<ˆ³6²™z©ÖjxLŠÃ¥H®}ôt¦´ºÚ€™5z"*³.Ønèó©vÉ4A1ܘ«û¡ÚŠkX¦‹ªoJ4_ÚÕìFêxX›î hII] 7ÄBKC~ †:¥!± >³Qô¬Þykv,dkÀÔ™Ùé¢ü¯$tú¥œtHÚuÕlŽ~äŽjr khwÐ`CµÀ dðÖ Œšôq!T‘P #G­P/wøº\QkÂL.!My͸us ¬z\P/ åä®ÜçÖ¨>xƒ¨=-/áÃ-’’¤Õ$øÔkžõˆ…þ-ªgXݦ\Í< ì®~3µ3€ j%ß”+ ÌSñS²WÇ̱îä\r9°0PÕÖ©!*wA³†hèQ¨¢[Õü‘£†vGk†µy ßMöE¤®¥ P`*ë(­_ˆL·tÔ¡õ>–ia’4}Ðã4É<¡&§’„¶¸“æÿHà>؃•zTõ7t[=­¿õQ¬Áúü=­O3›&Ãó1<`ÆZdsÔÆ…$þ#Y“?­èÿéV™t[ˆ¡ÐÆrh‚Ë"XÀ²2„.6C?RÔm:N½ ¹O ŸÄý¯ú9_ÿ`ú‡æïјõó¿¢”a¸ÿñió?ÀéÖäx ¿ëwÔ;T%,xP¨4¸þá&ùHÇ9.‹ÊfPtÃUÑ¿õýCgðB: ‡0ˆ|Áá0„8‡‹±¸Æ$ï虺™üÏl:“Õ ÿ3iÈÿòi>:ò?Ç‚ÿkÈüÏi¯:Â2ò?ðÕäŽð^}ývvz›ž}»ÎÉ"67NFSóvU¹â{g÷¸äÑ _»9˸oŸŒ«1TÓ„#n÷‡–oÿ=ÊÕ­4ùÌWWÛî¿Òs2î8¥«© 7ÛÒØÃauëS)o ì¿îØæ<ƒV“‰wéqĆù••ï6,ÝžP“o‰˜µŽÞܦÂöxJçµî}ÌtĪNžÉïÜ119ÙxÒ¤I%a§J—ÇÇ»Œ·ìDY{ê/¨eO“œÜ\\ÊÙµ!#ÃùM±õBtí˜8Kyóæ­úÎ<óJbû’°ÌÙÓ÷[µ:zô¨QÚ™›#;Ð6Óæžˆ9Yض‡ItŸ‰-ð…uÏ)S¾º¨Àï²iGÝ~‹P$ôïÛ{¹óy[©O:½~†ÄÄÌExäG0çÊ—˜—cÄÛçáçËO¦ìÝË|º²¦tç oïeùùŸ}Y#iëçç—úÈÈ|^v—„îg/ï(zùøÒãÂ袵6×:ÜÚ'qž5«Ý¡Ã‡ß ¾Õ­ßÃè¼¼q?ñž¦}±&ôE™ÛgÏÜ™I“Ÿ;ºf W†n?²ý™±ðbǬ«Û^¾y: âØøkË×Ûæ‚jq¢Ü7Ug-r®%žlÓ%¦ÅÌ|Áœç³Ë“ç´*¼›Ùzk"1ó÷]7ªžv8^q{ð¦ääËA•+¬{sÞ\õ勇¬Ù°È÷—¬’ £æV½Ýuy¾»¯ï¢ÜmqHW.bŽ÷Å!û·ðžôº:›u%7ðøØÁG£ÏŸçP(w"gÄTÛ™qã·©Ä9£]ë;R^Fï÷ððX êS(Öé?-êbÿfÌø Á…GEùEVöXýÍÝŠüWý.ýìËo€mäå-ûÒ©·åì™o<'txlCY1÷Ý× ýJv[P7º›tùzÓÝ»òŠHu•Öݪ,{ð r~™qÔô¡£ãɽe'sòäÜí<ÀþíÖ¤ð‚WkOž2ONN^Q]$2¯d]¯½üL“èwþâ¥ýb»ŸX?%¡w|R’ëÕëïÛ+"ç¾ô^ÿÐÔ´ô`°}:…]²3X,¾ü«-w½Ýœ¸¸÷+³§NLÆ -ퟑqþê«]YYI‹=§&^ìeÒoÑ¢Eݺv]öã‘IÚEedä»ü´Ïi_ö¹qýzà)ihš§ùÀ;¶M.Æîe=x\´´æñ6ûKöïß³;›Ùž=zµÿá}›vŒ_iéó.^r‹Í/>;|°ì•ÞÞ>–>>Ñœ‚Ëž•yßÄî°àYX.ÌxQneÆ^³yê»OÜ‹ÎÈu÷òZ z/Ë_·û›ŠŠÛ¶6÷ºw XjÉ[:­¬m¢gÖ@aö¦^ëZEµº5²]—A[._ù‘î2±?{«¾%Ö´ÿÔ½sîõ†Oº» -.)ùfçÎqæ·Glä.¨^|yõ(þx7·Ä¬¬‹Ø-Óè={+7­^íýäÉ“!ÖÖ7>}4e¿RÔúàž"Ñ…ä9ÅO†·¦•aìØÌó©]W¼v{¸Žˆ¿~VÓ­gÏŽ”äßšÁºE¾ÜœnòäYÏM‰™?,/Ø5㇨ö=¢ðì•ýÎ'MòsjÎCO4¬l\æ…Îå¼¼(NÁ錟]&\(ÿ>w¼‘jÞá»á›ÝúýSûߊŽÊZ9pºßË›i%ƒÛ¦9‹ç—pýü]òöWž^Vô¾zaÍÄÿÆ?Ÿ>Ìÿ E±ØåâØQ£2ïŠÃ—HMMwa2O§¸v²isò#£•Ük¾ùzôŒ}}ÿ½¿«sÛÒ„Ñ$@‚&$ÁÝÝ ¸»ww'B‚&ÜÝÝ=@€àîîîîw®ìsº«ª«O¿ûVõ}îßßó7¬¬õMc¼ï;æšß§z¶ù}bêê8ý‰Ü±’Y*_ög9¡gî²[Ïû©öz¯Ášª”ó)T^ÙJ/-=^?ÏjŽ Y<^ëé°é{ýAè*¶¸éúiaaá{qñaîÂêjöÛÛ[Yee£G4pd?’»úû;Ò„ƒøoSêjîobe-ëê¸n÷¬½Û®Ïv:-ôÇ Ô ¶KQñ¹ÑÓÓß^O4”‡Ü4FFFÊæ*Ö‘h;ÑÿhjâÃãr@4/ø(KWž¨Vn”š R¤É˜âå;‡´ÖêTãvF5^¤ÅMÇ­-íÔ§Ì>»»kÁs> H#'_TT´7†±Í·Â‰öGTæêÆ 'çѹE­ ù„PW_Ÿ¿,Å/0B=ëõÞX zzö/´mEþv‡‹‚¤dd­}}}DçzzzÐs?†÷,'ÝU¦xý¶¹:^³ ID~CF±(ÛЯêêê40 %pÛ$özÔ~x~.",ìßb¡þÔ‰òG¿4¯Û JJJøj| Œ6?=j«µhsó¶í±:÷ÑèÍMå³É§SSS.×[ÙK;æ—¬šâ/4â׋å¶³/xè—”F¤¾…1YãuW'·T!îäÄv{wWj³$”>I¸y5©ÎÝ^ä7<1Ѐ¦ßÇjãàÀ"NP5}RJúâÅ‹”¦&‚ñBf3>FFF¶‰”JêÔÕÕU"::Ôç_ß9¯Ú¢ãã÷‰¿0Ϭ­Å&—IbÙ|¿ûþׯ_)eeÛW1ÏëŸu'{ÂCÏÝt#}^QUµ<^¨!2У8)«\¨þ +}ƒU¶RIIië‹)錄,Vßñ±]:tÒ88^aK•²ÙÙÙ1x^;üêèˆ#åG@@ðóócHUÅØÛÛû&žé²ä%Wüîµ cå9›Ãx`ÒÚåÑ ðÕ&N6Ëi¿”"豦5¶+ó¨kµµµ1œöd³ss¥bgÝ5¯ÄIŸ+§©bprrþ9Mßù@zj7==ÚË—wÜ?¬'›ÙeaÎ÷ç‚àP;Šjhà–••9¨$ÚÄ?l§u×}¿jÇùä,EJI CwW×Rk\|¼ép†Ø»w.Gz\îç4XN'ëR×üœE 2É|RÍ󽙕2}ÊI‡¯á¾>>ž«Õï{žçµ%ii¯ynmP×À•SPà÷îõÇìlò*ë¾ývøºßl#ÒŒÕò(‚22h†††C±ÌÆ9ÕÕÑ_¾žîZXH}dYÎ3»¾\ £|ýúSww÷—/&­~O ýÉ+(Ȉ‹ÃŒ]¨Uï¤Éçèì!K‘‘.ÚšùC(·¸xCçøì,sBÛ=Cö£O^^^‹¿¿ÿ‹—/…ÅÄÄF''Ï%ó¸2i5{%Ö[YXÊÈ ØÞ¼$ v?ßŮƗøùzÂf$¸÷~Cnî“æ‡»ƒ¡™$~~~‹9gDDD0·Ã##GWÉ+G„ï qp‹Šèöë@L7_¶ÓwìEÓžyX¤…09<þ˜”D€þ,..îÛPˆ(P+‡§V)ò‹ŽÆ2`Âv†ü¬sÜ9lE¢ ‹~›«øúÍ›ÇOž¬,8s’’>z¸ðî°ì|ÍàüÝQ\\¼£‚@Îw#RE›ØÛÛðCÚ訢™µ5aµŽuã¦ð»wÁ3¡oÀgLep`6ì~Aöâ³Õßõ¸ &3x¹Mü<ýß_ÓëþA¹[MðÙjvv6E9¿ÐMÆ€ìƒõð¹âX^lnI 2p_$`<ˆ$ÅŠÑøÆÂVñÌ$˜A®{ÛÛ8ŽJïõ™JÔDEÄŽ™á•i_xvUYÍq-ç}ëèèÊõF­çS  Eñ}’Y_;Sm†öš„äèlBÇ\‘Ì$€ÃwKJLGÈBö—¿“ˆ¢ãá!WjsÁÍÍý=) UGGZšàd½`"Ü ?ISU•ÓhÀÃóTllì^w6`¬ÃB€&ƒ²aüTB©è>ŽHÂæ˜MŠT™ºV;«{Õ Y55á=kŠT[¹ÙIÃ%p>ëý‰€,••EJKKO¯wŠíu§ŒÎÏKËçþ~SãPï´—vyé"Oñ"C–‚‚/Iã§uNrz{aQQVh(*•¶6­fìÁ^Ï\®â#§ýò 1²¯_¿ÎihH¨§£¦yÞ½Ö]»þ<ü=©æd¥ùÄ—/~TH´TUc¢æZ¶à™Õga>k¼”'ì8ö‚OÚÐì¶aLùJ’¢¿¿çAŸ›‹«Â‰£¡±11!1±¶ðzH œd‡\Ïþ¢ƒ/6-ÝÐï|¡í6Õ…0"¢\E®,ZßJ9X88Ve<+bm¡–Ħ˛û Çïwww¬»T‘â!+ëkkKR:ïïnl/uÓw]yžÃ¡¡²˜>ó}ò†’òInn.ôtêÜ\A#£,åü¿×ìnTºleF»ì4™Qedf¦æå=,õ^Ffâ½óF?~¢íWDj+a7·ë’|!œø"»éãTØê¿‚+M”r+ {0Ÿµ¿ÀÆsuu%}þµÆò#1QŠ˜˜˜3ˆ’•5’‹›»¶¤¹is3´z|t=ø_\Ffcø )é·ü|ê±ÑÑ`œêÜ\ÓQ%â3]šƒý¹úG>ÒÉ|…Î^QŸZü““eg+%ÉÒKJJܱCZ²Þ0E]Œ  A6o¯NDŽ»/_lSÒщ˜™QYÍÖ|òÄÀÈH}ôcý]¡2\É~^ç¡®îîOÀªÐj ,Cx­%YŸš}­¨®†«¹XIaÕ+1ªyOÚ ÜXy¡Ú:9µ¬Œ Þ ™åÂÍn¥%Ï{§^„fGNÉsY&é ©1>@JhßÑ –¶·g®–¬lõÓƒý{ Bc‰ì_DnZf¦ÿF.KKKÙü1IŠà¡ZÇLÈ]“YÅ»ÙàÞŸÁãÚiÁ„í“îóªÔÑtZÃÔM}OÛФ¥¥ß¿ÏÀ¯,øáÑAMµÕÜ'Y ¿øøøg¼L|êJ+aü¡ûûVåAérÊÊð **&1¯‰"­•»OÅ:ͨ€ˆòu¦ÛȦ)˜ûù¢ñåÙÖg ϱŒ`>î'…ø˜Ùvw’¨…‰Ù"›»kG²˵IpÏ–&Kõׄ}?æuN—b§JƱ<‘ˆ¦vrªªÕòyÒ+&-Ý‘)m³ÖýÒ¾¾uhtôW„þþl-"ZuŒˆ¥¹9õôÌL¬, ÊGVóqèîoUT¢kçõõI 1_QôAÞãã¸3=…dt?jµ–:4@×»ÛuYÊ™ ļÞýí¦ÜÝèøxëÜ~RRÒº“áìd‚¬Ï½ˆ¥ àGm’œŽ”¢"ÔÔÔT£³ÙÉ Ù$×ul7·Ðë¡ÊB¥6ÐúEcù*+#2üŸÅö…MO«¥CëýV/4~¶3‘^U…¹àq2å‘“Ÿ¯/Tê%“:9©ZÎj@Ív¥…ì…ù‡»ë3€þPLr¶´¤ýò¥R®à£R¾² ú"ÈÈêA? ª_õPjêëõ§Ê r½~ˆ¿°ÌtÜòQ éñf± è5›,!@â¯_·f¸â`Äc‰kjâeI'ú" Å±è€Ø÷Ó“B|[ U tÙ]ªlªì‡íÑ\²žÉÉ0xâ;nç}"~þÒ+G'§åéJó‚w¥lžž¥Z`C¦³²ÈxnvËуÚÁj¥ÙK ,Nû‹AÀ{zz‚·ŠŒë„j_ÙË'éP«w¢ÂÑv©õ±f Ìþþ>4â¦÷‚Âô=iøQ…Z°>¾g~Z}}666YnŒFàºú¬ñ'—xfhècE‹‹»;  boQ¹¹»ŸUYcö**¼ŽèzO„>è„õ¥8'‡è£ÀϽµ•ÅE¦XÉ¿¼g·¯{8î¡YnÊ­«‹’•èÍÓþ[Aë›õŸE~BïNÛÐFò”ò?£Äs;Ó5Þ÷zËU^ï‹7opu›:ØÙ!aggŸnönVŽIN&›˜°Ÿ`eeerGðSr2Q*ÈÎμ${þ*sgÏT§)Tеß@3^²¹˜™™-áâàüQ ¿Yoµš¦€i•Å‹å ú¦Á§î§C¢ß¿ÿXVÆÒ3½ÎP|ðÊYÿ¡”œƒC…ò$p×0£cc‚tÑ+ÕÍw´ÕÒM™ zöõ4ÝHyé´9H\QY¹ô•<égƒë‰ÍžVcÀ=5ÕâÎ÷®ßvß5"è«ËâG„“¡×Ь—Oß 3BoÿuÞ ,, ÈõR!²•;po’*ó"íÆ¼Rú ¶MºÂßÀ_´¼šÔú {ªÂ(''‡CRé¼?ÛÒäysWÿ:º‡8Rœ8¢«ÆÊJX¸½d Òp6®á²_»‘¢Hutw±`¯±«þx]9¯Öˆá®¶6ß§OŸnN'gíƒit#655ÕTq[þõ•Å|œÆÎÑ1óׯwTttYÀ±M~Y[Ye-Ü®³¯no‹3õ¦Ð7]¶†²ìÊSœUØoHÛÙÚCÞCd(±æ&ôº$iŽén:Í‹§µî@Í¡ !iû"£SàŒæÂKüzðæ€÷=3t%H^gg¸šê9HŽ"Õ<[¶T|Ç^8ßOŸ¾<;;;rÜÒ}a>¿ƒ ›b¾ Ëó\.úÚØØ¼²E$„€ŒshpðgÀÖÖV‘’Omæ?|´Â)Gã9„h{ 'ío1×RBS>2ÉWŒ³]]O€R¦þ3TüHÐöð76GËÂ!Tz VVVn…pì–Ó,€« o€âŠ —YçS¬vÚÍzÆãvB~þÕàWBµÊ%ƒ~2‡I³@׋ï²w°“±ž¯ôÆ2ÛØÛû¦§§+×4 } ~ž‘–ž^jÔg{e&ÜØç¾ª}ªÜxiu5c̈øuã¯çØØ¹J!g§§‹aÞ·+%oB*õ¸eÒÈ›o×è¿ÇÇs[Ä4i­¶4R¤Ê~1ì‰"¦£³šåSa„×VŠèt0_Ȩörw:"Ó0R]YišõÔ_QCÜ' Ïo.Šnwº)_¥xܤxS! ð§‹«+LÍ~UäA‚þ…Ð3ÄG—à³GƒoÑl-ŸzúÁÎÆ»//-}LävÆ™•øÉñöÒÑQ@쫜$®ïWÈqD£FêϱxöÔëks"Žç똯G·z½Ç³OŸ¯e™Ú8<¤…MHd=ÀÍ’$…-ØÿsJíS´KG˜²5‡øðm¥‡¾ò>£ƒRÎÍýãKjÒÌO¬ïÓ™…üälo> `‚WÇoÉNS 'ýï®jc’ühY˜v° nxu[ò*™Œ™yd–9H•f¿¤+ñl–B²²è@ÆBkuÍÖØ¶}™7M +ö(yŸÚpÒϽ ’n×ι:Gê§HHߣ£ŸÖÔÔ@Ë_ˆœJcxz¬ùË‘©«yo¶|Pùœ´±¾.¯ªúêk»žÛQ;V.Т£f¬–3U!€’ 9óñÉIåðÝY±wfNÐu§ÃôrÆÆäXN@UÖ4ݼ§ÁTprb‹.JO÷þÝÙ°Ÿ’—7èUVÖÃÇÐÐÐô*“ÚÊѱ²ãé7 T+l–„þôÆñª üÊåvJQ œôª×ó¿ ý§((™_¾ RÑÓoìGGFnI’_Sb>Qô왜µu±H]I m½ïŠQE \οZxpi ø~;¾6³ÈPÿ¢{ñ!vooouwWš \€DÀ%qJÍ_1Èͦð¬ÒÛß¼¦¢¡ÉóÔ@ZG‡_±®"è_–r~€'Yã+A Ì©ü@¡ÔÅ~C&ìO¾¾Ï^½ú’—GµïFÕïp?{ö^Ë$÷(õâ™Ö´Á@]î¯6J½¼ðø<^4¶Ž@!{¡Î×Ô–È—mjëçÏ7Ý2<‚L±ÁÝ==¦ý œÆn'}ì@L‡¾xúXIEe$M8¨b˜÷|RŸ4¢ksáážýn[¥9mBÛ]ªç~pgánßù!áÀ^É3BÂâïV‡2$í{;;郃²n9eeò+‹'"ÇÑÖo÷Ï#ÙÇ5Ïp·¶µ‰wrsãÊU¤’ÿwr –aCcc…÷ᅧKImÿpEÈÌÊ ^vuyirJóüùóßccJéÌš³@âm0žþiÍeáó4Á6µ5Åõ¿N!ö§Uý3KëÆgE°C——õ2²²–;BpMLLŒŒÈþ¬T[`æ¿WVÆñ‡þìÙG€Œoi0I¨©ƒØ×((t¤“xž|`X.5èztŠË0ÎUþäÉ݃ú”<òi±Qäü î}ðXòHëÿJtLiÁAŠ´àB Ùã\?›2†ÊÂÂÝ3#µ=µ±ƒ½½­°š“Þ.mû—ß´ùc@ÆYu7W`>e{³ 4@¿xüÿÙª)ÿï8ÿí¿—æøO­ÿÂÌÎÄô/¾ÿgùSÿ…õÿžÿö_»ÿçu1yý¯OøŸ¼éŸÜ1ô¨ö #+ëŸÚ+ÿq1“§$Ä}톿J¯0°ÿ³Ç]üg–^ùS%‚™íŸ¨‚ÀúŸRzÚ>´ôÊÜ>Û}éhUhÿ¸ªçAå•?5† ¦ú{ÃþŸQyåO9vÐ6†ÿµ"9ÿ…W8þ쟨ÃøŸVx…‘éOáFÎÿçµ þS ¯@{-¼òOôŒí?­ð ´ ¯ü½`ýO.¼Ehá•ÿ¥0ÿi…WþÀ´ðÊß#ýe7í¿«ÿt--uÿÍqTÿ«{¿ÿ©ý߬¬ÿ¦þ;ËÿÕÿ¥úï_†µÿ}ÿοü³Jï/GúÇný¹ßÿì´/¨ÿMþüßâÿ…ùߟ'?þw‹~þ?ˆV†ÿ,ì,ÿ7ÿû?ÿªóü{?ÿöÿd:ò—ýÆû«òÏÿÈøì"¤hÿqÂÃòŸÈö,:ÁÄ :ÂÁøÿèùGë?ÿ]´üï•û⟉…•ñßœÿÏÊÂøëü—\Ðú??žò¿Ùû_–þùû©:o¥„åu„”Ô Euþ}½O¢ËÄÀÆÆ¢¯Ë ‡•‰IŸI߀ÁPAÉ€ÕP_Yÿ¬Öóo[øóÇ?jÂ@_OŸÓ€“Mƒ‘ÑȈEOO_W—•M—‘UŸ™MOï6!ýVXòÝœ™AŸÉÓE“•YŸÑCÏz¤§;£Û?º¹Œ¼¼’¬¢ð;w‚Š‚ÿp†L Wgbfba3ddfÖegâ`ãädæ4`d`Öåäø¼“~«(#¯¦#¬*¦ ¨ðšá`bÑeaÑç`ä0042ÐecÓcå``å€>ndÈðO6#-£¨#"£$ýî¶ÄÈÊÌÂÀÊ §ÏÁÁh¤Çd¨ geaca52âdâÐý-‰ˆI ÿcaaÐÕÓÓã0Ð3FÃÁ ÇÌ kÀlÀ¨ËÎÆbôµðO ƒ…]Ÿ‘‘É€Ã@ ´!F#NC6=F=&Væd|)™wÂ’ÿ\+ºLúúz†Œ†Œ`@¬F쌺¬FLŒœŒŒFFÌÿ iYÁ·ÂÿЃ t™9ŒX™¡ùؘ8õ˜Y9Ù8Ù ™ ¡Ç‚ýƒÛË(舊I*ÉÿÃØYõô ¦Ð7`æ`ádbÐeâ4ÒÓÕcÐÕecüGñ'+¨øþÏ$ )ÈH*)þÃv˜ôõ™X8 ˜tÙA`‚ˆa`0b7`PbÈÁð?¶clówӵמ”geü044Ðca`†";+#Ôú¬¬ŒÀ*ÿ²`ÙÿÿÖüGüÿ?,œþ›ó©ÿ¿ÂÿŒì,ììÿRÿ³A˜™ÿoý¿ÿSÏ>f„@`baÁ+óß—ùþ½ç?‰ =ÿ¹;g¬ª ¶(–*¦$(ÀE¡*ˆ%H“óA_é…ác¹jª/Z4ù|ã•©°˜6Ž{Ý!}xüèGÚ§×ïé)Ê­“xXºž,ÝkÝ»Ç0Û#Ð…^Ù­3<‚…ù[sõ‡ñÿökÊG!)Ô¿~@]ýÛ«§ÿýE¶¹?Ká*7–Hç~üþiPûõNq³¤”Ô*,äôÇGè[Ô:>0LW˜Ž¨1×ùú¼›mòä~ýºµ­ÍwŸÜg–¼ç›c[ÚÁX>Ö¥Àk«…&)çGŒñ¸¿š„cåü[xeÿç/ŽºKKK+5^¶£î$ööö:îŒmý¸¾1‚@M!ûÓ ¡¶¶¶<íïoÄcìÔÔ3e†A)‚¾Qô:I$C‹ƒ…ƒùÆz—€³‚@Ò;ðÙû¿6‚\&êøKmmíûd•¥†ƒÃižRþùþ\~AÞ‹¤C99¹D.ÇçèJ!Jß3h ¿ ÿš»ã·8ç!¸ì"¡x[ëëU®'ëááÏé¢ëõ;CSß\_^òx\Ê:Dݤ‹†u„âöD Ëo_VšOððòÎÍÎÒé4IâSRR>AAÁg³ˆ©¯w71115Ýúýä qÛg”›Û+ûLDb<ÔΑ‘ðY w0ëôÚ 9dí¤‘ç[««§ËíH222ÛZˆp·—GoÕÔÔÄÄÄÎA?!ÿL¥—÷ýít¥9»åô BÂfï‡û/_¾8Ìûþ\¤U~º5’FFÈߤ×(ÝyƒÏçÃuy¼Ösws1Àis¾7úÝŒŒì³Ÿß#r22.‡/fÛ£”žžwâ¸èBŸ>}JHLÌ%ÐÓןÓ(µ(Fµnwº9D©¥Yç ÆòLDÓž8b.–5&ÄçoPéèèX__g6în°[ëÆfFFAAAFÎ’N¤š™<îÁmJ¥¦¤<ÛbæçOæ²;Yïóñ¼…^m>>>ñìÖQ¸¥Ãð×××£!;Ð'ãüý¯®¯•#jõÂóàÏÎÎíìäåäžñÞû ¢¢ú}s;2‚ [Ôýñ>Ÿw¯ppäé«——•!ÃÃÃ>[ ¤möºo'ócx…¬[n½ÐôõœÈBMßwss“V£JUMí1»épFTlîHþöÈädÍl-˜GM:-­DôðØXÊèˆùþØ£AD–vFFÆæöööæfFv¶‚(Ÿçµ¢RO–T¼|±0’b`UUUIÀ驃nÏ6î,°Xqó}¯ûy«?’y5Y®™,[ýmãÔxË4ý«ùÓ/!%%%.Etýúl /!*êüêdãðÐf(ª¥¥%77·«« LØþLµµ>7w€Ÿè ¸À/ˆ˜/^(Ž ¡[,4yN–誫«S>Çõ¾ŒPdÍ¡ ú œ¡ÎqGÿ/K~Øçú3.—ÃO‘ž>}êv±¿·µ%†Ø50pqq118xxvò²êöîbac YGQquw—Çl4'ëôèè Z2Ÿ'ñ¯®®¯fSù*Åü÷—+ÉÞ÷CÅ“Dää'º®V¯×$$ù8izáâ/…_Þ4———çRnú¡ÓÓÓOy—C ~蟈R¸ÿXTñk˪•bíæÉ€F´44ŽŽOˆÁø?~ü8*² °…Iž=ñën³19yö—/ˆhhhu¾~œ¡À™"èrulhcc#-Ý_m½ ®Þù@Úùõ3Y0ömÖ^-è´› ‹„4ºžY[[ ·ÓiÕþ̵¿½MÕ÷*Œ€W½ÂD®}øœžäk𹑘z(êübuÆ7ÀX/‚c±ùë¥Îvo˜™íçê¹Ú»ºÄ„tI ¯WŸ={öö3ò3¾o QZw³Îé÷^h0>Ú9]Pà^íû¦:sêñÛ0AJ4%ÔçdŠžŒš¶_ÌêÒ Œ’xÝ×{c[i5º?òL5õAãâK‘D‚Ëá¢`µÕ\Îp$TT Æ bÀťƤ|qqqtttuuµ/žýbo¦:oPï[!!ÐYp_üh癡#BŸ¦µ˜d ¥-üñ Rº“‡#ñÃf6Y!ž¸[­Þio,_à'`mMMMÆ.GÞožC -žvP(¸ú¹f…×­(¼ßÞz@·›¢ èè,LNªêö,x?xÞß^ ÷÷÷§‹„äå½Q~xx¸5’!B1' îz%Œÿþjƒ(…@;;;>ï{Y32âÊÊš‘ ‰ÇÁegd³ÊËû² Þ‰òW”dH‰Š¾NÍÉ îYËÌð»º_lq‡÷µ©åÙî¨ üÔ䵂IëÐÛë€ÃjP¿ôéÓ¿ô_c,²¹y¹L¸¿hf’‰oZZYFFoF†¤Ð—:·°e½kàÍOþÒÝ(\ŽLÞG¯++~h(Áau­¹_XÙ¯þÞE æL¨&ÜÞN¥Yô)N.»FÓ¿¡¡£»ÛùsJÆ;1ÁTE¹R¿>ºtÆç–¿uœŠ½šƒmm${·¬lû©\áÙ¯ÛiÉðk|TYŸßðѲ?]t óf|ÇB359¹ùä´Q û[í$=ùpéÚLÉ,µØ™œg*Âþ²ÊëT‡í܃_ž‘ìîí½å„üæƒwºy•?9eLóù*[CC”£Þ_¿Æz4¥¨1‡ôöŠ[=£¦(sºÕ˜-sžCQ]-CÀãÂïqÉ&ô;‚\"88ntò¾#„=]ô!ñ[‰²’’XƒØ§OEkej3¿zw9Ó’’E…˜#Ó‚CÃRY1Z^bÂf“’¾v\8Mmã Tu R¬ Dô.‘vvd5yÄ*kjfeeÖ9žðÜÞ¹;ï[XYÌVhÕ¿YhÞ@’Ñe½EËo¾¿n,a YÊüЪaÁ&A„ÎãòAïÝÎÌΖés!&fû¾^‡_ñã÷Iž5Þ6¾¼5³ó¸ô44ž7çöš³X|:ߢUvk#KKšÄÄDµž¨:I²·§?¤%­g]ú6‰i0dd€Yêï/4uCŽˆ‰Áƾ’&B/Q-P_­«ÃñûF¯óK'‚96Ÿ[äb¿‘˜™Y¥±øE2ý‡Ò 2Ž@v8‹Á_¾à%"(ص3±UZjªˆO@øàž–Ÿ¯kmÍgoÄonþWÿMæ6ŸùÝy|W¡†u¬dë‡o±Ì7WWœ=GŽr3Õ¢eª’tÑ+G¯IVÌìÅG²Ìž>-& ÿž;e¸ÁʈÁLu¢Ë¨\$lßÈbVñ9#$E× } :kÇ̹Oy¨¨®ÎvŠAû––«Ûfú–¼9 ä#!Jæ ©……”Ñ=öNVF!îm”'Mž=ü¶¯Å/w«N"›ââ'l.â» LÌó½¯^çJMÏT±N6¸f4?´lÇ—ªûøð=ï¡„aEQ*CƒÛ/!R+6ᜠ¤fj5yyòñl}{»½d’6UleeÃ7[ýõŽæ¶óBHAFzÈ47çû2RÙ%S½hÏÍ ºž»¹áÄÆ>¯•‘Ææ:eG%ßZlåÑ^cžœ²0Úè_@ãã©UI —€… <ý«á‡î>ÚÀ¯bk6ázÀäü1‘‘ôš˜ûÛÓ-óóZÜmv=­ÞÂo©õ84‘«Ÿ>}´:ßøˆ0¹ˆ5)??Ÿ²öfõÇKêÏMn‘T !ôârßç 5zqoÎyØÚGF’ÚõÄYÐ ,þX8Exá•T 1ñ["tYæálÉ-CccàeÎ’œ¶»ªŠÚÚß7Ÿ„yh'}`0»”-7ÚþúUϋϕØt®¾¸w½¬ ³NÍï÷‹¨ûûÆÆÆz‹‚Z“¡®’’ß®'^ÎŽ{DCï!D‡Ðñš¨ºðÜß\<Ð!……H…„JSR¯˜šäLN¾šš‰WÓÀšŽc3•0\’•€ý˜¢QÍJÈo¤t{ëº3~«\xšÏïy¶t±ß®Sˤ¡ópvjz<˜ªáÊÃçÛ28,OICCK¹DIYZ«™”ž¾¶ÞGâàÈ \¡HÃy«Õ?fÁ‹Y­Î¡$116CƧ¡õ}~ó-;œœTD%¿ÚAÎ-³17'±> k®¡Á3Ûš®œ ä3x&ßDd\®†FØT\J¦¢ Ð=@¥Z÷°=Úµ;À¯¥RÀAŽŽ($$BIQâáq¤­lg(ÙH6áîˆñÊg:º½¶¶Î—ïevkœìÕƒ‚¾˜tx&fy´þ."c›dhì¯ÊZYÕ;'§¥\Å¢çóº9_0\ÿŒÏGAQ²:URSßù+CÑž#¢ks$»o¾ÌÊÅ~}j*{ZºÊ{šÅ‡Æ•oŸ`ÝWDd„Þ‹ˆX›!Óð7l ˆ†ñaóÖí¯½Í5ž›«Çj¶˜ŠýõKRFææêDŠ91ä7Ÿƒ­»ÛÅzÁkÙ&œš©ºŠ­¢šý`´KQø±»áÛX»!1¬PŽãJ+–zZ^VuÖußÉë×AXÉ^‰~ã»Ëí1œö¯‘QpBNuÚZ±»]˜ª9²ÜúAÙx{ë¦ Éyó§IYúH LàÅêêÝcƒ²UeÃÕÕìàggrè‘3açÍElOtòÝñrôäTœ6ãÆ3Ç"óéØœ¬ßŽæÇ7yéõ®vÝÈ˳u·ZmlmM)díz_ìŸÔ9¶ ”g¢bbFíOÙÓs\ÖÕÕu¨Ý54põ)B¾ÙþóètHÙIØ÷+¢º J-gpdÙÛ ChhÍg›p Z¾ÀǧUVö´É«¯g€̦ùÚ]“=yõî\=+•| ]t³Õ\æÞŒumýL‘·æ+>jj›ó9vvk6cio‹^TÈØÛ?™X5}ñåÞŒ @\9¹®0Br¯»¸N=FZšš†y\ QÈEw”€PçŽO·ÊÖû*I± ŠŠ4]9ÍÇå<=û¹;«L޲û:Û=ÕÊ×[ÏvŠÝÏ+®¼gK¾AßÚóAñöægH øºMx7-!o]~ccma¡é™³Bª6‚bÁ ‚+ë¡÷ÚI,UÚżXÑç{ÓØ××ûø6'ã…óž7U™¡j[{3ìGKmÀ&{3ξa2µöZ8ìÌçž?ö(#,ÏyªYC£©¥U«D}×ä9C§Í“óAß±ŽùSLä›õˆü<ªgBOŸŠ“Fln`ã°ñyº]§ “w†ÎñZÆ´úÃùÇ9îM/wGN‘Kóh5^ßæ* ÜÝ%’ËìûÇâCˆþRPïã7ËsrV„?Vt°;'Û__­f–švMíy>/[¼âÒI¿¸&U»Õéî`‹ËÑr„­mrµÕÙРlVÓ¯ ŸÑªq9»ã²ksÚ­v•¾õ«üYéôùµ¶Ýà!=¶„'m'.e£v¹;uWXˆÂíÀP´£¥3!.Þ½­¸VR1Œ¼ÞØÕݹ´l8žÅtÀ&þ|7v°,³èP”þؕ嵵§½vF}'N.u:ýñ<%Ç›^8¸Þ·Ð¼­ÑôÒÓ3²°0STd ˆ¸½÷„O~8(;\jㆢåL¼©[7Ù`V†_v†b5¹K¹*2´Ù ‹.ÿÝÝ^:$^ÝV•‰Eà§›ºo®Ç€ã¤rusÒ®Úux¸\épLfîÖÒŠ-ª€!ý5HƒÛE(®NNŽ‚Ÿðpïhn.õþØ‘f{ã £¾¼{%yù ÞùcÏžõYG¹ëkõl™d朰… w·éhóÁB |• <Îcƒ½é ã~†É³0~.ÝRø¿k¯p`·l~c,q@ïî=ha΃9²)§†Èò\Å×ÓedüBEÁ74Êâ5ÿ®R<¬R`C­bW®* €º¨ˆ X*‘÷f3‰÷dÜ“C1E?!$ŠFZO+PSË+ÍèB’’qÓS±}qcÓÓƒ5Eþ˜´cAµ;BÈðúýxXoÛÈN6o®YÙ9\ÛuP¤úD¨UPñ[½†Ò"ŠŠ4>£”߈Šci9†à`Þæ?-(=¨ÁöÞû£ÎŽuL»}$…åÿ6‘16¸NybtöìZ>B‡w/ž}"ŽÅ4¬Úùrn…•E‘ªÊtf|±7vkôd¸ÎY‡ÙÝéÁv¥NÁ‚û§ÿ‡üï¢ý›ÿ.PßñæX´>êìOì ‰N|¶Ý˜œÓ•ëˆîáÅSO×=4t<š»5?Ï€ü„ÓÎ 0)ɨ Üùúšð…ƒa{`y¶4ïÍN1¿…EpF2&$ ;o£cc±0"„æ½ÏwÛ.[°Ì6ÄVV..999©b¢ê@ÚQ×zxp;¾vHNÎ’: Â2vsõ¯¯õ'àf«Ìk635¡ ×Ù__s1å o °QãÃ"dɾF@;ºðib¢\»™®™FSE¥m~Þc½× °à¸înGwé—‰%ª½`º4éÂÐÓR~†K¾îž˜àrwºþý}É—«2Ž<¢Ú,Óû8ãáêd0Mƒ £Û‘ÞÄRÛ^öKH2t@>·ÔÕ4·´#}Íìøø n‰,Œ±ŽE]µ~߮뿦d¥“ˆf¹¹œNz­þþQe‰’gº»=j,“‚[Ôç¸:ÉØ¯ãb=”;šëÃ26„]® s“Åþ“94ºEj+*æååfõ5÷´¦((8ÝìGDÁ jÏÙQè Êk X”åss辉 ?8;~:Óìîë+|¶`°H;±ÞùàÎq‡.‘ëÌcošŸ6LVº—Î(NYkë0*¿žVŒçL>y*²ŠÓss3Ó !ÄžØODFîÜuªúÍ'ïô³sã ]4[Ñ»:½Õˆ™\z—Ñä[ßpf¶h0¢½sµVÓl¡­> Ì7Œ³û4xlÙºÜ^€¸&ÀÇÁO”Wî”--MòÇy„È:åÄ ÙÚª%JSR~¸Y}ñøñøùù>6+Õí¥móùŠ90Hu6úK±è~Ý^mˆo xß­í/k?•ƒ^]‚6GÔ™c¸TZš‹'} DX` 8.«¼ÅÌøÏééß3õA••ß33é|?boÉääQ8ÝúÎôšž•“øàÇJó‰šR}çþY–Ô` IÉmÙÎî,Ð5´°½ÚZál™›íñ¥,g`ÙÁ±’’÷îîå!¸¼ Ï%Åz!Eøsÿ3ñöN·§U0I*Þ)%#ÃâbÿhŒýä|š¡žžPµ(U……²ÄÍeÒrJþ­’½ánUd—A/nJjª|¶}2ï ‡óþPEÅîc$ø`Ü/ÆÔQn»2"*O¢ýŽÒe?ŽÕ9ÚÿqÜø÷RR[3Õ·8ñŽV®V<Ñ=KGx¢Ýö–tés=†Ç*r§‡ÒàQg™\›|È˧z§“ÍÍÍíö¦gw¨•ê=®@"¡-""EŠõò õ*I_ÿKÁ&“Djd´®«Æá3عŒÔàb«|Ö§Ý$¹³ÀŸ³lKaj˜é|²ÎÓ•‘Þ™¯²eeEüöó-æ‹Õ+ŒìfÏ׎à·_¿ê`Ñáqè~"¹ï@Õùó”ËÈ£ðð&á7öb ©ƒãÃ+8]m™YZŽÖ–»jgÂþÎW߯Ÿ¯*üXWg§­më_Œ˜%s@ûõ‹ÙD?˨ûp¯åô¦LÌ`zQvµU¡÷ÑrÁ·o;@´5ºžôeI‘œžU’~Ç€üB‚ñçÀÍ%cPÞÏ¿Ö $Äk¶·» Õ·þbþ…–!QQ/¶/ðèéTT{Ç1’"E´E:Þ}£ýdR£ð¨ßU¹¦oïÝo€è4œ:&kLš,wÜê>Áš÷ãEk7ª$¸Nv™Î%{£žŸï¿þš!úk‰y[ÀAÍEQÑNZ:õlO¯dç›[ÙÚØ )–࿽sÏÎ0¸ºÂçpgKqÜYçò-,ì:Û±÷ýTD§js»=Ëî6nÊí ùÆTýÂ;GÚË«+ž}K¿‰|öÙßD\O+PpÊŠ¿j`¶×ïïß§×™ ÷Èüû^€"‹éŠÏ¢È ÏšrmÜü.ò"™_§(5•¦ËÇŠzÅÕmÿò”rcº’³¹lqíþÎoª<ìVôãÇ!—_ë÷!DøÆyÝ##Ù ²ß?"\8ïLùÔT¬©)+Prwç÷žFaÞs5ŒÅRñ8V‘}ª²|èí¢Ì¸î3’ŠÕï o xŸ]PpËçÉæ´mp}± ï™ÜаüFBŸÿÞawÒ ä ÊÊÊè tÜ?Aú÷õ.¤hÿü\ÊJ«¹„¼6|<šC bÈÈgK+4m Œ7ÆYÙÎÏæÜ¯Ž%è¢euK_…Ò32˜Ð\³¸ŸR µéßtG¶u„îii5¼b¶žgÀ±7ã9]ÅŠ.ÁAÇê­„ƒø|¦ !‰¦j†.cñÝ}KÔ’µRsù³tå÷>0..<.N^¤#lše¼ïx83Ú-žÕä›Ô[ŠßOˆµêT{c†.ø8Gr#Lëšߣᙌ¤únÀ£L39õŒæö×4ÁüF…nèÅ‹ ^‰t³I´|÷HW†KåFgå g-eT–oå‚ §çç_­IXYª;̇w®`Õhίvñ¾IøÜ›4—Ü&ÇãzPin?6úÃ+“η£3L )H³ùþ¸ÑýIK ‰£#ë¯H ˆ×ãuHùxü7ÍW8[v((‰Ë®œ ¬×ÆêqÉ ß|µXjå|/Úã!ÉÚÚÚëúÔA !‚R§évsÄØøq(~zûðR¥—ÂñI»åñöHvˆêõ#èºöjw£ûE“Ç•óÓoT¼¼¼¢¢¢Û¬g)L¨ä±mbnWL…55’j5 uû*¦à6{ûȵ± Ÿã›¬foZí’ÅË©rú,iGõ’Dñ}/$ª!‡ö ðÑ”“•]´«uȆäÊ+³©6Ý`Ñó‰ˆfß_Êå¤ü4›OÑ]AÅSUbòÙ0Bv¡k'2¤ÏJ1¹§/WJÿÍf¥1Ô…æä(*õW»ÉÝ1UÐ`{P©ó>Éð;‹rwè’fbE2nB Ü "À¢ß/á}Ÿ={¶´´$èŒþ-\¿3T*¡fª5-Œ91›•í†Ó—:Þ#¿o€¾¸F¥Øq®®ñ ö›ŽT cÈdæoÎÌçA¾Úè6fÖ ù‚ÏVñ¹¦¥?8  ۔† |\NÈ{m­2 Û—*Õ´ÛIüüöó _äÒ¤ã×l–$i`¿ñüÙwóÍÑ󺛧¦m¹驸¯É¸¸a`ΉBÜû‹gÞjc£õ¯¥ö”¿mß9û "æøD‚Í¢†æ<©±±>ŸŸ„–v¦ý •Úîœëß¶ÖŒÂqqma¡M—oÜß\Äê4xº·™O¬OOÇÕÕ[£<­ûÄ› É€Óýfå+}¾„˜6»•f¢ôw¡¼dD"Õ#á ØŸÅùk‹2ª£;f{®®œVs@ý‡o‚LÜu£ŸQ"õÉ“ZF«Y~~¯âz/ P÷yebn®²hú×ÀÀÀïßï%$zFF˜™O4ðŒûlíí#*ù‰JòHÒ©Øà Gá÷Ö±,ô¬•OˆØ'ÆÄA¶óF~¡æhý|Ïyy/¶õ™ô®íîdELÌ(+>ï{¹çé èÌè}‹ŒTòô*7Iâ´_?Û™Áa…žöªSïT¨ÓìUµM^ U_õï7—ç°3ž¦Óìôp5 FMÞO™È¿ÐÀYl(1§ÛVµ?í¨"”þ×CCC ÇÆÆ*ËÊ §¨n’ aÑU˜ŽˆˆŠv ×ÔÄpy-þ„ÁÀÀÀÇOô¾¿ à’WT|Žž’]\̯ß¼¼¬goo/ô%)IÛÎκåú-»uRaaáÇ‚²²²¤Ä«3ÕÖ ' ¢¢bŠÝ›©ö¾Ùcùò¥½ý ‰h(b!—ÃïÖVÀ¤ÆÛ£¹þþþe±É£ßíýúº»»ïoOd¶•Ë‹­åäž±jv†â+)*ÐiÕŽðú|–<.-ÎëÕ6{צ")ošŒ ¿2^¨AFF6Zÿín'OõvƒÿmxD3ç±êóD…89^“ãW:Àùgüó}ó0‹ÞˆÈ*"1éë×iqðù*ÅûC颚ššBB°Ž$Â.iåå'`úzz»»»Q´"ø ,¦ò‚‚‚ïÞùEEaŽÙ-·óºŸ‡A¯ƒ©òáL‰Ü¨Vb*Ëo11ªªªïY9ì׃ƒ‚‚ˆ&Ë>Â!ÐFRxzÞ­tfgfâ󏔨®t´*òº¦ÈOÍÌЫ–8˜iiÒv¯¯w·°(Óšœœ,@ÄÀÀ0Yªß¹1ì|0oùáƒl߀Åë×°QgóºÉr–UŠÿ6' Âí¤J(ÛËËÐ=M Ù˜rÂCVÅC’-~DFú;3äˆM´bøw"=} þÎõõàÓ™ôqKÍÈ ö-É´ù"Ž‹øèÓïß¿A—n./e+M¼¼šòóó 2¯ošsÕ¹1ÉÉÉÑÑgtÀæ÷òÉíÎk"SQVèYPлq²Ðè¾±³>Çmðû½6¢ +'Ë#~­ˆè¥ÈD )Öƒ4è>/Zpaɰç³^ׯi¡¨ÚŽO«ãTw?†›JàgO®4s¼ÿ3T Ý|>·ÞÝ\Œîüúõnˆ¾½³S~¾Ñ}¢ÁÕ~Û±Ýp¸/žëüÛ·oDjž¾Ðj¼\<<÷wnnn~ߨUŠjjj~«ç}Å —àáñºAg²[}ÏÏߌ€F`1SU˜§â(c?„ô·o!‘'·Wöð¾ßcc±11£’’øÀÛ­­’71!ï"ÿ-³B¶ kΧOBµö†'uTœ^^HHÞCr» QÔÐd¿±g»â´±Ž)¡+ëû“øøøîïïŸ2²Ý¨<(0·ˆ©ã–Ï…Œúâ^‚û¯õä*d__^*^à?,¼J ‰ã÷ö’—Žg·†GÁõ$ô;†Qÿ|o&ú;ôô/«_ ‘m´kÎcrÏÍåSò Lƒ ÚÉ{ÅjšÆe$Y½7cýòe¤¸Õ ¹ùy-é„à¯bØ „„>;À?þæ}:›„ù†,?‚üsyyY­ÜÈÔÜ\CM-‘Ó^DJJÊey®ü¿²²òîîôù‘’d ÍéÅÅÄôBADLQwsqÉÉË#{óFiz±'šþ%}3˜èŵ&-÷ó]ÓéŠ\ÐS—šøøx__8ÖM444••p°°AAǤհBˆyTYì×%˜-#ÎÎj~€’&ŠŠ’rjrr¶Ö>{šð¬™ÁçN±Å'*/„ž»¼îÝL‡”@1*|Å *“5EÊ×EÞVûuD—ç´­zMÊ‘Hž÷ Ì6‹F=£é;Åí5!®íèˆ*i` ¾-_¾|9<<ÌÉk©µß°°°ÈÙ·µµ…ƒGNYgazå fȬÔh³;É(##ã-Ð4æb˜ÿfªyôËŸmo©:·WEš®û§[2I4r²¾²«²ŠKÔ"a%ñ¸vU˜ö#a¡0õ Ü"øL·Í:BLT÷š’ccc“’^½Ú\_q~-dÀúò;Þ1×”ÃÚi8#IMíÊx éÛz pÕ"ztè¾¶Á­:E€gØÆÇ•54Ü·†3Gmutt2`!Wd$Ñq€<¨˜M‰ɾg§~ìæç ?µ;ùŒòîæ¡um ÁªãØÎ'™Ì¾Üñò¯1ròüX»3ˆ¾ØM¶àu·‹¿½\¶uiÛl5§þ…Q•ÖóêXùï“'Ø@nkiNKðC<nþ¦¡b*+å¢é0¹ç³ xyû²oP¶t[“Æòé¯.I(æ »+süÐú /Íq%¢Bd%())W:BòG(Ï.ä¼#¤’fwÖûØ¿~­–¦¥×©µÛìO¬öô¼xùâÇàs¸”$èîkÙäîÝVœÓÓÓò°ã½ÞXæð¬ÂŽ %1±¯€’@hØÎÎ66Êr—âlz"f|²fëþÍ´—Á«AÿݯQr™çÈOÄd²ŸÜ}š>…O­ÞÉ’Uð|¸úsÈ7ë‰"­‰âd?®â#=VàÊ}j5@‹&¤‹,OÇH…Ò‡K’µõäŸ|ÅÉ8K‡MI›#jPûîÿæÑÊ;œÈ( 4­ÜÆXzÔ(ÛywRNX¸½»{P²ú¿+íhxôôÒÒÓOøÞ33@FEš<”””ää(©©ã¹‹À9üóÝÄfMªT<//¯öö¾§ùË™Y99DDÀEut¼;‚±ÛÛÛ×è”_⢠iÖ2YÏóhhhÀÁù¦¤¤€ÁØ=¡F‘5Uùo EÑL•››Sÿ}“ ãçùWÐï ¤¯f¦bC^=sºuyѨ Ù~ •†gáÕÕÕ@~ø°¸Úñ„@$tCSLl¬’…÷Á|cµõ‚ÕL•eçpÿSÈYŸ?·OˆqÙ,¾Ö©Ð„Um9C6mt²Þ—-Xçzb¤¨øÃæ©L»DY}}ýƒ¹zç‹ý¹˜˜˜æûëüÙö<=8¡ß@†Š¿"Þ-—ˆ¦{ùV a´^µÙËS[›àûNA¹Ñ6È86ŸÍ ~ÉËæNæk¼Æˆ¦á ÑZ€˜,º#±NáKò¡­‡®‰IãÎ8Ð}|ÉÉÑÑ*ûù/ed¤¤^">â!é/º™ŽÝy(„*ü>²onŠö@ 3±±Eq½ÂÀ q£ ÍÒ®4’mÏìðU +±¤É–ò#*곟Ÿªºzǯ_?$TM}ò:žüè ÊxåÝÄnÝ44‘Œu¡FÓxW7’×v4¯ñÎ2å¯2àŠÈð¾-888§;BpÁL³03ãr9l‚¾˜ïþüéƒÞj°\†a¥-­ål #1é›7™ÂAÞ„®se†CF (FƒØ,§323助µÍ†GF„ÝÑ« J[€ ²´°HKKÛŸ­Õ·´Ô:ÊSePÒ Ÿ×áLKˆÕ¥Ý¨ŽÍÊévúdNð~mý|æhe$-]avVhd¸dW`mûÂ" -•Àñýzdk¥3ŒÚòÛ¿¡eî¾äwÍZ;à˜þn–&&·ù:zËS/ e].öµ€3äN¼¤gý‡j!£,_¯¢’™’"»RDÑuxXÂï¸Ö™ÍÝÓÌåÈTo£K–<àì8w|{%Z·ùýúëÿ%â¹_éDÛnjÓ$r6óY 5ž]\ȼÿ^\œê‚FÄÛûè•bmu–£9rJgëkk¬ž×§€ú›½ø@ÜMÊ»”æM ¡÷&ñrƒ¿EE7æò'í¡]}#¾O¾¿_¥Ó¼nçoLlVnK­’¸¸+ Jâ8ú±Ï) ¨R;@ž àôº6­¶˜’ëêèXïOäDCCSR¢°å.¾`»ï§› b†«!5-íÞBsó¡7PõÆ}q™……–††Žë½Ø¬¬¬º ŒâãâÌÌÍonn°^¾|’W3úóúæfgzÁ?z$K+LpÂãê8³#¬ >Çfè¥×”çÉ>0ñ°°¨_Kß–.Ú¹æ+'ZÏ{Œç)m¸òðÍÙB ßýù!â…,ò÷íâ¡øÜë[[_½{š†\ ¹ABòõëbR::«Ÿ>0£ÈNð¾ëß*ÐIJ<œšê­æ2cb^RQ.o+h†â¹6|hùêu7íïü£ÅRñsöÏ339³ ú€affƒƒ››Ý”~ÄŠË´Z½¼\¶3¡3‚Ÿñ\[•\ú’×5|s'!)=â_»ª!Jju¹ 23ÁVUCs£•¦¦¦Søt^š‘qe{‡ ×cì9A*ccc§ýÙà2¦ùÁFÆ\‡N˜Â?Û‚ 9 qqÓ qØäqUf>AT˶‹ªê«Æ4¢•ÙY¯z{r:úâ˜}¢HfÖ1>o/£ñëý}b-wag8Êý>’…å^Ìê’.;`ιúƒa|é¿6~AV?ôõm_ë¡ßB•ÇÇ ª5ê#ì‰BQ«Úí “}åÁ9U–Rô·µŠßñ ÞÕMŽ;–bO¢÷‰Xc8JE].cÞH%Ôdçä@寧–ÊÁ׌'Š›oø/ú“üŽI)™ù›ýö5eÃP^}ÐRTt»°Â›4c³Ié;Zñ’“ëò¾-ÝÛ™à‘õ7~ÜGïüòHÞWÐ9°ûåKÛÈÈ)G©è(åÁW2k*òìw rFÍÂŽgà}u$/‚rrSý‰Îª4Ú(¨W0ŽHµ……"Èò¦§IØ-\Ž Êòò>}þü)*J>ž-Äôá Õòñ¬’Òã8ûÑŒœ/+Gc£¼Ù“¬æYó¥é]™¥ÐíÜ}–RýÉÉK{#c¬—??ŠÑjl'" ¸½‚…Q¶‚øÜ201A!áö§Èúô©êÓ§¦´´¦ðpâˆÜ¨DÏÒŽÔñlf·œ<§ÛsÚ´‚Ý“âl]U77¯7o(99'®n?éÈb¾ÂÁÉÊZ6å’=8Û®¤ã»ïy À@­îz‚¨‹ÞJúîðl†î¢^ñ䙢néèË—(/^žEþV£) ?=XùRêíx¶/i”NÈ_ôµΆHÈtt¤'-4 ¥uÏ ý ½£r빺µÍMŠó¤jËzl/n.7ÿšûzí„ÜÍüÖ««7 Y»õŽ;´¾-.7N•ÀÃT—ÏöêÎv””2Qpy€'cH$Cw¢h¹Ëîʘ´Y-Ui²’’ŒlßçFR{4Ñí÷D‹áI/·03ŸÄH~þ[žáשÇ8𤤒õÙ„j2ßG¼‚‚ljQHÍ5©)¹÷Þœû[[[ìø¾U»+uuª»ëʃ™j©0åíín=¼÷ðž7¹Î(ÑôU¥ŒiÜ–‘Qvƽ[ò»YR$³sÜCø8ÐGLù¼z—mÂÓÒ y\@2ÏþQ %åç²ÝÕèo­&AP»¬Š vZ¤c4¦œ—IqqRˆ¦ó ¥5O턾IÜT[ócaFIÇ;1Ïå)µ­Þ+P 4ffpλ¦ jíÇïdqá„Àf–A1DªI÷Ðï€J~u´òËýbùä8P†ŒØºx}é!(ö$¬…(_¥>¨”ˆÜï‚ÎÆ‘ '§°©éÔçÏ!íc…±±ýÝ‘o7ø;ÖŽŸƒÉ–æå¶}ˆ>œê{tÐ\íìPQQUÄþÆ<±Âj$Ð…Õóãéqšrß=벤Tà`Q½/-ûñ°ê0`Þã탠¿Í{Œz°ðð­]é•ßu¯Ê³ v' u Ë+·¾µ‰á0© R*õ¢ÌÚΰÚf†„H9ÚN½kT–ýÀj™W瘖…;ø†¿yµ=(Ìù c¡én¿/þTœ?ºTU’™yoqQŸG‚KFOÏè`ä7iÞª1Æ“ 3‹‹ßõðØyygZt_†u3as;;9îuô?!ÖïÜ öаÂõŒ‘Ä ë™˜p°5=Xž’oX¶êOøryI¿10Âý>ŸïÖ¥åÓÊþ~âxñ…¬ì¨•?•pA~ÛÙšÊ .]*½\E†Wkš-Œz|•ú6lv®zm#Ú¦–G1¢kwP0!¹u¦š}t\9[;:òˆ‰ùä3ÚÂýFr¶„„á+'Änåæâ“D´ЃsõŸ• 1Ý\ý¡ Næ˜R=•å±4˜úÝ/²qÙ×ÅR_a³ML”Æ6P=µSÛGÁ:¨Ñ¨ÒLw*Ô/Ued\^ ÖÉz†ƒÓ½VU¡üò™Ÿ÷}©÷Ã[™|B~£¯ž&nœÜÕ¡Ò]ýEÞ¸_‚ñ¶l®‚nˆ†L¹' Há 4»9Ìw;3cu±e«?n^.WíM}kÙVìzB@ÖìvæuvââaJAœQL>—Ðò¡¦¦cÞ~ñä1ìÇ M7îÅÞw\ZÁp0>9·€‹µ=[Ú #*Ï»".æë±¬ÍÍËô;7£éU´›ùœ¯ìªù<§çÑÀŒ¸¢éú´\¾¥¥ýÇ¥¢*c·>_>¡Ní2`RT|q¾+ÛcÈQù#)Éó”"àºÜH ›ŠJ,øÏR&Ê“£¢ª'ú¿¾ô“‘­=ÐÈ/œmê¶0íχdsÿ؜پ<2}òDç3*ÊÝ)e€«ðOµ;€:Ï̵'ŠÌŸ"Itk)¾|¡J«¾9n¤Ãn&Z=S½yCÑkÀ´¼2è|µYi^Üz'zYòæ)ëƒÍÏÑÜþ3Ãmvtdäz "ç/UЇ_!öfvwg•?´…"kÓ:u/¸M‡ >ú”LÑ=b6:EAÜ”è)˜«µ' Å_QL¸iûÀ€J°»:*žÖFIYŠñ|¼tj¹Ù±Âå(@ÑCG’LAG‡™‰IVJJl×wØjsPVAa¯/¾qõ8bx¸ÌÓÃéþRÎá²Ä:_ù(tþÝ#xüÓ§@ÍLÖ¬ 5.}ef&Ž€&WJ„µ¿©|4ÿ#66tòÂ~{¨M\î»’U—£±W_\P4]ãlÓœè½&ÌûüûcCœˆ+küý MS|º< ,$¡W~ˆÓU¬ˆ(øciÂ̹ítÙ:ÍNäÒ<†LÓ°ÞE<{Å!°ûØU]ÝéÝ#QÎ/èòò­Rï›Ì©ßŽM gú,„IH÷§a":ŽÇ«#k=eª½U–(óMw4Çra¥æ.žž…Û2ÍÞüº·—ÞâââÔóuºå±NNFzhƒ•ùísõG/¡#j7\nx—ðY!>ˆ¶^8Öi¸ìâÒT\éÈ›ŸGœBxð~Â!2!¡´CÀihiIZWßgt¶kºv° ±Kb5ïÙepøÎÌ3ÿNî9kmøsn‹‡{Á4läÏŸ?!m p+ZÃ†Ž°ÎÉû…+ëYýw9Œºò[R”HѬGð_ÓŒ.¶èÍâÿõ4 ×|Ú&-—ë†tB}ýÞñš6v­çUFÓ;^ж›:Z5»º””š<ÿwËZ’t£ÍÞ7îÏ»¥tÈýJT%1"²pÙ\ÞëÉB\åKQ­gÆö÷÷ ÔŠ¢IHõM/­hˆnX/œíÃÁ…\ÝÒj4@77”6X妋î4b>;c­¶“vd~/,üZVÖ È™—wo«ÿøäÅË)n§ËM×þƒŸõ;Ò¹ŸùL~àå„üRloÖÕ}¥ƒz}½o¼˜ÐÊÜ\_§|]HU•”x5Œ—ÍG.¾Àªr‡ûõ©=fÜ‘òU$uù›£ÅY™d»Ý]å/÷? ˜.=>‚i»># ¢ ÷¼fà=;3Ÿ_éüŠ'm§¨Xf‚oem}NíXCóû÷e©ÉPµŠ¶œ·®Å¬j$úñ•}húŠŽ°p¦¸øS•¢ÞªŠQŒ›šr#|NÇmµZÑÏ„ N_“Àµóáù`ÕÔ[{Þ£n\gÿ}/À-It‚’R“=¹¬ŽÎÎTyØH6aïý|EW¾L2Ûsœ8:‚™³S–·B"Cøïöêê-¦bMG°hq(¢OpR`þ¬3ãIËX< #,¿½MèÙû©¨¨8Þ©3=½m<?jš¼J.¾ÞÇõãG×ÆÒž9[üÙýú“½êÙòi??I3šÇ1ãûpxëzÊ ­Â_!¥Üçe¡Lˆ¿}ë¿ïÓ8€…È®=°Ürgí`þΛ`°ÑùÀ·=Hæ³ÿׇK~ß**vé´”#ëŤuKcž<1o¯¯¯Ï³ìvªª¡ªz|± €Z‘Šº¾ö’^Ýáx4×8]„³@•QÑ.]b!Švâ|Ïýr¹Ý{õ5Ag˜h_".£Ã¦5ðËå¡5"h®0ÚFèË®=W¾‘¡Ïj~Ÿã`©­¬ÜTVö)Ï,ñâétù†àûß• ËÃò•ZܾæëÄΆã…õž7…eL]›£]£ÓÓ›ƒ©À\VSò*B$°£Xv:H@ƹÞß~™œ¬èŠpïKÜIËP¼§÷ýHD¹•ïïÿÎ)>žóä°+BƵ¡›?(‰k07â’}½Îõ¤¯Þ9ùî¶»ø¿7ŸÛ|ƒþõuÜLõ PDšv0”TT®¿¿} @Ê3Iæ,Ïa;`Ý»?Í*­Í¾áûz‚€e"?a£Ë‘YD©KéÎá’Óòs†ûŘ•U³Tü¸ûXž=¹ HÂ@h”¯£¡’žîN‰ªLÐ0ßsßxåÑ2˜šúøñ@ŽáÙõo!•±/VÅ|sÚ(ß¼™-Ô°öó›5÷^8ßCÉLNU)®<:ÂöC'‹þ񣃾5¢K³Êâ0CŒ739=<*jïÀ›ŒÌðHoâ ÞÚ‡O¦”ÝfK ^ô:ƒD††(ùø¼qqÙ§š½åÿìÁƒ¹t…Â’ÙùR[õc$éÙz¬ƒ}«z½öÁéƒ4MwóqM›Å¡¶€ Ã<éáí1,£þ]òóNÔ'GWŸ~¢Ìûqé+7{á0P)xE•*cðT)`¡k`‰”œÔ D5˜ÍŸvo¯Ë¹jpP6‹;%ÆCìd_B¢'‰·~á¥4MÔeò#m‰ØX×Ü\5JÊzí`×{žöÑŠ®45æõc—OO0Ü 4Åf*¿ô¬ˆéx×jTGiT[ŒK&‘.3¹Ø¼)1ÐQÙÜ_8<˜]ým#ô{©­ÉŽù1‡ºZ3vµÐ8Ëã·–ïâyŸ0Òx£ƒ„‰œ²“õm°Ö~H!{¡ÞYh¡ÉrK –ˆ 3žôs¥€ÎNo@6(¨Ù«ë˜–“6þê>åN{6p¾ä×Ëíä:M’üÎt>è­kÇüÞý¦ÓŠ…r$qñ?²C” ¹¼wÆg4ª×Gðßõ€khlcf¶G#8µœè÷j…ÿCE&ñˆ=EæIŠ»öœfɶs¯ý¼ðˆùùÚr¡™Ú11Ÿ©¿;³[õF4#À ú*Iáï/~H-¢Ûp¬xEÃѲv|«p‹dãõ= Ó‰$=KP0ÉRÆŠÍ«ÞnmÍï‰û|ƒšR1!ºlî§Oá_1.x<¯u'ŠlyÝÕNé‡F®ârgXëX>=×i €5màâˆ*ç«lÑÑ z?ðî_,ÌHXý˜¦¦ ØZàÿ=XÒfWÒ¨QGø 涘3ï{×íáLÕ!ÑÄ®¡ø+;3æÝ?´rð,nÏïÜoÎ%€ ¢©}#ÇBE½òø^%àÉoÄø[¡p²ìP‡ìæñ9”aÁf?”&(_Éâ`BݦYÀ©êY È2Q´K>,ŽæJ;ÃäøâI3À~\€A­’d>­h9W·ÅšLâèêÚ^¨N;Ýì­w0_ÆÍ¯‰Êæµ3l8Fè=Ù;’¼Oô¼e šŽ4FR„ân¼wÆóáJñ'…øì^.iÐF@{.ê ZfPò‚¯E§áUÛ©N‡Bß¼šîcxTÕús½þõæ;²ïoN!˯ Úæ‚ ÛëÚnÎ- d¹¹Ë¯¹GTiÂ#šûメ TÖM«?œ©N’V¤ŸòG¢4= –ýtl+A„Í×UñYÝYZžn+áÌQ’úwhr*ª¨¬ ðËx?hS{»Aj¡Çû|{Xè±lûLM«ÎÂílõÙáéPÓ|+ÖÜ,—Óæÿ¥mÔ;¯ÜÝ¡i׳a…y=V#½œ‘»ªF%dÉyFð§Õ<.3s߉¹°0dSZ1tíÍ›ª] •—lñœÆ¡ÅÚ…Ù2ü“Ù×nÕGõNð7üÜþW7ãcc1Ì&ÊÊóyJûªŸÁB×·Ž/mõÀæq=Ñ̸RMù‚(­>}‘.šýÞ¸†K— ;55ýútªÄ +*|¸âïoO§eãînÿæGÆUqNΪëIhf–Wô1ë^öRUU–ˆ»„ù*4êv½1Zgæ+ÕN{È##ååeÇk7¦óm3¦&9’±eai´"âVÞÊÛ7;ˆÉ ÝÓ‰‚ïÃÚVk?¢ìê´æš½ëÇòç2ÙL´æêÎÆ;7 5PïBöiÑŸìr;/Ë+4SSSWX[›X[‡r5PÕÖ¶ã²iΗohƒ9/§ë3Ÿ.~ÅíTØŠŸ¾…*Ï~fµR „haa4/W¦(ÚÕBÂm‹ïÅJÇžM "azÚëô|6Åe'2‡â£€Íò/¨¦¢(©¶8 ¿×ÿx~àyÄi÷Êø×rûÛ•:zM—Ùññ_“5”s¶)‚—ÀËÚÄÅ1 ÛÐö¿p5ˆŒ¦÷ww×ijØHݼ´^ðÂaÍCš£Üî«|ÛJv€€<©IÏæ52®<22âqÅTH<º:WWÉá5k=šsø€‡CMBb> ‚püè¢ &…X\úç•ËòR›ßwü(:ü×wgÃíí†Zu\+Ùo3x´"£ìPgÓR~r¹³A˜!‚B~Ž—{3 QR|1SÉüóîpºç÷o­²ÕQ$Æ¢"üûë02)ƒ}9ã±ß}´fsnGMž;ÓÄtÑ„x–=Q; ˆËšfbëA¾ØÖº=õÃ/9êÛ·¥µ—Y©©v«_Š‹ŠÈæl!T p¢ÂŸï² ½µ®²È­÷jí =µ(ª²œéë‹/æõjx§QO@³öp|sO.³ýŠÃgŸ†ˆ?/·Û™MEñ¾6õèdÞ~³¼ ö¾ù[ÛÉ’Â$Ú‘‰‰4îž÷óÝ•Ó-„““ C•êÜâΓÛû;a„ïIÀÉŸ‘8ÙÔÞïŽB€ës€i)0®§Œ ‡“Ù2œåFgé¶ éŸ>=GPšŸ×Ú–ûê¾ø³ÍI¸H¥ûE”ƒñG7IÕQ‘& Qüû|(b${ïva¨yªÝ_mhËŽM« ᯪ¬ý7¶ÒÉM§¶|í½;çJ¤¸7ƒpÈŒôÌ4¢P˜"uÍ4]‘TB±"\ˆòe}¸bZxæ´wiBT©ò_Ò§_L¥)Å+:}Žu}ˆÙˆhêíåd¶÷¼ëPk2æjÓ´ß·Ÿ›äIVŸ·˜z.§¸Úö©‹¯te¢˜‹$ý[2¿9N•A÷L5t+ãÏ—Óçv'Gj¾ûÁÜ÷÷ÎýI}·“¾VÖå ‡§¦®nu'‡K»,4˜)û+yáÙ2=„¼ng; -¾®Æ}8Ť™¤(Ž.ÍCÙ\ñr£‡ÉÞ ¼cjxøúüÞEA3¡Nè?]V@˜ñ"éT'2‹âìÑÐ(é,XaÞ_ŸEçä–K¤â#ø<À@·ºµUî­­¯UŠ«\:œŒŽ²PQºª©æLÍЋ°‹éŒ²˜™DF`„Ïñ‰@çF—ì7ºô?Á¸ï6–ÛÏv†)…†N[0‚^88Àþˆ4äá-×L‡nÚÔ×ÇHŒ¾x²%9¥oÝìÒƒ©Tá[‚óu´ÎÓ]ÑÈhhª<‹6ü-7*ä­)bSv|,Î^MFGgã¨Õ}­m…ŸÈ+MºÜׇ•†Ÿ1àçw)“À04Ø=UcK0m YÜ9é£ç͹5~“×^NvNUU×Ä…Ó»wã³µLKKFòòéƒÒ,²L™«7Q´T&ºŒúŸ;;5ù½œîq/ö_êͬv¥ŸœPJ„ÕÖÖ3ÉÉãË’Ò%—Ž¡ÑáÃß{¹E‚¢¶±™™ÙTi~Û×ZÊÊ,Œ¶§[›§væÙYYŒLÇ©‰‰d˜Mø›œö{»,¼¼ÅÔT¡‹1’?ÝÇ—DDd˜…ÍÌZŠ´ŽÎÎ2ÚP$%'­×K¤##ï,ÌÌby\Y¦_¿ÿÅ͵“Û53-bnv­—w4óëkš«kòôGTX˜ƒk‹WÍ•ŽŠRR$ az_¨}$àóØXwZ›©nîïçŠÁ™Ä~ö=„è÷g”“!Ôaïóóé©©Ì™jѹ¦½Ÿ¾Nx>°nøI‰Z×wî•>?Sb™ßôõbRP‰÷Å?qä`¾½Us?ü çqËÌÛ¸ÅÇg.jà{…ã–›²H†¦»üN®Â—¡½@-ÜyŸcÞ8 2wÈ‚Á»"-÷P§§£‹65î*Áx”›ËÏUÔÔzœ.¾Ã„úÝ<†@>¤tw«Óÿº¼4VWÐ×/$%e`)—¶·7öÊ’Bò󛬙¡ýþ…ßÓ-=k]޾˜Ôú`̤†F(¿­¼Lœ€æî®>I9Àz* Ö‘£|ˆKowÆYÿ7z“D4Íè(ÇÙäí-}Y™žÇSìVçe¿£åöˆÄÄ•²r‰’ÁKËåwß›½qóò¶9¶z›ÊªÆÑ_¬Ú;7O Ø9Os£.:A%Ç£»ˆÁ_%%}ÑÒo¹åÜ£éù¯nª‡zƒ÷¬ã|{µ¾S?ÞúZ^IIYÃý)ðÂrõ 5ÚO\ †|—kËÏEw¾,­W) øÐ¸nÍ—õÿxÇýxdkK*™ñíp™ÛÖ°À(ns×ï/DˆòÊçñæv%¥6ž¢–U7Ïz.šT.Ãi>†z9Ííú¶ÛÚX~XÌݪ8™BB—fµ´˜¢"â rJþÍÀte ·³¶´„½³çOÕS.îúÓœ6¹·ñÛ +yÄÏøª(Ó?!YG×€k¨À'±ÃZOïíãGðÀå—‹¶¹ÔËØÐІÆÙâÞ½&äÔóé|«†:ø-‡Üj?ÎìêúJþfï×.i£˜X1Ÿ÷½¥nêg'ôÏGçÚ'·WÜõA¶¶3¥ö|›ÔOýÕÕ¯IØ/xQ±^à±è^=ß“ H_¿:A“–.%äWžš4™œ2µ=ô”ªîÆN¸ y+úÊôösÛRF†_O7•Z³9²z“ÇõbKÃLUbq¾ùÓ§Lë‹Õ¸?™b’ßw@ý~çbG¥0b$¼/ëC-Óèøytãõ©pÓáxvÇ0NnúÒÒ!n¤Mߢm%%µ—/§(:~¶¿®`a ‡…Ýÿìg@A)†ÏkFAÛw®èH¢9LÆN7­:Ñ®²RªÞY§ÑiS=d¡Ê:ÌÌ„(‘¿Ù¿ý¦½ !Ia¤¼»£?aŠÅ]³üQüž´Cõèæ¦RMv†õ5ŸÝj|—;]ïÃâç z59š«ï´7|v$&¯ËjÎ3m+àüÛ »Þ™ßÔÑEY¹k¡åtgI6@ÿúôŒVýòÎvþ0;[RŠs5€WÛëS[M—ýÔùK)‘ÕkÇ}ËÆùïee’š³ ͑ň<Ù¨Ö;Dåø9µÈL×7èVëêF†øäèæ²@N%Z”[nàôÌ×Õõk4Z ¾ßQŽb^®©ªéVX½sâgdݯc¼Ü|.¼¢}ÏVD€óóæ~þµ™'QyÛ©†=÷¶ŽZNè£WÇd\ôA¸Ís5GÃãlu½XŸÍª#“uJ½<¿¿WüÁy+ WðêB‰/0½mkÃ3”7Îr¹Ý]—‡J h&Œ}z\fb¬¨Ó¼ÍÂê¹Ñùä £07Òe2…áÛÛŸ¿“<6îÿ¡(þ‰ ÏwCñ)*—Ç䇡×ÒñÛ¸¬¬ROŸÖ“¼®21•áFŠS× ì [àu¢QŽ2 Y8>¡Æ¤?ïéžÞiAÝœo¼©uÚ£|ö,€†H0ºˆ{LhÜO¾Õ'ÙÍu4=>~ÞÔ?’¥[­! «»çÆã !ì]_/ Æ ƒ £>‹Šr¦XyYÙ£Ó­›ÙÙ Ù€òïh„^µuÚ®—%£¿Mв7žV]†ÿHÀC¡]MGJð3Gn³‚°óHd§§E&ÆXK³Ž4<=O~}µÂ¢‹I6@]Æ”‰K\@:–ñ*®{>Ô?ï@¢Îö-ê||îÎÌÑ1= ÓŽ™ù%ƒ×CQ³íÊ›N¼,2c«¢íuL~ýϤΙ­_€§ãâ:æ´•WFÚÝ{œ/µ±¿yãîd'³rT¥ÝpÉaÔkCñÛÔ¨/¼Á¾Óöb??+K—Æä–ŒˆÁd²¤ååKï˜j¤sV§Ý/;–…Üzí_k8òmWDÒmøj¤Q!?+ùÍ#LgQ Ç;]è«C¥Þ#¡6],·7é2ÔߪI*Ÿ_´Ï “Sg%k^åxywÓÎÊÒÚú‰ÙèÖ×c{”1án ­ó÷@±] -å••eaÿˆBë¹:t]Ý–r©AÔO´oW~µ0ÕÅGE%ÇÅ%Ô×Ó8µŒ{ÝåiTï;8:êk&Dþxá1ó‡­Eä(F%¢ Ü]ß„¾"^\I­V ïúázÒM_å|ð´¢¼¤5­xÇL…iËþÜ!q˜n êéinÿ‹—™¡Z=}ÕÇUUò/^8¹»1°)÷Z/É:šYïÛ¸¼tá°ø,Ýq}SÝò›âPoi©2à@W ÈEp’ͽ Ãm‹u¼\¹/Òê™<}}Òèî¯Ót ^à›T5¸uYº»QáâîÌÍù—ccô–{ür«!'+Ët4‡È-Î-L‚øýYÃ# ûÓ/uF~ñ‚©!¡?PÐÒ:ipÅS#¬ßVÍçu»Ǿ?Gm ¿Rͨ/²ºæitiÄÙU¢ë ¸–ÍŠ§ÞHÊF3áeÐF>`–"àó%þó=–LDC_ýîúšž˜óÀfͧ¢#T.Ä(a¹@pv¨kªÇgdaÖÔëæšÚ٠먤<ÞŸÔøpi›Imœ–èŸif†SYqK&ý"$)€©Ì]6ÀÞ7#C¥Þ©ýäÝÓcœFé凪®Á .‹ÉE…l¶üG;fæñNMn{ÓöŸÙ½$¤ûË+‚=î)&œX6yŸçŽÍÞÞFbÑ«÷ǽùê„÷óã‡].c³qöô4Ëݽø&æ;î!övÞµ±¡¥º°E!¡[r™¸5ûã۫ݾx¥ÁP_NËÃΰÐÖ»wŸ{cIVV+mÛ žéGæïDîî>'I¯u¿(º£(·¿nhZÜHiÍ@$~{)À ÝàRVn¯éäô·9›9A(ÕëîZEþùuà…Otô+̪©Ö×ÇŠW·W6?0@—‡(Ò/ìp9å‡ß ±²žï¬?‹oô¸êŠc-¿ºtìÿ+,œ‹Ïy°Ìaü vÖgÂÙ‘ÃØŒylê7.»ÓOÿJ§ãc¾¶¾UÏ´lvÏd1ÜøÍL 8ì±KËÓÍ%ÄOïÌŽç—ˆý>Ç©«iMÖY¬F=FJ1~úôU=*D@APÐ?HBÓËë±Æ…ÝÎf{PX]]çþ¬m—#ò´Ú `ª, Š 0è\“åÀÀñC¡§Pq!EWŸçÂèèk*ªŒ Ò´×ù9¬¦Ï14. só󫫪˜¬±RÜ9ðäT'srs3Šè¢Åߤã0îîíÁÁ¾*Ë]\<ìmh€{uËÖÝÒBÌÀ€¾÷B« ;íWwVÞ6Õ'†E¸†”y}}ÆXMÞC©Òïº ˜ 7ú{ª­C¿0((%þšüàßâ¼kÓ¶/Žõ~_‹<+Š¢Àùlûä Æ»š*"QôGac››àÍ5?t,µÁ›tê~/Ú>„CPf¬GµÞ™©¶.,,´µµ-˜Âß|+ùÃXþ§½Nƒ™9'§áɺԯ‚¡D¿£éuÖûw}œ¾ÑÉQ(òxÑNSNŽA `a¼w'Ý`aªmõ'c™³‚°dt?°ýìƒîîM!b­üÀÚѱ/)‰z²0ÌÕU#£Y/êÊšK~þ¶B ’õ¾ø+‡Š‰®Û­‘ãõueÅíÃPdäšµ|ôŸ°*Ešº£Yêê¿e’£êëwÍ|‘ÙvU]nlò>&w=‚å#úÀKÆÎÎOø\ïi.Ì[èN¦¹„üy¼óq—͸·ö‹?»A~li‘¶²RøäÐN׏¹kg;µµ 1*ª²Ãú¹z &¯†iAÈ&?ªóá"˜QýÎ7L±zR¾€Ææÿ4&äåõYAÁö*K3ii._xÛ]úäÏðÃsõU ¢ºônoRS³$¢á“xb›ô0A“Y¥ßž‹–ÞjrÊv%!e ´™ÉïôDXŸ­K6¨8<1-ÄŸ…Rqp¨RKCïT‘!?¿|†—ÿ°8÷í[ðTygvWW·ÝeÉ|½ó‰X†2j“gáêê/çƒq^›ÅŽÛ+ £(!ni´éñ%™¤ïeà~2è4ßÓÒÝ7y?ˆWøB~¾²²êùòî“ï[É·p¦'ëíþ9Z cȽŸ+ÃÚ‚+^Ë ›š“Óz¾á ‰â©‘.|Sqêw66„Î|aî÷Îó¸ç'ÙÿO‡G•¨øâ8üM¦“ Ïé­Û“ùý¿~eÇÀˆ­w†ýh³9˜z´ÒÉìÌþвtŸˆV¹â cõmÏãú´kd„ùõkXm # )ÚW<1ÎûšØ¾È/¨N«eTt|÷~DD ~"r?×$y~„ËÖû–õƒ„…‡9!ÒÓä]ÌÆÎom†ÃfŸeàtN‡ahEñW,6V¸'ên¤g Žßû¾wôý$1¹ŠÿÑ'<Áoºmqd’—…§žç»„ä÷Ïž™®®έ322Ê$óNíCŸøSkÕ]"ØceeUUUEÀí´[¢Û†Œ‚â}Û5 yòä µÊý@¤‡”êÊ|£ÐË—jÚÚýµd¿ü³Åì ×÷òI‚èfççf—I^—É>LâoÜJ?‚|xgN½v{e¡³ ÑÚúVO¿PQÑ`Hú×ÅþK6ÖÊSÓVyw÷›JsÝ,5"ÄOãÊh„FGùyyu:?R‘ JJZ $ñbbbNëkûÔ;TÅEÒÁÀ$ú®NÈë¶±U »Gü/:´Û@_e­"Šn0´ƒøÉb¾w/"õSÓ§ EÜNÖ{Ž×:žKIaÕÙ)Añ¦/¾x£÷;æ3ìONèë”=g,zíß¿c³šýˆŒTzûö­„DPDDDNÎf†XÄs Œ-‰e›šÕUƒÇýåÒEÔ44ØYY‡’ÂÃüÀc5StqáØ‹íèáææ³mk{„ÏíÄÂÊ*&!A‚øšŒìüþîFKôÍ›ö©)×ñµtѰó‹‹ß¿7É<:I­0ÚæêeäåÃ^œBš½îž££/nllÄL<*'àuSÑYh0ùŽ7-øêk¡ÌKø&ÏïšÏúºúúý$Þ‰%3ÎMf*„AÈÑqüÝl«Z¹ýN¬Ë¹b%%¥¶VXy|o¶¡Qç±à·ÉIÕuaØ]¹·Ö÷M#Ѧ7JJ•%% ôô2bb]}}}33à•šššŠ ‡£åvËhE•lÚ\0[[bîó³ MM|llN“%ºoæææ°è4Uå¡W™ÍRk£ûEÕœ¾ ˜JV–AÌ÷ïß m­Sp‘m™esqq)ª¬¬´„{.aaÛaóVdø?Üì—€NVGGÏ«ºIÚ”Æ TÈ7>˜¾²#s¦çàÐjm’!„‡ø@{ Îëq•2Ú^Ί£$Oý?9á9Íôþý¤ŠâíÖ•l„oU‰lD³ÛYà9;»Š¸¸¸²òùÙÎD…ñññqº]«ß“ rF’™ò€=ÅLM·ª4Rèņ¶`YHŸSRP¼WVf£§/ŽOߌÉÈON¶ÀýȰÙûa=cÂû•|5áW mª¿ïàqaøJìcLÄÊ9“ø÷¾«ÊF(äŽ*dï ª¡^?xôÓÇãæÜ¹'ÊæÉw™Í¼<.`¦®.J§­a¾BXVN$$Vλ@OO^Â?×]ìçÏŸ­¢2xÅÄC›VS}§­>6‘òŠd#ÉæŽ#»º^¡à²ÛÞüÕ×ð÷NGÛÛÛ§§§»¬ºŸ?ª0¹º&ÿjwYów¹ï1ÿº‹  Ô=m­ûåt|à i–—™e¦Ÿ?¯¬§¢ê%-Û8Åïšh [RªÈ¸¤{e s¦@lÕAâÝ‘lè¹ä#T³ƒÖÍ n‹oÞ¼©@×ïv½ØÇß‹-+++Šúñí[ ï¾ËèóçÏOiDE Gïz}ôóó ÁeÃÓ®±Á_pkšï\©@@ä´“•‘±¹¹yêu³{÷AVošsÝŸ ¨Vø2<ãN¢ v»)io) {¶æ~A–À}Ù£ñA2ôf»uÓæþɹtY…bÏoµŸz·ZÇÓë³èƒÀÃ]îÅ å=?Øñæç›jj.ûâÙ•••qÙ,€Wû†„H™ššºººÖs&ƒ8 :99>gba1;°ÉÚÜüfÄìÁüÔÔÔPtAQѾ Uäöââccv³Ñœ´‡ˆZýð"§iLÚŸ`ˆÊ›©(ÜMd¯vÆÍy·,®µ”èKWr[sªÑ4ðh‚ÔÔ󀇸!åŸB çoÖªÜξšt¶<åož)7ÚÛÙi†ÇÅÅ•ûsp›7Ÿ(z‰ŽNAOàðñ`¡ùâ~E<[ŒkÎt&dö–¹¹¹ý<ˆg8¼£›åvQÛ£Dõ} %Ãþ=éXÅ­ôêò¼å¾e¸Äb—KëýûÏ~~wSå _ð@XÎ6ÆóÛ“UÁ<ºÜîee¥r]§Æúêë;;‡Ïž}Œl0ƒæ-&&BôˆÌlïîZ€:5¶+~þþ‰Ü¢e©©-ããÊŠŠŠ’’ÁçÄ"ââOÑÁ®³œ@¼(‚8?<´™ÆÌËËû Ø=Sžššz¢H+¨RÑR‡ZEE° €( i*E*VàÅØÞ¢é´ÒD3=Ý010ÐÐøíV¿øùýúòŒDHHhSÃÞÙ™Ù¨w0õmµåŒÈ ¬à7}¶+†††ŽuSNµøh î4E]î+!¸„|)¼tTTáQQY¼ýÎ×2Ÿî¨À«váqØèïkÒïëÀ[Lò+½Šytƒ Ñv—ðÔsó14ÁØŒ”IΓ”ì·˜v°º¿}25U/%ùƒÓQ/ùöR.1Y'57÷ç!-àKvvvjê ‚[ZZ,½_¼zå²7] :6;;Û€6’ÔÛÝMECƒŒŠêäàÁ»²·­@PPP€€F°º¶†ÏåÓÐä0öH÷b(bx\\Õ×5[ddä³GbÒÒã##mêT\ÞÞÆI†ÆÆ:Í^¼ŒŒßù6 ¿ ÆfžotßX[3´´”Ò¹ïŠ Aus¾ÇÌÌ þ«ø¦ÅanvÖ„‘‚ŠÊítSNYyüdc 11q뤩© ÌY¹¥#MUDb¢¥¾þ ø×ÀÀ§ÀTësµ?EY·¨(%$Tëµ#C¿]QI¤Òt,ñ4ÔM]ߪÕ;˜ß!—ÉJO|üáå´ÎS¤¤(Óßã|÷î †æÆÀE7• 7*¦°(x”“©陣pFöNZLœüŠýüïîî&דÏçäää´´!ç5 †ŠŠB…R¡gÍ[Žno›MOófY‡Ì·^€a˜}HDÉé«Ûúè\Üy’ýÊ%±¡ªjü×/ ÓÒÒ4ª,®n.è÷\‘>[4G˜äºC.·˜bÂ$OÕ[gÕ-ý¨©ú×XsÙÿéÓÓ½çðÚ¢í¿s[ãªÑDP«Ds4ɳ9=qŠ¢|éža+NÃA8FÊ´4‹<.{¦ÕçÆ•#¢±¼L^3—»×ððØsFÍ–I&“Œpç±]þUÅyW]œôéS+H½LÂDÃBˆ ôS¨¨¨ Ôb†d`dˆÉ©‹ƒ, ŒüâbòïïËt*æ­`ooÿHp½7v„ml¶Ö~+>/?db¢¸¨(*:Úº‰˜˜xµYºÕ’pÈa1€?÷2×>þgBýj2::+#£sÐ- ã–ÚFØA²'>SZǭ܉kØó†ÇY–™é/ž)"**“Ä+”Zâ±9HŒ‚¢ !Äââ¢tX~â½S4ÝZ0R»ôÛ¢k­rۥ؅#ÁlrZO­ÄíŠÇVó Sw¹3c=c䓹]¹Šya2Ç1Œ¨E¼¢Üˆ„^°>3J*ì»Sö–§&îžw††üC¡më¼xÝ*<›®.T}uí°-²–!¯r»¸¥M&ÆfOÉgöQW€O®¾Â®¯,ÊÚ1¯W£¤¤4;0;Rƒ‘±ôôÔ*²ÎakÀJ5ÒìXÁǹ7åW¶HA¿›Šü‹¼&,4]Ö=·Äfî^„Ÿ>vãq‚ôú‘+g¤8¯ ƒiï«?¿sXÈŸÍEQ1—vÛ£¼·+ϰ.^ìÑXtµ­ÄEy÷çà ÛÀ®žJX;Tˆ-£à¼óºç#3Þ×wiÅÂî² cËÎuïíìœp*¬"láÞ‡D¿fe¼×Ú‹Nªyœ£h&"ò¹¡áö3 ®IDo2¯{Û#çþN8~‘«ñL`åíÍM jêøØØ³KªJÆ80FÏ'sóînqmmmu˜LBBúÎüê±0ñ¬šËx??O] ÿ¢ûÐáææ9X-|¢?Æ9}\Çÿ×Í¡C>;Çcï?:ß›0A€1ùÔ´±¡T§g—èA23³ÃÆ.‚‡4!דàä4ìîÆ”†8& å×îL÷oJÔ9÷ žÃ>kp³d§¦¤œ²m/zõê•&PÀïZ>=ºÍôb¤ÈÅ æ÷oÑðp’XÒq›Ø¹lrË0…÷ÃX›÷£™º[ƒ\vάŒrU%_ÜÙ ÷h Ðc˜~:ª«ÿniÙ ÂÄ¿º*gc¢£øíriSñ¶43..+-ͺ»› ôÝç;×_Nb9´^ÚvŸà &ð³uaþÖõîÞ^PPÐBƒ«¾¡a¥nÛç"íÌP\E99SKK^›E™ÊMŒ3GVs"ý± vƸzÝ6ž¤ªi[h'/@'™œ¼·í¨þ¬Ú™‘¤×®¯o(( †Âɶn#@ м^šU6ħvúÁõÎ'oHw†›?–ˆ$¢ÁáÕÏÛ ÕKo™×#Mó8µ··O&3[ûtNš^lÁX滞-//å¼·» €8gUÍk`x8<99™-@§þM}k‰»'þ‘ûRë[1±lf3÷æ§"§úÌ_ß-÷37¯øZI«›Ñg}Ëprßv:©¹`àpJü,”ZSó+w#&NÝÇ Ó/RÜð)ägÝö6<3÷³gjÛÛÇó󿡸^W9/þ ¹¹Ѻn|Œ‡Š…‹[ï´§Ÿ»$·ñȇÔT݇û¦ä›ßbb.ø;Š1±°èµê~°…F¬ß$쀸³áZÛß¿PX›ÉÌ·b„‰Ž®(º‡^{8‚£k™z·w¾;ýzcÌÁp;ji¼øÐÜû6UÖy¿áGB‚óQÚcä–¶wpˆ*1åÖØþœÊ×wÝjäììº×ûñ7ûVÃù×êW®³kc{{$|°|õ ŒA)x¢¨¨ˆZ¥è÷33³ëë3s—K‚CÝß"¢’ul/K`Ôa{=|XÆ"CBÖ\š/YêÍ”À6!‡-€nÿÅÛ leu45õFDÄž—' »5Àé5ªœÊ„¦¬l©gýµ“QoÌOè% ’)ô2)Ú™…pÁ…òyîñÁÂŒ§–Î;‰·o½´æ"œÐ›> ¼šTTJu®¼N\quãM•׸IÀÇýò.­¦†É LFAvöÄÑ•aO”šª*ƒ½ûÅ~eH¶#×VVFÆÆ@ê 4,ü~š÷+\ÈY›)´(S¾r!PÀò o©ß‚ì.<ü´7ÖsS¢S¬fµ×˜ƒ&¡.‡ýPP°C£ZÄbÖ…Îê¦ÂTHú‘ª |)r „ùºdV²N`pðïï$æÆ}ËÃa¢’vÚKŸQŒu§ùÍFÑ+ÊS¶v&š/ö_fe7{¦Ô”–>x›£HJñ[UÇÛ)¹JAa„‚¼:>:úð0õfs¨mæž‚”ôäçG\ÄOm+Ï„…Mß¾m#‘…ŠÏU3‡ùü¹vM­6£Ðá¡®'éÙläÇ`-„…FÂ# míÜ<7 ‹òÐ~Åõ =š0Kx¸ṄfZÚÕ¾ø¨v›fÅUScZTÙŠ_Ya=,¬aðf+K‡j]]4sˆjzYß}lí•],, „licƒ×ÛkØEÆû¾÷Ç$˜,èbÏFÊÿ‡º·«ªíúEAQ$¥‘.‘îîîYt ÒÝHKww‹tƒtKwwŸ}ž7¾ý~{û\çŸ3/½ÖZ“ã÷¿˜k®µdr‹V¨•>‘1Vþš,= Wí z=lòm [¸XÓ}-¯*§²RÜzÍ¡¶N#Uó¥¥…Åf’_nŠ;w•¦ÊÕ¡6"xÏÎå³½Æy‹ÙSîû FYâ—÷÷3Äô@‘H ¿…„{·{wGž×Ô¨‘“å|@á“•]¼s­FÂ^Û]p×=ÝŠ$&N{¥å34Ô÷†÷âRj$ÔcF=xM± U¿||²Ýor€ßÔ¢~È= >×J5uÛüÝQ±,>Çä“þ±¸­©òç Àj­ksHðé½,Çò”8’턈A[f3Jp_·¡c¸g«og!IŠ8Y@+N ÀÛ4\È¢x©(N áÞvõ¾ ?{ËÍ]\_o9ðñYk¼½½ÝÚ™¾@‚²;\—¼õF|NE9zqé8<ðŠååR³ËT„¯ï·b|5eå@;œï|4xö‡}q»/’›]Ü®GÏgP•˜º8ü¡£Ã;ŒüC†‹Ë´­Ý÷%|ÒÍ"ÁËCDçì,ðºñ¤9M°³ƒš¥ÙÛJõ´Âš›µu‡­Xp¸¹=çOs]rëZÎA&+M§6GÎ+*o5.&÷ >ã%±Z§øúÖX-»<¼½Ã*‚\ibN\¬‰/£>÷ÄGI‹µCEšÝ׿ÛK㞘dKI…a«BíÓÛOµþDûŒÑv?Ž!ÁÆ6´ÒÏ—ÆÅh#ËÍžÚÈøûý]ì$Å«Ëãì»)8;»xsŒ‘!)¥2=èÝ'vR‰¯6;’¢o—@šb¨“Övpª¢<œœüö”†´žà¥?¼ç÷†óÏ¥ã…ÛEò|ââ²||gg»[žž;·w„(ðttt³Çg‹«¸Td9×çH0<…×°4û©¼•(^|$ÌÒdÁr& Þ?ùRßàIåö£õÜsc^ìÕqGÒ ‰™¹4œæÉ“Љ ´µ)YݤÐîÁX§B/º»3?8nr8,ÍÊò Œ·„^K•Ê9:ª<‘ð•,=É{L£é¦Âj9ŽÛkZ£¸c1ìóçS‘Ûy3éaf[Û;É£ÃÕ•¯^™\¯ ¦T¯92¿›vsi[¶²³S¡¦­[•ùù޹ú”óÍÍ8µÁÌ~ÅäÄè¨Íö8}m¤%5Ô3?ûár§ý©¬æÂÌ‹S’ÉðOKÏ?>ÇçZY[KKò´%$Õh¸Ð×eÐ_âKMŽ5‰Çúy¸|ÙìÆø òdßÖ7ðÑ"ü]+g¶%´ Éœ °G™Âç†ôîšµ&cO••K1úÞÄyŒùÌ5ù޽ YsˆÄ÷LÑÐú…p¿®°rCfo/³¾>JYöˆˆ#ƒÏÝÐPðž00³¯P0õ ²<íP†˜_¿öKñJXÌE^sð³öâ-“Ž×÷±|¦ã5ñMtŽÙ*s“/@b¥¥ 4šneeu®Up>=¨…Ýß_ø0ýòîR6%ªbdžª~¡ª3 î{Û-Lñ.¤ˆ cãK`Ùæëô-Í =:—ß :9§Êä¢!0¾µ™,ñÐ0§¦º6f·Ýl¿j'¹tÈâ~o+Gj LjÙ±?j{‘Fei•‚½•yyýd«š “ÓHy™±±8bu‰ßÍm½ÛçKè_)Ü÷Mt-<ØÓ…åImm±¬$ÂãìöGÃH ´–r£UŒ¦ö Ô®mðÐæ»äbÞŒ²YA!!LîßÚZ!Šâ’ÐìK1ƒQP%õ‚¡óÆÆ¸œ®l­SʤÄíÚAVF¤K ‰¬‘ï4îããIL·É€év‡œùèèå þk,Š×Øïêk©ô»Þîòó/°v«ªvK¦45»7×̃\ÎTçÁ‡ÌOÿ¾MšÏLXÔ¹^OX+Ô:â9.Û䄽¹Þʸá ¥ŠÍÊ™yòîË«y^…D|ÚvÉ«ûhÇmâƒÝfnl—DëÛp?¤oæE´HtŒ±…˜»êõЖõ›7nOžø»ß½6ÕN·š®A‡¸¹ñwÒdSPÜ)©jãvýÔðšs¯1+Ëøþ;–†{|"Å8 °/,.:”ZjÉA°Â¿~!5:ÖC‹ ;–닲4"_ü4˜¼û ßÇ$ÇÝÛ›óàDì›LxÕ.ÇSïÑQ8Æ&lî·W¬jwÛW{s.ÖÇmp~¤2vüêþúl——ý1Ô7ë ‹æ”üœ lÌšv}òØû'?<1h¸4êN&[u/‡Rq®Ý‡~ä²Û)Š”-ÈÛÊ¥\Ys^wQW¥¶ óHBDÄañcíST¾ÞŠŽ©zçsz^^bFFVž‰iTx«C‰5_Œ—KÌ´RŤŽN$.7J•FáæzаH„&¦’qŒ¦.JJ _¿~þùàbC%Z¬ˆzzºÀ!,%w·²|øžTVÖSuKïíýäÕ«Ì!q~묕+"YÄO,^g…Ð@[Vš¬M•'Ä'¨&Öºé©8:®æN@âa§dÓÓãÓÓçolŒXy¼. ”!&ÙÃMѱŠuµêŽ75}£6ùÛ25¶8Dy$“ÅÜ;w úddŽæ:H®–;)$ÎΖûÄ©Øì?þsŸiŸÍn©¿ÓùKTMVöNÑP„§t`¦–ƒáž“ð ®olžûÚã@qö P+ן٘D JRw… e(ÚÊäÉR» 2³ù4fÅZ1P¥¾¶ åŸlm/Ol )ÑVà=ÉÈ„ÐÐ\ôÁVVfgd²†b¾©±1ÖRšü2_–ÍÌÉ0"®  ¦É=9ÃÇg¢¯…59çjÜ߯ç|Ýn};<õýÔýövfÔêJ¸ŠÖeøû:Î9Vâv›ó=âÌÇóóÝšÍwüìXïXØ~ @ÏОŽ|óÕ´ò÷ï“¶PR Jý}”7?¼}·'‘ž3'<|`ÇÿC,pÒ.× ææýo’ä€B©°PïÊWLñüÂ<9mrt¤³êôÑ•sì•Àœp|Lo’Àës°¹ýN&w”HТÑõÚvñ‡°‹ Ç\1!­ÑX^œng<|õrG¯ryG`Ås¨íÛkÕ™@ ÑÔ†6» «Ãs Áž¥OB¢ˆü’¡Á¤×h¯pëôºßéã û‡ °ÚniHWk·ÂžgM‘ªÊJ‡ß^–¯m G£Zß´@ð ÎĨqÖÆæ|FFÐt00ßb±³eél)HÕÞ’F’ÿóN&“ƒª_YÐbÚÿÎ×Ó“Å“à±åñ8r¸Ÿ½Í¨¿©ÓÝMzLÌB¹á¾syŒ‡‡ŽS]`Iɯ2}T**½Ž¬GŸwÔbcðôMØðw ¾¥øñ5ää„Õ\H w‡£’„`¿·JËIL¬)+ë›­¥G%­j6OÀõ@`eÛâpßs<Êè®¶>²²ò6=ݺ‹à;ô'–ÄÐЦäy†ò@Ri¸p'H³’ÈPl·JÏ»VÖÕµtw¯õ#ÂÃ\x!‘‘ãN–h'’LóÀ®ôÆrÛÙa<üÁJ†®~fH§®•¢ñ‡™9c?½îrtt%ØŸÓ©Ú4¶È»ýÇ|_¾X¦ †Kƒ¥æ aÎ×V† PWo€NÈ\õ¾p00µíNšo¼~¸|Â9WÛÈ49º=‘â-RëÆ}ï×ùýÃðæ}_|uèãt´_Ä%©;íÆ{>"½O`’=†ÒªB{w‡Úbò“‚„Q«í¶‚ìîSfËiUUS­rA> ‰¥]Uy™ùñi^jŠOVÊ ©£«ÓTn7¹ód_:i QëµÅ7Ô;8‰$²_ÑžCõåå›ÎWïwLWH…Y?›®˜/,ĹC4Ÿ®(mj2Máš35Í·º>Û®µn4²žý4_)üÚý(ÃßÓÓ«ô0N2%Ø'D h(%ßñ^qñ݃‘ìýôôj~‹W¾fËý €VØéëݶÕdGôtQÍy4ÝÏ’ØC0ï¯Ôxxu'f~,[cSÐärÙøi1›Ù)ù;OØá²÷òraR¢Mž¸ríQÛõytŸ(<옌÷ïÃfçN¨Ãô±“ÿ¼l ‰—N÷QR5ÆŽÕÕIÀHꢱüX«¶ös6sžÁ¦‹ B¢ê¿gÊÕÔ+ëƒ*ËŸ5Þp@'§¼©îV°ó+@åìlöüüÞô$ø“þ™êWD‚ÈüìBî.ê·B ÂrQµ±;ÖÛž?6€Ñï»{¸0«;ò3éZaõä”zA±åžÕ+Â@¸‡G,} ¬41ÂAB–°dn¡JÌ«¹¸®µV®·§A}¸©Q sÚBȦp€rr’ÕÙ¡2׸Q@i½1ÔÿšC]m •¿Ý{Ÿ×ô^û?‰ _4»ÝnnmÁ‚!$?|éâ#SÄÍ­¬Í£O,7sõC½ÁâÐÒƒv†]3ÿóãÙ¹$Ý{F׫š>1E»Kz!O>*Ã+Ò·\\x4Åòëq™Ù Ê]ýefVVàŽ“fª¨8 +1¥VÅÍ¿çÈåÕ_Ë?yò”(½ÖÈ:ˆ¥¨Vb~ Š<ÝÕu¢É¥vpÊQØÀ <~Z›·u$7÷I"Ý7ס–I¥üéiÔH&”ÏDáZgf6Ê˲CÎv?]}ú´ Y2"}t•¢ÙbÇs74ƉŽïxQ£4¹¶ØúdHbTµ¬,ƒ& YÓÒ´;"7.®i†ëÏîLæó€ã”ÙÙâ·“®w7ª¼ËF"=Øè+0PT€1ñ¸©Ü‚%ÃñÝ#Ý÷ C¹/Ì ÅwþEo$Ëúxý.Ûúûª¾Õ¡6ðkøÜ qqÞ‘B…FÐsšP´½¡øŒ˜-8Þ‘’&ÇmÖÙæS\{àUV„‰Š4éÞàíTåÈ™ØØ DCóÞõ„Šª_zŠDC#- àåh>φÅh"$u9ßøN"QHsgh£I0­z*ñÇyòå}}?œY¯p¡ªdUgV–#¬–^3t¤&=¡tר­&ÉnY¶úó¹I<ŽO#CRðÏòs¾·åøñk"1øGæ bôi6\”X¯ë׌ ô~#û|H†â ÉÛJ=¥Væ­‰ªÛ›­n¼ƒN_¯FzšoòPoßi9_¦EJ̈°Ëwû††æîÌüÉ»sà««,ä­;KS=2 wíw§ç Æš‡÷¡JÂy}#ºõ€N®øÕq]܉1'9Ï t;(+͇/i$]ÝÚjDBLܨ³ ôk ß¤Óõ™©ýy>(&õ‡/T„u0s´Ú97W\¤ž•¼—–EâkGøêòòUÅ»j#¸MeP]Àý€–;<ßÛ«å2ééÉǽ]9"ÿÖn;¦ÑÃ#¢p—1°+>¾Dú¥÷D1· ÿªƒ%>› í´2Ôò ˜¢H{Z=øˆ€©YÁX‰ö**šœœ P ÷—²¡vw_¹Ý? ùm¶²º¹‘ƒP“>pëclöÖÑ™t{ãþþ ‚ÍñcWê3Ý|SaX,FvðakAVúóÐíŽC99½‘õ¨¨Œa‰÷éÍîÅw·ØÞÏ?…ØØ  ^§wxb\›µ6L*Ùã\®pzí³~a!šâÄ»rÃЉ‰”`;ôïhjŒ*š‹‡,¯^Muu>ÇßKr;Zi|Íp65¥®·ê*”VÈپமõknhH èQ ­«cb(³·Œ•Z‹?Z¥¥CÏöÔ­nëvu^ ’“ú| kéè˜RYqØ ™é)=:šÞõü¼gIA¿ª "†„ˆ¨uLl,--üÙ™„…ñ¦£™áï•ß¼y º‹ëÄÒ§¡çÞ /üpáÏ;B1ìì'úûçœ~mÝÜ ˆ÷§³±A+­œ­í?²ÃÄ$Ãc)9úîÑöõ+)Èæ.€@ŠNµqñ>ý_ßÄ%5b;ÕZe¤¥íaîÆIfÊ´þÀ£ÔtSSsQ2ÈÚî‰f–hÃLKã®OÙEÔ‘t2ws{§ 7‡éjÏ·çøn§…wÁnpP¦47÷S–V2¬ÒÈÀ”£‚bÖÏc{z~‹ÚŸ³*Îls3=Ãæ;€‘¼<ä]£ÆJýÀ¼ÊʺrëÙþGãýcÔUè|ïîTùs µ}|âÓphç‹5mååmËÊ”p®¥¤5¹/~µ¼Åˆ%¦£‹Á—’xtúÆ“g HÍÔLï‡RM Ëqæ«Û͇0Ù»ôzBp1ôõÛ«ÌeyP?‚~Îè˜BF.ìëÏåZ7öæàx¸ù=|çç/ë‰"} AKKýºÉÁîR‘‡$Ÿö÷ïöT™¯ßßíŽ5T>L¿¸-˜þ¡‰ýÝ {(Ú¥“Í OÏbžŽÒ—'/ÃáÝýü‘lmF/!)))ÚÊSƒ«½_¥¥[Ç'Ðq¢² û²»L~PuÞÊ×.Öt`G¾À]:™roœ}äàèo¿ÏV[¿ü`дÒ""ðJKìƒQW|øç‘gò0üõîÍ,ôüâ}7·óýâo<„•1±º¨­žOÊŒF²‚ÕëÏ¢B%éýGOQ®6Î×Ö€a¸×ÓO…†06Lg°Ä'ˆÈXQ¥@€y¹YìY×ÅæH# â§Ó©DV¬,meeb£õ-œçÏw¦Äba%ß­>Ÿ¶‚zHêt(þØLU3#R«,ý;SŒÈ2^fæÝÏ¥œÊè¥ý”2ÈêÓ'Oüƒž)Š‹?©@¥‹-( {þš¨ubS þ93»‹ÒýÍå±è££cç1o‹%¾áf{PSÍ’é ÐZaaA ƒ´&IÎÀÁ¾|õª¬jÜá¨my4Éýž +9‹‘ c*n!§›Û<`#Á Ú÷ê¿ßW±xø‰%NÓ¿o°|ÿõqãl„ñæsÊÑ•ýùÛQ@ü8.ƒ#ÖíµÖDðß’ü6A‘ÐÓæT;nG•–5:õ”êXC½Î펎þ€*†÷UT܆4á´¤”§$¹›ÑÍYYƒÞCc†|øÞj éXZ|³±)ÞlÕJMÜ®}ubå|®‘B×:Òº|µ>Ø<rÆíåu‘–Þx,×XI]aÚªë!ŸÜÍ:—GËþYYˆôôjòò©±Øö¹¹Æ7‡é°?®mm\,ÖT¼_/T•Fj9:ZÚð~ø’‰vóóÃáP¿®ŸÃOÉÈ6ä%¦7ÎÉe¶·áœÔ|;,¡ØÉÐòÒuw¼žÆÄ m3ÐòÆàØ ›y'#S05æÂKËÓ'Õ çvÀQ>È«ÙOœOxó ¤¨#VP ?3;ß)ºÞ(µ{æ@½¼ÚÚÚšc»÷ñíK­6Ù`,F/¦oœ„:ˆž B)(|üÀÐ]úyrqø æêªkUy½PªÖjï#‹‡÷÷~44n’õFØ]¥)ÓW“Ã'J¹+õŸ¿N÷M-;¿>dd mrU}o¹»WÔëõ MÀýúìü|ߩ⋠ DÏ¥¡²¾~~8«xfPˆ„½¤³a8°‰/Q5éØßBͽ{wíx²agîèˆY9 B6Ew *ìJ OóâPjƒážµ•ÿ;ª[»÷|³;g»ÌÎgjü숱)>ûóñ¤fã‘ZÇc=Ã}z:éŽE`˜ÏӿĮ¬¿ÕÖŽµ.×…KçDDØE—Èú“ùó‹ßlªUØÔÃb[aŒÝGU…,>^ðË—gëJ•µþ$XXŒj¦÷ZEOQ~½¶;aC8²­ ñ¡2‚…Údɤ"Ëÿ)·¦»o¯ÛÑq¶OŠ:A˜F8^‡G ¯û´8œ+{.ÔR à¯{À¯¹yxd9~þ¥ÏèñX_’­x‰†Õðê•«jÝû_=ÑÙ¤˜€ož–³@Ùù ¿BGoÛ¡ZÝ‹“Ø02,=3q~¶5FêÌ€ÍJC3Ük*ïP£¬2=±trùS‘ EtÌ‹ãO/!/I5¸¢Èt ,Á 9A*©h€ÆGÃI Y*Àé<8ÓXÞMÂÁ¾F+|¦†èvüè øÏçÒO!½}6òÒáüì/¾{••¥ œÁABtþV¸Ë ÉÐðÙÞ+Wª2틈Œün°}*Tˆ©ipšo]É´ÙJãæjz!'1U¿ãÅ'LÑÇ@K”BÙ°²ê§¦ÆÁ=/2XÝgûŒËGØ'‚Å—Fˆýº–ñi¬ÏRÝÜ€85µ¥€€¡×¸&lî×v¶±5ÎçÒO¿?ä ÀÀÑAM“17·¥J|y}=5 Í ä1¼'Á[™mПÊã »ÛͰ°Ù /wwÞëê´µ×ú㚢¡µ•rÛ5âüJ`Þe¶Hl6Ul~z!ßYÿ£Ž(íààŽ&×§kkë¦&XÊa¨Ÿßc¯œž–/Løb‡þ™ð…$ o«y”°hèÑ‘ÊéR;—äà+Éä¨üüë"¥QQ'§š±;ófýñSà0)Ü÷ß—Ô­rº¡«úO‘rºUÎë{R¬QÙñãý(;—[a$yAnwdäñ{ÆP…ñùãýœ/¼_Ü»{EÑ^¹êÖ÷²é:7g‹úr‡Ë5OF–ý%nÒÈ2áü°4)IÇÖTù9¨îÅc-h b½ ¢ì@1:p©w¼á½â‹^ ¸˜¶6‹¼L`a¸½£ƒ%¬Xf‡ÓMååõÅÅ[{zÜÊÌšÕM ßÁièéX5iªç†z‘lä·.¾%¤·¥©¬§¦¶¨®î>#ƒE,Ž>>·^—=’4”$\¥·wê(²¥@906SŸµu}™ùÌe^^ž¢r‰ÖR»„ŒLºB1×ÓåIhY~~N‰v·Ù‡/?²/çÍËCZ ¬¬!Ø Ðú»?'R\÷ÔÆûâ®A›¢£•äT"x|æ¶5ùRQᦟÛD©\–0Ü/ ,,Á…æûWئ¯Ñô8t¼ ¦S¡ÐFøÁ?…¦3OÌ}ŸS¸›q´vsIÕÔdzyéWMÃDüî]O+¯Výâ¶‹ ඉ¢©•uŇ÷³Æ '8‹ éWŽôEáàvo¯-¿&¤šëðH|7Ÿo.æøD0<®`Ýâé¢7"|¹ÈÆ*ŒO³³W”Pþ«e (D@“ÔxUí­ÆcÀÐ]]T 0Dé(5±O@U«­ŸnÖÕu2¡¤”‡NùYÃâ›èþ‚bO­é/'Ówí Üú«=ää‹£r†FŦ_ÔuÕÓåW"P-AN.¼P»œ“Î06{Óàͯšd{è0‚«be5“Âé\œºx}´J:¾£æÉgRYâ—HËÓÖƒ½K ¥óH´ó=´ IÏæ&õÓ§UD¸¸ºh¯ÎIϳd»?<çFÁ6•WŸ32@— ¬¤·Õ„%ÂoÔ8CÅNBð=!~kg#ˆŠç 'Q:"âw›²c¸¾|Ùwt*ò ™'¡ h jüôÌÑÑÊ.¹›×çàòªˆÓÝ­w${Ì›óȘ‚²2 U¿²ŠŠÞéjRˆî`…Çõín6›ãÛkÍ–lxf²/¥Û;……ÙÞ¾g¶ß÷A:¦Ötã0 ‰ã¶Øs^Û•ÆÅæ¤ ˆæ˜Œ_oµ)ºOHœJ©bCHg©÷óg[`eQI¾Ñ|3\]mÎÈðzÝ4õNÂø>¤ª¢"+‹Í|.!ø™SÆ7‚Ã3ªúuKAQSàV·»ÚíÔŒ.?9'zB£1+°Ýiaê :ßýp¹á~pÐGÐGJ´!/>EÀ=L¬Ý_.÷Ñ¢$BÑ¢~oGHÁ6:,½Þèêææ³º üùæ Ÿàú{ÆJZ]{diqÑàõkoÀºgÐH£+ŸÐ7éxyLª§W$õǧ0Né¹¹«¡&n…yy3 —‰·«¶ÛkoIö>O}væÑ>©¶tWžrˆÉõAÂvÙõÉ!;ö}.ŠAÍá²*bqÞû`£uݾ) v¦Ø™Þ›ÀœÂ‹²²Ü™÷ë— ,Nj^žEgˆho¬$3­;âwÂ Ó Û¥¯54Ò<ÕE&',LAÕo¼§ça™ÿ‡È))õö™,qŸ>=…ÞhןU°CjŽlM=Ý´´Ôúç Sz¯G ºØÆºÉ³®m¡? ¼¥=P6ÊÉ CáZ~È>i×ßïYé?T¿¸8ÕÃeùŠàø°°…9‹oÜwæìÕd¯¡¼$>œÅ´z<³‚‘{¦rþ¨b Ž€G¾T>ß¶RaVµâ²ÔŒL+Ч'TŒÞSø.<åóóÎÝü'|oŸ2?;ºÕ.–ëŽR$‘ š¶#íF\ †î`R ã-Û‡ïvHOC( ølZ-Tµ½Æ1jk“F†_;lê4<~áƒ~æzŸÈ¯kii³ÔFÈÛZ”‡éåõÖ|êH°ž{æÑâ„&F«‰Þ÷…ÃÚR;2^b³Ë¥Cƒî "777bbbAlû}Ø#YÙÅbÇʇ+ò,Šô°¼áðÌ)޽¾^!}âèX,^‹b9årnñë34•‰I oö·é`毤p?×—™ÑzCñ¹lM¬Œr˜ß®|ë Ì?9Eüù( -–¦S<É `Ï^Š{ÏGjxDD*rÕúyô*_G¥ÉŽžXŠÓ‹JS¼âc˾ÈÈÀ*sD°û€»ƒÖÖ¼# EÄêB}ùÒ+BÔ×LJäí[øùÏW§ºáÝcvvú¼¾ãÕ>þÂHoW<·Y浈È8òìvë0°ʵ<ú=[Ã!yªvz|<>±ï(¡!-ݬߋ˖TkŒj{l€ñòiÓãW~µµg€mXq’ƒ‚F5„±±[»ºv1h¸áá›c­nj®ëÌ%srr4kèìÊÚøÃ× Æ=/fKÒl6úyxi•×b3Í⼺œ¤³Ó ¨ZefemÝÊŽð™ô òçRÝN//ø|F‚h¶æÜ[½ÇWhL ΗÄòcšÕÕÊP¼Ëd®F˜—‚š¥% ×[¼y±»õ”ÜH\×û¦«Aîj³96¤—e•­¥Äòb=’w¢Ggvw×–ÜÊÊ?ûâšïnŽSÌ««kÝ8›ÊŽqÏïnW..f5üÑ„"Ãý(/ãR«-“áçÇÛW‚‚‚ª€ÃGõhÓ¥=*U±Àf ð›4ÑÕõ³çû å²×ÂáÈË»‚û&9y")©Ÿˆ°ª*a†S€Ä´«'"ÃáÒI˜|K6£–ÓíÇ@Ïv¨ìf'ì{ö›i¬ ô‘áo"„ÚBfØ^ÂÃp7×&j<íW,:¯Ö( Ñ{WàoO â`ƒfe Ó²µíw>çJä¾*Úûf8xSm‘› ­›gbdf66r]åxEˆ»üâÅ&³E««“DD¢ßí/++zAÁcåe…'W±(ð0ÏCK­¬êwv‚šîï~ÔÙ2S¼ÃFCÓà,ABPIH¾éŽ $‘xOôò)=ý[ÂÃ…•ÄÎeÀ&Ç3–ï]¾À-qßœí¶ä+HK~åGÕÕí‘átsÑïõÔŸÛÍuktIµzüÌ!˜*‰‚ºH…OÒRŠypý“ƒ‡‡ôñÚ­…QŽ@ºy¶ ÿku|}íÔ¤hù{´FÞôûÍQ‹Y¥ã+Ûap,ÍV“f$Ìo+[&ö×gl°º Eê bâŒ(0áÑÄ/àác{¯oÏ…HÊŸíOBßÅÇ+å+jâ²Ùt5¹–†€À¾cð38" ¾³åŽÑ©Vò}­ 'ÇËžïgnI -9ùÓ}²O‘ѧÊÒá'Kü£½±šÅJ=˩ْ†Q1Lý †,³ßjjÜÞ|.-/gxÿ¾=@BIÉH³‹Æ=‚¥ÊÕµÛýN嬟n{<®Z½²(ËÇÁñul¬if†=fJ^¾jÚÃJÝÞø,c–°… dK*JI}gG Ÿ©ÜÖptœã¾7‹Žü2èüè ÊÝGÍòchì(–öööëóýf»],5TžïcË_^œÒ Au·èX $ú¿?ËäxDS¬ñj 7$JµÂèÅü¾dŸôðGoÁ#miüx®I!ã?§ÕäÇ´Ø#Ø«ôõ£¢šÊ`xÒÝÝ7â¿ý}/@gËŒï25Ô³Íîšdº2‰s5‡j‚†¢66Ló~ì0<ž_¾4;!Ÿ}_Xhž dzŸîg——¯çJÍÌlïíUT´ÿþÚÂÂbuuÕæl Êíz·$Xn«èi•² óc”\òz§…ŒÐ œ"[Ò8l¡ XšãÜÑeRI®ÓC«¿ƒòRºïì„ä«ï£óÜP#“½òüƒðjêêµjÔóéÅÖèè*ðžðkâN¦@ùñɯ‡cÖ&¦ºùy{©dÕöi,ðžŸXd4`iÈsµöçáT«jÄâß?ÛWÊè 'tªíÌËË+’<8>ô÷ŠˆØÛ×''#£úHè±ÃÕIn` è ‘ëA<¼4~ƒmÛÐuPÀµ°Ûyõ¥¸ hºÓŽBü9„ù-++"iN±§zˆ@“éÄüWŽ)—Þ˜\‡NBóéy&Èõ™9**ª­í)6Ó{FÆÒ©ó™*c#£¯qqœN'~î$ŽVü½½½ëêꪫíEEínÆ Uaaa·¶¶‹5ÚCÞ33__]™€ÅØØ|º"$zr“E\¼ßÓÓSBP>!¡ÎõÙ.ÓÃÏ^’J$úùûo^„„ÛLƒÃû…„0ÑÒ~×xÂý¹§GD__ŸŸŸ?·–¤&r#ŽHäëÁ]Öçb‡“Êè±ç黈OµáŠ.ت}(ó»œ;ÝYë·‡±à+Ð$BaÌÀ6&VE¼®ß—!ó55M8 á§·1ä8ভvýµ±ñ5)))>ÞÄÒ²Ùz}€×™•mmeeemMçØí†T29(ÉØÐ°ÚýÞmç[v¶¡®®î§Oß=—2œïL-¯¬´éÑljeEFŽ4¹^Ý5ïžxÙïÏ?ü\©—··xSa â0]-ÈE½ýþøÄD5Ò¯éJÓj‹¹ˆ,Ó¾Ó¶þM`Öœ –Y<qüŠ==%÷öÖmlªÌðÔáR¨œ°W¨\#¿ÞϞﻳØn=…Æ~q<Ï'^g ¡)NhõÙ¥&»ð²'x™ÞÉz™ÀlYÒ),,,  GÏJE…Ä•Éà‹Œ€ërÇ6Ùøq² »ÚÜÄ;HBò{‰RèìÈî•ÑÑQj þN¡¦Qò{­(tJ%)uu*ñ /IÄ¿þ!ÊgÁë‹ÊÙĤÔl ËÍ„¶›u·ó=ÑÇ_Ìͪ>Ø‹^šÂ¤‘´³^Æ1Ãì&-­ìG(ì”y¼ÞÎú ía¹Œ¯cAeïZ>œ®$§¡Y¨zrwCËÆ Í?üõ+¦µõq¦h¬ÛÍEéöŸìõè”N{O ÑšŽS’ד¸,…EŠÎŽ}y1¦+µŒ$ô¹­Í^6 §Õ¤öö–y‰gn‰ò2|ii)ú¢Ûˆ¬Ó›¼W[—!Ä$8QQ\ôÀÈM{‚{hÝzSÍ>¥ƒïÚÍ̉ÜwçØô¬t7Q¿Š‘œýÚ©µ ŠÝÑÑq2L­ë¦˜¹¹ùŽU§U~aa¿åfæXwƒ‰‡É¦R­ÚùáÈl9ò¸ãÖ79Ò<š[P`V¿.ÀÇ'*ázW´‡ñ~„éßSÄ••AZ•³è”ðïßËÏ=­œ½¢dd¬,’427?=;Áfùô­¾Þ™¿½ùµŠ’ÒÃ/'·Så…ÜÜÞzãªkòüækšÆŒ\ü™¤—ãŸïM]•Ýî²m·-ú˜vUHÁ0ÞU™MEDFF&'7i·ú€¬R«×vv’233ss7Ï}=?<ìKW×ÁÑ‘J™^w,–ZƒÃaG0öñÑÃââêzi8>>î¶ ƒÆ{s^-ÜIbÐÙ­ˆ&Uy?AÁÃã2ÀÙ¬'Yâ}YŒD–úÂåªåС! v‚úî£æÂÌ-sbqòæêª¾…ÅÝÖX~DDÄ«w }Iìì\ºÏîˆýóÑÅ/TëQîmçPIñX].ü ¨¾O¢+È=ºo¹Ì§å”–Žå+–>|±ì3ÌÏiÙ’)³³³mTyUl·Î¨@™™deU¹Ý^utìhÉÉE55q%I„úû—VU)HIÑÒÓ×Y¯#ß+O>Ó™¯Pø`Ñ; ЬŒ ›ŠeÄÏ‹õ fNjøŸ‚ÌCÌáà|#I%uîùPª,æÒÈ|[_³|úÖ Ý#9PÇ:/þx2KLœ).8á üQ¦b›NéÙÎTz~>»Ö÷Ï€b˜@M–Zâ®ÈÄDZ×6è÷RãÔž·úÒ ÷bÄûÑÚŠˆx_øùølWà«Ûµ'35Z#¾ÿ…&j“Æ@w=ï (ª¼/1 b9ìîí1©¨`êì\?«y‚9ã)8fgf]«†„¼>˜23= °ezfÆ××W2…‹“–¶Ä|? àôôô&dk{ûÌåÏw2RRF׋’<<˶á‘î#±ñ‰7«½ö°°3È8ð­ì(Ý$ŒËÐðŸYCÚµhÞf@ãçå$cK×W¯)¹éfdcûr€Œp’ø1™ôÇ3Nªšëè=Ù=»üŽw\ýìòîz¿±±1…ÛsòLùˆM|.Ì—/éµÀ¨«ÏIÔ‡•%¥½›“›«gèŽbL³ÄÐæn†êß¶9’ FÁ×JúáKÒdïÿJ—nÞ `§X³yíÞPEE£XHU•ù|¡X`ªŒŒL^‡ SW}zM É4$d…ÓÙ`=0;N’<-¤öçÖªU7t®Wðl®}qD‡!ðð".L™Fõé>|cI¦“)¡v÷*òòÄDD#³³ @XÁð”ä¶W‘¡!ø¶^vâÏp­öÎmª@°³’¢‰§Õ\Âù‚vAØ)œÎv}_éÊÊÊ&Š5™ii¹w¶…~jxõâÅ 0¯tttØLfK¯¨”Ëô:Cp///•••AÝœNhδ“Ÿ~i0edQý‰åpwyù”«÷”$àbÑMVöIË~áU#S]ÈÍÅá2xmmíÂ(š…bz¬ÁÏÂøl›Û%P;r[¥Å©1 zWï§¢ÒvC°–Påë{½mªìç¸ðw?ÖÙíÆÀNNž÷FÄøûk8•’êÝnøùÛ¨Áµ=¼}«37wwû<[‚sx9»uýj²(77<<œÕဠ-88°ÛíM°ÇöÞÞž/ø‚Ädd虚bãã‡tÅjH½´ÖŸX îæ¯ÅE¤ý*+ú®O5óût¬ÔÔUT÷}?n|ób™G^¾r×ýîlÆR[{Ánðã9÷qõv~zL :!3Ufæj@û–·Q+Eêû½º­À;"a½ßP0·ãéþ¢ÎBV)mŽÅáŽ#ö#«™Î£ÊÙ·böwE~ëYhK¯£7v毯÷›1L_†G.4^ÿü®…0×zŽŠ9³´,Z,”ñ–îú%^èú¶óÌè(÷»|4àv¼ø‚|íš— ú~aèl(#z&þÁpž@¸iÕLH\ËÊ„”Ê‘Ÿ@Šhõãv团ë•Üþ¶3 ¥DD§55êóó%m=m×r€cb®®¯æØ÷CáSKésss“¯Xìää´„+Z\V1ª]Êryù*mû#‡`¸ƒ1ü¦3šÝÖèÜóˆÇc㪋Ÿ@½}ô¿Ú O‚þþ~ <€°½“Àdþù%¼×ƆÑãÇÍè ³² xx = ¢££¢ÀaÆäJå À ú’ššúÆšm÷Фä`GGǯ_¿<Ãéºåjºi&%ìͱ߉™å ðßëëÒíîœvL¹— ˜—; ä¤ÈÇ+´LMÆfÁpxœ3ºKݪ⺸¹*'×מ *÷÷•¼ÓûdPH)ÜÌÔÊiAÃ!oÄ’ã¸÷Zôq“_ª-LLM‰àÓ€á»JIHÄåc¥™%žàà f•{4‚º½‡MU÷HìÕî•WII‰~oŒzͧEÌà= ”Ëa¶EÅÄÐn«233å•”ü8C‚‚>-~Ä …ÆÄVoî)<¬¼ý˜š¢n3Œ–•–¶tsy ¶]p¿oôõÄFÔúÁÎŽâàkܬ¤ †”,¥ p6fö1lÂï´—{¨ã [¾ÀÕTY)OÆíÒ¶âÁÄÖÄÅÞU1=ÿ% Ǿ›¶uwwm)++ëèxN$Ë.ˆ/LzÚ*¥zÃcgç9»WV:&—öúÀfOϧí9+kk^”·oßfÀ žž6ºîÏ¿»s§ è11z64‚]Î $hø­êìƒx¿ÇôôãÊJ¸³íl‚ ¿L ^^SWWksskõ¹æûAw)Õʼn›9ûÖõÁêÙž7³ÎS~/œ]]sA¹m£o0>’-Úl’Å,Àbýè@"Ô«ªJÔЮÒÈ“êzæv²1 ÌÒ³g(0ÝÝÝq\®lU"Ê~ê'Ïö O>—Ü#‰Ü”¾ÌÞBƒIТ¢2éá!-)ˆŒuºÒ½ö‚è׸9aøÞ|ãÌ!zúž”ÞXq ‘ÇÁ>Õ³þþ?z~üA[}/B€rÁ<ð¬>Õcx(ì¤Pò6Á?ããÛ¼0!Š·ôá“)|2EùÎ:®<}æädÏøQ223ó#ðÔ¥dÊÃa!,ò“÷RQ3·ëgÛÌÂÝxVüø”a.Û¥£>|F#F@Dÿ†å¢ÇóÉ!'bb :ÕK§„4Z³¯v ’nãžAæÄ""DÑÑ‚”húéFïB;?¢ªF€HÜã8ªYà†NéVÐÓ¿<¸\Ÿ,õ CéÈ}Gð.) 4´Ùfógô;ÅI³ªææûÙZk ý1±_ >º#¶B}]é|~;=ÕèlX¬Æ m«À}s pÀùlö|;_rÛ!1%ó87/Ïl®®å»–3Fá+´Ñè¨÷ããe&¦Scc…ŒŒ…••”L çÍL/^úûù~9Û&u>ø5Üòå‰J™GÚ†Çãn²˜ÉJsçƒoLg Gº|„ôFa ÉÉUUUUe11yy.ýM޲¶×vÔíÛ’0RÕqÑÝïWõÊ,ŸîÄ'%% Í =AD,lk»Áã+Ejòê.ht K¸~ûÒ†Þ3쨹QñžsªÏì[lìÔ¡  æ—Çœ™Ÿ¯]](SfxžßÊHHxBF˜'°˜Äfæç…bFÏ6‰‰S-‰I1ŽÔ¹{{{WVn(I'ì›U .®}×Vq£Ã=,aÛ?ªL_‹R3Y³¨"½ ÷»>Ül‡s… Ž©u:•çnÎM`®ÿ…xåüú³+!ö68¤¬°6ˆi©©Â¨¤xÚ´ öËXB]<Ù=½¦øÜnÇË¡‹""¤XTxøp!L.5fzÈu2'Cs||™Ù aøÐtqdÑîË£–/Þà üKô3…˜·ïD.h3 ©À8i4Ôè̾fõ5w3¤™1aðHÁð€ÆŽ‹Ë|ó&è1^m,—ÓIÝ܈­-§K µ?ßÛp¡]UA?¾‡+M‰àØ:ƹ­:V\‹¸ð~/œÞO3éê2Þuí£… )Õ UM¤E°“óoO,¨5LB¿„@AmÂiÆ&ÝjŸí,TY4Öky˜Ëž Gú,â¾@!âÀ»:ÛíT­Ö¸¸šÇc?ûViû¹úœ 6êÊåuÈë×iij¾Ïv†2'ÄÛ•Žå“ïD̆ ùÅ{Júfâøïmù”SÂõ¯–wÈÙ‘Œ+s©”îëlHÁneeIÍý:Öw_`ÉÅ“¦»È†—/dϲ%Á¼|*,üÄz-ùYˆ¨ó³"Gx7VYYFòœ 2Ÿ¬õ÷tÁ3³g%ì"lÉ ã9gœ~}Èœ'¤ÓÇÃà £åtq€ž/®zƒ8,òKÑ{ær‰D¿¯L» ‡.W63’Üý_–¶ xP˜bÎîŽVkl·-žá7Ù­h"ãÀÓPäųZc›ÒÓ# ð]˜/Üá&ô/r{ ½%€_ZÑÈÞW)ïxq=hEûÁxUD$»»°€Ò¸ %úà“¦«ë›·+ðžC›}ññ$;Vââ½Ç뵜"êšF9Õee7±&Ô(ð]{s òrMìúEüéæªÕ/=>¼¼÷m)óÎËf¾¸¹4ÉJª(e-±5=Xî´41MpÂ)i Œ¤cRðMT›=Ù/Æ|¹Ähb[ϸø©†‚ÔˆÿõâÝ»üÓƒ#4·»úœ±GPP®‚)çðuè¯ã66ÖÕÅ<`£ ÿeÖ[¡ðrtT–(¥…L‹öHU• ëV0hèø(^ÏÐPÏÜ|È‚b¦£#Lè­–=_o Ü3).'›Å“M"§![ž–ìP|SéŠ[ø¨hbc£gðÏÈÚØÉñ¸Äb¢‰K§Ô`xôôŸ‚r`g;­aäå­œ©žL¹gHÛµ@&}éïã“··§[gÁ£¡a0˜‡*)%.Žê>¯¡hpuYÒÉʪge%†ŸB€÷¼²b4UªK.Ï»°0|ô~ZEÉÈP?z ÷‰‘¤BÌÉõ¾è3$yÉd—€hÇÖTx¿:§û’fû½†›½úE<<]P¶Þ.¾¦`cÐpPâ£U(HK#ïµr‚—sËô”ýÆnAÌÌpzQ|üãƒø_é99-]’"Z´ë^i4FZ©Êr†²jæªr†«­%k„Uàˆy”8U.‡à.œj…ólî7 r9F˜h}c²É¹*7»›­/ –µþàPSŒÒihú®ó'DR5ÐOX˜šhù›§gAÿO£¸wŠ›J%æ;J‘šî·’–Ÿì±r‹,f«¨.Rܾ€ C¥Êt—²VÉž]ZzÚÈEÅ@²fn¼¹Þò% 1SªK6KIhÛÒJKkt,ÿ°»ûúƆšåk©¹*í=;ùë×:¾«=-½¿‰|…‚Ÿbªõ­NÏÿKý5&°N _Úeyyó믧zz|JhµÝºáë¾| `aaÙØl)*rUùøñÇd©®·Ì2’©™4´ñ˜UòÝ—NÞýYá›ÍlÁ/pïãþðG]?lòn]ÔצÇ|úšFcE^ž‘Œ¢GYysr{f{jêµëˆú7ÁлW¯¢mojœŸÛ•Ò=~œNDTîƒ4¢Òì¶ÔàÈ„Ïå‚Ç}‡Hx/Ú…Ïy46„bw¹"¼Ug;1ÓDþÞ+#vð+Ì÷Ë9§Rëuλë gÝ?e²›šj+NŽ·ÆBššFïn_ÕH|¢Õ=ßsòHµš#)©~Z$̰„!È}i)+%º¯Øx† .n722‰úl"UZz9'µ‡Òë}¥ë+8‹K•Ô¨cˆŒ9Ó½¿ ˜ä^]•‡cØ›632Šc2¯ñíœ|ŠzµTÁšÐ¯^µ#j¢Õ[\Ìç®DÊòúº¢ŒŒ'°€î¿ï>*zÄôëa¡ˆrølcÊ<púžæÝvkî›ÍMâÞ˜à…JSŸˆ—IÛ¨XX*šÍÔ?Ð3I‰_UT”Œ]ce†/¦ lžC¬,a‰î/Ý—–ãì츸@-p§;;Î9­ yÔÕ}iýáâûl“t¶H±°N$Ý ¡Iíï{ô« ÷$ÃsäóŸÎ_10˜Úb€èÏ÷QoÅ5òMKK¦Ûe`뢣³¤F½Ž}ÙêÒR»ýK 4ÆûGëjãN·äµÕp"zõè{£¢V:@AÊP‘Šce=¤è]}t¤bºýyHjÿpÙw è•´  ŸíƒŠòŒ5uÓwg3v÷=:V%ÆÖlIÆzw·çºèTXéyÓŠYýµjóW§Ì›'‰Îç.6Èp q‘A¦à.D’¦hÔ 08U,‚æ£ñCz+çèHõEú3ñâë×Äóî虑ÝXÜòíË©ÒÒÊÙœ®ÇY“F×gƨ$a3IÇg»‚†ëº&ÏñÌä1 54tôOÛ‘:ª:9ù2—ع÷( PêÍõþ{˜7”*z÷½4÷{ÞªÀ\ïKÇÒtnm!Ï—.×+— <”Æ(é¹Ü™š¹ºBüXÁ[,S…-ÞÖP–íð½N›†¦&…™Õšˆ(÷þ´­åDQÜÚšŠ&[ös‰„t²­uûóátf÷›ÒùyÌß0õë1òyÈ(hÙâ|Ó©*s¬QH¤‚5 M1!yîg€Sb.Š2GÊ>FÚ©ºÀ--ß»5‡ˆºO™Y()õTZ[w‡ØUM–µë’ÝÒ$‰¥ëOObNÿÒòIY˜ ±ôç#\\én·°°ó´oѱšÐ׋zûöfhÝûçÏAЪ¶÷nG‡¼çû)ºÆäÓ›ôȾ±2BéúÛ}''/_³³ Ò{Ük †½€X³gç³o¬tó;À=òJ¯Œ>>1ÖŒcZhæÞ¹:½Øž˜øN’5Ë#1Ÿ;Çv²2ߨXnÌfcăOSJ䊅­ÊÀ ZŠ`N£¹61Æx¾ý™J¤ào5s‡«IE®¿íºÄÒå1] ר`œîî¶(.Zµ3¹ºú ÉÛÛ‚6·/;‚žNDi€cõön±ßNL>~ô#"Ѱ³Örag^YõnSö¶ÜÐ€Ž®õÖV|i·5‚7‡ÕR‰Û-Œ:îâ£G?^¢Þ ÃÀ+[X8 ýÜy*.^+[˜a9}s°Hº>ОÈY/—‘¯ &Ì»«ûšÌŠY^>:Å]ƒ¬ËBòCATìDVf´ÖLt££lŸ5ãû+Ýw?wwƒAQ·ëáò¹ºŠ~¢]î‹ëòñoÄmh YT5¹ɾN?×}²ÂFONçÕ¤Ò$KHÆic(R2eK±0ÍlšoWç±õâÄèI¶ãÍ‘¾••„áZææ¿–t„SÃ|ŸO¼šQ#cùº¸k/'{fóÑ<»?8x ƒ¯Ü¡ô ZÔI½ «Åý]Érç:Ýwvt0–/‰ 4=}”s¥Do‰Òmv§ýhu-CƒOÛM;©¨xIR.ªÎŒ&ˆÉbVÊ*Y^yêÓ²ÀM¦h)Y@Mí”å, ÿFæ´¨Òî{±Naȳp!‡ƒïÙÌûgzåµÌÜn7–üü—…ªÙÔ>|[c^åyy‹€â ÎŽŽIuNÜpp‘ä²”jj”pÏ.|¦¯ ˆÒGÛWÌv$de‘t¡ Ûôb¼}š"BŒ­w$â\¯ ŠU™_ü¾§ï×sÈQS&¨•­Ñ‘ãu]3s¤P<[âÈÔ˜> ƒÌìX­ÀŸ‘&&ñQÑ«‚¡L%ÕÌXt-û0Q[#ü\ŸƒôtÌ7%}K#|¸TrÐé5©'ÁöøÜ”•Þ«>‡—ÖËÝ‘’–³~ÌÌóÕ–ÈÔ™íŽï‰Ò½$ ;ÚéPQr23‘½?fÉP™™·iO= l§cœs¼:‰`µ.8 yâ§6cl `6}Jt¶ÂQI) Trh¼p¤Ê̪å÷,è@Cޏ¼zg¯Ýxy·Ç eÁÚrsr$Å©:Ð3³³š KY–jÉe-Ü8œ™Ø()ùEM¿egGúv*=y¢Üðe+àëÊÊ׆†ÝÎ;·› $ï\Ÿ´öJ´5)U©L‚ƒ GÅ Oás>Ã+àè“‚hŸ~aÉhüS#_½Þàæã ýÉ G)©ÖåoÅî/ ·|˜99“Îö’‚ߺØödeÅõ££ãî|ãóá$FÓÑÅVÄŒÊÏ…'äy:´G¥—³³P™:Gûi'tºA§§ò‡ÈÛ?GDýŽÞŽõ‰Y·ú¯M µ‰7ëDGêNƒ†^¬­]ÝÛ;c·ël$Ô•–~#œ®ßä7¨cÕ¥'N1ös8|ç—ÖÏþàï®™kuõãBUSçZÍÏõ JJ¢¾}óª¨8Ÿ¬¸<_`†õ6kdŽÎR±¨ai‘îìWË¥C'PÌ‚>HP¯²àÌŸn6ßÅÆ«4 ¢³±}¤b.í0°./çÖz÷3…{°°ÈBN&¢¼b´ô7Mø²ZÕ±þ»Ö ¬ÀˆQ\«ïöÕË`"«ÌMvÉE-© ŠI î¶‘kgÁ¦ã,þ¼t~kãùŠÞVV}Ù’ @eFÿ sŽ›V>{ô8½H#XRb~}š.*挋Œlq±)!P}êÜYYÙ[kkó‚3^O³–h#Gt)ÑI9nNse%EE¹s5Z-£ ßc ÝXCÄT¦¯Ãý@E=6À©5;¤¤“’–ÆÇ¾f¢§ÇÄ”]Tô:#[ª •y{BÒÈûÜ÷ùB½1ªm?– 6#|ÆÀ!Û Ì)†zQññ&~©”éí~}×h|LÆZkt¸db°>Hãë…Ê=Œ€B_¿’ûæà×~óeÉT³;ò(¤U€ÌöÿdÚIF†g zU||@ee‹ß‹º³³ÝÌ@FË}##£Fçs}à6ÖÅlH`’n7g?IJÄáÍf8ßuþšro©C7sÚX³çç³_Áð#]µ!«Ÿ^9)ju"ó é~ð++2òWíN64y}N¸!z©5cU›ìÓÔ"ƒ]d‹‡wådIbãañúˆòòHÅšuhˇ³s,¦F'ìd©á‰8W°qúXœNhðžÏMÔðT‡‹HQ~ì`‰/i c˜ȅѱkVÖ8íèg….ZJ::nÂ’©r=Äj9Ê™³úË˸jê’qé>ž_2J >yÅy…úÝÎKOßU©ÞnélwäWïÅ|ÛêÑÑEDfÐM,ÍñBsqLø¥ @BÁØ®ù¯DD¸4kv’øˆ‰k_½ëpvb;Ý/ö³—úHbÅÊšUUµÙ·!«sz»?y8W œ~²±íðø¦j½¶°Pú<_û ÃÍ-ïñQHÀeì‹8Z#kÀ›[×r¼O04tÿdËijœk}œEúv´`,k­^~¾)«ÝÎþöÄ2P'!x¶Øl6ðó/NŸžúb²jñ"ËÏéRUÅžœ¹gÇ/úFhD(­¤äxffó‰–—7ý~º5–ÒJJ.ª•,£ðHP·Uô%±ï32—Ûíû¨X*jhÄÆœáÍíô'è0%ä§ã÷~ÿ£À2úú~"b$sº|MËfžì5-«¯oÔÛ:+|ËFÚ™‘öÆ+;m ŲÜpÒ¿¾ü0½ V4›úÖ?Õ((Ô¡!Lý¡¡ÍIÝR–¬,vÉ zÃÛ}AÄ·*õÆÇŒ¦8O¦ºÊGçnqâ ·c²ËÊP–ø‚¢jo—¯·_õw¬×òv}2B L.iöÎjïMF† lú·Š“ò gV gTU‰œ‰ØÙ—ßð^-âêZjý6ÐÆb¢¢I•¦IkƒÕoÂ3ÜÍKÐVVà=¿‘]ß œ]~–BQ†Ù¼XtÛ³Ô¿}ŒA€–õõ/­–}drc"ILMŸ›9¯e ª«ØíÆ{(æ|H«äp:Ù¯¸ô{ᄇ§»Þ}[ØLJÂÂb¸ö[Óˆ—}a¡wu‹Í¨X†R'ÒB›Ô>•5}GÊXy±Úëb¦î¤®nÝì†PUåSU% e|üÊu= -<\9[r$"2pg'ÈÅ%1WN(Οᑺ**“ŠEmI\¸¹”ûë̶‡Kt×…"@€n‰££›BB*„…;·®FI§ÓÁy!/ß´ÉÖ”j^ûQ·hØæ1Âk¸6›5‹­¶õÇmAA2öçÖDõU**ûZ€: E¥z—>N~>’Ù"ñQå¬WÚnˆþ37Ów†]anD‚[®b(«b î†8pœ rËJ&ßøvS¦Ð·ÿ˜ˆ5ÑÕýl/Õ(ˆÙÚ.´ ±ºd ìÀd)‰ƒàÛ°qä/áø ~cãýW¯V:Õ×÷ßÜÌÌÍå^ÂÅ ƒr¥Òôpjj.žIR’ÆÊž›Ù$ên,?Ÿà ðÀâ bžÙÚöw†ð«Õ Ø¢e…´½©Îihi6wèÄííë{ˆŒ‚oÆÄLI¹:¡iÌÏÍ`trœ0mHã}²ú[¦¸9ñ¥ëË­à»'’âr/\MNVƒ™fY\œ’³±EB ôÏ·Ö¯^u«æ?o•¬ßÛ¡ª¼YÁ'ÚUXxZ¬¡Ž$?ðÙå˜w(…ÞàÖÅ»ƒÖoDóÔÕA´Wòt˜÷Ô"†ô½ne–?''¯:ñi“ƒ‹òL¾2t:õ¢cÙ6|ùY±¶‚ $ Jr¬âÞžÅþ>·º ì½ïósswërçë*‘¡’*vMˆÌäb*|ZQÑ%0ÍEÃ@¥U%0IŠ:7 ; u N0WVt srLÎ÷œ“W)•´¬}Ÿåùò-f†ù×'eåÌI½‹ãõÚ±±`HL (ɳ3ÝŽ¯'ûÅŸíƒ.ò‹,ì‚ÝV’úרUÞwÌ8—e­)2%m!f°ÿSÛm -+…êIJ’nÖ`\4Nœ(°*È3q8$ ý}­iuÕvkë61±/GN””´üîöÕ!2ªí]E-hêS }ñƒ^ëB6"l^ƒ’º& Å5c:ï^ ¹ÉÍeýµ!]ýû:J¸ž‘™™¸0ùR±¨¥±v~þ96cÞþ<μ7˜D@Å™ï(zŠÔXµOM:={—ÐÛ„]%⌌¶±ÙS³ÑÒªÈËëw†ìgh½I˜QVŸk!•¤^Â_< z f£SLÌ¥s9¤d2yôêÏFï7(¸‚ûâr––ò@ôö»ñ‹[&öŸA¤(Ô]ÝíÒ22ÍîFÚÚ™Õçzššáêù¿ŠE½µÃLBk·’°$ƒWQNÎÖÑjÍ·oaÉœœØ Uø¥å¼B#î‡!¾ÎPÆl ÎF ÞFÉn?f­ªâ\ˆ{m ­íïùâ…[Ò©¸8ªB'Åõr'pÙÀE¦G1&³tf WÔéTà# »Þžˆµ¾R&—†Lýëú~PŸ‹?h\TÎv„0‚¾kƒ1©µ-šë_|ûr¸Mžé5—[ƒq½z ´¦Â¸/pŽx\bÃc¸N•Ë?3—íuJœæ&âDÆ_Ý}÷8Tþ—^su•o Úòÿ¥åR 1/ý:®xç\ANŽ?]L> MkµwïÔ¼w6„ì>Ñzó´(ò 8:i$p¹¶Y6S…‡¿ÑYP·º¥mŸ0˜bùxdí—ŸB tG‡ œÎ{¨þ^œÎµuÓ‹¸!—Óý‹ŸB&€¤øþ}£«‹ÒÚºÐv›ÐQm‚ܹ'××H]@ƒ·×­==&ŠÅv'§I?‹S¼ÆÔººÈl­Xñ°ëGFåÒ$- ä/NŒ×F²_ï/(¾{׊Í%R™È1…Ó4÷8Ééd£¿#˜¸0Ášªú[èú™›ùFE$cª¼P±à«–vj°b"ˆõ-0:©%%ó½ëÒR©Þ]î?—r€Ï^ZúZ¬ñЉ¹|tT® é×ÚåÇl†PÜ@‡Ó¼ï]Ž=hˆJ}÷ò®LÕ¿ Ç‚w‹È?ÜŸ ®Pðõ`ŒÕð°EÇJLÜ>™«Qog£1'Auï· 1ÑúƦ¸ú•®Cª Q ÌÛTÅf•oç$¯/ºËfcP‡Ër_™‚‰‡E.iööÿp«9kföì0Þ×ybhÃÒÒR,5løã÷uCRÉ;0ÛÉßX.p‰§í£î黲’vŽŽ¾+Tf~1·Ãþü”\1P4ÿ Í7BDTTf;3Ø’âbÎ4¤¥ÆÇ‡€DXÒ»}í@àêéùÒnïÙ\‰öQ2'C½µÐÿ½±Ë?Z5Aß$›7BVa¬­ÿÄŠ·²â ôí-o`@Þ•Uu³ïúZ ª?Ì]ÿârÒØðk/ûÏ/}ú×|¼3¹p•¥º§¦~ Znu…;9Àkv¢¡¹°AVŠ;C¤ÈV@[½ —xàÉbËZÇY%¤&wM\ì ÞuuÆÇ*11s@K!xsGÔ4”8A/í_®?¼¡~´eñqà|SÖU~ùl·ídzi—–GØ9OAk=‡@\FÇ™p¹ï+MO„#}p¹¤$-i†¤ ŽU ’ûÍ ÙЕŸgby™gB등¿X!)0·  °Â EÔÓ×]Ý3"ÔððηuFw. øn_9õ„¸AŸ‰üã­ïyúØÞÞ>ÊÌaz㊂““—¬¬¥éDqß<Ç/BuȘŠ:YmyVg‹ê<þ(Ô—Ë=- åEø]³±u@mmŒTëƒ ™âY(XŸœŒOTó£‘&71ÑÉÍË›œzüZ×ÌÐð½ŽW2Ì\9…ÏÖ¶ªÅ¼‹Û™Ù³Àvå £ Ø‰·TTd’cÖa‘Õ_Ò6"Isážs–›,ÑŽ¨®.÷ô¤œç±¥þÛ·´|áWúš^VöæÍ›PÞ  ¾¼\c,úŒ”ôô×Ñ&›+z°šä"¯EùsÕ4Å]cc‘Ná¶ÔøøÛ7¯´4Šß¥ñùƒÄ|ïþØcš¼æÂÑš¸•N9€6à¯Ñ–¿EKá[h¸¼ù™©„ÆC…½¿ÊøÔr$´r‘Ff Zii%ú½ç ìïØ¨{zM ämì ÅŸFœ;t0xš4¨Kòv%•LÇ8—7SE*7æôIÚüÙî›óýæ«[ûЩrÁ§¥«÷ ½ýÉœY{¿ z&6Ä–LÍb¤àrãi›q¬ü龃!9.—a@:Z+¤$kå ïóåK÷WºB6zðp6¥ÕÔl7eÔ¤†ÅRa¯o²–º»?©1㑘÷ÞÚêÍNÖhƳÔÏ,w¿ÇƒCm 2±ü!ךּq»[…fŽÄIKOásçäå°ûøFŒ`œÔ_‰rÀ‰YWךZSƒÕj‰öÅ© °áXW)ÆÇ@Ó´Ûá"œ“þœØÀÜà·¿uçZ ¦>M•v¤2 oEÉP I+©­·±jjïÀÞš’R@ÕÙ7àb©qIižc3>E]YÑŒNP½‘ %$*Ï‘ë} ·†…•·ˆ;|oýCÌÒ!õ7…øûïר%GGS{´³yËÎòUh!*WNq¢Álj51±ìÁ ÆäËÌåŠË<ù(íV­iàó¯`ººùóî ¥’V[’²±'à³U|01©= ¬ Ã¼¤ÑXq½©JøòE¸ÙVûÝKaá'†|€˜°³jÝn3Í~q¹<Œ7aÃÆàÃ% o`Žšïmäå_5}Dy /*ÖêwÐʎÖE¢,ŽdÇÝßDjÈ9þú@\`V_^Ί抢úêÕ©hŒZNAA³µ¡+M1igV¿åœµ±5pï€ÚIµ3ïª)àSã|.Fž³Ú±xPV&ò:è‘ÙÌüô4É«Wަ¦Ë’’†s¤¯ Zùw:×Òzclh¸²¼Ì¡ðd6‚-,Ò?Ôw¾ù~ëWK'%úD§aYv6êžå“––gî÷C éKgÁòûˆáá)`rÿá#B^ë]ó?v¶,CóסƒûM)^ñóìþè¨Ã~¬Z§Êô¸8êP(Œ Íi%%?¸O.g÷›í'ëí«V$°˜™ª²2Ð@¦•OÆ$fÍUÔQZî9p0’“/nær½­Ãìíøíw"ÜÂ"Ýó;:ÆèHôÿ9ŽWa½~¢\´­ª¯UWƒ¹Ž|Ûƒz#U’ÕÖfw—JLœr{£6^˜ðÖ¢—¤^JC£W MkûçȈ¨Ÿ§7Êo“œ~¸,^Y¹˜Õ©Ñ®cõñc„Ûíéf¶ä©õšÒõ•Œ/2®'âÊŠ§ÃqÖÅwO°éZk}áÜ7´ˆ±þ ‘! v§ÓÏë÷èvî~_Ä‘¤ $ššÁfg‹ G;–ØAô4ñxa=OjØ`Š&Iêðêjåù^cã1¿p÷úST1Nމ&œ<ØGPŸ3¾$ª±˜˜Ä#ã»A®í–¢ÈÑ}‘©†ÆpnkvÒÄàatRR™¨R&}|#z;¿¹”›šzº7ëá!ÂÍ\[;e>¿óHÓï×#¤eØ(îúÜ7:vÈèC ðzËCæç«“ÓÉN¿„wÎK1ïŸUq yû>—e²lb°ßÛ@%E÷¿?߇$cg]®YÖýÚ @/“¡ñïÏ9Ÿ.‡†êé ÕÛ¢¬«XÜèlÚ°ƒ‚ßÚ &fÅ5£è23„½òìéñÁf^¢QX>tØÛÓž^›W íŸé ìêBa¶´S®…<ò’ø¥;g³/þõ†uH\X˜oš_f&r´ O¦ 2àto<ï¥éÊ `— Ô„/;k#l…1b3'»_H1¸qˆ%<9öLT#xò$åæv¿ÑáMSå,¨_»38¶¤n-4ÝšŠ³Å)?†(½´07‡ro°:¿s=m,@™“ÓE£É5?2’ëîÎßðekÔ\Z||Ù€¹^cå=|êµ-PcãýB7XkáùåœZ?xi K ø1¨â]¾¼¼ükf 2€ÙV¥ ÷øóÃÂyß¿ç´úÞÏ6:ûTW3Ì—žHÍ·|‰VWß5‚…™³„‹ê|P¥¯Š*+€ã»;ç¨ÜÜšæùâÀÌÖÑ€‹®nrÄgAˆ¢Ã?±667WéÐc(üžvu{Ssß §»sºÝø||ÓGÇÓI”<óeûOr4zMj zz —³íž¡TÞ†’ÁC¢;{Ú3ò°ÈÀ®ãuG8d/}}×¯Ü @bom&Îár¹ìg‰&åŸðf12Ñ!&Åàr¿ä~¸iTn2m `svöScÆ Gǹ€à~Vg»Í ãÖCdÁ¯#kî·ÑYyy;[&Í6›J®®˜Æ—!G–#U13‹­ˆ66«>¯D;Ç39Ì”%[F3/o©¹”bï¥ëù³ ¬aú· n/|÷m>°ƒ¨‘Ò$“3îNFÒAÂ&¹¼ }Á/haahk —ÂQ+„˜ [’pº~GûjEäÙ3¹l±R«R¯îc;.w µÒ% ‹ËJÓüÎ ºvi߈vßÝ­ª¢rwµMC¨ûa© (äôxÐreUKYÙßΟ—·ÕN­¿ŸJRÈáüHßíãú£#GÇ×€:"°¨ªJ4Ù§`–J†õ:Îöê=km×o'RÙÆN&:²©¯¯ï ø&l{"Þ³@‰§ƒÅÃÈÄD† ûÅðÂô@ŒWòX¸êyi„ÀnÓª«/.œÞhó(+û 5Z];íoœìÌVQ™œLÆóNµÛ‘ü&Ú„Õ6ïµêˆ4ðÏCq÷Ïv+IH"êúõ´µµeddìV ÃAA[4=Ö“«óØt©Š9\iß û°ß÷Á¾#óSg}õYïRRâîWË—'ˆè¿0ƒ/då*ŒŒ»ù¥«rØU*Œ†ñÝo<àC} Ý…„b¿^ì­öÞäåÁ XNW 'H0øgl$j7* :ÞóÛãÁQTÒ»î~ª½—F üð⧃oBÁðÔ̪4<~áô,j#!Zèž:L¨‡‚âÌÖ–FªB¦õ…©§Uë}ýx@`~É Ó™¹ºz ‡…÷Ç,©®HÒ„wïÎk‹­"# j й/:$ŸjˆW9.ÕÛï»È e܉ˆ´>…‘QWOôKÛJØ[hæv¿siH‡‚ªºÏ°žì4RêaWT¬L6hv‰ }%ŠOû¡{~¾kffª¥e²Gc3þÏ[NÅÍ?( û0— ôʨûßœû¶>EF¶{ø^ž0.ª·oÛææÔì~í{~ýdm½=eòÄÕUþyh)ž.+ކˆÈ›àþlˉ¨ØØÒrˆÍ[Ð/ˆN¼ðJ0¯®÷m,÷U%$ ©å.ûãx|ªUSTœ Cix¼¹ ã™á‡…GÛN‘ —‡ÏÕ¦¤Šm6»¬6h">²j:,,•ýy×ט˜·—ÖË;SéžžÁA£‡ÈPCÙÝ](»»Áàß ˜Ü3!¡®ôaúÁD.› ÿ¦&Š˜DvV¤íM6ÅE& S_‰ÕÍÞDXñ|KTôò½÷±'ø• /Ϩ֌ç~IŸÔ»ZWzxWJµÿ ê÷訜A?£é8°¬qÊ"Ù )\ý Ö¤á”T¶¤rÑåò2GÍýÓ6[Ý“9±w××Ël·ß7´y5 ¨]¬»—7“óéû7—†ö{o)È» •y•Ë;¬¾C7|  (L¨ dO hèøÌ®¨ÈÂåŽCuÊm©ÛÄ„B·9‰¾ÝS¤‡EJf¡_‰2¤x?ÉÏï„Ác­;Øžœç))Ü)oïhÅ¢!Ë9§Ô¢yˉ¢×¢1,BWIPŸ¹Œ´ôÍŽpx€7èêê«aY«2oáÀ3v-5 ·œ$ú›÷#£ø;E ÇëªPîñP\SÏ?G_w:ŠnþZ¸ü%yÓ{Ìê÷êŒç$aeÕONž cÁÁ¾>ÛžÀ 9+P^†êhÿ}Æ/Ê?'ŠŽaääÌy>,ÙíàæR_Aí9>I}} 6£I +CC==° º7KKyÊånשkÃD \ a­4$ Èa<švÏÎÏ1pæ2²²ÆOŸÎÏÏ;99=†C¶±·/ÎÉùâëíÝŸÄ®8›ö’‘››ûJf8Q§7¿‚¢àЦ3:)é{¾GáÑÑ™#› ,—¿Ìù¾ç´!Ý|x$’±aSWP°ÃÜHõ ó‹õZÐ?ĤprrjïÈÐp\&γRS#ýæý¼ÚûÌvfª7‹5p‰#CV¹%¡?nþ õthú”H0þ]ˆE^^ÞÖ 7wóׯ_KJhÅÅûñÝ.´çêlŸãsñ¡¬ØJMM]BÎ‰ŽŠbaa¹¸¼<ý¨éŠóšgí®ß§šÚZ×›‹ÒXvïêÐé/™¿¢¥ø¬¼oë —ÇTèËÁŠRO‰)†¥­ðæ¥+àö+0/Úa >ßûV½ÀÁ™ÝʾX¯pEù/_p€Xi»=þ†×'¬{åàà ÊËífrvV „ÙÛ›_[ûšÝáxMÜÕÕ•‘±Ì´–!#£ùl4//¯¬ìÈÄD5P]]ð<(HHÁ777’¤G''/¶Æò•Æy ûìƒôÉH¶¤……Y@€¼œú'Û‡åvëùR¾×ò ÌeóÙ7YÀQèã kŸ§[ð=ÃsV†ðKÐL‘²ÞËNoˆ±jE“H…è‰ÞD/é¥ËFŽEÝJ}éÆõÕƒáIH|ð$yœ=údÆM˜ÝᑚÇlQë×ãn33ìµ®{Íw*çÉ3ëÖ×Îø{g\€ÆšX‘cÂ=4fÕÕØz„CËëq*n¹?qà ï¿þõëcNºè:‹Gß ²•$¸\¯N¬×Æ&&$“Ølo¯N‹ϦO6G°±±ð]O¤µ{ã !Tø¿<ʬØc©ÕMʧzzz~üøQƒÍdö•NW@öa zÍÀd1K¶#×âˆQWWWØçU¹á`VÔÞTyvF†—Lœ}Xä ¹ÁîÒ ¬ègèȳœléîx´`%g°ÈÝ3"R8¨}ò˜Èû“ÉÙ3PLéééýÖ¼¼«³›š4òôÍÌ(«V{£~ÎT[Séêèx þR=Òf1ÿ^:³»ß|ß4eVT\œ5À¼uº%“•ᑈ#—ê$¢ß6’£W©ûœ rôùa¥ÿ¦±Ü‘!&++”ƒdibâ}yZ¿"òòvnckÛ]±bwvzÊŠc=Y¢ýƒè€ê’6‘é[” eŒ——WAAÁÙ™Hë Ð羓þ"xˆ”÷+k̋дˆÎ!ЧdŽ]Ý}ÀJ’,Aén^ d¨©‚#YYÔj«»›Ëœ²ÈîÑŸ?ìÖ~Zô”ëíê²P%ÊÓ}ñúu7~jmmœ%ù·´´¥8Ãdrjj ¹$O8߬t…¯Å—¢¾‚òÓ~}HFq¦ý3á;3-x€ú‡ÖÛ­X¨269ép¶3•˜˜Xð{u½¶¶6>®à‹€syyÌ}c *Z@Àg:Åíjsµ7¶ºâaACC; ²œo û,Sçtºåéééççw|Ÿ[PÈ~¾Òn@J1(Qt?ä ˆP‰//̹$M+QŠŸªÙJ¿$-—œ¤Æ¨"ê)ì…ŧTRÌ?ëäÇFIÏá`¯…‚º%ºšMØ'‹‰ ÅçÖÈCGC;ù½¨TŠäu´·ËËÉá°FXÖšNY-wWNßܸÜÁ1´Ãíomõ Nk–rÏÙ´Q&ç}‹˜/¬ûÍ¡ïÅ®³IÝ›–)PU×ûö—± JJ%¸ûçüüO2ßsp¨NªÁ.Kdïnèïo¹ÙãöúyöÂ#.¨w~.³S—º©ßÞÃï_=‰LH0¥ûÈË‹A©44<ܲ»®¨ž•¶%¨ù#;çzÎVLì iaúS¨¡”ÄYÜèèh •ªÁn|TÔcK÷¼ùî9è°ÈÞð𘘎¹YÆD„îJölúÜiœÏ•%ö™H)¤ý/YHíá²CúsÚn8Ií§è™™™ß¼I-***,4?\jßÜÜœusÓ§Ès;!v „@ìKXŸL‰<Lö±t¿ˆÅñHÏÍín,_±X­VFIékr2×\G¯þœÑ±™™‡/H6¢Å¬á޳¾yOŽŠB{ùò%*j¹å—E¶@úT³»;ÀÔ­IP^ –MÆï±Z[[q‘ßݰ-Ì7:w†âã¿xÙz+Ó{¸Ü‰ŠŠÊûñãÒÒ2>Wãõñ ·`fË©üðöióÝÕ;ŒÅ^šf»É?Ÿ~µµ·¯GõHgu8øÕæJDHxttt1A|º5»u ¯Žœï®mý£ìu´¦Öñhéëè'ggM—Cþ$ û_ß¡ƒ…$b """rrr@=ÎÕÛ[;×Õ×#" œ85¶h)•êðKJ†¶[|€g…¬tMWšFFF ,ÏX6›—*ùiüQÀ-5Ý &È~îÏ‚‚  åQ< ÙHJJŠ‹‹Æ–´W»ž\oµ [í>U¦€Ã–öòxu}åá[] ”ËUTUMMLÒÒÒª,v™1Ÿ‰ÆP›š¾£¢Âåtz_‰R¤Uþ˜ŠœH€h"¢XDdÿ†÷"†Ju­?Á~óg¦ÏÊÊJC3‘•ʹ»±nû7/j_y<íkÈŸz¡»`eýS..g¬¬²¶©SÅ »4ŽankhZ t™EöP´]HrÈóúL ƒÉœ½æ@ÊË[ͬ$•«NÌ–HzÙtýð ó™£ÕìfÇHmØÈ™Rä™$‘Æ3U@Ü«ƒ@ŠfÓ]äeœÖ¯ß–OõM]®%Xö”'„³PiSÜo­°ƒ’^L—Qš²²:|iIÄiX,OLÌ­ÚQÌ·›Žå‡@`ADßü¾¹¹Ö {,ÿÌ---µAh^0©äº\‰d¶œB©Âg4A{£·1”ŠH$‘äïߟxchür#Ó)Kæ`ea™4cÂg³ ­Á8”ÅqZ™Ú=’ ~£F³Ë%dïgÁ}¡är Í",ѳ_‰j5‹6ý¬>Ïç¯w«D åÔ¾´µµ‹Æ|b¸òñã@"+ÑŽÕ7 ¸ó'$¨mé3;ü®S4Šϱ-€’`5èûš–Fxg´ôλ7ÕþuÐà%©a9õûéSÉï++äääû ÇÈ™y 6ègŒú©ZmáííËávÇÌVm¹@MMÌbµt°ØJ*™¬&-Í4—éx€Jç>k}ýÌ>v¶ÊyÿZÿ¤m\¨ ƅՙʤ6ï²n›[÷{sv*„Պ阰‹¯)K'^'ÅCQ×a‘Ρ·Ì&ÏX„ lÓ©ò‡6 HäF˜~½„üü¼†ˆ±±ñ¦ëùÜÄÄé?†Zd–)ï}Ä»O™r¨,Ñd·;Íj½fccSQY L“ýéÖØ¬›m,%SúVÊçîn€+‰11ä…8Œ&r22/3+ŠŠ¨YX”.^ô†à²ƒI6;?ÿðvPý䬨s)öÔOÉ»µ×à ÜúíYkåÌI­R)%­!Ùü©‰ 3/_âlÊ&&‡Ý½Š‡€fÛ/Uø!Ô',±gÓ¿hJ ü0c ››§Wº!Ò"@4W›M- - AÞCüœ¨6%,ȸê;¯O˵ в¿nÈL`Œ:2rbl,‡õ§Eu±FãUf¬›Í†¦ûí鸪efV©æÞìððT"ñWмºº8|8…)£d{c>1ëŽÚ>Ô÷b$-ª jõº(zóéŠéi•Üi‰¥ÊÉ45óÞ7x‡Vm’á›/¼³0;]:èψN©³YÕ¬—–—k‘~Ïĺ=ça*àávÐWû'p»¥,Â,ž= &QyÊËìçḬ=aa‡æ:Qôi¤?^;mæ¾ Här¾À Ð@DZ±1ô@b**ñ‹¨·k*rrÿ{CÂpêß¡ÃFÁ|nÑ‚r·¿½\OY?rÛK*ý+á¬TÄEU«(¡_/Èe¤Œ>‹ÿ óbEÜ$s »/…û( J÷T_1’ÈÖ–I‚dÅT†‚¬?Ã¥×211® Ì„ŒÌϾ8†Pïýá3ª[¸ë‡}쨼Bbê(þ K"ŒªE{6ÐMRæ¢8¡¿$RÇt¹ÄkŸŸ“Õõ«&EÍ ?ÕB:#ÊÀÐÐ×Ëë“hpë!œ“Õ'M¨Yɇ®‰åö<ÿªëjÇ ‚iP/HmÁr¶æàaeDÌ™fæì-æØî¤ö‹ÜZà@¡µú>O„èöé™öÝÄYùö;Ò«ÙY »QYIiUûï†è”JàÉih WXh…ŒÞÇ—•Ñï5#!vjû aSk4ÔØïkT>Ou Ù~D„¦ùp?6>nò«2sÔÄÔôVb^«-4ŽZ“ËkTT(ÚÙðHìg>ß¾ÈQëC›|õ¸§ 3Wg›?íñÌŽ$²ûú˯ºïÈjŸ éãÎöBýsëÀæ_Z¾¸¿’©Ôý+Ì Oܬž~f ‹|üçiÎcÖÿ°rÙ]Á…y ¾ªþá¥0¿_ÑG-Ï¿ef¬cøÉÈÒÆ’žJû“1µ‘¹µ ÄV×FS“WÛ\¢-`l¦oíhm£o.`i¦§ù½ ÔÿÍB ¦÷ïé˜i¿¦ûóúá=#==#xNEKOËDËEõÿ§åÏ`hÿñøÿ“…ã Ÿ$¯œ²?ÁôHÉæ% ¤¢¡Qdॡá“ã#P’# £¦%ƒh[XÛ[Zh›ÑÐðKÙØ|b£¡±··§¶g ¶„ÒÈÉÐ8<‹îa翞RÙüËžÔz6z„\¿Oè`nfaÍùCÇÊÊúgïßÛêkës}m‚‡m©ô­lí8 y--lô-l¨ä?éèþyÅIh£ï`óggv]#mˆµ¾ §¼œ !Í:ˆ•<¯¥ù'mc³=Ž0?'ë?÷±ýÀIh¨oºÂÆò/ÛñY:8‚õ I,Ôt´¿÷°1¶1Óçúg{ü~ ÐýÝS`=DâH@öÏ È x¤„Ùþ›®#ýÝ”2úú} ]}š?g@à03¶0%0‚è€qkëXSëZ[@ôÍ8 ­mÁQŒôõm l@†þJÌÃ!ZëBŒ?Ùüë_L´í´ÿ¬%$°†èršXÙêC©M¬ ¹8hþüå¶£ž£…µ¾îÄ[ÿ×½ÿ%^ m;ˆ¾þÿ§!Cô­ôÿ_„üW0zÚ6Úÿï÷þ¿Ú“ €à-™ž¥®­9(#rj¨rG2c c™‡Ahƒb$gÿ½½±…ž¥=9µ™¥¶ÙŸ éÙ€¿ÿçÔêý)ÉÿYj rKóW“éXê9‚=c;c=°‘å'0¢7TTz––6à`æ–vú6FÆÖ`#JcðT×ÌÒZ_@Ç‘à¯S¿! ¢ú×ã<”«6âC?Û<Œ@WßÌÌú“¶®±…!'!-áïן´õôþz ÒÃaó'ðBð{+~œ€‘é“ûïrØèý>Å'ˆ¥ (:m3cC ¿7ÿë€Tfú`'ZjF}ó?{ü#´¿ö{èoÂÿë–}8 -;‹Å¿ÐÖ\GBÈEOÍHÍ ¦ üùωiÀ™Nc£÷08ÈŸ‡¿rOó;?O~oø;ûúz3°à“6ÄæOrþ øþäþß‘è÷Fÿ2PP¤K{:i3mkë?xñ'¶fÿ²ÖÌØÚæ¯?€?™sqhÿUW õ¨ÿàòïs‰k[üI€”¶¡þ_Ãä ÑÿÁŽÿéŸÀvÖÿv }³‡üó0ÖÿýqþSׄùãj[€ú|8ο›4ôŸÿÁP[Èÿîèÿ<šÁÿÛ‘~ƒòÜ•ƒÆÖìÏ„þ=³ÿžrúK9ýÿeÎÿ?—­Å_ÀüŸ&`¬o¦÷?柇ßEPâßÛÝÚXOŸ þ·5¦‚üjÿõŸ«ÿkÖ¨àôïDý×õTQ¯õ?ö¯›X;ZèþãÄ¿_pýcfþ­ýþëlY23¶Ñцü=¨Ì-¨l­õ!TÖúf ¥Ù,,-ôÙ þ:ë•‘¶…Þßú×DýÙà傿犌Üù$´íäÀèÉHÿ”’””œÝõß âïq‚óüB¿Vÿ5’?óÏÙø;‰¶ææý6þ»Žˆ>ÙêPiÛØ@Œ@ä¡~þ.m®ÿšÜ;úo*ø/çýkÝÿ\þ<ý?TâŸ3ü£ÿÆŠ–Ë¿®*åãåµ43ÓÖ±H ò ˆMÛ¢mN`` ùï$Ûßçþ÷þç´ê‚U§á067ü#þ÷S¨©© âÑÔA|2¢þdaHHbøM”  ͵?)øowÿ³7؈@ÛÌæA(ÿëè~ª¿G¶ûKÝþOøP@ÿƒíJT1µ‘öC¹C@÷üÙ×ÂROâŸ*úoÓžý(‚ߥNùŸ6ùkxZ¤$šž™•’ž‰‰ò=xdeø­ÿû0þû0„- ,ÿ=€‡µÆ`5ÄüO­ÿÆ]j‚ÿ5Ú÷”¬Œ” ô ”tôtÿ‡0ÞÿïÃà±Õ3þ?Åbi@ćöÖÌõBb¤d¤Äô‡ñŽDßÎXßþÁ§?›þwѱИÞÿbbúßÇô¿–Ë¢ohk¦ ùïb`¦1Ò²þŸbþ÷€þÎãW( ï™ å=Ó? …´xøƒøùo1ÓêØgUÃ6ÚC}›? ý¯X~7¶æŸþ¢÷?/0Yýœþ÷‘ÿjÿ¿ÔøŸ3˜ë?ˆV=}]³ßh t÷¿`7ÒÀÜmþp,PçàµýßÛB,m?ý ©[æ#ЇHþ-Œè¹~ á?2ø_Îøÿ°w­½mIv>çWpœù°³à&ý~dg (m ‘%AT&“ ¢Ÿ'´$ˆ´ƒý÷{ú’I‰d_ŠÚ Ù‘›yoWuu=NU÷-‚•!ìüg²’Êeã˜ÎŒZæ¤ Vfs*I5ãéþ®cÜu¼_„\KWR†Wϳ?§9›ßá®ÃUÉçËÒ¶¡UfPê Ÿÿ†ûG\¬õ7“ÉÍGÜî_±üík¿aÚã€_* »O¼?¿õÕÊ -³¹EÈÞZê÷^‘@½ó*€²&;‹—çr•VòðzòD 7à}‡w“ÿi)èÝ&¿ e‚h-­Ó.Kç™v"*Lb\ÐDŸSÐ-hí)è&ìï"ê]§¿¨9c"SO‰HVkAÜ×óÝÍG|œpÙhtó+Àaƒ«¿ù[©•šÓ¢Túõ:¡ÏwóT¤f¢~ðÁWaQ†š– –*OóÔ~Z~Z¼¿TâXÔJÇ“R:Í77“•2êríèÖM®îkGx£ù{:ä0–B÷uJ±L¾ˆæ.Íò›YæÏóŠë´N¶R¯ÄXi”>.+ñó¹¥Ý‚âtž¯^/Wˆ§×Ìk8Kûnó ƒ²ù¶\äÞPÊ«£Îöyfw5Š&³™½ÓT`³Bôœ¿ååÃ˼Þ]H½þâO/?¿õϺýÿGfyõÕ?Ç{noÞÿgBJ¾ºÿO%~yÙÿÿ-~>#‹­÷`±Þÿúâ§Æîê¼ZShyÕíTË0[/yÕù¹»aüYqióý+Õ§ÚU[5EµÍ,Õܶ_³…Äæ;+¯³`î>4ŸÎ Zo|Í:k[?‹Y˜At¯çvé‚-sZf‰Ðci­q=eÔ/]ÔRF#y¤4hoƒÓ)fOu6‘:Ê4n¾þ4mü~µ7RpL'j…á‚|4† b¹6€YY»˜SÂÜ06ÈÞ”§Ì#À› ÎE›5Ä&Í)µ¦F`É26Òð:™˜ÕНµ¢ŒZ¥‘\Q*)ÝFcºH[‡§Îæè .°ì³ÒÎ{ë"W$惨4I£QQ†­´´Œ$Ë`ˆˆ:9Ë´ÐÌ2Â,åÎá÷¶´ÊßUb$zeçN 툇.•MÈÜ(Çlò-ˆ ïªT¬Q™— ‚g•$%Θd¨ÍÙ¨¹­S¹·Ä4d‚jyXbZY•³ K”²Yk¦LÆÛ4i%3+…1œ"²gª™Ö2i›DŠD Ê„§­(5–S£”,%ÈR)Xˆ é$ñ‘»Ø‚ÒÉp<©k\Ñ+™ Œ å¡&('©44åêdÎ?µ÷ŽŠ ÃÆR‘¤â$ ñ9Ÿ[ØÑEr±)Á¢fAš”£$<"L\znŒÖ9ë¤ú-W)'®ƒŠ6I,<…ÉrXO”Bibr J‹°T¥f4<)É©,¸U’yyæŽûÌ Þa}Ý$a‰h£Ï çEEHEÔ&¶ˆ ec+ õ–>;7à³F3(F™ uÂ’2“ŸfÇ 0üÛóÁ›ã“ÞàøôÍÙàôì´·×ØN“@-‹I„Šœ|L–¸¢™Q‰îƒù=f¡œÝ&mRÊ'xᢄ¶:Nm"2J–«,ôÿ{_)d‚€QZÄdË2K&QHEIC²Ð¾ÊÂÇG—ïöãÀPµ‰)g½àœ‡³u†¹ÀiT´ÊûÞñÛw—{2áµ~Á±ˆ¹Ð‘؃‚ P®ÊÄyïâýq¿|vÚß›"'Â8.5à„mTÉÀ·`q[œ¬kÅåÁå÷{2¡A°AD‹âð9Hˆ"[›‰AlUu&Þ_¿ßS7|4/NH—(H-!UNNö´¸ˆl’À‰˜ Óˆ¿Ù8ç(á )4 ü¼Öž§»Ãñ¸;ÛÊ æ‰°dY9BMf@à‘ °IÆ”×;âuugXÛ:§½Ô*”;ÊUô¡›XðÔVgذpÑ;8Ú9ñ€ÌÐ ŒPJX6Ž{æÑUŽz'½Ë=å@uJÒ¥¨‰“@ENO…ñVf›•¾ÊDMåªèŸá–n’',àSª%Ï:ðÐFåú7ù´]Û,+Ðè Á¼EÐ ^'RïuƒÃÖhÛÔ³@ß.Gg?œžœõŽö¢ã×?yŽPhr´ á>V6¥Í6‰ÏØy.V¤BºhàaSÒ2) L€ r€ ¢&úÀ:!ÇÍs[¡}vJë´EÎ[%ä#;ö&qxyÏ­@ÿòìâàmoêÙ‹ûá⸢ñ5*NYxöÏN4re<³MŽ.':lÿfÎNO~Ü`f$¡œØ ¦VT.Dà€»NìÆ  Éå»6^¡ÊW è^â²H/­£y8q Ø€K[*Æîו#,aó2hdž«(S€áªHUتoú—ƒïOzoŽO+&Q#ËT6ùæÔ!Ã%™|4d‚´*µX‘ÂÍÛÞiïâøðÍÉÁå~ü˜ð6”6[dpÎ1ëáU£Ð Ñnü¼;î]\àåðàd?¾à¬•G˜@šÇ ÒÙ T ÌDlK¾ŽßìÇG ¼À˜¬ô¤ñ¹v&hh¯â@7-5µeþ†øÈ‹Ê…bð×R&&C >¦‚ت¥ßô{{î¢: ÊËèár)÷Á‘Y ºrž|Û;Ù ¤/¥â”=MÞ“àŒ Ö.0 È6æ‘Ë\õú‡Çç—Èöã%¨³DÖγ´H`!i’KÔ‰–ô°×ïïÇ’Gnt`ÖWvé-ÏQ„[N“r¼ÍÂÌ~¯æØU^Ršç¬ eeäÈæˆ360‚%2­<°FÿÇþeïýþìH¡ƒÎHc€¶2< >¬™óRiÑF[ÞüãðàüàðøòÇ=yqVoj'$œ9^8¡@ýÜädà³TÑ\ôz}ðÒûîÛ/{{ª CÐW†{¥“nÍgm\Á¡™œwáçø=ÞÚ“ ÆÞið\kª ‘%I$*$à ·t¦Õ`Caå( X~-Ø0øð6EÆéV7ÚÄúïN÷¢áÍÜz‹ V¢“åA$ ó•VÖÊfa*ÿè .ÎÞïÇ A|ÇÂ{…l]O¶ï…ä˜Y’™ÂOG'<É:K“…„;šV)ÄfïmàF£íµ'¯rPÈ%<œ­£š `mÀ™H)³œæ–drmïUD*06"ƒ± qÐAw c™„è ®onn·¯Ž ȱ‚>Ð@¥N9@˜2F¦%—ZU‰}ú¸Iºg$²ujmJFGD.U”Ò`†®F —'+·0Èò‘QkC"^a}$0ü˜¢«ø&õ5ÑÞ#Ï´ÁEG®ð»O’Ù ÉÈ!d+"͸Ê\xrzemEÿÄ$-[pL®ÛG~LfX;žd“&ø••§‚öj­¢8¤Õ\ÆÓ@Y¥eŒ% Y_q6fJb43D’ļKUõ*ÏOÿÞ^(Òpëú†ˆ5†Sdq€å=µíÈL'oG ŠU¢C$‘L:¡ÕåTô5BÝ/©<~PÙõ.ê(s‚ÃWJßÌ¡uRËRä©izlÝÒe 0Q8™$"¥¸cJ)Hx]'P9ÙÁP§‘j•åtŒ¶22›TÙOÕñ§½¶nàÚàg”Ë“ɚ³`pD·ØÌ«‘¸ýÔÂêMÂ;O¥ËFødæÞÃ;{nxt¬j)å¹èT¢”Ñâ¿rZ€˜g&„!À(ÙãÚ*¥ÇEU«2¨#‰F˜G4fž°XŽ !Åx¬“§íqXÂmyM¸ÆbæQ: ´££ HO¢ªûxæ‰ëQK', Ì; °¥ö¬"3V Xf[QªOw„¬¨7P¦y2D”KJi¢ s¾ •ª‡D¦ë“.N5(cRQ®¬4fÚ© ¶žœ‘Â(Í¡eÈ—”LI ‚¹ÛóýüŸ˜ó¿óó{ézÒôþyŽ£±›ÏÿÂ.•xxþ—°—ó¿¿Ùùß•õ^>ú;z« 1ƒUœ‹Äx£ìF+îcFh'…LЍ5ñî³}Ú8œM„Ër(2+§C²Y!¶«EÍ)ÿî éÿÓùÿÑw£ñàv÷VOéÿG©bì¿< úbÿ/ýÿþûÿ½ßK{¿—ö~/íý^Úûýëµ÷{Þ¶w››þ~Úû­çd:ÇòàÂSf7Ãp+£Þ‡–'Ì?a†»qw0µQŠ98-¥†U™ÍÛî2 ÒŸU.þîî†Å8w¥¸Û•Q AÚ²Ó îdeÞHÓ†m» „Dkí@7w» SøàÂÝÍÓ´G¬hßÑ>–µåËÆA s¦»LÉ/áçCø]†ËC„ùa'Á.çCÄ”yˆ<"ï2ćå!>̇ø°ËWËC\͇¸ÚÃ]ÍRÎÙ·ó!owájEOÆó!^ú™þ®û™®®ÿ[—nhòYøò£›ðË«×ïÒ]*`¶À½ñ¤é8Ý·<)M=æA¤Ûù<Ý\áðºüR|4^ fÎÅEv~N®:™¡4M7”•*ó.¡Èaù†ö5 m‡rþGаދç]TÎ/¿¿èõ—gƒïz½ó/¾éìÐMåK'Tà,{e#-{EÙh]NSa˜Œœš ýV¾˜5\i88^ö+„ooî&KOl{æ’ ’Ëì’cZGˆ A–çö¸¶ ªå¾¯®œo&5þßþºô$}¼-Ðr1Y“Eð$Øà¹åÖ(/”òФ¸Ñb²ó{Vgù‡m+óÒäååçÿfÿgö(ÍÜ%®¶$þènŸiÿ§iöB™*ý •úO„!ó/õßߤþ[Z?7 ¬ö«yCè‡ï·këü—U%ZÛÉùq;`¡U—Û¥RÒ.ãªÒ‚—n"w~7ü Wxxs·¾‡ôÒç™Ð¼Ð–]j´ìB-Û¶¾çáíùyÑ– —ÖjoÏ›‚S w[;Sj uücJwËÁ‹–Ý£p°Q Ç¥ûïµun§Wt^`Ðp×I;—‹Æo`´‰ˆnx=¾¿kzÕ#ö`àœw­á]*lÛ^Ó˜?»ç¾Ùðx³¸`M«k&»šu•"]kÛv–~ÀÁãàK<¦(d3k%H‹Yß7þ˧kLaN²Ÿ&“áõ‡SþþzÖ¾zª9ókÖH^ò.c¢k5^eMq͆yÏ™è'àÑ*+çË4XeÜ\Õ°¶v!¨ê¢°–M*,Ù Kß÷¿­ñƒK¶0cù¨bVUùPRãfì†ã_ކå¾6|}´êÌŽùubs[çøl#»Â€]ø eU—“*»´În?Œ‡m}_Üïܹ_;ýÃþñf±Ýå08¥M—Ëš·¢æÔ%ø!RÕaz ûG©$€>›Ìêö®X}¹jÚÍ}|›Â0숿Η ‰b`“RSHQ׸BÊâ±ÅÇþh8÷§³½„ÅQ¢ŠŸW¬+íR¬nWSãMVy{ê·&HÊ»B,!^­¬0Âh‘¥¾•›Y™žÞ}䯠K’"ˆGu%¯ùRª¶p³ï·8@&‚@­î ^“ ÕNžé‹°X\ê.Ux5¢Æ”©0õ|_ç YQZ YÙ [ÏôpùBD‰4UÅ&k}Ó¾ÕüH¿"%_úZ‡?NÿÏ_‡±œK7aÏ3€•üO©žÿ㊼ä¿uÿÏûõ^Óþ󇿳Çݧïohý8»iõœíŒŠ‹q®n†aå ÷Båfç¸ :y­ñžQ­‰ÑÖE“h Òøõ‡’ç=GõptϹ’ÊšlµöÎ É&Òòô°·Ñl=\¹ëiëðÑe‚”.ã×d¥D»˜| ÁÈ äÖáËZ 2Å»t½JvB›H÷Lh³ñ¥u³9pî¥Ïm¨”eo#¢›Gv¹#ÿËÞ•ÀÕ´µýºêš ""B¦½ÏÞgŸ} ™J”!©(tì³ÏÞi*ÔÅ%¡”” Be(MÊ‹›êR$ŠkHšo8š¤oíN¦Ð‰ßû½÷÷}oǯÎÐ:ϳÖ3ü׳¬ý_&¹|†ÀØ,°@&H"P¤K%ÙFe“,â°1„àÐ8Éb ˜,q‚¸4D¡Ü•l‘'€‘ºR€b‚¦(Œ!|þrØ$lŰØh³ˆn)àñy¦]ªzøE0d6‚ ùG¸(ãÅ=è¶ ‚OYt¥ ”‹q ŒÎ0ºÙl…º;)辦ά–¯"f „…@NpøˆB¸h õ€!‚¯H\‚Ó CB‘,˜ t@4Ãá`> p!\¬oºv %À1.B\ŒéÌáà@“£¢Å†Vg¦Agù\ù` .- q †pˆ¾'hcøÖ!„_Êëi’äp) ÉÇ"Μä* X0ÅÐ]§@œƒa "fS§ÀDLÀ* €_9 bÃÄÉßB´oäv¡qp„`‰P ÅIJâ$xE3'›!˜XX30Û• ÆÂQP c8‹âƒj¡l>Ɔ MŠMfcÒj³…c—QÊÁ¸|6 årù(…1§® L,Œfsq®X?[[Yui$ â„b{‚Ù|~óƒy‚Eh„ÄÉ·íD®ÿ ¾98Nqª0‰A$ƒp„(Á8… p8ù/ÝÿžœÂQ&@ `}„¹bŸ€ £™è(:1ß¾ê;˜’ >ŸÃs&tCñ™½K°Rì2DÁzE\ Àæ39 :‰Á$Æa¶Ka.‰Álˆâw%Þº—ð}ôäBH-6Jsh’9?Fi€Á,A»mÓ½%Q tžDAÀ%QL9\ÅÈ@aŽXâÌ^0¢ù0‚ƒùp’ÉšËbS ®ˆ“/Ø c$0„oPàA(ÄGØ$sH'i ÁÅÉ‹ÌA’å²I>¨ê@yDÊŽF¹4@<ÿmòsÝ@6¨VÈA4Íe¸+Ƈù(ÐB\¦ Äé›]¨]˜ãÀÀÈàpæ`_}H—ðc·YL”bÌ­¸ Ã!¶€O³Q–GIx—ÅÎíaÞü×íÿ:n&yVíÛýÿ¶¥që˜ ³?[ÿÃ`ýpvÏúÿ?ñد³Bs`?æ¥.]¢® žG0?}~¿ÿr˜Û(!ÑkèRõzÛ$kJyKô G§××áÏÂ^Ÿ5=‹N7ÁþøU1»PÅ|Õ”ð‚qîPž¾®öƒß÷T†¸ÌLÖ‘ÕtM­ZÛsúTíkß1ÔÐçêP†±`ãù§ã­Î¯+91qHr÷õ{Ü;Ö„®­ ´q)\£Q?Ã5³Q=:\žðšõtìVÞ7óPÙôƒÓÕ=W]ºQ'¹(<¾¬>§MÎäfßúÐÃ]³¶IIœ¹6eç áS×—ËZ¡^KÔ sÒiú ´ý‹ŽL lrææZO| t‰VåPY¬Ÿ“öË1鈋Ãoôß!5¯ï<ב ˆ\zúÉsî}Ó}´GËÉ ž¿éºÄ"îo"ãÅ }ê€Ä€_¤mšvV±.TQy ²PuÁ ³IÕÕ¦ªÙáÓ²Ëk’$~µú㔞Ï4˺c)Ò2ÈtÕk éƒ~W“í]¶/»_y¯e™Aå´‹ù±¼à eÕfÚúŽj-Ù™BçË¡¸Ÿ%[Û4ª¿™‚ÙnuÕ´÷LM®sÔ#¼-*"¤›µ^s‹_>îEØmóÜyžV­Q¼²|‹µ5Ê£óvú^‰)_Y4,ïîZ÷|¯&]—bÕß4Zvî*:"ý·F‰Ìl,’¿jò…â¹¾iN×ϰµï§Ü»r˜7À~å´0B«ªÜÚƒÕ\L¾,Âl™1ǹwÓ3­±wàTÓùñIœåçxëW*çëÌ®wimsö]c5P"³ÏÐmxŠÍiû؈êíE«7—Œ”°•gÙ¿´¢o­ÚþËÂ5ë´ÖNKE×é5;랪Jyãvõ=áj[j&eæätsÒÍê[ñ¦KOÊz¼rȱQâêw¨P»Qøt‘±ÇÁ^Ç £‡„ºœ9 ¿Té–´Áþáß›ž¦š®±÷=´éM¯:)×ýU•çóä¹:é…䟻ꥷ¯{\Ý|ÓØÕÐZ}îœVõ– Ï3l\s„pÿ$‰EÕCæõ—Mîg‹ Ÿœëí¢õlŸçša2ãú®µN!Í–Kf«Þ¶])@ã\㊂ý B‡¼ôu5J©ßgözàáZåQþgCCÑí¹Tc…zÌ»þŸÝÿÉž²flæá›x6VvÖ$õ“|P1üOF‘NøÏA9pþ÷ð?ÿ ùŸî—Ø) glRZÝžƒJ¢»Nö°C{Ø¡=ìÐvh;´‡ÚmnÔϲA{xQÿ/ªËRü'yR" ùäˆ/>nGêÎ *Ñg_•$¢á~#LD¢>ÆÉ7øYD'îЧv©¦Õ7éTÌ5?í“Oûå>íQû™Úš0±%ògŸ‚‰‘jOmQgѾê±­D¨ýY»ÍVãÕÃyñáŽÙ¢v-”…t-”…|)ôófÌN…µsË PXª)›Òii%æÎ%+õV²xºÌM•xKxŸ¯Ýê*¦Oh·û$bÁý;úÄÓ'öÏ#ë¾ñ7“vJIÅÂvö'Òi% ¾Åxû:t;—ðŸ·ñÜTL€ä2GÌè8?c2\ŒPüâU®ä ;æçÇFÇÓî÷;bN9:XYƒ%@YÊzsGC¥/ÚØØZƒ" >(•€T¶ÚYÙÎ^$zúðçîuºî*uÛf ¦3¥ÈNˆÔB~µ–¡¬n@ûÇJDé[MÚw¨Õ˜Åø‡Vªª&[xu5¯#;&kêˆ^'¾•©­£’}û+°êæpÄ€0‚üŒÄ (‚þ‡2ȗй£›RÅ`'‚ýoµhC~Ú1Іà?6"¥Cú¼!ie)*6fª~{VTRù­ï}©àûƲµ%E—&gºáu”ó_|E´Žýª¾êr¦úÆ ÕQË}Uÿ¨°˜EÀÿE¶4ê{Ëñjßb“ L­y( ÂDwÀƒ8€ÂÙ›æcM4 ~Ã_Zî㲩»*¾[ï~£¸þbEÖCøîyü#üoÑEÜ_’¿ìÊ€.÷‚Yhgþ7„õœÿûíÿ÷–“¬nßÿy7<ýÊ×ÖT—hcþ§ž="<Ó~E@`u©ãv=aj[}Cæ¬#ƒú Rê/9¤OßUYüh 3'yZÎ[ÇHÜ­Ô'ü–î i¯ñnÓä#ý¹¿¿4~PD¡–ò¥ðùó§)™´d 4h¡’`\ö2ß̦ÖÁþCnýºgÙB㜠rÌŸþ¯ç–·p'Ö´ZyK“ÂÓ€_>öÞ5KLœõé½Är¹LõOï Çû÷ùø&Øh‚œäÇwzÙ× Á;×3uõÏš…±.Ó÷]R©“+uhÌ\£Sšžöv#D ¯ÈŒ`„T^r¨3¶¼þZ!Ü÷ÁEOÌòÁóÊ7o9±KH¬[¿>0rÑ|9ðxV9¨ãoŠ0ó·ŽÇüËKT>u7\^Lo]µ¹6‹=罿²pÑ¢Â$;óÒ­ŠâHÍ£Ø^BÏQJJjÓ»ÆúYµ%Ã.'Påôä÷á¶ÙÓÂõ# ’Ê|×½ùWÿ™áQQQך¯(ì%®\rI/idºáºx±q ïÝÓ᪪ªyͪË`ŒǪ­W^|0w o‡þiKš>ÃB»Ê‚)–¥IúÅÅÅN/üMb®,ß!-%µ^¾*7d‘°!­mÃÌ”¿w]}ßl>}ýuñwK{nÕoEÕ-.šäl¾tUdù\ÖHà¿`ÔrëÖ­ }P¡òQ–uôA¢ÍÙ÷¯üÒôFnàìh¶=1×Ù .µádX–—ƒß[/¯÷­-S§N|dsãtKËã¶V^jKm20ƾ9sæÆúùùUyÌ®Í=å©1éä¶§î-‰ …Š‘‘7oÜXñNQ¤?} ‰œ2°ëüS<=‹þôGfNÍ纼ß~;€yϲ´´TßÈÈIÃÒ;~fùñ3ééó¥¥¥M›ßT\xXã­*g´ã­’}MåÁI¤cjjêfWu¯¢©<(Ö{‰ÏYYÙékÏϯºmSkòúÅmwƒ}2Š(•5Ôd,ðMÇê$pcY]]ì~¹IYôÅ ÷Úb6$_ÚÑb/¬{Ì3ˆÔòä‰QÚÎÔ SæÌywáþ 5;Åg¾Ó× 9òœŒâ¬—Ñ ¬7'0Í«ŠV‚æ^^^îžž±ÂQDSã˜R(½¶»÷0EÅšõñŪӦù$$$8½y¹ê´%A„ôëß__G'xe椠‚óÄõ˜ðÛOo8zìXøž=R5%‰«ïl‰öføt}Û«ì™æÅ(ÕÉ“O8¡¶Ãˆ ï°°° @}ìƒg/‹bƒ¼½½³# ¢ózݼr^«^ËÛšü¼ÓÚõ=n,ÓÒÊÎÛÄî® àÚ¼ Zj®!3<ôÓv¶úx{‡j7Íò™âVPPÍO^»!cÄØ±±­- æwC5`rïkaý³ ó§7ökikçW_eé3Q½³AÏbÛú¯vqq9†—KŒ†ù{â7—V®w ÒÖœáäìl~ÿ•å–áæÖçÄǼÄÑÆé?‹_µjUssUìÌQ§,å¹´Ú]u`®ó[[5Oû·^'OÆ«>4š&oR2¼·vm8ð¦NSSSeaäšè »¸$xÂuïç†T²åÃxÓÂ}Hù®’½Þ¼{iõøª°v¸È-¬Ý-‹ÚZÌ›^•ùM”œ×üòTUo˖󺺺ٙ™™ýddìgð6&ß¿G )))YUÀFç7þV›Ö¶³Ü\ÓsŒÚJ--ë·ƒGŽzþ\àfJ>zÔÏïl¯Þ2¸¦¾qIø2$WÍ£Ôu±©ov+ž:¾Nè·ÃäNàݶ¹ÀŒ82à ¤°V®£wjÞûA¢Ü]~[úá~èPamiòQà,0Tsaeáe•·1QgVœˆðñ ¢jÓƒK¦ œÍëÕ¼~ýúDNж§}+îÌ®ÓÛ¾=Œh(ˆØÙµWE]Ž`eüµzåÜÓÊš/“ë®æ?Ï_gS~'óúõEØñåýå§žP¾ÞÃïûéÛ®){Î Mx¼s¡¡!]à¾;f…2¥ö?{õÝ+mÃhƒC#‘Å %6ž2£ñ`—wÏÆÔÙü÷û·ŸAn~ëð8–À @Ø©D›rƒ‡˜ŠÊâqãÆl:2ÁqÛ¶—ù+çþýä:ÛêÑaE¾fÎ܆À½²ccdç½;Ÿå–ÖWNeÓ ·ÁIU1ɶUÑ ³ZŽÍvˆBÐ<7xAå½èã¾3yÆ–mS ¢rÁD:lذÓÀ æá«Ô¶o»·¡6®ñŠÆ 3&æ²yQeMÂã›Q¢]½×0h¿íòÇŸ…É? ÌßÿË7 :(︓ÏçOÐï!jù×Þ‹û½öš-#4˜i ¿}œ“ T lnkçVtóÆ~¹ Š _oÔjª˜¨Õêãa•cc‡vÌ·»÷EöbÂÀx!þ–uù½¨­v}–{Ž+s±Zc¯wሻ݋qw§$F/ô.P½¥]º³²îédÑü¡3j13}ÿà?쌵gñÑ®¦³±Ú¹Ûrž•5A;O-—“÷öñè¢+³´¦Ùª ™xÎÎÄjøâ’”b Œ‰¹ß~û­_¿~yo*ò©„‡õïÕHÿ\Ø7dø)ÞtdÁ#K=J¹ÏñøË%Jw‡j¹ÃŽë=lƒb\.]t­ªïëÖ,¤k÷^•?=Š^Z/9(|ò¯ôüü'ÒS¬å#cgI[úìÓÚÊîv‹TplÕÑ×—5ŠÔ8Jx{ZžÚ*»Nè §‹@1“×ò/¥Áÿ¹“&¸³Y›57KÅZ„¼:×9S³JÝæóÜlú±Ì¼Ê›Z¥ÑšÀÊi»Ãè,©¾©„ù}<·ÚY<(§4íLþÓdþõd̘fï­­NÅÈáÀq”ã,ȇ57Í¿z_Ä¢‡/»V5úÒ"ÛÚÿËCí?Tüùíl>S.©Sç×)ݦ!2²— 3QçõêI ç*•¼jù÷ÜEsùG(•t­b{AosŒøÍc¶ÝÓðþ 4FûKÅpàWä‰{ÅSF1ÒR›Vuê#”ÕúìÎÍ1Ù&ýwúÒÿLŸ‘+ØœvÙÝ=¦t"_wVb “†º£¨Ôñà ›»ÚÛkÃÐNh5÷Dbüü]n £&~_®H¢`k£]x+%2\:À›'Ÿ§PM$À¬›Èå8ÈR ï60³ÿ•Øú¹uujÀä"g´)WÛdH&qomÓ[GÓª«9MòbGËx%u‘àšâ¢Ã½¼ çÁ#øÍ)Ãd{m=#ɳßSïbÿ±ízàö­b‡Ò„j9½_þåh¤ÅeÆ,_íÍ)Þ! ©¢""Òô{¢y?Ùž*Í"¡&ŒÌUà0eï Œûô˜vʃàá·Á}:ÚcµþìþàüŠe2dvÜSƒ¶v »7SYôŠF%k¿ndª>ˆr¦ÌrAÚ Úw?ç*.oÞ¼ÐG“Q¢TÃüÿÆ~ŽýϦÏqpòrd³¶ƒÙæÃH ©»Òlk-GóÞÖ9´føV³ëZå}WOÏH‡mPa‰œö¢ÏŸ?c2 ÑÑÕÅaA¦fx0õ½¼†ÆÞ6ý Œ››[NAa}›–Òüq „• p‡Wmtî©À h6j¸œïýq.:­Ðö‚ü´%“l–dâðxjTbba’ÓzĄ̀âÛ·Mòt Ù@‹ÕPS²(,.¨žfäù°Ã,}¦Ö0i´÷¿;¦Î| [h`¤×¹W…T!q‘ÑÑ&‹Í”ttˆ-ó¸w¿ð¸Áw;‘6Ÿ¯»ŒÓ}4rwOO¹õŠ`lfW«Å¬° f’ä`R¦TëË===Oæ]ö9„ÆzãÙ¤ ’ÆЩþ|gž3ù1œ1Ð<Û ÀÛߎeI¸4ÛË­ˆHŸUóñóÓ<=SLû1;Úųaÿ;B-Ã|@þCIK¤2a»žqÏš®¬Õ!ùO1!ﱊ~“òmtcyE ÎnÐûvy¶EÏí¶†ó¶k ÙMŽ®vŠò÷çûŸW„£ááŒdI™k€Ía³ÊÒñG_°A¾ç³/¯“a]>÷ÂÍå1 °O*•öŽŽŠÆÆ[èåÅSfq¬æq=BGCKßÉ걨Ë¥>?ùœc:QØÿ ü(*:Za·©eðÿ¹¯Nrú{j¤ÚÜÆÆ&ñV±”ŸóV"õ¬ÎUfYlt<+”âtDCÔ½ª¶b9®¦R¶~ƒ/?wG7ßQ¨^›pÅb™äv¦lXþ¢Ü|FÁãzfDd¦ÒRd°~¹ d=Aꉅgú®SQÔ9uOéáá!‘À. |·“ǧgr[¿°µrϛ۲Ÿ,ßåä—Þý<†-‚4WêÆÙP¥¥æ†iqq±óýíy"±N¥Å%Ám‡Ç‰ñïÉâ퉢deFCD±ŒÂ#ã✕q!w&#Þp±ŒPm„Ê00'¤"~( rr£úÕî·‡3zГýÜ®Çÿ3+¾NƻĀÎv¨ii%uÛƒªóÿY;:?W °í/xN,h´3^ЊqUm'VYYé‹„“Yn:‘«Ûrj1Rïâèv±ä·=W[IB,* ÷Áçðˆ}Lß/_&î>>ÎÍ£’“‹4êÇjîONìààäoc•¨_ÅfælnáqÚ {Á#å–¸/4¸Åq;•TX.Ðjj.Pq¢”Ÿ:{¢Ã>g’ÐÑIA»™æ3vÛ£Œú8‚ƒíí졸^H.}W~\Ý9MZbÇÄYc†ö™JèÏŽŽËù‚Gc4 —仓,ù†“ÛÍ´ÐB1ææfQë#IIÀx¶nê"ÍbÕÕcEG®ê·ãB‚;–Q†9Y]\YžAÃΡ’A—=&#m×Wµ‹Ñ"ïjô‡ÇÈL'“vÕ«oËMöö¥ÇrŒ @ªÄñº ÝÍSµ¨nSÎTÎ¥¶­±YsÙ¯§¤ Š·lPÞa0›«‹}Ö;00hNÓ×ý²GÓ¤-›ÝJ+êør¯v?7=] ¡¡¡ßmôœ{t䇄¼±q< ~>0ì&s5öGÇÇ#dÉ®?„ÜäÜÝݾ¦ç½Ïÿf7ýSÛ«ÆnëG0›F´x~$Å\y^¿~;55eoñ–M°íôÍ—D&$äON*A›ž :U“(i̽֌ӄ"П<È<ß-×+l?ÔN»UùæƒÆ†]Oëkž“‰øS-µ2çÐ}r±™n—ÞYžËe\##š5Ñphïð TÆå9Sвê&ÂÏÏÏŒ58ÿ×"ýN8tÁº³UÖq,¦Ñ2²²ö›ƒ„Á¸2EuG$[[YÉãK-~§-(;€m?êèüxE«–=–§¸s¹‘츷"ÚÿÞüö0œõwW;PÎCû s3æ!!ãAXLÐ=¨”w-m/6{qº^ü/Tϳl¸lç0tu£V¯)ëŸHäR,26åýßpS~uÔCPžÅ sÎv€‡ÓjñóÝa¨9'gMóu<›e’óù^á{_#@îÐîËz¢ªùÌ÷ï˜>ÞÞä44Ò×ÀªÑ\u¢ß_‡ž–óŒíÜ!ÙÆh ûrùH!,‹<'è3 Ð=*66ç1ëÏît*¨ s¾7Çb2JŽDÀ[7ÍÞ 0¤°™Â€JÈ\ë‰áºkÓ‚6®­ߺ ŽÜ‚ˆ—ßH­¸’.—÷bñ‘D2ïmɵRJå¼sOuÝÿ¨Ù&jcN—G8Ÿl¦¦¤¼®?W…È„ŸŸ´ÁÍåv Åê‚æa¹¾êäÞkqˆÖ ÛÛ• g5›L‚OÚBþñãG™õJ{Oˆ.ÖíùúZN»Í°2mmmý ¹¶K§V"2ZZ)ÇÓËËæ&\!»3•yšî%*AAr®®®Y0´–t%f0=qá}N†pJxëÈ8Îà 2˶Q LR!%ÝÉ#å‘pqW7|hÛX€›¤ö‡ÍÂN#p4ã½2D~Ó檦µ‹‹Z·¿ ùFéêRÀ[šnætwuYŸqè¶?ƒJŽû ×…o$âÒ³’ÝUow-Oû¹ööf«»ûú¢HêO†Å¦+-“ T2êê¸%¾Ó¿{ÿlpßãÞË7ÔæÁáyI<.ã“YÆqÐÐ×{cÓÈ’>ñ¯÷@#è-º««VB¸NüønÞedd\¹g¤¾÷3é '=c:æxA§Q¸ËÎ鸗ït¼n<š-:tRѧ$çBDØìgV†?&6×êœqt7ënûLÖ# ËîæØUŸôUw¥lKŒ.´G`e‹,T¿~~û»tZ>@ß@ñqExaô&ói‚xwþ]ÜÁlo—°Q¦×cJjjñó9GHþ`§KÁŒö. û& ‰4Žcáeµœÿ½ú L«N-ÅË5:âj ’ÇsŽ ò""þ®nn¤"@-ŒERÈ–¹œ[ÔŸM›*ÎAµ- Z'8œœœ ô±µ[mëꈻ²cÇ®²NS(TËñô|¸±”ðX{0Nnp²‰áá£@8ä…Ô7tX¯÷b(— ¿‡ÍåßJ°ðÚíá[[¡ÿvÄÅBñ Ùx _>]ÿ¿¿¿J•U* €‚dù)ò¶GÝõ„C$ƒƒSœ]¨²^a6§ÎÈÌÜ b §µ(“™ñQC~~OÀÃi és€¼ëïÀøÜêP`Ÿ…Bp‡š½Ÿ®FHm/ù4üøt||\tÁŽï´ú¼þölªO)(DÛÚ‘a@¥‹Få­¦·W§…ÈO>ÿ·ÝáméÊÚZ0¤ÊÔ¯‚ñ¸=FD˜^UÅ>çqÛïð¿–.ÐÏÙ€Cµß–ë7žòÎk´@•F³¡nº‚å´Z»~Îí|nºï³ÛësE€Ây‘œn@~Ûïן›l¦bÓk}NrÙ«vîÀÆ(ºêCÖu€Tê>ÿji)wØUÆrº÷I÷ä¶1ÂazßcB¼Ã`UýËËËÌ@š÷t.^úû“»d‚}ä¹K^•?w,øÑ+לób-™|èòäEâ¹ô×-úÑK> Á§0£îg-ƒ`ñ'ˆŒ’ ×->Tç$ Åã’fržÖ‡ ±¸ýµùu61³º´ý·/Ä(7#ó)£¨\ôïBïð[©@­Zæ|Þ¥HTTôd=Þ²†“ö§‹Fm‘ŒïÒßy“YÑoxù.ûÇ¿m=o#ÚÏÈà¸|}6Rß½ƒï›Õ-Fi2).wBû‰¢ Þ‹· T l-·Û’Q Õýkv¡x‡. 0 ª‹"cÀùcõ}u8ùòBñE†«Ó8D©V× À ãêß7¬tÚ gÞ¹íjaÊÄÓ[ør8î%pssë•N•Y-ñ‹È¼{÷åæ&{Võڽ܄´°ªµœÏ`Ùã@lˆÿPØŠ6ڧ½æ–ò',ý±çäZ§R'¦H,ยRm“¨›D¤¨ñ®FGWwm}=( Màb *=0\rrr«ËÂ`4±ÊÛ™îwïí×kuº²] ~üŠ4©ÝÏJeMŸàkzc)Z>÷:@åÌ–óÜÁØ,¢-~(`ñÕð°`½)ù»ÙÆx§œ¢N—™w g¼ãÍBÿ¬‹­S,éÜÉ‘5/§Àu÷\Që×xºz955ê¼1JJZZ…ë³]R‘êêêH8«é>}Ô™ #«%xd©ÑÀxÁ4K.R]ÅH:|v îì\~ãùhf`¥Šã¡ÂÎGK§Oµê÷)Râ1ÿöK5É#T÷I¥-„ާJ–ïÉÚ°‹Ç®Å¡Ïq?³ßÞ¥ lô+AÁ Ú᎚¡ZÝ[Ëtx®wR²½îÇÙAŵT™^#/èóyµ—“•4ŒcY—ZRÂ(‘Ä­¼Òam½Œç+§ýþmÆs¹I5(©ªùþÛVØxô= Ozµí†h8¤·ÞyÁçäç‹åµþÃÁR(‹ºÓuB“ËGY“Æ&, rg b§úZÂ,…ЦksÔQò¦OŽ×†Ö­N3²´UÓ5¢Ò•?)Ï–˜è¶ÉÙuVBŸ,’oÁÇüüÊëo1fôÖÀ'§Å£¿×íãï°¬1õн߶ú]w—µÏo‹ûIÑóÊ: Á™×ª&tµe_?\]·^yƒÔ‚ª© ”“³sn]Ý,´«úéÓ'¨½®ý4OÍQÐߣ[àz€¬;á¼óf›ºl#ø˜_ò{oõ*!…«²œû è°Übhªt}á)R»Öä#esdCŠ›«Öv0½$MX“.EÁÈ£/•Óå­© #ˆç‘¤âù?·w‹JyÕü÷õ¶jÏûÉõ>'ßéʇH+³iXsmäÑäÒ¼Ð0¯Q^%PàJóøþánŽúñ0|I0ó¹Qó¿lmELÅ«šYß8ðñ-œÀe¶›ÓÕ辎,$;Liœ³RŸ<¦Üx_Vf=—¯‡•!ºUbá(D‘7`@!¤ÐÈ\5²¹+¹Ÿ=Ëeþí¿¬ú¶–1Unx)¢O@ î@ڽż ÁZr½ëhŽ%•ý׳!,å ùý'ÿ£áß&è«9)ª7&fñ—ò©6²æ&#å6Ìi–B‚AhMö‚EÒçèf±ýø…Ô¡q€õ… »Æ'社ö¥>€}6ø=SYz²{ÏU~Œ,ST;mwíQÙ½ªxz¬¢¶­Múa•è¿·iÔHauIÝvj$¨Ž3Fî7uÄöÚÆü×!p©õÖhÙ³÷9£/Öð*©îýÂsø’^äãOWsrà #vèÿì›Âbòh¾‘‹\vìr^ÌcmÔ‰p¹p½ |ƹd@àt®2*¼<1+ׄÎ_%±q€=3A¯ªÏUÔ~0oɺw¨HZ%9ô0›Nðïê|æŒJp$g;Û‘ão2¡Þ¸›‰Ï§›î»Ê™Ì!y"¶•h-}:2^gä2"ƒ‘J¼Ú ÛÇ`hTûh_0V®éÃßâ VB“%Žÿʬ.w ƒ½j!wÁÞÓÍ5bS®§$`˜5€É"ãM÷jÁœo_idŒ—6ÐÈå½µ¼t82k%ÿòÊëßЭrçu¿É–ôP>yw5ã³Æ8¥¾ŒÛôqtWèȲ÷–•6‘ yQµ*~ΊÑbH•Ý|³?‡xž,:?ª‚ÿwâ›Nåmnü†³£ôeðiÞ ú“l- ¸“ˆáR?„}ÎSTY¼Œ íæ1(¢nK2µPoÛè^Õ¶IãºîÎv‹3‚±ÿÛK‹­iüåýF¸ùÓí…ÜvVø'‰èƒ=” ’Á˜xàΞ£Æä€ÄÂs¹ŸÌ\u­F6ïV¨EÈ›>/Ë•=ÛDÊj½ó·ÍÁÈNÃ}¯üÍ Ò­›.™[Ýu†Xt°v~¥ÌÛ>ªp‡úàUÙ±RŸ I%¥b¶:…¦(;É£Hœ*¯“xM&J«'—Þh–#U2 V½hëü·@˜ÀÈD9e|®´Q÷nþû ùGîÙ~BÅš·ÆßÞst±®eLG¹ô–úÚï ó?®çéù¥Ž‡¿(úŸnÁ>1ek¨éCl΢ꭉ™a…¢rñ{zl:v¾¥—èåVÃwâ¹ ðÉåt´õ×¼É ”o(üqõ%ÿV™Ž—·V2›Êc„£ÒW/l¯6rŸ9]Ö䙣äqž\¥Š›Ð\ú)ëU±ðÿ„j6¶l&$¢Ã@øâÍGü«§ çLñº[h×Eu--¤ÞMßø=%|ñ¿ ”S—ÎÏ!dÞ”=õ'’?TS)ìa˜~¸3tQô{ƒYÀ2|×Ò'&p¡9ÎÚÖ’êQô{¬†uþÉüi•Ô½ø”™ÑâÊ¢i!S3Óº˜ÊäÇĘP=†‚ÆJØä¼K°ùðË£5m{Y?#Ôf‘­!Z.³ë%˜hp»V÷°úòåK °êPMS‘ä®K/ñ²Px—ÈõoZÒ€I a»ìî±²ÿ¦þ祢P”SÊGßøUi¿x×±Ã7šö¿wÓ*xòml7âÑB>îs4-+««™•=fU³Óîèýƒ¤ldÌ8Õ‡P2ºÍºE*º¤UQãÁ(ì',[V1~¯mÓ?€½eR´Ë7¼—OgZ@ßúíØÆé’­¤ß† ÑVj[×tÿÈá}(ôߊa¼|I,hkMR%ÝÖÖfÜûa¹ä%lpV>2¾[¢\ñ FD€ýÌ ª“’Iá…˜")|ŽJ”Ëÿê236þ»ªŸÕ©êß.ûÏëM}-¯“Ê÷åW=*ŠÊ ÒÊø¡2š;¡˜–W»¯gßj1.|ÄaYäRÏÏɘÖzÉÔßjCS"é¦B‘êyU®Hµ®!ÐòŸ¾÷Á¦Þ§Æ÷v—©&Å!IY%ËO!äšhÉ]$¸ÞªÈz¯†÷¤a;·jõÖ8Es7§R61AâÔP_›úyH…Í0VêÝcÚËðoÿuÎ)_œ”fѬ-¹ Kù»ïJԔϖtäÙÉï‘Àxƒ3‚ý,œ³½ ?$9äyâY´rëpWî† fÕk$/‡^ÿÇĪþYßo€6yÜ®g…Âí–§ÏM|§….³[P€Â9-ën‰‘ÞÕ¹!‘{ÌM@Õž`H!|»Î \Z_Í©ò¼÷´5À_ìÙX&Ó‹•P¨¸Q Z õ.¥âq9Èëb F ½}û¹=” Èv£_]:ÞTZI)[¹Ô€‚šZ\!Oªòy4˜±ªzý^ ‚Ÿ’’Àæ¼»jw©E„Á íI¡÷Ö=‘v¬aBj ŸÍݙƱk]dÓŽã…Õ¤ãBdhóÔÚb¯ÜÃ}á|š¢ÞVñëÍ‘¦¨RBá¨yuÉF›Œ‘äŸB1¼üÿ?Ç䔓8ísedeO‡„(xxÔ÷ëŽCöfsÀà5ÆîhÕ¹8“oSÖœÀ¾Ï(t¬Sw7íP¹Y±Exuy/¸ùm×ídPÓrXÎAv3lœ’S6ó˜LL –òdåÍ`^©ë¥ xrŽ©±Tæ€/öã@Øžö³r^é¸í¬\ðø_Ùöjïºoy?eSÇ#ŠCha–8yô„΄W­çA¥X8ÚŸÈuÓx“Ñí³5’µó{ªÔy¿þœDÞýgõ # 1ñ{h—AAA¡~FÍ_ì|¢Â\ÇYÓΪÁáhU Ÿ[iÁãþ}¿¨æSQ–ið½‰ú–uûßô v¶Ñ»Õà´Sf:XHè4¯ ~P"y-ajd<èîïw ˆe‹¡µ×¸w06+œ—2Ÿ.7ÍoMÅÍ}Ss6"¼Fä¥}ª¤‡|vï#8ì nµ†Ä:5¼Wj–Ï7xü{¾¡Ñæîæ2ŽÅT¡`¦¦¶6¯¬ì¬vžÖ\·t Úl‡ƒ‡§$'É’Š™³ˆ‘‹=¹ú]:0ZnªhÈ ðO—ðåõõN”¢†´´ô7[D.ÇÂð¯TÿÛÎòeóò/°˜ ƒ÷p¾ÚF=Ñ4ÐŽ°2Þɸª%Çùý¬í@Žl–$øæ¨æýÕåŒùBƒúíÕiʉ¼ž^úòÊJâN!éØÀ@¡z-íN¥Çý]‰JÁS” p¦·ÕÐQ¶áñ÷¤=§»÷=Ãëd!Û»\ò³·÷Æ÷™­|ú9ìµ½WbfŒ|aŽøaçôgêllmãí‰ ß%%%ÅHàÈ.ø9š¢Ø×Žh>JÚÍ¿žßÍPø2¯XO‡ßwüwÿU© õöÿG©Ù¯®¾~ $¥9"""©H¦1ÔlPj80þŸ¡.r?¥¢Q.@Ä $©ÿ·Ð»W®õ‚@ $ælf“)]dP+Șºã\†v‹ïÖ—Çø?~ +í뎢‚:Ò¡ >''§8zmOƒþ„œÑQ9,ߥمŒž1°¶w·×åsœ}ßÞ¿|#>ØCטïv}FiaaǨ/eÇÿ±ýRŠª$jØÞ4Þßîç%$®SØrü=Y|55àž íÓÌTZNDRÈ¢áਮüÎ$5‘ûüCP>Z‹®›Rj>h”Ç ÕàV›ä´ŽEJJšòD¥Ü$Êýî8Y±6¹fù*‹é85t‚ÚÄ.Öñ¡~%ìvþ{jdJˆŸß“ˆˆÈ„»q€ïrõ¥D2¯:´@P2pÔ·ëlCÉw'dòrrF'›CàGÊnl‘½½âQ11lJ§eÔ.g¿‡råórÕ… VF•*_ZÛíýý¢ÈH´›/*ލ&îÐ5l6|ÿÿµâM{‹úÚãütÂ{{"ëvÐüxºÖ±\1k(MH,œˆ˜¸\·d®h8ïý­D³ˆPnÎéû¶Œ_mr°©©©”TT111â#r ¹în6øý¥’yûwùß¿g1ìÇå9›Ô-Q¢€.“§P€M}×/%#OZYI£k¼‘ ½6Ô¨]½W`Â9䟓ìdë”Ås¦02”Ú{ÃÝ®v®ðâânˆàVÇÓgÏFw+ö¶éaÌ önø‰ÀÊCU@Ç7ň7Ã#R| wg•ΉŽPóÑÚúºh¸†óéîL¥¸›ù0N­&ØíÝyã™2Ó ÚÛÃPH9'¦ýDÇùDŒñ)·{¨ÀƒT~¼1à8ÿÑeË};Àps0Õy·|BNE%·ƒÀCïþr:]¢yꔿWéh Ä0«±0fccSf·%c>S!›ˆŠŠÊðÃw†¶*W»"vì‘ á’­iL.o§ éöª05¿rÞ9/šF5³v¯&¯{¤óÑùyã”—§ÆºÅJ‘ññTyc”96$zµ»z¥Sz˜¾B×¶¶”wïX-fÿ«ÙÛ»OâÛº¿¸ßyN’7¶Mïl TÀªÚ(XÈ~ïAË+(¬­®Êù/tttTÏ}#*3£„ÂçÏ®¶ÇÓù/߯™Ç¥Pˆ\iw÷çÓí ¶×àËš¶†9㎸%&z|ýØ–‹"ã¯ìâú­’VÐwrjÔ¢Û¸ùãGÞšveë ).y¡ð>Bá<àjøòg{#ˆ±–›»sl®­Ri±[W}:¼†hnZKX^ï„C«4ƒT³—Uø©ár:F"³f8;9©DJFöwêMjŒ/nÏ&úبE b-È­ôÚý†ZE•ƒKœ‰zD¶¤†ýÎ ©r=šÈh\\Ô‚wÅDDD ãâþVk#Ï뇢¨µµ•²ª·v'AÝ’’ÑÆqŒ²k0MúiovVø‰u Òzq_¬Û‘›Ïg»m’=ƒj+¡–ƒ¦œ|ÿwEÇ58®™ ÛW,kNq…•8‡JsÜÏTŸ²í@‚$°œÇþx2äègÅZî®Z¤»ú ÿp9 Z‘~S |y¨Ž™D «zt]ôÉþÀçZͰ?G­^oÜÿ[Äé)((µ% )! žÎÆ?äÖb³´sëv>§¸v|”±°Á?%#RÈ:N%=gíãí-œëŒ?22’×Ê¢ÕôYP„äáÄŸ“¯ƒ)ÐÁÅÕU½¶öv“ó½9QQÑáí±¼r*/]©þ?·ôoHqzëèè”9ddfšÜßÝB›ßy½Hì³ì}q,b999œv›a‚m5œ2¦oå+ÕbüÜ• £âââr§J •ï;‰à¬\:)º¤¤DNNn4åpbõ©NÙ™–±¼>Û…Š.ù yÝÐ öÕ€ÄÊÜE„ñÝÝtHÝ(ŽÀááaZÕèÜhJ¶gïU+̤ºAEê?eòû$ÉDN{ò®&¦ +&Mt1}Y-çó77ì7ßÉfŠ[‡ m}7 ,ýñƒÿþÜã>+Þ¢F¤¡¡ÜfT|:ö²R<#Ÿ#Ü™yF¼.×v݈Wüôcw»‚4ý¨í&¦¨*Ͷ© ”GŸ×Ó+pdvjbÏõ!O„—åíúNoëÐ$¡À™LFJ*¯ìHjÂU¸müôé0´­Ü3Sa>Bpwà—·cÄ(–ìG0>Ï4.³×Þ1˜¢õ´P^_oïï„„„ëÄ¡Ü:ë««ßÝ®N¬+rô…ݦÑ00â¡ ŸÊ‘%+‹¹^f<"ß§°{Ø.³¨¨(6.Î$.ÓXANî;P´Ì`rMU JU+-ÖœMœ‰Ï4ž6c=ÞÊJf}ôèQ«ùôwlÉ|𻂫ºÓ­þiV9Óg˜äÔþ ž˜˜¸…ïfÐl,7ªtŽ,ÙUçÎãl»Ðßô–àÂðWôObòø¯¯ã³áÊåó*ÇÌÍåÕRL,£LàvÊ=MÆ’wÜ Ê÷TwTGÇábríÑs<ÍtÞN=étp÷H—D CEEè9v¯? ïJà8NI ±]OèXXHVVV. CuXïÅrŸ+m/¢{ÓŽ9ScOeëà` ¡¡at¤Yga¾P(¾¼…b"tÊó?!RËÈH„Ûq›8õ«Ò¾x6&)))÷9 Õ¦Sß++(¼×¯6Lv¿¢Ðí=0nÓ‡R úë§eÃ¥/ 혪UV„;#Y(b""Ú ò6åœÁ èC…ý.ŸÐЭ´\0`³˜Õ¢«;x°FÚ<—²>£¦¦æ+‚V†ëÓ Me-­×¦êeåÕ]ÕÝõ­¬vµíП¦oxñ í…….{oЊK:žÖÏ ŸÃ·l^ òŸïš‘•UÚxwxº7LÀ—ÄÐ> ľòBƒ›²‰ ¥˜„„>ƒú@1¬/.6i*štCµ{¿5ùìððP{Áýš¦§¿ß O±Èï„jhê'ØÏùz—R€ÇëgÃbt‡;Ïr>™åš*ÊÏSì~{U|rbwv½ßÈÄÇÇw¶p7‘}ÆG¥p>ôŸ^€«„׿š® Qêó½Ã^òr¾ô?DÆeoÚ›¯ï¡###c3óRPî|³ã¡7³€<}Óñ|m™œHcfl•î"D-âïš¼öÛhÐ×AcuL TT íßùS'€ßûÙÚ*Ð0 àË®‚ -ž6yº3q¹žÜWÚ´œ|»wï8ÙŽéÛ'Á¬:¼Ï,蓯hkõˆ.‰ç[-)ešš×ö(ÐÔ5ÜX©Er³¤ A!HžžU+IÅ‘Ašë­ÕnÏ•§O}ÿØa±éA"'U»Á×TªqÙ¹¾¶x6Khò iii͆ÓE8Ùæ·e'1MbVÈ#º&”ˆÍË£2ËE¿^RÜT~]ˆxzÈü|'@;e`‘¾ “è ðœã^/ùlÛØ#}îo™šŠõñó+­«ãöša.kw0C²c$ýF„u:)° R$Jı5ÄÅŸY,4ƒà~Ÿ#· hñ¸àO`‰eý ÉpCóKAA¡TmCz¶¿ŠÏã¼H×ðÖȈö–äÅáˆ/!ÚSÂ(QBT»þÜŽ-õuvd“ò¸døß]œß„½==~ ‚}ãU^ÎÒ˜˜:ùl‰¬T‘"eÔ¯©),ÆØüiVyô,ðSpñTUUÝqürqqÑ·o§ÐøÿGŠd“›Õ˜µä;tHèº"wc1,3zºáÍŸúv¢Pýh¨­ìgii P¹ ¶ëâ¿g*Q q;ʲòúUà#[u^× T ÐøãYÍ‚§¬Œåu»bÚøå`mýNC#IZg¥˜åànJŒãåð6:e-~(Ç"“yÎÌãtß‚§8l77¿~þ ³ÛŸÇKöÉ0$§…¨/¬¸º:N™Ž_xŽ>2¦ócz\.eòGÕöG¸ ÙpðTíOÖ„s %äÛ¶VV¼øîod7ªAÖ_J¨ª¾ÃaªÇó?]÷~ìÇÒÚœ‹‹ °z¡ÃȲ‡.ˆ€åÃ’“5Ó½Qù…mKvU춆áÀX~ƒã tŽx"'úÐÐX¬Œœ¦Î¾>$ ­…“ZÆåsW³¼4ÜþçcÚþ?»“2†D`˜üA¬Fƒ¯ï–UåCÁxã9[ßtŒ¿Zp;ÇÈá%Ï Ró¨ö7rVÖñQBT~ìTè¨`€@hÒÕ)­ Ð^„ˆ‚"Š‘‘Ñjgœæ63äË;£òÖÕœ®ÞHÄy/ u§rJapQÏ/*ú4<<œÞzYÀÛÏgì›}0|GtuÉdÞà'/ߌ«ŠÜJçÈar¢ïîîþi»!©ÖàŠu{}ÞñùÁ#«Ýi–ÄbLð? o+ Êo11~²™£UAÅjjj&s´üÆØGðkÂ{Õ€ÁèŽVE¹0½­Å¼|ñb°@• DìÅÕ•ÎFâ gÈÊOÇ}‹ËËæ¹9<ð¢¶pR±Å­­'†††ùšItyr”Ï10ÓÑѱsr12¾`Œ *ÚÍ‘=8;k¿<Þ@Ú+¥400øHŽÆiÍ£¾ßãû ËóX*×ê£#vŽ¥ÎoÄð3Û;;ˆogüccc•Í]‚x*cŸ¥tíØpËJYÑÁ¿Ü˜êRH}ÃY¥Á•Ãå|Î1V0mȉ—“3.›%@³Ð$Ÿ[Ë|º,G:6.[‚‹âO\½ß¾²ýÞ  MNµn.jXüÝìõø7€CIIÉN˜ÙöhŽ8Ñ·Ÿö;㠰ߥ¼º/ü½ Ôk£989ô1è4z}‘ñºTÒÑ!Ú™¯çº>‘ºt††Ùä°;ÝH)oÎÐØ˜‚ІF¸yjRR$,F+Ŷ«$ÜJõZ‡bðºÃ<ˆ?¸¹¹¿Ëä0çH1âë†îæ+—*Λ üùó5Èñ\3¯Ô[¬–ýWgïÀl—YÆ oÇ7Ð¥e ô(¯çð;蛳&G¶W4:x™o:›oº›ï’ÍLÞb_ßõ ¼˜­Jàu‹óñõeLýØùðáÃIà½.ìŸúxXn>ÍÁÎþÄ(SŽ\7æÈ]6»Ó‰éD!—ã^B¿©ÕÕ‰ñx¹©â´§±¡¡¡’žŽ5oEŒÉ#ãj9îϯA^&¶¨hŸibs@÷tl|=»z€ÊÎï›Ë㨤ž]»K²Fµ1Þ6â~8IÝná ™Wèèmjêê±ññ8!!ë\¥ÉwfðM0zEEņ—ó˜`„­a5w V66:>>>cѵn׬Â$âiC?1håj¦r«ª¾3dÞ"©Ž½|ðàÐEÇ=Y’‰:àkWÿ{5âl‹d)¾üüüÉ”w^J…’±Y;.%nÊÊX¥ÅÅÚ1tš@R°Ú¬ ³ê¶?K;¿f~¿Ëp6yuuµÝê´ÒŽ´¾±¡¨ólwÓ—óeߎ+1„O„Wå&Ašˆßb¨ÛVÒWç¢ßIg³¿Õj~—öÏI3ۣѧH°¦fU£šÿ¯_ZÛÚ´¤ûÚqq¸r¸ØüÖ€N–F’’<[¾? ú°aMÃbÅz]/¼}}·G9œOŒêNÇUÙí6Q_¼xq`Bg4[iž•_¸ÇáîÆÉl¶ê9àm_™33jÎ:Û?·?ˆ™˜êÚÕóÏãÇÇ= {Mʱ98>¡ ú& ƒ1|mÓimoÿ¡ÙèÎBYjµÄOòæÍ2ì°ÏÖ+íÚC?>|g³ÄÿìÁ–ðßêêê¨[ÚBìk-)wÕoØÊfX¯è4‚1è~-,,Œ.1?°\e¿óÊùìwÎñM•"„¡$$$Mííð/üÿiñEzomÍ=¼$0 ì³Ï‡¨)=}}gê :³¼<=/6òf²îQ’ ÷Ÿ˜ššÖ]ïÕ^v<ÇÅ ^sku Ð¢±½¢cR7>1±à8± ˆêÆ7‹‘|Ïãë6¤Òüÿ,SºF"õÁ=çnG×VlÕ¥:-¾F”׋Ÿ`Ã]gR<´E–äí´Æ5aÁÅÅ…z°HÈÈŽw*̦'lWÈênEût{ìàààsQ°¸8ù<Þ¨G­ÿ+/7›uÙËÉ‡ÈæI¨ŠÌ‘ÓÑù©¬Ç,¸ìóLNM†fñ8õÏÏãCÂIŽÝÃ+¤XßaoÖ¿¨áê)°ŒççÀø¶ ð윺±¾ä6—ïmœþ~t4.o1i˜“õfæî¼ñ¾m­'& l¿îz”EŽî7!''333˜‘¥Ò-À«ÃËÆ%0œÂÓ;AaqqOÛ11uÉ))xÜ4;zóÌ]*a\çOÆ^¶fK§¬„ò- ¿9__ÛïòãÍ5 V~~{½8L@v Ò^£á;â?B…_¸žÑ4£Õ7hëû¸#º(y“uûaçTŽ‘‰±—d’ZkÝQ‡‡ï€~;hÃÐ< F2µ™X1±!#%ôÅ4à @eÚ`0å„MÙóiÑm߯F>‹ù:EM7t˜ÕïIØ[J¸xxöÝØÇó¹…â‚(àÕ;&”5ê>ûåäë˜efƒ™yõêÕ¯‰‰Êñk“ÞëßL ­–½Px›€}Ð65 Lö¸Ã¦¡½ÁíúÂæòò’žÍOüÍŠÐJLt´BuçÒÒÒWÿæýž×1=ϱ°ü¶dÛ 3U3m(u¾úë/ m år‡Ü—?þ¡Í4Á`~994`Jÿ} üôéS”õÄêÅZ°8 ˜(v&&¦ßsµ‹êw')¥Ü‚A˜_pÂÿñ¾}RDc‚£ˆ¸[9hb$›‡YXðR·§Çc¹c©ÒŠ‘õeLc·à‘”Sg5íþ¬jï˜7‡ˆóU+‘§¦¦0yœ™<»°g©6=6¶·Ÿ «2< =”A©ÂL9C² êWí¹3atþŒÊŸ4BÇÆÆ¦g`ðv¯ºØµàr¾ç“œL0;7Wl¿£@­\òORR’•ƒÃø–ÖGʨ¯^11`îÁd<‰‡ËõÁÎÎŽyvvvqo/¤+‚ì=mŒâôÂH|›0?ÿÇݧ@|75½míèØ) #$|0Wcï%Lâ òª•Þƒ\jž™‰mûŽ øé¢„üÌÙê>€EBzzÔÕÊöñÕËv·+»OÎο€úz䦨$€š†Æzo–Á‡?Ÿ›®ñ†pëg—³ÅÛó…ÍÜçÏŸ#<}ʬ½^'êÉþBcûu<‡í›ºúú¡ñõÞX¯ôôtÊ}ÎUö95 ):€Ò`¾ð6¹_ï‹÷#‹NIOÿÇÁÁ!ª‚Ø;¬ýk¿|ÔûH¯Óú•ÓÅ­§»{°ºÝÎ8’´´4XÝv0yž`"ˆž?õyøÙzŸB·»7ޱñö ‡Ïy`2¯½ÇÝ %_|`@ÀÅb{öÎÊ{ã«gnûìÈ`Û꜎À̯DHñ6&»ùÞŸßßTX.„Ä2Q @½ÀjÕ6pÀÚ®Ÿo=^ùšnò=Æàºx{:pwÁ<šÐÙG2Å€§ßæÐwšT-ë}€Œ%!nšœœ|±“¦Û´t<‚ã•Z!7V‘MN­V…Êåð»©7–IúãÇÏm+ Ý'«¬‰;`„ßÚÚªµÜê/Øv¿iëÉøh?¹þäY)Ο¦WeKNÓèŒà³º/Ù–e…ëJë˯•ê–-Ø÷1®àsSWbVÆü•ìÙñ±!îô“¥Es¸Ç–T“.O´w ž>é°0% $DLE…Ü»R½3ËÕÉÖ#XXÏÚw]x ábÅ}ÕÝ.—wxÊ[³[¹°|<Àçìçòò²Õɦ4 ÝÅå¶@»/I¨ÃäUUU¯éè¤ö€Ãc¶Hßíø0L-°ZQT7í8–¶~:S´¾½²‡ÙOÄÛŽúò¥W½ËùC.`_ð§þ># j2Ð h„‹‹ ̱W5Ââ9Ù5ÈEËË:“33À€ÿ.>Š(ùòå »íú3ß0X–Tr;Y²«gd$šÝæàƒëó}¡ZuÌßߓӎ\FVv'ŸiðæH–T‡Û?©¿–”0ò6šµ9‡GD@^0ºZÝ¢£S†@G˜Jèdê((¼ª««³ Ñ×Òz Ey"×#­z7ø}¨Áý¿kµý;ƒ£er› xB; ˜ŸÂ‹^ŸŽ¶½H[ᚨ™¿nD'¾áG[ ²Và蓃Á˜ÄàN+§Î°;^Ô-)IÐ@KZè”~)-:F^£¢yFºx¿Þð¨\P; ›ôItòþ@$±ÅîÃO˜.C!@ô=á @¨ Fc¹èzŒ±’xA ÿxªØ¿ÉLO‡Ö`²ÑÃ#Cí}§Úù”Ò` ©oãóB‰~`?/úS8¾;uû7 c¬å*H_ަȞu¿xê#¸[Z8¶j»|°Ô‚ 9ݺÔâ·ÃÈ=܉µ-nÆ®÷B–°õÎ_*ŸÃ 1í«˜8C-1‰í d) È)Ò=¾1Õp©«¥A½w¼âpµ:â¨+eA­7tN£Bþi¡Ën8äHÚyQŽzIÁ˜­gàhˆÒí2v[K¹.Èø† ²!á`E ÎŸcb~õzŒ²mfHÎ*Óñ½¢t0ÌåIÛäý;ÆôÇjKFC5_Íãêú{lÍK>§Œí3wltë³µ€¢ìÜûØäñ3Iv$¼}²ÿ¸©öÔˆø,f#Ô{gÅÓ”#æÿ.©ç`3.ÄYkçûÄ!'9œ ‡Â™+¼¾¥«¤‡ð\+>"øVnýíZ—eipì,Ç´îØn8ª.š(–dKd9ìäˆlÞ%BÝœÁ¡¨üqi@|  11½,..Æäsçn„šÂ…%%Û}1¬q¨Õ: dJ¼„‡½&#{ÌËË÷‚€ ˆfO¸ïœö”0­­áŒ*›µ§ &ýˆ…Bäj&À„ØŠæ`/›¾Hǧm"ÀicçºÇ_&K×9kü™±‘ n¯°ywæÔºéë£ÄEz–Gp¸igNÚV¸Yç Fƒ)œFX„ÞÌîmmmjBŸ>±ëèè„}ûöØzm |”ÊMÐaZ@ê àWQÁr /øàÀ öÙËë¨ýdÖÐVÛÛÏ–ütf*Ì;ûú>XXÐvwwŸŒG$'£ØÚÚvê1BÒöQE%·ro?y{Z! \Â%bâGÀµ{?yyá‚ôŽæÕ¯®_åÍgB*Èÿ]Ž€ò@8»:š›yýaö;–FÞÔ€%>ø´M;ü)ì³$òîHbkÚn|Šg÷z*òüÆ]IâÖ?ëvqpÄjVê÷¼ö^CCcs81šV½{£,/Çx$³¹¿ùHWi%%Ød…9Îx¾²Î——Ú`Î;írП s·° ­.|[:¸àb¯¤G4B”ŽÎóNÌB‡‚"ŠÝ’›¯ynñ,ºÂà§¥)Üw,>7²àì×Þ¨¯©©Ÿér³y;÷¿> fmm ÝÄäóõ.Ä$$ÿ0öÿ“RïdØ„…€„ÔöçÀìäx¡z ˆ #1€Ùj¯0Ÿ9‡zu^““#àqÚ5…¾lô¸§Üq‹^ÑÍ6¿‚¨¢Í©R²y皺Ãvœ›`Éò £ßi[ê½ufŲ3uåš´Ì-®Å¯‰Ó)#™¾¡þIp矷¯ŸSiÍM¿làg·Gý5?òÔ!IÁêèå¯éê½Ìyð¢öîwÄï«c“úEþ‘KFÕìÿ˜ ñFr||üÆÁWÇÔ_ΩuBTšRáíÑhÚIêÃaWÒטYió»,¢ðNþÛ±| äd)Úv®À,9E g‡ÙУdœ£“7h†„?¶ÙÍg÷H>ãÑøÙÒdç\™5ðäˆúÙš83Û‡·¢Ã›ÙÑmÃ9^6’. TõLmäN‘ƒe®3¸—'hQË à>>#¹šÐôv»>#$"z(""+«Ž !àCæããƒMStâóºfGL *ɯQ›ÌTЀHÌÀ½uv®*fa aуeÿ„xMA§°¢dÇ™ÿ»O{Çâ —£XÙžÞ£…;ÉŸö•ÞõYKjíC,"ß0²|ÇþØ5:˜)g_Îÿ¨ÜóéÄÛ4Ýeú‘úÓ®Q¢±ðïö9Z~M÷¶;Õ“.ÍÉ#ó«¿EÆ‹ôýQ÷de¹§® U™Kþ™yÖ¾>Üu…=ư^D+söWj[qunKÿ»ï;"…ö¼Y-!¢Y–aSÿÈÓy~ö+¥æÔzTþÇWW’Æ*¼7ï¡„¼½:Í‹¼ß±ÈÔï‰~GCÌÈø‹R£;Ì|ãHp͆e{èü¬xó“xVsÏØX,]ÝàŠál¬½$ÚáòÞ¡òHîÑZ¹Èmmš¦ï¶WBÓeÅà ÂÑ¡ÑNc½‡ùOn‘f®féq¾p<¦‡Æ6iËœ®òF•™@&à úcGÏj±É99®†P—œN:¹×gËÍ ûãÕÛ/á1pë¸í HNf¹ôWL¾|óãä³}¦­­= æ÷9¶™ŸØÓG±œ…š…H)»@;õÕkìYûº“Þë×Á=·×ç§…iyÏÿTɦæ½ýI$é®±Å^v½{ OUü÷¤0˜wȺ•·m n6‘?‚ÓÓ‰Bà,˜‰ˆ‰Ÿ£¡¥GÜÉ I'çÓí¥Ó1ˆÿU¶§ã7®®®”48Ĭ¬¯>|øå\BbâáZŒæòï©RÁ¶ñïôH¯ûdù‰h‹ì"ºGØCZb9ε֌AM:+ýª-zd6G 7UÇÛ´×eèŸ9_Äþ{sĸÏÓÃ7}5þÍLiŽ%ÆÅT¶e¦>ðü¿°¾”Íl…7æwߥë;ÿAr,jóÞE ýø?Û7ÙTýjž9°l6<]¤ÓYíüö1ol,º|ðë`;Z´ Ž’‘ÀO9ÕýGbÁë&Ï{•Ööˆáá‘qÓ_ùTm\paqŽ­·-D›MÔùßíq€ÊXH8žB^a³·-vícó&ÓŒêþÊXx,F(ÚÆb¾OiFÀ=ñâ¡¥åî%#))œeã­CÆ–$ND™.yåDŸê÷¼Å¬Î»ÅU[TÎíF:µ4Ôïc®q“íÞ6Ùê?–õ¯8%ú¦õËû ´ãçÍO„í½Ö3A¾¯#‘GõÖ=àw²´\ú¥¨ûmؾç ç÷ÌXf!¼¼óÙ[S*”ÀË×uSMÃÁ“ì:{‹Q•–nçÒ?¡f¿¨_û§±2aé°Ž†ýýø ~•”FC·bz&öòóýû_þ¾Eg‚âgD“U¬{Ò¾åö;Ukn?MIŸö²j0òc‹¾þ5+z,>5-–øï–½^#5ÉÖ3™¬Ú&ˆý´oư‡Ûë§ë²+,(D@ˆ;ƒ¨­-Á‡ BRÊÉ?€@y2³)_ýDSœûyü—a3楅´îÝÙ‚‹çë gv|9¡÷”-EɆoR–mIx é«=4O¢_‹þ5=õ÷w(ÕƒªŠ×ðÑÇF"Ât¬pŒœ0!ß_ÌXO‡õÈ…£RAnˆæÀÝN<Æ›·c´ÿì)ZØrÇ–JžwõþíëÅÅcßGꋾp¸•}üûCŠr«Fëâ[3¶ežx_ 5½¥0G½4©ñ5d¿vPÎØ;Ì€bE€ŠÀ©(åĈQô…§šCæÝv,õˆ ø5òùùgÕ¹«”´§eL?$°Ã\ô^ηI¿—ù´âCÞÖ2>÷¢á6•s<˜³ö a_{FŠÕñµ –Á‘ðHÀhÌ3­U²aºqKPäm–ðŠþ»#aé-4Ø"ûëÍÛñM–9D\¼’è ο;o„W Hï+ú`Ù é›ì^±7mØß&ú¿(~˜€õ8žµÏ–ò5¿ðH3ó³áÊÈ€B§ìÏbB¦ìW§Ñ%ë`X‘€¸Â $Œ6 ûv,0‰ÕbsÀÏN&R™â›`°)çê⸤„§tç‚X’­zoã²¼7>]ãxÈú  Ždc‚p鬥ùðn›o$2:ÆÈq“; hÞÿ43OL+eì¯ÿôì«1º}ý!ÎÁY·å½÷ ÿçqY+´·ìR³™<ä{0¬'Å}þ%ÏX÷M0œý›üư]§äóËŽ#`¿[ú;…´/îǵ°UrØ óoÔ•tl÷i¥Bš„³üæ§ÑRw(ŽR·L¹ƒñEƒ@‘Äï„í龦ù ®³cØr.Aö鴤Ȟç’Bæë}dÓ~Ÿ*gì„¶7àôòÚ¬€ƒ²gJJˆ‹£ï¼îˆØ¯W³DfêVß aõ÷7úÝpÉØ}*E¯ªi™ï мß4ÀByÐôeå3¯í4á"žáœ86Îl€7ó³ ¹à½6ìe¥ž‰wˆ0¶Š5~­öæ.©øïL1ÒôµOᥧ"©Ìš]E¥e,ï;ý n;û¼Ÿ¿>‚ì‘éy*åDŠºåãêVžiœ¡~—Ýç&L7`¦ôS“î$êÅÆAžaBgi‘&ÛÍ>}õmëç ²O)QÉÙÝŒ|~di¯%|'0.SnM¯FTÂ^ùÿ7èƒ{À*t^¾ÿåH¤4ßÜ¥˜žø¦Ü áW"€Etã§«m” º‰š2ƒI]ç=¬·ï|^Ü'dõÉnj!IÅk™š ÐW¬`pq~JºëÛQ-cªÏ8’øë7ÞšÊú !{'Ùá®ÏEíW …ZŠI‡Qú¨4kmhûaÏ) óî°Þ†\ߤêŸ!§D9þÿÀcX»Àí8\ŸXF´Ì»[K_Ü4dGßê00ã ü…ðåÐS(ŸS¥Dš”Q±7M·=t¤²”1À-CB¸É+÷úÔŠw·_äwË|K—¢ÑöO0ø¯*©ÍgŠ/SÃMµh_4q4ap©´¬í?^ûH–Þ•Ú/ð7 …Á hí_W.(ƒââòÉÒo:DÑvÍžaqZØð[º¤ ‰" L…^©LÇ¥ŽtŽ;WRGÖªñ*Þ[•¦ß{y3³=û)ç˪n&Ž÷„0ý `„^/¹æ=Û7CØ‘dÆ3Е{Ó²ŸWr8íᦥ/%ÛÁY91;úõßá«ÿdm±½ßè¦3}Fª¼FÆu’?½;m=B4½z iRH­èßá• "Ìö!+‰|5|¸ßÓHÞ¨Òi:ðYXå?¼êLŸ•­aL;)ý‹”òÎ; [”Oáké&û,\Á@&r–‚ššZXLŒá6=‚±‡‡¨[*ø+,™ÚK°oq‘ÆÛEQÕwûamEt&ò·›Ý½-"’ÞjÄ ˜iö*6H¼SOÁ¿rž|óŸ›Þ3=–ž‰©åLJÀÁ7Y?þ»vkÜÍFíó‡=£vJµJMi, œ:ÇÏøôÇ÷Åo0ˆ„Ò»Qùš·ðUÚU ycwÐÉçÓ© lÂ[†`äœlXæö®ÑL/‰ÚsCÌÁ ±Øçú¸â§}rkû›Ãk5µ;MVÏyÇwƨßGæ4Ó5™³ `¸|Üa½9”ö¸®®Nï©1üÙÞ\à\­#15uïhjXãPÛÏm );oKŸÁ3¢¥w‡%S¾ïºµ¡Gòªþø™ö¹ùÁÍ?( ܉lñ•ÛýºSOÕ½"[.ÙߦÞÝ;ßû…X!»ž=g?"BçûñS.ÿójêC}§§u‡Eóæßá«ê8q*,¢žþôž[à@¤1ßB¶çÿºµª³Ø^YÝÉ©ùÌEŠêŸú Ï÷êZÆŠoBV¬6 [[[W:[ŽÖz £ˆ.Tès>¯°{ûø,õÐ5z$ÿ§Ã*·‡àæçSÃ>çåQÑjÔ!Ô`y1£ˆ?ŠÄÈ{mÇHoMø¨Ot°ó¶ø])Në§K>ó!0»²~ïãØâÖ#¡x­ÉåOäK—´Â½="‘lÆ¿·ù|Þˆ{±!·†mŽÜ.‡õ››r!Xb£o]lÁ)(‘¾_n¡`âmvlõùŸ2û[“["¤í¤£Ä_.„ûÍ]†ç•kƒÔ[‹?ÞòDË [–®ò£jUAÉéL\.‚¥Ð`’]Wo€g-½%w L…jÕ/ønO^¢=…ƒ°F­Q‡©éz÷ŠVíkk«@—#2ŒÞb–Z¥ áx½ïŒZ½M,šº¹éË#mCC¿„„çÀoa¾?"sù)Jú1Vî,Û¬¶Œ‚äÝžX¾åÛÀ.ÇYX_o[÷bùÝ{5q ?Á¾×né«ÇèÑ=—Ò¾\äºå븷€Se2oà±F™_ëâ 0Éi¡¨õ†-ÇÉ΋Ö2Êõ$¡B>*Ú?0¥ZÁ`lº†‹‡\Ž{­w·×Kûû(0hãjq|C«\òz]ÎÄ$‚1B z•c‚²¡Øë»44q¤²-àþ%óÅ[Ñ•ÎCq“ÂUwHlÄðÿÖúït=´¶¶naye…ÁýæSb‚;«´Ÿò‘üÏR(ý„¾¢aÔnõfvϘZ»°£ÝÃu bDz4"§½ò¹u·úÂí+³‰¹aZl¬bïÕOûRÏÄZôû:^õ_Æq”€/ÞØÑû)Òùm#ò¦}þ »Û_\Ôºã’vp`½¹¹Ãú}ò˱ۖÈcB‰X™ÜöùTæ^™Ï<¿‡Èúq4êw‘æâà]訞ÍÍ=á倥‚Êiû‡ƒ¬p—« =~ü8«bø$>O±h. zzȳ4ÀZ'VWüÎMHµ17p_8 ¾<|R.úȃÐÙuüU…ÇU™C±Ñ÷Ï€‚°žkR} òxžÿÛÔãò¨?‘ áÉ“0)--ïãÏ'[Zßl¶ŒŽÊ¹ãÁ””â™Ý^`Öq ößÅ-¥`As<˜+Yòö_Öz‘”´‡“L`ÿÏfù«£ãñ~ý9þðð°Ý¸bÝ{MêWl ÞÌ’/ ¾0N½ ²þH…úf•á-©áÁî¾7 Ælb°\&_Œ?3ï-ùU†Ìü¸&ï£-’çùf`PÔdg“§gdÒÐ A…Íš\4 Œ “{ïQ*øltß}<3 <ï0ÎwE[(>ϯgttt“33iRɼì¶ëA’X!+vø´´´_¿~}ëîîÜÍè/àùý;æÅÅÅ[’Í ¶ë½_ÄßäE\qº{Ômå5.·—•.[Œå¢ÿji‘þøñc‘ùk–,™Ø[CQÚ·×÷s5öýýí»Ÿ?žZzæøf¡««ëàì¬ð^Ëh³.G~aCB—Fôu|õÇñæøt õútÕ?ëïös#×ȱ)1Žf@o§H¯÷ÛÿCì§K'MB\”¿çhœ[?ƒWàŸ5å5`h|zmÃÂZÿG­Õ]ýƒ¶¶öÁɉ€Á:Se`XM ¹<1 ßXΈã#Á_¼Ã|ÿ3I”QO½£*+cAÝ=1ti÷w˜ôZ°BõÚLYêWï©_­,µø±»ß°€‰ÄŽaˆ ´ð<+¢§§·P¬³»û×ÙîŒõÙoeñxÖ…Syµààùû¾I^·|©DNŸåe!¡ ×?éf‹|7}Z5>6ÊÁήÕM&L¢T÷©¸¿æ4*f–ºwGR‹ˆ4÷ų1hÿúÇõ ù1'Ãçþø{#ê>¢5]%;ê¶ÙNÇw˜.¼hûˆ­bÉNÀÙ M–]ºŒ>þ®üäsã5º¾ yÆX¯Ÿ(aëkDÓž-*Ä¿7´nL¿°=Y›dÛf ùµ"-£|Š»ØL ‹õï%Xsîù1;ñÕG’Kàk~IId›ƒÆûÛPMEëq?ÀÑ5utdYà #u=¬º‘gu@ÿ•Œc»xŽw³`¡iQš:(Ýù!Ý’Þ¶ÌŽ\ë¸_©[Àª¯ô¥Ôp`y#ÙcK›ÑéHÛý“ïæàQã@€¦PIiéP*Ûêú:¶zæÊñÕUo€ )ö;ã7¶@ú¼-Ò¨·ÚŸ¯ÇžP”¯;Y¸3‘t먱Ýè'§¦Î·V«ON¿…Ë(1\g-éXûÔ;omÎq#Mš¾ö`·+;ví¶ôOçsŽ—»“źP?†‚Â+OOϟΧ&Pwëç3–©RCƒÞï_ÀjBí€Å¾DEEQĤ9•'±ë÷îPQ}\’ À'‚dè‘…HªŒý•0ÆdÕ0P9216…bV+3jÐVIÚ &õŒŸ*B$Ã]¼Woè1ž r×±ÔY<ãb’õD0æ8îü#ÔG/.>AQ6,gõ¸xP³y_ooÊGÌ$¢B¬XqßÍM£ªêj¨4‚LÊWöqJ}˜Õö(Å'—ãCð“CYtNN±\yNâªé ó<Ûwj9rD´´ÈVvvzz$zŒX®nnöÛyU7z÷RV¸~ÿW§ÅßýmUM øPŸ£S´„„ïú“ðki½ă„Ÿœ‹9ÒŸû=6¶¹¹9µýzDˆPšøÔêAˆ¤h Ê£p+c'Ö#Ëž·1ÎAl€’V76ˆ¸AÇ¥û}J<‚_Ö³Vå~˹ð Áh¿Œ€×• ìÁÅ¡î;Ç}ZH« w|ð~ñ3i*DhG1ÙYë ÄAày°2ú Ú+k¦}eY¸ýY’É‘äá[°„ytßÞ´ÊÍJÿ J´OgNWVH‘¨A! Ï”ÀÓxƒ‰æ¯½®¯r:~ãéåu©+ï/ðŠŠêâòr+2J˜d-9 M["—#=HÌ“‰"AýÿCö$µã°ý4"r¿ý·i/2:ú! $ÏEN€Ãî´˜Vh¡ö®iÇó•+±·þ¿;ÿg«m«v±3%â}ƒ‚ž%^QÒ*’òòâ+i´yÂ!ÒÛoËñ6P)B¯c·YE€>•.Ñœˆˆ Ë¿·W¼µ½]çæâp¬îaÖˆäÛs%C=½×œœØ-¾Hy‡wI™ FVûf ’smç·/¬ æÕõ4iáFèw½˜Cž{GNdÃYp*eeðØÔp[˜Ä;ìªËúƒ-€ûS0»ÁæÕ¦#Ûñg=/жøs¬ú"JÍ«±$ÌC^òmãwœˆcl•‡ÿêÖºš„¡¡çÝbäC‹|q¸rsE¦ùŽ2¤©¸¤„¿Ñýö§Ó±A™ñHû&#T4"ièO­GG‡ˆ¤@Ñ Áüº«ËËâ3cÏÖ9½$“Jj•â»õø 5¸`‚@½iØŸð%>¶²÷b5B*,<\f×ÎMŠÎ×ðONNïþt1¼bø~°å¨? ‰÷BÿÿhP˜œžÞ6—2ŸQ>Tz4=$îïïÏ™ˆÛNÿòûR­>_‹vÀIÜÇ(SXHÞYˆ(-3©Ý¼Y`¼±µ1€vÚ‘³tBë]Dv¸{Åp°ë?Ë6Yã"ãqzê…À¤M{{{é]ÎÌ ·A#fh$ÑÔÊ¿6ØÍ÷hi=>s=>f0“¢ïsê,kÊ);ÿ·#þ“½ÓЉ†FS8©ØÁv^Ñ6·¦šÚ3!!¡ÄÀÖ17<†Ì äÚÚ„DÏa»_“ TÞ½‰ø²ÂNŽöTIIINyao®–Ál’þ{ì­m±öõÙîwÓW{ (0T›©}YÊ(þר£›?ªT |ß¾T&{ád@ÊËF蜄:Ð+ …jþ·×çiB¡øËt¨ØØÝ©CFvœ(˜ºQËŒ™‰èºtTT- j¡~á›»ë}xM¯^¥Ð·µ&eH0¥éØwÒ¹ãµwšÇÓ-©êw^®ÏØ^z8Ta¶»U7Å<ßþ?ñ´Â~[¤ŒeŽžïUÑ4ª¾P÷Îr[àÁùyÑ>ªjdmV •ÁÏçG€ÝÒÄ>á àõIà½"t6}ö°4šg;h…½îlÚôâj§(õ#ùÁaÁÊnå‚ïGòVÿ—d?­WÏ@Õ¨©|KϦþ¥fÄb'™ãhÛÃ{V{öàd#ÞÞÿÜlðÝ7ïÎT.íí…ø b@Í·7PD)Öí@®;ƒze+Ìg|‡‡e‚0æ)x “<nÐù„üTR§çC¨‹¯OQ#ÓÒöv@ Ýv¢zFì¿;47i´tq´ÀCm $wIbÏY µMA^ÖOp}uµ ”'±Ü¼Ë>OzV–"×Ãv,‡‡‡›ÓåT÷j€²ùùùÃâãßryn@i'çÕÖÖöéâ€j¸]yÎ*_p|~Þò¨µ#92Ò›V½æ@ ‘ËOQà Τ„EËÍåñ·ÈÈ`Ði¨¬©émÃ|ãÝ"QëY(̉òx; ³ì~OJ“±Å1¸šqêî5ã¥D7ÅZfçÞoïû`üà9)´邯؋vžà»Ë{–¡s[½bä2Ý@[™ul0Âm‰Èùò CpÍoq»?ç]4Ô}Ì©ÛÛmQ©Õ;G àˆmGÿ Vu!XYG M¡xýé“)÷ù*oÉÑal”ÌŒRèËGÛf'ªÛˆ6çôq;–®NwþÈp ô4Á`Ï·¯›Ü®«m aMb1|'4=æ"—ƹ¶tIÝ‘¥ãQqNT—»ŸÈÄ6 oBö ÿÓNA%½Ç+ ÉkJʧppp7<ýΠKoµøÖø¨!J‹?ˆ ñÊã|ÒÇb ÒþÇ?­–øO?*v4'ËǾ@úo*ßIÇ`Hüi½ó\0TW£—zå~½Ëf6]öE1$ñ¿óy¸Gaü X\\„Á¾s9Òº_,=Î099y†¦ë>>¾|•ò§0È“’jO•è¦ý$`eE?^¤©™ÓWKÎ Æ—Àíôâßê2¸mT‚˜ÓÓÓ6@8CEš|й%*…ü·o`Zg¿§Ø~c¾¢Óx¦©©™ž™Iôæ <ÔÔ­¦†ÛH§;Ýe 9_ ÀÔõr-FXTôH—g ðòõ@¶¶.Êß߸O¦B{Êj:N=^a® Þl%3£+~>›R”Šò¨IM]ýò80•‰ÃíŠy Ù˧>½~·-(7œï7òs/®¯­çªm³ºw)ÇN6¥_¡¢6©©©Mz¸¨*ˆe}}½„°]Ë*hNÜÜ­^¬•CpN!M,‰P³û%w"t@/9¼ý)ÓÖ=µîôñ쟃–¦… ¤×WVZ,úøîwŠK€ûˆ%j…¨ã 5ßuKD7tiA…q&/èëë‹“£1¶cÖÀfÒÄûôü-&ùÔ=Pƒ¥=jêÇNfl¤GM£&åýò·sü¿S¿ý±¥KCÏF8>¼€½¸»‹ô6~g0” ³s?q^ýö¼Ô?:£$Ñ©ðà2Þiµ¿K3°:ÊøæŸ¾•rœ¹ÅÜê¡¡É¿=Á¶àê¥ß­ÝÇ‘´¥`¿j2ÏT ]}N‹ 3{È{`ºŠGÞG‰ºÞvl.4òaêB?(¶˜ã\][#俯%p;y,“övØÒ .‡‘ýq€8žhš‚µÞ2ÇÍ@eÄ<y¤\¢oð…ЛŠÙâ‘¿eœÎÿ­¦ÿ5§%W‘ŸÌöËàÅ¥Â.é×·J„2¡«-ýs¿FSŸóÇ}Žþ4O’^­\ïÌRa1ÀëvƒÍÎÎB\ïîÌ÷ͨ.à¥; ÞËÕÑSLÕÂLýd`™Ü»™Áº£½zÅû¾ÇÔbºÌ:³ l¯¥øwú°Ÿö; òòò6C™OX‰C¦gG®ºW}âÙ¢6Èž9]Ð ¤ƒVL˜äE.Ç‹?;âɼx<.gÞ29JJ˜™’‰&ËÂ;d0{lãát×Ç'@{<ÇÇG†u øUWsG¶Þÿ ‡O"М¿ZZž¿|)«o⻆q Éì;’ЉéÿÏÞ·¸¼®U…-¦ã$/ž¼ÿþù½ò;r4¨‰°ÁÕ)âNG”ØYXìí†Äˆñ×ã7‰9šê>l>‡cüÖïß¿›0¡Ž|5Ú‰)Ar4þ?zð€øa¢ºrÈÊI»óé¶|oЛ“ÅÄfS2k›Þ5˜±˜#þñ+ìÙc&ÿü®×»•7ÇÚææÁUUì¸<ÎhUŸu2ÎãÔh;‚°˜~šNÐvê1>ÃçÆé ¦(±y`û9±àbç7⪿ @Øu·o~Æü­ þJ ÌL§ºÎqf¹ºIw5§“·¿õžßèëoð-’LäÔ6êʿؠU«ú¬Qïü…ÁàdT—%öGïGå÷A‰Œ»Êœ/£DI{ûú¬ïïÜÊL'$-¥¢ÝÜÜž„¦¤¼†5E–”ÒÙÙir.E‘ûÓrÔœ\tÁyŽPW-Gö[<#Ÿ°ÄKfónÆáè¿õTÚ…î1œEÀƒŽ°‚Ä úœ2í“ZzrÃtª$(o1WãóÎ ^H£¨íœBècÈ‚wò7·(FÖûÞÓWQ·¶²j`øú›ðO0iiOPP„ì옡ï—Gú š¿ ¬›Hnê…|{̵Ôf$¥—@Þºçx÷+# å5\,'3\}´ÃKï\5¯ºY¿wÂÁÿÓp$TŒ…#{ Ï^ƒ :ðIÃÈøB6S¼9’Bvqg'xœ|õÚhM>ÛuñO..iÀ¿B-XÓ•–¡Ÿäs;>Vÿ=CAÄÄT*h¯Pö¿vNrr¾€Ž¾1è¶?ƒÎèô±-0›Ä+—²³c‚Tj…šÿÙæ?¥Mm€ø2ˆ~h‡=…MŒâð q_˜Oå«úþOÞ·÷9óíabGà|ñÕ(ì1%†kìwÄñø½´°}OV|&Ù–Y%%þ쬙61Æ ~ðŸZýQ庒³3Çÿ½×aß½´ž÷ííz8í ÏF‡öë„3dŒ˜±Í&>Hä´÷ FªqØ €Øäº¿wÙ:àÜzttd"Ç,ý6Z]}½õÝ@ÕÖ¶¶f Aþ†X,[(OýmÓ4s&óò+í‚õhξ}ÙÒK ·É]‚$ˆûÛ{ƒ¬†ø2ËÍ ;o!¬Lø©?¶áú\ ìð7·œ=Aêˆõ÷ƒ‹g¡N“Çó4 !µ¬‰fôŸdaìH‡ò ¢‡Ì}ÿÏ û[£+ý_ÏJºßú"áX­v>~6‡ ñõÛZ‡ÝŸfSŒPS1X©22/ÞHÄÉå]aéB¶®+‚ÌúhU„‹k%Þ²¡Æý-—ŠNW8)ÔÏ€NuÇçrއ/ÅkuãBf>,,LˆÎÿ:»»ð!Q·Ô|U¡L:Å$?ê#êa4éQyïèpr¨ÒÆ?<…¥ÑPÿù’",Aøàá—øŸRDè1ÚzxèÅ’š‡¿Õ’™8>à®¶àÙHÄ uYp™ofFír¾GJEøXˆÑzYàæöÖßß_{ ‰'=#ãp5BêÅ«Wжºˆ¨(¿4šŒ¬¬é¾O9ìý·çTªÕ²`VŒ¨ó˱§Q,'Wð•fºaÒÝw¸înÇÔ¾DÄ÷_->ôÌF#‹Œ*.ÛµºÇK.Wˆ yŸØ¦­Èj0V–Úñ~'yéYº{¿ñ^Ã": u¹"À³Y«©­Íº1«Å&™k Z5a@UPáHg±éËäÔT1HS¨×2²wóúb%Tb†eË£;’„åK ¿ÚÚZãÞí3z î8í6aM%ú=“å¦óóóÌ–ó S¥†L&£ä0 ¥@}ùò%_£>®®®ÇmŠZ”%wUƒšˆ¸øóIÄ¥)zXl:1_ý÷,÷-ý;î BïìVóiF÷[ʹ…,)ð½â;ï5"éHy5­Õ¦_h!Eõâ‹÷Õö&ˆek2µä»³ f´øÝ„7Ætž×ÕK‹º[aØh¤) ¬nymwsK5#?Ê9EA v¨ÙÏFÇ’&ò5NK¿æÌ·>ZTïHñÊÉHú^±²¼ Y{èá€+V‚ÙæSd³$3W@:WV>~ÍÇGÒíÀ-vŽØöξ¾¶©),yy±`Eùûz—sAyyè@ò0++«l‡û€å伃%ºü‹êëës\·XT ^ÉËwuwóç)\bÉç>g Z­CQÅñÊ¡ nj_Gj䵋ʉݻê=ç7sf“Ø# kØhé$B½²$rö~,uóªvJÑ‘…'fu¬®ÿój°&€§O­0¤Ô#áWPmÛ yÛõ^ÊyÃF˜Vâ,팰ÝèWæü‡p»`yY'¿  ‡4šV½¦ˆDå2£ç;E†“?µq¹zËøxy“ C:ººOš€Í໿)•{¸x=DUþ~Áãžgc ™Œ›;!+Ù=n¾Þå%&¦ÒîÝY¢çM1æ3ÏÑÐþyëàÀ B.¸ÚÛvæ›ë³]’7o^<.½fêÈ… ÇaÇl®eÞFvÿйv0³ñ±Eó³yFAI~ÎÍÀÖñlY˜]ðIêOáZ.æWß¶þ¶§ *øÎ|d–ÊYeÒ2„<¬É=ÇÆ# iÃáÂe ¦þÒ.«îXéÍ"<0ÈDb6¶ÊY‘ž)¾>Âbb Ô¶W:@¼w ¥ ùé],¢öÊ’‡ø{üíÛ7ôuù{䀺õ»Ñƒ±?¼{÷.øŠÎts0U<ŽÙ?=D2ýÝBƒ[,Ÿ/Ðh¤””à›È¸ìoõôH°°°2Búúû Ç1Ù>ø$Dò÷ßÅõ-­åÜpŸ2k¢°7ò ï*¶nÄóÔ Xò_U¯<_ÿ˜5!4º#2o‹£!Ð"åGZÚáÁÁkÀ`)rÕÛÓäêêC?çØ˜P'¢UÜ9ü÷“BˆõïåÅüH, òXÎ'D_ø‹÷wÆ&*ÿvçŠ-Âçè®lѹ4ý@Ùæ#(æ7®µuêœ)뙜 }àšÀ‡Qyá¥6k¢ °NNô¦Jô3;¨®¨Ù°ƒ©Õk"v§—67…7ú§~j¿ÏÑu¿\Àž9Pjˆâ\Ÿd<’9Tçd ,Ÿÿׯo³Fb§¸‰üÈÍãÜàzI㌾*ÿ·k- b0·¦º:§@µRzʤÆ=‹ X(+«Ÿ&††Y¾~~y€wA<“ ½Š‡›{4;›¼<%å- æ³íëýÆ"_Ÿddäí…»36{¼™î¦Ã÷,œ‰’HOžHkzÜžbŸjžE¾ËÉYi–I),µ=÷í±]¦ ÔÂÉöXsûÞ\íÖXFnîò§B!¸© q3w§}*+Ù`\¿¡#ZP™šüiWW >ÜzЂó÷÷³šd]ÿù7·Š°@?›Naj|ƒ7Ûƒúh´&Zã¸:.Ÿ_I9" 9¹düо÷<Ö#ÙD¸iÌœ}¾æWš9ö‚ŸY-àt¢– 8Z͆ަ/b™ ‘U *ÔÂ÷¦€@cw»bþ8ÕЦ¦&Ñk”'OAþÓÑÑ9ìÏKÚñÁÀKMo°Yp`¬ža3V[×ÒÒ£å6ï½4ðs¿uuvjç+C.¶^cÀ´¨¾½;ŠŠ;ø&ýg ÄSÇL,·OÑ+bñ”?UØ7 ‰ñVîÄÿʃæLŒ¼g³¢ðÞ`4oÓþwœ°çOÚ’ÊJ2 ÷‡x>HÓcg†gF¹Ek^O57‹¡]ñ³ ÃÐÐP–±8;gäB¿'פ\ì3æ3xfl‰êCìl{{Çç¨ÿÎeš­ƒã«ë¬°3Eü>³MúÑÀÇëåë]Á»Ÿ¶cB‚i¿}Ú«Ì3sgøòæÎáDs"úz1Ràêé?TîzŒøŠé1 >uåkeè0RzffœÉÃÖŽŽøiøÇã͹÷Ô½MÕ:ÒÕ:¾O`/¿j4¾µµµõ`\ÕRþ°õÞØ÷ââÏ\Î~/ÍX6êüÈ÷za¯ 4Y¸p¾_aëÖ…ƒõµAb¥ùò«N ’³x;÷$׸¨s‚¥Áð@ Üä~utø1ö¯¨´\è'-Ïéâìréær#9ŸËfU8gLSSóÅ‹åÑÿ¨…åP¾;ú`'šo“J½ÿ†Y+4H0™S†O;9eߎo=œ}wq¹ ʰ-ÏÌ:ÆGh¶)G bÌ ¥À>•Ÿ™9à‡ÕÅö¯––@9k,6“Èq´ì ö$(Œ‡V¿0d›öø°"/GY{dÁÿuÚÑD ¾vA²½´àÑy=9éÎç¸  ¾•ðùEÞrl2ž©ç^Ö¾twdnnty™àFº¥‰=‰ò÷Bcr[ FDRR?˜S§õXCèpåÇÛ#S>€@X–€âtÜëÆ“Í$CŸx]CãÖH–íïIÀnä䯉ˆ<+ÌgJôºÂ)ù6p^SØRþõÕÙ<[dÇSnIù#phz1‘dåÖƒ‹Ó2bb4wsq¨³}¿¤Ÿ‚—õ } äã[eþ«àì8ÕsíAŠY3©ù3Ù–öžjJÏ¢G‰æåÖÅgß/³©7w ¾ßyç9+¦/-è%Úë‡qaú{÷1ËJÿ¡»Qþš„1ãK{W&öW•¨.7{víû!o.núžGÕ5Ú«¿{÷8fè‰!›§Î€=:=á–ÓˆÜ3Çÿx à’ZDÊÌg¢AvŽ”<ð‡ƒƒƒŽw.JÙ‚ž@à~AØßß.Žö×5} R©dàÕÇïºMY²»62O/wޙՕ3#.¿HiëRÝ;AòßMßðÍÝa”Í­­hÞMèñ @ÐhèGÄ› ‹¹¸ÿKŸIij²ì5ÖXk6"¯®÷Å?AD|$Ú]KúW¨lo7¸ÙöÛºž’‚P«Z!寰–¹Óç™!#ûö-%mbçAYMc -–ùL:æ–™³éOÛ>æïb+ŠˆšÄæÇ’ÿ]¿ ÝbÑéoÜˬj Ñ*‚Åôút;”Ý'´ÇùœÂG¾óÌO „$ɪÞu\ÌM ¼ð7@Ó{e»x‹´M×p*„µL½˜ËËËP­"M(ÔÈ/XUUdmlm©Ô„¸¸jV ãêo$ˆ((@¬IVZj®$k®¸çÔ–§ýø!,* UÜÿ}“^)þ07ææÉZdâåU‹/DöÓé„¢°u‡O!íÇÛÑœl1šΧßÇô"$ã®\‰)®mÙÜŸâ$û~ØoÔߤâ{ûî…?ÿèÃØÿ —ž¢›éçrRã Useš1•K­¹1¶‘Ôȸ X=%Ó5½ƒMÆŽ¢à—ššíãS’ÄõÆl#ÃÚOÀ@ç@Ïz´¬?}U]]Í}¹íÐ(ôtxôFRÈM—Q]¿–|“e¬°òÎëbÉ*Jx‘‘NŒõ_MK÷°µV|%&¿6'Ðbsø‘ö#=Ì1t±aï†f£Ã Dca7¬Ž gŸVr’SE™MÚäyÂ5M| Çª ©¤_n.PämYL¼ê‰FC#m7¿[û³þ(³\»NTÞb—(åë³±"pzÉ4«CRï'å…÷ÚˆpëͤW]ëÐõ0@$釸9= .àïÐÖ(ÃùMá(ŠH(€¬5GHH™Éü-2­(á  'ߎùÖWïì—îI6q=dG‡µ#XûVd®÷{Ai1$3°(W³vŠ+\h¯wâ ^å)M¡™%0+Íÿt¬lnn¿ßëWšêæPÁúO:ýH:mW¦Åë[Ù¾äj£$_ü­hÚë£NäºÚ¿3C­- ßXïˆl n0«ÞhfAÖàÓSBR’Xrl®÷ßžfÛ0¨2?­ Ò r3³ùÈ’K×mé‹,eúíäåe:^ñ®0­²Üjæ+mr¬’j¯©{©Úûñ;RøúçºÅ¼ ÂÖ_¾Ýô8Ø q×3áªrhÒê&–gÿÛÌ.'u‡Î£œ…x€`Û4žsóçá¾c†q -Í®•9E†MË`Hÿ€ÓˆEJV¤Ö þ¯”³£‡ñ¬æÐ3Ÿ¢ööG²PÀ?rKoµõó`áìÏ‘dçIyr<Öï„h1î; í˜'¤lŒ¾ŠÂ'ö°®O~Cò­Ž Ü!H>Nγxdª ·fC¬,Ég5×cÝ÷EèØ} !€n¬áï-$êÐqüÚ#ì"cýÿÞý(ÃT—à NIZ ±8ûÌÏùLphk˜°O›·¯ãÎt–È}þŒóC¶pa±ïÑð‰Ì«ÏIŒƒ¹aäpÛT„à(O—ï@¸lm{;*—ÊÈi‡Æb"Qjà%ZÕÖï ldí\žöéÑâÖèd –TR±4ÕFŒ˜·@‡ç/_¾ZÑ‚²bz[èëémdÐÎ\¶èó±?±m·Šÿ®Ü÷ðUõ§[µ[‡‚úòyõ†1ÛO¬¹7iÌó1[ÑäÝ aWŠ´±YO–ô·¬I‡©gÜå:.i!3¨¿Þ-âvnœ Oñ›£Æ.xý¯²Â J¸yƒw®åâZéJòÒ”ÎÖ¨ëÃÓ’€/áö–qÌ÷ûÏZ^©¨Ü%#&íbÿÆ ´0yîQ L¼WKe¤^Pe›ÀW@`f²õdèPΞÙ{±'*—›>¦Û¸ö‘ÞÝ0£ã¸ y¬[ÞlEU¹6`a&–¢ßßP£ÅÀh`¹ÒúûùÇ jÉ’ç1·ˆþúÆú¬:çCú]¬Ø´¦ô—A8²<ðÉwåŒùÒdåvÙÖó /GiWUŒªp&`s”2!ÞsÅ3.xÙ#)ÿ9€ôµ½M)߯Æ3ï _wá÷1®ª[µÃã„ç:Ï!(Þcìr)écuD±Oé9æå¾y‡*ea6йÀ9âaŽsÇP‹îáÑ¥øÂÿT @áYïÀ´GâëË ³½¯Gú‹Ž»$ß]°ª>>ê¡[Y[û`dDŽÃf! )s%/4©µ½=)ÑÃDIøÃÝÝ> –òp7®xÑ?hïŒ@›é[[]Gk=ž©ÍÒ©~:tÐØÁ<®¥Ÿµ4$Åo…hŒ+2†å¡<°q™~%¶ìT†³JÅêý°ÏÅ^Žï76êhðB²¿ÿG„nÇŒ¶Tã*…ñOÕ…#Zµ4öŸiÎDÿJÐ) Z'#ÜIÄa§—HÑšü(Ô ß9žò¥ú¿wwnšŸÇ'§ Ú^\Ô-›š™‰¡ÚÍ3éJšµbÒ¢O2¢œutKV)ˆîíí•9èœ:²•Ë£1e.//Ö¦¡Ì}vv¦g`ðcl¼1Ü’–ÒÐQÿxÅ[@V?|Ç8{†kØÐU¡‚Ñk/.oã)ǵ)«±è8woc¾nÁâóõ·¥!!ÿð-û áˆ4ÌXoþsâ$ˆ¯Ž/ú.:©´Ñ`¡ Fõ·Jde²}ᨒ ƒ¯geñšBík×]¤ìïõV§M/a“œªKÃübŸñ ìZH›B2 Vu RBÌÅõµíö(ÅHo#pÄ2×nnnSæ8ïÞ½ƒéÚ.ýò±1E-oU—wusk‹ û\T´¬¬¦T^β1\¤ÀÍË mþúþüI«°\ÔÑ!zþü9sƒQ]|ù;9…ÁV^hhHÙ¾G×ÁðQbG[k$øß'jÞqoL‡]ÒzP×5äzüëní‹#Y'‡Ž9ÙEm¬,»ôߩǥófœm—·ق親HïB«”9ëT€Ož}M‰;voøúÏ¢c—Ér"»‡ñíåå‹ÑþƒØGV,cÄ—Ž…—|ôk^¢á( wë8¸Õ\˜lÉïÙ•6†¼7ê2+¯+;ôø1èygÝÝ]d1Ó|v›ßHÄ ØÙ1Xºk°Â\5šZùa$ †º¥æÀ…>÷÷ g)ÞË>gg“û"㩬¸«©©)U˜a½÷}¦½Þ;Æ yŠ?ê Œø­Æ&åNòß°Ó>X)/—5ÒûšÖ,½$Ú|+…e–Üwk³–ŠS|t>{t× ‹ÔoYøÇñ€$ÚX͸6…×¢äUb6×hxîûEuAÝ ¬˜ÑàäÒ~HÓ¿b òŒÝ•i•äv¢¢-Ã'1£¥šÂÆ—’nï V®övøÒ«É7¦£÷®¿UK,­Ã5á²Ïžøü ˆ-'÷FWdr@K>YWÍîÁ¾¤$æSœvÿW¨t‘Í¢â÷Ê€‡Ø?Mu‚UÃnw÷X)ºYÂJî)=\]¿Ð%.Ï{ž6EüŽ—u¯8>ÕóÍÌF<¢Ýâ(» Ò<åh?h³=›È?v•g¡Ñþñÿbì/ ²Ü¶öq •FDRZ:E)¥»KDº»Á)ié’.饻»»Cºá[˽÷9ïyßóߟ1öî­>Ï}¯5ç¼®k­Ô,_nh«+|ÓO>-\=üðW| Þ_¯7ñeŽfÕ0Ь:ª4«Ò\oË ½I‡çx]³CÜ”hüd“ê-ŠYë²ï¡Òß­Ìó;#[ ÔÕÖœŒ0%dÑLtâC|!ƒ7š€JksÁ=TTªÇÞ——ÙæÁÖKR^héå?[w‡"O÷üG«&~?«ý£Æ²JLŠ8ÎqÅùón* S`KD—÷a}ûÐÊDfˆòà‘ý‹Ù†í,tÀñw×W=•_½ª®³¼?œlH®C½^J4Ðmi,þyŒßÄ‹3f ­®ÅÌo}øl=8Åw^Ø[§‹Ž¨½ë+¼~ô©4ýùþFÊKnªk¿xÚî~Ý}Ñ ®•½^°ˆ7˜Þ ¥ d}ÎðŠxxÀ.ƒÕ´Y|èV­¾48üÀ¾ÚùsZnñÁ·Õ™YV }ÝŠ zˆa5"+tàÌŒj¹ …¸ÈVE€•sXíáYõ]çò§@ÊþÞhœîÖ YÀ)ÁfÆ;Õmk²Å`FÎzÙ´ÓMi‹»î5y–ÓcJ˜cxøB~òã¦Ñð¯­È,쀑íŠÓ2Óƒ ‘‰Æ½0DôŸ’5SþÿäÈ|«§|yiÝL÷„`#9DÏ yv÷8ï–ƒ[˜zKzënzÏü)§Mò¡g eEÿu”ü_' t¹¦r¿Ï¶âx˜Ý/ßêêõ%ßy!øñ³’K@ £ž»q+çk¥z\_A‡„„ä-4°q3ÆamJ_ëû·`~¼ZniûîºøÞÞÞ./!¯©ÕAÈýgðÝ «¯.wÅ-'/¿{|lð{ö<àâr³}­Ô““•sýÅ$Ïll„ÿñc˜äõÌ ›—Ï„wz‹P|WX– ÷Ayy9“õâkù§#&þ3 öž'.s=µþ?y ÆAÊ#ïègÏlçëê>jÿ¾ÖXcŸFÝé–Š@‘/tÇÑÑñk|¼ûÀeõ~7 I½YŠ´‰G#&êÐÊÚOv6.޹īJ;_Ûa/á•»Ò§8i<îIÕuÂz‡R »ÊZOÀ°ÇWÌÇ”³¹¢þ,"ƒ+ þºfÂÏÂ;ž|'„Xw÷z:å33Ëî4=-Ý’IÛŸû€dtj†4í:÷Å¥¥ã!Ørþ*ïOAT¾Æ$Ao±’ÇÝ'8ŒZ‹õ^÷M'Jl›ƒH´؇–æædÏS#µàÙèCö¯±±@Étç×]µ7úbZdÔN”¸‘¶bäÕ\­tÇ-õr3‘h_4Ÿ©ú·µîêQ*Ž[ÑØãõkŸµ°ËÖ»óÂE-TT˜XXï¸Ó€€sCÄùy½zXE\ÌJ¤cg;鸟/5}íÚ:­s¸IåpÀh8­²qjäϾµQ,Ãbuᇌž$Ý—öá=;—þ])ÒèÇ[Ø9D¬¶îÃ1¯"½™çG¤l‰–t×м2”7£Uv#½44Å»ÖÏV V>+Ö2y\DñŸYoÞÇahliñί=ó‹çs9:€y8Îyá|c1Ê,žžvtqYXXÉÓ<=ÔW=`BAyìþs˜,sb‰xìB¦Ü‡M®/gfd<ôÊLξRh¸\‚ŸŠãi—ÓyÆr`câáË™¹+N<-•Zfšws¤ýüÅ×ËÃ4G–Á²ÒiU Ãúü¯þ‡NƒØVPPÇ%!ø‹ïÇ€~‡…¿kß¶&ÊŠÞµ…³T6Ô̵Ú+Yúuš‹WœÄ'⬻CiBŽL*¤©ÏНZiûtk¼¤¡¯/¸p‘Nâ€{VxAÃéj®¼¼<@XÖÚåU«LÚ¸,,,¤žk¦<ÏwØ!²°ØAîˆU¢ŠˆÙª3UÊU/ÊÏ/=ª#’‘#€O¯ëâââ÷î.) ßÇ7‹tï“v¬tn›®ü¼,Rf«Ž„xÝ>ýðûåW}G;ÛÆöÒïx–wiÜ,¾ÐU¢•¹>çùNó0­ÓHðIÛ_†- ±5&‚›|\°þÔû`ÁЇü³•³gÚ»½i7ò+9”«•'µ®¦b,_…1R#‹|*øÆe&£ðç˜Ëd8GÖd_·RµHßXDä³?¿vW[Û³Ë*D&>ûÃuE6)·Í‚–Á·3º²ók³¦»ºVã“äÃ_¯¬ H¶ðô ®¯eÅÆÆZ÷ìÏx(WÙ®%sóðd=?Ë8»:ßÉÆaРÒšj¥¤¢Ê~H([e¿•U{2ïŸv•o`N £í¼Fq>hý‰Ûwv³qEEÅË«”£õ!ñyL ŒA$bÇÄA+ww÷?J«ÚQöÔWäç¯kÉÞÜÍ:[ÊŽtÞ[=áRn§|Å®=ì©þyOk«Œ¦¦&-a~VÁ‘870Žwƒcï\–›iί”Ž´j@(Xw;žJ§¤ ÈËõxü͉ù¹iÅ'"SÎúÒR*̬I »ÿ~6ßôVˆ]é‹.Îp‰fL»V^^^ág²` G´%III×›üq$ÏaB9¹âPÂË!3eEu›¬3'Úó|ÃêÅÅw`ÑJ2227ìVeå«ÜÎ2'Ê,ò­MûÖ£ÙLèˆDâÊô»ð‡zž¿Pu})9š‹ÿ0"0ã*c½º»¥å•Ûr”Á pÚlm×]¯µXuEÚë*ãm×ò«,wÕ1§ü u÷({5Íñ¥¯•g±©‚詹áï’á¡Ò=s_S“pëi¡Ñù/$…S ¼³Bíñük°6G[Ê’ââÙ²10ÏÞ-›]ƒ—3–‘ùºv²q¬xÀûñ“óÉo»îX®u8Êv|t4h5¶­ü¶;ß j˜äÙ¯6‚ö•ùOfo±“eÃXÂ(Ä~zî¨èFøÜu´Øí÷ìK6&¦^Óëe WÅ6£~rl™…ùùÎf¸‚öÚºðeEÍ cÓ6!Ùd¦t¾Ó-=»†VN;£ÁõÀ)õ?´¬¤uzºvðMQQ|J#mȸÃmdи$«Ïîp*±r+ËØDÊ.Ô·,ùº°ç–ÌCDÁŠRµ\¥¡5[ýôu3*L–!Ÿ»% heÕÔÔŒè¾:„TrEŸZÚSGšÕ½!Ï›¹¼¼œ%’" ‚DþØíùC~eûçªC\u9›ÕÊa'`mML6¬ŒÊΚ•â %Ü~š”7éfî\çÕW?Ê)tÿ¡–¥%Ó« âT‡iÓ©Jì÷››¦ššâ%ÀÚ¯²ŒCCBddd2wóµ‘èèrúuGrT¯¯.¡bååõ¸>Ÿq½:]¹8Ÿ¹Ö*6ïXXwÖqÉURÏíØÛß¿õ³yÙCÏ8$4´£É£€ `§ ”­ çXTï"gbÞRV,QXëñ›ÏÊ 21YC€7éþ8ŒÑnÄ»»»ÅæS•õnŠp2œ_<í´BçA-(°= s÷èªQ©kžª´Ë¶ÖècÊyÍ"^Š;òÁXf·ªèÞq׃ïz#Y<ÐÔ,n#"îVd}<å³4|Ö ´µµ§Ñ? ü×åu§=|=ß¼*º´½dÌÃÊêÙðððÒ°4b¯aûÈAm)Ê^ÉŽp ªgÏ‚}||ðƒè…ýüüÊ7òªV§kx´ÝO)º»»MÇ ½`•Ãæ¦ÄL­=Qò÷…+Ýz=Ö66k3uüccc¹ÓÆ/•þìbÓ 6þ3S­ê×àA ªL¼Ñݧd›ÎÐ(ÇÇiõXÅqÂ_žøZH€£©g™Yšööì lëû"CJ×#ÃÒÄÌï^W†vac7Í7ù‹JKS13‡Ä;-‹ÄFS<ûÝ€ºÖ›t+ÁuÏw­lHtt;EøšÌÔ#/öâM‹ó†OLÞ®YÒ¥eÅàC7Ya³6Ž ‡i”îϵŸewwa³ñí˜å@Ë÷~¼ž±§ÜóçêlVHX8øëן³¿>Qç 7WïE§QÞkúvGäŸsD •¬ÖŸ&''ãrÛ¦nIòשø€ó«d {pX˜w8_æ*{I…}åf>èx`›)ëýÝ 6po¼NÖ™—Òü—¬´J9é銋Y–8w^ ÷µ‡ÿº¼Één øÚŠû<Ëg°Ëº••!ŸsXkëëϨ$æã‘€gÓ<}úôâl#ÿûröw<®«êWä‡Tþ#kVÑ8é,:PQIog¨Ä_[TT”Óò=ø fff1"õcÉA~¥RüJÞ†Ÿã{«{2ã¼s¤¾€(þ|òä üò…– tÀE`Î-œóY|®¬E Ä_Õv¥?1Ÿso¡žxrJJÇ¡nÞÔÏ·v÷÷ø{Çá”ÉõÁLÛõA_$×j-ÕgëÙ0Œ€¿ølµÍõå1‹N½'ôV;×ý.ؽhrø7dÀf;“¡@ž±°€ãŸUJŒÃ’©sÔ˪{éwÕ÷ô :8ˉ:þæ-qù7…ýaÐC\¤;œöqó-̈éðOWqšA‡ga òm*‡ÂŠ+vÊy¿ÆÇñÿÜýE„†ÊëÕ…Ç¡*kÛu3vÅ#“f¥epÈ¡JÀ0]68^b‚ÇjØû0|+GBDð¼Ùô÷›³€#LW;lOÅ4x£Þ¢ ÒS PcçŽ  ¥Œ£ ƒ€e¢‚h¼}òò"œDÇS€ø+«~º¿²º’‹"#q>!>œà˜~‘=t„üŸ ŽÀÂ<ðQî—g»sÞ$ó››y@BŽi³G˜L/€ùM@ÏÍoow»ìÔ´‘#AÅ´ LŒ¢¾¾^¥Ü’´Æù𦘔3`Ö]{K\W¼7nÜà=ž´5!&ר^L#Þ`­5«"2åÓC@þJ*Orìíí—ôµK û>Bùï°­ä?­kBþ†ZÐ(õ x¼ŽLCš(±øRXP Xúø`€‘¨þxs£´´ûª.#ïÃ-¤›u‚ç¶èû%á]‹1skk¢®®¼0aj¢{dþGWÇñ8ìõ‹3F…pû%Ã>"úß~áh»þÊM9nu—ìpÜB~õrTT¤ó„¼Ž_ö—ƒÃÛZƒÉ ÄÁi…~É¿{QŸ½m¼ dàëׯSu•¼+öw.h»7[çŽ$äP—’n* ·\^MÅ:9ÊZV,àûC!¶b—àv„÷g> ŠD {½zéWªjÝÎiø‚X xðØo2€Ô’ßùHÄCGä—q‡Çaû]ó¼'M«¸?u$>Ü«Jä˜Â‡f“åÁ¿[Ê? ÿ÷y³ðY[ceÒ﬋ÚE¢ãñ¾Êåd@þEk|DÒÙC} "§ ˜[7v—ÜU‰æ°üôéLÌås> 'oïîNf·zèljfÖa¦mB€ßž§Yõûˆá”¸B·æÖkhú%â B¬åæœÀ•'#áØ+ žÂ×—ûjŠ8ØC*W£ŽËÏN¶„â$×~}÷¶Áš6Ä·P?ùO&)LÜ\â_†“FóGXœöÞ»l>÷¦ŠSrú9§J~õ­Íë—aöÅŽñÇWHâÞ”àE (Ï7”×®ž»ýÌ=Q‡ïy`Ž1ŸŸ;à"AÄ]@$YÙÚ’spD^]ž‡ÆÅû0k?ø.Úvöq$b‚ºÊMÒÚšùùóç©ÄÆ%i÷F†›oeqóš^žl±bx´ÏŠÅ¢„4Îáü`˜ü¾$ ç ¥§!!ù_— 6ÖÉG’ Ïã@àÜk\r°5 ²:7éúw`öuQ§—ʲX¿wú<]¦Ì!„,±&$,Ãáé`­½ì>›ªé÷‡f´Sé=ÑúÜJË¿î¼Lüh¬ð´6*Õp0kC,$TI‘pgQWPÇ^t^^˜bå-)BºŸõËKáýÝkÞ%VÁ%²¾^<¯v]•áK¦áñK|“‡ÃG#úz4*cÆ'+~2Em3Ó|Þ}oG¾“›dSû­-‹”œ“vuR²0’ô°t]Û2—ÐG-e~;Ãf"d¦/K‘–R*ÖЙp/_ çª+S…úÎÍÍaáà`’H{£QÓÑ-@á=è\ ñ5/~FA¨í8çög([ÙÂèzˆâ_5 \Q¾wÈwº—7óÇlñׄý«4éˆB@Ä@\Œs˜†× ÀÍT¹±Š(¥ã5r퉉‰aWšl37§m°%åp²zi—:î³·žFçgþ›z˜ÖË¥%jôûË]º€m,5S»ÄV<3ë£>™Zû2×=ÉVÁ%ʯ‡q¾…ÍÐ*¨«é\š|S‘òܼ¹¤?}ùdJ¶/Aï0v|>-Ðãè…ÂÁ)â—&Š ì¥ˆwo±‹|_¼×Pÿ†‘Ðä%òÀ‹"ߢ Û'iTeiwlYÂWšú©tvãZOG¿Ž!KQ‹Ç±-á· íÅŠOš”d#ûœJöðIº˜QfÔ`_û˜{EiÐxä¾¾UB¾ë´uYZ8ôæpæ¶IöyLt?UjoØIŽIª9P½šs;p^µ¤”T Ñùï¹ד9ïX>—GñnGªòxƒÓ5.û€üî® dÇO›¾W@kh{\² ó^_ì§éyøùû«¼½3QjFÆÏŸþLeÞÜÜ„ým€ê[îŒÐýðÓ/™¹oF(ÀF²;$ˆÀZðÊÕ‰2ÆPJÉú7LoôôšvZÖúSý׸4hu³²h`¿=ø}™™™¬Ó“e™ååß‚ø¯¾‘x\ SQQ=!#s:R–\’¦õ÷f‚À{u²@§Vœ1©VXúW )° ‘ðAþ}Î"ÿ¢ªÂVѧõQoÔhX•”Ø:Â(ù­³³Ó9X"†ËF¿d\³Â:uÜm8r…AH×`ÃTxtØ“oûW¸#ÑîŒ6©ûö×çæŒ,¿ð’Áß·ÅrõBÇ\_¢VM –¹:ÚU%LŽÖ¾[z­îÑ«À¤¬èõÃà l2ÂoŠQZÚó™7ìÁøs‹g!12„ÁƧŠOÑà7™2˲կ¿ R.—ÖUd´9a$êj®;mºø. çËâbËÄ¢ôb¬ÈÀ¨/Ùµp|zŽ$8ñ¼‹ÈaòÏNuÃ\ƒ7 ~/3Ù°¥ãyÛQn‡Ý“rT‹`# Øl”.Xá´wó•v¯¥¤–?¡> ` NµoòÇa±ßTAPÊ×êL€ä[ ®ÂÇ@Ü $atÒÔ}ûNJJJqЙ_¿~Á”ב‰r+28B~s´à6’ÍÙÑ#:Ø\¨¿¥Ëã™W²XP²­¶Ï_¯gçCó˜b¤«š¨D äï,[Vë÷ªöî5êVšf6ñ ¤Iñ‰;=¥úÒï!‹#€“AÞ—•qT9ìPrrâÆIµ€ªZeOhªåì ØhªX-w3¥¯ørýÇ;÷á8RRR8Ê(íÒ¹&EÿÇÛ&dkkk\VC4 Õ[À2 Ëž1€ÇeM0ø\Žr”rF"¹¦*l¨€±R±³G<¢WƒW‹€2¢Ë¿í˜ˆq;?BÇUq:Ýñ‹w“ËÒëÈ1+ô*Ðm þÖ|øº-— Þ²âã1½AæNsè|OVð)fͯù¯ž»‚oö%cÛ µ ýü¶Ç6áÆ+ ÀçÙ¿Ûl—År³aJ NrHr€÷º9GVmîh*|KÚÜÔa¡…ö÷hûC®)/éEßÜl~>ÿ$elAQ±i,ÿ»ÄJÉs…NyL‘tá̳wÖÛ“¬&Ãxxx€¦S˜¾›øO.@—šgHÔµÜÈþã`¶^|]¬Fïvvð4üëDµËýGt?»ºô»¢ŸR/wÇ™Œ“ £ëœU³sè;:rÞÇaRTD!ân€ZPX˜,ÉÐØØø-^½Ê~i¦Ê¢öôóSù´Þ]QŒð1‘ÚîQ` í6”`ßʺ:~x[À{¾Y4XÇðõ¯cQœ½ý¤weó7'Êò¥òjdF*×NÂpèwìš(~v÷ÏÁë×Ùù…Y,¯ÁA…ÝëÓ˜Çlqlç = ÒØÅ#èH¹¹£QŸŸ¼Ìå€ÿ­;Îÿïš)UUX@â‹Iµ÷ ‰fW‚·N—Š3§ÞÐ5¬ ‚±ú÷MX'üôiæä~f›M~ûÿM©ä²YFÃÄlˆçsy-.¾ÐF•@NG÷¥/åÕL¯ f€úL­›‰›Yïg1ÝÜÞ=-eµé ±9EÁ±`d+qêÙ±á¹fÔêÉËõk}”ï©3Ð8^ÝlzYýaHDm8/\óGÖjrÉvÆïH6ÌÁ­êæ7¯èè&˜žÉT¥ˆHþ”qû‰ŸÆíؾÝ;¨‘ªŸ7ÞÏ>vŸÎ©ÖŠåZáZ9罋ÒãÔ}Œ†~ìnzEqüî08=ifÄœhŽZoçOÊËh0›«1a¢ÂðõÉ,**TRŠHË‘¡~c`>ÔÜׇ^wu–=삇‡§æF…|—ô±ç QÑ{$üyNYuGï4Là`Ù¾¾¾ÖŽŽOAA¨Ûuã4´´7§oÓ àâÖ¹˜˜øƒkØ êÐ\}Í?)‰t8Oó>v-! \?}B‚½\yãGÛÃÿá‡Mû»™ÀæöÂÄ ¬ad~×ÕÍ ö+R-Ò‡Ùš? úr–ó³¡%Ær^Mò.t$Tãó¼þ7uŒ5€žûnŒèî-¶Á6%“67þêáÛP ËL£T13š«ôxgdLJ ØÃÛ?_\=Dè•X¥˜üÉݨß/·-&t#ÙøàžÒÕw\Ï´Þ=(.$4øL4ä{ ²ðNÇßÙÍ'ï"@ dr>0¼¦Õ[|¹YÔƒFLž¢ajŠXT½ËN7 wIaç Ø¸ó.*ª·XêG€%p(&¦¼¯¦nöeIh(fêGƒx'D‡mð$·»øó”åänÚØì?J¨òòº# (8·°ð)1ñ±°0§ûÖÞ+7O²W°-­——×ïÃæÁLùgW®qÝÁÛ¨!ä¤ Ûy©‹5ÊM-- U‚[’"¶eC„›3uÚ3I¶b@¶oÒ1ssq 濾À|ùòåÉqÝõÕîX¡žÙ©‹Ò@,Æ_Ö%MgûBYž’˜ôI²Ë@²°?.®O ‰!ÂìÖVðÃ’ÝããWŠŠØ{ýcc a—c1›NØq<×|6d±TŒ…æAGGǘ&\ll˜—zr~ÞÐÔtG½Ì|hÐÉÉé0*éxÏ”]ÿ³‡÷ï ZZ2—Oð!##C?HµÜ’ôã§OpÖpƱ£“Û·ö€U  ˆŒ{rÇ…Ø·WÖÿÔÈáD!yž3²ë›±Ïã´GŽ·½] `¾áóºIÚrfx9ä“ñ‰¦£Ê·šL¯•G‘EŒ÷,¾¦Vð øIvñ” 4a²Ëc ýíÍ5qÈý«C}­˜æ¡†ä÷pÇ÷­NÚ—uw3ïQW•ê+ÔÜ]IðXgCÌêéïÇ›r†²PÛî ëø$³«¡áˆÈ¦¿·ÀB&ú+IÐûÍ»wž-Ä.€;–¹¡Uüý\˜UV’Õ à¹¬‰œ¼;,¢ñ›—?ÿ8Gåeª‹ÉÅ+ÒW³$EÕÒ¯´òäí¢Ü[ްíDí銬æÓÞ" ŽwÙúÄ?‹Ð/'l¬ÂÞì;h7‚øŽp’J¿úúІbþ8¾¹ü¾ï“u„ö} ‰ÑЧSá0m%Ýßä´_®û︋60Q6¢J«¯òÁuѸI.j|°´¶6–tNUC|žh#M~ó=ù ´k^1ïokðÊøU§è™=G™â3.Á˜µwn.ýÍ›7å2YÛÚÚ€|½-!!1»¸è¹5Qf²N.*>¸†ŽžžW‹@ªÜ¯¶¶{otuSJøÍÌJ:BÈç€X»KN^>I)»À°ïIë;f•Ÿ33$b©…|Œ·dÓ›Ã}ÿø3Ñû¨\t-~„á†Î7†õW`YÇ?¥§¨§]Tn\bÚ!_ÇIÐ=Ï¿}û1’òò›ze\\ûÎK¢L£lå|gg˜ûÇ\‹†Rþ& vÂàm-€*x/.¾ëŒå‘f˜°N¿ ÿOóR»GðÔÓÓó1xä½¥îôG>÷öÊ”WTÀQQQQp ˜˜½Ñà ÎdŸª’ä7Ãèn²<™J÷5®r [8Éæ4ïÐ ›³M_õÅǾ&òÄø•r +%//aDD„ 5–«–ú¡à`ÔëÛ¤·Û÷‡djôÔx \·Ôìn+ª—š¾̃ˆhnnîÃè¨Jë’µ$¼ò,1©ïîF‘’’¢f`æ~ž—ÝöZ5›(UjBÇLJåLߢ¢þt—+3'zÇŒ[JÿøÁ‰™ƒm¼Ð1Kž9´!c²!Å›^éæ³rÎx D´¯~ùZ+deéèëÞ®òvI¬ ¡Å†›šJ|ß.ƈ·þÌ)8÷úàÀV2ºfØ8ÛÝg\pn€ºÆó2aÃN¹eËhæ!¶²ERe¡Ú~|Æ#ÎGáÞWº.¿Êq,TgL€BbzóAr¬¡A0»¶ºš†v#£§ˆñvN†×ÚÛÙ ›››é²#O65 ÓRª««ç:ëêêÞ%µuÿáésõ £³æ´˜AJ÷«áØ1·‡iJš:Ç–Aù¯:{jcjÉ€+qÙ5>Ÿ cOæQÌ}tb· wQºÄ|ö|S—ËcD·•Ï•ÈE_ߨÆà µÎ¬¸ÛïÆzw>âJ°¾¯%$%–)((æ:ý>>F²t)dËÍX{òÄ|ºú&&f׎ˆhÈo ”u€ E€'ºó¾œ@ÔÌ$…¿ÌUjèíEó¸:¥:;ÜH’Þ*½¦ ¸ÓÝÝ-C6\ÀÕ•—\ôcd$`Üwtš¯{,2>›áÀ RËm†°‡© }ã´zB aLƳ¦•°×Z®è+ŠŽŽŸ‰>×èäFrŠ1N{~Hú^‘R)7ÛÉáeéÔ„¡”—æìë¯Ö22‚sãÆ 8‹@G‡4M:!0S>Ýx=_³ QPP:\ŒN½ôìYLÌ猀d”W‡xW º–ª«©!ÛØØ ¼¯¨àb·˜~@BB\š•@°Õú††$¹ÌÙTeee(ŇkȧڰM¨‚¢â–ñ-%%%\{Ó˜£¶¿ãQ€ÌLFsx(vùÅÄVX*ŸÞÔï×çO%ÙŸmù û?Ò¹8Ùv»C±enƒåmîaRê§Oÿ´Þ ¸p‰á¡öT[[ºM~Øp¸ó#:•÷Àa·Þô% ¿–”lúüfÀ^hÆæ~ÌZ6KÍó€õ¿”“Ã`7}ÇÛG³Þûð៥V$nOJµxìuоª½ý2ÍÑzí“C¯öÑ—â±ãNØCÆ[ šŸ0Î070."°ÈN³(Ð`ƒpŒN@p¿Dí!##£ëÙZ:3óM×Ý&œ“ß ¨:ÆÆ~ðÍ€e”»ž2÷÷÷?Å`7‡£7S€¿Â©-**¸_æ€iíÔ]ÿ þdðgg߬ÝáÐñt)’@3*C.2‰ÆæfL…·€ûøùõK¼Áõßœ}KœÐû<2-È8¶¸H_]åëQËe<κCG ³`þÙ]ú[ƒNqEmˆUëa ŒA"a·®€K@’œ|S__¡B#ðÊÏæfD„×îðXР;¶"¥­P6€tàâá±E1X { <&#»•_s„…ìÕ½À¦lNG >#ŽÇámëWR„÷ Þ¨ð³]õ­ÅúÒäeì&÷$‘Ÿ7’>G}ÁÜk!á¢OóÕåûÃÙWÊ!ïëò,…® _õ£¦}¢¬¤²ü›ˆŒ¥ªû¸œ¢ªðŽ>6×ÿgŽX¢ÓÔøë™$ÈÏœÁcþ²öóü NV·´±¹…ðíÛ·©rF%ììÍÀÆß¼yÓ»ÞÖ˜•Eƒ‹‹Ëª¢\% "!NCcãm„Dš¾* àq-Ùê ›¦Ux)))8è«É——¼h÷#,—\ã\;¹¾¬ßÉ .²L½ý퀽ñû”àÃäUic‡X òJªÍY ]j*XŽìQNü`©Aú¬p–·àI,Ÿ‹Íðn« ÖKÈÉ))Á‘‘HÀÍNNOÖ777e¨{¾G» b&#C¾Ö½÷xXb’­–ªªjt¡@Òû¸8Íìf Àn#H",Ï””4Éκôý;ùö©0ýÛ^ÅúPq"îN¡·%j³ÍŠv o'ÒdÖû2"okÉ|縺º:Cùàcû³M>k?ÿw[ôõ»§fÃzÂðÇ®ŸŠ¨©0Ø×ûæ¦HÏV9t'óÖS%^ggE²ûÛb{¼cñ 755õ‹—/oÐÐаÚÕÖÖÞ}ð@ÈÞž]*ŽûŽ´´4Æëâââl¥m¡TºG›c­ííJJšÝؘ˜wïìê*pÚ׋Œ$#'J× ¦{Áž­éÒ#›[¯miªl1“+}à [ÎkßÉÈ[ô+éfàæV›!E Fù¶må ‹ZÜ÷­åiòkMr Q;Aœ”á|fNŒ(oðN¿èqmƒ{_™ßÜÐÑw|£â0Zn·"Xo2ŠñÎt Æ/¤¤P444~Øo©Áy-‰ÿÅñ‚ˆùfÿÃiuCuYÃÛ‹3¹Så|þ|û´ÿŠÙJl1ÎÅæüì¦/Ÿw>\÷òñ¹[}±×ÑÕœ"—‰FHø°’¿øüÜ€4¿W0:ÿ@oh°Œç"Ž9ù‹õ'//ú{¿;(«<|öa(qû‡=˧KmçUF™'O²~ñaú‚÷~Ío®<ùÍõÝ;ä¶‚òÔ• ÷•¶µÊÃíéuw÷;ëC?¬6PhG¶' ¼àRq³É>¼@w¸ƒú`+ésñ•ÍÁT!#'ÁÄÏÎî»JŸªÚ›°œ¼ó_ÿôOàÚàáßfáTKq4ù¼§)ACÛëaÊøÀ±Ö!Å 5êâÏ+é?|ãYØÒTã=YËä›d·ôŽß½%Á‘׸ôy8\=Ò¤RÏØwŠ6ô¾Ñà†¯7¡lƒÞ§i³•ƒ‘™°8»¾Svü"+†Lãgªv;)Þëò=—;yZúýi|Œv6ßï…¢{ßÝ“<íPALæ“å"Ú®»Âäää“E èFè/–9¼8«)qôKEü ‚žŠQiVâ'ʵÁ·‘¤_®¨ä>Q…“=îù7Àž?_y Ÿk[I»¿Þz7À‚Yzæ=Ú!Ƈ‰L)Ækµ@²„å$ÞëGÄ®í7{<½wPŸž“âbÎûÔVŸSAÂEŸžNå‰P;îüvÇ<è•B ø4–L‹ÒåΪsáùˆS,˜¾½©ÙžYêã‚c~þˆ¹‘›Ó+¯ðÝðïòª*¹¬+}}}£¹Eû§kíUCÈ¡íÝB|ðHŽRÓ±€zÿ=ÌËÇ××HqüM8P„6Kkk8ƒªäìt-=avvö=L Ü*› ŒlĪ»:3‰Ñ"IîþúÇÝo'¾¦Ø÷˜ "R&ͺ“E3]¨®øýsOü/ÇgÍxA…Ÿä—™J6#oRþQVåW¼*~qÓéV YøŒfÁ ŒE[}M¯¯~¢4þ|-P¢vnqó–à=7 ÙŸm(]==¨ 2qz\ñ~üøñ÷vÕκëf0Ù+ËùÆ{p |º”°»ûóîx>ÿ þ+\ ®r7n988¼ÓÓÓ9Ý[úÆe“¦Ä¯££³ÓÂR 1~¸›srqýêêÚBÉCì»ÆHN2¨¾“Á"“©¸‡¢bx­`Ò¹Œ]0: FŽŒ]æ’‘_³þ]Ž"{?è1d¢!–æVC_Æwa/m Œòð” zŽ…kVzuæß6¯I`û¬’cÄ—º–Q ½ç[—æÆ%Y°S«dUàÈ<âÚSfã@ J(ïÓ¤â)((üìÜ<š1³ó`fñìï—;ØÃúQDDä°=×(&*ê^”¢¼¼<ásW\²WƒëT|½Q„±!‰ŠeÎÂãœ@ 8 \/_¾tØßCŸê°·lÀ. E÷ì:ëèÚ†ÄóÄü7Ö3q¯Ž‰_•dˆ°Ñè ⾘9ab ³< "ˆ…¢&%»„#‘ÿtó{zzC[[fYò¹0*/s‡ÔŒÎ$º î-…Ì;Bl2ç=‘>Û·´™Ý)W”½“²­y€ó˜æéÓ{@锆——÷‡íZ?¢ò1ÛÁážø²²ìÕñ“OKÃÅôŒŒ-ž÷0eÔÔü^~Z—¨*/G@¨´]û¨¬í† ïŸû @-×6Sh÷O°{Ëö”÷›ÏûƒµfE¶¼•©ÆÃÉꎯ Ùè”úC~‹ùåÉlý;:2÷RòD2*U²=&{-z¡KÞ½wÏhȪ©©)öõ÷óøLEåÑ‚á•øŸ§®8b ùªy«{ ÂÛ¥(íe”ó4^ÚÚ²çk^sìꮯªÒjE}þü¹µ««†vèâÇÿ–3¾]1&C#ñ®±€Ã,ƒsYàY‘ÛùQ í3 »GÇËjŽèÁ75;¯€SO™·dóåväô‡šÓ娱‘‘eddÞûù]oY™›‚u4¹zU£Ö¼14¼ À•B<È1|ÓóFLéD°×'-ü¿Ï6ògÂO|¸1ÿ‰ài[6¶ (Ëû/éÔ›2N™«Ñ¶¾ {” 9#°$ä²¾ SJ`{p@„WV6ÇŠN€¬G'$Ì1Zù/QEàîmDÄ·3µn£e$@vÞ@_ÕÚÙ ‹ß¾†„|Ôv?…•¡&Ìi°{¹Z òÜÜа„õõõÑføÎAz.‡8]ŽèfáéÈN$ ©>¶ðœ&ä!¼9\z--ýÊØ˜¦öt™¶±?TZè­WýÞÜÓÁ,[ÌÍ[@AZAK)GÖ¹Ãq.ν¼¼t®.NÁ7Œèîˆñf+çNH t¦·ÎÃã ?qÏósÓOf&rqZuîq¿ÐJ>’;þ‚à€_PwYÇ@¬œ÷ÊÒÒÙ£:Uh¤¯ÿO4bKÐcaa! m{ ùº‹­ÁBà1#@›X.‘"d4„Ek.BNh%0Õç™Ù8+ø­´¾rćøp„RjûZbbÈ"AÄIo“‹öãóüÒ†Ö\M<Ø-²èD1¬­­‡¶çyi0´tÇñ<{׊†ðs®Á[VVöÃ3ÝfVžçv¦cüÞ´&¬¿7P:~vý Å7C—Â.ü 0UšìÒ…²õZèïç"i„뉉,ó ''.8ã¼æ|Ö -þ–@¢yi>/ØIVŒ,_4:nlÀÇÄÎ>,̾d*LAvÙÞÞˆÿäï/žbWi¼zã…‹‹ ÂøÈ**$Á½a|¼¼Ûަýù1#Ù_]Qaù C¥Nl³Õ7悈Q‚.æ%É—¦µR&/?ëz lª¤5œVùw7ÏÎ ÊÐ$ƒžx\>gV°–‰C"!乑©©–[ã%J*0—––ㆺž(nn~iòÇá¨âÌïÚTÂߨ£X`*åË—vÑ&€Êzròf¹3 žæÃÁ=ùWU;µ‚ ƽÕÕ-²¯ëÜÞÞ^† MàÅÝ!!„üîÕm=t°x£dº£µÕ°ØmÊ·'"#§:®›™ƒ£L+îÃËKuˆÊ-ç>¦Å†…}/)#ŸR·–ßõÐJÿêðýîÈA æýs«'ÁDÀóPù/ øù¥Ç;‹ÍÌ¡M…rþÙî윜Ær«°½[e°€ÍñhÌ`wÒ¦g.RÛ½Ï8&!!èâÂU£ÒöÌ=A¾ÿ™Ãö䣲>Å®xN6ýžø `£..®“‘º+¯«Š±K+ü|óŠL>›í;ÎnÑÖùÖbý[Þ¿OET oÃS‘´LÌx€íB L6Cá}~>ãÍ[·‚ãâù50€,Èf2L‹‰G«Aðú£™ž×tõ´MNÆpX@»°ånþëHŽ;íKyGGbac—8™^õ×Ûì6ÄÚ| ØôõåÑìÛ¹gãæ-4ø”ït1¶Ý÷æ= BÎåýõàŸ\€>>—¿ ЬÆà­Ðm÷«Sx¨&mÝÅ‚ÇüÁa#‡Çî7ÞWWóB®wçÎî2#ßÊKZîsò _®™œÔ€÷8ŒZ¦V›&âñ ò)¬X‡Ž¤ò¥Õâ!ã;NØ$=iÂÑžm@å÷ÌÌ|úˆ^Í“Ï冮×ââÆé@¹žXJÄóâ3öK­¿8݇g" R[-4“ÒÐ ó9²æ­¯ ë\ž¶¶µ}ÈΦ}BF¶ b-G¹Á[þ³Ñ7™[ÊÆûò{¯ƒ‘cÜBR5Uj(((Éú½·W0™ŒŒ,îmy‚—·7‹·ŒŒ,íí‡8OögínÊÆ ‘ge§\VcL­Ø[êÁƒ‘5H|€ƒeGbïÎ7g1ÝeЬœÎU§7NQ jF©Ñññ·Ý±\ÑT¢õÒü—·‘$yÙÙÙ!EøY_ìzFFFïÁH™…v®/s‰Z€°ÿ£—”¡¿ÀïÖ*C(uÿ:°4ý ür`I_;–~ÖGЫ³^zøýQZ ¯æÊfܳí4¬­™'§¦tHWh666RæK FoèN”šÁl  í™€©Å)˜¾‘¢” `é/à1Ÿ<~üÂf+† ÒH ð××ÊvTsÑ4uÀ©éè„€|v;Ö„6¶({¤{tžœc[& ;ÌSPPœ€5މ}}Û<'ŽÍä‘TÂó??dBû)"ý_ä]ª#x-•ʶf®¯4ªìªªª:®¥FFo–¥™šš~im}­QëŠ7’§Ù`àÖì+Dä¶×FÅ öÚ;êÛ×€u§)òGñµ Å^»eÔÊzÝgH~ÝÇ®®Ð[“ùg{vþöxxG¥¡©É¦LfoÏ^ñÃÐi¬®¥þ;,<|àò·çnÜñNËQJ`6333Ä[8lBx{8-Ûá_”è{Y¥ë)3!Ñ X]ÓÔÌl¼¬.8ÜÓ3‚Ïÿï[99¹ßŒuo¦«€sÃ#b Ào °ðÝ_H$†ó<ö›¸ðÏ]ÏŒLL´ü¾O”‘_ñüùõ…ëõå1¤$üK‘¶nJùZ° þ{ZÚ|ŒEí/°íþ€Ö”mþ!y+«‚å—/ûó/I4ßÏŸ›<¶c[û8Y¼q­Y!zL{UaG÷‡‰?‰›ªvÂTTTŒÞ£Í¯þHÌçl¨U2T=@ìûàÏ*eæšþã€é]_¬ðÏmn>000ÈѬR ÃF€W¨[[YXŠœ žŸ­¦DûVS%¸ÂaH–––?‰xXÍØ-¦¿Øm kÖYíM‚séÀÍ2%q«}·`IŸ¿ÿ À4š*í6`:dŸ`ÙÕZGÈÊ¢ù£Ûö"ÓÝò®Ãû-µòòò?#ÔëÜùæççX=Ü $ÆÃÉ ‡ÝO<Ä Ÿr¶Z Ë_„|ÑŽ'J–6æ¹…„rÛ’gÂG ¡—=J î2ÚþCeråœØ½.ß‘ö#Ø4¤©D¸Ç˜]_G¦¥¥íŒå*úE'™™ ÛXL?ߎev5š>#ó Ðwž?ì0¸;6.ótŠ&øýûw-uRÏåT¹ÌßS3sˆ ec@ðÌÅêîî,(LSC?€Eàî’ç„;u×φ“¥ª¯¯Î£ÙÞº;49{:1sõ966Vi+ÀÐÂèœl¥k»…|z ‡þ>áÕrZÂÌÒhˆ#òH<ò¹ñÕÝ[ÊÊÊ]ë ËyÒS£€5ÀB³¸ R­¼||%Ïý‡Ý(ÈÉm}žgnÁ$П[¦dl <"ÓÁÌ„*Öèå.êù3,_:+g•œSí=Ö>tÔE¤ìé“a~w€7®#Ú@…Ìn$PßàÐ;tkV2yü3'3)Á±Ñå‚B• ”×6‡”µ…kDsˆ.ëpÄ@-TÙë&øE´õ–oU%Lè{÷îaÍñfQñV›¡’—@RÅ/y9¹ -AeÆ=ü·>‘d…š}]a³R¼ž¯QñquÕpqiéWK ’»»{t¥ûå™ÑÕû,«õÁLg#¥˜õ[ï•H€‹ãDè½8üçhÓNTTÔÇ×·ÏIãÏ%u`^M¡Y†…™ †M¢’b’\Ó½‚Ê/ô•/åÆ k.Sødì²ñ•™iðÍϰÑÑ“Ú>bbc{Bh´nl€nÜñå…¤µºŒ žƒÏk‡¿íÎíÛ/’dÞì-¶A†ÄÌÂí8Ri›oÍp4¯3$99t`ÿH?F¨­­ (e¤§r½Á ¾£ãþ½{÷@0w¨ð2@£ê$>|€ S>}vmÍ·µµñÜ$c2l Q‘~×G$ØÄ”âõ×}IXñ `­ 7]_ɸ/pÀæ‰pÿÄžôx\ÝÒÖÖ–ˆãV\yŽðf{²&RJÅóú® ¤/¢6²vvrvall öç…7AÉÉOþ2ªJL M~›2Õhš_deçžgg›_ >+yUðsé¤ù˜µûRæ Õ£ƒ†ìØ7†õê?ìðÔqçõB}õÙE˜vF2¥x~TªZâw<ŒÀû`Ìj›Ã0öq]’4ù<-2Û·ôjç (ýùܲi ë§§µ`¶RrFÆkàG"‘ÏìŒlš>lJÇÌŒ>'7ˆÆ÷Lï,-QT:ì0y¡ ((+ûûøÜ[^¦Två¢ëÅÚrŸÔS.k§æ8þGAúòò2éÒuî5¿®Ö#L‚´9"¢ ÅR1lVº±#"""ý5«ìï #Y¸Ì]'á¨ðg€ÇXÍþ¼!9•«^*7¾¿qËó¯õ„ŽN"cÈ8· ˜¦OPÎåù1ø,Ä€ Æå°YîDNvØ™~;^l4¿ÜÃ4!‡I%…þ1ݵ‚kÂ(˜x,ƒ”< 2r¿ëÔ£ “cÙª´ƒµW+WÍÒD‚S>3îç’òWK‘Úž¡¡¡iyì@(&ÉP³.JË:ãš3ÔóN]8©¨^¥×µ5ÃaÛ¹œì 7wåXoF¼£¨ãí÷ð䫸äÄÑÑÅe¦ÓcÐ|4ýgT’šð,áI??( `òˆd ;ìÆš»žî|c2MMW š– ÃnP~øaÄ'‰S2‚1Ìé*$›'Ÿ¢™õã]¶¹.ó=šÈ‚x?Þ¹ÿˆuÔü×Ç;dȦÀnE¼'³Ÿî¢¢Zì:XÿÆïñ|rr’É~S%.ŠiÀÒ`î,,p<[K‡ô¨ØÑôÉÍ?ùD˜&mížž·¿päõáh»¢ƒ@h†§•® ˆ J@f~*(xЬÀùÐ… žboZx}‘QÚ¬5xé<”¥[¬ç¨~f*Å|‡˜˜0›¸îË‘«J‹™Z•bCt8f¬±QˆN«Z¥u4.GÂtÛÆdlZ¥7€:Ã!€ðãã÷ïäp†ˆ£ßX0€‚ƒsàâÞ>~b̨á&i;3ö ^~%K}1’ZÓúóë'Y’#mBÿý"´¯âz\»ã3к¨˜ØÙE„…ïtvvâÉ,Ùå`uÌû3Þ 1Û—/_{¾ÿï'«X·Ðe]æÞ=ésóþCßÿü¬N‡…†ÞRWWr[4äwYÝåC@(rkÛâ„D“‘¼èãÿ‘ò ÓWhôäü|¦o,~ôÌÄðÜÔrOŒiÿ‚·¿Ò»Bâ∰ïx¢ý!?·[‚H,lƒš–ÿO²ã8Ý0A½ß%s»~&^Ñsƒ'Ô(·|)/%&&bpL“`evç®ð@‹Öj!"[Û"¢µµÌÓš©^õ4;Þÿøêÿ¦¥s·wº8f ƒ9G?ÞTPP0ŠŒˆ(ÍÒ¶±±³;á1 -k¸õnß¾ Œ^7°)« 0˜µ›y˜';OP'A8ó 5TK3†ÿ=4Êù¿îÆáÏT(,y¢ª^²W@|~ÿþ­tŒH°žŸmm÷bØÍêÁc°Ùiiiý(+k9Ý_QŸ´PQÁ]îI@åà€µÙJéº4î¾gšôð_óÆ»Ÿ¹þþ…DO£–^¹~dܨi¡ŸœyCkŠýî'J•uº'ý²ŽŽœtôô #$Ñû®²‹Z¦+@ó£ý+ke7Ž›—‘‘¡ìºëOÞášü.6 ]Íûyš/Ž#¦BnP=9ȤÛy䉶:VS+HJ¤ª¦–ü㇌ÅÂñöÁÚÚР7€‘nT3Çú¬édìÜ…—è—¸øÓWùñÒ³}5pÚ¼ü…É6Ê×åv¦¹n‰ãÈWWº¡uq: iùõ<•u’ÿÙ>T‡»õîf% ×Ìû¿~ýzõÇe¨»* s¦?!Óì©–FÀh·ûy2BY{{¡G‘™Y—•q‹â „Ù²¥<1)©æÉ ›à¨(_ÀaVì›…€`\‚ßAßÍFI ÑÂÂBHDäíïÙ_ަ¿§¦þêë+è»2fš‡ NÎÈËk†3Rññá­ Â{¹L!´ù…RQŒêêêÆC4¸‚!ä@qÂtç—²²è@;=ÓkÇz@È)Ãâ.&† ´øÓžh2ÙC0BÖ^쉫¨¨<¦£{+¡Y¸ÑÙ>ýµß@°ƒ=CݼÿÜÚŽ8:;—nHÎm'ˆ3#Äjoæî0mߟʭL>‰K/½Œ_õ=èaHbÚG¤Cb« LH '.» -pŒ÷Ní9 ìÿóÔYÐì§òi ØÏä¢å®§ÖE—ùZ5øÀ^KJ ¿|yƒR2ú6Nç·g·`m ì0- á÷qÝ5€²ÆB½„¿uo©Ù°d’7@Èqº™¦,x{yAÅðZT0ØúݱcJ‘~ò,½ÿ¦ m G†]ÿÅ(=’2$ÔMñdÊ<žÜ” Yõ#P¶X, šÄâÛ °$­ø—’\I.* ¨ˆÝÙÕ—ö¾¾ñúןÉWeÿE/FŸÁ³Á„ë *°@ê~)1™Ÿ¹¾*Ks ±Ú—‚4í~n†…ƒÃÁ3 ŒNÛ‡v ñÁ °Uþó•Ú¢ƒäþ ²TŠ¡ãyOáh=gçJ}ÜÙÙ7]Wj•„3±•—˜è–îÚ÷B>>;üÊS‰ËÆo”ð(¿Zwäéô!ƒÐ+¶îX®Ol&ÃoFò4A0× € ""0={öA,µ¦rpt—Ã|ò=X<©:I  QµH`@OÃßYûñéÁLcJî‡Ìó£².Ï+·w¶£ QXV|ÆÂƶäg“œ¶5Û.ôw(}R™ƒc"y0$A^ª|ý_Ï©ìwMÝMâê¼™m—)’Uä»/œ$såÏ‘®õA Ó¤g£) €ì…›ßÉÉé÷î„„4 rQ€¬¸{—Tæoáf(\–›KÏ Qžø”Š‚‚”’RÄä P=’ªI2?»»¥äó¢^*ÎÔº•œÁÑFþT•Ú%Ž=aaXqÖD˜%aãçïýmüð°#Š\ŽÀ±oð®²ïI0<8ñ.,<ü×İj/­­™§=®ÝbŸ»á—––ÂñR”Òñ_Ö×M'ËÑápx¨ÿáÒÛµþÔ®@>ËÙe;â@Ãÿ«èò1.©ì+ßþ~]™mt´9ö‰Ëf91#ãnRRÒ7@ÿ[0_5&ÎDH·×h .qq•@"·r'ù\«ë8q> _¿T¤«´ÌŠã“£ Æk†¦ß§;WæNû]óÙ?:MØ+­û/¡÷éîl¡RSS™88, =þ¯¿×á™VšT\VfÂߪ2€€ã&Âßy1ëûN—‡#PÁ×Ö¬´})##“}vÝç3++ÂÉ|v—öçÏŸé/Wþ¹ÕˆC@€'å¾££* R 4šä×P†ãgÇÕ$ïÆÎ( ¤¡ôBÔorRcˆ|_­ç{¤ž>~~RRROž=“]\Yñ'ñ¸m]²¾Áêqžm3¾4®Í­lrnaX=Vdà¿1’ïßóü\ÂÆ˜–nót 3ŸÐÓKrrr‚ö{²öki'î㪻Á ó­ã²NEj3¤ÁhÉbšôì¼þ­W*+ºR6ŠbŒ&-yÿMÅýWq§y—Ô322ruº¦ D>óBT¹§ËQdP>ÝTl4ÐØÃÁvœ l ÍêÇÇÕÀòßÔ³÷ÒÁaë¿ÊÂ"% ¼äs1Wÿc‰0ò{VVV¿÷öŒÛt„$ÿ¾!³‘Çü›Pxƒ0&"‚ø…„%ØWÏÔÔáüx§|¿%G ¶ 08ˆåJÒÜLFêù3ñå'4LÌO})¯LÎ$EE€S3Ó;)ö+:?Æ/»ä’ƒUëÿ—då:º” –ñü”}å%©Ì[qðRå!ûÃk…Ž+aœÇðÒ8iGfõùîVÙ ¬…'*–.Ò­8ZŽÖ¤|£KSšþMB}Æ£ýýý—7þ\v¼ûaoÏN.&ŒËjø5í꟫¯gÛÛÛføºòV%ï‚~ŒãG¯—•!!ØnÕ)ÄîŠËôæ}ÚæÜ\_Öî6UYÅ—ƒ ×.—7xY»i~Q+-Ã/©«s¿H¬L<—² &=9ó2W‰ ˆ2FT„ˆˆ¯‘(þ‰w5Ù|VúΗnÞöDƒ‰¡»ºº2Ù,Kò:¢«!\X]õÑö¸TÌî‹ÇPY®–3@¾ÆÄ¨çwCËó?xlÿ¦¸ÈC< _«ÄyÆG±¯ÉûCŽy2¸Ú10°Ÿ×\ä¸ûàl}è‘‘o“?Î̮϶ð…vØ?«Ç½ñ  ¦éRqÓÓaùó  Ÿ’’HÃÄ(`¿vjZÚ†Õ"8ð ^€ÈñçvÔíì ê‘²8 û –þO²›]¹NK poS3³½ŽGžŸ?×OO~)!ñ%-W-·9YØÿqhÛÀr¨ÃÅ$ùa)'!!á×èèñÅo]Ftå8[þ•7’ZAüç´ß…Y>I8 ÀÁ7ººPæÚ4ábʦ¦t°¸Z•¥•Ufwy5Û`°Ï.¯#S¥ÃŠƒƒÃ&…_ ѲTáÏk ‚I= ìÒÇ Æ«<ú#BÕüâB¥SfË¿hHÓmzç¥ÅJTGÆ'áR¬¨Û“È2#㎭¸S§gdP¨YÕV¸\>œÂÌÏÌæIcpÃèÝx7vbn~^nÇ……å`cDZþ0ªª* ÓËìŒå’Ͼü毩˜xüôñ¹ 0b¾7I0ì_@B|tÚ_6Zo¨¯G*…ƒ£L¿…Ž‘qÄyÙjxòÄŽ‚’ò QG$ãˆi†fQÖï½¥ŽhÖtZ¥œ‰à=Õ~ÿ 5*Öï¯S9sÇ>핌h p IH<€‰õÀƒbyPtttÒØÍhÿ1Ùd«ìä§´Ö¿bm~à™¾Ç£ñ×´°ÙlkºS«èS³]«[ñ^¿ ‡i¾ž|1ârÐ5å`±ïh½ê³K®V~žAþ·¡NW9X¼30¯“Üfõµí[À0x”Ô•–BžT\ŒpßS-÷sp°lµ¤ú?ù@.ÚÚÚú¬”~ˆµ®‡CÊÑgãfvDuGe!ä‹‹‹/(C‡x‚*Í47zÛþà@ˆ^@œ›Ým!iYêˆìK—&!äw'Då;@ƒg椂ŸYGµ%z_Â"JàÝlvOŸ>…ižhj-lØŸ€HœÛÚêê²ü-32\z¾?¢çî½{/ÕÔ¢—çv† ³Ý¹S€˜ö/¬Žq||ë]Šó:¡±àÌ9í›íÞ‡AŒ«#® jYÙ·¯.'E–4ÿ.Ë™xÊÝ/,¾ÝÇá0£9â2_ÒÑuØæÒ-ä`êôü•ƒ] jðl.÷8ˆˆç3¢ëÈÆ?¹x,ú¹¸ð¦ª^ýï >—é+„> ‹;Øý{cb’}ÄÓr¤è–bHWÀX´ö‹®íÈš·O+²ÊZZĈpŸòððÀñ©?·°ÒÃÃÚä¦d`b‰RQßRaЪöA'1ªªª*ãüÇl’ñy¢¦£tÀå6¢”×LpÝ»×?00·¸hûj¡D‘?®oaÿ<éü–¦Îà§§’<1ñnUsg ê®±/qî¡^ Ý>6ÿî-RâßÙòvÕ†µtõöåÁòy2Oúk:¬qUÊ×ÒÜñ¾Îί­”&¦!”E>í‰åÂDB%n<;ÜPç‹ÿs¢åEiàöwý®ª‘Ê9Ž‚zÀXÈî3SïÖ„®÷¿ Š¢¢"0RA!¡Ûííí¬ùÇ3$€ê©Ô@¦PL‰@DD´»‘_gÜ—ŒûÈWÙoE× öªt–ÚnâÝ͹gk_œ9–…ÞR ê{nTÐ'HÜ~¥ë²0®Já×SbÚ#ÜŸÞÃNº:Ée´ò@TÈA*?Ô°Zbxñï€`I*ð`u?ƒmƒÚ&Úþÿ2“]Çÿ–aÏ>ZšÛlºuBÿÌiïبªª Ó윸º¹‡„|øøh}}ýèÈ  T,ä;îç[ÿ”ø|$/µ v¸ç”prbâ H‡:Ö­NÐ??¿ÕåÙ!bIÛ7»¡<‹­Éðá©r+ÁÎh6quõû&&&èhhÃÄRãÀ½š“¬ìláë«Ka™¯h>=ü×ÛSꀔitSðPT ?Yá¿~ª¡¡á™™™ 'Òg¥ÕÚ4%f———ëçÓþ³o›[[M n”{ûûMi’1ž555iyÛ3×÷q°¤ŸŸ~4"þã¸×F[’²™%¸ls¡ÀÊ7ÏÜÜÜoÜvY­]]ØÚn‡á°5x&lZ% aüY ºïz žD¹VÿÍÃTy¬ 4.}žvl‘Û5JÏG¥Ùb’7©ÂûÿRö¯•×xn÷ªïDÞ=õÑj»3µC1l?ßÑ1D¤<ÎIcìq±m¼UsÕ¼­SV,ýÄ8ÜQÔ'ÂìŠJc~~~vii¨}M<ùìGoîQŸ…À¹ÍÍÍðÞOG__ÎÔyxlŽ—ÜôF¹céâ>¢åòÙëf9)™ |äÿÎÄöD»i]Ax}ìq>Ôò{®mø!§%;;;ÂûËócÝñb#N PBWdy”DC¾††ÞP¢öŒŒ,—[³Gtd7š–ãQÐÿKä•>Ï´PXhM¯(?;øåZ¥-qŽþC†M¥¢¬,Ω(¹$%ÐËÛ±¨TKôù,ðý¿$Iä÷ïä@l,_Uí—Sw\î^çë„*ʪ ½“ {"³ÿÝÐ^ŽE™¶¶$¿ê­¾ß#‹´Þv w„^tzçTëAùìpZyðSäoïf˜>(ì¼<ÿ„ùøÖ­› {îω÷}\¶Ï+óŽ…»»&Güóh»4ÍÌÔMš€8±»·×O\f1S;è®BÄc?xûWÍÖÎÎï€ cb`lw¤|Š+66V¬ÆÀÜ<0™ú˜žB ¸ p:Úê¼BnÅWN·~tø§oî$ƒ€ª`n&ÎÙ5w:ÒÚA½¸+ƒ³öÚôcgΧƒ’a•qå‹ »:œ%¥o9w\¡¥¦Î(õ{ôW#ø/DÛýeIhˆ˜˜xÏ]9ÉD¾ô:å±”_øö z$ÀóÞÝ»™˜¾è¶Þ†ˆ„êÁæXèû÷ã%&-@qšä^)fÊ |­Rs÷øx%Ê ¾¶k²Âfww¶øa3H<(Ði"5Õ÷˜ï±<û¼lÖ‰W©©O†Ü‡%Ê“ö0Hì©Å¯C?Œ Ø][§áó’Dò½ñJ;Z@é­+6®9ìÙ¥ØL"¦SüÝõLàînp—…•HÍ'LL¿k—¤„/¿ºS=Š_þŒ"xWçññ¸ IHM ð¢¼>^/4µ‰wúÉh‡ž¶äÈÿ˜ÂÍʼnÍ€‰JHÀ–F¿>!pÓ%}²%÷WpTÖ]Eó¼ñ=- Ÿû6)>ÛšÖ¡˜»zYŠï¹6·A­Ärë…‰ëµ1«ö±ï|{­­ wºÝÉoX‡áåoaMÇ‹E]ò6Y/]Zð><Šõ&qÇ¥¥¥…£Õó4«Ú%Ó•²ï=|ØÔ׿¥Iʼniiiшýc®†ß`: ì<×›t pó¦ééx‡i§ôzVÀ¡aE~bb"~@A^fòÓÊBÆ8úžKߴĵ\w¥…AwäV "@ÆYYZÂæ5‹ËË7±Ëü×ÿFøÙ×'[åYŠ–¬ßÆœžÜ½h\nsÉ5²ïwcYÞ*ÄŒ¹WÀl„ò^쎥5þIÙ]þ¾ç;U \‰^¤‚#ÖööËc K5ÇÓ ‚KD1 WE9á*Á ÙN•à*°Ò{ÃÁ`Àt¨ýäh¦ªöa…&ì܆göµQ%¼ûõñŽ¶ê¿¼Ô‡¦ «låÛ·^DÙ2k9äQ,ÛøZ’Ê…éžîÞ9V£ð’„£í©6“ᯠ=ߞ鮤£’¸Ÿèxm%WŽkv\ÑyfXMdMF‹Õfv‡¿âÙ6I®°Ö¿Ö–»º_šÃÓˆJÔËÎ ˆØÚ²æå婨©íMXÔj‘¸:R³øb~¾óñv.ŸÃæè3ð 7mƒäôtªk>À+„„…wûÅaƒï¬ËŒèAñ Âx‡é ÷;mÙl9“oT€Jv}Horøât3ÆÙ üLJ„Òü¤V!;…awç£MÕ‹‹ Ÿ/_ÞþÐiljRe žÛÉš•“/ÛÚÚJпÞDÎWM¼Ê|Ÿü@^†é—D¾-e×Ãm5~nŒ…EE°'ж냢+v×ïå0hV†qÏTجX=<¿´”Êg>SËçqy8rK„þŸu¿+ËÃ*ŒìáêÚÚc>;«ÛÖÀÈÿnõ«Ð­PWö˜Añu¤m‰¼åŸÓ½*ýùFsF²‚}¾YY9—Å÷ÇÜ\]_‹‰Ý<°À $]W çÁLpœ÷÷d%æÀf0­^¤â ¦LìÓM6¹Ïh³Wtßh¸ºýúI0!ÕZW. a·§ªrÔËòOHHHˆ]&Ù88¬€Ð•ú\üÒòÎæ¦„©iŽým) Ï»»»Kd0ÿm9H¡ íhQ\Š8,÷ è}ÏâMB£(þÍDu”^ŒÔÝ–ÈUj¾¬1ê¯ÃÌ3,Cc‡UØë¿fÞ‹¥­ä¥’*dRã: †õØ`_¿WIÞŽæy‘¼Ó®æO.ØfüÖœFóå‹âÅq&5;*wχœÝnáó;ª‹ØC:‹âÿ9nþްÛhž,ì_lƒOk0lÖ”³“N½§õ>* Š~{ØÓÆæf qCCj/%ÚÏþõŠwùŒü°ÀwÕ;1$3+í֗팩qc—À7äÏö™œ¸ƒŒìúy3^̽TgE¸i+a Mrxáôߘ>Àj±ŒrMåª >`/v2,¤Ñ” Ì!êYˆí\çÓ÷X¬¾î@y"MûyVæÓ›ù?#¨,y?vaõBö0¯i‹÷}fz²ÂUÊ{M5‚2²Eâ§×csÛoúù„„šæq=_ó8ò?±" Ü< dyŽŽŽð$êUó«ý宆‘‘H­ç¾leFà pÐSÜ ä¿ñ›dÄ£¶!“M”—ýWÔË î7#yW¦²døñ.â!iÚm.³ÕÜh´h­×o­Pd¥'É¿¿‡I 3oa³îãí)§ó­²~Âv%U7a0`L€énä…°’Ò?Âytø>ùÃ(ŸÑEå&÷.|VáÔkU”±eÁûAýÚ¯mäï—»=‹œÀ±¶réTš®y1‚õ»Ûýߎ¦T’•Ô€Ð8r™¼zqMè´Ž4c³ßC_f8§hÃï#q—4ºØ¬?Šz=¼ÊÁ³d§tZDïv´À]ì÷#D fû€j!{¹çGqt%Œ¯Íú[ã%ŠÜæƒXå?©k„f{3? 0|¢f÷ãk ÃÞ÷ÃeÒ±1g°Ìµ;—ìmNÇ„q£2 ×ô>4Ep:ýJÑÂåé¿CÈw¹Lê1¥1+Ý𸰞¾ã¼`[‚e’ä Nƒ/]ï„©H…àü ·óë®Äζb:/Õ}Ôž¸P"ËâùGPò^¥‰ï~¸uÏ¡Âî™·ºXžÂíé§!ÝBÿ¬k2:õD¯ø,ÌøæÍ–ñ¾°—5VŽ£ý½¤÷Hñ»¸¸€möcN¹µµÓÑu¾)¸Û‡ÛÚ)Dj¬Ú^A(—\þ ²·TÄ7•Öõú¶µŽåæåí<’žÅ9ÔÝ LfYVK{¤tö½Ê@\gÊĤœäà`>L¯ 3¼]§‹ÝCÉúåìé•ÑÝváÀKÚâ3é!²EúZIØþÍ¢•=ä[«í#_nT¯=K °-÷¡8¶¿q>]-Я èÝŸˆ……õûhÂb ÒΤº¦f¬Æ…ƒ&r&¼‰ÓËð‚š³ê,_96Ÿ~ñäñóG¿"¹ h‚M¼YdÓ±‡5ÁFduNk×òþµ/@4žZ¹>ˆP-e˜s¤äѪhÍݯà-êÇìPØ(ê#Æu¢"ûU]H_ «'í`,š€jçk¸cYó¾¹i}}=>|ãÆÛˆˆÌö›*9¹¹%+€˜ÏåˆHnû­qˆH°òßßÿ>âØpÈŠ««ëÝ»wgRKÕ®ƒµ–š.0áëäì¬0,ØZ%!Äf¹3³äOìøÕç£Gµd£¯ÉütźÕG9ÅÐ/RÛè2ƒ-÷2ÇrÝ8 Wýt#ø>©nòNóÎça™ù?¦—ÑÓÿvð‚“Ñ…DüŒñ¸q4Ç(O.8A±q'ÃwÚ‰ È~•­Œ¾+ºc]$Y§‹Æõ°‘+þÛDÄÑK¶:ÓßquÛýÕ’Eø=e)ÜÝÝË+*nX®õSܼu‹à ?1 @J`ðÆ°¥æÎñ¶/TË¥z­ÃRÕîA+µ›ï÷õYÏ/IåK²Ûú³¢@ƒíBTßÕ°Ð4Sv;«V<9KÈF’PPPr´ë´\òßÿoH*r96×ÐÐx--ôTÛÕÞ±±„¼¼¼–¶¶9¶‹imw{t~IßT=¤ûñZ˲;Ü€úœ¥E*W_í•¢V½¨–‹ñ}çÕv05>&v.·Šå†€Tî"#‘ïPÁP/wÅSRÂñ¦³¿>=$¾eôÅ#™áµA2š¤gfê³À«á“Ó.Z>§ÃÙ”Û–¹L’RbÏð Y³Ð’w!Òøã06ÏÌ\Ø+2@ ¦Ó(ÿ1ÈL×ÉHÅÍ­í~ {ƒÁ8õ&ñå§Õ‘|ðndeŒÒv»8fÞèéÁi.@b–WUñËhü±\É¡6ióD¬§ꛢEg#›vçoêò_/žõ„ï)iú!J¹ÙßZñe²õF5—VS¤ô~EWáTküÅý¿`ˆ9yz{§ÈeÚÖ~üøÑøéÙÞPœ§¡ß;8@ZêŽÖBÿqæh9kCß 2 ½j窀UŠ` °ÒQD¢*f*Ñ=·±á2S±HÛÎBJzCYY™‰…e mÿèh¨*Nnî›hèè¿Nv*l×0ÞB›/Ô‡Í>`Ûö¥Â?ðßxÙÿvhóAm+?NqíåHᜧ×1î^›§Õ? 0³ÔÖwèL˜ 2<â2šÂÝÖÝvðó…O†ªT›îö5š†BN'å°ƒlͳX4FžÐ67ìEÈzY)WÒjÝT0² °p%-ù%õDÔ·„„ ÌÌ5·,á_·wº““Ÿ|ùòe»£¥¾þcuuµÜHLLLhLŒ¿Xê[8aLåÇ{s8q(œ ýeJ êO¿®)wé®ÎNQØóºV™›ûz“ÂCœE»ºçpœÌÍyÔ ¸ I×s“]ú!Jt¦êjÜ%}°yÕݘ­œÏìrd çvÚñ3vöe@(¾ƒúŒ’ÚÌöyÁl¢´@wõÇ&YOK}sOÃÇþ„¤‚ï3Š$obóÅ)Æ||aœ¯žÁ“GXXoÞ¾­?Ü1š(ÍŽó­Ôguvv.´˜yÞ¡µ³s±9€NòÚÉßÕ ê«°1Üíäl#ßnù/ÒM“n8{äEx$Ø4ÚéS], ó”™Ó®„ÒPIÐÛ1!—Q+Ñ,ÙÖ#; DµþT:µb˜²~´5ß2:Úìøáœ«§Aø?¢Ï æøÆeCiee¥Qnù!1ñ±Rž†¯HŠÎÁjŸD³—d ;Lµs?™ó–3ba1±¸&$H•ºè#É-ýÛ·oj´‚wImŸv íëâ£ÛäíÍ<_9¹:ÇÊÂ4ºCí÷1ù“…ùÛU™Ž¡´ª®[[w”8kh-á “È…å¿ÿ²‘csttä¬ iœˆµ×Xõ/lÝSƳÖl&ò·i’dÓñ"æsn­IB7îL`$=€i–•áÍË 0£0Ƶ±"*ã’è•x—ÀTñÈBçCcó©J°F¸iii°'ߎ@¨Á“…ïÿ'»HÛÛÛl2<Àþø`Ó d€tG"!7°°è-Y™YI…0-u&èݵ£|ÚU¼ä&o%> «lnUñRµÑôT~J©ßHBçñÞ¼3È軦Üþ‰:ÃR|zTY:æí³×Î#úßXïÝ©À·¯výÐ2cúÉE›GÐ{àû÷´´u73gçÊ#—t´äí¶ /RåЉ‰ƒ‚Pá8­hVÑ*¤±T˜ðÃêâÄ …oÄyyy£ccÏÌ'sîù>ù'€sИíêrnÙtÿ²Óñ¶¦Z±á¯ þ«Œ®bM'°ÍŸ°i•¾FD|F‡µ¼©{p,k]ˆ¸w„¦ˆmç·gà±0:@L=ÐÒ/Þ´£Ô\‹ŠŠ¾{÷î÷ሶ®®nÃb[(—ËQŽ}]ó¯OH°v|ÙŸ€ï·vwG¥*ôI¦ôezå§Å¬~rO´c[BÓ Ôš§ØRÌ7Y6ÎÆ¢F;‡¿]䜗áŠÕ|_^uñÿ&0yÝ/Gû×­ÈfÚ'MžûgŒ¡"v¤Æ3SÑQOÕ¬öø9z±Ú„4iŒ©ÿ˜âq=aŠãqh®¯¿ ÕÑæØ­ÄKâµÕÕ×€5xé9¬ö¾tÉÍS|&Fœý¿€“˜ÚÜ–À300prq¡ããgÈß•}¶Ø*­RΛ•î88; €[„1ù¿ñ)a©#“ˆ¨‹±î¢¾@·…Ón‹E¿ó1'ç7"{C‚¨ã­ ïÔTŠÞýN7½µv2&¦¯`ƒnZ‚455RaXïâÒÒî ¼ôÐ/ Á¿´‹­R“â ZЏÞCn½Ž _rÏmÍßjI*R mgŠ2˜Š2â|·Ý6q §Ò]îTozœ#ûÝ̘­Ãh•¤GxLAã÷ §¢ü’½F¿Lï'4‘ÄC´ ´ù‘Ýîw—v‘´.´uå÷†¤à,cLlì&ø ÎÔpø:ˆž·ß4ú CÏ99qŒ —Çž8CU™;ñho©cÜäPsÙ¶'žOHD¤ÐrN M:åg¡^‡Ï—/‹¦\§`VŒÝưâ%ð¥ïrí²gþº)œNÙóʸOîG¯^Êd:úƒ›ñöÞ9=½†‡'jiÉôìÙ3 "€Fü}xxççÄD LÞY]½ Gk PáÀ!!!¡Þ\uŽŸ>Y98¬|B}Þaµ³ŸF,<Âãj?á{j*L¡îV 6ŽÃbúÝÖx L<ëlt©sQ].Þ}6¸"îsFÇË BˆÔÊé‡[HÄÄZÞè÷H?==“O•{öæ'‚H aÛϰáéá…òžšÛ~NÎ(h-¦yQ‰;ãù\`[ô“üº,…x4°`ÇBnq­¯Éù¿H*ð>Ï}ˆZ7/süA±!ÉIÙw&!0íÇI¼!P§$ìÅëo^zXô§U=”î´iÈ*±}‚,KÈP-2o¡ú`jî“oE篧ÙÉör©G3#,˜–ª¼²’¼¥Hq@E™\*êê&ûƒÇ.o„gø: ÁÞoig—š˜ˆÀÂÂЬ(°Òß­dA°ënph¨àL­É¹ÐBi®û¶½ŸµÅ Ûû   Ò¾[‰€p'`‚±¶¦ žœ$¼ÿ>Lð,µ˜ ¶b1èŽ}ZF§étr~®«§×ÔJÅì f!¡„Ix&l9û3:# È¢kL,,ò‡>"f»óMãÍñ•Ô‚©r² ž¹¹ô)"!/%|ð÷Go\¢É_gylÈzè5PȰ].99Í*æ~g‹†üÊÙ{пâ zK¬góei5Žä×´sË \œgª#ë‰äóÇÚ×ëžÚâm(8}¤|­Ìcôöí--­qêGây,g€£ÿœšŠÛžªÚ߮ڙßÙÑN± ?¾Øž—«ÞÙ¬1I,ß*y §÷qzv®¿óA„ù±÷ÅÅÅ/..F‹ä5±4Íh³&G¦k\JVĵ²-âÏÔ*mŸÐ§ø”…‘]SÃG&ò%#¼æU–œwóü4«óûÕUÿq¹xx011?%SSûÁd té „„€@-8Í‘¶2qss3O…&# Úµ‘ šðÎèüxg¬óÃRÙ퇊U(Yö8Voêbbyˆ±õcá6fBΟ$0Gö8æÌ¦ˆ–lÄÂ,Û·âæÐî’#Ç*V£¹\üý€ÖØ]ÓºfrŠ;ñ±ô'iuÖ’JëzlP°”OMt'§>½J!â:VDVåØ3)Éù,¦Ì“YTd“¹ãÌrÜ8ÜbQÏs²gÏ‚ç¼YÞ6úàû§ÿø–8¸äxâΙåÿÞøþ¯|šs†y0÷÷÷!²{yy™N–v©å²ÅœPu'I\L¬rÇÎB»òÇjôçÀïgèuοáÆX øå@×Ìgj»ŠŒyóÆó$+l.ÒG(­tÎs‘ºM€ªÖ¨´õÝ_éa±šh¯a '÷Œb1ÀÀÁiñº+-µ‡#ìÌ$Ø‚ÝÖÕ.BQ–øÃ‡9Z5Ѱ¡›¼¼üÙÑV‡²¶›®æææ¨=•”ÇŸ×3×k^ú¤å=Eùˆ.p×-Œ ›£qP¯d ¢¡ýö2ï•~ŒuÝùÐq”/ W|yŽ"ÉÓB’êçò"<´|(Ö†ÞéŠ&°Yx§”yØúÛû‡kkØ@Õ³êÃà<ûþÿ-ì{j®Î6@(ý†%''×ÚÖö4Ü@__¿ämAI‰ÞT¥Ý;“có‰×¯a-LcS“à_”ß^¨©©•´ã$gfv7e+/lltŒ—˜8]ì¶á­sv°>¾ðm“ß8ÃÕ D¦‡sðÞOsd¬‹IK·44îlì4­,. äiÂùˆcp.^‹âÄ¡;ZE2çõ–¤ýg¡"½ß ±g¬¾â3|'›²)"0¦Â™¿•vͱ\6í5æÝ±\€èôHß¼yÓp$0Ï;?;;¿$ z‡„…5~%´…[‡;99ñž.†"ܾ}ûkBÂÌŠöš$ç,ç¿ >CÂÿmVV)~°'Ú|¼·¶}¢¤Á 1êa°ä-üyž^×R¨‰÷cÑLr†w-‘»ß¡!Å¿ŒÜÂ0<é“sÙ-¤Ë‚}ùÜze—CÓ¸&ç3kÕNûŽR•óµ`kf~~þ­ °^û@ææ~Ej»·‚Y|úð_1Ù„!âßø\د®®`™sjÃóçÏÁsÿÞ,êéÏ׿À©䛡Ÿq ‹€_‰8îÃÚã`sg‡%-Þ¨$i`!TTTfçæd3ÃÅš`ÞÞ^}[›/P*°:(|á,ÅÌÌÖ;wîÀžú@B¡ GÁ—¨Åô€´´±Y¸Œ¡Š§ÉBDCSWÍûo4>ÓRS’NDDT"Ž—5d, (XBô°* FéãAw@ùöö¯ãµK·+ç á\ÛšÃö) ú’ïð_,¸‡¿ "æ+Ž{idd„‹‡·{4aqKFAA¦)kkk,NšVw1ÿùþ†F­kTu5ow<ŸøÎtMÉ©ÙX¡×æ¦éäÔ-}•©úæ·gº¯%%)ØÙ#^~B çÖ>wiY^^ÎѨY\|''/z0 ýŒ…%{šQЇ2 „>F­j•mwÂáááb³ %^×Kn‡m àë÷qÞõMÍ»¾<žárØ&„%¡)¯‚àÜíŽHÆý|KÕ"}£|u ’úúúàÐgBû/`+aéûÖ)…xÄŸ‘,——´ô,<.&ÒTTT&‘̰¡‘¯Ÿßüh.œ½m³Ò §-Oã˜()=ŠdÔÖ¯÷¼“ñSÛiT4­‘Št[P¶Ú.¡¢¦1‘‘Hôóç bÞ»?wZ@¨‚# Þô„DF¦kbrûí±iðD‹6V;Ö®‘4ßy}QsÒá™&óRöÁ‡Ï/¶ÚÙ§¾ÈÝüù¡0îZql…•——„„¨îo¬F!GÏeä?9x¢%§)–ËÉ ~©uRR‘d{rTH˜N-ú÷¢k™Üq¢þ¡‘~òMœ²JÆ¢¯Å*lut•yêyÁÈ2Irâ¼ïÔ’ϯ¥ŠVÆV}&»žº‡¤=1<õRSÙv§ªq s’àHJç©&œp°ËÂ)}Ôu{♸,,ò²XÂm==ŒÇ'ñ(DÜÔ@4/z£<…·:Ë€d§:Déi“’’¦vGÛè-EÞ¦¾wïÞÒpÊf 11qê[~‡íØù¥%Eóœ®h6ù?†¹Óp‰|ÚîØX¦öv1.«yÏdj¿½vÚ|j°ŠyršdddØ&&&üüÚN¹ea\6ËÔ@ùŠmYT3“L& Yxp¡ÕÃÒj½I{å{–öMiZm^{µÓêŽLdmoíkUŠŽíý”à‰?£©éž¶Õ$í<<»hºÂÓ´‡Âc==ïoÜ ëŠá UUU]r?:è*’NxÞ—XÇS€3òð<ÊÏÿ½œ–ó)éK`Br•ö[YPÔŽU;õ—š©Ã•óK¦®²ß’ì'¼mtfùŸL0L{Ç_CóöòÒ±$ƒ›{ç …=ÔOç Äæ}yÚ#~­„—\ŸT]Îû›§‡1V>*³qe™E]Z­Ë{ª|”þtýÁ©;5\£dÙ°üsá§+ìäÜ!”Ù좰ÿšõÄäv " ¡Š‰Þ}҃’á“ó“˹ú;tÄj<öE)¥b[[)(,|ÂÃC*øùkT”hºTÜvGºÓþ2·èèWi›RRR©Ó,#b´\˜Y…ÌØ|¯•R/ A8nÏ}¥êëëëèäd4QfÑëÑRUć5•c=z[hÀV]ÀŽá¼[€|òæî•{¿[ÚÛý€Ò´>X•}~ºˆ é“°EÆ0±ÇÀ„‡Tw3»Æ|©ý=y·«ãÅIšYÿ¼t»øö&¼ëà@Ýß<¨aW‹-œçŠÖ)¯¯¥S2 í¯ËºM²Åþv¥°R\ÝÜH8¡‚5Ù!ÈVΧªÕaÆí¸–y8W½Ö«ØÚ6 …ƒpÁä~áøˆQ«“À¢R¬;&Y ÈÆ·o­rÜ>g¤ÿM:­×härÚûžÔàøÆ/]¤KSv°Ùt¦`ªwk £|_U=š/¢áJZ*4á÷q)5ÿ >ëgVʺýJ²û!m9ù¼4Ðüܼu«¤YvCaöà‡”þîªIîC"ÉЃ1ƒ„!µé—/_[` Æ©Yà³¢uDЃ°Hœz¾cQîrœg]6–‹ÝoØ¥Zf®YÒnco¯¢Õxóag§„ùdy}Õ»WÉpÕð½fæ~‹TUx{ -'òÓÒ»|ênHÀ¤âüêêø!)gHWÑ’XZ²Ú¹¿”§YÇ=hVÚ&ÏØœ©KORè|¸NÓôðŸžöÙí%?ú;NÈÍÍ2ß[âoš‡ÉTнO_CG#±sjz_Í®ßMR^¬Îµ©9?—¦‚c0Á嚤¨S­àҽɉ,?¤Wa›ùk¿xîêÜíO$`u92e·˜6]e2öŒÑ£"6š%ñÎe³¥V£ï"l㎖Ê©k£ï$åÞp`Ð{̵CsaººšeÞHT}2ï“H·n©‡¸§îåê{fЄ‹Q̸yeå:PÖž.Ç]·¿ž/psrsOJR)1Ææ±ßìÕŠŒŽöóõ½g\}çþ#„¯áá^y9Øõ@©«Û`ðÃ9ª63%lŠúvù~ÑØúñ’&í‚‚‚ f†s#íìÌ ø¹ÁödÅП£À JHJ®M”1Bé7 ‹Š\Ó'±û*$æRÕœn”ñ4^2Æ|ZkŠ ËV ^šÙ”ŒÆ›ëËï¨JON%2—¤¸ìêaTæIØk­IrŸ&ð4Ülï>¢§£kllüÞÎą̂]û%!àg*÷®‰óïÀ?aIó) ÍÛÕÞ$өʡޤÁDÆD/R`r«-n²¯Ñ¹'½Y¶×c€õþ(æðÚkñäÀÂo²Öm¢Wg°üÇ&AïÇB5é3ƒ‘Hoôõ› t[˜88 N~ÏÁó9`FvÃr)‘ÿ-¥U¹¢„öÙåeÕ÷îÞMžN³²xÒÄ$«s=Bû¿¦å6/êMƒC9†ÚÖÒ(ƒ`ÿ¿÷ïß#ìíïg—4‰6ëÓL:Oì Öïªy’¸=·MœY¡™FA$k^–Uác­µEF VÑÿyº,7´¾ÍZ?EwÐavöó3¯ÑþSJ¥"î|!æ;û°A扶ÔW‚,àÖ!ÿ'q¤¶½‡æíDï}!‘î¾,6¶¡^ÒA¿¬Ò{wûÈç„­€+‹qYÜבy_¨×ñ(nÅFþ~Ø~ŒÍL½ìiõÆS½-~?ú®‹·D"c剸ð¸m3’ÐJ {"Ѫ¶í°êÕÍÀA1ðYØÒÒÒz@©8{\ßc¬»3É‹{ka‘µÉf-E$)e‡s̸Ê[ÙÚ*˜š™…£“‰P;lOöÅ“ðØç¼53ËJJ¹Ì~w,ÍöåU/1V¼|—Ô8š÷øž[›ÍwCcwõÝÈ=Å"1{±Ú$Á>qw÷ZŒGÒ@ü  l{*_Ü“ à] p~l›¦©)ÍS@›KV–¼IÜe¸íÖ¿NLÐbRI) —Ìooç!ˆm 熗—sn•P„»!ò;þN„Pºè™øf@†S%cØýrssáÍ*GYåª_:œv ‡‹–—–žÚÛÛ‹9:ž¸Ym´§¸o·ï-u` ˆ *§Ê=H—VÆ–E¾_|‰Jˆ¬¸dØ€Y’©ß(¦{ƒ•íùFv¥FKXZÆÇŠ÷|…gÆÐþÇMAàëA1_>Ô0æs’/x,ŸÁGƒ ŠÇj(~ô –Õi9Yi÷§‰¿Í¾ut„&?lr Šàà`Ø©PÓ¸m¦Ä†‡§NQ)Ý%ökæÎ‚Eÿ1¥¾MDýžØË2 Ö¡›JÆÌ²Ð´?å0SàrlŒ3ÿÿÒæþ|•‚q<Ö¿g_JÅó¶% ûûøûß‚Et5ó*ÿw{iöæ3Åð~ýúµ9Z xÞYk1ó¨§å(ƒmZqex:«Ðÿ̯ÒÕ…Åe=ñÀÝ`Ÿãü³»}h|2ÿQ“6%`ÁÞ­dýn…$^kÞhÕ2š¼‚Ãgüû÷¼œ ’Šýê¶ åÌuŠ\&Ìœ¡ßý¢ö÷jíÁï¹Ûµþ;÷ïßçåå…‡P™6ÿyþÞÛ ˜]cK ÿ‹€?—TëŸ}+Ðù *0ÊøãL^1?$’JÎ×îi§µrpH6[.¿¾u Ø`ñ àh»¿?æã«Q8k3P û Ö-ÃIÔÍÙØ-óMþN§K‘¥¥ú€#¸îµQÁšæ ¨€Gë<ê´N°‚žëñOÚÀ[<¼{?Ó$cà|\€«ùtšN·­[Ñ‘‘‘á”`x— ¬ã1Ù'Ÿ»gkŸRSõJÜ¥Xo£FábaŽÇ­=77džŽöPl O–‚@?ºž˜ÅÚ­DtÆns`` $ \`U<áÚBs‹í7à±f¯ÌG<ýDJ‚pŸ}´ZhF'!‘VQÁÕm ¼“1œaO*ÔÌèä] ¯ûû1øùëän¡®“iÎÜ9ÞžÊæÓÞS#èM{e3ŽT²x°¸FÞpÕ’&ìë×÷‘‘‘G€illM(»ü]å²:VDe2’WÃèæBT̨æïíðžV:‹’„@"ž? &E]¤·ÒQö9çb(Èòž…éèèüÚïáï9Úš¿—û›Á Ù¥ˆTZTœœN§=r@oôz_ÚnOF‚Žþëç‡[´¹Þh£èlh„è©yÈÄf¢|ÚÃÝ,gª§§§999¸_:Ïî0F{—r+Q“44¤¿æäâ‚]ð÷ööÖko&k 0Á!²ú0­,y\,p2ïv€±r¦6¶Ž‰IG†lŠO``^0³ÚÃWîîÏù\޾ÿøñH°³m&ù5°ÕÅÆåãïß¿ŸkGäg3öœ,üŒòÒ‡’êÍgZ]ì:W…ºH»ÿ<ÄßÚöÅj„Á}ÁGFo‹{œîémõ8ásƒ.ûÿÇÞ_@ÕµlëÂ(1bh€@pww'Aƒ»[pw÷$¸ @pwKp'xpww‡¿F²öÙGÖ¾ïÞÛþwß»­¹V°9gÍ1ªª÷þ}½ºWëUÔ#ˆÈ7U}±ut$%%¾rOþ“s‚- ¦0ö?9Mk"c ¹CBCŸÂÁéåqvZÍÚŸÙÒx§{sYd2É2»Å“ÿ»yËú·ðƒO`ä^^]RRcžÏŠ1©-rjF“E›CyÕ«0øíÜÔ~ž×üînÿsºú׿ææÝHüÌs·c]a6~x¾¾´´Ôr¼1üÞè@?„"~°"g ,f°#©Fî^JÌŠ ü¾xŸ¬ówã°XÊXWk ¿jõ“ðå}ëïWþ§^©»©)%˜œo£¦Pñ²×JJ±§×Ë]QPÁÚ@ªÑbk ñ€áí[Õ¿9 •]­àž>…ÚÏBÃb¨™Jm¦ÖI9®GT™zcc£7•/L›2U?à÷X ç ËÉ¡ð¸:]ù§ÛÏÆÆÖ°I((@’È?R|h(¸©#/#ó½ÞåÈÚÁ¡­¿?  0¶[ÔJ¹„t ŸÔ½V‘€>²Ã’;¿Èغ>™ÂðoÖ£¸¤dêlzÉj1Ù &TâêtÇd®‘'O©`qʪ© å­ý{`@‚,gjŒú±ÿŠ‹ >m,ƒÎÅRB à>’ðeè‹gz æÝõt[ôõk˜É ½¡L×QenEŠ–ÿàJÍE[–æ“ÔÒÂ•æ½ †¹wïÞòÚZO¾à 3¹ùD) ÎpÏd*Í't×é•N™«—þ«Ïé_ÌcSkÁÀðËé+÷ƒ—”UvÑçb#ãÝÁ(Ñ©üz14ÞTÚ§ìî³+#w R~<‰¶]ŒônU?\ƒŠÔ®‰™ŽåÇG&&æñô÷õ)ööõ™1ÈìÞ9‘û 9¤7…VVVvùˆÎϧ6Ùu®LLk¼Ô@|%;ÕSÎÖÖ6Z÷¶ký8B²¨¿¡à.Ñ­­‚£¹ŠbuŽ;b+@´ðiü˜à¹[VU¥<44DÙÐò+×òC€A(æÜB‡Ò…žïp¼Žçõ¨LN.€öÓ³/P [1GÇJ(Üìd)7 ¡_ïß}‡18\LII)ÓÀÐÀ Æ5gtSn­çª&ýPSC#ZšïF q9¨h\[[¸4!Û倡\EªÌ/_^ƒ_Á¸VÑ@á« 3£eQ©WòžŒŸ} ÷“"ÂLµÃŠŒ¿ãÎFE3…ÃËŸKÑÛRçæg–U—E¡ùG,€bœ+ObzÕáa]àjÛͨé¦`×´jÁjþ@Ò`±LÊ …®¥H>·¿‹`ÍÙõ.l-Öi©ö¼á„ü½iÈ,ÛSláH¿‰—ïxTg:=“LvâGãnñv¼+Ï»Á™·t¤0Áˆˆè¸3é[TD#++ UˆÕ*!ý$^,s¬‘îæHÎ×ÌÌçÝ¿íGA±AðX¬ïµõÐ5õ$2ÑäŇB*1}qTn<ø[¨Å3Tn ðc¹åL‚¶× €nÆež ¢*WÓ5¾ z€)G×G[Ó&]î—›TP"7@kñlV¸P9`Z¯/·Š¶gêâ~þ”yñâD¸€B øÂ@ Ú ¯“2¾HŠ2ä2[·…–æ¹Í­ügº ÷9¸$|r‘H` äŽâb#Ûoqq±¸,ï<ž€“SYY|ÚÅNÕÜ“'OÈöº{{¿º­¢¢¢òç8WÂ;ð‹2&èÛ7ò£×±Y´#ƒG{ÔȼŠwYÌ``c###{lffd<œÅfùU:•›ýÓlƒ›Ù™ÁHL¡ùÄå¤ux(½M³‘C’·œ&Ï¥a=Çp×,Yý²e)ܬÊ/_†#IްF•£«K¨ +Ø ««û1***­å› !g£=ÓÓØB²Ç“îÕ´&Ã~S• æ¿è±ûföK7{sB| .…ÇIp~þëÑ;sÞ ô릹aTò×$Ú#¨ÎëÈyj¡¤þäŸîxJ³Ä9þ ]r¼‡íO`wErà¿‹å Å„ôüùr”4°©¡ÌžŒp^¨ˆ2ÔÉƒŠŠ L«LŽ1Vµ@V¾~‹ø„ðg½ößeÒ×NºÀþÁæsã¼ggj °«§1¶û1¥8³–¯Ë7+tãpßgj¼œÌãU±†§+âûU/ˆooÏ"¯|/0ƒoo«&ê%™¦¯6v¿×ºðúó56ºxi¸`=cf¿T6Èß5ú‰EVv~38¹Tç$¶—¸2™ÁÁcT·)áµcLŠl·$>ZóÕÑcÛÙ5пÿøiã‘ÔÚÅfÖž9k´¶fÓH|a®»»{µõÂ} p3gùŽün@UU“3í¾?YÑg+Ãõ.vó{™ =¸sòƒL¬Ñ³l•¥ŒyÃÖš²°ß˜P]W7Üàæõz¸¾¹¢ÞÚеõ™ä¾\ÏÀf·þ2™Q;¤XáþóîŒ\PàçtÅ+nšjÌ‚ä@óéj%%@DxÎ’úNÉvöAªac’}r0œL³²±ÑÕèqµxx?ˆ¾ÑfI¸‘Ñ/BîmÃWÒsVQ£RQŽÄPÎ$;¢û|Ò["XRF‘? è¥[jà)’.J«‡(r¯¥½ ¨äùo×Ô§Òf²k™PFMY˜Œúõ­}}Î{ù@έ# >>545ó˜»yˆˆ úæj•æ]@¤¿ÍÔßj¥*ŠC~òÎÑ/Ô¸H±©Š>¾È/iœ–§©ñª¸ŒŸ¡¡Â/¡;ù¡­˜‘×ç¥ùú?Úy\9Ï{!ÁÚDK5kV¶^è×\׿µ÷¬4XõѸV%wEqrÿ±2¢Q±Wín?}•×äW|vÿÑx˜¡­þ­âNIDà3”঳BÓá?­²)°Ö[é·‰¶sW¤”Ô¡Æ+'o -#—‘)º™›ê„DtÍ=à·˜bÍÐÄ›IŽWe;½ÞA0ì뙳êéþ2æY›Z1bâûµí›CJ•± Ïé˘,¶ ÆæÎó½j£þ”7•˜‰ñÕ@?zÞÝ8UZÍi™~ßÉ‘ À§¤|ö‡³øŸÎÌ’ââŸ[\^KNÉÊ‹7P\{u„‰û `vÀa Zýý©|ˆ¨{Á@×LרAé qGbekKm”2ocp”… Iƒ.çG²E5&=ÜÜÓè€þU`}1þ©¡¡ñ>7Ô¶ª¬LðoÈbÜ\«æb‡uü ÷·ï™…úŒs%šðQ¨ðÒ˜Ýþúí¯î‹Y¨·Ú˜¡Í3ù‹w/õÍŠÏJZ÷NÆ8‡µï.µm$MŒUVÑ äÿœyåÄÅ—ÊWV¢zàäÊ„¥÷:S·Œ\;§˜i°w#®#Øè#F"†IÜHý8‡ÁŽ~ÍûŒ&:÷£3j†Y›”3ŒÄ-­t”ïU4EBçŠÎ’Bظ•_÷DFµu«|³9î>/ÊíÆoï>Ø8¹A£–`ìuÇÏ;µ­TqD=hÕÐ\Qã%%P ­““ {WaŠyJÐ î8äää|þüù‹Ržjñ»{0ªªª¿~)„)º´æ0žÐÜŒkÝ^_@gr€x}ŠŠÊД”Ç­Ø ¶ÈÎÈîŽi¯•tàfp h*j¸Õ+äý&"NöíPŽ9ªÁrÐý‹»ñø¸TyŸäDØŠ¡xÞ …—"/‰Q³eƒŒÄ.O–quF¿(•ŽœX»½ í¼OO½·ærèÃu–â6Ëôj·wúŒZÍ5´èÖ×xª×K»É1eMCÐf¡Ã¤ÌÓv ÑÆçô67k”’]öÍlÉ3ZÜ»ÇÀ2à*cÛÞYµ§ñÝ0sЈiªsçsOÞí í`0W¤™íš8_,‚Bh€<³¢(»¬õ™Mš[‘ÚxýðZÇ ƒå,&3f¦©B2,·»†,óü蜦°È^q=b¡Hf’xÜ œf®h×ýtcZ·ÑõÓÕwvkìe>ÇÚÈê¼`¡öòØD9ÞÞÞääß”kÃæà—èKTûhfR†TàCŒâkÜ—OÊå2§D‚pÔ˜‡§òhÕË’}Òi™‰ø}á™æÝgº¹DžþÀ#·Î·±«SD7×Ŭº[ém ³£ý½¯™7ðZÆ7c îãÃ=} ,PðQ‹?âÒêj; ·.Û%ç·W{OŸ<©N¯ªFâ/'ÍÕlÓЊ©/ÃÜVc¥FSœzé ¨=®æ¶º†—÷®c؈~+¯{‚.ž ¼Ší¬þ•²ÞE:Üí†ÈàÄlX6+xÚ]Ìi{ð?mµ3ù¹ÃȘÚ]æ¥>'#'aWk–3fW__¦×Ý-TàhÚu« !G‹8ž¼5ÆÜ OŠÝ×T¹æ,ÙYƒ'A4¶,B³‡¼mŒÑMÚÌÄiüud ¹¡o6œ;ýåÃÚwlü®.Ãiqè?žrNÎÍ“lᙥO.´>F¿ØŒÁ¦Žq¼Î(ç.§8¨0b™¸xwüTl f?ôø[î ,4‡¨ÙK¤E²ÐÃD¯c÷€:½ò/ú- EÑïA¹s«Ï°&a”_ˆ”畸k‰=“z[·É«, OÀÓPs5š}‘_oL §Ž¼;K[íR3¿©g–;éx66ÿŠ\>ëù`t!I<¹Y>+Ô?ÖîîæŒÉåPÿ%Úò¶õ¦$¸ MÕØÀ»0.ѵºûôUe-5üs¯8l‰ºùúí[Àüü;¨rdTTÉ„ùÃÇËwÔ V¨Yç¼H÷l þfˆ<à#0êá‚Ãi??ÿûÂ1=48˜ˆ‡'²ôN{ZP)ŽïÞþõ4’…jl£Ó 禓?ƒêO@Šg¦ÖƒþK»:õË—´€"ÿÜ:’3br=6¢l7 iTà§OH"Xf”kéäæS•¡ÃÙò ­PȽN3K…j€’ ´h `ã mÀòGÖ›q Wx§unÂê‘—ŽòÙ>ÙÞ=³Ùñ:¸ÉT¢ÍRú”ªv±´÷L€Ո£"Sý µؘZ¬eA¼>9½~5ÓA9½J'Uº´e »[ü{|~c*óú$w8n¥“z–µ¹Ä)‰qÏpZªä´ÆŠa]tPæE~àì ïz‡7~cöMéABdˆê I— ©££ÈÓÔ>Þ¾/FuÙ«'qÉ E^7T€]¨WY®´ ò-/øã‘²²Æ5Ý&@ÿî=€F1@*›ˆš:¤n¯1JЬs„| €g½O+èYép)ÕãêôòûûëáŒÆ?ñÁ´¤“O;Œk†àñ¥è´ø-ìhñül F·;ß×’^EEŸ‚µøHÚ´mMo O"°ž`‘ð<Ï ·6@^Õµµc*–Å“5Pø*òÖXÞl½‹²E’Åoõñt[)&ÝþÁEš†DñÝÕ3±W²Šç7a)Îçµì\‚˜~ÏHÖB^ª<¹Š‘õW uT¨ J”ÒºâB F;Z¨K^ªKY¡C] “Ðíu]Pµ°˜6RÛèp`Btç²^­§¾”5¿°ä_ô·‘öa«³m¶é.²Ó‡YóLÏ#'<ôŽÚü•â‘é@Êw/Erö´–SØj6ÖÅ•µØ@©/5'cê””‹9Ù)üy£‡Cât©©›£y5vdP[2ébFÆÉRiþëãEsŠ(MÄñ¿jìŒX­f%Îvgî½]øñ˜‡GHüb³'éîÎ]ç´GJüu³ìòÙ1›¼€NõÁ’lO×D%ZÖB1d88}G|Úf5ååÌ%01Euv¾¥~ù|www|Ô@-0´ôm Rß´Q™T”øĉ°:°½99gV¥¯,µÊëÞ Ö’Ïω{‘Yø'Ï(66%á ‹û§h•ï-ùïj jIø½«ÊIšQýøñcô(Ë/Éìmšo¶öüŒ¾äI S béëP–èP—èRWèR–¥O~é)þŽÙÊVv;»—dzš;:¿ 3·uó“nÈë…õY¡~­«–:éÏ6M™¤5–äßéjuÖÝ¥Ñkñ‰ŠŒ Oéèèðx¡Ps¨*zª×-‡Ûé¶ |pX¬½6æ..DÂ!_ÊË£}||„ÉÈÈüýJÍjÛÊ|>11¶TÏØw||¼ŸRj„@Þè"àxV^Wê·G©wŸ>î¼»=ã ÃåQ3ªl†êOOë±@KÏ„>8÷MýÆx¼ïù”Ú íC¤Áޏ)t‘¨3ÍG.Ý'M„À¨y)O:êÒã<>çà’äWXVï”Îù²þøÁ¥J».•SƒÜ¦v.|ãg»¬ö`op9~å1ð£ñ3#ƒ¥)ù$jED_¹ªŸXò«ÛK8廂a›eÁ,“êRîüø`Ƙ~º²›“_QXKËZAÓs\Þñ±Wo–²~ªF~ø=o}¡é¦âZÙ¹B¨Œ™1ýpºPB'x ng†ûó? ”iC¥Ì†Ãd'Gkð«Xç³é,°h°ád@'„„Àu¬·Û777c_m%¶>þ\ïêt'¬UßÄ„¢¦¦îú`F<¯gƒëÉb;–ÕW0Ì åcÅ8¤ô H~ùÅ6TQ\æbì¦lŸI) ] Êèú=Q!Õ´F&ìùrâ”9ü΋þôñwKY vUQ`«.(ÐT¨v¤Âd˜rq½øRë­ò"Ñ\^¢JŽJz¥Z#Ö Ì”¨+2*7¥í-î¯7ÈîP®æŽ'ÔLûÍäêRW²ãæfµ—T\øÌl øãj‘c¾j#÷)ûÕëxÚôÙ7íWPNkPZ'øÿãJÇ2[²ß›Ù.öüîÿÐïüÂÞDZ4Dmåò{…Îç5ó»ŠgÛȘl™c'E¿Ó o¾9žoîqŸ‘\¯&ÄI"ÓÛ¯Ë@ÇÀÚØÙ-±5]ÀŸÍyñÉÊÊ q„QQS·ŽŽ¢yÿøÞìûü°Hçç×±±±‹kN;ɵ@¦û -ØàÊ•uÈݸ{ `âÙ ÿ†_aÊ›Y'4T#Œâ)a/û³‘2¨’‚¾Gsë«¡Ï—qí¦´¹¹ÊWYÆ|Œ-N›> ™dE¹?G»xIS™êHI¿;Œ[†DÍg%Œ5”§$ÿœ •Îát[híímzÁçó‹‹Í?ÓM *IÝUàÇf\B°Èüm[ÖOûD€ÙF…b-ê*Li*?.ÅhpËŠþ“Â*™RÂØ:ûú.›0' )ýx;mÊ·|;}ƒ´Gš27/ï¡Kî-ˆ5j§$¤6íê³ÖD›­™Ž ,-Û¡¢[ öd5žb€I>Þ*{ ·([d$núªJBA±­Î›«ÖÑÒ¶&íyáåœ}Œ¬/ÿ“ÁûŸ»ó—±‡¢*šàJ|ë´ßò°šîi3uq)ý€Ú)LÆGŽÏ.+b­œ\&`"0—ÁùþË.«9øÅ‚u _ãÏÁ9i‘·äLócØ<ž×$‰ë -Qœ±Ù1‡áØ\bôg.WWˆ¤‰Îž‹¸¥¿½íØèß¡4ÜeýçpðzÇü®Åþ3‚²aOü³bÜĉ]çÞ™ŽGE§»ÎþÕÃVŽ‘ŠÈ(7x$›†_™c ¿CGHXÐ}0:2Ç÷ð”¦=|q·'I„à¯êíÙ6sMµC…êGâc9Ž¿XI¼ÓÅ +C'&|öŒ@í¡(iÐjŸ†¥@…·¿UË\¥ºb½ÌgCüÝÙ/já4=ŒŠ3£èøË]”¢’Ÿ‹ôtIçàÓešº*ˆgþ…Îy¼Ÿ5lqÛ:§|Å"Ä–ÿÀÀý²±1ýN>ÂXc9Fа˜ãÃîDŠ&™u¯Y —ÂxÞ2Bã8•£ÐÏ!B¿,(µv¦L÷üœêB Ñø”,—–¢“ÒŸ;•6ÑEÜ\?Ù[ò®«²_~ÁÏ>ç%ŒKö5ŽíÁªƒ½#¹²Ëä+ÉÂÀ«öžwÅñ»¹scPŸoâÕø^¶ÉÓÆ‡AÁ~0lŸ)´ó«—Ò’¾éjVõ³êM…:1ÙÚÏE¨ª÷-8xv§¹Y¦'t*8VÖúÌ1=>~{ã9}iN¶qMÐÊòëâX•‘—Âּέfg3Ìé3¯Î.q˜±¿Wùñç—üO¢Ê¸ÄöŸ:‘‘K‘¥ÖÓÝL–¾9Õâm…fâK·†åRFàÆç 8mÿÂdêLBã1€FRæ¢Ëî|%‚0 à6^{…kÛ÷K6q½‘­½§\à÷ÅYz’ÄY±O2åKKS”R)*?süó¹Xù3Râ.¬=™ _2•ç÷À|\ÝΠ)#Âg1ªg„˜¢§säQ—`Í`ÕãOµÈ¢î gÃ>Ï+t¥ß« Còƒk'UÆ)WåÉ`> ÙÑb0T8šÜVIPºÌMxíi• NÚ›¡ûøä³Ã OZJÔGrªM^DÄ„§ðÛÈV¯õÑßèñFJŸˆÔO7楤S;?ŒÁf¬DK$ÿeÁ×ÀÜa¾¦|Eå¶þÍ1&²Œ”Û[ÃÌ£…çN’ã7t7–e»]ñjµïûfíÑöK´"Kb”¡áÄOÄV÷9{jƒÇ3æËrŠœÒj—y·²¼ÊÿLZñð§×‹ƒ½Naùä‹ú‡y]Rq:ú„˜D”µç§ªèÞ±(¨®/B+hUý˜w×þÕË·@­K…É=!(”¶¶¦ôèQØÎ¿¹A$’ HâUø„6ür+£#Ï,å>c“|š±†ÇÉÎÅLàc|ByH}½7È<Ý ‰Q[ú\ÍK”: !ÖÊÔÂîÖýï"‚g²t«´."±Kó™dÜ|«7^X ìÎÝ“Vˆ<ÓäÈbĪêÝ{;~åŒÔ€”žCÔŒ®íþÃç)ŠJ•%ŽR^ YŠóG2)$LÌît¡`(è ðƒåΨ†Jz:áGoo@ÄßJIµ–Añ"“f¯XÍU¢ª~˜–Ú\‰ÑbÓíÕÙ6|×Ði™™ò%×{Ò0˜Ý¥gš³ÍÓR´üéT‡ VŒ+WlTò ×ô•#7ŽkyØÃî¸;ö†ŒªÙùmA¢²„íhƒò>fÙƒ¯Ô=‚¿$y[gí9ÀàbñûOϾ³5ãhr9m|Æ÷1f¡•>׿/ÈBÕÇqXÄ]Š-aôƒégL@c£àéQz"n£-“ú‚± ¦Ç‘eçÑ!R`+c­°z[çÚ¹‰©ÞMíq”3?ÎëòLo—\hõ¢-5œwʯÛÂHåsIèmÈt®pZZ5YàÞ·T^ô{ÌAàJàS%¢V-õÑjpe0ìňŒŒìì윇èt8ß-;Œ€?ÂJ0]#Ì;€ôÎÏÏ‹íÖ¤` šÝ!ÂDU3މò‹N'?‘&§¿Þ=_(TÖ½¸)ÄåÞ׺ßäJ-1F’—½8, QÈ-?l" ÞÕ Ü3¤Q¥˜· /S†ä„ö3¯ëã»ï— ‡â_½{…')¶6“–S?s§Îz³ûP›Û!åŽâËuý«Q%· ž†À:¶€ŸX ›ø‚‚G_ÈŸq9nãSR¥Ö¡ÇøÌjI@@àãçÇèqi®ñuèm(/ÜÓ§ ½ñL­mm•ÃÃÃf4WvŽuÉl³ÎÞ–3µ ++Brr/Ô+Ím¶«T¨¡@@'¯onâÙma½rwŒi è÷¡ðì±0ŒŽnˆ–…(É{pŸÓÎ`Ø“qò«ŸV}È`(Y(ÓL!Æ$‰­’$tšÆˆ ÿí4!\±€¨6éçdÀjÊ K3[2*æ YLD’ˆ¯Ï6pÁ@7ñ›.‹HHÀµµµ½Vd´éŠ$Q¡~é¸7ÛM!µb'§ øÍýp¹1’¥Öz ÙÉ1}¿°K\ìîXpÿG,À¦VœáVêÐAð!>0 õO­Ü¶h=yטxéozW¥@§8Ø"~¥æýþsî¸ð Qí‹Ì_nηSiW­Ügéf”DMeH`ÕeQôx¥ ª1jþò mëZR>qijH;ÔàZE% / ÖûCrŒVQGG‡š€?£NóÃËÓàÄD¬¦‹>«ê»Û«À  ÓÁ@A˜Ð`~k€£â°…n&éçzððˆgâå$ȕɿûY†CÑÇ,mùÍÆ¢u¬Üp±m)†sg}a[FF>>4’IX¬ƒ¢/SS%Ö yØGÙMØbCIob¾w–€‰€–Ï”÷ÏŸ?'""jah¦ãáI...æ<Íä5ÈÈÈ€²ü«¦mƒ—J¢££M× ž%%%0ѱ±‘‰‰ÁéäÊåGUv×Å ŸÁ˜ºþ°@"ÂOÙÖe˜%+‘ø5t«rÜ9˜5÷ÓBîGXKP¥ÜAMú†Üž'i¼EâÝw¸Z='HÊxãïr²1ìïëú@šBí•¢¢êõ¥Ýôñy¬i¸òK5re‡áBêaAÑØˆÈaácRóÕÜÄ™ñÂ\îöÐ1YN³Ûsâ­ ¬5^íêu~"€Ê{píV?Èìüòƪ'eX¯ÓâÇÁ±é—müÍ3ï8ü9G1{"€•ü€œtï'zìï[¸d4jN³L×Ô3á…p–´º®$Šm‰‘âQUç!h÷\©f^ŒNE·k̰ٛqèï“Ö ŒñºËÚÌ*ÍSòÖVíl{p¶ðíè1 ›§ƒ˜?–—‘4V‰ÞõØ8K*¹{s4ïdÍô: ìðHή¯ y§^k܃ògΖ\NF•EÅÄÁ½ŸZJ¼¶•@dêà$Lp1C„bžË4ÊÏ'ž,!e„ûpæ)]R@Ñ 0Ó> ‚•›«ûEh¢þìÜVWÓ oú²e¡ˆ’ÑH_ h~dq(¢úžÍy¥F‰°¶nRUè´ÀB!<õÛ”‡4ëvÛܳ¢Lš}]_å/»+¶ûf¬hœg%-2 VL–ÖЈ…;²8¦A-‘§ßsμm(s1jŒ‰QþEs÷©½®=¼Hª^õÔ¯Ü1qæ- ÷«ÓGa=–Š; Γs?éå«' ( &H;¦à0úzœøá9ç§Ñ•Ì+OœŠsŸZo¸u¤ô¼$™Æ\´wSXp°†)P¼ú=¨áןÓ±Z«‘o²îǃ"ÿð“pîeêí8rQ).*k“01Eµ¶ ÆÒi÷¿¿÷@F l’é;Õ&OXïPJ™íŠ˜»»{Ò!&-€k_PC… lôëH yÿ‰‘q5 I<ùæ’kd TõпäW7˜¯$°EÈ6"Ò­¬\xXvÉÊ&²/Ti‘Û„b]p›ŠN§Í»¶_Æ,aÑžä©À;n³¢µ=²tá :ŸÓº›ÛZß|Žš”ÿu9$¢Ô\~´Sá‘;ÿÌAðãù…1·{¦|$R°ÉP|@GAAAPþ ©ÌwÝ’bë~¨ ·V‘˜jíÆ¤Þ«®(²¨„±×¯a Ö5Ï_RCu=ì÷f“™Œú¦ ãI&ïÍòø¢ƒ’ýs’äíšâpÛD‘Æã¢!,Ͷ À|mÙð¨wÕŽ¶²µÈ¾:yµH§TxÙ­t‚êiäÏâãã¡æÊ%*ÖNNNî–áááFg»3>>>0 •LTSÃ$!!6 ‚¸Îó÷^R«Èì$Nh$ì¸ñF9j µå5ä{û … U䙻ﳧ5.Äfsqr%m)E- “yt|'ÚÊ$Óþì)ABk»á”bÝׯ> caKeg ¤@ÇÏýyJAé'kÚlß]”œðy2Ž‚-áêZ+¯‹Æ°º>Ä"QhÐ4݉XËàî€ý±¼EÅ|¥geÂÛ&©ÂéëþEÒð/ ©zÕüï_Œ2žŒ¦Û(¾V,QÝqˆC Í=NЏsO Y&g—}J©Lúâž»WùG'œ¥¥Ž¡ KIÜKs lŽ=™}ÒŠØßŒÃ#¥Ã?CD|ü½¯ÀUލŸ?e:Îü~x?ŽŠÌÍ…)³ùn÷šîR€@q™êëöÊ®¦`Löš¦Žø…/Rº ¦/.¢¾‡A : 0‹µ.Özç|Kë\\üµ ¥.bvêöæj¸ÊJ{¬@Ý?<qªÒBïúüp3ëž3v®VÌd>¯Û Žû÷ïÃ@c7×GP¼¯®®î¦C=“˜¦,Òñ íþ6Mâ.ÈYØíG” vµ0ÞŽíãœj æé1j`ã>¤ý¤NâŒ(iíd£Ý¿i&çsÔÌ£š0/ûõêÒ}’d]ÿ‘ émF«×pq1}¥Õœ”¹95Lffæòêj:ù3UUÕ|•’SVMɪe†{^wu/Ó'Šãi±G£¾„ä{D'±0¿Aµ9ëÆìâm_Cp$ÒS‚©îØ!¯\à÷«î~2ŽRz¨Iìp-ÐNPš’çÍ¥i8ßÅr”ûQ›ûAzSuX»5üùÈÙ¯vv#=\uôøU…'ƒ#ú®yn€úwö÷;:b„6£vKr,±ãT‡3Ý>NÆ‘Jn$ Û½8K/ÑvK­˜kD‘¾ÚÕ EŠAJç¥õ¸¾8eà05¥ìêêÂ&•Jz««KXÔpŠ Ð.™7,üâA0·£‚«_VNîcjjªü$± ^^½ñÂô® õ‘G1¸y?¤^ÑDÜÜl¯‰¿tÍú§Êj¹FŸ]Â0"ïù{Àœ´Î?>zî|µS…306¡ °ê y L!Y¨‹äŸ20‡§SVPR@sKËÓgÏtq Ó£yù`2À'½¼¼ÀÅüxgdÔ†#($Tb5ר¶•/.)¿=ªt7ÚÐE–Š„‡' >{@*¡ D˜‰<ì¨ÂæŸv/YÒ©aƒÆæ¥*¾À¾:xÜÕˆOý®1­Ñ¶õ0§ÎÄ•”bËZŒQ p×.qJ=Â9¹¢Y»u¿È¸Áf˜½"‹|A騦fÆÑö(HºªàΟ¿œøhµPyhióq:l ÚÚ2Bfy±-Ðw(* Í¿  ÐØÄÜÜIÀ±×<âg,[-6tÔx-«££áVØüíòøpËÓº.‘Ê–+Ç¡LU˜uäÈgcË[Žÿm8öAoK0 ¯¥Ž;j@×µBÁÊSs·íM·'t«}‰kçëœt¡³ÙRƒˆ—7û<ÒJé ù3§ô¥Žp£?}0FÕ²µŠŠ^fœ¯V0Vr74|sä5®x·Òà €^ºP0ä¿÷ž§t7„—÷êtg©mîáü ”òÕC•Õ-@|Oîó-¼¶pO‹å`Ò¬(")©°ä·bb„,,1òYP¹¿ÜÜÑîQGs*ÌCõ€•PÇ i,ŠÛ¯…Ÿ á(è’çŠQ›j ¡†~ì3ü¯79ldè•uKÚ0,¼tßX¤€ŽVÚ+ ?.Ú?´ãäB%Ü*)Q%Eyðà°x···¸N‡Ë¢„DDƒöØœö@"ÅßÇÄÆ.nm·éþ˜™¹ Úïhïè€êÒòóóÃüª±#‹"•$¤¡ÿ}êŸæv¶  Œ-À¹;“a7Êâ?GÁä°õ111†„Ô§ãÄáMý Øà!!ñ|ýÓññ±p`/ñ_R¡,NJJL\l:J ‹€½þ«ÊiO üà,ÄXR¹¥§NÐ%¸ ¡U虯U«…sèÑ—}¡W‹{ÏÓ÷¨!¢àcM[§H²Wg[z'ûÙp~WY/'ê)ÂGižüYê¶ÄÖ•çÑñô×–`¤Eô)çà æ*†áñI5yÞäòxžïëàºm3@™qqè+++! ‡†ä^¼xQÈ%GXZZ*Ï4ÿ6?MÃM*Ô:$× 5ë8q‹òú·D#¡[²\4Ö³²¼Œ„u5—Àˆ‚:^^š^‰©Oµ’ƒ¦ÝÅ…àùvÇ»3u“·_¿~Í‹ÍÛº$÷1Öˆ©dÔ „#yâèHÖó! ÚÅKH÷T4…LÓ|¦2?rAš˜CÌë Ë)Ó †ê'I}Ð)r"°°»çk`wYö–w8â”­sò˜?@;KÕ³˜_(Û³è­cfÝ˨.Ÿ8åÑ6+@<¸oÏ— šÊÚ'µ[iäáÁQT”UŒ‰Œ|Ñx±Š%b»½&Zç—{¤¶Ù”$,ßħ®¢‚ñêÕ«°?‡í ÌJàžpÁ=ŒåR¼ðJ []Ü4[ÎüúUãä:ÔÆãOpšáléëïuNxKóâ¿$(Ù$ŸêÄZ†\Áò0zK( `cpºñ—­?¸«y‘‹-ÝÙ B‚K&“qҙŦõ~þˆBõÏã°ž‡¡  €òý jõF©c6::PCc8X¨c²uçûÇmˆG½ =>›¶C쉣kÚ,W\;ó¢þsšÝÕÙ %¯š g7ü2|•‡Ä­a1®ÆÇÇù›º{z\€‰Â1ø‹¿³%ÝÙÓ£U€Já¾È]³ ÙÊn0é¤Ñ(¢hØÚ$'Çy*d6l`ŒätCëït<_¨ÌÅ^ŠÓˆŒÛ…ÇÉïX_ëRÒ©%áˆeì?uZÛE+s' bJ+Þpê èaåà¢&|>J¸»» 5 (PêÚMUÑ­ h/<÷þ÷aKZž€,‰ŒjnL×0ýu¶\³z Tžˆ‚êÍÕY¶v“'Twyy9wJÆAËêf\÷öú‚÷ÀÒ¿ûãzºÝUïr”`ÏÿäÀ®BÓLÛuƒdµ?êäU}ÔÏ…c\ú<žÃŽ”"­1TÊZ¿WÚ| ÂÛÌ&/€y[·ç„ÆrÛkXÛ.6Í$ïVô‚J¤tܦâMM–Ÿœ>ƒÒÜ¡®°öCmiOõÜF'ýÑÕÇ\5ŽwnObÀœ¶c)RZ¶¶?ydä?䌀…Û*ø" †fOÆÉH„ØÇ8 õÄõeÝdàßr]Í- %ŒÙá/-XñN–âÉSÜbŠLQG–db50$˜ø‹~ÙäÏÖR›€ÍâææþAš¡&d3é¦üçüÞS˨R›—íÙàqáÊfçQ¹ &œ$­@Z“ >w›A6ü>Ö ÖšÉÞÖîÞ•vçbšd #¥æÓJÙÚ(v`]µÆ–d¦ÎÉèdsôúr¼ Ìl€[ “ÌÀ¯n½xaÛî/2ŠÞ™*±%áëëê¸ûÓ“ •ý±ÂMjs_Îwï&ËMЇÎQ€McÀ ížØqœu^‚¯uØòŠMTTÔ|¢´­dN·„ÞëÖêîqv¥—©ùB¹P­×žžþ«Ê À B ЧÒÒÒ‹KKçKá‰ßNÒièQU9Õhñx»& :~U‘£Èç„~åóc<ô…zœ}“ÞÇwož¹X ¥âR8"C©²œQ[*W Jgž|i„êÚÿ7àRÑɪƒ¤ÃXfVY^SVâ 侻ݻÃ^ƒº²gÛ¯ªõ´µ¶Â(>}ÐÆHÞ͉.VÆ  @ða4ª­0ômK ÔãŠ6‚ÂøÑµœÓÔj `~€"£¢.üñ O>ÀåazwC™â.‡ÄPzxûÍÉ8Tâ.ì*ò)K¦\¤UdÊÊvµ÷Õjo|Kêíq6©q±8c%Ú0í`08×ÑÏ«ZÆØ]½©%ôLGc01 ¡ÁÍE¤þ%ßúMJÔ¹< '&Àß™*>Àl^í5ÍÉd£Œ€ŠXç{¤ SJÓγùùwß¾}ë_âÁuìëïWº öáC…`£±|US—šËË­¢¼÷œzípõõš5¶™›{{{ì§mèÚ xîûoX˜˜ä%EEe­ê„O.vJZ+¬Û•/Ò.Ú<¹äÜÙ:õ„ƒ¨¸Q¾r²8ñ÷÷ÏH:ÁõöÚå$õî:·077ww¶AþÙ39š—Áà·Z€Ã*Ô«,sg,‹*¦WƳÿZ‚’T,_c×8mqÀnF¢£Q;Næ<²ÛÛÛ•¸*ÍÆ 7}Ì‹™*3 ×óÒÐH‚>¥£‡Ëñ›M˜Ýõõ522ò&ÀP#ÝÝb£–Uy® ÷ÔÉÔ¸êúv·‘ Tn{w¥—Pkp-ªh‘aÅ4Ë7«ÛM,‡³æ2S¡Æ èˆ7!¾Ô0ÝX|AâgF £ìJ E'ÕQdÒ/^½ ”Ê^ú™&p¼5>pà "`Gç——èu“îÕPÉÁÁT>÷Ó'$ÇÝ鮯¢QoÅÅd¡ÒŽë³ n ›õÓ¿JôTë ôJ,¾‰ˆˆà>‘ç>ì$2®P£¤¤Ü?=…Î5‘‘1…𣽮7ÿýC2/KL]ýîeyS〞øºl—$¹wh¨”—Y]¤ó‹éä0`ñp°ÞK*ÉR"žžK®‰ò<ÜÝeѤ¥¨²„GM+””Òéû l¶ôû«Þ…ÉãòxjÒv¬äOÛA¹Wâ˸cQG™)½<™pš¯Ä_Iù“üC)‘·Ü´4T}R$Û:‹¶¾mòìÕT0ûu¸†„ä™é¨˜hq»rê +‰àCg™=VYAÚ´@«d èA“i8¯ûç\·€Û!ò¢!©ú—¶¶žÏW¸_œ’ü€ôSr“Èå¼`ËÑ[K9yüHí[Á-ÔØÐ 'Gsǰ&8ø9"÷> T…ƒÇõxþh€¯ˆuÅXr¥°ÂóÛÝÑ/Œ"‚ Aý&……ý2Ž„\]9uttFÖ (8¬,Zn2=ØÚÞ~_FMMÌÒ²pImÿhKÊÓ“·¨é–J÷IdµÐ®¶ùš•Ūv%Ø“1™6/HòÇ{ÖÞ¶„FNûŒ ¡~ƒ·g¦Æâ.Û¶Ö]½ &Hü±Ÿù{›=u-ª7à´·|pã†^£#áVjé_GŒæk¼•àÞ5lZŒ{‚€`‰æPN P]Óõ!Z`Ôsš1Jö{÷?âófë-¿qn©ße&®ppp@%^l–Ú9ºyŽ \Ÿ5Ý€Íe­<éhœìÖ4»ÂJ,ÛBçgÌa¬Š‘‘±³³2-!8\•“ òY:×çPÝå••ȧ$²ý‹ïï±–©‡×y žJ™!¼‹‹ x½¬¬ìà·šå»NÈ_fkGðA“»ÆC®inÐ€Ù´Žœ}¸úRùS}‚íÝz Å{¼£ZÝLK'"¸¶4c{g*ÒÝt¤â%Mó襑?©5ão6` UÃQÂ)èw Eî#ò]ÓEø …P9>¨œ'ç¿ tæçÖɸÆ\ÅôŸ¹ò²`뱪Yy™¯D5Às† †°®°sˆj(/?®œÃHÒlBJ×Λ’bÈ ãõ@ O<›•V…Þß‚$ÎÓD¶ðoßÈ/Ïö¤çXÉÒš• ¬Vºc Ô‚ÏŸ1n/¼J û„-R]^à­þ8yrqk?!UuÑ3b ÙÎ(çóZÛ¥ea«†¼e„?‰gãLÖÂj2•H§òB-Æ!ôÓ–&à¯ô†`ÒbPè`zúǵT¯”`tºC°ö8ƒPõ’Ö@”{Å*Ôœf1û2¾5t«— w‡§õþü›ôŒŒ‰ 3tidRIøÌÌÑBÁ/\·¹ò”‹V÷¼î¸ ":´´aP+Ö«Ý:DEE3jt`Í÷8ÕJý´Ê ‹‹?qØ­î_¬¥Ú, hUYEä9þ´ô:ä»»à*ã[i1%ß>FÄ­×½œ˜¬ &7`psyò'ö±¿;† ¨Þšô銗еuS3Ø1¥;²T÷ær“a¨e1°!õ`¹á°ÙÚôCÞ»H?^^Þ°3*6ÓrÞËu¢0.a{ûc–ЦÊvc/®„@°ãv[Ʀl‘1Ïœúæø;Ö*Äc³ÃʪÂxH–‚ÏÅUG E¢VD&–Vss›ÞIRBJoö}4= àɺí!¯®w¬¼–´ï.ÑVû2€¾~ÿ·©ù*%‹Aß*ÚGý#-` Ù ÍP”Іö?p°ÄÖ¡šylwÇ/aCUwÁ2@EBúÚr–O þçg¾Ù”{ì–ñPŽR5`}­'¹‡‹‹‹ó÷‰2½x&[²Ä{rAªqë.Hù¤³¥ ÈïËàGNNgT•t $mçØ œ3 H¿ ]ë? .O¶üss‰û\ÓŒæÓÝ™žïÈ*V´ÛÆéHãÐÄÛ%ij±ÅÝÞ\ͺíÙlTqrgGŽÏˆKIA9ÒËó?¼AXIN|F ¨'·Sl%K%–C]üå¹-Q:Gçx^A·ËËh© L‹Ë™§Óö´ÓôY8É–G"Kéì\Ä‚-Së›ÛO T€5OFPÓá*²·W‚_ εpÔ´È5ª¾¾> ™HRúüü—Àn¬sÚ3í %!UÝ5-\ù5f¸5V‡Ç[ß~™hð‹$†lÏñJœ¶íŸ¼£eÖÔ·¨M½LxÊ’ {[ÎòˆŒrpí3N <­%&÷ÍAØÚî¾ V‰AÌ·Øa·;¶^k!@‡([YÍ}ò-¢t©t)œÞVÕg„+ˆvgñ§2‰" C ³–AâBšªþd®2+G]=½{ä44$`B!+ÚÝÖÖuf‚ té7£(*nŒ`A6ì÷ð¯~6yy)(”LêæíüŠö{jMžÅqø„ñîüªˆ8¹7:j$—L+k}öøŸ×çÎÇUV¿GR7zÝ-Ž:QZ÷ ãl¸zY Q'uiè<àbl–7¨S•ƒ­éñAªêµÈΑ½Okƒƒ(gO“ø&ƒÿ5¥3~ ÑÔœèÖöO¤¦¤?÷s ,LìD™QTRRÈ ±>à%Ĥ¤¥¦£”_(kÖ×Ö¿þ'ŧÕxò^«È¨;šÊíÖ/æëWâ0<¾~ ö±Fú;:²g48•ž ²ç sùšÀ>“R³Nl>ƒNÝg&WÑ/ª«ÙaÀVþÖm8é6©MWg¡Ù7_µ ¶Akà›l†J£;GJJÊödEp<“‘íá²(§ãv'ÀNœöÆòl"ì]VÝ]çßêõV àÎÉdÓ8s¿ãþöóxdG¬‰= …Þå?P|*Z§Ø&cžVú_Fc玛¦ƒé'ZyMÎÈ‹u; (ÎcuV®ßK¾0€Á#Dœ$œXhO£ œ§ØÕ‰UïÍiVwºš<2Ù¸S fãÁmï¢y„=g<Šp“dXD,þoùíë\þ3P¯€üw¼£§w?·DæÆ¿57þËqà/•­w{}1 ”Ü+Fð½² ¨ `ÐØ®ˆ#£Wãýq¬. |å<2y‘®X’°šœ+†­Å­%z[ò¬›Qò×%¦2|nnú¤‚„k^™€C‚|¶Tù3tZoG¿2Åã YDÀfýGÎCm˜Û‚Ð_ê·¡¹Dób8õVÐÑÑ¥ü5óãv]*’µ{ìùÉpßáF„×UµÏoCÚ…~´TQn8oTiG‹4t{ž„c6æá³¿‰s»ØÀ„dñÞÆ‚–:ÆÑ¶‘šÈÌë•êãîoLðÖ$éEtU¼SûCb`£N¥¿›×Nÿu\‡òµ1Q:|NÜ?áJIí¨F°Ç¾ücuÛÚ ^0‹j/:‰o(Ç•ØîíE3õz`ßõú3;5…Í·/0¬[£|éa“Cðs—$4j“Y·MKàõ[”æ9A…zªÄ=«ohHldH—”Û¡D‹µÛôJºHX§H²ðá+ïÐ=ÍŸ$,B-=œ2í§¯¢|rW¸Àvõâ’ÊJõ9”xÚ·yä~¦„‹Ø˜úÞJê†v£×5Q"V°§Xö÷‰µ 1äReªÍÿ’hÅ'ó:C¶xjóÌFÁFÖyù]«‡|]c—  !Âz¥àº¹’Jælû¶0þ„ÀSŸe’ãD‡@d®ö½ªÑF8ÁqÒâvñ$sP›†ŽÀ]†/€ø¶RÌ]O *U‹ÖÞÇtGÁïÌ¡þ:'¢oyd Un°ÝÕH¬Šÿ9DžÌðGH#/à¦È¸_PH3x5AwÔlå¦Ûµ_›Õnô…ʱ,¨]þö›ÃÓ?É>\WÜú¾úûÜêââªz[¹™g>YànDBÂær€@qü¶J’doò=Ÿ¹éëì ûQSHõVÏÁÚ\ßO/ß9êQp˜›i¿ª9ž>“¨h—Œ€‚ŸØ¼ Íkþâ+kþ*U`Oý›yØÅÅ4ë-»äó…aB(Xò±V7á×8¶ÁªÇH<¿ð4¹D©Ÿ &uvþ¶¦ðA!!æ£f_FÚŽdΩåºO÷UgÕŒü‰h—67»YyIÕèrÃmäóÅF¶xœ¾bƒÄ2“–«ŸÍˆg?tÿ|ÂÊéã¢}ï+Ù¹ˆÀî#¸œœb22=fL(ä1000_­" É—Ô*ßqœ¦dI&B9¤FýI6bn‚- [æ©Ú²á§O«¤OÏìß6õX㢿CE´õŽâ› ·±Pðø$m/•è.Ú' ºó¹Û˜Ž…˜î}Ëû÷ÀUçªH:–"FÛ\é2žEë°L¾Å »µ#üí® ’°£„²bÆÖ¼¼¸}g҇κžLÎͯl[ â†+î÷a­uqÊø-¦Ñ2˜”GWö]çºðêÅkÕØÀRs”Ks”LUÒîÄuÅvÏɆQé`ù9}@_õw§k .@³C}»klI ƒxˆD"k(0济;Þ×7¤‘<„;HŸOÊ…'Ýÿåúc`²}D¢ºÅô¸2ŽƒÔûæ/¹~h:€û')MÅÛ©Û’a.¨kò¥?+p]ï› 'û?ìVÈí4¬„ÒÑà#nÜ“q¤òJ ã DÜQSGòôø€€|*ª¼FqFYÈ«5½Â¶%Ô£G]‘~âC!¥þ¹~¯ûb3FƒÖ]=¬ýÑveêiM5å47OV{ySzÒL–œÍéÏ"}^vh·nÏj-‰^军#8D%n§·MÞñ¿äsWkm°j[£ l­ÜíE'Q¡´×ÞÆTìàTü;ÉkJÑv,@Ù Ÿ~„L!ìg‡êŒE‡?Z¢Ô`ÜöNþ¯­Œ“¨pvYÿ”Y¸;#ì‰Ç=ç¦B¾&~¹Ëšm†ŠûÕ¦¡Á¥ÏGÏ4u«r¦¹i¦rÎR¢ŸÓoå1ÆîjÑ^ë8I‹¾~IF—ùq)‘ö0=ý |L—eâžõɧÝû¹ÙäEÅ5/l/œêï•_"¿AýúÖK(»Mi“*õ*³?:Ë`j9öˆiílxº¢Ï¶}ÐÔžRRÝ|ÄSU-A<±=:Ÿ’öËÇ÷ÔèÕÖ{{ˆ‡¤”ÁÏ5¾ŸÌ¬%íqÌ ÔàŸMïUœß|†>ÚªÙæ–J¶ZÜ;Áˆë`çÎr¯êôdwQ@ÅÉ«Ùõù§âØèW¯»Û~„7˜ïƒ_ ¦qY‚ÇЗòU‘ÄBOìkÎð=->þþF]˜ëÜ·¤c~Á]ø—ˆ}ªÚIêí9-$*R±Š‰oË“¨—zž^y%fŒ»`Þ4s糆 ½zèpú£,K»ÁùSù€Ý“&’÷)òS\Ì5pÝâú×22 g ±Ü‡CâOÄ÷—v•3’p K•Ÿaiâñ¯J!ô°Ãåºèªtñ?0Ýîth|¨½'à?Ûgí0þÀ‘0.ø–-0 `ø•ä/  Ë2艥V-m-éÓ-Ê,}üøñ ÂjNvJzuõ¯’¹8mOQggöD6«vz8¥|•7 ¨?~ü€bÇ¡N*˜˜b€Ÿ¨V[§-Uc±Y.šÑ6< eæÎzœÍ¸òYÕ°_ˆˆ]Ø.z±­pp¡æˆÃúÌmK7éÕX¸>ĹdniÚi#CÉÓE Ü4µj¶:,ªL.è ÓVG”¡ÕLv®Ë™Kv4¶ç¥»#jî¼ðÝ \ò+)ÇUP׬Y_svøŽÁ\mT4Úy—çÑódÏ#dÉ8 ”e¿~U\?Lå©w²”ÔÝAÉÁ¾!Huäy°~T6ÍÑÔP&€ŠŒŒlÃi÷%ð›[ ÚCD/äñôÀ¹âa1x³ß­'^Eôˆ¡ ~}y#æ¼îxzbi–jÖRô€¼ÀH$sB’Õbòá÷ŒpÞnqº†Öh y˜Ï,f/™Œú‰yyqßïLU Kóý†Õ€€‚ûfÜ\Ö’0ø<¹‰„C`ÞAµ7GƒGó”Ël–„¡ó¥/o¼“¬WåÔÛ8 ¶U¢» cÈöámÈ.i’p"G? Ü{B|ö:Ûoa¦;t®éçX‰yÙdŸÿl‘¼¦Ä¨—LŸ8ÎÙDŒ0«k•­¼ªbͻ̋ìkÊpžTýˆ½{´¤+Ò%/Šî&»ûë›&Üh¢c~lŽöN¤`µ yž«Ãöq¹Ú¶ Ã}¯«¨+kyf̤Ý{lÜyøÓªöšáI|ˆ©Ÿ¬j°ùòvÙOÂöçèlä(9ð-ž m²B‚‚´D-ôo¥¥É¨©áòFƒêêê2€å½XÏÿ]š—‚":àŽF…k¿t•ôÑÃîÙa¯m¯ wHJI‘‚7ÓÑÑn/ 8–^¢º"—Ʀp|[;Ý^껵H i¸ÂWC Õ­JµóqÂ$K÷+{¹[ÈE«R®–Û98ÙD‹YLµ¤~¾ŠÁÛ4¸–ùž0HñËÂq›õKPUîZÞéºoz íJÊ.H&//¯L’¤-FíH b† Ì%¥÷ê-:ö©O«`_®¢nµ]Ü´üÉ=¬¤ì¦ìÞæ²€åzAµÈü°'ŽÎhþû‡Ú9’ïB7¼ù?;Á”A{ïYÛÙå•ßvF ݰÒÉø#à°»Ÿëq’fɹññ5‰up¸]”üxÐ`--ÜdN‡Z #‚¸©ÝÕëjzïR]¬qnp? è]6ws™yŒ_îÏ»¡y™•æ']:.m }<4=àR‘ؽ ŠÕÙM¸Zz††¤ÓÞ2 (j©Zw¹]™eçý½mæ»ÒW¸ð%˵s¯g¢sÑ;×»2ü…g¥ /b íX°È~{Kÿünß8ÁaßÞ‘]î¹ÎSO8´/Úåó_ý]êwãA(¿º·Y™lt©ýa9¸zaévîêèëïo×gÔ)QÁ>¢[][[ÚR?!¿—ãÕ”:R¹*L¨ü>ïqáꇗM¡†Ü<¥2"MtßGg2'õuecÑZÚ¾—ÅÓÞaÕ­¦'aþXÓÎ5Ž&5$AGv·¸i`KåTh^5ÙÐ8‘¡j¶:mZ_ÚVóüheˆÝ¼¼Á¿Úx½›ÃZ.ºßÂ&h‡ÀÌB[[54ŸAÐåÎaÃ× Ül=XŽÚÕâûÅï㢙çº]ÇÓ…Á…ûÇ™§OØPLHñ§C¼¸˜>D¬R¦Õ¿ûqqqûl FWO¯«·W¶Þž3U¡)Cª¬¬ŒŠF:•·AëªI£pz¤|æ3ȵDK vëÏ DN§ÝÞÖ@º‹j»Õ^ÎO­­­?=Ü ¾^ÉN³.¯_"ç`‘–=ïKç6q‡çžNÀE™´øHŽ{¹L¹øB]±nÑʰø8ŒxöòF:³>ñdièüt”ˆØësÛàÞ!ÇèÃÍ·Zo&Oà¾ôàyKçG¬,ÍŠ î§XÒòý„µE_½–a®„0Ýau$z»ßJ‚C•ïÏwF°ØÔ¸Ý›l75œ£ýœäP– ôeMSY"Ÿj2>íͱ;D1ÓŒ_+SY¦"‹J̽t~ø¹óºä½ÅÂÑF†ÛÅš…è×Bžm¤­é\Å<èȹ_•ÏåPXõE•Ùj¢q-7š””AaáÃݺ=ÎJ`úƒÐ¨‚‚ÙÙ?C­?ìV%€f2™­çxŽNk_^¡V ‘ÀX\Lÿþ} ݇/ƒÛl’èš®#÷÷­Y­f5,RY8êà6ã{üt ØÙôŒ “‰ÒÌ%î%ª¥Žp2fæèùùwí!¯ p­ˆˆˆ×B÷íînoÖ°‡ÿ3İÝVWôÊ֧լߨµ·g6ËÏ9áÐÊÏJ%D|o›sÁˆÖÍÕõp3¯ú§õÓ“…‡3:MÀŸ3Ïm»„ò,ª6ªaœÿ5bß©\G!Ö+‰«ºûT¡æÜõ'¨Ù1º4”k•È‚³²NšË‡užúOj®‚9ªÕ]VÎ Êâ°òF¤WWÔv¦?Æ ˜xr$fáïi„hk×MQÐU,mj]~,˜î/Iö]þª°3WÚ­wéWMå´–­¯‰K ÛL‡ÿÁÉv+ß´w˜GqÑlÁÌ¥Çn…ÖC —ÇÁO͵o¦ãÕ×°³æ)-¦à¾“ýÂÙS²t®°oÉsY"÷or;³ÔÕÕíWÝ[Zò°Êàð[¢H«A¥Á•À+ýãõÁ˜U…éF.¨´)TÑâ|ª•7…œà@ß2é¶>"/lmÕ+Í €Öiñ;¸>8èì½Ùµa’¨»;7—c~åX1†D Ò^C»‚~·¾¨ð5µzeÞ Õ"†zQ‚¥ï-Ñëp^Oó Ôù&û53S6>>~gv$Gj>1œ% ÅG@ù…a”¦k[ˆï€¼Aû©ÑãªÔ°Š”BÀãÕȳ«VñÓt’ûýkJ²DÅþÒã¯;Ú* “µÏ¯7SWô_‘–‰W ¸1ÆL{·…q`RÝLµ?ˆRE|Èî]ÑÙ.rÓ›#@#Ltéÿê\6…¨Ž{›•‹Ã¤98÷Ö°7“ýЂKë—´¨Ö‡è/·—öøÇN¨ÉÅœ«¼Ü¥<©ñß'ìå>×"Ó Ô! =ÆãlRvhlí§•Ë6"i ÌõáìSF/Jü»·Ç’÷ÓØ™ÛÙ0U;ÉŠ¨iîh®Ü’dw[9¶µUœ6iÿeôãvî]ö%@~š×¯_WìDFE=}þ¼¥§'Øbª2âÓ§ù€ÿ7-¿>xönTB!-a/2±XÍß-wFlO”= IL (²B%†ˆLñ8ÎÊÔ Ìäs Ø __Å :N΄*e[ðîPLʳçÏkv*§L¹ ÿBXØ%d$$óÞˆ‘‘‘r^0:::ßs¡Å_5‘‚š:?ºµ Kèú/˜‚œÃÄc¢†8j¤‚<*a™¬AÂ~…DÔ"×ohnÁìÕ>Ó7m_­º3ö«ÑúL•h}f·’à¯>¾i7› 5!&&VP»›qšc0!gµœ¨ªb{ôèÑñÖxx}=7§Ã¦}¿Íõõ5 Ài\{‡&`’>~¬¬fÄšˆÓUÌ$":6bdb¼f†Ž‰é*垆*ŸÄÖ9î¨å-=Àæ°ý:ÔˆÃiÿ¹yßýæ^¾vSŠËÑ*˜Ô7࣡@°Àðð"‡&t®ß3möÔÄ…©o7)~³w"™?Šƒ4¼á ÔæÚ+ä±™¢¡ÚC9, Å¬7e(†l@1Aœ¼¿]¬á¡ýð×3šÝ€Ä83MÿiýŠÝmðó„XGl"ÔjG€‚ƒi˜uªF¹?–•IDãÜÏ5âßÌØ£1¯ è ó³ƒƒîëý–L–gxxxP²ˆ–Ë šR¡Æ†q\rrh—~³n ûê½ÞŽñ³æU!i ý¿Ò¸u¡âðš™pgïdoìí ,¶¿èw8[ºÈÁ\¯=d¡mŽ˜Š*¸Ï+ H±²iT\œSÓÇ&sYª{$€‹÷ SûÅlû(BWçp¹kÚ¦rÝ777«µ¹RØSI¬‘ès=L[|ZÇëµ×é½×ñÂÅåt¬T¸•þš*îØõÅWõ¤a¼^[¯›S[Œì^W ÖÁWösöìá’yØáÖ<*Q¡æRï}@Së%”C¬^åmòžš¬GåL21'}Ú´ht]]Ù[@]jTÀÂÏ„¡Áuu\‰¬Íæ¬LÎûï 4 nª÷p¥ÇeþÃcì(üé°7iW§Ç;Sq\{õG¯Ùm øCŸ‡“f@]LÊ]&ÎB*ÏË›R·[›§tU%omoüôé5Šxs:å²[³†=õãµ±1ùÕÙŸÑ”u‚Žõ¶\ÌxœÌåd¸ØÈrZg–T²˜¾>ñÝyjf†¶•I¿YJðûúá\ØJ[I{n†^Pd®[܇Â.C;5¬a§PœW³ÏÓè8m—W,Ð ¹.‘´2ûÎkgÌú²ìÓX´9ˆÀ.æ5bïMlÿê:›_q@¨ÎújÚ*àš¹†JÎ’û1ý䪘_ï `+\Ëü°4Ôv2–FÑõØ8(8g *<ßÜÒ2Q樂ÝÜË—ÀÁ ‡|×-ùYe¥ u$è`{·qiÙp2v鮊‰È…=ÙÑOÒÑ)F«»ŸÀÎ}ͼ0‚ÃF§œ â6Ä]»ê‚GWÔ4¨?T­l®ò¼‡‚†<»¼ÛL‡ƒä­gW«0¤þèÆ5Pïûû{'Cá@k°wä´7Ø…ôâ<šfàz¡ìzá·–teÖm¯ÀÖmo¶jºÅ@hòDaUAP0©™ÎqwZt­?ùTô³1†ß9¹PïvÁÜŸ™­00xP,€ˆÈѨ²62*êÃï~ðXÐñ—ãöÅ<%¨…0–eõ‡7Þ°PìX¹É0¶G’gbÞ&ÆÝåxSõJ¬:Ô|j| $ Fèt4](L¥·0iJ›¥÷qŸË¶Jô@í ã™ ÿ~uÏáÑà€¶˜½ˆöM{FÙ@kdäˆ,*7id3\éL!2ºÝÏX]O…rð.“ˆj?3fcB´_ j3ÔqVRR‚Íëþ«e霗‡'y~~^ì*¡°Tž‹¼ÛïñÜ_͘§\d؆³¶“—«×Úѱ´³Óç4çÑ1®íÕž½<Ùº¸Ü*š(ÖyÐàvÖˆ=Iü+ßñÔ#¶%¬->‰SABÅÉë²E '¯þ/×i@À[ïqîÉ`·Ùݾ¥÷[sµ )ò~ Ž7†³Ë¶”8í×eèky8ºûþÇÐYƒ†ÓŒƒ¢Öw%8eee …pyoÏõ ø†Šq-ñž `Ì ‹‘àØœŒ2OpýôiËcAqš¥é;z !Lûõ!F\*¦I¨B›ÉpÖÁNÕܘ a Ðý1ù ßžDK "#gCP~•!BÝv2„C êw€qxÅåHmbbQóz\Ba½0»õGR¶¶¶Ÿ¹][ü‹J‹6ÃlxΊ*ô<«›[X]m·¨šiW·jrvfJ8î®+çÔ‰m)mTyXOW 7v.läßá—r²†—‚6ºÊÈwgÇÂñ2½]]ŒŒ¥RWýý…åÜ—Çœ;Ò‚¹YúÀ޲÷A½(€jMÖ,øa}f·Yt™’Lbä³ÖiOŠŸÿ>Ôïät{*ßäåÅÈȸ>^¤ã¡èµ[í Ilã…!Ì‹/ÈihF¿µ–U×b9WXçÕ¤¼E‰JLìéŒ jˆ¼?™ jÏÉ•oúÊÏf¶* \™:Q™“³qm6y&W vLjp0kÓćÕA­ÏÓXã—ÃÃc=ŠˆŒ¼Ÿäjz²ú|éaòF»Ï–žÂÓŠÍ ×.£¡7ÿVöÑ£¯»[»0“ &C¸7oÞpy4"/ÍqZË÷>‹m(Sì÷À°0@!XâN*Mráê‚àÀu |ë÷h‘3,‰(]%.àr¦îžXÐ(þü¶Q-33Ó~cÈ(ðùÿt÷†öN‚IÄe¦öôÑÃÉêWÅÃÀð÷ ¤Û‰{b§÷lù%Ú§˜‡‰põá‹ñr+‡"Í­°p0”žþBë³¶¬(0WÎ9òÙ¥æŒP¨ZWTqk¼h àb¹”æ« Ð @?¹ízR€øõ%²AñbïEð<¢­ã)ä³&ð^³…üCÕzÀ­^Ÿyݱù#âN¡çÝc¿áÈu2[•3R7’S¿ØÓgÙ^0Òåx©Ø­!þÖ¤²dV¯N`í@«4;×ÐÄHƒäÉãÑ/ãÑŒ¢l_°—êrjŽ|ã¿Ú .¸œ®¹«¿x}q4Qi,”VæÉß7ßí9‘¶ûA›ÁÆšmݧ3U£F²qŹ8[ èöMÓºZÿä­«€m§W5­ÐJwŒ†ÇÉ( TU·¹™ß²n§3|¢Ñà [\\„ìm*vJB’Ù} ÞùúT¥*¯¢.Ó(ßÌ:”l¼²²â0æï%J/;Q5¯µë›3ÂVÇUÈzvTYñŠõ»ŸŽSÛwü)3>>Ø&m£’®šÉr“·Í¦Ü}sh½!>Ñ€L”„ÓŒFcgt¯©Þíã,[†Ç Õ›iJ,_HV_kb$™Œæ*ö~fXJ:‰"“väžC[‰„à€ãÞ¬¤µ5½|¶”}öºM2*&¬ÓüÊxV L2©¤ù•8í¬êêÏ@ÛpÌ¢(QÉgI,µCÊÇ— n‚è°yà¼éÏ?ê´ø•€mÒÝÝ»]FªHÒš»åµÔ 5H'&#®´P‡²' Ó D„œšzïîü1 àb妣AåûAP5sñ™y•–3@å †®iO—¾ ö˜µÄýÂ(W`IÁ½<(›Ø6Ö+›P)7F¦kºf ë‹^GÔï´Âµ ÿVõÀ:%›@§?Z«ë‡ƒ‡ô½o§jC~hx¨[j' TÆ<þgù[¨" |›î¹~skG{Ȧ[ºN÷4è5à&g6ð²yßOy;`¦j$´+†¨kÂ6ç>ýN$À;~ÜÞ\½b³Äç9Å€¹¹Ì.z< Ì:Ò¶2­ vX5kê"0å¾ÏÑÇr‹>}B’“—ÇéèÆÇÇGa ê-îrÔÇÆa»üÄû1¢!`›Ò¦/mèîíôŽ8ٴи|yT%ÞÚ&yÉfOiG ùç.tt`Ø®† Û{&Ò€ÆtŒ«ë5)3ì{+.N„ÿeÒ±««ËÇ×wae¥­ÒbêíÛ·ßÆ(èèùøøDâ3Ë⤫BÃÂVóŠ ÉÉŸ@í‹èm—ß ä­ƒn›CŒctdmXSÕZû½«x ³a/E’´îž 'ðPb£”ãÝ™ÄDËÚ®ç¼Âè‘ "b3Î»ÉÆ0–d/Iƒ’9tš}§í‡%Ãô ÈèŲ±y•|y“2ñò` rÈ÷ó>ÝÃ&ÓÑÀ°Ô‚·’ø91nsïÞ=¨0ÁïÇP½“—Ô*Ö³[}Lqw‡qMÅW޳îG’¥¥¥oÃ<ß_øLÿc– ÝËëÎ.ì¨ù9Ý>`’ÅÆƒ„0·ÇÙ|6Ã’lãM·“‡ß"""$R¸ã!{C¥ µ=Ý›Óö/‰18{¬êÎD„SWàçkïù•…÷•M‰úàþí3 bÂF³IZåÔŠ¦ÚH™›«³µD>ý‹Ã¨I1«Å${¥æ[Šœ„þ;ۜꗯæð­œ–‚"g¬$…îÀ¡rêo4Ý«½Tɸ¯%ݯß2ælIÕËóp^]žŠà‘pq%ŽŒ(xÕ(65`éæ:¨°ŒLL]ýý«¡l³ßgffwÁ’eùò]öÅ]ï’óOd|¼¨¡!)På¥z·[¹— H8QçD×ÖÖHY™Ú³g!U%ÇÆ˜®î7uTmö)[Nèôð–n98É—ßîðW"ɽp ¥¦î=h­lÜÜÝš0Ju8 ¯}“ÀëQ»t•”„MHD”Œ!9SœT~˜jСÊb̆GJzÔs¸Ô *øµËùr# ¿ƒò W:E /ûPÀb0礑‘c|± 5•Wﯯ¯ŸïÒ10D– µXÎFHrëã ‰q »8!BÅ­za›L7xÆF–nS¸‹¶4>*º²_é¾½â¨!KZö¼A+8]1©*Š(.¸œ¿K9ÇÎOgÿöjËòSçŠÉ´{¸ H¿B•þœþ V˜)CEp]–‘jjy5”•æ½ðÁ²ªG®.Æ õ-èí¯óðlÔN,l´_ŸIÚW¿apù6ÿ>à­&1J¦£–óÂ#¨CN©A”slO¢1´}gf—Jo{×ã[ö{ȆFþDÊÅ-SRš÷=—ÐWmfwÌD²Ÿ¥ÐL¯ßŠ\O¥LIa†¢‘‰à‚ŒN÷—m (.¦‡!?»ç|±¼Ôϵ·ü{1^$R¢G½ ´0™èz^›.*(˜”Àh†Hx©ó.Ô! |8tb áŸxÑ¢>Ø àêyc<=5 :) ü+p^^C£ð‡€ÐР›ßA‹ËQ!¸< ¿~©@ÕÙ€mm2SÐ2][?»ÀžþÜó£è¼»tkóMúu 4´ø—G…HNM¦¿¬ÚÕšJ—RŒ|´‡OMlònåS%¯þŒÐçIÁiä×á:åíáŒDÈáoÓÞzGÿg‚ÎvÎáœKHgÇ)ÓT·oüß9¡NY€¡¼›®¶y {ØŽeE¯ÛúÄÖÖ6 Ƕâ0<öp`*R…4¥.h}¤ébãx ?oMPá@eš‘?ù_¾•зJ¶È|4íAJî‚5À–‚×8ôW…œt/µŽ]y‚Z–ÖÒh ¸¤YêD6±ߘmàš©uШûüò*!⇀TTdåÒDND´”äðáØ,¶Âƹ^C& P'˜1¾ƒV¨[ØJ£ÇÕP••vÇaüʦ×Ü;§Z^,1•x³tú>æ6àÉëΓÆcm´žª"\›jæ‹Õ·ï>98Á´!šFámc£¸*c ¹U˜ÙŸ¿¤Æ`D(ø%ÇX€-ññP²>¦=#9ù·n èd¡ãm«ê6kç„Á’ÿýɳg­ÛÚmê÷Ϊ¾ÍÍ þy|=2]h§‘ŸDžj"™kòŒ–Æ'X†Õ.ôâ®Ömgv©´åêp|éöå³¢’Ç^W_OnFd»T4IPUÿWL¤R¸7~‡' ð^QCÝ?ØÙ?çÈgC­W¾¤‡¬®ôÄJ Ð!Ÿ‹B&•ôƒvh¹É0“£”e0Að)*5uàû‡ñ|^¼)))@‚ On±N‹J¥ù+ÅSU”ú~.ÆÂÚÛÌ…²˜©.)ZÂ¥ŽûŒžÔó¿úïB¶´°&V–òP;ï¹2²‘J‰®o™R ¾?!À:Ð~FÂw]2¼âCÝ¿ÁQå³äóVÒ NNc"Éîæ¨?AÝÐ^³1î¡cÖg1œ±uXhÐ&GÍC‰¾Ÿ?¶»:?Ÿ_:R×5ü/š%UµC*–V³{¡ÅB øìÕ!@þb”µÿ­“ýŠ5uù»!ëÈ®þ¶x•`sgV¦AÎY3¼ç¤çjÚ ô[º’‚­O!¸/‡Aÿ0%bË™Z®‡P¼Ÿ.Ø] ³B8œ:Š„%O/WnP°Ïãzq½{-ƒŽW{M°Ÿx}ðüÈÚÑyÈãÔùCt³èË4~™¥õ?â[Ö!×LpÞõõÜBýñ°¤–¹×ZØÛ3k{œÄdnüå¼v;ÝþAœ§˜j$xÍÆPfØŽQeä]…Ãe…f£»KÁYIÌÇÁÙ”j·¼üÛï*~YÙæ”vEXq8|ó™7óxðׄú/©'´å°p^€©~}¾wc5ï_¾{ š¬’-Àù¥fã´/^¼ ,¸pª*IëÔTâˆÓã\c÷ôô„Ä’þÁ]¨ ˜ûÂôçâ3ˆÍ6tS¾Þ‘Ó ™èpȳø½{¨©¿EMAªjmÊúD €ÖŒ/4°`ZêÇ ÜáPp׌¶ÜÁÞÝÒ3•€zžOsw™1W~³ëâë¡ ­I%fÕW§0d$“,I6> –%äŠ~p܉ŠÉí5¦u—Ïß‹‘½õ¶°Šç˜G‰"¾Ò~CNLLlÿô–²; ¨Ú¸Ù7y9¹æÅ¶`ºÜ¦ÿjžÂ$xµ yé¾Þ‰+~’íؽ˜ .ç‘ ‚_Þ‡‚^¿ÝyÝZ[:$D» ;7Kê¸æž(}šBÈÉ÷¢^Ú‡‹™Eèë$áák þx†#ßdÏÏÍòǃÒt‹mWÄDê¶·Í%HQ^ûMó)55¼hÏ7Uü_·®€%º**Hò€Bˆ,j®ÃU?VιWlá@î#e#Ûã„u^ÞünD§ãåÕ;„¾é¯j±7)íN´ë³VŽó# /äxyºf¥ËD/×®§\îŽÁZ>ÿ²¢8ÛP&Ú=k¶À×fsÍ'´ŒC ‹ß,±Úh!ôc<—0–î÷J.íîögI&b`ìýqõ0.s¿°…jò‰ÔqØ­Òëw"Õ××ÿåc]@ Æè#sàµn©sêøƒŠ\U6hxh™ß)2Ðk¡þX5ÙØ¾cŒ[LbÔ˜ï.p,VÖôµ|U³Éqo+ª 7¬¢SØÄó•R0¼YüöÏZ»Qô<Ž+jwúwgVT!Aƒ¾¿ƒŸvüœ¨ª(Ïí›nðôÑŽSü5ÌjžÜÕ–úôã¼/{îPmß ÐšlÙuÍš¥›Éö#‰–ªZ â–½pqƒ)X¬7A[ åxm‚eâ wÕ&±OBh{®e0G£ïïïõ#dvaμº¡5+~ÈWï=ý!ˆl°;Ùè”ͦϫ¢Ðvn¨ÙÖ±¨Ó–Z=¸»$F9ä=5 yö»E¿AÅ8]òNò•–VýüXÛnñ®Cx‡µ4éÂB[/3Y‘Ê=æ…™nø=¥ÝêjÍu¡¿v/mÕÐG[E»\õøäzo’åí²O ãG多•û^˜+‘·Ñ=ÔwÙYê˜?«ás}¸‘xHt˜:²hƒ,.¥*¤î‰…ã¬&Ù%h–:“ç)NZëRËé‚ëYl“t°ï´r9HPíRóîÐþGß0"߸vœ¦Y½ŒÃ‘m¦æÀ{ÌYÁ\”ä™Q£Û ¹Urúèèlyýdp¬² ÊÏþAú ÑœC9.¾&·$mOU;E©Ú +–Mççú½_2hõ#È.—ÊXúõi±Ù”ŸS`«íP÷¬´Té–7 ª~ô¢.cqŒb²â6C Ýns{] ¢‡íh›_hbU2®¹ÍàUð?Ö×Î÷º?®T‹Ì“BoÓ¼[ÌÜÄ $Òâ†x3¿rÂâ†ì²–úw@„Èò«l‹67 ‹Ï¢ÌݦM†GÃÁ‹ÀkÉ>D*D’ AÚ^•ì_™uôsL‡Vwü±ê×[.¬:xóJ;ªZ­{áÁÏ€·ÉOã~by|ÊU&“§Ö'AˆR’èoÔ57ÝóÒwã­dÄZ…AI雦œ@¿µç©À©Ì'U1ÙØ˜æ%¥gáqrŸdÅd•^9&&·:Ø8WØsÝõÃk¿R·* b&PR%XJkú8®rú\ð‰Û]r_áŠê2ÅѾ/ÓjŠö'Єþcy’ƒ»¾¤©fŸë–¿C‡Gà&-›éèî-©„¡wݪÈÂÜXF÷×µ:¬/Y~4ÚTqŒÒô% u‡e™¼–îÚØ…¿t±[ÌÙÍFl”s…uKž/ —Ëp¡ oÁ4·0 $¨È7tHÈ5÷??Ô`úÊ2N\I àŽcQ·îÝ%¶¹ã´Çï3Á?5çymP×¢uºJä’Ô…m,_‘¸¬DÇýÚß/ðìoÿ¨‡FôTsF“þæòg½²8DAÑ5$Fã°v®>÷8ÒJÆ@“¡üâ€çœxbínáùÐþ±Ž ö‹«+aVÆ£DOòl‡µ›·ð ‘9¢ü24Ò¸¯%|¦ç·¶éÿíñõÞ°5*r”ý¾äÈkíˆ!96V ¾1VøÁùsÀH*ü›CùlþˆxŽàejU–3ësMMÿñeíÅS;ŽF ÿý¾ÿÙRþÏÇZ¦~zÀ¿$ÅEþ‡WØjý>húç£Óå†ïj?¼éYÇ) xˆ I ò¿ûóßÿkæ&ºFÖÆVöVŒ4:Ö&´Æöætú&¶Ú††Œ,lôl,zLllìLìzì,¬:ìzLºŒÌ†l´¦vÿÓŸA¬ÌÌÐw6úß¿3üùý÷ŒŒŒ0 Œ¬ŒL ,¬Œ Œ0àUL¬ 0øÿWMä_7óoßÿ/y8êØâÿϬ7>Ï3õgøà¡ŽOø cmekOcbihEcnbgOkLHý¯žÓf7þ½µþ‡¯ ÄפþÛ{ÔVÇÖåo>à¯gþåðÿ|þ_neôw[ýëA?÷/„¾è蚘›ØÿÝÿ»gÁ ÚvV¶zÿøKsó5¬­ƒùßMòŸ'þåÕþÛÓÿò‚ líL¬,ÿf连ù—cÿóù5øô_ öggš\ÿ­“ÿÿAÿ³1ê²è²±  kÈÎÂa¨§KoÀÌÀÁ®ÃÁÊÀJ¯£­o`Mkmiôÿ‚þgeedƒô? 3  =#=3xÙëÿÿ@)øg˜ÏÀð¢oåÀ÷ð¯øÉ}ðõaïuø«+."sý÷¥!; ¼RбtNÚ™±’_Ã}¼¿öVvzºé> RùH¾Ô½º÷í%ñX«âĉ¨ôùWÊ•_=„71?x¦ž„YÈžÝn¯¯Î0K•ˆbX&³V$õæã×ç'oËR®·O•…~ïß´¢#J§òìm4rñü<ÖQ…‘1ŒüùîAÍCL‚¸×DË/Œ}4î‡~ÿ‚lû”™Ÿöƒp'ÉÏ'ÿåɈÖÌA´ß%…g*oß¾51ÙXï`¢m¸“+Põ(’k«ÑÂÐ((p¢Õ¾ý‘ùµÆ±žØç›‚?¢×îfÃ;B& Þ^ Ç Zö¦ÿÁ'w®4å…o·¡ ìÍZ,8Ia¾%ŽìîÞ¬®nãGg”ÝOê©sR·µµ]\l=åÏT+Ø]7F© z곦ñ‚_WO/*2Ò9õ%)j’öÿçú›'–#u0ÒĿĥâ}…M~Ø™ÙÔt÷P5š‹uù¹fó·'Ÿz Ÿ–’ûó¡ÖúÈÚ8Ñ®Ør““¯¯ö%ú %öU:lýü)£­=—ŸŸ{ëÉÿ¤…ÌÙ3_~Ê\^wç³Ý™?~ gKó9ïã³=m¡Ï–J {òä§1óƒúÅ“¸œh99]7Grlk®[Q24¢YY-®N?vvÎ<1yóaw¡…ïÌy¡¹FY;4V,[X¨«é|ñáøÆZ‡‚’Rk+ &_;Âñf뜜ôõ­Ï¥ùxØõÕÖ²÷‚‚–Ê -¯níí-‘†‡‡GŠeç*” $]T©³rr;­•ÖÔÄ# ÍÎòB ~`s&Ìt-,v xž¸¸ø:ûÈ.ýÉJ uCCCuõÄ6݉;£7o>襄ó^®÷Ð5q»æ_ï·ˆ„Ý£  ••UÊsèÃÁ 5<–3¸»ôóëÉ–ÖfwÜÎSË¥ÔR¤™Èèd©àÑPQl-¢•ÒÎp{¸"^Q‘õñ£ÅÖ¸‘£}¹f£ùD©ÁÚéÎ#éÏ)HüaØÙZwtÞ ù] wá^Ûø>ú™ªQŒ3ÓÕ ^KígíÞ^„ää†WDgf¶£n‘ù]o:£Øér(§&'«*är–a‹©¹ØÙÙ¿î|NKKû`†*ìË¿À½s²5îææ¶ãxÕŒž¼Çx˜î¥jçRãéztKÇ­¡ª|†2~»š¸×t¹©^è±1t;[H{5®­MìÃŽ{ªí¹±±kÈÅ ë_Žó×ÊýLóÁ8¯ÛÆKÖ²ºÄ˜.~ǽY§3Km帛þä+÷Ìz=Ó¡ó;î¯â–s41b8|—ççÖηkO fgg&Ä2#Í……+˹OÀŸÐ¨”ÀÅ÷Æ3n¹‹÷XÔhü¨@§p8>;=m<êšóÚ“¥Ä›˜±¸¹“µµ v~Ä`neEäƒ7‡Ë¾?X落ûëúÚÂn­Í‚öÅùž c|~NNà•örÕœg^Qž/õËçãô‰}Œñ½YÑѨ¡ÂòÊÊU^wžžèÙ_ð7v¦ªªO/Žæ8ûQçÜèVfœXÜNášêËÔîÜáh^Úc,Ï6ô •š«)ç¿íêsë¾Hõ£¯ÙÞØXÀÌÉÉÙkºó´³;ª0Ÿu?êƒB¢™Œ+&ÛÛÛ¡n#£ì¬,ι‘ÑQ’ˆ·—WWÁÁÁO ÎöæÖÌdÄÄÄúÆgjG5´ïR§§šn'ûNœœœD‰#?|¸Eä%'õ9>Å;z¡^¹¬R:^xXGËáÂB@Ìu•ŒB6]7>8118~ö>.4$¦F!oÈêtQ»¯¯¯ŽŽNðKµjë…WL§ÛLÝ¢€yÅÒj^Nšå(ä67ó¯%‚+l¿¹¥<^¼8WI¶µ«l¼½lþúµ©£ãN2£kåÒi›º÷‹•€x¦–9g¢ƒ‚ªíõ‚†«µËËl±tÚérm¦‰O ÜN±ÉifÐÐHø·~x r>Ñõ¹úÚÕÛ[ßgëöê‚ÁµA«@éHv …!ÄÌà¨T×¥†—ÁÆýŒDiÚáNóRš4eœà7cœªª*ÌR‘ª’©ýSúFðG|×ÿYÕøŸ\äˆ{HÌÁŒÃ÷=µ"UÆÙ3ŸŠ*‹kê"ùH´|2¤·w{Ý8k,¹‹Š@'ëå}„š`õÞ=¢ÎN!•Fì9ZþmhïnJ+N¤ Úœ£a…—á<â| BÚñ4ÃÅ•ú»º^ù—¾¹æçç×K¨£#î"ò³é¨`}ƒô?41ÿéžczüñL™þèíåååþ~©4ª /iÙ,&äåõè1<¥¸ÀjmÔ:XDåææ¨Wµ·¶"ñƒU_¶­ù‰ö#2Ψ?)B,S£®²’•–Vê—ë»^Áñ]“²‰îîîÓ)eÙ7=k<ßÓ9›ˆ}€ª·œ­wÎ8¸¾8¢k8Žü¹ò#pÓÙ„Þsæ`©Îqn¥îwYuåd¹höð£‡?÷2òÿÊ}gÞzTSöåË=n''”$2ºPa= Øì¤ VúÙj*%Hž µD…Åq&ïFIóB18g3–Nú“†e3uNÒ?ï`K9¾:Ÿ²j’|ârÎ,޵õ'37—¹uèYûúò© 22ô~©omn¾¤ÕX_|—äC»ëõ䈂w<ô¸Ü{.IHŒ^·×TÊ…ì”V¦¦rä¨Í±¯ë—Hˆyxfzz‚‘šé{?>zŽ$vpЩQ¨Q3dY…Â___?4<ìKûø|-¢&ºKȳ.F»eÉÂP'‘èQqq=UV^ÞÛƒ3¤Oö¯Ý¤ÅÅŸ‡£ÈñF((+/í´[¶]M«©©2}ùÎÉéì9]ý|JœËˆ©°†Ð>¿Ûk mãÀã&‘æizh#ð¿€Aþz’?®ú{ÏÃå{5Ø<^^wçŸrû~³e9„q'HÈF"‹t´Ú÷áÇ2£^—ïKñ :Ÿå³¥„„…a>4fNøðá^áÝú`Ð^÷îÝ[YYÑöòj’Ê~þìY¤”3Œ1ßXOFNPWz²ôà ¢¢¢‹‹ Ð|$$$,,,÷Íq…½WЋÆïVŠ5뻩BCC%%%Ÿ>}Æø„@<–ºÆó¦¶K_.G¡­­Mcm²Â ÛùËø–‡‡GM„z¥y`xx• õË`^ÞÆoß°6TtÝc³œ^ßÚZ‚Å€óË;¬£›¦¯Q Œ™~ä§Ë/Ñ_cnlãÁŸ!Žl°«.//“ì6Ö½öç?„‡#Ž›TMá<¨n¦O2²±§f؆‰5035]í/s=Ùâ:{öÈyõš‘˜¸ÕÆb‹Í’}N¿D¥ÚoÂ<¶K_ãꀭKŸ±ÜvX"=ûõ÷z»lÀ: !áiTÏhž²YÅdVVÖêêêõµûZb¹š…žÞtR_V&//ŸÊÜ’«˜7V¤mU¡V ”'•m¬žËÌé àRÈîBξÛ9I†[#FgW×ÁÙY*[åwŸY-–výpôüššš”òvööŒð<˯./Á§¼ƒ_¤²—„sG7R=*kj\~ÝÛÙÙÑ›½%‡î‹4.&&¦ÊrfH¼*m×n¿ûÚ‰ÏkÏÑiíï﻾¾nm|Ó c î'=P[[;Sî ÊÒÞž¶‚BëÉÒ#Œù'G ™ÃY’\®ÇëK7»t°äĹão˜ÿ7 7x²ÕŽ–ä…¨­-#çôعGþ»‡Ü|c£££-žÛ?‡Áf¤Q¯”X§$Eò3PM3ƒÁx¶öÏ1oŸ¢²}|Å$Þôÿúßñc}mm][mv½ÿGïÿ¦ÿ—‰…á?ù™YX™þ›ÿÿŸòÿþ‡õþ÷ŽÞ7‚—î?nh‡é°p°³3³Ó³±ê±ê±èë³0rèé3éÒ3ëè°ëÿWg&¿„¢Ð¿CŸÞ€•QGW—™CGŸ•ÉÀ@G‡]GÇÀ…M‰ý¿Ž& ñFRæ_ ÞfÀjv‘¡> #‹ž½žØ\ôì`a˜ôØþëp"rBBRÿj8=C]=° t˜™˜tôÙèÙ õ ˜ Ø98X Øþëp’oTþåµ+10`Ða3ddg2d70deÑ3Ðab0dffbÕá`ù›ÁDÿ啱1°±023201‚ùÒÕÕcÐ7ÌÌήdŠƒ‘õ¿&'ô/—”]Ÿ‘ÉÌ;;+»;“»£.++ƒø•ƒÑðïüÓÚÐ@úzVúÿjXzhöÁýèrp°KåàÐÓáÐegfã`§ç00`þ—ÚXÚØZ[™ëØÿ˱õ™À6dbbÔc¦ÎÆÊ`Öž…‰™™YÏPO矻ð¿ÝÊÿ+úßÎÞÖAÏ^ÈÙÄPPÇ^ç÷ßþ¿¨ÿÁVeeþOúŸ…™ží¿õÿÿ‰7 ´€‚ªŒ>´Ìø2Šü¢ø„4ttÊLtt‚ ‚ø*o$%ðhéñlu,íLìM¬,uÌéè€ÆÄ'4¶··æ¤£srr¢ub¢µ²5¢S£s†Æb€Þü×4öÿî´úöú„¼Ï¸ ³…¹¥Ïß ÇŸwÿ~­Ž>øfa`¯ƒ½–ÆÀÆÁÄ‘‡PÀ h K{kB|½?¿ñÚ8Ûÿy3—ž±Ž­=¢‚0 ;!Ýß ¢B£ø†FÀÊÂZÇÞD×üß#*ÄÃñÏ÷XêXðXØêØ[Ùþ»× Z9»€¿ƒIb§e ÿý{{sÞŠþïoøz` [ü¿&ñÉÿù ü72¢œøÿ;|ùßRˆ/Œ™­åÿÃÞ•÷¶q$ûÿó)&ôbc?PV߇­ðs”¬±ÎÇ ö }ŠL(’ËCŽ÷a¿ûVÏp(’"ÅéÑ80HÎQU¿ê꺦{äÂÙiEò³³Ñpük1˜…@?wóy¯˜…Ñ—½ùâã(Ì!,zÅT²ÒDº É4w³át±yæscª£½b>s_ö~ù×2Ì>BÒ×;?;­Î4»ÑσK#<ß½{CÞ±¹YÌBèTäY˜ÿZˆ¼Æ''×úî¬;Ï!Æý婟¸å5ØÍ³ç30ëO‡ãáâ]aÀúž½,¯ù0ûɇgÏGãŸVÿ†Wƒœß¯Z_Ù`3ÕI·§«Ye'þ#|øáM1ôpÑd ˆ>?9)ü¤O@ìzrŠÅ`8/à¢~1\ðÕ&óà û±X±þ¼89Ù¤“ÌÕÄ4 [áÂh4Ÿ7_}ÙC½ò÷Ôx¿ú ê9[TÒÀ—YQçPQp1ýíe©Ã³…/YLg“_ÀèÌhx5îÕ—¯žŒB„›Ðs®«»Šµh«ûÒ„îeÏÑDé¯O°@/ÏËx‹àòÚ†Yïœ<çÏ5 œ®ŸçRðÓ…OàN³êc¥ûÓR?éKya©ý0öE¡0+¦f¶¨”›N|Sy J÷Û®§¼h(élòƒ¦Gf>¯üE¥‹âl9Ú8šÖ`¬NÀ©Ñðü̬ì 1üV=²?/Ÿk†ãJ?˜«°‚yvjà?ܸÆ®›oÑxRbçoÉÌÓ©ÅtËxBsM׌Á>-ÚÉ}V„+ºœÝGý–ZŽv¤ü:Ù{ëÙérT h=²Û*'[*'™:ï×r¼rÌû©}= #ßfõQ!x‰íé>úpà×À—ÓYíÕŠúìí¡Þ®ÖN’;­µ{üdkç· Û¼dþqìÖŒËçë‘Ùš~»£5ŸŽ† kfkïqr=ù÷Érf'ó0‚)ýb<‡—½bÅu¸“ûЦ¢ŽFƒ»± «§Ïþ?……ïÌÍ{@ÿô‹=9ùý/¾xöò?Û¡Ætk•õV‡W’W.åVûµÒ–××àíÒŵÝ<™.í‰Y,fÃä4ʤ¤6s¾«Ì-ê¥ëßá»:vO~“Èí1µŠäÚÖjgpkup©N\‡äƒ¡(Uçf›¢A\Ë€èá&)¿ìÁÔ<úš«Ùd9­5tV§|[zHà?ÛRÆ€œ—~½òêA”á"\¿0RJÏŒäFbC õBê@Jek šé•Lë»ÞÀ]o!|õŠ2´AŽ“"`¯¸Yý¬B´©ï0c7Hùhø&¼(¯WA¬ýûwÛíd±˜\ýö|a®ÎNíÈó±*eÇù ¬oímΦ”lpŒreµa GƒðR/ÁËØ¥‚ðJ ¾øÇ›¯“™¤Ò¤­¦áÖFªÎ…ÿUs$ƒc‚+´‰Ú»(£œh&Y „w©ê¼fË)¯n¤á\ÔѰ3"2¡ (Gp°È `äµáÎÆN½E^IÃK¨Þ¯Æq¦rºøŸ–ÚN•V#mçjà!ÚFŠsƒ¢Ö:FA±ŠN`gã4çJÒNµÝ€×Ãì F Îý+,á#§ ÁÆc aÀ9A4Ž’yÙ¥‚ðz˜‚}7Rp.è‡(8Ãg ‰•ÖQJ‰"0Ã0êRÁ x=LÁp'm¤ã\Üu¼®Æ³Óó÷ƒPÔYºI©y'³ªR%åÅ3/®Ö5yœM®át€ËF£ÉÈ8‹TX¾8K•TªËnÛ §·J£Þ*ë ïn 8OŸnk³ª.Û(Çêt¸ªÉnoÔ· „ù"õâd²Øê-lTS³¬ *8Pþ®H}êþŒCð mÒT(7Ã𡨋—Ïë6DUå¢O‘,;–VîJ{GÌדñMSO£îß&/¹º|Šé>c¼¯¥ê3‰€ñ}ØlW t` þ9º3Tå—D¨ü²ÚÕ·+.§¢¯yÒó>¦â˜´t¿´»;÷ZÊz»5pWJÁi+ÖW˜ö ÔgGÄûÅÜÚ®çîõö÷?G[Âo‹¼¹?ÐÝ[K”‹1ØÂqíÒƒSç ¬·-¥©®ß#äD}FeV0J}DvGC\NÝ…Ÿ o`bTócÏœ `]TÐ>”Ü}ªŽ±×wØú«pw*ìóQÕ¥û —"‚ˆÀïˆP ò0ÌW³rgHÞÂÁb‹ùršL"ÕÖ•ãºj£y‘âí25,“÷Ί5¹=Úª,…› –8Û£*&*g+ÀÛ7p¶è e5UÕʼîjªÒLòzÂä¨y >yQˆŽÉ—r&›øRv4@uãI·ÕÖ'’ö%R}0Ëcbó½bw ìÑ$%¥hñµh§ŠýîÅAnþïyçù?Th#ÿ§)ÿ'œ=æÿ¿Ç?nãÜK…%äjN±h… Rs$QT>®üó­ÿ¼vü³Ú{¿$ÆÔÆkƒn•ÃmQ]‡–i „yÒ½šEœ¦µÛ:«W¹çP¹ä`‹ÊÏf6L“3‹Jr·[TR:âCÌ"Àl¹€iæçb 7cí#4™åIòï87›´³¶e=4s~lZË“ÒA]^ÖB]æ@²›$lMÂæp›$\MÂe)v“„¯Iø,ãß$kñŽbUì­H^Õ$¯r¤l’Ô$9$¦›$¦5‰i‰-;™×$··ü¡··l[aË-›[B67ž€\v4q¿öÎÿf!%³)Ý«™Ñh½º/-g«ƒH¿¸©#A¿W8§/ÉGÃè£Äœ\dña¸)3Ÿ×+M¶V ¾Xé jXz`Qåíœã<)®ŠHÖáâzÁ`zܘr„2æ=}öÙ‹bßڹݨOŒ5Á»`eJ(j(BŠ*Ë4Œpftï¼¾ç¹+Wm®Ö®X¦Îo.K-G aG,gXª¼t>8Å„²"Ùÿa–ÓËõ3È˲ál¦SÈŠr¿ÿAèE3б*’ôÈV0§­Ï»ŸBµÎò³~S÷P¦ÇÕá&Ëñ"[µ`”{k¸sQ„5ÂÒo…öQFï…7Gë·‚ÖLGµáÃÜWkãPJ!K\^é@µ¦ÔGÌ 7 E…ý$ÆÑšéqãˆÉ¶µ ë ’–EaSëÒpÏ#å:MÓ$ðOb­™·ä½Ö‡Úk§î4GùÀ9–T9†¼cƒÄ$¸O£•¶Lk¥l.µU&ÜG¥©À‘sÁVpL`BS§‰ÅŸD­™6QÆä×åô²\ ÓÚ‰ ǘ†‹]€i,0 'ÞzÕ'Š0­™w"ãð¡½H‚Òå†CA°¥žËôªø( x{i?´ezÜ@ÒŠâöÑGDóR3ƒqš#ÃNocDm´eºOë{ÔA«·}§»Ê›î…º";hL¶"yÈÆ«Ä²Ð}¿X;4ÇÉDSQ:20;(‚—ÄàLT„bí¹òFBÚÁÀ,4HQ³Ë@ДäAá7(Æ}cŒÙiÍ$äÖ’#b4¸È±Æù6’<ˆ ‰MíÀ ÊD¯ŽÚbu°.bMXÿ¥ Q¡Œ¦$÷ÀX­7ËŤa.½½-t(­@Yˬ“Fhu@’pꈔP÷Üú›Õ*ó&ao{{ &î Tg¦éiAcœë´=_p­ÔFd,!åcCzFŒaìý,ef3Ãy9•Ûò²ñ:gŒD^`¦òÆi†SI‹•tZbâ;Á›Íä0ÞðÛp‘ RÀD à â‚áhµ$AJmL™€;™Íä0ȲÉjXä0ã"eJ’‡€Ñ!¯´“LµF'X³™Ázò•¨ ¬SP2¥oª/!¡Zƒ 2V'@ÝÝôÚ²™Æ|ò{lª(SWETÕŒ0O)•é¯òtƒ1›ÉaŒóVYRVƒŽ57Âkƒ€™¢Ój/HK%4*Ý Úl&÷£m™; KTzä€m`±".aê8nÑv“;d3¹êCjtÄA^JµŒ˜1ƒ)C’(Aûhl7vœÍä~¸‹áu˜¤ªu9vù¶I` ²à 1X@B³,'­Ò®«Ç;ÙLîAœÞÞXcÎoJ0d!_ ko!0¢(T"d°Ø#ÓMS"—É}h'Óö`½æ¢*̰€*˫ȜK»Ý ¥NûnJ×l&‡Á.fë«0ký¤’{.˜†Ò2ý-=NÒ“5$ 8¢#¥±›ÁÍfrïrÜ&Ô D¤³œ)®¢Üp$.BàH`‚;2á\&‡Q~0ÃÔ4]†›0naĆC‘qžY$ƒøçŠÖYàT7±6›É.Üo~¸|ýê‡÷?½»¸|óí«o.2Û.¨!•ÃÌ)° £(—ÄIÈâ°*Ú ¦!R£å1B¨#p‘#à·ßÿü¦s£¡l40¨€2 âŒÐDƒä!Èüþ§ï¾êZÀ@ ÎQœGl´€„Ø;æ ˆµ.4|n™¶Xü¹”» 'ëËo¦JHÃM[TÐ.zä ·‹–r í† Õ­ÍŒ¹f3hÍfß`|ÿÝû‹¼¿üúââ«ÿ}õúï0:ß½¾xÛòº-‘Âä±0u‚2•€²ŽJÜ -Ôñ¹®ü~6›{Ð6JMw‚šÑ’FΠì±`^4:ÁF¢8îh>›{€6ÌÂw¡:„¹Á·eÚbë¶qp¢ƒ¯«1Íg³'<~uñó›×—¯~úêÍ÷—?¼}õïZîùˆ\"‹à*µIñRH¡al¼•i]ºf{m %ZÀ4Œ*Šæ;xnÅþñý›·o!ýøöâÝ«O%¶Ö *Ö2b¢ ·i£†xð_Ú®µ·­[Ùþ%¾†J¬4BeË夽_’Cç¢i‚æäý÷gÜ“ú[›[2¤’˜kø˜Y‹{8Ö¦Ýϳ{»ú°Üöbw{#®·Ë·‹Ýòb&vxh­R§®@o±Ùm($Eùâ7b¢BWQ¤sºØhŠQÉÝŠÉÆ„ùØ—¿\/·«ËåÕn±~-ô¾é¹hŸul^EkƒÕØØÖÉ;'ÂÌ_o7·ow«ÍÕkawÞ ÙV9jÂX¥@¸+cþM°rªF±ï–ØõW?½Ú¤{q!-vg[+ ºÕc"ÕœÅß¾Ün7ÇÜÉ¡–&øÂ·ßï3nc©çÐp.©uÍÚõàkÀªkÌ¿Çüïýógìß,.ö׋-ÜÄn¹½™ˆ)áÜ‹6Äúq‚$†÷M:èRâ  ;µs{óë4彫™4öˆ‘/s%¨b˜Z-öžˆaÊ=™Z ‡à,£Ö½»R°9§”@,‚/eÄåøxx«ª2-5W)+7ŠâŒK11Và ¿Ùno¯á€÷‹Ýbtša ¡gƒ§²6}‚äc­lNq:Œ‹âÀn³ýnuu³»ËÎÕ(ž°)½/p9+–¦C¹ÌrµdžpÙò‹†–g)5F =Ü2à¼!õž?§cy·Z/ç͇S¹àLrź`F¢SŪ̖Á4‚¿ÿIa†¹SáBCà9+í¼(º§æÁÕ Y?ãlÑõêrµÃŒ¼]./ŽR†z1ÊhÙÇÜk?ø×àÈô@·µz±÷GCÿQȽ&NÝd%“T %,T11öyÅj3 „²ÝÄ¢¡Rš#ånÆâìä6 b¿ºZíæ ©&öåÂ>Ô+]àI¡Ãm–4©vŸOE²Þ¼ýyà-j‡ó²MšIöXÈÔdDÿžÇf¿].fmTèvÕUª®8eàÓ èJ+)Zˆõ:cunÀVëýÍõrÞÑIÛ¥ƒþãWïòʼ)f áe•qz¢ÛëëÍVb϶Y¨¤:p€¬ÂR‰m+$6HÊN[ÈSPÝÞ¼™)t2YS†Ì‹AùÜBh¦â`¥’«žéöÁy9kCËcŽ– Uï …†Ø$ÊGios…È›åæÍþíz±ºœGëà!Ç@’:5´Y >Â'7²Â·Í\8ËÅÁÏò>ì2Á$cÁµAûáœm D!Úª ó0½[]Í:eÁdb+5Mª1"7ƒ_’|"GÌŒãh>nWóö"‘—Ñ—æ¯IC©n娂Q ;ÃõêÍv±ýuÖ•ÜK0.æÆ )…-b‡ÉÐÃ÷3À'!¹Ü\,׳I 8D-Ü¢n’X©3u£“`ºmz ÇÕf¹¼ÜÌ›ËU-»¤'ê`²->`¡àxt´ƒs,7׋·ËQ!œmì@ÐF¥"/Š„*X^æ‘ÉØýãzçLH.Ò@^EÞt“}Œ¹æÂád§‘$Äʽ8€€K–hèPHÒd°J#¯LNU&-ƒ5 J1“s÷Ï‹üà)ß/®.ÖG? ÂìP'™CíÕ–œ3i }-À6ãý—óSaN"ƒ(Y¾‰+CÄŸ)êS2ZuktÎ:õ#(ûr÷Ø=óÿ“ b؇T·OÿÂÿHÔ£ßïð~óa‹ª¾)•ÄŒnÙQ±Y9–'®”Í#8S¾(>œÁžµwZm҇ƥŒ™oP¬”å?8†l,JÙdâÉÆA‡?6Ð#ÅnÖº(ö &²o«¿·üÇ m¾K²[bRÊØäµj2°uå]æjúɶ ð¬mŸ¿ü5¼lÙËGSŸ²¯pJr™•'BÈ9Ý´Áž3í®ŒÓì£W­Žˆž8º¨./\Q>Svصõ‰¿7sp€çÌœôˆù‘iJÝ•(ó¤!¾•Vy;’÷ŠªÖÓMà9Ó䵜4¨Ùç?x/]`íì ¼±jÔupÝkP´bRô9Ùr²`Ò?Ì4Gn•œµijP)‘vÎݦÎi*&zù¢ÙWeA_ÚRêl{k'Û88À‹6ÊÃ…AûJNžäku‡õQ'W%)ÏË-«ûu”fÚ78ÀKöI¸4b‘†£1g'’ÌÓ¤Ú¬ TSÁžlÞàÇÌÛ—¿æìÒ‚(b÷IS†Ûó5ÁG]+†,9=Ôð»\]½Ûìëõã¾þõõ^4n §¤KtŠ’ƒiÚæhdR!‡ªW¯S8>¢L€SêQ:N*Kñág¿ ñýrõÓûÝÙQª,uÉ¢ˆX0Ø%¬$x¬ŽóþGºI(/E6žd2!Xeš ^ gM ZÜ%¨q ŽwäÕæêüƒÂz† ÕFê´rK*wü±UµÆƒ¯—ÛËÕÍÍjsusþéÑ+‚‘ÀA?äÙ0ä™nÜâèμYýß+Lg—2dŒSO@®1½P»ª»PF1rªÎŽÒCWTÃ*pÄé)½NNGœTу͎Τhܳc”îTÌÅ ¯aà.!†+iÅôX6Åøqu±{~7d8„äšñ9g­­­RÌÑg~ðvý9ÿ [SòïqFÅBu tæ–(É#dŠ­mk8]qð‚e þŸ?íû¨ìV6x&Ö5 ˆpÃüriAÊÞÃéŒqp€£Þ5ÜùsÐÌÖZŠp¿ LŽ0>%ÊÃ5Ù\}²™1¸Ê5T‚ôNÎ7×[òضÙëà}ž*S?i£— rɌê[OÍ”¶ÚR:0GëÙNxÎEl·’o{—i>3yÕÂ¹ÏÆ•¸À僟 ˆÊà vRr·r»xHjŠ’ f¥<¢WÚsíCÃp_,'|ᘠœ ¶O-RoÛZ݃K±=Š1¥zÿç0ðå/«w¯[.'Ùh´„˜‰:þ«ŽMå`O c³aWyób•q:k‘Ü<-M éÏ”èØ×Ûå‡Õòã«Mx·pªØãž¬äEµ •±«1–Zõ©ž€|»x5ÔØ RÛA^U«C*@Œ˜ “”óΜ†Q ž#Îä½FSÉT×â&v•Ž’Dœ"që2·1ʳ-åÆÑ,)ÆØä=T[§“¢ÄINc¥­‘ôP™rh¢ìµ‹%QOÝWQÎÑ=G1¶Xá Ž"GÈÑ¢¸UŠ\M3<ˆqB&áŒyL ‡G%›¤=[ÐZ™q¶”•‡¼*Lg—SÞ‰=ºyͦ,!K}ÎV¢1«„ÃYQ§“’Áž³ìkþÏðM¶LRAjþ‘6«@Ñ %wúMÖØÏšvâ¥r¨­`gC§M=ë²:Ô±¸˜‚Í'Û™ƒ+Ôº´%ô%åZÑlNRõ 1 Ø9÷R¹¨šªéÐÙ~Ϭ´‡_„ëçô뺱^´qÆ¥r3ò@ΰŽ!Q¨Z9¡^>jtúð’}3.•‹éÕ(S8q|¹CæGK{wg8ŠƒtKr“×ÙI×›é±öo¬’v÷Šx±aro’+)94 1R­F5ü;£s{<±/á=dL‘”¿@f¥ÂÝgd¢©Þ0H´ÑcŸrlðäò@Û`ªÙ7ëº $KÓÄ¥?À› ÀÑq¯Ö‘ç”,iŽª{ìJDm¥z²7#è.—»Å„Çoƒ1IÍA`É·Óåy:ÙÄ^Kj7GãF^m¶—‹õyñåHÖ±tµÕSÆÕ[n!_[rªà›&ùF'ÐJÑ™bÖ Ü¥uŒ3ÔUÑYR<®ìÁõ$¯µ:I±TÏžœ76+U“¤îD§?­¼ÂC§Ÿ­U@#—Ô C>D¹¸î=ÊÅûéœkl€glƒÏúwû4±3ñwúXv¢Ü%ÝPõб7dóTèT;øéña^¶v ÏÉ“}ñ½zJ¹´è¥}¥ë ÞWI>{²ºŸÉäña&™<©+Ä›ÌËÆNN&{h¬tëkŠ8„̵©âqФ%¡ñÜ8ŸÍØáa^6VrZæáPJÏ”äqZ`ëå…h#“jˆ±'Št.W=<̃]^æ¬1(±Åæê!9POy4,E¶¥!˜¡ÇŸ-OXãÑaŽ›<©³Àƒ+ ©.#ù.¢ÐæœCð,×3AkLJ9nðHG…'v÷ ea(¥ØÁB ¥¶Ñ)²B<“ÝîJª’a0ê $Úƒ„™¨äkjÉmØM4{br Õf]KJÉ·¥…¯±VÞöuÎdòø0SLžØ}ì‰ÑÍkås5XïCJ^ªE–çÛ­*g2z|˜—žÜ~ì)ñ’2åJÇYË–l×láV)”µ:ñæeƒ'ßÿ=0V*N¹Ø4`s¬œ|an­I«»Îeìø0GŒ˜¯óÀV[µ Q³¾ÛKjrëÊRiØuzüÌc¶­ãñõÛ§2'÷TK,F[jˆ•=hÐ> hl¤Æ²>W$æes'÷Ñ{ê©tsEÚÚI–Gi)[ äM±Ñr6çŠÄãül°´vk1qÂoÞÛª*8BWÊ@¹úÌÒÿú\sÌâÉ­Ÿîj@Q‘Tà3[‘¯'í@A¤uŸkWsÌä¯mÆ]ß– lt1a›0åñ‹}í-²?—æek¿þ­˜fÞ„†3¾S¥¶†\ý{61‘+ì ¾çâYãÃL°zR/•§\0)êáWL°-*¹{ïƒ Ñäs‘¬ñaŽ[Ì4ƒgnlŸ–#9)Þ7ê«óÔšs¥iZ·ç¢–ÃÃüè Á]ÁÇ9Ž«žËKšƒ‚7 R¢ARþ¯dŠ’þè ³öä¿&‚#*M²Î4‘Ò-f(ì1üËÅÏK)aøZàån)y ª{²=4yµ£Š‹r}ü _{øò¯ÙÉc•b«^Åtèœ\­™ó￾½+¯ñZà£!Œ¡VC´É•â´‘b£ÜIà·ËË͇WÝ4-Ô \“ohVgM¥ºž›Žh 'Ç›ú-ú”÷õóŸÊsæ¯ÿúã·—(åá/ß{é›xéa™¤ÿJ&댇#)r‡(¹nò^vGw?ò{t…ØÑDT\qZÒ›/Ä·µCÓ½Ã|Öø¦ß÷ÿÎeºž»Ôx5Z‡ ³®”—²S™ ˜¹ñq†Sä¶Ózùa¹Þ¿_ýô~B1žû5êsëJ³ÃN†¬ÊÞ‘ ””¤sݶ¾Þ&xU-ήakÉj9­¡2ë£êVÏ#[o>ž»y‹àªØY§½*9WÃÎXù«÷?Žþþpz&Öˆ¸;i߯æJ¯P$¥Á 8#½|B28J…KÀâÝ›”Ãñ™V属3nÚ7߇¶q5>SJ€ñ®T˜ê±5AÍcÏê¿´]ÛnT;ý!|/û1†‰”„sO-»lO"8€œÑüý¬jnIH§·÷îA„ºØ®ZË—ªÅ¶ Øf[¿þPåÝ廊»&rê.u™G,õD»3ˆÕ»„ ‰©µ|øl5qʹ×]Ó¼sAë–œT ‚@RÁç^¤_y±äx±iƒ¶™6ùaú]ózhÉb®0³EÚõ±¼©"½ý€Aoc¶™æ x̼òû¯Ã3“’3º¤j¸6HG'iA©å ¢áÛåÄçÎÌ1Û웲#z×2ÕsC®ÑÊJ©t[¯Z!ÕÝ©O8Ó²AÛ,ûôñÓ×÷ùËèÀYަ#Yißä¶0è½í\09V<õå7(`›ySn9ݵLž3ƒ¹K²‚Ô¯TËÄ’»§R^lÙ €í–MÙóº7jÍHÕü˜¢]¡†¬¤˜#®)vjy´°Í¶›yÑÒ9[UéXÍ•,CàŽp´&½Ø¼A™7'Z’Pb©°ûál ¬/M Yj‹í°Õ¾ŸGg¦ïÙlÚÓz#ï«z²Í±¦,5™¸¸åy|LÀ6Ӧݛ¼7l¼©Ëj=@<(i“†¥4í<–‰Ëcå €‡lû¸»ù¦,)~ðöe+U–RM k] ?À?é0LÅÆp¿¨6~÷»ì'ñ|Aü ‘ë\ëfy†µ¹ªh”ÊFˆi%[Ó"GD„Ì¿5 ˜oí Aü ={1a7ñw3Kª‘,x˜´N6¾ œ{“FPJýVòú—™¿ùZÞw øù'&”®qª“”Jª 9‚6Ç|·ÞéÓ}Ïü'ƒ–Îtõ°Ÿ'\âÀÑÕt¯¢4é•ÉÝšë×NP@• 9¹W¦‘f VSù™²%¥"Mô[=}óbÿ Ö^UÕ-{KAh^­1ƒG¤®U5ӜܭjLAÝ‹tÖôÖš¢›5 Ä&»fH Öésùû¡êÌС b±I.Äf&¬*f¥¬Ö"«fÚ[è˜!hKèøcuþôìbµÿ1QÞ×î(2’V´-’Gˆ™¥5až'É?3b‹T«Òr:l*ÐF/u£HA0è{‹-3=`å÷.½kþX'¡ýû;å¿êÛ9­ŠúV‡]*ûl¶ LŠ Òí*÷6§¿m{>§ªÉ°³¬¥ b—Öí+K.÷ºÕK8›ÕTÇé1[¤%{޶ÔrÄ`t9·”]“K®ÿ:´øQv}I)ÍM $-wNm#W4h<½­>ét‘¤ÄD2Ž’rN'´15U'¯ ÛíÝÐ žûMõ“WG/V‡R½w²l[Pä¡$k‚Õ­%…¥®¬{d¦MR}Y…Ý~7Z.ÿ6.Zã'›1ÞFÝ|гfìñwåÿ89^lʰo˜ÙàT gˆI‹ÆÍTýìôùÉ‹Céì[l6º‚,"ÖRˆ=¤õB)Ëãþy:/8ÌÝ=»[4Ä®¥(] ¥°‘鈬 è1ÔËÁä8:à+©Q²¶ê®òw*Å´•8f v#ÅQµë¨(ŸjÓM[ ´Ú}ò¶Ñêòb¿jI;I| JÖqáAð°ì“¡ZzIÔ§©u|q¾_µr޹‡Ä¤´ºkr’Ü"IAÎàn7{yT­Ë=«e’éЇ@YbRÑÉ™f4 Ñ(!‘ñ4µÎw7ÙÔ«&RJš X ÿ&̺PIÀ&HUmÒ±îF¯}O.ÆŠm¡£‹|¨C©øa¤b^í>ԕχt¢æ]f¬2,±ls³ˆ9…€»&rÍWß­¯'·Þ¯IõIÇj L¶¡ƒŽEéTgˆÿd‚ž'€wÙ·îùfª‘¿^Jg\‹Ø+M‚'_zèMXtg2ŸýRzHÀÖA|ÿñ¦  ;rtâj\ËbgZë)ªn”ÜO_<€ƒà¯Ò¢i}|r1‰4È…ÃûGkA‘òªç¢ )²âÒ»'G9WVr®åÆîäžvf$5„Xº Òâ~k©Ÿ"¶Dÿõæjt "ÆÜ3B¬”Iw9ÂI¬+ié%Þ}]>c¶­¤I§úwM“û³Î()P2rŠòUˆ3Egä|Â/6mPÀ6Ó䨻}þüñó } ¸··œ €™4Z²Ä™É©;ggÚ7(à1û&Ý@¾kˆk)Ù®'¥èÏ`­T±^jÅ"ZlÞ €ÇÌûtýaÐ:нfŒœãz·jŽ(@½G[øþaÄ ë~…!&·¨£•~àœ)·DÛ•°R8!¹†åStLÀ6 7×á'_Ú–ÐRÔ l%'N1tWµá“®ÊÀ䩽#_=ÊK…îôŧüåj¾/È ¤¨UUª4žS™¥°Ÿ©ÝÛùb®Ð¾˜TWp›/Hõà[ßZM.מ=ÈPÛts0Õij…>ê‹‘Ë­ÛÜ!Çè©4$ÊAê¦ÄÜjBLh©”ƒ¸c¶ÐÝî˜vv›7Lb,[—Z 1“l+±ÕEw¬ce¡âÙBw{c2}Ȥ=E´L0%4v.rÐðè~g̺ÛCÈî!‡€$ÊÕ½Ô¦¼Y·TƒQ‡ ³…îvÈûy~à2G±J?³–¥šâ¦"{H6à?ˆ3f âŒï¾~Z†9Ï«ŠQžúh²ªû®‚­ ¬­?ˆOf ì“EØ£&€TvµDS”÷k1Kòá >™-t·O¦\‹Þæ «u IºH™ú0›kìÄHF:¥Ä³…>ê‹9nøÒË9¼ µÎ·$™NàsÛ‰†žÌ Þs…^=憛¥4ÅÐf¯IjÇ"{Ÿ9…ÐÖ¤EÖÇ\¡¼Ë‹B… FrLÎ9i»Uh²k²é‘ºvñ0ás®Ð¾˜ES~m§«è¤*p2Š ¤¡’FôÊ¥ÆÐ|˜5"-‹²w1iæ­™å<ÕÇÜ›é†Rœ¼F~lH¿:úkýôÍóõËÕéÐV…#k5_Xž’#“¥¤©Ò¤­ÂԛѻD[Ch5Í“bÒæsK1 nﻕ×å9d0¤›«O £œJÕ(%­“#dMXSCö-Úšc%Ÿ³”ÈWN:]VPµèRˆº•æŸé Ø6Í&ܘ}îˆSYEÏX”!¦–ðLIšÚ4< “ÚnÝÛ;§Ðe³ ¡TÛ½M)‡î£‘»RÉ/?@°íüéõåë“ׇïK³Œ@“nÎÄH„DkmF„ÊÃ!e’"öªò ¥ÆO´Žé £j™‹éqçOƒx«iSÃÝ­CäšÛ­Êæ»T3©t©æª´bç/öAÛ‡msã1߬o¾|¾þ0ñÇý{’ò2YNY5“kV¤C.Ò4¹ß¢ë{’O¦‹ãEâ¶ ïMkïG䨷j«¥¿DQŽj$Fz·E—šî €«­¦É“o,Íw£ç7žmçï#r8èê@ur‘Mƒåç7cø1oøæzÍ×ÁAô¡D iˆÌU*~”Ú«±°í½#.ÄAÛòñÅêüäèå¡ACÐë$U|¼—]SŒHË%âcõ0Jý¦îúõÑùÉåÛõêA°ª´wÐP'¥lë¦gdQ—T06hÛ‹ôv'Æœ1­Î-Ë5$­¬ àyÈ«?Ô<;>Þ¯–JkN @7Û,Yî:ÛPåH]Œaž–ÏŸïWË*¯PisɳØju—J\‰@^åÜô03óCaDð6®ªâªï1p€íÉ%§{YŽÄÆð#ö͸ŠÅÜMˈà±XÁn±c.àëbó ›+ºRÿoõìò`ƒ#mà.VÕ¨M Uzfð2Û<øYÆÇ¢÷êôøõÙÉéåúd ×NÁqlSªiBY•’’—™S(7Ua‹WÚY×Ì©Zmª ZÉÛžßÞÒñr¿Jfkª CdŠÒ—Kn–ÂÓÎRò9Jž½Ù³’P0²æ¢ð ë©mCwÃLè1ú‰ÉC–â¦ðZmÿ\óè5fJJ¨bɘh±²ÐqS[ÄÑXÝòk¾ƒxš•Ren£À ¹ pd‘°¬­ÀwÕ&v@*[) _.6wPÀcæþ}óŸo6ÎÙùDARö¤³j­ðzo-élœkRllù–1Ó ýïçë/m0›˜h[éÚP He@ E[]/Xz(`q6pµÃÒë_Úgðä6gX“Mêj2QUÒÅôFþœK]NøðdcG†ö'¼î…H‹öò`ØWߌQ…¤Î“ïV-c1(`—µ3Ô ÇÛzÒ1sÑ亅”¦=íã’÷˜€]&ÎF­Š½ÊX0]ƒ°ÔÐTÜte+Ú¨´|«wPÀ#|}ñìâäP@Ïá©xwÝ{ Œ¨Ù9{U,»nÆOÄæ †„°^xb¦áØC—œbÚÃãÆ1L¸á£û§7­Õâ”­ªE^¦º‘‡½ÞëÊ^ßîLvçàæÉ$!Ws…<0Šßi÷$ÒûãgEÇâ•‘í×1·¢öRî”.J¦äý¥À÷_4˜?Åðl1¼ÝЛCÝ"UªkîÉ-)†2Z0}¨²žÂí|Wƒ'cþóo¸¸<;?z±:9}~¶>z¶>_Ÿ¾|;Ú#½õˆÀÌ7lKU¦^b³Eçz(Ì2¦¥©–8 ªë[ŒOžÖÓ}‹²ë?O.ÿõ½ÛÃÞï aD<‡Z½ó)#/9@æb¬u®âžŸ@Û¶FÜS’Ðnt-¯ŒNú³YE+KÙûU|±JKaêØ[Ä ÃÊ^Hä¿VÇëó£W£Ú˜ê ¯4'ÍÝ«u„²%µj¬ÎÑ5­Xg¹ÊKR )ÈŒq$-äTh{¶ml ™¬c9°­Z &#?ÏÒvÓÓéèéËÕAüËzÓ¨ÈRŽ$•LÞ®kŠÅ9 5>€µ®*êBfshÍ>!(TJ†mƼpqŽÆoNÿ}zöçéÞu ºÛ$m± d§Z0ÐdÙ5Äë“g3C×Í¿È3ÙÞƒ pS=ÔUÈq1±Qˆd±Oj=ø½íঠҔv©›#ùë[¼ÿݺÙ‘ ŒJä|7§Z9’Æ87Þ»ìrûÿxÐÓK4ŸþžêA½‚À”d£G²Ò>tÎUwoåÊ&a¯³ôº¾Y/ó–t@0šîœõèÏu‡Äntµîþ™þt­&µùÝ®–7V!êf{VdUÓ¡ÅTã+`þo/Á¦©õ÷»…¾ŠÑ[­±sU=]H~¡’T‹ñzPJž],UËýŸ½'mnÜÆr>ϯ`”©¤»K¶qƒìÃUN»¯­¾6vWR›rh1-Kj‰¶Û3•ÿ¾ï‘¢[AY›Iªâ–xÞEVJ®el²B¤—id>Káv»!Äÿ=ÑJ©Ètšr<ïÚ(®$ÞgŒ¥”n‡ÖÅýÇ…$.Kp(ã7hd¸‘+‡Á(Ór^ç7ïãE¶7 y)=m1Ïà‚Kª}ª•%iʨƳñãbH§ ~uÕ2(ãWém ¤·žÔ°S=n“ B ¤Jð‚E–§À * "ÆÄ^r°2[Ya3zs Vòì‡O§§©–Ûð!ðôÚÊ”—ÀÌÃc¢ ÚKâx–X&‘‚<ÑÜ‘Á@04òž‰ÏÃÏZŒƒí™Á¹ˆÙb °Ž´…ÉpÝ'Ø#G´q>RÉ5(t[vk ë§Vyl P›÷Ý8`{ÚmL2#tìˆâ)š¸,Nôž%™å<•i¶¹k ¤×H.ê’Ikju™ã†P‹ëPp[2Š'0áÚn¨m dý,;>jÌd·žc)Õn¬õÄûÞ[—ú4S.ßÜý,n1A‡ÔÜFÐ2oÉ ¦Èb èù€:I Â#bÒL°Ö@ÖO°J™Àôj-mBi°žB£aìµ´1L«©Íp}ŸÙ‰´µÒk¦×Tåíé\RÁPbRpð° žˆ‹‰—ÚìfvµHoߤ¾ßZ˜9¡:ã4öÀ~Pê1FwRRAðEuÙN„¹5FrP¸vÇtQˆ_9CcmtÊá‰Ånˆ1v'ƒÜHÓ ·r=gf‹[Š»^-£2Æ“à|k­tʈKHlv2¸­lܼ½ÇãÄdM¢ Þ¦¥cÀm³ÆÓ<ÛBn ¤ÌR·qH¨Š”dÎÆŠ’˜d CLF 0|ñ¾¡{ˆnk ›Ew;µd­§™)ðC˜u¸ ¢_¼R³¼œðÝØØ¶@6i+m4[P¦ˆá‚€bð9j„ó ´öïžQ;!´5Í„Ž 8êEkéeDÇÜHã-÷à×X'llá[¦M‚{,w"½­l–Þ1Æ`­)sG‹U\Å̧‚;+S%)ž)¸?¢5J½qÃAÿ¦½‘Ñ*I%¸I*ÊÅ™\8‘9S™\^$w#ÓÈf ‡E{3CRƒé7F©L…}a¡„Z¼:WÍíÆÌ´²™Ð ƒ îÄ:޽f2ñÄT$ŽAùcú˜xˆ³ÜNm d3¡aüÞ‰5},œrÂÀäáÎùŒA¨b¦2T$kÝ´v”¶b׆Óï^¼ÿ´ëpÚ:GñÍiFJ÷±K2£ ø%m㪆ótG¨ˆ DîI,-ÆŠSâ3•2p c&Õn2m¬§q4ö[åGeŠ~ ¸‚!àVie9£‰UT’Å÷¿÷ ³5õ™›š¯Ük-k&%IBRg$žAá§"3Ò1ð+Dý¶~ï_í<µ$ÌLI%¬’\j*½Óæ†ÉíßBNB.®¾5&Ä€—&ñ€ C–{œàÃ(Ê2.v“ºm d½::yñ<`½âIôÌ%6s©Ð.“*ÑÜe>5—ÐÀ¨´™­“-é³ì¾dÄ GTb9™.bŒÕb7Ù¯¶@6ÓºUX™y\²–¥”ÇÆ€0hnÑÛÊ&ñîv·›z[ › Ý*Ø’à'CD@ˆ£$ùÃKÜ-Çrb›)ïd~µb7Ú.™<¼ ¤÷¹qaxbœ"Ú'VãI@d7a%„T^¥"‘6…yJ`’ú4ÉD‚K0h¬|[JÛF sŽ; Qɲ">¯JÚcL­î&MÝÈfùÝÎ_U">íq±‹ ipd@q8Í,žS´›X«5õâôÅϧ»¶Þq‰»,„¦‰w¸M×CL4DLÌÇ\¶ð!N?¼zõvçNDâX–& ï@Ì@µ%àù§)s”rdJ´ Ì/m܈ÙâÑ%$S1‘.ͤ`.QašÆ:ÞÍŠƒÖ@ÖÃOoÞøiçq ˆ¬¢‚X¼ ] »$M „™\X Ï|>þkÓ…¶ªµðNŃó’“h–R™ÅN€ÿÂ0qÌ$HÆò´ézÐ/qkž±ŸÛ¢@½7¯²Æ[‘¼Â‹‘8PxT’¤† P>?.(8½ù-ïÉͤGŸˆ,C‘¨Ô¥\+×Ó{MÙ¢h¼÷­¿òýv[Ì (3t<Ü¢1‡‘Ši*ÏÎx;<y9°ÁßϽ:V×è˜ãF1ã9^[<¶Fò4à>úx(ÉËÐSP@’Äà2™(ï .7¹ŽKzƒ Ì-£ÐxEW,õ– ¥b€ ž!àùØ$näõǶW«‚·,^{K%Y’P¢ x‹“Ôp4Bü0òcSäÃÁ$ˆÍy:6ã›%-È\³«]ìÀåãÀa|C…çÊÜ>v­n¿—?ÎMÿ£çÅM»“O¸­3,12‘™H•GO M„ÖÔ¦Aœ8ÙæÔ0®-«-Å4W EÌ€1ù|œ½-ZμL€±³iš¯AÁø9+ Îòœ8F³¶hœØIÞ – sj$–xé^"5h] ’X!NÃø`c¶=­ ì0‚ƒË>þwùÕáÓoöö¢Ò0ŠI´··Tî†voú¬z„…“ÂŒ‹( ?ŽFø½|¢Ü=ë ÌÕÞOÑ©‰ƒ‚òwÕeî¢| ÀÖ{Œ£bìÁðúë(ëƒÚ雲¿(zŠHFðŒ«ûª v_ùê2è"½©ê˜){E1z|pp}}½ï†_oÎý`8>?ÈÎ-yØ™vš_œßê5šŒí³NÝj48ïD¦_ÌJ:‡ÈÈîÇû”D+¡£fÂG:t7ø‰ ÿþ·¿þþP`”f>Ø(/åáàŽ×}væüèì,Øþþ…µ…gä*!ð“jIÊß´úŒÃwp©¤è§@9ÕJÊ¿E*FN‰™}þIþžÂx–Zj:èõà÷­OêØ¨aÆ­¡Ìq3ö&šôÌê¢%ëTúoè<«Õù?VÇ­¨È‹>4›Ëc åû‹pìT2Çt•ìÆ¤K¹ê‚¹´ ~ tMmMfX¼¹õý*ùçe…h˜þ =Ec?Â+h-#0VÕCSÆö@õèèù¨Ú˰ÝA\ân¬»‘…d3²b-²¡,«ê¯`#]&D&\—Ųy[Žð ‘’W7‘çW`{Þ8?^ÁÆy—ª¤+íÒD5€WwÀߎ6o±ã-FÃ,š\ŽÐâðL‡ézëO"Ôb—Æ*G³îV ˜–%§8‘œÒë9:duŒpwÌ8KJTÈP3*ñmTîÖppå¹X?ªÒù˜V_Á ó.‰Q>uÜ€@2C¦Â¨žÉ&í%Î1¡Éðr xà}IQ]¿Dg6ǦBõ~®ÀOq]â31Ãï´Û_>G[ûÿëÈcBᬕ²ìÞ¦q½ý禖öŸq*£ ì¿äJÿeÿûÿÍñ‡ç¸m8ÂaŽ>~úáí›çQgïàà'þüààøô8úùõé»·àä“ètl“CÓ?8xñ¾-F×¼ ,N<øŠ}Ql<ýºW,´Üw…Co¡øõ¢?˜<[Ñ M’¤j]Ö ¾€°êîù/—ùU©Å0ÛòSGmÏ:˜Ô¬?±=3žøâÙ§Ó—{•R¸ÓÉÏ{ŸŽöž/ (ËÓþb?o^¾y-˜œ‡û½è¤RŽ/ó¾zPu‹¡óàóTÃ&ìÛɤîIÿYgRÜôý¤ç=hc\6åV@¼&vœŠÅ'¿š+S•N¾_¿\‚ßÿuêAõ$¬¡»L|²Nn·^ÀÂ_ qwŠ2xeù¿ü(O‘q¦0Û·nÕCä)ë\CŒ>¼~¸_Þ—\QøÚç罞¯fmª±6*-ätfM£ô:gQ G:ã †èù^ ¯À8÷òI•ºQ^`Ú¢ÚÏ¥àõU ¿YÎ}”âŠ^Nâi‹¬ï÷'#cÁ{Ö!ò÷7#W¿=O‹ ø2ŽJ@A”„?ޤ}}RòðiáJ£ñ}sÓÏϺú´Ã½¾Ï Ù—þ¢jÍP›¶ÃIÝi=O±§ï¾þÉS e°ÔáåEж/÷&x\®"ø¥pHÜA1®>ê IÉŸyæ¹ï®öÎæ‰%|°˜ï‰–ÕO-ZÈ?‡×t–~B}Qç|.û ¥èNO”9¦ÃYi1YT|øÎ䃊͹Ÿ’‰Ù : t§Ô›,õñ£G?ÏÍ»™„ôc Øn©¯c˜ÀUG'ÅøÒ—ãM½ÕDÛË1®fïÌ{/°XêõîꮪD×âÈ.³œ-±œµäùjL*1Æ áÕy˜šþr/¯ª²ŠŸ –gö$w~èœÑx™ïkÕOçEÛ ÚCÍYóävydÌy³Xer3°3ÀåÃÙ ,Í´Û3A¬—šñLQì] ÿµw9ñ㽉ïÃì}<ü“N4…ºŠ¸½ž¸š EF5*þ»j¿Nñ>xøo´ïÍÕ)îJý~… þ}÷ûï>ùmY÷×t-ä¥;Óâ)æ•ö˜s©¸TÏ·LË*ç£"l…@TígQϧù¨ÍdpJÊT_ ë,IÍŠòì¥mA©ß/…r¡ÛllÎ/ªyºP vÏ—3·òËúeXÑ©$ºTÊ õÃÎ!'ŠýTwO©ÚÜ)›;eb¹ÓÅj¸`x<´~2ñðÛ<EšEgg¯>¾þpúý×ǯÎ^ŸÍfcB²!Œ`íîj@HmÃvÝЩg{™òñÑwýâÉüfVŽ4Ö[9šòiõÞè»sè©‹âjâmX”4tš¬gÑgs=C †Ê Ä`Z3Z]ɃWS×øwrœlFŽ“%äpv–Âwrzôãé3òõ8îNupUþüûw/Þã“—/º åG?~€Â¤ˆWƒŽàt5^ÿýéèýé›ÿ9ÂEψÞݪüõ§—/ßaÑs±ˆ×ɇ—Ï –#ÆckvròâèõÑ[Dê¨;GàŇ7X”Bç Ðùôß"ÔëfüÙ¥•7èQ.¶˜|“.œÏõ²åt®OJÑö.Ÿ§óËÊÚÍt©@Dµ†X©rî¢Q~G4BgXƒÚåêŽÀ¬B)êæƒÚ£Œ0Ð eƒ’æº —ƒ ÄpÞmâmU“:u­G»‡¢Û …y|KÈ[](" š›'[ÌÑ qÙ|߃ÒÇûri¸ÈèÏ•±ì/Jü3÷­,¶ñÜÛR9TÎo­ûÏè†,ðk¹Ö"P5ˆm.øvª¡<À(”û ú^ˆ î­M£G•™ú…‘>Ya‡U\qð(zƒÈàs†LzÃ˾‹R¥ùy_ž÷¢G­\>Ñঋe7ý·–¢: FBl㛋µ/nùæí‡ì|”Ÿ•Z¥,+7— hß΋ÞÃP:ìˆwOÙ÷® 9Ý6¦0˜ö$šƒ‡ ƒ«a>3Ù·Èu˜3¼y°Íœ½)„R#lŸ$÷§f4†‘ù=hi°…r[(¢ É´(psá†Y&ÔúC[z Ýh fŽò2»ÌÌK(ù½é6¶È¯|edÎÔ ŒªÅ¯ý¹Ù`ӥ؂›s%Yñ°ÜÞ¹‹0aÑq ¦°ÁjK¹Íäk0ÂRÛ™UNáœ`_ê¤Éƒ Ì–‹/õúu>¦†¢Â»-õ7ø=˜’›/ã{Q‚‡Wb¼5%÷™ÈJ£\²X×\0o| ™Ü›·%ÉÑïËÛê-L(Tƒ+¢È½˜0Âõ,õÿý,˜ NŒ¢÷ãúb÷ãB0% ž“b[XÕà–(¾³ÈãÂ|ögÕ•][Õà(±[*0§Þ`Û×uî6ÇN u«õ%™zÕà#(y'³±ö/ÌEºêÑnpU^•‡RÜàÀ(µkŠ¿ü%˜Þ/‹eÕþßjRœÍ'Ru¢ž††ûv}þ‡„²¥ý¿ŒPú×ù¿Ëß•GÇ;zö÷_J™ü%ê8ß//~=ÃÙÛéFÍ’R_ænc'œ3>µ)õžÍ952Ö+Ëô3¸ì÷£vÀøÂŸ™~¿ G ciLÓ8ƲØk# 1Þêê%áw•´”‡H´ÃTByÆyJ¬å4&þ)§ Ï´Œšp†}»ÛCŠ™2™’Ž;êu¬½×ÌÒÔÇ™V™N]rRy¯]ÛJ)çxEWâ½ðNS cæë ÕÄ9KWƒÁ“´Z1ÎÊ/uãŠrë3. öJiʹSš˜‚P&·þ½gŽ«ºN™’q ¥“ÄC“¼XËïÿ±ŒŠlɶŠ,kd¹` ÷½{Ÿvã•vÙ·+YfÜqh™†LH!PJhh !O m“)I3-N3L€C “Ä„ÐBÉPÆCš@(qϹ÷½Ý·iß[ý È3^íçÝ{Ͻ÷Üó¿ç ¡O…†eø¶OB-ꩆ©™5×c61U·+,uUC–}æù0¢†EŒ}ÌÌ EW<Ùn±7x㫃qT›0Ý1=Cql˜„¢ê®…¹Ö|“˜†ª¶¯ê¦^78ª-z‹L[úW'k3ŽòŠX [˜ ¤ÙlÎËr÷:Ê1hrÉÏI°NÀá¢OÑVUs•-ÇŠÕŠ-,ѲA‡Í+‡†¿&ã]ÒÎ,† ›%3÷‘,˜pÉ+5¥ 理ˆwm¥Ý…©*b¹ò7\‰Ê9 ñlÇv)•Ȫg3@0½\©P)éj‘6ÜÈ(²šQL%£¨NR«ßj¤¢—;£aê|Uu2še$µ.yõÀXr8ŒyËÕ%$,R×¢Žm¡ÉVWì&[³u®·¤PðXft]E KK‚Õ „`.H4hµ+_ Kµb7Ò}¨R´ÚËàtÛV€à4‚ˆ"TÉ¡´Ä‘MnÊ—µ$‹¡È ×Ô\DmÕrøQÑ9ÁQQ”d…—‰¾˜Âÿ¡ªIN“Òx®_`BQ 5£é@ˆ5[Éh¦Õ»]°y÷O˜ÖjŸ¯Ì×ÛêÝUõ~£æMV4Cž#-ÑÊ9óq\€Q”k¦arR¥XZ—*·®û¶h[fÍÑ’QE·­LÓÔ¸³ÎÖœÎ:Ek&¶‹ªŸc;–ðÃÉf’ª4еp5Ý}ƒµ PìF×8–¢'AŸw _ǤA"kö$ ²U9`¥ ÓØXò ÉšléU²&§ ZL±9p8®Äº±DÊq›Ó(o)Ö¬«B Z3e^ž«¦åR\C†úI8I-±ÓÀÃàsVž™Iº©PÕ˜ûFÃ/­Y²j7k £fl –¿€ŸD¡!²ÍJÙBá`O,Â?Éï)”XO Ïܶ×öü¥E¾SîüÕ›wùá«·ñ&`mq«ƒˆpI+À"Òž‹k—¸ê;Q|—G74Mu¦©ºªXžJt¦Z²bPZå ƒcc{Ç8 KrFZ¿ÄpÈV¬¶lÏs][c¶kyÀáaì91 ¯ ÇïŽmß»o0„DYzH¨Oeª0bh–é{¤Ô&ž§¹†ižCÕ—ܾW‡ºôp¤æÖ†¶^:ÒŠð¥;#>N°¥}Eæåü ¸š à7,_/ŠSÅÅœŒôÔ2-¥HA-WœpÖû¹8áŒ9»ÚSMBe[•e¢2Å~aè.ÑTf{¶ìúÄ3½Ž¨fnº¼ü4³=ä“Å lYáüPbY)eYÅ..]¤‘wÒmršcßO)¨ºUi4ÎIV®x´Œ•¦8 ¯—Ú”þT§ÅäħºÅ©‘]E7TG·Uf¸žça­ [Ó4‹ëÔ=5í!OMxK¨vp0Ÿ^޶Cµt+“ÕÆD©bW‰y,7—¶ë‘¬=(é‘,íÆ/É,KCšãP‡¹"µ§ª¶¡jšg¹šÍ³¦G2$ËeíAX¶’$¹)HU𡎧ۘ”R 8ene X©¯S,È$«Gîö0¤Gî´·䆳£›–Å@Æö™£k ÒhÇÓd¦×s:ÓÖjˆD¦½,Â…VÝ$c¡ÜÔñÑp#š9›+GV؉(ë6Ot± (.ò² ÑÆ¼& ¿qù!òÇÐ$íÖ-ŠÑZ¦¬0O•uÅ´ˆaضÁdÕµeF©æ{þ)LÛƒ.°fæ$‚0u~]"¥É -ËOµGKE%™‘¢¤þœ¢ám†N™wºÅM‹­ü.H2¶/=2¦E´æÞõ1Ç]™äò`¤Ñø=eb€?5ÀD1çYuþ ×bߎBqŽã¬ œ" Wʇ¥=–ϳRl)»¥Â´—Ïy/kÿi# ÍÆ‹6æË…­ø§R†××ÀK%`ðZ à¥'ðñu^Xyc/(åJiZòI>`½Ý}Ðèð%â:FÜMsA1Oæ¶J"¨»¯gº/™ê cß1ì;ÍóГ¦Á4+×ü³Å>ŒÝ(An‰¡g×/Ï’ë•æ Ƀ¾K º-—rn¥Ìðš ™¦[fhΟÃ/*ÓhƒV¹2+MÂ!̤]#û¥a ¬ð›¸’—F+.,¶4œóØtzW ñ› +î`«ľig:çÛÒ+1 ÎÐW^©Fㄽeœo"e„»$8’\ÀÎIè@¯¶ë™oöµI"Aà=g E »…>a–³¹|‹sÁ.ù`{ð¤tÙÐøî½ûÇ¥þ‘Òeýccý#ãz9)À¯ÀE?¹©b>ÝÎbŒèty!ß38¶c7<ß¿}hxhü¿sh|dpß>içÞ1©_íÚ±¸LÝ?6ºwß`´±„Këó*a6?`Õi€] +e è¾BãehrñàȤؼ|ÔdÎ1˱¥ì•r>ÞÐÊH<`00ß¶f¤¡i¯'# 7P’:™šà%YvH¢•©b‹iE„!!uŽâ{RPåž½Õ£Ê\d¼Ãƒl®»¯Õ¢$[“¸z”v‘Ø÷ž‚šV} iÁæÎøÛª];¸[‚yÁ¼°7·èPdY laU”¥Hߨ)L‹Ôw"]'q7ò…݉•ó…ù_¿bju®('픣F °RÊ ëUi’óîµåÐ\Ô‘ë†I¢!ˆÝD®±0hŽ#MæÐB^]Î Ó³Ü6=ƒäósÂÚÁ¯—Ål2š¥C©”‹ ´¡â-Ê,™«Z׊}ÕŒ*ABiÝKës:SOóˆÜT™nÐT>O1pûÑØœ0 º+{¦£ØTµ˜A4ÓéÙ¶˜ê©–ˆØãM¼,óNÀz¦„hıN34ê˜xqÔ2\ß1ßÁÈ ƒië™ðIÐÁH¶ošT6\“¨*F‘ø¦í`’|XFÕ· Z ³u°\ž oX ‘ó-]W|Æ…¨:èНÖú¯îÄT09Á;îp4G7-vÄ6©£Ú2µWgžaë¶M@ÆÐ›GËaŠPþY‡#ªÌ 3}X4X2Åd6c¦ãÞÛ†l³yÄø8húJ±– ÚØL•©ò£b¹„”fIÛ‰¡ž($Uw¨êeÙÖri‚˜ÝÕ“K1Ò ÁÔ²&Ÿ.­d´¬aò©¥EÞn•WDø/RËêÜšùVSEå¦*S5ƒ{¼0Â`=ß•"B„µ.Jd3ž!ù K!5r$¬ÊŒK|@ª‰aZ;¶ï™tfM¯}h+jÂCnt8¸U^” !ËŸŒSìÂfžLNbĆ7˜ÄÏ Å"#%ÌuÓ,ÂŽ×ɪ"$ˆÛ¢à òÆQXM%ŒÒྤhƒë &“¨lJã÷òVÌïÅïj79­ÂtËá¼ÅykP=Lb-x>‹H£Úw£óÝŒ< mÅvQ2%įH~rTZ¶Nd]×lƒÈ¦âùšíÓ!žOU‡ÏoÝE fwN}81Ë ÔsA8²d€X "®áÚf¬óh•’w.ƒÜ Z†¢2×±˜GM‹9¾ª€ æPb¹V¬s,0¾ðÕra¨'«–f9ЧSY•ˆ—¦¥›2ˆ~®)±îó‘ FòJBxJX¹Ò´±ën«J«9xðnÚ `¬ïšrÍ™È)¯£øœÐb‡¼:|zõ#÷>=CfŠ™œÏDº$|FWˆÓFûƒ¡–7Fbîj]Ƹ´ÐΆá¨YvÝ<¡É­Gò¹!,eùÜAÙÄ0ºh’á"F:¹¡­S'&í-`ž­»‹—a¡UÅ£†’_µÄ.ô«-'ž‰îoÇJxF¥±Žg¼<œh€Åoê{ +D†­xÑžC;ü†­!}Q »>Q¬ŠƒQ¥<j­$ñRÔÿ­Vj©–~§ÆÒ×ÿ…º«ÿÎëÿZ¦¾Vÿw%þ1Åô©ïú¶«kšl‡ºØîȺ§*²±vBÞyçß/ä)+‰ò­H—âh,pþÅh¬ÿ­[ª¹vþWâß £#»Î\ÿAä—g탿gÃÿ ïù xýÁ‘+?ÙÕõ®-Cýã‡Ö½|Õž½O^röýàW•§oʯúÅiÿtÞÿzÕè›w|òJçõÓž{âøÕO=ròÙOœüοzõ¹u_Þ!}쬋¯yü‘³n<ýîu·Í\ñÂ3ßЦ>qÓÓü§31üÆÈ G~üË#?¾ó[WôŸÕuÉô뤽Ï×wÝ|èÕ__úÀ‰ç=ôÃßò€<ñ®£Ÿ—>ô‹Ÿ8çCÿÁ?¿ü_÷¾2ÐÕµñº/¼nŽ]ôÚÃo¼×:ï]¥‘/å_ù¿÷¼ðŒoË› _›Øô쉹õÁg~øâ®‡þwæÞ_fï»áðCGÿüéÑÍxþÕço¼ùÑû+o>|þ‡ÿñÊŸþÞo{·m×ÿæ7ú£§z6l½û±Ïn~â±ãG~çëŸ|ù›¿–λíŸ|óÃßyßc“#½]7mÿÔQó•7O<ì‹×ÿâ’›ÿÏÅs{¶¯ètÝsÓíë¿wì«ßûîçºïªüÕÓ§=¬ûw¯}hö?ûÐõ?»þ££#åçοáýÇ¿ñà¯~rÑnûïvß«Þuãý×ÜrÍß_yìkÿqû»É­]ŸþÜ}ý'þV÷“_¿ëö—¾ôâèÝGÖ}ÞೇϽö;'ýOñï^ÚÔ?0;ð•Óß½í¥cÞàW6œænúÝG6œqË=[Ÿ9c×g6ŸÖuõ§‡¯{óÛ¿|Ã#ÛîÙqîÐýßê}æßƯ æŽôö½øóã×þ~ï¥ß¿×.oè:ãžÏ¬¿æÜ[6l­ÌœœùÂî8ö·ÏÌ >7}íŸìù‡—O>ü¨Åžºó«ùú¹¯_wÆ}‰ø5482ð×Û¯¾nÒ¾õä¿FeqYè¿"« ø6ÐSY“ÿVæß¶ ìÝ1~`tP–F÷oÚ!uoÞ²å2mÇ–-ãÿÏÞÕÅ6’eåæoµÛÒ>°ÚÄSg4Ifb§~\vUÒ&ŸéhÒé(qèií Ö­ª[‰»Ë.«Üéô0< ¤}´ xâeÄË"/Hh%à„VH Ú•–7„ ι?å*lj«lw·»'=šØ®º¿çž{ï9çÞs¾-åû{{ |©J£G: ÚC‚••íý’’ÖúÎ ¦ð5WžbYf_Ëq*gÅ‹=´¿³ Ÿ¶ƒNt{D1šmÛ<7KË‘èÛ=-!m™~Òo=a shS(£{IZ¼2˼†ֈƷ;e‹A/](äÃòñFy3lwIÜBêA9»Û·íA2ûºˆ`k"]då`‡C…±ãW•ËÕ2pjݽ€RÌ«¾ Ú{ç±Äº"NTq£¨¤ôh€¨ó€F§”Æ¥4 5&XUÍ•õGŸôiï¼òˆE‹KЦsdôÎ;âD*Îjo‡ö[åž\Àùvð¨4L 2®œ’&ÃÏåB4 M:ItÞq“ŠÙõd23mx`¢nЊÒKŠr;|VÆ€ åˆ0{WyDOEž)Žè\ù”t<Ù¡ìaɘ…ÿâ²/3—>Å`ŸËn²s©ƒ˜¡;2ü„$…¤\¿Ý†Õa·ËH­ÁÜ*³ÈKIÏ)²Ž+Ÿ^]Keƈ”ð£ÒfQoR€7xhÄ2­g[ÉP¿Ä³r;‚¯yÑ cËeaÀ|—¾Å[4ëor¯!ª¼ýI?ŒÌÜoTNù¯[+,  |s8Cç ™…P:Þyû$G½QìÁnÍÌ™˜ôNr'f÷fs—Ü s¦Í))µxÚK váº@zØSAØM¦Õ®h«G»°cÇ+'=Ò=M£b§¸sUòa¶¸Ñs×E´Z„³5&uŽXÄ!;^s´ŠÉV°°µI&]JÓàN¿úÅ'#Š•x·+ry½Å ]iâ"q©š4ó•ð¿ÆØSÑ«à1±Ä#ÆùtyÞBk½ªç€±¶r\ËÛɯqš-†ê^טß# ‡Ÿ;ŒÙðŽÁîå]Ø6ÆÂ™MŸ_·˜ÊãÅÛÉ݌˱texúÉ£Ïïâ ï ¹XšÜL¹šxê$~Äý’$´{á`ôs-:%ö´gx1OuU§V¯—úZµêë®NýšW7f T“£.lü4ÈÕÎzóÎÑVóèþñáæ6bÓŒ(J€i/ ®ox¶çÙZÕ7 ¥.1«ºÞ¶Q%±sÔ5b#‰˜L³t1Þ·|3vŠf*Ü1S¯[UÕ¤u_5ªžîhÄÇKí;1}:ËAÈQ×ôƒ°?«Q(J™iF¡ª›š…>ººn×,××kºf;†UÕ5§ªS:Ÿ˜÷‰7ÑØÖK/Ÿû;;GÛŸÏÅᩎ‡¿.H«iÆ/^úÔ'¾«©¾k©žC ÛòtÕT]ZÓÝù—ñ­—ãrgïþæÍ­Ý£ÆÆþæöè‘Ñǃr¤Ö4#3ÞKnžGf¿KÙ‹š¦Ê»Ê‹ã¼ñ+sѱŸjeë)9×+ó~žSóÙ$Ì f(ï(ZM)+Úœ±[Q˜ n¬Ãì<³Û¤î¾Ó/mð9p™VË€YpD¦}ªC¡(ZÄ5 B§eTë&± ª×µIÕÏ6úã[/áÞîÖÖÞöË^l,\kÆ3@ÑA™Jªf`®¥šÉƒ$Œßó Rfî,SÙS,¦è¦Ž²Æ›¦Š"Þ¿|úܾó£üà_ÎÔs J©pìåa˜ªËñJ‹ r‹q¸i@Óñ *hZ”“§YPMj;Ä««Uß.0‰î™NÍ4ܺ©ÕˆFgjÞÊQÎú ^ÞŰÇ[Í'Q‡Òæhã":§¤(‘¦Âø­eN—±ñ-‹QYÄ 0-o,²v!Ê™û¹³d0µÇ6eLí‚ÿÃÔv¯1µ_LíQ+^A0ù9bÆÜ /RbÇîöÀÁÚ[hŒŠòtÎh!™xlƒ&X 2âTÇŠã1¨æ•éóÆÀ˜CžÏ±z˜Yqz–¹Ç·¡8se¸©Ä‹º^E4Oõ|jW ÕÛ5TªÃÆb;³T*rÔ…JÅÄSÑò®Eâ.$üvÌœóRXo²/3A±^‡Þ1•ºó§7þ‚CWÔŒt3u‰_²â­å+ÆÑ—˜Š¶X"ж(¿©=ú»ìré…¸~¤#ï°Sì{]j3ìž3ÆS@ùÖ”½~üL¹×§ w09KJØqƒ–ûøvIrA…½Z€UgáÝ… Wñ£ÃßgïÁŸ~Dáo/‚?•ÈÇ¿øCã…5ePñIѵÒ:dzöw—é½VÔ ÈùªÂ/ѯW:aÔ}¯]¾x;HúP)’¡CEž$¸ášb+8E÷Z.íD4!)ƒ?ªG©…~|Fzt-èQhFÜk9ý˜¢éx+¸6†^Ë?Ç œž…£Ši¯Q¿¿¬ìÁ ïÞ˜Z}G ÁT]|r¿̵ƒ8PvB(œ ãšBaŠCYOh¡Þë²QCo^ä@=%dü·=WÐë&ÉWÉK­KÉ4 j#¬ §aWb< ð  (¿K¤Tì6îÞ?n(û•‡‡û‡k $4Å ^XN«Ý ZAz=҉ϱ‹÷¶7ïBú;»{»‡ØËÝÆþöÑ‘²sÿPÙP6»›Ç{‡ÊÁñáÁý£íŠrDiÎ1ðÙPöð.7›äÅéƒ!Ç¢Ss씀¢.@ÊÑ`ç¤-ÀA:=“*ãÍ×”–>yË CnBãßUŒ²¬ìvÜʲbj„tÃŒs)âŸì´|(|'ÃÞ²r'ŒbL~oCQuMSËš ËñÑF:Z¨¸S|ɚǮf‚ç£3K1˜Ó·M^^¼Oq梌>w¾ìrÍÄq ou×·`R}(LœøŒÂt}?Â!“1Ê1z3‰ÜVKaÛGTQöÃXLº‘ç2,œZ$§ÃVÛa¸+§l¦sñHºèÒÉ_%!ïòkÍqœ3?ƒ7tZ5Õ@9뿊t[e·qS)ü9isÏÂÔSJëŸ~4Âýƒ¿’ípû=|ð¹ÑEå¹Þ *+Õ•ÛÈ^Ì«þ;‹ÌçSAü_Ñô%åmÒî®)êSÿã5eN;a\Ù Åz%:¡_݉ê+Ñ ;Á¥7Y)t'€I[Ê܆½¦²¿Bz›Óž¼«¨9z¢¼=Ñæ©'“\0ÉÑþò ‰ n)•õ¹â¥Iz0W<4éµ}ø¨3a' hùíÝ´¹åùög÷ÒÚg#ÇÂér”ß(VÚÌs'2S øMž ‡ðÀ=ê¶.Jr2Ϩô>³† T&¢òÅÕj†(a"Òå¸P8é&e„üäKç›’„µiH˜ÃdBî›x¯ÌOÄlÎéÈhjÓ1ÇÍÆÉÈ8ÉFŸ€2Ï”hgI7ˆ\"U1 _Šõª }$ ÏΙí… ÚÇâó.^ ;Á9šLiE9(‰(ZèP”t2ÖóVDH¤(lSfØŽ¸6Ýê ´b‰®@‡ÅW…¾U‘™GÛ¤%qkŠ@ÿbðî‹€¶äpå˜;¿AüÕòÙÆ$µ‹sÂR„vÒ§J©¶Xx eãÔÒ+Á¬9„ž9cÖ‡_IgžÙòìù0Ïr#*_›_ ÆÍ!rÎã„Ì—í4 c”CØ÷£³Vìžâ·B€2%ïU`™²áü° —çÄ—h\Óíst¢…ò»ä@\<€g¥í–ç j­ØA£"§/9ô§ùÜ´tY¼€ihþ åŧHM~`¦ø-°sé„ð/ê¨ì’3Ré&Tàl4Çm¨¹ÀB¼†B¼†B¼F_%Ñ×/¿êù b)S"…;iñ›h‘¼Ì_(c b¯ÅhEz'l/`WÜ™Vâ m)SÍËF<÷“‹ôch€˜ QÎÈù,`çs;(dà.y÷3MõI­×Guk¶ZošÄ¨ùz]µêTw™ ų,î)u7žÅ+!q-â¦áÙ5M­èø¶©ù¶]×ëÂ'7[IÓ'Ñ5QóTÓ©]Ç›·~Í‚Žòå:ºo™Þ & p<¹\oÖ5¢Rê׫UͧÔÖˆ^­‚ãëƒòû‘ÓlG'MVð„µaì/ FĪy¶n©^fêšVÕ²ÈÕ‹µ1ËO\:a:5=ƒÖ| L«Q‹Òšmß[¦ *ÊÅÓõ Áº--×µ¨®z>ÈZÝ!”ø®ë¸ÐKb[vŠõØEÂâZe×ß—'—â}ó!Oôkùt¶’Ñsõ¶/,-²|/6›Å(,«3çÏWId,à¥Ḛ̀Bž¶Úý¶CÐÑRÈæÒÁ}ùy¦ç/\¹´ M§Ž]§®W«SÛ×5ÁlÔzªð–wµð5’0ž«êu£nk i\¥ ^ÖêÕš ¢ŸSSÍTñ” ÷xŸ ‹ S𦻾â&°D2x™HÇš(Ú Mqm„¼6Bæ2Bòh!|£ëŠéËöjñ•-&ì7ûÂŽgp3ÖD>c¯Øq˜Æg/­AÃÆ–dÆÅ/gÅ%>ÈèÀ(Ý«”²ë3)‚[Ê‚Öc*mbè¸+e™h™‰3L’ö®0Ïfâ´€Ï)ñfa‹Ë7!¯ ¤˜~Lœº©ê´Û§]×ßRº®ÃplÛ¡uÓGY·¹wÿýæÖFc£H fݰpUD­c’»ùìI³¹•\D¸É[j.ÌJ)}g‚]ERøH–ߥñË$kr.åé÷Øe©W3­fQ„#à:¬ø3c)—ߦޑ¡/—r*ÓœØÑEÝ”)Æ\ùmy“©ÓkWàX½IÌšêé¶ã©UX†ãy5bÕ‰é¾ï¸¾_e‹õý ¯ã#Í…’óäÚ®|}ïáõS9D$³¢­Çm¯Ïý‡¡ n¯Áeˆ)/B`âZBî"8Kdî=ð`~n؃½¤v¸Ù=TÒ•½Œ›$RÎ)Fðh„\ŒòëT3²eÎævC15nôî<ð¥’À¸ zð<…<<€(bD,÷Ã0Π—§qœ»$>MpœáûÍ‹„ÝÆ/bŠ Yó¤EÏ’1{CsÌê °7”EzI°@¯ÕkÖ,f˜µ¨Ekª ›¨Q÷Ai24J‰cx¶L¡’"m´ìBU9zêži;®j[Ujƒ HAå¬[¦mø„ΨªËx`<òê÷ >Z E¤àåyé&xÇÝÕ••³³³ŠÇaç+aïd%Ï3 \m¶TŽ^+s1¬Z†h*ž0”Y².Qìeû8&y‹Nèã'Vµ~óÆõ¿Ëÿ 8ªLº-68+|q‚ù„çqMfžo6cön¢:TøW«VñÖ6•ýÖøoü¦Õôú M¯é†fÖtM¿©@\½¡¼R„äQ“ÏWäß­7¶îo6l+8¼ÊÁñ½ÝM¥T^Yy`l®¬l5¶”ï6îíÁŒS•Ft"ædK‚••íý’’žêg›åÕ§X–†™Å×rœÊYñb•/VáÓvЉn(F³m›çfi)Á]D'Xc m™~Òo=¹]ÚäJ¹Ò¨ÜzxÄDžyÅÇ¡ñíãÆNÙbøÇ ù°|¼QÞ Û°³´@ŠH•³»}ÛäáQùEGR¤Ûâ«“X–XfH-Ø ûP\(£G’Ðx‹ƒKÊÆÁîª"§›u±€GN£Ôó‚o‚Üy,Ö[~¢ŠE%Ðð.ÎR—Ðg™ z`l4™~óˆÈ¢æÉrIøËÉ”èò¼à4ÄüøVb$âl+wðÉȬ\îLl–äz†äzAšÏ¸_zê’ÒvÐ .W7SJ¬Ùéµ+cÜÖrÚ”¯ò`Š´!è\ù”t<Ù¡¬rÛÐ-½îà…_7¬jͰìºFŒÒú€Ù25)[À pƃR%çTرn¸UU3]MÓÕ¨fªŽå“Ô3ªú,‡.G]8t“²9ëü¼8‹ö»8¢Ãioe½ÁÎARî÷ÜÂŒê_…”3 ·G”Âý^ØVøÉG„g쎫ÌôŒ’Ø@X¹ŠÃ‰Óa¤E#ÁëÃÚìû´6m}LñW=ÃĵÍzö_ù€kÀ°ÚÑi·ÙDçìÞlí¿¦QÓ ´ÿj¦†·ªhÿ­õkûï‹ø÷›ûïóæ/#Ã}s÷îÖá?÷øþƒ¯ÿ,üýýÁÇלÞߺñøßüÅÿö ™Ý­ÆÓßûÉ¿ž¿·÷ã/oü—ñÁ§_4ÞùÝ?ý¥¿Øºÿ[â5ß-}ùk_|üÃ?ûÞxòý;_xßøÞG¿óÁ[¸ø‡ô íwþù¿?ûÜ_ûË_ùîOÿåûå¿ÿ‡½¿ýü?ÿçÍýŸþù>·ÿúo¢;ÿ»/¿uðímÑÄ_óæšøúW?ÿïÿÈ¿}ýk£¾=ü§ŸÏo}ÿ½õ“Åßµlü÷5èßèÿÏÞ›ÀS¹µ㊢‘¤a‡2{o{@æ!"2O¡mž2ÏJTˆ¢PÆLQÈLæ"¤Bæ9…ÌCdÿkS:Ï9¿žçù}Þÿûž}:ì}ïÛZ×Z×u}¯ïµî5¼JÛAPN ¾:r{éd\˜€Óm}õ¸î‹83ÎcÇŽ÷–é¶+\D[¸’!F@pÅÒËÅl«"B|ï® G_Ö“ŸŠKMoÏÔ×v9Ç%î#ï>ïCH° ÁUäÞÉkû õ°i$I>ÆÁÁ!š×vð*!±©©iÆDºnY^^^•–2(Í{(M8FUM­ºäEíPppðA>»µe{+++sWQQ/_ß=ï〪 ïhˆ^{ñÌúcy±ó—îîî÷¥îo8á÷4ææã~GØë¢\—gM¨®[x®¯øû¿é.°­(/Ïà¯ÒÒÒ/Cõº—®¦§sHÚÚÛK¬¯.UVVN …ÉßWVúˆÆ2³°XtæŒôWß&ñjnm='###-ý‘•µna´1Qf%ç€Û^/ˆ´´ôXkZŸý“””1J®öXI ,ƒ^»0Œãd·s¼#[LT´½dieE_àýû÷@ŽölAÕá¾¾àððNËü´÷ q¡üÝ7¯9N=JJZY^¦p™}q8ÒsïÞ½Ëý·…ä¢Ï< š^èõÔ§VRR²ê~–i?Ö Ú£¯µsçάììúHÞþþþ»QQîc­©Ók+ -ÍÍW 7óó¤ïfÐ***fT2èëë§¥¦~>zDëÒ¥K’’×ÓÓ§@=½ÅÎrF¤4| IIŽ ]*)ªK‹‹]I‰‰@ôtõ̾Åéþ;v¤¨¥—Ú¯ø |ú%à:ÿöüÁƒíóüŽ“æí"òòéñ–¼¹?¶ ØeG–„˜˜˜¶¶{U@¤§£#Ÿ]r``]kš=}FÀ›PŽ»ÁÁ )fÆÆÏóŠ¦Ë›š”Äp¯Š¦¦ì ³¢ÍÍÍÓ#+ S+KKiºe´"wÚÛÕ÷íÛW,QyôèÑÁc=z”ž^fÕ+xþüyó•š»LGŽ}1:6Ö1Æ¥ËÉÁ!`ÑÉC$¢úô" x¯_µßÁ[>úLGö͇×ìíìæíŸ××\ÍW–çÆ˜ä"™šò#;K­ Èd2y „yî…„{¶ØWéé93=]S___[+`?z¯¤Äý¬€l8ϰ$ŸÍ—Q]$&߸tò¿¸¡ú˜!Ïõ+;gÖ‡j#PÀ/«µ”#ÝåÀ*ÛÚòŸ=C ¬5?V×8kjf&ÍH Yä0AåUYYYÉÉÉÑcB§ñr\‡ݼ#E$-í•ÀHÏ"}磔ô!ÆS{ÈɉXX¼¼‰Dƒ¦ÊRq s‹‘îß}îô¾KV§Ÿ$̲vÒÐxŠËˆAnW'Ä 8¬ˆˆñÁÃÚ¯jT.Ü¿!ñ÷ÉPgŽ \·:yÿ> …;DÈè½ÈÂ#দå‹4ÎHijªi†ÓŸŒUÖñ¸ö"y0 E$Bq$J*aGmmLDD÷1ÄEÍ×o"îJÍØÛ70Ÿ²Må±UÆÜ ëÙaûyÁ²÷T/ée+1Fü/Û#„¬/E§¦¨9^3¶±ñPW?KWæ™Îx×wÿî7ÝWÖ×j‰J‰# wê9Nì}¹ …QÚ=þôöþ§O‰yÅ®(ÞRâkÄl‘|¹¯^ŠGÔ¯@9L¾ƒ} –^¬®> \?wú𧄺H =+«w‰–d[oöŠŠ‹‰ ††´ÈHݱÛ=ÏÄÂbcЖ9çV!ñÊPÎ1y¯[JÀN$ !»)þòf6 «ÚÚZ¡õi21Ñ^GGäãǘ0öÌŵ…‚žgr ïp1zÙÛª—Õaê ŸÿËIú KØÄ¡±"e ‰«Õµ4MOóÖG»{|þàno×›ÈWnC¾^œþãÆºÕGPþΛ´"dDÒru1‚kC7yJ§=89 eBÕsÎõ‰‰{-/„MÏë`™’q4ÔzG‚@Øz,ÕÛ»ûæÍz V™ÇÝà&-×eO"yeUV«SÒy}áuÀ R!ËžeT@䮯_Šáž=Á¾¾ó%®‹é»?æXtM<{~)§ô ä®´ìé7/ ÚCáFAAKÐ Úªªe®Žï²bBÙ3ÛË<#/ò#qÔÇ®®<{üØÄÏ·f?éÆ Úõļ¦|³jv\Õô·^\:uÚcéÆÌ¸Æh[:–øµ†i LÂs´Yaï^˜EWï³i‡©÷ž$D žž_†zÌÍ™{Þ#ü} —KÜWB^,ÊŸ—"U¹–}Ê¢$綦ùÚ ï©©mééƒ6\†RRÑ  Å%Ú©iE€Ûáº~øñS·é>ñ—aÉɳË.OBCûî±ì>xpwh¨‹,¡»w_ p¿óô>LLÀ¬žˆÁ–QYÁð06Ö'jœäæ­[)jE--».(gZ™¼Ø»ááO´súùÕ³ÖvOKggÐê…òrE`øíùVrEÙ‹@‚aäfóâéû¾|Šr[<}RoÊÌGÝGZØ…‘w46ò½g"!ñ‹£ä§åŸ7(÷âÒõøø*m“šKÇü…ÑFÔÌg§Yf_w%_ñ{AAv—¡]ùVyÞD›’²‰3ê[>mªx±“@˜n'0z‚¶deQÑIPcÌiΧ ŠÁ1Ü™\]¯ù>»×ìmîÓÀBýê(£zÅ|óÌÞ<‹ÑŽl®Œr3`ò;\¸ ¯rÍš•+=?çLs³¸™·ìéš”5oþIc36Ý‚¬à0ÿ€¬¬å‰.«³gœ\:­zFŸ»Óƒ¿£vDDì••]deß„™pPø=))¹ZRR Êç2xz‘ñÔ'‹vëkrFËKpD‹äºšÍá»,llÇiJΞ·ž·™Ök~qí6 ‘Wxç•¡zÇýÇ QÚy†µ¹~~×÷Qv;±$I*̶¦=ëõ$}tA¹>ZûI||÷> !Á§kѯP²]žî_ª:+î&-Ö•KÅú­Ô,¿~ Cã—\æùÔÂÎn x}\‹­(v6Ê7uéªtz¥XœI¦æÆìR»çE{Õõë¡ ¼}œÏ÷æ˜sµÔ- -(ê}ûšuíS؃¨P3B‚q¦w'3EVHŽ“#†O¹¡5çïF¨8×ìþ9oU{ˆxwu]ÇÌ kDÄHša·¾.¡l$zæíƒS{÷6FÍW\Êps‹Ž¤±4“áµmÿùÒG] ^¹é… W'Ž9<9ZhãMTG£( FÅg?jL|cCölÀa‹1áÏ\œœ®×Ë>%¦_ÔXj’7->ó©â†Uª×Ôø¡‹+W,§.NœºfYç÷refêJ3Ò#ÛªAQVYÙÇŸã`ý˜ðEYpp§ýØú9¶™y×yuhE]y§Ï iZ—ú®®¯\ÔШ‰>H"õ~À ®ÐVëÅÆñ¾áyptÝ[vLúg˜EøÉè!µ*#©0îc©úÕÑ‘ü z#Šo*nP~† ÐyANž”‘¨¥.Z›Ï%GRžxA΃…åcG ÐíÌ ÿëyë7?óÞ£G Ïœveô³‡Ð8†\ª+Š?k¶¸Ä1tÙr*.ŽJ¾^kÏž‚èh¥)-IàDäkè–õ¿%ë¹Ìƒ8³*caq·týŽI“¤|„arºx{ìž+ímW­QÜËp](ÉÔGÔGÙö_ö¸l¾«Z))º>ÆÊmà•(/ïª\, (.Ò?t?p€ƒKÇmÏóÓôi‰>–zq ¥3>[Ý ×yÚ.)Ysý€gHXÛÊâ3¹èÔúþl==˜À™««¡Ç%/{ƒôTç«gµµ¿€€NO_ âAb¢Ô2²5UCߨ–*>ΫÚþpQiëU»„ÌLì¤ë”§zîkÃÞÒŽ3r:::eÎ_Ò§²&£r ,6­9n'n¼Ä "uþ¼’ÓâPõí» ë4Ø)d½…’¿iè.½HÜôð¡·€ë¤óJNöþé¤=§ïÚ/Ï~iJª 9±_.úbsY™ùfi‹Ä Íîš**ýþ”º÷Â¥Û;ïóÚ¾m~„BÜj·€Ž0 %'‹öÏj-1ž|õÑ/û³ß—®NÒ Ÿ>Ìuѽºï°îfa Œ=ð Kd‹+g¹.Û¬>ËÎÉ!⪒jÞ^87¥–û°‹€ô°X©{ŠÓ*𗇇——$®ÄÄ׎Ã÷OŒ{ŒîK¹ ›¢X~fkô044.¦×††«]®;T_vÆcµÆ{P”àŸñ‹[MÅc—P+#ãHC|½{«"ׇG ö¼ëtAßvLóåK&¹&Ò²8(D¥Ðsã ÅF3·î> ¬}ÑÀ̧ý*ãyœ~¯È„äùù™FŸ‘~¡Ê váNf~[ ÂlT<tŠÐÒsý<Ö}ÙîYÀOÍ+YY÷ŸI),l¨`øP‘^¶¾÷ ðËô ©d¨ÊJDl¬â¨ÇZÐÑò¥sWùÈÖÝ?»¼r}÷“üzÀ²t¢½â†—¾pÝ>±' U¿¸x™éøñ-ÔüŒ={)4y—‰EDd Ûݰ©&ÄN{ÈN•M¬U/÷9}ö6_Íë™{le8~Òz½ê9›šª_­‹àØ,8Y,ZZÒA'ð–ìÝ;--RÝgï Ë îótÕ;ûð`“÷õÓSG’™çÇÅÄ¢MïÛ—Òö´$:J{°¿t]˜Ä@D@p‡nAÊŸ/Û›(rä…ÁÈøfQŸ¿ÿŽÉpõÃÁQa9@øæ'òããáy€J¶\§wX¾z´ê}ÉFwéšeÓ#i×ù·WÆN\iÇÅe…ÆwïffML­­õìì®ß»÷òË2®ÄprES"Pà®ùÓt|0—œÂô©FLÅ='gÕ ¼ÂÔîdf¶úì{ro€wcvT ÷‡Ì`jÐ}¤ ûÄ ªœæXYØÙCÎ%jiŒp\4†¹ÆFF¢¹æO] nŒ€ÁÎ9³\Ï‹y@Þ‹ÏœBä^ª 70ÌCRR,3@ZÚÙv0òä]_«÷ã**½wOs]‚¯êe¾[˜²©ݙŠJMægÌ[S3¿ ()ß›Z­qßÓ|u¶4Ü÷°<×E'^÷ÂÓýu„»_î­:aYUeH'xƳ†üM_1ñTxøiú n‹ðؘÞ,Ð* >(”*qšê‘aæH‹¿  §À€ÏŽY6ïUóU5;»ªPŽ|iÆò‘¦§ ïâ·¨7È’‹ñðmþÂk{ — =¶ÿè|ÒCÈÂtÿœ ZPÑËÀæ¯0Ü%JèÆA•[~3£J’; ^â¢*‰. |ÖÖ}׈}ML$LM ßç·Šžn %·’Õ@n9?^ÀÄÄôibBÏâüÇ÷‹‹Óp£rÔ ·2_oPYª–QÛ] `±·q–û8= DU—©÷+méÙífÁòá<Áak—aÉ„/’ff–u=–†jîRL¶ƒ6Q#»RÎJJöMt•°²Z+1{‹X¶ÒçVO×Iì-ZXïÈ–göãCßÒ|ö.¡žóa»Êb/[ð·e«3·oÝòŽJÑJØN'4XåzýÅ¥¼•Z†“"‘¼MÃ݉%‡˜AB³‡ní4~""ÓXìÜõëáû(Ã߯X1¾™ÑO~ü1=9++•ÇÒ'cã×^»ªˆIëÆz7zYÄ9un-÷ß>k ’3Ê[¹¸óªõFé‚9«]ûvî'ð4'ÉÈÈËÌ|‘+¬íþ¡» ÿ¢vmnnˆM3• k.Ý­yÙ_Åv…õ‰óç¹féþ~¦¯ ÈW$÷?=”ù$Ã;ÎO@@¿¸†Ë9™}ýK_ä&KnP ±³>öiÀÀÔB Rø ìúSPî!­.»ÅÏýW®´kdWÑò¾ä%F"]/\(Úp{ØpŒhçÕšUèqº ©ÅþÛÎ)ª$,¦€OᆀHŽ…òt-¢Ñ™KÕT~›q…ƒ1ýžQaqmè´‹¼Èˆ\šM ¥­kêÊ»¯¢G¦ÊzAJÈtWÚŽP„LCãq{{Éç1"a  ³+ÏÝVTqŒÎuá=å‘–[ÇãG€J}uÛsݹÌ}…†¿è àSBbQLaò“'¦@„Â>»Os]ÖÃ"ncûæš×û5Gs /ˆœÜ#p{ - Üó…Å–nÙ}θósrrêƒù(z˜‰©éc… Ÿ)(~^)InÎÐ;Î_–r*±©ý>ó¸0‘~Wž“|ô@öáτĹ*•ž³ ’Õi$ŠŠá0Ønñ8;•–kï÷ÉÙÝ©ãÒíl®ÝO€–8ê˜^ˆ[.¦œb–—Õøå‹Ò"“´pé…ºººyoi‰£úòÌ@—×Îõ•Ck_ŒNÖsP.\¢ ÓÑQðì™z».j«ªµ­+4P[ º³6·Ð›4‰es¶\755åãå»èMpÃËË‹¨åH¤ˆyZÀÿŸ³Ýçþå433€&"‘ñ‰+È·+¸‡G¸duøâå˵k+t–ïoÕ¾Iáái^úw÷®™§ôæóÏY Pл“TÓãI@?en%3£ÌBƒRR*_™wÇ݆Þ„œx~”©Ìÿi^^ÇësS«Î(ÀÅÈÉ1Õ»p·\¼&ݱ¨¦Mƒ€@Z¦^úVƒZõiN ÿÊÜdO@¶a@¥­^Ͼ]½ÎÎÎljOÇ•\²÷G•¤ç‘º`’âÖÑMòù‰_8Ô7²“€G®È($z‹— Mšj¡ú+k ‚Z¼®¡Ê<ÖÞÒŽŽúÐDAXXX.[½kl웜|úø1ï¥ç””aYY0sWkëÏݶÓGU´ó <¸*3^ã°g4a”Gd• Κ çÃ8K²rFì8¹Òg>Ü%-íÉ—ÛþVöl{ìÜÍׯÏMȳê¥=~üø‰«K_Œ44:æÆÚô»b„<'?|¸’ŸÜÉç2›ü0žpƒ|åK’¶ßc¾€ÃZ@:Ý•Ï[ª}µªŠX.’$;§Ù}}ÅüÂBÍœ"*Û©ø¦¡Õl?¿×71Ð ¸¼Ôý¼8­ïîîŽÅbYCü,ó|š•5Ó’¢–ÉQ[[ý¸ˆ©©Vžy¬âãÍÀgóºDî$ÉÇLv4µ·«kk÷tuñƒ(/rÇÏo/`n  %Z8ëbÚ¬z SRRRS‹/÷W=ztz]¬Í¿ËD§¦Ôejä8;óIíÀfÀ5¸—¯kDÅ Ò®ÎNC %‹!ôhw 9}>üè©ÈHsSSÀ=Ìû;sͨ©©§Þ—ð³Hýô¾Äub|ǽÀ›ù‰®¹Sq=»;::Ο?¯~íÇKgÏž¥H×.rø2x¾X¢ÒN>O¨¥¥Å·g÷9êSÓÐÐLu(éê¦?z”gÚòøä•+W®gÅø HPQVNhaöÛMDtìØ± õÔ<~‹•>=û²³ŽîE´'Hžn‡_ ”2ÖË«ô5x¿±^’“c§¯ÏP´ñe¨~lxøŒóL³gè3gÜ^Þr°ÊM ¶Fž413Ó§îˆJJLDðð€†æ[õÚî3{~‰Ü¥[ìt5nxv¤é6­€_^Ãä¾8”­ÙE–È¡©Þ²°°°¤ã®|«OaºŒŒŒORR6V¿Ô4%eWˆ)Ì&Åx¸ÌYÑhhhØl;3Ź˗¡ó‹ŸÞ„QìÝõ)\ËqD7r ˜ÅM^ÖÚcǦ>X‹ž·HÉÛˆ VPitßqª HHLì`°P œ?&B6?_U%ibbbÎàªÒ£xîœ_6±ƒÌØdiã·¹óœW⌠pÏêzº»3ÆÆb@žèä?:óéM;—p3câû¢“ Æ<æú¢¢^ñññ‰‰Ÿž¨¤ c*-3LšN½ÌÌØHKK³Ï™$öP¾’°l]äU\ò¼/ûøzÊJVV¶¯¯ïíÛ·´‚nh÷åYÛ¡ºË“Ú’’JK£Kâ——]ˆDø\$#ËHedd²ÕÙ9 ìÃä¤?çMÎß­ÇÆ–2ûùcµ~õdoܺ;±È%yvÊÁ1æŒõÃÈ ±±Èë׫ÚÒu3«mGz¾~ûö%mBRéq‘k·UúI±ë®À“õòÞCÐh§Ž,,%—ƒëOž°zAäcííì^j)›µ¦¾,²Þ9h}ô¥@è;ÏiŸhY¯‡²¶±qùüAäÒ¥‡¹¹¹×¯K=Ÿ7ÙjõMñ>` ºÿà¯e÷3é»§}nÜŽVz-ÛÈ¢.|˜4gºñ«;'544Ú9¸‘>\ÃúL ˆ€ çdä=Ú+´M¢ž³ÃñÙ_œ¹iªª7꣒S)f„íÙŠoñÓ¢­Ÿ·¶"góó».ÏŽT“ÄäæÚ»¸¸˜š>)(X²*[»¾î˜ê¿¶¦ë‘™ýæ5î••­ŸŸúøñHòÿÊÆÖÖõ/õBMèg „àx¢jEÙøþÙÜKßÃMMMJŠŠ@aiøšYD®íöññA ‘“¹ûDî€ÞP=plՇ׀û?Õ.ªzï´4ó)_beÃpŠ|HþÂ…;ÀsKJüâ>~ü833ð0m>°Eë†OȽ{ÅnK “"¹¨ÓdEZ½/ñJ€OºVþS•ÈÕH)’[€ô[€=¥í0|áféúûX1ÇKGZ,¦„*ulXC -º§N%b$"&~óæ~×!¢é…:¤ùýàà`Ðï¶¶ðÎ޶JJwoܸá·ùJJbjmìèГãdbJêÙ}êÔ) ®²$¹(¿ŠdÍmàíW¯^ʬ¹*RmOµ•@ hn.všîFÀÁÎþù öújÉ9E*i€Ë¯ž` B{…¾2€9ìhmoT`ÖöTÕÕö ´´Thmönjjª¯oÍX[ú!¢‘á# „'•\Ïu™0ÎJ¹“uè%Þ Ü(Î ³_ÞZ÷aïw#o“ä•wêé–Õ)ªLLš–ºägôÞÉΆ{A€Ì;ϸÌ¿½U?%&)YÌ0S7rf=¦ÒHYÀD†ÞR÷"û±Pa—þOÏö=¡s£eq“¬¼¨£p›žŒÄqê}¥!ÁA‘f×®–ÏÛÕ+==kŠ‹›Ó´ÆÈÉç'Ú?Þz~÷˜ýógf666vöÙ™™ÑÄD!QŒÂkHøÝ»¶s£-¹fm{ùC'Ÿ•)¯’•©| hž}ÈLE•i“X–ø)PJ6Uu&Æñ/ ºL¹¼xÜýnò«ÞÒ„»/0ãph0ZLWQaÂEÝ›O˜Š]ê^¾4hy¢rø´,™{ÏÕzŸúäņ¶³Ø¸e™ÃTTš^ׯ­ÅÃaçö@¨¥ç=àwŒô&’n¿lðДðŠñHm8¤ ÷T7’a?S0°±µå~Ç÷ÐcoA"Í?ô(½×e™cóÙîG¿¨ü}J¦?½)]NE¾e®nÖK›ç_Iể²äBÂÚˆwWé–­?zöÌpuñc[zz4L‚NU ¼±[VŒL\RR±ý*¸ý9Ü>™0@Lôr÷®SRÒÒhÞOµÍøí’ã2®•³Ý%Ô&©6õa\ÜÃÆôdætð35•$lqqÅqq'.Þù|³RôÍ›1™s¦22f ›zózÔÏïɾ½¦à'xn,)©«åCsúyî“'UYY…}}›?Ãgf®{y=il ///ì쬪Hïæ=ßÝIàr¤G\ÆzЉ`OÁaw¤2R‰ô®ß%<™œž¤Sºúºsyã(ÇLÊc“B7çÊ•…‡qkï—…Ô·n\–N­1h¼²Öö4­ÔÍYâì—”{‰Ia—|^ö£çâ¡§[or}`Ê”$cD/Æõ¢8ùJ^¨lCP†T•Àrƒ¬Œ—T"d§s°>q^ャòãšÞ++S<ÕѶ_[¹6Pð6„“ƒCCG§·ùeÛ;™Ì£G Eùæ™LA7 lVzŸíÄ4346ê x·r ¤\Oº»m<7î?îD!u^íiNC5ûøCqÒk/–g¹OŸ†óñÁoˆÓçÕ.ñÑ<5|SŸž•Å÷ö”ÙWC'ÙA&ÃÓw.³V }îr r7Ø&9žÝ›’ýháåþ&yÅgÞiÉÌ”te·‚× õ«ËŸêzž§?¤y@˜Ü—è@ÀUggXû MÍÊ]Ý«›•©ŸîÞ‘”“Ç¡µ¾>“˜M”86+ÛÚáxÍ«×õù­¼ö/B/RÔŽûS®¬Mézó;¶vu~Hã‹*°IÜ_Lwn ¥¡a'yO!žç¦8Ú“€ŒøŽÖµè–Ær§Ùá~Ÿ}A##• H³Öv¹ÃWõW°º_Ö\±²²†²²ƒ@R{ûÚםרÙí† ‘itJ‡wï>mÞëAMÍÚïþ¬°E'5m#Ý"ø#y(W¾ ›“à—ÁXk)­Ûó¬{ö4;÷ËÅ8|Ê–g )5ÒÕëËW­x ìêƒpÇË—½§NÙ9Èìëï¸Ù”Tѱ«›ÄëŒÛ°‰é“ZKß_dD<v.‘”¶ÛêíýXÐ 2hÙÅ×2WÚWÖKlVæù§Þc㙽Ük‚kRSã…䤯“˜Æ€é§*ÈÉ™v£9àp 8œÆÖ6j2ªpkH}ö^ccç•+í)jº(dÞÛh‡þ*_†³å¬ŸÎ`†šÚÞÆÅ™O4Ó;. ?ñÁXA!À·f‘È+ƒ¾+;l’ä¹¢yLo¯èÁ4^¼ð}ÿ¾žŠ*¨W&!£ʸtµf¤É‰.ÐÂsìØêkÎI2qUÕ™¦$±ÆFr·ùîfq[¾°pÍçt“QH0§äŠGL¬vrnõ“LC(‡gRâ‘Lõdo"¶1ã³#ÎÔ4+Gl„í?è—oUÖU&t_RÿÝûáÃigoçÙ5[ᢣ‹9L¡­®ÎÁÀÀkz¯ðÁƒÀò||,Ë<KŽón=qy!#]Sfsоü‹B¥„°Yì>|Øá‚Ó0779QÑÉ7a&uC3™ÓÕzðìk»v©ÈÉ="&­Sº`l$™‘w"àæ¢ÍxûÝÙÙ¾ãðªTm³|ë¼TÕãÀÆ^`šeÞì‚¥‰ÏÚ·ñ ™“•zÃöH5Pö¸6¯mQ˜>ånqzÌ«;WŸz®?Jf¡/Ö‘o•wõª ÊŦ¡öTœN€ŠÏ%gwØËä#ó±·ëÞ¾Ia¼ë»¼<ºéýÕ¤76ö¹Ÿ31I S{÷e(&ßÒ¾=×?©œu~é0]LÄrçõöö ï$Xi'Éþ¨:·ež¹ÆÄdRºRj*Ó§:pÇIô"6Ò?+kxP¦ËíÕUÖãÇ¥ßÅäåݳ¤8Ȳ„¨×K×]¶À=bÅNÆQÖ݇¶=5iP!>x¦Ø.g$•°ç°äÅ’ÂsnXÍšÕÇxÂ6h(˜îú<ÿô¢Ëu6V*ÃZ¾€ó^’Œänîau¨ƒKSofgŸÆÇwÔùû›Ûúhð¡å™üœ¤  %u£¥Vœ€ž·)j™ˆ~¨6"}yÙ”Øa)ëINN ¶ã½pMaÄÅ…U½§aqºâÆþãï7ìÜ|VGveffà5@íׯwŸ­nÀÍ‘Q}´SîÈ‘™™º™\oîÝs3¿ðºêºž™ÌHý›û÷ß2œ½{÷K’lComg²ÂÆÁaUežûÖË3²‹ìÍ¢z=NO ¤š3KY)$# ºI|D«xìíTàÙp£hV.«w-*~µ´#ÕׇnÓº)œÑ¯ºBÀ~êGŒwTÄÄÞTß:—Óßo«©yŒ•u¯z°…á£ùY;&Y٨ɗéƒP HUg ›tù½û2Üãy]E¥}–ïݨ)î½KÉñ÷_zÒÊ}¯ñh¨²ÄY#˜\€ðÝ’ÕÑþªê¡B´óójÔÔ¯¹ÊÞž€?ŠÈ6Ò?kt±¬TRUõRJ-1€´.‡¢‰³‚¤Ðö¦™wëÚÚ¾®ãÔÊhüXñ…I¾ÕjŽéè¾Î Ú0æddtVVšW>fe]Û•Ûkù°é‰‰nRD²ƒ…ÅÝâb $Ö{Ó鮽IßIx€nð©P6µNcãýÊÛL}_†Ý*nÚÕ~AYÅGÕéN´ŽÛhó—êÛw«¨GGp+ ÷¸ß—¼y ´a~6àº;):{Eî<:Ý™k5ª/e$»Ó’bÑšq¥âAÝèØciiçöÇ!‘‘òñ"¾ÈáœJ+"ÆægÒfi@­ËÕTl¨­Ý«ÖïVBJ}¢ÜÃ;ÀÿÍÓô$½ã·`˽c¼=j‚BTFǨ/o¬ß8Ä  Àè>¯í-k®ˆpc»åÛ×ò,Š ¯+ùgzž“º³K½½çÀžksm(/ÙÓÝèËs¦ZÝ¡Hª Xüzþ]9mm[áúÕ}NJ?ßw¿“ôŠ!`2ºxAWÂ'ßȰf…ÙùÖ¥¦YèqÝŒ©ižù’âæÎ`Ùë‘”Âï,V´þI—fÙ:‘§ÎEÎqáõøÂÂéÕ%)Ïá«„Ÿ–‘ÏÌ©û¢\G>‚ËÑ#-֥Ø,L‘>&&“ ¾ Çœø§TÇŽM Qj(*ò;g­Ež—]ŽtI •:Á#U×ît,ì¹O"ð”j¦Õº(ÇŠë,ïÏ`×Ýô¯¦.Ñ[/¾Mƒ†„ððPP{Z¬¨:94bRfT|QÚæ ´!6„ÜWÈ2hÉËjTR»ÑÉñîd]a¼ªÒÊG£f‚†ˆÅÛV½¬«kú–½ A7ëê ©‘²Ã×tߺqµ¿ñó7«‹¹]ìüeâà ú;‡úxó«r Ïid<'²:YÐ0!áLÆŽ]2[lʃ“dÇûçÍ$D­ˆr¯W=O”Y¹¨`_$è’zôhábä˽ÔFs ·iy¤,+vJ6?™_5ðI%Z`¥o~±âFŠy×éÕð¹IÓ8÷åÙxqê"(¡á¯Çk›sWøR“—û*“_¾TSæ˜=E^”:´å¾?e|B#Òü~†a@T2;‚žµqžý²k¥£¿ºFRR,ßüPçE¶WÏ_‹š°zo ¢‚xýúձ穇ÚâE{g}¯ÏÝgdªª(“F)àðUUÞ4Ê·+jÈ}{N‹~Ñ̑ɱ1Û?t⣎NSZê¬7MAN8ÂKœ>« ™:Zy¼åxõUã«@ÜmÆJIØž¬¯L¡aò*ùšô‡D<º)¸îáÄÎÌü´<׆޹] w_K_ÐmÑ0€¶ôìg©Ç¸âÎÉŒ)*ÎPÏÜéÊkgõ=cBÎŒÄÀŒÆ  C -R:ô¹ö;!Dw´8¬z=æ¾ø»MÓŸ—‘¹<¡ÉOI ÿXÇÙmkýL\/¿eß—¹cÓò~>/múBÐ5‚‚C¯‚Þ9NÙ˜›3¯Ì×"¹/P:ˆï¬rFi‰Šr†œ£;ó¬÷>T,öõQ;?[S¡y *‡ÃoÕ—)€@N77 =˜/È ù€Ýää£ÈÒ:H®v¶ЊêêZ1q°ŸÖóçÐwuv¶¾zx®›êðá»ÎÃ^ ÕûÀ oMojöñ›.DF¾]¬ZAɱ;Ëw*­\-ÝocmkoŸù £;Òq=^%D]˜Ô8’=EÐyF‹½æïßQ/$O}æYLÆ5r‚éWi‡ˆDf§ûú«+J=Óïó;vÒÊÒv£L™œøxø—V^Ï5:!Ň"ŸÇ„ŒéTCˆqµÚ˜eªèèxöWQƒøàl¼C$pm-4 '#Ú½!Ãè@íïsýúi:^rMuõ‰>½<ýjå#G¨/OÝlh=6-¨~ñ’J^šÇÚ éw,¬!ëÓú:æãmÏžE¾|iuþ|΋k+êÃácšš£Çb÷:#ÉïhùÇvwÏÒLLT<Ñ&ï²43¢Úq³úÀ©¸, 5Œog¦¾<ÀžAÜTªØ Ð7iÐqºã¦fÚÚg’˜Ùü+nï?S>ø~ÄX™üÆŽ‘Øùü|kR›‡…Á`å†^}BHþQ6§ Օܺ¹—˜øÌ4¤¶114N‡ŒE×6¿¸C‡ti\ƒ£up䢧(ÉÌÌßhOºú`뱯‘FaÀŠwY·ël_¿­™™§ŒºoÎɲ/º¿[³¼œ»_&+s© ³×b³>bö£ÀK)éb>¿|9õ57б”¢÷]æ?Ež™%¤ND×p9FðH]$/Žþõ)6…j½¿PâUâ„3²#Ÿ=Ç%väAO‰g>zw4ćD˜Ž¸ רÌܼÀ}¥'QFì»Lc®.ÔÔf{ø“'“SÍVTäÎ¦Ä âHâz="Lï=;?ÜÚ>ÔzLA·/‰ ÄÎ$ÀxH„=@ÀÌx×Ò|‚qœ`‡\®ëá´€•oeA‚œDºÎG„›š£ ¢ªêùe0‚MMïØþAœÔa¶9|Õw™Üwõæíú¥/õ(«R¿^QÆî¹ n*%í§u·„2ÏÙçWm¨QróÞž»˜N^ägë•70àFuà\ÎytØ“š×¬•¥ˆadWPÀ8¢srô„Ê^}øðRäÚ€jzž½möx¯®à…vF@;ÜV£*EyA¨h ”„ôð”urZ4RRšè)2R×Ý˧Ӓdc&+!QQéÿCŒpÊ,n5›ó4Ô45Ý‘·¼\äÈ rÔµeéÛ4ü{-v8~ú4wùrÇx)Yà.G€rG$\Y @±§ÀCõei,^’´Ì1½±b'¯¬î˧jlô“‹9HºGmxŸkž;g9ËHäÎ_EqTueÑ»·à‹œ–VG…þŒ×®ÓÜ<]G|ç»òuýýLÛ}ò@þþÑó¸K4w‰%„Ä*w´3’—–r½/«Álþóý3X?Áº¤Èþ,ñ8P"wGùÁ 5¬Á½È3KãÓý ñ±Zyí]]Ô$üô±#Ùê¸ÒgÆ;(A(¦¼ˆíBÞx¯þ°*”e¹Ï¢cAaáµLr u1jܼÇSÐéê„;Sï?e°¾ÔßA!‡äW!ø¢ŽŸˆtšì~“šÚÈ¢4+pætDxŸ£Š„¹¯ø8ear²]¦0f ÄÒÒC¤´ŒŠÌ¬Zù¢œ-m¶fûW4ͺŸÅFG»/kúãúlj(:ÛŸ3•‹Ç&ÏNoh<Ô÷c˜g&eß³ÇeÇ@+ÚçúLV:Î&Ôýú'ÖRKK§õމŸ~•V”Ô"j¬MÞû\Ztë»w@S·É'òÞ>zÈQ—åa>»7Ô{<’?©Ñ[ª²¸RMô=xƒ7?ÕK­_)ÃXꢣF ºŒNµ Wóg»ýt—ˆ Bäp#úU:’Ið¦F¿ Í®ÅÅ‹óv¯6#êÁ$ïöºú0¨“g‘zu&¹-+;(6_#ö ¿¦š–¥QØœE9yÛ$W<.8¸81‘ö"ÔQ+EëužULg„úæ©WiKć÷Rºò ü8™ŸZ¼¾ãg¯çS(i×›™çrÍ&ëQ“ Ø¥K¾/£¯`[€K×Ô3èÒ²Prãæ¤‡Ã«WæƒÔc?óe‚‚܇—öÑ.]5V=Ÿ±š”ñ=xZšÁ ž¥ÏA…Ñv^;ŸâÒI0ßtu½FÛIé {øêÕly¹©††´~?&C}Ê"òò”Üã+~ n8¼8íÒÚZq^¶0ïÒýoO«޲|ØsUø™ë§úó;ÒÄuBLBoùÝ—f7ôï¨\s©æ÷znp66{ûûÕ{V‰‹öòœ>ýeeÁ3L'©a/)í¬A¦¦7Í%Ý6d›Wo‚µŸ¸^GÇZŽã”¬­­öýWG ž3Ê๖;¸¶Ò­_Í®nÝZu= |/&vS½k=11`ôð€DÊÙÙÀ!Òg¾§h:ÍPüÑå‡Wh““gcfìªc•uÙBF†¡RÒ&$ü|¸¿—MßAF­Êj:PèÅÑP Ђ,h@j8Ç$éÑQíòÕÖ{!+]Ô—P¥ÙFâ·ëq“äÝT¤¥i#$¨ ï«;³Ò˜AŒ<â þ·âäŠSVfl{û==)­ÛÀëƒ%/xO™Ÿ¢r\ØxÛìðQtàcÅmì1ù³«™=án©ØdãÞ« Oqs .ê‹9/Û#uW¼÷T$^^2ªŽ;âCCùáºìi**Sð渚¾¿õ=ã7<'wùŠ¿<—caάªêâç7SHIð9}2ñœsÃtå¡«Kl4;—Õ§×!Ú.çzÛ\#d•û`ì•wS¼~!R hvmÅ ‰<ë0±—ãÈÛɇ”—æ:ªoóŸ•pv_uú0Ú¢2?¿›…e5êý1e”̱èèü;õà°sÖ®adG‡ÝÝÒú?}út*í”Ð\ÓéÄÁÁ199 ¼p÷~ëË—YØØ*òˆ‰‰ë£ø)­>8qA0¾ü:ÜM²¥‰ØSâ/N_mAA™_–ë« XÑ9Hp#Ϫ—Óæ¬’JnÙµŠd]Ϩ¹ñŽÀ¸¸l•!σ%öcëuQžò÷­ï‹çJ 盘îý8¯·¨øÎú~Zå°Íì°‚Gôû!!!ÝÔæ½¥0 VWQ™kÓõÔ.óX»FLJFä¼¾ê|áÙû¸rjôC7I6kž¥[O’ŽPP˜wåÕ66fQη ¨¿#ì¾üþÙ]&ù£$ liÏï¿ö‚•-þàq›¢/„“õôõ壸ZVV|¸v Æî¼WÑSä¨eaBYt`èÚ•+444§N% Fò ‘Æ94üûiÏÜ=ã¶x'+%õêUCȽ{H‹Îæîî[¸‘ïbÅÀ•ÕµµÌÐóçÏG ¬T@fgÍ--[[[%ÉÄ%$NmΕaö¾Xârd,6++ËscÙ/4,ŒŸŸ?žÙ/%ù™µ î5:+lçWíñáÊüì ²Éž¢(Ú›rÓ¤'j£ÃÏxÈ9œ»`´k)âÞgÍ#¢F2 '²AFº±ä¬1R·´03‹ØšÙhh˜çº0ùãäG^4Ú:/’Ç„¼µ±¹Ùnc}­½*׬ ‰D¾/qu|~e‡ú›×…ÎŽ¬!îÞLtåß¶½MƒxUWgijZNEDLÌÏÇÇìè hiܦØÏÅ,ç¤(\ö¼á¡UÑ0nª|QØ’ üEôênªRŠBª#”÷µ˜NÂÜ>LNž“›ËBqîܹ½y§xy âC]\\Ú«VWÝ($Èž.J Ô) 3xEæ@ª¡¡1ÚM z”K+o¼¯ÒeÙ}AEh|¤))00P¾*îãi-\Dq¤îEø¢2äý™XûãFqµõˆwšjf÷áù-­.ða||”a›—“—''//þ<…Ú˜ÈïÕÔË Û˜yÃåBÓæ ¼E 4ˆK™ê¸ ¹TÄ(T¾—×Îq–E_й·n\Æõ³ß“&Gõgý­Ö<@ Çc1ý­;÷øMõ–¥«gÆÉÈø$/v„ jå¯ôF.$9ö_pسQM³qh†´ÿk•U¨&?v,9%%%!a`dD:Qñ±òhžE×½{÷$o;tâ€ÂzË‘©)!óvîS§N‘’’Î÷DYð[™šÎ|þ|A÷ÂôŒ³31U—e«\ Σ$UJ’Ã:Æàêpz•öñÊÞÏWö ä_gyÏ2ZG¿°[™Õ¾éÑy ”µ•GNŽÊ¼•ÅE ~Ž'–ãþç÷Û˜qq¥«j9½¼U:ÑS!pLÇÁoƒdiËŠ]xŒÆä,kýoÒy¬ÌpŒŽ~ÿEßS´Dý¥‘²Åœeí>·RûÅ[OÒÞ¿Ms¾Z¿p F!÷Ôh}Ê¢“ÇfàÕÂT/%Eªz¦ÞdwAûüq¸aƾÃÓ‡UPó•§w Â8.fbI׆úÞspñWzz¯ê§\\]¬ÄUp©Äží_¦ŽÍÙ㦎ùmÖ¼wãóRéG8ëɸ?Mÿ ž¾8Ý_½¼¼üúõküʬGº<¾ ža‹ý”¢–®§!  [ssžy‡h¢¢½³ÚÚZ‹ü›s={ l“233 óó ½ Gް€û™ß“¼•rR¾¨R×K{{{`Yæ d]´GŽ ,»Ñǧ¡‰êÊ÷d_…yyyÍÎÎ677?Õ.rX]¼ n—¨ô§äÊ Í~>Ûš¦ª¢R£,_Z®úùù ‚ƒ‚ŽCõ^xÏ0ëµHj)[_fË;Ú³<7áì›ßÿ¾!¥›´x;£©‚ÕæóÒ´}²Sùã}Ÿ©’KK=FþÕ4J\E9صå¹#º‘q¦ûnô·.º}>®¢ERW•6ëÇ'y.ÝTj¶E}žU •ÚVZt¼635¼¼¼ €—ÕEUä¥<~œ¦™ûäáCréÃó«ãïÆÛÞ½û04tò 4†šŠª.F¨ÞC;ÒŠE$帿…ŠšZ™õGÑË—3ËÊÊ ùZƒÝ™6J'ÎÞ¦Õθ$¢££s£¨ˆÿvPŽkwAß$Î&¢hU'­Ñ–õ·uApVjñ&ðøÀ¿{õ¹–åųÄÓA‡Ê[Ù“þEÀÖšš²Î£ÎÓÓït  Ûs½LÜ^YK† BÅ1Ÿ‹oÐ0D¯ã­ãdzàŠÜ4ÝÉ!Ý.Ôî8!ŒW¤E'[/¡®D‡„…%%%ÝÀÍ\Ša¦Ø;/¬«[öð!kêÓ§’ E«D] æ$î£7ýü:sLîúúÖkTVQÉ<D|ðÄÍ”äÎR}‹ºÈ©Ÿ]®®bbå>ûÌÌÌΞ¨éÐÙ!B¶g¯êí‚nþþþ‡ˆ|oÞDÛÞËËËóñ©œ*ÛtW¯ë@Šƒœê€ïp¤’.ªŽZIéÏjº~}wäÙ›qÌEIñ{—ÑgÍ’zZZܺ“AwЉM›Ûá¶/QzøF[º.píÐkü¦Wâ†ðà3`]MC+nؾ}¡¥Lâu±À&QÆê1‡FÖ˦&8“  GUÀ„öùׯÏÁ€J‹=7<ˆDFÇÆŠJü-ºò° Yv?k¨­= rçÓ›° @Þ7_$^Ö´çö¯Xèf lt•Ýyôžûà‡tè„l‚xâù¿=÷mð4Š(4œØU’Éé¡ýò¦æsyñN¿ç»®2ïê(;ÞLÏFv<¼^z˜þ‰?ÉQoŠšŒÁÙ5íHÝ_º–²WG9~Y)Ðìªs¥]ˆÌ^ø8;É»h†ûòì xsssa\ºr6eTÎj+c<¯=¼Åm>>>ï¢ý€êˆ›ßå…Á²…ªa;Á}ÿž´§&‚èNBBB'Eî{anéùGk2Qö£þŸœ.}r¿ô·º‚‹ˑM#'¨¨‚«zýÝî>ðSåë?~QK†Žù‘ÎJÂáÞ #ÓNÞLF††o ¿;LpåYM¥HLÍ3ÌÎg‹Pà8¿<ŸoH¼âlÄ].û$ÍÌÔ´°¨ˆ%P@LÒÒÒî5ª³‡ÆÄl,Në//|‰‰‰™š˜è)´7³´´ÐÚ='ŒŽí+®K‚“‘7HÖöHëåçµæ i&EBSä8U÷ö-ó›¼ÐÙ¦ùrGeµßˆ’ùéS§è”.®dpK„—ž35«l6‹±ë£¾~ýúÞ}û†™AgtåYh©«ß™løœ­x/«sy¼#X”’’’n©›‰±±±‰É!ÔÅõ÷a·j“CwçÎÍdÆ8îfx›ÐYxÀ9E*"Ô¹c‰ºÿZÎårÀÅœœÙš»L½¥îÔ´´ï³°ûNЧÅ&iîaêågø²³(7·tÍ·™oî¦{ÅóÇd_'HX¤…R9Ó%W¶¶þ¢ëeÞo1¥9~<öÞÌÏå>Ϩg§kd Žááäg-ííÇ~N+×^W—î¤7™¢¶víåȾÊU€/m­­…=–·«ãµïHÓÙž8ˈ½F¶N(ª¯¤ÉÍRahÁQK©"àäyCŠ‘~^Š\WÅUøpâÇ ä媳Ê}÷îݧýרXÖ¡¡sFgMǼcò4GsåùF¨é„<ú^úÎ940@à—¸_ˆMÂüý—¡¹ˆcô=ff#vÜBBV™ê:ÅNm DcßÒðï¼JPÿ¥ï”ÁIÑìöæÓ«†÷úÑ—[É&YϨ²}â†q%LFÕ Ý3ÈÄ™)qÖÓt"s(q>cøI¼T8WÜúñ×+¡z˵ }}Aw­âv—gþ˜t^Y1æ3°õwÍͳ^–õ–ÙÉEÔE¡mˆžï±Ë0¬¥Š"¼úôkÊ“'ó“=ü³‘HU55¦ž—­eåäü6ÜVæ9¬†¸eKíRuù<ÒÃŒI¢­Ä4¨)4+2L&ž7·gT”)~ ,jqÓU¼j.1jÙ{h°'½Lu5µ0;­‚+Ø3õ ³³ÊjjFFFS]ùSUÔH ¿¢,@YÄnp7dàØ~Z~‡[ɨYe¶&“¡:/‘ÖÀàÈFhL´íí^†ßA›ÆÄ“R(è°Oˆ*}f¨´sÍ2.¯úH-Zzqò2…í“ —ð—²,s.%†Ù¯œº¯Ç„Чî©9¦~xçu©p“Çúª ì @ò,âô€:YXXô¥ XÅÜaS{z/$äÓà`áŧÓÓ—EojŠÉWR=¿SÀ/=cÌ~ÑÊÚ:!ñA©˜bã½e1d} +LJ²°±´U”OýØ ¶Çy–Ú…6\5ns…õg×Ò” :/­Ó{rD'[Àe6¹¸øâ³òµÄÑCý–s᜽Œ§û½v,Ö“*óXëìíõª£‰×—¦‰©wÜXwW/Ñ)uq(š£:ÐáÍèS‰»T¾¸è¤«Û 2çÁÁÁή.jjê€@)Tjjþî+-ãc9ÃÞôO¨VWL((è°Ì§¦©|2èPnw|o‡÷@ÇÄüà a|<·Г‡GiÓHw©»+HnŒŒ’ìnKÛñÜ `—á°3KCO…ÉCjƒÃ—2gff,ß›ØQ°í÷l.ʽڹ¹ƒž0]òŸ/ì-Þ8qBÖýäÈÁsË5Îè’¢pif Å¢¶„ëUÚ½;÷+@tm˜ŽõõéÝ­ñž\`—8ö¤ÖúÄ qÑF°~þþaBµ†_–Üc¬–Ä^Ø´›#ãÅ®´DPó÷™æ¥Î–Ä“n.ôPÊxÿwÂ|»0͵´T,’.y÷QZBNü©è%¯ÿCÎÿûvªîôiKC+ÜoNSÛÿøùà-þçóÿÀ§öþßx9`l ¯oˆÀ^­Í]ϵ ô†›GJгCèÿûøzÖ;Ž€" y¹¡úpC8jÈ˃áÁbÑz8Š[ ±´77‡h³+|ëp¯_*Ü…4Ä" 0¼H( Ã;ö]ßÍ«ÏÃm‡bÑÿZ¸…‰ö—ÊÆ‚²ô±(Œ à õ¸Ñh$7 ŠBbôaÜzÿZ¶5ÖÆÂÄÖw®Ò/Õ€4äÁB¹±†P VBóB Ñ0$…6Äþk ¸Cß~©h nㆡô†((œ‡‡­‡Ãàh^(ÖþEÛaììMn8ŽBÁ@—ë õaX^ FÆæáÅ¢¹¡ÜÿZøæá¿R4Zä„sá(/x‡E¡ô°z= ‚¥¯‡ü kq41°3þµ²õõ@<ŠƒÕ‡Ña0C(’‡ ‡ca†ßËÞ«ÍÿÏù¯Úÿki`‚±Äíÿokeo£ýÝ`ñìÿB@yþÿˆðÿŸó_ÿ<ÿõ‡Sb~öCNcˆÒ¦BpøöÏ9°ÿœûÏ9°ÿœûÿÞ9°ÿÙóQÿþTÙÿsÎýkI¶Ú¸u²þ¾22·ÒØÿ\ÊÙ­kÿùúò‘¯ÿ#ÿÏúŠ÷´Ö?’ÿÌñ¬†6#‹-ßûá*ˆeØι4ßL¶NüùÔNpŸ¥½ NEЯ¦ü#¯Ûb«.Vˆ2.tᜠ·þ8Àcoge( >ÆÜܦ@^C#€V®ïNò/§Âþ• 0<‚Â~MPéÍÈŠ;,Ñbe „Ú:8•³­ÖbÓº Nh¤.’‡Ã˜.¨ÃÞ‰ÃÈÒ~ÛÃñH ÿYâ_+”O¡<ß Ö6XEõ±¶¶€h 2˜‚¸cÑÕÕP–W—PÔ•Ú^xdAü²,@ðwÿŽ,H<² §³Qx EýšÍYÚY›C®áX#ð¬-à>€ðcÃÐx„BÿºXê›Û`!§Ííø16Ö.PЧñi#;þí‰Ä‹G$Þí‚”ˆª„®œ²¼”ì¶D™âÿ( ”û7ìŠ$¡¿’â[Û„G}‡vv1ÖÖ››~;K~»ŃŒPØoN:œp¿aP<È…o×p‚@‘ÌN,=Ü[ÝÍ÷Û“ pBy~G&8ì™6ßoO&< EüŽLHž?dÚ|¿=™ð)ôw€ŠH¡¨_eØ?yF߯ÊbŒÙLŸqÛXðmÛƒð@*ýkâA rrZm€÷@+Œí¬¾^€8nB½„Ž|èa!Ìz&F-ÊÇ‚»s»ã\(ï¯ èȽíýÊ?YØ!rr8¡HœXp„y+ã†XBôLìlY6Æ}»Ãðà2Œû×$61„Ë·Ù! oÄ Ð<ÆnSý[­ØLp­À@¬­Lpgǃ ¾m¡ñà>ìqccƒqÆõ =­k·iö@~À81¸/pƒ@N£­ŽÞ¤£ÖX}CÀ¡Í±–FvÆœÛOX€ý"a6¤Åkc‹ëBœ`ÆV¶v§à¼ü¶ÀB@F²é…X;c+ƒí‹ˆ'NÀ~‡!Ãð=Œç×Ú­dÅŽk2HX@L ãÐÃË}Õ“­• ÐŽ‰%øJÏÞtîýOÞ´íþÀ`ˆ_‚˜MIÕo¬ÎÞvsôÀÊrk @§1(›âlešionîÀn+!'.-"·=qð`6½ qþBAÛÖ °†ónCžm+‡ªópÿ{½ñ},`{RáÁoèvúÐ;ÃíU„y`Ûp—í׎Qy~Q£r<@ÊÃó[pþ=lý¢x0”ñ¿ç_G´mÙXÃØ`·V¤ls ‰Q‘èßH\Ì·;…ă¨Èí#êW1p–±ùÚ®U ðà)꿉§(Ñðíkɳm­àÁQ4ÏoheSŒß× PE#þ›ZÁŸèß! h<°ˆFýFŽ"+ñ#£r°21ØþHR¢Ñ¿%ؤâ7×hÞßìǸú{‚ñâÁR^îí &ûGêôo †^y¡Ûì{¶ùo †dyaÛ ÉóŸ óþÎl0^4åù¢)ž˜ ÿ­˜ü¿êxb4œ÷ÿ4?À³dÊó»–Añ¬x…ncÅëæ#:È·&ýÍÈßO›÷ý1Æ÷÷Åþ©‹þØõÛ=Q¸üm¯Ë­­Rÿ¸þæœlákk‡ÛÑ×ÐÊÊî§Ý}ÜçÔcgü}ŸSpaóóV‘&¸aqK,Ök°µŸ„ ë`‚uü¾MÛÉooíéúÓÆ· ,¬9ÖbS_/aÍé¿í"mb£k`ˆ‚Áõà†0„¾!Í­ÇE¡à†ú(4FÁ1<_·”ýc[äïÉþe-z±‹¨ÞÏþñG[B/øãÇ[÷|ÛÕö‡mã¿mxÛ;þÇMŠ·þÀÄÂèO¥~ݧüë_Y[ÑC0æv߯ÐsmÚã·”¿É·µ-îw+ø¶_3®*Á½ÿ·ÿ€ çpÀÚàN7ÑEÿîñx΀"y`Ü>ÿõÏùÿœÿðÿöùº8ÿãúóa?:%§ñæYEܦgXKýN…øçTˆN…øçTˆN…øçTˆN…øáTˆ¿¢èÿÙC!lí-,Âánþf5 8ù °†[S—€”·.Øn¦LÀa<ü?ÜŽ÷ǽàšp,à¯ïÇ5úû%¿í5¾yóŸt¶Ý“+ð°§ÿÄq8µê™[é›ý|žà>ß{xs*›‘ ÆÚbklåh q46Ñ7Þ<’=m€á¶'´ÙÜ5øë§oó,í¾^Á÷#+ ’¿V®>Ör3•ÞL„7©ÉßX®®ÖZWWÛVR¬·¹yâf$n`± ú£n’T]Ø·°¿)ú5¿ÞL¬·…}ú½qý{гfàa û18WÄõñVq–VXØ·áoüÉÁSÂYÕ÷ï¿qóÓ <þïÆõ­½ K]t€`‡rÃØ¡hnvÜ“9®ÿQž?‹ðsô–ãÏ9ß/šÿ”ElJˆ»ð“¨úÿ"*ŒÁ΋`‡£yÙqãÞÿ³¬ð¿í®¿“ë»xøAãa‡"Ðì0bS.`6? Álý²þ!¦ýaÿpl½àY«o[Do]ßÚÜÎú«{qnE>ë?xé–'má’Vß|Óñýƒ¥>ˆ§¾ŽÃZ‚€Ïưo÷ÙXÙ[ƒï ÿ§¸ª÷þ©Æ0ÁMN¸Å¨ü‰Ö‚à ×à  †X^¤nˆ‚r#ah ÊcˆAqlî?…êû_Iƒ¿’Ô—~kßV ÑÍãw7šÁ}Ü¢÷ß1–úƸ|§ñ_© 'þ×Fárd[;. ‡°²2³~Æ5ç_DRüY =+;;«­1óT·4‰‹¸Có÷kà—ž•­‰3Äaó–寻ëë,V+›íw˜Ò·?¥ÿIµ?¶f«¶¯$ý¿n3?ÇÔÍÿ9°â7˜ çÅbáú†0¬>@ hÆ…q#Q›óóþcFó u&àùw-ä»5àÌâ ÙüNWUBQIZ^NWIJ^Qyó7;dïÏ߂ߢòJ_¿‡î…¸ÿµùl·ë¶a>ÿë–ô3ÛÚ´¤(×/˜/‹€@q;Z¢õ¹yõà¼pÂEðèa7wóüÏ™þºpòÿ„9¿iOFÖ[tâk†¯û5’lšÆ¿=Ûí¯íBÏÞïš5ÀÚaL€¡lÿ¯¶2º¿1 ñÍ›°qìVæ°Ùb`Ëp­Ŭ¬7Uqsà RK[ˆŠ¹ ŽÐÊ™€`c2ò?Ù0ÐC¬¹4Ñ7„ÀJ®87¿b²À˜0±1™ÛYñ_FÖÂà§%øa`b~b-ÁÐ縫Ü}œ¸«Lü,Hç-!† k©М°%ÇÖ°Ë×$ÎÀäug>ÈVò&Èiiek-lÁù5Çåc·s¿å¦!lãpcÞÛ¹û÷°ÜL¾3áÈ Hk1´s”ŒkP² jgc¢g[’´¹Ú‡ dV&†Î¸ ö–›› Ê2 Ûogwœ•SÈbmA†ûuÌÈrÁ^è"k²Ü:"[ˆ5ñÖhî¯$qB(}"¹¹Û:N“ü¬ øÞòÕ] °oõ|-—Ö0cìprÛ@¬6- wN‹37Öóýï8ÿ®õ4ró8‹­C>¬±['€V:š˜›ãV®€\ÅÐÞœ}sM‡š´²”¼Š2DDN¢&¢¨("§¬Á¿¹ØÈ |‹uÀn•cb’P¬#n ”¥Ýæ!(ç%ŤÀý"¢Ò²ÒÊ8á%¥•å$”” ’òŠÈEei1YEÈÅ xpB”°Ø_ìZÃM üêß›­´ RCÜÁ ›«·ãÆš8à) `í¼ å™[Ym-¬²û¡+ùq‡ÓXZÙ±CmŒ#çVvˆ´¥>';·`,ÍÌA×+áÆa@’&† pIsÀØÙ!¢V¶v¸ÛÏ‹@¸aP(7Î …¨(‰@¶Z¶•Rÿßø˜‰Öç1à†¡±h,’›ŠAÂQ†ÜH4ŠÅbôà¼ÿò˜|3¼üÏÏÊÿ¦*CCÅEaúp GëƒØÄbÐúp=!êkU¿ô8þ/ªøŸÆ–þn$åOÄÿ<Ãÿÿóóÿ­u€ººb›Ï86Ç·7ÏÅÑB[]]ÀBÌuu7‡¯p}þo>ÿ‡"¡P(îù?{‡@pÃ`($ìŸçÿÿ/ß rgì¥ÂÙýi)qE‚· µHvƒ+ Röóà×n=™³â¸ÿ–$Ý%š‘QvŠïq½¨l¿.ô¹í¸á3Ý]!;í"j¾¸+{f¦6+«ôÕ¢²'½ ×JÓ)¿æ)“fñ ÌŽ£çu^zQܳ#†ƒ àÓçüž?<íuåµû¥+˜Á/+öä°çûo¼[rúl]i+³p\(ÒÙVpè o0™è•›à•ì<½·€BOOWw­†áx=øÓïó1žëÇÓK—Y÷ï¾vbú%Ê~TY6НÅô—v!//¯*[L2"µc²¿¿ÿUHÖc³ÌÌÌ]VekË54{ím´Ï8Ï0öõõ Üô)|Fç±øbT׆eùrn¬-M“XAF½¨§ºººÿG†æR³ýËÊÊ5wmnˆh?wW£ê,qut­éyžcÒÔ™}J&4GK[¼ÖävÚf@*:û±F0c ÍNûCÅCA¸¶½­øëß­œ5úÒÒ{k#n<|Aóñé ¿‹m/°5rUî1 fD,Ú~x¾£iÙ5‘/k›¦[F«££óΘÇp*ÛeÎT*ØaÖz¿D^²ª³Ç*ðˢÃAøM§åÚ±’âbn³VvŠ£Gõc ]µ,÷ä­„Zç¤õhÑ«ÆÍ7›É<~üøÅpC<ˆ¼º6åyÃß_éÚ¼ÖÛhjNNΛ·nå8¤…†…9öºÒÒÒ\9¦ªž;™ÿÞe_’\”¨°ð®}'É()o”º¯èµ=Õvú¢ÆN~#÷v6ƒ~—ETh^OQæÞ“ÖýUŠç;ÍÔ³ ön¬ÚúWµDuÙÈdôäË™u­•t²©Æ!ÏwæÊð|vH±è~¦ #¸Vº ë±„…Zv£ý[ôM8–ö¿íi¥Â¾·__u>)ŒvúüƒÁ4s<µÆPÕÍ•*Áÿ:“%7µ‹4Øó´ÇB;Úó€AÄ©¥ë†54hõhºå¹Ž…šÔZÔ²¼Q:;Úê UÒµìÏUúZà|ÌYkkn‚ç]]]Í»âšF2¬?Š:¹ºŠ¥©ê7ÄI$?y 9:8S¿º¯†)FÜØ˜Ùa¢³Å Ø1,@’!Ï¢ëú‹kÄ55{0Œ”””±uÙ Þ°i»CWÒD«‘¾þµððp>û×ñ€ÊãGŽø$Ê„…ϧ<}zýÆ âÒ¥Áˆ•À¢L˜dà ßjÔN??¿‡˜?ϼá"$Ø¿[,j¦5ÏÕ¹³$QÿTÖ“å‘„Äô3.Îξqqq†ùJ)-zu‘¼ôLLgÇÛ3Åœœœî·î {ÊqX3MÕm¶áìÎ+êÅN™ïLsõÀÅòžžžœ‰p„ÙKàCyRçÏ©¸AJ …BÙD;þ¬ýXV[ß>Š>„ˆtH—”t§´€ (]Ò¥tK7R"(% ]ÒÝ "ÝÝÝ gLÖûí¯ÞÿÞûœë¬ëZkÁ|ž9翸ï_ "lºžÞÞ„‚ÒºººþHù¬¼Ò†Ô±¾6˜Qó‡iùù¯=Ï‚ÎF|ŠÆô<äÂÈÕßš˜|úýû5‡óö›ƒNÑ[%dÊ€A³Ç7WgÚ•6<Ö‚®ûóW›fnàþTOžˆmÏ5ê/¯¬„ø?Äüôù3P©3KF¤÷ŽL‘Vµ£¶µgZêêODIªªª&9+ß“„r±²ÊïLi†KQ`=zô¨¥³SzýĽ4òDÁç2&žÝðƒ¹††699kÖ"À–ÙY=ðyîÑÇÄÃ…B%3•¶µ•ªù«¿–/¢jÊgÔÈ……„$íííK§tkeÌʵ ¹‰Û–:÷®VXXðÄ‘•TT†æu›››©ØØÊ<×ÿPb“’Z1ÒñðŒl lÝIJKiÎýÙZÝl$€E%%ÍÌÛÏñ>yòC~{m …àùóçâÈ”ò‰ü”_d3ª¼®*°Äƒ‡²Pa‹Y)Þeuµ½©©©‹]QÔN£´´´<ñB¼xþÏ´»*,o*´E屉ˆPPP6¿¸ì݆·k*)Q&&&¶uÇÐb‰ M¿_Ñз,Np’å ýþ¸ØqC¹ØaE6U9¼[ñ›J›$`Û°XF&¢¥+®NmϾ¾&ïwÖöjúýã¹ÿç¯_?*¥K¸‰ÒÒ>`«?ÆÁ A£££ëñú烌Œ B~»y¯•ªšx˜*£š¯Ë;SS cn³³äâÈ013³ì›ÕͺZ…WÜ>^ èäÒ^ÕÕÕÈ((œ,˜„ì0 ù°]GͱÑÑ–ÞÞ¼~‘ZçL!;}ͳ‡Iž€  1M |üÑEÂ*`-*ußןmjn†¹b>Ýžðî´°UÔØ1QjJÂ\TÌù <èÏŸ?Ÿ00<¢ð܇k¸Ú¤¡¥¥äàÀÆ}úÚŒw´?b§a©ìêk[ÒÄpr¾÷ÀR[n±aëÇ+o%çíq¿ÍM þgÏà`&ý‰!ññ„¤‚Îh |¶6N^"""À´c‰‹!ûEGã$>{ßqê´ÇV—±i%ssÂðxõ†àüüü SoYþ ÙüÒ‚³/0v 3.s/Üܪ7L7þfŒ—[j$ ÔWTàÃ6›.Ïö|æ¬,,,BÖsÇ ¦œµgmû‰¸L €ý¯uaûˆI‡€ÄM¬"ñn||x`x ë]¿Kººòw„“¡b`ÈѦ‰´:#Ëš©äQ§²,v?¬r=0Ò©q|Ôx³ck}nÿ33s1œo¶Éc¯>hLßg¦L×Ј!­£™‘±1lee…¥M@€¸7Ž­3–I’‚®®—V“e9ÍÖ,j¦–[¶!Ðc…ïêéWWÇÇgÕ ^_7£¡£[28"âciié†éêïo`¡ø]vIaM}}è)Þ— eZÖInO€D‚‚ì+==½˜‘•žçA;~ûµâ­Ê-ê~ jéUU„Äs™Êçõ9múÊ¢½¿ßŠ)‘¡¼B—Üdšâ…äããs~uU)°Ûÿa§Á¸ÂòCvØèD°„Åk K|ºÁKûúö¬‘àöö¶epP) 00d¦ÖelÂäêt§ehHåüâ"¤@»òSv6ýAu$2%q£~Qê»$y:|6=æºúúÀ„„„x˯ôLL–v_‡5)ˆ«é2hOøÊu|t߽ˈõiXŸ©­„þ}Se—úgÃÑhwºÚèúüà¬Ý”›ø…Á7ÅF@#ƒ­§*Bȅ݃›šÄ¢>6`œ3`>›óÑøøEZZú`ÞóSºt$¯ë€±1G|^éÌ=âT!ÏTá³bÞ29{Ê6T¶º'‰IIêyÖe‰™=ô زÊuÀC[ÂÈÈPPPð¦ÁÓ­´˜÷ç?Ÿ¯ŸÞià)þÞú¸Ð çWâÃ; ãõ|™ )³¹WÁß9­'¹a.“ñå¢ ý¶IP>ååq­§4ÖtD­ùR(ÅZNücb©rXe;× •2È £ä†çdkU;LV<ƒE[fž› ÄÙV%«­âÕ ö”0¶&|mAØ´.«×äÿþg8F|Hd¤í6všÜ0ý“gD°œ÷sëû9}ѬOÆ¥“ß·×6,“®mô¾q_0E}”Ö‚í÷kcz'mw½aY©@]"GÕgc1ðÖrÿG§ VK0ŠÃ'‹C¥71‘‹ßáo¡*æ6†·|÷ü²i›úÆ×ݸ|š’Ï|¹+J¥Q!Ed¼Êžš×fÚlĽ¦F1;~Ä…v¶Š›ÌÝ8|zÁÑ}ÔêÌëòø¹§§g€)-ž•GjPqr&ÅqÙ›6EUnõļX³é9Õ™Wuë/Ð¥a‹òiCE»9\“lc†ÞœŽ±ÆÉw©äUk>²©ˆˆ4MOìöî~¤£o ÇÚ”·Îç/ÜÅk_=”Kšué-ZÜÓÚD9Ž•zKûüã¢Bq×.ÛÿÕ].ÖZÅõÖÝ'»-ñŽ/Êú_I¥û¦NšÉ’âÉ>bmp¾æ¡V¢k_.Æ/Ñ^š2“"Æûâ]QS“ŒžzDXMšeÐ+ƒaTü„Ì»ìAâeŒ_ú}›è2ðVÞÚ2 ÍÅY(·ü„ÉŒyR’£ÍËÅ1v§ím þ}²OÀMüMO?„Ê ¾Ö YM ³Ï ”Þ4ôêmD°g¤˜Ç1ÙÖèµ[·Ôÿ œ¨© áàL;ÀÙoÞì!–˜=Zž_s¯PQŽU¦âË mÙÕ˜¾Œˆ:­ßàU„˜¸ÑK/õ‹Á^j[›‚øü¢ñTDv»ÛöÛD÷©Å‰Æ™gp|_Ä¿à$zäÙ4¿3;Å{NøŒüÓo—•ÚE„Òì®Wƒâ?ãØè7ÿ”¹ñtMk#“d w={ô뽊ÑbV³ÝÁ»Å—ÃxàH…ÕÎOèšÑŸ~‡¥«¿ˆ|âAê¶D|{1M ¾–ÇMÍwµïVö”:Í»•'µ…9…‡$<熺Î 5Á–2´„×:Wý\($œ ]p¥¿QÑR½ZRNŠ/|Yt'ˆ»Âgþ |Ê®_çí2&Œ¾V/ü(…à W*VD½*!Î jjLݲ¥94ÇÆOˆ·íà€ ^ÄH»c8H¯¥:J‘½t³Aï÷úù;@œß-ݪ‚ïCÊI@‹T‹ß…f—CP±º˜!õó•·þ!)H­õõÓ†¸Q+v¹Éý¿SƒP¢|Ð?†NâG/ö Y´&ïYkímšݹ°ez=#ô’®]Xöà³;¿»aÖoNÕ½Õà Ip¡†!Ï«kÑö¼¦éê÷> ­6•ê. ßXÿ¬ó¸‰Ú1šà1¯‹–ܹOX9|4¼ NçÎkÒ*=·mxÇîÛWèBð;Ë“¾R•yÌÃé™Ó°3o¡oC7§¯k™~øq}g0Ÿÿ(¼7së§d˜]õUõÃí’Ї…©8î*§ “ˆä~BcXNÏ^“×"ï$5tÔjÀ‚µÒ–×Ûä-H\|<^ß) ¾LRsúW®&%ß)1ìTŽDØí´†x‡Ô[R³Üâ{’;>_®€SÄt‰¤¡Ú”ŒRŽ|(!QII!kÖ³ŒPIë8…Ù³|cÂ\|p6ùÓÈ·øO#$u¥÷R_‡dŸðO~g^\UÀËf,ˆD£‚'N\O îRŽŠ~Aê%HbE`gdŒÁh³™0ç̬‹–=Ùûå¢ÅäÂ-9ü¢xê;³Ñ"åË»M^å»JËŒø¼+&ZÂRŸ4%N9‚!b¡·~X)ÅZúù'Œ›ŽêÖæ˜,ª ù üwÙØ¶ÙÚÀ)&kûûfMsl»Ù6]À âêF‘¿øÎx.ò[©Šì;ü„ô+ûËtú¿ëó|“è˜ ÙMƒÓ§S±•ÆÚMµcœ¦o”¯ìÉ=)œÛƒ )ª%¨6•c‘<Ÿ1!ÃŒ}ö°Å{€éFr˜¼W죦¿ŠW¶%¿:/Pð-ðu Ûx=»cÄ.'y ùç·®O5ÕðÆ¨¨S±¤¼Ö®H¤¢ ÜE¿Û?â¸<ÙZXYy.…ðcw­càsp~H7u7ã]þi?·è€^[`ŸRW™rhÁ›bñ]¬šÇÞɾJlŸoÛ­·=ž#¤§.ˆæÏºo±$ ¹á ¡Ášƒ'1k dœk¨„ÿ.Ú.µÌÙŠ§F³›i)±§Óm랪RGÓø5м•Š¡s¹fýÓ[Ï—¸ØöEZ z²Ý;ÁÆœÓÎ Iõ6Ëè L¼jÆ—³Í„üí¨K6Fk¡üz¬Ç±_ëqÜÎ÷ hˆü3^ý>Ë\÷¦°¡¶W*{ªÂºu¾Ùay9à×/vîªù¬Ö–@Ô…ôr­ð¡ø©¹¹=iOèd¢ÙΉ s# {œJ¾~¶qN#Ó’*4¿· ЗxјñH®ÚþÑ‘m­àjj’|@‡Ìº5ê&NN^lÜNqw.J.áQeŸ«ãyd´êµ‡€µÔŽǪ‹‘Qj©0,€´3„ŽÂ‚CCq0êûÎct¸ÜM%(¨ ç…Ö PÀ‚ ÀåéSX‡à]å2m•g.<ê)·Çt†-ˆC·………TBB:È”m9*YõõõÙÙÙ¿V¥ßrŒùÐã¥D ²UD>£óöd“^ÿtl²3öƣ஦Èev¬3—ÛO›•¿¯ÄóFPÒé#(Dg× vëÿ'FBD V:¼8Z{¡¨ø¹=²u’õN?jßû²á .øýZÿ·¯*Êʯ;þè/~øðah]ÐÐ!ØjI;»_àq°äåå—»ctNöØ}v°™W4š“^Í)Ÿ$@ @ö 9¹ð75Ž9oª2sTÓªªÞäkWÊU{3¯bF1yMUB«±.ûûñ'Ÿ›Õ6 •EÆ ÙU&'êEy<ç;ÙW¯8ìæ›¤*qϦٜÿ+•÷þ Ø:¬Æ¸zê Ì =÷½'xÙ̱‰‰ ż§ÓòÊÊ „d¯SÍí‰Ò‡àŠ@ÛÂKMxßh¿C#áEïòRFæ¹²2ŽÈù<‚çÙŒËKYYqÀ«ž¾Ž7‘°&¯Wsݱ%—67nJ0ŸmEeì}ÒhõÀaÔ•±fèé·gïŸÙmsXÍÖ]4œ”——Ãé(7çZå5õ_¹ú¯´v¨<¹0æÛ7s÷¤äd½µsUÆØòÈHLnbô,,ñ?"šö'úÑÈÄs#A½ÞãÌè|!»õ„Gýcx8:ÕçÏŸ}ÿ~ ÖÅxºÊžßuÿItt´€Ú¡™µÜ(v9RŒôæ—¥'weøWú=-¯:Bh±L ˜™”sä³$¬¬˜a?êêHaó««Dokà[ŽæsìpùÜzB1Ò‡¤bÏŸÃáàâ,†²ñ¾¹ #âúeÐ ÿöÝ;J&&TTVIGGÇ)Ì*„o¢>"œœœv -êŽÿ¾ '×wtäþʦÁ¤Qø„…=**j¼Ìfø=+«¸5à¸Cfºr±ØØØ~,Úó Ae3Zp„üD®ÐóÜ?;«¼ö«üP˜O7×ÛX•PÒþgØô¥ä0ã¡Ó7Üò™cÙ¨ó»ÂO"®RmruO¼/¥ý² l+Œ·kŽ3ÂÏ| † 9ߨ{PEè‚Ê(ýà£äY@÷âæòäT›œ‹Ï >Ö žÝžºn‡{»Ú%cBÞ·âº$óÔi³•äåMì”\V¨ìAjãÁ[Aš4Ö òuàÄ>q«í{gô_­öµJSxѨ¨’i_ÆUR¢‰íK*Œ;°£`;iü‹¼êx Q:‰ò)÷Ø/ŸXÒ_To ñ~ήg¶«Ó «Ê-Þ#3saž¢àÙŒiJ¥‡å(AÆ>R/ž‡O§bawGÌŒ³<¢þìUöxM¤»³@1" Ó³wé6A}¼#ë÷ŽŽdzº0;@n¬¿”ìO¶‚üR¾n-Šþ¬“3ñª Æ'›~V”Èn¸‹ˆÞYýĶewkû ë²‚p÷f‡ãØ¥ûñœL³»äðŽ}.9Õ\îÂÕ/&›[U?’¬ÞoüÎÆjå//‡xt•Q ¤…ª+D/…W1ØMi¨8 _ÛÖäOâ«n}B4Q=Þ$•Ñtî‚°pGa°X0q“%U¬9 xÖ `„eŒÀà`|•Þ²>>ç Íï}¾b]?½ð&ð“iŠÞ pÉ€[L8×\S¸HŒúQmª ¦à]þ‘öÃ’.J·/ü‹Câ-»Â.;¸’Ø©·O3’àî :þ̹I”a™ŠôKOîj#{N"´®º¶Ö§ÔOS*S;ÈYØÖ?Šò‘Gï  ½gÀl%&€±-(I´ìum©`ÖÀÐr1pTljAÜÑqÚêÛEî$}ÖuSLš%Rç— :ó­÷}Ë(ܾ۟Œ ²àl%°éZ2©ÑX8+!ó!ÉU—^uAÏzÉpn´›/P®-Ød¨¥íòIz‘HöÜ…/„SõŸ|øY­p¥&ˆê^Ì)º¢/ã3¦$È>L˜ª(ë).#¨„éòÑ¿[AZ·Üÿȇ©©0;´ê×ÑS4©êVó¯îU\k®4TiHöÑviÎüD½« y¥?ý± Iþ åóºÞ/§Š(Á2yiÂ% ,UØð<¥ìöQ±•CM_GŽô³}®#Ðgâq?6„šÂ’½_!£éã F,9%X˜Îº (x~®ÃÓâ½ÇâòFRr=Fšê™jìè¢Ñ4‹NXíA>’×wì)éÓÈÆM+íüW2ä=¶ÃOöÍ1nôÐù|«%¨©6#ÀtËè›Kv«‘eE™Km²?ñT¥>K&<­ãÓñ´‚:<>QT˜jÊÓ¹*§…~¡pHJùb¤¨Ò"|Ž T•$ZT°`c;!$æe#äÕeH_/s€ê˜ŒC„¤d›¸”³3™ñõ¸ ؇†¤”@6&ú؃5dHnYåãwѹNëLèÀŒ$Ͼ¢¢º|P[òûøh@”š–öEÅ%ú…söe3Ùåk:z!‹N&‚èôfF§¡$¥5ÛªF‡ Æ•1=±‚Y,¤¦jÅKUí ò÷ÿDdOOOÕDŸ=#º¸¸PgHðæ0jC>ÞƒD¹F@tÎ1à}°Šr!ܯ8ëDŽÌ:pšåÍ1̲óÍË}h£¶¦•á)M¢¶ÅCR霚VaìØyw”r×öS&&_¹B6CÜÚº@­'SŠñCHxÚËɉÔZî-«³/€[Fg»3A‡¶Ú+Mðùq°Êu¹] KËbË1Ö× ¼}NŽ.C™rþÍIL’ª{n4ÀS•rüŸF+ý¯ì'™wY6 ú-)¿]@žÖ},C:[cEAqqÜÄ[ý |èT›Ù€­½|ÊÃÃC(ìÎ æÆ»›=;{ûæÊ9ïЉRÓÖööÀ­:gt5{´¿ƒå¿)nÉuj<ÕæwÚ| Ÿ¯™8ΜMm|ø’&øYƒ®Ï”ççK‘r{è̃µ¯²7’Ǫ«¯'Ñ­4é#ÎÕÕÑ™ÎÀ•öµöàuÖÆí^þL¾ú¿M²½¾y➯UŽâíímçâÒ9]ý>uhãõ ©€#2ðôüîÇf1N¼YÅ»]™›¶Ùa1žÐÐ ªÁíEÞÜÜ Û¥¡w©-p ÃgÕA¶µµ7aÖ*CVSS3éœÂ.¶æž%ùö+ØÇOà_­|!666%UÕámg‹r­ß߸¤———ƒÉgÒ¾ýG-€ 32&&æÌh¢ä@ÍŸ"E._°B Ø€ŸV·š(yQU[›P¡[j/äVÒÕߟ““A1ª§O;Tû¹„¨%‘(uú7v1¸áè4Êw\S}¹÷@ŒùÍ/±/±±!˜¢×û —{'“–E!ÅÆPNâdL·ç¢¼WÕ£E¶c…º,“ßWJ­¯•«™o®d$Ã'û–£º^½u8ÜßÇjooï³qÙøK›:b8hö¸3’¢qµª¬L™RRNNο×åÁÿÀê9‰ç—nåßá’‘éšzI%äÝéÁ$ý;•|¦|}}ŠSD}ô<¹#LŒ–®×ßä#ˆ‘Ns.M8VèíŸÏ_¾zÕš­”¾Y—ý!NÏýQ&ÅǘÜ2-–Ì×ß>üý«ŒFÊ¿ßà £« 7íæí ñßsY‹s‘•˜èè<õs:I.gæ!«›Ecc•ÍKÙl||P:/sé ]VûIãð€Ò„$&ЭèîÿH,5X¹ü™XZñ´7ÌÐVöñB tË¢£  °õÛWbtOOOfœRqÞï6$’4lÀŸrjÖ¹r°êÖÌÝžVò{_ó+«¨tØÎןͶn5ÚLþú…%›#„øÌ÷ððŒ€Œ,|¥7n©'– ¬‘ÄÛ·4¼Ö“Ãó_sKËO*Ûþ-XNèÅúøn [ó!p߯''©€ÍÆ/ÐHÍ·gëIbžÊqZW¶"ýþ΃ X 2š¤ªêãŽHйÅKõBG>>>aäÂÄéRáâÞ7¿¼o.‘*ËU“ iÕ ´)%>üŽç ä2AûˆAö)–I£¢ZçY±õ›Lk¬(§—i<|ÙXNÀ˜!ÀÀí´W_vý„¾P·öõ]gRçâ’à§µXiÈŽq’€Ge¯´ÕO¸ˆ¥É‘¥ ¨x“.*jjmžw°±•¤;™þ ©ð>ýø ™ó@d€öÔÜ9wžxb|ö•à[ZÆhOû"»•„+K›©±1”¥]€ñŠpõ–ðr³©áº±‡L6²ßAbÃ,û¸$M./ÖR¢¢£©\KòÎkøŽ ’ IÔQ‚²l$6áoxyyîôDZ­GA^^ÊÛ»A­§â±RØDÐíçÇð…¨>_Õ‰8Œ!,ïB(©«+ÞÖ"jxuIßFLÖ€Y=ßí§øÌÙ­$áÊÞ˜UÙå1 ‡]МðN!$›`Zìòבað-ôvÔ¤ú7¬dxÜ«[Óx¡2ª=ß3òm÷Ø:8l¥ ¨2F«k|ðxÒ ú;›Ç£@"¢ô´ þ†Óšr8ZQ^Btl'G¡²_ºÓ®]öÎãˆ9™³œŠ¤ømuö¾ Ó¢>ëtÐÕC2ÞIŒÌø(c¢îð¥d80ö’,«x‹°i®õé7¨„ˆ·åëœëXô †©¤ü›Š]J('¦ôX{Àž #‚6JNø¥4šTò2XðìùÓ»g$Y•«p¤ŸÆtÃjK¶F°>êÏâJù-öÖ=ð &î„^ã7×8’õD*¬ß;1¨µxìµnêðjÜÈâñ¨7÷œ”9o‘ŽÒ@4J¡'Èΰ°ð"©ùC?ñíÈnqk5\’h+åÙF8‰òâf¦¶ò)U|Dalž°njìòxQ—¼}ÂæÒ-;¯ðþàT¼zý¶¡å5ÙßFf«Ãö=š´v7š4|zÚª³rKÇ$8?ƒK ̦öΊ¤ôôUR5÷S™fì1Éa~‘©ïÁZí–¿¨eKó ¯Ïê#£å]œ"á0I¶"ÉHßF|&v8¹Âyœ8Ä[þ¶Z~=põÒy³ï…ÒÑ4üy;ód»h娻p£nRÜåºá£0í5ýÕU¥ñÙje´k‡«ôbõç¦UOÓ>ô€÷¢Ahù@5‚×uŸ–In'äÓâ6™Ö áJWw…j‰ŸHB[!ŸM…•”~HšÐÊ[F]8QÒ<ª©õð7ÚVth[ …ëí„Þ*T·Îîôç´µa`þ^¢˜›ç"Ï<ËY²ß,ø bËGˆŸ#ˆ²¯/ýžþ÷ŸTöRœ yÞ>qɀܲլ¬hÑô?žÎÍþRb°ÛñüF•þ\ÜÜ7€.°ØÀgòøAÔf\áŒð`z +o•¥IÐR²:Úu+ÝékZÂd]‘{Ȱ¨€Ðv-Ч -ÌΑÓñ®ô¡ð,9×`$S’)H®BoOÇ@#TR†YæÆ“=Hü}Îï­’šV(X×û`ɾEº”âF©‹,¹#DñIs~Hä’¹t€¶L'…–ä[ž×¤‚à¶üÇŠ-ƒ*´P€?ä¥xp…¬¤¤îW%¶,Ù~–))xd$‡}]õžPmf>f [BóŸ†í?~Zð]˜–W9‹Cä)ÙÚg•õ°n[ Âgò‘ÁÙ¥FàÑwV£2è”׿p—”,hš0„íû_\†„÷J*Ít]/á¼2VD}d¢íÖÿPž_]-­¦ó{ž³·´¶.ÌÏï Ûž®Æ…±;,¿´š®Â†)ªª"ŠûÅé{Á Ø çül.:°£ÞARîŒ'¢në·eû,øÅ&»%EØüqR{¯^¥ Ùh¡n(p•†«¿¿!£¢J¨«ã«é…7 “”Dl¸»õ€5 ¦K/,.~hk“„5U¿_STS ì¤ð™^,þ[¼[³ðÿuw µÿE·XF› gwÚÇ(ln¿¦,ÙïL–Ç‹x $&%Ùƒwª;›õØ?8x.&û 7-CIú ¾^/’Z:Âàöúâ|#+EQYº] FD„ç,¯’t;´Z3?Ì…FÇ0(¦¡—Éa—xxó׺ezÂÍ=|¬•7bÔó…‚¾"·çÆCW†††vâ²²(ÑÑÑìö‹’” BBB *¥ö%*ª^Chwä ©RØGQOHÝffQ¸÷QŠûc…c7ãÖÞ$>ÃåàààwÞ&äµµr×OUü?Uƒ@<óaÖAÕfòe„½Ä‡CÐ ž9ãßäÔæÉc||ñUñ¬¡…p¾YìK\„ȱ±±]o/Ö ŠÃlUF¡ƒ6Üó>[o„Ê-´…y©,„=¡Ú”bD9­…i¸yÓÉzü\©IŸ¸™=<6^àÁR',Ù}“AUMÍp{ ¥t©ÔÌÌd!p2ÈÍ"ÔTi6T‚Õï´ˆ¹;òBL.IA\l'j<¤câí¶6`¤Ã5þ|Œøç^Éüaœ8(ö[FÓQXØJ¸¸w>‹»S [²|›}=Äò2ZuMŸj“úSÐÁ¾‘þ´lžä¨UµDªs™Q;JµÄ“4üy_"ªMÅè¹ß'Æñ§íôdçgÖOepÎñ$‡7ìšÐ°˜1–¼2°sî´Ÿ¸Ðû¶aR ‘b`` ##7õ' ÊmmºˆÎéò‡WX“ a’CµRÐSR¦6ß8þد.ÂHeñr[©@ÿÆfùï4áÊ.x‚†ÞžÀk40I…þÉt€°â¯_ì…žlއ„˜;§hW.&¹Ì6oqø._»²p°pSôîbà¥œÜ N cv·×nu7§SÖŸ¾3‡ÎŒJ/€¯õÈÌ€b:B§YÞàF´ÓòEmqƒñ8¢Èäp§¬tÂÂdÃqtÀ•ŽÝb˜^eìýÍzm/`4m£Úëé‘ßGiéè–¥)±Òú½ýüüÎ7óŠØßvaÁÄ,,Ÿ*$£…K mƇt¥-Æ:H‹Iª¦ˆÓ.¤¾h¨ú¦eoºÌóp©BÓð#†¬àƒéëIÕõ¼ö/ *ŠZZŸüòÖÌÔË,—[Ža‘“ë™z½yóÆÿjeu•Šž¾«LÈ  8Pƒ U 3 uJAÃ{.BeâBÒ›¨¦uÂÒ[Mžúõÿ7%ñœ»œœÔ‚eÇìŸìÍQ˜$”êþï˜öÒP&xâ’xHö˜qýÈ_VŸØ"N+»î(ÐÖÑëéí…ƒÙØØœ)S ¸æÈÑÚ@çöD©ý|ÜãÇŸpp`³5œù¯ Äs  â3‹3VRRJJKW>³¡*!…@¤nì7t“Šêlt^ƒÑ|MdtôOÒÒÒØ½¯]aM5N[û`aƺ^ndÉ]ýN$xõ•¹9šö–/@îÆ½_Yп6ZŒ0¢q"w„5Çs³;®+æëT—ôÙCYy ¾JßuÃg«ƒMïð?èaòw“a`;Ù$®Egç1ýÎøùùuöI(ÊYß•Ìx½éRÿ£l!%x2’ ;Y¢=wYÓ x“§gÀè[ËI&ù‹ÓRÞÕáwŽé5rQ;=;¡°ʉ üÑ&·TÃôC>ŸÜ¦ ZàiÐ÷7qœ°”† …ÌZÀÛ þq·íGq ®´k—ÜÒÒªô›*&wb¤^½×P E½«¾Q÷#Lpd¤´¢"Ö°O…í\’–±1‚äääñ§mÑ9|:Õñ¬­ä]o€z…×qì T.V¦U0^ò.ÔÎŅϺH‡ÛáÛ¨¤$@ÂÚÁ=_¼~–“è‘ó¿rzXâIGDD ¾¹:ƒ¨¯ýþüsl£ÉÆâ-凨š}6€j¤ÉgULŸË˜¯sõàÝhéW·nÓȈ››3Κ:¶ehié1w8SÕÍ’>s@o ó^ëw&ÑgšGgÞ?³²ZÁâDDDðÛ/"J…? DD †Œ Pfë„ÄÄ0i ¯ÇâÁRgµ$yÏÀ Œ´1­Døgg|qF Ó}8ò©ZbãÏq¬ýlYumm+ì¶ÖÌÆ›Û¼R[RZšªž·Ugjk;gÐ’ Þù]Ïã/_¿Í7ùežéÖ~ÜßߘúÈS«/¡U‚­‰˜rš|οK€¤[™TúÏÉ@ßYM~Ré~XðâÈ_¾|™ÿý ]¾”ëýêë¶¶¶ùñbãñ:·Ò›Û›«% „NrrrÖÎËÞjS• Az†o°KøŦÂc©ám²¶ ¶ŒÊ Ú{Â"":WzíWzð~fdPrrâ$ðZs°±°ðÔ³þ¯4Ó¿WõÒ«òŸT%ä÷wû¼Ji…ÇVA¥Ýá² !{SöŒ[f¹é/jƒæêJG{ÝaPÂüÖ–%ñ£úÇ—#Ò1ꎦ…Êó!Áõ¼pbÓ®*mü¯[cÄSRYHŸ<ô|3Wú7Ã¥ƒúÕUÙ+/IÀ0$%¿ÚÙV–ÓÈðÛÍÃÄÅÅÿ”š*@.))Ú|¿Pàÿ!0eÑ è]ƒŽÓ´Q `É §KÃ9*oêÝy¾²h#Áê@„-¯­%ÔÜ]¯‰Róðàuww¿”•m¹8Z;8²­¬¾fRc&\ Zü³Z¼ÛncIµ‰cÁˆöR/)|ÿîࣴÁÝë3géWÑÛÛVç3| F76[MMbž'#„œo‘}Ó#è’§Wáx¾{½xy{Äó[ž)ðï>a%‚Éjà–Z°ºìb§`Ûfqœô¿`&uÓ³r_=X•‘”m…ž l¶ÑA¼)†üÜP#ì²0‡Ó¸ùÍ/˜¦¦fWOOKK *6Ù}l=Bâº=Ô¯<•Ü^E– W.c´3ç©´|¦”`7ùMFÄ…$„ÑÞËt(‡RÙ¯ì7­Cš·|³vËf̱®tß«,¾-X–+xog×tµ×y}í vc‰Íçu{g§€Ä •›wëÏ1·D4ÍŸT‰ý³³N¢)ep—–°?F,× ß™ª4Àxÿä$0+‹®ÂfÆ‚ñìšÊ~gQ* RȪ;|ì;ø^ozûØeq‰! ¸>®2›|ÝZüÖè°ëó¥H~Ÿ[!=Ÿ' ³ÝÜÜ€¤´%Ø6„hè¹µ—Í_bããÌÏgÎ׫'ÎzÇå—ä03dìX7&”³ï-P¹Ð'i© aððô}¦‘؆§ †æQFF†“O¬ŠÏ…MõÆÆT³‘žN-ŸÈï@&€VRð¤nò.rpp~ó_µÄ:§§—×½…ê¿úé÷Ì•?þLÕÖÔŒ2dÝêjà«d¾~L+°f©éO¨^Vòª øÏõšBU¬ºy1'I‚svµùÇMºÀÕïÿ-}^­ö+ê„‚Èâ(CNÙU9A*{£´6,†æQPQSUS‡6°HHPaôll¶ï«%ßÝ{ÝÏÿ0ÁæÁ¡ËîôòL¢É_†&}ßÿüQDDB¢bdDYꌬk“|ûˆ”]Br8¦á”+·×òà·Çó>Û×’ÃPGIC9^óÑ–tuë“4V( á„[yü2>Éï¯åˆCOùˆÔ½¼¦ÁþÓ©XJP0§æÁCZ‹¼°ó¶g}¶Ó2xæŽìĈu®+QÁùÁ÷_-ÞÒõÎËnç%ƒƒü—n²µ/ï4$VÌô«%(ÁL‚³µ/3├ë‰c‘Ä ©Áeí#êD©e{çcΦɇBWy¸½5§ø²¢J½”'^-Qü©ÿ3?|Ó'<¦e ¿`-(+›=õìÀƒû*”ý&¯ù>­EJ•ÖýåêÑ•-Ïß÷)«½d²A428§;SAÏý‘RªÈø¹šZ¬ùÌÿÿkz‚³o riÓÙ?‚y“C!î³ Ù(àZíúó@ñ¤±ÎX«ò?Õ µv¯!ôøØ‘TÔ›E~¯KîÛý QƒŽ0¢ó5Ñ;óš¢ý»KR2²€(ç44Œßr}ÛC©°ûcVVÖ—¯_#Â]0€=v½>èœZz’æQ<õ=8xxõµþ¤V Ôp°,ù¤`2~ š=‘Á°ƒã¿|‰-°ê0¨ÒJ┚@ÍVà{Û‚±©Ù}: Ø¶þäkND­¾hxìA¤Ï5B¤ð)!X…ý¦¢&`7·F Zûø:)¨98¢ÀNLêÿ£_ÙK00xëɹͰ¼¿QpAÜW@PÄ¢¼¦¿áôôÔØ¥Ò‘PaSƒ??žŸ_nÙŸnO mY䇲ßÜÝýˆò)<}÷®0ddd § x„ËlŸ-9,¾]ñ”j€eBK–±¨/ÿ*;ÁÖx¨D6ƒ³þô!°0\&¿›’…=~¹ìé¡Qˆ" ¡™ý*ìèùU\ü\Rçó·o!ûûv­ˆI.©¬Œ³ïÕv™Åb`5õIy‹Ñ»þQ ¡ªìàõÜ7hˆç«ÒýÿSmÈøNÔÅ=ãp¨ròEtÅø5ÍUâsë&tô› Úo(‡aùæõ| X2å“>ìøúgÆ`ÍwÆ¥œ¬dq55¼Ž2T!Åc@v\G¢^JAfãØ¶…þ ƒÀœŠiÿ5æ7}‚…êzeò”[qI¹y!€a`ŠžÕ(µi¬i×Rï–½1¬ÁÐKýZ»ùRrø1„q`Ó—ÏÍ‹šºÏV02ÚQ¸˜ˆ¶ÍŠzY—goAQ D1(Šñ ¡Êáá…i¹CqÅw„ž#‹yóf¦H9·÷P¥ã2ØxrƒÉwL´ñiiËáI˜ƒ´qòQ¬¯ï‹"¡Š8 ¥*ðš®nnÏÓ»±±¿A}§ƒÂäš“Û5ÌN zÈ>M\KÕ¶äÄå^  Æã1©ÇëݧOÿG©³y›R+oåúÿúùW>ŒØºÉÍ?ù=8»aáh8»€s1«qî‹àùçÿÎlÔ{œAl@˜o’  ??!žËS®Æ)k¯3¥`€¸ n"B63Î-«|ÍÞ· b ®{uGÊÊʿ엤 ½XK餎ú€)r»;Ñ¿{ ½ß/¸gµ•Öº°‘»¯SœŠx{¨•²°!dTUS¹ObÅÆÆµÈÓ(ê ±­ó#á³ù¬@¦5>'ÙûØÉŽÎ·ÄáHâÈÈ”P̋˴_,šF§Ñ› j¡Jö<”aÖ®x½«ÒI¬RÐã‹Ã•*‡”¿ÿb…È%ð6›qC]‡o~À9ïN‡@ú¬ïsS>½€£DÈÍ€l¨ïÁ¡h¨ÇJO,„G W‹aúã­1L€Ô;®´ÛeÉS ONN~¾ßŠ 5k­Ô˜è: è7 § ®=ãr‹ídGl¥” ktÕ­”i»þgàÙ¾Qï•á Ò鈵ËÕO§Â`@D)h\µv¿IX5òùö#€j òЕy×zÈP`?ØužÝ:+NqËK’QQqÑ«âßCíã{qSµS„«Á½cµ¼bÔ·KÑ §*.ï7)]ž•®†1’S·Kž¦B©…ìR¬G­}¨xUŠ Ø­±•'ÙÌÃGJwVBÜß@ì'¼UÏ ëX¥¯„(\Ž.FVc¥©,| @ e&†iÑcU]¤øõR÷f{¿ë¯È/eQl'Û{òŽ>³ÎÑD--ø˜*íôñ€¨6ø`3W€n‡ä°ð½›ø¿él†~v‰3Ún­×Ûµ m«fÓŠµ·±ã‹rõ¼Ö7L¿îhÑm2Ô´ 0¨ÒV!óX»ëœ6زòW¡˜ý¥EÖ®‘ûùÊøÙçDíèàewÁC\1øày‡F¥½àŒ€*£¡1SsßÜ,ã î?ˆxcŠyL¼FÁ·ª•qÝ‚FæŽøL,u¼~4&$¾¯¢|¥¿ž/vl8èêX,‚/ ÂìÀ¼ ´€QNˆ𲄡Šo4ž‡¨?ØU:;©p¢¶ïßd\õ[ou²¸œ_KñX”!A‘Ë † ÀhóìO+Ú‡Ùš'¦FÞÍÊ=W† €Ôw™ö%óx‘8@õÙiËk®H\àƒší¥`A³q«±ÛÓ¤aøý:࡟J‚XR?–-b§ ±°Ë‰Àû¤9Û®Ém'Å„l–hÈÄE#Â]ó²¨;OŽù’ÇÚ™h{‡žñ `a;ièéé9‰%‘Þø‡CYó>ÁÈË)/Ôö¸¾½†B`­J¥1¹iŠþ£``é’£W”)¡&«¥àªò÷ñèÛz y3ÿ…^áÄÕc€ë6L_Njsp–pÿ·¸þ™“yÂT;‹ )¿ïçÏXÇÛ¸PDÁÐÖÉ›r ¼ëëëùÝÝÀDų† ÷fë[xaoÏ3CêÅ‹ÿ%Ø’ñµæ¾@}GRÉ|ðâtPyùZÑdT¤HÃÖ[92IK­øO¸d©òìêl¯3G%ë—û‰°6¿oÿj±-Äõ°›®øm7`â€?LLL´L&æí-ry¶7—Y•}µ¸ô($xr¢ù†¢CJŒ z@Kæ“b·O¿T÷ãõåÒ¼ó§­WÑ4Ó7²±4rrrÝìòÚ"Ö²Éýýî utt´LÿßÀ©°04`Ò¡’°†ŸÊ}Ç“FIþœ]/\7N€÷À}ºæÍÄvE Qì>нUPv×_q ÏÆŒ„¢"6˜X†òˆ›è=h"ަyM¡’‰‰ ,ñ¦™2¶º}xV½º`}Ïb§‡bÃÈ÷«ú{dƒ«Ñ Vï³2¼ìÜB9ídJÏL'SUщ¼‚z.9yyùÐ%zâÛÜ ‘ÆŠô;!ÌE—âY"¯ÁE iwè+yyT8u±nDY{L*•¬¼'•…„Þ}Þ>p® mįœÊ]Ôz¬?ª¹Ào÷þ}kVŠ7Jz(å蛟¿××͘õH5 užkiSQSÜMÔžUeç]ûÌ ØÙ#I²¡ña/gšXh~­(÷r)ï+å-¶Ýô¦ÈÉy[­ÇÉg}£öýç® A%Ë«W*ÝÓèlô© ³¿ÃIK~ &"4ˆÖ(ªcBÄÚ CH!r¦À$?ü6p‘xtöÞíèÙÚûþË“-Cnb€p¡(˜v¥Í òô4v¶zñ`o6«)^šª¤Úzªb¦– ë©eŒÀË€6ÍÔ8Y;c’ Ãã=+§ïþ›Ê­´ˆÊC_-aÝÞÇä?°Ýˆ.˶†QÉ$³jLžPqПÙ?=í˜,·<7ŽÔ^-.(Ž.//w½X‰ƒH‚XÖÐBeã ˬǞ°'ÝóõôH»Å¶GUUUó€7 ˆFBs3€þ¸nædíïTÎ-NW¿Ÿ—ã~4õM'ªçiäµ+å3n¯›5ÞËiš_®é”˜r‹Ÿ‹EÃCýõ`wn9Õ/ã“p®V‚'Kê—|´€YšàòX ê0î½û)¡á~d‘Ö¢ ÿÄÀªDà'–oêì5&iäïפ!“Í•ÈØØ'Œâ8ì„ábyÄ¢mäßZ±+jg|žÇ}ÏGGûô©i%.îq1–"”­Q*¢bð #H5SàñÖI ºVÑz)ïËþF¤¿ûÑ E§zrr¸ÂrÓׯтœ?K@ÁÉú¿?°m‚/ØqƼó[+ áÌ<>Xû‹Ýš³4œï(®|¤Ät¥Ú¦´u t0™– Eœ1RëêH¡l“«+ÿôô4”¤°š©QÛýÅl‘'è0×à•y#×{Ê{êpëçâ1ßʹЬ–jwöÞü(Aù‰‰ ¹7ie˜ck`Qhñ æÚÁL¢ÕrÊp…¦íu#u D4»vGÆÆŒ[U­%{ìO˜¦4·¶"Ìy‘eÊ% abbÖ’“|MI™[ä€lAÓb{¨‡@¢úÅåeØMíÍŠ„£8ß_AuËqz]ÓºpI Óå§ FcYd|]âqúe|è@o h›DùyWŠ2ðnqÌ2ˆjÙ{ 9ô[—ó›'eZçóþ˜ˆ0Ÿ[ÏÔ‹v½z¨~þõ;-Úd×ÅGQ L‡†ÚÉ\¦) 4Î5Îj1”­ Pø M5µw§éC¿O+Ok3NÚßg;<:jï¤ða†G@ħ¡£ õCxˆR¯Ç€ç0d½ÅŒ[K¨Ðmj4±±|ÀØ%±‘Gàè2¯F®ì™@¦ÒÑ‘Ùå¥yP¹= ?cýÀïqš_uÔ/Ø~¸Ò«m^°¶=ˆÿCLÞz$çIZà±_a§ÉOBPЪ´;½²²êx¯œD%€’RéJ?33+Ε‹²³±Ä‘•ôõç6Ó»º^F¥¤ØNŠØÍû‡…qÄ$'Û8%ôù÷ýófþ>´}D'‘”“ g'OËÍ•E¦””ðWÌ1º»½G¦$w[Æ.¶aT!³&«³¶ìŸ›\+ìŸ#®ð¾)Ϻpãöòr¤uz¿f~Õ‚K%$T7Â;éÞ›—X[[Ëï}]…%,z{¹¸§¿Ûô »Ü‚Ä6ž’ª–H@¢¨ùRg$ŸÇ5ø,”цþUµµy#÷sZ^7š– ‡€ƒéèèhÍØ|IH@»´ó‹l†¹Ž¶£cÙÆÁ餕P&5syÊ—/N[£”ÜÜ—:Â[?á1±»›ñ?{¶pÐI”IÐnʺ’’¡;µº`I`RÄàæhœlmÙ…—ÏË‹{dpŠ“óïñÕþBkT\ܘ‰µ°>c, ii¸Üd‚¢§ÛèÆO6Q"€'®=«»Á°m¼qe›cÑ®øQXˆ±»» óePÉ4ë8ýÝÚ=çšz__ØÛwïž#ÃQ"öôöÚo3¨,þå–)QK­ÐWU €ˆæX¡nëv§MÕ!{ŸóV (ýe5U~6ëÁöáÇ×WÌdcƒG{6•sj}1ë?&¼šâ–»ÍúöÍüR˜š® ÂpãÂýr#ë`DCßðlw¦j)B {ð› '„ý·g¯/ŽìZ@ñ (íî.µ¥A³‹:Á’½^”u~{ ê•Þ8Xnn®À´ž•3>‹b¸”ÿÑÚõÓ§H€Ú–çL–Uܘ¦xá§x>BAEUzó&xsÓbÈþlÆ…‚˜˜x¬ñj\ÓLúàûéÓ'ù$—ϵ^¯P†òì¯÷Æ †µ]ð‡†p=zôÇ¢àXµ Éï‚.¬žJñ¾|4 z'DV›Åtãâò¤È'¼¤„Â.\&¿×¯$­77"¨6ojŒkÚÛŸ¥ÜÒˆ‹‹$$$r™„WX'h~ëKàƒ”õÓü¼d9ÌÿÒ@3‘(%¯Œ¾Ûl9 Ü› õ<¨'^À)7;?ßê¤*¢l‚t’ðÈ4çpd¨·,Øûæ2D)]*dyùm©€ißwZUÆØOêWrÉBš@pQÃ¥†Ž*ËfÈÖlÃw‰\7®”"¯‚½ØÞ¢¦/4Fj ¬þˆ‚‚‚Ãq]±Ør¬#Ü Ä·¦”(**Št)Ü0I_u*;ó>›~Ÿæsw+ž7â|ü%D«4üÂîÉÒ%³LEuI=O'L‚¨H´os G¨wê·ºn5Ò|öBPýç—'ëÉ\£·Çg¡x4êðèè"]/_¾üuõŽ„ìCÕÄ‹›¡µUž?Hw½YãÏ+S‘“›ðL‚ùW£‚߯ÆÇ¯wEÓLœüõ?]¶¯ @x­]Æ5~$ ÒpªÇ¨5Õ‘\)ú倜<ÉÓb’ÎStñËtò'KÚnS¤$M^|<¡óÀDÓÍÙ\äß¿ÊÕ­v„Rþ¾â”pÖÓM;Øã˜ 6{ì}S«–ɤd±ÜŒÝd$QÔýTñƒœçî¢òZ–¥‡m,•ª_ÁûZ2¥5]ÐL?Î D³5& \½X³‘—YÞÜEt)GzÈ„}ˆªàxù|cÆAù½ôòÖVèâ¢Qu둈žÈžÕsFÇÜZTU=ë&“¯ž0JqÓØµ ú»6£kãýšGW§;ªª‘Љ€ %œnœ¸æƒÖÜܼxØzêÐÆ/3D$¤´ü|4Ø/§-uI)©´šbCCC¬\+¼7Ž­×A~ø ª;sJ莡ë%ûÐjÏS•:›“Ù{r®îûQVíoÎ@”N½»Ú.ód­ Ûß¿!`cØüáT3Ø™,ïêê‚*8€áðºtdÖ©Â"áµj‚:ùÀ†‚GÀ}ÏÔº´^BŽM“úã‡ØjiZC@LnTßÊòò<0Å› > >úÛ8K°TØßÔí˦˜Ù³£¬[¹¦ÐÑô] çOÍlz¥Õ—*]©êCbÄ0ÞOãÞ<0à4øF¦«¯ï…û±»°Ž®®œ‹žô‹”Ïž~³ÛŸeH Øô$ÝÜžIEB/t{¾”™ÁN²µ¬ñìäÇ´uÛmg> ‰þxUïõ`R *.9¬ÖÏ…¾{’_ZÀ‰‰-07?™ÏW}b—øIa_ò0Ÿ¹¹Þæ5™Í¾â©ìÖ|ÞèyªŒ@°¿Çj0ÆfçäøÑȼ©v …l«œvÕLºfÌ"‡JèºÈ¿è Jo?{IxèKwK'’ßë´JJßyÊ-VªpÑqŽW©­Ãq> ‡\7…мôp|ä¼i6Û-mÌÑcýOê9°hûûv01àž õ# [?.lŽä :3øt?ë(åîÚ4Á Ç©t§ÎðcpÆÏztºG¾ìrlCjäÇâÃ{žw*{>DáðR­}oÓ3³É5=dùt¿ó¼¸½ùK<;—gì^±Ù •71ä*988Þ4z ‡IQ›üŽ÷s;Z5Ü-€ÂòÉ¿# ²³?3Xl†B•îüsqtFC«sqü Â²æ§N‘ú„··…Ÿ'ßÈ>ð}΃Cö÷­ÃÌÙIÿʪ &¼Žg‡¹X#¨Ó8L>›i=/ì섟ÍùPp™ösÏx »¾â~hc¹Éÿ£'\Þ—Ø ËYÊ’SÂáÞáGÌ?B°Rö1¯À4æºÕö!IÔ¡:\QÓÎ0®äÁŽJö?Ê%¿‡¹X…ŸÉn©Îº¦®‰N'°vžR³æ'½ aå“`¨Š2 $…É[U¦½Òä&´_2¢„±;ô° ×t" ¬}}ô³E󃩨¤èªåoH¶ Ä\hb>piÆ Nø»6&ö鯵Pq%âõa‘ÄüäÜ#åo™èùeÆÔš_äs“·žr†ÂEQVïëG˜ü`ŠÚƒ¾›TõrS*î‚K~cA?6^ºP"z !‹… /˜Üß4áóø0Â’Ê*¦¡"Ò¹*F 4-³žm£’;p›bc"ä¶IuÌÂwË|hÑoKGÀ>ýÌ'E¹ÚŠ<Í1Da¾§ßéò¾Ô:¹Gi¯ HèK$ð«J~¯ˆåü¦pÔ ²³ñõþg~ûjâ+Ka¡þ¯#™i¾¯Íy?ÉÝr?èDíz¦8˵äðUF•ÖðtÏì]-® IX•azwKÂ{‡ØýõLd­:3Ú…ôï{_ºÝ^°“jÇuæEJÃCñ+ò§ 4çyŠnõè<| dÿöå…·ÐÛÌŠQû¦¥XÏYϼÜ0¿Xšk—ó»Ò#š¶ÞÁZZ¤Y”äÌͳkuß¾h %<|ÅVUŤ˜¬ú)ïËÝ/g.2 %ðUVÔÌx?T¹Ï¹É×D´[‰LH‚(%$Œ¼9x·è¢‚üMiîµÌ7ÈGôõF|]zlâß lÌûíäÚ9q§×¡©Bwˆ|œ§¶:² Ï¦×2;¡ù¸— ûêX”äX;òÖB£4V{Æ÷‡÷ùÍW³auîù­n‚ÏÅéov?gñÿ‘ÆÃVÚûÙW$í›7mè¯P…#ÞòKôœj¥O‡†eôGEÚóÝ_ÁÙ P8_Æ:W§¥Š–qJ%‡ý™P[}ùö)œ • ¼Ü²Ù½¹’Ô~ƒ óºÎñÙ}gëp«fŽX#éó·! GKKK À‹çç3Ã|in\dÚ3q•^AN䭲ˆ,)?aŸÉÃC¦ì¢ ]œ ¨µæü` ,+ ƬW7nâ„{âü¯ü\sít~‰òÈ¥Ur¶XÖóføÁrJ~‰Lý»wï bm]¤UÞóôçäÁý‰þb¹¸u‘}œA%…)xr !¤«¾Lü˜nyh½wý¸=** òô3•N*îõä€Jïh'ûûÕ×뎰¦T‰ ¨j$[•(<›ÒemGEå@¨’qnèÄzyuÖŠÀd`ð%Wåäet@¦¾\eÂmƒû‰E"¿=<°÷À¡B]+öKÀñ #£ ´”¼ëeˆbìÐD×ÃÃÃïhÉÓpàï±£Àû4/i5èúÙš¾sîíã–£¥¡1€>‹ÑÑE ÕHzÞÝœÁlž~Cò‡KNN†À''g >•G3¤´ËvJ?ø%‚ž·Î8Õ•k«1âYXZöE¨Ý{Üç&&OG ´ƒl.þ“x­Ë'cGµÎCÝ=BÑ⛎‹ãØ€ tõô|¸rÆÅAUJŸi½xñ"ìv;“<ÐÜB•,ùS×àm8È¢¦ñ¶ut ¦½€FÕùÜ ýSŽ%¬D.é™™%œÊâœÜד _›‰þÍx…ƒóáîS(ç (-.-ÁÁöêÏÈ¡Š—€ÀÀ…¥HѺO£©mÒÎûÙ{×< guMñŠb°&° ßw§²×Ošàꩼz~†Ö´ò“sÛó)B;Å2FP¶”K¥ñGÕŸ»Ìz°‘e ðrxg%†ÿ”Á¶û)•¼Íï ö’ôð.ü{YÓ˜†Å•N[ÜŒºû#Oß=é¿M‡Õš¾M;´Hš6Ä~&t¯Ù ƒ­Ö?BÁ¥Þ8v[C•³ÍþË"°ßK†%±”R.ü»žzhx8®âI¥<`fÖÀæ/ý#ozë÷}%¸¡”¿˜õ³Úï1yÀ,cøw-Ü'û k¢‘©çW{Á>/»BOx®Bƒ)νcX]\ èŠ÷«;43åÄ}eç`,†$¿!ñöÑ?ºqֈ߫° ¥‘¡tVlÇW ã{;`ccÃßÖ³yß¹q(tìR%DÉ 'ØY[‚~†ä7D7,ý¹®¡ñ 9ü™6›ïºh”Ò¡²x±0aAêÎóðD | cÎÐÆ!Hò-&ô¬Øå/ôÛ€68FãIŒ%ÝxøOû×0ÜÔ…éc(×£yŸëÁ¬ÝWã`,†zG”²îkž·Ðï·nê|1ápÛF—-u<ßxžÙ õþ­T5Þù²Ã"$.cZÍw ðœØŽý:»`V%þF)ÊPûo2¢Á`t1³O,þŠ]Û¼œz|nqøàí6ýWA¨Ê2>Qã…Á.Ñí¾>Ã)‰J´>j†æñ—€ÁvÕèn±7»Àì³ sšMëýÅ6ßa`Òןû¼®Ç½’žDQ7pÁ$®œÆ…fX÷Kr¿«Á Vuë“MÞºû§÷¤úBxú³J€9ÇÑÝ·[Ú»‰ƒMIþYÄ1ÿ·ºšû~I…×71cùÏãzϽS‘ÊW€k&Å„\Ͷ/̯“N{OO!¨%0]:š=­=ù«ã[}0€ä¶cÉëâìiôH#…|v=> Ó Š$>|øå¼£UÝú‹ cOøí¾Üöôô„ÆYþúÅkЦ}õËb$cléž¼õ%RÉà@óóóòcƒ$Õ„±v¼ô©ïâ[´äiØoshÞÎo2$yÚB‚Sòp&Jh2·¿p”Z§áúðÕëd¡êÞb¬“/ÿÊ'”\–ÛZaÑ×þl GåÉ®RY7]³w9¬ï#1 Þÿ¿ 2?GGÃËDkmÛ*¼}K+P§fbÊk·ï›âÿßQÓ×,#ÿDGcލ;ü¢CyºÎ3 ¡í ðË­…h;>ÚïË]\豪Ò7 Ó!^Z™–¯+,<¼@@ Vû2½þº6ýüüè™jÝüGÍÅ&" ÙÜÜd­¯|&ÃÄœcó÷¤V@jã_mJh{‰åh~³¶m}à`º´KnÁï߯Sùð>o28"¢ã¿8Žá3Rà8~ šMeóq#2:l*z¦"+§¯þ7Ÿ˜ð>÷‰ !IXæa8Á!âI©³ÇÙî --b‘«m.¨Šr(Ká! JAÁ¥y«@T#àq Ò"hÊ‹ÑÉæˆëA;A1`ÍUµµ.õ}6–@ë€cî\ÃLiÝÃI›çë™±ÒÚ¥–‰þœœE-]1>6é¬ÍL6V>?oÀ¬Y‚ÈeòÛW9Ø~(•˜zÊÜÞlcéÀ œò£Õ°[ûd`eöú1-!ɤ[UàÂDkºqäÿä®{½`çhèè$ Ô`äBÁš¥& €òг±uÿ¸°´äßIáC 8<_^ Tïœß°¹ZÆ<æÿ)"ÂæÄ^û¶~®,üçO¨ ,55õüfÏ'r{Û*¡\b9›³¬s!_†óí£=",RlJß Ñ·©I æê6ðÂÆ†õúæ†R‡F¦ÅS$xzZ™r~e%p-ÙCôîšËd Ù:†ÿ^å?×0"ÀšFÒo–‹/â$$ZûÚ†¾ªÌr[§gg#C% …ºµ¡Øãæp¯eç($°e†Fsõõ¡§K…·‰YÁèMë`;Y½:ÝáÚ±Õª¨4ß»ž¬`ºª¥ºèЈ?œy9ÍÇÕoƒBŸ8eûJù%;ñƒè8ýç§ ÊÃ_'lXÓNÊXž< fœP¢i <þËªŽ²ÐÄk?þØoúSÑn㻈¿ ¨õج|R^®Ü8üÇ KoðððfþÚHÿ+·cffM’ýXVÆ}½wwË–)—ð±­M²ºµ”^T´±}SƒfdÿœYÞšòÚ*ÔðñX]ÌlÊ6÷Ž?Ü) –@'È€¤Q^@DCÞʽv§)ªúÀÒ(ßÉ7ðv~Úô¯M§ððö´¡@ü¡–œ¶¶6ƒ›Ëvâph:”C.Ю¤b`xE+Tö¬Ÿ{HµU‹s0˜”¥53v¼Tu!}. 22’PÀ1šzcm®×¯L2çuv?Èùæ²ÌMÌò?jNpÁ~àtwwgzÅÐ)àïî¾±±´÷¼X‰K¨¨vÚ ÉJvÏm_ò¹=Ji²aÃ[#!Ý`³rm±[XQ«lëÑé¬ñšðžç´Õs¼ØÙ¸¹'Â"RsõeÜñJ¦4³3ç[­82åf:]µ©žÛ‹ë%SÉᬛßóÒjR[Þ¸‹þÛ è㽺£B‹/ÙEEâÈÅï×äööØd_½ ÄJò¶µ…z¼†%úm)E¼æóNá×~y6ã’TßúÀUM-¶Êaå“ùÕ|³¿ÑïxñÕOþ(\¬¥$´—ZOñBAPpÇââÞÔ»—CCÓDDDÁ«²Ç€[Õ~`ÒÅêµd\žL÷Ó½96$LræÒgm¾–ÅŽk[ÜAw8^„îÐÕõò`§r…2 žÏ6ìàlj÷éÊ9P^Ž™œ€˜˜†,**ªÂ98 å®*\nÁ·ÍÖ¹µ (dX@3Ô’&Š‘üŸ[MW)¡QˆèTUW‡  µJ–5RßiŒš1¹q·ë¤ˆÞ²(x:Ž1 ê®Ê¼m&²=tOzž8¥EÚ7€ÿ)]cœòŸÂ+¿Wá‹O*E»É¤"Kß®omYÖX…466BØÕÛ‹«]a…=;;kr u0+×:h~H 3º½¾€æFœÍz(¸º¹}ë)Ô*—…zþ¨øø4~fe… îVIüþÆÕ©:ЂÛN ïI™››;i]š›Û³ÅñÌbznrïë$&Úã½Æ»†® ŸëbdðÿâÈQ‰‰ÌH¤ôÇîõXâÁ,ÚÁØÔRÈéƒfU«ÖÚïoGE"w’ê¨vï¼ÿcjÝÍÙ›ž×‰Zi<”)ÇÆÇzº;ÃåÇÎæ|ØÒÒÒ^_ ú¼ ?Û”<üDz°0®²Ø*hû4’‡Ö=oÒNâUî²€{ÙŸ¦<àͱH†K¹Ì–›,~ä,EZ~~þŒ«–V:a¸TÔ÷ï“TÏò 4×tÖÈäÿY®ÌŸÙ©©ÏÁ>ûÜyS`E ¿)·ˆÍ‰¨ˆ°œ­àY³Ý9Ÿ½ ü&g:Œ·°°`ÂñBZ:= ,Qkf©Ëò]ñèÓÈðž÷í·´qí7Á÷Áh N·DvÃPîGKÈûúÜš÷—:2»Í*d¿ÏoŸ%¬¡Á ÌgeeªŒÚ4²Êàõàš¸¿æ§[óŽ©k¾Ú1}û6ø—) U¨Z!xÖ„Û‹µöÄgïÛÂIøòòò 2󔌥ïÿ!ÍÀpq9q Ú—’hç¨~'ËSÎÑÒáÉÏÍåÜÙ뺋åø.tJ9å …à~×çFÍòϠ®w][§lgŒzÿ¯<~ ç;”Õßßü)¼Ïáö®l²¦J¹ ˆÌDAy¯WCL7 ˜>Ps%4òlÚc¯*ÛßÙê*{½“ÔX€ˆˆßÇò=66Ð×VÊ <#¿×eÙ„1pꓞ—LؘúúúCœi_»žY+©Ü/¡ÚÌ3ëW¦})¢`相„ü‡‡U¤/•éµÎÝݺ@hT þDìïïÿ³á˜‰ÇóOŽJ[åGY‡ºµÖTCÆFìníž77÷|‘Ï t8B©€ '‹Št#S²÷¥9To211ÑÕß/¥£C KÔº7”)× `˜"ðFþ1¿Ë¹Ï¨ONBå˜K‘ÔTT⻊ùtS/¨¨pÄT©+²‡Ôí›?ÎŒŠ#+éè0ßg‰†|þŒµ°ºú€Bèh uæ Î**~þ7Ayý[&Œ„¯ÿ±ÂÑùä¤%ʗш­— }©á¬z¯v´¿ëÉ SšüGn)=âuïp”Rš½®~¿IÄÂÚÚØêÌ(dž÷±±1Ú/¦¢¥mæ©X+]°¦€ÉÁ²½Q¿†æP¡R¸8:¢.¢ûžË\ÄY 1¼˜¼úP‘)ÿJ¥Ëñíä×þ§Ã—£š5Ž9ñœï>Mò3kÓF"Õ+-“2ܹ3hC&®ø¦;ENåPøYÓoß¾‰'§Td ÀPïymÛḣ,¶6Mä×ÌÏ]e,IíËŦŽöÐ<õ¼öfÿ‡+†N´nùfX¢¶l8slu4"+šÀ8ÄPÙ›dvMjÿ5Šè\µ>>.{ñUaò>jÓÓ™©òiœÊ­Œ;ðµt¦õ³eŒ´ôwï®d2Ç—®¡¯âzÈ>Ilɾqª—·j8 ?¯à?ÓLÍ®S3™øÏoüÕWgü4$¸K¶vR¡Ú) íFÕëëëê}»ì_Á“Æ(ˆ„|ú„‚FÂûÛJ_YŠm¿•|1©ç7­¦ ŽÈk´·µ9^’n4B–ñËׯ=dREó«Ë~×1Zª#}7Ó܇¿¬§2™7¥S”yù¿òñѸÞKúa·y>30V¨+áêZe.HEïææfò®P§ú¤‚ÛÅÆñÞ}}À7Lxg(›»ûðÜ„mü6…íAuö”í–v‡7×ν<)Ê?SSá`Zž~ozÿ>æ$ûV˜]D´Þ¶ÆUwÒï¥ükÄìÑná%Û Ì¤~š±íáo°{·$¹±vi€v2ª¯{t|,)._¦Å˜ÜHŽ3‹åP”¹vðåw«Ͷ[šÛã%Â×64O½ˆõ‹È>yÜ’"¾:û3>4„_~Fô'÷T ,./J¿jˆ\eÊãIñ£XÖ?V¿Ux­q€o‡FSA‡Ü$™™£|‹x=õWskÙ×Ý"ðÛ?Û´#w1üÉú¯# ‘6êNäú×»t¯/¹‰ý¥ªºÉä#£hÈCûT!™Ù…^R }¨‰=¢ÕÚ\*-ؤÜõfýü§ìâÄ‹Ñ Ñ׸3âd’7ÇEÀy;~šrœåŸ÷^`n¶þÌUöàD7—Žƒ:~ajún==’Šƒ£ø•õ¸²¢"´ñ†uÙ YEW7èˆòüf¤ðϪ ‹›cƒu¡^=£ 2F»9…©k|È•‹¸pfã´!ö?ý Ï[“ 3DÝsœÔÆ6?—sʲm> ð-•õÓ¶y'ÈLÅuH ®Ã޼ì"ƒŸ`S&ŠÖ¯…7®Ç–¢~ò ÐýõcO?É™@(ÐÝK·#FÖ¦@›Âvd’Âþ.î4õû1aÑ2ƒÕÛúD<íî?Ì‘Å|Ø=øÌ›V=Ï}€¨©Ú¡ÍcÌöixÇW>17t¥–™µëÁÌÌ“ö Ê¿øîñÎÅ_d Á#ʳÒÞïÛ÷©@ÞŠ‘BZuQ3ß_ƒ‰½ý-vyДŠ÷ ùâAm~wÃ}BÁÏ¥ê“ùUviÊã캡·ØèkÞw;°cdÇv[Ѱ/œT[¿¦¾¿Dš•p[)fc¬~ãCrÄáì C’ÊbŽ*÷·‰N絡ðfšC¸p·}YŒáôKãeUÑêVÊMnäÁ~Õ IÉ·–N±H“†¨æå1ù«÷Î71ñöiØ÷Y8¼½¿!*¯8Ð…B@%Äÿ ,ù?ü$á"F,Áy7-[õÏoo á”g»^Œœ@«Pòì>z)p)îyg>mø/¹ c#ÕîìZÌñ4F”**jÓXø º¼ñú‰WÜëa/õ¢ü›j…د1ýÝËvÎÏ]Ï//©˜˜òfJ¢iœÌEO¬ïƒñË$;kdr ÇzÉP&š0mu_èfÀ5âÃ;¾¿]°ºâæ?Cÿë³sîo•î§ÄøåQ;X-Ý/ï³I¿Õ¾²Ûëõ_XÝú»³ûåK¼u\l,%3sþÔ­Ñ?O—¯'qÉáæhô†ôÂ’*¬øTÇü5–æ4¸öåKdeeåCX˵Ð}||êö[P³ øòžñ< ±('ŽcÓ—zûö§ymñÔ¤r}x˜5¯õdÀÙPå04š‡uuâ.ü•Eûãü¼ùÐ|l ’žÝ¿3¯Y• Íµ*‹ áðY6Ó°ï»Aöl4Õ¼û¾ó¸nTBuNu·—[/:£¨¥íÎ÷ …=ð_y +«VH¯v‹Q{þN\Bªš´Ù®¨PµM ŠÄGFvúˤÊ“”ùüg™àX=5Zh „†òCpðÛ“£Sªâ‹Y®3ö2”ŒJXx¦Œ ߤÂët[›œ|v·aU¡¯²à¯€€ ]™ x¢¡Ûÿ@ë.óMpØDD›nŠ)År8âûä¢TTDx¦Ãc¥AEAÆbXYÎ;42â^^Â::6¡ Ñ31ùËfÀÛ•ÖNtv>Hê_‘‰þsÌTwQÁÓYS]š|suÆG–5bP;%¢*£Zh¡M†rÈ÷ïÄôQJ~ˆ BAË·¼ìч"ÂŒǃ¸åªàáá?'%YOö÷ôˆ‹‰‰Õ^M÷ÿW¸jâô?ª·†TE^“^=½ô˜Ç¾1L¢W¹Y)ÞÄPÛ³3oIi) ’AãããÎgpb/^¼ÈÚ´ævÙÕyÀ‹Õ“RB‘¦‰RÓ„ÓΗá EX¶[Þâ¤ÆÙã»ÏÉèt‹‹‹òY–.sËÝ1P¥ø0Yaeq~³Ö¿…úYC!Gk¨åZ,BÂÂÐ!o/Þ½{—·£”ÒÌwÉ”4ÌÅ.V´ÎÃâS=³ûM ÍZ»þÅHp¥ß€&!\T¯8e9ƒ»d5ç¾.þmìµ›cj¶sX¹æ»w1%âÀdJ/-ŽŠÎ~˜”ì$Asß]àÜ¢h+ÙlÎÒ4«XKÖÔܸÜÔ7öÀ¥¿Ô&—4mö”rO¢ïËmO¾ë…òðW9ÒI7ÒpŸúÍš¶Rív;‹ä7§Î1žP•à"¤«ÙÙ«ü˜SßUÌY #NœþY<ðÐÀà§ì®]ð[(ÚÞ%OŸHƒF¼ÑÂ54].».‰ƒó?,ì$¼Y-)»"²¥ÏÖb¥—v×>Õ®>_ä{Š}‡œÛmË6Uò¡uøÇ{–P{WžµÈñ`OÜ£ç¶v9¸d<”þ’­ïÁÛ1¥ÓpXØQÕÙ2©v ›´’oSh(³Òi¶ƒêªYmPèë]­³Ñ§& {›ÆŸüò A Ò«§ÆùŸ®_ŠÕtî<|—Ʀ•‡!ÌPZIÒKoaÂ"Q†¾­*~AøK^–f ´ —Ü^áØÝLX®•?Š>{ ^~›\[)åëå¨Ú°1Ö‘rSÂtÈd;”À6]!e–^MÆ™¾:4¨Bw„úuƒî—B^÷&GZ}‚¯PÜlÈ"@dt…qß”Ä9Ldoï±Ɉîô×òÁ¬0Ì¥afD’¬ùþã‘À,g©u“>¼GC%*7HüÍ.ñ$‡Þù_À"RáÞ/³Ù4l™ìx«Óû/&C­ó€åޤsÉï*Ãî;—,½+«[ÛåüêŒë.ÇÕÔÆ¶ 4óóåsÈáMp†"Þ }ö®£ ð¯¯ð v–h´WAxPÈ~Ú«íãßPŠ1݃Ö\djökVÑ—ÃjPÆãíÚ4RµØB‹Ó‘Sñã¸[Ýú×´ˆ²³q¯”¯ŠÐ-{Ž¿d¿!ÑðôòôòŠŠÑ5TzøR™Ò ¨É T/¢wOe„´˜üà¹CÐ °Qú+£_à`€È>& ˜b,s6.æe¥  €æUw¢mLgez_NÍ?×ß#ný<¦B²µZoÛªôÝ¡™uuáúëÃq\û¨‘г~àŽOÜLy ~¬'âcÖ‘O2áH§Ë%ð¶cC“Mã9ŒYޱyÿ›ânÝP÷IÆ1W5…õ¥Ã•^²ÜÒj‰ Œ…Ó)Û Ù ñ7o+lf&7Ž"¸ÛGÆ­gêjkÝ4ÎÿGîá½&4Çaao/²ªŠxtÔY °á÷ÁtÜT–ø|¡›!aN´àãè€&hp×Ð1fPÂa±=Tî €üа04è8³®(j~·C|Vñ´äŠsnb˜Ø?ÞHPÕô½Jækh$0Àá±LPkb’ÈÞï߯Ut€R¨“•ºìé…4\鉅Zaó;•sRZZÄP·æû5y(!òèÑ£¤ˆ<\hìãYZzú ‡’ ã L üpý•¨¨(*Qѹ²½&?*NNedJÉ¡"ËÞrÑhTVäu¦0©thnA^eÁ‹¹^ÿ_^T!€•ÖÐ0»}ñÌe71gz0]ú…²r´ÚNÌ7kÒ£—’ËOÐN¤'åùݑݬ`¾…ÆÛ§¥QïÝÍÝù¨£bbb"SþPÎÑrleŒ•KUŒï@ÓÒ.¬/ùºûEþÕ«VýÛCUUUƒñ_÷§N:%›v ñÎà‹ÇCUòhHQ55ceKJ8éc{œ§¨C¡¬l—¸­Ôâûo:¹¿"QÐÑÛ7†²úÈ_)(ðÝcaùæç3#S> ss{&Ÿ$0BÕ]Z¡#ÝËËó®ç14åAôzaÖël†5ÑiŠ˜˜ä“å”çi„ÜÅÕ5]gYÒ—/8¿²ª¿/Æ|¸à¢íSUÅ`·ó&v:õ3ÚjR¨ùP¦á\ƒ=3s õ§VC·ãão ©$ÄáHk)Ò¯_£éÏ¥%Ÿö¨©ª:Võ¯þ¯²b«³š“ÿÊ8ßp‡†úK¥7,uB_ ˆõ$s¦HFÐUwHp6êiû»PŸ»‹h€)ÑÐü]×’\$Ë 1ø€æá100drx $ÉÿNÕÏ(`cƒ!S>‰‘‘‰)kÕž%6AÈ­hqxæLÉW«Ù:M4R~EćCÁ+’‰yb¿ÔQÜ>ÉýÓ­ú¿—겆:ñzyë¹.<€°§§g[¾f©¤®n "¨ÜFÔš¥¥;üÂÕäÎZ‘b —Ò!Åv'BRØßÀ8R™ýs¸ì"ÎôõZ»ŠÛRí±Zžµ)Q.ùÊÀ^Þ§®1Ú¸$ 4ß|öø™vÓâå;ø0 &B¬iL8×.2ù”ÏññÈ2Ñ“×!!!Qå"›ÞPù{çè*åžmò´ˆÎ®âÛ¸Ó[§Ä)å€9|ô"ÊÄÙ!BÑ5ˆ–´î¿/íõ$ÌëÊö®¥T r-3lHœöÛ&û''ÖNnM§™;¯oÞÎA–Á¤ Ád*¬bŠ¢B×òüMA¿ÿi²V=98x®¥õÝüf‹öÕ×øÌ®bç´½ˆagkAHpø»{‹žœ¡¬°ÿãt‚†£~(kjÓDVdû»£AP¬«˜póA®íúA¨†D<ÿ¢Ébl||ðBkñŸÏã¹L#ÌešWu{§Â5ÎÿÕsR áH•‰Ñš‚„¿['o*¬ˆ>øû/¬¬~ã2Ïrª¾]YþE»“zÿÕ Uá¿bж¾g¾A‹ËŒ Qg-PÁpµD1 4G!‚LêàIä·O›QÓà&F‡ýøñð ~¯‰‰É÷)IÉ7̵Î;Zoß¾}ÂÃ'AÚÜCWl· ž02g¶7[3î‰e*6h†‡5Ag&—•qÿüùjÄ„NøÃÁÁÉÏø%%1^GÓ$>{”.–na#+EJ]]=tw>sJw£Â&/ùßç'“ ËOÞ¿Ç&%E«×ÃÔÐÐ@¦„ŒxQã-qå¬; ¾”]XØQä}”וßqõ"Àý {”¡ ³°°`·›[w(ýù .P|° ;]6ÃbP-_•QIEÅø ÐêÕI%~å?ŶLyÊ9ŠêêHÑ.³.\ÌS98†ë6Â>GEùùú†œ%$`OØØŠ¦–‘‘¡Áj÷§ÔÕ‘fÉ'm;Š|]´yMšpxv&-/a.ÈÀðˆ„ÏfÛ®vXä^ø™Í‹‘èøV{ɺ­v§««\¨¼/7è„ÃÃÀ\ÝÝ©()á´ *Fì?ãáUèæÐóòâ‡â³|&\l\\ÿ“­1—ªäÓE›¼àºÌ¸‰¡ÎÔRÓ)ssó ©ÌS£80²èÈìμÂã&^ÁhÞ•K!Ã¥“oCÀòÜ«Ã}Çú‰­ñšS*’<|îz•Ϥóu²‘ŸŸßάõ 6¸ä €O_ÇûkeÜõ™0©=;að޽Py>$Ä×ç®ç A$0¿ÙdRN-ÆCõk‚²ŸO_cÃ\D@­þ^BÅêä#©ÖW™»°ÝØ5SÔDê(wB(Zû¬ÄWP*æË8ÓõÊ/âœß·Ô°ëµÞ}M²|ožW§ükvw躮Cˆvóî×têx9Pçó¶6É—Ñë ¯_‡éŽ)GB2‡Áj,ÍÑdŠ1´æ]¿ô]ÌÄèQ´†Ns[c µk jÔ¿3‚’é$ž)tÀÕéªPÈ«äT@.=×ÓÚÅPÉnOS"±SÒÄ©'ˆÓ~›iîÕœ†ˆÑú½~µ)¨ýÌî`›ê£ý„ÿ ôO'½ËsÏþg<ʶÔʈÀvRL ~£ðclÆêÖX»”tt¬Ô&€EyÃ3‰ .ÀÇÍ·RÃtbbU@ê´Ý K‘ßÉóN‰¼Ëëã~t®š©÷8£baAgÒ(ä.˜ý[Uè ð ”[àïÐýr6©ˆ'¡é@r{‚mƒyñîèæÆk!ÛÆ^°\Ÿ££?$ º@g d±¾_­<ueJ.¤¥¥íCAË]Q0ßãcÇ0bžžá`5–—ß k‚ü¹å(³Nk±„n«\¯ltÀô´ðEc­###VúCAdŸ \(s]²kÚ ‰á÷1cóÚWèÛOÆô—FµmÀ ®HpýùH‘÷»‘g*µv.([•8uñŒ7•(ù,ÿ„„†båU–‹XYZ`~(Ò $ £!Ñ?þ¤~ÆS ’£š–Ÿÿ›Yxb`§ò¦,XØCë \Uñzzz~¨2Ho²ß[£oÁ *GŠ< œ*óÚøK[zó¿‹ÕꇾvHƒ?™&LùäÇ{6nnìðð0ÿSçÜ4xjççO«éªbk•­û ªKbå1n7sOì¶Œ¶½DP[º0~E¸¯~3e  ¤,¶›\ÿ›úýzsŸ/ÎX­ÞÅlÿG-€éÅñ‚ñl”Žrvæ2„EB2µà¸zÔçϰuË‘/Ï›úÞGþOlä\emNÓkÓÜè•Yùã©ÿÔ…_M¯ 5Ò§×Îz÷óãºÚšt|6½0ÁÝ*¨¸l—@±’ýGqqqvÃÄ0 Qr‰hÏù.w‰.Û´Ùê×¼ä±WOµ¢I…C‡ ;W%óXŽBÍ$ëƒé s×¹Æzn+xPŸtŸVLѰ r÷.G.ô $Șp2Ø®¦­ëðßyÆO§–õ˜asQãv ùuÞb?D錘ÞúþÏŸ±`Mí¡ÐÁ¿eë O7‘ Ð=<…æÖ„JKà”]£NçB_ pñ\D¶ÔÉu?œò5© -íƒ÷ký/””°¡Bðiã¿?e‚^x!Þ/ÑSƒü‡—èvâýÍ»dc£D¦åüW‘âaÈÉ”u$¥PJXhÄ Ë´ýC`‰ cÇœ³#þ‹ •3ÞÝ8;‚ÐT6Ày©YÑØR%…tÙ§€RWÅÓ[aÒùÒTÒmPŒx–þø9ÛãLK¥û BŒe'Ó ¢eÛMºáâËå¦{±oÆEj;˜Çëdŧçj±†œí™¸‚ÑžªÉ¥a¬±ö~;ûŸˆhEÍÓr#s=Ñnhb¬dý—Šä7#…AÏyMú?Œ²>_¿¯˜[dí\^ZòÈ#jØýʬiô=®˜º—RK[´ûS/.`™Ïp´ŸFV¼ÜžÌëÄ·g”/yt¯E%ÒRéØ ¼Ö-ÁØÔÐD ã@ç2oþgEÚoõ±›<%5¡r-ëïìÓ“ Ÿ $üVe9O±cùÿ ¶åãt_É9‘ú¿Ã‘¥ïÿßÒH•oß¾eºÉüug÷’dg¦–ø{è|8s§o•sÞ$àÿ^ÊÈ4C¹j3š7j<ÔÐÈâ]IiéP¨¥¯ƒB„™¸±†ššú…·wƒùœÂCÉ·ob‰gêï~µ,ʧíÛ2¯±¶fN*ø{b‰%ëdÇ+è~œýRVÖ¢ÒÚÂ’ø¨¾›ª]b¡ÇU7w×`/ «ïÔ]V}ÿ#ÖþŽˆü/ŽøÝFäiñ†óÐ\mº7eÀ„ÛËhDÿfX ¸¡ºz†rj~>š,-]ÖÕýŽMÕœãõ{éu Ö×Òss?ÎRHáõ`ž9öƒ•””< ðÅ‚_YYáwÚT ¥ù=é@Æ2ET‘ߥ?ÇÅé/ŽþËÁÁáõ”ŒŒÌý‰-S´Ð·ož ÀóUÔ¾Áý8¦Adw^¤uøŠM²mûôÔ½š}9Yf>^iK‚Š ÍGý,s 0J(¬UŸŸCø;¤¦¦Æy*ÿþáØø¯Ç˜èûF ÿf ÎŒJ­&ãÐ4:?øWTMU4Þ½ù{`x·N":öƒ³¨P{³¨F=2Ýòó:?µþ~ˆŒÈ“yyLúúÄÔ‹†|íÍÆýôã3—ö¤÷ðµÞÑ FFT42GtOŸvnÑMA}TJQ‡&¬(òæ˧ E:°òtEwA—sE‰zló½5ã.½ýÚ¾™Óbì(ë½óÚD@é”Ï%)tÎs 3&Îò¬´«äi#Fݯ·2¬¾¼]WüšÑÚ†¾ ‹B½”`ôÅdCQÃPL÷‚Zvž•˜n{Ÿ¹®w©©wú¤¼¢BÝ{²a¡ë«ÔÆF&!x]Ž'ÙÓžº554Ú:;¡]й;µLùe•HecÁ6–"ÒÚ]Õ*P€sX:[ú,HÚ—‰ÕKããÝÀl}Ð §™«%ÌOœ® T¤¦ñ¿)ô»Þ0|éÌ•ûÍ­òþõk<œ÷ðªd}TŒƒÇ )qRÜ™èô™~“ßmóÉIÊ¿î[fÐX°pÐÅç"u?ÎS\`ï‚¥ÌQŸV¡yÀœÜ¸“' [X½™°Ü+‡;±?Gx§?yЩQ`Ç[ƒÉ §çnÕÆõÄ.mÔù¦M­=IÕk&8ÕÛÿú¡T!ËÇKô–?Qþ©ƒ0jñé"ágo¶\= +L*oõ.xÄ"ÇC9÷ÄQá°½Rƒ˜£ÅÎt¬hºÌ÷ðè(¶>ûan…6] îãÇŸ>¡¨9í}-ž³å@Í‘â¢S‹ã/ÿc éÓ½zÿP µ'¶Gs0¸Ÿ'«cŸÇžÌOqØ{³û&°-èÜÔaø I\hœdßL¡ ÕQ÷P0ˆIâŽÐ†gWýñ=l]ܺ½ˆÐTØ]?YKꜲïß©J©ï¨|—®9æã‰åâø$ÿQ(ñ ’9­=¢ï¨ú|Q#KçúÜ|+…g ×Ý%Þ!ïúÉ;ù07!¬Èz¼Ÿä—µ#°†æYä‹QäkÑ;âÈæº)˱ɿ•!Ýoáa³=ÆÃƒƒ‘bÏbh ä^Þ­°ßiÜá¯8å|*B†hÜõëy½ÍÑߌW¼W9ï|?œè'QRTôL»]½E<¢CÁçR%C^K‹8:&æ`·vx)x}¯¼¯¬º¹_lçÈØôÚºcè”tu¡ãp Ò¸žÍ¸ÀÁ´+mÚ¡êmó¡ÌúÝøxBZZCÀ‹¡9­ÃüûWùMÁ(ÆÒÁÛí™îß¿%½½E Fóuªq€á…æå|NI‰+ö%6vAZôšTœr½L'LLb? ˜eÓAŠ·?‡Ҽ߷ͱ÷uÞÝ~w¶nÄ…|ÓÓI$ÜoüÍEG /™.‚O#rÙÞ/æy­Ð ©ú=ŸÕ;-Á »j¦7sÿvU‘RCÆe‚†A&À ’ «ªž;©s;RTUý9œÄn52ï·b2­%ñÛÃcŠ^³K"š”uFRÉg!@ó⟰²bBˆžž^qRƒD{j.\Š·ØõÀØÜ ä@8ö…’ÃffŠ¥ÒýúLü͆6Ú>SJ|)&rÅD –(âE|rr¦Š‡àdç ñ°çÛ&Q»Ã‚Æ…‡µ¯ÿ n’nÑ©uéêÛ+ñêˆ"¢z‹ýqÔv«Qš »NÒ°?0x ~Öî2zÃ%õÍãöƒòU@wgçC55µ?¶vüX„„ÈA­©Ãà^/Üܪ£ÁùÎØtÀô„ ˆ$Y¦—§çŸ?`lllÜ<<ÍSµW|¿keÉQQQ¡‰ËKR% pý¬ëú «‰>m$<¸2îV[Kk¸ie¼‘´Ü\‘ÜËŸ6ß±UÎ:µå³[]Ó`·.–×]¤oZ«-\T°dMogÈMyX¦o-~¡¿åAd}G$àÀnRÄ»8q'HîÿÑÌî­å'ÑÂíÒS qqE|R<'ŽînÅÝÁ(ø²D´yXr÷hÜ»ŸÔ•^ÑÇ%Ø]ý††-­¥øÌ.ÁwZø—ÙŸ÷ÜEØŠ4gÁ_Ñ$?@Å7˜(yw¾Âæóöë spD„sN©ã†rÝõa/tÜ®¤$bŠh$“:ýÊàà ÂbœÄ$$Ø$$¡!¸t§šÊ'_±A]tÐO%uõ—îcwDP yJÊ›èÅÅ¥°04Óç+‹¶j.zhûÝZçÔ´4øƒƒ¨ð¼Ókèn±Œ{Æåto.’@Ï5UúQóÍkj½}›‘4óÏ5µ®Ã̈w5™´þ¤Ù×¹)RçzÞ~¼¤ó µÔæ´ù¸áfÇÖøîö¦ÞBZkpÉ”bJaF€`Ôù&?˜/øV8Ñ«‰ù¥¥ôakkëŒÊÊÊ¥Ð!%ÛãÅŠûÿ(.ƆÒ/ ^Wóvüû¿¹ à$µTØúA™ÃÔ\iI‰AñèCÞ×®××k¢Éž ûA¢×p¾J¼y/mì³Wö9>>Ø× ½^À¬Õùy=jol|¯Ž¶s"ü÷ñu hdæG´êÒ-§Y‰óßÔØ3>6´‘×N¦·×°?[ËQëä-¦÷§‚¼¾o!nL—N4«¹ùô‰øÏÎÐN+ øs¶vvöÔ¥YçŽMŠ Åì}AÒûsKáÍBîBIòû:ó‡¹yyPNøhÊ'síAÞãs†Õ##ŽUž­`=¡„»-[åì§8—ö‘^ü:é³ÛÝÝŒ‚¢|úc7§Á"ȆM^ûDYE×d 9ÜÖçj ê=d7jCöBMã0j †»ÙÉÓôÄÇ‚ÁÞÔ»Ÿ$ad©<þ<èúûåW$³cúÇä…MÌ|Óƒ3ŽBÕÉwHPaÇõµg@PÐÙÓ2-l sßCûþý0‹ô¡¼Mm!¸ö;“<Щnuå•ö¦Ã¬-žµº³w[³ϨíOëó²k¦ƒ}÷+’éÆTvæÄ€áI¡ñôÁ˜ÑK„Š3ænv]Þ4xº ðYû†´ÂâP–BzÞ Wת޲ €»awÞ~³~âþöíÛù‚ÊÙÍMÙJé:ηvI€ª|6 ~#cã;þ/Îd‚ÿüQ\^Y©Þ)Ô•Ó¬ÙýŸ~Öî=ÁŠ»óNYçZ²†††|wÝ$¦¨?ŽUž%¹yõ7,fØÐZDûϬ˜: ‰þœðln»× Ýæç3Ç÷™ >|Èä3õ4FÆühÔ±´uÁ·ÝÈO>Ë_¯¨óp¥Wp;cFÏt§ìŽD7rhC _4$€˜ñ_Uzů‹MÍݪ_Šú€mQÖÔœ°®×c %`û ¼âD­K"""ý;ØÛ•žX£Ê©w€G‹©ç¿¡t®Õ…Î|˜›ÓÏ©}׋ÿÏ6yÜŠ—žþ3—IW4í«/ÎÐ$Õ‰J۔ᑧ)S]ݤÞÈÖ;†½m—4¤‰ê÷YДŽYŸ;/B4**‡ës{"‹/@1·†J|µ´µg’Çly–4<ÈF éF+k)gë¤ ×c×G«µ–£3<Êy7sM%ïzVT¨;ïNO,Øæ@U‡Ô‘BTq¬ºÑ¯âXïÿ{k¬è,»q7¢ö“éÑjƒzžt zjjjtttšûïá‚›×ä!ë CcÝÆbb¾ªjjNÚ{-¨`2ÊËÕä“…&BefJIJ~ÿþ]@¸¡ý-g7óØ%ãΈî·Ê“`gL¯RÖ×Íâû½]Æî0…žì5\rss¿´´ÌküòýûR€ë. a;TT ¢7eÐæéyG“g&×EéÄ•‚nמQž—«|Âc3<[»Ä9#·¶M&¥!/;-'úö÷íâ[Ù¯•;"ȶ”|fÈ\ð"»ßF¿_ëg8ÞjbbbæT.wg XW%6¹D~ìµ”½ý (mê¹¥='îuÓg.S;Ų€Ãrv9üE- ««¯ïfRú¼hŒÉVÚgÏcοÏDeô7‰¨wre­È‹¶Ó½Ùú™ˆ1Ý;p›žäö‘+fè|)è„÷–Æ›©Æ—Æ+2FFF(- #£¯°ÿ¨ÌG¡pIl~gëAVz†ôZM­ÉŒnz2'!ßÒ^µÃ°Œjá$AñèÌhn'µ—Nè\&_OEMí1ÂW U– ¿º»,ºûd=Uátî0UëÂf3]å ŸU'˜öÕ×ùÒ YYÙÈ+ÔGž+)EEï«ih@çgôX7¾¼ÊU(¿‰‹‹3b M÷…>àáJð˜ä^ÇØ3zö~uÞï!¹bÏtÒÚÆùÞÓÔÈó¿oÔØ9×FÅÅÕ”A8€ö #£8ð‘—V66H¾ò1ý‹ƒ['ô J¥¥¥‡K Ïàï-t"“N•[Ã9¦௳DÛ|nß×tÈÖ!5ÞŸo¶ã'…ZÁ`? û—nÓÒÓ¡8fÞÈ'hx##Š óöz™þINÅtاÇéösMM¢žžž/µ…°ý¤=χ}}}ç¢wkwóíúŽæC3n0E•¡ôLÇLS©æãßÙäI[»ß\Â'õ¦  9Pì ’ŽZhû¢C–&‹¨¨(tžŠMež÷‘ €1~èõ<<ÓþD(ÂÉÈÄ$¼›0]5„»")ySP”âö;';û3dÙpˆ‰aÃÁƦ¼:Ûsɉ‰Š¢„ºµÒéÍÍÍ9]vu¾={Ÿìzš׺ðŒ`@YÀÝ ”ìää¤üÀÑÏÓ?í\Ö»—wçK‘嶺ì9׿ 8å’ŠzOgôUUñZ”ËÞhO'ñùÜzñZÅ¿)P윛±w±9㊬_Øý^]+µS”%¨{ƒî¨1úçÏ`bûì]Lo7*®ª ËÈÅŽš©uye`ð#ŒˆK ƒB$Ÿ‘<¨•²7Ž-\ ý¾­½½;œ„¯f'Auª{¡#ZÒÑg¢ÑÊa<ØÍ›Â„ œ££q<÷›Þ}b»óÐîÈöc0 ö°ê%?6öŒsxxøùÕÜ]Äññ1\£55vu'äÒ§!Rç!fÉý®Þã·Ø!”lÁ>Æ‚âÌ{Þgµ7d ýwÖGs÷„p°«±ñðÚ7vDö»¨#÷3áVåÿ˱g û?ŽÞbøewÞ‡gžÇ•æûìêÛ§WTë_6ªlÎnfeÝÐÒÑQÓÓ¿œXûŽ„¹qìJ' ›ù¡»3’QrßTê½È¢y`ÎÎÖëäx)EE)¼H±Oðÿ¹ \¸Z_—Ö-TZ{¾¦£O‹°øÎâìp®ö¤?v#ïv(©6Û€Ó¼ €Ë(w@®ƒÿî[k×8µ I˜”qÑ”y¶•¥&‡VÒŠmRÿçB.éƒfP¾Ê:Í™¿=ˆô™Or™}P ÆÇßÀÄllXoDïp Xu|›TÊÇJ"橈ÿ«hðñcĬ¡”Ûã¬ñRSÌÍÍÍýT6ƒÎ2à€u;F&'?û>(*+ÃÇt/—”FK¥+é}4ㆆŸ¹à)Ò”øì½€õÐ[N8àÜPÊ~©£ºlH³–ÂçššŒßÓ# ‹|Sf†(OÍD¸^åk|niÉ”ìsëýi`ÜóK’›r¡gØJ>P–âÐmx_Ñ»#.#;ߟR‰_Ÿ=%üÕïôh3¯èts¯ í×óÛ½¡µåÊoZ'Ÿ½ yºÿ[œ7¶õî`±]YK‹Ñãl7 Î8gà9WÊÇôbë•yñ"P¹âߺééŽØïßÁGûÆ Q¤« r!ùÛ¤¦xi9u£ ÂpuºSSScÓ™wJè MF·°´|€n+Ÿí,sTT”Q¹ÖÊpŽ ¤î 6W6;÷eZ‡cs_{w7Rz^ØjS¬a^K `j :L]š%†³&t6|™»ë¤5Ï·?Íe·¡¦¢’““K"ŸsXhyP<µówr’‘N!yû³- 2Œ™Ùq£õ¿{[’±óƒ%A+‰‹¬çoBøg“MÃŒJ'$ÛN´â_?…j”÷À3F'%äúlâTB]úóû¯éïrɉÑÍcª°[•¹¤œÙ;lÍÙ¸àr·¡.D>˜o~éCØÀ¯7{v*äö. ÎØóÇÁæ ÿŒÜT…hÿÀ@çVQcÄ÷ïÄÐħ V•ºH‘KzID¨}y¤È;£,uÄbp||ýoQd$&11q§å$@Ý€›ŠxV~û²K–—ðýûüÎÌÍ\\íAr]]Τµ¹¹ðN¯t ÔCssåUÎ < ?ÐfÚ8pØ8ŠãÖ#ö¼éÞÑüí1ÊHï-ô`èN"r+Žøó;†[r6±ÝKœ/Ë껃˜æIüî -ÐñJP«ùÏŸ?éï 6kÀÆ J¤®în%Ì{_‰-‰HõasÓ"QØctÇAÐÐÐð|1”MG„‰ž~½¤á{[1S__# ËŽ¢3“½Õ«¢±ôŸ?%Ÿõ÷÷KiiiE^e%@VhfíS)ã‰hwxò§ˆÙ†$Ïë‡Æ²¿E wm;Œ›÷èŒ;˜Ü‡uÍ[¾¥èû­²ÞHY8aÔ=ªûßþOž‚׊ð·  O€¿dM[‡EDH‰‹Ãç«3A0^Üj­,|{/[cÀÇ_bc)éèýóyú_ü˜ÿÿòc.›#øÿ°÷PU~[Û8¼Q¤‘”–n¤K¤TJ$¥»»¥CD¤”îîI¤»»»ë¿n<ç<'~ïó>ï7¾ñïã¿O¸Ýî}Çºç¼æu­5לս$ÎÛüÙkdo´°çÈWÒÏU¿ªNÕ¿›ìDî&G«E@ ¡ßn[7•œ[à¨Ü_Qå÷²~àw%?#{T±ÔYz%ŠÔ›A…Ãß¼yuÅT¯qDËI°Í €ú׃Pë¼Êõü•ÃlXŒ=¸WçåX£@å`QŠÛ?T<"âÓ§;qÝ~@iëøŠa7’É6;v˜qÛ ¢¡¡ '‡MTXµcx¶°LÔ9L‚Cþø!º9Qâ)ÔÉ‹o§Ö÷‘ˆ_fÐ;^h&§Ï#÷Ü–ßiz©DxšPJ#µ%DÅCHl¨¯uFqvq¸á¹zð³H¼”6,n™`9Ã-’·æ5å‡] Ù­>'™=;«ruF&_T£Ä< kãÇò~Ô‚8uÌ€p›|Rr9ذðSÀÀØÂñŠ ŸÌçž퉼ÉXÇÜΙC&“í·ýOwGóüVñ88«øN‰¨ãšKéu(«‘è•Rþ°õx¯ùÛ#Mãâ X¥‹DÉ’8£ß9šcÜåRþ㦯Üç³Ì>4çó€Ší5VH4Oœ°$˜Ñ®óü9;†×.îæÈW^f7Çgxéݺ¬¬‘] Z†`’Læºw³õH‰OsV{y^ #qx+x DÖøy5?²·-Ûõ¡àj¢{-»D8i+{/ÿ€Á†çî]b×Ò™‰T>(+¡ï*ûR]½A}ÔdŒÜ ¦nWö4Z͉;{"¥>÷~Y×ïÉQäŒ\ Ô;ßÞEW L«>F%ÚB³˜Ýò0š¾)Í5 `[YËHQç5¾S¿j¼¤W%ºI×6øšüùCJíø-ÿÝö;ڧѬ—?‘V30$~ÃÏÔðÚHÉȈ¿~k4xKâ$¹™94²U6"èIx›á;埪øúÒ†Zu’‰}@e(ÄLktG[aZ‹Œe7bµœä†5®åX©i™N U?exqj2»BŸÇjW’YÄY¤n…C-‚™¶«!N}äa¯Ãú}§Ÿ3ÎÅOedÇw‚íÎ)Ä«SnçØ…:³à¬Ù…/gÈF†ñš–ô¯ˆé«ôØba0Þ„ü“r°Ò~J­V‚ÎMŒ¢‹#ˆä߆Lu8ã"bcïÃ00”u«ÝÏl ¬„,£¢î•Œ…ÌÎjÕM§')%õ¾I„|ÿVݵÂnŠ£„‰n<,,4nìD”fºÈarFs¿ç,•`YÄìZ¥¨OÖÇ%Ý«%ƒ²j C@ôÜ(ß>Þš°Ù›‹çwy044Ån¨èŠÓŒG…„Gûäôô÷¡%pCCh%þó—/ͦeÙa‘§Vÿ§óÃUí&f@Lq-0QT¼t¹ç}þÖ2#¶¼!®ÛʪâM@‡}ŒŒô|ÏñºÍÃiëa¨8pm]Ó¡®½~dÓ&R¡ %ל€BQ‚AõC}xëݘy”lâ²ß]öR6I0ôüÜUT\<;è3têä hŽŒšxÊ;ñ”¦“úQórR!« ÉÀMB ÿȶ)!‘ ì„VCÖIuÁ®‰ ¯  sÎ>%Hwa·O@­@€…@¯ÅÄÄ0±²sr G¤ä55Ã@™ëŠbT©´~¤««{Î4¼¼Wƒx;¿y°¿S½zäúùógºv _HJn”8wàÞîy»xfoÿôÁƒÚeª6×—.P]/u–;iÑšPUÆ×JJ~ÅÅlƒ##5ŸG35þåP[ÐìžÀ°0¿VÝwC¦­À¼¡Š‹@‘ÉNÝ'S©qd~."%{@õ41OÉ?EFºMjšš2pZN ]{s}˜bøN $Pý,gÊ·ZUõ‚6›Èòï½Ï¶ƒx>Äùoo+×ê…C Õ¤'Ò뻂Ç܈oð·žUDT” „ISÃ\ù…¨=T ØÀ¥[ÿ©ÆÍ5ºï6T}ŸÁJËé—ãÛDÆuô°((Þ@ÙŒ¢©¤·{Âîü>ªµøÃØ3ê2ݪ SkŽMf瀯baÁ½®ÈÓÖÖ&ß?8À"%E‡½’RÖ;ÔW{^¶5àmw;k¾}Y•3€ß©§U*\›Í VÇA }|ލ€§tüüé;°õ…Vuyu…ED„âßëèîn=\; Cèöðf • |ŒÁõYŸîÎY^pÆJÁ` 2#k¥jÛóëÒ[Ð<)g1qHHjÚˆH¨ÀT˜ðžrr:ò ¾y šZ”þÄ× >Ôu˜Ë~'­…o”•iÕÊÍ#\–» #<Ž}¢çÇô¶ Ì¡k“f­Ê+IIƒéº˜˜äYYYHIYbccmÖÏ#e˜s-ýæ‘PÞná儯,;±“Û`ðóËK ‹¼ÍÉ*ù‡3ËÝqÔllor•rây^󠦦N›¨Íý»q”½Q¯¿Ö3ðòž‚‘ß»w¯«¨SÿSŽrC;°NìÈN0ŽPM…š)–¼¼<ÛýÅ—Ô{„Bžµ·Út šÍ‘”p²9*½ê9/3§ èLýû¯ltÊb&µëºÉéX<ª£aÀd£f€ƒƒ»”¬”QÞ±†ª*¥˜ê4ç]BÀcÑè X ˜j¨(N‹4z„†pÖ811‘¶S¤×ÎÐÎnÔ³)ç5È#xù@´I݇÷ï¿ef"QÜÁvpàèI@ ÷…J u~¢>Ý,éýøéSr<6žßãúÓæ´nÁÐ> õDSKKØç¿{q׿zñA¥Ö:ñ­רü•üÿ“Ê¡ÿ%Esbb‘=ý³V”ÍÛ/¤gþbª¡úw¸Ý²¨èSïÝØö‘‹K Ô•r1dh===7¤,++£ øô—s ¥¥¥=÷P‚Çtz~Þ%‚!@åâââqþ+¥¦’ßÄëd{ê^[HD‹?†Ó˜Ö„Þÿr"`¬×Ø lw:¤$`òßnûÝs> ÂÊÊžÛæ8YÐ.ªLDÝ'Úiç„&½fäßæíþÚç×±MG¬ÿÄøÅ^²GŠ|‹o…:šö?æÎ^_/ÃÓû‡÷Oç\Ÿg“ìwÀÝ®ÜOY³W«¯y«º¦YËéwkƒ3P¢3À„<%Zý’‚½ÞÎ\³çU¯w›µæÖ.Rù6°ömd£Daà§w*c¥Hþ" b§Ë&¡=0ÓýtÎ2{DÓ À™ˆD”êéñ ÿðÃ,ÛûÊÑ€½ýcÖš’’ò.L›-ö󓩯–Ž\éùöÃ2&v{Ü 2 ô5k³>+iÑ-²Ÿ8ñ(HR¢¥&v£ÃJ ¤'äå.7W'­Ú¬t[ Ù#yj´Pã_²hTSAïsµ4³.tÕ{\¤ýðWÀAÄeùÙŸÌS%-3óE=ÐB5‡%)”«IÇ·®‹ÍÇØ²òò¢øœ<ÜxiÊ®œ&ù㸬¾tt¼(Rͳ]¤¿†\Äò¢>ü¾¯2ÀÄ,wEÒæ±ö‘ô# Ê@¦–•)®¯¯.>¾/çì\‰ƒƒC×®åy–Eݬ‰òÍ™tÎ*5`‹å-í+'ؤºbX8  MdÖ„M©ì°9g\@ÀSŽª)¥ßS1ƒÇ#S6Ê{1ÿ6'O,¡Ì_.·æky•(§Ëª¿½×Fd¥=^jãYYXð’Ó¸LÆ•á~÷îÝ9kîo}Æ¿áo› Mu j7¿¿ÿBVÖ?àYÎPrqqš––VYžÒ„Îúp{;"šåL¦%QŽxа¤$ ¶¼Ìò|4NãÇ*¢³KKCüªyxŠŠŠ€éØLàÓŸÞnšôbüSa4 LmlŠlÕÞüˆ¹tª4ƒÁóJ|?¢¦;»ãkm²„ùöo‰ѱJGoø+&_ VLÅð÷MN¢Â蘙qÃ5 $^¾ ´„ é‘GƒöíVý^¨ âæX ¢#£ˆ‡G¤‹´tèþ…Ï=”B` 8øø)••¦úúúÊÝ®ÎPIù ÐýïqšÃ`ƒCCs­øZ?úÓ$åàs†‚†r”kâñIHBß¿‡WÉS‚ÒYåääF‹ô$ÈÂϽ\Øhœ.//?&&¢×Lå›v’Ï.«0ã¡@7žÇ÷ôÔYAIÉuòÄ#l¹+0À6.pewvukU áB_lÚ:1XÌ‚SÒ̯/ÏØÌGY]üÙÏ€–9̈°ÞK}ýŽL¹”ÆO_©ª~ý•À§lØOº¿žSð  ðXûÕP 'žÞ9ëŽ \FQhz-)éÇ/,,,*¼ãV§¢ªˆ"ǯAèÜ™f~÷î›á/÷ÓÂlgbt&­zuñpRèóøø´\–“«å;IŽ;ýµpµÐAÃëÀB1ܤûòþZFÒ6«‡ôàý?¬¡óçÏh$ÑdTÎ×>ZŠás²ôòsº y'±G#-33d4‘PSÌgPቭãx¨=jJŸý`ZCO¦×®_Ü¢)lv$Ü3Пëý|ÓÎù‰èSk«?€Úûg3¿«ÔŸ…WŽ?å0Sÿ¶…ÿÍß eý­à°Â-Ñ„y•1;ØqR؆C_€«¬záüÒÒ0§@h¾‘”d Î7øýí¹ëaUQ£Î…#:ÑÙãÿ6~j÷ÜÞIê•åÔ%!Ñ,‰Àüývj  ›~ª Ìè`öÁÚ!i ®š™eHúíúíÎb Š¡˜?weúßÝÌr°üÛPçÐD@Çíz3<ìô(E+™ª¢º¡…<.ì¯Î/*šýßFÀk‹Y[ËqE‚€…fMˆ5Tx{æ6¸éÿƒKûûYa0.Sµßë›Së„Ò'¢ÙYv¥¡b꩟ËÉõm!?ûÛÐh S¿²ÍSìõë×^þ¿³¤ã8çàpYª{ù?| ¼ÏÛþêüèý»<€" DwvXÎÑ Ó齃™1“}I£8 ¸¾Æ¹ÿ([à©©T¡â§”œœxèþ)"|C5Qñ"êX çÄÏgÑ…í €.¿R¯HÏ›uªHBîíêò3·¶feccû\ôϱï[QQQ» ÖÔKhT:ô“9ëõô[\Ôw¿:­v`T*ÐÌûçÜ'›ù÷ݯÏVn€8Vg•©ÂAQn³,Ê+¬çžƒaý@ *jð…émÿ‚ˆš’[¥@î.±·g¥ T ÌÛb¢šý é¶…×b]'Ü,É|¯ ê®rØ»´!¤”ÍçyéÌãyYùÓ(Éóî:5ä°ò/!m­ßR¹¡f >±æÏt­hjVVçÒy<Ÿ“L–ˆ¤==JCBrBB•I¶J@·{tsÅzTÿ4æÐµÃ‡æZ76  E¾•]NÞˆ††“Õ«‰-Gþ“I»Ì¬¬¦÷÷±'1r£yƒ'´YaКfT¯9'Q[Iqo<ÏAy›Ø`44‘! %µàk¹Ïí¿~·ïöâRPP9&–Ÿ5C’OüeGüyÃà ~|PÓ/_®µfÖ ÿ-˜l½^^ÚËQú—¹Ðq‹ÀÐÌ‚[ÿ€5þŽð]ʳÌkI“Œ†šùˆ+)áµ Éðiü¼¼„÷ïß/T̓Š$''굇¡oÙ+¤§·-pNÔx^ñ"`¢ú·¼C#â„ÁyP•GûèaÁàÀÕòõ‚ûv`ÝÊþšw±{ û‹@k ¼ 2 [753ûqûÌéJnñCÃηÐpƪ?˜)§û”š™Yz¹'R˜Áã?Žþ-LpNh&-ýŒ†â5+ëëùùùŶP¢ìsÚu£ Šþo·Նûànùo0°šïp¸*güô+‹ˆó2d7,(ÑB¶¿}ÏõÏ÷"âãC¾}û&sµmYמX*+Jr›—w ³yGoê†õ´îdû] .¬£·jöu˜•{«&¢CuK0íxø!±öÔ81Œ[üÂú^ˆÔZââˆjÍN¹âñ§özcßUÒÛµ»L+HB ¸â`Óʈç¾äÓÖ&ž–ë¡ë"Lñº¡ÆbFŸÞ/®Üòçš=TûR<ëúú: 4ôCËܪÃÿF(/ñbNÝ–“Kr¹ØªØƒú$y$íF7\¦Mlf›/3CBA±S;ÁñÕ´<•Wãqá¨^ëŒE+›ø#›v÷l% J!ö¾fÜ|;Ôž>ŠQù¬ÜbÂïòÒ}qii.%\°ðw@?ò³’kà ±Fz¶“‘ÇAˆv}ÑpC$Ÿ!s¶¸²¢×äsŽa•dò¸’k`X£L3Ψ@û3tð|_«¨Œ.ómô–4?m^³×íøø 0 â¿È1äO†Ûnœ½óØ&©H÷„ƒ_Þ:ÔŠÌdIá˜ùï#–¤³ÓÓg¢®—JŽF6D¨0 É™Ûd ÇR® ÃKªâ8BA}S^¼°„œ3æ³óN\Q‡mÏﯟrdÿKò]÷‚g Ãmt#¨§Gsós÷£!åÓNYOŸÕUc˜wRYÿÀ€NÅŸzqzzºìBÀ_­F,8V×äÔÿ'‰ãê{Öú}¸~DM$BÓ$È€ l>7»úV|SË[¡«¤M·áÙéßgºÒ~ý/±$ø}EBù°ñÓŽ¦â0Øÿ2«²ì6«ò%â(ª ‰3ÁÂææL,Zõ!@ÿ/D)kÊu•[Í„ã?žÆm3/xsi—«Z†¬”ƒ ƒx¼ÿðÁeÒè¿ø8CM94·eb7Yió%âJþö F+ߘ‘äô¸áòA—•ã„£ÑÖ!Uâ_²v7~%`‹Ð Ã3âûóî3†®ï±&*ÙàÈ£Î׿XÂs}Ê1YžÿoÔ»ÆËy·#æµG’O—‚ƒA­©§k]¦ê‘êIœÚ5Z!B°;+ íó‡AíNÁ(ÙØÞ Å"Ð݆è}#£…É*;@]Z &$óóºi¿þ¤¢Xÿ-Õpãèà=‚/T«fk«|Ð( wÉŒÄ gZ§ßòsÆu§íšËf“êvçO×»ý}ÛÍñ2å|õ&@Õ±°±S>ÿÇÜwŽëZB¾³KÖÅ9òýû6/ ƒÿ?¾ ,–”8ƒ'úêÕ«Ï ››æ©iiG™À›ÿ´½ë‚Z2¸ËÍE500È,(Pîú«Ü¼×]f¦¦–fæ(xLPbêkuõp›€×‰JH¸M†ýƒC(2?„Ÿ$®ù7Æþ*ü‚†ð¶±\AjzºîB[(°ûö‹†ppn:³‘|1cc:(ÿªdÑ„H&jkËÓ¾¾ù³(•!mƒB"`ÕPÏËÐÐP–•²òrhcÌS“~hD~à.‰ÝUèþ3Ÿ6)5ú_ÝYae@*ÿÇÒu‰h‚ÌÈÖó¥„к«Aç “ƒžéyhöÏ(á¿!ötö>Ð/¯¶8‡ÿzòz:ÍÒÔ4û½¿¿¤¡a:”'-x¶ˆý$®ûÕÙf5}àl@/§~ûöÌðWÌ#É/LrãÎÿµx–Á[^ÞðŸ)Öaí‘E5|ä@$FŽ«Bÿ ÐñW‹ab¨¢w=ÿ6UÀ¬¶LÓrÄÕ\Èï/\è7ë21¬p&&&P©Ž¨ˆù“yPÜø»Ð.’1³µµ…º!> Ô4ݽU3À ]ì_­w¯9–Ïüw)õÁ!à_¥á˜À.÷÷;ÿ{.€lŒ»»ûkEÅ{ Ì.?uÔÖ&'F÷3ò'ëU3̱†„R<ÄšÂvŒ©þ/þògº{Çra‡Á…‰‰éT‚FÄ*z%ï°ZŒ—Ê´§”_·ÿ7ûލ½o§´Ô¡ˆÐÚñþýûÊÁûÿ<á Iô¯ôféásŽÀ>p´Ñ23|¨¬ñ| štå­²¡L7üEæUR«ˆ=-T”'™T­PªÕP¿E·ˆœ—w<­Äõ=@=)uðÕÑÙ)ìî^û†ô¯¦¥“ZO¡Í=½‰ÐøÛ·×764 XsÌÿ'üBø•ó+ðƒVÛ¿[¢DEŸ6n%^W¹_µ¿ªp÷²xúôi¸ƒÃÕ>6Àö‹T˜æ­¹Õ×ËÿzVâUÕ_¦_ÈCÛÛ„®OõrYÆ£’ð*@5ªÚÃÉ”»þk¦b]î‚‚¢Æiç àœÙ C€Wþ¼ž å#F[ï^B* zçî]jËÉÊï®!¢waÈ%Ç òÎt"pËœþ_Ép;ÿÄhÐV·©}/ø`€ÀÞ´èÚ~ƒ‹ë VP;¤“¤óʭ»IdÇÅð¹ ;ó n˜˜’•½üÛêÇ£¾«'Èjë‹\ÖI*Lh€Âf¼ÐÁžê=-çfC$ëè¼Öë¹­/êWÁiâ€ñS¨¡N[ JfxH*”f @ê1ñ3Ÿ¾ªª ê=VªÊ `toΟÌÑXVtwܬ@~ff& ­±QSCÂ|f†¬¨¨Èš›ØrÁÔ¢u{ªjë‹Jĉ È·ûi¡ä¤…—ã&Tô4:zÄ Ž&ò>ìÛÀÚg“ã™­‰î™¾Üû—¥»Ñ/«ù¿µ¥`õM¡xçªW½Ùt¬±Y­!ü°¬¨#£ÃÑ¿¯ÎÍö˘™å@itlãO³23_w•›Q,wcÇuÓ½ÃøôÛbýÀ‰Ê7òòÔüüêlììK€gL 3WÂ[¯ùP›ôO›Pø4ËÚaúcÅoÔÔ›Uh«ê+0$'gˆ!C&á@ø—/_ÚL<îƒýk è°š‰ƒƒƒ€Ç–êO¾MÿÜéðÈÏÖ`|§„P#½ Y½áÜ·¯bÅS„úŸvÝ`¤‰Áé Öhιpº·ð{ÍæOü£µõ{aaáÏJ¨ÎQiéSþËÝ–.#ˆÂµ`¡bÙÄzßîÚlrN!´bk$­F/Tün\7BJߪ-ó/Cv¨dUg$í]˜Ì?’|'„ú`¶·i.¿"õíƒ Ûü-Wо*ÕÿÌGå“Ú€¤øègE:ÐmÇŸkñgLÛr !x’<°X”•uzzºŽ° ˆ·ŸiS_¾à9»¸T ™–efgû„‡ËV\a¡ißZËj¹ %£™Y(ñšë¼@¥§§'éòº¹˜öV@% òî…¶N*(Àc½ øV]MhÔ›èP3ù/Û'«s hl6_Ùٱþ•––ŠŒåý(b6þéÓƒ%n>¾‰¥±×É5÷þ–NsÞ÷Xî“ÚÔÊ–fƒ'‰/"†_Ë\#ˆå0˜ƒƒÃ«³Bmœcb“]²Ôû«ìË Õj{zMÏ3}¨T}êàÉÙßʼnZ¹¹œƒ ø5Ó¿Í⻘‹V@ec(ªó i´˜¨ö T‹Û½«¯‘º?Da¯?•™P<}ŠSbÔÛÍÉÌúbPððŒYhßs>R†*¤PðóúBZzëà‰ÅT5.´ ±Ôd`÷¶l&¯ÑTµC · 4Õ“‘èzÛM])_}l¥kÊòö9À`;ÝÜÁÌ:H^üßD%¿ þçU¬Õ|›šME=aÛ†ÐÄ)@‚à Í®céKûÇ ÿ²t«wòG^+Pòð<N؆۲ô/;¯®;o—%ÙƒºÏ­³ÿפªwÜÏIU׌+f¾òÐr‹š¿ïÌߪO à=~4¸Ó$u€Gÿt”J˜ìF½P·^çÿ“¬Á[êͶžð^,¿}û–5® ]\\Ü­üŸæS¿ »ÙcOuÿ™P­´_{p;yJ¢ÇD5”A ÜÚfñ%Ô"2É뚪޿P¯§«‹ID ¯µÛZŠR†Á”r陘r{ç¨ÙÙ±­8tsEMéþålêôÀw,4nˆ' xŽWlÙLÌt²‡‘ ¡'È Â ø«®N Ô¸bÅ̱SJ”½ °° -ÚwçZøB³2öœ†þ™‘S€»ävÞ%§‘MD…q{œ?¡ëáÃ,„d¸0èÉËÍÈÅñ›–£ËWC[_à9(oáâáÍoUÌ´}¿i¨sÃÚ¯¾€]Oá:àK¿þÑdß)>æœCó”Ä'Ô¯ÉyƒÆ!{á^©æ8R~9Ít+wà+Jš§¦8ÓH)zÙC1rÞ ¯[‘俾—Rüaù±‰¢ÔÖ_ñËR­×éy-SôÒÛgŽïvŒü¢¯¸ôì8“y–¬ð÷ò¸<fmÌB®¡©Ùõs$º¨Wq§@ü¾Jë_V-S íï“©ÀðöI`5Á6y{¸ô;0——ŸßÖŽîê²¾:?âlð̨¬$¸8Ùi¯s;ÁÄÃó;;XqRÉÎUó¡ñEn÷{Jˆ¶¿¿Ÿê¨ªJ¼Ÿ—‰ŒÂHoïv‚_WiP×è ð;àjï:õ›°Öf%ôefyÚ 0%¨F@Ì2óóË×ų¨$%% á¹¢bTîȸðç„Àl?FE}èèxñùóçRzÁFÝ?çy4Cù¸.W^×b´N5Ð` )¡,;|ü‘å=ˆÓ›O”£͈N  K«+1j©ÊÈ‹+±[‘R€ê â‚þT‰Í‚x1󦦦N Bé¯TR"ƒ$Ö½·ÞzM»Ëû\/É;ô]̇uü“?àέRCSSÈ’[É|›fû°p,{d¼ð¡"´È îš„ËÊïÆÝÀ§ÐVpÈ**ž÷à`ßèhå#¹Š£„ˆã6Z hÞöfíÂü1[EÃìºä=C9ÊßÖ`0 K=²°±´ Åg–W=E>Çù6‹*ÍÇ‹Ï[v€ó;"¸³Ò“à«”#&.Žp•ÓbP;TVÐ&¾cæ0¨S Ôa]5ÏO&£x ¨þ )©™r)¿ ´„jû%¡:<9EwïÜÁ€‰w³¨qé?.8™q޽Ü+ù½qDÀïÌ DgÚèÆpžoAÁc`!âz‘vuÕ8ÂàJÄa?³ä[¡²´i¡¡¸ìF=8À¡)øøÔà‚23é½Ç$ ‡²`Z¿»‹ˆüèýéb¤ì{ÀIA¨K.,| 5{^0‚Âs“L¨5P8µëäæRæp¹<Ÿ§Rô\AA!ÀãâøåÁD‘ž?.MäKHð—©9íL+éaWeê©CÁ)O‡ÓÑÓÓóDs­#…¶9…‡cÀf/Ï I]Ë©ê{`´*kj ÒÄéü0ïýò À.ÈCÝöæÅ¤bX›æ 6ü¶ü&~æä-pá?ìÀÓÓ³P…iu ã=&hêI<œ Vé~Æí '$4åâŒæí™e\êûëoååxÀ»`™Cë4’Å QÈ€U:nrZM‡ìïÛ¾pP&ÌçPþÖÖÖÕ™†{YEEÜD—åXtFÒ­%ƒ,s·”Gß,æßæ)A®n6dʘÞ÷7Y›=2ƒgÉ™&Ñ~ „¡>dƒôõ¶#^q1ÔyØŠŽŽN@PÐsCÃÛYS—½ @‹•=dç㫱+ŽNY__¿—>OÄ C3yJ0øå ZTTTÜÄÑŠ…ÎGбIIÃ8̆õÙæÚB‰eÑÆï¼ ³´´€:Zl€ûV\ü ¯¯J ïIr RD _¢)ùùù?~þü>;›áG[[W˜Å¿y?7q\‡}ÿò+ [ŒŸïËʧ¿»Þé®;”­ØÜÞ‚¤sÀª`muvvêþþ& UE×TJÀ·oä:eªo ~\O795ÕÚëyÌ® ï;Ưџ?#ö°±±¡sÎsð¡–lª!#…œq­]QŒ*** 2MÀñç]çµÑØÊ¹kû^$5n …zVs!ðòáRØjLþQ7ûE`l(¢í—=¤Ã ÂóBEð•P ±gB»íKß¹,R´ÓÒvÚõüÓn€ ’¶Z-ØøøˆךË×3mÔI‚ÁCüÔ èâ}G¹ã–êÛ‹™z Ýkæ¹EóÃdog\dÕ¸mÒøV3yÚ{ý2ºCs?¤·€Â5ª„¶³š–ûÞMã Âv÷öšÂ…®‘`à1AUmöö |vpÃiz0\ä{= |ˆyJ·EÎþ9ð‚ïA5këê¾lØœšÄQ·úHÇq6õöbÜE@…æç[TKmy‚–()+€Çíabb’w¯uÚ–Ôñ”¥VÙ>ŽûÙÙ®[¤ 8ÙîÑÑñ”w}ÆæœrvãŒPW$ê³óó àîÍÍÏmfá€R`<⸮(ðýÄf^ÔæâØúô ›RƒàDÏäÞ¾¥Jªd ИPíí»ˆè8Ï‘ Æ`O§ˆŒ¤´µ³k]쌴˜äv` Ì@ÈŠœÉ9x–‚ï\ðO SD’9éœW¦Öe8/à¡ 1R4·ý¤€^Ÿ®sS • »5"¨^—Ûñ&póäúzM@s_y„¢P$ÈЗ”¤CéŦј(ÜYîŽKÎÎ~582 T‡*!#9ù·N´hJ Üx–Çö$&æïu~B|3©Ï‘™š™m%¢êYÉØ.” [Ò'y{Ãö€þy1¢°05-­Œ0.{ïýC Šâ¨ÈH_hŒV6QôõkÌi ¨sÔ³€Biii¯s†`¤Ï\]]›Í9Eþ ªÔë\q㸬Ä]\xÄCÞ¥¦R!=ú¦”#÷æ.»_MM ŽDž×ÛjÅ,…̬¬¢ Q‡u`?€Ú~ePâa»¢/»`CXþó5CTÞr ø¡ª*rÔ+.¼l›Ûîó ,,m×W6;Óï?|й¾77÷šûa``PM@ÜÜ4+1‚líþ#Q]Ýd×îúÒð9×ý—a TÖp÷ø/110žçü®‡™C£¢ n[ª‚dv‘^ûóœ¡;ε+¶ç‡kÒ_ ;¨o¹–Àqfs«äŠWT³yuÕ¸´ÕÄðWLßš f?Óm‚¸5Ý¢ÛbZ´ƒë$ˆêÜFGãëêênNÛýìŠø/Ží¨?Œ†R/¼kîf¶/C[=°:Û¡˜\Ä,ânž¥);ŸÙ±8Z¡ˆïúùSò¸ 1 ðDü0ÈÐaÒÓ÷Ç4CÛi“Ó+o'¢¸­zõô®Æ]ó(ìEYDp z(wñ– ª£FÂO³ }m ÃâKó_p2?¨ÊÔééél;™W)%9ù³êò*ƒ¶³§øu \š4BnÇL‡®¤!‹‹úôÇÕ³(¡âwSúFÍ-“óuÝÇÄŠ0[ýC-fflïusÍÌηÎR¼v³Û‚a³1Ì å¸Ñ12¶€ÚëáÛ1[øûëYàxym•å›fjAF½‰èo?Ƽ>Éãø!ÔDªY •tp=b`cc{­ ð¾ÊneJÅ|É \r±«Ò(ß­ô‘ ¨‹ªÞ¯˜'0ïÍMs(íZõÎðÆQ¥õÜwww ªÁ/* okk;^f>uKêöÆy=íööæVVAô8†¢6­ŒöájÌhÅ”êjÂïß¿/¿Xœ+¨‡£|Î=ý;Õ<XL·! o’¾¨æYÛCÕÀåå尿›kM©s>Nì*çªÇl¦Qþð.g9í‰]žjž¸‰ ½CT.–Ó۸½Åe¿úúr¸£]ättw¸­Î5w~´A²ïš°l¯_[]Í øެ§ý 'BŠàââò†™íþýûèíÔ¶Š™fNá1©x;"«YŸÃåƒ òùoïFv¾'â²lÔf%Ô\ç·»j0m´¿?"ç¯?m>V*N)Eƒ]\\Œùðaà§Oü£eÀƒVÛ-¡…*mmr_ß'çöLÕ8W'Ñç\æ£0°÷Ú¡ºrÐ’lpð]دD¢úúúÓPI[š¶ïOzâyî~xÞ7Þ¤m,o™À!('Ûdíñ›½õWɹö×€ý[¹)*Z|_)(ÆTþh2s¦?Ù7œx·«é<‚1>«Š»~åö§‹ón¾#x;Kçkèe™[·Ö«‘øüû³/£<ðI÷ŸO´š Ë8±Ên¹Øß5¸”¶ùÛù¡p†ÜÌ k—è€M½–§¿ÆL0#‚ÿ'—)*JEôχ†ƒ N tM#e‹²È¯¯›^óÒåb2äeHŸ<êçtì&ÐÞ9à÷·;ÐããQa΀1í]_ì@»` MŒAaŽ;vö×$¦eÉÊš§ZR ªœ¡ò\ §=¿/3;ÇåšqÇöÖö¿ …ùK MíP¾cÒÍ%-ˆíÐúÓãúÓ;ÁxÌŸò?–(Ь{­¦Æˆ‹ ´"z»ÛB((ÞÀï Ç$M;Twr³ŒWÞòp„Ë«/ @b^½zµ»;'²VUçòíþÌa›³§×]x·ßÓU[ž!½:?15e½ô¤˜ªl»=U#§¢ Va ͬ»¨Ö–¹<8¢º…2àù-€“†€9 l¼¼ˆØØ@fµòY¨Ž6ž¹ × åä«Õ»ó@³ôP Ý[¡õ渑‹\RRt E€"’wBBÌÇÂ蹮³s Ÿ†š]ƒø5°Oz“õãý}lÀÛ|ïcÓŒ†˜ìÔhy‘”vJ,wÔ¿ÞQàÝ¢PKðÈ«þݳƒ‘œ! ph °„ZþKy4ùa f·Ò# [a Í[ây쪧é5š Ä®‹“=à} RIŽW;0B¼Z¯=Œ‡7ù˜·Ç bmbeeetLL¢`¬P|KQà7"dªUÛ¯=à4ý­ë´³ãæh_àCi.«é@´ïÖ™¬´é‘ñP‡ˆ¼þªÙÏbåä Àbþpm GÆ7@):ﻆE øy.x¨¨~@AÑr{²ªGæ]¦È.òël¤‚«ä)e<_,TÖt¹È8EfÝ-3¯*gþGÉ™ªà¸·7© 2%+/úÐBwD\`àõRLF4ÿ¹¶ìÿ}ýÿóËÜD×ÈÚØÊÞŠYÇÚ„ÅØÞÂü±½­ƒž½––ˆŽ…­Ž¸‰¹ÁKKC«×¶Ž&N,¦vÿ§ç`/ΧO¡?Ÿpq°ÞþýÉŸ¿ß¾}ò” ö„“ý 'Û6+++;ŒüÿªüÛÍüãÏÿK^Ž:¶äÿíó&@VC&/5r Cs}; &rŠÿÞD +¢Ôáæb3|ªÿ„“C ·xó„ÛÝÀÝਫ਼.8Ž¥ƒ¹9¹Óßol`bdlÿ?=>›ž‡!7«!'§Ž«>—§¾!ž>;ëSÖÿ<¾‰«Áÿôè<:ìº\¬\\<úzÜz:Oõ9ØXuyØŸòèpêê<ý‹£ÛëØ;üG‡•Û@÷©>»>›áSC.pާll캺Ü:<ÿy|{ëÿñÕ?e3`çâÖãÖgåääfå`ÓeçÑcÕÓÓ‡çfÓ×çúÏ£;™èÛÿOÿ„MŸóÉ.VvV6¶§`ÌuŸð€ãÐçÏã‡GÖàû1öÿ6üÿûzV–öÎöZÜÆZZúÖZZ&–zæ,Ö–FÿßÄÿ'ì\ì\\þ?á‘à ÇSÿŸ°>ýñÿÿ¯À×2hÈ„Èà-ÚË¢o`°»€Œ»#ÝŸÄÞ# èJJˆÂn ÿ|«Ëˆü{Þ®süæ” ¿ÂÅ â.{pUñκqK7*êReƒ¬Tºb<ܨê¼l5“"œ©o’¥³*¿Ìk–v}¥’þ8{p¡W?svÖeiØóËYè¦2¼*£7þ€M¯ÍMðà­5]ÅŸ ôžkÒ#ùÛÅZÂ>püy‡úWïžýà…þìQRWwŸm„Cþàã€ÙȲ¸¸È¢^éí€ cõöU†¾(!*ú>+km¾5¸ýÎèst|m}R3èß¡M¹”°òŸ?ÛoŽ>É•‡y£è¡ý9ÍÝg:ÿÛwÞuLo‹ßEgæç_ô !:àã¥êÊR#"j#}+D€Á³†ó5&œ|{zz$£Ybcbr5ëÎG‹ôÐÐÐJ€pS­´~T“¦û†0û‹3 Í­¨§§7ƒtõtƒ—×þb'—åîÁ›‹K_˜‘¾þ¯D¸©7EL°»;÷`«ÈÈÐHIÐD‚£_ì4¨©¨¤¦§÷Kàƒ+£bf¶ØÎfÑ ˆxQºPTT<ø ¯¯¯”’„„(¬¶¶6𥃽½G/À©D1ŒŽV&''·# ù¤fdÄ}ýš861Ñàv‚.ü1IÈkÿàü H1;?|¨Ìlê{ÄR—`Úù‰zmm ïPaêÎÇÎÅÆÆgª;•ÑÑʦ¦ëçGàp˜ð/_¼(,,4¶²Úq,°ô¼j‚ƒ ø4‚øà￲´tvz Ør_Š„ÆÍÚt[{8YƒõÜsOÏë>'cÄ’âbËéÚ*·“mFåüßaïýü<Ïö['&.€âÔªw¯ò¸àÌÛkñÇúÜÍÜ›< :::?Ÿe •LÈsð÷ïg˜`\¤åå#§Þô‰‰Š.®¬\€ÓqÛÌmŒª–·Ë?BÚßi¸A€‡WyûV£ÎWø£%нÊoÞÌolllmi¼~=»³S•Åc6Ì$$Ôp~î*$$„®Ïòd}y„Œö›’. …†”Ô¯|`œú[››Õב¾¾¾>>>Ÿ>õƒc.,,˜ V˜5··g¤¤ LNJñ}úøqvs“‰z­lnÆüø{ëçÇ/_Ò¤„ÜOÏÌÌ ã ,--r¶D¡zuÕŒ¯‰‰‰ƒÃ‘Ðõ©ˆ¦fýŽYìׯa„¦K]Q¥2«–‰B^õf#,÷ïß§¦NƒhhhH4¿¸xx¼5Qçv.ѱ?õ¥‡ ƒÀÍ,Ì›´éË2x1ùÕÕªJJ_ã<}Åed¡ ¥ºººH>³ÖÜ®%ãããùFß*6+š€L~¬Q ŒÏñl ê;\QÙ¹øD¯­P1Û¨71AÈ‹Tøcg$­“tZ~þôNÖÖV,øGÜ®}554ê,§xÏoö÷÷“éèè*]Ö?~ü‡¾s}„ˆ;Dúcå´,,šššù©©ïÉ;Nvfj®åß¾-.fó!§¦¦[êÛ0l .íýstô€ÚñT>X8)))Ðï)’²²I|N,5iªe¦CÙŠ9Æ\–“à!g}ûæMÞÇeUïucil<Ú^vžï$&&Ö›À'‘Ó¡¦ªjjffíF7E"ܰû«T_DŒc›“wêw`ÏE ´aMx÷® Ú\ßÕÅÀÀpçÎêëðWIIÉÏ+×½y1«éžo99iB¯í­-i«±þþ~µ»8bêUºææLLLêûZZ Ãýýº ½Y+ òrrÑÑNà çº$u9‡°óós888\\Ü™z>ëÙÆ«‹9·ãÜ¢¢½¹ÿ™Z—ȯ_Ï7ê܆Û;á`uïn1OÊÈÒrzrrsu•ŽŠJßÌìboAâ\(O¥¨¹»;//OZYÙ U]BSs39ycgç}áÔ’_~«²hÖ:_ ƒ nà466ÎÌÌÜ=^IF=ñ<¥ïÐÌ£ž<‰ðt;XîÉ×°³¶&ì”üÂô„ƒckAU`PÚëê(:%EOBÂQB‚†¾¾¾ˆˆoUOÄ {›*ë¹æÁ,ùö‡Gš+½I'ßîÂÐý“醂«·. @’—ÈO›+x#/<<=3³ƒ“S³H‘~ç§ú…ÍØ ð/PŬlV¶¦×˜Ð­GGE9ÓôóóFëí [Þrå¦ÛŒE†5Výk{µrs,œÉZ—’ÐÐnÓÌÌÌ&í&ûä¸0o¾ÆÛ£´°}üN®½è þÊ÷vHÁ‹†ü 7Œ¯éÉ„T=/³sÍsó,²ó,H¹,K³ÖÔsíàY_«Ü…Á´½SS© µîˆõýþ†þùŽÝYg,RR~ Œævÿ…¥VðA€èûhüöŸÁ”À?ÄÇG¼ ÞÖœT`x#/òå#9›µ²ò½³=_ ™Ù®„f!®¥ùJ/¡ƒöðå®®$!Ï§Ê —¹¹æ§{)K+½œç©âü¤þÉ™>>t8ÃÞqÙóƒv)+GKє̪ÎÏã‰&ËÞkÝÜo§D*¶ˆ;.3S»‡èÙN&Ù›t3Ñ·§¤¿Xc5cš¥ðyzI”|ödG«Ê>‹W¤Ù‰šž§¼¼œ‡¯&DImàZM~€€,Éîh=8>ŽôÞ=¹;ïäTHù”´Áð##'wv&aÁ§]yO…Ѫ¼ÙOÉË“óÆxNsØÞ{î[;˜Õ(#³ÖÖÄîßçÙÛãIR¾njiIycä €GºµÓ &/oàaaA}vF=Yu «¨Hùøq„躠8qx;=]ˆÌ ÑM´-C££ùY.ÉõõG# -ðwÞ=ÿ€óµÇÁN­³··%–+§8Ti¥åüü9‹Ï¥l«0ÕƒÒ2E>>ú›ë‹Ï¿Ë$±äääçð¹œÛ»ð'Ñ:øDÀÝzÝff}ýÒPN¯ÍXQÑXh¨EPPòøxöù9aw7IXØ÷C!ÍÒ± óóuüÇ_ƒBHOÏfêßÖ¿™ñ‚ß™²ûÝOhœ&NZç`_;äOLFö„¹[ä•)Ó[¡¸ÂàEåøÄË„„›³r8ÿ–³Ss6ÎÄ¡añ®_La¡Ýa È€gµ°P¼ëKÿà^a(Z£¶ð-W ]\Qnk7¢¥Åÿí·r}—üî_}½_v6Nž°ž^Ÿ¢êÓˆ "þÃæ3õÆH#ç½+‚‚{aofçåªól­1·œÊ!èOñ6„„èÛbøªYsOF1â™\·m¢æÊÉ,.ãaÅ…^VìœoM¤L ²/.+QÑ,×;GÄ%j¾OîøT]‰†š.•È*m C¸;vfV;¿:N ‰âHH®ö.Nä䚨%iÖ6ÌVW¥<˜¿)«‹ˆpoSæ'²IþQf6¡ @åç¨#fa!¢«+x¥:‚Œ´[ëÙ”?_ efoßcO4æCŽDngÛoç¤Õ¹ cÂ{xæž¡´ôVsl¬×á0ˆV<<7­Á“?~Lfg‹ådh hˆˆ|‰2#`º¥QÚ)¥¥ÛK?/?öÁl«¦Ê« ˜vxÄqx4ˆÅïº ³MR¾ãÑ6ñ•Æwеµ-ãk¹ii"²;î..#ã„áí$<ÅŽíè sñ.³=‰¡ÇG¡;ªjØðhh±²NvÛ‹­‚ƒÃœd<²ÒiÖ6s…>ŸEÉ&Õ{íÎJÛØäÕ^rƒÇéç7°ò+Ö{¡ëÊæï{ËW7¶onîWVnVVÆçæ²yz&~@¡]ƒ¶–…Që#J?Òèú0*(Qàbr„Kçи~Xé…óýwÞdBš‡­(N4Ýo/ÝÜ2Êׂ‚’,ÜQ4 ³³;›„OÀý°F†‡)éêw¼1BÈÃað3ýù´Q´[µ“ÿý;uš·’ìÍ娫¤ÀÌ”Î_,+ÌLÖ¬ëIð£=6Gwä3º‰.úxól¸'ëÜŽïji¼ôéÓ>§%ê3Lÿ–pÂV|¢ó9‘¬œ©{(Ÿ 4§(¨¨»X7w®.>eÈ ñ»ÏMTíï/(å}54>°j ×N@ýá¸ÝVBóóÅ óÅ7g+(QA=ñYÆÚß¾çåñZ|å/ob` ,·@a`λØ(È+%<ßžò:Ù¼ß>gÝp#8Ðn„½Ai1CJŒù¼ck¢œ—×ÉGß êíÛ{{û¬& ¹å>EŒ’åa®âôáÃPW×qñ†Ø¯=z§–‚0TâÛa Ä.ÚX7qu]ÿùEzˆ†bÃÀг¬½\é5f™-?¿õ’w%7BN­¢ÂÓÕÕË*§[¢¸² Å£qÞÊoßúGœJÞ5á gÌã#8Ù1òûp5ðûwv‡ÍÕùX޲,>¦·´,çWÃuu­G~Ú÷cÅŽhmn¾k¸¹NËVÎ7Ⱦì…ì#¦¦ú‚À’vzì噃6W ¨£SƒÓçòõ# ñÝ!ò_,F?>Ø™é »æ6Å™ùÊÁ>\$à”ÿ`¸ªé¤z½;ÐÌoŽ-q€@ÃÌâP½M‡³ËÞ{uù 7Ÿ„Ïð‡Ò’gÃs‘tÒÚÓ¡Cü_ß(˵…R’ߏЋ»ÐPT4mñ£¡±{rFq'äé-ó —úüjtTvhHDƒ`<~ì"-€˜èèšõ¿„œzôAœPi®Ói»–þñãÄæÌŒ(-ˆTìfÎÎkÊËe4¦:ÕÊ×V3m†ßÞr*Vrs>p´ÖÖ²/_Fˆˆ&||ry\· ¶òwÌÌâ 4&ªµß± Ûp‹»¹­¬µ4_¿”¾JΤ«6þ;¦®3'§²rGý¨[_%ÏÈÀ§¦ÅÿñCßãì 3›ëÜspôñÅê¶¶õy[ÒÀAˆ¸*¿§TTUµŒãWõär±Çù;£Ë+(`ã[«ª™ŒÓó92}p»3ü¦üòçgNÒ/_º€XÕÝ}Xi±îsA”‚vëá×å¹=íÖ ,@ìºëC´ÝÅf}°D:nÙÍ5_oLœS=¥ªŠ’mßÂz7grrg ½SMÍŒˆ¨w¾KšnãÖd`˜ï_‰ y0¤ôŠ..PöIJ kié-u™°±™s±Òg;êˆè âÒ¬ª&¬¬fY¨ï>KäwÙ™ÀéQ}©åe8ÿ^t ׫êÝñ²Ô÷ï‰ïÝë#á³—’^ #l¥Nª‡)A#ï•Wux~d4>»€ÕåÌxˆ„ÁxY@¸¯Iýð©t¾©œp•/ kaâᙩ°@¡ÂÜVФy©Gâ/†Ùckü§Û Ûé™ ÓÓ¼<ü—/ÏiÜž&"sBJ í­‡‡ƒ‡ÚqRàhAmmPžÚ]¯¹,UdÀÀ/g瘕-]‡c2½Vyð`ÿ¼-TÄg"®žŠ’$ÄM˜·ó)”÷Qn,ßX~ƒ™¶¤¤ÄëC!‘UÚçÊʺñY~¼÷K—ާ;k'3s°,”½¡Æôê_¢¿²²ÏéYýÊiç?QGÞ»WåH£Û°zp¯1‘–æã@ì8òû·©ѧDMûíøµó£àwÈ(9)××ûKòá$쟢Éü(¼ŸÜ^wûÅ1%u9 =}8 À±\¶ÀjÙrÊ 33gC‰† “'artƒìF‰ZUûw?ê|)@Á qÝÝšÀ@DÔ¤„ÞÀ&ø*—Uм-Ü(È kìX€6®ªTK„OWWû™˜H×ÚÄÜ|ÇÆAV?VÃ¥./¿Ô…‹òè0°8àn/:6ìV’ÁƒðØ5iy¨B{gÔz\¬ v¦¦:êêŽ@+µµE@ TPY¨ÞlC¬=ì¡pÒÆïZùZ·ÝÕ>w.Ksÿ„êØïÅû+EzádBžFÚ¬K¿bÞ¼Ñ+’WAƒëùmÚO"t~¨ÿkfAðþGôôïxðþ„¥³ý¬h–X¤ÆkÇèÏŸŒœ$55©¸ +XQb¥ê™×.Ïb:#Ó<Ü9éõXño­–ÀÁ¹Ô CO¯Ägmšùƒ }}µÆ¼òW"WÇú ö/Ÿ;ä¼-ÑNE+q¿V_Z´¯ùöm¶ihxx|—±»õ6è¬ñbc…·_Ýj›¶by¡ßMŒËŠªöŽ·¸¬v¤•eZxÑOÌ,·­m‘¥¥~ñÙÖÅŽñ‹bf‹%Äüè|l^šžÞÕ¼\¨Tq;'Œ—ú9ö-1QÜÕåY{P €Š¡ïn0bM[:Vzc]8Tj²X ýkœ:ë¹|].‹¯;kUèõÚ:‰Àtâ-¹8Ë]\b™Õ8ïmp{ïÝ^ò;ú³ˆøK!v¬²2Å££!@ða3[èZºº‰ ÙÙöÚ³œ66£xþC ¯ÌÛ:ÛŸ5\3008çõ÷ﵓE8í\×èµS``ˆœ´Ü·þŸ…ÁMB`& ý}­e¶_Gíaš%†mP– )Ÿ*Aè "îƒûMMÃPLiŸ3þfãÔ‘L…©õ<ÈøÏ,Ñ3Œõ 5ãŸ2F¦f9ýnÏ0°õšŠ»ÌÓòó[Û–Ûü1Ò¦§ã”rcÀ/,—$ËB¥_¸¸$DGe+…Ý%¸ ÙÒ©V÷LL> ùü6¤ $zwE³Ø¾ ‚”û¹ÂòŠ\ñ}¶X×Å‹¡D›[Ä*÷ˆ:ØeÕˆ:[tœ«}}ók.^Ýë^v†®M¼úø¸HRûúȼ¬0qqÕ‹õ?ÖCõèQL`‡(D.,ëd¨XN*)~x‡¸ù¡>ì<ëñ&Þy)¬ˆ¹mÒ"Á„˜w[Ö  y–æðXk9#§Ö9b¢¿ÿ{6ƒ€Û1üj²Þ; M6ÇÓ»ŠJ¼n˜Ç‹(UÔÕWÛÐÌÝF2I0Êj¯ã§d­M a=Ù‚ñí¥~ÌgÇ*)ît%ò¤Œ ôŸ]ŨAÉÊùµÜçcm¡…•D5×uM] ™@yŽ—å©ª2@t:/ϸ¨Ž Ž$¯VÙ±Œz^›§õŠöÉ-,}¸G§’ a÷èzUŽ’‘Ñ"wÁûº¬ü“ãVõÁÉÌÛímÖšÏU¼¼Ç„\wç889yUÚáD ô¢}üXKIÉÏ!KúÅ £ÃÕ‡Hû--z9õõm¬þÕÕÕš`$äÆÄ IIŸ`E”¡¡yE¾ˆ?L&øX³ö÷0é÷$øYI¥jÛ¥Ö,yÙ +­C§tTÛ¡XšÞ2gÍ•Ââíè<ÛÖH/Øó«]ˆ‰ùüå 8>ú%öŸHÄJ,111ïýýãbb´Ià%B†…U ¦hù“¸Çlœ„ð…Eñähê×-ˆ±"n´ç&F¿¦Òc¡ hü,÷cë}‹î,Î.Czgw^a12U ˜-‰RŸ¿ªà>µI^쎛×#ADÅÉAº ‹åËË;®(&ÖÜÑqÑä+€‚]Z:ª=<‘0$Ô=`ØVÁ`¨Ÿ w3ùœÌ+¬FlëÖÎ>¿ú°S+&-½>V2Çóhý'0BèðûÅwÞ'»*[ % GùâÅÁY®—`öòU˜Çéo¹—/Žr1o¡ Û<»¹ œ°Æo‰z«½f1æ˜/u¡= ìBõùó;NÛ›ê¥/†&'…ÖÀ÷…´á”a£wÐO’b4L,ßÍHM]술ljjºÛ€‚òƆ¹TÛ»çWËIzeåiã»»8È÷6ÈQÙ=ùÑÅ'NwòØe[s;ºÿëöC#â4eͬÙÝúºb',­hèk¢Ëæÿr¬qW8œ¶Ù:5•ЪŒƒ½Q#,!áïëë[[[[XX˜•eâpäUNAI2ÊŒëäK»1‚tõb„ ׋íµ«ëùTS‘LÓ‹ÚÚÏ&¦´²ù¾Ù®äýýÐ"×{¾ù½JlZÏ™2É™VêͶÐT „{0Ö‡>ässsWåk'Ú»2¿GÒÊöüúÅÄÈ8Qíµuš­˜£ª¦6ƬhÕÜÒòð(LbÃZ·#Ëx¶“°Ùäáõ§5.©†‚ùwÚ³;fE[¼NvB£#lî#¿2T jTù­‡skš»öZ™¨°bdd ž++/wttü³*÷FZz«3’öð 7ñöÚ@Æúúúüü<::úÖÖMì ûaf111›½oßÈÇ#ÊË9ŒŒèééMLÖ4jË**éé!QPSmŒ‘#=ÀÆ.±š©[bØÙÕåêâBMCCôFMÏõЮüU«à躎Π-ø¡Éò¯Ø;wî¼zõJGGçpaJóNÇMý³Õ9,ø5<ßéÜ’’ƒßßEJ{lÕÔ&À‰Ç—[rUO Ú-ÿªvØ£ èyÉm6Ì„ˆˆˆ#f``-pËÉaÐk8‘)ôèPÅwNoðDíÇ/Ó[[$\—òpm>Ñ\0)®Åæó«‹“Ò‰‡bÓH½VT¼:Ý£ÜêðÇ s5ËJN~Χ¢ª”LgñgK+êóçêÄwÓŸHSÚžR=蜘PSTG„!›5b¢¿XÞI¢£\°Ý›ŸAå!ÒÆqv'Â’»–àÎÌÌ|yû:¤,-hu3{É÷"íMMBdxxÁÆÃUæµ'®æÞÉÆººP}If&&cŽWvv%ß¿?ÚJ¥UœQQW)émiN”Öòº»¶‡ê·êë3iÕ»7ù܃•¾Ž—µÓü5)©a#ºœHãñãÞa@xÞØn—íL׉ü¹Î„ïXöUÅÛ–.ÏÄ0QÉBм=pqp~[..-Ñ30tuvââáõ‡¹Ÿí§U|acc+hŠˆøž4w°Ò{øÅƒ+ $d²Ø@òÙ³Æî8®´ÔT ÜßÖ»óä=¼HÕeÜ<(,\‰,ó¸p'ûîu}†(ü1”ˆ‹—›»Öój¼·· B!((¨c¶³£Ãýú2Ö1ÏÏϯÂjfÞºr}ÝÔË ZÝ_·w‰”a@Ö ( œ·Øb¢\xêý¬Õž$¡Ç44Çg+ù#oaJש ãÅbƒY@wz¬EÕóÎ ìíQUY¹¸²bd`066öVzqóòz^_VeffN˜ê†……% zWTÌ”šÈ[Ñ>åâr²µe`‚^öŽŽé—À}¬Ð^ãïqptÄÃÇï½(h'+Шùâˆü’£1ºstEg.€v|,JQ”—· Éç)G_˜“Ûýã€+Ôjé8NàŸ¸¸¸K‹‹PjGš$’°S¿÷ï¡WYié¡›êvcžG"¯ƒ€€Çü@$¢Ç%ü_¾¨Òʺ¹ Ö90ân0Á„1OŸ#ÖEüxq¨((ž¿}ûVJêרXUôšjm“’’’–ffc{óúõÇi6VVëËÓ=]]èv-,,ŒkW”—óòò¾º}ñòñ ¨~‰ !¨ÃÒŽÕPoŤVâi{ürè„ò×üwrðD­Dâ3Fûø1&¦¶¾þS¯k÷ÒŒhØø ÒÇü'«ˆããP!yjjÇÍQ`\œœÉt„$$6󢂂õrÜÏŠw2>yâ#³í–M|1ÝÜCeb´Bp{ä÷xøåÂ.%ãÆƒ‡g_æŒ|ïA4§=Sèz!ÀFÒ§z~þ”ó&9Éë”–ŒíXêˆ8îæYa¡CXcWóWQŠ­±‰çÏŸ'ß[h×z.*&&ÈÐôtâõÙÊrw222wïÞ•~ÉËË“‘‘ùôé¥á\Nžaоyóéú,Zkèáããclt Ž5Z¤'‡“—•õäÉ ûÒ0Ó—/;}|î”f„«`ii‘‘±Ü-âää,•EîÀnøkveEYQÑãxóaP28ðÓÒ`÷‘j=.ÊÛ¿LžF¿{ù#(Y"ŒÿÍëÑÈ[B"}ßùrÉÃbÂä¼>lMT¸­ggg—™ÖÕß+ti÷6[«¨²Ð°×ÿƒ€¼ ¼Þ°yÅEÁÐè‚2ã!Ñ]u«=€ØÉÉÉ tAÀ¿Ln×°é… ™Å(«Èg NÕìdfVz¾n9ð…óùû9ã¾~å´šæwÜTyùò¥™Ù†Ÿ¸ ˆLsIñ?ß\µ~àpdÚŒ ¢,,.4ÌQÄóÊk«Gـ˯xA ÀàÁƒ¯q4ªl—bٌ֜ ÚH½úY Åå>‹RÄÅ]ÈÆÚ®nŒÒhÜ9Dôêö¤MÖ…_–½¯ŠÀ1“±xtoù® Jþ™}-/ßòó§dN”ÎÖßx1•’•¥¡u3ésÖÌ ±ôŸ6· .< ^^¨velæÑ¤ „›% ¹C£àH•:-~á¤b¢¢Lꕯ¡4krFöâ¡‚ºoä3yj|ú]a$\¼|ô@B$î0m¦µÀùq£à¹f9j¢Vºî߯ ͽN ø[¬;p­|¾ãÑýó£ ß®FÝOŸôDž;êD¹8ó7òþ x¯¨Ì£Dlîö;fiòÛafÅÑ'G8Å<AKr×Ìq&oðÿûu.”­r!”MÏ÷$ð݃‡7¶0v5[À•;&@~ŽI <çs³Ù»üÊciLØñ;iŠˆÉ©)}ýÔÔT˜Œ½:k~){ŽIÅË« pEJ*¤¼^±¢µÐS£r˜1çUÒNÛ“±Ü6ºvvvnGD~ß I´6>iEml‰!6 êèt'æP1´ñ:ïζ…źÞWªwS¯Æa|¼óõӛƯ?á ïÀ¸ö÷»~ýr?ZJ‘ò÷Ž(ßöÚÚ8ßçÏŸ1Èã=¾:8]‰¥•‰‡Ú|û…䣠¤Ôoš…‚ÏÂOZzzzjj­ËáL½‡ÙpnßÀ€MVv¶­Í}4´4A‡:åßD­K ÀÚ‘­©©) sóZžŒÕÀ^;»»R®ß=r>ZJIÑÈíâRUSÃwà(@Œs,ÕJ·µµN,,,Ìç¸ÙÈ‹ÒÂÍ·‘§ÎÓ=}mh`pBò[Gcìnãæ¦+ûKŠ‹+úûçL*ÜÔN²SSáÅä¾¿ì· <.¶Vô𨋟,5#xe5¶à&i¥£r×5q~d¥®}©ÍÕ*B˜E M˜àˆ´cç‘[~PGb5=ýKQÑÅÙ&ß_õ˜Á3_ã&ì{r5="D)J6“)‰•ëöàAðwÒ½ ¿.ÏMìûëÕØš©gno+‘ÅúÚñ‘ â6®?I%ý§› p†Ö-–ØÎCIÁÃL)$ì×#~õcV7×넎)÷+wßÕhÑ %M{*ßïä0ë¸|3¹—’’øøøaíííˆðð¿-OÊ·qIgFÜž‡£(G}ùr~~¾¾¶vt1äe¥ó;ר2'ÿêЪ$ûE-“¤I†¹ËÆÂB´ÁD MpZ—€pÇÃLJ‹›–‘HøÐÐP_8¨bøj°ÎUµ5nÔ«²âb[[[d”àððð  ó#Íô,W”»£oÆ>h€ÁŽK-§6ш kª§óò-›yQN !m¹<7÷·¬¬*ÝÖ ü„.t’¯¼ëÍ€©U~e\9"`cc¿};V Õ@d»;+ 8 aÒÒÝÀ&“„¼®»¢988¶··IU.Ð,++Ë+(Øq||®ÿmºæè¸Ô…+++KMÖØØøñ#æxi’ 6±¨NKEUèvB‚#VÔÓ¼d½‹y·Ñœ›˜…ŸòÇø rJÕÛ\Rz‘é=cYQÑ»²÷¸ï¥h¶¢^ ÀÇ#µ8…ÿúUÐÖVßNd5•ÝzžN,š{’˜”?ëÜN Ã`…rªª Ćw¦õ&ήf®¬=,³_Ów9³‰Ñ'¸ÿG\ªˆªª~}AeÛ~¢ì\ j`j Œ S× yO޲…Çil.enõXWáùq©vÓ\–­y]L’+›ÞÄš¹9GÖÞ˜—?”šZMI öNË©Ã˳vZÙé´ŒòiÑáü«­õ¡¹f†ì·•»Ÿ:±#«he. Q½nNà|´ˆìî³©Õ óQP´ Ú³ ÛTbß®²ÂV%ÄÄDž?·´?l_\tÇ´aÀm]ˆx¢/ÏJz}õùG{8>#K¾Ç)+;=}ïˆÓAól/ÕßÝ¿bƒ””ÆÛÆäñoW°ð}n³ta¿Kö÷Ï7F"•óª¹ÝŽ÷î"n7¸ÇÊ~ÿ¦Àð*­ÿÖœÀgDAÓsn>”½V[+Ê«ª6anêê0S¿ûå º_üCû¥årŸ¤$ ‚VTçdn—5aßj*+Í=®ì–‰…læ;ý1JÖ³J]¿úùûkkÓ1æö•SV¯wG¿®ñ2rvö 뉜¶9óàî×¾”3t2Ml¼ãÞ'j£¹ç?¦ÓΫ⒟@Þm¦Úçe˜Xs¿_ézȃrP1ƒ#&*Þw-•® Ä™¯¶â¶ú›Rµ  µcµ¢Ê. ÌótƒÅïOºÌ~e^—Õ."bÔ,Áúü÷~àÔZ Òpµ"]B Œwžï_¥%Ó=x°oºÖ_B&ô…mW•’ÝŸÏ¥ÿôêâx”: &žÀXI000bQ§˜G)¢¾ýØ49y dq‹P/+’^ÀÑdºî°8f&ÀnôgÏE±tæ ³Ëçâ&+gøørTU§_gÅ h7ù"¶µ¡Æ¤µ 30Ú;ôrp–z ÚÜüÁi{Sÿwa¾˜™ù®—FUø‹)tÕvùqAùQ\a5Û—Vr¯ºàœ_<„VlcX€§?ØÀE|úÔ?Qáí˜êÛ1¥·cçWn’ŠŠ|¢Â˜ï_üˆè¤ÃÀ˜n5ÈÎÝ4׈Jwuñ¸¼®sèM4AFnùúuy!RCå­BóØÉd±~~~â3iúwÏTªl©…nÔînϵHÑfÜŒ!ù·ÜGÚ¥¢%ûexºÄËÛICÔpms“N–»©Ÿ–“>cŽVåî`_Šx!>åÝ&[70®"A<‚mЂĥ3ž:Ý£G´ ëW²Kbb[[ H>»ûäpÖ6/oŠ}¥Äïû¿èk ¦}²Û/&ª¤Tþ©Xû]yzz—µ 5S®¥‰K]ŠïþæÛ—¦¦S×WŒÒRËÇOa…ᣣ²¤¤áúbõ^;¼'§{3±rŠ”HÍíêÅú¶îR[Dzðw<û©LPP~9*Ï ÚÚRñÍreaÈ”„¸Á­~gzó–ðJÄÅŠˆˆÂÐý)Ü~l¥¿n9z~N¨!ÛÛâÛ¾`“![ ä²ïD€üËZWׇˆ«§ÁvÏöÞ“úÛEypóåV#Ûƒð¤á%¥ê•v+ºš¯Ä¶6-9¹œ~WGî9ëŸ~àð!74<8=½öZ|”L§úúµ‰‰‹ÇѺäÚšXK¼öçÒÒÇçç+]]ëIvcõX[ßbbÈà¾órw­½äNGÀÄ#å°[vVÝ’!Ÿ¥•þûô% Õ"î•Q£Êñ±¤©éWRþ޼HÑ· h£#ùçµµR~0ws”{¹]>5+œžÓ\ôâ»Îà’†½Ða¦ë0²lPs¢´ÀÜòÇHk¸Ù6³ 9<2ëÞ} ïwW¬@j÷¯üž˜ï˜$[Éù,GZ!w·§ú,&ðŠÉ;³°à[ç¬{z\{“jàÕ.ùmæï£°Üy)‰R %´²>$JЊùçfgs»Á@kA|€Žçöäýéi¢²t€Š= ÁÛ¼µ¸áFf„Œ9d$D0ß?ÿ Å„2+-nx¿ô¢"ö0¢öp!G;5,}j*ª]3"9¹6sé3Ã__9ù'-gêqáïh*)-n¾œU'kIþ)¥£—"¯¢’¯îí€ùgHa€ÿÇÌyòôô÷2dò"?J’ ½¢z  ˜f9=Ù§'{üÀ×Ö(ÖåO„¢ôXVa÷ÎO/ÐÍ=¸ÏÆÖ¼Ò÷dñ¹6Rqq×f¾›ã­ D bâ/lHGÏ^¼ õØ×ñkMB© ÑRçûÚ¶gAê"¢_SeÔׯŸÓÓm_¿F®„»]Eãûw“¯_G 26ÇJ6Ì0$%ó®.”û®£^P½x…P£ºkƒ<¹ú<‡µéÚ³ã‹Aµ ™XŠ‹ý¥ë#éѼlqÌÅ…öþõus×l0€#ùŠò‘lì™óZ¨î*gçYLW>iáš[•£´Ú‘V—´Àv/™£iìŒÓ‹í7ˆºz%:ÝHÌêÏhSµ‰f,»˜zºêwï09Ò~~ÿžøáù—‘¬ÌË++÷ï±ÐЛº–¥§ßÏ!˜¤bÞ ®¿®ƒnÔ«^n¥õÞûÁƒÝ“ ©—ô§úÀ¤04¦:ÑÐòvf¢uIÞÿJ)9åÛÓÝjÉë_?svOf`é´‡´îб°HhiÝØÊm™Ã@™xI>Ûýë’ˆh‚Uªyí5N§ÀدÍõ‡È}},ëël*´ºA3žò£V2Œã¸f {š©id>ŽÄ~ùª«…)ã6•€ ·,jq%ºP»©Ó¨W0ž·ìº… Ê\ñ_—PTÔSRëO[WA»'"b±¾þ5/×ðE`‰/BC·&*É„®G»-Ä^Œúø6Ó1­©,/ßÚ·§¤§Ç ï}X]®?ê-½ `‹%$üšžå²ßŸÆMD”0¨Þ‡oý#Ùð±æâîVY©B!º9Rr&!^9;íJMh7ÛÃ6Wtp%Å+3uŒ.»}M:ôåZÂ…0Òðƒ½±Ééé*€à\?’ŲÁX>åb·µËŒð½;½ …25‡€ þd×Y[›•šcH¯7qÉ¼ì³æÌü‚]i™â˜‘áðßïß9³²>°°è°rXÌ>@E{ü³3ðÇÍXv£T&u:šÕ£= '*tPdb¸dcŸ¯÷P qÀ ƒ‡B/êÐE@í^cÓ¾êÇ»ÂÄ'óuÈ^ÝLPØÂý1ß°G¹8(ÈÕët—<}o¬Ý.Ô¶·O7W¹È<÷‰ô¼ë/ ŸÍÚw ;Ûz½„ /_„<Òd¸bæ~€µ-¹6™‚àr6Ab?ÿ[°yp°yyØ” ⚌šÚQ?µDûë—/I),ã€@ÂÉÉ•Cä¦X`æ›S5üì9uWy«ÆøÇgÛDºã2w´ eš"nw9ø%çç·¬}¢öZ^ö<æˆ[,’c / †FöKD$vï ŒCW×|>»ec:÷Ÿ3%þ3LZÛ­í!aŽ$EŠ€/Âß™žp“·°ø.²‹ÛnÝŸu:'B…œRˆ€m0Ѷ!,L?=½—"¾çâšÏÎ'AeëH+öü9:_š®I–¢ÚD­×À£Gï8ÌF¹h7"^,bÓ&ß¹Ée¥9»Væïïí@ˆšV}­ÍÏ/_¿v€ÓÆ‹ŽÇ«˜_U•RY©ôò%ñ1dt ¸»ä…¥¥·&ÊMvÆÓÓuø;dÎ10å²°ä èÀ Oæ’[U5ÕIoÿ‹à:b’~BÑÅ¥.Ï\lZCµûô7µj…©qU·›ë €ætŒ’Ú$þòY9?ww1‹úVHÊÔ³m"þ——/é58YUÖ׋«Ž?ÂR À€'3¿é²”X®ïáB¸Ð0Qïx½7;ö²Â#€È®®+q_Ç“§Ð¸ü1 ää#‹‹î¿søí™L¥èç€Ùs2Ãà…6®¤¤ º:©¨«ì&“É<$_t¼­VH¸ÂŸh›³DÃØ$KEGA—‘yè'£áDù3£eEÅ_åßŒÔøùáµfº å€Ü׎¤• _ÄÿXtÁG<937wzìì8[1š———LÀùþ˜ Îe'㣣‰{QÝíï~ïíbB)~é4†ËZªªþĨƒÃœV“³qÖË¿ø‹Yµ…ãó9õ ÈÖ¹)Ïï4,uFj,Óëí}Š<ÈRP@Û ¿ÛÚÛ‹ý XCJê÷à¡©´4ö° Ã?C0§•¦·±c…a7*{‰ ‹“IJQ᜼\sžïÜÓÛØex9ç§$­fŸ{´-Í×<ö¬Oú¦~[#Tl£$ÄÄpÙ¥'îÒåú¢6Ç<¹ÔÑá»_륧GN÷òÂ×¢Çz}÷áC¾š8ü€Ï“ââ¾Dþ ª®쀉~ûÄ.£‚ÄÅêFúxìöts?|PRÿ¾5osþÆÕÃíŒÍjO·GM_DAõé`z~þXCÀ†Û !ÑD…† çeQÜDÐ7rF(ÛUPp>Нª èTðÐøÚƒ)Þ¼Ù¿»ANìw£ €£1í¬+Ëœ÷REHIs@@içű[Zö¼¹®{'¢\ ¯€ƒ†2y0Õ¶Œ+ÕÊ‹^¢oŬæx}uÑÿGØnpÑþJI§q¸¬Œ(°znk+8ü–;ÄVðñã3EEJ€T¨@xGl·ø÷£]{ BnkÛp}îã†wµ*¢«;]i“’!ÙÎÛ)ý•Š„Ð4ò«êêü¿dõJ1õÿ¢úÊ=S#ØvqœÌ¬l_×V 9æµ_¾BVT¼úÁ{ÏÊáaµŠ©©ËUu(ÊË;˜ißµ®y™Z„ÞÊûò¥K0¾lóO%¶ý²Të7ò çý1ì†X†™™IŽ+&§v¶F¿Ûä“p1ï ÝL²:nÒI´«á xV5¡~ú¤77Ðq»e‰ PÕ$Ø35O³®ššÁtä²ÕÌþéßsκTüu³†•Þ¸ž+£“ öG•—¯§I.sYÖîI7ò¢èáà)jÊÈô` •ííªt_K†”4ô¥œ]^réã@iªÀD_½BBÞhòaQJÑRS-<¥ðÜ™^ÌÏÅIÅ¿ùÙ«Wp±R}}s§Í„˜”)±B^å$ü§ÏTœq2 DNv爸*³V•ÿ¤~‘¤wº9ç ÚÌw^žu±æzSQ· ÐIði è3qÅ •æT{kÂÇ·asuøCŠzI:–†&À³­°tbP 7‰ Þû[îISDÈÆ £JM׺¼" âÌ%< ÐÏ_U+íVºOOë ‚Ö§rt›ÑN€õæ r™×§¸‹©Qç/þþßSS1‡Y¿|þ|r±S"Ï ·c&3KK'[dv¿¤¿ÊÏÑ#ã~88 çj¶«ˆwý[æX4ØF˜š$|ü¸UøãUõSÓ¯ú N¼]*»/à`•êžžK_˜½b¿j’pYÚ«OjÄy­èuöæjk"¼5˜Ç°¥î|!œ£­­¤Ü £ç×eÃá€àŸÃ|3ƒƒ×‡k–™Ù±¦›£r‚‚q‘Ÿö}|µt>Ü ÿþ¦ïüh¹&P߸8Aƒ-PgWVÖAÊíç?!ˆª6üɧÖ9‚‘ŠŠÕnÙ9×—•ÝŸ˜¿¤dk?[á·o6¸¯þÌ)M”ß[ßÈiÿQ™ýJ'!àDáÅõêÍÓ=Ú·o TŒtœ@H¤@êÕÌ‹D Ù{ãÏkó£C÷ì´¥ØÏŸæ|ÆJŒjð™Þ{2ÓÓËJH„26L/Í=R¯)WTTìÿõ«¡´}ƒÛ#ëì÷W,Úôt<¼3P?o¸ù6z“ Ì͈úÃðÊÅ/ÌÍ|›]1+w5pa¬ŸßR„ÇÂï±Ò#ävÂâu´>ë‡f§Íj LB²èuM?_oCnyÉÿèßðÒÒÃOuH2ŒLL´z£¢†„Ü–›×c­‰ùIWJ²ÊÊôfê­sK Ënð†T稠)•Jø[©ŽÏÌë±ø"5v¬¶´T]ÒÅE'ÈÑ ð3 ªmã®çÏÿ }¯ƒ’G hãb5žˆ<âÓ ñ£Õy¦î’4ó%CVè½`R÷‘vÉë ¼¸=—ð«WMÅšŽŽ\‚¼ÎlüÛM}¨Ôð¶­ì—/Xm¼HvAÈ~~ãƒCjoï9Ø, ; ûKê+ÎÂÌŒËǧŽHü„˜ ›Gÿ¶â…u¹Ï+µ Lùà zz'ð* 6k“åQÓ,3¿e{¸“ûí_ïE]nIq*jOƒ—Öùì»ß–7ßßó8D——?zÍw”„èßÒ´Ø*|kY „““_X”ßì/L øïZó*Õi¥¥9hÕ+<ÖüÕ½ð¬úëÓ—¼Oi8Ê~·R£ŠÉ¡F¾÷KH¨ù%?0ÐæCÂÍ(|D@ƒ«ƒ¤ƒÃ@_JxQOsØ®31V› rˆ <Ì:PV¯Q¡üädŸ Ù‚™JARŒ¯»Ÿ>æ2ÅÙ©uy¥‚¨“ËŽëë“ËÄtMȧ4»øRoÑØdm´âñüÞ‚ÓñqõÅI¦¸q´’ÍÞ»»ˆt8ÈÃÂÕ‘ŸTÚeÐ?ÞyDF6a ÷é6¹¯P‡œù¼ów>¯×·Cù©G敳óùXIo§þz¢ÀÏr«‘¹ß“"á/éU Ÿ¹¤ZDçåå¹®}ªJÑËü<¨"Ñž–[k¯£SÚº¾Þöû5QØƧ¢þé:¾F×°(Q± ÃÞíÙ¹&ÏBL³Ô´´GHl´>ÑÑÏhÂ?÷¡Ây}„ÁâAlF/x•[[ëù/ÏãâKË‚¦ä7}ƒƒÏiir}µ;Œ—{“,11ñH[‹—¶HÝ–ñ¾g3à’l1< ãÀ7€ºþªH¬III!LÇH¥ÏïQò}ù~ûüà4ëÎÝ÷õ3d r”¤10*| Œ\_WÅc~ÓÊ‹ÄÉÄ\fjw²Ó@KEÕ¸™Ðò’j?[îÝ»Î8®Ç»‡ê\ýõ0ußçßÃF›$E jáçq­îpí.¥0èfa1Ôp3òýQ°ú—OoÈih¸M>=f-1ê-NOç¤ÍøýDï4–‹5¥¶vz˜3õÛ·þ™™Oc¸ü0)±ï¯«lƒ•–o¯3ÑK³r×Ie´á—Õöïùv^¬vI@n‡•HærjIxŠWzË·&|[Zœz»O‡xæç‹v^¼q9·¯ÈÎÆiéÅ€1 ‡i7ùÞƒió0 @ðë×D ë=ɆZFú„{:N³óž.9g] ô}i©ó݇5ìH±RGûAcå̯µ´hÚp³MïÑá0äV=¥ƒ²#µ)KÅ„z‚i"è Wõ ôqÊ*œLM¤7+ ÜÜ.VzǬß>EP-7—’ÃÒiñû‰ˆ~)NÎúÍò™ÜSròŠÂ¾_R.ÓüÓ²U¦úôôôÃê(þ-}JÄ7Gm¬²üÔÔÔaÄ÷ÑÑIO5T>=ÊTÀqÍE¼w­ }>"&$%½R]S€­êá(¿|y–›J%øÑ%©7IH«Â’…B%|…SôWw/ëúûËKœW¾ÑÊÌ)2‚¢ºF´9N÷mœœŒöp[ü05»p=,[]C#‰ßt©ùÙýû÷á…ÿ‘¾*ò±“µÍÕz¶éL{§;N—’2)ÏJ&!ú“íìæ[ìÌì‡,ÔiÚÞï>vêà ¿¶”ø^ù•_GmÂèA–ß;Z}ì¹¹¹R­ûx|v~:I.«íád\ÖÒRR!!!¿zzH9L?çå1o9››ç¾{W“F(8þÆTÁE·« +TPQ±0#Ò5vŽMJZÙi8‡Wa  Ð% Báà,7üQ»Qå.z¿Ã—-€ŸQQQ­­­[››ªjj|||'ÛSŒôôYééNjخ’Äè'‡kò666ˆˆþÇÇŽã{j–ô AÁÁˆ÷îõ…•–•ñðñI¾|ùRRrg¼,§®NãåËû˜à Z Ç£0á111ÇÝ_9$•”†þd|òKøãøøx_Š R¡"ƒyd’ϳð£oÀŇdA ט:8`y^îyìɵ'’€lùýÊ ‚§M—¯Qs Táû÷ï+¬f¹mæ'«ì>„*t÷& lŒïÏ·c J½xÑÑÑñíÄÊs^^>?;Û+ñwü10p°Ð¾ßÙÙI&èÎíqn/'‡åC†›Fjµœ ܶ¡¡á¡‹J!¸‘ Ù$BBB ¤f¥,‚ä¬,aLaaAñkÑÆcX#Ò`ÿÜ‘MòůX «©WÔ‘ô*´óž'3jUûÍ0"ÿ-Ägí™3þp‰þÓé¡';3–FúúR1¬ÂŠŠGàrJ)Á¥¬æ¥ž¾¥mbB”\zVYê¥øæÍº+‚«¤k)Ñï/¨¬¬¬‡ÀÍ}£«¶œª®®æý“${‹Ö-~õ¿qðG^IîxžlO<#¼KS‹Ó&O&[é•p²í¸Õ_Q®ùJÏÄzÄSÕøÛšw˜F@¡8t¢ûFY¹ 3󦍨’VƒT‚`/Ü2g4x_┿£QY¹Ù|søg2ˆzÉÖÌì·ó®7FQUJ´%¿~úôÉb¢m…Ò1…Xæ² Ù˜kç6§ÅD¢Þý¬_M<óñ--/}ðçùCA¯k)«1'_ðÀ™ÕÊááá'k]"•Ú~ü`Òªñxó¤ËËß癎´!³ÝgÕp³]â`6û™¾ø±Ö¶ †R¨xWÚ ‹‹î@ÉmŽ-¡÷ =yRTOdooÏÍÍÝñó' JÜׯJÊÊaìnu%ßÓî„ÌÏÏJJJŠŠ2022Ò^s««§g+ÉÉÉ–9û<¼¼Ë++^ç‡ÓÓž·…l~ONNvvfB¯ßcc±Óû+½IuÏ䇆†ÆÆÞª«óï4 ] o³çnZÜ=M%×H¥ÃNs5¸'ŸzÉ»® 9yô™(&‘’}Q…âæ=Ñ{Ï1|^}“ú"Ø>)õ×…Îqw®èç÷/›Ï? ãòÑ]zïêš§­qÃ_À¥90#^ þþý1"b¬Ö…=ÇH¨žÓ½p–“•ïB6WWG«rrssãã‰ßP{`è¼åøátW›@IN„#ñòß¿“?z×bíáQ—“ÃX‘¶~V²|¬ôúõÇÈȉjÆ}L¿ÈÈH4TT`Ÿ£¢Èøƒ‚p"lmm›ššheâ_ƒ¯~úTm»„lfV__¿Ðùñ#pî»û6w|¾[ '¤¦Nëí>\ÁÞiÇľ ˜œ’’ß$ Ýk99aË·ê|òGœ»Íç= OŽêâ{ZŒ*7¢ÁÀ=ûê™™½ý„uã«ç7®Š7šž=4X?ÞY툠d7êr’ži{¶íOÞÑÜL!$$ÄÈøstÔùæúª#ac¤ ã5Ý£GRÄCŸ‹ŸŸŸ‹‹ìconi¹½³ƒqS¿f÷ Ä‚_öà1‡†¢¡¶pYM×ÝR‘¦Ëã¸9Ïc÷JRR«Á3/5Õ~o^lÑÓÅå¬ÌlDIAa²ÆIöÍ›O¸#ù[[[ÊùêïÈ/ŽÁÛ­h ]j~ÏËÓæ(?þ,))¡wrj*BbltjѨç߯oXSS½¬¬ WFF†Ïi[t[¢âýRBZma½=}çè)yÆÁîÃísƒ»°Æã§mS5k®®4Òû‚ å%%D[¢0÷3[@Ïûî¡h-£§Âæ³{tÕ§w¤9hi«®Î6~ü]tôôôtsã‹ì”’•ÝyX––volÜ©â­ZNþµSSGj*‹r¹ –å‚IÎB•……–ffjõîUÀrs7«6À F\LMNŽ{x¾šhDÙhlTA Ɔܳl”’úC­——óË—SÉbòuµæáx|X0aÌÏ__q²Ç…´WaÁŸØã-ôxhဈ³kz~¸–+]VQâ|Ei©±±ñád+xÖ`bžns&×Ö`O³°³ãO¼ ¹¸H!áWKKJié!¸™8N SssÑm+cãÆ…½„„„‹“r`>[´B‡73ãÛS5’’’ûûÄÄÄ=ñ<SÞ‚\nàQ¿3wç†ZD…„Hº0¸pá4µ/Ãjf\ØlP˯sVq{³¹<Õ04”ÀÈÇ% ¸ !EÓga‚žÍµ§8áD¹E$ Ÿ>WÚè)+ãÛÞ@»ÒÒ€©hÖñgYȸ¡S쀾\a ããG•zw3³ 'J/«’«ÙfžaßGôôoß¼ñ™<>>·´)|ľË3¼¼Ü.›´dO*èûN'f«•sÏ-)áãæ^š¬ÅÂjÒ¨YfÑäG Gœñ°¡—h·35µ}÷.¿á0`—X0ÞÑÍ6æÃ‡Y€5¦ª£ó=!„í莯ðÅ>ù½êw—¨KŽY½B~:GøóëëȯÔËJªìâ:ž¯)à{ðýÑ™¦ý-F è‰×¥ ÎR`i‚?£ã€˜M``x­gÈy¶"â¥ajºþ…Ym}}‘±®®Ž§b}îñ\ìäY¾NTdä…%J¨8`w"x}övv››ïÉW[ƒñš››MMMŸ¨Ô®ÍJ€šn„½G&<þžr™‰©ëçO)©_ „% y ö›cù·0«Î'˜©÷”’Òw_د =Ù44ê!.”㼸i&Œ/ºæ€æ%¾aHK¦”H–’÷[ĹX]°ñáëü²©è›‰Á`”cÞ>:)¼Ò2mÉ˦Ֆ€Ø&£™3[?¦¼zõmȽå3<¶ú>– ±dþá4Êí}Ï.öô±¥œzóO=.ßûôé›ÄÓ:e³&óÜ µ½¼¹fÍ ýþçú €¥Üß?‘åÛ¡h—Åi(ž#,|DŒàVã/¶p÷}^†««Ýuw‰uþá:" ¶?{fefÖ¡1âdzz5ˆÁÔ3íÍìjä•4ø[æß˜¾¤<À ¬áÿò*ŸIÿøšqâÄ5êm–Þ¶66sŽMŸÌs³«ÙêAÖƒ,‰åˇ.í{Ò)ÇãW«h[m`ð$Ý7Þøv@Ðx?êå^ˆuæÜ9‘iÓL¬¿¡á‹sÝ#tá´Â…ç÷ qùfvvKZtòp¯†7-Õ¤žž%áEõ9Ö ÷ /Di‘oñÏYv‡‚ÔêêÊ@ìrÝ»mמEÈÉóïê‹&Íî[üÁ)½Ê<¸DÕûÔEwå À uTæä-a¾<¼JèSÕ³˜••j>;óWeû:)øìéúµkmsý+å6»ºœ¦ …xƒÈ躅˜†vÚϯ_LKS’•}Z_ôpSºSBÈUÆÍW¯=P¹xã8z„‚–V±ÚOS3%䎌cÝ: ‰êx­oŠ$ɼûÞÕ—9þ*}ëbð ™h‘?njWãB=æÉÿ¾‚^4<:FEq“aV@ÿ›ç—F*]ä¸?ª*?ij֯æRRÒŽÓ L£4‘¹smÒ&ù.Û2+¶ôþ½ó~=­÷ª2““uÅE‚¶¿åHMÕD Ö}´^¼8økšÞ>‡&Û—§ ÞÈÊj>xPc•Úð öüb¡4‡fë’íªî·ù{_Þ4^¢îWõÍÀY^DL(íÑ=iYY 9¹ùA“¥æá±æ’BŸfLUÛ°a^mö+¯c11ì/‰¡A·h€ûeÂus‚JØEõÝ-éfg^·{§œ9ó dæ•©S‘¦óºmÝZv?j³Ó™WDÞ L§²#^mkÞqB¶ñ„ç; £, gA‘½s,¸áá¼Ø÷üf¾‚‚wŒ!Ì,+x4MLMó÷-ÔÏp‹½âqþ±–2uàI²noo½¿_AÎÚªy¼S*+ß­Y³'ëºhöuÑŒtέºRXÆ'ö‘Üm}9’tèPÝiêó¯7xxvÄ÷öZ. ›¤¸©oæ«­<¢Šû“–&%éG,Þ»éÒë`¡Õ5M °}ÃâÖó 8‡ÙK?ªõŽ‚ŽšZæ$xúÜÀ,Þ ³6ìÌ^{Ô°°ÿÔêÖ…Y޹BUÚ4_°áˆŽª¾× '2dÕœˆgˆY¡8¬ùÜ9sh5Ë$$´oãT2䥥_5>ðÈʪo­6ˆ#un(ÇÿáË›+ûßv彬‹oGÞµð­?EELM‹ÙM'^‚,.!÷îÈ)f½~­‚QRá‚hP¾à¡iþ;vˆô`öÎÊWƾ77ê—Ù¸qŸ¯e§ ï•sç|Þ=>¿Ò²ÏnCå§òP㨄ãÇÞ°²­ÐÿÛ&ÁÂö3Æo²²¾ß/-ÕXæô-¦MQfWÆåÇÊ>»ê‹¦ÔÕÙ.ÿ§ñ0†ÐÖ÷$9Ô«mÖŠ,ßY¼ÛjÍ,žî¼MihÈÛwÊ. xÅÆ­´¸éTÉÊ®Ÿ[ò¡:º|yYÙ¬iî><»ýâU?\\äCbòù{ÙÙ¶Ÿ %ø ê·ñ:Wc¹µ±Xs6gzÑ6· ¢1Ž ÿÊ[¹råœ9uuï7÷ÕMÑÔì«ÊÈ™4I`³³­Õ…¬ÔSWÖxébf…Æ*[Ü~öLB­†@ªôýø:¹²Rø¼¥Ý³òΞöëÆËé¦2v.þYyH`{’Ë–ñæ<î›éŽãi¿pî\#Æq.°ƒó§0­%‡¤¤âߥí?jéÂHÞí¹çäraJQDí³§W»Ž§ì+ª77§Åmºõî¦ÒtKׇƒm­:wkããw¶·/P”oËu¬Ü5çsù™b¢2—’6 ð9´´t5¼Yq¾ºåAYY¥¥ñýSÂòå;p3¦öW^ÁmU|y:IêLýŠsä:m--ÅÇ2å±s–µÓéç,-mðxe4š"îÝ[øô©p _a HãÖö.53+Ÿ,eým‰à±#ÓxúÎ$&ÖŸþðÌ>|‰BëèC³ê4l¿¨TŽ¿3`D®¯×Íà`ÞB´´ šnúÆññ½ºwOÌšéh-¯§£³_§ÃÜô`#g[x¸ÛâŹ¥F/"x¯g?üØå!ZœÔÓ.»[Ïyå£Ð¶ÚZ¤ïµ^¯)4¼~ÍÚuë~O[nq‰Áóªsø¶Þ¹s×?'KLLöa\“®.tÓûc®§dww–ŒåZ‚ÔÕÕo<¿sàÛõÁ×'ŒCgc¶¹œÑ»e¿îk1ähBii½Œ%Î)¤ÄnÊ}y¼å›ÈÂ/Œ{G}33õ?Ìò·³³]µŠfmÍ»=>ðÓÛíPÉÂB É3{P¢÷oúúÏO¿ìÿµÐñ¡ú§è®íÛÞ-/¢Bg=(¤Lï½t-) zz.÷üy[ÕG;?y7,’Da$_›mÙR<0àöÔ/#’zq8g…çìŽúø1®êÅÙsçXSw,Ùñ¿Ù šã¬ÖžÜÜy/4½gˤLÚfœ‡>âñÉÉÜήêÅUºm†M¸xIS¢ð£˜Œžúêê»g϶8M¯Cˆ† g‰ïZ°@9 Ú§BÞƒoGt´ †.Î`œ¤ ÷GDÜÌþz\âÞ¡£–ͯY—šÔ`ÿž\ùjñÓ§Ÿ­2ôN¡@ÄЋùöÅ„ON>e÷ž»~ Ú* ºº²ÎήVVÔű[ügµ¾OÈõµŠÞ¿íò€sçÍL^Kò¾é8yœáô¹µ’š±ù©`zPû`E½Æj‰¥êâQ‘Vób3®þú–)6g'¿Ò†ØÒÌéi]ü¨zʦOoÖÞS!0×X^@×\)22ÿ8óÝ õþ4èžšŠJMî·Mj‡H š%‰ŸKuÓXQ4ƒÏè9Æñè¬ !ÑiiûÀß‹" Ç?õ}Ñ““;õUü¾²ö¦ tÊg¤àëÜ‘óDvv9ŸºÑ'#&æjkû®\º‹-.ªXec±ÄU|VK{å¬ù¬ußòåÀ¤²§zUÊTuU¿óiÈ»µ2û›rËçb¨TöYóEý™ù“—ÉÊ–;ªË‹`ØIÑG޽p!<›‘~‹—H+ORY¼¸&ƒùm·§Ð ø0¯f®. %¬\c™z¼î „1TffÎÝþÔ×NÊ?†š²Ùnrûñ WŒîÇžo©§FŒŒhRrrömgAD r={L¤'_Ÿ…V¸ÿJæ½´þôÝ%;—ªz³ßšìÜ·ïsɡԤ¤CeFXYÙè^êÖ­/¶z['ľѰ±UŒ‘”TOL:8mj»¥eô¬Y½ìF§O=å/^|é€$v®êL'l—^¹u¸dRøûÖ$ã7šš+;&Ä_\·Y¿¾%ÙlËêòÙú .Á£9i%µ±ðü”ÎÎóªjÚê©Õi䣑‘3?%]ßR$7ðó›{+/î*+}Òýö­‹äÇòBâŽÞkïÅY=/f0ie ù×?ú·}žM€/c,v­°¶ÙœË÷j3^ÔÜÌñ驲•;âùñu'»inWWÑtÞ¬ŽÊ¬m/_FÄ©÷ -|wòdþÍ™¨˜h™Ý»¿»S—V íí8—¼®Æhu±«k‹Î¢>i¡Q4–.shŠËN¿‹~Z«xB=E†Ä¡œ’´ÔÔ4¡*ÃÀ‡™ŸT'÷ö´ØfŸ8ñ­&ûƒ‚<öQi‡ ÈÌêï¾ð ¼Ü³Å3ð¥} uTñfÇC™(” D»Þÿ:÷„0žUùÚx¥‹ePî …ô )é¯N„YîW@*}ð`Ç Ú0O¡MÓ`¢’@+óòž·ºÝ9ªÿn:Ò`Æ^lvD{µr÷ƒ‹õ#ôj²{^Ü]óáóÇù*å[lÌæÝ~9pÿmÙëˆ¥ÌÆ#²ŠAÉi§.Ô•WðNÕñöçeúüö7®OnAÜà‡Ù*¼ßoît.#cñ[Æ4Áãqµåûö]¾~=Öiúœ%)ÂøØ6žâÓ<=³œŠê®'$ØL®ÛVj’êY*¢&$˜V@G×5]}ºZÚXýð1‚«uãb2[Ãß?Q ò'=¾‹ð}öâÛ C/ƒ˜Aßÿäç¿8OîrÞÅËé‚X\¬ß«<Õô Aó •j¾¦f%k#zz¼ÞŸQ¯Ç| |Û˜ûR¼E>·ž ç·àý„4ÀG?‘•Ùw9íQÚåÇÑj¶S"¦ª¾.ðøjç .œLw0¿w’SLܧÐ\ÕtöÂÌèž\øþÐkïµõvÁ·ÞrrüBRŽõù`ùþc}Ùš5èíÛSϦ|KÑ%Ž8‡ÝÙ¨|"GÒ)Œß}82¶ßbÍš'ZA«ÅáÖ.Þ(]´‚B¹Lp¹~$.p¾|ú—*˜âÛ³\ë(;•!'GóMII®]n®¬W×{±ÊÊÐë½&FFÓ.·feg‡†>MS8sÍífÜþvš½è!AãËMþì³gñÊÊ+••U¦¦¦Oîèåk>|ÂéHë?ôjnQ¸nQQ`ÀDZ„*\€ˆ|¢¬œÅ|iHò=º\QñuºSï$ÁŠºÂ%%Ó 6ú êë{@vde‰Ù¹8ÕwÊ[^§¹U<ÕõòÌio±õå| nRȵ"Gñß»»$<¼ôîý>9 ÿj#Þñ‹)ì±;zèÑ÷hQê¤WrðýXNaû‰r×Îï½í½å Þ9õѬiíª¾_jj·OéÇ–ÍêÐ^nÚ ò×UÙ€Gbf¥Ú!Φ¦>(m½hpˆÖVS•çhö5%ÍÕ…ÓggbñT|Þ¡uËétÚáÝ{6Ø:oß ©-BVPÐ06޹êüàQiÁ`%ŸöN»j„„-e ÉÙ^U[•l·I›ÈØEGç4•*°YèU*k—Sˆ— †„øzõ#Jä´ßu6­‘>Ãú¦áç­þbq²ùóoîEö.Ä„ÏÝ]µoŸT|lð`É%±µ04pòdÉÚ›__¿Šoª§Î¶ìŸöüí›{+Ö¦úõrVYZNn‘ÿ6©ÐÝÚúÎ@ÝܹEÙÇbΟŒÝ%¦«ïèúÜýëç-MÂ+V©LßÎ#½sçÎîC©¥õGÔ?Tº:Í+<¤ïèéBŽ¡|jÕw„—ÓçMêk8g×.cÃðqibbW¶WhޝUÖæ#Éyî*æKŸ·å"ð@[5¼Ó¶ÜÙgàäXwýèÑðS1&×dk—4¼ho¿ ¬+ŒØÃ\NO¶¢:'ö\Šê‹òòUôUæäʼnÈ_OQíýôN8+«ýÁ·:›âÎ'—LãÍÚ!|!?¤n]LëéÓóuõ™KÕíq¸õ*äéé’ªK¾×²nÞ<‘˜hùmmèþ˜Sô‡ê(Ç𤸥“€×ïVžGŽ øi]Ýi^­Ç€/¯YgeÖIÚR²-Ñy¡©šÌÚ£[}‚Í-ñmÕŒ›[ê]Ú#5V™Ë¹ôu‚Ø­óÚó„íá€ýRnÙBZ¿~Cr².€&†¾¾jÎÎ %Ñ‰ÛøcZ@ôÃáü™ÕÖ*^©ø¼Å`èáú–ÓxJŸi»'Ñ$ ´7­êÓ±ý<Ä÷bNP¼áSÚ»9öÂ…ØI“n}í©‘f‰Z–{³µ§³ýøÝ»R*ÙÔ~ ©jìO¿æ™ã·aµä›;·h^e3gˆh²æÅo{§÷¦¤=xð4O¾¾OU®ß—«))Ú§ô÷žŠ ΀•éo{Kù—fˆNÖÔœÑÓzs ¬‘…ÚuËоVÚZþγÈW¯ „›J}ÖëÝYàØ´ÖÍ튟_sYé)¹#GjIÍÅÔ¿f£Û'emë\Yõ¡KØ×üyÐ|Qѯ͕EŸ8ö _P…—ýü{Í>»7Te$Â!å–ˆRÈ«=ë Xé“ýú_\w|X¿@‰"V™ã4pv½¤ÓŠºÙKsksúë¾tÞ‘Gj©ôfe½½¸Ixîî¨3âlm“¬—7|Bú/*šÛÕˆ/ž)×lø2cmÇŽ£ñ‹w6Áó °g0úwÏCq…„¬)'@!s”c““3ŸÕÖ2¾°æ™w÷ ZQïìSõyìA䤋.š>[¯:ëÈ"‘k·‹WÏh‘¯Þ‘ïðÙDo9]W/àÜE¦¶œËdM{‹«¹Óê4ƒÕÜcck-Ê9c¬dsÝÈ| ù+/,ÞTÑÞ(dz%øàÁôÈHØ'ÞŒXúm‹;±óý‘‡§ ´oªzoÚtäŒãj7·7!3¯Ü¸á²*±@ÏPêýAXJJDZc±üü§…ÚY {š›Ó]]σžE¶Ç;º¤T?døv!m¸‚n±ø§Áš Šoz¯Oã¼{±tvqÉ+¿M0šøŒCÌÏ—m*]±g_ë œHYü®‰£òV*Ú­Éò#‘T¾>2IzYYÙÿÌ~†Uêrã(t]ƒÁ³’CP¨Ë³B}_ßÛÝõVñ,˜S7iO®:*ʨÅ\Y%eåó)Í1 ‡¯^íV²x®¥5€B0–UÁ35MVñйëÿ…øçI€%ƒ»D%‡öÒ?õâÅYçŠc®UôRR»Û\}Ÿxqõ©öµ¢Ó§ý–Æ¥=j4äpÓžŸ\ù64¦£ƒØÁ¼CÏR/,º;ÛèÆYPÉÉuV^‰® pÊÅÕãÂ…«††R]ì»§Î#ÉÉ­”“ûPŠÞ²Ed»úúSØì«äª +º•´µ—é‹$,Þ¹N´x—¯ö{µJgËXJîS¤æUTtW]un1%ÔÁ««ËäwÀ…[o`Äë&ç(-™Ì|yXÞ†ãS4ëCKÕïÅöóǬ¾/yÈùôi€Ï^Tg!€ŠFwÖ._¾ÓÕÕ#öø'ÇûÇTS”—\»æ¹™ñÅ.óòã—›f·È÷ñ/õëNÏ”éÇÑ?ËÇã†ÜÚ{«æ–˜­u–×÷š:èëóƒæ,Ó{!¾ÁÉù|aYÍ$µšQ¯›zš;Þ %nß@àrSÅǾ ôG®?¥#¯€›nJ¾’Õe°šoÙì(5[*ñþ§½{ï}é|`Aâé^ÛÃÓE°Éζ0ÇÆª.ìl(™®]ø1 Þdð¨¿søûêêeâjW--»T}ÝbcSö8±¼¿?6¯úÌÉ `ÍõÔÕÙæ¿nÏ­éçÏSî 7= ]B‚FßÚÔ³N{öÞÓÜÃ"‘føúÞŒ3ªiô0®Íý6wi®@ ¾éË£Ð$©»‰kK¿õ›®_¿¹ÇÍä4êêç&ßp* @ýSUÆ·†GÝ ì«ÎJF±{bˆ[ ^IN ú(þbÎ#Ea—\*Ÿ‚<¶¬L%O0½ÖrCå|±mÉ79vûŠêA~ÔÔÅ…sëvàõmªQµ—ÓCBåd“ÅT,ßÑ ]õ(FùÈlã‹÷OøhQkÕõC›s'ä‘¥qÆ·ê·p~q“«²xÿToÁÂÞÞ¯5Õt×—.ù»[i~;øû›âx½¼fÏ>OöÕ]éäÖšvEàà9³ª•Åf™ºº®54424¬ ÊäÉ×7\yÒÒâº~x98̰& £aÊã€[eeyOŸcöÖ=y–ñîC[.»é!‰J' ãotÝÛ·)…¡ËÄÄdUùx[w³ÑSxLÌ7n$°/=Ûâ²IûôÕ#‹DE};é{v—Üš'½ÑÂ4Tÿ¼(C;ý¥3Ì»×ܽkUkSã’Im^Íð ¶!øÖH,UÕ”z&¿IÎNî‹¶Y™w³µÆ×ÿÕ*ï€õÝ'ÖJ`ùû€ÒÓê± ÂéÇ/hq¥Õ@K“¾;;&ØS$çñãÇš’onß~³\zHºœXåÇZ°¹ÍÕxú´?[°¡ ØLÊpÿÂ× .uïjI=ÓÓÛ ‚@ °mÑÖË—sx§ê$% ÇD%/Q%n;c³Íxyñ"Ó÷“Ó²l¼µmU³¶üíÛæ`°YâǦGOq?³wAÜRÂW®TH¿Ò~2U±÷¼UðrS7¿¾¦ÞÞkqŠŠmxѪ}TmíìÔÔ„+óAT°ôlXåie_{gæ¡Æ°°Ù 6اåå¼-ˆ>xg²ÝbC%§[þ]~¡··¾¿ohljGp×¥'מi{žÒ})L¡±½n5ƒq  èêôÜuÛØž-üs5æì®zú¤€ÐŒý{¢tî¬<БÐl]Ryå)P€'iùIghô©«`‚C4ìv2šèé5ëgß;ùšúÕÍGÞmŸb$³©pœ½šc©‘¡œX)P'A}æ-P’²Ë`Âdª<ú4å•Ä›73ËÏLWõςڗN¹7Hò¼R8y² ŒHA^LùØšD»Ÿûª3uÔn~”6ÎÚ¶ÐDõôÞÿXŸ¨­…ß^øl¿¬sõêâs1~2b¨ÉLzÒf(¢ž*w\g˜øØÔ´˜L^øñcœš`ÅvtåêS]å|LTZÎÀ³ö‚o®Pð£µY]ÒrMû(Þ@z¦4d²ï…<ó„w ·cûùø_+r<áÒ~Î.[+Ç/9°—sɬ°€cgg[€Áž¥ [ž't†VWÃ9Á^‘u*,Ú¤BbïèÝílò©½:ïRƳ#‘KŸúº;;;úõ9Ò"{£Hfò5mlü¾tœOA ­ûª¾»ìý1]Âo‰‰­˜…mUÛЂʬ7_"ÙN–Aî­ - àéŽiz99;'mÚ8™g£Ó}§ŒŒxAþ2p‡jk£.¾;+ð[Xbbã%j)?¿ÿáÉ<Æ»v—lʨ€}n÷wꔊ…]«ïï‹øV]¡§û"d7çÎù2œ"ÂKÃw}þÜíšœžîÍÆëQ?}öä¢`§Üÿ¶,X»[aêc™>5ÍÍÚ:ÍQ`mpWH?\hÞ¼N ï³Å99)§ƒ×ÛÚÎ.&'gheöi@×%J#ÈæÚ½›ë @FOœ3[tÍ£Û±qÞßrb’ßÑÒ¯:ƒèàÕ¶fÞ\Ö©4àòW¦´é†J'·€Ë§Nïñt'¦œxùùÕ««ÚåmEá¡=Ì™_¶$†­…ÅÇÒåª~Ÿ-õ«süÃámžéy’Ë4\+YJJm2è ìmwï‰u7ÏðýrÙ½òò»¯Ý¤&}““”œ­¢ó®éÇÈt.<}·ûð±;%¼ï5åíñµWbW÷sÞ!q¶í±@Ëÿk÷V8h…ñ¦¬ËzÞÑ¥Š~»lñLm2}6Y»¶(XÀàÙÅ\q5›ê{÷**}øa}š`:@ ¸ñO9¾Ì:²õµÎ¾„s‡øóʦ%M YtdmÚ«ÉÁu—»µ9®wsx+,R±\ªQjyÈmÃÄeUÙIç“.\h-]_¯ñÍkIq àƒÃš›/âñVŸ°±¡’2"ëà$јž„D›Ññ]d4Ð_Ç‹öLuÊÔ·ˆ;ÒwïÞ}™áÉXÍ×RJrGŒŠÕDЇ*AAÞ+»ºÜ±µ–yå~£÷ããçϽ vÎp:óÊôêU<^3:ºÃ«5eú³“ݳP‹3˜Oš›ï?~GÉÞæ£·xl©¸C 䦨˜ƒ5â¿]du:ñ©¸ª6¥T¹Î¨¢¢"!Q0uZ0.OÚA4|Ï]å­Øs©©®-6W.Ø*äS¿B+9¨±ädìŽH䎹sÙ/ªÊß}¢ ¹ûúöÞ¥ê~»<ù[»ê´+ ‚<»HèéòI²•vèŽÛ{víÙ¼w÷ºP²hH”¨à¬ wmAB‚˜÷˜(Q×ã|AEu˳³rÜ)õÕÍ%‡¤DܯEÎ"FMo:<¿£®ð€Ew÷V ábÒ»=%·õ‹ †ìÝ»ÖÉIæ…æ6‰7ïßßuèk÷eóì@,;5㌑BGûõ‹ ’`Àœôzw¥%ª!ǵUxìóåØrßI`Ž¿ì\ìœj¼nÝ4£óðâ›d¿|±ðíQ_oq„€ž|Ïl ÏfàÉÛϽß¿3tvífçÿ¾çþp‚.=™‡gUØE¥“ׯ»Õd‰¡P*š¡,žU×Mz¥6ͳwå[0tñuFŠDÏû$å­ÓÏž›Ä#Ú˜f}ÿöÞ•§Oß²¼õ²¬,ÌSœG4 ¦1wQØ–¶—Îóm#˜z¶DÇDgy¤JÞSÔî‰ Oû2 eG†Û…ó©nÝí×g+ÏãᑃOã awÖçä?.X{ã#Û+n™ _#zR.“¯×ðHdäÅ W#— ×\´þúÞŸÊçÉï^ðùãc‚[ÊŠ¬ sAü–‡:¨±¦ ugu§¡ïdÀ¤)¦f%×®iÆàkÊÊFFgõ´×}Y¦Ïj1¿¨p9ÅÎÊ*2;;;!áõÙõ§DlÌ­¬B«—.Y¢Î|©ê¶öiLF!»|ÒÙ(üº7Ÿ·4~/[¦q2vÚçµKµ{o¥N¹gÌf ¸ñÂÙ³Z®ÿ͘Q÷ù³ÕÅTSóÃZ*ó‘ÍX,ö“†CSilIII]]]ff¦¤¤¤››[qÿŒ3***ªžË¨/Џ¢²x[ÒŠµI7~)ên™}årNBì´mñdwÁwó²gÉk<(±¬rOŽŽ> ‚…‚¼‘ˆðÓ—™WÔ—ÓæYû–]Öøîìʕ瓒D.¬d‡h››NJj|[vª¦¦&Ù\Žõ­&ÛëÈáÃzK‹‹ï«.¯¬|WW'!--­¤”ëZ…—;r.!a²æþãÇ«#•ì{Åy4M6n<yà@ÙóKTã8õX ÍGÌZ]ÝàààL9‹¸­§¶~Yµtøµ­åIë/^\œ+µb…¬¬lbRRŽ÷Ç‚GL¬­­ÁWœ·.+Û.È7{vÆ¥KÛÉŸÄxµ½|sÍ\­Ë° Ån4\þøI²YOseP5ƒJ킺v ÿךè.Ú*'==¦Dþüò¦¯acÏÅZõ8 Þßé½Ožè P3Ü݉åOuµÇâ)ê^¢=k±2Éœ]讣s«øÀ²™3g’EK‹‹…æÎM0‘Ii±Ïâèê‚|;)++ZG299YSèÓ)GNßçÁ ŽFF:::Š-\˜™y匽ڱUBóçÎí('äµm/Ç«¼íåºgOkΤæôëÈ ßXÈó ³Ÿ kañ´¹Ù¥ÁÓÒÒòaFÜýû† Ý_{Ú¤×Eï¬þÒõÁJ4ä@pÿþ@‹õëßeN«äÔ¶·­­ê^­ÇÏÛli)"X(°@ÑÅÅ¥fÔëž}§SRöU—¼ðþ¹Úú‹ 'Ö(òÐ!ß>’`¡§§gQÄÒPßw3º®Zon~>©1;cRj§B²5¾uë\øßZéÕ¶iÒ¤íIIIyy«@Ô°T yúô©}Ž_ÉÖ'ç­."øzË0¦RSõܤW¬H>w® _¤"—ƒn¹u¿¸ØXJjR}Q[Gÿ—î 3AúðlaqLÂþýBúøÑa“2gj }à–i~u‰rÜÝE²22ÏÙ)Rì>‘xBêh3g† ¯´D´ñ·´´L¼½Ê´¿¿§¶Øë0¡ @ëž…ÉÙÙb™ý_{ðx¼”””ó³Ô–/2ÛÄ€ÃzöìY„(j²ÏïFqÆiKãÓ–œnhèÛRï¹)ëðNO¡O۩ů̺TC¢‚6Tí‘5K‚ïzûþIòœ9s»(mjÎô"“ë®]ûvóLÆÕ«ƒÒ_¾|ù¶e0˜È¡’æ3i‰A%æW8„ã¶åÌ^z·ñJî–úÅ‹c·Èʪ$½fíÞ“‹ù_Ôß [©¨¨çyøð§>itÔ¾j“Un=­§ããó^h­_?Ç™ömJAa¡UêFŸ®÷OU¼Z‹KJ4…æ/XàH¥º&ôu7<úÖø@ìíô­z¦¦½^[\&MšÔpçqâZà¿€+nºñ¼s}Ê$EEŇ'ÔfÎÄáp‹ nã²_•JmèÛ\!ï±t®ðü{#µK¿.ÓßµÜTøžž6™ß@§´47ï[L»|òäÉàài»u¶v½?ró¦ÿC…•+WöܨTQÉŽs<=TÞœ0TÞ¿TñúG‡‚wwóôÕ‚/•ñùÒ’šÉbÉ= Ÿâ~uûqWø&Æ÷£0%4–ÁîØØÅOêo„''3455ŒJÓåÝ-UÓ¿õNÿÐ LøÁƒ{÷À¯ûlXˆÝVB“[¹r:/ocOå6ø‰ßmmWM„Àûûºš+¯ðó_¾råŒQì"!¡v»å²²ÉÏŸ[ó_öíqãÛack›+¶êLyѾ…ËV®ôíl\Wø­ß«-¶àÕ¾.¡W?”5”¼ ÀiºæI@ÃA zÞª ؇/çú3ÛwÂÄ€?ý5»¥‡ýUùHMͧ/c<¯Ÿ<¹¸Eþì¤"¡kKµ£cb>z«vÌ8®urŸ(ŠÒÓZSÛ›ïp\#p“ŽíîaYà…¦ö¿]èáééV›cgdd¤¥EùÒñ¦˜|Ú±4_Ü0$)íNžÃS3'§öF«[Þ`ãFï¢Y@H¯swX3·šš*458$¤#…F›ÏŽÊ‘ÑÉÑ1Ô¯dW~¼OJ}©ùñúl--=¿ ø_sqEäz9 Þ¨jnÞq'ìàÌyÄ6m•YüÀ«ùö½]¸e>oÀš‚Äéó±y&‡—îë#¶ ,8xÍõÊšµUÙ~™3fïY·®æ2´Ì‚ªi²”ÿº¢:jϼ³æ› †»{{oׇ²ÒÉ~ÌONm3*Þ4˜7×~l‘¯Þ«b¡:j3òsÛÂKÛ¢yE%—›¶¦löó³¶u>súóõì‡sæÎ]¥2?Ù÷•òßÎ „Ì 5?Þ 8¡»lÏŠ” NŽ“zãqÝÕ™WëéÚœØOÅÛ±-[ q¢[õü¶Yåêðx‡Îþ6uªNŽoÏí|͇EES”«:Ãp†è‰¼¶Ø£¸p _|]~P\}PŠ>WûIÀši¶‹×(#ï9ü$Vu¡˜ðõNÃõë±ÊÊþ=/'ÿ_[qûöU1|õžÝ•“J9<<¾Û“<úX¼iw‹/Þ·{÷ŽïWZY†„¸M¶À3yHM͵R†û7dv´UT¥×óðØÃHœ¾xqÍ%ujÆ®ðRå­OH² ÂöøO™m@BCr˜®Â4dž„ÏóU«W¿j|pµ¥ÅNŒð’Œ<æT4‰g`RÒí3˜¥j[}ß›Ë?¾¹¥^ÞÝG2O±²Ò>ƒÈ£‰šúîÝçÍrNŒ°§öÌjeqDìDX!Ã~´Â­Æ†À|ù…Z”ÐßÇw©> „h5SÓâ¯=¡‘‡Ÿ(Ø`=zÜT.L“"åáïÞMaÄ»ûûWÝ‹ f0ty ‘³BªX®±²Zoë›’•u<+ëFBÂ|[‘ÌÄò¨ùü«x”$Ñ”vÛz]ì¢S e¾r¨â©.ÓùÔc§}ÝžrGÖœ2eÌ_³ 쎓kKs+Ýð„ü‡Wñ¡žÖ¯¼Þ¾—;¡úî}Ý{]èÓãÄò²ð)<ðÒöÏ›@³fmÍÏwÎODòT•Ü]³k¿©ŒÐ'æmÃ3ß¾¾ÁMŠŒ$ôu>Ì8{6¢¸¿¨¥*ƒÙÛkÆ`4ÍYÆ»•¼ÊÖÖÆ÷ë×ü¶ùAùkW[k =©ï©›#Œšƒä“L÷fgŸ—xi«±{÷º9 -^|óB$yw ½¼,´ ëkgª ö.Pj|ÛŠ™Ó´iOÕÕÉrr§ÎÇíò/-¨sX¢F¹7™#±k`xÿt&)Úˆ©£rÏ$¯ž´©g‡§ïàEI[$¥ääî=2)©­-{n½`‚ÚËWgÞ½+׿ÅÇ´}ÅŠi±±éé˧祥=NO·‘êlÒ_Í`œ ÃÝÙ7gIÃ[›¬‹›\L9-*±)§¯çk¼…¹‰Q\©ÞÁ½{^w}: þ¤æÕñÚ?yæµ)w“‰Ygç½îÄ}7û?“Øw<_lGâñ'äÉú^¨ã¨¨öh¹G¥zÉÉìÓR™58Ø›Cfçõ-'d¼{qÕOS³ùýÓÍÑÑ.D #> @>éåËo•ÝÜV°èóâ°°Ã÷"]´ó=yzyËH@Ñx*ñä…°5RÏDD,•àt(–þþb±¥oÙËg… /¾äqÞ¶zŽ{Ó[“ýا³´Gƒwïíûщïï9°lº­E`¯yëM­‚B¬ /á0£UÚ884g²wë2¼UÃ÷ìâ»âÙõä|~¥”Ôçr5g/•â~Æiò-NÑÔ¬çÜÙ}K mx<€9^²vÑÙY”û«úôY0*@=¼]+\^`ÅZtTg…»ø®¹yÖ,#’—âz÷g©™{ÖkžâÝ6SæpjB‹‚‚Eè̤øøhÃÔ ).;«ÍÍÝ;høv°Ø+émΓ&‰ómÈ}Y]Xhºñxl“„ƒ(«jb[õ¢)Wò ϼÖþñReú×,Zƒôìˆé‚¼ódƒOòÝ·ô>ï;NÒÕ®ä„eÞú@ ”ê’"z q_TTtXXxXX©ñÅà]ßnx|èOU´i‹SÕ20èírÎÍ×™výÖ³‹ažžšåIɳ¯mm|Ì3»ìYÏÅóÎA¾ |!¾^ÇRùIaÓyáõäU@臤êGè]½ºþY ªêڃ͈¦›<ñÆÀrÓÓO¦Jr.n³~ýÚFjžˆPžìÊK³CfG,,Ž€cT7ˆì½½\z¼­çÕ&‘voñ üiy>\oé¹¼jÞµkž½½ês¯de¿«íŸ·$BxîÜëž®])ÞU ž1.š6íâmmjV¨‚, E¹å =9``#Ãù«U\ì“4kyÁBkù;O8GV®\±\§·ÒÈÂâJLU‹qÜÀ;ÿ—6«x4¶¦_¿p¡´:Ó`á©-¼k€›`KUUÞ«å²¦Š’À"}ãÆY“‹êÒ^¼ 2k7iÐ÷_dz ˤlŸd` ±”(´~ãÆl§2s%¥ª²Sùkg}žvóÞÛƒ•yƒ*³÷À2g=+òB9²îÎÐýUDñ£ù¥ÇP_ü²hQGsØ‹²²u’oBB ÷9Ÿê6àÆ³$ÂbýBx #ÍÖ½ZïX^¹‘ÇŽU]¡?­X³ÿ©Xa™QìߣŸN)Þ0–¨VÓv¦Óú-§±òÊŒÀþ#|mv?¿ÅÈH7  «ø@ˆÈ"<þÅ:cŸxI¥ì>ž&Õ­Ÿ<Ÿ¥î_iI$-Œ&*©¸.jîµ\³ŠGZB¯§•WMM—ôQÆÄzŠÆ¨ K„V+]»üXÙ=Ï`ÃBä©;ô¨æ¸e‡L^çé9íü>KÑàùλ °•†Ü)ß ²÷ãåL¹#³ ÷§¶^×m\{®àÎ}"•vߺÿü¹¸ÜºÓYÄ[%kµÓJ÷ö7Å£EÈððÞÀþ«ÖÖÞi&çÏEG*åÚlÜXôÞ}²æþmŸÛ[ÊÏØ~Ꚏ[:ã•ð»w·KKø¾ ºMÙB44ytpšÀ¾Gkng¯"Ïì3ÑÕ-/9„2>á‡ÄŠ·55]©|ÝÆ|ôîþÝ»R– Ã6º=ª[T‰Z´æò]'Ž„Ãùhæ×ÆÕ½jà¤&%Ýn»Ô(ÒnæQÁÆÐÙ¥âŠãÒè•}û¤€ñ¦´ÑŒNì»é^GŠ-Í£\¼á8XnßÖÓÿUé¼¥“ÙÖÛÊ2”›ŸþüömïöìU o,Äúfõ8‹Ïʦ†v•ƲÎ]]®­­^åå{£ E#Ь8÷ž˜bc£¼é¦ä¡Õ™ß‹,-m,-£ïܹ_´ðb|yÔÚÈM rçÂÂj$¤¥· ]/sX‡‹Ûľ <Þ­Ô{«Càµ(§Í ³÷õÔ* 'z¶]óp4…¹‡'Áká:©g&ÉXñY*nÕw,,HÝ›&i'>ž:Õ}Šja†Ô¼ÒâÏZ#U À°·D½nVÕµìþŠNˆQðxúû…fÌÚtïhyCO[îË+Ò‚;xOE¶·R?$¶°o“õVc¾9ByëŽ!b÷¿ê‹c3üÜñæt}UTîÞn#&«zIýÒ­;t+ ܽâ]¢ocbÎÏ è%æ1{z:Þº\P˜±ãÃó)få§»n¶QPì¦Íq¹âŸö,$‚™~ÛŽí'ªÏ‰(r­u»¹õª¬S/êþÓŠkˆ+ W®ä,¹ª«{56¶FhjÉÝp»N´ôðÒëùÃE'ãÈä…àïêU…¡ê‘ÓôúZ§¥ Š£´FÃݼ×Z+4ïPS!ðÓEIÉeÅ õÍj:g0M¥j€’ó´Ò¬S®_wð"Ø­u®Î,ð"ó#À«p¡ˆè[åýçÎÿTàm¸zuÞÎå#G*Vm=È##'›|%CƒêzÁ£µ~…G<ƒÝt*-­GíLbWÃ['÷7wïJ„ßTì½%;Oº2ki¸‹Ëé” Ô;ݱѲâ磌«ß°kË É§†ÊÞ•GØçŸ®ˆûØÁ¶ë³èœKa-&µjžBIw·¶ÒW}«}hnéÙ¸v¥¡¡ÔÉÅa=Û ¶~>—⢠ÂÚ«|1ÿþ;ß•K'Äò9œ9qáÔ•++‹¢;:ôDCôÃçG#ÉØÇ-FëÖikog&eáñ¦Êe0º¸ëñ¬ÓiGŽHm×ð½ÆëµIÚ½í凛¾…­5ìl¯6ss)‘½dtÝì¥Ý÷î}+=Ý´=Þ`ÂÔãSƒ‹ëžvv2Ù÷äå±Äôž¸÷$a[¡áZ× 3sViƒÄúÆg–®®™áýY †:É’çfåó¾#±ý¡…rrkk´Î’••]4÷òŒ–7¦ù­g³‹nïÜPS±|\U5 Ûÿj6p «'…a?ÈÈœmmMêÙ¸]¤Fn}Þ²ê_=2Ò9Ë—7_!Ý´w×¾´kRBŸ˜65^TЉQ1\‘•µèëW•Á[4tlyŸàßË:¢:MdFO=°¾Yýéû_æø;•Fì¹»õËåýù›aW/?æp°¢¯Ž{okY$&ÛÝ­ÉbÍ=y2&ó 4MðÎIí9fÒÖ­/\ž#׮≌ÚÐúʽñqâôëQñiK69aï´T1ÎÝ®ûø|] }ÙÅ¥éÚ“r÷œ²Á7±Ç"ÌêÓ 3«È¦g­ô ž|þ||¨°#Íúþý¨Í ëîÞªŠ v¤é!Ûþæ‹{6§÷ëQ±¯øì¤wõEm=Í3ÊËÍnøùL³µ‰4utôÚ¼yÎîÃbK¿eæäÌŒÚã p;½[%7øÕÇÇ"<Üqñ♽ΨxÂß¾O0“±35MHñõlõ;|øð³Nä4Á©2)¡§ßé¯âùX•Ñ}ÕY³|ö’ò ½þŽÄO ʘ+7@Ç;3fÌ©8=k“KÅG±ïÅ(T%G¹¼zãƒ|͇–V††B-NSº¾ÙaITfÕœ+£±„ÌÌ[ôâaœ=Þù¨ò‹-·£÷,^g¶q£ôŠ›É'É@wÈ'%äîbr½6-‹¹Ðÿ 0tð³{.pQü¦NeoHAÛÈAd4xešöÑÕœ-¨%›µ8™Ú×Òéž.OÏ-ßlù`Sœ†•Ûs÷ó¶Ö°Øl\z}ŸÐ‘5k $†Ö‡÷yæ.¥ ¦ ›œ\õô™KI¦¢-Dž"È1ðj†@²`3€yÀ¼ÙWÓ9¯ïçô÷Þ+;uûæ —ØØ3ÛfG¿¥Ø9íJá?¾¿µæ¢¶ÁîŒóz×V]í×GNH¸ÖYí¸k{AtÆH±ç펢ÓÏ}íQalÞBl¶²­ŠŽ´:iõå l50XÌÒ²±³Û´Ö9%)iÇÑ£;²²&»õÅlݺÃoNl`{ÿþ½T5+àæ—T;¼“ãÂßžM_{Õáî‚`aÕ1Á8Xò÷J”7ÞW†„…ÍzÛúmí1Cï–¯öíS‚K)WHú]ŒßÚZ]^¡¢´½¸E~ãÌù7Îee‘ddêê 3€ªõ÷‰;Þ?¶ÓSR]ó fåÊ î Ç9žÝÏ^¼°|›‹9?ãýcvÉ–I“n2W:“=¢ÝëïTUV —”¼ìCWWùz>¦ª%U±àì3Fš*¥ñ‡# \É|y8éâRÕªªwïEh©,bÆ›d‰/~HA+.v½Á2Pl¯êë †N'µ¾Éœ65d®LŠÏìÇŸêï„Y=~L©º¶AÁNy±ŸFôÛ³—>¡º[.ú9eñMšïžlzkÚÔõ&û6Qµ5µv[ódß9¶—s[k_ftÜ3±µ†&ón:ɯo8ç ¹ku˜L¼h¾–Ù„Å­G. ¨äjܹź½&¶²¦§³¡3˱É/ ÓtÿÞýìÚŒ+‡:ÞÄ\¾|çñãŒiÓ®{p”çuî¿£ ’´.f•ËãtFä¯ï„©2äIŠZ—/ßõóÿæû££XÂÕ]ûJzÃ?;xH@[;­°3æÚµ%÷¯(­H<{åÑ©w$•*¢ŠñÑÁLl«^7Š ØI•J¹~ŠS¬&#¶¥¦æd²gg^.Nz½.]¤còö«ØíQâj[ÏäÆ ‹¾M‡îùUzóH‘‰UUo{y4’ sîäÉÍŒäPßÕÆ±Ê“J[Ú”H/Ÿ=ûh²‘¤íÖ_zìþvݽá6Ö&JŸ¦‹Ì Jxû¥s÷ž ®H ôu*G}¹wåâÅoëï>yòúÖ­¾ fUؾ;ŠÖÓ’Ÿïðé»þ¸ê+ǽýu¬J¢zå ¡ûbŒƒ‚.Þ* 5ŠsÓJ9FÉÙF©|ØÚ¾6‹\xÜ.{c¾‘éê­¾ •ìñ7¼?&]¿žsýó:ƒ’˜ÔTu]Ýiff‹mm KÕJÆÔÎA#ó¶~n·pqqc±ÈƳ§¬Õ™µÕDv?Æ÷?¼ØÕ™}‹6KGÏ̓]f¾+#¢üñ¦ù" 7‡·ú ©ï®0ËcïŽùðlih°ŠÇæØÈÈ)e6<_׳šúe¿êö<þâREïvÏõëc³¿>aæ|<\˜U¡p*h“i¯¯”‰I¨ÿ3“u®Ÿní®¿tc–ŠÊ2[Ûe>kW ÍóÞ}ëúõ3.Ô MXwÞð)Ç3_ž|dÒôêÕmç9Ë/þ´X%5ñt±‘ €Öž¶È¤DáÚl«ÊÉY³¤ñnnžh³¬ÕËý:´••‘r¿-qajlwRØ&*»Ò÷C³_sÞvHŒP*a#°p{^ô`SKTŽî‹ h®ê‰ ›ùY¿#>'ç*àiZZÎÙ³©gÏæääkîÿX¯qù*üÝ`Rfî>(¹Ó±äã‘•‹ón‹}£tøh΃âç Ñíéû§ ¤·>•¸âÊÑ––µ¨¨¶{g¼8«äº§ ¦á]•­ÌÍãÏç ö¦ÅMŸ—pj)µ”•øàuð.úô ÿªúY«‹$ÆÜ®ÕD”N¦KÎÝ.m°`þ“KÏp·NèUU.k×ú“§ø’êõ6yt}=XïèºÈMLúÇ-m›J¢qŽ §úEÓ%möîô¸qçaÛã<ž•hVá¾…—Šhj|xW~nçξӧw˜/g)ntzÓì‚ ÌI¼ÿmñŠmÝÝK¼zêß¿?C2·¨»ÿqÕ½cßÚ“IJZλÌYå°N9+û«ä2ŒQl–ŠÛñ×\zó7íOŒ¿¸x&t{¦§ÃÕ|öæ»òuùýú)?_¹ò½(›V2éÒ"Y³}»*tME÷HŸ9uíšÞb»*$×ÛØfkk%´Õ*Íœí%Àç~ðPèõÄDfyù^3³½çdæ1Vj¨C=½}[O}ïKól/ õÀˆÖÀKÊäi8T•ÑÙß§Xs}ß›íÄmyÑ:IKkãn9NVrñ¾•UíÞ]׿ÙijºÚÛçîÙs0*ªµvöé°ææ}²ó…ŽÜU÷ð¸PR|éR&pV½½6nnh[ÖÆô¾víŽ(LÓS\'°EUV§õaž´å= ÷ öµÑÖØÓò^z}ë£ÎÚC2QQ‰*báInÔIYµ/Å>ðZNŽÂ hºhcÚ”í8YB{WìÂ%­RV›øÆ€i~l·º¸hƒ¼¹v…‘Zf²_÷ ›¾BJdùrÕ‡÷Î?~¼èŠÓ«õÒq†;¼mDÏ‹ÞçÌæáYâ ׈(ªv<µj ØU¡%±ÄbêTêé¹Ö¶M=±äNÐô73f<¼TQÞú)üµ¹òëôY·ì¯§UÞ¾}ØËõ¼Š¬‹¹ÝŸ;î}Ñq–˜#d=ïá!i‹é³ªïÞ;ßÑ~,ËëbhÊ Ö¥ÎÆub–{`qŸ=»d¥«“C<ä쌅öœ¼pá@XØÉeÖ ÐÝÅÀ ­ "››;"Ô®_^lP²¥ì2¹P ˜pr²Ê›>Y£µk½ÜÛ¤¤ 3×Ô98lëj0°°y±èæÝ»¹éWŸ.PLïøt\jvòól¯¢ê_>U\0qvöO¸ÊóúõÛ²Óì¦VG¨å¤é›Öq DšÔA«‹/ý¿ùÏ¥÷~¼èOw^y%iiW× Æ@C©®›ß›š˜ 1åQèÛ|_VT¸7[¯>(ÅÛ}°þîÝ5ì¦Çð5éï•uKë ê6¿Ý»}ìØ6[ðRÕÛfסC]ë;ŽˆÌô‚o ¶wï…”­fè¨)ç­ô+*®Ug^±K}™W˜£Ì®+XÓ£ Ò6€Š‚ðøYâÍ‹«µÕ|X{5Å‹k=†*œ/É œ,b0nÃÎïS7ZDžØñ±¨QÚ8u…Àn€ûøøv™®_¿o_õÛW/†D5çÑnÜðWù6Ðÿxû$‘£{n›ذö¶›k‹'{o¼)ŽJòj¶Ç†ËNÑZ^`P¨Iq~èÝN §y&;”—^÷F}¸µ;=BÝ´&§êz-ó•d0¶;–l±z&»Ôêí½»^µ59œwšôÆ%î¾ ñ™™+‰ÄÞºB«Z¿úLèžj›ýÁ/7éyzúØØlY³¦Ì>Ð#ú˜“Ò&—úw$;‚˜(Tð¾ï| <˜åWI;&öÐÂüF¶¯U·Ú×àI“Kòɽo/è<ýâÙµƒÝ)YÉÉ_=9ØCuÊsL§ob©‚0Ÿ={å·oÞðt$¼îú ”<+ð›c\ z¤“mªnYù™¶%ê~E·oKIR®†„È•íY=õĞ؃¦Ÿß?ÍÞRÿäøñ”ØXWðïÓ'zó.¸^.½À­’õÄ„Bá“ýëÞ°mz¨!.rm9"ðèÖ”íWw®^»r »êsV–ˆ}mT¶W¶;å@:¶`ëFfæ½ÒRï7wž8QþêÀ¹â ÙÝ÷«2ZdeUê²OLö×ÁáÉÙõwG;ÙŽ3>w>¦üñžysOhø˜â6î¨ÎÄ`þ’O\‘6:½Xå¨À:ÒÒÎ@«)’’]Mqß®{)U?÷/³áãì|©³Á +?($--u(‡K¼@¸Ož±ÖÃ#¢Gí^ìꪶfÍ‘úK«·ÞGÕ⢠l]ºä“ÁÔ`º4ç­YžjÒÞ£¨ñîuÅÇI“Öü(Q~&fî…àf MÓ¦Û—”$oKÊǼjn~E«õß^x#¾< 8æÒÒCjjgÊœ¶ê¬CËìáf—é›±µElþæ#ÇîOîÛÒ²7·ï2`ÝTÀ:Ñä³Þ^Ÿœ·T}a7ö>ËU-±OJ=uŠ ‘Ûý±~M_TúÁƒ¯øxY^ÈàÐÒ×Ì\µäs› ^3””¦ûœ7– geõ6>Pih ù7S*³9´}RÅÇúä9s’SSÍú¶\ ámèØaäH‡Ž$& ŸI¹éÛ£.\uû6¤Ù²[Õ?{–ë÷Ň[·\÷ó-?D£Mµ^(Üõ&A÷Ðî ­åBÖ{ƒmݵëÉÚÈËîs¼Z9]ŸŽë¥K¾äx>àßÑé|Bí¼ÏÀ$Øù1xׂtƼ¤u˜k—PæÁ«møó^¿»~ÝQX¸-í`ý‰fŽ¥Xi›Èíßö÷Ö§¤¨½’Å/_¢ê-,ê½Á.–ÕÝœTrh殣˦¥Y;­_ogcóñ‚íÃ{÷ÄŠÂ-lÓ‹_TVÒë´œ=b©UkCB{ÊÚÛFkW––ø$ž>Md'egw¦Éüà³w2ò)½ŒþÞÊÚ€º ¬}ÑéAŒùˆQ…_pUÛ©Ü8–qEá+<¼0×Üì„D¯ïZž´ôéÓÖžÓ-'^¼hoçŸ~õê¤%†¶6kìïœ8^¸‰µÑÌÌããë’—/ÃÖ\¸W‘1Iw=³­¼¦Æ÷†Ù³AÈ­¼ü.töÅÓæ Î(ü¸¿h©Òãr{íFó;²CòóÒR¼§çµõë´ :/Ø*-%½¾é¶¸OA.踺ÏóK ûö¹Ï›W©´ìÁ<¾]mKËÊþ-@€Å¼¸ÕˆùšuႾ®nÉ}C¯FCŒ¾>FE¥ÞàÐY¡©«—¡lúì»OŸÖFŠÛ§åñË) 麸´v·XÍ›{m{þm¾’REÁ 'OnínÖsv^-°pGCèÁYêCô/˜ê l~Á‚"tÝMäÈ Ðèú÷O/|û<}¾Ì\ï× kŠ———ï ï^f#€Zå f 4ðKO.³ÿ‹ãŠíIK6€( ©YS~æéóžYÎζBSQ¸§QÊOE¿¾¬;,ëP+Ñå`ÉCpkX!½àõŠ¢šêæWv$ƒçÙ=;w6mØà‹ÅåçØa_¶kµ]Ž2/Óv…‰« -;Åòy᪚#{û½Öd qþž,‡mGö ­9è¾THx³ÌÌ‹mµßÖÌrü8}»‡…ÅÓj¾¼¼¼|ó—+p<’çÏßwÆäXRÒâú;eº~ÌÁW·÷Àø„9pÊt<Ý»€ \™]MÄÀµ¶cH×hÔ|ÁÈ™íë ‚9Êåùù·ªª¶¼3õ•ÍêÙüôéÓ9´n|êYÙØhúàAUò“% WÛo¿-Z¸Üæö~ãÀ9‹z5\]¯bñl?ÌSÐ×+~¨Ty­Åɬüì5üݼm;Â"ŽX¬¼tð-'±¯ïcHH¬žžÝ-¹Èêž²üZ9Wíõ¶|“­½‡•·PbR}¬Vˆ?}šóö‘„™™™ßC0UCÃ}/¶Ù9mNpr.¿]—³ÿÐ!ŒowóÛ·ç•ìs|ú>{hj¶œÒ˜öîÝ=õÍ‹Âøg£§X–¾vãógÇÇÀú45É)îÜYÞßzø¬ò°^˜du׋/ô#–¼S) ¹,jHÅbÕë~¢7èÜ;0­ý«ÊÞÄGøèÛZŽÎ·ÕNg?uË­—™ÂòXZØÚ†B¡–©†GDÌö”9pvîôåöºÀ`š»><ó÷ókWSípÓW™Ç÷ñãÇäsÓÓøÑÓϚϜ>ýÐC8ÿ¬Ý±±(ƒãz<ë·GŠGD¾xòrt¼áüì Èý¾v·4 ÌDø¤­Úã$\¨coÿ!£vPŸš›*@cV Ìv”Ÿ£¸OrÆ£ís úýæå<Ò3MOkØ¢A ‰‚*·ÛO5°ãˆ<¯dV®l}^·ÙÑQ|Qo®±FÿÇûQa––ûE&óðTš£ËLJ$ta²šøŠ¢gb€+´m)p:ïÞe÷õ)úl=AÜúım-<‰²ž²m¹ÌJߘýí9 ×OÖY[YÉfñh‘â=:éí–yíØ‘ \—*ë–­…ðc-„,|ŽhòEæº5[íYËküßÏÖø¬U²…Gt.ŸoÏV¢rtHÈ&™]D_Ïea¼]@kYáŒáù/}w»3#ælݼysw[màÇ׺u’“,^';'G D: ³î††E,ÁYZy%Ÿ?ÿ¼Ê9tçóèg™OVVÉ©ZéÊ/ede333×Ëlï ‚tlŠïÞÝúµ[¡Lîå¼E›Ab ¥¦á]â+Ÿ—õ‹/^\ÙãÖtCÃ…Sxó˜àSísK/…J{Ç´·»‡«jŽpvvp[u¦|ÊäÉûöíÃâp@ú‹ÄÄ.õKßµwï²¹©H­nÅmç-çlÝR‚[´¨‹‹ÕÀk é&\Ü^ðÕµaÁ’ˆg헦ϼ6é^1ŸÅGíâ.?“ÃGJº(fššÚÔ—/ûù`{uóS¾¢9­ms-oÏ^_S¬:KðìYóo£ë ¶u…¡ú×,£éù3 Ðhôëׯ÷ìÝ[´oa}SO޹ÿæÍçöî¨4ß³}û¤†¢éµL絉åçM8Ûœ v VæÒÄ­õôή©þÔÓ3»×ñàrò¥Þªª6LÔ:â/_¾<¨TÍ;½ó\1¯à[>‹wMvîV-{ûöíîyÒïß¿ïýúµçÓ'dÔýX/ÓdóµkïÙf¸Õ)ÏŸïV›£æÓA³³«ÉË[¥ÜSÓßÜüðîÝ»SS[ƒ¤©Ý¼ySBBbëÖ­½½½'Ožä(×TW‹k ©©Ý êtÙ†XÍbu¤Úe'ǹ99}.œ­A£Ñ|Ÿ<9”TaœP¶´}yèÉûç;†Æ£È«Vâ›EfwYÌùzç†O禿¨¸8xwàbNï{o_‚ƒkÀïÝ»”«Ú~ÔÈÈÈz­¾~QÿתJn_ǽÖÖÖÏ.:3d…žÖøv®CÏ7øÒÙÔV•1»¿¡ñWXXXMMÍ:èúu¢••Õ|]¥M7D……ƒd’Íg¨K”XéòlÛÎw @â\}Z²Ò1OF$dÉm#/;xD¼µmyÔ1ÄyÛö0VeW8­âaœFÑ56›ýàþ}'¬¦æ¤kÒqök\]]ö$<¯Rl>ÓØØØ¬ŸgûíÏs@ŠJŸ8]æôåË™=©Ö—§é®7MžË3µ‚GBh‰u!mn1y[ž ¡š²›¾ ´fNQ6·Øñ0íúdgÕ¼¶ÖÖ$™ùüÓjA¸^¿âÚ¡Û”-âìOoËFè¬Z]¶¬ðÅ‹­ý½]3gΔÙãéáá³u+EC2B.•ÃL¡ÉuÛqòË´MWˆò¥@¼Sœƒ¿ §V ãá­Â¦´€i=×30²ß}à@Ùy«‹ij€‡}6‹DEªª¯å€÷yÎÝ{÷>Ý!vëöm×çiu÷£0‘JöååÚBËI¤Ê§O…õ–X\æ÷™_‚|òä‰ßÀ—¦„È.Â2¯©\­dÞ£$’ê-wžM=¸†õÒ ^TCIIiª&” Nî;ßîãO\d­rz³“´Õ ÑO›Û>|Äâñwtuù÷´.¾¶4îôiÓOón‰ƒÑÚ¹&‘©”ÿ<ÛK©±bàaàÀ¼çé÷ïwpu½pêÔï‹“÷ˆ•L«ÈöléhowrqIª–ÅaX[‹¦®Z^¹Â¢z5ëõbeŽSY‚.Ð_‰$%%uÆ(¶ ûÇÌ—72‡nN- ¿í)Éw¼§¦¦¯žªy͵ªâéSÞOŒêšG‡uÍA gOž¬L® élz(¶hEaˡş çü>·ï^ 1???pÄKDEeNÏ=®º#P%ÖŒøB9ÑËÓ*ާ5˜ß»5ÙÙ4“r öü^Gû¶ëJeWYTïG¦I5%/;#ç¶|µ—§gªm†‘™Ù¡5‰o/puu} ¡¡q@Üþ¨ù–e%»õO•ñ \j9~üø§O—¯oîEÚÙÙÉ‹|A¯¹çtw·ç|Ý…‚¼Eø—Û|ƒ +§ë®_¶ìT\à@æ™3¡·)žžÛë<Ívœ¦W˜åÛÓj·(LêçQK|5ö™uÞ¡XÄú»à ™0a®@ŠÁ›=ºOøÏqÙŽ#á!YlÑ.È‹>~&üø¹ë6:ÌÜ7ÕÀH•?¸cŒÚXØÝ\C`6.|þ±º13¿eŸ™©éë¦&ýDÓHE»ÞæJÌ'íC‹ÃƒÌdæïœ N£\Ú¹¾ ü€~qmxvyi©ÑÁ•·„˜ ñ/oõ~k‡uK¬ä“Ûß¿®Œ„‡6eÙöÛqȹ×AŒÈÜÁcº'''ÀÂBøZì‰÷ºø>ˆÆmß¾}öU¢Çû'|ٯܻ5…j²½8ÐÕÕå `p†Û⎓%³¦ÿ ÜÜó®ÝŸÞ™IôŸóVîpì­Úâ}ð +¸9¶CÌ’GˆÔ°åöA‘‹Š NõžU«ùf¥ø¤*im•ˆpw]t¢ìr3H³_ìß¿ÿîÝ»EK¿~ýš‘žîð5&&( ¯¯/|±%bµ£cSÚÐXhõwÂ'6»À¯æÖV=¡5´éS·6­n­É^¹r¥ý oày·ô}Þ"ñUøUqa[ƼG²_„%ùX­Õ¤¾3ª¡/EO^RF‚I^°Z Žš´*õUÆË»Ÿ•ï|¶é¸¸ÇÛsÁ’%¥Íü"®]Ã{]™ã©ð™Ø¬¶FÐ Gî}K ˆYÀóqTÏ`o¿ôÚ·×·÷‚dàÎ;Ž¥Ç?vtDãœE”«Í…f9.¯{èàA©uÑØ­ŸÞ&›y™—ïÓ¿tÑëOÝÝnU×Ö›™±k²</^¬%7 ¸ ˜ÁfcJ„Yœ»LëiAÅåøz°‘ísõs×N“ˆX)¸™Åk7sê”dÄåw´ï½²UvîÜÝ3fôð'ok¹½k÷î]]Pí2·ùóçOåõ›å·è>¿JÜ:ÉÒ¥K§jR(”Õ,qÆÎýÛÅæ.7?ïÞßëÑ|Y¢p‹^¸õ3¡ƒËÎuù=*»áñ¡âI²Ù%ù‹›ù®ÏÍÖYj/_™ÙÐÖÆcüj \ÐÑAŸ¬‹û®–éÕv"((èܹs™™_@xûØ_VV6OÚèÉÓ§]==E9”‚þpž*ª›[8b׉/*ªŒAEÝgæ|á=ÏyÓÔô¬ªj¯‡#“yñÜ¹Í †OSéâIíõî;Oé‹KúòÔÊ~á¢Eï?| “õYt!Bóyþ‡¸& xà©*++U­änl *\`ï·½¥ùýûEúý+ŽŸ«,¼-¡¢¢"#ó(3Ðd !¯Ïo%./N^£^GýüàêóçÖùû÷ï] ´Dmë“GLlmž%ð=Tˆ7ó6Aå!©ùzêèLÝPPPسgü`!!šƒƒCóóK…× (í½­ìÛ}ó¦Zãʇ4´WkµA¢)8…Y“µ‘p(gõ¾þW­í…?v¾yƒ'éMm~5ýV†Ï¢ÞÎzè×cª;.·önxoqà"fÙlÂró]Ånr|_yâŠ3_\uŽí³”K¢LZz¨Dgý'à›ñx|3]þìçÓëXËñ‘ì.'oö^í+·ËéüŠöóboþÙrz”âÇýýyÛ§d*³çNQ‘³“‘HŒ—‰ŽŒÔ?i’Fq¾Â ør6»Ì‹ÅžNLÜ`c#ÉWðq¢ö3«Çè³ ÅH\ åË—VŒøl\Z#ãí½r٨ŭԎ>¾‡óЪ‡ê$îž¾zk®uçF¶»6%`¥pE|n®½±q[„ƈ]´´×Š«íñÝ"´„u;=d{úôŠ„ Gó.ºm{%«zVt·ÄÚžž7T=<j®Ç‚´!-íÑýû.•—¡cËæ†.q»®!¯ch_à ÷Š(, qááÑ)/¯»Òh½aY Êöƒw¼¹Æ² pÜŒgX‹óð|q—ꈙß×ÒTÞ999ñ*QÕ¶Ï»„ÌD¿ï?:§~àA’çßuó¦?N×Ó ÉÎVùªîüùÅââí/ªª–-uë´Á¡ö¸1{·Õ*‡)‚).•;¦µE,QÓúüuP,Â'BrªJÄ·^¯àÓÈ[.ÊS\24ÔW^n@/󪪾6>ˆA¡Pq~GÏ)Ê'oáái(Œ’y±yFŸ|ßôØQ¤¶>ß×b0Ú¬ÌÌÛEE‘m!‘!:5µ °¹VðxÕg•ö v¤kËf*)u ê·ˆ`«ÄžÂòG‘U²>&Ÿý§¶Í1Ü1i¯ÐFÁ÷¯Ôq L™>+-PDd:Ï«P ¦‚6„mMdrÈžBFùãÀ¾E€:àv/ÿ:CCâ’ƒ¼Ó¦¹¾H—%‘2/]Bt¢¶vi]ö!Ó/Qv.õ¡ÀçY"ö4·CÔ›qÙ¡29‡ÎœT 5Cg,i êìãË]Jž+¯zùpдÕsvù5X X³M$Ä«×ÏŽø<@”מ¸‹ÛWï j_~õ>¢…k%Ò©†'?t…_ÈÝçý7/\X·a×WùA ñòŠX„Û r»ÏÆ—ÊÕ‘Èörc 6„-ÄÐïì[Üߎvvt)g§E«à¦ÖÜfêÌö©~Š“´ö«-uF]òj{ \æÛ·N Á|ZõŠm×'-uÞ0¹µM(sâ,ïD­Âm»¾ÞÔ4˳%zß³YÓtö\F§ÌØ_þ†eîu“34RSRRš?À¯µéB™ô§ç,tÖòð¬?ÛO)÷¸Fà‰ÚÝcåªÕ:P”vè,ûœãNÂÛžÄ>!S/ß´³).PÑöÚýÚÚÀüÓtœÁ÷*Ø,¶yxxø`g—™µê‹ÂôNš¨ªªv·Té§K˜´ýª%îìåÖqðw]#T-‡<ÿ¯¿\Gw'&‡‰V »38®.J#Ü™,Ž b{¸pì‰TÅÍìÿ¼ðX,üŽ"àƒßQC߇>"1<(4Aáðhš‰ÂcðXÄÿ)FOæûûÿ‘—'™…–·=,oûïòF¨ñÛò#ÀË!i/)üZÀ*³ŒŒA“1T:†F¢ÑH(,G† *‡Ec¨(„Á‚Ü<\\vò#}Rn4äÍ¡1]É ·Q ÐhxŠBH‘NGãi•FA‘$ G$ÿêq` £öBá@÷d<;@FcIt<†€%¨H< ‚è¸è{¬]ÓÐX2…J@¡ŠB£cˆX ÑÑ<ÂÑ„¿w=Öž‰ ‘!‰D ¢AH4Ž€ÇÓÐ8M¡‰X*þï=.FM b‘8ˆ@Gb°44E¦‘:„ÅptèïŽC„8ÐDÄÑd CÄ“°Dƒ"©*D.âxáþ‹R’Ùöl‹áæ8*),š hPId$„&ÓÈH O¦à!"KX:‡üNŠßNå_ÿÿÿ¿Ùr´':ÙÛÓ w{{†ÕEÑ•†›˜küƒÿG"±HØÿ£p(…ÃÿÃcpÿúÿÿƋ̚„£Sˆ GÀ‘4"JÅ!iàqQ,Ï¿¯ÿçìŸÆ`Ùƒ‹# !„£b"†H%B8<œ5†‚ÆÒ ƒ-¹bÿ(,|þÿhô¿öÿßx©Jèk›o0ÑEÀE˜Xhh#$””¬0ÚJJ:æ:ëÕæë (E$œEvc38 ¦ÙEII×H!éÄá¸++)yyy)za™,G%sS%o¸/|òðGÎOg*Ò84Iu~ÕA‚Þ®.nlµèE"‘†Îl ‘iàÍâp[h‹ÃSMR›éÆÜ8 æ>î$‚:ôMm” ¬Bu"³ØGÍÂ\O(©ôOX+Xh*h3]ÝÉÅåç~ tÕH?Îq#»BjŸ¹A,2‡Éú©ÓÛL"*¢ƒgpHý‡y!ßTЋŒÇYd–BæGY„¦‰2âÇAè3’Œ!t,ˆ ¨ú L!:ĂܨªÒ~U†›3‰ÑÁÔɶ"•Í–D° 5I6ÇÇb;AGÁLæ Ü%›Êb¸s~þe3Ù“ û“TWUúel'Ò|ÜØ`È@æì¿žýÓxÝÈžquÈ 2¶BÿÁ‡C#sÈÿùÙã:S@Ýå24&ÕÃh’¬" (º ÃÁ1…'Aú(«2ØÆ äKL/YE&™&34ÃÕÃщ~ÿgÖÒ†´rl¬EÀ¼U¶3 “æÞh Oƒ1ÝÁŒ$4&Âɹ2=!ljÁF€Fò>R]˜lˆ† ø †IK ~îVW2˜"lÒxn*äâÂv'S¨W“DJ~wÐcø;`*gh4à 18à.'®ŒÀáݽUy¨Ê¡ ’pg17¥#»0Ý$Gšw¨àÑÁIHEä:tâûІσM\rÜV ÷$µ …Gª¨‚¹¸ýÒ¡‡+bIª£qŠ$ &ðóae=®Ä¡Á“Sâ°†Þ†y¯4ÈøÃ`ÃAîCn4,!ˆ…p'³8CÌ…ÐòIC¼ÿÕ 6úi¢@IYL/à´ ™ÍòC¼@¨z¸ütÔ…Áæ ÿ~ra¨«’‡õ ("ä­8äš'¬¾¤C 0!;BÃÓTU"ƒÿÁ‰ÿÔ‡;hÇþ¥SÈžÁnØcé‡ìô>ï—¾t€udÆayP9¬±õFg¸üeTzð‘GÙÝ Ag~_âS!øk/ÿ2˜øÝ^ÜßÐbÌ÷tzd &¥Îÿï.ß꿾ûRêH)ÙËûÿXö§ý< ŽþÝÿû¯ìÿÁË'°üëBËo^¤–aq*ðÁ#Á˜*9œ¯O°—?.³`G\Ùò?Â…¿,­üäF—_ˆ:ý}̓ˆ—'áä1¤< ƒÿiÑãÿûg®™ÛÛkîzÂ+ÿqíçXì‡ÃýeÿG@!ÿµÿÿVýçßåýsí'@R,¸àîÔb¤4“LÅ ñXˆDCa0X$G§Bd‡Fãp ù÷º>W²÷{ÄÉQhT®m$b°8¸ôE!ÓI,žø÷c°§2=Ü8ì¢Ñ! ‹Ç¢Ix2šNGÒÑ,†€Ca°tÔ?•7z°!Ú»¤`Ɉ†£‰8"¢Ò©("‰Åàqt žLFSÿ—WþcüwaRÈ.l{š‡ûÄ ¬ö?Tÿ÷“ýc±Hü¿öÿ_«ÿþ!ï¿}ý6Zÿ^ÃýS{ÊoQnDýM#ÚÏh¿iDÿ¹ý7näø›FN?7rúM#÷Ÿ¹ÿ¦ûçFáÓÿââ²È›ASÜ2ßÚ? Cbеpü_ûÿ·þïÿéú¿A;TtBÀûžÿýý[ô÷oÑß¿Eÿýq«èï{•“‹5XûÄ"À¿±ý ËÑãäù?dhŽp :^ýà‡{Ñ:öoYãÿæ²ÆŸQ8w+Ù®®À£ ®¶kÉ27ˆ ìIa°\qâg;"«ÃÞUùé$Dg¸A Cu_à¤ud*‹ù›¶0C@û͇ü¦9|趺àìë`XñÏía.þh¯7ÌÓ¡ÆQ‚±Öoþ~q£rÖ Š “ê ”Þ>U_o­xÐ „” G…Í¡1˜ŠNRŽU¥ÁŸU)¬ÁPýmA\scøâÙ16æ0\¡±öëÃVGs:Õãòm‡¸ùFý¦òÕ`¸ç¬{’áË^‡-qxÿë·µ­?íu ‡OÙ[øQ­ú‹ÚŒo¢æ0ðšÛ‰éÅFx91¨`šp€ Þ,qñA€IƒP=òm„탠 nÉ-Vü¸4x<üøQ×û¼¿;ã/ûS?ÿöÇ#ôÈŽÑÐ Ô_7ˆt­ ôyòâÁ£o²ÚØÜ@-ª3€#Šˆ¿máä‰HyWçþCEìð›û<³_ª&ô™ ž±€89xÛ‚Iÿ!)Å¡¸ìþ_¨²ý«ó,·ý[µðö?*mZXçZqËPwƒ,·w‡3Ö0à ù/ýïa‹.à,Öa–Œ|ýoÔîüëð_±È ’QU— á°hŽN%SéD*Š‚CâH ÇP¨ „¡üGBü! ²Õ æì™ÆB ü0¼úKDaïfoûo¦;€NCuŸp—ˆuúó¿HoÔh:0n&MÀhÈ$GÇÒ¨D*’FÅÓñT"‚(d4¢ èT72ZÿC±ªBøHУŠd¼lšˆHÈT –J Ó " OG‘±8G&AT$}pAŸ›"-.‰dx ÂÀ„{ëë1Y®dÎo‰DŽ*”ñ2j"B¦‡ÇR($I'b! †@BÑðx"…†£ah(*7…2ZÿB±bÐ8NÇè~k¼<šˆ<¨hKÇñ$‰B@C$$ƒ¢‘0h‰£c¸ê·Æ@ë@†›ã2º×/“&$$™Lâè‹&A$ °?‹E£ð †„£sU £Óâ’@Œ /3 ì¯àu”ß COwtQŒ“=ŽJ„°Ð5‰¢Ói4G&bèTEÀQ¨d4ÄMQŒ·búXœÔ¨r/o&"4E†+–Èœ„Ã`‰$¤è –áQÜ”ÃhqS£9§ÑƒÅx™3!‹§ãž‚£ 4*”€@&ÑQt MÁ¢¹ rG§Å%Ah18lˆeFvuw~/Š1€Ûq²gBà–‚%RPhˆ†Äc øŠh2NÆ“ t4š‚ÄpÜŽN‹K¢€«XûO9 ‰ÐŽ“9–J¡A:‡%iDMÄâ©t•€Ä“Šæj-. Â^ºt…8,u0Rá îgü^,øQÅ2^VM(v“!ž@§PX ‰€†¡‚Ô¢bd"…«¸v ´¸$ \Œá¥ëß‹AsôÐ=NÖL(ÝÃÑ:OI>‘ŽÄÐ1d@šFÃÉ$™Fàjº7:-.‰AgxOÔˆìú‡€¡3z¢7NîLDx‰Ç¡ABO¦‘T‹ÂÒ¨t 5‰ˆ&qSc ÅM¥ m2ÿÑ=žZŒ—C‘zÅ!é€Û°$ 4‰@4†ŒCcI®Jc ´¸$udç?؃Þè ¶ãäÊ„ìCAB › =žJ¢à0àJÃSÑ:@¹j£Óâ–˜4Èå·"@ž×—-FÇâQD"’G4 …!ÓÓÃTàg*š«éÄhqIf4¹ÓélˆÃþ½$FOìÆË X™ a! …ïtN¡á±–Éh2«ÛIc Å%I³ Hÿ¶¢FOëÆËœ eØh ‡¤€€Q8‘†'‘ 2‰bH% $$W3ìÑiqË$Sk8É6axÿÉ?áFϱÇÉ  å$4ð…xO§ ¨à_4 >aHD, ¢ãé\Æhqkmœé5¸Ü»©ßKbôln¼Ü™ˆ$è(äòt{‡Â‘A'CH:"Ò¸)‰1Ðâf¤Ðòá@Úð• „Q…1^MÈ,Ð Ñ Æˆ*†2I •aˆ+Pp8®b×1Ðâ’0¬M!6ÓÅãÏÁb Éõ8™3!KÀ` " ‚$Ráý,Œ"Bd‘D'‘ˆD®n—±a,‚ÐÈŽ“9¤)T:ƒ&`‘4*M‚P`!„ÆX®nPŒ·Ö]Ènd–6ÓÎpô`£´GÈx™4!Ë ;E@R M¥Ðˆd" Â’©`šÉq5³-®íj†…ã÷%hâèÆ1NþLD:†€9<ž@'Àw\€ë(TMEC$* ËÕ•Ø1Ðâ’,¯-¥C¬‘ÒýßKcôeÀñrhBH O¡1($ŠHAâ°t2… O#¢Ð:ËÕe1Ðâ’bÒ9^dÖïŸ0£çÛãåÌD¤ÒN:ˆä,T‘ŒFRðtˆ„¤ÑðHDÎM)Œ·–ÅÉÈœñ‡%qÌèÉöx93±Í ÀÊh:Ž„¢H CFˆ§QÁ!:–€ãîæÄ¨´¸$MgðZ»ßÉ@k ÛããË„ •†%ÒÈT’H$")8 ‰ÄPñxDÄ‘x®Ê` ´¸$+'0;&Ãír}Cb¼¼™P=0<*ŠJA“!"B‘@!Ó@*O£ÁšÀÕºÌ1Ðâ„e1àKµXLW`© ú}ž}‡b¼lšpB‚D…LÆâhDAQÐh$FI € x W³Š1Ðâ2p2%»9þ>RàF_/{&´]G‡9ˆCR±t–J"bf°€€B‘™«™öhqIkLtõMXLêoËùÇP8^ÎLhá‰N‡pÀRpD*• Á4ð ¾²ƒ2IZܺfP >†çï‹sÀ(F_/{&©P8$–D§àItÖ¨t4Èù‰T2‹0ŽNçjê1Z\»ÆÝgp`¿—iôý½ñòfb™ƒE$ÉXØ Qd"\- `4l’»™Æ¨´¸$]ow&ÛƒõÇý Í1dãcÏ„¼’Dèt*N'bIH4Œ„PÀRh4É]ï4:-n]ôb4xÊ?Haô`=^ÎLh‹„HX„'ÒHð‰$’ñd"E á\…Oc Å­+-L̵í45+ŒÖè;KãeÍ„Ä@#RЈJ"¢ht2h‘ˆ¡¤!q4 «˜i ´¸æ—ô¡âòß ‚€'.ˆq2gB—ociT •B cè—H€Àˆ(•»—oN‹›·ÆÑfº0Y&,&|´ß˃0z¾=^MìÒH B84І§càgŠT¾Ô€JÅã¸[Ö<:-.l Gù÷©=†…Úqrh"Ò QãAˆJ¡c)D ‰†Cãá«dq($W¯-nä¸CT‹ìb ÞGß“ÁñùƒDF_þ/—&´ÙG¥¡ñ8*¼"šF @HB¦èD<•Láî5c Å%‰è›˜¸Ñ™Âè_Œ—3º$ …¨¡X2(š‚!à!P#S¨®¦c Å­¨af L¢™’9 7Gö¤1zÍÿx94¡Z M¥"iD* ßXà7"GDQ°D*Eàj²=Zܺ@LW[ï"=Ï/[&´LNF“‰t‰@"át°€DBcñ(2GĹ £Æ@‹‹xv”» ’Ær»ñrgBÆ@ÅÓÉ$$„`€Š¢ÒpŽ$!AfC'`¸»é=Z\®Þ4£c¸‘]þ ŽÑñìxY4¡Ò52KÅ¢Ñ8ør'2‚Ç# H,GÃâÑ$:‰«‰ÞhqY:@ÆVˆöyŒŽŸÆË£ ­B‘éd<ìd/T,ƒ¡i Ââ!2€oxînVŒN‹‹·&bºÁ5cº"†4–{w—SBµŠŽ„h<¾Kù I¥cPX4p“\Eµ£Óâò £ Úð]¼þx1i,wñ/£&äºDC!‘AŽOY ‹¤¡@ø4CAsu©p ´¸•ü9yÀûIƒ@×’ìâñÛ¥ÒXÊÙÆË£ ]—A€p•N¡`é( ¡¡‘Ä-0–†ã*Æ-n]à±à›â&‹1\1NþL¨H‰£Ñè(2G†ºH#‰x:ްƒÁqÕ6Æ@‹[[­ƒ£r.k4iŒ¡HgœšØ".¤š$*K¦ÓðhKCâÐtžF„oO qwwTZ\^4ÔbG•v ‹¸ããÑ„Â9¾‰Çc‰,kOÂBt%("™»7×n å=Vg5†Õªq²h‚;¯X2E$á:‡$’Qt"G¾˜(Íå×Ñhq+{Pàçê0Øòàä~+ üXv`ÇÅ¡ •†€þ(,àQ84–†¢Ñq ÅÁQ)XK$Pp\-~-n@Ã;Ç×D1úÂáxÙ3!?…&¢Ñ(àidŽŠD!É8:ŽŠ%Á{@Ò¸ÅÇ@‹K¢0„6|Ò$1úúáx¹3±»™£Hà ‰HÃPˆD2 JÿSAŒ¢¸{7óQiq«84vúƒ Hc¸“ùøø2!LKt ˆˆtxÂâh$,‰Œ„ï¤DÅp÷±=c Å-0©d—?_$1z©Ôx¹3±+ð!<C'ÒIt, ‰¥ÀØI‡ DÐ\®q-.Þ€“eÄäüÁ+´Çp þøx3¡PA‘‹¥b x2HðÉ4ð€8\QÜ}ÜÅhqIl¸6ľGðï%A4—;zðMÅ‘H–€AQi<…‚ÆM…¨8ˆ‚§sõÎ c Å=kQÿTÅIB“Fß^/s&$Àb" G‡°t4„"Òñ@èDß#‰çjýÁhq]£n0¡I£¯ Ž—I*ÑÁ!± (h ‰L@!iH%#1ˆNãn¥ùhq] £o1¡I£¯ Ž—KŠX,™ X€Æc1 ^¥'à$™†§à©Ü}èÂhqËš0¼GÙ×Ë~øx94!,EFBH, Ãe"–‚DàFÄSp‰€£ ¹ºá7Z\ÛZra²ÌÜÉ¿Oñ4Çò0·ñ2gB… X,¢à@ƒ£Ri(ˆ†ÁQ!ø† x2ÐîÞLg ´¸X"2úC«4Çò ·ñ2hb×ÅÐÈ$ E‰‚&ÒˆhšD ’ „B¡‘Xî^3*-n ãÏùžæXŠDÆË¡ ݉!Q°±aÑxÁÓ$ G$Q!,.®ÞrtZÿCÏgýó•@(£¯š—QV’N„ 4¾”HA$ EÀ¡éDP®"Ý1Ðâf×uƒXŽ¿­yÖD#µ%9Äàʈ‚á†07ÐÓSÒ5AÈ)Ž´ÆÉ¶ Åv<–‚ŽŒ¥ÓhTíÀGŠŒFÒ »Øw ´¸VžNæ0È.z,h‹äFõ1…ØîL76ôyiÿøˆ@(ÀcÖx8¡Kž •€#p cøÞº: ?€CÁ’Ih W7Ç@‹›Ë‹ð͈¡1Ü£HJ÷‡¤tÇ#©ñroB’ Ñ4€Èq€ ~Œ&€%H@$@ô£q÷ÁÑiq]RÆ$)½’Ò—¤ÆÉ½ 9@4žŒAbˆH4•„ÄS¨Àˆ)d$IyŽÆÝ'5×%5¶›Jk¢QÈï‚?ŽÃŽ“ÚmÄ"Q8ˆŒ¡ÓàGÙaèH*OÂ!é2 á¹­Æ@‹»Ûð†@f6(ö‡Œ°ã‘Ñxù6¡ {à‡?¢ H:’‚A“)d`Ê$< áp4"‘¹*£1Ðâr%‘ òþƒ„p?$„„ÆËµ e®Šþèh KÁ!i8<…Ò3ˆ†$@”äêžÌhqËŠàKÝ×A'&í"üa</×&”°dèDB‘I8 BBÀ|!DEá!†«{ùc Å½§›B.ªÐÄŒaés¼Ì™P70C: OÄSñ …&“‘8*‡F“px–ÌÕEž1Ðâ–©P!7ÈÜÇýOrCáö8y3f9(qÈœ ¿ýÔbÑ ª [ò—9Ad°ûaj?u¬ê„iãÈbz¸Ã !Ö ûÝÈ®à`¦ÂP×ìaþše«*9¡ÕGtøÉ}h,h#M¡S)$C'Ò4"âîÊøè´àáO Áæ°<¨ÄÎ I„ ¢þy3èöö@$lˆ¥èÄqu‘T<4tîë?T1¸—‘N(êcÀããáÿ:5‚Ü<\ÿ¢Cºà4tјôˆN%#1"`‹!)t, G§RI84‘ˆ¥R¹Z^:Z` ð¤ð1:dyÄà |ªBIÿg/3⌌ŒÍ7˜è¶SC åüßKé7˜FýtXÓLÛÀ`ø8ú§ãf«M͇cÿ–¤¡±‘þpKìO=˜jšiÿ„û¹óŸƒÿ鸅‘Ž®ž‘®Îðo„?6ûyÄŸûÿiH¤ŸÿeL¨Ÿ¤gh¬9Ò õgÊ:ÆZ†ßÙ‰iŠðÿM>N…‡Qþ×í“îáFý‹}Ž<ÕgLƉÈD2 <Ž€™.GÀAî„'èDW/-xüê:ºA€ª™…ûíÔÑa?èò!Ž=ÇÉÕâFf¸Ø“ÝhölÆÖ!Ó•wù?rðw™#paº9"äà^eG/Ø'¿'´m„Å’‘h’LÇ’)ˆG’hxøÚL¾yW·F§Ë–áÆ™¨<Ùœ¡;ÌsGzäÑE6^6Ž7†ó7fÄ:ÊbéÈ—AÆýÎè 6¶òËcäÙó«Òž#§~p(.Lª3èÌ}Ðe"à›>!èƒ÷†G°=ÜÝ™,Â…Aa‘Y>Šs'¡ibôÀ…éÅFp˜ˆAÖÉ#X€.Ø•IcÐ}ƒ}Ál†d,ˆ­ˆ0à ÜYLO b#ÈÀ<¼\à»svéåÄ :ýÔ±+ÙáîáBæ@CqÈŽlxK‰Œp8žÅ "¼È>òƒ4É' ëo½}'æÊdA2Í¾àƒ† 8B0C˜&Èc°¬Ñð-Läß°ˆEl.€8TEU%wÀDwu7аʞ›<Âr£1Y €¢;‹˜ÏòAÀšŸ§è01WX‡h„¯M1Ô›‰úð¿ `8nø¢l„‚Â÷_áã4&Uaø·¡Ÿàƒ@ïŒèL&bÁâþ 3¬.ndOw2ÇIrDèàÀà÷¡.4©à3 –;‚ OäõKƒý!ª.ðøàÂø©/ÈrýÙú˜Á²§Ñ h ¾ä˜J‡ˆH "”K%É8"CÆ!Ð0Gw'&‡‰Tj%†úX© š4Ñé'kVtúÞÉ_Ç;Ä%Iu}X…€jÑŸ¡6äáîœ8we%%///EÓÛèš"“å¨Ä€WÀ†i ÀpuüK¯6‹ f=|–;Û@9ßH* Z,¥HTD!#ãSU‚ù:$dðFaÒ|àw˜”:?Ï¿¯ÿ^?´_ìÎÔ2%G&…ì¶÷þuðÈi Á ,øEÀ!¿£†¾Ã/9Ð<(4Aáðhš‰Â¡Ð(Äÿ)FOæûûÿ‘—ª„ޱ6œ"`A#L@Òb TPR²Âh+)é˜ë ¬W›¯3®‰|ÔÔàÓÈ.JJºF’ˆŸ}–fÐ]™›*yÃ}¡à“‡?*p~:S‘Æ¡Á©Æ AoW7¶Ú?tƒ"‘HCg¶1¼¹‚膀Û*@[<žj’ÚCIÎ|%Gb׸:Yìlˆ£fa®§@~ð:±V°ÐT€o|Aæ0øù©]5Òs†‘ãÿ‚RÃít†Üì°<ƒÃàõüƒo*^§5™ dað ŒÐ2>Ä;àÄÍy8@lÆV¤²cA.0®ôqØNÐ)¼ 5Ü!ÀßtpR¹…ø>´áó`ó•·EÂ= §IpÚôK‡ƒ·Ñ–TG+âI@Làç!ÂC€ þ+~ÄPj¿ ¬‘$kyÁÜ1”Aý¤á~Æ‹ˆ_Í:þ o³˜^¨ïpö#˜ÑÃå§£. 6gø‡AŒªþƒþ 6'¬¾ŽÌpb€ ~ÀààÁ_Qî_úpíØ¿ôa ÁÉíG7ì±ôCvúŸ÷K_ðBçPGfßÓ»ß÷62iª‹ŒPòGïp¶ùë(áí²îj(ÿ,Ù_YŽþ…åèqòüŸG24GÃÁGÏŽvÃî—^¿‡–ÿ`†˜ ÍðŸF£éâ2%£pJø+~,)þÇìùqGzµ$³°q²Ç36ØÝþÒË-­±woüÒɯ{ãèÈ`¬êˆÉO7ðøÿâ¨,昴ç§e^~l R:õ]Ÿ< ¬‘pˆùõÇ!É¿*£‡Gôï¯ÇG–(Ø?ôðç&l7êwƒ_Ô¿+ü/~û¯FÀvwap(dÖ÷°£àÊܪàÁ†X lÈÄe7¦¤"‰¦úO“Sp"»ÑF&ô3£F…# $2²¾0ž0"{šƒÙËHÿM¯¥å¥¥eUüÅ#³úiMGò×Õ¹ŸØ8üW €¼él˜6›_ùw:9«;ìêí‰CƺŒLB¡ T"š‚Äbé8„Þà³Rþ].úw¹èß増‹þ].úw¹hÌIþº<ôo‚ÿÿ[‚ÿglþ¦û#¥;#ùåð «þË ÃÇþJ†&üŠ2Ô×wMùû:ÃÝüû‡õTŸ WçÀ¥/#ì\C0éCñ¶ ÅAÅý‰Evt²åŸŽ‚ØýT²è2˜Š ×5 :îŸÚ¹1%Õa‘£†Mc¤jjh†î=J§è¿tús3wBb³ØT_Æ »Áuæööú&«ÍÑö&Ʀæö†Æúö«íí¿[혅ePè1jèÚ® 3Ê 0ÿ û±£tŠ;ûݨ.4!åÂQashdÐv)GŽÊø&‰e<¸ÿ`’ä:ý±J7xæ(6¶ŒL¡¡é8$E¦“Ñ8‚(2…EáèT‰§ ƒ ¿c3äãÅd,oøâˆá–ˆn¯|´ðã”QÿÅ)“Qt ™LÂâ04aÐX4Š@E“±š€Dáh´!ž þÆ“áPñÓJ)•Iûï HßdÐuMMM—Ký‡‡36£ÿ›,Fâp4:–@¤Â7¡Ã@D J3¢’ KÆã¨C,Fÿ÷X<ú€†Yl©kªel¦;Ìd”üxXŒùo²˜F§!i(ˆŒÃð$4C£ÉT*†‚ÃpT =ÄbÌÅ£h˜Å:ºZúà FS‹±ÿMS8$" ¨XM¡‘L C!‘(¾½(ÌbìÅ£h„ÅšæšÃÆ ãcñ(1 ókLóçú,áI2 á lx c ›øQÆÿb1ÏM}#ш †„¡£It4ŽBÁ ©""£ˆÐ¶ÃÄâÿ‹ÿ° ‹]ÓÐñ‹ŒË` æ–ððÏÍÀŽ¥’1X2•@D14PC¢HD*`$‡Â2xÔ†e<™ BFnÜÚ<ú µ.o€&ûó5%ÿ3ö‚¼vAþ7è ¤hß×þ± ÌÐ̉'#Ûçå^ÁX”%Ж @ЉÓá¾ȉYy”¯¥]rX€²¶ôº6"€f¶ŒU" },³rjÁ².9<—იŽfû¾fŽåú.Õ<ßq<ßWœÑº™ï\¼`¾*Í©œgÍé™$Öõc»‡»MÊ‚ d-û Û)6 må2ÐÆÔ´=©¦A”Ñšº4ÊØ€2·É QÆŒ­ÖAP!v-]ж.µÝT=€° ‰6ÑküKlŽoVkP¶)×z79ÚD]6Iœ#Ê}ÔÄ~T:¥a[rtð,_Ýd3¹¬2¢ªQÀmKQS¥M¬ÌG)¬(r`Æj2 'å#‘Ù¬èfÙ›€{G{Nñ]Ñ›™.l¬#¾ÇPj På¨fß:ÔéÍ4äT¡£‘w¦M«QEªˆUo÷‡èØ93z|nüðñÎÓ»3¥¿#Ø“ró±Y“îÝ2ݳO‹ÊNÑÍ Èz°÷(ÿ´xµ€­º³u¸Õàÿ5ÑÁÞ/î6ÑÃûÙ>*mæ4Æ]8WöæÍú½Ô ¶k€3ŸT87ˆ&,€lƒbBó¶-r•O*õˆãÁâx¦•=[;6ó[ ½Äò`ùXžõ¾èÆÍ›YGªM. ôuùJˆ ÂD[­’"0ѯ¦’&€Þ!ÆÕTÒÐ;Ä\’&€. ÖÕTÒ@{b¿àJZ4ª¼ˆJZ””Z#‚«€‚Q+lžGIµ-!P ª¼‹ªvU@W¨òçµ:qcÜN˜ð(ö©°K=g˜Pt“ú¡WÀ¹S‘kCÜP0:å’¤Ð3ª.O{åÃ ÄØ`Õ¨k6¡?]GÕÈ”€j.†Ç1ùáöú­þ ¤D.®¿Z·5£Z‹Áõóê …T{Y ý<{©ªH[¡óÖ¡ájƒLœ½k¼®ZK«׃5@ij%U2ë\ÔÏ ø¨6M«Ã'@çhrçÈè ºÜòOhéÞ¾k}¶vË‘xŠëRêWµÏ5@=i•ÕÓT¸Q#w—Ë¢tDø j(Õ¬: ÎkfM"K13 ®J+¨ͪGXÁ´Â¨pyávH-G% E4»&ûf®^Šñî×™gu6ö“~;è×ý +õè?™ÇæŠ<Ö5¢ãš<‹¥‚ÀÌ LÜiW‘<@èu”(]½üU@s]»Êª: 6t}±Õçdà递ÑrÑ¡jI7_ÈE‡(5Ýú,,:t@)êuŽs @S‹çTê¢è$cy'6ÏiÜØ /$°Ùp…ì W X€$ ØÐ> Àd…À†¾ºÝb c6Ýl¬F  Ú{5Ïm„iÔÞlœÞÒ½ìŽ:ÑXh»ñ¹v È€ÍUî1ÿØ|Q÷$ج³¬²àªY®Â&#l›u6\ØÔ/ý $À¦Q§£€"9$¿@*ÖìÆôbΤqØ;º9G{)íJæfÅ@\<žŠ‹¿(#*~ÉÑ…ãš$±@ø<¶¦ó¹|Œ&GF¶ˆ­:î@ <¶HÙ™'×KD7;!ë£Ø¦^_f˜êŠRÊa ¢[j6:2¾ÌˆS$I!€ÇçÂÉ¡¸ô°“ö;Ù@/6¸µÄTPДí"ï”GF.x v_ë:é¹è ˬ3÷@·,‰¹7Íyɦ?xÍ'UŽlZñÁ]2bÈÑ Ä\c[©7S˜é¯Å4F©l]1®ý¦:Ôí:Ö7¬mUzªO¤okÀx[›1Ù¹‘Œ!Tä"y8*ÈÅQ ÎÛ:<¹™b²2À½mÈ’9mǬ,k'Ú±}n± W- ì:*@¶m@Øst@?æ¢!&çÒ-Gâ ÖNEn-[dò*Ù ô×ïÃÒô‚Þ‰RC &(òú Ö8IR©Tjs­$>ž“tèáús¶26O£Î¬2JÍ+1«,€JëâYÅ­!ï;ïIÏ.耽Z3CvŽï¤Nà;ß ÆóæXyƒx+Þm4AJ†Az<¨,:C‘Q䲯h,â¹Ø£ñ ‰Â®½ ìãŠx/¿þ1:=f#VÑ‹Áç¤Î½“ˆ.'D«.äO¶ö·4²·:¢„œ¢×õE•Å%'ÄX–˜ïõNœ(ô3Ÿ=ÊŒ”dJÖÃD ÕÆ½­»c‘Ï{VU¦„'沤þõ­lZìîîT%@~b­Zô˜—2¯)ú@8QëÞ@6Qq]Ñï<<¸Ÿ [9®¼:!ÝD%— @˜7‘ó®Y&“›Œ£ÅçÆpX¡C9P¿6X±åD>¶|¥`„‘U_1X‘äD>’¼.X¨®šuÀÀà ‘ÛWÊ7ޱÛD­`@€PiR5TæÖÌkÍäVšzk(ôg¦oïðôí‰Kà&+ä,¼Zòírõ“mùÔ ³ªÏ~”—^oŒï‰(îˆËuÄWããœðåïÄF±ðôÉŽ¸f¶Ö÷Öî×—AÀè¸ßÿ fS0F¸ww¸ê yáÍÛ.¿Dh’%íãM"*¨5DK¸z·æ.ÿÒßyŒåRùþ'tLŸ!Ø,<\·ÕøŽƒš ®|yÂ|1™ˆe…d"‹q-võùŽjvOÁD¡|Ok|ÀCÇ+[p¼MqDY”à;ljŽR¥Ëq¤F褆ÍÜ^œ;(Nžö¬gÙ×F&6ªóz5[[)º)ºîšiyžëZ*µ\Ó³=âx6¥šcèÞêÐ n9G·7w÷_|°[ àzè„Æn?¡ù ñDtYºÅÁŽ,2 ðE·5ù]ë݋ʼnÖtŒóR52rG#`Ë÷™ìŒL€´Žè8—a)cà²c‘•ŠŽøŠ©£«¦a3½ìû–ãyª«¦îÙ>YèÀ-—3 Vœå ŒºÊaX—§oL»XVÊåË7»Áâ`Àž Âüpµ˜ú û-Ó³¬ÐâlWV:ûqà:Ž­éªJ\LU¢l2øÖ(1¬ûþêf?Ür9õdÅÙŸ©òeÎþ…V'ð¥É5¹\å6f)£«¾Íš¿YZ +•ŸL,`ƒ—š×5‰kÞ–.¥Î'²E±¯E<ôÜßeÙS†'å5üƒ ’5–!ûãF«…‚Ø9â{8¨Õº[úšÍ!žÿ8á_—‹3’[ùoÙOüË$uâý~Jc¾]œÿÄ©å£ÛsNZ'=^+hg_ˆ¿³*Ùôf¸Ð£Âß„gcNcJOBz:êÿ QB·‡c¢°ThWŒyþŠKÿü0î–§ù ±¨E Åf8§šbX*¦ÔqUßóaínº9ã:œqÙPGáÝ*MÑM…šT÷TÓ´TfRÝ ŽÅì¢fÞTÞNå&.šÌ£K˜8ª|š_Ù(1ü]šäž]ÏïmΚ9NÓÁæÆÆééiÛï?;;¢½v?>Ú{>}–·—=v¦jEIì1VäO zGkȉÒÑ7kbKá¶ÕÆ *軽ÁÇu45ݾÆßySw¯_»:¯ñi9ƒP°b# å{ŸOïŸÄá ãév?¦í÷“:m(ìehǦ®ˆ¿qö·x_ÃÄ *Ö ‚É52nj×еé•÷eôþ‚¼N˜B½p¼Ñëï±x­ ºÖDkÏŽÜ£Øb«sÅSlÕ!˜ÚÄð=Ïó PGUuVGoEè½fQ5·šdjfçš¾®k¶iÕ6ÙÕ6Ûu©iùjp¾æèX¦^¢+¾ai†¥û–æò«ñ&a‡uìaó|½ýA"S1|Û§›TÛnÀŒ'/ gš4°¼QÅ×ß»u…äyC7vâ3n½t|:ètx–þv××—'ÿЦpùgÌææºz;Hcã¥ü_Æ‹ºFˆê0‹‚ø¦…uj:¡Ö\] ôk/_Ÿé×,ùö˜}Z ÚMSf·'Ž×¢Nç(vÇí®3Xšü3¼ÕJòo^ãNàø¥þ¿”×m6’bA35Ükù±ûô×̈ubê äذŸÙº.Í–»½¾OIaÕuR3OÐ8t¢ÌÞFi˜F¬þ;Jòb©”ˆRˆkŸ¤rk›­³úýØgf¹Jšz[zS%ÌöžGŽ óôàuˆVäbBô¦n0JÔ¦¥”h%‰»&ì„ü1šºl…Âì¶~Ìw |ñÚ{|!©ŒaŠÙdbÕäWj̧U‡i=ð’P†Ê‡œÊƒœÊØ9EÛ{IÔ&“þ&¶µ&OwÁ©Ü`³óJ-—þ_àê¸c¾Ò]"4γÿô—Öø¿÷E5_âÿe¼~ëÉ£û_¸þ.c_Ø{cgŸ½Žýûêç„ýÿÉ—?y‡½=ÛÛÙ:|ö¹ÿüÞßù›Ÿÿé_ÿ·?üÕ/þÑ¿üí?üÞîÉoþÕWÖnüþŸý®ÿÚ?Ç?vÿß½óþò_¾÷Ç¿óé|ûŸþîO~òKÃÇ¿ôƒÿ~ç¯;?úßú÷·~üäìïÿçÿôÎwßÜ‚ïÿK}ç‡ßüÆçÿëÏ÷?ýƒ¯u~ðéÿþö·~øÝï|ó§~⋟Äã¿hüÜÑñ—ß ïþŠØtØÛ}´ó'¯ÿò¯½ÙK[ÿ]°ô«búIÙšn”ì?¯ÿ ¿”ÿKµÿòA/ÿ•›š~+Ÿíãœ_HÒ6Í77ŒÂ4¤IKD [Þ¤Iñ€»Óô” Üb >ò ±Ã¯–§Qù¶Àô˜†1U7Óþ±fú0k`i£± 3kö}cÉ)Øñn$’•o{ç¨À†Âé 6– C;GÇHe )Fæ<%LÓrJ4M— DŸ¦d´G_P°]\5éñ‹(ŸÆÂÌ‹ÏͰ›–ÙÔm«Éo}žß¾1j?¥Ý.>Ç‚¾7ä>l’ä—DzìAT”Ô8Åüñãð„QØ`2­Ï ™"œ?#² n•8ª¨¾íû6ÖÝ¡Ôst¨[ÉÙªv~çüÑÜúL˜–¦èÔ U󉋀;¢ù¶f˜z@Ï×w4(Èv’<ùļ(õ]MQ}…ºŠ©<}%¶±§ëØ÷tž¹ô\>M¼8ð#Ûy–ªicY^ QËpuÅ´ß°Ý#Ä×gœ!d5Ì«Ór ŪgZ4ðUUÅp ß÷|S34WÃË8>˜'ÿü£ä,)Zü«1‰6%ÿfðRþ/Ãþ»±óxûðí'»ˆ1zòôõ{Ûh­µ±ñ êöÆÆÎázëÇn+è0vz‰ðÊp¢ÝGk¨|°~ªŠ3õÃýg¼.ÌÎ?¶ÒÒ“m?õ¹­(|ÖzÉÕð „²§EYfU°·.åá¬l‹~8 O„åÁÝ6Z‡<ñCáàqg-¥ÏÒìá[Üe(¡é§‡÷Z–Påç*y«õt«µÝïœ4t£r={»wìñ3¹ œ9ôãR¹Ì wOˤäÄ[aƒä¦jŒ ¬£­'{›è¼5WÈaÛC÷Ø'´Os[ëöFÖÈõÛQØû 7’RÇe%“d Å4º³–¤gìácJ™Aųcä¼á8•¶•yß9q²osχ÷?RfD¾Ÿˆ˜&ñ‹ÜƒþY/¡Ù¥}ÓO—èí9'Ü7f©$3 ¿Nkœ#â&j?]éIî+òÕ†ŸÛ¯ëmfûg îû´Ï;Áo5\¿%Êœ†=¿ºÞŽúŽßÈzø ŽSöûlÖ>+R¬EÂÊÍå,wW)œÒþ`­p•g¾`lá%î^é”÷ y4Š’ã1½}gMYßÏÿfì¹fÔ°ÜUáŒÛûÇ¢ã›H7Ïn ÞN}ÑÄ î¿Ï&…G½µ¢x^a+¢{Hië´›=…F¤åÏe®vU¥–×T9,W8ìºÜ5‰´õvò(Î<ƒø‡ÔçÛHãì­pü»qîÓž_¬¯Æiü‡²ãš£Âͬä¸÷OñÈoãEáü4ŒJßòEyþƒp¶; –½¦D‡ï>tÂ^Æ€'ÎÑøÒ–²»ÖTV.™¨cŸò¥š?®&‘©Çé±ùÈŸ›¨k‡ pVÑ8ÃÆójE~ãXD~ŽjÈ;Q3GàÙUe_å‘d9™`9©ÈóÙ”d}ä;%2¼:Šú®MÖr?ûN¦G%I“’„>m±~Žú8 [q`¨øuüÕÚ4ƒZ9 žL_xg&cÞ”‹$g=oÔ°øãîh&$mz`’A¦®€¢Õí½5LhÜJhĤw³×ïÑ[k(ouVçZÇNÏ/:Tfüça¿ð m¬Ä5À#çäõ¾ñêù«ÍW_]¿õñ$þ}+9µ®Mz(g2‚qÃn—›ØÅË'ÌÍM˜hµD ʸÏå •EʹËh·JeY+Z]Ê‘=ôP\b?»lžö\ø0ûâ‚âœAã²÷Š;Eá©ñè¬PË[æ€É{¥`îDÐLF=Z¾»ÚHþvòN‚;])ëWÔÜétv͘fçËz`~¯üEqÝ).W”÷÷軫»2žÚÆÊ +vÇÆ8>HIÜàð ÉÖŠÝpE´††-BS6À‡W~ˆøÙÝÿëgç«$giö M('.UlèÆÍÈΪ”¦8ñ@¤8iH‚W2j€ÀÌðêZÙaqÁ®<›²kqº5ïâ”ñy¡; ŸË)ïÙ@$>ã_¹=÷c€«ÜÅò=X7ü}‹ª1ïù¸_iøIAŸEßÒYœ'Kæ-:örÏL ¹v ÏÊ™']õå—ç»uwÞ,·Uð4úPþé÷2Ê6gUí!÷ü¥‡\Ìß'óÑ(_óS•(wê· ¦ Ö}+ íÊߊpkÕê†ÆU(僥õ]V¿¢k‚uˆZ"˜Ûe-¬Ê]òk:^±PÀ{ì eû ß=Ñ­vÄìÔ™VR{8óÞ݃ðC¤8§Q^¹wf=ôÞyühd.·Õ>ºv[ ‚½v«"áZ¥&tª™H¥ŽU, ¥B›d™E K´ïΛS=uëpå,O“¹ðe\¿gËã›/Ÿß\¾¹¾8=s/ôÖÑ7-ä\`ËbÃ2†„ä)#;dK¤EORh” ©h’Ä&‘Ú¦,ÓNþ$©ÁÚw1ÙžªŸ«=)ô,-ž—¥%¢WEYˆUT©~ª×W¨jC–ÄU+!‚hÍ5(ã–¤4TÅDcñ6ÉÒ`®-E=Døæv…[‘'e­¤FmUScf-sÅ•– ‹9ט‰­JMý\íÉ#;=½`R&4*^YÊ÷«ÈSŒj <kCÚ”µ-R§Á\[ð¬¶dXBÓ†µy~[$Bƒ¹Úáõ¶¨Š™6T0„1M3‰PÚÌ8tZfX'd«žVƒ¹ÚSáíÉÕÏ7¯Nþîh±Lƒ,v ;kðŠ“6øÏˆJ‘•„ë„€ÀYFiš²8?ëÔ7æ Ç 69U¬’Së{~zu}qvysõææ—³³·þHi‰*¨–$¡hje„²VêÐP¤•Î0OU ±¨%™ÈìV­Cý\íEâÕùk¯™Øj¹J1íí‰}íÉýýè?#÷÷3ÿG½ÉÄVÊÈŒh0DÊb-R„Å– ÎcɱäI¼U»Ý`®ö”9½ð„)öé÷—{.ÓêWvíæf}U·ùÎîš'a¼_u}p×öþ¬%a(Z[ £VJŠ2•*©!F"©Y"¸ˆMLñ'×w@„—3DqçI ø>p!mf3Œ2–a†u–f&Kb˜"ËÌZ±Ÿi×óHs¶¡i¡ iƒ4¤4Î2ŽS¢0eˆIÂhjHŠ%N4¨ªÏ´S´òœµ]¡KhåŽ"šhÓÈ”7Ï — Tƒ41éç@׉G—öR ¼æÀìÜqÁRœ70Ód¸'DdŒaI²D"–Y¢…±Ð©QL…¶ºëP?—¿\Ty2mûätSÎZù¸&Gn#‘1aÑ7šÓ,£_£„XΈ |«ÞNƒ¹ÚR³ááî¶(Z>°MCñ¼sŠc>#Öj&-¶^m`j©¤qÊ2ÆáÙ Êàš(k˜ÞpüÔÖþ®3=žvo‰_7Úk–=[ÕpÜjan¥%THÉAèIl’ 8dÕ|ôµî?|ˆú“úS÷–MÑ€{zâ>s*ß{ÁGòÁ¬Ô*”P ¢,Ñ %†¦ä—QŽ5âÆm³³l[ø<ÛöÌoŸipm惸v`\­Ðl®LöbbÉ<ÿÖCο¡<Õʾ3+ˆ‰±¦ThebI¤a8Um ßYþ­|ž]'ûÒºa˜áß°Ô:¾­Ÿ=œoCy© ß kR.„¶!ÌÄR¥:Õ&Öš‘L©mú¥ ærîΦ\/8UôݾÛÀ§âÕŶÎm]¸÷8Gï z¤…ämPFYm²®`‚-Ó™5Á5Â’ûF?efwKãm‰Ph¥$ eXÙf"áÜ€:ÖVSgBÂð+ÉZÀçYÏ5SÜ-%„ù%ù–ê=ÓòeÛµj=hÊ@†jüD«æ”1 E „ıNÄÓÄî,óÖ¾À¼¦kFæFt»Ÿ”…WëÎÏ©%'ÒFú éñ¸éruzѰl æúÌøm–91ª‡%\ŒBY»qªR‘(É9'F²4ڤȵ°¹´ ßY1ª|^Œü+O¶¨.°Ób4ûn–k9E\ªä)bˆJf·(eI§‰H«™‹nNwÿŽjs…êOfTôè+‹XN¤U¬”Òz@Â¥4TrÚe%1q¼Gc‹¹Ä1FX0 Ö1 –;+¥õ€¯’ROÁG9ýdrÆ^!rê‹Ì:s:Ë’¬¾s!©ÓX~•ÐÖC.´¡‚ÔêÔh… ¶‰‚o"“±¥3 ~°ë昨ÚzÀç…VåãÞèÑ9-d)ŒêAû·Í¥¥«Ìœ³}bmŒWK¸…ru«Ndàüf;Æ ÓŠq$”ƒŽE6Þ] ª|eŒgË“÷Ç ²uÒÆ›„~EÕ;ÈïÖø’õ „ U(£·Úb&JÄH"ãĽz`¬‰ÆZ#ŠSLw÷DºðµBuÓËóþ£d=$Yal±‘d}è F¢»BÀ\àöÐiz=lá"*­ì’BS­Ê²4Õ)Nm¢Ó”XL±J³xwíX-àó"w'Þ›Ý온í’ b…Ž÷'¡ÖL¤µÊŽÕB² dôV‰Ûë˜á˜jΈ®Œ‘NŒ×”2‚R½³BUøbf•o ÿ(VˆU3„ˆÕEQŠyV¬¼ízP¶êÁ —­P~oµß˜˜L °,“†3šJ >ªLYª»»ßX ø¼lõÇ£/7êš­£öoBr›¦ÜÕF Yš¥ˆ"EF)v&|—øî¡qIÇäOo)³‹§ÊÕÀ·]ÙÅ bÚpÝwEá«Øp”Ïl¿Ž«6:j½ÿZÙ;™"ÚêÝ@„hÆLªÉtœq¤2­1 ƒãLw×­|!¸{TA§Üç+ŠÛÏÙµ¸1Œ7‚Îòüý¸? Ýšývg/òòݼÇ q=tá’* ­œ\®$“(I±I°41† œFÚ÷òÙ]'·ðÉó¬þ¸Eó “Ä ›§{Ášž)Ô§¿Ôƒ´£ÈóíòÄaŠÔjj)Ϭ;Âå*Q8‘"ɦh‡óÄ럗¯w¦:Wÿœ26‘§Ê–íÒÉ]/„ˆ×¥u;õG·bä›[‰Ž+ ½ë|0½‰‘[Ìh¯ƒj“Œö0®ou .¥˜K„ŽïÒ`ÄeÌrÌv7”¬|…„=†’ÿ¡dÓ†ZZoZ]´b'é¡“z@68Á”ÈVIcÍáƒTÅJaf㉄¡‘Ùîn$Õ¾¸I+ô£øGc  Én\N¦šQeèåØÎüöµë­·+›FA *鮋\§:òl&ñõm°W(…­ÞË‚³D2!DSÃâŒiK¡1uõw÷½ŒZÀç%~èìý¸§>užjPaß’¹ù­|¬ûz}È;:úÚ±iíADs•GÓ×/æ»èTýP¢~îËäÞĨ…iƒ71™¹à€T‚š•F3 ÓÊ$K…”M3‰i¼»Žr=àËŽr§gó/ÖRΤ)èVv1I•\ j´•  •`šYΫUíÖ¿#0ŒïB- [èà®hh$d>.ö™f6•\<0'Çõð„Ëq¨lµ xILŒRàQÎUl8шqœIML½»oTÕ¾Â~ÑÉuQï|ÔĹ!šàd4ê¶pƒËæÅ1êCŠ œ bß@ál•õg2#Ρ)øÜDe“eÔ'6Ýݬ¿ZÀ—Óó_¶"hoÕwȨ‡ñ^ƒÂ`&ìœ}/³x]šïؽ z=L$ÊX«šXÖJC/!€+c&a)á4K€„lwkbÕ¾ZžEyD9ŒíBcíeÿ\¬0Åõ0lP,PœZ¥QИH‚9g>_øÀH2"yLAwWtë_Ž­‡€#ñÎ| šHà™8Ö\KkÓLfV ’¤ZL(Ó¦šè²XÎù”QËZz3ë,R¦¾î r;su¸+yAÜ·IÞF¹è•Ñvg¸v¯¹° ²7E-´âë“™EwK_ÍlÒêÒƒº¦ªës?‚ç€ÂA§_0Ó-šïc>×E½;]b±ù(Æ#WB ~Ÿøïß} _¿Óúø4ïß{E¡8Ž£K½tF¿wzïÌ ‚ÚMŽ9.š‚¿~^M·ëFMèó4Ê{ªÛQï¿ àxªúŸ¾º¯þã«î(æþàó÷àc<4ð9ÂÇáкÏ|˜ÑWGUß+ºCsôônúý‡ïºyî]¿cÝö»âþYÔË{nÄa/ö¸Ú»QÇðèAÈø!prC¯* ÈKöç‘5ƒW½5F¯Lg8ì¹|íxDwÝè%r9° b½ì(Óš µ®œdt;r ÷‘W^p˜ÛÑob`Ž¢û|)~`î‚V _#×ÀýÛ|ÝåºcïÝ…q¯Hé§Ø î†.{ÊýñÓëëè¥ÂôÑOÀ‡øíX5£H £¾»2¼Ž”÷þ._ãð²"z‘ÃÃ=Ý"ÓßÑ3ºu¡jžòiµ'FîA”{ÖÞ`ï#·y>¹ï°)¶Ö¢iŠ ]9ü·yß9-€Žß:Ýn${”w"ýíüêç7×WÑÉë_£¿\\œ¼¾úõÈ'n:e\ò‹Ï>»ëwÝV¬} z£{·ÄWg§?Ãø“Ï_ž_ýêVùâüêõÙåeôâÍEt½=¹¸:?½~yr½½¾xûæòì0º4¦! ¬'åÀep{ýŽŸ_O†°Ž®ŽnÅü¢LçƒqÙâ ø6€ºyïGJ¡´Kœû$½|týšÄgŸ?Ä(ÑyOD8!¢÷¾ 4ºÁ`xÀ‹Ž…‡¿èæ9xÖ?æ`4`ø«“(FI“¤q]_žD³((Z•¯Q§¾Ý.èRÛéuQZd̵ÛɘáÊêX¬.¬x£ º "#eÊ‚´Õ.Hôý÷QÃ9+Q7©RŠk,FJ$ËLÄà*KLÆS+¬Ðš"£™Ž±ÈGR¨”bIBc¹×§o^_ýýêæÅÙÙóON¹9=y}zöÒkÚ ŒA˜-Hc#ÃM&9ŽS•&aU(ãŒkšH2£­¦`}lU=¥n©«ë©ÛHWo‹kÖëèÉÛ c4Pû}´ô€½É˜Ù-¸pM\Þ{¨ž¥(×Åp[ÙÁ-pqò?™ø´Áêí3L›#uÑ·¨«|‹¤5À¡¨nZãEœzþí´Ã±Rf8´ãnKG"‰éö<‰½7wÀ“xù‰<‰ªç—ž»’²zïhEŸßvaíñbcáåå=ìˆõ‡'íÚ²Œ$‰áaqŒ3Nc‚…•Z¤B¦4¤ÿcªÊV€µÝ¹þò0ÚE-çI"ßú÷h“àÜ·ZÞj ÜÒ»*ÑQšªzt42U¡8^Äðz+åØ}vôÞ´uQ†z#ïÉÝ®S‚âíŸ=ŒwÀø\?ŸU›Ø®y4>_†ñ©·=5ƧȜžTfMÁ¯&Há$6š+ˆ5e"M¸µ,¦‚´3>¡syãão÷àA…õñ=ÔþŒO‰ŽÒøÔ££‘ñ Åñ†k­ÏtøÞ4¨HêÛ_/=7j`ÄЪZ30ó>nd(R&ç3ðý‹p"kÖ~뤙Ì!¿òa‘3ôÖ}7#ßÚ¨Ìz²¨ ªñOª•¯q¶‡“•‰h»r:#—®÷b±Ó.èëƒ(ïuï#óÏ~>4Ú)oå…<ÒƒÎÿFö±ŸIä¬YX)/“ÅM+ÄÿvÛQ·~NO‰I…æ_<[ήPçl^ñ”¨|È…Esâ3ý„£*²ÈÃ*Ùo8³êªf~Q•m‘戴µÂ-øïÂΤö™“¼â©.ÛNTnRTd†8ýðÿÙ»¶Þ6r,ýW„Ù‡é‚,ï—~X è8c'ÀI¦»Ÿ ^íØ’×’’οŸC²JU’e[’íDŽ FG*²ÈÃÃï;×~ŒXžÜI Ïf7®èº5ÞPÉ‘Ächò œCx$”)Yf\Ïÿòøäè×÷oNþ,îúWo>üö2/Þó`óu¾E[ÅCºÎ»¾ŸÃ>ÜéÃþwúvý^‡;ý^ïôÞýÒ¿Õãú^<‰k½JàlUó 55!{ʺáv§æÇÑ'WÒ<@v'_4áó9„ܺû£”)z–ƒóç—ãʹ›ÅîÐÄt™[ç?3d×MYó®ƒR~F3¶›wµx6OaR³žåbÍ6Œg ¸V9lrs¢ÙÅôr~eP©HdÖG"˜3ÜǨœÑN¦œReÐ7ÿ[Ÿî&q«7ZV¯ƒèá‘€'G¢†QKƒ”4I›´ÁæKnvZ£pú¹¨z«Y²SnË®ìÕU9ëÒK3^|Ö-zûÚV-®`ëïL7"EçÄÈl§ 1•1.Hgôp°Îôài¥ï>¼}ûæäýÑËí ã]Áé}àE!ÕŒj €HÕB¿Ø …#I\Á‹YpªíŽ·húy H±ÔÖàâ¸8ÀÅÛàâN–9àÈÇ…#—-Y;_ê_§çø²uÃw«}y›-©}±¹Ù ­è+h©˜õÿ¨·+í<»Ý } -?áKËësku•8…jƒÍ°¸|bEÄ{Ò1žw¿øôu6Æo4½+ únƒÊh#è%ᨵFÇ5‚^Q®¤;4T¶8ÿa‘ØC¦L—+*¯]ÑÅå%´ñ4ßí&Ê3ylwÑuzq¿£Û;¹ýº?HÖÛHÌ%±ÎzäÖí»+Ù݃yn¥bLr ˆŒZ»€xåQáðÀ˜ŠÝ¡©˜R‹lP1{©˜R+­¿çnÞÆ-!W^Ô QÃ+}_#ÞL)uÒ^n„±àb”Nü/ªÀD¥®ö›Á¼âÄÇa¿Ó÷±[$y­ L!9Vs“–+ö»œ€¸³án‹žu‡¤¿Û^ƒÁn0Ø=EƒÝÝ«ìº,óò½\’-ÛÀì#ƒÍöñÛl·è;ׇ?mmoM¾aÊõtÂJ;ý29›º]õZï±ù+Ýi–««Pf•Ã9›¢ÅáI|Á·ÍvÌúPB ÚíÈ*2]pl‹ñjÃ8åzN¥Ç{?4¶6\\Âçñt1C1ocº(Þ<è¦O¶¢±»P£h/ǰ \(y²ÏGyu* ÈŸÉíºòܸÍ+õ–ìЂp#°H-cœ ”s§™QÖr)áÎö£~}sròáíû£—§/_¼±güíÝ¢*n?Ë®zÜ“ €+”bœž;‚,‰Q%ëré]Ìþ€Ó,v§izyz>Æòqo©àöƒ&ŽªðõÕ")šñÌ•›¬ð®—ma*ùÀŸ"Ï<Í}™÷ŒD7&A+-õ ¤ð”Ý{à |Ùýñ:€×H.‰ÎúA{.œNLPã‘NkîºÇÏîþ.¸W/±Ä I” dë„âšI‡ÊX™V»Ãy–#ÌGçD÷2Ç —:"?·bu ,Û±-îv1.¤ŠxÌ$†$%!RNRn˜YÎÀ«ã¾ÿóíÑéÑǯî}’ç"†ICÆcÊ@‚ÉDú}×åÞ±¢Å¶k}ý3·ñÉå0…˜À#HÌ?1E$p‚ò;Wk¾ÆšUáÏ`ÏŒA_¢LȤ}²vŒwà.+ý©Š¢ÐÊü&n<Éõ2štÆF^£ÆÛšfucÚÀ¿ÙÞv“‹i)ΔŸù9—Ï}ùM'Øzï¯2Ï'a@¨R_ Âl²t«žáH›™P·çµþ4Ô@Šð5Sø^ƒ;ÏK»­ B°’Š~¹&BÍ s“ù•Æñ-F9Ý¡îJ3¼¹g£\B-wër)o_p8‹¼]n2Ÿç®î,gJ|¬f°¾ ÕÆYü{2ý2y>ú0[à ~Í ”ëåLJFE >ÛàÇÌk0½ŒUpæÐD¨¥fþ³)ôOy6Ù‚·ÈäcMìÈŸš\CúMãúñÚ·´*–‹ÿùm:oŒ[¹“~פ«"פ˜4‚»j/Iô,[ïJ˜] Î×Nk38KgJ:PÊ¢6Ñ*âËdh²€$Ä3ÉûEÎ ±ZKeþVçm2¢p¤m¢‘*áüwÎi­¢^jrˆ~ß܃sÀɃß÷©ú}ïÞ|{絩­Žñ#8C7µ0†~QžÒœ| å]%n÷”±²Ä[?¦é«Ôã~µOV$o…lPQW½¦ýo?îóíÑnðééên,Cj‚—T%Krû@îñ 'Lnš I@ºá»¿ü‚Zå,ÎÒ‹¸"Ì €JŸIÉø¤…Ñ (G” Ô K´³LkN­Hv5Z«%ë}Z(B:OÊño¯Þœ¾~üúè{:nÝPÐ.ÐY1§ñècaÙ$ñ×lèù||÷傈ÑIÁõÔ í5¥‘ iQ š z“ ¢P€½ý÷àFÚ…a%M”WÒZ“@&z|äFy+Pijs€ +Óu÷¢ußɬqH´¹¾^$ï”ÀK7I¥M„v]ÞÕ=;înɺ>;/Poó¿ûJeñÜù&—ÓÔ{‰Ù@\~ âRí‰e_7’˜lÝýîÉŽ=ÛæÖ uåÄ5ÏzÛ!òܨƒéÿí./Ý×lFî¯È(ß;8 ®ž”ëGïêXסaRk]> 7ÄŠë Ûë }l9LpÈÓ}D‰¨GYA8ν 2xŸûd2Ÿ,â…å«ü#{ú¢>ôÓÏÝ|žƒc+MZ|3ÜÚEÞ—ÑŸÓÅè÷ï‹Ë%Þ§øó¿ñX-Š£i¼:þ5ÔÆ(ÍøÙRõtˆM'æÍ[¿ÅIß9»N¡<qMÎÝ_ãóÅyÁ—Å#1»pžOÑU‹I[/ „©^dL_¡p­òZ ”ÒM ¬Wº5»HÜd4/(_(^ÓP=Kíi¿_èЮö» “jÎLŸ_ƒ0jc \JlÚ önUUý³˜Xp5þ«,Û:aˆ¯—›“—è³»E¼öÝumÕ@ëoê´œAnBÓ”ûuóº†ËŽKo)<Å—Ï{0»ÈâîÇÅ7˜_yÛógð.š^~m½vý'Ý9)üP ™Ý—sŒy ÞzN¨!y¤ˆ)0µå!ÝŽWY¸£Á[kxÃ)^œ‘ü¿õ)Ó¸ƒâUµ9dWw{ Tƒïjë­­­K—ÕŸ}ŽhdÞrf˜ö&›7Bqc5u¼Ý×Üt¿=+ßhÓB›ò~®´ ªÜ>tu2\튆šH¡²³OÓÅY̘å#LpÐŒn¶©Ê­qG}Ñ®à‹:­q(³íÖf©Hšˆ´éèb±Y°æÓ§AóЬõŠZÉ_«íjòX¬á|³Üìé§RM·!Äú;¢ÒÉן—Ïi@BNw«²óÓ§é¤ÅÙ~èÆl·§Öñaµ—7â½ÀEi¹`"€Ö–%§}ôšQÊ»^Þîâ&q›\Õb`Êzæ½V”ðŽcPNE•IŽt#”Þi»XŽ !ðLšH‚E(-<;Ód±•¯|Ü!]iu ,'’^ãañ$hRXéµ<tRH.3LçÒ*ª£¤œ)%W)H©#ÙУä{{’’ ÞxF¹.i `j¡È¢TŒ²uORe§»SP”d\Ò$Ië%‘L:$ðFç;Púƒ¤:e•²3ì dç[,¥Í×lá[í“Ö•îtä``>Ë|¡é LÇÐò7v¡g™Îü£a£9Ϧ¥t½EiìÞËþ!ÍF7$§2žUª³Âs*ÉiÜ&+è«)ì1žohRÒÑœRËc2—{cœãl¶8Ï2ÍúEÊÝèršGšyýUØÙO•C-Íü3(¾›sœMsf?Äi NOš8iÜ /!*åõ(syŒà*x"#Ü@œªjØŸ:I‰‘DGkr7OX¤P"äŒb<^-‹¸ŸÆñôI0ï"’Â2ÄÈ%O4rä†R#EäÀèSöÈç¨Ó@îù†F4?Õùµd#ìY‚´ÓèÍ·¬jˆŠ!cŽé¨C›¾} ÞM…ºr ÌOÌ̤Jzæ%øÒ[Š&ö®-Ðoæ}o˜þ€ ý^Pò{‡!¤T*Wásà@iNð-âÁ"ÎLÆ Ø²Å>»ƒ<Ϙ¨H¢gË‚ˆ²ô¡¼.YoxÀ[OzØ+w½8—j†f‰OÙ?þ{q1ZÉNÎÙ¼¯#üÕÌpë7íËè3ÜšQooºØþN‘ì˜Þ(Ÿ>„]†bßCŽ{/AÝuâÔȺRšùiD!á>ÎFY·©½²pu?ÖÁòèÀhS˜B1–Ã_.ÌÏjÃôeÓj ­'gAÿ‹Añ@™64R­@óä-m%ŽJ$©àÐ042ÂC‡Ð‡ÚÄmiAÊ‹x ÍÜV”üÓÙmÕ‚cþuèñ¶_~:’à=·$YNA3ǽÒÁZë,5|Å qúúè5ªöÇãŠ‹ÆÆ\ƒ$p™$·¨~-.(í›K–…þwªDqk¸âa©÷Œ$ƒ‘äiUú¬ ;e8›B±/4|&ýíÁ´ðMM ™9n,×|÷"w+cº(€{dw"$¤I½ i­ ëooN^¿øçãq^8Ž#ˆ(,Õ\:)}ȼ% ê-¥<ð ±ží©ØƒÝÚIô xѲ‘é@Œb4£'CŒ¨ ”8Ý9šwšÒ æÒrv×ÉûE:˜…ß}ö¹©ý@0 · ¾Ç|ìÎ*LŽnîj¥îÕ*í¯üFyrëj’3ØÒt1‰Њ7N¿L YÚúÑõžè=6ÿb¿˜åVk÷VÕ S.R8›£`îP8¿hÔþÝ%ò=ümê¸{ûì¶$vfòÛ÷(J¯7BþE­ýïÚ^±_ÃÍêoŠe ®™Ã“`ù/Ùšõ¥yÕÛ©—~)ÈžÞ0€eÉäò¥4hÛSàÆêŽ­) Œºé“­àCìYjYùRë¾iRPL+µÖ»â¾6 Ÿ·Üá Ü›LËF× öå£ çú+UÆWívYf>N¡q[ÏGçÓ\ü4K•ÿ:T:'ø¼8ÓÏPËÂ~£ìÎÇ?Í‹O»Z"f¥AðÇ&Ú£­Í_>ZžûyìjjIšv‹êLJçËøÐ†‰¥¿„c*)Q-’¢‰ϬQ£å~é«,õQ²9ÅÝ;Í‹º­¹7‰4*n¢vÒ8°ÒRBOyÐc´sÈîòxÇ9A®$%m Ò)m§6%C´SÝã|Ì^þqí}rÒz&Æ;ö ™ Ú˜d¥‘ë¾Ýзbì:ØÝ[‘=ó 4›¾HÂ$„-̹½wTh«e0Wº¼e-³G„ë­UeÌ0Ôµ,Cƒeh¨õ2PÙ Tö¤(‰•Z/Ì ‰³CÁ—gUqÏÞÔÍÅ^–$ë K¾0ᄆš(òJyiˆ4X% Öltuýqüîý»ÝƒU¿yp,ÁsëM )$#ˆçqÔi%Òzpì¶ïõ½ú?·`üö*ë×—9ÿVñ±ûH¨MÜH €g‰\7ê 1–˜„M³ÁÓ|—â‘R'í5áF‹œ$J§ þUH`¢RG)²5æež}îòkd'qëktý5Í»¼8;ë…z('ál[keƒzæ¹ûá2¼è,›ð²~hMÌÿ¿€Ë±ä>ºqéÏáÿý0­mßXG©DmàPQ)w2©\ZÕnÏK_GÁ_ãùÞetQë9DF­] @¼ò`$Œ©ѹõ;«»KvÑ·›©J®XÉËÊ`Ybn†d„!a0°mF}/J3ñÆ¥›_ 6Fwk¾ÛC5ŒiCÖ»Ií—v°yµ6ŸþþJ¬­ÖÔ“0º½‡³³†,ÌFÎOó&›áùoƒq¶¿}}¶&•äÂ/Žg×·³4[ÁÇ}-Ô¡Ï4úý4~Ž#”8øòóèo¥n"Ô¿e:± Þn[ÂûD.DDß–JIs8x6Iux;¸‹¼Tç®4» t}¿AªRrzÚ ø1nÌòH I.©J–ÐÀw4Yá€ÉF)M^¾ûË/¨!ÏâlOû I™`!!ÑHEÒ*hàòä30ií{øàUÒS§´§ µ"xA$ó<‚#$®v>Ÿï0°$–ÈĤOޤd|Ò ±¤¹,P',ÑÎ2­9a@´"J1j­– ¬÷Aj¡éÒLŽ{õæôõûã×G»¾lpÌkˆ:æäŽ¢'RM)²kJh÷²;aôì°,“÷¹ø ”Ç=Š“x¬­ì8m!z;­åù:tbF+…¼œ¥$àâs‘„2¡jYË×yñáåñ›{ŸDL ©¢µx2£!I¡Ê!RN’ÁÏ®MâèãW÷>|[¨ÞB.L‘P”¨ä6* >èh˜X›Ãë£÷/^¾xÿâ¨îs58!$m4*ÉP\&ÁÃOPw®ÍâíÉÑ¿Ž~¿÷i$$É x()ãg%Ã?‚Y›ÆÉ‹ß1Ö*È,Ä¢‘*)OwÎi­¢^j²1Ö*ƒ‰m»«ðzcÜ­÷(hèèúyC=™Ô[q°Ô×Ó°q%ÿ]±#-åAðª2À ÅGûýæÏ±]³7)ªX"¢Œs[C‘ÆEBZ‚ѳEƒgDêÛòlÓîô_δ‚ÐIróx#DB‘(ùj}~9J»Òo@~¤Èè“‚ ˜Ä3€{…bM Y05B„’A(`Ç7§OnVôWbR¾^{Lîß“s|Mؠݨ{Ë8ÅÏ'*ñ`JH6à-ìÛ ×¶  ŒÜ ÈÛ5/„ÿšÚ+Bòˆ¦Ëÿ÷¨ #—AøÊà]CÔVA›]PëåíÚ+B™QI!*Á„#Ã0çê )Á0V‚±8ÝÚØPý¯¶nÄHýÝ·"T„áTHˆà"Flg.¦.„Á- xYå¿Ìc"˜@aPTȈ–@p V„±¸y²¾•¥µ‡½¥ƒ¥Ý§1ðâ€?xƒ)Á,LP(nb¸E"LHÒbT‹ÀÛ¸1ãmÆ9½“ Ë`0NR˜è‚p‡Ê"V€JP\ŒP‚ˆØq°ïè8~ÒDÇwP­ùSˆˆID–d”a ˜)âBq lÇ>æ] A0F£ ,dH0:b -##‰$0Iˆ¢e§8:Y:9¿“þ@"– Ä,N’8à!Js1æâ, £ˆpÑ›wB­(#Šp–Ó$bÃ0šåæÕ$JÑŸ5ô.ã­Æ}Ð1B‚³ÌJ¸4 Ä!$q‰„ó iöbÞŸ•ûH8Ï[[ŸÂ-÷­Â¸€` J`Bã0B;…[/ux!ªÕÎâ,E p’b4- hœ°,D#:û@="íyÙín‘v·H»[¤Ý-Òf·w¸qó-º›/áâ˃¥òÀ nÓ»öØ×»ÛàÿÇ•ÁÓÓGáÌïËÃ’S|v›ò”ÞyjDüõnË—íæ$m6fN½Ñòk¨MãUòO4|Ò7Ïx@Gûz¾4ò ùãA|¢økÓÇ[Ao{ž¸×_ÏoK–¸×ÛÈ«9âÿpùÅIŒB·é5.³ Ð32z¡h:£Æ%8ü-®ßkH^?.ó€Û£Pq‹Ó‘Ü,È— 6ò§½ _ð¿ ¥üÑ ¾,ËðA*–5s^¶&ŠÓçá$k€2i3X¬Œ›.½¬·©Üƒ‘QLŒIP·,†Y¡ãv" ¤£ð†l#™TÜз ‘%“ZüÙV^!8zá†1ݺå[(úŒë H.ŸÓ*ž¡ñ ôib2{ölcÆ/$Ô“õ5ö“{šð§j64§¨ õñlU/@Nƒ¾h¨åïëi GÉ›J LøI¨bL#°^#~f&\o7Q†Ø å>¹¦,º@m¸ž÷¬å/åq5aC¤®Ÿf@oå‚ÁEà8÷‰0ÿQüæ/ @J ÂÿÁ†cBHú7] ïÒôù/¹‚)îDK~¼õÌ»¸ñTꦸFêÁsy­^A>b_J*kZáa`¨gÐH%ÒMH’”6•@†””„R" ØZBÔð  ËݰU@@¶†‚QLIpnG†$`C+—† ÃM»¸›Bí×_½^Æÿ¯ÌÿäÜm´ŸLæáá)§ü½Œ}Á[à‡9þG‚# ‚Qljvþƒ£J‚c$8•Š%"ÇD+bqŠ¥iªC>^þ·±·†,7áý{¦À›ø_@à-ô¿€b ÿß“þo=ÞÍM@!rJêÑèæTõK(¤aê†À´'DÉR4 ‹0 fØ Nb`P­Í€7‚dÁ´¡QÓ("bQ’Æ(B"Æ`B$!$¬°5H~úò:8*Ø¡$Kñb\H€‰‚À$"¤1m ’wÁ¾¤“c1 &Æ(†Ša! º‰Qœcb Æ>TsåeüÿÂ4–ó4îçáÁítõ'µþßÑÿ0B íüÿ^ô?ÊH àR0ÃàB¥)ËíQÉå´kÈOÿ7pnF©Ÿo3Ƨüßþ'šñ¿è!,„Ûùÿ}\f`Ly?àsBhÿ!ŸâÓ0¦ ø Ô?ñ—n!g)½/Ê<ÏmB¬È·ðõcX¼Ñ-7¨‘y½¸³Ìëñjð‘èÑ~~r&ÀÜ!…†"!F †Š˜¼ A+$xM×L¸ Ódo@ …QC„b8aˆ" ¬L@·ÍC÷ÏñÈ­ÞzÎÿþ¾žoŸÿ Bˆá-ùÛùÿ½\1ömºuÑæ(²ÛøqÖÔ1|¿ªª þÇé¯Ú>”Ŷ6ÖÐ3î/%wÃrŒÌxkK§Õ7ÏÏv]~µ^å¶Ÿêh KIiR†á®|w›1ggºiþ1 jò¦¬Y¶ï-šu&`äö)©J›KÂÒ½6oöñ9÷ý—J̉¨L´îO_̲Þç0âpÒÒGîÓz†,?W u¸6¢úu¸B.RÕÒ°âÿ-´„ÅÙUSÁw潕{4ýÔÒèùüY5ÕhËÆïªúʯ¾/]0ÙÉ)jçÅ/ú;¤®¸î°P}á¢EVNN½‹XþÑk8âZÖúõƒt,µ–±g÷Þ—±x±”/äž¹<`˜šA”Æo&9µæLHøLëAÊ@Øý¿é)ß4o4jŸÞsd•¬(çoÒa_p`ž½–5ø(›lö0y­÷y‰S§ÆLõäÞ:ßÑšTøÇ®÷çßñêªiÌdGùšß=†ÕF¤»þœàñEÌûWé+Ǿ©+‹ìnïⲡþéÁXMä‹Ç!v+B'E<$ù–Æ]ä_b¡¥[n˜ hp়¼§yKÎçE˜:88Ü>i3zöô‰<"ü.¤×!—£cãuRcÐ[©&[à°æìÚ‰kFF‰íK•¤O-ý‰íjmÐcPÏÎÁÕçbNoó¤¯ÿöîð‡ò„?pÙ2ãà¢>‰ï¾yïØnÏÊJÍ›{çòxkT%gýUyÃ`™*‚ ‰˜§ú•ãkbµÀcÔÉïÆ@óDWRrrrNÑô†ï|òäÉ2ùîŒ; ³ƒnøß½bͳv`^¥ɧ–Dò]zO—þ±«@7ðpͥšÃC×~f°¬ìî‰Q…ó•TfPÔüôtÃÌ;(.?j²÷¦<·®.$¼®|AÚ Ý‘ª#¦¤Cй젮*ê:ù+G¸d„Þ•˜ÕèÍ‹Tén0jÔÀ³;|” Ù™í/FÔêªëŽŒ:¼|è¥k'¿O;{ëz)¨ ¾{å—Œ¬,gݤU«¾ZºTâ ÀÁ7]¡üeŸÚÜ{0‹GriÞè­-U'd¥P÷îÝëêêÊ*<~½WS8pnÙ Ó¿LJê?ÍÝ=3¸êŒñ©9åÑš¿o™]ùûðâÚUFnʆMXMöˆ‹‹KÛºÖ"B»?!›ž?wî\µ_yµEDöÙì0Ó’Ó§§fݹ Ð+ÍòÖý­ôY叿Úнú–ˆ€ªNk焆®ËÎÖ†Ê*+Óêà OÌɾ°Æt¶SBUUUȰ¯mÕHgggwß—î¸\ºbEïð‡ ªªªù%›Ý(oïØ’’)ãõTÓÆUç‰]ˆpžÀ×û<±Âz%‹µ[ës֯﨣®¢®®>ÌÈÈ9"7=ýfò©mÛ¶9ºWë$;}öì¦ó¾Riê™ûÕµ¥±š&ì}öÄ„ð=·°­[Ÿ”AƒëXéFD4ŸÌqOT`FÄ£àÛ!f½{÷.‹5ÉËß.-‚}Îà²óÙ}Â-VTT,Œ‹«’çnvÛùeá¥un;d– sÙü–÷‘ÃKwøôÿ¯­íäÏ?_äsvGªûÖÔÔëÉ…G*ä7K3•®+(+ˆœìàð]ý®Àë=Žë¿!»[3’´{üVP4iTÜÎ a]íììBnfjèêvƒ¼d²õ÷oP,-ð.Ñ32²« ›dVÓñBÈ¥nÛ·oŸÚvÍ ©Xž(¸«~–™”p' ˆŸ}9¡w3ü.Z¦¦µ!2wwÝ#GfzŸ2¾y&˶êÁþýû7»CþåV¹á:ž'’s=»ñ(]~šyY¾{õun`÷Ž06Vœ£ÝMÍØ#OÍÃÃßԠ%…û“üòbF/Pï`ßQ»^Ãõ^BáÉåÝ-ê 02 ccéìÞ¼€Z3ÖG €2ç˜Âm§ï€EZZšFÿþ±€½0÷¥& œg¦ÃËÏ¥s\wÈúe2‡{¦OÏÕ.))qÍ ß]ùh’ùýÞ‘Åç÷>½£H‡ö¯#P3Ì®¿Øz”=ßV‡ž¬[ÙZŽ®˜hŠ V”›[òâô;•äÐ+ßL71™¶Ë>©¢áÖØ†[•7nÌÉÍ »?ÓgÕhÖ=-^),ìûÃúõ3ŠÓœ-"F®2v_´ÉekZÞÐeã2fßš~lí¨˜çñW~IÒï“áuÒÊ_- °Ÿ>ýBšraz‡4HÑâdÚÄÕäºì'€EÄnžvͺø=çkƒ‚êó{¿ fÇÖ˜jáæåí]tè„â­¼4ðˆx\SR™ºáö“Ú‹4w¥Û¥Ë+çÔÔÔ >¼ÀÅ#"ТþС*{‚«ö­½‚l– ˆÞ¶- áèùÝa÷ÿ#¦éš›ÛNˆ¯_ÍûÔ&^oĈ® ©ºËË'Ý´xßÕsÚ4Ÿ¶mëÑ«WäÜg.Úýú?N<õ¿4¨ÄGú G'O= Íÿlá¢.úGŽDmLO/¬8:#sB¢ñ­¼LWÃC ª¦Cj,õ”b÷íúú ·ö>‹|´¯¤¤o|||ÈÓ‡Wkjz<Þü(&>þ«èèNÉáwÆËNÿÔ ºÍI²Èîœd‚fTÉ ©Þ}5;÷iL¯¡·Ë Üwút¿ãÇ×Úû4ÐÈ^ç®üˆŸ4âµ 5Í{“Ëi¨VNž2¥ëü”‹~µÑÛh#•¥¥iëõµu>ÕϬô“‰KfdÙ_ùɃ³~i+GYZZ–fÒ*@‹-¢ÝpÚ.‚‚×Lq§ÇCÐÊ•+Mgo9ã“øí·VÆ £nG˜’$-Ž»õÔÅcêÔÎ...Åñkg—<,-++SÙ2¿³Õº~ò€NþÛæïÞ=¼HAe×ñ¤îµÂ¾tñ¢EaNSJ¾ÿÎ*óÛ »vibñhÆÊ•ÝfÎ_•ÕÉ̼*¿ÜUþµs¯¡ò‚r×ýEEêññSügõ[l© ÙoÇÖˆŠŽý¾ÿFñâ~Lÿ¬–µµ¸¤D|éç¸ [g•ï먤îJ’×=¾{ÂY‚£c/À„ùâÌuy{öÄGF*éU~é’4lĈ5õàÉ7Î[°@*âîwÜ—Ÿå;í¸UX¶ù‰;B@mª êRšš4¿Þ²q0<Àhª-Ÿd…-^|9ÍÞs_Tõ’]’Чl¾öìÁƒÅã&³¬1èë-'ªöX.ëcfV½—ÏÞ½lò³npgNE=˸<×S£øš;dÙ¡3 àS_n•tÿkë t_W‹½;ŽVvž3ÇvèâbecãÈòjßMõçNŸÖVWŸ²8·_|lìèÀ@üx²ùÑCOn,ûÿÔ)M Ï¡üK5·•¦-š=0üv MÍZûŸöµìXTª?,Í%:åÈ›[•ÑoþpæèH“¦n›6û{ÿ×TÓ-£Ø±÷^€ H „ŽH/‚….ÕB‡`€]ì]ì½#bQ±cC@Dl¨XÀ¢x×ÌÞ;ð9ç|÷þî_ßó¾’½gOŸÕgÍš—*nWTМ@ÃbêÞ}ˆü?¸Âbˆ³³|^ø:ý¸«çïyÜkË2¾L/cl¹}{ý€.'_¾y#?c†î2…Áµ}s"ª®e´­œò"®ÛÝÏœ93Ê$Ù¨„W;nèИ?' B—,»›hï¹³{MYv™àî3÷+¦©ª0‰V}üõâÝÈø¸§Wïßïf})†XÐg—zïœñþ¥õñ;Y+ԜȘ·oÊþe~ÏÎòл•1·«““ nO˜ˆÀ‹'ËžÜ\æ¬Vò+ª¢´Ô=ûãÑɪêN'Ï««§›Ï«a7ãÓúMÊWž›;H~IÈþ“«Šæ•õ1ŠõÌ.Šˆ0¥5}Jì}eÄÚ0D W;«™Ççr]®sëf\p$KºkÙƒÃãîÞ »°ð HˆÏŸ‡iÍçNOsez”™o¾wÿþ·‡)m›juôÔ” ',\ø×"òt_3óªÁc>.{4;öן¨¬wƒxúr®®äû}Ž?²Iç©KÏ‹wË,ά²šS<¾´¼z¼Ö‹ªÓŸÖž[edö§ñk4!Uc‚×ÅÅe͉ÓG3i’þ‰¢ñ…¢¢œââTMPP°¶ß6Hέ<Ïtàr?ÃñƒwIó\ *‚’Æšuoßš›Ù›{fØâžýg÷0çpêäûG/D*©¹VQÑuÿþìóõn{Oû|1ï™åønÖîß³³mÛéìß_±ºw¯HÿFçŽúu㼯§§úàçØ±c¯>xàØxDC¯ÔûËý±_-n/=uöê«nÍûƽÁ[a±¬¥ÅîÐáoë·Þ¼•jù4oÊàðp$¤Ê-\ø D=õ‚×Ú™§Fk]9T^U|K¿{÷ciÀHº§M” ûÓ‚‚!´²oì/«ßÕ[¶ ‹$¿wª©-A „fåÊÎ{Ó6;Æ…†ö½pq€ë} Çä ¹tfåÓ~¥OÌ1üôÄR1{½ÿË¡n?œ÷_¸`§Ñ>¼Ûì]¹MßÏ¢¹·ZóÝÔÙyêóªp—ôÄ{÷>vuòð¨X¿}n/eåŠó;Ÿ›@ÒËÍí_[›ä2uó¶m‹ù—m—Ø«ðù5s‹%±‰;·÷7¾—v‹jÝÀU7ï£}í\¥ßŽÐ*PÞc×<~ìñüâ[õG÷Ÿ=ëS¶2 8¸ç”œµJ4 Y罕ŽîH|ÿÐm«3M×»»Ò-ËgÜboC·˜˜i´ÞrOúðfôÈïµW±¶²¢3½nßüý㙚 svv§!ÈmMuŠçNº;ãÊõC_öógд»ìÔX6 zâqÎ ãí«×lÑ×Ý]Ïè«(ÐßÞãC¶ ß~Úä1f¬åQžóðA‡Û6y½J¯å~‡Ï'=Õšõ´ÒóçÖ;öxoÎLKJÖ8äxãTÐîXÍCJåh~#~>®5lÄ SgxŸ¾õŠ&ÀϾcÇú nV6ÜZýKù_\Îé^ºT—l§•aısqQ>åuÇœË0s÷Å5 q……÷â>Ÿšb¿íJ4CyÏóIýŽ;Ÿ83ÆÃcõÕ÷Íx‡§íÚ½óååKM[êæ'æD<+|–Û»®®¿ÈñMvè¸_¿J¯>qÖ/®7e¾ºÙߺß8ÕžižÝ”5bt\]¶+«8rÄq*Ë`qað²ÜÜ·—3†_zì˜êš²òGVÞ»§“½@uŠ›\î¥ÐézI&þÜ8½´xñËñ˽Ò2“Ö\£‰©aC_Àߤäþ}úÔ-c÷è±Ò¤èîGÅMw®rϼ|­3êÅ‹_¿°êÃíiÒ­ç6­V-ùay“'MùúÚÒqUÞ½|¢aü4lÄ¢ÅÞƒG^}ûö ~£_ÙRæÌëéåV½ —û¸¹½ôõšŸûéy¥æ÷ãïÞ>¯­ew¤à쵦j“ê@Óƒ«ŠÔA•¶'9!hïó¾)5~¿¿gj‡lSﳿ,E¡GX}Ë+¤ôAhÌ­KñÊÚ±uò»wÍuò­^y’ø5ùhW¹‹Ý-”­jßú=šØg¢/Uæ 7XdÊ/½ûÁ©é3×¾¼ìqñ‚×€ ^“ã*®–—îÖk‡v‹¼MìæJÿÉý_^[–j±ñgÕ¦ Û´®²ÝÔU;è‘\FÙ¦ÝÞ ¿TÎzstoÄ(¤yI«Ç¹Àuq8Õ£G†aLÿVð7ãcÉ­ÒrÎ ¹CG¾ŸšÃX´h×·/95(l·_ZÞç[áÀòȆÑ6uì÷wÿñnÍõ·wLYì¤üË—{Ì[c3“iáè¨ôøqH,]„ýSi´Kœðð éopé!!c”•¦çŸR7ÑÔÈXjaÆŒØZÅ».^ xûÞ6ÅíoË:¯gÎê,ÏÌ4ÿ£¦pcyNÎë»v‰û»üN¬+kÖ(zy‡gù¸¹ºN‹ù,éÖ˵1þôZòÂ4*Žãñí–BÎW4o\æ¸ñZQ£FhŒY³O1Ð*$av×…³ÃgÛÙõ®{,·3¼»¯¯µËÔaÀ¨¬'Ì_ŒdíIŸº×Ü¥¼@÷«ÅcófçßS––KggŸ½ýüy–èB¶Ãò.åçO|MõHFòMÄ£V¯¿ó¨Ïú½)½¦M~ûa¦Erò$ û±SÝ÷==\tëV—Ë—×~ýy»XMNgÉ´q­+˜ÙÉÑ“uÏõóMÞ¾À7ÅÁrÞ¾¡{R’uÞ=ÿ,°qâä‘Ü;«FM{Ü7±É8}ÃVu‡¥¦rëÓÜVüþ{¥¸¸Ïòœ¤[ǀ͌3Œé6þ—ßB„—לœtÃÑiÆú'äSâõÙÉ ëÎ,ïÍáLïeí¾Íp›€‹þ»ö[µÙðÀ·¸ ã iêêQÀ>®•”L˜0áü—ôÃL7ìÜÙßÞ!¸ÉÉæ ÿ¤Z­¸á8l˜j×½7†¸¬róÙ#wÿþÊñÛ7‡{{1{ué2óë×ÓÝÒ>u71¹e].ò·`ÂVÍ¿cœŽt•ž¹5Hè²üH¡"¨GéæÎ¥F>ùö¶Ç… ýž<±57»¶ü~_e 3àVŸ¨÷k¯°<øòË—+Âøϸ[7;§:ÔõÐÑ´‡÷1âˆ|ïù.;MßÖ?Üÿèu—TBJ½§¦Æ<åj8ŸRꪢ—L¥ GŽ¿”?~ÔÀçú^È^ñváæ­Oí|þ¼ò§IцêÓE"u¹C’LL¬A2{ùþ½¼¯ï÷&Ä”¾xô°áI³>§ëÈ ®äy}±YizæLe%¥n@ºÞÜ©`îïŸjU÷éÞv{£¦çÆFm¿”SWÌ=ðÍE­B~±ÜË»{2ÜO÷íß_#u•g/MÍÄ5/ª«‹Æ>’øçþ½QÇ—]ºdWÖ¢tc¯ ƒ’ˆºÌ™¾`(àžF͵uË<ÕgÅÉågª ¢³‹+·„ïkžŒ­êõP`šÓ]·&|(y´O^4uœzdîÌ/ ã\>˜§'5Oá}r.÷`Ï} ¿ƒ6ï= .nÚì¼àKåCEèþ«W/Ü |¢”ÉMœè?¯ìDë¶iº—ÌÇvc׿¦8ýÛ»¸o¯«‹#}õèÞóã;¹÷kÃý Z·öÜþ9bì³ÍtÓÖSùv϶¦÷Kݸ©ï† súwî 8ƒD+Úµ^ƒ¿Å*]ì“ùg:–ø«2ÕÔ—6›œûq‚K«^Ιñ¼¾º¬ºòvÂãÒ‰fVVÇ+˜¹¹]o×|gz>_7êÕ_‘_ÛŽä¸X>œ½ÞfØâŒû÷V¿zë_ÞwÇ^…^#Fd‡,¸–[=ä=Bl͚ܰæA=6Ø,:thÑÏ‚ ¢Í«´ýZ„—«”´µ{íý4<å«iw4¥7¶«Ç¾?úí;æsOƒ°_fl]}õ–ÂÃ/?F[äÇŒê.§¡îž+Ppt´ûZªÅ]rôIÝÎÛ—×ï÷ò_ÞÞ0ñëïlÄb7NòÓ }éî±CÛ{ÏM}½,šî9{ Å»wŽËÉ€+¢l7gÐ~%`(!¦ƒ×¹¼èåVÞONK‡{¼‡e]ÝùWn—”ìiÛ«²dÐ÷œÙ£,lL0»>©ãòuÓÖ›y†{Û51±âDÕìªôÆÐ××§»Ï­õùä;dhÔ×;“ ^½»?„¨;ùÆ+^f=ŽÕ0òEœò€‡&&£ë/ÿÙìZwNY`«XåGË^‘¯Ì ~Öÿíus]SùÇV“~æ¡ÊŸÖÌ~úÜxßE¹àà¤C‡6#ô9ýÌêkc´sÆ„>ý£ÍÝ·-¿sC9¶ª~^(¡»Æ>Ûwµ°phn= ã‚¿À`-f].³ß[™S’ô²“'›·”u™½ÄøêU脦‘§Ï©µÏ ¼ ¸–µ6Ã7ðÿ“ö¬ME5S£?œ›¶bó0Kù†Ÿ•ºZÂcËŸ„L|©Óöû¡Âé˜/Ã.ýx`ŸQÅ·¶_jºàu㇥#Û–—Õ=[og¿cرÆ1\E¢¾É¿'õøöíÈKÎý˜wo»n×U#×=¹£ô¬bßó«ö¹ *²i¥O ®>}*olü±KñiΞ,Û#îø 6§•ï?vlŒ¥eìlgç5¯_« áŠT‡è®·KKGíÙóT‡œ¶û‹ËÞ¼‹ªG׊PÜm¼ç%G¾ìM3Ÿ¸ñX2Ým {¨Ý‹‹¢-_žáêéœZ·ÑÆÿÂüƒò½{çl]¢AhìÎafÖÞ˜®Ë“ÏŠÿ±1ŽãN‹ÏÌ#\²474{­wÞƒWÕÛzdæÿœêÏÛáZŸ§¬R¨8ýL^Yhæø«ÅËÏD½×1úí¯ªÝЃ7öÙ«B[U ýKg_4dÝÈ_Ñ{¬©)póˆF]ôtþ¹•+W¥w‘#8KmÌÌ ™™Ê=è}~Ï 7vXÏÁÌA)PU=6P4LwœŽnÑl—2ùé¢^™fO!ô¶í[?mb6;}r utVõÍ÷{÷^ùRÉ‹û|fÞ¥ŸoâÞž’Q~Vô'¸å½IÁ«ü¦=W?– ÍNþ;^{ŸSexMÝQœÐÜ'{CUA¯g¯÷º­]«'7×-+Ûv¶Ï)㣪“­Ï|ëŽmgþÌ}¿ïØ›÷Y:Û™5tò´ÍYÍD8»ë7ÌYé™3¬Ëìðð¡9ƒZþ©ê B övÑ•éÍ–+Ÿo² ~©œ4ªœ6oAïÞPöã3Ÿ>?c€,ô3ïIfªù> Ï™²²F<4Òí7vÊÌÀKí™ioªbS®-ì–öµ&­/èo6VŸjíGâO‰ñ(Yö Ü:£h½­ºpß„àà]æDG+¯^³æJ ‹ú{¿±GäSAwë3°aÉtŰêÚ“ˆ¦Å²Õ'Í€@ÊYÎ~û. ½¢ñ^基 qµr«Ã †À ròxÑ'~žZ½ÚñÐÑWß—w•7¾—ÒÄëÃÍ—]àÀ$ÚÚÄ)–²ý„mJ 9Xò7 {&ââÒŸ5´k—†¼/Ùãf}“/™½?½qì„ñšIò3ÒÖÞ°V¸_Û”¹ô“ÔuË.\˜èì6…{]^ÓÂr©ßÏϯ²ÌKªůús訣Uuó¬ºhœÅ7ÜK¤wR¼o¸%hsS€ÙÚÔÜ<Ÿ·EyZî [Û¥6¦<^79áöÐAc>öpkÇ«•+Œu³`š×L[­yù×в²5©k×^QÏ´_ ÜáÈŒnûäD­Þ›ryEU^š_E–’}Z©†÷!Ó|¿¾^Õkðøñ g¯ÐIÍUºkpvq¯Ì—ëL"Þ78`pÖøQÕ€€(h@ 4àî=YÊz¥ã‘Æ®9`€Þ>_}ƒ•ÀM–áPe8'½}¯Þvòxp×}îsÞÖ÷âó{ýjf]©ôüöê͹ÀÀÐæX+y%ö>­ÔQY ©‚~\ab·~£ ÖgaZ×gáw¿Ûƒ¦Œég7ÁcV†oáòDšŽN÷’#K¯®­ÕÉ>›Ûù€Ö¥ hîEyÕˆ57›„jó†¯:ìžS—25JehuÒÆ‘Þ‚Ú ‡>ÁÊ Í!ÝU´xòùçÃWõÿvyöÓÕon9åemИ«ÓsÏžeßø>›6ëþ6YÐgýÖ›Ö kéÌ-ïRrì(£m1ïKc5TÕN8zÎÙ úÿçÏ‚Òòœ®³÷ι^Þ±"†­¼d} ð—ÅÅOU¯}©ÌÚÔ»˜IÈ3÷Ü»ÒøÉ²gh2GT_þÛ¦v¹ùã0`Cî"õžd¦ô·vxÉáメÿçÞyz]X¿¦õÏß…ßÞ´ngwkԳ˕š¢x÷Ë-¡ˆhƒöv¥´t[íÆ¬µ·³îß?|ûöØÀ?“& ?pèй—µÁå/|Žü*0°¬Éës&+g½—g츀ð~š™§òöÌÏÉjú;Äã®KMùYuøö=†¹£ã~µ_µµý^=Ú?!kÉ®†ã »¼¸ÿò‹¯ ì·Ë¹f¿ïˆÕ×ViÎ\zð`]ëŸÐðá~5wó/ÄŸU-Êé b ¶÷cví .mm{¸_¼V˜ÿ­±\½Ì…ä÷g»t³×5E³Ê:Ÿì}aýbu·ïŠi…û< .:yV.ýr&ðaÛ5†§Á€Oå³@ƈX6}·ññÊá¾Êêé]­×ž´Œ<Ý·dRÕQßÅr–yÎÂ&ÈÃoí×gâ ¼#ù׫1kÇå®Ü±CÅeì³]Ó”çq8w…ñ­{,hæÉmU]ÊîÜYj3ë}lÞÅmwû/vgXÎ;žÐÿ÷‡˜=`º…ëØ5 èø—„£>Ø«?ê­ÄBëWÓ‚äDÐûç·& Žx®j?þi2¬s€ˆöS¨[1XùpøéWoKÌNf7«º5~âxðµ)Õ¹÷ü˜wîYÜÏgßܳC<ȹYVž3ïÛk÷Í›K_~}•-ßGpñP¯ë€6¼}ïÆmkÙ}úÜØÔú‚” 11[íÓé[c«§¿bý†ýƱZ“v½RµÛJ™vÉ%*µ_vcñ è]³ɯê®ÊääÉžZÞìÞKï»_ÐQS=UàŸáÓVõ1,)YãÝÃê.C‡¬7wÆ—KUÇÒCof¼Wþñmþ•ÏÏ >3Ü¿ßñL¾iˆÚ¬ìÄgkÆÞ8v*bÉ™3ƒ“’ƹ¤/§Ñ. òºAedÌCå•Ã’’ûÿ¡¾!Íí™ñÎcCâãcÉwQu âεòòÁÉÉkOüÔMIÐãÍ’Akj¥j!¶ʆ|›íÝ”vlmàÓcU«‚v€PgÕ3;¹u¼‹ËšÔ5ìåugåpõ›œÆ¶£ôlšÌ§ÏI6ÌRªhœ<þÒ¥ÏÛ™µüâ÷ZòrjêcÏ說Á7íìÖóžõ=²7Ôžz09ûqÉ „† »Ý4Î>ã³Åþ ‡E×®©½}ë¼ïÅ3ëBPÇôô²ºÊ>å/¨„ÖîÛòBÊ~€6v:çh™â²™H ûY£[³‹÷½ôwÞ.4/1èewfÚâ}Š#ó§õ6—/î¬eÍìO]Ä]ŽÓvËŽ½~ÆŸ• SV©9Xοœš2äÕ÷£‰ý_¶üû§’á;T%rð˜„ÛY™ }åÅì.¼º8¸TšÕ“fÜüàêéêºüرñ ¥+'ï~‘£Ò¸\KþÑßgösÎo?5²7è !_?9·P+%¹ûóªðíÌuÂGóyY:ïÞ>™;ÍÔ€»ddÆOšÜÅS*Ž=­v¥¿Bl&íN^Z¸dPô°žŒ‹=ZZ¾rýfçén}×ot\ôÄU{ê8u ‹_Š´kc•­”§>]Z–úDÑÚü)3é¶¿ ¤µyç¯ë7ÕÌ{-7uÏO²•9>=­¨ÌðÁ±«<{ ¸µ²vã”Þ@¨"ó5>‡Ž¦½Î«2ï©ÖÀ#3«ƒ¿4wQiéôã™ó+(dÈÕçχhË–Õo컯 Ù¯Þ s-z••ê)þsɨ BüêÓ“ÛÆð¬·ã¡¹xÐÍÄ䯣K›·õ‹ŸÞ[iàºkŠßÍ?’7žDõйZÞT·ïýü7-¯^ël«u\±ãÍ5Ü]FÛnš\r¼1}àð‘n~~–LMú¥æåv:¹í [½¦1Öz×¥Kv–_ä–û-­/ðí6vgÛàî]Z5ûuƹY‘Ý+²ÎkÄåßï¦Ùo»Â»81ßeɹ+”­7®ß`îßl£¶`ó0Ë©Â7VÚgÏ)m¸ýòÃTyóåj‹öÃPêšþð³YWQ1ñöƒ#†ÔÔÐcØNçwÍŸêúµÉ­»¹W]Õ¾Ôwƒ§Ìeq†~»(=l`rdaÐ9ðÀæp߃V¿Íív º´ùp<ˆõ¿>¦—LùÜóùó°3UÃò.”»ñfåÚ½4gtábuþœÀ^öýšò÷®zõ²ÍWrt ÆPî4öÙ½íœ}¹=ª]KîÝÓ™8iø‰wkÞ:Ë-É6ÈNÛЫػh.èô'NŒéò¼ªÆþYˆUÔ ùb_ ©C¼ |–½Ýh4vÊÊâÒ‰‹2¾L_=®vMñA‘K·½µý 8]³“ƒ­¥6uLL¬OzNéõnµÜÎŒj¥ArhÏöÚÒ<Ц^]Yè¤Îïâ!ãrßB¤Ûç·%ŒKnù6æ<ßwåvÝÂmÌã¾A¡›] QþØ}QóÏy6ƒLš<òÀ©S¹E*öﯵ˜{ÑëÀdVàH¿•vv'æxyõ—ÓÒ×_–––«Ë³yûþýSÍäuЇLhÝ–[qÙàö=vùÛ·f0¬ ¹Ïæ5ù–ÝUHIÙÑd¾­øL£º’ò÷I7ݾ½æiî~k'ä`–÷-ŸY7E‰Ø]‹|ÅìÞ+ïe%ÿïÂ…ÝþøêÞP¨òV0íEÊßÀÏ•i©÷wŽœ×ÖydÆG·î‹Æ™ìYáõÏ/:¿~O{½=p™+aØýƒµ½6iÛ“+·ä´Ö@—©Ã&Ô9Lv»Ý ñÏ9s¶¨©Þ½3§»¥‘OÄìíŸFÎ}²ÏrÖ)ÕÇ9Þ6½kùªýtäîžScP¥æËÃ×®]¬²YSÅ~ö¥ÜŸ ‡4^ôÖ½ںю7Jçú½Ѓ°ªä~”®Oò´!ºËÓM¥—›‘Vgj±dÊå¶æ¹ùÏNnlÒ² .9bršWd›ÔPvÒkÚÂZAóá,½ ¯ßd¾:º÷ÔÁS§¶WÜnÞ_w>§þx~èÈÍÓŒNß´üý{w _ŠSÜ©y×ǹ0ÝÁþé׆,óé ÎyLûé“ÍÃ)fYK®íK>áçé*ËÇ;—8ã×ZûçûMåuÓ§ˆ, „å͇û©ÙßÊß_~÷îÒõ @‡UÆô)hÛ±ò弑ÐdvõÒér‘5vÆ[5*CùÓW&›¨ξ¦(‡v€Û~ì­þš™Â^£ª¢í=³ ìÌšÏ×Wè¹»o{U{t9ˆsjêWÎE£Ç·X9i Ô[]¶t)ÝÌÌËåÕ À‹åJCl×§åžÑ/õì9õÙîq½†¬ Müþ3föRó.]fÊ÷"€{ñ9Ñ¢|ö¨ÒYªÕî“' ùú†—³³<²q \Âõ‡µ R¡{0½n›š™õ©t^DÄÊ ÊÇgxžòV·°¿Œö-@Ö„1 w:Ú³©¨|é¹Às_ŸGýÑ ¯tý:à õÜêe ú_™Ríu=¯~‹ÑN_êng­þt|MØÕEs"£œm³ÉÝŸª3îãSŸ›¯Ü/5½ùôù#C§¾­!AU=Ý){;/ÐMQcÍ:ôËì<ø褷)uýòéœõ{†È/AŽÄF‹YppF…ýÐŽ@¶ìÍâÜkÍJ^3¦¦¤Þ-ôâC‡º†U'÷ìÝ{4Úªhn\§¤£³¤ö¬Þ»Òã•îÙÇ"êùï0­ÌÅËF@ǯ.vûúÄó›{ÞÖ®Já t Ëróôãƒß0üt¬Ïòcù«†Ÿq_ šý‰õ6Ó®\ô³ÆNÜÿ”Ê[ÓÙ£M9 Ú™Þwo€:¥ª‘±47—ŸvÄ.…›k‘¼sõR­ÒÅã~ŸÊ—ö6¨Ïβ'K«e Ïp/Ú/Þ@l¯\¿±jZÏÁ]»\ùö†î^Цøîáº+G÷Z.5ÈY6 z:ˤêÊ MÑò«n½|³îý˜Òêi%@Íýx(lùZ¨¿‹½Ó6Ü¿§â ÷'\LÈ–]Ý»¢ˆFK 2žT«Ë^jßµìåÇ:3È®­&¦6†} 7»3n”¥÷@ràëÀÅmÛNks—L†~ßúõ­m”ñ®èOÉyÕÜHóº°O~ÁãÇqÞÇØsþlÜØçëï÷“#k' ý¶ùÓ¬y-q)GŠ_@6–‘¾F©–«¬Þ˜üÝ^ž™òÌ0JehJËü_BW¬˜ºÇ²üVŲr/¯žojÒŽçeÆëŒOwKYutϘ•ž#¯ÜS¾»Щ•õȉ”a¾¦8@ÆöáÅ”éÍk|á‚uû¶êRgµƒ?uÌ_³†öö]Ÿõ[\–¶¹ ›”§ƒÚ$wåñã~mmãº÷¼¨¨x¥·©)Ú£X¶¸[þÌÁ…æœõæ(Kú­¨¤dfveù!Û…£ô‚äJxCºYeø^Ô@JÉ͆ Ý\ÒÛëÒ·››@[ÙT{¶yõì§«?|ðŽ{³f²Ïn}Eåµi>¬%eé“_ÿm«^¦Vºg IËh:ëõÖß9yúÚý AgtÞíš¶iEJË›±Èí¡òüñ‡+BB†pª.þåÎĽ^a=êäc-ÕÊÛ¨J˜Õ#þ‡ÕëãG—=v}ÜóÄqÛ%@v2²ÓVX axžïu.€þΣؖîè[½h×®>þ<ú»ÁtcÍ[ ÎÉÉÎèÞ#7k¹ùL˜÷.iŸº÷]u™/Ê86èõÁukýÊN¬ï{0~û’iÃzj{sb%+ ;ߺbu¿« µæ/ë"Š„Û¯_Ù²Ù9ݵMÕ³`ܸžœ† ÖÇÃa)Õ§¤˜ÛÙõV±ù:#'Ë›E£ö¦$wõàýëSf× úÝÜ¢^ÿø„‡Æ~Ç;×~áÙÚ.½“!ú権ú]½Ê<Tªªgäž8W PÚ0Ö1ïÃìaYr°Ôc&ZìåñË«õûDAúsøiûÛv—;Q&š–Åb2G#ƒ%c„Và´ï4uÚܦ2sÚÛËsFâ={6|j´ÚÁ[.ÃZÿy¬y|ÉœÒæ'ÏÜeœÜHìd]þõzÖ¡Ãß´£C´|âyc– ø’¢4hßÔƒS’~õ Šqõvj??ƒã=L¾ˆoö|êøÌˬݵ:Ù!¥ÇRßJ¯mÜætÔÇ:òôª­jûÓé“ܳTG()1Ÿž œô$Ó$õÇûsJ[îÎó¿~ (çÛkmû´àȺóZ—Þ»'ˆÌ™ºrÌŠß?”±Ë}¸œÏ`ï¸ÝþÅáü0˜÷¹Û›â< c÷ܘ¼·¥ç÷>;ûçz-®®ò2#gϒÇ·P^ìv÷ôÙ£»ï³(;.³l2ú©µiÝ«|¦)c+,aÿ«–º¤«¼>œF«ým›µòÚ¾?ë·Ï]{eúÑ‚Æw9xÛø=ÚwíÝ;Gi<‡Ï_¡í×RáæÒ}qáþ‰Û´Žæ=Ñ„†A`Ù°A ¤ËÀ‡œš»™gøÕQÞû6ƒ$1sïå5@§[YÑ'$2FÁìŒß¿¿5qû7´ït>ü¨â–»rrŒ}UT¬ÖÛ¼{¿{»{^ŒNáðê#)Š*ï†]ççT75d´„äªU­ßz³ðÚÒ3‘Â,³äËrCîT½_³¸Pqâ¤V…ü#ÚÇò ΂æ÷òÛ-…ø—C¹CV¬°hôÛ]YtÊGCn[Éá|(b +¸ÑúF¡úå:“ÇJ›î8ç𺇆ömùä;KYMm×ñå îï÷—Ý=}ìÂ…1róx¼µ äŽþ\»÷þýò½ç߸²ðc—‡»¦ù¾Ê,ø^v9 ,lÉÕÅ_oŽÅ->PÜšP§T<~XÏF3fPÉßý+söÞtóÕ¸ºkšr]üøË*sflX¿~á’%•¢W 4عø¶v¸‡|Æ E–©â±[Kû>C8dhÔl·òÜÆUfváy‘JcAjZhA³Œ<­>dˆÓŸËö*·ø‡¹ 7­ßë»âÖ„¾h ¡’¹×èS}>ÞÕÕõkùõ¦99vbJ|ü–¸†â¿1ØC‡ ýHÓ~ëêÖz1o},«~½Î$âxW‹I•òÛšÆt×^»ÿcêF›‰WïlŠ­¼ÝsÀ¸G÷ôÉ«78‹”rŸUæaŸö{Æ[ºróåÐù žD¼`ܼ¿s’ÍŒ7û³]ÐEƽñ…Ë_Wò5ÍUÃêÞÊÊ#üuæ};=éû£1·¦7[88 ¨fšƒ4Èúö¹Ë>î£7%ahÝ{ªõtéÕcÚ›ìò×=z\³¹~àâÅ»¿[Gi‡ Ë.rÿ€Ö±^´ Ý5/ÿŸü—=\;µøë[ZÛU5ìæq§œùßý{žòÆÆ¶éÑmRéÁýìn²¦Ÿ‚ò2sµ-œòSçž^Ôï2yfØ’ÌÌ7ݼ÷z+‚7ù:—€ìÎÑÖTà²Mg’Í𮢟ÏzñâêêÑœ¸ÖÆÉ/ß7Í{ØEôxæ ¡QvÙ*Ã,¨LMhXš\À:aèt$ KØäûûðŒ¿KrrºusÑžà‘‘ózþ×—¾Um^r#>f¬ßÕ2¡¿î¥áÃÍ`ÑôDZ„×.­K_öóó(¯|yeå—­M¯þÆ9¹ õVÜpöHŸT$×™šºd–kt]uãÚ²þNß^¯râ„„¬¾:qòäÐã!–._^XT4#:7*};7öœNVvtÁ·÷ 9«ú­ëñä´±gïÛýÑÉÉ]‡õŒN?ujtÑVÑšSV•=PÝcؤrÁk²Ütåµ ³®® Ô<é´;1²Ú…«›é }X»~ϰá.œÖæÅ6¶ô.W.fnµÝ~mƒÐ8;¹v!èCÖõKÜ OÄM 8·fÐ׋ÞïI晣²àVúU݇ý ghZG:V¿äZÀêQߺìØY™`´ì~@!°û[kóSÈMÖp½ui·áCtÀ®?_Æ\ƈeýæßåî<Þ½ø¿­~¿š?õ]'¡­qÙ}ƒk‰õlóW ×:q…™ÕÓËŠ©´ºù¦l^ÇuÎ Võ°°^‡ˆpñgËnMŸ2»Ÿ 0©{?~ÀÎðî#Ó®>Í¢1Œ¹´¼pùÀÐËÓó5ÜOËU§üeÞjùÈr=õ<Ñ7'{m`äÊáo6l¾N!ùCëùÞµ±gõYÌ¢3OY fnÞRvb÷RmŽzù¾Q·ÎøMAÎ…÷î;hE‡ÈOHI’Wqè³hËðð?3›]“’t^$éN²¢ßÎÃY7oe~„ñxÝì}xà‰&[ðeM~ÈŠ‰U—æó8Wäüîí½ÌÍg{Àzu£/ÜzDøYúùyîþß„©Ó¯}¥p,c€Çµ‚6Þ6Ó[Ù¡KãškÃçqgŸìã8ïŒÜر7>*FEy䦧³ÎoØ=mSï3,Ç>Û8Éo=Ъ Ï¡¥>cW¯YƒÌ¼­ö.Þ½{Òâ-CUD Åó“Z'žº<ÛñÔʘȠE™üñ _§ª)·–¶üþÑEnþüùùrünNj®­g?øóiÅŠÃÖ9®ñMi­ã—Ûôs›õp–LjGW?Ýp¿¨7¢ÿLÝž€w&\ZT_ð·¯Ó‘îœ[k§®î·Ò; åºçÁWÒ3'ܬ-ÉQJ;'§ú¢ôv`â¤áû²]úåz­ -/õ,èÙOË4îŸ8N€¹ ŸÊW™w•™jñ8ÂMëô3Ư?†œÊó7ú9 výæžOÚòÜ3î0 êé]ÎõԸ̚>Ûo½r÷EÉ«ÀçP“CŽÓôó» ÊÒ Ï‘¯Ò3(NÉézófX¶‹“`šâ°óÜ¿m3zNKòòݶ}ôëh·èa¦%¬æë7›Ù‡OÚïã÷ „º;î¾Y—²Ð|ù“+Õ{ g×,±uË|×4¦;}Šâú;r+,N$|9™1^nCê‹1ƒïß½­ú)ºæÄ™3ƒß ޽Xåá¾íJeåàØº·Wžþz1ù¦|ü †•åuMÕ%§c¾t±9,ÈÞÝ‹µñŽÿ¯†’ †×T»¢²Áæß°ã¾d+ED„ú¾>Ù¦° Ô„Õ£}iš³Î˜Ï´Ií«2³¨{,,ºÃ¤-nhxüSÑæñ›Ok€Œ[;|Ažº¡|팆Sƒ¯”ûú^I¬ßmOÚ–nÓ½ž»ôYœjUZžóºp`ÊÍýæ)¯÷}PØúªHs$¤áÏ_‚é—ŒïÜV½âÁþì쌢>×< 30oÿæfø#Çè‹/_îqæÌû¼¬6u~ýžÿõZ_'­ÄŸòŽc®”Ìxð¾åØÅqãëwkö7µX2ðòŸ}Ý¢Ó±|@ÜéR³ýïÿ¬/Hmü¤àwjö÷éÀœ@{ÓÒÖ^æþ\ŸÑsØÂõö*…+‡û¾ù’øréÈõå³O?³rÏ¡­^óìÄé[÷·<º£s /¨wWkXW«÷l†‰8´iÈ’Á=[O¨n¹û5åoì°?M¾VïËFVm¸óÔt3Ó«ãýõ®eÀÑ  U6$tx徟#ìVÞp€»·‡íåY³Áxã†9+Ÿ+0›Q”¿XQn½Ýá ÙƒÊO ç¾µák83äú=48¤Û…¼ô›Çæ\Ž«=||”Éž¢È苼¯óú5«Ž|ÿ€Wx;uéä½ýx'î2ìí"‡SÕçªÄ.Õɉ½ÃÃW.ütQ[ûèé¤ßSû±ˆúÛ`5xR­¶¼£ãyr_:pútŸ¿­õFcáŠm¿n·O›n³î|ØÜÛÂÞKŽúL/;¢2™rºõªÓ”ÿøáÑþ=§aÚS32¸I-ß2‘·û‰ô±y»Ã‹w·´ØÉwosjmÃaPXïíÎïàðQ÷ÎêÕî0é®ÙÆ]VêVŸ?ßmð˜kŸ[^øâòŸð-ÔkN*wî "OÀ=ùÂ;›2•Œ“Ç÷0eo3ŒøV0MeÖ€%ÙÙ=Jj>Ló«àoâ˜)üä9Õ{ŽÑzþèÑJvâ]¯ñ¹¾·ÖÝwØ2©úVQÍ•¦jß‹zä)3=­cV·—y/ŠA§_½»E]á£ðÕüõ—öMÉlh)]ËT_¼ÄLÉÑѱîóp}Ì—‹ ûŽŒËŸP0öêõëòïÞÝ-kÜÖ­Ýæq8} }‘«5—K;b¿½ëŠCMº^‡RΞپ°K·–.r:Û‡Éõ•û´GÓGÛïÅ‹ƒÅ7ÿM3œÕm]ùŸ‚ÝË7¤¥õ2Þ›y¦2ð®zæ.Â?EÎßOWnÀ€w/# 6 ˜N}Ð{ÇŽ‰A[³R^,[ÖóÆ{ Ǭóv†ù]¸œ›«yÛLªÝÒ}r=<χ¥ZÐÜçνZUå}°é`øÎ)•ÓÕ¶\½qcÌÏŸ[CÔnÎÔÝ1fX?óô-uíž§ ·}Ÿn{ñë%vJ²üÁp­mÓB_ÇñS~OJÛüÔŽù¡Jî|øþ LOqPj³«îúÓŠA{ëZ·n]ûcÿÄ—‘Ë®={Të›ôméÌž›+œ½½EÕ·"ž_øpÏ ˜©—oß.‰­ }ròê,“ÖîrSã¿O|ýæ¾KHfó÷ùZÞ ¹«öìMøÕ²9–6Hþ-”úÒÂ[|¸vï­ ÊÖo«Zô=^:û)M“yjãÑ#[okzÝÞêæ\œß3ÜÈ·¤¤¤¦¶¶vLþ@å£ÍS¼Ëo¾™rý}x`ƒÑ¦Ã_#¹ÛëÆM;p¦rò[SKKË;¾ûYYQñ6óró‰çÅÅsÔjLþ¶œ«¨·‘{{kBZ¯=î|ùò¥æÓ“ŒM9YYÇ.Ǿ¼Ò%wùòåÏ_¼ð¹[ïSÖ¸cçÎP0ì*|u{÷®]oÇ„­‡¬·óóókäÞŽ`í3{ö£Og¹^uoÞ(Wçð÷~ŒIOO¯yò·úE¾µõœw¿þê­¼Dû¥ÐÆfÁz½Án¦7ò>}žãzKÿ¶eÍ´ÁA×h!^åkŸn˜¤v.ÈyØW9Ã+óv\x­U8iú¶»?³z:wí}µ·ÓgY"WѸÀä×aûØæ­ëgV¿ÈŒÌt+/q©~üè‰ô‚ã'&kò»Wî›®2kÏ¸ÆÆ¯o5]S>­÷7à¿].HØö[)â[Åm¶N.?jóyïü?÷+¼¶±ýÇýÒí¯`<}Êó—ÎAÒ€ñýåäE,]ºTMSÓmîÜíO2}38àÊÛÊô> í¶s ß5>>w„¦OØ}uuõ’=ìDggçCKûŽô¨×ôȲɋùâåÎó«O­\Ù‡Ýô<êÄñã&Ž7Nr=ztr‘Ýã›kÆF×ç7]ÌÈümW0Ðø×ôØñ¥å…c}Ï4{ZG2æžµ˜<ã”; -p²öûwÁ¦íÛƒïÆ}ݧ}sÛ‘MS=j` ÓkηxÍh»k¦W´UCwæÑÅ(¿ÕÛµ8‹~×åÕ¸rÄ£ä²ÕZ‡hÏ—-•ïixzyüS_à[”¦Y¾C?tóÆ4ۊӜŰ#·M‹:²Z[çæ‡ƒëŒûŒ Ý7dÈK7GdˆÎ{l’k艶Ñgîì{¿7Å'&ÏÛÅåýò!ôJÏk~iõb¬\rþXFFÙâÆq¦E©K„Ëf—êúTœÊØQ¹ôý­oOŽ\öé•ÇhI}cíïùËcÄ‘ÏĬnïU¾ ­¿õ­¶ähQàø‰vúúúw>ä»Ü¬׿Èon(™¥ø`œÃî1qzyêòfýxwß)::ûDzú–´´÷?sßÜZ׋ººú|âÒ%£I“&?{öq³:^ì[5`ÿ†ÛÉ…¯¿•ê\–Q¹¥íÙÖ’—ÏØäN.˜µ×8ào[ëarrrÞÖ7‡W†™ñ°_H}BòÏs{{xŸß¿ÿê½íº·ê««'ª¨ì¸³iòNeëµî?þ6úþ-6rdŽúÚ€ ³×­}9zÝ{aâŸK&#+Ê|Ûnz5¬éëÆÇùG¦Uo5f Q™£>¢öK¨ýû¦J#c O“Ÿ“Ÿþ /º<èóŸ«+·ö´¼Ë‚É(9û`áÇâÁïløi¿˜À¹yW»úåTÞ´ßÜaþü3µeéiú¾çæ Ö Z¦ò ÌSŽEµºF¥ñ6nÚä œ­ö <´7ÌÒ\ç˜ÆÞºks?Ÿ-º÷·­þïÍ‚–ÇÀ” ß¾}ëþ£þ›Qïîm¹Q¼'®âOîôÆòmfï²îξy¯ó±,›É±IU¸¶áÅå›KŽVÇdÙðßÛL3 ®5[«¹áÅ‹ {ú½~>Qï½Jx±ÎÏé©7ügÛÚ®øýz•æÉZ€ß7‘SOÖFŽ»U©ìú‘cçw8e™ÕÉÒÂm·?ï™´óé³s€Ðj­ÍN>>{ÆŒsòwcc#pV';»•ÍŸŽþþñÞóG¸ÁNƒ°§ûö›/W£Ómù—9¤ p@ÿñGƒ3ç~hí\^Xò$ÃS?¤TµñC±¹ùòeË’?œÏß“ÜÜ”ÖôüÄ&׈ˆS?}ò¼ñFÃøáϯç3¯ÿi{t¯ÜàkX¹Bò/ÓÌ‚¶‹Ì‚AãçgN­Ö8ÂÄeïÚþ>3%nhè—Š9á«[Ê2“_]Ü PÁÆùd»n`ÒMø¬Þ£úæãßç+ÏòV=.)Éö»5`í@Óï'ùZ_ÞÍeûcvÎ=¸>¨m溲¨¡ý–eþ|çoüêѱí9 qCÕ[óŸ­oøV+lø0§¬¬Œnbâ;mÚ´WÒïsOˆ©^©ïúqð£sæá­³J¢²“Û~ìݹcǘsQïgnÚ³'båÊ•'ÿý:ð(‹µ*çøÕÆè_T‰Ã”í‹uõ»÷ûóÓKñ?î­:ù^zæåæ†Z?Ñݬwµ–«FlË¿Tü¹*¯ÜÙÅe»'?¿Œ¿Õacü¯WËï ¹_É/Ohª/¬Z½â’úâ®e¾sk¶z‚j’hoi¹4÷û]õûºüîÿ(±ð¼ûºê‚ê/¡7nÜx~aþÍQ~/’~8œ‹ùRq,sùѬ,½Ó3wÀ mߢî¶ÞC_¼¾±êþ’ÞCíÃÃ3že‡¦ÝyðÀ`¡q̺‚`ß?võ7$ðÖ„?Òyáæcê¸?^-WÀU¬;e@aBþʾ¿«½µý'ÃdXøÇßÍ7Çò³~~K?uñ®Ñï·›|üV4üÔWÉj=ŸzWý·µú>Ðåï¿­h½À¾åòP0>[3n•ÆÆJÏð :ª; JüŸ_ÿ±íU}Ò¡Œ[¦gŠnD)µVm»÷ýõÛ;›*²‚U´µ‹'Nž¼³ µ²@ÿÖÚñçÞ½÷níÞ€‘êZ*—Î<61Ljæÿóaß™=§ížy.±)"4áýƒÝ%Gžd¾Ò>~öˆºšš}@À»ß[f9þÉ(?{?¿ƒÕš[Þ-y¿pfÄÀ FA«µ?~ü¾‰¿²ÆèaÇÚ6Þ›¼7‰ë–––—“y^>k·Çw·ós¡äÜóaÛç³v9pàÈ+0­÷ä4»˜ÚÄ=Øu—Qüãï…¬û0ƒ'k5<Ï:ZR«¿gúd¯?·yòä„oAò“ÀˆÜšeOžÜõF_%åÒõo—Mô~äô÷h.ÙÛv¨P^þ @™¼ÊÇi‡ž†–ÏÎ:>ù¡¨øŒqÑM?vWs柑cï©ÆÝß}¹0öÞ4Õ¦¥ˆ2´Î\W5ôN+‚¶‰O_ì‰JÛÊ=\ÐmúÉ /Î/Hnm¸1Ò×½d§Aøãï5Eµ¥¥Î9š[NœP‰¤mÔô±ƒš›êëÏ_jýÓÔ«ÅžÑ?p´}kÓ—ÊÀüS'O Cù¾áƒƒ AŹpÁ¨qÁVMßSú¡OT'M²|üûÏó[bAåÞoõ ÅÖ ¶×N`Ÿ(÷ItˆŽŽÞ¡Ã[ SòîüZhï“.ÀyÉ-…”ç§ŒkÃ}W4µî߈éheµ¬í×-“‹ù9¡åÌv`ÄfW>sõ¥ÿ2ˆx§É¹úíj ·íÆr…ê«»/ø¦nù¹öI}ƒ»ñ” Ï×n{`ݵq~ÊŸÙž×íRÖMÚÿT%,Ph"zð#—5éÈÁ'ãû3§ŽÖ‹þè\SSsüÈ«”_… z‰?ÃDMU±OZ:4G;=Ÿ(*9:+­¨Æ¤¶Í{÷Ö¤ÜX9ü‹OŒž¼sŠ-(y±™Æ­ N÷·ëN>ös@Öîµ &NŸÔ¶ZgÜ|ìû÷ï›7o>LôSæ¡C±UÑn Lïì5!nzº[æP³„ooÞm,ªØ1zÆþv}(HäÅ Øòmy=²¹F3¥V¿d!f:Õë“ÃÜÒŠÖ *\ÖŸ%x›j7c†> "³¨¡<íõ~oóâ#{F0Ü÷ã iª«ÚÁN<dÖ^&ݸ­Ïå5•«Þ,Þ¼mÛ1—t×ÚÒãN—âæçm-žóÇŒ‘›•|ôÖ÷Ü“SÞ+·5ÇyþÜ¿µ1µ¦m€bÃç˜ÄåŒ[•óŸÿh]ëáæüýÿdFÓ¾òòòÀÔw¾}ëU{8m‡õ„øëI[›ž´ÈJ?wŠŠtA¸¹íe½yÄ´ªGæA÷æ}ŽÉÍ£3™ù }~Mó-YhQ¡»xÑñ¿w·¨ßßgºxuUÄfšú±Ÿ?svƒæ–ðós0¬@ËVvÒ¯ÓÞ6ÖŸ¯ŒXµ"!îÇÎê–›ýFë\÷[\Oñpõ±ÌÌ))M±)ŽŽŽö\îíá;¦Í½¤<Îè¨òü”ÔÒÀž¿+{jTf?~çRÃã*@©¼’¾Ý±* Õg/¿ä…_ZNítÚ·¹êûƒœ–ƒNª»¸×@ƒ˜¼ª·55Û—-[æZ³hû€‰Ž{G ;¶°‰—˜ö·ùSæÎšù¥ý&=…eï^±'ÓüŒfwÝñ6ÙºªÀ~sS|@uíÜG_ÕËòQ}Pk&Ú3êø‡½ãÓ5ZUŸž½:A³’æÑœx{‚bÕ3;;»{#}“8n®®c–>Ûhé¡£:»õàaó›vìkçš–Û8ô´Ì³i<~àa!g~ŠF×·>uš8i1·Æ ‚@ú¯3Uߌ6m(×½sçŽÊ¤I7ì, v€z¸ã²èÏàjôáÛCŸœÔJÆzÒ+÷¬î‰!1 LÜþ·9ó¯NšwÌvvìšæú½ÒM!´íù»û;ï_YØ-Ã"Ö{Ë<¦††>HB:Uy±S@«|—‘óBàùq»ÑË 9°òño7Xß!!#^£(þòƒÛ·#=Ë‘˜a>í¿Å0þû¡ÚâƒËÿz³NôdÊrb>?UÀ?h½îÄ©S3ÿþ}÷ÎÞ±î»U\?*¨7ÊO©¼@sœÂ£¹ÜÙ7ìØ ~ºgmÙáðÙ³:áÕ—½AïL¨Ë}ïìî()زeK0ˆªjjj}.œ„_ž³¶´´ô¸É™l±Î欰Ö1èAÅ¥øs ÂfxÚ‹Ï€ÚíqÖÅÌ=Ft[À ŽŽÎD[§#öÅÇætööÎÜ+rE¢¨çûO™§?•‡ÂD7Ã(?Ÿ{Øsx¨ƒÃšÊ‹*3wÛ¸qȧ¹Á ´:fšàÐCžETʺ‹þ³MM‚Ȥq´äøçÏaÏ¾Ä 6l‰áÉ™CµåæærV3ãÎ8®‹\ÕÔÚe/k—¬[™)­¡ùÆctüS—õ}€W´µ&ýñDzôF`ÜEµB5]]'è—4—Ù³÷­Ò¼ì>tòÌÒ3~·XJ ®æÌ;wŒqÒŸøšá­Ý 6¾Í[§ï £…9›Ðõ”éä„=CÓõõ],7OA²ê¦çù{sælx‘üçKÌäªèrº’’)°û´‰ùO¼NŸrRú=PóO&¿Í\gëèêºõaônV´é·7·¢ŸñÒ²wÔç>ñ/;}¦w^LYUlu2š€>Æ×w¼8¥øyõAM.Rä§?ð¦GµÅŸÉbºqóŽ'>~ ½:1ÈR« *ÿ€†?ð© …ˆ±W¿•ýI2Mç«E'çš™-zí°]Ç ¢¬>åobfŽZÂ)]6;_´e£^ðã‰ùM/=r"vŸ*hKh¥–ÿ;¨®~"Šš,§¸z&Ú1…¿‘ @èÒ»Y.2œÈ£Y>÷ÆJ-ËÕ6 vfÅÖûˆškîEñÈÌÝjwb~ÔüúöæÉ'~A«kÕÅh'‘(Oü»Ñ¶g÷hL´í;‚ñèE~b6ˆ+÷÷°=¡b¾Ó=òèÂþS><Ïj~ŸÒöÞµhEvÛLyÔ£×OKf™d¨Ÿº`Vî›’º¼f”¶Ù,vãæï?~lÙ½;#43ß5§:9/àþŽšŸöiï*—,hük qZÐRTPºÅÍçøÑ= vëßÝ9xËÖ­G€ÄØlô‰{ÕÃa§@£¸Ó@ø)#Ç£´ ú æ9Ï«n®Ÿ~kB"ãC»¼,)ý)¨#zœkÝsΞyR}°n»)ê₾~«Ïø4§™ß°Ñ'¡vRŽN}ÁßËïîÍD¾MQã—ÊòO:‹¶[}Nü°yÃ#óÙ Õn ›<š†>ì5ýá6msÝ€{§ÞßQöñÜ&‡ïy^¾™ùì°æÇ34Ë`:A`+åï*~Q-RYlüç󹫕¹"`z»Ïî­ ön‚¾ó¿¾¼:sîCèãë£JçÞÚR²••.z“Qp@!öÔƒ úÃ3Ò>š´½11»¿iYØïéÖc´æ-f;èqt×J·4/­Mùà`3Ñ®MoŽUº­|˜üiEòó\³ª"téfv¾%nþ÷·³œçÆ_(Lí]üo‹rVŸ>}Jóbù€d¼ÀÀ¢ˆœô}ûŸs”Ìj@s1\Ò÷»Éß&ctVOHø T•ôãþ«“߆©Tœâu…µ9påO}Êë s32/{Œ©›=hú—f`¨}£&¦Zí¯3i˜å%ïÛº¼—M7Müúà¦D\ñùKüá‡éã”›Ü ë¤ÑÓ·×/¯.Nx¿;öÚøžrmnÜU¹uè—šô”ýP³ƒÊAºÍŒ}kLt¯º„†Û'–•»-›¶ñvô}ýò%aÏ ]U~ë¦ý5]~Í Š¿¾òùó²‡jŠä£&ʱú<ÄõÈÉ¥*˜ ˜ ‡ˆ(¿`ª€®ëÿßlÿÊVum<^µ¾/ëý€ïͨ}hò×n£³sÖ³Œçk¦ (îÖP_úTN.h^ëG]Ú¾)T—}{Xšêö)oË¡}úNq/Y³Æ¡ùcºj—s#‘éé½.üx°ácEöª1cþnÙ´ºî‚ŸÅór×§ašÞëöÑ7oªð˜ùYi§.WÛî"÷r<îñ¾n^Ñ.ˇˆ̲ùpâΦ[ÇBÝf^í"÷êÆ”Á¸#a;ë.zöîíÿÀ$ñ¼í´i §©ÉÉy(cX®ÿöÆúÓç¹õ9+n,þúªk ¾úé¡ûnö-öJŽß1níIJҤ/?“ÍÌܪë]8+ûÈ¿È2ù00娧’O«“¢7:»ž˜ *ÐÅjË/F¿iîª8æÙjm•çÎpkWÿÏsž¿¨>ÿŶÿèãŽ[ðró–/%ì¦KcœŸåTïɹl*Mnÿô1#¡Ø‡éon­su*Y÷—ŸýìPsƤÁKŽiÜSŒ®ß3è´WS]o@ØÙºu4/æ‚zAë½Ó|÷¨íüÒ",?å ljË«þ}ä×M0)þ’3Ð-'â…¦-°“²ñ±ýÜ ¹öúm9áDr¶wêÕÚ…Êÿ>¢r0¯nÌèw© ^®Q0¹X¾Vc·aÓâ›ëÖ]O•ꑹÿì,}\!Yëì³CÚ~Ë2}ë#—wïþåÈγ›·=­z¿aŠp‚œ\ÿpä Ð2ƒ™›أ˜µˆ\ݸihtcÙ€ÑÊ;®«rS™Ð£93Mš˜uÙ…¡´?–­ò“‘\ñbœ¿âðÉ“ö½{÷>û,¬%þ÷Ÿû|Ÿ-Úï®tËYÂÞjÓ:VkÞô yÚIVÎîôÈOù¶I °Z®D“Üó¢IÓ…,á‡õvþôd©áæTÿÕÂÏO›>–¼¿¹|Ȇ˜ºçǦ/3ì÷+²Ìe´­mé«Â[U/fÙ5¿¹ú޼“3Ð t^ëm7©,5ìn¡ägÁ|‚ÁN‡ØêÝS^< ðVÚ¼þ‘Ë&ïãLï0ÎÚW–¾6À'MWß“³r7»òз7¹–ýR{˜—ÑrÃ÷ÐW6…mvûöÖ~/*¹6vØ‚¦¾,[ÒÛª´øÕ×Q~ÓåÌ"‚š^IG€ °ÔöW•{ðÚø \ëvhà oažO¦zyz¦â_þ—6¸wãt!ðŸÙ iWkn™¸{Z”ó^QŒÞÉ3Oà ¦]ÿ‚}r¾\ñZuÔ¹Aç@e|Ä+øÛ–x·¡[·žýf׿È~Ènúð¡X!å׈‘#Õ'Ož<ŒÓ³tC£üÒó×—¿Ü5u>ím¥†û,ãøs{’¾¿‹\®dËJh86s×ÔÁuZ ŽÝÚ‚ &unuòŸðG<Qà N\¸àN§Ó@ðÙ²sg:HT³66äU·Î¬¿ôcæ1³ÆtåOƒë~=2HóMŽ¿`>»û’yÏ.F‡^0—ãvuë ãÝ紋躎ýsèªú³óÿ¶ý(y’´óþ´÷*¶“£ãÆwv§/[Ö3´­";tËž=§š˜á‘}7¡àòeŸøøxXï9É­z)mIúzz·_EÚl½SøòJ—Þ¤`¨#¡åÛ-$%eeéå½ÖWMCcËDÑûS>>;w4¡áÃà2rSðô³° œq1gõ@¹AÏlˆn1âÄ¥K^<Ï£ 9åÊ•[æ^!jòqinMM hògô3Î~žù¦WP~AP1íKEö (WqY”êNÃó¨‡Èô±Qøë+‡çïÿKCÝv씈RF?¿z*×jcÃÕ^ Ö¯nNˆ{£½ ŠX>iÆÖ ´e¼î&g1!DV!²ïVXµBÖýSÞy'kW®ì“óp†ÎÞ¤ï+ô½}|"¤ßkཛ£JJKßþœ¶¼°8$Wä|cÁÙûcÆŽ½–W´º¤V³›£üTì·Í» ×±Ìå“SÎô\y´æÒÏ–“A¡WL±^;Nûðáï(¿Þ¼uëeëµK û)~œÏC°Ì² Ï ”´×ÇÊ(‡ /›û6^Î7Yš‘žšý|ëÞÐÏ2âiœvô02²Õ¸º¸äŠ˜OÏÞ¸qã"UvÒoAÆÜsV­˜,|~aþßuÛuïŽRö[mÜüáàõd%¥«¡a©>—›² Ó¿’«o¿×Ø›™6ÃÅÅåÄñãs’““Óuà5±©®ìèÞäÓ¢Þ},=Þ%-±ZÔüâRaMÜ~ç” »õÚ¡áy~›ÄLlgg×ád êŽ~ÀË+ oFäìÜ¢îv>×–lüâÊëˆKÑÿa²¡Þ8ý32I ¢¢¢JÔ¼úää܇vìcûøUáò-6ì¯)JûäÛVãÛÐòãaèß¶V5C˜W5ÿîfúýÍ "«BHÝó܈Ot£tã¤YóßXÁ§øTžéTàʨ¢»w³N$ ~uméx÷D¹pSŒ÷íC›[[KjcbÎŽÉ ÿäo±a ý"×r°'øÏÎÞ¾tñ@ã?æÎ)ÚªQ²“ùxAÛ§W;»•m3Ûìø—¾-ÓOOçö;:9ÕDNmxoò÷Ù—3¶2ŠÙMÏþmyø·´H³€q´äø½{öÃGŒè¹ú t³3È"âwk­·ûÒ.Yž9‘½$òëQº›f†wÞ“÷-å>‰C¸_>Ìû í4èŠ ¾{ûö£§gügým˜5fšÀ?]Ò\²W/¡!(§ÉjÍ^¾qôÇͨj>-b†6þ>y’aëH’‹¦åýFѺ ÙÖ1é•&·dh"âÏîTè\7(œ¯ìn½nBhµG.^d!5¾äˆÃ¦²²yJË…ª•Ù¡i °; cO%ÿýS˜‘šn,%=êë« Læ­nTÔ!„ák©JÅs&Ľì’á“ïD­Ù~›‚s~#×—‰¹^Ìû Ž5{œ=Vååà»øújÚV\ŒN‡Õ:<ôáÑþ毅«¶¾Éõš5`¹ùÆÍ7@¹«ƒ‡ÙÍšåœØ5ãlp™E¿1S"výüRy¨“èûɿݛÏ/h=?s7ëðêÕý¢k["ùós1L•‹Ï) v3o޲}¼z´.Þ>Þõ\ÀýljõùGwÆÚmt±Ú˜ü§²:¤­åwsó§L—¹sÃØ‘Á`GõÙ0­9Ö@<²+æ?=&TºJóò1 D­M)sîÞ½Ûò·)1úI¿'Ü5tßcžüçZäóT ýú¢šÇÅ­,޶´$Õ¼}»Ä!gªˆ•ˆ¸  ¬heÂsªÞEýÖXÞ²&NnP‚Aa\2r ZˆT»'±Ž”Õ·õVæ?š”8Œ«›M»‹žjå(}î’åMP"9¹¯uèþˆXy9î BÑMÕé-ÜóŒì? ýÏGæÅ"—w± z*7ˆ3dèÐè‡)K ûÉi¯ü_Ú50·ÇÙ¬†vCXðCøŠV|èG@Ùyaª&,Oe#o5U#O¯X/7oucº§±·ÚÄ$eU”¢á­FŸH×dpØš^Nðk ¥¼¢ÔáÉR¢Ô'“)¤©zŪӽ¢Ô¼4MŒ¡Z#/M/mcº ú>¾{zy3X‰"¯(¨’Ü °jæåå¥É ˆ½“¢=µ4¦q4L5¬¼õDtÍ@w6[“æéƒrEx ¼ÕhIBA4/)€ÅKBW­'i˜xù«CM^L/5º ª“géí©]G_è&¨;¶&|ðIb%1è(/tÓ“®Ž¾Ä×X74XH÷TôÒôF£fz«£!;Â'~$OÀAE˜jä °t“öùæ@¾ð¨`]Q*Ñ %ò‚ÃÂÈâ&Š‚•zÅàš±55T=9 ÞIhàÞtÍ`èL–Fx”dpþÇj«rµÕi4:SÈw‰„þ™ «¢•vgs£™ÑQ¬ >3’#€o¨>bªô™ÁþJl6‘‚s®.3p ¯ ,t‰á[_ÔœÊÀ¥4$]Ä複Ipj 1B©ºtI³8¿T L) Fë)É)©¯»•«éÒ‚…ó' ÐOuFoObTïÅφ2ãDB1CøÁª4Í„s";…íöÍ dŒ$‘dבrc ¯ƒ×C‡.Bõó"üÿ918&%ut„W$’°¸ Œ(¾@Èòôf¢_FT$žôŠŸHÉ ×R² NDŸ¦¡Ä;õÒ^vŸÆ@ý&sw Q}jÊ€0'%%‚ §ÇF*ù@¢6ƒ;•…^C)Á@ŸDø ÊD $š ´ÝP¦Vm\«!Ôª#-Qèá¤ññÄ`F–øê#„×qLD¡)m”‚QZCƒ«' €ùƒZ¸ºðW]ó#Uî4©–¹zÞt%L»è‰(7Wd˜ ø\}`®ÞX ˜†Ÿ0;C Áb#ÍíOΧ„r6=)IäŒv¤Š”Q  rƸS€öC=Rµè&\-X^’IeiƒÈAt˜-^iè^AŠb†àFTVmú‚\}‘LT#øæüˆ¬vTUêš+¨ =rmžÝ£´8Égòë"áh"Fp”#A¤Ðà ‚åÆ™Y›ÄówìHÀpý˜Ž‰3««‹I<Á| qªSú‡—‘/”  Dª&¼JZJâ¯x’q'ˆ•R Ïä¢xBçàp?Z¨JÕÃ@ÌE\ׄ!FR­l›Æb"#j ä’ç, RåÄ€,gåM18ÀT©y4vøJ§ÞUi¸*аøâXM†˜ÐKST¹T‹LÌNq¬E©Òø +†óÂù¨µ #ÆUÝò ûñÃ#ÃxB횢0°Ë@2ûà('ÔýNUi³Ì»…4>ÇŸçOUÃð(n'ùà sª9"«¼QB ÔA¸Ѥä‹BcE$"Ù’l6Ùfè„¥C‹DU¡ Ó.’¢Ã)aD~!°cD"ȉ Œ)d6xwòðþk«ŠÖ !EÛ:—±¬˜ˆ.¢$,‘Yh¨ !À:+ù–”ô¿¨„ƒrâÜbø±ÿîTTdt<1E¦ÁúÛÂÒ b8a4L7µP]3a´‚`¿N+S‚Ïœ™ª #Dñ¬`Ž1õ¢«¨ÀàÓÂ=‘šûoA“PܱðÁóäÚS:8 ÕAÔ):)U¡Ó\P ¨Ñ¡KqH×+à85E(£¸;D°Â)Í· ±Ë4©/4ºÌ7éBžÍ Aß©—Y´ömJA™L:¦†˜•iá%±Š¤¥7{ޤcxºƒ£,Ã#…ñ¦I›à‰D¸²öÍQR P7pÐFd–M$àÇb«Ÿ%úH¬.^|;§Y3;h1˜)IL H¥—Æ0„zVØT#V˹LT!æ>è‰Û€tªØj0“)äEaC„€ÆA«ƒ6è©ø}6ƒæ-ýnÇ©^¼ªh`b„F6†$x:]ó<%ª4ÛÀ`E«*66p„ÁÜ0n„ðÔI*#ð5¢ƒÀœù± DïÄFDA¢E‘-*š+=:êú†AOOÖAAKâ €?Š$61¤é0¨=$GEƒìåƉŠ"·´ðÖ°–”ù¥c9U+¥í¡,\—Ü ˆæJÚfK:©CuÌE» MÐ'UÛ¥!!­BQ©$Ê8,Ù×ÁUcî)Õ¸´ñ%Šq  ¥x7µ‰"ÝÚ‹ ™Ö^Å™˜Ü*BXURÄT–¢#/Ð2.R‘PFhØŽ :‰"Îh/ƒžOó$PQ‘Ø%ñ¦y°È¡^¸" ‡„QU®;AG]™dW‰­âÙS’ìMì$ߘ$$±!ù("LrTÒ!Cª>f'€#ÆUá̤ÎAóŠ3ÕBJÃÑxÒtÛèÂù1¼ÿƒQ²•ÒEÿ´šÉ´ñ?˜‘‹÷¿°°I5+I`;VU²¡NØ[) %ÒÿÃz¦J ãQ¦tQ€isd,C›‚S‘TÛ4$OäÑ!î»*ä1lŽŽ'Ï›¶;bÜ8C›GÂ'ò(Ò$57 #qð‰’…b /7ìOž'7Ö›€-qã1"®Äò*å<‹¬ln¬‰*´ Å’’ÜQ"‹@@3,þ˜ã¿q n<ƒÃà&0¸¦ÈÍIR9k׎ú׆ÁAôÖõÖáÕ]k#®üÅݵ…ž\kàú6l.©#Øèc#±BFK”.ÑÍldÒ¸ËŒŽžÍCf 䬃Ê@Y3R´Å «TÏ¡ÇhËÀŠ8 ò0±¨"Â, )8$“Öu®)›“”d4±Ê6TNŽ‹ÓÌ€Xšq '%ß›yrM½)±·G©z7–%äGΊ°"U¿8²B„fÅ›[\3ñ0‘åœ4¯CæKFÞ¢‚‚„ˆü[HLü@ÊçC¾R*n¹;E-˜þÁQÈC•ÒŸÐÚãù‘d¡½ißLì{'™X'‰…{´3I©¶¡ëqJâöc` yí:*’Ù)&Ï¿»!ÿ>´¸dWÇÆˆk Ñʈek´“’1XS+ iƒõ13£DZ<ñcmÄæ& ¡ihRï¦ðnª¡݆ʈýQø ¡ÊCÁ§”†/;@Y) Ǻýø´°›b;€³2âÚÀ_ªËÖdw­$ž/˜ˆ["̨ ²¿JO%^nÙy ÚåBû8qlûN³v¶á¬Ä51ÂøÒÎP9Ô€¡9¤°€¡L ¨†ÔoŽ·þ1 ³Úc6¹%Y9 þª`º@â¸^(©’™ˆᑵµ_/Ԫ̨¤0®S€a‡‚ŽæC$K;æØ±Ñ†;‚'C®x¯Ô‚ÀÈTƒFˆAÈÀ?7ÚˆàÿÇ×Ù¯â<6-ÚErl…GñÃ-xØŒ<+‚/ ˆg¿AL#ÑŸ2 ™„à0È‚ŸAÖ  %‰‹å fÝLØ´Å ù£Šð¼á4Ô"J‹%Ó„A<é],KìÉk…‰¿?vF³¤3QT¹t&Õ>b\² à ‹åÄGÉB<®€¢ßfRkŠ+ììƒl‘Á2{KV Ü;‰JʤVRU÷¹„dKL" 4ƒFN9Í›˜LOd™#æ’Äsê #§ AóI µÀ–I—kDFì1!ÓS(ÅÐóNO®­·´»5âå6;¾à*ìgdª±CÓ Ü ¦^TéL´d0R&9,~D£AOÄ(VdíÉ¡NCxEóÆ­b*gµƎ@ O®B_1ãÂ}Æ…ˆdº¤Uƒ|”‚>X²)»‡%9‰ÅϘÖ¿ÍÑG˜`ÐÌÑÄ b‰ø$"Žâ¦E€M „”€K›ó™¥MÑ]CœD Nú JQð+µ<6 þ4$)Rpùɇ’€Þ¾1¨D\‡bNOê÷f0‰ì ÔNR½BB—¾‘ÛƒÆàš!%¥Ž+ Ä&f‡Ì‚gUß9ø³:æà’îÿÈŸðŽcò¡UŒ:¨5#dŒÁ?4d' šEs¢XØØIØpd’a£‚#¨4ƒϟ‡ B–q‘œ>‘/‚{† CDJp¬.Ï q¹™<ž”='ºCÖ$€¥wp"q†(±k`X0Âg ÊÁŽèЮL°ÍÄóÏó'Õt;&Ù¤9™Œr´>YôJŠïJJÚYPiJÆì}1ˆ¢]G(”ÙÉ‹Q2ƒ'ŒMîhÁ& cmÃïHÀ moÜk~ j„Ò2RSznÉ1al?\qÍ’šè" ¡…¤†bHPD/²´Aa >ÊlÇÄ®¸„4tV˜œ{(O=á>KÓ2ÿ ¹’îQgrÄç]°%E¦HM’Dááºñì°!k‡õo÷..+ ;qý(¢¾YWéÞ¶ëN{E#=”óÍùá0É<'DE}â_¬ÑÄ-‚ÔÄû ƒØ4-š$)\‚ ćÙ¼:‘q´ójJ,VGdbÞx¶Ðvg½„’øô=))Qªa–ÈñRï m-ÈÝ ‰­®v&e,xÇ#Á;‘ 2,m’´ÀIPXÚ"lÓ@Tob)ȾXX' ℌÓN<Aƒt½2Dóe¨Í»O®™·¬iRĵó䯫ÓHÚ…D|ŸÚ¯j †A`È×"#€ÖF ¹„ ןatfpg2¸³@­cp\Gt¤q6:vÉù§#¤X&˜#qεgkr@ÇçGcP¤5­!`´ ‘à?x½±<ÄË‚‰E¯ŽlZLpT078 1º `^„!—/ðç p›F F0áNê4ò“~dœ"´쯨¬¥¥e 4 (1êœ \`T‘¦ÎS§£GàR±ðE|Uôã……‘¥Ù“µ&ãw$ZïYÿü‘ȆÿÄÂ4äðoäpðag|hÊQFL†5ÐmjòA#Øœ:bz4Ð ŒÙ^†‘e lO 4ã LÁªÎ‘}JÿWoþ›Pr)1XJ•̪xA€ßD†qâY@¢&““ÿ„NO¿;¡?‰ Ü€.äcƒçá'|ÃéÄ’":ÉÚ’QghҴÃÑ,\ià:÷ð¯vÚÂv”JüJÎ…=€5›¦W„ "·é064-yŽ![qðÙ:Ò»õTu |~8’nЩù8ðÙ­˜ö#„©N¡bñì˜Ë)lÕŽÍÓ ;VLk¿þ]ÈU' Tðt2‰0xnÛË>í›RBM‰ÄM‰áÞIë(Ûw¶!:K/-¸ãQ™„™(!ªp 憡#ÐRb¾t¾YÈlÈ‹šÉšúû›pŠöR‰®9ó#¡cútÊ#Î`Å8#81Œ@øÎB®¶âlTd7WjéI,E‡ìâ`¥$_E—iah˜ÅÄ_gS™eú€Ö9ìÈ&iëÓ;iE¶v¨Ù…’÷cxÐ cÙ4‚LJ}’tP€ƒœgq€ ?ÀÖÖ>h!“*»‡Œæš¨] ø–‚´~IFÕ. NÃù5d8œJt‘ZASb:Ét’ {Ä–aHw-SO´¤×7bðУœϯ)2ÛIv¬™ÄŠˆÈÝ.$Jâ,X°Ûµ‰ävS'ýÑG‘dç‰Ümµè (ÿWi†!2¡DZ´‡<‹ög!Ï ÏÜPjÑ%@ƒr(Æ›àO,ÉôËl“K|)cȳ1X°7ÛÍhvÈ£/™)1üïÌ1R>CÈŒô S´9‹å#jYÊ €ÒãÍ<‘‚`êí-"öãMœX¨›Rgaè¨ÿâÁ’fÖxq²CEtOޤÞÄ!ͧ²6„¤L©ãS²uJ7q¦ 1m×'^-©}}’eˆõ%„ÚíÓ˜’3Š‹"gßvd0i5±R»eþÚˆd2šC‡Ò%ÉUŸe ô'¦(¯§Ô7YŸ.Œ8’ÓnÈÑwO †q •ÿÕuÄ,A 2ó(v¬•9÷öY¥]’ÙD´N„ÚFô†Â{&ÒuÌ@qaã¿&8”zb‘–S‚ÏÁÂá)ˆÓ³6€6aÈWàYH¦Dcx£–7y³I•ÿ^dÔ3¤’IO I$Ùµ#«!úˆ+#PµDgQ3ô_×È7nŽˆ7ÑO[o´EÕ~`QDÄPv>Ø0Ô±0a›é¤¼ˆ8_Ý‘ñþ§e”"çẤv aò0סX4gq2x#öÏ#áX@–59¦ šÆDmuJÚª‚ZdHÉZdRìOøBœŠ€™f‚þ²ˆâTœ þ!“ ™ ¿˜‰g`‘c"}Ø5žÎâ8‘; ð‰Ë†Ä߸ñ”]9ž(¢¨+5'$‰ŽgÛK0+^²å鄉,Ex¤Ý M$6È¢ºhĤ‹SE>ŠˆgIÇ3 6"°GkðTš Jv[ƒ1ùŒ“PP *qê4´GLÃn,ðJB4òÅ/áA( si’àÝBåI¡-YmIåŠA",™W#û‡NhJù‚Êz¨µ«IŠEe•ØÂÄÔ Ð[Ó‘+І#’hI¾¨²\R|X T@àS´€8´¡¸AÄ6U¥ß° EOÎÑ®Vb‚I>/㫇wã )E,0ÄßbˆÖ In#žúX$´i±T%=ˆÃ=ЦkP.rh6$ßÐú0(3Gè9EÁ¤PJ´ƒà%l/BÄQ`bØÙ4«nˆ9“Ôä’£"T`þ¡‰»í²3¸Òa“⨠s „ÿiœŠEÞ¦ÐW^ûÞÆã¾¢Ù“šG,¥â¬d<›1”³'€8¡A*š(w ÑKqF9Ë”÷'?2UEG9dÊŠ¤APˆ)ˆŽ œ«cIG‘x†,ãäI÷Q„(.¹+%fdíBSäb/nB²¸ÉõA«ÛN¢j7{< \I"ËS’¦±HtAh3¡HH룊ÔüRì”'ãØ9sŒeK—bàæ )úÍ _¨K©ÃšˆgŠbL"z'Àð?r¸öµàJÂdN6bÒ€Á' Îý1Y‘RƒÄYHp<6‰ ÒžkäÀx õ/–y<[Úù“ CÒ›YÚ—ß/ŒÇˆ³Åãĉsþs¨dÛD¯žÞ:nY0HP¦Xª…ìr#mí«ØãS²dIÆ(†MJ'™;´1»°°SüF²$Yˆ‰[œ”’%Iù‘óÒçx²Î/(ÞJ iÉ£”ñd¸˜8¶XÁñäÆ{#ýÙž@.Fö“©äS»/æÔdxi_ß8ev­®nHøm¢ G`<0 4xRÎt"ÒÈ7)‰ðz ¼5œU“Áq¤F@‚„üˆ$¼ïKŸ¨̰蘞DˆèI„ûBŠ(Àð88{dç@~ôn‚8|¢N´·ô’в‰'ápIä.j’5ü°¨$¼IÔ6{ayM ãó#“£ÄÁ‘a¼$~$$¡óüˆ°xx˜\L“¢üàƒåW{dÅ–¨Çíü,\ƒ3—Á±’%XH­jO¯Äˆ<Ù'¦% âôÖÅè”l*[ÃÿNF…¤©¬aäÿ¹¨¸³ek@ •Èa^RÏð¿:†ä]LiyÞl{CÒ–@&P")ô Ó €Cs¤ewâêlJ8|aA%¹€ñ::²ÆÓÿkްÁŒÐp˜TCª”#$AÌD4Êk†Ž¦ËD’þ²Ò<"”¾È >¸CPé³;1ÔÙ8B÷&͆tÂ]^Ò ä2)9Ö­Í,âÐ<)}$°i˜µJ¾©CÑ#3ÂMÓTÜ3äShFú*%ƒ*VáQ%¦hÇgîÕÙ’ 2­“ÁRè¢ÎOq´_Ï„öëIÈž®gÂÿz=¥ÚR¥bü÷’bU€ZÓé5*KÚ¯aq!:ûIÿ¿.q¼ìÇ·3Ï °÷Ëh .ˆÙ—]BÉvg6½ÿkŠ…Jq)ÙÅ5ˆ¤Û/bœX”úH£uXY!?00¬ÃÊ)-Q3 ¼ìÖ­¯ãjÇý÷jÇKV[ª}„=R«ßnµØ¿5­ùÑ(±<-{T™µÑ:ÇK,#hgËqRApw¤6"oñä[®y&\3–Ìf'Šì-2‰ÄÃR˜Ð(DcѤ —æòHùÕÆÊZ8ceƒRVB)x’6 1h¾¾âO¾¾´öè ’}g˾’gv°æ‡‰üGÍt„("LÇ©ñʰ Ò°H#8°šØ‰g)L¢,œÈ.‹C®ÅßþcÄÔ  ÌXC»Ý‘)ÙS²Q~Hu’GѪXÊnŠ óí=½IP"x$TdÃ燢þýËüŒ$:élU›´Š 2âØgÖ%_;F¬ÞóØ2¶¬X,$ŽÊÅÎþ…zIˆiäÅÊ$ã,©R·ˆ1[KDøWò$†¡Yø`kh‹ÄçÒZ#:Lø‰G‘ÞáÈ%xB@I<á6üDø?yb_náêBztÈ*en±ì)–Jc‘­Ê¦b’Eìí›" AçÈߩ䯎 5K@{ Ø>Î$Æ!½8¦t´o†ˆ´Ó‚© ´µßëjHã÷˜Žis "¦à‚£P„=¾0(ªŠ…@ÙÍ ´Ü¨_$ÉC®>¹kG7áÌeq S׌à.$Í¥ˆ®´–‰;#…@Y½“â\HuRÅèŽè*b†Jµã]±$™7mç€ÜI†k(e‘LKµH¶D4Cô¼}K±ìv/ÍݰŒ…I¿= yñv®‘cU”²’1"ÈÃR¡Ú©vçd×DJŽ”–æ)Aˆ'ø€•0RŸˆÁ*†D 'M|†ÄêR–r|¤§Ã޼• ²Æq@¨µGÛ„5a”Fd„4ø‹(¤$¹ >@’(CPÄÖØ@¢:žd+^E…'so—ŠÁˆªQŒ$¯XQôãDL*ryŠÄî ?.u나dK ³ 8T>-€¬_bš‹"œÄÚÉÍ y9 …Nê™h±ìE䓘°1©Æ¥€IÃ3—ÝöJ-kàÐx;QšîD·U’ÒÞÑdÇu:„IŸ`˜à)QZx;5EXë@0âÄ]#vAã¤bŽÊppLÄ ±UÓDj¯í+Ēцڟ“á1ÚuŠ.%Ða|±¢'r¬Ø‰Ècˆ<®çO´“Ö§˜9k?Ó±bËÚÕ·Ãtqc¤!F•c…8¢ Ofú@‹“%ºô׎“˲gý»M,Ù"m_|‚CÖ m”u\ZrvT¥z€оg§ ‰*a”Ý áIœJ‚L»(XD»­@)I'åè*›ÎHì8p©]c¼»Ö~µihóE‚£(”‰ˆÞ›ÚÑ^bI &ø .VÜ&å #jÏÐH_I±L {6WNÓ8“Ë E üàïÿ¯&K0ã¤\Rd…ICçŸÒ$i–CyhOjþˆCÔmñÞœÌi YìKJjÎÒÛ>ªíʲ‘„Óq^¥N£žIH¢”Ú'ž¤Ž_ÿAø%ò é~ÙÎb€Se¤Fé7Ù¼bëáXÚ~fÉÓÌÔ€¸QIl<ð±ØÑ® yòZ ”)“<[ÊåÇIÃÊ&cæñþU“µ+HŒ<„™ 9ÉØ0Fý?m_jad¿0þ!¶·ó¡ uZZÁçQÚ=dõžNâ>Æb—–ÚË%7z‰õÂÛ¨(ƒ§Ó›¸©Ò‹©ÊD—ANÔdر5½¸A謌ªÓËInâÅÕdpfA‰P^¼&ƒ@TÎÁ/‰¼G+œMO‡5ÎDòÈ'±MŒÿò£…ܰh:â‚òxŪ¡+)© >Qˆ¾HÞ!ë\v'64"V(é1DðEmot¦ŠŒÚÁ=0ÆSVýUQA¡Qˆ°”ª4|§—W¡|UG)ðž4‘N£KiŒé8~ IWPŒ%±=ßrD®r¥Gù§ÙåÀV,ŽeŠä$è6QDŸ³F_È,ºH€¿„L…KªÞREP,]WÈîð¹Ä¹‚ûr˜x™Mu‘²CÛ1hxaËLÔVÄ/ #ÅðË%⊸†vñé6Ç¡Mâb lb˜A…'´BB¼5e öfÙqÓIñ2 S‘ÐnŽþØ!K-ò*{«IniÀ¢¹3ˆðl%tt;ðÉ™D"AZìpø`|ºžˆ0L†¡¸Lä¡B±˜£‹)løœHø$[™Ìp&"… Ÿ%"ü)Sö´"6\¢xüäŠÎ¹<|¢=6É"ßQâ#:vˆ6èÅ¡¯˜°$áR @n2$S‘}Ÿ!¶…ÈN—:@AìYÚ¢|¶FÓ-×7lØd^sӉċN/Ùœ¢³n6DÌ]ñN,rÎÆW•©‘Hd! …á!.þ²b£ó\K|¨!4´Â,xG’¾…wþÏ*¬%•0~LñaÞˆšP +$!¹ê,I"›\pÉŠ NÎjÅš‹T@ˆ‰€(<òÊ8& ÁOˆŽ°ü¨’ãéT à‡ÂA‘#2çGfhùp`„èHùDúï!µa‚™Ôýt ÛI"gfÖþN$”Qú(¾ì»*qÚÞŠˆiDذ-QÍ(¸ú•tÍš<„oMá …0² lr>Eâ£XqüÅvó¡®ÎÐBõ¶sÍ´Æ\¯3q©žOB«‰#§·} £‰íQ"Jc‰I‰ C¯ÑÀƒ<)°'I*ìè8†á±bI•)¦E±Ø¬0ããI¢ö ñ—kK⾄È`Ðc•%F‚Ž˜e…0ËÊ&–Â,+r'„Â,K,’À¬@v6¾iˆ7³=uH0K ã)̰—.1[ÄTàHP'ê"'‚8!vòÆvÉv˜”@bRBdn|;dŒ—AÆ!!–(…:‹|ñÄ£‚Þš›ÈðQÄE™ˆ‹šw$ $RA|5Êh‚Ü€Uá 3Zlr°ÅñA-dモ£k8r-v1ƒÚ#æÈ¤(±DìŸaE1ôâÀDÐÒ*J¡;øhmpŠ@ 455¶|ÉtLð;†•ÊCjJc€†%äÒá oÄ#‰wvbuJD6,pø|& OHœ£·KÂሸòÖ8nA”31=d ¦¨Î/ 4ƒdÎAïblD#s_™/¾¬°ŠßÿAyâþ—tÑF©Éf¡ L.iMž)SBÖg›<+KP&sÂIÛjÑ!J’Ez#¦µhÀJä#P‚ádNщ°CHTt˜ Ö 3 RE<¢SÃØ»š¸5ÄDfߨ‚ÎB”ÚB|ºK0V95Á ˆ¸ìd'ñMä3%j¢3îRô„ê§ÛÓ}³s tçœ7ɼìˆë5#øD  y’ûƒLédrîƒÊ£ ävÙÂRa(M¥íÔyM2¼4cn#»±eFEüµõÆgöÈ»KÈ#ñP¥ÌmðÒ… WX×`:€’@VNô¸¸Vò²9âUæFRÞJ䑯.†tÊIÈŒDNï‘”±ÑÁdso”B"‰–lÉiEHéXÁó$ó{K 76bKè–„TG,Ÿ >χ$—x(bƒv‰L¨éÃä6H^’-&ÅEbðÆÐ bn'º–KÌ3›(FNøÚ#ð%'_åB½ˆaMvUdú€/À°Æàg²p¦ z‘Þ~P¦ä9t4vSóøR k¤‰a{ª¿!«v8¥¬]`-zg0œ€w‚ÉM ‚Ä{S±kÀÔwB•nØñ«}»J¸ Ò÷‘QdÇýŽ”½˜…t'* ŽCg8¸ä;iqOUÖcPª ,åÑÄÖ¸Œ²²8 vgÁgãÙJ< UG¡($”EÅ^G”5 Žâ§û¶ÅÜÝOø€N I¨Aîð+${‡ŠÉõ¡Ü|\ðÈí $¨Q¾Ld<‚ª’w¹ÄÉÞ/mĽÜŸÁ¦Ú1äÎP"o}™n=’"?Ž]Œ$j ¬ ¢Xúlê"Š6˜Rˆ4/¡¹!¡_P#xW‡ðv&ž2±Šj¢Š­(ĺ  f"qI,uJ.]%Å!>%"ŽÃ‚ºÂñ¢X\ %x&P!rqìX™bÄE¨[àM‘ù\f 6"Èûh` ²( ©xŠ 9%W‰ШسySCÙ¼l¶áá<ÿ`€”Î[2£&]\¹^›¾(rŠ"ì¶•Ò  ´ì KúâQÒŠD"ŒRbKÄ‹à‘|i6ºÁ #a;6l+V_H Q0ØVl΢È#13”ŽÎµ"¶—y”ÄÀµ"’%d›×j#Ç ˜ ©ù".koŠé 2ÒG±hȰiŽ%qEôˆ¨­"ŽÄóGH %ð#ƒ“)r„3xñŠ\"ìr$ñƒŒ(PœŸP†>ɬ´"îÙlPØÑy(!e k&3`%¨¨( ç9 9ᑊ1Àšcƒ‚ý‚d¯ Ž#w½EŒP^<ùLŽô rj˜£~Ãgô=·«"LØNÇ Îù2qƒb,êç‰JIyL’Àâ1É6¤Xؤ*Û9‚~)?0waÁ07îäï\Åòä4ŒÉü« ÉsÇç*Fù x¼wòw®¢O–úï1J2D*AXµ‰î`†Ë”êi·Å-óïU!{-¾ÌŸÇ§Ø©,©åÄ`©,¾C`htŒßÂn(n@R³:)Á1£ðõ@(” *VÏ¥´èT>¢œT>é-:ÕÆ\IsÛµáÌ”i¿whA’Kê]‹ÜCŽ_R`D2@‹T*uÏ— rA§$`ª& rÈ}‚ŒZD¦ mmmÍYEÇDÿê™è°´è´;ŒP„%sÞì•Rñ¤Kˆý l¼--fȺÊ#âÅ Vƒ4þ?Šïü#?ÑY’oÄùoBsä‘´”å'Ƴâ=541a©@qO¼ÉxV ‰zDf1]BÀFxíR°(ãZª”$‡„Ë“%IEògÉ;‚‚¸If™Ià—‰ø‰Ø-B;Î ’î³ñeUØy/:’ÅÅJ¾ ]»Âñg%RªiûÀÒ*+QÆZG#÷×Ð ¾vú•îHç∗ÑDÕD›²N‘“H¸X¸!ý‹ùÒ5°yG”Õ©JÙY¨§ÓºÄQˆ¢‚ãÃd.%!³R§™$öi“e"7bÁQNdUTô9`°ÁèÖhlq‰$[†íuôW*Gûýê>:fGHM«;ÖÛ+LâÍ3ñ†Q»ê e¬uìÎo~3驉`OäÅlª³Ûã°‰‹ÜC±þU£Ô¥o¸¦v—ÀÑÔ‰ph\dêÀ „ÁAæÞB"/]ö>FÊzC0ú¥B*˜àH/#Èt†â“” Hé¸ lb,²‰X×#zàJî³âù âMÍ–Y>Ü™©°Ò&Á,n(,Òýîbp¥Îy(9†M’J@Æ»@>º!qœJL• ¡Ôy÷PÕvA[ÄŸ‚UeU‘S+uÝc¢,h²Ú'èdƒ©—‚´SÉÆ‹ký[Èøn2«@z:3ÚI©ô±£Ìÿïe»VȲíåc| 5f ’L¬îag H']ý=úLáèÐ*£ã2¨1:8‘þ­ ¥üÕ%Ûû,b«ùÐ’~*óŽîYí˜o¶,ãš@Zá‘ tœ:6#Ã?`[ƒŒ$„¥ˆ‰îD±+Ë(ìu „pÇ%4bÍžt_¥cJ'î('Ð1^¬d1tÄ[™_ªD•ã‰düê Û¹ŠIߣÐabÈÏìöÜ–d³bËa!n|h‡ÑT(&‘ Û4˜¾DÕH}‰DÁM¨ãþpBr^cØÒ&³X±w>Au¤Ò)_v$…¢®±ãT aà#›ó%6˜IO?qO‘/<‘¡“~I ‹TæÉM©™$Ù¸*ª§]A*$‘ˆ¸¡}¿Ød@À΄•ÿË@î»9Åcëè®'s™FG¸ >ÿ.ü »‚ÌaFºdÎĶ-ÊûŒ°A‰ÓÉ;Bu¼ƒhéKÝÚÚnex²D“IÃ’©†ñi(Ü®oHt”¬K<݆ÿ„Û4Ú±ªöÑIcÄ%A…jƒŒ¤AÁ‡èÀ,B&å@·b šNº*Vc$j‚¡Ô’ɺ·c4!êø4ù£s4 ·ÿ3ÚHÏÅ M»~JЦñ–v•LªEâÄ’“TÉw²ƒ@­ 㬒Ôa!IФ¥ÐÄH˜ÀSlQç(þÌ%§EâÜ)ÖuÀkÙq$·ª™X#t1iíKÚÎ"qÔB|M6¨BûDg^ÄÄ[ʾü•ˆ4lÏŽÑ]ÆR–uu"h'N“Ñ©ýùPK¤‹«èL§©…𚕊Â#-çyˆ­õÉÉå8éX±2ÁCÿ_,dz'ìÐq”¯ ©i’í·!:ƒãOHÇÏ C’¬x¶Äp…÷Q½b+ñW©®È Ab *f/ŽáH¼$=¥¤öÔà{¨ÔÙºx™ "q¸4ò°"øO<ƒÈñP•Žv©T¥OešþA 0é·eбì$ëùß9:LR;O £¡Û©ÚÇÿ“Ž"L®ˆtlq&†6ª  =€Bc±q1²½>+¡Ò¤YœˆÎOǶÛK"'LÚ€ÔÕqHY©,òC|JÉžbwRÙGÿ ·’8¾² ‰zAD[D€Ù*¥´QiX“ ŽaÁU§Põ¿YIiªH,&±’Hz—ñL•UEa´”à"FtD‡bíËÀ©B¨DXp ¯“f¸d b›ŽN4%uÈ-ÎÙþ6ä! ;Ô„; SURrïê¤6hd«ì¢¥ÍÿÊJ ¶U(n"5E¨K¤‰”V2(gGÿ§Ž“ü¯µ¦ \Dh1dÙI*$ãwÒ‘ŒnÝÞ{¼Cu(x£˜}à˜@œÍ‰‘º.{ú„ˆ¢?di"'QÅn·{.ôrÆí`Ÿìä‡ î“?Ñÿ”´Cum¬åuØKRÈ·#¥II„ )¦¨<2ꎕ#[Á÷&óÈ`$‡qhFö¿ÿ¯•(ë輇DGWEŽŽ<* ZvUìÄ ˆERQ¤ÄEdlUm18§Hìd(XEÜEnñ€›@ìŸxŠŽ$~­P[ )¢¤R'ȳ㊞)JôU\/¥·¢¨ŸBW”:FB£ËlVµ·?D )§ýæyfdà±d¸\l]þÚk™´'f¸*–tqtFE‘ žP'(¿=Î,Ò¯”.A9ñ qˆ §Q{’˜hüïÊH6 ÑZ÷ÑTS꣨¦èœÆS4wrRt"‰™¢ehn<ôUÑœ/@çëu´´µŠÎAG´^°ÜŠˆn âxŠ¶Î E3' †"EëÙöŠöÁ~¼ˆ(^q=Iê„æ.Å ¡0’¥©…»‚(n¸&dÕìÓ!v« [S­!þxú¨Ò½Õ½èIÄ=zy¢Ožž>^ž^ÞÞj^ÞIž“iÞž>ðG =%_à å÷Fn¤h¬žÌP…^(9É^½éª^Qj øG7AÍ1“¼I^t5ºf Š€CƒîbÇ>šºªÌ•6èð§$`“†ï´AÇ%\{6á+1¥2…|',ÿ¡Ð:ÄU–@¬ˆØ3Øš^^¨±Y($§Wzœnš†žZ t5òÛ”&Ö¦¤VK¬u˜Kš$º"n0—Áõ€üsÙܹØ1“åŵÙÄa>™@OØAò>"2žä&š«ä\´«Œ€MQĹÄf ƒ«Ëà «ï¸: ®>ƒ«Çàº3¸.ä ‘u ±ÇwN»aÏ-6×ÕП¼J°<‡áĦ^¹ZĆŒ ²:yêzrÝHg't<ŠøŒNA%r© ®‡ŠÄ]ˆLn⋞AB´ ëw%½ÀÜ$¾Õ:ØÙºêÉ“ë†ïHäê²¹ªøMþjc_`ÊR­ËîXÆp•ÅG•‹CSqèÄ BÅ®lIÂßGª&WÔ´«ºTÙW<ßt©`+J\è¼ô@yÒ;šÓõÁ;½0m©Sù¨¿Ø6ÑÉq}Ú8džZGzHz`°¾86ŠÚ—˜à,Ä'‘0Žº ëYÄ#&æ„­Rc%n/XûDUòsñ\êcÀw'7ݰ ·¡PˆMŽnlêþqÛ„YМ%W zªˆ·ÍÅ2Eú\)Z¡K°GU´Nnx‘ 'vñáà1ë!ʨ$1mruðTâ~USÛòâ®é ¡S´ÉĦÙ?q$%®!¨ê‹@0åjwðÀ“\ĨO!ªOͶuÍ e¤¥¸›6Å™‰ÛQcœSæ<¼0HÀÅ®'–D4§x`9q„6Ê}HÀóãF H&Š=@_ÅÊMi„ÔÞj<Â2»C‚.–8!¼àá;X©Ë÷Ð]Í42ÒiåÓ-žr)¢ ŽõiNnaw&ŽËäè{Õ…¸+w¬óÒâï’™…–AŠ¥º´¿OÖÅH“ºR!ˆ­±hÔ"退ÄÑ;ô£'ݬ8ÊŽ óvÂ` ꂈ7¤éFJ)-S%­!HšËá ·”vˆb'ÈÝ€í>ø[î}ïÞ/¤È¬üë¯îÎêþSñÞ»ûýî·ÝoQ@ïñ¸é %œ//—iPåòò’ñðÁ&v†ýD¯ÎwGç]Ñw+{(³[|F!CÜíoâ¨?‚?ܼñhí¶ráZr ¸|Ëe©Žx&Õ0ŸòÎ'¸â6kl$TMËQtÏ;hå…àË„éù&õ #!͆"&¡†­hf(Oá9i 0¶ù¢¢ƒ}B\“­ÄÏsCËP ,ÔJ‡Ÿ ¡p£LÔ›Þ=&Zñ˜éê†ÃdœÜqlrü'I:dÏ0n¦<Ï„TžÐ!/ŸÉXí„SPÛé%^ªô(©zÌ5k¹áQR 7¨Š¿±ì?šÚô€o˜”|N”CJ€H¥âºxmÊŠ=&ýFî¢e¦LËôH_ÅÜEî‹éê‚@ò®¸Òb¯üÇšó£X‚­‹§¾Õ’C${a_²ÙGËZw-íIYÄGSVQ]Ä-bålƒ¸>?Kv_½ìUu–ÕC Ùh“¡%@:Æ"õG”{™×(þªoÀthžÚá÷B¢@ŠtÈe4N`Sa㯟®‡Ù2sX^ØddË¢¬ˆÊ35€£¢&AÅ%D#•c“ÖGÃc]”˜6ÄjnÛÿÈÍ« y ®Øâƒó(‘æ¶<·$áN`k'ƒä°RŒ.n %_f@©°’émC‰¡ Ò5àÍˈ±êŽÏ U¥¬L~és✂ío1‘ÁM”¡ž„¶8_ Ê“Q’òÆ´%»ÞJî#”Œ·Q€½ö¥"À#¹…ê󛘤^IdùHOËÖ°´ýlô¬ÇÉ¥ô´ [–@0÷›äcF›ðXÍ•ª\P¹XOí ¾BÖ&W ³m°tJ0«ÉòÚ$˜¬™ ð˜ž`´'t^KR¦ˆP<ãK ¾•.Ë7ŸÍŸ·Â©îÛì—J ÀD 7ŒD¯”²;À:ˆ(eØ’Hã§¶h÷ŠÇ‹_CÃïæ-Ìr¹ôlmI\ qܯ¢Ù›±ƒÂ.Ñ«6Õäã=ð ÈÀ f;¢gðï‚™rãy“Gäª È/AcfEQ&U OR¢ôˆRñ>š\~!β+9³It8ÏDíí^Vp"ø‰úv5_¡ÂWëW¹Ej *ã/J‡”HcÉæOD"}a^TJ®#Áê•yRÇ~~;,¶… Ð p±OùEF‡Fk/—+¥•T’Ç‚ó›0œ¶~’„Ê•ôÖú¡I—Tໜ ÉÄ1'_ìÕoù‰Vh±lê¾äIèN ™ŽƒÃÖYÔã ¹¬©ôÌ–F)ª™g+’ûlM°±½0<Í/-ƒ#ÊÂ2,åıŸ5’eÛSFØ”Ms•¼aÌÍEŠ´<6"Œ¡“[P/·ç uâ«b¸¹9TÏÌlJh„*‘Fy éJK{ÏÂ¥Ny"öû˜ó4(ýè\Ä(aÐ={ÕHXÙœÎt KrÀUØO‘XE 1Ì3²€´6   ågþ6ÎÐ:ÛRœ&š€ ¿òÖ-&v§J£æÑ[7ˆ•ÕÆ€¾÷á[7(Pe‹Š–v³ öscJ›2&e”6ΓXûc“4 êOI¦;U>KWJËÜ&Ê-æ£í6½ _ÈwPâÜdS{mPO\âåÚþH›õØÝhÿ`Ht‰{‚s™`KS&­Éö0‰/4ÍþF{rb¹ó/8[Ô<Èã1÷ =ŽñšGérÁ7“™Š!a -ÆÓïáB0í§Kþ–ˆemd”#êÙÏZ ld˜˜g‹.ùt`pÇì,aéæ‘Èß<6²¾Ú Š(¸ŒjÇì`Y‰\.Ïk‚v„é'$²Ç†Tø æj‹,”P¾@©jYü¥R›å–¶X÷Œcyâ Ší-ÿ1þ”Áäè¡Å:%…Â&YsEóÅ"c \ƒ¯Ð+; Ýä6PáZœs‹­9RÔŠá‰ø(¬-ºÅeºàô7Ä‹OèMŠÎ6—‰o ô-³Æâ‰¾J¢Ôj=AêL’s´’1,ã•{ÚË7'zAÈ?âò8±‰J4JeuÀçéÐIVÔ&‹Ï[\a¾¸P*Y]ÜJS©’Dî„––ŒR‚.)ŠBœ·¨ö¦Ph"Îe}Äš«Ê‡´#4ñR{¾-˜0ÈqJ^‹‹wj€ɉkÚ×;®rQ}¿8ì‚h¾´TZžCûL¼Ö*óïÒÞì,‰"eŒ­Þàë.•¾©Zj.'õæsºKu2Ïž•ð í+ϱâÍì¤VÉÈI±ÝT¢™A6BŒ&Åð EV®1›ö-zGÙÐ6‹t[†øc¦O°ŽL¾ý†©ü‘zØM>ndï©r=Ê7äÊMµæÚ@RœsiœhMÓ¼©9’¢ªUnìæNY»o WÓÊ)+ÉvÇà0‚yëÖßGZ'ÙÞ‡ýaG8ëßÉî2Ñ,6‚æƒCŘ–Ô,ÓZ¤Mï)%b€ßVZ˜D¶þ-n aÛ"A7Q¸Œ%Û®±frö[‚G×*Á"c…-µÂ8]é “ü4a’8o˜eõ5@›nq :# ˆ¥×Ð'µ\&“—Î~„ÁîäqE£F’UnoÝ»ë¯z2ˆøh÷æ|ñã¥kÅv†Ñ`tœ®i v´,Ð@ö2k³Lä/Î××t4ÉÚé)wVù÷fOÔ+Öl_Ô‹3kÖ“â‰Ó‡ÔT~k"U¶Ÿœ"Ì* §D³Ë"­»t'×NdI}ª û—ÞH?¾|§Œ"™âã,G^°'ƒÜœ%¼i£yÂ+Ï v³)—Êí,xEÓ  `ˆQÔ ¹¥¤ÔjŸK?Ì^ SÍUmÀìk'+½è¸””-‰;R¶¬å+ORyy[–ÑJI#jâžrs¨x+CìˆaVTîã(sBÐÜÃýøÃ¯]]ò®±˜r ®\I ?Ó—Ú†f÷{jAiY‚>,rœàD  ^ºµ²vÝ™mŰ‘à§›ÏÇöÕa48•fÃ+h©7 è8¼u!âyþœÝ‰ž?/¢®º\˜Ü·nlná’ð’A±lßtþ²/KÅE¬™*žŽ5_› !–/ ²£Bò˜œlˆ|9ˆBkÖÇ2Á©ÍIæ?*Ÿ3Íb„O¦âNЯ0ØÙ(¸ëçÍõ5Ÿ¡f°éÞ[nÊÍÒT ®”S·®hïÐX%VHk¯Jõ¢.’BÜhY8§ÐU³>ä3áÑ€IÃSÆBøKm}[¼ÛÉ  Û¨ÍâU}š‡¢é;-àSÔhW;Ì 1ÆævÔ.ŸrozêLø ^‘³×`‚äú ¾ÀG¹œ›@¥§hæTGq6¬và>w³Ò7ájbÌÐö dºšn„&×Kß|6üd{þWíÈ[ÊJ9±§‡ÂÃl{© ÀX‰8õ1^n?{öÑ•";?TÑBX•µÂe¢л¤V¾dÉŠÛ°È<&`%y±†rÑÂ+ÆÈ3]Ñ,ŽûÉDÎdZ -b­vNIvCÄê÷O·ý й±ƒ¼‘ÄWã\b•áfEYg ¼ß}oòíqä¿ìŒr>ì3/¥Ç› O¨¬“rc.R”¸qC˜¯ãê+u²Ã.n#̹¼ÓbLZLÀu‹¤aV)^àè!”Üäe¨Û.Zp¢C&úg sR÷ã¬w¤@‚Ÿ`IÔ’¤¾g¬X úÝÒ–æÜ¥äYZÞ¹rŽ<6XÃv‘ÊEN›âäƒf7˜*cQY)—às<±ŠËSՇŢ:±Œß˜±Q‰¼“ä §Vˆ`ÁËkÙ/ò=§žˆ¦ ]¥)è¸åS4x<É $ZHJç°WÓZ³”H 'ñ0"Ñ“b¹­ÑwvÃ6µç\·ôz-Ú`ë¶Âޤ±„¢Àts¦Y¢¡2õ ÅÍßb àW¾@Þ\è‡Ä‰åc1^"™’„DÁ2áÖ/¶£E8ƒ€¥×ªæžËTbÇÄ5ýÇmYùƤp¾¹çê$-GÏш]d6ÓÈþý¯ýB»² ÖBÐÍMYÜv‰Õà<3ì’ðIŒpžè~jÚŽs—pšbŠïíȶJ>¸Óî,P‘€¬ÞFRtYù KÖ6´rÄo¤ »tss¥‹õRV-q,Ík,{©5–H~29ç†[B/ÜLÈï¨e–'”Éê,+—,¸³ˆ?¥ÎœõÚ÷\õ21JíшebÅÞN|¶ýlÑØùª?Ì×á·å|ÒkïÔ=#…;t$ò‰ñeúŸP=Æ¿°g™] Xë’€š0 #—µ§E%“ûˆ![ÄN*çˆî`O6(`•„ӫТ*5 J<ÓcLcˆ€ÜšßX\wœpÄ[T;l޼àe©ˆŽ(0¢aV(õÊë¶Ú3UÈéc$Ø%ŸÃ&Ñ(üfÂNoŠèÉ|ýªR‹opöBTš¼¦(¯åÌNèÞƒÝc:Š•-óé]ç|z‰ó«€5c(—†",eÂ7MYq±Nv/Ñû'W1bÐÉä¢süH Î5¹æF¯Ÿk˜Ùï–hFDÚ6Èà ;ŸL †Ú ꀻŠ5¹•ÎpŠ%"ЙœuË·eÈ™e_†ÂJÂcÑhñ‰®^åJrÑ”`¶ÔeŽB:6‚nifE§† ±4ÇþsEOm=éõi9‰lI=7'ZШ ¾Á[ÝfÇfÇW•¼ÇrK1Š¥Ë9¥49‰šrÛ(©`ñ“ÁÉq^Ýè(ê¶üë˜CοÖUP¬7-„ˆ×*½% 2ŽÉB;‘ÇxÇF“kCLVD¤;\öWľÁ«k V‹ÏkV¦+Q¨EeêPZò‹Dﳓä¤(f½ÎRqNŸvByÑTÆ õžòÔ"^;Jl§—%qÁƒÚ<“è•¡§Hø šYÖ†7õ–°zåŠø¡ª€dú "*% ¢­k<-|câL&X—qÍ‹§¤9ù-¾ %Ç2ÚÑ·ÄZVì( oyâæHŸ‹´Ô~Zt f`Ê{q?ìrÀ>¤Ç”ö Ì¤” £bY9LøòLö*b(ŽD˜cZ€b ­Rqh±\LÝ9R…ÖòJÆ?.ÞÅè^­í Må\>è¿2ȦÐÁxµŒ¼Í9¡ÌÙG ÍF#-*(£Sí‹…”œù–rY&ˆ×5%ÒóŽ·¹é£qêË¥›EŸŠ¬Æ'Þ³%Se˜Â™â &IèKt Õü<…#ŽBŸH«É±Í¬Hº¢cJ÷t•›ªtà3t í]‰…:.gÚÊ?«2°qN£ÊMš¾W"ÁÑAz,Ó±)ÇþÈfJp€Ç:F8ÒÂH]:¡„)¢PÛä *&—î“"A{2Àç9^ia =R¥KTzsàí’N]djÒ5í2t@";c«+ã1`4†US¬s˜Y÷6Ü¢çûƒso0êÝèÜv€YñÃNÿ<ðzGÞðÃÇv;ÃÑ9æ;êt‡çqg7ðÈL ~¢ó¸ß‡µ:gO¬ó½ÝAÿðà|ß¼<ßðCÏ;:ïŽÐýã`ÐßÅð1çÈ–â|x¸%OÏ1ëÏùôÞ/Þ®»Txñ2”ÏÂy·ˆ)Âùsrš*.íÞ€.øæ—Œ wéjiyŽ=IçA¿{íûQx¾78ïìïž³Ï -Šw”ÒÛ/—ðú¹µ3_Þþæ5¼¶Yº¶ÔÙ5BlK|X2Žái„·±Kã ü>¿òáò³ãùö’áEÔi‹Í·£ÓnT†R´×|—)FÓçåJŠz{ª¥g«ç½ ÄÏ@T úî’ðã!B¾éîœãe“tï[Äfü}wéÙRé…wäGÁ¾Wæ¾±ƒû|zuŽ"ˆ®®­l­<Û>¶ðl•J'mÅ«"2íþawÔ9èFîÇò×Ç×`©‡3ÍÙ*{¤]mØDE³IxI/œñ„;ÜZhHÿ¼£V¤ -Mx A¢e¶BÕÈ‘éÉ=H7áfíà¨Ë³,_&vRÉU»GauX£›‹Oôˆ\^$¤Û“2êQ†Ö=„"Oö:#Îãs~²RR ͼ“íR(nþOÊççÛÌ×–1šf^³“j°x|Àf~dãü‘}­X&¼äPç\«Óµª¼Š’·8KRäÈOʤvf”ŸR˜¶ D“á+QK”ª-4åȉLóœ!à¯Ó+Vf}#bÇQ¥Ðð׆xÍœoš 7o:ì*”¹•Cצ¢Þ7ä°”\˜’AâLQ4jØEДÉ}M»éÇʼnÊ"1ri.Q¦Šæ¨QoÞ…r4 yøwÑd]2oH]tþM5mV r9«yÍ®ã2ô…×MEeEðª¹Å)É žçÔkk1\™_ÐtQÁ× ÿ¦áß mR°­þæäð¯“ö¯‰ÛÙœšQðr±Ñ•+“é“\'Õt¯jh¢/þjù’8]IXùÅB×òפuÞø‡P7QÓÁ@¥¨2fûY†µ’Û•ÅÉÊV0%"z%¹ó´·¤&÷Xÿ& ^IW{jGƒ¢Ypâ2­ ¢K»S¿!4¼°ú)ÖEf+}@4€‡:L^I)E£¿./KÊKL9IË_)‹¬}é 2Xàå@?C¹U%6ŒAËü¤_9‘–¦X^žê 5b‘`ï 4Y#1&c±,*–á̧šZÚÎä>eâ^bqÏ2cs=9l%À‘)¸ .~òx„‰™I<]áìFC‰Ø0kÚ(*$yŸ1;—@»6¶[’ô8Õ#Ç$Ó(Åš'Æ<™T«þé¼0£B‹%û_q±ØÂ8‹yô¥òs§"]^^óÓ™øá¦·T ^½–ES%xG0h ¨“izÔôäñƒÄõaˆ·!™Wœ7$b˽dæU‰Îæ±;Í”¸-h).)ʧ PôbJüØ–96¡b¹Ë‡ïˆ~½f–¹6ÙY·çç¥6éˆì®±r$òvs–dfºVÊg#Ùª`gm|4Ñ ÒpֿɭzJ5  º1Ë) k+8n²±ŒôOL~u€q³0‰u&(ö©H”{×Çœõ:aê멌s1ãë6š’ gz#Õ¿ÞÊ&1¤×Z8ÿõ<&Ÿcû^=¥‘VAõ«š{"(ñë2#'³Lîá‹jHiÇú±væaÅà‡˜q­-,ýjêW9Ö•#örgÝÙq²xDj?%~’:8-”}\»¤TzÚ¢Á—%îìem¥Œ0³BŽq5‰ÙÙö¯_ƒC°°€ÉåHGŠÎ«ÈÙR ÄÓKo&é8íë;SÕéôµ,³•MWÆ¢öF…¦Ìýî$hAq -È,]8œº"¤Ñ­ŒúHî³7ˆóeí"} µ4¯•ozü+XP“\n Ï–X'LÀtƒN€`¨S{0=±¶Çc=1âöפÎíLدT>çßgý}±lüBø¹#hûëˆÒ“ï¯è úlH2Š˜|ŽßɦӇÉ@¾(ú,¡µ¬ŽÒƒ˜×S2JL¼Ñ„¾–[âoJå¹–®ç˜`‰ÙÉ'ård†ðÿºð%’±ÎÖ ¨:oa¾]ÉïÝ)àÜÖ¿Sj-¶.¨ª:&íÓÉ(× kIdþIJ‡áAt¼.«A$²zã‹J°=bpÛH§"½NÑxê,¥Æ¡„ß8žmåíÄE‚Ó) öv"|î$:äStp=æçS ÏÈšå†o•t-éâúÑ!7Õ¬]/ò'«¾ÅKâ&ø N¡ÑÀž<ž%?Ññ†ý¶%}—ê uü)ÀœdElò!»@ì‹öhÞã ß/)æÃ‹ÃA@9¾_x'¥³ÃA·Åï oxÚ ØÕ@µ‚jKÂÞ8Y€Ýnß÷º7Ž€Û* “ VhÑ|2£ç;ðîÅ¥O>2?YÂËAQÆ fÚéB“M2p|é.y݃=3Z•1ü"ǺK}@ÀHLôº¼d¼v—JÛ+ _ìœsHáwé› ˜µ ]4OÊË¡Å]O¼\2ÖÑysûÙÂüNÙ¥¿‹ÏˆL½º{v |‰ADõ‡ý.lAÑ8ê ;~§ ݶdèŒü“…~·¼ÄY=w»x7ŠGÀ l`Òr4H³àÝVÿ^]ïFý}x÷…á­Þçì¥ õ„¦¼9w¨²8š¸Lí¥¼ ˆ†Òß9nÝÌ‚‹5[[´áZ†³¦é÷–céèÇå±b±ï){ëLìAëlW ‚~¬Ú¯3ßð¾-ŠòÅô—¤¼¸\´Š­HesÌC[U(3 á>Ñ4Œ Þí>ãà¹\>‰páù¹ ìêm幯î´z‰ö¸öÅï×SPüî÷÷["qÃpøpÐ?€¹ãnß[ŠVh8¼‰ï–‹òWŽŽÆ=´²›±FûÁFší`ó$/½Fïõ+)d'ÖS³F~çkniÑ+p›Vù“yøeï”çáœyJ*d‰[MøÂk|«ÃXUX—+W:ÃûÞ}êCQ*gÊÌQÓ D`4 !œá,PØhTä°°À²—8À,¼£­aêUœ6¤9Bëúkò2zã¬(yK®\)î&ñZ@[»Ü#W5+IÿzjÂÍø*ãašªN,·éŠJÙÔ?•}Ë$ûx‚ûxÒ–¶ )DÒ5˜€Ý1'¿Næ@ñP§N38eÔ7ÆúŽ“ø"yù…ðŒÅÃ96ÎƨÓC¼ ù#}ä%Øîca ΦҥÔúâ©€å+­bï7–±å]V':I]{F·Úß?€Å7™–zëù^Ф´Œ„«—\Ú×Fqá#+O\bÓ/ª•žË”Hö.;ì”dH“ÀX±y4Òunoªcä.‰ª1Ñe6ò{Ì» §GSTý‰¦…R ¬Òçú-Ÿ\¥ÄX§tÆ^kU(ÚúBX#`9I2%‘ñü„ QX„è\‚èŽ0¡j/yH£|Ä#¤Œ¯‡=tGJ ¾àrâ^,çSvôr,Úwù™ÌÍÎë9Öh¿Ø‚aœŸ›¬°=Y<èœD]Ѷ“ª+õª¤1;̰w8ê‡ [ó…ë­ŸŸƒ´z¼ƒ)§°"†Æ$mY§E­ä‘YabÕâ^¯åY†´Cx­&€]ÁØ(Éý…OÓ„.IµQ Âº•w’Û;EóÕgˆR9 ¬Ø8g>ψWæsëûGZE¦¢Óú£5æ‹´E®™®ó BXº/äjŠ#¶rÕÔ¾’dg_IÈB%¶¯ÔžWÊÒSóhri¦M)wIÚÉR˯4pÑ<ßzi'ˆ­‘‰™i‰ô'Êó"KÅn®Çѱ dí¢¤LŒEc6¯\¡´NÈ¡çP©ÛÔͪ=|Q’dŒ°™@úƒiyžÇè`Eïííõ{:¡™IùÝÈÍ‹E“;]²RÄY¾t—¾Ç6Ñ¿ñÀÅ è;-þ~–ŸõP#ñÊ]úpC?yk¨|ÀDç­í³ÑÆ |6xÖCgÆÁòGKûÐÆ\*èwûtâŒèr³”?€¦zè1éuºç<˜óý>æg™è\f[;x½Ýè|yƒ`ï|u)ûlºçÇQô²Œúï÷êùýÃѹwp€ÿ{¶0õ4°8ÿlôCöíFçƒhxH¨U¹…3ûŒ¸ucëüö•5hÕ@E̳¥gKK´þl ÕÜ¥«¬mzæoóêe_ž»úl‰ß^+_¥×åOÒWK»CÜÊä CдŒ¥þõ@ËWvÊÏÝío^ÙùdÉø”=ÇÏæŸ-bÌâ¥KGÇKXô¥å[;”ê´Ey7Ê˘¹µqoŽIhx-ÆÿñnCÃ{ìn?Y*îÌßâÙM{ Xw)â´=|x9yéêá•ë N #–á§ñÐý”ix¡±eÊ’‘`þXHý®U»*;Õ,{ ƒá5 yÒús¥¬²ËZç·y ÝL¢'‰%âEâZ•þðWA‰G‚€£|if—jÍJyë$²Ì`š"HЊ Gó&MírQäE.ÕõÅÙ'ª—ÝOÈ4îÚp£Nå:ÉG(’_§L¢RÍIašÈþü-Z(läH:zD7IÂô’㉈;°h¤(ÊóÊêÔIx>EíÌjY.Â*TÆE(ÉQ•ÕëÕÕ‰«I¬ã!Åôª+LÓÔ±§é!VIu’ôª‰£AFñ„@•ZÍT÷TG¢üUeE÷¥”)adñ\Ö&oF£F6YŒ»Þè¥ i=¹ü$ v´Ã* [u´ƒÁ{Jd… ‡ ø]!ý³Ø. –„º‘•¥B÷…ų©K!¯³GàxNUU­$§fE\§–TqœJòyhvÚ™«°Ó*#s.a'C…lácp̱ü˜­M !‚¿˜Jœº" KûþzÒ!€/._£©ÏÝ _’ך#©ÉMžt}·Fhû‚zÝ2‚âÛ[ű˜[î·µû‚c»i ”Þ ÕF‘ž1ÀáÄûe3Véø­ Ûn ÛÀºåãÓÛˆ†ýîQ–pr« vô"Åàü×½1&k2(–ýR‘ý£S7ŒµTÚ­‘P-BüÜ»V–÷/Ð.¯Û5¬î°ù“æÁ1”®Ù­<÷!^S¤ ôÏSêÒ«i~ù®Ilq/î—Õð:Úá·„Qm¨G·k Ã2ó0FÐcgQº4>?am‡K2´ ã å=]Í–¡?mÔJ°ÄmUÓ„£(XgçGKÃá¡z‚¨Ê†Ô–ˆ8xTá_ƒ,`QtI‚—"²I3½ÜÊ-|œ_˜çDè„…" `FþÕ? «šéᦀäï‡t±Â¿Ñ¸QÆü€ÓŸk£ˆ(McƒÕ-b…ÉßåT+‰zX úѪ‘mfäX.‰Pç2X)óÉÈIÿ]嚈8Ÿì#Ct>ЧÆçŠg;9óþÉ8¸F»IŒY6@\g–<2î"›\k x{góÁ}½–T‹+Ò[£øbˆöÎÀ{1;<È*™` º;Ê »TktD’¹öqÌ5R¯o³ µ@‹ °|á]d³[Þ=>CŒÎmðÝ(ßÑB—±·Q"™éCƒ]:Y8>>^ò¸¿íF½NÙÍöq±ébžÚâ«Yþ ûp0‚œìw3íwY3œ *&/F¶n`ÜL"øþ \F½ |#QL"!hy• bÔ;ö³ÄýPKÜ 5²Dy Ãߤ "bÀòåç÷îÊ©” H}ENñ[ü„ÆRlùþâ&Ñlƒ&P ñ‚𠂈!äa„°$ÞãRÈ×ÐçØPx“Ö™ˆRÉ áÎrüSÚò‡À‹8\%äëð݈LC”:áÝ€_µt÷òDø$¡Ö)«)ó.& LŽ'”#=˜x„phFÝrýMô XC¾r3¹Ä„À\ G^/ ~1ø)¥ÇdCŠÐ¼¸ÅÑ`€´ÕðïÃóª×íú^ðrX*ö¡^a?ÚïN‹d& Ck£Ãá*…9Äù¾âŽÿ€þýŒpÍ]â× ¶cüó©áßqáÐzá)àQ ÿ&ªá7¢W‡pHng’ºc–ÜG‚Ë]I¸¤­ŒþÓW=À+úæºÕöo˸婯„"Ýî†'îm˜G¶Ñ¾ß^ö?wq„j%uˆR‹MlÖ“l9™™ÀŠÈÛ‘ë­‰;ÏÏH]{ºMºÛ‚ cïI&0½™™¦‘Íð.Ÿ e46úp0ºr9al¸PâfÖ÷Åw7ÒW¤ö †¢£é=ó—x¥{w‘^ Þ¿ Œ¨ùb˜Øvò€øÙ-b²_ÌLòyYfkõ7™G¾¼‹ýM`¨+ïýŽ´£"ˆÓw¨„ƒ‘nî(Ƚa@¼‘¶\·ðªlwq$ö¿µ\¼ˆþÄÚ¢&a¥¶–ýJ‹¾–”‘ÞçNyZË’Ë+Ц¸ä\iaÁyèË©m˜VEJÙC‰ºûû¼‘¿S¦¥ãq"” 4ƒ¯hÑñEìuºøB K. Ø Ã¶¶ ®†‹Ä’+(éªÍºåˆÄkÜŽëˆ,·é¬ü»3Nxž­í¤ñìg´‡ªJ¤ÕÓÞ†óäФðv55ãò_êc` 4_\ZÂ$)k©r•7é;Òê”§h”ØÌd1ôÿéï›’èÛ×¥.ŒÇ“чµ3µ0Ä:ÒÉuØœ;¤¬†ð`Óƒ½ƒfëÛŽøË–Ç{£ÑA«¸Ü0[•Šƒ&ÀÖQ‰a~aÀÆS#‡c…sKÍø»®z[“Þ”B*çg€:M{O€÷ °>1¢&p­ÈUbך0ÍÕ ·ñêHÆ =]CÿVa©çÎyŸ -.'îfæçç9×ÎÀY‰“hÍiíJ¤+|GiÃæÝÒ½¤/¨åâ8¿Ëè›Ê%ÛÒ(’Ǩ,£¢*ÐÕù¯•€M½þ1r5EéHFñ#ë9ÞØ•%Lûç¬b€J1Œ©Ã*rUtŸgw:+{š§,¾LÐMvÊ{Ìæ»˜å†JEÑÊ)zS¾TÚ…‹²*%ûÄg©Ó”žÖㄬ-lv€çƒî&늛A´¦7uÐÙ¥üÂf’òL=&*¬ØBóS•®´vB¤ÙÎ|ÛY¾àÛ|)ófŽÒZ.BqÞ{<_l^¹æ¢I¶ ¨øIZ"¥'«$?%œ {ɬbþ\‘§MŠ »†Üö]DÁÑŒú,,’6‰MY+»)@ðÙ¥Ž˜ÝJ¸,>Çé°Î¤ÄmD0ào¢T³ÆØŽúå!W¸b £Š9âìn–,£x¿_H¤i:¡ó^Ö4ÂHº„(ŠÙ“HJÛ7b掳”ºCN‹ÜžjÂ$ç[¥QzOë–)Õ¬ŽÕFtHZ< ‘$t»'ØL¤váXKÑpª›,¬°25s²ì¯”0èAµÿ2äðð$§?ÚXGŽNA|=æ‹€,ò>­”ljëù]ŽÄ7U;ÖrE ö-‰Â/\Ï¢èΡê1*L€!Ò,Æ„–”`ô‹]É¥wš-Dd<¢Õ")¡SæúŠBî_Åù¢)ÿH꟎Tý“’óBŠ8UÔ|+†ÔmŸ{j4_ÿ„Õ÷bÀØú|q˜¿<Ù¯s“¾0xÅ E<(îIvÄ jÊn´×:æ%Éí˜&®'Á±ØQ œŽ!â–O‰Á‹¸!%¹zŠ$ÓQ„UTÛ!q&üÕLõYºYMÕŽÜ”$ …lžà=ƒé¾®i‘gÐB‰ðÉŠ´ˆ¤#D¯Ùßé†wÐýþ&9Ê)Š‹Èì__äË¥Ôéì.»ù¥'ÚåæÉ@bÔ ¸¾’‚ž ‡#ÆQâ ¹‚¤€þ&yF¨óänk%͙îæN2“Ž«“Âv:KÚíë7„×Qè–¶ÑŽstâ7k%MÙ6Gb²¿2–ªr Ln¯P s£(CTnÌÈrB¹ˆ¼EøLÀúmÚÀ›ÂtU±êÂG·“=×Ak®ònˆª Ô¬þ…`@^¿^''¼5r äØC7)²™İ+”h%q¦b$ö¶¢u»­,”¦Ðº¡Ù¿µíßÈ*8´Êèr4æ5\mó¸`‡S“q‚°U î•z¾0!G£/\åU¶Þ,h䦋ݞâ~ÞZNoE,¥›¸gwÕÛÆ[|Ù{¤(æÛzd’Ú#jœìÔ‹iË"ÜÜ-²A–4ärŒ^mQ2öH}ZIº’#ý›FŒ‘ —$óR é Ç99K, C0Š…Q¿ =enÎ%ÐÜ\FMÌër £ëÑ… Ñü5»Ê¬&ìñ¡»Tzæ–Ÿ-—®œT>¶üly©ÓÖ¨Dù&šAVHEaî˜p@Vp³· 0Å7šµD {ÒÑô¿F¼šÚhÌ/nÊåÊò4””©m§L»äñ3„0ý”;´u¨‰ÈÂ_¹’¾#q&Éß$Nž¶H"󵼜}S"ÞT{Eö>çk2ŠÁ—EÄ#„Îüð‘]SÔæA*¾Œ iaÁ%8ØŒýµµ’Š ƒGv’šè$©µT¹:&Þ£’ŒEQ;‘pOÛ<W¿È½îr¬°èu½Ó¡Æ.r aHÁ8&ï¾}¶¢ 4L0§¡wq¹Ä÷;nÖÆùzz ÉúØzýQA•~É1"ºÒÎÂ_@ Ö=q‘K_§äª† ´²®¦FA»z™òcÀç½?YH¿Õ«Ñ›ÒàyZr)sÁB—$¢MI¬9úEš1uÎù–EÝt”ˆìw)´=°¤Ã_S… ~'­›=D¢{Q:é3‘arú”,αޮ 4†W(ÆaÐ)޶øYD›´zKp6Ôb‘Å7iÖ%ï7a2$-:Ã?E¬š?¯î¡ÎvDËÃ?Ýì·q„þ™ø%þh±ßC; ÂÑ#ñ õyTîíªÚ”·~My«RIïü| ˆÂs)QÊ£­*St¬ z"/^áŠe]8U¿M wÂú\ŠÈ²‰mšF¢ÊFªÕκÉGY7øì5†¼â•c,™†ÅIÓ9 P}q…8ïÏYZZÎ |‹\ÂýòÙ}`åE ÂSHÞWr°Ü-±ÿ—8˜è:øüÞÝÛ£ÑP”qõÂÒÊ/r+k£+ïujûñˆZÝÚzXÔ›Ë'{ƒ §(­S9V6ßV_¹‚ó؆[Þ]%ç·j^•ØÖgtÃ97‡©E]pÚÅâqg´·:ˆBØð,û‰¡lY.MU³ZàF, ýÓÓ<‘O=Ã(ß%•}äIY4šr"¯+.»4O9Ý!JÆäèß?@ 8¡#"Z+N«‘4¾ÙhVjN.¨(ÖA·,Ét¨´Lêk4<Ýq•wø<ñî„p…áȳw€<òÌK¥kdµ5DõÁõíâç X£p¢i‘ “÷Þ-êÐ]Ë`À"NáuŤ¾ DŽë8‘r°ö{LE1ûC¤©N#æ©Î9 Zd¤ûøiEõ¦´d\Ùˆ¬kæ)¡'´­è±\·Â."w¥ñ.Ö$CƸ€e®'îø÷ÑE”%ÌB:RšžÃ¦±5¡»“bÿM ÁÆ·*$å¬,æ^E£ò}"¦Ýv©ÝÄ‚z¶úv–èPŒ“ý.ÈUcøÅÉŠWtë9Ò­¥cÀ—réïÍœ ˆs+Èð>:éb/û„´q Žó¡’6ÝëŸ+]GÏüûp†w½Stû;?É8( “Á™ºŠ.¸‡DÊqeA愹OÎl]`iœÌ;”xÐð‰H:pƒüªè¬Ñ"y×…÷¦pœä‚E ­y¨†A´ëâݲ¿®£¿–)ìpRš“mÄ K®µ,jñ…áHÂâÂÓÍT”¸íz[ÂÊé&ys¡}Øá@\¿a½[š»îmŒ¤Óöï‚| Œ™Ôp7k;ËEôŽ;¤ô.¹Ÿ;Ã.ÿ¼^kpñççVyÞ¿K½–Äó’ì¾ü ^¾d*ù«Xž#ü¡ý;®Ä¿qú nqyÁjYP÷´¼:¦Æ†ÀΖ$þI ”7 2¸I¨Ú9ªñSl¹œâ_Ì1OOT@¢UFýÐòA–$GS½ÂÊ©seó½;²&•XZé òã“¢±½3Cv”²=à8@…h1ª98—†¸„„—‡=¦äT@X&%"×Éð&ùUqX;D“ò2R'2ÀÁ9PáŽëQÆEÇÒ¾Ž£É*÷¦|‰‰¡()V¢ω“, D’x. øv=I›Ã~‡ K‚í¸¨n§ŠzË“õDtÛÄϲíŸ,,´…PNõ(¨'ôà(E2J–Böâ¾p¸`©Èá!xG‰ pa8ûŠ´ˆ¼²U·x¨as†0âý—‰þÆcÝ"Â߃=WÌa¼°,ңݫȋ95ƒðjÀ—»Ê+S˧ Ä[÷n‹p‚Ü™îvâG¢ˆfrLt†ddÅ'k,c·Cµ0Zë÷Z©g• zýè •òÿòåó¹*ËŸµ[ï¥Aà¸%fùŽ”Ôšä©©ô›hp–Ìñ ÿ–'µ°³ B¥ú)——‰›¤dóžÈ+/ŒB–5n$Â$ Xج䄭Q2¼ü±è⽪˜õh%åO„qš± ?Û@OE=ô>?ÁèËf+‰ž|LCž-§o[éO:רM “ßÛi)J/ß'!‰Û*›*„Šätñ}´|F<8ŠÝ¥ÀébqÚéOWËí=‘å +òÅC7̰U¢‡‰ƒ'ß§hætNå¥%ö¤vÆãôKnÂr)Þ šßZ4ï}ÇÅ Vñ¢¢¥ÚDîÁ„Q”ý„~?\//Ùåys± ”ð£.Œõ[pfãÝwt×ìÈ^JnÔN<>‘.qàz‘<ÁJ :».ÿAG†sØC(1êÓ…ÚÙáA¨ >iZMÑ`àè@ï•^¥[@½‹ô‚?-K ,Pp;ÔåDä· •e¶^`%ò†+MH»,ás_™ñ8?ϼP* 26é?«”'W)C¬Ì Ë$È‘c F³2øòžtŽ¡B¡xà4b²Aœ20ºx©Ê–‚LÐ1n îÖup½ ´ äBìt/Äks¹ÚnZoÄy¨ýaòN•Éo{µ$O†0]Š”/T%REÉ´€[HÖ‹þ‘8Ý€Ð+¼¸#ÀL–ß$Ô4sï%•ý£XÂÇÇÑä„èÅ|Ä[!lÍ.,dD¼2B±ŒR5EW£ó%¢8QJDH«ƒæ©ë½Q4À[mÿÊ¡½:îó»2†ÔÓ4¡©j åÎ2#Q€G[!<“*„R¾Ð”ƒž€<ýüíáÎ#‚ 'P’»63Êâ7^mEª2FýLX"<XÈ—B8]¶Z¦‘6»N*X²ºÃ ªÈÎs¦¥z“µÀÞy-¦¬€IL~¤2ù§I2ÊõEÑöÅ)3¸1ä¹Ó¾eÚBÑ'k‘4_C­$óúÁ ‘R8¹¹çÓç“1'dÌÑ_(KH“U7sÊKc‡UÉ*ìÚz/îô(ŒfAÒ m' : µ`ò¯/)M¥ðæ ÖöeеSJ[ÃÓa–¡´XΣ<ó¥’„pehåOdïå±ášì®ŠFâgœ!ÖmM¤ eº,äa¤ity]M,ï91…Û)€oŽ ßã3KzgÂØ„ ha!Û´„…Äž€ŒÈ^"þ–ådÔÂu5¡@@Ú@@Øe˜9äÈM@+j¦ ‚ÌpÔB»Éó´*¦)R"ÙèÖ ·’¬%jmÌ'ÂdÚЄMUÊÿàu®Â E*ÿ„lôä7ÊŽw ĹáÈl’V`<Ö¢PÈ›GA3vr3ÁN„¸HÎç±À³G1ÅûÞ †»9¦ÙΣm ¨,uÎYNBy^X6™WA”–à@q´ ÌX¦îVìvN¤Á÷Ügœ­‡9ïhÓ‰¸r^¢“ùbf«_Š8ä_X¤·Y‰a”šŒ”°2ŸÐÆz `V9&exàíG.¬±H?¯S°?iðo’kŽõD™Ð&™}̪ÔÐ.Ÿí»%|ÉfO:½°|~ž¾‘!Dˉ}B{ñxгŽñAzèÛ@F»«››Ö*½).¯ÎA ”C(fÃ5ÎEY¼JWq1qÎ>ær’òåÈÝÏL¯aöiÉ'“RË[Ã#õÖPÏÓbÞ<±óôLâÀcwé›# nòEx¾Ç·ö!ßûc§ç8T|‹«‡ñX®÷{x­¾ÚíÀð6P1€ôiÒ`" ¡r*Ö“Ë7‘! s‰éúCÂÜÝp C¡|Z7dß9Žð•‰üš´KØKÞ/Oćå¬>Éá[ÑÞ¥’µÉu¬œ»©ÜÍò__ݞ艎DŽ­ cô딤+ b{ÌajƒÜå3DÓþõEøc`”Ô¥oŒGã}1ù¥)âW­bG|^×\ïSÔ¡“â8y«@þ+Ê“I1ñe´¥PJð#%BG_o7zÊ‹£©ùý< ]= úÝ®ì'y"•/·ðùL-$I)$­Ä¼´@N?®Xyÿõ‚CZÈÑ’ÝËu’ÈÏ›IòDž›7/Ì}ëà¼Iö@:ÑxÅK »²¥f€Î×â¾t•àëµ(òLS9 1íìë,0žàµáDpä|ËC1ü•€Íh˜}Vz2`ókØÜÊ ¦´^rD´û§é3n¥Œ# ÆsZT“ãëŠü!½ë$¨Ä`ôDj²Å¿)(1~ÄûrE¡ äo4î¶¿¶@a™%ضýSåÅ]6™w옓+¨ó„âó™‰jƒûÑð~´†LÉ@É|M>Ýì¶K¯ˆºÝá•+e¢-҇ jmV9".Œ†ÂÌR@]V^!aRjœÜe€i¬Íaxè^0&ã| D˜ÙcŽK9BS©Ë-Šˆ²Åw:^ËUV–ª00ˆºZ SÂKõJ@ Mçô][Qvmü &¬&cH1ßJúP¦¾&Ë1z[Qž¤PÁÈlM ³SòµHì,ÅÛ,.O"õü%S¡r½tCÿ~½w=i¥œ°É‘jÝÇ›ý£‹Ê‘XVçv,ævÄ ²»Š[i¦Æën’=¥(÷Aú¹é»,b¤»•‚ÆX |¿D±§ŽRˆ'}IÚ…:I’ÆÐ«.ͽ+zL²#IËdÓÔcãÖžÛ˜€f§| ­F×ȧq•þM,o²‡àëdÐ%fûV‘êQŽÊU¦þLÑŽÕÕŽÄÑÑvàF[»p¹U¦ëkÿ–L'Bêáu ;“bº­÷\ñvS_£ûÅÑ(e)»|¿@‚(Àò<ǯ/¢Ä^Lœo-Ò‹t k‰),/÷»K¨–›IVªŒ““L?¬QWqÆóHh½䯩)•×^(£õbÏ4«ÎsaäEY cÜãå„?Î9(ÿÂÒéqiGÄôäÆáÉèƒ&uˆ1º¤R‚QE-õ`ò„"…õ£ Ɔº3üL¯´m $Äg‚3@׋9¹ iÒá²´î‰ÔÓ¯ž{öÔÈWr ¦›fø)éoàç£6‡´Ôû^+F [p—¼«^rN¹°% „ŠœùIz3}º\**œqQøà/S¬àå¢Âvã5†Rp§•ËCŸ&ì]–ÏãØýj\s|ÛâhÕštðÈ‹ Ž —7Ô;-û¯[>¥bM)ž°‰[¨‘R4ùÂ2kUÝ©JŽÎ…utËŒZ‘jØ\ŽTž•ˆ?m?×h‰ÈAróoKõ'ùùš χPP¤dš§¥ðê•;ŸdZ–„h9?Xš¡Ì6=äéYæh}¢CÊ?­w˜¨üߦK´q9ZI>‹i½çýŠãéUž‚4ö-Áæ†s¾@¾’~0k2ºn]éÑÿõuzIËvo<ܲ¸I#º_GÞnê(² ‹‹k°Žv4’EUÞOÕÿÀÑ»Îö n¿û`õÓ–m«îÝ[ þu­Õ´äÏçwoÜÜRŸ7Öo݆¼¸¿µñàn˪k7îÞØºÑªÔŒµOî·*¦qqªðgëÆÞrÜØ„o´ìºqûÁ½-§f¬ßß¼±±ÕªT êÁ©÷nÜ„ ßtïáÊÚó•µµ–eÖåãÚÕõ{+Ðe&¯Ö¯¯Ý€7–|#ú3òŽGw·ÖÞ} ïjòÝæ£ë[+«°&fÓx¸rëÆsµSá‡G[Žc<¼±±þÐ4 ž±Ó46o¯ÃH­šÁ«èØÆÖÊõVÓÀ ãÉú}hgÖ O‰§1˃þæTkÑ[|> zðÒxò7úið åº#Nñ´0ÂRm¯¦Ú}îrýüèX^i·ÌýñÅô3ZßÅ;*Ôí²m+oŠë‡Áøm’÷L¢Exúƒþñ0,î;ÈP.•˜K<—‚`y©¬D{§û‹”«D†¸´$¥»‹Kž ––Y˜ØÔõ0Ùû¹lûœ$Æd0žÈÙ( ­“~ «\¦Y 0yÎóŸV)¹—†JóS¾-œ^øõ„:—£W%3 $>û4¿-£”½ÓŠ^¸g&€oÁ–½’¤…e4n©o“I푈‰é,Ãò+r颱G,ˆ–8a1vÙ6„ÒÝGÆ®pbQèÊ•˜ãù%#@†ìhÛ"àŽªlˆ²Ú.UµË”yÜXfٰآŽm¾v¤vµD»ãq #8âqr¿oŽ ‘La“’e„pu]|Ì@›è ©]¢/•à>÷û‡@òúÇ=¼(z²íC³÷¶šsy}rÎ2¢ÞLÃ:ìÑÀò»)3öòÁq|{âxWбK+Î%—³¯[é®÷²Ò„ñÒ=#Q‚ÔNŸ N)Îy›Óo"{IJ½ô™?©õ”J`ë¥}£ktŒ’}Fâ*ÔÕtÉéÛWR¶ÑI$Ùµ­sQ=™© «É»ç÷0î`Y‘kçæbô÷‹S$ßéŽÎ3©ÐÎýC8p½s¶b±^^”—ax2L«ˆ“z±,µH±„üGjª&½óàA!z^/¼_@þ rE÷.%|NwèÚ…ÜX^:=†ÄÄHCa¸±ô6 Í㌒•(h)VòÏÍyj7z£ƒ3k‡³oå˜Àê zàoˆúµ‘çw˜d`vxòõ껉‰WÙU«±+lŠ'\hLuå Âß\ÌwR7¨ÉßÐŽnاß3Ö"aç†ÚŽõœŠÉÚÅ" òÙ~§'°cÑ2ͤÜâ‘•ô¿a¦3ÂXŒeM¢’ %m¸zwèšjší\Êç1†EJûPËg¬7âr¾/v¹ºº‡€ [g0ÖtGbc×'uĸíx'5okq€ ÜÞ"·B)¾ÕÊ:§¾`Óâmh¬#—ŽèIvQT`„%wY9ô‚X-‘à õéjø$!Sʱí¹f{ïê i·'<×[êíÛ{;Ä’~Y;B>H:0bRÒ¦B]žâueÎ ’×ãòšo9žö úŠUkÅ€É@¦ˆSÛ-‡½á&q¼ óˆ+ƒ¢4°‘§[r½**È D> %Àx1âK§åbªUEK©I-»Â.ÙTØ¢kJd´IÄw®ÕÞuå×6½‘ê~`ùŒÎ¯qWN:ú‚» G_C,YН–¢ù]D \%-þPPÇØS+H¶ e:6“}C½]r*+—„†fRÛò„’lþLVº,ñ2ºß…•aöÖ(ŒöSâ½ýBa _*TÛgªýGÕöa]ü‡ÓtÂÀçJ=ÁR&J‘dY{Âä‘;§ÂcNÀÔ!ÿqô¿é$^Wz²É38ÛòSYv¬øXé¥!8<ð‚¨µkð:"ç׊Åà Ø(~âIk¢µÅ‰2çç²âuàW»ÞpØzŠ¡¶Ü¥E€aDs”ÃXûæêhŸn2b]$š*Á‘+Êg`léÚ^$yš2è$ë> /XÓÕqçv¯\Ù“ú¹@‚6áAP§ÅÚ~¬pË-²²„ŠІ¸2*™Dž§ÔàÊE»5Á¬©W~\6ºîËL4•—Ûò2þ+ÆóÒØ+·^bß] bP¼ËªnWЯ>™¥wlàù¥€ž)’Ë‹ÏÑú?  Ö0#è8HfŽ{ú$s*#IMgz:Üi+ª— ¥Eþ]ÌÖbÑèËìi‰ðÀKch]iX#ã¢ðKRF¥l*^¢Â)蟢b¥­®©ô×{ždKà÷Eù^ì±11¶ÜPÊûÑÈéE’ß”öP8ê̶3£ÝI–^m^bÿú+1• W.¹,‰>hbIʪ«Lö[[yQ*ÏÐ ªàQ–îxRíå7Boj Îb"K; äÀ¢Ô xm]œMu, 8¡ )Dª²GI Œ¥ú€«`ȺNFq6ó®;¡)•ì{¼3Æ”Çí‘ñ.»ÑU^ÏT8•ê&^E1±È`xT)”E3¬ðËKš@”<à(0‹Â‹œ…*Uæ‹òeÛ¤3Á!š÷5Û9®ïïGaðzaz»ž°^Íð“J,ôd¬Ïøí©uÒÆtQÉ’·DÇÄ'’Knò®\QÞ=ø)Kn&if 4@‰k°ë–âÅã½N°‡¹DŒÐ•”Póãf¸JI#*‹xQÝø²_’ïÊì&o+õF¤€Ì¼'_ßB ÏÏç”Ñ®z0Ï'¡iØ “—ù É9­‚ï¶´¢Õ‹JÆ:}‰Wúƒ)™¯¢L?Ô¿1ÙYzU*‡ êÀðµ]‘mÑ´&wÐØU(˜ÄDI'¥UB‹ƒì=b[sâ8JrŸ²,ýL§éÍ*•ßÃ&àìjñ%ö”Ài9x=nkðáuSÂ+©C9K¯xœãñªÞYFâØuirþ2”—Ö`K2Y‡íÈ.­$ÌÍím^Quž¦2Sž©wlf[äCE~ÓîôQ LzÁhd+"4 ö¢ÌöÓç—@»t 303JòlVÑ*Š8ÍåËWéÒO×:wÌ%Á \í¾”¿ÎÏKs#*¨…¾é`-¥¿e‰æ[g03½^¯hDÙwÐÌ0ûnX4޳ï€P '*#5NBÙÞDYØ5£7Q¶w\T£˜4Þ~<|Œú×Ý$É8 (×È-ÂúI%«|Yì8ÿc,Œ †a`HŽº®Ö…¸–5$(ÉDwqUÞÞ½Ú•f&tIÎÖ+jùöK]¼B7"WGüÅùm¶R™DÉÙ=,|<Íœâa\‰¥á1 ýóüÿqb™††8o‚òÎÏ¿\äŸìÔT„­ ¼=¨v`) âï0Ã}Xµ…°ãí"üáê ‡jÍÌá„t²M¦V( ðnÈ6©ùª|öÊ}¥Ä§D­ª\Z ¾ªv;±½Û½|0È‚EμÉ ¯/C,/d¬ÌÑÍ#ÏÑe¢É8±þeã1ª\ÜdÚaÚêó¡Øè^y¹¯ËV_£®Yûîvb`k,q3½´²)n-AÃIÊ{ö[Kߌ>R^3 i±mòŽÈm çâAܾqp æBõÉĬSs dT;=dÁ¥â!mOd7ò(Έ÷²FÚ¥L;ÌÁ#ó3amÂ̾†]謒¾P³êo%0hã*ñR‹8‡‡óã2€Ä8^ôðLt®\él[;ËøO OªˆéL¤àé¥ *‡ÌñÿÚ¾>Søål…¢G—÷ræù2±iM´œ0‹Q¯§µÙŽÓqÉà——v]^Ùá¥3P{QÇš ¼.n§ÝÛjzâ’¼îV Rô-š:ó‚60õ.}+çUÔ®€Už2UD«/ãij`¨ËI´q{®*ŸE™“ÊY)Š]ôb´›šñ‰§ðöq.CçpññëgøõtZ—óvÓ8Çr;ÊNö®6_'öY¤ØÑ \'HPE;eJœ(àÏvY]­«À½AË•+»StòTŠ8#È$q=dî(¹¹ô ¡OP¤víJ] Í(:7ÅŸž·iò#{á9²9fÊ!˜·»ËÀ›ççå9¹e¹ëÄI@L)"æe‰x8èŸÈcûR¸v […,€Ê¼ˆ„[_,* ’òÙËy 'ú;mÞ蛲7µ -:’(!)\µó$À‡ þÉÁdÎhž/iâ{‚ú!T …"W^>ãS垺H?uãVRú8[pO–ÑŕͯºÃ‡—M­Çnî rzц³0µWº4Ît½ËÊNÿ~*j)J¢äbî…ö6u½YÖ>´J¥‰ååA/M¾ç±–1oŒ0«œ`j„aú†ýjÁJEto(êïNh=©9_\H´Õ¡äÊùd6¥[ G‡×°Q©ÈþŠÑ‚z›¢ëc#é> cWGiû³è«_¸ÓwÊè¹É,h‰.Æê"]õ  „±äÛ§ðvDÁ²Í¶Â =ç¼–Àx²ÛbŽ¥|×í¨nÂÛ‘10vÐÁ.ÈÜ ¥ÏÂmýj]¢h ¾bý8¸ïãÎ`tèu)ò£7èDCëp¯>N•›ˆ0òHRâLˆ¦¢5*Pꢳü€¹M¡*‚}˜Ü=IBá›%›ÄF=½[òÂÑGE½7L@›?©š½a Þôq¬^£2HÈë« •4ºeæEº±<«˜1½Ô04LV€ÙˆÃ¦YλMѯd× Qe.A­¢ÙŠWn'ORõe¿xª@ËwÞTœ9‰é®E }š;‹‰¿‘ÁÅ–ÍÖ~Žb'–#ý=íͦ'1ni_R-j^&Ø6ý&±ìB ¼ö ·”x ïç)fÑ_x>ið´°?Aø@‹ÜÆFwz³ÌQf[ÅPS9">mòé—ÊùŒž[Nnz‘.Ÿ†ÀªŽ³“ßW¡#îj붯œr,®\™Å4àOAóŒãuåôÛŸý&G)µ)<­„SÏœš)Hî2¦½|b㥵#÷,¹<ò€Ã’HY“fz÷DeÄ•‘dˆxåbJ´ÇO¢AñÉT.·D“J±ä“lt<S£rÀÒv?É2í˜??I™õ+ºt'½MV~ÉŸ§TF3Äkiëd<#~»”²ãkÊÐÄgéuˆß÷®¦ÍÓgñÛÝï/¯*cŸEí—R¹w”n¹›‚¡á – ι컈]&—·H`…³I’äŠ(r¢ô³ ªF>ó²8®2_bz‚]ùC–䣫äˆáâï8™¬¸†M½õv5í„xqäÐTžA rÄæ°£_:Ð=ÑoònJÒPKXQŽ[w廥Ézc6K.‹X•ùªù’  ²E`p5eÌa¬Öãjøšø.¬Ä.$h_Ò¬Ä'{°ž '“®g×Ð1ˆà(%k§ 1póNhÂK Ž“–Ù¹^©+Æ€î3ôú¦We  ïX\ÌI”ç³ +ðÓդȠ™ÄÑä âáZÒÃp¢yVe~º–"_M`€¤âþ ñƒ€¥6©ºµ:bªøa_¯#ç4VoÍžŸ"óc>ÉdfžæIç}|./5^¡vc©ÇzÓäÍøÊ•—8N‚ªxAŸõhâ£2½á•+~Dx=XÈ,Ê~ö£6ûž;'– h·\#Mž±»+W¨²lƒÎ‰<—\ŠBrádŒTlœÄŸÈ7;hMøLeSï̽3-”° g*mrocbÌ,ruæöÛ±¼ Û›íÝŽwÒá³³!8²oì»&v1"SÌš¨èPEô¤5Tm_¾áPb¦Ó™n@ô@ê׊© ®~äålÖ8fÂ6FÜ Ì¢$ØuKfCÊ¿ìÖ‚%¯—™ñIô2Ú y+.±«™ß»Ü²Êäé]'ljxÝXHÛeÙ>k“#Š Ä%J$7ÏäæYŸ›Ìõ"¥™É‹9ÅQTÝé…†¦d¤ÆiES‚–¨«4IæchãX «Æ°ÑXµ]w¢‰Ð2ôO†;¦Uì05Œô à_À~{ߢ~qg:DW# ò´.`âÌá´¥RÁ%G+IY7‡Óº ™àIýÚâ”H{†V(ÒôlÔìÆ‚ :;žÒYï gÖû23ë :›23ÁAhŸ‰[Bê"¬¢Ä†ŠQ×™(ÅvÐüuΕú2©¤KÝÖTLMÄiiÃΤ+àY®‰eæ¥åÙ_ ëJ•å×-AŠ8¤T–Ry¼ìAjå/ ›ì­\¢L™ŒWJeÓÅŰªa15ý-gCýÎOñ¥•×à6ˆª$‰cÖ* ™‚WÖ/ÊS|ëE“í—ÙFpLR+*ðfÂm¼LîY,3Ñþ)_%7@Ÿ ó)3Š?¢ÙωoL1ÏG`sÒµ*§‰¤Ya–|ÑÂÿtôZ ›«¾tÕtéÜÓ{bÒð"ª_ u1ºÉX6ɶ06^}×èH–eúξ@þD ÿ=ÅÏ”`µ«¼H?ol›Ū,•ŠÝ +Ú‹DìÆï¸3ðUS våý ï«ú™‚nrë26É}äc sáð•\Ч,… h¥ï‚ØÔ“–‹½Ö«„yíäXd%&Ž“Ù÷Z¯8-‡P–ï´ÅÆ÷Ó݇<ô‘[lîÀ|Ëó¥—âW›%ÍÆ";;€—îˆ̈5Ø0ê Ø/¦¶ú%‰ë]–Àø"i¹#ú#lDzH½µ« òK×-{Ö.Ø‚ñ¥8ÕׄÐÔ~:R¢9¸ê2øìàÒ둽‹®Gö.¿ÙÓ¯G&®Gºt=rw=²›\¨‡©›^hǯE^*÷Ó¯E2ìà’k‘ýéÍ*×"ú©>¸øZ$mGìjz²kì_¹ò’³–ì3Nx9r_6ÎdþÓÖ‹ÅŒóŠLŸ|`÷•LÊai™¥>™Y ñ=eŠŠÓCw¦­T†zMݧ±Ð<í¥†‹PštÖZ/1ʾT(—Çúýd¿Ü>Ƚ í”EúŠ žbƒ’ÇO $æºèüªÓ…ßRçð®Y¹ ï€Ç#Ÿ®~\ÊË»fÅ,·JKŒ’…‚n·\^¢Ð.ix’Uã‘l>ˆã #}ÉÖÍÒî(iðü|W l¬Ôâ=K^LÌÌq[)1÷PŠð) Ú™d>›'C-/¨¨j•1BQ?IÎèü\‹A©0,ÂhHèÓ i=Zàô¶•dèß A®Dd` 8KfŒ>0<Û˜K¼ÔÓQÅù~™¼ &®§Ø%å,ZOM ¥ ƒ¡„ûÐB —Ê TãHÆCELß,Œ²Å ÁÄxðDïEâåý‰☹¥ Š™à÷—b™ùfpµë…ÓRâ®M'raã%CÄ+ÂįÈPç™øá8— |uùyì(ç1ÎNµè«…‹BŠ¥/ÒÜ}x™­™¾Ê€+°D/2†§¯²ˆ+ôJ±÷Ù•¬0¢S ]¡vrj egf ž¢…}&F‚w–$è%_ MíYGäï¶ßKùVòŽžäX)ÖÚhÀ( 7.w;b‡kü”õèö{è##Jðl€Ý:£Ó–¹hW³~œÊÕH’#õmœˆt€`(ΦÆ.ާz±ðì•Ï2l¨˜Dš¸J¼ÁÌïÉ’û“Hí$«1“*qOQ%’5?µÖ=ÊJ]°‘zÌ i¦âq9ç°¿õ¸0W®¼¬“¿šÖ¢žËÑó§Y`qÐ ³Kû—k/öRí –ü@tåÝ wRêní€ÍOºîÞT›ßöÞ"OÆ•OiÒ¤m~cðŸÿÂÑÑÚÄ”¤w¡#¨ÊR‰‹‡FçåOôg8Xzmî;’4$õ­L}~& î›äïv•S'Âò™ª5qÅhæwÛšÒÄ•ÝÌljÝ´ÖûR-µuE›)-h ßUŠÓÂ.wñn†;½ÎkG™õÜœPp‰b#Æ,~yyeEö½Jyz0A¤öø.ª@l …#kÑ?õ%ÛZ²MËTùùƒ}¯GQü}Ô~Eø¿…´©>¯KXSMX ÊŸÐ,WûÇ~ÿ´X¸õ +Øæe‘½^H¡ójã¢À†2áR&zàGFdø2¨z12Æz–²Fht?Z¤õXÄÃÝñº€ö´RFˆyŠóú˜!UÆÀÑþùyçZ]Í[Š7/Üçç@ŸH«F©FĽoñÃâü À€@‚ xû›î|òáriñf£ø‘U,?€ÕÁŽvU$##/§I–ã…ˆâ$oùÒEe޵æVÍö.6õQ¢„' äÐÚA&r˜q®øˆÒfÁÇ ‘7µ{TÆžRθÙÛ„x9p@y蟡ú”‹f^1†µÑw_¶_pçjšÕƒós´6 OpÆÔ/W®`|ü KâÙë+äÔ÷+·_Úg nÎuÑx®´ï@Þo„Ù^”å”èæ•(§î¨«=¥{úáâ'°“Åòü«ñø@ –×3´ÍÁÎ…˜d!sc òÖ5s¸n®lr8ÚøÆÁ{•ædåùìñß±ý?ÄÐÿãV^¶ûnN¦à·µMàê¦åŽŒ!ïÁ¡›vgŒ’%ûû ž x@ÙC},íCà6"RÃ]¹r¸x<èŒ"Ø^­kJ:lÆ-~jAò)\–Lušfuæ/˜ÚJ¤WºgȵŠ'§E#¹FP²v˜#‚‰Cùš TeÙlYØ·íæÄñJû}Î#³†ÇœÚRÞ¹ošeðõ\š?üü<è¤àþJVñLZ¶í"`4?”„·£ýnÑ`xÆô ©ÆÓIDÂÔ}gUPî°œ€²Š€D£ÁZú¢”HT0ôboÐÁ(Áj²áâu/x)r /Ǥ›y&“Æw,Wmê&§‘»£ô.³|ºèÎa*½C5¡.8ë÷èT·BÒHÄ”Ìë>ÅnÓ”ÿC7P¢†§p}C°!R×(Ä~Úá"Ìa䊿W®„Äj‹›kGí£o L,¹ö8”î~Iþ,C3híÇ¯à‡æF®ÃVî]wWz5¥.‘'£<Ìb¸6´ÈD 0¥µ‡ÇÄ2b±^Âéø‘|~‹„PØbfu{~aÇ-/? çKÏáßòréàäü{ÊË’…} ,,zF¿,·ýAä½£ ÈKq’©A±[- ÍÐb´2²rDG–•.—eàAž¥XK³s%dW^8 ÝìæIq¹(² ÑÆ¡;ÌŽ7É,=ÝÝ>عȣ …]hLD×ÞÅëŒÎöáÎ|iŽ!UÑÀË2ï&Ëà\xÁÍš™È„CN/˜_H&L2 rV@,<ïJ°à‹î¡GpÆE^nËióMe+±;(•?IJ+7=#íh4¨4CvóÊñ£´`¡uÀ÷Õ¼ë xY¦ùI¯EÚÃ¥o¾ËíÆFÊb­ðŸ«® kÅ1;=úŒ6Dæñ@è‡çþU@«$Ê›Áø4`+¢QTÀÏÈ)þts-&¼˜%ÎùÞ×è]¹¢œ ÝÚ,äT‚‹x¶‰&À¶+,ª´™iI¬ê±ª"&FT’à³×æè2/ÊÙ“•rºÛÑΖØÞÓÁvG˜À'©Ñ÷@~¡£Ö,jZ-¡æxO‚mÆÐ­b„ˆ…d30§¼ÛÅK0%I`˜M¦(u9lÑMÈ:¦p2¶ûCœÑV瀥/{Ñ„ &9 feÁt>bÎp„|;=ÔŸtF{‡>Io™òçSø‰ñn;0·Ï•ßø>Œ†§½@9"Â(.ÁÖXè›×OôE’Ïzïá ¿;ˆ†Cñ–·EzŒòSâî™ëH~sôBV‰¸g;P¨q-@#²ÐæƒW1èH´ãöKʃ.N]Џn÷YšÒ²7«hˆÞ" –n–]5¦ûˤ¹í›;i*Wõ­‚AéŸûŒ»¸/6IYÊ2Ý,·(_×Ié"sé3¬ò.…{‚{Ù€fK½ÏÜ V}ž–‡òw¿llÉßÀÝl"þ¨;{©vÏ!–6ÊãM¨ÁÒžºkrêüïá•+›å3Ù—±YnoÈÔGô[Í#êe—”úiTÚ0·ÈÊ~¸wèue–^éŒÏ&È,&'&QBî”jc§8V´ÎËcƒ+Z;Šò*ß-iuIæä«F‘³ÏçTú´”ß!Vò»‡¹£¼=¥#™S¥ø2:¥$9u×q†°8¡Ð*I®]¿°=%o;¼Ü³Ø ÂsÛ²MÓÀLJ¤¬ÀÀF ­L¨MœÒÄgëa«(+’u6NtàãM]¼{Õ×q㎼.µG’,ÅŠ¦GR–‘Fðè8¾ÑÃä÷Ç)ÖPjã¡EääÊÌRoïngˆîµ¶±¯bŽÃ?C $¼ä[ }YÓ/*g@™ce‡²˜øºc£ªVGoO¶p e{X˜ Nt0ÃÚA'‡m®?Ñ× ±`KÃcm¼¢`O oA¶¹tH²Ð1·½ƒ?¼.0þÛò—lF< å[¦x8‹"ËјÕêI­H­.ßFbEäšM^?ùcJz&½ç÷“?&Ñ;ÂMBÎð8§gï5І[túð_ød넺·8šòî©x÷´ý(…D®2¸1+ô!Ff½”)@ùÞø‹Ã{ï Ó nrTh"¿ §Qšª6¡=Š/.[X+ÝÚ"æõþ™h‰PÊÍTû,*,Z8+z%‚D×·&ãùV“^áx—Š)ÒËHå…›‚²­'”í¶» " Ê+ä{º.È Ð¯uNé—ömŽ ìáºj<}[I vk¬BmBCæ•Z„PY¦ N_•xð79ºÌMºâÐð@WAÉq(é#30éóPÍx[@$*î_;谔峛۷wÔ;À[H’ÑŒJŸ÷qÏqHw89¬BŸ•Ïî±›åܧ"}P™¹¢‡¸Ý¶‘#ÔÝÉËSx=¬c<Çû‹“ä ,èWô à¿)׿ô©6…[HqŒ“£I2;(COZUrÁÐT2üçŒS¹IÛË£jO6"BªÜ_Liœ˜£ZQκ€ÏRó)¹,‹’/òŠIc9ï¸Ú}Ëé«¢±A73HêS ‡çÞ~§°`î-þ-ò(ÝK"$¦uÝÛiÓ/ iRîw;ÀZ>ä5þÔ½+Õ_ œÂ÷>±ÕpFu2÷)ÝCâÞ†šrÖÝ›ü$4}w¥Š¯ØºGRؘª¡ ÝÒ%°øÄG3M¨¢ÌÂ:Yæ= >VêE¹ía!ñšü]¨æBéu¢ÔÎ2š´…LßÇIíÉNć«näDHB[HǨ4ÖK[»lú—·½`›™Æ™ÆçLöm½—¿êÔëÛ´¦ îËÏ^ßâ¼]z»UΰŠSexùš]PWëøMç!5â‚^ß+<§Æ>åÜOSKÀûø FÁ\—/’8·€$¤ÿNz¶ï¹¸ï/Ùí»ð€Æ³úqM‹ÈóëPX?•yí̯gŸ,4­^N™,OŽ& <“½d·5oFÚ’“*ó.kTîU”þP$-ÿ&T”YìŠÃ£]‰hàŸ'îæ"g“Ù||ëa¿ƒ6»Æ]÷>Z}]¿Þ?§Çü´ Å¢ÞêÖ=Ü!ÀÛlkŸÁoÖÎÃÃCw{vTÈQ‰À“ÈJ‰œ„âÅ#ãscÃØj+JƒòÙCæ Ÿ`ÜïAçdkàõ†q°_z\.Ÿ,ž@o'í'‹§ð÷´ à÷É<¡‰Ÿ§óîg“?OÒ²éÏÓQ 5^ŠŸÎ¹îÃm ~œŸÓ‹zQ‡å³ÏÙy=»ôxÑ7/zåOn´7ø}uº¥RéóïqjfyÁ¶«å¥J•ÚÞ¸j•Ï6æÝÆøx¯ÓJ È!ÓŒ×ÙV²bœ˜-×lo]}(CÀlad­··v\×…½}ÚÚР‚Ã#˜pz›,bÿ>‚µ ”¼"Ø^dÂáso¥ s‚¼ÎC¢Å@ÁÑyYBó˜Ï…¢fó@KMLe0ÀÇÒµ¢qÖ [IaV"k¥-ïøXæ7x@·*Ÿ-*ú fu0Ïx¼À jŸÒTfEã^¹M)yƒ/dy©w¡VuM ˜ôX©K×?Ñü8Ç óÛ3IZÌ!O66RWÚòýRùͤ6V)ÌéfùlS0Ó<;˜,Ý@¥ÜñFi«|vJ¶·Ðò@E ›¼³ˆëÞL™ò4ˆ|°˜¨¯yíñ…PUóžúøó–%Ë4Ë“ãx,Æñ¸” uãÍÄŠ'ÑV=Dž¦Xn?r¯cèúîÙ€,@ä‘`§·•4¤ÔÝl+3cÙBî¯1¬MÕáðŽ ÛP•ù›œFxVƒ5wÉ /¹Ö-l•ä’jŠy~”(óH‰¬tǨÂÚæÍ”î9´ þ´´%ÆóÔ‚¤&u-XHË„ˆdÙK…r$¥¸ŒTÇ+ñÏõeº›BÌÚ’ [·Sfµùõ-('@¹Â»¤¢ +i~°¥2G©L¥”x@÷Ö[8‰eÆ1Eú:ß+¥gCà•+êù9?/MˆÄW®¤¸¬,ïèÑcù"áˆ%RÑ&ÐËG—Í÷Ñ¥óÝt÷K€ø>&Pßâv°ˆw5å³-×ÇoËÅ<º8ÏM¿Ø•%Ó¸Ên¤ê®Â wRGŒ8¡LóFü1b;jaÊ 6&f™Y†…Çi‘ñ˜÷õQYSW$ˆ¬]# Ú½Tc½ ÄM¾Øi¿dýØFjÀñÈxÂ<†…¾YÚ„G#³Ë™=(uŸàx»éfdÒ4 Å4§t•G˜râ ±UVùñGÆ–8àè À™3ëß…š¾Yâ¾¼•£T×çeÜÉÌ…8êRà,ï®/¨ßÚÚš­#ŒÜQªoaxM…Џw”OÚ¢Þ!^4ÝÕFÚ±{3¹w‘­‰WOÓ:G%¡ë¾ ߥÀ¡ˆdNÔ‘ ¬’ýÐFŒHEp‡©ÏÂö”»/˜¶À¬SM9˜kîmA4}wU¼›_WÞ>Å’E4}u•_Í+‡àziÇ}Ë]OîðoÊßý²ñ©üÝ-·;mq7Å÷7%]À [î-¶=XÇ`ã;pÖ$Ö¸9Yã&^!ÀZ)5° ´À4Qá{Søæ)7UI“ (ÞÒÛ§;·µª·ÑÂ‹Ä ©Ä¹“ÎzŸ¶ŸÊ™«Bå a‹ne¨9¬Îyí\·aÃaÜ#gð[çç‰ ýžÜR½ò§Wa%oŸ»2è4ÕÿôÚú µ¯­‹ºü™«“Cý¨Í`5÷ÚMQJúsü”ºzG”¡'¹ZŠ®ÛÃç«%³ÍÔ ^ܺâÞZ°Ú7ççÓëCÌpùoéÝŽ¿{°×õíï C›¼$_Þ~4ðž7‚çÏ;½ ‹VÚoÕš×*ükÕ«&=[üŒÿU,Çù†e׬ªeU¬jõ¦U«ÙÕo¾ñ3é?1™äïÏÿ®Â¦:¡[LAîÿ•+Õ6ÃÀbP,ôÐ}ãÒb×>¸ŠÁ¡ Ã=ï ÂX†Á¨Hí£µ¾S,×Mñ£,ˆíä%Ž-ëûÌV©@m2 ƒèÙŒ”»[ð \»àFÚ',Œúäw6<Ž¢ýÅB±àuGn±XúýA8t‹•FݰjM£Vs «Y+.]8ZËš.ÆÈZèöw'œ·&XøY—~B•މáX•¦á8Ža7éW/N}b8°‡ÝÑLƒá¢9ƒh:¦aW-Ã2›Uî7.…=¹‡op:1 ÚºÓB8&mPØ‹@ºämŠY7 ëj½jX¶uI÷•‰Þ=¿ÓV4Â8†“kRX¸Íáá}h­;, b;DF!§3($ÍåŒÔn6 »R1*5X©ÆeûÕÌ…ž™!'g«?Ûð­•Jó2x±'Ü&°N3 ‹æ ¢Òdx©Õ¬ÀÅš—èœÐ‰QÜä÷pr äø[…~cä_2$?Ò0 ºžx‘³=u§J#kšµFVÄEèõs2¹<«ü¾€œ•’G:¬‚$éyÃq¬ºáT`Çðt×ê— §žs¬†³mÌÙ¨ºS£þ€ô.ï¿‘ë:½¸?ûHŒ‡/]WÇqŒfÀ}fþðð>±ˆ~žû‡ƒ z£q*-Le¥Y§QVKO\-Ø'–nÅŽ@„Eå XN÷pjÍÂí´,kx²¦lè e•¦RËj0 ³ð¹‘KÀT\ûàïÿûúÿwÿ/€WrÿaõK°Æðÿ ˜ ÿo#ÿo[õ÷üÿWñŸ]·Í:¬·ß"Ó´½†_ó-+jÔ£ŠG°Iïÿû9{þ‰`ˆxëÏ}|÷çßbFò¿íXU8øxþëfýýùÿjäÿ¹µ«[OÞ(àî>º~w}µP\XZzâ¬.-­m­>¿½uïnÁZ4 ddÓá(ÑKK7î Eáx||¼xì,ö»K[K'Ø–…•ÅÏ…‘Rs1…¨' Oö»=à#&›±šÍ&צ² =Ÿýhä‘+ãBôê°s$xóÞhãv#WBOnùu®ÜöЙwä>Úº¹À2ÁD#Ÿ/À§nçÚUOÀ…(bÉòMøÚ=¯ÓãxèíFbšW—<øTÌk/‡Z¬J›ÎÒŽ×xÄzZ[è:Ä mއÁèppQkrÒ⯘¶NZ,­eÒ_å6uué°Ë*wV_r[[rû ×<$æGøã£¥Þiáˆ~EåüÕFÉ´o¾^›²jQÛWuZÜ[Â¶Ê A¦î 0=ÌhLŠ5*¼ìZÄf 00¯\Kc*Ù¦in{½aáQwÐ ö ÷;4»Œ¢ÄÉ‚® }@9à%œb-\èÇû^çãù»£~ þì|/üÛ[€ÂÎ>üõàXw|ëa¹Åß~Ü.¨ºmÄâßÛ[`‰@ð2$zùŠk‹½þðà{÷ûíGoR¾GÀðP-ó&å#f\ÛBiOŠ@ð3Þ¤0ìÇ£cÀbíÂiÿä¤,4:tüÃQ„r!°GK@Löûa'>Åiè` ûC¼·Ç‡[÷îFC`¾„8Ó-<<Ž8(ÜåøVoX8À7Ã=t°ÖMĦDá&eª§X……¨ßqd ¶ìG´f`P%o„ã8Øx{Z@1$©·8möé$CŒ2Œ-ïõP&†6a–Çn·àGHÁâîQ€’…'ë[·<Ú*¬ÜZx²²±±rëiJŽöúð•B€a;}àK¡Y˜ÒÀëÁ±†‘ß»±±zʯ\_¿»¾õs}ëþÍÍÂÍ…•ÂÕ­õÕGwW6 m<|°yc±°E3.mL;4@F€Nh2í§°«C^$OD~ RQç¸ÎÜl^·ßÛ¥¹²Ú@,e»Ð‰Q¥`(êª4î™¶­F8–E£Pµ ˆ×{Ù…¥ßD¸Ù‰¡ñ›] lFáz8Ââ÷V ¦mYæ‚å˜VáÑæJgÆd-•h$÷ÈbMú^á Sq›‚üšõGš$®Ê$Þh/‘Ià=s“á§Z iáqüGè814˜“B;Ë_š maV•:¥ÌeØ<¯5‚JhÚ¨Õ̦åÕœzlÖŽEžï„MÁbf4މä÷F]ùv=²ÃjÓ Ò¨DÍJÏ^¥Þ¨6Ø‹ÞQW‰?Ód‰Œ$›öÄ»V¼¦ªL¸Œ$ Š–ZjÐPU­j=¸ò´z«Bñ)j3Kü–xC,(HMB3#ÇÇrvÂpIvõŽî×/½ÿI ž?Qà­î‚ßìþ×ù†i›Õºùþþç«øÏ¯8È®Õ<ËDFÏ Âf=®ÀSïU½¦ù÷ÿýÜ»ÿõö÷½/u⿬ýGµ^·ÞŸÿ¯Äþ#®Ö#ÇtÂÐjzU§7N=ò;ô*‘ÕxþÛ$æÂßZÿ§jU&ü?jïí?¾Zÿ‹À…éÃEe.vøV[[W웥›•Œ¿+ßfG”j³n4L£^w ˬ¿±¥úWèóP3mΤQ¯5gp™i¼sŸ‡zÓ"ûâf¥j85óÍ]v¾eîV£jX5Ûpª5Ãj\j^ý–xï4M„eÂ]>ŠÚ;÷2°«»ŠéÌpîê_±—A½Y#fÅœÁcgš—Á;søª!’‚áÔëö[;}Ë}pÍ*fƒÖl/£Ê·ÐçÁ®±kZ½>‹«Qí+ñxhÖ*´‡ˆÈÉ&þÌuxÈãÿ†dóü9“ÿ±øÓ?úûÖ¿÷£·øÿŸ^Ý~üÏÜÿßö¯WlýÆýµÿãõÿð×þì=ÿxÆuàŠœØ®qÔ0}3ª×8¨7¼jخʛ8^|þíšY­dýÿêïùÿ¯HÿûÞÿïëêÿWXë †£ÅÞ;ö½wì{ïØ÷Þ±ï½cß;rì{'Ž|ïÝÞ¾]no3s¨ïÖîRïµËˆ÷»p[S´ÒNrÝ´Òá|I׬YÖU„Ó½´°…Ë›À6ÄK:ö\÷¬7iözöòß2©VÎ3`rã¤Ìh"V\ݨ–Õ0ªÎeñÕþ+¶Y‹=«EfÝ £F5ªÆ~͉½ ¶à_+÷ÆkÒÁ°LË¨× ëÂÛ¾(ÜlÕ®çëÖÞlÆÃl½S»6ÙÛ>ØFó²PçÍ­×'›,Ë'¯mÃjÖ1l™aWª—LÛ¹|Ú™½nNÞš†U¯͆a5—ôg]ПÛ_cò®¹ýÁ2W ¿jŽ÷Þ·Üo©¨tØcŠz©³ÞóçÃt‡—µoå–G7ÊoéP'ºFZÿZjò¯ IwÄÝFÛæ.v©{k¹oƽðùsß;ä%ú•.QŽû…6±.øŽ^IO‹)ó £apÑ|ð;ÍæÚ”Ñb뵕Ð;ÀT…Ûýý>ÊçÑéÓFà¯cûô˜:E‰]º}ÔŽ:½h±À^Ò_á.~}60³w3ïÛ—ß²‹7eøíÛ•½¯Í®ìi»B¾ý)^’e¾H):éÄ_ hkO³Àrîðß”o|¾~“™¤²yï[o?ØzB{ðÛo<ó¼ö¾.Û²§nK˜E‰¯, ×—¯0Ë‘H_F|¼œ¿•˱÷µYŽ=m92`”ø-} àhŠ¥ö×°¦ -ã5«Ÿ“Î8é7Á­_”ý+G¸iS¾>{ )³Ç2mÇ·ét$> _§¥JÆ”]+þðm[¬¨v¼Þ·C4ÖG•'Æ÷5B¿lŠþ5‚.1  háÛo\%2_³eâ1å¬|ø¶-V’ëæk´Xé˜2‹%>|ëkÆòä3:—±7ßÒ5’Þ)_£UJ†”Y'áóíZ©Äýk´Té˜2k%>|ÛK%øuY¬©ñy2¡y¾òÅ’~î_£µJ†”Y*ámýU¯Ô‹ƒèëqðÄ@ĪàÓ·i-ö¾.k±§®EF!"J|å ¹nÈô³,ŠÚl—þŠ)Èû€cïÿûeÿØC2ýüÖÇýÁh“9™á[gÿ¹4ÿOÝ6ͬÿoý½ÿÏ{ûÿŸ“öÿ™cWx„‡ñ½À{€÷ï~.;LÏÅóµqxÇ™}Þñ¼’èiù­ÝìDÝð½ßÃ×Úïa:gþ­Oöspè/x#Œl«`SóöÙ~.evÞÖaÔscý¸€–…¡\­lb2«é úa’‘â^-..& °í·Hé3-•ÏG¾Ë¦î¡XôSÜ>VûÝ®ç÷EXİãí¼}Rudfò%Ý>rWçùóºþœÜL¦;|LTãZðQ("ôIPk¹ž5„À}Á÷Ù<)dˆ ½™ÍhÐYE³²¨­÷J„å0slôëhT ÇžÕÕ!46¯_6(2}Uƒ¢:FÙ54æ” ýµÎð%WÏ2¤}€-Àª°Ï»€*V+¬?˜:RtF©¶e£kƬ1§u3vfä=ä¦äÀ;.l®n®O£íVµnXMô­¨¨¾|„˜´ÊcÕ€1wÄÈìF#f®%Š@ÀÎ…¤ê!ì$äX¶üyohÈž|84ŒyÚ¥ 6뵊VB;h8QZõºKÖlÖj~¥ù.Ó.ÍÐÎ`-â‚U¬HPöá¡]wü â˜ÍjÕ6«FÝ%WGºý èÒ Ó&ã¹ÄýâÍvéM ÷xI Ã(èÄ@!¿³Ùå½1}¯Ó‹0J]u»Z ¼ yNì[ÕØöÌjÓ—À:C_o¬v=j4q% ë¾×šï7yÚ‘gÖ+žVÀw_¤^>×á?˜¾Ùþ¼ ˜"ò{}S¸ù20ÚŒ=«R­X–éÅŽ_«@‡vcÖVíF%hDïFgèëÍ`´Æ•À¬¾7ÃŠÕ œ0¨ø–9õȲ­xFU.ã«‚ÖËg аÂdX—Àí›íÙ›À-Œ󌽔‹8Y@žŽß¶¾ W[ÕÍ*üŘuÂóƒºïžcÙA'é]Âñ }½G5¯Y kŽÙ¨Âßz³Z¯EõfTk6jcúv# úUAðåó¸Š]»o¶Oo »8ˆ/ ´o H_÷D•ÓÔZšA”ܽ¨G‘h=¦Õ†Ã)ÙTé†d2†Nû‹Zž»½Á´¤JdZ@« ì[?ö†…ÝDÝúû”Þ A»Œí¢Î´EÖ¨rÌøÞËx²Kï@CÂ:IÕJág‘uÉô£=¡){oSòþ¿¯8þû Æ++Kì?ª¦mNĬ¿ÿøÞþãç¤ýGΩ+ðMß{+÷V ï­@Þ[¼·yoòÞ äç®ÈeüùÏP[ÙŸ/c‚m0gÜ`Ÿõý¸H›²‘C7¹lß©‰Hš§0_"=Ÿó E¾ö÷Á^Ón:•ª]¯5«NXi†u?ªW+~VâJ½á½Kµï }]¦öÍdüЫE‘UõcÏŒã†×+ºYŽ×¨G–Wišõâ5JÒó𮿗Bã óŽ“Q]¢ý}³íz£ÀoѾ7|)5™B+‰JËÃíì×oo S_æÚÂjšž†µÐk4}Øû ºEQ5°M«b;滄ßúzcømZaÍ®˜Ø®4Bh§U‚z­ÒðBË÷ëqE…ßM`7¿bؽ|ÎÃdT—Àî›mÕ5Ðj ÈŠ,s‚p̳o G_f'òªNà…ql†Aàǵ(p'®Ôj^³¼SœúB˜=ìôFµÊóÑWX— åéÀêÍVóÀ  JåEf©7Ýæ/Rõ:‹âz£Wš5ÛöC«;¾T-ßò›Õw R3ô… … ¾¯œ.ò÷Äo×*;—ÀÔ›-ç›ÀÔ½õ{7HÔø€õ¦›ýu¿aý——­«òžõ¢â…ãÎh¯Àãê(-äïY¥áОUíÊeƒœDß2<å Ë$"Vîåò*áÏZ½6ú´&ñgæŽ#ÅM~¨MŸHæNÎù°àõÂ^zâEÎy¯›&¬QŸ±[Ü‘M kÅŽe¤’&F¤DJÇ–7”FƒŽ~ÓiÎpôí|p~r§€ÐTÊg÷ÆgÞª6’SÆ.Ðï9êŸùü¿°f$ ”¹øbø­•ÿý·ìŒýw¥V7ßóÿ_ÅGÞ påñÖÆë÷×n|nÜÎ>˜šö°µm€ sÇø /ýŸünåG—`Ë +Žüf³^±­f3ðš~£Ro6Ìf’BÒ‚QŸÖF½ÕlÙú8{¾à„]i4<Ë©6íšÒFujÍÐ2£Z݆ú•¦ÖœÚjx^WëÓPÚ˜:—zÔl4€¥®×‚ZЈ°j7ƒÐñÍŠyQ#TÚ0§µÑm'†®µ†×l8A#°ýZÍŠàÿjͺ+mÔ¦µáŒÞòê±ÝpâFתAäÁ"W*:,*mT¦¶ÅQ-†“‡°–Õ· ö©j60ÇiPWÚ°§µÄ~'=ò*Žã…u³‡QäD »Ù¬EuÛRÚp¦µ:°¨ŽcV¥^³bZ½êT*• ý~VªfhÇ Këá­`)hØ.x3v‚0‚Ýc˜ µfݱmËÓz°Þ¦‡¨R‹ë–m;@š‚FµuP^¥ûQTµÓ{œf& Nî"ÏŒ¤œ\8›I9úAÈe›¨DˆÊ±@¥Y´s”á;ͪaü– Z ãØ²,³R©ÂŠùuØyµ5±á³ççj–¬4[>u®ä$•|–#¬6n4€+<{•z£Ú„ž´é:i_u J‘_o¡òc(¾U¬&­šU3=m^²ÒlöÅÒÊJ1‡®GÕÀ©×€¨ ®8€ãº>@êKK+wª’ýò¡W­4îùÏÂ.L§¾Úˆ4ëq£žÆÊd»z ⬆vêa=¬ùq À³™¦RÛJkgh]5ûHÙ`´ͪéãg7`‰´‡€Äí´®Q¯åV(à5`¥iÚuÏDV²æ‡—ÝRª;VNõ¦çȫ٠êÃ:œ`*qñº§öžSÛ‹{Vý Rw€ a+°_hƦֶ̜êqPóÀì6F‚ð€®›±Õ¨YU¿âõ¦:öÊdm˲ãŠAçõ ÚðlÓ¯Å@áðG(hVÔÎs«5”7cX6 \•ZÓV¬ù€/ä_5ª9 ò®ç ™vÐ4k~†ï™ ªë4ÕuwòªÇvò,ìPÐ9Nh† 'RW®™³r€¿"ß³¡.ˆN#‚-¯‚6"Àu¥º4V­â;ž g0†qÕ¨ ?C Ö0Œ¬z\SwÝΩ§ð/ðË€žàŒ‡6 ƒ³Ðª€ø¡öžSÔ¬„5;@¯øh,‡É¯:°UßÖ¦>YÛ®ÀB[à_hu8 Ø¾Ý°¬@ƒ3¯z +Õ €Í¢iWaÚfFRƒUˆ‹Ô¡çŒÝ®[×FÝ­¶Ä©4šÀ‡uÆPÓN[c²ºcÖª1L ˜aP‹A`¨E¸ Ûò­8¨ªƒÏÇKõz`[pè€è7#¯Ù4MÎ@½i*Õk9§Õ©Âs3X5è¶ §5ª{MاfûÓäà)§Ñ¨×fmàüF N™ã7A>ª8ÀUuÛj9çÅñl¯×›uX4`NÈcôÃrVAöÑöÍΩ^±j vΪWáÙ:i · V…êqµêyÕS€ §ÜtìÈÍÀ˜™°|8 ¨ —ƒé€2„‰âr ¿ U*À«ålVÕÓ^ÍšÀª*a5¹Ïv,®ùvШG¸fM=oˆè6+1@<ˆèC r·²«cƒ(Sußj9ÐTQCYw€Â€<ãÛÀòA‚¬_‹UÞ¢žs`B zoÆ~ àˆch**R+@×±†ª¬œÞCÀŦ² œºzÍ|áÁÜ+Í*ÈÁ K[ºF^uàl¼0‚^+N½$µ € »è{S 4YÀÉYº°Z­Ú®T­Uú!ð“ A[¦ l žöFÞÜÃd. ŽUàEQáÅé5Øv ³©çì;ê£|@‘5« <•Â1k›ëÃÊΫªG¦š3wÔô#ßp€ƒ®&ðCU@•& ¿phT˜¯ä éȱ p$5…©*`X«ò0@®§±&9ÌAT1A€ô`Éùwb3°Me€U­é$*çÀFÕŠ]ÇË”,pÑ&ˆCÍ8c [i¶’×{¸PyÓ®£¾©Ù!ªá©La5ç¼GÀ=ÂXë^£^qÌšòD3‰Âù[­zØDŒ´ 2§i6mt³7C˜7Ï@u<_Ó89ˆ6Šc¿`T€‘ š ¨ƒe;(SÔ}ÀþêÜs .¶,ÈK ‡h 5VÖétê)¬|²Š'ÿÕ€?ÃÿC  ÚªÃj+ŸW8öY°rÅ1àoìÔ^x£Pô90޶eZ ¨…âvPìÕà¬: Ûäì;Œ‰–Sßþ°fìŽÝhT€ÇT%™·¨òê  õJŒû X½ P?¡©`›–a¾E JUìªïÀé L*EZ Å„fäYp(zöÛôàÇM07ŠàÁƆ‘Ý ª!ÂЯ8zÍ·è¡Ü©4iWBÀºµ*ÆË€ØÖx65½ë­zÖ˳/ë[qµzШTê°b€ï«Ž©÷Ðx«@õ`SÆ‚TUüŠ¿èŽ,½ç-zŒLQ¸¿ 4švÓªxÀ˜¶Ó°@ºð3«ô6ÀTõ36ð+€Ê½J­´° \~pxñ2[]y‹ê–ßÀPè ó›(óÚ>ÚdÞ@º‰5LÙ´ò.5.í¡ÑÔÕ« 2…ÀqÃÓâ€Q¼ÇФL\¦·9h âm·@ ª4E»¡\±c =¡wQ}‹€}vÉ®j‹þÍF¸p$ ;Ô{¨½E!Fßòbh³,b 0xµÄ±¯“ÁLy; }E@p€Õð@»@·A2¡?T[°ó€1jÀd7ïÇ(ÇûqÃF}·ãW¼¦íkzÒro~i• rôžÞéÙЀÉÊ|y~ä ´Ï4×]oß›¸·¬M|úˆMÜ ë–mYu Z! {ÀÀ1pnp˜ß§ÐPËi™ý°ŠÈ5 SÚPΪSþ0H£7ëJuS©ž¹º¬O|zƒÕµ¥º¦X*^÷U,º¨¯þ©Ö«a£REÛú´º6°Ü âñuû¾×U¶HlEÞ{íËs_ÿf©ßý›­~ õoŽö-е.kêǨw¸¯~¬hdê2þXU?Æz—ZE„9õ³>ÿÉÏÙú|ò Äz{¢À®^À™(p ˜ÿó¡^@›ü®>yíÛžþM[îý› -Ï3pÑP¿aõ³6õ\'–•ÓÜÃ2½qyY¼ž¯·k×l aUÏi˜:öVVxwÅö¥!t—6bnÓ¯ ãjx!Q³,àkm@§Ð`Ckp¦ZxäíFTêäž\ Å€µåަÚ`u¦ö¬jֳŮ{ ÛÄ5§lH`ÖÂ(Š«J{µ™Ú³«¤µ¯Yqµ |ÝÏ[6ŠlKðl ‚™MÓ£°f[¾ `bÔ‚Åu_m°9Sƒ± vXoVìJP]±@¨ñ*À×£Õ½r]ÐTî²à¨A(† ƒ‹«^H¯N`ÁPŠÚàLí±)?ˆLš¦kúµf£¶¬¦á†`v.k°Ú Ø7õ°÷L; àf7õšß0+êžð]𥠤E Èe~Xï&Þï:–×êA„DIáLKX¯Ú ˜Õ¨›S mäc°åaXÖj) 뫂 $ßNo=ŒB8ÐÕz­ÚÀ¡Âµ¨œéÔÑõ†DQØhFN³é8!Hæœg3nX5G°3Kƒž€\l¬ªÅšìUhNÍ6«uÇW'F–0 p^³V«ÇÍH=¢³´7#YÆöš³´×´Ð§oh€(™€*Ñ3É÷juß´¬ÐQA³ò.Úój (XÌýQúa=üˆy³ ©øÊl€yy—ÐàÙØ‚ÿ5"#4 EÍ¡¨ÛZ—Î;é²aWkpàx×NÓ©‡õ ¬D1H0x%W¯h]Úï¤Ë¨æ…~Õ šÀ¶x~„‰î*p4ìf³éé³´ÞM—õ nV¢ºÔ€¶ª~P‰½zhÇ>Ô«U<­Ë™ÀÇk†@%ƒ •¦T!2ã u@€ºTp¼XÝ{3.‘œiQfä©Á™ÀFFvùV'ªW|+h‘IXõñ) VßE{ §q5ª¯äXÈu…hSP¯U›@miVÚ»é2jDÀþúÍZÔ›Q³Öˆ"-€“¦ç×=KëòÝÌ,Ø#+BSn(¡ùJÂi7bæ´C_ 6/ﲉô½iWêM³R±š€oÐŒ7¬GŠ¡àµ.wÒeò£W5} 2 õ#Õ:…ciáŒíŠÖ¥ýNºÄ¬çu8@Í™ ¡E' Ó +ÍZØhøZ—æ»é2®;ÕLÀCÈßv ]€‘n8 ;Wtð™é‡> ¹WÑ)¨Ø¾Sù»V5ÅDa«gÀ~íy@‡Èå^Ã6d.3©Ä~Û®;N¬®š=ãª]Öe­תvÔˆ‰ü*šÚWÖ¨ž‡õU­KëÝtA!ZrZè2Öpœ:ààá*(4Õ´e}G rtlеHð·òd„"ßα®u9Ó¡›Q,Nu¼—´WA^ÌJ ·Ù¬ù!: ÄFu Ä¥½Ú»hÏÎÕ‚…«£s³SåێݬUPÅ×TšW›mã/í²Ù¬4jví[6à×®iÂjÙ >3Öº¼¼s®^P¥ðÁ¸ý>rÌ×'þ«¸ÿ“Á¿lØ7‹ÿJñ_êïã¿~EÃv3Œƒjûcê(¬ÔÌz¥hßÞŸŸƒç22Ÿ@½Ýwþk L+翆ù­Zýýùÿ*þûÍïßúÎ~9Rßï\¿½¶¿þ÷«ÁwÀ¿¿ã–›ðþ§·Ö¾ñoðÿ¾ïÿ³ß %ûëk+['ÿ›û»ã‡[~å¿ó/þ_ÿÖwüåßò»~Ë_ü WþÔ•¿ö—¿kî¬þíß·xÿïýÕ½ýK¿¯ú=ö—<ý¿®ýÍßúÛî9ûî¿õ‹~Íý[þá§¿ßn|Øú +ßùçÚO|ï÷}×ÿìóÿòÎ÷}×G~ïò¿÷Ïÿð?û{÷rü§ÎÿÜÿVçOÿËß;ü©ÿü/-ÿâ¿öô¡ùCßý ^ÿþûO¾÷?þã¥øõ¿â»ÿùïü`þÿñÿÚ_üü¹Ÿþ©_ñú£ä²â ÷×ïïߘûøã¿ôOþ¤ÿÿüÓ?ï/ý¶ucã—=þÏ­Gü—ÿÉ?ÿç777ÿÇwÿÌú££èßÿ£/dñÿûøÆü =zôßþàÙþW†,þž¿ó}ø—õ~þ ëØKí~ÿãïÿã'?úøŸYW~ññ§ÿôÿÔöÿ»ÿÛwÿ™þ=ýýÀƒkÿú?ýƒ¿éýæŸü§?²ýwê‡þ¿â/ÿµ¿ö~ãwþŠ?|ôc_ü³¿÷ƒ¿âð~àoüŽÿÃßÿýßÿãùÃß~÷éwþýæ_ý;ûêüîzÿOüäï¨ýø¿üï~õößýøÿ’ŸüÉŸ<ù‰¿^ÿñÿK¿ò/üõ¿þgÿòŸÿñàð7Þý[ÿŸ¿ð‹— Å¢ÿW_|÷öþÆ?ò~Ï¿ÚØüì³_óþAø臊õúÿôGþÐó¿ô/þ…ùS?ö£¿éOþÉÆúþÀòþÀíýë‡ÛÛ¿åÞï®ÍÕjÿîéééwÿò_þËþƯþéŸü‘Ûwî\ïvû¿÷jùßûs¿ê§[|ðÁ/ù•¿ò·ÿú_ÿó¿ë»¾ë?ÜÛûå¯ü•oüGÿê_ŒŽŽþ×û¿è»?ü{oÀúýÚ_ûk¿oë“?²ÿ£µ¿ù·þÖÓŸü;ÿçÿ¾ö/O¾øƒÿîáá!´øËþ‘wþÇãñÁpøë`ªÝü7~ùÑ¿ùŽúýèÏþùßëžýŽßù;Ýó_õ¯ÿíçÿñ¿ù}·~ü'~xù÷}ß÷}ãì§þÙõÿ·¿º÷7ÿÐûcßÕÿ3?þƒÁà¿þ;ç·>Xþé­ÆüÿÙ»ò°&®=еܱ*Š ¦±,‚!dODPvƒ@Ù\&É"ÙÌÂâRûTP+‚Öâò((¶T)‚heqA±*¨,‚bU´.à¾`Áw'“H¢<ƒÓ–¿ú}ð%™¹÷7çž{ïïÜ™Læ44¬Yi4ŒºÏÚÆæóä‰NKÇ„ÊêêÕ¾»\}|9½º5"óÑ“›§nìÏpð¹o^ö쬳iŒa Æ:ÄܟþéSF/ˆëg“:°_¿~ ‡”9þ¥®{ž³{·IUVVÖñººQg¶=—//•¾~~¯¦òìÙUÞY+¼³\ø|KßíN¢ývrQgggBNÀæ?~Òó犜Œ½¡W7/ô™={upNÂáÇ/l-((X“”ô©Áœêt‹ÓÅ£R½-šŽÞÉXr¾¦¦¿±±±IrJ)¡þÑÓ?Δ-Ë `àg=ÒpYÞüƒêÃ?¿.ºXxô¨9èÖóQÔó÷ÅϪÎM÷¤œ·øHü³ÛÛÆK¤R“òòòÇOŸ~"}Öï`UºELéþ…¸èÊåË×ïÜ1 ¿ûbñ?³|¶LiK£D&K—7»¥øÛ¤Þly±xå×õ…¹yyó$% [,ÐØØXDmä(çýrîäÉçÊ›÷ ÝÏ[+ ¯’G®½Z>74tM[[ÌÂB¼••Ñ… Ö$''‚nòô4šêààÀ©½«&³¤dÂhâ7±ØÎ|Ùsÿu)£FJxýz)Àþnݹ3îù¸1cò6“wîÄŸ8uªüÔ)#‘HT6=zM(»pmÅBGùíÁ›íÂlÆoyÖ4‡ó>vHÙú¸%g/'"ÂÀ6$Ï Tƒ¥¥ÍÌÌ·µy,^~œì‘¾ºlS|ÆÀ„²ûGŽ‚9ÂßÛ\–ÙfX)èH›T·P°`ÂÆ’þ?# þîÌ‘©¡5/^¿woí÷ßþ~ÄìWþ¹æuÉø~€Úâ9†&œ¡ ©Ò•eÞÅÎE“Igæ7 ágq'2€4¸W›%(Og×¼ÖênJ!ûâöå‡vÔ °¥ÌL¹=s ~»Åú±(¯òÁdÛœS› FÒ{yµY•CJ”î"µ¥G-p†ZÇûçv—¾j§ç†oOINžžÐÁ'EH9Ò4ø²cçóå6î“ýrfÓ¦€Ó]6…óz#ez»ýŸ£¥oÚ‹— d²&ÿ|À޵>&òžµÔ¤ªêö.ÿLƒæfÓÙþîOÝ¡vk}¤\j‘ågm2|¸ñòåÛ'ïñΰÞStººzÜ›®—Ÿ0Ò¾Þ+ À‘žŸœ‡ì¢oØ:F|€?Aòàòùl[ °ÅdĈVV7³1Á¯dCøÕmvؼÊÌ¿üMQ‘ÃËÅÅc|ïܵްÁä ÿ §®PÁÆU«¤?JðÏJ=Š5n£NK¨óÎ=4,/²ªÃÎÎ7´¤Ý).®Ø;4õˆ_¨èD]ÝgÑõMF£GG«¬´þüó2‹<ïàÈ#G)/ÿÑà›m”«ù÷ü£NJ¨KÜL¨9v¥ãö™®öÐVRùœæoo¹Ó—ôooo·§R¿Tš…–,ž<¡câ¹4»ð£S”,W¤¥¥ý‘8~;´µµõ†ñ¸Ê²òÈÌÜáÒØÒoŸÝ©ö z»*}û:S¯°Dv¥åž$Ò”¹ŒåwªRüégï°ãì;ÕÛc×#æeÒÞí]ßï\ k)Ù K–šû‡²ýlR¶Ì˜µ#ÿ¿@S&)œX%WÿË/6«Ž_½:aìzÃ?þøÃÀ `îƒâÖ¼ÃÒ'ÍîIÉÉÍ%/w9ÓxÚ´i&¦¦‰ÄÒ×#~8¹nt9¨trû²¶mRßL¿ëW$¥î8[Û'OÏË««‡€0 ›†· ›0uÕ±c3þloç¼éêŒÙúY•ý¶Ý{öð‚‹†Gt´=ধ§ßRÌ2[vðIM@`à l‰ÄHdOšä(4v½GÔÍGª3âo›Õ_¸p|èD§³üê ‘}UK]NãÆIž¡11ôy…B³h±˜?Ún~ž³MÏûGT;¾”$Â3Åvrr*"OH"UT¥;œÿ±g:Ç×îŒ Nõ>ùû²—amÕÓßä_¸àó¢%èFÓŸ&ŸýúèhGÕŽG`eF<ðêÞ®í¡Ë—O7aL£Ñ —õËOL4¬Ãuvv.UŒéË5BbAII:©¢¡²rMc!ç–i½àðàÝ»wÏàr'ݮޞe¯Û[÷Z^éìêxz¤á1å Aeºº¾þÒÒ’sïbÖŸ×WKj72ºÖdÙP_Ÿ¸äQIó¨ô†Ë:šá§Ÿ|sº:–íYc R £Á% RÀâï§Ÿ~Ú*d,ïZ Öcf㣣¢LÄVVV\@-ˆäÀAƒÖ·Wo]ô¬¦¿Mêo×íÌÊ:ÉYÿ¼-5ŒõãÍÇþÓÿnK‹KHÈhCCÃÁU/_¼èg@&“ó5–?LU]zìD}GGGé¢EÇ ¢/åƒÕ²Á±ºœõæD ž@e‹¥7>™;oÞÆÔTXú{mжY¸.'‚ÅÊs‹ŸÞò*M¸ÝÒò›‹«ëú¬qta„¹¹ùž‚‚ÔõIIù+V|b:~üY~Õ§ñx|¨RYŸøúî) ?°ä Wc¯óöö ÕuII¼$³¼eFFFëˆG+¿÷¶¨‰¢Þo#222Ê^­}3jóÃy®âèàÆ×¦ÇÁð^݈òž3Ç uø˜1ÆQbq7Å‘_'‹Ø_ÑV“¸ª²yDaVMŒ™}Ý/997nüÏÇb°áÁ0X+·ì/vÒñ±W¥¤ Ë^só¡YkÁÐñ3 á=óêçyh„ëê¡^a†—îþö~jÝϘ‘é·#;{›ÍØÒì7þÅê/7}‘–ïôøXÿ¡OZWŽ_¿eË–Z‹†$aÙÔèú)Ù>¸èî|\þÙŒìZwN›®‰¦™Ì ¯š36/w_·<—ˆÿüùÿÛdžÿE}×ÿ(TÚ;þ/tùßç?÷­ÿˇ½OP˜–ùð“éûæÁô*W¹gôïCéÿêüWÛhgó÷Ïò,2ºÖóßIªùOù×ÿ©oæÿn³]çø¹ãîÅù¹ÌòrÅá DbÅ•Ht tÃ…Î dÏ‘ììq2H, ¿Iƒ„D¢»/§í^KQWãX$¤²ú-A¡UÓŽ§à!ÙBuÀ8‘P,wì! ‰Åb¡µUeaˆ^D°Â!e ð"¥ Fíè#Vã¥0^ã@Šú¾¢•{`9¬p ô 0U9á½ ¡„ g‚«D$…ŽP;Ž—»#«»Ž: ¢Nž¨Ë­ºœj¸©vÚTÕP¥2§îé…S½h¬ÔþW8ëî“qÎ~^Sqïä>Õ$´‹Â}¥šƒ8ÄÛd˜»Š£ÕyUqäv\¹xž .¦ñBXà #?ARS‚@À¡–¹Ú{B1ºUí*ºp‘–ÅÛ-Tùð¢{zW‘/–ÃêŸ4¾S[ ¯Úcâo… tA°ÆY †) ìµ?ª&âÃú¥µÆæw²N^¼µ@,P @ì‘';¨ÊÄ ÄK!OýÐ3M¢Á!ÞÔª€,¡jøT.sPqˆP#‡Ê$ˆñ˜Êâ¯)®HÂ|PÉÞŽ‹ÐZ¸·ÐÔõ™ÿèÉŠDR›[#f×:•ˆ¹3Þ‰lG³cn»Ñ£®»ÈiœÊyÑØðj¬±Õö¼û°˜§¶ÂÓrJFvh› ãtsÆþXËPY&‰%½õSFò…ÆXX)Ôڊܨ¡Þ¡22vzkT¬íH¬j°ˆQü HXÝL]+äwbHA9¹NŒÔ¢©;Œ¼7qÞ±}PÇr ô•ÊÅY)ûP4M£¹J™ LB|wt­ßi«#«<¥z …º)k÷¬.ådÊÉÉyÏHÐ6"½áJçÇËê(žè¶Þ´HËÉ$Ý™-ð`hçÛ6*™&á4{»7áß%ˆ€dN 'ïn׸†Ë»¹Ñ."sßXõÁém'èÌ´w;F. Hö6QD’Å¥–ä°ÌÞ©b‰vÀãÔGí©q„(HÌÓ4H›(½‰ÿý´¯ù¡¿õä%ˆøB1 õÖVX‡[M±²šì°LW4íÓ2\Ç«7«[€f‘î^ÐÙ¬JÓïTPoÓ]Œ  ía€ qÞŽÍüêîÅî1Ù“Sš“§Dc ©¡5g”ðQÍQ^5XµÂóeP¤¿Z[ª.Ú„ªS <:ÒUÉZ«œX‚wBº™¤žꜮn݇ƒ’éJ¦ëÕ.&El2%\X.‹I§I>H°|\x¸§ßÌÙ³Éá^³ÜÃg†‡¿¥½ÄЈÑk@ ¨÷—1õbb¡¥'(«÷´«|Taœ¥Pá ˆÀø¶ŒT8|T)öFC±Ç„µà‚GÏH§`鲞 äéè@çJ…J9òÿq­£èBùÿ@¢áøX‰ œ~‚´ ËÄê‚82r… ¬D€µHJ–‹”…ƒ+ú¢©°¤—P©z R{ÍX ø8 QÚ¹šÿˆ6Úœâlˆ=•Ö ûqÄÓô´††eXéI úÇæ+O¿p¶Û=<04P­ßhß©¤X*DÖ¬Ú}ÙK˜zÒ*…fˆs°LHÉHˆ±P ”zr-…‰e€sˆJ,Õ‰q‹§žôMaaÅéçëÙN©8Jªž´NµÇŒÒ“Ý#›¨k/X]FÊ x$ÅZOî§’0ƒöÓZ*ˆÃˆY´PÉØ‡ƒÌ+ÏzTˆJÁŠÙÛÏÝó}Ì ¥0¦1¬G¨TÌéÕËÃã}˜ Ÿ¦i¡Ò°Âtaûõ08"L}®G«¨˜µÊ?ÈËÕ'¼S£Œ§Îâ"¥€¬I±`Õ#XTÌ‚åì¥Ã(Š5Ž ’«ÞaÁªG¶¨˜eË5 gÙâBà£xQõˆ•…-ùh¹22´4="FÃ,bA¾>¾³C|».R©PÀU±%\¬ €•4 ‰°€Ö#b4Ì"æ꥓µ´AÇ'8b«G¿h˜õ‹íGéaq(¦4=’EÃ,Y³=uW]:C!V=ºEì[!lç(#ÄŠ ,8õ ³p9åÑ#NHŽiˆê‘.ûÕ]® r€uˆêQ-Ú_P-×™n=À$+°ÀÔ#X4ìçY!=KÉ%b-L: Gµh˜UËùÿh,€O€dX$–®G´èö®40>$* ¤vÍ\¦žqX| ……<ôA¥P)dä)d™B#3h¥‚È ¡ßªè½…|OíñRT÷å*±Rô‘מä>j.D£P¸\.ŸÁd¸“˜d*™Æ·ç Ïíç«ù ¿Ç‡zÔàºÁp%¼ ·ª ÙÈ]/á~îÁ^î!¶)Ýß飖ÒWÔBL…ʃxT˜Â!Û“©\>†`“ÏãÀ,ª=¥–Ò7Ôê£C­ïì¶ó, ³½¥–ÚWÔòY<˜CæÓ(t˜FçÑiT:™Âã†Æ%ƒ.¥–Ú7Ôê£Cm€óÛûÔ2úŠZ&Ìà“™ :ÝžL!Éž Ña •OePi|‰†RËèjõƒÑ¡Ö9ÈÍkv7¹½¤–ÙWÔòø\  ‹B#ñ˜ö|:F¢ry$Š=yÂJ-³o¨ÕF‡ZäÜKkØö’ZVŸÉŸSù\•k'™OeqH4 ‹G'Á.ƒD¥–ÕG2¦Œµl÷@g7ç@g\¯©eêYe1uWYËþÖâ\UwW!÷³ wo"@z¹cê¹:ÀÄòõ&óïšÂ0•Kf ¶Ä,Øy\Dåp) “ŒøÑ0©è e2ÿÇÞµ‡H–õÞeÉÆ]7FDĬ›‰IfÛîžó¸ç5³Î2»3›mv²;ÎLD]×Úóì®êª¶ªzzZ|„B"ˆ I@ÑŠA„ÈŠà3ÿÿXW#†(B4ø‡ ¸ˆ~çVUwuuw{oUõÎÆ©Ýé÷œïþÎw¾×ùÎwÞdëPªSz\íe–ðbÁƒ¸ J°ÖX L9Ÿi5bFÓêÒSO]¹qc8¹>ôüõ®,¹:-ˆ¥dÅ;µ²‚Ãuñ _ Ö¯s,Ï* Vèt Ns ÄO_·gÊCŒO â ÐNXÐxFkÍ0eVKÊ¢1,¥ˆñé@œ&戟¹ôÜå«W®5Dyˆ±MEfPiYy $.Ù€¨¨*T"ä©h U¡±I5%69ž¬ñôú}èÊùLo7³­˜ØœŸí´{ÅÂäZ6Ê Ìº¾¿Óm7dƒÍO½,‚Û[Kò(G:«gÒ{ƒi,»qc»QÜÒö»6çàuvгååØìceqJ°:&‹Å QÁs8r¼sžRëŒ:PùC85B·³Õn„×p𦇯)¸Ò€Ò t±€J‘[g…eÈ•sŸ¯¸P¹æ8ž;ŽtsÌœ¤ó“ØÙòºi5i\”«<1VùbÇÊjb„wÂa£p¾GL€„Ð1Ñ…¢U7Êüy ‰J2‚%`b‹…ISŠ,'–Åê»Ê"¦¹šb‚DBó˜vÚG€:E˜x&¾`nŠyN Ì.G\RÄç,h.‘µ0…®÷ìtŠ0‰L¢Žº—‰Fåb±7$X‚ˆqÚH†¨6ÌYM%eÂ…Ç€Èûžï7"ÝcøÏŽýÊ – í´{ýjnT¶©+=˜ £«ÅâΤÉsRë\9¢Ne=ͳ*Ș‡0Â}ã.Ç}¹î$a3“:63IØÌdÁ6³AVYñåðS;„¹wLK¤báð$ÚjnùâøàÁˆÞe“hŸºÒ#š0ÄÉ‚ ñ<ÇÌÉã#Òq‹(AX:£Tp4xx&ÝÍà/×?a´Zg:%¬K²`ëÒ“x6 qX Å„Å(‡rE˜wV1=1â>Š¡pœÇpö‹1Ȳ¢ÝÒã°4É‚-M£gñŒÁ=Mñ\>“#F u^#ä&&Áb [®YÂêœÜ`_®Ñ„6m“ü\LYŠ%ã`ÈjlP0ÜóÜ ®™Î…‰G˜Œƒó}oÈ£Ó·j»ø1Y°*(hOîãâç{3C5Ê"Ʊx“v/ïô¶P#tºÐ"b Ó‘,Øt4àI ¸Â |IÉ­BàObkqZÆåIÓ±aöæ Ô§Õë3»¹éáÉGyB½l»Û1Ú´ö²]ßõY§ÛÜh¶u Þ7c.ç]‘9ßtáó¶˜O²Vø„!8­ÄÈ8ñÏtvýí¸ì1X€¯FC´šV>dœ†,[-ªµ´½‹Œmt:îpé±Jd%ê…àiõBŽ’ÕìeÆ7Û…s»ÙÙée»z/f+ôbº….ê¡U£0a)L+rpAÛ>ü¡ûÙXíÌM)÷íÌ߉e6â#fÍ~oŸ÷ªÐÃÓªƒ&:Ëz{[¦ÓêaÏën/;»Óî7[Aˆ­"þX5Ê*sZ I8;;qj®nvⴠݢfžëÊg ê²þ-½ÓvÈ[ÕhMhš‡H‚™™‹—÷c ç?g.f‡:Ù½¸¹2ˆi¯FÕÇãŸÝ6 Í—_}ö@ËŒÜÄÂfÉ¢Jsôj£iÏç±”Q=8çP§¥Þ‹¬3WÆÚ7õ`Lo:ªRõLå¸2^}„+ç¿tŽ£-vRël즎‰®e3°m±,Vï9Ô÷\„(­_UtYJ†bºrß"P¬Y/pe]Ó·k T{7x¹ù?vÓ!10ÔNñÒàfÑGåuñLïÛ®çl›Á+‚:¼ó8dlíÛÖ7ogƒmÛ³ ·†Ô©DðZs}–ìòrÈOÞ™0¸rÄgu3ºí'lÏ0RÕžé=KuŒ®z¡JZº£[ŽA¸¡g°Ÿgæ.6 ÕC4½¯¯¢3l,ÏÚû·%øzl»ß +¶@›,Y¬v!6Yý¹³Xja0¦‹€/Æz¥ÇgA0_˜O›.Œ¹ŸvÖrœ³8¶%â“1òÆð ðiH”Š«ŸèX’¬7:‚}ß•¬î|'·IÖq¾gÚ{YN¼OÞYÒ)/k„£Ú¢<½²¢sÚ›YÚ›˜3ƼvÈ(]­ƕ뭕vnŽú33ÙÆµ…{za ØfÜšXÞD>të!HGžÇ°|çp9¸(0YxäÅ*î ˆS\;L”®.S'ä^«dM50e1ÏìáñÚq£t‘—:F\ýÊ1¼¼’þÈ|Ü‘ú!ù9œø²;ºî93³XÒ¢¶Ìe­cTN-ÇœñêSXlcªö¤Og·Ô€³FÊLÉÉ/Ÿ¢£I$Ã\“á›ýT’&¬v”']¸¦Î”®W §B„gzÜly³2®À‰…IË{‚U+íÏâÒ²……Ò§¿,"<0ã™33@)kǪÒYßuZõTòrs­¸|®þ¯âO×±¨ÝŒÅ1Ê‹¬©~̸‰}’;³<³?£jk‰tsÏ»FrtÉPFqýå2’ú˸é}5 ®¾y¢¤\€«Á{h«ÄøÃ3`*ÈÂÂÚ QK'­t2¶Çß1=ÜéêÁì )E ÊjÛæé"äu‚ÈU+›—cX¸¸BþÖzÛ‚UÞóÜæ»¾mãVñXb£ØŸ2çœ.^ý0Y<ºŽñ^«"uùhH‰0Ó¬§ªŸ,›._'XZ½}9<‹Ë+0öešŒ-é¢"Q 4W´°ŒÈž*¬ondtܤ»éw³N»ØßÛ†VB3–ŽŠhÍ"Á®ã©ÖsQ?ëg–ØÐ„ð¼yÏêj@¿ÅÙêêűmQd¤ß‹_h¯¿|?,Šækw"‡oÇ¿‹¯"¡•¶¾½º­û›gFdÃÅûA“M—5{YÛûQ…¯~×ûbGÅ ÞS´—eï´â/ø£ÕkË·üÖøé¾5Ú^åšÝFN ï‘@ÎKæ‹TÐ6`ø‰‡XàÜj^,ÛÅq“`¿µ!ïì7:Iü2p }Æ9Ö2{ Û4¿ÙïoŸ?wnwwwÍuîìmøöZ§»q®Ùvþΰ¯Á Í­‰V³^×û¶Ûg2Ýêïræ\±©%Ãkr £lDßãç"Èû|b:n/þŽ]]|hé®{ÔíZÕÛÍ‘s£bá‹Õf;tV[Í^?Î˽:}€‹ .~cÁPñÞ_ž/a ŌL–âæL—²¥·Òkø0û¿ß"¯Û`È Ç»Ç»Ç»1ïìûz¡˜/dg>xí|½ßžYÉΜÌ"ÃEÀ/¨ÊÓ&—àÌŸK…õV0m´wZ­ìÅ•£í_…–ÊôaÀù9D¶ sb— „!BîÔ'õa™öÇPÐ G´´Èš˜È…ÖÎ"m жݸöüõ›çžîÊ|ãɹÐàÊ¥†ª!>6†GrФ•Óh¸¼~ãÙùµT€‡§-æhÊ¥ 9aM6ˆk7¯­_› ŒOmn…TØçD‚‰ŽöˆRªuð:1ðãú•§nΕ˜iO°¡ÈILwˆ[Àkê™Ã4Iϧn¬Ï…¾PØ"à<·AäÁ«j¯A ‘B :^“ à¥H¾ØÕݽÆhQ± }œ0§C°LYœÑŠ7‚ÀþPü¨0:ÒmÙ®”ÄÈ£•U’‡ÜaDlÐç +.ÑUa=–éJP®”P\x‡Œ3D[¤mLŸ!.0Z¦«~Ii+Pà̃£©™Â ½]ÐŒXêá™#.OtU46¨–éÍÔñ9rà× a¬Bp„;ë¨6*Ó[á’–éŒ( ã”+…§ÀÒrK±Á‘àt™ÎâÖ¾RJ‘#` * 3A¢’k°‡ I@\‡2}Åak–Tô’%´£K˜k nxTý(€.EU¦¿VG—4hÖ‰û¦4µÈ#˰äŠrøX¯ËõÕ¹µ³]z®å,8$¥Ð–1I ¢(°€8u’H«Y—ï²ìœsŠ0Ë92У3\ÿð„¼Ó‰—é²íwËtE1v\ έRtàëd \‰\‰®Jö"Áš·ƒgÁ”`9ó*ò}d>9³{5%2èÌõœçL‚ý’  Ce,R%º-ÛÐ#`Ü:‘Œ©(Rr >³VºDWe¹#eËèÿ<Ï‘µ¹ãÒ‘ÜŸZbµÖtWe%2QÄ€•ÊÄmÚØ‚±’I°2ÝjJW[¾×ÓqýÅyè±Lgq-“)茠)Gh)T.LxÊÐú~ñÂҽשøÿEœêN¤pm­méíøÿñX¬èÿc†qŽ|Žâäžÿ¯ÇaLÇ#Ü£Áÿ{svaÈk›g†Õ\¦_ã\ÐÜÝæº÷ª0ÿÛ-âóœÓæ?!t,þ‡—âÑ;øÞü?•×'¯=÷ÁGzWœ²¬?sù:ü~þ½ýíoƒŸì¿~dýò¥›wîû_ýëG>’½óò¯]û þÏÖ£ŸÝúÂÃÝÏß÷òï¯ùoýêÇ/¿ð¥¿ú³xõo—þä~ë_^yý¾Ÿü·Ÿù¥ßàùÁ_þ}åÁ/>øÄÕÞÎþÔï^ü¾‡>ûì7¾çßüsûí›/}×Gþ±¿ôŸ}ýçÛ‘”õ+Ï]þ½'_úè½Iù&ÏÿÑzÚ \Z3è_~þcø"þÏ@&Ü›ÿ§ÿ?<ÞãAÿmm÷ ~f$­™òÆzª„”X ’i' xÉG½ƒíÖ‰Qpâ¡Z‰¨§^E/[0 )øÀm ÜŠx²LïÄ&´@™63ŠÀYW p Q¹'7ÙˆA$øãäGwAZ**b•…< „R¤¹¶¹<ÆCyÞþ‰-"ň{Æœr⊃¡QŽiqèÄÛœÎYÌd$•Hk‚0·”¹èÚ;Ï™º÷*!ÿ²'z{½¾ßzz§m{ ðê[­Fc£«·7×¶›ÝþÌÿ£K üyÎîÉÿÓxÑb˶´ZEcA9ET³X<[«îÍÿó,åå4ü? 7éÿ‰œÞ›ÿo’ÿ· ÿÞ]ø_øÄ—––ÞñsCÿïŽýôkôÓ9{ßÍ«üÀ§®ÝwåÌæþ_øGŒ?ÿ¢ÔÛýŽåßùÜÙå^:óÀ·|â'¾ðÕ—dö¹OþúÖW~ñëÿô±íï}ßwêWžüÆYyëã_~ã¿ü?òÖ×ÿëûÖñÆ ¯¾þ•?ü» OÜúÓ¯}åm¯½öÚÒµo[ºóŽ¿yçÒ¿ß·ôêÞÕåÝ÷/½zÿw.ý÷_þ{ÕÕ·¶ £?ARBºC:¤;¤A@:$¤»KºA:Dé”î.‘îîº÷{¿ïó3¾s¾qÆxÙû¯H¬5לw\×=¯y/h_wH Iw'»>Œ¯ÒKh_S᫇'MÇ¡ËFïCO7¤ì~A¿½6^#–Ûá·Ö)ÀZÌ©àÍÐö }|GÚííõ1š?¶àåÇ‘îLŸÉ´yç"÷Ê©og…ZËïfú9G,Êt%Üù H›´6üÆ„výT/Ù0ßÀõ®¹l³~2z«½›àE5ÜÈ4ÚÀé'*§•ˆ€JrC&Á­ýäYmà„ ÞÖŒOiý<…é‰î¯sš“P°ó¦á”r¢ËNTzSü/SÃáÞŸc”Þ}|“µÐ»â³4Š…z±6-»¦NÏëúò‹v!RbßMEÜã»,GêŠL‡¯IuSÌÖp䟳£Ž<Ÿ^·ù]A#CùûÂÄK2>ý~ðù¦‘ SIOmïIvFû;‡â)ÞT|Vÿ5L¡ Œ»@w;Âçýô÷¡â±¶ÍýO’¬¦öl>Ì,ߌ߾²û]é‚ðÓ«×Ûãbî»áqJ„ÝV—.¡Ð^°§ ù¿óÚ®ºûõ›k׺¥‚~~VNëMÆ_ã8ú=reÆJ²i“¶mÜÄàYŽtz¥\¿Ý‚¨Î»}oõ B« ;±°Œ)sË :ͺ:Es¸¹,äê8;µ‘)[í@E¹bÊ5fBÒ*ü5ÑÝs¾V‹PtE3Ũ¸³æ&Á”æ—67 í m‰`Kíôro~ÌkoëÎÊS¿ò]Jrï’*åÖ®ôàÍ}"ĨPßBŸüEº”Œõ¯aï_ã‰K?VÇ8žB*[í| 8(jª÷?VÑó¨ÄBžû!F](ÏÖØ»CûÄ ýø™úI`(Ðã°=óuvIF怋©gTì,sÖ<á3ôç$”%Y;‡×-|Í‹¹ã_–wé–àϪ“Ï3ó#_ˆ-–6ÞŠzm¸I¿‚‚!ê%ø h«ÁÇÍ™•ïȯRZêòÉb<»)®¹C·÷iûÖC×yLúàøûŒR7^>ýâß„4,”/ëæ ™_Ê,\<òA.­ÉÏu~,lìÖÁAÔco÷櫪4R«ŸÛ°c‚Ÿ—§ó–wB¤1æ7ÜùVœ´ßWoèuÍNT(ÏïHpŠêxAsÕÓßF0´Ó@!5&2ºIi63Äè%™\{/A¤Œ.kkŽNð<´è_ê8à­ùßT—LU[/dì‘À|”èÊt˜¬Û¹ù.Þ$„uÌÿ¹‹äƒ³…+K'¾|Ùºådi«4ñˆëûOi³½¯^!Ô‹ä˘Òõdk¾Úãšù¢§í´wWì¬Mè"¹$ðê]ƒõDU×úx§e&M®­ä4Ž}øzVKa®w~därÛ“î vˆTöif®èï›7íWÚ.>‰O¼]m7®?´®[=;ÿÚ™óþ™ÒzQ¨ˆ(k¯ ÞThòK§Úƒ]éߺýœ«ÇpTAÑÑAȬ™bdlÍ Ýf *³>‹"gg$¯ §Þ=)e]¾MÛ=AÔæ >hˆy†¨@Bjõ9Nŧ˜Ds¶-åéÄçÕ1uý‹®Ýío…wë^…GÞõV×WºîÙò‘ñˆuŠÞz$ƒK¼ÆJ‘*Sút\c<½Ü Õý‘¤ì˜¥U/¹^Åï·5;]`Ľé­W-ÉЇ!%QØ«;U/4N­éP‰ö¬çûÒŒ€J̱ŽÕùŽˆ¼'ôôò8r¾òì ©¸‘|³ãƸ¼<>½¡&NeŒþ³ÞõWs·ƒº>Šõµ²~¥~”nœÏ±Á}ůOTKðJ±,ÂÓª»3“ fŽ!l$¯®N«lp¡îû„Ŷŀ|ÒÛŽË@swcÄhÕúu¤/­Žøì#-‰œ ¿Ï¯ú«aís#k‡½ââ\ÎyS¿_í4 7{ú©¤¦ÎVö*‘„È.lè·.·|Iùd;üëd±Þ¿Aóî2 Yñ¢1rÛçËsÜ uJâöV¢˜VJfBJÜçló{VórRáéȤÍwÙRj³ ¼©ÇõÊZI2Eît‚áú *´W„Øm~zoÔ$ŠTk¹^ÝŸ¡Î†œ\áY¿ã+(æþ¢#¦ ¹èÙ~nUØÅë÷£Ëp噸;Ö•…´pUUŽ×ឺ÷‡ÅŠ›ÛΡK:ºl »än=Ún„}DßݳM=4 <Ú¿\räá<ð¹øx(°oY/wäº|oÍÍš+ºbã‘~×»‹ìöbWqþ˜;¢3¯$´ "l¥8zäbnÉÀùtÉL}Œ8ñ]ÆùâS§3«VÛb¦/KÙÝŽ.çÊ(®E©¢ƒ?4"\Méœm3Ü| Ç1ñqÚ…xB³j)‰,¿2_ïø¥xGÄ–T›Qü²¸K)㶉\Ðk±ƒÖ]‰»dààüQr1À8X§Zo¨-¨‹*Œo½ÿìr(Å6Y;…“Å÷¥ãŽu oÔï{¯ÀnŸUý4MJæ’±²_ðžç_ÅÓž ÇÊ_æ½M'è}7\Çwõ:<Uy„H£Pvçf2X½ôÓ„[Ÿ¿³d+?8ŸÓg)ˆu¬i,³ôÝ™t3@þvš‡QPü±±KN¯0mû(©†øÊ©i¦1L›ð©³ncøû7^—¨© ‚寬_ì‚ÍM¦©³òÞ¨èX %·h¤ž22q¿Tã8t"Sy™HzÏñZêGÕËw{&ÔƒÐoý(®g•Õ)ãR]WxÙi=>8XRW¦O†ÍŽbU(ÜìjÜïsm›ìð“’ÚÅÛŸD_$…"¸< ~–ÖýÁ/ÁñK i_J„gu¡úà. í;Bé`€ÀV^ùó6 x¸Ë&zlÕË›üç/v¨bnŸ¦†ÿÂ_omjª‡–œ©z¾Å`E®‰’˜qª¶^HðL"EÁ¾­Ìe#ÜYiXünHI@…ó®Ë IòµyÙ+÷;O±…].Ã+ÒvüŸZ°w¥ú”fsâ køÑœ¯J®÷ßm®Œ!ŠÂ{K/:Ä 8ì”|£§E”~í!œûÙQXb¯ÞQܽ<Ï‘ üv uDC`7h3t–º1¦½ä°†‘úæØ5êÎ;&ªa„&–)Ý<ª5”SXÁsU¢øv)¿‘VðóºtùVy¢CùïØg4Èsñoq=SÏä8³xÔúFÔÓ¾ó¯ó}bºË“'ØfQC¥¨,ëŸ/‰‰NË€“ÍVµŸã!K¶[rü&õ1{Šž³[-Yëžmû•Ý38S9EšiŽWÈ~Ÿ[æëö;û­ÉÙ<áÒaùŠÕëïÈÇ Up\Æ—+¯£^Ó$?Y¢WÏh§ÿ¶¬õó3?áXµõë9bé°lN¦V-¦î£ëK3:i…éØ×ƽ¦¢¿FµNV/Wy6oáâRÍ~ù@œ”ƒÙ de‘fôQ£šó¸·x"ßKÈÝ×Õ–/ó.6eÜÇà9ÏùYgÐ/ÊXŒéd‘Y²U¾_Ãg0›ÞKµÜ1©¨3óÙ¬3#½,ioË)~XüvZEUèªTkhæ³þò‰ûfD~)Ê 9¾ù¢ ú3¬2³ò¬b;„0X¼õRZCY?ØX­¦ßT¿º¶¬–VÆ#ûi{ïüfd^ À b>¹Oæ¢B&9ðpCnkêú½ocfr|*èaû€Ê„KÔV¤?HU†Ú‹»¹jºc©E0©#Ê&ŠLñ¥fúöw­ŸÙ\Ò-v±vÎ,8ÅÛ£Ÿ"\±+“PRþŽ/yÓ=MsGäªèh)»òêwa‹¯bO.(ù “G§Þ Te“À•ÿÙÁq\PÝÝ'UýSŠ©!M Ö]d¿ŽÃ‹_4íǺºaƒÖÅ`v+”bÄêê”TûŒÒN…×h<áÓÞ' [pzÔ…K–î *¨Ï°6¼ï׈ý M?ÅÍ×B¾Š'3=TÞÆsÒ^Q2a{Sü|Ö»ùÛáåªóå—s%Hº+ry'D壼 }Ñ»³Ü²–ç*^|оJˆ°ïÇÙ_³@nYNŽÚùNÖÂ~”Wbîøò2ÉÖ ÇÅçZ#â YÌÓ÷¸ÝÜßN¼6ÛöˆŠ„Ê`êÙ=”Æ“>„ø ahË:¸¸sþö` j!_%‚ïñ÷×kË2½ýU©îÎ¥[ï‚àQ¾V.ûYþØÚ +è¼uk2ºhÝ ¦±G]¼îôù¢¢3v:Rš)÷Äד°¯1¢a·ÈìRt…tNeg†¦½\Wr½»þ©ÿû—Õþ‡æï_¿!ˆÄo`ol@ê`f` ü€½±‘ãŸãÛÖ6ïŒÙþq°—ò¹øÏÚ¤Žï-ÿÝ-ÀÏþž¶%'5²±±ç @ÎÆÅÃÀÆÉÉð’ø›‡œù;îÿy6–ïþÑÆì=’Çú—±¼dee`çä`ààæ``çaûÆÂþ¿ xâñ¿Žá±±(‘¶·zìTóŸ;iÿ뤰¼dàÆÀÆÎÀÊÆú?Œãåÿ0§wïÿ§ÁؘX“€?ù·'À¿Œ ˜ •ƒúÆÃñ?ŒGÑþñûÿ…‘ÚÚÿ=òþï‡ÄÊÍ Šýåÿ…AqþƒúWóý÷#²76u²4°ÿ_ˆ‹ Ïÿ<"®ÿ6¢ÿÞç࿌ãg,ì/¹@cyÉÎùOcù?‚Ýÿ“ÿÿ÷ùÿ¿fýÿOHÁÿ6ÿ³³q°°¿ü¯ùŸ•‹‹íÿœÿÿÿ#<ƒ@ vñ?Þ¤?𼡬¤8äü_Fã÷8°2Œ ewÎMãú½ÐáŠ6¦3ì”8,Ô»/UÖB¦u›ÜEΖŠ F^©ò2©î(wç0-þ/#*ÒçsjÏ«tÎÇ~ÕÙ¦†ŽõJg’ülùìÉè'ÚR)ù’^#ëýÚ ÏÁªõu‡!?Ú0òÿòa§Á MþŸ?ÌSå(ÿó²xY¿H‰ÿç'C¶˜ÿr™íwV[àïܳzÏ+¶y¯ ÝMG^Ù`Ñ¢_›ÃÙ¬î§f²Á"ÿøe4(jL %ÿ("¾ Fí* Þ§æ¿GFʬf8ÿó=yü±˜)eee"èJ6%%¥Ï¨þqGbòóÿ÷GÙñŽã?Œ…öŠ¿Z¢]m½t6¡œžN’’’Ââzøvw¡y!7‚QÍÅÅ¥£³3³¦¦FÉ8I&{xñîbAr¡ÉkiqÑ·Éëføg°Döû*^âRDœ¢ôÇ[%E§§/xMpyþ.šžóš†<ËÄøï$­ ›W>g5„…†)s;1©©¯_égnî(5h·=\9Ý›™P¬*-E‡†‘ë7GMU˜¯ö^Þž ¨véìïïÓÒѱ…å}OÔõáîÓ/—Ùðh¹s²Âí|ož¾AK>̪+Q™ùñq<'ŠuÛW{㆛}|€Õ‘ÿ˜–õõ+%8룅«ž…“’òÔÆÆÆrúGï¯zëÁž¯NµbPùdN¼>w77¼4£¹:§Í‘ïÑÃ÷?_{x¼¼¿YxÒ+龿»1°Ò={ÁÍý¼=¥}±Õ¿ÌzŽ·á¨‹MEý‘vãûðQÙÇbÌÖoö~.àþ#§=ƒýÕðo2t >Tð{ÖÀX9­¦½ÚSùpG¾¿æª-ŠÇÎ/( P•ÈQ&##ƒÒÓÓ;pyØŽ†AH±¸ø–’††%§ÎrŠMø…ÖÖL¥½R”¿v΂Ö::Ä‚‚²€_Öht¯ÌœX6M÷ мFôööæµåx­ÿh%Zh\óáµÐ]Àêê»ËËKRôœœ“Îߊßå“áQÜž•øpL'EüµåhëìÜ5Yf›ýÏ‘Âþ¸H:¶¶,ƒiá4鞘R kˆ¯h¦oxx¸’¦Ãz²Y®œˆÈ¥èn`Ä:õÎ¥„øøZU™™™—Wé;(O B·J%?¢·ŸÚŠ]]]–Ê9­F¿\¬Û¬œ×‘«”¡H‹ŽƒcR®[É1*¡¯¯ñŒŒvö8ßQVÆõW‰¾ÐÏt!’F÷3¶z½Fè…É?㜠gn Á¦W›M€-3êËêîFæ8hmwט€çŸäKÇp€•½:Ù+Ão,3} ár9^æÓ§OÅßÑQ¹/lp¸L:¾ÕÕ\8ŒZ¬F]Ϸ夥[ëšÂÃÂôžWÛ,t =\½Î3ÿytt©ç-½h™™%_ªiÁ}‘ƒA/u9Ћ â—;@­ ¨Z!c=¨ÿôÔqw¦ÍÀÀ $4´Õã ÑÔ‘¡érù'µ\ög[?/µ_“éY³Ï¶(©KC€‡'gfFKKK“zýZRXØW‰çÍž”¼|'—c¾| -Ö­'ñâÉàeö¼¤žÐ3%¾‘ÏBÿ‰b¦øLúòåiÓ!áÓPñ ½óÿ¹#úHܱLSZÔÇj=Ë…ƒCNOüpÙ-Äâ°.'V „SÀË–—Ú¥deÛ{ãhX­¦_¶_¯õ'M•oŽ$ôò Ú¹sÕ^þ–eãÝúžîvÐtƒêq±ß ˜g©í’hE”¬µ5d±+’±Æ¦1Ï@Jd‚‚Ännn€/ ÿÀ'Âûcæ…€S<AßözJ"8û›LËå`<>Ä—¼©ö¾sm”MVRìqùM¶yý~½­M÷¾~Dã#‘·oIede#LJ€Y=??ÎeMyÛêWZ]ݽSÒU^¾ÐTás>e &–Å`Àô›…î/³ î€\‰ND„‚€€çDÌçüT½D¯S–¹âzÔ‰{€¯E @HØQÑÐP¼|‰%àqÞÑMâ3»Y‹½c”OäG*ü}¤uj Ϩ;ꕉ‰IŨ´øè¸¦6/Œ]ú@ ™' vЬ0‰Ì3sȨɒP2¡ c£·Û±¤ « ËTÝ‚‚ ÎWmž#à"KJ?>#g`pð °:ÏYÞúïtG“t_­Ä$%!àŠ6^&Ÿ )0ª‹½îÞÞ'·FFo6Žuÿæwy ?˜_ľTÝøÌ¨1f¾´¿o}z=^¤}fÖÏb¢¢ÓZfËf‰C*|ç»SþÒƒ……Í0W¢ ;àË g±nr(ý²âŸÛÓB‡õ.KO|‹Š£Üå3©×ÇnÄP[PJW•ÒFÌõ¼qÊëÚÈd<1r HJݤ&Ër•ü¿Åa³ò ÁÁííí0ϨåX eåå_Ì7’ÅõþÓîteì)Ú©]ï¯6Êì×ún¬×o—ÙUUကp´§($²@£µ+qÛrvõo2Ô|Le\ôÙXÞÈV©ÓŽ%5uVCÃìa"›1R•õœùèçÂB†ö“Ÿ?å.on„lw׫V€ÙѨ0AABBÑ€èMòâ~Nü*m‡'² Œa˜¸÷©G•êeÞ-ï=ñœˆopuZK¬³0“Â’:2i¡ëÌ1rÏ‚;´|e¹ò³¬oÀØñôkNÎRËn‡õ§Ÿ4 5Ò?} Ø›©6ž›Ûû–û3“.’¯C Á*iNP™tj|ÕõÜà@0&!àá À Û/(×Ô<WÌSIä²!†d444 Ÿuvu^Ÿnõ tÙœÕóÒ¶P«2°ülìËçÏA@<$ãäÄAEE ’”“{Z^Qaw}ú¾]úuZ˜w§*\wŠªûèK^ÒéŠo:7\o)Æz¾!HoYÀ‡’g|±Ö‚m¦sq¦[hÛ*˜…ð-^EŒÞ,c$Z¼1õÛ’5DÁ{÷Ëe§Í|šÐ-zkk+"*ª„½=Ûßi¤'&š%ê›f6YcG„{4mrzšœ‘E9 €› ÍBλ“>}Âz„$öôêÅâ::„¢bbÃ.„<˜bÁ¨VŽ^&~ÍÍBð¨„!P0ðÀÓj”¾J5Þ)pèÿÌèz½õ}¸ÖÁ4û@ê"ûs‘ë¯<Á§uZh’h³÷ÝáEóÃÜ®Æ?“fƒD¥Ñ¿¤³Ö]^‚‚:Ñàî~;÷;”[¦&Wj˜®Ã§*TÓÁj¦Ú¶.!³` ÷¦+?£‡xS…Ù)S€Èµ€:¨›c»oŽ€@¢-ULè4C/£¤¥…ä™ “É7\\\¹*tˆ~¾}}2íuÀŽÛ£Oèâ‘p™õÄhØtµNðwBû€*Ò®Æo2z3£2qV¡GŸE©¨½Ag{“ 3ûSqYÁ[ãã$z%ÇIaHñ.œÅûî=,€4i€ÿbÖ!7?ßOŽzÅCüsõÀôo tÇÿáãÂE?Ç Ô—66†¤<ø4‘¢>U’É]@Gµ½Ó¼é°mk‰}|þ¿)^Ùö´Rl3<õû`ENÒð:-̘=Ä÷/*756&ccøes™˜K…Y°N—º¾W`M w ŸKñðc4Šªr'Û¸‰MêXÂéè/‹3.$ŽÞÎúÓ±fj‡û¿BÅ[\Cf„ ÉÅ#Ÿn‹Áp²”ûSbhhl4°²à{—§pwsÁÅáÕ†Ál$Ö:lÿµ¤&¬œŸ²ÔÄ' 'Òò&š´,o+PC·ØÈHaæ´Lê­Ã3§è¹Õ>yÂSkùúÓ­ƒyF^EDì&O©RÌžŸÓÁ¯¬¬,è̦ùŽs¼XÀG+Ýã€o¾ôÏ0†çícâæõ›Ê$(³\Kº"2×EÚrúæ1És=)8Z3íW/¶Ú·fÿó {7‹¸µ»{]ŽÅö/îŸ/i;VqÏMV÷½&d-Ò<„ü)îïãÁª»ûa„ù‹­3.ÛíÑMïÆpõm˻ۼ{çMÞIÖ—ŒØÊ¼rL $¥PÒüA¶^ê iÒæ3c ámÿ°ä1Ä‚ïIÊí®9±®ù=Šë4œrB2F%ÒvBÌZé[š0‹ÁÖ†²Q½4:-êˆÇåÖì'î›]ÂHèe5œãÓ¾fÁwè-xŒFûöÀù;S`Öþq%D:Ð9¶;LþÕDQªO9/GŒ…Ë‹´[I®Sü±·ÊJ%0× KÅ0©™5ZǪŠ:Em©ª5Þ „_ôq[7X%ãz;Â’ñ{x5«û“©C{Êÿ†YczqKS~Ì5¨Ö¾ò²[ë4èàüu3†&ÐYY%Ýb5õsÁh-Î,›-ô?†Ï7qaT¾â,2taîQ‚Î=&…÷ `Q#‹M=váT†[[gÆ _YH4'½'s¡Ä@¤~Ä–¹¯¤-| -2°Š?ü¾ÑSO0Wr~…Rývä„q?ÝνÑÔ‡¯Æ1¾-¯€(¥~ºUÂz‰á…/À5xaùP~ûÜWÃÕ‚4î²oèêç "†ŒÂ%yÒt¼×“œïÚcým7&æ#\ŠU3)eŒãÍH¥|Ë‚ÝÛûÆ'ŒÄGÏmÅ y¼e×¼zÊì)ñ;vç8mžWbp©þPÑL”¦IŒ˜Ç~0Æ[ò“'~¾Þw×­CCC¿3Ÿé4ºcKF²ZŸ,3`+×FÑ#`¡“¾ÑC3Q–Ï!îk3¯qn~ê«ÿA'PÕ­ç[ÑŒÅt¯ÌíRá|6÷õcÝñtP®ÿLן2¡Ò³ÍJò>ä|p^5ừ,>BŒ½öí¹­CŒjâÀÝ8Oãd|Îþt¥Ú›or­• DðþLºu¤¬¬Ã»ÇštŸÖsÑO gÄ"ú~˜ç npΉNs`©ç+×-’Aƒ”:”û©Û <•ßµ.» éÉú[~5—ÃæµôÞO1ð– ¨U[¹v”:͹ÌöÓ¢4üÂFEÌ.)Ì“ãT #:jKÇFS5~"š~éwÑzRP{f%ýdƒ¡é—/D<,uóý[Æ»³ZR¨¬&ï¯÷(¯ L43¯öuq“hW¡¶Q-€cqÓyb_¹Æ9®•J)Ú–Gz›Ä$>D‹ãÉ„h=SbN"$¯¼4¤r¾g$œÛ5_gß:ŸI¡ÔuC`yô Í =š¬e ¦<¥Ïï‹‘rjÍ?­åa\FÐ{7·,ü&ÃöÿS ÉeTŠ7³uKÏ2aŠë7ÿ¤›çW^Š”E @èàºÅ¼WPŸQãmQx%.IFÀ’¨p›Ñá½Ë ¦z‹R,ë9c[äÏ­Ãݨ~_á`¨²®-+ªa§êà—d”6={.wyuFQ»W‘åôæ“=Û;YÈñ5ΧQ5d’ú@6žLþS5&F!–Ú·RºQMü¼šŠ¶YÏ¡âk¥ô„ð ^¸~Œã~ "-ZCò:ÜGŽ#.n•_©^Lªw!°ß0Çfk¦u3à ·Ü™UEJðM ^¦qôm‚Ë¢þã4K¦—­x Õ-¥¤Q»*¤óO«¹L#šÜ¢YQ‘í)Ëç$¬Olœ`±Îüb hkLÃ]:ò.oæ}Ú™µ:{Š92¼Ì›ð%ù¾.Sä‘x[-™K8®¬×€Î3ø·8¾Î÷c•Žé®– Š­Æ9¡CiB€ómÿ—þÔð>ÕÇâRx¡ô)OTº )I†ˆR :¥^z8/øiôëÓ@/SÙ`éQµTÜ×몠¹¼ÕðÝÙ>ëªe×5˜ôñÑXðWÖÔº”ÿÃZ•B¯“¶ˆB¤ôI3t9œŽ¿ñeF«Ah®Þ_UQÁy¯øY=Nã”`ó©$ÉŒ{ÿúþ‹À_íO£šªÐ)E‘%þ<æ;¹ì2¯Ÿp5=‹&hÑ’ÞDäª]dʡދü•)ËJ®ù„YÄ¥åñ£Oã¦MrUƒ¾äßG´àÓûñìñ–ý¿T¶?¥k×ÜÉR…1©«f¦IØMaïzá,Üs’Ê@DCõge”-Á"“èû´|“ÜQUÚúB‰ÙwÑms«-ôGÏÈõWÆQ[9gޝñj‚ðC@|ª¯A¯ÈgÔðžØ¿î5žY'Š }s½ÁŠqFÞäÁŽ0¨»ç½3ðœ2°!NYâ‘&ŠŸ&Ъ˜¸@_5Áý<¿‘*%g\ûÿÔó+‘¾a††n»ÇôJ³?áMÓ4d7¥p ‡!P²F ͵»šJ”êÑÔ !´Ç¶ÖýŒ„7Š0¡• EÞ‹Á¦_ø=x[šØm¼¿VEÿ-4äÊ+ñ?6[ô}1>]/†ÿÆõ„¶Þh8ú+aCªoÿ®(-rÝJf5퉜L¹ê¯`̳pv©ŒDÄJolß<Þ|ûy1 s÷…ͯœyÆS¦Ê5Á½KãºH’$|¾<ªšÔ€G[§—øfW9xUé ËŸIGôƒ84u•h”AË&0½rwçõó÷×&-—WÍj­l_£­ý**ý‰*A%·¡ "•Z„ÁÙGÔLp`´Dûç(®î÷79ȤÒR_BÁ+Ùc`Ü§ú·.¯§¥…Ÿæ¾ý¬RK6ø7™|?^hhègTÿ¤·ë?¿hÔ9¾÷_›µ]îx _%¬b§•ùJúÑ['=¦2fHtXŒû°(©¨4y_šÕ9nù¨—hñ>}|4#{çøÅéa>ZþÌ€c ŽÂ=ÊÃí=È áÒMŬßz¢6e¿áß‘ÈÈ eegÇÄÆn)ò¦ýòêêhÒ}ýü-¥‘’’RûÝ7¹/Àws#ÁÀæRº¯D}åºÌ‹°ÞßÏhí—ÚöQÂhÚnžÔçªÀúnŽÇݸ_K–3U¿ÉÙsS)±`¡|¨å“bc1´«ž‚•))DHK?òû÷ïZ$“ÓÇþ16Z;Mð¢œ7;ð>þöööæcàLòÏŽftØ ¦àƒ"·ýž*nŽíŠóèá•v`}6ô X?’Kåņ|Œ‡÷0‚ š:^…ãQPÀwä¶]„ ¦ðøSÉ~Ö`°þSöΆp;•±k®v ÉÜ^^è¼ó~¦„ƒÁKþ7#M×¼ùÖ:<Œás·£Ð)-›Úd®•v4!q[[ÀfbRR"ä“9+ß~ýSðÕ …èV†œO”nMUL;@u 5E%›~B?#ðOB æyôóO//('''u?6)-mO)!!a„ÅD±ÀèäŸÂÜæÒaÄîÒÕý_j[J®¢¡·þH:×™Xß…ê¡€`xÛÌ£‹qø#<§ý«³oï¤Ã©@ÎjÓ‚ABB²ººJ ºèÇÔT’ô`<ü?Û)ïÆ1/Qý€¼pÃ1Ý">m¥í»Q½?¾eŽ Vã'ô}ˆ¼½½mííÁâw™Ïƒw6›ésÙ¹9 \Üàååe‰ø÷H"è?™ê ;‘jêë)øøê5·©ñÿP™”BpèÌgÔ13Ùt¥È9#Á‰$YMM¼yÏyX88¦ €¸%sÙXq?>´E‚µòiÄI€¬ïÖ;•‹{!ý²ÂÿSó[_©ñœ{²ÁÜñKÔ“¥ÜnÇ_•¦ÚÚD±pp–¯Ïv.—‚IUTzãh¸ê"jq“Ôè†ã2w•u£޶ܘ!iEË }2¼øJèyü4W¶'Ô?i(…Ç0ì"þð¿2DÀÒw¡f‘Zýĸ`6~ý» ¿âJ§Rúÿ¶^?µªñ—¥åóñZ’8@%ß;â $¬®LÇðý²à"“Gc ÙÊÜ?T?»¶)ˆ’šz¹åÌåõNI¤{\ÒË'`Iù›|2dô4­¶zÐÏútkËfþe½œÑl}sݹÍ~Õ’0}ùIÔ?´Џj•§|5§^/Ž•e3KàICÐÏ„G'¢[j t+ºÄFñ9N]~kXݱ翸ñùÅ-§YiŽEÈãǨ]õ¼QÐjúe ¯’Çž×s²¤ÑÙ‡’Gn2Ö^“¶‹¨V¨ñ!G6\@`Îë¼êëoYóÕï/l×|¡¹Ø?•~–Y<á“„\Az I5°°1ÞBÏsšìJû³†{Ó•È#ßäëmrk6Àuuey¹¨““Sv_® %%%'æçç_¾Ç5çðMB®K·÷÷÷A® Ô7š’ý_wL!¾àþX•K0‡ªÍ›÷Å®÷T¿ôÛqÅØÛù>ÖWcÕÑadÑÚ÷<Ë¢6ïOWrÚk>D%æ7›ꉡ`­Xm~>]M]ÝrýA äë·oY¯Ó?ö¾C|úôåSYüçÏ]õ ñ#áÖ~HO'ÑÑÑA'!A‹—ƒ€Û¢@¼sÔO9Y`÷ â\ç&äwýõÎëĵ6R¼ìÞÄÈyAqÎq—h¸…á§•°3jÛCZ" ¸ÐÑÑmnÿMø4ž<ß%'vÆ©’boå¡ÔöjŸ6°n¹… áþñD‰ÝÜ"]i½ÃÖåq/±Óäçsϳ1õ ¾EŸË%„ž5ûÛ£hXHGGG†ËÁ|Oook[ 2«A,DØÚzßËŽòßíCAÀ"æ¯_¿n¢*üýaêœ÷¦7W~¨3Ç={¸‹A»FÇ-eäWöÍëI õµçF2ïßç-™TGu wãDw9vú“îû`¸’g†çˆe©<¢]¥p‹ý¥E`¹>ÆÅÕÈÚñŒOwÆlJHùøøžâ±Ám ¦04z¸xž pÞ ¼{÷n1'AOÔÙ™VDXB"È@WL ÉÏ÷öÖH¤"ÙÃ-ããã´óÓÆòcÅ“ z¯&ø¼0^xà¯Á©~Ô@6¡A½y½][/Ÿº£cl‹Rècxx˧õ±…þà‡›ñ^hÓ@lùšY쥢¦–å°18YmCBì±Ë ¤Hx(((WV)0_@LþØ¿Æm¿Šÿô¹âÁ†n4±@)]ÝÜ  ç{3Á\ žÏp™õ’“ ì––— k¸Ö¹ó‡ ×?OÄð‚…ÝÍÍíðôTÀ=ÐÐÐMúõK¦7ûõ¹¹¹-Ëáv7çV·'éZE]À?”‚–aòo÷±âe˜HJEçGJ Ä!ÏC¨¯Êï'šœ:MdÌÍéÀšñÏŸrŽ{ÓØÒÒÒ®çS¦;³¯ÅŽ0\KûÊ_1йó!±©á¾îºi eBøÀ}bã^#ìÍÓêùl“¼õ‚ŠÕ{_Êóíé`¦îô‡[SÏ«µD4´îêïðtŸû©R½<ÃÑ\%EZ,DddöÚÀš\=ši”ó°²hA%ÉÆPz·/LÄ8‰7áJw´$0‘»{{N„rc.6~ñ >«ì$EÐŽD£q±@»éàb8sS ð•ÃA¾R .wã1Ly/E=N\–YXb±ÎïG‡%Ið"o!Ÿ›™…Òw½˜ ¥Òec8@zçqX»Ú3Yi;ﺂ¢Sï\4x÷ë5€ «l¢€¼×p½€ØëCéú6sššš‘aØ—V_3¸ :žó93€Ÿg4 ‹~¨q;¡Öó¾2 2¼½<29¨fä>ôì;=tû‰ñALgxï…é$ëÚ¨^™éµÇú~k0( ˆ¢ó¹ì¿¼¾8ê.(iÒ²J¨K|C X1Ÿó.ËöÞq2óâïY“3ñ—.WóNß¶9ÔUT°v ø–ö„^»tÒ2çrÖ»þÉ|©SN•ªsìeŒ>_ž‰í­¥ò¹þþ*}Ù-tÿÃbüíÃý]=`„RrrCÁ@JèyÇ'PF616ÅLÅE`ËÖ^nÜo{º©.®D·p ÐmÙØØð½€E2Eý£(“µØœVÎTléííe!lìwéOÂ/ËÌŒ!ùÙXÅÑ94„,Z°`¤ñ2‡B@æ½Qäÿþ:]âÝ;JÈ",ž³›ÈùSܼ”&ÀíqÎD¹CÀLHih¾Ï—£t>ÃÄ4t%&&žßŒñÚWU¯ßÆO+$´@[ì}w]Y/Nј‘^šÄóqm&X¾Çý Ôp€–ŽE…»˜ÜüN‹—ßÜäφ@²©M4…d”0u//þÿÉS…TÞ@Ÿ[Œ¥¥¥½… &·°±áôõõW×Ö*Í×í÷˜:Wžya\4§=/c‚5`voFòƒ ªÉ1`rGãÁAªªªž ¸¿DBFf5¥Ívú·ìQš&­ $0¨@ôøU¤ÍU¨QÖ¦( $Ù¯Ê/ 5ûøìN–Á¼xñܬ&ÙrCô#£=::²œ¸Rm-=}{Þ›ïÀ¬zzzFÄzLMM±2XTjAÌ”ïÿ÷O¤0zúþC~vö3]£Dóq{Ÿ°Î™‚f}N†ƒ© „tÏã^˜±9 €•–•±Rúkoà0rÑ”o)ZZÄõæòmÃÍH?#1 ÉÀÉáÉIÁÉì2Ë÷GE 7aÊZ"»gv±VÇX;Òê.Ý«ûl›/9žóäDeÕžG?Ô˜ —•—³q¦ýy‡Àdtôx¶ÖÁn–˜hóJ|à)Á@L“îé7Uaºò+SL£Þ™²x6¡ß Š?îoÚ;;áú?3ŠÉÉ=5ù™øa¬@`LŸó 4 (v±‚¾×6æ³g(\)sõ$oŽý|Á%í/³—®wg¬Ž›Š ÷7(ÄÝÓÝß2Çœ<ܱ,Æ E””0 Œ@%˜sQªšóö½™×*Ÿ „œž:œÌI·"Ò¤¸1ôÚPs÷‹~Ö>¶¾)÷ß`Õ|É h4=Aëþ«O•wqù\/ ˜ ¬þÒœËB'À @é‘ab{ €V[ÎÀjö‹"ìèøÃ`5Ôe€eˆ*K<à)ÊÜ϶Â@1Ž”””°§'?`UeíAîFtÄ0–¡Àç(‡&è{_}8g+¾þ™&@.ÀÈ2†Í@˜ gÝþ7ÀJÃÇ%÷üó’)¦þÊߌÜmwgkŸQHDäºÜ!¹œ¦®{ø:…¬>4·ä¾JEZÉ(ÎX·z2òË·Cx.d¹U|Ôüˆ=ì¯j¥þÆê?ËŒ%€<@Šx& (,:»»µxgýg­KÈf¦y¯’Àx¡¦Ñðuè4Á?5¿æ&î‘ˆØ ¶µa$ÔóƆëîc$ÂCƒ©o§Eg¶­‹‹¤³sUŽØ{Õ¾¾¾ÃõdrZZDûZB LŒ´"§mk^ïûþþ>¨y²³+ëµÒÒÒæ­Úý‡–øâ8ndôVu´ãþ±J×Wœ›Y“%±fU´4èZ ›¥€¦@)¸o¶” =WÀ¸©’RŒ[WND×dc™¦¡Pä”óÑr'·Ý2(û%É->Ï­«ÃÜ^H_e àæå]¾9hî¶(i„—”ìVxii`@Æz¥ÓìMTa:ÔµÚwtµ‘>¡ÙÄsïŒïÐTYiÔÿXëÔ”SQù”#¶iû{dä´Wdt;çû÷ö°íUÝ{ĺO’¢j{ð|¤H†#¿ƒ™žëªçÓæ¶C›šîEľ b{Ù€Y&À-lšïpF¾¿îÞ›©ÆŒ$ž^½­¯é_aÞWå¼1j`%0.ÎhÕ9æ’צçé½e¬Lï²ÔÖÒê_øMØø¡–«+·õl͇¯_¿ª%æô÷÷ÎÑDñé‚^ÛŒ „>|‘< ÓÓek£±Ï­]ÃíqÿgÔl±í…f!‰hb«-–­J€D²o)œ•cZ-ž¦.Mˆ¢X´ÂOçß< mÆX"îzgøpKƒ›ó½Ézæ(¡(€ý®õŃ PÈ’æ{ü‡»Ÿ£)ÓtM^póÍŽëhmm-ÔÓu‰qŒÁj¦Š °€Øj4{ \ ÈàF<C3 %²[t±¸±€‹‹ÛÑÝ-–£ Q¡ÃÆÄÄ\\[ƒ³±±Ëæ•×M׿ÌØÉ/òòò@iî;6<èÖ;Õ§Žª€õ¶/O?|ø Ñ. ÜöÔYãg(%e‡âù>Ë÷³Ê½ý“¹z—lÉhâÃÃÃРtÛ!áðì,°ºܶ}ÚÏ8ý—Ö.쀴öžÙ¥Àû¨“ÒsÃE‘8§ñN`-ÇÆÆ$ìÆææ.\̘Èf–©£ªŠ­£«{„¢/–ºùy牖×7sðoÎ8þ©«7y££.¤ÐHé=½ñõò`!ShÏ¡¼µûEÐj«tæ%dyk¤™¨@¿á"""†RR!®ç»ší;[[[Ëi €µÆ¼š½yæ³g YÍ{ó*GùE±f…,iÓÉ _¦ÕKôëjjž÷1éÖ©xnå$tø€•‚Blw¦º„à£JX¯ìÎw§–|Zé¦àäÄ)++1޵5X;®žwG¦¢¢úŒ °éÜÿ%þ«F´É•t’örµ8_ÞgëuN;8ð÷óƒîèè eb*ž/geeMd1€F%â œú²éì‚:7©Me†2öf„ˆû5žWånÀÊI8@Wq =ð,ÙMßp íÂ@Ð>ÔËÛ´ÄþÑǹP2õÚèKd5:\KÐ_n~¸c¾>ß _\\DÈŸPñø)P…rw7f-&Ö]òâŸg¬ÌÉkƒQÒt&QÚ…P@CDÉÄ«šà^Y?q_ <¿àú̇L ÏHuï9˜1µò0]%Û#¹ª94ư~P~¢ëÔ\ö`Ï9-Ÿ§yKóŸOân“¡´ÈÃC[PÜís=’~ø“}è-@õÿLÞ«XaÔà É^˜ÞÁt¡h€½å«BÌ1éÿ;—Ô€øVT° Þì²ÓÆË0èÖ~0ò|@ð³ nϸlæÅ_½zÕxó‚‰)¨²’È‚ëÉZfæ—4wO|smÝé™H…ÿIøXv í%—|a^Ì»Ã`òOŸ?Î7¸=ç²ÖÉÞ.òjúºîøèÂB#¾Ã-þÀîÜ¿`1WÄ=UïÖx‡ñèá~áýÑHM癿BxVÓûþòí¤Ë½…róó©¯5çGo–ÕÃopup|¤k©¶_Êfį á‚'ÆÂÃÂ0÷öö:ggu”°"†.^¿é§‹—ñÜHugffžšÒŒv0[K–E«¦¦ ¦ªÍ­­îîîaOž<É’ÉÁ|¥„%twúfx`@~w¾±¾Æ¨5Ûkž ùÅ‚ÏCãsBB†é©©P.ßßÝìÌ ɼ ¡¡ÞÞÞËÏ!"äQÞ(ÑOµ²”{zam‘ouF$/C¥ôRúôôknv¶ˆÌo óóÍK÷×ËvÆMæUTT(ïÏJ|°õªV‡é|N[NZš•n$ñbUd¨Ý£ÚB.Õé=m1×¼«˜£­-z¼LÎÔÙ¼8§´I.–òwwsbgWqä·ZdOôpP8}Á¡QÓîñƒb¯{9¤ðJØ® ˆ‚à6~r¼"Ž…{7Å@Ńš zõ@ûãÆšÚû‚SPñ´­Ì¨Ò©•+óR1ÞÜGw¼EË$pC òõQ⟴¼ùÈqUšÚä¤sܹ¶a¤HEç\Kí£Ú(ó†Dw`úëq|· ¯G"á~¦½#RL»Ä|•‰@httµ#â#±¢Þ~•V™[“#b]Ÿ©º5|œvf]4º,ð–1^xÝE“†@J·È`a ~ßÀžÛuºê-rnö?O æ¨mgÐý^Þxm#\ôKô#¢í–I°B¦½k@ïÒT?ñÒ· Ë?þ)}r˜LGŶîìÃÁÆ`ê'¼U<1Ÿþh'#Š •VÈõ‚»×fûðÄø;6%àùÊ\Dˆžñ6/"&”=·ë%¼@Û*(@++”‹à¼¾_XGKÉ…ûçÍÑš3_šFtí4#+’­3……,Žv~ÔpD‹k_Qâ±Üûò<Ž8^п6QÁP(áfÀñiÂçîBxNô» ÛÃb!‚ËÝf?”,™BùwD¡Ó/þ9‘¹zKJĈÑÇÂcDD2ªAdÊÍô]ehȇ«Bud›¯­ÿˆ‰rõ„îï0Ã*TÀM°M#díØÉÌ~ˆ$·ûTëxïi¤qôý«œPbÎÿ¸¶ˆ³‚Úáö¤D5hB… _CVþáòsýw,N6z x“9¬ ¡ƒäq13£GýQ¢EoN{\üÃhñgñáî{ýg15Ø6 k¸<úæptÄû5ô$јک—ë ŒÕv+¦T–ùœ}¶låµTüypÒɲ;ÙÖN’uÔX â_ùÎäl{ž%+D#•*ÿ—ÐkO‹ü§]ßo²—= ¼®'lEì_µL'7ßõ8 À¦~þ餠í"¢¿Ú%`¼¿"4üòù¦õƒ%‹ð¨9v𩏝JD!-ôBg–‡ á¥÷•¨gSJ·Dù4®]|’}þѥꃃú Û½ÅE+d‘¶Z䃳˕è )|¯°$Í‚ð¥Â¼Ó¢éùÁôÑ<…tŒW¬ØîƒÜ _%KZµ¶QNvBö¯½â²G''bÝÑ¡ É¢­²åÿ;´ÑVÕ„Å”"?’`÷þwŒ+„}óÂ{¼žÁ‰ˆeqÅZѱ–alô`\úMˆ-ܧ¤«wêî™ÅL®òÃöÓ¨ŠV<±~sì“WÞØâs%y4OÞS}  ûeqðZRšºp ˜è귚Ȓr&Ó]Úÿ8¾Ù9Å«õEŽº%ÕbìÒnš*Ĉ#VÏñÏö›QçåX0ÁÍ.Ü*\2¯+ŽÉiíÌ7f7È(x[+럋(ON'§ù™†§ç{rŠ‘Õ4î.ü}bBS¯ºð+tþOqCúî´,èù{:'Ú¾B<âJÚ L ÐfÖ(Ã)1·]ØIòß”¼• œhÔ Ô=ƒáu`¾=Qƒû˜OÜÇ:•pàó”»]H”ÂtñÚ.]kS­º/¼òk¿¯ÔWÜ·qo]ù D‡‡a¦»þy ºòE’Œx@e"äÐígÙ¼}>&ãËx^n§2‹ÖM0•äóñÎòjÐ6¥·eφ®RͨEˆ–Üe=>!þŒ­¥Äl¸Ós¢¨W"áµE#-UÇ_Ïû\¯Q>ZE¤úŸ–5*hìi÷L2é­… Ü)›75‡*ì`Cs(W7'â¤çƒ3ªL9=Ù6ŸcTi°i€(RÒ.}ŠIïÌóŸæA7ä…5$—⎪°îv+û­ë…1yYäÛöž¦b/•&]ûa.˜¤’ ‚ôèÛÆ[‘î¾9ŠD ¹”;‚á«(‘ð&’†zñ#xtlú7†½ã+‚3 \w™CuP¸¿ODc ñù¹º§·úÃ&æè6Ë?é0Qð£Éa‡1åþâi#ðÙ6cš™Á†ÙqðÌÅsµj·þH°w½(ʦÔOòbÄe’ ¿?y¸ãª6> Ý:YMÂb½{†ÑÑdú-,‚’ØžóI‚lÁ:c£&Þ·eŽw€(k‹÷ÿ,ÖoNòHVŸi˜fÄÖ}ZißYn/-)¯ˆ9•ðÏ$qïäÆŸŸ‡6ªýØ]øäcû†Ã [ºªéàç|zô±RbV Í'‚¬´ÃÀ¦Ÿ_;îy•bßš¢Í>¨=‡~è7ä«H5…"¯Â>@[¹½okŠÚ3PŽ×ŒVíôxìR•–ïéôž×µœ“- –XicY5È îôKØù.ú¸ŽH0²µ@*¹yÇúdõ!«ÕF’Þö…4Ê•áÜîb‘ýÒ­Ó¨Yô*¡êÊh?ÖwÕÌ 4þSì:´ÜÚ®òDXë1ÕL tßwZ#É¡Îa`øå­ }Fc0ï*T^nç‘Ú`×€QÊœ/¼ÀPîõÈUƒ?%ú ¼äø†geÿ僇ovQ;heŸbÐ¥,èEìÞ­å³´V$` {šià^¢8ú·¥¡õ)®¨®ã—zݺÌn„~x}ÙZP}\'˜Çóƒ!65@©@lØ!1…<Ǥ… ¬S¥ê::¾„’‘µvÅ(JÆpùÉ3jß„T`HóšrÐÆš×I«†æØÖ>œèç}uHá¾_#5A‹ÿíüiQG£MÂ#sB mów{ï8™ßwõämÆH Ö'ž'¢8ׂˑ‹|_¤,»5·ƒ£+Ö9fÝ™Dµà ¢ÀhÑ|“‰?\òLGEÃM]sºî$=¦p¯üà:Žâûf}qùá_„ÉHO²vçd†eÿ£=Bî—'È,»ñiÍ REmþk,jš¶qüăò±ëÞ‚›æ•#'ßM8=Dljýá¿–÷„Ρ@É®ÿCµK™í(üøÅèO`æ„&±—МáãtTôgsWRך±VÜr€2Z6xLêê+ĆÃõ²ãpÇpçc.=Á«¾îÀAŨ} ÚBþÊBÁHÅ- åD»„—%>¹PÇ9ùPMBg{»§ãnûaè€J¹þÜ.¨ñ™ìWL ¥È†8|B\¸Z°Ñ‡-0;mKD­âä©¥É1îêJôZ!Õ¬ä>8—&œˆyŸ“r'³Q‰C$pr“t Ⱦ½NÊÈ uÜú G!Ñ¢¢k©ØwgÇççrrOedd’F7†~™½Läsa]ÜÝxƒN :oj±f³4£¶Ø·ÚËF/`:`k®xÉm¥pÍNP¸›ö‘œc‚äÛ‡Ož4/fÉÖx¶“abÄD~ÒýeäãÉé<$ÜX½Â)ùvt{±a.5G.¯—íâ“áÍ¥Ãåy r©ƒòÛŸ7^‡=ß1IF°‘øîƒ³ð g ï›ÀQP:?3j/îíE Þ<Í–ŒîΖ´Û)ªîó:Û"ˆ"êÔÚÕ4#­ÿüâ?ÌÅ•÷ÚÈÍÃ#»¦FC/MÀƒ“Žž¾ÌaCáò憂ýÙÉÆäû÷/æÝ6R©mJÎí’gd&DàcÅHŠQ9ÒÔm¨¬}Σy°é³8½¹ ïlÞV´«ÆÀˆ)ÊeÞ:ºZÙX"ZòC,ƒ¥º{Ÿ skãÔ;Ö¸4UÆÃ•÷&.á÷kÀ~B_IJÂ@011“Œ= ÔKºb($AF­ùÖã|ÊTIE%àµÐ–ðÀfÕtYmmís~W$$$ü¹ï/Ìm†úû‘·¶¶Žbš]®ŽÁCÐ LºæÇçÖX6²×G …߈MEE¡©åå QÊÔÅÝH°isinnƒig驤:Ÿvð+`F3#pšªkì±È1*?ï1<6§ ceÅ`n<ýí”ÂˤRë°1^_œšJô^,îzÓ‘·£³,‹Ýß߃ê‰Ì‰¨QÊF°ƒÃââ[b!!¡w¦¦0~2ç=-³J-7÷ÓR™¼H Rˆˆˆ(÷°´dpä%+ªR÷¸Ú¾/‰¥|âq±(“ãÆi=KkóЉ«PR nç½iãÊùL±`ð 87ŸXŽ2+«’õ ûÑ„·O±€ûœ7ñSSSS·OàÁ¢JfõDÛu!¸I ¢ä}~ÿÉÁ¥ú)©ûˆj'X£âêå '7×ý³…Z!#--òîÝ׆‘­Œa³ÅÕÕ€ÒR–‚&üHxàÿñññR¯_w¼Š3o(–JöcJJÄׯ”`<’ü;Gví›^ííÕñZna!,ducƒ‚’âÜ«Çgm33Dô«–h5ºs(¿ysÔŽ&DúâÅš×i²Ì…… {czM1â)ÜvРV™¹´ÛåöÒŽ’Šji§¤¹«þ É¢RðZC#£˜ÔÔÈËKן‰¬bç•Ьrþ«t8cïLLÀþ)‰<ë(Ñ ÎŸþb7ÿüNí¹a‘¯t( ‹¹ªÍ)Àr$Šà^<04;ÛÅÞ¹p_P ñêeËŒdè~z†„Ü~5£Û«Iõ?ó¾§acg_ÚÛC€ÛÁç{34Õú§¹öý½O($£:‚I¼Cöçê¹ê^Ì7–u£‚8g’$^Xxxx)Á3Ðö3‘}Z 8më³—Ëá̇'CB+q¯[¢à!Šy*Üž—,···°ÌàÖú?àûSôê¤1íííѱ°`³‡%%%É2”óÁNllª\,¬·“õ¥^šôå¼µ‚ÀädíŠNý‰›¸¤¤0 ÖÔÔ,v“øt¹Ì81<:ÁÙû½ß U¶gÏù¶Ë¼›O¹j®ùZ¾— ×½ªÞ2X »Û9“’“ ˜²´Ž¿«”ôöö~.è ` Ò,œw¿µß|Ý|™F%ÝžúÜ'+7qxxX£Ò{ww÷p» dy%Z(¨Ó|¸ µþ±¼Õï³¼Ÿ‹·çä_÷>HÛHlÒ2ß®åAj®ø¦y_š7WUÆ“‚ìii <ª6ç²€÷ ÂEjí###ù6FÖ £4\\æF®®ÜLúM Ì’@ĩݯ²šañ¾uõ Ôf‚¥>ð\ëFºžB×ÚêjË‚¹@޲Û.(**êñ0«ÅáZ ^D`iñãGtp³9‡1VƒSòÖ©Qð‰•îè`­"‰…&¯dÏBà^eâlÍà`ŽÚÆÏˆŽ4©?äR0Qåe2æ¾`> ^¤jÞ¢‘@ãû˜äÙÐÐP°<žìÓNÒØ(!ÅB¶ D¬2=47#a9íàspÌM—ÐðþPà&^¹q† ÝrÇp#Îõö¨˜¡¦in]ãKUÒWß9¸«sqÑ>‹mG‡HÖe.ìÛîíÿ:ìGyûåQ_¬ÍŒ–=uË­6SË›}}!€·ôõƉˆˆø1¡D~vì|ÖaˆŒ‡gjÛ#["²<)Ž•”|]TñÃñ±} ¯ÓvR\d¦¢ŽÏÖX¶$ZÁ%³NÍÛ1= ³ PTG-/*''Wјûûß”?Sxž-ø<Ü9å¨n¤Ým]½*KM‹ £7À„aŸcJ#u~í¸Ot§E2Úõ¿«k×Ë^OS&ÔL1Ì6–û–t dÝËro«™*yïèÜ•ÞIÝ0¢7o  …Kêô2a4ð<¦m?cõÛ¹:§Ëոץv+…ºõjÞ5ÎЫ µR¾ÎQ*²äž†¨Žbÿª]Nn7ºyõyLÊßþËËËàÞ€OÁ\Pÿ5ï¾ÃØp6®}F}n=ÞúŒÕãÜlndT;;»D~7ûÔ»1óÊÛ³}j™Ÿ'æME¥Îž%uÛmþ"Û‰ O¸ê§™ ° ø»«»;9''ð+™™™sFSSýê§ t ÿc Òó*“Œ¥Üo$ˆ‰‰ÒpëÏ/ì@ Üøv½üCƒÁõ ñìkSSWgø+CD M𣻬Ê8jßù`3èþYýJ±ÏYÛå^LÈ=ù¼Ó8øw!4ºåÒ­#ò’g%¢àjÛáãèŠwˆÍ_ÞÓÕ 8Ç~òº>iŽŠˆèÂEIÁ*û»ôYƒÆ*Ä’düq¸hëpÖƒ3‘¯4ÅÉÊè§æ’°`´08O·‰’œ’©¨¨–CiÒÐ?|ø@΢L§ê§ÏŸÃrsik_1‰á|ÏÏ—ù™Ä!{y}¤¯¯‹KãÈ;‡2…S\\LNO/‹HÐiˆ *0½Yê%zä‚‚zzúˆd޼©®ûµéé采‡è¬¬¬YYYËA3ž{÷ÝöNš%á@ B´±±ÉTÎëˆ"â HNNžµJ çç×áæá FcwyhP»7Ô¥¯.'Šª†‹´¹0°°(9-'I»" h‚žâÙ·Ÿá—†O]"Ð] àqnopÜÜÜ–TŠ<¢ý  :²£é€8&no_^Øj'°Zèg(yO…¦ h«¨¨„€¬mýýÀ³u ¬uŠki%õôô ƒÞ®UÒ4¹ # Då }l ËcTÏ9'»îUNà;Éq…9ŽEþò¥ %5uXC?¸—„/CÕ=MØ==¼š^Œ¥ýà­ÖÀuùÕÕæPúhá&®sÞ”½3ôL½£SlMTû]®ƒ®×hôšR÷o%æ*!g˦›ˆǯ³ãK“°°ÕÛà)àMBô}îTï﫼éÇKômÂÑCyëa¥CP¹e¹A¬ªõ„ÍQ¡ÞyOTEËÏß òþý{×ÅÅô.ÓiT””oÛžpq QP©pŠŸÉ\h¯¯(?ÉPýÐbœ…@èâ‘‚ÑH‚ÒÓI  nÒu;ïûÇÏŸá¥c wÎecRRaáàZÍ^¶ cˆ"æªÐy€ð9Ë[€ëóðà)))»Ÿuª‘HÇÚÏ$(Øg ˆ!äÙ­FuJ)^7çA( 8ÈDZZì€>`_H/b!ñ>µ³Y­·ä8Ü=÷~?r©ä¼a‰·Á:—d$+*g×X_þµ¿äkª}/ XkïT‹—˪±”  zÑííK|V¯kG°Ùˆ(âíéÈkPçÎêvüŽÿj5.Qȧ©HÌZuZ”â·36Åa‰î¢GxAQ{æàûúÆ" °`¿ýÔ±^,øx_’dyeÔI=‚çÔ—¯`‹ñ F­ˆ€CpïO2ÍoVÎkÈ£”xû–²Sën‘À„Œ†fãh‰R«”÷£à¦ð Ñk#G6lÆWà‚¯²Ñd³®ÁG'9‘„™ç ó MðÃ$ч@â•ø¨³+,ßÒ缦ç,y|»„|ïF¾É·ogg›þ-EÂCÀt™µC†™•}Ô†Ì<Éý{œŒºùNñÃ(sø‘¶2áÜÞ/ª_¡½âå_½‚{”L5zpQJçŸp˜ü|®<¹R½´´´Í‘ïhÖgj®FKmU¨á¼]ƒczë‡äYëJÿ=³EÌâ £ûFDžðbcÃ{?”´ã½ë–aÜ(ªž[«Þ¾qƒÝöƒCa©¨-$.þF/Uöäöîîh)˜DO}¹ŠÕ ?œ?4kš7€³ulÊÇã;×-|-»›”U%·;ðÌßqˆˆP RRR¥v”£JcéÄ@YN/»N÷hæeεý3R(gT$n¾·ÇóPœa VÜŽ›è`IÔEíN=³/l…Aã‡@Xð#AfÙûj55Càj  4%5•Lóü`!úýÈ·% .µ¯¥ƒéÃÛ“¡ Ïö™Aөй/–º¢ÅGñ ¤QX`3‡-0h·[˜VGüãÊÝÓcNs¶ûõ‚ lþ9¯cîØ…¬ŒÌáŒMsï‰íü惼·· ¸³_^^.q1¼å-)* M)- dp hãe šxxx %ò9K_®{û€Å6|¾¿†~b·ý¡Ð¦ÿðd¦ö’—“(Y"¥õ3«éÑž¬&wE-$!Zu”Jbâ' !n•™Ÿ‡¥ 2›ššnÚ àÆÕª±u TÝÂÄÆÆÚ¯J7œþ–µ¿ æ/õ¼²¿’ØR"P[†ˆ?(ï Ç¥¤EÎüââêD-¨050 ³wpmÉn¥kŠ·gøKTe‘ôÿL¿À'™žžj”’‚ YŠ2ë\:õÍ#ŽNòô/##È+f¡0ryq.àµQ;ÅK˜•ÜöXVÍú™ƒz¹àÍWê£Ç‰åìÛé)Ÿ a"Ò,)MXÄn{—E)Í’<ªá~¼YG$–8<9STDϼ}Os—±ORÁ?­ñ~·ñdÁ¸¸¸AA}Ù/BB´FÚ‘€Ô—ý:]P‘.Ø8L:¼@ÛCîXú¶"̼Ëû‘Ì£fN<66Æ’üPséz¹\f³ èv5὿¿<¡  ðœÇD`o+ƒ®-§Êáøœw…–é›ÄVŠÿõ|îœ NVÔYQy ²Ñ¦l‹Û+ªî3Gjø"¼Ô|»¥d¶Õ{¨ÀÆ€´vEìmË_!ÖH¶QF³vëðôÆù7´Tô8…cåþÖÁ„lX7èÜÖZj2€€Ÿ· ê‡Y ÿo„ûû{µ»x™œÛ{ qñYÛäÿÂGµÏ!!!Û‹ëëAÑB÷5Ò;€9}ÓýìÒðÅ(gƒ˜8êÓ'¬Y¯‹9ˆo£Ç4dÔœƒ_@ èšsýAMÌ °—" þ àà•ãµþc{]ŸäÐÜ•¼úìKØù¹•K›æ¦;s±Í#. Öl.÷Ìà ˆJ÷=ž·Rð/-¶°Uê7ðu´Ôq¡é#¥Â¾—ªž{hhhÀ^D þìéöÕ›X0!ßÖ8Vx_z0…|Ø<†rÑ„íACËLƒÆ§ݾŽ91—fëxp™®™çð¸U•§]çø‚ØmC;X„(€”pèîé¸îsk¡§ºT`¥8Ÿþ':Ž’©ò@ˆü¤mD^)pô1oÙ½å¡s@)M„%'>ï:„о¶•= Üf±_•ÂÂÂ.볊£yÝ5[ëPf¿&³yæÄkr6¶ãºXËÊøB¦z5MÍ÷ªu‘!¹Œq”yºQŠ_Çç-w„& xpÖ9íÙ4]Áƒg~c:æÇîÀ&BÇ÷4¯ÓtL}*µPÐТM¢ýC,¿“j†{ ™o¢¢Í6~ÅÅ:÷´­¦ÀÀöS‘ôžÔËk¹³ð¨6—/ú’ÌR(XØg°¨=CAÜ€™lÃæoeK?~q£º¤%ãJ ÏE:ö—Ç'\,Ôq’&F“}:0XÎg>´¯g”üvïŒ7ó$KŸñû¥þ¢’zÂ%ÔÍ+tYù ÔëèY,tÈ'söZ17ß²­¥GYAôûXÕØF§ÒÛÐÐpqyÙ<(7[c÷œÃ  \ã±Á¢â£fóóó´LLÅ<‚‚ó8J|«ÛÛaàQæ†C°x Ô4Ýd¦/çuòp €¨?%à| a1hƒ•Ë\»­oiÕ.””_§ŒÈ²ÆM ÙV’ypÑÕ]¨1ù>–3+¨,÷…Êèð·æŽe¬šì”†hÅS^Ò’€›SËúüNž¼â>3 f€‡ Ï[?›ÀˆÃ¼Y8uö¹i2)÷8ë4ÏuÈWÒ5€†LòÐ-<ñØŠþxÃO0‰\@t/&˜0tò¯à'm³F¤ P€OùK"#µvð(õßô|ëEjÞ~ì3 nîí~‘²,yé¯sŸ­¥N~P¯J%Á]7ÕjSJmã ¹)Å\sYjÉáD733Ì>õ§O -úY3õþ~ô}\]?I]£;Ï]Þ<ÊY‹nÉE›X²Êew«6‹ñãåvP#ác˜ûÝxæd;Ò¶O_·ÞþÖ¼WaØÃØ¿³Ùñ#5JßBùùù-nm…NNjl:ò¡Èì1©©©^sl‚ÚJé¶ùF€>/®¬ø¦Ü7ãsÔ‰»´³ƒ/¨[ï¬Y¤®o9úS\¾¼T05¬Üæ;_·´~‡¦ 7÷ööŸM”²Üøíüyq2¬ÿWÂô£\.b ܨ76­wîÙ_÷å(•¿wüMTÔ´»v7ž³Ôò Þ~‡Þé$¹Ü¤+ºO·_àLHœ ; û)`l¥ª®/ézZø"aã«ø&-s çÇ”äÛ»€®Ú÷…††&²Á3é7=…hüGÕ;£¡d3«ÞR±··žë+ ÌgÏÀâžçq/ëR .‹ÕôKðÔLw4 Ø Îd0ejs2w+BÕë!ߟzÈ·¯ÁÜìøi³•oU‹oËLý(_°ÊqbiÉ9õžèÖ×:Ÿñ‰i€ðØXÛôÆM0d®Þ…ëJìa]žÛW~ DOòûž·2.O“ö»Ù*Å'þÔ É³xh‡P ä-–bžË¬*v—L¼>ö¼–kîf"5±°˜¥59}Ž"k‘–Áô™QKŒÿ„ÿ°ôL§aÇ;„úá¼þÝkÞ]BlÛ—€úfŠÙâ¦[Âa¹Pëü ,C¼¡ë£;2rsB¯Ú'9x¼Ÿ¾î(&‹IK¨Ê“ÓþZypj]˜Rá"¾×ëÈ ®[{|o@2 õ›‰ Ç$øpë@ÑÅÝ© ˆ¯¯/àH¯.óÆÌují;ÍõÚ»”i±&¼J$£‰{~þü$I­Wc› Œüe »cŽ„+ì„×É-«®ùdÛmCæh†Ó­°_JzÀòˆ'´\o°©qKÉQV‘û?5€—ãeg †ŠÓk±,m±DgÙb 0¢.IPÂjÀ3^"ÍÅß?<52›ÆüÁäCóxĆÆð"±-¬Ó5j *f6} ¾VæxªÅÔ…06µPP‰vËG¨—Ùç.9öLiåŸà™=»H`¬ËôZˆ|ÀoîÈS"!ðg&u¯0À4ä¿û‹ÌÓÅ5>ŒJæ7ß:-Jƒø›•‘Ñ*R³Næwc[L §W-™åµà9£RߤլàààÙæs{±or_üÀƒ_€où¦¦-¯¬i{¼cEÖá×ÐcÏbi6Ï\—Øž.M*ßc5ÇÂ?«Sü éð‹ÃÁ–ƒ²÷_$J²K doYaæj8ÝïÍÈóg.d}ÄÖç•å&§¢Ñ”@*DH·|˜ÇäØcÞDþiT‚ŠNS@Q‹*sQ&=,Ù/ SúÞZñ¸s_$®,eûÐ8úÞKÎ’ïI­ê¢§(†œ;2Dxë=Úž (¨ˆªu •U+Ô®Fµ³³ ‰ŒÈ?,§Õ4eu#õ@mz*RªB0Øvz­/⻹i ONEGFF6ÁÈ%áéÉß×ßÐV°›§ëJ$—íjOŒDçøgDdEUËê’ëº`•b*iLTæXš×7IWH0„žßƒùM3“›îøb[Ä ù2l«wnÑ¥¢§Ð¡…)ú µå8¼ÀN£Oû‰¦ÒBczðTª›WˆÏB¹ZU¬D¦à<¯ë NX¥ŸÞþÖþÕØLßÖí(ùšÆñ‰rÛÀÆï³NÄ\l)?vÎÇ&Q•ºÐ¿V  –Ù* 85Y–ÇyÕY·hû·Rh<‘äšN5ø~¢X7$,LÔÖvàŠ‘ÿ°ÅiMa&ögcNnO^UZui iBOZù­ÀŽ7Ó¬!Žâ$G£œ¥vìáÈìèì—ÔÖ±‹ï¤¯üôúDUóž´z䔯¡ ~£—`(¼¹þ‚ÿ¹¬+G·£ÔM`Ø¥¡º¨ýý `ëXßÕ2)åƒcOé>}ÛÉhRA ×\<Ò½Ã÷ì‰ ™ŽØ#ük知sñT—BˆÅð¹hd‡KT'ï†!¾²\ Âc6ú-¿Ø§C¤"·ü„\ >÷SÚyŸ/O€ò4ä5v+Z¨­ÐòiPñnð v¦±|Ÿ û»/Kx’ ú¥úEÒ2 áÒúìw¦³…®÷¡âÒêž®ä/|¥ÕÕ’÷Å®ïdõ ul1j…Ô8=+5`ÝçV¦d00äàzµ(króšä(9ÛšL™I7rñ…å_ì/1!6<›SÜ¾—£Ä¬¤ùÇÓA©bã)}Α4¶æècÚTú\$Öi CW¢’½a‹6Ûü­ºHŒ’Ü\  A¯…î^6]oӃݖñØá ÔŠÌ7„ËÇ×VcQ½¯’À^ÇST5ü4ÓíE•.õùKa´^‰¤¡!ùO“Š"±÷···,ž—‡IpP)sZ!$«ã I6žÉ¯—HÉvmôo´¹`o;Qbýzµ²¾åÒqQØÅ¡ëÎæ|ý@‘puÔ@ÿ€ý;ÌÓåDê,gk¾¿Z¹T)§@<êT¼â&§h¹GñH€ dz‹?»ÆÖ“|Û3Ÿ^mÿNwiY÷âVc¡Ó4“mB‘=éðBimÿ^áÑá;ƒ€ææ œ;ê…ðäBÝ4/0D¥91•³éô1ׯì#NYÄåkU…$]Ï•³(æâ%ĉ”Ç]Œ{„rDÖ°U`x©vÇ*j *[š*Ö$81ïðÜ+Ÿãèt¬Uö¥Ñùzàg\˜1Ñ ÃÊïöèÅ4?[ßG!m~¹MÜ¥Î1’&i*Õ&ß·™÷ mw'Ì­ôDë¼4ÔÂëM®Ö`Ÿg¡¼h»¹ÖmäŠ_,„+­Mq”¤Qð£ÛÛÌõŠÖ› ;±ï=dà‡T߉ëq¼Tz¸¿=„nœzÝìwÕl¶H¼IMíxQò¥ä×À”sa¦¼U dÐ’©åÈ¥x”A —ܶȄs…qˆÐ™TJÉ6ç?%Qmö&ݽ/VtŸâ2 UႱ¢v c 7g~wÞÖáÆ}·/ƒ–t¾m ~ꉘz™ƒ 2£¡:©gæÇ¥ù´Õv”»VÍh-Ø_¶Û5ä•¶YÇUùWo¥§Ùƒ~¥Ín `óÛrˆ8¹ùËϺ eEµ«XµžK¶W$`ê¶§.a¯¶5u ânŒY› IՀ͋ÈýÉžÁVmò.3;™èZ`ÿÍoÎ^JÒ!UÚæ[Â+>©ÑaÄŒÃBµLóbf™¼.·Éúy_ïwÿøÒËp Ñz .©Ó ìa\%¢] nÔ¾Ý4ù‡Í—õEè ÑKÉ\†Ý L–芓҇ˆÎ~ o¹ž&/ŒŒ`Vjb7«®ô,þñ’6ÃüZã·´­@Š¿÷Ÿc½U½G[â²"殮¡úûÙ%«å#uåˆm'¹)]*¢a̽üç-ýɬ¯‚K,Y‘UVU²_¾ ŽuÔõßIFƉËiÿT™5žÃÈ’ÄÛÆý<…–ñwùU¾}ë ?Å%ˆtöñ–ˆ]jú³‘YZÞƒSbp 6÷<¼òoŠv˶иaÈÛÜÛ‹\^6ÔaÜM¸8QŠýÖ^ó á˜+N]X3ØAÉ…ù£x~JUÊh¹Ã’ë_ZQÑþ;Gv¸@Y;X´9ŽòIjK(àKLE& êÔ¼ôa„îpw¸ùAÓßÐÒpS×ÂÞñ$¶7¹íĤ{|ò$‘zÁ—›ÔÉ”•úƒaà3”_ èN²ÓÃç˜C}uµïl{á` s’ÄãR¹±©KnÎKôÑ£sCˆ^tQnØGÙåÌw4ÊžƒŠŠª õƒ–F+Š÷ ‰ËϽáûõ,ß⟰Å ¯ÅÀˆ-E-ôÏ/#ƒx ¢–ó½Çnäâ’’3¼X׺¦rÔœñzV¢­ÌZŸL¶“2ŤƒP•Ó€ÝGz²ÕÌODz±áVad±É¯öÅ¢e+ú8¦ª6V#‚£Y?ÚswNÅÇ6ªi–2š¶ð';°L«2¨‹F ­ Þ6èÛ[5¦Ù[Â%œEÄ‹… GÇ3mòòÔÛü”«×PöQùÃT¿ž` yddÏÛ:ÚÔ:ÄQJ_n”€õ,ll°µ'ÀÖ_ ßÅ ‹‰‰I* n9vØ穈ÆRî.4“¤^LAÒ21ÛE$&%%Þ)[ePXxCsEÏ“ì$ ¡ìC8Û£·<Eà“„#žþZʻƒk‚o‡‰e ÌkôĤ¹öÿÝNÜêâ¦ïϦªm¾þöç¯V–£:'×ùÝšmÞhU=ÖÅ]d»ûrˆ/Ëäo«x÷*lGý½y´Í_ƒ¥M¯Ð[:g ö¡8BEÞTÂ+pS¼P´Á¾ö!Á&|s¥5íÐøÊîgQP—aZµ|TrÝ>X¶VŒ7ñ/ò£R³arÍrØÞÞ^)hØ£ª°Ð£ëX¡_ëOXiE ¨¯ç;>9Ñf(/jÃB,ŽOÿ`Ì34µÀÎpû“ñÖ¯â×OÓömv>†ä>û+÷ÏMÍh;œ^ F5Lá‘’—5”&PmxÃØ/¼¼‚EÆeõ <ìªZ ÖÚÙ™3)Пšßp‚1žé¼õ}:0 6?%§1¥Z 뼿–´é}è»5B¼j „[S[_ƒ¹Û§%\èÓ9’îvâM$I®z ëÝø1PŒ¯¶]Z\m*¨qö™Ï<߬ŠiyJè–í±°:<  ¶Z|ŽcÐÿ™q²Ì¡­½ 6‚#ö:UâùRãyeÿô9KÆ+£ì*²Ãs¦û,ýð}KÔÀZ·§&Lǯ-ÐíKhö¯šõ·ç7È©²Îƒÿ¶’D¥¤¦†GÆa[I}LL Ác7Ñغ˜÷8…A­o[À×܀︑M`ª4è·Ò²÷U.d«Þ<6¤œ”kŸ^Zøxúö/.Žƒ|ù0@¹|j®xZç¤ï½uáåöçgƒ…ÅG¿Ñ ìb¼Í^ŠòQNôZ-¡  X³ÈšÕ  ìµZZZR›Uöq”çG°¸aŸòÑÊt?¨î ¾Ï0?Exñþ‚3^t騷œÉÀ/}x?òMWÝû¤¨z>ÖæcãÍ~}HT” [L.ê}Ÿ¢ÊÞi{ÕÚFFi¶<¹ž1§æârQÇÇ ÷–½‹+$Ý"-š·à,¼£ª âkÏëXh’{ýZRE Bú¸‘ÎqBŒ KÊÎþ†Ø+1&†¬Ê×fhf´ va듈ˆGã­B««¹ÂÂíˆà1 jŽ(‘ÿ(Ú™t´÷± M7û|*¹°hB·,lììEÓB™é tv˜•’C0FùßrŽ %)RCâôH?áÖ¡Ù“Ç„lR#"Û^žÉ^žÚ˜Ýý^Pü¢íõfæ_·­Ù oÿÖÞ€¯ª©á®Ý“5?“ßKÏ­uì’À§OŸ&yaɯÿœÝ5û y];ÂÂÁeë JDPI-AVAð@†††…‚/_~JÏ6£T@@@ËÔ0é5¶d޼º–ú±ZU– º3%ww]„¦{uÅàhddeµOŸçnÉQ?ƒhįB›{Œ—èG‹ ¶·`eeUÛÛÚÚ:žÈËËCDEµ¾z›7ì:_8ü{c K+‰›É‡YøAZð0ÔñC[5S`£èýµÄ« q¤˜\±X¬–lm °xz¹§WÉ Sò.ûeö{ÓoòÉAÃÙ’+ûõ]VÕsAà†8¤ôm+4(_-XjÐŽŽMU=†ó§ÆþÎÔôak…|;7B‚b} 9ø(_gbBuoÔ³rÜD‡ÿ#ÛšhŸL) ¾ò€œ‚bieÅÿ »)X³yù ²¸±Aóp?Ö$Ñà¬KIÈm immåhðWÈUM«†òR<ymÔ÷éEï˜ÿÆ€Ðø“Ú2DT/ú£½Ív$’o§‡?¸šÅ!U áú~ôXš¾»P Æ|»ñâÝœnü+É Ð<ƒ˜c¬¿õÕ‡3q¼Ðz„ì]?âô×·Ø+LΫZB€=ü@vV9xÌ_‘.–üT›x{ ‚-fk‹œÇ‚­fªD²‡Áí7´›øðEx¯6ò-‰ºäµ+ͱAuT¶dô2øÂÌbÝzpË·wï_··ÕvJ4+àõ=à@qÀJw4øZ«ž¾>hPmÎu}aÓ†­n £†üËþy¯„~æð¥Ò 3%¨ÔŠ¥4˜©²š(sf[Ú€ Üÿ‡»¨¡~¥¤„ñ(žH¯d–´wp`u=|‹……õ²îõ›Ñù´„Üß##€}Qø¯õ?çu¤eÒ­]Ý›£ÿ¬2qo½Î½ã^rsq]^^NÝ=öëá{>&Ey£X×D­ þÉÒTA5{Í©Õï&ÞdPgu²>à\H0±»Ô}íÞ\=®]Oo¯ˆ¸8,¨9[î  Q’‘Al k¯fµÜ<¾øÓ ýRÝå4}´q¾ÉêÌyJÁÄðX,½__AeT-þ&ãhÒOƒ‘Tçã¯cÄTæ#¼ÏVÎ;¼ÚHÏöy¸‡ø‚›f€WÙˆÙ7)ŒVDDÄÖή5Zè>„o¿Fìþîå“ï¯Ó?op Ø-Â92""¾¯D÷ó£öýX'÷ß íÆÛà•‚4¥%X@ì(ËÜ訋 ¾©r¶ö¬ØÂÔÁ?óÓ®òæ_f¬•ÓM|æ«ÅªÌQþ{£C<ŠQG¦§úi:GŸ®“\ó|9^Ž„„Är¶Fiþ>œ¹ Q__?W…|—•y#?~eˆØ:;ÉäˆѶñ`(òå:·MÇà *1ñ—X³èÚWÞýúZ2½3ºÀ^鸵alÄõávCHIYÙïçO¹Û»Ÿêka`f_¿+™X9ݱ'ÇÈuû}_ÖM,fbB jµÖ“mØb&ƒ¦Î“#—fÇ Z]Ü«¾@=¿!á·{‰wÁ#%>Š Ðô¥û殇ģëg¡t‚$ %LzŽå`ì„LÛÓräeù!bÈÌËɸL-.¾] ßu©1¡ÀWö$['W|Cîs{yZ¯àå¢ÿÎx‰@‰Ç^¡õª˜!5:W˜îš7Ò<>ÆÅµ? ±Væ« Ú ±±~==RnšßGÀî«À‚n‹Á+ž´Šfg”—cÉ|«ýjõ™fù»'±qq1Ÿ>€^öó »FcÞ¬w嬴±1dGù…vµuç|£ÇÒÁA4`þˆ`C‰ãããÂsý¿ëõ&ŒŠ•”P/w†ƒ¿ž#"!oBiii°G3¨ Ð*zöì™ÿä¤0(‰ÙM~š-ÒØ6vÒ¼½ÓßM¤ dØßsjØn…à#àêtøHR¯îàÆÜ8P¼m0£Oß µ Ú¨r™oÀ‹õ“墯 ÑR6ÂdÚ™(±¹Îã®Úf#ÔÁª±2É(ƒ‚|Ý£ØóÅî§ L '¡±¨½î=`5®GY ·s. @r;>¥8¬ËmT't+ &†vˆÑÑ7š¶“øˆ!„„÷5ðȈˆÂð¹W šzzQo¾+T~©­ &ß¡|Ê1bÖ@9#š’Š %3¨¥‡ö½­sNŸhJIIéHd5<1îH‡a««ïÜ®€Ù&g`Ó{˜®"Ð…þ2`êjÁ&`w¼¥ÅER€Ç¬ž z]‡©Ìí ÈB`»e®Y=¯~´¢ÐEý[I«Ï¶F6ê.KtÁÝŸåT—y UUÕ6ò¾¾>÷è “èŠsáÉ©©P‡Á9[’3%)¤£ÞüÔåžeYâæ óý/ŽæãΚª„œ›zoÈ˱ÿƬ¤“ Yqñ"±ÔlÜï\ëáæ‘½ã™ŠG3¬• xØîH±¶H C•J¢ÌÔù›ëó÷ŽèfäìAËI~pÈ`#& 8t¼º£lkkëx¸[xèÝÓ­wÆö8ߢ”ÚÏT>u,°EC’vŠ€ÅU‰‰%·n¾s>X^ŸÕÚšÏí,??G ¸±qŽëúÓâz“†ñ‚’&:bïK»¥68°‡!«å$ «QWÄgO‚ÞrØ?¥„òõ”›ªëv Ø]̹h{éÿ9žb®çÄ$‰?"™§’UXøtppb.q ¶áåME¥l}ËÒóúÅøüüߣ*Àö.Ì4¸±ë¹­aßžÏØ3Hâ)H³AF²Øòᘓ'|ìÙgÑeóŸvãQºcà‘(n×CRoÀCÝ}à+'MaTö«9ÞAl«ý3ë˜Þè–\ˆ^&;U‘¸ï‘³9'Ø{/Ðíœ4L %Gޥ铛7¬óU~žÞ(ìꨴ_“_1^WWWÙàÉ<~¨ö]hJR¶ij—àßwQ—YBÝ*V­ÃÍYÉ}xŒh•NÜ,f?/Ïn×ð|.%j§xSL²'vßéç§±”KíhB@|ø«6ЀHÀV@M÷×Åóµ+é>gî v¤H»úÚ€ÇÍÎÍYcT:Ì|yìã£é0ÿR·Îñ¨…ž«wѦªØañFþè×/ÅÝÙÚ7i–<¥ç¨Þ×P·µr­ÓÌ3ø¡WA8À=gÌßeý¡LÉô?àÞ[ê¾ÔúŒfÕÍ(Ï n€»¹ñE:N›Ž•Ȫ‘`q˜M=…4×ÆåŒº­·F—Γ‰}±yœÊœ`±\…™+\ð,®Ø.•Óz6<ï ,¨n_{g9ß0eNì¿nï$¤Nã¾Ð|g·D­˜(( ÈÊÎ+â`SÛpƶŽÐgk÷ÿN¥œ†°<ýŸÏÒ¶"´IûèèHmï¿îð¶Ð•]DûÜ”l€(*&öº­uØXî¥Iÿ1-aõ,WQ'gÌ,óÒÑåwÛuæ;غe@¢£>ô ©‘î$³½;`öŸ‚H9CgEµ;ËÀ‰œ˜©æxk)Ý»X'}gæÝÇÇùl0•f­^þC °ÀÃtë܈МÕMë௯3:öÁ9î%Á“““œ´ê§§QPë~u.a›ð]}ÀyÛs"(EI~]‘”§G‚ZˆÙzm¦ŒŒLdz×üdÐ00¯Þ¾ÍHäuʧedÄVRRR»±”ÓAÉËÏǬ0Àljjj›˜PÐÓ“T—ö³ìììÀ‚‚PcŠ"”itl€ML+**@QWHtt®(bªMšÇ>ÏÀ§€p).'Áß-¶ð nÝñ3ðuÅm33Ú”?.­¯S_ÌT˜F#¢¡á*((ÓÑÉ zjX³?jØKæ'ÚxðhL6}À°Ùiu`Þ+×5ßÐbALí$–c<ò^ïÌÄniFÈA®Uo8hçûxžåÝ-ÿ1Ý‚ZŸ&ñw–œá(œ!:YZ^&È­óî$ÙCÁSø£>ú’bw` h@ª¤ªJP*È5:ÆLI)A¦äø*§Éj|À£àA&Ñ<•°Ѷ¾§÷Y¥VXSòóëDÑ ÜíŒÍ¯§ xt<˜̯dåŸtG7£Ò¡æ~€îU…e&}Ÿq7]R`¢ùåÛ¤9>Ýâ·Ïäz´â,lЇ×#Rsl\ý Æe‡Ÿ-“”ëÌà³rãpYŠûäá¹›…nywBZ|{lÝ„H¢Ýø¹S†Ü|æÙ³Ûº ]5Ô;ïåOOOçpZþZHàqXÏŠŠÊolläÇÂàH¿ÎOùL(ù÷è\«©JåÏÑ©º¯w.ÅZãÜÓ˜œZ6ø¦ ‚¨Ä±õ…6]4ä!vmVÎtc0ÕÕÃce{ivûŒã]ú`*ŸéòOóâ|Ÿ×¯¦¨¾vÇ•ó…[|?fµø¦¨–ÿ{|ÎOIß¹`Å20Ïmîejëܧ õ„ SÒÑ…äk¤ÂôµB*o'€u¥$TUq˜õ~Æò3àC.‘å+ÜÏÌý"ˆÔÇ&û¸yyoO†NùÀw&˜üLQ/"®çÐ\ÿQ×/0”Èê$µ2·“õÁTY55°-,`¼DDòîîÀãG½|ù ÏøWOɈnO GÙètµôÉðŸk®« ’ g FLÃË›t¶3‘=²•ÈnŠÚŒÆå¤…ö雕Cƒ^yûßñï0Üdù¾}¹iîLqÑ|ŽÎ y2üdÕ5ðXÖõÅšoc£˜®÷K €oû¶³#cc‹}ñæÛ§p£Ýší¨Æ‘&¯ýþéââR^Qq°’¦¾°;Uñ~ä xL¿µµp€>”œL ]eC•ÈR†Œ`ið'Áõ­ä›ïè•a¡¢ÀSäVÁ!¥HhD¼ŸÀ–£( ·W'OPQ¿YL›½Ä÷ôòú"äÓ”7’Ï^´7pD¼@|p´'Ÿ†ŽÐ`=Þôí¾î…¸‘íÑò+÷³mãÃzÀŽ·}ÆÍ+¹¹¹ŸïN˜½\+¾ewÖQ5Â~•Ç2àB‰HüWÖÖLsu“ØXûñÕqqÏ|EÐt‹ÔdÓ9›iô¸ðÎpã€û^}/Ò 5®1Ý—0#~ö §€P×íË}ìþΧÈo·?K &ͪ®ÅØúÎŽÅè±|›+†MF¾Éÿ¿H{ë°,·m}øUTE”.)iPJéé[@º»¤Kº;éî†ß|t­µÏ>{ŸëûãóºXºôgÎ9Ƹï{Î1ÇÈäaЉæ«uv‘ˆ~—»}ÖìpP£|ùËVÖϧ¿·7°÷CØÖÜ£cb²n'?s;Ÿ¬=Ò«®®V«¶JW쟰Åw&www¢UmHá¯v<$Ž’5™X "ò°7žuõwúzllläe¢§'Zãð0šGU0ù·ïÞ½Ë_CG×¶pqÅá¥mZ ¬p5§ÔŠ˜ ÜBâí?žÄ.*"IL6×ÿ=œ±HwrbàJÐÂŒ¯ôÄ/,NOM9‰ƒ!"MóÇæuã*..Ú¯ÔýÖí5 vçÎ@Ï¿ÄÅu­gî릲¼(ÇBÇÊZ9Ű+r¸ÒKICó+¿rî.Ô‰ûÔúIIYªÌtÒ—10>>>a ‰åµÁ´{ðð›—lÃe¦}1‰¡{™(ä2K%ç‹Þšì%W¨À‡3$%Ftôë{mz¼è‰£þ~V­ŸFÿ‚€Í¬½¶–ÖG__x€®öî”K}¦‚Ò5¶Ô‰œöíMMƒqYK>t¢}QT\¬5[cË‚ã ˜Ž··÷ýˆ¦<°„:_äæR×9/F*j îvww· }Ë6¾±D" CÖ&@ô{¢pžéH1Žeže('E hÁDGoB%–Ýš |˜œõ×7 olˆ^& ŸÓ—µ„®öóóóŸ¿~µž®æbš‰EÓ‘¾|‰"%%Åa»Ñº÷³Åq§zÕhý³€¨Êåþ>¤ã…ðÆ^\^Læq…:T;žLêDz+ä/ ³0±.}f° š}‚.5Y¯ôhA[M„—ÃR¼ûÉ·W¾•ónñ€ìXoÈPl©Ý­SRR n¿¸¼„Bd_ww³÷£ØW¦qoÀãFÑ(7ƒ×t‡àsRPV›Œºª¶viiÉš0ÔE"ˆ šÁ}wØq }ýK[œÔÏ¢·I;nª®«'7×—ò„„„òiƒY &ÈÛïΙ¾Ü)íç‘•WUUµíŠ 4rs«WQQÉ)P­”<>8¡¥¥…Þc{y²}Q5ê_˜“£¢ ÑÇ"v|r¢p h´Qüðï|›w Ü|ÃÄÂÊ5¯?ÏØØÚÊSQVÎLá"âÈ⢶-a`Fææ…}1 ü´44r@&ÎÎÌȽ6¯¯‹‹‹SQEv®ˆ¸Id<¸B$Π¦‘—ºaRŸ=2I;I摎JZA%ÃÌu]ñx>zÓfî{Y¼-Gr6;'gn®báï/+)a<nqáéJvwdfF |MyUÕYÒ4 öå´yC¶£££‘²rìÅR(oT`8ˆ999QY'''wÀËG‰ø}²‚œÞz Ú¸Pr£yÿvbÀ›bYÍ 0“‘ùt†“ãñ]¬¥…BÛÊmmmâqÌþ@k¥ð禦B)½ ýÉ–Oæ©ÚŒÀ˜±û] “³½äàäÛk¡ÂÐPäî(ZJJB÷«Ï xdâ1,íìȈˆ>ž9 c3é=NJJOäˆ]J“=!PB£ ¥K‹­¦Ùb 3F/‹ž áåË$ú©¡ïéßá³ú¿TêqÞ'Sw1ݰ™SØîÝ´á‘ „šWUWÖڛϹ]n;kÌfÎ¥)žñ#sß{ 8ôNµzx1˜« –0‹5¶› t}ÛI%@G.µaiþÚ,lX|KHJG×÷¾ZŽH`ô[ DàÞ†àQŽo¾F¶H}§¢‰F&ÞØßßÿþ6G>÷ˆÐŠ÷lîêêÊ`²„—Õì´e81=†Ÿ?_ yUTôLž°¤d{{»ofñþ`ù|¡Ü0(±*u17G€……ELB˨‹›®0méíEbee­0™ässs“ |.Ó-wP€n[à4øC„–˜³<ìSêMÍ®tÕ&©Œ«7JªÖt¹1V‹R®Å-„ÉrãèÎŇÃá|Ú× V¥Aš<õ¢•Ÿ+”l ®Ä‚ã†ÊÇ¡ hÐ…Fð…$/_†±°~1ðÝÑÚ“ž•Gè; tƒRø}­W$ {AE·}‹Kbôu¯_Ã444Ž6Ç‘õõW9:¥ýÚù¤wYî@AY(VÛ“ Mf7€Bú ¢qí·¢eH.”E¼ÝV•—g`b6'''/u9·ª0Ÿ×Ø™®Sûî±Ð.ÿÄÄÄW Äñõ4Ûͱ v€Eääàô(Ê_AíÓs¨ ®–oaCCCkgàÝjjy·ÏÍ´´ÞHKnº¸ž•#*)ù'8£«#«^¦ûýª×Æ~t5e&o_޲oêúLjT*Jïã_(§ÌXòHk°âVfq¨[9¶Uš*éú|£~PQäê'ÍÞAk°àJÞ,õÄ©Ã1Us‹…צÓí%ºÝG܆ùùùÐö˜6ß¡[ÃÏ\2ªK_ëNbëè´¬ôƯÏ7ð>¤y”€Zƒ[â+өΠñÞ¾} ÌŸ˜øÓþRÇø Ü ¥rù›Ö‡ÐtîžÎ»¿•—¯îÌW0ãH,Iô §¤¼C¡¨Ts½=ÛM¿´»+¤OÓ “~ßš»¤¨hóè(0žB^³—t ûI‡ · PènO•›L–x__žÂÉQóGžè>„G S&t yê›Ù»wï" !‘²°DgJ-mnv!‡€€ðüÅ /ÅB¸E-,^*++?èXYYÁaép•þÙ¾¯vE†;<ë–T¨ÁÑË{‘¸ïñX¤œSU¿ƒs͓Ҧ±áÓ·#)Á…ž€,àdgeQ˜˜šŠˆˆÜy©TPó*ª ž³Þ`&Éߢ¥&Ígw^X÷²»Síf½&[ÖˆÑMÙ>r%JïhϽjLçvßøÎü=²ÏU”‰‹WC*¡ó(H\@ô½““ƒ:>žz÷žq–Ñ÷ȹ©,q[í—7UÔß“ÑùãÇëÜQFǃЦÅB—þ%ØT¹q‡ßSàÁÅöÊ›?ÄÊþá9;²66ÌZZZe¦ÓQºÝQûÑ W‚·?Y^½Š’²L…„ù<•rÑÛUiôú«1ÀU:{{Ûæç“IÅ¢RA¶Oèâ¡ÛÖ݈A­•صÀÊYœ'P”“óª¬dÕéѽ¹:êhpvüššJ >e²D÷ fq_ƒ>©¹¹yü%Gâ^^^¨)Tu5;,ím¨ÞéÎl—#*`žð'j[ŽÛ õ?ÆÚ*iº#*6MšøñU´Çò~ž°Ò g'ÌÀ“e¦D5ǨÏj)»&ñ!HGƒÕèüñr1Õn{êsX˜Gm-§EnÇÞ6ý½Ñö¡û, ~=«; RƒûÛÖݧö2±%'ìJ™mU‚¤íÞâY}©·æX`˜ÉPÐIžïmª¤_ÜS2NrëŽBfÉ=K5ÃÀÀ°\î¸8Ùî^Mvï“•âÖìÛÀ Bô˜Qˆ±f[¶e-Xvjæ¯ßF¾\Ø?o–9¦Òˆ‹Üu„‘­>^çÖÙûû‘60®Ÿ·÷9…5ŸyUñÛxDçkkó¯aÐ$”-9â©ÛÆ…Ÿ=Ú|])]‘!™=ØÅ®éi,†^:uY2ádˆ§jíMpù·}ÔÈD  Ö‡V¿§ÀJ ‰‘àñ7«@9~»ÓÿÂ5±)ôsC©³(b2’ø‡a&ÿ­'¢?WË;ÅéòŽÎ|ËîäãÈíH±ž‘í±žx'wŒ £6˜†îµÆã £ð2(CÔ(àà訥¯ßQf8LAE5´[ëLóµáîÀÜ\Òáj¿"NPŧ*+G’‰!P¨ÅÅOåå,@þ£c*ÜTþˆ9³§ÏÅÁÅ ´ßÎÎ:ãµWRz&)) 4 *jª;žÀµÞ|) ½ÉÑû÷ß8ñ“~Œ¬3™Å©PŸDFæ´6’þlÉ=ŠÝæÛí“6yÕ)/))OÙêFýÏÀ…õ×ñn)‚!xɯõ©ØÁTª56áÇíˆhí[½ºÙÝl­·Ã¬ÌÌ?w—Å/ÞÉb°·‘2 °è^à¯-- ë/¨ø}ÿÜ®œ§³oÓÔ³Vdñe°ü¿¶6p:Æ]˜ôzÞ¦ šÌ}ZâKd$t¥u·oÓ’GÕQKwc$[hö-‘ÀñÕ÷*rVÍ¥XVµ ѧJÀ…Ÿw' þñf‚ ÔÔÙÀuïú¼‰­ú°´–´:—†ñ©¹2Ä3µÇRýåS§D½Q%zE€™!)ˆ@´”J•1377‡ ßAM|())m5Äöö O@ˆà Æâ±|VVVÁKóÆ<ù €¶AŽjmm-'ßÖÒâi:]µ—‚…à±æÃÓÏu$}* Í]ó‰ñ `î›)¹ã¼<¡€  íP³®õ¡ôÀìá§©ÙáÚ©Ö õäÕBãÏ,±_ ô©•÷<0£ô”ìGÞJ{Zïú®1–%ú—¢J¦ €ª abVJ®a¡£¿×Ñá×ÒJyóTR^¾§§‡À€a°¹9uf('ØÄh¡|ª›º:ZÚ6ðÏïóS™œœ4`¶’wÒ±ÕS$ëU‰\¯®0;¾O”3T Î æà¨[鑸‘±µ¬þó¿Tó­h ¼=¦å¡å“:E¶‚eþ^ƒieÏéׯS5†EV£Ssߟ0að! >K`·r×Õ–‘A ¹­Ë©ûöÍ 0k0dø$_€ÔÎ'[)Ö«}°_++VË]‘¢ü1²iv§½[9ÙÙØ,~6ßçâæ¾ã¸4Sm}ïþ}yg3i^]2¬ƒÍ(ãf¢«RL ɯ2$EüœH89UýùFH–ç³ÿ„¢¸¼ÔÈ£V—/ö†»º·¯ñ4ßF»J™ö˜ãŸ§ -M³•Ót€¯ u|–yë(ŒèIÑE÷síVcå’UÚááIÎÎ È%ƒí†ÀNXQI‰6`©¿–—¡ÓÕª™™•^’çÏ=ÞÉÈʲ»^0×××ç)§NYætÕ¦VóÿOé)¿]-x}¼ªÜ÷ýÌ‘•ÆT…‰Å;&[¿“KÖ`£lƒþxìËYóÑÿGŠ–ÔÍÐ.•­-)A¢dÇwÇChËjj*îë×爨oíçÊa[ÛÛp;ê8}9ÝC‚ƒ]Âqrr¾2›AðÌ$¡¡y ¨+ÂÇ”öåÕ(Íl2âèÈÇZä Îjë‡Åùñgº^Õ¸Ÿ'A,RõË]~ý\ŽëÔô²™ z‘{ÃÝ.;γÊl…Mluz9¶»L'6ÝNÇι[Gñ¥>Tª-ÿ¶š{49™ønZŒ0ª§èè6š»S奩¾Ÿ_\Œmžñ13)~ sˆFÛ^ck¬òn]ÄMo—øiÔŒäã2 ˆè_þëDæ x0ÇF¥9ê<||¨ˆ¼¼œ<)9¹¯¦ÛyúŸ¶ ¨¨­´3§V—fX¨»¿MÌÌS­,˜:D$ú‡Þn$ªmK”È vŽÎ©D1¯ò=eÇ  ¨·Ìõc;sç\z+ùéÏ*ŠP +®ÑPÒ¤U{kI¯-~T«w^Â#yå¨=Ý[¢²ÈhÛÚÇ&¦¥÷°ß} Ö.1W3}QƒÛõÙÙRèàºÍ÷‹\Há|?ìã\. HàuçÉ”L$¦¢ tÑÞÁANI–½=ž±±1T¦¡Úˆëcy H6·IÕÞp{½ UÂÊS¯ z n ›%ñÏŸ?˯ü×:#ÿ2¸Ö‡„ZæJT"šúïö|ŸpÒ‹$¯ü(WGðÛ&ò†Ü1Õ'¨•ŒŠ QUUUFFfǸ~*€¤5ñ¦îÌþ¤½?˜º-C2}ÌÛ.(‰®š.›ÊþVµô%Ù±QºsU.áæšìüë‘ .‹DÞ­*¯´šï=@&èñ¸UrŒå´ßáîèMäÄRTT|W,™Çum¢˜DZZz4‰þß‚ŸtÇ÷ó•xÎ3¥“Üo“\O”õzãx£XéþþÈ=½›¤•4ß6[¦qN\b ê_a(ÆÈr4fRžËùHñcàó™!ÇIÊð>¥ñïÓ‰ü|Zlll¡`¤GHˆ‰S»,V&!"ºcozÙ•_±ˆ`™9²[Ê^³Áè­Lz„àò,yÿd¹`ÅØO4 kbâôÞׯT8›+l§åĺöd-¼Ç­}¹Nm­ÖÎ%ìÇýÆU&Û‡۠‘Ö™zXýCå™qÒÛt¯Nl¼R§±pÈ î<`»^&¼ú¾C%È^éäŒÝᇠ'`âyœkgev¡eŒÊn©v¿Ò1“¥†Dæ’üÛk°ok˜”³ØªÞð‹Ë/|ªCV²*>½Liyœ¾ÀÒŇ–¦ÇÁ¥MݧÌx ;ZZú+£=ÎR=X¾q­W\8ÔãQ£ÙQÙzHgo²3•Kø‘½bÇø=·HšÊþ]æÓŒg3§è¾$ô–F݄圫¯†‘$ͯáL]ÌÒ[L¹hÖY:?®*Úëõô툟ÙK ¹Nü¼ÃÅÓ"è¤67ªýä­Æb÷ÓÌÁ›°îd>¼ýé?tTÄxÖl8 âCS•æ¡€«Cmx•¾ÈeC jjjEd~ÍÍ|×î'''À7ê»w‚²)‹‹‹¡žìéÛƒqï¬M•çò¬l/‹d¾Ü+ UÎáðø8?]Ü¥\°`óÏ F©Dýþÿ+ž®öí[#ÙhÓ•æ¬?Ìýø|Aý$8¶0g;à`oïýt…©Íî¾ÉÛ°ää~¦~.WL‰ QOõ æõøÇ7×7»‘s—·¥ÚÍCAX¯*Â3BJÑøüÈ$œÈ~«0?Òm‚·Šd×nòÑ,tOÝ897ÄèÍæ(ˆÈËý6£Í­–d&³½©Uù›²Šù¸SÍëA†¶Ìþ§EEE03Zj#CÃlú2e%¥Õ)Ù´Ah›56V98Ð?===&6vÖz>‘ ¨™çåÆã!ÍÍ]ѪyyY99ov0–uþxt)%;H\\"Kn“{{Ðãb©ï$FÿŒŒ>_çP)/< ü”jÜŒ˜˜øS‹/òpºÖú!Eëõ$•fî_^Ð\.{Žw9ß­&ò£%ý«ÌºoSá•$Üû¹ l|f¥j°R_í ßòk‚Р¡éëë÷%qç6ì-óà²T9‘ÓþÁsVÖhjÅ‚ˆÍ7Jê•ìå-ml˜Г’Þû¶§WYF†ïp¥·Úfý‹ô9Û¨¢ÓÙRqfnÝt£: åŠÜ{]èGunBS)(zµníè…Å'#ÛR±Î»É“&lʳZLåïýx9yõáåb® 0ƒ2óƒö:Ô߃l(éÃ,Y=.Ýr`-C;‡EÈÏHÞ‡•ê!††K-œ†Ü1÷qßhòðÆ_?ÏáÞ›ªO0@ñ±¹¯›pq…3lýRBçR{° øß¾} ‹‹SÙùfþú5,%%å[F†ÕÅ‘¡‹««r±¶·›»™Ù\¯ùÖDqO ƒg©~¿ÕÉ–2B–Þ¿í‰ á£¡ €€‡Çí±°ð˜Kw%Ê|[Ü!ý»°l&[ªS¹˜|~Z ìÇA^ü…c.¿Tè[X4ÝwºWͧÍk8t^ZZzì-и6®FÔZ÷çÈ; (@LZ3W8Y3+ãfVøÀ“ãKŒí”MXDä³j¯ØÉü\LÚ©N>¼T+ª/\¼û}“'à‹N %Ö%”o„ÁÒO Õ¶…jUòû<†NË̮盛 &˶¶éæóõGëþ!øœ¨÷=’“ %%%2Ü|\f°ü Wkã…„ÀÇ{9+§,‰IH"#wttø¾ñ|€mÛóª%fK*‚©ꇬ‹Ìþɲ¹š»Žöš?cOg,Ö/ÚÌÃ+ôQ„Å ;Ÿpñäë)>|´„÷ŸgÍÿ¹7…¹è`L¾þÕ¦ Gss³…•UsSÓǰ0OÝüÿ€®k7Ai¿£¯¾=>œß1Í¥p«gsð<Ùž^úù³©/‘óøÒ #< âzÜGËÑšŒNGо«l&±—aöWÎ逡\ZJ c±‘Oz•',²Ò]Î 0t0(OE»‚aÁ–϶a²·ßÛ'Ýu‡S#±Cƒ*ZºûŸG¢õFiF·Û™nÀÌ0}øfÕˆH´#%"Ý`vî¹´Y¨­5ü©#“sñÆDU6ó~#V‹ûòÅ.ëñtÀ]¸9Û´á÷-W}[=¿|½± Ò Ž¿ÁÑKÖ19 æŠÁåÌB[[ªáê»Òˆe½5ÁE¯ ø ™øWûݹ<:A†‚·ZÿÇVWc>½ukG>>Rã7‘pè‡rÑû;©/uÚcÒª´®ôÆZpÓµ]»ÚPw=ç¼[¬ßOš–TŽÎT™¡Ëé¬ý”´_—iäï &iäY:²®dC¢.ê#Ÿcå„…dî`‹Ü¿²¤J¾2®Œ2¢J{Ìtÿ]¯ÁÒÈNBÓä˜bÂÜ ä®É š“Ç;85¡®1}üÓƒßÓi¦ˆ½P2ÐqpºÌ®Û/Ž7,™ÈQ ÀV6“L -"Y£GŠšÞz§Ö$áfħÞZ­ÈŠÅTs_*é¹UÔÜ”b¯uæ‰C½ñË•žÊXHÌà'ñz³Å>ïÎèhkó.*z ÝIJ#âåÕt_®&ùש£Çõå)“nú—ððà›­`;¦ÓksuœPSðêdý$ÇÐÓ¸^Ú¹öOµ¶ …à‰üÖÃ_GÀ”¿ÉÖ23+H.MÕNŸ«ézù†ËÜ|WhŸý­¼A®‹ö_Q? ]â‘Ú@¿âö³õÛ§½ñë¹ÇêÓÞ¥ðÂÆ‘¸«Qe¤æ¶ÆÓ³×¹8TÑ< \ 5LiõG͇‚ª”/!¿t¿qÉËÏ_Ÿ*§å>yVQQÑ“ÌÛ Â`·=%¿~°^___g­ÞO.`j4:—9o½ä}¬NÙGÎÖ_Æ6ʈ¡>çþÈß=iY­ LIE­}?tx/Ö€Þ»•(ÞŽÎprKkkV¿§ ÜÎ R¹£‹ _Ýg/Ö3ÊG©z ËU8ìovëœOÇ€°„n-5ˆEÓ]P“ÜIH0»V5L ^ÙJ¬FŒø£¶¸_(’!J3¹¹¹Á$ôüÚ­Ò¿þ!7S@š¸í¼€Ýšçpk7¬V9Si¨Íâmªø“'}-+‹0®Ø‡rÅ6F(Æä=O¶±V­¬­«­–gkl™.Jjk9A qprº[½Ú—بpƒ{GþEÔg Ÿ¬WûäŽÎòÎWÏT†ò„]¿ËfJ¦½E>W#X®åGù£vÅóJ›àŸà½_é‰}AJ:˜Âü®/ŒˆÿHDÕž«óÃj·kŽ4¡`m Ÿ•TT$3—vÝo9ã_™¦æåEk8ù“ŠE}4ÈI(LA§¿=c!SµV)gÝ™îümÁƒó7'¬žÔULÝ‹vGºŒXy¡{×IpE™f«övvz“%º¶œ†pûÝôŸ´ wö÷ï>B@xÎÌ‘•Eˆ"bsww íæØÊ€@…Èvä?‡q€Ì|ùüù…ÅK4rÉ‘]BN;&½ž…¥PÞÐ?{xxàÌ'[.µC÷¡¿q,Æc šOß„ÿÞÑ÷s.GOÕÃÙˆôÄ@KLLü©燫›Rˆ@ºßÞ\+Wšáÿ•,‘™ìw:ïÞм`$qGG6íAØü`¶YŒê/.jä¬JƒFvKØëXºæÚÁ÷E&Ì©±-ƒ»ï퀂.؆ëKè61’ý¬-cÄ»G¯aüü;Àè®Íñ‰kAv[{; éŸrÛ†‡Ãås –ê0hª‘õ»£hò0šL¼ÇV êêQk¿;FÿYå3t¢ößϼ½½¡<%ÛM˜P(Aïb[à 3K ã>Ÿ^¾¾¥†Ãd&&&Jß>~ü8Se™6FÈI„ó9ÿϾèF ¼´øw»m`ºýIÜ¿VV—–Zš½9‚x|¬ƒ.ÈÀÖÞÞîÓä _jµ, >)ˆÀš÷ààÀa5ÑJÍ244dãäd²ÛRjni).*ªÚ=C¾ÜÏe2×ÕÙu»RWW‡ÖÁ4µõõLŽ.«Ù¦0`¢©«©AG·‹­þÌ8‡‡†³5ån3þhä{''žyÆD5Wß=Ô×Ó‹ÈŽF¯^TÌ ^UÐz2Íë¥RÓ´lC¹“õúÆ :¢'\®,^V^NJB²Tom4^€`»ª¶SH@@ Ü*[Ò…ˆàž ´Ãf~%tíK¼¬Ô(”!*??¿é$›IXBBDƒr貟ÛÙOx½þ$õ4{sVRq3Þ›†ÛÎÛ³^ jê4ÅB_¿~­uŒŒ]çuWïØœŽE̸¢’ÐÑIÞšÎ=%‚®ûz^Cù˜·[ËËmàÛ©¹%sG7œã`G;³ªšÂÌzõ©/s½bÐëñã]Z;n÷ ïV‹@û{qE===*þ቉¦ïÖjÕ…óhí;°Ä²ëˆåqå€Lú`¹Ê¥øÙâÏAK´ÁMù[I4æÈçZXX,$ß^‘__·;‡ƒãÁ‡(:u£—cÚ€ŠÃÃè#TÌì“g:³®Íú—'ÛP!(®‹µ´‰ÉI¨Etl?ÏeÔWhg®`íM†Åå>ˆA+Ù™I‹¥ýÝY†ò*ZAy €>Ìš{ø-.)æ|#·ðñÁéÉÉáêâ"Ÿ’Ò3¨c{Ú`Xr²ù»0–Œ%ù ð7 ÛÛH¯ùøîêü-#c,«QqT ,r‰×¯_µz—X ßq{Üõ Ù¤¤ú­¯éßÉc˜››ßœT6<%$ìï tïÈóõ3`pžžžõPòH°Bnþ ü=rrr˜JÙ™y!K¾‚*Ý-' ¦–¿Dfff ¢úýI,îö§]¹9Ïì1¿ÿ^åtl”~º`Öfcd=é2'nx(×ñˆì÷Ó9çÈ>­µ÷gÐ «w\`Ø™­µ÷ä}Hd$DëY†æˆ§òM÷p!üªêÌ^…g$HŸxfí6*7{ y øR¨kÓ.*Ú1/'Ç—/_RÝ“cÿdÊPèCwGòý§‚4¥o?¼Öþ.+ïæ%AJJ*žÌ“84$fGíæ3f¨¹4ËÄÈ:˜L‡Æ¿Aˆ¾þŒXZZz9@…ÓnËáù!;zžŒŒŒ…͈ù¼rUí4°@3 ™‡ Õ«ILkJñä¦;¶Úí“““Ïo%ÅÞjÜXÅ2 g——hÏžeÍÉãJ˜0-™Ì“¿;­#þ¸ñ9tÔ]P‰%¼µs …·º0§ºþúDu¬@°jÕ À²ÓåX°žñ4`p+†„„Xˆ½*3 Kr›Zÿªðnlß=·S €ûÍד1,¹‰huCö]Îdr»rÐÖÑ‘’Òšºäp ï ލ‘U¦Trûøx4µBD ì(”2aÔ‘—= ©|û«k¥ ¹¥Ü0À<™œOL šç¹¹ÔÀk ×ÌW­ŒãàÖÒH…:rØïyzÂᲚ}èüB ìUKGGgOy8øÑÆ(´w<3;{~uØ´ØÚÞ¾øóçÇÄD|ðjæ ûÓ„öVt¾‘'±0 )))ƒð9£ þJ@)Bw­k‘7Ô*ÌhÁï¨Áæ|B¬ŽôâBì˜wlÖ?øÕyv~^ ø€>€g £Ššº[Å £ìm ·s‚pYCÀ”„ùÂm¯NÜþ@sœŸŸ_¸º_oj>|üøÀ^÷¤ÝúË™d‚Íãÿ„ï W $¾¥§[žèBô÷.»ÍZXÓhühl.I€´·GPÊ>ŽÚÈÙQ³Ï]«f\ù¥h›Ì:¸ÇÌÄš6þþªþdÑ;˜À×0Ð1^/Cj(‡úÿãFGi†µÛ‡/ ›±ggP±ð´ÇÃ^Öýƒèn:×íÕ!×åViOKî”õ#­ ~ß'P¡«÷óåè‡ ›'³Y~ƒdo 3Yk_è6ïqŽÍbº|­?4MPâ¯tšTO*ø¾ÑQävítuuµw|¬ düÌwGYÂÕ³ý¥ î8è¦Gf'ïõÚíy¿»Ãåve,›%1ÐË`¨ß/wjÜ ï[Ÿ,%Ë«û³Ù:yz1 ~4jUkãe9ÚˆD;ÉGÉÀ©X„°Èȶ<åÒ³›ËÝ;P åzv¸ZýÑ<,ëîaË*) dÝàæ@)›û‹mÌqV¡à™@àÙŒþ)' ¼`o=3¬®80yl `!ò^O(.-ýÌ#4Ôæf>$Üv é †3$ªÈQÙ]éÛŽg5G% è̺Þ>ýÞƒVKíH cŒÅDDD@qqs+—aP…9ü»³=·Úfø~t8uTa6ŸSãUÔe@üùßžæÔ´ç >Ç@ÃïËY>‰‰³ÜÉ™9+5ÜYYP_4È3¦ÍÔÓªwÜÄ© TÊ ÞT­0y“9üsuµ£+’š•µaµá‘Î?‰1fÙ½Iþ-¾Èú`<€e Y¦ /J¹_ ˜ü¦/O¥<»•Àï¡#½Ý†Û$À9ŒF( ö'[“-:òè)ÜnÎW·2˜N1™ év ï€;?~öÒƒ÷z] ’•suÎLf3Uˆ«Ì>GâßÝRÃâã»ù‘¹½$3[ff¾Ïœlw°RR>Ä¢¡¥e·ú…àzqÄpÆ•ý{[Ò^M·N/7€²?åÔ4ýÏ~ÊÚð‡ý?»Æ•n†ƒÂ}c˘UËJß 3»U9Ö¡o#Wkמ«ÅàAÛ’Hüò;—$\6¾­KÃá£ûÍar™ÙlÍ¥J~”/¡[ ˜`è$C*¹À<ýåûF˜Ýî\pz:ÒÇxlEà)‹¡ó“å®È2ãñ'€§–šL2¾2j>)Cà±ò}†)Éæº]íÍÉ_¼Ø;m¸MüsE¤XÑcDw€þv/0\-åg…ü—ñaNÇŸc|Úýý}ÀPKGÙpàCg{?AxðsÚ^9–¡#øñsÆ~RÝ ®t±Ï•°¹">=[:Ûz¼5U¨Õâ#_åø3øŸÜ¹v¬ft5uõj‡}âP®¿¦]•еïS+ä½N|§¤ôCÕ¼NÐ͟Æ«cè`̹e:·b¦Îuj2E›ë´*odß^`$)Ýð ¯Ïü®ÞxÖÉ"-Ϧ›iïVg¶S€bV«±ÉVaðF9•ú‡$GNNmôÜ®DMÕ ú1b¹†OíV’êaìëp€¯¨v©:Ø,sAU¹ƒ®ÉS!sÔ£d TškÖŸ->¤Qz?ðä'ÔQ2sx]UŠ:ö•6¼Ýø—O;711ñ jíì|èquåÂÈÈxd=¯ì’—Ï.8û£§çxTtLÌ’÷MwaÀ$¥—QkL&Šî¸»»CeFI3Pš0¢Ï¡<ÜÁç3<ÊÒƒˆþ£ã5¶Æ`©¡zT ô»\íw()+ÇB ¤Á¶Ö*eŒi·\ŠwÜ#V£ìRìd„çñãx+ä.éu`‚Rý¥xν nâö—:6;–WV†ò”™'«,I +£Iæ óT+Cr ­€ mni(î{EÅ º­ˆ¯ Ò,®¯‹ÅúŒÇ…­ŸûT-²CPH„£ÐPdÏH9‘1|K>•àK’?ßHПЉ㓕EÆ õÇUKfc"]`TK¨ È]c$f»S‹ršöÊ™ì.t¥(ŸýÃ~Þððpø{§§¬~„¸¸ÝP—^¡4-ƒPrÐ]Ýý&xBÈ_<5|"M£áã÷Ö»^V9’A'aÇãšCC%3–‘½†_ –Ÿ¢jûëÑ´SQXHÚZ§Â] ¶SÔènÂû½Nlø ú0ïsž*7†ÚIA®¢ËÀ@C“7cåtªml,&$ä#½Ÿk=ï]¢’5÷w.@a¹º¸IÞoJ¾æŸDò,]*ÃŽÃj‹ç¾ðÖU–Õ1 È•å ,¦x½‰I ¢‘qrÖ¾A¢|Ñœï¦ÞnDqª½qñÕŸ;ßÀ¤ÑN/ '÷â\|Ä| ‡×«íߎÀÝÆ!Ù§˜’?’Í/M} *ÀNNN¾}ûN& È ø?66¶½)ãBi9¹j@5BTê'›¯Rž pþÍÿ’¢²0†¡À©et4òìÌ!ÍZ]ðöð#üÀKLLLˆk ¡Á}¥<5=m}sun4ʹZå¬*8àþÞ^c_Ÿä<²$@ LLŸðp4 ž½¼¼"œ¿{½ûÙâ‹ýòýkïʽ=‹ßßÜú«ëÏÒÔÖ}HCifóE&\éw¿)Í6°È›eæº?±qé¡Ê| &…Ä~¥û÷};‰ÛZÁ@ÌÏ11Ж,†Ù pÚPh[0ë<º¸$ng«J(ÊÎ7€xxüÙ~!P0ZÍ^{’¸ãGsáPX~!ƒv\¤ç>~üØÏ ž *qahvvöòŽ”íŽ³¼¶¶6˜á÷‡+½€Ú>D#+ú?“Kæ†OVyo'¿Â§€µdý³´#üXtjÏô‘ ›I,ày8$F¿~b9‚ÒòH™ªaµoUb90~_¢Úáñ…î%9Z„óøç +ÀͤÒl*‰œÐ~m€èât74'¬Ð_—ÝïfÏ+›!NÄÎŽ-(-,.>ÒÁúª’ÓÝÎÒ’ˆ†&ÈzÒ÷RÈ4¦*1,±'ÑiÖ‹ÿ¾œ‚ÃÏ¡t±:tß… 5ê»—êK]÷«äcÂÃÃ{^ã ¹7O Ö[ýÇ…IÍe¥ÏΉjöVVw¿ ÞÞà•?UìÚ˜„Eƒ¿Rlqø˜U†˜þd°ù ='ÉöHæýÞÅúQÄ„ÀæËÙ©ûÛèÛÛÉÚÓª¬œc÷…ä7/^£ `£<½÷@•EJ(#rCJ!Àr?" U› mOF/#eT6¹gxÿE\ºžwÊk£Všå•¬oVÒfVØ<Ž/[ Ѫ‘7¯^;í°oës;¿K8)=UÁxö‹¼%¢ÎUYøq*fïÐdfqv¢¢ˆ€˜P——·M–êS×E……½£í…‚Â÷œžY¿/apëÍÙ{†¢’’’½6,MèþùÞÁÁ§ÐÐ~’6çwÀßar”_ïz$iŒvÛ3Æ>ôw´,-5è„1ƒs”§Üf%¥¥¶‰w¥sÛµ‰— §Û“ £suÇUßzÌ@<É#M÷¬vàZc×G’» ¼¨Ü$)) Äe¨¿2?)ï(¶·Õ {Ø­¡Âh‹@ZȰ±aÜœùznnÁC&»µ-ëçÎNÈñæ8«J´IZa>ÒÓ#þAO/5++KÆÐ>ÏŸ¸8b..î÷ÌŸžó„6๨CI€£1_²JÆ2Þ‡‚åð¾76V-´ž/Ñ}ôéÓ§t1¬<õZLú†+«òCÞ :JÊ7ïÞ¡úðw÷/d—‹õÌ—/_làe›† ¿€J†&$&Ú&ŒíðÜY‹NKUW.íu †ï|ÆÂ(&&ÕÉ„° ý. !½Ȩþ÷Z|ø‘Û?™6‡n·’'»|"‹zNG÷ðû;0¨^$„ÿ€·*¬”^a£²ÄÎÒü5sïî³î,¶Þ¯Ú{GüÇ |jõßšBý ¸ ëDâP¸ûL¹Î“¤ÒþçØ¬OÛ€u&ѳÇõ"—Ï`/3O”p&µ\»ð>ÌJ—8êéêÊo3¶ŒXøûûxò).fL`»ÃÊZ)êÝ–4åwC€Qà×ël¹T`P³Qf°Õ¾‹òq ~à2þ5-™¸˜tB~{0xÊü6iE–ÇÇZç¡!E¸“÷+H879' )¬~b\)¹¶/žI¿45èrÅx˘qsñâqíÚ’Òù3ãUÚ²Ý'iãÇ>&a"á½Ô<< eúzùú*R]a`aµüø{§¦T ^Ë—.Ó40€âjO¤è}&&¦,¹ÑûüD÷ŽŽŽ”Ä_ÔV?ùÓàÑ»ü4úçzç,èzYƒ§¶Ä¯ÚòHKi Ñ>‚jÏC-EQý¿µÓÛÛŸbâ'g±s35¼ ÇD½ÓhUôðhJÄâPî¬QÍìñë»å9xðúéÏÉwî_TéÔ¼5Yº˜­eò€s±Ì““‘5··?h¬[––••eqL»¨¬l¤¬»k‡öc7¹ˆ\t}ÚïLÄz–ñ[ƒ×"hk¸ûI¼ÄÄ© ;;sߤ ˜m]RÇ2ê,9•ŽXÚ{ÏîNo|*°ÒÝÍ‚QQÝKoHøaè@ [ãPÍ ÝÚ2YÛÜäO—Z²Â<>}ºk³5ñöÐF(hi½KgH&"ÂöŽŽ¼x+Ìfaï(С£PXÌŸ T Œú@\ˆKHÄ/ùMái¤ÿ~X#b £AÖÞl¥¤øŸ™dÞE(«l:äfr‡ Œx½@ÝÎyš’’Ýyí"éW²ôS)ÅRœXŒ=Í»á0%ó¶q^öÎ “~¹ŒˆÙüiŸã±¼€ÿ&$$ O`{ tíÐÑåù¹ÖÕÙ¾Ã~Ç(ÐV$Ì8R#ÀT@lÛ@”„޵iTÊ`(¨¨Ÿ€×C÷žÓÞ†0'ûúÂçååY€È´Â)’úÊë¯ÈÄò%Àêã4V %S=ŒU ƒøÐ…¨K”ê=1‹Ç²,>ƒ…:~~Ò€mÔX! ºšÝl¾>tâëׯFÉzŽÐæïâÒ’–¾þ©p5‹^j†Å¥ ÃAá¬à.ƒºM¢(i-¹&_’Œü:‹çÞe¡g¥M>êUO¥™¦{ÿòÿó5œ/'º-©Ü4É»ÆEùï“&þÌ|1”ŒQJiEâ$¦ºT•ÉÂLõ×ðÃ4ÞíüÍ*èÍ2ÄÖï¤5ÎwC’êﵯl3Ø…ssœ2ŽHÛ ˜™¤ü)ö,|Ñ0ˆO0ÏÙröH㬠ëZm ´LßÒIÞ†¼oô¸ó’‘ñ“]G“'<‹«Q9ŽXÍÇòrûÇŠ‚ö¢¹ËdËå¦o¨­È^³Ö½ €¡±Ât ‰‹9&—Ï–&šÖù!†ÓžNTTÔ(1·† ™¾4G‚|ð›7oŠJJ>‰“yò¥dY›¥ÆýÒPК>#C“ê-iͲ¥Í C€©/·gÜÓ”&{g#\'æVóuòØ\·ÒïêtÄ9kªî²ÞP4®Ùà%D~ª’2Â77ÒAÅ#•#FáááÙ;>n‹¤VDyö *np1V xT0¯¸¸˜Íõ‚HQXºÌCØ?<òóMëV¹öžƒU-v9·‚Î;aa yþë 0$¸EÁÅ Œ‰y–ÀëNìr ’_œ8æ2–§ì "fk[ÛO «o®/ŸhìZ§W䧪-\ÇžÍq>Ý~üÂáxšgíVÏ^XeaTËšœÄï`#y cù®.é2ÛBt@Ľ¾ ¿¬íÅ?}ønߪ«}ÜìØ}¾$N4Ôùœ<ý^*ß×Ò|¢opâ‡ì²™FÿØç°\Û^º^Ø<ÃÁð@FFƒU«…࣊¼ ƒrجWÄ_’ŽSÂwˆ¾@ý–žÞ45…ÖåÁƒ‘A“Àã¶fk±èèè`^^÷ - 8ò'å±…vç?–­@xƒ˜ ƒnv >cÐöRX—‹Ho§ßÕJ*¹VQ€·ÐŒ¶ÄÏ!¬Ñ´o"¾{þínÊœÿtâûÁñ*å°Ž-Uú¿=`Ðõ>«ØÓý͵™Í‡6ö,ËÒÀÇå·‡SÏë¸AJJ UÝ ªìˆÌ{…¥ÂHHҨĜqÀX«ªž999!Ñ‘EEGóKINÕÃ뀿'feÅ‚íÐ:éé=ˆM?vA®ôF‰´*¤$$!!ùµ²Ò<–Kø®E.ë¾¶â·&[•Ó=Œ`sò+ïæxûÜíááèשðU7ªˆã†2kåárœ!SïîÁÃ/í/Aé¡>‚‰ôô;™A¥Þå!놬!<þ"µ‰û3‹I¬:DPÔX ²Ò×7ã².,/CÅw%’ÓÓIeddž{y Üuttd+ɰ¹éö³€.**JXBb´LVF潡áäWöî®.l¼PsœŠ0VÜ'W±Ðh è1„GŒfF^­—G¿?ó}E[¦dWy· °µÙ þÔÓ‚´íëñuɽ³zúõ¤:DÅ÷™XYÇׯ¨ Z;ÃÉYºÅá<Ø`&LíÀüݵé›ó]aîO&Õa\ÚÒ8]šV–\¿8Nn¨Ÿ‚%í5'M{YW6¶4…[i\†ççç'ìü Txxu{;0=@6Õ¾;<ò_©Á­.ƒ——·AÄúðìÆû9.ћù®S ‹ ƒâ£GOñðòFÛåU$tzøoXxKÝbÖ±wŒ'ámbÐÌkr5î½b5â;A½Sü'ÛMÖаÍÏŒ×!.ÎánfF·µµÅlj꾊*}üWIì‘ÿÙQù¥îŒªÏ%öãÁÐ[U§•ÐcÖ½K÷E÷%ºçNòÈÐSk&iÎ=Ò€¿Üo†ƒD¹ã¡Ô“ÒÎÎêQäzi'1Ÿ*ø^GÇS?ÙÓÌÌlm4‹ŸÿŒ€€„»f„âh*ÿ+XeÍYòññAÇùU55Ú@Šªà—:ìkî •|¢¯ °r÷›+§~‰‘¡ãgCuI1„ye= $…( O‰ì »rU¶>èw7 <ö®BÌÜ”›~\® y¶ÖÞv‘¨¹Ÿ(äèDURUMD„GoÑô!ôýo2†‰ ñ£FPy¯«{?Vü7Ÿ´¡²1àR`]²åµU[¯]¢>|‚Ïq¯ZíÉ£GL¦+` kkY±·7s§‡› ~YN3L¿ÛXؤ–áe¶ í÷©† {8Б߼}XƒwÚo^ú•®Àc¤Ž&óõ¼ßiÿo8Ü$¥òh .èM‡«96>[]‹zß¿ý÷ç7õŒ[nÛ¨xí±ZÓ2ÏbfœÅƒ»Âw†¯·nGK¬J–U­¶"u»9ׇUƒˆõp;_ÆêóÌUÈoΖ̈́’0~-/kM•>cü€ðÊl&ë˜À»©©É/  p¨Üú¸¦;þ;wbXŒ1=œY­AH‡z[À<*çÝp[|‘¡ Ï? /ìî†bP+¼êL½Ò¹w’—M€J­òo KÕ³§%#,&ÔäÑ`8‡»õ̤ÿ8}E`qR4ð]AE)DÕƒh“¡ä††owPý=ï˜8–áŸÞ|ë_+1þÁ¥y¯f|ä(Qy9Â#oF|œ‰ç t’[Ñf·–\Ý«÷¥ìcõ‘ÒØRcç_VìP7‡ªª*tß:lø)A½´6˜ùwÃB )ÑDDDT°Ð–­Ø¡ú±n×;×=R lSS‰¡ë°?P)ó¤°îª¨õÀØØ8kÔèÙ³g+yÙ1JãìO¥Ëÿ¸RêJxbßLóÌÅá0²;ê¨1ùÇÞG‰Z,U$ÐèÆ’4(Ü•¾#Œ-í/z{ÁP}Žõç΋ì$&!aÐjö¹ì% @ÜaÇ“*z/ì¬Å4AÉŸŒîñmMB°mâ(I·8Eó¡HLY.rÍÑ«»žeþê3ÓN ñ‰ „ì\&ý‰ŠgØØDääðBB§n˜@¬¶··Ç5Çþ,N*r§ˆ„¶¶¶áááœ×ú>xĮ́´T˜670ð›™™e¬îMºÌâÏP‹Z'§S…4Ç"%Y†âkâT£í±qÛ¿ ÕE$fÄÒÖú™ñ8­ðQæÓÝ\ ¬lª~›;Í“Ïê’vƒÌ®9S“‚z§Y͇ ÖJ–ööæcM½Ü„ƒ®Þëé~ÊnHëûÞ±SHž.´ƒ}_m·ÎÇò5áŸÅ–w”O\áú×uؼÙèg÷;§@*ܶáã„33s:Zû82"×+ëM¯Y0bnhèŸì~ƒ}rrƒöÊg¾;–j8£t}`T«s””„ydeQ¨Õ»`×××DZô‘’Þз´‹…ŠûÛg¯$Ä QI¼…Q~fŸ8ïoØßQEÁ¸‹¡[®iCÝ)ݲ™YÿŒpţɚFëð;å£?}ý`77Ü„Îj|û´,7Õ!îgªåq|Ä0á#ÐxÂÕ²›UúpyÒòß®'{#”§™m7äzb™àáñ㼑Ýÿ!úØ¿×Õ¥¼£ø*Gå+œŸžp߃IIIA=0XX0²³³ÿȳ°8–PÃÞT…¼oßîÁ#8:VȦ¼Ê"î€ ~ƤhP¾¶b)ÝȦÂÿ¶a-«¢NïðÀ9ˆÓi‚–:B[ššR2~+XУDmhþÈô-ÿÄÿ;SŸ&])žªtè’c´ô4! ÖÉŠ›îÌÕ±o^ÿf¼@:ì>;;ÖXgüä]k_"gŠL6Ô<Ûdî;6>§]k¥,TàS­ÊâNEEKT(ÿë×ç[3Õh€‡À8;–Òzÿ¶0Çø "¨ðì}W¥R¹Æc$$cµ®£Ÿ»„&ã¶’r´;Pýí‘8×ÛëS¨YºMâƒréþ؆»ýÆkOå´¼³^ßïú ïº&bT¿—’IßÄ‹®`±¿3¦– HË NAu ?àäÈ;Ý×ÓÓó õMLTGûðV`¤ j4€£¨WXXD„—åR;÷˜˜gE»5±Ñƒßq>‹…šš¶³ÌÇ!ï"Ì âVßq-E•Fçø.1oþ=û›úÀZûnjBã³2Ö×糈3¹J•"P¬M%ò€ýèíÕ‰×ÒÒÊ‚.â`sïÁ¨e{äæç2è+Ÿä*;üVž A´SüFwßžþàñ³wKìlì죙ùf°²’’»ïÎë ¯««Ëàþð#ìmR¼ÍæN¢ò5.%¼õÂQ»OO)Ÿó’ðâb›¥Ð»\ƒÙø=—Ï690†>UWWë‰lÔä©U£îïïÏØG ¿ý# G¡ÇPÛˆ©‚‡öÊäY·ŠaO‹3dú-ð“““Ç8‡P@A©ªªàLî¡ËÞ›ÄË%ƒÜŒGRÁégDZ•Åç7ÌÇÎü ˜†GGcéõ'Ï»ßâÇ¿2ͺ… Re V?ÅÇÏwœB…Â÷áã÷ï\ ìÖcý4 X³9Ÿ˜¤ne„wkñ³”§ë/9V8”™©x<”Êh®"ËvVV–¨³ØÐ)-á¼£Zk0/âK'us®Ê*òGþÈO1¦ ˬo6 4¸cèÚSǽ$1¢9>¿½dÕ߯¯ ê6¤¢¬ŒM&㈙Ëåv%$ Chèìh}8²=#3“„›ŸÕ|®êË4]i®3÷Ýñ˜ ÖÚúPÔÔÝÝ`êÖt%²¡¡áïÎ11Ïh”о¾Ù'0ZïEÔ¢ô|ò×Î.dÿâ`BÆÇ}EÓ›‡ÒÅî@gØq7€ì¿¦‹&¡ @`Òç§q*ø®rØ'Vìv}¡²Ǥÿjw„ÇaƒœÔ/$Ä'9Y3-9<;›²¹¥EZIÉoaá}~Èþɉ_ txTçÏÕUß„„¡þูýÍ3Ç]¥ZÛæ_Ü}kç Ù²F–!ÞWÁk§…FÜng%ïts-–zɺ³ó¿¿ð ò*-eaºÉÞ»«üb%ýˆÂ?~ XUãNp&¡|±+’º¼ÏÕ}Ý([. "]‚yõtáÔ÷ þ'5:_oïûÀÞåŽ" "~ŠŒÄøÀˆŽèM&EœãùbÔÄÄ|Ì+¼§ÆcyOé®JÀrgÕð¥ $%%ÅÙÙZk4¸©ÛlŽåkèl,ýtHä´ÇTVVŽÔ¸¼Üm€Zùá¢Vó¾eÖt=È2ÝJ«ç 6=øÕ© ~8bã»kA¿rE¥é4YÝ6U^~¾ ’RL ›e*Ð,‘–T‘¢lébÑFS»ßC·ot?Nû‘8EÀ|ζJû½ÂÃÃ_¾z…)Å}á8Üs¸àzp¾ÕM߀Ú×מ¯w-o¯›WÈ–ƒZ ¥:Ÿî4õT‚ìL³â&ÞTIXÊ`¹±âç„„¼M9/¾omËeU\ꙃ©×åÔb&¸N YòË*„áe·#†–KrÛîýÙn0?,Miµ‘^wÇ\J‡Îvû‹mPÁFbvve€6C‘yÎ^#yEFFž($èäT‰êè}Ýú¿sÀ¿É§ÇÇjN¿‚ýÜÝ¥JÂs{e=˜.†Eä…’ìràíBA {¶¿ÔÜÞ.d2U–­± '[ùà„Åþ$BA(€_Èk4¸^Bžœ—¡>›°¾¾ž ”ð1ެšÍÕõµ  ÞrTˆÞ|Цç¾/2!&·ó :ì º ”"GåÂw´1*”»0:&æ˜Ozz:ÔR$õm(´ =1 üèXXTU§E§ñ&ðÂö‡¥xÐ×23£¾À²¿ÚŸL_c»I°--¢$‡Å‡ÓÓŠ8ª 47ó¡££?ggÇvsssXOÞ`Ñk À~mbB£­­mžªwl0O£N¥ô»¼ÐSÓ;0`è­)ü¾ÏÃ;÷ãÒYj–’*d¾Xõ9&ÆO§#ºáåÈ~ºÿê6ç*õDOxdb‚îhúŽ«óC–óD[¨P›ÅÂëÈ:WÀ{© ž¿|‰Â¤×“µDþN^º$ 5̶Ðˤ5ËŸKf1{> XÔÙO_B¨Ž—¯/«ÑÎoeÔëï\Àíö¸v­ec=Dø:ÛMìœw Ãè£Nî­YjÏTÆewð]ÒÒR½Âq\V3¹²………¯ëÍN+5ïœ":új¥¦ËÊÊDŸ`3ÞÖlpäâ§Bò{Õ…3 ¿Ï¸î¢.ü †W?ëž–ºá,­ àؘqOå¼[`?Ïåã'OžXXX4ú áî5Ü^K 76#ËxŸŒŒLÞÊõb=“Åû;ðNè"ZQqqÓÎl-‹tÕÎrI@rK[Û}""¢³ãqMÜ£9èÎ$lÀ™ÿZY¹ ƒöÁ×5>šááÃl› ÀxÙÅ%$ CÀÇœçj´¡|- O¡G,6&ƒ$eÖåõd…)îX¡&2€ôÇ`¤`©½ÔèÌGf ë¶!ýŸGsOÃq¤l FË¢qËiNtz-®Ïð#~Eº}Žå6í¢ÝûÞX}°CÓ¯ñƸ^ °¹ôtR¨Fp‰Ìç—¤¤‚ÃÑ‘‘ÞPƒWV³À €àÐ&—”8»“í`Ñ~ËT,?" ï´8ޗढBÔÒÒ ŽB–6þsºoØ dþeÈø÷ˆîäaðÔj¿hEªj¥ˆ-Ó³Á°…_¿ät À{Pø¾ºßÞ8œÎÚ?ÅÂòÍW­\œµŸ ,JœlXmÁq¿ ësT”¶z°íàJÁ[xx_ÑŽ[ß•G¹hEu‚z룛a_Û:^ÛÙâI<ûhhó™̇h² áM@PÉS†ìýúO>|0à‰f=6Â…JÓÇwL»^#mž÷è?ÿÈHU©Ñí'¶ðnÝ7f&ëÊÛæýäË—/{«ÉîÚcyÊ¿Oœœšçç - KHxó¥ Õí·ãNÔ»rþÕ˺.Æpxxˆøÿ öÜÇ¢# Å1P×(çãQŧ88*éYåæóõd±…µ¸»¼k}ëû8A È:šÊ’N{§¢¢Bé&*°rWJCƒ /Î_@fW-·v³Ýȃà‘é7S;[“¥úéµTLª:{,0„v@:ËCîÀÀèøedPéÔª`¼¼¼â‰ò¹§™œ¯6㢮I{ùø4"[Š·ìÉêÌò«½Ð—Åî»/wo¹¸Dñ”ÐÊ9ßÕ‚ëCà˜mÖNÚ¿¨8×p÷Q·Ò¬bÞ?@3t–‹ØgRŠ´@­ú𞟥ý<ž))D0ˆÅ%»ž`‘öùóG)Þk¹aV½žgÀ¯Ó¾}»Ô=•yÀÎ;%%¥åŒÉ .ÙC ߃·¶L¾ed,&ß^é§ßÄ)œ303·^oB­ŽÀ?A§á/_¾4˜ˆ32†©ãrð[ëäÄDZˆÓjéê’æååµâš'²²²¸½¹fÑ)‹•ghkkƒºý@¼ úáKy‡)*¿½V"•ß÷  £D^x`@Ä:ÄÀ\…`ñ“BÊ›(RÔø˜ô§ö;3Ù¯æZ¶áWÝÙ¢/·¿|A… !ð˪z¢Ö¾ð%Ã`Ðåzf²—§§§Ã¢?9ô8mƒioY\!&´ynNãbµŸ—J~³¢)ÌO½ÖήÎù‘µµuÊ; @æývCYþƒ1[k8¡60‡EìUúU5ÃÉ¥0ÁOÁ©%´ßÉñ7«~òøñˆËü³ds ý÷[S6ÛSò›gÈ«R´--îv¶GŒˆŒÁa°Ò|þA‡BtD ï+5,Õ$Z·) ïØôÐji±™»ÒñbÄp¯îC»ÈÍêµ/u»"lß5£‚ÜIÏpðÛ·A¸¬]V™6掸 sÉÊÐKúS8$n:xÃÏØe–œÏVµõõ}/^LÖhNâv.bÿm¥’†ÊGîBòÔŠÁús¥>-¥íâñY‚1ìÖdõg‹dþøØØþÑÈF&xÝ®v8ž©ÖžýîôˆæØ`@ €Ó1€Jت@(O—–F{M©PÛ³î9bÄE£|×ØØØfgÚj}—-w·Û4ñ6¯ÉãÜûîU«…r·JѦ&YV½ÌôÀÝ!vX漏оæ»Ó¦Ã ªïÞ¡sÜæë;Šw222…ÖiS£Ѫ®eLž›G;1eݱÞFåq9a°¾‘³6>âÏ;Â*lgö!Åga£++{ûqÛ€ÐD@±a@…ø€§}€„s¬?´™T#ÑEA1IÉ0MM)cÅÀPAˆ Áçô™˜PJàqÅy„Ic°7ó§é0X„h:YfÍÉIŽÔÍ)>— ðP!â•þdd˜R©ÒâÒ„p„ngw.Owß:88ðK¿³%,Ÿ:±Ê¥{Zð²ÂàÊõWö>ƼÌÒÌ8v¤§ßZq³®$°:kÑÐGà?`@ÈNì]ðÓÈnôÑÝ–GkÒÂé2°×66Ì€ûãÈ_â=«ûo§ß£+#W¹ñ¼´´Hccc@Ï7÷@¹ ´ óÉT#—Lx--ýT(èYŠü¹:\wô…LvJ‡WEäâŒã¶#w- R9~ï-ÿùåÄ•þ{ƒÄPaØáT-6KKKWYü¼ È)Ôeë9 Kùg¦‚ <˜’²òØTåí­Tx_ðÍaÆü‚9|¶õ¸ƒïŠ‹ê™‡J ¬æ‰mã¯Õ3_,þYÏ?é^¤bbbß¾}38íêîn@m4£SL„%Ô>Ïb©ÉÁѱ©£#sЊÚ‘Ukp«MNÒ³ù,Űª®{}î‰þLªC¶‰ˆ×„ÒûRŸ‘âˆ<{-d¯.æ0Ðu£^É(äkÚÙUÈ 655ÕH~ÌjÓaøgK‰@ì¿f!²Íùq{º’„‰ -66–‚Š*g$99yþkUFF2ò[-­”1¬üºÿµ±ODNžùæP¶E—<{ÏSЏÏDÂWkÇ}†¢í¶ýʦ› ™øŽ}ùG-,×+.)×íbE÷ÿ—J¿/*zs{iûëÇÓÇxl(BBBE¥¥-€ô殇ÿˆˆÆe,bôNÀsOD ¿8Û®œ‡Nr«ªØ²F º¶Àv WW×™ì ®è¸ƒì~<ZkwësýOwÔmÖ‡ Dì/ö IŽ+Øyª•O`aáápÜÜÜò”1Ýÿ›­ÿþµV\ÄÄÄĤ~²w|<.ÔPh``àAÔÿR!Oé~.€ ¦U›ÑßÒ§  ¸vüôßr›Æ6bÀü·LNb›™™A%¶…BðüÏWÇÍŒbœ¥Hv\Ižnïm„ðÌhz¯Â\u¸_l×^ [NáV¶¬ÙÖIGHL`G¨wÿ½V¨{4t°·g!ѨñƒÇÏ<€À¥Ñ¬Ç+Õï/°¹vïút~iïg ›íú'OO ïÀ°±±‹ÊËG©BÿÈ6€{P_T44Ë­ è! JEï?*XætgòX–¢ÝŸÄ§›á~s®ÿ Wñò²*ãÐt-€‚܉•MMK»0Ï/"òPÃáçýü>ß5ËOg”#@Â+C<¶9¸5»íð_»ºO?Ó-kÐ5 "ŸZ=|Ðö³ÓÝÖS PKlUf˜íRþÁÍÌçû…ütú{¼ñ›» «ŽÑûãV1œØ¬2>5¤ÑÝPù'¨­ Ìb±õ!:†á‰ún à ¿@Mà´Ýƒ lF£¤¤ ~Y@?ò{WXØ#00,ó¿l;ÑÙ.§õâé÷' VšÍ¢àã7yÂCQQQ¡Tm¥ùÝ8`è+ä~Þ[.@APÐÑïñóó{yy=§¦~h’ ‡Éâ߯L*ë ˜ MªŒ´B÷Ýä Ÿlþ‘ ÷k[P 8b:“ß°¿¤*òÒž±=wþäcv/Z¤Ñ­¾bÂC±ŽÑ5®#‚ÙåÏÚÇhóãÈø5•Iº&ÃCCïÍÍ ‘±¿É¸)O&çuuåV2³kÊþÚMLLÌÝ<ÖmÝZ‡’SlÙr«IÎ’ã†Ð…zˆõ2°„n–A’ŸÓn¨ ¨¡”éìä÷Ytƒ7x;twº½We³Ž ðB-)))999È„ slËã y6ŽÅdÞ%»]<„nHJ>Q(Ô6Îx“¯°¦ƒuÞÅ3 šjà¥>))Z®sb0,ûùfB\³¯²¡äïM5Ʊ¥)F¤·7)g¯1uâõ÷ì¦lÚÄš—öbüÀp¦×ëëg¤°KUk -))Éèòzéêê ÿ/÷‚öðĉ?¿ï‰a€Ú/3€hb2Uö0S2± ^Xt´/x<­aD ‘ÐÐÒ2Øm)¹ ¾e³ú…pu}ý9<Ü„j<`*Ð ää½½B³^éyø|]²¸KU•ýí¥|®ÂhŒ"ÿ’"krC/˜½`¶¡–?:;¡*e©©©EºÝ˜ôôÇ5ß¾~ ƒê[7°Ö"Q‰7œ2k_¬óU‰oû¼©øµæ¬%³i,LŠ©Ö$[ªká*›³iãçg“~Ó ú ©±¥%-ûKê+ƒñõF]DBeò?œÖÈóêCTTÔ…ÅÅ»°°îe6§#ŠoCÎX»iÿ`ÃSÀ„^¾zÕîF¾°²ò€èÞÅѺgQÑËǸ¯ÄÑX_½ÂlñA2.ÓÖ6udav³=LÿŸÉ¥(|¯ÿû±¦Qbm¾˜OÓnî·ûÄ#L×`ÛDTn=:W{\Ë&Ãg­üÕmŸ4qÿOm_ùõëÛ9à÷Œ±y2 Bz¡PÐд~ KNåq½0¸(T¯õù¯À¡×èq'8NÇÔQä’óP~ _& ÎÔ^Ül•_>èJ˜ŽúxÖ»î`eÄú8Ž’ŸÓóUÙ>>KOx´‹X0 Iæ©ðµŸÕm¿ô±Ø¶ü[B¨Á§¿¬ì=Íw?ãP5ü#}(SDä#Ê]>„_ËË?{b™/Øû÷Ëq:@;XžlMŠ2 ¡¢â°tLä^N#¨ÿCäíþÈ+ì:N£fú¯ÄìE’ܤi}&è|΋”0…Ô@ûq¹°ºFòíê]88–ùøøxc×™®Hj@·;;êÔ’­ÉŒhÏ )žþõ«œâ¿Ñy8XIiiJa!r¤¨7äwaˆˆˆ/õûð ºëPmiF&¦§øøH¼¼ zݹÐõ€§!ÍÍ|`:Œ¹+ÿ÷)ŸSÿlÔ3»Á·§äœkHFBÞØé]r¬"[îgª)ý¹+l•´h©©"&\gÎÔœœª›KVÖÖZúúãè”,¹ LÒÆM²æÿ†ƒCüâÅ=eee¨n",RÛ¤ddÍ 0ƒye³\¼hJísQ†âÿyÑkzõ䯋^Ùµüó_¸ C {ÎÁäß×:Yª?˜¯Ê UâÚ[h‚îåçÓ*¨)oZŠˆˆ„ýÔÂò'¡ǦO ¿ÕÌU½¯ÞñP¯ªª b qã ‰‰ÐV,X”ò mbX/}̳ÂÇ|²cuÕ‹fïG·€²x¿ ‰ýæß 7q\ëhù^‰Ç¼Ó¹!ø)6ö¤ö’¬ìN ÁЬW%òà‘¼ ñ GƒÐ½÷Ô­65õ®¦Û9éÅÉvà|èÊÏD¥¹fyÇh$Ü_!õ3]Um-?‚ôÒxæE|ft(wRt˜cBÚøq»u sjC ÿÑ-{vÈI»Ó™±¾Â¡äÕ3®¬ŒÌL_Ë¥v­ùzW¨«iãG¸ýÅ@úÅqMwAqqñtíÔϹ1úâ8Ó縸ÃÌo߇†d†Ç*üô|Šˆ@ïÝý“tóÄ©¤¤¤3\ä‡çìÔîBG­q˜³†*´ÊñágœüÖoL™È”ÛcmöÈ踊ÿܰ`¾ å½iâ`ÿ§/¡6à.ÂRRo­¬ynΖD/áÀÜbúûû³Ùm=ÓÖѱ¼82¤Q*z=LˆŠúi4WèÓò>öGQ»ʲåßøþk˳Zûׯ°×BB>+XóÔaaaJÀˆ®ÎÏ~…KÁfTmVûã¸)4·Ë©ÚZã¼¼½µFsäjµ-wGCÛ:FcQ/ÈÓÁ4 ZŠ·[ÌW\§Œß®%^V29ñèçl–eÝb៯ýY˜XùNåݵBÄë_É­u•ñºõo€°„2N¥x¯™¡îOI„6 |bš˜˜0/ý'²çÇBuj\ÜÜ?wwCÁÄ}ËÈàKy×8=];g „ ”f•.ãˆEß<;‹ìAkuuµRÍïJÇ–¶†kìhÜÜw -q̧¢^có¼Ä6¤Öfý gèP¢àbSÙ¿«+@Ù@­øI„T܉yÃ5”Áb ÂNYÒáOzsó]ÑëQWÍñ+ä»Ï‡††r¸C};¦&'å»®ÁìBÇDPK/€…U®—(|~@â>‚-‚èÁÒ^;oge…ú6”  -mÝ}¯jÊjªÄÉõO†œÈ´1Q*ˆúÄììçŸWŒóØòoÜÉýñuPTÔê dS:g?1îY/ö'*÷¾Z]/Š_ì~“Ù6iºn‹<–ŒÌ(=T7ŒIPP°¹±ñ5`r8•¦Ó¯ -SSÚæææVð¬mw¼P"ÝYü€?"¤Ë(¯Î ßJÒÒÑa™ð:~~'¢ä«So?çøV8]FËȈÊÅÅ¥5‘ÓžùšI¯€[jQÑ»Í%£=yÀíHíD¼²æ%Sþ…ô÷oãs Cú)>^5}\ à r©§k)p‹KKû7—»ÆcúO‘ -K‡§¦„„„䓞333 XZ21›ãhSÃcÍ“—d°wûó{ww7K¨ÌxEv>ˆy[ûðáÞÂÜ—4===ˆ”°šk”ÛËB{¨ÝÑô…¨R)mÏA§XxŠJJ~!øœ|ÒëÐ’´ÿ9ÿA7SûKàvÅÆÇ/lGÝ=Ý»Ÿˆ­ªÏòŸ$åÙßWJUÒfºI×ò¹sX‰ÈIîèbpLã¼ 2>¼.?Ä )<ÇuÕ(õP},|”3ÿ$Ðo¡T5³;áæ0ù¶5ŽÅ8= J³N½ yðhWM®þ+ºRŽyG7¬%³–0‹ŽŽ&!&¾ ¼yóqesÖ~’ôé§uyyaT¦€©ò«À ƒkÅ'c6rW_ߘ-¢ÊpF 8B° ÌØ–tôœÍ ™:›õÙïÞ°µËšûB>Dç&WI¨º¤½ñ°§Òhƒ† û‰ösMÀI_ÚnÈA7>|¨Ta‚ #ó^½c*àÙdÏà1~Î:–€”ØÀc¤¢Ê´˜ä½“ÑVÀ*=¢¤¤d³ßÁó¸í˜Kì—Ï%¼5aëyîùõ11"…èç¬ã: Z1¦Ò+á2Õ)ÛwÌcZzóŒáB*{Ȇiz'su C"2¾‰d ø¤~eì´ƒÓ¿½YXõ_ù¯qõÚ)1z«ôTcsòmŸÞnݘ&Ðý%Úmˆ Òˆ©½J`û • ñó—/P×=‡åHÅ Ï?u] ~±<—§»™Ö«}(((À2`‘twvv »–]f蘘>µµœâI\“a“"Òè';³¡¡È€>lÍ7$Ó©×@;÷À Á"Ý9¼±Y8\¢+v÷î]¨œ¢˜ÍÜØºMO7®¹¹9P$Ï8íL"K(1èù¥Ñí¶§¾633ƒ²Q¡\YÜJ:º‚!ÆŒïV¢ö¯ E¹8Cöö,¾ÿê9 MÞP7Jyf/¿$×¾!§LªõÙS•Ùü9XÓ•æo¥ÑÓ ïÀ=`βòF•›mÍYLðÏÉÉìá€bÝÑŽŽ·åååòœö;yfE)­¯ä{ûÕ&­l­ž+fö ½dlÐ’°~©(—‘ƒÓOËm·¥%Iè.oç$''s¸^ØÈËËC-îÕÕÔäxyymSð95 Æö@Ч‘±qî F>|¨¶&Sˆ˜¯¡úÐ÷Wý0/”Ôu BexAÄ:cKÓ%ÅÉÑ{,²þ6™Å8j*W‘žåÕ+…àà`yçãôúýv\ÓËãÍÌÕJÉÞ®.n.®é4¡ìhzM@Ÿó989sÁ¶’…ê+'q;+Ê^žl«¦&]$åºS½:ÒÚ*ÀÂÁ¡²=UžË¡Õì%švt#N–Íj>'= ÿì(wFΘâdI±¤jŽ?¿%ªx¤Å9ˆ»·„®r†³Hé Fˆ¤é FË¥nRnö%²ùŸòùqêN±£yWI¬ü݇(î Xõæ–l#ô±±±_¿~½77GFçV¥r»Ý]]íËW}ˆˆx7 CÉ<¤_` ° À—‘6µµµ¡ü‡±±(@© ›å99 ¬g êÚlŒt¾“†Õ™¨èx½}Iܪ?-ÑCå¥ÑQÑÐöON„2‡µ •µÕåC³sŽå+Lh’<<`PQÛºÓ¹G@gþèìü Æ™]d&;´¼q~Ü]íFýQþ—ujg•m) 5¼u˜¦!‘ÀR…´Î‚×?ž#0\¢ßOà¸×• |øä ýô·o/®®¯‘ºÁ\C•³}–Ö ËËm燂ÈÇ€QK¼{‡Âítô)`ôþ±LúQª;€`a3h߃núûC?ÂÁCÍG”/Pc‚*‰a3µ¿|KÒØËØrŠó鎗—×@†.Tí^¿C3Q'ç`q± :ššš¸N&tä§ôÇò”ï=xø_óR(o0ƒ®JÙu{õÎnš÷glqå%z{dØÁ¡o±àûn#šÊy­¨æ«Ô.ØÃ'Ìe%ð}PøäüS£¢-êRñѽ7Ç¡^45"3Þ8Rø»{oçGf“¸@ûÞU÷Øûï…Þü3J2‘ãçÒ\#¸ëó î±6™©Z¼Ѿ¥ÉåÙ-(ö)æoÛÄÓ^. Ÿ¼_t»&"G;îĸº¬ÐÉ`Ŭ`lHEImš¢ Aó6xþHúo/ÈŠýñC˜L2áG¹ñ¸°¨(¤Aã± Œh=$¯Šý!gþEêƒõN‡¬/ߪ{Ͱ»2g^·öá’^ë7¾ˆ·8h‚ž_’eǨ¡º‰¯¶buâÅXΧoݳÝ5è»~Á{P¹ý¿±%:±àè¤D£p*^Ÿä¼ÓÔ×Ò—ÈYj:]au:lT´´éçë N.EFO_*ú÷S$@-ø^Ì×sündsHkv…=S)„4Ód>Û¬å!P.À75¼ý`í¦n…­^07òsáØý Wi\¯Šòþìš’$”¦Å©®³Ë—¹Nõ‚¤øh³ÏŽ”…kó­ª/H?ÇÆ„&f`Ãîêá0ÉÕÔ­)–~¯8;¶~¥»öHB. Ø¾©B p›Œ©!±â¨bº›ÐýŠá&Íûõ¡t›™ß-†-@0ÌÉ!=‰çv~¨”ðƒJšjÔ91ØïÌ\ð*ý¥øüŒ6’V òtñ< Ê ï›8œHÝ…¯Þo’õ…óÈñåû¶7Ý¡hi¢Ó–¶{9Ô3Ý5¢5Ü!T^­«›!|Bi»]À0UTÏ[ƒÍ.éÙNï¿–O séyÙ!žÍE~Fû‘í‚9ˆùÔ¢ÅÙYÇØ¸€ÂÇ Ì÷pŒÅ·&ŠI’Ý.(¹O˜ó8mÖPÀh†cÖþTÏ98âV“œCªªªœ¸Dÿ5‚ îøîv¬ý5m©Ìæ²¾$Õ’ùµíƒ·d [—ÎÅ–Å/mÙÄb™[n¥½¸á™†ÏÕ³ïÀ hOJÇQÅä‹i’°=…¶:;;mŸU=BW+{S+ûVËç~À]šÜ²äö® ½9¤4¢§Ï99ãßx>ø+Ò‚l¦x…<Ûˆ&_Ìÿˆ:û†ÿ…?öÏÊÿ…Z³X9WûÇ,©<ÕŸT¿Òž>6ÕÚózIeQ„K»SlüÉ£À…óÓxãå†üºOsW”7J†ôv;”i¼kûÔ·*pí6ÝÊiÉ65J#¥èuh="œzâu~g?]cŽr¹»î¦À’@LZ¨eΘ5¨tëŧOw™q$ü@…K¬[ýQçSÖÖÖ¬ºOÿ`ÑKF:º'Rý>ŸíÞüƒ^©UGÖŽx‡w×WªÜÈO¯ÓîÄjoy½ìêQK KQÏOˆ5:ÐI?CºÊ^é‘I­¯œZàÊ[fV·†f)ïõ öF[óœ7Ð3È-ºÑ¿¸õóæÜŠI‡ü _¡;Ýö£«ënãààg j…°ÄÄ^çÝ:ý }ð¨ÐT4"Ô2fç->H:CßD ¦V„„RJJÏJ^¡ñýuˆ]Sº:éeÏæý˜(Vû]†?JÒ—Gøm„å°ÚÞãó«•._GO­P¿eŠþa&<ø)GæK†A!v ^ŠÚ,¡sù"üFJ.ÿºTAë̈څÀ*¯2¦áê@ J0015Øì vöXð‡ç«Éh!¥¥LÐ"¬g& ÉË9q°Y!˜á3PÈQ4Ê|¡Ízb³F ,Äe5»÷H±ï·7—Jª¬ r…ÿŒ¤ªV+¦Sj¸ßú–šà^pØ ßHyÞ7;É€´M%)—K¶´®'(‚ýSß¼;Fi nyDŸÒ=˜FOsnÌn ó¼¯žwÈJÖv†-¼;x¸úìÈ*ÕÑ#xðàØÛÈ;Ðû_æy¬K¾ª³kf¸ñÒ«ŠÚ`‘ ËiYË“ò”îgÈS'vw·(½²T‡b(p¢TYoS'ÌYÀµ=>ºOµ…Hâþ¤>mÎtZƒCìdÔEs Gc§éD‰…©°mí__lË,ü—åA÷‡EûŒ¥‘±É[‹Ž††À 9t¾ Cqt$Y•ïQÉóµþ&3wM±Ïl}9©èÃÝY,ÙÐ÷ÿú­á¡±02†8Ra?„˜«§ ñÏWð! Ƭ=’gì[ý¹hÎu©ÌŽY¸|¶ªX]Ä ‡åŽKpYÈkGK#ŽÁçvÁ"õ‰èÞùìîÖY£V¥…+X½ Ñ#jt'áÌYÿzøô_ãZ›dÁh©ë7TÞóŠdL`Ž+ ‚7íyh5º'ó³¹ÎT¨±)¼²á.㔽Bæuâ'ö¨ó%5uâ„â* +šZüÚn Dª|ý{Û s6‰›î+21ô¦{ÿ,‡l©Ëù-«!˜äÄãþ«Nï:ìŒ!?,¶ $1x$Þ÷Α¹øÀ¤Yh`ݳŸ?ûóÉñÅ+¼>R¤ü½Þ1j¥†)ªÎ¦ì i“Ù.³J³[þ ­ø2èÞ‹¡]Tªf9%…+Ö{ùj×´ñ_±TlóÈW¢¾ Š0»Š¼-`à ñ7òtwÇ’õ•Í•ãšC¤±¦(Ï ‹uÜÔ·ªºÑ§¿íi*H' ý>=6òùá?ë1S\µmxuuCº5K»v¬‡;³SÌb+Ì7’«¹¢IlæŒÓŸ¿ëWW›žÝ’ÍRKÖ–C}/Ô&S—œs/µo Ò~5QVŒ¾k&à-ùi´8¸ëw_ü>¤§>!ü‡¨Õè±Üü*{îáu˜S«¨1V6Ïçýž™Ä«fa@¬éYµ;|¦ÓË"Ó¿2TÎ}ʳëÓÏ/yÀÅ'çÍL†(=Þg&Aj4‰ü…B±Ïm¬¬j<ótê'˜¼¾ú1 ½ƒ·ªÿØB†õ‡A]Tóƒ5B•{Y¤–öµ–dѦô‰ËMŠª–ý‡fO2ÔÁtÊΫ--6‰çáõìïîò56®€õˆá`&h! öç‰ÞÊ=W»dòÝtÿeµÝEôçRR§æwáYóQÿq†Õ$× QA‡ŽÔ(œ–õ7‹-÷ÎdÜÓ.—uÑ-´éø95ˆ ¼"ØÍFêMú€’ˆ),„¾! =ŸýÔ§â¥-…-1˜.° ­&u“‘\¡Ýï=LL@ý;Òk5‚Š5š ³hGdàì4&½› ÿÒÑC{×UlCý†wŠìƶŒƒÓBYÆ$qÀú®Ÿ%ä^3ÑÏ-6Æcýøîø½çn :påýõe/sB}<®ø>.c>?2Iï«->ü_“i(ÍÀóSS¦™Ï˜×:²9(ÿ$0Ñ_Û_Ã4_sæFüû‹ÉRøF:-vµCߪæá³°ÐQ1ícާZJøè’±:RþõÂ{Ö©Ó‚6o”f+›‰ò"ÆÃ·sÁP;Îݹ:J 0© Fs0 ó‡Ñø£ÃS—.’ÙÕ8#[Êe«÷xÒ)†¶O=RÁUÑ*åôäkFò¨Mº>N“ËúÞ‰~å皎)›(ÁþˆÆð |ò)Û-’eÛK^ÎäΆJ&þbàPíi Ö‘ «äÊßF f”Íùüœ´Æ‡îÖFI–­oßóÈQ‘ú±t‘­6´X¦4%ÆŸ ˜½tĆÚó?O M¢‡sw§W_Ûqý¾@}´ðbS³Û-#vhÁ“Çgy‰Ùü î3Ê£¤>”}$Ÿà’/ô]ähœ2ËÉÂÄT°ûrËp²óIhÁÉ—9ða##r²¾Ï‡øµô6ÃIv‚ñתruÙi ‰Wy|n×ÏýchY÷\Gb JUtFÅKpZfÜÆzNs#Ñ[ºZ>*k£ˆjðv´¼¶yâˆÍŸŒbÇ$ ÿÜ+‹ó„ êÊUÁøéÚ@xŽý_XÛ¦"ý†¸Å´î/wf<Òf#1•*FHHHLB"žÞs‘Ujшšá O#|1ÈÕø O_ÆëR*“U£cFSü¤SÎË8Úrc |/”vJ# =t¾Œ'õ®ŸKUe-÷Jš¹'žœ¾wV±+阔’IC$ÂÁ”~.FÀgcÃüæÍݱÈJ5éX U҆׋Êʘ·°PPä·°·‡?_ï uè(Õï‡,¾{‡BGG÷»KE,Sæ”í£ß¨T2´XíRø®T4‚“ݰÑA¹ú£þK?“1Gꈴ³þG…ÐöŒŸ,ˆƒ/²ö†{_àw.®ÓÃY3Ú iH„PK+«ùw-Éa*+ *ŧ$®³4"éÇÙœòAÂ}ÆacÏcýãǨ4MË]Põq6À”sË9Œâ‹MäKý¦ÙàvŒé™|=²pª•ö˜•ïÙqeg¾ÁaZgƒ~¸ ±¯5¯_¡l±±áÇ·úð5A–ÑìXÞ(Á2¾Oð»\j°¬544`JJJ¼ÿ¶uF%))„Í]B/q>Ý1%ÿ½ÂAÓI>u¾ù|q–;¾6t·.hðæÔ5Av¬¶¤6øKQLßzÚëJ]Gˆ #&ºO·ÙrÂ`¹•€ÞßXx÷E®"é–ŠÊÀÎC¬)né‘AjÊäÜ º.ýq¶åÕÕá:g{¨EA‹±……ÅûÕ¾DH1°±±AeÝe} FFs»¿¯nm©éW×Ô@m.ZŽÖ‡7ó jäô>,z?ŠaÐyàíí âÇØÓÛëx:ko8œœÍŸm‹”BÎ'o2Sõ¹÷æm)²ÚÊRĪ`Ðtè/#Fqü¸*~‰óKÒVÓô·dQþYÃëÌj56þ@y):~H-~ìæævµ×‚|vy ÛI­¥KÐY¾mýWUWïC—Jie³ 9ÉÑ–àaö­˜g¡ÕéØŽ†÷¿feQ9Ø”ë7fnKàkcã&qKlô:ì•+d<Dæ¯Î樨sÀt¶» 7&§äÜü„x©§Ù˜^‡DûiËbÓ€:‘Ô(«â-r‰ðÐ"³ÙÔ]©DŽÈ¥ŽÐÃa)ÞQQîò^ô~uœÅÒ¤¸ qšÃ^N§#ƒXM‘¸él-·ÓȈֈûšÖR{ð•Ë/ìWÑÂ7±K¸ßˆŠý ºæé‰ršÿMº)Rë>!äI³ø9,¬q}8ûå{˜XÍ›Âq&£ 2‰¸V`ŸP÷òy×SuW&&&cÒD^}JÉœÅï›îª©«ûæ–rx¡4Ç|ââ¶œÏ,6_¹_¿áú%Ÿ>)ýunªÄpJUÁ»¦å¼ý¡7ð‰]Ùû753|ChF ÄD¶“¯*ŠIݾ%\bÐ)ÒÕOùí¹T¶yA±« æÉU"RÒJæÞáÕ.£Hó­Ÿ}>­jÅKǃ_Œ»ý±L¾`Åp¢Nwç¥ÀšAY±ããÑåÆã8c”ÍíÁ¸û§§P‹>ð"Ô§O?FGcÈ· f•Å$wx*377ÇÆÎåJ–©ä§$Ô9Ÿ..-ñøðÁÛV!ãˆ[b_WPz¢ÜëÎ;À°Cd3‡¡”2ðI^ÞÞŸ£õ~_ü  xÄ:5>޳··ïKæÕÌÏWòwggÇÁÁ<ó‡–úöÚëj»l\\\GÅ:o#C‹3‚4¤M'ŠRú¨±Rsâ<ý§œ,Ô ¡ ù«>dY”î ^Y¿ûH ÜÚU{²D×^mêèÜc¶Öþ-€¯_áRPû ¨åÛñæ8Ôžê(u?‚j3omõ@ÙE‹¡¼7_M§+Ê-l]±‡nü¥¦¦>fýÁ²ýB‘c;zÛzðø¹­j@õ'¥‘\ ͯôÅÁ±ÕŸt™¬e½)áé©ûnåÜàg_æÌ]6/tŒ¬½•ÄŸ¯ñ+¿×€˜ÕýÒ%Òb¿2eÞí²“ùµmÓÐ\Ï£À à¬¯mè ‹UÌZW¬ô–PñzOâõÈBvlÀ°¬2Ê++;æn ÑçRRR í5¨Í5´½ö,"Fv\Ó}ùWg8TùêTè~81¡Õi‚NT8íh``šˆÉÈ|4Ý탂 …àA¥ú•kl(ß™ZXx?Ui®©•899Iª=fÀ¬¤ª¸Íù]§ã ˜ 躘l†¸Ö¯ŸiԪ Þ$$"""PûõL~ß'A„¼I^^÷ЉØÿ{oWeÖícbR*‚´¤t7ÒÒÒ%àÍ!] RRJ#Ý Ò"ÝÒÝ ÿý€Î8óÎ{gæ¾÷wï{ÿŸ{>3râyž½÷Ú+¾kïµ×*ÙÇ@]›lŠñN1ù„¶ˆ&[cÍòb‘‹Cg{ÎcÜüDÈ €A)Ò¾0w*G±¥Ú1c¥b:H)àvgë¶©™­† DÉ´>صóB»Q %/,WÀ…B¸ 1Mº=0rX7X‚„jihh ò¼ g2ïerusÓÈ7ÆB)B U ÅåºöGþÞdFÇL#}’ÃÒ0Ú –§jºnaÀ\!vZ(èQÏyp è×âÒRüÆôÛE‚.&2æÎ2Ø{ðÖ¿“§@ÅPDføyÛ«y—ú¸¦Ùúm ÓžG9ŸañÆlÝ“lŽråÄÜ¥Xé€}Šâ{o Ì$ÐvO‡I [ø[ŽTMZÑ'Om©ùŸ\uèæÌÎRwo©Æ Í ¤‹øž;ÎÍô©üö´ÞoàjÖ¦úžJZf1ý¸‹uH#‹¢½ââb(€%4TÉs öãǯµefÒCõ¿oÝzý‘-**ŠÍ¬-VÎ;9510pþìY(¥Ùàÿ¤Ðp‘%1Ðãó}yÔ?àƒJZ^>ùyΦ5ÎúJýà==2  (Æ._¸…bE ÅI>‰¹Iäôí¹TÓúÚšþ\w¦WoRRÒ÷ 9VMâ‡EEœ£££P܉™™™Û˜jŠê—˜K¤RšÀ‡Ð*4Mw‡L(ı¯-­Ü+w€E@§º"yìh¡Å2МãäÁý‡`TÁü›êQ¥aP6N‘¸™OŸîÞ¼y*LŠ¿urrâkcÙäı®Ë²Å姸ƒ×QéÖ¾¯TÍD 7=c×='ÇFi0i˜*°™­äKEb]‚F4ÔêªÞyãUÇ TÁ ªmô) 9ùà1@•*Ì-,æX±„}R{› ^—;Wu ]<;á Ö~~é¾@U¡„„†šôdi'Ûà1?¤²9ÜwJ‘o€ŠØ`zA>ë‰Ù5Ad.Ÿz]랣²JÆ<ÁdŒïµÂI.GÍpǥϼŸJRnK ¤] å[žƒÜ Æú/ÍM~B§g–3Ò}¯.zÅäöòzÄ©òâ*r{Tæ¯yöû º:ù³“e×üxá·[Æ–«›öswñ§ì“ØŒŽŽ°T°’Öuwx’çì°X¸‰•V…3;¤^Z[1¨¥<°ê³P~SÝé$üž©™Éû÷cN1ZCÀÃvÍÒ¼¬ƒçò¥K(²¦†ª…’-À _¾Î€¾5ß§¤WYïçèìn|!Àß¿¦£#¯zÌeU¼«°¢"6Pý€8‰RC¾^Nb¢glÊzØq7Š©Ý±i†ÇGí—|Æ223sssGgRã ;RdÏž?¿:ä0b=öÑ×fŽEUÜÊŠÉÞÞþ&¯}ÀÔ+ïlg¡cž öÅ›ÂyUا¬ýá©3·&â0%ý}|˜^ỹ+–“ƒ)!!.ÍL—'fÁä¡_‰ë6åÌÔêçë/ÊÝ;æü'LÑZÍ+…ª³ØütÏ^VÁ¹µ!ÃÀoèØ1zCíÍ’'fbù}ºëÜ÷Ié"a…mÒŒ_5m1¦€)KGw»G²¿_A$U¾ÄRT:ioÊèêÄ(âMÒ·¥U‡ŒŸ-SΠxïÛŽü‡‰¯I&ƒç}¿Ò@Ò…ª®‰â«èE77ËÜ$$lšç†`@<¡×®Õ-ÖÜÎ\ƒvš[c¸2÷~ñ·æîçReFrV™%8qlh†i²Šûçï*”c(½Å$lf»T1U\>@«’Íá‡Z<3•3ÎÃwµõ=í«¦Žñ¡!|lOcÛgE¹îƒ3î ûDÈÉ•SOÑô:Ÿ·¢\ýø>›ç³Ãsbíz§Ï«•~SoxwT.¥ñ4LmO¥{Ë¿[|«d~1¶Éåcty…vðh2Yëþ«wgžæ»Äó0ÛËš§Š×læ IÓ†mc_ÑÓÓsÛNcvww?õòú’©ÅYh1Utƒ ¢ÐìÄçÔýý}è@P1™önP¨s}½7?6¶p4‡°âB%Ã’±kSmFu7΢¢FðÊj8¶¼ú˜””ÂPPAq™(–Ú÷OÏHœÂx3k€Y¼xé”,j}ºý‰\,3r²Yjî~¡ù Àk5P3Vn?VIWU¡éæMx“¼xÍÌ…¬uß•ÇaQh<~g6 ŒùÁ’Ð(V£wNk“ç£)ep³t*4'ÝŒŒŒ222.\¹Â™/w'/‘%}·¤´¸óêUx¤Èë´Ü´´FÏ¡“}ôšù_Ó³+ÓÝTTö‹çB©3t«*ù#-uJÅö¯˜¨óš\¸ùÍ^bcôs¢)ªÌ6%x$ <}§¹Ì¢Æ}((†Ç.mpkgg§¸¬l|v¶èzèT¼t§uYŒ_co¾ ð³^k! Ãž`ðÞFqN牉‰ÁÈUÆõ3ÒâùM“ù¸9_Ðå1´¢«¨ -E`JÚUê _hqU8\€“Öï±\ªHR»ÕÌ Í"„v’Y¤ß,tª2JCGghm{™©s«]&5­‰ŸËB:~˜`™ =_PŸdV{ÅEV2"ÝHzúÆ»ìɈNÑQâø{ã¨L¨Ðý„ÙȨªdFbš)ë½’]¥b‰nŒo£¸*)/á®Jº£á9ØH{K°lzj^x—»£T¢¯Ý´ˆPãþ ½®HT] ±Ï>×Ä{$è˪’?õYcbµXø[© »)ê ú”‰\½–ø½{÷|}Μ9#)'4A/ü€ò~hhhº´qOZ^>[U_hEŸ:Ó? Ä.³îçõ1­±"‹æÀ“;’ú?ôòC3Ô^S™³xÜ6·v7Èyy£§â=†Û §,úuh¥KAªé@å°­åäç,ýàºÖ‰†ÏöÉXûjTFeuuJRŽXõÛÔg¿‚¯ âMÔl܉DÓ*…* t©hàé›x<ÅLLƒgò'™ x˜ñ ³iròÙŒR,¿/±:;ôѽKŠ&GÊkÎr¬©÷$.i5ÙYéBòñTY´_зVË53ñÕ–njädƒt»ÑÝËëçœmKÄÖØ&®'ÑH·Uh½t¸"1?ä_èë'pI°“ —tV e8X‘|N6Q[SÍQ5€{Ñ› 8AéèìüÜœYWB"µù`1–‡‡Ÿz‰ ·ör§5l'k;Â<£¶º***èLj:û‹<‡%WWWŸ€€ŒœÖFcÛü’ý2”t¦vo©J×_BËãÛàƒ—ÈãhKQvÉ %í«É£o©Ï¨ÓæO<3|÷Þyñé5wÄ D©ÂDÆ,.-Ïy„Î P“Šf*4㽜{¢+häîJÿ)ø:šçVû'㌫åwÛëñ{‚ ‹íók×N¡–ª®›NZ¨ŒÒ/å%ÕäeÙ:v_mz?OÛSæ¶gŸ¤ÄOã÷åê#ŸR¥©@_£Ö  ØêèèÉÈ)HÝ®mX²ÂªŸbªÅð9…pޏ†ï:Sª§¯¿Óæq(âèX +ûuåµúW¨Ÿƒ‚Ã}}|H¸¸Š¿ðäååI—§­>¬|·+=« p&t\Ç‹¯̳´œGs&§å0_bRdP¯}î.t´®×ÒØHÆÁ®¦ãä)à¶ûâûŒ÷æÀ̇Ëû>¿ß¨¹"•—Z9w‚U¡s¬ÿØ‘s¯Ãœ+qd uËkË+µdCÔ¹5ÓC…¹ÜS¡˜“Ð'™òÚåæ¼@z¨X:~g¦îh¶Y ÈvúÌk$R¿úéE¯µ;vÃïö«–ŸÑš‘³N’¦dg‡ª Æ9Ͼ¥M-¥©Ð³[Ÿë ÀúöÁÖÈL_^*lhwc®¡µ5Åb PE€ˆô)up ¿—ÒU*æIþ—O¢W[ÍK…t O™¬hº;-a×É•N^zõŠúë73 ßÖ5H4LŸ›ã²zÆm޾6k§4‚'¯A#*Âüà=в ûn¥[Ù[Ü”WáïÜœ bŠÌšûú4dv³-†ô ðÿÓt²Õ jÅØÌ(¦††)iii/ããuW-ŠW˜ª—9dC!x"Üííí*YyëfÛË£Ý[HøÆuÔ7À-™ ’˜±pss“þè¾úM²kd¤jP=3#£óÔ™óohhh(oWVår!ml”yyy7¦Û“@+³km‚Ùñ'iÖã_½šÜ?0,׬YvE €[J99÷:::º 2Ìý¨¥7É0+õÐ ¦¹î%–’}{º«Ñ3> à‡šàܪ–g6}‚Qš¶š5€~IÑ!è¦Ü›U°úmðÞÖ”WÚéι53bR|ÿ/#ñî»oC«”÷î]ãÁ¢JAóp…K:à~ù8¾·ËïÏÌÆp#3Ç+¶†•â]¹Ù™™ƒ‚T´K“‹dÒ.BÄö—Ú™©d÷@1¶š)ñóó«ÄÊ©ñ¢2@ZÛúú€à–p;òQVÕÛ]኷5Ì>;#èk{Áé’–is¨qŠG#ºmŒ_97Ö²ÄÚ¸U·öDø·ãýgK†LÒ8D²®xÓ1V¥¹wopn|¼®v{¤+RУ²¿Ü ÉÎÁQ8<›Ñbï_&kQ´çS—y¾ê Á¬këÇ÷ïïÈÅ È/Êw+˜J×ÐWå!\##¨ 5 +ë ðÈ£l^²›èé)VÒTDAI96:ª0Æüx‘ìü1òÚôµM.ƒd -a.7¡’½£KK–ꈞ,BhG5£6xH=†ƒƒƒï`½Ã¼?ß´ •<‹áR@8Õ5^ÀÀ¨km b½üU(œA»1Žß…Ëq™ø…éí7=”úÝÄ[_ªÆLx‘zš¨ºØdÍm—ÏY'ÍG~“\–®›ªrÙ‰ã\4>Ò'ÖÝb þxx%JÖÐcਰ̪àÔyRQI`^€ã:dÍíž%†ZÌÕ@çÄ›:sõj/aÜä‚¶°€Û/o=^nøÐÄX%£¬Œ{…oÚíš_4éíš4+éÓ7!€í×¾…Êãk}Ä‘¿l@úòðÙ¬æ{™•¼­ë•Y›_:%™¶ôå;…¾­¡IT+Þ‘4ËXlƒm}ÿFuÈNï§§äãiÉð²P“-³ ’ý6É»rÞ#îlÚŸ®2sr¦zz½}ð3lnÿ¯jФ±ÒeB©LÇ©X¨îEOÑ¢¸lÙo¶HEkg÷}»”äùk«=/Ïtgjù®ÃÒÕ²'Á;¯qahåKžoå,0pPÒ1ö´¶ŽŽPb÷íËVü¬¬¡·Õ²ðfTÎfÈ$GE©Ðwd¤¦R­¬¬xy‡Z[[?TõváX½ŽB ´(³ú­€èŽ35žÚU=Úì€ë/“ÍË ] U¥€V €ŒiškŒï}‘ÿ”»^ŒʇA¾vðæ¥t¦Ô‡*¬Há”–ÒáÚ‘”êƒ"‡'‰ñAÙ=FÍòœj‹téVtô©A’C¯Ë×ïÈ.šbòLlŪ%X1+[ Âެ^èn*T§^ÜÛš7W KŠ4*‰ß v&à«—†Ú1Å2…h=‘éÎŽià‘²>·Ý×Ù®22Ùí\ (þ4Pê+ §’÷=³/sù¤XPN¨«Ð†@êÆEÒ€ôµºP¦=0êµêËŒLîûŽó ;#G‡õ¨Ä®ïÁƒÐ’SRÛ?›4Çò^ì<0)Wµ³þÈõ| @~saŠ‘ì\v¬Æ‹ÙäË­pFÆÒ —/ëíi‡m°»¤¼<Ð9ÜPõxñckõœ\òƒèèè¿=—pœŒ2‚rÿÕ×§ö¯Äµq{¶àÐðqæPEÞ­·m=z¡Ã&Y’øêZøÑ+}¸×RRkWÖÇuh)‚ÁÅðƒl·kZã6äS^^NÌÄ··ùû‹^½B WZÀªÈÍÍµí¼ø022;p»`ÈIâ8x¢÷Ú5àWr˜÷>˜½gÚ>•‚ñJR×óñãæR© nE¼½¥eeÈéϤýfÞ‰Ô*¦ÕÊ —P|î TØ5»r—–™™91ô²ÖÿzG•ÇÑîþöSã³åÌí_¾„ˆxc0»íÚ(q?à9uêxN‚èR²çåë,z/|ƒ;ƒŠñÚr¤ò¦€k±æFK wè VÃÏ.ùšôò;·._££vèOËKÙP«nøÆï¼Ž¾5ÇpçÉåÿ·¿“5Óá]^Îç¼1{îÎÝ»€áb—²ÖŒ)I~,//áê̳ºÕ—)Ð|ks@™¸¥ùAªšJ#ñ>67'[3€~8ªêBÆÆÆ.œ@i>?ñëðÝËÛÅ÷û§ËÉŸb:$®‹Äzi¦œ„þò ¥€ëùÍ`¼ãvXáßY¬zi:qÌ7”üa{’ÄÚbÙþùó/Ôˆßû`‘£µíÙÏ÷~ˆdÖ_L£y}Ÿƒ¿œ£Ï½mu^åÃ}KßÄ— ô L"kG-ë×"ßNF¦_‹„• Ÿc§j™,Z¤ýµ_5À:qóù&çnÍËQ!$h{Žšk›ï é¾ëÿnÔý"þ‹œrÛB[¥Éƽ«÷v¶¤}ê2lå?õpÆ{rŽŽrñòæ·“ŹïÎÐj^×uý0`Y%koÏ¥asÝNG\G'ŽT»w!èlS8=k€-¯=݈ëzCCƒ×z«ð…h|S}½™˧˜èO·|ÓBöî’ŠŠ‘cI3Þþ±—Žž^A%쟜 É—„ê3šFîRýöË•´qÊÑŇˆ¨õBThšŠ ÕÅegÿ5¾°LÀ¼tù²YÅü«©Vmt±~—ü4×_½JL|òò æÈ>ÊT¬©ÀC‘Îû骙êùÆ *œ#Pè¤Â›V1Óî0×ÖƒgâÀG‰qÍœfÉ&"3ßý–ònÆÔœó‘ŠÛÃ’N»,ñc ÐÍ‹e†`q ûÔ½Nà l,Qöñ’\ÜUa/ƒÅr[Ac¿’ÌÓû¨ãŽÞôÝRª¿/0ëß•’"cc{E.®üVcIlĦªRÁÔñ°N*aIO×䮹Áâfë÷O½I3]/pÛÛì÷Sò‡x|®¸´ûúuÔ®LJ¡Þl1¢Úi³ƒö€Ð^ÞaÂÊ**<"„¼Ý°K¤¢-¼@æÜññ¥¦Zc}ƒƒ§€seù väâæ{sc=âf:RY ›ñ ¢SP†,Ƚ(ÀöÆLmüôéÁ`±õöÞž¾™™tª\¬”-Ÿ±O€öåÅþ‚¦œÊíB PìãD”%Ïçò ôú6ëOn]Z#§Dý®¬Š ‹B#ˆÉÉa-@)²ËW/‡š¢°¡¹™Îaä»±ô=„Èû¨¦9åÏXù)M%ý®¤$)…gLL m-m@^{ͳQ3ÛÕ#Y¶junSGS1TÍ-«ŒÔiQ‹’¤:QRÑ©`Ÿ´Ù»´¤¢R#ÅKýþ@,¡¥€ÕPýÄù=plâðÊ6c•4h½7’G€»\Ÿ ^„šfkÕóCeP.N0·®n%æÌ(‹ÕiloDGé¶Ý%Rüàý}×R‡%9!¡Sfݤ´´~ûãÄP zeèÌq‘û6ìÕèàxYi£éK|3 t·ë;+[1ÃŽO2|HéåÌfsÒ 6G2?ùúõ‘Ë|.í«Y7p$/^¼8ºRO<Õ.A o|Aãµ!â…ö¡©)}ÐüZžQT¯žˆßùs’Ä»ÙÍQ¬·3‘}ïàÍÑœWtuu+·Ç.«fjªl<Áh”í‚ÁŒ‚*ß;ŽE‰¨ñ2ê±íôP–_œÊÔ¿9Šß³.Ü¿*‘ûþÜ>‹ƒxGWd•®_"˜.€pê?ÉLI@ÕšYê’íð øh¨Ö§Û×g»üKSÝGÇaø¯×GZeNi̸͟-«ÒÄW\”ò# ÀÏo @'Ψ¨(Ûù^hõ]ÙDàe³,¨’ÚÀ–›t8tÒ9C«(ëãžRªÜðQö×;ä å-Ò[¹_L±*õ E.’{¼ Yí;ª;—ßš°Åka²–úV»šD0õÙå=®"ÖØ×I꽑 ¹Ì"."jö“¢¬ÆMÏn»X`iözѼ0‘ÆD Kø¦hj³Ë¦yyE…µã‚À¤¢çÅ{ß’¯[´Ý„mT. Vyø6I ^òÐ¥ÈÅú=yrªMíÛŽ™œ©]~Epÿ™ýB{–6¯Àö×3•;“ÑÎʃ¯‹Š1J†ž9j‰­õ+‹ýöäm®Üd–°yß;φPª'û¼2Èî­ì§û%æX‹ï¬,/?˜h ý:1!¶6Ù"Ýœ©ÒÎo?ã¤;-…½¤ž“#Ø\]*s‘0?oà ·õ˜¨ç^ç‘9¼^·«MáB;—£Ë×5{>¦þׄìS0$.¬ó„ùï±îÐìó™íîH8º¥‡Èü¼7Ä6B(úÙçõ$üH|˜÷õ¹`ñmI=rª#áÎw½½ê¯Œ1"Lä!÷€0(ù4À>#î{o•R»%"…_XÏ’¾5B–ä0>TÕ؉èeß¹I·z•”j{·Ý¸ðpœNÐS÷k‘|¶•á¸]Ö¡áîÅååß]‘––’ªÉÌÒ.Ã亚˜¦¨¤$KøSO%ÔÉBJZVV,©ýU—)” ECCãÎÄZ;^ô‘ø…v[à Qæyá42<~ü˜Ëã^«ðÛòh—70ñ´»ÛÿpÀ$Ëþe`Õ¨†£–––a[\Kk,¯¤œÜ$¸:9Ùœ™Ï gˆ]—Os{|ÔÄõè`k(DwÜÄóëþäòò2“^3sn³õqÀbZ{>MÊ—4•ÛˆÁOÏHE¬Š6?Œd±VÁç…´ŒwŸ›ŒµÎá>.Ù¸{iíÈY>[)ÁÜk-DÙØÚr\2ùdÿòãêDÓ£D[áï+œÖʉ }'k¬y^4J)xø8þ[«­§A&–' °Ø;§5C(¡å°Ç‘ô·ò`Sk~~ªÿ¡€*ëª ¨±‚Z“LŒLÄÿ¸Úºa,ºÎ3:àÿšÕ,V”ƒÝ Vƒj ðW%MšMû\Ѻ±å4ZÓîé«Ú‹ºèZᛓlk…,¥ªŠ’U‡a6U$ºò°aݪèMöM…qtõ¹‰åúžžÆº°ÔÔ{©õü½q ú#Ot¸Ãk³dYèFJ5Ôõ*Š mãG-lüQYû8ç\}õ²d-©v›·ØK=Ædìåe™J+Sö o6ÖÕ´=zë}öìö1¯}ÀÊx}žÇ‘;å§“Ø^;jÒÀÈßXVãùÒT¤bŒþBC#–=Ê?'qwk¾¯f¬Ößd ÐÂ×É ¥¥Z[–øòÖ±Ëæ<Ís›Î^÷®Lâ´Cn€"Ö‘N\áÏuÇ‚p'Óï Ø„ª^á¨|·?õÅ/J&BöÞ1ÿcæ3ËݯÓúûšrlpqÊK¤‹÷U$¤G¹RsEO‘ÑÐÐИK1Ý7!ΪÒK}÷ùŸË‚?Æ—>«G·Ûç—g¯°Q^¿´ºs?¬Ú—ÑŸ¿³ºñˆ­—£èÁv°¡æ vŸuù‰‹žœêÒêÑ_O$UÂõüøQOzW?99”® ÖñV¬É!"‚&Bø ³Ð¹ƒÊWoDÔÝUIñ XÍïpb%øÜö%˜c•+;}b0ÏçKˆèlÖƒø–¼Àó–QO1šñË–34Å*ë[rÚ>iiŽ[VßF‹ð†ŽªÑì噇ñ&מ‘»]ß½¡í±ò€uò>]´ .ǤׄêÐÍiæ$;n—k%‡F íºÉ@ëË$½ÊeOrzˆþèÉ`Àb¼;Cp1¡G2kQs½ÌZÏÎúnÕü‹rfÖ9)I „ÞÎQoÙÚò›Æ¼•ñÖ¨[¡ •!aw.\¼Hö´0|ÈtËLû«JNvoÏi?ºÕK÷/õŽ=ÆzÇ2º”M]kjvU þ\EìùÃù[€ƒ<éB£šî2Ÿ¡‡Ê„ï!µKBX§ø¦Jâ l 'Û°'ú>äžZÇë]6¢— M?¿…*fâ;KÐiàtôýåånŽ—ü[eN]Íä`±n¡p]©½¾¿‘í‘Ù³‡–DX(/çCaaa"t’$‚ë ó€VïÌØÚ¿nɹycŏþíšžÚê ½Í(î=¢©¶.Àiw&•Ûq™ä«Æuëýí¾N%(R¸M`¯YKM‚!(bÁÒ´Œ†…EÁ'èƒ rm3õââh›| ås¾æR_¹ªscÍYšr–Ù Æ.ôþþº $T{|ƒŒžÜÂñ4>Ó"kµ¿YT5ñõÓo““zšQl&Ø}}}„†£kÙ=1ïûYnr–ZÑóŸ?‡#¼ÿ SïÝú†Ö«þºM#9¥ÝMô ajü ²—n‘| Þ~7%"÷I $'6"‘ºø>~ ÃÞþ5õtˆ Ðâ†y7͇–ÜëÅü©ihH²†¹'2Ã1Yw–k®Ü`5”y²'LÔâMìÞ„eÇ0j“&]» Ú.ÁÓÌ[z¤Áž¶¶Ç‚¸ݾ6³Á Í4úê±eœãÚÞª)àÂRõṿ„'rí]]¨uôÔ5G—8Ô§»§üœ›·c0½Z¥9®]Ö—©8TN}MírLí䋹$yÄɸ†“-“]NÆèˆ•Ý+q%@œ¯M>Õd}‹ª¿nçã=3 œ{Þ'çÑõ–¿~à[ý٧墪ƒ@ÏË×߸X:Çå¡Ö(B&‰êµ'ŠÑi¼{Ú߯),"¢õâ¬Ù<ëf턦âTmÖ7VwMM¨À×:K€ £ ŸF¹ÏpÝ××—Ú¯ÙÆ¯fùÑAW,!%Å ˜™kEº!¾Â¶„];ª•ûúÌžñ>-ݬÓ=+륧¿Æ£éçÆ>néÂEd'ÏkµT±:k_Êž#¿º¥;öîVµ¨–1‚¥Ý´€Åañ~w¶np­”0C³Àïóç æ[@@™dû1¤°Ï|f('éÐÝÃÔ®yõûO+Zíúüð3…Gïå_š@}#`"f—>­à[FY|êÃ:!!Åå§þrR.%ׯ^]'>ŠŒ‰¹ í-6é~ùÊ ÜÛ›ÝøTFU i´›š×Ó.m.…:mò\ÇzËòèƒÈÙïË4×Rž¦Ir?£C wÄ+*1ü`gŒ|íx)PUäNÎùZyR¦Î+¸m[ÓÍ$çùqG8)½ãßá“äË”{_55õðžài‚xJeŸ&“²;p8r²y´C^091ñqs³ÌdklSÅÖðJVÈï¦FîÓi™(Oh‹ôÝ»wÎ[g5ßšK÷36ˆ’–Æ5ê_ÃÈ ÿXß%ºŽað5{lifP5-<ï‘p`ùâ¹­,5¿„WR™ëzó ’ç º;$–&ðŒ÷ò4®Êˆ®w3Oð²¼ç³Ø‚°]Ù˜ÍsÝBœó#‘Þ .:¢yòôCœÉ }S= ö¯‚üÎ6^é¶H³%Ûcã+Á$l [·Ñ­pf]díÑq¡Ø¥²[¾Úx{XÿúÖµëÂÀ“ˆ ¬«ƒÙÀ8KÚ·o‹¦°óÍ É> ³¡®…oL#û†¸2ó”mm¹}#–_Z×êâíL?h$“¸rkWŒ”¤3¸øðC`–“]nèQ¶é¾›1›Ÿ‘rìùÓ"@ò±î8ÊKNú¶&Ó‡ø&:Å9ÏÒÈÅòÔ–Ú͹JåÝ…TTúîkOKÝÛãߪÒn¬(_:X X±»›xÆZshû55¾$‹ÿµ¾WÐÙéÂñüš½îP.º]‰G<ó”×ÇÎOÃÍÚ߀iõj•£¿®àz¸'L{Ekv£2p&u‹h.»çÙrÒ=l÷Î}…'³&ŸédòÅ´¶X«6·x Ö&™»{]!^\˜ˆŽnJSIóæÍàÂmïíAq´äòÁ"÷ 0Nå- 'ÿˤ¢j‰¥*ó”ò«­&Öã9ÅVN…„×®?‚i*J°F%îß!ŒŽ§}XÔe#®þЉ8R21ÄpÕ¬àò :éÅÃísÆË=fË={£×ß`ç­Ìôà¸ß¬Î®j.ÞMð=…æš3jr×3‘;Cõ6öí¤W§¯ýœèæÅ±ÒÚŠíöog'N¸K;ÆhšÛÍU“¬!œÍç‘å§,žx캪SsµË¡8ñ¸<ÐÖÎh—()¥åU>¼N0ÆêB÷IÿÚág9$úz¶ØAój|°ÃnÞÌ1…§0ñ§£ˆ6Òrû¶~NZ‰˜z„ ¿oÏ™’‡1oÇ0/AuQ}j‘Lðï q“72Ñ´:»½÷1)b(ý ¦ ÓS-5¾–Ô’ê¾Áé.¬Ôö^±xFus¾ãB;&.…RÊåö8M`ººÕ-¨Ú§€VÀWÆj+1Rû 1…·ƒš²Ýߌâ÷«b²Y̹ñ°×œ¿A¤f»ýõY,©|ލIeŸÖF„‚Ýà—éiá.ôpZï -*ÍÀ䯆:Ê4yÌ3”¾®i ËÑbt+¸Þ?Øâ1/`¨9scKèHÕJ§3]zßþª~.ºVæå²ßÌî‰žÜžÒ Öô—n±©b±zx¼Ö?t–Çnì Ž”áï¡_ìzàäÝ'¶s*êÆ›×x´õ=÷¡ªnÓdÌDþ¶ÔÄHâ§ÔܾTwÍðòøÅ‘W'+9P½[œ<ÙÆ}Aã–É]jÉž§Ï·CïiìÝ˧8Îûå·<ˆ„ý„WQ[^x¨yæ_UñÔµ êýzÙ3QÛ7Q團I‰½iz¬üõ, ¸#MMUüiYÏ—ªÍS7ÑšCoW=*Ê%±ÁÌ9½E\•ÉþàÙõU¥_fă³tù²2¾öHéf@`հ˧²Ìµ h]Øx“"‰Ÿ›fkߌJÏ*Ê»pa“œ¤³­ ñ¹3wpw×d-•ëúñ UB1¦²m[{S¤î¯.¤ö´‘ݽqÍ‹ãnJõ:M˜8ïÔÁüŒÎS Tì—¸Ÿ¤IÚä)öhkL5V£g(‹~ø@PïÝÆz)Ãc X>ê$GQ%š)$Fùèf[Ûšš¡k˜uØ®ãáÉ v}XÇÔq4ŸxjŒŽˆh|KÏNM}ö©sÖ‡Cgt÷S—J/x h?ÒÝyìüÙŽñÙÎhh”ÅÞt†ºÝK²Ûfƒ¤®ŒU^É®þ‡¯¬JÌö¿òø­}êIJr$°œEì¡èŽÙCy›œjÉ칂J¬„÷ÞGH´Ô î‚¿rµ•&ïry€ ›&+(ÖFfSe³j"&ˆëÆ ”@PPÂĉŸPUÛÙ2U·/µkÓàãeŸŠá5OöþêHÍv¾À2"vég½Lvº&ÓËæÚB*ÄÜQ€À¡xTcUœ¾¸”œ¤+‡Æ¾qʹ}ƒ:-­ñ[½pþ³ŽÙ”Õ7Q«O óáGù)ûÈ5ª›ËQËÓ¸Ù£àVýx ÙfD0›ì–¶_bì«Mò‘rE©òžƒ¬ë3Eìåu/1µ[Zü™p5ßÞv¸§¶øf`”zçÐÎ.‰ü¬¬Ñ˜±Kãý ¤îo”RåVºÔtwxÐÚ/nïìXX%t4˜K ûvSŽ_//’¯à(ÿ0l‡yœÚ«`”uæÃ³õ;IþËt˜À(Ü{Q(›*o9ôb"*§«8?¦M.ã<Õ$c¶ñæÓ[g—׌\8Õ‡•MS—‘gFßò9Ÿ“Jµm'4̸¬/¿Yn,¯AÊXNPß´¬Ë””}Aøl‡ÒTb(]h¿sóªw‹l«ÃFÆØ³¨¥îäBu§gfc_¶ìGùöó’Š¢¶Ýø©T¤ê†õʆõ÷ß+N¥v„ÈžG¹‘¦¥a!GqËj?œÖçÓRè?/qõPæ\ær~[x4ýþÉýèÞXB‰XÕ¸¶'»ò:Ãx™"x™Ô¸ÀàŠcã”Å”1ªB…¯1!¯x^ ¬ALÔ’“q®ãÁNc’ápÙÑ|AÏ5Ú¶;¥ )ì|sˆÑ'`ޝHÊ@TÀK=ºÜ<÷f¡ÓÂ>-_pÖÔÌí™$¿Ì‰ú,Ö©›¢^”E{Uÿþ¥‘R=õ¢9Z)éÐB7wO{HtæIÉèÛia­BŒDÌÄ Y^É5ñûöE[¹@m=?}Á÷ʃÞyƒê,µ\`µˆï*°ŠñšqJèŒ{¸(×®¤&9 * Ë \͈yq*†2)u©šxÒæ«YŒUóG$‚빇‡‰£¯ÞŽåOÄ=Âl¡jmÏí“ePæ<ëUpè9Љ€IÂê›ä†s–fþæqÑVaw}B*•¶‰:éÂâf Dv_/æyªÓ#öÌ)u]gÍ3Q»`n%Ô À×L»ñþ·DzQdÉ<"€Â^Æh!RŠ$ú3&c^Xùá•@Võ‚âÅ t®ÖøgÛ(7´o?ÅÔôrÁPPz àmã2“¢—g(Û­1Khn§l8gñ,,DÌûu© †%_=¤î÷–¯Ä‘Õ.(‚ŽO ŽɨiÚ 4ee÷|Fp•~ò:"ÄŸ»HþtZH$°ÊÏùn¡-ßÏN Ò¢R“˜)¢DS%–èåjíïãË~(À)Áb£#?³O*zÙÜi—ŠCÅ©èÌム’Hnµ³V{àø~XׂʶC¸¯Þ%K<%j4=áq+ÌIBŽ#æÜ$Àá§½ûâê &^Ê„šVÖ¡ÐÔà¶®7@B阱7DÍU™˜ûâf¤Èg L…IEËhºŸ¾ý(ç*wô"‹ŠÙŽAdÇâ¾´ èºyAÇ.Q Ã,Û|úõêæI…½^+±ýzÀš·Ïa¡‡óî`•5ÈÞFI¸xŠ¥+3Q¤©¥e¢d*Nkqh}a ¨]ÿªXB®‘ìÂR0®À¼ *맞ѓ#{ABâ”~A5÷G¿úGøq¯X_Å<=ÂX¦Ÿn§¨¶æê(„%M+yòEà+cúÒe¯øÖÃTH¼Ä#¢ôĬTþ‹›Cí½‹‹£ò`8+gD|Ú.’¾ Î(s¤h%äP*zθ>Ù‹vÓ©*¤QßpñÀŒ«Â¶#[×UóIÇdÊ’ñS” K]Š•n¸©]k“ ŒwHo‘>Ìy}'ñ˓Ϻ»D³Â/Y3ybŽù}üøÑjq{i“µ¯f¸ÂERZz ¦¬-Ýeío´P£}¾±2SDe”J ‡"Šú8d¿x!ËÜE"ŸuooÏSkÓ"¦’å¢Ã7H픹€ù* LÏ•h€úªUçô¾íÇ­ïÁ®$^ÎçS€*ÆCU$æº3kflW·Çƒ‘ÛË0lll(|ZoñÆ€W³9†;4-VOOÏq¥¾¡¥¥vÂоî/0»Áïl[Vô×JlÔ7ÊÆÍhê½B —Xÿ‡˜‚Í—”œ›Zïwf“õ‚+°½ûÓÆnÀ¾zñê´½®ïúP‰‘«âš[¹/Ÿ^²T“îJèg¬/Ý/Làþ#»] Æí-µKNÒ´ÍSˆõ÷®º Ên/ÊL$ÉÓi"þÞö§,,¹0p‹“e˜B~Óí¨'¯¨é#v÷‘Üêç{§k^/•cæå~’¢OåcßïêºÖÇ%×rY,6Qb³^ò>Òü´™·~ÆuWTÀsØdKþ­ÅÝ*w 6…Ö…/èB'ÆÔß\|rÊ`@EEåC%·\6r$Aì†ûpQUÛ~HÈk‰ßN¯…%"ÎÕ̼ï0d'à«Kð†fu»*h*<âËNWwzÉÜûþ]2¬Š²º»¥…ª±–M‚×òSÎ|ˤ¯×™rBWÐNs0Ø›ÐQâIŽsW®%]§¡¦&!'¯)sÛß^oÒù´`¿Öx;ûs•‡Çã'OFŸ\X^tຠE½¾xKFFÉf‚}ÍâÝÂ4­r‘T×ÅËî7jb-7ô÷©ÔÖòR]Ú§&ïJÞ:Ngä#ý‰WtÌ[YãXsœ&.ú›E¯`•XZûP³ ¬ÐLªRKL|¨4eŸEó† 4<&”‡-Ñœ¡!!W"‡ÄèdSÑÓÎΚ¾•¹fÃû‰Å@!³Ý¬2T6ÐÔÔ´÷ür®¿sÅpD˲"Û¥öB¢FlüaÞUÜrަ$+O„}ˆq…·´V:¸w ®Óý°°| M¥'Ù·fm¯ôñ'¶6dψŸ@Ê Ím±ú¯öixþ q¹‰+=Ïlekȃ „ðZ•¼qM\]Šd”ßîiòÙ±ë$KO1c< ßCézutˆŠ,Q¿ŽzOöÅÃÛÅЛÚÚ$p¥¤¥OqÙÏ«WX¼j_‹+2lÁ·A"5rõÎqssßäs|öV)Õy‹Q»ô”ÆÂ¬‡ ’^h³ð¶jFñkÂXÏŽIq‚^«¥÷qC^ñ“a<¬ÀsÏ¿ ¤Ò̓vâýQX’ñK$Nj©¦§ºCuíIyΈ)ä ,lï¹`Óºl-NTyxå°íÑqAWQ±.ºEI¹:ì²EBªf¨È7épœ}› …&IO>— Z±6Ó¬ƒ«í8Ë^LÞ›år(ƈЦ¦‘èÉaÞ¢žƒúÀä@T_YÚӔძŠ<455ýTo8 9K×ú ic_ÇÛrØQà&g­ß³²¿MøìõöcÐÞÞ-‡ì9²bfµîMla[F¿ÄgS (Ý©òÄÐnâ’= ¬Ãˆg}0±¥­®RG Gª¹ªê5([Oç…a@t#ðæMš”¡!%d, @ôð$Ñ…A¿³$/‹~nàc@Ìáà•ëâ‡sÄÉ8!'1‘èšôQ‘!!ÕQ¬Fšãʉ—£ŸW†Ìç¢ÈÝ-ïD”½÷-åjbYÙöyEqñóÒ ðõéö^sŽÇ—ï;O“êéë;íLDp;,Þ¬:X°dŽ’)_©#€æµ³SY—}Y¦œ¤A}Ð7©@ ‹C‘ sŸûã.EÇóˆ}Hí6h™ÌÏ¿ò¶Ç«HÿEjVsëÑý3Ýòç’ƒ³r1 Rw}½Þ¾ìò )ÑìºÿébµóyìaÖÏkübSÜ$½Ù„g®û8:†ñ€'6ÈËãÇ|„ñt×.+((¨Ó…‹o±h#§Q¡#ïäÄMJJ:lCêûùó=e hgä­‚ÝñÎH ¸R6!¡oÇXÊömr#ûnÅü¦‡¹ƒîKù|Ïã Õ†Öö|Ñì$½î ã‚æf@:¨ü2°)™J~ Ós-¨NȲpzMY‹„ÀÙÓ·ëXUc8Ú¼…jå?´é~˜°Ò}'ð¹„ÜPÑ«ÁTÔ-,,̸@“îš¿Ïí¤ö»ÆÆÔECö@ùLNØÞÛ[[‹?ŠÑ=\x’b?+Jö°Nž”RZ^&<.}qͶ5G™½2.®f^\O‰ÖÞôÒý²*/áÛ*õôèY½aÝ2\âíwÔÛîèz÷™jw⪿¥ÉÑ£^`È £ÎǺ9ÕV|e—S#%>•£ í’ðëÜË8V¾¾¾1\ÖÕ¼ÕKÛ+ã@J8J²iZhÊ,¡”Ÿž“WOLLtñÖC‡®¡ÜWçŸ< ÁÆ+yMHØ0U%ØÒ Ÿæ;“JuPH­èåãF$FÞap’B©»+­¦ ѨØx™Š«–Æw´Ú±ÿ­ýÊ,? )®…5-㤔OR²•Ð:aÄ’µ÷žqpnư+·Ép(eîd÷°zº.–¯É!Jg(¡Àú@ÎaŸ.Ó‰~³ìszs`½ öâÁD ão´âL2‚<”²¦Ú œ·€ogCme©Áb-;‹tzEGlVì?È´Ö)5LüRâk´Ù‰Ý!ÌP¾vùR¶ ôÈ„]í@í&~¦%Â]Ó,fb*.ºQ3ÖkY¹íSu\RõÅ¥wÓZ©¬/¶_ýŽ}t½Iyî-–×¹¨éº]}Œ³ûþ6åÖ#ª’ëDî;}ç_Ò^†ê"¹. ©fÝ—”“ÃðÆ Ô« ¸1|0^l´9ß÷›Â ¼” ÷S_ë•°oðÜŽzõ&(jþ$ù£¶Dº,2úÒRù†~}E`‡/ÃìÃ|°Ø:ÿ›‰p\ÕÍÉyX/xTÈàP>ÅTkTœx½Ý¤)µE}P'j÷誘‚Ï,hõWL–:Q‡Röë·ƒ_î|ýT¼ðÊæ®1~±½ãî0ÑDÍ´fpn¯Ü ³MÆv„íÊÂ\òMuµ ·«þœ¬¾eiv)Vv¼*¦m½oŠ‘ý~£/.;sð(Ž«Xí2{AöÊϤ¢é%ŽRRín÷÷‹ŠÔéšãø£Ñ 8P ‚¢q‡N¶<ÚI{uõ‚G;ò7¹î, WhÙ¯Õ—!T35kÃnÓÐÑÝâåžhŠ`ÕûxAY¥ö÷ØîÅóy£{røÙßølŒû®¾®Ðlèdé¾ø\f5ð¸nª…@iöÛ92ºä9¸ö§nO%8:`ŽÎåhÎwNâòóÆ_¶ñ¥v¿D>µqk­Õxä%CÓÂ=îü„ÇÙ=1µ&Öãöo©Ý™Vß*³xXOxd»e‡Ckm/Oß.02{þöÒSʳ˜qiã»FÎ8x”±!O©¡d;2ñ±ŽBñC}qNYqݤÓÌ÷áqÅIjÿTl=U$?:ܪŠb_B½Bt‹…%¤hÄ=úÜåk9–#çÑðî âw^ù‹Cõô¸‰ú6ýƒ1ý¢írg€sú–þæ¬DÝ´±—Àóù¹åïI±+Øq ,®í%Ódë¥uz8©¿ë¹k œIB³¡J‰å¤‘[Ë-ñ­‰¥üÁ4¶™&re~ñ½¯/(E9Ýo§îü¦E@gôÖsÌ[÷NÍœ›jlþ«m¡%2ŸyBQÇì;dÎ3Ÿgyvð„óó‚v}*\¶Þ!†x [^NÈR2ü3ð`¼.‚êSñq@Ù®nUÅ~ýú`umM×óËEâ")Ÿ ˜=@ˆçb†Ì>š qb±DûÛÈ%‰ˆÄƒ}0Þ7xS~²²ŒwëØÅð1ì+\fKɳì²ÊÄõb;û¼7fûÀÖ\º;×# ´SÒ?,( )ÜŠê}ô‚ø¾ÃâÆªt…ξ¢Ë·ÜÓƒ¢™Õ¸Þ´)ÆZ&ìiå*sãU¤0ú bXäÅ Þ&CBBÂþnO•aã šáz]—öB‹qWW>šòåêËP-Ї‚û£W |(õ¥QJ±jaïÙ¦u%å¹êQáõÌÑëEŽÔIïƒõ»Í„“¡Dò˜«-¼|‰O)'t¯sEÜ£3¨«‘ïñdˆÓøÙôeËFs8mé:š#Ûúî—””@ªhÛ:þ#íSLÂö³ÈûMîŹKFÍé7 †®úô7\ojËɨ`–ŸúæâX™ø¾à²’¯LOB;í«´â˜Å”&_8—ÅDÇQËÔÔ`hoHùÞP„SÜ+{]Â9÷{‰à›FGÑp¼¶Þ Koõ—kV K™5v7-bÝSTÄF9<ÜÅ÷ôô¼uë–£ ç}ƒ Ük×Óh±°°ö'9«F¡ZäqËX¯ äFß$bÛ3é£x~âò¼ÃàfiG±ºn[ya6–ÚÍ]@GŸœü€J|‹íÅ€eÕP)Çô|_^ßµ7.¾áFöç/Å9yŽ ïÎw»‘Ž œÅ’¬+÷S—V¸I?N=EùjÿZk´¿¨Ÿ;4¥dmr†ÂsKCxÒÉJâ”»Ï ê*Õ¤v"ç·´{^Jq”ÝD \Js5œO XˆºŠ%•¸zt|ü( ˆøÒÑqŠ íÅ‹¯¨/‰‰‰e¨ç>&@?ÒÈ3\‰¨ÚOæ¹–XcÕ§"µuƒ¦_Eº=HÓTN£Ä^ˆö†Ã'üÖ“%`¤’²ŠE¯…_âr+ï“ý|/±kÐtyFmD@Áé.­PÅ9>¶¬ÜñþÙ-V”Õa´uø#ÿ±Ø¼„ØÆmžxÊâ ϳkŒq íí ·>]X³£ ©iNÎBI/¼öbMòâÕ¢1óü˜1Ô®¡¹£{>­ÃåNñ±@lŽN ž­Sñ©¥ 3UVV†*—’‘“kT8³ò'––â?ÌÕ¯£z¬E":@}Xý)nd¥9ð”èâÞ2í¢gt¼œ<Ù Uä.ãaï›Põä&ps¹‚ã3ós-ËŠ°Ôx÷—С”^ý`•‰@¨†dŠ Ìz Cj†Í‘–<Ž\†çè'[¢§îí¯µ­u©éæš÷±|×Ý"^h°Z¿«Ô~ÕôEƒÕ€Ÿ¦Û“>}2ΗKjWgÏTõ—K][<š«\žJ™­*vXÖæ¯«õ‡xÖ&[ÒÕŽ<ë[û æh9UðàâCob÷H³ìŠp1ÿk’-¤äÀjµ´wnØ$QªfëÈ" ÀZPQyaP ø?~iiìönó škvZ>^\™ˆ´µLåøü{n_¤&.«P5«§ñùŠª µSÏ#pÑïÛyÜ1¤Üã2…„oç¾}ÛžtŠ$þ‰gÏ`&â-C).&ö<>^0TR=!·ÍÓ/p×ù]6çaon`?88'‡é&ê©S§"Ìã9XYC¡˜bbâ+ïOr@°H‰)à®®®â1=¸“7[Þ ¶F™}¦ÃѶ­l—ÇŠìZuµ°¢¢"ƒI}mýæL‡÷ÖˆÇËOî`¨z´Hˆ/KãYM—½ŸÜB·ïnaÄ-‚2ûëÔTâf OuQ˜ÝèDRç@™ˆUÉ®Zj2¶-–¢*£T9aŸmæç…7&]ChG-Î=;ËÉèôºÍ)„FFÐÉEÀŽªK+Ù•»~DNO£`ß¼Ð`0ÕâxÀô,,Ì®Á©ººeyk«j~ÓéDÓwºÈ¤v8YòlÍõ´í9*ÙéH†d¼Ýe ñ¶Ïþ~Fqqäúú‘ëô èxÅF®&o·WŠøUaŸpS0¶aϞ܎TyVÇå¯Î{H­¬·sI˜‰QÚÛZŸJ©êz †Fé ã¥î‡¿26¢§ÐÅËí)¹ ~ îÈ%M`ñÀû>…øÉ:ª};éúˆu=aùö˜Ä­²î,mÿCr..¼‡{KUñÄn/byÞÙL4ÞÎb2àwRm]_àØ¸lvd¾Y&–âQ-ÛËɃ>lnë±§{'~R¡Yð (^–vóÄÆÑ`3Ê l.E»íÍf?ˆˆpè[+ªÝ8)¤b+wä¼ëÈaî”}•ÕùÙ *%œu•=ñ y!?l^iÆN#pn ¸F¢9>„JED@!|Ž3ÉêÅV [ÅRùšô×ü= D¹ÿã:½Ø—gß– â]|°9 Q麶ÈäÉÎ? /^ªÜsœÏ­‡*§RÉÅ<èÏ7wTŠÔ€pÝt^“€ˆ¨È›˜Ú’©¸µð(;Ú+Û$щÐ"¼ñES\}V0´¾.--##“—²ŽHKze{ W[vd ±d"x†/gÇáôöJŸ¾þEiŒu;õØm‹GÈ…‡‰ùø“í3¶ƒGPNBÐÈCÀäe‹¥M.ƒÐÙ§§q bÛn»ë£À~K‰F˜Z»A©‡N›÷29oÌŠ!‹¿ŒRúgΣ=øèƒ¥IàˆÅr¸2û÷ßäš-\f,?X‚¼ÁfŒ æ4¯¨ùµd(ädzµÞ¢§tË3íJ;ݶ¬,:t,ŠŸŸ°B§íý£3N{ En„ªIÀ×ïI‘.ßcä+LŸY\¸žXæ4e´½ÚÄx9;[+qè ¢­ßûªws QÏž×E/φ ßë–á¿z£öÎjxBî5uùZ+o!o!»UéhôÖãuÚíÎà*My³J°1666x<¶ÔW÷™¤„\†æhÎà@NЛ"á™ò ¸­qü. ãÀvA ;…Ê;KTÑúåõdEFâµÆòöÌNmÀ÷&Ü’0²)Žêe çšÌ1et¥†ðG«¦ßV§^ºÝs;y4òÉÍu;ãï¥Jðz ê±û3•tU(?çî¾ÛYzà‹FrXà7…Ó¯Ù9úW}»Íô™5³Ï³czW‡GÇ–±æë^X© Äí¬uÄhÒ]tƒ`ðÅ‹‘'LïÒÌŽX˜ SÓŠ-EE ­A%vý:´ô6üòWI.ÄpyTg§2tö¶;S ˜]R€ š›e œrö¦Ót*r›Y £¨A9›)gæÕïû´|%›òÀÆÛÓ)¼…}R¹bûQ?Ôö¨71Wfx"5¡ýúcè{†¥Š­aýÝõ™¾ÊNCUA–6A+ÐIl!!¡×ÉÉ]ÑçUp9Ì{ïø ÆP~¸;Eœ¾~} CÍ3 Üê .G¼iMac+0Òßà´Ís2¹›q5, =sP6¹¤‰/_¾ ÈŸ~^ –‹K¹ôýŒßòž¿cbòÖáeG­ÿõP î@Jv€¥…R¨g^aÔ=tR™Š“3pç*tö ƒ¥Ãdé›oŸ°ìúk¡{vç²Æ|©Ê÷tGÏAîå+¡'‘L°Óvxõê!7rr9zd?…P“¡4‡X 'š°YVzo9½åL‰… Ï™ºz¬¸´µ_XÁÝôö©N‡a§Ô‚cNv’°¨M¼ás»óeö33³©ŠŠJh=Å­[o®ð¯?sžl¾a·Ð_Õí«p®^òKʉ]ÕSv@£¥5(ªej&‹‹Š:—Ôð_‹žŽNymuµ“ø`Zb6)X`–¿ ÀˆÄ,Ý*vü@Ùn6ü97 ºpç=Æ-¤þÅÛtµlÕ¶8þôÃ6ÕÐe•.`sß¶··§ÕŒÞ}êÉÒNß\ѵ+ /+^œÌ¯*©ª/4ö@6쉓öÔö„äç³±32¶•Ux¹³óóW çìn(Y ¨f÷sq(þùó aÝe–@û˜Š‹{mݼ'ÈÍ­¡«çiÊ­R4‰X§j;=;ÈP”-ò½ª¯‹Z· î‚øGØ'(]·()1ñS[YbûxÐMna)©KÀ‡ JǺ4÷(‘í<0£V\7Ïž={ÿÛa/`íïž#ŠV¡9lõ[ÃM~g\1…OMMúïžjI[ÓƒVᇮ Äì*)*:®6P9M'xž±íìê‚*ó6MqsGÙÍu[lô°:¯‹âOŽvÜ+ñŸCÈíE﹘ûorF”[â&h»Ò½¬¬¦†ƒ‹{Ö1…?ÐϯZ/×1¸knãED„K¶Äׄøøe=wN›…=M.µÆœ#©ÝøxÍ}ïŒÕú´”S˜U(K-0T¤OΣ›z‡û·6šZ)GSàº#¾ªÌˆn^\ýÅ0HäWÝ'ä¯È\¼ooÏ-‡AøŠèh6=Êð•ÿðáC¤ %à"´óg444"b¨èèÐÞ»ŒïŒ-¬]º|YòîÝ7[‘jjïmÌM¹•¿åÉþVòYýªH”Úv¾·³cÝ£í°2ì²d½Ñ¥¶6“ßm“Ÿ`CŸIüòè˜"lìi˜‰ã’22ß>úâ ·^ŒŠ™9w˜ø”†PÒø›Ü_öÔutt*®€è¯SSÏ<`£¦¡YѹÌP¾èµŒBžÍ„t4 X4.ÇåÑò¶iÐÎk~Ç i1º¶i>^¹{ÿ”Ëö¹ÍÞ÷r.º&[Ç«4>Äd””)Òíaƒ¿˜”¿ `}Ñ=™*FÈ9A¼r€¼ {.âP:6 ¹,Uì/XzŒC‹…ÀpÞ¢¢rÙbWÍJ^°4«ÌÒ½ÐÎ\I"—yf¹®¾8TÖÏvhî|«•kìË7Áú:|A£”â¸üÇdnoéèÐ*hߨØH}ûvRVV–ìO<ã‘zó^Oõó­Û¾³Ñ¥¿lwM¦ß8°ÑÍr…*¤aï‡õ=,ìŠ$%_¢L{ûv™(¡vCÀ V.×m&(+M™ý#c0pV¾H3æZ /YÿXf¿|ùÊ{c¶ÂâÊðÁrD&O´–‡>g“DÐMߎ™o`Þ'¡½qhMA¼#@óºm꡵lw ìÓ %w=†å{ÀcÖ;{òÐ6‚ åX€ &›£€Q€ȪfjN Zórßp…rõ'©eë|›œÔ)¬Ö3×qE¨üíµø£æhËʾ”œXùî!æÁ ÿ=ÁR¿çk._æJ/ìo¸WbHŸÌþ©üÙ—¾À¥"¥ H>‰‰d›ó}äJh—ÚÑiüªÎl`æmzúx”Q\Bbâch=I=S5Îiò¥ì˳kF´'ŠAç:ñÅ¡ÅÔÕ‰¦™‘*ÁsçÎAÙ‡Ê:Ê, CÐÒÀT@p¬ŒÕ(R<„€¬ýá²· Õl' t¢2ÐüTiiê ôô™}v¶†™†Úÿ<Ô2sø«ÇÑ–GûÜ´©,xùå‹¢ýÒ°[Ãz^ …V¦*tíîÆ\®:Tq ßY²$¼Ó©d¤}¢Í<ãøçÌýl@®gd¬XÇN\CB+k¯aÆÆo¶Vê ò8\‹¿Éeõp¸Â¥èÍA E‘Ø^´ô±ò]¬QKt”§7¥:¨¯Ýå¹ù½(S“…qÁØ÷uh/Ì_ZNÎpæKr%†È…öV\1ØèKØÙ±£@¹4tÝ6®Bz%%Å ‹Á'LÕ ukÉÓì\×Îv¥7¿¸Êß¾}³Zþ*”"ÛØž$¡ RðÁfJßBŽ06êÒuümjܱ ­¢Öž„í|GÀ¨\VJXŒJŒ-À]ÈH¦ËÆ{ô ,/ÎNú^2-ÿþű֨£ö{üá PÞ5Bwî¼§˜Ò aaeí+´ XYYAù~´ xAÛ ÊMAq@]`ð8ÌñÒÒB Sœ³—*ÝxÕ…UºÎ7Åpƒ©i6ÑUM ÁöºBÜ:`YÕÒæ¾ÉªëýMiu¿Ì¦¤¤„ok9?\]é¶WhœÿtŒ¢ ÷ÚuÅ⚇;1gÜòj  ñUùš Âh¤O°Ùôkc7ÂG ÿ‹ä ë(GMˆx5uõ»ÂÂÂõ¶É¸_sƒç#Ýr;6e6¶ü>»AÕ í1ªœaô€“ƒ0Ö°ú–WÚ°ÞCg]ïIœ7n |¬¯ÏsÛÛ”Ná®xöGjêâ¥KzsݙйDÐç<#yRX u·` ØlàPjˆõÂa?§ªÌù”òf8îÝ»Â(F©ü¼Zä`Ÿ2 nÚ!Þ‡>³åU¡ëÂhžº)jÄvx¤QÚ&zïEø²²vzd>¡~n`G<õ âë<'¥;ÅóGGC5=°ïµ¡ú£nA‚dËpŸþâ` ±ÀMÿZh}óSK˹'W¬¿¾?eþî²~>Qu¼Kå¡Ð²>0Éc6%éééi`ù—´âx§>?(ê—³,ü»·ÚsK4b,¿ä-ϤäMÕ›,Jú… E~âéB**Ê~-Óëvoó½Ì¸b ùùù ú ÚÏÉ% rììì21\ϡ᫷U™`Õg— æ€ã¬ÚA7j1ñ¾æô^sáõd~XyõN¹äGíL*êÆª™Ç×?oÓ@úASUÞ©ç9Òç#<èRÌ=™5œw‡‰Äv[¦É&ôM$F™ÊhÃõNZrVsƒ¢ôêg&÷œë’"Éäa'wè¹ ’‚r",-¯—)ˆJ †Š#@I³Œ?¿Ú4{Š9‚Ôº¹çB±§s»aû|Mpí%ÞÒ\N){‘H­Î”ðuÒ$±ïuuÞ&B¨½Ð—‡*63&yãêô˜ì|À0÷YÛ¡IÎúݽ³b&Ö*lB«Rzzdñ®«gfföï·'”—ÇDèºG…ÝVƒŽBRÊD¾ÿðÕíf®1:CY´v[<éÂäݬ™íS;üwõu!+þÆJêt‹¤Zhn‹ñšÒô™}«»þ_Ûlÿê÷H&à/³ û ¨ôÎ~Þ­ßP!™÷)ý Æ#"sÃŽkŒL33¼%š³Cp´ÞumUãRa÷«%+N¦‚§C!ü›×8w=ªO_”Æ(ÿê‚Ò~c—!>ÀxñÓÇ?ÜF`7ë~^÷øÜåâ•:‚¾bkré†äW¯ÞS-`eÖ#lWB•§´Š·*€¹€V(¯pg"¤*Yó“‡ÎÔÚŸ®É¿u>}”‚‰KqQä»yÏk`K=ÖÍ·+‚õV¼Ê^ÏeU>TbH°%ìß!)· OÔ. v¿4 Oáßè ]¯dÉ&{KÿNÁ¥Îk%]ä9z‡/"µqÛ}zÕ,‹3 Ê(^†¹žìz½\&Ãf<ý Ô%ÑzÀÓǽvíK¶® tÀò±B7}ºGóKvŒ/Ê$s ´Û#>±Åf‹` äïÕ²B¡m÷18™Ö_£]!‡«sYŸY§~™54ú£ê%åÉÖåýù±èĵ\ü˜éê|–Z*¥Â‘Œa÷v3/kõM¥ª:c« ;HrI'guÊë=¨ñ@^=´!ÚU÷h»[÷m—œ@{‚²l:ß^@ëcƒ‡Šu½Y”èz¸¨žƒÚ²:Fžÿ‹QØY1»Œkß+1Ú“/é…ÈàVAzMWk•‰ ‰‡âŽêƒ3;Ãd‡¦íÓn…9(ï0–µ‡æ¢]د*Bq6Ú¶:¯&"±³“W!YƌڂþãÞøø'Q­7ôï`œ%> _öxp¿OÙV®Ð5©)!” :·³‹<£›I—²ûúêÜoïo ¤Š§?ÛñŸ–&*êæz˯_£8aÎöÜø­Í;'Änã}÷غœw”V»)ØY©Ö†-ÈôôµG!=ŸìaUºäÆÙÆÅ‰¹Ï¢Ð!˜ƒþo{V§D_,µZo«ëMùݪ‹¿.Kïâ•p=Ù'¢ƒ’;Ä×êÁÀ|CúìÙûõ™Ž\ÍÌa›_÷˜^Q_"à0'áç}úô,´”UŠUTÄnoo‡ J¸ @¥ |üøñ]iéñ…¢Ä–½ÿm}ºÂ<'Sžè•bùç³Ñ§âÞíì +f\\pGù³ù¢z1µŸ†§?޾¹ÿtíõf@ ˆGæ×¼’r‡#¬a¼’øÎÉ܉·J™Dј²oL’W#=g]/NâQqªŒæ—æÞˆ©ÄÈìšoå¯ñ Nw%/³Ñ¼é\ôX>%þ[æÜê¶ãìE©JèðƒâItøÖ T‘â˜+ââÇn¦Àî4ùæâPS©Ý”“‡Jî,ä?|›˜ÈuÛ³Gò<Źmj@Àá=´öB!ÇfŒ‰¢ëºrnok Zµà[ÿ,åxÒ¯ZéÖ²\ù*ÏbòåÊbÕ‘;¢bCõp%Ø#ÇnN•Èm]rD‰óï³Eô7TªIsçç>þü…Åk|Ë=’…º»_ë&x¬\ÓRŽʶŠÓfó—Æãk£Z„–/P“y%âúÚŸÅà—1 T"R4—*£boiM ÚJj• 2ʨ‰¨7gm§ËûGÇ—Š–ˆwí#ÊÙSœó-Ã{‡O}O'ž"XÞs¯plМs(î¦ÔÎÏ>ØÓVE«o¢Þ7Pæ ~¹%AßL;þÙÅ)L•c·`£³0ͦ–NŒÃ}PóÓ‡-›†>¥€hïGCš¹WsR 'óT†IY'àö‰‹3³÷ðF1tX½UµÝJàÂxÏÝž,›MMÌæˆB¯oø)/}ÉÈÆl¼`ÏÂÂĹTÓ¯222µTÏe•AKÉPÑàq:½áÓ§÷LhàCLZÍ«œœgïßß™âºNOÌ Ø`<J(kàÅ‹[ÍÒ¢z‹_D/¸í²íéð>ŠNýH>€Ý{S{=ó©O©¹µ¤/†_S¼¤$1%¶,"™Þä¦ùyáŠÔ3é›JÚÉš•\ó7í_½”P¹+ﱨÕ] ¤ŸÎÀÍexþP~­8¾ß¦÷Ãga2èõ…ëa¢”œì}GGÞ—ÀXW7Ú¯´K¡¥)ë"ÄmÁ4´ ¶ÖÚú©«×¯³áœBàîyvœ±œzgd‚1‘lp}M˜KÞ?6šî –Í9‰FZU/—ÑÅä*ÔžÄWw‰ËÏðSߦÎ^aÄpYÛ¹ñ¨b²ŠHöñÐä×NN  Æo½×Å7m]ªo +°}O†IEMFø8Z«ké%ÀzÖÛ˰©Ùš€´êêê˜F9ìîn,rȉ>síUFFÀDS„n—b•Í•˜¤5Ë'3;ê„v Ä^¢*™ÉËdòk¯;'Ð ïy/p¦l^æì^ÖùÞʲäÚÝh<%~1º@OKé+‹U l„óç•Cïåkpå8Ð玚˜¾Œ*ùöNWz³U8ÈCãéFL,"Ï&â‘ntúÞØ1/}¼ºž¨oZã}eª*ÞàP~üøQ—¡£C^‘-†Fµ‰‰d§O§éR /©uðèT>ÿÄþÕ ËbfóÎ\¼kœn_¤Å趇Ÿõ–M:s”#Cߨá×ŪCN»ÌD·™=½[Äò…²HͨÈh÷ Ï:è[æÑÚuA÷îi‘-š[wÏËs·!ß­,Û%džÜTFå¹u3¥ßû„ÐëÓCg±°L:Sd£ë^K†Nw¤^A2ð¯¤ÊqðÜåkL6ßî†îH‘ÕÿüJJ#®]f0–+&:ûÄ;˜€>ÉÕ䯄K­[•3»÷ºƒÍ [ ï‡ýrŠJþÅ¥;[Î>š³"©•Bë®tOÝŽ–DÃüq&ZÈ£ÔSböÑX9ÑË\Çy¬–‡øì[[Ë›•­ø‡øŽ¬Ž~wªØåm]¶ôb³ðJJÑ#€:¾A½ô,ê•ÜpÚ¥b[ë„& —¢æD£ø7ÁVsÐë5ËÇÚ„)÷/¢šË5~«§÷ìµ;Š` þâMj¦W}hg3SÉu#ø¦¸y@fO¦½GaÛîóæàËL7¿¢ V õá;H’}F ­lt/±´|D3Q²dö=é™Y>‹˜iüû‡0V—èšçò—‹Í ©JÑŒgfŸ‰¾,X³Ã¯A”Ø–ÝEºs °S™rð;E>&–ŽeÇ¿}Ð÷aïÝA2žÕT€\ù^½m«a„Šf 1£ì¾Ýôn‚Å…2îW:8¾õ•tdmÔ·ó?ÈûŠ¢D×~ð­¨Í¯¢ˆLÍlí÷®¯¤®V4'#BxF{«úA}»»–IЗ—‚^¼[*À¹9ìèxÔ™ŸHxÊå±ÐR­›)Š¥Ï%RéøÒr±Q¨ÃóâéÓ³fR4­¹9 +(ádeyªzw"9¯X×>gGpø?É'¢Z }ð°Fg§´,Uhè†UŒ¨•eòuCj—"’r’G„åÚ8ÅÇ„º[£•d‘OgY¢þµÍ ÷ÇO–&±pgdƒ½0»ª(¼®±ú²ipøWåFZÎw¿T ¶küØR³]"§ïXñ6ÌèŒø kì~i$ºGãû•ûT÷…r¼•Qt† ´žPF*¥ {V¯;w^ªÔ6Ä2œÑÄ.;—À¹7>šé~܇û¡ù-oÁœézÁ^µ5ë8EÅ:ˆ½ïì­ÌãÁr’Ï ñ!kyXAð¡gÛ5v >p0î×»4‚¯¯Yq 0+¨e†‡i¾x!ÈKã\™YCwF{›Ü 9‰-´dd  SͲå¨Óí÷x\Ï3j3CA6–KSØ×¯×W{^†2mOµÆâââ2™vRCGO u> q¡€^°åv bKÔö‚¥‡KÃý®@¨ý->CÕ…ïÜAyûö-Êü@Qð—/Š‹•{‹^®/1P –è F̨dë}®è¯`(·°b½Œ£tÐÛûB»»j‡¯¤ˆ`b³èFÚgPpÐÕrÐQp€7~´A2‹ E¥BcP™Ü'ÍäÇÁ&ùXbŠŸÂð ÖˆøQ–ãö½Gk¼CŸ?Ã÷\†2ûi!(nÝ:û°³S¹.ˆ° @“BzÐÑA›&z(Ië§Ow¡ÈÔ˜ñ}ý¬Rfh³Ê1´º¶ÅçÄ" ÑH)U zRTR*`Y!Ãà5X 6XzwSÎÃ!ÈžfŘ—lÑxtö³¨è]II(:¨ ËŸê‹zŒ<%-Ãq—›ñ3ep±°"fú Ò×ö"#ñ‚ˆøgù»3£×ö22è„EDnol¬¬@JGŽ· d‚à"¨ð8Tu!&½”ylllym :Fh>PXë=ÏiÍÚ)45¥㿖ŵyUÔ[¯Š&y+޲ËÃôxëÙˆü’áoPß¾¿^Çc¯âæÔÔTœk×&ù6××m݉¯]?á}Æ»FHHè”Ëæü&4ˆ ú Ìœ–*¶ŠgR¢¡2?aHN¯²2^¨äÖÁî”ðR§Â¹½ÈRWàp[t*Å`ì†e³Ñž¿ ¶}ž ÈHIÜC©œï‰®¯ç†r àƒuÔEJhAJ¦ç8v'Ý<"2òà»OÍÍG‡h7¹ž‰ù_;õxÙ­1Ü5Àó‚î »ØÄÁÏï .Bg)âââ‘müÐ=%&–Âç°¨öVY8_þèù]™…»P-Õ¼OXz¡ß9éT:W¶T­…(ñ|«”ªÚ‡è<Jã=Ýùgmª õ}S“?©ˆ×³ÐP¨{zlz ³ûZôÈ=MÍÆX‡á‹w„…O_óKÇf[„?0]pÚñUPJyOK{)´A°«ziXzMÚsžŠ;Ð: NÕ…--‹G6n v'䙬³âº‰¡†JJFÖCTÃô™üÍ 5ç@Ã6S<à8ãs³V¢¢YšRR— "ÑyFµz FmqPšTÁ_(-7bð´_··PtƒËêAl³ðH¨¨¦BÖ>|øàèâ ío´Å-˜Ï¥ÙÌug6´´d®Y3:EÌiuÌ)èf÷|Nyäwäu‚ñŸ³eÝïî§N{Фr D¬*¢VPyß¦Ãæ…t8&AÓ;xSÌ”žžqÔÐÐÈu¡`ÍWT­©©)½(׬Ôã„ ÞòŸ((fÃf<5o+YÞÜìHù g,Ó¼€}¦v½ûYÆj|Ýn«yS’}y“¡U”ç<²Ö‘*?UУƒ$²ì{ç ˜otnNh¯ÛOLñÎÏCüùó=—öÉÖXé½Í“®´«Ò v…š™2ÑÀ ®8TrÕ0¯»55Þ]JTô,¯ýüëÖ¦·ˆôÖ—“#ïà—ù]6?©œž†¶DP(åb>éóOÞL*.Æ møÄÓl¾§iôŠlÆáÛ§çšCºõMÌÑ-¢~ö ˆ¶ÓìÛTjzúÌÎ:DÑZ›Çaè\v‘   óæ|ÃîÆœÙ†¦ö~ö1AL_ë Ç.5mÂjö·óæÜfÞDjô½¹"Ì&¯ó2ï×›ÈP |èϹ#úMãæ+ å"b¶¶¶RŸµŽCáòŒä1ˆšuvÕꂉuß@Éà{t=Zn°B%Ù Sy@j¡Ã\2q|}}ˆÑjÏש©yÈ)¹BË‘V5]·Zà¿-°æƒèwÿþ |ŠŽ!kÝÎú]-{‹ ÝÀ†Ô<'—¸+%5¶ROŒú`ùë‡ Ýª¸ÕU”îl]y(·¿z®®¡!% •\ Ë;Õ-Ýž›­£1ÆððºÍ…hX×ã€*v{C·Ô–9Ù ;Üß²œBê÷õë×é»ß¡< ‚)6;¦&X…¯ì8CÓE#!í´YsáMᆆظ¸Êúe@¡U×Ô0GɸîLݺu‹KŸ íIuµðé3gr53œ´m\+-NL„¢=êåËÆÞ\}(' p±ÃÃÅÍÍÍ3'ËÕõôÈn«fXéTåXXL^¹rÅhõ[C?>11±””ÔòÖV½a^{‚*tšg¤Ò ª•í0híͺ¢ª]å?•ÕrгiW>x ë0dUgjía¡§D%v}E#™¡2£™/ÉÐ.+3DxB‡ÁG5£Å‰ñ*Çj²âñ[<-¡PY(h XùRÛ™±±O÷§R˜ dñºÁÇ×ô!ª2O•ËR§…æ}ãã‰kkkшø"ÁèK–ܸ=z„eiwrÕQU½–v»¹²b-ÐÄpŸÂ©„;›2A³cZÙâæŽQu`oØ)tÿþÍÅÅE¾å÷g 9$°,ÞÍ©Öo“_ê®Æ#Øy Júæ õ”uƒ6—óºq2‡àá6y…óFšmPPAiW3O°ìóBî«À,T/|6¸6B×½/Ç·dfŠkÇÎ7½Ë„ZºF§n%©gZëwõEXØèÔª²9’Ç}ßQ`ožUÇi",=Ž‘Ž.Ðó&*†÷“ÇOoÎ÷ß7q€}ÉÈšÌXØO•‹ëRÓó E –åÙC¿ÁòÔaØ ªW¹»>#âAÓc:ë¼¥«üw.×íœ5.rò'999Rdää±vÄmÒÒÒév*\' ñ%ŽØëaOoo}<¯ÊÙ¹>£x»àR…—ü.…k{¬F­ŸZ¸.®$ؼ£Z©áägWseYNg$9ÆÆî.˜ÐºyÁ–GgP·G½ûJT&&&Ðö´ÆƒÕk`bbbttôœ ‡(¸W¯j¯@õme^²ù67Ël.@1ŠùÆ as¦­ý­GŸÈƒ—ë,­V¿IÊÅñIJ6´ëìte»‹99q{ì4éB ÝÔP|†˜^z¤«·½<Ê·ó-Š8­ñ¾Âj=& ðí‚(&Øi(Ý]4‡ÅØ·†P(B1X|>Xådý K™UAt6†Ç·ÖÌ LNÏ C3 @žz{sÎá󪦇A'x@Oî)+ÌÕ@åu‰=ö™¡´Í–U\\‘P|¡Û®-T§ >>Ý‘¥]òü¹P™ýBo¥›K¨n¬q^é¥)¤í”ŸëÐôþ܃ÒÁžg\jÞTdc,@â±hCì%%%͇ˣ€AÀ!$lyA£„Çbà“×tlëZ›`pƒ´J%÷Ä¡’Ë1ëÉ’ž=Ým{˜lp©ã\fSt ÿEõ=|øPzW»!æzz–¡žìše¾¯/UHX˜XbÈqg"âvÎMND « &æW>]¥*X×ÊTâåÎÌ7œÄ¶t;V&GÌ9XM¾ÜêÎÐЇràmosíõ/ØCay·³Ë…Ð133Cqn»_­¸²¨»ûﵜ€#“×ÝÐÊÒF+šj¶Î‚ëÑÙá‚åÉŽndo… '°¨ß:$•×ušÉƒùÃðš£X½^†b›À N«mÖé)ÁrL¿E®5ÎX¹ hŸÏ'[¼æèhVs ëùî]J©…ý6Iobw(©zF²dé5÷xœcBièN`ÔÛ@èŠÝœª°°ð ÿ†Ëy¯=ŒÐq†êûU_l=ãûq²±¥æU[gPþ ¢ºS|#0J”´4·û>WS£QWšJ†Ä  gÞw(´”ilü&OÜ¨Î†ÆÆêQ+L\ÜP|˜µ·á J†y½fåDÖ—)°ÅDݶF<ªêœ?žA۵ó‘=.qHß<ÝžT2—UvŸ0èXeút2Cpû9%)P Ð4 ‘P.]¾ õh÷ØØ–±Zÿl€뫎,¯K¸Lܴ窨zJ¬t™;DóŽãÒ±ø¹¯ÐòëË ¤¦¼Ý[lMé‹S§N–º+ÈɵRL=~òä@¦ÓV/¯c*)'—eë^ýô¢L$Ó'>ãÏ$çÑñ¿ñUZí•Öå‡ißys½Hp nùéý~§ž›¿´ùœZšl ¡ö „÷½ƒ·"øÄpY?þöí›x¬ ÚÅ‹o7¡r LØÖW½ []-)§Òõ²Ê8ñâ¯uñ™¢Oozw£ÄüBÌOWYDñcíæº™¤[åãb÷÷]§VÂéµ |ÎÜV_Q È;(àM¯8ìvOQ±:C#Ëm— LJNNn~ÉîϬ_‡ò @3ŠIiY¾r^LL €#8-•úÃð HA(Ñ~Øm5E…˜}<ñ°Ûã¦/uñËZ„tv¹m6qCóR#C÷ühxÍjx?džk»]\˜XšÅÍ’xÖÚî™tüÀV5oÒGø"dڡΕڕ}+¯ª<<¤2ÀûP±5ÜÊï½è݃"av粡¤ PÎ(  üý9Ý#=jZ Æþp¨´÷åNk‘¼ ÖÖÖ¶ ýuÜþþþ·kçq –Ür)ÙI^éß꿸I/øh#†p$œ(ß-µg<á鿥WðëÄhœ]u¸X&Æ€¤ŽŽŽL¶Ó÷Ô¼ÉljÇÆÇµ ŸÌš„>- YK /C§¢´Ûr¶À¼/ˆ馿qqrŽŽ\”¡¾m‚G1OŸžj¬a¢¦£»ÅÄ„™ÞåÑCQ?5 .!©ª©kÉÀÅj*ü ê=¼óÀ²~¬«ë6mõ§ ¤|§W{ijãò@·áa?ÏQÊë×¥ÁC“_׋(ÎJìŒMLé̹÷ ¡ª·ØóÉ"º8¸7áXFyM&äï´HêÿÊ–”ƪ”~w“pppjö  T[wàŸó­|Ä1ï{w |?(–ÜÓÓÓviø Ä€ÏSËëë«Ûåß½þØ5¼(÷¾¯Éµì-º*W#r^ôr•®Ñ šÓÜ2Ó"íFrŒéN¿G¿RÙáôðÌŠõeOdÜ›4éÛkÞŠ«/g€ytß!L_8ìFéÁÿü°ÝïŽg£;f•’£Ã=œ§VVVÂBL°}•‘úùJ/º mx𥱱Q½ÒuG¥åúµkuÄn¢Êʸ(`7ݹ·<êK_®IM%û!éö‹3Ÿ+^þÔ§…ÆÁ4ˆ>?aÆy†3ØÌávë|[ëêQüQYÙEsÓ I¹á|ŸådÕá1å¥{¿¬FdYHA$\[ïǹ~½¾æŠ`3Ž<ß#ÀÈйvƪ}˪ƒÂ<í_6% [c.ÞQPÀ:uJ­P‘Ž™ù¹d(%µ , MhYÕ.])´cŸêjÕÕ2ªd¤0s!оüI–q‡†yæ=,»x‘Z°êñ—G©òÃcä=甘1œkRrš4Üð®Ô1—øWœå1² -Ó³*w<ÈŒ±FEü/X–ïGoš‘þ²€ Ø|µçâõMMþ E@»B n!ÍÐÞÞ|“¯p Ыç<€S% £}r=Q·Ê}¾¿`Îo2šÇŽV)ER¥``Ð^çd[¼.|Øt*;è‘P:òù|dXísùËÔüJAeZfQ$6²y濎*¹É¾÷2`txÀoT¯¨Ôe^ïÜŠaÜS“Ý/`TÉ™g?ý(^ïjúåƒ~§ÑžVœªÂ¸®ÍsL+·Ò<šJKÏýÊÆ†õV÷e1b=¿ýï|ºZ¶áôgàQ$÷á ZÑZs?ÉN³t&q'ÕAÁC(kÆNuT?!8êÍê¯ Ç&@íþÆœ9eÞkqõ6 }-‡ëc¾b¸«zÁ?’®<4ôªÆ°dÝ÷ó°¿÷pYBÿ!àã 7§ò9¨îü+fsžÑSeé¿°é]B­$h{ åNÖŒËæÓ¬É+íúŸúu|`ÊæG’ô zJ:íáñj¨q%‰[Ù Ráð» Å4ð-ÝqhdÄK§¦,qrÅ‹£ä qyÝ®ž÷óAªþV‚wÖÄ&UiäUÓpÒ/ úÜ'‚!úò*ƪŒÄtÑ+ÖI×ÛÞÃMFGý¸SêVkL9jñ*ó¬äz2jìÙºZòDÎK»éèò¡¼CÄæn]ßwÕŽ;d©¾4o®¿®OZ˜^1æµ¹£ÔÃã™w †ý^rúU~7‰–ŸLª‰ë:Æ;Ÿ»¬Ý¥e¾¼‡eääu6M™NW—Ÿ²ªz•õª¬ˆèÙ¯LÇ!›’óÛg]¬Æ?ÙFöÅð×ÞThzÞb”Á»¼ªv¼õóý•–bèó©àãÃÏÑû+âß½ÆøFÈ6NøFâѯ4P–m·d) ?"z:„ýõ¼9V‡ Ðܘvfh—uwÁØ´ ¸ká.د¸Ë m£t–A‡¯i)å 0¤ˆ#ñ*æAûi¤†hÞ5£Vv˜d?¿¾Lg(üLhY($Ä÷7×(R@³ôÓëµÐ>?½î†^ÿ#@­ÖWŠ^’br¢Y£üßëÿ÷/s=#+cK[Kz˜• ƒ±­…9#f¯kÌ`…0ú/jƒ ¼8ØØ ¿ÌœìLÇŸ™O>3¼gAafá`aefç`afFabfeegE!ù_EÈïcùåïÿ’—ï=9 ôKø—À[tÉ»¢Šàï)ð?Ú…Óà_º™;Ð54GåxjaHèÊ Â ™gPó^DN õøJCB3w@2«¬:UgyÖ[ÑüóÈÿi‘ÿÍòÿã s¤­.—þñ—ÿÏ䟙ˆ=ëOòÏ䟕“ýÿäÿ¿ãÅG**/¢¬qOŒše’{*Â2’"$dôŒŒj¬"ŒŒ¢Ê¢$êw•eeH˜˜H”m`¤‰­‰%fÎÈ(&GFBflkkÅÃÈèààÀàÀÊ`icĨ¬Èè=‹ºùû[zÛŸîd0°5 ¸ÄwÜ £…9Éÿaæææ>¹ûøZ8Ìü±€ÛÂH kéáÖv&öüd"–[8–^ÙÉ NF¢ò‰ŸÌîh{r3¯¾1Ì ·åWQ§ç"cü£‡¨Ó«Ñ‹XZXÁlMôÌ~ޤ?÷¯÷ `p~2#8n³µ´ùé:QKG'ð= 3Óñ¶&¶æp_ŋ三>x† Œ|o³q"¡þõ¡{’<$¿~ñ9dÐ'71‡“( á6p„>œñ¤…K|æ&3c¸!7LÉ D’‘ØÀÍùɶNæp¤1nKFb (ô0ÐP‘ú6&V¶?ÿb ³‡|KF‚´Ñç'3µ¶ƒÛ81˜"ÉøO~ùk78!p}h‘¿¿û§þ¤ak‡ÿ—vÙŽ4q†ÿ'ºü½30[Øþî¿u§À%’[Ô–úv€hl—;Q› Ll¡AÀ3Òð_ã`‚0°t a0·„PŸŒð.ÜÄÈØüþǤ58aÉ¿FZˆ¶Œß…LÏÒÀ ü10±'11YZ‘ÒÓ“X’ ,mÁÃ,,íá$¶Æ&Hp‰‰- x«on‰„è9‘|oš”„žþçç@ì C„äÙ‰>ÜÜiÓ7Añ“1‘¶‚|ÿ ÈÃg{ÒðƆäx@Wœ‡„ÃÊ‘÷˜†|¶ÇMXÙXš¦ƒ™›!È~\þýôæpCp;Üâä.’_ºöý>H¾Éþ¶ÈBO¢$gæ`âåcAüævzp2vn0Mà瓆AËÇg´5€Çhksòç;íé½9¾ð˜úp„ 4Cp+˜í q¡$NÒ í«‰Ž/úi €Im,˜¥ÍaH䉾8¡ ŸùOßB*çûà's>Øw¾Œwd8ÑËÇ…™ Npfÿ>L>FøÜøGϰ×!ó E¸94‚_ƒü+Ï!?B÷ýæY¢@€O¤dkc§okgó=íÇ õíl€^ƒþåé†@ßþ¶—þãGñ1Ú™ŸLè™ý-ÉY~Cr–¿Ió?îÉÉeÀ]…VFæ–z0óß>Eâ仿2¢“?ÇüÂo%ib§ãüeŒv&ô6?É_ýŠì÷¢‡4çšüþ{úïVù+m~¾é„Ðÿ¥áã¿LÂo$í÷ƒ´27±ÕƒÙü¢(è-,éípz$ÜH/Âç%#ùÞê ŽÞ†0ø1 Ÿ õ§ŠÿÕ¾¡âØ^RÓ¸@@f¯ FOMõGhœŠŽŠŠ†×í·ÊÿÇÀÀƒÐŒìû×ß»~¢>~%ÿªÙYXÍ]üƒ[Èp$+úã+à€ôP‘ü,O0Hë±°ñþt“ÜЧ·€CjÜ$ Ó·±ü'×BÃýõJñïƒ?¹øw³õ›Þ›‘ßëûw‚— Gþ?Ÿ<ö†þ¡~eºß´&RÏÜRß p™¾¥\€Ü¡ong'¡´¶³´å·š1Ÿ|âc<¾†OÏæØÀþîspìǃáæd?õ7óm¬‹´´³Ñ‡—Û?„†ÆÑ(þÅö¬,mléÍ-þ´Íþv‘¶&–€*ñZ`aÿòÅ6À¶ÿÅ‹ÿ£Ñž¶3ÿszŸ\öOG~ÂTÿ„_~ú ã_dQò{ àVÀÄVu"1²Y“ZÚü–¥y~0ïoõÇ®¾‚à3±0:¨¿Ó$ººq u>2=KЛc4 Ì Hè¯8G—åw·’‘ÀÌÛ ù[¾ûGÿám~ú.€TP‡$Hc¤7m€>¹ ÈÌúODäd®H޵À/?þ˜2Jr6vÞ1ùÑkà·áqsÒ13±Ð±°qÑ1³œ8zÿ¼u¶ÿ@`þ¼ÐÅ÷ÍO:‰Î?ô……“•Ž›Žô‰•ãOúÂýOÙ÷Ï{òƒ…ÿ¡œL¬Çäàâàþ änîÑãotä'’üó>1³Ñ1s±Ñq±sѱ°°÷‰ðÚ¯vöDä¾û'œbU àúæÇêx?Y .€L‡Aßò=€òà³1ËkŒl,í¬~'ß§ÿ÷æ’ÿKÿ`YŽý žÿ©aÐ#[¸Ï÷–ùR|)ühÜÀg4†\2ûï}/äq ?|ŒãçÿÃC{Ÿž¥­­¥ÅqÿÿAã“''LnÈÌÆfÈ¢Ï7ä0àdýOÍå¯CèC´‚”Ë_i êüw´ùŸâ=]a%Q]%yE1>F½?ß¿M€A.`ÌLÌ\,\p68‹>ÌP™‰‹¦Ï¢7`ã4äb2ø¯$ö_hë_'¶È]1i]E1%eˆÚÔ'úžæäq?ÿ \[~’—ð’˜‚Çø„‰†Ät-|ÜŸ?´¿KÈ;©ý­“t<?yJ.¶L†087‹>‹'Œ‰IÎÄeÀ74`fâääÒƒýç8 LÑ•úý#ß–ü/ôÚÈJ÷øÜáØa¤þ ŽÔ‡ëqÀ™Xô¸YY¸X8õ¸ õ¹ YX¹Ø8X¹¸9™a@«ùIhi¡ÐüSJÀ‘ú—ÒÐ=Çtø'”„.8¡£€€`¶p$ à ¸Éá@`3!’ã- }’c˜Lò{ 0üê¶ÿ…ÊZÚÀŽÍæ±_ô§rúwÙô_Q®pv..&6v}¸+;+Ühœ™ÝPŸƒöï)Þë"òÿ^$þŠDü=Bÿ‰³ Z:C’ØÃIø¾Ä˜Á˜KÃã¯O˜ùgÖýóý}Öý»ìô¯°.§¾ž;ḩ>œ] ¦§gfc-ëqqü{²îŸ÷úëÚ!þm˜÷ï‘úï0¯(ü¯0ïÉê•ùqŸßþ–“ÿ¼{Ÿ“ÿ.wý+œÌÎÆÆÁÌ çfãàbbbgãædâ`ÍÆ ÓcådÓÿ÷ää?ïõN6´ÃÿGù§yý»´þWæ•ÎÂÌÍÂÂÅ­oÈÆ¦Ç ×cÑcÒç„ëƒf™ôÙ˜þMçõÏ{ý«qEÂmÿ]&öïû_™Xn=C}³œ•›•…MÎÉÉÍbãÔ3Ðãdaffý÷œØ?ïõ‰…YA‹ïÿ=3KÅ !mI È$ZÈÑûí7`¼vð?Ÿþ¿;%ÿ’¾6„±0ù8XØYàp =8X Ø`\ܹëqèë±ý›êë?íõéGZÚüÛˆõߥõ¿2¯ú,Ü@oèqr°Â9ØôŠ5Ðç€qppp˜þ=çõÏ{ýc^1Õ¿ËÄþ]bÿ+ ºÌÆmÈÎ ãÖgáb‚8$À2°ês³ÀþMõõŸ÷ú€e‚0ÐÕsÒ…´ç—Ö†–&ißþQƒÿùìÿÝùWfßÎÍ 8K__ŸÕÎÂÎeÀ¤ÏͤÇͮχqÁXþ=gÿÏ{ýcöà¶ÿí3ÿÿgþïÎÆ¿$÷œÜl,̆,08'@úlܬ€ë8 ™áÌ06}½Ó%‚?ïõÏ3Œþ§§þ/‚´¿;ÿÒò+À„úzúìœ06໳ÂYÙØá¬¬5°²s²rÂÿM—‡þ´×¿€´“¹ÿ‹Sÿw§ã_™z66V&=Cðd8Ð3¬Lܬúz,œ`Øz¬ìÌœÌÿžSÿç½þyêÿ þ_Ó÷w2þ¥}.C6NfÐxÇ,¡¾‡!@œ†ÿ¦úþÏ{ýcâ­,­ì Èðÿ ÏÜÐÒÆöމ¿°$ó7§ãïn8_ú)žÃfbŽ<ÙÅÿñá$„ûŸl*‹_7 …Ÿ„ ›X"Ž÷ÿi€«ù¯C<Þs&ÙÙB¡à'[¡ã÷|Œà-Ÿ€ˆ¥•Ó13‘°011‘(é® ·1±u6AÁ¡ë Á˜CÍýÃs–¶ð“§ÊYB“ýý™ÊГç.À[hY•iihë³ó’8YÚ‘èÃ$6p(TÏÎF! -mH,, L  /ìЩ h]Ýncü±È.!§B"G"Áo'g(ÌIîÙé™›è“ȘèÃH8 Ib}ƒ4>9]Ý%uBé{'HÄcÀ Að’ÀMÀï6$öp$4(–í| è5Ìê· ‰åñЀÎ:‘@þË} ǤºÿÒï ðë8 [?ÜØÒ :‹ ê`bnN¢‡b8 íÌéHÀ•$j’ÊwåU”I„ä4HÔ„…ä”5xÁ•`öÀ¯p{øÉsL,¬ÌMÀcÁ¨l`['¨ó²bŠ"wÁõBÂ’2’ÊPÿÅ%•åÄ””HÄåI„Hî )*KЍÈ)’ÜSQ¼'¯$Æ@¢‡ÿEêO’ úzÌ¿?\Ì-ôÐÜ€Äfí“èÃMìAÿ€ œö7¦ÐÜat<Ü“Kß©yWØŽŽÄð(è±å8¹t$’}:vfp af¨¯N717·´´¡#¶DÚB—Ë ‘0±033Ñ3³21“¨( ‘ü,'A‹ÿDPDxˆ~?!ûITÿ8Šç/¬B±#? úwBößZÙ}úëY‹ß‡¸œ’úq&:—õ뇓“X¿¿ÒŸ¿]gýqîéçÛ¨ÿàËÏ‚´¤t”â¯X™ÿ¼ øIïþý8ÜâûþxC÷»}?Ðõ§4:~ž܉Là(ò×ò³Éú»8ÁTÿ‹ðÝïþèÎ?ÅvšæŸŽäïø¹ßÚûTX·[ KòûïÉ¿…ÌÖ÷o¿êäëïšéw„ù­~cLIƒ<1£÷ ÷p`U¿ÓK¿æ×_úAœ?&óI“߇ûŸ@"ù ýÇ}=!ç÷¾BTƒ¾øa+Žcœ!rþ¬„þÊS¿OÇO=þæ/=÷® !ùnÝþ:‰l<™>Åã÷¿ÎìÇA¸ °šülP Æú夒äOùü6JŸÆÎÁdÀ­gÀÄÆãbÕ30à€qqÂØ Y õô ÙÈ$îéÊKGƒ³Ýo<†FÿQ›0=s[8òwÂÅÅŤǢ‡pqÓÅÍÊj`ÈÌc‡q1r1sœ¬÷þró‰XŒšê ÝØêɹÝ_[ƒsêq0±3éé±éésÂ8ç†3q²°³ê³pr23·öý&t-ÿzKÇç3¿6ÅÍ©Ï cÖ×ãæææ€ëq±2s°°²0AÿSÍÌ}ÜÔ÷»€þ±¦ >ÿ§šƒs03A­†œL†ìÜzìLì,€†p.N&¸> »Þ7giàÆ/ kŸ¿,Û߃;iç÷üö¬ä?‰ÿóý’Ps¹óÿ7Ló‹Â£ùsÓþŸ°ƒ"Ñ¿(P ß?<šÿ³tÿs¶ãOUùŸRý}KzLpVŒ…ES“®ÏÊgçbfçÔçâà‚qÃn :@ý?¤¸ÿLþ?PÞG©þ…mÈ¥úóïÿù‹ÿ…îÖñ6ößíùñbøÿ?\Ýÿ-Ž"ÐãÀ*ÚÑ?ÅïÓpâ÷† Ùè™Ø¯žø!Ç+]ÿà\þŸ³ø}ýNÌïµ²4ÎËÿp·O<¤“M j ˜´¬*§"#CGb‰0w"AÂm¡DCh…æ?é þ£súßdþyHŽÝ¹_ÀðóÚ¤•€œ%‰‘ Z†CçŽ?h‚´žÚ#á0}ãã5m€Û h$ÜÚî8”ýÇñ hÉúä:¸É?:Žÿ OÎÂÊnã„Ã™ØØá†ÌÌl†œúœpV}fhk•ûØSST”Wükæø¿Êþ+¶÷/Dbÿ›Ø^hüÿü™¿¥®¡ä?;»!y, 6p}K (ɇ$RvH8Éá1š ò¯0ù¡<ÿñì °±p˜ÁÿˆÅ8&ßÿ€ÍøÿØ»x¨·ö?•lE$妛)Q ƒ1 "’%„KÉf0vc²O.-¤\[”¬‘²†PÙÒµ”B–¨ˆ”%¥ì …Þó›¡[÷½ýãvÿ7½w~|f93sÎù=ç9ßçyÎyžç€Ñð±=}ùî_góYH™›aÍ$Ä‘(’€³Í°hI ^OÍGûGŒ–Õï¯5…BáŰ(1 ^ ‹Ã[H˜‰IàÅÁ8 ,0X´ÿǦh©MñDÒ_[¦›gìÝüÍÉ9ø6. ‘6ë2J7%ÿ^Sòû7$ÿ–äÇ@%ø/ÛñcK“n<~Éx¤™‰Ÿ7åælþCʇ(]û ¯8ÿS+Î_v_8*mcŸ®#Ðu„¯Ó¾?¿¤O•„.tÅà›)ŸºÑ—%þƒ/IÑ¿G9˜àœCV¬…!8©yɦÈ\˜ËÅTÿ—oŸÖí[ 7Æè««óX]·móµ+¬óè9D{- €žõÁ¤6 Ä…Zø=Úf3U¾§€ ü‡h‹™ÎÓV=g½Ngœ¨B’nÏüW_gYõ£ZZÑÜ«˜!û¬× àgmË™0#Àqø™}ñÞ#3¹žÿL¾ÏIp”ÛëîH4ÇÙÚº Ó‚ÿfÏØ¡žWÊiÒ7{ÄžDt]sµ¢ÅD’Ð÷ìà®8jÀ!‰f"í-gvÖq¶LppÐt €(|·=­1sóI­ çlš‚âqpHøÐîo‹3ç§ Œò‘ ($ü‰Í,†ãiÆ8þ ;µug¸åÇ€}rŸówºùºjsѾ*÷Þ\õ‚Ò­g)`†(D÷ê™§™6Ÿ\Ãô0…ÿ±mª9_ιPf?ä³JŸÿó\DûŒ[UÑìGg8P&fõz¸=Ôõ‡ºŠ™ã-$Ä$‘H”ZƒG‰#%Ðh”9maŽBaðb¯ìÐ6vç‚úÇ1xs 3F›¡ÅͰXqsœF‰67Cµþó ~„J²ý§ƒlç¬jaˆ/gº}sþß ¦;«‚|Xl°§í%Ó׫æ¼ÿþ5NyT²Ó©>¨ÐÿóJÏ\„ÇR\.áAwí¢KeÆ)ÝO-ØO’KÑ…É7qæúÝÅŽ.Vþ$NöË'`,±ˆB_Q›'š}nAmvCºÃ˜ÍðøìŽ u«‹¾´Fw”ú{¹æëöù·,tÍKÇþò±|  ©¤t4œçþâ_>’Ž„3~še·ÅŒ”ÚÞá÷q†Û,ÈŸ‘`³ ¸©©¾Öûb~çM~[×—oRè“©ü,"òI9ày‘™ÏhA…ÎdP¡, Ô;ŽÐkêGÐlÐÏç"âˆ#[mœ½P@}O«’ˆ§:èRÏx×@¹]ˆ×0¨õ^9h;Ãé¶Äê"Ø>spžH2Å[`$fH ”¹+f&FÀ`æ,…Å q’TÚASÄl†¶Ôôû[¢Ü\[ù³q‡Fõ÷RQó•þ±ÿ4ª‘ùÈý‡öÙƒb­ÈdGiÂÕÕUïàæ晨ÉAµcfÚ¢ý€hgù‡ZáÎ$s@…™_9Ú[B'F?”lDPÅ\\+*.ŸíßvÄAÛxÂÌï=CMɱÂè×»~g^œ#‘ʈÙW"Š‰Äš›šíÍm!.øKmˆ -) =‹cPbÔ÷â´÷bbÐq˜¸Z%..)ŽBÁÄÄÑh4ÿ®)F»><'×qmM6ÖµÐädÛ­ºKcˆ€ÁÙƒ’}WÈ.à‰ÑL]eì=ô_|1 Ff÷.…½nѯÚÜ÷k¼{Ï4ˆì3\™*”¤§ôÓ®O»ãç&l¹ã©vŸ÷R_Á)ÿŠê©6¥+‘[º"(ËDÎÿ؆î«yû®³U¦äú–¤È»űA﮽¯–ÊŒ$jŽÄÖöxÉIÊÅiÑúøË¦àé™þJr«agzî³’úBÞ,þÈê«`‰½L0˜Õ2ýô}!aaŠYá¹¹¹.÷„n3§¬û%"±ÞJPPÐÚÚz/ñë²ea¡¡ƒ®l0X úué"³_ZÚËçõ‰)šõ—*ÊËmEö®¿N8jó”Öò&Æÿ³[À×ŒŽ‡‡ë)bŒ®)Ö ·^§xæô7°¦€Ï[§a°Œš¶¶âð ,±áüMÞ¬f[oï÷)º¥±XÐ\~zúÉÖé'¿~ZæwÂx+¸ÿ7ËÖÁämŒ³~VØÆ—]TT4Äèãããäää=9të8׿U«V¹ôµ(Ù{OONÄ+.á=ò<úŸ×ÄgÍÃÍ¢¼%oÞ|QÖóMcS“6ú0Ó iO9×ÉÓÁU·‚øjceݾ}»½=®Â,ä‘C[Ê®EüÆßŸ™¤nbb"/£ëvØEÈ•7̲/hÅir”ƒ’‘‘‘’–_àþ–µ±{¢Ð5••ªJJ„¡ŽŠÌÅ™;î]Ôbee6 CSÖðÛk&ÆóèŠ]§#VÆåÕø»òóàèèuò‰õ“SS/¯¹ u8”L)_YÎÂ)ë‰Và8~ü¸÷û©±Î[A®}-(\)ƒ/\3N.&$$Û¡]ÎîÒßêþ¬:28˜cÛ¶´ªÓˆ°w—‹–rtiÊ0Æ\VعÓ7%EH#ˆoÇôS?>f_¬÷tÑøyÀæV=u˘`ò¦¦¦vvvÊ¡*BIEEEYYÔ¤`¯ººº®®s}‚Ò¨±‡§ç2#e%¥^Ë»ÑBÄëÆä;wÔHU12®^J^.t­ù#Íœ%-òŠŠ‡_ÙzM´µƒOŸ^Cm|½4y‹Ç 5ë`°pð«JÞ‚‚‚ŠŠ +këPcÌuÛ‰¡N•á+¬ ’k÷Ô¥'''O¯g)i†‹ŠÞmooøÐmàqq[ÁÁ´ŒŒnG,èƒ sBV–¶†'`³¾õ€ “OYð¸ò΄{/RSSóóó»"û3s"¦È¤DccJr2ó›à¨¨mVÍn€)ÖONôÄmÓ§ÐEÄP°‹íà“ßðÈ¡ÝKAc'¯âá9™ï9fÏ ]QÅžcϺººzz˜˜˜8ä»<~õêxìkαl½æÄÖçX}FüÝ›¾ªèj»êOÐÓÓSd÷šöYÂ$¨›žž=ç·‚oz¼3¨Ë¤|³ÞHì~ÀøW˜—-‚%K:u”£lîïÕÓ346ÖŠBÂýÝùøøˆÌ#GªX¸Ç'&šOþ€´¸yò¶¾º{÷X¬ÛíP…}††!"*Aëû::H¯г±"xO…‡wƒ>/….–7æDâî_ý61—¶µ™hè€ñÇŒ°0æ°±ò’‹ë]ƒ­ RN´kÉ%¾~^/ÒZ›¨´|ùòçdiŽæææ4ƒLv– Ì¥wî”ö*m×¥ ZŒ<«/uØñ2ê,†ù‡”——RE„‡sss/ebZÁ'Ý»‹aÃ%*,l†`Á x8Fúàðàà>0ÙO‹šXÔœU²w%“w€ÁÅ‚WÂä·A¯4Z Q&^Vâ #ËåY˜`u¢àFQ62 ÀŸZaŸoaa¡ö$±aÓ¹Wa×WìúÅ÷›ïÒÍZîîùÚo Üjg‚ÆøI_e¨CɾuëV@CçÁ' ¾p·í±‰‰a›µüß3j OL‚}ÔÒr7nÇ{€Q ŽŸŠªXnhÙÓu²äÞÆvvöB—¾Ô´´(9 ¨ænmm¦7™ÝÏùy݆5kN é^```ÈÚ—~Ÿòb\ÿåM‹|1[þÃðp·ºÁƒòò]JJ™8Bbcïše3.ç[™7ÒS‹0)h¬«l+tõë`(¶hÑ"ɵ5íí¦uã' ß d¦§C@¬­­­ªêÞÔ]uz‡ÌÛ£ËÖèèè,^¼XM]Ýû]@ÀÉ« 0'$ r—*ú±õ8bÜÞ½{L¹´ôt¯ÑÞ¦_-éêî^Z#jz½ŒÒÅcä—÷ížÜðIÓÏØÈ¼QB‚ô¢!ÉÈÈèìÙ³'V‹¬”¼îÔy³!IpèëÑÑ5¢ûyxyÕÕóoÜèåå%))©¡¡¶o}˜c©"·ŠùÅ`üB{ߎ¾”qíßÄœ '@€© ‹úiQh¨vî,ÌwŒWÿ½¨†à½º:íA~÷Bººa­¯)ØÇIž¨HI勨ŸVÂÄÅÅõtûv@çñµ„Þy ];ëÎ)òmw މ±³²²Âá8Á¼Îòš~ëú“–º:‰ä÷®®®ÞļSO…Á˜šÆÁý‹Š¶+tö·<Ì>œ^0& ÀJ²Å Œ (/ol÷_ƒ8H%%-Í:Qé <ª,°º¶hŒl±¶‘Ññ^xyðÅÒÒR@</,,¼‘ŸÿY:F3³ýfs³;@Ñßv+ ÀÈÞÕ…—”,àùaÊ;ïBF›‰q¡±"Rô¾Ž7WØ:îpò˜½‘~ÅÅÕæ¥\}½a‚·|BBròx¢D;â˳ P½KGÓP$U¼šÚ!wwŽË—d=¶Ò^ÍmäÚk#ëéúÖ%Oß°ÈÞÆ(Ï1¸í·Ÿ ¯^-}bq oq? îŸal²køÍÓkä‹ ¯îi+Lhlô}‹T<4®­Ñ˜vÿd`“­ øÏË-PS÷îY¼5<üàXP!ÞÄy‡ž©&I›«y–0â‘j¸æ Ïl«¥@Ë{eœÔJIY þ}­E¶¥©í©ªT%Z»4Ýï¿”xÒ¥Êo×ׯ¬ÜËÈh-!±s_ÿ𽋽ÆWïRhËÛk\ÕÿÈ ª¢‚ÔŠåRW/¾p2>Ž6ÀW?´µ?p ògžMÍ·#bLJ;‡X|Ÿ7$-‘rÝa˜Â¸eK%+fI˜áú"Ý:•K;o½hhÐáWYëÐ,AhÅÞ³o“f“‡ÐÎö²t‘¼MšiƉWÐÔ:]Å?U'ü°Ò:ÃááÇNJ¨ÒÝ¿ÿöÏå~G‹½¦'c|}ÓóòŽ5#/o÷EÍá=í,ÊHqñŸtu¹Lî^ètÄ'%5gÜ7­ìQ¯·*ºp53åEr¼öžDJi\oï¯ ëÜ' ïS²²ÄXz?º–¤kùsÄÕÖÖˆTU WWŽŸ ùéLäÄÐÔ»„èè•ì~*GÎYR((YY=uuYYYn E¼>7–:_T„–~Õ=õ.…D’@£)Aë"‘äeFÝõœß$»py§o@€Zà%{÷mëD™º8œß¡©€óIQ{+œòs-k»»Ü ºÛ xÝâ4-ÑÚ6ð0$#A'1Õ(1þçdXjjïøPg‰y ÜJ à’qrz–x¯êêÉ«FüïM«™wæöñIõñ9›@}´Î)È?r´¢šEÃÝkÞOŽDÜê46u"­ýÙüžÁù)ŠŠ,Ñk}?|›zc£ôÕRNggõ˜˜%ÏÉIÁÁG÷Dw 2«Ûßë«V†MOåalÏ`ñþ‡r~­ì27oçZ~3­´”•Ÿÿ ŠÊÈí0¦Þ)‡ðCV`Ç'žÌŒŠ¡2šâ¬v‰‰œ )ÈΖ–:^ò«¦k*?Âô3åÐhoZ@@ ®ÌCJfEVò%`¨¦ü#.ë~¶úT”±Çhjf„þ}™þBW¾ÍZ쯚s5çøQ'¬¥Z9=5f³‚ïB¯e{NØ¥KjÎAÛ’»KK¬æÖ Í‹>q" ;yyì`ΣIM(ÒAÛ˶`À71)² ®Ý Žâç=PÜxý?týTUß?ŠDB@”F.é‘”îîîîT.éîîîîîîîøþÞÿ¾wß÷Œ=ÎÚ{®¹æüÄ>km‘Ý%5h¹À˜¶‡8D…úö'…MÇ2^Ig#ÌÁ!n ÅÙn\î'ôGG_ìMÎEo‹-S——gøÖ‘¯ø{}œýtg¬àÄj=WÑêæfGF–Ø´¾£BuÜpýÿ!’œZH(o`À©®æƒ•Íx6¹k7p?¬—àp“ ë¢Â¤€ïQ—”Fú›XTôž¥F±jw?_’öKéŒÉÑá¼¹X²›Ë±šP4vB…ŠÊ;ø/)¢¶T¡åµç[ØîwôôÙæê¢B´ ®ñÛkV)ê\…áÄÛ½ýLë?qBÜw¥¦ WªÀ}¾ºªz:ÚÿªH1´XOúa0¾8?oï„­Í—áDvrê‹4p&#¬m¯*Ô±¨™ª/ÊšUlƒ°sÿÃÔxÞÿ¨HY,ä³…Úl>¾H9¹ÆÅEŸ`L}2rr˜äêé 'g¶ù’‹ëUÁôJë`}‘HÍRC¯­-ÇHsó• Wo/ƒy](ÂÓõëë£ÆÅÚòµ³MÆ£#¥±heùîZ{j¯Vß_Á‚B]e…fÖ+{»ª¥Gg§Û—ä½bþ}`›–˜Ûc‚Ý]/EÅNÆh<†Ê¡F§Ñ^دΗRtß%ögËã;&ÙÁ„Œ¦_Œgã.ׄŽ4: ÈO·&%µWTÎßèJºpºÆXo'%±³˜_ì,ÉtUkzX9¹Xñnm-oZ—Ï©©[~¾ê G¡Ÿ.¶Çâ\(ñr42žÓOûÅ’ÉìÛĤ%…Š*%±VJÆDF¬üK H PFÁ‘F¢ão,,ÏëÝï×Ü¡yÂú‹/yƸ†@É&±^î7ãº>(p:Ù˜#†hjwÇõõøŽ^:¤w㮬Ĥ¤Ä^]mÉèßN—ëÇŽgC‡`c|Ù9uå0Ãf³ãýþÅ’€ÿËãÝ~§«S»¬(<9)==#Q,z†îÁЧ¦GìL0Ô‹›•çÔI"À¾¨.qêoæ:úÑ%³*AY¹¹ÅÅSùÑq©_[~Ȫ« êæ¿—þùóªTûºXÍu²4ýáb—Gè!õpPz ÆýY™Ížÿ”3›²Dâ¦;»KÌÑ®£AÛ_·û«Á›£Óˆ8O÷•LæVÄâ85f‰é%[D¤ÔŵŽç¶.""e¨¦‚ÚÐÐÖÎÎçU¥y€|* ’|û~KÊ©ø¼W‰ˆëë—}ÆD+âúi0 óFˆoBº›­‰w{BÁ,`|ÉŒ»\Dçùôi~Zàd½·@Ýýv˜KUoèáÏ…úéÆ/oŸîÔRmÑ«ãë‡#IÎd\œf]á›îOÖÛÁ'—Øó™Ûqi@Þ1­®žŽŽšëêd~·²ønoñÝܼYø/KоÅwá‡æåÕÑé'a±¢¶ëDÍÏÄ %²uã:Kbû¿NM-íò*P5>>4µz·XMë|%‰ßtí\¡£B?Èáx¶:”JK+Õ5;Ä¡R“®#,œßC@Ïv/CC[{ogÆÔ)²= H HVGg¶ø¤Nâ®FFÜà°³ƒ ¹ŽŒ,»¿Ø=uí×ÿU‘–Ö§Ý}”Ì|ú»sM$™ÓæéAòÐh@Ç54Ô-áäªJ­q.xbù‡œåz÷õbó3[q y>‡‡í“Õz yÎÏãWvfÔ¾¾=;ï/R×ø¾¦¥½LNJ ÚÞC áÕy_2»ÐÐ@[&FàÃÛä/¯¨(ð0ÝÈUʃÄWÙ'7ž¨jµ3²øï±¿™õÖ‡d6{Þé"ì\¾ØûkiDàstöå>ç•Ó÷*×Ç¥7l9Z<’’¢TÀgª¶¹¿ÂŒ¦j,)™­0\Kávú {»)‰Ü«$h±ÒW ûINÎu®‹LÙÖË”-€ =«Öu}óáÕÓAµªe÷ÀŒ÷L¥*ýyù—­MXT×Åus§F‡¡ µ óÜ © [³Øng¢™´©éýá"[ãæ¦Dþ×|fbâÕú…¿ÈlTTûÕËE®q»+OýÔiÎÓ —nãZ}ŸT«Í°`+*íýêxí`U.õï$"ªèèDUpEÔ‡è$555$Þí¡÷@ 5:å^îñ1}— œÖl‡zgdÒ\ÔÚΑóðÜ…jxùð¯ÚüœH‹Uæùd•ùÚ¤£ãÛp¬µŒ¯,7h³Bºóõ COùâ*”ݲE ?ð«(Ìä_\´ápD‹|·¶¡ „†@"~ÀBŸ<™çä¤éÄJG×'"®Ÿ•ý¹LËž>¢7÷~„æímdãô9ï\È4ä›7Ç ÷-?ç6zßÌ·ÓS._- gC´µƒ¤³·„wZ”Êü­íp€b¥×”µ4a¼~¸Õx Æü˜æ|+ù2<°]·éé£ztt2Žv Ž6t45R¦X !¿í^,÷DüH² 5Cåï^ b˜Ÿbbüòò3 ‰ ¸eÍSFddFˆ8œ6$YÆÓÁnn(Y"蓪ïúú³D` ŠôTkËxE é&-ÿ°²Þf'á.3á¥ðíwºÊµFQ®V›7£Ó´œëe/52ü­ö>qx˜™±ÿÀÏîyšWRâQ°I$Ž““=Ç TVÊ#( CŸöþAÊGóÒjâ âû©QåzÌ,r¤­²"hÓÝúâ\A2ÿ2Y#rs5kkß»­Ö¸—Ÿ9¹ÇÜvqcÙ5ëSXxåà«%• €ÀýþPIH¨)~þŸl>Q…Þåÿ]åÅ¿…@4¹a¡MU?Íô¸UUÐë‰ÂÜhýtÈ8Þÿõ©­}½Ú ~¸Ÿ<žÍ¾¦ø¸†ñ;§ÄPTŠjÍCµ.Ž¿ŠÕL-d–Ƴc“’|¼á÷moNLXXV‡¹Ó)Vy^Gä·´ÜL`!ˆ¢ÂžÎ•ÎWãïÙŸu¹¹Y¼âp_k¥¤Þ3šÔ<œhÞ­j¬(ÜÖ¦g½=ÈötaÈo#¾Ü'Óý1R˜À""zšûÍ ÖÇÁoŠÒí¬vn?~Èø œ‘ËÚÛãŽÝ½Iýu².ú€X—ßb –ímÌ9•lùí^±Oh77Œ\ŽŸOëÎ&piׇ´ŒrËeºþ™™8“~¨!Ý×§,®ç[ûåús&—§§³ffÜhhsÝÁßê.!BÂùX¾ î@=êN’)ƒ”à³J¬ïí1+ $ÊÇ~••&ppØàCCh1-hÀl¿ñ‚xÀÔ¯­„AÇR‹ÇP‰G]ˆçŒ½ ÿœˆ^foÔzEE¦Ð‡Ò¶ísíçÏV=kù‚/\úC"°ãHœÉÍz¢;µÖââI L@Gå­WxÿýkÂTg}žÔòüm¬X‰–ŽËlÙ€ý©žÉ,APóZÏ”òþéQæÁQWÐß:Ö`/¯àüüÍ¿7¨9þP/ö‹Ë7wMSø© ¸~˜õ]8‡‰)>@D’™ŽÙýéZã)•Àá$–sh®fXÕº•²ê®‡Shff"ƒ¬ÆF–IE¥aðk€C€ÃOŒ£Þû8|ÐÍaµqiéñÁá “ÀáÄ "N×ÄaÈÉÈH˜ˆˆÐñc2ôÍ´¶º´A•Ë5™ B ßà„˜‘àL™èÎ ÞW1fUE5:_¦¤ÀÁ-r='Œe‹#æ¡ø±ýßYf%!á¦h¼ÝHËËݷ…-Àêgå×ÖfÒé?Ýœ£?‘ý? 2ì’­oˆ !–DÊî[L4Íp•á$Ý"%Û¤^ŠçÛmX œ~¬>Šv‡p)4?%»× $ܾ™TÌ9½2}ª0„¶±•ON*ÎÈ ÙkíWz¸œ†§Šnv(|¸Mç¥¡Ñ³ŽŒ”]nz$bgçd½+ ¼ðýÈ€°ÿœMdEdõÇFÅL"¾dI¥,è+À X\nË}y×U¦Eqq1Ögó?y´£)áë§–æçãö(d„„µÅâí$d+­}å÷EÎ$ÕÔP,¶{Bë9œlTË»†Z[UD¢<(( ñ»8]b¦rÃ=‚‚rÓµŸGÓ´Ð9€›¥îÁ qº zqŒu±Šâ¨&¦c…ÊÅÓ°›5ÍÏœŽÀ-Êt‡~øÿQý½¤‰¬—¿'nÏ…*o§8:ê>=Uÿü™tq\ܨÙÞñ•§Ãäá¡låK`ÍÌ̵ÿzWlJÔˆÁ¶Dw}©£Üñ¢2Ö;Ò?;2²“¦ —³ÄTTžŒæv{s•“~ßÚïsve‹ã–ÙæÃM*vðijzÅÏ· z¾ýyw/¯bιÌýùq®Ýg\Àlé`"ÎÇÌaaÌ×—·,JZîHÃt±{´´9RÝåó;ÈHSÊ_O½+GÀ‚®ñÉ ÉaR'W¦jrr4>íá‘‘SÓò„pŒÚÚ¶àPUýä³PÔ๹n}7ž½‡Í–%3²ÇŒ¼þÿ­°£á¦€ëàÐæ·PS›-‡s¾ž2äYnN¾Û/ÖÜÝ0w;››ã»˜f:;KÈdÞ¤÷}-‰Ë}ºPY€îs4wT”“-* OˆEïÝK!.6ä~ÏÈE¸¹ü<=i™‘™icSs=ÀH+5=-Ï×:efÉܰ²²Óüäÿ…± º¹¹¾H”_ÿ7µ#x+åèäÓ½z}Ì•ÄQ?2Q!;m±~zMÕi¶ˆ¡¦¨Xm±j`nnJ¥p½(% f (`¿8œHÄc4¶v ‚Nä…~..+£¢+ÿþßÔØ8%$ÜdYn$^`Þ{ò§{rî®&ÛØ§ô Q)–mˆ¸¸LåÉV qsIƒ†í%m™QXŸÈ½=;û¢ý`;9YPkÒÙ©›ÈÉá>‚×(Çé$ ¿?SzÅì@‰KmPý=Ri£ ¸";ûQ_dtl,neE]0îòðè¨Ë‰M]@¿0„*÷«'VÖÂÒÒpÈÈeÍ ³Ë":tLÓrÒû"¶ HÑÔÍ wiMM{O8ÞÞ6yë‚a@Íg»ÚÔÕZð6†Ufh—2Ã}~r=Vë;¥/¢%ú?kÖ¹‚¾hNܽÊ»ŠõlãÍ›7•—ûØ……¢J\<ã¡• ™ÂÔKÍÔcSGœf »¹Qw†’‰p 4XB¶67|áʉ ˆŽŽ„9¥ªÿq&-eA"¼h‡žµûãåÐlŸ)¾\µý…ž‚/rhè••m4•#Ðq)¬ÁP+är v”T )ä•€š=šùتÑ"¬0ÿ†‚b©žÍùÿ ¶øm© ¤×¦rŽŽ‡÷׸ÒRï‘‘­À¬‡…¡ë‘2 uü¯ óIùöVt¿È¯ÞåÚqÓµŽ'@ØÆÔj Ç#ÜMâÉÏÉAéÿßwÜFšmT¨†‡µ vÎï9°°Iï O×·§Õš\ÌÍÍ›4Ûy))-ÕÏÿu¯ww5i_C”÷òú¤CÉäxöƒƒC6/ý¤åšvšß…¥Ö] #|xÛþ¨ %;›¬&¬P<G‹¹CðŸâøgê§záÏí>Û_0ó¥± JgUàÔ2xzr~:Yõ†âž˜(YXð5Q¬vùéYüyÍ{xÛ|Æbs£×g¾º^,™3¢í °ÂÊÕÞŸÑäÙÚ¦íM€Q‘ñ2då¦üŒvU–“V°©¢BakS' (ž0!9ÐÿáX¨ê¡ŽÁs¶‘H!^:ü’ÎæÇK®Ö Mlv"íŒË¨õ&Š0Éâ==#¸IÚº“úSÅêÛ*M òÔú÷bþØW™À^x­úÓö ฾AJe=:ç«ï-ÔM -†E’è~LÏî›}aadtåI.±°ïÇw…dÞ@~gý„%Fb8,üü-Ãü|µcd¤-o£dèÆAWFÌojQp¹ËíìÉIÍdþaCcan0zWàlR\߯é =F?ÁÝÅnh¼²Ón˜ø£eä ¶X‚CÛcæl¹ÏóU<]å磨HYèwOÖ=ª”…f@‚7a­ÆFË3M$7?¬}ׂBfôè\[hŒoÓèXl¸­ËË3[ù¡ „Q8¼„lçbéƒ,&B› *ôj/ù,§ ÌÏ_¿BU˜ãÂ'dÊ•«ƒeˆ½ªŠKJ´®Vc³Ðnûà:Ib в;üc´Ý{Õ&F£ør»_,†šeDL2(‹ù¥%—aû>ýñÞAÊŦÇ.К@éÞ>àR(ZmõE~váüˆÅÞßÚšÐö/('}¡>ÌÇûmjªŒ’Âd•MÙæ8XòÑzO˜ “—' ùœèx0~ÉÜ*<üž]_ªgª‹~Q‚b6šh£üúÕGå_áÓžž)R²5+‚”1 ­ÕÔˆƒ‚±ãŠ7âëCÚ}žo'ËɃø)ÔDNmULùUT¢²·5MͲũwæd)¼¿-4'׎O¶†Ë΢Uo¼kѳ†õø–FJÒãíug$•x:od¤jjj) M/=†é `ç°(¬¶wB¹ìúC£ÊÕjý½½³ë§Fï _Aæ¾FXþi_ÕÕA ç#ú¶ÑÑ©ëú¸*±è娛Žb47¥V7A˜Åu5ÙæF„ȆSO{{ÿeÿÊUï>é‡Â5;sa:(h*«„a}w±¤÷pÒåØˆD+8›O;›ýÑîT᪮îäeµ°°0)¹½¯¯ÂWîðШèé…†[V ߈ˆ…ü­2J==kk5ÓûúX¥Çm_nÊÐcиÞ*g¯Ø¼‚à‘¬ò¦540²°ˆ óS¥‰Š}þ5Ħ¥“a¦™êi¤ìþø©ÔþøÁø Š]Ø VZNn±ù™-à|“«·G°··÷î&P±Âàƒ2ÑùøÅnë§O•ÛC”cÓŸ6‡jT’"'¯ìýkTÔiiÇ8œíêÝ\c;(w†q½¿Š?9¹ÙÙ©?!àÿÂÂÃÆ£ÞœTp(äúÖÐÔÚú0]`[ÃM 5:&T±jvS¢¤Î„*™PJpý«òo°Ç×̬(ÑïéÆåikPS di¹T;/~ 0gÒ Ö- ßnêÛÎ58¦»¸tÙìâkâ.wª+*^Ä ÐÒ¾ŽÀ\3•Ç ÿÛ†_òò[nMéä‚‚ ¿_!ÂÑ.ßlˆÊî.o€ÚnÍ^NBNn Ÿ|Ýâé¹ZUN®Žú¶ÝG?ÜøëkÈo’Šed*‚ô‘áãµõî]rù`õÚ±*ÅkÂéQ4‘Ï·w¶f††ŸN—[Z9|‹yë×¾yöð@åí͹ܼ¼Þ>¶ÌqËŸø2(eÝLGöÿ¹o“Q†¯¬@ˆÜž‡p9_õ„²¤ó£KÇdTEq8œ †:½ä*“ßNf¦/˜ 0.jh( øœ|<óñT7“Œ/ýtº ´û5pøc8l^ Ü Fĺñi8¡`¼zd:>Û•¶ú“’|x8ÏÎOþå ‹YBnll°ËÌþïN™±–ü?é«À!$éÏ¿hÌݽÉhBÂÈ SttCÎd.K­çd÷¤” jÞ|èZâ-JE+=À(÷W¢ÉÌ–Ù_bÉn*22Üéá]¹û6Ï´´¤¦ á›\öùQ²p8"0ï„<º×?B•Úî_vt,,Ö/~«hþù‘PY¯V3_½\ h}ºÞý¾µ%D,UJªjÌà™+&ºˆ~QÑGûºà;‰Ên–m+œ®ö2‰()[—S_OtkY¢Q=Ü/5F¬w»#ŸçwÎÆÐÌu‘‘‘áÀž>Þ’ì^59)›Ê*ÃÖ¶~ÊdŽÀfµ±Tg‹ð9$õ[ûý5ßö0Á´_o?ùæé”=:::c¼ô3"U¿reŸÝ­¦ÐÏ÷¹Ð8}xpUÅa¡¡ScRœŽVM©_<_A*Ÿ¥ÛNÖÖ´ÞÃD'$¨DS=7ÿ›óAìl~@ÆÀNq«Ë[>[jd¨¬Lèè8:ìïß„Œ v««PµÆ¬,úû«CM£Ó©ž ~~z ÑïB… 5ôt Á/78v's~€¿<š¯.åË_X\Nd›6jýÜà2Œ€=@Fž\>ë%£ÿ1R8šJ4‰=vu =¶Æá4W2=ë$ÃèÏ ˜å¶¶aw 333>1±—Cn*Ûíqâàà‰ß4ª‘ I"õÇlNoáÄè-¹¬¬ÆBæà^å±±cB …îE^ýµ£éÒá|9ÿ[¸ ãáp‚78|üÓÎî:š°0<®Yåú·í|û7)U1ÎV¸•€^¿ÄäFR¡šžœ¼ló‚+ ‡ï€â_·h*SðøRVyøcÃx*”Túõó“s“ÿû·ä5'·.²²²ÒÒãS\ ŽçY¡Â”&&"ÔjD>$$=n¶Mº­ù§§Ôw—tà÷P$'äFnÊ_AFúæÎlˆ:;¸mØññ¹•âº6¶tËk '»ºö cá`Ü>0ÿ$ @OTú®ãË9i ùÛÛöÓ§UaoÕ²§µõy öí»wÈ*\¾_YXbqÝ&;ºŽ—4ùQ M£þD±x¦å_A@¤;˜Þ™7¸Æ÷ëY+ú}órwå3;€‰É‹-2¯¼¼W«‚P69 ë‘ë}øÞËâݶÑ(çU¹BŒ¼œœÐHÙ°DÕ„XÅ‹UIIIB¤ŸrrBJJÞƒzáÖhÀ[­Ä§÷@æÂ •ÛC°j?Ù¡1KÈ@¸x}“U¤Ê–ÄVm1š&=ž…aWú œZÓ°Ÿ0¡ªjlg4겺dv!!!¬ kaˆ¸þttpååÂýýÆÀNäöÁŽÜ!àrZ¬$s8/œú¡Í±óñÕò1YpÐg^XÁù†ý–pa(‘­ÚtþêæT›‡‡£0nœ¡Q— §³æòB†k^¬h|±-ñ ÿþô:¨n“™ï£““gó…|¿HŽ÷»tuuMç*voN×E›…É3ŒÒ¼Ã`ÈSoØ¥$ã¢æÊtý“’öŠ›Õ(IH–f Ié |Sgh5¾Þ ê:ž"å+ð ɤäøá”´ \˜*Të"uìMæ+sµDK4sßÄMn´1ô­¿— .•Ñ7|÷)Ҝ⟪¼üöááb¹¾¸®î¦áx,‘u³Óe^xxxM¦¾fâ׿ØòÄ&s”í\é­A65YYÛ„.úGB”p®tü±‘ó‘*\H “¤D[dTÔÞþ3Ûõb•é¼äG}d¢*­õÖj*üÓø×Å ´ŠÊ‚ƒç'r9^õF§Kج6'ggøÕËu¶ý]]ü R ¡%Cÿ–fÝDâèWÚ¼ø†“›ãé ÕÍÌH'-1&.¢ LŸÑMw æC0 +ñqªm¥³ ÆS O nî¦ÂæŒ\\]'''€‘¤R2Ë5 íêêÊËËÛøAD@@à7199>6ÖónƒS¾P‰/{<((¨Xµžßìa,W:ÛÆÆFFV6›íª1äsÊ#¨ÆD†}Áë£D¬R‚¼bs '¶qƒŠ“ ÐÀ#¶æ®÷__F£œ ãÚÚ^ÚKUùŠ \˜ëùá¼åÏûùOØØ¢H¼  »ƒ±?}úÔIÙR¢Ù~u0˃Äûë—_DÄDžl>ŒÇŠU­j½]£Û#ëé2zX÷:ÈTÏÄD…vwð›w`ààŒ7õÊg÷§‹‰ïÀø9ûocíÔ°Ùž§ #¥¤*N×í9øŒ!"ÒkùýÊßߤ€Él&íIøjR¾¹éÎf8E[C#%/¯Î`4moo:„pˆÚ~}øÍËúæÃd÷§ÑÑQÇ“îÇê}\º¿×¹·n"Dt¬¬qË9`hãss¬ttç€YYYÿüù³qe»?„Á@Æðò²È‘Äd2ûG­X–ÑÐð°Òê F¨<ÅEâèÜEI ,òë×/aa‚fêç³(îd®æ¼¼½‡Ûó¾¾¾ “5íW\ C€Cï®—#â•ïÙ,m_^¦ ¢<æúx]èçW‡ó77ÂÂý¢ñŒ§˜êL6´±Öòáiiióòó{ßÉ«UVVnžßv‡àrÙîEÔd"@Z>8<¼uqSPˆ óò¤$+!LòÁ3˜³»»;°žááf×ûªÒRn$xŽ4Óù*ÑXZBrrò¯_5WZþ,--%o×nËzà½,¾ÔCN-+³•5(Ù(§ÁíñîrzÙ$+7d³õáá!] ÌZæ[êYyõÇ;ø½å/,VßnûÙNV@I»Ø¥l5-ˆ,£‚ !*?e âBÜ0UVž·Þ’•‘™pŸHv@ê$~ß$‘ ùel«¯£#¸äöpc)#ƒê¨¬®ÎõõëŸl\Üå|yjÎdq$^99´äaýRõ§Æ Œ ;îËÞb5³³³.œÉý›Œ–µ!oSJ×RW÷€aT. ÏŠ°€oL„õð  0ZBÅÂÿæÌuq¤—×·˜¯T¡èw |:»»ÏoH¥³"""|•ÉþÌÌ̈%²‚ƒ¦8ë§.++ËÌÌd³;()/GéX?¿mt¾nr¾.ZQ»>Z$€IKÐ#HN_zÚNv ¼ вd-®ÊDÞ>whHd#-]¨îÛ¿ ëú,ú0Rœ™Yéþü´·g„"/)Ém†Ú€¥îzy aqé{yqÁÉ&a­~$GµŠáŽÓ3ï±|{rW‚žvÃÛ* ÑÊš%Lððø)*:=¿¹¹ùVQ^^žœ„°¬^ÊQ³€QÍ_iPÿå‰縟ƒŠëw €Dz†èåºÉ±a\QÒU(P_gD2ó¹Ü6™íèà3wÈc>ÝÙÙát½spr cÑÕÍLOO¯Édu¹ùÎòZ«çßWªh±l.—‹‘nñ$vtv P‰‰‰6ojÝùøøZ‰•ÀÌÙqÓ_ø¢¢¢î…”KHH¬œ:Eü—šRä`›Í>8ÕEYœÖÍMõÛñ)d—ä„„ƒÍM€kÄ¢q{“äVé+›7{ùÃæ)ïÏ¢k›@mª´1<±ÿ«V¤˜ÒŸo~ˆùê/Žêò²ÂP/Ε#ÐÛ»ëþú¸w UkkëÆ!‡SFvvx5M§‹°»«¯P׃='}½ù+Þü PkìSj~:+Óe,,ÿkO`¾=1!sÆoeU¶‚zºy_—þk¾H­‘Õzk`ee¥ùùIYU5Ï·§GPYYÙR˜Á|‰ýlã~£…”””­¾¤¤œ.€F»k¡Éètç«««Ëë‚ììk0¨ÖXXØ ö´—Ø23C}HÈÉoÏt×õÅä(¨ÔTþý[ß@ýÎÓ EìååÅÍÍ][[;ž-~ ôÜzóÝSÆuypðP4|Çí¦Ùƒ#^o_Ÿ[í)¨ÞWCîrát:=À,zzzœÎW&£i|„„„vööׄÂQ #àuw7C“¾{^§§Ëú ¸¤OB â0!{ä”…J5'#©ïú£Œäº†é/ìˆ`Úº»‰ 7,|¦6Û@éÝ¡Á3¬œß’Ëœ\^b}WP˜ÉøÞA9©__Y^Îf±Òòï+Ž®naa¡xsjzúù¬9.nòl¹¾?˜'¥ÒDA¶wr²:ˆ[J*ÌÓÓ³¹ùYŸÅRíq,…Û)4”<#Ó°ª UÄ‚Öxª œXœ6V„(\ïŒX“h Ì2—Û3ÐÆ|hŽNNÈÈ—VLOìôØœ’€Ü%š…‹H=Ó¾löx½í~•Åj[]«•³­meHb¢XöønSSÓ††ðZM¸ú¢‚²òËžÀyÚÚëùòÅv{¹©QêKf0ï¤^[0«0U{FEÅ{•µg}È0Ù8t¹Ø‘TUUFÇ/öQ#V$‘µp`ll¬º)hƒ“Í^S`%´böʳó Døù·B¸ž@þ@欬¬ÜÜÜ’±û7ßAA]-Öóø x¾ƒw:YyõŒÇÅÅéöGåæçÛïŽu¶·§r*O d)F6µÄËü­á÷ù/]ë/Ÿ%>^Þ/}ýýñññpTÎ( :ÿȦŒ‹U@yþþïYÔé›u©íÉ3LW¤ïü[†d{IÕü$Ô:= HÊÓÃC‰+ð÷KŠùòÔ¹ {z>|N¶²C˜)Ó= Doσõª~©€Ö…ƒ†ü¬°?>œ™¹†Fp #qÑ}m1𱜽Èû“ùÔwwI¹…ºÒ‰0ÿûä2QSCáþ¬¼?ÍãÒd¡¨¨˜è‹¬êy¶ÙŸŠÿ~¥«-ñò¿ñ^lÊÊÚ.-e»ß¤N‹s¥°ÂýÀNÅ·Ã ÁÇØ¸þþh5o8””¿o x¦Šà)©‹O¯“ÅÒ+ hm 9âââ—w—›ŒŒY88>v‡þ§ß¬¾¾Fš®C‹bÀòŽàeu ±øPúxdÎÐë‘)àf×9-RŽêl£‘‘­^¿Ö#!%•Â4—ûLºÚc~¤­¥•Ó‹o²ãûû*=#Ãh±N˜Nï6Û¯@hT§ý‘ʼ«þ¯PŤ‡›•, RTÕi~÷‘‘²²2Ò’§¾ÃÛxI ÿB §Õ>ÐÑg8;&–”Ï[_ì¨hk_òcqÜÖöÓï)œ¬ ³Æ^Iêå&qÅ9¥‡I!5pyzF„Y=uèìì|¹ÀÂRK¥Z'‘ø:…BÍeït=°Þ^> Båñþz8™ëóâiÇæ™ý‘HIé(Ö÷™§QŽŽ“lö]!ØùºúÓ ãêÍT,®¬¢¿~ µ·K(×K´Kñ+)Í ‰qsÿÙÃCÕ¦årt|LŒ‰9ïÆ::âÁ4’œ#9:ÁªÎn{´ HB}-ž¬@!×ÍC©Éœ=å5!D0-''#–1™ù4^-öõ?<š&såÞáù‚ë~ÓA –Ÿ+à10²ãpw[*¤"c/©\¼Ü=ºî~KƒG@Pi•yXk ¥½„]¿Þp :òÛîE¯èÜ_NçS é¯wùÉ@‡jÜ_ñ}„ZÝg«:Õ 9_¥J,@µ±ÅpMB1Ø®=3OÎfó¯ºúšËá; ¦PÝj;|zš#}´F–¨?†—¡3žÐ†ÛÃ\óUƒ™Îö°MmþJ^^ŸºC¸N.±¯K-Èå6­Ÿó‹.÷Â"É»Íçí9|{†Çì,5ŽïŽÃ1š%T˜«O\ì¶âr ]ušC xAóæÍ)]åÉ£:xp8˜;„ßúúͱÍÅñ.KÁ©Þg*v÷›ïAƒ[a\rrS““®ÛaccRÂQv¦†ff¹•—êÕfOMà:)£ç[A N“×í>øÊó‹âI:ÿõè3Ðê ²®í;gÕa<æƒ&ŽÀAãÑd‰²)ÈÊvkPdŽr&ã}Œ;:œ(Õ¶O`)׸ØYmŽŽW–Øzïƒ8Œ¦XTœŸ¿~s«ZãrÛ9Wyð9Äp3Ý“ä¯O÷ý­ª„ì!Ö—Ùjóð&À¬9ˆ ÇWAÜ_K3™%øÞz!`ûÓЦ…`è.\ÔGDÉq8ElíPÕÉÀ‡FGÏÖÛß%»×™ÌÛ¹Ž¦5[ª`®¬hà|º,Ï3Òw¾ç¨·ãscY&·þ2ïªèj]ášÄÄÙ•Ö;ýP€å ššÅ[CØ£BÌøø’JJF_PFß'øt—Hg£utdˆÄUP3UGä}Á£àp"Qo¨qh÷ö \[‹=0Lþ²ŸNù¥+VÚ¼ôww&ósðO©ÔÝ~!udüzgKýŽÀl †3‘•¡Ê#!'CëciÂàÖÜܑ۳gÛ7®ºúËóÓýj›ñþ3ˆðëŽ:{‘½P‚ }P€Ûö©yyÁÿe¥é%+•(Ä822*|¶H~òòݵ.·›»<ñ ¡¿ 'Ù!  ðÍ2ŽæÖrX¬^[ý8joê¶ÖäJçá¡§Öœ¤aÚ¸Þ‹¢r ØEÝäÃerÒÒÃCKo'˜ª&ªÞ£)/Ï®/‚{°n:S˜zcC§+ä˜8M†’Æ¥fu2¿éxù³x‚¯!Ù<‚@÷ M¾óõ”…%ìBÉêû/59—/•Nm˜ëVþnÌkwÇí “ÕZ‹‹bü8T‰ÚYT&`wÉ-(¨ðôt×ÒB˜´üÁ,#ËDÌxÇ`ll.·ÏjŠàdÀÉhdUYN€…ôÉϱIc èèï#e”^‹Ûàrû•”txÑ5ÇW ömâÒæÞ$!‘øÒó0—ynð›Ÿë{FŽÛÁê×G‰XXÕ&°úåµÿÕ‚å0v‘DöÛ’º¸Jƒ Ú TÉÈ îè÷Õ@Á.*k¯üÀþ˜‰Œ½)ž£o”MݜŠ#:œ´L|ƒn¨_ 9@•Öp}CT©/, ØÌêé 0hEEQ/+öË+^VÿW›aû|5Ÿjq‰ÄhY6¦,-Mó>ÝÏ-2å½nûFNþx>ŒR¤ª|wª}CãžÈ|úoXÀ òƒÍ $ø`¡&ôd•gÔãmz¿J3Îò‚d:ºWiéq¶xt dD²bEÏÞ0—ªÝqS­®0ó¤âž»ëé&ÃeºëŒ¦uk¨ÿboC_ºàÇ+€9ZÄÌÌsSUÉ©_÷ðL¹åäN÷§k¯®ôëä{P¹·û`ú‘Dæ &ܶƒþòôL¾ñä¶EC¢UT447ߎ«²òàöÊóÿ–Èÿvp¼ùþØ€ã+¥ð%°¬§OÍñc)YÙÏÈg6]šRRô£oQ*I¥ß½…rÀât±Œ ¸ñ]¾ºØ…<Û¹þ|GÞÖ .ûRAý²¿¦ÿÏ{oxº/ÌÑ ÌŽË}تªÇ8ÿ³ƒÙl ´îq똩Êà_áï°˜W¯Æm÷©$ßþ=n>ª‰¤@óI(ëß”|1EJž/Ï6Xy&$ÞîîÈH`g úi`Á%=õ°ÌÐôè.nr£Q¤éøñÐæY0vý1@3ãéà4¸Y# K±Ã’¸žk&’é~µº?.¢V´°¸PwçãåoZ*ïn”§fÈã@fðëùn¿XFòÛýñRž—ï×yÜ™ýoˆÐu¨Ÿd3²hO׬g×ÖȈÊU„„„d+Ë+.˜êÖÛÚׇ’\ëÜ›}ʬ|¦`)^ö§Û?V¿_åô@xXh9ùö¹Ïéuu/÷€ƒ–‡“”ƳBÑg°öSLlkg´ÖÊŠ–N§(·õ¦®*DLžÕÅáeû)‡Ã?=ÝJvöÿDÊ>hq’.=kíÅïŠÛ§ä©SEØîõSû㤬¼ùÕ²ráŸ<ÉÅ 4Oùç)¿@n‡N_VðÖÑÿÞv¿GÀ»í ¢ òS4ÕŸîßß(P8;ïÏyyÂ2dH'>аP^–X§Òë¶ÔŒ êçcÿhZZ)33oD&£*P F†¶ñ´ºÿvÆý>b'µ¶–›/¹»ÇïQŒED >ßïe /´•“›i¬À~†pFDüEŽ„ƒIÓúíOBó^ë=Yߢªþ’ã:É©£ÆoXß’‹±El8åó{í£êîÏ¡Vöúë. ¸Îípè3®ÇÛtÉö"ÑŠÝ€ž^ƒjY98Z¤–Îú’Ÿo¨÷ä;n¤¯_yåä´†q¢“ìÅ„É]o¾kžëKJþ¹wfvkxzz´Ktúøé­é;¨ž™Òö´4Fgçåf®ÅG3³OK~àä!-º¯~çGD2tt…¡QaØ#5¥e…€…y|ªÏNHfÃeÿ¢©™º»Çö¦µf¤¸9øú«Ñl1Ñã¡2úi¾vœ…ý¡:‹¨,}½÷|;=w¢h¿¨%P/¿³ëí¹±É8lÉ(tÚ„žH¥õËv‡wv.bb 8œUšÍ ‰™ƒ±,§Ç0ê\‘(Lñ øƒ'œNµÖÍ›Y’ØoÛzw/¦‹½^$ÆñO 6ˆƒæ÷‘RmÄ¡$«é"5¢ûËioxL™ Î"8RxòjTº¦ª Ôoà"#¥‚‚ÖÞ½»L€õþüñchº@ÈÞÎ΃ÏÚ+qöøxVlKù?ÏZH5 EÁbå7"ï#3ו,Ç[µ®"`§VàøW!-¢""r††ím^Ú ntúC¨Ÿ?—?”4üTmœ]h¨›¾ƒçFzt¼ÏÅ}´Xÿùóçév„¸8žá$U›g·‡vX,á·5>UUm‹õùÔj*gW¦[¿ºþ\;})Ðâ4hÈ ¯¿ÊÊû0³‚=¡¡ œœÊÖ{~o_èÆåxzö–é¢T›:·Ê¨JJB†–ze¶¾¦Øa­#à÷ïúÕÕå`¬Ó–­oo@ÌŒßßCC8çæHŠÕ2kë•×±¡~».¦egWØR*ÌþÔèíÂagÞ^åi^[»ûîÆe»÷VåÒâõò 5ÜádRÔ¸€Â%nÈÍt wšûsã7¦ê½›ÓmýWtüÔ´VãÞðãC‰I4ë6ZøÖ`‚Þ:9Ýî òAˆìbƒ<ŽKÏU_7«»ßEØ£ý&¦¡ù¨®îÃd^EFò!‰ã~˜Rùˆ‰©zý…[š_®ÍÀ@YZšQk­‰F¸Âðyž•9 jÁÔp·… ®%68XËâ$®ùYíìÁÑ?qqÔ×÷[ÊË󊌴ð¤elà ,@wÿI2äããަ:œ–†ª Ç„n:–¬¢Ò‹uèåUÒÊšÖíÓ£€Àød¾ùÓ™°†¥%öK‡üᆅ† àpܱZgÕ‚ó5x–Ĥ¥i ³ÙØØÜÜÝõõ÷ÿ÷ñõûy Œ½­­.Ó\¨¨´µ•vŸEóÅ;TLá66¸•÷VVRÝ!Îï ‹{‡‹“èw¯­·Ó4cQÀP?‚þ¶Pâæ•’ú¨>”VPXxèèÉØàxNDOOOI)*$Ô×Ý =ÿ´7™o8že©Lƽµ¦Åbu›%ÚZXø=ùÁ¸íïêè¨r•yòåvrh8Ñ#J¸—=>à Ѐ-†««¿Þ¿÷45½´ø‘)Åd:Ç‹‡ô¾½½=Öúüïß¿IìŽZZZiûûóKOǯßU›-ŽMMÉIIÕÙbTy‰Ýßßççäääå=]Í›:99Áx€olloÛ׿ñÀ£Vk˜ip,¯¬¬¬«»Ë•Î^jpôÄ ª¨¨ÈÈø&Ÿ¹÷`^i:Ïhkk+++ëîî¾5»Üäj¬«KHJš›m}¤ª7ñï’«««¬ìdJJÊzwH~~>9 ‰JŸc…j½&''§-º3ËÅàJËÍõ7O˜ú> ÛñqsâÉn½MÒ$"¢2-/U‘FiéÊ·pTw7 9Ef]l¨€"qP!-ŠÁÁÄUfÃSÒx0ÈXX í>ˆ¸Uååý}}}CC]ÞÍ1â ´ºBüü/Ÿc .5:—‘Ë™˜šÂ# DEGw_-ÔZg76røñ⇠^]]9_´^é$¥Íc[Y[ÏÏÍ•`ÿäáILH@…ÿ¾Îv­:S‹Õé´0šÚR¶xrEe%¨›SyYYÕ*Å_¿zç«}> ·ÖY®wEEE|¦Æ‡)s{¼ÿ†ûLõ‡Ín`q±1'ÇWð›’²òýÝÖ°••Uý±šµµuµÏáYûãæ±bñt{ÈBÓ£$6”Ô($ îf)_>—‘ñ¾Z½ö,˜?}‚y©<MÍ ¼½»˜Šª¤ÌéêƒwïÞñâtNHHX¨UpÚ†ÓÝݽ¿¿¯ ‰š9¾;ÀqyqÁŠû§–øuñèwª‰þpÃ÷ï‚bbü’ À¢¢ày)Û§j¡_¿ZqÜï.HÉÈÞ;'„†ŽŽµi|çt{˜a1ÒÖ&°«  ‰ §¦îÆiv{œki8£ÑÉ‚aÌ›7è¿¡ZýòÁ»þ¾Öp\¬ Óf¤°ª*8œ8ÙØÐÔÆ†ýôÒøÕ’%hO‰—G­ $²}Ö5ª Ò=Æ\S[.üÞ877Ç*7pXXXˆŒŒ<Ãÿγuá•3ÕÒ-ÌGlöŽ4*ßrƒ£¶‰ÉÁáa,-%%%ÕBÔ^_$ù »v—  à¿Þãgøõõu0•`ò£)•§XȬ}ÌpÁEl’ ¿~ýÚªñ $«ªÜ¬ù4 ¾æ/doÞÈØœÃz—Ïl…2ña¸½½WûS‹EùÆ­lÈ WÍgH°ÓÙ7Ǯ֒’ î— ÝÁ|–t×Ö>wÄòÞÙla``88½†›ÍÏÍ¥ ù—˜8¸P¾ýR\ÑŠ/Ï5‹g2ÏËÉÁƒ9[ë„#&&6®Ôê| ¾±=œ  îýû’là7hŽ”+ B‹‹A¡º»ˆ‹S²³c´;ñööîèà=¨GBAÙ¿×d™•м±h;ÛD ÁvV’Ÿî+ ½(ãoeˆó=£õÙÆ2ÏÏ5IÔΗV:¡{yÔL`QüR) ëO¼¥¥%77·ÙÙYGGGåj³ÃB.®æ‚‚‚‰‰‰Jãi*µ†…‹UÐVÿ½cŸ Àt0™Ì¬gdDÜ>·µµ©¨ªÖRÊnkƒ?›Y^梦¦¦¢2Œc°µ}fìÌ+,üôéax¯óõRFm­x+…ZƒC%¸öîîîÐÐûé@4v‡‰†††:Â&#³_@Ûj÷‡ß÷µ5 ]&Éœ®¼?ZoÏŸ‡†Š:Ø€ˆ>¡Nà† ñ~¦j`¤_K™qÅϨö³¨÷êÕË’*±ÔÔTOhD=ÎSʬ¬¬à›`Ø3P?3êaÿ˜šš‚/ ^ÿùws¯í  RHXx{sÓ¶ž‡¯óÚÝ#KèÞlV›Ë½Ill왫”¼·oߊŠª­­ Âf»Èeå" ï°'/)~~v¨g¯l»a¾\­ØGé8µô+]ùƒ>Âk¨Žéâ·ãY‰ O4„…Ù^šå7"lê÷ùW±XŽû‚¤¤5\w ­k?€þžžî<5^^^UUŒxŠŠŠ@àtQ½‡]½eúÃ&}úçå2©$¬®w¤¶—_¹¹û¿|8!÷æEx>?}§¡ ÅfKà`ç·´º¢9䈄…øLLT|#Bcf jaƒñÀ빿>~|xÈËËù ÈÒÛjuJò"gS •õ›\bãþý ±Gkyó×Ëkk°ÜñÙͧ¼|Óþš}H_/ê?}pý]‚66u99=aß9@s#AÍ–ë‡444üùóPCZÚZ‡sÉ! Œïmú[[uÛ}’W°¡N>8:æzBo³;£ýHÉe«u¾^ßÚ²kFÂõ{÷Ä¢çlsšu®P9_Áy¦««ª­miiJ[oði˜I ®‡EÞì—½9)%¨ÄÂEÄö/©fBEó®^I).qŒ|‘­ì·VíÞÎöÇn,.3‹3 ŸŽU€¢Èâé7 §K¡i&3kÜ…î6BBÂ^BB_BB^CC èY“×a¾¾%qq QS””|ÊóšssïãâÞƒwO6\ÍNÖ*Ì+€µÇGO7‰ w1CÄ 4âÐéEÅléúêÅ.±û­nÛÖ Ž.¡“;¨´ç·Àk% ¡Çåeå‘-ë²%‘æö  ¶á€ÂÀƒÁÿú•Ñ$æ¬DSxcCRCøÉ1) y\|""n{ÄÏ74t/EŽX¬Á®êïæï~ƒ¿^·Ë÷·;£Ù?.ÛÆ™ÁŸ“½‚¤¨ÿ7ò´t:P8©·· ߤø@’åäÞúÉĆKÏNñs#ñЉ )+·¶üþýÉäÝ;²»»>|ü’¤Öýiñòr¶»=Y²hŠâ÷Á%%#kUåzŠXlWôx+GA˜Çˆ8 Ɔ¹^öT@^£—$ÀBÆF¹ûûÈÄÅ©ïO¾Þ¯¶ûûÓ20 Âxøúùíì‘íî“#bf‹a‰­,i¸×¯_.Qt)÷~矰€WLHÏ Ù«—–ö×WðYl}w·7lS$ÆíñÒˆ‡GÙ`‡U ¦ ¢bl±×ý6lûÀ¤Ô¾8?Ni:÷åiÊM/ ¥–›ú—¤*%÷òž¬.šNó_Uzh3ƪ¬Ü\<²¾¥U€.aaÈUIÄ=½,•™¹²XÌÑacÈšš¹ÁÁWWÁÁ?Q3ËPÇÆ¦ÊÊP>þåÎf7°•1¢ ’Δ5°…W·’”.VO`•ýÅé>”Èv­ÂÛádll*‡SÖÓtÎäTU"Ýì°y^ ³ÈÇ×ßI€µ[ ’¹ Fø¥1¼yßBÉ@ui éÀùðAf`——‘Ÿ©›Øu|'–Ý©[ÙÊZ$¥ájN£gË)Y,Š@ƒ øúf€Œ¢£Ã:;·çJ‹ê |ÇeWHÍn¡bAÎõàÍà %+/#³²Îß±yÇXdl£¥ñ£¥ˆa ÍÖî‰GÕµ'S¸¹ä’â‡EEµt±ZÐízˆ !aìá¼~mÅÚ4pà¨l.d ]œùùœ Á?ÜÜà‡þE`éèdål¦•fdR §•FDN>{«ˆM¯½Ž-â4Ì…Q¼ñ: œKÚÐðñ|›44Ô0™sÓ×ß_$Á`eÇ€U» æ­Wk#Wmrõž•ú‡‹û4³‹×Æò¸°p÷[ÛölŒvõÁÁøpˆpP*||ë¡â8œ¬n'o SNAؼŽË-§¬,Tâ+r€_GXFFÚÞž^F=wU’ÛRÓ JÅŽÔÏ6µšnÏs ÒÕ˜½=¥ôôñdö_n÷Œá­? *TU(ÀÅr•Xa-)ð-êŸà§ÎNÛ’½›®¿°Yb pço~ãõT›óOð™âK¹é|A*Oæö?ç÷$-;™ òwÒ¤·—OVvðçÏŸ€·¶0ÐДÀû2bÙ¥ÑóS‰ýq™ZóR[Ö@ ôM”…ˆ¨èø>Áx—ø×pR==Œà`"ëm¥ý=2Ë•ƒÁÁÃÛÛÉ™÷9 †ò22>i9‹ŠÂþ¼j‘xK¾WQá}elzݽœÈ|ú°?í:2W‚åù‡Ó%ÆbG*Rh¹Dón,EÃK Ñð@F€¡Ç MRÃøiúMê­”GAm-c£QÄп¯\—¯N6z›Å“L*ôCÈð=ÝVƒs10…ý}.É sýL4RÖÖ´Vw ŒÌŠz{¿ˆŠ¾}û,=ñ m Ÿœ<5}<$­(7wqÌjøéÑliiù .Ì¿,¢3uw> ÃÁ$·µzZwc{¿Xµ•÷Àªý‘VQ¹¾4æÖÒÒ‡l¤¼ÄÝL«Œ¨ÊÊ`//=÷îY' ÉQÓÆçdw—ƒCxE[‘û¹6šÑÝÀbu8|ü00¯y&cSr1¬“m]üŸ£qºA†=<0ôÀÜ¢ÉË1~} 17=}¦6g|JnçW}Y™¯òãÇ}–dt˜à††=×ûŸéicØ/Ä—ŸË‚zÌ ýEñ=§KíòjýrqqSQQÓÒâ–•-‰x ÂD¸ŸÒ†õ[n¸uÓÛú KØøúâ·±03Ñ»7¢‚=!"îW1Éê…Eœ:g:Àu÷†Í.:¦é™*ðEGÊrãËêèFÊË2ÀàwìFÄÀèáäœ^nœgta~Õ]ñ©£+ÌîøeY½KíâÝeðØ…òþ'а¿¹˜ª»»·‰¿¡ºÜ†ÅGȈI£~‚žŸÙ™›ÙQT4Œ7¶ÊÊzS£,#s’Š =ô¶©û‘PE_Qñ“xÒ7>Þo႟x¼Ù˜¿Ô×(ˆÅé|”dOu[”ÓßCÒ^g‡C‹€@¤ ©¯“‘—ñÍÓ^¡%9Gæ.W,ɅаÉõž1D²&Pé r˜é!½¬lw<;áææZý¬¬ŒlÇÆ;)),(èh¦´?h ÄyhW Ëήa¹e:ʶ8<’ùj kuLx*&—[Myù[cåR çµåä:;Ì›\zéh$û‡ŠLÌÌþþøGG/sûü,ÿ†–¶dÉCöpíÿ¬€Õˆ½»›ÏVWm~ZZPY_i­•“QÇàY€Ø ³²6Al55 ¼ˆÀ©ší!S•¥£Ø\nÌMû7ÑQSó3X7#ÃShf­ÝÐ! m•ü|aægÑYYãXY‚$dt\j_‘“åUVr¸œo½‡†F1É@PF'!ÏÇ'H/ÈÌ|³;áÿfßè»Ö_ïÿn§¼YŠ “* ìï߇ZëBûã$xífäÏkB¬ŽÊJJ??/KËÛÒÒo&t ²Õ ¥é¥%_ç)&D„àù*Êotç955$KŠP¨ÅÑ"——…ÀK™ÑLÛm£~Ò¥R½Û¼§–•c´«K-Â'ÌÌhL$ÃÇ/H¥"ß+aÛ ”†÷PGá"ñçt srYZú¾Î!_Nt-ìål‹èË¥‘¹¹ÓSm1‘»í>ï55¿Z[Ã++?Z®_€$­WÁêÅ\î?“R"žv²ù®¬Å#ûÍjuDTU¹+ Æjfwû¡YsYíOu»Þ·II!ýº¤­âO§ú¯TìÝŒƒª™Ù§Ä! ÇmK<æ>/¸âáÄ9yÜ2óäù‰\¢ÿî~Vy"#XP³&†FÈ`aÆBá¹»«üͯ“#šÀì²P³ªÝµcù¼È.€«P¢1à ?~Š€_sSüW»Mi@ó°ÍØXùĈÆ'·È¬ªlÎ~wŒšN?îúºV†Œƒº¤ä´îà ÏŒ-Ä~WòC 4Â_.g~úÅÊþ·Q‚o!'L¦I) ‚‚5Ÿè+HI{±ÙLÖx=ÿÊÈÔhÍ)¨£~š ÆvÞ%àÚá à¤Z©Éè\X¨Ýž˜ØN<¿»åý¹½-ワQ$Ìõ…áí[ª:b$ ÏëãòëcD ©®ÏÊkFa‹ fÙ^Wv{>ˆ³££»æK:hhSBÂ!˜Ùæúúúú=é¸YK͸ͺý®È»$ «žÜ$«1_>Ð3T~£¥=Mïxx0b`¸%•d™Ò¢úþ}ëæTŸ”ÔgÆr[?Úí¡a¦­ma}~FL¬ák8Ê 06wô·+­'wwU“ùÄ··¢^õ¡¯ ÐBÌ¿³ÓÒævvwv.Bp­YY ôôö€€ÓÑÑÍÜ·Ï4ŸCM—þ„Q‡pŒ÷Z4E¨f¨Í:4€&MygBcã×{N jó/ {**Âx±QÅhY))iá^÷ÿ‡ˆ Â^ƒ ¨4.uB'%'¯µÝÙÁƒ†¬ÐbkßråãÏêî óíÐ"Íå^ïF´·¡·µø.'ÛY 1žÇg4ÙÓoð„¡ÿCù?ù‡ÿýOå–Þ»¶IÝÞ„Kn­¼ªÜ¯¯¡dttý¤¨aø+dä˜â‰NŽ×GÑ 诎l±éø_€¿\ÁÐÀ À_Èý––ˆ(¿¶v±åGgk«Cjøhº­£kË¡3Àשּׁz(6Ö¸µD¾nØn%¥ç-Q=¹x&t#û#•‹LaóðpD ž ‹G2R–ÈïX þå§ÕÖ¾Q0 fø{B·§§ÓÛs}l?>*ùŸ1 •çüéót£KìÝ™n_4µc[[Ûz÷>¸ óc#„N6 LšÇ»}YüSÈ‚H5ÉjSwš5:º.q\IÅ„Ö/™©»Q2Ò²²0oo²Y©À ÉšÊ„¯ ìï…˜[hmX×û£ô‡}©Õ³¢¢¦òs{Å“9Ûz{Mf4˜dËô­·2³³ûE¹SKߥ¥{¢¡œ›×ŸÄÅ%Ñ|F²`¢.f¥HÆfaIÉÈà$Ïg§+g¨ ÞÙêËÒ=‰*ffj˜ø†h™dåç“à·]ñq¾Š¯¨²Si¸ÙZ¨5`¨ü:_5hcù§YzCˆu£Â:ßnÈOâ$”“gÂÄÌga‰M6c¯Qáσ‡¯ÆeYkÒhýÒPà "Ë”¨Ýèë㧤|+ÐýT‡ø¼µïÌF¸™ÒЀZ?nf‘$§w€bx  ETFÐW**#—‘NÙà=«€Pî—®.|w0‡ëÍI~däT“«ÙÔësæöá’ç¢ot˜ïµ“ê딀[dž×ïíí¤ÓKp»6à ±«X'–hƒÿPÞ¹°Þíçèø\Oß›³ýñ²«‹‘®|Ñý¹±cvÖCÛ%÷œŒ”W ÖOFRA!àáÞhÙ¬¬½±±õs”)©Ñ§GM@UCChõvµ'×¢sˆ`±Üœ'ÛÇ;ílÜUoÛ[(¬ ®âfÊ-•'zzG) ½L ¡  K1÷|;Ö..ʦ¦6ÜÙ&€NÙÛ'o_.ú„[eon «;^¦‹òø˜Ý×ÓÁ1$½×Èïèhiâçý&+Ï—4 +›ò‡Í7œhHÕ«O Я$ÚJ¥p•Y/i™o„Up¬ÖŠÊÊ>b¦ô÷åá! ÿÏ&M¥Ï´,¨„ÿø×ÉFzƒ)Ôl¹ÞÞNÍËç5]œ\e³ ERû ²ðAˆy$(ÅîfN§ˆAW\Ìn_T™¿/¨ªš³àfp¶± ô£ýÁﬥOä`ì¾> µæ¡É€Z €¶n÷×»G\á<¿!ÔÓÓý¶¥®•àᙿ=/¦VwËOO¯1ކ£¿‚‚XP’¬þ¸ÆÀ˜Kbÿ…ë'.H"!ekWeaYú…C ñXe¡¨²²½Ç ˜¹Ã`{4!–3ò@£s4_6€_:½˜Ùùç&÷æyàé 7¤èÞl ª*)*còñò*ðhÃL™b‘z#·è˜¨llÉa3#á Ç2:–%RýWUE@+=§WV®ßžG€awuüËÈx7˜`Èi_tYcy÷=3#„Ómàô„ùùr_MVÖ±¡B²ÊüW$«ÁýY=€ÅÐÐÒÖö¶¥E÷ûh]HÝ@ã@o®Î÷*kjJÊʈEá¡Û“¯Û#©'@Ù_K*W HÈãz¼ØƒÄ‹u^­ÓÃùäŸ<(½:{àr88ézƒe¿ý8mWÛöý!"ÄnaƒyùŒÁ˜æz;9ô×/¾ïîè(· £k£ÁW““ƒ=öÖÔƒƒ „ß:Nú‡%P]Ͼ½ÜLÉ̼|Á½2]"Få/ˆ4aBJ~ÉØ_5öÇÂjj•±±woµ·†*·B’ÄjïøÙï.7AaÁ€J+iÂpªõ¤@·`y¹))áᡌ¤¤¦íåWÌ7&ïˆu É"q°°ìÏ6Χäúö&Ã]\±S¬ÞAV„˜_ñeŽ-7 ºœà­ÞZ§EDÜÌF©©UüºŽÿ¾Ú“À"‡ÉÄºŠ …aÁœ:Ž®§WÏd×ôÿoå?8#ccN&–¨ɯ¯¥øùÊËû±H雼Kç/›â‡}ïÏáÌ(¤¤äÒî½ ÷9øÏ=Âì,¶¢£±\½¹Úþ×Û›‘­ý-\3KìcN'ÊN4'«ó”(G¯±Ô¢¨›»4R¸¹Ÿé°k;&€6㨎yã:=6-߉• ,B~®!÷‹ ï|·Sâ¼ìKg窺ó 0ÞÃ Ž¶ë]Ϊª™¢ñ **+æ \‰6Ø÷ï½®Ît÷Àüjiÿ22:³ÞRpvž72$]I (v¹—£7žBWKtþë’2³ìîeW3êÔˆ|q]UŒµÆ+ÊHÅ—Û³ ¼y}dÇ;)®\×c-¿!ÒÊ÷äÿûèØeEÃã¥Ãׯ o ̈BÌOÑÉê®ç[Ý++5vˆ³?¯Ú2í3mbWc½=¾Ô˜úmŒ¦ÛKøåÒBÎ÷ÚâÉï±r'ÛÍЬ͗õÞÃÁÙÒ@+ø enoÈèéÉedGëêEéêDDG2à½XMC­4= àzÿaøT¦<ÛM¨ù²?öûç ÒéÑQ›eNyƒè÷•o$«7h‰C774Äß¿‘‘©**NµkOû>1¡‘éÌ8W¹/ieeÉÛaîýQåöv—sãE0üÓÍÍ‚Bí˜Û öAþû÷žÝAãÝtÉx¥esÕ6»m÷³®t·Í”XØ”srzJÙ²[ŒŒŒ¨Irô†E„É óù^æ‹iúï•+*¦ð\55q¶ÕÓÃ(¨¹0e/ý‚“ì }:]ìþ"â€-‹Ž> DßJK³Xg˜¯­OŸ&~xºgâ«Ètþ§ÙÒÃMzq_ï/]¬-î­mûúº:fÑæ¤ÉÌ΄ØXïôt¿øøÉÍ>“>Ø#:Ú¾ññ~ZÚ>  üÐ?ØœhXšüšYìàì”UÂðÞ}‚öüÃéç²#ÁkjÚ²8¡-B©¢KžÓµþƒËõžìÐ0 Ðf䤭I–R¡|sw‹ãõîö^"œ.¦kh(ÂdrŸêèà½Íi­÷u[6 ˆž–.ÁäñCA§ pŸI(G´‚Ïcw5bЍÿßõñ%YƒÞàF$ù¡f"rÿ¶1GÆÉÀ`-’üŒÂÔÄ&šº:žFŠbfP ##ôOžéÖÂCæ´Ñ/üF&ßì¯ùRWV&Qˆ1,XÃSÚÜpØO{{óÂØŸöðõÕ1 ñ©²AÏœ¿j_ç»CIMR­ÜàȘ¸<¸³ïªÿ£Ž7o–%1Yboo×FUÉ„@ì~#WONU-€Ÿ«¼f`#ê “Aèó±Äk2à¦Õ‹õt°¢"#;Ø~Ì—®·&²%çÊ8Eòx ~ôƒND!´Ÿ4êB§`QŠF³ÎË;C@ÑBWõÞCÜß׌AàFÊÈɹº^Nöòr-¯˜˜+mG7k} )„ß@ÚïîÑþȃ^Pg©aÔxJÄ;SèÄöÊd\­Ée6ȉûóçèí­+ùè -­´æÚ£–?,5¼È ÊU @ Á ^ë߆6›Ólïì­hà2ønn¿v>ü®ºí½þšA$:NÉ鯢£Þ^ñêÊ{¾z؃¥Aó@îN!Áøé¶ÙWü<¼¬\A‰µ=.áׯÞöT¿ Ô\ËÓ=ç2£iVØP-¼–—¡·›}Úèu"'7UÁ‡-891ws«C(7·…6 éTRb¥¥ë v|L”jYYŸ²ë_/¯ŠÊO¢¢“""%„R“>+‰Akëç!8®w›ÂK&z¤g”kbþ7.¨ºÌ%*Q|Y±˜ï.ïëÔã¸.©æÚ:0)u¤3Þ ü“lys¸Í.I87‹·ÚM¹ +«³Mk8“¯Ÿ=¦îî›s¸/Íw¾­\§æh4Ù›@xþ„‚rzi«1‰­˜¢Ž…%63‹~°¸ßWJÇH_| wKÒ ‰$5!|Y=]Y$¿ÎÜÜLZà+ÄÅgTÚG$:[~ènš>\_â0;]>>ܦšK-øL ¼ƒb.šZXxáÐ'W×y@’˜Œ"Ó/. uç]¨ÂÁ†ÍÝã=¶““ƒþËöI"¬Þþ|M»Ïçzä.'\ï.7ûÏ ÜJÓ‘ä;·°\IøÍz!_ˆŸPÁOߤކ*„%¨ÈÈNžLß‘Èq03Mä~<ŽS©6Ë+ ¹{ ¹ÀŒ°PÉ««»ÝD”/jà‘ì·®HN~ó/Àžä„§µÕr¾š«gˆóŽ•דƒíÝ9FÕ·¿;û(KóÞöø¯.ïl½«¯#‹Õ¯×˜a®\X¤Pvž[#Õ¶Iœ ¡•êìÚdàù±QªkRBdµ=Ôˆ††¦Towv¶ig!Îößg@ë¬oß2Tz\ánðh[‘Í'rtžß³¦Ê~8’ê L^4æ)Âë'Y6³MT>>>¯j³ÄÝýýß ¾ÔQûÃÅý½MÝû¨g¥×8ÉÑœ\›9z:PþÐÙi5NDÜàùûê]×Áìù̘Ôþl9¸½ ÷§ÛãéôŠ ž–yS Ê-½AViÙI,ÔŠ…‘DmIîâ¼¼¸ñqa#ÒÒÂIÎÎòvm¼+*jJKãbcç|?bð``äY¬v§^êó/5ÞëÞXüüÑBo¢[P®Ÿ.–à –M¸ëâ"‚‡çqc#ãDìýwÓW V›—ê.%»–—?ú3©uh¤´{›²8Z5Õß“4”Û02ÚõEÒcÀã%QPˆâQ˜›¸LOEÚ£aAAA%pºb£‚&ŠŒ•“»/RW?Ú1ð·JºhìTqtlÏ‘„F‚úøé«…Æus`7õv¬Hï@ ð}qA8©–>?…ÆslL¼ ýåJ«oMÍ;(d Ù•ÀÀ3` ùù³fçî« Éå *+*´Õ‘?}¢au?Ñ \P~ù‘ò·]\Ï ÎÜlù)'‡d}ΰ7ÌÒóßöû¼’’‡3¥>Iœð_X¤àŽ)kÜŸŸnÏ—›Cì‘°"¢ªòrý|-ޱÈY\ï*²²ˆ®Fô‡Øµõ²Üjˆ—¸ï2¾²Öe£YËwÌæÏ¦CFŽã\<áBëëZ‹Ã¸Óˆ˜|¦ >»4æVUÍ÷õ=)Ñ|^búïƒ׸bf·‡U€µ ]fóŒù!Ã{Àž‚1J‘T«Ã•ö "ÒÒN¿æâœôQ½y¨eIVûx1–—phèb½ª|AI;)Æ+=>[Z¼P²Ï…/ÈWùµÙ¥7žn›z Åë/˜ÚïxX\G† —ç¿°ýk\n)ƒºnž„ññÛÊõCö‹;.ÿÀ@~WjP$ñ”˜%½Ü[’Øyõj<öà„ÑqO½VÈÿÒÒ¼ÐP#ü( ZZä¢"UU;›,˜z·Gžhì›w‰Á‹÷7óÕiëÝÛ­‹Bìþ?þYÛDh/U(ª.&„I…Å)Å…I­p·åJS„úФ#8’"µ›–Ö6€ Ç÷ŠÛÚŠlqá)Ž®ÛèXM~«bþUNž‡ÀÝ*7¤¿bú½ûz|qÙÍ[²!V’Õ¾Qbñ0 ”””¸ÜŸv •õÉHlèÈßœ54qpð5HCZ& ¨ÔÝœWZ°’’œð¨¨â’Õ)¿M‡#BVÞ|Žk^N/A±|k `Uié|îõß» çMÙý=²ÕÄ×¢­=Ö²¦¦ÃÇ{“χˆ¨¨`D\«/G>HP©£;@ ‹‰e-Üvôjü~ЋHäKÒçÛºº„¬ÔôcèAüÀÆ%²œ÷ íÌWǾaíêðkŸœÜŒ¦ñóóó °3û1¬‘ò™Š7™“á÷úÈ $°­TXN®swœš?ŒHŒÞáÖ*=—ôaM\†¬±¢BM\ü·P .¡M|øC¶z'&Y}›‰ÝÔÔwvvv¾= ئ­ÊÇÛ»®¶ÖR9ïÕLí~H•Mð飙KïààÞ­µ–3[d¥OP@@½ý1ŽqÈ-©éóP òO>^‰eD¿R‰}þœ-ük4#ÃÀÊ •¥6ø+ÏܧO½kk\Xo(.vdz9£Ô8à`ao/rŵ³))Ý(¿ýÅëiNî„KGF¦ëeGšûçzÿÛ7ïŠü¼ª]†˜¸©¹™`LyF#¯XÅÁMø½½AÏw°*ÃâQ$TTœÖ[–H!_˜¿xi’ý'幞#BCk,Zç;;ËÎ+ [¢}þýûׯfE­ÆlbjꪡÝs©ÁPhZZ™ñ4.nrw.ÌÙÞ$yT±¶iÞ+f»ƒ™ÿ+ €ÌŸŸJrrlôõá¢p´ûÍAB†ó5ö‹ËþšªSeäËkKIáÀÁÌ*¡£ÃR¦ÞÝ‘99ùÏÍù×Õ½¼÷õ½Q‚²€TÉÑý²¶V,]†ÄâI.¥:½7öÇUƒIÈ{LÜÿ¢åyðzÎî^ÛÈÙŽg‰B½nùÎΞà¸û–Ãñ¬ ò¯_½ÓÓÕØónûS”¦¦¦„„™ÆÓEšÊ=:eÍÍÍþþþyy{æÍSKKEÙÙ>x¾þþBnÀ±°ý·,2`0žIYY9???™Õv|ã111!(,,,$d%›7´ôÿ³yëŠÍþèPÔ¿~Æ1€Ë)LP wVÙøµ. eÍUÂaB.NO¿†÷Îìòc‘’’ÜÌ–¿zްÀë™›E8Ö펚³ü»±qØŠÏTŽO.<ü]@•¤‡†Æ??Í;Ÿo¡'%122ÖI4¿‚ÌÀ«ù+¤¤¤tuow=ܺ’6¸ÖÛn‹é«¹ó ÞQq5Ç!êI&1[âsrr22^BÛN>~Ȥ$îtAÂÊÊÊəĢ´g|h¨%àþ L&-e\N‘oÈÚ॥‚Ãíƒ'oQ‘ÙK‚ÑÑk5Z_oÑ€q~„r<ÛŠ®:sïå±GÁ½½,')ÅÅÔÖ÷›ýÑÉ@ac'ÆÄ8œ¬´â<µÖwh°ºÞÙèémªWiv{¬s<×{!ÿ—³óój³Å:£É<„þdžÆîFçèÈdu`t!ïÄÔÕg‡‡5¯BÑÐ⬬¤º_A`¾¡>üšúo¥¯±yóiO<:øs ×ó1<æÑjbqkkkãSæ—/H~¼–VV´ÖîPÜaaa%ݧ§§www3]kkZ¨|¥o¿•ïíîÚr¾¶ß"­[|Å“*1”Äa¬¡ñ/!!0-§¾ÞYUŒ”‚€ =3Ó«UÃåáæT ׯ֖-9ß:\#":Z;D½ÙÍTCãwZŽ·wW­õöÜÜÜ—üÖÖtsÐ3{ßÚ èïr$ï±ý5Viî­¼Þpvåå'»CØZ–á[ö5PÍ~K 6ºs¹-Ôðuu´¸ww9õ+\¡acPÀÞÞ™Cö"0"/X_m÷± ûóçÕUKGGFF”sAQQ0žoɉ»û!aa6Ü?µúÅl ®÷Smm  žëí·¶¶ Qßë¾<_,’ìûw Á——ÁÁL)ŒGEEÅMÕ–ÞÿY àààˆËÅùýû‰@n_è9™”¬lçƒn_P9¨|éiiRRR Û±ááát¿Û­?~\} ×µÐxûó×—ÿéú•²^Y9ùââ°ù‚ƒù–È9"®…*ë«£`$]]`´Côôô1•ÜfffÛÔ¡‚߸õô²ââ0®nî•@#Æô éÍž#¤¦¦ GQÔÚìŽ&••‘A‚r<]ó G©ÎT*Õz{•: Jþ#”âÿµ¹Näø AHYs—‹¡òàÀä@0âÏŸ?eee?S«QPRª‚_Žž† ôË64˜ÄÇÏ's¬aoø0[`ZæË¾¿D[Rq=ÛøÅÇ×ypp0´½©iª ¢ú†¶ÇÀâ¦ùðç‘'sl89ÄΆ}¸oœ§ùPoÁuì÷+YEE‘"Y'­$ ÕÕÕÉÉêvvvjjjÑoÊÊʤ¤¥§‹TëN×p±5WÛ¼ö§ û{_^§××úG³337騍‹%šžÍ¤¶žáàà¬mm7«dTté" ¿>Z ÀuW҇GNNNH¨ ðiii‰ã1àÙüCVgÀgóÙ2BjjjŽÅÙÙÛ®§HÑênµ–ëüºÿ½Œ‹}6­ <&r‰˜ÌÝ:Ø`àNŒçA§wtvjò,¿;}­þàôu5ì=„ûÏðƒèÒÅ®tpâ¢$G#åöߨMÃ:äá£_g^ÞþùYÞ ÂXxÓÀ¹¹9" Œ„Œ ˜êððØìß«°¹ÿåËïíì‘ÝÝÞ†öê\@3YVVVÞÞÞ~„zýgåø8äpww—”’2LÐ!§OŸ–Ÿùâ8]Y?gí BEÍ€˜›ë¸;FÈÄT]ªÝ­EÜ|M‰f;ê§Oóóó£8æö±jy|ì:ý²n{®Ò8((YHHÈíñRž‰‰Éä¾@±´{ ¥ì°ÀÊ ¦÷S’¯ñ±—'œŸWÓ3Ê]:ö̑כªeNÀ‹ , ¢”½aä¶´õ 2TBhc=ìÿ%]lz‘QP¤¤@œbcÕøpt] f“>…¢¢^ýò¡ëæÔG±AB½Èâ½WÙÿ&ìÍÏ’’’!sh|üÀ  PFýÌ+[ƒñ@Þ“/Vë¼216V®6Ãþó(¹Öý¡ǃšÒFÆÞ+¶ÃWÄÂÌEw¡§^.rËlYjþîOë¾!ÄZ±µ¸µ iÕ€z×4>>¿¶bÁNSŠtÌü[¸PÍU{wl‰ØdN- éúe‚Ô1ÒÓËsÓÒN‰CÆ£ÉU~þô`Q™ššº=ijv66Îÿûªê#&õO¶FuÔÏŸ] ¶’¤mêßø§™/5ÐusuÕµÔ\UQQSSc¡œG._„÷²} †F{di‰GXP/PÛ÷/"¸¸¸Jööîç™L†+§ƒÊÉË#bÐÃ8;¥T;ÛMÚϽ‹²X8'X„óû™úçê´L3)ºUã"ÿ¿‚ÒôX$!ÍMJãñ¾=Š2þæáÖ;” òD ªFÆ”ËuE•«v…âgPqg€éæfæë7ÚÌTG†­(¦tNS×SŸAí:ñxM,“’šúÇô@8üCÑãâF.z±Š ––ÖÁE£öû ~¤{±$Žõ¹þw/PåÿûwC*íV\dì«Ðl]³ä¹&£,”—^¿ ~í’²m;¬ùÑèèU–×âåþñþÞÌég ™ÞùÀ¤ËÆËÎ?Cú¹?o Y¯gvì†[ZZÜt[à®zŽ~îÝëÛÎU‚ÆÖî¶u&Ñ#S«5hÀ !ÜYVöõe åäCÌ]æ¤{úÛcµæÈÔemy—”ð6x^x„d\œÞßš=Ü {œõð ¡ò: ´K`¿]ÓGxmJ§°Ä˜>oMƒ{‘Ù¹7™:¸ÔõûâÑì!ºäQ¼`/mRý¿;·Y•&Ç‘TàNöËꈮRæí(8ØŸ>rºéB½~MµìîåãNǸDcwÐ*žlu2ôÚçׯļ½»¿]þ D=§ÉÝöÙÍÏêç Cæ_É‹¿í®.6 Lè&5ÔŠÁ=6»… ƒÊâ­½ÈÁlî: ±þý§§äHHßC‘ss Kñ .÷⇆ÐFG•ÿ· ·SHxÿ#Ô¿•Îþþþînb..w@Öùr…?‘¾QS#rÿó÷_µT;ÁúÃí9&“Ù†ÜoPŸ*†>x=êî|¥—ÇËÍ×ççùyydÀÖÙæÇÇc*‹O €dçæçÏÏ΀¨²Új(/ù`ÿÔSC÷ ò»ªño@°X2ûíuDDØýõ4×)!Ì1ïoýˆh&paròþ5l¨AA_±l (Uë*¨í_Œ‡€P_{{:(¸7§-ׯ_g©6=T¥¤x»êÿ?mŒ9`# ÉÒŠ¤Vo Ä`0š-Ó 'mcƒë·Ø d“ŽDõR“*µëƒ( R‹¼~dæºáÛ½Òºæ@üš=+/ï·f‰¯oŠ;BÛ/pîâ;í®À]»Ý†œœ`Jvöö‚±Ùì–›\AµqàJpäFÒÔ¼ùº¶;­N¬Òü´zsºý™Êáºéú÷ö›©Båeóf‡Süø¡™Ï/‰:8<ÜßÛ;kÕZ¸%X’@ªG˜¨·Zo?]s%??XΖ¤º½y#¡ºXCâiÿ¾ullÛU±¸Náo¦¯ŸßÁÂ.Úåׯ¸Ç@²B‘:©ðñ{GO¿yýt¿µJ÷é&ŠFMVz<-ŠË~×ÎÏ -uˉN?.=½ÚÝÙ?ÍAÿåqò5‰‘””ØOOörÅM,æI¢¼æuuB/ù(ÈÊR”´ü¾DÚò\c±ÚXéòâ¢H­Ñi½ Þ$=;;»®ÎÉÍÓï¡¢ìu2‹…ÆPµ¹×pÒÇS„×àÌl¯ê>Sfꀂ 2.¦¶·¡ïdCXqd` l÷A9û:CÀ8-&&ö 9·ßlfmTõê`•¦Å+6¶.>~2•çcpp–ç;Øcp¾õ×§´~i«íâü!S®=Ñ?þµ³}\žœ|ÿþekx¿É2§ñZG:7÷±« Ñåuíׯ_M;´lXÉðÛ0«ÕËÉbEÌMð2f,Ï --K³²ˆò:Q>#›¯õ? 0ɼi!¿iþklz8SsºT®ß!¯wsËg½¸ü±%ÝÈ(nU¢ ¨êÚ3W)-–è´º¦5{———––dˆÉà•õߎN†Ì ~_ßE¹°G®×K°ÂB•ÕÛ)$™êâáôÈŸ°çJ§9tuˆ|Œ++3ÿõ¢“a =‘SÿM“!«Œ*L“"'bmÜ%Fì×16¾?‡…]=‚ó#†Ça’ BÚ›Kñ¹Òü¬…í5äM÷6¡ 7÷àÙæ4yüÑÂi,ó(К;=C¥½ÍÈËv¢Ê‡Çlo÷ùÆûÑÉüþ»›?b©\™ª,Œ’³3ïzûf`ˆ2 Z§ìb¢£ ó÷“Õ¡/ë ¼à¨ÝnNªším ¡»M—°lr{ÃÏ;;xfÎ÷§=Èåµ’¸äR¾òx›ÞØØ½»C‚Àü=¨«g°ÿ¿-77ÈïÞ"é 2 þ·!¦;p4<2ëäTqíåV“xrÓõ¾’çíäaMM¿ÊJÆ©)Ö££©¢"ÀO'Co!æ(kël?ÒÒÇŽ Œjlc³¶$@Å7…%«s¸=„Ê39ºž˜ùùúx9™Ë÷9ËóX“|ÙÍÖóÃå.bÕòi®Rw<;~5Q÷÷—í>óÕ\îbaÈÉóV³e~üüy¬O]A­††™Ôj&_Z¬µµ‘ËA)*¼{G‚ÞqÜÞÛÛº¿^7[¸‘›úîö`AM=N7ÀÇçn÷µ"**øâBª áþŒ°:/O‘—×aæ»nAÓô©úí÷('X¬‰/K°ηI',×/8ØùYØ”…ÚØ0 ì~\Ą̂|Ô*®;ã,Öâ 'ÿ^jžÉÒÒÑÌÌÝõ¾*äÞ¼ð/²äÔ€u­=§ûë¹ù0ÃaAÉ˺£­Á1[[qjjU88é ÷¼™c””×wwbŠõv}-ÁÿB%]ùù×®e÷öxœqóß¼ÑNK‹ŒÔ!QªsJòyéºß‘‘cúu ã—2SQq}Mý-’%(“CÓý²AÁ–êwý•‘ŽÎœ'4¬ù’Žà/ø8ÆA“%öxXožh1È¢p È˲[= zl•í¾ˆº:4˜¹§‹tË;ý·o‰kžÓµHV¡Š£-P\]uë W±;M¼9¦psœURjëìÔºµbcü„3:º»´$Ïé¶pKG‡INŽÙØP41A¿\W™w, ûþ½ÑÑÂíUe¥¹Ä~ÇÙ²„·¬‰¡áçËýR¬‰£Ž}™AAT­ëˆ‘‘A?ö~üøëôô6/ï %µÂ÷¹‰ˆyâ*H áMáßþÁB¥ª%UÕýLáæ@Ìì %ªÁÄŸÜ#®cgØK´Áâ©Q¯ÿÀ<:||Åõ|33¹–˜Iáã0Á; N‘u6»•ÔêvÆnˆÊê)$NwýÒÙjww¬À~C® *}|Üá>~ %@M¼³¥×ùÇýßÐKÖ22ðÉ"‹ (´5S½"­Óùw? ã}ù½ÉÊj@C£ˆˆó­Á!ÿ`Ç`o•ÆèLg=Y]âÖ†HˆÔ5S¹¿šÈ–|}h­Ú´€pÌüïæn ?È—„†>\ìÆ™˜v e§—–~Nþ C±µoÌjCâé_˜kÈe³3ÇÐåííjÊÖEF±¾5x01QÇíÉkbab kddÒÙÝÕÅ/ àãÚ½(ÒT¤l¿ý¿MëñPÊâ!çífª7·‹TTEppçú‡šÇ‹÷e¶Æ= µSÝ!Îw{ì,69 JÝouÙó÷š ŒÓ3²¢¾wïf¼ßpÏVQR2‚ÇèØЏáá™üõë),ìÛ¾>Ú¡¡(**´t8HQË9¡Š°p÷Þ$À¾F‹Vç9z5Õ?'XæÇýþþ´úCl=Ééê&÷dlLaÿà!js ‰/ìf O~ï€ÌÀŠù+ò Í|þ ²Ðf2ïW<#‹_€õ…ëd¢¾7"ñÃi7¾XR¬ræãPâðÛ· 3…ÒߥsôÝܪµµÊÒÒªVlÍ?0Ø=ÞùœYay/²îï¤ÄÆ/•é¾cã,p¹¦2žÌÛŠR’/¢8¬œýXÿ¦XÕY]q–ÙíáäùA–Ãꃖgd¤(¯µb„·w‘4ü˜(üb`àá„;žL0¾äÔÔ(88Ì“¯€a³ŸÚÁÊ«-•èüÒ=Â$Evüªç`V_ xb®yþïñG6ÝØ˜`.š à<$Pid³´¡g GBÛê¨Í":óC¡öðÐêƶ»Èé>Y…BH¨hi‰YïNþè}jÊä±(p±Âí㛿/h~lIÀo°ãc\Ye'o'¤¬¼:”(›à2<ˆeª.'Ã|É€šZÙe™Ó=©ÌJWâg›ÕÎ2à˜ÙµÎhŸ¡u¶Æ‘qsâðÒÒ¹Ÿ©¥Ì–Ÿ.ž\«‚ƒ×Òø´Ñ(1Ö+ºÚÚæjjØM©Xjc~¦öö )(ᛚÒÙˆÔn¼âÕ²üi` åêš_YY_Ï ýÖÃÏG¸Æ|Ùßí‘ABÒòd0žü~lö-Ž~×þóçþ ÌìÄÂ1™k›Ÿ?‹?‹‰±ÊÐtf]$Á@ÃÜœ„œ¼·ô ‰?§Ã?‹š’’‘¡D*Kª Їÿ-•êD.þð²Óóä$#%e&0ÐÊÚZ1Dò|+(,Ü“aüY@J*46‘MU®°l»e·¯‡ãõ¢)-íã²f5ÝŠª‹'_1Í[)Éò.ÏêDˆ¤—T ‹‹Ρzsë,×ÛÕ èï* õÈåç‚02ïÏ}ÑeÈ8Ò)¨¨p1Óû‡Šx%#~üÃæPBÄL//Y;™€ŒPË=Îøúfd‹û}x×>44Ò®ýöº…¦A©Ã=imÛÞùÂ`±?Ú=2ý&òNo£ÇõeŸFÁʘ3µ!=¿–·ŽŽ“ )a&¯ŠÊDÿçü ôâ¡þü¥¦ÇVÄÙ´ ÅFgÆ£ær84•ˆ0ŒÙjZÚÏ×Úß¿ŒgÅ–¦¯£‰ßŸ÷Ð髺k:¸ €óYd%'ÝÚr¶;²¹½œ>5áÝFøÇÑQ¶Ú¬ƒE*€°ÛÄp^ôÃ{§äPIïA\;ûꨬŽ0Ï猬¬« |“À# 8ëêä$%5986GÓmKïw4ú§Œð›]bïV¸Ûî¯gËÊÂLÍcbb³ºýê•x”ÅŸ?4÷W^T*ÌW;’ˆ ©0+Z3%…!NNkŒ… èf¤L(vAê¶¶ìLMß\1²±ñ4pÊ…“~¦jàtfì뼜)u,p¸ ?ZYn`a&5äªliE»®w{turš=$.Žé’l‰øîjÉŠÖ¯_‹ùòñ KÚ¿A|•ê¯ä´Ö8 «–Q‰¤]\Ì\b¬oÏŠЧÉÄúþˆâ >c#ÅñÜD® d= ]ZqöËçèçgm›NllzttX‚ÉÑôKþg\çmô‘ޱËSøWP¹2’¤d9$¹¾Ÿ¸Q¹aR~kµzà96’“Eåϼ %ÂOAåkTxõvW6ÁC*³ºÂ•ëÀõÜb—°×,ìÖÕC×~kxH‡N8ÖÚfcrR·³È ˜¡buxIÉXñ$—Ç«Ãé¿°Úô&¦¶››£So!ß‘ÐèV5¾p:Ò.ô“oÝXÒmñN@ _CIÊÊœ™ÐÑS“¹³cTQ¯‡¹fooe_¿n°Þc —Q+ù±÷×qUuýú(ŒRÒ"ÝÝÝ)%ÝÝH7¨„t7ÒÒ­tw§ˆtwÃè}?µïgïgÿÎyÿ8ïûÎÊZsŽ9Æw|ãú^×r­¥.ÓØ·SI‡Á‘¬!ܹó=–Å2‚ð®Þ§ñqq²±&ƒÅ_*píh¨×|ØWSùäDZ‡vvM¶·åVTú} Æj Ó*”.eìö*‰ˆøy¾ß‡ ;k15˜Ê § :LÀÂZÍç¹Õž²G޾uwûˆHbªt.)Ùb¸æpùïßÛ?û=£Qüöý©j ‚’RtŒRÈņ)Q<%%š/§CÍ8dýኘ‘¸¸­­¾£#j’µõçGÅÖ­’¤x»¸mm^«’'låìq³³˜ÀðŒ Ú 9Q)!33-Y°Å©Rab5yùÞá×3_ùåål1aÀºÂù¼‰ÛÆ•vwÔž’^ ú÷N–ð::©?hút3|m-ìà€™¯…NMm5šLªX»¤Â8ôÙºÖǰÁ™²oÛ7®­õŽö¢£²Vüü‚¯‡§ø¼Õ¶¶%5påEV§{¢×ÚÈ¿òX‚09ïu|â"Ãר³šƒ¬¯ ':8 q½>KÎÎ.ûôiñêôj¥SϹêv]ÎB]ýáËÔÕÕÌÍ)¢VÔÔDµ´ÞDùûSÛ^ëB‘s²³oN‡!¦p(ÂB•`P)1 6<…†ŽcX' ¾Of›qÞÿÌÄšêW!¦¨ªÊc“:7WsmÜ=ÔïuýŠ^H!Šèù–ÿ£@a@À=õc|}Ë’“sÞ½C r[?ݦÛoo_yÙߨ…‡’§©ªJ)ÎÀøÃ4o>–ÊÆzþ£×•CÃ罈>!G™hr""aBÓR 6“íå!Ã:­­ ZZå–Ò|v4míÔ™[—>dÔÖ®®”†UV:`ãédž¦wt°˜™ýúÉn&A5êOÁÁ‰Ÿ0ba6?‰‰tðÃTøøÙ) Ë šŸÂÐjqŽõJ&¤B°~`‘®=sÊÌÊrÖ×/¯9õôÄtùòx:y||ƒêNV’sÐW)¿é $?+ ëš$6·N &>76 ;ë;¦]a¯Ti³¥ˆåÇÇeÙ¹èf›=ŸÍª?yúïð<<kíê¼ÂBFÆ—ŒŒ<ªêêãíÂF§æøFF¢«¢ Oledð·'yºûŠNΗ23ˆ‚Aˆ!®.¦&Ïà ¬CúŠU5æP tPð?ŸíÖøû³ÂÁ=~üJHȈTlÑj}¨V\õ‹ag"S}CF>ÕõŒ]pØbpuQt¼Ês¼écuXõ`L™®Á7B¢@7Õy\²èéÝ™ i^é`ÞOí’Jš–Í•PÑÐ|ª0Æw´ *$8ΪDÃ3ŽVùì Ì¤’B°o°w`ÀÈ8·Y¯­qs,çùìË3só¡î‹ÀûÀÀŽÐP+€K€c~äÈ+*úŠ*'^MBWÊÀÎ^W\, ʶW²¯WRLÒ>ãâ«î‚oQ‰UyU“†âØÍÅ!kœûÇÇÓ±?2›˜ÜùÒw‚ØùUý•À{t.GÊ”€€ëƒåUrL\JftؚŖ%>+)^ ”Rhý4q‰@Àr>ëðÅ b¢+Ñéx Œ*߸ –’Z×É5ONUdƒMõ¸Ÿq÷t³ÓPûêë+#geå*7„(ݽ<2>~wb¯"mfö)¨·]&y-1Ù¢,óe°`˜õ%ËFTTPEE_Á¸·}f~¾ôðˆüðhÔc÷Ê„Xx22¬_’€€<@ïÌÍ{ÕÔÌJÕs¾Qjë@@´Ö©(OT,T³þˆ&›ûù³}8î1Ä?ÿM"Sd]Ýúæ¨zi,ÄÚ€¢f¥)çY‹l³çµãw~[QÑÄîÞ=&u:|¯¤*¶^{N˜Z< =! øî\hè®ýš´ž™½Ñ°h®ÍÜšûé–9..þ¬qäÍÚ@‹q ¨œœ¸mšãŠaŽÛ/øQ~n7)}„̼µHÔ4–íéÕ>VìC›õu•™éùÈ$ØéÖþHÐA=:äåM»¿1ÓjtñÏÊzäN’“_h.üž -Ø-.cl°ö-Š‹ãžUßx¢ß_öºóFO(§5™•'$¸/W‹óU:ƒ¦Ú‚ÔXhzzûc˜÷LLC°O™Ú¶Y°½în ì`Ð2_„0:¼«®‹Œé´f£Fu$¦ qYWR"Í/iµ #?Koläåæf!$ÌÈÎ\°w\)–¸Sý‘ÈÕ\¸óm•~2DDÍß¿ïZ›>)Câmò¼¶Š0£!Zl¹¿ÛVi›.ÏZüT% ñ!/;û¬;r8œÀ[UÝ<•]Ï•XöƒáH¦há¼Îƒ¨VD¹&žî×3;•(ÔÅ^G$‡‡+¾þþÕòYµC©Ueå#z-)´NNç.®u€÷dÐüäSRf™™]´2ÛD€·4JòòŠ-Ý¥Õƒ®¨XE£ÙŸÒc=œÄÉÈØ‹bOKQ€M!ÄæyåÒž26"¯›Îô¤§ÿ` fœºÎRa…‰y¡±Y‡1‚mdäštíR .5Íáñ±¿¯% +Ç[bjšjâÖªR´|%v®¼¨ˆˆ×â9­ª ÝŠ‹“ôÞ^t)I'|{HüÎjþÍT©˜»[gvnª¡”@‹ 7»ø*j3ÝOdë>fŠ£b)*²ˆu02¼Ÿ2Ý/62=›iw³ßb¥R2ʯ!å¼µ¥niµ?1Î Í!ó‰20Èÿ7k±ÙŸÞ_ò.Ê—®¬I“!4e š€§Œ‰›é¯KI‡÷›e! ª®æn¸[Ù$–çõê ‘ö¾dŒ–ÌÁÁ&«N} ]†8͸lnžç«Aà_ÿ1øÃ­ DÈï{Ð êÓ ó¬»Ô>£~ý~yS÷ý`9âèèjw«¾çËXŠ«kÓç½ç::]Á&é%~ï^“ÓéÀ×çú•UŒ”0Ëœ+±˜ÄDCÃhß‹W©³[ …~š»PW‡x&6 û‘ÏíDÍxíùÚO¤ç”â=i™™[éé»{þý7››ÏÑ^¤v Yå4¹V}»Ë '±™ùñ¥LYQÉŠãþ}Œ32ìG‹—8Ï@µªN<›™ #óÉ×7¢p‹ä{z–xˆ›­íh‘Š Âö¹€˜Q½Éo· !ú¡nj|ÜÚȱô˜&¬êÈ2NñÍ]@ÃäÒ¼c!’’¹ÆÇIšÂ>UûŽ€pvö¾ÝO kLÆ|©=óYË  M/Ñr8Å®TÇ[±fA³WÓ]Èó•Dê—|-[›cÙ]áhêêœ!¡&3sC/DwK ºR¯¯½áæsóØ8¿³•’–>ØÓ‚©ôC€G üâX$'ÝL6d§€ÆàýƉ˜p6è³\ úkÒ‰ŽÛkꪦúK”ÆPZøZEAcxAAQ–(7á˜Mùy ± ËàzIñ"Å««šT””Ð0«?4±ìOüЊF ‚ý9câÕ®†Èà '5zJ¯¹š º¢d’²â2¨ÏUqy¹Õþ¢.놽 ä^³ËõYò‡&7ÏPÆÐH`i˜™¡ýõ„„VõLü#ƒñ]z•í²ƒµõàí,t”ƒtíÇ'»sžáøuŽÛkçHßU#ÚIÊË]ÓxWYY[P}¾Ü^Ç—»µk­\ÓE¼·R:;‡ã‘9Qzb˜½ÜõøŸ+.½:‹™¥ @ Ÿúùî m÷ õ™nqåÐЇ,*¥“F‚©çAAWÊEÜ¡hð³´Ô![ÓMv÷wyT*Ú&Æ©ÏY‚p­hÚ|3êëŸ4z}Ú]¯qÄC0bÛÄPߘ½ÁûÙ¾ÆU(à«YXÔ÷>ü‘™©©û!ñKvv Ž:aAAÓxEEe||èJÇGªèÒµ­,{³³[©|rºvSHÙYbb”ðТ±p“ã/£ic!bb>±ë[‰éHÎåuCwÞTˆIHˆHÆ}TñM¶}8#LN€œNµM([g2¤@޾5šÃtý6—('úævenî^fgÐN .?¿€ìl[Ýt´¢qKf–[ WŽ•~!°ð~[?~àZÙoñSþòam]åòÊ A:ýu~n®¹F -„ùÕ#‰·‰1J) ª)1JóÃä„_‹Š©³²²Ò³^–æ¼ê2s/ tuõtq¡Œâ•ü“ùÇÅBëú|³DÛë —´·¿<ưYÒžbჂà׌__ß (; Œœˆ]+7·h±»°×z÷~OßLNÎ:Dö¢¢#½@  (ptÒ®4èBÕÖ~ã90 N÷ð,6ͱyrŠ—1Ó à//›57§UTPåJGÖ¯V!j³3=‚UUéàï—suÝeb|g˜ ò`"R²IÌ{‡+%ÓKÞG@”TŸ™ýIF²#Äch4^x^* `׆ú±Î£5lc¾†xºs‡¨m{;q{fßPé{=Õ7N)€&+ø ‘o’õí[ž^Áéi  •ÀuqqI_!žœ +ÊÔööŠ*ŽmG“†""Ì?Á ƒ¨*‚:X²¹M`È:=½Wó ×Iª\¿rlP.R-Fpš‹¥²il2XïOü±&šÀ­i%’ðØy¦b(1©Ÿ£Õã%6Ì÷;îXáÌMŠƒ#»®.¬(qt¥yë&UU+½·ö³Ìf:KØá²ž×·@3V|,ãÇ ~ëprwUuЃFÆR%aÚ÷'0PD[»t÷ÀsÓŸµ¸p-cðIXX¥ý FK FB5ANÙ1*,Œ›œb‹uu¥k¾»û$žŽ©@©ðÝ;ÔwéÐŒ¹Wï]I55pÞC D‰‡Y-¤šÆñ r:µ™ò66ù`*ß³_=ì¸ÈÏýÔ8 ¸&(@Fø’¤qb ¶µy^ØQQÅ0€N“‘ÑØ%ð5ÂôAµI6ºŸ ‰ˆð@ t…9Ù&4èµqïŒÏ\Ÿíb†!c5š%–\vƒôvæKÑX^x‹›#Ë¬àÆ“@á™ÊM=}ýñkº¸»z÷˜hs3 é )¡¬×‰°²{¨4‰ï¾µÂ„¶ø‹;Œc}ýw”šd_ß×ââðö£²H••_&Šö76e¼tyXKjA‚rØBCYª•éâÉ/!c¶P³Ôr„´8˜ ]E¾u}¾ÄÃcðãÇ‘‘Q ¦#­þ„2§|É?ZÈŠAŠÕiÁÉÌdLã¾¢­­3!Ñlzv«·¯Â°D bA/ n}ùpráVY7}l¾NuHú+5:< Ùºw,ÄKJ}ýÎhNï‡b(~ºÙ¹Àh2‚ƒÓ…FC¸IçÂÊ´ÈôâçL:µº9…½nû-òz‡úÎ44uÁX% /›]ÍÀ ³<ÍIIIÈÉYKbqË_ìí¿©s;Õr<•ÐÖÆeÀî]]><[l 73Ë›¶Á˜›­¬iÑQRÂÇ\£$#ó¯NYV´û‚…°¹dw '½z·ÌÌzOˆ?YZYIJ ÍÌ6ÑQŒ GLŒFMMÄN G ¡|ÑxIÊ$ CöF… h”Êþ–2´~hãÛ4ÞÛ²šï­˜ËÎÐcì,Ÿ[rª"¡# §"¨2ÝoÌDDè_|ÙX¥“Èémq;Ñ8DASæÅ›­3 ÷ð«~ÿZÚÂ@ò>£¬Þ˜üNæÜDéM>üW‚ޝ_ëëê \§p(¾êë¥ÔiºúÔ e³/£Zñ‘®¨H®Þ¡ÇŠ!#'g¬wë••”K-ÕVç ìæ/ê¼ÐrOA–§¤­ÅÔ`yÙ0ÔY§8@q>/%RR̼ì’W@|WV"ÝØ ߨ¢û0"£ÃŸöÅ¿ÿþ=[¥ô èãökÒD(•oŠ_¯®Ã …£éÕÂ&m og2—mäªÏ§  vÓÒT¤¤¿ò¿ÝMTÌ“dÔ‘SSÓ23Ó²·‡ñ´²Þ›n`3=·~ùêÅÏR;;}@t› ›ÉiJ¸ìHNÚ4¥¤ÐÈú‡%w×ß\M¤gµµúÅ>–«I.)YünŸ;"iÓѱ*% ¯¡nÎÁÞ/b,-+ë:€/"BÁ×20Ý#¯¦¤”Uê}·©HæéY}ºus9Vo (üå1þN9±Ø¢©¯/ÉñÑ•ÏJK•=>gØpÏŸv€ ™YUÚº?ÒL+eÞIâ߃¡àä$#!¹l ؇„lô§òËh§x#§ý¤¯…Ù&èœÉññ\Üót\°³5^A¨Í¼•Š#§Ó*,.*òùÌ×t9'gCi‹l*õ3\÷‰nWï…3/.<šm—s*+ó““_áÒA=õëƒ[npžÊ B;)†d‹êf AÚí‰.ýCÜî£QŸv¤k¾w³çµ‘½I/:_ ö ¡Ûî,2AgnÎ'ý»]Òo¶„d÷p¼žõø\gǰfææÞWÌ=cL¹ÅŲ‹##±jŸ++rsbA¼"Åô¾U&‰2›[wpø™X iñ—RãqÐs;Xæe]ìÅ/dE ££ÅøŒtñ<†jtátÊ J^(@0\›—š›ûb yH‹^å…átÜ.ôµ^×g~Ÿ?ûïÔÄû'^\zrxݸ¯=WzïÈ ¨¨(&,œ>´ž’T øª¤¤jwÇx¬Ï^X^»eP0ŵê=æ1Sµ÷ýÝ\çÚÙÏÔææärúá`L­Ñ1EvïTŸjE c'! ‰Ù%o&.?*Å‚ƒõ¡Ë»»CyùD}ý÷PïÏü¯Š_0±4RS»ŸD»¿ª*+(’–~­¥õFLL[C#Õ "ã窲¨h. ¨ ÔÔÌÔÔ6ÅÅa3Jž~åÇ6mÕª?Ùš,q–K³žšPÖ}éw !*n`0ןØEŽn^ê}»žÖÄd¸’ßpMúª¿ïBP…i<¸Ïp’¾ö„دS ¼_‹›žÎ-tŒ ˆ… 9¿NÆ}LÌø(nÏ$U•©÷ì« j0t¥£ka••¦ü_1žnb¢+áb×úù×÷§<+xÝrôøÁ äÅ&-P·ÝÅ¢gÞ´êÌ êPu êuï³³ÔÖÞ\]MŽd‰™™vO€¨£ÓkCEí½.°µ³{+.nçâ¢na‘—››{V¨Œc¹²÷ÄÁOžTSIimm |~¡ÄÊê{„×C õkwyMËýæXxê›ùl‰TÔ0F¯·×i²©h«÷G«äh‚9­ e“Éú§òZ5{ÔQ¢ÅØÂnO¹? üõ`4¾®„Ö5bá?@rû5vådÍ•xGX]}¼ÖŸ¯yó†ÓÉÉ­¿Gãâx7™ ¤U:!Å3Ò“i*•ÏgÇ×QQvQ·;‰Íâ²´Õåuæ… (pª™mL¯ù ŽIåâT›Ô»½XÏZvT± éDõõG¦JEø¼ï ‡’óògÍz9$ïÜ\‡vüÔûé65wjßðëDþaõZ[Î':‘ý…¤k¿|©Ï‘¢KN¶Ð¬…øbgÏ©EõÈÐ$Þþm†"œîO_¿œúÚ çàœŸËßêqöf Ú7 ô½¦g²^ëZ[7†††54°@ ÌÌ`À ?11Š-Õ`;ÿ.€vÚ,,œÍÁu—›ŠŽer¯Šn\¿p•÷å 3sâQ`#‹²ÁÉ›­ÂÂ\ ª«ž@sdÄî{}{|¼F‘ÊQ»8ò#Íû >~S•†ËÅ|e}Dq±_ ÝPjŽíÛeм&K§Ò ¸g3§S¢¢fKu‚QQáÑЂƒƒ-\hŒžkiA{ÞÔ×Gûù §#!"ZÑiBÁ½"‹‰_¢šal^X˜ÅÄo;_aBqsÓØW.z¨æwGŠ—(]UV;3:ú ãK\¯••™µŸ÷ÆîšzPYø§’/óš>å{Tf}߽ȓƒyþ‰Í•ltt4;‚–ÞÖ(Z •U« ó°„p^n쾘kYò -Ê ´f³Ù¯Ý_ºwlÐk—âŸS<ÙR^Ûñ´ —mÐÀTbãáëôÜ^÷j´ºr0žJ½DêGÇÞòòçÙÙ#é=Ç÷¢vá¹Ý'õÛžx?a’äÅ«ô‡Ä&X¬ºnb;TaQr‹ÍÍU9o3=Û9–5h¥ ŽL¥fe}%Ê!ìíÛnkS| ‰*)id‹´ŒrIq¥û‚—4ITllxU•c}-5¯íW(%’Vê¶åùyíÅ–{Js¶ãèGĬ¬C-ÕÕ~iië×çÇžVŠ›E¨>_2‰¹¦±iiïž=Û4d„¾Äz0{©eihXVC3ž¦A]]]Šô·-°Ë>0þ»m-ÙuUÓ/dÑ«ÓuÇoåå Ò¾?:¢Lã“ëX©;ÛcÕÀÂ矷ÎÈ  GÀÅ¡4¨æ~«¬l .þ¥t?>ïž°H[JJæ †€¹¹¹NÙ€¼üÀJ—Æs-RZÚ{À0¨”žÙôwËË¥‘¾z…¿Þ?1zº=O×rv2¯kØþ̈è°ÆF}–AT Œ²êIµk¤€¼nRï»ÊÜìÂ*ø/_zëjm+K.@ RtåC@’Ez*URj31ÃÄ¢\Q9¾SÆNIillƒí_[kûSºÁÞ?¸ÙÕÄ}òµ£ K]c©ÙeÞò2'WX ÒÌ“³ÄàÔEo§9ƒjTˆ×ó½¹ÙªT”“}1ÿd\ïa;²<¿íHI¿©Òó›“M˜@áM·”à§Îßí°â;B¶q †»Â뜜Î?}º=–“ÕÖ~…JÀGJ±É>[ï/§¨è.,\_ã¼s¾ßò,¸{^óñKŠÓëwk1î·œÁiiΫ’Uˆ¸'yryÞäê@îŒåä’zzš7Úä‰#æëæÞ%€Âl6ʸÎð0ºÁJ"™\Óg±û×Ýcy߾ͱ0ŽL¶’ü#M+”T¸‘¼qëüà¯÷àýMÝ÷¾øÀìå³j«ªVׇT’ø¼“¾¹œyñHþտψSœn7-6]Ëf¼&„ý±üMJ"ðâÚF ‡„.Ý{ìõ%—ò†¸¸ù0Û›¤"vöÞ6skJJ2Ç÷ß?¥`¾à®m, MˆR8âã°Y4Œ7¨N&Š. ¤ìÂÁ™ÐyË>?UÚ…twØêÏfÓ¼]•ðˆoh}Hìuó×Ef–ª×èÛWsé~dZZZÊØ ÷!EI¶€ö¾gb›RmpBÊÝAŽúõ^aïû‹ÑQÎv¨ª²álÇf昔¼D]ðìÙg wMûôXýü&äRI®®»jjÐBC†¥)Ú—¿Ò§Do¯t͇ØGGõnõ'2¯S=DZLfÞþ󽔿½åoó‡Ò¼…¢›šV¶¶Ôë›ØEï¶…⸸>L °¡ Ž1­l ¿ÆBš0VRçâº&#Ã:ߺù¶l ‚L§ÁÚ÷•?ò±Õiv¶>S. Ôò¡¦É j±_¼þêO¥bÕC¶Hñ½•ÇðB(H[4Ÿ1è))·Öì·wHί, ‰ÐÞ6ømpð} \m|w’¯ûzåó%цiº›[g û³jÏëL¡iM- «"{”hiSN“X^.PØ^9\´¼&®›jqs™VS·Óh-,ì\í»‹F{Š0ß™¤¡ÁpXÞ¾{›»¤ä“N3ºÇMÂõ²µ„DIvöÁ£ ii%ã¡ÔÖÏ¥%ñt÷\–rÚUç<š„ G}žØìîüÚ„,0®2 WS³¶å¾zµß­ ê}qŽãÕùþîñqNI‡ŽŽ4þþ{UU4•(opæç] M³³…ONH÷—ZJð6,û“ÙfpÙxwNgÈihˆÕfÐ]NsóéhŽ —õs¾æ![£öB× zV¶xÏyëÇ£4Ò1üÃ[|NššÚ22}€0Þ²á¢ÇÔÚè ïÌDóyÓ^Ü{”E|„õl=|FúŠÏuˆ‘<¸®P6åÇ>/’Р溺–j\;@Ý*«Òáv1èè¼V%ÅÄ>4y¯¬Ì’”躳ÔÒß*ÝCÌDÀG©ÓÜÿ1¨÷ælwjº<+4ÄxfvËÌüËÄäÀÑ‘›ÖÓí4´ ·×–Ò[%<ŒÝµ2¹T<=4++a@#sÅëæÊʃwDºß.%\’(²»éj ¥¶ö ±Ñ%Œ†(´myk[€$.•‘oïˆhÙQõ-Ü[ÒÓ“ßÁ¶®²ãAµEø@„‡…½÷ó[;Û L)Ÿ®²Ø1ÃÛ€5‚˼&ooÏLÕ1|ÿÞCÜÿ˜‚¢€…íüc`OÛòCwÛv4^¢RYÜ™¿d§¥õÉÜŒ§+]lš1"N6ÂØÂx&$´ :KN¶pVæëE¬ç‰#³³ùäLxm¬¬Î£ÍÎI\]Ý’Ð$p(æ&‹5ê(#DªØcXøîݨ8TWçZ^nœÓÓ±ÕµN*ò—Wœv¹á¤¥M;ž³Õ`¡ø&ó$Û !DPX™°¹ŸlÈòñâÅ>hê.€DoT×;ï%³©•jÁÁ¼§'ï$"%ew?‹yø—9us@DÚÛoj½x8YYuälç<ž¹»vxݪÁ£ø/ûûW“É¡²°¬òã(g|ÀÚÛ1JËkv¯)Më‡õêU¾àÑ=lbl±1¢ù!qkZ´½5ý§F˜»®œyaûxÁiT”UˆiK¶pm£&ì{B<¤µ•¬ANðð¨~¾!!›º4GâáÐH5›Übáðõð(1œlB{^EÞUtÇE¡JÈðôxðPP¼:;CV×àê6,,£×4I¯sXW3ç^rΓöÇÖçÏ-¬tÛÑPáKJöO$¾®Ôñzræ§òZúaÑ66ºŸ¨Ðáaa…¥yÏÕ¸¹Œ·›=ˆ[úŸwž0ažZÓ³kCùùÒ D+¢ž$ö؉ÒÊ*|ò*S(H0%:|ûý‰Êß8íÅ%(xÞþpUVVt8Ñ~SùÃiQK[{ñTܼÐÐËÙ†®J»Óñºu9}sÌ¢+l×°Vòëý‡®•…ùùŸ?šŠ‰š·ædÇ$$.Ôz-T߽͓K›žVUS ͦƒXñÑÓt­#Œì!µìÑ,)‰9súR{q‡D\Žõxg¡ÁóCÏÆÀç•ÅivIÕ„m#u¹ |VV󂂨/†"h¯~¬¥ÁÁÁ9”bôd‚Ž€ó\ hÓmó Iø¼œOú_¢TJ¿T[g¼Ö¥Œ…@ÁÂÚ[“qgbý#"ÂpÖš & ®·×AjóÛB¿>OÞõŸJÒŸ(ͬJ¬,ŠØŒûMMLZ°è#”ˆçç5™ŒCÎÏ—f™ÈëÓÓÝf¾Xìî ÿ¬vö €±ÑMÿ¹^ã:=;¿ ³Ð|Û\qìMЇp|<×h:r¢WÓcŒÇzub¦ Ü.ûÚ Nô÷[ouuííʩݯgNOKde›+MX¹ï‰zî¼Ïi+èÉD=<=mlêâ:ËlF@ G%èÓ¶|@R6EœKA±miqP(Çé^Œ=¿.€b†”DøWÐðððÐÑ ­¬d¸‰Ñ>WD7º¾‚†ô¨¹'"‡[ç ¼VW°8 s%KkõÃßýŒxS2Š-퀉í< ¢Âÿ´(4䳃C„é»W¨¨‚››y‰$   XiR ¯oȨ© P”óÊÆ†on\ c‡n? &fÔÇçâãGfJ VÖT ŒØ™‰ÛŽÐø·£v³^t¸YÔ@F罺  /^$¹TK\'öÕXªRîÅC !BÏvp´-,á…Õ*Öö@_ÖnšEŒÚqÎÉú€þ"um嘃§É²Õ—¡Å›Í)´è f–UO|ú"2J[uaÂùzÛwº&l¸V4BÚ™à Ts×]Bɳ¥Õ6d#xšNÕØ86àÑÔ¼—V“} _z¡S4Íi "šLj¾¹©z›85qÆOÇîçL š=‚óN+44KR’ÝþÒ~øGÛªêÉ'g÷`í¦zNšÝñ@4ch艧ôÈž@"ú>½0Šd÷v9Ž:±§«k Ãoût•dãÁòp*\À8¬©ûfººC êfªúl]dÊ©¸¹/`'WlÙÉÈ–ô–Lª}Ãû:EÉ(·JÝÏñ()qêLàýgûâqY¥Ó‚3¬Ð-¿±EÉΉ“Â&¯<ñ±„ÁísnîåÙî9-mðLm ÄwÛ8ÚOuî5 V6pcš1VV퀓{xüpÛ 4eFÑe…òõ½ÀÃ[sr@q·ž$‹¦ØÝýУȗ.ÜS—ǘKÍŸZìM>¥¦BB ,(„¼.°ô¡t}90c€œ;Õb¾vä|Ÿ«Ì"ì(’”])bOÏ+€RÂO1/¯ª>&7Ä›¦ %uý\ëòîëXù-áõ Ú³g쀖ZA ê_,=Ç¢üx›‚‘ж· jBDu‘zý[Àѱ¢î2T.Íë$öyˆpæÕ5Ù‰²2Â0VOOp“z‡¥tÆkÀ•tꎒœlÇÉ­«†_Ç'$iTS£<{öuÙ–y;XÒoa>óîÆ ßµ]WHýøð-Ó(ø³°/_B¹ÚÛÿðudò=Íì\ €@àBaÛa4Ehè.•Š ú™¤O,ìÁ ¾fFnn®H+$ýÒù:)Rù‰†ñ#÷mËwwsN@€v-€pÞººªL«á´ÚÞÛlÎD\YíÔèÛaÊ`éßâÍÍæœæê¬‡ý^ïb¶ÊÛiÏcÞʈÛ(¨=ò%Õè˜ÜB£Yi MxÛ2JtsIÉÊÑ*[ÛëÖ?¡z[çyùDöï—)!€ÄÑ?¼E¨û"°áNÒèì¬càý9ÍÒdxR]ýÌÌBÎgµÁú ¸’¬ÜÈ((Bôñ%ðÂxEz®3Š‹wÚÑ?´øÂ²ãÑï JHH(( ÎRn–ì ;Ÿóáãúöí[ÈvNYÙæÞÂþÂè×¶Ö––">½U¢ôX|J\îóVÿÀ¥¨‚¥æªB(ã##Ï00üÜÞ>ƒ‡öºãö“ô‹œfšµÚq‰…‡!ËÉ[çà”]YÙîX¬¨ŠU¯Wbæm¦äm.¬ŠÝÙÆåòòÎþ9¬ fhrÿ^ÏeOSï3 {­aí=Zñ«W,6‹ßÒ¼w¦{on(ÅÄöUJÎûñƒô ¨¨¨žÏŠ()½b“¼¿/þJ$°D4ÅbAº½%y2‹”NçÏ,ôc³gŸ¥Õ¾çõ™EgÈ»cÇ ]Wȃá‚R›Øè¹íík׃x(hhÄÒÒfl‹•ÎÐí{ß°°°Ý¹¹zaáöÙÙúÂBx¯Û«Ó²2úâ¢ÇgÁü¥‡+²tÊ/}{VÚ¶&ŠFÜ ‚ä³ ýüÊöðž Ú¿zU#.É\ŠÏf=PûÖ—Á .8'ø#5&f* ³Øë×RüüÊüü‰á6”llmçDþþaŒ¾þþŒêë„Ë+Šèèã¨è㨣XÏÔȉ¿ö'¬t&„⊡`Õ`aéQl’¿ªRVUSŸuÏ—x\ÕÕÑÅæÚö"•ë#.‹ù†¾·ìH4Ë<ãjJ:Kœîgj@Ì»þ´±µg"[Á ¶@A×Úör°ŠÉ<†›¯%Êç+µ€ QGkëS‘ÐÎ5ë”ØôtVÅ“2Œ¶„œ`,Ù:&ŸgLAÏøQÐÑÑ…»&Ÿ¸’ª¦"èàðtY°÷UÁ óÊ$Ú¥×Õħׯô?x4—‡ƒ£®±Ñ8smm­ûpµ/¾¦ªJOföy¶ +ýò×Zä(ΰøØ‡C+ 2º©ùûæDs[*2<üu8¾»¨³„C@s°ÄñóEjDØñ± sÃý°04hHÔCþã6SL ¡S¶g­ÐO¼XئPÐñXB,®ß u¯¢   !AALü>®ëy@[“Ë¡~gÈó?~ âããw¿åããSSS{ûö0™€XlvnNKK+';;;'Çyo~fd$#=B "&FéíÛ·¥dü('W§Û ÅëïíîÖ¬³[m @Fš˜œ {Á“”–F XX?Zä£Üºl DØHûØUlB}›îü÷r$÷'0ÜáÒ•NÇÓ1 OBBœ¼/(Ày1tú:¹_NšÆ÷ëQ1–¿9&Ö”¸ÔþÕ ‡·¸ âšçÃWù! xÝ\D¦¥µ8l*Ì^¢@ѨWn\Ÿï?þ|vv–L6…Éz±±®ªŠ…œ\\I ã¸;òåñúÐPßÑÌç}w¸Òµ|SÛ”úZUUœi»­µ5$4Tû ÇÇmI…ŸO(ÓK›Á¹4n×Ñùyîîg&¹XHŠÎØ!\ZøO´Ù«! µÙ!c/{L·ÜoŽÀÀÃo u´nœÎ—sæDŒ¯<‚¥ÛZÎÙ–š³¼\€F¶gm‰§ÞH@ù7KŸKc¡YïÎ^kÔðâl)¸¤?8<A˜¯®®þœ%ȵ8;ÛÛÕ€—­PP‰A Š3Q=›XIëÆóÈ™€W:×sw¶ªÅûÞ_¯6'§c|ݢ𷋻¬££ã5ê°ŠŽ0qyrá^.\À'.„Nü[ŸÏhH_aEy ‚‚-bb^pcKÓÜN°-,31Únlxùrl“6pØY^ÙÇ”@ë¾ÌÈä]XЃtZø^¯Õ÷ý{o4C,Ì»Dž~< g6íØúðí# o·Æ †ù‘ù©Ó?Ó&ǽñ¯†çôù䇢šz:Hxë HÍèh%åV€7{¼ƒ˜X—Ž÷í+RÒÜìltLLRròx„Ý}}R²²²ÒÒý9MMøw¥ë‘göÉÁÁÁÙ¿Ž¢"*»ÜªªÓ‘¬à  7žŒ©É r°•&vN)Ó§šëµçª–ž…MéB¬ &® 1FØ´>áŽAÃDþRÚ,‹ÛÙ-¨Š˜ ­ç‹`þÁRµÁBðQø(ÛNÝ¡¼¤ÄþgÉ–›§“iÉȶ4槃¦j~±G<Ï{¨á$’˜ÍÏžb#ý‘~Ú]¦h'ÁÏ[üè`Žõ`‘‘é((¼”_¿¾P!.L&/+L0kÕ;F2PÄÈ‚¦Ÿñ}‰è~¶Š9ÏQൡáϓͱŽööj›%Y÷Ÿ +e“˜%€+úúžrT””Xu…áGEEïn“¹ýž°™ÙµspôTääÜ(fŸ?Ë Cù/'%áXXX€Jª¼êéñZQqeeEQIÉãòèBÛç–“«\Ám›4’b þJô;q’춺7‡`.§~ÚÍ" Ø÷ÚMn9ùù䤤þ•32‘âÜv?aJúâ¾Îwyyä¤# ·× ? CŠºƒÇ`Lü}"ïíÁbSœ#ëwEŧ+h/Þ6KHJ®­®~kâs\NmcÏ[76M¬<ùÜÚºµ¬5Èü$%gZVO *dÜ÷)‚ôk%nö0àÚ雥 ªÂÂÂÞ¾¾þ~ èoK…•Ä “ ±i|IñX÷éY•Ô!¢üå<1ôíXðŠˆŒýbt ¦ÆFCCÃúÛªõUžœ3d¦Œt ‘{ÂÆVÓŒ……ÑÑÕÕ×Û»XïXtß kd|Üa}ðƒAçðɘzƒíòûœ#Ð!sÁQQÁ„ж=Ybok›_\sÀc¨¨žq¼@D§t‡ïÞ0œà~j,/ðÄ<‚ábæÛøxë…ïþ¤à™^©}íܪçU¨a+›óCo[OÛù¯{?>¿ÏÌv0ÅÆG^kžŸ·´±¡#&&¦ ¨3Ëõ÷òóá«·F^6}Í¥}ª €t€+DF9ó«!iÁ;5b½·5¤Ò ¶ÇkÕÕ¬”±³óó󻥡ØOnvtÍÍõWcóòåKwm¿ª‚WddNk! K-÷aÕqï>øÝÂñò¬Óûž¡c ÿ´°Þã—‡HÇ}ü¹WÕn†•„NÛõ’ÀlS+0ðñzóÎÖÇ[HxìÃC:]!ÏUUÙ»sMïµî­ÂpÙ>ß÷1@ÂfãeXbÞ–&â‰~ÿZUV;‡\ªÝ”Ä鸕/Ÿ¥¤¬Ìçyå‹·3+_zô]`Hîc໘ßÙÝÝårÞÕŠ®ÚjŽ“‹ëz³HEY º²¦f¶J äÐ? =mmBÊʱâ$­ô77—öfff†Yè Vš±ª­Žåå9Þh-´ì h÷IÃß‘¦Ù‘»h¾Ê¼¶G:w„ãÞÈ[‚5)ø´Ð¤ÕðùÚn¿”Œ[ŠWæZÀyöº ¢ C¬¤²çÆú¹Q>~Å/ñ÷0-$8®:Ò ¶/c2ïYŠYæ>éÌ¥TúUÛsa2ÊÅH`qܹÊ*¹™¹¥íjŒ Ë‡L^o£°—©mœÎ²²^ˆ~UTÜæ> ÒS<°m9&&»âK/è½Æ›8·«@f"occûƒtAHйÿBûó¼S&¾$ð‚ËËËØ˜„° ¯_óÏRÓÒî¹f¤¥¥×Ö^þ¿yã )Ê?”A)x¬¤ ôñãFß%Ò~ 6455 A§¤ñÕµ¶«&†m-¤¬†I®ÁO.„ð$¢îß_Ö»?\Aö¾w©¬B€`ÍÃdU.'.)Áôxœ³êåîÖ]Mm¦¶–5Ðádc$,((P¹*@¶¬roÙH¾ÌÁ‡L. 1-ÂŽŽÈ‹‹“ã]p¿y Ћƒã²?‘©{ÏÊpÝÚÈè•‚âÑ|}bb"àN @@X[[?f5µ±iqÜž?†A²œùý>=3“8[&{Ôˆ ˆq@l½ø XÀФ íïí¥ÆÄ ãâ^­öiÔXŸ:a?âðº©ÍÏÏþý"!aHŽÈpºÑrÑɲòäÃçÏï+Ž3WºÒ@máZÑܾ(ðq··_gøÍ7¤Ú†z ™] ¸ëêêŸ •‘˜©±!Ÿ“lðž¶ÂçU[¼>_ê ¿/*47-_›FÈÿP¡|]š2&÷*:U†ˆ¾ÞMèѻ枀æÒ^ŽÚ®q$TRHz¤öv~Iˆõ¯—üÄòoŠk«m—;ÂÆÍ†·+ó¯³Òj8ósÃ~tfB%P¹ú¦tâþ‰¦Ù¹fJE/g#PÀÝÚìZZм¼©;zÏCÈW67AÞÙ²§¤¦j×ðõtwó£´·µmûa``(æJ x¥r:š»ººòÉ5z^³RQIik{M*W¢×ßúÀnð]3ù¼=aIæ‚ôÚŽlÆz °·? 9y{m  ã‹®YXã©™Õ.::Ô»¡ÜuIËÙJ³nd###¾Ý:X4ê¾ZW:f/‡¾ëÕÍEøÁÃЪ¦Ÿl)c¾§Oò¢ EPåÈÓx…F9Ó÷{½´^­G¿Ë'¤âÚëì~ÎëyuòØŠ"샤.ά°ðÅf«Û‰fà7UÓ›ûm‹Òh"XJ:õ5¤8jÄ®IfùÀТ"‹Œœ~Æl7.Ø¥/Ñ›'žÊƒ¿çÇþ6«>7®´[Ú‰‹;“Eã£|qZ”QMMGç_R9µåÝô¹RDXø¯ÐyvË­~ÚÉúÉŽ¶Òµ«}ÊÐP¢ÐЯFµ9ÜN6ŠÕ*NNeee@ù¸¿¿Œ‰×y/åýû÷ñññááÈvó³ê¢¢Oz|+\;ƒž Hòþþõ‘ŒÌ‡ýZBBÈu‘ׯQ8ÐÈ}ºRñŶìóËm¦OÙbŠˆL @Q‹§Óø–°{\”ï€êYïO|ø‚ÚË#£üðØê††ë ¡€ñññ·ê6ÙmÛ==Ͷ®.³‚Í}‚«9AZZL{.'?LÒ9íê©777/~lz§§±%,f0 ?Xò}B^„¦‡œ%?Á»úøñã'.g@F1Þ§ðy‰‹‹;4d§¥=¼ŽðÏ×ï²TK£Éx€çe–•Ja ÌW tÌÉaCð¹p¬ˆ¨å¦VÑ–ª,¾Î}òÔW[etÜÜc¬õJ$‚08ˆmš6ûµCiÇëŠÙ¥„+í<._ûú‚…‰ßõrx¾ëZIãvmµ‹\õ±¶µG>æÊ4yIÍöüÀ%r$k¢ççUu5BeU®C¢Ê‡o_ù{&ßì,£ð4õ ¢ öo¢¿'ЂûëÈ=×9pyÆË{99y’¡ý±-%ad6©VYÚxº¢²¶Ö¸ýíUÐ#7Æ~8NÇÂìêêÆ´% Ù±‡ÊÍÅÁAAIytx:ñû7ø_F‹ÿ|/Ì0ÛÓ§O+•!D¡^„³Pså"%%ÍÈÈÏ5ŽKOOß\éÒ™™ñî yndÉ-¯‚%<òœ‚‚"÷Ôq+ær}èòú úò‚±dì|IåÍÆ®«Ñyéz/÷qòÏ-wœí<•lt2lÖ?Ù9­¸â]…ú ýy¤Ž‹øÑ_ùÀ!ÜËLÏVU8ï{)¨Í¿z%(&Ñù ýäøXHz22úá ÐË}yä~½5µÞûÞ@R² ¨·½åžU»J2:9ÙUú±›¿Ïù•£ÆÓàd@VVÎþM‡ÅF×þÍ{••¨°5¢á/ð1×8¹[^Å^}û€ÏeI*·&Ìä/é76*‰üBó]5 Ä5Ó ™¢bÕÛ¨ýùK~1–‡o•… OÌÍE’Âæiª˜«¹ŧÂ~¶|uujMEe¥ÛR3;{ö¤+œŽ®TLãi.Q$¹F5wa~þùùãNíX“{¼LíîÎŽqyÈʧ°ŸkwÖæ[Ã#‘b°>·ÏïÎÑèèj¢Ç½ï/fÕ‘ i­Yýð•,Óåë[[dó :‰ ù$$x§‡oÇG!ûèœV†3V œvòÔ^Ê?:ÎPXÆç‚TP„|\CAŽàM…ÅÆ65|æç7¡RÚœ‘Åý†ˆ¡\Uü£œDàêŠø£iáRì©’d*ê~çû;1ÎÀ‡ðyNBŠÉÁî²µÝÐä~¾ Ö03ËLQ{õ’鉕„?HqÏ-só‚gêYuúÞÅåRm#^—2¯5éÄg¬ŒîæB9¼æðÐÏa¤S䆙i÷ïïuÙ_&f‰¾åâÄqqﺽã<˜ùµÏtøHq$$Yõʨº:1!¡¹…†m}dNX؃LįªÆƒ1oµìÎ,†'™ú¾½¹=çÓÖf`³™ÅÅ&ÉùVe±N­–ÙhÀ—ûFN’ò‰µ„=¶™þ"îÚBÝñ·9.§¡+䪫«_è9 ZPɉÁxÍ×"Uú!D§ñy–³ >w6VÐ"£œ la"ÿؼ‚¡””d¬³4´¸øv`ߨx«ÆzF.÷…•}«1òòZÜëJãÁåpýrQi6zb…— EòsU9•ÛlÕˆ>9)IU B@D¤ãÛ7%¥'(¶£UG)©õùºujjf¹z\=Å„W´´K³WNNg3@ »0ÆÂ%¼Í.(¸.••}šHˆüõ’ Ûõ¥çÙY˜…Ù¦fÂ@ÙÈÉ&Þ!>*%†×ù^rž‰´¥åâÏT$$ûkï Øï(Ÿµ=í·'¯klÎ{ûìÝnWcb,¶ç ÞOv¿AØúÑ9<<ã¼ö¶Utlµ¯t he‰8¢ßéÔû÷YN»êWz–@Nuk´‘²° ps»ÈË¿û–r³;Wš›ëû~oáZœTñ95â× qqØÝƒ”$·Ñ…Nª"ÃRÆÆl™Yö>Ch¦V»'çá:eß[ýµQ Nv¶ã980CœáB¼'TQi£P$qÚCøy°SWײ»»?”œçr×øjÅÃk^ZTt¼£#MPïxõµ²²Û•ÜË¬Ä‡Æ ]S“Æc6ZŒ•µ1Šó¤ Ð ëÇœ˜.VVäR%Å1<ŒØ]3ˆ0ÿøø¹^ÉëÛë[ÙÌLÈí)÷Oî‹cL¹%¡«™!   qJ5]KJ<¯¦ËMÌÍ£#Âý32?bA_[«w²’M,ÝǪ¬JïÜ_B<;;7éhvz—1)ú£Ùk–¥êd±)^§Šë‡øì1–ަ͎“ÌÊssw{€ “p ¬ËHK{GCó)ü…Î4j`f¾KYE´4êó:)EŸÈ-Ÿû×*SG?{¦WÌ-’CCM¬fu¾9@BˆŸµÑÕ¥QJ–6•Åâ}VÖ»ºº'ÈÈ/Ž ‘D…†|þüšãmLtuÓ'Sûšúz îye»²ý\1ØXøRmϼÂÂÍdK³Ÿ1±©žƒSSo<7µxH…“Ô4 y9Qfü¹v؉‰£9Ù1UK..µ S¿ÒkAðÓ…à’mì4²-o€vèpnîThhé²wŸ!œ2ëêÚÆ˜DUÎûA¢tÂBAs4¹VtõJâNÛø|{üÕÞ­‹‹ÖôtáÊ*zdÔÀZJJø(e~fg¸Pššµ ææIC)†êyý?7ÇH¾]çeÐ@}óŽÃä±ýúsmÀYMmÕÁó)¨l qÊÇŽšš^SÐP¡A½ÔT+í¯!ê¾ËÈLh7Nc`V ½qšß[;9Zª? ƒ/œŠš5èJ-*J«u èvyãq#RÆõ}dZ—™ÙQ6áú6ù¥þ öb 9EÁÅáJI4™}3Å3gçm±ð‹Í·???GDhËÈèyófVü„ǰkµÕ4½œŠÊ·ŽŽ–¬ÂKq#9ÕÕjÒ–¯I眗$H$§^iþ¢ƒA ‚žž“þ|£½ó#‹òñK^‰§Ûý]h¹¦ÛþÒúú#“%¼ÇkuMžÉÇD££åR8*Ì´—ƒëe”×çt¸l²ßÂò­=®Ú× Î÷KUä?ùÒNCÍì¼T\`&*ñáâ¦.½²rpTáéÃ[Þ’âý *ýlÍëWâ± šÓƒìMMü´°ðX‚TÑó…™Í™^‚žüçÏö0<µÈ{¯èpûõ¡–ïß¿?ÇíK½ €°|( ºoãôÂü|VeåÞÖÄDyyÀû§O³@÷=8>Ön¶<Þ[¨98`9—̶´Ðr¿Ù;ñ3ýù¯øøöA[ù¢x‹ë}O‡s?µèùDøm‰'_EƒC6,9d1ä·¢üåX!’ÅÓ_ßÓè#¼Çî0¥N÷W}/ðÒœúQ¤ü7Ia(h"Ì×JAÉ%«^ÇáÚèipB‹cä:¸÷Ä1J9.Û—$0 €(>L»ÜÚ¶¸±z°œppà+ZšTã#»È  dR È)‰Á_¢FGƒÒÓߌϽøù&™µwpPÈféŒÛÃe9¹#,ìZ4üŽƒ½z4Ë‚#2Y£ÖÙ¦}=ͽTó¹©ùìÞÍ¥M[ë›ô6TæÌGë99Ž8¯—…‚w ½®N–4j´çkߎVšQóQŒ¿^¬èÚ¼:m&³©À•0èévñÞT¸iõšA‚RÿDz‰™ÂØ1;R¾4šC¦Ñ©¿ôê•‘/Šò„\ž-ƒÄDX6VpGËÎÌ©*¨Ïßóå³êüëüJÊÊ6ÊìŒÒCHu–ÊÎ÷ƒ§‘¿p¤¦š\Ÿ^ëï­tª-ÔWÝ}}çš°€•ÔZïˆvá¡-õÉlek‚¬/þ¾Ùr&_$Ø¿ÿ)‘ïô´Ã[Ǫ…2¢l£“u>vQ±¼‹Ã7–0%²´”„%••ú£$-Gv#~Oû¶Žn$SŒVÏ÷šˆH ÍZ¼H«âñ çŽ×ÕXšÜ.Z îÆ¦G1+½ysˆæ %Œ…/“2Ý7á˜]Çñf Òi˜-zgßûÁ”O\Û´ªô.g;wš÷¨.—çtˆ=~Üòœ»Vd ØþþN &@§+l·ÎbŠúR+#SÐÒf_Ežˆ×Ûëy^^ EEõâÏŒú›£tÓaÐêŸr·‚3³IØmuµE;¯'Š>Ô-®\Þ§µRLhSóé$$% ¬Ün£ö¬+ÎÎjÕoœmO‰hÝŽemB$é\Ÿá¼xáT^®ÍwÇþŠv/¶¤$„©µšAâ\µî·ˆ‰¢.`ÌËîþö·?>Ÿí²¼×½ÎrsqØ2Y|ù’}Úñ«ÏgË.âà øÃá ä½µ••¯NÔÃ8pI•gzmý5VÉw Ο87¥Sçó$æÌ9;:qžv­ÈÛ¯#ÅÜ0±²""3øØ»p›w£T õ§r»Úÿï£ÁrÚ…OcX9ö{°±mñ¿’9üEÓÝnÍvFre¥RË•ùÁ{h¡Ùje.rӜٚ)Í*óÎP¢•. Ç}ën'vÄ£;ÏȬ^–4²æ¸¡›PF“Á¯?æIŧ~üx!«¨»k»µÛŸè^ªÝdÿöù7àiI–Ëlí ãÓû­"¢/òöæ%¬¶ª“`£['ΉÉQ()é½álcsrÞ…‡·-4h/y0Ý„óÝÝÝØïw‡óºD :i£~ìppqyrƒÁÀ#׳Áõx¼Á¹‰›{'¢åQÃÚÁ|Qüa¡²@Jª—49u_zYÙÉÏž»TœÝi†¬LÁŸ›®q»ü[2$¨û‹žŽ³•Í A%V* 0Ðw†F‹†nñ:ïÙ„¿PÖf EK0êÅØrDOB æ¸Á‡à‡™PvvÄw]¼Jóv’–èÁa³^Ï–ðZâûyr‹X–_V6¾tßéóˆV…–ÃmœƒÛ#'z âUNî.*äk,î«+L·‡+!]Ö_ðƒC„‰£^u¥ñ !!80Ðës¥È™Î½Ù×1þÄën¿}ô‰ëœž†fjÀŠdîÿö^ÚÐ\EWÏlýq±L-{@±ª4š å€â‘„oj«ÀÓŒ|òÞRb}eñnš ›fVÃî7Þ÷¸ýÍ}êÅ冿/—𓽮6GËôÖäå—`žÔ‡àL|Ú­…¸ëhÍüÜ÷±Dƒ®ÙõøÝ®êVhîf,ÕãR9n;ÃŒ3«¬óÕ®ƒeÌãudõ&Nö—+Ç1¯«ûô½WKQ¼ûöçOjY¹q~¦[_GÇœ¯üXžžˆîî-&C‹¬ ¡9ÍMÄÐÙ¶ÃŒŽ{ÅÛ»<—w·2Kžç««}‡·×îCÉë¸×ïwkù›câƒÓ¼ÙõZ霜¸¢¢¾xxš´wZ”Fm〔|o5÷ðÿmpµìR@@۟êólÈ*Ù5'øÀ­㥖û£¯ïÈ« .+®ŸíÆãã_/;“ëª?Xˆˆ«˜§)-3ÇÅ~su²™¼fYO”g+íÜ{…燎¤Îˆˆhd²žQc]²Tc³×à,Mz93³ ‹&r¯×=„ÅøxQS3¬ÊªÈk/Å]u:hsÌ ê½ñm磈™"c4²³£#ξX£ƒ©Mû›®“}™> Εwÿà»gÐlrÛ‘ãÓr»x½H6ûq°·W§\äÅÔ¼N¾¹¹dWÍ—2úF#:ãš•C—ì; Ç &%Uk´h{­³HHõÀ¨ähož#:s‹Í¦otjj¾ya¹;ûÏ/!.ÅÖàòh§×² ò«¼¬¼êÅ56ǨÝÙÎc2¹E}ªú+jM ‰º ÉÛ¸¨Ç¦ÏÇ'bSRžh¶ÜÝ.·=…#:^» ±ëþ£æså»úSÄí1“•ÞØw€ü´¸¼u5Í¿ö…kºð@pù€)HøH±ÓÎÐì`¬P¦8 âãŸ;neWxß7b2 ;̳Q(«_ðåùìªRΕµO«:ïÍ 2ÄLG$,ð®Å¹t¬PYç³:ÆȦf…ŠH+ê”תÚK_©£¾Ça)t×MïKóvó8S pÜ–=ß>ÿPj3 Å2à bTDD¹¹òë/><7ûµþ»‡4d§/uÞ—µì‚¾¸:eJäm*W——§˜+¿‘òj¶=Ûù@ID&ë±ÐúÂÍf‘[YDäíåÑÒjáõmX^†Kf¡"?˜ ƒöAqRd„‘ÿüùåùn²ûÑÏ’:{o*r”/¸rU11è°D§ø:ÁèH>#Y‘iK;ÓÓˆ U?й´Ð½=²ºÚ/âTd˜c##ýL-w’j5Ö­ nO†NMMr1ûV굑d”y¬RYÂñ ê]6º¶4¹«’1Ec‹„ˆ¸Êãžò€µë+°?«Q³Òë6Í ×xЉâ>"˜l <’“çÉFUÓí^Bi­ î+AqÏ1©¿Ç“Ÿµp‘‘`Y­—ö6F,44Ò$¢oè¥ÃЂ‚$åRjYôÛ嘌w°àûÂñÔº\ÚJ•†qL-ŠJÔOW¿}·û‚%NâdÏã¸5Î&*JcßIˆ›Lûùs5.›w&ãõ¹h/ßú,ˆçÞAÜ„kfä³°X9^þq¸â¼ÐßéÄ~Ÿ™‘!¸•Öóß((è=@³ÏZØ™99œÞ^_¿Ó¸½µ‰‰‰)ÇÇQzIEµ4ÅÖß¹pº=¤ªæ¢ F2š+cÒ¿…ä_Hd*3 ³˜L1¾%#KÊU)ovÚÝŒ|ùt ÿd1W¢Dó2ÇOFe mu•Øé%¨¥…ºãÞ/FYô´Ý®˰D€m¥pÕ‹!·Q(žíÌaõ\ù)ji%vŸ #«ÈƒpÛw6ä×s¬®N³š±Ë˜´ ˆ_LÂ/.T@¤­,YñùyÁ=½±ÎÖ`´Ä9îÛ•Um™è¶¯=»9v>j8W-% àì}ë*óTÇZþO"˺­¥Úr>øÉQKS´ ÷ ÿ+»˜Ög‚ÌÌ1á/ÏNRj­æ:./¶Ä›!£_zhëéy*Ö2ö‹Ã½æBCã±Ùïd[*Þëí¡þüYÑöˆAë©VÒgÀ‘Jo•öi!¬½]Zgéyy9. W•U@èøÈð¸;9Øá|ßõ¤åkñ-Áë«3‘k?ÛErrâ™Êàxè¡«,#Ct7“%ë–(xx¸hÑ?W˜ð+|#KÑÃPåc*އ‡_Ÿ··÷Ó5_p°žAÏ={”9>st<‰š.±±‘ßPÖhße?ô"oªtI&á ˜óýûtPÐM',¢ük“󖑖–ó÷ÐÔÕ û•2Çòæ¾wBûÞž˜%ÝmæõW¾À¹Ò½½ÅÈ®ýHÝŽŽÇ-™×@ðñzQ[ßM.µÐñ²Ù,~oöÔ¸`’ûN\'µŒÝäæXïáêz¾÷D1oïðÑÀ³é«UÌö\$#Y¿J ZÇãá#rò2é ÇÃG9œToRp¸]ú›žQß­-Hf笺¹¥î.¸ÊYn£±žWµ„´`€3„:Ì,ÊS%ɶ'¦ý`6椥¾Ýb³ŽzU=0ϼíá‰OE) ò&¹ed399ló½—å1â„]5ˆGØ Ç»»ë· N~C©ž> ŒÐýüËÒ=6î­³Gæ»ô d«á—C©Ùt 8×÷¯ 1³D—êŽ%|à\n§a»µêé bÑñrvOå¾Ú'Öõ‹s%$zŒå“bg[¶¹Ô²=[å-î¥æuÉ8Ôöò`$kJfÊTs¾¨´›ís^ÍyL®…ˆõæFþýQ_ñXÞ¾Ÿ?¯iýIÉÞ»›ãòj•ÏÜHp®ež B@÷ËLÑúô“_&²d“žï·h‚æÎÁq™Ì*ãä°3e¹››³ ~š]"¯Œö@5¿ÕÓ3éàczÙÑ^\r+Ú5îpº6 ˜Ì¤ë——Îírþý[>› ožÙæ7º\ÎçFMtÌ3Óû»näQ÷³ZÛ刞èhÈË[d~/Rã°·Ç`’<éò³ã§K5t_5®±ÚíÎ"–ހ퉊Ύ ÉÚ‘É1±íÛýœ*©S9®wÌ“KkÆzvˆÏDc:È2f™ýÅÝqòS¨ùƒn.ÚËT{  ÜÏ?›¶Lk¾Èl(-5ÈGÞ`ñ“”¢òºã°¶e xÝÍ” Á”äZ^¶:‹&É.ÖÛ{Ç’W’IÌ÷ª#/Ž+µµU©b_.åbvò¬" #½-xóãG2÷3áöÎæ‘¶î×ü&Ï´I¶—­ {¡ „×W1fgN/®¶—'';-a ¿2~PÀjj‡ ™AðÏDä?À8?Ep0Ó­‚†nÕnjtpÿð>Îa¯X ¶§·7¹§ÔJ£êû÷W€ÿ…>ãR‰{‚ß $$´ΧyÇ5бjúæÍ£p1÷êùÅÄžh祦ë÷Cy@J"¿Hñšs¡Žø¥Š™yueìXFÇ÷Ρπ ;nwøR{^2ÚɦÔNŒÓœíΩIIù¡f *Qx¿ôUUÅ¿ v´¶~D”­ÅJŠð,}â_‹¡g›úÓ”–%-YõÇ“ª¸½r}w€ShÔL°Ó#_âò{ò¸\ ~©æcÈÝXŒXúðbS±tLb"Ÿõü`W8<¼¯ýÞÏÃ|ƒ.̪# l3³I¦«,În¯éâ©9x·RSR “r;ô’{@š´üh¹÷sñ»¸½Î4;#»¼â$ö~ìÚŠ¦gµp T¤bÞl±6~£®UÖŠ‡g¨<Ö›‘̤¤¨†kSmG›ðL⛥Á*‚ÔOŸä`GÆmt±!K@¿òòª00`ëOd¢'$¬ÿM¢£-ø(éJ#N;ôfÇF]ï„ü-›@?KbYMåç.ÏÌ×ôžkFˆJúý%¬ çµ>:gÃaæÈTÓÝ•®¨ââpÄ‚”ÜÍ%¯ZÌ1 ŒÌåöÀ†]çõ5Ì'Ð4#MPD¾•fY–ú£{?:ØË0M?òmqÚ5k³@B–‹˜g ®T•ö¾!Ÿ¯¢j|—FÁýã¡TVžot•|=•]œ!TswµÍ²ÉUQY9¯ã‡ [[î¸Ýá_S¥ûí{µÕyáÑ]|=ØjAr´"¿¼Ò\uí$sóÙ. h=úMMyÜ ¼ú¾¿_ò5÷n  Ãò<ìŠ&Û·veÒxÁu¦’Æ‹{|_äYU\LÌÎ>99Ù5òv)¹C,Œ:$Pme‡[ID¤‘>=o!B“Ââò¾Ó“•õÒœßD»µ³/rª5JýÈbq×ÝÛËçuS*Igd‚uqåº×tذÿÞí„>è£*Î/àE…*Lù U]‡.ܼ-I¸d""‹+]ˆI1G5KŸŸBÝ7˜¤›%¡ÌÎ]ß¼{,XP MNU”À´þ½féN[]]¾ŠODVö—þøçÊJbÊ­Dq%šÒ| tØõþËÝV¿ZxÂì‰ðÐÑ/…^¿qÜÌä2èôú~ª”L»{(e‘Y¦±iúÉ¢•.•¬ì㹚©b‡¹¬|òÙ*­]c#OË)$*xf@ï“+*î'HÌ —€É[.z1§!Ñà £ Ë››Æë\5{$v™7†úänxs·8n‹$åš%ñºÐVV¾wÝ<\A°²&‡á_[LP|~œ|;c‚?ˆn”À»°¶£Ææèø Ú¯÷\ãÇ…ËŒb- #b"<ÑÒ®éf‚c'È|)s—ïûYj ::ŒÂ Z– Ó¼ä¿ë4œЉ‘ÁùaL4 ËǤæämÁ˜ß„â²}Áÿ°Ðô» ¤®°[ǽùAð‘'hg »‡x™6&KšúO/¹sŠTÒÄuØ@Ü’˜LtwaRÙßÉà®JD»õÍ3CŒK58á€~žÆã!¹Òu?Ûp>ŒÅÜ ëNP§<–‚‚Ë~-µdפ¾^óÖO„µTßãÂ6ä§un±ôx]Å`2Áägž&×c× Ì7ÅØöëÒsCãå)Ïø é‡_ð-n ñòß›½Ïfš„ŽG£Í­Ym~{óy±%V+£rzëÍ›Oê»ïC{{á+LÎåä¼ãÔª¨ÉDƒrò§þ^é¼_ÕÞ^»èñ"\L¾½£ÃéþÎuþ¶Ù'.7ÞCAu:«´™SÉŒLDò¹iÏzZr·f…8É fÓ¾"×þëìtÂ.çôšóŸ³á_*æ\lkN·Éºçi!º‹AÉ3Ÿ|köŒÜ_Ä`¨ð’Òþq|II ÿîm“»³>ƒàLL|°¦–œf=:™gÍ·ù~JQà4JÓé¯ïr©Ea‡q<.^sÛ¤Þ”!~FtO‚.Âãz”…` ï4•&|Q3 ÊAl zA•é=»÷ÝòÑj^oo/U¨ÈÏcW¹4ky•x£QÙò„½ƒÛëóŽXÊñ©©é Y¡½’pT¸$³Ìf»Öí&ö6™e‚;*£ÇÞùBÍÀ%kԺ׌‰Ùòˆù1 ÍèÛggM® ÇoƘ?EˆúϦԩhjª›åñ]?ve2>iðt_´³{ –ô$(Ds¢ÂDÌxò1\¹êÍ”#-í½W’Ã]çŠ<ºÈ@Âáåé¶EDË» 8 Mñî ¨Ê™…WþZ•Á óN¥t±GóþggH¨c‚”?èv´Ñ;;ïo<ôâiK*‡û¤œ·Èï¶?&ŽT%§v¶îÊ(èÊÒ¤ŸÝvWÅ`ŽÈƒwgÆ}€ƒ¿('Ÿüà8¹Éx€=(3aÑþF,Üð9 Í­Ü;1yÃþ„ûùƺɮ.1E{¹®0+!Áùx:‚ù¨>w¡8LاîÅùäãcŸµ’¿òÇïÎá+)3ØÓus æÙGºôÅ=­:y‚ØNÀ‹.—\]“[PÃ8´îyËžÛU —lQ/7§‚š’šúvßÛfª/EU:>>xmà˜ÏyO †ô2APžôÌñùR±ü©w˜8IØG—¤¸¸¹þw*ÑEêêÃækl>ó]9$ü§§õŽËY!Pu,X߯[éÏšj—s6Ç\Ž£f7éuH\]¦ýüiÇ€ø_,÷§¦±]ÔTSƒ>ƽml’‚ Ô@'Vz-¯_–Ùhƒ3ÙãÇ4kÙä’òò_×ï·‰ÄIûo66jKËÊìtü8qøƒ1;Z3…ªZ¶¥¤Ä»é™Ç­çÞÈTWC¤/Ë~ªWÔÔ|#õ()W„Ø­'Ê€LnѼ:ßð`m  ÜÀ™Ûý¬º>'?{äîn¤ §“í­~éW~,#(Ë}W/^   ¬€^”ù±Î5à»îßíîâB… •DqI(@ÿP\“n¨X+³wëCccÇäA¦EŸØOSyd¿ æ?ÖõKÜ’‘’  µÊì¥zÎ"i5NÞÿÖ©šžªˆ«„©ü°“‰©jÓ’ú\ƨR{ýˆ×±vt¬*Žù>1R¦7+!¡–”´úíÛ·ªx„§R££ÄiÔ4¼Þ;Óå½½ ß‘j3óªÛ4 MÖ?öºQ%nRÅ ¬[D¾¿¢v¿ùé`ß5½½±fV‰„ÛU@¦Èèc9dHã RAXmMUeå‚-[ˆü¬p¾¸Ø‰³,9šz§ vW»E¶¥@%Î’ûëÃ5úz(j=8´©17Òë<.?Ždñe‘S’‘åÑvQRRš››÷b–¥ w¸º"ª¯®4ïL•®„óiÐiµïzÌ[:µ¼>t/[^Q¡Ùàâï/‰¿tY(_¶˜$sxnR¤ÝZbžì'ó ¤m¿¡)ØJè÷Õïªß¿G)X[½%ÂÄêy“œ»–Efd”¶A! ÏúE\‰PƒÊnûdsL1WZ B-&îf½CUzúΊ˜ž€€øÑÓ{^qx×4Ü_¼ò<βK5ôx=Z.MVIÃÔ”ÜÌœüQŽ8•›)ßÀëYoaQTeUÔ™íA˜¼=UÊvà”_V¶³ØÔ¯×¶Å0a%(¸·Øt¾³ÛŠ7“ÓÌG«ˆÎb9]æÖI®cgg‡ŠŠŠ£-çä4RÚ²ÈÆ6•ÈQáØØÕßߺ·€Ëi/p¾·pzBûˆ¹&× ž 50W.í:ú¸ð)Û×gÕ¿“eRRê\£òßQPÀUVÅ n}^ ëüÒ»Üp}õæÕ~ÛÀúóRñ£G•¯™e4ÔÕY®è½‹R€ƒp}³é®yµHÈÎ>=>^)€€LpvxÈÀÌ<>2ÂaûB1ý÷g¿¥±’;‚±âcb”Jðò¼i ¨¥¼ùõôôÖÖÖÜÜÜÀ]¤Ê¼½’j&Ã2W¿þ—øÒ¦þµä$ü¤„„„””~î;ý34AK++`–‰A…^ÛãõL‘à   ÈÇ«*+¢¶'KpY-UŽÑ2½¶ÆÆÆ„¨(ÒBšƒ›Ëã?ôsùAØ?}—‹òw7м*™…07ïÜ/P„††fñlŸÕ~*(®«û,øQwIw÷3šíÃÆÁÙ›«Ùß«yôè‘¿¿¿lÄÉvi 0ü&8¿¼¼ vÔ/âu±UTªÝâåù£ÎÊʪG¾ß¬Öx ÉœŽbtËw”ùöâp¥+œ`êÐÆgvbõŠÐóHr ×ÅÅso©% åh·f (¾Ò(4WRŠy²2rrááá5ÕÕNŽŽ%êVžr÷À.`ç™]Q˜·Ÿe¼Ñ&²éæhÎåååõÙnt3¯Ê\BšˆÖÝ:34«";SÅÅ…‹1-­ì•‡ûÅQ>.®@ÏÓ- ™1âHq…Ñöváú'h˜º1±±`®ÄÄÄŽŽŽfÇ­qçýÅ ¥ÑBÄôÜj.‹:YåÐFLñeŸí­# CÃJ“¡TàærUÍׯ¿îĤ‚=L•êÄ£7¿]yr< âúôéS ú>ýêÙ¡+Û–DûÛ#âË8ÊB µ Œ2k½yóÆ,™BרøìlWÃød¯±±±rQÉþæR¡û mß(Ák77ÎÛ}äœrëPÓlÛ¯/X¹róò’“’çꣽzúûCfÊ*+Aú±TX™šŠÃ.ÞaÙ‹Šú; FE¥Q£``aà⺃üLåqÇÄÀˆ5³°èSVº»»C‘GŸhñ¾O‚Ì/ 6Q(¿„1]ý¬ÝtJžV«^:•›ãÕ«œÑ":æ±¼ðŸiMîçÆ¬ðOŸæÉ$³šz{{oõ›©ö½Áµ6:þÌf³8ßà\êàºÆ\¼EŒ¸þ’?ØPW7£G²÷ÅÁ2˜CYÎ)å®*b÷ u‰ö%6ïÓï𬊵ökµuu¯@{ÎÍ}“t710@ÃÀp^*Ž:‘ÇÝI†¥?…Ãä)ů`\TŸWq„ÌÕ›b[g穱1÷³{A!!2™$yå’:s–ªW2£Ö9bP¯{]¾há×—F(+)‘Ì ¥[[[W!?}jpu_[[K_º¶º õ>** —E0!•EKÁ–Ò6ìçuåžñPj“ùDáøø8™\jß]¼Žûí¶PußÙò$,{i §é¤uÊkrÍf:àº:Wõõœi(¨((Ãuö&ZZZll5QQ¨õþ¼ F€ >òØÐÀ¥8ú훀Œ KÕ,$¨!å%_@ì»õ”b?›?ί¦Ù4È™+aU¯_“]ŽUïReÿ^Y¢ZëqiWc½Š›d…Š„,Rœd¶É½ÆÏϯ°ÐÄÒ@_?Á~´SNNN|.'nÛï>MMž÷w·fc…qRAÙ W©áÌ­˜ ë5 oyoj*(< ÊÖö6(wNŽÕõõ©ÕüÙªÂrÛ/Zq÷>8Û“;UÙu‘ET6£Èñðð`‰ªb8œ÷R€—ËˈHÞî'M÷2ȼ0K7KŸ"(`ob8†Opff&5 Í\•ÅTÿ„Yº¯/” 8à¸ÚeŽž2¿ù€?2Á !â(ã¼õíл8ß°à»™™™çÏŸ©”V×Ô˜0`Ã]†ÀC°ÃÇ£ `ªi™k«­­­®® `rr²¾¾<í¿}åea¡*2„áë±Wd‚ŸsîŠ è¦.·ýW –‘Cù?‰ "d~Í1£»üô7Ù䇇ùõàës€@¿öÇx¿™ú=þMNB?ŒZOãt ÊÌ'-Ô‘=¸´BG?ñk5¬~l†ù(ù8’ED^.•Ûõè'ÜÜ;fjҧêìΞ¦ÎUúÓÚt€=O@‚!ÊÝÌÍgT„•µšÂ<Ž ùÅO|ލZ‹)~0›ÝŸ»×’ð7/Ž-Ç10ËE”•ðýV·ýá×ÇêHçä™?ªRöõp‰¦geµ­d(â>'¹¬h¿þÂëx`„ÍÆé >ì¯MTÂ_üþhÂ?+öÿ•#þ{–öÿÕ“‘'å΄½3p;øôIg¬(q®²§™cå÷‡L&Ë-o ŒW⇋M™Ï~VËúã …f“LòdMnü…‡ùKÑ“_sªcdÛž²Z§`¤é \w®+¶ù'ÊÏâ-þëê°$¡_Q «UŒXÈ…4aþÍ䈃òÆo³p(R¨s¥Ë1)å¿D9 Ý”äþÛmÑ ÷òoÞD,‚kÍ7_’’P5ˆ~YÃoáƒ.‹))ù¾ÜÀÊ£çE¤8·QKð?\&ÓPQúøêðܼóï;\~¢……ž,+Ch€…%6Ñ úîg':úEäïuùÅ— IPHÌ4\ëL~òZ¤~8h@Ç–IÏkÔ†‘¿¿±G«nûíš8dŠ”«ÓíÌÒR Ø·¶eˇä»ž¹Ù»ÌâWYYÉb1ùQ8ÓØ´ˆ£É%#2r$W¥Ïñ”±ÚÀÌPTT”ËiG— þ×ZñÆnðÎr[b‘Óèùšž¯˜÷>.¾¥ÉíÔ|}ð“¥ØïŒˆ…Kª(OOO_³D2ÄDGÿ¹±Ñíô  ^?ïü²æCžË%§åæææSLêü)¢Œß…f¬)³¼%«¢Rs™““:@éñÑQ;‡þÁAã³_ßé¹¹> %™…ߟ‰ê®ˆKk]]]ÐÖ툌Œ ®°°0‹ÎøL§ÎÎèdcäSY±æ7lI‡)ÔÅR©TÛ,-ÎÏßÌ×ÙGÉ¢‹hÕÚ~U“š˜P&Gg¼øamiYü‹pËIH64447{bG£AŠ/#- K4vc~5 5õNÃ~sEu5+33àÄ÷çÚZaAAA~~·ò/ê7[HTï´›šZc¶ÖïšÁã\Ö¼ÀÅÅÅÇ÷<üÑødK%`&L&ƒÂÂÂíÖsÕ¡3ÏññoÃWÝ\\èÝYmñÀ-+¡ o—hÔõ‚*ÈÈÄÔà°©`õHPÜÅå"ä9‰#6½Êç@áÐH»5”b•,IhiíêÊKOç¯ÿÃŽõjPOžx}¡ù¶«Šrt°,dÌÅÊ:9>3s¹5AõðòLdvv``à!|Ð_É©¨Ž™˜˜‚ƒƒ³ÌÜ¶Æ ö›¢kò³•qùe¬$œ&ÑJûÖ Ö¹°ÔÖœÿ‘qž“ŠOR\ö@Ê˃š|`Äû3&๚Zbuuµ¦Èêþ¾œ<àœ·×ç¥>I…_ÊÊgœ§]L+hŠ9ÙÙôsCi|ñ^€1θœí$¾{÷¨BËñ‰÷ãÇ%{zz¢¢ª°`á๜÷Þ=† ÃçÊ--•ƒ…{ú´¢¢l"åÓ§ÄJ æX _+jÀÃÃÿ.ÏZ9KÿÈØÅU¿zhM{{;(tj_ ÏvfX&èí×ús¤âs}MmCƒ”¤×ÍEy.$³L©jyë‚–œÜþÌýSDÄOÌfQ"ÊUk…ÆÇã˜%~o„g`L§‚Ö ÈWpùhµÏÑÑq``èéñ‰‰Ä[ߟÁO\Û[[õuu±11Ã÷/Æ^ÍÐÒÒ:ÙÛ[Îì^XXHŒBBB277¹8ÙÝß_|• C)«ðÄ „¨ÊJ‚€jÁú1ݯM½ÐeÆdbñ%áàáAí7•€\TSS{Ž‹‹&ˆŠ†Ö†ßç ™o %$ÏâáxÙøè.{äÅz°vvv€Þ(R™››«ÀFt„óGË‚°¸ººš™™f§¦¡,wsue¸Æ¢ÓÉ/¼èìÆ#QÂðþ¶è’DLîüHwp©âǾùI™ G›ã÷¬vâËæ_òÓ&;½øRÃï÷hTp>&>ž¬M(Á"³pKŒß +^„–™ÿ‹VU]}ks³®¾ÞOPPü_ʼs'ûo/ð‰zzÞ+Q‰R;+3S__ÿèz¿EÊœ×õÈpê³Öéɉ¦¦fPp°„#>a"))i<ð>­fw£ºªj~aáÕ÷o õgŸŸžVqÎ’9øüÛÖó›P¾ücÝ3†wüE™3>|B{oeEñõk~XP<;£9O‰ öÐ +!qxvtn¬’ûÁ÷oE……ç[¼—ææâ _aÈ&³Ò03Wff¾GAÅÁ1××ı0@XLŒÏóÊî‹/BÏD_$Mävq‹Aôs¿å>•ÃÞØÎÎìd¡ÛɆl`x8`xævvŒ"ò‡‡‡ý²AWKÉÇ;3 –/6{ºÿú®ÿNr‚“=;7W2¬ÐHˆTç'n×ÑÉI§ùÚ·BH%œïALTJµÁ…À}Þ´¥~|Ìßy!GsL‘ÒÒÂä¥ÈéþRÚŒ±q§%ˆ^³×mJTd¤Þƒß™,Á­ˆFÑ×Ó“¯j‡à~8ÌÝKK:n-U_Bbàxbo …É`JÏÀèn[ÀÎ"ãß°£¾fò»ºM7ß(3Æ,Ê(y&:&¦Ý’Ûý¬ÿëW "#¢¢Zw¤eePÑÑÑ ß°[LR«¨L%³Ùì-4¨<,²Æ1ܤ Ðöˆðð8Ü.e‘‘òUFe\i”Q±¶p~~ÔH‰FÃÔµ‚©þD¦xZ­¤¨‡ãÇÞžönVèEŒ¸ h ߥgg¶ù#ú¢gã^­Ác÷öm"H²¶%vÃ  ¯ «|Éð‹ßKQšÑPÌ¿‡~ ÊR4[ÏÀ ÂiW]°0÷“ )`4ÔÔ¸r8ØÙ±qp™@kzGMUÕawvbqÑ tRéçXXñoW:gfgÏö—¼W{c«ºµˆÆâùø¼èGAcÒ˜·ó=ÿÍÒR'?â ö—[/Ô2Ì|qúOp¿xŠj>¿ :üR£«=è±›¯Ö~ÛÊ[ ì­ÙèÂ0GtÓ÷‰Ëùêl÷zBE‘€7eWõ7§”RïP¬_ßÚ‚€Ëº³Ðàü'A™£Lýƒ‡T"ü·ÒÄøÓ`û·oÉAí¢üÆœ˜ÖÓí)›ÎçÄ‘ù®IžlM—¯øüf`c¡ÿõœá÷ó_Xé™ Y™XX!À(&ÂÿW9’þ÷ñ·ßÿ/9¸‰„å„”Ô^‹>Ä–ðµ² ´„!1  “°’0¡ª¸’Œ4!-=¡’žµ=Èk=K::YbBbS[N::gggZg&Z;:%:—‡¹nþã!Ã?ÜIkè`HÌ ÏýkA+Kk{ž¿˜†ƒƒã÷Ý¿Æé‚_VFz„ciŒÞ:š9ñ ÙX;Y;Ð(¹Úü~ÆCì`äâðûf.S=;{#e%Qvbº¿šD•FY€FÈÆÊVÏÁLßòç‘ááøû=ÖzVF<Ä&FÖFvz6vÿ0NØÆÅœNb§e ÿu‡ƒ™ƒ¥ïßË‹ð×/B0‡!8o§gçJHþ÷„¯%8 ÿxöoŠÖ”PÔÌÒˆPÁÈØÈÎÈÚÀˆ›î÷BðÜ–fÖ„¦vFÆ`ûzúö´ööÄ„vF–<Äö®–Fö¦FFÄ„ÀQøçaÀƒ¥övf¶ÿxÅ\ÏIï÷YbB{;bó·ŽFv®´æöļÜt¿¯üg7ºZÛ<ÄÝþ_ïþ{­õœ쌌þ5ÙÎÈÞÌÍèÿÀä?Œ1ÔsÐû?¿ûu'/ÌDú’•ž‹ìÅúŸ&t´Ò7²#æe¤e¡åa—/LVþe8ƒáÃæèì~ÿúÃ÷t¿üóðà×À_Þ7²6$|ˆ‘¡­žÃoç>\ûK¿}ÿÏ€ôkÐ?l$©3𴥞½ýo¼øí BnGË8û9\—,Íx¹õþÈ+ˆF.´¿áù׆yeô̬;൞‰ÑÛä¦ÓÀ5‡-gÿOs(Y>ìàïÓØÿ'óèYƒ||¸ïŸæü{"E;GG»ÿn¶?7màhplúo³¼ýg+ø¯§â¦s´üÐ?#ûÏ.gü'—3þ/}þ×–üÞ£4¸ë?ñ•‰¥¾žå?Ï"öûܲ£ß¿~å„®l{3C#°Ï¿íÑÑŒÆîO#üóêßOÿ«ƒhóOŸüëyš?š­ýß}óCì]­ þ¶ð¯'¼ Â?UÚ¿ÆÞ´W}=»¿•£½‘½‘%¨^Nkk#.bÂ?Vý«ÍјêYþ¹¡tÔÿüÿö­õKr ÷‡ «ç¤vONöß“r2j22 .Ïnn,ñ§÷ˆÿ8ýÇ&~Éßñ§ÿ­¬Æ= þ3o^ZÙƒ £ù5Â᡼ÿ±²ôxð‘™ënzض¡‘1•Ñ‚»”~Ÿø7ÃRþ}¬xö€häá¯Ç?øêïãEÿðÜïÁÿêÚð¯ô/®øãÜL»&ÿ‹²ø½ÀßêâOTù{îÂsÛò>+¡1¡½£­­ÝdÿÑ\¬l ,í ͬ ,ºè®Ffv„3†–ð¶oH©™%˜TÆÆÎˆ––öwåÚþ˾@Îé[ÚX€‚0Óó¾ü=»!©¥˜ìqF–ÄBÄ.øe´ËCŠéØÛ8ÚýÿÊPÿGkú°>© ˜”î×BÜúv¿ÅÿnÕ?²ú¿_òwLþYï!4fÖÆ6ÿÙÊÿ<üÿI,mLþ³ÕÁÀ»îï<ü7áÿ‡Ó€—ÿ­ö%þ°ÒÐÈ Ý®„&vz¶¦„Æ6v„ÿ®8ÿÌüžô¯aÆœzXŠÛÌÊä7Mþ·h¦£óà4Z[kbB};`á/JðØJÏäü7ê0þÛˆ õ,$:áOÁj·ÿàîÄüÆ=`#@lB{S½h·â÷½Ö Œÿ¾–~G–ðÜü¡_]@ý[ZêëXÚØþy„6Pôn NààPjzFjvjÆßõßÛÂüo*ìŸ ù—L#}ÉÌÂõ;ÒÿeqFzÖ_Ë3±°ý˳ü÷?òp‹¦å¯‡7þwƱ0sPs°P³r0Q30±þ¶±ÿ7…ø¿²êWIþ[˜@|€-,Œ,ÿ-¬eËlÇ_z‚d3p5#Ãÿ°<Û_ºâá¯ß©ïú¯Øôzæfø7Ñbdáø.&úß/œÐrý;ú?4¥IúÂìMmœí MÍ œ=Ðg U6néJÀ ˆ˜?Ÿý Õ¿äìÃÈÿÏÀÙÿû(&ù¿t¿&øÏ°îaèÿîþu ƒΙÿüç/ ñ!Ñ™X©ÙYþ‡$gú/°ükÙÿReV¶–F¤œPè·]6ú:žÐÎÈP]pþÁ4½?ÖspÐ30›p°y°—ÐÞ0e«¿0••þ6±±<`døßâæ/<ü×ò`…+¡¡™“‘Ý/ üÅâL­Y9¨YXÁê¬ÿÛ¦ñ§§þ%’äOø£î§5ø¯N`cû1vzöÿ bÿj‡³™¡‰Ñ†‹¿‡þê°1±ürýâ ÖˆÿÔÜðÎ`bcøå z†ÿÀÿŠÑÅ&þ/öžµ¹m#Éïþ¨ì;¥8ó“ø\ÅH´—·²¥¢¤dóI5O‹gŠä’”uÚ­ýï×3ø @$%zÏ[µ‘1Ý=ýžîž/vÐóJ‘#ZðáÊ„L‰ñÙIÒºæØ{ä5k$8ɃY†ÌVDÞ;Šç43¹É9ö%| ½*sÀ£,©F›˜¥îFå³¾O)%aŸ§³}*±S>¶›gZ6Z€%ÿýp¦7(Êqf‰âº<_š,ð5Vûð…ÏŒ.¹ ¡ÀMA³}nun|¾!Å3ŸÆÃ»Qa1ßg«A¾_ùÅZ¤CÞ†Œe–¯\X êÁ^ÿ’¯<û²_žZ7õtí}XÆ>uûCô%ÿrË“°B‘C ï_{Iwùwj8oük±UöºL·fö#£ùÊ·}7 dìD¯ ä¿ è¼Ý¬ õí‰õéއßâÑØû÷~M¿ÃÀÇ#«{®§s‘€ð~Æ>›á/ûCXŽÅÄŽd8±ZÛ˜‹â_~Xâ“E´²—å™è½3àZÂ(pàm_¶w§+L•ˆ‚_æ•21Ò& Ø¨&„ÆVs¡Ë€Ü¹B«„’@+qðïʼnP!ÃŽ%ø›F”AÙmý±A¥=_:J€®,&.IÁfP’ÄaÚ;5…–[zƒ•‹÷¶ýZ' X1‚‘wKƱƒç ’Iœ" zŒí¿wÞ­ƒÈ«tpSe¸#,°IP* (j‘2‰•2U’' ¢Cõáëàj r<ì;Þ“®Br-™Nœ± `wŽR¡´TX0 žh!¢g§'`Èwª‡+!³\Ì©Š‘±°RY-)f –Dð‹Ê!Ë4ñuëôtw.|%¨)‰9Ø P½IJML¢ ³œyšÀVêùÕeÑÝ™ê݆};pÞ£fv)R,EŒo²¦Zk_Ÿtº{uã«ùB"ÄlB4ÄqÇJ3'3üŽ3Y{·ýáì÷ ÐÓ*Ý×T =F÷=UÖ¹b:äʦ«Sþ8!Ø"ˆž5Q)pÁ`%îé—<Î)î ¦O¥Ž«áÿ4ºžýø:üx`ï×¼|ÒC·èÇý›^U¾5Û&‡o­~¨}ц?¸†õ†ã‡¼~2?j‹B!æÒy[5LÍÏÛš2^m!,are$Js\ùN^°±£`{¸ ˆ bãCgòjø×™Ü­}.¯ÃäÍ6¤ “¿´ƒê}±ƒ¨ʼöo™Ã«jÎáM¹nÇ$6¶€8æ±T|zLl&ˆÂ¯Æ+á_çpß3ûl~Õë´)B?« HœH›Ø¥†9 ᲆÄJ-oÈÖÈßPi-í{AºÐr0Y( ¦b©Ðo¥(£”G‰†l½!‘$NL ±1M}*|C–â4q©¾!Bs&‘}ãáòÅuÖòžÜcPm–kÓ¿ùY=—ÄOƒúõó¢’ç¡.kºó[)j‡¨e&Œ0Í|fTÄbu¬ýH"^QW¿Îz¾Ä~z°¾H³i¢B»ï BK\êÊU¡-òÖ6|œ¦)RD[kRa©”‡™ŒeŠ\Š9=t>®†‚ãx`.GQ¦úþü|8žvn¸P¡ºüeö*ßpw]íÂ,ƒŽ7 "ýq{ æ7uZ8BSÆi*,iúÄ£Þ›²ê6ba-E6fÔÿ¤Žh‰‘‹5¶Š3-Tj],ªá_ 9òmÆ)µ»æé*sÑl‡ågƒ½˜'còV’uR GsÒ”{·‘%c­-¢ „Á§7Š ãg 7òÐ%¥þuIÑûÁá:BÍv¤ g{¼ÛÁtìÙº7ÈB˻Ѩ߳¦„¿«¡iÎßMyn«pR3&sÂmÁØpŒЉÈÂ¥‡o ªá/‹1‡ŸïFס™ãíÁbœ`©âüf{Õ(‹båXßÌTx–o1xð0Y–2t–e ®æ2Д/·Ê»c„‹‘AÆÆ1Nhª2šYX«>ï^ ÿº øþT¹äZ<™¢0Óm7þѵ¤f›Þ,žöÆãK–ß/zõgžHS&V÷½éÍܲDÙľ•œ% Èù7äøm¤ "#œͨƾ+ÅYs:5:¡–v“®EÝùTbVˆÙ­Lä'{í»©gé¤Eh«ø²¹š)ù̹ÉG x¤žÚq”-ÌžìMŠ‘@ƒOÀœË,Y cs–lÊ&M_ÌjŠ6ælF]ÑÓ@ÝPÆp)ͺªGY¥Ô Ù<ñl«Ykù,µþœJ¡P"’wSŸ›ûÆLß¶Âßo~†?ß®ëè!ÈIDBÑ…>Þ{Ó Ö?çéaú¥ïõC³·ÎÞFÙ#Gý<^9ºé½Û_£‡á 3ˆÆÖšãžº›Z?‡UÌÏà:Š=÷࿸øažë€Ïn'Ù|½ÿx‚¤À¿eãCûÑùê÷ttÚÓv0Ðrü7“›l°¨ÿU84½ÈˆÞ·nBÑÚ¯‘] ïò§=!R¬“¿íÈÝy)§î1ðµÿÑ+ö!òÓ!f¿{½5™æÔ0EìpbÀâ@Žû^¿)ë_åîúG<ýѹüëÙÕeÔúøgôG«Ûm}¼üó×`†ð¯Ö;^þ=½ÛÌPîc9˜·ìC»{üWx¾õ[ç´sù§Çò]çòcûâ"zwÖZÑy«{Ù9¾:mu£ó«îùÙEûut‘Ÿáïz^þbƒñQôÛp2õhEˆ`Œ~‰EW­h‘ÙŒ¨ :#Ÿ£Iä‚Ò(?m«ÑÚíOÛUNndXûv4->ŸXºZÞ•.&‹úéÆóÙ<ãÕg÷:‰ zú±sÜž#¿2øx…¦f¨·Ÿ£™éöhë}_;Èþd6v%_žgozÆ€àÿä…*Kµi ²8œ/¼iuÌf\è°•Ð ïÁ0ò |hx{ëç݆¹}^½{2Žav¹)!A¡^V5~9jôÍ|ƒZûÑ…[«íV¤zÓ[9ùìUtï"|©E¸õ`69w¦¾MäðŒz{Ý9û—t@ÖáüÃlÄ8ò~’ÜŽ¢ÿ¹Ç ï¾Ôk²¾ƒ–Êrd³fžZ‚nû6X%`€lÚ«7VÃÉÄ_ëó(V7d–£˜7eÖÁñ| \mï½Sëÿëz!²ÏÇÒ>5¾Õ­åøv[µpíÊ{ïÅ^À-zy—_23~úïóöûÜW›¼z¬«{C˱ý¡uðnAÐ2,ÇüI¸¸²¯´?ß[Z=ÿ\mìšÙÛ½Zß ½Ý¢‰t·7(Õ¬¾û€ÍîÚ] /ky}„áÍi6£Õ¤x³›œwÏ65º²Ÿã %¼°Ot«»o7¡[tàÖAöjä½¥¹‘':34w©¤wÐÄ» ߢ‘·¾ägïidcò‡¡gigŸåêÞßM(Ïûk¹>ø[EÛ‡·5of²jŒ·ù{™T¶[cåcø© ®ñxدa°.†·¶hVÊ"yf9ò—f·—FæHF6æÕ/û½ÏY‚øüò<Ç«çÌn?©-—¥GÙ¾ÒÏ/µ™eêw‘\Ú~ôÛŽKãßê {,GÓ»q8œ÷ÙˆÉÓbX=5n#†ar\3 ¿ôŒ>1†Õç6bX;Üšc(Càõ´VÎ¥Ûˆ`ƒ¬Á ›F£,‹ðÄ›Y=Ún×0Þ®ŠY…×ÀDyÂÔë}º{ÕS=$o Ó•Ay Pö Lòym6:OfË^VBêÓúÓÉÖžJ±­ß §ò¸±À[»*áøwÉ™_/äy4? ì?D÷6+Ú¸˜úÉlÏ'aƒ?€¯‘åŠÎûò!´X?›Ç±ƒÇÅQÏúÐã:Âp9–3mH•ßn-í;˜™¼ŒÚâÜäúùÀQØãúB¼¡¡˜÷Ó ö F£Ïó ¾¯\ÞÔe-‹ixÁÛ—%_oõµŒ·¾Ææ‰¯ØXªžý h9ŸÚÛ·ýðKøã(Ú¬‹¾FÀð¾ÏöᇷeDz<–Š7Å{¡X>•ýºŠ¥ø¾ÚH„õ_<¦T©º[oµÚ4à=É ùÎýßv ~VÒ÷bUxŠç_X—Ó0㛯²y7 ªåëoZ؉‚LÍØavkX³;’Ê;–ÀžíJ” ¾ØX,9¶à. 2*wÃßsËâæ´ÈŽÇì<{±îp”Õµ`þ ÃßãšLÍ®9+ÊRá¯7P/Ý*÷‰™å±dÖ.#·Xè˜9m!Ž –lF¾÷vɬdÍl±ÃÁçcW‹ãü%Šoóëüf¿|ˆØDá6JÏ™¾ñ{|»X‹.•¯„•Êíf•p>–_“=‰*¯=箿 BcŽ Ê FdJ•1\¦ã:êœÇ9„þ·ìîï5c:ÐÑð?1ˆ Hû[‰ V*±y—„ã5öúå—Y‡ÚëuÃf—Á°zI^ݰ-¯KK 7îU÷,š©m®ÿ,õLO¾ª¶¸±1uûfŸÃÒÈýÔïâFÙ;½“â˳沢-hj?UqÝÖ,¹×“þ³+Mú³))ßõçrÔŒ‚iŠùltÌA¢¿«É5ùá ©±ý ¦ôÐÅ¿•pîÉ-çVQÚ‚æ/ ^Kâím‘7›“¢Ú'3Åì Zíµú5Í}C‘+Œ|+úä»Ò Ìü˜5Y í}žŸd/F)ï¦Ã ‘yüI7Í›!}¸V½§ÖB²¹$xz'!{K”¿$o÷º[õ’ÀÕrR|v4O8äöÖ7]æ.¬1È”ç#ôðvtçIt7É=¦e²ÌÑÊÒKÎ8oÆ^¯7uÔ6—=£ÚgÆwE8&”ÓDbŽõ#ðl’âd¢ŒJÆÙL·…dbŒ5XZ‚!©ÐŽ11QH'¢>4Cz¾B˜yXgícæÊ·û}[QŽ#'N ¬¡!tv.NX"¥ÑÈWšªiêŠJ¹#’òT9Ƶäù5>çgÝËë“ÎEM@k„kC•”D Ø kL’2ÀZ«l uø‰ï®MÆDEB¹‰à!`‘Imè'ãbŠç+îöÓ;Frz³Í’ r<¶.E28a¼Ò˜hj1ÀÃJ–ôf|›%‰Ð8RXËS™øCLM±Â#‚ˆË‡QÍ—œGéÛ,š‚ŽK¤¡§1ƒ€$ኃðú6'œ•-ê‘õŸê®»@U™š$–anSB#à`ÁSl•]`™½ß­JшcßÄÅt’ lI%O°’QJ¥tVÎEãüò¼sÞQ!$ƒ7r€a™³ÂA"àÍ‚ †š# æ:¨ÐæÔdô˜•P”p Ã6µŒ1°ÏðßåEšìØã´ hº˜R…JCÀ‚J£g)Œ¢T§s’^]ü¶O88NÂeȤ˜n‹B&66˜Ê%8‚æó%ˆíãË=ÂÄ”ïÃr8ìœåÚ%Ìi g¥` •—aº8¾è~*uæReéÑùøÉDq †RLéÌŒÜQBbªI’`¤ lYäTgž`Áš›0Þ´šB–BT¢l5å6NqœèÔ¨ÏÌWë zÓæÉÛWZú& $ùž»Ý:wÛà"ŠçIßV¡û;s{¤·¿Ê>zÛ™äuǶ>úwÕX¢«'¥šj\í÷=Á½ßœæò˜Çšéicÿ÷?¡„¦ù–}£E4;˜èx ÆóëÜÀ§ùË2t¶(Ò ü#Ÿì{ÎzŸbÎØ##§òõó”ð<5Ù‚©.F=ŸJ~8 ùîàµ,·\ÈÎò‘±‹E,¹ ·Ôˆß…ÅPN]*fô¿°Órh=­ç†v²hòŸú¾—c3YªõýÇL®¼}îÉ~ïŸrÖÕ9Ûʧ®ðÙ…'´ߤƵS‡æ›„.Öï.É÷cÖÃ6øµn•ûMúúIâlwŸÇ ¶J E‹Ú©0 ö`àcIcæ… ådߘQøO kŒé?<4¿ýá»)Ú¯)Ú0¦½yÆþ›2¯Ñø^ûˆ’دašsÍ ÕŵÍ÷aç:!*›…l°ë;K&¯Ú+I4lƒM±Å ^õÿ±÷$ðPní+ÊÚ-Æ^–1û*){$"JfìŒe${YJŠQ²¤déÚ†JF¥eK²E…l !{|ï;#uo¹Ýï»÷ëëþÿ~ï¼ï9ïyÎsÎy¶sÎ{΃¶À‚eY à88\ÖÂIÓWʺºÚº&ZÚJÊš&{´õLT´õ÷(ýs—Û¾ÃHêÛ^Þ45æ@pûi¯w °@‰æ¦$úB˜&·!` šù| ƒã§Í¬€EjúoCøvÛÑõèû­æç]þ+¢ñ[€ óV4Kÿ›“W‹.®}k.daëÏ íóãþ•íjŽDGWp»ÄúçäÇåßv/ü£ÉrÚ*ïϯþŽ…šßº²þùÉÂ+‡õf÷Í‘¾þ5п/)þ„Ë©ÿ¤ø4t–€|éW쯋¿2(_pkö˜ù¯ù+ûh©-@™ÏC³Ì#c¾A]>-ôú à÷2Ôt¾-÷&ãç¨ÒmJ:ªPˆ c ô@ƈ+ÉBZV迲~IçÑ0ý¬h§QšY;àMÀ9c<ÑÞÔÚá#MnÞýiÛ}ûKZCãP² <ƒáð —¬,! ѰOß4ÿŽçÿHÀÑ9IPZúã‰ì.iéßÄ|%ýñ´vZ P’3HgD«Á{ZÈ‘ „t0=* n3úXK ‚öLi§ù¶ À©y±b<Þmáh A<€]íæÁÎú3X;Â"¾ñÖÎ&( c Í €9 ÃdÑ´…iajn®ðùSæÛ›¾'ÉÎzûŸ-âõÐÜߥC­ ú}…èÍhEš 3M¢Ðßùè9ÑŠDr”“‘qssƒâ‰ÇÜ- P¢³¥ mQ¾Tzk{ËßA…¸8›Í2ŸËÑÁtIZˆ’¡é** …à ñÛ*ãj÷‘˜ñîà/XÔv6†ÿeø$i¥M­i•—ùbÎËÄœ,„ÚãÑÿQ ý€A¡À_8 £=ÃéÏô€‚1À8GÁуc ÿ¤0_•…ßHÀ¡Í,0¸™`ÉâQx´9™¦0 3‚¬¹¹,ÃÏð:|ÿA¡1C` <gfÃÉ¢8”9ðlŠÂÊ¢q€Ð'@m\þ.þ‡f>Èÿ$AÀAþÇ"1ˆŸüÿ=ÂQ`ôñgú²Íˆ¦ ‹XVPs!)È¢V݆üÃ7„ ÆR‹µújÞ3A b4?¬rv¤˜ë˃.ù2 À‚Èx1l숖_©*»h%éi‹V¼Ð÷¯þ,uÑ~û΢ÑõùWÊø¨è¿¼(äŽ{¿=Ÿ²(ìOé‹ÿèbÀè@ØŒåŠõ¿Åþ[蛿hþöƒþ)ÿ¿GÀãMe1²XY fjÀ™ÂPà‚¶9AÛÞá?9äÿ/ÿƒ.nhÌ'8ÎK`Àû7ó? 2þgü¢ÙÔOþÿ!dïU6~p‚C]MI—ÉŒa‰ËR †=ïdð³Ül·ªÃøw™z•ÌôŒº’¢Þ±¸þV÷C[昇ªQ™l:£ks(W‡Ss”DÏ¡D;³b=dÆ Ôð§ƒ+’ÏIë¬JÖUZõöÉådïØ×#Óæ3S* „>$’ÏåZ7g€Ü5ï²½»F-B„ŽâË9VôÛã7.k.¥ÝM¬¨ '¯^ˆ …Õ/Ù±O ¼mÌö/1ÓÙÈ$÷à1BûÖ‚/<ÝÍthåúõž¯+¸ÓüwL‹ŠŠ®búÁ Ú¤Rl iÂ;¦ß6åõ±€™ —6ˆ-¡Á÷ZNXM»¹k¹÷«Q21Û½=,ÝtôôF«æ(½‚ÆgÓ³²g&G\\\bÇZ¦Œù¸·w 8Ïb|ggˆØ#0^Õ° p,ö’¼Û@ü6ÏŠŠ Ù2aa᫚ÑŶ©üƤÞÑÞ: –IÑðàÁ£º{Àâ¬VUˆ¼$rss¿ppl²NæpëíñâìíííP(4®ÃÉÉ©¹¹¹ð|šìç·´{¬9ÏV^T”†ô² ‘!M±‘§©ûØ×A)ÙÙ!'OÚÈ…KÉÉy”œäfç‘’uîTÛµ‹±{‚ê9.%%Å#eèØ]µ±*|jjʼ,,:&zÒÓ˜mÎÁÁ±; *ÊRüô)JAáNÉr&Å¥¥ MM-¯¨hnjÚæ; v‚ÃáñõKK]eÄZÑÞˆê‹òe|¡@ZjVq6{†6–€`-bœ‡³ÍËÆ_¬\Y3 õõS˜èzuË–-s³Ó2Ý/EÉP 1Ä6¯áNõªU—BCW`±7UÏXàñ‡ H!u@Åã~‰êâ`ñsp@¡:ãáp§Î‡áLŠJªªÚ1¨]ôðØXWÜ/ÈÞk8 ”þþþ޲3·oÝJNI‰ßî]àÛ¥ö÷ås{Å×±rr¶Q¬É999O9ÖÇ´ˆD…#wôõë+c±AΜP£|MMM»fе¾¾~œ°©©iXXX-7À£ ©ÖŒqÙ²eU¿ÖæÙ6ì¹´êÐ*ç¹’˜ø~tô˜´þ ;™’ê;7›––ö¦!ËwjÔzS™’úIÖ} N]¹"ÐoÕÛÒõN›‹ù/ç˜zÅØŸ‘!¥¸ÅŸ™}hô:$*ÆÁ  8güÄÐ+Õ3›Þ¶Ü o$—÷7åŠk'xO%ì bñÛk`070¡­£S{Eùÿœ„„„F¾NOZeÈûwF3'™ÜñqwwpbR,ô+ê5¾uëÖ®À‚,BòòF**.×'»=h*Ev¾~Ο9êÿðáC€hpòò¶66Î1%¥¥}}}ÃÓ|gÞ•—gÈÆ€ÐÐÇ÷ü™qõ®®®Î#G6Ÿ ¡™ƒ33ã6؈‹Ž¾út&ÅçEÞ·µÄÁ®>žuÏj5iÕîÝÒÒ$˜™ƒS=2n@áðìw×p.]v/ЍùùÏjjj**úl-¯gg;¹¹½¸é$¬¸²îªv7ƒ{79Òͽvm v³¤ä£êjï)R2'‰D’]óä˜D½?3×Á9üÁ.nó|vï^BQ‘Ï“$õ¸ô4ÎrO§Þm¦É´åüêz– EÝÝÝ–¦¦ïÞrMéèè N& ³‰‹ww_òíÊ`ÁzObôYž—Ħnζ¬Ž÷ù0599 H@°.HÌÆ¯E '-)) …us»„ °Õ‡°ø죉²<´äÛEGFFæå½˜Æs|€ê5é\å´fÍš$š„÷Sw»»,3šÄ¼•“<Æð›¢Xé2¹™LÑÛý—Ý[rYŸwųÛn¢©©Ëp¸döu6ï_û”Àô‹Ë‘I¹œ’"¸ ÛF݌΃ ó†*cÇÝÝ¢51ÝmKñ]ù´ìw‚¨Wù#XoŠmÝZøFžÍÂs*#K¼ÉÎï„oED¥ØÔhÂxb‡ƒjr²µµ`§ö¾Ì4!IÉÛM·o+’ VãàÒ;ímdR}¹î„¡ÔX¡{ÇžK‡Ÿ…µUÇ{ß´5xÙ˜Íèç—Oéx¥u.ªAê°×ðû7…) l÷$ÖõЍ#xíü&Hªƒm«c1|Y&Äš{›Œz;Êúv x¸+³±²Ây_¤Õ¨„é±±N¦Úê‚Í´w)aõPP@@Î…Ó÷FÓhoÕßßäÜùý!Á5€FÕZͤx•½üÑx‘¯¯gu|ûÛï1»¨(V?ž5¹û”“‰òU5zÊÊo#D¯FD´ùÞæd).))~¢›åßš§nÑtg¶€{mäÃ-R±Ø•<<ü²{÷yÖôÔV«JœÞ*"*úì+½ËE¸>0Yw»,¡zÊoD%¥î„êŠSò/*ÅÅ£-7°g6e>óÉÍ9)®={J¤IH¨¸%¿ÒÉñBmÙ+!%Å´Ww|b"£Kg}ùCµ’²AžU n…·óO†jº-:®£a2Ë%(´³¡AàYÍ]Ÿ÷722U9øEäm"Ÿüª£‘¨²å òÓ,ýwœŠ‚¬¥M¹\ãý·Ú 5m2‹€×?Lvë§¶4d¥¿ÙfÐp[S,VEàcÏÑž¨±‹Ýìh4dzg–íí9†<¥‘=$AKK24Ö©aC¬Öìø‹:€€%%úî¨{Ÿö!I}«ßf))mÍÇZZÒjê[Ô€›Ý’"ê9nƒ›@!#S\ï–³²¾«Ñ঩UÀ̙ء¡q¯>]ÛÛëJzú›"^ŸU<)»5Nîׯ¿!»+´îH3åÕáÃù¨ƒò ÚÑÃ@G”Þi»sÇûˉ±‹}ìyyŒå¥­åv›:4ú®c#Û“C½¿¶¦¥¿Ñ¾äó²‹G#‚‰<™j¨¡ÑÜrõ ~¤”›Ûµ¼|pÍà_Ö6É+µe ÜÕµäÕý×õO;Ñèse¡|±Àe 37$h.m¦/ï`Çš‹.$¦5W?q.N7pWT 95ÊÂ^Ǽ¢ÇsrØÃäEc¢ê®˜uëIgCC;ý™nLd¡#"†CC9ѳúJ––#Õ ”A»J4 f)77dªQ7T\Lbe]!bo'–i,¯µçöFí%·AÙ™•½{¯œ]™©-P%3gW™hc»¾­°Ü÷½Ä`}úó¤¤B,qøMï•+Åüü'ÍËÒBù;öíSÖÒâ”ìi‘ P…›áð²2q9$þÞ‘ÊtE³G{ä–ûV¨æ\Ëbbª8û€'(yÌ&7¯È°Š‘íñ$˜pbÏ©l1¹‹<+¯ëy:Þ&÷·zŽô7i5Ü«vjšÚj¾¯ΛQŸ^$Ž \ÇÍÜè4>NŒŠÔ«¼¤PU[kÕS3û¼/ÛÛÌé6°b¯þÛ†¢ú¥ÑšGUTjEÝ ÁÉî}]ÿ 3Ú#(g9|.§–öáæÄP¾SÖ¼$xîœkC–Âø°ÇLŸ~[MÂi)’´ôû©±v«fʺºSV¨˜ÔÔó§­®bcæÚ$ÒÒâi ÷CuQIÄÉWçå"íÜ6EˆäQÆÖ®ôušéª¬)µ7!éÛÎ¥_Væ«ÈÒÕÝ쮩úg{FÑ£ö•¶¶²öBÛì¬ßlSÙûçÃcõ†T¼»«©ÉíbରÐöÙVxÅïxf·J;N™‹ƒªädg‡n]oZúÊ̪¿l÷§Á-qªãS‡ Ùî8J¯TnÓGû÷N…ˆG~d›r´ùõžb*xWN;È^^Qk~nzz ›Ö )zd»(??£ÓeœÒpßÌÁÒŸŽCU^>»Å{?[’A]½+i…DQ±˜€[hι ØD!76ÂäL5‡û`M5/—WÒâõÔÁÜCQyvfûMaÄ’éØwg3ŸÉ¢¢³‹Pn[b`ˆ\Ϻ­fô¹\lx å3óòß¿O¬À茢À(Ÿ4qö JZCïYíê³W¦ŒJS,›Y_ûcÊÃ3ÒÖFOF*´9ˆ[£ß…ˆØ–ÄDDô˜›êñ'DÞÖYw±TWÖJØ’L¸‹6W–>•ÍÚëjÎ q`o*•íôPû`ƒŒLNpýa`ï—׳DZ¢ëkçáCC÷c&•é‚wᄼr²Ö=ßà ü^÷*$?OÃ`Zy{{P¡êZcSfE…ä§Ñ`LSq±Jûë~ƒä@ä®>Ú<¸ùásnÚyÖM.?0úU¸Õ÷/tvâ í®ˆˆä#u¡KH|º@˵)(4èé½HøÈ¯¬ªª †ûúæW" +TŽü…³)‡õât õÅÄÄ[¯Í„„×îîGÇÇë´XtxK'èÕÈ-Ñâx¤âß¿7óxqÑÐçä55­Ì×”aj‘G=Ü:¿úÑÓSNXHFÖÕN˜WÈ©†¯e,d ê}¬ã¡ñ•ÕÔ¼.véKó’’†ŽGV»fu‹x¦"¢JÕlé8ÎçëbÜÜð5–ü® ¥Ì:g̨˜Ï/ŽWNqY¥tËôÀ&ïÊqm-4Dþø1jêׯùùpbb€@žž, ¶ÑÉóœRÉ »¥¡ö‘šP`ã¿9\C÷Ü’ÑOå‰<Û ­¨NùäQË…Õàr¶ùPnHØqqÑ\I™J'ÊG¶Ÿ4 p¦lr=`tzú%÷ (jê&$? =ÿß¿­Iˆ –r²ß¾ùްS V©«k9š•Ž?_öîÙþ¼£VÜß—›O¥h×âm±8]ÿ<9‰nµ¨h>×¼¾ºâ¬Ùû)´áÎnqIÙ§?K$´0 °ºHÓ¸Ì&“ŒóæÍw€ @CÜ]-5zëvÏÄ™î*±€…ŒdÆÈûƒ 9þ-·‘¢³¾‡ë~c'åêzyq1Åã±yò¢0a6BlqñF,ú’øüUæ–…‡rä¶@}Õ5À@wRS_©7¹T]YøNXfga‰äˆeuuf-²aÊ<É<žÃ“ú?e–eUÜœâz´HM˜º &Çï÷‹v´¼r|oÕqèªÙ*,”§gnzÝwcž}¤a@Òrqh×cÐ’‘U{ܬ³˜çœ´—ï߇uéSmØm‹æª*OØÇöM©2}|7R‘ûiâèôeôhñ%3³¯-Oc’qÏ>4›%(ÿ¾èÏÚ¼¨?ºôçæî¾}'¿¹.šÃíjªw¦ŽúÄã‘w~êæq¹Ošhù™¡­­MN‰Z×^Ô“›‰îÐÒÅå´#€ªT· 5}o·çB*ç·úzâ‰gÇ Æ”TV~Hæ T-å ý!¦¬|`lÊÞÖ®ï[T„Aö(F?¿á&wq.äÒ8âß'÷R@¯&—Zï¢_ñz¥°YïovA›‡D&‡3å 窭¦FGMÍb»*Ú$3Âή)O€õ_üt©]: +=<2 ^®B,RÏÌÃá1²ŸþLËé©“+c锘Ð]Ô'œ_@óº1“Rºt#„Òj†ü Ãçs¤äMF¯»ù=€(s^÷Ø.£(ƒ?H¿ ºiîÁÚþÆÈ‘ÃÕöõÕ.swåþÑuLÌúØX7Ï; …Ä Ò^ZMº¥ÆøV¬51‘ÃE§J¸q?òM|xðôF_âgL¬ WÀ÷f$dY:êBlf±É¿r Ó.ë‚¿=iÁ€XéRhxI+™OîÝFÞ8<£Sª™ãq‚º¥ŽVgF¹ê`E¸ÑâK?“’¼O×@x¯vÆ L©Uw¯¶ßK8R¾ø£ÿ;•»ÿ ¢'>æåí`â=Ðåˆã ž Mò²ç@Ü8 Ñ– óòšl×üs;Ùn€oÆ2²üêpÁoW‹VL¬G½rûúþf ¬-ohÔˆ2ª™ší*³Áýºå©[LìG‘»áÄÏœn ½º:ÂŽŽ(AH@¸¹ëƒ)Ün=?•D¡@_©RF]¿*zw"—˜øüæìÏÌ´·Fü®œîÅ¡v``oÐÞ\Ü–þþ7GĘÑâÅJ;ض‡ZB‚Pc£ Ößw´?Û:«(Ž_ÛÎ&Ò.Häåá’3Úˆ '7Îî¤Ó1Dðþ¥!ÚÓÍqúéíÅVpn†‰Yš¦¬V­McVÖ»‰ºæìêêχó™íí/^àÞ8p`öe±æ—”´xÜôîŒ!ƒ†NâõNòë@`aq-t$I¢r}ÿ¾ôh^|`àžˆ„„Åó=ê÷ë×$6pè€8ÍÓ¤Vq-Xo®mÂe€i‚ƒ‹’‘V—Ç0A}UßæàÓbCÞ>³ž„ú,œ¡çÇwE­­×k:FÇ‚†Æm’ò³Y~ìÊ-È((,&sÒûù¢EE~É2&xè@NPÌAl”yŒ¢É÷Oæ…Ëž78“ý“¹´<8QìÞ<«WKPMÏ×Õ}wió“ÔÕùs¹_þ“p•³zÖD&kÛ錂@¦ð îQ?[¹Âdlvp<<\ê¿K]G·×b‹¿©UeäUU³8TçÀi†ÆÏEI'†€’xOÅΫ`²½‡J‚1YʦV+LXª€õV^í¨éèôMò× BBDNGâ蟯†"¢Ñ ¡iq»ÈSU’‘¡2¾6!¦…ƒ{¼ƒ>[Ü(R§Ë¥vw+Ù¼¢î‘'·íß›:’MõBy÷®4oúϤÓ3‡ØÚ¢‚ü( Ç™m½$ó#L 5…]ÑÌšÉÈdù-(t¾øNAœ€ðÃyñèh 6ì ³˜G ]•¶Ì(X™Ùxo=ÕmÊ¢ 뾌 å’C)ž; •ÑÑÓ§QÀžn~¸\RW—.²X™ 3go¯p0™Óèpžáþú,HTÜ«WOWçíþnn øÐlT›ëüBÓâ¾wHð8¥[ãë[}ÜϾô1Ÿ KU»ñëÿ&ŽÅE9f¶‰ôú* ~u—êclžqÅÅå ÖäÕ‘[PD‹+Í /¿¬? #c¤‘Q½ŠŠÛ?Ý ÏÈ‚d9û¥ó(Ž”E ~ܵ `·TËÕnµóat´´øÙ7Oyª¸T]§3£öPÜáTÞáXàÁA…w°³[pz·¯þßM¡Ð¢¢UCn7§Q¾¾§½Qêš²IÜî•­ºýFQ99ÌÍv­—‰?òbôe u«sßoüƒÍÄÌjÍJÀf™H÷éé¥jr=æãóPPH‰T È ”I<&Ë-®Ô¦Hçü$0,Djo©ekµ‹ƒ•ýÆ™:½”Ýõôñ+”óá¼­‚êÖ|a‚`ü8 àˆ†úE÷âD`U"FÄ _ð£ih¬€µÝz %!¡1°÷½½öÛ˜f¥- \¶1(£êÅŒ6úãR¯oy¨h‹7ã3©~¾ÏÍÅÂÆ%´³KØXþè·K3ÿ1?ØVN‡E€*°ÉõG÷NÐãç;s‰lè/_¦ÄÄL˜˜"22©?Áª †ùê˘oÏÂüñhѳ ›'2j¯Ê$âÔPLÌ\rað„®¢3§Ý¡Ò/U 3¤2:ûãꌇy`¨Êï4˜Å4‡’20|þoI@>’î´<¥,¶<‰¨ýâ12±·O¦R·9A±û>Ü—õ㬠  y”øg¢$ ˆI 4tSÏÊKèüˆ¦‹=–ci5‘yæóg8:6úxŸö½eïÂn¦Ò¤2äTTNêìQåGGÑXY£&‹¶'$“våŽÅÕÕCqéK@8Ïw4C±´·ÇoS z аb¸”——|}÷.’”š:¾É­ÊÒô¨#pÊñ¼¼²riéÓT8oØLÃT4ˆkc hÔÅÅðá$W1”ouu‡Ý¡LwWG⎔ש!!­­.ºKÓÀ‡%yþfÀÕ~­ oˆ–³"?4?ŸDÛLuyØäº£ ¥4^êy+¦ì'G~òctÔLvøÇÙ ÐkƒƒŽ¬–Œ hÓêE÷?*¤«[¼çæ-Xç¦]¢«.:©¿˜ü 2è^(­„àÅ›&wÕÕ•“»Ë™—ê$/޶çTíö&glm[ŽæMO—ùO³ÄïððéJ•K†çAEËØÙ+¬«S÷-BÓý_{¸½›ï†y¥áßôÑÒÈìlßÿ¶^* ô?­¥AåÃét„„÷I®{Ö m‚?Ms{Dp|ÒÉL)ú,]30°îûw˜Xú+—ÛsÚ‰ºeo·‹È²ê—‡z—ëax,³››.™”FëG6 ~¡.€æ¬½/0ÉÀÅÌTðé±F½j&"`cs=Ö»ó‡/””,Ü´Oä]¢%%…c p Qq6}½G_wt°¿TkÛ–,Ój (ÝÿlǯðHxµzÛ[õ ÁT93FLDDHBCDìª54~¯Îÿ@=Ý›’Õ­•“lUÉÞ2w¨ÿ ü\sólr ½©«Þ‰BÙčв¿Új0…¶KM‡Ñ˜gsEYZF†PðÝ]Ì¿ÍVõU\ ïø*évèJ~âòø¥oêz{ë(ŠŸÜVìñ#*JÑÊÊ*7gµ¾G,{¥Còî¢0›C ÷ïÎy À£¿iüø\ÈÞM:Äìì ddÜnçz!¸ªBŽxüiÀï`ß¡7ºDlaá¢7æä,ö˜dÅLtšŽ}7˜#jÿ¶àâùæ¡J˜JdÌÃÞÅÅÅååå‡FGG111……SyH_½~M§Væ3¥÷DôP:•'ã‚¥¤¤„=+ŸI*>òîó·TK´CC®]¯÷."£¿„¼;±½¿ö}õ!ˆÖÎÎNK[›smhãë½Ò.88÷0š’¢¢ŠjžÌâ&ã¥fMvöìä|ÀS‰&£ wu1™1Ír‘QQc~0È/¡ 666 ÖY-Ôûø@|‰¶ŽŽ†Íó¡ù„„v«ÿúwî¶•V³Úæõ`Ú™-œQ£Î¦q,ÿV²®’Òtç—¢ÀÞéä8zÞ“ O»Ýñ‡ÿæÌtÎ@U8˜0çï”IÆÑ!b3>ßìÆeµÈËÏÿüñïÃyTRÒüñJ‡õ|íÈt¤HæB½£¤ `&ø%6GGǤµÅÅE(¤ý©Ò¥›³-vQ3ss|||0é·¬–³Jªª¹(ßïçj¬5-øP„llŽ«-ç*+ÍFkiip¹€oÚÚþÎÊÊúö Z6 ¡¤ä*G·¤°P²l ÜMRò{õÝx¾áê*±“Ób}½šBÙQµ—8œÄnwyPVVv}}Íût¶Üæg ô*jõíªÐX,ÈÝT‰6€­àà`s¼ð ?\Î6Ñ)ª­úØË­—š;;;üø!N@FJzÿpµÍ@ÀUû¼ÇãÛ·o4êåY'Iè2¤°«“ÅšäääÐüÇJ^ `ÇãQèZÁ0Ááãûñ㯴T·N£ .î]bñÁ8z½QWêjIõ®g¯üÚ28@Â(¾ 777ëâ™Ê$æ°é4º´Õáca±¹ë±°Tuv E€K«ð8(·ôddÄ#i0 g˜=on°ч ûþý5ø}µHR,Z  %"Ie³o_3=Ö5+¯67)dª×¾Bó_ßÞÚq#{|ÕfÒ)=,ŠiÁ​êÈð`þÙ„„–ƒyWZvöÔ‚ÁŠm,ùmXXX†Cïï=|‰¾#á÷±3ZL—•VYhñHŠ‹Á¾O µéfá<ó¯nž$ââš’ÑÔ¼[é8==˜˜Èäßn‰DQÔ{z²l"FÆÁ9wÄçxé±Ð‘èüïkzö[¦ÿ)öJ1Iè]€¶eµ¬;t,,1ö$ìì®Ë­_ûúúvvv’H°±±uÍAë©[¸×°îêfÊÊÎþ·£µµÕ°?¶®¡ÁÝÕÕ¶ byyy¦ÂØ>áDæÃ  ÿùý¾pZ—f娆yÚfúQìsÍÌÌP«–ìg5×yOm÷ae\ÔŸîp;lMc¡¡ÓÖTã¼w²ƒ+.SRÓô’GiL_ÊòæM“÷ÃEAØ¡û¥ÖðÀ=Ÿ#3‚"¥EUm1yzºÑˆË:ýïøô阛¡‘‘×o«Z??A ‰¾BÕÒýýý¢¢¢f'IÉþP\¶œÜ烓ƒƒµš†žþI*’49) ÿîb/îþ©D·…ÇûÑcHÐ…By.EkQQGÇX_͹|í²^8ÞÎ¥‹øW‘iVã)]ï®în»×•'*¦èÚ&›Rˆ²Ã€ÜJÕ™h))åuŸ¬áƒŠ”"OÜu!VKjÝë©÷òòzÞhãèàPTø|Ì•í €‚‚ÊÎÊÂÑLát¶@\^^Ž„„TUUµ¾5uɼX’Ÿokcó3êù°wpX¯dfc‹‹Ž°øÍŽ3B›É"õPŠ­d¥%¯ï®O³Yk'ƽ@þ,—:U´öFïÕÍ+¤),œ%999/reS777KÔ~ë·ù¾JZã}¼6––p"UF^i3r9óßöUZâ„YZ,žš ËkbÝ™S£qZ‹‘4辯v>œŸWš âãc"?Ž3Uª;Ü×·:/##£¢¬ü0N˜ÝbåʤlÏ¥CÎO£½À Ûâ {V‰œ¥iem-³ à5uƒ×ƒÛ²±fÕÁRKKBÂìÅÞTbu£ëYN}}=H_r²¶ÁÂh½VˆºúŒýÖ­Æäø¸Å|­<GG'EqÒN…&:*ʼȽń/2 óg¬4¦¤¢ÚYh`$äñøÈÆfRç šÚØØØÐpc±É½T»¡:'gÓœ·KVììß;¥ÎŽ`Ñã½Ëe’!¢È¤$-3³3£w7s~¤½0È!øœ*Q¥¥.æHÅ­ækm' ”“”TT$ÄÄ:ÿü©™.¿)œÉaC£==ëG¯gr;—!˦8q´àÞeT‘ô h¤âо,˹jàsjÊÊÀÜœïoÀbRo3ϧh­sÌÂþôgiÖèPRs¾­¹C8 ‹Ê‘I¾ÝL`¤­½ ëuc¸Ô쩘+#-...)ÉÄÊj5;ú÷ïÏ1QQc€ÅI~æ“EÀx_^\ÄÄÆnV:89¥°Zj˜=»•¦c^OΧgW‚ÁˆŒŒŒ80Ô€ ‡S¤#³@ƒÔÔ8Ÿ Fí/µxdƒÖ ÔÐÐŒ¤{Çßì"°ut}6sv¼ ߦ˜ß쓸dÕ8rÀ™9š¯˜{zv6œÌ™›•%¹d«á—/ï^‹Gòððˆ†­c¼Ôd=j’¶&m¦üwŒÍŠ‹7?¯Öp4ËóOx@l´’<þ R•cÄcbb&''›Ü¯b£¢4›ÜÕÕ±·®ë÷jí¼ø%&ðÂãÄUT''ñÙúI›ÕœqãÙ‘Uû‡Ÿ*óNî®&ÆÇ›/ý²¹¾^Cëùh<“–dÓ°Cbê0µ "'Ÿ†HŠurrIÝ€òö톩xõty~usÄõÕ•€¡aróø@<Ì[ Öá„Õ|emmYGJ ëpµ4wJúåbé®ïxfç§]HɚκêÏ–z\k32ô„oéê©««{x4õMyýÌq¹ôJ¤‡>Ê*¯ªÚhœg``è¼bövÿkR™‘‘ñ¼¡mcƒV»~|v6alt`€†ˆ¨uxغ/š O’mõýËáæˆZI ‰Y7}±Ù¶6ÀŸ}-O­æKæ"£ÎòÀeòðyê#-Ê–¤åm™ö‡¯®«f°M<sÓ5Iéìë3ÊhRÝ«‡$¢ \\\ޱ÷poŽe X¹ã— ùit›ïW»‚ýÿ€V“booo¥ÈÏÂyË~ÿ6õp ¦½ÙgfQFÂû|·0b»™)šÏd„ÇÌÆû¼³Hÿ3"æ×õ9‚’ u]ß ¤]œFµµ´r|Û7¿}ÛGJ 09Êâ|®Ò`Ðaã““V‹ê::ÍÎG‹ ÊŸ7ß^ó'¤F­7‰;ÿ7»ÍÿK‘6è+ûܤTwö`Œî°.ß±ï™]±ø®$']Gþ“¿§?.£å,̪5>YKÏÎV{ÞN¢Ñjl¨p79j9þ÷ïñÙ0/õ‡ ÈöŒ8K€9±ˆ?“mË};9³Ù[ã.9^¼O¾±]ÏAù?}ÃôÖùáv¯¨Ùƒq:—§+»/†o´) vÄW tŒåª+Q׳ØnuøI(< ›ÝìM`•“Ó‚¢¢žìÏTìcišêêÚØˈˆxñâ›Õü'@¾ªß01ÙR5Õ¶ð×½‰IHðñð‚‚‚€Øñz¼Ùz)—üƒ–øý{~µZË(4×3SîÅáÄüÚì’:&¦³û›3~éðº8ÀθZyÜúÁ ŽÁKK… ¤xN/ñ†µéÉã#B ./ScÄ—ú®ý ö:„€ûÈÛ÷ïßK]œŸsÙ­÷€‚ÿ+Ѫcô¸¶)°;Í<>^ïësŠT æ&uÉûI`# MIII•Ë«%ï-<Ý+|å QBBCF^Ì!!¼~…܌•¤™ÂåšQ\Üd6ñáyÃxÅ1hÏLLÉeeÀkÀ EÏÔ_… ¥xÞY¢R|ž%¥‰xù =ÀCI‡¿DFFšÊÝþ#00}ä1®îÄi .f÷;h+­IqU°&Ý¢š~¿ÁA8ßã³³LŽcV«Æèdm;àƒÿÈ gŽxxz²ó’;Xq»4Õ3-Þ7ýßïé‘ÁÍMBM½g4LÐd4¨dyЦÒjvÜf¢ðgjÔ²Q•Ÿÿ=5u°='3óøÂBS#|Ê÷×Fb=Ô)8/!Ëtìu‹š5CaáKžÛ?…EDF]­*Œ /OKJžUC-n9ºªQ¼¢¡®ÎÎÁaddÔÝÝm5]–ÌËhÙýúJGt_ß-»½ˆ">4$Í>0èMbüηïVðHN ŠQöN²ªWá PÿÒY–#Þòx»×úŠB6…Ët4‹ßï5>‡Ã¢Ý’IÉÉÉ,ÌÌäÒ ÌÆCIñLÆÀôÅ<³9ˆ¥¡á}+÷“ps¢BYÞá ««]]qêEf¯?þüê•Xj€¨Ni:êy·÷ !½E÷×'n0ÃäTì:úBê꣨–UÙlSÄÿ õ+㳯™“S`óùoƒÏÀXbÒáµ V~îXÏ{ÆçùoŒpÍô4ûóuóI¶qQQ]UÊžÜgÝ¡[[üb=d°úÇË^uu†íí÷l/ªúåîÜQ¢zÃ{k&æon ™qø#;ÌU‹ßì/Ç{zÔXÔ5îµ`Ñ«3~¥6ýª‹ðŽhmŸËyŒ<³µÕÅùêØû)4žËõ0ˆñL,ß@ˆÞÉ‘·91òêéû è·K¤õ3FÙcG!¤ÆY °ßÏ¿¹áŒÞ÷¿!,‘ËùÅ–?B¤Ö”D Yˆ‰†bHêV_¦ÅPç:4ÂCù­0ã7§T9îÅ”•±ÑÑIº]¬^pÏø4deuSÐi`a^Îv¬œnààQ«H©7ªiji}{ößSF-s ê^í’ÍÁWàWI˜(Íã•ä´Ò¾Öà¬;º#ÞOƒIE#55ŠCùî-‘Mt´ÒBËÓfw(2aN™š‡öÞ/¨Ðm®#¦ÌBBÓƒƒ ÔKWý½*ÊqÏ›K;JWWyìêJJÌþ #Ü ‹ý0úÂ<Úc²^¨êª£î}w0ûŠ]¥t2.îHÚ‘1¡ˆ?Æ¿:jaø(‡…š®ˆŸÅý| ö,˜Û›'#-ÍWK¿BœõÎ;Xñ·Ú>·;¦Ü;äÚþÑÓsÀ‚Ì‘¤3‘D°2¡@oyæh5ö õˆ‘p6D·é1ÆEF~P[Ó¬~g½h!•kàQΉÃ"±Óúâ,Õ+aíàazŒét þøù*úôGmmíˆç;„®µ‘–´µ Ñ£>›äÉ8þd-,¶œ.k3¿¿^xº·ÏMKK"í¥çaþñWZº sž¬ÖTE.t¨ˆ’Lèù+TÔÛóÝù¦&³•¨¯£ìÇJ ÷šº‚ñ0¢íc-Ó8_ïèZQ0€F§y ™amùþƊͺYï÷ôóM6V¾xè%4ô¨6½29ü¬ÁwN_¾|Èå Ö¼B>Ù+åu²¤ÜÖ @Šï￲²% !éìF"¬^· wsl~gbXÑ{}må÷ðþ½øüüup^^Y|üÐÃݽ¶ÆTfÀöí…Îë×O.®Â ÿ:§øtf t¥/‘ ‹··7G2y°pva~ï¿ïD–“…qµ©©Mµµ&k ˆÒpðð3sÃrr?oõþºº]D«ÝÄpšÂ 'Ø?$Ó“s}öýppFüáÙ›ÒÄe»Ÿdµ©]¦gƱ¼=G£/mñö¾ûWÐàôj{û~eMKAAøÙw_#á̬'^‚IK#„ç V”FØT¥\"£A»‘I‚FëTª þY^’ýc4“XP̦¦'²^G3è{‘p8äQÛ.; ï¥·Àdã3w›™Üœ‘—jŽT΂Ó>=\¶8šWDG«; z±Ûî/&;ÜSPpû¼Ulþzí ÈqÑp©O·f¢aóà$÷„ÌùC£^`Ön.\·¬XhS«†ýäòXo8„½¼â““†~1|NiZ‹¦åjºC€ŠÊy{±"u†ˆˆ\é÷óçߨ§_¿†QF¥å½y±7Ž?8pÿÑàû÷â%OO–g»Ûgc‰æ¡ìà\ ÈoÒ¨—•U:AøæÀˆEÒ[áܱ×Û ùÙu>w‘FC\J @!‡Ç4¹KÚÐ)èWôúÁÐrä‹Ãêw¾RŸ¡ß:Ù¨DÄÍYª[û†×ÜZgAÅu%;<p3úä*Ü€ñw7‚Ì­{qm›P_¯¿Ôœ|qSþÜ•ºÞMnÇËÉžw˜®.EZÍZ©öh‰Ò@q¡Üõ¾A)XEk´Û¨Ãf÷ó«13¡ìë«k §!tÜÀ^ȀȫÉ*ƒ{x²ä44dã@æ¹ý2i!¶D×É ‡Gk±wˆuoW®‚ü¶ „ëk³û•U$|¶æh2šªãÚ6¾áûë??Y½å3tŠ"Z8ß_<ž{S7;;þèäy€§µ  ^N­ozUþf·¿:¤ÆŠ#{Þ×ö6¦DbK%8Ðñðµ­£cÈ\ ºX$ Z*´´ àïÚÚÑE/‘£EnŽ*];»¦­­J±†ÆÆËñ|dxxjfŒì,›R$$¬²(#CFpmªÂXÕé’íDKUG§Âã¦n|ÜŒ²·[ÀJPZj|¸ˆ_«ß½Ò±A£…½½î`¸Ì?–‡H0^ð.;{"SôI$ut4òO˜ºt —Þ*Õoó)¼²ašJqSÓ P³³•϶Âím~¥ç|*…@ò¾2Âi\ÊÞØÁ¢\.hµ·“(.šßÛ‹£+Æå¨ä°M«ŸbÎÒõp>³+¸ ï#V:kxÌ6Ãû‘!*öEHB¢m†n®zðwSë»c’!d`³s±¤ã& þ»qà•lHGçü𰦯豈Ÿ…¸ØØ[SÍCBK»²VéN Wv~žá¸G·¹CðIÁzQ­`­r½÷iîÍlFzº˜#沤«ëÑb¡b.AgW>›•OròJ{­4 ’ü­r ¯O[£þO :«ŒiqO³æÜYB‡­¡âöïb/–x­þ„vô§rTY´B° Ö<Þ&J'Ä'SRå7»;›ëâ½ò=˜©pΕY@Fòb7ùY†XíšÍÈpëàH ÀüIzsïZ;IHsÒû‰»ªÜŽÇqg”c\Ì·  `±­Íøl³?6Ö ´p£ *ô{R!{ǪazN—c¤ uŸSSÄóc5lì›=@ CCO¦æG¶¶p%yyÙXŸ´J"Úb›ÙÊçÃO¡Ø™ޱGgÇ.•îÎË}1·î—4­!ü§†‡°ß¾­ §caVÊå1×nÆ«°LLMM]ÈÌzé»Ü A_úÇx˜G¿bíþâÆ†»"þßÇt)_ÌëÛîÃi[² k‚¥ ÒÞ&wëüfûÜÞïˆcùaPÉ](ܶ†Ì98üÂkb£Ö*ýÍ'µÄ¤à¾ÛÊ,ÇT¤VMIúd›ZA´˜#-"ø]¯ ¡Œ‡¦µqjŽýõËólÓ¨ÀÏCRjlädiy9ÎÊJ…ËŸ×ANXx¡Ú²ÙùÔjöK¥koI©¶‚‚¡‰‹^7BhG@œ\ò+è7~moBœíá=ï.ÿ÷FzÞŸ»rˆ¯ß=–Ë £ó¹‰a¢‡¤«ë`$Y.!T!·)ÿÈÔï“ô\ÙŠû‡ƒ«äÁðç[:ŒŒ €tëN×/  *|øPQÓ¦çò¸ÎÝÚ]]í«³H=ÂD‹üfÍûRëKÏëÄ— À’Íz1§«ÁPáóçºüÀëàR튩1\G¼ežHRn.ZµeVýo&Û²[¼ž¸¦]¢ýýé[´h?dqÀÃ⼟1Ò3WSýÚ*:öð·G]ÀïßÁ-ÞxQ½9 rÞYœ× ff_¿¶ñ:Ym ¾È^_÷0ßcºúúºHY©sSìe^m­ÙXŽdD„é\Íðsû@VÛÝu#É43;Å¢+Êc•geqúö£W§ˆÝlöC o2ųãèí……¶A;‘õ*œ0—LÞ¥ÌB/ÄŒô+v¼Ñ‡ÜMÛ³U¡——LЙ€%ö·G²µ/ÕrpÄDùB"ú¡®NÛãº?šÊÌýjq|ìî ô­²òÅó­ùeÞó…gÅä.`Z–´]ATÀ±ŽÌÁUW§Œåº»EFcds Ù`Gõ:96Ý=›ÿœÐãuN—2š‰ÀZ)ñ|Yi鎕ç­A\ Ú¿ÝOD=€0™Y LMóUUÿØ8#_ÿÈ+4È+¤[ö–øL¶ƒFúwQ ›ªªJ‚Ú{HW}uÔ¿¿ßˆŽVžœ,ma™«€Ÿ[ÁÌüqkÀ6&­Áið«¬j¤YQ]}k×ýÞÅDY¹);;%yÁáÕ+„.(ˆ¡—lGœ‚©hˆ\Gד «èlõñ”îÖãÍ–hý­Å&U&c‚ûëß”&Á)1hþAoR¹L£~ýZ;$qÄܦs»Ä¨©JÆy[u§ë…ðFb|lnoÛ…Šé j¢qÁï#½–RW—–—';Òú5þ·µ²âìòØÅá4+49ùý„­O?ί–Ì2»à(þíœPÍâÏÅåÑòš«fhéúpË=¡ž†»óßh©! )W×–¤“o¯ê±áó†^AZ>î ñ Ikæv?S¡Ýø‘:3#Ãi£Ï^\üˆ›[U6é‡Ë+i™ïˆ:ùù¯žî šmV\ ÖðY™™8å<¯Už73¬ñÕtEÕXSÔÖÎKKR'±£ß¾„T"€‹ŽöMáîú8ß*ØGOVAÉ‘À¥hÖ …„ 1Äï»_yíª<7%PCªªý÷÷å~0G ïëI@ŸöNà W??S”•U`««Q`t&ðñ€/W:ÞRêú³“eë–¢Á¼›,–ÆÁñåE-ÔÌ/4¸¿ÔlËp°Zœg6ù™Vl2…õºg‘ûé|F^~GÉø«UH&6vh££¹ýZse’>œ½òé92FNúË|3‚¼Ü¥Aÿk/ åÀñ¾úd¹!AAÁCc£ÅÝyDÖG8m •Û ¬³SŽÊ/‡ó JÒ§X°ÐÐík.ö©ž3¸ººHÀK€‰sëÖ ë±‡(%]UöŽâ`-‹Âsviù»ÀŒ÷ ô+2:ýÕÎ÷NyÐ!-ÞóÀ^“‘ -ÜÁ=‡é¤Ð`ö­˜# D@Ôø¸+¸ >GåS,m"ÂãÉE¨áGµçæKCå”úýµ?ÿMëWF¥WŸœGf«°€;Lf¯V°à]«cLŒ£“Ób"›®N½=‘ޚϋè¦?.A!!ãm~›ª%\užœ_wi Ðü(™"T@¦y_cYðÏÕÜíì=yî(0‘A¶S@Ð)¸›LvÇ[¼pØòƒÈÅOW—ìí½ÁºBJþÀÀ`üàVZPÀÁÆF 凪ôg…]³Z éy'cu“÷SŠ’ñ‹ëÔùùðÃÃy€Ô{S²5Õ)?¬K!iš@m>¡ƒΔWPQy;ŸÄ !¼6?Ûô¶^ød÷ÅÔYó\ª,‚ÔõP«3Õ{ñ×Gþ‹isö:%ŠUàh.DDÆÇ×éµÔ¤1}è=¯å\7:ì·ÄÅ‹5ËÌbš¿}£œH¾ºB¾ÐöôÅ8îü€z¦‹EÁÑñÙ©\’i7šãˆÿŒŽU)U³= ç-áäj´3„2Ë*ˆÆàts0U›ÞlêwYòáöÂÁ)÷îît#ja^ÀÑáÑæÉg’çËÍþ¡÷[­?Nöw ['¯=EìÚáéìP[<îàâf†¸ìÓÓ¦—/Y3DÐÞuu)«¨_6ÝÌYŸ ¥êú#ËS|øàqš%­¯ÖàþiBÒœ-KØ ’ð§ë¡Ù4j$[r„ƒÃô0ßçϯž‘±ÁÍC ò‹ŒŒéTÑk¼ûÑýo%%--žKÍÓxâ|B"9CI®Dœ ë“ŃÕÕŠ #%Åß‘ãžvrgþ7(Bš%$€^ך?â}ºï(Ö¤'—]¼š³~ñêÕÆ?¶ÂÐ".//li)ˆ-ž’‚ H è8j†Ríã-°â–É$e€LýŠ=gb¾>¡ªòõìŒëÔ\Çž‘‘ú`„¼N‹Õ–CσHÏÖØoUÝß3>ã—Í‹i_Ù®^­Úãé ã Œ,Î|x‹0ÒŸÿÏGãðŽ ãÞaã—ÿޝ´Ï…K˜õiÓ»¹í&`·;êè{¾T±À‘Ø>Ø÷··Á™L_¿Î{ÐkÝ’¢áßñ8¾„áˆëAô03r(éè¸ß]bŽ‹i1èù .œ=ïº|@ʇ5]SS6$lñf+5gd{,çÀÙé™DÒÚ"GÞFqscøæÍ¨€@²·8hŠ ·ÎGÍõ.¶¡Ù†S´Ÿ’sÓ¿‚$¿(TuJÊ·ÝÂtt|U€‡$)ÙÄnÏ\cQ§¥¸`ê3üãÇß8ÚDŒ·Çi7~0½nnî5ÖW‚¿¡!÷° Ñ JJ#-Þ¹ %%S37.*ª£Y–€1Q¬¿]ŒL¼÷×k¨¼-ÓQ–óóE¤¤Bù2¤&—GºZª¦«¨îAÞÿ·_êú8Ð1ɘÍ ¯@K TTމ@è¥Å¦n÷ ë¥CQGŸ°U Ép‚¾ÿuºÓA2,Ñ(:Ý0õŠnû6ßãá’Nê—­À áMñxº}ûn•È®pcÁ?+kz$S²£](âo`nZ>Ï+„í#%‚õ¥¤/ljcÈH*Š?Õët®²wûx…¬½Ý%ü¤¦¯¯·ñy¥=SS“=Œi±‘iGG°­’Û†’§Ê˃@O´âSÆB|èõÜÕÁ)Á‚>~¼¦ ±p‡‰s4bœátÒº¸ð<½Z .."·£&#{ÿÞ¸ãu)³ll…¦cßñsÍLô†â×>‘9$@%‡áó¥}|WäýÊîDS™•e¶3ÆÄa}Çñam³Özžú‡"XfÁLqDjhh®³s­PœÀ¥Ò•“ÅÆÌ<ªÓE2~æå÷F±²â´ÌˆŠz p;3#ÉùHïÞnµÓ³ÁKõßøÌçGeøï¯–)r©ÕÕaL+¬è5•”ê,ff@£[±Û9 £]TY骣#ŠÍ’q¶ÜP…Â’ÁÒnUhºÍ¯Ÿ_“™è/Õ;„ØRë¢àþ…  ÙlÉ <|ã˽©(àrþz¦K½ô%‚:¨K÷êBOäá¾ÕåFOÎ Ëmµ‰ˆõjJJõ~~ÈÉt»Ñ¡Õ—zk­¬¦FNYY·‡ Å”þ¼Ø¦yÒ¥y¥ª2Y¬•´¬7ÝàŒ :Ÿó7F8X_¢Ç JRR*fMN‚»{×ËrCãççÒOVqÔÕy4¯9©©Íÿ„áÓ`ï5f¤}<Ï×Zj¾èøî™56£=Sÿ|¨«^ö8ònfZj¶n칤’ sr¾Ú*Î z«Èj•4R ¨6ͽ­ê9’òòòs Îî^PþßHAèS’éêr6FÀúþ m²Ûx3Aåò#Ò|™D$ÚÁ6ÿàèh)†û4óÔ§£ïÛs¿¼<‡‚ ˆC ·ÀOavëE‹õ5ôâÜš©.²ÚŒŒ°]-ÈßP=æçµî4ÚÝ.5Ëôð4¨±<Ó®»[æ‡çѾžnoùô†ÒØÊJå[*á¥üC3‹9)ù&hœ½Å$°(íô‚‚ÇÕ®ƒ?íÛéÊ…9EšlÚ! iD××§™´6Ú®®‰¢Q2I°så§õŽcÚÚ´7•"/—Eÿ¯*Î‡Ž˜ŒÌÈš—„Üh«@YÐØ'ÛÕEtŠöÝÝwϬô"@¶†Å’&JæòòÀëî æá,<¾âl^ñ5D÷gD‡Ëßû¾ ÁîHÛ“¼šjËá|ˆL’ÇãùöÔóÙöâŸÏöÕÿ_¦ûúÍ5\-@>úb¶J´Ý7wêf»Œa |6CBŸÂ›8ÃsWïž <ο…£›ˆ%=Kä”fÉHGF›ãÐút>Ð*ÍV™ëþ52ù’­m!TÝã¦íœ¸Dxv³PN{7ïÞ”þøëÏ'¦³„þùû¡xûïššáöŽMš ¡Î˜·è¬¬¼€?EÎGNjšáWgî®§ÍÁX;- ÚÈ}¤>D° ÊÊS¥KK¢Zg¹N+íââ¼/¡ØÞá˜ó}„ðU\VmÏ©NÏ`§l¾lŠˆŽþΧZ:o<4>[C¯¥êüŠk­VD€ïòÒz¥wJ'’9BÀíÖi%7••ëÝlŸ›ÊðznŠ [Xž“3ôhiÉûé±ùÏ*‹¤ŽŽŽ¬l©q˜0Ñ=ç´ø˜¿ÌaÙÝúƆ«««v³GÝAâ9_Áalbbâ¯_?œƒÝ«ï{£tç†ÃpÈü1YœöÕ }¬ôøx­\–e·[ÏOœ[ðñ™>˜3JbÏè8Ë‚‚´z§¥I§Œ|¤k* G%æM8¤)ôå]DíØ}DïúÐS³¯¯ïOV­WI¬ttt¡“Rslq‘‘fM/BE*ªª”åä~þü©V¦ÇokËPýx}²öþýûùزé,qK.7jL:­{º†²èh ä(b.¹ËfðXtû÷Ko—½–šßÎÍ-ÉÉM›é-ãb^¢}‚@¼ ɇõï¢z…\Ê®³Fš™â'¼-E²s~«UqÿÜ*3)‹«¸¹¾>?FíïëÓ°.sÜ›ÜÞÞSçñ¼žžÖÛKåv7²°°Ì¯Ç îÚ´ Výk²4cA¾HUóvxaŸéËý@tÉÞ%‡¼ùïˆSƒá-n¯Æ‚ yÕG ™Mÿ¬–Èf„Í($"b´Öªô!¦MÏb®˜SiiZš±H>"!!!“žž‹ÙÊ@‘;g·Î½©Rj*ªÞž­z8MEUÕ­åe"zz^½VŸÁD¶1feeeh~Îï§E (hþ.×rÏ;'|üd~¿×777¢¢$°§wWÖœPQQK$^A ÒÒóuoWVïÎQ+ËOkªyÎv kh|æË±}s†LÈt{¼âWSs•.€†Ž¾¶ºJÀã± «lc$Sôh©…ðíÛ˜_¿zêßbaÅÅÆn­¯+ž©±Ö•ÐÒÒ²°°°³;ý cgg‡MõჂ¼¼iõ _¢ˆˆˆ¤#[[[t !Rbâöùy<~”äÖ;7ÉNK }ÿþáuÿøy^ÕðÊ/_@\P=‰¯¥qS_$+—Ú»§J›ÕïŒQX°30È û ¤geeé™GFEiš±;lËYl §òÊct¹AæÁ²¬…‘‘” 1ÂÕÛv¸ D§ Ä°³c ÊˆÝØØ  ²S.Pq˜¨×®"l%\>zÑÙmô—€Ù¤ÿöBÕÎNâ8 ²LfÃ烔!G9íûý»ÈçÏŸutÿ¦ þfyº?“•¤=;;û½ÂÿV€ôñ‡†’ÒŒÚßÂêrsš]]í¤¯¯/%«biI›,¢ÈëK4õæć 7WÔõôË^yþóUo¿f•™ò0^0Å##}øñ7oÞ,5?ÜuÚ899IÒ áý eóÄÿí™TQÁÌ5ÜCˆ¥×õ:œ¯3Ÿ*gå±Þ‹Ž"쫬UynWÃ*íÒ¦×î~CD(°››$úZ²É·ž%)‹/Œ·ô~%`CŽUåÈWºº²Â)iiÜünoo¥YA‚ãÏÎÖgeAk¢¡1:jA‡Ì›öÇÒbcc§òz/ÖÚ®•‚jƒЉŠÛ&+¯¨èïé¹>Ý..>ˆ$“Ô˜]ÉÞ?8hñ¼»<˜cƒìëë‹ÅI£¬wÜSÿÆÆŽ?ÂÂÁá0³@?ŸhÆŠƒq|ì[-P‚cŸ,é›N•°GDäGQ]x*)+8ÓA X S„-¦GtÅE¦qÕÖS±ÕÕÕ»»» €1uëì6æëì_)}¨bzß€ÂÆ•ˆ‡Çõ¥ÅÔÔ Œ ð·Úb†˜–¶8' ˜œ¼Û%­¨ˆ†–ÖÒØXUU5àñª¦U=G!dÂîß„„¤Öÿ óGPÐæú:ó\Z^^<öWã_m3ìWYfo7g£jÏúv¿*Íç7©rs%B'gOÞ݉šš¸ä6¤ò<øŠ,'ÃBZCÓ¤võ“o¦=׺AQ›šî â²ê…Ç}bgïíëS Œþû÷ïwÚŽŽŽ‰‰‰ììlKKKvB›RíV—c=ðË>>"²‰ªšš¸¨¨¨¸¸?<-ú‚Q½½½¶<ˬf>y»Ù’qeÜÑ11âbbi”õzm¾9ñ‰äéc;Óšròi“aa’eœmm±?Ù¤56665qW§Ò¹&»[ðR}ÿþ}ssS¿ÔfAAÁ4c³®ˆqAŽ[¹Ôêup¡‹GqBkff¦h( MQF†ÝÞ$­ŒÒ~”«ëdÝÍííós) §û3IM,nö­ÕAAA8\.6[*,ófЭ_E‹§½ea©TÌMQ¤,°TZǯ­âÓ`3%JÆó7žQ\W——–––Ýu¾Ö¶¤¤ÕØÔÔ0ÀÚ¾¾öM¸ç7…kÕÃçœìï‡×|~ˆavv6--Íëáö3-7WŽT|ä?eÈnØÌéœñôà1oá·¿o1ä<XŠœœœ2H§ÙãæöbOš‰MzumÍÀÔ4>.Ð[Fff…éXN¬Ì·µÖ¯Pc¹²Ã½½Àg…FFF¶´x«6 qWb??`>Y´ººzÿü.v õo5íùÛ“óv{9KiJ$ºFF«ØøOªnmm-ÕÚfšOÊ,ÂÂÂb<œ"ŒÒ92ò;'gó|g,é›ô^Y±””ÔK(¨ÂÂÂÄKÁÁê4©—ÞÊ**ÎÖµ‘£¬Ú Ÿ?ÎX°.B ó¾ <N^4êÕÇ Lob¼É.+CѼYí‚ã?:h#G ÐÔ ßz±ÑõñþFW—Ž&ª °0ŽNûEÑ`BPЋ¦ÐPé¸ýÔT–‰(C4gu­˜‚ó‰ýªx{ŠŠ@ôë¶x-|434$«®éÿŸÔ®f™9Õ ²¸¯û0ÂUŽ §nÌÕÀPQZ$³Ÿ‰ii‘/ÚB Z/ú²è&ãÏ’­,-‹ËžÆˆ1–ÙdÕ‘gøïr³þ”ëà¶Ñ°Ógžƒlo›8:^¼ùœjjff608˜ˆ¸ÄXVfÓA¡ðÍß?{g„†f>6Ì Ñös<4G&E?éacy-Å„?k¾¯r¼Vña >Lïv‚;!cÅ_ºY ?Ùè0¾ÜR–—?Yé€fiŸ×²¸¹9ÛÚJ6¿Tƒ8Àý7 Qï±½Ÿžmn²Ú•Èjév±ÓÒÂ;jôœâ “;«ÏR6=ÇÇׇ“5Q17ùr™¤¥Â¦§µ›0Žä@nùâ;…]ô}vDÈÕË¿VTØËÈ M•ê&8îOÿŽ•Y_í žnà‹‡‡ðj±É½Æv­ûôôT¦1ˆkçx¥cttT]]]lJ:û•F{²*&@­ÚáØ’ÁòrFÆx- N66ü‰ÄsÒLo7ÿæñW4l4ÊCþ2u‡È»·ò|´é¨±&S̽åà„ÁÂR]ÁñÁ;Ô;ay®8ùÍqÃxÿÊ!#%¥ÓÖPVžè Ôƒwçd³Ž`=_öYÐÓÓó_Û¤Êì.µx;9±VﯮúÒÚ–ŒE%]MQBÔ-s룗¼ôü0 =tr)ª··KÔM#‰‚™±øs–ÔicøÛ˜Áø˜—¶÷.ÖÊÊ[MîÔÔu†¾a¢4ÊÙ‘7ðÌ$Ÿ>MZ“Ô™•ŒŒ šŸ‘‘QJZúwÉ'è—C-,2>¬ä¦;B™…:[t÷žŽ"¥¤‡-Û)•zm/¡ù}ýüÜõxç] m?èL){«¦±|Tãç?B"ðèüRŒµZ…ˆ®š$Ë'H×ZUÆädmqqq~þ¯ÁÁý€–Nd¾ÁF&%I‘GÍUÁ9§À^¥ÉQÂúöô÷³í:üiÓûÈÅÍýöíÛ»‹=c ˆz@žá•˜8#'çr{„š¤w²HÝÏRAQ€Qj8!/ë\ùȶ¶6 "³^+dŸÕˆ-•î±ö 9’SñZL2NÆã¬Û~ŒÜoí …ì¢÷Z7.yT(àS¾?Æ@÷ƒùºçŽÆxô¦¨††(ài7\\ÜFâìœ\\NNÎjqIŠ—§¡n………Ÿ…Rb{dJÊ#€ÌÚÚZ ÛæjH`Ëvpq7ÔÖé¶ðÿðý;c¼4¿€  <Ñ0¼‹þï([¼ Ÿ–ÛüÆpÜ뵃¢]Ãú!ùð¡ÒtìœÍš‹–Æ‹û÷Ýõ÷o_Î&È1ÛöÐHWm:ÖÒÚšŒ³ôsA~~Wg§^æO°ëé²÷$$‚òò#Ž»íííUUU@¶Ñ`Jòó¯l&¾~ýè y¦Å Òš¬\• ³MîWß‘ Ȳ´<ì~}‘ràã†|íYxÏû4ˆQcEfbN]_78:aùˆ I©_ƒ8dy4ô˯|DR¿>®”†žž¾FxçSÅöñ#H® ü9ˆO*òòñlÖ¬}LBåeeµýA À†°·‹LûE8 9(«¹>·Ck™‘B Ëïß¼y@&Ð:¾¿qzõª÷¼Œ¦fêÍ=;ás•À¢A>™|bÔÅe㜓ï©0†ó“^§$¡(;&æùmPAá‚þ{‹Q3X½î#^¤A}Gĵ9œú+p{ëM¡Þ7øêL áSõe„ƒXMí[0Q«Õº]˜Ùþ;€ÐT• ïýr†˜)7LL´„‹RyáÛ Å/DCó•.Wâ2 B–*‡†ð>¿ã³ÕÖáaIV³ëéºx955!Ç;þŸ ^æjd••Yˆˆ–w' Õ$‹–´••c²³ÉŒÏŒ4K4k4üùÅl::Ï„ˆˆ˜œ”äv¹ølíìȓԤrT1““œ®e)¬¤<ñ CÕpg°!ñqÂÞ·©oÒÀÂÃr»od"²100´}ï1RP°´þȲɰ#™Ó ¡A˜•4ƒB¾u7bèQ¨Ó¤’lÖÍ_Åc!ËŽräŽ 2é9ŠK>tS‹;‰×¡" -§€®²ZjuÆœÿ)–ÕÚÊ·X'…{ñBýÅ ì/ØÕsrÈ¿JH›V5ÕþšþUPðÃeÎG*6öçGJú–ðŒ¤ÜÈèJ”ŸúûÔ‹ìÈ+|{ï;ô•?Æ+öŒuÑhÕ¢Á¦aµ‘«'p:ŸOžü Õ©Çh1 >i÷_ëý²Ý9úú¢­á]¨ˆûù6jðÄý¬¿þÀB^œŸsÔ¡Óa£4JvvvÀFè¤NÉljÖÁºº:@‚Úy ej&ââÚ^^–^^Ò::–üüҞ܉|D(ИÁ´¤B³ÍÚš""µÙƒ¼žà—tÿv‹4éò¦ÍiÕG§$iYYózlË mI‰Q6{rÂðËGøÁ&†Ç„ÖÙõ ðÈÆ†pv¶¿¡¡¿á¡Û+¬ÕÍr@RÀ¸äBšämm7"H†­–dÞ1 MNLXt‡¬¸P¼„T"V]Ëe Ì=¹ºgíꊉˆÐÍñt}"jdÄÛ¾éF„ñ à‹‡~»Û¨ (¾Íä$Ÿ€8BÏšwaÖM«‚·Éžb¤sýGÙÇ›1Ë ãp³ >ÿ·W‡d ïhXqÅ¥î‡ô/Ù‰·â÷&¥ß£ÁÁŽÞã«2ÆWZÌdµùes¸A®çz"üŽ*àæ4áX­®–X\^Bî ‚@þ6½Fܵ67ç#fyò’$Ž’ùÄ™Èú0’Ê[µ7©=S¾Q:8þ÷ï „„w¾ˆLjØæü}ºÂ6¶p²TѸ) êB[!ý³8èζ¶²3ÑilÇ2…D¬8=¦9W;›¼¼dM˜»—Ø€9‡~~ëùm'$¤ï úÒœe½YŸ;ÖeS´|C£ÿÊYXtŸïðx\£b|ÙÛç:+%1|¸Qt?ÛÄ•Ñý„x}i)³…û­#ëׯ)r`k¥$$ŠžÇ#BƒSQ1Ðm:µq`æðæ1:]`³jܹÕ…ð9û¼yqí|ñÉd³^”Jú„z„±@É~C/e6î*EÞÛóc¡Þpl[=óÖms¥Cv(Éõ³YÁÆžùDK‹‰&’í£BÔM*²&Èr¡ÊŽW —½ÑM¹á–nËÐfôgXߟbß¶·< 4k†ÊÊþšî8aCÒ"x<¡Ù,šMF¾eЦÖ5,!Âþ¸8gNåц:Ò‚ø<ÌVÁ!@–E””*kóÛ­rþ×^€Úw"õÉÀ…ØYä¯×QWm¸Ó¦/ýùÛ ¦³ó[¿ù'?sx¸ˆ£Å*óñ:’L“ѳ߿±1 6‹C&ÿÊIK7…V}ï>ÇÜü/™1?1êà@¥“„äÓ ,q^H¾¦–ššízÏXY™ìè¨>Fžµ´Æ+Hh6D„ñÁAQÃ/7×\nW‡ 9›DØñÍÞKh¿$z|6 Ÿ˜”A‹Mw^W‡r/^”74ÄÇLLÓ뾑’ºl šo4Í,-,óäã›_lZ!AàpµË//w˜ ß8"ÜX;Ë3J®±v¦ü áÔ»C« ÏŸÌ´u}ud(E.©¥õ‰a¤ÐZ÷óúSW³ç­?ñÖ¶‰…Oya,=*aêÆ~l‚†žQN“Á‹WþÏHÓºð\e¯u[5*6O«ÌK1é’PPÊÜÆóÚ€ë ¸—¼ó'‚ÖÕ-ü¾!$.~ñQµTÛ}cYÏeZ_¼—Õ±²ãïÎÀÅ^éø$«f’©‰)•‰ Â~$“ŠšZë€Å“í?»f ;ë½Oz{d¤B!!Ì ¬LŒAax®˜èQ .eãËmÚ*)/Z¯^#ÇjÔ;û{_º{?a±°\dŠ b¢ùR@ZÑÿõaLžÒm›_8>¾µ¸d°v}¥ÑHƉ¯ïÓ]pàk݉,æçûû9ö*‹-© »_‘G9®uߺž9$ mý­Çe[äòø5Zi ŠŒDcaÞï+ ÉÈ`2ÓcT ëþ˜¿ž•Ý50(*“ÈJóþýŸá£Þ祉ñõuÒúãmÈ1Ã˯i9ä-ú]ëÍžþÃ)¡Íì2r?‹²³§Ù xø*ã ¦iHL¢¸0899šœdT¤S<µ¿…û!f1w¸E/&V¥¡vÞõö¼¿@¹>%e³½ýå7qT/ïbC^^ù ›ýÛ·;ª¥\³ ÃCîWt[­_Ž=Ù˜ÇmY”UÊ95 ç¯ß¾U¢ëõÀÁ9ü-¬²üòj¼¬«kYX8êêü¢¦±ëâ:hÚÿqfe%u~þ˜Ú›Úñ‰‡\ƒ?Òb=ÕeŸ„IÑz¾ K‘®4p|å“^˜+ÕM ;hŒZ]eljêhöz04Ê9Ø4š,É-†@^½òöð$\hˆcv;_NæÜ Á/ôu&†¸a=¿7{š¢ ó÷ïñ|Eù‚‚òææ³?!7w¢ñåå8l5 È„94ꌟ·†Øõõðy8CÉɽ†‡éééJ>Ð…ö¦ÅWU]¼}[EƒD$¦öKP“Ø×óúãÌŸ-y/¯ºª‹O¹Ø‘}œnΩ†ç8AzŒ'i®ë_ø<¿ã;ÄAËÃ#¶ánÁ×÷æœ)’ÈË—Y-VhØñ»ûx4D|§gšy¹¢;³\ SE#U,z#££§v»eŸOk‘GõÊx®o¸ii‹u]Ú7EFG?RÑBP°âv6ÞF&kë[ruuaä8¾NƒùGHøòZZuÖº G¡!ÌWG5xÌÛGP×*Ê ¸^À`ØŸEÀ kˆ‹9Øê~úó8Ì[G_ÊÊJ°Xå~ˆ†ðššr{a¥#ÜÜ|‡Zuwv7(~ H¹”¶/åPPK<÷µÍ)†ÆÆeNïÞ ûXý[h%rTo³Ùãr›èè¨çÕaÕÇrÖý@VëÖX‹ œ/·½Y`Œ8üÜÝ``°ð)æ ìÁîCŒ×Ý|o”<)ÚȤÓlË-þ»Ú—>:ð ¾a„áXX¶Ì`é/üaøØþ}hÉìÊBÈßRsL‘.¯ãkTµGâÜ1ydi©òb æåÈСˆÓe[õùC‡ªð+ i/ïoÞ½_øÐq/‡ò·>#£D4e±ùAEÑþo~…,A(œk”MM3ÎíÞV¼»#„W¦$aÚ¯B¯“e¹D0 ÿÛÃkà×H“çJ§ÓÕájé|Ã¥v^cã%P3ÁX_¾Ür|zG«Áœ"D¼ú¾ˆeëã¨ãcY7·hí†ÍÖž;ˆís‘.Grs½‡-7nœ©­2Œ*ø0»ØôyZš”0õæá.ØÉ^¤sñÑÈìb¶ÊqÁ3­äbOµë·ÁðK¨¥‚¼‹9#FóXÖCH«à'’#Mµm—_ý½kɰžÿò““•5;v¦#$T^wÓ³))Q?ëzÃè9WMôÚocÍ€Å~óÇ!R  7‡WcAÜTR »ÖTß»×i›2FPRf&Ã@.ßÜï™mP[ÈJêê5¦QmßÇ–#xÿ½a2bB”á|Ô|uú ‹Ý寄®n1­¦²êXcS‡Õ¢Ô/ɆCå­tJ‹_w êqtÉÓL¢ûH@–ˆ†q…þ›‘wrdIf†K©…¤õqsÆ@!Ës4UÞpWTg/Úªá€ú7–ˆÕ¡µñÖò·oûo©´µ¥……瘡,,,¾G)Êyr¯µ~½12š]À/OŸŸ_Š"?p¿¶éÏ“÷s?­]xOµPz”y}-ÅÍð‡†–V¸ýE+S_¿y8Èè†ÄýñŠŸÓA§Wã‡Å@Ȳòq rªÜ…Áéö\ÐаêóçĦ¦­ªl‘‚‚‚¹jZ“‘ {@ aaN;+@=þIpy©ãχD[® ÀþŽÃæ@¼¨jQí¯ØKx`_‹‹Ë[¹ÊËÏegunrÖéwu5626 ¾hZ¶©»—53û $"’ž¼à“ÉVô°-fÍÍŠ{qYý‹75À ß ó’Šn1.Ó9µ¶vïè¨W|¼iC]<µäs)¤ bÅÕÙoù%%nôSprïÏa‘;¼NÃÿ÷aBÐü(8¡+[Wçû3&øøÅsŸÍÆá_utðV™û–Ùú”•µÎTôŸ¼ùë9mq¾Òñ…0Uôæfcrr-)ɨ§W|ûb«^™¯ïâÍ-€üøÈˆËÄíwN„>¬Ï.ò“ͺ¼Æùö¡Ám®:¾Pu¯ÊPåî;×õ­†tühÎ ‚úáZ[÷XÚÄ/ÖÖ?¬C;þ¿0Pè`6%%¹‡Ý$Þ'uõÙ~ó°¯_9ž“õâù“ŠÜª ê­’ñ#óøñI<¯_KµELâÝÜÌÍÐÞ”z0–ìñiÂX7ßäúú?Uææ¹²S­lâÎÍ8¼×¶–´žÚîî‚¶¶Û¢Ð|‰ëëÑ··<í9™ ÆÞ\}°|Wψô×]X$‡ƒs‰_¾º¦F—b÷3ãŒjIçÝ5—’B$Çt‚ä÷÷3ò¹ÑÓñä†õ wakæÿ7ì}”D€Xb¦Ö™«š¨¨üÜ‚…¥HEUK Ïwöœ s‘®.e‚+ÞG Óü ÷«ùLJ¹s)y3³¶jKþÜåthèNöSGúE~7¥ÿ°o¾.Îó.Èbþ“åÍ©¸¯ï—çÒ‚¹[lºº»ôŸšªØßG˜,N|9…‘æ ²­-‡ÑäÊÔ6Ç ôùþ2?µ¶¶„fõî4™»{òÒÍÑqáboïÉׯ¼<¡ÂXW§ñ ÉØT[h€“ãoKþìÑá$WÛ]¥ñ4þm-©9Q|ŸÅç–壌Qn´Ôüû'œ—ÕâWµã^ëåøn+8µÅ|-7H 0Ýœ°V^ŸœöÕõ–5••ÕÇV™¢Ãj]™¿ô¸U^Y;;^lÊê 8œeQ4 zÎ:濬¿Â ö|ôzl|üõõº¹’Y¿ >ˆMÀ[,Õ0œ*êOÓ*ªW„Ëûs5‘èÄGK@6+Ì—wM÷ˆ¡ AŽ¿‡ž56 ðxôT•ý=9O¢¥žÃß_þ‡oOw'™ý±sââu{S²ŽN)3ÝÆA[¡èÚ;xgfude—Âï|ܵˆ¹›Ž·GŒÊéS¶udIüd û¯6)ƒD„HpuTT*lט99ß¿wу;7{žþ5ö%éh‰ö{ …?áôØ<Òl¬­P:`>hhå©<Žíœ°Îâ·+{wyx$eÃWwLyô¿½üwjGÇsɸÕÿaM[†d^o„sÝWM˜Ï„Ö§º¹ŽŒXXè`%ë¢Ðs>¯™89ì²F›=1]`VDlmãa¸¤dMMòVvÍ J†µ!ÇÎÀîh½äU˜]f>5ÿÛ@ùxo¤ç¢<~_4;ÓÄ©$/:ý[XC#ÈræwÓß™;;0qY‡Oé#ïÌ̬þ„Ѧ°Y3/ª×ªjim¦p65m¨\˜ˆŽÉ~¶òÈ×÷ìÞS%?¿}KR¯¨äæ|û– |Ÿ/ü4Z­½iœíÞH‰ø;¾Ú³A\s ˜Y@M6ïE›ÏÅ<©( Píß•Òþ9úeÂié,nwÄ]o`),X„‚B¤.ŽkU•…窿4[LpÜÏÏóñ™'t^ÃÿÆöñ]QZš3˜NqQ‘æÿ ¤æFv€MúŠjçÈRUŽÓïF ù»ñ/~¾¾¼š5¯›]ÏŠØ"ÞÀSƒL9”[SãÑ$­š†ŒÌêz/H™Úo‡í¿bší²KššÒk?yð#µêFÇLàñ<œnÔFQdŠ‘fT3÷iá#¤IÝÉ)0NUÌÁá¶H}–Ói@En;§zøç:[TQP8ØÇ»¿wÝ]íBw:J¡&&¾ž’Å ¼Çãµ|µiÔצ¦Ïš‡œ¶¹[Ã-%j¶'ÚÇ¿¤”•ä ^ê'»ÏÔ”öt‡ŽÅÒ§v6x#CÎõôŒ'sFG+ÍͶ#HúX?ƒÔògÐZZZ‡bb?ð¸ëMÚ¿µ khhà;éD¦§¯¹jlóËv#úr5SwÖ¶7µ”»挒¢ª¢b¹ßÿ“h5òPi[Ÿ¯Ö¨ù6X}UùâéØ[£$$ µµ¹îÏ©¾òܦ”^÷Ó¡Ç1àÍìì°Ü- õ™f@Ëôb NíœP@ŸëËãvžܯ¨XL­:ùძåÙ¡öP_Ì ÊÙ{Ÿ ʠؘ JJ1$Bž¼ÄŽÕµõÞ- Ãjc¾Ñ£æeg×zÜ‚\ÃcéÓë† Ê+IJFH‘¯à#B¬H©©­,¹e$%Wn/¦re¸?ªtS²ƒ4ú4ã-^~%¢§ç1‹ŽŒö´½My¡t™‚þöÂñæ4ØzéPî™:0 YŒ‡›•ËÈÌ/.Ú<+Iiv-MÑ'›å•&wñúú§ý&Yii ŘŸ?”û=êÆ<¼ðHkkRµäùùúÖ€¼ÙN¢ &üÅ•ìàP 1 ,ôË>#!bb2²Œ"šœ4"V9ÂW¯PQ­öO…ˆ#¤¤¥ýý–gbh5­¼ïTКëÎVḜ¢cFR¸z½Ÿš•tt:gÝòÊˈ¸LLÿ6ˆ‰‰9‘yQ?•È6ÃéÌÓ3@£ÑìqzyÀÔÕµò‚·U0{F%åÇ(GZÒRQê2™•£ß¥éɪ~–dŒ¿ A{Ý{š1@?ƒ}u¸PQV¶½.³íS]—™ p¼¶ Êå|ö}ÙÝe²šöC,øugL*›•ö¹ëµä—œ@ðî©ø–‘G,ïšUÛ¬¸xá{Âã1.¾€l¿U£‰‰Q¶±ù¸Èᡈšyµ1¿ö'ÕÜÜÔ~+l÷¾Äå•gÓ˜ï+x5šÉ¥¹‹¢Ä¨q´‰ÌÆCy€ùççušnÍ–xདྷ±ñŽ1·Y!®µÉbh((Dvv¸F?„O ëäø×[übVã!q˜€Äìì ~šðŸÛ¿÷ô´O§©O£Ñ… Ì’¦™WÐ7_oh¿Ñ—ðí›wÔã£<Âëy%èÚ×w\õ–9MM›ŽŸ cºÐÓ#ÆDÞí¸ÀñÐ*•êõ‘œêH(-îŸtøµÕ{ÞW]¸¼xa…×÷üVÙ?üH‹Šw¨  È6Ô¤&w s$—6õ°VÖÉÁÁÁýý™¸±ü Û g⿚ÏÊ4•ššÚ¼©m²X333SP@@AQñî|ÇÀÀÀ¯Øûr?þ÷o†šl3BÂT™¬»Ô–Í}l**Þ¨H¯"â矋þG¥É%õRm«—/³•­­Î;8DÇÒ6”=_qà*q±}¢ö•_ÛtµebRRRB‚†ššZÇãGTTTFFF@¤#&Ó·ÿÿß@ÛÅ`»Ú™)N « £#CŠVc9÷6¸kw©å©#9âéh¥Ã¨@\i~>Õ‡fãyÿþUÑ1~í·²³è cýogÆ¥1‰ôpå]/af>»É½ËÄ!JøjA‹]‹ŽÙ4êáæ`âó;\FDÌÔÚ’ÄHtyÝ®vÁ“‘e___Ç&àÖRVŽaÚ ÎmÛÉœ*R÷+.ÊÏßËþN˜HPBAÝ·¾A&“¤f·5”ÓØXž¯èyuœ¦°ŠÞñÄ—úù(œœ&SVW——„„„šþîŽf8ѯ_ùTµ³–É ©±±,fo²¸°¸ñ͛ݩRÂÉÑŽƒ¾hªÛâ€Î𩳧˜Œ´ÿa„ûÅØX1_©ˆˆÞÀ@¸  0ßf¯ŽšìÕé ãðøxì ŒôôôÕÕUGù󇻫ÿ¶X$=¤òxj(+_ŒdŠúûûƒµ›™™ÁúV:ˆðððÄÆÆ‚N ¢¢âààé5‹®H7®| ë ýêÕC•z…×ýuq^íÅáBg˜åÐÞòìάyî ÝöÞžADw(îÖînP13BQI ÁG½Ö݉³³³çw nñöRQó @&”gx‡€! ¾›žŸßkT‘HP©'¥éu”6•1E×)÷o“á$¯g¼ÖšZ¹ÑâñÆ?22Ò—–‚‚‚íúìv$—’>Ý—ÊëA$­þ ¤¬\µBð‰–=À¤úÅw™ÜÔO¶¾é¤™”f¦¦ê::C–ùŸ[¼éÉÉErÇj¬véˆˆŽ·†SâìVŸ¯HN—ýúõnHå÷ïßÿ‚ó?ûô¼NV_ù ðkÒF%¤˜Rs(’³sÂÈþZÔ+ã¨f/õ3Ï•T`·ˆÿô¦:²â¬²²2!‡5@ÀÞwÍψ¿¤@x()aeää䀛 4}ù·_PI #ƒåVZ•\&Æ7'aPÿ®?Ÿ«¾£§¡¸Az·wîKKÛ®®«©IMCR¼î¡ÛoJEJ:nƒœ›$øÿØç( -ZWÇ^“]o³òÒ Ùãþú„SRFæp¢PÕ ;D\L웕–‰I^~~~K‹wGfðJªªöHJÚÚ¡Db’Ƥ44óÇ2 ee­²¥ÌÜrŠ·mâ•´´²‹f«Tñ§cy[«Æn”Kñ+ýógÄ8ð5ãý2Ñ×g= Æa›kœtH˜íëë«Æ>.æNMŇKFú÷×tïØ™—# âÑ'ŸÒÖ qˆ ü«WþÖKÍŸûgff½£ããi³rs‘ñ>¡hZq´¶~…bwïéë[­´h ÐsºÑ?œÌé|0˪÷¾èëë·[æO–h7Y’‘’¢ )*ŽŒuûîˆHwwwB|<Ë|EPD‡1©‚‚‚{æW(#CÃÏyyy×Ç+‚{‚ï® Œ‡·§dÇgÝ´ñ‚m‡u©®t9ÅàqDÀµÇ¾‚†.óï Æ²ž­Ü+~||D¬Ye.+/w;^æ·±)+))ñõ¨ðahãw~Ç«ÃÂh7·Ò1‰L@º³ƒ_kO*,¤¬×WIÛ×|Öc±Ö"ÎG‹Å¥¥© å““-ÍÌ‚˜¯ûTTUÙ¸¹ζ†×þ„/ý6€¹]*5`ï?<<¨Ðû ßä K"N[Tõ¥ Œâ¨U[¨{yñ68·[¨³•’èéDÊÀÀ -=("ú'EÚíþÚV^~$‹, ´éNˆÓþ4ƒõbãþþþø8(‡…‹½)¶>וvÿã§­…¬ŒŒ7oc€m·8ú~]’ õçæáó|Znnn22ÃùZ[÷«CK q…Ó“µ?z†††`}A{²˜µ~a444ÜX_§ÓmPŸ‰—|}Hþõòö,wrì¬Ù·]>8J·å±iFŽüÅ_ôÙS]žP‘çwþ×Oô@wVðÿôñ€3™ššrr6Ô×sTúã)}˜’ùw µµ½0¯Ók{ Ö8Ìãí[–‡Ë/Ý!ØZ¿ Fú•ååùÉ£~ÛƒÙÒ Òÿ-“ÂÅ€Çó6›‰œ‡Œ;”WR242"¯££#  ¿3š= Óö]ó6iÊÓ0²Âþ8O^ÇÑñüÒªGÀâ©yî #Õ§O.=‚3&"ÿk/ÀÏ÷£££HHHÌ8ÅòYÿ›&ùï7¬§Ëø…„ lpZb6bÕs“ml©ÿÁx[cµDä§ÀÄ9XÊùè´;Zµ2ÿÏååe•Ùoþþ¦ææ Úÿ³c2ŒúeÊ•sÎn˜¼&*ì·´4¢ýá´Ðfoúdމ«å¶WMðµ8Û;:HØØ®j—×Tß/¾0ÁüïÆÍ%’Áï¿´š!ª¥“$héÛ°.¬p+TBBkccUPûrrË««ÏÏ4¢¿‡­ÉÙEÐaÏôƒ!¤þ ¡¡ÖÆ ‹¼<´ô<°d€Ú[£Ù’€Þ:8á!°_ùÊÊqp ¬>§WËæÅÏŒdeÆä‚{–]CÉœw{¢érYÙÙ·óÅ5¿UÒÎËfZý@Ès ·¾i$BÞÑp¾d»¥ûoøLF€sre’ƒœ1!dtt«ÜG½èÀU±Û‡5Ô-e­â¿9~÷Øx ©ùŠDÚ¤ÕÀ±ð{&¯î†ŸÿôáÎéã§w@£ß/ò«òËŸ?>!§äæÞø¾2Xñ|[‰ê! ¤æ<ÙÇcPý7wWšíOÈ_qè—m£vREwóu™5–ðŒ,Ü·ÿ=ðcíó¬MkÅ É.€U¦VÝ-(dK!…jùÏ`xw÷a÷Ûqq>.÷Ë|N%å‘c¤Wµÿ©eáËÃP"”Ÿ–sRÇ@ý"íîŧònýé6ZƇ>¦@ ýšž~éå/(È»½wPg¿×ãòüAŒÇ¥××Eš5hCÉšïéè|A êñýÚn/‹?1U|¢=PSޱ` "êù'ÄêÌ×Pf{Ê‚LèUïh¾|0gý|ØÕ²Xaû§¯k_ÆH,5s÷L«ÙOÒX6Vœc^½yóÚñG \`Л«= âhÈÉ¿= caíÌ©ª))ÕZë¾GEåo츄fÅ-.)Dù&bð×D š¿ ÐÔ‚5±MO1ÿÖW.ßáýûÓñüŽ2û×~1QŠ ñêÑòàu½!ÉïåÅìÍÏϘ<Ôù†š¿³ó[šÈË Œðš«ÆWðÝõu É Ö7§½tt9úú.[/矯r¸½ zƒ€°Aqühàx¸T,QÄmTïCÏq øX6ÎwÖ$QO§^ ÎÖjÊo–Ûœ¤øçpöªHH*¢¥bEä£ùô2)OŸ`Þ3O‘àçý(*¼›í%Aƒõ%&î¸=)(}ÒÑ~(ˆrïøñaoÎ-涪„.¦«à°•z=+ 6‹µšžŽ§ÃhªfE(ãgѾÆK~¿†!fbè¨IÈ÷Ðþ~û£ùº àçœð_ú\â0¼§±8kr?r>B ý!æäÌVQŽìLÙ*ü¼aÇMÀÊÊJ_Ÿx‘ téééíèhýR‹)Y娂™-CqyyÊ  ôûX!âv½4Xßw¸Ô¿â»ÙéèI"Ä€øz–åGÐm½ÇM—bnìP"[=…Ÿm‹U“wŸûc£O×íÝ“_AÁj¡Š|g§—,}éæDájV–Âk¿P¢žÝ ³ÙYüEMÁììʇ;Þòʯ|rŠè©\®>9FÞhùøþdÉCõŽ{s -M‹Òˆê=ÝE­\šÝ”ñPOüD lqX‚…ˆe’(Í ³9þ=¹„ësY—v{ÃÝäÁnµÚùþîjøi‹½ýE Xý&%ÙRl¦û_R¬¾D/_’B¿ÿøn gº=èm(ØýŸ&1SÓªô•ô@ô€î¼#š&I…’º›œŸ½BÂøø¡à%ž†à¦¤¨HˆvºrºQ[Y)ðâš_qÄLQjÿïÌŽLNGHˆ°? g¾0véKŠÁjj„i×;d$$xÌ9ÛmɬV[òSé[⡱sÏWšºý±›œœLåÆõ<ýDÂëÂVR4ÛqÊì™ Q$\òÒ9 ‰"ƒ?/Óš›úmí®4ON7¢þݳNGÖ±~¾¬Ò„#AÈfu•ÊëX܇Øéz&BÈÛüKl=ðЗ+pP‹Ž+1U÷ñ<_q©™vÑêåÂ×AîÔ{ TñR‘1î—û§ JegËËWª¥ÝS#¿ >ïÁA·gŠjVV½åÄkÈß5›í \D¤7."Ç«Ôïú")™ÌÊ£y±!ÙV ü¢«+¦XIÂÖÖJð{¹åçÏþ©Kc­­5¤h¿gôM;aýu[>ôõ™¡@GDìpZLC/^t|G”S%K﹈Üê„Ðý’ºŒ¡> @âÆDG_lr§ã¢šíç‡æ;r<Ñß/Ñ~Oëèó>Jüõë],úâ¨Ï›>Vë[Wçãù[¨¨a ~ÇC£šejûYYó==¥¶¶ñ,]]Ê¡pR×·<í¯IM.áaß¿·ðÍMJ2–ÉR§Áœû{ü·Æš,T A¥lg¯ðÕk+“þE«y—µM',aTÖ;owt"SSª/Æq*Jr¢!rY&Y&v×ñ@®ìí$äΗ†I"#3t›÷-«mmm %$xXUt$$¼œœà‚»0Qˆòózòò{)íÔn˜]ÊHÃCâ jgÙf½ï)ç*{[‡†äÄ`ÙöŸmÞ•>ãŒfÍb³7oþÈû‹‘߻Ӝ-Ójúz©@›Y¹®v¢Pвâ>œ’ñÒѼ_Ù¿z%¾Ö¿»§`zDý!DÄÅNÄ–víOáõ=îÇ4]$çU¡¬ðáÌX/ bÔç; †Á¶†6JuZY½›y}Ó`G¥"øHÑŒ† oÏËYiÙo¶v'â$$ ãžP‚ƒìräÖ##í::¢Hˆ#ƒƒ©c¢³Y«þ„)ï¨Ù¶)·^8¾ðTÓÖþRN!ƒgw´˜Smуý™‹©–:õô´Oã-–¼b”ªbT®ÜúÄø: Œ¸DÑ;È÷ã`y"cœKýÿmcøwãÓgñÇ !—Øé™{BêS®µîJPÆçWˆ¸°0ó8¿@r ö–´tÓ?%cg’çWVY´½–~ÅBGÇ^ŒŒUµµüéO€gÏÏ)ÇròÙ’qºö·seyÅI_[Yá²Jíw¸Pq|šwó÷<é+ßÏH4÷»É MÂbõŠM»/_Ì:Ú_ ’G}GÄEÁ1[*ÉTUaµnÆÆŽòŒb4‘{êìLNJÕ'3ùòe÷áŽ(N|æ¼–À^XƒA€ÊNi¹VÒÒ;côCI:"ÃccM‰OÞËõççE©:FFòffü®®´¾Dvv«A\þÄ¥ÙÙi9ä¥9¬CŸjêó-¼«‡ W"" w—ê(Ïÿp¢n¿6 {]†‡3è±±—ýRsƒƒûwóƒ‰ÖŸ­_}a4]æ <¶ÅŽovù³nLƒé~±+ÙÛëNh}0­ ÿ·4ûÖ°¢:ZùŒ…’¢ýψˆï›?PßÏo²]­ $#Ë?ÛR {—þ·áµùHFÅÑ¢§µR! ì7‚wÇMiËÃë½w;çO!âĨë©\¶‘±VWy¶”A·w- 2zŒ2qÙp*•Z¿|Áòxƒ,;4@ÁòQŽÝq÷㋯ÕC]ßß¾}ûv·'§¶6òÌAÑÈÈVDä³'w”9Î8aaBÙéNª÷º^Îßúëk竆W¯ÞVWáá…ÌÞÕ º >ƒ 1hÖ»+Ѭ¬u\³Úú„‚Bd!”o]ú²ñ«gwÖh”ÔslÄíò:Í{„IDW·Å׳ÁdÎj|\Df%UQï'ž+Ða½ @$2›æ¥§ÕÑÕ%<[°Ôbîë·T¬‘=§|å cª´åöÎ™Åøþ5Z`^:ÃqoT1÷ñ@HøpÇX®®Í÷48 •ÛÚlî.ãñ·æjØ9¸>¹Úõꊾ{:ɤaddẻ»ª[]%V‹çð¬IåÑbàÒîðrS»‰ŽQÉ0YjnÿðqzLÚÌìtwŠSNáe³ªî0—ã‡]À}}£<<* çW“aè)£ ÛoÑÐ[înyÜnSº@±¨n¢¢öîMéFD¢ÿ°QRð}ïY?ø£©©C&EKÿsºŸ3&Áåš(öd.9¹_ïDÂ’´\QÆÑwL"¯–æ^žœ¨›OéLŽãýŠQV—Ž¡†~¹ÒÕ`»æ¶*¨liùð ν¿ß\ã= Ð_ŸgÊŧJš4ª$¬¯ë¸/W×·ž\O×í]®s³²´Þ¿¡½àm48ÊÊ€Ýf™¹¨ª::¦«û[Ï„äÝÅ3¢/šç'etb6ýo/„>ÖÕµps6yÄÿÖk›Æç4ꈲö@r÷z>™7Œ0<$D ŸS¥kpТýÛ{é¹4J·ãexxü_n ÂB¤ÖÓ6kݦϷ÷/.œìô ˜Ryî4Å[¼<<¸¹aH³³Û6޽ïyþËaÐ}Egdøv8Þ¾±9EœMZJ$‰·%ƒÂàÇâ³L&Ò{uÓÐ{yÉ–+ƒ¿yÔRÀ{7%"ì ¬× c²éö^!6¶i¯åÙ9–/å¬\¬ðÊ~ ¾a2¼£aŒÏË ö“^ú6¸ ½¶sa‘oeåln¾##äR:é'“èñì¯UÜÜVF2‡‰‰#EÃUìl&&`Ž„š U—bé¸kLF®î¶Ö’ýãîïÕ Ð£P±â°ñ“UeÓ{p±MSK½kW‡Ñj|··ñ¶ÜíâÉjVH4—^×+EŒ´ûOƒ³WFzµ üxgçÑÙ–ïÁœ±ÝëII‰ÛßfÂêê'{SS+§BZ[/nÎJååu÷öâvŒO gf›: [i@‰ê¥£¼ŽŠïu­Ïßž«ÑgÅ}‹Ž® Óuø 0+aI+><øóî•pNwV·s2]ÝÂϯ—Aí2€Ú]\jŽIú„êúä™Ð˜™ù»îF háõ±\`zdöväɃcº|TîÀÖSTð ú†iñ%ËÔ¬€Å†h Ñ­Mÿ7(”…ÆøåË“7Eee²ŽŽæ{¶ÜxTÜM98šF¤û yûbi9u½n9ðr™J 3ÿü1öðv»=—Õ|¼òFD“ô‹°YÜììíùyûø¸®n fVΣ„,}Qq1EÄÐ{ P€Îò ‘ÇÇñ`3+ÎÑt[íláddëôýK ©¤²ÚdŸï’”‚&`·%füx\\PP5¢^Q™® ËÖÓCY^ö‰Eÿ[{•¹ùçîE•蘉F¯Zf€CddTE² ÑTfZwõ““Öó.{ÖÆC4lŒ£œCºJ* SEuI‘§gû3oke_*ꇄþ‘ò<]?;ZbÁj¬««q|³A%lƒk±¨9t@n¡kkû™¥êÅô¹´†Æ  ç¼-òç€ež·wÀE\ídz™Ç²>žz¶ô<òjj¶·ç{¥å±hqd‰ÛháK~&Þ¹/6*~ø0Êf]Ûšx»‡P6_T[kvs õTIñبB'§LâÇw4¹­?"»_iÐéòÀ}‚=}bCþ'.xÞb©:zõix(«ŽŽzÙ¾&~:ÍN+ “!GWV6üýâ}e%›uë_9þ*KH\"68Ó÷þ•ƒÊQ]ETØzÖ×o>œˆû#&ÃÑY§Ö†ë|g•`©%n(Õ[CF†‹Ò„¤&ôÄ¿T„©õà ™øŒÉQ0SªÿžAÉȘ*-Ýë ç@!M!`?-Z‰Rš÷Yjy"À¾¹’ùhIò-Æíð/†öy-Ü«œ~]ú[[Owè¬)‹á„†b~mçeâÖˆ¸­U5ÀW7¹FìºQð>!K•vÂ<ÂÿÚî“ŽŠ€é£ãÁ,ÕÇ*.՛ǦñÑQ]®6‚’ŽÃ:Þr°BÑ`µ¿~"¬TK½#“ä% …Õ3À&tŠX›ÏÞ-úfA««w%Ç—ÇÂ++Odçbé“¡;ýÉoN¡"âSh“ #ì5NIV‚€RÖ¦—Ìûtz¼BñßsŸ½¸Ÿ7²såWW?öÅ\ÿï]O…ilX5½Ctñ¼O•¾-‰ll?‚¯vïĦIîHÉË›úûãÇ¿ˆcÆ»NÌmI“ºo6Sö :ßè7¯»tí 2'#B@¬3ï›2`œ™™!›Îª¡¢º"„ŒlÖ·§7P‘òɽÒt[N}[bPÐÎÞ»¡a)8°·¬r|¦Êœ.Ü+~ôÙ=AÂó 3—ãm‰ü¯=`ŸéŸ`‡’›½ªLFfÚü²­Êwª<4^ÄŠ~Z1á8f“í|húÒëÊšèùp{›.hx6–`”[”Ì®¬êfZ­mHö6ñ“˜ö˯muÞª¼ib:µ±N÷Ë—‚½…zŽú†»"2IòãsM]zèç8ùý·ßãÌ]C[ î·ÁÄÐÚ˹%õ?Ù’Ã……ȵ®ÒÖ…&Ì"ú«ÎV)/ª™4°A„nÌ&²?õñ™@§`e‚b©¡¢.t=! È): ýw((F*>^˜çž’ºEHFFKR2BàÆYí‡÷cÄš_}ò“’ò¾›Ç†Äý/†>@ýff\¬? ¬Ÿ7pR%ä‘Zbqªô =rãÀ(Ý®?ÆÅ:ømWÿÚo©Ø¬œ,|S5ò9@XĹnhÚvØÜ¬!à}Üß2¶4e}ôÉÒ_Z5= Àé“wßl„ÇR "ÿãS8ëFGHÍüQÜK¬¸ezÝ7±ô©cÔ'ožÁÛLíëúÞÝöÖð)»½ˆåœ£KÆb:_ðá’ìlùÆå|]æÃ=æéƒ‹_# ”ÅÉjëÒAö£ÕžÊZ±¦ñ±ÊÑPt•lŠGŽÂG_ww‚‘Ñ,@XÑ=8–‹–f/Z)iÚëÛ*"î&X£Æ  V·=ßgµ§Ç  ‹¥RK¾:c=ƒAÓê*ãÕ>œ¤äÝÿ<2#ùز%Ošz¿'"Èþ‹sæ­âð_¾În÷æRRnÊoC)@THñ¯ ¬–dl›Ì?§Û/¿ÔiDï‰/¿Üu9®³1W~ЇQƒ“Ï9vöæöÖM–ßæ§<œúÙö—„/p™Ö<*ÒîõÒ¯„°_<žI5E1(:è/ïºóÓÒª3ý² 8zÚõIk{Gl£#=èø¢KJR2EïϴɽŸëœœÊ棲Ä!?»¢(è‘ð%ddèlìô-f×·v 9|†‰ÂÁ2UUŽ©œWÙÅÅ #+b0²0j00g;c–Ü\¿úb+‹Àô&¦jht<êsr¨Èê¢Ð…o ôiÍ’”Äup¨Ì‘ú!Õ¯·B±³±9Éå©qq{ÑšxÌtþK ÊÞ¾–Q嶯_WT¸‹ÛK«Ùå7g´®X„HG~¤ÐÆZ·%emYóíÆÞá)1QlQQ@˜_ñ¡?ÕìÖa„H"Â&;¢w!Ôp˜‡¥aH*b=3••©^ „ïLd>~óÄ´Ù’á72ê*ûŒ3–3 -•u|áøÐ¥(ŽÜP)®© EŸ sñ'Vx¤?®¢ùŽŽ_[ÛqªD=Õƒ1eûGk ‘ôK±ìlÄd ݦÛo½ãº Nn|­B$/Wƒ‚ûçËÞÍÍ]¯Ü~§4›Ðn„ÚOõÆ,ŸÁësð‰®‚÷¾ÂJœiææ!ßäê<ï#ÌèˆhÞÝÍ™«9CGO52TÝQ²R§Œ-io»ž’64D´`•”\˜…å´n‡FçädÊæ`PÞÅÁÑp>ltº±‹­©9Há®H§yÍ— a03[$àIòØ5€Žˆˆ`º8ˆ¾,Uð[Xh°œ›8ÛS-½œ­ì•]á‘ÍvÅE%¸rôâ“'ÇAÃÑêÖ ýL“;«ò°la¡y³ûûeÄ‹ÉòÉ¥%öéEcн™Šúûû„ûûYðµ½½þðP‡…å-.næÉš4¹ÔG|ÞÅÎYœ7Ùòò¶Ö‹•%šW½å†ojšå@™õhjkŸý6Èßz(.åe¦±˜ÅÒ­åWyuzjx¦ªû ¡u¿@¸I5Yã­¬jjÚuu„µôÿcï+à¢J£¾QTÅ@ì`ĸ}ç b¢ˆ (**Þ„Yg†4»smìÀ`mÁkíÀN[ ô;wFlw÷Ûï}ßÞ©{Ï9ÏÉÿyžç^väîÜ5n½~—ùL}›uþdÿ  hÙrö˜éA‹ –‡ötê·kW´io@²;ç^½:wذ˯^…|:™¶ç"{ÎþùgÙÝý-«v¿œù4ÓÊÉiÓà·w{ô¬eYojÎ0¢œÉkÕo¿}¸3ëìýû›«4$.¬ï¢YPþŽÓ”®^lzú´|l¬u‚Ë.ÿ—×?e•걚LHßÓ¾7 mÛÐð§«2÷‘'䟾­LÏ<”0 "²TTÛ1IIGR4Wža±—w¾õçœÛ‡ÛŽä<{÷ú¨E›ZíjÈ×7®ÔסXq¨3AGAG2ßùõ…{V¯é޹U]üZ¨©{‰ ¿Ë»5ÿ¤‹îjЦâaG÷Øç+ìÉnÛZ¦uì 1.¬ x2lx—]1g"_=vSÑÃ{ûöØÇ×½½ÅÞóÒ©Só)äT|Nç}ËF:õ͹íÆóóÆY”¾ôCjÞÖMxûÀÀá÷O3·ôò5êçßk}Á}©«»¾º}¸»«Ç2=ÄA›ä–-{ hnÜû×káBñèÕ€µ %Ê4OX±âXgyâ¬Ðkµ×s-ÙWeB¢iÒöí«§Wmï)KyXVV``îên©îCõX¿qÆÖ´ÀóMšHñ¸àµ±¯(+×›k“ybîÆMA;cÎŒÚ4èݾJ֯߿f÷nñÂÚý¤%K6y|™ì0þþ˜ßËÊf>þ\³¶Å}8 aZãÇ,{fTÅå9åòý_æ^_¾xñ½sçºuYлÝÞÉ'›&5Zô47íÅ+mrØ.mæÞ¥ÐP;ôyØV¯,•Ö ä¹{uëÔÀ€ R’ºÝµœjúç|òÎm’xš¬æžRvزeÎWv¾Övêta{„‹Ïå¶a²bÞÄÆ^ܰ¡Vëwá;¶ly>Þ±wêûËu\Þûº¶èþd÷`z²u—ù(uÏðç"¼Ëf” Zí²r«²<Ò–í;ûIï®^~ä½}ݨ£½Úïcý{ x¥ÝÑË%¾ÞÈ8®kB§Ô~›²xñ ÷¥sæeõ³›>þ¥åšœu°±ñ‚è¼±ÇéàäÄ–-']ט®j£w=k¦²49½?s‘§'³#ªé¹ó»ç;]`°ÓfãÚ­„`S͘I©3u™V5;Ï)Í{w';4ëªtÿ«VïgŽËº Û»ÏÑkqûP»iA뛚]µï?ºÒ…„–çZ*úÙÜîdùæzTç‹:Ÿ{ùÒ~x™ô-^kïÞ£Fv~´³hEq™i§)¯ïòísͪfHjØüÉsæTLoŸ¶vîµÝ­2޹qhêÈ £êox¶3:}vBï) ½ŸÞ÷­ÉÔ|çÓÜ×σæÌöIåæyå??9¾q'ïys&æ½¼P ¢´r½ŠvþÝÈŒm~C·$ÕÃ\³oM>øæí•×o¼Oñ¼_ãq}ªöµ(éäÙ¥Öö«/%àÁŸ\‰:s(äb¼©n~BMWמSš”P”†äó¼A«î§ Xê˜×cx‰ùÛI,ç4äöµ½qߨ.cÞÔ¬ùÄd`V÷¾={î{š9÷ñc*ã™ÄÉuË÷–3‚ZÛ™˜Ô¹)ï( *Ý~ä½gOb¤ ݽÝ#ªÆoÝ5èÒ 'Ïoßvöì½Õ«›Õ¯ï·£þç¾ ©§Oß0p nõyAÂάhž¢¹çØãƛ씅Íî³± Ør[\jtîãe UgÔK– UO3©l…Þ]»žeW¡ÎŠgÏO–¯[÷ØkP žÖðøñzGg-<|t 3€;ü»Oòì WR²íìN® :ùúùÉvÍô:?äͪVƒ6èÓãüïS}§Nõ]°0èÊ¥Ã]ýü6$SZ-×o왋ÞXí˜ä€>{p÷x€7³ì«¯·-\X/=ÓÇ¢±‚O÷î2vÑõ]Z¼|Ú/ìÒÍJ³hÛÍÖ¦æ¿J½°¶UŸõiPwJÞ‰ « Âbâë¸ õú‰%ÍãŽZAת5oÊS*ðž=ÖUêUôܲYÿþe€¯V»çø¼˜ùó[xô-Q¢jþ»&ióú<¼¨öV©L_¹UìãµnæÌí[¶TéÛ~ò᳉i«Ž>Ɉxt9"ïH(ü®9Lk3ïþ˜•¦à‡oìv<„´Ú¨i %ƒRa/tº:õ®mlÆŽíB‡nOZ±b{ðÉG`ŽÃ÷ím™¶·ôõ&#S¥4ùðt_ö£MÛ:4››6s ÜrB}‹>'„%)³üº¿úÐóÌ™Än­Z=ZÜþÁÌ™£zœ¿}“[|*À*1qÖ5®\¼˜Ñ?mXéµV>2‘%Y¼òþ¹=ÃSÖŽŒ—lY¯Ê”gFY €rX¾úÖ°+Õm³ÜÛ«©ÄE‹(f›‚yݳo_ 0k%0k0¤ž:Ôþ×yZëC\æ¯u×+… WŽÆä”êuþH`—Jo_?ŸU«Vµ7ý{õ:™¹èêñ¹½{·U±^;ýìüᢴܣëÖ¥ìRnË©¬Å±Žefø©ñ5¬³/N]”H¿H‹ß†åwœ)~ΜË<½*UZ1ké¿{xYç²IÞ‚‡¤¾ßÞÛÃlûŸcK;} P´©Ý½sk¢$©eFFò©Ý]zõÚ®Õ­Yà¼êȉ!Ï^¨º <~ÜE“3i{ö\ݳçXFÆ G=W›ÑÖu´ÝL¨ê‡]¼y3 ÿùè‘£î{PnÚP¢ÜP—³çw·ÒÛ¾>½ü`…Qß¿\ÏÙmò2‹×éúCî9úèê'¥ôC×µzßÄgÀ³57nø5k6üÄü·–.ç;&‰¡ƒEöì9|j:âèØ_£¹bç—Ô­[µ[Žn£kœ:zhå¡#«=T¿­¾r±¦Ý‘18ª6íZ©îV2ö…|GµwBˆ»ÞuœœÜFľ|x-}i. Š éqq³ãîpßß+MŠ„†^3«”1nÒîÖCv†ŒóGR…å;âvšªf¬Ëxðð·Î Æ–™ZîÂÙ³»õ*½§gþühï>™µOħå,¿};š†SgV¾º\áÍsž÷·ºób'ä°}«Xÿäè oWtR»vdz#zɦ e9hˆçÄIÞuÐvºs«íÆW\jâZ;³­ßó»ÍA$ÀŠ3"fq§Ë×ëw¸ŒyÜtר¨'‚‚vF4rcO̸ÇôJó ;Äl3ëS­ZÙ'vÞ?sKÎ…ŒŒ>>>ã_x‘7 &"¢jT\`pð(hb\|Ý|_äÜIʾrk˖ѮԸY¢†n%H ;ÿøãmÊõúu] 5~¸ºÛô€¤§#R7Ø.ÚùîåLû€Ó§Ç×^M¶÷ 0¯Ñ©YÓÃö^_6lFªSôSïìì½e‹F“q¬“·C‡.Ž#gná7æÌs@Æ)PÌóc½Û¤ío5Pªˆaíøò`’÷çÒ÷Œ»-îö¡Vµ-zî¾Êß9b·qíÀ2·-þò¨cnEkï ›‰‹»&/½e[.Ê6É4iÞ•š[ÕCÃ}òæmvè;hó€[Ö›¤Á[5A•&Õ ªˆ¹ãÇLI±ßœÔØG㘸~ýãÃÓk\ºä¸qÓšõcÜÝ÷=Ê>^¯î1øÊaçÃ/@’ŸXÇ1÷ÕÆ”0‹ÙøÁ±+«òË<¯V¥Š¯Ÿ_{½•ùð}‹E±V¸’h¸”j¸´{·n«v9zyyU¬ïl›éݬys:ôò~iÓrËi]=ª ¨C®v Jí³÷ÌuŸßgÎÿãBúâQóŸÝ¼#fßMã¦N1³zÿ¸ê†¬v~Uw­ ±aÀš9=›û¢SFè/ŒÌèÛËïÌZsÿøq½•›WçÌj3SÝÝcsðÑ÷Nœ?¿6!auÜû˜©óû¼|ñ`ü¨QÝIrF¹ª^óܧ@eËI§ÏLÏÍI?}z @­Ù³ßöí{~à«c(6lÅŸƒ‡c7†s׬Y³ÊîìY˾aŸÀyËW™zÓ¾³nÛèõŽòþ·w›û~w\¾±GM’*dím‘œ¼ÂÓ3uïÁLÁtdê¶yÛOe¬uOÌ]½Òö¥uý5.ª/_Iy±g8Ó~td§­:Åî/ô4²u«2}Þ¹ ©rœZyc­iæ#uæíýá‘Ò„:Á6)øëÖA©.É€óßt™iÿ|(>ÝÍ(i/µZíãS9=Þ–Tך~^[öI÷½¬f¥Ë¬öŠ`Ÿ¼@¯õSJ$•·Â‡F”Xc:uNO¨„ÏÀÝ;uJ„*³k×¶M¸i§áÚ¬m;väšúû¾Ñ~M¼‰+©­Ç&¦<È´ªÑ{^E“6ñm35&C¹ô³þQ‘Éá‘É=6•y}§Ÿ4¤¯ŸO’—™{v_Þu({JqyïȰéMÐ¥KÞ—­àLÄíÎJ÷¹[C†¢&&¥‡×xŸ±¥u«÷eL|¦þF›UÍ*w%##ÿöáT;?µºÌLŒaЄùö+¼6`ÔÌûs½p|þõ¸ ³óôgV=|ødä“wná};vi·¡íÜegC6Çõ~z}Jøè~ݺmüöÕìÙ5ŸYÛŒ^Ù¡d_ÿîÝ%I²¬7r ·)}zÓ…þ›‚ÂV­z3¹õ{EK›9~¾¾Ï^¾\~æNzk«UÆÅ—èV¶OŸ>tØÕû›²Í¦EæŒÚ<¹…£ÆÎ>ôð‘fÛc_ZSuÎY:¹ÖÒìû+éÈG>ž{ÇŒY¿M»œ»´¯_¿Ì¦àÀ›»5ê·Â­„[ƒ²–uê\¹G]œ¸r¥í‚eù )gÓÓ«ìjpáá¹5½¼6oÙ2|ذ‡YYÞVª×ÒÊÚºKòÊc'Nœqd‡×±ü´¡›7c×ß­ÉÕï3"æùÝÃ1¯kÚÛ“[¦ºz4XÛ{껕â#ÚNò-gšUrRmÓf3"2Ìhn:¯VAFD<¯ä’×Á£i¿3mÍuÃV®Áï¿ØÐõÒŒ½™sT‹ƒÛT.u Æ—0ùâÅ‹¶±ÃÇŒsöìÙ¼¼¼aÃJZXLœÑ<€Ë½¾MüæÅaü8u¿6't<QìÚ~ù¹ËofxxKS£YÛÊËRR\R”³ÝMøxÚŠõtžI³Š£¡ãºt:çéñy““ã–a™úˆQ‘Õ;‰ãJg.T­Xîùé…],¶iZÇeìÝÛ. êÜênÙÙÙ-ª7Ç0ííCS½šà Ä<º¿kÿþýûô¹vnM@Td$Ðüü±c^tË–µ¯l\º´a‹^AA×ÓÒÎÎ;7mš¾§Ÿ¢ì’uë‚úöu7•7µ8‘À Ï^¼aƒo``·ô ë‚ÌJ—^lÛqõJWÅC¿ö5}jY¬Ü¼»ó´óC†N«ì2ëü~µã#J”ñŸ5lóæCåw¨iy¤öS­RuzÙ½“ ïݾ­trÒ\Ý:àÂÚ>Ó›tn‡Ý—k{R^ääìMÖkµ—wvм7+hÈ¥ŒŒúuê8©/"ê£öÉѱ±ÕkÈÇÀØØ°+ÉߎÙKÙ6ožuÿ~5fòäÜgÏÚúrºMg;nZ³fU­¯»wè+ºY¨é#·©–¥úŽ5É*y ŒÕéFG†žc+D3ƒÞ¼°‹tÂq<2çØÕ«½-HH¨ËNª…—Ù±iûöÚn¾0×G‰Õ«W¿:0-eÿ¾Ê[KŒ:ÀÕs4û°p÷öíE¶-ûŸØÛÄÊͳڌ²BŠl›·uf”…ž¨]åMö§¯¯tÏ™š«,Å6s—¹–ÙY÷¦õ’Í))gè[ΟtýLzz®Ó#÷mêñ¸ÕÀ›lÙ«&négÏúC¹qãÆöí-­Ü®\¾\²dÉõÖS›6K7®y³ôσ ò[¦`p76X<ÂôF·Þ½'\³mÑ‚0Üúggoà±]óæU“—OZ%ržû­ÐœAñdñ²e¥®w}QæÙ³gã«Û·ps?x¹E… •Km‹Èš9yr¥äZ1KlZ×<5ÄÍ­[^ó?ãÚ×íÖ­[§Y3†ôøpf]¿R6q#Ì-VL…Ÿ‡ ‹òÇu¬r˜=R;-©ùɱþ-Ú4ãM7ŽªðÂoŸß «êÕïÞ½ÛÒÉéÉÕmÏß>I]H¨º0 gÏ9ëÖ9æÎ|üøñÈ‘#cbb®ykÿæýh"/ûø<Œ>ówù7¸HÑtù+C÷e"5'ä¿Ím}ϲnÝÞ~~Ã[pö;däá§«TI]b™oÞüqŠg^yrý’´èÁ.ýTœp¿ß~ÆöuÃߟÞß?d^©3 §íÛÞfC‰Æ÷R™¸:âŠÙÓØœ“S¦4ñ=?tÖ¾­[·¦/õÈzøpÔèÑQ†¿¸>øùqzûöí3gÎ…õêÕ+ofzzúR÷‰§Ï³°°8ÐéøÓ';!¸Â?H>¬×5ªjeµlÕª±³æf^ºÑøÎ.B-üéüé`ÈuH­™HvmKŸnT%wÌ{÷FÏŸksmdïcŸ%]á‰LLÛnbÚlÂ’DÏÁaÛb_þ~‘””4wîÜÆfK`ªî°^áYíœÉ¤ù•;Lÿ}äæ™çFŒqäHÇG‘,»xäÈÒ»ãG¹ô»=aÜ„YíLy¾¼a°ÿ»Ûsšlè‘Ù¶aƦ¦ÃׯGÔñ¾IžËÈXàˆ×œ0¾†#u3.·fÍš ŒNz’±ËÝݽ¡ûåwÊÝ%>X,X’vñDSgæxI]»Z&7î»pVâL‡ñ.oË¿b3‚ ¶ìn³~öºõÁMO´=lÍ.Ü×l®ó™F †E§+óölW4Ѻ覲\ÕlÙôÔ°iüØ2ªi–SÏk·É‹ûðæÍlZZÚ˜1e}˜ö$ó}Ö0SÛáĬI ¾Ï¦ÏÝ<0÷ñ*¿Ä™³f%&&Λ7“ÕŽë§N…_Ú(’$ ÉÇÚe2²©áo>„††œlíQYȾ¼E~?©Þ¾ò·Ì½¦G+¹Ôö7µúÝQÇÔ³çιyxÔ©S‡¼ù2&=×C8¹ Õ&éøêÕ«?¡×÷Þ$Mœ=µl‹»Íß\ë¦z¤ëáÖ0p®ë º³ô¦YÖ°v?“üçðÌvÀyðàü;GgÝ ~±¶÷¶®9óýZ4Ò¨wÅïOOÅ› Éñš>ÛKêÛ·~¤“á~‘Ò;òß½~žœLUý<÷zœÎ±˜£½ïï¸gWÿ¤o¤îñ³ªéæ[µêô†“ôz}¸2áüùî£÷}‘¿|üaᦸèñµìÀ×~hPúIï`Œ¹]JW\"tš~èõ¨ÆàýúøÜ_™wؾ³M·‘úœ ¡5¢[@šéjsºWÅøF¶Ö-éyï¼ä̃’'9vìųgtºÀdõœ´ÖgJgTžº2ŒeåªúòåKSSÓM›6¥çf=Ïy”àØ°÷}}ËÑûª4µŒ?0èÀ Èwfò3¬cFDÏçüóÖsO&Êu(y¾ô¸© ÅæÌ}SúÜØàz ²™Bib2eêâŬ(6ŽtjÜøÎþ±U/f¿~~o]ÏMw3÷ö˜\ÆÓÊÎnñUJ©BBÀ;£CC³A[5zÙ´pÖhÀ¡žžå’gB.l“ãz¬dRÉñ¯¹7² »¿¥7¼í²r=[ÚÄ$ý_ƒ>¾“;õ­Z÷t£65ÙÔÝ3–296¬tù½ûö=zǰvíÚ;® î©P~®´æú$EˆÊ¡•ž§¯[U«vçΑ#F”23kXvcô³›ÎþØm8víª×v gZZ›Ç»æVœ¾o”œþõ<7÷ÃąûÃBBB|}}‡ yÀ§F‹iù Ù“Þûe{ S$vYøg\³ðvž7©¼c¹Ãâ_š™š6d)Å ¨§Nš6mZNN„öcë±³7nüì@ –e—ŽÌÌ̼™y/¤–·¤J•*ð166vä‡}­²¦5m6¢ÿеìQr\Ùù‡«E¨^??Ëï-=ÓW³jxrúcÈß©ïßôç­ÒÐ=©×–Õ;vÔÙѺIwƒgϾÓàÁ'ônf±§ëuñígå¦ÉØÉD>êÙÓÉi\;þ7àÂ=·ëë–_¹ti[dv/p0ØÈò5’7oSkìnwÉ…óÇ §(jšs»ÃÍëtO_F.<Ó§²²ÿ³¨Ç{Ÿd.86Ò¾r~«Í÷ó+oä£és#n‹§åìA‡²—9åøwhzí•KbT: Ú‘Ž‹êמXleeåªWä»/}ùäÂÆÔ+Gýz÷¾ x¡q¥.½Þ–°Ü›á¥¨Ñ¥É66ÏëTo¿·ìr#ÃüŽ9üÇ­Û9{‡´*ÅáÞöp—fÏ·)—Æd_&ÁöJ=X²ÄRý£F4ªu'‘wx£½™pàøñìƒÖq®•!ý«N-j›uþö•G‡FÛÅÙήÜëë³rêV¼wûðôädègæ¾zõªGzþ‚ "²Î?ÈÊ ìÕ«ïŽH‹ov'&Ã¥+V¬G ܦƒƒ!¥S”)S¦ZµjW=žX1X£i-ªÜ©ÓÑ:tؘ²®Wúоßë)-辶|±$1v)ˆIŽJÞ²bSÖYw`Þß3ÜlñâÅP2·lÙ®.Ó¨¥M©ýý»6<1˧M•® õ)üÁŠ­[·¶r«ji9ªb½‡7n ]Ò½{õùÞk÷äR‡@æÞ´~ýÖ·Ü¡ Ñj7._Þx˜b峆í{O6ÚÒ<¡wƒk[íu?uð |{ÕüQ2êJ0¢•=yå8õA¯§"íTÇïA»<¢sÙw»¶U^;½ÎÈk7vÛ‡Ÿ®|ñÆø{sr®VΫÜnf%ó¤òÎ¥*.O[\£Õ¹[u5nüàþý/^,²}ÿ.&00ð±vªm¹ó%ôN&%T;}¸Ö¹´§'§,‹^¢'`´#GŽœ>}šÛÐBn­éîç7ðí«ì÷ùoü¬¬¯Õ–ßd­K}êÚ ¬MR…Ôõ¶ï<¬{è,W-MÓÚQÙ:,~G6^s[6%oÛ£„ÂôqÏ’UÞŸ±9-êÔ™¨«DÝ7–M…ä6kÖÁ~ˆËÛGxRW¤‹ó»YåÄÙ³ú Ô(W³’imÒ¶·)³ÞÁ§BRy+÷átͼeC_Ð×­ï6s²lYyÎVù£§›·ëÚvý†™üwüO<Ô*.8¼¥£cTT”Cî Ñ;úwuŒ–i¡òÅßÚ뿸ÒAÐ rGh`ªƒ†ç{2(ãÕ†s¡øÃK¨¨gò¹öâ€Ud+›öš0½¦·÷ åöÉð©•^ŒÖ/vâCX­NÔ·êæïn¯4tRßéaß­­}{Mh8«Wqê/éxºµb>_cl{ƒÅ0ˆ ½FûÅy®šèø”¤t@Æ6Ðåsx) / ÞS ø^Ëjc¶ŸO°S´õñl©øAÔ)ü ©è*J¢V ãEgG#usgµ*¬ÿǪ´Î×élZQÝÊF§Q‹ºQ„nV#w¶¥È'Èâéx­*\ÿå/¿±‘¬ñ[…NË·²ùm@„¨ŽÏÆÅÙÑøKñ.bÂtÐEƒ±uß^ý…¼al¤^+Šÿ¨ÈZQ§Šÿ‚È…X=ûׯþ¥+]x6²4|D(¸ƒ oclUa*}Wy,8¢“áœ(U˜ ‰²sPkXÁÖ8¢*8D¿ÿXµ‚Ñ‹§Z…avác€q!^U¤a D¯ ‡5°·WE˜FÄB5‘¢B¢Ò)ठ•^o ¡‚‹Q|dÝ@aoÿ%Ù]åY9–õòؼ¨VëÂY^Üʱ1|—¾ñ3¨ÇYo”Þh†@ž0 ¼¥‚¤Â£ :tÖ áZÍoàt¬ZfSpúG‚öjQ‚‹R 5^¥ø$ÚÇë Mæ/‡«L©IC”Bœœa,a_ŒåD­ æ@:0`&øÙÈØ8wÔ òàõZãËGÝ;ô#¿1œhÐ>´X ÙB¢VÎjõFåÊ?x“‘Q÷_g!ÃI_ œT«‰BAÓjV§3æ £.Îê/¾•§Í>þ?©U.ÎìG¿G£Ó\.†»tfUaFø°ÁâÇa:;²ð\ø#ápžî+]Eµ<‚Ïdt?§S &¡…Lb~¢Ë†Êt¾¢í m$l̡ڨ¦&·è_K)'â_êì¡6´À²_«ûJåØ/êüWDØÇÄücjî*Q-k˜ÆƒB–ø:Üu*A´‡Áx„Ê^[Õ¿~þÊæ[­ÙËé´@Qß~oÿ±ìê>+ìËSt1aü'Ɔ.Ÿ,óUø}k-]84¹«ý”=ìC5±ö:Qk¯ÕÒ-Ã4a¢“â#× Î>„  ô¥¢Š¬ßׂ[ÙÚ ”Ë‚7飷mZÊôé*O¸Ê J¶¼.åp\õm‘?aÉ'}²a|ˆ Çe//yųƧye%9‰E$IÉI4¡¤1QžÂ¦E”%„¶qùÖI Âá#80¨ç»!výzTœF¯×„~9°Ï¢åŒÅ¶ôI¨ŸZKuü¯ZK¾Æ`«ŸU>Á8R—v*}(«ëoè›8€7’„‚ êF·Õ9(œ9- Ò‹¨ýȭׯ»”_Á¥6_ùþ—2ÿÔ}q §iŒ¡PNÂ$ O£¢$Q‰@¿÷ºo1xý²û2¨@a¢”0B)`J‹OS„’PŽ£%âK÷õ¬ñïºnÑCÖ}ª×ý5KýŠëõ"× ÙcÕ¢˜®ú«îów\•VR8J‚Ñ<)Ñ(NŒ’cq W2¨(àÿ¤«ƒ—쪪0=Eéÿ5*Z.¹….†7ýš2É›@€¿äK¿jß¿ãKJŽÚ8‚£,ÊÀ;‘¦9‘#9–$hž£þѪ] ^²/É“yÿš-“Œå  7"úáL¿¦Í_q¦ÎžÝ mÅ_ò¨_µòßò(ž'ÈxM°" 1LB)‚Aq\ĤÔ£ŠæUpì_ÌNEË¥ô!ÅHO¿¦Í_ñ(ãôâ_s§_4ñßq' ¡)I¤j+Æ"(E³¼D(ž@$•ÿ¤;ƒ×ÿw*Z.ã”i1üé×Ôù+þ {ô_r§_5ñßq'J"D%”ÀXE1ŠV’„JJŒ‚º+‰ÿ¤;ƒ×/Ã|LD$a0žD”á> K%‰à<£$QúæûˆÚP•N'Ïþ«X¿èq‡-Y>ûk6ûŸýBCÉsÕ›þŽçмH ,GQK ‡(•‚¡4ÅòÂý“ž[ ^²çêU¡â¿˜‹–*T–¨õkºü%œ¦T’Š7N>ÊÒü%¿úU[Û¯>­;LûLp'Ž f; *üÉŒ¡«á$QP¸ŠÆ™g©a~ðë_1ZÏ©5| V¼iYã4g¸K{㼑î«ó¿>Y¥‚RcœëRp¢<Å$O/ ¢a›"|’u:ç>NE©Â>šÀpqª€¡q~9Dëèâ§LϹã*¨Ñ5Q¬Nüi1NÒjBt5jµ&Jæ+ ×ÒY^B‘d v‡ÿc“ÂÆuãÍK3sàÆõ™Ïß±ðy1Q§—×%FÿÕ:ã—‹+á¬>äÓâ |aøl$©ä•à0QdÈêÑŠb¤JŒR,d4(X’4.$}µ ´Dµø×Âÿ‡«ß,^}ædŸË—K§Æs fþ¿ØŒR°’.ïHùrõÓx*4øª7@|¼*<,øãÖþߨ8â§`…¶@¾/Í/ Á2«ÿ [þ‹½ÿÓ¸ø-Œ¿²ë¿¸û¿P’ ˆoö‘8þßþÿ}ÿÿ'{¹ëßYþ³å-ÑÆHüü1~ðƒÍ[«¿€rºøæì‚ïHêÓE_+ö‚¥ìÏ×}ûÓ74¿ûýd¿?û'D¾á—{Æ?ÇNÁúŒ„*ià¹(ƒs8tɬ Ä‚Æ”÷ý†t#Ͷœ&B/Ë[qž¡åx„ •' NR ‡r" ´CF¼=.ï(Š<+ЉGha8‚ĉʼn¦šüáfú¯Èûh e (."†ó¸(rе¶Áh‚gI–GIÃQž$ØŸqq‹V­ œPƒâÄ%¥’ä(º$”Â1DR"?£ý•ýŒ8Æœ'Á Q$ %Ç‚ž0†eœWb$õ3⢤ .RÿÐÉAÛ­‰‚ÔÐæ¡<›– ±à$ò§ÒwfÃ"XuQÔA¿¢’%8%‡Ò Gá(#ñ ÂQ†"¤ÄýÔº`V®HÕ *À‡užpaR@A|Šü9yU$Tçö­X¨òy–fHÅyJ) $â ‡‰A¡¢ø E÷2nì*ŒG „€BD±Dÿaˆ’Sâ$‰"#üt~Å5/Fá$¨ÁN¤(Tž£EBÉJ‚’ã•?u|?ãÖŒ¢ÉK,ÏQ’„sJg”M±.0$"1‚ø3òþС#÷¸á†$'NÏ䎡hÔp£ø)®,‚¼ŸŒ9‹âAñ4†‘$VÅH gEž‘(G”ˆD ¨€ÉC^dŒ1¸„‘ËH(CÒœ@R¸H“ ÇÓ‚ÈAcõSÐ:‹ÚbfRŒ#xÃhŠƒ´/ $‡ã¢DR%@ø‰<ÿ3.,ä8Ö-RÞ·SØ(x”£YŒU’¤Ä(Nà' B°Å‘© »¨ ³KQ4¥äQ:PðTJ‰"E4ÆÓŒÈË©"ðãæ( íáÔ¾­·®nAžÛz¸ýÊ,!R< ‹‘·[0@'廹 f`åß%ÙoèÜ¥»çß@b•b8I¾S§H<rÅ` H&Štøuéæíú·1”¢dâ,C ”|ûœ‘!JÎñ"ñŽf2÷>ß×IÙyв0+Ycy(“)¼(àˆH`×A6á¾³°[w7oÿ nÞ¼»xÿÊ,¯D•€cD€bDãvE¥'#¼$ñ&ýDÁFü=;»uéæÿ· à½,!H!VÀ¤=qÛP,üÓ©S§ö7\¿~=´víÚUÚl@*“èÆ™gÏž™’ÉBÇÇÉ ÊP£%-êòSþE&u6¹5È€Å#­¹Ì©5†ÎlÝcwñÓ??=#£rVcãÒׯ£ù=]\Ø®àq8.œÃQýÛ†<†bÀÍ||÷±GLLlº¤êÙ³iÜlÿþµWÔ¶µ^Zœ*9R’å5—™™¹O[»¢9Ë.±ÅaóÐ`¶scE…Ê`{Á&°ððòºd5m7°÷nøéð$ Ýr.8[Ú¿VHB‚9222ìĉG ±ž±qHuµ&…FûPTºZHDdõíÛ·oݹ£`d´±®®ŽmÓ&QÓÅGÇ×ÌwVEK…^½Ê¬XOW÷è;bœœœ]ÍÖñå ìÝ=2ãZì ®¾îYUÕ¡ÉFÛ¶os|\^Nj¸ct+=½‚Unþh¿Í`S¦¢}«––Û ¥sU½Ož<¡£ËÎ͵ Ò‹ÊT=rd÷§‘γ!!«1Ì^±ÈO2g±Àíj.}H N(à>l|õ걥ߤ‘שKÀŒÇÆÆæÄ1Ã!¶›r«v _xj Ä€§ÈÒÒR\B"üi¯kÚG)ËÂf>é‹F&&{¤¥¥›B˜yšŸØpéÔ©õ‡ßœ5UQY}A=ÙîÅÚ:ëáý}ÃÃ/àâ$¸·®Ä¹ñKÕ P5‡± 7î×Ð8ÕøÉÍÕ5&6–çãÔ”õܧ!ècßsÈà¦vÖ#>“û+:Ê*Ïò[?zô¨º¶6"8$ä›þ¯­ËVû~ÚcÑš6âÒi›ß·ƒÑ™g%2~îRžr„—¡Æwéqp]˜hvLmÍ ·c¯8Äëêæ†uzó0’Q0pëNy^OÍž-“ñ@©Šå¶z Ü=ç |žÕàWóŠ>~–­¶¶çs«ÈkÄÒ-ôàGN4ö™M^/ðùnßè¶íEƒ&&ëuäuvvö;¾,¶&b8‚ΞeUŠPë8†0­þ¨U:Ým0–qÙkôBa[[7·‘©iLí‡O?*úû+^|eŠ”ð·!ž•rAzT„9Ntõô\GZö¨«'– Äw–y°Ô|hÚñ´¨HÑðªôdGê%ýôÒò¢É¼q[ᘓݗ°×Ç—†h^ÉI¤'Ñ ±^$ Ö™nZe]ó¨Ù(hóûëÈÙKì},ểZF¶vµ>Ï9·”Joàé\ŸlµÀ¥-¼õý=Á%+·Õ]ú’Ûgeõ<Ìç~«µîȃ7«µ“Œä[®ÍeR»>¹Ì9Mkׂ?}«uÒêüª.ü$2V“…n;ãñˆêC þDnèÎð!å´'FW¥û7úŨ‹s®;Û®ÚQȯ»ÐPÓ~Ý¿9DwÅ#·¶êM±—ô6•í½8$6¿+‘ó‹DJ=‹ _Ïië×kB…§Þ6y¦—w{µÖë^3©ö\þRRóm]B^SŸ×mGÉö°+ƒl£m;šNdÒ)3`LªaŠyßu”0k&xO1øÔ܇CÛÒ™¦ªrD×¼ˆS<øxG¬ÖgiÏ"ÖÝ‘ZC¹#yô6wzo§òb©½ÍGô!÷$UE[žqËüóƒ2-4]b‘o³»xâz–øE¦'R„¼¦ñ²|î$æu¯¬’èI’“›ZuEB¶*švoµ)éíQg[M}ƒè Ö»ëör1NùK× a÷U±Š k;DΜ™ðF=âA7žYm]s,«¾8mP‰w›TžÝª… ´ÄÑrw®ZØ¿fÓáÂÑú„ ßK‚¨ºÖ¼™á°ÅÜgÎ6Ïz­¹Rl{7ψ%ì…õÓ¤nùÞUF—ÜãoLÂâý«5#"Š ãyCzé.Üv¬²j¥ÍÏWX&”Us^ê½FO²1ŸÂ²ïig:³*0ΫüÕÒXk|go€µhŸ×GMtz/–¬~’50Q%áÝÆ8O!ÁÚô®þ’žÚ­DÕlž ½'ë˜Á¨4ý Nw®¥Ëó² p¾óè–€èé-=};||îÉ™žñhZy+wɵ¹dÃ;¹[sɇ»í†Ù$VZì nS.øÐ%çHDdÁ7æŽ>Šs›QbZñ†,§³š«¼ž§]O^oU¨¿ÚÚ„=q*øÖUÃô’¦øâ€£7 Êi§_ºê"3~ ‹^¶›UVK÷·Cô5‰zŠu½åÁ»dh†D³œ>~*´»ó.6FWªêñ ¾ÑùOH›¶eÁ©¾n¡›äàƒðüD®Ý%{ÂΗÑû­š:$“ÛÂoqÕýiÎm†1‹6ÞšÜvú©+=à0Òϸ xÙ¶3*„ ¨³±É_×ìÙ¸Ó¿¸Öi‘ÚQƒo©õV¶¿nÝθÞTãxd2š§ßaåµÃ8%+g½ÕBïjз#¸+|úãÕ½;d §}'ÏN\k }høÿŸpîöhÛ½@ÌÉò¦Üùu㵌;ŸZUäP±‹——*•šœ©-z?7GØ´;Ë£î:ür¨Û7ÏçÆæíñm²·˜¨§[ùîõph¾Ç ¬¬ÌÈ‚S 3MOÊ>h}1èY HõE¼}kÇÙ¾Ø!¬:q››9r!-4à¢òY¼‹cJ?ci`pÚÄñaë<Ó:>>ëuMJN~ÔÚʰ“i&™¡¥µ €¯›À—Ÿœë8íØÛ·ÿ–KhkÄ¡7J$±;v úQ›5ºC¶ä­–”ò7»95Lvá Ý ª}\0::ºW[›…N`Û6zº®¡¡ç^H÷4ÕØ‡aÊ:(|¾5÷=‡Ìæ|½)@…ëYY­Ô³>\ýç°OSœ++5UÜØÊªæ^VH~¸·o¸µ4,Ö€;r^é8l²æ¡¾HNëj õOÍÎ Ûj¹t¹“›z«¢gºÁ-E"öqCíKôÛ·oŸÏ~ó†ì9>ž¿µè0þÂSŠf²~fc£qýj§m~”~ƒbá¶EïÍÎæÍç>nhaÁ·c­//ïé÷ÆÊö„ÖÓÁ8Ü¿€éð]&é]c•ü•REA"Ô38*Mm¸ÎËë.·!±d’ФĦañÁ®]»ºªXM G¢##Çê·ððd‚”õª¡AÀ"hI¬ÅKŠ5þ®EÉrS2™|îòå“àÞ†FF‚Ê:th~ââE΋ÑÑ=Rö©«¿¹Y^Y --.ØØØìH:I¿µØü¸Aÿ¥‚³Š[ÏÜI™V¹ õõö–š*r¡ª÷tæ°¿§§'n=exxX|ûöàxÏùéC\¼¼Õ¼||ûmlvìÇ”¿a2 ¨’ —~î¿|Ã~OËÊ|–Ru¿¢ü-«® ˆjKeö‹iK¥q­6é¶•#‹\”a]às©†OGäMè´è»D3Ÿ}Ǿ³öÔæTC—ì][2öñPÞ}âÄ •ÓÕ„éMíâó|†ûX*iº›ÊNŽI½yPÂgiK¡Ô›ÚÉD²ù«ò»dÏ"FdY"ÏwO\Ž=>þÉåÆÊ©k“̓;$ÂÎ?¡x×õøÂ'ßÚp @z_ËÇeù«{Øé¯ojaÿÂ…¿ñvÈF Üo‡/fï/?å ¢Á™íŽ},Ç'ä×’ÏÄ9aÞûÔ>/—÷æ ͹N|¢ì3¸il¿öyõóc},¡Ÿ¯tóôx8Ò±¾ôªFZ^Þëñâ)J{EÚG‰°ùÖ÷ä$èWí@s¢W›¶ uãk0×·½c¹‘1:u¡¬š¥–ìÒ±¨ŠÙýl¨»bï}çkò_µ„Üâdªä(°bü82aÐ’·(•0—ð v.ð=‹Öz•µ¥ ÃTI°T¬Þš°áJØñS­ÛöïãÑaQ<2ù!XÙò‘ÚêútGŠÆUÍŸä;Žú¿ހñ.zŒz¡Û{ðñ¾‹o¹?©WÅíÚ¾`ýò”SêÆ…ê0}L±ÿý¶f­Åä5ÒÌe£½rÇxnIÊ7e”àŸžá5Åö×%⋊öôU_Z˜‡[(™›æÍˈpd±ê ?û»‡q[6ÛÞ>Uºr¼9ºêU|Y(kìá),wþ&Å£úÍ Ì³Ïñ1D·}x/:c{p«ùb4÷KâŸLd­šú;'§ŠJþ€ÓÀÝáÙ·cÛ¶mÌE)´[ŸfŽO+ÿ™›ñþ[ôç–=2}´j÷ÉÐÛà¦"r ­!geg7IY*lx oÄ‚Ø7o¶­#¬F«³‰Ô54cí¾~½i 1­ €d]SÓ0£cÒët Ƶ3“+$CYùWÓ!*^¾z0ßÃ?=ZÆšI{¾¥èÓ«¶n‡&úõrÍ6òoØpÝ«`Õ Å0ýÛJËhƘpÏËËë’[šaí𛲿 ˆ‹Fô^Ðì{!ìâæ¦èë+MHŸ[«^%¡èæ†@ú\Üâ€Î©ôôôùN'''Ó»‹7ån7àÏ¡V5ÔÕ%"µ;g£¥¬u§6…ž“*ž^)//oúÀu»œ¤€ÝÔH§ª¿¿ìvÆU nl"®‹ó>…óãUG\ûÙùùÏF[ùïW‚ÄÂbnÇ}MUÕ5žC-Á€±Ašrì7IËȬp÷Z#i‘´]#j´ýøîz±åôí×~#•‘»L¦}ëêë3­k¶_QHxxJª8ì㻚Utêêê0‹ªŽÛèÁã'g,Ì’¬bpÐAܲ€úé®ã¬/kkWÐMjuÎ<øhe8¡§§g¬ñ€óû¢­éæ³öP^[ªt'%~ŒÂêåî¾W2ºìÑ£äLÓ´TsÉPðŸ¦HYÚû£S%K|DuSª­ZãÒSÁ H ùÝ‹«y‡zV³lÝýDGνŸÍòð=º~ÙR@¶jw…ÄIÃá_…â>XbþÈÊÜœIUUUóŠî®ÏG°.ÞÝÞl€:7=p¥ëÔ¢!LXNŽ?''§ ¤­§§w¬èðÔJ:;;;„ï„Møäàà “ŽŽNÑëãJBµÍqi‰’!'vp®»eXÒ¡SäÔ.͹iÓDz"Ñç—СK­`8@ðŠXçâÛÆVTí«ÒÁÏcñe55¬t碢B&^÷°L¯¢@"ÙÁÔޱl[íè¡‹c)šÚ 8*Ò©pEÚcäîýûkè:‹ùâââ\ÜÝaæcvàrüÃWeº?|X+üÔbßTì'C·7Yß–7ÜözïË &=IÈßߦ¸€M® ƒoO¨«´´YÚà^æþŒj0ÐWg4ß w,LÞØéØY<[q-VY¼,P"#Óã©Î€³gåcâ%£«"""VÜ6lqf ßÒ&¨rrô(Ý«W¯–­µ« þ.TÉpÆ*mmmß´5CÌÛ63«§ TœÞüäùóò :²·s³®î9ܸcèAAÁõôô3Kž©))Çg•³Øæ;¡%e¨J¡lÖËpB)ðÜ9¶ÅVžþa2 nëîà$øÏç\þã½´05àrÛðäá©ác=Xê4åºÞ2;ÿ!%ãšîŽé‚“ûYó[²ŒÜYJ•¸ÄMæçK.|jÍó³³·?ôö ;¯ì‘&¥T?€nÐè ·RRi4ÚóËÛM-Å"·¤í4¸q--9þÈø 3º­»½é>ìîé)$*º†NàÂÓì ¤}£ø`ë}ÖÉÉÉ[·o?ºŒµy¿ŠŽKÒ<¬¥Å ‡ ð(zx`ᇠªgºL¬z^Zïé·«1Ö D°ƒ˜;ØœµæÌ™3` ÂG>jHÔNTŠ™Ú|ʸn‚€SHZ5÷ãòr[‰¹6·Rwi°t@ùËÐ}Û¼½ —/_fÛº5'±sçÚ‘Â,–>½ÃÊÉ»?V£çu"ýzÂN:½I__ÿÜ•+LÎÎÎ…‹³Gx.]ºÄ¢0vøÏ9ewIž¿Jû"MÛ‚ýc"‘*²-dÿ:;¦“œì®{#|LKäò†cjä W²X;k>ŽîÌzmùÎbnpáÞ~로 Œ+„„Î_Ø·ÊQu¯’Òdå[-¥mŠšJJ¨ÇŸUiaÙÛxüø¡}ZŽ¡òÒkkÙãä– èŸJ|p§·ƒÓÅÃC9ç˜Í·ÎVÏØ˜ Àœ@š¿ô¹#J¸¹]Ît£Ÿ>U d”¤!öÒ¾B8Æ*7¯ÛJb»î÷{/šßþ:ùª$ ²ÄþMQöö]»Öƒd£vüÃË`O¶÷<"#«G''<±[àuê©S§2íÄàu ²æ²P~ÿ0€Ålý45™f? ¥œ@ÙUmƒs¼œ«x«õÉYÌó\VðûM°/ÎÚÇ\¾,„Áš ·'úk7¨Ãkv0ëæÈt5eBÜx'^@Eïºöªsrq%&%ÑóàŒÛýî](ȆN'ÂÃËß>½ÐÝÛ ðu­[ûÌxžžž~XUµ ì(K)qq%SSn•ð-Áµ×U…ÅÅ™”••á[Ó|uKdš[Yât £=ª¬\£žÌÑØØèýîª×h«sÉŠÏÙÖÀÀ &&æI>ŸÒlþ=&q¤xŽ¥*ZJUMm-¼n/hôõõíÓÔ„{á\Ç`œffäXðäɾù«¥ó¹s}±ÎŸq Ý^…•¹Ž­!MM¦A!!oY¡§ƒñ HÍe eÓÑí2N…áÕøæZÀÒbSW†a€#õ¦æ¥À—/u³ÚÍÄxÞN·(XIGm—30  ‡Vù¤³Þ½ía/‹ýÃOd> 6‡9S!¬Šà€ -] "šV}+×bïÞ½ÉCgødDÒb ‡„455»†‡Ï¨žÝª–±4Ýs$úÀë×…·gçä â˜Ï¬Èû fïì,e±¤½`Þ)¨¤DîèøÛ€sVM]î´Hî”qï?Zà5²’Ž——7éõ®EËVπř›ÙŽŽÌ׎°Dn{`Öq²µáæ`ðúMw!spòCƒM{>vݺuºúú7ã|×í¹µ˜{|ŸÕسv£+W̹¹¹w33å}}ó'fX7t²¦R·K˜hyžÝà€Éüž=Euž¢ÂOœx»®®ƒÕñrVêÞ‡òžéNv|ÛÂ"äWþ¶=¬1í@(ˆ»8q÷îÝ]ÝÝÇRLzúžÇ‹Øëíí3dœa®êš€™Ðjæ-IãE«™¸n¯«¾ÿÞ4‹¦•<äêæfµQáàÂì$7ÖŽS\B""*Jda~¢^§¿þæYÃPs ¤Œ&Ǻ°ÅÅ©’ž…©NU€^V³ð2òóóÓ=¼®z–›; f›‹‹‹agÏfd·âÛ;!ÀV­fz8=ÖcTÏ_ZV†ü”®÷úž­ÎS³Pu rÌÄAgg+ûfà‰ å`OE8ÀqPòìáOƒ;=<èz¡–Þ¦3ýý6‘H¶§ìï>ïø¼°¢µöp_õf÷Á&v Zº£`¬; }¦ÁÒ] nãö³Uuܪ³¶µZgÍyVÙ=–õw}'í(ÖÖ=ÀRYY_·ðbN~»I³c îÐ¥l‡fŽ "š³mëG«Ñ5ë’Ôêf»ËBí‘Ò“ï5dÂ& ´0mŽ ã6œßìËÆþ”ý^à±+âÂç‚’Éͼí‰b ÕS Ú8ô<4;Pwmj…R­J,Í$%%+F»Ë}ÜO·øιC|O`휀3Ð=+PðŸÂß\±IÒüá«ÛHïуÓ33Ýïâ¢>¤59꿞HY˜›R57矟¿£5f¦nT<ýf=À›7Ìø”^!@—®½WvûèoY{„'àþ׬kâèžÝ$kih”µäØÃ\}›¨¨I~½ pßY?iiA€20ñËòÂë‘0›J5ÍL¬˜J%,|øÐrh¨;ŒßlécœðîݼÎE“\8‡&]ˆ8ŒŠ¾>Giié]÷÷ú°Õäˆø ÝáqÞÜß^€ß*{$,)i]¯Áu__ßÒ—/Ùèà=Õ—±ë[²ee¡oèÄŸ±òŸQnéèìäƒ ½ti3DÏž=;H"­T Ĩ´Š)C¬Q  rÕÏŸ#)OØÞ¾}ûÊ´L ;77#`yùùä±7å6`<ÐW"-Ü-¶ÿÚñ5¬ê&köLñ6fX•õ›íÁ¶ÿeªWˆÇ¥JæõÅâ##á°jrçºò)®ºHß¹OCɯÙ7o^keeßuüíÓ~09܆Z%v´Šº³ÀvG:¯³!Q¡†˜B—/‘îý/Õ3˜y l$ 4ÙpQšü +-5u´Ù:^í ßä5Üqƒ”sp¤³ä,ìâq{xnj_UØ·1סY_"¤²>CZFfÕ-Y#{GƒBc •ÜzßY#`÷‹x¹³ðãY'ÍD`{—ú›³D·îñ Ê(YÜ¢Ât;Ûéå5y`Òª**«ç:—È‹ó3MYÖ:á“âVżK{†A—€ð%\»v­ÂõÎ »´çޝIîìôîa ^uâÄ *¨E[Å4•r ñ¨µÂÂÂy=Ãí.^^ÙNóÓcwsr”X¹råAkk“èÝA­Aº[sÄÏï<³ñr%®€C»xzVT_BÜT/m§å.ÿÒ¤Rz‘(( @çöîEpll,FK’Ëô×Ý&BÿÂQá^Ù­°°·aOcÃö…Äž£üů=…×ùIԊŵ°('ßC)2&M ÈU¬™?²>ærŸ|‚MK “tón‚óùSOhr÷Ÿ^!º¹|†& úz+$­rCN¨í4·Áٵ߾EGgýnP%í~±ºÆÆ°SYЧ¸¨ý/»SSÇc‹Þ£]"‡åCì>™t¸ž»èγAäÈŠõë7 6!™ÏœIÛ’ã°”FwttT-ÜläBžÇ.žc¾r|çå©á¡±Gk*weìeÄ…,ÊdÄ=,45שœ6e>|Xc°§©ÿÄ×ÙŽö'täøN)†ö=¬®æV !Õ%iÜ&Ó¾ï&Âgàî“'nÜr²¼ ³Pã|ÙNŽ Cç.W¯—ÊV¤Pè„„h]}Ïç\¼¬Î¼ñ®ëå:ûÆÓ•Žg‘ÂØ…K»FJ6.-8÷h+¿zS˺ÒÎØ[¦—³€çÐå3oß¶ö¿ª¯ðxŒ{>/*2"ò0áh~OÎë‹ß ‹  ÓSV¥ö~§=ü•H ‹/"´gO<=PFàÔâæá!—YÜh‚+W®>Øp‡ÿåý”’J\O÷>\L!6Lq…GlpðZð훉÷3ý%ë{‘ú_……ÝÂ’ÇÙX.²ÊX¾¿ õœyTÑ·óôÖ".YYžs11 à*; ‰'êK[Öqs”&uM4l! 4ÞggG®šî--ƒú^´‡§¦òÓ4d¾à%,fmÿ–uTèÊgµö;Ǧ–ç{øƒOÖIm•÷Ä-ÝÖvµ˜Bž§= GÇÆð`H¬ÜÜ;Þ<Þ]}©çØPk€B‰?¿Ë¡ºÍšáGWLF_j¶r ;»µ}ÕúMþ§V¬’íú”Ò9óã„£ÏSŒ¹Ló\¸¯¿KÐØtX3¾˜ªtz˜¬ñøÚå€ì«ln†Mn´Ý+K×Ðp¥Nîôœsy8ÏT6ß,Z³Ch-ö~´¥«‚á+M‡æñØÒ‹ý¢»³.e%†°Ì´+¾be¥Áäw/²×n~ξýyÛ5y‹±Ù 6vöP¹=AE‡kz®zÍB ½²m՟„štL‚é5¼Py¿µò±øÃ¼Cäò“Â`Zæ5´:œt.—¾MaaØfçß2à&¥/{©Ìð¾‘[ºrgèå>V¤OÊ1Å·e[rsߌ?Sž èvF;! «äsàôô C’èdéú!¶Í›†…mÎóù(ÛÖ ·µç¹…º…”!}^÷B~ºÌ!7?*iœ:úˆUÎ\%Ã’_3 ûɾ-O¹/xI8Ïm¹pìØÊŽŽ=‡úª?Ç«#‡8üfÅ{†>M<Ž)LéJ=š¤¶Ñù>?ê-ƒ¸éÝ5Î…c›ýçÇNæ* _"§ƒ™» R¡ã±d Õ7Óc>ºbC]禮9‚ëzyLEAÀ¶qïŒîÃJ”h}«ZqFΪÍó/žYš+É^¬(*ÞªcÊŽF/¢Q(aÏc;K?ÖÈ`|N?¯ùÐUÆ:ÕóÚjéáË„öQÏßE÷F?¡¹õ^óç‡*RËsì÷74bo&Õ‘s<‹î96qáêÕÐÁÁBõŒöB~ðÅ!—Xfü}–¦ûÎ"8‡˜°éi8bs}ò´{è“aíBáÒdÆÁ­o Þpˆ¶•¹ÎÎÁNí- Íg3tw¼L; “íìÜ¡ ':}Ûà_£ÒdôåjÅÏOÍ|\*?¶jÓ ºýû‰£“íG i2œ/[ Öpžl¹0ÕÁžÄWQâ=7äO8ìÉ~ÄÏJy߯þÎ¥ ÒïØJ@"«Ùƒç?{Å©tŸZìDqÍÆc¤2cAÁîîT2…r4Ý‚?`Ê«‹/¥/\*~pxŠ=ßËêt]Ýe9_EEÿ…IŦ¦Ý #ô´êêGz.è°t·:×ô$G·@coØû›?6«Si/ÚN,Í¿ÛDWZ&Jjºëdv2êrØâ”ÏÒ;¹’7¥ÁÙêKúQ/v×%»çìÊ<øè.-2oÅÃgw¶ûN~ _uü ° "_Ú›FA–´»´çÞ¼» <fܪv1-.HnÊ0 ¼æzjêüÙ±Ó›[]fÝïáoˆ\{ý´àÚ5nèá5º{ˆÑQQÝoŸRšØÚ'޽?Z{ýð+éžöäžË„-úªp>º¬)Ç^Z_nºI|šKE¥÷æ=¶• Œš—îmŽ–ú¸SnV3£@Ë8}÷ÉÈ]%Oñ+»{wŒû,m­p}ñ•++w/Í qnŠ6ömojb[»–ÿPÒ‰3»vî,K·ƒšï­Ù*%·ãåKº¨¨>‚éHIó‰û­ÛÐKKÏÜc.|x…¸T19€S3Ïsû¦æXÉÆfl¾Gåç£UˆXfôXއ÷c¹p ªÑ.yY`Z¯bÚÔ'p>R<¯½ äÍÄÌ|Ba”ʈ>Hm¸·öz=óu•¢ {÷JÒ 54”³æX•^ ½9wyÖ:­ÒGMm§SGá«Îð'U»ìÞô﫟¸×úv¼×ÝÛ;¨±é¦=HPoÞè;e+±äÆeÛ5ìa46Ù9Ýb“ TÝA§Ž•Ñ’~ôÐÆçs7rröôFG/ŽÄçëW Ú5Ñ5[¡öi"«õíqÖă6Ó¯£/‚ü«¢‚@¡‚B+?†…Åkj fdänrØ€§‹‰á†­Ãef †0T<–Ø ãùøÍ‹«¼;8ïd©kT¹¼Qâà’l«§Ð3¨-ðÑfå×~Øœe²bÞ#rè-%x§Álik¨¸ÄóÞ§ÍÄñíƒ~Ã%YUJ’Þe½FdÈäÕ’VÅÁî_OÕ|øpï €™ÁlÎÖ¤Â$ãy%øêÕí}Õc/É€°Üñˆ½Ù ðtËÉ›ò'Oi L«P(»&$¬Ø½;ÿaëÜö¼9κEfÙÑ5»ë÷é›èê½r…7¼Á*€ª‰‘’-tl|{R*¤J.—èìa00xî§ç;;aÛVìwš´? vâáP«ÏÒÜÓÊ´>€njnfKœ/©7°X!W¢Ý_[¦Ò*xáòàààh‹}†‘ñžÙø"àu‡fÆ{oœJeßÈyñàóËnÞ‹3¸þ×|f¹µ;&Å8×iÀ«[`¸ö®»wïŽNLƒá™­{ÓCC³É6õ7˜Í-,°Æ%™™HuuuŒqIºþŽÓ)¯¶¨¨#P÷33±ëÖן‹KÁ¹$j4t[#¢!_kë»ñ×VõlÞ|Çnfõù‘`í ÒŒcSSÓ5{“¡Ý–­ñ“½UÑöE¤[™/^Z UžièŸcÃÞh/ð*«¬¼Yáá;¼=¢:/(â,$´™üù׫Z»ŒSæä`õõõéºNÜtttª/º30æ;/Àn΢=þ“²™Ù–š—ê®I»'ðiimpl|ëÿªùm‘C3êqyy +tG}>öÙ…fîææú'å͹)¿ŸD håËt S3³R Gný­[;¼}|l…4#·d{9U–¼™›)kžÉ8TY-õšŒOÂï?Äo¯ã'›¨ ’ªª°˜Øºh)«ˆó É“ªg·‡†z':T{b°ø–˜µ;ÊËËáõ»î®.x!ž!áZW†¨å»wï„wì`ôôô¼{ÿ~eêþ¬¤Iàªgx:µÞÁÁá.µŠ‹î¨þmz]k½§ oÞ ç† › |éÌ·º0Ôz¿ìéÓµ8~&³¥…rÕåÍãµ…ÓoN!Ðèãà:>izº:þÝ222æ%þ|T*|'õ2ÇÞÄÔÔ´«|“Õãb¿9»Ô¬þmÜD¥=yxxªc«||rt$îèÌ™6 oèîpéz¸P·ÒŠŠÕ+V¬ˆ<3ÓòIÙñBCMjú=:—·OØ §:»¸¹?~|• ã|‹º2^ÃKKWÒh´{NªÊ–––Œ,,QQëׯ¯½c´‹w··îl!—„Ù6‹GsssÂrrVv=c=•ÝoßÅÄĘÕÄVRrÆ=¸OÎÆÆF¡;öqrrîºùܱÑ1ñ2×ç#­6Aq ÉÑQbåªU Ò7¤7‰ùÓ@Pó›óÌ‘ ¬”;¾†µñ”ç+ZK¶m"µ* ¶ðHËšššMYÖ5\ ð¼¹dǾAD“•_65“Ïã*þCî˜HUwl²k nƒT¨H.+™œèâéÙØ4÷Þn¼Q4?ªÐˆšÜ³"GÙª¥öŠ-|mùãÇðÔîß¿ŸŽNe¡ÏÇlOüæ÷¢~ÄŠ‰d>CtóöàÊêê8Ô“9œœœx¨xS~*‡ë=»Qe nde*«ŸíšMOV§æ{Ûs;á¥Ï³·¥+pNmMAµ»‰_¾6éPRú¼ä©¡ùÝBh›BØI©ù™wñyGfî復Uɤ®-)KÏ"w™ù†Iþ+> pkL ÞCwíÖŪˆ~Ñϸu“ @ƒ-ºò»vírjɱM<$U›lkkkÅl&ö¸·Й\;{–_î Èö{.§d”HÆ·Ù°%\«sVtðΖH<»žßôœ3]P¨Në¶çêÛæþÍÃÜÿcÝÒb K`Ø[AIÉ×UÒ”÷ïo·-{¸÷XÑáUcãU/´8÷gmxºËYH?6ËðŠªœ½T57ÐxŸcc£Dm—5÷–Æ8i&&ÎþötjÚ‰òœõž½¡ª¿v¡gìéÍõ×O$Úƒ&·,C˜|V¨¨äÜd´‡iëü}‘Ó·|†Môµm®£?¾Ú#83“”ã¡¢²ztÔ{+ü!øÉeÁ§zfttŒÝð^€MõÞ¹¯w½MW_ßlh²Nÿø=›Mïc°–ÉO<éÊÝþ”ér5“·özv¬° CgÀŽa¶™¯}:œyÄÛ Ð'[ä½¾ã@qOnéI%äMg¤؈ò¼„¡µ¯ßœXmþ¤ôà@Jq¤ãj6·ÞÇRЋÎc ža+øá›Ùž•vîH¨(ß¾«®J)HÊËãV-Nr¹¼Q[S9IBÙ&$,œÃòBÚë ÝˬwŽª‰ðˤCCí1F®d1!#p€g)CwãÊ3¬/3{V9†&d‘!;^ù†½z™b"5ØQt •tŽ)œOÆXxrüÙ_Lï¾Ð¯|*bB’““IÏ.îd¾£¸©%a|;HBN ÀJiŽ4óø­¬¬ì“gÏÎ7ª*+?ªªÒø²Öÿ2höñM[ <ß.Àç좙ADvwÇ€è23N‰-ëì´ú¼œïíímó… \ÖŸÆ„?½±qÓ¦žv¯Îà´4 sss¥ÕÛÓ®aá=š’² Äu6Ð`àJÛ…OC­ÆÒ$}d²Á¤n`ff^æ¾z•ophÞ<¢ãÃææÍt­­C^g¼ÞÏEw†—04+7...{mlv$^¿¾‚Îk¸íXp0Cuu5¥ýÌ'sÒ§¾l $Л”krZ'…ž½áikëïÇS,dÿÐ ŠÅÙÑ=>ºbÕã‘’%II˾ŸwF‰ïJ‹•ö¸óäùóy–‚¸ÞâÔ]\ÚÞn@Å©·o)ÝÃÃðŽ7qG€P2, àä’îééé•Ö×0 >Ž’8ðŒ”Ú Ëed´;..Žü:ÝBÆG>Ü»~£([ìÕÔ[±H!YYK³b€Æs’¼ºKlgßH4¸©]—σwb Ú!!‘–}5+Ë-Çw—Ü#ÿ.11ûÆTvõd}3ƒûk¯—ž¢,÷¸ñ5ÒgÃÓ}~:²–©›ùøø4œ·,Ÿ|ðàA)Èf&ÆÆÆ·!æ>¤åY½Q! $ñ±6·šµ À`0ˆ Î4äéÑî{ΕÑVþ;ééÞDšXêmN¹ã @¦Ch>&²°ùÖ«'}ÆL3Ç6<jÒ(Ið©ÎÕ±l°àíۀꪷÞ>€Ìpƒ¨¶’·7!×±uµLÁøþgy‰+no¾ß3t¿3~æteÏacjê7H.‰s4ØŽâïïÏÈÄo¿†w?:wÚQAÊŒ¸x1î«^àÕùÆ9bŽS]VEþ[¬apôvûùˆYCÓëq¥ÙÅKŸ¸þ$OÒ=î{«ÊÂ< ˆÄ ì`v1Éw½½'>ÜK²·ßåà訬«{.»½) ?û´´Ò²A.N– ¾³œÓ“ÒMNÞ´ó3ê1½‘¯5X-´q«ÎûÛÃïÜ£zß©½ ¸ Ý>uõÒs‚ŠINk‚V¯xÎÖ±ì-ÈlœšÖÛÀ_±÷U™L†÷-Pštó&ÔQècVe ‚Œ={vP ËB(]±H˜ˆæä`aãM{=aq4dþOv{d¶íc`^hÕxN_ ¶~á êºÚ5·[Ò»~Ë–—`Ëb=ö$üìB&ˆ bO °,AÁÔLR\fð ñt½M’fÙû|o+)‘ÿøq…aVDdµ¨öxK9#†7οLPÔ/ÚX@0ÔÊòD|ô°h@Ün£[nD9Ã1ìJF†T1ÕïE"›níëëãÞí ëúX#§ p¼ú]S§g~æ£÷HÑTÒÜÜ úÈìû›ýE2–ÓÀôþcßó²lÛz»#5çα¢×3ñ¾ÞÆÜ>ì¬Ü¢©Y@ÿKAÀ=¥LóÝw.ÎÔ4n^z_sln¤jÏ÷«Âí ÷«‰(®}9ô\K‡Ÿ„å倛,MWÊ=$O‡¼¡Ã(x†_Nò¢z2[âìÅ[gΜ!ø!$%¥s12òÄ•+¼¶åî‰v—²³1‚J3îéÉ‚¯9©æ.ÆòBúU7´b¯éîÿ~HÉ(mkãöù ÿs±±§FŠçÒëV…Ô×Õtv–rD|H—”œ¬fòÁ"ß=âÙVÀ`Ö®]ëý©Ùéúö‰z֘џ¸3ÚW¥Õª®ÊxU<Å'SA§ûð¼i*/õØŠz#å6%ß7vêùùùÁ»þ;KøAœío{eX ¼wŸšZDîÓ/*2JÅ&I&šw2„7&×Õ×Ã+4c Ü`Í╪»±°›®Þ½{·ËÒ¢Ÿøþ{ôÎE“ÆÉ=•g+AP‹¸|ùä.“ôƒMwI¦9vFᓚ—1kÜwRÌ…FGÄÆ€ÌjgÍ6|èÌ£Áƻ٦6‘$OøÝs$Tahvÿࣕ"1A'^Þ“!íÞtã.ãW¦5³“ì+ºsè(Ü î›–Ù–¨|jô~ɳßÜ'åÎb¿Ú´xqÓ»{©W@|M è¹¼ó…£BÒÊw¸„®6%¥m¤ïŸ¶}ÿ+ªÎ“NÉ•‡gWøëíwÎ65™N€0S;@ÑrM«à¹Ó“4„+ÙFîn:ÏßARSÚ¦ú=ÈXÒ0IÌ$[î±ýÿã&å¿?ÿç‡þüà‘_ÿÙù_à*æ¿ûÿWü‘84 )…ŠÁãI"  Ñh<CEáþ»CþÿÁýÿÎd’ƒ›…JûRAëp·ÿA~_ÿ Gþ×ÿÿWüìTÒQ4ܯ«,O´€®‘‚¦š¢€„”” ZQJJÉPIÀtŸ¡–¦R!`èJrr³… b‘¤¤”µ…¾­•è…þ\&ÑP_ʾnüõW ÷oZJRÜ)B²ëvîÐÛÑÁÉmÏŸÜI$¿´þ|-•D9RÝIðµÔC¶ž{„¿Ô°”ø\×d¹Úå—£_Ë@6$W7ªû#C ‚ÔŸÝÄTÂH^BÑÙÑ…änKvøö>jÊ{ˆ¿·ùRõk•Ï/U¿^§ô¥¼ã×ºŽŸ[¸Ûº;Pew/Ï |9wTÀáKÝ)¿_°S@^WMZ@õ‹óí–úr¸Z¨“ý×”î$²›$äæ&$àJu€Ëbú8PÝl¨Tw!w €¯ã†/€%øR‚õÛoìHž¤/Ÿ~-Tiwȃêê#i÷¹®ë—o~¬!ÅÇÉúµÆÞw­¿‘׉ä ýGEv¥ºÙúRAä¯ÂPHî¤_oýS-áÒžÛv,×Ý) ×uðÙŸ–­.·»Sæó5^¶Ng¯’Î$ÊŽ/#Ü÷¹l;øþÏU»\bô‡T+ õ¹œèúZ]t¹ªë—ZÏ_j 89» |9ªÿKq[p‘¸€­;\Ørpvû\+Uàkׂ¬ûÙ\I`ˆ°»~.%,Qà‚í“õ!„Ðç»(”¯ÿêÙíþE¸Öñç€PðyàÒXœ‹·ÌgÂá.\\í€Ñ}®-´|ù×J8Pi BKuüÒJà7Ѿ¶ƒÝWè§=¾Ó×bÉpñä?ÜЮ,$‹’ÄJÁ4¯¿tü¥+ü‹;ÜçËð_Ë•]—K-­ø kŸêDøRGù›Ò»ðßÖ©øc Y®§ûM…^Wg/äozáx±\«ÖÃá›Oá:_¿ø\Wö·Ú·ß¹ý<`Y-’­Óè’¬©_‡ùÇêºßÝÃ\çö‡{èSàü~·¹É Ø#Üî÷RüåFŸyŠ‡ë¿»Ûò !WWøèßïþ¹^Èî ýó[})ÐûíÌþQå¨?¨õ“:ÿsI¾ŒQ´ú•Ñ}Åp¸ëo©åFˆþFøgÒÈ;8üˆ,ƒQøÐö?êh¹6çÏÜÅ€?ÜŘäj ;ãOݯ¸ ?`´ü37¡‚ðñ‡›(ƒ`OÿÙ1Q=¦ú³9»þ–ó;úÿ=@®Î¿f=˜?Xú'­GøsP²¢- Bûí|md½ÜÈú'Ù,7²ù~½‰ËòM\~DeßÔfù©ÕÍ–B•ŠüM‰¶®ËB`ùÛß?ú~$`責ôï?_®ïö»ò¿½ÄÍÇ ú­ãÏÿým–ÿ꾟y7[w2Éõ·L-áèì+ááFu•p£:€ô)íäìD•øÚëŸ N†äDYзŠú[äõ¯¸k¹ ýއa¦Mò4£ß!ú/ö.*.*ºSÆïÐkyTà®Ë úúñ²!ü®Æ/¡{ -èoêÙ“œ ˜5À·ùÝ¢QHÐ$>®LDEÞà·¢†ë¤~¿ ÕAhÙO¿Òöϵ3ÐouL! ФHx2IÁ1,ŠB&"ÑD<‹Â É~ÛN‚û_÷Å*¿XäßKm½,µõ÷RÃ5õõuô@bxŽ=ÜÿPþK#á©T®•MAbhx„§¢!$šFÆÿ(ø×æ’6ßÊÿV òJVºòúòZʆÊú¿"KDàPp¡M O!â¨8 …„¤‘x$™LøI(úòV FûÿFšïA!p8¸6’€Ä¢P .ÏCÆ#È( – ‘ÑÐï‚ü  ?2Gÿ¢ ˆ È$’FÃɉ„Å‘ŸËCàÈäŸB[QYó'»G# ŠJ¤bÈD, —0!Ë@aˆ"Ìî'º×Ñ×7Ò5TV²R’7”ÿY-PQ$…B£08*&áQ‘WUF ID‹¡¤¦¯¬h¨£¿ßJÙTÍÀÐà'! 0$ .™ Â.Õ‡% °L Šø5A´uà¢FÚJ?+ ‹ÆÀ¥3!I#£¨$ ƒÃ`i4"Š@úqY>Qý%}`$2ðI æh„€AÑMÁ Ix†ö“2üª*0x‰DQð Äàp°(H‘Š##É(,÷3b˜ÕTÓR3QTVVRVú•(†‚H4G Ñ ÚçøŠÇ`Q4<OÁàÐíg£Ø>yÍ_‘‹G"@PG‘°’ –&ŠŒ"àÉé'¥PÓù%!h‘ˆDûÅ’h( ø‰úÓBX©i«þŠ$Š@£àº †âH2ˆ¤"M‚‹íQqÐÏK¢©£¨ñ+’àð Z@4¼Ð —Ј4‹‚ˆh ‘h¤ŸŸ+}eù_2T AÁ@ aÈ Ä4$–H¦’‰4’Š€~av ”õÕä5­ t•Íuˆ$`.4– þ—CBCd$‰@BÉH4¼Dö éêêèùç‹l¿$¼R‚G"IÀ‚D šJF¢¨h<\·O„ÄÿD*#…_ OÃ!pˆT*À‘¨x<Ç"’IòD2ÒÉYù— .\K%’±‡Ââ© 7!A˜A qh„ÃcA+EMy5­_‰ÄãhI4KAàÉxÄd*M%Ð0¨_GYþs,þ¥èCÁ¡(<ŠˆB¬¢@pF“9ÀÐ4<„ÀÿšL*jÚ¿äe4 @2*ÂcÑD•27àK,\ äLÂÏKc¢¯ök¶2`9àòTD$GA¶ÂPÐQüt0ÔTSЗ×ßÿKSD&ÑÈx†@"ÄIA‘ 8$’@D„„GÃÅjN-%eÍ_5C@d •€¤ÂÅ@!, $°4’ËDCÿ8¨ÑÖ±ÒRÖÒù5 )x "“•ЈÀ©ñ(šŒÃƒ‰I@ÿ¤N€,ºòŠÊ?KD(š@ÀÅ~ˆ ’ázÒD@TÊ#Q~F†¿‡Þ_Q‰ŒC` ªÀå‹i(Ž@ AX  ðl"ég=GÇÀJE^MÓHÿgU‚Ç’É0úˆ¢  " ABidAYü'¨¡®¼á¾Ïz‘W0ÐÑ42üYIPd€åÌ%RP$<àŒT@Õž‚L¤Ë—äǽük‚ùT< °(,‰B€@˜~‹±…øÙ d¤­¡­c¢mÛÉ/ÅW,¸ Ž€ô ‰Á’•„BP°„OΚ:ªVòš?„Yœ­¿‰ªD  žˆ†«¢€­ Qà_’@…w|'hûg½ëü¼Å‚Ž"’)ðÐd  <ˆ]h så<¬}+-yS+#+Meíz&÷;+ü\A®›NPx€þAЂ˛“@}¹þØý>“³Y~&góý3¹}ʦJFZºV 0ElßÀ~þòóøÛsEA£ÒD"h2šH€í`s ú“Y„¾Sã²$Š:ZºšÊ†Ê Ajÿ¼ (,`õ4ÀT 8æaÐÈ”@Ÿ(@h©( ù'雕éÏK ‚Ø ‰Gc < ,‰ÀïiÿY öÿ´á(xƒ] H@. 8A%ý„ðX™¨)îûi) ‘@ƒˆX2B`sÆ!$\_ƒý )´Ô””4Þ¨(І£€¼G¦¢1ƒÇO§†DÁ£BeÃ_Ô…„!P("ŽÑ@@\>’ 6õïäøA'wYvr—ï\WMÑ$n+C+ eeÝ¿Áçg·o€ƒÐ(ø); (/ØYC€Ý ù ”øÚô_ô¨«¦m¥hhðSq‘BF‘¨~ðÒ‘à½À–JCcÐxâ߯ÅoÍ–W_¾¬œýþù7ë5¿o©ø\£[€æììþ‡Ýß.{¹Üm~[ö|þ÷—[ÚRàý0NT*…J7q€WÑŸÿ=°®ýü¿?ÿÛËÐðuËêQëëŒ9ÅÕ•˜?q ­Û±Î.Õ$ür ·LÔ­[;ñ}¦ã;?mÑ8í~ž{cêñ@Læ®@Îã'N2œc)»2Šö°AkvϤ•›hû4»Ñú®ºuÝßÇF¿B ülÿØ`àE~IjŽgcgPÐä Û'(²þðܱüUuœÅÅÅ£““F^ÜI”¨¨¨Ñ±1=/n%3­ÇlJ3§7¿vM ©µ5E†SÿüãÇðQÇùÝ”ŒÞT¡×+1€/z:—ïç— l_»n]éxoUßêˆFèùJvvö)Ç@œä{{Aëû„„„‚(FDz²Ü.Ý7Ê”òPÓÔ|ü¡!%%;

"éЄx\^n„ÅéÃrª£œÚ¡º‰¤²ÈÃÍmmæ©V%[¡ŠÓÇBC×DIYyû–2óQPP°¿þ¦Nä›MÚkX·Â/§’lm÷';rDØnõÏ×È-™· ^ì‹ïµô¬Š’€KûÂG¯¾¹ïÁÞ˜n±+`±%Ǿ¿£èðçûܾ}ÇgÔ} Û7 dÞ©V[E¿bÅ n9ÿÝpÅFAŽô­¹ŽŸÏ&?±Aô P@¹¤|tÀ<¾nr൰¨¨êâü·wÏASøØÞ›:ñQrqW¯†kÅâHÃØáš¹8Ç– +WxOóËm¥C3nÛ¶m‡9]ºeÑÉL¨>~‡F£ÅÝDœÚóèö©©RÛ½Ng¦;·o[SÑáûóâøà®UÑRЫ[zû´´è®Èl…_F566Nð¼L8”¸;÷¼¤â¾mƒm6\W ãe7’Š{óî]¨QŠ1|6¹žžÞôÌ»øCÓ£$0qëohÁe|ü—¦È3³³o FŠŸ=Ë*$,\åDIE… ¤® X<.·8}]7PI©!ôéʈ“Þ>> `tðy…>á—IÑÖ/·=¸›Ì@«ŽÑs(ÚŸEÛh&% °w±-Ií‚n§#|þ­„„ÖâôÌÇwݽ½ ðÉQUUëßÕÄK!%•«.ÇÆ^÷j³@ðØ‘ëÜyƶþÆŠ':\¾“¶w¾¸mpá5lŽqlÈ€ÏoN·*a¡ƒÏqê(<¼~¹é.ɦ³Ø/¸udâ}}̞øêçÏIÖÖ¡ÎÅ3«ÁXSG=Ãn} ´¡#NrÎçÌ¿éjH1¡£[¿~ýLƒstnÇ©MRo§žWWÓÑ EÜz)-eU,žÛ8`Din½ï -ÌNÞÍÉ?z™w¢P©òB×üfÇ{96l€_¤ThM7Jᢗß[ä; ŸNî7÷iãŸ[a?V8ÔÒÜld'£dè±;ko’CFYeEE"ГM]ÒÚ7==½gåüf³«'5µ´z§N‰¬E+ Îåáç·²)—äáàóJ~È¿wºïÄ$P•`]œ ÙÙ\µ†>ãØ±c£SS•/®Êrœ8Ö°Ä&|—ûƒ$!pç±ÁfôÌÞéaMM†~«PâÒ= Ì\‡GDuØ6lXÅÏÏŸ÷àÁ£çÏ™yp{ÍÍyáãáÊ3äǦ»+tâv?* eÍtj—ÎËÏz±¸0õT„‡= ×½Å9µ™ÚMLL ¢7Ò¯\Æ.|Llj2éŽ|ŒUvúÚKY àŠ,À3»Æz*áÁ‡Ó0å÷Ÿ^¿Å ×àƒqQ ×. ˆö̹ /öŸ}ûöHߘvÀ$!ŽO)iw!“|’b( |ÐÓ¹¸¸3+V­†KÒÍÎÆÀM3oÁÀçš»L ·+ <((€ÆÞ”ÇÔkG’JƒPSØCo”à3ýÝúªWœëìÙ›kYâ¿€°{µ®®Ó××—,{åÊé  z¸º0©ì…­{|ŸH{¢ƒXœC˜V>8è;šVý íhq¨§âÑÇtßÕ„—öø`ØRQkLÝ\P1„ŽNv¶_Y´çJB Žg2Ÿ¸å{‚^{B›žŽMc²,ôN¨ÛyáiÓ®S¡;*ª÷°µõ@‡ý£ææÍ`¶ÅZ´„c/É$UlJ ;0Nxê\]Q–ÅGNðÉxú() A÷ö†‹h]îÔ}ý¬l黸€3À–á³¾ÇßíÙ³§›]ï©i¸ìtxx¦Có=ýx«»å±*ŠJ†²Àjÿ˜{¾Iƒ\ްµ ç*¯Î±ukú0[˜ûÊ ‰°“¿~½ „R¯b73:ÙômWÓ š´'Ü2W»àÁ®WîB¯š¸å–ò©™¦b?TËPê°nؾ‡èUAGú§ŸþÛø/¹˜íÜ,ìÿ†fû¶1^Ûç1?ïTÖ¹¤PéÔæMo? bóêVú<ÒícÈô§Öî¾­ì¶²V«ü‰i¨%g—‡Ü£Gò–dsš¥Š§’—À¬ŠD0æ¸ó>°DËD!gÕ˜z³X¹†Ž~õjòìÄû°Ó§•@ƒ«4T„ó@ÞMO•,IXélãx:e0ꩦ$Ä·Ûg%@û’õûLv¨Àóô|À6¡´·U+U…$6òð¬wsû¨pvóæÍòlô111ðy• ¯rJÉæ©ŸîhÜV%ŽÃ#SlosI˜ HKo ØËF¿MT..2žµ"ïrê”F¤ßݹmìÀßêôázoÊO±oØp|tÔÅÛÛ.%rN=9E]×W}é8HIðyÿþþþ½-}醼Xv[a`fvÍ÷¨wïÝ+]Ãä(€l=ðq$`þïz z­ìèèîÏ—øçéaÕ(¯ì®„e3¯ç=ÙK]Ç›Ã~ËŽ“ªù÷1é¶¹¯¯Änÿyõv›Þv8¢b}?‰3ˆêt/ï& ÍÍÕµÙÔ…"×|ÆYŠ—:ø¥,“ÈÏ8U«/õ®f>-ÆYùø„ ;Û;®¨5‰@òÇ%‹9|sŸüV›˜Ì­K[Og’Qq°÷Ù…<ßIAsóÁ®¡=ÜžžÏrœh4…Äîw^<ï^w?Õlj„¦¤ì*{y]Õ¾‘Èf$´e49=¶+¬|fmiŽ=kí-= &î— mk5]\8?Æo`d 8 ÂòèäkE’mó­Ò±+{³Æ¹ÇS²(½¦´ÑY:„߬l[á ·¼¼†îMí^»'å4¢YÉŒÄD^º€³[&÷¦v{yY¨ÔAš1ëÂlN†K+‡^$O?yb=:U .ñ‘•ï©ð¨- ðìl[±zuïH$ïæ¦]ÆÓŠâ,ǯ_g.^ðä–vßÑ)5–èêºÍÅsqÅU™û£$6ìÊa¦Û§©©ÜY¼ AU··´|?ÄH°$cZ4Ë BF8©,ÿ`w©¼MóìÒV1³wÂXemÖ°²®aâmbc"­ýÙ‡ô|žrmu–ž%V?×BÜ»&/¿Å„ Owô¦Î…Lÿ"¯ôÄ&i{M¬|Œg5ž>[³ß¡•+¬«+Ù¦£™›ãöNùÈRÿ‹x«Ó¹Ž±Æ¶îUíÃèy_O9Í׺aý¦üë¶õ³‘-–ææB\¡‚;v¬Ô¿}4Ý"­ë}óæãkJNqIhÞá”bßX L‡} Ëü´Änïsaàã®áEÉÝ{ø^¶ïo4?룮¾ç\|Ô¢@2Qí¬iö¾ë*ã9Ó@ÞÚû#êÕñ#!û³VÚØ»H¥óòâ•ádp5ù¢Ù±¶¶Ý¼²G6Ú¿ŽS¶³‘yÌže=¥Zâ!VôüâE&ó|N†LÓ»íe±øý©nú’Àt”†:JNÄÄlº{×&Hþ¸ô£úúu«Ý÷¤ž5¤èÈ‹mD¸Ý@ßÐöÐo™^ï—»©»[‡ómZ¶cG1ßzÖ³“M…3ÂLüF;[éÇ×ofÝ:¿2"2òÔÓ s«ª&LRÏeí8¡t2Ïÿ¨f„Eûjþ©  Š©N¡ÄD‘é5‰Ï•¡/ÔbóŸZ úZ*nÂÝkW^+ÜÊr2(H‰TãHpér›é”·me8¼žUX@€)ZRÂÈ×b¯¯/Îv'},Žá!€:h¡§^g®ôÉÝ­R¦8¶l ŽX{?ƒxÂå hrñj%i€N4ÁL ¼æWg©‘r´¿V#ÛŽºÎÄäpò6FÔ³Ý×ö99m57_dulÁ”Çí1¸˜ïH·OûÅÑë=ê`ЗfjBÕ;eé¶mO†÷6o`ÚpA:Y¶ù‚Ȥñ‡[gtâ +ÊOEŒK¯‘g{™¬áµìœàHiÛ¥äƒ÷öbCÅåG?¿ :ÒÕœÅiºÿRiùv9ùþæz3Û9}kè=‡vßöWäuÏy%ûn¾X)U2¬|êL×Ä{†þ¦Z…ístGM2êîú>WWVUµ±§¢hŸ_ï Ÿè+WŽuuÍK‡fYb±%/À¼®HOÿÔÿêéyл3ȃíÆyà²áïj:9gõ½§Ú£ÔÛãÅ| ;Æß(‹ñò™ü`(zd¬\ rH•þô–†K—ŒNÅ›Ü.}q2 ä–fòüx••M{þZ.I^zà‘GŽY[k¸LÚ1½¸ºþ‚h„Ä\È… ¼aãpÂ<Õ•À`D"â˜øZ†Z°³²F e ân}¼ãÃOmÚ%ç­ï£¬´í`×Üé‘ÕƒowˆµGk: îrè8²5”e'–ƒ¯ayÁ(¿&²‰‰yuì:|Mþêó µ$ÞÏ9íˆ0j½”%°­æ³ÞC+Õ¯&e^ð‰­,Ô¹4Ý"þa{Ñ…gSk誢ùzÍ•]Fëì®îDo>räEiç œîOœx_¯Ý;ÉÜ)ÁÚ]#·@ðžÃf ;mݺ•ÅhkUà>  ‡ŒòÿyËbÍ ¢ŒüþMZÉØžªˆRY×('qcž¬ çy]Þ]†¾C‡‹3‹Þ4êo}½z 1<%wá…ypa‚\¡ ªgMs«WÝ,4Û |þ|;ˆ°LÖ/‚„$$$Gg‡a/0ÔI67sÿž©QRt^ÓÞÃ'í»0S{©FªÀˆÛyKöܸX»q×30 Z­k¬:/‰¥Uê¾mÉ …«¤•?ª*Ï‘…IÝH.K.£»/ä× hõôÑÎZµÜ}qÌ}-èèÆ Ø öìáiÏ/Z…ÇfÚüFWbíJÝ¢=¼œjÚ/®áO}˜wh¤;%cwŠß¶î¬÷ø[dZŽá®® ˜Ê)(ötuwÓ9zTõÊØa ø0A&£"Qy8†˜UbF>Ç?°ì†)$Ä „­Š’øx42Ò.?"J·þ¶)oÈ.“­{­¬t,ßu½”öÜôÝ^³Ð§+mÏ®-}_Ÿð¤úH¬èO%‹Æ|»ÕcÒEwÃ2< —$Z HÉ\ÝÁ¡–¬¦üÉ•…µ÷¨PNÅÊB¾n §ÃŽÒ”¹g¬|Óª†ÙÞùYéñ¬ª{÷$ÍóÎVWóºÚ¬51‘÷ ×rË)W1\¡Éµ¯…vcs Úãƒä½¬íãÍ«BY†ôßï_›¢pèŒJ1Ôéh\ÜÖ3|±×?Éy”ѵtо•·ÀÓ/±ÑtÝù"YYëˆóçOŒõ& ›¿¶*ÒãØþ'»#`›Ž€Ç`kÉíwD4¹nÍù\8ϯ€ÀÒ&í­ô¤¦»’6uI³è÷.ìá}&Ä£<6Ø,uÐÚd!‡cû÷K³¯=[§6HÒÀ§-x/‰ôürý>šG•üSµ1¯³^=îðìcEø@bÀˆF‹ 2ל,‰ç*@økÞ¾½'þÙ˜ 㺓È=ÙÔ]VpgÁ$^dè‹]ï7—þ¸ëËôâû–›çÞ×Ou÷=¯d\§¿ðP72""âxÑáã™>úߟøœ¦4efö=KqQ5œ¿5ÁXbAºe¾¾ ñºÙ‹»ìRŽŠ‰«Èc­ôò::AÅ~ŽÝÝÝ×èE[uà)G>>™ºÏøvÿI•ðwd®(pl0™wÝ‘Y[+q³·éÃ.ê‘QQá~s wAtv ¨‡ïF›­µoY(ŠŽ>é;)ƼI² žax¢Ó _È Ÿãˆ<ötåN}}é•+K54Ù0¶·Ìµ@‚˜8ïAÚ£g‘×þG¤ß=ñ¾ ì„`†ÛèÄ “¨èðNÕ-Àh{O…û»½ë°\rhzÉ-)ÙrA€®Î×D‡•ÌÍÏ·ˆÚÝa’gCؽâ¢ÐúJ;â*¸¨Q¯R¦Æ·¥[ú1šè}˜µ1F>SL ¤Uà.Ãæ¦ Ò¡óÃÕ|9ÃuìF<"ë±û­¼mÿzë3ëgõ7èW¼|²ô/Vþ€B˜§hØ_¸FÏÄ›ÇÕ ÇÁï7Qœ_¦w21:'J’OßwGáÈŽ•«„߸eÇóçÏ·ÂØ»1-Åë“v&—Ýå?0”VäÀç/^ðaîeøØfç„"92KtkB£šò=òÎ÷V퉶J"xßnQí7äÚÿhènôíSûÏ蟋)µq¿®‘ °ðš€yÁ·¼P¼ó=>ûo­¥¬ t`š |-ž#!O—]ª¸à rUÔúK¬Úû®@#ã Ùmæ;éžÔ\DÞÌ¡£ã,€÷˜šÆlÍ}ºEn¿!µ·¯¯{ ã움¥¹ G9ÔâæLu؇wLé[¹4ÈÊ®Àx¬J* Ác@Ä4Ï圱¦q2L²š³¦¾Âò}ÛJìÿ ËÍ:‡²CÞ»¦¶ÎsÿøÇ‚àÇ }î6›²í_k¶ 7õ=—éåŒ Œº8k¯ Ô†ul‘½²Ûg“þíì—=³³³çÔ“¹‘‰»Š< šZùJ%‡g¥Á%’’k}|êÈ5<<¡êâ’]X\öR—¿±QëÐü4ïÕøQ5œsøo¤„0̪Ã~Xû éP» J‚¾A¹CðЬß&¡Æ×é~×]ØÎ:¬•´x¦Ãö"®(tbÂá+§¸ªÁFILŒ{T­Xè¤E<× %€¸Oq1—>>Qdß¶³bþM…Á“çÏw}ºÈìðð¹þÆZéfÑ€×éÓŸZ!:Ý7ûCpŽ—Þû=B“Ì=VÆz“}Œ ¶üµQÇŽÉJ{Ü ÊÑ|uÛ@CKÏ8#)Éž>À,ÞcǦD^âMs¸Z‚2;×YAE^C¶Lmò=]ËÚÚØDØyæ¶pœ _½zõô¬½ŽæÕ†6RSÍéר>ªÁØ©¬¢Â’ïqx ÈÅãSÍY \Îu5¤`öm+_ß àæØ£5އú_ºc•nú×ßXº ªxŠR€cÚúSå=ª¢û¬¸ÆÁƒô²Kó¢ku“!t㞆…mÔÏŠ>¾z¦kq!ˆ ݘº¹ª'ÝA“ëYÏýÎt¨»´ìIÕ†·Î–û‚^\=Ðýö©O0GPýMňK38y€¬R ”Õ’}>ЬW M¯, •Ò˜ï5!ŒÖï«óhÏ—PU(m}£ +LI(ÕJŽEXÅÝ¢4¼ë.ÛÄ-ç¿æMÏ…S~ìv/¶=3lìXj:ä‘SyVÎß\Ø7âb̶ÎæB~xŽÀ¡Yn¡¼Û8vF JHð„„øÚ´d zÍÒ³°´X覒5¹8Ÿ>è*Ñ>8ÒÁF·ÃS]wÛÊÙIû³°¥*í(ú(jrÈk$ÉÀ¢óÙùÈÈS ݾù4$º}‘Cl0P>é˜@ ÝgMÜõvîÜ|7kn] ƒ@ È9[0ˆŠÅ…øëÑÆX2Ì’oÐH§ã{ÝÖË{+¸¤¶&¡7ØÌI·l2!ãë'&”¸‰÷x3ø­®wh$ï4{wð൳ý.¼ý¤z`ß>LÅéf1«š‡{YvìÆWÇËéÚ‹6 EÖ'Ÿ\ûâ΂%âFÓñØFp p*„£™Ó–Wj¢)«ÎG‹–ƒïÙ¹¹õìd")Å5€Rd”>Áh¸¸pVœy¾”czóê@–--⵬+/ìаŒãL1¾Z%ñ®×ÊÝÉé“´L›‡Ï‰rRÌn“ѯë7>ŠÎÏu–rG~RÓÔ 6=Âj]Ó¡n”Ûíª5žJîn¼{|ùˆÄà€&ÀU_fXvhÁ$¨øGE?ºO³Í$0¡­·îõôL/•Ú{Ûp/àE'óçãÛ{††N­ß$¤>¿‘rðœÜËsƒ¯¡ "“µÅEDiwDèÕ«NgoêÚØð*%ÎW™,Ì6“[sÕn¸ßçÉPÿúuY´•ï5ÇÖ¦ÙýŒ@žt«€¤á»¯$ñxVÀaÇ÷ߛϪÁGˆý¤ßƒ3ñò2^«äWAÕñ#ÆíÝv©7´ Ò )$©tn¼ê1ù·ç £’¶¶åmÇͼ¼ ¢7š¸¡|'í®‡<Ášd¢×ëßæÌ°,Ò7ÙmG%×1‚\ét•[Hï©Q«ò %¡¶ÂÇKkwîÜùäéS=ã[[º+ù—ö=ß±T¦K/Ï&Àq^VÀá´^¦[˜ˆ}ºd–ƒ ‹³Kϰ›=À¡Þ™MÇÎÊ ?p»jä{§þÕ+Ô–™ávïêKnôOŸ^b;õÎÆð~íìä@Ù“}Ørg¸À––Äñ„ÒÉ  ÎÇ"ÝO/¼öž'¬=Ë_RZš3}CWH0âíÔåé)òÜ{òSÔÉ «{‰ÃŠŠñ»öòWõœ`|8?ã?nœõ•ž™±¸l–c—@*#O—K)Âë~$©aÓ¥}Ú/*ÎÊu”¥£{@Uî±´0¨7¬´WÒ²ð– b«cvÀÒžÝq,U³w³SYןš/1ËQæ°uv>+¢eˆîºxƒÿþ&©ŠR01E‡Ü:bÕÒô"ÃÊúÍã6§ùì×@Ðsbws¶­ASómÚ³ÑÑQ—m""ÆÞE…»WHYѺš³ÜwŽ ±®©®ŠvZïzKŠ€þn\?ü”ꮼ9Íqã9¹§ûÏn5†·m 9 ´½ó²Ub¿råÊIYóyTPªzœ$ÉÄü±@Ї»?ÁÉB˜{óæ‡Ož°y|x’ ‚Z`±ÿ"*"‚´ÅHã: ¼~»ï]Ž )°,ÔÚЮ½°ð¦ú•¹WÕ %aaa·Ú0BûÏYHÝÜAá-JÍ;ß’ÝÚÛÎU”|w{ç9ß’µ–­õDxx¹hüý7nGŠÄœC ÑŠîîÙú÷Sn]5lÓ᪮~&—•xÿþýuµ|m뛊{MŒy²$ª2lÜÂÔdB•ˆ#Ó.tGŠ.’ÊOn„‹b´ä¤´ð"RM"E×oÜüÚpÇHì´’—¡§.o®óLdC…CÕø®–(™çnÃmļ½géž¾NùpþüùƒŽŽ½C6u{ÝÔÕ¸_&klŒ°¬±‘ë¦öÕ•t>Ö¹ƒ—•_6ÈP¬üÅU0ß|DhI‚ÿ|Þë Þ$ø<úà.镚*~‘¶´¸p÷Þ=… "Zw­k¶RçØ%§â$nõÛÞ9¾†5Q+o«£UÇ;}ú4ÇëUî~ÇÆï#Ïuzn’4?¹QAAá¤EÑ­ÉÁѱ˜×`{Á&:¸tBðúMð¶%âÐYlA'P‹×Ù§¡±!שÝì³qšÙöÓ¼Dý°ððÃE»Üµb°öÆ·çRítxéäyX¿6èý¤!C“²,Üsùòº€”[µ†þðáÃòb‘bæ:lô¤‘Ž¢ÒÅ…¹Þ©œ±Éºìš‘@Ç\×^uÒã+45O»ô>ÛøèÙ3õ¦{TªÆìüŽü«ç‡7ù¥ß©, œšbOÞ¶>**ª´ïylðéÓLà¦ënß¾=þnÝ¢ÛPëýM ^›Ú´sŽœ.§9:J´6ñ_–®¡Ñ&Gr‰(JÁÒ2®tµDø >‡;6õ‰÷n%J†Z°€¤6n¯HdJyÖcìYÒ5fš-AÐß•+¼3n8®üL÷½ŽA 5ªßLRRcàhîÐÉŽèÌÌLvŽ·SRæyMMMókîä&‹ˆÃ—Å@|Gá—Åyy Ñ®G¥wŒRž}VÇÛ'¥¯3~SGâÛ–-b%@‚×^ÞÛîçÏÙ®­6uJÖ¤²Ô»wíbÛŠ+™™•ÓÆºCùß<:¾f»äÔôä>dæxAÒ"ÿbžÃ‘#»[rw•t¦[È<.”åÍ V^ÜqòÎå½7óo'j:UrŒŒÌ¶mÛ.槦çHé.â¢l;‹'MQ‡ ›â8\nÒœËÂáÝ=ŒÍ9¹µ±©ðHAà ¡¤ðßìÔÈY0ZýЙ†ò\ñ¡˜†×¯+ÃØ…]&úõ`G‚Æ H —’oÞ]¾%2àŽ{±åFƒ ·k&–܈ƒ{¨ê³ó·˜ŒrôscbbÂÀD ËÊn…k“¨òû¾qM;p?ÊJñƒÃSN'ªrmj_†z¹»c̲wø™A¾×ˆ§ò—Zillœ,™b?´þbI8•³(BÃ×ÍÌÌŒK:diqnÕ•{G}Ùt4ßíÍðuÏQrî%ÉÜäDÈs¢¿vzaªÞ“=ñ¾~ °5jºW_õf¦-˜}Û3Ç'ŸY;9Q=»õéÈzzÎ;Ct§zÓŸá ՃࢋÅ~s£ó3n»yß¿§£¦¶‚Þ oª‡+â€"Œ@°¡iw'6æêAX¿àÝí=JǺu÷ÑèèèÝ9öѨÒFØ,á^Ožì !WœÞC8$tôrmñÞ™Ö¼{"ÚW𳬅¥¥· ‘Èòük =Wß鈢CJéÅ- ¹Á§Œ¬¬¡¡¡k3¬X¯õeƒÁ5ÖÖ²ÞÖé7uu¾È¼Ñ·ò,å]RÙɡЌèqxs­¥¥e؉RLPS¡ÿB~Û@ô'3ÃÃ<Æ]—•okÇËJdÛ¿Ö¾eQÛÕÕ¥Û¿e6  ²tûÔ]Ûz‘¿¹O W¥=‚†Û Ö n·´ª©˜V'±oÔ´iL½ÔÕÛ»„j®é»§ªëÓ}`{ìu}öò†Ï£êjÍÑñqŽ{÷î”0‰›ëM8ñº®ªµ"P÷“GÛù¸ªgÏ8€f¤b.]Z›››[ r(¼Å6ò¥-¸Ù†ÖýzŒ“˜Qht°ÏǾµ mÚ‚sØqd¢Vµ4ï,Vxu¼îñeåÊT›À3÷ö)Øa&%*ªÊMp9˜égÓ3lß©ÜJn{ E{o‡[_SgÓ½¬, óÜ~?jWoò-šüDJ/ÅÀÐîƒaÉNΤºIFE~Z7?,Ym8ÛºATûá£Gòþ>¢(È’’¯{ÞÝ91”* 'ݵ{àâÌ©’y@–J Gæj9>¬qîÕ]üÔ¦Î!Ä âI <ËH$ûØØØè§OQgÏ«&iˆ OSܞÆ¡ŠÒað›G>>ǃüq,<œLÉj4 òå”ûK«€…`0г‹;±oRYä´õ´’„&?4”HÜÀ·ºN[[{£Øeá;;âþví-SgÆæ¦:yyù¾S-·]Íq6(44Åÿ²vÃÐúWÕ=¹;r³Æo¹²m_>~üxK}Ô 0¸Ãg… êÉú…¾“wÌë0 ‹ÅމoßÎ@$Åšssu©so¿´•aů¢¢"ÖìilÌ¥o``toèrX|ç3½c ŒCÓÝþ²âòó°P‰+ mhx‡gÅöo¦5òbƒeÏ\œȤ· s«]ùÿÇÊ>¿þþßòk¬ß—ü?øþ ÿþ]ý,ÿß÷ÿþ[ÿãÿÁúðñö*¶TŠ›€„À7Ç“ÿ·Èëü·Èëü¿Vä¯Úÿ'êƒüŸXä¸îÉ2ºû‹»É=ÿŠ„ü¹`ÿ¶LÈŒògK~ü/)eAZ–…ôU)ÈËÈ?ÑZnýD#Êr#ÊO4¢.7¢þD£ÿ³jzüK#ÛåF¶?Ñè7Csø‰FŽË¢‘Ór#§Ÿhä¼ÜÈù'ýM1“?oäºÜÈõ'¹-7rû‰FîËÜ¢‘Çr#ÿ Ê‹×òM¼þ[ååÿä*/’þ×Õy!-ÜFúþà6ÙÙÃý/M[.ìøªü!;§òbðdŠ€¤Ñ(T•DÄA"  ¡ …d¿oøÝ‰m$¢º¹ýPß€í¦æDsvuü\ j¹ô™‚Ç¡±@ HF ±8ˆ€À\´ß…ø×;|/ƒ;`éî¹ÿD_ŠR|¹ÖÍÈ@aù,@<ƒ£âIx,H…HhC@ Qhƒ0d¨ÿµé/œÁG^žJò÷SI&>dëúŸ)EBáÐMÄà)d$L1D"Rñ("€A€aý¸Bɶîn?¥J*€EËǨ‰džLEÑð4š8G"P°…€Á# Ñæ—Ö¿ PhY¡Ð÷ …H0Wt÷±'û¸SÿCCÅàX,’ŠBà‰4DC ÈD`ÿD<žH ‘ÐÚëHCï_óY2OÀ=Bx2ŠLAÉ †€E‘ð82Ÿÿ7>ûµs+×Ïþ’( ¡Àû!< K$ !„Å!¡Tý÷B8;ÑlÕM OÄû¢qh  á0 |>.ÐD¦ýCnJY¶*Ê÷V?ïù·²k:[«,×&‰(OÁ¤!04KBà M vDîëõß)‰Bý’R€þþ3ËE‡¨*™LÁ O&"(`šÈG¤!PTÌ[.Ø Dý\¼ðߊôåvòd[Ùm©¿Ù.¢)\&%bH ¾b " ̧`((™¾k÷ ³F]ž5ê÷³Fuuuvý!“ÓuµõÜYÑÙ•º|5 ÜX9‚ˆ†mœˆÂQ ¢à •„Fc3¹oš~§:ª·í/fi<È„ rb0Š×C"I( ’FÁ`Èd$îo<þÕö×eähŸ¹üInëðÙvä=(¶Î¿“CÑ, ¸+MÁ) #à±2DÁÐ0xÂïÙè?@ü'º„ÿ^>°› £  )ø w4 I¶†¡RÎ ¡AÚAýKðß?Ý¡î—ð¹’ð(L8–Œ@ ø‰&ÐÐh* MÅ@äéókóîö¯}AîŒÃPqhžJÄâPψ ‰Ä÷møá••³ËrùÐ_ðo‰¡"hD™Q±( @Ö8…6ý[ÿ†%pv P] cX‹º$÷ßKCáhh0½$ŠˆÀâ‰X$ÈMd$þÀ q˜å~—›ýi·ÿÙÐA,§` $DÁBH2ˆõH¢ÀµT*E&þíÐðu„Ÿbþg¡‹¡ q<K¢aQdC$"©XˆB âpÍŸŸ0 Ñ?›<ƒ¨I  ‘h$ O""@Ú.~AÅâÑ?!‘Ûßæ`D…DÆcà(I‹G  -ŠüÒ€hû €0"MÂ"ñX¸"> ƒºÀ’ ¸?ÿq5Mkª»Õa­?O=d»Txš@BB$ ‰ÀPH(%ÿ‘Ôó×u¾,ÛüTêù&ЀáѨ`¶†Q$‡h C B ¤þ'ò ‚°4ÀZÓ†NÁC ïQ`2IÁ¢"âßæŸS›í²Úl¿W›-å ‘V‘0@U•!QHH`øÊŸ0ñ¶Žò˜ *™ˆúÀdEC!±€MQHx2þ¯@°­Õåy$,’„'RQGt‹Ä`A¦ ¨Ë>÷NsþEȈ@’€›S°X  ˆ(4\ªƒFÄ‘ˆd€[¡ýd´urÿåÁSðh GBP©d K4">`ŸÈŽxýÐàÝ©®€êRQ2 §à ,‘Š¡$H‘D b(*„CRþ!žæ°ìß;‚ÀíÿY¾ RÈ' ’r¨€Ý4Ày Hõ'à•Õóo„ùŽ5R  Æ‘†‚@Á…ˆ8<‡ âhd\èÏÆÁæ …8’?å 0d°@wð(>!ñ?`°_¼!ü àÇxP*À $ f2G¥â@N†Ëý~úÚ³ báEùÒÿÁZŽDS„ ñd¢a1 ð7Ð>„GüÀZÃg)Üm~Ö¡0(,H(AC`q82¸?–†D"H ? êçê_¦È¬dëf¯dëJ…Ü—aš‚ "ÈT, 5ƒÃ§Øc1€Z©Äüëd}{“_Ár³ýÍR " " C%¢‘ E ‘X*ˆ4"ýgÃÍ¿×4ôCaw9Å ©8"Ä)ƒÄ€‰Ø‹BÆ Åà‘TÌï¬ê‡÷›Û‘Hœ’!*Àç’Â8`‰B #h¿?Öý^|ª«£­›Û߆™“>p4  &\Î8> ‡'`hÀû ( O Qÿ6}Àb8üŒq’G{€[ h ‰€§â‘dˆHd„J¡ ~Y‹h"GD¡‹# ÐT4àuXÀ½ÉHxž(dú/µ>úu—GC8< K `?W­V‚&a((¸‚éß¹¼ø¯­;¡pX"ƒESÐd ŠBáK‡H>Hm½<,þ È‹DÁèd*†DÂS±`hh „Æb¨ ñw™ÈÅÙÍÝêoŸPýåòƒÂÁ™†$0D‹,ð?¤#‰‚ù[\éâJýõÞ $,\hð,LÉ$@¹0K†þ¡õ×åTäú}*r¥ºQ]=©ä/ O% ÆÐHðj"Ð`+¡Ih8Âü­ê–»GýR÷Hø ð"„Acq$4 Q   xEAüE÷?o  fÑ ’ x<Ž?`ƒ3LöQpá­¿…ÞËÃDÿÒ0áÂ8È€.b±($$%à%(4‘„À¨¸l˜€zSi4žF!ä@¦€ù^H Qàbã‘ô£ÃÄüÒ0€É€ &Ð: " h Ø"È€f`8 ê&L ¢¥¢( ƒ%aûÆSÑ?:Lì¯ KER!‡ôE‚È…2; H- ‘ÿœÑ"É v“X"Š ü~Œ$öF¡PA¡ýýC†åaâ~i˜À;h€‘h44‰†E‰0R \Z˜€@‘þ±aâà½\¼g `6#£¨x2H%H"‘„ýÑaâi˜*\*›F€i`. ÆICR€ ‘QþçfŒ M€h4,¼U ‰à E¤ nÉð#,ê“ðk³‰ÄÒ@fHŠ€‡(€x@v¤bÈ8< qhøñÜ?4L ˜2G"ƒ°‰ŒÄ ` DÀ7høbÓ„Ûr6tû>º}M¡!'0®ïñÒräÄd„àá &G#‰`80K"þ XúnvÜþ³•+šŠÃÁk D"„—™ŒG£ÑTÑÈŸ‡¿î$ü1B¿lÀ €ƒ“)H,¢ˆHE(Ä ñX28þ¯€ðr_V.T'Ên_ümop2`ƒwã Ç‚x ÜFp {ÁëŠÑçß?ñûëMh4•„EC$ † @™ BÓ0€‡…ÿùMxÄ`PÂÒðH€=€Ð(4ˆ¤RÐÿ‹yDšŒGàù@DT `Üd€zˆd*0é,æÁšv¡R)¿Îsˆ8,†€ó "EyŸJ€@ @&BFþ ãþAžó¹.ÀG”B!(v@8ˆçx,ƒyòo÷1¸¹“Ü=~}·’ˆ ¡(ÈÒD2EÅPhàO*B!QF#þyÃB˜GáÇ^(„¢ D!ï¡HÄÿ„a!T2†ï‡BAD††3 à3 …&“á};¿¼[èÏç”ð9,ZL¢¡PðÒ=oýCÒŒC’ˆdÔßÏ©³Ë¶˜D!€¡!àþ±x4  [,šáph†„ÿ±ÇsnŽŽ·ºô—ùXƒÁã)D†bDF“dG¡xì?B*Ý—Ó¨û÷i~íàH‚Ë–)>vÞ³!#†! Èœ€ƒ?Hüo nòžàU¿%àY…Â#Ðð ôŠCãð€9âß&#A"¡"þ*‹¸»ÚZ[S]­þ£Í€yl‚,Q xo#‚ŒEÑ0T* uˆ¿Úðû‚þ,âà-’¨4BÅ pK*ÜÄU~E–O`ù=UÁå³<¾¼?ü‡—‘¿ô*$ûíI _®Y~9ù›ã”–†ÏTúö0/ l­¿»ë×ó|¾¶rq² 9¸ÿö‰Ôg;^>pdùMço• þZ>×îJvÝþ¯:ÿí·–#½| …ÁFÒÎíŸ?ÿ ‰Â¢ðßÿ†G ÿ=ÿíÅ'ÉUàë|[ý6ßV_ç[`ϺŸãġ¸À¿Aù­€…ø_ÜQ>4´ûkëûŠÑÐTˆL¡‘(,ØA "Dä0_"ÜÃÉÃÁá_:Rrµõ¤º|~Æõ#ýPÈ$âóvÂÖ…'#I8,GÆ!(pZ8ðõPЇª®•’¾š±²¾•¡¼¡‘•®¾Ž’‘¢¡šŽö?Ñ€å@³©‰%À»@E°4àßúÏe2T60TÓVýGÂáh'R 400Æ@8$•@ÀB$0CàÊHÙTWY_MKYÛP^óŸ‘ ÀW€™‘8’@Å!h4 %„Æ©hGû!©””uõ•å ••þ™(< 挈Æb0H2°U2 oz¡’á'zøßdú,’Å¿. at–·FþˆDhx[ÜtC!ã°À^ €f$„ Éÿb¹*jšÊV:`*äa{µÒÖÑVþ'ú!A" ¦AX<‘‘Àl~ƒ€6ñ¯lä;q””5• ÿ((&ÿ*ÓÐðkD$4™ o]ÇD"„Åý˜@À:ŒÕ”Mþ‰¥K#ààe' ‰Š‡·aÆR!ú1‰ôåÿi`¾CBâð€ø‘ÑH<‘ $ABx$‘ŒÂQIâI#o¤¤¦óÈCC£€j0XÀŠ ê£Qx GhŸ€ÄQ íÇäQ6USùg& ‚ðx,p`$Â" ðš!¸Ž‚ áALºû[Oþü²êOù2IÁ#$ ð 4A¦à©$|úžŒ@")hè_}YGS „²Ÿ÷æ¿ë‰„ƒà}Å4@YD0 ºÉü¢‚HØ¿6ŽïúâÏVòššÿˆXT‰‚Ä¡ÉXDÄ©$2|ú LE$Bü£bé~6œD( ‹Qø0ž€&¢ñd KÄ£!€ŸPhx‰GSHH  ¬ÈL…–гh4ºÚ;÷ïÒÿ·¼=È•€ì!, ¼@AcÐ$< +"OýçV°rúkÏÙ žlõ;Å‚ ÂtTžHN…¤ã¨ óÂÃsd‰´¿wüÕÑÝá·z&àÁJ2ŽJ… ²$$Š@<$Ñè4ÁÓb~‡ rƒ¨¿Å è8’ÄÒˆ$C‚—ÐQX2Ž ¯€èw¸Áû„ü/ Œ$,ŽJÁ}[ìá耵ð$4HkÑîwxÁÛY¿í>ú%SÑX8é5’â& Þí¢þSxõßá…Bãht" ‡Ç‘) {Ç¡àð0Tš‚ú]^4—ßá‡$ž›fŸï0Э 27¯Zn²So§êŽ'tNÎÎ÷²¿Þr‚Æî¢ø¸ÿý醆dLâ–mWWéTÍf¡@¶]ïšûd—+3 ]º˜FÓWĸ¶š‚¯ªbíìàE´G¡Ì2ñáC`Fƶgd¶•.ÎÎÇ""Vƒ±qva÷ß}øPÅKh¼ííš­"Ä2þ²~âM ˲ÕôâÉ3Çè­Z N|ŒzþéZ‰.|Ë…4Õ¦ìVÎ+Ìow}‚³ÂábÂÛ6÷õ÷çzŒ@\]¿Nè-ÎN#C©bÎVkº°3àÒA¶mL¦v©*(Ë»Ió’'Ž;6ÔYŒA´(T®#À½ Sîħ«¯¯é çà£d¯Cë®™ `Z§¼wï:^‚Cœd¹çÿó[6 ;ÜcÙ&Öl5ÕïÝxûÚáÆ‘›Ið‘b5¯ž_™ªÚUêI­;!Ä¥p;ÿi0E91e¬³8À¹¿>n°í&´úf^ÞÖ2e‘äÊ`øZ‘×»‹/?]»&i×]Æíäâror´#699*VDm9b3ßz^^Ó¾ÛÆà¡Šû÷Y‚ƒƒO˺oçW<ÂŒP×Ñ >žßÍÝ}5Ÿ£†óê e///õG ‡N1C‹—[7²ä:v+åä6…'±éËo?´s»¼……ŵýyŒÊ©l#Ïrj{+CôŠ] ø¸¼ŽBG¦˜ÚÊ)SûÁׯà ro¸j¢x™Ì«WW‚›ñÙu­Ÿ›ùȀجp>¹ø^=Pa^¼Ý]ø3jmtªZ ?|TÚ-‹Îø A@@/¾§¾$55õdøÏ·;k£ù"^ôõM~ø j`°ÑãMÛ±æfƒk楜>“oŽ¥¦’3}cGš3÷y½ë[YàØý8E‰Ú~ºbZ˜­X·ê‰ª]k»¼§§góuÓM §I®¢Ë—/ï‹áÆÐá3J_½zu i¦Ž^Þs6Á±4Ë8G3!ŠÃXRR2ÔzWß¾­-J=Ö¼}ûöÆþAA+;»ºœGŸç ÷o·1Ç`0CÃÃÊbïutð‚"U\Ò8…8²§`´£PfÒ+"¢ãñãuzƒn.JRJ å=A[ÁĤղ©Xúàmfp:))uÝä¶jTCylƒ2B6o+(™òÄÂÌÇøD9„¥ƒƒ´·âØBD‡´ÐΉ¶ÆF6ÄÝþwöïßõ×*¾êÒIpP8(eZp÷ùsÓB‡]Ïàb“’Vu;ÔrUÃ÷v±}Mmme}½xw‰¬¬¬edüóMÅÀDÞK9¶^ÛŸ;®\–ŠJ{ÇgJgbáʱӧOß­«cF¡P'»Ëý,†=òµœ”—>MsåæáyeKíöhÊæåâ mÉ2¦N¾i‡OcÜšpüxc½iR4¡ðáüC½COÒ˜™™wìØx”¢ã;;YÑÖVÔ\Vg˜e$udz|çÄôüÜìøÇR(~ef`úË<Þv† Y«îÞMyzyÏÐÓŒu3^\7-ì–UýâŽÏjûB÷#U5µþ#ÏÚn{cO½5.{óæÍ û|UU• ¨(cGýƒBódŽ knØ>“&ÊÊÞ»{¡§§wÒÏoaŽ ë>l@a­®táSnsss½f'¥Ž.Ìyzy{m’6;ñ¹Ü8ç`[™¯…J}÷ù“«Ý‹Ûû/ëµZo/‰ÔÞ~ûåÅmou--•ÇçPvmHÄŽC‡¶wvv^ÈɉÑ8%*„Åb»=€!Tž#¹žˆ]&''WTR’P’ó$M:öâÎiE_Yÿœ´×‘wäÎ%'çú-ŠÁQ꠯ϸæZ=æÓž·Íb¶  à¤V[µ¸´ƒ±±ñçwµN®®*FFœ²oBÅ÷]ÞajZZUÖvƒÌpôó;5ÄÝ+zi7€akŸÅ¯v |ã‰Û„.yÉ×põË2+OðȺ‰±³³o”­~¡´ð9 x ェª6>¾¨b×Á¾¶\*¢L´Ìß4jq~¢æ@B‘ÖÈjoÓ7ñÈÈH§áfñ [{CY&.=¨S "´^W×Ô¼W#ë9vPc—¨ûÄp‹Äø§Ï.ùzz3ÇÙ ‹¶¾„¢Ö\:É…;´ñè§M9ù€/ˆ—ôtrêAʾ¾íýž±|n’7x€´w¶¤sbë¦Ài€Ç€X?Ý»Ö|·(O¨´ÈàóÃA6ef=¤fA ›rèq½›[ÁûÆÈðlñb€ksO¡ 91Ì+v%R® ÝÌ㾕ï-v™=½³ ØC]z®œjµîÍ­Ûk38þ¼I‰[¦þä6¶fÕt͇ºÅ.˜K—_¨xî›YØÒŠWÉ?4úîÓ{od¾¾ùóˆ™ógxVÄŠ]¯r/ÏÎY­XÎxoKfÿ2ÿ«†;¯ÅÅu°ER#º¾Z&,²Á’¬Ç09Ù]Q‘ºõyA¼ç’kèëÓïp_ç7ç¾ÉñÅ‘Àøxq3³ç–/ë&¦‡kÛ'+ _˜Û•Ežz‹²n½V`Ða^Äv\ãÔÚÞš(oëæ:“á¹5Ü7ùâ%FzrÊEë7Ze)O„ÍJ'Yïøj¯ê 2s 9U>3|5HÄ[Uv^‡d9•±sè£ÂT)Ÿß?Öai~ž|Å@ƒ‰iÞE•MÝÑ·MMFçÐ!Î)¹4µ±»íÅkZ³Ýw¦kÊê;ŽõÜ਩iééEí¼<ǸB>$käàô§‡÷Ö)5ÇãìÂ$ŒÏ[>¹ˆ™ž~·ú²öëc¯ŸúìTS›âMM}2þµæÓ{¡Ð­„-ÕÔx±Ö;Î3‹3‚ÒäÞ>̳aÛq§a6ö ûždî£å T®k|úTzßY!¡'§e?2Ÿ<õ4׿©Ó‡×O•/Fy{LO¥í9ˈ+÷[xˆÄdI»^”Ã`˜øù o@8¸xG¨Ÿ&„näÙ¸\PE îéy6þqͱ˜Ç*[¶‰ÝrÐÊÊ´9Ë8Ë,—]¿а xÔ8[¾( ײ}O‡ÜnU =áÓ-thWúÀM/ŠxàÛ˜¼µÀÞ5(ÓÆ=©ƒ[éûwâENd£¤¾"/ë†müwómTN‰Ò¡C"9mm[®ô]vð`ÅPW))AF@?û({XU‘ßš#¾*N“oŽÌŸcä=;ãä4½Œ©àx®óë€ æÌ€ ?ÆËµ½nHbª«__ñ¢lå¹äŽ»²Å§?O´Øj¨OOÂÄôNŽ:5œ~›GoWÑÒš¸°{·èÛg-Óý1•¢«ïq·>òäÚ~û7m¨«Úö·"‘Ë#8½ûG;TµÏÒ™…[¤ºs–ååy¿_yÄW ·)½V]ëÁÉ-/*L+o\=wq›êuXB[çW9Âß7ýÎïÝ›vŸzËŒõ"ÏÓè{Úå8k¢O“Þs¹¹ççÚ>³nkk–q5u<Ü×z}3ë9‹lÄ‹SÀy¢:Kp{³§v»º¨݆¯Yø­o¹úšü¶sÞÉ97^«cÿ~åÎ’¸wos74l¾å`¾NZº€ {…ãªáÓSŽ2ë1ÓÞÁ=?/'üØr›=ëæ6–Gì_Î`â®I ]¯žŸ+ì}I hÉJÖKwHê˜FqØwHWžÜ€ô°Ëp©e{’?Âã6ÔÈÆ‹g•06Ý¡Us?~ИŒÛp3—„ë±øøÌÎç*F;zÇ'XjÒµb–!ºJöSïú'éú\?0yTTu ÍU 4z™Õ£ÎÚ° ;C£öÚã[TÔv¯¾~÷娻MÀEù‹ï‹îé*Ýkrç9wt4~ÀÁµ’Ño3‘-ÔgŠ3Íe`¢ÖçM›ùçùÒMóó>Ç ‚÷ûÞv›Ü¸Ë+cQ{½Ór…åÈššŒÒæ‡#ߪ8õ׸Ž:0ÔTÍÂÀx«*F© NËbýE Л–“ñ[«Äl HÖÖþÐû²™1;{T¯¼,Uyòõkïuï_y§ÚìÃ}Дž­¯« ¾>ŠŽèæ.Ÿn¼Vïè—™O5Û:üB„Ô¥?¼ÈD9G|'c”S†àã[öêñÂz ìKÒ3B—.¹™O¬|"(ØÓÊ¡–,n ¦|¦D[_=ðM tò?)¥·¦¸¼[ÞW–ËÆfÿЋ;«à;,ÊÇÒ·ãL8ÃÂ2O+̮ȶð ®?åcùèÜQ—Y§Ä|lÚ-yyr5‹EçRfQÑÛB±¥ òÓˈN=øçùyUá:ÖÏo}NKxÿzÏçÏʽ rŽr,VO\HœWX ȶŠN;·Ö¢›m³ŒjmØÂ¯VŸ ¦SQ¡Ž7vY:Õï>Üùô~oY…úæ9Ž'!!<³ßôESdÓó¢'Ày¯ßxëô©”‡òÞì+Wß^¿ù3°“›´÷dæ6ÅÉí<^8Åpûh²¿¬û¡‹{S8¹d›9»}­R›M˜ÅWn5ö“9xÄ?ÑÍWÇêö¦9m·»îeFß‘O'üßË;O¾QÑ>ݸ2bÓ:ƒ¡g'èqFúú²Ï ̃“0³–ÃrAo³ˆ‘¨s §k=’’â-Ÿ?ó®_ÎÕE GxwØ{%ì?5’_ ©Ømœ¬gã>`"öäÉe)jÄ#ÓŽòG7쎊DÙ™˜²ò=7ÊNs†œæM‹Šùv8ÀY`ǽÿÕÅÙ¦“j6»÷_3é]½÷±ÏôT÷.è9ü½ÖëÙšâÁJVÄ;Ëø¾×aÄc4úD˜ x€]½³{h´åœÒjž•étW£Ëä®Õu)^“}ücö½››rŸ?»òêVmmZŠÁñè‹4-ÚT¯ Z'emM¬ˆ'G¼÷,M}Ä%žrúôc'W¹pµ˜‹7,1ÉŒÐ?Y&¯…¹O©XîhV²1XΓójØnŽ™÷qæ>.¾ïðÝ®;„ÁÜGÚ/8XRBÔ÷ÌáwÞ†8§¿»´qò;!àYer,ÍÊçYó P‘ˆÜÜ~05h-͹W™ùèìè·8ªiRj Tøð‚â*>ÙkwŸçKs)ÞNnš4=óÏÉy˜íÚ#i¡¸¢«”Ð++‰ød%:1µNewͳUìÀ’œ½¯Øa½B³à­·W ç5wdí˜0éS‡eF™oyÿg»­ÆtúZ£lùuëbL<òmÍ_”+Þ.öP,¢=oopêEî#žéëvH<üñP»É.MPô{Yj¿|ÓÉ89)eð6b¹žwœÎÜÌ x¾{fáùîÕC5><Éz³9mÕ* ¤ë+ÐéhnÌaj«¤Ï#öÈ‹ZM ùÏ oÞ´VTR—¿÷ó‰X'p2÷P‹·—÷Ê4ϱW0Ûá–¬jw“ê™Ï¤5Æ9ŠÕ¤ã¾jðdWŠâC›ã+„WkœÛ¦DQ ð&™à‹š D€©‹œ“ãe¯\‘tèôŠXl§±1¯œg´¾u¼¨X ¨oMÌÔÝÙ)ñ©”ë.ÆÂáSÝ2¹N½6ª»E-á€NÈ)¿oqun\ˆÄOuQõ+ï°þ8#‹Ñ‹áßcøöhÝTµˆ×(ÉÅç¾4¥žOœ™KŠömvä<| ÒoÞŽ •!$qhêýÙNÙ‡Väw¯Òл/ÎÓE›œ›“EE½¼»ÚêA†sîœ]~,óö‘™¸àýyÑ@C­NË3½jx¡ŸXo~FS%ØNmà¾ìôHކYˆ¾(Uùúi…Iɇͷò?VòCñ]iI¬2+›úðzÖëý«´K:ïÇ"ñéªÅEŸ¼^²!¬jz0%‘xøÃZ郬»î—pÇ™"¹Ÿ®qÔ•ï`Ò Æ`êÌ*ó­¾¥Ï ëÜÕ?9žÑ;°lÙãÞá’MGæW®s/^›ÑpòdS®sÿ³bW{{^ËM5¬ýÕç Óš'åx@£õõÜöìÉÆ5< ª›·šºù²Î9æ{™ûvªkkïÊЉZ¸1Ϲ2óÖ뉹Þï¡£³|x;.F_ÌB ™Ó¹¡'å ôÓI†ÆazMœ“kߦìVWß¼Î1¤ÛoAo4»ùe¼çñ°“VŸÆcbóò®k.°†Çq¦'“’@R¨.J%யi_$×2÷‘«S¼Ø%ÀQ}j ž¨Î›ûîê»ú€ÕÜ©¬ crú8¼`pÙÃÝYÓp(‚ÃQ> ÷\¼¹RþR<À9ŽÌÎûú?NyºeÃhŠç®O¿@ËZëÂ$—Lz ‘„Û: ýó\yÛÚq†Å³AŒá:T×´åÛÞÒÜ;ùÐàTMcÖ³ÃXJp²œšÖù½{Þë*Íi̳ڗ›éÌÉ“Ç>ŽÌ9é žÁa`G}#7³ÖÝÄ%Öóx V"¿ˆÔhGƒjSapªÐžjÄÚ¯^ž–çÚ_»Pg5F† –M‰x.ÔE…C­ÝZÖÞ¾G"™;uWfj‚ÂÀ%ûÖ¯·õº÷½4„©c/xÕ÷<¬zxö}cQîªgB íß™5ò/^Y_Ïž¿ª[/&¡jZX&ú"bS剤OîtáM›LYyš5Gw[oÐ,ؾÕ= 'õÝJ¬ñÛm¨=w` X¶P¶öYo}K“#ÊþùúKéÀ± mm’®¢HX‡Úœ·Âä,aHGUÄ6.CDó½„Þ÷"¾6^b/ly—.Ó{ŸYŒ¢ŽdqÎß–Ó™Lj×MTĉíæœî©í¦Fñ/Uê8€ìiHš%: 3çæji®%’ÚÅܯ½W44 ÷5‰ÀºXÇ$õ-5ç–™¾–õ° ¼njÞòª,n{<]rϑϛ>¿«Ýó¦Ã“!ò”z´¢Åê‘Öb˪ÐÉͻŔ^¿no»3+[àX\µ¸#jМ‚íRef}üî¡QÀ nVèôÐsw)€ä'¶šòÇ0ÙÛ+‚P©ßáxÕìL®XÓ–N€vz%iFkzQ¶§êªá`ïÈ,3ðÆ÷F;ÖŸÿóçG®™6VçR^r¬ÝjºÿÈü¹à\ªÂøx¯i¨ª0B~hh|=OÉæ™™xÄ‘9#ïW ¾›?¯qXC”êév+óFÀ¦* ã¶ >¯ñûØ)æüüOÓoKe‰ž%¶dÝ6¸ƒ¥:kjJ†FšÕî¤u2}Ó¾müm—‚õná¶q½Ò‚eÒæg¢†[ s(I·CüüAJzNnŠMÆ¢¦²ó6ã̤ÔÑã-Y2– %yùòˆï\QIp¦ÑOÖ‹É}÷?yýÖÁr»ã½>ã½*.e÷mÉí7…ØkÛ¹ßÐìÌÖwØE$”ÜÅ€ù5±¿}?˜µÅ‚]B6U—U®ç5'»^X¯· ÄÖÆ«† ^Þ{ž†Îž@ÛËGé.°Æ+û2Dg>ØKU±ßšioŸ($ú*Æ |‰‘‘(ÑËIx¸9³Þph8üäu,@Dµ«fc““E>%$jiE0ùÎiªk=P{ñF↞¨Ž>ê¹?Üž7u£°{K±¤1»bJHžU™ºÏâݱúc%qtI USÏóIãÒ°ckïÞ/ÛzTèåûüž>}g¦hŽ TpȺ4§·* ¸²®Þúy3kAAÈ-Ç”Glmßëež\;?MÝ\â–Û'HÉÈäæNÝ-P+2%,"Rª{qeÙAå=ššµïúO½Lé’eŒ‰Ò¸ÕÞ®¬}þÈ•æ+–+zÉóƒÿ……ûâØ’Žœ#®¼uK2’;M11fuSë+êÂüª¡Öë©OÞ}Þ¼+Ý íÎi~aaœÓ3¼ã‘…ÔJmÝU£ÀÒz}„üº©‚yíÁãyViÔÚ¢ÏäÎX«i‚A` T…*›y_ú ­åê{(ïUÎ×¹¡‘ŸM^cücÔëgøg&íI™îîy×ϧo7+%7äžîQr ´Ý(ØnΰŸg×V³c;VuÛî¾ÙU:ÅL°b0qþ¬CÿV­G}Øi†jç[Û¼k,¸¾5AŠ—UAaT¸ÖaÑÍ ÝpË&¤Ç›uz—KÃaÒ"›„x÷eðW€|Hs.ëN!0HêÙé x`àÔSzBGgžw¬:«––ȇ‘)…|åµQÍS•ÃFgôx€¼#ÆŽuVVpU~x}e¥£”]©_càqv©«cùå½" 7Tpà(¹\ÂzóSE œë€µ9‘9¯]ßC ?#·0Ï&¤R •Ÿ½ãBÐó|ÛžñÞ°7›n—\Ö•'5TB+*y«â5"̤G{‘ëä4½sglft\œ¶Ûh Ë»w„¬ìr··vAe¾¦ŒsèHÜõGÎ:æÅžubáhH×Ô®}räDœ4·šLcãá‰ÀÚ °¯ªÚr ÅÈǧx/ÇøfY´î|¾òçAžÕœçà1–p…<©ÐÇÏŽG¯0-,¡€ÀÆ­cÏ¡SP__ïõa(¶æ`„EѸ¨°HzéíšÁ÷22¤¤ø¯>­ì,†“‰§óÝekää䘃îÝ |°êØÎCÍC1oÞxÖ5‰o–×^N¯\¾,Û¢:dÌÄvqÆßîÐvcYppphh(Ÿ=ãøvý…û ûŠ—ÃÛBV6EÄÎ.O%}ÞØ’Q=gñ¼ Ž>´a×dÞ}ÑÃ,#!11æ(^¿äfï·Å›Õ.É^‘y)Qˆíïm.ø€uMzŠwøAÓ¦Øô½ï/ÎÇ´ñ½æà›y³~òýàã·>ãkûÎàl‰‘»óu-êžUG¤††kVíUrÝÚ5î°ùa{ µŇ3ƇÓ?æ–|„ŠOÙëè¬}õð,“««ë餤Ю.¾¤¤n–}V4Ú]ðùòåËH ¦2’³å·<ÿç¹9²½ý‘ÍD'ÂúøQí ¸'HZdðåËžÂî£aa«®]¿ÞÛß¿o8s!VDM7ç 77ya~n@öˆãöF÷ùÏÞXÛVÖÝ»wŸÆÛŸ¹äçêâréWh##ãi¬ ;¾²nu[Þ ã›QÓ+îk^ò. ]1Èd‡©2!NÊ\œ½æfpUÔähG¨Ešfüvë–«’å¶Ùl¹piÊAoûs[Õƒ¾gŒ+¦Úái.ð z]ó¾ËÚ;>œûÎàÖüÊKcÔÛnóò£|@«T,--SW\t ÓômÍ]Þ××g²cÇŽŠŒˆ|€qZó¬örrs׃Î5«Öãm§øþ2ËŠå­×M œüüîUVî/tèj뫎h÷ƒ„Û?¼~º_S“¥ ¡,½´`ZéñÔŃÅ.[GžçKø¼ë[jé;óAü–CÅèÑùOV 5:çåëYYY/)âkhcëö'Ë{߬šŽ8éé‹hxô(ZÁg22(0ijjZ@«g¯á¢Ú¶^#ëèèHnߌæååÅÛ?ǦO‘x·í=ç-·kvªÛ¸¡ÁN´ÔSæäˆî~¥£ àŸäSü«W¯ì¦ÞvIâñ Þ^^H õ7oûu˜—z ´´´^ ÖR¨Ôöx ãÓùùù´äÛ# ^H©·t[A6ë}Œ/€;ão{Â3;@Ó$¯¾(Ÿt?;[äØ]ö¦*lÃàЂfn^1»¨ü©Ï øÔõøxŽÕ«WŸ’/s\[zøãÕ—¹éé[W¯Y/¿vÕ*rŽé«pãÊ1P³öööê2±÷Š7ono>h“¼‰ï!Uûƒûáu™1Q¨ê1ü 'åË<ÇÎ_ò»~횉Ý5ZûÇ‘gIñññM³ÈÂ5†Úý5sõ3SÝUî\ŸâTÜ»w|´-7 =#“kÒPvä“ðþ„©±–K<Þ¿zx¤ãE‰{V]•n“O¡ ¡_J|ºï®66c]Œkx6rG\’¡†ûv½R|4{X²-q×;ÇýM÷}¹IÛ·³DñøJ4w•ùú|xÓ¾o‚ÏÈ™¨‰âÌâ³qpX‹hlm•~:錄ÅSàÀí>%f.2¥ ;òè·Ìñrp¬Ä`0õU£¡áá÷: 3×½»ŽM;k*“­"^˜eœ#,)ɺ†{÷„ÊøÄÀág>³“R ’ÇŠ®à(vå<+>¯VQ+‚ÑKø™mã…eüŠGN766 ?“½cª»Ë'JìâÞÕÛ§_\eÈ1Z´Ã~³­ÉqñZâqrí%%%÷€Šefa¹'¾oüõÓmõëEv[Î|x ‚ÞÖƒeGVyzzÂÓw¼ýÒÔb‚ÏžåfãæÞo==•â7¿ÿUAK<¸xð¶×±Ú*¾'çÝÝݫϑ\Á]a{S@h_Ïòû(´ý MM.µ¶¯1U%4"BÅÌl3@ãR{uæe#"xBŸŸ_Uuµ  ¸ñ›O¾(=3Σ§šÂ œšäm¯wËÉdòi4IJ;†ÍÌ̦e14ÓGhE¯Ì.EF²â©5¬t åÞ¡Ökõ¢{Ï7ܼys˃§OŸ&Š ´¦¡«+¢Ñ5áå2¦M7´ñ€6ÝÚºx¿öö<«ý-W µº²‹jÓõB| øùù¯›ihl1©‹w»¶%8n‰IQò{ÊÁQ ä®^pSßC}ù@=^A!çXæoßæ;¢n°NÊ=#¼¾@X¯…–e½=Næ¾ÒÍöå ½¯^OO{UUUY‡Ì%ï…|Fߣ®Î¼â8%C(!üòTêåDúÕ}Wš¬’Ÿoí¨ŽØTy÷.ÂÈÈèFnî±ÔT!N™ƒ î&šï^ÖoŽšÉõUC¬<Á¦iKRÇ“—Š×†Ò¹W uƒgÍ?éÄuón&¹Ž ‰On{»%ðqšŽ.L«÷5y¢…aW.ÓK,›/—·õ’üve›ÝÊ¡3z¥SåûÛÅÄØ§ÆÊÅÄÈ=KeSƲ&·³Gåúx"ä_ÀÛó8ñ±©VêÞÜÊ“*Oßx%…"#¢ä=¡šä|åÚµk’éo¬†S5Ûc.ë6EŠ‹‹ó|ä7hÕ>5ƒ•>æ\¾ã°z{fÊêäöᑑʶӌ1/›ZZ‚ÀëÞsÇŽ©àuÙ7&Ó«¹Ö¡P†±g¶w²ÝäQK­[³Xé嚪ÊZ!õ§J+Ÿ¾çïëÓ/Z›Ñy+"¤jd󉕷•wÈ ähÀ¶?TgÖ㈳ÓPY@¤@÷ʵsQ 9È®ßôÇoBý5îŒ1LŸ?>ãÏäu6Eî»ü¡Gv£2s*M‹åé³g•¡ëGßÕ bO‰ôÉžC§6E²*×'l´iºô ¦ Â)ßl•XîÅòh\R¿|¹ES·}Óæ¼†’{¸EA4Ià‰ð˜“Râ ÀSÃã¸YÆ-­™%ð3ÖŒ3XáêCÍu\ >øÊ{c ºC8^ÔßÊWTÔæZ>PÔnëÙ–µëøoïÒÕÝò,5.\¨“ÇVSý‹£’O.ïaxÓé<¢«¹ ÖÉ«á€YKs¦‚ÓÇá}ÀåV²ôC$ø!þŽïj¬ƒÝqŸåEkÓM ÎIJ]¼/Ö~Rÿ—Å6±ñɲ«™…ìÛ²(%(Î.Ìàܹçw뮜ÑÔÑݱH&ú¤Tl8ÈÞ6ˆºÁ³‡Nœ¸à@‹ß"0|Ñw6¤îgš¦|ßQ¸–4lÃe|•w]ånNkž{Û¥µH/ÐË;¯pö¢·«kúñ ‡‚‹þ˜‹£¯RB¼¦tH6.JGö"`÷´‚\4úŽ£Ø‹Eùgù»Ëaåã“"’Ú· º(3ëÉ!šü©:UåX[é”(}Sˆ…è–^˜øt 4â”b»èÖt±Ï²gO˜4ÌûH¯9¢(àáaÛ;ü|Ù©mžð ‹b~ÐÚbì]y[!W ·æüà²ëïÃ,œu‰0 A‰>UèèkåS­kh¨HUñKóå8Mxœ'ŸºA9TÿIh¬w[àE˜Ru ÞÈ*§2çæÖë&8q Ï%UwÿºÐ0“%{”™{y’ÛO¢ór3c*C¶y~gN;ËòDE”è–K;²ÓwÜU{ðñ†ç˜ÉþÊ­l€¡4ågáÖòa–’’÷Úµ­³ˆ¸ÿ‘]ùÁžMÅÚ‚=i6ûö“ÅíÞºA¹™دCW)¡âÅjjúÊñŽ6<˜£l±kçtP5=ø†Õyâ¥Áõ«¦BW ©ïX<ôlLîÍ În+[Jˆ‹sëçŸ:1>P~̨›yÅ‘ÓI†!ƒX..ƒÓ†@¶‹’À¾:AæÏ~%æ²ÿÈm7‘“ ›ØjzÌ݆ ¾çä×Rû¹„bSŽƒYbÓ&S»NâµÆöë·ÊóʹìEßuŸè{˜G[ûêœhPQàßÂcBÔùß{Égf©ÌPlTn¹*;>q&ÈZ| |+'¸UHT{èø®ÆyÏà—dóJµÔõ/‹ßþún‡,¯wä(©¥A³rô‹ÛÞ>Soù‚ï#±+f>æù§X`çç市ƒ´Ì”DT˜AS™›KiŸ¡ݸ±#0H\Ü„£vðý“r?¿¡×¯Ó¼Äê¥ý¼›vB?Š µ|›Î¹YÖø}éšÌA)±ñ/W}ô’çk¾:Ç[÷(ÚPÇéÐKáÜÜ^ʲ*‡¾‘Ý`­*¼ÞÌÌ ž7­"ÄÁS +ÿ¬ÎýDá¯+Y¾ŸÕl¸¯úá4m===.¥£GŠŸëõ×ÙV¯Ab±ªû~32”aBïf 288X?çl||ÍÓË©:ɲH$òî r%›€€Ìþ£“oö³òË›¬''hž¯}vÕ0 ^4 &âÕ£d‰D¯UBg¢N^Ö€Sø.þDö´z|¾úÔ¶½ºÅ.ö¬ÆÍÏ zš#|O2^>F$çqŠReS“þ„×Ã3¸èx6e±v±mÛ˜à‰ÜÚÚÚ– ‹HQN”7ÆÐž©)ñÓË{TèôË´Oß§í'1htÏÛ·k÷íÛw:)‰\É Œ/nËzðýöѹ’*÷ew»»f»,©TAÂëL–-[†ðPºRr¶Ÿ<  vஓ%‘f㎅ á¯oŸ¸¤qêD¬Þgìñj>åUÂiié†êê]óÍêKȺäî YYåÙw $$$8ÙÙïqQêëÃ|g>hŒÆ¤ Ú,fÊQQñòeGçdó@\ð°/Zï@œÝ✕VZVFFâX¤„‚ÂÆŸ666Ú{÷-É9hJHÌÎvHõxïh¬1‚®1Ù±aûü–8¯Âá[[Š/]¾ŒfbbÊWŠVšŸXf‰0Y_¸]aLr[;~*åüùƒeÔúRsçZ1) ÷Wò÷¹=NP9!H»Ò_¾É(Ëõ üüÒŸÞ>Ö+õ°¯ïï{»­5Û\΢týúõŸ NytåY=¦4œFµ•zʬPd ƒ°;69Úa<Cí« ³Œ<† .õãlwp>ô,;*4”¹~RCCÃk¼ggn­²Ò‚jžÞÍÆ¡'i0Ô?«îÞÍù ³@ À™Яrô8T*²;ò.0ñwZ·|bûöí§-iwó.úãók@š4º÷ÓûÁ“~ƒ’+/ì hž'Þ¯liá¸'¶å¼¢oø2FK!ü•>ç™ÙoPÞ.(ý8K‚g¿Œˆ~s¥¢¢B··øè¼Âƒ«F×·ï_ëïíåucæãüòêÕ«4½åÁÄýY¢‚B2HÈP6l€¾Î®®­kødã 3õƒvíÞPô6d‹¹èÃ9+GG ¡è4±­Õ§¦¸¹¹í^5$547ÇæLŽâÁ…§_º÷|·^Lú²’HíPY¹]ïÛï?Yê²Ãâ“GŽi¼ i5g¯CŒ÷U¯þ0ÖmáÂPÛ¿“o^žc€hÀS[ ,ck   w—Ômfae éf_ÿú @6æb›)¿ý¾3pouÄûª#È–– ˜mmmwÙ"6É$HÊdß½š)V»“Y(\91v@½õA] z„´È†‹­Ch´ðïÖq?[(Ú#ëøx°¿*lƒ“±òjÿÓ•£œÇü_d^‘˜y³ùŽ÷{Æ©·]ýÀ;O;YYÝPN– I… nb›e¹°WÊ>3ìSÐanv*äüy~8¡¢ jXÄ\9ð‹rÅgä+.¨Ë{911­ÕÞ‘¢(E{¡(Ò/ iæÅó~°ôâþ¼‹V3 Œî;­@|SF½%Ük¼Á£sî´Ùe|%xg@ÁN‡äYes}œ~^7•qzÝDýܽ°Æèu1mðÑè:>¾eF9ewÝÅÙN®ƒs×s›×sJŽ×Ä(¨Æðïé¼*¼2¨4ñègéã®0×Åô÷yé#…¢H}×wÌ,D8¾"Àr=-÷l‰$œ] ÌÒùUŠGÔkZ¯Ó;ã?5ât©Àã:FXdƒÓ¸¥ ì ˜@ïVh%žH%j'ªuCÛ4ÞeÞw¹<71=.”4â<¨ÁjE„‡ä‘¬®SüªÁEkƒ`Ätòp¯+Ee›_o,õtͮߠ `íà(<‡·ÈcTüY/›2v3¨iÝ1†c¡¡¡•áÑf!úÒóÃVÈO.bêî³»€ZªèÝÜúépkx?q îÄ‚#Å"ììe–ƒlÍB”™ŸXÂÆ359Ì‹J§úd7à óè+ ì×s'Ýu'²­9£z` *ÜO’ ɺÝЭx­šȰåxpèšã+3ŠA.¦ŠµºLåÔƒ7+Ÿ×ž8gÒ€ô+ÛdgÏ{·¢—imÚ)¥c;Vg‘z[¯;SöVŠhß‘M©‰¤nÞ­ÆüdEœ®1Š÷±ó¼m$Oþº4µ…c…ŽIÐÊ«†:=ï¼ÌBÄ<í;Ü«N_Ã)5±[SSt9ƒHãõžkæ>ðB!uú—²ªÊê+k¨ØeWj’°¯Ù>Vbb¯à (;º•uó4ƒQŽÇ+Yù ÅÙ|YO®Ä ñ+F2¦< œqNž´Ò¼ÄÄy³Ð¥ã—0¦kÜæyCU-NEêŠWߘ2>JYw,cP!:mkîéÞ™VlaªÌk|™jNoyrÈvõxO…i´È–@¨“6($…º:¹1¬jú3i ð)iýò~üvº…¯çœ\;7cïÚþÚØ„)›Å UxȮʬ'¦YÀ#*ùfd¿¹^…±Æ8âª%鸸æ'£½CžΡ3i@lTôÈ=-DœŽj¢ŠZ¯…ŸÛ²åjÕ~’k7Áøž °ª'ÿ–WÏûO&…b+–ôó>2•¼ÒÎ~$QvH‚DbÐÓ Ó g»hÓ¼ð4®nË–-,ÂzO¬ ž??by1d_Æå»õ™Q'Eö±2ÜŸp©¼¤Ñ¥¥]B“üáéUuÌBgAÚPì· UÕw/1dår©æë¦«³?‡OŽòº°%õ1¯8`RÔ¸ÌöY‰ÿãgËS,¦¡Çƒ¶OÅ•CïéÞl¬¯½kmtSS_ªJÈnxä~¸õzõNÚ}Ô!&/ŸÒåì+ŽNlruQ-ò!œL9ø¶š®Ñoîã_O œŸ±eÿðñ#1\Û¨\ÏpKwcQ®Fjàì›vŸ—/C‰á‘lú± Azr²BÏ‚IùÝ JHkNW@ê%ˆNGXtsÃËÌnÝ*ëª}X¿¾÷õÓ©Í»w3g^ÁnHÄbgʯê¸b ±©6foÍô;ó¢µॄ•jÉ“v>ã^òõ‰ëJµ˜õV€ØBœ^šméáñ÷gÃ%ãJå…6zÓ>It³vsÏbGÁ9^Ð…çu,'“’Âêêê(«ÕÅLu¢™•æ½à"–¯›^\1ÚS¶oˆ›—^®šmÿê#€œ4¿6÷,G‰\q\ëÊC¦ÙI’¸Ò@úÐQÑ@±À ÿæíWãâ6VÕÖf50¥àÎÖùççÇvŽ=¾|éÂ_9æcW©gã³g!ÙÙ”WíöD'G]U9£ü<‘ ú€RE‰µo7yÿêañÚÊz¹òÞªB£œ42y•JM£Å!ž•²JhâW›2Åã¥Î•¼Qᘌ¸=2“Äö¾ÊÅÃóÊGÞó­Y´pfˤ«Æ¥9Þº&Q!Õ÷º7 …ÂÂ>m“±È£¯Q‹5°[9[¼¥i~ ÍæÛEo±ö«ÌZZZÿÌLñƒåG×.¤«ñÇ0<{¨™™N§z­×Má!fà`WƒÄ?þÚÙS§@`ÜtñK2¼˜Æê½)‹ÙL:~øã0œŽÎN7®ßþ ޑ⪡„ÁUƒU­­­ãïß3è¥TÿxÌ7£§ÎEÁ}H4úÞ1¦p»<"G.‹>EUhi(×_»cãg×—¾¬þs3#9’8\üh{^È2KŒÕ#Zff¦Ý³ló†»wwÜ|û /€%¥¤¢’å½ÑrM‡?O£|>Oç6tÔ úWWWkÜ)+.&ÁC¾ {ƒøùù:;ÍnJ:–¿}ž±ÿÀ´’’'/ïƒl³â{×®_ß:²ñ3¯vŠb2@ù7€äœqc;]¯9”›Å9üäõãbÂí¢Û¶aj¸|påŒhO”±) ?õ”èž¶‡g ïí}FZ¯SNÙl¤^sJÑ:e×’ºÄMZ$k½¯¯/¿ À#6Æu×®] ¬òüëÀÿK“Û=ôW€¶Dø'U{“Ìîæ “ÉÖ–³rŒ8‹_t:>9÷‘Çù‡Z®¶y¸Î^µLÑJžJ,û!;ÇÿK²‡¬¹Ë¥¢¯ÏÎ/ï¥ûæñÞí}õá]B¬óÃC:/ëb¹p‡ bGpÖˆuŠ SfÖÖÖ¹£ ÛôŒª€U©‡œ¼®2¼ÞÇÊ…D˜Ø-C|þ4˜2à`ÁÉ'Dz–OÙÌl3Ð ~ø”Σ®®æöÃ[OW¬Xay?Nznõ¢<ù2ln²qv†u|‘ö…Ù4¤( Àó2t’s©jÍ9¼x;â3Ї fÃÑçù«%Œ³ÓÓ·ÊËË; 5 Õß¼='oÓ´¥á nuýáqð HìÌK=êo—÷“ÛóÚJ9ÔÍzÂkeXLLíÓŒ½Oîøxf«èufvo$%÷Àªm?æ eÝUœ½ˆêöónôØiåG«îOJÁ™åòl†+CìììEkwöÞ¼yóBVVÖøÜ¥K—¬ÝêU  ¢óÀ¯„fgK{ÉŸ¿Ä¶s—™œÚ8éîîOCºí3¥“:«çþ•¢»Ræ›{åøÆŸ${ójeŸÖ:›ÁçhìÒQÍV¶<þÿÁó\ ø€ÑÿáaÿòþOHüËù,õßýŸþSç?Pmm ²=äêD¦B‚ ‚Û¾÷²MN¾ÅÕ†9=$Á?ø¨É/çáHZCdä"ÇÂòõÜApEe‘ Ø]qAAA˜Š½÷Ò/€Á_yJ[K,]”V–OØÐÅhŽTw{ÀHúZ‚‚>‹Û¸ÁôϳÄþr—ôâõ½t±¯üÄå .="¤ (…Z$ö•ÜA²Ý¾Åƒ}¾Ð–ø£ÌÒvƒ•›µÜ÷wïr ý„¿°œ°ä4Å¿> ãë£ß”ãÏ’þ3åï áû}a~p¿«;ÅÕÍÅÆÁJìk1$¿ÿ£8.›»‹|ué Lþ÷å:RŽÅ÷›æõt±qƒ¾kßE‚’‚—“ÍÒ6Ì_üK5Ü4è6Mü ͯûç#° à½óþÒ¾4²¬+§ *ø(ö¥ÌðeiWÈÍÀÆ[übõ勸„ ¹ƒÇmGc·ã‘ðÿ(`Œââr‚22‚ dw;·oŠ ŸÂäè zBí"éo‹´ÄÇÍQmÁ¾%.ò‡eó1ÿ@Ÿæ¿Ü¾*À_áfŸå–8A®‹ÿä*~ωR†å.ø­]ÁNÙ>¨Kì“òºæè¹x”b‹ØÒwqiÏ/7^N^‹æôÿyû— âÒŽînËêðÝ_ \šêê*æcOv±²qІèn²NdWHÃÁMì[Râ0_ eðä·²m±Û$¿½yi—DñïÕ ÔÎÍÑåKõþ û?¨å/Ëýg™ñ_K ûRÀ¥Ç©Êþ!§%â¾/1huÈÆÊÚíÛYòˆK×AY—¾.‰÷ëÍ_[céÄ­?n]úúã[—*üÇ­JÀúk¤¾ç,õõ¿Ifé1ÙïÈþYOAÁ/~þ÷nþNxÿ|³¤›£“ìw¥”ø‘`mlÜôaá’)vÀ¢»ôàbÍ…Eáo¹ “_…¿Uà/¿}s†›ð·üò3|\üué·/§º}óÛâÑm‹¿+Ò_I¹|-¦°¸ôŸÅ|–TCö³ÜÄ€t·ôùÞˆå}}¿ýÚœK7ˆýñäŸý¡_žYÒŠ%ƒø&æ~±8ñ¯>vñë*ZØÒU¸+ôƒ‚-úÿïØ~aéî‡;Gê—sb] úןlÀÆ>á? a£¨€ÿ¢ÃÒ>Kvµ^|d)H‰ÙüÁÄÂÉeñ0DÕ/[áQz¸ÁµoÒßß´Xì/-$âêdgãF!»€v¡®bÂ4²Õâ‘} ÿ…ú×[\!;ˆêöO7-Qþê÷¿<³ÍÍÑjmïèm“ü³„âß°Å­ÃáFö°±"ƒvw…\vZÁ†èæ¨íè ¹¨]ÿˆl‹btt…cÏâ“Òöd7ªµ˜Œ˜ ÀèÐ'GøC¦‰Ë|‹i]Åÿn.Þß AP#MÌ?Êýñ³§µ$(¶tYü›ç–oùúË¢io“ò„(¶6nR ¾.t;GO)Wª‹£ˆŒÛÄ–„±íÛ ÿõõG –>Hg  ãHƒþ¼Ë÷OÐß[ö+Þ¤.Êrqù¶°?yàOD³äeþ{áoä4 ,‰§“QB4ˆˆƒpt C'Sé(ðeAƒœ€v:ýò?$ƒþfÿ_‰9!á¿ùßâ%ÚpñÄÒ/Z ,CØ?¿*²Èc% ºZ“Àeølߥcm€õ¢¾Ùú;³t0  ››Ý7ô—†a²  a4N'I"Hâ0Â2?åþ–7|ò ‰&Bð¡o$!ÀDZÁg˜)é{Þê¼…“#ðö-N…DI¢PxI–ô“b@4+%c;2åÏóká-êzé û=wâßøáq’¼$#IB.r“mòŸ:5õGöÿ÷x]½]Ý ûÅ3ÿ½B¿°4ƒúëùŸðö_ûÿõÿü¬½¿=”ìN³qüóhÏP/›åCx"xÑi8Ïóï à¸õ›Ä h @ $Žš€@! ‰ I&QXø¨Ðœöñ/È‹¥cuDÂS°4‰†#àè8ˆ ÜšäÿâŽ.öd»ß$Q0h$•„&ÑhT*ƒ¦a1*£±(¸YþNÞiéèóßmYà…‰8$D@i4<ŽJ@ciÐÒH4†J'Ò xòïÒF¢ñ°²Y:†N"¡É:hb*…F¤Dìÿ•'hüÿmI5]]öAnn ÅsݹØíþÄ$€ÿ[üGãþÿÿÓñÿGíýmü§Ø¸¹~ké?Ô%KÇ“Høô$4q ‰ \ žL¤áˆxK@þÀ :‘]l¾ ?#'Ch„¤@J&Qéðo$@ÃS±H*ùòŽ.n¿ICÅ/žŒƒˆð¡B jâ!< CÆÒÐ4ðƒc¼\ ˆö›ÔIx–HÀaé(2‰ñ¤JT…ˆ¢aqíþÕÕÍÑé_= IÐGÀ !*"‚|šDÅã1 €¾w²?²ÿ¯`™ýy= ÷füdHÈoò °<ü¯ýÿ'^t"H¢ ph Ð: "á¨H  j,Gù¿§ÿ}ý{ûÿ~«Gåßbÿ(|þKüÇ£°ÿµÿÿHÿŸê^ƒýº»áÔ5TÖÖP–’‘1ƨÈȨ¨ š¨ìÑDI# \È®6ð(ÙNFf—ް °µ››“¬ŒŒ§§§´'FÚÑÅJÆ@_Æ ¦…‚þòQÊí›'¥in4¸_q‘¡—½ƒ«ÂÈ H$ÒÒÓ‹÷Bdxƒ“HAø^)ÈÙÝÆCAXeiLOjñtÖ¯c~ Ân ][zXŽj üº)ì–".v¯ýˆ‰”áN)G{'²› <˜÷'] ¤?ŸùÒ3 9ÀçM;º|sŸêÒl $¢4j©o±·OñOó\|¤.fG‚ຠÙÅ[PìÏÄwêjÈ þ¥sRPÕîpt÷êCtÈr Bò2KÄYäíll¿ô:º‘)®ð0°  d§€‚7HÀ¬!ÈMXÐÍî·\” |\:Wª‹“Û·¿"{—® ººP„9»C.Þï +ÊË,ýò{Ò¼\¡Å±0׿>ýMy¿aþ·ù‰kÿj‘¿îŸøŸ?ý/=©ø—ñDx×[ì»±ï¿ ÃÇ‹Š};( ~ÿ±h¿ÌÝú=Ñ .ö8±/Š#ͼÑl<;¸ávEy!))Aš£ ƒ£ v ºYÛ¸ ‚›$mÜà)4T;GWˆ&HñüÂZHPJê[:°ºÂ}è°)»Áu¤BvvðD_„‘‹ß@šðå;¼ÛRiÀ8Eñ†ûοL.Äá¼äe(ïF[dáäâx(ÙÎÆÊAøëí_JÙÁ3@‘Ò8È~é)Á?Šöå¹ÅΣÙZaJ¢"(ÂÏ}GKð¡}‹‰’»ËïQ£Ã½UßQZì¿úá£ò2îvK ¸Ô@‹o‹­Ìå{½ÿcFÊWñºÛü9gDðÓHþÚbK“R¾ðýëõ¯Z\ÿl­ooqõv þÁxñ‹âÊ÷~ýðG©¿NžøjFRöއ¥ày RKs$d 9á¯ÓT9)k²ík…¾Ô/Ýâß⟓a|`ÿ¨Cö0µÛöÛ0u›ä¶mâr¾ßû˯µývfЗË_ê³dq¶Éw—]Ú_ørí·"8,‹èÐñ?”è áoúÛË ÐþQÆ?™Ð øptÀÅ[ÐÊ…ìd-Hwtù+ªýÊø{j?–\‚yÈÛØ[}‰ð¿!ùÅ NV‚GPÆE/”Èžì¤ ,Sø5 ˜Æ—ÑÒ¿ŽÙÊ|UæÅì%dö¯]lúß¿ÿ÷‡¢ét4Ž€„ŽŠ!ˆ"•áð™HÅPÐX:á÷†Á±I#‰B‘$QÔ/†Â1ß …SÐMÑ(T$‰ˆ…HX*øNƈ8†N†þµ¡p4AüÂ% ¸ÿÅH8~é ÷=sæoüˆXxðŸD5Gÿ„ÕÎÝÕ õ?˜ðvð?^ ¸¢ˆ¨oÆÞ¿êÖ¬²döÒiÕnÑ*ùÆ#˜,€ª#Œk€èÀwkô×{¬\ݾZ«ü×\ÂÕ ¿ÉÚ° y¬ÑŠ‹a |à ÃÆ ²—ýeûR¤?ÔÂÓaaA D ã)axVòâ×EÀGûÕ|Á6‹Åøýï¥8º¹9Ú/ÖíË}ßëÁïÙ…âm\ ¹?ª¾+ œ~Éþµrû¾þ"ü]#|[‰ŸÉòW†óÿ"Yþžÿ5ý•é÷°u}ZK˜èÏëßDÜ?‘ìâ¼Ë¯3oÿ¹ßšÅI¸_Ë.,~_"iCƒÓÁ( Ç;ÁƒžLúЇ—ÀÛ"þû†À5?“÷o9—ËûØø'¿¥Z +~‹Þ—îùŠG¿éùšÌÁ}"ßð¥àü=Õ/úËS‹xÑé}¹²8ÉŠ_“„¯å[µÀ‘¯¹ÌJñ¿s&ÿÿ¬ÿ÷ëúÒ¾‘ú¿[ ø‹þ_$EøKÿ/‡ûïøÏlü÷«Óú³½¿õýᄎߚðñ«›„¿äüû Žv0Vú‰Å;~Íi‰ÐÏxýìñ_ÒÿŽ2|ãÌçËÀ2šŒ¡ÒA¼ ÑH(,G† *‡Ec¨(„Áþ}è×ByŸªÅ¾½†ú*»~J™†¡É IERð™ ÑÑÑT4DÇÓ?T†×/ÀÉ7ÍÑžlãðsâ4Ž {ÿiëà©4<šˆGQ(8|Ct`‡À8hhüÐ/™¹Ûÿœ"À3Ðpt,E"AðqtÄ’iDPCò¯ÐᑃŸ2 ÒÉx‰£¼@£B8€öÁa¨hà!¥~Å8è_· B¡“q$ ÊÁƒÏ‡&Q D"‚×o1ù s$b 2ȇl I¢¢¨8… T÷#ðw6_—ü#*ŽHÅ£)ˆÃÓñC&“ ‹K(8€~‡ ¼—lý’€fƒ#ÁÓ¥qt•@@T"â)$,°VñW¼àA¼¥ï?eC"P1d•B"‘Ä!bP$xŽ#þG¢ÐQ¤ßc³Ø>®¿ˆW($8_P/:P‡Æ‘‰4 ÕHˆŠÆQ~ÅÈžl ÁK,~îÐ2@ÃÑ©X,øJ†Ž¢aàE!ƒEþŠÉ×ÿŒâÐhÄ\àd , ‰%¡©X€E<á× –fáÿ3ú ¢Z@ÑPãéX,™Ž¤Q($ñß×ÿßõÿÃ+q¿±ößÛäácÿÜ7öC€ ¸ÿÚÿfþ÷×ýþT„Åö—¶þºÄßøoQðßרþ¿éøßïúËý_°è¿Žÿ!qÿÝÿó?6þ÷}{;öGwýûÈר˜H…@Ñq𨚀¢ñx‘†¹DúAZôu*Æ?Ó„S-<„C‘¨x –QP(ð…HÅ¢HMøAO¡õ‰‘QdlpŸ……Ð8 Ȭ)x,•€Yïzœìþ‘‹D‘0€Š1X2¤û( •D£a@îLCÿzÁéwäT:H% KÅáPX4¼J“F&Bpͱ ñ?—Rü4þÓ §/ ÀÉÁêÿ˜ýãqKë¿¿‰ÿ8á¿ãÿÿ‘W˜®ŽÚ8”¯ÑPWÕïþàŸórðwÿ£1x¯kFŠ–š*bþïÂŒSàN |΃׹Ñd[Ý}j¼µ›vªKIEÒY]aÃ&¼Ž;z¡i-´C÷Êõœ·Wv¬[—•¿Ï€¥U+Þhçråzb[x¢M£‹ž©=o•322Tý‘Ò¤«y!×lŸ ±ò£YòìyÒI' åΰóݽ~)] ¤Òm!N­Ë*‘;ŽG{_ÙàõDhÍVE­_õsjV–mw™ï† ®Üô~ëìæ&ïñæta!ßû¾ÿ«W¯ü>;nyL¼¾)ĴСºªJÛñòî1†ÇÒi›"Á•=á'li©ðøs5!ªL(;LLÚ V>¸11ÞÞøìÙÔCB÷iwæó1µááï_'iZ®12_fZ`—«È~æ RQñ ÁFrrepÓºíY¸íìX×®ÅgIÝöÜ$m&&#c…äâÜ"/bÄ}".kìÝp266öõÊôôt{{{µèÍŸzCÄ6jîܹ,²»Ôsìzá 4ülZZš›l×q;«CF¶œŠ)åî#­CCC§¶í=”àÎÁ….ÏnP©ívÇvì8wíÌ™3ŠóÓýà†‹…“u˜úËç&M•••ÝÜ>|yFVÍjIˆ‹«ª©©©®Ž‹r+¹nZ¸A¡R\Š5–!.“„„ŽUSô2›ÍK=¼Æˆñ±ò}±›6mBøÌɹrÅ?Q}çÎcFYÌ+ÎâíyøøV"šŸ=Ëk·‹Ú0ý^¹;*Cð”ÍÙç¤îç|øø±Œ¤äÆˆêøøxyþP¡K—¶()•_¾|å¶Ûë¦T•–Õ«”Žy×·‹ËÎÑ1çÚµ†û÷·KHľ|¬•ÞÔ×GY"¯)cV„¨nii?‚åD XXXîUV’×Ç}|fÁ„Àâp+W®ì½îéé™"ë~µ¨ÈD’311‘ \\±".!aíºu‰ ¯^¾ÔÛ(ßá:ø¨b÷5p9¹OÄÆæº½Ö=•ßÒØèÔ_ÕРÍÐ;0ï:¨sÃqO|:Â¥­­íæì¼jÍ>^ހؙ™™ÈHVÆ€ K$Ù–o­¿#㩹™Ù‡Ã¾îîîÞÞÞ..hÄ…ÌÌ×Éž/Ž©ÍMPÜ®®®Ò…ÇÉrž/|§Ìo? e–N”H|°03’ã;;i^v„»ò†cùî‚$LÍÏÍ.?fyÆ>ð"!&VüÕ–éñÊuSo»² ¶?»¶ÿÔ‰/¯–––ÏÇãS§Ní^Ÿ}danª|ºouþ>~þ2ûŽ‚Ìí´¼v3i‚‚‚““1>Ë8çÅ-›§I+`S¹;Ruë&_.·ÏfU„-¿ {š±7#=Ý&ÿù… @‰A«oß.eZ@$‘F_Ü)½qc<ŠðânÆ5sDgÊÜÌÇÖµœË˜ú …¯^½ÊÎÎÎÃÃs-ÇXmzf¦É‹ð×}ðèQð’L&»ê—'³srÖô¿ëëïzýüÊüÂBWâæ eywÀåáÜÆ™>K ö ÌÍÍ »ÏÇŽ|õª€Z»–«»È9-êÀ­}¯ìÖœ®Ò’¹C›ðèË{¬˜§áÁò‰Èƒº´,ô‹ÃÕ–¼Wc‘,˜+Äu¬£ÐQŽÔ>\VÇ)iÒSnyLiX²án}ýëÉÑŽ*”çî…u§O#§g—#T/VFGOÊ&>·}ð—óÜRYyµ—Ü’,ÇÞ\lÍÇ«kÞ%ëWÖÿùStKË”Þ …4yÈß(«ÜcQQ¥¨è |,Ë›•«Ä m~õiºÊò®´yÉÔ›÷¹ìr˜¢¼ì,cÀ*$ëÝÞ˜÷ø>Ï›×íÛ@'¼½‹÷j.DXçFøG<ð»ãäv.C÷J‚äþPI¥÷¹ý©ÿ—/óiO¦aUÉÚG—/ ®!é£`0ñMCü­þ­?ñ”%ŸÊÃtµ·ù˜¶-ïß„WÀuº›å<364L½?V¼MQ‘ßaáµïÈÂPZÌyCÅ-/ÁSLàò/ß^SdÉÝ:V…–™rd"lHÏþd¢óqÍtÍ-xoBš¡ñI³”VèÙØÓ "]¾|Yzÿͪ®.!¡Ôœœu5¶¶¶ J<<´z¬ëIšÚÙ³g¯™wÞè|Ö½ÛÿNt—6åZÒC=º¡u®Ë³ló£G7ª  àT®ÈeQ~ôŽfúM÷Ãy™áµý Bó–Ù˪î}z?˜¤-¯¹GCCo{¼l2|È=ì„sM€“VhÉ2žûü¹Ç(àP>£„„D¢´¹fº¾ÄöíôÓõÓ32žZc×­‹®>ÿÀh?âÂkà¾DWr£’0Vîò021uuv"YGÆÆbbbBv&ë$ž:Ui‰ììì«j"iäã#'IÀáÞ}úÌ]»&/sÙ´w†Ávñ,AÊ"Ûãñleåa Öp/)*b³½ïÅ7‹þô)·ÝŽØH¥Ry U1ÂÍ«tÅn¼V YK’•ÿXé©Û)æ å¤[*Umþ¤ÙÍ‚œäÔ´4jûMˆ•±?FiÞ}¦l|ÓÓ§¢ÆT¶½ãÙ¾*ûÜA]SÓ³§O× ¸½Q—G &…|ïÄÂT—ËåèŠ05åÛ¼™†nÏÜ—Ñšm^jõøüþÉD Ow÷ tÊã”[¦¸Ùºn¼ba^½zdhˆ-Lõرc’¼Æ-ÕÕCM$4ÓŽŒ/ÓãÞ¼¹óÉ“'/^ÌOv8¾zEÙ›Bñò^˜ŸKMMBŽ îÓ.?þ®%rzzz³ÒÑÏë—áÏv=}ð,åìYÞ ˆP<µyó9€AQ¨\Ñç•!ëÖ­YãíåeVì]u pyÌ|°1™@EDXø’þë®RÏD‹£†žÀB½ÑÀÐp`dD+]ƒFcyÎh¿ãCˆ×4OÛÛ_ÏʒȾvåÊøääeýL›ióÎÛãAÈw>±Æ~>d~ Ñ¢fì¸èªóòÞ”#Áw¦^øT½l9änd”rölˆ"j»wkjj¾8ò~O²NÙdÏž5à}u°ÃøÍ×54\zb½z“´¶†Æ“Cù˜h^¼1cCpIIIv¶´É[ ÐI^ŒpP¤Øùƒ`ˆÃã/§§¯ÉIº•ÕÙYñÕFŒ/ŠKKóL®ùû#¶ÇŸX±ß)–}³éÜʶ–Ž·5Š«úvçmñ?²9jóŸNN”“Üܱ¥àU¦„ éôþÕÃ+úÞëÛn{»ZZ ¢(Ý2cG× >ûÖÉ~0Ï—Lq³:°κþßsxЯûÿt]l<Èð‰.ÿÓ#~µÿ+f©ÿÿÛý_”þoþÿÿLÿß7íýÝæ¯ïÌúV3¾Ìd Ch šN%ã(x ""1*–H&aÑxи¤t“A..Ž.¿CšL£ãI4,ŠÏ‚gÑbh$ K%&D<å‡ʺY¸@Îî«Û÷Û³ý4žN„PDà‰Xx'PàÝP$‰ï!±ämýjãfC¶³9ü{ *†JÀ €„°X…€Çàˆ¸·"Љ4äú$í¬«àh…ÇQˆ$<žŽCQi82€#!H å‡\ úŸ3DEž†!‘) …AÑÈ<¥ A£ÉH–ŽþQïçßvÄû'Òð$`"¹8—F' 8"D¢ÐÉ$ MFá r7{ÈÑÝÍâÇ›ÉþG¢S€öh2ކ£"I@I RðhpðÏlh®¿Ã€‚'Ñ‘XK‡Hx’N%Ñé*‚wúÃa~´Uí7 ,ì ‡ßja$’±tX\*„Å!©$,Š@‘T4õÏLWV.ÎÚù>X „ÇâQh`\H£Qp8< è&…‚ÅRQHúÏø8:ý6hØ2 ”B‘pžð $ñG3ÝÜ]×ÄH4"™H¡a±$IDS1,‘HÅÓQ2÷ß=fþÏ—ýÿ×€¿Úÿ MøÛú?$þ¿ñÿ?¾þïK{·øoi£ÑoÌìï»þÕzÇ?®–ûªlÿæ¥rß“ý××É©¨ïRѲÐÐÑ0øgªðD@I án ¡ êÒlj ÄODaÿ‰ªþ®}†Ú?¡‹ž‘ˆ&BXM%Ó)(,’Ï¡¦@4,€ HÚ?ÑÝg¨«û³Ò¢@ÝAŒE¨†NÆ#É@*X"‚Ã`‰?Џ»wî3°0ÐØ³k¯áOJK&QA8wІ%a‘84BBaH aÿѤ_í½jª; vþ3MP{@”D¢Ò¨¤Qè$   E%@*•ò«åX©ù¿¼Ëá«Ðþ¢¨ÀQT ‡¥‘HH†Œ¦á‰t:|‰òãIÈ‹$¨ÖÕÖÂÆá'Äá­±)$OBih„#cø" ‰ Àkþq :Ùõ'àoD€tqÀÔà)ú8H‡2'  xêO8À{¾ý3a*@C ´0e< ¢bÑD'‘t4žuþÏ„évî®Ö?!L%ÄQ‰À) )ðH< JEÑ(„¦Óq´ŸþËŠ˜ïéÂS•±h$˜B&£ASÒM¢üðÀНtáu¤1?&N‚0n¢ðx*Dù –J„±?J¦€QÿÃdå?ˆÿu.ô÷´ÑX #XJ'\/ß‚PŽEÒ€£ ÿœ¶Ó÷ öþb0D: $E@ÅñH,µ4DF‘ t:$vxôÏI»~Ùúg.ƒFvM¦`)‹NÎ@üpT<†NAþœþàùÉ!"ŠˆÁSP*™@†H€1A^„…ÏÀÀñÿLþ/ 5þ"2!“‘( çç´êIè^¯4¥‰$D2" E#Â-A†~Núמ„„C³³à}zˆ2Žh ‰¦BH€è Düœþ/= ˆè4¼þ›€*£,­Ë„ht …ósò‹E‡=ÖOв°O že†C#Qð¶ý€šôôj©X ‘€>8•@ÀùãÈ4†C¡©äO,êkvÿÓâÓ@ A‘)D 7SéHÝèT^Søkò?-=DÀ ÑD4œ<@$ãÜ¢"Ñ øý$L¸»RPÈ.Öd»Ÿp cÃ"SA€‡×¢³á4«8–östà–ìüIÔ !aó§Q2‘‚&`T Ä<&ñ·YXP¼-·|ú‰¢ááõú$ †l‹†‘9$£14¢¢ÎËÞÕj‰Á/â ’ |1G@‘‘Ú€— C E†Oä8ä·¹,ý“(NÄ@:@gI¤í¥tƒBÂ+ ! б_³±÷¯¤ƒdï‚Óî’¤‘Ð ¿" (X`í 7"’Éö_áô‹Jö bŸBá@íÐðò4I!àˆ`¸_³úyUÐކð ÜtO@…Ax–"QðJÆŸAŸ¯ôQÈu©8$s4:ˆÀp $qq9ÒÈŸ™ü/Ãm ‚’FV"PÈp#Txï ™Ç6 –6uµqtø™Ç€DŸL$Ré á)@ $: Oh¦á~NÖÂÎÑÁê'² œ ŒI§P¨$*‰‚9C„‰à;ùç´]­¿Ìþ×D†û*@þŒ¡`È e -õ ³Åa€•ÿ`Èò€ì~BCS=:Ô‡¹>¬(!…LÀþh;Ÿ¿/+þ ¢Âˆ:Ðd$"‰ERP [€×³Ò(¸ØÍO±€8Oâit<ÈÍîâ€ÛMGQ!4†ý·÷ÿpÿ/…ì ¹üyðÏÿjî÷¯ûÑX<îÛõŸX¸ÿ…Áü·ÿ÷ÿ™ùßË ð¹ž™ü•9ó£ùß‚ˆ/ó¿»¼ 6?gÏØ¿"N/NÔߟ ûðÊÜEÆ(Šjg³*Û\_0sA¸³çøiuŠªžH•”ÆXUç0 ãN‘ð'¨pFˆÀÀÎæ,ô¦Ñ©\‰kû›5Êûv½ŸônsÉHëõ©„j•©Ñ·Â5\ BlB̆½¥Ë•™…üRuEÙ–}ûW¯¿!ļfÍ.kk±nˆŸD"UÔׇ¡™Su·«|nÉâBZ"ºÓÙø«ª«—!‚ÐëW° ,pƒkx‡Î:Oî@¦³xû¾ÒÊDl†6³ÐråÔ¿ÿý\É-2eµks„L{{ûôpV‚9_9Ž#ÈEâ4ÉU´{k³íó[6{LŒ‚“å<ïµ·sŸÚ¶·æòž³ã3m|Üܰ»£xÒCÑ«„ZtÅ ­Þ4a®|žŠ*ZØUê)ó¶»<æáYB‡cyÐåË¢ŸçæŠG=ßvV4¦ªpè‰ ]âa0Ò}}DUu…™¹yoO¿¿?"..n‡è)rw™ïôPZLÏÛ·Ñg Ž­I“¡aa sÝ Ëä<ßªÚØˆÎe¤=±zóæÍN¯›¶¾?y’ýÍ‹;¼O3ö†¤¥‰xŒ½ˆjjÒ/*)Yޏ¼7%º¡¡awÇò»£…½}}ËÃT—çšDVGlêqÇáßÙif}貊JÚÔò»s³S¹N½Ê‘JüÙÙÙE.,Ë©·]m%î…~zzëßŒŽÆÆÅ­@œ¨§½Æ§Ô»º»SF\N£Š<ÇøÍÌÌÆÇ{+yˆžê=ëXVÉŽ ;1ª¼Ù£¥)ÓËÚh>umíª'ijëÙÙOO{Á%7-°«HÂX ¿ÙÄÃþXq–UÎãÍeååósüœ;ø„¦©ÅPÚoBÓ3#9ų1JÑqqW02Rže›«khT„mØVä»7EqŠJ%¨¬y¹’½}ñQy¯»¾÷P¢¢Œ"jÑqr»m·½13“£¶éX¾í,nË·Ý„¸[SÃHpèÜáíMBôÔDñ"±XUÐŹééäÇç˜YYU)áãÇõ'Ë{³GpJõ=7&¹odgg¿á3åpdþÓ`‘sÿî(¥·ï³Æk>É2–9”D… Wöò"&H›³P©T.nOó=xð n2"4´§àáy^ž¹¹;Uô\ˆ—0Èvv¬à~õtý·Olì£òqXl`p0# Í­“¢uá‚ ——â +¤¥¥UL]áÏ'ç±c{¼²±ñ¦ààຟûüÏœáá—÷B\˜ˆ-HNæS^è髎0)qqxD .á“‹»¦ûÍWò=®¬d ÖDKH0Š’•6/YáèèÈÅÃsÑoa~üãÇ °0 ó‰ÌëEgNç/çâåuUªÁ+sð6êä7긇‡ t ØpèñãË? ·Dئ]¼¸\BBâ3°)$S ¬*—RÍâàãáßÌÇg»9m_†Î•ʹa_ÃÄädsª6PÜœB>¡Ñ•A7—ËûÎlôù° q)=}§……G]]R7¢'FiþDiJv¶táu.ãõÕ¸™‡uuWr-öuìVS£‚ ™”U`\»¹nÔuvÒžU@ñ¶uÅö N™ƒ¬@Ðqññ-§5¹cñŽ/"õwyv?Ï_¸¾£À¾yÁ… àº:‹Zš‡Ë ÜÝÝcã㫃&AÞÕ øYÞÿX°MuÈzFyÙäÛ®ˆÜ.]¾Lfq#//4‘Çè󠌽)ÂÌ`ôî“@E›ž>…çp®X±Â²³ÈÙ%²µ¸{wHÚEDŽ;†›”;Ñ‘€ Î)ŸçAtôÚ¦¦¦"? Øw™Ž4^B-—a¹zõêÅ[·6†¬`Dlää\ŽU ˜pÙLr ´µ€qæµkwÓé¢ó³Ý ”ÑçùÓó³c#|ïÜêæ>÷†P€ˆêT‘_¾|ù™Ù”ƒùÅ%î6gîË¥?äÙ¸q£å›¶\'gçeˆ—ƒƒ•¼æ¥A!!L„òнÀU&ù‡8ÂÃÃ-mmW„âZOO5''d‚äþå&’Y g£øx0ô†»©*!–ÖÖm–Ïr,D€0vî܉;hÆàO® vÞ·mw?PãÞÁA¦={ö•–R›¯è™»l"] ÜÄÔ´bàÁ‚‚ì'ðœÉɱîu@›—µ|YûñQ)ÃÝÉÑ”MÓÄÝkûóƺï>x°Ä  ÷Ð%ö'…û=zä5ÿ¹X9ñímï÷¢3^W*<Ü»wo-EÅžÀ½ûäj'ñû÷ïo»AfèNwÂÛ?_¡  pNÖ=|LŸ9Õ1ÏAb€bU¶y)?^¾|)H$©ø*gƒvHJJ*r{Í.º÷|ƒ')™3È…7IÁ+?eÛ*)iVÄÖUâ^yŽäZ4zþ^smLooï±UD-Ç{*Ž$ª„Z>9çÂû¤©é^‰ûOçÛþþ§Á-·îì `ìí,v=’¸3´ç‰¤Ì¼žåo§ŽùÝÌËsþ8lXö@P¾îÑ£ìw±ŽÊÓª©‘÷«ÝADȵy*Z¦å­"ì6*Ë‚n×ÚÈYƒóq䈄ð¿×*ÍÚUºWy×.ÔÄ„CêÅ‹;æ×Ês+•ïÞʶÜ_ñɳ·wŽì÷ßݧ´à}|´Ãé[²+ov|œ¸Á¼ö¼HôžO~³œAD×À |åj»ž^£yé¡‚gf=öae“’ÒÒ ¶1 âp¼{}Êõ%žßön-r·e0º~&”Zëp¯iÂuz6DD&çôXóú-,Ã^—ž–űíÞ-˼ÎâXEÀˆ…£ ó­[²äù#¶UUvþ‰‰R“cåÁëEðÔ±bâ±ïÌù…Ž+§v>ª£qŒ¿/E8Žõ;¹Ýº[ê<[Dþ'é,·'þ‰ÏLÀÃw’ƧÊ#cEæœzî>“Jw]qA×Áøàíº,[¶²9<Ïή7ܳ0Í-†àÙöϱãG¶õ?â³ÐNqX¦TþþÆÍöÚ˜Ú ·o›`î Cî]ÏNYQí¶c{-@£¥Ÿ–ÍŸ“NËÊŠOŠÈæ³³kÈuèšâ’óà}”R¾îð\’›ÁÆû£;¬‡øˆÄ7Áª­Ä„4 %•2­C†»wwåþÂ"ÆÔžTɃGXŽšp? tÃn¼¿ÜèÀöÊ«†7ìÚ=Oó¨ÅHï(tHþ$­Ež™ô]}ì˜Ch¨IX™ïÇ\ë'zÚI7W¶¼7ç²VÞáæM—Þ¡"&2¹¼ï¬ã+˹™z]½Ì…û⣊‹—ìùü)}èIÚêsç&ïUCo»÷ö—b•7F+ï÷wèÖ ºsGéàíUŸÞ?@Ú4 –iõUŸºLt¡)Þ»—°CT¢¶*l™“s{HQk™–ˆ*Y,nå«éw\D’oÔ΀ý}»NŸå7g ^G¨\§ä%²¥jCqñ..¥üüj'ÎÌœ`ãꨧ/óXãÚA¾ð Õjýã½Þœ_¸vmK‘› i­Àù—/í"ùï¬Ô½êóT¹Ì´tÔ #•Õì«vÐ_Ù6œõäo'ºYK×Ä,0uo]• ¾å^‘3ÒÃÎïó4U²ì󄚉©ßªM‰½&¹÷øgfÌ?IÇžàLU»/¦qìÎÜÚ—ƒ›úk÷ bÃÙ÷]f­É·µí Uã"5­[ø<È \À{ uŽ‘ÊIj@zúc¦ÈU¡e°Â–ùv÷•^òP37çÈ£GÝ•)ÿ¼á,ždëÃ…¢`>–îy¬dóD¤i^Wìý… VDpòU<Ï禮\]ÕVø˜DؾÒk×·Ÿs|Ñé=¨émË=ÛyQ­º:’¨¦~JO¬0·ÛïqEsf©ÓÜavs&Ì29¹la²5³1ʃ’{pœ…öw;‹Óظ¸Ž‘+Ó8^«—îLí  Þ D\¹r¥§)}àF~°tKzzÚSn £6Q:ƒâü´¯]7´^ZÙÝwý¨õÖOD„Í6Þ·÷Gßñɱœ|3Ç%W ð(ùÔEcó²Ãl‡?\1‹}ûêáÇ…~›xñ炯3¯¹£"Ñ´~çE]£Ÿ?³Kšy­°ðu_oûLçÞy…¼ é»Þ×Ú?lÔeJñ›_Ÿma±Zëâø;R½ÔaUð”Pª®Ñ…ææÁÓòÞÛº4+<»½ï=°•ìÞêî%*ªÛe¶ÙþUaUþ¦†ºæ7=b¿È ÐÚĘ_-¹¯ a}誈|',ÇNªãØ5.ª­_/A¦5ó¹¾Ú|÷–ͱÐ0ÞRlSäÍ«Ÿú÷*’˜åJ—1¯6].’ööHâ.žÆœ¡Baó «Nn ›}JNkRgÚ•Ú>1Žò|+d×ÁSæ¢ly‹kù$=´Ë10ø°ÐjoïêÓH!̯¿Öoܜ絥Xœ©†‹ ^tË;;Ù£Ó¼"ÓÒa·—IH¬’>h}jÛ¦Þ¥ƒÔ΢Qà_ƒ† ¹NN\ßV¼x! pØZDþÈJIIíOÒa·NÄǯH”ɹ[æ›·~Sâ2Þ³R&ùÃ…’Ž#± pŠÉäø§t¯ô:Ì_ùá5'óóÈÂ3¼ÝP¬‘~þГ–,Û¾¥«³-öVÍŽùEféÉÉÅŒM„ž¼˜.×ݘe¼rüƒ|°ÅQcåå«aµ(Óf¹xùòòmd''®ã'NtŒO­«}ýÔó]ý6#“›4É–¾RÕ‹ªC±¼¡î®Z¦®s4c• +èÉæ'uø¿m«¶²zÌ[¬~ N/ž„»]r×#<dPî‡##ÝØøË–0Mõ•niªù›Ë¯¹®®Á›pQ×A8éšË|[Ç,q3Ÿ”ÓÄ¥mUû²ÂòÃM»¤®ß· cuà^÷zwô‡Êc Ji·âî%Ýæfõz',½sz²ÃzÅʇ­×é”J ³u•Kv›-¹¼·ðƒdèãÖh˜Ô]1êyzb`ÿfÔ³çõSc¢§ƒøe¾O Õ €ó5 %n‚õ€¨(RëõY~jmÓEµKÞbq¼ëy3­][JvpøÓ¿ úÇêyÚu GÖÕµp¹ÎŸW+æxÍ«V5´×‹/=m׿ijM§ó^_uI©»A\ÇΦ§}2Ò.öå,Lû@ 0…·Šë[¯ŸeÝpŠßþ`ÚͰ˜Çª;îî-râT >MyxFãÖuëÖ?»=w†}ýlŒŒ¤9%‰‘’+V4T]Òðº¢ë ò³ðwýsg›''8¼¦Ì©+›?ÏŒø½k1Þä¿íæ€ðÉ“7{z+€Ÿ¬l¾õÖ“(º…F~Óv½ñÙX8¨oE£nHHxØq÷s¤m{ÏS? I‰IÌÚÞWÞ¾ÓÐpå™3ÃÌ,gÖ˜v•7j+PüìÄ˯ôèÚÔõ Œ\½Ý óq!We³ÃY‚ü"«-æC##œ¹£9$Þ¤ætÇÛb€¿1+ž`Ž\VSÓå<ÿYh¸‰étœvíé}ôÈÞ§{÷Cé%ÏrS[[«Sï|Þ¦£Syáê)îcW¯²ì1¿phW‰í³Ö»¯_¿>érI`þÓcL]}}mÓë¢#Ÿ %R•PÛ]#A”}»ÓÁA¨;ý”Q«¿xŠü§ÕF׈aÁ»¯^¾Ìbk»*šßü‡}› Ï+< ª¾ÌãŰ=E¡óNézFÆ.¯«‘ˆ AËæ&'ß„ùk­š©®îŘtíœmZvvøü\ÔøÜTÄ“ôƘ–“F—>ÇĹºLä:÷ïÇN:0$]Û¬§÷Ž™y:s”¥?©ì(•ïyi€Ðòàuc{ŽI"€(MnYcºf¶‰îå,*R:´­ûéÞÇ45îÓ˜AÄõüTÕ8Å8_ßÇŠŠ ÞÖšíìAŸW#F$>>­çsFÙà±oàÞçÏy€wZ‹ËŸñ3|pÿ¾óìä8N¡¹¯ç¥²ÆÉÆå˜kí0iË“Èñ,(@8–°>·gÖ97îþ`í§W'Ä÷1îÜ5£µcËrQÍuÔ]— ²Œûg=¥“8ß?^ͤà…ûå4õÙ´[ÝòúffÁ{•Ö€6ÑŒZfPVdÈ]ÓÚÊ®}v’<ß&4ø$¬@ÆÙæZˆ»ÈúŸÜñÙÜÚB%Wå&‹Ï&ƒ<Ù{½½W>:÷‰CVÖü†÷{5{!½ékF;*c“’"ÂÃYBU…¯\ ½ËY4œFmÜ Êªú,ûÌ‘ÄúRéô ·x!üÓÒV>n91 \Š0À瑨+™™Ê»VŠI]_Ø/ ËݲÎB­Ðá ÈÄ”y4œÒ/›í{ׯdiUÈ70À $À˜t·ÞFì²¶w çåœô+W620Ú!¨¬ÎÎG‡:‹7to=ÓÞº•wïyyµC‡Öž—¯ßM¡àoÞ<èºgxøª®ÞúÔ[5w*ëžyòpJñ<´è}¹§en\ÝÁAúm·c÷Hù‹’øcïO¡(ë%¥¢9 ßDHá°X$¥*Ôèjöå‘g9•­­œhn¿œóž#xNĉ³>A…<ÍÍÍlÜÜ«$$²ŒÆ:jk™–-[vý…L¹Á…Ë­W¯Êêîa4ly Þ@Ãóë¶0R9¼&í¸Òÿe Œ–/äK^K›ö¦(ÚÇ— ŸJJZ•¤¼/CGü מÁŠŽØäädЙ'ÊR}Y´´´¦§§Å.ù¥ŠËX‰‰‹« >º¾À}+úôéÓŒbXbƵ µ~„už«ŽŽŽ½Ë¹èûUUPë#k\vev³«1 ® B 23ó7ÔRÅ{vr”-¢Z]Ss¹nñáö³^Oçµ­©ìްß+V×Ҫܖr¤é¢b 2º õJbâ33>^1ßYæË;vûýZ„åÇáycÕоÐê>ÑB)qñc‰‰›´µµ/¤¥1lÚ´‰feåÚQyï^OOÏ…PôÀ¡‡Î㙤~kûãkŒsV44D–Þpòg ©æ¼íõäe¢¢"Ü=fbÂÕ×××Xìjååõù#ÿû”£3«<<®¿Wœ{õ©µ7o¢A¶Î¸{÷n$h°}—³3ªðΕ+Ìú™ÁŪ¦t­âQ h QF!çÏó¯PdEœPß‚@00È>ÝAÐô‡§{á5Ê®®®çä Ƽí*eº0qÛ¡íÆ1Ÿæ>­_¼(ŒˆTD£Ù/_¾]ÈÉÖNd£bÕWo’¾à·0ßøôi@b¢q”mYªë“Æ1å–€u òÞ—ž Øøù£ã%ŒïÝ»·Ô{|jJÍÀ`#BpÛ6&ó7¸¯®”_Í>?§¢&ûY–qNß© œ :¿ë«æ™k~[X0S£'dþþZ‚Õãó¹Á?÷$ =)§JC™™™’¢¢ÁIgÎܼã3å÷¶<¶³³3¡P„µ´µix<¾áٳűþ.»ú“[ßóŸI#Í™<õPFÞ—5Og’Û·ï±JOOZlÞü]åý/p­mŸߘÕÍš_ÉÎ-ˆDqrpTÏ|©íìê*vºÿø±Õ¾ËÚ6Sýmå~JžkÊægÍÊ[mfzÚëUooŇÛoÙX>ƒëj,>1UÚØ\@&“O+øà8ÒãââB\9—–_Xè8ÕZÉOÑ“ïE‰{DGá ®­íã™ädxÈ€F£ÝmiáÈ£?¼ª·¯%V>‹MÓ²+¦N——,Z.)== ãÒhÿ[S6ëw."áif ñ¦Øá$|÷AÐWhiiǶæ{r‰±Iùx•-Ï箚¶q±YêÜqºØiV%-?¿Ícã{“vƒœœ\颿¿ÿçÁÁØÙùyooošh¹²Ùð@iªÛäY6 å½îÁQ¨õÜ» ‹u‚°Ra ^ò wn£1S5] ¤çZŒ&*™O¯ããs4Ñݤ¡¡aäå}½7 ҽͨdÓÖL¢oÏ÷·…1釨 —Þ}kboýÒS)V !Ëû!»wûSË…±º9®Ë# Œx¶¶Ë4za‡Ì¼o™õÊ ”‘4A"»Ýô7mvVåØÂ÷ºªk ç7Av\ˆwY}}%º0Pd9ä3굎5ßž‚>ß™Ž#à¹eõà…ª'I®w+ƒ“RYn¼ç³Ã£ýå¡E b“´‚É lOuŒ†Ë?wwµ†÷ª‰]Dº÷jéù=|*NHU“”–†æþûûû?|øP;×í¾¿¡â `lhW— ¿Hc$¢ªÏ,î6µ·¿«PÞÚÜôÇA‹‘‘†2>?ßâz÷þ6ÈT†ß¿&=pe–Š kuå»O³LtõSú—©;Ïì8—sŠŠŠìúت[Ì\AD‘'e0/^´¨·‰{š’bîñô…Ä‹;´WÅ‚ü”ù͹#f «««ÓC¡EMMmí@bj:Ãͧ$}ýêUñ™çR<œ{­Q²Ú£c{-íkò&V‘¥Ä»âñúÀÉÉ)w÷²÷áíd^«ÍÂ^¥b{.*25¤wœÞá~n5»´¬2ÀuõêÕP¶äkJ©Yy óä¡*Z3ì“ ºOôO§!!oÑþOý~“¥>†‚ráô,ÀÓ]$@vsÅ}xyœÏqZóa HŽýh®Û ©÷÷9 ÇíÙÙC¬XžÛ¶ókOÕ3ˆF¯_{HÇÆ†9ÓÖŒš±[º¸»^ITâ ÌVÙF’Ó[#³wc/ƒôCQfvöûæZƒ×ºD¡aœÛü"°÷}P“œòN½5@ ãc+úƒ×»Ï@׈¦/eea5>Ä8ÜÛ”H¶-2Wü.öârÇ«a¢ûkk{é¬À*ÍæÄÎ@2c±³Ï…×=P|•¬âŠRY‰Ú™†5DÿM*Iü+”°–ÅU˜“Lù¾^7˨WUÿ5–‘©Šž²UÁ*A‰kòùU&¦ä+eš‡œrššÄä^+Jñø4ŠDT%?…”1)“ÊjjjÂÚê×ëššHž/£ÿ&îñÄòýÃ{ʪ١˜M~€w­é>YK-}HÍÍ=#Pá‹’qpm$·<÷öü‡jއ{ÎÆHäª^Œà) ÊÞvo]cÈŒ[žÔs5uu6û 3 ‹j{òwr$ÝÙÙâ4QPÙ` ‹Ë!Ãc‰ƒ;:œª[psÈ}vÎt¦×¬¢*ž”ühÌþðáÃÚþþË*27®kHÇÿû]DóÙyüìYÀmáÝ×’Þp’Ob/»H0âñ”YËÊ^¨¬¬442B%%%---… Ä’ááGGG—|J§i.ŽûRÕÀ2E™æ5©ûê„dÔàÞÎŒžþ"HsA!!â )L_g}<›žhhjš~Ê/hÅç,­¯}zX™È×Þlú×ÞÞÀ²2¾/ñ𓳕27Þûcâ­ñõý>;[×Ò‚ÙØØ8´õÚ¿ì =ÚðZ…îÒ¥K†ffA©ò1É¥¥ ÖAŒá_‚áaÝ}l`ü)©¨àŸÂª<¼­áŠñ¢h5°·»ËfiiùìñãÚÈÈÈçññ¤ÙG h~ýoš#ÈßÈÅmÕÇZl?)e3x SKTô æ… p~~þ!@[Mgdc{BMCÃNLL< â㢦ÂZUEÂc½ÜŒŒ¡ýƒƒM^;¬. ZäLôùdžžž.kS²ÏËH¯N³ø²Ùé§ ”¦Ög@ÁTA·Úáð°°Ü«&ÛË£36£eŽ›‹ƒ1ƒÏ¾ r*×äWJ]€Fœ÷r« œÃŠrU´µ?¡ž=ûB‚0<ðqRÒþ––ÁC^ Ë ÷MµQà/A·8gbäTUß6Q•ÍñÃ5¼=A§:»º¦ŠŠï2Ó‘`Q©¦{;ûoQÛ]A¢æF~z Rúáþ6‡šõEÏãÃío=ôù Íí$¹¸Ÿ8Ó>³ssK98°» PS§*Å64H,Í€Œu‚͆¿~ôØZ¸›2úúõk¢}®"k©MÚÂÆÆ I„< êˆB?c¶¸¸ÄŸnKÄi" @”:Ï?ÒþÖ’—§okm ¼ö1ÏÔÒ¶­­í jj .®ë€nåu6,wáÂ…Å’Ñ·U£Ò²²‹®ÓŸ_h½1¾õ$.îR¦š6¢fhH·Ìš±²ºzOzb`br²Ì`“F;y‰:”s׿2sÅdQG¼½p‡Û¬©³mb¨Øk×/ä°iL@I¸öøÝV`óÃ3$Y¹¸ÑɽüžPI'PÛWí-€26Ÿ_˜Hþùóg»•1Qè•AÛÁbk­ ¦ó8d¡«“Í<}5oßr„††–º0jÜ*<«Bùn ˜Ñ×ü×Ôf‹˜b ³ Ê]¦„ýýß^ø·‚¾¶$Œªà&NNFñšèêÕ(¼üÙ[üÌ\\\RRï?}šS¬ÀH•A3 E× ¯¤ðýõ£Ñ?5E˜lû¿ùŸX)êï­ÿà‚tp„žPç5;9ÿßµþ''ëß®ÿÀÍöïý_þ‡ö ¸-®vWY 1LY]LAVFÉÄ¢É!ÎÂ"¡&Ó’QST€±1³ÂÔà6ŽæÐ[ p+I%Jد;Õ»rœlR¯¦ÂâµÅUþqÈäôKMfc'ch‰“ºY[Ù8 ýE3l|||§µOÊ"áÆàÃé‡Ae™öÎæ.B”â¶6NH'&5w;$% qúMèd7ÒÓÊ3¸ƒ#ÒIH]MЉ—’å¯ÑbRe·µ¶ƒ;™YýÚŽ¬¤ߟuN÷Ã0EÚ àN¶¿”“°usç’x™ÙXOj8™;Y!…ÿt/ØÉ qºÆ>8ïwp‡ÑþY€&ª,Ëÿs1Ž¿uBf3´A)Li‚t@Ú ‚,§w¸(henc 3s@š€~Ã™ŽŽ”0¤•¥£“»ÒÑ ‰t¢„9 ýP Tñô”_¯XÀ]à§g)aŽ!J {g¤ƒ;³…#¥° Ëé•®¢±»#òt¹ÿ¿­ý‹¼6p'$òÿªÈHGsäAäÂ@ëJý×kÿK5…/Â`7hmÎÖÀŒè˜¡wºÜi¡5ÅT NÀ1Ò œ”q5·1¶u¥c¶²…ÓžöPinjæ®ÿµjOMòŸS- Ò-Ë'3²5vÆæ.'Ã8ÙÚQ01ÁŒma6¶N°Ó}ó`NfæŽ0Pˆfî‡' BÃŒÜa?nMcbúµÈ\á ‹?;A}ƒ!VVŽvp„¹©%+åÉw;¸±ñï@=‚N§Ò€h:Ð+N:Îãâ¶s8Ñ¡ “ñÉ-ìl-€ÑÁ­ÌMm(ÿÑ “ÒTbeæBZŸÖ‚ý!Úz'û?þË. µDCÅÆÍ* úbó[ƒ§/N ³3s1óa—OoÌî|"8‹“1Ô9'‡Óºg9ÑtpRðDûHc4BH˜ÜÁéT¹ÐéÓ€tªûß#ÑI¡_: ŒÔÁÖ• hzóò4^œê&èlõËYh÷À%+saAø»†ˆt;]çGø¤ÃŠps›S(ÃM‘?º)È? â_µaÊ9þÖ† Ò êÁŸÍ8þ3íÀm€=Bõ~kK8ðiCª'«9;ü½Ö~váìâ*èô­Ÿlø[Ë'[DÿeS‚,ÎV§úsdW9ûo*gÿuþ×’œöQÔúgtejek·ú½éÓsÿLN?Nì „ß=ÛÑÜÉúùGÍ™~0ØÏ«ž¢ü[1A‘ó§Nþö<Ó,ëø§n~-âènƒøãÆ'_„ÿ„ß<íoÆÑÎÊÜÉîðG `²¶õ`rvD:09"­€÷òÛØÚ (a?îúWc2ƒÛÿìЯŠú‡ÿ?†ýŸÛãÐÒyB@ î¢zO{ó?Aã7oÞ¤ðþ=þÿìhû§Ú(œþ!ýiùs~*ÎÙÚ7¨ðOƒ¡‚b²FB! è^êçî=™ü­>kü$ÐÿÍmœûÇ jõ/Œî´å?¬î§Ïþi¿Ý hÛÈÊa LakŒ¦‚Þct6FÂh¬œ@”CZQþtŽ_^DýEÑ޶Έ«š ÿ-2ûµ0³¤SÐ<ËÉ-N“êIþá~9 ðÒC#ûCZc$´I<Ћ;ÌÔng3±ýc±¶?oÌÿSY¿·ö×Ã@Bo¨ƒ[›[›žâ–ÿh^¾öI 3²u2$gàÖp;`?—‹cÿU)ap+‡Tû)´½ÜÜü÷ªAFû÷ @v Üæh‡üɸçi% lö0Œ§ã;±Á? ýF*N.¨‚®ÕÉázýÙ€ò€îØÙyYÙ¸¹ÙØÙNÐèé.x¿ë¿6Ôjˆ:\G3[WG˜«™9 4ð¸‚úiåÃÒîÏo?ù€A%ÿ,à·Ÿþe3µÿ‹–pRóTæ_³‡?ê"~7…_¶6üñù7F€øFÀsb\¼Ï. Úý’xÿ£z +Ò¶ £‚Á™òä4 Š0[“?Ç—ù43Ûý‰›O‡ò46#V' ä_â0€¼`0FØBÛˆ¾›±ÿ,cê`ël÷Ó’Ûßc>tß‹¿~3váÄzŠW¹!¨aî„´æ‡V_åfçƒór"M8<\Fllìœ|¬lœ¼pNnÞ"ýQKÔRÀÒ3í`$!lO sùñõ”|ü±á63ˆxC#ýÏÜ ’¸£ š€ÑÓÿê'ø‚¨ü~o#[''[kЊý?à¿Áad1†ÑJ+kœ~F¶ŽæNî0—“#$Ý_+Ê °;4yð¯«JõgUÊ߆ô×ÞíòðsP‘Nps`#§ÐàÇ—S¸÷ŸØƒÄI!À($þ\¨âdøÿÓP³7Ç !--ΓòêÕ­¾‘în´T•à•; ‰[™jKÃAÁÁgPЧ´o â£ÐÓÓ_&%ź}ûvP£QåÁZK©Ý8*ÊXO®+0>~8(¡ùHÄЮ„”Ô\ÛWÄ9tth½%{{{þuV5KWWl2AZÁÎׯ_¿ÊÎÆD"‘A¡¡::Ä(¯ .ƒbß8yÃ)šÂS3°÷ Ív»kHÚh¹ÊíA^÷µ×ú‰••‚•«MÄ2ŠŠ’ŠŠX‡ªI¹ååDä¾l. }÷rráûí)ÒwttBBC/½NOO).ƃv-X¾zöDfo…ŽŽãÂܦܬ¬ûùù,(¯*+IDEE©|ȼI-pqq)ÓG»­·òÜÑÖκúüˆì,ŠÏÎ8z†½ÕÀ» @¿(†=@’®ÞÞÉÚ{g¡÷–kŽÃãâHΡ¡QÀ`(Ðê;îë4ì…žÛ6}ƒƒÄ$Í—Íj4‡ ýo¡ÇÐ^«Ð ]&'Ïï½IAq¦3MñM}8©€ÝÒ_’õáÞfÁÛ·õoÛ„C¶¶\àžp8E±õàùLµ‹™j¬‹“ ¾bnFËÜxÿb¿!øê‡ë¦[cÏ aîßGÔ:Ü£§¥õKò“ ¼Åæ<×%Ú{ !::zŽV¡¯qdbbÄâ` bmêããÆ}o˜>{³7QjÁ ®®·‰ zóô´ª<¸*«ªÂÂA…sú”ÌKÏ4²ýcccíj–÷_«dÚ ÖןíÍ7À_ i4Bñ“¹ÑÑŸžš*i;T½•j Ì·££cìÛ7ÿ '…—œâãã¿/-5=¼pUjCzOÉ{ë ŠI[B.9y"…P@v6¡øØÌ¬H˜ãw+Ï…ÂæZ‚))Tbââö;+ãzð­—Ÿ¦ *ÊËÅr5Ä¡g _¾|¹±ÇÉÍmÔJˆâ··çQZZŠaÝDs/ĹI=»›«ØVVöÂS9jh%;>ÇiŒ}55µ±Ìô¢Õuh'<]º¡ˆàà:ßCóδ3(Ðârii49ÚEÊ›—¸ ™™™Ý–«¶Ä…‡c¿{÷îÖ+¢ÙÝS£000nihàé{ov‹†ñu|šB~îH•’ÞÔ$eÆIì§JxvvÖÌ̬¶;[³Ð÷؇ñîãZ{q1±ÇOžœ)ÒÆ*ÒfÈÏÏ~¡…@4ø¾¾~|a!tgÜÀÜœY—wbfõÕL‚'¶\ꢰó1,MG‡ûÎ#g3Ž6r?FR+gª}5ã,uY$Ao¥ßÀ-ÀuÔ||Üm±¨×îèÀýit4!éÌç<¤ë¦8öŠ,ÛGF°ýÅÎܼyÓj¤’P]]ßû‹A¸¦¾;šëÒ¨Œ 0 ž±RàªàÐâ}~žË׆FmW'+7$‰ ݲ¶¶ö—JURÂvpppjJñ­^q⋜¹£¦öÚQ„›¯¬¬LFFæˆ :á’’ exì­æBÛÎî/×àø‹ÝËËc†œIX˜,])^ÌÒ’¡'OSGGga¨ìjffæÊúz=° ¦þÛÄ/Q|„U ‡uÌîÞ%4ùüüj ÑãçÏi+×°±±É6´z8µ§ë*öcvˆÊ†§ ÎÎ\íž=ÓíMiþ¨Ç(î#Ü ÆGˆ„”—˜8$FßãÂÕ›J XÄ·öYB*NË´ˆ\}ËŒÀ ¤£]xHü#á´ãD? aÒ:OÑ”*Z<ë¯Gù¤¶§§ç»«íåÎ 1é— ÓÃŒìbwÂ%7Ë•6ÒO¿­iÔò¬ÞÌbÀvQÅMÜVèŠrßž_Z†RÙ¯Yç¿õòWƒÖ·½"haÓ£"tŽë&èssyT°Zñt³ïº9Ú›˜šÍÑ‚)¾·B‰L¿¨‰æVg–Tef¾iÂl¸æÂ‘‚ }!)Ù˜»øüŒÛ‡oëŒ*8m´ &xxx~KKd)‹”¸cãM ýW05o^¬xÑÇG˜px¡UIé.Ë#Óñ¬ x‰_FÆnA!›WFE…'E̾N)¥ð>¦[̉##úU‹ÜÜ”;»²lÖ/C®gMàø£&xu-¶ë}êë º|kTN}5ð½ Å“'÷<æ·Fô¥ly´/û‹é»‰òtú‚‡ ¥åJ*’I:^ËNšµ3†®/SD„^zgtrZYB¶dÏfŠõŒ%ñíÑŽ¼ä²åà!‡§Ì+^¾~2Êjå>¦ííØm"Çä(ïž·a>ÇÀÂ"­©SÔâ—˜x¶úxä ¢¹øUiißÀ7èïéÏ/z˜ë)K/xjj⃴@£gÖÍïåí]h¢X nYšŸ”׊Caô-8ëuUWO/W¯© ©Û"Wï¾äßbå¾Ö†>ߺɩk[0¼\=Tw ph7Ù„es‹ Õ8hbÂhg1Tj¿²¶&æã#Œrëäil·‰ ºU׫ªª>´¶úƒÜØAŽãëëëµû-†òs,ÎdS”¨L½iÞKPz,içê*}ç.´¼ p;hµ»ôÛ‰dv™SpK+*ê»»¯b“²×ß!@Ü|ôè‘–£ãú«ýв²Â…«´v³¾ºè/@>ùÚ³]0Û …¦µõõR)p†¹Ö×Ö®ìÉܸRlÞIÓÓ×÷!œLè™ï}¼ý3&&áãÇgOŸ6$¸Oj¨ªÖçé–½Ƭ÷ioÅ¥z‡rþûwhePÄ—/_ÄùHBÙš˜õ+?€Þ©C©ŒÉk.T@ãvc(û îܵµe±´´¼:°ðup0Ö{±„ßg{ØU,qÔg?¬¨¤ä-08 ´·,(êêˆÏª¥­ˆ€‡üà¶ff†¡l=¶7L&D(¯ëIVv6›÷žÓCÿñ‘#Ö¾ejŸóÜÞÆ ?8<>,ö@&£ñ÷þ;cp6¶¶·¶Î£p1¯û˜Ë²'猥“£ãY””QÝ[NíwØÅ²»)oÞD·("bcc ãê³ÝÛ˜`ìþ—â¬,úq…KW®\QÖÖ~ôù³BÕ!è=æØHw ·o’…¥%zΓ¢‹¸ÄÜVµãõíCC¡ÓÓ&NNNßß–;/·È]¿ˆ-™ùÖ´-¹¬ŒPRR2("o¸Ôþlqqq©ã öÖBÿY3KËNÏÊÒR^ÚkuËМeºÌy6rn|À¤“'œ{Yõê•_ëK®€™ ËgærZ ìÛY¼«§G:?; —Kt÷ôäˆ€àƒœœÜC®@rŸººº}]™ª/äRÊ☴ üØÒ*¶–Œ\—Œ Ÿ»»»ª¦+±IKK'Ö‘wßÚFPÂ%ÀcpWOW÷99¹B‚`ÿ@*ÓÞ†ùçxü¥¥%hÉR|Œ”[^nÎç× –º† ¡¯™r(@«ä&)ßÊî`‚РסlhFm NÉÇGŒgecCâÖ-”#6¥rõz2Þw«}9˜¹e [Vû‹ß=Ñnµ¨°£Âú&h•Ü©)ãEvÆ€XŽ 5z€ƒŠZ4âââ­¦k[of<ôܸ@?ŽþK,Þi.œîùÌôÿ`kèÿ|ÿg ;¤©ÂÖÊÊÀàä …ÿòBàÿ€ÿs±r°ÿÂÿyNø?׿ùÿÿ+þ¯~|OøÂûð‹Åÿ/´ýàÿñ: ª:DÍÇþ÷¯`ÁÜ’Dª|ïdÝ3 ¥¡¬“I¸šr&úy†á +çY.´£ç³‰U¢x\»†ÊņøqCŸU´í#¡Â5ìúÆâGÒ!ýZòò5îcZt©Uå˜y£W-‡m}t÷;жK¨(Q¥8}TLY¯«Ö¦²ûÉ#ý¼ŒA„@¼3¨®N”nm•èèèˆ×~✑‘‘DÄ"» 1‘ò;{^a]äääd gETAt7~P}_K®ú£5”˜O(Ó*wã.k%7øE¨·Ë¼´¢•Õm!)*z†’Š*I™¶ÀvTØkoã£y<1 ŒŸŸÈqús]‘e/É!•ëä¸õ …„š›€ùв°¸ösãR°°à\¸põ…B‘jÃ)å»weSœ*¾VÂ’Ój·ÛÛÛV'$›PÞ9Î(Í-/§ú$w ËY›;nÜåë²þÜâbjdä•—\–Ï:Ù+†•@Œ|úø1ÈìæC»ØwîÞåo {@‘š¥Fï±µð"E´«ÛÓ~þÖù÷‚‚Σ£ë5`™N±Wéß–8{ö,s HÄP¸xx"zŸ QwOä÷R13i×/¶"ä"®'84ôÊÎnÙ(I˜ÃÙ‰õTTTÝgBîkç²5r߯N6çWÞ(T˜P&iìîäœœÏæñ…Ì÷¬¸‰QjÍ8Ëixš|Å—“—¿sçν@r%VËb7F.&&¬ý­EqhëÇÑÑþÛË£óo)(( jsN´öcÔÍ›ï† 9L`€( ¡¡}øüÙ‰OîÓ‡³ï%"2MÞ¾üÃl¤Òýž 寅Z$-ÒMD#Õ^»ìþþþw¬¬‡+\mÅšÇ53ÕÔ´´x—âDšWú¯vû§ªù¬¶¡0GŸÑ¥?[z2Öc'fU»Èd&5Ù*˜vY$Ë)>në©¢Åß΢Ø+yZÇ:”‘\ô¿/kÕO>Ê|£~ëc8qöñYJÃØ¥ÛÑ÷¨"7ÚÒçŽûÔ¹?,÷Udî ?éǺ-˜?û%^bq‘§•¡ïîÀ@x“/<8Gtƒà¨]>_ñÓS Q•ÌEo”þšwÈsïæËSåen܈pugÄkmâ©[l‘¡ÙLùøhÔw½?PÏ«ïÞ¨ïõ¯Ç=ôêÚɰ]=5¾~Vïr÷[¾æŽmz5H°g2mWÄIÏ’…—Èú`<–°Èo¿Ÿ7ú™`ÓýŒ^+yûzÇÄfeƒØ•ÌãÃU¡ƒƒáÑâ­˜–¯{´SŸx -po†£[?|Vã9™–ÝJVßëº8¢‰çÄ[õøÉNiüBrLA„¶÷3j€Þ†¯¹Çe£×Χ=¬\Â'^Ï.¢øìÉ  Àf»\¯˜R^ìhSQ”üUï;÷æ«JO¶ P½VUó³ÐÒ}ÜEtqôº>ûôS¹áøMM˜I&J4¥ÆÌŒ}ÑõÛ·o¼Þ{œÀIqÉÈ–ÔÎiêè„PË?ƒÑÒb]b;êò(¥sö2)iXs¹ÀžùÓûðìîGTÒáЋâIII}Už<ŸMÖŸÛëÞYg¿ãS½öü ¤’£òÚù}ÕÑ¡‚z ðÚ¨zåN3Ý´’”¿†“ |0ãìhåÑ»ø°7OOþúõëØñ˜Ô­Ó¥ãâŠÞðââæîèH•—ÍÕˆ jÆÊsVSyÕjKeí+/‚27;K‘Ì"YC5˜è¾:váþ-—Šø¹¹9ÝGýDÄÄñKÔé¯;»¸ððLJ«ÑwgØ)»ŠŒÀ%!¹4&ß¾üaË8Êö¨oDB£~eõ—dɸzÌ€|ƒš¥ï½ó›Ìm¹J‰ÂÃw ²É5½Qh’ó„dë½?ffyùË­ÓùÏŒ/Þ¿¥¨¨Èi=ÀÙ1ëŽÐM[[›dqiÉÆãè`ܘՙþ¨¼¼Ó玽£¥…ò}~Þ±¢ºâþø»wœS33)¹¹Xm‰"ÍåÎóÊjjœ…ÆM) \F¡]kkqpÒ32héR°ˆ¹¿¾A¶Tï•=A«‡|ØÑ‘Ž’ò¾˜˜­P¼‡§§tØd½Ïäm¯0¼†þĶtv¿¶t‡ê‹ >ÿê¯+2k¾ø|ÊÕ¾<ß…Ã$¼±Å»ü„¿û«B9­&l/Û8BýŒ*ŸÿgOÛyØeë"¼Ùž"í¶>uCX˜¤|Ç‹prÖ'((¨öS4˲0{ùë—/íÄ_-¼€qeC»¿’G’9¦Þbs³s’,“; h­òz¯†ôâb<é²Í9nï‰ç¿ Ä‘œ#¶/øùµMÿu³ÄÀ]z.…×ÝÛ·$¼½…ØÙÙ àõç¯]¿74D©ýº¹ M+ž”£S‚mÚ–àßht¯ÕD\Vö„çsuJ’óòl:HT*]$SÚÇú ýV¼ŽÓ—l†ËýCC/™q}ßôÐ-µ;s6Ð7-SãBÿÛö®®‡ë3mâ4QŠ•ÏdÅ*]¶4³»µ Ï<•£cˆè2Á[JJØÓ_â1SU‚ï€ÖÊçâ₦%v×q ƒsrmSçØô‰3Ac®¤W¯>p]9ƒ2RíÒÕ¥–î ލD8y ÚØFIþ$W¦T naa!JÀ#‹úúú3(ããã@ÖPqm__š«Øä¡šùú¢™j¨(ú5>‹¹jBM–¾ööl—Ο´_â»qóæY€×ïhh|ù¢Téµ{‡¬!^ÀµZQ¿ÞŒ3ùíÛÎoš¼ óúž>½--oÅØœë–‘—?˪fèùíÓucSÓz£BÃݵo>}4àœè-h}$h~—“›ÛƒA/b% ªsT[{+£ÛüOÎÀ-Áß– „‚ò ÎïëWåü©9:—ãž À¿=¯MBË13K¹ºò€.}úô©À¨ñâvãï*üücbAèØëÉ7ç,¶®ÿü‚šP¦@qãÆ¹Á[|u“ êý憆±¥á %ïýíåD»¸W¯`$üN29ï*/&î!~·ä†úk9«ýtNü¤o›}´®âŽ¿DMtóï¸ö F,í´Ô‡3f¯•Œ­.Ÿ¹B5pq ËZåÿù÷¿ÿŸýûïÉcôV¶¦ne ·û¿ÏÿX¹¹¸áÜ'ü“çßüïäýoè±|艶? ád›>–¿ýþ·¯Kœ〞‘?}Ìøÿ …¿û8?ÇÏçÒnüGÃü×Þí€nößëàãeäãbdçdgdãà>y¤ÿ?—…÷¯eq@::[9ý«âœÖú ‰¸xÙ ‘xعþéô-ƒÿÉùñ“_•Ì]àNHq[äïÓAÿäÓ_ÿ•ç¿Øx8¹þíÿÿÿàHch“g8‚‹“Ϙ‡ÉÉÁgí̉D 9¹þ!ÿ÷帙±ÁÿÅM ÿ¾ÿsƒ/¿æ®“õ_Xÿ½ÿãÿ£ùß³5à¸ïdþ—jWíÊßÙÿqaØUK­w‹ge5U嵜«òe#I«WÉM×tB©û¶®EyF%ÊzE=oà¼ê)®hU8E“!Ëi$zëŽòµ×®“dmU·ö›¥j“8¢7ÝÉÈêøñõð霷Ûú±õØÃËbàg/!RúÖÉ1øõ˜ºæKdÿÉqBø›³°‡·ääåë¥É½Ï%)g,(ËÜ„[Z†žL/p *÷50KèªX×ðlg:›ç–U(!‡TÒc% `¦¯"nƒR¹qIÏ Ä‚šúÞ™G½‡Åß’‘ÁÞ_à@Š‚6k$³ýcqþöø±’ùB_a«K„7¼¾>Yõît¬IŒ¥uÓ]ýëá‰'E# ÄdÒ·{tléνHSŠ˜@îz CÏï|~É…™_sÄIH®¼NsÆ”)\èAÚ¯¦b.wÌæjŠõS|PÓÖU]üwD¬O·îìÎ$&åçGûìˆîy¨©] ¸DHÁzªÛ…z"]>¼d¨%†¥~t”¼3M±>Bä(èåK"Œs¨ ýoÑ;Óo7ÎošÂ/Ö!aØž,ùœÛš’­«§GΠÆiö ´JžygÚø{ÌŽãüÌ̺pR•&b[æP¾Bº…¥åøò2ŠÛdÏ㨨Ω7(— ƒa~ÐòíýçÏ—²5󥜜8Q^½~}nooïkgçY”¡_rœÚ–šK¾¾¾ºe©#«-¢ÙDŽ®†à1½-Uàµë0TjŸÒ8£ÕÃgMÿŒTÀelж&:Ï@]Ý_6І‚ vZÌ\~Gä6< DÂ%% ·Ÿ¯Üœ¸ŒqZòyÄk½ÿ ÅÉÀØ]GíîúL!²ZùíÂ… вeJñüþ¥¥¼`DÏBûQ’û¬¾÷0ýW7“èÌRX˜ì¦RÜãê­•qq>‡sЊø.Ë#L‡Çˆæp >>B@ô›‹­ÇÅ…N6GÈ÷n‘Èn ”•zhホŦ††ÚáaR”˸¸÷p©¤d +Ý9tuuívìï¾97XlíJòÆHÈu‰D)Ž÷žz¶ÆxCðÕ“Íí{óÔ«««Kí'Ï?£8Ù°²àÍ›û!!!º¦ÆÆ†3_â¡'× ­)]—õg”ƒ£4åbb ™Õ‰ÉÉBD3¶×j#>´ceU .dÑíºO®ˆÉœïÍŒ'‹‹[ù"°<6PdYê¶J9â³oÝ70ð¾©é|¶F®¼ŠË²§Kgyí[KG/£ŠÐÎÞ^re¥îÞ±fžnÝÞæ<ðPè1 ƒš#ÿg}Ï-‘H4P ˜ÞÁÑþr_…+ ***JP”­­í¬K±Íð£Íù^h™l Z†ìò»…G äЛUëóçÏ¡-ïÜŽ·•b¥B«æ··‹*(\B±oYú©¼Ö÷ø’vc®SII ÒÙÒPÕ°Á­[(Má¤!yz=!“À–¡UärrrƦ§n‹^«òܶYµ‡üUÂ{–VE ãWqqqÇ2) ‰24CZPXøäÈwx™X‡EDÄ`ï-´™¤LOðýû÷ñ‹u\«z=¼6:oÛ9;7042º?7g:¼ñ½]¼\W]ý:·õÀÃG.öõ÷W€î­¹ n€ˆ5â€åk#‡˜yW¨õîÝ;V ³‡ï?~¼àº<Ò€Eü:æÛ78ð¶Í­¤ìlÌ&”‚Ì=œÛ’bcuB"îABÏ…(ƒac`Àüòå Š_hè%--­[7®P= ø¥ßNä®HÈÌÌÜ( ÍøâÅݪESÓ^üÔ–€À@`¿¤}¥öT‚BB©óÐjw--Ù#.ЗÝÙšÐ:Î^ÂÇþ65oŒŠÞ½“022ª²NýúC¨*ÞÝ™weZ@¸­±<õuugÈÈÈXyxbªM,,-Wï+½ü ¡¦öêÕ«[Dáá <ªªªSÓÓrQ“®Ë ÷ÏÝB"üO:\¢¸ÌYhP•çy …8^\è±.È­¢£ýãâH^Lê•X|þ¬ð:-m¢™Ü·áá…«/‡{9xï»›šR^WÌ/Ñ—””|ÛÂÞíÑ =ÊÊÍ-%%°1|†€ÏÁ¸ÊûÙÓ§·ttˆ‹ŠŠx½vXQ^½yóæ#/PV8“N1ŒýJ[‚8ˆ^À@Ve?ð§·6NÌÎ^HR2ðÙ•,¯„î ý-ÚÖQHˆ”Ü{×g‘çÅþÑ|~ÍëÑr2h+[%%쉉‰•É‘â¬,î“_tâqªi uä>AÀ0vvwá[ ý(~kk9zxÃ¥£Ý¾Ek®$ «««ðØL‰\¨žnKŒðÞß‚—;£4D?¢ž#ä8o[½KƒMÊøT 3³¸õÖÒ°Nþ÷«(—HùÕÂîmÎuוּ°@ÉDAhçLè–ËÞ<š¶`™ï—ÔN®Žù¹ŽzkÉ; ¤+6&§¦¢‘““¬·‰¬¬®f–T•9ÎLÔÞ; ¹’……«QƋɂ3cûË5Í–ùUçQžóØ’m-F€hq vÚ´C ÊÉý¼ ì·týÈØæ¸ÔîГ¸qññ©ÃΫ£ÇGšÚÑð¯éu‚ ¡!]hqíOØ’ô7nœKôÞ"ü>ìæƒiÆ @µõ8ÐZž •¦¼z…²¿µX’éSÒgMY¹¹’@ ̺¥~½¾zýã'Ž~V¹Ä8Í=4L¼1ÈŠ*Ý×_eg‡€´Ù®£WÀ²îuPÆÁèñ¡AJ¾§§ç$R›M—DA÷û·…wÏA#çwæìÀUÊDƒ2·¥€ÑŽòèû–BÐ9gOhŒ¯œ~žtz—v—úçñêé±¶¬|6ÃÚzËSÒóPÚ÷.êãŠuiøø^¹ ô…ÎÄ$„ çb3|~<5FØ?/;''ÔÐÔô¢§çjÌ”'&¦¸–€ÔìAAr“ëþ2·Y$Œ(q>~t—Qú"ŽdeÝi™rQQ¾Ï[Šë PPP\ a{õ&2I‡'\·˜åÊÔ3òlZJÀ‘öÅïmÏÕ49¾Ï»~.»ì÷†74ôi§;77Þõëí #˜›àQp¼Å $ô—‘_û¦µâ–Úa¤ 75½?R¥É( pµo@ø¸ÚRS/•Úü»ƒðN‘)‘–.SÂâ£óÉãÇ!Ï‘#\òÄ/‰Î Ô~ø€¢›‡¦«Ç·µ½ÈÜ{E7º£“¼¾­ õÞ­p\‡W)T==Ëï³ý¢š%<“T,ˆÍKþhç϶çÂÔ4o&½Ûðéélg“jKPUVq@+*êgÒN—Ñge]¹%û1¯¹7Už…€¸æÑÄDMíÌL‰©µµøÆ\×lFF”¢¢TÈöͼ<.ESÑYÖÖÜ–‰ÉÅÜÄ^>úŃDÜÜÜ>}ŠÜ%JdièLoüðá²A› þ·J•×éø”T)IvLõ}øðJ?¤°´¨ïòÖVÚ÷Îæû‘0V¯'ã’¶KVÔ—oàÆ¿p¡¬ãÆ”r§ö€”>¨ï¦¦ôŠ.ññž`€­ñ.JºðóØÒPQR^(±MõîÝEšaV«çW¥Bíê‚p™¿÷¶•‹oÅ$PIÛÀXY/¡Þ»ì8}©þS4ÂÑù¶ßyrÒ‘Íô‹¾–6ÑD_áuV®Å‘dïWrÍ£ûé·}­ìã®_çÒ*^`]’73ÚÙ+ç®—i°û&Çè²Pz_ÀUe|¶ŸX>&¼icöARJç^ν[ûú¬úSƒPy½ÄöfÊ»wDÓÓBc‹‹¡Iâ¤ãß¾aààèØñ®™¿°xôè¥S!á„/õ±¦†Ê׎‰Ú•¡Tí!+`2LM..iï8ï?{6GJ¹I2ä&N‚ÂA¯_ Þ ™>Š[{ü´A\NNxÇ‹¥¶£ƒ™ÏÎ…[:Q|,¡™Îè²iȽ§¼öèñÓ§jpŒŒg£A—ÃE,©‚ÚSʾŽ‹_ ÷•D Ñl“,ãͨË{E>f¯¶¯ï•ä¼´´©áHå!PìÅ@ɲ=¦WHƒ[ûz5G¼GGç\>7>¥;«Si£ @ƒzV÷šNZÚ0›íˆ£ÎôYª”g¤ùŒs —xÔTT‚‡†T¦¾EËyŠË]¦¾9“”œ|ÞoGôIQQáçÕ&lìiVN«Ý"ˆ9¡B`l ¼ Ÿ’šúxÔæÓ„°0¾¹9ÚØº?=‘ÅüÛY1S.ËyC¨ê‘φ?|P“L¥ää1x¶T‚‚¸!øä ÀdúJláÙ=h ¨(ˆK±<‰Í#U;SQt6)d÷´} mhOÁåõØ ‘ ÄMS$~ÍÐ €Iew!çkóvâ‚útìÔ²öO8Ù”@ı± ~'_,[âq¡Ð-®pÇÓÒafÙù„6þër>(Z¯bH|øâ£ÁòQQfL¶yrî»Y]SZºÓ¥¼×Ùì1–ýsô%(úúÒ1pn7´Æ—:3~ûÆÅʳ|o¼>~|qñ>ø¨û¦ý‰"Òéx¸ú}iD±þkR¸Vñgôüê¹þ9‰©‰Æ@­²5 šÛd~ä¾^يÃQrçÎu¦Á U$ú çvÏäUVž¿y{¤éèÂmï ÔFŠ´ã ‰ªøË„K½Ýv•öÓ]]^æ1si:a­†f}ꥡHëÄ õ¦ëÙÍ©äò—8(¬Oiʊ휋Ôúß ®®–•ºsàŽɰÂpymу€2¾NqöóG;=¯êË/^H:_™@56¾&…Í.|.]¿Ô…Ýe¡Ruê5ù 4ÒXXOL:â^òþ\¡¡I8¯5s0’AÉ…ékM Ó¥KjùÔ%I••ìCÕñ¡çtkÈ">¦tZÌ ¡'‰…妛§@I&õ!vö‹öc·h•âJý™õÞ±:¦á÷ä‘¢cb¦pÛF±@{ïznéÖ§)ªùÛVL.|˜ÂGYm«=ØEéí>•ô³’Ò9'Ä\8&ˆÏÏ…½/£¢6Õö—-âàhß„÷¿´àúòÅçü½W»“ #fˆqABq_‘¼Õû`‡ÎÑhp;APÒÄe+36öúÞæÛ€ØX®¡aëÚoY&®ßš®á=›œn½aþ$ ô÷;ð—ÖÖóÀHÇ'ë àJ_»Õ•æ7R¤ûûjDΉŠnZ_my¶[;:Z1Œså¡®ðÁ Oœ ;ñ¨¯ñ[SOg™JÒøÔ‰¹nÀ­¾¦†p+Åa˜µ«)¶Þi(KSf‚bmNåëÔë”L¹(³³h2ŠL;<¢Ì¿t[¾Á„Ü¡pªeD(þå#;\1Œ'TÀîH3™·nn,`ݾ=è!™ÑµØT ¼ WSþ–›%±¤ÜV–¶ø:Ш¤Ë ?\–NÅë6 ¥ÑضÏ%WWâ­ñA8B}׋¢'W D)x[šÛ·ëØAÚ dY`yR‚¶#>×®=)Ìεdöñ¢\Úò;d©++oÂÀO‹élÓÚÝÍmŠœ[IMUGyÉü>õ»{õЇf7 õƒ9ë®kj}‘T¹‚C‰û )IXW/÷5ÂQHȺ;­å #°ÉööY¨ff¨É)ר7æMf– _8kkk]zazÝãbyàpE>%ˆÏâüF‹Ú" ÏÇFàû99kßq _<ªŒ1ìÊ·ž}ª¹†D® yÁö²éØLbÌûÁÁ2ñK];Ëié%™§—Jn«grp„À®Ûª;§O;0}-É¿Æ`dÇ’éùå-mÄggýh;®C6$ròÙp8²ëP²ÖÆU›‚wVûZýá4³÷+LÛ¸€²às]÷´ª}¦©<+#7)øtµx Ξ]´õ¼Þ|‘pHíû[eÏÙ‘·—ÅÙ™wú 10Ήù‡aÚ\¤®'M,..ÒC¶ð5‘Щ\r\—RS»ƒB<éFo8‹¹J’Ê%³òtÝïÇÅ9-çÞ;›¨i¼µ±»Àjð8F3 EÚv¬öžråç¡KÙaþ ên}[®Á§¦VçuwHºÂç~³ÆÏ­rífâAxŠ4Uû:±V©ÝkÝ­”:’Œµ„otgR#B©'ÃEð“‹·vyèè¼|/xvJð=6ç’¦R`GÜRÚJJ^ þØPx|¼>ОCx¨®¾^c y~Úd˜í¾š¬¤$ÖÒ°¼´YF©óöx=ã÷ÙÙÚúz<}}¥•Õq£;üèxžQ$$Â$é)†VC××g"Ï¿1ì¹'Ž“Ó;»µ)ú²½WÉøPó;½ˆcœè«^\Ü»l GÙk ¥®.¢Ðá.dú#U˜×T2-‘Êáavk|ÄfggäDó9º‘ ¼Âúq×䛈oR¯*ߥ³aãæ\ O–Õp¶I>dJíûÍ O4´ŸÝ(ˆeE,YÀÐôs+O;Z‚+²Úi–YÏã!H(ßV ѯ‡_†›¦ óøEGínWôUlut\›™ Øœ¿i¸2ÎÂNÝF,«UÉ{Ê~£ÕþcËe ?²  UÄ„£ab×ÖÕ]’g –åñ_Ð.W{oà¤4•Éû±b æ n<}wMþÊdƒDÂ;gDc ˆUœ{´3΀pfNËS"ñrL®inÍ-uÌŽ· „Ç?=ݺʾ|h?Sä2‘/Ï”Dæ5Ø%(Ï»nÏ轨ªŠW7Q@Ê_ f&±Þþ»2/=½+òJåú àB Œ¾GîóùÖeç{L¤'\÷ÀŽŽ>@½%”>rcÉÂÉ ’¾.EâÕÖ*¤ýÊ×—˜Ñ`)û‡à‘‚7¬y­UÅƳ²wQ^¾Ìû¨MQ%øOTÊTŒ“ €ÖTè÷~kÒvBÇqQÖÂŒ¦ÿÐÂP¿9ojRÒˆ*æë ¢ÃÑáZÿðÂ’E{ôÝg?`ûd3$Q0µ¼TŠéíÆ#Ÿ¶¸à÷X7! n5"(>ÞYH˱‹†B–ÍqfIGSŠÓºçs˜sL|ؾ"Q¾GÑ$øC×äÔcoÁÄ44pUT1?{15åe>ž òᬓ¢‰Éðøw3lÀ0ߌRÍ÷ ±}!ª©YdyûËW ?d g@éÜÉé<€ ·œœœ<(äå©.‘˜ð·Èf÷JHPȺ=EzÆã¢ºzˆ€kÇkõ#öö¢læ€Kö•D_/ñ´EJÌDˆ,Õõß|ƼY7T6ò}@}µS†TàÑm¬HÏÍÉ4Z®%'ð˜/Ièê2û¹Ó`9ªÈ‘DNZ\[ËZDpÒ¡nôD ¨C*k©ÝQQëO"#ŒX›^忢é &Ø9DÞhj‹B00Pí‘^“iH‹?BóþóçŒP< ‡Ü$©üe„ÍðÆØ´ “u÷æšÃÜS49DP˜÷£Çy>l ôõ†MÏʦsãs6o@²2¶˜°±*JåÒªÝ'Ãê¾öh|Ù‹4÷Þ5¾¨‘G’ò”¥[ÆçÌ+NœçÃ'}Éà3_ÜÝ7cžâÉ»»cÝ¿¿­¾ @rvë©'ÎèQ ‘sÞ;g//ìµµO((zåfõºynún²1sÕÞ¹œÕ[ç(¾;C]#Á¡¦Ñ3ÑNµ*XAYwŽ þþ߃º¥ÊbÞ‹da‘ÞX¶Í^YJÍJÌ5)iµÔ… [3_øL„&ªã:èŒ~>ƒ——.×t@0 c´ßÉ\Ë5H5Ehú\©'èP”׋—„HLÀ¶Uµýæn€œ¥»Ûv\¿:Y²Ò­ÉXjSÊÒ©SìYZeÑÜõ/)Õ ñèä²/{v‘!KÄŸ€HƒäÕuû%"(ÿ¨©ÑÜDqí‘¡µu(¯¬ngÏc½‘>>*¦IÌ©„ :ïÛýä5ÊïÏñ\"œÈ¸ƒsöÓ§,û9µ.ËÕÞ¿wPˆç¿lÙ»w¯¥HÍBØç|iscN¡e¯`åÖË5mj5ºÝè>²¬Ýι;™þni Ëüý©ÊïÎá\ÑLû")%EÁ¡¶ï'”Í´ÊX+’¤ó ñáe,é,w¼±tœ©(#••a6ÝÎŽoë#[Ùx!T ®ªðJh–†9uË7ð™Æf;ž?wªÿðd‚Ïõ¦ÒBþ“Nkc¤P=KÍPm{ O-«å3üžBtà:ÈÀ€¬,mFƒ#›Q¥ºº!ã““Y Q2L@ìOW’œx€£4ÞÊ81hk**-Í7ÜIÉÅì¶ë`èLÒÂWþkÔõ/3uu¡š³3ʆON8(ŸL>twß{ðàîƒgF˜Ö ÏÎ^ã¼,fSÐ[;t°DÕnF‰>9Y?æì½[ç²grË Ö¨°Øœâò4 ·B, ãpÐÂjÞF¯°ðv¡ë2×9´á™æ®ŸcyHZböß-È~#~Æüý¡(ìÊûïý[I‡®d½œî•F.?ªæBÿÛ[©åæj]c"œ–'I¶Ç ¸rdÔúãHJæâ踸ˆ×¯‘×ïµá£¢02…Í©'¹¸,¡áÇè”0ß¼ Bj4í.õ'ê+l Í3[‹×$$S¡I™þþ6烸s¬èDÊjt6''4š4ïÓc5““|¦ï´°`º©ízSÁ.Ðß?éMýÓì®- 8_aiNÄ0G—Oê[bz&¦nÔ—üâÅOv r@i© çî|ƒ8шbó}4ô±)ãÀ‰¼è³¦?áWÖÉ|ŽãSK ÔÄÂ㥱©Hv¯ £9ß—´¨“v&æ^Ô¥%îï=Š·ûoaP8ƒàsMž}XÙøu©:Ïé¬MÇÅÏôZsh(€aå|ͬáÜm=\å-€†zOy |¡•qfúN!5} îyæ^ºD:TdyÈêSûiØØXŸ'ìÚ£•ù|†ñ1ô…Çú¯æ@¾qcê=è—ÇÆ×æÕÉ3Å­† äƒÌëÉM$äIdxt€+÷B@›–p)Àm(†‚y2e”ì–ÖÈr.°þ^®õíÒÒ 1h2ʾÐ/DžÅ®ì+[ûA ¦X\òTÌM8œš^;é ÍUàM sOiÊóòžuYgÝÐ>€ÑûTù»]Æ7or+ª«óVÖëAXhÅ’ðÔçp“{kSTI‰íà`hå‹ÀU[â߈Gѱ= äsÜzÿ!ƒÁç ï¹+c?ˆH¥~5Ç>O£ÕÇ‚£é…¶óŒuWêÀ_®þ| ÐÆ©g l†ÝˆO²‡@Iync䳉DR=p‘ñ‰Ž%4 Š5‰,³Zhh߂•¤¡Îl·§0I\ÚÚJ;Yá…W–.-§/YËË¢§¥mŽf(/t¾wòÎ;gσ`Óêä0«¡_|Søp4µH €?Cµ@ž±uÿ禑î)N#n©¦ @3ýeÇÓS•D X,•5[°¨t—»¥+0í§>°ƒ‘ÎXxü²ËNwåÃï«84 vš.f¥?²> bºûE]‰>¾…´ô:ÿ…B^¾¥ÎfT½Š9z/€Ty‡r^,O”=€H””‘Ÿ>E'%ersëpdä ÷gYä#œÌäòá ÒAÙ0.¨#šú«~aas4k‘Ï4ü ×Û¸+wí­ïOÕmdñ4Zà¶*êæÎgt|$Iïû6M 0Ù%¬B“V6ݪ½sžÛÌÊ!oÆK fu3vOÒ«yÈHææ»›ÓLám’rrdçPqQjß¿WæÏëëV,.®ö"6áròå§‘=ã«r€lRV™Ë*L‰êÄRÅ;|hiÁ¦ót[”öÚ8ˆ¿çЛ'&e”¾Dáe‰Œ`EѸ; ÐA³…v+†Єf•g¬áÇÈöç<¶¥rê{Ö v+ˆ­UŵڭEGõ¬ DÀ¾"äÞÄ[¹_uœÁÖt‘aêyÑŒÆã ï 6J¿’ÊÔ™¬b#4ìcÌ]‘çÊ\m£”ºU]î B§!MEê2 ’“`gg¿˜”ýàÌÙV£‡˜•Uñ \Q]º¤Vá/ߟ ” Í$€l7Ù‘*MË”PUEasCðR|²–:âb°Ä i¸Â|ec!,U^z2Œç|vk_þñá2öˆ÷¶æÎ¾çdvþˆZ,1³³‚5Èã÷ó«÷0—«xp‰¹T\xsU\uí!IS˜õú1Èò%¼Ëm®Ïmlˆ¡°|¹«Ë爞õðr|]šÊÊ᱑¥aqð#6~Ô=ÙBÉ—€ãŽÍâWtÆJ½³Ù«ƒqéRã[Óh‹á9jsï¡ÒUç}!¥þñw/ËoÖ Ø­Nˆçè{_C4o5. cv­U=jB+Á¦®ÍdaqNFn‚‚ï¶¶ƒ°0º¹9Úe ‰ÍGÖ²WŒ45åyyŸßQQš~DÍÌ›¦ 8 mm®ÎG)ÍiüÞ® ¸_*[E®²^«´–*d!ÀÈiiiÓ—>‡Šßpïl¯ý^¹SûûÏ/ôµ*\â>)íºÖD ¼¿ÀˆMv©žgôóÚš’7âW$…QR†à£'ûúêð¿SËÁðÝ %Þß[è7# &6¬C%Â"‘ õä$Ñ$!O XùÆÍàe7{zš:4Œd·g}•-“Žq‡ãé’òCPJ·†,peEb¨,*Œ\Üg6 5òPº£9ÆõF—‡‘‘r¾÷'˜:%- "Iœ”Í<]ß½ñ¬‹KÚ'ì;©26Óî/Õ}úD!ŒÑQëæ`LJ@ÕéŽöõ†øp¢nâ(»ÈX§Ñ›`Jn¡¡å;«× Þ°k¸È,FžN¿tãWºä’—꾤Éã{z)*¼v¤6ÅGÔ×3bå yvê6>Ìà–óájïLo,õÂîÍo¦âä„òrÁ;Î÷ò‰ºÑS¤6ïì‹K2026wgß^™IĹ|å ú“ øW˜§B‚ È‚âj|OžÐ°IF©~xø<ƒÆŽÑÞFÅð}†Ú,ui»CAl2]!»˜_>tS£‡cgYR1 å¦Ò¹Úþ²0P<`| ™»"_ï¸o›cš;(ȲQÐß‹4P†ã‚ÀÆ”¯­¼ûµ³ó®âº"Óp6{Z€A€Üjtà=T{^Oš:˜Ï¯yc°¥<Ÿ½ö~ú3Žç–®¸®.v¶sÃ@‘¹¥#àÇÆ)ŒÇ¿·#-4ŸËã)Ê SZzÿ<%ȽTÒœ“Ûç*y™ûZ[‰BðÂ’íë¬o$Ø9ñúF»¯xÔiI©kæè…ª”ù{899ɸ¸PgK‡/\ÐVŽGÂú20(‘ãʈ±1-p§÷}}(“Íð÷ç\wvË2­5õÜXòë>F•@€sj&Þqšig©êÒéOrš˜û[B~÷®$ðÌèï½mÚýΊ @ά,¼3gjƦ[o, –\öñ±ù„)þ 5·U3¢ê©§—®º[Xª ¥Gø¨Ü”ÀR^Ëf~ôˆ f Äóš¨Xò/ADxrò"¡R•ÞAîËÁÓD‡+Ê~ ,*bk ›Ýa3Q0ÈZë;÷±´ðQ ±?çù¦²Û¾ø¤r¿ bêc´«ª‹ ©”j”Á-AîýzßúLÕ’Bdȵ壩åå¯Ivjj]_KǰAX¾ópmèÍ#¥›7¦(™™ñƒƒ¶<‹B@ð=ù69æÆ¢%õaLKÑC€Ç¨¥•‚´S¦4ÕÙšV¾ßáÎÓ np¤ÔW䪶6 ÈÉï{KX¼¼õÚkj°¼WŠïÝ‚½¯ò4çõ=:st°.ìV©bî?ý1Êà=0!'ýØÕ)YllrìúwX9¡aJö³“Ò ¼ÃŽ~ú4°dd ðd»µ)9-í,ä\š™@+£Ò%6‡è:%úï=—°¢ž’FêÊ4¡‘óÚ‘ÊʺpˆèzC. ˜2:ZŠ‹Ë€Ÿ4êu#/U F(ÛÆ÷$iiGó{L "–V *·áˆi®¨®¢®bÉ9t‘¦h†Û£T/q¼]"àHcà'0ßÖ€Èt@ P×å´ñ’Ñ¥±¡2³§Ï4´5L}d¯MéRé‹¤Ô ÿ}]Ý¥üˆ÷»TœoB׬lŽT)Úì\ ‹³êŒ2®¬_ùxÓ×°=ùÎÎÁú,Ñ`´ò £R{ªÓ÷ “÷¿=Œ„CÓÀêA!-¢ººÌFˆ·Â&NvàY«`hü}sÚó¯ å.5|!3"Ò™-ಽ·é†qN Pòýå>= +t$@ãðÃBðɓ޽»ø]ÀðÓÓ3n‹\·³Ü†Å"ÅKÐ'—†ÌqmÔËCðÐÞw¾åÁ&Õ~´4¼ ©Úé`)̺nAÝÙµmmX.­½;Æ+«“Vk-aUfº^Êì Oƒ›ž„S…”Cű·çËȽ.Ó|ÕÓcàH ­ïJBB•ùs’ÙÏ´»êï^Àôo-…¥\x³³þßûß7…Ú7AhR§Òy~M’=`û`ו™hwÙ7BÈ`Öå¦èž{Ê%Vƒx¡ïÞ¡¿†î] ìÓïO*Ò¹s p‘¾ÀîQQ}êî/4mC “‹à­÷Hâ’î’oÝLHIyOÞfJ?GÐå5BBÿ™DéR§Y\›Q¥{ÏžáI…;Õ½–%{ÎÛ^5‚…o^U~!ÿµYôñxnëÇM7,=MЪ­UŽãµÇ<¾\ëÙk)—¨¡òMòƒNjÖó ±Üƒ%ûêÇÇfmÇ&#ŽC¤'×ÛÒͧ¿_-YI<Ž éÚ¬..Æ#ÜÑôYvFšàAÌÐ[¥8 ¿¨(>p8Q`PÐ ‰Úþ·óœ&ácåDá˜K½mD#ÇÚbß«öÁGöÒ«V ¾sÙzë«Äaðü‘¬Æ½Ü£Ckíny6..r*i4hF¬°ðŒð¡½Ég…^Þ;œr>ÄY99’wï:Ç6‰Cê[ûÖ ôÀ±×Þ<=VcòÊ£=y·]$½†º4i›°';=~¸X" s›å)M¥jÚ% À„‚Ô„$%S“-5õ€cw.¼ac{áErß¡ >3êÍ=(s¬ú6p({¤š±o›|ô –gP@tfÔbECµÚ­ékî$ixë k´~Rˆù–––uÍ!“Íg¯‘¼˜¸Ž¯ittpVFöc3K cý*žË £ÞöÉsÙb#ìî°}ÇwÄøûg"+ôŒŒÒ66††c}#(SŒŸg$—«§S35F›¦dd ¢Âá´Ö¤[ïüÓMm©¼k8°»¯U¶ô®÷É¿‹ãÛ÷1_übb¢&°C\žôDG©†Þ}ë’’&å§S"lîò9æõ};;;FˆWefîvÌ}8èŸò±‚Ðï}¤nÅ–/×(õÝÈ•£e_×'Ï4PT!Nù‚#°¶óm j²‹ïÑ.J¶é½øxº÷õ"‘îoêAÔ*”hWPЪðÝ´Ûä9özÞó{ oßòº±æè¯¥§¢¡x­·*|ŽÐ5/¤ûtíÆwÔ{·6Þ[’`£CO®—Õ3~¤yç΃o-¾MÐgYÎë¥ü2Ž‚ŽÍØ”ïAÏr ͼ¥tÌÏÏÀn\ìR±mbˆyçy:VíV@­ï ß\´r_»æU]ÐŽª#rL.ä™—T¬¡l«30  `¾w÷ÕXnÅT¾Ð`JàOÐÃ^‚€~QÏÔƒ¡j|xa‰…±.€0Þš¦Øï:0ÊÉgÍOä¢Qœ‹ˆ1XºM.¥þÎØÕ`Y(¼ZÕCéíÉü kò:Ò\4m“¢¢J¹Œmòœß–¦@èMì—íŽ/-–Üöc;ßÄË¢ÛìU}YTtz&æÍÚëÉ#c½ù—Í ÷bzñÇÖ‘Eæ×Î ½ã¤uÑuËŠ³'‡þíüÛ¼(÷ûì/b3ë{aX[3AÌ3Jr¿±oî„?¾Ñ³â{¼û9vxöÄr âUn®?gU•xš ,,„½¼ª”ûœ¢ÖÖc_)ú«„9?ÍžòÀc¸†dle<õ9oaÍ*Õ¸ùÞI6ÛŸ ‰œà¹^bWIã©t"^GG2¡OÐM?æ-ÇrK&kï]ž-u¿€®U5€CÌS÷ZF ?\. æheaØ @…Ð3ë38ÍÍä·gßõ ÏRÿ}ôx%?µñžLƒ¡i/©ëòR]ðUÏ)Òv5\\ÜÕfr¤wµëÒÔöÆ,­Uß A=¦J£+ &&”ä:ÓqÄF«5ä©ySߘ2úW¹oÒ‡p0ÌMMçi™ó2îèVîN_®Ü˺]c›:\‘o´>½În0ß!‰‰=ý\À•÷à°J`QQáV-K©Û*<%·ºvg2Ÿºò×â'ôªIBÐ0Qï”dÛ–Øì¹ì`~Ÿ³øRÙ¤H(| ol|›c1ÊMa`osrµ=Ÿ––½ûééó‘@›vÀ d=WºRSë†ÊêW7{m-> ~œËÈý¸ÂoÕøýîãJèÏ2ˆ}vàéî´Rüúnn¨&­Â÷¾Ùñ~ï$F½§ìq[_ß=5¾†ýÄìUgúmÄÖB?HE–1nq1;ß‘‰÷óôœq¯®ó… ™¥T¸v²º. «iô|bÌ£²_›¢ßÙ±»NðbÚ͇”çÈôó¸Ýe²£;éñË;£Ò DŽöišˆÌïµáCÏýœ9SMd°yy”ÄÓÍ‹q1 8ÓÝ·û˦ |첊­Ò††Jñåa/‰D£˜j=<øK磔zÉIÊçl—[?|a–B$Æ‚ä Ñr:wj¨œÛ#ûêëÏÛV—íûEÞϯںR}èb’VBqek «ß .›ã†<& öëmè/n_¾\³±Ñ8™æA‹‹o.‹Ǽa»u†šâ gôK¸ô3kÓJ¿©©ýØ-³·¾ÊEE¨«ÍBôSíç}7Q²5Éý•i-”î’ZëVîEŽrïl bö3•J2iîoé5?c²¥c¶ÚHÊm½wkÅhûI|Bçܹ‹©¸¼°ööö÷]™gWçóKêf0).c°y{Ìd¬0Ž7 g©ñ:Kî½A…·Ú{ó2 S¢ÒÒûþúôbõ®£zßÕpÐËÜV)„½{¦Ø)që |…n¹»s¡ž‘±ä¿ü ´}ä~7­¦—\ï5 Gvu–¸19Ÿ,¦®žûÙ™:qŸ¸Á;K|nß®ãHÜîÒ½s‡ÁÊ1"£g ?Mäfeíùi!œ¿—ï"Ö•Æy5¦™,{HêG}EÌØ)¢ gb?N÷ûÎ †“–Ûú"ªžP!ëWI…Ïø]ÃeþˆN»ïÊn!‰A.³Éa®ÜuC•q)ªLOžÐ=ç¶Ü0| ýkïòý’‘µ¦,uÜÚ:§#z¦'׸rµI Å/XÖUÐmåÅç]B¨çÏF}IA:—QÍ­nª™w®z=Øò{Q¯˜‚BÚgæ6¬ÙïfðCt¡òäNìe| <1w\CÿÛv&"¢µK–ñX[“b3a3±‡b¸–h¹y°‰RŠV‹¬o%C³€"zr†Kí(Ò$ƒY`>/"##>|¸Æ'NjpÛÆr®.« 0 ´EGa\,¿9óó2íûŠå«; „")ÙÙLñowÖ×AîXŠ 7ò­Û†GõŽ‘Gº¢×Ã>Ö›æ<# Ú:í5࣠y"f¾¸=Ú»fÙ»W×ÐáK3KË{l,Õ¼é —£i¸·è’S:‰sC‡ß‚½®0ÎeÉ#'›¿&÷4]ßà†— ^÷örkS¤¼ƒ9L“¯á’Ýq8‡ÓïˆtV^ž”œÜ#)!sx(¼; vã&¾œ­1‘§Cnvö@DÛSÉ.aU$›Þ>ë´œ7ºD©¬ªÚ¹´˜ñ&W§Þ~\l¨æãyôФx¨`ðΞÕ# ø^ͺ(gi>áÌЂ#òp|¢ÑÍŽ÷M>BHÈúy,q²&‹xßÀÖò2 Å hJp²iÓrû¨{–¿Úñ&æöRê½ú3ç/4}~‘@Àû• ¾/äŽ$$$éêNñlJûø¯­­M{ßõòZ°Ÿþ,îæF0¾:Ù|q%°þ^TÔÕÍÁãzyéJr¦Ii”â¨íS54~›œë¾Éë8M?4ÄÈϪÝh¶¼ii9xu¹Zäȵõ–Ç Ô¾ïp _39'gÏÿ5bzxò•è1€îcvœû‡wutˆ¡µcIHHø½¡7í^p˜ò{U À®9\¾Šžø††Jñ(${ekðæÊ·˜{c±KosÆäæ2Û g-°„ÕÓ±QQå¶~?^8X‰¥Î‹í¼"¶¦£­ý¨²Rðy¬¥’= P¨ˆþ%rt ×ïJ¥å®½’dß{ñÕÕSù¾Êͽ–ù=.:M\\üû¬¹Ív¾èƒ¸ñëÀ¥aç¤üQ´½=þ¯½½¢ RF³ôhµ·¡©i™ÐܦŸ–bI~yDê¹`yhXÅ{`c44zíoÓwZÀ!5µ¤££x¾~ÕÔ_çòð°Ð 6Ç4t}ï"+밢ܗ/‰¦ffZ¸v[[ZÄÍÍé.a]×T3ŸSsVZ×­^èËãîîÎÊÁ¥³6xgŸ_›@ ‡ÑÌOEŠÏÒ”bÙî9ªò4¼Ô «‚[{u¯×à6|¤2õ9§ùÅs¨Ö]=÷Úzïßz…%\³¾AËë¾v#ív"sÉ%%j} «Väv¡L{$Øg,á]í¸Iòø«1 ú¹ŽH“‰Ï/8ˆžG¿xAxñâEíwVŠŠX#žËBq®ØH$Òm÷[ ôfáì¡¶²òå4ÅXš6;âî'ÍI ;ÚÉír×––^rµ!›¯^¹rŸYoJ t¤§G#?ð —s¸¸˜ØØœÅ=ý*…h¼4; o§óîª1ó}äϹ[KÄ‹£cbûúú°û5T/aa]÷Àª¨8;Ù„¥Úwtãš}<*é¾ÏØ6ÈiåõÅé2kÕ>EE|—ƒéWz nNã8í")'…﬌ózï9Úòðî°øìŸ Ã2„·Ÿåæ¦^ Яò¨ºlb2 77?üp%ñ~3z·ïß¿ÇcÙÝ(²Ä¸xñ~j*µðÑâܹsc"G((ºåN²6U/;O{|¤îä5aþÌ W‡p‰÷©mF†‚DŽ´"âfÆß¶¥Á[‰D>¿äº\öAl,#ã%ºUjú¶™ÉÃíÑ@4]==û¥¡2œ×¼$ØGë·KËÊꆆH,{rD7×)ˆ¥#Èü«ª„>·¶ÚÿJ1{¬©®‡¶#x÷îatôuè%H5MÍzàñ(†ææÁ]]]41h~!ø,p„kÇêÀˆä>;g›?‹ríÚµW:%6ßвµÉ¥Åº„Á}óô«.zzzÎö†åW}× ýñúRqõþ’€„¤$är|—ÅÍ÷ì"G;T>LJ®Ð*ÃwîÜé{ƒ Ù(*(`t_;Wá²øz—ñøø[Œ% Íyè‘U,,€²pV6{ ¨¨%u/ñððà‡‡‡+2COõÕ=ç0Uª:” `;ØI|.èþf€<1 ’ëÆÌø mäÝ»ý˜«EÄ–~Í“…–½y\¶a®‹\M“«].ûYJ#Í£wó¾ó?ÑÔ5ˆ 2?‘óÂjhUä´Ï*Ûš3UÓŸ‡+¡£8Ï=Õ-rœVà?eV±‹oz[–´}s¸« º1ƒŽCÖ¥CŽRá{\½1“‘A;=1Aéͼ‘­é¹2mNIBTT'æ`n…¾ž"ÖbÛÑ/¥ºÌž+cg¡…„&ÉÉ”E"á/•¹ÍU÷<›Ï žŸá„Þ<±“. ))©ªdï½ w8!s ÃáHk+ÖÝ»w;­­¬P@¾ÚTMYXXøñ²)1p"hÁ{ çRŸC~A!!hEN6úUs#¨XY/ƒpþŒŒ´6 ïm-2p‡¿ºò1ÿµˆ«Nˆä‡Šù#•ˆ÷«S)Û>NÆ}ÚaÆCA!φžøênÃWîƒTm(tI[ï×õ=úüùóãçÏ1ü„'çTŠ*EnOe¯CÇcÑʳÎxoO«mzdõ®¨HRE%rcfjj ÿ™¬Œ›p+\W—$'7ñöjwßnAqq^ÉpCCƒÇ|‘Sÿ«W0F­‚“WõžPI;½pK0À¥ãµ¬…/IË3¦³ˆK¡lCåÎÙýZ±! ï¶æÀ¶§z?Îil9Ú®9ŽFÜx™Â5󎙿†©wˆ/Í1S˺jšK¯~]¬7Õbw.;ÿ2!!·ÃíòäÚëÂzªª¸,{^¹.°rs7-ô¿ouÌ[07ÐÎ*›TNû²UÆç{ä½z,#+ûd×®vCsód{Š4´ÃÆÉ‹—.£óLÐÚ}²²²2rrï÷6ççs5UT:Þ„²UnxjÕø@~‰‹óßs‹1M)>k«¹ýy“‘5sBÀ\S¯ –€˜ëFŒ°Â¬“}M7‘m“ˆ¡ÿ¥ã@ß›\>Ó9;ŸhûaNgÞ¶ODëƒ+C´{{êÝl5NñŸÒè>sÛ#‹Ï ºгAn¯(>ƒÌÚoG溳ïÖøöÅ ¸jihàé¼3ÃiñåÆf¯¾g˜º†F1]xqCgÏæKlÉlbOÇæöKýî¦ MÍ·®£Þ1/^¼`ÓÔÔÄ»v­¡Üu™Ù›EÀmæhgghbbbµ8P”“•%·§­çì›—“c œ‰‡‡÷ùýûû¹5úå#9wßj•Ø kÉÉÉEµLOO³£°×èûì"Ãx±ï»Ït#²É‡{1µw=Å–õÉ׫h:‰ vcs“0¦ ÅD(´Nøy¿»ZZOŸ^£¹v±¿Ú{ÿyl,1+«áÙó— EEEÙ¯}ú$ò?¿ ^ÇÈÄ4ÿ4¥€J:œU@@Ú„M&Ø—µCÝüJNöàóúåR¦¸¸¸ç sé”9Pggd<& á3p×/ n«‹fÐ|OЉ‰é9®«_jwϾL÷¤Rþ‚«øgû àg绳ñ'Ê€Í(V?É®w·YÜ:S؇©©©‰¹ùG¨põî4±‰µu«‚‚BßH•ç¼µçXí=ƒD>~þ7Wo*±6{¿ÛÐunpWoœ*)\§léh·ÍÐ+këOžàêI¦ð$ÌÙÅom«ƒkGû£Çì–––ÐMzru4—×Ó2ÛRšŽŽö7f©oܸ!½pûÉ2VÖËî-®>Ϻrçù¾Hjù׃´ ½ äöÒ0"”Ë›”Ç 'æúmÏ|Ku9ŸØŠ&”‚õ™¶·>‡{lÅ›s½Nˆ™ä´»ËÒŠ‡Ã¼||²Çˆœ‚‚Ç„„„lM-mm¦oMZUö'Í2ƹúº6úƒ°JW<ï6S0$lé®g=;Hò|–šš*ë‚PRRêHT_¼§ƒàüÆK j“ãpÛµ>PHKI ²±·……Oª5\›+\—M@ñ…åšc>>>F^Þçeå基 yy{ßC•—‘1¬®®^è¼-]æ‹bµ»ö-'9ù~<¿ó#BbâzŸ&5óÇÍ|Ö;U8žkS 0¼¾¶fÒ]Òg­®ñƒOëåÑ‚æ7\Ö¦d544¶Þ—é–Ø201!=·àBž[Æ¡l[ U±“““ã‘“·]¹zµ¿!øjlUúæúг)×ú¬œÊʸÅኘ3†Ð: ,,¦@ú<×PОÕÇHjF†R2êAóÒág Ùá¼ùYÏØ{•åÛŸ1éô…rh ™Ðävs§Ä,hè7AZäyùž’’ò9HõƒE–1›iÂDûû1•1S¦’5<kƒ}¦Êˆe´Þ|Ó´´´Ð¶Ž&—GWWSÊ'Al=ÎC+Bº‚‹Uyêt»ÖKDgk›Âˆo ‹b#A„ˆ¬îé+3[²MÊK{¦¨¤”·íÇDK¤ø’3˜­©€ê~ýºx‰,ܰ¸«Š·Ž^—-‡¤ õVfQ×{­œñ<Üì%ŒhF€|e5ו¹Pµ=UÇ,›’F‚Ž J8x‚Òà¸4W‚ç¼ º†í€îßœïÏ%&"¢ç¸c)ûb±|ß,ç«|¦v,Âq`e?à[3)))²){F3¡7wj¦éSÞYC`ˆ¡l«ª-[£³meH¿8êDŽFF^iê[wì\1 ¾y;¡`mÍܨ¯5–'öà²mkÙ\ÐzVÞG[ù6!j€au$(þ©T×&e_msþ]Q sL ™°í!%å}½j¯»{ŽŽªìöNýf„Xk×z#£põÞ­ZtúAÐ @„VíÍe[LÕaÍéü›su»—_SLØJ]ryY®¯ãéÛ1´ÖØ™Âmäè›7ìܶ#‚&ÆÆ ŒŒŒ}©òwíí 76ýüPÜöÿé$“Z·n¡¼-(0TMWB¶··×TUà„g•óݽÒJóÐàòÙg.ß0$¡¦PmÈD ^²p+>“åüÔïuÒ=9$«Óü•DÈ}^eXÐg3ÿ¬Zy†+\}…Óš×Ï=¼/z/ôaÐ †lÛ2ÎKë„- Šþ Ïí×p“å‘·Û>ËãSK>®ËB½åá¡¡V[a–õíDÅaAAfÖÐÆ9³VöÇ‘º£ÜÃáù¨Læßƒ„­÷JáÇú•nlû%TÍÖ‡ŠŠŠ!óÔ/ÊËËMæã”Lß²-,žµyµ ÎÀ ¦åÓ§ÏžPµê¹#¡Còeæ{w“å|ÌÏ·ŽWJB4Z3éÄO¼©Sß‹¶Çk½xÓ9ë䩯–01txÈã=d×?:pKÑg¸ Ý_p³KÕ¤'çnZVÖ§!·É°<œå&7²fŶq¦FǪIþÇ‘¶ˆÏªÇžs˜¶¾˜Xîû$ {ÙT,rsXpj^q¶>öçü¡=ÈiM\ç/N ØÔ³}7¯ÜÛÛ}ícUòîKÌÔ¶G“×+êš[â¤ú3Û]™ªÚEÑôôôOããs¸,îc¦£“MôÙ3O™ÙZ4ìQøÈÔoûi+ü{gÚK%‘„çÏ¿çïi®UEÌ»¿t©2âúX2;û!²O/  âlG ¹O05kòOÔ¤:bb÷±É…yÑtÐ"»Â»SWKMJŽB#"z5 ¼¿i”9¦käë/jomùtuŒÖÜŒ#γß&›šÕeµŸ¨ÚìÑxg€CžTE;qóˆœi_fă"ÝGÃ-Õœ$š²KÚnEN+eç/pN/ÞWyIš¯9*Mî­FÌm¥ŒD¦Ò308¯N4JÍϧ§imíFD¥h—ñæ 55õK>G“Á N´-À–©üzp½Ô||ªA–|Ý&r¬Ëaú¥ëyç ©c¹êm{÷ØÖ³Çé /’Ý×§3++uѱI¾>gCl¬·É_ ;ŠcG>Z[[SÓ×ÏtL j šíÑÈK#v6¥MÞÓë„¶‡RJ>œæ©±/ÊŸ1'áAn c÷8й°ìw}zÃψ‚79ô•;†Å@Ãݽ ßæTÔmmR¥[o[Þ¶Ø£XšµS‚d­ @Éðìw¦mdLú•Z’’’À’UÍÍ3c[꤃®O„°¼sø&×/ЋӎÎiðêÁ5<¼,€wåÕMLÒŒu--3g-Ʀ²$ë£Õ_³•±:ƒÕfçåªmè¾ëÜMŒ¡_\]ø°_1é{.rAëxÑÑÑÉÉʶ¯}kÙìÄ ÕFüè—/³ËÌÈø0_|óúõë©®Ò|ÿü‚Ã'HØÎ_‡ÅPDÿRû”n8 kñÀt È<%øÃXB [±E7½ˆT§ t+j ¦³^#»ñ‡ÇRäU$%ý?™ÑV’•µo]Þp·0:s³ûÂBÙÉòq"šW²*Øuž¶T߀VŽC¹|k(º?Ywd“b |õCycX‡:lßLJ$ìU `øG»ô´´Ê@€Ù§ˆ`¹·1û(<Ü¥*üÂ!ª“š(!„Ý**ª"£Æ‹ñ‚î* 9wa²TÂÒ;3kŽ6ó_ ygee9­Œ‰b°ÞòØ0³'®f $*¹ª¯®®¾ËþÚh1¯lÙ0t0ÿÑäÎP™£O”}냪+› &]×§[}úogðûðz‡úµwe­D W¸Z¶¾äÒ.±‰ÏÓ¯’»P añì@JBâøÙñÑ¡F‚0°>)(({ÐGBâ¡RïøËT¦®_qû!îFÞ%^ÒþüÍÁü¬¬‹ÁlŸwkùßÔLNN^'#Ë“¢qî¾/ âÔÄ䤀ñ`•çvÏtk¬xuÄàƒÎÉÙš·³ò–*»“ÎU«C*&CÏÈØÆ 3=è7¢I™9ÿ: M—ïþy”[222z³Ô#æ’;r±ÑȬÞÉFݼ½+ïÔÎMÖÔf²tªÊ>²,Ðgí–ŒÏè Xz ú,Š4€>ýËr×OÎá‘ù0IÚó’àI_yp±²–Vhž¾Ò™öL¶Ï%.Ï‘6û“ :)Ò=Ķ•IååüÙâd}<´Yj¼dX*Y?Ï)£jèêꆴE ‚²J骓MaoùCý®ã®¾Äî1´š3­h ç&Ï““ª(VSøÐ§¡ç©y¡ RýÓ]úÿ·&ÞçbCf¶\\E{Ó±o[ò³øóók„µÃƒƒÕzóî]Âò“<¹“¡&¾M{9·çÑ Ó‘.޶ÊYí¥.9tlÆ5S3Æ÷È6HŒøÐP >’„A§¹.Ùç©÷nÂPžÜØo1”Ì;ý}}}å;ö—¬ðƒ‰3†§2÷)99=$ss‰¸`çæö:‘B«•;‘» Õ~’]]S³w¢|eE‰ˆo Ûy‰d|&EËÿ¤Å)ä©tìo¾Mç-‰w¶áž)¸rÒE+:JJ]DÓ¥.,Κ >úO™žË¤†¢j(9b™TÐ{Jí€ÔÞ–€‰³ü:''/ÊöuÈuT…Tä(Þ²Ÿ€Žrâ|êëÛØ­ÏWÅA˜í8>s÷Tìža×ôïi±É‡Û1ºmÝ=G:ˆfì7¬ôµ®J3XåN³BÍ¢°bHæ:¨;áhÔÌžÀ‰ü¬ýý;ú _„ù|[ìaÒ¸¡Cp}¬"ø*z¶êÍ6óØz ¡ åòDÊ‹ú§(*D ÏÎu[¾ 4Ÿh¨»ˆ9‰`½_/Žƒ”a·éušÊ*-%8F»þz'Ü#‹èiÆÃ‡y‘¯ø…ìqÏTWìN›a?›Xí ¾ú¢lÿ´}.].\=/é±Y.;;[¢E‚û•²癹Gç²//IGÆ×=¾ä±†‡š 87›é’x^û÷s¬¨!ã‘ôŒ Ïi_;óž¡cdTÁgÑ„ „ÅP"çÀŸ=çÞoû›ïßóÏVïÛ¨«Â“ÄÓÝùF¯–0Ë´ÉæR©[sCe?š^#÷mþÜC~¼#í ²Ôñûår'û¹£}[M-­É5Ý&‚0r‘¾äŒû85¥÷Éøø×X%+’`vSÔ>°ŸñÖ´-+-­iŽ•ÓBí%ȵÇNËUA^yÃOâ<Û!©”Þ9Çê%vrÓš °°î’QŸyÕA€~̾Äñ [Ç~IÉÇ¥’2n®=%ð†9àtXÌ}°¶h›,àÞYzÛ&ŒÄ"ÏÎØhå ._mz;Ps×=ž!A&'N˜. ùô>À°[e‹q|Žj**ÉL:Å´ÌÌJ˜xŒÊJJáÐѲ£G[<Ö#•e)b›Bõs;cˆÐŽŽþL¤©i×þö2NË9¯F!Èš(¾Ïugï}cñÍà-Ë÷øˆ¬“Ÿ(n[sX ªvUyº‚t'Kî(€ W®^íç®ããW$äçåièë'Xxœ<`Ày€?ä””žÝhllœýÞžB6(×N*°±Ñy›ƒCµÊc³Ã±M(pjÙ ªì/ñ ììì)t· =À8|ÍÓ«x ø ÿVÀê™Òh¨açlÉÌÉQj Ú»B#O·?§õ ²ec:ÖvnØuTýîÝÏïNhkjkg±Tïˆýwt®×Æ¢ýNÆs{IÀ0á±³‹ýo¥!ƒHîÆìÔÇ(99¹µ>È÷R¡µTa[®½z®²‘П8„vƈú’0Ùãg§{wm×.í p‰ÉꙜ³@s:õ}ÒÒÒ^‚<]þl{¡AäÃùÔZuµ×È4Û›Ÿh9¼:ÙÆÖÔÕÝÍå¡ÛÛEn/=ñ„žìÌL¶–žÌÌL“¶¡&DS¹mõþRÅ+‘ð4ÁÆ9¦„€ù=ܮɛעŸ>}þé“\v=íþÖ"øyËÉÀzr¿ËN }l›ó½mEq‘‘9Šs¾–Ai©©³ ÁWó¾éWyÈFò;[Ø¿INNîw!®Îã²õ\Â"á„ éq|¸í<ï:7Ñ’•™Ù®È3|­«¹ÐeQ›üÇ”À2gd‹Í°ÖqvÅà$Qd¸.ð;LYî¶°ÔXõLïÅ̯Ö=@~üxLÛÆÍÀZüÂ… aÅž;+ãRùëE‹ xlt&©ekæ÷0äW&—–òÊö.%‘ò9%o¾z[ʶ÷=%¢² ôئ4©±ïråPX«a¿ŒÊJ¢iŠª66y€ªæ¬­9\¿vÓ2 €vñ@lsÅ<æ2Ó9‘Ÿ®å~¼í“œx|0‰N—\YY)•/๕Ó[ÜDÐú‚CÚÝÝ}ð(l2Áï{%ÎóB+õ`À—JCºu¹BqîÝäæî™»,U£FüUUÆõm+ýj¯þ©™™Ø¾>­Î_߷ȼ«¤¤Ãf:ó=¹Þû[\………4<<½€Uôp ÛVÉÇ0¿Òí|kzú‰Š‰™ñ~-¥0ó%^Øas1®œ‘Ú>>~ p…Ó{ÏIÖBƒÙ°Ò½áeŸtÓDo ŸÝÔGéU'ÆÇ熆^–#Qs¸h m‘*µŸÉâ¸ùE`Ùi¿ûi…Š‹$”/ߤ§»ÈR35- 0:2;å¶}üXÈÊ?Úÿ÷õØ£ë#ÀÊ»»»éhh¤DöûÛ†F櫼v ?=¤H…©èêÆ-ÕûäÞ}ÛTäÓ›§§]íUvåÊ•§qq9Ë5ÇÕíó1ÌzY£n·ñŒ| a©ÎèêRÎx0@}##£ššÚS…ç¯8L¿èŽžA¿g— Å¿cIiiK{mzóµ‹>E´¿‹× ¿˜§5> ‚b‘U?;55µù÷¯I{›ù¾¹&‹ÕG{–XDœ펄„„yÍøÌº_^¸ê´µpwØeкUßÀ`úSÌÅ2†M¤f’ýS(ãI}wd©g«Ý¹“´°`¥Ï_Ôè"++»B2±P‰ë²~ï$8…xrŸxH {oLÙZꂦj’ÆRÐI¦¥Èç’½•A}É,ö/§iZî|›žž+l&ë‘^íîÝLÝ[ãø:»—6f;/âàh:;á1ëÒÊòûy½=tgØ/rYØnx%~’79oai¼ ŒÑ÷ ÁcRqpxÓ“«“ŽEÌ]Ú£ø’SJ€FGE¥x}›™aàã» xY§ö{ÈÿZÿÿ?qùÿÿgþÏÅÁÊþoÿÿñ^>##v>#..>.>7« aÄÆÇÎŽdG"þí!ÿûüÿ÷ýÿ4ÍM‘NÿÅ­ÿþ‹ûÿ±þ{ÿ¿ÿ¡œpn^vVt±³±óð› Øxx|®{Èÿ^üoeîíijàhëì€@ž\ûoÈÿ<ܬlÿ³s°qq³³±AûÿñpsþÛÿÿ'þ RHÜW»«, ƒ†¦¬.¦ +£dbaÑäga‘P“€iɨ)*ÀؘYajpGs's[¸ ‹¤%ŒÒÌÉÉŽŸ…ÅÕÕ•Ù•ƒÙÖÁ”EM…Å j‹ ªüãÉé—šÌÆNÆÐŽ¿'7t³¶²qú‹fØøøøNkŸ”EÂÁ‡5Ò ƒÊ2!íÍ]„(Åmmœ6NLjîvHhÿÜ“oB”NH7§ÓÊ3¸ƒ#ÒIH]MЉ÷d+ÝÿЈ“º(“¸­µÜÉÜÈê×vd%…øþ¬sºÍ±)ÒdE'[‡_ÊIغ¹ƒó@I¼Ìl¬'5N¶þÓ½`'0ÄIN…ý`Õ0Ú? ÐÁD•eùa³gð‰2›ÁTO|&en…d9mû¢ •¹åýˆàFŽÌGGJ˜ÒJˆÒÑÉÝ éh†D:Qœܡ}ŒOT€„sD8˜Û9ýzÅî?=K st@QZØ;#Ü™-)…YN¯üsÝm‘h¨ÿ¶ö/òÚÀ]œÈÿ«"; Í=ÿ‘c w‚ÿ×kÿK5…/Â`7hmÎÖÀ€è˜€}»ÓšÛ˜;©@€3¤8)ãjnclëJÇle 7¦=í¡ ÒÜÔÌ \ÿkÕŸã?§ZØÉæÒ?ÜËÈÖØ|›»œlxídkzDÁÄ3¶…ÙØ:Ƭm]0'3sG(Ä3w‚C„•­#Òfäûqk Ó¯í@æ í© y²Ô7ieåhG˜Û˜ Q²Rž|·ƒÿøÔ#èt* 8p€tD‰“Žóø¸íÜNt(èd|r ;[ `tp+sSÊŸÅ4Èd…4•X™¹Ö§µ`ˆö£äÙ”ÿ²³B-ÑP±q³ ‚¾ØüÖ ³µÒR˜™‹™ ¸|zcpçÁYœŒ¡Î±89œ~üÐ=ˉ~ ƒ“‚'ÚGÚàB:ÀìàN§Ê….HŸ†¢SÝÿƒN ýÒQ`¤¶®l@ÓVpGÇÓxqª ˜ ³Õ/g¡xóã¸de.,ÿaWÀ‘n§œ ŸtXXnnsªe¸)òG7YààTü«6ì@9ÇßÚPAZA=ø³Ç¦¸ °G¨ÞomI>mHõ„Â8;ü½Ö~váìàœòÏÖM@”ý]J(îþuS‚,ÎV§úsdW9ûo*gÿuþ×’œöQÔúgtejek·ú½éÓsÿLN?Nì „ß=ÛÑÜÉúùGÍ™~0ØÏ«ž¢ü[1A‘ó§Nþö<Óüêø§n~-âènƒøãÆ'_„ÿ„ß<íoÆÑÎÊÜÉîðG `²¶õ`rvD:09"­€÷òÛØÚ (a?îúWc2ƒÛÿìЯŠú‡ÿ?†}g›“|IKç e%¸‹è=íÍ¿ƒÃo2Þ¼I'àý{øÙ?ÐþOÕQþ8ý£§QäÏQøíôI˜þ› ?ÎýFN;úrÚÎòÓ¿þÅ?mò÷®ý°Mi[`b ½ a?U‡ô³59Í970Ÿë/Í›8ÀM­Oý÷—³ "O<ú´YpÊSK? Ö¿”³±¥††™í‡;üˆé?z÷÷eçþû²sÿÞè¯Åì ] ŽŽL S™›€k30V–¹­v›Ý@AVUÍ@ÆÀà/ý§âùñüÓi@½ÿcxÿ@¼ÿµóýƒFùþµŸjagåìýüK½ã`ýû‚p°þç‚X"Ý]m1é`ó£ ì·2ŽN€x=ð{g['ñÓŸ<ÿIQÿýs°ýÓ:ˆÄÜöSQ¿DØZŸ:#ËÿÇÞ•ö¶q¤éïþ½Ê"H Ž]÷‘C@Æv²ÆÚŽaÙÀ“P§Å E $e?ìß·º›w««Ù$5“‰l@©îª·Ÿ÷y¯ºúñ:¦Åã§MWo6»ð$ó4¤­D›5Õëw¶x²¯ ²ÂD¬¦DiUt:ª˜ JKlh)¢UàÍò#… i#A–U£¶K¥˜•FüRØÍ‘ÝW¥7/=ïÚ7I¦bÏÛ7ïî vÆS ÙGƒo#Tï„öÙùp¼H®ªÌ£;”MÐÄ)E¬4Ù€”W!zŒ¤TÖøO/Ë[Æás wQ|sâÅãÇ©½o»‚”ñžBŸ¤ ¸Rˆq¼¥œ"b´ØŽytB›HÓÄü£€´F2ãØ%:=FÒYËÀc ¯’.pËŒµ3ˆY%VÝŽ(Ý+F™ˆ"ñé1⌠ŒƒfB!Ä™–Hp­7ÔX*™[a!©®ˆt¯eâ”ì§$Í4JO¼wDhK¬•‚Á,²w¯¼PÑ ðnr;ž×&|ßVÌ2@±Ó¥mtÄ`¨¦Œ0¤Ô$i½•cºÊÜÜ@fµDê@ :âÄ38ñ œŠ–ÍÙ ËÑŠân˜ÓhýâªÇI¼ÁÛûdF·¡3s2…§g $­ÃPÚEƬ `mÈÉàÀÍ!Ç[‘³ðÏ2±L'å=hJNB÷/ˆgFy ©˜βPPh¬át¿@eRSÙ§–™TNöHåöAê¦#ÇF;¢8ð”@ç ž:MÌšs‹Ã±¿´_.“ìGËTE§'z\Ž]Žì›º*^eRI…z(^er/…O«ø(‚¦îs4•GN#«¹SÁ(CVŠO«‡–J¿O­]éûi=“ø)rbË”š‰ ²bÁ4K•lqVl*¨Œ÷m–ÇWÐ^!^e²hEûØe&ãTì´jgŒzd£ <€qR4u–HáÔ‘8UlËPøoc—{™e&ÓUü´ú‘ g—†A9Oe

3ݰ«®o`å¶«=29qš ê‡p~@„÷^ZÐ ^¸xÛŒë}6 P¡Ì H´Âçb-³8ÄÑ Úé|qÕé~[7¸wdø¼(¶Ò­U-uˆ›•½ñÍ/ÕèïÞë?ºA»_ñr|/9„êáòƒ¸= ï92ÜM÷O!ŽCôOÒòó=î79ÒàýJƒk’f¨úÁ›Ÿ™íïþÓ½Ó_¸ú¸ îÔ²sÿ}‚Úþ ºº]¸ü¨Ða¦zs.»$¬çö^gÖ ¹tõq#½5?™ß'Úô^!ÐÀµ»îð‰O0.CØVíµÚ&µØ‘’öJ­}½ØSm¡Z}¿¶]gµµo6O;ýâd2ߨõ·¾ÿéÆÌ¯–ûŸà‹òsÕäЧ}™ã|ðÐÈ´HÛ©> !Y_ì5úÅÁj¯×Ɔ8h+ŒÂõúŠ÷0ZL=øáô’$¢Á2$‘ŠžÆ¢qÃO\0Öˆ-w—uí¢ysÐö¤-k«–+ÈÎÎ×÷F>ª×Uͯí5_l•MÎ×·7V7 ¯?nµZïp®ïº<+Ìh¾üæìi9ּ؂¹¯ÚP·äÉb§gêêüÑ¿ðùÕö×Kåžüïìtç?aøŽ¬ÿPÿDθ—ŸÀ.ÎûZê»øñÑßJø[qVO¼?5=›LÃÙ ØšUXûce@mWœ,OWîÒ­NV 8¸H½ö^c¹ ÁA&Ôa.5epïøv4Zk΂ § —~rm†ã¶¶½é˜$%â*F"¼ÔÎ[¬Öž+³Ûö³Ÿ^¿x÷Óå‡7.^ư„ña\+AZ8²–ÈFh5äd„SG¤Ä(¶õàÌM:!¡èm"¨ÈX"x0`Î11†±.Í_ÞLË̳Õe:cÀE ¨ùòP108£XI§%&¾­›ða+B"b Bª¸`8Z-Iš–°Æ§ÃNnk;í7¿ô¨Î[Qb\`IÀ͇€Ñ!§.T2 ¹1òÙ.€ò­>N#­†úô  DQbÖ©ýËá8NÚ#"ÄVJ°ÅšI ë)ãš  )äd¶“t–A«qØxsLÅà0È{k xB-¹SÙfž!€§N u ‚Cüu a…$¨½“Éȇi­ïK3µu„œÀŽúŠ­ÞŒ²1$ g‰¶CGuõ: ³öŽ r"ÑGË<Ç”ÁÑq.=êÜQùû¬=ö9byð¡ÀàI±3QBná,âàh»tum~‹N[-Ò !4XL’"ˆ°:xψOÎÌwèææ¶B®­C!œ1Ï4–”Î!C²â¶~©£º©Î;Ê=ÆÖ8d!-¶iåRÑI%2œKÇŸ´©$¹(Ì¡hÄ#DDTœ%UÖÖv²zc‡£á|ØN1ÂPTÎó;NX íÀzbßÊw2¹mu`È0 ¤Øð,‚2ã‚ RMäBŽÛ\n2ŽÃ­qPɘ2 ëDeðŠb'XZEæz¸6ã[3j¯F\ôë•@V*¤–€òPP:äzH‡©gÝ—ŠèüŽ"M;R“–.*¥`¦S'³›Z=1)Ùq ‚•Ïî…ü$zGƒ$(×Ël>™š!Qx*³4¸ɳE;›ò6( ,ˆ2ÛÍíõµ™~i5ñP€ÈAyçQˆÖ‹(…ÄJA% H[ip¯5qì½a†›âa—¸‚ÒÓ)¡ŒmmÛó¯´žBáüÕ8 Åm0NÀ´æ$Ó[sp "6ä h’a¨?(•ØqÜÚô¬«ÃÐ ¶æP*hƒ¨!aÓ&­²¦‚F¥säíY¢R&‹-·Ð‰Ap¨£äµ âl®‡NÖ¦dª¤B&¤cF«ýAnPIuê$omÑ®•¦)VÆ ¦ AfÈ¡ÈöBR®—ùð:LR¼»»V­DWd¸!CñæÓ¬npÒ*È€Û“õr¸yÑUkðfÈ‚ïƒW{ ÖÀˆ¢:´o±G¦½“ÉM§>|š(…Ç ‚wΫȜ+çû(uÚ·½ùtøñ#„îÅ ÷< £(™¡á$•P:ÛˆŽ”ÆÖG)+¶>"ÒY(йvˆr€.‚Å$0Á­6Ô¯M/ç´ª¸­ˆÎ†"ã<³À\èd Îj¨xÌÊýýûîã¿Ö|•[œþonm;ÿð_;ÿ›§ñ_LèÃøï½œÿ Ú-g”VD¨ôÿÄ-–Ñïþ%äõ^1»2é»i¥¨æ¥&>ÐÅ<ÎÖDªgpŠò0¹ϪF®ê©“tŠîdêg?ži9PhŽk€‘,Ï|½»¶ìcÁÞi˜ÝŽæ;m§ûõWŒ_]Ú V"‰@9î ß¡|_Îr¤ëeDTÀ&”LZ”2=kâ(þÿ!'ÿ÷~ÿO:üÁþïá_4Q¨“Ž2á6­w„zœWVž>œÿç=ÿ¿ÌokGv²ø…-%|{þ—Qô`ÿçÿÿ Ïÿ_}QÖ—O·ß¾|rU¾ x·X¯üðJ€‡W<¼àᕯxx%ÀÃ+þ¯XOÍû.€Å¬ËÚaý_à ìê/å OFU¬Û“9O^°ï×nªNÿËuHnnzmÜtrǵõ׫‹ßW_Üqy_ººö|J>/¥Í×'4W×ÿ\c[]¼E†}߈pG:Öû ë=Oìhâ~§Ã_οJñ·>_æß·-œ.¢ÒìGÓ«#–²?m¾¼Z[ýõÇt¾|ÙívZ¦»246”~T³H_ž\54³»ä~í9×¾†¤qIÑ—u§>¤mÀñ—¢Ž*×¶oªâ»†mÐT³ 8ø*uP.õ.3·-«‡ÀË•Þv2iÊÜõ¹f­eëÕtY|$[--Föž.7 ¤‘×íÖ|+›cµÙë[‡0I–8{ b¦Ë_*íŽeÒæÌåS‘]¥¢­qk›ÕeÜ`gÃ0N"R—"Vƒ­›–¼yߧܸ¢ëìjòyV|¾º«òe&)gNÏ=úR‘!›Z|ZXÙòµ'Ǧ5XÒñ¸ ‡ÞeCû1<ݲÉ“h[ä~y}3*÷×Ú‹‰Mi{‘Žé 3øê†Â, 3ŸwivýšÙ‘×OŠJ¡ZQ.4;© ·„Ý‘òÙdü)Œ‡å&åºXó ý+¦Œñ–jÀ$Îôñž.áŽáŠßF;ØÉEp*’ -:øÜì$êÚìPQëf„œ°bž“Rä]™k—tõù·Ñ†ì›¯û6×0½¦K÷‹=üïæÔsƒ¨+ŸÜ±·y±¶â—·oö‹0Oiåì"L‡f´8˜±éoØw<3·õté«òÙÎï<]PÉ}žz+fuw¥ï›•}‰`½ÅÎa’wJÿ•s3Lš6ƒ>©HRVþÍÒÏÂ)gÓv´s±øËÙYÖç§èmÖ2üá~U vÕïBèåf”;³Ï‡³ßŸ—Eüj^¿äþ~ ×õòýzè¡xùkgì<ß#²Œ¸p³á\H¼¼N,¸¨Y05Ÿ‹‹g/÷ Áò‘þÀê¿§ KûekÛH5ký”êþ0®ß–|³®÷uÞ-èƒ)7›ò¦O©½÷lÿò¶\ePéo‘ÛÞm”ÿ4ÍÕkNžùoO"–™ÿb&1›ð£\pÑqø8óDIø…)­´PŸù^t[qÆŒÝUÂ*U|]úJÂ×ó¢½ÈjÏß¿ûð"FUݾþóôãèÛœÂ÷Fä[6FÓˆ‚åRyBµæi/¼ÀQÂǹÃGE?ß×áèÿüÓ«‹»àÇÝàß’CàgÕØ´ñÙ;"QNë´?ÙIùò££Áß¡¯CáÏÌw¯ÿŸ•å—·—o}÷þòõOÿsù×?_¾zñ¦œóÞÑ*CZ´»û=QÞ'¼6ÿ^ß^£0þ8¿Jaòî0ü {cÝîæä÷&Â!¤ó–˜À§<š`ˆdΤýއH-ßV¸?éî…6yÉß¾|sùìýE3Uºwd4³:HM©Çà 8xc†„@Žpc¤Siãž‚o‘"‘yp ®‰ô6_+¯„É`_¥üË¥;ëƒJo²Z$”Ï$uik,Ñ$Ì ®¤6ͤÄÎöâe-V‘Ö#Ý ö7XÄ ÖBo$Ñ8b™F‚PÓÙ!«š! ¬½5ÓáüËŠu§2€÷¶pz£&]¼­FsÞ½DúoîÿÐXÛÜÇú]k b*cÛ ¢¡˜DwV¬ RbÄ<+„Ô9j[)ûµ‡áþžïvÕ{¼×ëî>'2pãÛÓëô%]³§¢¢gÈ•@½ì§ËC””¢€æ±Ñ~È î´á¤ðÄ^xIEñ)g/7O‹Ê‰z”Vxðª4g9b0)2ŽÂ‡Ùry_4ÃÞ´!üƽöýœÇRVÂÔUçsÚR ¤qp`ÿ¬ÃEÌ´…›±Ì*+Ð,ò¼ŽLd´u"‰‡a.9 •œhpy‘\‰%6³Ö/Ï7ßzjüçf[1TžyÅ æ¨'„—Np‡8ÌÛXÏû~1ëûV¡€µWÒp|<ã`CÒ:pÀ¸Ì€âœ³ãpóܰ’ƒ¢(ÊuŽ8¬5ס–‡cÈ“Ïqx|ú¾ÒFf¬¶ÒtÃV¿šŠzºµªö6¤mã Rû©mÓÒ’\…Ø«•¥„;gY0D —Zig)Øup«ªÍ°ÃO:'g6ò¢4äLË\€Lî±y^äÙ7ÃN«¦á÷ã÷¿OˆÀÈU ¶±|×t”,é%"¾‰ íjÙ`93g¥?Òs®Ö¯„å _fþ1Èæš *ÁùtÚ¤¿Ûmy]0Jõt©ï¾UȲåÏìÙ³ððÓX¬H—S¤ëíÐ…|KÐÍl²õº&m¸A˜H"dÚ,£jL8 Fa  V%*,rÖBkFCï)<ãTOáÊ—nŸëÀ3Ë)ð<‚þUI¾·ão>¤©ÀiµÖ¯°$,.tNÈÅN8J)V9ü»Ÿ S½°_•‚Ü>PŸ¯[r ”LslÍ.T¯4Æ ž6VIš¸ªÉ àÎT…öeŒÇÛMÇx*îZL¡\k >‰—… ´B9œsë)Xœ”«ýÄxœê)Æ?ÿ ¶ÈÓ+äçn4 '¨ËJ؆×ÕæTVÕ¯ž©ùeàÇiI~*[ÅŽpæ‰æ–¢mî‹\JÅ|!`J¡T|?§z üÁë?¾’ÆåÄžAÿVjäx“ <ËD°´‹ôäÔs,ÁÂ!ŠSI‰s^ ä ‚ën?§z ̪Òã#3ÍICèàJhÆÛlš—6ÐDV:ƒòÜYN¬ôZ:0º½–"Œ ÝSƒ8Nõš!ýèñ¡™Ææ´i:¸šñ6l“'Â¥4…1Âd=Ï æZ9åцc­¤{:Ç©žBóÛú¹ #Ö úå( Å!³g¡Èßs°ÁÃïþ墰M‚Øþ:_n'«ÌÎfêz0îWY·‘az%ª£$5@u"ÒZ¦òŒYTh¦aœ;Ï„Ä9e4ñ¢aš¶­£:Nõ\á*»P7€sïÓ´°²5lýpp½¶ñ¦Óa› ¥VÊqpäaЂ%Ü*û™#Á1„ï«2ŽR=3a¯œùÒ‚ö»id܆®WG¦–‘ŽoîªÜhÓ Tn"žZåfÌUˆ²É‹ÜJ£SðB{Y`/%'œ™ýÄnœê{ØíxUî-€ÓF¡1€Ý08ûÖ]…•®oª{Íq:ă$"¬Õò® q¼9ÓXÅ•“œ…¼5FlO—w£T/.×FoPð}6i/ºX›Äú¿wõ¢ì¤o½7¡êÎ"m”†‹´‰j_&¼&TQÏ ¸’…v¢ðT9ës­…£~?á§zqnÇð]½iœO‹Ç›1Í…± ÚxÓé MR«…xa¨\B´@Ä8$¥ñÂí)hãT/‚vñ ×cl«mîTÜ,Kt+#iXS%â;)aâ 7ØÐHÄh»lçÖ{c•¦º²ß­ [) á°Ük´§u”êEäßHž­+iãÚÚÀY-q"šl§¶ÕÑpá­"ðn¸—zŸ‡•r…÷^äÚ0²§qšQª…ã¦Ûß/¹HHÚÎ ¤¼:)õBö¬>F£L“0’*h¹ª XNƒ¸' u?ŸÞ ;RÒ ì4QÚH›×œ:¨áÞj!$ x±Ž(«öto=Nõ¢iöÿÒö´­%liI5óæXs ›WŽñèÙ8!é²–ŠÿVf_aBxeIA™DÂ4Š-Ø›^iÄžî]Å©žËZßvôЩ/»rÝí¸N5Ì’8Ÿá¾ÍTVõ:„âÏj1ùúÓ,JFÓ,T­±D¡}aõÑ9Uàm9¶Žx¿¯›¯qªggzãòjgØ­’C¯Þ4®'Yý­÷]ý‡a' AV"”Zyyï¥V8WBž#c &8w0×Z*öÔ£ˆR=…í¸ÔßÝkÝ×®q»p×~å7N¿Ý vlâ'Ä’F# ÎÀƒ*ou͇Lßf5…/'¤Ý1Ý£„40Ý¡Ö.ý$ãy.Â)j0Tl. õš ErË™3{ê(Ç©~Ö}Û©ÚØ¾¯U·_51Ù¤ë…o€¨Ñ†ìi4‡eÊ µD{µë•™ý›Ú2FI“Ô–ilå©RŒŒ2žYf(ÍI¡˹U2¤àtO8Õ‹p7=§†+ÕÛÙæ—»‰ºI|O ‡ÞV-}3äü~pr.m7XFwÜ¿(! Ü¿DPµ0ÆX˜Yn=–štH8¤™Ö˜ ¹§ŽS½àëòóîs`†îŸcWN¾Tks¤oÝ¿¦‘6úväÊõCmÒª·   ½ìÚ•e(¯"n²Áxt3Uù2öã$¥c?­¢n\asǼÄB™Î1)¢@|o£n¢TßÅþ®Âw·ý´qÚ$ô»ýÕÈSÔ `'­ŽÌ{m¨""w¤°…#i^ðœ>G{š×!Nõ]äÏlÏ_ÿ§ YC!X°Õ“f‚8q Ž×'b´U,e*ÌJ"åXSg A…PJÛ==1§úayøÑç„´ÛŽ8<4;Äik’4+ ¡­ì"8í1ᎅSTœkœsŒr°É\nÔžFÆÅ©¾+ Õ‹ü™!m¸ššGá×ÄY!NX+)›­ÎGm•*8VÈ9Ï)ÅÞ9‰¡Ôì÷t-3Nõj9øÑg„´ÑÚ¼<4ÄéjpÒ*™­öW‹Â0mqŽ•áJ#Ê­ŒQä{º¿¥z àv0ð¾t“Ïß®\ßDQÆý4T»/a‡µ>= g­@#d¶[~™ ®ªª>]ÞwÔ`ß5b­6¨˜¹ÒÚ†‚Úz[0¡MöÈðžzS½ïRš²Û1×;Óç£AØ›*nh¸¾ :AuOÚʉ¦¯>.ý8?y>uÖQùicÙ@åW¥…ÍàúZÁ×Yò‚¹¬>¯’8a ¶µÛÊ–*øŒP‹4µ…ÌèB)/©„¹Fï©?¥z1Ó ‡ƒá®SuÔIÛžÃÈGܤ!H püê†:¤?ªà\qbjÌÜqe£T4peÁÕ È.šaÆŒSRÔˆP›ƒ˜g(¤Y”Íâ€nÑQòøw„è(r“xž¿6r£T4@n"šR«œý4Ë+nÝHu{e]®yú¥Ê/þPJòÃê&g³Cà×°{¶ª« ä?½¶Ý¯ÓGFî_#ݘ/ð2Û›wÑÔ‰$Ç£P#~½9¨>¿~ _[ûæíàæ¶’…Œ „³“ñè¯ì±ëõÜpë?ƒAiz]óåo?C#Uì‹ê§_®U÷—ÿü¥7üþàï_‡?ãÒÁßa ^”>üíÃ7úå8‰£ñ°ŸyÕ+Ý«ŸßÀCýýu`bVŽn{IÝò¦§nÍúƒ~¸ãEPÞüýF4Üõ^=L¹¿^¤<Ðw“‡6 ¤íVßãi ¢æèI×£gÆÒË«n™õêjä| ɨ³ràGßÔнÊnãÌ-CdŒ†]=¹¬;ÊÀy@?°].ŒÁiV±Fnx]†"áËûÓÙ HüöÞõÝ0D±5 N6!$Sev®”W}[=UeŒ¾˜‘ àåÕ0¾Ê8¹ð.¿2ô‹LÛ™¼íyD=Q£@÷0Tø{ ÄÞf=5š?÷b]n=Ȧ97,X‹ Wƒ›æï†,½^¦]x•÷žgpgöçñåïg/³ƒÓOÙŸçç§—Ÿ^ÍòI¸¯®~O÷ú¦‚þ¡ïCÕ݆.þñîüíïpÿÁoÇ'Ç—ŸB/Ž/Oß]\dGgçÙAöáàüòøíÇ“ƒóìÃÇógï^d“´Ûñ1ðÕP«'BžÎŸO€“úѳٕúê/&¤ˆ æ«¡M€CoÐÿ\¯eŒxþ*ëz0dª•Ò`(ϳã¾yñ<+0Ü¢ú_z0F#¸^pÔõðò£Þ Ägþ6(Gáö?2D0Fÿ…sP,/²E¼åõ ÎûC™ážïö«Ðœìp`Æ×®?R Úo6ª¾ Ú­R©Êj¢EE^xåáÔ(„(2…ó9͹œsXÔ£âç{W«°;¸œUÿÝ«94úì×ðûpþ%|µ÷îýºä²I¤ÅºD¯N”Z¬©š¶æy9ïÍ|«m™Iv`~^‚´u7UÐ vh½Ò0šßV÷¨3¿*C"¦¾é•_k õ\:ª-œ>€}ÂÒlMèœýóÈ.'U_×ÇÖ…n[Û­Gœm³¸ð¡Ž¬‰º·†Ýj ­QP÷GÂP£#î;©j¼G Ê· ª5Š©?>¨ªÚe[«C¶­S«í°ôÓë›H¡®×/oÞ„».ÁôªȆ¥ûoW]s5dpí¦ÖÞäØÔâÃëA$~ øÇƒHRaÐ휘n¥úˆS4dÀ &}È 0¿¡²ÑÁ[ÿN~ömYåHÁÿ}pÊ2xSÁù¨PSŸÖ(kªò"*Ÿ¾ö³ÿ—uš¡û<î©a–ˆ‚£0LÄVÜØlÕ•@Ö(2)ÒY0~¶dTµOÐï?:îU‚š+€Æì:ÀG™/e]Täê¶ì€–ôû?t¢fjܼȎGÕR… 7ƒ°Y¿~UÃî`\f×ül[-Lôßjí¥Láó)jÃfJ@ê ¬1”ÕG¥Ë@Ĩ"â:,V\AÛ…E‹AYv¡Û/¦´ 07ö¡‰‰#Vh»õªÈR¯7êŸcW·ÔïÝwzB @ÚO ÷ÍÞû1T™vÃêÅôåÕ“õSõª §³P•œìŸönŸW?¬n¦¿Z°ÊQ’ ñÜc‘ਞjVHÃÃkI9ÇFÿˆJ:^¬½35b>TuåS¥.θÕmlN}W¯œK]ÝÄY»>위‡˜u½x÷ƒâX5VÕ/β°¬^—ü‚-ûíûc¢#ïdÄZÒµ!ˆH…ÉZbQCg'ª«ÜìÑJUTûÌ0{»P«´RŠ€ä…Œw ®NM‘…E”Õ²x%úǘêú·×a¢ *§¥S·DŽïºž­®Ôõbß¼]-íäLY6JFWõnN}Ÿ]zGMhCæ*‡,òªçÔI lL,et¥g5÷Ã2ÝÙùeçãÅow§‡ÎŽO/;ǧ«wÕ*ª&]¼^ü–éqïKv|š¹›)N—vÃ6Ü¥¢€n€ÂEðC^p§ '…'ÆðÂK*ŠïtéìãeRŸÂºÿn:¥rb¡cJH+<8as1E ã(|øî8­Ý©ãY>약š‚|Íx-æÇì­®ì¿Ãþºh¥×'Ÿ•__×;€-àdOÐ?ž¶Ö Ôo_êH¨ážÒ“«îç«ìIUWÒ$4¾xñãHhÊBÌ¿ùŠÉcwt/Ѐ5á˜&ëp3máf,s Æ 4ŸÀŽO;çÓÉï ÜViµ LÀQú‰$(Â\r"$4hA$Fb‰Íý‡—çëзíŒþø^ìýo×ãÿÛòLå™W ¦vœÂK'¸Cœ1Šõ2ÿ/ÖãÿÅîøµWÒ…©gœkTH˜ ÁÜHfÀØ^æÿáZìWÃa”Ê¡…€ú]õÄJn¯¢(WÔ9â°Ö\KšÇ[œÝ*I>>}¿–(Ã}Ù“?Ö]?}¨'i“[|ÑçÇ™Ü/`=ÚâÒcÌA1.)p¯˜áBSèÜæ -”ä´Ú uôŽuñîüøà¤óáàüøòSçìèh-­æK7¬Hûì‰í–¡×vVg´wL€2¡ÌçÀèt*?`p ™ïöìÐÓ´î…À¶;èÂØHDLU¹Ëyn<ûÚ†4† Á¾;f‡‡‰cfm‚Þy`-ìh²Ÿ°¶Fu³ÇÓUáØÌ½ÒaÙ²f©ž|ódÅÅéëB´òuX¯M+)@¾0Öß¡aGwý¦‚ϳ‡õä÷XT½ï‹»ýùÍ*n¬ÇŒ{¡þk‘Ž1=:éˇnÖ¢;œ¼ªè^õ`Œö•¤>}þûO4™ÿVV;¬UÄ¿ë‡ iÂâÔÙU¥˜ í™UŒm9tÄÆ<1ê”°.JÖþúͬ>Ð A RbC*‡e‹»®ÎÊü²*óË<ËU óþÙrÕE×üéú>lÿOíDw¯X- ÍT줖õIO5}úñZHºÇ3áÞ[.À ØYŽ¢Çèì«”0ÒþÐfëwØ4‹Öãõæ´êÚom.4zª˜üÝk¼[úIfô§&÷2—EÝ.ò{½í\.5ÇSoŽ*[.=øSǯ®.ë`ëzjg“N%cy¿UÆ)Oþýíú?Ú"TÓÙt‘†¯¾i‚ovrvýÕ·ÑÓuFA-/óß7ïßNõÖ$•x€¹ÛV8u)fí®öâÂ'³ÅÛÞ5”âLšÊ0nrpí55*$ðö±A;’d×ÏÓ§—¾nÏtnŸUç`Ä¢NXî‚W*1RéÅ0Òk¿WîlÀ…íµ%G†%rÒ(  øöÅÎê³]Œ] .$918q®}w‡âEŠ4X«œ¤Ažyp†‚-”’ñûû³W¯Ï_?ÿå§o^' X9¬ ƒËÙ ¨Z%’¢ÆÎl¢,Æd4ПÇñ`‰æmM¢Ó÷ÛÓ£ÌP^1»ufû¥MÎ=.úd=]cZõ'¢‘o„=ï·y‘V-5 ˆ5üß.§³]X²M°0ì4}6F‹Ë8Çp»ÆÑ®yªV˜Tž¹À“䯨*IÍ ÂHÕÍï´ß½µMêv»ÙÜìž.ãêj¶E0D3.Á¬æ.„Êjeeâ)9ŸRNv9ñϯ\ßöÖ0gÄj}ï•O ƒE´„iLÀzE¥Œ³! m#Í‚Ð<ÿ˜®1Ÿ×ûp$ò`x¨N9ÐížWQj*•ו¶&öûÀœè¶ÛVo· ;Êìd ÅY â-‰!(-@B¼ëñ,#eAÝÇ ‹µ¿ÌÒ8,V.½UœÞ‡ó»rd§å>~¢„Ù‰ø›uïyyݧí•rSšî 3×$®úWÑ qlö²ñ/B™£Û¡M)º]7ØÅ†ž²Ï²ßŒŠËIqY¨¾eC}³;ϰx/»½—nÅp¢ÐÕÁÒ.–¿Ne·{î?ÍØ:NøˆÞ§M µÜ9)…Ád0£ˆK¦²Æ¹¨48x»µétžÇ÷É$ ••–A G(ÄÅ0FR$ž»úœ½;´Çç0ºnzÄ;Q®£õ„Ž©Ž^F}+Ûu…Ï@5ÛÓyšÎ"n¥#zŒUòÁ3sbÔD¦=¯ÈqR™T¥¨®õ8¤—¸lìML0 KÈt ¡PH:¥£¹x`×&vi×ïÆêµZ7M×Ó¸z2›®zÛYkMó´Ÿþ1²4Qa¥…§iU³ñtŸç‡CŽi=ÆUè[Øåž$'H «’f°¹¦°)ú~ìÆÇêÇ*«ƒ’vB‰pHÃ` Si]ìù±óøa¸{äØ GéŸ'78B ¢€hö‘Ž`sËEÞz9ïñdv¾½dõ ^{>ú^'ö-Gi4G™35—Ô86®—v¾ª{Ýù0ð¸Ï~»HµÒàá–шµ½÷c£-çr·ýîVwLÞ,Ê9!“‡& £IH°nz$¡ìh¼Y4ˆ_Ë‘æ=i@‘ílŸ7þÃðמÇ)ƒ¢ @.ÚÕÇŽÌ÷™eÚaMëñnÒU6£ŽîèžX!Æ>`»­Ü€KÐ#Ŵ㬴'hÔQA-8D¢Sî?,æiúíÍÍ »U³]úÐpôG·µ”4oDnrÙþÆÎSïz0þKÉã. ‡?¥S°¬Â@Y"RâŠc©U)Á+ó-4"ãw9Û÷mßy¯Ät~B 1ˆQt¸XÌêGO ! sÝ\eF†–D¥¹êûíù¯§reš%±wYº!—@-ÇÕð&ÞfóB·ZíÖ*¨¶Ób׿Ê{RkBJ>X'\Î: ÐÀØJ_ñäȨŒkGVW,ì—6,GÑ«^” wú©™Ô•þj k½›“ñÛ9¾åѽîfؽô‘欱1hÛ¿yÐÑp},Ð/úÛf¿’ ŸA–DÊD¸´.PÉ ÓÞD ÎTIgÀCíY’~ƒûpIòÌK#À„A‡ÂRªD(©" ë¶bWñT¤>¹Œ1w3g@ÞÊì¥ð/#¼T ÆTGÏÌÍz ha†;§Ì"¯uÞ*ª x#Rxo,oÙêFb?ÛDçb>ï-ÞtøÈ»„Þ“7qÍLŠ…»}ÈÝËÞaàú_iÑÚ Ý:kßžI»[&ý‹¶m_B‚Z§¨HÅ¢7Æ'ÀÆ6yÊ85ac_šn3/ûLFb^æñÃÍʈ3ï–Ñ®ã×­è ƒh“6wB.&š~w"ö3%À2HÎAä°v «àcç*¡¹œh¯¿ë—i)Œx^…À¤!§¹&€p@y€åGbzbß“öД C¡Ìç’Ò©ª‘®‚>*|÷•lK+9–ôˆ(ª«œ@š¿o‚æÉæjš†œ’òmâÑÂ&¸É¾¾@ðùºoõÿõf²ÚlNýÞÚõúÅÝß¡S0Ö^,®æù^! o£³ UñHX0ï ÷Æ’Èl°DÑʺ*j£µHËm¬a~Ò®Îaó¸¿KºùW”F@4<á<ŒõTÁ­HA)çBŒË`ÞH9˜bqÅÊÉÌ£‹´êVéÇ\ nòa:Ãò¿ÇÙGPÈM©ôºùåex5ÇëŒúZh Ñi“®J‰§Ü”SðÁ*h]¿(¹£.Œ'åsãïÅŸ{8§h‘h‹Sù‡w¨ENË¡{…Ò¾hï&ð"þjå&aºú½!”«Ë¨?.nÞ­CnE¶tý#zyY—¬‡·ÔŠPÏ·ËVpösXf¹½iPÿâä²]÷-1¾î\ºÕn2‡šá‚äîš—ÿ@ÖöÛIT‘ž;ô¦˜•×ÌÏhA'ëÑaDöpÎxÌÅ*>$¯ëÕÒž­ë«ˆh~RKÏâ}Fó§HîÚ-~ÓDûA>ÎÊ“›Î±>FW ã`u<ϧmuù"8Ÿ¥u‡o]G×Ú/ÎÐI+Y9ÍAÏ'©Ö3u!Yiça©’¡j\ÊåWÓsQn¹Pÿ¯ç!¾?Ñû9S\söywEwz«{wOòZ~Ê+ª÷Ñ8îóÓ»”nPæ«^=Lsqv>»¸ÛGhÆÊYÆÞ ¯ÆÐ´H¯K»ÂßOšƒ Údlä5EhÐÄ[f<›Ÿi®…C>ëïž#ù9x`Õ<±Ü(h9;|¼Ù¶4ƒmîÑß-f¹$BÎ,ÛÈnP»ç[÷ìøÀ}œìàûúZo¢Fë8Ö¼ù÷¶˜ß†u±sÀu£C‡¼¹Ð< žÇÚNóp»1θ´–€M·_ùäQ-IX€ž>þ>_ÄÃ;X#qçæ¾ÿÒû‘Çg\¨›kËOìzmý;ô¨rGã+x\ªüݳµ—­v<>Ö×H2ý ¨­£ò>Z¯=ø†ûìììÔ@[! ?¡µÚ¦à/A™€™_„É×ßMêØ«Ã›ÌÒÓ´÷Þ.§y!íòíÕEœ¯Ðõ«Lmuq°‘^ï`5ÏQŠXn¹³—ÛŒoƒKMî+-оŽÌMþ¶ÏM~6Òû°;“‚ˆûà¤Ëy &{S¸ÆM ýù8èÏ¿~òó› ‹-#Ã/ö÷MÁâ îõKh§öHš|‰_¬ßmùÒ:g³¾‚|úðÿ²^|EÐ;]M/¦3@Œ­ý[=>›ÔLm‰4¹X²Ç.7!ñµéB÷>þa/.gñ WL>]òõu†J{>³Y“ a{Ó¶,‘o^ý­­ì¥*QEeÁ1Çx•õæ7Ì…ýéÇ/²N(õx@ùÎTñCsh6ýT:9&¬ÀiD/]Ô2 CâÎÔºÖOCnupªÎfRß}U£Ž“ )3U à4X4‚˜s»5ŽóŸ¿ú'üçåO?¼þŒcð…q°‰¦+Ÿ”HÏ‚W‡Ûn{Lxè{¼ºªxtŽJjV^d°Åu’ ¤,Þ¢®¦óx9æ š7çé¨qÄHãÁ·" žƒgô¥!úŠ†Ûæ ð YKéÎo tçM©´±`,Ž¡.¹¢+¼òœ†DŒ·»¥tçáÛc7vÓÃd$Á(gÁHáh(6¯È­Ø@åtýñKÖ*°¬+÷ãtõûùµÝ–€"qQ2Âi¢­£4`¥ˆ¸¹ÀýFŽÇ+¿šv¯Øª`×X §:(¦­¥2‚'ø®àãÃú>žpã( Ê*iØ×¨‰ ò*È’fª¢QÝ‚»/›S…Ý}^ÍÁ¡¸Þe{f!¡ñJð óšÇ¨äi„1(JæFHE;pùޤº>zš %E¢6ÀsˆÚ+§)¬­£;d£Ý†™ãúN]ƒ@6#P¼TœDÏ£Fžk_Uœ«nïz½¸âÁôt€¢w`„0ÎQ¬I'JhÇ%üšh)[¾ÿ¬„0Ã¥‘ؘ<@iÉ=ôå-ˆ ¸žr:iÜi¼Z¹ãú2ÉV '-`é ´(ü FŠH¦…×qw_˜ZR‡“|ú€øS=˨8Iø'&^Ø p²)à&ùîž1à”AJl°Á)8 + 8¸O”sòã¨KÙ°R6ìTʆ}EÃð²}“T²)†G¬uåãR3ìî5Ã.ÿúÛÕl¶º–ƒcËZz‰Om¨Üæ·ò JVÏiGœí=Ò‘….µÇNªöØ·Qylel‰;¸ÚØ0Jý½RØüͼÉt½A滣D^m…½¶½üë³ð?W«uc3oÖ3›ükqÕÙÙÙûq5´ÐÂÞ‚ýÀ°OT½ÛŽ Û>c±yù錦®EÌáç¨#úemj»?͇Nèóð/èqÊlÃ4À`¹V‘GU&E"^rÍÁ ¥«§ƒç€Ž§ Þ=R ßà9?®èžàÚk£JRDHl !Hʼ"vGѽÕ1U‘ößQ8–¢{Ÿ ~Š%÷Ðõê»êàa•ö2ˆTb/Ý÷ëêÃuà^övvRC÷‰am¾ªi?ØéFúÄ&9n[9›giñ×QÏø›¹«bšG—(S±"ÚÃèåŠî\ˆÜÛ4R@ZS†DZiA¤‘D:‘.®Ö’Hz7HZ›áÑcÒ‚ï;WkcH x>¦IPÔ‰è¥Z[Xm1:ÔØ]”£Ì p,À±ÇOÇÞío9Î,ØñرdHú% ©HÎ Ë<•šG&ƒŒŒXDÅa±8‘#†¤å0³`Ò‚I &-˜ô.˜´hPz (½)IåP³ Heà±J†jë­¢Ž±2¦"TK¢l5:YŽ2 l,°±ÀÆ?y^0 Vü\X±e zï@”Rª½$Ö¹(–ä®"Ñ‘¸Ê9ʈ £¢å³ Ñ‚D -Ht8-Ç–ŠÞá.½V~›“utd$$ÀöT9mòÞyE5+:Ž#lx¯æ~1G{”ѯÕO±ùŸßæÿ7Ê|O}ƒZ¶‹«y&ÑÎÆŒŠ-$æ{†¼±— áK»tµNiª ]Â.[ÆŸ_]8°òðb²ùßÙüF»yíí(Û§Ï&/æ“ùbþ¤W­fˆ½&Øï:Î'ÓUG<>y„&g¾XOr˜LàòøHó>oízú>î²óðÿÛtV¢gáÌ;ý±$V%ŠVÖUQ­E’ô9íó“vu;e:ÿ䤿B\S«Ð{ò$ãÚ8‡=ñäÉÖç PŸ4ßÕ_ᇫµ…ýž Äæ—ø÷üªbFsûþ Öÿ® |®›œÜ]óì-,°^þ?{Uײõ‹¢3ÁÝÝ‚† ÁÝ\C° îînÁ‚CÜÝ‚»C‚{ 8 î¯fÖÚßùι·ûî{¼v[{sgm˜“!U½zÿIÕc»˜»>3q¶ù[D”jÛÙê_,±2ÿoÇ2¶‚*¨ÿ³X™;èrC¿W‰•טט›•d +7/›±1ôÛùþFJØÊÜàßÒýÏw‡ ²X™ ÿß9•‰ ;+@e.C^^ ¹¸õy 9 Ø9Mxþ=Õ¿çù¿}Šÿ3.ø¯£ýýô¥ÙôÓ?£ªÉØÆØá¯+1pÿgýoæädÇÏÂâêêúÒÈÖÍÝ€Œ­ƒ)Ë_Ãöï¹þÙÁÜÚô9ê3GC‚÷²³1¥z¦oåô_ŸP±üU¾ÏØ^ò¾dc}öŸö ²@Çó¿rÏÀÖÈúz*adÈÿÿõÿîë¤.³¾ùß¡bù_rEWúL9èÈüxVðâæä„þdˆý÷=Û?ï¡¿qƒ¼‡°±s³q±AÁ>âdå†<ûT ÿé ëýüÈ+ôí)4dbhÉ ÉH‹+C OäÀðàÿ…íÕÀx9)qÈ#ô™­±³ `T·ÔýEwu\Ó:‘#[±ê0Ù\¤gâ0È4ÉFÞ¾†µý` aBšÍA„ƒWɵy騽Á–š¬„ûásCd!‡?ªN|Žd øºó{|¥€gO >×úå/ß"LâeÖ3l§º“S47ÿñÞU½œ../V¡ê#„¡ Ä´ŽšMâ*ŠXÇ„Dˆ ›ˆÙC+'Џúzá8èöòÐðúdÃÌÜœMB0°£¿ÁÞÞ>=ೋ8Yô§‚ü|**ª§†}lJÒ¹Œ,,ýeZõ¯ž›cr8Š*›åêC Ä„t$s˜Vºìkª¿A¾þ‚)ê–i$ƒH)øöM &9½¶("†‡L‚¾¾>?Ån8åM ìÆÆÆÕZ8KÓ””«÷!â8B«­FÛå’çÍ2Ë’Ç.óÒ)7á`s’°7ÿ’Û:Z©v3¾šš|D¹s•‰±1%/ï¬[±Ì!å§ìK£ëq)Šf¹ÖÂòòM¡Ã‹ýyû¼R­ztßÛùå•íí…n"Ö¦‹©^ã5 T"öžÿ¾÷œý{œÃöGá|ùdÿážœª*,‡FÒÐÐP·Ûýz,"¢Ð½=«øÅËÔTÒ»U ߎ¸*•ƃøœ\\ö“Šé‚¡!!ˆòÉìpº¾÷\—††Ôu6‹aE*¿jÌg›œ¿~ýzôp{É“61¡\vú´#… ËïãGˆ4 ¶¸„ÄêÉÆ`ËŒ¶Ê¯|üOƒ‰,ÔTTþž¿únÎvTxùù»:;;-–D‡Ò:1ŽŒŒŒôº?¡…„‡‹ùø‰ùòÅaáƒÕb ·UGûã½m¼‹TigA†OXCïïÕCßGžý›ó]é7oú²%Â+ ûÑÎ0²++1‘B¢£¥ôõ)ÑÉø{jäägÜŸèMæ+ b`lÝ´ºìÃcYzsõ–Y»C쮎ô‡Rx0ú£)Þ‡r=Ž@- )ñ9Dd3…WLP.½¿9ÈÈ ÀgÖ œ,P\ï ÅQo°£ôòòZÙß¼>Ý*© вùù’ƒ#6…Ûr†‰——÷''nmmíÂnÁ›4U† èh °ý³xYû?S/jíÍS~†Ï‡ÉÉÉu¤ °¹|ÐÙ-ya£]5œ&@2ÌÎÁAy‡4æõë×½i0›òëQ7këëÝB>×[JH£‹‹MÛ[u•æ°0äƒFqª'ñlkrŸÒ ÛyÑÍV‡ ä:«9ÿŽŽW=ýý9Š¿ޫJ-4%ü¬Ð©½ÿaÄþ}ÃáloçÕ®’½¥÷ß>/czùr“œ¯³»æàà€þÅ‹Uß«£¬›…Ó(]'ÚPñ‰òå/_¾¸ì_¤ÄÇŠ<’†°ôá‡óž‘eä®R¿_.C!x©7[©¿àhùŸ€Î×ÛöƒÁ²»<ÐîéíÕ_h°'ä±!Súð!d -mQMxtôß—„¬–Zˆ*Z/¾ŽSSR>¡¥¥-z-**ÚìâììÌ¿e¡ßE–ÄïÌðA[[IUµç~]Le¡É`Wšh ›Åýó¿ç_Fó=橲šcŸšžÖß›­ @¦ff¨èèà[=λí÷ÕºìÓ½I ¡•KÈÌÊz²ººšÄføiÄXBR’êÅ $|&Ș‡‘úœÍP›ÛVšk¥ë¡Ž›»»yj}q1r^^Þl£ãs—ƒ…¹òG0»¯A9ümM¹vóÑ K»]óÈ«]÷Ò™›%,ƒΙjÎß+###}ŸÀ¬¬®>¸­dÇÇÇ…ÅÅ]ëýÑ1qqFßJT˜ÐZ]“>uºvO'sYâsÛ.ELëZZ"§–ŒèØ›«n܉}®È-¡®¹ñû·^oq­œ×!b<ÝÚsqœ_hÏM8›W1 Ì™4”“¿ì–ï*„´©«~Ëe7þŠI•*A+Ç ’Ÿüù ‘²KCþ[Í »ñ'†Ýü¨üsºÀm¶_㈲KSø¿Î¤`f§€Í-™ULB¾Ùü1Ó´ ±Áab®•ŸKåsüœ˜|uåvu}½ZRÑ&ª®NØÕÕ…‰‡—Ç13’à<)>é#êÄñOPÔœAesk á•cò·'0ðL|ù9– vã?›Ã]3eZX$$áËw›<Rdbéô'reZ §ñ¢ó¿Ù|}û…&÷”É`pâ×`ÜNs) Äë|ú=ÿÏDÌ®Œ9[ ‡•üÑo6WÜ6 ….Œ ˜|øîÖ \ñ/ªsÕ#ýÊ¡Aa¯@+`7Ä4¬þnÄʼ¡¡Aos(ùj;'z¬ÙÕ6tP¦ {"-ùÞ6á/Ÿys£Û±µä$W.#åb²„ à*¥ÿÆ'ÿZ$‚ÛL¹¶åoSä¯_:˜á)«Û³z5Æìtþò›¨Ï ø9RÔÝ݋Љ3ÇñYͲ¶Ü4ÿCxø«y¦«»Z‘ÂÞFþóKí‡pUê~ïu^p¼2ú£öŽ?»ð;Zy9ûÙ¡n@ºPŠ;Ðì"KSú˜Ù¢ÈäÙÚÚÚÔw÷‰«~l.{Ï^[‡‡1`áÖ CŽF}% ÷û„¨Êø]õóLPêì:?¤\ÅDõŠÞ%MäH)>¤§·ÂÕ´Áhi‘„ôrÏV­ xçOWêû\ýl7øü…bz-‰•½Úô°¯L«/‘²˜^ùl[i·Õ†?–©úÐ%O ·¨Dct שih º¾­„Á£ÝÝÁj)¨7G£=/§~îÓÖd½x«1§2;7·–lêhãyaE®©‰ TÍÂëú¸¿[^=ÆÇÆþhÛv Zmwj‚ÔqýTy‡òîÎ1ï‡UOªÒ7Üíñœ‚££m8ý '”A%ëÝ2Ò¯)ZŸ¿z`mlpÝ Çð`Ñ)>0·=úðÕY§„fø4Eçˆô¡-¢gô´øÖ€È&ÇÇÀXò)8øHûètëðÓÁ• )¯ŽˆŸ³»yºP3êîOE1“MæÒk¢we7< ò‰CHlÏÿîéùëÇ2㩚çÀ²×õÆeaO´Š;àk6ÇMÄ»«u†Rm8"¢D6‡ß¥º¾¨ÓÓ},q˜Žâ?”3Èš›-º ÅÞ½{¢©©::Q\»ªûx#£»ºÄnnbZÑ“-Q±ºÒI WÖ¯ðü­ õÝ‚²héZ9¿âãíéðå2ÓxGЬâb}ξÖóo^g±¶Oj§¥íc‘ á°”K:9ñºìó‡cQÏèß^¨|þñUŒœRR´ ©I°3²Elš6DKëܖ˵·Wñs²» Å*Q`x8LvN?ÕsSÚ%OD{ûçlV³³m÷¸_¿þÎGÆÌÉ㨉*äÁ‹háxðÁoÆs`v6¤Òz¾¨ü“‰Ý¨à$LU•íJWZHaT$‰¢ÞTá¨Ý‘úo‡ ¢nêžLDªZŒá(FEoYSE|¥†m.*Fµ4q¯v n\öýÒ³9™xxzúÚüN· Ùô»äÔÙÑ:;ËdTÜÉ_PÎ|ú’f6³ŠCù…6:èØÄŸüõ”]¢²¾>H|Í¿3 Z¼(ó\µmÞÚÇ["푎[ †gÛ&ÝŲÛ÷FF²š9°KÄ‚8a2÷g¾®’VH‹^YèXÿÙMùœšŠF@€ÐÐ|˜¢…AóÜ4§°{gGFÊêœñl޹y"&áv¨DxŸþÉïå¯üL¢g~ÈæˆY‚ÖùRZ ##I<¶¨&#¤~Çë(bŸ®D©ì«Õ|}1hh†^™l>öwø‘'ñ°Å>ï§fd\žÊš0 VXf yÝ®QlhË"i˜sN.á³ ÇBC;,)Ù'z¶3 3Yð|­¬ûs¬ŠÙŸ1ÄNÙ„§ô5ö.u‡Ê"3éLñ:Þµ"‡9Ry &½5æó˜X1flßÍÃAìþTY'ÞØÛaº–œâ£Ÿ÷ÆPKË$G%&¢{³1Wíº¾9Œ­,‰h ÚóV§¼pÖ±mo¿÷ó&ÅoªÈHHÇëëG«îôÌe]WÇ)¬®> ­rµœ¡×9F/>ždF”•UžX‘ÍÍ»V0Fýš™hqޥ싘ƒa,ûZv‡€¶ ±k¸ì[ïÚ4¯þ oOšo¹w¢ÈÊ")L cÓ‚žÿàÓü¬—Æ/ç[£¢Üò„Í£ÕÝJ#™bjœ ,Z¹'gµ$o~>)´Ð’s\l*ºº˜O!äs ›©ùT 8ýÞŠª' $]fÅâQ~Ðʼ²Á@®ûƒSsJ`\›ÓvÁã‹Wò ñ;o¿á¾j$y‰íÌ<þ·téç/>yÑÔñï?4BƒPt»ý`æTåb“p½ áÞÚh¸8—TæI¼þñ¥€\HÓÒüá¨[Öëè5+66;›“™%óðÅY$^ÇHù¹ÑY¹ÎÏÅ&’7¶­˜åå#W¿c‘ Gu]&‹RHië,TÚ-&¾éCÖ³eÿø2ãíÒDW“×çÂæ?“ý¾æå=¡íñæ&júÖhz¼@k;:;Ñ!M^¿¢E_7¯jolLkÊq0Z‰ŠÁTôŠ`‘?çÉ ~j«zJ_ÏÔü•ɜ烯—Wz§î;Ù²w=.Kûiv6úJûc 2&Î}Žm)$*ªìÇ·ª*K)C÷œ`ÏDfÿÜ\ŽÏ²¯³2c—›adøåÓï´6ª ÷I®èùv>Oú9Í¥üSl@óëÜ\Y-§Š ‹ÞwÌiͯË>ž8?Ëñ` ììåz?¾¨6i’€h¨[¸ŸvMé Z|ÆÔo^A†ëŽ}îlçè8þ>D|45”‰i¿Áx¶®¥¹Í/§§\\ì^×l¹¢ÀF«×2,ö(áˆåýèJ¦^YÉôXûøaÉ?†:ˆvp`@““§¾£;§¾­‹~¢.a3‚èµ´¼`$ DJžúRí ê ýå6ÇÙšI9ÔÈ/´/_¢'qYÒôÌ»T47ñS>ë{«kl< (Žêx„G&””p¼+uƒÙíeª j"¦`ëéõ hãðùØCO¯qr¶œµï“ø­¶öµ]抖<½¢‚û…†lBÂ& UÕ)3ÁÌnÂî›ó~@ŠQ1ÔÔ}¯~|yÎÂò¾å¸oðC­S ¢¿oìÇoß ¶§±„<ÆžËQ%2VÚ¯#A~aüfí«t2g˜˜|üÉ뇕“eô╪*¯«NÚ‡òWv•GF×ÛJ\÷:æ~ÊÊ>âJJ´Wdgøúþbªä#,Vò½0q#Ä ‚(cy%SCâU¾Õˆ»¾«I˜Üaƒ‘Iõþ>ÀÀú.¤§C\~É€=˜n)9¹Ë‡Õ¾Èç³µŒbŸ¨Ù•¯6u—>UWr˜"ÛZ2 aac|nCãÖÒ$d`4.,ü¼z¼>óÈÈðG阳3Ž+_id$"7÷Ç#*níci &/8#F©ýc55‰óRòÛ¿3½Í¶Í)?@&&9D²aÄo~Zé÷áAüÑO±J=bÓ¤{ávÞi}¾®Nˆ¿¹kfÏÀÞ6¤×[Ïr7ìæ†±°¤ÙÀ?IÚÔŒ0C ö=Ù—A-K¾ <”\e,,,ýÊs¯/åcÜÂ;<Ðù)¿/´”G`4þk6)Éù®Ç‹,J\<¼Õhß;ÃÄÖàóg7¦èŒ‘Šël»FsØHžEœÜÜTüüÄ£B—¤ÀÕ‚Cûœ8ØxxxðçË'„°:Olyú¾ú^a楹yU3`¤¡¡Qä™ÿ¨ÞâÆö&C8òìÌi¡ÅË$×—<÷¿ÄùœJÙ5%“±«(ºFÝž}lžµ‹÷åKW §¥……A†× ’çÅœ©Æ«W3³æ ˆº¤$¼çq/A²8•¾’’RiV–_JBjêÐÍùn? 6Ò|µ)ÆÏò¶¶tfõÊînn¬ŠŠŠtñ²bb0§ççÆ¤à`„fÏËòw"áÑÑèýÅæÄÝúoß¾œ,¦°õ©KHÀ¥{7õVHIý2˜®C…ìM©”ê¶û –áÑþêí;¦ÆTÔŠŽròÊ'Ô(×mO$úº±±Qåïÿ6Þx 6AÁÔÅ6ïíVx42þ¸2êO)«Áßššø@ÿ@ ]ªªª˜89ã6¶¶ªïî¼ð‰‰ÞUè ×ZÊÍ·•‚^¤ð ¥)$±ú±õͶyßÎúÁ 0ùñOà—”»ÑÉ'u SYXXðÇŸ 1khžlÉ®O®Oý`öì£v³K¤§ÏùµxŒãxÆ…Óp–oà“ä‚n„†¥yç]Z6Â"""ñ>óuГÊ*((0QRúÁÁÂV–¼¯`ï#Lá¶&ö<ùúo<ðçÍg>31_;æ›O›_íloϰÈz{·Ϻxhk“9:9ýÎærÊÀÇË[x6_§­õkÓ8¢j²@±š@×+FBRòÛÄ„r¡amm­ÕÉïøíäÍ.ûk.2Ÿ0(Ê9Þisrqic´A»ôtIÅ[ž4£^¤c}}=@ÀõÀnEmóÇèèùÖæf¶í²®-sÉNÍ'¢ºÝúÌÌLm¶Óü‚ÙR iYYQvP²O Ïߤv"ဣ ÓGHhxÆÄ©¯˜‘\@@ ¶JƒAîþƒ¹WqtæºJtòû²ZËŸßÆs¤ ÃóN]ý»Žï½s|»[gg'ï‰Úí>ih©ešµa)3ïæ·ß•êeee•ff~ÄÃÅ­sÙ/..v)yKŸTQÁr»«û8`³Ü¶x kdDÃøòeÝÕù[)­Ò¦µYÅù«+Özf¹¿ öö"öáù@[-ò$CƒOHø}br29<…‡ Mrχë-h °±±íGÙÔN_¸{{ …‡†ê“““uwç,*UíLT“ yÔÈØ,IE“Û7CÈ#×f˜#³®²/0ô%[_ï^ø’—çSÎ)),Œ–ÁM.4p°Ü>*4:YpËè­`Û|4îµ0›9iÔô€l’”¬ÌËÒ3"¡XI"Bº£)ˆ3rk"2¨ß¹[óRnkÕ+$x *[/4`a‡ÂÂÁuÙšÿr!ºaب‘65'øÚÇ9¯ë¼±”h×À6xº©ù)¢‚Â÷Kìj'…×G6þ$~ÒœLf9Qy½­‘´|ô,9Q1±ãß?pT‚õUkŒÿ×U¼¿³®Áo(Vø~‡¯?[ìÁ¹Ó‹Û»¢I˲öB~“j 3¼7IØÛ#ÑŸj11::ºó&ÿX¦Ivò × ƒ2ÐIÌÉU ¼€ÿƒÀ»£8†‰¦ þ`»]o•‘x#^.ªçÿÿ„õð7}÷ÿ¯/øß®ÿ³ñ°sñpþ·õð9+Çÿýÿÿ7ëÿ°áÈ“þ¿ëÿ"̳KÿgëÿÏ ÿ¬ÿï-ºªªþì‚;êëyêÿô©H€¿Áë¸Jeì×HJ¡\Ã=Ä‘tmWéîÇrǽ³‘U´u™’‘´’o•J?¶RR!ÒSQeûO8¶‹Dà() të=ÎôêU³#Ôm¥2bÁ¾†`ýçõùžÀ“ÿ¼™&c ù÷%jü_½¨b¢úÏ‹6yöIHˆE¸hteûsB nvâÄÔTO¶D¸ž• .t3‹šb,.Üää䱟?ƒÞ}å±}éBšÍ.++‹INµ²¢çæáF =q¹üU6¼)`Y -°à•ˆ..ðàÿ¶áò¿ší[ùßš“ !þï+·çÛ§ŽºóÑçþ&”ì ¹`œêelºœwç7î5™œ)a ‡a€¬ ‘òªaxxxÐW¨¤KKKW›)¶Ÿcb²¼„I_¾|É…uZ«êN¶AÄf îL… Ý]‰ïï‰(-Ävé Ãçî¸\öô!*%…ŽÏ¬,ìûpçît¸ÔJgЖÀP‘#  Ìÿ´|Nn.lÉ»².@ÑhW€=caòæ÷¾á\ò}ô¾º¹1ؙȣg`Ç’èêö¶ûçOtÒ·>m••˜ƒ‰,ÁKî[dLºm¤„|4ŽÑQ ÀОU»ƒ>°—ØËÄîïßc麀`zŽÍø¸_]]¦n‰`ûÞîÑj7t_/oï*£ظøø ÑÍ^×쀱ìçA^‰Uö+(x.EJ-GtºS5´›£^/ED(¨‡DG³ð¨¸ë2þ!ç.0,…¤ÐiÀ”U^×Ð |ÒGéß›­‚Yö¹eÆgщ˜U¿{¸=Ø*×i ûøâ$®z£CÞÉi mßp Ïñ¤¢ˆþÜ7ã÷Sº:«¹lAWÐ;V..oÐÁJ³q* ;uùl€ÙÛß)P̬Ðizàg feÅÙ½ÖŽE@ ޽á8_gÝ L“ž¡aÀaû#977÷ì7cá»#1&­ºÒ!^Åèûíœh»“ß2q O!oÒ‘TTTfggãR²Z*ðþ¦¿¾†¸¸*4‘åS¸Ñ677Y98º{BqtyM€4[lâ*-+;ž3ÍXaØê‹"C±¶¶>Û™Dàãã¥às€U)xÔØÈ74<ÌæügнZ+ý¼ØÖxŽ`—Ã¥Èé’÷†wWÇô8 !³··»…@b%4~2ìz‘A"â#ô‚¶¶6“N !ôXYY”ò 1iiÚ&©ýü||¯éb)ÙÙ±;b“倇ú,M³aBhù·frß <£*.ÎÂÁÁ±±nê{ªîäç»wïܮ޲Nªbb° -o_ææåµ²To©mΆ„ 2i7ႜQ¯³"5åïÿ4...S&–Λ (—î® ”'2~'·}ù´­ J!!íëçݙݭ­-ÑT¾ïÃÃ̧×[Ññ²yPÿdfFâd¼&á’¢bèíÒϰ¿”-M)PCÐëÔµ´` ÊÊÊ:¼t||DÖóupZÚα±·×܃übb”’íA‘im¶„‘“|nx±7ggg÷6Ýä?¯€@ɽ3*1'b<šÇŽËé! cFì÷æ[zlæ4`€ægÙc>Û«ލ3##£ÓŸ)$fÍ7cø„¿`£JaGD ÊWPP°ÒjŽæùóõ¥VOõj“a”~A¨@nv–iÕW‚*jhnnwYx¸¿]/ÈðéZlvµ½¹;›T4öÞ¯ò¦·1\Z@[›ð—/_â(ž+¦‹ƒ¾Lƒäµ ÒฅŽ]évlàææÖrÖ04$off–YXˆHÂmüÞØh=SG@@¹ºV¿ìã©ßš®ÆOýOš® Ðtˆ d{ ò.‰Ýù+·uØñz?ãe…ûŸažåžö‡s–ß[[9¾„\S–ýd&¨@è(ŠÜãvÄ Ø UØ.·ò;ÑÏTèb¨¨L:DÿÞ,_¥Ç¹E©NkÓПoÿx‘ð©b `ô•jTNI ß±¼ü˜×¯ð•Éqk$(* ½/‚†€€`(•‡ñ]©Ûª:pš<<<¤‚n˜@÷§k5Øéç™ÿEþ"”Ðgˆþ³”€uÄ€«8;?‡Êm^>¾Ö‹+óY 6ä¡OÔõ)j™ßîsÏ m’Õö!X}¦\;|jJz)× ÿ?”"igÇ*($dyVû—+t(cÇBB :"""i9¹î¯\–+kkT.¥²%,?•拃^(CÊkÔ`ÐO Ŷb.(a°¹ì©sÚ,æHE÷=Ïðò7þºÚz¹¤"|¸¾NmÐö÷¬>wn-×›)Ûyá³öOn–˜…¥ 4gl&^ m˨vÎÿÜ Âà‘²ÆÈN\ö¿Qµ „*û>Qè‡*CÌx%uuzØ¿;AÀ†…OÆÎpà¶]brÁ­Ë E99ÍQR>‘Î[ç¶Ùƒ ¢¢pwWb «›š ¬ªªšeûÛ¿uÐ ÖšÚÚ˜„ø×˜WÇ_£Ïw»ÇjŠp¢ÈrNªÚ¯7¶w› W»ôÆ+ªË½qñð²€93x¬…¶Ôð›ÑÏŠån×åýÞ³t;{ó‚“cÓ¡£Àää'&# Q¿K©WvP°=îûÿ=iùgDÿg!dàÍŸO--T b„ÄÜ>c3³”iG²Ä”’X)!Þ7³ÓÅU€ÁJ«~þ£ ‹l`cÅLø>Tã`P˜^Ÿ(qiâ>ù,%µ·ÀG´5ºÜU©Ïx´ÅCöüï¢@ù ¢w¸48[µþ4á%ÙŽM÷a›E¦*ÏKÜÜ|“ÎÑCÓÜ\£©Ý(ûúï.Ø8“¬Ž›W¿c…޶ÕK*˜SžÑ›±¿€GÓ KJŠÓôöþÛ*†pO°—„íѱ|¨¸G‡93&­”‰ ù’¯/Y¹®bo_$Åj$O©Ä×иMuØ‚þ|:h>|óù“ñ}VýÓ&ÃÄú·¡vޱÝ˾xþþå! AcFiRcê#™0i$Ÿ£õèn=ëEÑ=Þ±‰/úln—Ú¦ò©„?~T1úÛ* »¿èOe¿Ðœèg>éÓ‚e ƒÒ¯,1±2 hT|üa6Ëô…ÆSÄjSÏp²¿ùVع’Øí³(eDz/-¹ðP§ÌdVI ­Kn⯶{R舺.íDÁ¡ÜQÆÚ‹2ý Úào(Á›4ùÐð9Äûö,äáa„•Õ ÐðS ³‚ÕJú€dRÙSÿ›ßçÄ¡ ù¼oèXD"ÛNÒ´«Ö[þ×ÁT*Ÿù[¸^ŠQSY¼š˜tdµ[ååÓXMÔ]"x“×Ó›g0U¨›YP¹ìKý®ì¬7ê_7v0-„¡D|j24 Ÿ,v}NV0ñÛN!@ž®7óµN,• Íßó€ c%˜*‹i6Rü€é’~QÝö˜YûâžÙ"—ý¯¨ŒŒbW×esÕHÿ†ºØš1\@tË\÷ß'qYb’’•õD©0åêºØÇYݤ nd€…ÓÆø'ÇZ»„@¸ÿ4––>uscŸ¯c®4Ÿ|þY–Ö@J9tBÎdt)ˆYkDï`Á•ÕÅŠ¥ŠúýŽÌ^…ƒ‰¥4|sÙîúL¤Q.!¢”G bf&Íf»Äª®ÎÙ_ª!`·5B=”¾ÏìòŽ®í‡*4òùš܇›]ö:›´ Ì)!d’òé‚IIè.¹yƆO}¿}0Vø85(ý)šU½[~¼*RY\ýÃbyréúÉï5µ|æÇˆÁRM.|~þ¯ýÿ ˜ÜB5ô\ LLZ¶Ì~ååtw§*f!dEï>49‘ö?„q[GÍÛRä¸; ýÛ³¢ù‘ÉçTÅÁÐŽÇÅ¡–êÜ뼃djñÈí- ÁiÞ½xAôoÌ•þ6/¹£ÑjÑ_.¡ÅѦj}Š¿qöõëÉg±2lfcÊ==¹!d¡A´ì¯²Y~Ó?”<¼\~tò‡Æ…tœ„§»\;VߨQ¤דûõžôßܱ€ö4NooÞÑ©V€ª½yž4A Ô; 2l:;”®®·Æ.˜þMž¦¨¿»<Þêbè½ÔÀ½W“ûÏØ¿²èšÆfoyúôMè?*‰ %ûR|¸=Nxw2ˆÄ¤ÅÍÍÍÜ¥Rð¿Òlþp¤1_=¯XI& l{+õÙœÌ\A÷5bŸc|ŒQÂJm$37ŸûxŸÏþÍ:¡hèNÄ*ô°òé-D¿®n]Ašn]ß twdbÑÉ#¾’”$WF6¦Ž…ý7ìÓä»séQV7j ûú€ð73«<¬@b|GÚ¹Ðø:IÐb2zÁ%H\[t}¿~¶CRYÃ)®>ëû,öxWñ/`bC-²2AµÉ¾8à•w¥„ÝÙ…ð  ‚t|åêgõ¾yö7¸9+ãõ}øá#éz Ø•À\ ñFæoA;ò‚Ò”F³šwÁ×õª"Óª‹Ê®3è7Çô¨0˜ÈU0š$í묫­}e]]ÓQŸH:'qù¿¡V¥†î_XÞì¼KÙöp£(ÿu*CB‰ùääOàjwYšr> °½=*%ööþÿë´èº‘QäVö[q55‰g«M8¹¸z¢¦ôö–¼±2|šà6Z,,í6‡|õ­jbÿÙ“þ›C×8Ð~«jàNgñʧ\x6È‹K@V¯\yÅœÿÿÚøSè}[þìÙ ®Ï=¡f=7®À›€ã+û—}QÚáʽŒÑŒ/^ô^ì›bQø¶'|ùçDèÐ|p~++ o2rsØú“Dì“Øq"7ôe¾‚cp–¾¡4Í—÷Kîo¨bÖæm/g øÿÖà×þ¿žôîîÎGòÍ›'‡èdd UÔ\ÒyyȤBÄ€=¢×‡’S>ÿÈ¥ùÒ{§Ê÷Ž éåË} >Ê¿4ùÝj1û‡ÒHÑHºìV:Pk,M™\HŸÚnÂ`C'áù”“™‰‰s•žûÜ52‚ÛÙ™!ª‚(öonâýŸ }®¸ô±ýQ–IóìåÝ}Zo”Øè‘—#i[Ç»YÒòò€æ$d~ĶF¾«ðÁ@pÅú·µÐ™ŸbƉ Pt^Àá—¼oîBê÷ÓîÄHp¦CJZWV.)™heªh®Å’ì/^7Ë'Ï"…„lÿø’ÿB…;G‰ÚšI}…Å…òJ_ŸØÝèÄQ¿‚X1ןÀqËímΠјç.47)ùùt#iÁ/µyס¢£ýo'žˆª¶pœ´Q"Ësýñl½»Ëö€ñ²”¼Y{•? k\@4«Éš˜äÏbAÃ6• º*GãÝ;a:ù+4¯³˜’5{´9¡æ ŽÀ õ~3Îq›wþ'ÉpP#C¤iH¸WW:é­æ¹±†SvCÿ™â A„@µp(Ý&yÛíKL·®Þ¼´ÿóŸ«o€D"(Ú±´›ëújÌ ú‹pþta·äæÒxu"Lç¼ü åÝYA õunÿìáûèùœ\d 4™YíŸJº¿/ìêÇÇÇ78ùý£²²ò#p•w÷÷Ç+0§ž{~¶ =^Ìj:ÇØù¸—*[³ÆõÐxoÁýI8þu÷lCò¬ý”އ‡GPt›!<ÐúŸ„ûÛÿ—ÐZ©¥acCã0}ð;^¿íèÎÉ™µW-oh Ôõ:†‹ˆŒÔ·´ ¾1AC–&FV@@ ÆlüiìsEÉׯýN®R¸;'&°Ùî¸9ßÏíŸ*RÑ70xª¢¢iƒƒ«¬«ƒ‡$%%­Ì”iUâCüØ7å¡·¾ ¡†ã3wUöC æææc““åå嚺ý§íÀžû''É+(ünዦ‰²Ylzýþ=ÁÌÌÌl“³e²åB•!‚•••ž…E ·ÞÃÝ5+pÀ;C¬²éÜvó‡qC¾Øgj]¾‘ñ)}sóP‰÷m›ƒq—µP¢Ï&¦*,’‘‰ _PYG'<0;»j]UZRòä":zùØ1°Âx ³³ê”ÂÂ:à˜éÞ)OžAç±BBC±Ê?4R—‹ä¸9¤$|yÜOì+‹ópÞÞÞîÕ¦£ø7g;Ô=½½Hööö¢ÂÞíšîKÕ:Î{Ã)ºâCã‰èÀ‘Y^^wî}}’× i®Ð¾LLL°oihiµC§¥„vÕú…ÕTUi ³*þ`wh耇l9è¦|ê?6q0¨ä}ˆ“&¯×U剽¼|ÄçØXjz\äUè„ëCPÿ'Î:Ws?]ÓOŽÁØÂ5~('ÝšÛu›¶>TÓ ÓûkÁU‰¾}Mo–k j¹6ŸŽæèÿµ\\t/^ qssôïÿªõ\%G¸«MK#û=<4(›ÏáM¸.yë/˜Ž– UõGSôçÊÄŽµzº¦òÚ?¥££û><,¡¤„…ŠŠ:uÃÈy „õ‘ضؑ yœÑŸƒøC'dØ98ƳĂ Ø9­áB2‹Š®'úiii;§¦j†¶œœœž!>…dzß^àù oÅÿ›ž_{Û@ðÁ ‰’¸÷]#Hç`lÛ@ÛHylÞ ·¹Ÿn¢ôƒäzáë}ã\c1-{ÝТ•Wo1]<Ôp||l‚q!ï‹$Ax N?’ÊJ—†ŽŽ¡DÞ.¹õtúøGìóõß?bÕ« zåUÅKÞ•aR\Ùˆ@F@æÚÙ­îCñžeµêR>ÅÅѳگÑÈ€]öaaž³œLb3d5Àíéï‡Þ¹¤ës½Ò½Å®ªª*$,¬ D–Õbªðg”€A¢×ÍNAƒý:¼ÍBƒt*•…ƒã´¶Ùÿ#‡‰ÞŸ©"³ñl¸rÝöò»«ÝŠvV£ï˜µíQ[‘Ä\È*o$DEŸB‰)çùÈ­ÉÉIÊØŸ32¢ù7!oÕÕºžd,ži¾÷»º ²^99q¶´¶V9íL$’ßÿüÐìb§›òwÞ'$Är¨ƒZ÷Ó ¤wït–/â ÈÆ«ºŒ&úû?Õ•í£giɸ7W-e¶ÐPuâéjrÞ…eddìüþ]:‰Ý8 œ¹Âë@cTxdp'_>™Š„¥¯¯¯ äsü…ð8ØØØ:îVÅ•<Šôôôó5þôÄŒ €¥ ¬ÜÜøÐ…ù$Ö×ôLLªÂíúÝðÐIU@˜ñ¨¯nnA¹í; >òĻګ…ÅÁÁÉÒ¨6éÚÏ *--ML/(þYŠxðŸÒÀ~}å©òˆÑd`> ®Žâ“xlé%#ÿ¼pIeø14 öêÎÎõ¯õ˃ÅpÓnùL’ðú%¹Æ9ª˜WdK9þ 1’?|’Ï5ØÙáKâ4ÇYòªŽý…/¡†ENõB%¥3¡ÁóòeÛ݉ÜÕMñòIóÙ_E¯Mé ý#ˆæï«Òë´N¨€%ñÍÍÍçÁ ;'§À˜, Z-7N×û£ Ø´{§ÿå4†¿ ^bÕJ¢V¯Žwg[=‘¿rYÒ¸¤jN7ØZýª)ZØz_¡£n^\ÞöáJU³7ÜÄj?Å¥áLék;§lô¿ŠR)ê4•ý€·Bè’ÄšUñP5aÈC_ka®¯%Ô¿ÑÐ`‡þ?Bí£šÊ«Ž{‹žDZõo^ &(ôD‰ý3—Á …ÔbJnn¼e¯S¨6-)ùŠÚà`¡Q½ÞF;(š…9þ‹"Nc£â’¼ü‰ÃWY<üÏÉEA Ìj)ï1i>KʦŦ•¥’*$}Ý,æ,ô)…y AEEfL{Ï$#£@û"3Gå©ö"öövC5AxjTkzÿ‹Ù]]Øò_kÐÑ7“„Uöx~æÊàȧòb6fñÖÁüèÿ”ÈÁ‘ëñepúˆ. $3‹Læ›D 8YäÔTŸÛ:Âׯy¬ìÁªÅMßhèòùjjdõ c•V•UÎVü^ž£d•hecª8ÙŽA>Ù¤A*TQX[o“Gùò%žŒÌÓ—¿³öÐÉ %cZºüÎIG,`jŽ÷ëmÃÉ da_¿Rž — ]¿9÷lðÂÈ*¡¬Ì‹ü´¸²–ëu0zÙX[+¿«øUÏlV}o;>!V%DÈó¥þzŸ¸TA­©ËÀŒ jb®â¹/Œ‚‚äÝÁ=ƒ†ë&xü[ °W7/ ߈ yÇÐwúªÇ²é2RScPRþŒë¥„ÎM]]9ùUØò-g |”Àþ¯%_5I{ûww Ô,„·—ŠÁu.‹Ë7e••÷`Âÿ\ [Uu‰‰çLð³<ïÿÍËì•ÏiÚ"Õ§rrÔ³sµ¢·ùfËK°&f‹¿*G^R–^]Ý""òYÏdçæâ’““±Ù¤’¤¦þšÒüä¼+ZeôƒR\Â[wÕq¦­·~ù@BFæäUŒÞrÛèXžÜî×0×¼öTø •¾¾4À™Çõޝtjï“=AA‘ûœô :ëALMŸøcßÇz­ºÔ×vG¨5ÖóÊ{¼,ßúÏw/1‰’K?ȺÜßáâÅ¿RQ±þUó1 €””ieEÝÓ“c{Ç<œLË8,LÖîH—ÛV8²²’W]«¾#ËVï÷wrVÖ±’sA]ïZ’÷å ¯õVj3Nw ´Ž~ê&¾UΆ¹Ä„Ë Ü=Ü^f°DĈ–ÒÓƒE'm»»£âå×ìì/@ñòâïÆßT$C+£ob’É­NõOÄ—o•¤¢ûô†’t«¬æ¤QÉ~iïñ‚\WÑ@Zt»E1¾Ä÷ÐDŸ›­ üôIõ÷507 Ã3e¦Ÿ““£îôxyjÄ©–P‹ª }%&ó› Ó~x¦£‡ñíѣȨ©ðRRŒxù*eþþA½”¬¬O0$)yê1£¢ÞUög¾NÓ76¦qéÑìüß?O ñÅ‹ùú5Ô† cq‘\.!¢pú§ËäNÁÆ[''dG”Á…н "1|VnÍ¢ÞÌ·ˆ¼îìä)<}÷1¬ìþYbÍëÆŠãÛf!€hE¯ã ÷AQ£ÃÌeûíYoã¼-~äÚ9|ë+׎µ¤ÊÀÃOxÆÉ‰ïç‡ÅëD¬¡÷yPae}’ȶ}Ñrß@ WÂ9œFKK¥VýF: -Åñ]zܧKÞ®xKÃ9öë_µêâcb‚KÞgàŠ*))^àËJ»…L(ÃÕÉÊè´7‹ìâb²=;Žº?ŸÂÝ ˆAndØåxµ_+-óãÕáÒ>«‡“bËu>ŒÑ·&GYLØë[ZŸ+}zPïŒN#sÕHn·ûÂíŽ[FgŒsŠCj³kTý p°Ýà,=/+ë ‚ãÞüerqÎÌWÓpèôÍB{FSÔÂâþꊥKè_¤˜fÿÛJ‡Í!T’:ìeï­àËåCí {vŽSL’M“è,POúú÷˜§Þ&Ĩ‰¿{÷äâ 5â|·ÛÔÞ†õa0ú¾Î–©ªvëWTÅQ ^÷³É|ƒÁò|y÷oÎæ;áÆXG¿GÌ´ê¼üÛ¼çKØ‹zBðrAToooÞ®¨(ô«§ÃïâèxõywöOÞËoßNeå3E§3I?ðîýV†¿K#îÿNÑ:XùÕZйWür»¹6(”KœêÚgÁâC<õ¡Þéæälë-U®2’—wójë¥G÷’Ž3G³Å¯êqBŽÍ÷=½Ã%G½:­›Tlle [\œ¹Ûc¸>:a¸A¢¯TUÙEEËõ–‡Cg°‚$ÝÜœŒìUѦ_|ùí€àèÛæ}à²5¡“?ÛÆ@S”÷O—ü@DºÎ^˜/ÑEÕnüˆ€ñíI‹:ªó® ’Xw_­;‘E^e%l0ºÄ*txµ‹yT{;‡dôA(0:¡du¶"Áw¦6KwU¢ý[›ø¢/y<µf&&>äÏ÷ @‘*x³Y¡U• ôôO}Ü‘±‚°T¼ÁŒ8XœçÜÞH*VŽ¡’Y¦¹S- ]šscç;L Ù¦N%P—*qã§½cƒõ1 0+fCI:vv•srð¾òøºwŠÓÒöPª24ÿ½‰ß5X‚Sg›øþ}ãìxñFgS•Ʊ†!Û 0Ø¡â„æfÒã-äõ¬Ÿ¾{'i6_${9Rne­ g¹4*r©Œ/åy) 2ý-!1·d»Ïþêú$°ƒzúJ )[…+Z¨^01EA3V ¦3dìhhD Œí¡ñÑé.¾º6Ä]É(<`dV{¼%tÝÔ³ýª(•Í¢"„•‡çÕÏòB‘6Š&'s4„SYŽë›]‘˜Ô;BJJÝJúâÜÿ¦K½HO'c3Á¬mßoeø½—m¿þ‡Ù}bfö(w,÷¨ÚJý7„ÜCHDDîˆHŸ@S¯ÖÂ÷“Ø Išœ«„Y£tß@­ëý>^è  JSuKÐ'5<œÀöQu±kcPæû°÷I€+hâÑù~ØKmÍË÷ƒoëm—ñ¬~9!—¼‹,û™Â\¢¬¤„„Nѵ9\€…Ìm­¹R=ºÀæ`„aƒøáïm<§¢¦hÚƒ‡‹[B…}¯ Ûów$u(N´•î§«)¶2\%þúr9µ·ñT;cYô¨jÐHNÙc…ìÐM±4 $WWŸ/Ë ×–äÉš>ä‚4_逃6òñÞ¶p ¯¬g²Òxº$B±½Üê6¨^iš/?1Æ:ÔµQDîXqFÔÈ©é6ÉáQ“¢qž›di âåç$þeus| Cm·Ò¡Üjçø8²°°6TÍõõ ÷DIs•øæ¾ ·û4ÊÊìcÍ®¥øàmÛv:šÔ^™=ÍËC63W;´¾È06“(‘ˆÏÌÉAruõlhžÏüŸ•U…Å“`6WL (€—ë›·èúÕ4k_„¯êb®eeÅpqùêÝ;atxsu€µ‹ô»ö«Ö×M€|´cVIIPÙ0nbŸ_J¦sgÛ<ó^·TÇ5¿u0OJ™µ–bÇÀÜ@7ï h†ÚŠïtR*ŒŠÜ¹å64ñÂ׫U5q±{s˘Uð¥@>´$…tt0B«K"!< Ug_~Þ¬½ ,Ô)¶­²sR#á!‡¢'”w ò˜ 9Hôc^%)YÙʶ°'³sÉÓÉsô&Ý‹ÞO<Î̧K–qÞ¤}ŽWûØêÉbxÃú¡ÝGÑ}þÖuÉ>°Ü¦»eßÛyã7®èËŒ f­¾Ýö 5ò­Î+§.èe-ÇŸj‘q¾0j‘ÂÁI¬<Ü3Ûÿ>°yœXû¸­±'ü-86ä¯/õ÷ÄÇRêK`°[ï h7E£]™*"6àc~><¿“YÞB`“©"IR IÙe¨ÔR寡|J~Gªðu;„LF5&ƵÒýÔºn¬\ÛÖ¶x´äÙªo;Új_,§f<¬Àöµ%ôr!5}Qe® ÑŽ ”zLàn/´_[XÐ11£J¦±ûGl‘l MbJ§2-’od²ÿ@¯€:s  ‘îJæ@ˆ76%èèx…ñæ5«Í ^ú×@ûÕ6ý|ë̤ëCh:² ü+¼.°V+JµIÂN·lÁ8Ñæ+^vl —jPW­O“( < Íúr|5ÊÊàW]Í•šVv<ÌÓ&+)ýkï—3ÖîLPWW6Ÿ  ÿ7Þlä’_uƒÐ¡–¦…Î,@ž±T »Å…ŽÙ HïíÛ· Ì)+‘<¿ 6‡xV÷àɾŠ1¨µS8¼ÔnŠì ÇXÛ­@ÈQyîXµ>Õ ø—ÉçñÕÁyeci¾^ñ·õ¡å÷ÉG©b­“£KI!™_·¿9CKJùˆm{—ÇÔhÑ´`}ˆ÷ÜÝ%E|¨›\¬#‹TÂȤ6Ò—.|À€ŽMMu|¦Ô®òieäwbÅ ¾W’ ê&^ߢafnÓæ¡ÙÜ„'äA[ïk¤¤¥…¹½”¢be}Šóþ•–ÎË—û+@YÙ¶n@„„¬«Ö•aÞÇÉøÞ;_çILLbÿ˜˜ø J#æ;ouˆ4=îSe»“ßh©‚DÑÕ¦¶TŒ%À¥ãÕh5¯£Ég>*/𨓬ýÔUÔÏv….9^_C¯ßÏaãõºB!$áÁaËúóû7®ÁhºÜléøø hÐȬnm}O†wþÐí ç9 è¼Cè"EY}ÂÊPrÅXSmòd ¿¬âh'8"r“¿a¿Á³XóŽi5tÛÑ£“?S™&Q_nJö"h „WËkŒ¥Dæ|ëÂßÕµ† TðnPõÕY T íÂÂo;çx€,§ðUú§%-· A½¯AdN·0úDzû)¶Ø¼oÞY-\a-,î÷F©[óØv\ìoA‘*X&«©Aí!ýõ±Ûx©ií½ k=>jäë{s°-÷Úîг’5ºµ¿²ãô÷/_¹:Þý,KkçXTïjêæá":™Ï%í ŠØdƒTÙMkæ|Nžvu¯Ç|ýŠÈi÷B‘oª*‡¯ýÚ]ÒÆ†’ß))òËå æ>!A~*AAtÃþ‹>ßGõ…Óo?|Î :õ º>–¯€Az /±­TÁó§\ñæ,AwÙfú #Íoâ%O[flìM1))• Báß¿‹(7¶Ï}‹¸=3Œ Ud»óh`¬{£¤sÙ¡9l”ö 1¼žtà Pèƒê˜Â|@ÙGãRåvåÚÌ2ÇŒ¤|ØÊpó}ïßÒœ55Fé ¾ËÉËw'0›VZÏkýÎzÏBrw1Ï‹JjösÅ4¦(%_Áùs|¼nÛ·jàr:³CtdtÛ± ÓY@ÿßk[UæøEê»k­«õhÇ*99x•Ihãu8ÂC,dLLÈߤ·øñ‚A_ßF›IèüñƒØÆÆáì`=?™g­¨Äàä·PZ¯dB³‡ “<Ÿ¥i®nv;¡æPI6a01¶R_Œÿå™ïþfÏ((L` ‰¸úƲ޸Zbåà(Ìëɵȑ,ó«²ç`Ò¹³²á˜ÿ¥àÇÂÂCµ¤bètp`p?5tÖýƒ„TõÔNÛö±ÇSŠ!’¶<XðÂü¸8zL2o}}{D@¡ÉG¥}ÍVÂ÷å4«}‘ ž<0´´Šaò hÒyظxñ¢˜°Lꬤ9’ç¥cI†ýÈ00BLZÜßèrpž¼J^£§§ ´Í‹pjW×ÛćJyq–÷ÉyÖÐÔB_"¸âô,á‚’ò'Psá]]ØìPûÔ8'ª•{f¡"?$„JÈú4jiþà>3±Ïòž*£ÆÉIØÑq? د …c~Ðaø+"hÄÊ—lâU¿ríG só¹ ¡‹•ÎÑñ¢X÷ ¾óMT‚D—«?Œ$iŠqÿ/”û£~`aX±M­Íbêã#–’Â:hî¨ç=ÁsÅ>¨Õ”ŠêYYjE‰RðAs¦Ý¡Æ"Åe~¥³Ðþ+ûãIZ3liš§—uk½ÔzV 5ï ÔCíÛYké:Èöñ¹„y9]x¶‡¼˜X‡ ›çE9I¢Ýä«Û‹|<òËÕn+B¢ãw[ª·¹ÊH@ȯîYEÚ¶Kü©kèò0>þðêêxL/–ÔUª«× ÒeúåS6|ˆHH tÎÆ°¿œšˆ˜Xèä×ÂuÛ“ýø@Ì;2Ø‘­´aþ,σ`>‹•É*cîNåk#j2óT]½Øw‚. €¡VÑlMª®QÛñ#ö±(ωæÐßg{×BÊ*Yo[îÊj ¥8HùÏ$‚úp`Ÿ¼{ÇQeôñꚯ˜A©ö7‘}tÿ¥ðSõÀùïÃÐòeè56›bòˆ _ï¯X?Z5KåÅ ü<ÞTKysi „x& ¤¿Ë€±:kÀþõÅ„}Ì[«g}÷Dµž…¦gu+Ô¤@¯îÖÑy>˜¡tÖÒþð 0WRDOó.ÑPêu¿Ü Hkè•L"w¬5¢†yy«í€›Bkëd”Œ…˜£ ^ÝëÎûžÊþ(OWv¤½Yh2_…P¤e9 ”aÇ<—ä6W\VVÖteøâ(àsH…½Ð²²ìy½oàaŸ@©›œü°Â{³õ‘«+7è;¢š £E*—UÞ· ß”[îëð<.¹Ë§mm²³Éõ»?ñÆÅ!BÎ_ÄË>‹L–œ3ÓÂÌüÀ©÷‘£®4æô àŸäû¦{ @¡wônø68n£Å|ú„ tSw–çLoxýêz5®éèÈKª—1² ‹¢¢ÙЕ{xxBÖLX™¶Ë ¡Ý6®åH»üáÆò#±¸­®e˜iŸ/á„WÉ”}Ã|#´:€^A§ˆ’5Aœv·s­—ÊÞ¯1߸øLÄi†yq¸¬+ZDuvFš•3 ODDIÏ<\zþ“‡•–™™"HEÛ‹(J ÷–>Ýë fØ£OùÛkõ,zQûc1DQýHc¯+VxT·†ë*½ÿ^꽑çI襴*°º>™,°•íò23SõrWÒþ%\åA‚—4ÙÚ@Ç\¬}¶&·YjÁ(REN–“_ÚÀ–Ï&η‘P®ÎŠFDD †òÚŸ´Õñ•î±IRÂ>¶äu !&`¡{ b€Uï#ÙÍå!D ùÝ4ñòä$N™V}_EûC±xqLr2’··7,B÷ä¤Ê/Zº(%+ôÆ,ä^‘A\...»õ¾èŠ4íã©/´Á•†ýî©ü\ÍùÙØÓa€ëÑÛŠ™¢¾rŽû •ËNFÌ5ÑU¦…1Þ|ù˜Î·ûC^A¤Ýz3?ÿ×ìç… š4žêªÿ¹@ƒ¨óŸ)ˆ·'ÀvÂWzdNNœl>^ºòIc@•w,1± À¢MiÛÛ¿Io … &ÐÐkÔÏ—ŸPx­ø {[]ËŠ×Ê2įè>zàdxh%ÎÿúªÚ@ÿ4}hˆUgÁlMS›öë ¬6©$_b) —ÛgëY°¡ÆFQ‘Ä,óIIèuë/Ü5+…5úšMG?4»ìþô…ed¤Vª(Ì*ú®=ŸÎü¨×Jûu‰/uu¨ ÅÌ_leòóqáàzÕ«Öè¡×"Ľ€žè’ŸZ™-A"×…ýê& £ä´MüíÛ‰¾¹yˆÌþêª~tº5CmVL1ñoˆçí»Ÿ{r`ö>ÿàkmVËëk°_BJ:dI÷,FzhÄ(‚âñqoÑ]Põöáè½jœì"®„8WÈ·¸šL‰qgÛYFÍÏóK­ö,ûÎóÖ,ráMûË!5c–Uq´ØØ?”ç.“G1Ú7‹1»’‰2¶ÖÇ×õ¿&sTp¤r˜.m9.eØ»= S´µ7¸s ¯®éU·“í˜8~NJРŹ\ÉðÝ481â‚WVÁ=çÊG–yñ‚R|XRlSÙêi»>[u«Þè@ÅÄ|¾--fAW£.~Äc+Ü1Záq6û¼¢sÓÌb@CÖ›­³Ã¯59JZ ·wº\û|;;Eû‰*Ÿ­4Îý(/©ÿû v6Ó(9‰\ú>™PÃØÚ„„…z¿¿[×^\?-F‘ÌË‹Wo:CÅg™ ŠŒ“ŒœÈ¡/væÊûìôG_V–2¥+-+ï= {A0hTÍ„@w¹v¯=äâ§J¯ÓÌiOºýòTt¦fo쬺¨˜ÊÊ!E¸€«Î3>>!ý.XcR~#?ûuâåÔ¯ÙôÅ\D„…¯Ê( &:MY¤»¥òò7³î‚oK•pEŽ.¢?ÆœµrI‹¾þ ÍïHG8>n»ºö óË—µ2¼˜ìBå÷”¡Ý”߇†ÄdeÑ••€o ÿý›ôêº—Š‹‹O òö°’;%`aŠWÀsm{ÜS½ºÐqÓlR†Š¾8Ô¬*dhcC MááqN%Z ù³§ûÜH«ÃïÜÎtUÚÍ.ÎéÆÖÌæææv]E*_[PuÔ£?³Xßþ¹idÌùõiÙ7Õñt}{ìuƒÒäÇþ>“WêêˆaaNìdÜÝ…³‰¼¼AP¨¨'Ymtyí žœájñ’I(•½–.$ËÍó|¥Ù„à䤮»Ð¿ŠÙâ™ÜÓsYYÉ{F‹eÇûêÝ»'>·ûÈQä­ÑÓ%hÀÛ!"Õ.•ZãÒ"‚¨êë,û"é.›-´?bÓÒâMÅõNä­ëY Â"#·&E}w¥¡¡ùœ’2ŸÙŸ˜hÐzÍ+2 о‘Q X0z–ëáŸÁA!!6ë_5 Z›¢7Aö><þLÞõ@ir?¥Ë“¦y˜ì[ì"ä9"jl|+‰L€#QðFv{!™{× ÙÔÔ”—,ๆ¦f×âbÚᇮ.í±æz<ÈOïùWf9ÄëCIcÚ×>Â$››ýŸcáÕÔÜËâ,Èø^™™ÑOMO'G‰²Éƒ¨yd64¢ !HIŸ‡ôLM}¸»Ùm¯¬¹Ã ŠÖ⦗ðFh'Ë3Àšþ#ìÍð©Ý—ÔË+ƒ;FAÏjÁ쩊 —´Ì¸þ†ÈZw0šÏÞW.Ë£•N7QYY䨨(è3 €ìG‡@/-ÿÐ8¡¬´;º;Nê²ÿë|ññ‘ßQ{tUêp©5 $ñM†ð°n›ÊÛ·¡'Ü粫ÓÅs§ˆMÖóu”BB ·‚ŒBBd8tò'ƒÉQO!ôŒ†ÀçrªªÙ?cZ@'xàñW—ßk" ¢dú Íj±Ü:Ž)ÚÕE(xEóÕÝÄ& !..No<[Øm~ä^1eG¥Å…¦‹°ñ-$›bS5Lÿl–ïaúß?ëo/y;—çVo#e¾ûœþãæ&H…‚߀©1W›ëûèlÔù”`mõ8ä÷o\v²ŠNT4´Ðøxµ ]%¥×3åÚr— êLøÇ''T\<žùùzFF ê Ådåä/Ó„<@ƒ°Ágk››}Þ:22H´1qq4ÊÊÊ=KKéq ØîîîO?JËÊ~ùýû·…"%22rH„æ aLèm ˆ”|||F3¥^í亞G+OÆÇÆžegg‹ëè¤ßݶë–ö7:n…øû?ùüùÙ`"ËóÞÞÞ…[ áƒÝ ËÁ§öxxx=~ß¿‡ï›Ó8½r×pnyùq ¤ð^*Û¥R.Oí““DˆÃ힤PÛ›tA-OY¥–ܪۺOm"¸"f‘£\a¤BÒr”Þ7¥Tìì–!C¾"ÑdÍá¥Z®¡©|8¢Oa eš]öw–1zU®ŽNy¢£˜²5åÐA²­ì’Dno×oÏ”áн!È‘Ú2¼s3v:XˆÙ a¶MBDA{û300PÏÒòvØ”÷ããý¡oaaáÇøxH %üþmu2*â#®ûÈ2Q0ÊÀî´MaÔýiðwg@bnvvØŽ›Hiž>~¸DvNNc}NvvQ<6ÑV2||Iè#ëZ÷çë1Eg­.FA5^™4re¼Wñ޾/ÍÎö'tû\©Î„‡'Hits¶ó{½?úo²]ŸÐ¾`` "Eô8ÛnÞ¥dayTHÿtwwn ÎÆÎÁÑX¸Ü®*2“ˆˆÈáêHä–(/)ú &'üßB²ºƒM4ñ¼}é}^Iá+9¯Úñ.{£Þßf¹aQøÎ׮쓅©†„¿~ö«av½ŸÑ±‚Â&|bb‚ÕnåÕÁþëxïSBüÝv" x ò»ÞlÀ2ŸÇõ%%ûxË,i.ÉoVÅfggõ®ŽV?ÆÅᆅ‡+))ù‘ y{445uýúE É,+‹|®˜}‡ÉÐ+á¸øøöfòäääÚMóÒššI‘' é)./ûý`ž±°DÇPKuÍÍ%sŸåÒ‡eÓ‡ÝÈ üÊÈÖT˜¿ÇW¼ÿ|v¦hçŒÖ3U„UÖŠw{¹ì—úA1UØ:´°™×ÍŽUõ—S"ÄÈÈÈñžV+»¶ä±Ÿ?wÜ_O—¼ßž¯g¹tѦñ¾½¸7h լȊ>?;ëñ‡C±[ëAJòÄWVžžtZnó&éëëõîÝ»g1ýAg …m¨Ã33ø”””¼¿¿»þ{ó¦|F0rºÞV—†ŽÎáúÕDsÕ¦f?ËɾUWÛß]ÙC¿Ýè`¡±²²Ò,áç?}ÿ,ÂêîÒ-â"">á…Xèp,Ì gˆP¸¸¸HËË‹;88”©ÍÏÍQ “³è´|ŒŒDµu¹¸1’ÌÀø¾\\YûË—/z¶¶½§'§§í·ê¢ˆÐÿyzzžý™F³öpzr½ÍâÚGÈâtµ¡Æv™Þ*½¶©OÇRóÝ;Éw: @A„dgSŸÑh79­.a|lhlŒy¸¿ý˦¦—½L\Ó-Ú `öööBrsi7ܘTjT›`±±U±˜`•ìW{^˜îy–â+))ù´Š¼–ÏùîÎ\õóŸ|ök°ÉÜÖÄD|4<óƒ‰?>> „­ª¯nll¼ü»|w«‚ãgKEMM\©fm˜´Œ  }ý×€h)šœÃQ‰9¡„c†‰ùÖò¢ Qs4;߇ó|o®º3š¸nnî…¹“á¯ß¾}k¸|<陜¬–á^:7 ‹$á™ñ|Œ&ç÷²½÷qºöšÅÉT«Ý¼íF™ÿøÌfPÈãìY…nûæRyãðÉDÖ}´Q–i!ÅøW_‘–J_Ìžû–…#ÌÞV¢ˆºä¿Gž#÷r #ËþÈ“Ë2ºØ3—4ASR½‹,Õ׃;h´¸†Fr`ppìÙ™Ó7³q*vë_œ÷±ÏéhiiÆã¼—.grhï¶/Z·& ”ׂ °v—vµ^²x“O`õâúÐãߨ%­ž*(m_ö´R9^=–!oE| ©œ#……£íXzääL­Ôï6 ©é¸ßt»°â@'M °_û兑݇ŒŽþ)- Zt111~ `Ðï+“ï·à|­Q|®úîÁb“3€„@26 ÇÃyØÂ„‚n¬çà´´´8Ù^}LM%…~äêêzð˜˜ýæ$ºÛ“>÷çïÁf¯_¿~yFKt‘Šêå†f»Ð'4x—{óõä‚ÈïÍMQyyÔ4~çµÝóBó©B%^»d€?&66ôF)ÄŠ› ^Çp Oã.,„@L  Aè³}³²ž°°TÀßû022®žó¹¿Éò¼<€ D €,µÛM·)•EgÔ?y½ ¢ØZ¤¶kl¦ûx`1î÷G†’““s¬Hå9=C H@ 99¹ö°°°1@°‚¾-K[ÓA6ƒ¸"+[÷϶„M[}…TÂ$%]ȽŸÛÚðj]¨7Œõ`Õ.ÏNÂË—$%{”ú„jO31Qò#îÅ#&A"äKÊ|CQó|Xß»@-¡AApXÏ>õLL|€h¨[g¥!×cåâÿÜ?Œ@ ßz¹-m{g'æêÊíKR’4Ðí|À‘œlÈA‰CHl,Î¥°¥¥¥ò‡ò/µ›Ä›\G¼Ó`ˆ\˜d¤¥Ÿ27Ú›­ú=*òø[¸"ÿ†ü€=ËH—»‡¶¡¡¡¨ôy^999@p.ë¹oAòé‚ɘÊBÊ•Zõ6â**±˜¢Ònn¼Xxx´Ìt[Æs¤BÊ;>?§Õ3: "‡ YöÖ²H"_1ã Ji''N"n+ªÚÚ2çû¶wË·3˜^n›åj\÷«[Ö¯0ë7~%Üž{x½[v¡gfVˆ"Dš’B½£< À+‹=FF$ÊÀT×( ½ì +vÝ7¬þÔÉÉ®ò¹kñÅü}ŸZUÅÖèv ½‚Õjâ¡´ÎËyŸEëf6³MP8+1«Vâø8ÙèpIËhªÐ:W1C Dúž†‹+qÇL0ƒÇ¡m¥× ÈP ÞæO/{ÑKIJ:ØÅ@ŸL~èy{Á wÊ}ï)..n›†Íðִ겡HIaá3 r&üp e±D“…½ù¯¯Ž©—+¤VWWsêÉ¿T£ú“Õ¯šP§í1?¯›³P€kÁIII^Uo1³ssÏK;:^=]i>DíÑ]˜¿<\~΄_2s~«é}¨%6vïtO|ûptÊý,dÞÁz°lEÑ{>+"•H½/^P•„‹ÿ.ƒ¦´¸˜ Ôão@+@rÉËË/×nn,üOüÂà1Û[Æ9¤€uyïȧ0—1p(&!âðŽ(iŤhIøðô{O¨§t†pÉ÷£Õ”ûK¿7]å¥Ö½bT¬!,»ÝÎ멪¬|2ì0|”ýeÛ¨i•Èòƒ¼¸øï”/…s¡LQrA·W~Ü]Ÿ6"<“èŠ8üÙÝÛ™Ž\ª­­EJ¦…¨+•B8UÐý$0‚ÍßÍÝ (Š[—?S;),þAAA°®Ë`Àv}ž30Èò’¾ @ÿþÇc™Øÿ `÷çìe°.(þÅK-m]·?ó躭 ÌZ’4´´?õÿ8Ým­®ª¢¬««£yþ<Øio6æ.Sùð´í‚zžù?¹Öä‹yvÿAB¢—`w&î^cØK—"€³NýŒºŸ.ðظ} šï ŒsÀ”Â11/fíDyÚèoù4øxÓŠŠ=vä+ä¿UþÓí$/ÛQÓƒÛfíÒ$+LGMX÷`ÿg…®ïi ÍƒQ ;D²j¬ß½I»ÜŸ¿ ß ££ó9nù$<39‰ƒ‚ÏÔŠóÜîbO0é“¶ô¥ÙÙ$Áä@LLÑ£ß?p‘:{z`utt¤¥¥?æçÓÑÉ'ADDD`áá¡ÏXn)oi¬Wüa ÒÍC÷æb?H›OàSAÏ‹ÒÎyöÅMw„vÿ&fIïy}î( ‘(jCiøøø [ÃÀhF÷ÆÏÊÉÒûÀû\¨‚ÛI+ÿêIû¬·ÈÏ,±`–„ù¸{"ˆªšÚÈÄä¤åðÂ[k{_Ép‰§ôll(óõ·@"«ë!kl”˜móæOrìkó®Î*+£{œ-š©·_ïƒz#*šû¶ÌúáºZÌÀ€êKl¬å½ô—— N‹Û’¡žÃæÁ4SôwåBA\¡\ZzßÚØÚò½¬ ÄUqq±=]B ÓêÑ{¿µ±T¤Rprï1Õ"&MTWÇÍï´ ñööNö&:ósll‰s+ôK-çëm©°ƒ>‹Bâ³6èS0I¸­^98°¯­­A7ÐþøÐåE·@3547ç«üdñ%×v• ³¦'Î4ûÉ©\Hp?5»ñ€È_|›e5ýf³/65tew¥Wb9`³á9šÕ\|s¼fl4™ÑùŸiqQQ(x+**NäÉÜCBï,·‹@=¨¨ÝGžíT‡Ñ¿°¦’”¼ý>‘Wð£Îz©§{ 5âyQQ£îbQ¥@·†ÝK ks‘ŸS÷s?bŸÿP¹‡G%|ÕÒÒògA·î¬ ‰ÒËÝëËÏ(LѯªÆÙ„ý«˜4kñ¬ -DhèÁ0bbjêêþQ#Ïø= ቈ^¿{‡ÿòåKy©Uý_µÝ[‹²ÃÂ^!Àg­ƒÿ@&ôzÑ30x —››û ¸–h P‰^eƒ ™HÉÈ””•ý›] |¡-kÒia¡oûŸÖ72š¢ªX][ó?ßýI ¤ÐëèvûuxŠêwkëëú]dØÚ§¶‰Hœõ‡­,òÙ·;7€ˆ±â¬_½É©…~+ÞÖh†éïsßòƆ¯3„Ž6‡ró¼;Rx¦ÙÙ…³¾}AƒlÿRÃ…?ƒ§ }ðpûœq§«ëŒ*¬®°ª_Âÿ›/fÜ9¦ª—›×—åôXÕuc#¯®ëSE÷*F¦¯´´ž¸È¨IŠ’RªýV ½õ…:_!^WWú@Òÿ1_rë‘A‹˜È¢ÛÕß0˜ÀœÓKEN@JŠJ@@\LÖ·oØ$<6=5æ“IQÓf@6 G¶±XgÞ•Ã ijjhúCõCƒßïöÏ Æˆˆ©¶ëÇbô¥ÖÛÀš i™ÊÊÜØØKÔ44HDD™@]ÿÇ'­lfomQ‰i$z…ߪÅÚC4þÆ?sh{ú¥×á^þÛ+÷‰GGn·—º P††kõmÊ#îÍÛ Â.k-¢ñ púE3À·Ln=^oel/4¯Ÿä,pý[ÙâÆ;ð™z•œ:>`R}€!"w±žßŒ åÚA;¶ïyˆBË kLBlf®˜!Ü ô\ã;½…{ùþ"•Û ÑÏñûHsécãúÞöºöö|_¾|‹IJ ¼t»ç'ùY!ÒÂCÑaâ8V[Bq€‚‡g^X,+¦¦¦¼=ö:)«6+‰Žþ˜0×±Á1·ïÞ=)×Aëž«Ž>ºØ—23ÿÑ= ‹Ñ×'¶L –pgç ÚZ.\ÅtÁ¢Sö W¡×LOO‡>ƒ85--«¼üaxÝb²\[ÀŽ—ô ùÄ…\‹±[`h©eŠ0Ššž-Mss8¶!q++x–ﯠ?À;ð!¿&È8855óÂ’AQ99rÐÜ3vnáiâ~ Üiu¯«k9±u‰ O¬4KÂzÛþL•‚¨$v ²„·ªqüäöů£ïË6b¨¥ìöq©««¯ô† ù0ó¥B' óÿLQsrmd]/ïE[q#üøÁ·°¦ääÄï壤®ÏƆUXrÙ}´z26×]©<©h€ZþDBIu7$ç—4íÆ÷¢««Ç„ææ¬Nf"VËÂÐǰš!ä¯+Mah4ØQ¦¦¦êéé ×$¼:×xP2M@¬øï¤²¾>¥Ø^†ï ì[íW²ÒßEÅŨ¨”íOMpÑÉÏ(¡«™E/˜™Ý#ˆ8Á;BÐü±p Á•I£†f„Õ‹}ÂÐP½&f€G}š$•†7·Çs*ëëûAjeæær˜ŽØ¦pYâçæåmãîî®®¥ìæß ²7êêˆÞ™¥ øø9ˆ»;ôbéÞjS[L¬cx­º…W Írs{²r8 ûP»¶ÇaÆ+–Q @7„kÔ{>‡…1¸y§h=30˜ÈÊ¢ ÷¾Ò7ÉGǺ±Ìºz?¬#Êå ²¤¨¨hÙ(ôKQÒ;[ÿþ)L˜hõ4ÝÞÅøÔö ™Î‰60äÀÄûØÑ{÷p«¯&ªüD2âíÇò—(ëýŒ¯5›º¼ËþõŽVSãÍÊ—ºèA)Z˜Èlúþì¤dÙ%ƒ7±`B U'¶5öè‹k°C(¸Ы™91Î  š2gPñ±Ã(E[ ±«‹tóéÑÇ„Û{n0@¨d¿0Ä‚/ÊÊ„K0±b¤¢¿`’¦""[–‰i4bœ#®õtr—ŠX'-ÔÙ.£óððä¾Å…<_Ò›ý›ìkD¨/žQ{Bwsó—z‹:‚÷­‹)?±„Ò”ëÎööJ¢®Ï“àɺöŽ;@Œ6˜8%¢‡K´òRXfIÜÖÄ“ln3Ð/b>ÝTÈ7ä$¤|¥¤$åu5†ÔؘMÏh‰ªLÿÂÛ*æçºÝÇÀÀôí©"l87’’¸õáÓ D4rrAXx´Hæ;¢Òr¢…‘3ø@ÿ|ltÜUPˆÜ¡G£¢š Ï‘Âèã[e“Æ&+ËptfÎ]¼¢È 'ö€®Þ¹ÑBW'x%BÂ]Møë:þüªe|Wªî·°ð!?±&šB"&žÞxp!Ê›×DÔØ.Ÿ&jÊpçý-ËêâÌLØÂBiÃÕ.¶$aoB~ç?ß‹‘®ìÄŠÑ2UzNÚZZ°ÍÌxõ·FˆXy~šð£K×(O’ ªwÅõòÊdŠ•õ­_V²d$qÈÅ~J{˜²Æ¾“ SLLÌhÓR6“¡:–Ý“ ÖR]_$}ý7Û‹Í–ïÕz;w&;g[ç Z=]»9@Vþà£_ú‡&Ò®¾ÐL<6fù˜ †¶»ã\¼ {êçlbnn˜¾¾[û«J¸ü7ÓzüèÓw'æU…p¸¸qkCɘ©üx©©¢„DE1E&ÿ¹ kB#GMŸø<º¢)êåva1 Ò0ƒŠº>SŽ+ý-îè æ²WvvT-­Ôö—(à~½_ü““‰QQUÀ´ã{ßÈr'0 tt¸¥ YFŽç¤èÐ?ýøí›,ˆ•ᆬ÷쬼ÙÙéä„°Þd¾¥ÛÑ ^¾"¼é–¹Ó/—'@Yø}þ,~uÝÛ5Ê‚¯¡·Ð~^¤Âµ˃««Ñ|M.ì´²²¼£‡Ø Àeø##ÅsEø œuvpâ3OøE ZÛ<§ÿ¯> ¢]ŠR¹½Lá ÊvëëîmpeAVBD AHöËÏ'EEScuÿF|s™hOo¥®•Ñû\†×ׇèÚî2Ó ³]áË‹À@+Ñf:î×'§á½¶íÚ€ ¸­Ù{[Ü©SZ˜Â.+çHƒ Öú"· ËõssAo•bú¦ŠˆY9T‚_çS+«¶:8†³š ¹”ª³‘—¼#b' ¶Ð©QŸ"]j¹†¼ÿù*Uä‘P»)D¤\å·‰œŸT(Ï4™²Ý°˜ñë’’œ‰ö…jj~'G‰)EÈÊÝ~lv-‘RôI ¼ØÊ*ô÷óCŽˆP/yßÍ2gއ§VY'Y ¨»~w½AÈ-_>—p²!°½{Ø9]R'©\”™‰êy±ÐRM”¼Ùu4;G3X “<ý©í!ýBÃ1)_ЖÔd†míÚ ®™Î€^§ïíbÊÊ©;¼ª§<(°HRüpž“¯Ýœ›~ŽÙy"''žPžÉQbħחhî\%~út ÷L€ ëU­Ìññáê:’H;¯¸T»ÄåAèDWOh€¾;®ÁЇ¯šš~½á‹XDÉŸPÄÄr®M‹ØØøö#‘ò±?'âÐ"áþðZ´Ësö×›Žxœñ*ê´IL55{Lì/ˆ,[ ÎŒðppyc3ï:Rù~±r©å$Þ¾ÌËÎF^ïÛÿTW÷4©Û‰´øzÌ@I%ðÝú÷˜Û#0Æ+ÞUVs¼ww§•øæuÒÇøÔÔÔÀ7ê_ŸlÈK¤(CJ= ‡†¶™,8[S^CƒÖß{e‹z‡KÀI¿N= ëN‡¾7}ù‚̤ù;,) õCKC‹D»A¢˜Ê$ÑîOEÿøxjæDŒà4WöÉ‚& °.Ñ™pMFH£ø%'–Ez2|…a¹S:-iG÷‹(DÃ%–ÅýÚ}I]/zKÞ'ý¤@õô 0iÍOËöÍ)ÿ€Ôý#ö‰ô›‘Î@$Ùʪñ­ä¹KDʱ)§Oyyä{{gÉQ*%kk¤çoÅëmÒ*}ZÙLF¦ü+Y#ð‡†™»N·l1‰¿úòèéÉ“.$ƒGÝŽÄ¢þ ­Îtòð Ùu¶jS ±­2û?q´“JôÅsñîì|ieå3‹``:JTddàð™ì Ùý¡ÉÆxC˜ùáëîO]I33vrá…Ù=ÝL3˜½:FAA¸Ç‡[Ü¥¥˜Âbƒî#úͲ 6C+:‘0‹bv=«Œþh–@`w&í )¤Â%œ);~òß^.¿öºó”OÎö㲌p;é¶Hö¢ïê W$MÎê\ oe}žUHßëTÃÒÓgÒÑ¡Çr°¤$pþúÔîz¿4 /_>ùŸd"Û¨)sécé÷‰A‹æÇ!/l—}z •æWÚ`?}*–ïÏ*4‰‰9F oñÏÐe‚ºËþ¯×À’ÁÃ3¼\ßÙ̇ƒ3Nâ9„]jùÑ»1ÈýVÙâZ ".™ßÙób³PÙ´:¼ü;$ÁüÀÃ*È"Ç-rjzú'@!V¹U¡› ¾¹-T.³™.ö=þ-Ãþô©O@â~Qß–YU!÷ë×H³m‹ll;I¼ö¬ÜVI°xxK_äjÉ€û¶sDéj~Œ.šÄçkeýü•lÆX4yk´a?ù3 ”ÀÀ«u+S›çwç‰,åÚáóó3.¾ÃoGýüæ( q4ýþ½ Ç1Ùþ¯ñ5¬Ø‹ýæH0 ¡ÇL¸çÔkëËÝË"ø®‡}T‚‚xiüÎIlzÅð†ë”ÀØÆí„,«iÓóGÕÔD7xÍåO+–……9…sûæ¡UÍ΢¦òáø3¾ï‚(ü—¤½áÎ;´ª%?ú“Ø*-â)Gu”^q2ãOžþ˜&`KÅÎŽÖÔÄÄËÿUÿ;&Q¾¡îÇ?}ll^GnŽ´ñ¸H; Ís }uÆýòe×ÉŒ|R‰˜ì6_ï õ¤Ð½-ãåð¿ŠY÷RCyß~ÁÖ|,ÆêðûÈ¢'RR@(¨æØñ²èävƒÄNO=¾qæö¸Øó?^×3ÉÁA+&ÉÉÌÄuÜ$•’ì{þ¡Í ¿ä\j%H“2-ÛgìMλSb$z*ϱ*!Õ¦b+ä øÀ9FbsF_tÖø>’‘Š<@^¿N1k—| —xužx¤Ýìuüû‡åöŸo•æ±/Ò´?®!‘¢w¶zÚóºQ`aA¯+`bv>dév+Îx£ Ô#«[% Pf‘;“Ád?(UºWÞ½ðÄò'ñéb°®¾>õ$&aÒ[Óci)SL³LSŠ1==Á¡áhêg+<Àœÿp" »)?9a€rÈÁ¢úÕ•8ôn+!6{ƒó ãîàÁÓáí±¯´XMGŒL Vþ¨i²tJGùû³}´:*Reæš'ÜpªÁÚØð‰ÜÜß]°´LÚüè`j?---ÅöðÈ*(¾„(‰¦:m&d¹Î:ë%D9¿¶6ö™r®|•{%Á¬†R¨á>^Çøüõ+Š÷}geõdp»ÓK~3;ê cx£é|§Úö– XÃ)JÐ⼯þMœ€ñýt-¾×ÖaaÇw×),aR¤èÐ5üƒBjMA‹&<Æ‘µÅfA7÷9¨Âú£úˆsó”ZI# gb‚v™ƒƒ *Ç·ß>Û'dè>u<]ÿÐ2ž‘;/LX«önOÑÊRëyÙÅ׺ÞHÓ5Í… ÚÜmPkë 1“¢$‘ wfèo 8k_fÐZ«Ï3áçåoô£S,´E²Â¬÷ýprá{BÜÕM œž¹ìcr2¿Ïý4þÈ4GVªÿñþ1ù³¼”97P|špÛ½;W1gg#‚kÏÕÛQÆ?¯ƒ¢ÜNÞÿ>Èè÷éŽËAêGGkßSP„:…uœ ` ]¿n@qàtŠäaÂÞMdU¿7ñõ/ör@ºãë>Çîþp¢ ÊÓû3Ðàl©P¥W*ùkºˆbw›w½ýボ™%£Þb“Œß}>þðNµàÚÐЃ_É®üWÎ@ ×k# ”¬©Ÿ$¼$ë?Lô¢—økµÔHôû[9½c2 &±CŠÞ,·Ý#Zï—58ô¾ËU76Ù\íðkn°[}¡ª–·º¢‡LFÖ¹ ÷¶Ú z€ïß9Uß}3?.ÄÿôÉ3«˜!àþv89J´VÿÑäc?ßÊ™Nþí§¤$=|vG`Ñ-g”TU+íÏ‹ÑF#ãøÝÙ!P™|º•Bô‚ômêgW·ŠÝö˜Í¸Ùº$N9sC¿µêî·jàUXØ;ÉðÉ;©£p Ÿ*;‡qrLê¬ð€׿ɩãô€'n¢LL›øœ–&L÷†”é­7¬  ¹þ© KO¯µ-:Òa•í2 QÀ¥"IO¡¤kX›€PÐóë±´œ9?€ÛA¸¦\x¨Lp̸0¨ÃSíh¶°öª9RqñÜ®yä¶¶ñïCCò$°00xm)¥/¾U— H¨©Y}hµ@yñÂ>ŸÚ{}²ÀÀ̂߰?j'‰Ã”ÆÏ Æê%%¥Ìlõ¾¨XlVEªTÿ § Î?Á­¾didêÍ3„Œï"LËäõ×b óNi…ry…镽•îÏEu••¨‰/ƒÖf«@ÙVc2é “ûÏ©.NL©©‘¦òö:ŽÃ#O÷/ÓjÅ"OGVQá²úe4€ÓÊ®IÌL®æh×ðéãG7X¸û—o{uÃxâãÕ¨ÝÉÓàɃô½^U®ž^æS œ@Dm9|ƒ—6ôû"¨1ññ»¦K¸?Çýn7åæ&—–»…Pd¨ÉKeê³……ïýM ê›_½~qm--9J⸠zõïÁˆè.¯—´¡˜º‚.ìÃÔ7SÆcwí@XS‹·ò›³V-QyêçÄ„00¢l‚‚¢«˜Cée‘ƒýÐI ÉqMy5<„âbôÙ†qØp‚]àú° iár!êq#5”.ô”„; ñƒîçÎ\7N“¡ggûŒ¼½9€G KôÿqÌÀÄÓfþ{êÝýºÝ¡)P=lV꾄ÄÅz¹Yoßn÷:õ¼K¢ŠÃ”\âöBÔH–é2*’L×P²ÔÊV=:ÃPô+¨v¨Àµ;·à­³>•4¦%±œ!Ô†ˆ‚ÂF¹&fl?6½ˆäím¼÷‹+Tg7Ò›ªL¹DÑ*çqñ_†ƒ úÅ}NLÅhМ —ƒ ed™Ž¾¬¬$„³Ü­‚^˺½°E¤+*ÊýZ§mßÛþzϱ½DpÑÓÁÄ耲²¶Wg¹¥uoOμà=oOQ×®YJp}eþ½ô hºçŠ:P Vš/?n6ijÁÁ. ×íÙ*¡òUá—þ˜OÉÒÒyÞ Í×?v9‘¾üI¹Ñ´·ç‹¢ðý(| ?öLÆjñ†C2Š´Ã‰) ê'.Ë—k‹Îoß@­Ÿ>lŽz\jjÀ²Os˜T46BwÇý¸Nû²·ØJeÑÝ”Ð)ƒòr?DdÙaaœ¨Âë‚k{/®Å…é’U·›3Œüœ£@à[Rùñî)éèü¤Ö³)¼ØŸ? ‚ZPTœœDYY/ÜN~sÕ»å\Ä¢ÆeõiÁÖìHº%äw=Q)`@…ôñêêòè2ºw±¹ CQ¸Ì‚þ¿îØJ0|+³)„Û°ËiŸ!L.ñÝ‘Úh€ÌÕ1J_Aß6" (øÑ ¬?*LÓÑÒ"¼y“ŽbXg} wsßâ)ªgqÃÓÓ#nwý Ø‚O«‡JÀE‘6ƒdåN!4» ãÎ>°àÚ–ú'þt„N¯ÉÈÌÁ22 Jg%‹ÄŠ}NÑñ™’Ý©pç=´:ª 1VÖ°!s•>÷4IÉÿ/öÞ¬Êm]ÆÆI鑚0éRº¤;s2éîÆ SIéT$•AIéPº;þñ‚®ØqöZg¯ïœïÿÿÍu­ÅäOÜÏ}w¼Ó,vÒ Ën+Ó a„¦×‡¢k:žÎp_#·Æ@ <í§]š(ðæÞwgZpSiÀÙî•͉16§AJZÏ|¾°>ýNȇê¹kOÉXjDÐîC ,~†{ä9ê~÷Dnz@·67q(ö‹Ñ™gƒü%"ož³Ù}ŽÛ­7Ú.ÕøºD~Ùûv–wO¦^_£† ùLç;nBt ¯ê©’’] ×Mÿï߯ffœ ˆ¥„UbdâÁy¯ýoAf½Tϳn^HØÑ£v_hãAnÚ÷ï—ÅWŒGª¸Ý6qj린wß;~3 8qyÓ3t~^ø}óF}}$sÌ”¦æá9ÇnHr§@O×feܶêÖ5C âòrè9}§â¬(àÀúÀüµ@šöUb}ý憩ú¢ žqc.ËW³ê;cJê  ®oë÷¶ 4Ö<IHÏéËÆ¥Ÿ7š2q·ñà¥ÕPR¶›Ä÷^›"Oµ› …ð=7×ÞÅuóiíD£]ß—„º ‚Oy×+eSÃÃM¼¿£ýî‹ qeè,}‚°DÁ»âbbxò׸I†S—"[®]j¢xwNù;­PõéÎC+' 0z†sǼøòQƒé›׉Ç7æÌ7²²Sµ_úX]pß¾`7•XSçwÝewKL¶Øemò§yYðãdzœrrÊ “jA¼6UºEŸÓJØ^àÂÕÐCób© 0໸ Ö-Uë‹„‘%¼4ë½4=s“4Àʘîi`…õ¹-Ü(ÆOÐBKöF§ZAÕýÈHg×ÕÅgJz¸@1i[R âB+Þozb8%B?¾ô;5#ã0¥bü°ÆPUó§‰~)å(Õ*›±=%´OãûèÜrÛÚh4~ËÞü8n»I€¥ŸZµ]®{] ºp¡etÚùro¾Ø½á·áÖŽ‰¾f¢í²Ü-µ<墢¾7ÝáYøº«¥úRj´`r{¹ À³jÎ¥g¡µêÀ}q\©…o°mm/¼œQ-?èÝj©fKB˜ð‰ŠŠ\ü[dy6ø ¾km­ú}w¥àèí!|Pv&ùdŸ›ž¾ô0+‹88Xe þCLÛMì"¨@âãOLÒ÷eÖ=:]÷à”´¢>Õž°“², ¹¸¹…¡¦Â`eÁonNwoˆå€£šhÍôôüý€bù6L)G[Ab@ªkÏžÌÎîë+m'Á½eÈ{µ[üAôD­O·Ë*åpe룪ƒ{¹:Yòí1]Ý9²²1Ëîês½q™¯"B ÊåVÊÂMròzÜJa Y+>•ssoCjG‡Ad´—&ÿçNÔµ’)ìJ9=½óЖE»©K1qf\Ê®ú MÕ~aò4–ƒþ¢H$¾ëú•G@X%ò¼@(&qÚ4èð‰—•ª­CeÕ\ ¼?»yAKKÛú«ÿP¯îñÊ=úñELJn§E§ÕæÃ·î,$¼pliéõϮَ,‚ ¾—£m¶ywjß8—j¨èéùüxy‹FT‰ÑªÅ)‘Àêb&?ÿNf6rb*‰Zœ¼Dx» ý0q¢‰| }½¹Ïã+÷w¨Æ´Þ^ö(+?“êòö†ú© |UwUÔÔ¦§KÛôøm°kCIýƒ©ôïeù"Šx ¯4/uºf9\»·µ3Ý»tЋÚ…3©â—E÷6íOφ9¯¤T(¼È¤?ƒmö`>à•uò-i™[6;«ÒSáÄ Þx01-œRË«¸?Õ>RóîÝ%55WY‰ç+~"¬.«'ìçÔRiž8i¬¯¢éæç?RROP“fÔÔ"¯u†grR0/’Ê%a=„4Ÿ‘𲌌@•eâ—þÉ<¡‹C|À0gd%pŸ=sá¶efÖq¾H17wŒ°„_ƒ=cUïãñð¨¨ïNFœpøàEUU¢ù«aéæ›éO£Ô(¸¹qŽãÖBe—³/=¶J§¾cGîqŸ?êÂü{F ‚µ¾úŽŽŽP²ŒÍp‡ˆCHŒ*âPø`§ ;=Ý´¯Èˆsd‹05V_CãBú]¾ÓÀ,²1Ï?Ø“Ìj¿UeDñ@kåç°}J61¾ïo‘¬/ $ÌhDÞ¿jB8õÖ¨G..çµ^<ÚY“õÖÛì$%CAmØ;ÏèÞæ<Žl÷?Ñ烳°ÆÇÙ®\‹ìW”•å Þ©J¦¥µ¾ªrgs[ z&íäÉñw†vÐcZ¼˜˜KßZY¶ß2óî2}h ÑÕÅ_\”¡`è0#ÉäÛ6y[Ûí–çšÓ‚ Í+÷¤¡þj·Õ?¬ÝèàbJnSåE˜¡¤ÚZ²U h­¬<+s²:µ`×àæœ¡§}Z[ÛÛ—ÕI§¬¡9ó ‘«”IŸ5¢PR·ûêl@bóñyÈÆsÇ q|šºyŸš*¾#›iµ$ryùšùÐlÈò²JLl64ñ¾y_c„tV¢ÚZ%5µ±•é• Q±J1…Ž%ûjÊûÃUûþ|NzD…‘߸£¡éê= gpݘm±}I —59èѽ¥¥L}s\õA…(‹ÔüƒÕ¬Gé HÁÃÊ}oo$†øœh:ÃéÉ"¢6O¸º¾¤ÿÌ1‘ß½ju-ˆŠº³Ð~ÆäÊÉxî—WbcmA¸Ÿ†^§cֽиÐã8mLÔ¥ÆK$¿Eãà¥øPrܶ8YIÓî‚jéSTDð¹S \ÝWøîôÕ«º1¡´…³ d€ÙÙLD»!näÊÜ\ ±_×öròM$»°ñ…”ˆ‰~¶Úü¨“ƒž@Opòó-RNc%±Ú~åŒç/Ç|BwÁû;Zi äº.è¸ø6 ÜN¹·9ã®{--¶·Äb˜Ûëà<™@¿¨Ûµ5üÉ ±¦0¡úPÒáV+Y¼LFDš–¨Vÿ¹²²Óãµ>7 E•«I]ˆlpv}†b'æ²äZßxºÒD®úÙÐ=‘ÇbiX›ž9¿fõÛÄ=³–Žh³å@@š M»« ‹»›Z£—–¿6›]ÃJvZÊïè!«a"{©aß…ƒ½7ø¼¿ VI©æ;#UC0„ðÆ%ÉƛŸXàyô€;ãã߀™vÝ.+c4µ‹fm{fGR[+Ìídy³S1ö2Äw¿ÝðôVûƒ†ÙS€º=Žœo´§ Ô"â ¢vÄ32ÚnÞ̪ÉR¾­."‘TE˜€EØã§ãÃÝ6aö‹ƒ8rš'·m¿*·p5PC›$)Ã(E ¦H뀆±­¶ –¯äáñyüd. Wð‡³àÊ]>dÍ“0¯ª‹aêµáÔká›n\hNz÷ä†×mñôs6dz†ÔKCЂ‚‚o‘Q«ÿ%(`­QÜÜ:uû{×§/u½}ô ©¨¦&Åh#¡¤Ä‰E^T•´™ÄóÓ„~"¦ÔÑ=` àW íBØ©ú‰Úï}.ÊŽ. Õ7Xd¤j®PÉ‹Añ¾åÀ{cîÆ»²ÒNNýŽÞ÷4uŒãX5·ÞÃ÷· ½#%uFE}ï+¡r†ég–üKnß·9ð­ßyŸoávïK¹‹Jç¾oT¡†Fpmq£l“‰ã뜚wîÜÌÍ•£dc»ÜÊt”útjÅKÖ˜twû±oÞ´9Z9 ÉÖš#8ÊDç—|Žxïf:Õž³û+´¥¦¤\ÐÓk·™~,ñÄŽlŠ·4Jæ/¶X|gKOUÀ98VPín³ uΛæ>ÓßA¶é*áÞæPã—¢0ânÿ͹ñOŠÀÈz•ȯ’Zü¦Ð6-@omï4ŒHá}[DËÐpðûG/^pwâÜT‘-4à»tYÕf»P,N(«È"Ž+_ßË·£Cˆ‚‘Ñyé T6ÕT¤NpÄ žŽã’¯‹ }]n£Mp5ÂpÇѯhé yºŒÐóçÕoF0Û'üú[‰jÏ¥Ý<§íÍnôÐfV…Ì †äŸ_‡ü$^”÷ mòÞûÇB…®Å”¹yM·²)ÿvIúÿϽ^Ù’§£V8°üî}}ŸÃ&v*4Ôð®Yqð?ç¾XdkÀŒšãÐS n{ü@ Tã|Í3vµnEk í¯Fç°wQ[–úÐsp,¬ôuö‚í·}—oÞ,_ÞÒ—ÂéumHh›ç>­l’ ‰×>GN,=VÞÔ”ypð!pÊ?  fP纚Zź¹Í­ çSìEÕ8W–¯Ÿ½¤¯jÐóç§!2 j+Wo#¨×Y¸gÎ6Ö ~w.:¬,úBRßhH‡ŸA nbbúK€0£¡©¸×•ù൳Ê9,¿Ñ† {h'Bë´w ÚZÃz‡x–O-\o²6*­O»o~ÿ¾Æ:?Äw]Xx}i·ˆˆ=ô¹™º¢¥<üD0–«ÅîmÌ^Œ‰\ÓP¦èV¼ü$66ÈfÂZHÞ{OŸxí§ÌØ_4…p0€ -È,h¥FyòH×øüx Ä{¼Ž<£fJËšxŠrF¨¬„ôPé‘סÇCÌ €7€ö€˜Ûæ‚àûæ›õ´лÿ¤&Ÿ$o©Å7¼qrY^}eõ©7«ÀùE2¥ßñ#IÓ' © ü±ÁoœPÐZvn®ûû–Mï.@›"кrF4í쩦˓‡ ¸~þ¤¯¾—@Xa¡Ð@ýyÖ~Œ¸“Ù[[£ä3_¼!ÇèíÉ´^ªÇå66Ûmíímžòä*,$æ}åûNÆñçõ½Ú–—;ÊT^£äÊ;˜"âwÛ<«¥µZøêó£€f×Íåt’ÓA´G8|Lï·HsB5uq¨ LÕܼ±®ß•‘Ôã´¬£Ãºöc»ÖþZnA`¤Ðæ'«%ÉÁʽ“gΠ¡µA€©§Ná]"í›ñW9µ³-ú®§çT‘aHÍâ»Ir&þÓ§æÆ¦¼Ð–ÂêÓûx5èá“|jLX=3k£.K9jzðY"¦%P_Ò0×uGhéÎë;Ìg†ÛB³/“ÒÚþm¨ÝÙØûðVU³€èäÓ:ŠŠ<Ìzî¸7ȨØÙ±ww!¬„pê|7Œxµâ"ðØÛM,f¡§÷ÉΦ%Ó½]j#ø$IÿaßRÝï—ì׃´~¿Z/^ä®Ëá’ìmOÏó®›ó'ï¶Jdg³¹ïñío¿$ÜZlxŠÅ‰+÷Šx:ºr-,l׎ösQuK‚ .,â;ggg1ßÏ!Bq1®­¡¹×iñmMª–û›Ë\*54Ö ~羆—6:†¸[@bœ ¸ùƒ'üîe8««öÂŒ¾¯e_úxª)óÜ'’KÔјꪽ¦=?/ììì]ÓÍ©ªjþý{] ¹¼Q;JÁÒ§«ë@4CŽôyF†ÿyÜÈwcW@‘ý f¿4ü 8×à,ìãw¾tŽHÓËÌn¹wèi—žê.¢(abBn½eéðhÖß_Å~¾ €!afMŸ3&ÈeVÒpÓPÛë>.’L~$ Hà3IžvÉ sœgÖ)+¼¸!¨2¯O8D•NÄŽ•êu¨©ôúú;"Å‚œq§Dê*§GôO®ˆ¡â% 5Ý÷}þæ Q1>Öx¥Q/hyÔaŽybw³¬œéÝöŠ}?_öÅn=^/âì" ±µ˜å¹†Öì'áÓØôÀÙŸé0îZoÜŒ»[ÖÖТ\Ÿ©xjæ1Bðéãe2Pq”:ÑØ;hnO„ÝTP}jÈ‹ßîÿËò¾ˆŒLâ ÷Hƒ¡Ýc0êÂÂk§ÏÐRÐÓŸy퉞}ÕщZ‘]¡<pw§›"ðƒÞ0®d§“#¹’(ÙjL –‚)òUF¦ @iŸÎp»£Z"MwJ€6ཀ‚öÌÙ½“Ô«"ø˜z&µ„0ÿ"CÒG~~ããÃcKÕK)@`ä6Q3þów‚Ä´K‡ïç˜QèèÔÕÜNã!¸{¾0önÎÓÈ]èQ·ø,±¸•+X~·Õ™¸ã­œˆHy1S_E<Ú\ðau]¿ XëcÎÊcc7û*º¯elªK¿›~ô±‘ËíÛüzNµ²08à…UØã<ðõÕÉÁƒ¾ƒJilôŒþˆ1ˆ"hP'h_Tcˆr {ú…Çs½Iï†ø£˜IeÜäáŸÓd’û ÇØ¨¨âÖ3yû1Þ,¸î¬’¶í m.ò2d/,œÚv T»ùêÎÜSÚ8ïÞr>|ػ٠r“e¼t †sJ[ñ%^CÕÉ”ÏE#Bîcç¸×?ÄLE™g·û¸uiïÃÏÉùÊÒd9R»ù¡¨áëp…0²¹+W¯>xñBÅ¿á*ÆýÛ5MÙª€µ íÌø‚Ô“ËråÝÐÐ ]xD·a@¬ô]¼º¦)ÊËË5s½ˆÂWÙÁÍOø’í¦ú¾užÆÇ/Â!ˆŽŸXà'ÃN“™›Ø\pY¿ü8ðý >¯‹¾gmOÉMöÙä— O¿~…ÃÍË®ÈÉ%°š(IäO¼÷N ’’ʼäþH&:q ´pð#ŸóöY˜uMëZ²Ù*s’EüïM~HaM>5ÙV4ÆÚ"%--–*Ô5[œAo|Ò¼m}þ‹ú%’éPÇSä\âuaˆ¯óêWöÉž?] ÿÖj.yQ§…œù|@B×…ùêþ€ÓEPÉ.™õöÎ6"ö‡ù›µS33áo´mTÁ`R@¸A3#·œ‡NnÞ_«X/2êZTÚ7*÷=ü„£™ïm…‰5…_‹ |/³ÛbbÖ/âî~NÖ[¢IŽ˜K|°ijë)ÎÖ‹÷K0oÑZà†DEþ êÓÕž YÎ@)Ü6¨9î/ÒÓ†Û?¿ºêî‘AÏÐ~÷åtq/!ç¼¾l\ÏåÎt‡§b¬)Â4W}Aˈ‘*íÑ5—2ƒ*Ûî„'¹ÐÁ}¿&^ûs'O?:ÇÕðBŠôž©ô­þÌÀPRèU+%+Ü ;„‚oñTwº„…/8.aÕ§ß=èèím\Ÿb5, V]éJÈ[àœž1Al-V—…¦(€vß—ÍJj­¼þ&æÈŽAkÔD³T[oÌÞÒ©X'Q/¨:™Ô.Ò™®Ú‘&CÚ×W@^ož­y0#0pŒùQ °Æëh–C‘ 9KnOw6­×™-$iwpï™%$!>Ä ÅÀ³¨ Û›H¨nôTû& aa\*W½¹¾þç꫇üVUבВ’Üææœ){±}%„ûïàÁŒ‚ZÐf£«çIÒܯôaÔ?¨~´PÒØ˜ é yAïr©K×{NÖù ¯Œó’ÐÝðÝ«Á¬Úß ¹èã]ÿôV>±SwÝÎ;Ù@‰î» ½ ÉÂ7?Ä!åä¼\J«ž$t(„/36ã5¡¾ùA‡¿Â…ý´W£ˆ¾þuÓ˜Ñó¤ âBÔ jŸçÜÎQëþ”£~JC»Wä%r]«@ês< V[u;2|q¨7Ù´û•µ“Ó(oàçäó…­áÔ[¬»ˆ²òËé;¦]1K(ÙDw äKÑY¬™Å!íû¶ß¤XŸ5à3j½6VL&qsâTÉs[4µ³k¨¯‚ä“P“ˆ.lß9ý‘Ñ`\M*„óʸ˜öU.+ß{»ëu•»$§O ¼¹18hþé­‹jl™–˜nÕ÷«””c^ß›Na‘†­~“±yH˜Ÿß_R\Só@Íy‹Ô¹)›Y•<-5¦áÜ­…7>RO6)))Ï% É-µK]Û.W¥#;Döw¿}*2:õÚu‚”GX¤zbè ¦û÷íS#ÕM§eZ¥»³‰M{9EvVÓà.4|Ž: ßwnŒÎöŸRÎPJ–Œ*±ª«Ó¾£­FÒ– ,VXdª_}µÐqÁeð-ÑIІýÓðØlí^’«§o©m'K=‘~á›­Xw:O[Ý/Ißšù 5™Vq¶¸Hÿ·[åêø°FV××7>šo "æ[ÉJ—–’ª‹½±ùÖ’ül¦ó¼ûµ[馧Eí´pé^K€Èæ––6hîî¾î‡5$¦Õ؈½¶ã^VÖqEåîúöÊ FíÉ 8®‘”»×/2ju©§M‘iŽÒ8.\8Ô~uõµ…ö)ù$ÏwÀ–e Eê6Òrru•nÉeÎ+<ã]‚—— Ur5ˆøz„Ü=7Q‚vxFº~SœhäÁÖ¦Îþ,Çï²zf—ã`¢Äb ÿ^sDçöÞR¢µíì‡;¼xäIÁâ!øµÝÅçvs˜zm"ñïÞÏ#"DYۮ֦ɴÛì®_ëÊDÔ:ÐPݰö~÷Ñ’Šzâ æ¤ŒŒ–ò›ÜUÕm„±véÙ{ߤ…œÝøR4ÙNGx{_»t½wkÑç@‘^:#çV헢Ι3:mŒúžgÜ€63ÁÀHVÀ¸xÏÇ•À{Ÿ˜‘uùòÁÎ\¯úÀ—R$ö]CƒíTº €Å±:'vÁǘ>'ýÓ³¦€S5ò¼â0Á6^_O3® &fgß¾> ˜šÆôææÄµµT[½[ë30ñɶÒíM¦ ®®Z…¯s½ÓïÞJ5éd0~ËPé˜ùx=ùýÚäͳ¹ FmdzA[ 10•ý€=Øß*s´àìUŒ$† ñ¤“Õzÿû6Ž_‘QF²èy|jžŸGuXo]ñ¢ZMÉróæÞÕ¡®ùÍtéŠa“{ŠV{ÆÍö?ŠZíb…ÁÙ øö¾†ÏøPnek¼fKÜýRÁ‘£žÔJobrç ëEÕìÈ1n¢±XÑÚÑ)‚`tëÇѽ-`²¡³ Ø®ÅÇ1‚¢VQA•F˜ ·è§XvÛG‡æ*‡jðîFë»¶6üÙ§Éß÷ÁXïßæ¶£#°ûP´¶£ÌF @®h{âFÐkŠxa*Ú çúúÌO/ï x|EY Ä¼<ø[ë~¡”èÓw"rvîSªüô;Pgj@¹!£çy£FNZº¡Á3”Õ¶ŸKÿ²ö9+öý{nû¥*,|üƾj/*õYšì í'š–žÞb)º$ÅÎŰ·E`#»€÷z\Û[Óõú4)±ü“÷&A —ˆ_ã- ‹dÍK×M­A°:X‹Ö{ÛíÝk=(A¾< Ê4@úå1¦òP±HIÓlB‰ÐÁºlU#ÊpVÙØ®¨¦’'¼×(hi/çi1I,ô.¯“´¹¼3¯÷àöØUÌϱZvæ< Ÿ”¯GI‡•go{å³®+–þH“óòè©×Å>Æ'+]9n—Z:(¾-ËÜŒÓã¯p˜c:Ø ”h1ÿØ¢ÌaN7jëYw¶Ôyµ|DÝtåíá {ÍGm/=+I{UÄõpïh9à_çÒ{˜Ÿ9õñnûZ TŠ™À®·ç>'jõ«\ ú9nÑÐzäùÉv¡7Ë“ÛûwBš&ÆÚâð@±äŒßep~iüå{_éÝÉ“†ïu6nÀiwpññCNœ\ùÖZ Ô<9YóÀÆ´;ë³}UU Q«‡yÚýµ©*é9l¥w1’¤ N[óý¤i2×ïµD2ò¾v‰_Åþ¥} ƽŠ[¹ºf­&nÄ<¶@qFM,¸ b33·¼¬U–•¥Úv¼téÂÖ‰™9Öxž5ªªwÎkt—hefS•3´¦?§añ:d_hO‰KW,2T5ƺŠÅï±{¦§gnyJBœì,¶åÃË×}m#d:ç‡IýieÜW¶Wåx6ÝŠ²²W?"Ú¯÷¿fSË#6ínPf?]Hlb‚HCX;âuV ”Áðð@;F`ÐqøŒÙœ«N¥m”à<Ïþþû^'F¦[¶ñÒxæ¯GGÛ­mx‚‚öRÌ.òLRµ|íÌ ŸpÂô:ØhZ¾Dv.\3yy ïÄ!ÉžL„°VVøÒjtaãìÙ~n[ƒ«—.K™S%„†bZ hÝ[¾wËÛG Uç+ƒ*CÈ=–$\À<¿û6ÎþžögÕ†w­nß9@ã¡ ñ»ŽÇ³ó3ífk(·“ù7U9±1×9—ÿÕ‹à¬^p¹£o¬Öä¹¶&’$èA?u(}-Å]úéì9‹…CUs"™‡¢§hÈLL^>–¼zx¨ÏO!êß0s(2ëwJàuXž×ü8²Np¦¸ý!î……ôàSžû«"JJ˜½6Ü7Ú7³,‡ßž¯ë/&Û#´è×€pF.Þù1z‘,ÌÏçâÞ½Á2ÇxƒùN#Üůæ%aÁÙî[~On$pWfÓ2Ý}ØÓŽlÂÀ¸ÔßOõÖ½œ¤¿ÿ3;-]úhcÈ•í]ÁƆ vÜ'˜/âÚÏ(Ó­èò}ªŠþxQÿÌÊÊöà‚À½­‘‰–§êÛ»öÅ ¥ù<±œyK,˜.¸ ×`¼ÓëEÍ£LÄž 3Qj fzoÕžä%Ö›o–¦£º.P®5»Æ'ïZŒ,ûÝg¶WÀYŸêCÙüÔÌëç ¹ÌËüÁ90îy jThR½_°FD(}Jmr¤OöC5‘pä÷EÇÇÛ~k¡dc‹˜£¿š†ö Ý£ ¤$|ù²´,4uU” gqèŸïåë†öUBФ‚îí‰ï|.2ïXïëÜÑÖ¾î¶9SC+E%%Uù yÒÙS§p.]ò¾àv¢Ê}‡ ‹\±tAy1~iW1ýRÛ]Ê%àFFÙBTf0éþE‚ÄÚ• /9š6ºñ† …W/ÈÎ^~¥äÜøâE—çkJÌaóC|QÂ@&)rY²ŒùTäaÝÆ\Á§4™„à½ý]'fbøû¼¦Y AÁËÂmc3ùo¼Ò2’’5ïéqÈÈš,vv¿^Ç}âwë;«­YW¶j!¶U8棳—:P˜Gß–VîÔ˜åQ«$º§"q7VE¼Ø½2ÿ…@²:3 ø:½r:aiAV‡ys³f-­“$ܬXââg/´EhÞ½.SH`cÓ¬é{"@Ô=žoë‡Yìx­„d–#žÜK¿›sos>qzè NKS£¦£ ƒìJ&àLšùõ€NÆx IsÉjÄ7U»”ðjï{¶wÂõ*w}8›rU º 謻"x0Wœøq’¥€O…‘áÅ™‹r†—|lîÊ:‡@ ‚c9îâÅ_KàŒá̻Փ˃}=Η^]nm²Ç¢3ý2¨º—R)©©vo™ô“:Η|©!\ôWófD©µõxý)ÿ†ÏB/Ø7÷|©ƶm$|˜qâãúÚeLä½hbrÕ¼ÏúÄ\¯þÉ0?¡É ©»xõ{ÜîÛX™úXüÒcÜŠŠÀ¤ç±fåxarIžÞ ‚D$$¼]7ZÐ×ÂNž¹Mµ3‚g9SGUjUýpm*é^'Ý9¸é‹r»•\m'aJýÙZ|`¨`ØúâРh•grzTBtÙs5íÈÖ¦¶˜×i¶bgTs»¬"ò}¨ ?®·¶Þ&ˆfn»ÝOz–mm?ï=Ñôh¹](cy©šºò7>¦l0£-"­£KížDÑÝe„¾±¬s ÍŠ  ÉAÐ:Æý‘¾ W•®¹x¾äxw·Ÿ#»˜jõŠ0¦¢2‹¾gÝ·V–Ž‹pƒh%%%Fß \!#K½o_}‘¥fḭ¿ óWà “EüT7çÍÛŸJÒÔxŠ)&Ó“3¨²=LеƒRöùsÀ ™6ŸÙƒ)^=_7\Éõ)Hz°bCíIy©ç~ƒìBà¹÷±EDteú‰ÂȘj#h÷3êÃ#h7ºØzz¥å¡)¶“ms>Š©ýÏ-Ø1OW_¼­¥õyjBV—H€99Ó1/0ys}𙲑 ýu$(E¿}Ûaãä<Z€*zÈÛ W„ýçU²”ζFmkÚihª~´-Ζ¬?D©¼†Ã¨¨0ã5 Zô¥[–x‚ Õý}‡ÓvDß„7$bRÅ]¨yz…Å+€Âøâ¾ýìÔþž$¦ÏCþ¥øA8€4ÞyT‚œü@í&¯v›×²Òë4C^HÐh€ îkôK©w“,Cjj¸0/ìÖ8\VÑʯëØ\ª>ÓèYMy“,,zn%¨ .>³ŽÿÐ'×ë-Ö$¢›‘cKÒ ÊÅoÝw®°|dK äýÔsv¶÷œ’òޤä*˜¢·÷iÊñ 1ð%ÇÆ–ò%!Nšì]97Fh¸W?<ψöýúõVaÑÅÇsU/\¾—]÷ô‚)?îddd$pëÑ?lï,3@ ¤ÉD·Xì¹ñ˜”¤ŸL~8îƒóùó*׈Ìn‹‡žž“õ|ÜøÊ ¦¼·A.Ù³Co®>–\Oι%¾³ ceÛ}h7¥7>XÞ¦#¡Œ.é]lÖ[[_ï=GÏcÚMÌ ÎüHÄoZ³ŒÿöX’&†ßå•ãÝjÁÇ1ô¢²ÁøHT1ižO½(%!*†Á ?ï'ù¢jª’a~O2G­»#Sñ cêÓƒ~±·‰vOve(Æ“0"ƒÇj [Ž78\{&•¼ê1òõ«7/oŠûÎ*½bÊis è_·y†½»¹p+,Æ%â›Í{‘;«á‡É›Yå k!×¹mÆO÷¾ÊÑDÔt°ž¡£[ÉT¢%Þ˜KÑ,²2þ4~îß§%òÁÅS®•e©-Ìö„xß®ióóSJ‹@ ¯bS§ž&$¢M  !$¦««¡8ãêjÒñIêQI !Uøé“'N…mUǸèS¦J&''ƒJ='ˆEÆï›ìÚìËàŠŠš1“+dan M¯&+œÔÕ…Èû&#"ºö2qA]ùû§B®û%›9½Ìa‰25e€Z½÷­*»iâÝÇü£ÝAõ¢;Õ‚“4œœø%"„FDRê\—Ïg‚‘32Õ}z»ÃÕ•µvê)CÃmz•v«HUÅ ñ`ã"£$ **5ß,I„b’8ÇœGOÓ~JŽ^ÐÝ_e/`ÍóûvøÒž\’ ©z¾Î`SYYYV«aþ`r!²ò‰§1tÞ:ã ¯ÆÞÒ$;×»óþPa¯k~3+#è[ÒGô¸]îºÆç´Xÿáû·ª$¹^ÄÔÇ„3ž:ÂÂúKtO€šÌ†LÖ)ž;8øÒ=ÀÔ?§]†¸R$“6 r—¤(gYxy‰i¥#GyÅ«úú9}âxâöNŸ: ƒ·–Û™4[R)‹yÏtfàà3r<¹ñˆÕÓÝíËjaâîùίÛ3«@gj÷’›Å5Ûû•Kݽۘé=só`bÓÑõ™ÎQôîn(P¥`¨™ºo8["ož’ ¡¥EVyzªäjà ["dd5.}¤¨¸ôs/..îØüü%ð+&6 n“”–~ÊPmôž {··µdWÉ‚/äEÆnôÑ;-öC[ÛKÇ-rÛ3Wˆˆ ã`zv6{ÝÆ Z»gpóÝÄÊ•+WîâÝ2$q›tÏ–|z˜ß%Ø]íqµ-Í܇JõyF†Ï9lüñÅ¡n;C†+ò´2» x¡ ù˜`– T+ öBGQ ÝrM$šÙaô›ƒß½7=©…e…SÁ9ý‘&s¼ÙƒÏCîÁe/ˆÖsêÔpZTÐ,Lºbïõ,9QµTmþ…­§ÄB{swà ú‚GÇ…6‰Ó5¼ŽóïõªÜ›>zôìéS<í2kD£ ‡è•••yÀûrE®…ÅvhÖ›Oê¶6yúú¬]xïNã[ëBÕÒp%êüùóD[++ˆžžž`X£ãÒpÛæÒHÁjS¸®¥æZ Ê¢ PïHêð}4ù ¡Õá*†CÝ,l¯=Ñgô)ûŽ ýOCˆØÅó÷(bo00ž¸7Õž4Å+]uúô[ƒôtå/s½#Ü_ª³ôEÞ{ÐPŒÒ²³Ç5VyîÓ¦ª´d=ŸJfØ:“)O½'x—yá†ôl™ÐA½ìÝŒWSíÕøÎFÏðÖiJ ïÉ'ò7oópso‡ mO4…±{‚˜ÌQËÓj´Hò2 †ÑáñçK?eð2çZ;šô•Ù}éwãb||Î\ÄÂ×pÞ«ÁØ\›’*:oÛ«žø¡4KÄHç§Èfjˆª<ÍÆ·è•Ö|–Í1ƒÃìMwœnÊ ­ð/TÔÊWe·—u‰Ò”äÎ`«–³Üö þ²erA‡±¿‚ã~wP’MÄÉ%Æ¢‡‰_yyy5³­€½¾¿c!#'o···g³l#|]\|Øg9Ù„Žð BÍ·<½• fcÞWˆ˜(¯oh€]¿~ 5ω ã†YO®f"ðÉ“ˆª îU™/¼Ù»Ni›7Â*Šå…#Ïãùg+5Œ7õOi.ôÛiÚÚf×nå¶(^~åJNÄfp=ŽÛ&éÒÕ›ý²û¡Ø[ç[èüªÆÁûéŽõ²Ü\ƒ²5FHŒ^=Ÿd¸Ê#neíÓÒAY{—ÛÁ!¯1Ïö­äÒâWcŸ=C±ä(ªéÛVô•§‚îÜŽó}<ö6ÑŒY®ß¡ïÅÉùnRül0ŒµÑzêãacõT$G?U¸¤)§jZ¶—ºiÒçµLí=Æ bÕ=2k37dK(øN(¬ë¦]j÷ãM¤þ2õxƒ“Ã0\haöûŽ‘ŽDø-ôö@ö„K™a1!% Íéûæeм“m9ãïmé4)0üœâê|§$~¥ó žÃ\l«EôU›tò‰Á_ñöõ­íîÞÛ“Mä'*Яn,2jg5ùLÓ700U®ËÇÇÇÍÃ3¶0Pê¼·ÉŸPÄÏ |Ú¾ÇÖÈê±kÏÍÇ—*ûŒÍycVµ±Z9C.Y>IÁ‹„§ù¦™žË«Öxy¼¬Ù‘§ý†¯å™;Ø25Ïr°k20Ì¥©ØÛ‡~=$ ßÔSébŒ­íz}°·3,¤íÉ&=ɘõ«H¶‡D6f»O|=ÔQÁÛ˜‹nŠf©^^3âïUŒôÍÞYSw'‰n¯Xüj€·j>ÿRׂšhV´zGë9%}Ð}…‡ãä(¦ž])~öìY¢ÒS÷Þ8. Ÿ2¨"ÅÅÅÍW¿63Â`°‰’l‡ñ׫| yöò%ÌÎÑñ£óàè»GϪª/^¾Ü¶QäQtú°7O›«˜Ë¤vâü@k"‹P¤ELXöÀSñ=ÆÀøD}MAËÏ/¤ ž÷èÜ|k4‹ù×÷á¹V#UD¥[ó_Ø[iKV?*÷5}s YUëC1N;V;\÷M¿d!CÚ^û5Üi@µ¡JÀÌ64ììˆW¡/&¨ßÒáɱÀ¯"Úÿ~ÖãëÞ–†¡)ïÓ3g«˜WK"Uï´‹¨.\THôˆ=Ù¦yè™§peó–­RÇ“ï]YÊóu~ØDBÐW«f)ÑNizHFq9ð`5–µe›'Ø8ì¼Énµa_`/ŠŒ¼69>^ dj+`q}YÊ„¥ ss­€j5Ô÷BêÉ«·Ÿ@®†©f*< ""‚þ 4?3%å …2D"#VΪ–Û¢ÏÞ'º~ÝÈ¥.ÒQ¿ÑSþãÔÌ̳—CäBž$#[K#_€‘U¸_ èèê>{öŒˆCÈÉÉ ¼7#Çè+·›‚Œ­¥/éuîÍ›7ÍËsAýúÐÑñ8ä:W(- M!?;{Q°6ÿûlõ‚ããã/,o¼Llý®Ðˆ g(erà—ø¼&¹wøô–ºFïåg¡¡XEZ===ƒa3S÷_[à§-d›¾¤çPý@Ì¡õ>ŠE(µc}GéÛfNèD"{ÉÞd[\°û³0êµ¹þ½¸˜6Ñ“…=Éb¯¢J7«í–L€éëgº¾qNpš=[ñ2‚*Ag†~àÛ €‹ Tºn ÇÆÆ ÈÈyc¾»>CTšÓB®£ú6l”Îì¥y&ÓÃ0½¥Õ/{‚-ó–Zî½^$ uó› ¹È†@óÖ(¦_¿Ö#‘Ⱦ‹æÚ"/Ã[êù§Î^º—$èµõáÓ§pXcßòXÝj Àר99 @ɳáûòmSgÒ ?H¥Ü"k‚'ÂãͳC+KË ÅÆ*½FPåqHfÉøa%X£Zþ:ê2ñ£›7M. Ü`ú’ç •Mu ƒ/Ë%®Ï%š‘ka_ªÂìçJ¢ö×Úo>3—!Â[çW‰®º_ArÅ ÂèºFü,V] çqk5ô¢kDSc#Û¹sç ߃<ü¢ïµß’’Âf ‚Å=œýæCè¾ACÕ’eßu»…S7Ÿ=c`!Ïm}®¥¡Q˜!ŸdøÝ}oÓbri)i‰̾¥O^Ž|°sëIUÅYTð™Ó§Y/^¼ØHˆªöÜG~kyŠÚ˜ë5 ÂgjY-ûn_fçʼ&B$–=XÒµBÒ\5ôáÔ;''#PÅd©Â ûú4²¶ZMâÄLÞdë0înÃ"žÅÉ£¦> 4ï}d–qÌ6>Q°€N·œ*Î.ar°ÅÅÁyÊÐÄ\o!¯== ‰m¥—ãlãÅÚá*ž|hûŒ ©ƒªEu¬3™ô€¾p}§‹ñ½ç!ÛÛ4ù¨+´ªK²e´p¶á¦ÆÛo4®á=}¾ÌÚÂP-#i¨ïª4¼—ú užrFÅaGÁA÷l÷ð0ÙÇ1/_n¨tÛbµýþ}‡}ÄÅö ONe¥€a[¬OG‡Â[ç•“ “k}/_§—du]7† fG²ÈòÖ–_AUèÀÊòòûÞ*Õg?&ÂŽ¬ÇœzCR[Âݽ‡¶€#oß»ØA ’!-ŒZbÑö—iFwî]~þ}*ùÁ,`’òÐ;*EáŽ7•†*Öú>&ôºK=I¿¼Ö<69€Zs•U\¥?…¾>™Êüõ³Ježï«bùޏ++k œ.‹hllÌUÉR2¯õ>ÏZßÅ–/t^ȇ/ @< 8χ`aa1ÒÑùZ ¿}ÆaÜq?íÅ ÖFB>—Uv޶+ê=GÛŒ×Ik)Áu*ÅYs2Ÿz-ò¨Uº:¤çåµÃkòu÷FŒ”\Ju?¾4h6é)[¡ŠŠ¢û¸÷QLäJäíćí3ût’{ã¾Â‡Tì7>L…Ù|XàÔÕÕ5~KÔ,óº`n^»šVëâûpjKj!!ܶÈrÒ¯]â Bn*§ßªpÀ¸"5@ˆRixRÒyh°ÎXXL¬f=Š¢âïÞ¿§X:w%Å0âIç|ü–§­Ö¤>ׄ7}±î)ÐÔêÐfdp· ÕÚ¦´Ýœµt Ò–ÿDMGrÛK× F?º3Ô¢ËlNAëtùºoÇÆJËÔÚÒppà !늄=ºýœg¢IõŽ‚ÂcáM\bbé)Ìð,oïÓùÔïUÀx ­“±ßV.¡Æë±lä2üµÄÝDøüNg ½wî°„ »¿·h­BVD¸l‰„?]s±Üú.´wêÇ”kO®Ô¾¥J€a†¤ ãPz¥½«@ŸLOÏiµŠ½¹”Ïiñ}»ÚK8Ói—ÈZJ!+{il’“Ðmsð~õáÅgæÊîÛŠS#´/ Wñ‹MU/_¾®V“~÷ ð½&hòx+2jòCªµãbðÆÜÅÕóe¡b˜”Òm€B{ú2é7bŸÜ"£.S1Ñx¤ zÓ¢ÓèpŒý=mäîºÈö€0‚(6¹§wZ ²QèíÄý'ÊFñ|[× ô>¹_ñ¾"\ï+õdµ6ÙÚ÷ö 3sŽ•÷•§ÕÕ´¢T'äâ>|]›¯>L]f™í‚Õm.PS\ùšÃ§JÑuù~~>~ú]¾›9LÍÑ,Õ q.Ë´JCÏ«h¿Íu·õW0›öÀ¼ÙC»L|>€–;ÎbšõêM,1' ‘m}£êÄ<~>öÙó Ø/o ^m§üu±]ÂAqG Aïƒ7oNåëºÝ­;4:V‡}åÂN¦~5¯"¦¢Ô>(³²‰ƒDrÂÆ™“rH LJÑ•áêC¬ëq!À"øUUÊ‚wnQzŸtÛ›tÞY½þð¡  §´´té÷ê1±_¤ØLwˆ–·?5B«…†’¾‰8\ôx®ª«ûÑ9r…œ(¢»–w%)¿½!~ã$’«ëF¦]rúÞ‚ÖÀw zQ{û×¢gTðøñ½k¯JÞ ED}îêµÂ|ðœ‰ÌoŒ¤×ÕòlÕ1uÝûQ剢¡á?ƒÊÒ‘¸yÕ¥D~u ä:%!»!ÐÆD¯d{“SùÔ8ÂþÒ¦ƒeTÀô~ѽ±ui÷•” ËÔg)¤×.‰ÞäC‰; –᜔h:µ¼‘ l·Ž×ÑSÐQl¦›zŸp{ù®†vç²»’³ðXRZ²;AÐé“‚ññ¼¨žÜTkûyÕ–¯;1wMv^,yA^ñ%å'k'¯Ð4™<…ܘ̚0ý—ã8TTWA4ãÓʘ¶R&¯ÞÒ×óŒ&ÓÒžÔ¬QºxþÒå7¨ïÛZôz:Õ áF{45Ðæc°ösjqœ_D$2F R¡@hú˜OÅ"ôÚn¥#ÍŸÈ<ÝHhøû!´ f{¥ygöTs Â{?àph‹œÃsMw±_ífÞ¬ ç÷¥VÔ…¦ªù©ï“aÖ¯ ŠÀu&}¸¤7÷û+nd·jrM/OëVäÞyÊ€ƒI§Ÿèkáæs«óã]»è¸¾’©n%ˆ`+†«]œ çüà B¬æ}rõõ4ˆÃƒ—™Ú½ñs’¢¬…€Ë§ŸðÚïÆ"ØbZ6£§ô~,ÔPO“¢˜*¦ñ:”îf’§…ÆáØŽKU<öStßÇôUâì¾­$ý”rærÃGlì°9¢I’DA]iu%îOgb«ô)FQ‹ƒzÜn›ç‡.>U§/ÆÁÁ¹HŠô™ý y—lÉ)ä=ñºÈÝ 7Ë“…Mâ ÝoÏõ«Û–·¼Þ9ФÐ()}w¿rK¯¶åé#hk&Ã5GÁ×XòƒæPKÃq:Šçã¸öêê&x9­GsNcÔù‹N}týjñéÓùøo ´,@ú1›•NŸÑ›{©œÑoe«:äjÀÏq+1itœ›œ¤…¾¨ƒØBÌÀ€ÄrÐùÑÁ>Sy¨°Ë-û—’êêsÔ.?,°bÕ½ðì‘¿Ÿ°ƒ{¾¾×~ÓR=òüâÈáý¦0¡f*0²æãW[(xyq89¯ã\½úцJ‚Œ¬ÚÛÚ7PZó1!õyNNƒ0æ'LZ™Ùºþ 2,’çÉÆ3UAÕUgj3–X‘c%v Ñ”îÁGNˆ»A»ùu¾«ñØPaVThM÷cAÇEÌϼ7ÿ¬x¨yÈ—¢Ê¥÷æ4W}33OG2[(Ž ½g‘Ÿj½Ø[à|‰èiCà ÐŒ/¥¿‰ ULZ;,<TÓ—žûbšJªõ__Üm½wO2?ºru§¦ÊãõRE/--á²7|5_ÊÙÓeyüAÞ>„1Hæ¼ln}®”¨=É«ae"tú³3Î ï+ùËÎü}_8•ny„èjPq¨¿DmQÀá'ý°å½ŸižÏ§þv=©½.ýî&Ä d¢¶mI%n:»ßÞ˜m4þ”Âyø"QðÀó;.ŒZ]s½ú·o×Èhš+}£¥ù®§›ò\_÷Í&Cï­×JÊ´}Å·®œ?»“.¿Öô((ˆ£§ ´®Êƒ JEš6¤A×jƒ“Ú/?–¤ž4Ïö²´Å¢sIIÛ㘘‡vS‰€‹Œ¢ oº´ñô«tkz®UüJG‚W¤¬ü2`\Ö3Ÿíò'¬èèpÏ©©™øÔá(lpǽ4„¸›ØcÓ·¨ˆ Mßûƒ:þ7¯·æ¦Ù„,Ÿh1ޝ8_ ð¾pÚ?H¦Öçb»AÔÓ+h#³kzzÖ³fÐVz!ÏzÒ€k5ÀºT>~ãòŠo¹‹„5˜' ö‹:×õôb¹>mDÐfØŒ‹^áçw´ÑÿBžQûYH%33ûq¸Òj²ð®¹ÀDEÌÀsÔ±}Ë&Ùq, “©^Í ¨ë8ý8r}/û|¸äýÏi—ï™K| ¦þ¹ÀL|}a³Î¯´>ò¦.¶¯ÍÔE˜ËÏ+ªåikvÝ4òö{×hH-,RmGðõ‘_“Dö÷w9«6ÑÄá¼kÞ÷’I P3/Ñ­¬ŒšŸ±ªÖ-1)fGV½MÁMymÚÅúî{§BŠ7™¹9'$Xò©ÃIü®~ˆs:y‘`÷^ÿë|¢F|ªðûs€(½2ü¾åé­ÀXP)s¸7ºï1êô{tNÛ†T‚îWV|Ø[§I±,ˆ i¢ÎO2˜äKà½w&Þ3ü Œçî;JËë$!q\"…Í&šVzèk“-T¬llï•î]½°óX^:-.éˆnůí«7·(ûÚìjàš÷Öå½Äm 1kr yöêUö%‰¦PPUÎ- ‹Y“J$—˜Ÿ¿Íì PYƒ’ì Ð%ihÚ\}+¿¾ÔÞfÎjŸÏgYÙ •Bå¦#|Û§¨™Bż Ò32ÎÈ·²¶õn~‚}o¡ Œï…ŸÿìþÞjúéS¡d Þ‚Ä Š¯K’ùbYøNO‹'â®}J•'èÇ­tãªÿ"PJMÀnh/‘§•nmÏ¿KÖks zÈyyT€N~ñ=€Ñ®P@1ŒŽR+£n?¹LT|c²H¬­-1ÐFÛßSÚY®,s¸r“SòHéß´èξÓW¶r5]^(FÙÝ=Ò‘Ó{¶¾‘î]¯Ó…Ü\»£A ÆÄFÝöÃâèvÄìl†¬—{m®yy®w kÁT”‹ÅE,蟹ÝQÞPaaQL9ÉR¸»îøç6çiœþ®GÙ`PG·Òæà­!SsóÄ:ÜçOógå¤â{ÚYC̳¶ú.*:º€9Iâ™ÝÞé^+\uÎÚr»N…r[¢£œ¾‰á¶‡½†‹MNUJ¥Œ@|*,ò½€'(»rá[ÿþ˜Nš´¸Fás.N«Í¦Iú…o2à!>·)nkë2Ý‘´ì/-8ON~ã­Á€Œc­Ñú:ŸéAyWˆà;Vÿ!+ãG¤Kévo·8¨_ݦ)s114ÜÜß/zxXp³æß¾Øžù Q§•b7Å }©©½ýÉ^›¯m ü³Ý·$rDq©n\¸™Ç¢/ˆA-QÒè}~otÁCçÍW’$–¸[OŸ$«GV¼òü¶+}V¨: ˆÈ—_ëH(¹à UÇnHâSdgh§·?µ÷<Úk«33Ÿ:¿¥ì†ÂÅ/T.‘WáV{Ò‚jlC¯(6'y¡Ørè ”ÇGÕve{åôk‘¡Ãd Ê*²0? wj›³Ø¡QÑø*êØ@¥u9äñw6NÎúæ'r™ê$g/Y«Ïð–GEDü"Í_›Ðëèäv;ba‚‚qMÄSP¥“'õlIÓ$"!Ý¢¦¡!¥íþTßÔÉRÚí+DЇ’c? ÛÍ#y@n¢tž”¯güh8ÉÚfC¿¹Õ4|Ãä8…Wnæ3±âÌ[ä¯&Bý‚ò—n[ú„ü}PóQLÑå¡/=÷›Fß X/ô›‘ðÂO@[Æx¯Bÿðx¦B2\«´ä>Шù©×ˆQ—Š ]&f»{ûЦXBôä* "äy…gØ.è[ ßmä°1W`3!Ž©£Ûm§Ê'éSkälg?ïÍcçŠt|{kÄ,p¸²ö…W^WNÐçÏõWºÜ¨… î´³ú@£¬[-w¹.WS"kšš\P4E½ ;¬q¦S¹#ELõ(¸Ã)ÐÇÄtÎzµvȤ¿è‡jZDM} Ípãþ™‹»5ƒoOÓÉ >Ç¿ÅÈÞXhÚ­ íæfÒV›àÅ¢4 yÂàŠºñ!iä:T ¤<ÙÊOJ|YÞyuŸ–.]X]n‚Z´§1Ø$Èë4`¢é«û¶\}­©TÚPõ!Y¥«Åí,%W Ç@³…rß?XS»W8‡Ûö+Y¯âóöĸ¾£ú°ÓǤåµµýC®/¬,IÌ÷Ù<㛜Û#|÷. ææ(ŸŸz%e“ûºÖ{S£Ô³ÄâÍÕ‰-*Ì'‡Þ6\‘Á”’ñæM<^^*MQ*QêiEòáá'çZŸ):?R%fC*EK*àJ~êœåÖ¨îÑ…LjêSdž:êïG¹ÖË£¤O+®63ÙÆê²f~Ïl rŽ[:ÍR×®¬b³&[Õ íü‰kZ¡wÜ¥P Ç“? tÄЦPžñͧé!7܃=y^›“ï–2J2­^©0R½˜&æÊÇÔ¹))ƒ› èóæü­ÞpñÝ@£ÎtÒÚå±¼B=L×»8Œœ<*s\àèU\ýÖrE6Á—ξ¦>€´,45’Nvú¾a[ö½–ÈG’ÒÒßxå’ÝðÂÃmbxž¨Ý¦ÅáNºÔÔ’Í ZÚËn–5On̾tØíxéí¢ «ëÀ ‡ÞÊšX71RÉÓ:»¿ká[}xäP%¨ ñ ØÈ‰F—HŠ(Æ™h›nëªiÒDp351Zº ,¬ƒ`ÅTGÀëvcØ3 ÷cÿ†UfÔPQO¢[Ѳ‰ƒç iËBEüÅGßÁõ”h êµ@ÿÔYsÅ oùA½'0êëiðMøìÑ8”¯P@D?:wã¹DØ.!‡)Áæ|y³Miß›èËJ6ç‰ÕiÇÖÉ/\M@œâ‘µ9D’xl_ «sJ±™„ À#9üÜßÒÈkïñ<éÕdÏáÒ½†PŠXäf XÍ’\|t¯óúL'&”øü<ðè@¼=]F†Yï )©›À¢¾ ršÖZÊê´h`O)Mßì+ AäNý;:–¸]>Чõ¾r¹+G]„pztúÓžŽD8??qIÉ€B¾Žô~¹$Í(o„ôô—¢»[¥ÞA­÷C²V‡x÷óvïbÐ`>þðÊ¥X$ÎòÜRæƒ N‹U¿„!ǧ.8­ù0]ŒÛææJá%"êø8TnüdØ¡¡ …?5tÓ’ê—•½Wø×Ö!iø<Ö;iD¥+ õñˆÄt¥WsŸnyµ"Õ^?ªÖï7¼…Ol.’B%'Ÿ:+Ýzö6P¢ @•vU³硵œXŽœ‡Ã•×mIý®„¤¨4¤Ø§Š?(Xºæ~ð77OíYó›Lõ+zΒ麎̇rþîÐ+ %­÷6µ/‘”qª#1™¤ÏzörÿCº»ží´F¦Òv'¯@ʹÔ*zÔ“w%?Õwƒ?Ùö 5–D¨ì‹nž‹ÉÎ6¤@ ö÷‚×9Äë,ôãù÷Ô»·ì ÿðøŠ˜R Ø‹€¹ì9ºu–×þÈØT¥V'S³‹Éi´Œ«OÅllš;z38”«Ÿ_H¡ãyØñÏC±ÔŠº,´þ:;r Æ´#Pî£[®=AI cbD2f…QKÐ¥ šb ‹BQMdÖ¤R‹ãã0ÓÈso+—ê:íàâa–uG±(n5ÒØÑÝý°të”$Í% Ôkõ½ÄxílÖ§|¾Aß³JR~ÎÉéÜBK ±§jtÌ1/‡@_o{P¶ß[à\^àE÷î­Ëåå±&Æê­µ‹Ð‹jyÄ¢k¥WkqÈ”75ÛØ¤deß[^Zhcð:d‡t眫ëÓàɯØ£‡žuøa‡;ïqž\‘Ÿj_·ºçÜñùêmªðÛŒ†Î;¶<@v4ÛÅ­¬4gêypb‘Jäàà¤Pö¤ít×úõ]˜‡+Wê+îU¥çyLÞ·Ÿ_娂^‡í+Lðn®D)T{º•E¥Î òÆÒ1èåÇ* ÷EkYÍÔœ¸yš³ÃTs>B߀h2SëÒÖbe](ª-ö]a‘sÑ~øÈæRµOõ¡ oªÄ 4ÿ3]äÍsЦãøîZîU¹q]ƒ€ývMS0QO 9îø„rGÕ¾4“§ïn¶ñ~¬#–£Â"²Ünj³veâ ÎÕ«¡†F§>80bTGÛëÏ2¾­$§ ŸIÆÁ`}ñâ%ÓÝ“ìEWw®x¯q>4à¢3?àj/ó˜D5Õì…ÇÇG}uÌø’ŸqyŒ=,,\û)½í¿ÛæFØ€ÞÛmlPšîk0i¨œ¥ ŠIùûêyÀ¯ƒIßœÞZžþtÃ}osá (JÞÂU²êW=V¿²sZ¾õ¦)™XŸi"ªò:¸ jöÀ ”’%å ‡Èæj¾|¹ˆ@(ZÛð<uŠ’“ó¼|¢{cþŠíÀÖ·VŠ«ç)ðeF'±öwËQ=¹Ô%iµ Ü”ÁlŽ“Æ úÌa¦v·-Wè%ËÆ°ÃêÍEül¶‘‰m'‹Û¸w·kD­áVvóÆ[¡ZýçÙ™ ”CBPW¢tIŠ^>Ë}Òí«Œ2NÿйœŒVLéQ>oÊ@PÚ%Šs¥oÇ‹;·LŸËœ9ikîÛ\Ãðœfûš[‰YAñö »ëÝ yuÏ«­--Šrr^Ý]^ß%Èæ&Y²ÆhééEù^šQ[à ŠÚ#j¦zž<ä2U=Âå™Ç¤½iRë½`÷agn3~5ÿY^¯þHþþ^˜+÷çUƒm-R~gaÜÌŸ>¥ÍoáânÝâÝÛ˜'ÊÜÞæöñ.ä¦Çxþân\Õ'<õ½ NÌŸn$͇wš´ð7–o »6Z¬nn*!’•ÙªÒUsJfÖÚ;×ãFÞæg)¨È~¸livͤeïçîþÖ¾ó.K_çÅ ºç]SO²„vK+õ"ZÑ }9Í%{˜J/=NJ²ª,¾øÜô.›&®ÿnùq[¬þ\+Ku÷òØa×ðö›–8Õ)["1‰ê0”^æZg3Ãø·oV^|ƒ›AÜ$XK^šÅsßÇüì^1Ê$ð®H*ÔàæW0(­¬Øðº®7ï>éfÖ¡\ZªþHÐ!/Ç}[bÈq iãûõ¯ö-Á·íg:嫳¢É í§?‰ ¦I N½né¬÷Æ]Vi¡j¶ÚL%e:Rr0Wm©.\+ÒÒÎÒÂ%X0²¿(€6ÒWClç/ºó¹áÉP´¾gÆL§ú—êùò'hÍÝ+‰ÖÆCSͨÝõóYŽ7äWiàÏa˜—æŸÃPù zzžå\2k“ûª;;O¼ó³¾µ–2°¯ëä'}´9sFnaØCƒZb³ÛcKwéÝ4ÆÝ†\ÍÃä›Ê¾jÛ Ñ­ehâXàÐlÕÒÀÒ•a7ý™D7µ2Èg;©ù•ŽÉU»³o¤ŸÜÑÔ,ï¯Ü+)³ cpë‚ÒåÙ3¡Y§j·ö‹S™ZE’øxåßW¯äisÉÈ ºÄ {8eä¿YÔlKØóâudlM$›´¯xnõlKÜ7LSn45ûú¾µ»@?óme«çkÝ7޹Ÿ^‡}ø@Þ”ÄWwJáâu®Åî¢vKú-ßFÂÔ‰¦vÓÕ¼Ëä7oÈÎUò%^·ÌèL ”î¹U@ãJÁ†q[y½KyÂþÛSÒÓ`EGÇ¡h§í¯O*y=ùsj_<èœQBŽŸ¸³üêUKW¹À÷ú‘C¥!gy¹NúgEAA½þ·.IÚ{¦’2žºµ+ÕÂÍ5ä™ô=£µÎ*´1€œæÏtèe]è[)óÅ^Ê*6«V™±{ ÌØ_¬?ûÅH(7špòCyù‡÷´,,~g/Ϫ¥ºb‘òf-íÝ•–;Ы>ØÐgØo7¥ˆçõün^wF-Ôç"×t­ÏjoÔcæá>¡®½À°Ãì©'1àª`lZå«ê³=múÃÃh\ñ©ö^ƒO¯ÐI_”3n!5Åß8zXU hNm.?éÉ«,6h†3i²Ý­ªÊkÝG•ÚÛôW¾Éô:pÑòImx[Yùub" ÿÜB©ká£ã©1kªÔ··«ëVlï›)V­TzΤɃ–ðKK=†*á’[WëI±ră´e>—Ž,ÜÈ=±©Yt ¾³ã£*ÊHom2V»+u[½i¸ò™ë\Ë|Ã[ÈàõšSV³ïÃÙŸF¸Ñ_l–W:’˜JêÑJƒkk;Ëùùí·˜ªmªÊ¼)?àÏM§úØèh‘¡ 5áZó†úA…;üÄÂEwñ¡rA+sõÖÛmI/­Â{•Þ{ä–V‡/›#ß<¯É:ØÏ©.ÛÕe½ûËì°@ÍÂË™U‡;IRÄ\–þZÅ«Q e¼ÏÌŒö³ NŠ,v»9¨á·ÅO‡xH¢H°dú‹?ë:]Vγ¸ÎÊ âÿZ׫·+f.nnOcò#ã´K¼Õòúõc%Ť²ô¿Sé{}ÅôFH˜ëÂg îW4ë.NimmU\®¤8žÅºÔ z•Wÿý+FÍžœ.dyëY&ÝÅ&\¶Ü$‡¼¡ŒCö &¾u¾b]ΖŒOÄJ?±ÈõXyÚ%X¾}Vá¸@ÃR’žòYæR|rü¼õx}¯õhÌÀ8!<3.¿’S:d¥sÈæþdœìÆ"©ÎÌ“óÎâÕžºÀ˜½^ä‡Î~»›•ÛêíjyoÑÁëõ¸K}ÔžÑÌC@̼újKäâÆ÷ÕZŒ^¸5z$ïÅ‹3 CrSRÓàƒ™;m ©›ì®çÐJ0w-jC˜Ó³<\irûj[Þ•–èfù6Šy?­¿ÔjÂ7óDÙô \¼¸W¯Ó÷òõAEÕJÖF%Ëüh[;È'yƒ:ä BKyoù­x„t»»Çóo—½};ÈBÃ7 ñÆq_vlLóÖÇüMO?,‡Çuˆkø“_2nqˆ j½6øpû ¡*XÑÔ4ûÂ…ÙÄ>ûéׂ»Ó÷¸ÅxxΔ+}úä1xÝðêÕ*ÜeU»Â:Y!wÇt}Z¯b&þÌé.”çÏ)?¼Ç0tñ¸ÖŠ^ß±êú˜à·ñIb«Ëù° ª¥+ž‡¼¹©If¢i«Ûûü~W‰Å‚DÕîîn¶ÛÖbñp5ÏûææO¥#žÚ,Êca¤|‰ý¹§ÎyväøüµùԬʈ×Á”þ5²aM»)½ŒšGËÀU*¿ºd2×LÕ[âJ§"¿•|zNý466ûÝ£soR+Î:Œ=¦ª|7—÷ð$‹Ã‚«\Ô·*Ü…æ'ÑïÛY@­P-HönÁ»vTóçÏóؾȨ»ƒ«®¡‘ ".GÄËòMÖûv§Y+¯=9œO“’’Ë&°¸mj‡ÉÈÉ ¦§§w1‹¤ç%<2 $O†6 b<Ïbð¸ÇnêGu¥ðÄ-v–ìÖàwe‚¤ñÏîGµ'æÕ׋645™- W®nlt±Ï/$¹¯ˆ*’#Ôšö3±9°å¸7O`ÜU1ë«õ¹(pí<ñ£ØÁN•-1ÁóÆZüQŒ ôôuØB¹55·ÅÄÄLöw7h}É´¢Ò°·oWºm©Ý¾}‰DFFGYéWº×ÖÖ^»råùÓ[êýKS““ ÌÌrwîÜ™ýœdØ›öö-¿ŸŸLÄÇí§;’¥[¥•„…’¹|ŹL —¤¤¤„õ*..­Ô ùD•‹îô»qtCaŸ‚Š_q‚Ò7Ù‡‡o¸Uéìþ-+sä6ªÝŠ™õ¶EÿkE•HÁïË"R kCöå:®ÝêÝòäÅj§Î^ê¨p˜“îb·½ ÐW|llÌu­kÁ¢¡Z9 ài"ª¥¸I÷Û~TU’ÇÖN2³n…qw¶ªëbùÔµ«WS>&ð™Í|NsüòðáI 6'637‰Ø 鹸JkKÊ ]Bß,šH“ßÙ¨ £–§¥j™€7æŒAŒ3AG-ÌÚ™!_ณ‘äÙ¯ã±Ñ=YóàGw0!¬ö¶DDùÁî\[•Çž¬’R›¿ËxÀy‹­a·¯ƒ·.{ ¥! @*GÞº¬}àèÕA)))ÉJK–OÆš}ø¾³¶°˜“ ½ÑyWN.T—SPp8˜˜£…õ![5çÃlwNœ»tcOö8‡i¤Ë\^é‡r»©–zu=>¼7 Fãa²ÂÂÂÅ['”î?´e)gdWÊKJú»|{ªþáSªD[ Þ-YðweÞöËÃÕV–¸åeëµ1?òØT‰°Øë\±™™ôod£™u?l ¢°È͇'.w¾D5]}ûü£Ƶ!h/ÀÆ5ŒÉ Ú3<é¯+Ü«ihiŸíïmõ: aÜžPˆ›Óž1“™ÙûâGæúÞÀÈ(ŽV&ŠPjòÁ92Ö/_¾L~‹Ög¶ÉÓ,³N&Ⲍo~ÿž$ºaÇó;ttt鵜s®m€Qø)±ÐÙ2³4]ã)›KL_i{¸¿WdÔ«®ç’öaÿ.zÖ•¿k²ìœB2;™ ¾˜¸xìׯ{À¨ÏpÛòußÌ÷ò9-Âqpp6K–ª‡ QÁ3Œ/õŸ¹-©ë ÑA|âôÝ?‰‚›_¼ AÃ&CØ3ä“,W÷éó^iäfl—Ìê`2Ì:©Jâ¿K0µSÆ!&6=ø>%O2a[¹`Þ¢!ì›^¥ë³vÁ½Üú*íRËâÖùÒv0óëÑ­èƒÍÒê§4¸µ¬êÃ%ÂÈŠõ­†ß~#Rë3Ô-Ф bÎn›Íw‹ýÜ$-.î KŸ©˜TMM(ò Óºˆ,Î7  –¿?æžC{¢@k$håµ×âЛRÈwÕXçχÓðоyüì™fúðø^÷‹y¾]Õ^^ ƒåÊI›Ï €^›j¿%$¤OÊçhþy_£Ê½œ±5­IÌkoüô¥Z·x^eKHÞÆuãyÁýuå…áJí¡7N½}/QO£¢Ô,Ë—ªöäNÃb\¾âÔ|RQQ‘v³¾B„V•»Ë³ý *ånž¦ÈFI-A¹Š¦ÙÙÞŽÜ«ª°ŸAŽéyío´¼ÿ–>èú3oí 1y˜«œk:Õáì<¯MHL¬5îm¿<úŽ œ<Ÿ´µ4R0:zoÏAÌÌñô¹sÑ™\ÅõžÝL×òšt¦›€\wÝßèU“ffœøvªxˆéê~Œ GE0Œ­Ñ¸)”TµQK•Ÿ£’pÙX®zC.¾#‚V&òÙ³,©'t&-‘7¿EÍ W¾©Y}u‰öÆ!ùX¸ Ûý¾Ö^ì¼2ζGœjz3d‰£Fùá£G  ›Ž%ò؉ë{l¨úôÒåk&N@¾›˜†`;Œ6(].!»¯O#-=A@ rP‚¹±±q I‘QØâ›%Á»‰üå-®`4™{KÕú&&&Ò22Ê:::û \f3ššÿR„G@qÿ>ÆÂHõÈA©åïiw«Èñ²è>ÜÌð‹›­°íºPÜkÿ}Û†TÈSgª=‰åeåt_XHH·®ÓPš·÷iè0€ÐX»tÝÅ®,åÕÍM5KËüDçñóRŸ!€y­ÞÍã MP7p¤º»çkó“éÔ00vÝ÷µÆ`¢T¡ýùˆ2CÎÅŠŒ¬óž±WœîçÌÄŠ¹¸¸L¾;G?88 c`h©ojŠs\èÿ2@û ï–ZŒåP‘——îõëf€_0ÇóJxò…D¡îÞ»÷üü¥Kp›MO\:YV‹Ž™™™§QŽó1á*‹ÕáÔœAž‘¯4neØ{¤Mää&}«Ì¿d¥){é~j˜ ›€Û&|Ô×î)éB–µi^ùú©Ûõ_ÎiiÀÂWì1}!iÏ+@*žž”TГ§íÆ{ ã6i±÷Ü_~RáTDð'l¡ï£3¬üéåäs·Eì´_ÑÃá*·Ô!m7¤Š.êÍV-d.‘ñ1qÿCg2ü&Ð.]Z·'4>K‚åçîî¾>ä4âÂ)Þ422ÒI‰aš•¦;Ò_b17s…?_5GͶ\§ÿSA†È }ë«®lÕ[ò~'à£`μþQ¦m±ÕfïnôWÉûÏ‹BJ3WóôñÌ®7SèuáèCø+ÌãCœÿ•E~á°Ôÿ¿i*®4ã”±§å`¹'w´f¹^yáB¼ëá¾.mËeÂ+顉˜ÇM¼¶þáƒç…iþþO“–r_™Ë~¸Ëe%{JôÌÑE ÂøÄþ¥¥"\ƒ@í¨z}MׯÀ9k¤Ø«ÌCŽ·Ëuò¥[OŸ-é­y€¸|í¸ƒÛR4AÄ!\›Šqœy ƒ‹i|‹Û>Œ­¦5™Ç#ö·[.ä}Jݪ2gpáÌ91 lóÑß\ð „”OòÌ4Ay c–ÛH™†SŠÇý눂óºª/¾wo}»´°Æ·ôÝçÕ±µ¶Ï7§œüö­£ïå£Y1h!»Gûœ3=ñ-ƒ$ñ]jú^ž’–³ãfP£­ÛóåѦ3®úßyT‘%C ´W\‡0©õ~G|ì˜Qª1²{šQ!{& ±­h¸á<²Ð Ç­„7“ò)€‰hF¥Ý*V¸]“–ˆuþçÉŒïß§ÞÍ~š0eöû6e"Ö¹c[E¡d=T«ug¡‚eË› J`ù ¿øzŠã‚ïìöŠ:úÃy¿Nú™N ·Íù{Âc'^ÓÞÐÜßUá`¶ÿÅ+«Ý06·V8÷†-ÉÛ~²ÒqœŸµ­*¿Í°Ýc¬8Ë¡I#™XÈÓ݃ë‘áô‡gì?âÉøÞʽÃ'Œ¯[;)é©©EœF<œf/íŸcR/’Â®ö*nÕ+³¾hÁlqÎ÷ïßí›H¦šnnno;‹IHôJĨÚ ÍŠÜ?utkbçø1ÙÙŽ_¾Ý‚ÁWVV ô%‰€©ÛÞ$÷jñ®¿¿33BìÌ™3®Ûc~x„„™€¬çéWWÕ¿fl}µêl¦ÓÒðLLYÙàÕÕÕù…õ5 ˜“'O¾¶ý&½·*VCCÃMzzIÝ ûO¹šE@÷e ôÂc,R^M)¨ÄP‡ñ§Üytö& h>“™B3ê¾é@I^ÿk“Î{ŠZè—j=¾hÍþ·.E@3ÎW„a . ¹’ÙÔÇqœæ}Ï‚¢o®Õ^d1^è/-ä2•@Ûÿfµå­¹ûòËòoQt#a«*×ÌÐ×<°Ú¶ââS§<X‡ä3×õÙœ‚XhžoÜA“’“+Ñ¿”Ë8¥4ÛÇ…WúKƒå¢¢¢}U‡n@ ÈeÕ{­‰žeªÒ·yú”)")ÉJÏ}E —ˆÈ -Ö|ëc< ”Í[©¯[y ‰ã¦v™ÝëÛÇÁäà˜®Â˜­‚¨¨÷~öèÀíû…¶‡´ý°ÉKôý¼½%#HB#†@õeT¶ZÙ7Ur¼`v¤º²Ð² Äwî¬M=å-””sÆ“Q¿J' ÝüŠñ2)ïëÓTõ½og‹høSÆ —/«jiÅînyñâEŸÐÒHµþ»wï6çÉøÈIHtR†»ºº®î©–š»»¿:==M&zv£W_Ä‹ 3ŒbŽìæ-Ôîú [ã{ÂT TˆÌTW¶s¿~ý8Þ«¾2žíÊ Q55ÍþÜÙÉd(08‡Ñš _Š$€O¢“OÔAWâÞëÚß)xýž––v“™9¿ÞSSSS5Š£ÑЦÀ  e ¹7—F¬„J°¬Üèî îT]‰TãÿéÅî)šÒØ|ž'ÑÑFdîËw&––¬RRRdÁLzó*u#4_"}fzòâV¶¶¸^¾|IÇÅÕ;¬¦³ÒËÃÃCÇÉÙsúìÙØššÛ¸FK\ˆÚÓ@g>ILÔ3ù‚j %’úvpÇÖ hZÂZ³p–îUç­š½×v ăD­„¨Ù[8Åæ_ØVßSóÚMÊ·èW뎩Rf0ùŠÉ¸à¡,²:‡¸ÉÏØÍE/{~‰ˆ¨îÌôdˆ¹ÁñÚŒ{³±³«‘¤pãÍ%6cþ 0ò©Òø€`éÚÜõüΣ¯KK Œ>ÄŒ½›Î.(_1ÕzyTîW˜©tvÜçöGC8ãçM(Ã\·ó€èh¨¯§ga‘ˆŒ‹Ë)+ãx”%ÍËaUÙöŠÑbø­&Øìʼ˜”×^2â5´ÆC­­ñ8;— »¯µ]]È×,p]W.7üŸÔô›áÀñÈËËËW-HͨWï>ÕeæãÓ®ªªÚÝ+¸5¿6Ûƒ‡Ÿ†§Sþª1‰èxª‰’øû­YÞ>/6ë5íL¿Û_n—!85“‘¤fkû B nÞ”jç_ ®Yk*˜Jt“øø6Ÿ£,²Ñ4w´;uö’H|Fç111W-ªvgsú 8-ú_TíJ_ÄgÌTË2„¶¿bsÐl^0éÀ9!ÕµiÀÃëyi1À $®|K¶€J›üqY„;ñ_¾K 1?ß_,‚%šf-é° Ô h˜LÀZØHø”B¿Á2é»wŸ¢5¥F•‚;N>u°¿×]l¦¾³»k ¤ëî–ס“››‹…\ ëhH³YÛå2”“““µŠ Cò«\CÈ´Ôõ=|ÌÈA KÕ‡zà$ ª 4( -îQ %?ZlxÔüõ·ÖèÖWŒàÊd¿þ%‰ß€T ÚЊªv¸§ÈHÞ-ް“œÚ’W#óÒø]×óv¿~û–6`ùæ.SÝÍOnlO˜®~m~ºˆ{õ*•”-·Ö åql1|g;Ó™! o$\è{Yç)DKÛpàrx° +ŠæÌ¹s·˜˜Ú†£€¬¶zBCNžta nD"×w¦’Ì@Õ@—D[²32æ:&DÀ=¿;Wn »¹N%8ÁÝ·­}|}Õ´ªRÂÉGkÏx„^P¾N{mÔN(½ÇæûøÜ³{KêÀóŸ?¾F@ >“™›Ë¸7tUóÀ€vyy¹ëxÀ šf½És ‘öÆi© ‡Ù.â·y9ùÒ>>>®«Í7Z»”‡3鎹ÐêcÆÝè7KUÚ©â!Ÿzu3(E|§_6‘=¡ gJ |±ÉóÇêü ¸Yò™N6æùãÇWöLŒAáýyS¹+Gecú“ȧOŸˆaHo]O·Ä®¯!ôWÂÆºx‚iHí“Êë"£vS9´-ÃnK•»Œ?æÝp²—á «ƒ2‡Õ0¿p"6Aé¶ß15ØÀÅ÷d—®ž^b( OÊÓ[ê³m\#ëöÜÇÐpEû‚ˆÝЙכwg<ˆî¼|oÈ®] b³ß (Ñã$¬%Ô¤1iŽ MÄJ–Ë/Ÿ$NôèïDÁð~øŸâøÚ•‚—Û€áAuxŘ#w‡½§ÜÎHÞïx>AJÍ)+M9 [@4o|¹û2_÷+ïñÝZ×Dó“þhŠØ‡±ç¿èr-j=?ãÑñ·S¯ö¨MePÅ:@¤ÄäDó…ï=Äø¿àÇÜidmleoÅÆ„°6a6¶·0g±³·u@Ùëë‹ ,жe{+[„ZÊÒÐÊÖaobeÉlj÷§ú`?œp8ôÆÅÁzô7ìøo臕ÆÆÉÆãàdƒ±a€#œ¬¬ÿoúù1™_~ÿ¿äÇaKñ¯üM!pAûøÑ¦ B Ph;;*F ª%P,Q#¸‘\œì0NVŠ•ƒÅÍ þ‡bEsp³Â@S–ææºŒ?»@"ìÐ&¶¢6';ЇÎe€„!á\H‚ÍÅÆÃÍ gE£ß a@™Ø»˜!]ìÑf:pNnš•‹Ç2deEò“ðpqñp"ØY ÿ¾+´ÊÖÄjãOô3€ñ°¡¹ÑH¤;'’‡Õ†fE¢œ<†¬lhøß÷ch‚67ø3S±rƒV9áhNvšäaÀÎÆÁFðÀa<<ÿ  [4ÚÄ4ögºá€°srsqp 9جH8 Í2àFs±r²qÁþq7Ú1¬¬\œ¬<ìÜÜì0v˜!‚‡˜Š†bƒsp 9¸ØÿA7vö.Öè?Ê<œ$œ‹Æf€à†!8¬\¬lÜÜ`^¬lÈ¿ïÂD›ÿ‰ÐH8+ð¹Ì´Ê ^‡#‘†<ÜìÜ0nô?pÉŸœ†20`ƒ ¬p.+‚“Ó€Á†B£Ù8~Í” º|ÿùùÿþÏ¿®ÿâ&æGtÇÁÀÄêÏ–þ?RÿY9Ùa¿¯ÿ0.8œã?õÿ§þÿÎß¿-ýÿ¬Àü>@ŽqÁÃÆÃç`ãâäá`7€óp!Ñ\p$ÊnçâþÙÎÄýÇÚfgG#8ØQCCV iȉF±£Ø ᜜Ô?I;{„½Ã9Œ‡Áf`€ž›É*­!ø?(Xl fÙØYÿ(ÿ£¶¹P`èhC.nC8'ÒÆaÈŽ„¡8`€¶ðpü/ ï?ÊÿŸìÐöö&–FúÜÆúúhk}}K”9³Âú/ÎPP¡ü‡qÀ`pâÿ¬à×òÿà‡¸“ÂÄ@€ê‡Ó:ŸŽÎÁ÷#˜©(,APÿ«‹/ð#lÑ ;c„5¸Ø²§:jÛÒÊÍFEal‹6 ¢ù^† Cì\ìô¹QGaGEaoboîû5$ö£c~ÔÓ˜QTs{** ”••­#7+#Œ“Æ£bù/ÇÁþwãø%Ìÿè8~ÎøïÇT46Ø üoGí÷#±²tD[š -Qh c4ÂmKÅË™)þ®vœ‘›‹gg¹tÔ? p°à…ÿVþÛ¢íÌí]þÛ™ÿÇòŸƒã·ùÏê?'ì?ùÿ?šÿíG±~P¨#À¿ºìOæÞÏû›Àÿ/º0þ» çábäá`üñ¿“sLÖV¶öfÐõ?pàŸŽÆÊÅãäadã€1²Á`$ÿoâÿ?8™¡íÿ¶üpüÕùdîoòÿˆÿs€_ÿÉÿÿÀ‘€K³srrq²ÂØÙ¹ åD±p°spðüG!ÿÿOÿ›X >þu©ñ_ä?œ•óoô?½ÿ¬ÿÿÏÔJQyM1 Èß ªÂ²R"TL,,êì",,¢*¢’*we)`̬*¶K;h9aÎÂ"&GEAelooÍËÂâääÄìÄÎlekÄ¢¢Äâ µƒnþñ‘Éþ7w2Ø@<á¨Cg sKP1ÿ¾ÏñÝG×ö ~Y íеLhÇ#†l¶´gR48¨¿G PÙ£íoæC#laPUgâ>ªÄ׈“ê&+ k„½ Òü·íH‰ ðüzÏ „¶òÞÞÊö7׉Z9»€ãÀHÜÌ0Ö£;Ž(„à¯éEqô‹u´8@ŽÛ"l](è½à&Å)^Š»K „šŸå¸‰ üæ&–f?h‹= ô…-Ú\€ÊÎÞH"c4PhâÇÌ¡  1?xøíS„#âø(…-J€ÊÔÆmëÂljG%ÈÏr|æÝhàbi¨ð¨ÝßÞý›ñZ"ímÑè¿tÈ€v™¸¢ÿCþ1„=â¿÷ŸºSð ½ÊÁÄÉMfÀK \èM,Mì• I @´Ýä;ºÆ €®•ÓMfs+„ýñ %Ñ&FÆöàü?6­ÁqÌý1ÓRQÐY„´2p¿ Lx±½•5˜%……¥•=hÌÂÊMaolbG.b¤0±§QæVvh ¤ Å®))˜˜~Û®õ†Öš mnn=i³4 b¥:úÛa`ðão`~ûãÑ€ÐB¤ D»&ÎKÁÁiíÌwdC~{ƒ£.¬m­LAÐ!ÌMŒ,©~^þ£A&s´!¸‰•™mq|Å/Cûq”ÀT:'¡–訴çãs±ü]ƒH´-• 33p8}Ü1 èùhà,öÐäXìmý°=Ë‘} GYmiðSå[#lí 8FœcÛÿjŽ.úÍDAÚZ9Á€¥ÍvvÇxql ~óß57±³ÿqœ27ùy å`k BâGœýÊÀÁ£Bulcœ::ÈÏ‚ÿ™›ü¦Í_Û°†žþ® %´94£_›±û#í ,A|B÷ý®-QÐÇ )-Á:Øþ±ÖŽÖ“~×´hûoågq0?vè±ÃŽ~y¤ÏïóÀÎÄÍñ‹L˜l¦;Åϳ¿¢ú[2A8óÓk{œéGѱûÕ{¿½ÄÎÅõKÇGþŒ¿‹ËŸ~µµ¹‰=aûKZ1YX¹29Ø¡m™ìÐæ Öy-­,Ñ|T?zýG“c2FXüœÐo õ/aòïAÒÐÁò¨ºÐßtƒðRá¨fOã×p¼ÁxãÆM>ßäÏ逿~ZŠêÇá>N±_þ»ÃGö77ü8ögadêñŒŽž¿ÛáÄÏq¿¿ÐÏ4üÕÉ¿ µŸGãí×㿙쯨agˆ¡••ýïå·Áñ/Áý}ܤ‰ù– ZØ¡Øs4A;Qüt åOì9NŒß¡Èq¯T‚¿E®ãk~æÞoßÏB±¾ß‚Íñ &FÓêþñã.kK£ë/?Ž¥îO€ü™ÂÇ ü‹ùâ0ÔÕÿ…Ë2ÿ«úÏÔmôs-ìÿ¼þƒ³spýíó_8+ëÖþ£ÿþÿ¨ÿ~³Àå!³1DJ(”Іh[èAÐdádádádáÿŒ,üÿ® üç‚÷ß…gr¶ß™œíOÚüäx޲à®?b+#s+$Âü÷­HûÐý¿Yèþ–…ÿµR×ÎÁ ÚѳúQBm‰¶ùÄtt˜J&ŠßæPT ðØà|¿¹ š¤ÚÉ á¸KåøÀ?¹ pñ×kÅÀ_~ATá_Yæ×ëÅØéøâ¿qìñÿ„Rý·µùo{¾Fš[¡Ì@ ¢¬ ЂÔÐór4¹=˜ÕëÐæ?÷ üv#ô”ÝÎÊÁ…þ‘©³÷àè"fchîtF 9–£.ø‘¶Ç%ühÄÿd0¿9 ØÙ/1!õcthkPb€\(ŒlÖÆGjÿØN¼?-òû&þq°¡À!¨á#Å~L"#øÇÆ#¡Ž´²½}qkàæ_ëª>Û[~î¨`ù™ÓGÛTþvÊo.ÿý–_Oü±-iãˆßo¹ƒ´êÕÙŸüºŽÂÊúgôþƒXÇÒ88a¬\¿ÙþñûûsþRx×±‡ìŒ­œì(œŒMPÆGcø45s à;P©þõ38tå_åÑ_÷ƒü·‚»þ¤gîø'Î…Îý1ÿßðÏ·÷Eû?ÛUÈÆñ_9ñ¿õ¯µö§y~—ÈV r€Šxt˜Ê\ +Ã_Â|\­åÇÇö?†>4Êükþ Ìj <0Ê âÒ–T€]ð³ý¼ÆÈÖÊÁúgððÿ¯ óPÏþëÙê1?ýMÇ`D&öh Þ=ÿrP ”<2!ààÀU§¢püñç‘–8Þý“3µÿw(ýþ>¤•½½•ÅÑøÿ=›C;Xšý°ôÑçc[þ£ÁÛ¡†„ûß _ùçªßYó·#ý¿ßÇ}dèãÿQ;üÐ)ÿÇÃõïÆQ¼þÊ2þe  ÈÊÆ†æ0dcç€sCïj¢¸Üœlh8œƒúoùïW' ,Qƹ Èù#}AÃÿ1©¯]PüÉØþo òçýÈÚbÿFò Ø‘pV6NvC$Œ›“›‚ss£ÜpÉ û+½óúú­w uÃÿ¦­Ê€ÂÒ¨ˆ!èå d}mN¸î¿ôÀŸµÊ¿ã6v67 Ænˆ2ä@°ò°r¢¹HnÚÁÉúWzàôõ§òã Þ¿á±?”Ö\ÿ×!êï5Ø‘½/Äþ¤²rÀ¸¸ `pÍÊÊÎŽ‚^`Bsp±q# ‘)¤þë¾À IQü®jØ m …ÅMuÜÜF‘‚Ò búÊ*w”TŽ.`uåf¤¸ðóŒˆüÝ»br¿œû͹; ò?Oˆ±þæ„¢ê9)­;*Ròr¿´*|tÁ?‚¤ª¸øÝ;¿\.ÿM{Êòâ"¬¿œùmOÊÊÊbw$ïÈþÒËßœ“—úå8ÏϾ)<þIuø“Îÿ ð?ž ¿__8Ê…ß,2üëD€qp!Ø ¸`p äA#0‚›°G²¡ÿÊDø}Aãÿ“d‚‚á¿™5FÖ&úGeî¨)}K´ÓQÑ›XÚS˜£-ìoþK,ý³æû·Ê(ªì§!Ü€ðNvC¨CšÅõ—–¹Ý×ÿ®«ôè4Gü­Ç8ô ì_{ïÏZôßñâäApÂØ YÑHn@‹Ð($Š…âæ„s!ÿJïý¾ ï9Z™ü51’ÜÖÊåØ:(,\Žþø×þú³6üwü…få6à1ääÞ%10Dq ¹pšÆÃnŠ—á_é¯?Ð×_ë/k[2ÿ§½õg-øoa# ƒƒäE æ@"@8 XÙ9¹¸`H ?¸8¸ÿRlü×}AÞú7Ä×/Þ24±404üäÌ­PG$—‘âOûÍÚähiì âŸ´å¿ã7Vvn.v$—!œ‰æàæAð°r ÙÐì0VH@þ•~û}ý•~Cæˆþ -§?.M&Œÿc¾ü³öýw|ÉÃÊŠæäF¡ y88PH6Œ•‡ÁÁÁC³³# ¥/ÿ@_?}ùcB|ûØ–vàZ´Á‘QÿÚ Ö0ÿŽà†<\($' Åã6`ç1deE!Øy8¡‰àÐ_›P ¯ÿš$þƒÅß[¿ðx¨\þkçüYƒý;ÎAð°Áܬ0CvŒÃƒ›ÓÁ„³£p4Ï_éœ?Ð×_Å)þ ûû‡Þ¶p>ÿk7ýYÓý[ÔÍ焳²!à(7šÉ ÈÉÁ†@sÂy¸ÿR2ñúú«Ü„00Ðÿm9úoyê¿_¬Ž«ÞÑŽþãhË?žÖÿV3D±ƒ¨Ó€ÕŽàF#9Ù`ܬ<(Cœiû×}ý•~ÿåÑÉÿœÛŸÿêø'­þïxÉcÀÅÍ@r `<(nÀty x ØQ†Üp'Üð/u ¯¿ÊÃÖÐöðÿ•¤þ×îý³&ÿwÜ D& ÁÆŠ@²³±±ÂálC4'«’ÉÃÎ…dû+ÝûúúËÜûGÔú¿U]ÿ¬áþ­…0NVnÈn.8šÕ€ÃЀÉÁÉÉÆ‡£¸Q\¬†íBØ¿îëeÓa†Ö?*…†ªþYËý{‹Í\Üìl@ºÀa¬(nnCnC¸̇ÇÐŽ‚ÿµOµÿ@_ÿ{^‚Hýºãdb-2C·òÿXpv4†ýò‰í—Oì?>ÙüñF¼ïïG¬û`zúû­–eé[K#>)åë(á…82ËÕxj=Ò+ð®ZwÁ.)ÞÕþ*޵䇠²D«ÄPC‰™äJ)ÈCD‘€ -èËüZ*ð®Ë[[óx L¤ÝNÜ÷æƒ9XBÓ%7²e©]Ér@˜¡d›­YEQHx¤¥@R Õj9p¿Ë";“–UÌ· sœXz*}.5J°”¤n%U"ÔQÄ­Ñ–øÈ¬Ô·Õ¨˜r­`­>eÞu vÔÔÕä"DŸuÏÁæÉ5P춬ÙÑ>ÿuâ[´€¦k >|nÑ~âª^ɉ]…‰8„A$C  `R%*¥ÍË®“‰ ¼«®Ó½Ç=3<×b7Ê >€jt!ÅËFMdS<=§²'LëÞ©øe±(ëõyeè’¦t_´ÚqŠKöK¡9Ûm+¹I+okTg&q^›œ¦Ú£!&Înž8íÛÉ`¾êßÞLþÿÒ†ùïKJÝN¢Ž’ˆ•Ç"ö,z}ݱÇÛ¢$:Þ¾ùõ§u;——ÚîªVtf/œvlœ´ ¶éëÞqœ†ÙhïþöCïŽcó]5ÝövOÃvKzZRwbí™ÁØ+ñQOmŸºg;±?è„w¯kOÖЛžn™ïÍR­{±ÌÞ3hm݆a]}Ûïž×M0yÁtö̳ÑÎÃç®'¤ºbÇe’£qÚ£Ò¤ñ£î‰ä2ͶìŽÒn{¡¶áVÑi{Ý3wz¯5^Ùyxàmn¿á½¶¹··¹}ðÆMs§Ô|«é´ÖñI»eš5£ê™MàÌvþÕ»{w^1÷o¾ÜxÐ8xÃöÿ^ã`ûîþ¾wogÏÛôv7÷w>ØÜóvîíîìß½îík]ºQRÏ&S:?ò7 ¶±éa[yGâ‘6KÝzdúgx¹{rVÂv·s˜ 7 ­Pó¦×Šì´[Of¯Î‚±f»î5:òúºG€¹EtÞn·ì$77›îµ"Óø½v·Û[÷^îÆ}{û«›žð_ÈÞÃýM/Ïi¤ßS˜ÂÉ´¥ÛzFÄ‘jõš¶. Q‰Œ4÷C_3†"ɸ œ!«í(Ìng^ô-ùè,tw"X}•rêó–© ¯ÿ=_ÿƒ®ò?]zýlŸš[ÿctSÉúÃéU´îFö¦ó‘º¥ñÖ|Xà M·ÿTåÿOJ#´:Q÷E›¢d"°¹6þgÈû™¨ÿÉVùßVùß>æùßš–ÿ6&ó€Œ3åõ##Ã&YRåx•n•n•n•n•n•n•î#›®„¾äüè³” ÙÕÄD~®sÃ=—bIås®OI²”{QÔ‡Ç)w箚ÝRçBÄÛ‰®2°À'Kyî¾Nwí¶`À,™}ÿ\†­)B<¿QˆÇÍßvÒÓf3‘:Ž­ÑþùVÔ±é2šÍû»¯ììÀæîÎÞA³±}o§ù ±Ð|¥Ùrs¡®G×Há®™~™çjìut.šÅÈ.™/|j4XâG"LAÁ¥/Ã(" 3!”ôiÒY„ÓÕu-ßÖg»=£* ¢ îô¦ßds`dw|Þ+8r²ô‘ a_øœH|ʘo 9 RÒs¤,¸¹#>{*µÄnÝßMgïöÎöÝ4eú¹•þð×G[‹‹ìtùd×a¤hˆ#1¢)S-Bn.û¤d§Ë&»»[Ù÷ïî5l“Œð·<$Ö´KŸ-ŸøJù˜ "ˆ„‚šË¡ÅAF>—<%>[6ñÝÝʈÿpÿåü”'>,A|~ Ä IÄ#„4‚QF˜JÃö$%>_:ñÝʈ¿ÕØÿìø‚“#>*Aü`ùÄ'$ÔHbÉx4†\PB¡}„‘Õû-ñƒeßÝ­Œø»»ÝõLj‹û—0ó)`‚ùŠPåSi&HPJ|ì/}æ;»•[v’ÙoþÙ»{ç a ²^”ü`ùäÇæ‹ 4+j¢HS1I³½ -l¸=%?X6ùÝÝÊ“ÿÎ~#›þc¤§^ñ¹çKíŽÿÝ ¹Ø®yÖžØîT0rô- sG£Ð ²‰ j*ÑÒ{¬f‡Þ0Tè̹+%ˆAj+Áué3uλVòùÅhãЛ Yd¢84^B‹Û ¦¦£ŸÅa#ëÊ´¨|&úú;aŽÑ°EHÄò¦”Ô’"OÚ§±ý[nt£#AæÐïôu¯3•7¬G`ç°Ýê[ï·µÛ?ò¹ÓnÿæôÇPõ/ÖUêÏï*õ ÓLwT+òiþFÙ=N l×ò4õ®mL»{¼ÙR„§ ]ÄBG»…e§UfklÜÝÛÞ|м³³u·Ü@ÛE´¼ØîÎ_ì ® Ô±©P\o†÷$ãÙ-û 7Ýk‹CëºîYõt<ɹ{ÓnRÍcqòæ[Eç‹cù§¤K•#¡c› ‹F©cµ¦Ì‰‹¥âÚí$ÌB¢§ŒIÎh¡’4ÄÀH‰€_+l§d ›}8Mcd¶ý«£}Ü»f¿y¡èÈ[ å˹`…"§6ˆÙ‡2Å‚‚‰‘ê~3M¶51|ûíº7»£ÖM&ëéµrâÒóBÓH* ìK ¹D‚FFÁ£AD#m¦QÖ§Â8¶R, È8ŽT*BBÊ„­OªÍ&1@\€‰u© F—sˆÌ_0Dƒ€d´òCƒ’¾kªˆ iÇKGA›y]ÛWWØwLS…‡æPI©8´¸Ö¡•™Cßa‹è;Ì¡ï°9úNÞÖѰeó:¢{6´ð¤×z$ú:gõ(Ö‡ ÂøåZZ$Î]“ÖÖÔó°[çš9ßJQÜÊ ˜ Ü!Þò¥‰·EF© ‚PЄ¾â3Z!ƒDñI $y8Ó€óQö€H–¸_”;¹C2åK“LCêÅqHÂHÀ m ¿Âî<šF;{žn›5Ñ®é#‡‹Ìe‡×&ÅÈ0$A¨±¯˜°Š´M¯)H•TÈlãá4<ĉ-P[;"ëÞÄ>U"‡ÀÀñ"9¶jN–5ë WTÛüHúÚ—p jþ@©§.76åòXÆ! ðEdî8[žà/i„q ­sœ%•„ >ô­ t²{Úé_ Ñ…óEqlò|iA@")õCB¸ 9TJ 5Ú$³¶Ó¤ûöéIÎêQëBVŸÅÄv°(ÌCB –&!a)3ë˜}äG$ò)R<©ÔHæ 2²Õ>¡ˆØFÄ!w‹œƒ‰$Xš ‹“0`B! 8Á‚%04›•f~¤9A>ž³U¾[™ÈÅc|n¤11£Ô!TàÚ‚E‡ð9k­Ïë‚\CóúØô}¨8 0#FBAÄA~¬ãXê¦m=ÖÙæWS÷¯ÆÌ!Æ øþD0ß/ÝøØÑ'\6H¨±ó ñòVc¯ywûǼԩ%¹´?æàR°wÄÑ;R·{ËTŠÖîé|ê]d~1G£l‘F¹£Ñ%ye?ptd\p|·X«`¾ðc¾Š¨ŽÑ, 8ÂÚI4;̰"Íú}¹–O“4%òÖnXÍÊÁx³i~‚‘®µèƒÜ±^(-[‰ØâÍ}üê¸0” Bù<œ‰1õ]¹vûAÒ–'¼øÄ¼1jIÏÞŸ%8Lâ…½éý‹’4¢[v«HÒÈÜHrˆÎˆ9–7 ®¥Þsc™!XŸsþp9ÏØr/Ÿ6‘ÜÂn¥‰TU–.;‹²ggL!ûÐ4QyæLº¯ûž}Eb¹ë㽇Ë, ½³šf¶.Ä.@Ïk$Ý®7s‘¬àÒ“{æÆLÓ\ÊÁ^zã º>MNù²Øú„«§qxã…jľ~t£,ÓNã·¿V%¾©àV‚e²ÇÎ¥Næ<žÍ!û†C2¤ò ®Å«Næ V權Z QK•`½ ¨©™à˜›¼WÍo¿ßíµÕë‰Çž}*Á§dŽnØØ²ÊÛÓó¶Ú6´co N2O\-¾«Üéi{To¤Xý8A"Y˜jâ{ÊV·W%8*x‰•À${ìüê6ò ò®Ù;æïÿöŽ _Ý\ÂêæNƒp±«Û"iæl<½–h×¹¡v÷±f%W95-¯‘ 5UŽž§x åÅg±t±­Å5±d5°‡ûø¦45œ-¨3Oˆp³tæùrœÕ™½DiN¤¹úue ƒêº”*aXÁª,vãCŠ™ƒ»ÆÄ†‰S¤z0J¬”¾ ¹Ób\ì6´@ZŽ™˜˜;6»µîBË€Àãb!¨”œc&[-› ÞkìØ<}¢ãÆ¡wlÕŸx þ(ý¨%u]z_¨4¸µ¬ýojLìD,ì2fŒ3‹ÓϘ²Y¤æ*Åuò+«A4qF6UMœ*iMš0ßO±&Í·Ü[kRb«¿h}«ÔjH¾uÁåh-B¤‚seÂxK× ·¯Š"H˜¯™&1f´É5¡Úð92rtÄÆOjJ¿ÂU…jv¬UÉòÕç)ªÿ<®`ÂȇqêÖU¶ö³»þ³ÑT0™¬ÿ ñªþûªþóDZþóT®óÒª¥ÞžŽtOwäªÒóªÒóªÒóªÒóǰÒóìÚÌuT~~+=×<®RÏhí^K·Õªüó]þÙ) ×[ú9>=>6k_¾"óó'§á‹¢ßïµìbg—Mq{’´E+H}­'}奓Ûö^‚·“},ÝÅro4]iõõñ $epN4W,À!ð©¦XAƒ> Ÿ²åX˜íÚ,ÌVnd:»ã¯y¿&"‰ë³döíçZØ(ìöû݆7ÎÆY­¼7äoM'I¬ÍÞmU‡òDÙÏ]C/O‚™”`ÎŽ€ˆ¬OUšKr 0 B Ðêô—H÷â#¼§üç }YrT!= ‚²PÈE> Œ0J©àŠ˜—rÌ|ùÞ=„°Õ Q¾,5*QžZ‡$í«€ÙSˆˆ`!_1E%öeR¼¤<å ¬ß™;’\*Aá’@2d†`Æ€ ³#¤”Ô»¢×êŸ%ËûuRèdØ-7´%É]Z¡8 C_D†|-‘æ>A¤ùX°§€©ÜCˆM¯ 3VYЦþPͤLâI%ÉLüI:9CØJn2úé–NEQ#Ð&bøhÄá°Ý•o›ÆÜRZ*ù¤’ߌ×&ò‰QˆS‰ZäÞ:DLtä‘%J‘µÉÊ>ù>&äÚ¹«'=³"Œt“I -µ4\ÖùMÔoô«:w¯=øœ:nÜHçHbHÈØ58aK˜ègrjEÕWº½cÑ9ólk^bó†rìPòNL î%Pf¾¸P !¤:Ôh®1Æ@ óstgÉ^°4¾>xó¸ò45÷²sy¨]ün1kRd wÅi‘6“̇uÃÚÏÐÜÝÜk¼ÑôÒ ŽñÓ1e HÞ—7e·…Y šk#å¢ ®7®´\ˆÒ6úý³×_ðJ±€ýD®—=¡ †âTYËkê8›a-Í©‘9ç¨I(I€QÀ"€ W ì3ÌÓ²ÞK  J¢û–°#KùaÝõ„ñ]åÉœ0CA¬®MÖ¶˜î´¶>ÐiœF=QKçQo#™ã*/?¥ÞAöàgP2豈½ÃáùCÔë'ŒuÛíîcCCÏÑo$nCÖ=áã“•Þ¨Á*–©óÞ+!7*§>1ÃtºrŒ¾™áíݺòf²«¿éù«™^–ÝžÍÝÓŒ\ÑÖkëæ«lz l8"€âЈšZ1MC¢#Šc¢0tNÛmï­õsmñ°ÝLdç)íRŠc\(fæàQ$TÈ‘‚”Û½òÖÍ×ÉÿFå:±9F¹h6íñu©Ý¾êþoùŸ¸òÿ]Ê…›/C+„X¬`H ¯`@‚Hø+ùîÿƒ t/6z«U¿ÓeÀ(sõó?ðÍæ‘ãs0àÃÿ/ãó‹»Û÷?yå­ŠýÉÆ+[{æçŸš¿_øÎO˜ÿä‡ä™Ÿ?{ë™ÿ³~çÏÿà+Ï<óÜZckóà÷þíÎv÷_ûßïø÷î³WÖ^|ýçÚÏ}ïgþæ¿ßý׿^ûæWå³÷ÿê¯ÝýÝ/þáé¿þí[7oã›ßúÆ¡þ¯þú_^ùå¯~ߟýìÿÒéO|ë‹·ûý¾ùÜ×¾äýí½½ïa_úù‡ïüÌþ§÷[_þò~å»ãø6úÍÿøç÷>ÿŸï}ð|ýë›Ïnmýä§~øÓêÃoûÔ×¾ñú_ýÀ?ÊϾó+¿ðÞ?Ýúà·wþþ/Þýôûï¿ÿ/~ˆïÝú®ÿgïÊã¡ÞþþD…¤²Döµ„lc_"[–r-YÆfìd;Y£l™,‰•P );C’-²dɾ„²oÈ Ïº÷v{º¯û<÷þîï¹Ïë—×üãÌ9çû9Ÿí¼Ï÷ûý¼'=Îó>Tá­Öú(¤¢ €jß¾}‰¢}gºj|s}"6¦eÇdQè%¥ƒéÖ\\\viÖïÆ.äG UÔË·,2‘JÔ\>KVZUU%hÊÑ45½Ñ*ƒ;Ÿ%˜ê}PX¡¹W³¾£uÜõCó”ë0 uèAV;Jñܺõ¬šÚ::ºll,ÅùÛÐÚ#–v­Þ &'mÒÑ·-èééqkMüUŠ´2›+f{Ÿ‰ŠŠªœ;7ÖÇoZy„òıûçsV$n]ê…â‡M1,gi¤±IIÑÃá𰨨ÚuÌÇxÿÙO8ÜØË«¤° /Ay…˜ÔTë‘»ù*œ2,"BÞÆæ$ŠQªîôpw÷µ'ON…„†²³±Ø89Õ^Ç쌎Ž>ÌÎîè¡ñÂŽêéèP½B†È³ê=ñèçB [3ü===/úúú|¼gSs¬§ÒOªx°½=(:úˆq…W Îgbb)KþöíÛ¶îîº7K¯ãyð—VRÚ÷úõë§nSÚÍ)”ùùù%nS±o—ÚDëçý322À t%D§W<Üï¹6’’j„df¾eöלz°íï»ÜÈùé3¦9VGæ‹›+66³.c017o>X©]ߘÉÓºp!¸¹ù¼……ÅÝÌÌýþ²â…ê`¢Ñ÷ïïçóCdd°²°ÒWT0䡱t ªE FhÝûd’ŒŸdKêéÈySÊßu蓜œÑ™™¦7rÜñˆþ"‡†æfE]Ý£...%›¤<õ]wñòñA`>¼!&!©öö ê7ŸéÎáÎËÊq„€µQ¸¸ºæ[4RXX[g3*ô#;¯¶°Êú×Ë1Ü£²WLLÌw±šˆÛO/טÄÓÓÓËË‹…‹‹„S#u¼šÏ˜ØÞÞ^…ƒBXDÙJCCÃ.(HÎC >ááá'ùøôŒ‚3+ùøønoŒT746Ê3Z³¦ ÛÆ6¶*Ĥ¥1ÓÑÓãÕäØ|÷. ƒ@PL§#t³õàŸG_,O4-sÆÕ×ÖV3¾v†åŒ¾>͵ƒ´WÀ ñ×Ê!ÀvWrrx¯/7RšÛH¡Ê&WÍ7+çå…&'Óç|Zpd‹ í=ÔJwÞÞòs4:IEÙKôVæ0“´&­>²jk…—‡GÁÇG²މ‰ J0õ§ÍÉÉñÚXá2ñ]RŠK­aW.šíÉ7Ï÷ÃyœO•¦µnM­ÅO¸õÙ4Ó§WV2‘““«åá^’ò;[û•ͯÏW1···{­véç{-!€Q°åŽÊÊÊÀŒ lÉê®;122²Æ5ŽŒŽî|´Êêntvw#š!G:ðškH´úÙ“TÜQsýmmee’ããã'Ñ¥©ûîá”Ó¹ZÇV¦:¸ólmmI¯¼ŽŸQ”˜x žpiiÉÆÞ>8--­o}óf>)ddT2‚%l¦¦Ÿ0*vÔ]ç² ¾’Z•Så4,£¨¤ôè´×tŠl“yÝõ ¸8JÈHË)X±#£çÚ‹ááªVsZJÓðmmí‘ÉÉ0?–ëtfB $(Údöc{g“Æ2}…c¦’íURš—--‡H©O½xfÙdæätC)’9ÇÊÊZVù*p¤Iú˜®¤i®@3æ¥YÏALÅ/[µËµ5ŸMÉæÛB„°ý5“¹••©Fœé!>âžó ††¬À‹š!I21F_¿'&è2ëªÔlæ°ÜÜ옸çÄ ˜€:¾ÚKOíÁd¿Ùè¨ÿï|6“å®ÏûooÊøo­Ÿ˜}‡/­­Wm£É‚Fük®õV·¶vM"Â~Ô98)»Ý{¸§!®·¿ÿýÆêBÍoDÏ~ªcŸø!Q~À®G¨Vò‚¸ÎçGÓ·u>zZ\ÜÞ“•žN::*C¨z³Š±œk’#&½L¨§GÆÒJº ”3‰ P»’’ù22ޱ볓 ÊM©s¥ÌNÒ%æ-؈Kõg;ÌLzE´µ‰í/aÃÔÈ;šAÈÉ);Mž•”Iš}öòd×±45%NŒßÇÆ>ræîú>HæöÌå#«‹zFÎO_΀‘ó9AN ¹üÐû pˆ±1Ec·GJ»½· ó­[·Ü@.A[i/œs»D¾Ïª]Åj·ÑS 8¤¥Üá¬yyePR‡€wwwÆ–™FNõ¤€h6צÄ<Ô¿ ™S_àõ3Ö&jQÕ íŠµ¡Ë’QKÒÍÁ çEÇ·ojžœu.*}b\JÁ~öz`p0áýû÷öi-¤9z”UX¸sÌ“˜~Nº^z7àù&IDÜoC8"" «ž¾>6>>”½,òý^BB2­L½”PÖ•,™àŽåsŠ{’â:‹Ñè;2Ÿèd|ÅÃk’n“G¸ní <Ä,sÞ¼uüž¦ Þ“»·nQçòÊʦ ªž¤Ò61a*6uu:ÎÁ ]BJêÁVXPÐ6ÙžN‘hÏ1*Æg[^\¼{±Ü9&ãû)zvn.«Üëo3Õ“KŠ2Î%Äóe½|)ïâì<‚5ªò?­ÊAñøñãûsǪp ÇÎ:Ê*%mtwvjÁß?|våÊ•°0›µùÁÏ“¸4e$».= MÍ#G©¨Úâ85t¦gx†®Ÿ¢¾àí-Qì·:­ï|3>ÙŸÀozBCC#wä7EÅÎÞ^°/„††¾.‰Àq½í,6º|YÊÒÊ*v*3[?‚\KQqïiŸ•†ñíq™†…]é=uò[²hªY'~ø`ï|²¨iÂåY~þh_YYÙÍ çEEz`ÇËKA~GÆ/©Åx`7}}eEEuuu* Ä2ìÛDž¶‚È÷Š9…vÙYhôÅ9éš#¬bÓô1*!ÉbN.ýàPÇíôP ¯§÷²«+¾~›œý¶¤««K ·Z褥E OØAö¨é]ïuZfõg““;!{cm8€yeV14’†ß.G×è´žžž½$Ú¿Is»’ò‚¶¶Ítç#]]%p!*†'.ûS –tõô´AZWO‘Ùúdž›óqÆ7™~C…-FÓÝ]DW_?N‘M«/ïÞ=9ûáÜ\>ºÓ>½ϮæšVå®LšÑ×g—*¹cV$ÕÌLöÖxV«ù´»ð´i À0 ü(\Ÿ›SWRR`/KX8eHÀ͵õõ<èä…õ²Á¤äd.™Ô””€ÖT§øÎXXpÑB§rCÊ*=†æÜß`@bñ<ì.ÜõøQjêØê“¼¾C¼¼¼Ô‹|)’îØ•QŠ@Ô–‰`4ÌGª±ØºötåRäQ~^CCÃèÄDbkkë’’³®Çº6ŒÀøCCCÎnn¯æËEº«@t\g @¡PQ$ ¡"U;fÈT¡Í~-A:ššgæçç|b(1ÙÙ<înnGȵì츕£u¸3–—]–—–îÅóèSÄL«Iüýº¥%€‘×MMìà¿ywªÃè¢.?’Ξ•ÞÞ^a·É6ûÐkG£2_Y‡³.Èñ%tD³*<,(¸6ä·vQí§Ÿ>ôÕ"‹_€lÒùèud¸ŠûñTŽûýEZ ¼An\"Zmo4ȯ>ÙË-¯þñ¸ ¬Ý†û` óó*ãÞRWν{Àç„zÒ^###àDD‡ùêGkBãýo\àŽY[{µŸ“…¢ýˆj¥J*?¯bùÀ»µñƸ‡¾¹Žœš:³ D5æü‰à¬Ã MMM¤………E¢VòNÏKÙD÷ØJXpt漊D¡ê‚‰ÇnȾ¬¯'2111Ð××qíŠyg0‘›4޹)) Ðæ4Yf~4‚’6IN•G=|=«û“™ “¬ÿuõdQxcìq5AAAX¹¯ã`ÙÕaþüëãSÖ‡¤æ5 É«Ü8²\ úòKBSHqV^žÀq¨"ä6pÈ£ gJ]­·9­Q+>K ™êC -Ad)ƒ|£ÖZ\P ©­M2}}šö4œt€Ö‘ùæõ MM‘àäf;P‚tÃÎäªç;è­q9ÚÛ](v8ÔÍ—ÁÙg„še_ȳ ÖÝ0µYÃÂÃÃ#í·¡“¦µú€[¨Röò*ªëÀ¥‰K»OSÍ¡³à´Bàô42b†F=Z’¨‘vêùzg%1«Ê4;¦°0;øáhz/þ&‹ªÒOйòfWþŸÝÿÿ½ó¯xð¿¿ÿ¿óðÇý¿ß *(„…‹ ›C%""b–B"¢¢ÀdB?îÿçÝÿ·ô²µúùÅ¿ÿù¿ ¨€À·ÏÿÅÄÄÿ¿ãïÿÏ?Œÿç׆8ä3gÁóNü`þùÁüóƒùçóÏ2óÏ¿–ç÷y„þ9Ì?ß—dw»¿åòǺ²¾ä„€_úí,Ê»m?H~þÉ$?_£ð¿ŸÏÇÑÒÄïNËŸ)}¾Ž#¸ >ÛA…¥¾„w—r 9û3³Ô_áúÌóW(”`ªgw*‘~IåøòeM  RÍíAÚÁÿüº®ß¥õù½Šõo˜~îNßçúÙµé7ÕL;KÞåöÙø…Ýá²»=ÿ7ê¯.üU3@^¿Ø[õ‹$–x Bo–²•ïªXò;äá`Šï;’9hÚ!—ûìÀž/Þùë‹al,'põ D“Ühò«’/è—!_Êvê€v%]¿`ëïvÇûø÷¾À»/!W8>Öðo)ïvvêƒ~£ò]]³ìxÙn#ŸÍÏ’DË„BÅN‰ œ‚ŠCO ˆíO~ œÌo«ãþvÆ¥ocñWÒ¥¯ò‰—þ Ɨʾ?E…qƒ[Ã]\àÞx:ô?"­ø«œ»~›ÝvŒðUŠûcÞ+Q1qq8B.ˆ§%··Âÿ|µ˜•¸˜à_d ùMqíÿàZxùÝÁ!ÜÚ Æ]zü?iekg[Ó°ÂÓï»ý{OÚÜ6Žì÷ü ¬æÕK¼O’yÉÄ5¶ã8®ÍáRœšMMm©@´8¡D-IÅq¶ö¿¿n€H–()Ž3¡?È"…£ÑÝúzÂî–Ë>l‰}TPø]øOVdäUûcTËÓÒ(^ð½ãïø úX›ÄÉèšü[=X{ J]|ït»aPE3ÔÓíÀ±7°¼Ð¢ªo3EÙ'm7è i»í6%zf Tïzt=Éê¢ñ¡ß[³™¨Qˆñ !|Q!t’#ÕaWÏŽùwØprx ŽN“ñ-g‚v1ò†æùsÍwá+¦ç‚8ö æ'͹fù2ýH4ÇlvН¨Ùƒ»Qw< ’ Mòš†4½ž0q$o9 × BLGŸñª ê²Ï tÁÆ»/ "£i–§¬Ø hL $“+ú ôR~8œï»Ád8îŽo[ØóÕ b)`é$™dþ`vüø—I@®ˆüO°õ'>‡»Ëz<¤Ñãÿ{çÉSøç%øÌ|øü–Ãg2Æî>)>ºX ƒo³IŸÝ>ÒÇÏHÊL€ ô ö<„@(ò…ZD )ÐÛ§D¨GÝQ’v ­ úKê”T´N…`¯S¾3†Ö©Ð Ó™`‹WZÐѧ ³<]RÐOO’ >AÆ7 1ý›Ÿ!¾=ÄwÄ¿Røð9A>-j&µÀ‡ö»uÊ{E­ Ô¯G€O|õã—UM¼0:Úkp~tWMxT:Åtˆ±é|¿â‰øÒ¤ö!Ù0‡"É’0¿‘÷¹M&ÄÀR0áÕœ“œ¡9æç!ô?LLs /&#´ᥠ¿3yUÉùÛ…ù(&—èJ …~ñM6†%,ÎÓ1¾/z'/h•sÀ3Â"ø=%ÅI¢ÉŠÖÚ yBs־мÍ>ÓzÝòòušVâg††@æ˜$˜kn¢8&¿l#œÄm%ÉïW¯Þ}¸"Ço?’ß{½ã·WŸAIXxáWXãD;¸zFÐì J¶£ü‡øæ¬wú ÊŸ\¼¾¸úˆ£|yqõöìý{òò]“ËãÞÕÅé‡×Ç=rù¡wùîýY—¼glòCN¼”Éų>b>gd0€8 ú™‡ø,úÌ0‘›{È& Àe.DC‘R`ù‰B4·ÉM 2Ì·Š5ÚtÐn›˜*…%ª¼G³4ð2 ¡ñ—1h]mXú³‹¿9&ЦªJGÕ•|xLÊc/eOú‹åG B[Ó==ÔL?dŽâ)̶õзj:¶N…üHµó• IÒÀÒ\ Òü­ôÿ{ô–¥ÒfòÍýÿðF›?ÿo¨¦ÝøÿÿÿÏíÿçó°;hš€&  hš€&àç ¨ˆáß>€Á¢5swÁ..Sþ}8ÿW <Ûzÿkz͹QIøÉ³Ar“‘›Aä¸=7IŸ?ßÅu§;ùÕ%Ñûý€ëx×eE¨¶©‡½ReÞË^þq3O;ý~QͯúÛ:Î#^%Ãè(¿ýß_ óÙ ŽGØÁN°áÎc«¥A1M&y4b]²à«7ÑS¯ZêÔS¿B]B¸¸»»Î–ô­:ö®«Æ]q<­v=úqžH;šxM0òCØè v*Åž|kwuà>Åê*°Þåmë¡fû¶é2f† Ê{¦‚"Ç 30=ÝÙ.Ý ÂEö•›£²¨þ²Àœ;®€|aû)Âr<T»÷C=fT³h¨¸–íšÔ§Ô á«a*:*rüñ¬×¿ºx}Öppž¥Mí£ßј–ê~À,懡éQÛ \[×4•Vú?ïœý«{êŸú–ZÌT]j3[74ÍS=ÏfŽå‡Ô«ôr~Þ+ú×öÔ¿î¡eX–fèSfé¶nê!³$ß2•êøOzrü:öÿmXÂ6j:(¦¾æ…!Ót#4 OµX€” X¢ñöê¬÷úøôìE±'ì0à mUÓt=t|Ç´¼éß1 7ô³;A1÷ŠãhÔ"Y–ïº&ÓÛw¼ ÔLՃĂFYÅÚ(Šæ8Že(¡n+¡o+¦kŠëèºxš1dzÈ3‹ Ø’yÈ«ë)ºÝë®§X‡¯¦«²Ha±V|Ã÷>frzú¢ØaÛ‰áU@ÐF¶¯—Írä$áÚXº{GX.tŒQÕgÀ߆­0ÓÖ´0 C‡EÙT-Øÿ{g¸šc‡õà^ É}$ò<}äÉ\4Z4Oò6ÁT 7âß MæÊWòBß`kÏáËÁJºˆùX.uæãÇ ¡Å„Li†ÎJ® ’hH¯¹Ã•’ÞùIñ[·4;7¡@ý Y— w‰§Ãkƒµù4t4]uÓ ¨­ÔðÅÕ5ÿ¡1üZp§ ë Èô?,Ã×¢K†?åšV¾=ǯ…l ޝɅ»p¼îÐ0p5t)Ó<—y~¨ºšÁ\Ås©æ°ÆñëÁr|„6q‚vÝålÄgûïÄßõ¨P‡¿/fX.ÛZêKÆz‚á”Èâ)U_[}¯Ëu»p¸BUÅ×Õy®kʧ®ç¶ë(@CãqøzpÃÑÆõc¯èõ¨rŸ+úzÈêó{]Ü…ßAUGåOó …1j[jH)³MÝ0 ?ôéCÚ׃[ðû´ž×£Áý®çëa«Ïßuyîa ØòH„¦(*y=É¿’7Ç@ÚqëñO |ý >&Ãu±žáiî>X¾²•¾þV'B}ŒuÊg@­õË…¿à®¨áQ’3Ñ·I>r.c¾MÈùk–^äù#ÿ£yüh1åwcwyh¹y ñ5$œ‹/°ùbÇW,R%Á ÂÃ70X~¿„¦Üi¶ÿMx·$¨èÝÈð<;“¯Y‰D2Ó´lëW¶`l%âÈsv\†˜>/bQ¿7•wBɸÑ䱊rA¥ù ßµ8co"{ν³\FáÐLsÌ27 ¡wÞ>[  "Eìy(ë‡sCA÷P½¡œ÷Ú'ç÷0”õ>ȹ¡ {©ÞPN€*½{Êzwæ3$'ǯ^”¸gS4BƒoåУØN–8„+Dì*=þ}¶¥PyñKSè°–§YœÆÓÃ={dÓ•|ÖÞˆBuceÛ¸ö,k_^«0NÒŽMâ|&é˜fØöÅШ£{A`QǦf¨‡!°sºÎùeÿÝ?8Ïñ¥o^íZ®Bmà|*T‰DßSòc«õ“èQR_Ùn½/DLà’R(ÊT ññ„ ‚ku!±ÿøÚÈ·Ò ª"öœ¨^n[ ŠAU ã”uf r»—MWŠE[„ǯذɳ‚OÇèr>ðæ ár•§V³S«@žX Ø0ÉhäßuÁ_M)©ömo#¤+2}[ÄTä9_')è7C¬ŠwH ÷_ª3aÇÉ ÿt›^Çi4ò£q\ôF)H” £÷Ÿsêm %â"?r( Å= "‚SíUÈq„Çlq0£âô+ËDDYi42ÜB4+â(PTŽ|¼l”S‹%£ø¶](„¼LÂãDDÈŸØ.B9Òèk2ÊË•iNÓ$Ë:~£L…š'Ž€£/¤Éäã8ÚÐocŠ…iLFȈ—ŒŸH±q 0š<°4bY&bA@Bw¨,åSô´nÒ}sHºäe4 –F¿BUÎ9M#ÞÑ ‰ð1X¤ˆ@;hÈÞ7ÆqPèØ¼Gåò3Ecãíy<Íý ãÑR¨Œ”,š‚Ö¿´ð L¥ô–‡„ËÆ Ñ#øaôU¬'~×,rLGg5~9NÖæ|v†åƒá ÏØA^5º²z7ëWpª*åbŸï,ÅZ‚f¥Ýä™MIž°…ÈÛya”¢I`R4KFœL‡™'I—ü>àAD@ôéÊ‹S¢Í™ Û†RØ †ÛäPÀ£þ'u3ƒT0qÑ:ï÷ ÚS Að‘WS6f4Ϻ5µ¸{9¼—PÓO•!ï§ë]ϲN¡ï§ë]8®ØO×»7o×·‚è(¾ç鮺ºÊlêžeÃt©«::·‚œõzïzý·ïúoÎÞ¼ë}¼_£Ki['Ónyޤ0,Ö0òlpJí»yÊÖÈÆSÞXxOyc§j<å§¼ñ”ÿ5=å{2€m§`îìÂÛ‡Óù¯ñÃònp­Ç‘ñ±ñ±¿©ø¸…©‘éñg“·¹ç]b(ë’Kì?#7è¼%È(àohV8´Ð¡ˆ±I\6yšèÒ›z&Ðc6I¹GǹÑoâ{è„ßU`n<2G¦ñÈü™¿š›dõˆv½ ±¾fƒ«ÔˆÝDÛ6Êt£†6ѶM´mmû¢m¹ü™¦Q2ÉæÂîDðmû|œ¡bÈf»õýtût£:5ªS£:5ªÓÏ«:íU¹irªo“S½B‘iâº&«zó÷ÈÿŽSÈÖ<‹y¶Ã¨ã…Žé†>Ì"CuêZ La¢ä=åWM³çò¿Û†®7ùßïãÄp² ½ÉóGðèÒÊÙpŒJ«Mør«„b*ÌsTÝ7Í UUU ÙóaÇë׆…[ä_þõ¬™˜ßqþ˯úc‘‡t˜[O»æ¿b(8ÿUSU ÕÄùo™Z3ÿïåZ ™š>Ë.³Täg˜¾©jHapšòóÍÿŒgOï÷Oùüç¹Ïo3XôñNG‘G|Ÿó_Ómͪîÿšb˜f3ÿïãï׿½xwzõñòŒ ]É凓×§¤Õ9<ü]?=<|qõ‚üóÕÕ›× >(ä*¥£,BõŒÆ‡‡go[¤¬·Üè\e¹ê~Á¶T¬\|íä¥šÝ ÐÆ;ü2ŒGÙó%Í€:ïŠÚ¼,£h4²&(ÛaÿžDŸùuI¨—vðêö–Ô`‹´ë¼ò3tVe,þáêeÇᩚùgçÃqç4‚‚áÍà³v.Ξ»³:"ƵÐáD ¢Ü ¡j:¯ÁM©%“ûcõz%Œd’ÈñåÅS²|Öáý÷0'ËIÑE@Ë}*”ÈœzY×ϲIYü¼Å ¶Ù€±¼UNG×%ªJåŸÿž°ôd}tMÓÎoP1¸fÙl¾v ^P±Qñß+È)Ë¢¯l `xÔÖµkÕD5üžÅ¹Ý˜üöI4ŠòÏxqFû '4x"FøŠ»4à÷娕æ€PKxóbŽ–iÉáYˆ ;æp€Æð”x2}n7ø1ÏònIÑõߪ!ή³ÖšÝÉÏb¼xoÐàyíñyLƒ xôüš hÐ/#S _ÎSbZã/ÏZ›ð.Æiò'0O…Ô’Å‹;1 ¡’Ò5ÙPÔ"SЊzÂÏSwÆbK…‘'j)78Á°­#­kvÝ"C ïX]ˆtÎN"ø'­0o¡0¸±Þà—+—ÌmøCÙ¦Dª ‘´¡•¬rir£Nr¸^H»Ò$.½£,Ÿ…# ]LÚ©Ê)>à£74 \rÿ Yµ„͵1†rY¥ãÇHfÍd«Û‘`ú“V¼5k—Ž€?ùq”rÛ/`B‹†Å:Iïj}ÖZˆ+p¥%¾&/­*ŒieÊVQ®UP®ÕÄùžÇ%¯hí%Þ¾Ñ0K6bX%ªÓ=‹ÖÁO>‰:©\Õˆüuöª5µ.§Qóï¥=:›!¬\$»ùÓŽùÃÑ”2•é7O-~OGÓéêÑ&_;xcI'c1Lé§"ï‘^þ%ƒë è(ªÚÚ×ì‹{¤Õ“ƒÿà¶ð–~¾‚Ñ?y¼^BÜ~üøàÙ«ûƒfÉ¢?‹$¯o—H‘8œ ‡°øµx0T‘Yk<ñ:4Ç I@d"9‡Íã¶Ò:ß æú-Þm,ü`ãKøPt0eD¹R̘¥üd”épO“8¦^"³ÌDô:¥Cî™XÒSÙuµ½åHõñr¼óm÷\Z¸“~ý¾ÐôûÂx ìù¿µŸo’ÀŒC:ü¯ª-*C™Â Po”»ü¬-äÚ ÚCÞY_ ™Ø—dŠ|Ž×‰ª£$`šô ¬BX•d$•¼Ô ô¹‡Ó²$“+_—£E¡X×U·mjzÛ0¶i ¡|5\ú:¸ð[¶¥EÀÐl·­YVÛÐá¿«¯Ã] Fèjº^hCUÛºe¶MÇlë®¶c5(£0©‚€oP0a†‚Ïî¢ ¨÷m@⨚º ón0Ž'A´¼Ê S BIÎJF‘m³”NlUz”iZÍÊ.ʆ+[é@;Z“uV³\UuÝS|_W…Á‡XTm «¦[e]ò¼A_8‚ùåè5H¶¸Il•ÈÖ;B~ì£tÜGqè×Co}ZÔºHÙ%í¯ƒ.–èÊlÇfÌÖ|ÕcNh[¡íî> °A_ß‚|;©I‚ºhÙ)ó²§™Š2?¤©SÅÖÃÃòMÕP}ÅÙ+ 6èk .'9>ì@…ñ°SacÔEËN$P©¦yŽŠafÔ×fS“j†ã8¦ÎLEß+ Ö÷µŒ/ÞxÇ;!àmô)Ⱥ›“¡&jv! |ÓuTê–ªû,Ô Å¶=ÕÓõÀ²ªì“ ôµŒ ç,çRÉöD€½ÒËæ$¨‹–]Hà3] †jP͆Çó`Ó·}5PõÀuöI‚ úZF‚÷;“ «M‚ºhÙi12m3tBªÒÀ|Í´tKLÕó™C-ÍÛïb´¾¯¥‹Qôÿì=ýoÛ8²ýyÿ nzX${Ž-ê[M ›´ÝàuÛ Iq·¸;I%Ú*–W²“æÞÿþ8$eKŽIq>Ü­´–e‰Îp†3ÃN¶ú/É~Ñ4Í…PK”¬$„LÓ§ah»‘°6‰ãCOX¾ÄµÂÈb>µTÕ÷õðèW[ íÐ)« Ä–åE†³#<¤!æÜ°=ËÂÄ lÊ]j>¨6Ô ¯åJéŠdZiK*´ÅÌ*T†_dfûÄñPîÙ‘qì‰ë@ˆ¿‡¤Bƒ¾*Dbd䜯ª©VZ*Fmѳ )"Ψ+ì&¨¾,Ä&uÄÚÄ"lå!IÑ / ÅU³J2yŒO†PiÐŒþeáÿÔâºíøãzºc‘ vå¹5å²ÇºÜc£v²à¨›óé¾ý´èô&‡ôÁ¾’¹/°w«ã wå#é]‘3ÿâ,O'Õ¾ÖݹßËI*å¿PPýæè²Æï0ç®øÏ÷GGi6>Êâ+1äý4ãÕÉÆáàíâ¿­†‰=Ëèâ?Ÿl—3ß5|ÃuôœÐˆœÀ²Bú2]¼‹þ^ã¿ÿñó{2üªü/ì1»ãÿ'ùsL*LŸyaè†MB€¸.7ŒÈâAØqÈ÷›ÿ%7ütŽóª¬±”ÿ±)þÍå!à¹ÿwùßaþGaë•™°d¬L—ýÑetÙ]öÇwœýñ°YËsIÖ'ûc1$jŒØÕWçI’¤ÚÊ{u¯KôXçDEªøã§vÜŒGÛ*ÞUàþTÝP¹bê™öNéq~öì»"¿h•Díç!Ò?€,a’Ò/»Ë²BäÙŒÒ÷ò ¨‘«Î`”©«F'7Hž:?ý'eL˜^!•¥T‘¹pvÆøHŸÇ±45D¿sfν,^-b¬e€ÜùL®»h–õQ}‘VãÁgkk¡ýþ;ùé¥íìÈY@¤Vàžoôl7È#°æA a,d@Ìó sMÑ qñ²ð@ ¬V.EcI®é,+C $CÓæıۦ €:A“„l-ßÚ¹?¯a2µ„¢tÄU¢ªô¡êDßX—‹½žïõ<ßïal7ÍY†@úxtz–%pg¹=Ësš&ŒÌc3‡½Ã¢î6Ú×õ3BP۠صñP‰[€F  ÉxLè…ª?[u:Yi¨‚ÐØHuÜžiXMS7fŒ!Í[ÐJoŠâJB-œiNÏt9ÕLßišÌrëÄŸ†Œ©ž_Àš®ÀÌ7ü$Ãxë˜A|Ï<æ 0¨Gû·`ð … ßsàÂ_J‰æRJ¾°–T€ GHªzlsÜž PërÃRX°ƒª_4'MÈ$Â=×±{–ëÕQÃ((úº…ƒ­¾~P›ÍêDÝây ΔuôœÝ_жå:¹†„ò}Àg.›-M)¥§ÌmBù–) ¸V“ik/•ÔM!)våoƒâqƒ^€qÏĕ䧪®9*©ùsºB%à}:•]%’ÅdÒ—2FOötKÔ± 35³>ïÉ]Æ 3 ,Ó7½Ðh™–o»–x˜Ü/ÆWƒU„iÔG|úi9¤@™d•Ãê›G´ÜßQVR^6}š¥Èd<§m‘ ïHT.$< †¸»§â\bФWŠ˜h2ˆßÒŒ÷ûj^†ÔGSµm#|3ªÆ”d‹’EÕ€/"“ú¾zÄ0BnøÌçÆçù!a÷â‹jŠÇ˜ÏµPŸTÚ_KÃróñ˜ýü34°UÇ4­0݆iöÅ’£ ˆÑ¢h±Íså<æø´v ÷àÓ–Ót¥0`×ñ}Ãv(g¡åX†Á£(ÄçDÔ Èz²D=ÔKˆFŸ%špD;D·áˆÃ!ͤ±¦jf…+HL†ÉpZØãöSQû©Ûv:­;MÃÐ1D7DæJq'´I ÍÓ=‡¾»žS·êbêN†k3yÛ¡ºÍä=àM&ïkÐÇw ³¼¬ÎäzðÚÏä¶³k•™ìض‹1l×7 Ç<ÃuH2b‘Ðòlºž3¹êb&GçÏ:‘Ktm‹ë•¨é¡†žkq×…TdÔ%.ó™ëG÷Ì8~tºÖC]ÐUò躶-²W!lFÔ$8äV`Ù¦M¹çfD¼…ž‰±µž„­‡º ,ôá/OÙ„ åc]9 ½êY%¹žümI² ù-nâÀ4ý€F¶z\Ì:ƒzœ qbPÛXSy]õLiÎùÚðu[d¯´GÄÄÜwMÇä\, ®Élâ³@˜d¡KC{MâZ¨ Âæi¶6tm‹ë•Î";ˆLjúŽ˜H¦0H˜˜AÌ¢IÖT^×C=U°â!; oÎ@z>•Ô†2º?Ë §Û¼žúm)²Rf§ËKh”R+â¦ã3ƒB%bòx|b®'õë¡.¨û;OMù„oHù¶ÔX‰ï½À6qdî MßµKÌ:/Âۤᚺê¡.S^êGÏMú†JZ[z¬B{Û¶˜F®åp1Ù,×,šž·0걇דöõPO×òõàúfLß–+ù-a Ð:±C[è–ípËZ…åx–Ç×Ô/X u™ðëÀô y¾-9V2̨oFÌö°˜fâÊ+MD™ù†Ð*¼hMå}=ÔéGéhA$Ïa™«qÕlŽŸ¦[Kr´?R¢Øf|Lâ$Wñ'Ÿ½dSù@>Ä:à*P8N‡ryi ìhГƒOZ†¦ô:üS\¨hqÁÇti n2à ²÷ž¼ž–àÞOG7rê!ÈøC'TÌ!ô.‹Çÿ‡ç<+Uã^Ðî0sÕêǦ†nSè¹Å’qo‰Æ×$ã;è&°¡28£Êâp2æ°B†lfˆG7pc2„ *ðÂyv™.ù÷?£<ÏÅo*Ï"AG“0‰)úS>Ì9¼ÁüBe`À[ïˆ z'¦“˜;ˆÇâ÷ ] | ̢ÝZB‰7ÉàÎP*ɵ%€½AÀÓ÷úº‚<ü7€Ù8™˜Ä²ñ‹tÑÈ¢Y1Ðë8IPÈ!T8š$=$žDÿ8<ýõÓçS´÷ñwô½ãã½§¿ïˆ'õįüŠ«vâËQ‹f¯¡ýp|ÀÿööxÿWñüÞ/‡Oøßž~|{r‚Þ}:F{èhïøôpÿó‡½ctôùøèÓÉÛ>:á¼!v#I$D=ÛË#ÿ]Ð6& ]+ØU¡<¾âPµžŠ™Ö‚„I:<—ÃU‘P›;(Ž`Úõе˜£¼ˆZFÜ:Ò~9X:·4/!˜¿Ei…%œäR.Èi^,Æ_¿~E„RÁ@‚g•c Ð?çä\@LÆÐŒd×ÒäWȨɑX`T‡ 8=”OèˆÐRÖ]”ɼ6FÕ¹eäüRei•î Fã¥ð©Dæ”ëe±r:¼xn(æ-P ë¤'µè–@–*Á΂„E½˜5½˜•^JñKhó'r9’Y [M;³j:³*AQá ½äé5$.¶èÍ®éÍ®ô„ÞŒßBd¢Ÿ’ñªìéžQü÷¿o¡ÿm€S€S@&h•¶V”ÚÞt°nM_î­¾æR »Bmì!IYi/6íÞ«éÞkݽ2Zšöï×ôïß꟥rZ‰Õrx~&ÅÓ¦Â{»ŽƒšŽƒJÇÿ׬UlÜÝ*6r¥Tçxd–ôXHÈ|RïHÉJ–¢ŸNQ)ó+ Å(†xR„:±$‰¿¨´°WRô?±h‹ÒT èà“„\|œþzxrßñªuAE”OW/¹úƒêmÿt>Þmg7ÿŠÿÓ—ÌÑr¼h>¾~‰Vå¶ÐÂlß>Ÿ&oukUUùÚîæ‚›E[`Ø^‚6÷˜‘앳"ï€C ô&R%.zh¹wŽd{_øÍÆî"Œ4CHÙËÐvÊú `¦´.z³n ÞZ:’Ûo´UÖAW—ë õhü0ÏÌÅó?ÈYŒfÕ¥>yŽ˜qTr^Ý «B§†°&å´6Ø¥ðt–…P“V59JÍÊ;ÚÎ „´‹a™#*ãb™*òËëíH‘‚‡x– X&X•¬z˜XÓ$öüNAÆ,œ40IÊ1®ÁÌ d†mß s‰ï'²¢(¤Q$”ö÷GgŸþGðËiWéPú§îêsqBôKâû¾š”sæbé ,‹EØ&ñÈǮڢŸ¾¬Vad „mn,½;{­fç¾$Ü ]Ã1ÂЩGÜÀ‹nx¦cQÓó°ÉÞôKd2N›÷4—Fý’µ¦a.} Ì´Lþ‰¥²«YµÁ" A|¿WwÜņK¨ypÆfèŽ)pȸN¸¸;å~-:”ÒçböT¡%‡Ïׇ$®‡R£‚­ÿj:ÍTàmÕ/í÷X÷iùT€ þ.ÜÊÝJ÷|kG­(:¡:ßShp‹*^y¡‡9µ\îøØñ¨ïú$àåžÀKõL‚»NŽ>‚ðn#TDŽ­‡P-åuöâš[2ò°-ä2€á¯aê~+†¢ãbU¼âyiQÔdP†¡.>œ…ñXnÒ*;DmêÌ—±xVL ì(•[V…¹­,$¸ƒ6/É ìmüüáC¥Ãäå| Û¸lÓnÝÓ@½mœ>Ñòÿ Isn:€~yƒx´û1Eç[ñ6 óéé#A)€sN2zÑSg”¡kØ+ÌùŸ™}XdÌÂî¡zŽ3½+¹ª¥ÊMˉˆu…a†íÈs©Ç-Š!(*–êÛããOÇÍ–ã‡2‡›¬½ ’çÖdí…=‹Îži%®!|#_–n{(Y!ã4½¼äC¦û‚ñzLѦ™ÏÓ”xó„öEéÒ°ÙÄ {–C¢ïÖ A !ÞaÚwî»ïÎæ‹ú¡‰-‡[œD¢î»vÄ™ÉdÕ€yL¿|¿®‡¾cx,ð ‹ÌÐ0tp"ÏwM‹Íw5+z?7]ËãÚ›“ ÒQÖcI›F4t¦äƒš’ß¾!ù}Z’åG¡ܲË–fg<ÖÊL\nÊ56 ŸHùèwÚGçq~*s}Öâú¨jc¿Ó:a5áÛ‹Kª* Ó—N1x6Å vÔ¹%W1¨[EF9h³p68Èt=Ny”ìz.™ëé.–ñ/ÏïsHïNŒuÞÕÞÕֶͪÖ6ºA‚þzè"³3lÖ$Eñ-ÚfúÐÒo)á‚M³-4ðÊëYDêà¹HvöÌ-X‹©ZÚ¡U·š7¡Ñ^D½H_Ø–š!G„±Y,=¢}´h}o¤FŒà<ƒ˜’$¹ééZ4Ej–÷Õê<_OèúBLiì9¦èšÈS2e"ëÂbâ+I¦ &‰ž O±‡ª3Jàà ÙÉ¿ˆ®Tí"X|Ôø6sÎÑKE˜YÅ5 ¤nõ*q4… gÊg“ËËÙ{ŽÎË•Z+ãltS :h{æm ¡ÚCËcU›êOÖÓàÔþõP†º¨ž–fZ›ò]šÂ_l›ª‘PÀòºp?ĬvüßÒ+.¶$¬O.BÊ~Ì‘P& }¦KWêR]Ÿ9ÕÕ ,2 Û²œÀÅs°eº®C-7¢Žã1£ìÙQ»-SPç;ô5C‡3× ]ú>¦$òlË¥¡áµ~y‡Õ$Ô.Éö©“l-»ËWÞðu›óßg&ØI¡‚L Cµ—Üù«￯”'Ñ®œTSú/¯ô4Y<N½>‹GÚÕ­ßå‰S'U ¶r¸T·˜&™FŒîK½_žÏµŠòŒ è·FÃs¨ð5žÞÙÈ5á¾ßÇ*à{=˜$¥ ¦ì>¡«Ý^tßÙ߬ôÊ6ÅrÆ æ¦üÙ㣳³xH“þ%sÚ÷!‹lØ6|bÏ1äw¬¾«?ÛxM;ÛØ1_ˆ§LÛ|¾)Dê¡L?¿‘?J0s¨ã3‡ÙA`0ÈöµˆeG~hó â‡|¿ü/ux¥3I „=(ÿ»®]â÷…a¦çvüÿ¯1¥7›g@÷bŸ?½´øA^À¤JÿÙ(ж¬ÒØÖ'(¿ #Ñ™QÆõPèìf¡Žý­<9§úXa¥,ë@”ºÝL3&”(¿8=ìZ=lb¡*ÝÕ¹µ°sùŸŠºÞÈÓIFy3xþL/u Ä67èaÇë™XÁ8ÔzX-m!ÿ“ËKR8ÄËùß´„üoZX暉õ߯–Ññÿ“ðÿŸöO?z‹€Øèèó/÷ÑÆö`ðk088=@ÿüõô·ÂŒ0ÐiF†y Iƒ·7PÙ~¹¶¤érz<ø maxY_nKoöÙ˜·Ë¿^&ÃüÍ‚fpêmù,'àE¸äca8‰g·ùŸ“øêÍÆ¾2U·¡$æFaÔª’¶êåØ?ÌùøÍçÓwÛ¾d¢[üsûóÞö~z)lÖ8LÊí¾}ÌÞQBNçq¨¾ú¹eri[K¾!%Àn©²¡ü(rXŠ’­›³¶ÐÞÑá«R-DŇ}Š ëM}¯ªé„9ü¢%“#yŸæùÊxõ2ož_p.¤¸í4Fà€M.ÿò¹"ê®6+ÿøs³›þ²Â°ú¥Ù‹ìf¨};ùüÛ%x…É ^€9ãyü_~50ŒŒÉýßnõ&âÛdºrØV_,=ìf²waà;ÛÚ‘Ï\ÇC–^oõ“”°M5Â_9TQ¿/Fmáh„Z$WÍ]ÚP¸udapí‚J¸:ŠZå.‰‡zPP2¨’4Wûºë«î!9]auFÖÞMž@ékÏßlòûˆ0¦¿ ô¼+hÀé‰ä„…wôugC9K™ìb”¥PbOV'ß(× nƒ'ð2ú¿To¡)hú½Â‰ÚŽW¡%í±–êÊ Êì¹]³ïô‹2†²cåvA…^ûKÅGᇩø£•÷ ª©ªs%ßüPö*¡ª*j%]–^㩇äEáYš$¥» ŒÍöÀOVxªÊ.)9àÝßHºs]A÷)r®urýóõ8ô¼ÓMÿ’ù‡‹´¹qûæÑ¦¶<ízÇÌ/A¸c˜mÅýwÓŸîÓIÅ÷çåÞûàbzQÞiÖŒv4îþÛp‘× Úcü7Ãþzü³ÏÿJàyxÿŠÜÛ¢á÷ŽîÝûüáÿnGýu‹zƒö×'®O«\·­®+@Ï>´5×ÊLî’÷WÇwvÇ[ÎÛ1äkZÜoÃûµÛ®>ÛG`k‡-ñ6¶öÏÎ ¶nÍÆóiúÝÞ>Õ¹KcW¹4ÿü?WÓÅC|­NÎŽß.ß­žüükœµo×vþ/»`»¸[5«õƒ~¾xø.,P©ÒÙ¤ƒ—Þö bó<èš<ÛUæê²•€7ïyãQg_•½Áä6æót%a.´€½ø¡9›…Ë·íóœU7?ØqB/0vf*í“‘ö¹FË£Öæ¾djŸgDTÂeÖRø'Š_ØioA¬¿³®ÿ¸í°ÆA‰Þõ׆<º¿Œ XƵri7*yo;â=³ƒ zo§-¬;þ†Âi’@i6B3âYäØŽýÑè‹ÖGJú#îMotc;,\Ÿý€è”K:o£˜a/êÝY>Ÿ·¼À=ð~Ïé½›s†·£^;I£úÞŠþVH½®&o<‰¹B›æ„ „)˜ ¥F«ÞÞy´=#ã)íBJ Y…î‰ÓÞ¡y†íÛ–toOÙ½ pºý8],¦û_ö“ÈÝâž]¾Y~'MgdoæPìyiÓÀgW(âÏ.@8—³rÛÎ9j®}JuTïCš}BeËç{5™Ë<ªIúN«ÇG{4E,õôèjO³jO»ßB÷üuŒJ¾ÎÊññqK“Úº»%óB32ÓÙáVñrýÕ;[ÖÛoÚ^ 4¹úl¹àÜZ²eÌpWkÈÑÉ,ŒûYà°¸ û=ÓÚØmÖ—§W"Άìë0=b_OÁÚ&ÐÄOtîûÚØ.Þ#¢Ð —VÌm“åp“;Ô F›Ü¦$]‡Ì\a‚¼¤ž«7Ë"bO´ýº½÷uYr×î¤ô}4äÆD¡pµ évíD¡“ö÷Í<¡¯¦—Z#nc¼yvµø©ùöªœŸ£bî´~§™‚WLÒHüÓÔžÖ~ÜþéÞ»0¹÷/÷ÎÓô¿«^ú/ xÍñr<¯ôz—²¸÷p½éME…Já¾ôÓËQ€UM‘'(3‡Ͳ–xt|1_~ñîxUrQµqÈõsp|È.ÊbYÖuÓ¥nꔤXjôÙ„l^6*}Ec<ëÚª†ÎšOëâÏà ›Ó«&š½1³I¼Z BQôGÂwÓ<©胫 ¶ YX`{ïæë™rß<Ý<+sÜ~5ˆqÞ¼€OR³„γº¤Oæo×攆ïi^®„hžÐ™Xm7>lÊ„¦5k—ëû¬ÐÚó¯> ’{ÖL[ûûÂ~hhðaó½ã±ÚÚ«¦Ny}NêÛé% ™áæPÇzâ êÕùQƒ+›ïŸ¾úÓw¯_5'Ïh¾?9==yþꇇíäê)þZÞ/w9j&ïP¶Ò¾BaFg~µ[}ûøô«?áú“/Ÿ>{úêjå“§¯ž?~ù²yòÝisÒ¼89}õô«×ÏNN›¯O_|÷òñq󲔑}PÛ®œëoüpýü;™£ç¹yÞÓÄÉT&ïÑ Š—0‡óéÅÙrÆù¢§ó‡t8ÚÅtqÔüy†l¸ž…¾ÏPŽÔ1ÇGæ¸$\üxŽ>zIC x2©r~zÔ|9/èòoO†ˆÊîs‰ÀòúåI"öŠ¡î‰ykÙ|½*÷C/êíÙƒ}˜5|ôIÄ»¸áÏ™N|-§:xÅ>òJµŸÙ"Ì¿Ÿ6ü ë‰Þÿý,¶£™¾7K‚åLm:ñºýlÞÖ,Íåä/å|¹ÔeÏ—žÔF¢ÐœM(<_[Q¾ßhî÷ÊzkÖÎvÊC)ukº_‚¬¯‡FQàÔ~9!zü½¥³ôZKÐ*D¼„‚¤:EßL..¯Z>Ò ‹Ò¯£o°4æÍbÂ¦Û qe Ÿ~ó%ô‡ts&³ùç¿âÌ÷½K€Æ¬IQüNÒIg ÿð©dYÍ*ûÙßWô-Ö¹»x¹øælçõ-Y]²y:±s\x$\ëðv3]ì([­kNirɬÝ:^h³ŒDÝ?´GõvMü­Ä qض=gt¤<Û€ÞÈ8½…Ô¿m`üÈK¥ÿ?.°ÉÕ e:ÕâXdÅZYrŠvVµz Õ=M9|Mß-7 ?­ªùÈó¿»ÍÕ~Îê¿eý‡±úÓüïßäÇDZ„mlÍ>m••*–`b6Ê¡Ø?}úù‡^ÿÑ=?tÕÇhÿ‚ÉíõÜÈOþÿ‘×ìYËÑ-©HûV}Œøæ­óÜîå¿ðå,­1’qi¦DøÝ"­F¡•iõµ]‹R„$¡¼±#„â{Ö¥œOÏ–hz¶C£5Ic½#Ú- -óÙ'ÎÍA»&ÏxôGœ ¼?$Û/Çö"¹±Öéš|–Öè8uä¹<B‰Çñ•LÖàÆ†ÃÝ‘dlHñqV3‘š¤r­š¤ó¿Òr¦O?¿@þ_­hh«%}üßó_wý—’JÚëë¿,ÿ´þë7ùyfÍó“uúøñÓç_?þÝüÛþú‡;óvý›7×½Y“('h­¸93™EðU¨ b558År¾óà?ù;rˆ×ÿu4ŒV=¨¾k´åÎÐnáŒsX†Ò-Œ Ü£4>p2Cy5Æ":¥©ÛÐè·eÖ^^ïG]|70a¼«Å* Þ£ó QI1»è­[·Å˜SQIY²F­J”¬\R˜ ZGÃB’D3PUé¹7QeXƒ¶ºê7¼Å7€v$ ³!:Ÿ ZWT Ò¾­r*JžìPŒ Ò9)‚óp%+à™ÓNsœ¡¹É‡Pô6“Ñ^¯RDÜñLò¤’|ŒÂmåXÀb~jÖ¦¦š«°^$tnT„õè  ˜ÁœfQ#gX£ÎÒ:ñT]í̆F4Y% D¤²qãh×kc­F¤ó¦lõH@ø½`É Ä£”¤Yɘ˜áF(NwÛŽu¾ª¢«Z2 )”*,I;K›$j–]¯Í·¶›ö@EÝõwƒÄ+‡e©â­U,R¦`Y  Ežãˆáêçþ~’ÏÊ6 2·^EIVX§y@Žu·©ÄEr.s“‰ݘLuªfY%ÔÀUѬ üpE —I·É'(;%QÏ „qoóIpY , %yª€NtPr)%NŠZ²€í1®X”Fh®Ba(»D‡4¤)e´÷Erd+@ÑÓ JµÀ;ðÇÉ"9OÇ„K¯‘¥jD0— ÷žÆ)²á¾§¨¡æiXviF>å¾eZ  ¨LBa”:kv¦ª-(Aß8E$&O#V’z^•+QzíÓH4ÌÖ j„)P£Þ†=Cë†S‡Äœ³• ŽÀZ¼j#BJ(Ö½QY Õ¼×¼¡îó42Q` T6A†Qx•Uñò&{PCý:ƒUÁ"b#3lÁ– dŒ…^¿}|HU44 #¹Š<J@ùS…qFFC2ªƒRƒH(2û®¾h™aJÒ{0¬ÙÝCâCP ѬI!¸³%s&bQ QÂõ †@˜$cܤ`£÷ÔT £•¾¥t‘H>gM¡VO,1IMgˆÐ÷>>dT°E­Ð4J˜‘ÁœœôÂs°ÚÜw?1E*Qfád%ƒ7,0eOŽ÷55ñ ,(6ÀA8º0¢ÞA¿)íà•µö"Þ–Lß¼h70þËvÐwû/i#>G 3Í«茬P® §‘s/›qm>Ä äŠ$­t,¨B‡V%Ë0BÐfcE³mo×qxñB%é©EÕ Ñ§DZÑ0B µ‡Ãnèy³Î‚ÁH$AFHµ„íðßs«º»ªZý¨nì ‹‰1B]u:÷qnæÍ¼`ÁÞÑŽ(pɨÎÊñÁËl !+˜‹DK"`1nûgeso`NDLp‰^E»Î ¶úTÅF¯„É *NBÒ¾$p§Ú"£Ü Oeºf0vŒI.("d†Œ^”DֳСX öÃZ· Æ"Ú¥5æ3gÜVœÂh‰È4†«;ç«`*ÄíAÑŒ\0ó ãìŽEkIH!æb%Ž…â󜘵Ùg¨رT©dætà¬#:+%°«"‡ U@|”| —ÜiÎʹršƒ¢Â—'¢vÞxhÌÛ ôXªÒ™«•½‚F‚÷$ÿ© :Z8Ôè[Ž…¢;ƒ¼Ò\€ S’È.h©bˆ^Á­ +MdÇ\¬Ts„Ú(€“Ñ“FÀE`òBtgnÎ_ÖIËëæ–|NaY© “ÀÏÖ8¡U„Œ"Š€âT³/qó¦­‹Q›¬= ¢ÔhD°)·ú:ÆA‘ßÎ`+žOá,eàá³`þÒE[¯ld ‰µ~†rw5ŽB¨ÑáÄ`fŒA$m¼.œ3ðÛ(gK‚-êw¨xOÄô¡"\4Õ4B R0ÀÙ6³`‹ä©ƒ“M‰) PXÄ2`RRèw‰bJ¶-_Œ3¿¶-Ö=GÉn@ˆK®D*`˽Ì8X³ ‚Ä`†´l,;XØ-\Ÿ¤}©14Žèƒ{è+åÕwZ7DLH™@¶¸+z4€Q8¢I Gf[ÙBÜ2¯ˆº³*xQé‘Ò' Ž…ÃÄØŽ s5.k:`âW2Œ2G@Ÿ3¢_G\ä½…“ƒÐ,-2Rj‰3 ¯c*&8¸-X—;ÓàB€AÑcDQh Ç/•ìZº!­Ë˜K†xF‚‹C¿Ts/ ¤¡=-t·pC—‰~Xnd0dP]¨RS WŪ3CæryÃl@ä@JiÑ`‚Ar½T  -Ú³¹dŸx‘7Y°¯Ë}sÔTê˜6÷- C s‘-LÑLä"ûŽ—äèXdÊ«¹7¦‹FÜ"œ+³YÈ»ƒZ'4K¦¢M“T)X ¡HÏ…G`§yä¶…CàBæ•­"0œ¤ì,'LŠ1&1ú²õrÑ0¿Ê——ǧoƯòű?é´ô4­Êû¯t†¯u0,ˆJ@°=Ña[J­ug!¢1Yr6x‡h[EZø±è†Ê²‘EtàÔ6dQ,âçSÂwT‰ÔfvvHècça´¢% Â!Ü"D‘O`€<ÉQD„bH8¬B[Ér¤%ZÅÉÔ,mFèEÊ7E|ýê«Þ$šõ‚à8&`È¡’Ê pG0ÂašÇ Úen¶+(ÌÝAp ƒC5‡OE "’ñDŽ+Ú7Oí2¿0«¢…«˜pÖÙz¥ÍÈo@%Ȧð6†'Œv˜$™d ôŒ¸°†çÙ&°0‹Îu8_`q¹ •Ó,’)Þ‚¨üunáô¸ëœvQ»ÌÐi„ÌÁI«”r4<µpj­£TƳœ)OÁiŸRÀ4³bRHÃ,T3tÆn…½‡ýãñ»ýc:ôÝV»ÉK+Cf!k5¼(e ^9k¥¹uÆÎRà„]ÓšWq|ÜkG5ìqRœè¸Už<;ÉaÿDå=_6¥¸ÖÌ-ëåÓKºZ¡³àdLKéRQìš)¿ÕÖY`Ë£—Ù°v9Ô.ûXªÌDHª¾dG§D„À»Dù–¥…èèO|{uú®ÛD)}uâŒvù•Ò ZˆÖhyÒ–$!¹”4lf¯/F§ã^Þd?‰æ)â¥UÊ Î–Åy/¾èô0ÿt\ŽŽÎ©lbï4‘T+ž#7z¶±LB¤rÍCÐA9Žxg¶1!{ù^‹p¼B¬jg“Bà*S´ç G°ØâèÕ8‘WÎCKfël± jáíò·8b%Žÿ#~Š1³.ÂÅ%–2m·c*nŠǬđ.TAÞ'`aXÐ0Uá3Ûâð•8Ñ#6àªh:“À#éNÔE£9Z„Ôâ°•8õ¡_›GÐ ³ JOçl!Ӽű+q ¨¨ âŸXeðlr±Šü[¯0;é${™tËG*-ï/ýÑQÏTI³æ9¢E¹xºìŸÂ†ä7˜‹ˆ „؉ÙÉMÙ³•K°( ÔÁ ç”<#¦  Ñ:Ëœä,=Wö\àçùM¯ÍvÁgtAUˆ'á®2mñÃP€ÇIU,x ‚°™Û…ØÐ_"ž°y®¢câèd˜ë”*ƒÀÁµï×ý¼ÌïÏéÌÙUz÷þü¿ùߢÏÑ@˜°ð0ó†‰,>@yøI„Öú.Âdñê:GÀQÁ>#"€–B X lj ¥(s bºSO‡D¤Ý哊p Á&ô@–a ž4jÏØ9µ‰Óù,ºVŽûÔÃP‹1¤€tápGZæ«Á#Œ\öÛ±dTȇ•¨X¥¹,Ì@J«(0ÁÖ©¯-Æ’AÕR ¸žE¼` áz•.”Â"«zG¹3| ˆrÚÒyU(;å¨gT˜r:ó¾×±‹1 e˜ñ Ï…sÄA!"–`Cs¡B‹¡—`—1ðŠÐ ¦«@¿2M¸wð妇á–`” ô4BªÐÌo²à$‘‚½`jÿÒ‘²j1ˆÕÂVªÎAfA¥sV`“SÄkd1¼\Äx¸$Ò0A Ë)Ê›qŒ%½q\Ð1 ø"Èhmf¤ ŒuœÚ™Þ%òîí×ÍŠ:LgÈ”^"<&¹Î¯é´dIw|pQVJ• ŠþJ“…BPž\dɰ‚Y|iB¯2Æ'až(^­èìa˜øfíeˆÇfD8 ÖNzÉX…Î(' ­Ï{×Y"­!‚(%HÇȆXp¸_t¦Îbë€,ר b „– ­¡åiA¿Çsêþä,1ðŠÚ)xXf)@Ö 6=A38¦,ý–,±FÒPi¡ÀdlPõÙ$Ñ¥ c|`—ŒkA¤T±*(w©”**ga bÇ·sRR÷æêôøìtžž÷h¼Zýy–\b )”ù( ÌYiÔn¶Ã2¡;« 4¨l¦ƒ/2ŽI¶ÁÓ–ˆ@Ì;Ëýf¹ Ê8˜LK!rB?š. Ó¢Rà/-”øŸÏ~¹ÿÙŸòþ§é/šúÇ¿úú×mîÕòæþ§Oò‡¢-í)Ã6'-4¥YklÅèÌ‛Òþ„úßT‡>j®$ümTc¹þsÕŸ¿ÿ äþ’û_ÿ²ÿâÑá÷/h®G/_õôàÑèÖÎÞÞ·òÑÞÞþáþè»'‡ÏžŽø.^øÓñ1mCù“½½ÇÏoº7­ÿ(ëKÖ¿Ùû‰°8½<ùqç²óænºLtlý…?½?9¹¡½kÞ®ŸÍžJ¼Ï—~DÏîPu…_ÞzÔܤ¿sHÅ3¦wîOÊn×/ß§’ã|ùåëïwªúÖÉk ßí¼~¸óèìý¹¿<¦*å-ÎÁã/]ûNsÝí¤†NS8qòÜ~s9üäVøúúÎÌÎ¥ø£¦nAãSg5ãn·Ü=|ypo4+ÍÞ|ö÷“ãÓw“;©„üno.òÉ—·êJ€ã·9_Þê–§öÖ"o®¹ÿá_WùâçÝêú³²â^L?ŸNÊ5Œçßî´wr‘äoÚäº{ޢɓÆÐâÏöooô&¸^îj¼3­#ç~ýÌǧéìÇ;»'g>Ýnzø$SEË~½÷ÎÐN  Ú¦ì÷D‡&µ ¦µ%êr¯“ÊTJ`ïÏ>ä¦ÌºKu ñc<97u£&_ý—~ŠZ\éÚÙº2sS¦$ŸPaÑþ]—ð¦Ÿ#¤™üÃó÷˦5TddZØòmÝñ{#mκßT®¿LõWœ_œý¡«kÎÞš>>Ü9É/±]ß7ofM›¼×-ÙT# iRX§.¿Ù¬+CÝz võ®›Ôݬ¿¸)1š–š”@Á_Óº½29M |šFMíÀNú [åbÔ74Óª:!g?òY™²ÓJW'ßÒUÆm5'ªÔ1­œÑ-‘QwøÁ3|Ú ÀKÿ&OºÙ¯Í1‡qŽçÆ=Œo2…¤©…Áñ§Gz¯‡µn€^ÕË¥W«Ðfõæ¯..ê*ô3ôººE¹¾ g!TSÞ£;³ý!½!Žùâ–4}¤ÔËmz7áp=Ô™kÙ¢‡r‹nÖº‡''C„bJN©´MÌÚ²íÃQ>€ôPþé/ŽI97B!sÛC!:’rÙ$Üô@ãÓ¬Ÿ€>L“M怨dòpjÿœ!ˆgÛIêIÜP?ºÒò×Ú@Mu´I—B"L!Â&± §q£íB¤)DÚHø»e Q6xÓ…x3…xó+lÍ$^œ@¾B¾Ý¤Uç]ˆó)Äù&=9O!Ém§LhQŸßŒSÞ4Ï$ùêxçbJãFÓOÛ_ÝšWƒâSÉŸÿý´$ظՀî#ãŸOãì‹ë<˜©ZoÌ«ßøüäø2ø‹]Úyö¿;T©ygœOÀaî5åÃGÓz~ :·óÖŸ¦i‡úåÎÖÐßëäwZìö~î?¢÷·¿è‹Ðw¿øâÎý_úäwÚ¥Nµ¹:•1\RWþI¾ÈDf‰î/©ô?9MIÕÓ¦NäîèÃÔÜÁŸÒd£ñ•½œ˜ø¦,1óñ´ütêV|¾7+İòÁâJ­Â@8wFoG; ëx¸.)Q}òø»ý×Ï^}õôÅ£ÿ<Ú?xuøðù£ÇŸÝ[_ß®.2Ûè1–•\|¡+_bÅRðÒÑ 7Í"Ý£’†ýw›lŸ5úÒmÉ£Ï^>}|øøèéÁóÍ"èfÎBPU^I:Þb£s"Õ5§Â 9x~pxôÝæ-©°ÂµsÜJ­7RÔ×>)ºÙÓÚM[ðýÆ-PɈd+£¾ÒUÌThI¬Tt&—¢¨Á- 98úö`ÿðÉÆ­ˆ1ZÊ®Jt:T‰n±+B;ÚëÖVé Zñì`ÿéæ²¾ª¢+¢YªTIeµ¯d–'+7hÁ‹¯¿~õøpË‘PBóJ–È„p¦ŠEÁ]¨÷Eƒd¸W·£SÿïÿWùÇ›bŠ7ëÿsëÿ”€ÔÙõÛºîÛÐý?ÉÔ\ý7eññÍúÿïSÿm¯I@»^ÞmúÁÊúR×ËKÑòƵúVÃøòÂG²7Óå8zntÖt]«!¥ïV”´A—„Ø›RMÿë$Ïß îãPý½ýÝ迼ÑÿßKÿiþ•wœ~0Pÿ1šÓûâzu8!,鶨Änÿaò¦7ã'Íÿ‘”ÿc¸¸ÑÿOÒl¥™áÉø’KRÄ‚¯œ ŽÆWç7ò'Îÿk®úÕT`þkcæü¿eÆÞèÿïåÿ»õ]'2°,~n%;¸^²x&dsDarÿÔ(ú““àã»62hi„®ª‹ «Ô ®>remD]@™™Yå?«âÿéÈT>ßžlžÿk Ó7úÿ)þ™¨Ú”Ò•–®™ÒÒ±Jé²*Åù§õÿseÀ?Vü/¸±Ýü_NüŸñ›øÿÓøÿ›üß?VþïÑØ};zUëàˆrÂn²‚o²‚o²‚o²‚o²‚o²‚7ȉÛ6 ø&îwˇ[HÁ·Ì‹k H;½_×z>c®ùÝŒ‚4Ý[  ÄL.äáù~æÍl]åÁ?ΦËQN^ídHüwkéì — ÿæ}£°ßÂæZ…'+Tu|ÑdÓ5Ö¹óÜéÙ­4¯|"ÿ#>éØjP¡Vƒ Õí>v~‘ábAüõ¸À¢–Ròâð…8zrÔf2j‹^Ó=¸-Mvã¯i‹YÓ³Í`Û5 vƒÁnÆ:žŸ\éÿ›õ®ZÓjyCÞåŸ<»@´S/N'ŽzÏŒ//ÀT`–àÏ¡Ÿÿëêìòþ£æ¯é ÿØT·¦©nð˜x—ÆI²Õ_.ÙR ×è±äJÁ‹Wb³^‰5 ƒ0ÑêUÊ£ÏO.ï§°ûöó7³)ع¦5rËÖŒï`ú÷Û4jY”jƒFMŒÑ£‡Ïž|õªvÁo2¼É‡ÛÅh>hþqg³v®1™RoÞÎoŸî=}ø_ßã}öÜÎf-Zc8¥Ù¼Eÿ|üÍ«ƒÏë‘kFIôlÉÀ–­±¾ÒnÞ²«ñIÎç·/ïàý£úgqû6þùš±;{#ޝÝpB×XfY}Ls·ÆÖJ·…¹Skl¨bš»ožËÍ žZcqÕp‹{Usœ‰ÆnÖˆ5VW‰MÙÍÔ 4º°»…J¨5¶WÉ(mjUji[cÕpƒØõ%mâ}­qXZl!ÊzÇÑò…Àz÷Ñ}ïóË@Ô5îGëèPõo¡·Y³ÐkŒµ¶›õh4íR÷Áxö¾YÛû[Ífô·½EÏ÷—Òåel2£æ<õÑdñ¸÷h³k2¿º·Ø¹ÿ{WÛÜÆ¤÷s~Å”ï‹íâ&x‰cWii­[[öJòíår)^-n$R!)ù´[û߯13g(rŠ´;SU‰ÉáL£ÑOw£ƒƒz=s˜ÙxcÒš<,¼îZkrT õk³³(B˜‹ ò™¹²uøXæÛŽ/Ÿ‹zÈ[‡……£dct¬o‘òC÷èEN±P>ç³ámæ— ŠíÁpiÊ3ƒo ?êß„QýJožéÙۖ醯 ¤' Ä• R&s$K5&¬Zmîc¥()±Ò‚æè.[î³sY©XÀ‹LþDèžÆ¸G0Þná¢øïìl<¿<ÙVЊøOHt¯þ>ïâ¿]ýÏWXÿÓpµîJ€v%@» ] ЮhW´+újJ€–D៹è.Ù èsð,[!q:­%JCÕ‡;i®'ÃK÷Òî2·É¿±ÿ\FcEÖš´båOA´ši*ö+‘¾¢×Ä>JB-„»²(HI£“Êp%©aµW›ÌÝoŠmSíî=ðºöÿu[:ýoUþÏ'hîü?*ånÿ¿]þÿ•çÿåvË®Ìú‹ãÃ(Mõîòÿ]þ¿Ëÿwùÿ.ÿßåÿ»üÿÿqþߌ·›ô¯//Á£5·ç¨Ë$ÿx’ç‘Oûƒlô°g{dz;ç..ºùÆŒf÷6NW4/æÁÉ’Xmcz¢qTØéMv#'/ F«YÈÊëòÑòžì¨G=°(±¯Ò˜Ô©;UÕeЮ'†ÓùÕ÷Âà•}ó¨,Ⱥ¹ë¥i…@«Ÿ«jãZíÝ_LßÀ§q‚Î;U?¬¹óá FNPÛâÃÈ\—³•ê|¿`fH,9T.-oH…3)›¯bãÊ0ë‘eo‡#h½ŒeÀ‘\š+PüY¸pFêG¦¯ö¿»›ËI«ïæ÷UnÜÞÞ˜yöCÞZ·ZÑÚ ¦‡»Ìï›,«³UøÝù +Á¶‹b%„ª¹Ô¡m×uY!Ty—´Ô­4gžT°ƒ8Ñ SÈ9xþ(Íדé=FÃë«©òÜMìÍ{Ãò¤¯©K<'/Êø­ŠÞíÁíýI¸üÞ(αt‘̵ Üâè…²"8ˆZ×Ý=uO½†05‰BXwŠt7õ×*_xv`N[‰ùÚÁO«Ùû÷X8n·j‡“ɰš6\C€>ì'K0 ë“4{ö¸¾Ð+J¡Á?ðà“ªæÿû±˜ÞúüùÑûׯŸÿ,®ÀÇLâãô`í)!{ã2Ïÿ¡Íê->žAÞ¡Ü QVük±äÇ!m^9ùú²?™>ú¨¥"MA-ÅYFN–ÚSL­× ‡¥Ç´ñx›8g´µ}œo†}¿ëO‡rÂëJ}3„•£(8+¨ [xĸ -ÇagÌv^ÙÖæ¿|µÿò/gÇû'ï_Ÿ–ÈVÅOŠ»¿ûØB\ Ùñ¼˜Þü¬HpÊ @O¦úxôäY|ë‰tø,_ iÒ «ŒPQ ,¸qŠâ(mH·_F[›Ãç†×ƒÉ0–È™ÑÈÜ.0ÅÇi–hëß‹ïŠú{}ágôË“'+QZWrÙ(ÕSŸ|o')¥è™Êê1si¨—˜9g¬Ö`l5ÐuÆB$a›ª“ÑVyÔè‚`{\Nu¸óëÁ¯u„]~.ó«§T²Wý³2v,I ÂǤoÅãä.ÂàÃä|µþ¬+¾M¬œj©qRDIó"ð((©A„“Û„*£­/ ÕÙÁÏ#Ö+Ò‹âišå^ÞºÝ=nƒÚL" Þ*DkÖiç”`Òn½Œ¶z)ìÙ >êÃÛ µ•âò¶ü²¯ue¸ ^)¯£Ð*bë£ãVæšF¥ŒÛÄ+£­íâUF¬Ÿ­u%¸‘ot30Þ>˜[¿…I—Ûh±äj«¾qu[ ­äˆ6E B(ãÌÉ=½ºrR¡W¬ÛU¿|Wá×”å&¸!ª¸¤VFFµ \iÈt·$PŒ˜F~›¸e´µMÜ a7áÒŒ~ £ Ájhêû^ñÙ°\W¾›`© B95ç·‘¦†s‚¥Æ[¾M,3Úšb¹yÐQa˜âí ÇëÁî ¾„Ñ­a]Ál‚AšPååD "˜/ÖA…( ¾Üájk d´Õ$V“´w/¶"ÞÅñ«YWX£ ¶ áH½Ã†Ï ×Äb£Á+: Z£¥Gž¬ X!¯]4Zˆ­^«ÛÚ&î5Ÿöê]hÆÈ¸¦Ô7š$Õ^*n,wX;Å!ÊÕ^{ê¢bN°¸Õ„.£­m!|•Ö}~£Î˜]]Sä›À &q† c#%1FL y«¬¦Ò’m›ÑÖÖàÍÉÔ7]×Ü& 9Ï0Õ1Fé…,rÌ@5 71Hh¶êe3Úú"S˜—æ×pV…¹aêºRÛl’Y*J ea9¥¢ŠÌ㨡uÁx»“Ì+Ûúr¼=x9›xùØ÷ir9}¬ÖçÖÍ7çøî¹ûDëO¿MümúÛo4gVz=6›AEä§Œ1¬!ª’Æ€~Yn½’muV:£­/÷Éø$ìï]Ì?¿Žq&¸½úFZß2°\W¾›` ¡“÷(Dk(e‘Z•“"`Š=VoõU^F[[Ï~»6ƒIÿå„ÙYùRµ‚ª¼åþÅÓòŸÕ­+´F?FqL:å½'ÒHÊ=×ʤED¢­”ÑÖ—ó­M¼ê©Ñá`<)ºÁ¬]hUu1j®)íf FTgäLâc´\Åà uÁ ºÕYƒÕm%d—ÊrS›4IÃ×V¥ßª ‰Œy€5¥»QaCŒ*MÖrDÁ$¨ÓÂ`&Tðm5XÝÖ˜?­–˜|ŠÐ§W¬0óòλmJv6N7¿ÎýJå¦GñŸ#|î¡|²Œ4oMÅÞĈ0K¥i$¢"†kBç4m}‹<0°ÝEE+ÛÚÖ[½#èÞ*gWí±yP®÷/¡š]¨ðJ«Ã§*^½ŸJWªµÅŸ(Å_ßÝ*·VuM‰g£Äfõ"7 ñ·ò, *dÌÑy‚‘ÕÔ0' D|ÒÇ™“ªÆ±j׿¿ÛÿóÙ›½ã¿ìŸ”ºõó/+ñ\·?›Ø²ÇDQ*Žcê ”Y…H,MÖÊ d·ÑÛن܎öÞìgËnÝþ¬k ß4ª+&¦6PU¯Õ_ª2Ä%úþcySðÅ¡*+ãcÐï¥Õ[þbÖÅrÑgÚòå¼<ÇO^앟ø>þàý‹r“˜rçÒf\$o6 ƒTU{d&çfPœÀׄ‹ÆöªðhêŸOûrÜo*V ½î»0HÓÐÍ–¦ÅigšQÅx'Í(<+n‡×…ƒGÁ÷S–½ž„Tfmþ;hûrèûñ6]HG+ŽÊmˆ'at9®NÍşޯÚ¯«ƒ/Šw×ö¢ïŠš‘úw•®ŒÏ«ºáôÔAbâ¤f¢8ñ2¬xV„>üÑ ¸—Ô/2m§¦Ö+€©Çf’øÃ–'Àìm‘ªzïžû6WZKÅ4“FZ[P²p>¼JµèÐx?…b…MGŒ†x}Ñ+àÎâo‡§¯Þ¾?-öŽ~*þ¶w|¼wtúÓ3¸‡_ÃM¨èô/¯.ú@öcZ=˜Ü¦.¾Ù?~ù îßûÓáëÃÓŸR/OöONŠƒ·ÇÅ^ñnïøôðåû×{ÇÅ»÷ÇïÞžì[œ„‰A,¡¥µR÷×—ÏO 'cèÇ…/ÎÍM}q¡“ö55¾º]C.†ƒ¥PªºþZæåÿÁ"ÚrhŸny½LQzÅáÀ}Û+8†[Ìà׋~²¸ô#?¸G½âOÃñ$Ýþf¯@àeÐ1E¸x²W4EPÕx-qÓñ­ø±yl|í GBž­L'®¤öòî]½õÏ*’çÇ÷j+iåpÚ½`ö¥Ú¯`þÞ™ÇZÌ»îÚkÏÈ}7£7·WÀ›å™CßÀhp8èOú€; ×áûr×£Ìí¸žwœ:^2°òó“4—ß:iµWÌýeœ„^mæÕEf5‘½wïÞ¶)lص¿6²¯¢âƒ«‰¼‚åÒ,{>³ki:mµoÓ)ß‘¯&²?ðÉ õ/͇wØî¿º÷7ûf®Î~±©g€_ÚÔgqÓÞß¶^2zr £^[Êë/ß¾y³Ôú¥¼žŒ®·šì_ßÃH{ø_{§‡ozÇ_½?8x³wtl©ðtONNö÷^í½îÍ=¿ÿöp[:¸Ûrï!‡³57¶˜îæ°;–íwtþSÎ}éL¨ÜóàÖ;ÿþÄ(Ûíÿ÷9þ§Žz)´Î–už PH«Ìäãî„´¯ïü·zK»Òƒ²oÿ>þÄûøonÿO&äÎþ?ËßG{ÿqz¼¿xôãþ²âù7ÿüæng—zg:\ÿ›AT ¢b!2')·¦1ªŒdB=úþgÒC=Òê‡~é- ToS݇{ºã¦ìæ€Ì²ÖZÛ-ltîР»tÜŒa‰g)¨P$XƵEŒ[Á±!ÑÅ™–]”Òþ”!ÇU31Ø0qRD¦¢E‰wQ‡­¨á&8¨‘Î3§|ŠÒhBnQ]”(t/R¬ñÆ›¨ˆçžsÌ×Ì:ßê]§˜ÀM Aé ’Ü)KIì¢W˜˜&¡N)1ÇtÐ1„v +ªµäLžKÖ$D:¥Ä. B2CÀ YÊ]Úí€)U-J²›’ç q£†Þ!,¶ÌêhŒ¦š©VçH§˜¸U(&üÒK|¢R8J°v¡`[”h%!%×( …¸·‘3âŒæ"±’J7)QÜI PS4¬¥ „ï%q ùT¶(¡.Jƒ0¬•Zq—4 A…%ÜSExKà é¤$• ’pœ@N ¤TLEcB¢ ¼ò-JÝ<Τ£`ÇN[“Ö¦º3% h©a´¥á¼›Â2Íõ‘#Ú*Àt{NUØ-–T%óÂ3¾„z"eà„‰R3ŒkQê„Nc¡´çéè%í2Ñ€¬$d :Ü©N`À–õ±@À"¯’fC L»I©³s–RÁSɳ–ÒÍ8e ƒÌ@^¾mu]„aàF-÷‘å#Ø!‚¾¢ÀBËÉuú8ç¤É}HGœ7Ê!N½!8-"E´%$ÖEÉcPdJ(20(YêaзàÑÁß¡6p¸S+½FF΢Œl_c=gàÈSi?m{¹nžL(êÞ͵òÁšîoYo¡€,xpì ÆÜ2rrpÔê\§“ ;,x6ð»K‰”ÔÆƒ™x•m¹¦Nõ^ MÑ€æ€OÀˆd Pˆíq®S™"uð, Ž`Ø¡4ÐÒP´=8îä Üc*ÀbZ[ÎRcÊ<-'"r­tÛä:-%&8Z %¤ÞQYÃCHý£ÔrÛ2¹N+ÅE‹!V2 G’ºÄcÔ’yÛÎr¡©Ì…j‹u÷|½ˆ(‘Y¢(çëED%ÙE)3"ª(©.J™QE wQÊ ‰JJbÊ ‰JB¤SL,FðÇ ƒŽ°`82 äø‚"˜W«s]„2c«Š%ÝM)+¶*)Ñnžòb«Š'ÞE)3¶ªx¢”òb«Š颔[U½c”J+b¬g” ®Y ´“´µ(ÑNO¥Uõ–IˆÙ4 ¡.…8X ýl+Z·—XÙ–ö$Z —ÓˆÌá+'c*ul®_l£¶ŒEZ#ë GñÀ(„\†{^Úƒcví¶øFmAŸè® 9ÀSÚªâ•0Ò·ÛRµŽÄ Ÿw)Óžk[¦H™ãð[»-´Y[ÞcˆspÄ û‚†ˆ PÔiY[Åñœ ÅFmOÁ'€I¬ƒ×[ˆ8„ø”Ey»­n[ÎK¸*R–š™pUh§e&\¥NÔ23®’R§ ef\%¡Nuò+ŽEV8l1ÄßÀ¤·’ß’wg×2S·JHê–™ºU”:•)3u«”©›§¼Ô­¤Ô©K™©[ÅR§ÇÎLݪؠ“P^êVÉ»S+3S·ŠR'O™©[%¦N½ÌLÝJJ*™ºU,-¶¹…óÞ-q?¿Ãí_“(oj¼]ÿþçt¡õRÿÙ»Öæ¸m,û]¿‚ÓN­¤²xiG®Ê8ÎÆU™Äå8;³5€R{Z-Mw+¶'åÿ¾çòÕ`‹-¶œl>ìÚ,‰€‹‹{ÏIÜ6°¬¥ßz4~ðÖºrÓV¿þèÁ¢Q}3T}äÿ¨zÍ—ûõGOÆŒêgCÕG>aŽG¯êA×wë¾_ß­?úÙnÜþ€øGªŒê4?úQjÜýáÕ—CÕGŽ®Žª¨þèÑôqïïV=--–ý€îž)ÕÐüÑ3Áâæóúc‡UÅõ¤7z"u\ úØ‘+±ðšýj6n~@|£gUÄõTô%æ¸ÿ–côÐѨþÀì~j7?°tF¬Šêô~ô#½XzÍžåw?ÒžË ‡vçÖCïuíòÁÇÓmqJÄINdŽËÒ ž\6ê¬kWh}wÆ{«òòÁ÷Âåƒï-«n_¶  -Q<Óø` 5)°¨ÁèŠ~ûÕw÷g¼gÔÖ;§¹àJé±¼ÂÈ5½Ì‚KýÉR°ð ¡øo`^!`(”ÆêJiŸœ¶ß~6PgʪïîOy u´ r[ 8¹( ímî DÒX—ÏmÚ«¯ïÖßÝ¥ñžQ¾|°KãGÍïî’xM]>اð¹|°Oá=ŸÐEŠLÃv#¦O-ì;¢!ÇâA‘Ábúžö©‡W·àÆœ6ÞÒLåR2'R Œ½å>ã< ½éUGìZ·2Kuî€c>ÒŒaäˆÅ¹7Fð~ æSZ(À÷à7­õðxÒKû<`-°\J¶ß‚ø„tYÀ¯B… ƒGRàØÎ`4˜bñ¡•´;Åâ½ÐôòÁ‹÷âÐ6CË´¢„±õ6C|”ÀWÅt6]M×øQûTq{1â[˜‘Ì•¥r Á„,Á¨sÏáö‹Lù,t@ [»« GXGQÀéYW¦†d9’EX| K(计G‰˜º,# Go¢H‹+ƒ’´YhŠŸRZ&õ±¤)ÖéJŒv Ä(ÍÓ‚6ã]a³ÆŸW+XÁÀsøKC)Îs•e¼XÄ&( ·â–[`iõ®2£PZäJzÍ*-Á´%RÄÝèa@*bÁcå˜+®-d ¿űZŠLƒÊÕ&•<8„c§å›:á‰_`c€ð@¶ˆ°F&9+ +Àðƒ3ÓAT‘#LÅNZ¬QÑëP›"pw)=ÿá9,¢ (!€öæVEXb +S%QÒ‘‚#xX,P`ëÃm^-ôKaå0Na|žK$oõÍ‹ÒÂ5§q#,6†euîSÃë:^˜,åô.=.äóQDò¢uL ¦`ÒUM•˜Ê±;€¡Çm’y¬9ën¦X~Ž— ;´ï`̽0ˆËéý"[¤`“ÆEP­±S€IMFû—p¹ ¡þÁàájh©Àkr¾îÍý2F„¥°4`B”vX«pY)¹^x]Ñ1Ñ¡õÁ¨1ŠyÉà™àÆ †ؤˆ½²ëAå÷Â…Ìd)½@ëÁ±\!ÏéuzÐ&×±MÌ`\Πœ©ƒÊ#ì“"åœöš1ñˆñËu(r¯Š‚ÂB9´RP;‰Ç;‘Ñ÷ÚZ ;ÒÁܯ~%üE|†¶èi_ËrĹ%è\yÊÖ½‘Ã0ßÚ¹Ÿ…EϽŒ—¤‡Ea•ç9øEü%ôNk Ùd 6®¥Ír›†ôÑ,è}ý™"”C”©&[2x0k„ßÍ ÚI…Ä™µÏÓÒ•˜vˆ‹Ùm‹h_ÎËëX éH±GDrs RÀíÂúÂx\à©ÂyÓzöt›4"(„€†¢³6‚ÆT݈ŠB•:gÜjÌKœÀ¤ªô¦ÞHØ?ÙAñíP_ÝúiOj—²dϘˆ£àó¶0¥³GBPXÄp”Ý~ºO"1ž¤'aÔ‘Ãf¦9ÄŒ¢ÏGÒÖÔvx÷LÛ¦Ó;…d`0Œ…,JQ:ræ@‡àÃÀ`p[Iëûf.‚SÖL ÍtáÞËô/„Œ¢;ÐUÑÁ±à`új“òÇ…†»-K^fB[“uŒTß'çØdˆý`&@ÅáW —)íçÙê¹^vpéNp}\QH&9¿ƒi£gÕôiBýX¡†Ûm*2甇È]Ûà¸ÇtÀË!LÍ9ô·ówz›߀ ÕûäEÓ-_°®š n´Å:*:8±\ÉŒ.=Ç¥ Ƶ¡Mí,w)+%YwÏzµ¨Ž#еÔìVš"øBBËC¸¤Ý‡WôŒT9Øv ›ûT¡È…ל+ÃT1aEê¼*@ê F ÃÐ!ª]f4¥De‹È`)i_æˆ:•¤7>:D¾+"h”›¢WGéã"QÈ!гvi:ÄtWÄ ¾ü6Îc™Ã/\f%4¬”!uE‡ÈvEÌ-DÆ âiú„äS zq0Í‹ßcÓq‹¢-?,Wá*VŠl´ fÏ—,åJƒ–Ã5Ávù<PòК†¬÷¬f+š(5xS §3ÁÂñ[h˜[ÕÞ—²CS;€a9ä%=0à¾Xƒú¸]:“ô:źk»€ ‡øÙ„03 :N‘±/w%ÌV–îf£…ØÖÓj–;¯E¨£†sÍ×=cßûøtïó)8ŸÏÿéÿõaÞœ=»ü Nÿ=ÿKóÞù?œÎÿI•þ|þÏïñ¯=30Y]_\ÌÂM—ÓjËåÃÁl:ÿçÅÛý_ö:%¨°Ëœ%_t7Nìjµ8ØŸúýçu‘åíÕØL¥öí?¦*÷›Ë]±ö@ÄbÍ宨j1½¸‹ÍbÍåu£ wöÅAsµí.V¦e•B‡pO¦Ëƒý'?Ógaÿðìì V4&¿Ðé€m™Ë©T1is²¼¼~×\ŠÇîýs:Kð`ßÍ®—28Y„«ëŸCsõú&ÌC-ª7н#üw²¼-êãSXõ÷,Ì/V—ÇÙáã—N%¬P>&a† èõ6êZÛÛhQo{]ë:¼ïë-gè.ADÝKau»˜'¥E·Ÿî}ÜÛëTíöÆÛUøH7ayP)MquÆé‰Ÿ.`{®¡E+ÌñI{jotx7î•ÓÙ*,Ö“ú¤¹¾W}¡ßz­èßáÖì`Fÿßß`ÝåA[ù Q—JñfÐL:4ûdêO–7X3ûç¨Ð åiWpÚ¨ðôêbÿqW£“¥<<\—µMY»XÜ[–{öeÕÿǼí.÷§z M)if’ê·™ïJ4“õžñÁþ<ʵfO×7 èÐa¬v­ZVÝ9;Û©?u/’¨åÍþ´ýê‘ÊvëÑ/E¢…‘|Äÿ«ß7TqHS¾¹žyhÙÔ×zrzZ…îfS÷OŒbqýn¯ž9w»X`Q¾¾~×L!nï?F½§{u=;›QùebËUszÿ]˜ªÀY„v2ïW_Íf“ÕbRcUåÈÏûäu¸xñþæ`ÿm{÷ÿö7ÿøü‹ý£d2E 4}=Ÿ}H®çf¢h:S]º²+w™ÐQ­Õáµ_}óæÅëú x*|àì|•äÖeŠP^/Âa;èËéÌ¿®»L=o×d¼`ZKÐjsÕè0žV“Pw§œ.–+‚ Ãm›õœ¼ 4ÿí˯_~ÿŸ{µÒw-®—UZtŸ§6áff]Hüõ»9€©±âCR¥áhþ¤ãtÉ7S²9·?ÞØùÆü”Ó¹?˜ÐáÖ“F¿6Š·=œt:?éÛäI|£[ “h1ŒBW@íÁ•OÍä¯Sÿ3R– )Ëäï“nqªÙ&M­¶öÖKŠî7sòã·?ü¹ž”žhcaB¶‘¤Ѷ²nwkC¼µÐ,ÜÈ0jÖrCµ–µH¦Õl¬Çßês7üHÁWø7Õ«-È÷ªÕº«†,è·;ú³ÅÒnšÚ—ó˰€mmmdÉ=/N¦u“Ƭ6îõêb³@“«í¤6‡Tb¿+âRÇÅM¶X˜ÅÃmKUÅ‘ûòS0ûaÿh ÚÊéNcä~}Ÿ6ÔZE]Žqg¿^Å·Kà&õ¬$ÎÞ.Ã2y{{uCÙS0$Øð÷ïÙ]ž‡™Å4~Ž¢ÿoÅÿíWm/ÑÚtÚ÷ùùtîf»žùýéçÓù¿Fqó9þÿ=þ¥Ü” Ï}f¢5mezïS+>¯ÿë¿¿½Ü½yó¿´ÿG;›çã û¼þ_þáëž¿ùïW/šâäÕOüîåódr|zúgùüôôë7_'ùöÍŸ¾Kø KÞ,À §DØììôôÅ÷“$ξñNV‰7Þ¼>}OXœ*7¿¯¢š'~å)aMÕàû«Ù|y6Ãó<¯kWeÁçðã*¬lBeÿn§?ŸMž×;aÇo>Ü„I»/Vg¬+?¥ÌZ˰:ûéÍ7ÇÙätä/Ç?}uüüúêÆ®ˆÞE8/_œåë:uö‹:I÷°)÷u0¤ÉRÕXMW³¥IIªIíS»Üvë‡ÉW¯^>I¢UG9Ô°á—DÚ…/OkÔ½/ig¯ÉêWÑÁ ¢ecú0 ËËV“d©4 Ô­:}b|ç­ýÙÖW›|(oÿuNÞV9ë;»Uì?7èÕŽúÛdøM»¼Ëé¿Ã't¹éŒ§w•?¹öƒj>«ö}“¼ŽÂ5ë?LçÓÕkñøŠYqðáßõ»Ã“Ùµõõ¿­òLãþ°hÛL6;‰69­²ÖÔ «IbÓ¦ ªó × Œ(`³ýZo ¡Ð%]¤œ™õV^éWMÿ¡ŸÊ¨RW‹!VùnëZaFÉB¢‹³ ›Tß 4mþ†x¾\Õ½¡”ZI5ÊK’(}óþi%CJ°EMÜ,®ßBéª<¨“¶xx< %*±®êZI×µ¦^™ë¡Ë”šD§U&´ð–²ñNž‰u’79Ϫ†ë|AU2/JóÕä÷Â6P/ÇW)*Ì}R‡²Qž(º§CJúÖ§Mþ¥“B\È»lRd/Ú”H·³èê &gîŒ:µ)–â\JÕ€ŸýÉNçµ^Ù‹Ð¥v‹“8m`DŸr6¯e õk˜åvœ¶›ÍÍdkçÐOÂéaÓÇ5pmCo÷¡¯Ñ(ãt¿—ÕÓõÁªu¨xfû"=‘‹Êü7W³Ñ²Ü‚öÍ4ÌüNÃŒ’›ÁJô—ûrêÃ1ß üvz¼h­ZÒÞ]_šlJí˜Ìi+¨ÍëíÂåZ`q‘凹ë®þxÖÍLoùmÎVõ즰‹Îz_]ÿû˜²®/à Kú íå<$í³¨Á_Vo—NîjÔÜõë½ó_È-|o~ƒÑìo¡åûGûû‡O?öB;¶(ÿÜF‚Ã6Ÿj+‰VpõsÄI•a±ÖG7·Å1íMÉpÎ$­ºØg›í¡Wæ£ÝæÚý4‡4®FíT®µ kµˆ/ƒtc|~=›ÙâzQçëôS{±°WÕŽlÔ'i2,>‡KUZ^Ú}¬ÈÀÝé9?wh÷üÝ\ÖéåÐô¨r|P°+{ñöªÔ5p£IE×ïy…T¥¥«{Šr +ÝBJ°åM14.Y^ZRMzêY—Ÿ_û Úl}í°0^z¼LÖ#©æ¸Õµ¦£Ä†18ˆF¤Gê(“GRTôímáG-°g½Ì¡³·…Xà¯Ðµ•]\„UM=š¦«Ñž×…Ú´ƒÕ¤xïŒU‹ÜÈd3O'¼±nV©Ç:ñ9©B“Ô<Ê_¾-ïp—½¼·ªl¢½%q)ž$Ž/R[¯ ›©ÌW:žI–JM ö¬î“ÇoɇºC[4‚é|õ‰Ùæ¡Å¾Ê4:–^þ¡£Þ9½ü€„Uf­–…w^ÑË~}£Ë™á…-sIY£~C ïÐÖ¯“ð•}¿“€:è_#`:Ï娻€˜Òö?²ln¥ôѺ¶C)ÚœÛÌ9SÈ%J›DåOdÌœ9S£S‹\ŠÜŠjå’\Cª•.ˆb¿”kÚD¡%¥¶(ÿs¦hîM´}»Ÿ—š÷}ŸçyÏû>ïí¼Ïïy`ˆ‰,À1ø8Á!Ä`À\hÏVAÕÀMó”¼€£r¦°±M_D+؈Ïì˜f*tM[›ëKºy”Ï_„‰@,&âó>#0Êa„ò‰öìd}™î“ÝG.XþÞ~*5s[]åfþt4sŽëäNÝóŠÅžo ÂKŒ›up Ç×ÀíÓ/ôñÙzðÉ•×g u/G2ÌEÑy©MzËÙr”<íýøz–:*´„ÍOŸ+œö(2±‚½¯Ä>RC¸Þÿ:z²yþ ÿòøŸFe⢠Xýþ¿£âJô·Á˜îsDº>Ç€Þ<¸è¦rø2ÉtWS)Z ·,…l¹ò2rDPohd©Z€rr³ði‰Ê§‘ÀÁ*+¡€9ª‘Oׂ&U˜­„§c¨˜R ž©¼ŒŠÛX”¨´ˆþÍX#Åô ²ÖJ)Ô’‘O-ORR@)gÅԒߪ% Õ\@dª”…¨Dë’š)•E®Û¾JyPZ—$b#GÐÇ·’rˆ%_X*ΗÃVþT£d†Q0±8‹Éiq¢PN·Še*à*N.ËÜ‘ÜwrÜDZ+ôí#e9È–Q J3Y‰ÿ' !KÜ”®€s3‘8·¦·>b%ÅÎUÒ©„Ö¢ëÚ‰:|J”aÐR\’‰ƒPŠ•"‡\TP–VznIUÀCfúmI–V5É%üdT®)kÚB¢éUŸ¯,YKž¾bIJœ(³L¦ÞŠ”¹)·Ù·¨ÒþÞTàm©ŒO\åæ*áèH9õ‘ÌWPi)&Š¥8;NPLMf¶ÂŸ"WÂÜ—k%ðõ°áJ”0/Öš@ –JE;â¾¥Œ¨­‹±$µ5k¡•ë›UQ®,GÉ5Tv+çíïé)—ˆri'°Åµž‚LÙ:8ILQÒ¾îädˆ³ÀÝý½=Z ‰¾J6£!|öBÊNEl]%6§J1ÏçóÑíZKIIz2ÉâĬƒƒ»³)[¶ØóLoÊ`K·‚t¶8KÊÁoKIê›±¨€A³/´–Nà¤SÅ)›Uµ¥Œ„O4éT’²»«…ÚúOû¿{kÉÛ¬¶˜·Íþ¦ õù¿#>8Äqƒ.ÈÄ@ ãA(B9E†S¯ÿ/²™˜È…%F``&Œò&†àpa‹B˜yq¶Ãø§¼Þ‹”ÿùM=þ;Äþ—2! Þí·({¡èÜÔtÛ-¬šÑ¥A|>Ä@%8Œ¢ŒáÁ` §Â#òQI[‚f!2Æj B°)RžÜA‘Abù°¸|&B ˆ Á, !XN~§Ü2X0ŸCHÊ—y|i£Ô”ü ˜)ÊPR ‚<-ƒ";O·åú‚ªOÓ»î¦ Iá ,#CLY¨) #ŸR"÷ô÷õ%»•Û,YJÈ4%ÿ’s¿)ˆbfê ò+œÿ¹œ¥„Pö¥ÚTÿYû?ŠÍÿ ÿAj½zþÿ/ÍÿMýoæ.»|ÊQmÆqç±ÙÍÚ„KNyãyœ…~‚Å„—uY.ð[j4aX4½Ó x(: <ÍYJ]b/&„¾Ôe»ÐÇŸ<Áf2sãB'RqêPUŠaòk§\¶¯á ƤÄà òIü?bUyü·öù™ç?þ Õû¿ùPþüy€£|>Nî’È3 Ç˜Š® ³Ô翯øýÔÅÈ_4þA ü' ÿ³þ«ñŸ3üg˨Sã?ÕøO5þSÿTã?ÕøO5þSÿ”¿-ÿ‡â?•ns>ÿù·ÿ¡ Æçpq.€`ˆ  ¸(Ð<B0.Ì¥‚<·# ÿ£"5†ªð¬~ÍUQØA<ÂokQ4¢îQô„T¦ç‡¨Jøð›6RT㚌æ Fµnj«â| †Œ`òq±‡@a8 LŸÉ'ÐöTRdQJJã>©×5j½6Ô< ‚µ­ ÛªFT%$ÔÈÀØß—kn¢ª2µµƒ¿D™ˆÁÁã|€ 3… Lƒ‚¢8̃ÚS™TÕÊÔzm(ðœ ÊÔ¶&l«2Q•£Lš’sÊ:ÕÖ~þ@*F1“c)`Á,…qÁ"\râ´§N© «uªõÚ4ŸYÙÔQFÅɪmÍÙýšB¹fðæxŠ”¬eÖ"šôŒ',&„fäVô’ÜrøøûQç‰bÍO¤òRÙVíøÛá€E&(£¤¿«´O£®í|}ü…8!þTÂÌý«A K#;ÄOj´pì?"? ÜÚý/”¾ÿAADíÿ·C>"èŠú[ L½›h«B`U õb[έ€•á¼DHnTaÝj¤Ú¬ÿçPrí?p¶/57µçÐPfÿKv©Tü/*4¶züwÄgƒƒ½u¯îý©U¤×«äOMòß`Í®äÿ:«Ø½h4 )Vã:UíÉóè3]/ûÆžô+WM1Š8¬íµËˆì³Þƒ#»–œÞ:Ãé1Ò&ÍØy@"7ò˜¸fcH˜m?³3Æ“Nyé< «w¯´õúÑqøÄÝÆkÊß >¤©[ÓÓèqacõ5Â뼯Ό†ÝÞ/{ÛoÄfõ~µ"ü·½´q¼îùÌ×íYä>¿ömÁñn´}Aõ]NÕ\{çîʈ̨’—ë5®ß¿¥=9m¸N>b™[án²êCÝê!;ç^œ-kËí>ÎíÝCÁƒÞõÉ·<ܾëÚåÈ£Š¹:噉wMÚãüdÏâ‘–“VUÓ>),ž0wíl£¾/Š^ [œFՎyëR ±—„ßÏO=¥2Ó"×N^»À;u&ó-çû)ë:™TVûáÍå¾·ëi)»lBý¦Ì<7³´¶à=—ÓÞŸ³vÂèšø4—÷‡è½õA½<¬¤±¾ØªGÔÐ+šŒˆÄáÙˆåó„ä?§j ï³s·^ÒY·„5Ë—žê¦eZÛónëÝ.ÿO䣠çttäð”A´qÝë­Ëbúo»¬\v%ažÅëG[·›ÁšùBz{FÊù¬qÉ>SÎý1ŒÒÍ)“ì­~™0ÚJ§ãñT(n˜ óÉÕO` Pæã(Æa`(ÌAšðª¶ÿÀ :þc‡|!”ÁCœ€QãáÆÂ‡© ߀z„|­öŸàºñþA&*íÿ‰*®ÿjû¿¯ÏþvjÃ?µáŸÚðOmø§6üSþ© ÿÔ†’ûñ¦ÁŸ‚}MÇEz *Ð.!(F*†výÜÒÄT÷J¥µ%„ƒ˜'ª0×fGT28Z†)S¾A‘í Àd°0 ,ÉxÆáÂ`Leµ§í‰ ²¾ÌÁºêÎÕÛúØ_dÞC Èù8‹ E€Î!0ŒðQ„Á…³]Í{Z—¥Rx±á5VôûÅ §dBHuŒÁpmÝä¥-öÏp}/ší¤ ZšÖÁ¯Ä†¥Ågžè¹ÕF+êOÇá¿¥Ý8®ÀÏðÿÇDÔ÷?Sm”‡3˜<”G øäÂA,>J`ÄùLˆ¯!_ßø—ë£YæÄÓ^÷? L)ÿ ©íÿþKö?n“¿gŠìÊ—DÁä®Ü­­h¨?û2DÐÈžYE?¿¿t®³£å‹;]ÌJòÎåš%kò¿óÞIpCc7s]Œ‚KÝíA&¼}»©u×>î[í²kª!w‹`ò=ý8Á®³¥Y¡ôM É~úݬæáÇòVÎÎ0­yúhÑ׬§)7Òsv¿bí ÑÜ fë{ÄwîZºŠü­²Û eëãU¯DRÃí“fY|÷Ì÷EçoµJ]ݹ¾çê×ÞÞ޳ίÌ{Ö-Îiccû¡#Ft¦gL¬ï·ÁjPþ4GsóÆÂìâ»Å—ôq¯[Ããlc³_‰˜îì¼âÝ›ßß×½Ò·\9Z£sçEÏò Ï,]º4'/o¢··Yè ‹uÐM]Ï8=5O$||Ž;ÏKu× haùÍïyñû«–—ã¼(œã“w¾þœœ楻.U[Ο»f›GØìõÙÒMK«ë*­³ ~CýkÌ¿BOkðè£þߤÔrõúö-‹?~NÃá'?ÇÀ_¡ð+wxüôé©3¡foÝp|md¤†ašyÉ))à‚ã’t_ë§ý7‚ÓÐÆ“ùþCJú_eÍÝì æuáŽÓ§±Œ×…szÖ8xà@o[žs&NœXPPPîdm5tôèööö /Î.»´i¿ƒ1­ 1?,,l=ùéÑ‚áN´Â¢Ӌ†;v,¨±¤¤$UwÛŒ¸‹ÇœãK««µ<<<®îFµ…éçÍ›çÒðÛ(Ký¶Ù´˺qC[KK«(Å-ìæ‡d"¯´¼\ÓÒÒràØå³âïoè3àåô¶‰ñg]Ý÷ffö³îÄüYY³÷ö‘i¨þ’ò›û·Úƾxù2ëÜŠw»æéãv56a‡§íµ'ók’ëÿól¢¡¡á„ÙFÓ'M ~±”¶*)!##:<"BPQçr"õðõÜŸG ®î#ÃÃ'˜˜˜ ü«ú7nÔ½÷m×®3ììz:;994¸®¨.aõ7÷3ž=kÖÍ£2Æífz()™›hîQ˜°_pûðô™3ûv3‰s¡| ú wýñøtˆæBvùÏQQ·Ozçdg¯ ™y|ÞÔN:EFGÛÅÅÅ!+ß$.þå—_R½Š™¹yy§Y6DÎuuµ@¿ KI¯í„ד½÷lÓ¨s½Ë¼<-æ$~X¹§ÈÞÊýÉ JKN>•5aÿhNÖ7Ë=Û“¶sLJÞ<}Zét9/o“®®nÐË4;9—/[»³—¸âçoþ¶€áš¹ìçÂÄ9Ö'o¡Ÿ˜ewâĉ¬el6›¬CŸÜÚÚÚÇ••Åî?ÞNH0¥ÓÅÅéÖÕ×3CÎ{[ (z/c)|…å»#.[ý¬ÞO­Ú;ç”÷tr( þõ¯ï°xn2£Ææà51?Û­×bO²ìµ=jûöŠ÷=Òþvvv6F݈v“u7X¹³oóA<4#.u{Õý³Q¤ê%[Ñ[ u»‘<÷DĹ$z'ÙÓ·!dÎ:4lê3˜enžiâXNvß þŽïžf÷ÐÓ×·™6æµÕp&xBü¦ªéOíØËž&¸ž=ùïKFëµUDÖÎ;wëöíF‘ŽŽŽ¿—•Ñ#/qExE™Î^ôM"ñèrØóá•eek œzë„hÆÆÆž^^'Üí­ î:ŸMO\ÚóKÚ¹}ûhŧ|¬ííµøWw¬NJJÒÚr>®Ƴ{fÔfÀ|Ÿô<éy÷À«“Pvхƒႀl†££Ž®îØíº‰I·[·n…„†z3O¤9ÛØhöýÁ%(59û=9Þöïß?µpÔÈ‘}«KÒ5µ´²· µÞºmÛêMýF•‘Ílmcâ0AôtttÈÙã×k»Q=½ -Pæ=6þÇö«Ñ¬>=ú™Y-X0‚œwú—Ä@…¦ÏïŸíWWW—sãÆ3EG‡–ùØ.ZnÞ¼Ù *¯öF`cšÃôéûoŸ³‹&ÆÞxTóÄ>ÂÌìðÝ·ˆøø‘égÎä'ÌN9zèPÐû††`óÄ»Ï ¶]á¥.ü}‚ÐÏo˜µµuwmíáés¸¿+-OÎ 7oîI§“Ê’º²aYÿÑÀ”ØwŽ™4yr÷ª !…¬f'EGGçäænÌÊÊ:š‘‘q«±"êÖÕ‚òµÉöï‹ý1*<3s Yé[§®üñÉ“'2‡¬üsuýÛšiFFFkj¦ Ÿ£WHÎj‡¹tú½7í»wïn;{Ö¢ªèÄÚÃö{l‡Z‡z¦ºþ°+ |Óû⛣ïìvzk Û3000 €F#'pQÙÅ®·3ï÷Ð-Wÿ'Íe…+Û¡G¦íÍ&•j:¹šDG´š<™KNõZ›Àì3{¼#ì²òK—¦û[Ž?¾^ëDñ†פ¥1–¯XzEÅÅäbbûC®I§ðC54—‘ÆÆ!G*Ìw¤§³_íýPnÑ“\:ßœ¹¶Íß :/‚rýºWl÷ *œíô[ÿÈûq“ïê’[ítq\]†°ÛÚ•<²øÜŒësô+˰Éó·!Ù¢{äƒéûLSú¿…ÿe|-râÌ£VUÏtz^¢»|“_³Ê¢¶- *ôÓ»<MT .¹ÀŠçç"Â~7|·?„>>>°±Ve i±BG²A4ßÍ—*6l#ÿ@¯(áêÊýUí EJå^Ì"qWrN*JoÙyï×Ý[ãéº3-Â0ÅÙñ¼A¼ÇÉå?Ib›í°âàÞßØãø½ús/”Là°$­`,¼°õÉ[\¨í&­Bô¨¢ëûÐ÷W¾(ÅÂt¿“_†±°¤Q?k¤ KËxä+£W3';C.üîàÀ  8ãö8`¿¥„‰eªõ¼ÃˆxûêY@‰®;Z@’¸¼Í®¦-3Œ§+ÍÙ¸¹{:èÂ]Zhñæó>{ =þ;V1“bf[ÿ—õî9j¶ïêG²-ذ}Ë¢\Å}àpMõã&y°S‰³¤ñ9Vå3ãm)y¸nir<ÆÐc[W`¯L}Ãú ¯ÉÔ{)“ž.?˜)ØŒçz€ê¨‘IYê>’`Ú®á-,ó°(2Ï“hçí3ûÁ š$D¥ !£o2åQ®éæÅyªýÜõ×¶D¥{ ÚÞ©±Ù„1±©]‡Îœ'žsèg —ö|Q®l"æÅajO¸›©$ý$èŽð UÞ«x%£ÓiNÄ =‘}„¡XRs¡H|¡GnÍ _l/Ucc¼]Ö&ãÏY^po'Óª›|Ê%44H¸ó Ÿü[‹NÄ\dM„ëCëfDEL/¸ù„+xøÌk£ ™â}ÂÑœæQ®dD÷M±†"ßCŠ^ì^N0°,ñüÂíݽŒ®°ø{ëA•'\@pù7™ÞßêñËýZccÃíKeÿ§üͦ÷«—I£®¹žóóóqii%ûl:XÆffÁQ事™ån*sÚTçj\üŠÚç9× qöà3ÄZû]ùõ-?ñ ’È'=ë<+g_E ›”4ª¹Yð­™&¦ˆe›vK§Ÿ/ÈÞÃõ¿æœKz‘ csY“UÈчhZ##B—…CÕRê{½ò³÷í§/ÐNÈL¨ ¶¾&ÕgPGÏZ#øîƒóùþá›¶&¾Ûeý"³ÐÖNßü?7_¯0ãN>+™ ¾Õ î³X9L‰É/РÙ|õ r8aùªUâÕT<Ú¦ñòLÿy}åp4¥«„©$Çü¶"–Ø*ò¡Û‰­]&„8ŒÐÓ"}ªÕÙõ …7QGH$ þ¢£ÈüöÛéÍ›`à›X,ßëŽÀ#ä0C>çææ›€`òϵöÐÐÐòÊÊ_žB½3]?tcÙµ¯ÅEƒÉ(‚#ô®_S›e?ƒ‡í.¶µI^mæa%&$ Cä¿3o/ë# ˆê..Ši‰€¹–ª§%2kÿJf7e¤£ ÓkÈé#||ºj,tô¯ÉÉ„…ùù_®šnà”¿²¼ü Ç[û©††]W¹$Gs³w““•ýbÜú“ı™êÄPûµ9¬Úê'5+kžýlmX<œƒ–OðððŒüü)€™Xß\êî j=[kŸ”$“áwõ`~~õA½ª´ÓsW//Å ‘´Ÿã!é>+%™;¡Š˜Ÿ!~óoøjÔÔKöëqKÉØ‹¹YHáyHHˆ„gg0 ¢ØÅYÕ^_wwp`` £¨¨až€AÂû÷” eúMÒ"""×;Ä×!YZE[ÛãEÕóÄÜ6"zLÞEGãO\_]©¤«ÄÄÆ2.J_Û>I±07ÇÁQUTŒ.žœ¬¿qãÿ –öý‡8él냇/Lg*Á3sÃ8¸¸¾’ð:p H¿æKqæO1˜û$ÿРUœ nSÍS©¦µËËpD!·+ +ïââiP^^ž„6i¢{/¾ß Š ÄIQãÌLŽqM*( h0•˜{ŸïÑ|’ù4N–˜–(BJ‚8ZzÓ¬P«ˆ¤øƒ,-ÆJÙì³'O"À3ÉÄÄÄp™™Z%<Ïd@ï¦þìsŽÙê!‚ðØ´íâg$¥”.œ t´|<ÑbèÓs:::@‚˸-lWl"è³CÐâ³³iøÔÀ|ö¯IÏ‚Õø’Bdnf†­º›ðûêtÇú`©ƒ6Q®À°ÍïÑ“jêøÁõj³~\jfffT4´lय‹ ¥9Gg°PC?>Ó—;;;[ÛÜ”Yô»fIIME;õ»X~¸½Ø&š’œü¾­M4MÈSMG[]]²H»Œž‚‚"^–ú:…ï ΓD¹’ 0iù¼‰öFFbA±&2fuYn…¬Çˆ™ê ^hŸÏeïoæýÈ£aÎL²Úü!ï3\ô@ñ–§ÆÇïX‰K@Ç×¶¶¦/á8'.@,= ‹"ÜYHHëïïOæs6 ÚZØûz7‚g¯AäªA½éÿ§_¬–ù6s fSƒôãæ§ÛkÏnܲ¬½Ûv)D„ÌÏŸ?Gað,Í:¶õ|‹£9ÜkÚ7%!˜¢€TP}¶Ë‘‚îææFvV]¶W(ÔD à…¬ý¥«ó¼Î¤'?ß(”4,Õ¿8UÎÔ`Â!"оt[°Øm4˜j«íù7í·s‹ªú¡o㿾eK,Ò²©ž!$Žä‹« ”Ë Œ‹Ã©¬ªªù(Ê×Öj>øY^d4´QÍ´øxj…Y::ÿöS‹¤ÚMªÕ _¨ŠNÖé®uùð ™òÙ-7Ãi ÄB]5{ ŒŒ²‹Tn‚À‡–×Ö†–•±†b y{{K=¾žèåv¾àÕ203Î×›×ù¥ù¼3süªxÌwוtZZZS-Þ¼LÌÌCÄ%®Ci†r䓨/ˆˆÐ)7‚³þ|É&¹Ÿ%Ävä—_ B³ÍõM®ûR‘?¿yò¦ËTg²s´¹X樆ðþˆ} “<* WáÄmrêLäòAþ“¯<&²»Ñ”ìcºèêid‹{ÊØCãªgo1f2ÝvgBÖ“ºz{‘ `’ðD=Øz![&–¨?B„lF°¬ìlllØ—³E;»§ZÅ:oú ×ýÝy›±‰IÖÈЖڞ%ãû“Eê¯~†ð9 #Îg·~llæ´ÊÝÛûNe±üÒ{1Ò£R+Bd/K)¥çob›ìýŸØù~}ŸÄHŪ%îløàÒ7щëúF—õ„ÄvÞìºY_e€ëýaǘzD4N”‚—û‘y£ú¤ÕûÃ6µG ƒlGW˜a5Q#)•éCÃÚï~]™LÁ[Î]5"GnH–üËvÐÑ6c”Èb»JkaF~¿X¦Xl¡4dHëbï·—þ³•û… ²º7¬]·Ç¶"/ŸÐÌQ÷Ë} +»€­úÇ—´J—tƒQ æº™ §nFM}©‚Sº;Ö,‹.Õ©š÷ ûý ÷‘²¢¬}4eýe†¼Q5¯*ÆÓ·ÈÄšõR^Æás#[œÚ¶xpíYÀØ’P=WÒÝ‹ ~VÖ.úÇ9³lñeK‘f¢!‚úCÓV£´%ÿÄbmœT⥊÷"„„¾ß'®l[ž«Ä3•µ hcÈÚÍÜ+w΄F`ªSO¸3禢C‘°XÚ îçlÿ¬I…Öôº%wˆ~´(c>¨ñÓlo­ôûBq†Ð ~Q¾/y—~âIJ’„•7¹SSm¦¾[jýoºB1.®vÊNÉv £??À¬~ëþÃ…U‹r¹ÊgNXó5Ã<ž‘̶`£oY*³ÒÇU¿O¤G¸ørfbË9¹/¯O½-ãx˜Q)ˆ®ˆAdð-ŽáIVÑl£)`ò*E$ü±?P¾ÃÜ[—t¾_ç;v¦&àâòbA’¨©Îåõë.`IIžîsPÞ®RÜ[9›Ú›[Y…c‰Þ`ß^Úº’¼¬ÀÍ­5ù¶†ý.-ŸœtÚ+¦*4îë+­„ÖWD˜lqÔ_e ¾¤eð²cý·p* I¤¶çƒ‘ë?’dÚèx€è‹‡>°:pÂõtÔ,&•בÇcO°ñ×xsû-s“:ÆåíL÷5%Üàþ½ß]Tˆ¨ã™5Q‹lHf„ø®çÂ"^ùW%ŽÚÃø³ßÇÞXñ[#¢÷€Žê0ð9¯ .xï·H°Nú´aµ•”†R,4ã±Èçæ—[S‡ÿDõóÓ¢4‡Ö²Â–mÄ›Ó9ìpôO"'Êü¯ÐñŠDŸ5ÆÏŸ^]{½±ßì£'ÅÞËf„;op™idu=4²ã"à,îW°\£¥“-üœüËŠuPjš/9կיn,_Qm[T¢­)J3(M³à løÀîs÷ýÜþŸÌ0‡˜¤ýûOB‹˜Fý—öV&'xבﵳ¨óˆ+Mð£h‘†èÕŸ§ Ô­IØÐÜÑÍF„¬}??¯Ü8P~hZ,ÃÆÁpŽ˜ÊS§ÍÌÅØ¤í­]ô¥¾,0K¥ðXŠ„Å@„­¼ÿŒ©iÛ›žý÷ëÄM€å¯wZ†/,,\Z] â½ì¸PaÚgSSQ] ðM9€ß:ººµJÞßÖ]|î.7¡éÜP¨çÕ^ãÞ("²£›upÛZÓß N§Œ©ÂÌOCÆHÐ5¼¬@µZî »&rÑØs Ëè)ÇŒ|Q¢‰¬“³s‡à~3pàŸ…'¾kÊhßœãDf 7É*êUEb„Ùàþ^ͳ ËäbßÿMPP°X·5 CP^ö× ˆPñðh•–”°ØÙÛ>444”’’Zº¹<˜´.9:r)9ÚÍ«x³¥æáéÙ13C+rŨUú*ÂÐÿ¶Fñvœu$M°NÑYä)5(F $|gd”,Á²S.> Ó6ôŧŽ;£¨²ê,*kñBBR)Ð/(-íÍUL=ø%ÏjzÇf~>¦b-;‹€v û’©Â|GJJZîï—Y¬Vp°•—AÍÇG(..®Sç@VXTÄnÚ‹þOÙ>Uaê|wã aKõ<¥`(OÚìgyš/V"“ù_ÓûÝžj—¸i—ô,Þñ*$³Á¤ÛíØv;ñçîçõ^Â,€F—–—©ŠŠŠ¨’©G.oú’Ä¿zþ)ÐKº¹ñðØM,w…íhlF²¶ŠNÜ`ÓóœžË8<죠&3ô»Ì)¡§G:Þ‘Ä:`†ÆüÁÄ44 gˆÆZæ¯$òyP¾‹Œ¬éuZ‚UVV–{[HÉÈÐÐÑ=ưÌiθᭋ©ßõ. „×ß;jíga0ÀëeÔÔpù æ¶XZêÒµ×*3ˆîÿÀ` –X¤‰RýÙNÞ^>à 콌9j(ѱE_<7É^Õ;‰3N¶PZ®tGtÞGö˜ Sˆ:¶^æjù³Œ_‚y>èxHÑ>TrFV¸¼¼þî]§mY ,™×‘¼¹¹™8ú4N†¼#†LýƒI¬4""äzu=‰Ì!}̽==Ë«±¢¡@Ò®N¶‚.7y¯>ÏNx¬'jÙØ¼‹Àc0fc¨tìÊ!+ +þ·;†!<ÔqÈÄÑHÈèè~ô‰¸p˜'áFHE ?.é¹*±Ÿœ¾=Grpp€HÅ{*I ‚p0MMMdTÔ_…³Ÿ˜õõ Õ54¾ºvïlo¿ƒ¶hçê{?¡øÆq"-,,œõžl‚ç3Ù™(‘øÅÄÈØ^m=Z=CDBR·uíæäƒÝÆõ¢¢¢wN6ºî8-µÃ-µ¿MöæñññyCÞÄÅG_˜™™Õí,.,´v]ûJÇ’Gß^ŸóÊòXÞJ8ü³ Pîš„×..F–– ;ô¥W<Ž Q''oJÌá S+x4P-PÖƒãÑÕÍ ˆJ•¿ÞFÚ ÖË®àÁÄÄÔ=ÜÜØ°)ió¿¹;Œõ_Ú)kë}="6^¤½#ä ™ª7•€Ž8Lúß¾vŸï£yÿáCÐù¢?Åd™¡Œ–Öã»ëÅû•TÇVkÀæÆ3îN V†ŸŸp¼^pçE³ÛÂB¦åû ÀÀ°&˦« | ‘«ß4Q$¼JùÇ7Ç#¦}1dàý®4A÷r“Ô’I‡‰Ý² y(ž+zG8== } £z¢ìeøz˜U5µ,× og°œ©E÷^óGÿ!¹… Fè`=ɰsv– B¸fD\Än{s€Â<AÈa>që×x‚5¶0Zo7ÍN.DøüùsSVÜl ,ð÷YÄ—X.·H«$°©I°¸¤„ÝqA˜{ÆD¹§†­¤¥¥¥NnnÒõ‘Gü" fµæ;ÑRÔ%z´ž/xcE WSS+wÛÕ-Aû 0ð=…sy}=äyäcãŸYÏI[YYe»føž½l¾9쯭²é¹ÜûÜ¡ùlÆÖã|Þbë®òòVVŒ¤ddNËÐÆ´“‹Kgà4âÝ2¿n ‰¥ÍÍ0À©98p?0(‡j0áO°¾¬D4ô9|>…B]¹×¶©eF¦`âüc*¦‡†0Àø:Ç ÔqÂòó—[:€ÚÀÁÁø˜Õƒº¶[ ÿ«ÑŒuކÅúM`éÊât{åúôU=6`jÃÖµcmÒÙâRRˆ1¢1«}±]ÃØ³µö¶®÷àÇÞ¾ý+èôŠŸ‚Yôj—õ›*7F“—?œ±-3^ûçØáj_…íä3@2Wǵ ŸƒŸºÊÈÛ+€Ö¨Ø™[oﮟ?q`Nç{úRÒÒ¨ÚëÚ£+ ähqÅK´ºPËZΈƒ‚j&dddLÛà`àŽ”ÀÈÓÓÓOUYbÁÃÃÃÆÈîÎÔÈ3îüº?Z¬«BËÀ€¶¹,¯Þ¼¨Š÷Ï¡/âA0X“û~/°~ËkkÐnÏÉO™dQ‘€™¼k/¯ÎÑQ44¶³‹ÊK÷Bõ¿¿^4¶°˜ º=Ž{b*üù/cë¹ûg Z7 ñâ::„¥†mÏŠ•_¼À!ONOH@zBHL¼L5¡°Wµ +UæOg½íû¦ýVÈ¿ÝÜÞ²ÛN<"|œžž^²Gð^®½§çžƒ%#33”e‰ðOh2Ó}±2À n ¥N®´Ž&‡{—$˜¬Ád†•0ÜM@É>1£ñùÞ|~q±ÝŸâ—Uåîû@phDEÛ:Æ6åÈÇúßÝ-® ¯ $ŽÝûÌŽTØëÑåååÅåfFH¤Ô¶m?'''°Æ—GëÐÚ>B Qº$ &~Ž ,ñx à:{£IpÀ›ÐN!xàÈ¢¬W=ó11±Æ½w&0Vhg²ma€¼H…ß­—Ý|£¦NëŽVpX˜éB³'ÄrÏöæ‹ÆÝ:$sYã °ÈñT¯ݤ‚Ц†X>éÙs``‘0IÃKôêx¼ö rî(tZ}øÏvgÀ_¦db*¿<k ¡DBn›Gk.üôÊéQ5¶“O›‚‘@ÊPÌ‚”´øÔ,ciɨ¾±‘ˆ(4ýó5Q5ÄжU…ãÆÒB`p½%EÉ-M¶mîjÈþ~Èóƒ¥Ð#j#µøõ¦Q©Ï§‡òîxØè”+U–-jAf…*ŒÀ˜<¬Ñ-‰õ Ü™H÷XA9Ù™T^4f#cÜ+RqÊFM<·QIÑ>¾öOÌÿ8¢J[ÁaKå–å/LÔ„ûéšsîÞ^úÀ3k'ÂùJ™Áp­uK¿é¾9Þ¢Ÿä–ÍuvvÆ —úNh›AÁë³ÝQwBô€f)Ï Tl¸Z‘_ô;ëÅíʃœT)Ø¿§õ8Z¡Ž8O°¹s„–(¯ÖÍ ôá¥~NKƒöÓ€1.ëªÍ.ù]ÌþÓ“¼Ž8úÜ¡5'Ww‘êù”"ý^,Èìjéy…S"û<âÇÇQ1ä ZKvTLǶ_U39ÚŽLð¹ 3~$ÐÝ57lñ`”wþ1D’´›¹Ûšþ™-c+<¥oˆê¨±|}iÍOhôÍ0­Üä)’É<ýˆnìð°'J9?Äœ €˜:4gš_‚ÁÐðäiÐS/вàÄô%•⺊c 1cS23ŠNÉ&T›¹çéûöu3mµz×ññqÚá7ù3¶ø³æÝwÀyç2äÔá×»~AvWJ\ ™÷csµºKòsÏRU·W{ª)®¯èä1VÝßøü)ºâ/] ZÂ\7>¡‰7z°òãD@èÈpÝ•­žv~ù!r…™­ hÝ”äWU¼J¥Ë^ pGÏ´%Ìá ñ¸çyRä.N§ß'‘kø‹Vú´ÿB,#õªî?Óò¥ƒvíqIhdí{ÞÏwÈvʨÿ¥‰S’”ÌZÔ§M¸¯bŸ4˾¼þÃÿûüØK.ån¸¦pxî&{Ü܆QN3ÿ™º¸j¡´«çî=É tlŸò-3+#Ú@iÅòÃø z)ðÓ»6²ºgÕš6ü‡Â1~¸WkÊ8jźOº<šO0þ¶£t…r»—I;ß|{6 %%@Êçq`Ô|wMÈi¥’w'H´ûç6!a8À:³R¶ÿØ>¼;-ó_n‹Pï¾O>77‡‹ˆÏ¬eÕ‚WV"pm<«xZ6X?4^Òv/,$„àº3ÑÑÑ!¾yH¾¡s¥öF>´›íýݪ¯Ø‰ÌQ°ÖÞ£ÌÜÊÝ~lê9ÕwŸ\¸ ™Çò T²%B>-Þf#Ñ;Ø_Á“F‡:ÝIÈc@²Qƒc'DÇVÁ‘ƒ£°ûIÔ„§‚«ó˜Â³†ßoÂër²ÐÉXóè™fçêKæ÷¡”Kh‘JʹL‰¨ HJ"öã¡···Ïíé$”x”Ú”¹”ÔŽ‹ãòúu…˺ÜSýÆGþw J®ºƒ ä Ix|’ŸŸßž)¶ôçOTu5W±N<ÝT³gÕ0 p2ÒÒÛ¤¦ÚÇF÷EL_sr–?(‹üÝYLNF¶µµ…‘Õ¥a½.nÜöwlT“õ¢ˆ0ÄÿÂ¥‡@ƒ#;ÿ¦“— <·Ý$rÿ¸Dq©Š¤¾â½ä/˜ès‹Îî_ؽCÙxx#B¨¢X0Œ·)C»/ý7z-B“qÎuRë’\[o‚™^M'†5µ}ìòÌç7˜Ú}(s㉇ºCˆAÎp±„/Av:ywuºí³’ y¨ìXAÛŒOŸ>2˜™™Â‘VR Å${wss£5ùóùíÝûøø,×µiiѪÙÒËÃi‚çç屟È{ã¬Mw üÀ»ÛëÇù.Ò¢ì›á¢QÉ%½¦ôÝç0œ|üó’wÏUŠPL"ă̬LTS)3 60àdËÔ??íºTlø&¢‡)ãωž¶ƒ^÷ñ 3’ûÍ—Ñ‘£>@tJêlØì ðñCÂÃÃ-f‰‰‰³rs¥ó\Hsx/°ªŠðø§Í÷*´¸T€(? !%%¥oß¿#ÂtôôLW{£u[¦•ûú¯à+`ãÖ§Úm7F7¥¨qbÈ…QEEEùøøŒFÒ…%î?²egÓ€ùpº80.qcPú q#ÊD¹e.ëëë-ΕMu·WYÛ‚ëêx!>mÔÿͬÒâZ¯Ùƒ½õþλÄ~”΀º³Ò|(ØÒãXäT’¢½so@ÞèÛ˜sÔ" @ðø8þðð02Ÿ4ñõ‚î ,ÍÛ’f qb²ãtdÉ >Ó3Ö vlƒ_Ä¢§=Á g†·'zŸe½‹|è4m¢—¢ Ü®©wòÓ1P§‰œ-VÎÑPS£N0ç ÒÔÐ@ÎxC|ÂÏŸåŽæ)Oü¯S…¹¦†kú D¹¿³3ÐÀcùÁLµ5Þ:`Nã/«,0Sy¢½f¤¢zŠA"íØ|úÃ_(îGÖóÈüææÏ€TKóððHIU{Ú "#Y[3“STÌ0׶浫kŽýl­ª¹/ðÖkÛÛ3kŠ,ޱ0Àë7¹EKGŠ.ìX{[Y[ëð¦ùc/”~ È ”~‰_SÏ2­ym¿ÝtÀõ\½sB\œ¸åH:€e3•æò‘¦uf`Þ¹|¯Þ0”æê->úu¿ 7¯¬Ÿ™&Éú“æ´CC|ëñ‚zÛxæÚkåŠR‘–®PR\œ_^®Â¨œÌöfqû‚Ñ=’J`üðè(+81Ógw†ûèðgfRrÊ­pܦÑë” €—éhâç&É&¦¦!§­­­ II «««ý““u?ïtårŠ“’ÒPW§)>>=µÇöŸwL¼ÚóØ"¾ßìëO+âñ_ÉWƒzÛ«ÿã~‘Ýý]ýÇ^Ð(a Ÿ?ÏÙ}/!*º;Ÿs_ßÙ‘ˆˆè<Üé˜e=Ò&:¬xk}¹O•#‰£Ž?§q®{Ùù¬àî’j1¤ˆ8G(5{7)šrô6+ÿÇ ãj»¶ÛÉÉÉïèñ8R¢hq#~´æææöß™˜˜–iÍ2ÛäÎÚÐЀb!õ‹²@ž,ƒzî¼Qšµ54ž/^p•syóæëõ܉ÌÚÕW?¬¸tMykËûŽ‘µÊÙÞso@ vSåÒuU9½1dò#"×O‡>qËÔFýcu9ØÙ© TÜû¡èùøÞxkßœºõ„ƒç"d)IQõ M¡úYú]Ï~VðŽÎrÑï´rÙdPÈÿøÎ7¬s†µvt$¥õä—¼N“›}š&™ÀؓՆúzJEƼÜÜΞžçŒ‘=Іmfý¸´´´V,$¢~Íü/¡½èÜÜÀp1)(Ï(.Ég< „ Ð¦Å¡!Eæ;(ôpúàÁƒ©V_A͇„ ì\íF&$<*¹âu\°;àXÛ¸‚}‡LBBBŸæc rÿ^Ñæ¾¼©/ ·Ðå`buO1¿môÂW·-æ¶2ƒ[ϵúêå»ß\8ÿ™ªÈî© L C ’¸6úuv—ìÚI1RvÜ`}öûúQÚ —œÄQ¦ ©Ç%ÒÊâ°ÔBªoX·€ÄíÉÌO™ÜÄÄı6¯õDíß'[£ov&X®.Vc­¥}âUBTÅíºàwmOÌiž“›«fcÃMĺ๙&=‹ðå×/µLR|üç"""'€·©†¢_ïôЩHÖÇÛÍÇÂ'+‘¬jàƒùzç Àÿˆ> º;dßrk9Øè‘',zï CV̉œ²r^ƒÍøéÉÉW°ÔQ`Þ>ÅP¬WcƒA!òÐh%""¢7¦ØÎÏóÎý m‹7®Ú÷e"T%¼/F#õKäBL'))IÆÓÓ3!-M‘A9ýë*ÀŸÛºêï¼õ¿;ÎXÛÙa&e¯5/¾º®.Ø·/Ô<¹9QO €ãÚêªäý¹ÿýäÚù„n ?Çî £s)mÒ²lMíüß3 Þ'ëx¿?0°ŽöŸ;¨oÙ‡´v™eçyF„¿‹Œ´>û3 ¬—\ii)`yLOžPùûûg*ÉЩ§(H£<ƒòÈ!ùÜ©Äð‡ëƒÿÅöu7cÒ u<ÝÚÚš”––֣ǥ×××£Ï´Ûæ>A´ÃjëWŽ™££²ŸŸßÉnÝbmÏÎQx]•]Ôw?5õÕåθèKh³Û„’gl}‹¨~h«Í!첆,E­ú! 3æ]Õdø¿Îv¯0`zúp1I zjv÷½W%§‚î{Ý@c3ü®P’X {¯÷Ûíšâ]^é‰äó½âÂ$ ¦Ôðóò²¢_\Çõ²‚Õ;ÓÍâââBC£߇†3îodWDúrf¥òÅm>±%ÞŠ½yÃ…„NƒA»`>—Ã(x¦0¹ØHu„’ø”••»»»­„‹s?eéqÌ]9âìé—v>$_>7â¨xc÷«‡«² Áyy >‡ÏKfkaí“ç±I.X¤|*üâê»À/­÷I^ËÄF8¯öÖx5—Šég‹¸÷\¸Yàb†Òe„¢Ç޼±ür¤§?)±ðÌ|azzZwpÖ še@,S[ ‰>Ùòk„·œ´X-jß¹0w}üôúÓ`_[Ep©6hD˜v‡=›ü÷èE÷'nÛê `éѼÏ÷žûù‰×äšÁ—UR’61¡~üT' …Ó’gö×#¡Hõåñf€\ Õ^B¾r×™ˆ/óÙ‹±$ZýÑýuwûËÄMýóý«,ç,tèïsÎ7¼f™ÀÙ¼ëàÔF††7–ùÕÙ™ëøSñ<@¾û¼èZG*b~ÍîqîZÙmXï³éœ¿ùÒ1Þ,-]Ùx,¬µ5XTÖZ¸ŒÉ´?¾t6’óíÂð à»T'}âïujvèNÈsóqh2> Œ Ò-™ÐVˆrÕS:D Ÿ~Ó,DÎŒ´-6ê>‘Z4—þ±ôoÁÜô‘é/ûœ}¼Ñl#0⟘Fj´Ù_Ѿ„r¦ul=”Ëß"£ºÀ›ïþrú”ÄÞëUØ §åDl‚Y—Çblõ%Á•T)7ª‚<3W.z`Žxê,‰çeŸgò¥dTø)=´Ñ4¯en€±÷™©+íƒù·¦WpÌîxÍ>F_€YkÁ†’Nëĉ)Ï%Ì@smÇ/§¶ÎÆÃ<;ú‘oîÜòé)õNÎ2ýÇP'B+¤²Í’e¶蘱Ÿ:Ç ŠÁ|ìhA*ÕõIe Õ-}Y^§1¥Ýø QñÕÑmZT A§y1Éh>Šy]t^²# Ù¿?’îè˜ü¹¾=!#7m¹‹™”>®Ž]»«ÄÓ‡I¿€6Ž£c!|= µD\Í7ì›N”‚®ýþpÔ÷kO¢Ñ÷¦[#“i~,ý¤¤üO-Ÿ´ll737<ž~ÅúóPÖx\A²•1œÝwÙl@‡Ù<ƒ¹Ï‘bó ­&&6Xd¤I–™qKÅDâõ—ãõ¥Ø¹Ö‘êk”ÜIŽ•iA„4÷Ë¥D¦dÐù7ÆfÕcŠMÊs5:tt8l##F‰—³†ú5²éI=¶èªŠà`½¡å§q2¨#¢ÓíµmÁÔÝ:¼¿¬ûOûש0y0fãj‰Ñ¡–"â+å§Ös©¿Ô;~yìkŒªy|[õ ÆØ¤>ÿ…"Q"è×,j‚ÓÇbî(Z¤èK#ÆÎ/)¾F{VèzO¾§E ºšbiæÑoŽÐÐÓçv°2ö6~ð>à J7Ñ0H^pŸj]…]*û‹ªµáI©j™6Õºûž%“ʧÌö[…LÇ…âŸfˆ§.åŒWYì]æÞ² ¾YfB®”±½û‡ŠÐ6iiÉ¥|¿Fs ƒá¼ÕPä¢þÂö"f…Ûšle$…š šÃ §^¡Ä¦'̾¸×ôôÙf©áX¤Ÿ9º0%±Ox8ÂM윲!”]g)¤Ÿ{ºŽŒÏÏF@hZ<»d6àÕ¢1û¡þnÎré±#Æ`+=v„Mžús6.“F-Ä„yU¡nY"S}|åãJe{• “-û‹—G '|íWýüTƹ=dÒvNs[Šº]åi Ü Æ¡([ÂB&¸rÛÓÉå½=LÀ>—Öú?èºJQÇMô-,3>{6Q ä­¡¥EMM Ÿžžþ^.ç÷b›hVVeÒ à×û‡2Ši9w®Du i þ6‹„/Ðl²s q ‘4ϰúqÃÊÒˆ¢’°Ð»«(NºÚµ¯Û]ƒÏÑ‘q›{ïðôk䨭õçB‡pîn<£(DÉß¾}[ÿf+^k¾¹Yhm}Š—— /†LRUçã3ýÂ×i•uu“L¬ºÕȰò½ù üêÁåfÆêXºÇNIÝ̘ᭋ™™Yêʦ™&ÿO£)×Òf”ÑIˆ"ok=\*˜év±Fœ'ÒxÀc\ÿ®®ëíîí]IÔ6—qmó»õú,àŠú‹|LàJ§Ùƒ íp\Û._˜£@Ôâ_oà†‰îÑ|ÿyìÝ?_ÍŸíeÄœ-M¶FG²OH?lú÷LõQÿ˜©þ©m»Ò¬áU À¯|üüÓÓDï‡J¨zû)ü÷Ñ0¸W¯¡øË£ÿ¯ã/ªR*0 ” ð¿‹ÑÚ¥ø/q–3_ùU·³G|¦QÜïú\. iÚÿOYì›p°ÎÊ£#9%¥Üõ¼_€+¹V¹¬ËýåE_¿ªÈÉ¡B¼ˆ]ðŒGxx’à:ŒÚãÿß'±oÓPR8Ì7>Ÿ,ÕÏÆ¡‘þq´>¨Wã/rs IÌë@ 8Æé*Ëþ®® Z»é_¥S©œ¾WoJöÓÙ{ß<šµ/HLÄÇüuÛ†âÁeÃØmòÿêÐõlÁÿÙ´ömVÇ‚Ø"í2Ôu@–ÞçåYÅÎAGOê ÄA¾/–ÂQûÏ”Ve›·÷á?Âæ‘}Æb­Hö¿ŸÖîú#­]Úö{ïŠMAl㪶¦&ÊuYÎ-Mœ¬ì³$uu]bmmHí‚Yþ÷°B¤îVX¡Ÿý×Ùë5#þtÖÖOž¶Îå¾öCBÂh“[r1::Z3Aðè‘ÑõÙ.à8QDœØÓïÌÖ±ª©©Uo/6{âýÝNDТ„øààöãèÎÙÍ­ww¶.ÄL°Q‚ºÂÏL£„íæéSBÃÂh¸¹ñ©¨¨ ³ÜñññØddÑ¿ÿ¶ÀÓÓ 6ú™õ\V^^RW—¸³« ‡˜xÆì¶²’cù~s8-øR~D`Ýê=© üo]ƒƒƒ‘]%$%qppÞFE¡Ï§ìfªÞÙô/áïÿžÂ íÐÍÍÄ)»ƒ…JaZhñŽËȈ½¹ñ)‰|{w”ÔF ø•èí TqÊ¡ÿõÆwkW Xù›-5Zvv´ÇOÛÁÏÁ†îGNî÷YÔŸ¼/^ÔgUVZã)èõ))<¿¾>Ùb$]ðqˆ–ƒÛfÅÇãŸlW[|ÿ¼ rÉwê°01é999¾}£Ìšyòótgrt©#èS¢°¿Œj¶ÛjÏ’FãéäÁbD3>}508H²[æG4¤`+ÊÈüèÝýâÂ|6úcÂt‰Ô!ßà*ÊÌQ™ë(Ÿ¼ aÔrÛ*~%Ý8Ž<˜Zþ˜„wÉÝmÙ 8ÒÅA6k¡×%”‹‚ˆƒA EaŒ0»tgÛ¥A£Ïye‡'5ºV—…åqä¶gºCÝìÅÜ®Ûè´]î…º|N|ciÑñå«ýó벚»Æ°p«GÏg¬¸ÀåÙ?eY“åG6}Dv<„&lj åž? zkP6™4éK`oû˜5÷=eE¸h\Nh$R¯èúÖÀ«eA½‰à{ |ùÇ ~õf˺Ù~'¾„Ñ-Ú¾UÕÜÑ‚“ëÛêAø€Ø„6ý²Iåëõ;!ŸEå¦î9”@±õÊêYû­7&Qq”È¿ž¡ÁDÔèïˆW¯Ev—ü7øb‚“݈`ø‡¨0±tœ\L‡ZV.• 3zrˆõþqäó_ò0-̰ ±ÓêAØ{Óˆë-(.Õðr úœX ]-. fHö+]ÁöÖŽkŒ Èyx¨a<ÿ¡C ÷ÿíðóÿßõßþ÷K@ýOë?±sðpñòþõŸx úOÀ¾þ¿õŸþŸ©ÿ þ;þ­ÿD<&xù?¯ÿäýJãoý'"‹zÉp8Ç^=¨::ª¬lýF¼ÃÝ3_Ö°è¨ëQ7Îá/_bŸ’ô†™e~ ¶¬)«ßbÃEU…óPî]ûúÀ€_£ããë.WÜ5Žvô°ÁK§áϯE2ΉD?{¾Ù<æÇ–À7<ß󵆰Œ¬á ~àápR¢ÿÓ«âËûè ÿ;¢²Ö+&t¤ ÒC^×m …4q›uVýÆGüüüZÌùÜÅÓ{«««8މ•¶³ŽmÑ~·Wýd¨®.çúžBžG´+++ká!õ~Û†.$¼ÝÀ•è>TÀb¾¯¯o5ŒÂ¯\÷r̵»§g#—0qýv_mòý™owï^ñy(ár&'Nþcµž¾Ôul-ŸËšlzUÁËxÚ~2xWœæÍ8hlß{×þõëij~Ó/P ûò…’O@Àä÷Ì©†×–Þó6ñ´Ü¯—ÚáF¯¼ë¸ë^—¶‘ü°â²Ø¯ò:µ‘‡2f“[”M÷zgæË-fí§ÝÄgn [š›Ùl'ž>züø“~FC£·žJíõGû‡Õ%ózÔZYgc¿­låêøý3›<òÍí¾Xd$Zëí™Þ÷ta’gÏž…GEU»!—|LJr_ôd€Ï¬¥S³W·à…–§”&!&ðr ›€ p6(sÊ‹}ŠV[Ec:kŸö±v¾©•ÊiµJ%Ô©4C¹¿yÙ;ž6ë"_>_§d;{Û2ì•Ńwúg¦FžëÀ­È~®^U!Cä¶õÜÐïÒœÝaŽ/rÜÔšåýûü±ù‚+ †T/âù<¾À(988t«ýõvxûáëÿY öZ`áúMn/¿>­Õßù8=U "K»ÌÀ"éçÏ—Móz>µÞ;­‡ì‡ž ªmÊlO¸éµÌ^E²¶¶g=Üóåáy<[çÈËB!âCíz;9‰¿´g¸/â±)(bÁåÛØ-¶’ÙN–†¸,$, Õh­õj!‡èVFÅÜü<±þýF@? “,°­M0­³´!ëbæÌ‚+¦Õö·È((âf+fÈ89±ÁÚgggÇdn•Œäáí-Y¢e %@r$⃠®0í[égȲ²btÛ7kvOŠ–¦©µŸ ízØÕ߈º¬¬¬•SÛ†Éo›)·Ù¼Ý ¨~×§OŸ\ç½ÿD÷áã‡äÈ'}:+*-ôaëåFêuLS‡t iD4 /<ìÝ»w_TŽY`èH’iGLµÞž3-9¦t•…W[_sÊ„¼<=#³¨S/7þÌOÍÀ ógªBÒÃÃ#yH<Ý-(a>PæŠ65&àÍÎùùùêÝOܶÝ@‡ž»¹ÕÊ**âw…a°³³çº@;V8 Ö¥–T577Ç*åUµfNû³ÂL:d+ø\,‡û—Mx+F‘ j™YX¼ûþ]ÝíÎaŸè*2UðO«G·×çzuÜö‚K×Û6VžàþÔ””bÛ ×Ö×#‚b½{ÿ¨Ô¹-Òë7µÌ±vMŽM罺ZZô@¢¤444ÒÜÔî§H"9Ÿ=S:ÙÕ&Œ–¦ Æ,¢±ß§^U±§ÊþW’ÙŒ­ýµµµ8~Œ½°saÁ\Ï5ñˆxlºT¨r¾Î±©N£x£|í2®±f^K™\XHHÊÙÙ¹jV¿ñÍ «]c.âžÃÕ¾ýëõ',,øȪêê£KGúÔ¬¬#Õ>¿Pá’Ú11psÿع—’‘™|¹øcgc»—–6¿ä<¶ÈCIùEéÏæH ÈTJŸù¨ärê}¯k±%ÂGó”Ñ`+y~6ÕÍMƒ™™™+ßâh\'èè踓…xðƒøô޾ÕÚÞÖê‰* â=AEEÝNpß¿‹îy©ªJõùóçnhg [Bè|îõʸ¶¡ýÏŠtW9>AÁÈOŸˆ¡ƒPO¦Z[…NC°mØ,ãÓñ2µ×gŽçÃÇIÈû%Üô|Û¿zÿñc¨j¶ô¸§(ÝÖ–\¨”˜…Ž999„|NK¾ëõð0 &Í AwsKK “ž# äÈ01+«ü­Ûíæ&ey.mßÖÖV r_@s‘QQ9X°Ù`@óa{o^NNLt ‹4¹ív"` 9¾<ïuÙá ›|IñøñÄ a#5°uú¯M[ÎÁ²vtÀAág¦ƒÄƒ–¡4uÀçIž–Up@ Áƒ~ýú:ZLás×z½'HKGG½‚ÏÄpÌnëjõõÇîÕé±ôb¿‘Õî¼ ã®Ðk?U(Ew{Û†Ÿf1ü9"9™TÐ =•×ÑÁÕWDD˜vl 1ä·€:}æÝ{éºÏÚœ³m÷âöôÉ£[‚‹‹ JfæÁêâŸVK««AÀØ-Ï»/>÷ôlزÜú•3Uc«6ÒR[û¶ý¹ýê|ß‘ÀÎÆÆ&Òäwá”[ɬ›ÞÊ‚©#Ó0§õ™jrg Å¢ˆ ó«KšOMM dýÛ÷ïR|½Ñ$a@g¨Ÿ<)Уµ;'Ë›¯ãÖ¢¶­ð:œÔäUã”¶Û]Gç› g@:W¢yÚ½÷[Â& ýç«õÒ½ 315…ƒ­¯¯³”² CÕ‹™µ!)øöMÖn¦º ÃžEÓÒvÇ1z, ðß$´´?~ö*ü÷o+@HW‡ ‰ ­ªªÚ²Üøž&ŠÏ}Ö>4„ÅfªuíÓ<)Ä‚•‚ì+##£˜‰ µÏaÏãžš»ºu»º4Ã@Õ²ëë  Hæ´T*rÚþ‘Eïà  K2Gm9‚!½Ý2ÃÉßßÿâúºN`o8p·Õ´ÖÛ¶WnÌäT°’Åw$[J¸¹;o#¸»»ëüùS58$$b¾É}rÚâúl·stTýâò2¢D¯î]~>ãá7šXd*â6òLó4%†¿ùS--!©©©Éܶ™™mÚ>޽¤ n`È¡;å­yå¯onž“,êßú{¾©ú¯Sï”ùcëÉÞ\ƒÉÍÅáy%ñs#£/:&@#Ãígk#È…½ÂÛÛÅâÞ¿7bZ4b ‡6íƒCCQÓ>\ Âz—-Ëã1bjÊž\T5̈8[Ê=[Ê_ÁS­¨îŒJÕÆÚLù9--D«È¾úsîã“'8r9jÍÀC[ÂÄÄ\RR¢ÓêãYUÁóõ×·Ìí¶rW|êú\h­›¼ÄØn*tÒ7W9c¡ðš=ü‡ý Ì}&¹@ ¡)ÛÔñ©5³¾Þ7ª“íÇ4/e…2ì¥ÀŸ…­úQ½ãb«tÆÏ'/ÔÂü¢ð]íšÆÈ*æñâ読 Ó€¸9ªçu×ÊÏãÌ ã¼„o*‰‹öÍNü_¿Fc&GÄÆ:ŽðåãdIÃ1RòÁ ^/þØÏ¬ËË–t<¥gý1ãj™&(Ê»)`‰†’Õ‰W¾5·Éµ÷»uMµDK²@Ã÷'æJÈíÁ—>uìÎpTÉ'ïlŽTu>Ä®|‚´ƒ¦RØÝùÉ'aÛ1SÇÏË´fŽŠ×zí[œK›r†TÆ’ÇaÎjÜ«±Q% 'yÜn¡ž‹ÌË4znùׄݹïÕ‰¸O˜€%3¾wfX qz.ÅIõ«E}a³Íô’X‡åõ¹oC×.Ð¥1›š9c§E<‹|Ó'ƒ½“m#Ræ™äõ›þr™ˆˆ´í”Nû÷_J²1þ':Öt-/ß'ë]?TL[p,[Ù>ïñ°Ñ‡]E¿N$ÝnG¶K{…do€!÷º0³E5ºpEwÔóEæ{ÊZ䠀㤉z†‚7W°ùN¬F£œ¥Æî.‚Sb†kbÉèýˆáeXñ 6šD×ä—¤òÁ‹)æÀ™OÅyg¡ÓMÎðën£ž$J›1$ÁÞ¹¬UÙsÊ’¿/Äެݤٹç´#ñàÍó×ayéì€Ì+9R|9”g­ná7|É4ª =kx`=Uób<ÏÍËÚÛ_hÅD5fنɡÁà§_˜çÿ$^ÃŒ(7ÚÆxodç§÷âIGEjÛaL:SQŸ´ÔDÇZŧ³Úžnå !9Jp“ ˳À’HEÁç2ú©ÔbÎyÑ(Ùí#aòf1á±bÞ'd;7žýÒAa¸q³Ëc‘à,{Á9oßî#VZ£¬-mzÕªkŒ%j$ŽQóævÈ·eƒ#¢É6º@a#&nó5ÈL0ÚÏìîV–XZ1‰Ã‰ãfóücöÙkveºmžŽ7AŒ)÷³w‘“Q‡¹Õ¾8!?ù»ïîëM+UÁ8ßäJhMbeÜþQíÉýmN™$gì?Jùku“•¼§CóÙ1|ð‹Á¤Âš§ ôï%`ÙZ'Ïc)½I=W‰ï.çèÀÏr{jü~6Äû;V‹öÓ:eSiAé ÷…±>¦›rc¸í :›W#×ܨ$(n¥îx2‚)ÔtÔò«ÂiÉ¥²±e÷‚xë¼6`Òpá3öÞöÝ­aÁ› ¢3(93±cZ4qçÑ2?4©^]DÓö.øÏg'8 ‚—¤à½0]¤Æ63]B¤Éd=0†}?Æ~–àó,b³«å Ì8 î”î|{ùò›â“° -1cñu³ ˆ ¤®–¶–9c¼¸u§Âôáï™a¨qþ¡‘3ãW†…lºÒ÷íu÷·-Ãî=JXs}ù }eš–×¼y.îoŸ¶eêßi³Ó¦zEÐÀ—´té^ó¿ôpOz…Þ”õŒú>걩áyßIÍ›x‚G<BÜQ5ðñðî¸}» ¤Ôžàß<÷úsM!¿{¸6 ]Wôt,;wvî'”2z{¦Ð¼Â,ðå-g Äcp}¨ðþüÝ[Õ0ã|œúw«B”Ü.[˳I\õ®¸@&Éß Mb»Š*7!›î¦µö6iÃÂu³Ö6™º••l]HÜý½nMTŸK¥iº¦ÀÕhJ+õI޹VÌ6©0æÔ2Ĭ ¯b\7ø|©ŸÞÊ+Õ̼¨,M£¦n˜»Fî˜(]c D¢‡Ý“öÃÜó©ÛÔÈ ‡ü9¥²AR™O·!tI÷šs˜?ß“¢r¾¹ðëѤ-i¥wg”ë8ìÈ2[áìÄW¶G=>4#à…åÚûcºeù>?u.3.ñò>LÉñž#ÉTÓ™å]™–8ÙÞ+KÁXXØftñÓûÏ-ï?Å~Æ3ÿ-<†²Ìš¿Ž.À·p,‹1 š×s9‚ú>íj™Š ºo+/|ú•ã3×çÚ˜W¯µKWü•ÂÉP_ö·´­ÞHÆ…ëR¦k“ˆ/t}^né'z°YÃW׋`ö$ˆqÚíŠð‹h2µ-¥a¹{ìCþF|­NË=N–z[*YHíôࣩŸUUUò|ª Uµ±O2È‘}zÀ/¦.&‡ç“ÓÇš=¦‘Ò—ÙÏT ŽÈ?å›ùôteC?Ÿ©$Qžøóï´ðojÉBñÏI}IœãœLL1™¶S߆?U†MÆËŽïÿŠs×evç’{^1ûé©É •ìý6Ú}ŒÀ}^bÉ =uuH† ·Á±ÔÏ0ªŠb3ûâæmoCWLJ¸Îݪ ^;“ûP¸õ„R4HRo«$"ùð3#ÃŒsõ°Óo„ùVjìW"Jû‚òŠõ?+RÝ–)x—y{1|ùï™pjHèc!ÿlVëSKÿR’š&[ÚwóšD:þ«À}¼ùÁ1×ÈÕéÎòúúƒhi„/{›½#ïË#úiú™î‹Ï†¹DG ºCÒxU‹8ÈÔ"Kt*$ö°ù¥¨²¾¿ë±ÿã-޹,Z¼àµÃ4G@B‡µD‡Ï`5•¼pk¤þµâ¸Ú¹è(‘Ïf¥«,Ä–Íðç•à™M<íÛ6³@1^]mÚõ3 .v‡m…Ž‚‘lï^°­à¬¯ö…”V·ƒm|†$~舦éÕB!_ÁªƒÉfp$ߥÁ³“Ä-¸žÆ€tÄ;lxg­[ÚÚ4(3[kßµÔ´¼¶\^ÎFKKËUŸ¡”×Õ‚'ªÑ~ù8³°p «’áE|¹ã¢:1²°÷™”‚BÔÖí‹NèìÂþ~,@_e“¦ã…šÇÇAMM‚ÃihiJБǧúc®®ÜBBBC¼‹É Eÿ3J.¤›†Cà¶Ð]jɺ2Æ‹}ðõa®?7!MÒ©5›3:&&ÌÃÛ›wÊÞ·¬WD’:K OŠLAñy ß}Ïáº#+ŠdôÏ,ó¢q¨þt¢*po…í{9ý…JóHdddìëó}OOÏ0|jZÚîê»…[ï]nˆkÇ¥¤<áàä왪0í¡¸¿‰$—ô®w.|åsl²á»€½Ú—ôL"£4ÒQØi纎G…GFâ`2ô‰Ûäh­ŸZPP†wË]a‘€A€«³]æ¨^ÁûºgÚêüîÜZ½ÐA_vãNÄÑ»ÒÒRj!¡WÈTÝêyÁ---ùùùå2fì“þŒø±‚¬µ±ü ~>¬2¿ßXìNêx—Ü7V¹ÌOtãôüê°þ+G^¢h5û'c …èÂo‚½–ÿ̇‘ÃÇÆ4F.7Ÿ«¨¼ï‰íšyvo7õØïªõ.üõæpÊGu55…¾‡_†+>|ÙÜ,4z–ZÊÉ©<¶’’ÒÊZÿÓ½÷ø·‹Ê& ²8”ÒèÈ~®¨­Óø¦@§Á%G¥@#«¾^§X¯N ¨šÎ’ºÅÌ q\%öo¹ïòÄû¼žv8i©mræÉ®s9¨ÑFmj’9ÌQåäåÙ–Ú¥ëðÎçXÝþG*»ä÷Ÿ°}T£iì9*, £ðµlîäôô´JѸëYM]]XPBºïÙË?ÓUÁ7:m‹®²áÑÑ65G'áAc‘}ñB\M Wäb Áç|Þ]VNNð*z…d£I{¥Mƒç;ŠY‹S–ŒÁKùvÔ6øÀÞ§M4ŒÅ]›¾Œàûwèôã\½3Tš >>^@óÈÊ^ñV§éƒÌvB°*å}õãkÃNí6ù¾‘:l‹¨’'OŸ«+åIÚÙ=…}in&…-ml„*‹Þ>Ò-yl;Q̾ËéçÅHb’B‡TqñðW"Yyt8¡,3ss*ff4¨.Ø›7of±êRDýE ºýËšO~ÉG“¾yÃõ‘Õ0†Y»”’…#..*%3üŽñÙ3ipkÀqG­ô¡^èìrE¨\N'ž²ÐÛ‘ktÀ<ÎÏënÞÖ–æ?fXì ©O­ìù1f)+5Ætäš‚W3¿{"wq_ú®MÄCº[±™ÒïJæm~‰ƒÏû¡³ÝÙ¼¼<`ŽðôêðUUUWâdÈq$+ìgy~fË`á2âââ*œG¡#Þ]ïGþø¡²üû7#¹Ï¸óÉïŸHûžÅÅÅŽ7GÀü?†þƒñ>H~—àÊå:²ÊáC %–777wß\+öiß¿ÉÝê^é‰ ©««szý¯Êb×ÜÜ<÷”µù ÐÉÍí±nÉY«À÷'Ù_¿J1&Ên¤:¢RC:U[[kry´þñ{æËŠ[ôÅòüÎÊèOËž{‘¦g·Ç{vòï=³ã¼ÉS¯ý)©m2ç?oÆ5Çiò¿yFÁjªŒ/ýl'È/¶iL+Ïu݈½Õénóͼ·0¿¿Ñ( ![ûê Ýјd„J÷t/a=¢DN½Í±ÂoÚˆx~wæñ'ÚÏÃ) òî<µ7•¹g®Û]$²·Í°3r9¡ê™m‡f‚´YÏ"´É#~‹'öŽKóÀw*gøúxc¨K†Â—V]ƒLï*©Ž ]ì@JyjÊ… Çõåá?Éë+!*WQ^µçµS[ÆË†!ž÷ááù-lÀvõYa×{fÂ{çæ./Q”<›3G¥úPÛ¥5ÌÔ_ú¹xô\&6NÌüÄ Í{ßêG›"ý}ChøŠIZž‡Þg;¸„ô}hN6ìËü0rya„ÜÔp?,=ˆl32\V©y3Žñ¼ãóu5ŒW)1û¼ì3›ñ,&~wãëŽÓãƒoWµ„{·»ì'î-8–á^t¼e“Ûu.$§^ Ó_¾.gv¸ÓxK’7˜Âçfª™S#{5ÊýJP uÄHF¨¡VôJx“Í’–šÃøHöı%”/s›¡¡‹’hºaª]:§ýÂaùžÂ`±pâv[êFåkð¬aá,k˜!ááT2{füè‚C€L´xP|ݾenY'ð“9ŠÁuÌ ðJ€[,8~?¸¡p—œxKýç]c8ÏÚ—¬/¶ qúCÑ .ŸïØ”÷ØÀ7¹2£ÏIƒ_¾/éý±è)YU†m)2,3³§‡ì3ƒÐµáÑÕ’Ñ2G¥F㢔°üÇð8Î_ Œ@{Ÿ`JUf€±m¨HôPöÀ¾±U¶j}Òy9r\aiCÜÛ{ÖðÜ%LæüÛmižHóÛTÑù”Á×pž?r.É"ÂóUÁ¢ë¾ÈŒÇÆ]XŠH¯¿òeoã$ýÕë¸D½)_pÈÑÌÚ'ä•ò%LâOÿ†›,„[÷Ÿ~ô^½p¥vˆê^.ªx`¬á‡‡?LUmŒ0SEÎGâ… *–{¨_"ÎK=¼š cæöÒüÈúòcztné†.ë^õœ›´ÔYHÎñNYnüD»¯7œ -©Â@R:ì|ÿ۠ܵ6N°ZI†ðAe+K¨:+¾´ÓŽª`¤å‘ìX àH_{{Cüç ÷eKø°=*½üõ:í;1båÁò\Þ%ãH‰øÅ+îN¿}w)©yŒ2Ôü‰+&s,¯¢šò’(Ü»°edÏ!›–´¯#ôð]¿ p£<°Æ ¾5Ààõl¤¡ÞŽsÐÿÂÐZª_“,/ÎZ h“óÙ… š‹Ét³fÞW>v@烧3$Š‹ÒˆA¥Q¬w]І4¡Š÷ƒ4uVLÐQúÊÏ6õgÆ,88®È‡Ÿ ÃòŠšsdnÖ¸@ LÆ%LRJªÛ|•£/IaJìCkZF«Å«@ CœàŸdHžy5S÷ñ½…®¿™1€I3]§¦¾zÐTñýäxD”†ŽîyíÆ¥[þUÙ•£Í23A|v“ëÖhšê¡¦c}›Ë4Óú¤»Ø:Á6RûV‰Ê•†^ùëéDdÏÎδžˆòó]^^j=Iõc7éF†¾QncJU(Êð ö¼96ïÐu§hÜ8Ï) ¨ð¡ƒæ¦nŽ ‰vÔ7YD[fV­é›¾ûãŒûî¯/>«ÕÊåHØÛ—häB1~ Ïc»º’Ú+š= êpËä|oÞ%ìÈQo³¾8 VLûBKqÏÆÖªž¡Ê3dãúÆ}4W1¨Ã(ùPJƒ`ß“øbê*öÿþ5^õ¿ì~’ùUçÓ¾À¸#åsjÈÓ~ˆeôÕÎdYXRñΰäÞZ êí|ÀÖdé¹¹¹¡êï`† ‰Bµ« "ÓU–]==€[u ›‚ºA\/À`Å:…®m§zP#xxøbÝØÏS<áù4¦G²´€Ÿ5úöžêâb5Vq€y0×PjU˜vsK ‰~ÅqÑ„þ«Ws9x2öAáÞ¹`÷ôô 9¸oý¢Ë· ùiõ¨/–¢m­¾ºZ™JJQQ1hÐýÁÂêŸίÚ)¾Ç##Ó·ô•,K-º7€I¹¹¹õ©úÏTdˆú >x0~O˜:ö3^¦6Úp›—àƒL–[Uê9°Bf?¾ˆËÊËwå«fo7gÄÇBu¡b¢>àUë²ä*¤þú¥†NÊwÐêòJ_nÎÓÏEò?îe­,ÆÖaa`p·,¾Js?·ŽØØ.™œ¬ëXÍgåå…¶ór×á(òz]iíHÚÆFT§¥È°€nÅ÷ÿÛÆR«ûÿÍ¥uG ã=5_ÔÏ< [S>rcøøø<Å­z5ÅóÉDŠ–øSŽ—ÍìÏôƒïÎêøün »‡½$ŽK-ç ];em3¥ååØr9¸i˜€ïÁŽŽŽO‘E¯&­$2C Žff´<ö3cKµ «jNëºÿ%XNLÄ› 5ŸAÂyù¸‡¨ˆ°yÀøA…Ï 5Fü³ÐBò^‘þθ éû'n4ÀjÑÑ¥44õÆR,®\i•¾Bñ÷÷"&Î–Ž–hó»-÷»½Bª«ÑH+)i£Ó*Ñ ¡’ 5úžÌNÈi¥q'2k×6¼â¯°×ɵǎs•ÍâæÍÇv…Ò‡`àvz²ß~B_ªß¤pß—VⳲϠ*øn3Q²c$àQ™§ê ³G.i $E©‚j{¼É7Tj=nsU™>æ„Txèÿ¯9ÿˆ ОÆÛc·¾SÌ÷’¼«k˜=Y r;i˜‰rt¹Ê1[£yz%˜ò„w„WSXí­7mdrEýv c9@ᔲ¸ºÜ̈‹§v'¬,ºhä=!H3&ÑB Ës܆¿%àáá¸3iÍe%%i?¿VÍÚGª%bÓawïÁ—¢ùü¬EÄn ¾EJ__ŒÖ&nlí`ÕÐAL ÖŠÕ°Ôï §Âïö½2õÚÙô™šû#.› 5á½rD>;À´85 ±FaðŒN49¤†·ÏÈðx5teñ@d4gÞý§È_þx%6ÃᨆA™1ºÝœS?Of¬°¡ÏYý½QBˆˆ²³jùZÏ·jháèDµ 1p\ß•ÿœÔ‹Ñxójp ×´DÌÕšåL$ãíNß YT”.ÍyŸË+Q$ÓÝ4ÁäGL(9ÓÍG²RÑÀØK±là¯Àæ8Ïé Ú ÞÕüæøÕÖÌbh4F-Ô^á^I5=wlÀ¢2Öl ,̘IzfL¹êDZ¥l¸à¹8ý=?I^Ýé»Éeý¨¦ÊqìPÃ<é·+ƒÍÞ†÷AÃøÎ9‡$I3 öûÖU1© Ÿ9v¨‘4¾r2!Äŵ(mÍS&„«º jä)²,*ºŒ@zéè­ÄŸØ~ {M<’x;µ…68ÉšŠæîšqiÇ.ˆÂ8ÜQý485ÉÞ¢Þ²ú<ÊÓmÖÍ Ÿ¸ƒÖ!é’Õ§R™xZ¾¢Ý%²=tÉœ=¸ Oi®ýè ˜Þ¦áÆ†êÔBƒúËuv…Ö— ˘zú¬ÐÃ09 „¶4bx<踑w#Þw+¿èÊ®c÷ðRnüŠ,´ñÞRXUõ‹Œ±Ý‘’mÜ¥+- JcSYpð¯"hY1 e-YþNdj°y§Üе°;\ÐÝ3‰‰õýwÈ(żØ'yîyÁªóvI º#/!| ê¡L(<<ã÷™lU¸µJE×ÙrûájíKãPL9Ás7»31ZE= OÔUtuß½ExÈÓ8ßòb­Æv›œÜÀÒWGG'èz}cƒš‘ñ[µQ; p ê'Ô•O­S Ûgwªþ‘‘òÈB#«öÑnæìíðPŸÅ«™]Xþ‡ƒÓýE Ë‘ô’*ýÿÓ^ÍO\™ É3¡|Õ-Ÿ;%å~¿èîí…‡ ÂÁþþ·*æŠoŽôý™®r^j‡{ôè%;;kë…IÐúH2;t˜1¨Ô®Ó²„”ŒL¿u%)"õÓ`︠›Ô6äcðM¿DÆÀxndD™••ÅæwãkotÝ9k2Un •íS¼þž&H ÿñiG<FsÊ^Q*-H‚Žê¾ùqߤAç9+ÿ)…#PN<à¶¹¤[çòú¶KÒOƒqpt´ëŠ­: )dÞ2þvø—û?o)îã$£U÷œòÓ;;;Ÿ©>ÄᆒÉ]™h6®%´5"ÑîëoÔ¥}+£¢‚=fà •BÒ99Ižž>ÕèZd­ì¶f‘VÇÈÖÞÞ^² û3 vPIO¨Ñ\½×)lé`¹ fhG¼_þzS ðÓª»Ö~ªõˆÕÓ§èÀ’æ ϖѹbÇá£Pg)mœL˜\'¿ÎZq‹žË|ƒë®4 Ö*§ð=‰ƒQBébÕº%S•æ‘Nîî¼öM@*Ø=ÌâÒÒX ë÷|® UðÙ»à¿ìécK@$1üöú¢¾ÎKâ8¸¸&3m·ºjq^9ª‘¥”W;~ñÂú7çþý¡®aC×Ö í èxଙ“;ƶ¶Þ‹GóePÞ,t Œ¼Ô‘„ˆˆè=-ʹ_Î×¼¼.09111P9réhâTˆÿ,&¹”™Û>õóç(¨®D¸ôyI?˜ñnæõ˜€ðüœ7Ô¨WÇÍ‘$·~œ$JCÑÏÎ ®žÉÒ~{}ÀœaL‰…ëM•UU™ZE;Í–ŽŽ‹F¹`Ìæ>~4Yj›{^¦ßzpp 0ÂÝd(©[É‚ó 0å,¥‚E>÷`)Ï2é0­¯R½Ú!òÚßJg¿Å†—@NHHXúžÂ‰¡TÅùzC¡»»{iªÂª5·u{w{½ ”еVQQÑÞ­-´ÚLºÒ³ÇF{¤!ÿWl*:‘Þ!oÇhÇ ¦¤g *&¦÷h}Ðy}j7ÃÁ›ÊcÏQÂÊÂÂÝòì¿l3ýkU¯º®ùŠI]Iþ÷nP¥âªZï’:§£µè„lí8óž¹5–å4F uÚÿŠözÁ 3 K;;¶Ä(-ÿŠ/ǤcÒO¥çC‚ëséĦGCÆôŸ·ÆL¦¢¶‘9}è£3šTõ+Ó½—FþºZÞW 0ÌÃ`)©NŽu5´/øœ–`?ª,•¡ ›”}iX(ä¿ LÙÇôz×úÊuÚ¸PH°2È)tv[§Å‹û#‹ìïÑæµÍÍÔÆ’û›MQèe¿¬œ\çåñ&T^¶®á.žY“mŒp™håÇFexø^ƒ-õ6® º¬AZôÁýa¨ŒÑ5ƒÂ¹›Œ||ðŸ?v——ó¼Ê&·;ííb>§ãÚP;®Áìåô¹ 8îO¾Ïe¿+‘#…ü äÆUu'¬ ÎçÔH…Ÿ‰m™fKº ÌïÈŠð‹ #ñ+÷}ëÉ…òžž'§úÛoN~ÿDH+U<Ôx¼­šœ´È8É“()¥Em²žIÀÿµ\J‰4‚ Õ—»%V¦HÿcfæU[v^¡<}̆R„”ÔDôQ m.íÈ/Œ%1£®†p@\uÊa/_¾ü60ÐÙ‚†CFö7¶ !qýyUOùØjáº5Ìž§P±å÷T’lß £ˆ8‘$Ã0¡*çåÐVD¾¼ó¶}äC‹“Î{Ï|¦û:¯ý–ØŠ»’5Å’×NNí×ûmÐ R¨J2ÔÒèÏîn ‰Ï.ö.ÉxÚå™’çç}DS½À]Y]Åyô±F7zw¶ÎãƒÓÓ¼<†Z‡y¦óÿl*‡ÝD¨mH!«î:t]oy÷‰Øe ÉQL¸!eNèÔ3Tº+vs± 5¿ƒÄ}õLÿþ½;Õ±5BÛÀ³§z¼ õá+.~ZlÐB œõ®{¹ÔØSÈØ=ÛšYVËÿüè€h™Ú1MW}“›{è=í €m¸K>Тäää8¹ºr'ªû_:4lmmA9ÙÙ4JŸùÞÉ- ›>£ß¬¶‡^ÜqÏÎÛ ù›ÃÇ×÷¯…¾þOÛï¹ë?~ü˜mjlœx’ww¤¯[òX=WA˜V`­2³)©åë¸UüÎÿfS¹>Q˺‚ƒ$Õ-¿Á:t›!dãÓØ>oÐ4ÇŽ;eƒ ²ê¨k~}A˜úþ‹q‰u(*Z¦Sæè6 Œ‘•Õñuƒ”Ñ_¯ûþL°ãçèUvM.ÑL¹1‚ÅЧ?T‘¨™˜PWûbëĺ¥ÌPHÙ$¥ÆBh[Ï8 m¿{‹9*H¹@aUmµä—(#Ø2 ]”YÏ („+Zb݉lrÚÛ_¶ã.a&Ü5ãÒ E¡–áAs™ØªP0§ñÁCe:›¢¨‹CVþ!ǹøÖo؈›=Öã‹ÃÿþD¼Dç7s_§]Ù'.J ýd1š æÚ’ëV†‚ ’TàFáùz—m9Iªn-ÄV$ŒiÀ×zƵˆ2«÷/&\|%ÌRŠ„¾åíifM‘°®A³Z$Ñ Yñnø=|û;|æ5Ì·áºÐ®lþ,ÿ¡&×u$ÛmQÇßm-Rê¬á`è“k”kGnʀ׃dra´/p¡ÒÇâAH™Õd,®©™h=ÿ>§'<ÿ"—}ÃãH±·þ«‘M®uØC`¸O;€áLuëþ] ºšö[#ONÞŠú‘£UÀº;5ê"ºØ½·n,;4¼¿" %#;ˆrQ[ÛÔê‘~í! *GýìÙ3YDØgAwL`=nûf—G)³¼+f?…‡o¯¾9œÖ”–§”Ö LÆ—ŸV”/pì`ÿ‹Æee‘c¡VeÚC›8U–#Ða+ð»P§¨$ß ÅŽ-§ bš E£cýob…Ï š—ÌeíÀnîL”t ¥òþm7ÁÎVbÆðú•¿Š‚‰ÉÓBÎe…íââ—BÁ q_AA›šÆáÖ³³3'`—ªFD"…½ÏŒ~|‡Zm8Ÿý™FÚ±)Žd¿£¿åÉ“'¿xHá°ßzùâÅ èé‚Qðž:çKIü©¥§Þ†`™Ð–e2.áŸi'˜ÀVÊåp´œý„&†Óâ{{º°7Tûê6€„nU^Ú;P^QUbÇÅÅ}Ÿ’qpàÑú‡XäRjj¸P0û¯Ú®1¡ÚŒl>ˤ¬é41Î¥€N÷;-ÃxmÑÏ[¯ÿ(7dê7îò/ãp©u @ôÀ,Ÿã,Éð¿ó:þÎ ­7´‡aùŽ]­ JJXr•ÒÞì¨Â‘ó³ñÓjA^º„¦&~o  ªÈŽÇxœ¬4d6N;)Ÿ,ª[ßpc¥,7´±¨‘gÜIH).  Sñi@mÊz–u# ðnµŽq#¦AæÇ¦mY©±GÆÍ]M‹[—µ÷Ÿ»¬cæô r2/ý±ª8êe[Qž¿E1Å (ƃÖz—rÂKË—0ÓÚO.Ç6KÖ̱rî Î* ÆågÛé-ï ÑÖ»ÕÊ(ÓôY¢Ä€€çeBµIÞªPëAOOñìŸßqpR s§?…É_Î<ìy)`uF0@önúFº©³ ©ðC0ŸY+Ùàïö!ÀàÙ¯ÅqUû:~bsJê}-à'¢¸eˆúë­¿iÝØúm.¾™Oáù­ËÇcù%+ym‹ ‚ JâÿÊl´xŸCl@X@š ;Ôßž³mÖÞ÷\5 n ¨ÛˆÍ̇óÌ«9@w(©‚ƒÇ~ó1&ÔâÁyU’ÐËÍŒ>šX¡@¨›àý©áýƒñÂûFбÒ&wVr¯ßT0×2ž£Õ<Ù„ÏÐÒÒ"Êľ­«ã…A¸ª¼'-$''ÑnË@­²í슭EÁ¥A²LmCòðáC MÍñ¿›X‰‰‰@-Š´ËzI›ß’ð:|V ן«Üß°3½}}‰£‘$‘© ˜§å°X<í«6?2èUºÏÑ‹§zµ {*ßà!‰UMšU”¯wYGýõë6Q„b*O‡têªõÓ€ôjè3·Œ«JÈíà`(ÿÁ‘h¤÷ú@"„G ®6cŒ';“XPÿ7€+v&X bÒäääPcè°æèo€?{Œ(šbãڋɹoºUcó'ý ŽjFØ—M#††.ª¬½ sðl)4ûÕ^‰õ(¶ÌeÂ`@D©žÐz êî¥IØ0òi  Z`I†Ïæ*ì ›þÃó;7•™c.%©ÝHK2jjNF \òOûhC¼ÏÿÆTT Çjô×±:@^1.åJt ÓµžÓO'á›O‡q(fzæŸJú¬3hk!ÿô³ã®!4üz•Vœ®ÄºÓü§cÇJ÷‚‹UÑ÷7ûÊ d7ðÜ>Qõ#!*çw”DjèZIEaÙ ØÆ5”©|¼Ò¿ýsðí—H¹»ö€š(Ž«ã_òŽ®ùÍÞN//øˆ:ëìш¨¸°ƒ3X¿WjLø¯›øŸœl†^¿I09î¬×ûmZÖ—íëþø4~.Äož×hué0—ßÓa8ähê–`Rgm@æ±vß7g´c¤N±P®KÖ£]øþÚ”?Áí³^|ø„‚¿ÁC\1üP¼W»ÎYp^@ “ÉØ”¹chqiï‚xk‰uB¼EÁ»¡›sÓ‰Næ…È/–¹†‰¯|\€ÌÇ‹•Þ-—W‚¯lWÀauèM`܃Sâ•àöjܸ?G2%‰ö[ïô±¸ŸVÜHsÛT#A‘Ëé'똀Ñ9ŸÕöŒ±"uLÏN˜˜/(MŠ«Á„!õ]£C¡z:U&P½Q>{ÖÚ¦'¸ðeO˜Ð|¼ò M6gÚ,Ì·ÿÍ xèUU[úËšMâœ16N O–›“ñ¦âŸ´Û•º21ÇÑŠðÄ7>„,ê.å ozyE¢“…ž_ä9÷a 6Ž«¶K˜Xéß‹¿¸TwŒËÎú¢õ$ í·–kU%ƒÅE[öo¹#«W샢̩yW}QŠùû()¿CÈ;0ù. J§¯\·ý`îjF£’ë?ÄõÏ]­Sg{X^àb’ò¼}ògÊ“(Ý9Õ©±Á¿¹¹YÚÛ‹LT"oÔx¡°…çÎÎì0#€A11¥Ÿ?ð?[ Cb>6þMPß•RƒÅ>=|~öSmíFÅbB¤HÃŽ„™ed>Öþ;\²Uç¿>߇úRCÍÉ€µù~r÷ß ¨•î£~† ³~\ÀÄ7†Ò|þüÙ 0y˜˜ŸŸÈÕùþbn}þõÊ*JDøÌt‡¹¶ŠK êwŒàÎÜ-f•~ÿaéþq¦›«Õ%·w1ºòñ´s·r‰´(€n~óÝ!Öu(üþ6 ÜA×ÄÄDµá¿€SQQèÀ¤C))`BJ¦¦¦O*Ž!‹¤¿Ïonž"Àà5ר3ý§6„(ñÕÙ.,ÿÛ/ IIŸ¶œˆÔ²2V˜XŽÚ¸§è_ÐDO+O ¡’ééil‰öùy2ÖæøgÍá†>®ÅÆÿÎê÷ñLÎ6_X‹ÿúØš['#ä´Ó©|r]-5D§‹JZ8Õ•””"T‰ï ÿ%Dš,3ìƒ0C†O¥’6o¤Ý‘òJJ¨pèã,ÜŠº=°¨S}bè7£&$dþþÏ¡[-…¨hÛãºÙÂÝG†/—yá¡þ cÿ¯L.õ°4nƆ|Iûž!æ ‘?mr¬›˜uÌ/6LÉSkﺃâ3P¿¯™ÛÃ)ÓØ—Â%ñ555—ëIIË]®k»eYðÞ†Zó]üÎŽuZéF©¯¯‡šçtˆÆBu3€þxläìÖ-®Ì5¼^RäC™MÂ⦽ñ âçò½×äù²–…™óR á†AõéHAH…¸X<,$1ÈvïY Ð ›œ.€„{½>SÙ²ê¯ ÌÒ4gPðfX¯éàýWIm¯c›¬Î—ð”Fv•_±2n°Hc¿ø)FÌtÔ!ãàœ2Ià²FÿHä‹wP 1³cS&ÕËy¿„·ðš—Žž^—´ŽoÔ´ÛÚ­Q-£~Di¥Ìí÷*#ìF]WV)€MGd¸å‡6‰Šk 99\é<¹¥‚z˜Û{I(ø!Õòë ŽCø%î¤_qçϺc•ÒŸpVÞv¦AbwÖ,­»Ê„„ë¡TXÔ¨=B\¬e³r¡ˆ3ffs3)´ÛäáÁ777mR@ÍtöÊŸÚ º,¶úæÞ*žñœ¹Ü½u÷^êg [îÐÌt:m}œªŒLi¡NKîÇKZõ¦+¤,²âkópþ³ÝZÆXíKÇ›6šJˆh~ÛŸœ4í F©ßL÷>˜¶ÌèèêBXô='ËULEÂÂÂj"'ù˜‘±¸ÂÙ‚ö•žHoÏZ—WWY`5õ¶kS“ÊÚÙ×’ ¾Íéâ‘”f+ÍM$²¼pOÆ–{Ø‹ÑÜ#¶ðõë}rĈùʤmõšßHzdÊ7%([·’_Oy¼ @_(GÈÐç0dzàt¦êP˜Zmj;´ù»Jó¥ÞNiíº€¿­ÿ1Â/Q‰«¼lÄn/›WŸ,FÛÕÜÔP-ùËÜßÏÕÌûVàñÃJÁž9öÅy,‡è µBáÄ…æéj_à æü®wU 4ÑÐ8w&>Ò¢ ¦ùæö¶ÂóØ¢àj¨CHû[„ fÕ_¶Äš~¤Xx+(ÿç@ZAú?“߯{õQüÄ…ÂÚr_0ÜØ(àáí½:ëØVÄ”ŃBMMr ˜~‹¨¯ïskkë¦u0ÜÀ¦¥ Ò¡¸>Ðkž]ÊÇOu(«uK.–‚°aìþw>™ã6=Þû-Pþ¼‚¹v‰.Ôê(.5•ù×èh™û`¦…PÛÕHÖVl@áwk_jjšŸen}?«;kÊ9C@@è|Ÿõèø¸§Âÿ)<B¶-Cä[„‡¨-¬ÁØPy@Ö;­¸t…J=g'>·ÕŒ˜ºnã8¾*j4`¨~àJ&«z|luueEVã ‡ ¨ÅÀXù¼ÏŠë‡{ ò‡öÙ%›;Ѓ=ÄâiArÛ¡[¡ 'Ki‚‚vÃýÙuuuЉ÷º¹4h“C:[õknní…ZY~>¶²ª¡áâ¶[ö·o²qŽ3"NKáQQ\ãÒÓ\S‡üMLM‡þ1² ÀÀîP )EÅh6âè¬ÂB9d*)IÉ •¢q“û»[ d*rÏ5œ ›q&u2{²Éf{ÛáÅ™Í ÁáEâZ¿Ûš¼KO._ß7tžB¯7¢¬¯»#𨅄šÇyf¼Z ‹ŠBšššøünê±%ÂEïcWÖ“ ÷ÚSpjlH“©¨›x@uðVûby½oÀµÐŽ6´á_ßÔ$Y4þ·N À+àñ&²Òá`°W¯^éÎ;$¤¦¢Ž]Õ— —cýJïÍ›ê­Ã³;¡\š§5 Á®;T\\V{£»Þá3³yXññó/öý­'è4k_GõäI1ZCɪÀŒˆÑíñÙæ>²;¯¯/×øÏMjŽ_'×Ë]qII“6$ö†L‰¨P¤¥õj›ŠRxŸýaÇ0¥ÜFž¸é¼iñÓ±íÖ-’u‘E¯öKi)æÞÞ,à‰z® XÀéì5í»5¶ÀÌÌÍőᨡ^6ê+¿¸^Tj¦NÔjhCDs²T¿+á‰:›ë¶Æ¨³ÿE´ýe7[‹q¾àͨpý”lòçñ¾ƒKÝ¢æÐ‡ß¡¡©ò³\ŠwÅq))ÖWÂ44ppp%µÆ[—^W[yP•U¨NyýjŒ 6ÎÏujûÿY¸¹tpíeÚÇ„€wïÞ)¥ù»¿oò•G-r¾ÙŸ4ÓsÇÿ9:Ї‚‚òæàXͰ™O‚îÏ <U©½"«Çb¹uyuZæ]YÉaN‹ï¿U®¥ì··b\¨·oM¿¿tv®¸͸£•NMM…ºBMÕÚ§¾LJå…”õÝÒ’dÙ­ÑB5‘¨¤®MG>9ì¼øk*´Š ã<É®…PgºÓú˜êiÒÂcË‚[À‘¡³eá~·WªÙÒkkfU–CŸè4˜ |häûÓ…^ÁE‹–]>®«ž'ÛtŒÞ#>öغV;Œ½ ÷e5CË^n‹ÕØ …‚‚‚ýÍo• ÛÉRÌhO(ßóžJ2¸¬¬,YнtË"{õúÜGø|îu–ÿýDѸÛIB„nUô1„1¦½Òe*˜Ëš?&õ9›¶t £&Ñk»+,§ÙmÙùv§ý$Ë?ò-him¦…Ìý³`üŸ)·(661±@—¬¬lùµ9 Y`ýôóÛÑÍçõ>_H÷üž%_Ôe"§·ã[„ómÄ…›%&'Om‹§>ýt¶l_7€ðZ»9JjK$ ÓvmÁl²|%µ^# T>ÃÝi‘Í]v™Âi9ó•%k¯9Vж(9™Ðmdºýö|1ö×/µ†.'Bé  *8û¹ö]œ),e Ì}¶œ¡Ù ÛtR2ˆXn'n3‘¨è «ýBÎ}Yw#Ç2À:™I]÷XÙ=Êž!l>Ž÷ "áùÚ3î(Ï7”^¬mï!º×  =dÆ9BSö¹ßšwQ{-³¶³¹²bÒÐõE$b€§rç-„ñ‚ïlêëùûÉ”ê€'ŒDÜ6õèB‡>Áaò{²Ëäœ@‹r}¶+©¡ñ ƒ8RêÙÖ©Ôñ¯££ãàè¨ õÌÑ-¨Ó'"RVq1:¬ÜuGKJZ:«±‘ØØØ«ÑLbtQ;‡òÎ\Sû?0 ’v9s×g.äž^hG¼G”Óäç)‰{Õ⥹‡ýt¦Éõׯ_°1†º Šø ÀŒvgj¾}ûep#Âî{õê#õ¤„Nò€ûŸor$8)ž6ó˱ª¬ÖàÁxqCëkkKÀ‡v½|ö«m`µt¸½?€U%w`WM¿nS¹·ý›îÆ…vŒ:»„z}é†#bÄ(žwS~<0àö3öÅ·¡¡çNNl'^¯ôõÝ dž?§âç'üæt°$í°HyzòKÇB/tw±š›ÃF²³¦ÍúeZº?Ýçþ­ÁŸƒðë_À¤•ÕÝ žÙ‹ ·~ò!¿²[~Ú1E¹T¬Aéôù!’òÔa„‹‹ã<4i_vHd²Ùóúai0Áþ”¨Í”uÔ¤}¡ÓàBÙ4(4V7çù2í†)J¡ûFžðjÌXæÏ1Y£†;‘âA× RƾóH.±*åËÞKŒh$¸:½Wì pÈͳ«§Æ/Úò=³&ßxÿþ‘y,ZÈÁL ¸§Röã®Ðåíñ"BA·§>ý­u”qc™êŠëZµÛlþ ók‹?*J›"먦$ù‰ÄؾϽú¾?Q4¼t×Yvn>ùKo¹rÿ~sŸ+1»Û_tá ‹EöIÀîUXý¤¶â"†\%;;»N›Ÿp”4 ÔÃÌóxÃxg¢ ˧ {)ÉÏÿÄf; ¬ô_H`¸¨3Û](Kh‡•VwлÆßÝ•¾ÿ<£#÷ @œ‡P+†U°›5ýñ™>”˜µÁ¹X#è¤Ôü–×aBÏË»»ÑP aNËa®y_aÏ#3 îG¶ÛìPð?~Úýu¥“°¢­9Þýã˜%;5ëZLASÎ;=’ϯè„CÖ5µÃóGLë¸qâ>ûç^<ð´BÙiµÙ¾±®áUHÓ <ÕËÆ¯Œ/ë(á,ÊH(¥dW?‘%ÿ’‹ÐyÕr–.Ææ2À‚ÜØ‡€ºùåkçË@K'Q)Ñ ÛQžˆ|wˆ¹Ð~äÔŒA‚ð{Ӈػ_öBuˆ7Ge’K3‹(j”ý^Ä/­1e6–“CÌSÉ~Ö ÅÙÅ´½ng~ SÑû°MÝ¢8«î%¸úv2ìË–¬;¢_…"°XH!‘ð‚éÃíÓþŽbl©m dj¢Wר!–Õö ÝÔ/Ä=gY™ ¹`Ò½ ðý/;_Jtg#àœ½ç‚¿¦ÚèBžc¥°Þ7ìs]eŸÞŒ«ºß$T ¼UÇç³VÜVKv>õ{˜ÿí¦¦ÄújÔadB,ógÚ¨Oa‹~" w\§ûоñ«,°°cÇ­º|„QgµÒï[™7á½%!‰ª7ÎîïL}í’xð;™pçÁ«y½RÆ×ƒ²îBw—l¤zI}E±RcðPüŠœþ íEp‘Šg &7ïC¹_CEÑŒ b4Yö‹öó²[Ö—«‹=Šo¯ ˆæìwñâVWh—¥¤8 ‹ìÄz½þ\¶EɳÖ×3«¤«G¾+:Åöz[°Ü"ߊ7?5 eîsló¶íÕ!’ J #oÿ¼…Ê[|£†ümUá, Ì_4…f+¹9;ñó¯°|¬¿Ëɹ{êŸжÃ%NðQ‘æÆø²!«AçÂôËÇÉ0qN¡‹RkÇÞÙhW%þ™øâwqûÑjL‹ki§Ÿà}E¶ÎÞûðü0¾2ø8ªû_‡ÊÂdŠæŒß$+×£~‰î,½ ^zEË2ñ¥6K|¯<©±h¾àx¦2 Úû_«ãžªÍz®Ç…‡Û½‹ QÝÿg¸·øï«—Âú¸”÷øì/Î2°m¶ä8¸…ǰäËÁŠËþÇû5mxôw,¤9Ó>Ü—B¥´¯å(¨eº¡ÒNù2ãÚ$«W¶ß¦T£Âe|ÙŒûêëu‘₦†¡‡•¾d(Zâ×ÙRÙÑX¿]—õ&xv‹±n&&ÜØ6G…£zͧ‰ôôî6Ió|hoö‡¡çrkX§NDÂäkª()© §Hœœ¡©XË̽­Õ}¼"n–’@¨™Š”;ÇK¶ù³øö…uü ×LrØÅÍ Y3z8„kxÅ5«¿æJJO æ{œ#ÿߎ‚gc]/ ÄÚàHÅÍ"Z{ŽVWW—/.~  ½uѓۆ§*935}‘¢˜]lé·ÂþRGGÌùeµú¸—ÐÑš‹ÃU0­0ØSƒæ) W¼S·^ðuÓ£ÏMÅ}Mj¡BÎçvìÁZFqå‹sssˆXÛ—éÖ ÐŸâž>ø{Á Ñ/,8wÏod¡óhä¢0evt„l ÙÏ)!Ù¶GFùû7zâââ O?oSçªîÕB¡$ðŽ€v²½ÞPøýFõà„²Fò5˜±Â³i1ßâœâ¨©]_Fä\»>»º>ïB`32J(T?•Î5ôW¬K½kõ:µùÌç ì½$p¨Ð©çÕ^àx0 öÆPŸF€h!ÆUt=::jô‹—:‹þ'Œÿ°cU/¬c\ÿ­£¥¹Ûà—"-­t-&fï·8(GÒçþöæ@Ÿ‚—žž ŽFîÇÔÞÒ®9«~á“ ïšpm®Ñ&×d·±µŠÑüëqÅ-,è'JôÂ[/‘þxýVJljëZ‚N÷¸ÅKl¿Y™ÂåÛÀ@àß(gR”¥ôžåùóçawÚá†êªç)ížy„ÿƒ,jOwo¯ÉϬçP©:ÿ;!“¤cAÖÊ"—ˆ!!!ŒOŸJ¹ºÖ|ÿ‰{ú7ŸlìzÊJlâWŽ<.n =´ç %(­¬®ÂÁö[ÎÉÿ–€ Y^íeÈð1I•ŽøCÚ÷7FöÚcÈÅyó#DKü²ØÓØÐûý™l-3xêòâçèíë_9þøÐ#ôجa†åkC{©´Ah†‹bWyÏ6² ^‹î«Ã š#øãuF­äð=Œ­2;úÛ㿲.¦=K,«š3>±¹/õ8 Bž»5¡¾Ë†5YšeÙ¤Íãð ýÕ‚ü'?»ì¿D‚¯úá:íŒÖýÊûiõƒ¨ÂT €ýA2ü8ÉÕŒðʼn¿3Œ¦Ô}¨5’OF¬¬ZYƒd¾Í-cósýÍ7–³ço*ñþô¡(؃5Ì oË7ûŒã‘i–6Á:¯y@OxʦAƒ)î_ǰ±²ü-ùmó‘•%ž¼“‹©H’Ò–¤Ê?>ºqÞö¸3QùOT”æ•›òˆT>øÆØc?¸ð»V¿{O®`U£¾Q‚ƒÑ êÔ’8űT'{Ûÿ{Wu¶¾ÃÛn±Q¤¤÷f­"Š€¤’ÛBTJZI¥C@$” –FBiiÞµ6zÎÌœgæœßó{Ÿçó?ÌÇ6ßïŠ{Ýq]÷*0œ>¯Ô³ìïž’Û°¹¨r]Éæµ³Úø×—¤òà”›±ìÇcFg̦i­uÌ»vvÌ­½dÈt°­»seõI¯A ¾4µÂ8(»~uûWÚ¶yƒ}p®ç"m®‡®ð‹:’'£î9ŸD[Cpâ%÷—WC:ÁT¤ÓÈŽ3Ù¶sƒ6 ÍnÛh½RÓ¤\Z›±.²o§§i÷›ÌÜ„Eó£Ùy>5ú&oÎûÃʆkC<Ûˆ® ²NVãºãßÌmö¥zOÍOn p‡ŠÁå(p–qS£:XØa*²çq0¢/sM†Û]êèY|"®ôT&§Þã‹5E{£ç4RÆë_|;(m­CնׯK¼âº}ˆE?»ü2»ÑÚK¶Ÿ6L÷ *6rG}š|W|æÔ˽m7^¬ì¤ã.žóP(Þ»xDe]ÏÔ°\ŽÝàèjÇKý»ò_±a‹h­we >8Ÿ 'Àì¸hÛ‰M¬œ¤Á DÇg"»ëž¡àÓhšH%†èBðsa•sî6æöƒÐÌHCÍÈeùGÓeV®®âpK`œœ?<{Z»õÑ›³‚Å×d¶hŽžŠåÞØ˜³¬ðˆhÿ¨|øêÕ«ìGµò_=ÂÁÔùî–+c§G\]]áq– !ž=ûȸ1ugs/¼UgF²Éï;'º»»›kç ±Är?°9&¶Ï¸´1MÓjäòâr÷б(W ¨87uˆ·¦Vg4±Ëïyömò¬B´x~eÖ®éàïó r-LwqÆ¿ò݆I~ªâU[ß8`ðÙäƒÃdqÕaêÍ›#¾ÿX o¥‘Ô±P"“9ÇÓ5ØyyÓJ­ªÚðÿš5UÐäo\ÍŽ}e·¶}³ñJ 7æí\âA8ÜÀ9½<4r7ðJðJ˜÷”Ò¶ó÷4 ê±Gåá=»öï÷‚ðõSU¢Ûï…¸kóÊ•+ܼ…Nך€ÏÝ}èЭ¡¡!â'"òx æÈ¡ î­Z×”L\)Œñ.}lÒôð…¶E±gmœœCjú»w ¨\½º6­õ¦Ÿß›_މYF8î×¶¦{%ã„ÖóX)»>ؼœò]=ߺ‡ §Öîe•ßzð°Oâ¤/ýäÆõÓÙN|ðæ;--ÉÅa¸Š²>IiN:t&—¾G+ÏmôDqàÒ"xÊ qz¨Ñq¢”> °æ§……ƒÅUæ&Àê@`.ûLój|Ol7®¢ÃT¿~Œ]>ðNt´_»\Þ‡æV{m>¦æ"ßîîK|¯¦¾»¬’|?N%>˜á+}anb†GN]9ªiùù¾×%SC…}Gnõ|Z ö±åUœ)ƒÿo¹ëx%9.®“éëðþËÙTx"· `ˆ{{¯•±x0K ‚+ðí>ú”Ã×äsí¶ŸŸù´•örqWŽo|<\öàÁƒ¹¥qÿ‘ӈܓ}ɨœ²Õ{X·?â±Zð?Þ¦o·þòóçÇ—½½jdÍ;--‘ßÃ!ÿòäÍövÍGºûû=?G»ì”Zù&L­‰6 ÂÓLþNÏ:Ä󯏥¾¬ù°“'_U½®UíD›Å%'o†K@2t oÀÜãPC Ö¤¬ & LšøàÑ\UU;âNù¾Ó¿³2öàô'©Å™QáQ ­¼'FãßÚÄòx ÙæßhÞì8ÝŽÁíª6ßÊÙfqVå´ÆÀ0ý3ÏTB[Ì”Äþ[³xFªœ´â×qeppn=6ÌmU<—Kòý×¼aöÒþýû;êÌå¾Ïí“doää ¿¯, &ž‹¸ñúµLþ«ln)©’Òšutâ<#û]mGßp›Ûp†¶¨‡Ë§žÄçÉFîw'GÓJœÜAŸ°6ГCåãúí›G¼R¿9sd>½Ê_¢X†«!w·ÈbÏqDÜöõ-•õê·ä¼~ýúÒÒ´ƒ/< Î!§k?a;vl ÌþŠå©Ž›þm¸pÏDmT’VGóTïÓy¹¯ q×ýýýŠÚ&Ã󃽗̌ôªUw¹ÍÒr^ZÈq:nòc-Àô^0{ÊËËÝ‚¸”ŒIÇÕ^h47±rï‹ÍË·nº•íœZÚ o-ºa„-8)÷̼ÿ›ñXF^¡Š…K™½æ;xÂ{šÝpÅTOYÉç[þã’ü’‹Álå³cèÊ¢÷Ü»uTzó‘¡´l\ù:ŒzN²ßzé d^J$É…§Å>+xðj₳Ôï&A÷}õ;ˆ1NÎ̤—ÞœeóYñãø¸à™³g=wE¹[XÀ=^ '«-JŽHºu?8¯Íé?ÛáLßlÂQ]=ä©uÿm£Åî׈ïî"¥SÔn¿¯<1ÿ9&¢4Û¬ “  FYi髊sá¡i’’’= «B!é ÊÌ¢ÉÛá'ÿsô^ “è<3Þ%¸‘Ž™ÏQ¤Î<"4'䃶ñ ¬aj Öðöíé‰Ñ'][\¿‹³ˆ#x£Å&N%ÎËñ1Ó30ð 6KII©¢j;áÜUžÃ2(•ØYäô²¦F)¹Ñž¡f+Õ’µñÚ Óö§ç·³Hê<ÍÏ¿<¨7Ü*™S¾¢ÙdÈë„.Õ‰¥—ZæWrµm>6Q«ûIžüâ™÷¤sÔ‰È6-š76Æ©#?ƒñS¢ÿݧµYÓO¤Ê™NùgS&†‡M Œ‰·JJJ`ßVVîÕÎ3ÝÝÙÙI€‡:æjM¼ØÄ²A\þ6ϘítQrtrºW‘¡•{îùcÃá4ã“’¼ÅÆžž|wO¸L­æõ­½¥ôú®GRSS[ͲSS+F’"Æí]­ã¡­tÛ·ï/Yyö¶¦†žÅã[Öfð»ôæ€ÈH¾;¹§œ‹wIßä×λ¹›ýÔæ¸ZɧŸÌ´m–›$ýG£Vx3‹ØÆJVÜœZ·4Û%¨ç6­ž}Δï>p€sf¬ƒÎÍvyÆÆÆ*,ŠMzP|gËN…4ÉLÞfœøøAµç•˜§?æ¨sZ«¥2äUÎg÷²š‰Ù€M1©‰–X{ì°¦ÐÙ¥•®qÐ÷T@xx+›Hœæj/Òjlý7f¹ã“<8Æ9ËcÅýÈõ]þâ“7/䇤øåù™tæa>[Œ~ýÐ9ïåéyO"Ì &zÿÇ©HY9¹ˆI@D¯¼è"fúV*š8ý}+lŒK—†•敹,±Ü¤%£]ZPN‘B„«pîGKÜýÛœ<ïïAc爀¸UÏõ»x«X8a nàó›ÍÉIWãÑæ8“ º·æ9:ôaœ¶YãâÙQ2ùæ=ax·\­p DÖ?—åùÏ¥‘"6¯}ã®§¥¥Áe¯£Ã·<•$uëÎ]?}â ^-AÕ 0wV±áñ CQGËûÆUïSú:×Újn²5¸ÉoøtDÕ_½³£Úázò›PÌ-Åù)T6À)¥Îù憆›ù6Ÿ¡F|üü¹ùSGtÏÈ077'Ž|Èb;z´¸§,­8±‚t^k“ÒýŽI¥'Õ ~E~»i\6}>Ì´þ˜lëâÕ¼DųªomÉ­¡Õí&O7],°M¹‹¢Ün'àù´úo,>ßÇÈG¿â|Lº¸¬¥ò˜sªó€ Üí4¸wïžôÍ蘼äôÄ6¯Mwšü`{f·6‡hâÁ·9üQ¥}Yƒ¶¢Vð<´Ò×6õï,#Øuz˜n¸KÊBpO—`‡ä|ÿEà‚ج¨‰o[µëˆ~eŸÌ¦¦rdC%×µÒò¡æUAe‰ª·?°9å =äÍùL‚ääÂÝßFû]\¼ΆU0Ý>9|fò‚]±¢é³YŸ³ÒyøÙ‹’‹4š©-ÿ,ñQU~‰óÖÍ·¢ØZžòÖŽyVJÌÐ`¡¯Ê - R’¼uûöÖ퇱ïLõUTöÀ܈[pɯÆÃçµqbŠš¥¯_Û.0–@ÏZÁt*³ûSß•oAZjô'5ë.Å:7<à5zÇ’ãví¬‡‡æ·ñm÷-‡æ:jš3tO::>5cc[ëääD¥dèä_…&8’…$½¹ë^SUå bC‹{‚Š‘³fÉgðb®³?RJob9¹ô;£ÿàÁ„–ë• •uûPL÷ò<“3ð}ýPômkµ›ÆÍ«Â†ï}Ü›qõ¼Å<]T5‡ßñ%í†{5ZX’ì÷Y0^·}ºI_÷ëÔ”Œ´ôÚ-~ÀäSìùÏ©0Ò¾¹n:zñõ² ÇòTïA…ysN7OýL¦Û.ËŒë=ÏξKùP_ wöÐûÔÑ< \ìÖjµ[çžÄìk•þ"ðÞôI5k¶Ävx4¼ä&Šá«¡ÑÖ{~ mu»w÷]v6ö¼·:L£çæn›Õyði®a—άÿmŒKaÍpíÔÓr&EÿŽ-òåTŠæsà–Ñhÿ0ÜÄî÷ÊÌH .-:2æ.pgßžœùi7§õ—Ie~Ó­G÷¦8ˆÚÜm?òµßù^˜ÝÎÙ0­›Ê…Dî†×/´µ¯ Äù³!‘YgÍ>¨(+ï‚`X9Э[Rë¥5.•M;X>擳\ˆO4¹ZïAK¢œXjÌxÿÉßÉ6ç˜Y†^1Ãæ¥†»ð¹ÇX $®ïZ{kÑAZ"±¤°{uÿ‰WÑ×'ÐK9§Ø©7ÝÉ™Cb½~9ûÌms›01>6áoëÙÁs»ýÞ2­m9vNåP ~áZRñîSì¬"kݘr½"Óá §3|º;íô•G`”דÃ<£t3bמJ_‚…ѱ´cÂåkóGô­aJïõl>~pÃÕ±‰;üØØ<ØZ‚èy¾Ç¯]š-8}ß„âŽ;í8ÿ²£FýÆÀM>ód®â¿LRö-éÔ×mFl¥ßrd6»2|„6õÈ›uÖF*ùå{ÖVÆ5Ï“é73HÝßÄÎþ8Zz ðÂÖ„0áö%ݪM¸¼—ù1k‡ÎG¶Ð^ŽeÖ–Ø€‰Ä ZÏÚ”öÆÐ½zk`~…£#Ò/IDþÈ‘/ætÜ:xYº.ÚØ)ãúÚf~ÿA5·7Ç:.Í-0Oòj\öùÅC¤Ç–íÏü{™ÊÝW3\„3›Ù•TyÁÃìºYÌ ½U ›Ž¶[s ÝÉùVoõ¹ug¯¥]¯3åôwS·{Àœb’ÑÓ”dþ"î0»åÊí]O§T"jºÝÆkŽ9¿uŸ QÖDËÀnŒÌ­ÇgEóO9´™Ýr ‘ñé|AwõSâ8ùÝñ9ÿ‰çö‹lžßPø°ümBáŠÃÓۚ̋ÉÙ1ûî éz—-ïÞñÙ}e1µÙ¶ÔBÊ'‰b~Ô~óôÆÎ“NýY‚<ù®þŠ´·Gl<•sŽª4ûœKgƒAb(m»µ—´Äk o_Îìlˆ[ õ©Iå¿:2„–ß\[­– #C6± Ù¸/ªž­[‘Ÿ?9>÷¬gˆnÿ—-šVUÆÖdZú(QnÞ×]˜z̰z`É|?,̰þñž³k:ÏïZýDl‰°F¥ó­lã4”ÂcZöRtÑ_ÚuÅÀ·pgÇþèô7ƒþÛ,g¿w\?$ÆÈ•ŠƒÝ díác^V‚.ª»W…càÍpSÑòÂði%¥²v9xóp¤„ËÀW89ùJqùNAê'N¬‘>y®j5ÉËS³ˆ fbnúû—úˆZÅçIr<þ¹Ìp¬«€ž?¾ô„9rõæMòô×¶¬ùNá—†BL[§6 ‰Ž¦¨yn3#w33wŽ=û¤ÿ±êIºVTT‹ƒ‹+‚É´¨~ùZwè~¾f÷¡C-CNÊ1YçöHa–bc;´ß áRs6ý„W¦éø®$ûÁQyi77 s?o€†¸yy¯IXk™]ØRV¶I4ªºGR>ðýoÑ|¦¬ ?ÿAròæ¥ÅYSR£1@íkެWãQ÷Î0OP¹ÎÀ½okö×û’$1˜´$c…êvÔûù{>x¡Ï=]»ví¨(³ÖêŠ éãÇ.¶’ª²~ W©v¿Y½U¯&©À¸ÈISô }—ƒx¥üS“bÜà¶{{ìãìl@$½>|ø`?»æ¸¬¬lÒÚaLG!»®'!ŽÀLSK¶AÄLÙïÍp–Z×gÙ7ŒâÎÙ%ÜcºéWà«§§çºb’‰CW_y\i^fÊx’õðÅ¥]¿ õ“êoÍý¼-W‹_\B^ò&K¡PÒFÏǼ@Âä.ÓyM£ãóýZs¾ÖabûØD,߱ó־=â¡_Ô¶ý¤Df±rœå¼ùöÌŮОº’JË.Þ–Öý 5 8Zˆy, \¦\ofO“TçÕî-ÑÖ^'9h» ì_*[ȼ0âÞ©\ÈîóüEIßóªæ ÕÙæ©Œ±·á”{wUjiôJ%œ‡_ôL‘‹Z’[s»Úhâùð˱²LÅ¡¶¹¬l÷®‹S·´R½ßí£1¦œ|«Ç‡!²=Ø?«fÓ¥KñgÆ,o’a¶ý­"w$Çv†~/…¥ŸK.ŠB¢føøLžBHùÖ/YnösˆœXïØçÛ…Ÿ6H÷à8wÓà}©EŽÏ×!eÕ‡P«Ñó1»û“i¯—òÄfÌîz°]znMÌæý[«‡ß Ên_³kw@~²üº–‡ŽÊc8ެOŠ; °\W-`¾•»ØÑÌ3yG[ ¼°gýó¬ÊE¿¿)x Ù}ôôm<9ö¤,¬ <¯„m{š©m9} ÐÚ®ê i³{ÌAy2¯òõÇGL³)“†fù “öZ4æÍV;€p<íd€¥¿?y€®ˆ¹•w\\íÍsXÂë›»áɦw‘¤G&Íõ¸[×Û¹•§ÙQ])]£w²¿’)5;ÿ¤×Î3m^g¤/\8˜gÞÑ:øÕÏÇ]ÚøÁ¬£¨°ÐIsî7s6á9ëÖ}÷úßÐÔd/šñìÝD¼n*}—tw†Ó•ƒSÅöEÀ šà!` \ÃkÌà„CO©÷¹Eò½}|¶ÃëÌÞ°ã&9è|ˆÎ«0B3 ޝF#15ÕDx$pÀ¾!¼špkb”äø»w ª:À(4˜²Æõ€ ý!pË"¢{ôI×)--¸[Óæ³"œÙ²eK”_šÒ^xìãll\œ¬µõã’Ë_ýþ€€6)©®œñçWÖ±¡P*›ÈÔgº˜Tæj6n£Øœ®Áës*ž[ö$½‹ßH¯º‹€+įïŠ}ö¬sd^Äa,2¥½6NNVE%P}4èžã×Ó2}¬Û§Oí‹J»²Â´Ô¿Ó“ ·e›_éZñHרFGG·ùÈ}•-ÛWvé¥ÛåZVÀ(xîj§[ãàø–I1æÎÝ»›å[¿Ýºu+ WrÈ.¿³*kútdÜðht»¤Î˜29lfÙ.²Måz—Ç™G"¯z&o‚„âmíö¨k_äÜX}Ü-V^fkÁÐÒ!¸e5B˜˜ø2=mfçô|&qtPa‰Ü7ZÞdô{öæ&“ªÀ¥ãÊRâßñÏ]¼Dß­n²Ö™ž˜8¡¥n´4|ôlèÝÄ·Yö±ã~ JöfbPq¬ñå•™¬³^[Å'ú…VƒŽWC@|ÊEmÿ¼äkÎÛ!{›uphCªÅÀ„·æÉ»øjOÈÝ»7?¾ò"½¿â®°Ÿ‘ü‹Oº¾m¾šsß÷œdA©ÚÒTQ7<}!ÏôÐÕk×>ö÷{Þ6Nª·Ë_þÔÑ÷›E»­z¿thOœå 4£1_¯ž>ž³/á‚áü“Y‡á9 ~LbpO$Þ*¶C]Ͱqÿþ}Àƒ*©TjxÅ)™ |…ö£Zd2™ƒÙ/çÇø¢<ˆ+Ëò£tDc—áxg1<θ"„7ëÒ‹µˆçðÎäœt||<܈ oøÛ³gÏÃTÑp2Qf§B G¤ˆÍƸS¾kÀÓ}LŠ9¥¡¡á=ÖØ¦;˜gžýûó“Q%¹3Ö66»·ëÑijjn>xfÉ2ÓNg^<|)9#ãM¦û4oZuÀÃ74¬çêƒþ(Ae ÂØØXȲûø€­hvüÙÍk<¥kÓËãÎ$ת?Tã9¯ªJšÈ0=;ýäÀ“ÕŶ¼i*)Ê:„¡Î³YÛúê– î\¹|Qoòä:« `f[ïæÍ›áÁj´ÛFŠŠ“£†l%C{Ì#&ggåýŒÄŽÛrg>bYØ IS~>£¬\¸O•LËMÇÚóŸ:N°¹/ r‰¯|ûzÓ×wÂÑÙ™íÈ‘5ZéyVwöïÏÓMáÆbxà¿ \¸»÷î½6=Üìð4z¦Çl‹dp>³µ"/‹IÀ%и„Y]·‡™¨î/&š–•fc Œ·F6ÓÜó§v¥+€5;S&û|uîX;»DyÔþàC.0ûÁ¹×¯eN6|RRPðÑmV’ð‡:·S€$‡ô{åe°³}ãg÷âÞðãTâ–@M¯K<Ù_"àFý"œ$ˆ;ìÃBŽ˜…ØóvéÌr]¯Þ{"dÅñø$d§Œ‘m¬ôëÛ¯ Å:çŸDÖêW^)ŒÙö¦z‹á bH£©ºæà÷DkC%Í9yõx”‘Sý¢#QAžú%û$wóä¿ °ë¼ŽŽ©z ð(05±þþtð肚>˜ªÓÙñ ( 5Sj¸Koç*»ç±¢ƒÂ()MTdôÎÉn(ÜÇ‚ ŒmIÍߥV¹»»ß¼}ûåXGaUÁÝߣ؉¼Îƹ­©å/"šŽ­Ul îL‹ÀYlDÈœ:>d:bÞ4h Ã’Vú’)<˜èášµ$ª «ÒoÉe6“ÊnÞ¾ý:ø+ f­f¢7hy¹kÀRwÀ3Øåüº(-f’÷ûü08Äå«W×^¿qÃþiG±Ë,?ÿ^Í tzgÝÓ {€—ØØØ`Ü¢uõõV}ow3Jº4¨‰.°xf”5Ö44¨ nQ²„âºx5JÌÞ5ÅÀ—|•6¸+S¦ïRllì¸1¨ïmâòÔ”­¦¢¡ÿ0ð}}d1Ïa<7iâÓ)rÌ:©ûê\å™Àëíí: BžÌl~ÕØØhª_/굓é6œ å{ÆíÛq˜ÞL2*Lw„¥O7ë÷6i[l@À]‘àù¹ÆLwJ£ˆj!Ä. %«ñ€ .Pठ˜t-""âX–JŠqÈ™£ÀÝWægؾ‘{ßmYLºjŠZìÇïø$A$~*­Íäÿu!ïâtG5žý÷ÕxÒE冄hÞèÞÍÕ¯Êe6l8"&Ö–ã6Xw4{é_j(ׇ¾‘I—¢N&|„õ¾ª F &''Þ.ëêbOÆÇs˜¶?ÍR5S¦­À`[`X§Ò¬#ëä·ÔÅjùq˜8â&¹íåÛüœ?Ý3 & âj/Mô”RI¿³~¿ØÈCVvVÀ”4òc-€ÁüT½©³È NGÙÛcí:|¸í£3àêwî Ò5LƒO<¯²ñÿ-6²jf ŽÕ{}qðz¥|ÿ{W}Nîêzé¯ü=*¯u™ÝÙWTXw@PÏGlìé:¸¸l—À\ɨ~í1iii!ÂËõ>,RÌ'ol?ÈâÒd_9Ðèœ!óáj-aáÁK.ãÅôp+Ú)_x ºýÓhŒIÜLòf 6n"¢ëÛ›T’žSÿ~¸OÖóŠNÊÇ‹Ùù­­ðŽ–Ð™M£ŽY|ŠÐÁ0¯¸ÞmSa¸ëƒ0ûÞ7¯”-ïÞà¹-¨Ì¯DGXþ;»ÏK½éáÅ¿9Ï8‡6BÐÝжÝéù¶£ôvÉ\Üé¢ó'$ÏdÛ9~ñ=¢À(vìèÑ 6Ÿ«eÏŸß €·IuñòÖ^²nëi"â¼ôpÓÂKéêcLÍM‡< rñ‹þÒ>.ÈÍÑGŠçeÃ)mààƒíV›€'‚׎Ù'ûýÂ…ž# Î$/B4•L/:Æh˜ÙÜû„E®‚éö­U ô\ø) ç²c·¬›Ük˜#îäž:!¸/Ñä<-©dRÆ[«lòz)s¡çtßsšZI¿Ø»ñ9Á´c!Ö^DT_˜ž£ñçÍÉ®‘ý;K\Ö$i~¶I^͈æpæòô¤Êቱ2ÅÁy÷™—3¬½N`©U“W›N ÐVÌõ”õõö^Èã:ܰÊw‘–Å^yDK[ªüvå^À2EöhsúçiM+;`öGññš=–;·;köòænvx¢’ôæ s‰K¿]‘öN£ÙÏ4½}zí=—3ʺ K{o4k²œËÔÜ5yVPæÍö‘™çlxöekŽÑ‡',[·mƒç£¾‹–hË‘ú=hö$9©ØzÿþýLÙÙ¦ê%II\ ßo4>§ºöb½½Ž#€Û~,R~-Ùq999¯Ìö¸‘üDxÀ·'H?z¿Ô±™¼ÀPÃ×{ë=3tºFͦí7^;QôµZŒMTT .Õ ï«?(¥Èõ©&F°Á8÷ËÔÔ>Õ$Åý!!!Ò›¿"/‡VübϦùųáI{ IïâÒ‡ºrŒ‚¾LLì>éµs?ÀøÆÙʼnm€Q´>\!477ñ÷­‚‚û¶Ä´Æ â¿5órW5ê’j;šN}ŠÞÃQb¿áû6¨‚t&¶Àý4÷·°Òë{Xªù>*3C{(³@Ã?ÎdR5ïO-¦"#ÉÚ­HÇ]ù`þÙCí¡’/Ó;¦fJ£lÖ&¸*‰lòÆ_¹89ßd sµÁ}TçY&©[&úf>æeê rûw(;‹9Ì)Ÿ,Þm4þ™ôvÞ—ÂªŽ™¬Ýüfãs…‘€Ò©ÌɰèÌ¥Lh»žfª]ñ¨_£§ó·áÓ`ò€rh«×;>êneï S•5 Çue×ónON3=®[Ze¤ëž-Éèת¨¬TdÃT`-!þmñAI ¯øZ]$k2K»«nÁ>MÍ×eeðŒ.xïN!ïÜ'sÒ›oš›HÊi¾ÍW­ ιd¹Y/¹Ë¼nš7Vº:£ädíLÖy¤®(½›rSýÎÖ¬}YqÈbä›×”=˜#îÍ2Ú÷ÛŽð®Ý½moQ:6ãõƒýû7íÙÜl^_×Êi\t:Cæ¼åMciŸÛwölÙxd3ê€Êóåå/_un?àÞxèåWí´¦Ë™–ñBÞïæìÉ6#‚½úY·CËŸu×)ìÇ .GnKHæ3^KH‰Ýˆº·[‘ó”ç©Æ•ØžÚ¶,ú`¼ƒBnuú¿/ŒÙAF=Q5YÈel¬+ü±:Ü‘"}®ññmgé ö‘‰âÆv±™¥“¦‡'ŒSsèí4Õ†eÎêèè(++_RoCÍDߨî\âm¦Th\L"Îyv¸ÝeSs ßñŠÖ˜5kn¶nò¸ÑW|Ù «ùÒÜvMÝ}z|¥‚) oKTücÆI/·úû¹xÄ#x¶*< S¿uÕdÿÛ•,Æ9/þü¸æ{Ì,¥ÿsÎÜCšÚ{wOsd°/ؼ ÍnIh3ãȬ¾‘¼_åãfDnîsÿ•в”ýOçòÞ\|µ?þáÒ¡~'Îíî-[Ó›{n}f¸xèÒ¸ñ¶']b݇n†-§šÍ¦¥uI—UVnC·Hᄃïûáiå5å´ÆÍ[¶=ê×73ã·mõÜÍ~ê¾RŒ$¼<úÝ(Ü=…ÍÛ¶|sbeyi÷®]ˆ¸ÚÍÝ'^Ø÷¼ÞâèèÈzôhéÎðØž ààë §‹DR’/v“'d+΢ÓtâÃð¸ŒêìΠ#€%ŠFíÌÈȼ1ä ÃVp¦6vÑçnO‚»¤NªÐì[ÜØç¡¿­AÚÒ­×äöa&ëJ3KäÇŸu̇)þzö½’eQã–=×".ßà½Qcë©£g6öõïá;åä§6Ÿý¦ Ó4Ù^///G\†ÑƤ9£4U=-[[[»™Ž® 0 $õÝA|ë /^¼¨›?ý¸0=Œw™áäÄëûéÁž¹‰!àÖ¸ÏÎŽÔ¢¥¥%x«Q}"ìë×Ï5€8ïܾñ䵉òHÕ-9@#$W¾Ùðéè§´* <ú¿¾þþJ {áÕ<NIê$vE0ìçÏnînHÕ>(NA0Ïæ-»ù9Xœ°;ÍÉ3¦qòÂS±æÊS7j-R¾L¹Ú¹ÛT|Uxº'Ìêä† oÙ8}Á‹¯ƒ·­›b ˜Ä…v2‰^?wj㣮é©Áú€€€#¹LXÓƒ±qqð²ÙÁXá®RéͼÃuÂ`¨ðàex`ª„°.™UVš>iÌøžºöþ½2\›µÕF«¶'q½Fåø™*É(²ÁɸÚçdÔ‹êjE†aHT¬ûN#žƒàr^OÏO>ˆóbÈ:ŒååR@½.Ž]Ñ·²_ªq䝨6”å–^ðƲh³<‹Á‰† ¸ô6M3¯‹ú¾ëÉUØÑÀ±05v; ¾Ë_•]ÄW>îµlÊu¿¢²tUþòýääÍgú¯IúžbŒŒ¼„fHÈ›™™y[S¶‹€’×®­»¾K™'dG¢ùþ­xxxXÃ*Ï««oÐnû¤y§.ž˜”Dúú© n(*.βî?3(@uÙï/½ùm¿uöƒ¹SÙO5ÜgõHÓ‡·å«z„ýedÈQÀ¨{_6µ”P¢è~ä¾ì}>Ž:®áîõÆšu¡ýGVÊ&±Ô6'çÙì6•è9©ÆÛzö(Æ{~ïHž£M%‡Q ½>¨x/÷ÚpÌŸÍL˜ ¯R¥¡@_¼o°9ý#yM€kæ]Ïv¾>·¸ø$¥¤ 5¥ÈþWÒ‹|/O’®q.ÃÅ‹ë¬@<ÃÜÆ}³F|Ïyÿ Ïþʰ¸ÄÄÄlÕASßxš ˆ¯nÙíâ2‰°ˆYah?âàÖTaüðY7}ñ££}ão-%[BmÛªà±Ã¸.×ìÒf‘ç{r •¾u¥—t7 ·ßj˜‡ÛÉáá:1nÀ¡|ùúUØd/#£ˆÍ'VØá<:°Aȶ‹bbXà~æ/_,Õ44ØXY¯¼è,žÄÏŒ´\È"nÐsŸ§ÛxPÔþeYÏ ¼Ù]Q;Ä¥±ö|ð³ãhn30nÎ\oaNŸÞÌì2‚4ÌÕ‚¨ƒQeÙµëò­½\Ò)jØÃ_5õ1‹¦=h±ºp[0¨\Y[Û[ÒmáREð±¹Å®•ˆƒ"Ö¦¦¦wBC7"àÁÔp›Å9Ýæº9þyæÂµ Ùü<ãêO†´€ò„‡3À+Ráì‚ûR­'çF€2¼IM>÷ˆðj#£”{QÕ¼ÀÅÇëwîÜ W)«©5 Ýgmyf€G^_=Ÿgéä} L¨’©)pgB†ïY]\ØvŠFetfÉ®úŠ‹‹Ã“r}"_ŽÌ6gêËÉȬƒHÀD±tkpXÎ9©®³“q‰Dª˜89??¿#±|td$ÞáSãhaþÝô–ØZ•o¾‡q=ϯ¬»‹19pƒŽÅ>x¦%@´“³À`ñé9ž/P]¿|X‹åѲËÈVÓÑ~¡C&Zvf Xc-:ùöËójf¼¨[ƒhii©‹jõÚ·U6¢+m`lùR¦µ6ì(ˆýf3]5õõ{EDDÌnw\ó튊2;ÐÖÖVxÎ*åAÆì [¬ù§üÏѯ@ |¨•[1²³D%êÞ}eñ Û'“bàíGð4d>ü˜ÄšRB|xD¸6å•]TĸaÕ‘Y—Ò¬ûùó»áN8}œ¤óf¨1-Á VÏuBÖua0 ž" Ïö~ÆM« #¡w\Q\ÏÒt:êæíÛÒd2ÇNfñÍ^Ó.šÏ,YÖ≽íí=Q)X’3/X™ñÈÖÆæ$•Ê oUA¼}ûörD„vQCSóÕ›7‰µ=ÙY® ƘÇûyt·GàáSð@­ÛJ;¬à Ô¾Ž½; W…cæ&ÊXBÔ0CÄó” OŸ,vž–VWQ;¨®¦–ƒï•û ï×Ó”®}ᙫÈòÒ¸®5¯˜¨uØ££Ànˆ<¯¦výåKélÏ­%‹ãʪª×$\fºC4õÃõuvϯ­ÍÂôŽé9Üh®N/°¶ô!Û€nrròNX˜Á a°.AèàvxƒŽ««ë®Ý»D ˜ÛŒ…~ÇM2 ß >h†;zÜ™˜`>æñcTš¦ûâêù©—„º_znÛ¼u«4@ð&©Ö_ß³;7À×wPö­bbbðHL8ãnùéÝ!xòsÔJQÃ¼ã ØDXÉ· cccõ´ »=ìÿüÙëʺMð îmø.ŸID7ά71w‚ž_ëz±Ë,±éáE˜ì›ì¯Lî³i·ooláÅC¥³ÍÅ%9öúââ›ø­X´ÀYYçic å0T¹ÌŒT»}y±éË—/Ïmj$¼¬zß|,çŠ >p¤ê.rh‰Fzžyú£GB> x-CÙÜDïDƒªÒG¸‘ÎJ žš*F:O*“j"ùíËIZæú陼Õ‰º³‚÷$ØN˜qím¿xÓùîÒâ, xÿtçNÿÖOÙ5’¯¢Äà´TKÊJcªº¥]éòÒ¢˜ØþØŒÄ8]-»¦ººg{»œ‘””ŒŠÚ¹;w ÀlÛ€nîc~¿—K¡—¨[h¿hÜt—ÃvW´ù`Êq誨ýhl^Šv›¹¨hñäZR´óV9?ÆÁtòN–lIAoYÜu7%6/[•ÕC_LÔ‰‘˜ö±°sƒ{yCɳ„¦‰d ¼°§‡mÔæœî&H…oŠž]Ä/ òê3_î\r~ÓM© Í*À˜4Á9n­ô¼(áØ¼ž(¸Ö{§òE5ßëwbº»›÷†Šw¶ Ú4ÑÓÕ†¼­L Õà[¶×Ídˆ:¢¢ÖÚY ¥¶qçiÈ^Ù²e›ðy“=ŽfŸ/M=6™/> 2ìüd?ÜmŽ1ù2œYSL~øð5ø5ž.00ð ðAñÞjC­ §4ÅìZ{6”ïpk{öî}YT~]=MƒP-ÁÍÏ_ //Ù½{M‚J Y/77w@»G”Êd åEeå68¯V¹øQú¨žZ‰óç?àÂp­IaaôðÀ_xœUtt4u Ý4 õ®={®;}¨_ ÷,'¿”cq»îñ­—%9=NÂÝ1÷¬ö Þ-ðX€µ^¾ys ÑíC•‚›§"–g5îèYž¢ëÑ_ù|›{©ß=mq ívªŠŠ 5µ`ë~-ðËk ì2%äÁ{¥#pJð^i`2·×¬ÛxwZU[›·ÓcÅ *ïyeeÖ(b¢îJºÀÛ£›†Ë>‰/®n8ðµ5‹äõÞ8—MRR8¡ÛÀ ¶E)r!NO ½‰FQnßôöÞ›På×ÜJBÀIÈØøx™‘ö|U†q íÒxù ë/.íú\µ—™™žHÔ1nr: 4«§µdÛûJÅ£¼ë.Å R:§Þ•)Y³Š%þuåÇk­S‘q œ'­¬ ÓÛ‚Ê׋‰n,£[‰×/q‡ç’ W»¾ñ=l`füLyÔÕ×'º"î×Z5KVãA<(s÷Áƒ74áüʰšW¨Ê‹TPT|s}Ë^Ö놖^Büüpoócã¢Ø[b¾ÓþÔ!xÁU­á»gðR€k›èˆ´ÙίŸkâ@à âZª3- ìûèéI ݼu ɛé¹ùÈzxI‰þÊ´¾ Ë™„=€9Q­V“á:3 xãÏÔh›æ‚îÅ‹‡ø™ÓRS/™˜´%Nl=ÂVYµž’rEGg’¦ÆâÁk£¡™ÒÑ-·n&“|´c¯Œgw\0ÃŒu&¿*¹wÅQd‡<‹ÁÞAæ×S^ŠÑXz?þþáaï ÛÀ“£oúø˜Z.§e>“L¾§§çÞÕq}|¶Ã•aÏYÖõÎlûeF ‡³M[M(Xx1ìkmmÍérß” ‘r”‰‹““MT´ qbp t, „}KfB+H…Å2åw Æoª5ã¦ì÷ ˜︈[òV3rÞëè0Þé ‡Ï)v‡Ö €Y†TÏÖoÚ¹zyVðváw¢©ai)¡6@ú0‹ÕWâ’ñ,RDT” 6 …¢‘Ù=óõë5ø_\zî¹~×¾} о´¯I/LNâ-\Å­$±å+¦1—)øÜWYÎ÷øãßjzbdFæ*cù2‡Ê®pµÕY™š>´´·?à9œ2ªOÜba1¾qÔçTÜ—ÉÉ=¼ïøˆÅ¡Æbik» m`%¯‰zpÛ0„pGÓËÎN=xœ&ÛÑ£ å„Ó™Æ3t ¯w|„w{TêÎÂ|Ø÷Ôî={ØàvÛÈÈH™K—î?õ(™ö=½ùÅa R&•XTÇ5ZG#‹‚-gÔ^–«n1ˆz|R/O7Іe^³â¼eúÚy)5Ö/ë·fdËÅâu½î._w©ùI3{͵ämÝ[-TŒ©} kPÙG=xÞñÕÍBœOrÑl÷üà×?"0§–³83KôUvœßö»o€Â%§~qâ~bê̬Im[íâDØ”Õ÷…6ü—”§̳c^e1£›´ÍE›œùh{]S篿T`?c=öÊî©„ŽÜ”ÑãÑ'ìfzAŸ‹»\ã¾… Hòz§@û,Ü)Ž$?f‰ÛÍúÅå_3‹gÀo­ƒn*^„‰Ó22%nýNêÜåùþCZw}rFßo»¼ÝZûiˆõÔ!Ãm ªÃšköN³ºªÓíÞ½43}ÈpÓô…M†Ñ6×gÖX®ø»[®ÐmJŽÛF˜é(°ÜNGçåí½ …B!žäІêe‘ÒgÆ2Ÿ-Ì«6—õܼ™|’u§%%%ÄóÇ”Jæ‹|&‹öVVY5´§Œàé4æ—ùš¢Mü—ÛzÃgވ˂4¯E•4µÔSIéèå¬bíÃnéÀ«(B&k³ñ 0¢ÕÑpö@ÿÝ Ù™ ¼~ýúîOUpmܧš:0/Åkw?ùÆrû{Îx¾o/Ì#à'€ ÝÝ÷ÕÁ%)wïÞmÚéþâ‡r,:z àÿšÀíZ^~Xkèõm§¯ŸN.Qšù+ºÞSš ®`¼Wò+ܹ¶÷i~þvöuðÞËñN Û”ÆÌ®Mujg46ÒÙÓU”—YŽ>^ÓJ?¥¡jy÷îÍûJ¯wè² ­ùöíÛ#ÛA•ƒÛ7ê;ïèîæÍ›†vÙ5o¢%\0÷**Ô.‚ÄÕKüüüàåWÀÿ"`Јqww?< ½žåǵW¯^U¾páCê\ƒ8m˜%žobqEÐÑÑÁKèâÌáÕ.×½¼ž”0‰Ù_šjг€ °GE IÛ;:"tÍ:îÂkJ–‚Ws*E›6bXÜçŽ@¶ jHqL‹/E7,Ͻ£]„qÑ»fuó×4û»§•åü™=8M&{{{듪i*ÀÆöøMëo¾¥þÍÍÇë‰Íû™™wÒÓ‡š5cçŸVÒ¥£=µù²Ø+xU' 6@Õà)öÏ:*Vy¡MÊN¤=ú(‰ùQâ\vC¢Äí²™kÌÇV*ê-Ï9hã´¼ü•r2\¯Žfر0;îù2â ï)Äq•=p7wÈÈÚžÐ!`:@h¸8~ >‰ÂùÊ‹w¸íû<CT^F¥ŠžÙ`É2ÚIZz­­(“Ž®îîÇyKwîØáYX(ˆß”³Û5·â”ë4ì#^S•Ñщ1kÿpSúÞú$%zÀ—ÙøùÏù0‰iÀ6¹z÷õS¤ÉÄñÎb˜C•Þ|^š£•˜ }~~~ ÒIõ[L*®.˜ 17/µ¨è¥–d9V¶ïèÑ£D€®êæš2ty9Ï…slßx ï0 8Í®€€€ª7œi#Ÿs0»wŸÇ±•ã‘àT t@1JtCÈ™ ¸ bíºuÑÑ~ÃÍ™pz¤³“ùsMLÙS«^ê^íbbòݲ—óô'ßpäÈ'''(z`¹¢|™¡È((lÀ=^síŽڿæ÷Š|<ÓÞ›¦Wl€3TR®ÇÅÅ}™¥šT‡H"yfgg¿7DÃ¥ Øspw{x8CÖ÷ÃR‚ð0ƒ€ÀÀºŒmT¾þÆÀe‡ÑÖ£ “¯»_\+ýøÊ+ÂGsöƒ!žæŠ´ì>þ±¯*H)`Y¾ç4VsïlbœhÇ} Óüâ7Iú’e+íb¢‡¥ß3”›1}Ó³WHqqFºåÆôF½%åJÚ£ÉÛl¬¬N€/ƒ$BÈû÷Êi¥}}×Ô s[±¥&™îɲO%ŽUÖÔð(|Öuu†¡Þb¢pp#Í78û/Á²Ž rÆ3g±䔳„Ï~`¨ÒÒÒññä+Fâ×ÏzìØ%©%tð™£9Zü3£m›B÷W–f‘«‹›E¬_›V´Qðö`@>€0äŽÅ’²{“Û¼Où¥[؆¸/ðÍ”eAKÝÝðº R V§——·Ñè}ccc€…ß]õflBtp´øë©•üÂBï(1‡Û€íÃÕEÇÆ¢ÒV’^ÑIí,úrXã ø^çð^"õOú%®á Bç­ÈHÆ,‡q=ä¥çˆ#×w¥ifØË©°kppýdÑd/Õ ®D¥@pdµ´ÂŠÙ?¼ðèÒ‰ìÞãÅút¸Ïœ9óº:J,á?SPîD¸˜9OL®I3ÜØ°åÚ Vð.@UdÈdrv–Ë£%š3méõ—ȳèÑVÆÌ,†Óo'vúìÙ ¿’•e˜ŠN1ë°iÎÐÝ Ðwl^žF¤„‹ÆPeeeÚ »^G'§[ óƒs¯oí} >k±jl­ôÜ% ¼ÅÅv÷uwú6·[©ÎÃGAX:a `ŒHÀÝ»LG˜}Úàr4»¼ß óë çtb¤?~7áË›TŸ)** 1øÞ)''§¦^MOçGÀ ‹ÛÔîÛÞÞHÓB¯_¿>¾pÿ[0¯&92:š€?“ðøEC:(EVÖ³t£Mx›†,¦"sIãÝ¥ìü=wOTõ)îy@þ»~Vþ,àZšªªvÜ»w¯Î 8§öööø^/OvÄܤÞx›OÛÁ°%tI-ÏõRݾMÕ+í ±‡{HáŒ?p8—x¢½˜W™+ðŸ×ÕÝx[^žÅÃ’«åûð!ß ‰Ü][[›~»Cõ t]„ºGcL€Á¿ùî™J•Þ§¦&³Ö„¤m‡Qfëðövxý<¼ ´xûÆu¡üÚTû¨ÕÙÒ­×^\*÷²¬lˆ€£âC+È‹=7ïÞ=rqº‚µûÅ…ig ð"@Í—ïßgÝwà@ÞÞ¿n‹M?°µ²,RÙõ¤¤¤ŽÂ'ð~xâR¼0õÝ.·…©Ý¯Ø|DHÔ`ݦûà?çb=м#2¯ –ß÷UTœ™+ßJOOüÂë'½dºž¹% rv!Ç0@9Eíemíy0ÞÔ²5Ûj0Z¢F MoöJß ` ÒñË%«¹/„´I$ƒ/‡ ÜòðÉ­çÏ[ÈN%Í^‚Éú›ÉI"Ö}›áaŽŽŽÇ/ïú‡n½´ž¼ûûßåååOj:ùõ«@¸ðx‡Gr’#.A ÓðÊõÛDÙ@W‰\i?rÞ¬+ϱêþ5ÇĉÉÿaÙïB«›oÿ­ïÉ¥’‹#Ù˜ê-69Ü=ÂÚ  àÚÒh…’Cí„àI­ w‡vä’=MØØÒ²þÍï-üûy@ÔwŸb¹¼²FàQÏg|S4|ÉË*ÊdH_ºŠøýËÔˆh`ihakâ'X Úš™ ÚØZÛ‘lõõOÌ(Ö„SF¦ysª…²5ÅÞˆâ@{äïÕ!¾°h4üŽÄa„h¿#W§}$,„E QX”0ƒE!Q!”0`ýJ«úÇ÷ÿG¾ÄÈ(T»¨,Ë Ç•UY]ZAþ$+¿  ¦ðIAA5Ö §ÕÎ)°"„XÕ¬ æ6F¶FæSAAYE6V6C[[KQAAa kA5AGX¾üýG~Û_¼)@¶%³In§Uèhfjn#ñ;Å ÝX}›ö,…@ßÌ(¶Vø,?ÅÊÎÈ^‚í¤…¹-ÅÜ–_ÍÉ’ÂÆJZýM‚Í–âh»ú²É`mC±•PW;Ågü½B.ð«Ÿà?iafI°5"šþ²yY ‘¾cìA‚Í€b¬ÂÖÂúÏÉX8:ÏðH!Ú¶F¶¦Éš+í+‰fS¬àsk‚µ+÷?8ÆzBY^”õ÷­ŽU•f“¬**ÅšbN¢ˆ ®V°UÜÔÈÜ„ÕКBÝ&mH66l¬ÖS 6['SŠ!…bËÆj ô].ðØB’µ‘¥í/ÿbL°'¬~ÊÆjcM’`3¶²£X; Û°IŠ ®þ寽Hv2·¡àxÛüöí_´×œ`okM¡ü6ÙšbcäLù7šü½1d‚-áßûo½)¹•••ƒ›lA²3ZtLÀ(¹·‘¹‘­ ìèâ11Ú3Fæd ‡c¦2÷jOSŒ mÁß_´äUük¢e…²üncD ²øF6²g5"ƒ‡,,AŽðó³’-XÍ-lAaföV[C#Vð«‘-+ø‘djaC!³X¿W}„•Ÿÿ—å@u%€.Bs¶…}c%QLMm, $#s 6!6Úï–2ùûï@<â¶«­?X³Ò:\­ã¢¬¬¥£M†â¶dZ–ÖÆ@é¦Fæl?ÿ^ ¿)… ^ÀPÌVßbýGÓ¾¿Í›ío[,,‰“‰}1ÿUvfDŠ5›$J# † üyµbAP3­á‚¶dØ9A[ëÕoße/H“üö Mús2+!Š5«%ÁÚvU¸ðr«þhUö¿vD´‡~ÑQ ¤ÖH iS‚ͪ¿X•«¸é/>55²±ýþð'S#IqÂw½ŠHqXuË´Kž#™¯ @™`@ùÞMqAø^ü½2,Ás6¿*C…b {ðÏblþ¸œÍ$ÙYOšùr æ@?a9¿*[ôjÁ«>ÔÎúg¥ÿ³4*ðÀ¿n%ôÉ¿ÿª¸ éê€þÙ_‹õ+‘£þ¦Ìÿ‡ûegþÝ1ÿ~i§Œ(¦ä¿ÔÍÕo4%^â׿ncD¦ðƒÎÿ£ãvFüÖ?¼ë¿þó#¶ßJºÓ‚úíçüß#¯Í?öËGlœÌIÿ¨˜ö‹ä?FæWæ÷ÛѲ±45²%¬ÿá=øÍ,œùíl(Öü6S`Ò¢ææ16Öïµþ^çø æäú¥ þ4ük,ø1VÜÇ\`XP$Ø«Þssý9Bçâãâ:&æöëøð£› šdûþñ÷ެz˜ÆÚ™™çþ¡Fì–vD~‚­­µô!P}XhAò·²ýUé´Hð›z¿ö—Á,üwôpµ‚(âOñOeÙ*nI3cV#P¼µ —Õ‚ÊJ`µü^4{V0ÀÿèéŸ › à¡‘)¨àœ…5E@@`Õl,Wë'Y)’ìFæ$S;2…•ÓÔV ”ý½mS¶ïÕü a4¿ãd£7Ô·±°³&Q¾Ûéoþ.`+á4… Ò* Õ÷#²®nFˆL!Á¦m…1ô‚"0 :I0 ›K°¿$nˆúñŒµ…å}ÿ~5ê°[5ô†(IZP[ i¿¨4ÅÈ–b&JÀãPT4‰Eaˆ€&áIà¤0ž*,L¡ SÐ$â÷6ýã-yð–ˆÝl¬´¸ ÿl¬öß]Å'ÿ'Áœd¡9Tó¿RìÁ_Õ‘&`)$†H%Q©x"‡uP * ’€±IþZOþißQM<ÿÒE•_÷ŠhakkaöËŽý³iAÿBÏ©ÿh×™bCú»ß¡ ×u>°ÚYIi#[3‚ F J(¶¬«šk#À*N´èô÷›hCH2±¿¯Uª?^eû•úÿ²Í¨ÁBx MÁ“Q$*šŠ£àI …&ñ‚Èÿ¤ÿ…ºþ¶‹ ÉXZOE¡ñd”„âñ2’HÄQÑ¿Ô`U€;ìþ×µ÷Ï{móvý‰öþ½Áú;Ú»*< Ò~Yaÿ®ý' +B&â„p82 TB@“1(!¢ˆ0Z„H¡`‰ôÿ¤Âþ…º ÂÚ™ÛbÑú¶ÿ›ZõçMƒ¼ú/èÔß“çßÒ)ЀW£þî(ÿ'…FQ„qxž,„Åâ…0(¢°IˆD"õÅ£ÈdÜÿ¤Fý…º FÁ<ßÿ¦6ýy³ ̧am,Z÷OTêï ôï¨Ô9ùs²4ÆñïêÕßëÿD¯(2‰Äà„„ !…&‘1D¤Pl ‹Åþ'õê/ÔõÃS £þw=ÕŸ7ÍÁˆlkø\ÕßèßÑ+MØ‚W§þî8ÿ':…"‘0T¼K"ãH(–L¡€*……bÿŸÔ©¿P×ÿ¿têÏ›¶šXý Jõ÷$úw”j5©ýïjÕß鿬UÿÈÇþ`Á?øþj6åù§‰î´ í! ™U†²šŽ1²0§Ñå_§A(޶DS ’ (ì¯%*VY¿¥äÉUeóóçYŒ€Ñ®R?V"2.ȶÈKŠ9L°‚— ä‰ß™™Ñê¯ß_X%e?ê\MºZ JªG~d®V+MX XÕLV‚ «Á?òÔTk ³Õr-LM-`½°q¢â0»s•ß©‹àÿXšd5…¹š¾üEÖòGbh5uùÏÏ‘ûgžPk[Ðd Û_¥à™w´$Øþ#ï> ý¾Z¤N’˜S(d((kÊ÷qùžã;ò#[¿šcýU®”E1¥üÛÖÿG‰µßdwÿYßj/Ù$9·°ṳ́Ø/&lL5ÁYÛ_N¬¾`dfð›R¿Ï~ËÒÜzZÛ|Â&H3¤S?Ú÷ËÁß~Ì”Àª$·"þûõ`ýPk§c½Çß\ÿ!„Ab~½þ‰Æ þ»þã¿ë?þ¿¸þƒfuÿ]ïñßõÿ]ïñßõÿ]ïñßõÿ]ïñßõÿ‚Èÿ]ßñGàæß]Ïñÿz!aa4%L¡ Ñ8<+L$“Hx4Ž€Ac(X!ìÿhúñ/Ôõcª„•çßJ>%¡Xýþ 3œ³ãÿÑ 'EHƒ'T,G¢ˆP±8¯ŠÃ‹É@ɨÿ£3œ^×,dð‘Ý_“òßíùÿí9Oy`ÚÖ€$²þy¦KÐ_§·à'4÷Aý÷Ü#“ÿç–ÿĈ?ÍY¯'ý&S ? ý&MùÏö#ü7 ùWþïwRìúdŠ¥¾>\Â(`FÆüæÿÀZæÿ$ÄÀü‡Æü7ÿ÷¿ñ…ÄÑÂ"XG¢bH #LEHBd4 ÇQEþ›!ÿÿ^þÿÇ–Ö¶pÙ ±ÍÿÑü?V…úmþàÃÿÚÿÿÆ—=@©ßÇ[ÿûx³JlÕ¦MmV6}9eeð©*ÅÖ UеÁ”õÑü÷þ¾xÿä!6V]¾?¨E]Uúßü“òáë?)܆(cdc"cd èýO ùåcVᯊüiÕª$£ŸøóêhÅüqEð];sÖ~ûê?JþÝ¿þN‰ÿÚŠ?hÜ/ß=uBAU>ò[G²º… "L¢18<%,"‚Ác„ÈX$þGÂ`HH𦹩é/ ”SÖWVRQÓ?w₾´ú)}YÅ?.F’°"‰@&¡p$ž$""$‚"RðT^ø_‹W–WÔ?©¦úÇE’‰(-„ÆP  ‡& h!a(Ta´0Nä_‹TSQÿ™ð$ ‰J€ÿ„0h2 ?Sp8"ŽHAbÈÿZž%Í:ÿ¸Hƒ&H4Ž(„Ç‚ˆ.‚ÆãE"X,ø˜*ü‡EêÛüBiþ@¢("Z@ÐT4I@ QpÂD,@64®üS *ðÇEа^H‡eˆB( Z˜ü?ND…Dÿ^‘ÊFæ\ †Œ#à…pÂX‘BFc±x Ó B8š$‚ÿÝ*Q‰F ¡)8 ÁbP""H!, ×x"Iˆ‚&ÿQ‰ÊÖFö€«œ´°¦ü¤¹(è%PH,ƃæŠÀäRŒ•Œ¡ÿ¤p…Õɉ?.BRÑ –JÆÂÒÑ8  dK% ‘‘ÂØ?*Õ7+¬lR:N˜„'‘ (FCE±Ð ÔƒC’ˆ\úŸ©NI†àŒ’‚G“EÀ7O¡âppiüŸ•üÏõªŒ„Y< þ‘Q Í$´°ƒ¸Kú³ò¿‡¦ß/…£àEðT40 "’ŠÅã±D"),Œ¢„phêO ÿmhú#U§¢IBX‘H!£‘"$a2 MD S„q`Œ‘Ô¿PÍ0ôûP° +,„ÃKƉ`pÀVE(X<–$,DDý±ƒâÑ—U”QV’WTÓ—ÿ‰“&SqX4‰H’ÎC!“ÈB8"DaEÄ(Bd!*TAM“ ¬‰"£±H!!a*ö/¶AI]í?h*ú,þ ŒÁQˆ$ CE‘H8 UÇüeAü' £È !¼O.Žˆ#ƒN‹‚?ük#ôÿÜý¢ ª’ŒÆ‘@lC°h ‡ðIAÁ2µ¿Oy¬vJAVCVA_AIóß/“@F1XŠ0VKa4pÎDF% %üvH]õiy¹ÓÿAÝÂX¢ˆ0péX!’0–D@‘……1ÂH!2†[éŸá‘Vµîo€ÐϨ›(ÌCX˜Œ°Â:Z êA1Ñðÿ"Jˆ6T~†6þ¬DÀÎ…©~QH"ü‰%’ÁÃHa¼‹Åý aÅ2j*ÿAÅ(Œ'‚CáE„ðh(s§üqÁTS;ߌ-ÄüO…»«Ð<(•„$ãVEQ©?¡ƒúT¸fâË%Ä( 4„Z”Ð(! §x4 p"æË5 ØêS¬­-¬r)Âx" XX… BÄ IxLp$ ˜…ÿyáp—ÂO€40"ø&*ÐUÈd0 Rp/ˆØháçe[þ,\ãðT@\@ q M¥ ãPd’€£Rñ€ `Q?/úϹ2ðÚT*àFDàf¡†“‘áÈ > ŒLèçåÛ™Q,ì~¢Ü(4G€fD dBt ~’P|ìoNqø‰TxP¸,E´}a"Ðà›(DÊO4ÅÂ’òiƒæQaÿq@ d·…EDX*@!4ðŠ?.®‡ù ½¥b±d! K@Œ£²¤-D!ˆ(*þgcMcø÷D¡x%L!CÅØpZ"•Œ'£K&¡Ñ?K£PL~bâ0þDÀ¼‘À>D!4Ž <*ˆ·a0”dÂÏÊ5'ë8~R:C‚ìð ˆ#@º@ë||-žü'¥Û6¨O2û‰¼1X"^”†Ž £‘L%c°x"I˜J¥Š q?Í.ý©'! ±8$…& Ñd ÐL"PF·DÐH*ñç…ÿÜ“  H@¿ÐñDaè2IÁSÐh4ˆmàûÏËþ©'¡q ¡I8*™ˆÇ‹àp ’á‘Ñ P~^ôŸ{ €` DGG/„"Q„DDHT"~^þŸz,žJD¡ ¢¡€Êcˆ°‹"Si R¼ „J ÁZß`ú“¨h`2KÆËFs‚ : Mþy T# ™dнé''"H€'°Q8aÀÔIHR˜B6‹ÿËUèôiË~–vÁâ„…ñ9ƒÑ% ‹Ð@‚B”0‡¥P?¯ËÌÆ`µ‚?ñlB$à ’ Àè)•BA‚ˆðŸú—kqðû'‚Cá…)D*ÀÕãI$€É@| “H$S„IêŸWcê Iù“‰@Û(%‹ ðBÕÑ@ßðQD2úïÔô'ãABKAb@ïP2†‚B qœ0CxúÏ«úyW4& S°Àá|I¡»ˆîxŒîgÁ÷GùÒ$@mŒp´d*ð[Àp(BxŠKPNHä'ó'Ã1nIˆLÅ I,ƒJ"I`0³ù§ÿÞª+öß9ñÿÎÿÿX˜F›eÐÇ“¾/ý±47øŸÿü0Ð_¬ÿÁÀõ?BÜçÿÿ7¾n)+ÊíØÊ—®í?-£‚@¬÷F Ö²nÞ>Ùp}Ð |ÛH<+'ƒXÿÝ/N B€‘w89FŽt¸¸ÖØ­”M|vX0¸Q…8¹3âdr¼Z¬ÊNYûó}Œ„ÂG¼yÃ2 n2²U¦0žMQÛ3¸õÏv@§ß0Þ¨)*öð°_~gô*¯f§ÿâh^ÛôÒÈ×eWÉšÙυ纚§ÝK¤°$ŸÝ«Íe-½õ½éó›JÙVÂ+ó­¥ýpyÝ?>ú¾ÁºRñö­ò¥K÷«£%Lìöõ­{öìY8Þ*¶ éCV:¹Î’=++ËÚÎNýÕê¤7¤õ>—æRŒT¶µÍ!’Hé~°`V‡RÔãÍÇC§pž ¿À´î€V¡}ú§ê(»í°(§ËïÕz»gm^ýiç¾ßý¨/™+Ú‘­²9ߊ?-RÒMke¾Æcl€qþ |Âòè@~¢Is††ÜÓŒL¢äB3cãÔÄs‰ÕQbiº…öÎ_«pv_n([æ×ÎK¾˜MÍß-|V¤…¾ýÔ‡¸û²Žð¥çˆ4vM¼¶êpÌÙBûѺ׷öN×ʱ¤8Nô„£(·I+~LbSÏ×ÑõzÇ×O–¢µu[a]ÕXŸ†5ýpß¼£ ¼«K¼x6:0(($44‘Nrî¸Çb[WC¶ÒÒT½R³‚~[žY„žóàÑùÅE“Ö£3òòV#ú%îŶƒln ­~ã\\\&ŸÞÝú'j7OØ€çèQÙŽ» »‘ç¹”¢‹Œ´å[Ÿ¹Â×ôõõóóó¾t¿hÍ·Iâ8†Åj”zÓkÂ;„mW›yÆ>m‚[´éáÅ8‡N'9##£pq§Çøµâžz~e]¸ˆM¢)6;Ê*Æmæ§ÂÝn¼yËcŠó`B‡¼ËÌHm¬¬wŽYöÜ=”¬Y[^ÿÅÇ2^t,M>‡„9äÇŸ-f„ è¦R*CoqE¿¯áeú\r¾MÒmÁ°"øXªòƒ«qf††ÉCÍ™‚ò­@ÌN}»åë’bܵ.-®Ô$’w_ß»o_|ªzZê)_çþÍ£zÎtí'Š@Ó‚üýý‹Š‹1†ïï›øF‘O'ö¡whNÓÜÏ«¡À¯•£ìêZÔ»xg®¦¬|ÇÕÕµ¯·7îþ}V³ö§ùæMM•••HkÃþŠpa¿µk×r,©ó·æ¤pìp‡MxrðâzÖš¹¹9¼žf¦ž.e³™®nq½Õ‘"½ìml‚8ZLóÊ"%\f¿ê9µ§çtäš„ÙqJII‹‘ÔÝÏ£¦¬¢XWW§–¨pHÞCb:ëÌ:XCÆ›·l§Os½~Í“_¾Ü),,Œeì’²ê‘ -Sx¡6ËÍΪ…Ã=Qøì{ûv…­Ž} Y‹’¥¼S>4ë{tœ¿ÔŸÙõˉ2ä†ÜU;À]œ|÷ðb¶íȤ¬ŒŒáPCŠqcjˆV®qÂ`}Ò0¨TÔi2þêµk™"æ Sƒ¢ö#wýEbg;]””¤–lC›'˹0¤7Ûeeeñ𜦾{kÛžp6챩‰OíHKvcI.¿ €…ª›ÈµÖXˆó³Ù×°*¼Æ»76²ÖÀ›ÉœGs›mëŽæš¶¨èØp”–•ñ )åP?~ü²ôÉ“ÂLÍyfÚ¾ÌZ·nÝ‚Õ6»Ìòe6;Ù°i“ÉÀûËÎ -ý½Ì߬$V¾}ÕztéJQQ‘ù‡™—žÛ`7€yĉØ|"‹zqžcT-ãH`Ãc–¬Y Êúrl)Õ©á…¸#UúæMEc£:xPü³îgZš 2nzxŒŽŽN¾.‹T†¦¾;|ƒBþÿ«Êï¹ù–žäš4µçßöõÍ…¾þrûþJC[³ ü•b2¶Ñ ™lݹS#›ZõÐÏ®rëYšµ]&îFœj< $§áÏ,Î%„WSôÐ~Ä¢ëY±çàãÌGS4}"ë¾1Id`غ1ñ4ÙõïW=ß—îk¸ƒ£{nñé¯*lÖæãšsM4ÓØáïǯœ€àhÎë8L7dï8ŒMÖ~b>9;Ûì2^œÔ×G–+ŒsH=&;`?Úš°fÝÆd»á¦¡¦ô¬yûÝÁȰ¶…ŽC œUPP’ÜÇÌì~.4'í6÷ÑËyyþscŠ*WU¤ˆê±cÇòhkŸÚ½OĤéa­ØxQ\ŠjŸ‚÷~둞 %´e÷ñÆTõ³{¹ÕÒµrslU¦GÛ4ë“”jl£+ÍôÝç)fꃃƒñÀÐ+*+Ïæ7|jåÕxøþŵM›O KÃú+uMéÚÓU¸®>s/(¦î0X!œø¹¹O«§i„pOVðB?ßXâá!¯”̸!ùˆ|¸¨]*zj<±ôv9(™^Pï¬U…"?iÛÏÀº8V¨tkªœ¦‘NÎnÉÈŸÁu¹ÆmÙËù<­§§Ç€3 ´Î/ƒ]½ã»ê¨ï6Òé6«+¯2xƈ¼Ù‰ «¢ ½â"‘ÈØæ}ºN¿¾ü?K&7ea¹Ñ,*2rêɰŒÅCÍ—3ÕfQbÔ÷6 ¹xXfÿèèè‡ àp°Î´¨çäbÒÚñƒ˜ÆìɈљ2ͪpÌQùU—a9’ݶ²RÓÆñË%ŒY«ZJJJ³}áãÑ^©Œ[{¹R§‡Œßß¿ÒÞÑ‘é2z{?/¨hëyÃ…Ñ']¶=¯·äZtI¶ÍCA²â²¨»/³€ÐýÚnH ÁPÁ(æý##ƒƒ÷ñëzñßÅê¹uÿC?íº:ò“$-¦“Á¡Ô°ŽhªO›54Ð ^,¶iˆ`­É‘ØIJEpíý×lgF.¦Åµ‡ÆsxÞ(H;âèäTª~T`LÀÓ«0Å}é`o˜©QhÛDZ± z=ÇCa)“v Ñg>×è«xí&?ãå 'W„òŒ˜I>7èô32Kv6~Ž¡;ÿê†:_M"¸]•ᲈ­QññjÓƒÙÇà ËׄÒßæ(§fMö ×õ™Û/?ØÉ"ifÇA”ˆL[C|¶Ç=~të6ï&®˜íjý¯Y[ZY59¹©D8¬(')–^dÚBóu4O†2ok}:Aç6U[™ªÛöjßÌ}¾GÀ훕T‡]Xv]DÜÓ§2iìP¨Ç9¡u2Ô'y$ùK¶ÆÎv?ØÄò`y€`Éyò"ioã“ñµG¹èßqÅÃW¸#¡‹Ý§‘ñí\§[®kª9»ûXT1”GÓ¾1ð躋®-Ö»>œšÚ¾ZÉeØ•+üÚ/1®sÖ;˜ZUKÚÛ‡ð-I~a¡|‡îWE¼šš-ñ ¬ªÈЋ5ô Î n ï4 í}A Ö(˧øÖ¬)Îq¯ Gõk§õÒ´ÊM2ÙÇy:½c6nZP`Ç.W}6êÇwŸòº‚¤TˆòkMQ«†R61?mÂç¿)-½Èâ>XT\™æ2Kg·0%»: ÜÒpw Hi¹¿¼^’bÖ¶Q£¬Ü.á,}}]º¾‘‘ø ÝÏܵß;±b¤bßÃ+ïï"c€nªOº×h5©Pz;!—\Žˆ£Ï Ó×»Œþ^þZPþÛfûqÉÄ+ëèSNz-bˆ2&i½}ùÆ<Æ-¯´fsY·I@ÅÙùFc­ÛÖ²hËùG«gêÙ4æí(žÕÓl1Ŧ±_Œ5×ä¿ð^3;Ú|ØâaŽèN8Ò~`<\ÛóÏÕöžTÏI±q®4lõÈ`vŠýôn0ýèÙ<£…©ñU¯tokÌ3DßÙ[·Ž u¸d€1É1<ï£þnèô¼ôpÓì@×ÊX¼|гÚÇ)m¦MP´G(ODcŒîÒ¢G<¹ñôÁÚAdïš`P#g»`ùÆg^Àã÷4+ éŠô ضWã$Éú<3¯\b)kcòGsð¶ÀòÈù+WÎö}Ò8E'¡öjUÊ[wUy‹ãTÒKª‘l{Ð’í’jÕ;Æ¥¹Óµ^?]«#®³ø³q×3îUµç–"¦X2ùø©¼aÓlh’A _Œ=ã·.ñ3pxY¥E»Üö˜rö®¨ÃrwÁâˆ=W~AhÃ@mM²I³×c>EÖqŽ£ ÆËßXwý+þøöÑ;œ¿¼`pŠ„^þ¸äsÀŸ||™þ¸MXÐt¸*béÈÖÍŽÒmyŘ%˜•ƒkö ŽÅ9©e\ægÿ"  .‘³/ úTÓez^öDƒDÞ}YÛ~H-’Ù±û\ÙÞÜ{ƒCAèõ]OÇ’ˆ;Rq!rW —sQ é’ó}ô"bb"Jìííëü˜zû/V÷\§‰„¦ gŸcg…4È*sÍ5ª7 Ïßæ»6Ñš¢Y¼hNŸ®«C޾ki:s6Ì<Ïßæz¼ùÑ@ª£Ä ì|LÏ*Õ¼¯WªQSxwt~A£n V)M>ÈXÄÙ¯Ó–Ç"ÎÕ¼ž^^€¥ëæÛ/_é~±më‘Ô½\{Ô r¼9WWcÓHûEüÅ'o§û­$þX(q÷¥¬C&¼åó¡ƒ-¡ƒõ¯è4›ØýçÞ–û¼m‹€€€óT­œÍ·¢0‰Å‘ì……áL›ÑobÎ=3—"³E*Jj%×G>WT9`ï®]÷El>]`‚TVõaÇÐúãç |:Ì5i,>Ð °Ôw¹61âN*^t,Õ¹_Ϫhi…/L'åÛ|þ4dw¹­¶ÀÎ$!)I{µˆƒ&?Aù¿úèG1 ›Ö66ªŽŽOZ.,NŠì³òTwʈ@"5LQìRS½g4?åך¤õyAþô<êþ…õǧÆ=V´ÛžXh޶æ•'½ñÉŸ¯ýôéSèh^yy9¤D©j)l€úØ ÖÉ&)ÅØÐmÙPRâaþúŠâL啕‹P‘­€8ÿõsM Z~£Ne/Ñ7oÝ*·oÛÍ~ʰ>ñÜÖ-[jŸ¹-ª=&ËoX¿?“©_¢dRá{÷bE¹{ûf©4¨ÍÕ±Öï´æzúFGù7lØpìØ±ò,)$òü‰'&§¦‚ÃÂÂnì8üéƒEvKŽy‡èüü|yG‡î6z`Žù……3â™÷n„†‡§j껩333O~ýZ?Ô˜–IÍvœ jnllLëÑ¥~]׊B%µ˜Â<2x„ËÁÁaÇ!G½‹uÜ¢UÜìumu}½ªœc¾‘¶¼Öó(ÐÃ@+ÛÚ´UjÏEpÈÔD«§¨$¨ÅÊÜZÛá‘¿ðÙj°.!õbv" Ê ’°¯ouq%U#=<Ï´%ÞH<ÛåQr&˜ûÆØp~²ÿ^µSþèÒl€Šî-Y‚’’zGφ6;°¸›òh Zûý›H0Á-ÙN_?™>ñX}r®2”ÿœŒÌõ–<³ˆPö=ŒI(iåCéœ÷~… înÙ¶M˜_+G¨÷¯ð›ƒìåÛ™D^—–Þ£“œ{,¨ßiÕÞè±SÀ¢dºI;”ú©ûÅ5NqñöÀÕÃó4YšK<ÛcÅ=ÛeÖ¼>^~¯°û7Dzg‡;üv¦ñv<ýøÊ뜴ôÕ8³Ó§oÕ'ú"ßÜõÜF^êMO?ç®3:Ô®ùÌ0ó8:ЬûN`ð[sŒHÀÍìµ™è‘ííï§,ÌŒšø±H™‡ò]´®ÕŸ3&)²båÏü9˜M.ߣZâî`õÊÔaRÌ2M*êÔÎÂãY›}H? çêæV-áÂØÖ–g&|kjiÚœ|þÕõ7DóÆ;ÍŒS)>óÃ'MÉäxоàààÃîÝϬۚ›gÿRÔù`&|>55‘Wýí_Åói`õÖ¦ã²Øë%Jj—ÞÔUµêB¤¾»K€UŽu‚þÚ5”GŠ9d<Ÿí5ÆñÐíð*Ö–5^a2ÞUÒõº¬,ÂÇgû×z%)]›èJ³úº:Ÿ¤¤¤–§Vq Jƒh§7E_«Åš«ìæ?ˆÍ3Û=óÖ½ÄÀ ü\æÔ) TZ~£@a¢Üo499YaxÄôÞ2±¼âââ£òÀ•=±+®Üv©ë]¿ ^d¿Ÿ²%SXÒ¤¼J±ót†KMæ3–‹ÅšOêf¼XÜi¹RÙÎ¥Ù’8ŒÿhB||²ëü䆖¯Ÿª‚@˜«¢ª³Ît錘þØWä7*j7„×+++žÿÓç/™ ´‰Ö—¨¨(˜âM×ÉWvÒ,·¡Øe6‚ÊmZ}·Ö\æ…û—'&'ëjãä˜Ú`âÌÒò©Ðº¿BÔvàIL\\'„WÓÞ´kÈK“…%F᳘ëœehÙ¾<9/ƒÏÌ×==EôXð–¬? Â¼íÎ]0ùóâÅ ­ÃàŽ.ånTŽÀšmu•N—‹äÀh'­ù´rýFy½ã; ìêï9™c7¬QŽÿªÓ2ãI¯÷ØcÊ~^ 8Ç391‘otãåŒ-ìIÜ­üÜv¼Sø¥Û7o¾ŸmƒÆ%æPU€AÔ6y'“hüI¯Ç¸¹¹+ÏïÂÕÃ\ôÆ< O»wïnOüæÌŽÚñpì øxX_k¡CæF:æÈt—èF—ý‡GP´I>0Cÿ>k~aáðó+ëü2õÖ¸sÃ3–'Æs_>Š:~¹?3ÒwâÚÆ ãf3ú½{Ù ;2^¿–ñe‘Ò ´è)ÎsÉ*  Mܲ—SÇæYìZ'ØÞ´Y"Ìí|£Áæ„z?~$ð¨%_Ú¸“Ñ00(ˆiqïž= —.ÝŸøòE¸RNnî·œœ $ó"Úª™£GÞÆ}‡Ãõ~þl --­<_¶øØ©¶‹åþ&(Ÿ™ßÅHu©eêu<ÍÏ¿÷üùsÓŽ¯Åš@FØ„3!( œÙa&&3ÝY@Ñš/ûe¸,Ĩ`¯ÏYvëóQ«áw5³n­›¦™©TQÕi'³x202NíúZs9½vÿ¦tí4àÂÅÌóZ ìèL±[_ÆÔ½¬£KóaÓógn¬K8k3-údá+L1ô=ºÈéÓ~íBx›æ……€fhF»á$òýG¤¿”KüçGŽ —U‰99è¥/¯è4äÊq:::ÖÓßì u7¨/rúj=-êy¥c,ÑÇÇ‘Bæèÿâ¤KÉÞ¯j<”Â(aAؽk×%;è±ö°$Ÿ,ÑõÊÁé|½0–¶WC¸¬ªÜ¯^ÿÀp/ÙÈsAœ££­ý éÚ錳·÷ï^˜nvž§HÍÏçÈßvMŽÙI¦³³S¦Ð×î;›µa¹ƒä³0­%ÆžKxÅ­ž¬Ì#Wú 6NsÀ[нÑçPGãƒWn"䙥'ü¡F†ˆË&ï"fã[L|ý“ãƒÓ„Ÿ»W'Û_ÖÐýÂÛâÛ z›¡X,‡¡xP-Å‹w;MÒõÜr}Ã1iQ&ÍY-¦ eRѪž[¦>E¤Ù~z'ëËÔ&МG‡Õ¾ÅØÓ„!¿%bŒTt¯\áÿÚ~òFNp¡ËÅâ…!®Ûcò{¹ì½ñ+e쀔R ÎZË|_ê-¿Ðã}Àíþ; ‘lšÍ{ ‘UŒº]?ÒR¬öð‰FùÇZ€ƒ+2°¡o •Ö®7çŸg<=.’](.n=nd‹«Km”Ð*@×~r#MÎÿ’nÑÝàχ @àÜýéÖ’•xN… _i§8ÙHUZ‹³<çy}ýàûÂCíNyDb%ä~ûÔWÇñ\4LàhšY[еƒ`Ü~ÞŸ§²ßòñ©õ¬è‹‡y¶Â"Zër,[Ó‚P…³Å3­ŸE=$Od̾£÷d“OÕÊAíá]ïÖ܈ĥE¥Õä7j², ôäh¨@G¢`É·Qá}!Ù¢Šœ!¾û‘ó´¿þ²w§Kf€#†v‘ŒÀaÒu%ß¼)ìüѳEÔÛIË‚¿"ú²5?N®Æ¸!Y©ñÉ8ɸ-ïJ£•udLL’FúÖ: ñÆ]îá~Ì&«czœTņà~­¢R×ðlɶÅ›®Ç_8ÆSTƒÁÛ|Š-p k¬·ÒÊ3½ ¼éê;¬DøÎ;(MY™ÈÚ‘‰mvÀ¼Û;**½R£*†>L¸™u1¾×¸³¡5·pºVNX©-#)~>U ɯՠį5—bó™njºùÁjâh+# ÿÊ›ee£šjy gãںƞˆ*F RkÆRª£"¸Y»I@0Ù«ú¿6Á²F]n FwÝ&À0M_–®CøPKÀ£=–¿^¯jÔÔø6¿~ó·øÆ,ÚkÐïC­,4ªÒå*,M²26â»\ÞùùÉ´y{˜¨Jc/ç\%LïC/ò¶ΑDŽW,áRÙ‰Jã‰Z¹<™¸ôÚf‘0×ðåcå~ú°äcªzÁÕ|ð|ùîS´w¬Óßq8OAðÙÜhå5i½}¼LbØÐB—CÓ£…Çé8¸ñO˜í V·ûT$=ܹñTØÈèÐPà[iéÑ¡áL¯4™[…ý‚GÛ¥DKHgf&I.$ÇT„ò›Ó¤ÎZr‹Â(‰Ø·v¼èkĘ̀·Š¥¥ÅVYœU—›z®5åþò7áSËËÂû˜˜Vµë¤ íÀt›7±˜Öi[Ø‚"­&%ôõ•€vÇ74ØÎ/Ö4°<¤Yi/´7„·ŸŸºò{‰Ùö⡺þi½ûJJöçR«„ò ÃBKVF;S¾WýÇ5gçW¯†¦ê䆋ç{7ZmeÔl\˜ª‘ªß¥í±Ø¦`ÖÉH]}CŸöFC_y—a™û—W<ºwÁ+ñGÇëÊXfU+Cí³?ë¤ë¶ÑLàr?”ñ€4T…O/OgúbÛ†ð½½³á ½¾«òµüuu m«¹Pan¢r:ê±k×Ñ·N•ó÷J÷S寋‰ F9è)‡ðìG;OÜöók|`–aô„röi` Êtƒê4ßiLÙö2™|pÃFó·ö8d)ž8ˆŠO8Ê—“Á:§",*ËË9åúÃ6Û3ó·aÖ%©¸Ÿ'ø1ž¦KÅîÞØˆØðÖe<½Y°DhÁ“ŠàcÀP¤S”b¨ ÷a9ŽJ XÓ{*ªõ¹+[à´]]½pp``â`}ÉjòŽ‰é›ƒ$»ÍˆãMyfb«£ LàD (@£ìØTžéÍ®g_“ÏïíòP±²ºuæl婿œ\~íå ãF­Hè·ßZÑ&Yײrrê]Û$¨ÝÁ½¯?€ZeÌ‹Ÿ; UîÃ9`ó¦ØÁ‡æ‹w!‡~+‚5¦ò­@ç)0ØG·· áeß§Ž·ò‰ŽŽ6Ò×Òº³Ô‹3²ƒñ¢ËÊ’okF8ÆÀ4y I[RR‡ê ®¼|¥t ƒY*0‹ŒŠšjÒ6ùЇaõÎ"jÉ™6 ãŠ`;@Èp@\lì܆) óñ99Ãô·9ŽñóëJ}³<.µâЧ ‚1<ß}ŸjVÖô)×ðcÒòR„6SÒé•„XHÊ1`袲³ƒ:]mB5 žlÝ †gþò”Û¢-Úá™ê:¯¢!ÇcÝÓ˜C,µwûòbhIàp§Þä®[M늜ÜóÌÖmSŽMD V}’Åõ‘¼EI±†¾ëîdÎscy¢Š¡„«^–­;—O´å1…fg«&'¤žªö>”ß#¬£ú². sŽPX%-ùÂ*À~áü$ƒøV÷V/º˜¦—žÚ¹¶ƒJg”p+¼ ‡DDDŒê⫇šÒSwÃ윘,ˆ“AOŸÊäcd1&&=k¬­ &œEUÏ Ë1m© —Z‘‹ÝÏEŠ¿½ÿ¬I™Ÿ^{éãÔbÞyji¿Á¢„©qa:N-EåÐÙ¯d2ÂsÀrÑrîTÛ1-²²!:íº©ªŸ#ÛÛ÷¤ûy®XYYÕSí4²Ûšs•#´t?ù»Àƒ>[²Ïìô(Iê!±Àq"Vr®{¬œœ6ÓÑ®Ç- ){}<$ñåù1õäã¸KNŸ;×ø˜R™ã2kN[°q:"þý{ÔµïøÑÌ.RáS`ÚLëž]]™+ºÆÊ×oÙ.¸º>ÞH§÷ó\ªÉÀû¤ïv7!¿`úîîþÛÞgèõ×W´Üc„PÎä<ÀrÛܾMh¤kåï³á-À«S$—è½ðÕPNs0DS ¼Õ)3Ú4ô¥[gÃ÷ïú0Vü$õÅŽ±’6ÍÈB©¸-LåÇÙôy¹ï;Ð~¼1 1ã¶¢å…XŽ+Öý—ó‡°OU]¥×\Ïc PnÚnÈ{rŠÏÀ.r-?''g›™`¾ç"°Ç88dgFUËîßµ«ûC‰û’s®1¥Š;3rblË$hfÌ¢ŽBZ+sea[·›¦$ÅdXò/i@ásGÿ6á'#//ï·äM/¨‘kÜØ76–±aÛü³˜»w“ívrv†Kˆ^ÝØ¡ m ÐäÔ2ræ­`Ø’ÎÇJ´mrf¦ ¨\_(_×’m¬âX÷ùØã³½C³½¹ÍzAOž<)**Ú·o_ð±ÏtRßî/Ž—è=¬ìË€ÉqŸTpû6’]£–¦ÁïäädØn8Ú(°¨¸X=‹(»aÓ&ƒ‚êÃEîÛµë>àëeNÏV–]`>S;Ï4“ùùÔ,ôŒùï.}p¶t»ÌbdCu íEòF>ŒSû?€$äààà=¿´óqo0Ÿ‹'ŸÂô&娱cT@÷ß477t·$)$)F½Ë·ù¼ô¶oxØdf¤¥÷CgžYDË#Â5’ËÊò§¤d'pHwcÜÃ%ß¼y#šaS<Ê›i3Ù'_63ÛåaáêæÆô9ÿ1 ®ðS£¹½`ö5ÈÈŸ›^ª ÖgÔ˜¥•EôZå“eåûRÕÓBI…ö£­Í9ÓÓvEš™Ñ~,RcfffB9DD(ÑG˜öï·«rÊÓh]|žAÜñ³c÷˜î IJJÐ-ˆÞ"¨ÿìø,©³Èi¨«¤„cðsA" 0Å*[ß¹9G¸|ò¶¯¯:Ð¥Ìrå<Ó‹òÞÞ•vO½}|‚ÃÂ4Ç÷ êé¼9(¯Fç±[UZÇ€ÞZ¸‚{B_q§ÒQ$î|œ¤úñãÛV‰Œµ¯¿¿ÿN&Ѿ’®s_0f/_¾d̤cÄ߯á˳˜Jž?ˆZ8::&ö>nz%Sì< ðâ£üZJJJòékÏE¬íòw_Z(?ÈNòq_ž7v48PçgcúáÑ‘z­“¿Iòˆ<Ž³î¯ØJGç ³4tai¶‹iöcEO]ºÞ×ïÆä ƒal_zÇÁ/YÆ“ï‡3Ÿ š1Ô’´vݺýÌÌ@}  Ç^¹r…–ŒëH{qmSšËìØÅè'ÿš ¬·Nþbæáë›»·nÝXXX¸“ß=§•k"j; Ü½h•;ÖQÈËÍ}z÷îÝpMöÆ ñ6Ÿ«EfÊ^¿~kþ„‰<ß[æÆ¡[䈬tדóב¹¾<×K—kÒ¬XŸx®Ð¼-B׌àW3ÿölûü|Íñ³Ci1 R%ÍU1ѹ¢ü…ýÀÀÀwÀf}#""&¾~>räH¢í`ßRà»oó_ÏM5¿lÙ¾}ëÖ-?7Ík1`Ýë7nd ££ƒëW¯2–Ùµ·ó¨WÈÈÈ´ç˜ÙÚæØvd÷HÛ]‡‰¬Ý~ûŒßÝ­ûyî^Y·)¼¯\¶ çnïç çQO½ÛÝ}©w|Ü"kN‘ÊèTTP@gMÞž˜šB÷W„K8O èÜ,!”q ’[„e›ÀŸù®ØµˆËŒ¹€ƒî`È9móùY¼A´à ÚVWîÁÅÞà_õã%àñ¬d‡.3ÐöK÷ ‰¯ï„ýŒt‚Ùð1&òe옆‡;@!Ý»àºÜ·äü£Á 1©]e[ÉìM[ËÂAv[ȉ…K|çµ™†C÷‡®¦•hÚò(8½a½+KÌVç^ß`›Â½o|ƒÒÒÒ€Q7>µ"Á¥õíO­ü–þ‘ÛƒŒ½Û¾.@õ¬Š°ÈP‘y}(]']z{”TvÂÙ°&à<-žzTGŠ8Ýý4󣺴×Û ~~iÔ,̵üx xÅ®ñáÅrZjaY ±ºÏPÑ)_­zÅÌçËü|ÓWW!>ñ„-½ ×|0>=Ý?Uãñø «Þ%ÜYÇ©¨Â@„Å©dG+úU”ðÜ,à+ÃW7¤Ðþá’ÅÆÍ3DýÚŠœ²{zzÌ矾~.-K*ï(vˆ¯`¢LLU84ìíæÑQ¨øÖÛl“7¥ ©dyƒ–Ñ ï'²H<Ú3!¼͘Å={öð«Œÿàƒ|3´ ¡¬…·:¡$µ”¡õ䙜jÒ3˜[‰Œäcaa‰’pÁz‡*ZÛ °Ó‡Ý¶¶Já(,îYyÆÃ™Î©ŽÖ år²«úôXjœL.ßhm5ñ~°Þ†¢ åUb;¸)8 þúõâÉDÓ–O<çc3côXI*6|•UÁ‚+oï/Ô>v¬,øîÁÄøø“Nö£mýƒ"§±ÚÈCA>>Ž ¥<ü£‘uuÄàhfÞÁ@àÆÅ:M=õõóJrf sF¯6—œnÑ]¸Jl û…¡ç fÍ r€¿ºN$ö•gf¦ôDc:À.%¥4?ï”r!ë›D¡û+Ãá&Kþ‹Ïé{0ñàžÔ9/ÏsÂEv<šÕó±ÆÆÆ qFõƒ…RÚeñIÉö£ÍÁÁÁ©* ·‡Ÿt½I3m)Šªpk?jÖ>çՔёÎâŽgåâŠÇͪÚû6Ø]¯±ãæ¶ßŽ@ØRìÙŠ{ \4yLUO-L€N‹és^Bb"/[1©å9“ø÷WÖqÙ|‘Wiy\ÚÿùsB]±Ú“1ý8Ï¡¦ið™Ó“PEE¼ÛB¬ä¢i¡ä²c\Z%Ç’žÎ,Á¬Ñ–·ÃÆÎ7ZÂÅ/ÍnøØÂG/ääôô»&ä&ºS÷¸–Ùå·E¡M?Ô3ˆ<>—AyWá¹mËÂX¡›ßË@ܼ¸ÃœÌœñhð™]Ìk³ãõŒ¯”­ôXå4ˆ´²JÙOÕkk³œ‡RÊGún_N¦õ’ÛÓ…j÷ò¥â’Åë÷ÈÑyùPYߨn'Re`rS_k®ÄÖ)¯žÑ6v´Ç2¸N¹£gÚ>Gj.->y›íùVjɶPÏcÉÆÓ³8h4¶Á fôý—•!ÍR5¥Þ…†€‘ÍÇrï=qzx…‡`‹M€V?XÏLœW÷Ú9 ¼ƒOãîñƒž0‡å}…òÑsX'+«ûþI—ß»°á§§ë²HŸ§ÊX¸àúÏå9ö3‹3QÊd²GycnüØÿ®¿€Êj[ÃP,R:¥[QJRéîîFRº»»CZ@º»»¤»¤»îüÎ9ÿýo:Æâ†o­¹ÞxbÆ¢¡Oøê@Y©ÅÅÓýîÞe §g~cê+ƒh‘òɔϻûµvQsAn®b©4Ü»F¹ŸmOñ¬æ·üxl×L§ ÖìTÄ1ÅK#ñdÖ¾No%¡»Ãb­”ÅÌa/åç55õ´,»éê³–³S\ ‡^DÓ$ŸÜt!¦7€K Èä¬eçóEÍöÐü3­qî'ua“n·Õ|ü‘Ôt‡qYW'žFjêùº]4IB`ÔÈÅ™™}Õý¬%w)©©æç7mÚ-®¼…÷W%®ÐH@‹1Ó«Œ±-öq] ¹.ÔÐ~ž¼ Á¬2{¸¶¾sø'%'WÈúi2™¥©Úr™‚üO¾õæ>d¤@@@½8âפ¨½ø ›Î fgJ/7B‰þ³—3›¨ÿâ ¯‡b¯Ý=â]£4…¸”TlhhÕqë¢&"Þ=dœ Å§ÀÓ¹ÝÉ9§a¤ø˜gòtß’Ìv"|4g º"dã#d*J±T8ü‹ÅÓ…êÜÞÈ“¨’ë½½…Šfa1±“ŸÝW܈3²LúÁ=7 ~Úë#B6NÖTkó(ÛØˆ:¹àú¯@¿¯÷¿ ·ð0c ÛÐÄÿónGèKú‚=]8ÝÙtœv0ûp1Šs´ˆ}ÕV†¾PÇ(&+»C!ŠI› ôt¿Ò¸CøsºHYõêÀµÈhX¬¡QÆÖÕZh0ñ%ËpÐCÉÍ-f¡Úä7hÇ‘³¾•Õ—«^àïj¶¨Ö.±[ÉIó|Ýk|ÐÐH½ºýùwv'c!AÌå #*w†Rɽ¦ñh/'¼ðóó äJÂÕK[|¾ž˜Ñ¤dúÿ”"àÇ½Š pì°Šÿþżþ¹Ïc_¡Ô-óå/ðת®jW€">FhÖåå{÷—'á”›ìZs¸Ä<ã¯ö×QZ.ª­*w¦ÖÖ¢…ò;öôªŸ¿`Sï+V©à'z|Ù˜Q¶±®(2› ¼áݱ›âŠ]·êÁY*Ùl89 è–¬l«©Ö§–y5 Y>8((•ÿT†á@ÜOÛmèÕ/ˆ¸·K×Π!Áød6šÞÂïz#´·ÑC>$U¨ùPö1šåÇZv¢»B¥a¢—HVKü€’•öCx?‹§b(x¿bÕµ&WUÅÖšß¹z3âh©²k^'•X2y9ÝêNÆ}«ƒ Â# êdªž G]ûc.utÊÛ"錾Jw —$‚æÓËa»u>ŸC‡@»õ3©íÚxS•eLÅgàX,ã–Rˆ×‚¶æSlu£¶?~üírå"¬z9‡V­9hzÈlähº§¡ë?ùVyL\—ÀMÔ­϶\é“y&úÄh]È–×j£aK÷'û|©ôæßÀ=ïïå¨c1±a W[æ“»Ú·„$ jHùÒBªèYyé–"¹ËqaÆÕÓ®Éxiò&®4óÕV*пU§—[/ôZK‘®òŸº{(L{B Ó]mœ¸¬ÅY‰Ú ÖÞí;Õ‘“ÿs|÷Ž~z<ûd ŸúyÒrª¶a D-FæçsKÔû M§}¸w…Ãfjšªm¶N8lþ…¹¹ âÆˆ°…€pâ´¾yÄEë2Ûíʾàòט:Ÿ®_au÷}¤©Áz:ëƒû?ôA€WdÐïÃKqRR7³`kñ§°Q‘;Ð/÷ךTÒ£6@¶iN5€ïѰ²Šj»1ÕÿjÒ`W«2ªȯ˜ÉGÍ}g YóÓ³ŒÐ³YÊÏYilé‡ÀD&^\Tið† ;9µV Y»9Ö‡À"ŸÃ€¥£P8b Íâ /wW\‹8BøYÌ”®ƒP vÇLÜï÷ Ú(8˜Útùžðj÷¬œÐuhvÿÇ×ýie^E…)gzmžÓÚѳu³gÛ_3%xѾýð­¼/a㎫Gÿáý>T`øÅèÕåØ+á!ÕO89$·¾^àhÅ]b±N˜Šù²ÞáøQv¹/õ ñ3íÞÒù²Ù4'­¦n·ÍüÔÔ&÷׋-j•)FZvl*R¯ œ*Q—WØwj %^ÓŽýd‘§ïáäçT¥!ïA^Fï6Á¹ Ûÿ|¸Ê(Ñãé rZ(3/£4¢€Òi<`ÈõVûOˆÞ¡Y㿚#Þ ~ ¢WæÇ®µ`F “ÐWž‡ËÎ’w/0§Ê)XB T˜vüT‚ª4á²>õ¾ÿ\ûEÿàÎ'£°¤“°uã^†‡O ßåõiEƒòH N™h[.?Ü=×= Æ'¨ï¬,>Ü9]Ž¥^4œØÚKí´ï¸ñøB_ùåäð¼ß ×lz‚~ïá¡-Ž=ÿžIM^máñΘêùþ€áü\ì“‹o}Óbç‚Èö*”TJ-2·‹]g­EKC¸~ŸåæN# å6 “eÓçÏZ›ç[Yk"‚‚p33BVÖL=·g¹Ÿ­]³éúGQýE¤Ó›ÿ£ðÁFãc`¡ò .¾‘ Ì#¥¤|óÚ[ã½â¨ˆQT£üÿÙ `YzÓ·íz½ÑGä~z³šŽÃ¡ÑÕeÉ’×ÒfG‹‹KpÚÿ‘ŸÉlFdw×n»±Yis¿ñ VK…Éäʺõ£'¨ôô§—{e—¹õÑŸ¿\X=¹à?>êYm ác`bêèwù††R§¦ÁdòÃ–Š“_ýþÏèÖ1üýPöÒÒ"ËËüüsH98‰xøUUß-Ô) ½æò²Ñ¦Æ…/¨;»<…”[«…¦·ÅÕ¤Þ‘ñæ„WÐîR#è«7лíCʼn»ELod°1âôç,>1löíL¶O‡c¤EøÂø®xA¸´lѱ9M0Ró kU÷ùQöô´Ü̯îçÇÍXi‡õõ®“ÕÝwÂÉ Œeo=<˜@Ê¥¤²…>tut¼y³gŸ`ƒAŽÊK¢÷]•Dà3Ü[>rJ#..I ”œ?ÿøÀO,ëX–ÂÈOêüh‡J3Büvtì³¾^pz¡|¼Ì‹²©õ·ÔÇçóãÅè|Œ°Û[‰ñê"OóWŠŠ¸ØÐP÷7ÚÓE}ºÛCÑ’–›+-­ì—½ƒ‚ÂÇfŽÉ{÷ae0é4š”0ñ—›“ ¼¿ÁÚÚr×7&ëntwì΄ÀTþ)%¦¦¦ÆËÉùï0YdT`£ßûû…¹Ñ$§ÑÑÑaÞÝQü\’22)ˆŒ& ïæ8­NTFaµlj{¾G›™©d±wŠê Fw´z~äþ;8¨;An;”ú’’C#‘Ò:,lfíá„·s'CôÊÜÜΗmì¥Æ,hèånguj¢:KŠŽ¾h‰Œ¼ªªþTì6ö,¾¹F éƒ|ÈÁÀþ!B¥þì_¿¸ì' ÂôáÈôïTÅÉiCPüûúcÄËXiµ< Ç_{Ã#(ÄñËÍçç°œ‘Te´´‚Íf ××:ˆýó²¤3Žo¿ˆ×7 66âÎn‰Òq·”U¸?(H¤›ÿc%äñVÒhkE{º7 ­à˨¬„ ó± O¹”K@ŽôÕú¾)46¶ü“[MRAD¸˜©éé¸H*R?Ò*:R¿êæ¬,›î^#b®fSâýÓS…[ñß$K$$ìZ„Âv'M7ý1°»ú÷Ø~˜:tïM"üþ=v ­ã‘§‘ÊaýQ: +?ÿ½”Ô›õmÖfI ×U0¦Ý]º¾ç§ªµ ½…Àq"ŠŸ^iƒÄ2)‰à67£}ÿwzÜ]c)##M(PZšû‹kþõýýÔf}6¤µƒÂ”ÿ5¾æ :tÖ.ËÜ$Pož{(V³‡Ùfw´D}'Èû–ïíÛnHÜ–ãßJGüúÒ‡ûÅXŸßúÙ‚ŠGê·©éÉv> ÍÛáÒ`æðÊJR||‰µ5׋¥!>Ù¢±Cº?æÒlDiå••}sr^ÑÑ#®¨ta„.ôý³¶&€Ï!ðÄ¥_˜;–dXNC#âׯ—+ÜFÐÇøk ßß‚¯w=ˆHÌYî-ÖtEú(íÒ>3óëÀ†œÏÁg$-´}½«.*>ž1ùÚc©þ;F.ËwYÙ¯NÍ,·ÒÈn·º«”u±±ò°_ªë­t™Š‹WÜ¿ˆÕ“¡ÀZŸhẹe­m^@}ýꟵöwzºxxZd_Y=jjŒP”++Ô$•¶Þmã§óŽvÕ˜Ñ\#*ƒ*–JßMFòw¶#ÕÝê2Ÿ³7l±Šä÷y99/®AÚ”i)A(¨±Ò4óçãÍõcKGGõ?ymÓE‘©V5UdÓàãßwMO¿z@ü‰¾C qjš¬ R.(,l6ë4ÈnÐa&-ß—{Ú¥Ö´0NÇëKøt.gêäónX~:m,P}»S¢ár_Œ[k«òNhð*Þ®¾IdäçÏ~*¾Ê(Ü/Bʸt *.Sðç¯äÑ2ø*âœ.ׇ¤ðÿ$)ó1ÎzXVV3Õ-ªqT÷¦IÖÏUBЄñ¾-€ÆäЗ„‚0ú‡†øED>óñÅX=8|ž˜Ôþ®ªŠ  ÉüIqñ{Ýñ&Éo*ú­Í¿Ñ(€Vû`ˆÔ bç°ìºÜ몰Þ@¢Å([Zâ0ËóU³åµ¬>)‹V ÍqóéòÝÜJ%6½CId)KBvv©©]G‹cMu8Ed”_¾ Ï–õuŒ2BµàRÆõõ¿:çQ8ìd¶øVŠJ‰÷úcEDþb\õþG_³'JÙ…FÇV‡’™ùÒTBôkHÈùîª6 øøÜÂ¹Ž‰ ”áVíâÁÚåÞ':uxŽ´õ-<` œ)44¾Ѹ²"n@* DN‡ï÷Ók(Åi‡_Ÿ:Þ×®U×3„Outnp:9ÍA¢¤%))&:å¡€@·Ð3G4}{äŰƒYýu€àííN@#uÌÌà00äZÙàÞ YIUÿðˆúA°ç˜Â×í×IÊGÞ?˜(XïùØ?5(9ã»–%¥âzIJ ~ùÃöše(Õ „å;Б666sÕ&¤›_ÎFy£ë,ÞL°–TRQþyÃîÆŽcm„ÜÿèðÍÍHúß… .‘¢EÑdžÝ@œém0ÁÁ=™{ÄÏשÄq,ZœÏÚ6|Ä¿ÿ>™Æ1Aøý E³Éa „<9"ÎLì6ëÌu©!6 Ð8à5&&¾¾¢¾3;´ÖWûd@“%v·“ð‹ÇÝ)…à·Æ‚dR%Ìý=îíÝŽtÊRo†çJÇÍê‹ïím‰^qXõ»œ7ˆ®"ÊÑh}D14ÄüÞxŸœLÐÀ…% BÌ íþ(]h‡$% £Ã0( ?LPˆ¬®Nè¬Až†^ËíõÊJt~1Fs•Ä÷ÌBìÞ‰ý ó$ý¢ë§³,ØÉ¼“ž®À§gwð q4ØXX€¸\ééͤ¢¡ñü‘Ã55¨’®Œ[Ûܯ߽ûz¸ÌYÕoq8oû&é—›ï-<™…0~>¾èëâh• ³þø!#„®!qÕÕ»?QL\tzæ:I#¦&!A ¦þ õÂgF[u˲Öp&$Óë2**ð>¾±QÀW‚°êtñÜ^/•×l‰^±sÄdˆ,RÖ7E úFœ?ÐQgÑohHáä²P'¦ibÂøÉpÀÒÀû›¬,¡p„_3:Üÿ¡Ú‹¹¿_ø÷¯Ór1+Ým¢ s1+«OÞ¾¾pÎQ1â @ï Íç¬^‰§¡)Éä\ù°“µ&I Ÿ¨èwŒ×ósÍ Å¥ÄÀ¾€’Iعá¸DePîKÍI^à/€ÿ>ÉjœïñŒ‚Ûª}×<Ý_ýÖ"Õs˜2°¯) ø Ì>(ìbEÓ0·“Ék ð5ìHö€Ha•˜-%ˆJÓô²Ýé´¾=¥70ÜÒÿ'Bv¸üðxsz­Š¦ä%yòYº{y„=<àä䵃V¬€¾ñª°î2ªeônäðpƒ°@j†vp“£¼Õ‘ÚûBÄŽZ eÁŽñ?¢ÛÀðŽØ7øYeQøJ£ÿ¾»Ü„÷NÔ¥à[]&ê„H|<Ÿ€Ïw×–+aÂPÀ3c …5BGç2ØmwcþtÁn½Ázû¸`ù½^+Á¾”`¤úÄp H‚[+Ôko™K[AAgP_ÂFF3¥¾XèKîþdÉ|AA" 7ij€ƒÃ+´µ¢Ðß¿þí$þv½AÖ1Sgá®(¡GÞßg†µ6û̶êW\üèèQú›ù¯å\‹+´„„šñuùd^×éÕl^ޝÌí5µ"RGA–ñhé/&}vpÅÅÈç£ÂúíN³Üº½Š‹ÃQ¥ÎßrÌHú‚ c1l&Ó™i÷n¼]ìß KŒr™~áæž ™»¥çKï[`ÑÊ«™!˜ú ’ j~P`5Ôô[€L¿W|#/,œñ?ï÷AçC„@òYÃZÕññ=+›û£ð jš_¦Æ6üpÅ¢TõãÙRÍÙ ÃÐ×™˜®yB–zESÒ%•ªm|©4xAAÁ£Í¯¼RSñ76j™ð³PÉjתFéΦ•‘6hb£„Pá?’Êf÷OÌŠNJ ÔjiììȤaÇåPȰ¬¢ü“±»"Äð¡°Xxø¯^Y×;!ÔÕ-MßÙ-€—-t埦©­¢¶?Ybˆ¶‘¨Í°y³Z ]§$ØÚ íp”ìíýÆ^=Úû[‹ÙÈÆ¿þ&§U…ïß ³…oºÆ³KäðÖ…@òèèÙfñ°LÌùº{¡ëL ª¡Sؤ;§ ººeII†¢¢Þi¯Š¤òz4€ºz/Üç Dáß>B °ô¨Ë÷RO†€1·PÚ€* J —»Ñv¦z2„Ûï;4Ê‘©­UNM½X­ÂáâîÓ¹³éSB¸¨ÿ‹íä(¤UœŒ|žósXħ„^êëVÍîõ®Žü|§›>0úÍ>dÓÓ[þžž­OŸÕ|³…—××tHåàLj÷×þ.>¼Š‰µý]² 72âûÉ¡.ùdr×ûÁŸ/ /ÒVÇàÏ<&:©:$¶Õ ¶"‹rÜ%-Úï-W$¾æ@½Þíì € |\Dt~~YO..îê ²‘Ô³ l¿’®LkvF‡é»«MP°ošG˜LV”¸ËÏâGTjÍÍ”Eê/÷™žrr0O耼mOfÙ„ØSDSZôëë—ïßÚi.ù—rÐH•¦;¢Aá¡Wþ #\†kyÕÁâïO/CIVåt±Ù¹PÃ0•’e”O/"&1Ä `:·«$ˆü?wùÊ’ââ×ëë°ðbÝÓEÈ À¾RiS:ú]?¿¼¸hùóx©ÝnWAIbEXrøíþ¾¾Œ†‘¿¿c»Šag"Clf±†+{Ê–gÛ­Nñk>]j¿ÎóžíìjæWnÏX⢢pºººŸ¾|1‹¾ízºÍf¼>FÄX¦Tœ¯ ýdc]c {(ÉVT”÷»dIZý ùŸ.g9–ðúHiòÎ.ùñ[×¹Å6^ödV Fw¿æf|hÄ}8Ʋù± ¹Ÿ[ûpÑî„䆠v„#¥R¹yI,€°¸þ“ÓòíÛ7üRíÈž4ÎHY-­àWoì 3Çs‹7]k.’ébËãã¨ñññ·çƒŒ=,&T<Ú^Í\<Ž?ç :6RÔfË3‹‹¡01ßQÑò«ª¾*,\¶R’“óQ­2Zˆ§µ²³ûWŒ$—óû7ÆööjæŸ?álVî¯+O¹œN5ÅãDEŠD¤=ý‹”‰ ój@ìY‰„ô´¾o ›6^ª9ÝP®@Iy øS.>ˆA$×WœM­ǯI,ÄäÿC€//;Ûs•mYq¼"Ù!LôÌ{ú³ÕºÃëUÉ— z žáU‰?é2OwÇ¿ÜÞõ´2b`’‘7 Œ& /w¾.¯;ù8#MôþýûÓ½¼Œn¾dZ^ÞŒ4DÎB½Ž×œ«/wÁFå¯ ¡ë,ȼ…’Îh(ÓÒTÏàS“M×\û¯Ï20hîÝD^ÿ¯Ïú•õÖÌŒ XŸÑ27ýJ¯øWo}>Kd´!`Gô²­†å-vÙ¼ƒÏBùÛ»=lhÿNtgD°Z-*îׯw@é¼…ùHòÉ 0¬ÞÕ¾5óÌz¯NRÒx@Ù¨88Èž/8·}ÓEz—Ç%Þú’å-´Àøü(~Ãk¼=Z×õüôŠŽî K}¿¿Vö‚ˆ¤û+nnøÐ Ã±ñ=:øˆÇÌ?½ ï¬4Ìkß4 îu,Rzz:^~$ÒóüT5V²£/-’ò©)Æ¿Žååý£lßÁD"½¥úï*u#ïZ\Í‚ÜÛàLŠ@3ÉALìû0Oc«ýùª0>ß}]l4IIü  xn¿½ Å^„,J!  )77/ˆ›•õ !!"Þû“ì’eQ üœÜV¯´e韗ÝEÁL7í+ÏØøÌxü»u65~Q7&%ÄÔ_¿bcbú°-@{zÚˆ¼}´/VYØLC%…â?X‰»)$C›ŽÇr¿ò¹ 9–ÉáÊîD*ãùdêWÖ¹ªPeÚ‰^£ØÌ4cw•°_¿úb·ì€‡‹~/++-øë@N–¤ý`Vðv7{µÂh؉NƒׯÆN—dâw+qðh™€ÚŸ\%÷œœ-RŠ­w™‹ç,Â5µý±ÙÙozz¬¦xÖuæ<¶”øžO˜ò%€¸G.µ¼£Œ~—‰`Ý_gI±œðé…«_j*ßåáü;ýÞ_:G g8<ÍÈËZB°Ñð¦¦G§ÓÊú&“‚ûûu×Ú;? Ç¾‚Ú…ñàæ–µÒð®„õõ÷éóõA f=^–Kd7½PùÈ¥›B€)Yn©:<"¦¦ ÀÖÕ¥¾ªU^žÜ-kë´º6g_ZežšžVûãÁgða8@ˆ]YC#°Ä ?D!¾/ôÄÜâãß‹O¥P _îO#À áÿ8Û‰‰}3¸3™' ¼µ>[}¿…H§³‚{ÍŒ†ÒìM¸‰têùÅÅ8Ð%Xiˆô H«î7~÷¼O¢Áo¡–¾svÈä¯ÂmÖTRrår¿ ‹×Šx—‘ôÅXïñöL#‘$:‚;Äóå)ñà³€ßW¿€k/™¹[-¾øO_ýcÐÒ ¢cbÐj-¡éKùßN°r»^ã&$¤àµ¤ù¼~yƒ«Ù”PûMÑ95N3ã›Å³_25cÙ[ãÑ€®®M* I6õÎM ÍÃ)Ä{‰É è´µ"À—" 2äôÌ̸<åÚÀbÑ«ùÉ’Ï“º=¬Š%Só8Û”Hf. pc´>d/Öj¹oáõlÚn¬ª³\î¼»Øi`àßÿ;¨¬ùûz_q,ÿ¨º:„É@ÄA‘bÑÇÇÇ \ t0Jå£tº€€ÀÛYà ªo߿þ{ýîI\ü»,F–øüE>É4Î~Í–ý"ÛÏ?~Äñi¦!7¢K²**(¬ýë ÙhÄ ý>1aƒWžµñrÌ'#£##_”•›•¨A"³VƘÅ?ÓÍnª~ Çÿ[Õ~½¼ò3„u™t;uóT$´ZÝæ×ìµ#ðØ,×6zBÇ&&:ï¯Ö××½°  J5›ªŒGk ®Ðv<‚º¤yŸ.W2Ú4m5EhYXXR¿Ú|†-P¿*¥¸¾¾.™àOˆÊ-|ÀÛׯpŠŸ\×¾i¾Ç{³X[Ò·Ò¢¾¾Í w~Gƒ~,ºywEGJOÊ·ÉA³ïöl‘éÇt±ú ›‚ââúÍê2Àydvw—WKˆ¬T…ùùí³Úžˆ’’’8xx›žÏÎúߤ¾~ýz{Ÿåùò¼;S‚Ideåçñó;H~iiäåFû®Lþ@^Fzúž ñß99þ„Ü.kEe­|ªªQ@A©©©‰HJ–8jBÕÛlÁ+•jÀ! ìîîê,ÖZÔ[oBC­õ„bÿXmåVPTÌqá]ÁÂÁµµµÍ/,ìlo‡Ê“JsÑ¿ƒãçç·;˜ADÀ¢û&*üƒÈLþébÁ´´ARPðÝL™6ãþÓ?ä‰ 9YI_ä€ÂBš°ðpÈ›_Ô2BQø`Iþ”&-¡¡ÚŸ“}G&Œ»>ÈxTîx"±ÔPEØßÏ»Ùéßs{o—@ùM^>܇”/ÙÛ µBüÿ20=»K ܇Gà³¼~-îžù5›ÝJƒŒmÄ\\øQ‰‰}Y‚¡+ªÆ×GìžÏ\·n–eIQɸµû?{xÜ"ÃÃÂVTû6ƒ[OVÛ^ð¸Åìì s=/"ÆÃÂÂJŠ><Ì ¾ßÝéÀdðe©Ù4tƨðÎHè$B® ç‹íWPÅÅÅ(¸¸!YY¤nçýÿŽŽ ·y<­4%%%ÕÌLªHgð¸gß Cåçç{1A{zzš¯¶Üßßã°šã°Z,¼ýòåK#‰¤Qü˜±ÂUp)È6Yßwvsê^q{<ѹñ7º!(d!,3²Bá“õ21=-hcS¹{0aUõ#“쥻›WuÍ Û ÍÍ?ÌÌÚÆ-åä&ðYì–C±7B[ÛA‚¬ç˜Æ/«•K5¼ccc§N›š8qôuÂH˜™1¾M[üÅ¢çu8Z¸Zy›œ,ªI’“‹ÉOonæZjó$ ø½c¥Å5::ÚÛd2·cxX’n”ºdÿÞÝDéëë;JŸÉ䇷 ½:^N|GZZZIMFMI~¸‚‚bhr2ÖÄÔô3 ªZƒ~´qù\ Ý£Å:cjjê«Ò”øø¨©û­Ý]*ôÙ”®@ä*À¹•@~Tº?\W€gªÐí 6å´Ý~ÿ…™Ùäß¼?†ôÏaZãÁýóQ²-=½!äµÞ Û$45Ó*||^DÄn$$$$¡ªš””œ\™ÂösFÍUÓÀb(+÷ÙÄtÈP¼@N}TTTPwÆæ3ŪæD³¶@oƒ¡KfS_1Û7Ý ‹ÿ8Îéz¨ýiù ÇNù­ÈtxV-â•*W™r ÃQŠ:z!2$""”Ê››™ÙÅ q+Ôîzu¦H™òš››ããâÊoIÈÍÉ¡€G¼ººú•[Pp'Ô®²Ø¦ˆøËcwŒD¶‰Q»ãHÛÒ’!å³aÈÔ‰°dW¢>àž”@[ÔêõÀƒ¸7] šchvVYM_ñÍÄÉb]äÕÉjFAAÀ&Ha@¯µ”!dŒÌ”è766B3œÁ›2Õèù³èÄÞ –ºÇL1ÜÝýÏNTþ<à”)K=½¬üÖäÙ‹—ÒÚÍ(¦^Ë¥úŽ¡¡¡_!!ð›gN‡€ ØjÎôXGðeñ@oI(*Æ/·y¶­™N¦ê'u’Nà‡?=Eo_øÒ¥ï4x”ÍGÌþ*9RšÉî“cu»EÃf¨ú÷Ï„WÎ)*–õZ)&f<7 5µóN¤ÍðVOO¨)Áêâ{ùÃý¾é¸øøU“ºm–é:}Å儇«ƒ>£¡_$PÔ@ÓýWèë¬ómzø]% b”O{°ÐÐ:ÞèäãçO0tq}m¢9rë’'¥¨8í¸‹……õêÄ]SAAA`Tû)'+«ÓO×—áï¾Ë2®ÏÈä•ÙáYIŸW1á`Mú,^ú}D×í­Óöúz3 Ë|w0ú<ð‹ôõQôjÕA[ÛÛ•@“¯3õî/[ ý¿qâæý{ï1ºÓVñªâ“#³¨ÞÁá†ÿ‚ÃùVæÊJJÀ ëïOµ”W/…½±„ÌeäÔ»»´>/À,70ÄþJøÕYW"¥L=lgo$ èÚMÇQ wÐÈã›Ï£555«?ب©÷Âp(Ÿõ`k묶º³;âTWWCAýÿ”Xççç8l–ø@gDÿúq\a„ܸ°ððàF«ÎZîîî\N§ká‚ÂÂl»öãÿÓ^ÿÕ^m}Ÿ .bøÕ"_©r'àe·n~úøÆõæXPH:W2šmÜ!ÃãžšA£Þë‹ñHûÂ.î,Ã+ e<Ž„`標 ß⌸¸¸•uÔ;_ ò‹‹ßBq¹^Ï$ãÒ§RÑÅÈŽïÝ^/"”—ß"‰'<ÂeF鎦3ž®u8BbÊËÇ6& ™í8´“K宇~1½IOO‚Ž”yIä""íÙ‘åVë|99Ÿ–îü¯¯¹¹¹w÷ZØ:&'Ñ«Œ†;wˆò ¸Ÿwˆ.š¹ÒŠEJ$ï***¬¬­;¬@5ÕzsEº=£ÿ-!r+ ð„xJÈŒÍ᡹±qv}½JuZx8" -m…óè¦ÍpփňCÒ’?Wc #¶’܇²9–ÉOECÓ ÐWáÄv¬F”^­‰Ý䫪êÝa»wÊÐÊ3/ï†fh6‘=Ò4ÛíM>óÃ7!×6æ¦*­Ô!¦î ®Ë4\a8˜À„ˆˆhdn>Ä Õü—Ãn—X É ÀrÙ_Àw¶÷öîzÃðY¦Ý4ää:¹¸¹“rs)'§¦Üô©ås˯ۘȄ-Œ [&ãîÇÇe)¯³YÁ5$de£!o­Ès¼s´P£_¤TRX#åý­ÝãåÉq¦î§vnnn/¤¡-—{ GýÿKŠù¨Ý”µÎÔöðïìݳ\_ý/ˆ÷ûwîî}ë[ƒ‰IÑѨòJJFàz'aÒ×[‰ÚŸÇï§÷¥Rû>/%gW´ñN¸xüßiÈM½>Ym´Ûë|ˆh–FPª&®ý_„c6Š®.J?öx~$+6Ýš»Å«µÙ2q¸9Öè& Э®±QªÓ^Òl^mRqà³èûPÐRªjjÉ»ÖÀ}ùô …;!JPúÒÊM£Uðÿ‡ Ρ°™j“=ľJÿÏþÜ}ÿÿ¯_Á…«’—ll¤ë/7¶éÕ¢Únãó‰Š~…¬¹íîߎzæ¶OLx Á9ûÖâââŠJN™.RÖ~¼ƒòŠ‹Ã€ú¦¤„uyuu°ÄÃÙ:b=Wc†­T¬2NÛ $H_tl¬oXØûb­ÜXJÉÆb¡Øø'6Í$Õ»¶„ø§&†††"¢¢™üŸ~®pÃÿGñ¿£ôA‚ý#¢ª ™Éõ-:xéXyƆ¬¥ † ‘‘꽉 Ê@VVþRm–÷×>ÉoJLJ éµ7Ôþþþ/nW‡ì>½¹rÝ7SSS§ý3ˆËü É7*u» íö§à¸‘rµ â rsq±—®ÕÚ}ä^†MPióþï€Gu5P#z£H S)‡‡‡õ QJ$´;0€ªI¿R©F½Ž$ÚYƒLÚžP…„ ¬ýcF)R¢÷ª©‘MÁO‰mÂã\]YY蘋õÿËWAó&FD A}ÓJÿli: Ÿ×£yd Ei²ÔÿòŠ2OòߌŠã±˜bhµ¸ôØð«¦QýÊ F‰Òÿ]7Úoã¿»LRÙ­aê,)¾‹‹Øn«èoK˜ýøa·ÖÈÅ¥ i¿w|¼òÛ¾(¯f $êùùág}CÃúx¶0¢¼Üýù{r]9y[ëóšW³šÿ¶â!0æšnÂðØ~Oeûˆ”A¦ZYY9«‰ÿ6m J‘;—²Or-TFøPòo†9(‰ ‚›·g(K­O8iŸKs¥ %‡#4…ƒT °PÑ;0æþú( iH‚dÒçw@·9Ýž’€cu û¿ 2 ,ëÝ«=ÈÙ $¢VȎ׹ś¾ ýãÛÓ.¨ÄHî »`­7tœœæ:ÆÊ9gsPùDÒhhh¬®UK‰ÿh©ªªîQ>k(R ê¾€'–Ö_FáúENÇÅNÏØ”‚¯ß&Ï[zjj“Ìu4|ü0`éÀGßzÙieȨL‰ùñDE‘ãsá¼õ|QlÐe[ ë›*Pú±ª•tp®µ°°@ÅÈØG-_Ï hJM{ðMÆk@,Ù$?G2+é<¡´”‰€ÃÏË ªTÜC°§TF‘ŧ²ò MtÆÉ¬ÞhNáòë嘆—”uã¥i¬YÕÌ­²‹ýýÔ|šË¯uó‹Ýæÿí$¾µ±9úSƒâ…ÿWHP0bW»—æ`YKTÈÓyºh h =’@¯Æ”KMe÷­É[V ·ÏžZŽ¡âGtýý O¯=¼žÞœÝZ3—„[ýû«öa2ÃÈ‘ÔO$ÈýìÊÊgW¹º1’¤å0“Éâr›œ/³[Q¬À‡#hiii$žiab¾ö àéݯwaNJr†ìrNM…Öë|ûEEåÒ2z‡Ûã=0ùþ9â}eiÉK#µÊV·§ôKmmpG ,6œd›,ÛÜ>¿~=«”¯ñÓir`ÑЈI–úšÍÏßExìîÚ óò;9ÑœŸ‹ýΧB~ã{ŒÃ,‚í }…ñD;ü FXYùÙÆÖ¶;í+z&ísgÙìx™62&úoãkDô¤Ø0È+ÝóU¨Q±oxž¦ÐlwÚÛãÍæDYÙÙ ”iµX­µ¿*' çå%Jã°‡0÷Úîî_û¯°<<˜~± "˜7ÕAÏn¡F Рà§Âò¶á@v¿2jax÷MúøúÂáãßëïÊš*)Öp†Öö¸#™)s´PR!*¯~$t½v{…=)dA‹ñ9•ëCÈIÛ ŒfcußLIFûHéϪýhr bTRhìD‚ݱïŒGèþ5â“zÜa`Ïg ˜kãEÁfX ,µ4†ìμÜë/ˆÅMÀY#=¼ºÔ(£¢"„-ï×¼:ïö¡¯s•ëÕ+k*ú-ýv(Mvö˾?¢Û%¬é›]lûÓÆ:?ŠÕwHX——®ù‰Q6¦ SªÝ^ÕšŸu4Ø¢ZY}êåõ„§§·¯˜¢4¡úF*À±Ü”‡î™ß^ƒÔº³ÃKþõºW¶ôN4 ÀDúpþâpUÉ Mñn6QŸô!4 ñ&×Ûûìô"ô»Ž׿­-¯é¢¾ŽÿnS¯Ißìû©?œl«Òº„J«Äh•Áãξ´ŒLF$ë‚ajêÐ=’6 YrœppàÝÅöÉ8"|HSÛÔ´°«ã»æ¥‘<•ˆhOWàô+9ŽR-w¿ÎÎÏTÔÔís*FF-:–¥¾W:¨mËàH&Ú;³Ø44%Îâ-¯:@b­TœTO@Wö ¬ÿûÙ²>½¾3 …©¦ûƳ™ QHEWwe¾5ÞñÖHäƒ5FC«\;!ò5›ÕCA@æ‘éÈ—í½½š…°‘ÛïNQ;ˆå^¶ÕÔ®YmNÝùÊ =‹ÅŽŽ·ËMŽÝI_ÖUj ÷ôãÃ?L‘ —v/¿º}~ð„lEÎð|Æp8Æ!9?·ÙÌ㼿܋ˆäù #c¿œ–œL»ï}¹Ö!ÿøtà ÙgÞCó‰åèäá‚/Ìdo û ß RÊÎ^#ÚBDï¦&zP×LYåùp44oëÎxŽ/…MMºf©‡†¯êÂQø‚ü¾‚¦&r7x¥8ížR¤è[Šv°Ci• 7Î6ñíŽ^yÌa§§_£Á]¶º{ßsþ,ÖâFÒvß"¾¾ÆÐm8 “Êb8ØËj橨¸Ù?áª"¥4ïìMV·³·‹a§ü‚špÛÐæfü÷ˆM]c§ž¯ä7Y[Z¿<£+òöåÏ?ó©‡4]äðfuE¸å“•Ž4í¤:_·¤zúÒ²E…Å¢¢Dº¹7ƒæ‚­&*:nU>* ÿ³YmÇ WG(­VºÎî`ß ƒà7÷—&i{p7½‘D‘@fZk ¥ýû÷;w†( NFî<èÀF .®ñ;1•ŒÊ€=µ}_D-u°á–Yihb_«ŒÂ¡Ïù¹ñÚEFf)L{JÞO #æmå‰ ¦[\¥×öß$22‚¾€('ÁøDeR:ºw³¥=í³lhóóïÆ&B˜ô%ÖöM6Þ(°õ¦s³‰ÌÙ ¼=Œ7­7zq¹'†Sñ.i¸c®âM÷Dn1²×²† àVPøð7•rgkèÍN²o/OÊ|3ù¯tM "×»¾ñg¿™ÝB#E Ôµx"ëdëA晽<ý#ÅÜnϘxÅ”Ósø×PÀb¼¾Ø7½r݇»‰‰‰Aùð¡ßþÃÉßÑ2vvt’ùübn5¼‘‘˜‹ÞËŒìöÍ‚ÍìH[M±’óóÛ¹&6¬¯_spX%Ð#"e”‹¥MOV=½óóE¤¾ÉʾSPÀÐù1‡@0žÉqyÅ©»! LE3‘—c°5ðrÖïÕ«¢zÿ(¬è mŸß¿ ? öÅ­ŸUƒèÀ%yꤦ‘x±Üô¦Ü0”±õÁR®hé3¨.ÂüBšõ]YÇŠÚÅèvËÒ©) ?$¤¤ˆëë"C>2utÆ!§ÌveÜ!'{„„’ÑР‘ZH¥Á÷8\ß©Cëíq<þ.¤+ë?`µö ¿øȾðks<»Ã¿ÃîW~Íô,,ØHËI¿?\üb1#7­Î?ÎøúՇˉ èÞÀñìkM©4 +<_Â;è[ÿÓw§~eUiv  <‘No°²"….îK2; YÈ•j3a¢N” >’®zëÅñu y2lD.dUR66lð¿Ú x>¢ByóJúRRáTÁÍá °ÕÈÌ¥«K=WC õü\©ñ¯¶ækÛ¬¤y1%¸sïõôëDzêáªHå!Èðl} ¼ýz'2’TÁ­*Å—[ÓÂvF©¹bÞæIêN~©÷ôDotÈQ'²sý¿GH‚‚˜óó©:`!»ñíð‰1gEk5;~¶iv!óJôÎÏ”\7ƒû¨¨˜wγê 4©™P59ÂèìHyþJºŠ¹{UÞSR)$™þTw#;}d¼³Œ¬¬OCa2›_|< Ýåǯ|ûÖŸyî °Ÿ'ßyˆÔõ‰}…5¥¡^ßü×/óøÜÄ ÙbÈ2ˆ›žžYZÚkoâ÷;‹Ï @¥ÞÉ ^Öü €'&Ë%b*ª¿¶šZiX \‰Œ¡V÷—¯`Œ{|D{<†jnö«1ƒq»Š“+‰G‰™1ÃJÎòµ %åv9~²»ÒBv}”ÒoOíÇ,ÊLJåæNÙãÙÝM÷ßÃ4O|®Ïrg¯¾Õh{4„p>žnFéoE—Ê*(DÈ®•áÿã$E-„QZmº®¬<×ý¹J$žÀÞÞÉwn¼ŠÿahˆU§Ãg"ÿJMb@囯z æI-û#áä]ÃyP‰»Õ›)Io–KAÂB½fù…µ]Q$„5q »UÔö£_ìŲ²üßÝÄÏOlð saÚAàU¡/ùÉ͉ˆŠFì8ÝþînGüv3òÂÈ§óÆ ©S§·ÖH枦ñ¶¯½–?CUïŒèû(¹S|ÜlN‡lÔ€"ºì8]wËôý<›ƒÖYðQZKo*?£Üz³[é¨G´»Ô"PÐ̓"‚ ‰>Øh¸²·Ó?›Â´{ÂÁÐ{­;x‘ÝŠ–/%ÃÝè22çî~ˆg³of<’ñΪÕÓ=ÍåÁÇååõؘʳƒ2ePÓpxx„­O¯¡ß­7SÐrá~ú9ÄV³%ë4%Áû¼ÚöÒX^žp$øMÄ6>áÜú@ ÍÍÔúHí=<¼XǦIPHHO¦ÐU¹sWÚ‡+^«øq“j<÷»Žâ†A±ŒßÉ~U®®diIr¼"ùýÇ®>ä Èí-¨ÑŽ! ä™!ȱŠ(’–½ŸÔ&±·0¥HÉ è9sofä -ØnoÖûˆÜ£cå ë“ºî‹ wþõʸ"œÈpÄ¤ß [ß´(fȶhÜzW…ëVªpÕ| 5:„ÈãT¤[CC¢Â¡r \S©jê}$@º³ÃþÂòªÔÝc™)LɘJ¥vÛø|+g÷öL@\®X;˜Õ—ÕÒ‚³µå#0{m¼óýÓ§Ý^ûàá^œ®ÞplÈfüÃ9&L"O.¿ƒ«c· Œ¼þ§§á%Ù ûZ-4B""h³:„é!À‡P ¶TÍ>{#ª.§ €dv@ÿ‹¹?…Ur£‚Ù‚‘ÎBÖŸ×B**Óx-WšãUÆØ¥ƒ¤øúï![ÔÖ:ˆoïz~{zZ@èc‚ܶ 5ÿ×òîžW—*ÜÿÙ `ßs}$ßÀ xЬÜ$–-ÛÕ”§ª»PqÓ€ÒÊRÄÉr¾É>ÒtsÛWµª­«ÅÕÌJ‰ÊëòR¹Þå ò€©ÏÿtÁOÃÀ Küú„³ÜäÙn¬×…ÓU·ªÕ>žMrÛö’ÐK_Ï%£¤ôÊöBR¥ú3}åÏé\PÚClñAkkäó?lu(ûû¦8L(33\sóøµµï}Uùömo-е= Ù,‹‚‘I~×¢c4÷Žòjw®z®úÐdµH†E]ÑH\`çiC[YA.7S†BC¯úd—ÏÃÅ}Äd$áYp,âŠk?×`ËA)…?dÿ•>Ëe»ZÛ³%lC§õq)k^ü_±Ý°ì®Fç/¯ööÊ~geùy¿±§æ*ìù¯ç øbŒe£ o²ùÿ"¿ ÓáííYæÎ?û°s"ÇôW(âè«´=sAÎ&q»¶¶×[ûÖ3ì!Ìfô]T@¦Þ?zî˜@™+Hó@ÎjýïŒrY)h¹ŽÞΦÖÛµ7˜¥ƒäæpz#–Ò¹›Ö€ÒHäÇ•¾îÊÚÿŽDØ G6¢Ò₯¡9\ÏZm yp†ø\8aÊe!Ÿ¬7tè4ØÕry¶š@Þ¶G¸ýòó‡?óZ8‰Â"ÃèBªþY¶5Hpv·£$÷Åœ*•„’Š U:£Õ/&æ5d×M8b™d 00¡zèµ?3h˜Z>ˆ,Êr«ÉЦƒœæ:¾º†S÷rè§ÃÃ{1ûŸÓ7ºaºËmg;™sMŽ”©i06šœŸu¾¥~­9JúöFÇVšò‹ŽŽàzzè›ãÈ¡5_åe$Sý®®vïF¹—PáºqËìöûâa¸† u¬ Øè Ÿ»_x_Þz{ý‡Ê=[Ó$´ÉQû®_kiu°;Æ;¿½”‡œ|u¹Üí¶7Ñ»fÛAÁŒOL°Ö+r¾*Äq½^j÷~Ã6^¤Œ]¬±·DÙ¹·Ð™½¿ç_Ô• ”­aiŸ¢Åõ1bw2нŽ2Š9Ò¢ƒ´Œe22¯!½p´@öïŸtmo“wQQÁ²Ì² 0!˜žëw®smžXø0Všri¿Gæªv¤~¿*§8ÇzSˆËrE¢ý`¶r¾’þÓ®Öò &¡¾ˆ©ƒ ‘<ЊQà±^û*| HÑ•ýö ¿õéúu:¯g¸ó…PǤíû4¸¼¬ìIëSzdPVŽu=Õ&]7A¨êzN)â@Nm¹Ê¸ì,ãEaõzá`¦rh¼tДÅâ+WeÕÇ®@<½ƒi ÿ–•ðöEç(#ôÿÞf¡©ŽL^J œ÷dd’¥â抯½Q 1ØÇ›íÞª8œJ6¾¤PƒÏf3©]O)äY;ôˆ^ôª@ÍüÀ óWÀwŒó+¢_¦®#¨ó?Zí#ÇÆn/O¿˜ôßÎnEÄ–”SÑÒá±jx J)ñ©ëþ ýi²5©:¸€à³‡“YTæß}]ôŽ5ðÜ.£ý‡òö!g¾ôº±4êËq”” 5»’þþÍ›«ì!!é/¯¸ó¼>æbØ>zysk–+”E¥*Çl@Mj¦*f³ÜhƒªÏ¯!+"HE**ʧF.Ž –g˜üµW㢨Ú4w”nçÎɉk`Èçdtèî2éâ9õ‚¿¾a¾cLÆ!wFiþŸ¬€Àg­ÖGâØþláH­®‡¥šêHú›×üý¿O*­/Œ¸||6¬fluwÆgj±Í-Â3s(2ÈønÝ^%Ð_@æÀNO!ÑK*1Ô½mq} À¤ÒIÍ”|³¶øzN½n![Û"·+ëÔðªS½Nkíþ*¯Þž–°¡AðóTÇßèe]‹å7½½G[z—ÄËKKnÖëdK-MHQ„•Ñt…ì7÷7«}ú·V7ÉzBß¿31h…uz¿!í÷É1dJç~»½ŸËoöIKK“ÈÚúØnÿ£×ØXâ\ýÙg­f§HÑØ{ýžYÄFóÊ?ÔÎSe„ÐïwÉíýy45FÖdz1–šBöd¨>œÝ_ ¿}×Ó1ʈM ‘¾II¯ÌÍÃÀåÛ¬.î^Ó©ÚàÓº±;®*gŸfoõÝé–v©õ‰7xwòõ\L‰¹f¥Ùl:155:.n!O3mqqcWg'ŠdÊ€Öº‹ØýÖ6–Þ±£Dò‘ÙìÂg$EΉ :—ûKz ÍÑõ½ÉºË,!&š/_û"WýóŒ©ê—Ð/åé´ÌýGÒ¶~æŸ^î¥ëT©²ÛPNfм÷öZˆÇ©oz ùbœ¬?NÊ!ˆu+ÇFFJ*Z+¬- __ÿè5_ø‰‰"§UŠ>¤ dNDDDx0ARWWV}Q ‡£!.~«ÌÊÍЉ‹g{”7"*j‡ÝÁkhèÏGÙ·nIé<¦S«§Wš~Oäfoè½è¹76V6@6a߇ñ››ãâ²)u–ëj2¹T£ E’ÄÒÊM Ò¾·´l­·Ätq)ù…X˜tIjcZn±È‚Ï -/ÏýxÖçdÅnWO7}º±¹Ú5H‹ÁÃ<^œ4XÒ—áñ,Aù\~ý·‘}‘„fFáô¹R91´÷jn/£¼e|Ä·rn«ý&TGP ²)ÿd_žÓÈiÆ®Íß1ÿ‘‰E„jOV曂<Ä'b¼¼Ä·Ûýý -Î×JNh¤Cº ùă¾Mý•fýz÷‡w¶kiIH{M*ê/þ¥š‹kž”_Är~¼2ß;vg¸äªüRK kŠÿzWyrIqãd7j;6mÑÑØìOÿ®@cqÅ/{XïÞõ¬{¾pFvv¢kY¼ |…Æâ—ƒŒŠ*:×tCé㛑©/,9ôKZ¸Ï[NÛ1§µ³ Ø#B¿À2ÿÒRèÉu‘âT|†ëÃ8éQα1™ž ¥_\ÎPô4jÁaa\\NQT÷,ò÷¦íÏ®Ðw̶?Øfw²ÂÕg’™È./«« wz*¤³&ÿoË»k< ¤„ R˜ƒfš á#ûúR¿ £âÞ£õErêŽïI`¼jW©Ðí¢àò8„f©¡””§PƒR¿ÿ÷Ï Æóg©ñ ßœ?ÀÎ;<œI(|ŸzœÌžz ëíúúÁúúЭ ™ƒ.ï­j\tt &m3*Ú9~ìGäöýiVåÄ¥PZ WPk¯_ëUxzÂfeËëšÂ‹‡áŒ‡SÒ½TbÞ>ô­/OK’b®´/ã ™Á?^^Ô;RÃ+H‘k¥Œ$%9;Õý¬§?ÙnT5Öâªþ+y?S›—û=ÁBMGŒpÒ§/‹>±wÆ\œâyÜiÚÃñF!•°X§í5Š «Ìv&¬ow˜ßo„Ù·ÙÕ¿Gu¼êé/Ÿ·% VLwˆf3sz½ï¿äv`úoù±Ã,Ÿ‹ßùpóµÞÃýÆî_U8Jîþ,Ze½µý}ßíaÈrÊ®)…Ƚ(ª¯1‰Ê~UÆdVkß`yÜþzì¢SÕ{‡Ž®™ËË>3ã™ùS›»¾éeÈŽJŽ‚„„`±¦àÀ¶bõt—˃v*r™ýÙ ?Vš+T®_Nžë­ÖQIIgƹ¾ÌþþÍîØæ“•õzhøkyå}eˆl‘Òð/$YÓ¸¸¸Nðl„\"Ý{“Û÷MæIlé\¢]áx r´£é-¾E´àÉJhÄñÃñçßlöÝôœ®Ø ÐNkµ xål)Aºõñ|*·+³ò®?«¹™Ô|ÁîpBú·­s•†\%çÒ,¿Ø~ò¬ßž¹²[o¾}ýŠRê0Òù" ÓbK"2¤À+zœÃÉy8&d+”BÖÀà3ð}]€™zAuØqhm¯??ˆÆ'Àë˜6¢Æ~¼ D& Jq`ÔrójódöñI_ïe“QþéƒJÖ8²Ÿ *ý‹þw;;šæ–LÇ$‰@òÏ‘„9í3×D •¦¡Xí ˆ¼Øí«¼Ð<<ÑAa ¸½á¾pè{ùLb‡3¥O؉Œ¼½ËMf»»¬ýóýYÿÐi¹áÞÝ ÎÕZ—¸~"@£ø˜ÎãÊhÙ1Ë ÞÊ? ¬ˆä+ÑÓ“¶ÈrÜ%’xøß”EŠ?9îÝÁOå¦Ó?~˜Ntö¯f³ög“ð³¯Ú{À¼ëѽ·“´—,E#¯Xy}ÚQc&}z¬ÉºPkA¢1à2W^*#'§Ã!Q ¨¢âc2É…Š—ýó¤awZœÆ^W·“’²q®Õt2s ¤‘s¥õé½ö*U*‡=5µêšU5“.Ÿ¶Dê\†ÇÍïnÒ¡ß}=³7¿=ÞDÒW”ú+ÈEHÔäðNwg„ôÏ;Ï'85µá$¤Ðëׯ:@ãXÝžø´ Ü[0ÈÌÍ'1Þ×T;Q7»&†_ì`&‘¸m´Y¸>š•‘‘ñy×]ço`ÌÒÒVU½sz¼e  ¦R«?[µ*‚˜± vg„þ‡×_jQY…nþ»â€€Iˆ‰±ÀOƒ!ëN()-ë˜ ÌC%ªûìM"“ñ~ŽG«{ªó¦qÈîÍ] ‡×Ô”4»£¥÷ÒR{ƒã foä*-:›Ðó=›g¨((¡±»P±¼"X˜œm<%Ò¹ èÕ˜ 9¸ÄÄ$ÓÝPTUaaU¾? ÄøßÈêéA§¦F’‘a79rêÝZ¹0evE—žžYïr·Pcæ­Z sþïÕeDbÐÜâ‰/@A‡ŒT‚4xGGÞ¥–x@>À3ô_* Šžé󌤹I¦0tµCþå5’VãG94ô~Û˜š…Ë=9ðÏí=3³“›“2$Ÿï ñd€¡ô¸Û‚ f»ƒåÕ)0®ÌøüêË—7õM‘úÑTêP‹Àg°þ|þP¢Æ¢ÏA'&4áú\E„è`IÊ«¾t %mïÎH²š…ÊnÄFE!‰–ÈC;<’LB ¼÷¢ -Õ íÙèÉÓù‘ïë “—%‰gŸË—i05›5 zsˆ}œ5}Ū۷w;<22¿¯´üé¿×YšÎj£›aAxëî O<Ûèq…¨tZ¥°¬Iý-|Bn±Žá”¢(@ä»» K rìç°¿ûÉD•44B‚‚ÈAb;Vyq÷öƦ§ÛƒP—uÍÌÂZݯv—‡¡b»zÛð„„F2´©{¤Ú¦áb Jª¡jÍRî¼»ˆfw8d@C›ÐÕÇ!kkã™Ì”•û7«=JF¼FÝÙé!8™k'h×!Q„â“Æé[îî •+ñdÅ#×ñˆ*RÙ=¡²ìVÄoä—WBEA²<’G€É$Í@8%5) ŠFÚGGO£mÝm [:5æ×Ã)“Ô_²z·~;ž¬®mœ¿1%<Þ¼»ëÀmßð/úÛ·ßEE$ÅŽ±Âˆ‘ƒôËM]Ù{u ¨üI¯¶¶·¼r‰,ØHª:›ú_Ì{PñÖ7«¾1  ¶'6ÚQRZÎ5Nkm—¨>'Uéz³" #ƒ/!yµvh.Š–iJÁ™Øi‰I?àƒ††‡þ~h€4&v¢ÞÖ@U½5|iiv…‰&K0ZPÀ©ìÖØ ´©èè¼K,¬ò—JÛ¥aÙ¨v8j{YÎÑî·£²ÒnópöñnGöí[¬÷±“2ÀÅ&Hbwe}]¤”Ư‡ªÖÌÍÃ"FØï·¡x2ZM$ÑÄ ?>éC¼0ø0àÙòš#"Oæ,²dŠoJJ<”RK@ ÝÞÒù•–º1Z~6‘ý“·³1‘ÓÔ+H±›Óí§®×K߬N¿Ø†bÔ?œã±ÃT.TƒAZêœ)Q¶Þ)³ëáî+ïÏâ’HÛ÷†`‚Ýhäã%™¦\ ·GN'gÿ޾’dùŽj_&Ûܯ-¶«ß††<úyqt‡qñrù3ŸcAµ¥s³­ï9Ãm¢RÙ ”÷oþAùåË_‘[ µLÎEšµÚžƒ M{'iÎ¥Ô7{ÄRø‘™ÅLêT‘Œ––hzÀçï‰2ÞÙaj@ÕýlkÕüM$¨h(¢9ó]ù–0ä%;ã?kßmÖµÿ}ÚE¤+”š¢+ðNóz®É~r]1‰NLj¤û_?L‡^…Õý¥FžDðÌìz)`À±ŠlJ£¡O¾€óó©@á.9]l£ß߬¾%Êðg~Eçý­Ô›7ôÀQùùÇD0®é—4•ÊõUØásœ$¡ 9 &¡ö/®Ï,Or7A¥s*5ØŒ<@ýá~ÿ>zú¯¯úÇ8FBB¤høÕ^¾½Ò³cŃHLì–ÝÓãÁÖ,4ò3™°C`J Áäz&PW¼+Íw~@þmNXA®1˜Þ xO„lïÕ« ÈÎlFŽlm^µ›]ÄX:—GvÌÉ\çßšM ìKÁ+ÓÙûþÀlÌÞˆsgÝÞÞØI1w DÄcXŸÿâè’'â þÃ5HL×Rª¯ýGÌýVRR9ðE©¼DÁAAöz´1Ú22aùùû±Â@™Ø,7l_¼sº¤zçáÁAy(¡&z‹et0ö>¯Wi?èà¢Ï(dÔúî.LH«}<Ÿá:3ùëP1·„ ^Åt#K^G,F"`†€€¹EøÞcaªh,1o¬‡‡øE„ÛXAÇãæö°Â:FF^OyÎýSŽ ›¯Bkã}  RCÀE¬´p~"HÖHa9€Çî`Î:™)Sƒò!)l8å âÞÌÍÃ*\j—fa J&ä^IH²éÿ{FTs‹¦Œl¥¢Ù a¾¤x|Ì‚œ¥%>+öH¾h‹,?±LgkÓä´79Îãðz0b`ÌArV]ý#+? à¯dËvÞ‰€´4¸ÉufX ŽZ ï-ÕüþŒä¦'GˆšËõ!AqÉK'øáÞQÞ]|gÊYЫì_;zs±oý‘Xþ´Š›î §²£F <æ#&þÅ^Á ž/ ÖÂdýK.°*cÙ}¸õ½a¶¢žþPmi‰„þ˜ @Å"¡IÙ Xø®Ë½ôzWG–lù³X.\®9(މ ®ûÇ(Ð(øïÙ,¹øeQ‘ÝïíºÿF/Ÿu! Íþì± R hvø€Nyè›EŠÇð·Ÿ4ý‹gýÝ;íAtÈ#r¹^#µ=9 ÞSè ýZQišQ¢,ÕTxj¨O^o«6ùQ'â6Fˆ/+ŽëÍ{½EVWŽÔ¸Âª¹9f'§¥€²Ÿ ×wÙQ¤¤øÇ›õI<€Ãf‰üÑ^0Í.ñÞLúëÀ¤Mf§±š\ØoU-–eþþýv2/EwOŽVm5¾Êˆà»¥ef·ýJý—KœàJòÍç')œw¡oßè€TC!|†ºéò Ðí^ÞÊåäæh¡Ÿ«½ÀOfø´-î˜ýg§2Wfãèž°gtºH"ç'&m+ÌçE†Ò8ä(lƒøôÅÀü§b]úÇ—¨¨XÀ’)½>·ÁUíŽÔ趇9¡a_Y9 úË×P¢ ,ÕŸ½D^ý¬Èåî8x~]cc>FÜ÷ƒÀ¸–Ï›C½õƒZXîØ:·:œ£ûõËîO6LF¢úkÆ2™ÃÌ0 AuïlÌÔœ*}Š‹Ý.÷6Ú^Òý@˜?HÕŠ&ýgŠÂý=ÑŠb–q«ÓÙ«ŽkÈDš|2ÛÏ0à !VE(|?ØhXáRta`u5cpø‡Õõ¡[ã„6= ¡§‡Ÿ>iiÁK¥ÌžMŒ‰‘;\%ªàMfÙ*ÞŒ-2Bt²DúReH¾-5uOŽxd…ñ("H1D¡A¦YKB ¿MÙøù¬-+û*'ÇÙ$ë­íCyíñ+`°˜ýÿß­À³²S%ö¤®¨ßKÝÿ§H(]«%DÄ›ÁQÑ‚¹Xážžœ  >üÇGB222äÆF\Pœ{M¼M?ÄÅÅŸmÞd)A~j:¸?ç,5%zåˆ ëíMDÛ}òÁ‡Etž.%ûúáõ+¨8iår¯C6|Þãn7æ~s<Þn"íî›®]î5È()aZÅa4›š+}ãWYIš•ͦà¼$â“gLUªåîs}¤®44;ûûß]â9~ wXä”F ÷¿FãG°–jª3ÌvmÊH1_rúpvvrz1ê^n^¢Q¢÷oÃ)’0gm{XQ"p‚¸¼”€@äX ÅuÏEÄ‹¾Þ_M6|Í[ø' ´&߯ú ‘¯z]:?1ñ'¦q yA 󫧬`DÙ—iêtúµüXÕz“'5œÉ’·¿¾?ýñ×—ªÎ®YåN%¬qÐ%þ(ª>AÆ)È•ùË_>`a`ƒà;Üëœ5Pc¹ü~|áÓ‹,à"@:‚àþ¥ªBÒZ_ÿž#ÜÐÞß °BýÃñŽ賟k~\ruºÜe [П¡³}|´%¢¢Cý1ñ//ã$[,R½ˆØvûSº¾Y¸~ß¾Y¼ú&úöl‰½_Z~‚¼¦-éËpÅqXæŸ ‹ißþ»¾HôÉõ%·KWˆô4Ž!%u ‘È€£¦¡ûôå‹Wx8Sq‰ë€gæ³6¥Ä‚¦¦d* va¡}Ï==fû”¥ô1266ÇV„4»»›½cc±a_!$Kååôçg‘BÖA€4†}«˜G­B‡µ±¹¼G3¿¡Øf€Jòöb›@XEåõãSâßå‰tŒµ<ÁP)o”×Þ^^=zßÕÕQQdTþv%}A¶Ú£ovMD´T©þ‹æþüëU(&µÉŸÏÃFºÛÖ¿xÜ?½‘•EÜ;À?ç}i†÷öÒéðY·²Á¥A'##‹…L—löÝ`jޤ‡·CÊs Q1€,?EP°óÏ—Kõ¨‘À6ûy }&ðÙS¬Êÿƒõ+ö .ÞÞXR©¿øÑIÏNžOÏœƒ‘=³ i¾C´ßhÂÚ¡Úúzð\Uj¶0´Êã•2”Ã!,Ÿ}Aˆç‹}ÂCr²^BöÚöööuKÙõi½/™ðñÚ­õGœýZ0….9áùÊ/(°2Ç TT4k¿0òñ£ëû¸?äêÜÛ}ÙÝ‘VX^n}z=šÑÆxãLKC£Óî%eåø’„•ÿÈà×}» z•;žH:¹ò~‹¥P¦P÷ 9’s®jº¹¹Óêኪò"Z\ì½ZÜys»ôñ3¿|æâ毰5&·J&Œ`F¿/r—¿ƒ´|iÀ÷­Ï Ø y¥¥¤H¦¦’Ç’Y>{õm’}Ì+Ÿ(Ø”ÎðŰßË ýh’%Ça7Ö~¼Üñ‰ÕRZøD‰O» Ÿ†Eg±Ö ²€$!a—Y ŠþX™k­o87ŸDLK‹œÂz—i­Oñ+y"e¬2 GOwŒøM~K/à](·‡e9À¥ËMu‚'+ˆD¿©ž£#‰ò:G,±ýõªªÊÉ“Mžš¨Œ3SúT7aΘ2Ì—-$¦RkNÜ?, ËÂ÷(Lj‚stô¤ÓæA£U ÓãÀ“ÀôsÅúôÎdž6‹š†¦}ec±NÚàGÒûä'ƒWü´ƒÝA®¯~ŸÑàr¢±sã âãóC¼ià»×í9â¡&µÚ½‡K‚Ò8}e€Xßö|y¦†hË÷ÂBLôÿZì+Ýî>ÜÞrÑݾ…Š‹›[;{;6iæ_ ÓÑ¡û["2ùö² Htß6Ï÷–«¯x´¡ÐÑ5Ãðç @¿L;8›@.Êé'£NŒŽ†‘ŸD¤¢ßÊ6‘ÇÔhÞ ¾c£?– 23ârµïE&lÄ'(¼'c84×:h=dÂbߤ–¯òiXí<ö4ø]x7Šði_/ h•Ó{â³ËíöDr»2»ÿm*°sòii¡Š‰ßu¾œ¬´Ðûø(}ÆIzh5ïôÿhõâæã«œ%ˆ 6¦¦…ÂÊ×'mþ!â8Jòó¡BKÙ]âV^ÅRhiéZÙ^¼‹ì Œ‰ymnáª;J(œÛ•E.òÿµB36=~*'°ÂF"õï#3£ñNl½Sá€{è;”×g}o%Ò8ò½³ÑË ‹Aubø~§[ZУ@T`«¨ÚÖØ#Gc…—üâr¹ýôAP+™+Æ qg4™cû&\»QÕx}¸qm×ýU+0z¾y;̦äO5ƒä˜`ŒÁÁxFßóÒ6Ô U —Ý—Øä'_¿Éл·“†Ì¯)'Näap8Ær¢C)la{VTL¢’OAÁè7›G‹£TôO6òÒªª¨ÁÁžïb»óŽû³àKd£LÕÑÕ¥*m§‚ã‡íh´Ç^ßÂTÚ Ê*D`¹úLÄá˜{q`ØÓ*kåÀ‡úèR °ãKù¾)ÒPQ!YZ&F%\ἂ$»í.†÷ €/LʰO`ßûÇS~逬'½ëÃìz–ܾø8 ƒ)Blº¸`Ÿ•ÿ%.y3ŸÿYÛŽü!éñÑÿ@ º?X~“E•¾õ 1‡LÝt `Ö÷ùóE€L&t¬òBßœ”å¤es@lg2 v+µ—¦ŒLX‡ïrt|<28žþá*oüžUÁ * à´´ªt §Ó Ñêï_×ÛŸê q¡Çç±3RV]FÍcOk•–¢+ÜÇ{&L6”Á«f-ã7Š­Óö t>“ìŸßí1hx浯oÝ^OóþË_è8´: ÊÎNÚ"¡  7ÑùÝc%÷gª€%WŠà-==K*»52d®± Öý~—äÆe(Ù#ƒû1ñéM¤wAVMvT÷Ñá<Œˆhá%“  kuuòæãÿ™°yÃ5[›z•Ú!¼“CˆªñXž}=-¹ÒSÖ–Þ7’æ-"ùä÷êÍe…^ÕãÝÎÛ°“x{-Æ p@jpØêóƒËU©C›™áþ]P2[Æ»q¹÷Àn·Ë*•Zÿ‘î×r~43srˆ®Û÷ïL˜˜»q÷¦OŽÄ¤d±ƒôút(((|§w¶™§YÝE@×ÎÕÐâ¸?8ôE$K’±pØ›jš¼:ô…ù¹¾Ò¢¼vÑV½åçgÇl± ~Ȁà0âþr/Èñ¤²B¿ÏÒ)¹¹»B]r1ü‚‚p¼/K0ppDDn¡ vWµ‰4«uÙ?')Ö½ž…Ì`6Õ©]"„ÞÝק߀ˆû–…'1F£L«`³+0·“ǰBÅËÇJLÌÙ´;°²|¥í¡¬„õM³v``õåΖß|¥¹!]XæëÏ›òéôjŸ)žË+Û_HÖæ•~ƒôÞ€lŽà…&sÃËÝXâ* úE×W1XSÞabRÜÞ3ÏŒòžt<=¯>òÎÄ «òÊý©qúµ&?ÖÊæ¼3ù+dF2+k©PÒø)Ð(U!'êÏ_.~y£’5vÍÌàäæº eSsžS‘’~¸9ùH j¤Dÿå9MÇ´0Ðãér¬j禤—Íê7'¨8?Í&ü½Ý1c[Èz<‚s>6Ù˜˜s?f$Þ)—Ò•Ø¢Êâp»ÀdeË>…ö¼E_wÃ%$,ŠÆ·¶÷!`†7 lì’·7m›h©¡±­?\–——ŠU\ÅźC8èD¥šLΗkßImlCÇ ¿¼Ç‘©û' œïåAª9+V¹ž? d©P¾p`®ñ ÷úk&(?Ìç5ž©©$ N½Ö¢Œ@•Š÷„<ˆÿYf¦VQy ç1YªJ‡•Ìjá÷ûw|X„]Në(Ð0ååsЮ®òæsļ«'¶66¿KK‘lm/BÒÜ“’æqhhr~ÌŸ§|P8:u⺽¿'%&†š™™1$(PˆGñÆ/ûçjDyUÑb¡°d2sGƒíÎþ%nÈëVr[ îFäž‚“i”#ù™jÓé÷êµa.è‡+ÃÕJ<Ú^¤s‹'}ÓEƒj ¬3úÔfƒ ga”!mMn l@± .¿S–“ûöí¡u?yÉÈÿ}ýßN:¾±¦:¥\Duuý&LXmùÔ4•ºú…„Ž*¬Öëú³˦9œíNVhËçétÏÊÚJ77z„çjQ{{h[4ú‡é»3ùë %1ÜÝÅÅÅÄ¢ÓÓÅcõŒÌf6:ýEèTt:@îÍU4‰ˆ VW¿&y (V"eÛ0c¶(º!4éŸVåÖý¹úq¤ÁgHƒ¹? Ì™ÍÌÍçåãºK²*å*õ“ò¶ápy¤†´·Ç£ñj¤eQ…ÄhÜÝõ°;Цd¾hÇ'ÀGEG‡žmÞtŒþ´öÅ’a¤¦¦¿áLîôy‡ee‡?§Ã¤€AÙ)š”t3ìÚ»yf}þ²ÌÚa8¥HçÖŠÿpå¡ šVf¸úž<²µø±­µÎ­ª¿_µ¼bÞÛù‚nmã³eH’'#ýT %—L€¼°9Bö‰­ÿc~?œòE}TœÐ­d"ç·G‰¤Úge]\ž/à Õ§ëªã"ÿü‘`çÌðËÛyO(ž‡.ùUÓEŒk 5[Õ8\‚Óüá«^€²žïi¡ôû®¿×Yr ¢¢ ÊbPd_·x?>ƘftmžE§¦z¯¼y8‡8£ÊØ6ûšŽñ¬íåiŽø¡4ÿ±ú‹œ¡ =²/´}oYÛsdEú’Z!+$X´§Åµ …0=˜¼½jà´{zÜN¶„‡ÝmOu`!{4›(õG‘À‡Ï>?±:]£_ù¢]1¯Í1¢¦fú‹×“hråšïäÝ NÎþ+-ï —’ö¬þ ,Ô¼ø ÒßåB æä¼Öh{Æ€AZÊ ½!acã é@4áòò}cËæF%¶0ýËô ˜À¸8ºb¯…$™T!Y FF„Hø°ßM¨ÛzwàOweáSÓ¤“¨PkÊȨâ€^ÑÃu½‘BuÛȓ~geÇõ–MhuÓHÈä Á'sådªBŸ,R<ÈDv– d¢¦»ï‰·-§¼î$2ß2¾Œ–sm¹É< ¯†a§}K)ã_ £T4÷/úJ ot¾k·±8Þ¾¸ëpžÿGVЫ€‹±&G˜TÌ;*9aà·éÕ˜ßÚ¥VÚL{²Á‘X9ÞðÿØ €DC}󆞩{$íûÚ™éóÈwY…­BI,¸·o]oVºoÏr«ÿâ +2RP䔳hØ“ —‘+l®RU£iŸ.bRiºÖóí¾¹BÈhÊí†)+[Ƥ×Íê@9E#Ú»ƒ°vB´ ÝÁØO¦iw¼ÔØkðû1Iû|ò'ƒ¿XK-…ÞYJ@0£~¶8µðOq±ÌñÉk’öbU-Ñè Å\ÿª* Èží¡7¹ü™TŠGG¿ %§0윴âï¹XV¡SÊñßÇ•35¥ñx8bsrvv¿a%_g§õ¯•Þ‹ÉȈ<˜-C@8)_|ý#´™‹ÇJÀ…›ˆcc™“Çm-ë÷Ú Â'ÀôïÞa9q½Š D4Ú6Hª¸“_48<é çúHÚÞ²²¡å’‚çË,ñ[©èÛŸ¾HyëM˜ÍrÉW òÝ®q>éxÍÕfDEyíîžHÇ¥ñ¤y-$RƒÊxz0ˆÛ³ÖañÉ¡¸T⣸åŠdŠÎŠ}˜ÉÆ@}wEXI‰ÎÍM/ Iú0..NG_ÿ `? ‹‘ÄOó9+¸—çX))þá[ÛÃ)··gdÙLnŒddíó BB‰Yj DE¿ŠHðÛØ†„ÜBÁž_„ž^Œzvõô¨äŽºŠ*dˆ¤üÅ^A„DЈ(Üç]}$§íum‚+U£ü]z”³¼šùm Y“ø©‰©) qG„ÐÐ ·;V·ÎÎÎåµµ½ÇËMãW‰†AîîîÔ4ãú:ìܦ^²ä=ó"#‘FRûíp#zLß ö`ÉÈMxeé‰Sј~EOdàîXïìi<Á¢7oßâé™Èñ µçU4™6¥™;4Ò©Â|5õ,NOòvd$EFåVíñ"]Y<‘¡gºH¹íáJM­ªÃ¨Hé,­1ºø…‡N÷5#33"6£¥ IC„¿â4FHîßÑÈîp<Õzkß½ \-+«OtôôIHÙb’)¬¿˜Z€‡çJçö«ˆ°òðhh“¾ÊÌŸC°øýçïÔ@ýG˜×ß§å•©Ç‹Nì fèlS¹>D”—¿ý•b+€óAQ¹Zš,Í=™&VÐÄ$ÃðþWÒÅ´øÆ%8ÕV·¯|||kÅšMX¶;#Àdi犼…†îìëÖÈTÿ›±‰ õÔÔTTZÚ°Ú¿‡bÑìæfRØ·¯ÿí`gW+@1ÔápiXÂ9qñÀ#ˆËhh„€Þ££[ÊÌñÛ‹òçââZÛØ qKHvlþôô4ÿÂìâ•ÜÚ '²kçCÒkyy£Ø‹6‰UDXØßâò¤!°ÙˆòòÜäbßg»ãRMFÑ@æÙöæmé©©©Kö©Y8ìvQdåå‹®.Ñÿ Á¤9˜) ì"IdÐ$5äûíññ1(3“d|jЋިßß¿³/‚ˆW |ð3 Kp^^Þ©½C"ZuÐTØJ§3=9‘ËËKX¨¬œÁ˜˜˜Bw¿ÝƒƒX2áغ‡³Máõ3C##4WW×ÞˆÂКFw(b6Ë%b;âÛJ“†[ÓìÒ£¼Òq­›ùAµÒ!1ˆãÂø¢F£éOËe‘R£é-d{{ À}ú,–lhlŒENLìµ'cÚ3`ЧZùCÿ!±ö&4†0«1ŸÓ!q÷ ŒôÝ»Ò ±ÏÓW\qÛ­PG“A­Òò’ý¥ŸU L⋵Ü3g8 $4¥m?üE9ßèAˆ‰Šú&7 c©«û}csSTBâ= ä=‹§L?~”“‘ù6’Î->5=í_¦^e„øÃŽÊùîœòäkÕ6–S{CÅ›¥înÎ-ÿÑ««+Šl¡pR?”­-A©Tv’«>YYûŠŒÑ|Ùì¿I_ŒE´´VØÎ¦þØ÷æÜÙæÉ_/~E3Á’U0üC·¾…)ty©!âàðŠìÿ>¨Ñv´ÃQBì`"Q(1M¿Âì…LòÃkÐ÷<’i±‚D<èi†ÿ¶‡o9N€èNÿ‡Èå|.pë*!1ÄFädgW}zˆL3’Ɖ@äz±Hâ‡Â“¡}l¿j^wx0PxÜ ¥Ù䀊ȯ§§Kâ†Çáv)º™µ¯WB^ÙÏg¬‘Ì«¼ÀcØæ.GžÙO*¦&ª~Nö1/ ’ @Äa‡Ú +Œb.A矆*Í“êDj)‚÷]Ål!(°šW`[¹;”# =ê,Ü~sUå¾KLQ~~Ü`«uÃÒOžÓÊHl @ ëú¯½/Ù¶™Nå³-Ò?4Vº‚ÊPøùù?`œ??¹òÁ’ÜÝÝuÏÌ(íGvuuñ³»•x¾<³ôªÉsQPPÄ [ˆªk¨A†M)<³ y2]ÖŸxfJÞnI:ºÚÏ•?MÜÚ¨öˆþ^ÍŠ¬¶â TÒ‹BB­ µ¼3×ÕѤB"]¡ÝS__¤v¶ñ¨Ã©|ÝÄ÷³¥ÀjQhhkkK¤q` vŸmöe–<Æ×{yA…ᲈíGêH!öóBñy¸9™Å1“<£¢ù«X•ÔoÞ­ÌNÛáo\·ô©ÌM9òV²"J¢-$Ð¥“­¢GÖ/–VKdÇÚ[šÿ·…ɲëwþãwMûsG—¿¨Rmá¡!êuZ˜ó×䢚£ü&Gc<áN÷Ìö…ª 22 ÕªbÀš¶øN]‘·Œ‰ŠŠ¢>??ÞÙf••1>j*hÇôH*Eø¢éÇWÔ»•VÚàû]«&03Ñ„þNˆ‹CQVVÎÊÎæ¯®©éÕá·˜oBõ·Æl0ˆkç“"–™¨(œ*@YÐN€ÁÈl·‡Hi4Úïîî†~KçqOÆÁÁ‰ &V'/kbh!¢W)’¼yZí͂è(”‰"eƬ¬,>v|¤›-x’?ç¶¿+-fòŽÄÌ*w'óÜ&*6Ålöœ|æéÝûd¼½½­þóÆÝ^åkö‡xÍŸ4ò«Q(ãÚÂF#—ä¶;„èÿ‹êÂßk”Nób{1¬4AHp²²åZ6æ200t÷öüÉË‹­®fЇS ÝúæÄ¹÷ øç¦aÿÀ mßwX‹ CÑ‹óÌÊú÷û ôêA99¢bb¤ëëëÊʉ‡ËMu3gþý·½óôp‹E¯Çù\ yÏügË%ö˜äd±t.g>P üX "°$ûS Õ&ÿº‘ÄÅC¹œN)(,»ªâÅü¢‹Ù®¥Ýé9Jxj°X¬5xy~ú®Û=9[ þ=±£X3|_­i"‰…Ê÷×ç]_ÿî¸'Û.Ï^Ìò„#>¦"[gÖáè4Ë¢‘û?Ÿ€'Á|yGâã)W:bNéNfñå;ƒ-vØè,Y>>“I#jçëCÍGÙX.FÆHv4ˆr0N¬¬ªòMã¬[aby«ú‰ïW¸âÇfåyÃ$L‹ÆªÍnùt ¾ëV"ææÅ§7§§VhøøNròòþû¡³Onšš¾(|–+Í¢ Õ$~QPbŽPÉÈÈ6¶·•Žíkö¬”¯´fÈ)Cÿ4Xôo|•³n2ô´Õ5_eŒ¼nÓ @ŒÕÜÜ,–¡<Íz0éóUÕîÆò5dôÁá’fåîM9'ì4…•ù’†‹Å£Î"A»edÈ«”BBµÜ¢r€”î_C þžYZŒàÙÙ Ðþâý¡Ø'´< Æv{Æ…<ä%_¤d EÕâf¶ø í?(`bÆÛLŽÐR Þ³VS¬_-{QPPð;éê Ç öñy-*-ÍxÓ¸`W_äÂhÆ+8±Pkp…_P¿\ÉËëùœ:”Æ™Z4“~oT_$‘ò}óÀTÝ‘˜m¥x®ßåþýé<ó »~Ë=Žˆä‘®¶Ä§†ÜÉ‹©.rËÙè/Æ„QRiJÁæ®1É/–²CE ª—æ?$“©Þ@Õ/Å„ ËbÊ¢‰©%"ÇOÊ,V›ø¿Îêãëk}ºÖ¡Ö×e¤Ü¨b’SAIN{“––žŸOU®B×ì|íz}Ø„JV®×¢fQF'ª~_ßú§Æ¢ÿ«\€o|v+¨Ÿ«­=ÿúc×wwUŽ.hcjjÕÕé° g¾ü¢©èâ†NÎ&<¶Î¸ŠÍ=Aõ‘™ìèÆRPÑýóF鴣 `i½c-ä×NŠü?{JW0 ¢båçÖ:D ž+[Ý9…DGEÉ”¹íGýyŠÎ%÷e_xga6û¿dÀÀÀÐi5ãP j¼»8Û›ÌSë“O«¬à`g×™.T„×Ye< |¢o§#dév{(I¥újsK *>þ{^Þ6š:ÛÛÓuµ#õdQ³Å˜iÛ?“¹’]ú}Qéé——vq®+ –š=â‚‚9§7‘ºqb¢fñ}åY…¥l^v© ð¾(>Y¤„“™2h¹ O8  øfä(°A­Ï4Gîm+üɆɑEEf%é³Y‚1¿~Ýj>P=ÈN9xâââÖ¬ä2ÇT›ðTòáñ-,.ÜDU_S— ìÎJß ?†Õæó1C)l‘ØØ³4éûÙzÅïîM䨫§ä  Ǥ¤ˆ;œ¬H†…‡ƒàÀdÃj±{`¡°$eÿP|x“,²ÁÌlb¡^é¡°ä9ŸQ¦Ù$ôþý{ ƒ**˜ÜjO™¬ë4U0¹Öbøb¤ì{ €WB}Ô¶Š³)ɵ²ó'5$û[\Ë Ý#ª¤¤5,ð¹òÔ1TÔp1¯ø¦ŒV>/YÐEÈyó»†΄º'wÜÑ›æÚÜYWýóüî'‡<0-xà뿜¢Xýb‹1ñ›Q •c{ðpÁتOãÉcMmQ3›QY­\.q| _i¾#¯´ƒW½mêùSˆö‡…[YiªÀ çÇúÖ r<7y"*,ì7à£Æ iœ_Aäú¦®®ÎŽXR^ŽÂP[Ë `Ø—B<áw~~¾Ôä}¡.7Çá §³v¨w¹¢ú`}Û¿ÿhêì7ºáv÷÷³‹”Ømþ‰D¦ÆØ+ÖÈFÆÓ*ó‰‹#h6Úul &šá;ˆ.âVuvv®†þš «´´´¼ªJŸ£˜#6~ó7ydq5=@S1·¤#Ÿ–õ£'`›ZIh”•"øÓ­z  §…Þ óM¿ íéNaË,* -/ÿtêıÎÿÓWÛ#i¡Œ[¶…ûlžËR=GJ³«…̪zY¡ÈòÄ(c¯uâÀƒ’‘U˜LRꎕ ò¸ÝB½yóÊ«©‰p“ÏØ˜ÌRƒ- Ó\¥¡xÚõÖînPƒíéׯÀ¸ÿóK\ˆ©©Eëy¹¹[h´‰pqCnoóÝ4Á§ÊU–²6Z,²r¹Ý¢dffB~Îõñ²úfíuý™û«ƒÌÒR$¤@_÷ûoòòè³eØ<<ŽÇÐÙEÜœÿýOÖwöèu¬¬`ìŒp X[SO®Ç‘ý/ÿ¶=tË ;­È4"ª×Y –iµœÞ¬znÞ]ìÔ;žòñóŸíŽ“Õ××Cå7®j¨W{jr{<ª‘w)&#Ó¼——”¤ðC‘ŽÊYÜÝÝÏÿõ£¯Ÿ€§þc»3R³Ð§|´PC°¢d`ß¾ŽILTÞ»(\ØNaû ìÕé[ëG“I7ÁyE¼-+öÕGOû#aHïþ>ŠÍ*¤ ž£*d50äè DþúÇýa«{–M¬ø!:XC.PÂN®«Ó8JЀD ¦Ë„¸‚¢óËó‹-ÛÏràQäê\ÐU¾;ª#ñ„ª­­mÎ丅·7‚L¡¤geÅxK±¹…+¯²í ”l35³»z%þÒ¥K_±éñ$]ز/ÅÒm³g¬YÖýTöè [Ô==9Oá½jý7™c¯¼+ôn·˜ösu•Q#ž½¤x5æì€ŠÔ#_êÒŽf©_Ô¹|¹æÀŋŒ+Îáü•ŸVÃ1 Ã÷÷ÌÏÍ$«d¬ÕÐÑÉÚ)j¨«•`©¨­½Š]€UèÕMóáíïmîž*û‰©ŒÇÙÙ9 :n»Y|ݰaƒÛËn\Ðj=Q@puïH§•®Q=Uëy§ƒƒð)l†Y㋹”›+0 †;rä<Ü!0øå]ržë{ü‰”ˆÔ”Ó€åçú³ÌhÍÚ‹W ©hkk;hT‰šE|îßýe!àY÷¯ZåÞµ@hráÿIvP×™žxõ Fk=~ë¶+®f— öܺ…^¿~ý‘ãÇ™¬¬Z|s3–Œz::ZØß¿iëÍF¬6¿%wÛ…Ý3)1j/ŽíÛ·Â2Ç6:3s‹RØ$‡k-òz7Sçêê †ùÃÄÄxõæHó’uíó‘bqÚ ï,,¸§§51T% ¸+¨øÄkkkwÑé«(Ê5‡²b£ŽÖB¯Í/;;Óss× (LŸ,+Sn/ð¾Ö<òúõ–gÓ’mVüZçTv#œáÐÎè€Âï¹råÊX@~Ä$ŽSÍvìzÒ©A;ªº-È®…”B"WœU¸MW`»’f™ë°ÖÞÞžMHiÓ¾UkÕAe•·{&öbêt¡GÇèÏ”…~Ú{ûv@rGÖÜЮ«¡çMDµó·l„î»ÇÈZÄçiaÒÏ=@°œ²î«ŠÏ ›ò|ßU6S2…tm’x¥ïÆ}V9¬à±GÓ› }•dÕ·Ÿ>9!Oiqzf´‚&ïPª:Ôœ#Ý©í‘,-qå‘ÀVyÝþt;ÄàSmƒ “Ãzµûî;ÿî2ùœº–ÖJÅÀ÷wËC<æèââY¾Ï]ùÒÃ!ù‘ zø^Iy´gñ‚KQq–)×V Ë_½bæø{§¸ø~}}ÂÛ¯¡¿FäëëûZÁÄ‘_&Eä–?vv6†ƒùÐIö) ðºÖaen^ ü¤?"–°UèСZ)| ïøž¦lï¼-qÀŸ`áo3Ik=LÙaÙÌpÂî«m®{‹¹yqÔ“xN5ê3có–¤ÚZ¥×oxž%iqYè¼pX³vmÇ]è~ã˜çTN­GIŸ†Z -±{¼ ;LLöÄǯmÎulð·ö¥Ý߿ƹ«”ÈÄÈð<]÷ÚÞ½¦ÁÁJ›v^sܶBPáró¬È•{ù^Ý×:ºï]2>'×¼{LjBhİÓØ’|¼7Eù% Ë£Ûo» ?ó¸zåJ/HÓÓ㺅Ҳ7om¿A©Þàì|ùn[ˆ`ëû/=!óJü«Ù+)ã½EäS.“ã϶ƒTV²ÁT³Œr4o*:ºÛ…ƒ$CçúªÃå{¹¶®3·°ðIöÒƒ#nÀ¡ÍûŸ“t¯?.CPb<—»?**h$+l¹²‡wÓ¦»wïF½EHè÷ÚØMi^µ¬ƒ®Œ\Û)ù…S•‡‡G¤ûfz¶X’~ñÅúòò¸ó—š5·tÈJGAOw¶…¬o/àöð5vxXYªö$Å0='§ â©®;WtÕ×3]¹"56v§“c|óÛ"¢ÇHn3ëš^œ¾ÛàµÆ „ˆ…†IRüxŸ!t_b¸Š`Ž töÜÈÁÙYò¬õ ̺"‚­½À"æÖ„Þ—ƒºššë¿|zže6#y%ÁÕ€ëyM<+}싆§'(ñ5¡ÀKþ0WµÍ ôˆ`x8Ïy‹«tƒðÍÖqöļ,åmð—0MlظëÞÞ ºµwÛnM¤gdÈ=Æ»fÆFÎû¨š7¹ (oÏìHÑÙÏ¡~’ÍÌLyᢑå&3Œ^‹Xqº®*I4½7!Â(©€é1ÁÚÓA û¼ý1ž×jýu.¦jVV+ö­ ¸Ÿm6•Ê®u…Sý†o¿ÍËò9FÄzõú^É“/3tì ÇbÎE:hùû_±ž–?zìÖ‘ääĈ¹PÉ4Ê9ªUw*{W:8ø¥ššZÞ Ô«„°PbâÖíF”¶{mŽ1<]Õ\+ §Z]??Gà’F’íÈÈüôT·ÎØØÉ„òÝMi]¥¯ d¶§œÑ6á4¾6s”ÆÉ©íé’d¢¸8Ρµ³gÜ}Ї3:Ã\]òÀµl…Ü Ö°°™Ñƒ†#ýý’ùÇãyd_ûþæî+0¦sñH÷¡¨<'5m×È7f©yôŠ<é.¯©S±çD‹ ´wÅÛ#@íÌg‰Ûø(ÅqГ…ÛS¬‘‚ MãXÎÏ ·æõm´¶Þthw¤;޵$x÷>Yçña_ÉL¹;K†eíîƒ*»ýÓ33ïúKFFØ `ÊdK´ @ÙÞ«««ËÁñ»¼´æmk[IA ˜e±_±¦%So•Jâ0ÚEÓ‹(G¥)=݉.ÌÅõn^hË–ü»3S†éf°kÕ͠ʘ{°ŽlGÓèê7;tˆ‹ƒûâJuëV'º’õzžãšÏ-S\wåËWØ|‰ƒAËœ™i­ÖÊç¾Ož5];¾SkÃÎg/ÕjËSš[dž¼ ÚŠah1‰ Ê˯]™Ï¡VÉ &G£×®óel#PD—:6ôM ^*N•Êw¥†  ÒöÙí鿽~|<ðI€[DDöÑÈ":d²”º†š‹éë%%×w4Ü»lrébŠÇ¢V³ï¬Šåòî«ZwÙôbåÙ;°×¥EEwÂd'ŸÄ7°ª¨x½“Øjò°£ø“À%£Î½žnU¹lûÂün¦“ÜÎ;I"öÆ0­Œoú» ©™lb` ¢p*.ž_'ÃLÜ*»oÓþçY¹÷ªÖjÇ¿;Ì‹Õ?Jšæ8£­“hÔWÉ~‘ƒ'píŠU×*SÑŽwe4ùIJêg?N\çÁŸQrÿã>]]ÝI'O²¸¹Å™n<ëÉ­èû˜½•Ê&m)à4º%åàà1þD¾|znjÓÇÑ u›/é üX³gʼn§_Y0nobÇe¸89]ô2´åÓ Oa^C àÚçýö™,?O,ô5'ÂtS(õÆ'O[Ý«‹+'wU'L˜ê$½|Y4“0tÎ:Œå<àÌz›=¢—Í]Ã?÷eg &ÏL™y÷VZ|í¶„l–ûRc¦%×kÀ@ÒÛg¢ÓÃ…›<¨(^^cØ›7ù¹F?¾9‘u‰Nj¹G«×¢J8„\dŸ™ã²¸zªwß:žž—Eü¦:|׫ÝwçÁ/f¼™u#ûþììƒMy`V·nߎþøö9ŸšZÅvA-Ó¡–¯hOÈ]JòwJ*Ä€ŠW-ž¬ã ¡ÌLN0¯-ƒ”+»XÛÙmjúº5©üÙc¥#›#_ ‘W·æm뛟ãòpÖC£ÓWHì˜íöШ¡È½³ÞA-yïÙ³ÜïÇö¶Û’³+½)Jy÷•ÊÖ<5ëâ)²ü•¼ ±±£5uÄ`K lD•ÚWntt¯>Ì«<þTç~“o–Ñõéé¾Éé÷·½§FD³ûtGÚÐ[qžJq‰ÛF`ht4”Ò,i©YÕœÂÊ"A‰‘àÈíã…-®Û β9—ÖäºçäIMvgäÑZÜL«Øc §NoÂËÅ¢/òž¯¬Ÿ{p‘ Å<ü^Ìæ0Íœœ Îmh¥_®ˆª«×ë ^¼VE0~Íy°qrþz\“Ïc÷7µ*ÞþùÎ9"Ì¥n7ùlùôD>R‹eÙwk—HÆùÛ䤋y-s…ÕÔ‡²¸\€s»BûÒzóæÒÖˆú²°Ä¤#GXŠv¦x¥ª ë䨦xh•Ö_¶½ýºc+Ê_LÌ·6õùFÇÈá=Ѭ‘KÚ7·aÑàäØ\*{¿¯š·õ–ã2sxLë¹Øz{ˆ|ñÔ¥YÜu_×(‡bªß·í¾˜`&G§³È8¼ßǺѓüéÝÓê¤&ãmÑ÷dp;„fÜÀÆia;|°(A›Þ}&Í&'î­í/KÕBºn]Ʀ·µ[VŸ!¦Ý¸qy¯ím“«)[ <c¶}=ü0ò<€;¹fàœCÍûs½#]»÷cÝT´?½°q<«²{­¨öµ˜¸8åæþ„öÛWbÇÆ:ô¼m[Õ~kµbÃÝÆôá‹ ~‘ÔÛ|÷·ûµâJYg67BSqÉx4a´¢;±°ËuЬcŠ‚i4+kÉšš0ë|çó¦håQn) ó38Ý,ˆv:Ð;öªâvYȾñR'O 4{ïI±ëîPð×9º·ßÕ¯£1Ò¶ät‰+™qk-ïܘ”4Õó*oÿÔàP6H"ûøüß½>äÑQ•·CS33ëÚµ+¬ryZoÜ›^]l¤«ûPgsÎÞ Šá5;üËËb6›ÐoKÇ Å Zc¯]sÏî3¿ó0n]†Æê¥“¶öÙ¼ks6ÆÁîvU-¾×‚gæä, xº¿Kz{Ã…½5ý¾É+I‚ÑUÝÛwLøÄ“§·È;ËÃuÞé~Ì@§ž¹³Fã@~õãd BÍΤ´‰ñ @g!ÏÒ–aã4*i¬{ä ­õi‹Œl]fB¦…oÛö”i@ÅO*‡%6ùH59FvÞ­¨ÞÕ[yÝTG%¥ ÉÃp·4dÅØ—¡ú±I‡x,ö،›7o’\]Mß×ÒšH¼Þ‘M˜à}÷~Øm×@ý¸ss-ÃMʼŸþpxóæ½`¤}3£3”É÷ëâ/„mãLÊsë(`Øi?̹ÞWû„BÒÙœû€RŽõ¨ñ¸ó²òó÷½võr\1ñ&„4÷å9Á÷õf`°“оÌ8¾ž:¯çδŢA±Î˜–æ¹IE‰c¨9ZO0ûYè,aÅæÝù,:‰Úäç—ò6)D'qpòݳ¢ƒ4PϪ»=L*€+Ç4»iìÓZõàiÙýû«—…Þf3SÍWí.÷<‰qÙ ¤, p¶Äû•˜ÑÙC÷›²G ³)(Hó0 wå8~]Ü‚|7*961òÚ“7í”ÛÇÑ?ÊI%‹ \3ÖÔÚ!ñú¤bá6zÝ»}ò/‚knŸ*—2ÝùRãã»Û›¦F”«F:ç»Ë“š’bc/ÿ2åµâ¢i´r˜œ¾ ÖUzËÃ$ѯ=çt.¸˜­6Š%ú)‘<Vn÷|öx€swÁ®{ÂwŠˆ¯† í!jàïo+Ãsscuïxà ýaÈ··˜@Htf:y”o%cšm-#"UË)˜çúbÇþýgîÕ$ aöÕó<»msŒCσÇW¤&ß§FUÅg&hjjÒvܺ´Ueú“5ŸÞ·1vÄ?8Ù¥ZñDZkÊMr¸ÍoÍÜLîÝ¡\ü]ùŠéûÍÅ v戴fÅOu]L0õäÇÍ&hű÷Ålþ’6õÆ´:ÛÛ£•ëµ€¯ÄuG|ù8%šcz²£ ¢‚ŠÅú‚15ºyÌ0צwßÔQvd­ –yøâê8÷‹ü-T”wœ¤—ä¢ÕiÊŽœ: Ô×~{ÆT¥ÏÀ…|¿jzºôàm·˜ä°7:""G»ì¼°šûV´Þ_—qüIº†‚R>iÄ&ÐjôŽp4pMŒ‹éêòò{€í^oKžz¿¦úa~üó€òE0ùR׬™`––oZKCdvî|ŠDFäR7?³| _uþC×!±ý«‹]1x×Rx¨Õ3蟦¼ñÕôøU ŸþE¾çY^ZGïè'öñr&q&=¢ŽMF¬è(<‡ní(Šüª¼ŠR5{øÞ¾îJ@TõuLY¢ ùü4tÐúFÏ‘&Ÿ|1@‘ ¸]·Íÿ[î‹dö¤§WÁ×Ûw¬5É9•Ú”ôÑëü~à‚Õ×í7F"fuýåêx§ñþe&e¡Ù}¼ÊzqZ !a…Þcë|ª·]‰^»@jKvS¸«¦àï}ïºý¼®V®C\¼¯” 3!:I´%ÝËÏ´2¾7š—Ód+HžcOu¼v=Iñ ž4 8£NsºŠ ±²z›6 î­í–'Ž: BAeþŽò%ãî%A›õ³Ì÷sLx"èÜvSá™ æ’ƒZ#º":V†M;(€ÉØ/m5¢/˜½óŠUÃgK þ‡"]´3•¯_Ÿ$xïZïîq5Ã*÷!!¬™°*¬I,Y?ž¸«ùÚƒ3­ÜÀæjé§Ÿ¯ää´ˆÚ³¢[ÕÕUŒ]¨T&à8cö FPÆôÝ>ÝzLJs#Yá(L¿vù^5ës^ ldKÖ—¤½£`XþŒbЊîð¾G©JÅ:ØÏá=Ýcʶ=¸:°ÐØDCH†µ×®Õ2ÜpâLR¹ˆ¾]a‚FuÂõéÁ ‹Ö¼¾R0=ÚKµs<îþÇ÷N*¥¢ã98-´''±ŸH3³«H w$e¸s8*ŠüÉB'»o½’G~òâ¼ÐOk²ûŽ×dè¼\€}8ŠGöž`ÌågWÉœcÝ1w$Í^Ž?ܨ8öH|®aÝqËl—)&ÁF3ÓÐÓk;‰›úª+âÆû4‘ójÙ¢zrÂÂ+ÑÐÉùýK¢PYXáQˆžëÕTg FÌÈò¼v1á(´àróÓEÆQe“WÅ0ÈÖû&Þ]M8©R¦Xþ5b›œ}ñÖ€3äÝsŸä@ œ›ßÈ¢w”ÀW8Î|)«;]Ý ¬{ø°@ŽñÙëÃ&Ã-°RH½÷A§/åkÍ׋\UÌή²КØÜŠIÕ†4ÙÌʪÃ!«½J_5Å»OLNõ;« <"_ux͸Œ¼„_8”~âá…öB¯ýb².œh,E119ª`zðem{J{;üá…Õëží¢˜nÏŽ½ ïêæà°ÌLéÜ­vŠW›¤Ë$Ïl–i-_+yÊ3„çö\[ 6ö!Tð4þkúFÇK³_†¸Ãç?ËŸD=|S! ¬'vâÉà<<`>{ÛnMé f©ÚØ´DÑX‹=¬S 6|GÐLNp€¸lÕ%¾½ûtH³ÓAã/¬ÒùjÜEß~Õ¡L*MéÑ^ý‹Uû¿ðMެ±•Õ/õöݪhEŽ·¶ ¾c^ûIÇÝ]äËG›½ŠAln)Gn¶ß—9Àf7ÒyZt •«â¶¨È¥ððva"QP'avÜiÕÍÎyòXÏm€­,O|&ßšC—–užezr7_G^5«æ[¢•§¾:JnÏU™÷)ïŽü:±e«ò½ÂîPý#‡b©ê±G­ä¶LÎŒ"ÏC?{vsl¸0-›v€ƒ賓¹sg}?^ˆ<3YS5C„Ê)ÍFn=ÕŽ‰ñ˧,ø®MWßjro.ªq€ ~ µ$"Ú;òös€ÊÁ#3Í}L, _µYSÓ\ÂkôEM½eßí.ÏÏßßo°*|>Äø0‹–ÛðÎÒ`ÖµüåLÒW¯„DD~rUR™õæm¿í§­zqòäàÜTç*Ú÷¥ÑçáÚ!%Ÿ_òØo>uÖ3{.ü&»¸‘fïÌhYc®#?ìîç Ÿ±1ëC›#¢V8´¸ÌhšŸçÚšµ{(G›ηŠÝ=Ƨo/"ôcƒ®¾þ1Ø®Ñ.oÿÁ1ÙUkm÷åVtEŸ?ß=6í³Jh[}™ÄÍ›Wl/¨s”§™Ô™[Û?à0‘¬V(N§kų=/lêbøÐesWƒÓÜÀuÜ >{~®·zó:å9—ršñ9)¤çNÄ]ܾÛZBDä£rØ¥Ê4åGŽ=Ø™¨­ªº dRøþ(uÒÞZƒáø€‰1äBÊ<¯ßÒ|G»(l|ù«êNw½¸’.Ãõö.¨GøÜ½7àÕ˜÷oÌë›j­ØÆhWøn’§”aŠ“ë@1ój´‚s~^X×Ȩ:Sïôx³]|Oÿ K' &OÙF:›_–²ÐkÆóë@øxY”Z› <޾Xwê6ë½{Nˆ€w)¾ Á—¥ãx«FôS¬´rèõkÿàœ»Ž™‚Çöe2àb+'çÛŒééêéÞ8ÁàO/ä‘€Vjj¾ލOëꨭu²uC¦ƒ`Œx/±WûÖñˆ((0<ûâj %%Sd¨ ‰:úñ¢iü‹«ÆpÜäž|aG„›¥DZ$g–ivéïìhdÉø½Õ¬$7;Á™É݇¬u<ŠÛÜ$'ITñUN!ŸZ:BÒ_ð¶­ó0.Åj‘#Ç?vŸ(—JfH}ǧO8|w÷ÃíòãqföœêpÂ4[qÀéDÅ £éæoæ’+§kœxV`+ë=¶K³¼ã%°ø¿ü‹—F̪à1góA銎0ZÞÁ•e4·Y;áý~€ kƒ¦V"ç/Ñ?/ägѪ¿È¥ûË`Kq"(„ï·nO/‹Û³Í¿l¬<¶¿ìPìGÕD!Ù±¹©9ŸÏK§WžØ)7S•¹Ùè\BÕ«‘EcëÕw}z×<Õiu#`Ⱥ隋$I]DäYÐ¥KbÖ…#0Î;ø/]Z¹ñp“ëíæPžû0ß®!§dýµ·mw}ù˜R-¾e$ÙИ£Œçv¬mH“œà>”V1Ç0Òùd›Mˆ}±?k¢«xgÁ§WªØÿó½]ôb(1mƨ+†È›Š ›Ï­â?í:؆œÓðlìff-¹ô¹gËþ»ù.vyA¹žUD>@ð¯XáWù:ß·­ä;à`aÀ×)‡Ðƒ}ÜœzÃós\µie«abêë-_Õ$EB+¾’úÓM³‘”ªIFÖfõšA^9Çri5”ˆ ó⪕–÷˜³ùUºeMÈJ]cùÈ< ©w*õç¥?Zâ…™.´òšU•ªÈÏ—ÑÔêŒ1°ü¨£¾a1asË|Žs »=àþÑS+`Éúç=;OAㆆ¼¾dýqçBEêƒJŸl3““J!—¬žú©3,aÈ2Òr)ÛÍ'µiÛüî“'_Ëò<¢ª^µ¼xz¯¢Üû–Üœº`Ms}h}énT²®Þ#‰1uØk_"½¶5ýy›º¾ˆÄ ÛuGc™-YQú[{únA¼LZ‰Ÿ““7-ô“+ Ô;$^¯dÇœI±œ×bd4ê/±l0Œ=ã6õybÝ«†m”'¹ê¯¯2J›e-}þº»£…•ßÀ¶gÐdxcàòÞ¦px–êÅ5P‘ÌÁ÷.ñÝ‹«®e»E¤N=压:cS­¤ÜÑóu>W\HùqMËEÓØ3žñ „ìýЯhë9=Vhrë’VÚ±+ÙÙkloûJ½ô|ûå“G¾`b¬>´‡D®ÑâÙÛäŠíí!L¬{"½uë ¿‘'A§wzºÞæãå5~Õwk/oûé{bc[M¼ùt#pÁ…‘´iØ*)É;ÝÂO+bh`°‹FKð*ËŠ/üÒïšøZ[çǾ{A« FKŽh$ë÷4eKäDHòlœâÀ{r)½É8xP ¾Õ ve}…Ež fìî—Lv•±ýè–þ\–Eº®éà í3zÁ²‡6ƒÖðBŒ®÷Ù/hJ˜{mm–WÛb/ûÛî½H³¨é¿ÆÆcÏyR1h³Ð6¹Ù®0{Û=VTª’´o3Gô}&}Zý{¬¤ä³×[DDLt…"ýè›K['¶ˆö¹”ÂpŒâêºWÊ‚kúz~ÖOìÀºÈÓZ+ßuWȲoNƒàIêF–•vzö“Õ™ævEÿAýò@.¢Z ¢Ö‚¤íš£,"¥œ±»zí"tý;Ýrãü=½‹¦¢Ês’¥¥–"ÂÂW‡×ñ}äyÿÞÕùÅEÁ—_ÞÔÅæ”®¶Tï™ßfÙûô?v•À"TjéÝ6Ò~Èïã}‰1RJ$ΛóÌÆŸSŽÙ)÷€ß s÷Ý ±sèíØ>NΧ—MÎ"Ü­W×ôå>üÍŠƒq¨9Úå’s¤Q:b˜Æh—ìxõfGrÕá´7{eu¹ÓM2N NÏT¬N5Hqjô13Û  x©Ìîéähb”þ§î Dhut&p[íɧ·÷¼8x¹w-oð­ÙÖˆÙqË(ÃØæ‹¦Ñ€ÿžüÊ `“í* ÅàÔGÇQ77ÖÖŽ‰ñ‰ÜE¬Ñêì7†åÐD.ÜÌ6ÕÚãPfKž t<£2¹I¹x¢¢ð”HCá™¶6©ÙY¿M×âsÃ#ŠD»‡XmÙÙ›O"^ížý<`àÞñ&´å!â˜89MHô†yŽÑò™CoÌÒÈO¡ÅÉaSYç§>Wñ×|©R)r‚LŠŠFMŸ"hW·Þ¤±¹¾¸ÙÈåqó–!xìe{ð,aÅF¹J5f†¢«R $ª„®7 ?ÐâԬϯi¡ýù ZŽeFÀЗ·n5|Ÿô„vÙTˤÇÃEÿ" À(†llhÛÞ–Õ< ¨+œ’µK)µâ„ÍÎMÙc<ÝW£ÑÑÍ8L>cwÅñ¢C{Ÿ]üJª;•øð°*qT^Õh]F*ZCZ¦dphqäT*›˜˜ïÉSŸ–…ùAãö “?Pƒ„✜œÉ‰À 'k|C™Y^zs.Bae‘À×Ió£é!'ò ·xðÇX9dgÜ®5Ç *Üé©<ØÐXä·¡n «µU³²z›ÜTA¢ÐÜj) £ôÁ‹'®E¨==];îïÂqº$païjIjêèô=»¸½½õ¸¥d2#´GAmåÜLª®nfxø*!•Úý¦©·†ÄÄPuç[ O7W^61dºœ_6,ª§ÇùNI˃՛—îÊw}±íF>æaϽøÛGœr×§pn>w¨±ÑÛ½#AOï-,Šö¤tl²#>Ÿ3opŽààkUg‰=Œn#vEñ‡N†sc]Ožpë°´´ ô\Û@Däh®Þ+:d ¾vÅêU"D"˜ÙpËwÝÅɇ»Ê¬Ô˜Ï;”:‰êWöÙ9鿀F£­m,FtËxôè‘BÛdÇÆ±ëtÆÞ§®¿EÐé.—}r»,Û,¨·ÅQôiI¨µU®X<ïútDÕpûíÛ“6 —×oj›wY'Q¨µ"²‡³P£"ÙìÑš+¾ºª§_^[T*%¤ò’Qø1~—ãH൜Τ´¡¶¶­›uíÄ®2•²˜_ÁÈö#ät–K°¡¼F$ɶ#ÍVÚV☸ Hã_†Øm;ÕÖo@=Ü(þê =QÎþLãÙèn3ÈÉÉÙvqrZxœëfñ¨ß°?º³êîÃís/'F)s_¼?w0 *–_+Z™s ÅÓòÝ3¾;+"7[å:¼h›íÜþàCÿè* 1Ëøóõuó_¤…X¢díÚ]$ídmóUëNanz\Ð× {xÁ³³øUÿ ǪöÛn·óˆ/ffÞmoç[½NH³ÐZmZe”mÞûñísè~D×ÏÒ6jijÞ­­e»~º^#ruÙ` pz:xgE„  ‚ÿ…C™ÓA—wV+›¬ÔE>FÆÅ.½.»[ˈ,¿Öò|;®»ïá·ÃÏ5ä$ƒèà¡fY6~ܵ1sGÔi^"ªSÕÛ553×rû¨¼">¹¡üõë󿝢‰«EæÈG^¸y3/Or¼ØøœJtn®66Ö¨UKvñÛæŸŽù{xMânÀrÌåÓ@7Pš¬¶úbÑ%É·y÷‡¶ˆ<0Í>¤¥§§·Õ!èY¦!b–ݪ>Õùàþ}Æ Äf™¯ŸZŸÞv³²¯”IÁMilÔ?–Xsr¬U\DDãS/Ñ}äeÑú­Â»wœr;uTHºÔH%s”;îæ­[HÚc®Ö¶¶{/^p—Ö?ÿ´Cìi´«Ì¹=_ÒÝÃãÕÐPܵk2uΟ‡ˆÄ{ÍÍ<{öì9ÕíD§ßïîÞ<99yÙ,‹]Ìàd8‹ ¨¸ö~xا¯*^¤eeÔ¾ÕëÈïš²½ýüöedˆ¾i8—ØW¸&¤μ}ûö“§OóŒ(½|ùšÖmác¼ß·"A.“ÊAå{¹ º5¿ŒTÜàüâ wm]Ý«wïÍÍL­P-o¹d›Su ëÖxÍmmk =FÑ †6œïÙÉ÷æÍïÀÀªK†§1O|+.%lÞæð:Ì@mú ¨¤ŸI ~ùðp¨Í££¤+mHíæ»˜ÍÓ —íKp–¹96xEE~ÇðñèKV3ƒO3’RSmœ;”œôtìZ0òBÒÀ÷_½* “<•±Ðf“Ð:ÍPMg½–ëöc9EõKçÏý4«µÌÍÇ&$ðØ—rõÁ8µæLJJQRÚ™ïÑaY{ »ý–ûëš$ee{÷¶›ZÖvvnixJÛÓl3qŸáv,ôzô{cP7á+íÚ9Ô’wø0[]1pžûöÌ•ÅCš;v¹7Zwè±íN¡   ¼ úøëGÇÂ?³¸fݘ“«6_ ƒÞZ¿-æ2¢­­­wz¼ODR2»²ÁÇߟKÚê:×øøxoÖ¹ˆõÀ§hE‰sÜÒ–ÌNNNy‘_#87o–g߬"³ÓÞ;Ô”m¦Ã¶YeçË"?¦Õ«ãÀ<¼i«Ÿhiú:×ý•û³ÐÄ…¥åi¬ëÖmÁ/ûiÓ¶ãý³“½EýÀòމÇåçcò\_H1¨†y›%"+kxÍ:O¤¡ˆüóþóçf/‹¶kjj2ãñxàyvΧû•:K‚Œ÷GG' ©º$¹ÚÃþyiðµÃ`j3/]:”,mõ¦¤\R?$1æ¦À”¦ùåjàÖ;wîBö¿ñ .ÇŸÚ~BÎEèœbƵI÷ÖûÉáufas)‹´¢¢â@‡çÈ@¿eSqƒrؤŒÍMÍ;wîÄŽy ïçHKK ßÖ3Õ§¥E“•3¡m%r×|HÊ‹ÍÏ–ÙÈ0ÔÌý$Ev//¯zŽeœ¸qšsJ¿JÊiŒ‹ˆQšRê@Q–ÑÙg×À×’Ïž=Ûo›ÃSñu>¬|*~ 7»·‹â`žÖb5‚ƒPµ³X‚`³°ïuIÖÐÙ3qqq±‰‰-J*ïOzûøHæ×}H»e-óØ$¥b_Áu%Kà[÷×Dº~@ïåááti£<òÔ€>âúf†¼Enø‹s„'e`ߌ÷ƒƒÌ°#O&Fî›Nxà§&ôoAû6^Ðb=£ÄôלxS—”––Òi:½îÔª²Í GQÁÿÎÀÇólâÜ2ôމ­¤Kf 3Gˆ{ŸœÏPÛ·j¤:Î ÌzBñ^]šCÍ9³×Atž:÷üÙ³Æ\Çmù^ÝB@Øç´¯³X‹£S'7ŽÈÝN§ÑVÂX¬ìظ€xõ³ ˜–Tè!¨»Bø~ ï’åð üÒ›g²^I(öc 5÷>pþ7!Ås¡å×íAú ¬··w£’œ{-ûêÕ1Jñ õ¥G¯óóñÖ8Jè­7H+F1¼>ÌðzdÄslI®d†.¹ÛvË)®ÎvgÚ³46VŒ÷Je¥æ5ÛÛ,A£]Ñ……øUkùÌ{B×òaî>ŒÛ81+'"¢>q ß½{¼Ã«‚ôùCÿŸ†fêãí­êïŸÿFab¼¯úŽ÷+õô±´[™9n§6&g5>èÛ£©k)猘åŒommeÌÚùqbBÃÜœëú΢½JïUWgµ³ 8@$ë°‘ÉäžÑÑs!’’’¯Kï¿›©w Xggg·³,Ôb LÔàó¬Ä{£:$–'`@ûë­vä®ÑÀúî˜hÐÕÕUUWg|öüù„LdÄû™ÏŸ_õ%n«º·ouÒ‘#Q ÊûÖ¼SŸŽ=z~‡Ä‘ÔÔƒ6·è °4¥£¹eÀq!<ñx´{ÎÒREEå$΃L¡Œ7lûz¸ ô”$,íÖÇxà¦úûÎqƲÅx:KŸÔ²±±!÷V¼_U¥}§¸p³&9¶Ø:_Øö|jÙˆÃáî74Sét×”þ”mícïCÀÏ̸¥ ô÷o•‘•ÕrwwOꪈt„IŒ9¿9LÞÆbjÞ èNÙÆ îÛçV*˱TˈxH=)^Í.ÀÏç¡Óé´âxBF^5ì~Õ\*Ïÿ­éÓL½ € CO#SÉ!vµä؉»¶\—Þ$r‚¬’’’fIàð~ŽÇ [Cå(åæ蜜I$é'Ÿs.>;ã†B£‚aH×ÒŠçÃVžWÛ§éêêš]hf*pKBÇfž½½Êæž40«{׊ˆÈ†Él¸p„?v{¶]¡gðçþyÃíës*¦<óŸ2Á¢._–ðí²÷‹‹6“þØEßM–™aؤÝ|ü8È}=÷ö 6çœnò©¹+™¬Fe7_Ýi¼NŽíí̳ó`žü…EDÁ˜½^Øðª¢xÀ;âyÊßp£¤÷¸üçYÆÖŠr'lJðöuëÖe÷OÍ{¿šó­xy5(8M´Ž]³Æ€¼”xððáJOOÏyy÷jSÑØ'€·ÊZä›"Sæ`lÒÒ&4“—alPΤÉL×;¶·]™YX¤ü?_±¸*…0lã};œ|ù¦ÄˆòEúÕ±eÈFsùõ%æ2¶+o™£Åbþ†»i¸ÝJ—äbabb‚Ãáªv§1¡bbØ]®®û®]2ÕAX¢©>/\î‡EÅÆ2<6¸yõêÕÙ¢œ&¼§³³³›8·ˆ{tÞ\ zˆ$;Cwäó¸±f¿èufw ¾röϪ.IÅ£Ößp³xS¿[ã·MM\ ƒPïÅæ÷>ÍÐÙ!•lZݨ¸XKSXŠ,šBEjjê½Çõßm:jšm®kd”¢pà5Å ¼­n/§Éç‹Î9Öš7®÷…î\¯zqµ[O0zidÌ0SÈå–^.7¬¿™ˆ€ÿÒ+iUœÖòáÌ{äÿ=ý¿üôšýêï8’÷˜fk?¿„>’’bñ¾ø˜xЃ×F¸Zš+‰D®I™+pPå€âPÛCö…&¢%,ºËoŽÓâ¾ùµ”,¶¦Ò/ÝÅ_=ÿM‘º¬¼]Øúô6yÅò@úï“MVµÝÒÚ£ÇŲºÝ®©Is¯ù² Dk™+»°®ÖçýÄvH|˜›¬Ï­¤ÌÊ·Ô^/î¡ÈЪŸ°½¹@º×d9/Èðèwk¡_6ÕJqwuÝ;?ס.wBï›ú±Eô ÇVo.½Ä{NBÑ.zݶײÎK}oQæ‰ÛÒûê)_[›+,ꘙÆí„Ï·p_>/òÛ`m“Ê+-u8AX»¤“‰‡þƒ 0Ë t/{*‡:W…m›¦¶vïPnÅÛœf‹ «dŪø¦Fí.žf2Ϲr\!ÁÁ×Çç¾;\4€mIùÇ"ZYÊq Ä *Þ\³Ï²Ð“ï]‹1-ý2G^^žu{jriRÜZãW'FG¯,ðì¼2D¯aα/á1Ë2J†"~A§‹÷‘?¯,ÿÌ2$yQQÙ¢= :Ù„s·.*H_7£¶dšäO¹â?®ªºT9¤²û Wyyùe«\¡k99È]wa[ÄÄ\Sb¸ÿàÆFdÜź¹Æèg¯E—$¿5ÿB6155=Ørã²ÔF ÏÎMu߸qã.¨u°O"ç>YAOçþ¤í Ež¨Œ TÏžÅ@^ØÔˆR! ¨ú¾³d£ái\tNŽ,àBIÉÉm„¸¸˜ÄÅÅ[ÛÛEˆ3µµ y?èê x×toÿš G’“W‚UV¦ìùòŽÉëb˜÷X´IH&Þþþ•³Ÿ'|f§}`wĬ#¹¸¬ñEdWâFîäÛ—q1WêÊêu–S…^î!-@_ù pððØ=3¹@Êšmîx ¾oÝêä^P¹œT ºN·±¶Þ=ÌþÙ× MÉfb†è÷²%`„€w\À‚ãAÝÂ8ÌûëünŒsãùš†ž±W¦3?äO½9íÅ›éŒs( åàʼÊØñÙQ@‚·õ€Jçó‡e(I[¯O¯ã5güúÜÑÞ^ÈžhË*­‘XXåÅí'0ÐÎ(âk· œ™ô…‡T²TÃÄ™³g8:Tú ¤)‡‰¥È؈@¥Mpðufccã¤3gÜÇfÆ/\¸ÉsB|êæM׋ÊË«/…†,.nU»§ªý©/LeÅ›P÷ÖŸU0í€VÑÄ·É|ÖoèyQÐOLZz»Á‚ ìÌVVVœ||R€Ñ\²aWýøÜøBÄ܈æÅ߯»ùÒw[}M GDDDd[ÛÚÖDFFÖM”––î¿xñbl|¼¬oçÌÔ(+lå<(œN›¼×Qõ¼yÚÆÂ)rùÑž“ËɈ{$Ï€YØß"Ö¶$Pö’ÑÙCÕ‰›O8Ïr.ðZo__F˜¦–V:ˆÍSw@˜øo²r;LÛs¹•29-¼„p¾ÛŸ^íh·vÛ¶m3zG:K€áÏÍL°p­º¹y©7óÏ ìßÔ¦Þ((8ÇúòåKhG”T´“kJ¢²í}ÿ­N!µ´\š}©meÅkã%ðBÛ–õ5ªðÔX—<ë-œ©–hÑs×®\òT_Jžnàóù7Ͼ}žµq&ÌãöòxóÇiÙ?~<3y¸ö¬bak·ÛUÙå,óÒZF½ÞÃŒUëù%C’›«££#•Fc€.þ ÔCÀ“š²ÍVo3h”9öˆJ|¿éÌ™3˜ÂÀ¶ŽŽ¾ªx~XÔq£ó †Gàñ1·n¡qídz:áÀ¸·rlR ”A¡P˜YqAQqÀåIw÷æsáÒËòó1ÖÖÖ=½ã¢Güvìà‚w¹¹Åݽ{×ôkÝRÖò¬?æF³n$W'B?J€ ËzûíT/†—‘aË2:«L(ŸQ¬Èuza5Ê8M‰ö²"r3¨5a°à°° PEÇ!ŒÍwo»Ùè±?:Z…ZJõê׎mŸ¶ZžŠ8 ¶ö/w\R9ñˆzÇÿízÛ|gØ4È™ïUM ÒƒÌk×>tË-[ÊÊÊ¿‘x (ÒmÄŽ=:2ÓòéEÓU«u<<<„°I™®Ð!Ùº{Û?~ø )6|üµS²~4¨ØE¶laŽðŸÆñ°ô™ ãrì×·’Ü„$3íçàPïö?ÕíXh81ñâªÕ«žÌTø‡é6 Ì§óÂNž:ÅÓžò§E”ŠÖKÇŽ™µ²¨~ŸËó0rï,æÕ—jgq@ÜΊ>I˘í{Õÿá…ûœII±X]ßyïŽOFÙo»@ìx_µ¨˜Ø*$965%³ÅH_ÿЛÌÌ-\, ^&7_³çí`†A›åºÚT–RðÔˆÛ“‰Av^s¸ãú[ç§*¾öw©•Z&,÷ÉO+¬å_T:Q¯èÜQ «òuÖvw£cøž‡°µª1ì‚Ð*QÝÍ!!!÷ž>5Aó·ƒtn„c\ž1­åÇí‰Y]8|Å&ò}k «‹ýßîsEz|\rký Ù®ÁKk»¡atV–SZ€N‚€Í•Š•K¨já ÐÃ÷yõ%œ9š^«ºs§€ººzfÂî¾³‹gð&qE7­¹<{óæMïÑ.e¦U«È æM«— MdEUG#ì0€¤wÌýª7Gž„d“J8A!hD&@`é$Ô®÷6LÐîN¦:'ŒÎ*‰6ï6-M5•©õÖo«Ëù[ãgX //ïØ‡ÏÐÔýd åb‚ê’ۼ̷nJ×Xýq¸c£ëmÛuG’|”””ü@AÕÜ»,û£:´Zñ»N$ó›9ðÒ²T‹÷0ðÒÓ2Ò¼®¾k/ìòåîBvòvöò÷BÉ’¼]äœý=ÜåI¾¾^A¾.NÎþrÞžNÿù>à…Ã` ßH<±ð¹øyá…Æ`aH…Fbq($ }‰ÅÁà°ÿ—^Kcùöûÿ‘×ÁF:kYøXÀÛµzºš¦à7øÇü ü|tE üºUcÁ Ãg•ÙL¸´×%µ®º¨yµÉ­’Ká vöŽí­û”™-U³^ÜZû‚`¦<^‹ˆ'{úúN ûPVQ~tËš» æ ‡v°œŸ,µ¾f¼±ƒŠ{÷žáÃ˜È ¾›fùyÆÜÕ£$Ò{LV¼•<%mÃP»æÙ•'¦U,ý™˜ùÅz%Þ­ØÿšóÌE·½²ª5Y²/·L°‘×<³s¦­­Øî-û‘]À1\ã3ÿW5ïÕ¦:≾u9¤ÿcõÿÖëgñ¿|ÀÛË×_6æëçâåéH 8:ºxRÜÿðëøGâñè…øGb‘H €…@àÿÿÿgâŸÁ¼gf?ïL{]¿V‘·ëh¾Bÿ/Ë:ƒm>º€g†ÏíÜ ÷µZ<*j-ëAŽƒ˜‹±‰ÃFáîâ†+9¸Öˆ<ôÔ…‡Šô7”ô}ä2Ŭd%¯Ðlʸìm½ƒ‹_˨XŸSíøÿšùùÖ’ÝdÝËÂ%zoæ>$|èLm0ú@rš*AoWç`R…s¬Qeñbà`ÖÔU-Ô€eôWd‘\x»÷𑎸CÐk½o‡IeôZåÅM^ÉîY ‹L½cû_Êiæ×u`¬­­m `cssàì´ÂYOOψž»{ÚÛÛ¸œ:¥àÕ¥T¿~Íû ±ªðâ¼Gû–×LMMMLHKI{¿bäذAã¢iH@€ƒÇÇÇ?å£/Ž»qk}Z#Lα¼4dâÍôt°ƒ‹‹‹ß›ZÎ[*{z¢%Š:>Ô²°°03{¤oݺ‰|úâE²vFöåË öóÓö¤=Î@__õì™3¯_¿fcc+˜;”²E\¼äÎFg _ü›ÞÞ£gÎÔ¾i€I%K‰‹·tu zF@ v¢¸ñ¥Íš m^¶IIO)'oß~ë–ròÓ&yï`ß‚ Ã_ÃÞ~îy"nnî|¦ŽAÏã}:þ§ ÄVÀt·¬ç±´·¯³YÁÓæ¡ª­]&,ÀßvvV;Q¨S£npdö¹…E{!°bYÙîé±WÊ×Í¿0íÝxÁßS^ZZ¯¯¯Ši .ý¢-´‰zDðýAÜ€_´{üÄ J’ýêÌK—„”‚;;;Ÿ?¿Õq.Àië,_rÒ«ù'§ÓÒT€ÉÒZä¥v3Þc5ñ SUUfôñš¡³Q”ŽOE¶m«&rA%]¯ >={ö ïÕ% èþê~ô¬‡›%Ì L]µ?ßôJ8óúM›î„þ$ª“2»}ã)EéW-â—£@…êf«Ù…q`Ž:‚²T{ »‡̱"‚†Jeaaa[%*-Í·³4xüº}É©S§ÇǶܴ~ýM,*)‰“ÏÅÙùùá!`g³ì¦z†Û·okß[xY+KJJΞ¼¶ß)ãÌyFP%Ø—ÿðš1oŸ]´¸jùyzÚûQŸø›GÇćšsXYXzÛ·¢P(yùćä¹/C¹ë6«¼Ÿ€‰hÖï=¥ªÿ:5}NIû0ÑïMSKË@:ödjªÞöí+`½}}öööÕ‡y3²³‹,û¼ÐIjuŸTW[{ÿÁƒ0ß0˜]‡°ÆÙé¾DÇòðWí[……÷<¢šf›++—íž™ŒçÇ'díªQ%·0»2ºXXp«ÑT=|˜>ÐFsaE̼€¨•‡ß@}YÐhZqñ— DàYÑU \mìì(%5_ˆ¼†stì¥;À8 ëÖlp‘.^­•¾–›ÞÓÑÕüüùŒ“]äÍä ½ÕûŒ6èb±X5/±#ÐOËØú]ÇÎñ¶u^_ajff#“râDËqI³Æ[·§@w·ì¨®±8}ðàš¸‡§¤½¸IM“ñš$ÑËs|||W®^}šñÀõjv¶OPPŸ_Iä×ò©T´S¨oÏÙf puƒŽÇÎUD~RéˆaÁÝØÄd*ÒÀ6Ü€ôMÏÍýúi¨å–SÃ<ô.ˆyV uu))©®²°·oyën·¤kÄ@±5ñybàÍ›7BBÁN½½½ñ+YynX_èñòåKJuÂá}°WcÏv¬Äîiª¯O¸Ö˜ ?ì\r¦ÌøªU«=z~Z§—•Íe›e4 oßþä Ñ $XË¤äææ‚Ô›•ådÌ~F\EEePõÁ½{¯^?:fWèéáå´ºÓõý‰Êâòw]N÷?TÛ ;w Ä•ûy M±Lêw’J½Åެ¤KŒ0Âɇ%â_ ]!ðhÓz…£1ª[8™5M£<ÁÛ• oï¾J 72ªß³bõþg]*º¶Åg5׿“mSåhl—’¯žÛræò‘cÇ(Îα…,>­ž…yyœ¾qêç³õÄcÔÅðW®Nõ§6öö&Á`††÷®Qö™Z`33©\ñ–Æ»“Ößc8“žžn=o>¦ÕÊKϸqãѺÌ‹óC>¦ï¾¼ça5Œy¬ªóÞwƦÎQ^4¾tUÌÐômÄæØ;¢{#'j}¾I“±°xxùrÎî[_`j"ItqñQ>$y,q›ÐÄ'Ã÷ƒ»údYö¢‡w‹£o7Z÷ì©IBlkæyxb¡€ÐålIm¯¹Š¯vÉ[íl¿lä±|•üWœ ìLVP›}!"‚[Ë/S(P®«—„s?9ÔœÀ>yAK…á‘;®4ðØŽó3êúú×ÏÚßHJò´nUù¬üä­ `ÿi|gà{„r8áÞãCŸÞ¬ÒWäЃ—µ¼,:vËÓ¾µ÷á1ã3Þ]>/¢²–¶¶ëå±ÊJÁººVžéýºbðÎ[×NvùÌ}y²–¿¾ñ-ÚFf5/ïÓ¡²ƒ²}|: Ý‘ Þ=Ågíkf¦ǫ̈1' Î9ø¼~÷ÂÉ€^Y¿*†=çÈÑÞ6þ{¼ÝÐjö[C-ö]¹Hܼ¨ˆÈZ/-a†Î.³ú³aƒïB}&èea²ÅÖ>&æÓ#Š·ƒ"|ýÏ ½åîñþð F¡”[m•Àà¤'Ç‘R§ yyVyy¿ÒÛÌlD"¯¼ü„[ËI¯.s~¾ûÇJ§Wtv)ãT|šz"oY_OžN{΋Æ=¨ PßV¦xèaê3:ñ¶›p/ƒ˜œùÃDC^ ûÃÍÊžs_>?á•Xµ.åÓTEpÒøìg;kÖ´KïecnWã Žv¹9Õg®Z¥ÐÞ^_iW…Ž,7Ò?“ÚöúÓ1zÓ€«ÿ¸%'¢q¸ôíà.¯îˆ·÷£óyÁÃó|,EtËu'¶…ŸŒxÅØ÷ö9þÀ˜‘—îÙqjQ-œ8Ÿ“C™x3v~ð2Õ°Ê.áõ¬,¬…òôÂ×k‚ïz}_ µðk0­ðWÄçä óãÓÊÂðx¥ð¾ÙÏ ÁOî­^}/fÝsã´ÇŽusŸÕqueè:g„ÏñóñÛ +‡˜†÷šxY´¡¸[íîÔÑ^$í1Á®ã¼}  =zù{<¿nþôɰ @­¨ˆ‰´«˜1ZëEÜe ÄÃWŒ#´JÊÉ=©|­kkË dï^]<· Úê:›œôŒo­·2/ø‰0HÂÏMM•ü²q8†’@-övoó³ç;`篼‹»ýé ñ¹r‡’C^/¢&µöä+§†ëëX|‹CÐ~ã½^^¥.­µÂ„Æáó¥¥ô6”¥Žû{\@ªË—9>úa¾bP`oÆ ÿìs…Sç<<Á$}dÔ Ó{$î6³±y bÓüni, Ó~YÚ ÷u~æÐ-'³ºÚpÇ2©j;ÎÌ,ÝüV)YYQöƒIR’’=²:Ôé ƒOÎi'ܤ>BÝȽ¥e¸­ö$%¯éwÆ…‚Ã|ZçûÉZ+Aôætu5go»qóƒ¼ÄåJ “KÓ0/ïV`¼ ⦢ €7U‚³?n9wr0³ï]bHÝòtØÅEË?ô|y¹¶&epG¯ÜFi)gÉÎ;¯Šý²Ú’DZZ^ë%ߩܪ–D(üú©Å-l†cÆ²ÆÆÛ¾¾„ÒUÆ2ŸƒnŸjnž\Éšp7àÚÁƒÔ¢¹Éa«¡æ³7©Rqýpõ'±7mû:ë$8Ôÿĸt·]|¡H ^÷HG®}ôD bÉ×/ŸsÖ? îUÛ—Yè‰ÕÓõþúåv[SD)PT`K¿ÎfΤ;¦}$ÿ±óÌò@ÍÁ·ññq#¯1-ÏÑí]óT­•;«Oqèîïh8£÷i,Ö7Ç“…ݲ†½¸’æþ¾àèQcmí˜WëOhªÎv òª-ß½=ýEtÃT÷Uñ­sûå|Þ¾ö¿r&^œ<¸ù\ewdâÌp!í€p—í.joÈÚû÷¯¬d ïíE[n)ŠÍéàdj«ØÖÜ0ZŸG tk™*ÐszcPgW(ã òü’[UÑ)¾; XöجE…VÅÀÄ0V¢æ QKµ;SÔWYŸ¢·m· ˆ|Yü‰ÅKk}̦bA{9œØ›Ï޹ÕÖeõÊ®þ°öÀbII¡K—¾Ú”àß#XY­nÉãê}3YPÀ¾ªogxxóç @é¾î+`^ÇÅõzÝæKç¶U •çêö®TY'ô:(¡­P~²ýöÆû-b]±É§OÙž=ctñÏÎòÒÏ1›óÇSV¼e“[Tw Ñÿx×õ­r¹»yøBê†{‡Z¸ R\Û*«‡×®•½jC§w«Šmmi¿j±Se¬°LÊnïfáá)yã¯tY`›Uš†»v[è³Üh«ùò)‹Ÿÿ_0£†ÁKÇî|_Ú‡®˜“›Þ||{%øÉžŒþŸè3wwg >äïSÔÚÞ^Eß—ÀhÓædÜà\ºòк^ÄškÅ_†'«æåu`0PK>ÚôÛçC×wêuß/.*Zv³¼¬LTáK[iˆ-‡Èé^PqI¿òî hŸcup5[²W6KÇܲùóçN¯¯N¯bZr»WÀnÐrhÔÌö¥$ãïn6:žÃÌ–¹6ê뜘ޖ£×®}îP¼Ü»IL(öhPÖÜJÜ«|8ùxò‹Æ·{ö­Òs,ê½vM5<Þ{¶è³¤dvý„_«ûþ:ú×ÏY§3ËÊÕ8”ë Ù:B¥f¾xÁíÕÝ%)¿y£y_ÍÎÂm‘ór""Ã…Ýžö¿ÔÚ~èÐÙ¹˜µÇâ’yÁ{žuÕ4[´Í=0,luË6ÜéœÌLøžB¡ú3z†Û¥ß»ÀTê; _ÌLÚo(—Bj|8Ye§‘èPfmbRM8öèÁ¶¤‹Ï÷OÖÙYþ^)4?6GXO$ÉÕ•Ï¡4¸%dÏ -×çH]Jô7ßl‹Íñئxº[õXöÍ[OnçW 6¼ÆŸ4û<Ë h˜÷õ¨î) 5}¾“ïWqÚ[_?þÙÝކÄù/n'®_¯œ»´y›\±Ÿ¸øÖþ‡­™Ààmí*ˆ ÇtwíjËÌ<×ïòå°óNÀzÚ½/àm€8Pø¸=tUÚÍ/Õ³ŸWǺB(9§)¿yÛ›ù¹Îéƒ÷Ï5œãR‘Ñ5Žœ#©yzFççsÁ`ö-µµm5ö…ÏLÝ9¿«›cÃvCY]cùù65Žž7zj¤±ûÑÇÆ’^x¹»LÐë™Þ° h«30ÜQh|N…ÛÈÎìR”¤Fe÷…7-ýošûZp¸‚ ..óë»›ÚùT”_ˆ~üô T†y_Ý-ê|9L§» D?îr˜ dÞº‰7.¯D®;~¢¥öÌgi¯¢[Ž6õU‡UÇóÇgÉÌ·¶µÙ—‡óæ6¯^{¡æñ•Dza*‘‚Þ‡V>N––·/Þ?wbp`2lꘖê Q&µövØ1Þ¤$Õš+L{=¾œmVM£%_˜z§»%¼çl~‹ŸÿtMni´j(ÓY£ÑÁé7]«Ÿ¢½W¯«ß¹²Œþ¡üàñÈûðÌŽÉço䥪‰Ìó=qTäžx|KzgÄ€‘‘¥¥ä@²,Lœ®­ÝþÌ·½,¬äÁýfÃT»|ÈœÓÛgoâ…½q*TUá]!µ#b6d^¼Ø(¸þ ¦ÃÊ•Ÿ? äÚMí .Í21ñi=C´]·™‡1ª65C+ ä?Í3Â×;¼:C“MÁ4mm¯d¬0±¬£žºf.OoÛè6Ä œçvÛKd|t«­æÞ>ŸA‰ /þ/üš·…Ò¼¶ÙÕ^c‡Y—ßÌÏ?þOm£bÆÿ>íá]SÓ›ÃíÃ"LÁãñ!ïÞ½Hì‘cW¯{JÉ]?Eô»Ý<=.Ê0üu¾¬ËRD\jøù8Iié¡HåÙÆ–,F°½’·a£sþš bl;çV¬M5¸~}ä]ޝ¬¬ìÈÈÞóåô‡þ¸ìlɸ‡|h: ŽÃ5?~|Èùʪbûˆð¾É”&51C‘Ê )ã4ƒÑ†8Þ¡wï˜hOÁñ•+£}úV½ ì9¸alPƒ²BÍÅÅeûöíS>LožgÛ¯¾SR’•™YYU%%-=ÚYrâÞ®%kaÞ3“àî¼Í7øy¯÷›Ô£G÷Æ®dTJ±Êu( ý¤·xµ÷üÇŽVèå/ø¼½½ÔfHJ•³››cE„à̘gW)ѧW•Z ØÅ¥Kbù%¥Éb1ÑÑéIñññf¦¦¦––>>.®®Ïa0 IIî'ØT94A-=×µöœÊnPx0í…oÞ‘ùü­¦ÙÃ5Æ JWa[Äů^™G×»Zuoô›R-ÌøX9ÜÕÕ51ÐÐð䉴„tóyVîáøx ÕÙÔÔìÜ\P£Fä{÷Uů]»ÖêúN^¢ï¾·ýý´]»Žœƒ^^»vÝðêVÁ¬wÛë¤jbbB¡ˆòqðó»ÑéàÐo¬?·ÍcqfŒën®,}ëÉ ùÈÏ¢‡¶tNŒ²—…ï0 í ôðHí¯ˆF{n5(+̤-Æ’î3åߢÆñ1Iþ£™¡¡a=ß ÝkkÒ$rrræççÛÛÛSSS™÷ZÛÙEÎϦ:_!¼’Œr´³„¸qxÓ}ÿ’ÒR¥@œ›»ûëÜ–]pyùDž›mî2°NP9ö]cˆ«<ÕÃ×Õ×\ypƒ   ´”Óç/Ÿ®FG¯|j~V!€EðÐWèš¿8 zÝy¥øÒÄ”V#›€¦fúSçèèèÁ@ÎÏŸ¿–nÁãƒÞ·Fò¼:3§(c©¡¦ÆÀÓ êî~íØ13]]Ýàà;7o¢`p$òimíaç+8÷Ö(¾Ññ¾êY¦17·ÆóórMÑû:v‡‡×P}AÛACO³Ù›ç9IÕ/B2†ÌÈ=öHFBBBNnrl¬g6öõM?ð1×')²“““³®7nÝžbG‚^éqq¬<6VVÕò05Ž   7²D‘oÉu,ÌÏßrêJ=6ˆÌŒÑÀ°Õ¢ŸM2´¹¹¹Ó;„„„”_²~tÿ¸WíHRé… "‰¢÷X‡y&æÚ ×&…ûùMLw<¢ÞLH0rwƒô Ñ¦jm}²¸X!Õ€ŽJmÝMw×q/ÉËKzD|¼HA™oý¿4¦kä•tïdج>8û‡Ån=/u}¤W2ÊÉîÌŒoAÇÕQÖÕ…S“Õí…e̽“rT¿¢2ñ’ˆ(VRñÜ—OC^ÝåZ…~~~X,öépùî·{÷ž¼²Ê6 v½££½=p´+çÂõ‹¦ö;wž:}úéK`Ø4M* Î¡”cº™••š`®Y¢}ßÔò¢ p0U³~[º›› üŒ¶nÝ*(x–ï9ÆŸ¶-ÒÁÐ0^=ýŒÊîâ›Ñw;K‚²@F ÛΙž†E öŸëNãÝq3 b?&fȧà?¢ñé5yñ3:»_ÝSl&Áåääôñúúû‡55™‹³±°°ppyõ éÝ÷‰…|å>ƒÑÐÔëðà±µ Žõööæçc°ØÛQQ°ü3ŽG½Á¼~úôIMM-C;^]T-+i}…¿„x”O>ëþHO+“5,,W._ffe531QcÍ£¬ackjj:œ˜˜{ùò¿¦'_Ö!#çÃ1«ýÞÔ‚áøa›:®s¼)šÁÉÎÎ.ª}x‡©©mEÄnYÛú]ˆ/òç8Ì^¨²rÜÕu°³STTäï4°¨¯¯^øyëð›ƒÉ„ðì­ª‚Ï5*8K³¶¯¼¤¯­ Âéºùý¬¶±z 9— ñ„Ÿ“{YŸºïEccëeàN…±û`Ú€í[gÙÜ¢§ž|øöíÛúz€z‘ÚOÂŽny½ºÂß¼¼ú_Õ¼{qµá¬¢• ôjklŒJÎÈ6;VD¯;üñãúmmEqW ¼ºÓNœ8qöìðû÷Ðófš9Òšœ×•Jƒï¯>ºíifvìêÕ«G>|š÷ê:ltT+ôȦÙÜŽݘÀ.Á·6]êÓ-ÃkÖ¬±µµõõõ5Ë2z(÷4¯ÉYGguÜÃg/^¢¨5‡yѦff _‡&kjj€g{DÅ íù˜+ÝPÂ1øh£0•9Ék” ¨ ×-?Ë{µ¤W`´O<Ÿ(@üаí«&GæíÛ/ž<‰ÓΈ߄„î'Dôtóf¬RÒÕÓKÅyœ*---(ܹSÀvÝ*bƒÑ†õë¡?gIEá&o¸ë–&SÎñ‘r’=ú#ƒ¢bÉU«\fFØ€¡æ#†† 0D¡ºººÝŸî[½„âüsãméã: Äðé±|—ç›ØªNã½”””pí•9……A––Íàì‘îŠs©©! ’ò•TTæÛn9UÌJT ~ÞjÉ]ÁÈ8½²g]Ö§q…‰í1“«ƒ=«9ZüÂ44€zþü9'“M‘ïŬ,qÛë99ñF Ž×¹óÏš›µËÏ"Û®çQTåŸ_P:?0Izpàì¶Èò‚‚É1ëÒÓÓEµcŸ=i¾¿ƒ9®)’¤› ý¥N^Tå³g(…âôôWoêN·ºo.ŽÃiÛ³À_¼ÐZQ\Ÿ’F#¡‘D$Ž€$ i84ŽŒ¤’HH:OÅ"È$ô/äëQÝi¿ÕO!a( M¢Ò)D ‚£ÓPtBá‰t,ñò i~~$§ßw!Ò‰$<‰JEb %X:ƒ¥°( æWCØáëåä º1ó'ùúÿ¶#‘ˆF“ñž@Ci JÇÒЀBSˆH4’ö:òòþ½ÍP($‘FŽ„&ˆ KE€YGà1,„Eþƒ~,¼©$ÿß›ŽŽ¦ ˆ8ð £¢ñX’Š@: Ø”HÇÿ¢'“šŸ¿‹—çï=˜B!ÒIh𛊿ÈH"OÃ#P,‘B#åÁ`Züü~Û D ƒ§cT °„6 ‰Æ“0$ÁRÿڃ㿠šAÅ’pX…„ÄaÉ‚ŠBQè8†ˆ¦ƒÆ‹È´¤¾£†±‘¹–µ¹£¶––¦ºšÆvGãíÿ©€sÓ°h šH'£È$*†HAQ($¢‰"îÏ>þ·zh¨ihüçt´Á£hT%apD £áè8$Aú!¤T±ÿÁìNÞßàœ²€¯¿†&*pÀİA¡át2q€¼ÖäÓ tý_"((2 AQF!ŒDÓ©8 ŽD£b©h2ñKñ.û~Y4 -¦Œ€ ÐÈ‚ "+¢Èt<æ×Ê{,"߯žN$è`D‚HÆ °ˆ(Œ£bÝ'-è—Ât*‹'‘€oaQX€¬ pQd*è9…þKáÞKäè¡ê¯$5$ä]D ’† 0T"’@¡QfA’CÿÓ~¼¼=ÕT"™J!âyÀN4ä% O#ׯahÿ¬›€Lýu*“Éh*C$¡É`Ú²"–‚7x*†J'ÿÚn>Kˆúë ö¡àÐ*æš‚¹ ²7I¦ˆtå—=øÒè¿fB""0c1X  2ÊØè(ÂÏÏÂýhËQíHÿbc‘d2€ Ð"0G&!Ðd X‰ŒþmG áýû~ˆÀyx* A&(t`-˜v0(€$aÛçÿ Ž‚'R€“¡‰€±È ‘±H&((Äo»Y øß÷„#À@.»”hý¾ÛæÇSüB@)²Üñ•o“ð‡HûóÄøy»»ø“I¾ß€BÖÃ+T6Àæ+ëGsÑ«àéåIS/õú³ÁÉ:“<©ËúÑP¿þ¿Â>TSAùRB2 ÊF¤@s0z ñ¿!äâ2ââ’Š»ÿˆÿËc²—Í&²txIûEù>ˆ ðð¡“—FRHÖƒA°½ö’z~›üÙž¾ôêvéØïI $õ'N·(ù›×-ÇìwÏøCgÀÚdw/ŠpŠ•¦" =»@¥ÁÅ|¼üA3º‹“œóâ'%ù…s”Ⱦ YðO ÜÁ ¤eÁ4w‘åhúó¤8;úyøRhKñõw,βž˜Ó_z]èߌá‡Ã€V}›A½%©4o€ùBàN¾$og8ÝëÛe½ï–VX¶é¥ýÜK(àÔ‡’‹‡Ó"½ù«~ß@Nöò:-äp@$oà>ßÓ¤#꯭Eà$wÀ©[Ö ´Z"Ù¿k yøoÎü„Üϙş/çÅvžÀê迟ÅÅéƒ/¸+(0 ÌøŒ¯K Ⱥ‹†—ƒ/«*0l`-4’(CÄÊ`x$ ¹ÀSÿ¾sÌŸ;'‘]¹Ðüd¡ð |‡{Ñá~ÞЖ Ë/ñ Ìݾ詀àBFsñ…÷EQ¬ ƒ‘AãQ2(ö7š"QVu±ç¿¨¨çáíNƒ  ®±¨šb?€(z¤Ç!íHËz“üýIg0@­€Êp¿?šÇÏÌJÄÈ qD,!ƒ$â~£-ö/ÊþqQçû¤.긻CW¤à^Þ}Ð_†àŸÙCÈ 1H,'ƒÆá£ þ¯.ö“¹ýJˆ‰b°ŠÐ‰rÎé‹C.tG¢þA÷„?w¿°›‡‹'ÝëŸ+5Ùé¾ðjø+åPÀ¥Ðh0YàZ¿u+äO•s÷rú·j&?QID-hƒ†&ê·Ú¦Ì?Vä§ÝË`PÀxŒ Cü-?µôc1Žÿ’Yþ¡i~ðóùÂñ ó…EÿVÇ¿Àe Õ‰öÏŒ´xêOT@q2(,'^…'üN‡¿ æ%ñû‹Ú‹Ç¢@EïBUô-¾ýà€­t ’ÜÒŸÄ9M\PŒ€DüÅþiñÜÿ™qOý‰qˆXÌ‚H$ð¦ þgÖù‹ jd?_2Ér ÷ƒ}~b<°€;D4áàò§áôolòƒÿ­yäà ±ßGˆïô{‘P--3,’šE* Mÿaô÷ý‘¶‚èŽ?È®^Ð’„'ðÙµ|Ž“¯W€÷2õRZ^ü#E†¸Ë<Ù¥²Pà/–÷?tZ¸U áÈD ‚HÅX ŠH âq4K"éD*nI¥o­ô@+Ý2‰‹Pra£6xàÒÇ…µOÿ¥õˆ…Îÿ"ÀômÈ^þþ^ ƒú=Í¥,_û­âK\Á…ºP/HüLºßBy¾ÈÌAJ^âÎß,4•r¡Jþ­©4?Ê¿5#ÔfÁˆ*c&è„E#©èÐüs ðtñ  -ª¨P¾•Iÿ wC/_šœœÜB½@ø>?š7iaqùß;†ÙrS‘?8ðü['Db ¹…£ (8Ä,†N¡Ñ(,IÂü_ë„¿W|É ¿qâ¿÷Å_³qQM£©tE#è2AˆÓÃáéDÚ²Ûª-·_\—üô;þwsðï=Ø}©Šø6¼…îî)+üþèÛ¿×ëßûö¿õ·ÿŒoÓqCŃi£!È M¦’H4’„ÂÐ(8Âÿµ¾ý{Å—ÖÓÅÿ÷nýÇÊM”„¥Ñ‘< ADѨTMFSH•€F`ð(¼ì΋¼Øúw>üïlýo|XŒÑX3”¶P1.ªóGGý}çÿÞQÿ­óücGý¶¼¿Ì#¨4’  %‹‹wKdÿ†‚h.œÂV“¶¸ú(ÇãøÛ•0ªû÷!.08)ÀßÙ ¢3Tµ…÷€6ùƒT /ïׇ£$Ü À?n@sw§ùþ`u¸—'ÅÝ…â¦,:Yàr _‰{\Ä¥ÅÝý½ _þàg¨*øàG?}ýÀ9?:ôÓü ù‹+ºîà jp’»MQD4 U]¼¢²´>Kuñóv'…(À×eUä<½ü¼U=ä––¯¡•Ûs¾P@îß4ð¤ù/.‘S¡‰¤ºC¦þ‹M!--jàB¡yúѾ™Ôº^¶| ¼¥ûÒhp?/ºàÓŠð¯àØžÀ @ _r€? º²Jy/_hµÇ…ð„.AqàOóõXr胎‘Ü€æº_º äß@“_RNòƒ{CGüœ/A­´!%Ì–”€k{á Ó¨§¹€ï}áK;€ÂQËý,I“¥$HþÞ¾ „€IeCàPÑõ­Ü?µÖßšé»5¨pÏœAÅÞ€Î9‚\@#Ó Qôw88n¥g®klaW3²[©™šª™Û(‚3‹ƒoi´E9.Þî.@,»/ÉÓ?¢¡–©†.8_M]Ï@ÏÜ¥¶ž¹‘–™\ÛØ®ß¡fj®§aa f ßaaºÃØLKnF£ýÃ9 /L¥/´h»äÿÞ>6ÀOüÀ8Ü©pgR ø …æFÐí¿pw/O§£,^Ê]²¹"Ü…]æ•ù‚º¼J÷wŽ"×ó¤ÈÉÀ±Hp ÉÓÍÌ‘tÙÐv¡áÚî l“«{ùùC§ªÁ($!‹D`±0Sƒÿh‚Ųío0o¹´‚k.]:!ý€zß’É“¡Ú”þ®m?bæwùËQo_J¿_„úsm¹xõxùbtÁúû‡ÅKÔ>ðøŸêò%áªHüäà²4(åx@W™~M0þxíyíª-U‰æ¡â¾Ð¼YNõ*’?ì-]_~ÿãeñ?MÕ ZögQòþP^%yï?Äß‚æ~‹‘·zO˜æ÷-Yþ<ýËç³,ÏüÏ­°h¥Á“àÿ-óõ_qÝàïæüóÃlÀ#˜e)„½!|y-}¬”ý‡L£¡4,À¡È:ô¤‚Ž¥ id†B$¨ß—·¼¡Ë` `õ}Ê—ÐkaÝ]–ûiŽ ýZ-84ÈPówñ-Á'¨åâ-!—ìö€._Z²00œùBNò“ÖÕÜáP®‘p\ÑËË[r¡åï–A¾™ü+e‹$L[ì‘7t™uÉ¥á~Þ4Š @û21þË.ŒÊ=4Åyq$ k¡‹£_<º8¼ü¾!>4¬…ô¸H~«ü› ¤üON „$4Dhh Ç,QÉ_iû“uIPá G$ÈTE"²O]¸ KGÓéd Žù¦ª˜÷5I€«o‡TÓÙáh¼}A‹?£Ér6_TkULÞ‡Ò·5Ù…[îáÐÕá3#ËŸn/øyºûËFÿW¤;êužû‡k‰ÿ6gAË—ÿcë¯ËŒÿCy å/³ÒÏ­û‡Ëä Çá~Ëw\Ax¿@ØI¾.^~¸¶úçiYàòKDv @´ßÓé?“r ì7»º@ú<¿!ìû? ß“ˆ_vÐSf![xR£F\¸½ÂŠÝo鹌ÐÉÿwŒ†¶œ!ŸZž¿:HL´ÿƒøqþï€DO0­ÿMäÿ?·ú÷o1“²Ôö7ÿfað6—úý¿žƒåÀ3þÝLóà þuY„_P¬CCó…ž,~ƒVF +>Ë÷•ÁuÁ92 «Wþ4@z—C6B·®¼/4ZRz™0/×BKßEpóô„†º4–åÙü”$ …æç·t\º‹î[RS] +Ñî! 2ý@:< I »,ß¡´xŸ„ }¡ß…@ù%—‰ãÂþާÿÍ­¢$$ WT I!QPt2‡'‘ÉDCÐ((2ó³›¾%J¸—'P›ì½pûü÷ûÍÑô‡tù½õâz?)äâ¾à¶`RD´ŠŸ$ÜÙ+’ðÕ×…¸H ýà€?Ó¿‰Yx¢oD/<¤(!))ó—vw!k.Ü(Ýäë±d¿J‚¾þ«$'к9?UcᎅïA‹¥öÞþK­¾KªøÅc åÝËJ¢?»ðÕ¢`0Ëjtÿ…µS’¿ |ñ.Pˆª,ÔTÀ!„¬‘~ìj#$÷…Ût!Ÿö\\?]ò98´$ç"fÁŸf(ø»Tü½B"¢p(<Ž„Â‘D4 ‹B ÑT‘*|"xq¡ìYh†…£Ÿ#°êbÉ¢‚ºÐ÷Bô/}-óo5À AÉ@"Ñðt,ž‚Çc‰à‰Š¤R±H ýD¿4€ª¶Åþ¶f¸ÈIHT8Ý×Ëã›…åàzô+h/Þ^žT¿ÿã%¤×¢ç’~^€ÃxÐHžà|z€û 俉Êx«|» Úï¿Á ®Nÿ̾ßÝ¿|Oõâ-þßÿpKù÷GOvñçåÿ‡§R~¼?ß›äïüíþ|p`áó¢HˆûÁ=i4*(huZ7t¡}K7Â˰,>‹ð‡6€,€s]¤G*=¯MGa)tAFÐðx4‚'°<š„Y*¿ßIüíˆÚËß\½ýÉ}îz¶â»üEÛA—é¿?ijxÎòU¶žŽ\~¦ zDòÇçp@÷jÿQêÒ£xK­îÔ^¸•jéÈÂÍ× “,=+´¬ßâ“ß."͉ü°½$æû×Ч?µX8á‡ß:Yv¸ÅLF¥"P(–ŽBc1<TB<‰€CQi –Húɾ+Ë=ÿQ p'E€¶¢Ð±4*‚ˆÀÑðÐþ$4: ‡ø¹GŸ¨°B8®ãB¥ôWÑh2†Ò-M'# Ð.@ @!0, CÆ!.ÚƒäëFóýÉ€8*O "1€!h4IÁ"iXP’è “ÿqÏ+ýZ:Žfæj¦æÿ^ …Â!ÉdCÀÑh4&à©$$•°°³×Ï6·ZèPÃØÐPËè?Ò%G¡áÑh,ÚN‡ŠCbid"£‚f,éçûi-t©¶c‡ñ ?,™ˆ'¢™&Qñ€Õâi$ø‡"á±(2éoû3±P32׳U3×36úôKÃaèàX:´‰‡ Ð°ÀÕP4 Œ#ãPÛ¯®…¶¶¡Ú¤K<ކ£‘ˆh‰J¢H,šŒ'£ñT*ƒAàÿ²KÞîc¬­øtHÁRЉLE£@¹@ QÑX2ŠF¢`P(48 ñ÷š™i©éªüúÄAõ4‘NÄâD K^ à€m^…%’‘ï²ZÆzÿ÷A#IhG¤€N m¹,G$áÉH*BþjË5Dž΂9þ ¶é4 G'`ñTC"Ѐc *‘ ƒÇýlÓš¤þ‚ÐhD ƒ@‘0X Ì šŒÃˆd, òJ"ð ± Š:Ri¢½Bþ*K¦QÀèqHA£’ D€w4 ™B¤P@aòo%/íöG©H,ž„¦â‘ …D&B»w"AÑBá‚Á€h¥ý©PïN£þ÷<£I<†Š©‡ÆÒ¡4ÿ[áÞ¾.žþ?12‚@%W$Бd*‚%x¡Ð `§—ÂÓ!÷oÍ $™€@ÒÑT KÇ¢À;ˆ$ƒ¦14â/dÒý')öw^@?CC;d¡‰d8•ˆ€D@ùë7ÂéôŸØ–BAb€9i`Ò°dðÐ G’A&ÄcåhK·ðüE$ m¯r‹@# tQ ˆt$æç;z-‰ô ¹Ñþ¯ÿ*@ EÁà)*•ŠÂ“ðh,€  ø0…GÐ~'BÊŸ¹ž€F‘ˆ A!è:† mtE§ã0 ù;©ß¶ëûS°á¸,Àch*–NÅ’ôÆP<‚NþX3?3šš³šû_cB 0`P$@žD¢c‘` ¾â1¿ 9×Âj÷_Ñ HÄA3GÄb)d‰€¯°($ &QÉØ_ˆý),`èD<˜$øM¤#šˆƒJpè—ë íòóW‰d"OÀ’ÈX ’H!`QÐv›D*šBT äë_Åìß |…„BÈt4 …À`P$: ‡ÐH¬ƒŒúÄÄ/AR,˜F'“Ðh °M:p ‰FRA„ åµ?ŠGýx‰€6è#SðX p0êd,NÖ¦Ð@@ÿBüÂêÞ_%P(ÚÈH ED¾C%) ›Ò@ã‘Dæÿ#»¥ýÿGý¿X­9:~¿æðߺÿ;Àüyÿwö÷û«ÿÿ:ß?.,^r[¸Âü­’ÿƒo,a (×qû© ‘pTPzئâ@-F£üS ]¶~)’BDP •BÕ…,ð%pЪöOÈúK<â,Ð-äD4%àèS‰Tä϶¤\ÜÜÅ÷—RAîGÆá!àƒÖ+HH<â AüDMšão-ŠÃѱ <§#èXG£šH ƒÄtEcQ¨Ÿä.è¾Å_ÊDà±X‘H& *°)‘& ¤<Іø²µœùÿV$È$, ¬`²Á;2†J‚êz*Š –Aþ Ýö¢Óýhþ¿Š$Ò€ŠT@‡HE»BPt…D††ûÉL临gðßJ%“Ñ4 Ú(`AAÄÒ€³á(Šj¦Ÿän_Ý‘âàùkmñHІdJT,‚ ŠT2’+Kú‰  ÝÛ~=QX:‰@§û¦‚$`Aø' <ö¿*¡þjÿÏ¥ }Ðþ ‚ñþ¾ÛË)þ£x$Â$‰Ä ±à8 ¿þÿÿ^wé¬eáƒ.ê¬ÕÓÕ4…Áî÷‘Ì«ÀÏl!6à×*òvMØWè¿óeYÇ``fô4ÕÌƒÏ w†˜o°šY=æ¥uYÂ\MÕGã¡Õn»¹®&C꜅,ž±R"W¥CŸšI§Øª1m$ Ð`-µðv¼!·ÃĻЂIë‰È!’ãÈè:ÇKð5'6i D³µ/SÄð!(|ЖM¶ý걓›_)2ª3 ï—?δFx¿³¬þ^p<Ÿg«8h»½2¦©¬òéªeŽº–ÖÊît‘¬¬¬L«V}\eâÃÈ'¨ÿš“›{¥ŽŽÎáMȽ£;˜“$ñøS#+v—rò^xkpSs ë6;‡#Unç¨Ñò™„QD,ßùîŸôw.¼Ÿ#GKïÈå3I¢:}ýüÆû·E4ª˜§ ªñ~jJHK< ºiƒ˜Á‘°Ž›7QL+WÞ»w!00pz¤dôȹs 9ƺºwÓ5’9/ºƒêMÚ™¦²»X=QG×ìÂ] ôÇ¥^w5çÜ âiα‹é, Òá…ãìÎ9s¸AeÆ€—ô8³&TBTèQÿJV‰Áû1[õ÷jJ>~ò$o÷L Á)Ì##£;áŸ}ãå®mEHN¿7µ÷*nàäâÚÿ왩ç\*Ú©gp0öàñÞ׎½ìÛºu+óš5÷À{$í1×þýûÏççs¡éµ0˜Aš/‘H4-\•™¹…  pÿñc–ªª*è7zv•®Ï}ÁV’‘ÐC-:êÙYýyb€òòŽ·¯ïýW­ÜJ^½zõ’—¦ª Ó××w}hf~´AÇÔtý™3g\›lš'¬O|ISTç:xnr¨¦F733¾e ÓüüÕÔÔô¦­T`òóóËî`T½kÇó=žª?«8ØY‚‡þ*"ç¾Õë,gBu?LLì++SfRŠåEÓwõUÅcßIJÚ#kW'6egg3¯]›Ãml?®WúIêþýûcŸZ)3“þÛ¾ a6ÙÍ€ÑY…•òòòÖÖÖçwÏLzäÜŽ?}š_!ð=óöíÛƒÃÂDåäìða“îƒCCÚÛùF»Êú„¶()+“H$àÁÁ¡¡½/‹üªàv@õƒQà/ ûè¸8Ö¨)=ïž»{\×é1î%'';?½°ÒÝÝýFШƒg'˜ÌžþþèŽûÏž­gÝ(WyÛ­åÝËD™„„ç®R¢»‡Çøä°ìƒò²ÎÅ|&‡^¾Ü™ïÕfw}þ«Ï˯ŠA#‡7Ê;x?³ ëŠô¶šúÐÿÄv&ÇáºpGWq«ššÚàÓŒÕ8¯®ÃÀC3îÜÙÔßßïÜvó¢mKßôxßËT‡†4ehZ˜˜˜à |ϳŒurÊNõþCÍñWŽKš¹ XçšLu¢Ç‹Õü^Z3¡¤e´HT3IbÍú‹$R-0'#+Ë3>§’sÛÐÒ’§8p˜VSS£zçq'àÓî1^~þ–V/`ñ¾, ˆúšúzm ÿÞ}ûÜŽKKH)’¥°ux<F¢R÷>Ì62:ÕY}DX£©\(`|jªúíó¬q ßëþþô;wNÚáéµ›öGG ‹‹¯Žœû´Ñ2Ç6úëüTE@•YËM™›iÕ}Õ‰xçÈý,g¹NªìVè* [”ïú‚ENNîŽß€Q¼Gùì‡í׬óµ´´6a]¹èõg$ý*:ý÷ÅÄ¬ŽšÊà¼ú8~’Ñq÷'îÀáö•~~¡…u :FFìêœ||¶”¯ ºŠ_5 4œË 0ðòòØ LP1°òŠÅÕ;h§úÊAÅž‘‘„£G׳ )œé4B =¢…Ô„ á=_ZÕ&¹¤:±f}‘y¸uKŒ›½œcùáëö%÷›š¸`GRS×lÞ¼ÙÓÿUM’hׯs˜‹BáÇ>)IÙ¾0×ÿ8®M½4²ãWÐh×CÈæçÎ%žw‘‘9\¨x#œÙ0{u÷`È–+‡ i»åôàî]Ø-zÝý½+Yw9;3;99y–ðN|úÈØìÝ=¼Mƒ¨pxúÈ‘cÖßǾÕ÷ÂÈ€óíßqä f€ÈÌšnO~ÈT)ân³áõÌý¯> éÉ—[Gã““U#"¶ÚZÎFœÛ–«ÇøiÓ ªÎ“ò‘®’ ÄQŽØSç·è¾&{z²'éî_H1;Ž«K`¢v83%Õp¨§ ïW|Wp !AØßߟ¶u+oÍÅÌÆ>]«hžWHN^[Š l¼døbm¯”TWz©ÒºþþÜ&I‰>Ì‚ Z¥zñ~ÂUý×EzxaÿƒLO¥äËäQ Ç[å“Òæ…úEÐèu47 –¾cuh¨úñËó.H™w¹»GQªKó(ø"O»Ã;Ò+ÜZŒî—†<à.­Ø¶w¸ÃÍá™×;U8ÇùÒÒ+åŒ'OñÝvS¶8È+®þlüøÛ¬³OsÅ£«Ôcº´E7__SS$E>qïõëG¶‡?‹ÕT@ «Ÿft ¶ßÎQ§<ª­}pwÏ 1;ÓÍCØš­>Õ°i_¢1†]àÎÞÇúm^~ööÂRRR$OÏý¯_¿`‰æàÖjY³~åbº-ü£‰ßñOF¹XÎçÊ«S_‹D‹«Âb1¤ï€UE•Ý›öéœXƒKQ…GU|5o혊Þ!ÌÒ’ajÔç‰n¾ÕÂWƒd-UwzèÞ7ª¡…83|ý[¸Èý•›#Ý…w÷iJ0ÒÖz8ƒÆ]È/©ÙM Œîm(VJõäÝ-CÃrQI&èÚ4eëW>®ÔÊé{¯Ä”cÇߤèâö‰‰°+ê¢)Yw{XBÌ:¿¢ŽÐäd 8 ¥'Y½ž%€ƒïÝaµ}Åj[Ö7—œM`¿^$[I¶¿X©+u²mëƒTt¤ª££ù@Ûy0Š„Ø«WŽ”±Oý¸¾Ç\5«Bºú—¡Ü ŸÑ´÷¼-üVV±%jçTxÄÔ÷¨Bs4BÁO嘒ášÜ&ë·Ø¦ß<*Œ›Ó><sºC…÷™ ˜XΖúU+9˜£rìœHôã€ð¾“W¥+_=À¬¥×}äàÌãè,9ݬ—‘a—W÷FŸHr Ƕé™ÍÕC-ÑúqÑjzGœK§§Í[[™îÖyltaÝh)"á¬"_˜íƒ“à€ñã=Û¾~Þv±Êoî˪SÅ•OÁ66+/\8z\aBíª%YS«èþý^Q9ÎwƒÌås:Ì,§öTVz½ê£Äí[{!òëí± Åx¯CÉ<ë„Ã3]² —*ŸEq<¿}ÿåKf§z ë“hYCŒ}Å.OO¦==»ƒÎŸëæª=‰ÜñÖGP%<£9Õ:y£|—ñsžib÷¥x†  ®Xc5ÕU=Cn«“tW×zKê*}u'¼m£ƒå†W7/ŸÝ®0MÃÇ'Õ´OdÿºãL«ôôõ«KÚõ Þ̱Å>È6Û~éAéã»׫E’Ø-¯ç¯¤Dåæ ¾©å½ð±x³Ï´÷ðõF©âbõÊJ‰Üíùú%ÚÿšýG=YKʱͅÎéëð…òÞý §¿ ¥3³'h|wË "?~\ZYEý‹½Œ1¦ê¶[béÞ–-™¤V„ô5[¬ ~Çm „M¥]½Tô°ùâöuÛËM¶·×÷t|J“•zö<ësãSλµµ;Þ†„¬l-ŸS )e¦ô¥Œ}àÛçò\åDßMVus¾NäËüøùûoêœ|&ߟì®`µ¼vãááÇümŸ…KËÖé+o7Žš› 4]N3ä9Qêëû¤ý÷A¼—.åô¼B‚Ô)×òpzÿe8 G»;+Îí;M|S™ËUR®ÞU{²+Ý;Äí(E³•RçÙÍ„7×{WGÁDëmi!YÛARŠ¿ö´ÓÚÝ»]/½sžtF©h“ÏÔX_¢ø.aÀœfv½¸2>ø²íäèsúÝé©û5“ïõTuu4E„Sdxã¼Êy̾83hERBûâäC_MwŒMEžc\½ëÑQ”|“¸f*°s×ñ]S#Lû÷ŸÙ·ãò>€Äy»î1ç»K¾QÄ\`ð Au|]5Àò=wï>=l°7£&c7¹µ½ÀãQP¬&+˜|Ãë7np­fß©T8tHÿÕ{%.!¡Œ§W¸·nó8p«){éÓ›««Þ•„&Úo€}_ÉŒÄ&>Ü€¢æ-‰5GÅ̰a¡àÛÒÝv›Cm|ÚÜZEz|<"6öÎÞžž[­·Ä÷”s%‰* aoñ•M)¾%7A©R >|iDžöò£!pïú€ÄÍï•q<ñ™Ý>{*H‰}v½Ø›U8…}ïß[yû D]Ü^}¯éø*uó§Ç«$L#"„ï?–yÏ@ÿÎÃçMîkÚ ¸hŽKIóâYÒÒë6ˆÍnN‘½¥Và1ÍnØ¿cýµs¯?]ÀìÞ`±vªMõis(Uîû¯9€,:ì3Þ«Ï´º!“I—ïš!ÿŠé/í¯¦ºw“(Èò¹IŽìö‰s3LLLkjìX¿……só9à!µgù<;Û{{&3³ú]b½ðhµ[K=swä¶5ããWáw¸-s¾Èk'ίÑIìb  &­& ?aýÿ½/§rûþ§ns„$*Ó™‡„d(R¤ É‘yžR™¢L…È¥ 2”ŠR"’12EÈeŒüös¤Ûísï—S}ûôú}oÿÈñ<Ï^{­÷^kí}žµÞuæ…YÆq0$òaW¥2;G‡J.M`é‹89ÓÚæ“MÇu™ED¢z7×ÚÛËâ\†÷æËm< b®qÈå˶*á™ êË38…÷ŠÓb¤Þ?¿íà®àNsqÐðôÂo7Ç‹Šêàþ³o_ÄÞ»OR[.ëä´‰…×zù²ˆôØåùMqìb•7Þ|ìŠ à:uèšo’Fna¹•¤ycq3˜"@à­†;á̆o¢Ós›ü‚‚ò»noÀÔ¬š¿È¾\Ð>>ôÖ3qóÁ‡A–3/''rî'&Ε:ɯJÛŸpùõ½GÖž÷³a#,.Ã%r¦×„w¡9yV©£]5€$úâ…7­˜-­^zì ´cñO„íq¿¬fl\ÖÒÅåV~éDáï2vîmëv:“èPÑGó@%¶÷Õä >©b¯ìl=½áæ¢à0ðM¶Fw·*{CNk»ãšÆ¼ìGý7†/Ís; yuªMò¯Q˜˜2o!¼ï¸1Ú–V,§›[%ÌÉZf±W•öŽª°×T™™€’N] }ZTô8ÇìMmYfõ+ß¾8¡{E€ÛûŠ…ÀPœ`bBrßSN¾ãKRusïå6Õ‘†{î?¯¼$$‹:XýA5XxäÛ|ôU‹Á<ª«¶™lX‰øÆ­tUXÙz·‹À†EåoaYĪï–"¢ÚtÙ̈c‰ØÝ…8MQמöü@=ÈŽòõ¹÷?÷¹sÁS9L~n÷C¦ç±K'—ü!@=º-ÖõÃ9ÞU§ëP/­ÖJ苾”_Mh}tGæú±©®®ðÒÜe.<ǦNË ØwUlJÈξ¢®­]ô,jÌß;Û-Û¢à‚Ø¡ôH©ãîýé>¶û²Ò^¿~ –pNA)‹ËΜ).¿¾ø^^ßÀ€?333$gêÚ5Ñå<86åPÑ}uð*odó»âû÷™ÁNü˜÷€¬àU‹ñï6à‘Q‡Tíª%·ÙvW%©r-Ú'[^^¾GFÑ›…71•Ýÿ‹ªÀZZv¶?-ð<½äpÎå=XÙ‹÷¹«¶¶$4æál:X—óõ,’) 9¾¿âÓÿîÉXùžl›’#ò»Û- \ããˆ0±ùž]ÃáèÅÀ©ìܽÊè•«¹ù~¼º¡A‘ð8À—eÄ›c.åÝÚŠÈP©c^^ÂÅÙù ´w™ Ðqß®ÊE°wËO-׌–”ˆËÊŠê—°Ó§Æ2YUZa×.lÿuÚø(‰—LÉ.Œ@{§äLJL–Ÿ¿_X8ÏÍÍ-›ïàhøÅÀÀÀx‡$6mðˆºþþýó°X¬mçsfEEEK[[yssñ\i!¡…«„Õ4/ ¶dòuÔEXïÑõ P$šUÊ{¯¯ í¹¡gÛ3zªßµŸJ˜%^á(Y´qãFm^VåMÃ+˼y”ϵsˆé|ø°Í;ïöíÛm÷=¶ʤ• ”Dá5:2®ìeaeeÝ~l”u½´çÕ«†þÖׄB‡À•¹]½* px6(¨pòF,ô\Ò ]•Íq¦.¢»Ú㉷xJË@fÄÂ(LͲýy‰ñññ‡ÀœÂ32àï?| ?zôèÚÍ›Äôï\àZ·îŸ”sú… œTõKzŽŽ¸· ·H †Ú××w-11±æÓ¦°eË–…ß¾-‰D£)W®\)©¬ yÓÜ|O'Ëè~Eee‚ùÇž—HódQU­—“W#§ß]ûÇLu¨{ƒ„Ñn#9Éujë$RŒM·ùi ÄÎÞcùtË–-%AºZÃk4º÷­? â¾"aËõsWª.I'‡ü¡¬¬ü²"AY»>Ç,üüù5¾þþ©C^o;Ë/Ñ _[{,¤DÚÚ€».#™¼’‰ÄÁÇ÷켈¨(™¯¤ª*$<<Üêˆ@žmW!LC£’û®».4cd~0ù£Þ‘þ‚)ê©S§.õï8Þçáá©Êç ºüh#«þ‰U×”wîœÙ+2Ò·§Çtttôýø§ ¨¾ ýªIÞÛF»®ÆžŠòuœ¬„ÔìÒ+ª‘–Ï7DI:°½ySóèñã6°¦kóìDBÅKõ½yã-éÐÇ/-Í&~¸°·>wà« ¿”/Ó; OÛ® …î&Ëám•HL*m`á î?˜À˜³§··:ŸÏ.I"†xŒ$˜ES>x"˜4[×÷¥XQ™XÝþÖÖøª6‘3"#,…?ëT=)k—Ï£ !‘rŽ#p»fšdHâ"ÕÝîòR‰ûWj¾xº5–Ém<ðD®=OnY͆Á(êèp3UåE¯ÞìW—xttÕd&7åî^”À°åäSRRê|uW’©:úðI#á"B[ÐÓ*ý¾yúñJaÕ= ·4¨‹Ä²úÁa4K*ž7{‘Æ[QQqspllì¦UÛÂ?æ1[ÛØ°ssŸ‹¸ä|>X/­ÅªÑÛÖ€ ¨©¹ú ïRàåÌ£³¬«Ã##Û ¬õôx€ÛçÖrª w5¬Ð716K‰³µ=Z ÖÎÕ§ïUǽaPã¶àè골ÓkD´ ¥ `ëÍëîîÎÄôìÙ³Ú†¬12'T/]¼xRkZ  õÖeƒXœ±×¸=™õ}4ÞFh»”Ô¹˜˜€Ë—oæå HHì-B ìÍ­É9ñ€öV'T¡ÆÒᨉ'jÿ|µuBÉw¯Jf%&ú8¹¸<#©FFOÚ½ºãô€“Ôóº(øˆ…*GŽÄuUz¾ã˜A“^+®}sM3;¢ ƒ/"¹89Á544jòìLr,[vjíß?Ørþ €YKªoÖ ú Œø-½#.©ù¢e–#݉ººóí¼Wn ªáÝjà—Ñ­ߺui@@ÀYÇCoÇÆÇ[Ò|||š%C„Úš›™š]#ÕÔ311[CïLšl_Ü+ åQLÍ ê¥ggŸ¯KVöظñ&nwÕ3Ÿ;b­ùíöëéù]ÝK°Ç9¾ãoja;öìI^I{þíÛy( ªá®‰dçå-uàô® ª¯ ié®N¹€2^©wø0œøpqþƒ :G‡º«A¾ç–õC"¼§§'ÝyèhþƒýËÀÒð Ð*ÖÚ·¾zJk—’úBnÍކ'sà=¥³¬q°Ÿh"°­I8pInÉϳÝP\çï^1H©éT?×9)WQ“f\ye‹YÓÎ8¶‚‰ÁeÙèyͱe|;#ö§JÒV¯]ÛÒZb›E„âwŽô‚„J„Ò´7f»¬µuæþaÕ*_õÍž©©b@ê¦8¶Þ•‡E a7èD_6ñÙƒ)/{ÛO63Ûö)fÛhõ@þ“éÏ 8”ÔäÓv¸ÿô÷?ÿ®ÝÿÆûŸ(Žù–ÿ‹DÿûþÏ¿ü¿ÿù¿YvüÓ–ÿ’þþKúû/馿ÿ—Iÿ™¦÷gÿޤ¿?y^_ÚoþýÓ)¦ä™€k&àNÍÿ÷É€-íˆb[ˆ‰h‚ ÿ b¾Ÿ xölç{Ù€¡~Z öÌÆý2ÛVôÆ/ä,_ÓÉLwÔ²”f<ø?Zžÿ-‡ð7—ý'…0½Ùÿ6ÓÝ_ìOï˜úÌNu‡ÿð("€‘ˆ•'ÉD,… #Â0 ü»˜˜þ¡çëÆ‚fí~‘Óÿ™9ˆCïÈN_Jºpîð,DKŒ©’¢%zë^°>¾¦ àŸ#[£þZ/š C¢É$Š@2‰•Žcñ( œ€'"~&˜æ0½ðwp‰(8 O` ÚD"K„0h†ˆ‘)ꌋ”§·ÕÙ€Ýáþ ÐÎ>m›/òÌ‚WƬÅ^?wœ¶²#@L·sE*£èù¤¢Ph8ÆáàD Š@ÀRÐ<I&!Ñ( …„ý\·7ëX³!õïy¢7`††Q D8–Œ àH`S©h, K I0 Ô`RÜ Åü*„Î>]h6sÀ'c6bŸ_ÈWèýe¡b›™«Ce :?S ‰‚£baD¸o2A!a¨d4‹†£°dˆ%û'ÂtcA0ý‰,‹ÿŠf—¤Š”i†] j¶ØÌ˜"¿K`cbL0†]8þÍœ±9ý@€NéE€cGæ°-s†£0øÈQàHˆ8‘J!AEøT<£  vih á§Æð9ŒõÝ1FFÃT¨Á¤`QD8 ‡Ã‘ÐH2š€€ágbøÞ™^è¿Ê=Î>ç?Û³ÏÁI2f.F€=-þŸÍâéÝçî&ÅÑÑÉâáÀ÷‚!ˆdÀPÑPk) X4…&ýLÌÎa¬ïÅ,& óø$1h†!Á€öT '~Ýqþ—ãvöyÓ{Å3^Æìöà¥÷Ç·°dºŒÂéG KÀàÉ(œDF“àP_ 8pîd*E…S(pñ§Fø9Œõ½ÐÅÃÉX¨OƒAR`D2–B àˆ –ƒÃÉHÒèÒÿÿrðÎ>óÏŒ Á—1Û}|§0£ ú#)D K¤À)4GAA;©$2ÃSÐpêgxcýÂuviìlˆGì)ædˆÁyV41¦HFÐt@c'¿] ~ù9cˆQ»þ†Èh –Œ¡’pT ƒ¦Rá‹ÃB=ö¨ R&†æ0Ö/ÄÐìÒ@²´¶ ƒGÌDŒi’Q©OËÁ¯4w1jÚ:ÔÁ ðh$…§¢QT ŽD!ñP¿+hh$ û©‡:³õ a4»4ŒèœËÁ CzdDdн1éów"s?taд?´F"T°aÅ‘T‡#ƒŸ`ÛB$‘`äŸ £9Œõ a4»4ŒlìˆsEcªüN$ÍÈ3÷­)ƒþ!ŸÒ`" Ò.™Š"! ö&I @ þTŸ4ûX¿Ò'Í*ÍçÐfk´:·Ä*¿L3òÌÝ31hàAR±,‡£ q8ˆÒ€ˆ†ˆ„a"ŠHú©žicýÊ/kgçó;aŸ¿®…!f=fL›Œài³ÄÑhN0ÝòåM5è$‚þ5îaŨ©VD ìÕÉ$,‰€‚c°$ G€¸J¡’1 ÖþÔ#ß9Œõ+a5»8Æä¹#Š1E~'¢>¿ $ÏÏžµñi‘`H M ÀÐx€nGÃ@lÅ’Qdá§žiÍ>Ö÷žiQÑXˆœEÅQx<†r, m‚)X8CÞE‚<=rüʯXgŸôt4£÷3žËACc·Óº¡Ã:÷Ó+áóC¹>‘„G¢P"‹ÅP1p‚F¡ñh< Âbàß÷úÓ¯ÊÖg•b&¶¶§ÿŒ¯Óbuñ#z'¡È* ‰¥’ p<–H&PðH2 G !°$<áwÖûì²Ïè9'½3ª‹Ñ;•Ç ñx$š‚„!0‘ žH% AZ¥ g½Ï.ûŒÞQsÒ;£ºø½ƒä I&àÐx‘LŽŠ‚㈠™Lá ÔïÌÜ‘Þg—}Fïè9éQ]üÐ 4*…€B`1$EBC”DÄ7HAÁñxúwÖûì²Ïè3'½3ª‹Â;x<G¢RÑ$ GRáTž 9‡&ã(¿5Þg•}FïØ¹áA]üÐq0$Ž!€"KĈpGÄaÐ8<ƒ¡bg½Ï.ûŒÞqsÒ;£º˜³Þ¿T„ͼ…?S}0]×1SŠ@ò^à—§_D!óO—CXNn„ø¦ ƒâhK4µ ™€‡1\91]€`)­ .6þ¼{¤_K/´ùR¦ÄO°¦ðÛAå‚`4й±=ÅÔ *_ûLojL´å'Ú}æ²§¿]ÌoM1$XC5 ÐÐÅTkz™Ù*?´²£ØÐ늚f™®ùuÐëøå?Ü¾ÒÆ?›ÏžªÒw}_éòóøOé'~–.}[±1]ˆ8SbÕ>þùËtµã·×e[1¼mÛW©8½Ìpæ~‰?Ÿ÷M¥á7b’-HÒÓ„ôÓO⇪5ÁÖÊ‚ncsºy¨vMù$,€½HFsCÈFÓ†£Wñ@ÕªüÖ}ÄßRÏÿ½âç«þ¦ŠGþ°â¿_ksÈ4S­¡þ‹Z›Cžø›j ý_ÔÚ²¼ßTk˜ÿ&ÖfÏÑ~S­aÿ‹Z›C†õ›j ÷K´fd-AO¿È_'6üT ë¯s0~‚ ¿á—¾ ‘2›å¦¦Pø†¾;Ú¶ªö†jÇ?[Kü/•°N˜O—US>SÅ;]Xþçç_U1ÿÙN¥ &`aû— _W…[l¾T…ƒè¿O?Ò˜ åæ R¤,k ÅÞ˜âÀ?S½a¦—Âtü_:€gQL) o?þ£ìù›bû?˜ž–€ô×­¦¯™©SþªqÎLç¨{Î×ݦo063ü機¶|¾ËÒÜÚ˜Ù~ùD@‚¾¢f:JÌÈ÷µµÀ™ÆÐPÒKÿåSýÿÿõ JU å}lWM1´&XÍ• pþW,üŠÿÃC P°ûý—øÿ˜Â¿ðÿMÈlú;þ?VþÏüÑ'Ô5L=nJ¹° µ‰u·ùâ'ƒr•ÜWf‹®< dzzí®Rò⬠±^Èui÷üÒ¬n’-jíæ«\«còëvÖ]Ù¾A%ž¸ùÉ{Ø ×2»'E¦l½táalÃÛ3Çõ‘Ô²[oŽIÇÚ8Ù5éX}4£®öº$ùäéÓU¥1FHmÖ[·n#É}ð}ûöÅ×µÙ€"û½NÂYD8j³=‡ÆbICÝÕ‹—.uŒ\'¤åóÀ›URRô6Ô알àB *ÃEd„ï¤sÿ/Ù]F$ÕÖh C}~ïêÊy³´LŒ½w|›šË¶~}à¥]Û¨H6öª£è‰‰‰³ÁÁmêMþë°u×F3SÊ.ž”öæAç’³œ À$)8.uw°X„è%´d­¸¸ŠâãÀõÂL¶#Ùä0ß2å^ù‰Jœ ™,¨ ¨x†Z–„|ynã®tû^àñª*M²¡á²öÖV"ÄÙ—––¦¾õ¼âÓ$!9}}>ww÷‹ê›ÏFGû›ÕçÜüxQLLŒz’æÎú´4qÓWw¸òóó9áÄ? –±áaûûŠ—Ü dŽOL‘fÞ‘ªÕ–¦¿ÓÑGó_gh‘´íd›7>ÜúõnAAÁæáÞzw ›U"ç÷0ÝKÜwɲ·,]CÛ§§ç§,t¿ºz éq€‚¬¬[ƒýlÊ©“áEwîÜÙR]gzU}³ÑØ`»¦®®ò"V>AVVVÂz&çþ»#»¯V–¿ºë²„i“°p°ÚÕKAŠ~œ²JŸ<¹¨à˱OUuÅùóçËC¶htF;¼bï)‰– ªÎÎÉÑ2†qnæç?©¹u ;»ëh‹7ŠPøÇ¥ ÌÏý¸‰ññîâz7w”ÉLm7«ËRª}q;:µÌõi ­¥­MâA«®®.Ïwýøäñãǽ¾µÈp …Ž–YUUULýMͳjW7zÜßquo,fŒ”••ÅÆ¾ÏÐðêKkÖ 6h<(‚æ^áå鹨¾¸¸¸gp¬Þ¢àœ¯ï24 .TRZÂ|qpÐúÒÍ=ÊÊ^ƒ·lÞ9wü)ÜùƒQÝ]lc¾käò…óÁd"xöêúˆ!Ê%Dð…£mV­ *‘˜ÒÄO ·lv«¨È[YÁã*»ØØÙÝBC9¶UiÙó¹ôÀ™î¥”„º$&%¹íŒƒ%?m¿8Õȳݼ÷*bo¶ÎŠ»úÖÖ1ÁÁWcëlööôäôÏNK{V\ž¾Þ¤ gÕú‡}O­ÛÉ“Lž§NŸ†Š9¿4T¨·x¸ßä5s¯Ìd‡¸Þî…÷¥·l9ãÔÁÇÃã266F†q&Þ½ÛØ75šOIدì´,¿pqý;F9±›bïÆ¬^º€B¡ì31IIOÕÍ p÷ððʸX¦¢µÿN€ô¥ÌpÍjðµÒ†gQQ<Á”>¾ÄUS¯_“555ùÅÅY€öµµ¹*** >î¦/3Œ^ÔÖ.^»vmVnîF4z Óóººîô‚ÚÚCw¦>}LLN.|ä»nñj{OíJS]eé½ÑÛ¼ÆÇÒh­å»Ö¯É¹pSSK+>+K3} ïvë`ûÓÍ»vîœ×ÚÚÊs&7!áQ‹•èá¼ÕGú—Fb­Þw¨fegã_k¬¤+!êÔB ₱ƒQ@¶¶±ñ¯ë2øêUá±ññ = ñ –q¨mfÇc‚³ss5¬­þÜè3|'&¬œß—b»jRu©µo­Þ!å’S„0X°paXy \€WsrîÖ×× ‘çååÊu 8sFd…ÉÉÉÖF<^^^« €çºzz•pX5DççfüÃ*BW¾1NhhГߵKNÐÆoU×­ê]×ês¢ŽkŸvz¹À$AoÚn–¯­|ý–Ž÷Î~6PÞc®® 7„#žãéééÉŸ ö'ÖžÝuv\“…¥æ˜Ÿrê›(Þ€Ë*ÑÛ tã'[§`–½o¨QŽK™[øO¡î½lYÎ=UœöIcÙŽSÁ¥yf–ö8…áѶ9vm´$&Os©¸ñ0ª¡7ÊÈàÜË";UdÞíþí'üªI:»PŽÐ§à¿Ëï7zãŸìH”ª?cŸúªhß –Cdûçå—ŸØc ãüô)@0˜=Íı(kG8ïÄF°/»ºÓµò%åË¥Á•à¿iÉβ ›©Nëlí¢ÕÎ}wOà†[ZÚª©#V·¯Ó˜˜äN«ÛÚ†’üç^6ã;q¢µþ¹jbÉ‹ð Gsñ>±åÎËÖ*,~þ©:àJr€Ëº*~ª×•d–,MݵÏÏš¼o6Ur‹"D&†öÖ+ÇÅùª;…Pt$]ßr³i@=o'WAóàˆïöy¯ÏºL¸v6Ü95Ô[üÁ½¿Ðò¬Å•‰eH伋Qí„Ûðù'Ô;øîý•F…—/y©5±ñË‹ï,HÃ…ÐeaÊ3A®™Õ!ÁìÄä4pzJj‡PðË¡BªroOBdøîÚ=£CêÂïWöRzY—<^™öüijÈ‘ÌódÓt¡÷+çs„{“ºåùi\¦²Ä>'ÈoE YŸxÏvÆ3UÄj‡¸ºÛ…d,tcæéµKt•h|Ýd}µsÃü´ ªHQ­jǦ…’áï<<Ý´¿=¿¸ioš†ã-òÎmz<—ù3VÚmÚfè O48‡RP–¸¾½¶pè7¡ü Ž›ºÛøÉ„·Ahiúö‘3WÛ°åÇ–X©èóV——»¹»Ï³upÜó1¦ã†›‘–Þ£ô­ø—><´›™ýOáÇG[Í»éeöÚr=·ôÃê.«†ëõ­|UõoÁ]CÎL;@’Ñtx9é|Vê†lð_WW”‹"ZÍûÚ5Qà}ˆ} ·¯qüÓØ—ç{<8K&q« ƒå¬ÝóÂ%6¡, öÆÚ¤Þ‘EE W^¼Í –r1Iï;JA¿€4dɉeG WR#ëbw½sss4儉jo|òǾJO §OÃuÔªƒLxbQ¬Å`Fê)Õ>>>÷@®t.6V"«úíPm®ÅúøøxpÏd*µõY´¤{´Ì§ÑùåååÀçv¯bBq¯€2²-Wî••±rûÓÈ<ÂjQ;TT–sˆ‚ºIsŽ!víu¿3´zílõyåzÍÿRVÖj‹‚ILGI¸ÇÍ›¸()—šŠìÛúˆ6V+V)h>¼BFF&ØùàÁƒŽ..ËÚ¥ÇËÊÊâ@‚*q$$ ‰® @Šã=:êhZŸ³Âßßjd­uíÛõ‚O:FaaaÞÜ=¯î®»mß[¦QL tRiÝÕ)ì«W“« Ëþ{ßÐTÒ-Œ]°ƒ½^jé U‘"***vCrh ¦PÄÞ»bWT\ìºØÅµ¯½÷Þ bAìŠ]ÿ™[’›ä&„ýöíûøßâ²$÷ž™9sæÌ™Óf¦»öI„߀…ΰÞbÛ«WÝѻƔ«Tý†>zè¹·3ûÄÍîväšøÒåËo¿¾Ø”÷æáa@Áƒ YÃ㜿×g«¤õÆŸÈ®U+ŽéÐvÛÖ­³æÎ-ßµkWÏÚN+BªüywQWÖ‚¼«½c+80ûçVÕìj¼i_QCÝî›\ëÖ®=ðå­oŠŠ&t_w`5äç÷4ɯõ=7Ô¬[·"èû†@ï˜ÝãÀjOUÿ3&#æÀˆ˜W®wï/É]Õ*cÉæ­y΃ófk{Õ¤””ã@ÿxY7Y}d³Ä{vÖ°æ­Ø½»¡‹{{ýÝsçäWw&/õKiÇZPe‘ÿ­[·Îœ¦R©RÊ%áôõÛþý÷di#g´7,cŸ²ÿûu/ܽ«Ô8GGE Çow¾5V\Ší~áñ[b.—Ý¢Óüß?¿4sfûÈÈYÁEGaëS_?õÒì®cŽÊÎf¸¹»ÇÝÛ›Öî[a¡¢v:’›[Ñ1ûnÝ‚·O—ý#3âÅdeÏzß™1mźuŽ/®åƒÕ»Ë2ÿÉ>èÀ"ï'‹­Ú¨ˆñEÓ¨b€%†}{üóûómºõì9ÞP}"à ^ïÖŽíÛ>»ðÛ³ÂÂÚoÏI½R+þìâ ó:Žß½Ûè®-ZT¸?ò×¾›¹ó‡ÍŸ7ï7ÐÒ¶ø³c6lذyüĉ+rsëöÞ4 Ž¢ðæ¶J"Õ¶={ÖÙºu+;½H1ñÑŽ¹¯ORq¹o.wm öË© ”„°á;úå\ŒgyÏñj÷D2{˜»vȃcö,ï¾n³þE/¾HtLªuëÖ¥¾=Zo|òäɓûvÍjÝx@êà Š›Ë¤9«P0÷yÒè÷¾Û*¦¼ºsp»üò¬Y³ææ´È=zôBÿ4.PÑ%WÅâú]¿¸M™2¥fãÆU¶(TÞ~f‰ ˜ÕÉÇ¿¾;ííÊ`”½?â[Îɹ;†¸yxäMõÞß6>ÞšK³gÇ]ÙùšÛÈٹ켎hTÂÙ ;þø:öäá}@š4cÆ“þÃëOìЩÓa@ÔŒÌÌÁQ篳œlpA“¤à°7+Õý4qÂxtƒIUž”Ø–‘é«oå½aZgÚE&bLQômíµœÝgÀû¬Üõî>¿ì´pôÀW‚ ßÏõkìª êðØÇ¯ò“ƒO¸îjý”1>fýßpBû?ïÿ±zTl¬ MŠ…‡²”’¤¿çüw6_ȘùÀ7Ñ¿þŸäüw0Ž˜£ÜȱpÜI& ÿº»ò~ðö2ö÷å3ˆÜ”ÿ¨ùÑ D›(§¤jP©ý¨Ô2”KzÕÝlgÒ3ì`ÑtV­áÈ$ê†Z? “HXkCu,„pƒÃ̵F¦ `ð9<¦€)ù09r6ÈöAÊ7M]FéN‡ðJÎÔeÄgdWø­\2þüM~6<¸dTï 8Æ¥)uZëüÍnÑi®èÙë×m†~X{àÀ¯ãÍF6vq¹|ïÞÆ«S¦Lyrf‘ë¾ãOË?€%vë_€§xω“ ûÈåÏ÷ÿ¶uëÖ3gÎÌhì“}Õ %ÒD=¨(öp¨áì’±Ò[ïä¬YóÁ‹êÕ»~ûvëÚNsæÌYÀŠiX¿~ê·"åó*K=z´|9{Eû™E?J¾mŠÙs,_3|øðMѻƼ|þòe爈è\Å¢¬¬Ø¸¸¸ØØØ¶mÚ%ÞÜŠž={VÓ×±cÇ?¢7nØÐzÎÉi“&¥¾y0zöƒ·'^Î9üÐ?õͨÓùqí›;>8:µ^||üêÕ«‡ò<Úö@8GÁ“M|k7jÔ?&féÒ¥gŸ¾oݺµ‹‹ xøaçw£Ü»·/ ͆õë5Zí–¥uêÔ¹yóf#‘*¢cÇCEKÄC²ss…Í›7 ÜŸ›[ôøäœ>yÚ§çÈI娚¾šÇ“&N¬t-8-m×»57 J.Íá½ÞoÞ¼TìT)2:Úð5f@¦ËòZ³ž`´juêàÁƒ7o¦å›>~üøÞ›LŸ1#~ÛÍ¢¢¢¬áE‹t§OœïpúÅõMR¿4ÿeëÖ­Û³'=!Á#÷é±éºuë¦fžoz÷!Áñ!»ªFtî<¾ÝÃ]Ú§Ý»w?tèÐÜ#Óf†\\.‘HW?~çNô×ü£GòâÏ\ØæS¦a™fšWfNWNkÀ[“S­¹L­žù2Cñ `zQÕÛñÜE•›7œî.¿vëV«»cWæ/¯Ö±S§™M ž<©Û¬YÍãð:Òc6®íZ©R¥E׋>|¨<þÐÃÃ7ÜhÓóIùÄòK8¡R©kîÛÇ']êNE¥ÒËW®Œ{ùåÓ_9kó3Õû'+;ýú*Y±zåÄÕ«Ý;tʯ°zSÿ?ÒÞ?yy{g¯&AÜ«N(ÌúsöìÙòË«×ÝÃkvsß ù18ø0à 8©4ûÉËËkÔ¨Qfff=Võ?vü¸ˆÏ¿rõ*è°WŸÍm»MlÚ´©££cgì|˜=?&&fJÃIG­\¹==¿oÿþm¾ÔhÁÉsíÆ_ËgŽù=¯Ù¶„ó×@J-ÐÈÞžôÈRÜÎÍÙ°aðÏï_¢Yõš_¹ys׈C[·Þ°yóæwï4N‡N­«¼¹uÕž=·–柚7Å·jÕª`Hîn–”k7éðÃ^OÏf~z¾&+^&»qóæÃFÛwî‰DkVŸð¯-™Ì(~ù@ç]c;.Þ©SúÏï>ÉëV%hËòËpä³Á|ñ»=.zy›Åb1ëVi~åÂè-üYkâáæ'Õã_¹6ÿµdàæ­o2WUÿc®ë:@ÔÏŸ?ŽºvíÚ•+Q‹Ž¯¨ærfòÃQ|f?z›:dÈ ½r¸Î"í“‚«¶ü˜ZÏûZPÍ/¹ðÏ×Yé„®A+¹,/—ÔrM‡†{ç–»Ra¦`l'‡çmã.%ÌÎf¬_¡ÚQ3?ãý—ï-:ÍošÒ}Mëååf-üpjyhèvQÝeó×÷lØ;mßÜ9]Wƒž6­YÉ­Ò䛪ö‹ I—>”¯ë7){ȼëž?{ögàê*žeœ]:È7¯­,ß0~íÈiÜ}„`Ê—-W®ÅÄšõëOÚç´gî¿qU¿»9ÄŒ92`q«Víž j>¨é FÊë{`t«9:vèÒ%¬rþãÇ7bå×®Ö¼ZǶ € X°zÊ”Y»úMZ||må§wlÞü¦¨èhõ×ëå]SœG±€Üóî\§Ž\.o¾¹_xbbbÏž=‡ Û»m›6(¨ÌÄÓĵjÕ*hæº_ä¸ÍmÓÊÑSð‚çÜ|õÆgI ]²téŵë\?`лJFƒ²-7ÖÓ¬wÚØììì#GŽ,õKé²Ì¿Áà'yðgÅ:é‘Oî¿ùÿVu¨xl‘ÃöjçžèÔ#4ôD´WÈRicî®àÚµk¯½ìq)–bèõÝW§ê—ú[†Ä&øVòYrxbÖ¾¿Êî®”5ï²[µ½ºŒ]åÞßk܇íå[¯ ücîå‘‘^å#«GŸªÕAŠ¿s\µÄ=è¦Ë¨Ý»¸<è^ÝtÕÂ?¦äó ¯ÇŽœ>yrsß)Í ^‹ž?Ûœ»õëØƒ5뇥û]>²òø¡1ë³–)Í|ËŸ{de í<|ÇýVsª\©Œ?{öð€½ìÐÊ7o7êßïTËn+y3›Ý.úp¡sçJ……»Ã¦;/\Xµfý35oܸÁŒþcÖ3ϵ՚Öc'Λwv×®”.Yû¯_¼(•…¸L |=âSLÍ-ÝêÔž›“9¾föåé5ÏgŠ–Ï<úpZûÁÒJÁe&Ÿ¬©O.°«ûˆ‚+w=ê'•ùëWÖì… /L’¼õ¦ë¤j5šo–véîž™ã•WslP³ú5ûöϬTþLô.ͱ…œ±Ã¶ˆ/þ­Ú)--¸K—·7·øðѱV;ÆÅ‘#¿VpñØôe™¢9®\_ð¼}³úæœÁÑ¥pì˜xïþ£‡[ûfTnP·2#Cìš÷ôÌ™¬ýVuÍp›6­æyÏè½—ï,ab.ëäÙ}®ÞQ Û8sfÜéH«Ae¦¢¡!º¶{dßEtÉEÅIë6n¬Ó|ܯží+OÙ¾/}ÁlÖÍÇå*úÊ š¶éº»óäPÆ–¶2õÕ}+R‡Œ«¸½ºóœ Í[¹¿^íA £ËÍ<¸¼ë¢G¤¾Ýã;£ã®Z®”÷_õ}ásÝŠ£Sï¿ÿ8<öx·2wG‘y~M<´ vcçÀßÃݾ~}‘ïÆt?w¶¡_rí¥¬=T]ñéž6<"ºÃ¡…£ÃÚÆq‘‡ßïÝçqz‰¨A£Ë½sûH%fgwÓEtëÀ}õÀ¶ã.´V_êßo1Šæp8£×¼ùP×ͽ\÷ÈÈä¼cÁ2^ªQ~ÑÂúê›:Œ:uvïÜéÁ³gVž6-±jÅ}+V<}p°ì.õü2?&ŸŒ\¹æ¾S•o÷ΫI =<U;£&—›ýòÆÃÍcvöŠO6lš—Æo˜}1ÑÇçÅÖm×ìí³[“Ÿâ›ìҤɧðˆ¯]=k+ïpwò½èeàýayj¥rÄ;ÙÂyóZ¶K]ø!:!AúùSÊ«+î-* ºßõæ¯çŒ5÷ÇY7·w®¿lJù1ÕŸf¥,þð>ëÀ¯Ÿq òªU)“‹Èz10µmÂy¾Í£ë­Ô½êy—¿?²™oÚ»þ!W¤• Š 9w6sÞ!­ç³~4Ë>\¦aðým 5.rrþùëmÖϹ ¹|þ‚zUã©Ï’¶º±pêÛô»wp8Ok9Ÿ_:z[›åNb饮 XóBC—.án!Ð|ó0Ô¯÷èRûõ!ÇΫ b¨¾—³Â#†zü¸¶,àK™2¼ê?_Iê8þû‡Wwëûª(,Ú5áñ§—œëü¹]ûôæ;~éE̾ÛâY>»uxâYÿ‹·p<r¦žö()?rojóÊÕÎ2½”á¢7d\|X3ïÓýØŠVµqg~F-®tB•‹G5sd¥GÓ6ª¼·—ì/ÿîÿg—ü˜½}6Yê7øÚ¹s¯ÎŸ¿:db0—\u›m‰þìУÇç#ÞóÚÆe³·ôY2÷CÞÁ±lvìÈçV­vÊN¨î®ï·“uúêU÷ø¬ÈkrõJkœ]z~üTcØÛ ¿îìú–þ‰U­ú²`øqϾ7Ïä­âÔÿPX¸#ii§:³z®ÛS³áâ¾½®ÍZræÛ³Ž õd/¯&AAÏ?~Ìyþüà¸hzÙׯ½šzçlÛ&òKé÷ú†K“ê‚EN"Õ™}Ãv}#yõ.¿YÍ&Õë—¿3oÅÂØëò4=~Ïñ:·dò¨„Ê=¬ÿåsDÝÉGö¤d½~þ<‹—ÐøÎzWžXš=»J½¦!íŸMö«èvÏ•_Ã\œ|ô¯®å¤ 0çQ^¹3g¦þœ¨4yrÃ#qC…÷¥ÒMãÇýYM¬ÿñ]ûñÖŽ¾yǶpy×Ù‹’6̘†pºµÍzóþü—§ç½¾·ïô˜1'$Ív^¿~Ù»TyXØvÐë¯ý\&\kíÝ÷Oc_“ý|Ÿ5ýäɽ_Þ?¬¸ä˜ÿÈ{u/éÖó#? `¡3ê_ÍÉͽû†Mê˜~¿EÎ]Ú¤ `P'øëêM]ÿ_®QÏ{þ«û¯ëÕÿsäÁŸw»S6Í8Ý9wÇð±ç9ø°söá‹ÁºÝ;?ɶôÙ›òz¿éÞ¿õx3£iZÛ8FÆÓó{Úµã¶jµzU »frï«v÷ÄCÛ¶7çdÕ5^¼xñíûûóí§7Ì/(úó{Úóùõ¼4n3Â3ÄŸ½zu,9>!ÁO,f/:“w|¦Ô«BÙƒª5êÜŸ“£ŒŠŠJIÙ9gŽK»IGã†~W•ÛÒ˜¬K22F¼píZѱFjO§anšo!•I{øàÁ2òg;, Hòúõ¦®ÚlF¶³Ëª§u¯e¾k¶%×ùò]ÚfÃúôê%TÞÚ®¼ûòþ‘¯îì »@ ¼pÉ+ÀßóüfÃÞ|uwÏ–¥ƒ¯o|YPðèý` õ9 4ðÝ{öôÆ~öìÙóúÖŽNCCB« ½%EÑ)ýf4ñ«{ûæ… HÝ©[fv–üzQXÈÆô*·ª»ª±‡,Ñ7ÐŽ3Ê6›œÔÂoU¹7ïßË›Ùæƒ¼KTÈ„#!»vÿ¸z\]—9ní“õúEØO‡¢Êå˶ðÚ²”‘¾º+°xŸ7uój!9¡íT©RåøÌfÍê׿qçÎïß=ßdx6ܾiSW÷½çÎ;:µÞ‹›KÖNª:y²F[åEç/O¸¹O83]Õ«èâÖ›…÷G|«v»GÿþÖæ?»¸b‹òûÝSW´ï4tíºuÛ£î!mÚdÏ[µz5ìÛ·ª¿ó:ÿ9¼vµA æ·œŽ½7 øøî]÷}#ןqì9D%Ù·¯âsæªs±ìê{ôíÛwÀ€@0Zÿ=räÌR¿»wïÎͽvûvÿÝùK|´­Z·nݪÕê®Y?øê^©SnJᇯ^ èò^½bÉoÞ»·qíèp7FóõI¦ºiÇnšÚ°ùV?Z1GýùçŸÇŽ…dºÔÉx8èáÌ>ýÀ™™ ³²~½Øt _Ÿ>‰íBóšúêÂOnXÖfä«ÂÂﻥ-_k/4pH°7Äqå–#!+.²bvÃež8qbÙ²¦ã"SRR¢¢ææä€å F§ãçÎ [ñ¬`3f̸Ñr#011MڭݱCc³äÉ“'?~üˆÊÙÔ£­vOÒÃ1ôN#*‹ìÒeÆŠ+¦OïV1·RVQ'VƒNª€m¼Ïú垪žþ͵ýŒÚuëú^:G½oèÕ³gÏ;æÎã¹4\P0…p@dg•ÍòþÉÙO÷GÞ¿sçÎÙ³/ß埮Ü|QƒYÏ^¿¾Ÿ«Ì‚{éÒ&E—ul£vÓâk¿NsŒoþ#rŽo½ÍÏöÔ#Ê]?Îì¶Ztò’ö[´d‰ܑʋ~õäËÞ¸¹@åñãÇ 3@˜Þ¾};ïÛ\qê›ß¿¼o04*:ºðÙ³Ôœ];º>,7ý(Ø‚®ré‰YE˾‡-ÞPÐö–¦ZA³êÙÓÁ"308¯Ç´w‰oc$Âo·ÕêT.ÏÈX»bEp7 ƒóÝsäíÇ×óÃZOß=ÙqþÚ¼¾í™ ù=¯ŽöÏo÷.¼?õüòš #§}¾çV­bÅŠ²†­göêÐûFb}úÔŸz´ßVÙɱ•j¼Þqá¢E’¬ÑÝ›è]\˜Ýò{*aeo&w˜£1xýúri§p—ÆeÝÓsM>άu?s\FÆÖfåGTn#éׯ_÷îÝ/^\¶lÙ^9ýV­Ôúùíùúu¨âÛ×/Ö­[×±a&XÓI—®ºâ/½Õ³Ò¥ùƒ#ß×»ï¤ÂóVË”Êù1>>>-°´ps›Ö€W±Y‡~ýæ¾Í_Ëê³yynnX¤Çg$=pŒjp%@:¦…ï3çž ’ª .¬Z²z½ï¬Üè±¾Ç'Mo}9ó̄쥚‰‘÷®ÎkÝn*4èë«=¯~¸Üõs¸›XDgõe^;‘ázøðáôôô£cSÅ*\”ìrùBÞÐ:òÓ‚šM:DŠ8òõ­ûd/ß5âñ×p§ —òŽj>ªÅzå¦ u=®ŽÞžß°r ‡ªNó=·”ItSuSµSËÎŽÙêáàà4êHy¤Ix„ƒÃ¥ÑØÇŠ#z°ìUžCíìgZv0Ð@NN»œÓgýª>ëœ(„ý/¸¯LÕ±ÿп˜4—ü!er©3iÜ>ïGnHYº·pýÚ¥ÿ‹Y‚tñ?rK°T«ýÛBcÖãBŽˆƒÅÿ¸<Ž@ÈŸÙžHÀý7þ÷Oüx·B¢ð£–T2‰F†÷è%'<@îþnåíä·z3ìÀ&"“'3‘$ðW¤;9Æ«U:_„Ïf#~Rª7—›”ŠtWǶbj%*­¼®0ÞÏi¸“h¯-vŽ_DD É0ç ¶ÈaQŽj"+ö‚çù"»V ÆÓ5+¦oÖ²üI óEâÔ x¦”hä*ÂÕ€`%rÍQŠSkàÍãøÉckÕ ¹ q‹|BƒÛš¤j…Z㋸òü`Q»âP©5J‰Â€‚—NY"ª“$2H(ü©âexD"ÁÇž¦ÈeºDˆ?A¨Dž-r 8L$‘ ~yà—~àW¡~qƒå:/SCðEà1a^ÚD‰L‚°Y-¢«P‰´î¥TµTk/¤ÚN@û újp²sä ¾S¨S È<òŸü ?±@”†|6økD¤iV­Lg ¹)«Áwòd–R¯Ðɯ`´†ÔŸõJ•W‚?6öäм¡ªõp"ð, ߀6“XØa 9˜¹øG™ ¶Må:’ï Û€ªd 9å5ÉŒ&&-˜°+ ¡£ƒ Ñ€âÀ`ÒA*ÁŽ®³NSxŒK&Àé†óV(Ç;FБÂT- 9i’Qoˆ¦;ꀃ;;‚”,•$ˆM(;$ÒÁpJªd^¤Œm&ô#劉@ âµã‡ˆüF³«x¶ ¤‰,p„À+‘ ‡OÌ|#j”0ŸF!W FzèÒPjÑÀbY"‰ƒ­J6¬2TªÆ¯¼ƒoT(.ΠǽH|“å`£2j½|¡PÄÅ %À>JÆ™Eu€¤¨v‡$ÈbWHˆð+0tcå§øxìÇlðdj=Ìš¬Çíÿf©Úy‡¼‚‘2|&˜€©„žC_V¦'å0Ô·,•ÁTnV¦fí_¬Xk»^õ_«Vm³Ö¿R¥ú(óË „ZNU\u4VJ(§lªrJhK &•VCr ±þãUïÀ^¦? Ç5 v›^r„Šá?ŠÔ4›*6ún¹†ˆá?ŠªG€ÕšBÁbøÏ@:I"Á Ké Ä)À#+¢Å²o¦µò(3 ×–Mf$E.¦¼“"§œ.Q® G¡.°õZlØMì³×ä[8iè_Q™€‹‹wˆÐe||Lêµ †7`„Ñ$ÄI<ÙL„øÅ´4”³XAäJI”™D[ E Æö›^! Ñ&¬.K3T®L04{ÚA…éüæ4PÊe2jd |jZiÇ”(¾³&Z… LRÒ<3ÝH[”*¥–Eœ,šN¿š­šÒowž,iR·-2í`¸],‰|(~”+4Ÿ0Ù¸ª‰Ts‹ÍÁeX xJÈæ³¹Pñ„AB¡¦uIÕJž0@ˆ1·" î UK±ÔS0!µ9¨ž«`Žh$ Sä¹ Icƒ‰ -”˜ •œ(SÈä r€B]˜ÙìøxÄ Ög„;èM 4¥À‰àÙ”fp u‚\jÑ$Q&·‡èÁ¨SmWKJ&kçgfÞ¢P‘î IŠp¡¥ÆÆ•4KÇØþÒxѼ[9±´`I”&šR—ÇÃVzúuÎcJ)º©Fë$”«’ô:JAª/­&c"f[õÑ£h<悽bT'W¥ÑµÝ/2¹†ðrQa£º5•$iAò“m‡”£‰”Zø³æ@#6IHK–MAƒT&H¬ðEÑØ:?HDTB/«ØÂe×UÆÊÅx  âÀu¼•¡R…–Ø€ ˜QV:ZˆN“b:aÅÃ5ðC´uúÀÁ¿Öeé°.Í—y˜Žð_°¸½h¡£¼ÒF§´Y9+ ƒ5—£µÙjR' UéLˆd3°iš¤ s ¬4"¡4£Öë°Ecf(m<^gžh¥ôÍQ{BzéoÚbzåhE;&Vì‹M,ýTÌ4,4UQón¨­Ûˆ™ÖCÄ.͇ՋgÉc,¾ÏÂÎa¥¥î@—!¤³Ö8Ô|W½F {—¤–›yM‰Â¥[«ùG~–IȰu‰Fcp©˜'ðR58½.K¨ JÍæð ÷BY} ÕW«ï´Ö^YyLKsç£Lê€H#‡êS8ªHF!QÚ·Tc¨Éš\ó¶8Ù¨³tš®EÖÒî©k¢¹Ân²ŒsÍžR‰¤)–ˆ^pùôDµ¼ƒÕÌAUqµqÄf8™l”°nÉÆƒQAaàGE5g)°IjÒw ×7/ºêk!ÌÝ4ÀL¢`ë„=½•*ÔZCJûÿPñ6þKz,SKÿ§z ªþßï$®Ç›«N¦ïllõ3äýCý+Me؉F—Í#6ÍLV륉^WÐ z© ¡íh]b;Z׎Vdµ#Í3cN5Ö° qƒx!B•~êTRÇs´®ÜÑ…o#ʼn´„ÍÚ€1yóG‰Ô4$Š’Ê á³…bª6³>E” ô5YJlžˆt HטɦCÕ¤3Û¾h¢^ Lš§ÄŸÓ)Ž ª’BqþЪlì%±~05U­{¹l»’l¹öèË—8×Ö–OŠXœ¿¿… ô£æ˜g$Òy¶Ì9Ë´â[ZjVñÆÌÉbSyµ;~T¬3¼X?‡¨ÒC4åŒkIÉp³˜6êOò—k´:/i¢\!³"ˆM`Fç‘Õ*ë5šïè4Í%¡ÕÙSÍ;klöχެm µr¤•z´Lbâï¦(»Pý Á¬ÄÇì 3ýµ–]U–¨*3:X€IŒ™‡FÆv$Œuü ©¤ñ„Vv-`lªŠ#ÙÈq(¶+ÖyGãæÀD¹L†ªÌ–<ÃŒ'wçêNf[ñ9ômÓ4m‹ué5DÄK@í)m±Žx„ó­«8(ˆLÉÂI ‰ìÌ  åS»lè1á}2Íd›w]!‡]7nŸð‚òžpø8‚ Ap7u‹pØ4N"·…žjqÒX­ ¢©ÔÄ'+T#Ó» ’ð„üQ°yWàG !*‰“1 “‡;$H…šP¤­mv$}^f~WW®˜$ñ3ÛBé¡—Êe¤½FЃÙU¡É¦Ápgâ–¼ÉÙ!›Á ¶†…Àð}XN†Ð«P,æ· ± ž¹êD·Ÿ†Ê9‹ñ…™¿‰†?è=D•ˆ2Î-¦MÙä s†1] |C³bˆ 'fiõJ0Ò0±€uÖ°¿À¼„¹cR@=ø?Y„.ÀgfQZÃÙÖZ@‚v`fÖL\áˆXmŸÀfUßn:Ù³ '–dA·™þIúÌMÒ°é³ Î8²Ø94NÔ49j˜cØk¢pJ§ËÒ'÷d’ƲLÁR‰¥n¤H4*†}–èàn),ª ¾%ipÀz:ìƒ\•,Ó^…“Áº¤l³>øªSËð´-J€Çé±ÃÀ'-0nA­NæÛÀØ4[‹}Ápt¢‘y‰¬GUy4+8ö†ORÙ&þïûd³Ùl²}ZÒü³……±)Y‘+6;„‚•‘þY,løÄòß?M…`v¨±}Àöÿlû<6Ò>˜mÿlóÁl1…üÄGhOá!3A\“4jx½ŸB‹>ÍØj„Ýb ÏiÇì5Ĥr¯r‚›§(â ¦kB6¡a²4¹ '‚ñ€ŒDIÕJ ¡Ñ‰LÏB0 d‚[-ÉÊã4r4ÞX;‡û—j'E¨e=ÌB7V+øÏjÅ#xÛ™SºEÖƒiYÓô ëk™q€¹ºá L+;AY2µ.¬ê‰v€*µR{Aer‰½ Ä!QN6ÞªV+è¢>ì Ap(9¤@_!¶ÊÒ»5”…Ñl’ØEª‚<¾H`®ÔšôT„i3¸ –6Â/ C„&?€ØÈLSœ²C[gâ‰2îƒÁˆ—¢É†Ùô¸†ˆCÂBC­úCE„§ø5§šyì™´áMÏæ¡ì–4äÉ™mØ&"6lê®`Øu…œÖ±„;q²,ÞÆh‰¬D+Õƒ„Ä6 !ˆªÌFw;xsX\¤ª‘ITf:HÒKô%H{Ž:ïéüsë+½%dr²ÙÉDžYò>I°¨.†!.„Â4(Š!g"¬íá1“&l³ã,Ï€˜Ø<[¦…`Y=f–ÁTJ°Œ’þ‹T>ãøâ ›ÙÃ- p­0—f^‚g­ÏZ|k%ø†|N¹*Œƒ.Ö"œf#õ1 GÓü¬'`üW‡ßÌûmâ0¶Ø Â%‡)%éÝ0T¯Ó`v<Ý.‘kÅ5ÎáÚƒjjµB'OB4(ÜK&C0†Fà]šøF3ÎDÀ¼u’8 !õ:ÔÏž®IêT%ÇNZ GP†ÆKô ëéuÖOí°Ï88Z©¨¿fÛxêøšn‘aζ8ùж Êâ>´¯ '¬WÓ\]Gæo¼ÿE¢R©uÐlžþOßÿ°Ù\Êý/\ø’Ëù÷þ—âÇ¿yH×ਾ‘¡k$²g»ˆÁÃËÛ»7/ØÛ;$*éÕ9¹DC‘(¼½C»["Q§KòõöNIIa¥ðXjM‚wTwïTX&>RŽ\‘(X2Œèä5˜ªT¨´4Õp|||ðÒ,*‘?JT'A ¬:D/O`ãóÐ+*- e Ĭ `Àè^Øÿ§Eu=£Â¼Ä oºJúxõ ò V+4‚2†RO‡Ðch½0PŠÙD 1¹-+ÅcÓ Áþ RP‡F‚€ç(Š<-‘ È¾Hˆ´ÔC§ÑKuz ªõ÷Æ+ròWÀë5h<è°ÎàíL è_ ``î m"ŠêÌŸ!ú &øÙoÔ7ƒ$Éü)Ñj¤ŒACô¨&5HËô÷ÆßØWP–¦"bŒZóÒ|á%ý[Q´‘EÿÊ22@ç¿^ºD%Œvó$›jÉ+‹,ÍS®’ëºÃNÀ\V,™ÅÍ3E®’©SZ²j‰Ìïa8¶v€÷ô¤¥ÜÕUqiäQÍ//j=dN[hp_) „‹BãÔ ýu2¬ j˜˜A‚›å«`Ç_c¥j”X1£Ä3Öäîʲýü±]ŒÔ ±H.#˰|À0×xÃÞ e qo vÎ[§Áÿ´÷Æè?`€õᎿ$ÑèpâÂíq¹ƒÓÞTà`@”Ž&Õ¨S8€ÒðØi\^à´@üõ ÊSl!^€W y ¿„à+Ì“ÊÂÅ/ÖáÀι '@$Јnú{KÀ/(HWÔ£´&utÇÝáÆj´Öë!Ñ”ê5ЇÅ0ÖkªŸuCÁ‰WL•žÅc/W˜aŸÐõ÷Ö+ð%GÖ”ä\’sí¢ù?ÖO½ŠÔôµ…ÁÄz»ºÿÁ˜jÿ&ÓŸTú „Ð˽4¤”CÈ·ÆG s*zAñJÎü9©wk¤‚hÓTRCÃØ—@ÃH™LGóѵ\'Ѥ‰EÄ 3†Ý4óJ”¨dd‡¨„*vu°\ȱòl™—‰.’ä(Ð{OSŽð`zx´ônº6]¢X) â14.]Œ„7yŒ‰o³Ä3 Ívކ)ðŠ \A²·qäLêÔÀ’¤á¨?ÔA—ˆ"pyƒA6Ì$`)b‰8ˆŒrš­/Ñ,¥FÃ^EÊD÷Fƒ‘ LÚXv¬ià®|À4`¡!ÀSˆÉB2n²a[›M1bß$#X(ˆ¹„•%êÃv3,Ÿ1ƒ Sÿ#1  `S§Gll0¶TáóÑÓè·ŒXÀ©ñŒ@â%>Á²Cé $ƒxŠ-ET"pbKK¿ƒâä`¶ÊQm¤6‰`YbŠpK'[ÀÕË&U @‰‰Á‹-MýÇD±¦X2p%¦¿ô²FU¼ºXº@ ëDX.ƒF‰ŸkÓˆz bK‰‚ô2¹}t K@,u<°”ÀRÔ=­ÑLXºyÌ.1D–|À6MÐ+$›ô•:ž‹Ô ð+»¨FÀ–”pIx1›„—^ÆÓ¦iáaÊųN;x#6–§’(H¿@¼¡\ñâÎ'¶ôÍ®ùj-¹~É.íl†>c/0à’S‰SYX«Z{éaKN–Òª‹›ú\¬Q‡„²N—^\­×’ÂÈpò­Á©cMqJâ^¬9÷—¬8N)ÕÕ#5òd‰ Vkl‹e \ÉiSzôò:µF’€©>„Bc“*–àÖ‰CÀÒY4VWxN)ÕÎ{Ëe€Z6I‡ƒ”œ—Jƒ¾!e¥÷Ø»’w»ÔiËí#± yª5.0¼/9-JƒÞÛ>2R­±ÞwøÒ¶aÐ> ÂLâ-.»ô±$ /‘ äUNli"€ …Ĩä„à–N¶À.¹·¥ÐšƒÙžJØR€­N"^©a›âµ6 8ë$ê@º ’phĘ’‹‘ËaA¢`††QÁ@›D¨I–ÂBiÖH[j´c½ °Iæ¨N'W%ØæBÈ:{ªÇ.Ì x«´”6$»Þ…{xí¢jV‘&$‚çîk±í¬ÓLX:I•ž=ÚÙE=WÒðbè&*u¼ÖS"×Á‚ìöZ¢¤äS@ ÜtÃ#ûH‡®ÅPU\ʹQ×Cª•ÛK\[R²v†d%-b$éÜ£C1TýïWûÍÒè hdrøuÊq¨ËT!nÞ%ð‹Á7Gøê¬ÔK™eP\r=¹XLªX›‰Ç‰-=Ĉ”è‹#„±N” ªî¦AÉ OÈZð0øØ "[%·42S”U'„ñ½ ÓªµÃ¶†ñ9…äz˜Í,W!É„‡Ý˜&‰˜ãaO)«#ôßoÃHõªÁôã½*yÎP)s½£©òøØØ$¸_ÄJ˜ƒÀJNÿ~ó!tfyÒwž|[òž—2#n ”Hcc¡åkEF‘PPÉ]@¼ÿ~ Pš@ßwø¦ä=.eÚw„:Ffé)@¼´Ãy£P'$À3…È%Á/2³F¤ÿ~eš°0èéB¼´9L÷¿à› 7Í` äÆdþ¸ùsJž»q¯ŒV·ÎàçLS¶ÑP÷ À­Çv$§&6@Éep£“ Ee`‘'oÄÓ¦ˆ1lNî¸Á÷E˜ìãÀ[eR÷ëà0äN ÊfGrûÜñHÝrƒ€×»™ÖJìº#JÁCè‰BgxÂðÆvnÛ‚Èøþ C¢>¹û6èäðïÏÿáºýß¶rXþþýß|‘@Ä6Ûÿ-â±ÿîÿþwÿ÷ÿÁýßæ³ŽØq…tGãQ ª’¢ÿîÿwGø¿;ÂÿÝþïŽðÿ_w„ÿ»üßàÖv€ÛÒÍÿÞýàÄiY˜d ×$}œ—D§ÓÈ¡ôÀöƒ“<# 4§ª½ÛÊíPxþêFs'ÿ¤â3çYðŽCCmÑ×U´@¹ÔÜæ÷°XøIÂò—ªeh «\%Uèe(â®ÐùÑùPHk Ç'Vœ«Uë5R"ªhúš…ÅÜ@UÞXõXk&»ÝÉKuAwƒáqÄ¥]~i‚s`˜wÇ—¤¥iMôü_¯&tG`*"ÅÆÂK@bc±»pç~ʶƃ¹¤”$&²,‡o o†iG°ê0ÏŽ3€#Tq›5A¦·ùÌ5D›(“ºðB*@h®í-÷x<‰xH ÍÐ[@0_$drÙ>LŽ@ÀaryBLƒµÞ‡k÷“†)ï-qñ`Ó&G,0¹BN18ðlçÉâíZMe!–p|`ãà—+1Y_ |»êp\þÆä8ìÅ|.@œÇôó˜¾O1¸ ìÍ–4’Ñ,õ‘WÀq™B!›éSÂâ³x Î1¾°l/Àú,ä³íè³èÿ±w`Q\]^E‰c+úĈ+N/„ ¶  ±§R\vaw)’ˆŠ‰DQ°|b ¢‚QKÄŽ #–¨Ñà'j5ö†‚lŸŠùïì² ùÀÝþÍóÿOÆG†2;çÜsÞ{æÞ;gÎX•˜g’Z}ž]ufÇQ‚`*š{ܳ”œä7“&oÏb«Î 0¡} ¸]² mu6YMêTf†U« m´!u(‹Ö¡wÈ×z›Zo˸ªF[ŒÚ‚ØCЄ …,j ËJ}z›žoIaªÎ¨©BAW#HJ…â–¢ŒZ•XdROVžPu!ÃÁu„½'a`CÒ’r˜µOFWÅ!ks®6ºˆ C` \«Â0Ê’j¸œç߸ʽyH5Uaüö4nA–÷”oMšúïð8Âapå€ H…£–B(LXW¦Ã¤DÍU7ªñ,‚A€hŠTa¨%«À¤Œb5hóײÕAƒ‚Fª`ì)Ì’N”¬b oÑê¢ÕE£¥`ÐŬ°m}Õ‹·©ôz‹ê,E«0\?ïQ™†,e꽦É[¡ƒá ;p5Ší †Ê`gš¼yÛX-„ÞÅ}˜æ˜ïKk†æ‰Ž4l6T1¹1ý Mi&T®2˜Ï\1¸£`W„ -£ñ§ÖW”ìzmR b~År­´–¨úƒŸCó1ÆÏšçFýÌ«÷oÌ`%MߘƆ"Í^¨REª݇¡œçŠBH‘%p¢–ÁX£g9yãî=ø”øÔPA4HÖ Zëq»(c*~4­²VN *ÝZœk,©VM3M3XƒyÆ1Vz Çò(óñ0nÎyÝË_«7˜sÌ oÞѯh^À›-2ÕÈw‘ýx|W+Ú ºr°øFÞE5Ž’ ä:JúŒÑM55U:ÀÔPw³ÚJéõXÒꫩ五 d¾ŒVŽìÝ”ýX²w ÊV¼*S«“ÏU ù£.ot€×µ¯‘aLoŠÅ`f(ŒQ0²Å)†àDŽd«K†­õÿŠaËí•Þl-Äò0å—Ñ+¹PF"ðÖ‡c™\ÕŠa–")Œ¡xŽd–‡i\(aHB"£n–eI ›phzòK¢ÂF¼YÔ®âa4k`“eU9°Zƒé.ŽN«~íb¯4¦ëDš6¬M¦ók<óEcÏI㠈ŎºNA³,« ´ pâAg{Þ,*i0i,ƒ;YF®3î*•ÏŸL&j5ã'˜C ŽÀL §)”ƒ8œ@EœA`ÂÑ:ñ[–õ_®b5×vüYV²ÂÁ‘­´[ód]–‘åðWa¥ôE”ñtæÜcëçæ2 ¨U´Ã”Æ0’äiQåX”¡XˆFIH¼N£eYU´šršlæ,jW‘feMx“eU9xù†ÅHo37¿‘aµÑS3eZV&OC´^ezµ´1oÓú`'‰Úà‡B(ÆAËÊE5²>y6}øLïv1éSA £™\u—\r­'¥d*CÁ¼\y'i´±ïD£\Bj Œd„‚E‘D¡ bHŽB8Œ'1¾nçÉ–eUÑè)Ù†¡Ð¢nF¯[eYT‹žJu˜Á ”ž¦(ÄTJSF§´@ÃD€­…^*ÕÁ‡ÉXš‘‹A­ ØWašAœ$ÔiuŒ£H¦ê4Z–U…ܧL˜ác­Î'\Tl-ª t µº`é™tkð“g]9øIæ1. ¾–dÔJ)ê´ï²¶-—„ÚP'Ð4J¡˜Èš cÀ“‡šã%)ªN²$ꤷ6+]mCše•t¸vÅÞZ>µMÏí@–þ{Õ¢%üñÇ„Ý1þ˜«gíŽ)ÉÉÎþ¦O´«§S«‡Æ=-0·i£ÄS^l_¸páÚµk²kÖÜ*ñ´qâ³?n$/Xü~¯¶­GÎõîÒ?îÁÄ“K邤æ±QQyÑwß÷tÙ0'+>[¡øéK`ºQ cK~Ûvzõ–ŸGíëáâÂ^Ü}~{Äç¯ÊåŽd/Lí<Àý‹g›¾ÿþ~éÅÝkQ†a¾Îÿ=O+¥SßÏò¦<º="çá4äÑ£Gáj'oi6ô:S°Ò75»¤ ÐÒ¡IÛý[³‹oÞ¿? þÑíkGR?Éè}÷ì{Ï vÙ³‹3ë) VÀqÓÏš5k̦‰Ó333§OŸž”ä{#}Ïž=À1!,{õîÝ: ÉXê>%4°aÓöAAAÞyñsRSS3[jêÏgÖ}º®É®~ÿþý‹=J=)½x·´t¸“·N·9/>•Ó!ùPKǯrrržä—MLߘ{?ž<™xŠŒŒ¼‘sï—ù‹=¾y"}ÿ~¾}wÿ¿iÛ¶‹yúáÒvòdF_Ÿ^ÉÉÉ“&y,¸0è>ô›™™óÿóçÆà|÷ÈË«}FÞoµ@t|q﩯^Òä¯_?ÔðV,Q\b¯˜6}§Á„ nõÐ%AA×KJ6¬^}³´ôÕíS]O Pþè4`lk†¥×ÜÍÍí‡~íèÞèÀáÃ3Ã鸗ý~øÕÌ™ÅwîŒÔúûû?zìýü)øúiÑ'ù åÙa-çÌvusÛXÚ½ðܹØs'ØÙÙ´ÇmW·‹Þü‡ˆ5h1\"œ’»ùíâÀ€ÊÑ×÷ððÆ1[V§¤æÂí_rW¦¤4ót3fLBBBЈ÷:tH×>ʈA[7åæ6nÞŒïŒ jmúÐöpGR †hÎ| ŽV(N8©^=žÖ+##ãÖÉŒu7–ÎèÜ?˪§=)ärpÓ%Žõš$­U*<ÚŒ·刯íÏR/\¸ðìYÜ®•Ï’üý+mÁ¡C^™óŠÎ´.è»Ý³s#?4yäªï¾|ùrÌþ›[qtTùøxyÚ½˜WßC/õÿËÁ3gÎAzÒ¹‹ÎNSã¾*ÁlÙ³ÓGz*¼cŠkòªŸÄž¯¦¹’Ô¼‹ã×êHàˆ;k7ºß.H*÷b¢ZínvæØfáø¾‘Ãt[®|æÕ%µ[ÏA›‡*³•Gu ®/Z²hÑ^çs…øU]^|||ËNõ+>þh‡ƒÂ#uΜOf4Œ¸úо(UM$¿1¯ÛÑ[ïõÌG·Œ¶O*øu‡öðƒ+—È)…-ºÖëÜïÇñ;4{ÒÓ£O¾2(èÁÞ½'—OõvŠž²Âÿܦ’{»:õ£ÆX_9Þæ),Ø¿bÛ®]›oûfÎ[Ÿ}¹,.ñOñŒÊm±þÙ¦ôÑ›‹×¯™Ô|Ëh¸ø¬º³wÖG®º3&ìÝ£¾»ì•ç‚n~-O¯iît­P¡˜“Ì3íGÇ¥“ËÔÔÒ±—’èŽiY.·nŸÊ›á0µ{Z‹®]ïGQªÝ>p2¡ìæÊÑÏ¿Û4z}ëžo˜Ð7å{fþgwoome'·=ú¸³äÉ­QQí ³|NLš@uŒI~ß±E‹eii«¯¶wsqñQ*'úû_öö¹ØæÓ.ÍÙON\ÖýªŽiš‡/>£ß²ñZ2èBë :tT("vŽ2Í.cçøá‹Ê:6ó3v9°NÌEÍ]”öäÊ™uã×5NíÞ¨y~¯Ëzv€³Ž,AÏÉ|¦Uèôiýâ‰þ…gW»ý`_|°÷tlôõsÚ íý{^:x%²¨h¬·Ï‰ûwg´õí7åyJâüv//M½Õÿó'£æ”'?ºsºKŸß|‡¬n\qvþeFÃh˜¼¿3âüòòçÊÊ’ãžc¾-Wo4AuZ ÞÜ06zûÔ?¿xRŽ'|±üúõÖ׎C±¦ëæŸHœ˜2U…D[WGÖ/W„()¯E‡Ò¼—øô6%‹vy½¨¹]O/W:Ø*«ø4ÔœœjË뎴]‘^A|ÞuBHÁJÈxºx¸0¥Ýì²T–VQw…ÂÕdÅRÛì|tôëW”Âl­%É%=Ì ½pü"^ïÒFY_&ËÄ›ïˆÑ¼ú†Ÿ>¸ÞœFìGÇ0_ØS!'.Ó‘yýZ¢Õå$2V¹O<úv ža4—44…ë¹pVU½V;KxÜWy=)q¹jëòòœ—Fj{>ý龚t‰NL]ëicÜB8ir~Ù¶Àírì& Ð êw~¾8進¡—œéh7þd;û×Ḡ­Ö:~²äv·#"¨ \Ø]SW×3UÎECÐàýUõôì-,²ñR\¸$û×ÊË׳³«‘ðªs¥lÿ¢ÛKI)5®½€äÿËljËãý‚/t™L®‰ ySýû*e• .r?Bx¦* ÖquN·Ûs¨$V1¦Ôïî”lÜ÷¬J×ÇG))4ÅŵZHŸé•M çêÆüýJ»ºy÷†Ì7%û8/²»t¼[þüý›FÀÛÏéÆìÚ‡):R çÄÈ:™KQ KAIþ£Ùy{ø"OƾљÍÁ‹Þë¹°f;ì5$ò9’Kb ÜÚžµ_zbܯs'I½?Ù8œû»ž!µxâˆ9.­Ždƒ‰*ä’“Ût‡ðØçÆ$`Y2MAA Ÿåé° †ñàüB-ÑÚXÄ-OýÛsSgYÄcA,{S£Ñd —G2×wGÍø”Ú’Cy.?,*üã’Nûl`e5"æ±Ü¯¬DÂñEªŒ5zÛÿŨ±"ŸÆH:¥1+ýWíU‚²‘‘›ÜKÈ›gô[§à£Ü},ÕªØÙ!x³ÃéýÑ꺃¬¡êT¦#!“*9ÓÆ·rÔv–om>ÁNa~.‚¸››®žð¥7¯Ä¯ï úãµÏ¶æÕÓãáƒ)ϵÏóÍ•D{À¡g}î]„ŸsЙ؄„:kß_Ø0Ч‘ZZ,Öm¨ìt_È}kE&hMætÜúå›Íã^*§ÑÿãýôX(ò¯ÌãuÖCpyu~μÙÅìXÈ1;ñZ¥¸KŒE»é’›˜ø…”¨¨å,óõ\µ©¸³&„ç91îù%Ê4]gK’Úçü»Ãüòqàƒjˆ³ó¼¹½î'ÁˆB‚ÿî4^Ó ÁòÙ|6hÞàË `¹Z¥Ö;+¯;9-l#}î&¬ˆMþßÚ´@Aƒ,ïqpsww Î„“ŸéYïðËÉqÔ¬÷„»¼\àá±t¿dÎä"OøÚ©Žà àÓ°Jm­ûay—³\ƒ ºÑÿÄôùöÆØ$ —õ?B¾üËëçY¡­­° ½ôÄ“ògæjçÃÃÏCÂdB#»”Sîf„@\¿ƒk¾ß½9s†C"ÊÎ/ xÎì'%kNâÉÑ«m9e1±OŠãž††] _ܘàk¡Ö1@VuqÍ,õ-ö«¯ V;nû@©öUG¹ÚdYá }Š”ˆèËL¥á _ŸC~³œ)ròj—»Úþ!:û®`´÷-JJF6uµõåeŸœ!Y"àâQøÀFžŸ“£äìzjGGG葌,o~^s×ÃÀ`½Þv-3Æ£ƒ®è– p[rƒ>ûÉyœ¿Îz‰×vfAn\P0 °ôéí…»µÁ9†Z ™¨Ð0ÞKzŒWD~!—Ë]ž±i®‰Ñ±±±þþýÁ®™™&£þ÷lV¸Ž^ë"IHH$C YWVVVݦ2iÙƒr¨¼Ô–†K¦Ÿ vsÛV¿£¬í¡DN/ñð§.³ø\W¨RœŒd‰r9íç—”¬¬ÈÉËÿ^;ñz¼1ÆÃK¡Õj Q¯T->Ûr>˜UÒИëë+*.þÁé .xy0gnnðý»¼ñg OGÇ‹ósLjUYee#}ýO(_KK“جÿÝ1””ì"‘¸=ßù¢«‹¶wïDQ:ódÒ•”bbb°00ìéwMõé¨xy¼À)X8¼îë·=bø VÛ¼ 3—_ùå£~ÏÇ ïÑh°#q¬˜_Xh©®þ‰]ê|´ø÷ï_­F‡@çlO±PΠÃ~|~V”Ð}­›_³³·7€0 x÷—ÚžèÚîWެ--V»Bª««õ:¾+Y™š›KÔìO•-Òȶßì§ ¥EBFžNW/U­ÐN Óiõ¸9ÝHðW.Ó–z¼âÔ EÔnó¢iœÆÂÂ2µ¶–‰Z÷…† ÃåøEœ•Yèÿ³L•éߌ$dd¬'‹Õ@ºôôôJ4ê0…•6d|Š7èrþ l¬I%±J%³301DxÞžŸœž~ýõKw(•çh±e®Í»Í×W`¡í³\@½>¢TÕ¤,\3hØÈ&‘ñ¹ÓÃä儆JII𸠥¸^ëYÒp9î ¥@ø(¥N*¼`¦¯/ß''!÷ž…5]QQq¾al|ü|¥#€X\\œ/X\DX Ž‚lò‡›züSŸÛ㽫œ\¤,y³íšž÷ ƒ54s…1h¹ž©R-&ñÑááã«%o: Š·ßÀfMX[@Øñ—4¿¿‡½>MãMÍâìç˜SðA£¹6v\þü)ƒž…ebaAKTÔxºâêh‰ àOàKTó|èMUh±É¾¸§}¦äÄÄÙVOwAÁ•2m9cI- OOÏÝú[ E𯲩©if¬#[àÏ7¤mlŽA¼_ùUÔÕå%2QŠèý^lRÎ…€ÝÙ¦”a®tÊîÆ†ãÃíEzzúl¦ÙR+ψËíí-8ݸêË—/¯¾T¨644¸_ôö&p:VU±9ôáNx‹êÇ%$p€òYF ²XhT’ ¢¡)9­—ÍŸ޾ލ±W½Þf%ä>Ÿ×þs»ÿÛRbccSSµsãëê®À¯S¹]Wwv8,g«g9“ ÿÞߜ鴸]ìNPÈõzŸô!îÁ¼¹¾617Ï{l²·âK¼³ž´b¨»É™ÉûÊÓÓÓzM+SÓÐð~äÔÔÙƒ*7hù{XOÖï?ŽåJi4:˜º¹ÝV‰„b×xÞ9ùjji!ãq>Wè:ôwï¦æJ<"¦ÔCqX-êÁ[ƒ)¯`ãÔ`LPÜhBÿÁ^ÕÈóKæv­üÒ¦®®ÎËËkøo{ýŽv|ttw4GÂÀÀ /–F˜ds)Cކ†ÆÚúhtT¾2Ö;$îçOw÷½íçíúúZ–OII हÅñãÃÝ®÷Æ;ÇÁäü]¯ï9Ü_ÿ3­g È•Â!"ÊZ^^¶]ëNHJŠfyxá8)Àý¾m`jZPVVVZZÚØØ24U¦#Õì°#¯Qm2¦Ûöx[t¨“c‚n$ýÒÔÅú¢öçˆz(Ë%a zN´%ü8T ¿à%%%‘?§´” ÃÛ‹¥óÁ6,¦¬Bé¿@¥a‰ e'¨ª(*Rk7×[ÎÕæææÊÉÉÅ´}Jærìï—”èS8Ø5x0[36::ÛæÍ7Q™mðxÃÉÉ †8>…óåË?B¡%ïBfBñÑÎNbf査èèd´´Rˆ{à øÀ¾Œ4”ow?Õ„… öÅÑõ&¶Z))*«Vü–ÕÒò<œogûZ__¯ÝâFAA‘˜¨]oãKÜ t(‘%¤QBO/£²òa3 5áÐðj$±â ¤x„„Jâââ‹‹‹ ²988¼¼¼¢î¶,²è™(gÎLõŒe»¬Ûb£¢¢âã]V~£Œ„††Jæ°ùóçO€ƒrdhhhi|ÞøèèÕ.'ú»?ÚÚž²DÃQÁOQQñy=‘vŸŸ;ø.¶yËlTNà ÀØnüé& ¹­./'„_%0RWü8N}jEËéù1—„”T À1}ýÕ…&ç8j5ÀLUUUMMw€œîïï7S$P:³Å£ô\{𠠀ؓ’’‚^)¬0tœ  øÅ–ÉUø5¾Ô““‹«¨¨\*OSzºçÑááâùàuán¶GWb‚Ìk¦¬¨W«·TVö"ä”Þ&èUØ! ÕPM"×ýÙ: R¦Ýò9j=ð-«å¬ÐBÎâß,¼£œ€”ÿWÉ`%úõj$BŸ‰3UI+ %äO¨:ë/»…¤‚×Ö&àó@žmgE¼WÒ¯ºFT½È“þ/dÙ:YñAe0Í^~Jo 3•¿,`k[´·¯ìÏT‘ɤÚcffΖfÍf$Ò¾$|ö´ëR ]…»4?^ÚA—Á`3äQfJŽ›ktìѨ«©ÜÜ;îM*Ñî«~鋈ˆé‚ Ë:hQÂEÐÀ¬åù1©å>í2`dH¼þ±£"¶Ðy¡21õÁ¾ðã_¡’nìT<æÂÅÕf׳Ÿ11¬?±5&Ù?ØÝÁ"j3þT A*|—P(ÿ^";3ó÷ÐŒŽŽŽŠŠ3¨îñèV¹Í¨ºãð£?ŒJ'¨aD&ÈMnôåI§PŽ|X¿^€NDR€¬+_|TPBø3ß`OFA±¦<22’‘‘q.ô&jäXåÅËœžÄ°¬˜z0žœ¼< b˜UÓo>é#Ö©RÇòʪ¨¤qØ-Dc#ã²—Ôíeo†F&í°3*l&à‡Î|ïÖâVüTB6Jª¦:øÁ÷ïß LÓx=A ŸÕBг³³¨"ªÝÞd ²A€£ÇËí=/Þ8WÃ@Eò\³¡Á5QÿËÜçÇŠ^÷.#œ؆FFN»ãj!/^ý÷Z€ NV66FƒÀ뎗Aoר|õuuO E´žª4ì# CGGoö~â%&ÏÙæ|¤-DòÁñïÐÐÕÕUŠÉäqë+¢Ý•‰ˆ è<<-?~¼ÙegeeegWÝñ[<‰áØa€øXûwbó[M¨ç+¾—P´1›­6½³³4ìåññŸ¡¡¼šñßÛP!t `‰þ”€>»»»KŠV\Âã⢢¢ÐÐþlÖ‹(0ÔW«ô»‚KµšÞÓ/ç¥yas:Ç÷&ü×þ=E\ˆ2ˆvww±2û¨˜SNIóóg­õ’´e¤²”¢ì+g$]ûߊlšýQ|ðÕÔÔDDDD¡þÝo¤¿=??¯×,ÍÊ"ZðClrÜ“óðòÒÓ“Gã’W!(ÌÏh¾§ ¿JíqZÛˆ"Ö¡þð9áÛ·—  ‚Ï·K!&0TTTøá¢Îè£Uâ×#Yl@×ZËXè«TT ij **Jrà2ñêüZ)—”¬¦¡æ¼8\hU)sJáÚ+ŸÉƒ®D|6>q‹©Òé/=V ÇJ˜RG–ÛÃ¥}qáóå+/Ò†Èàcùùss6ró¼^7Q #ÄüDïï?÷ºÎ ÇÿÎãöÞq'sîü-Tö›ÿœ‹óö1WêX”¬â:%UpŽ ]Ù™´Vçà ~ÂôAx˜O»éÅ?œŸ¼6Çò8¸S}ˆƒˆD7ß`*Qû¿C|~váWª³Êqw' ôÞ4ÊÏ$« …ÿHoóyªÔ !Ûº$FBP0G‡ï‹m(¹‰}ƒ:‚¥µ•×£ZohN¾Iv©ÕÝΘœxÇØðûöÂSWnmü´´¡­­WßHPñ*>t^ÜF~14l6ó³·o;½y1"EÜ•¤Š3ÒÒ´Rª5¶9À%‰ò4 FˆòxUÁÏo×ðãú Æ“uò…I`gg' •1¼—(€q±—:"~„$gçÁš7Íã®–,ïú`.ª¸8³Î:¤¯ïL»~•xFÄöDÑ@‚1Û­/4÷5³¹r\*Ïœ˜º¡¾~%­Ößð~Frïxc~@‰…U3>¡49¡42"§¬òξT™ )€I¿ØjÒæy{¯q93r:Y4Ù®u>>Huò~ôz.ëˆúìì8d#ÏÛË‘¬ý¶§Gr”\¤¤>ø¸'÷™ø¾ §–ö™ª3êˆq¥‰ÕÕÓ£65íAŽÊ­VO&bæà?C|K˜é6 ~„×P()iÀÅæ²V2…;ÎÏ™‰ñÇÍ»‚™H‚Œ|V;¹ÍÍO¼7ÐÄU¦<_½¢sáþ$ebVûYZûääËÊßãÕUy2éý*· Uš’X}‚wüŸžoÚ‹)Kny=LÚ6àF$€ÉiˆŠ>œnt%&F…¬Ÿïp½ÆÄ§}ùrp­§­°@ür¶„Ÿ0™ÅÜ[S“2FdjåÞu‰ÀË„nD7]»½ýdoRx"]HøF,_RTOoF†ï¥‘‘*ü¾G<ŽJ2ÇÇ¿1y}qi´ÔÔw7Æw L4{ª;ð¿p]^@Äb}öÞ¹•« Yª±$ ÈËÉq»Ž fª± äÉ,e8Õ¢Á£ã‹ÝV…°aß_^Æt°fgN[,‚ׇÏYMUiFÊîÆœÐ¥?Q{•ñ¾ÈOq¤0F^u×pSY9EøùTNN ¨¨^ L=n·Ûo‰^->h|‚‚¾}¾1'¦id”3‹_ö½3±ëc½æ`‚vT鬆¬ìhË%eƒq•4œòUÄvàÏ2¾î3›døe»ÕZ”QE*qúá<¤ùùË:­÷ëËí{lÖ­›v3J^:lVÅÛÃvYƆ@àŒ_ëüœ*³³ñ|p›ýúÊóñªÍ6êññÕ0zýóóH[ D؆b; N~ÓPÑÛ£_þ ó"äÄDèÅaåõ¢þyž#_@‘¾’QPðy ´ôG߆dòô;5ArJ;ÑðCÇÛꩉ"‰ê Ñg,0Ά^ZØ4«Y>0»Iê¸?}Ùäêë«ðx»÷-gã{y¹&L÷§xù’dcÃãåËZ.„.õ ýñ¯¯FÉgÜwÇSžh?Iá{’EXC…É(*ÂÇ?ÌÈÎVµL¤~~Úâ¾FEI¬q‡ŒMÂ×Úu(OÆVzg¤#“¢¡€±]¿÷–„”6‰½â¨Ò0TòúáæÌ™¹ZGò%$‚_Æf{øÂǧFÝÆÂràw‡‚ÐQ#.Ò\{ÆR­etJ÷\ݡے¢ûïCún—Ì.¶è"yóMWWAm*Šðùôõšµ%‰‰£ax*ãã?==¤N‰0ó|ó¶"‹‹›í·< tš]ž¶åbýùܲP]O‰g*«4µhâh ”¨Æe``ÿóx8(ˆnª8ÈãÓùöÜW"î1»pVÿú¸¤ €æT\}úÕx÷‹W¨QåîW5¡8t01ÆQÔ˜\®ÂMNQ4&Z31T2Ƴtè¨0…K­-JT9WGmsN7×')œ5Z­?S´Ø º '<5ï;Ÿæª{Û{ ø*ƃ‰{ò‹µprÒýˆí£¼ š8J¨#Ð[ëÕ=Ę>èÍÜ^¬iÔÈëW©íMÉ ÀÃà"õu qÄ:TšùJ§|~‹PDb`Û°ÿ­,ç×`é\,MØóâ¬â QÙ)lGlj: Ûf'Ë‚‚‚Ò"óÀè±T2»l, ELüÔÑÌ—ÎçÛÚpòïÌŒÄäGOå²Üh5]æÛ?Ó@/@¡€Öµü4‚ ñ¹'''_¿¿f¯(.®7„?us`f’hÅÂ<.)åùtcok>ŒÓìs7gÍ01M|r¸`! 6Çݹ“¦^§õ§Õ<{Áig8«¥zþ‚ùp:íT)ÏÓAvóÑ̘˜–VNX)?*&¯žõ’jupJT”_IIBŽáÖÙåÒ£±—WEƒ«èËoêæ\/Ä rý @¸‹T¾5…F­æúÙ7míZ++âº1®@EµZr ^ëÝ#ïÃñ.€`^Ž~‘‘¤ oþ­DJ×nÔjb¥d½LHѪJ¡Î𮥯±ÚnK®w·LGÂÞ¡¿ÿ±EÈÒzÉóþšÀ¡¿«kÃýªûåK­±qÅ‹ Œ ÃV_Gm¨ðß" ú52âûÓ‡+X…<ئÆïÍžüβÚ„ÏÏè“;;ã:àŠUmÝæë ¢¢Užah QlÏ«‘±O_¬‹‡ûùE­t@Ï/ OðÚâbt‡ª˜šäJ³U_126äÄãðç +äjrÇ߯ôôæ÷íì0ó5=P´ùØE cxŠgú¦¦ØhU&C©;áÆêVª5»ûSe9p$È`Rwç¦t]üØ¿K5<šÓ¬Ûº¦çàæξò>ˈ| ¶'W9š£%oÏÙ»ál°´ò¤ªÔ“Û#-°ßy?ÉÉ]õx#"4ªkæqÑb]ÞØŸäH„'§À ã ‘SPPk[MÕ–ÌNW4yx„mn`Œà¡ÿ¡y΢c»ƒ™‘¼ì2;—1ÀbÖ„Ë•ÿa ”¾“¶o’ûµÓBxœ&x\›^ÇËû8lÚjêVo^‰£ÀÓ3Át"?¯÷,¡OI\ZJ¹ø=(r;œ¤£X.;ƒå‹½²m¤Ï—@%ÍÌ8Jˆ©nnÕxyž¾õ½:2Å{ûÇãPܱÃÀÔÔn€A*e´¦S¥¡þ‚ ·ÆC‹£x?û#Ú Cää4›§yI"£¢~oÌyz„y=jJ:Ëòý[ì —«ÐG® °°¬;ulóœA½ŽÚÆ&‚¿ƒ`F~í8šÉ~I>F;/ÝåŸ×׊8IoßRLOBw¾“øÅGŸ¢Ž¤ªö Àº>’U,àÏzs—öt[óã0=^¢Ú¥ÏÁ~.ñY×ÍáH8DZ2ùýÏÄÛ°ÃtþÍç\ÂKæÅ)ÎD|ýjh>Æe»û­«L@@…ŠR–5v@oF0ÐT÷Éêï`„Çã¨"åJÊ<.ò½ëiˆÏ&ÒXÁª+1…éÌxÁ¦F]·ªºÕ¯¶»"sÞ>̽ɖ&=‡s¿”ÁäsÆ¿BQ÷Ù| Ž\|ŠCTcp9vÁLyÏawŠCŽs¾YkQaeÁÚHób¯ï`¿ñößÙaþaW‰vAÀwÿ™×Þæ*°QÝÞbkÔ²wwÓŽü{¼ùý­!9ÖìZâ¤ïßÿ‚Ôºxß*2üÁ*xÚûå¿• ñÒ ÜÀA¹_'ƒÀ¥…ì×Þ^ã>¯¼^Éå Ó(ž çK¼¿Ù*Råp ïí6:›(Úƒ7€å•€¤c,¯d Rk6:Ÿ«[zó¾>!^?¿‚Á©ËÉ2œi,“ÿüе¹9  ­–#[H6T&ÉÿVß^‡Ë$¢Ÿ¯v¹7ú¿(ø-úòLyVM-áÔ½€íÉI4ì=%•¡`¹…œÙ³óüT2.–ëi¨”pjhjJ0#y¾<+¸<=œëzY›—Z½Ít$Ñ µâ+ñå3¬øXšÏjáø"[ƒ7V »›ýZTE¡`ø¢0£Ï‰Šõí›ð3£¥ù;1YY2ˆù”ÎCƒ8pX`0쳪êýý=÷ùÛ¡½©ã¨ç:ïÁ¡+êuÊZúŠ@Ø-¶Ì $9»ôÇãÕYåVSR­˪µÔ8˜ç887- 'h›±D„¤ ÛÃCCàMƒød€27ÌÐÛKáÊÓª_žËüöûú¤ISKp±ùFÌYöéw¥ðlB’óýÙPZ.®õ—ª›Ùš-0|Tßç1Àˆ\ìNŽS<ÈÎÚHì¹^ àÍú2Ä>£ÓcÇ 1Ù²øŠxœ7D2||/÷³ÍbñÛ[¤$Ž1T4¾N*ÎÛöf×€ÅVÄl.2ô( ”gÊW>ééíô'(¿Æœ®±˜ñ+Õåæ 70ÜHáÚ’PÈjÉËÏžnäÙÙ!póXzx죣³ƒ®>0þ#ÃÉF"Kd™Î–4P;£iô'‚¨ª ¦¦Â&&«¥ZÿÒ`Òá󺞆k–V·‘{ýOßö3 Öñß{=o£ötÈ ëú­rÊtæ3:Þõ"ï±ãv‡âp9ló;"úI@øù@-5Sâ0šÊ/ÅP MÏZñ:úþüò«²ËóíÛÈädê†Ç‹J­¦ß^&¦ò¼[Q¢SØmW/æDGd57*ùŸ‚Íý¶šmwÛ÷>ãïwɄӵÍw[\÷='£w––„8³¾Ìè+¨ªª&s»F’'ra†;ÇúPMBø‘ó¾u?ÔÒ½«Ž°ða½ís‚yÅÝd©5`"¶à‡»m89ïàn`¼…Œ]mº3MÀ÷Ùâô¼ŸG”¢'‹OLÌN •D­•#Ï;>P[!Á»xžw{~ˆ$_‘𓥓çÃ-‚ŽNSG@™††õ›×˜ð_õq_ôaBe#‡¼ƒâ_¥TÉÓ®1{S¨àïbh`=Œ×Åf6«ÚXí.)¹YiøÖ×w+Oú`¼TK¢â×£ÍX&ôõ»ÌÎÑ$‹©²´ñª Õ'EÚR¯áN$2&&ûD8$\“k­l”ç50Qßv2õ™óo3FÜ\c½Ë2]ÛþÊYWA@Öå5ƒë©=õ«ëéúZO¸„«ì¯c¸ØQÐ’Ðíëë{G£ŽŽ‡§¥ªÊîq}¬ÕäTc9KøçÏÛµnÊŸ`:ã¥G? ÀãââŠaõ¬mlm¥­œvM|H{ú6ôDYºhèïïÏOñ¸g3–+%Ï@GWv‚Iòã‡ÇíyApppS—ããß.«Åû±Ì(äg”¹ ILú»ŽÏ3[ñEÔÒÒ9<* ?üêlˆoo{Ûag”„“S}<ªK?…Ï»Õ|ªtvvV[[ÛÐÐpü†H4 Èpm .f柜 êê»kkYEEEyyuºí~••Œhhh~„ŽŽKÍ® _ ŸoÃéÇR«æÉ@CûûøøÔ׳ûòzÞf÷çç¯Ã¢šCPÈó`!×ká|´šõ6ܯKtÚë–¼$ÄÅÅ%%›mV>ÉÊÊnÄúúú5ävaöùsðv¢³¾þêÙÖ¿Ÿ&¶dÊÉÕ•÷ù¶¸è§O¿;Ù¬æãSS¥Q:ﮎBCCÍ-øQ:c¨THeR©wÇ~ÿö# ƒH$‹“ðm?†#Bþ„ýúŽ•5i®F£Ùn#8¨$83 G™¡¸CòÎþöv¤\?ŸúÀ½‹á_^BŠþpÈø²=ÝÝݹ¹¹à„™ƒÜ×åµ±)œŽ™ÒF††‘ÄâR&V, óþù9ä?°qd)))çMÍÌnW£ˆÉ¤“ãÓÒdþ­s¸ÃBBF.kB´×=ù lhm>%ÒÕÍ[Uµç´üËBòHÇ~ -9·gköšœàý¶Ç Ðsí·kjúsÃß¼÷Ó­zJQŽˆŽVh€“ësÃéìéqwsøpUÖö8:1ACK[šŸo²ÐÈ"€’ð&(8‚(áDÊ0©7¥LlLD“1ë.­|`p‚Á‰o›ÇM§˜”Ôó+x+E*eùLe:m¥%9­­¼ŽšöööBÜÄ$$ÐjŠ› ÖÏwÆ@­"ðJn”100\^^*2m ‘Èyó‹í·ƒ„†¦¤çg\œ»«ëó’vŽÍMù-­£ý¹Ì¶jÿ_ŸËS¦ýÿé¹þë÷ïò<ëEEÑÄ7'k¢`ËVºi8=;›ššš˜Áëø.ŠxmuÕ ´lv¶……Çþ4ƒ\¾"*8 »ÑõÌÈÓÓSJj Åý*ØM£Bÿ[FFFcãí|ƒ}AŒ€f‹[ @   ' µPäf$yébœÿÛÃýŒ°–ÖÞþüKöOwζVu¼y¦Jô¹š–¬æ]„Ùi-õþÇ$f3ó7»Ü(µµµCi|Þ×Çzm^ÏoƦ$3KÛÚÚº¸Ôÿ;a׌á‹èvsºÑG‡ˆ] °å´Bì¿"1âýï ‘~Wç ±Zͳü‰8??___ý÷ò¥ÜÖÅù¹Ñ@bLJ &æd££¹\>(KZJÊÙ&g:”ÖÖVaaaЪ˜ÂÏoû¡‘ºâu;Ï—Iãà:Þ²p “Ì.Ø÷K]ÌÄõ¯½_¿:Ýz£H²DBŸñÁÉérºâ  ¡”<¶o†FŠÿ¬‰‚\;ŸÝz÷ÕRÙþ¤eW«§÷ÉÍ‹F"?ëq 4s%Ì/.-L c=á =½½½ã'Ïo8ý´ŠÃFp»Ñ÷®°Ž²'sq±Å]O§ÉiàJcy!vSIq7œ6,éä·oßwwwAuVÑ’“§655…äx»rÎ|.–³B†ìFÆ_Û $þùwW’ ÞaGf:×à­=eCÕ¢š˜ØŸd{x¿ë“*QC++ÚÝB€=£Ùâ:­ LLEÜ_±P”Â(@ź¹¹eÄüü)E ¿ÚtÔZÔ4÷·Ïffô?bùd´6óž×8VÞb¿„P¸ü»Eë)-íþã3jl‰¾ËòMEÌ/F-Llll»n@ز4122æ7uvwÃÂÁ)ô(äI_œž6z=¸ÅhÝîæ–•¥ÅÆŠ8jËÊÚ-òìÊF}w  Á¸Jw}ö‘,üŽfLýÔÝ÷nÆ€{ÏNNÄedÚ<ïjD½¼xyéèÂû6@»•ªU}' üýû·[êùÓ‘åÎhÎÎÎÎP*‹Ù8(™"æüйˆˆˆï‹¸ÿkERhþùKè%æø\ rÈ/Ùxiš¥Ä\óç)xµTŽŽ¾|¹½½mbf6˜ÄVÖÜœÌé½üË—Õrö=ÖK8¸p¶ÁùùæÚ|J‚¸ØØÛÛ[±Â¢"...ï‡ÛšÏ}Ö{µHo’¿, —hÔy=ܲ8îom‰â1݇FpLRG“D”BûHTnx‡÷ »Ø,h½;ŠÈÎÁɉ c{ºÞË9+$*zµ?Såyw #Ðìr¢ßøv|ü5fÈà€‘Éö©[„Ÿ”âZH†ZË'Ujeö‹=]ÞçÛû~À¼G8ÿŸëYæ.Êåâ±0èáj¾+©¨ÔýUDy‹^g·ñÙ MÊÙùjtTÞpumíYÏçHÄ®B…YY[cr¿´Ø¥Mâêh©¬Â0fÐûfã4ôóKÌfy8¯ø4]7Joèp03AR.Ó.ÉÈÐ33›Õ Hg¢HEakaaá-=fÍ÷‹‡;SZìÍÿ^ p¥Üh1WKÃÂrt9À&ç£E­JƒW( ­›OÎÎ’¸œiP¢I¥€ÚZ=»Nˆ?ß(êŽyù/–@õ,?…Ú¸„$ÒýÓRªÎb´))§S+ÀËPUùž)ë*6ög IfFÆÛƒº¥Í$Q˜.TxR&ãÁl#Ù7¸ì²>|hŸœ|†ZZÚñ®£]*.›å_;cy¡ÿ¶gHÑÔ¤~€#·?þ€0,IBÚŠËË­Û<¶Öý‘Ü<:0€­Æ|ú²…ÒU¨)Ô̪˜`SØRRbidD*@#œ€•õùŽ,·’EdÇŠd<ý i¼žÁ¡¡Já‹•Ÿ·b¨‘±…Š‘yWìÑÓgÚ·Cº 5š»Yb_ ,49[KKŽ(¤¤¤Ä"!!ƒ~p=ÍÎÉÉy~g¼²;öcs'a¬‰È³PåOW%Ÿ˜¸Î$àŠyÅßäñ{L FÚNU »Û‡,µèoËJ29þ-ò©úõß?®,ß&o½Ôúð ù›÷ϯ¨ƒF@…©p¿²òööFC‹„KÀéh&>{s{±×„&ì\VARÓÀ#€B¥\ü,¶|  ½nwòÀ±´ÚͪÈÒ¤z'}îÁl±”´k¶UÒ³³Ñ߃í:íïù³àሤdfa ¼T¨TÔ¨¡|èqwy0ÁÖ÷õy¦ÆÀS–já`àÜõ–ÎùBW1œ@¯£tpØ®~}cyÚ¿R½n3ÎŽëˆ$Ú!·f§aß°ëñ×ÌͰ/œYÀQ‘¿í$,¬|‘¤^»_V|ïéz³wzʆÁAL‘_‚æèØTY9~zŠÍù*šL&— ƈ‚ŠÊýîÒÒÄdûd­g'Løù¶s„ÌË—$S×D­ïÆòZžÇ0 *ŸL2žß¡·¸xõþ¾²¹ùôþþT&í3ŸõÝiΧçpu+Tq‘> £~ú ŽRl:Ö¨¡.m¶¨Ó¦\¬îØ3<ì0S©+=a…õm®ŽONv»¤pVC.ÒÒ(÷äáʲÑiÂdF>±=’ÈT&ÕaoQË~¾I]½òНàÔÞ‹ªy@¨÷×'øøø@kçrartbó/¦s²0³áq:lg@/È=/âh¯µ ˜¶ðëۈʎèASn!çM#„÷ëÒ/Ñæé^ð´•üü™(ËÕøX&£7Å‹>Ät³T(ðT”_eRѹ½îˆƒŽZÇp2›R´ê ^?ÑÒ ÉËÏ&²³YºRØé§ ¨º‘ã]׿Œ .õ.+ëRE1:*Æ=¥š#I±ŽÖ‡ØâDÂÀêjd\¤$â DœÁwè?­ËMFŽKµ.ê5‘P^øÊ’‹GIJy6}-ny¨]l™¢Ör;o€ëê<’B§ó8³ä­o°Îc¾ª§×ûéƒZ‹ $ÿMZ=ÄîÅDT|® 22mÝd¸:fHIäÂý`Ë*ЈÓ˜âQ††\ÎÚ‹>}†OM1;ÛÄâÇ7/üíì_wtX75ìN˜KáÇõ99ÕŠIj²š)–môÉ„¾ërçÔXÿée„°Žø… Ðô±II5QQú¡l3Ôll{iÞâ?:x¼ÃzÐP`Ú·^_H¸œm~¹`MáÚ+VcŠ(u-! '[¶™¾½ÅnlÜÇBDŒ¹ØëÑim®W*Â\ëyjÕm¯˜ŸÿÄÐý†ðÙü¡NP·>9yH«iW¥ÍdÀ¨Ê¸¿\½É)Ù%ÀýæÔ3çƒ*°BÓ1©¨^¾”­«œ)nq×ÂÀxªBèë—äûø›Š}À¶Êä$ΧO¨×÷³¤ufÕfxÂ"ÙlŸ^y…%˥ǭ›3d.G³¹Ìo/ÒthƒþÝ$ÓhÓîWsÔÓSóòªØÅÚJ“ACÓQWKP6íÕ¯¨µNÓ7¬ J4ÒÚÈEÄ!MLØ™`ïÌ—ã xÃ0×r—ØöÔÐPvw'S¼ØÀ-.-íôü$õúˆ„îôÏ—Önõ8Z³´Ú yw §ÙÒ8>6¦ì0’8`$?LFøK|ÿ[ÝØ(ïýLH‡Þó»­Ýœœ»su2Äý[”|ÇÚÚl—Z»d×»Txj&뀎NN¾¬ÿ÷Ô‹0ö:¡»½½øÛCrŸxnW»§Ç‡°Ì Õçs(È÷"Í·ƒÙ“øk¨PŒÿEó“KèØG}WmO^û3î)œ5çÕ)ôÈJ±yååÅ2i5†¬îýñÚMNRÑB ©ÇÇs!ïÒò£DªfŠ}|z¥¥Y¶HRSEi5]ĤúŒªÔiܯX?‹¹48ìÀ;_µ× t`6Ømìü1>= ææ¶ððØ7KÒx1ìñüÚ„Ò¬Ryd¬Ó¹µž™¹Z©°P­Õåa™ŸÔ¨°ÔˆÛ-4ægfžbUšFûçæRÆðGWÏð=Y´¹žuU|qÎÍ›*¿¬`äj²:9ñ²ß|P|÷xª··¬ë”bð¼ZËgwòCÉù3 £óá2€½ƒ¦–°]w©°uh%–2Æ(b„×}—û ÊkZ@;$ŠD'IQk²[,ÿ’ÆEšë3“ìÏ FxÎh{ùR«¤É£¦²23m)ðÚ…O°còù¶ÿ¡×öXÞÇ bˆš!äÇå­ãál\EÅÐþ~c‰¾ãyz=†Ð³¤k¸Ç‡)CcïÒÒ—/K4Š„0Î §ËW~?Üyðñ–Ù­½`íÕ+±¹‰êh{Ï|çW •LŸ–¢b«ËɱZUñnŠø BoÐUôè¹ þÄ„˜¯ssÆa¹œ4)Q"`P¬øˆŽ^ïÑÊONŒÎúvŽ­cZµ©ba±-­A·}d~¾ŒJ%ÌÖ©Ô›DG\\Xw9ÍýªûbgLïÌ(€VË¡mgòçùñðÀ½ÖÖ‹‘Äâ:KzLÆê£ ˆvÐAŽh ô9¹ÙyÞÕÕóüxææEX8uzª`ÐA88æl†â®Þ{“ñ<î¥3ÓuŽEÑaÒq-Tî·Ì=Ct«'kû;cp´¬òÂ9›4vud4# Åɉ'—~TP°|z'"º456¶=«$£¥µqºAVeô×û°,7—:öñhÞum;¸¼Üb,WœHô²¸®EV ŸËÉþáÖDJjô2¸,Y,=ä}˜€5d÷ì ãÈFCú eâ‡{~gf56" ð¸cGß\Û†ÕßÍM]ïN!Eï|øÁùJ0ïÝÔB*À. bb꽩!—Ùj݄֫æYø ûÝt &©Ÿï†æf­\ŸûvÆô"?BÐþ}Ö"ÒÒrÄû@fêšÎ«¬\½½X ÇOqß’þ:°I¥’:éþ¯&…+—›Œå"ü4"Æ‚“áÏÝ» q(äNqª'J ™—Åk‚)öócäªÎŃåö¥®.š‡‹)ûÒÒѤ åzò}±4»­}ÃZ44\p/µ´Úx9?~4ìÃìIå íĆ6=ãà  Z(W:ß7=_öe/S É/ °žY½î!`*Õrç5ø»7¥3áþŽ„ä[WÈÁ}LŠçI‹­f3³—ÅP¦•WÒP„pÏPè»Nš“ ”2-Œü\Íì &ÚÁ¡~É¥^Ó+І†ÍnGúF¹xh(ô7ý MÏé4]È3¦!Û‹ŽÞAÆ  Þ‹ Ê›!°,¬ŽdYô"f”,ì.·Ï@AE‡´š7mt‡ÞÒiU©RÃxî|ºÕϱ½‹­p–Ë ©«]bÀ‡“Á¿–¨­œu¹¿P*êÖl¬†wo… KÓ*˜çæšt=\è‹8ç—–~ÖÒqÏhy¹|®gËD@@¼ÅydÒªÆ~«Z!¯y±ùÆÄ²…‚|›“ÅÏT:ÄøE]øñ L=-³Šx¾§í<™o=áCу6*¥ÜZÌ~„@ñ=œ+\}ŸÏ)þQ÷¥'f¡©,!a†\çØû`ÁYíêrüºÏžR÷EedùÏ %EƒÀeƒkGå"ašÕbe »¢"'öŠÌ³˜ ?BÂtr3¼tF˜o"y þîyyk¶Ýä¢|ò‰h"º o=³»úz|³¾r:†µKõ^~”5ÂÏ,+;QÚµÂÅ}£ÓâFWÒ>8¨ŒŒ¿ïàT{{öÚË+î+Åi4†óŒô¢)Ucӓǵ ®;ª`>äÍ[ŠdQ!=Í:nû‚²’¥ B/”žŒ ùäû3±¯½½<{½c˜m,O¯½ÖÒ>$ùp߀“‹­² 2üh4çbg‡¤Ê/,ô[Žì/.„'ºéµ»-{pæÝ%j“S£…— 4?J³ÔyiŒÔùmW{»Ð§ÑQ`µ_M<8d§‚‚Hn¯›•U=Î=ðŸpÜ“[¢ôòr§ÉâPäß.Ø ‘íæØÌüüË_¾Ûëëšàš È¿‘!60*/ïÖ£m;MuMò±°°l.v« á2££í½nMZZÒ†9'ˆ9\ïNÖ‚t<1°ÞÅ9®†—’ƒ1ò{·Có?ñÿ׿1XÎÖÏÏÿ '¸Ó6Õä.t»:ÖÂ’’£A7Õ¤Èüü˜©°°rNBrÕQ\ˆÞI¬ÜËpž!ùªìjj1ZJ)©ƒµoϕߜïâN\zNéȃ¿ka·Y®-Ü-'ðRýhà"Iz”ºhXçÜôöÓytY…aþ ¿ ="¨·ç. \¦tôÅ-@öpNñh8¹!–mØ—ËíÙè|iqVcNW¬fßÚÜ\1dLAù4= ±Å—ŠiZÚ¯[ ß^ƒê¯PLo!ž>‡ ô`²Ç¡/{ÉÖàãU¿ˆ„)rØu’12¦g¯C+¯µë_h­ééexÞ]Æq9õs9î>Þßðµyj|—…ÚFë…œ#<÷¼Xœé,strrðæ&R3ôÎDµ)io/—Ÿ¿V¾”ýÝž¼ÂVc¹ ~²ÊʉlG×½Ñ²ŽˆÇpU¨ú„}@Fƒñ'k5æC—(Ü–‰¯ Cs0ƒ ¤ØqÏoÎô›¡ß¸ëÆån~{í½P¹a¦ °Ä¦‰e*,lÉëbÓ;ÄGF«yÂõ‚^H×êE:×sØàÁi2F²4TMòrGO²­¿Oœ*³æ¶7ºð‡s (¶wFry}]bÁ §1ÙáÛýB0܃íóäû+¨ó|„*£2ÒÖv.=W·ÙÁdq.§ýÃÉ’©ß:¸¼û_,ŠI®)˜±YHIɉ‰7þD^wv&ëxkY™äS¤š@-û @`|íÌ P@˜â‰ŠVýþ=Ü:g…òµ±ñïÕ]«+ÓqGÀdƒ}8ÂØ´Æ<Çõ%%}dª¹o Î+`+‘ >MóNǹå3¼§–èkYò¬s¹9-péå4šC€´!?ŒwšÊ»P=”çàX†'ÁîÎj¸)9+ÃG“%?Ñ…B׬€eD9ü…§™ƒ‰ HŸûOW„—‚âO6¯Íw.Ä7ÌžC3v5RÇ ß~ÅšRS¤±ìÙ4º|z 1¢%ÌJçbÔûÿTïÇÅWØAüÅ¿¶«ÔÆ÷x}ßý{gìI&ž®ÃýÊ©XýB\vX ÿ­dÔ{îø6Ÿþç¸ØÀQ°Ð 0Z[þùCÆákïTûY|¦Æa§³¬5øü”SIV–ÈÅ›QÍöH;¼íñÔý¦Òàr¿Ãùȩͳªºú1ZÆ‹p—ƒõ5¬¼C,Ä9B~íÏøOF§}rñbØ•œ\‘ÇÇ».[[¹9,û-ü…º#@vqËyýɦNO´*S'æSßoo´ ¥]NSc¯uó-µ•]]=U54ØoEÞd$¤z†\ÏR0LƉânú¡ ôl¤¤&GÚCÇÇ戴 ‡0›Û±oþ¼Më‹ckv‘ãv>¬è ß÷ÃåÂL‹QúžiòåË\*O¤þ+\1ŽøŸs€ã—,¶ìj?½®‡ƒ ?¦§^u½ Ç?Hàœ0x¸ áåÍÛ97k—±µ«”ü<«gY²·ç~ùôHw¹Þë¥Ç8SgÕÒèyW£únôÍ& áÀ•Ô.ùŸ…¦¸p^&£þÀ%/ Û3#]OϤª³ Ï;«šZ„Â7#㊈ˆZÎçùΪӯQƒ:ÏèLllT ÇdáÞdãô[ñs>øµßÏÄxEÅŸ¹2l®ÈiÙIŒ]ׇ –€=]ì7Ã=i¿¦ÆÇÏMOξ~ ë±çÝ~‹¯K¯-ÿÌÄ¿ÞfÃl­2>®t܇!Á.úÆûùÍß^0)(\õÇ ¼Fh¼lGC]¼Ñ´EàÍ-þÙ­CßQ§'²KŸÏSHD™ï¼ª„5º¹Ðò/ÿël¨í]]…UÑ@NC-ú¾ bø"r»wªQ÷boW=99ÌãÎRÑÞîéæfbÉþ¨®hÉm™ßAîíÓ\Þv¸l˜Ÿ Ð>Db$ðß2­Ì‹ââãý MN Ö:;zÂn€$³Û÷ßʳ+âú¡B—ƒCÞº- Éx,—O:HSn9 ¦Fˆ”!a¿¼ü]rO96úz¥ÓÃ5;\:[µ±Å¼KA婱^„t¯ëéb‰FYw(N•éX2‰®.u©¬T«þxûbÚÎ.»õ*Ö``LzžËù*Tä°B^"!¼¼Î’ÛÓã™»+{.ÎøààSÉͶ¿ŸÖ76üü’ë,í;(ÌÛ +`£FˆnÙ–„00&JµvSÎÒ¡!íBñª‚ŸiNO 7û9PÑÐÖ—u}œ©We55¯êäz{€V[ònSÕyJ;bjjT¥ÓF'#Ýìì4Ÿd¥¢ü[5ƒ[ •ÖÌMÁy+áîžp}yë׉-V˜™9 ·"è´éSpEÛØØXS7iáa’D-"eÁæÂl%C0Î>¢–ÕHHÈVD¤¥¶6¸¨(54VüS©»|Á8“Ñ2ÞË’IN6í/šÊZù–‰ÄæÙÝÎr?Pîz*(L5»ºIKiz074¼KbCœ™¹04´„÷K'gt;//k­T’ê!Rí¥7%lÎ"Ä+ö]753ã<Ö`Üߟ‡Dý×-½Íj±¹ÁaG¾9+ÂÄ.KÄÕÁ¡ù`ŸZEüENVV—1ÁET~Éó]JÄñæQÛÒ5|{˜±+†ŒÀܬöEmxròßr½ï•AQQV‚R¤U"Éo?ÇöÅj59!‘ CA Ûp‹v»žw˜@¼ò^S9‚eee¥µµ\ýõ»Ù4ž;B¦ªþnk]шP[ì#H`_O¨_k §€ QÉö¶ ´t1„§}‚—ê!ó¿¿9Œ`M·¸A ‘>Ø(ØÏèó¡Ò HPIIA}–«ŠßŸžœüßoX¬æß¿~}N¦û~ ï5Dþ#¿P8þˆ––÷lÓUw¦ð¥LšW‹×ƒäŸB¨ÈÈï­sš¦¦;³5æwè Bgš<+Ùº¿0©ËC‚z‰ÿPúÓ‡ÁìÑ Ê ‹%«PŽªAu¾Øço±GXÌ(*¢"$ä—‘±^ÿ &^SS3}™ŸŸ/‚ù–¦0Õé`–dwûŠzõŸÖŒŒƒÞè@Oˆz™Ù\`‘½#V %÷¬ª^^\\ø9Ã#!I‹‹ÿíí•““;9;ë¨%#%m¬¯GgCÂã$~>#ýpyÅHHðnMƒøûª„¢Ñ{{z:d9´]W«õþêúDGCíàáá*€ç(Ðççëׯ÷ì/¿Ð¿Ÿ«µÄa2z*¶yN(&)ùãÛ·o¹¹›¹RIœœœå¡Þ7y`*¹¹F&&䵯îîw›Iϯ~^¨4” ˆŒ|ëGˆŽS_„DŒƒ£SoÅõÉÓ³¥±‘38ÓÑÑ‘——W($ø5ñ<œJ©&+ëäøø|½í œÚ“Å÷ÛÛÛp|žÏââUUDѽ"""Þï®Ô¦‘œœœö&K:Xk««É©¨ÚÜ. ·ÄÝ[ù¡¾º.ßœ!KI9×Ô:]^ч q…åJ§¸Ý_ÛÖZÎÉ¢V¨‰†ý ~⪟¶p ÌÉÉ .)±TTD÷#liùë_á|¤­¥¥åèxA×zÙÒÒ¢‘Ü|Ë•ÞÜò¼ÝÍKMþB‡¶‰MLäs¿Ôó|°Ôñöd }dã#‰Búáz%€Àh09!-MGVÖGkõw-<£ñ`rõ’‘‘‘t"óN’uk;«ÕtyFI 5µ(éT÷«CG‡ì±Î…‘Û§Çr™Å™9$aaჃƒi$n+++ò`íf—“Ó¾çè-uºmö'¨ŠE“É€±ÕŽ Ü^ìÑÐÐÌÎ΂ QÑѵÙmü͗˪úíTo¿öý;lt¯Üùß*eee\¤¼ÿÄŽ°b³¨¢b`ØæNÇ›çàM7È ×ójÁùlkHTŽ™“S]Jj`q_xäüÜ1¡ÿ¡ ]xd,O§§«KII‰„„$!!áüèÕóÓ„ÿ|¢nUe%..î‹/»z‹Ú PÍ[uƒ¡ê)¨‹Õjv“k†w'Úâ~züâÂ%ü*o¬®¬ŒyÉÎÄ}•ÅFDížû¼RÀ⋚Vpæ4§Át¨¥3|ß&²+tç_ôï,yÝ…Šde’7:쌂ùe w…XëàD*¬t?Q¯­­µcOn{zLz. jÌÏ9‹MÎÈÂrÎÎW‚H<Çž¾/øõ’Bqè\]îG—ŒÛÙQÅ5wvv ßÀ±³» ¥ò€"  ÇwtvÞú™ßÐpÓ€Ü0ôYJJ%»NE(kì_Þsu´”7b’ÿ«³Qç¿gÍnbaÁåB/¢ã ¤ÇHÛm'˜µ=˜õÆ«Yyww®#Q:gwPþ ’ݬveyvWÏËÎŽÞÖ»ÛÉ´;á +ÈËSSS+—¨óü&ôü¹¶4…KÞOxEdÉŒ†³úlİþ¾–’öööI¬–³Ž{.i] zc¹RPPP ë>þ<½åÉæ¡“‰P½"eaÑÑà"§++Ôò³e¾Îwéy›4+K.“ÊÀn»Ze:êG(f](ù8µðdÀ˜Ð±/V|Ç’ 鵕6Œ~—Ae™¦+ç—îð©Rž¹:kcà’\à^BžL¯ef~\ôÎÛ™öonæÆÃÃÛ·’V3O„ŽŽns…Þ,¨¨8¾;Q$øéÓãý™ eL0¡Ø§O~II8#™êm^<—§û3LÙïš?`½¯ŽQ×G‡ ïrºÞ[ ÷<÷ö¹¹»É À: \§&&6ÜLPHQÇò’°±Í´Û5×EI­©Oz"“““›šÜ˜S¤ëêêÒ˜Œ¥åååÍÌvïoÎ\Ã- Îo/ÌŸŒ _¹ƒQ¾|ùrš"11Q»ÅÄåÏ/T(SWÂh =Q¾Ò«Ì"á²ÓÛoJr¦h+*®†kŽ%òzºikk;9]þ¤P¸<˜ x¼ÛEº:Iåq!~ð¼oÜYYX.j¡:9Ýη5ð‹”K(éèÈÔ¼4áÛ¨&A^ûúúþþMäv=m÷‡kúÆ ö»¾¾e‘Âåü~t~~Þ3„Ũÿ=Â7»“UáÃnP)-[ârõú<&=áK5Õós]è$yÃ>~ü¨¨¤”’’"‡.õù³¼’RMe宓Sq7'/okcãíãÃÝää$¼ßùe0wËÉjff&ˆ×ÎXž÷I×»…UÜ~?ªIvtèN( M3àE]ìŒþ{-@4Šƒ““ÕB£’‚ÂX?5%åg%%Œ¹0B1“üŒŒ @#ºº„uÖ« ù€t¾¾¾èß>eØÌ½SzCÀ›<Ç–>‡411ÁCç]ߨˆJ_hÅGÛäèâRx)–Fƒ“‹«é›˜("""OKDD X©NŒƒÛVÛ5CCCê­C'¨pwè ˆ’’TccûÈHÙ7o„D‘áY¹¹¤ ¡ûeõµ¬$$9 ŠN\\I¼¶«_Ýv¡ðyýx.úü¬,"ròÀÏ9…EEeš ¨8Ÿ›m‘ŒøôÞI2èš³@H¨‡ê·½½…ºo«­ZQÁpù~©ÿG¼b û%µN«¦¢¨§zy •`, Ñý#}X`V sösÿ˜·ËoH8‚Ïç…ûþ½ª†††œ\…ùTi†FI‰N Ö„ìöþ>5-m«ÍÊïïˆ8ÇaÂÊÔ:¼@𺙫 Ø´¦fÈÂ~³ã.õÕœžŸ'³©ñ±Úù(T8d?÷Áíá6áôô¸–¸$V4 W]ŸÜ=:Óyžº§ëGFg.å½O¸íÍI²DfW±õ´ …iÀ·oNÖw꺻ºN`þ Z±{ó"ãœ;9%NNfIIޝo\ÓE‹G“bac¯â½|þ`²¯/  N<ï§==½¼XR´ÔÕÓb””e#å f*{çêšäÈwß3¤ kÒÀ[ÿdܽ²wÅ:|öôdŸe¼—ÄÑI;ÌŽ;>«ÎÆËëBW\`šÊ}ÃEMCG×cdOMãè篵0Oz^¤›•Ÿï4x–“ƒH›Þ)!šœâ‰‚-‹‚œIKˇõÞ$™¯ óH5[Tw9&>þÍ~ ÉKXÿ’ÌLf÷Ú†˜¤9˜ze<ÐUžË4y¼6º ? ?êÒ« ; ×tu9¾|ɾ_44)ð~ù‘R’Ý?pDG¦¦Ø½î­†(¤Â6ë›æööôLò9bcX$N=­Ÿéåå±q2;¤øPùyfŽ…ã…‡mb¶Dˆe3+Ó©êr-Ñ¿S§£°z ¿tLLλKfœ`9åI›«Ã¤ììdã¡`Yôš*¦ãóê‹ãò ù &¦¾Í®ÁmíÁñŸv+¿}cÒéßëx‰sº³~ëZ=¦ÑT–ò~¸ý•/×÷¨ïòó§G<ÃÚ“ÛÞMI:a^qñùñŠ¥R>ÂEaa®ãm³«B{ Bi>90zd"Hɶº»r³›•㹦FûÌW‹Õ6e¥PBÞ¥Fc”iÍ:Žfµ¤¬l»äl9³£2ZÄëË:¡E3ÔwÂÂ"£šóÌG é*È7YoAOIÓQÒè{’¯ê_é@|Ì®³n{܈Ë^Öº9+^D§ækãde%¢ `ãjÒ”’rÝ”œoˆ--Es¹“Ï"7ûr6€L3=3UšRáݶåÓ¶âùÐ8Þ±·Hj),ìj}$Þvƒ´¿ìq²h>êçw¿Þ+2Uj‰Î mD¯ºäé|·ÚÕCL,€âøfoth…wIéã{œ$,´èÈTmFÀõ]]ÇÆ0-æy¼4—×ìo'KþÝà 9w¹¯ÿ5u%9T!ù1R:YµÂ šVêùn!<€+¹Zá6o™<•±Uì… ’J‰½*:ØÎNƒî.C%%–P<.³K {cc*¨›¥TžHïû!¥ÕN•©ÿ7ËÝ¡çéém²èOØXÂ(£-î\ÔÔ_ði~üþ­.Ú#xo‰©«yýúŒ€?ôúboÈù X·‚=Ky¨ÿ¾tKCGmý]Ü7ÃéÝÝ¿@g¹¹Í¦Zf¤C¢Qy=<‡ª«º»aÅÿ²ÇÀ»_ÎƒŠ³^œ{P¾ fmµö7A4*"ª9dc\WÖM;¸;˜FNñçÔVá,,63vר]qa!<­pˆš(ÜÚÉš_|üÎÎäÍM$ìÐÝ}‹} Ó(¹´w¿íí©¼XLŸ_~é C§ç$jPÅѼD,‡Tª…Çšˆ˜tû^Ý£˜ØŸÍ8%ÙˆªŠ‘&¯ï_K”†1%Zîz;ò<îÜ0ûÊÚ‹ñx G±—Vãù+ÒÒ˜‹‹Ñ¼ãè£\ YcE[ƒ×JÔ'zÒâóóçÊ—mdQƒ²³‰ÓâëS„>ÞÜhæ›°»OÙ—K1AÑVÄÊ&û 0^UUUCVV0Oåæ$&æ¤Çõp0a`T”è6Ûµî÷8æ ‰ò’’Ý i‘‰2óWG{ÑQvåò0Œj¶·  $Ùê^%&BëôÉ~ýü™—Zý<)l0?*ªqR6¤‹4/En(í'“ïËd1GZTT~ÆFOøÔBóLïÒÓëY±L²ê‡ÍD†âRÊ]G9¹ƒéЬùyRþï4øRRi§ÆiRK öø‹b1Ðp™ÞO<Â#:ÞZ‡,o"Ji'Ûý22 ¨T¤¹\l^1/D³G¨öáæQ1“\Y ËÙÒ˜žž›žþ]ºŒ‚ºØÔòàŠÁùöŠª5ÀœÜ\ô/_h^c¢*s§üü™¡¥¨Èåv~ÌaOœR’œL 7oæF®¨â­YÌ&%5q|,¼AK³4 sµ-û6Û5îúiè Ý)ЖO×kzïƒYYМdÒÅ9çX}åÖ‹‡Z)©‹&ïâNRSYçïÛeá_¹Úl§Œ—Ÿ‹<ƒÅö¿Õö6ô÷qOÇVmödösµôÐС,‚a(bņ¯l¼™¤M”.Ë+ª°r"ïÍ×¼Lh »o"YŸOu§?Ó‚æ ²63×xó†ys°æô¼:}$ÐÇ›ƒ™µ–FÛ#Jè“Õâ›N·]%eVW×”ÂK/ûH[JE^Öm^žDWëœl±¼O‰yX`ûʉˆÆ–ÚÊòFòÁø_cNƒº8 fHØŸ©B'(s¿Ü7NR’4éh!¨//¯¸Ï{á¸'jõÃÒ÷ÀZûvª+ósÔP¡W=Zôü5jRLŸ8G‹­ÑpÜÆQ½¨9­jÙÛÛ¾®ŽÚ¶u”;·³c*‘%w‚T¢橳T:2¢áräoau˜Ÿo‚nÉ‘:m$´{ÙÓ=–'\¤œ’Ä5uºÞ«t]»¿l3 :‚!¡¢‹…e@õ{‹Kôáı<)ÅVÕÐ'""èt7Yî÷o&¯–z¾~Ïus•âö˜ÆÁ$P•à#Ï‹e™~ø6íhB@KeÚjošÅTA!Xr`<'ç"(ˆ„Z& Sß’” 7%9zF,{ûÛè^íªM''WÅq£O%¸'Àë*µqq¨-§j|©Çº<˜+ÛÛU/ã¾3tlؘïq©f¢§7°[/T²B\ìÏbãç·LLÔÊîþõÞ÷Ðoˆ'Gßü-0°´|¢ýmcøÛ·7'ïŒÂÝr ÒŽÿôãžšŠÐ~¦US3$-ìѰ[ä6o`xÄjÙx¿, m`ðëë«F—€±…³­.*•Ô$¦žÕõޘζ¾v|Œ‹ÂÖÖ‘,7w™óÓD±{¾LøÒÌLÛÉâŽÇÇ*­“0áï?ãØnïžâT·#¦FsÐNàà_ÕŒûÙ™(ªLE¥éhÉʦÄ]ɸ:((pùºµ³ÖÊÀ’£‹,4Á¢ö‰á}ñÖPšýá|oqéc~—Ùd1¯²ÝRtaçÃõ¶Dem÷¹Ò$ÛSRCiïÊÔ­&©Ïò”ßô„NGF”ÍÍ6ââ¾áá±|G]ŽÃd³˜!^Èd,D&!½È`…ëÛÊéF¹5¥ƒæýÈaÛ‹ ÐüÊQeùeP úóhON¾p)ø–´üÖ‚úafX6Ú=äCí=Âb;êïžðƒ‚‚s §šœ—^š“¼Óçt¡'%^ûƒíìlÞüåízWÈj Õgb¯TýoxP/`)+kc]¬ËLáK˜LrUê°¦»“·D"#¡P9‹‰Uäåãts °QO¾}c]\ðt¦”•¦iÌqps”’bzaZBI‰­ e‡ÏýgÍFÖÝpy¼”H—Vr€wW¢x|­ýSÎŒ‹ç44 ÁòŠý3àÜÔ¨ZPpÃÀ€ek«¦¥E½_g"1’°†—ØùçùÅùýÅõ‰áâb9fV=…Ú¥Zç²­a–hØ šŸ>vfAg'_îî®.šëÞë÷ùD""Ö¸Œ™x>ŒØ¨–[_OîìÄŇÏZZº61þóI æãÇQ?¿Òƒ¥¶_CÖ˜‹ðT<`p[¹’ ¤.V¡í‰4Ýó Ñ]Fö¸xÜÜÏð¿’LÌ•ëÝåÞøø‚ê–(¡ô|%гóÞ—žØ‚‚vkj_~}ÄôäÄk7§]f7Ýzª@ƒï¦LMò|9Ü1ÝÛ6¹—”vq>j)_Y¥uOâI·áH¼ŒŒ=â ¹B¡ðC&Mû›35ãîÉ7Ýe %%;~ª¢ —èG¨  ôÍLw²ÇŠ–ZKþöeŽ™Ÿžíî>„n:ý`eÊJLËõB#œà1É1±÷õð_­^a»¼—.§Ù6# ûrﯳÞ-V¼RVN(;RƒƒóvŒšøy°Ös BKÝ—Ä࿹¢ÇäÝŠ8OÞ=•%znØ7øýkñÉqy;&–’ÊT¥ëÙè¬tê¯ì ˜e¥¥p%Iq̇O.-•¼¼À—£š´aaaG¾‘Ñ켺†F¥„WWYFÆÁbËüúú¼û•°ˆ€I^¿›•°åòûñCž m ÈÃî†(Ÿ"> ª"‹™Ê*'§Ûw´´j€"4>‘³²2‘l‹þpmm4’Òœï-–ðc#"–Û­êáÐé,X·âtP½oHz»ºvAÅíîRºˆïarËJ‡6%&†«©mÌwýªPzÓÐW¦ª±§/ŒHºWêÇñÅ£§§¼¼4P#}q$Ÿ?#0 ÈÕÔì–ð ©v>ÚŤáÔ³*õ¼9…/ÈÚ–rrj(;ÂÒÐxyGÂX×ÍÌ\ÝÕe(,”“÷ã½€“m Åoo’Šrr쓉ÐH·µëË‘ŽT f£É¾ùúÆ™2”¬¶öü”žHÜWÐã«,{ËF£ 1––ZðCúË““Ó1¦½ø>KÍ2Ÿÿõ‚" Å>\7XÙ·`1ûöãg£² æ5tÌZqN3äÅæ‚ã ž/–%î'«[•WÞ|64TÐÔT–”qs jl<!LM­ÞE¯EÜãÙYì¹oö'Lî]Å ‘Æ~¡rcd_«ižÍ2‘È“Å.êªy'(Û›C-<¶èÁ¾»Å*ðñaGE@ ´îŠ‚ˆ¨¤/®MV)f“!ðŸ8Zšúb(ý_z4ÌܤB5¹+ÄÛÜüKg\GÊ`ße“|2&CÛãN‰¿Î­­íúÅÿåPSM³×0Ÿ/·Lóæ.CÁûZb±b¹¸¾ÞjgT=X]uZÄÑK«×¯]—Ç#8øÈˆˆ…ÅÁ_Œûß^?p¥õ÷W~{í=×8±Úú$ì¥Ã»·‘µîÎÙ¡¡‹;cEÙûs¨}:±á5¤æçO6¥º’Ø0880¬ÑÑ«Tq10H$ú*ÖzöTÕBñø´§úPâõU‰‡vw×_wWKNôÝáSŽNµççÕ9#ù.¤®Úm´'»œuKÊ¿kàýÐßMˆÍ$rp{ÊØúYSå ))/oSU´©µõòŽi“KEË÷ïÙÊ É|i  å¦Ê¬“yñ‚K^H—]ž5ÕºWÖg¸µizâÓ©>oP˜Ü˜»I¤<î«Ûý™k|üç@>0Oææ-¶kÝþ,aD½ÔP¢Flgì“«k“”ÿ²PõÍ ü77±ÉÉì#ôÌxšk[xûöªssÍTãÛ~lM¾ß/ʈÿÁå\9m–••š4#~_®Úö¨¯>Û”7,”à3;ÛètÖìzFòó[ &ñä*Ñëñù;Åŧýý£³³˜Ù¢¦ Xš;Ä´ÿ‡i’ÿÄ7þ*§²Òtå÷R¾âE9½w¾ÐQnqq{ßÞÏÆF;Õø§|¹Ž¤òÄ$®£Å°ÐcBé0fûÜçÁ45ÕÀ8ò˜YÚØÞôN«î]¦ÂÖ»Û-Ãu†ÙÓ“BRâÇm#&íÌZ…G캻¿U¦úÄ4~壟H¹j²JÙg}}Æ£ÿ·M¢Víþ pâ gFv¶Í™‘O?&ÚkeíÅí ÇÏR¡oeøjÉH7u±j•ÿÀbFFNº9³$^¥«þñcT8D–Óréð»3µOÛïßê|mˆ¢á·nn³«xaþn&âjŽ[€ç¥G ßÀJÈÉ-þ{]´÷ëñµð(ê ФããÞV"À‰Ñü.&!‘7U;˜ŸOsü­¢jÅ£ÃÁkgþ˜˜8e§ÿ…IA~‘’’²?Å|gƒ%òÚòe€DðÓ¤‹Ë4 ¹å²¢ÇcÝþo¯ÃÓ© Ž +ð?ÉËJk)Œ%§h=nJq8õ¬÷ïgbV¨Ï†-O?ù׬82Ó£‡Làÿ0HûøÀí¿û™ `“>¯øç”H¿qr%ôÅ4»_}àtcò˜Í ¡+S(,\/§ÉúPw¨$(¨„˜º›[oà[ƒw切×úh< b¾ù†‘•þ3T5+«=p'ß¿«•Æþé„FÝûð¡ac|`¨†yNSÎìЍÚÚɬ‘|Ôs;ˆ {;;i}}i7·W Åìž NŠö\XX ›£Õ-X{†ŽF×z^²Yê«ï.ã…ü²Û[éø`í7ß(#ÜÛ4‚Ôÿ¼Q+PÝô%A²6|h§±1¶¾¾„~ EÍÖ6%m)gtô–HÔÃÀRNUηS½“¸4¹±¡‰®LžŸô`YžÀAãëG xy‹êë¥/-ìÁLEEŸµ5gEÛ‘ÃÂé´yr­Pˆ&ÅZÁ #.È79¿ä-É''xûÒÅô‰’ÎZRìOðºîlfã6dd¯­ÄÓ¼Ì>'—¡™›kÌÏ{%Ò \­v ¡al¿¢zý Qêâ4Ñ庼®²æçé3ç|$¢Ø_`ü te2­_µU±kÆLkªÁÅm–ÿ¤šÅsåwߣ*Ÿ;+5Þ¼5ˆ‡¶v:ÆFG›xþW}–¿?Åúióäÿ©û08í}sú0šCÆfí4[‹he@Üx}½¿¼¼§X8;Sežî“§CX‰ø1NÁþˆ}Ÿ&º¶Šixü«¤ú* sõBS\Rr²û‘¶€}^ÕOwµ–ñû9¼îOÖœ!lÑ…š×çãWR’’ˆK•— „÷™wƒ”O&ÈÉ•…›9:ˆ &K}}swºÑæ|Æíl5pcCD4ó|÷DçïP¯Ã÷^T¸æŽÈ÷ªÈ˜P}wýÙ––$ž-š¿þ9žQrò?2‰ëû;¦¯àµiµÜ*‡B;ZTJ“AG•Jš»Cð±ò‹ ‚}ó¿î9–’«L½JMe&ÃYà Ã[)Ó×_yõK߉ ŒËóöq4)ÉUB(@t^@ŸÇ¦“"Ï hÊ`v¦_4'T‡†òþ¤üŒ†çy–ËMAAFJ-]Öý™¶ÑP-Ðcñ]DÙòŠãE¿~Q59!¿qøÍ…i*«1·ºfŸ8°ÉoÅã¢ú+áñѳ޼¼’ð!b…àøŽå†HU©Pþ¥C¿EbÒÖW¹ÿãn ñ$´¯;‡£(ÜDYÌLUÔTEû MÈ ¥â{í/%vÆ&ºÜN2ßkPfþO;3^@úÕ²ŠDŸ'³Lýâîo̾¦Ÿ3õhVi)ˆsHW«-ÄÎ<òÏ_Ê@±ðÐüÓÜ·7CÞq½Ç1¢ì‹ˆ¶Н=ôjFeåó-ëýýSwîɲ´ gö¯—eÙÙëEe­úU3ì°Äo[ñ¦Å&GL'ÆÌcâ¶ÞtQügáfÃSH¦‰œÜB‘Ê‘N›×Ó©¡¸¶6FH×È(öÉÒëQ·ÉI7EJu±¼Ü\§Ã@ G¦á2À<€N^Ì8y‡‹«©­挾ڽ1:Jž%êœÈºŠ×ÇçàèNÀ~óQVeê9Ö½¢"°¿„Øèyø–äÐo®m§ÿ^\ü•ÌMŽUHPóŸ^5µRþÛ;’LŸ!­CQ*T7tåø¼¡ˆsZµ‰•¿8µSbª‚¥)A²MMü³¾±á}"*((xëM2ùŸu5þÞm9ÚIQÍÜI’ø…mü©¼žœ–³ÕÃÃ|K­%’î ç›âè$€sJCí@*Åxk-aŠðÖêV0»¹ù¤Ýÿª¡?ͺ¤Dêñ 9åÒ饡!kP`Tßß¿©<î¤,Kâ^×ûkö€"Ö`×'¡?,Ÿá ‹ð!­ÙDŒdqua¡FSä峫侹ó@FF&X·õðð( "¦\ñ¼ÏgÖ‡ ä:~þ$GLÌ͵µŽ…ßyqËKÖôb¼¼¼Â»››î²è,ÌãÕul@HÖÔ±•Wb¿^º–àYŒÑüƒÁ÷0~>Í Ú)JéG½ãžòbl A¬Ø Þ·?€’¾XŸ^ð´Ø¬XGFB¹¹e„‰}lVˆ!˜XÎüì–”U@V]/ٜݧKÍêX è°Á?öÔ/ S›E úß7&yyóâhy°°° ÐxxTs?y…/€=ƒœÑuMèñùhøJö›Z¦äƒÊ’xuÑ¢?: ؃ $a,…x¨áé¹÷pgýå o¿qÇå%lWCƒ=ƒoŒ&dÛÿû÷Ý$¨ÖVcpU ,,þ¯9ЈÏkTsH'ŒF/ Ѓ<-Óôß°˜LàimñC. Ãt»»”zz8q4\!Zußç±!ü¸ÐâÅâÙÞnAçôôþôŸ%$Ún6“BÞÑ!<¡3±Œþüyttô8ìÓdM Ct4Ue%6¯Ç6.Ã'Ûû둽©¤„¤pyYÂb7þp0fdttG‡‡Ò¤!k´âñ"Ä]Y¢á…EE'a~È::»;c g[ˆ‰é¥´¯K%2Õ¥M ûúR.#vAý%¢¦.žÃl­¿ÛŸ­)š‹õ}û¸ƒíç¼½¿?_mýŸ?h.#%…Xû0¥ãüQ]±¥=QÁÕ *–FãûÝ;~˜‘èÌ,*?Þ3h‰‹ãjsx®u‡¶?­~€GÅÄœÜ↎ÅR²þšbýÒ¥gÇ5ÒZˆÙÜÕÒŠ!ÿÛÎ…+€£W¡ºz³±îgj!‡È‚2±•&î¢WÅ•˜D`ËNÝ ¥¾¸¸¸ªS»I˜õÛE+æ6FõŒ•¶Þí¢0(((66¶­ÍÛÝ+ºw¾Õ“ëÛ'&¦&Ï;VgÔ tsSÓ‚œ ”á™®Û¾8:œ÷ïMLMµêm æFGF* û0)c KJ6âtœœœ°qpˆà?åÈ/µ¸÷8ÃÁ ¢¢:íO¯,/ÓƒÒ¼n)€Úˆ@&à}CÀ«©¦– +A‰Ñņú ­ð–´9cÕ]Ðõ‰úðHE¸Ùh0ùæò`®¿¿¿7šìh±å.€À+žÃÞÈËËK@ê2ÎyˆÃ~S×ýÿ÷ÅîÛmÀ¾,d€0·´àÍ} ¤ü;0€(<jU»ÕKXî“0ÉõíWö6Êx¹ß ×~13ŽæºÐ€‚•$fâðhE3Ð]UBxa½Ò’Ác,I2 Úvz­ºš™ˆˆ;46&æ›eoÿ¾åÐz8×dÑ»Z~?NLOÇ_ÁÏó4è/@uèÒ{ݰý‚2·Gs$p°±eÑI_ðë#Úøºë#މyg¡BPÍ žÿ]Õ&÷Šÿk'öâð£É5·b [»µ¹9Qt¯cBSNK‹Ö¯Ôi¤€±ƒøŽïˆkMyËx™™™ÊeÚx¨¨§[iÞòŠÿŠa~~¾|!-¦zµÄo÷’ÿ}NNŽùT)†§êËõÆ› ‚ !Ól9ñ ÷ß‘u#‚íçÅWßøÎ”å"/{ Oè|”(®³ZHLKKKI98:j3s*R~ ‹‰ŽŽþîÝÑlMˆóЯ_¿îïïÙ¬-f«M»‚1ZðŽùžn†6’^ÿÛžÿ`úÂÙZOxËO¦‰Í1hüêêêÓG*NN·•ßߦÑ”ž¼êQóçÂUÄäääB0i>¡)((Œ¿½ŠFåû;&Ö–¹»„¬2z~3·81š$=/Ín]LGgivVÝ‚Ë9•’2ºJGîâ( ÎEðãù¬ÛVÚo‘ÙFÆÇç+ %ŒŸ·­É –þ~9E%¥÷ïß¿ì233ƒ……urpphbòœ_\Äÿ^,C–ý/t9§‡ÇwdmMÍ~g¸Ö¢÷õÀ­"Kƒ´>}%©CÏÞ’@Ûd 6¼¿™¾b|p‹=†!P~þoT¼%yÐyBì¡(UèB×·óöc¹R˜˜˜;;;iž—3™Â!åóŸóóamhiç%tu?nq5g>|¿Lþ¥úšˆ“h"÷ä¸8c ‹þP~â‚÷ú"ÑìpøþíÓ5æqaaH1Ÿš]™.“2M>NIÁKded¼Ý+k+‡Ï‘§Ó¬·¹>ÖÃÃKÉMãqmú¿Þ×q²ÑÐÐ`LÌ9œoð?PSQÙZ[óÏÌÿ¯·€^ÞMÓ¿ ßÕXó¼Z|¾¹vHL__Ÿššš™……ÍrvÜrÿÂÃñwòÏë·—7µ¤…èŸ{>lú)òÑTý¯$áÝyxw<ÝŸÉüçC1‡‡e-†.//’ØÈÑ)c‚=›ï, ƒ3»»»ßÑjþ “ÕÑ)+- ;}#ÿIxâ`kæLÓ/ˆ©–!µäón0ð&‹èùjt‹_D¥¤¤\]o~{íïïßð6pýz]If×…ïñ:+:ZÁÖöd,OñÍéÎo–S““ÚuVZà€*‘Pìo–B(`Ì%%%ÆC©Â(Äääù55ç;có‡¬h{V)ž²èx\Nû LÆ………Ÿ{ÂðBz-+ýïð8þï÷g¾þøj-Šß^&},D —f]¤+$QÄ¡„¥$£/Qüj#亥ñ:U‚>“d²÷EçB²¤“÷#o™ S;ãT몫‹5äµ´R>ex<ÞléM;ñññEâê$fîŠ'C‡‹d OãõLLNþÁãuwiinNÐqswÔæÊÍëu˜Iîß¾}ÿ\ œwéä€ûÝO×{//®Žú=PÕõ"ÝE fÔ;o.¶y§‰d½ÂzµÆí§“²üÜš‹Þwµ"Õ‰ñбñrĵ‰²ZKE!G 0DêúRýøûóÝ>ê‚ïð@rÄ=‚XÞ¿±EâfL诓&¤¡úÖto²d-iúijÿJ`hÝÕÕ:‚!@ˆ26‘§ƒ¼¹v½¿ý%IíÙqõ>®ÌEŠþQ™:˦¡¡ ˜³€?x°Äøaò|ö ³`’·ÿ+‚ºôðñª`®‚ÁÅTð²³³³$$$Ókëëë(ûÏo_A¿x‘Êíj·;^ š©aL#`fn>”Êó¼RßãæÔÁÇ'«Ê±Ð°0ég>¼›?ß úp§trðÇçlâ‚{g¡Éùþ‡#qww (ŽU‡®¨ŸÚZQÓ¶ÈBâd4óÖ³ˆ–86Äâ‘Êsµ ý.+Á!!:Í.+GGKÃÃ>–eee*²²Ï`v3ÉÆÔÔ똢ÑñRÅ` ‘%ŽV«°ày357Dù ’ó}Å€.—ó!5-íàÀÀÅññ5_¹Ë|¸[Z8¡ÈH¼¾Âû%óy§Þ•y,)«1ýéÞå¢#<­­5ïûÊGrDz5æÔ5þê´æºrÕ½Q«ÉÉñNå14µ ñtÜ/¼Ã]¤âí–Š0žŽ× É·OX¯Ç]z—¤ýô'«@@_oÑÑ…rä'&&úÌÌÏS¿à<=öt|!­®£#s ß”R]W§D/´ûYÀ ÉžAÆ–UƒÞ¶Qÿm­ŠJZ•¯®,ÂG)ƒBôìºû¶¶àzýO»‚Qå%ñÇÇ6:::‹4‚¡B_±k yc4·ÁËð £§†‡#û£ÃFü{#tïÝ ±‘¿ÿ.×Áùˆk|üÝé»ÜÀ–gkÒó[fí…ͧgg £¯=¼Ç;˜é 1F‡<á¿L;{ ø`9„%ï‘CˆŒÏ]^W§¢¬ÌÊÊÚêt€í|7Q¤"%) Øîþá¡BCÒÍKÔÇ­Ê×Ï9­îWaÎl¤Ñ7S:_¨´nnnµëæUUU)€301…„„ ¡¼¿bçI=ø¡ Šþùï9÷„MLNv—þFÚ$ƒ†¼7k®BXâØz|¸¬üê&—‚­3€Ò¡ŠP€U””” y6y"ßH#ß#½yS ~šŸÈbj¸Ämš®óÇgÖ Vr7s`ހꛜlu9Y$íÃ+ÊÈho‘ûzDæ•&X?¤û "™Äz†JvF†€´´ÕÝå¼_ù̾\–ÈBƒ=ÜÍQgߊÍ` —±¡!‹Çµ Wq÷ÿ.vk}~HŸ22,öM Þ*ÉY{ºº³rˆÀLbØ ÿñì¯Ë [’îmvÃ>R¸~ä‡$Vua¼PAù .šš ÿþÃÇ–ÂfäëA++«©2kSÓËÜÿ§× ›T‡3Òp¿’ÕÊ£è;u}4R„&ÚÉ!ÌԢɨs„†A^áõ‹czëñtØt´9”žiâàP˜˜ØÒœ XÙ€Kã Ò] —çmuE…­¦¦&ÐròòQ X~„-މG®NóKŸ%ŸSäøŸ‰Zëü?Ía”ùØ&2²3ñ(¹ÃRl~NòÛÁ/ýŠ|ÅÝ÷+YtGgg>‡mÙ:&¤‹uBn}ZS$XþQ4ó‘ÒØá¹F(¿›´öÀPfÏÖ¼¼¼¢ÂBÆ÷?–——yÜ/É))Ÿ?€”Çm|aoêî&))‰Ïã:â®x|@·=楹»¹³ýú¶˜x )Qbÿ€ÐÇH±ì…¼ð£³³»;yiÿ/öÞ ¦µû?BƒÊ”Š:•)MgE¢i3ìÓ{?ÏzÖú¬ÏZëÙ{?s¶â9ÕK. IIЫ]̳g:ÖÖÖFðöô’’*Ú82™,+[WTdÖ÷ò¡¾Úe›¾ýb³žlêI}ð⥬ÜĆW#+Þl–vÎÌ$^Ìg«¬wñÉÕ ;ëmÙdoo_vaŠŒØ?æ±j ;qÍ÷Cqö8Ö2z$d>úP¦æa™å9=‰‘‘ ½-÷AÒÑÕå•Ðßkj,tò$Æg³16Ç稷.ŒæJ¨(¯i>È»ó'•k2ìç/î訦¦š–o}?he_oâ)02Øyª^òÂw…+ħ«–#¨ígEs“ë5»ë»‚A¾ËÆÅbfȺ3Þ…@¼ï9±®¶r‘»eKSwAþü•«]vjh<Îm²‹Áü\^oEßû-ê8—ŠhõÎg.ðŸ[T4”“7îõEüïóo~¬Ì©¦vf¶Ž¶Iй”™£µ•ôçv¶öŽ’V¶¦&$3) ‡¿ß ‡ƒ¢‰xóoôäßðƒÇâh ƒEã 4?qXò¿J‘SƒùíçÉÇ™bœ²· lo“I{#åÙ ÙàcˆQÓ2Ù¦©f¢´m›ˆRä{à€Q#J¡’é$"KÆ20dO¥b14*‰QÐ$X®¶q²²BK|iy›­©ª“ í¯ÆÑ(X…F$¡HX*†Â @X2H&Ñ@X<–ú' oƒœ!«iD¦cx ÚÄàÉB¡)4gÐèTnyR _+BEGGSççÚ¥ T …ŒÃc±€ë!,‡Ai Âúéôß éëîwªèlÔÔUùIPx<#’h4*•„…HT"  ‘!G!ài!€²ÊÆj?Ù=AGÑÑ%È –N'Qh4,O âid:毺WÒSúÉÞ©€…0Mщ*ƒ„Â1@,•L¦BD<ã·Þ™,S;ØAþº{" wK¦“!*BS^1$<‹¥©XóG¸N¶jB¡ÓMÓz…Ž"aP( nšDÃã¨,"ÑH(*ƒB#Ðþ´y:Å‘ò×M‡bÐP "G¦Óqd…D¥S!N¡ÐètåO›¶‡¬m¡EEãð2Ž„ðT°†Bañ$,K„(Ä?íÁÅÜÑÌÄÁÖÉž¿iGs[›iCÄàD"€Æ€È8,Ö™†EA€–°dêŸuå<͈¢aP84HÁãI$<„ÂPI(ˆNÚû ;Ʋÿ¥ñŸbF71¡RÜ {ÍÄÄ܆f%eM±û·â?ÁÀñGÃNŠñŸ€"àÿÿÿ9`X¤9]^ä ˜ögš_Š&‚´¡XCú­›Å¢ Ì(và,{ˆæ(ÂlÍÆ–‘DföC^dÕ–&]HéhîhΞlÄLI±r”AÒlmíéò"x,Z‚D”À“‰"ÒÙ ù·N>ÃØrp²rüCoŸÅŸú¹F‡—<õ;"0(X" ÿ" Ñá÷´ñ—RÀ'Y1—|GŠ,ABIñX 4=4¨ïK3µ|%Пk M K‰x zR(i€%¶ÿÕTÿ¯ÔVæŽ_"€é¿Âÿ€õ‰Øßó?öüÿŸùÑÒPãdㇽ–sËfeb¶ø½m>+ø¿mוãà+U]Mñ þçbnlèçµ½\#:ÜŒô&{«QÈó/ý%n.¸·ÿâI±ËkÖ¯·xA•2;'™ahÁõtUî¸A7ñùyY#°AB¼TR<[*nÝÙsÙën®‹+ <Šìh*,*ºóä1›s!dß›ÇáC|¦äë­0JÜs¸™ûÿž ë#&÷®|pQUþ¬BsX0Q^tÿ·Cg¨¼”•ßÐF»jîxe×@Çç½¶—0LçÈuX”½DD$”y½{ª×¨3<©¤¤D Û("ëÚ‹¼àÞ.ÆŠ‰ÙIÕÉecc»çÑ“»Ö™oÕ̓ó¸ŽÏâ9±¥u9^„ù9BOŸ“ËY¿hÑWW×Ð<—wœ ;ìói´Éºöð’àƒJA«ZßÅF-Ë>ä.ÿñUhiãÎx=jWmZÀ±ch!òþ\ Ã??¿¬.!…c”ûþ|1×¼ë'ÝX^°³Çû#”¢·K[[;5£áeö“ ò\ŠcÜŸ>–ùì¥ÑîHØù.YqßË9¬œüôÌùËe­H‘ûÌÑÇ5\±mºãuMc]£€·¬º3kýi6¢Í]My¿Ý©Œ–¢¢NYÛåÝ—”)~’ƒÏK³¬Ž¹ySÇe¼1×m]‹ÛAâÉvîz6ž ®î¨¾^xyK(Êí==Ñ$OðôéÓpóˆ½Ï.o)*.6w4D¼ÇHW·ŸgõÛÈ¢¦¦–óþ‘8Éá ¢ùI¤ì””iii[„æñðð òæ¬BŽŒ5¥x~´Ó[Ÿ¨Ÿ2Ë0Ýê@däÊ“¡¡)ÞãîEtL¢qvú“®tÛ¦`Ÿñ“¬:¯OãC®ÛXmeQ…g$ í>¼ÕN4Hc ‘{?ÑœÝsg“Ì¥K,ñ]ɪ’ û@¢rr+?¥Ú|â´½Ç.½·òÚŽ·UIçmêš3gî\D° üÑèM‡g!Ò­ë7 •”•ý —ŸLŒ‹[çêî~¯°pÞõÜA~PÕÀ£Ièß@twwÛ98ܯÏt訷iÌqÃÛdØ6)48•)ŒJ$&%¡©æ×çzì]¿ž >ßÅEMOoÉ`O“‰­quG{û5KôèǶ¨¾¦Q”ÁΈ[JÖ½ÍwB¿AÂÅÅ¥¡ û^éy" ÂÆÆ&+o×§Üèº×mmR²22³tÌî º%K–T¼°¨K£×¥š–ÁHë*ÌrêxšdH<¶éŠN´n¬âVªâ¹—û¸yN컡ƒT‹ÕòPUeˆ„Ÿá¢Cл‰ ‘‘ ¯º²\z’³dkôö9:&¦4%&&ògXv§æ*¸ •Ü0+ɬ˲sÞwÈ߿݆v ¼à.ì'Ó(÷Yò¼W¾{÷N?×_¼20…VHmÈr*züXYCc!ÁºV¯¹ðë@Gõ¾×–&îNe °½±:Nû÷Ê•A‰‰@a™¬‚®­[·ž«ßÉ=Çsä]ìYœù¢,Çw¾ÇŽq4”EùL9,ä­ŸÁ¥+¿PD³ÐÙkÀ–ûË#k{« m£/_žsI-¤à–ùsÂ¥§ñáØÇþ–ææý/RME……£ ºÝ^ñHìÉYAÐr¼ÅÆ“ˆ¯¼JÏáÙϬï%\¿Ã¶A¶ƒZÙ¥¼âˆ˜îÕ½ýoJ휜¬íêîÝÛøêÕ«æÔ2…û¦Q^;iŸ„……³ºîw.%éÊ×ÔÔ¬±DŠÄ¤‡.ðEÏáá ?\T´ùU[[kîP#¶ÆkÙ~N®Çj*Ñ<2С“¾àΧ Dí åžQð%á–––štkQчR~E«R:DA3§úÛÊh@‹ë$$”•”X€ú8b¼30¼¶+u‹Ûà Óòšš\ÿc¬ëÇ×a噦rCõYB>cûx,Ȱº8˜êÊE«V«a8;G6+W¬´¿æ¹Æ|.®ëC.àÀ¦½0·XDÇFygí®ƒi5ùP@Àã¥ùyx´ÙsÇÞ—”Ö&ÇÅ埂dR'Ïn7*Ô¶Ç}AkAÐ}`åÞjãñYlJ{{ûöN€Ï–þ2ÅÂSbº_LäcÊAÐÏrÂõÞç‚™gg²ÑD–_‚ÏÄGÓÛYYU™ šŠã‡NZ_ü©_ñÓAàö‹}a,º@ð0ž ôGt ŽŸ³³« í=æzlùæîŒº4KÞ‰ë>w++—&''»5¸hïÙcSC=PD‡ªÐpÇØ71q#Ѹ‘ñÆÚ(û B6Û3¥Ä"UqbxS5¦*VSÆ&§M¶Eåz«¦;+0¸Y³g÷õ—ݯ®Î(-*)9xþüùnû½{÷Ö±¯Iez ç£RI¸I:Ô5Ôc :PU-ØÿزÅÏÆpm¬Æ:é ÿ¤¤€¹Ň,FQîbXÃûJÜšÓÒË—/o8¾Óñ¨ÞÞ˜ì1Ô}{_+«œ¼< "V#r£³3(­P©ç˜âVf;Ä.©NnxfI,+0bTíÚž¬„}°t@y·9Œ ŒîÖ+ü/^ø•欯1æN`ƒÀŸZë+qq²û`笵kçÝ¾í¨ªvV™vΞ= -¯.sÒ„"B'p¹ƒµ–úyÞò;“ æjjj2©¨ã[/}øè´¸“RW¸é…»mQ>Ánýo”®èƒpðüêöÅ(e©t_ä|*/`­¤Ðóó`¥T& >À`lDD[—½ï¼XnÖôÒÚZ6ÿþ%ú†ìÆÑÌOÙ‡Õˆ$2yÚдLAë@…FGz·ºº’@ñŽž¢.,‚Ù{ÒÉGÙv¤¹áË/IÝu}ÙŘs7ÒÓÅšº|h01.ßûöÒ¸åœ›Ý ²G=W4§bœùˆ$ØFèWö„‡gDï´DT¬Ý9 ®quu<è§Rgø ˆÏ§ ‰‰ú]ÜW»nž ‰ézµxGë9ù4«a;¿î¡=¹îùw諭LƒS˜g²-MÞ#¹Á¢=H怄xAïZVµrmgï‡Î…ÄŒä·nqÜ ·Ï·.>.ŽãÝ»·í¯47æíPœ ˜g.¢èõ²·/R¥<ýüvØ.í~Ù¥¬ÀúÀÌ…¥¯¬Ï5Œf7Ù¡$!¹}´'Ép5â–ñy¹¬»…±ó6nÌA;Y¬sxæv²¹qód ç0nz;è.®ALz×ËG§Çø“h@]Hyy.7·‡„º:ûíl—ç¥1ú\÷ê²çåä®lén 2^räÀßÑ«D@îûVâE0†.ݧDV¿fÕÑuØ×U»ýòÕF0TN‹Ô3îè·=qÖZÑÒÓÓ‘üöuåJ6?v^Wá+:A _(Ìtx7Ÿ£éLÆëéÕÜ«ÍÚÖ‰1P¹rÓ÷ÊéQõ²¸÷/\¹~àf^ÁƒÂ¨C¡Ï›œZÑ÷ï-Y޾'´pa:kž­ˆˆC>pê5I—/Ï:>RA)ãG›ÜÝŸ=ï×6¸&Ï×õìáBÀýû¯_Ǻ9û†hr}èîšck«æø6?x®õ €Äy WQ>M¬zððJsw[Í 1ôÞ ‚nx;Ÿß¡W´ïή%¼†Â«^±JHr~:áÒqÿìyöÞ§ë = 7u‚uc#ZÞížCÌȶn4qw7}õªæ~qÉD«ójØÚrˆ‰oØšˆ¼|©³¯SŸÇÏÂ¥ðÖ/…v{ÙÕ Ÿ& Ì#-â½F¥^–3î>ÚŒ·d4·ö ÚsPØ—ÿ⧬õ\V ;»î~ì_Ž]ø,kÐA;ýÞ~µFÄmßÛ$k;Y…Åö™³Yë}ž t´- _2ò|ßòù¶ikó"yºý-#ÖÂÙžd^þ ÏäíwïŠAÉYìÈ ÓáÈÈ[k.¡\®\9=Ü_¦pd˃‰qP2ˆ)u¯D;ÆI[ðàö>¯Õò ”µµÉ c½DÏ¡ímá˜ùB^8•[UË7ÍÅç£(œˆ9Jùw¼xS¥{"äϸšÛèí1KÐ5_×v¨|ÑÇIΜ ež+e©EÜ&‡üÄPŒmH##™@ž) œkŸ_ºô´0™<hïx„çì0©† [q¾j³ŒÍÊÈÈð¿~}ñØXDK[‡‰I—Dà… äÒÜØjgÏ*?x°êeM .®’ÿCWG0BDdÏ¢—Ö‹$—ïÛ'¦ë­ÚºÓ€‘yޤÐF„äß{ûÆÎÕ KKÂ>ÀšÞ:`]|R­¯ùà÷¼¨7פn^óÛ¯·)Ú„!n®]Íч=Ihnžð• ï±H?y’Í(ëTà«W+`&Ó9Iˆh¸½o¢¹yïlEEÞ9sn7v¤ÇqB66ÆÛ^jªßѳ'Ý´ÌÍèNÄ.æ0á^q|h D0tË\›º hвuFò¼¯MCçC©’f%N”§þì[ºZC>êÆ& ¯z È«¸~ë®gµ[ÕÅ÷µWì0&:Ôq#­k¿ÒAw ,—³ß,âI›PP­wíÄ… ×ÏWˆâña*¶=‚½C.åÛßFkÝÎ/+ ×µVßš†Ö•‡8+ EX¹º9ÅÅ3k ôšxÝê{ïî\²¤þ¡l\°é>ç-2ó-öï»ÇX¡x!ø´¸Kko‹úü}çmƒ An|°ÁD}GÔ©W€·–,=}·8~±?×Pµ|™¬Ë›š"y}ºÎn½¢øöd¨-rõêyññ™›·>*î"é^huµ“.Ç|;¿¼¼Àä‘Ùá¸øJþ§¥h4¯S§³óÊÞÞûÞóï½-÷jn¯UéÄnו‘aµ¬.@J©LˆU·I<™âË¿7ç«Ùì:ÎyÜ‹CŽsÛ>ŽR©°knÙüæm¯ï¾Äýä•ÿ ”ß²’r×A~mÙ}mb::6HaáÅññµh:¯=:1qÑ™3Ëì:®Yò鮋èñÃìÒ7t¨?\±tI½Š•Õ¢Á®ì€M‡Ojëé%Ÿ#'"2_TõìÃ#æöö cbÒE$%…lóäY¤ï,_S,•VÀ”xŸAÚ77Êó¦}d9®Hàúõ¹ù;¯Œ<[4k(¶ŸÐÙ•» ˆˆ/ÌûrrYGŒ×ðhç‚Hüø˜N¼*ðŠU«!Q11^é7H11Cb LÜsæ|PÖÒÒüðîùb¯³ÂÐ}È;ïâ,ðO5æØó´•™Þ«­]$,ÜxÒÐÑ@Ho='ÁúèÃB¡žv7ÖÆ\2½¸KZ äÍÇS€cŒÝ`Iª±Šã…Î:žäy–âYCä—I÷]q'œªmd´‡Ö•"ÓÓøÐ h ˆJóÌLÇÖÂE‹’›Fåç-]zM¦µ„-@z‚ kåζ²ðY9ø¡3ù¼¥"NáF1ïáëÀ‡«÷Œ š–1šƒˆ´'vE¯Ÿ]Ó;v‘5`q‰F³——Þph#x×zt.»È*¡D/"V³©gQš³áÞ‹°ÃóðºãÕð¢ô|€òý‹ªôYë×ëmÖx¢D¥.“ÚóøÎ¡»^l.zT¢’ß>W«ÓYÆÝÌ&$´VÃËöå5i¯o¡ù³¶QËͽ¸ç°fÞíéÙ& ¿›ŸV)A‹ß†Ø²å…~6UÖå¦ ûÙß<^Pøªøà¶5oësÜxÕ‚Tሠ°!@ì~[µˆƒ]÷ìØ°Æ¤',Ò52 ¾|¹“ŸVü$2;øÑ£Ñ$úøhv“¥˜ÃÝý,{ì;×9¿¸<¯’72YFÛѱ3h¹;(vÁþƒ?º”¶ëð×Û(gOC EÌýÃÛCwzÐ/ïN—2¾í,À“ÆyÿÄßW­mk¾ç· db ½ÕúhëÖõ{ÍÍYÁƒ ãƽäòxõÝ»;;oï?gàè[¨‚¹u‚âépFãˆIM­¥ôŸë0Å$EÝbqüü çÓ; >* Ô€€|ôc¿­ö–Vh{•AÔH•nþm]u¤eˆ† $¦œi`p!ù´„p‹Ì“¨2e·Ì›®7¯UÝô¯ßž~zÿ¹ëƒVöoÒßÞºx·õ>—Ï}—¦•O‰ì-WÓ}šré]™‘Ø•‹¬›ÅYò:2z?¶îíÊPk~U±@:OnQ*ƒ¾oÏêÕKI^#üp†Ø˜Ëk7>"YóÂ)?ÿ@.Êó¶³çùw+WàXñ1 ˜@·—æò>Jn­Ïì\ºQÅ Ðóӌ벾ÓHj+(È“.$®47+‡¦ù¢œ­¸ó´¯¯–’š¸l|>Èé—Š‹ ­€Fž ÄgrÑàïa:¯¯ÁE­ùmÍ‚TÓó»ö&èxu¥×²?; 2@‚;¸™ȯ…¿Ú9Ü'Nò–[yäÈîu’I‰W¬òÒe`·KÊÈ{{*~è¶VÔèPÿ“àª~ýòò „¹?QôDêAAPJMÖÀ:§›wK¤Cò¥ :]så]äÖ+wîªÚ´íA¼î.áÐbÇÅóSÄq<; /ªÊZ쳸Ÿß•ÿ›ó{•/|3$׬Œy¾£¥óIä3ç`Ã8Ù—Y©(Ý5önYÒ§Í'96^(µ(Mzvž°òÁ›Ò¾=û_¤ª½´õaÇvt¿Ì°9Ý\¦(ý®à:Ô·ê¬Ñ:99È%J…(ß»¨Ú¥2©'™þÏc¯·<·$|PEå5(ÚD‘ùKÇG=$ýÑÅÜÍÎÜtNŒyŽ@íÝ0ªïh`rj+>æ톳5ǽ{KôsÝeàÌøÌÝÍä8–g -÷;·¼û4Ö†Rø4Æ-ãxãA™â±0Á#‘}8ï^³9 V@ º’Šß5Ubqo¯pî°RÐcƒÝ»W€>x÷œäð†_#2ëhgçF8Cîè8Æ2[®/ö…·MM³•”ä_è¨9” uà^š¶ÔÜü#³¤è{ˆJ5±ÜÚ4ã kf»‰ÏÊé;¤9êêä=®”å{ÜÍéÙnã;$_kãi 7~ûT)ø©–Prƒj…*îÄîâÒ\Ûm/–6:}z=‰TƒXŒŽn„{qϨÕß‘ßÀQFdc¶à"M+Ïö>¿ªï9Ö'5gž‡ˆŒ;«û€ý’l‰K(¿‹¬ga 1&‚ì†×ä’TF~ÓC:Ó°=ÿD”É1Zá3GI›ÌLÀÖ›¼-ŸXYfYmC½ëÛ³¯ÛˆµÑ•&âÊa£Fï5j¨Ó@* ýÙû_¾´·zñ~­ÂÇWˆ ü›åoÊ„üžDÖ5…ÙðígçÅX&6\Õ»f™X6üt“Bçêô—Ë+ŠVé%ír~ù`©1*T1¾Èü/X@8´1ÜÙÂÓá|cxmò!`—<ÏW%öNŒÊ6¿~0Ða*‚º[ñEŠ„ÿHës ØÞ!ãX¸!^6òá0÷RüUcŸLƒ# U‘Ò ;ç>;=}%ÊLKÚ˜¸%8v5úVm©4,¹vµðzœV´îZ&‹à*æ¹ö*I;ö4jwÚoñ…‰ôñÙ ©žÞ«¹yÓ†ÖrOÈTQŒ²……/†Üª;âºM2Žå*o¢ëÞ3ű^^…t!@Íh¯‘Mpajgo‘w i+9:Zzz;iþµ-÷—vÝ\}²¨Àä-(åHn:²é¯Š6«—ôóãðö~2A¹3Å2<üa/¯ª…–·7z¡à¶PÜìëÝ‹9˜ùözlbt·Äžœ•‘Ü+åß½Û5zÞC¤u€N6Ôû0>ÒáûÞKxÃZA¦MŒi¯¸î¤Yy.dGêÁ\¥ AiuÛWmç° ;n½ÂÒ’÷\Ù)~Ê9d˜±u¯e‹×hV´×!wZ JѱËb{ËIo|ú[GP„ôÌsqIV¢¯›;×%ŵO³&µmãÉŠc\ gͪ,÷àÃâYñùŽ ˆ|íÒQE«¹Ñ‚°i’R¢Óç/“ä/<Óop­êà±M¾b€‚ï76òo:<"2™»öz…nxi~߸oЊ¤rÕo Þ¾ªØB\LÛ@ä=y•o€L‰y^YÍ÷2æyA_¡PÛ z±sM!m =¶¯÷þjØ*¾«+*Ï¥ –ä[×ÓJÏå®[·®à–y´þm; #ãìãs«vô¬á8(ÛEÜ"'6xßS©ª¢'EXñϲ¼îûà±ØÇèîõÌãÅÓ==Éç‡ï75©tê+ëIÊäºØŠªacgçã\¶å…ª{op jœY¯Œ… U:ÔPª¹0?F¥µ¶Ó¤íaÕåx 4Ÿã•ýjeê^­Kíüm;aöÂà+-oËqc»d@öè—›‹gåèÝhGdål÷;0Û£O€l‘Þ¨QøÀÔ·¥*±9¯“@åî%D+¾B?Ed­ppiöª-˜ÃÀ…Õôg·sY±óûe¸p¥¨‡æøúf“Ü?¼ÏåsHëyØíòàitmZIlñ :N;0NÕ*£Âš9Éy›Àã£%åIçåA¹$¼É]x×ȇWzm"Àu³•œÖO³à"ØÈí_°Ø7Åóã’`!ëC™sðùž÷øío$òLØÅGC7ÎÉõ=b|®8®½›7ìèçìðÐv£ì ÍyË+â´×Ÿfå•¶0 ”_©¢¾‹³D³³ë^´5qÑ×ï]uîÜuP#­ÕÜó°1÷HMÔ%C¢‡ÜØ !x¡&E)BÁ`°’ÿ\öô¹)ŒÙ-ººo•󖓦À4×ix'ZCôS¨¼Ïž÷£|žý<Ã#˜iÊ•®FF×lœªµÌèc'ĤS´.ñ[ÌK¬ed´pm¬†ëÛèFPŒª£4yÆï€ù·ZlëÅ{¤eVòð(Ìá^½ñ÷åbj .6ÜPköcéD–¡ÙuNgŸ8sæpù¥Ù}o·€ÑSÔ±[ÀwpP‘¬ËV§¶…´3UÇw÷¤› |•’"Å¥w‰€ôŒ99s[Î ^¿ÞJ’•EëP(l‡¹nжc .-KP@ɯYÃO¼ýöÖPþ*éUì¼ÛÖÚ•±¶ù!ïýá[À%n€Kj{ò@¥- ŠŸK Ùå»>?  6ïå@uᾓ1„¸\gÃîN`®¸Ë+jù@nºöºˆ‚ÂRP€„c«/ê]ky]9Þ¸kÂÁ÷L@P°áÔémKx# ÆÀ´ç _¶†¸ƒ0Y^Ž%mÚ#~Ö¨ƒ˜È²9¿&£Gdçõƃ‡m;Æ·8À½ðåyr¥J_>¥×\t¢$«qIõõ&ßHãy+jØyxjËX5˺©a[V‘9,—xìú¨é6A§`XÜ×÷¹F)½{…8V¶— @q•€èGN¨Ü- Œ=º½Nf0/ ø‹i[VÒYxÎßwnÈ19rú \‡/^˜±xVš?y>?ç¾Áéáa= ÃÁyO.”nÐ?;Ë6Ï2›uãú@ZÝ5Ÿè]iÎu<,vvÍï(iâFd;ž¿Û¹ý™VåëýMFÚ†¸I*õç:œ†78yôÑÖ¥!&~¯^ ÀóÆM>Іէµ¹çX5¸sôäåÍÞ³'X?Ï{ͬÙGṞCYo…0%ïÓ¸I„‚'0´Äž±u¬ ?,Ê–HÕÁî´÷¿ÅCÇ?“«ƒÇ”J9ô"q»æ–ÝÞmúfõ“G›­£Ëç’YÜ×? ƒuŽŸ/ûYõJÅO±éV[¤±bÂ9>M éÉõ?æ†i랟bsM îñ…•Á…(zòf\JœfŠND°fáÑ¥Ù½mQa<‹^_˜sßÿãã3»³Üú¥‚W”'7¤ûø,²·g³ô|!g¡'ô¡³xφ T\øÅZÝ—UƒæÃvs«1Ñ„…«¯Aéj!@QçÃÓ•™mw”2Ü--ÕÇò> ÍÙ™XÃij:/Ñ8ûîÝ’’I­ºÖìÚ]ð¤•õëGò$OÒRvUôÁ‰ˆø>*IÜ%IUÀÒ¥×øV©µÏöð°L)Y…™ÏŠ_¬å1x¹=p[cOY(ASÔW/.T‰-U×ÐV [ ”§f¸¬¼’×öúúé‡mÞøòìøöÝlFÙ-÷nXר!@~Êa¥ª·'¹¢Tg¥P”m®ÚFÔáÁÅ5Ú/^øm¿w`ö’çð"˜GSMyáiH«³B÷îµ€׉)~°ÃÄѽ:yݔ׾ܽÓ=ZKò’™½õJÖ“eË0cýQ!´îz;žkXiËêngçèn{%%ôÉ“öÜˮƥ4 ÷£€ria¦KºÐ ì*ÝuÃ{ÜûÁƒUÔæü=Gù¢i³ø–[¥˜·aÀ£ƒÆÊ_jÑŽ‚m²²²Æk´Ðq[éÄôµîâq²¦fÕªÕ¯ó«Ògû/ì Ò¾4²wØÎçCw×*çp:«…´L’N|9¨ÃæYŸQlô{ûv¹Ž3ï¡¡Á#P/㸎".ÛÝwiGßëk}سRRÆÚÖ6(z“±øõ2ý,ǵs”öo[³)D0ÒîåƒlƧ‰ÐS§ p5·Ei*EÛÝ­Ïl9‹3ß›Zµ&1Qo5;¡—I°C¢âžƒX£\ƒý². ¶›íÙƒ^¸òZ^屎í'îTd¼½´$Ubëx”¸Q´‚5+Èö™U+3X•ž:óØ»ôølàê¸8;~$5šS`ÓŽÜ'¶ÇÅ¡]ÇúT“·ÊÁça¡ Ö4~DwTh7ÜžãàI"жj<¹%˜/Ï·ïqƒô.èÊ?°j¬ËÖ¤¥ãú§àÞ^„è®:o½¨ËIÅᵩ¦ýìÛOÎbM[³BÁsA™â§¥VÖIvoÏ»qËj¬îÆUƒÒ‚ Žy&&ÁxËž Îd“<¿=¹+ sC®¥1¨ÔE) ;zô‘…ç¸ÆÏ;mmª0þ¡0bkctnÛšƒW®Ì%+\›÷¶L,Gomm)ßþÊ¢´äÞ$r‚qzTA¹Û—“ð̉¯–òÚò—YöocýÐùbiapîóĪÕ'@1Ï·Ê:GøŸ7Üõø<‘ÿy¬¢^[µ³æôæm}A?wÆ! >i‡]êf\+6otvÎrNË#ºŸ2ãü†\kç3§wÜ{ôèfqÿæ˜öåü}Ï5×öŽt(näž3ßwéyøžI‡Õ®=ÉÊ »~xö¬2(˜XMñWÎkiaY.w›¨yvËZl?áÍ㾇qDûY²\zjë*¥OŸžº?'ü(æy__ßí}­þÚ=¡ía'öñZVEä y_±–ïì>”ŸŸÜ;Ô3‹HôØl}ö˜‘Tá¥6ç&!=핳äÆzÕœ æ>¢oذA³³éÓÕͧùš€mŸ:¹$†l[s¿ ¨ì呵‚({èe¶sׂUMˆÏ»¼‡óñ šçE[Vñ"nI†ØgÎM·‰,õKSÑÊ=O·²ZÔݘW¾#—Ã%ãlõbŬ'NDz ½Çë9õÈá¬iî@!• C{Ús³J@þ\»övT½@Üj:ÖÙu(R¶Œòi"px‚²Y— ‡Är¥±ôsíi´Bóœoz;¯Eë˜ß°ià¹|ÜÝ.vvu'¡e€á‹J%OVÄ<ß¹s§V¼^Lƒbƒ©)ïÙl–¸Äÿ£G9ôv2”¸/òé÷ù4äüíd ôVe‡åæÍêêìc­B!´''b*¡m€ëšA„—9°ð¾PÐè™ÍÚ·½Ç—ÁS ó#"Wö>Síí/‹µkÙx5yGÕ½¬êêd  ÃBƒK3_&ÜI«{eÏÊ‚{ Ù-5Èîên`û𮟫A¿”ظ<Ä­_5Õ)è܃‹;—Ǩ(Â|PÝ_ÇSYù¥°Û&0Ú^P®»v¦Ìë-¿½s>îöíBž½âÞÃ-Òˆ-&Á ´¦–]HJI“”‘ -¾a]GPVU=jÌŽtð˜ðì{(dds„ˆšÛ}»AýÌݲ®H·Ã¡MClk‹8HŠÓ_<“”DÎÏ?ÈåÞŠÆüÖÅ|;Õí2kf§š~šG´Y¢tåùîÁÜ\N(o.Ó2F…¾cVûvŸÇg7¨Þu«^w„À–)ïckÅÌ_ÈÿÊÏÄÇi\Ò»–À“¨Ÿ"ðâEËÅÆ´1 î%¯ŽÊ{4¢œœüðö’¥Ý„'#·MpÙ²e7nÞ̇‡Û|—ÃR'ô¤ýìÑÁÕ"RRK}ÆO?Úº#h÷!÷¢ypög˜11÷Ê{oéyÀðû]ÝfÁwtÂ¥÷n1X^Ñ]\tûHlT㡎jÛJrxò“òÑ'/sú^­ÒŽÇÕÜ[Vö‰Á±¾áÙ³YüAûç ö>ˆÓöB¹;"G†Â4vÓw)Ÿ?V²"J1t­okásyd?öùPN|¯×yóXòúI»Sy«“—æß»Ó8”å}.r‰ˆÞº•‡¹L6Ò_ÅÙÐ(u«&®Ù¬®üñ‹xP[Û½*Z½Bæ”oM DȺôwkëëôXKHÐa“‚ô¿ãÖ´õ†º—}E¢–ÇÃ_¸nž½ß×w¸ŽzùQ‘Äh,¸¼¥#Åê…VžÓÿÖ•håDÈIwÖä_&ɸy/Wè|se½êWÅ-?zt¦ìí;Êsð™n¬so‹O3HkegͺµxånýzÛÐ’× ZÍÐ_½µDöócïw]*¿³Ñ¯¨ˆ“äA¸¿ù´¶ºS§YP m”úîY1ÉþU(”Wòκ{œÕÌ0"d¥úý”Ø5éK†û: U8÷(„Ä^0‰‰¹é^½òZé3Ià ÜFˆ~ÍûӸĽûŠ/Rùœ?Æ'ßÔñßÅvN¾_”gKݡ㠻pø±ˆd㮇R[ô@®§¬<‡ÒÓHì-%ú¨5Ý©}ÑýÊž=®Òbl zi„œ›Ê«õÞ¿:í!y#HZƒËÌ:–ÀÍ—ÉsäÈnÕ¸àÚG% ² ~XbôøOÞAKr}w县3Î˼Z©«¿Œ«å!ož*t…ÍÂé¹0çÓ;ÚÝM>M°ð)¿C6Ð/z}pEU•½¾Aþ“'l+eôïNj˸¤«^¸ómù¥Å Oø £æé)§ÄÿPìIé† Í{µµä|~Ä,:f7ýx1ÿ„†2÷œáÿè[|- @­´óúž¤¡ñsljjjK–,ÁYÖ=Ê?t—7>(p40mSO‚5ÔШÛîÒYsàÈâµü7ëYßõ“$—…Ÿ*\j²µ³S[A~Æ’žža×Û¬t©)/;[ÖÓ‹9úº$ìDxø‹7ãúO¹Â¤2[>MHó©…ì)˜O9^²½5ÃKáN®;ùe¨æ…rãë+k2û7S{.^¼ø¡Q“P¥ˆbG†mئKÍŸÕosš­¨LZ•þŠõÕk/몛^èä[À”ûšóYùùUŽytqН_œ?Ë×÷±Ç£ú‹È‹šB> ®¬©5¸ûèQLcø¼ ÜãÇÛŽ!^½zµáŠNKl”7¦h¢Øõ}ÉñðݾGÙðJ*ãâž º‰YúèÑ­OgÎ\ÓÞ“¼ºÂAëN[˜áò/o)k9²6çƒAY{e€ýFè‘Mc΋Nk^IP~èw֤̖’’rm‹tA»½/‘FìÏõ¢Žvù¯OÓ‘[˜Ò½ 4|;;û’ƒië§\ll÷>¼¥@«‰íã³ò:ª9ù5Àxš››\\!„ñuóÏ’Ð[¯œ*¼†ç6Ø]\ž–°tdÀãbc[’ªèÅ‹ÍR@½¤26hii¬Y³IáI\Ï£RÉûjB‘ñ}DKK²•µ$ÅtíáÜÜ¥2η|##W8;Ÿ¹‘š0ÒÀ)³û^ݨúÁêÍϸùøŽDDDd횟öêͶ”””´Oõ6|#}ÀEÎk•ùÌN… Ó¾ª—ÊG½c5"×o‹”ÙÑ3š´p?ˆ´é kÃÝ»År&F:|CCC/j­;dâ3žVà ´¿w´'ÝkäÏŠ•+ývíqSY'.þÜ8*Yv÷ùs];GÇ%wFÚź¶ª«ûí2ñÚaçì¼ÌÈÈèP\ܺèÄÄm½ƒƒËóŸ46æ)ŒÁ<{réΧ< ëNÄüÑ¡^9yù¹§vËä3r>¢Â΢ÒR|ÍÄ•·÷üØÁ¿¼Ûœ?é˜kµ )««åøHÍ'“Õn»§mX'!®õ:ùÎümÿ ãmÑ“³œÑÎðŠ‘¤}/ç¼lmqÚgï}N§ôÝ© NMyBk5"òß¿.qª~XX(*&¶@€`•ßq=/ytôÙõÇïv}ððaK}¦ƒ~ºß³çÏYD›úý.—êfmضãªfÔžÖ ¾YˆšL‡µðÄ¡ŠÁ#8=KÚöÉs¬¯p”T²®ùÇÑì|@¥€;g/Á¨¤… VXPùÃ×ǧʼn-aVrùúr2ˆyrA>!Ûóåƒw««w¹4´ÕÍI30nuVPPp4w®Ä§[Ÿ~ôh«°ŒŒÖº%÷2Úàmn‹CײgØ4`>¶Æ%¥œ¿;â”äÅeYÜ‹¯¥•Ì1¬à”´( hHZ(—–?m6¬(Z‡Á`,88†úûRƒ6îói©ËÏÏç§uÖ××#Ìx½“¤ÄÅžx 🯮HŸÇ%¨lg‡Òˆ Øtxa´Ï§‰ubbJ´:˹ËâY!(2M6® UZJém¾»½ª¶ÂkΜ9† f~7~°Ë””ÉÄìˆ3gvšž¯¨Ðkè)..~û¢bÃGÿ¬Ãƒ/R ¼¥³ôZKœ ƒWº¾09Þ«7çJIÕÎuwéi êk-÷pžåͪ«í)7Ÿ•=ÎPVVÖS,fM;-¾ë^y9O˜”yõ ³®åQƒ±™—{õ϶èUv”ï²Ö‘Uõ:‹·\/Ô¥&%,/¿RýŒD|jéØÇþ'Oú²óJ5ŸÞµçîãpìùúžçšŠAùKäM ½ò,]º£ÕÙ¥»ÞÜÞP‰~iAYE%Z-Dp³†FÕøØHÇu×÷Åk·OøŸi%m¯Ô5©M¸V-©xýC´´žlÏc–˜­w ‡Ää–½qm„8Nº™Ä7ð꬧U…®¿|åÊ;)éÝ7/ïoã6|Q—6è Š¬ÆNë’’¦—Ú¹¸ðʸtK€ºê­ežMƒ (#éÚ¥£K‚/E»Ÿ•³¾¶ÌKníe‚jRNŽ‘þm»èæ·o× Ž²Ë:wrË8wêÓLL¼N?MØ%}·¼\û¬¢wÐnVË&ÛÓÏžéP&Æ>ú¦¦¦6wvÑœïm¾ÛØx§ÀêÈ€µGkgC§_šOA€é²Bí¨ ëÄ µ£ Æ&i¯>>çYÑñ˜Y»<^1Ä­±Ò^‡´–àý¸€djù¶_ë¦ÒviÖ´QEÉÌñë9"Þ=W#¹½¿|<<\LîÓXÿ½G;UkžE)­“”´Þ±2)>6-òTk ©›.¼8ü™m×õ=•ÆË<==-:K–œ-Ù7ßw8휎–åZeU¡nûÚÛþ5>ê‚Õwìž¶ã *|Ï-¿¾)Tãnà‘}&Â…oÓ@mо'UOÛ(ç³ÖŸÞš3Pehçàp0!A<&&FkÏžäì;‰‰ÚÚÚvûöG—Iè_ÌÞ\a¨»¡whC¾w ÚdömÅÛ ^ѨV»¢s„Øè:&üFmÞx=´5£É›]ZZúÃÛòÙ€=m:„¯Å·†Óa†™5{6ü& ȯ|RÛ¢²é“&`Ä­O¼»’Ì 7È^h+%6=È?0»åÍÿ ;… „e---1{ÔÔÖžû°wu ¿À6›•cR’䨸x_Ó§ ^D{Ò…7ræî¿˜‹Ì^TR²içÎeg$vû‚ôãèäk ZÆ¥^¥8~xaÐùll¾¹¹ò¬Ë÷ƒ ²##ª½gvPnYEaýž¡ý‚Õí>ݶ YKAhUƒG¹t:s† ’)_ ù1ñD1d׌ÈÉɱîm‘‰Êˆ íË)q,Ûõx 'a°_?^ïe¤KãÇçÁ¯ä¼H5½ô»áþõkã¶Ö1Q©•6’ÖJéVá(÷fÀ}Ar×üúõj«šJ.ã Uפ<àÙhaqíø¹së-Go„ßÀpz×W¹Ëd)H¢ ÙŒ³“NHX®ÝôŠzP¯ŽŽÎ!@ h…ÁÖ¸âYÜ{Ü߭޾|Y²OÁI ¡óÈÍ×U’â[ç!ñã·nÞºuH$×:th~OîÐ…î,ÁÀ«Q×,­ênݺÅßTÒŽM˽só}a°7y& ©Y§u$¿|ófUýmí¢âb8ÊÞ--Mjìâ¯55¼á‹Ì]–öò%µ%Üôìé$YYvé;Ã1ZúúqÙÞ€0ý×ë^üš4GiÌÀðý˜yЙôm¸!üè»Ø(6Ž{>ŸFM„×®U 8r„»Ãú£y§×U‚WN÷•šF@aÚ`pµ×žCþþl¶¹;sÓn  ÏP Ô,ó[ Cx½ÇúÔ¢oß¾ý¤U¿‰žR–=GÉ@Òâªçê“6ãʨ’0iÞ5š$ètúü Üðósë³À÷éûj5Ý<¢ž¦aT?§—`:u-€]³J€?,쪋ͮ¯0ãããóEšU™w*ÅgÕW𫦱p^7¬X¡Ãnq5Ç?”|]eGSOww÷½µQž"DlüAªphuÉö|q¦- ¹Y:ާrMÚŪúj« öÛ½}ÍŸ˜@Ôµy]ñº5à$ýð"<Üø2v[ÛwKóšÄËU'Ëø/¶à¹dÖbÝ›ÅãÂßÕTÓ(ËqK†1…"¬¥À¾­êUǦ+:, Û‘”™É1aë užì°õñ ‚¬i â¸íÔq¦{äLòÃç§®V¡F@)`˜k«»÷š%)|Ô@oÀ­;³ ÎMH"‘733$;ñû¼ »©ÓÙΞ‹TôQ¸à3áÖÙ˜+¾ z¿¸Ù`JëÙÒõÚÉÀ-d¯"«WÏ…_,ß¡-«$]­h›bÓí–½9%¸²]µÏݪA†‘âÚG½Ûúòa kgJá ç.DPžpùc¥ç‰­Ý Ùúw<Ý. ×’ »Ö¤Ÿq_ ¢ CC–Ób€Q==½·É¶Årf—ÃSÚíªPfQÆ6G+²εók¼¹³l‡W^Omšzoÿb?PÃðÓ¤-ªcz€Ýè¸}ëͧǼÎÍÚ¤ècPë—˜y}wš$(G÷ÌŸ?Ÿ»³³óÒAÖ‡¹„’3÷X*ÎîÈ®_¡Ó9bÆdÅñ¡O³]láL"àèÑEJJ:¬ª#J¶Ÿ V«yyUm~£Î}¹r \Œ»ø›Yj‘åõÜ5€\æGʺ,»àö†/:.n3÷¡¡(Ÿ‰Lø%ÓhñÜ»ž7QÛÜqwy›Õ$‘ðêZ.wÄêÌĺT¡0Äaá¯=:»föˆÈȹ¼¼¼ ‡5 èJ/HÅØAà»1:®ŸE«I!Ãê…ˆ«»;[ppð=ÐAÇ6ñD‚vÈÇ©ZصÀ3üýRJÇwjaÃú—::TNF}~C“ûEFÁMFÁk3@féëë  ¼ðV/0ðÛÆ °Øàé)71ÜÊÂPt±×·†Í¡ö#窯—¾.}Mªe·è¹3*¢Ü,¿Ìžg­àHr Ä·]·P©S¯UZ4y·Ìƒ§¼½½79:âàw;=ûK‰Ã¯B5AA×ÜѸT|'.óºK“¯³³óY ÄÆÆÎ¤%Ï£ýx ðû]AWjæÞÒ¹b_WFÓQc³s2e £*o]È\1/6æˆU«œðÐ…K„[žkŒDD6½t s‹¸r«[D9Q¤ˆÅÝ4Wiçõä\@@@m0ü~àiþs·s5M·+ë”ÏrG -‡ŸPV¶.¼¨ª\±µ'§áÈ@ÇaÊ}JÍ Êü… 'ú¸$vßœ3{ÞÂO£7õ½½òª@n§Œ„v-ð[mÜðË÷Ëž>‰I€,-A¹Ô RRøUŪ$Ãy€Æ@M1}™Äoo…“¡¡<Ü܈µkc݇Ê#Jà«'p¤ðÍTj ºãx"<«R¯I§_Öî>\rI-„Zt\˜V.µRÁs¹‰gß\8:¯;½Uã DÌãÇÛ^µµû—/Yºô.ø4•ï)ã9Ö7<««ÇÍð©­åAŒµÎÇÌl(mnŒëŽâéEÜp‰Þ‰©½2¨™¦w;;û~m­A'æØ£§Q-·ª Öë@Ç.ç$•Á–eX+ž zó¦ !Wo>òáÝ|NΤ~—ð|Ð"&œ£.ݺ•Z±Þs‚›'<ùEj ªöCDÑé³ÒÁÚÓ¬>À¬š¡€ô{üÄz0Ügy[BY7&-C˜Vè­çÌ–çŸ4­ohø2¥ÐWÀ˜VðäÉ›=%<<'Ìí:Ž6ïåÒ××ß°&T˜T3›ùØS‰:އçÝšåc}ƒ½/°±’AÓº(§v¤¾~2¬å´Þãèr6¸å ovÑü ÛAoܲXÄsâÇË#,ÜsX|‘Í)…‚ÜÙ+Rê½¼Ö>sî÷kxF–SGÀaÁ÷<Ñ@d‹ •ÀeJkBûb/©j¬“Ì=úìY‚½=w®`ü„„Á­¸íeJÉ—ÀõjšòH‚mðõ>¢º:ùªÆÊ9™MA€3Ž–ä”»]º¶î͵Äms7Ò¼ ^m½l>Ð^Yôø±ÕsØÜÌšó÷Ø!'&ÖeåÅëYl‹(² QV¾ZpÿþlÝX¥Ù¥º [Û~…á)0²íŒRGi•»aŒ•2‡`º–ëYé„´ºðûh‘]ð7WaŸÙ\¿q×Ñ1¡µ¾ÒõýgU{g`ÖÃìÐB XX’³žÂ ÁTEl;ðx+ïß¿ 5ûÀ•¡ÅÜËÞxð@9¥ä@Z„À‡RÚÁ ”‹Ãƒ¢§9w¨ñ~µ‰OC»×æÒãð´Zâ«×¯áL¦ÓüòÙ!oÒ2M9žuÎbqqqfýKî*+¯’ùGiczL̬þ7¥§Ê\óçW+‡© ¾%í‹~duR!ä>·N”BŠJPÀãàƒgûúú>Ú´¨íuï{©’R‚>‘íÖÏHÍ0¾eƯ%B+\2ªfP>ßÁ¯¯D:ìnH{m¸)ªPØÙkäÁ2&ÙÇtÖŸvm "6wvrøøøŒ ÖÙ/¦gu@>çîú#ùùà© á&7·ÌîÛ¼ñe{>ååŽr™hELŒ}8è½`™Ùž,™ž›%GkÉ Œ””XÐ.îoMx50.:æ)Ÿ+tîÍxïGD‹BÔPGÿÇœF—¡{emU<üüGëëœ|ÔÕÙutu£ËÍP6õ$«Æ¾¤¤¤§DêÁk×Ög¤ @i`]—Ï}?…g$–±#šË/©Á q¨[ÞRÝÿö±qrwrô:¶£Ñ••™.¯çݘd¦öÕ©/8*ž<¹(BÞcÈu»9ô6+Á· n»ö‰$îu÷¥àÓ§N57æz<‡Qé6 ׺›Ò,y=z¤¥£ã+¾+ùâ­[K²]zülæ!*ªª6Æ>Ï š»?&FdÕªU$£žû\ŠsdÖ(¯Áð¦²û|»2³²UG{(Mw¼\]ÃÆF‚¸yæÿÞ^LZzÈ™_áJr²†Ä²ÀŒçH‘÷âêaR§A ê,Û¸µy÷îð,cƒõ+ó,f7̰‰¯Û™°T:)yŸ& ••kkkW?ï0~R×w;¸þaºÇÇ÷Wè ÆÑ»{?{¦ÃÃ󚯊C×z+†<©Ý.L³ÕÅ |è)ä›PcƸ°k +³:4ÎáâÕÝÝ«e¢)S]®«¬<±÷)²ðz7~ÒqMéTl ®e|¨ép¥ÅÃ×%aðêä8"±üºË8fR&*++p4fƒö’º=®|޹t)òMU”> ·B¡ñ¾1àŽ=¹C‚ëÅÅ+»æq :Éôùtg¤–‘*,'gÔà<°GHP°Û®äl‡[³ÎGE…Àó]ââìnnnOÍpˆF¹þ4»–yQ…µi–Â"Üׂ&…rŸdö÷ZݤM‚·Ÿ'Dß¼¹èôéÓ›·ow"u¿H5¤©Ì1L·R²°X¿qÓ&Jꋊ(_ßY€!‹zÚZŽ&É¿~¾»pldûu›ˆU"ïÑ^ãÇ \×4 šÛ–•™tOŽ-[ž–ž¾ÕÀàÜ¡C‡Š€-V+*šW¯Ø‡I«è‰'-Z$²&t‹AEJ°ŒÍ§Ñž<*&|•„Ķ{÷î­ÂãwÈK)(ìQ â_íœÝ`mem„°IÝ{×wÿÙÃØn{§0Ͷ~§'×eG^òá—Y(/Ñj¼ª•ª/AÅñCý-TÔòW€+#<7gÿ!?¿# 6aéé„âGNÆëÆ>*:!úÐ ¨ñΈ¿MŠþª5kTý¹„¤d"54.ÈÅß(ÇU{Ͷ³È‡ÞtêØÉ'뜸œƒUlÝ:;Ãc,ÇsräÂQ_0¶Í ¥ yS¸Ômî#*Ù/nTðŒ³©³"”w ´§çù¬Òz#ü²Áè ã8®U«W ƒúyÇŽ›55Õìí1Gs¾ˆÓ§ýà[vŸ&Æ]{›Y3RïK 9r$àÈøvÌ\AD£ØÜJ[mí…U…‘™.Û”•ï´´W& Â·Å]¿®¶};ç³çÏáºÛ6¶’v²!HÅ*§¢ý´ªÊ¿¹y¯çÇ×aR=Ne?”ÚÛW(´éRùÞ‰±Ã-‡…*ú^¾¤‘“[áž+¨¥àDò¾ ß,ÒˆRÚtxáݽ(äúõlŒÔ´`>>¾ådûUðtjAAAãö³#Fªª¬ª!‚œïѺAŠŠnZ©¹eKÕ¹w]?bL|—©¿«,‹ˆˆm¶]ˬ…‚ró#5ß¾MòíÊ@ñ¿œéöì½;oá(•J­¨Þ¾};¼ÞÏy1Ý«Žä;`ü.B.o®5 —û_¼ˆŒ í»÷zpá(ú|ÆçN†h*ÏÞãå%ß[>wŽ˜WDL¬ØPÿ¿jò™‡À³"žD)†”ž'^ŠŽf!œç,//_\F¦.[ÆÓpåshÚ7о#Ç}€ÍÄg_"L' BRR±¾kµf «¨ê±|@ûºëɇûlM ËÍ´vìx‰]¼VcCB¥·$33Ó ]º†y\TÊ€„›î¨=ZõO“×ÐJ+‚¼•á)Õ@ ¯…¨.©vÜÕÙµ,Â=IѱÝô‚Ðbž\õ®’‡@_ÂD"ïá…+ï ÷µ¢½FÏ–2@5Ìòvâ=>÷áj³Z4(ìËj …ˆBLzú²/^€²~ÐÙ@YyÉÞ›©© þ.QQ22ŠÈÊóÊ\Þ\z jwÝÖ7¥ç··[Ì—2º½$~›bŸÃk8¹¼Õ¯×¶µ-nÂôe(Á)Þ’ýUÉÆì<८Ú'_SHàK—.µ0¢ÑDms¨hËI™ô X"ò?=O{ÓD^6YäÌ®8ºTü†×¨sM—s}®/¼»%s±¬î°ë .Tµ±‘:wîÜ Ó2ÁŒj3“7¬Í‹pòw72¢Ùþ‘ö„ë+-ЃVÏáÙE×äù("†Jªà§ €^Ù—IعM—Ô#Œ|¯®]B‰2aCºt׳À{•–„Œ¸Ã=;´=p^¯¬ì-ª  ˆè}®©èF^ü^Í«o{ùúIa‘÷K? ñóóçDú—¹NŒef肼/F 4ÌÕÜ ˜™™i}JUµå <®»6Hgbö/ZºÔ/.nm,¬¯ q«5™#Eƒƒ-üù¸|JÊ þ~“…݉J´êÔi5'˜ñ?ôîÁy­ñºZKÖÅÚºyóÛʾ£›…^3\ X|~Be{®(¤4‚¼¨ÃÖKŽ}jJAè¾éT!ëÉñ娤&Š 9XzS3B‘ÌÃ1ŸF…6*zŠùløßÎÿë¿ÚPœMLb½×®ÿBc‰_íÿF€X<áë¿þ߬ÿŠ`—|e®ÿ:‹ûüXÃ\í•¥«͉@ÌŸ}Ws3/ãP‹ §¤‚÷í×Û‘æ%Ûßæœ7K‘;æ+7÷>þÿÈúÏ4Š5dOù¼dø¿äÿ8<BÿaÿüÿÖþϬÿ/¬¬¹Io·– ¶1RkÇÆm[6!E$¥¥wa7IK+ë)#õ7ëm߆DK¡zösxë Š•´´Š†RÄÌÑÑNFZÚÅÅEÊ+eko*­§#í ·…†/žúUÒñ«+¥èŽtxçf‡®ÖV6òßiM&“'¯fž Qèà‡5äHAÂçJBûœÌåE6ÙÚ8B6Ž’znv¼8=ó/yGÈÕqòbYšÅÞr”ß¡§*Ib.Sÿ‡Fô%w(In²µ¶£8šS­¾ng‹Š<ùË5“[!˜B6À+mí¿:OÙÖÕ J"I¡QÌ+˜ëë+|q/$órÒ§à¸=ÅÞ ¹îË bH%­-2Èß-È?å„RfHUs+©1 {ȆÉIOvÀ&genc9µâ¿#…ê EspAÚCVò"ŽnVƒ9Š Ýà­˜zO€%t Ù›Û9~ýÅ™2yTé`O“±ØçÙ»IY8ˆ(ÈIO~ócÒÝl lo‡ß_ý•¼ Ñp´‡ Td{ÈÁÜú"O ï’ó÷¯žÑ• lHäªut[š“5@‘˜”=¹Û:ssGx€E1Yæ9.æ6t[1)+[ }Ýä7Cæ¦fŽàûï«–>‰ÈS-’¹{ÔQménàÝÜ™¹§„£­‘°¤$’n‹´±uDNîõƒt43w@‚“$æŽHð+ÍÊÖ¢#©nÈ©®…‘’’_·ÃÞ¶vgGxlHdeå`G¡™Û˜Ê‹ D˜ÛQèô©¿zä'¥¿Ø#™TÁ¸ O°s•eêPΑÎìÂÎÞÖ€Žbenj#òùô©%­ ¸%…‡¬'¯Bþ&ÚÔu°{‹ÌØcá–Öˆ¢ (Y90›ot²¦Bö" )¼˜ |=Ù±4è™)¸´#œ´£ýä)ÝK3õÿÂ<‘©}È†Ž„-Ù#í(öŽ“Ê…¿P›ä£IÝKDÌ“¾(©½­ hÚŠâà0É“º@Ê9Y}uÞùaê ð••¹‚e Wˆëä" Ì+l§˜ÛL*@‹b M SNšþ~¯ ;pžÃ7mè@Vð¾4ãð#íPláë¾iK8ðdCºŽöN4G'û¿jíó iNö€WÁ køö[)aþ~SrÒNV“ýlÙoUŽùFå˜êüû’LŽq¸êGtejeK¥X}ÛŠÚä±Ñä&Þ!|ëÙætHŒó·1:™KÚ&0äço¿ù½‚$aæü¬“ß—œ ²_tóõ)n6´ß:fþ¡ð›¾ñ´ßÆÁÎÊÜ‘J±ÿ($­mÝ% {IÈ x¯Œ­ $+‚œêõ{ƒ“4£ØÐ?èkEMKü¤}xï48^®ó€#€ÅYŒ~ÝÚï'ãk%Ö®“õú–þ? 4ýYk"S‡§„Ÿ$/ø¬7'kkÀmÌ휦ð"j9Ï’džåÃn…üÚ£( 0ïap²_]—1$­!˜ùÀUz“þät0ä—sUÀ_0“ÁIÃ÷χuôå|Õ)Mžü;3`fìù*¦ŽM›fÁ~Ç &þÍ>³È¬²ÉÙ)l±¶³‚`##7M[*@µ*ÇA`BR>GŠ£#…fxG3à9nÀÖRHäW ƒ<ÔÜ ´¿ÝÖ’’’štZ»ß ÀjeK³¾@³¥C ¢ð>Nt¹ÆÊQ46udõy«¨ßJ@ª9ð sÈajïŸÏ[îMÑÆïsÓoO—2ƒ¥Yc ºfv+Gµgf3“¹ ét=Ã'ýCý¹˜ÓM¡é{œ<íê“ÉènÓv:uÞ?Ôëo[€ýu§Ÿ÷üú“>']àOàöÕaPüF7[¦$¤Cv Žå†4µ§Ø™!¶¿m?û› Ê|v¶oû>£ÑÀ!¸ 9skÓÉLü„ùeÿ*$ÕÖHÄÌ6Õ[Sì€O}Þþó‡+?ïz&ý9¦0wË›*ÿâ*˜„ÿâû¿Ü¿ 3­O~»œ mH';Ø)}Lщ5hÌÊ9 ˜h§˜Û#kN ù‡Mݰx¼ÑMüæˆâ¸?¶¿Üw¶”ÃHóŸO@†ò÷ópñßK˜þuÖŸ2³Äáó¥´oðÕV¾S?§ 0•Ѿç ,¢± 4™0SÞŸš7û#ïý¹!éöæÎýÔÌÖw\C&À) Ž€“@£ˆ3å"%À‘H°™L/nºìöïeohŠi( ý†Âÿ©¡~/S|0Xô$dp0uL+Éïiì{)‚3dc×㟧@¿ª¾£ LWŒž RùGYžÙÁÉÙT <5WÌ3}pE„ü|>SšßÊø)D¯ ‰}/™Ã`™âÁû:O/ùÏ@ý£všBöÍDA6v®)3}‡Øá™Œ/óˆ ÌojI5Ûßf/¾Røo”ýÕ”ÅÔ]€IvžœÖÓ`æû¯§p€ÞvÞa ß1°¼þ6Ã|>ÇÔÞÖÉîsh‘û|§î÷SXpÏl˜Ç2Ã(0çá'gá¿êHdL,3Õóo·€ƒÛ †#¬OsS ‹=|CBé<õ'óމ³‡Ïw˜íÿ¡o¯£Ú::ÚZ3åÿC ?ÙÜä,’®Sêþr`R«2 :ä@ûÝ0àCÌA(ü‰ˆð “Î@ oÈyéðYÕp¥Bãµ7·urø&½ÿÝH~ì*äo¨ü®4ߟ,cÎb|_S…yg÷&×ýüÈ7üZuÿ-èKQ-Š£Ù7ú|ðßD‘ÒWF¥¶›ºcsbÇ<ü[rüg¶ýFøÿÙ÷[ûš˜L)é7™4ñïÿ›FÞ9å¥S±ÐÁ¢™3ÌiåµßûÆý¾q¿µéŸ›òPÇÔ]è=Lÿá¦3N¹s4m€¦à!šD¤ ÈˆN'±T,…¦ÐIXŽˆ!1¨ËŒSbM±òï˜æŸ‚À÷ïŠþÀ¸§ƒÉgŸ¡ gB šëž×—[^? ÚŒ)bƈù ¡àP ŠA§¡ñ8*Š€EÓ¨t,E!ãéh „&à æ6ŽëÖÿÛ8›~“8Ó²‡´la&‡m!†\÷o¡¹~òj ä_öð휳( Ñt à 1T4žA¢ãC é<• ,ª¦55!=ÕËäbÓj¦Fþ@aÈ$„ÃQPXáq$*E¤cÈ2K#að„ÿ ÝýHšñoszMÌ8÷™¡vÿµäèG7sÞ›)t~¦T"GGcñ MEaÁ‰JÂâñhŠLÿ{¼÷š,ëoa–ªð½¦ä¤©Ó›d¦jú)æ Qˆd<¥H :žLA“©ˆŠ# ! +Ô?i’èë;&™žw¦T¼ Æþ7ÌóÕ›{~gÇɶ~Àˆ3Uì ŒøÇ„ú«{ÌŒzóTFýíCF“éôr™ºK3öáÙpØNAÏ do_ZCZ;98"©Òüó3N“å<3³³2§2ojOÖöðŸkþ2PÿnîY” à "ŽN¤£ðŠŠÃQ±T:°š‚ÁA@Ç¿Í4m±1w4Vt‡>÷gâH…©P?K·NŒÌ?ËŽt1·²BRèLù¬áÌ“òíóYRÈÉùÉï(ìEÃâH8:EP*ƒDÂS TH\XP¿~r7ý&•£âjþÿŸÌî·l`föI6 ÷\‘Píoðü6 ˜¾ÿ™'3ÅìÏD C"aÀ2x4èB1@jLC +¦2ðÿþ1ý&Á«9€1ÌM'ùöî'À™Nƒ @D*†¦¢Q –jJÄPè´Ï=ìb^7ÙÏúÉF~oœšfâÀzpìbÐiêù#øñsæ½½/‘…Ö̦îò}ë«ÓK7s_©ÿüTvHÀâAë( Ž h:E£!‰Â “¨4å×÷ÕéG0‰pÝÿ'}õ—rÕ™i&® Œ7é‘ß8«¹Í7 à7…ô´¢üBz†¾òS1ÂPˆ ¸=L¦âðTò "LÄSÑè²jû¾¾®Úþ¾W®´6MÞû›tDê/Yþ®…@ H44Ž¡ $4 T'x"†F$C4´È·ã€o[0;ƒ5$üé»±Èõvà·_fšs¦Pü©pDÅÑp ‘@Æ„èx* 1ð @¢ÑþÑÉŠéûúga¯„3…ì9ôÿç 4Sóþ ” –†…€Ü$Pð0D‚§ÐÐx:‹¦áq”J?Ð׿ Zö³9äò¥ßÓÛ¨m² øY°_‹3ÅÇÏeÙ J`0°TK¦£ÉàP,ŒG1Èt襵éûúg±¨;ù&é/Â?}^¹FǯCˆ3ÆÏ€"Qp€iÑD2•€E“42ŠJ cÐ(<ƒú¦”?Ð×? Âí'ŠÕÿ0ø708S\ü id"™Œ¦ÒP8<‰@¥£ÈXÁP!•LÅ¢Ð$ ƒ&âè(‘F‚ht „!üªÈž^îßÍ)õPL!óÏÄþ‡íßíÑƃGa Àcd:•ÁÀâ¨8•BÀÑIxž@$Áë.M­m59øÁ^{ë©gʘù“®´þWY#yF°šáÉÌݧ†?;ðõk9Ÿ÷rš2øïGžV¬¿±8ò =è?ð,ÃÖ ý±g)P4:ƒÂa±x2M¤ãÑX ~I—À áñDú¯û|ê´ruO–©惄LÏûOQðG$ÍŒb’'¦Èÿß<ê8SdýÔ­: CÅCtJ@SI$4 â°…§C¿.Ч—ûOPüÙÃÿ‡ãÿ¦Ê ±õSÙ4š†¥0hѨ8#  4–ñëNdO+÷pL‡¬ ÿ½«}nÛFúßóWðé3ó4¹ISA é“7qržKb_Úé'^c]dQ#Jv}ýí¤Dɲ%Z®#·Noæd‰°ØÅâ·‹ÅîØª~[¥øAue7¾où3˜3f™$E–«<×F1–- ÉL¶µ叝ɨp7üo)asßÁX0ÁÅjã  Þ5©­Ï@é°ŒÔpji–Ó"‰‘m7ÍüÙÁÕÓUb7rõh餄+§/€ßœIF-ÞÜØZÏãêq_[çê«;µ½Ñ¶¬ŽÕ+ã!0å`™#Äg"Ïó̧©,RL4*d H©<Û*s«Ç}MæFî¼¼x’º›¤®«$<„3!Ìk¸¬U9lPDÉðf±ËeÆSF¼HM±µI—VŽ»%Ƹ7£Cñ!=‰ëÀŠŽþF[ä¹ 1…–FÎzM e¢-Úˆ`>‹Àö¤ ï(nihÖ :e9÷™¥XtËr •Tøé4ê…¥rŠ1†ÃÓ+77Ú]XªYÆa^¤Õ‚䌊̘æ5±éöæÓY9î–àFÕ¢óPBÓe_Yc/éȦDÂJ03AáÄ+<3†8Ái–iÙÖ*“ÕoË,Ío)½5òÐvåDWóêÙÔ²n¬z`V…¾ù#ìã7™PïÂC@Ì;W™QoCÍÁ$zÖ>7D8­û¥ùÒ-ïûî“(ÇéIJýogÆÉÈ G®‚ï1}²ºª=.CwuUœ4É”m6a¡îK¢&c)o~¶ã7;áóÏ?ÂÇŸ­}ó¶^©Lhš¦É‘éJÞzãÿ@ŸÃ©±ý¥íʱ‹­~.ÑP·y|Ö«’~OÔè*˜Ø)©J?¾T#÷:¤Œ6j´Ù^5õôdì’Þ8Qûc9JÎK‹ƒà‹Éæ38v£óª©ÅöáóIòŒMøíƒÀ|ô“ƒ‰î÷Lò±gÜ r ˜§Cü¦Â9ÒWá­÷8ˆ£zÉû'µ¯׃ßGÉ…UHmú©[{™À ž«1Ž{ÒW—ƒ0Ø«¤¯Æ³÷^…©z†ô?[œ€(á¡ñ³r³i#¡—½~?Ñ3lûIÿeO&¿íÿsÿä8Ùùü{òÛÎááÎçãß_ÓÀ½I,¥Úéàô Y j¤ã+ü§Ý÷ÿ„çw~Ùû¸wü;ŽÿýÞñçÝ££äýþa²“ìï½=ù¸s˜œìí¾JŽœ[sv}`Lb½Ú”cÚð FØ·É™ºhUzÙIëÀÂ~ ä ³Ù|ô<ŠÝËädÔ5 à&æ¾LöæÕË$'ðˆ|íÃìáahà}ÏCãïûe9z™üR‚ÚƒÇ?í$)%$ýd)INŽv’ö ˆGù7,ûãÕ¿+ÍW²j­ûåæÂj]Kwµ´F½}wíÛáÔ1|„×¼C¨Ë¦¿âï£Ùø§½ölc¤Ä#[SèG•UŸ…œ¶ôûŸµq…=#æÇ53ýy5?I¶40 Ï@ßîß]½ßìܤ¤«$$ß7=’ܺ˜PBR%χgWUÏ€ ÃŸ½Ñx¢ú/VtØôw _Më—Ä%+b\—§lÚÁÇ›;QŨ¤]åªé\‹õêm–ät[wHEÿüÅœYÚŒyŽ0ò¾ ß|×äC8› £j„ãŠÆgQ -¨ÑÐFdíÅQ1ǹd2-U‚e¹M¥™¡*M›ÓЧowŽOwO÷>í|Ø]Z†S/Ã7µLLQß´,ýõ,÷FWÂp¡½ÊàÔù—ß<_òåœ'Áûíw/6ÍàÛbþ-ã¨åÓ¿é‡7áÃËäæ½ý¶™ í}uWß½Y6#›OÈæ°®S2uÔÀçeﮚ™¥ñâÆÙ¹þFç”!ÞËhSÚˆ£ð׎²ñÊEiZë,££ 7Þ—éi060óªLW@pÐÕp2Z̳E‹žò:Áãý6'8ßÖÞ­p(17³(wÍì&`0žŸþ#‡—C´TåÞ’Ý“£_šv¦G53Çå¯Q' ¸Ëäùÿ©óáküóÅëåÊúyLlÞ¸Â_'¯^½ ±šÿ>ÕÇ&C˜ïFTÝÊåi8}-Ŧñ ‘j ö·T’I™eÖ¦r%R/™’§/G⣽ñòN½j«ÒB3Ïu ÿ°\˜Ïr鸤)“ÔåËzÅ8ÜMú$4©–'>Ïy®4×<'°r]f$ú²>ñtl£> J\*Síå”èÌæ…ä„ûBùÂzYŸ ët9ß‘ÔÞPE€™‚6®($õªÐx–CHdcx%‚¶{ÖP.5Õ`gdŽîqÖ®¸– ¯ÒY¦œ ÆÝ;È〆%CD™3Y¤À$’’)ÌÌ:XWæÛ÷Üó7ÆdÞÑ\€5œÁk•N Egíã)jÒî}˜B2J<€p&3÷µ‰#ŠQ£ù|ᬠ{'©WNR#Õ…ðíR6¡·$-ÀTvÖÉš¢„±S?Œ\5é·vœ§–JG%2m-W¢P°N½×`E3Tï§ûÿZ³uÌ™¸°Ri¸gL:Ç…*ˆ0ÜdDORšRoãµí/w­›:Øn¤Èld^QÍ•¢ÞhäOFu*ü²N×·›úäZ¶Ö‹S™I]jr"8È"üšw)¡mŃ®†»ô›bÁ4áÜH©ÁHaXJǃJÈ­XÚïTb^u8—_£vè¶XCýø'™B›âwFýõ»Ûl ÝÏ¡U×™‡÷¶p^:–îJ÷0¼ùd?rÓ¸–þª•N¶ÂÍü*\Å0ýÞLÄrzP»õ¿ôðšüÏhÕk ||õm"\î9h±1;ït•yNÓ®mIÇ9¼9+5ÝÔŠ¾ù8ý¦äk?êƒ[dzFšù/Z÷­FNg7‘šñ–M€Ù˜çÙ“ëâ.®‹pG ‡@ÀÃÁE“6£¾ö~í,Ï%á–*öýk_ήÇG•Å!ª„ðxháÚž…„:¼B†ý®#òfÃ<Ûë{3n»ÿø¿JiQ¦„5ª–H-9UÇ Qzý†äO?µê³ßÁHB{‚¥"·„PfB™\IÂhæ¤ÁHÚ=<Ü?<ý¼|ztrp°x¼û®°ßÀ.ë‚á×(‘½e¾)†þ„å³Þ¾+űØÚVýË`Õ¤Y1à¸|?¾i³ Ÿâö÷'¼ÁÒ:¡T<ÁÕ;ÂÕ¸¤:Á½y¨‡ßÌ¡…Uþ亹k—vÌôŠ~ØÔæv³ç/bP¶ ÷î+L@^…W“a¯N7RßÞÁÈr|fÖÆó÷…¤(wÄÐÔg[H‘™Ôä<ó¹ÂóŒ<»I5„|DµºDƒU¹ÇØSió4¥™ä$u´àÞù”3<ꈎàðJH³Žÿw¾-MZÏ%ÉÀ(ndê½ €†©UBŠYÍqé¾:Å]é}QÜÈ 8O3¥skT&²¼°€%›õUu8ÚèV=C)‘gÌb͉LÃ`˜ñÂ)— oµ“ cb€s!~ëø÷ƒ]àÞá§Û„¹'Ò0Ó—sF¼„‡iZYÏ„rd‹€pÈTõ„~ŸÐà¡ÁÚj–€+¤»jßæu[zíún€êaog¿šVAتD-ÈÛÂ…¶" ¦/!¾*^UÆdP½ÚW†/ ˪êÕ¹#1—Y¼‡=kê%|[Î2R„Û€#gÊósÌÕa£Íýöû ×Å/ѹ~‹×=ûWÈó}“nÁ…׎VÂ;œ#7wüª“KN§.³Š)J5ÆS;“qØ’I^Á…’®í’ÃnêK‡t“ƒÄ\5yÞÆ£åS“¨/ª7¸7'^‘º¶rÆ…É”SBµÄ[Æ´áס'n„«ñÌâÜÜ5GøºØ)TšœF·`¸O‘f‚ 锵¹*üg¹ñNXΧ-*‹Óp;‚7ÚI æ ÀG6dnaÔ9/Eêi ß»YDAHq¸îðgHÀà ©¶0fÁÜȤ@– *SÆd^Ì:À,e·µß¶swš«æü“LK ŽÆèb‰Ö…³©yãÓCèé{?ýtÚ§;X]’¤™8.РrF˜£9ˆ›ÕœaY,âX:•æŸ~š6Tm­¢Îwˆ Ä© ØdR¯™ð. 3Y@ï`VÍùá× nYìCæ>—9®!íVJF¤JSQd`' ¹X­cä¶nTËb‡)˜8&—,Ãx*ÆÉX “˜NZ¯êð½V‡AJBª‰î-kÔ2Û U–îɸGS ]g¯³g;\¿yÜ$<9çÿ æØ» ªiÊÒxW57Rú!²‘˽žÅ)AõÝ»»ùìC‚jø:¦Ð{ò¸¯cÎ'YûVÄ5˜Î,a”yfYža¬UH*(õ©Y„éqç ßt ×} gæ5°· È ½û„bžPÌßÅl^ ü¿ì]ëoG’ÿWˆ»·ŒÝ~?„E€äâ,„KlÃv6Øý"ô£:&"‘v¼ýU÷Ìp†e‘´$œvءũéGUýêýÕfFßS–É@ºT<ûäñ,BÅÞ§ogíõx8²Âê'«·RÀïºiGÊó!¤î𤕠ª6(ÑÂèÒ¢&ûÀÂPÖ$¡'j²ìZ†J.r/’` Mžs†I¡„L ­7H˜ùáüõóÿ}ûòõ¿Jê̹#ÙÝŽß]zBJYÔ&:B…RÒµ ÐÐ`’«½’ìq©GÉÐÙ2÷´÷ÉI‹/ntäÙKïA2´1ÉJ#wͽœªó%l½Ï‰ÄèÐÜcÔS+r F.¤åŠš z_V~©=Þo~7©Ñ™›e¥Õæ¬6çŸÊæ,Bp# ´”Ñ "¡4hoƒÓ“§õ)u”é¡~?Gn9ívNË7«öÕX`ù@WÝ–<£ÙÕìýqÚ<›ðÏÁj¸uxi*ž¿_<¿“ÕÊÖµ•¯(—T%Khà‰;ÄØÂ “;âh‰Pƒïž•¦‰Ë»cvé¾j’ö;›B³$"U¸ë„ƒV«¤Ü 1 ‰ƒþéöëwS¿ÏÒÑ“³£«Æ p,P…”Õ")šñÌšÜ eÎv @t+wÅÅrúŸj„ Ò3£´§ÎDg9‚å­M‘'€mbWÓ+8ªØ` 1(šè䊟´Àû”ãµÉ}Ž,Ñï'µ,ÚŠŒ"G°Ä%ükªˆ}-Àù‹_â.¿xþ ¯‘HÂ;j£Ec810€¶+(iH¹ýÖÖk¼9ÿ÷ƒ¼Ë­Í”a 𮹀ãÔ–>@$J–v^#—G}ÕH¤QqÑ4¬´éIà)šõ§`O¨#‹?$ç!„¤FicÊyS‚ÉDð6b;ů^?ÿçùó_]¥ãœ á¼om Ò)mò^âÎã>÷I”ë>æ$—@YÞù2f9)OwÎi­¢^j²×%Ð[Ë_"Wó‰n÷šhmc0œÀkG¼åÂzå¸]¢gitLâã~ú‚×&˜H”2D2ÏñøBpŒqÃbÔ·Ó_µ~Îcü4Ð\‡”™ß$Œ9£G9 ´Õ2˜±ù!àbõATD{Ýqï5ò¾«c_~žÒ¾|ÏëÓ.£_§Ñlüñoߨ¿ê¶zòn+7I¸ž\Ouù±¦TWZM8p%¬¥ù(<ݪº Õ(yêFÉVtÿ£ä8鲕(F°ä8>IDa©æÒIéƒÃƒ‚zK)||`ézݸb+Xª`é>ëF˜jú‡î@_[Ϙù—ëËù †¼Ô¼V<<î‰ÚÝüé;B)ŸÑ£KFx°Fsï#ž»ÑŽ«r£,¦¥‰)’H„XM¨'ÄXbRÐF«˜¶Å ¸š¿¯^Ä Œ«±"¢›=u²p@D4›üÒêã7‡¸7-w*xzgb ŸÊ¦x7 ï2¥FªïøþƗت¾ÄÇMIÊHŒ$:Zãbbž°HñY2é<Ý>ÞlAÒ©ùQ&òÝ9Î|<°i_Ÿ qËßÜ­mOP#?æ=+EèEúw„«*¸K<œˆ¡ÁÓb~ïCCÍ“þî÷Þ×þÇšý¹è? ùý¯oØ|r–—õ÷¿ùo7ïóöÝt9IëYóæËwóõeœÌà=j1Ô'ë%>vòêܲüÏQMæa:x)Œ´pÀ  ˆ¢Œºa“ùÒ@ºìù.¸ø×ÓdówH(È84• É£ž­­G1-²œ¾ü1]ÔÃ-J§€È¨µ‹ˆWŒä1!:·+ÿ³Øúrý«‡O¸¢)Ó‚"÷Î1‹«!È_Ú$†§XÖP¾2|ûÃzTwíÄ)(Tyì— ˜D}½A M!‡ÜÚŸ?;»÷6ŽËؘ;Æ.“àÖ‚±È à‚òQm]€A¯ö»ò.™£ïúñÓ¾˜ É\‡ÂhÔ160%StÜH/ç&íÎO/§¥³Mue<^ å»n×·¢)›OO[»ë¿þG' ÀÎ`!uÜšQ ÝŸU<Øã}óŒFgÍ}¾’}%xP-¿*ø¨-pŠ ÀCÜ ‚ô£SyŒYU§Þ«-Íðödj9¼êVþª' šLÇÅmªOÖŠ…[”÷ŒÚ½lÿyï9-öyÎ~ïÓùº7ä—ý{¾ÝëT­>á|1×ß¾ýx=Í¡•ÏðL·Y$¿³›Î–C>ƒ#^¤e‡*Ýz…ªñAø}6ÿp ñ7¸Â[¶|6Uøëä¦q{ÐäÂÍ ·x‚ í34¥ˆÏqVât0,ˆ¨E¤ý¤§î‹ggíeüÃüÆäç£Îû Œ•FiÎiP"4ÒÈÀ^·4ý­¢¥G¦1ïúfC‚Íé/Tö*PO‰s üËC;AlÆRÊ$­t*ZŸ@¡…nµŽ£¹âÉØÞ#«å–ƒySº?v‹X{)´]#&ç©AïÜ× ³ÉõÔ â³Í–6ÎK<[·^ᮬòíu³-±eYêÆùºé¶‹åj2ŸAv¯mýà"·5[Ï"R-Ц>x€ó9ÂÖ®ÌMÀ¡9ËÄ¥âº]¸ÙÒ5÷á=4æW×yÜzAÓóElœ¼9 l2Çu.&.\kF>´ÛÿQBüÐ$kÎ$;ÜæÇC·ÍqíŒe2ÆÏ@46w"á<&*œt9K„*^Ö»ùr3 ©9ºCºÅÜFÕGG´IùÜÈɈøMZP–rOî£zh‡š[iRB˜$’RRÍM$âYç¬ Â>š¿Ý¼è§§L¢´\Ñ$¥’ˆ™½’”i ñóËžÿôÙ‹JR%d#|0TH‡ò†ê¨ 8F¢Ì'¶!øË‹ÿ{ñò×Ùdzæq“ä´§–¿ÜdLHz:IM’B«Æ ¢·T „RN²Àâ{ :{Hf ùsHz…¬b¸Aó"9æ ¹|¾ÕœybÒÉ£˜ô6šMí"êx#â']¦Ž®>wÞ#bÍû8Q$‚ü¤Pº!l HÔ á¨ðDvnÝC±Åm4£e2(E¼D©ä ‹,‰DÈÄ-Õ~š[|îm┢Y¬• a¹²¸úhRd=)£Ù»ÜcÄÊ’DM$J1z …K Á§$52'j‚"ÚâýÄ#ƒãD!–¶ø7N[)f%a“ 8å‚[‡×>ZÁ‚í;—|5 Ó(F©õ¦`2 ™UÆé<ÜD¤DJ³½¯óˆÏæn¡»±»‡%lO+8ÙàF¬TxޏÍr š9î•F\n¥†oEþ/~~þóËCÜS7Ò'9b@h‚"2ÓÏùz÷ØÎRî,ÛÅ—UÉŽK’7Iín¹˜…˜´¬líßî™ð€’%:¦$ÄÜ{ú6ÝßH,™ýy÷®Ü±G}nq(³3Ü(Û_ °»|× ‡Øw±gá·…ù¿ÎìØ@’E¿_ò,H#_YvÀ¦<ìBH^•”$«ï¸×áaüϽ.ýžÌÀv•Ó+Âbj¡KеZ\Sƒ£9ˆµE*g£ ðÉ£ '³xŒq.×ÐÉ+*ø³ŠªE -G Uê‘ï 0B 6ÛO×8Õy³ú²¾h0ç0EƒWÃ$< kƒ¹"Ùñf мæU‚þÉžz7êJÁ•A¬À’ÆêKAüëV+³ŽqÙ6ö¥ ô:ÄÇ3évqž^“«(¿ ãHD51þY¥ä©@±Mq42\¬kÓ]Ü¢õeŽ•¿œw~÷¯ºêʺ۽šo¸׆ºÏ-”MßáŽ=„ch1?Ü1Ms™ýÕAfﳿÑô‚¹V^…éÝ;Uöø×ûœˆuW’ЕHØêBh–L¥>tÑõš¯ÅXu/… Ìi ÍD\5yªÑø”ý1ˤwU™ YlgŸ-¹.[ÒäŽcpÐa½`è1æj>Ö4MÛN³ò¶—¬¶HÔ½00Û³L Rµ,ª›– ¬=äð¥S÷þÆ`“÷ ŒÖCákS?ªføhóF( rù+®ÀÊ®¼—Ìÿ¹Ê*ÙÿÂo4M#('½Ze‚Læï.<·òΡçŠq6asÓY:Ŭ¼y‹¨JÐ×]_¤ }Cˆ§„Ê2'åu}uØÒ°æ\™“)B—ß«åN¦yM‰ô?ô"˜˜"ìDÎe®a]ž'1LàU’~Ì”ƒŠ§0sy0tý$VÙvðˤçOäèAƒYm«=ÌD¡•`7Éɰ&ks6¬IÚ|¬ÖteÚè·ä [JoŒú–ïé.3X€ñÎŽ¦Ûc†¾VO(´/éÌý9¾…Ùj†gÛöŠm9œú.<Ö\}é|þêìäø´sP·­™°nn`1˜A#€íéjFÀ5P£B—W2²–Cþ’q¹³è´Ë=W)L3›aæÉ,f® <_Mݳ<ÏôÊðܢ긩چåÎE©bþÛr‡¶ê4Ô æ:Œ»ÁЇÑY¶¯3s©UYÚ–’ Â{Ó(ä.ŠmhpËraØÔ ºcæaaøª [Ûº_?æ§$b š-žÚƒÿ€Lll~›Ê­‚V’ó{žÓ4GË©³¾‹ÅêìÚ€’évãI¦»1±:£9ýŠÌ»·0$•tÐè+^s»²%1u-*×qU©»²NBÔ]Á>HÑï" 7²ÖåUK1Xq’LAÑré ’É^U_ô†vQ1›åÓù øñøÅÒUÞ B6«b³~ä|Š€)Ê¿òÓÕ7w÷‘pŽ¥ù˜\ ¡3ÐNlËpÍ e… ¦ht—VbG©…Û‹ô[³8‹Fç¹³ãJ­ÇnIñm$x)¼÷ðïéc+)UhÒ ‚/‰Y&6*H OeˆÏó+„HâÐ •–¨$I.òü¨uj2]„†ΡjÓ¾Bg²]Ù^Ù{…Ø¥ºü…®ò‰JG˜Oƒ£Ѭ0°P =­¹Ùg“qid „¾._Ù,mrªdã* ‰Å‡¦úØD™å›>£T3ujXÜe--Ó¥ˆ<îh”Ù ”$fjÜ24Ý"–~¹–¯À.T4e÷Eô)ƒ1w"fl»”‘c{É×ì#ù•âa%íÆD2NqrY9*½/ý¬käÝâ9?ª¯€rÁ Áq¬QLôC]Ó´Õgé›Z¨l\ÕFÊaöèc ÿ=ùŸŽ5×bøÊšå¢”`>øR×Ú—5%¡ u³[ˆ€?N‚ ºÖ'«£ðùLøQŠ{½Ôl³4+ ‚Ê¢2ºPN"”ŒÉåú={†Úܾz{ñáâäÍ«_Þ_ˆöËUÀ²c¢oï¼q&\_uY3~U¹^Ã)þ/¾BVŽÚyL?`ŠW¯*<Ÿe• Ûñ~]0ËèSÒ§ˆ_•›ï{QlöÙXñqT©‹Q_5“,J?€b6‡Ž6ÓPcܵ¹ –’Ò ›‰ê >O-«<ôGÏÛ6±ZI+ëSÏ—eŋӄ!náËÅIŸ|‡ª&.ó|úäððêêjÀ’Ï×#’tt(€£Tk²@4-ÔJ²4€iP¥¦ñ¨Gè8/Ÿô…]Dô;Ð5Rôïé!NtI~®ñ/6õü»ì¾æŸqä—xgÓHÏa¥á/‰6V†±um¯%t, ÿêC[Ÿuù~,ÇÒõè†c˜ºíºñx _#_ÕDÊÁhå߯äçé÷/yqñû»WW–¼{ÿÓéÉ Ò;8<üÕ|qxøòâ%ùíç‹7§À4rWrFÈ‚éøððÕÛ©2£+Sð¡‹³ÃÏX—Ž…Õ¿y¥ä€å µxÑàçÉ8Ξ­¨F÷M(}åÙû‹×.0¸•üvðþøàE2!Y©çäÕ3o^ÕRàð’1£¯©|ï¥äŸŠqгú|¾½ˆ: ”æ %æ/<&ÇïNžù‘°z¸øyÝæäuæK©V,ºð—ø£’ðv6²¬‡gy¨Z\yvÉyÞ:—š9|Ç€8Ó¼úÍô•O•,ùãÏO¯ eu(¿iW]ÇJ+ÏKWú ²Åÿ­v”4¼ˆ {—Ug„:ºuéN%QúþÛ#P²fxHòxÂ6¸~„±¿g8´z‰w$DÐ㸋LŽðg.sø~õÔZ@«©%‡BâË]¨€BŸË“i¯ÐIœÈ#d‘‘z¼T$M‰ýDà’júûº^(È•¦xÇÚw…-ÎÇãlJƒ(=ëi=ñyJSŸazžæ²7hG1`&bàOˆíL?õ¤iÏDÓ4Áƒ:ŽFq¯x]Ux€¦Ó¢ l>‘¥HÙ5UNÚ¥]÷4Ö¤ü*0–¸V¡êï=7öÀƒe‚¯eÃR×"…JYºð§P¾j^©v‹ì5X¡šÒ_TUIRgU…&]ÑÍÓäJ/Usä…:9Wž"ÀÜ)Ž r¡žVõP1àçohË xGG\ ³®/Ô1.Õ:ÎøG0¯&kS±\­®—°eEçE@ƆڊA+àÞ¼vqMF­fäÀ««’:tueëSnÔ¦Üè8ç«{"Çx ¥ÚÌÕhœøt\¯å_òY›UŒB ã¬íì,büÆYŽq¤#Å·óG½Å :@ÎYÌÉâóÂÍæsS}%»Žƒ²añáy¹µ¶¸0ÙäªOÓ’QL’¿fO20ƒüIœÄü¨G GæŠÁ\‚U_ ¨n\70þe¶_˜¿ÿ/J€·ôÓž>lR×ö>||ôuAP ²bÀ/}IV2_Šbg“ p¹ž8{“”ó{v0áÈË`JGƒ°%&¶V¹àø ͪgÔ¬~Ê&J:,vñœVj­Âü —‡8 ~ÅÁxÆ8ù石$?’øjƒKùI"?õS! Œó£,gQoZ¼ÛåäC–ÌÒ€×] 5MP:n¥½¹«¹Yõn‡ÖWÖR]ßU“¶tP]®ÊcÐ)Kª=Q2>Å<í8¸&£”N/…Ki=u=)è¨^íê-ðXøj„§E(yöâ‡8Òéâ‹Ü+¡Ò?™Ð)l¢Š¢/¡jŒå'ªWžá‘#€j•Ér㪑SÜ´dÀÈHvI‘ã¥À@eÅ1,µµ ß§ SY ž>°ì#IýÅèÁ$C@ªg=Ý5ûºfôMÓíë†4âÖ7ï¬ÜµÔwCSþ{\þ[öRMSëë®Õ·†Vß0ì†>[xœÛö«Ø¶K]²t³ïÙ}ÛöuÓiè‘ݪm§° ø ¯ZRÇÓejN9]‡@ä‹þêÅ JŒcÁòÁH¨H Ðú{òð)A3#~ÖÅëé¥Q¼ƒÙ7Ó‚£<-ui'I*"ïÒ¨fÉTT&Ohຶ©ë˜Á´ÐuG§t8ô=»Ó{^9R§`›à„€Ý«€æM|R…ýUuX®à¬^ÆOò"†º—¥äz˜Q+>Õ讹#Ýé®+-ÜHÙ㌠-WóLgh™¶eQà -Çð ™–¡}¾“ÆÔèîF¦E§Éº=ª›ËÙš¾×Ø›-ô½ŽäКôÊóõÂéÇxN£q&ŸÅy"ºÆ_øR¼“#ﻢ îÁµOËñêt–cR›ˆW?ÿ—áê/’éµ fbhšNNgù_äÍŒÇ<­Ìz$q0Ž‚ÏzЈ¼rM|õpB£‡ÿñpœ'OðÏ,‡ßý¿f‡ßi¿Yˆ¿cøÅó‡G*zž„tœñ£Þs(ô×2¤A²(›Žéõ"FŸâ$›þ8¨óc<:íò~t)—׎‰,ü5Ÿ& (#çl^ò:ò¿¢x´ÍTeA¿sœ¯ðÇüŽSœ$Îpî–')ûŒ*»¼ŸBÓ3y2?ÏVX¦$œ{IG§QÀãŒW1m@Å®`ŠCÊ9É’0¿¢)?MÇ‚Z“~íÏrŽ=4f‡‘„Eá5>˜ÅLç±ux…ÆǰFç-¼ŽB¨üõ8IÒ>ù)Ér|ýÍ1Ñ ]×tØéûóãUÙ?¨NáQ0â ô±ØHEÌWÀTLèGŽûVš~AzÙcy‹á4‹ð’g™ª&¯Ö“ ¼TA!´"NVç@·0î=zÁœ»Iöó:Wq»ûPËúÂpHE›ÌÃ;JXCU£œ+jň}k ð‡ïÖU=J„ éûN(/x]Æ©êýPIÆ#•ýxÓ,°iYPšý=÷·ãæöÃdÙ›wk;wϹgüNö^Wïà]íG¾b;ÊÐlŽò)2I¿Ð‰BŸ±Áq¿âÔA‚–´d¯>ç) òÂ'QyqM…4#&`+Ö!pÊË&dõËK[a%mvv ;sWd©ôÜd?¯9ƒh+HåáÀ]Ó–Nˆ»¬rèjÔBYýAáŠ}m+\ñÝŒ\]raéTöè°ª•Å1Vù„ÖŒ¹I2æ4Þj©²$ÓQÙ“Íó<è¾­Zxwh[‰½§}5?u»÷¥¦áNöÔ|Ø_tS­àým(ü´Å^jV¶+{I†Þ}jmŒá=‰¤º½z\ÞÚà/#yÆüªÂówи늉·vã>,ÈqS÷·‰ëÇìKp߆ÞR· [»×rCÿ¯ÖUHt î é//=VsN_`ÿij‰H*%~TdUmÉæér¢/x§"Èæ´yÛ±Œí‚\Š~mò®Š„Q=ë®64GÌíÇá5¢X·{óß‘Ïj-uÞ¿YÍiÊíß’ÝœÁ@2q‹Á¢/¦„HS8b57b·åk’®ÅæÛÀæW„~««RÈû†K`o9çVÝ|˜«7§ÀE”N9Rs™•ëQÎø':žñ-9;j‹K»˜ûÛ÷§§Ý™U‹|†]±qdÎÇ7 ­MnÙ…H"‘´æQø2*E@0€½•sc+çï è¸Å4Ãå.w4OijŽkêœSßdžJ—_Àmê $(šò!7˜íùæ¹÷,XaƒZCfHù-5Õ$ 6¡1ìq ÿ¾øåíµ—[ÁþµÄÿstM7ðÿÍîñÿöøß þß"@Šzsp¹‡÷ÛÃûíáýöð~{x¿=¼ßÞïÛƒ÷[ÐÆ¿<ªvñput!H\? >Ã:ºÀõ:жØò–ràë×Å]ä²È€ÊÊ<¯jfšôµ‚l@Û“Ftij.k3à^ýõ[Bü+ï)ØÜvõÚ‚»è+Wþ–pù曨 ޝð¨ËE7Aím,†[sÓ ÑÖŒFò©£­¡`ÀSl6E ¨J‘™@eãŒH Á›sШRRV7 KÐk†f÷uÛî›C£¯{M¸p`m¾ £èâÉd:×·&%[ÝC¹„«çY}WëÛC­¯kÆΚ p•-®Â;"}|œŸˆÏ³~VuÆÑú†­÷mÓéC·+¤^k ½5 y¶£‹æ‡ºÑ¢yçný «oXV_wܾá6áz+û6NF]{EV¡ z†èŒ‰ëänÆx#¼JZ6ûúzàh ­»÷W «ei®X-ËjBÔÄ‹z¯"6âíæH¾º 1Ósúiÿ?{×UqîyŠ `‹L!À™3ç1'•b$!¤`ˆu™9°’M Q@lü¡,(pEÅ ·úC.•‡ ”‹Z(¶‚"Eå…Š ÷›óØGv“ÝÍ ªÄŸÎî™ùæ›ï=3ÿQÔtDÒc2í@zj0†ˆÎs0'üÀ¹Æ7Â15Þ¦‚ïãnfU¨(Lª0ùž {'Eè*SW9úDAü$&(uˆŸT¨.èR*d2¥²,¨ªjÉš¡!,!"ëš%S0þ„5ñ¢„5Óóƒ d¶æš¿ƒÜÔ™aQC±` LL”H©¦(ª¥™^·¡þœ²5—sÞP"IOmbR‘ôLÃÚb™wh8J¸1„g–á¹ Ïb'µQòŸ˜ÌÔå?U™¬‹ü*–dE‘u‚™*ŠLmÓ¡?Œ$¢‹µ„Òm\ùO<„hc](ORô£kXÝ(ßvGT*h¢iІ6D ‚I‰Å¼ž)wÞ®ù áº_ýî¶HR›çTÔ‰ó3ó7Í FÝ{©%‰{O]KR•ÜTàÎúK%¦™à‰fHÉ’¨MULSÓ¡Yš¡œ-Àˆ1 ›˜pWñ†„Ø !UjlLE3rÌòp8åÆP#Z3÷^ â£.þ"2hW2 QÑE]1‘¦Ë’¥›eQé¬ÂÄ„»BŠª—Å3*¥6©Kp‘[i‰Š—hQQLé%-Û‰éJ]¶S•·:]¥B˜IKãgäÀÿZÑ%MÕ-¬[¦@TtÖÊvbÂ= ¾;±Xÿç‡A‘¤¤8©g7~lu[ª;¾’,º¬›Z3:dqI¹é´šWR~h4„EûS„uFþ£<ÊU3r§[,M¸3‰ŒÿÌrŒÊæÓÒª/&ÉBR4Ö¹"ÔH‹ì»§iZƒ0»>–ת°¤ŽeÖîÐ¥Xí©ËdŽ'Qr>;ÐYz¨Ÿe‡:éP ë¤-#®ÄgOhÝ2ô<-èm*ç~ÙvÜtä6°ª|=k…=‰ÊÙY*ìnéöÇV¶­“âUWm$-Ó]Ö%å•RžO‡Öj—hä¼Ficò¦)¹¥, Þ €R/Àm$lg8íÑÓHƤ*~Ûíä'fÐ9º2Ά.,ã˜%ÅÅnîxSSÌ‹âÅV [ψ¸µ¥­G  ·"Èg´[a©ß íËóÍr¿½p+äÉK¢£ì¨K<µ× Ê$¦!bˆ†.2ÕP$ë ¶Xø…—¸lºœÃ@6NôÌE̶ê@“Ý4ßÉè=·×Ž\«jsëÎ?‰Z×™Å>©Z!­ øI#g©â«8¡w#€«¤^r=—|$•|$ ãÜúá)«[Á¨H€óTÝ€M ¦,aA±DÈ&KÖ‘ÉI× £µ|g ˆúÐÁN°êSï‘Ä@.Sö\Ø…¼˜:‹kÌ"Þ.Öò3æöNL—,hÈ“/L·¥•žQÙ §‡öà8šŒk]Ö…\‘ ”G‰†76n/a៞‚ß ø1¤©‘(nvO6zuù&™/9°Öâ ŒË>µ_ê9tæÝ³î}Ò²*LJËàåÓb·#ÞP‰] ƒ&XŠJŒÎT~P"`¸oLÝjvˆ€‰¦>Ž‚]„íÒ"ªÛe~˜â` x'[í:²UdNáxö7M Æ€H)‚AÀ 1Ûmf~nˆK¡p,!ÊVõrÑZD]‚¥YÌÐMYT@Û ¨’¤BôY³#öŠðÙ|+Õ~©¢’Žt¬ S‰„DS7,E²i"HÑãõ[R‘eR=×ÙÌ%°]é)e} w¯Iº©*ÈPt§H²*êªfêÙšŠN‰¬Iš rk&a™›5ë"Y±íÕ€Ìü‚òý¹7fæd§>ôÐî1&!A³dè¥K"Ã*CT‘…=5E‹JŠD‘a ” ™À#ƒJ"Ec^=b²†åŽÌæ^Y0b¸?ØÐ¬ r‡æÕž.ˆñ©Ž©(Š‚f0E&¦ è玥 šÆ¨ÜÒu^À±0F&¡˜1l©¢Lˆ‰‚ä¹C²ýCó³‡erjüYÙC² ²(ba*`j"<Ñ ¦*`¦MIJ©+š¨üaÙ#s³GÕž* ª@¨¡* 6f¨&¥„QEeBÖ)H“¤«–a‚F€;™NÒ$]§²á ç :$ ¦0LWÞм$XUW½ZJ­`ȶDtEĦ*1¤Bt2…É¡Šˆ,…!ˆ·‚oš"˜/‚LY#СŠ¡±zÊ”ô\Ä?%Ú Š  ²`wÁdR¢ :³,Y•TJ ]P¨É,Ca’¥š,› ¡²¤˜¬ŒÂ‚lÂò‡+ðÏ–›9¤Iá˜Ç2Æ ‹´ITà1‹G°ZNt&eÄðjgÖ%øÑ$¦i"tÚ–1¦‚ 2°µ ŠcÖí·v½™0g&bè$/Æ[0%°e¢lR1Nouõ[’$#¤ÍAÌ”(UMYÑ06t,ƒ6ÆéÒ,L½3E7‰¥ LÄÀOƒ‚‹T,C–UæÇ…c;ƒxÈ4jÆÃ¬©G~œˆ%Š`÷ éLAª&)ˆj,Gƒå´¼"˜òEr‰÷쵞€QßEž$©R-ØŒF,×Äîñü‰¬qÙ‘¾»µÃÉ¡@@ø—âºÔ[œ-‘K‰vÞ‡/é9cr¸RúËkt¦Û¥"`@±^ÊÏü¦ÙGpí»Wø¦—ÈŒùìéƒl4pw ‚<ý2¨0ÔÆÛ•›åJL(ÏË/+a .S#2PÎ)`3],:ƒÓYV^45žñ¡¹yeh—´^^RRÄëEÞR†iŠÃ;¯XE€ÔY-ªç³þÂÃdÜVH³!Å*D½Ì X‡˜Xfâ[ Ú§ðBª©ÂÞúR*®*‰”g‡«*uk ‰º-1§ê˼5Vø5=­zŸUƒì'˜S»þ*±¬Cê¼"ž2S¼—á÷xï&âL\FT%Ô=\ˆZ«û€²?`ƒi¥öbO¸&éÁ$…eiI€#B€ „Ût-–ýI1-rÊv!ÇtlI©g\#—q«[Àm˜Ò›ßïŒ=tÜÉ+‚‰’ʨH¹ºe‚ÉÒªêDÔ%C• °,U_ÌȰ ­Õ§Ua u6,0Š¢D,Qe’ òe]× ÈWt… ? åšê[±m#» ™LЉ*ª,líEÄo«pÛÖi)Ÿ’ÔZ·óY&è’)#°7ˆ'ÓÅ TÊDF«¶î/-³AðSëEb, ˜x"#l Š)1ä¬?+ FîÅ^×çëâ©u Kš¬éØË QpØÒ%¤‰0.UÁFÕ‚©v@™¦c"‰ÈÒ5Æ3pHÀe¢èØhháãæ”@ªM‹Ì4˜% c he¦ Aέl@Òf„›žH‹+hQŠÒ#‰!† RLB!ÓS)`Ý™ŒE+<¿.tcM­'P4FT"Qbè*Ž4F$ ”‚ª DIŒ§h®PÕ¶KQ1‘. ºnêêhÂ]V°%S™‚ŒkèÒ“ãZVLB IÒÁ Šˆ…¹²  †”¸£å¢QÛþ sW4CÃa"&`(‚dðú– ‹×ß]âÈ{â‚WÒ*d,ÅÐb„2$ªTW"†¥(Š*¨D¤Ì.ßWÙXcï©I¦zß0Κ9ˆ,éß÷BU˜0J•Š&–$O¯:‰å £qµ–l*Šh2MÓtU3 "0ŒÆ0a¿Åu=Á*sVs¤^mÏ’ˆ5X&*Au†)a`WTQxÀ§gÇü´na‘DA±(âà¨Ü?ɦl1° àAÀOQcZë+Qªœ¦‹I{î”s??Òû_ÂØÀŽÜDZÚ÷¿€uÇ*¿ÿÉAh,ñû_|îþ—ƹÿ…cúE õEÁ*z¨Ï]£Qÿâ'9<¿îg½Ë6–žŒÔ$ ìÔJë íŠ9¼­¬¥Ë"NY6 žÜ½>‘S9z3QÓ±('£oíÞðÈ©’dC衤“c«äTņñCHLeÇÐPÏÑHå@À0Y’–. 8YÌÅîõ†­9ý«N¢%®Â4h4æÜQ4[ùù¤$Q£»7 l´lÓ‚øL%¤…ħ¥¡q›9Ã8¶4gVÚ)®î×.0áÈÄ Yš*$!Y¨Ѫw``ÉEDÂÓèàxþ$ã?ÈyJQ¯¡Q ñÂrÕûÿ åÏÅñ37?/§mëŽ\ÐÛæÊ_ÿ_ÒªüùßÞ2Çç;o]nVfÁ”&ÿ÷èC‡¹lö²?OÒþ½GßÜ#¿CÖÅÒ]W¦e¶Å*Ʋ6ç«jåGƒî¸|Àî=3§¿tú@ß±“KînÒ~Nf~Ó¯&Ý—¿üú žùnóŸÖˆÐæ_VöÚøÄþ©{o;zóQmø¨ ·´ ø2_á\|ÍZ_ÞÁmOmxÁÏž-]~ôÐw;FÎÜ÷N—Çf´\¶·ëšwî=øõõæšá…»|WlÛþÊôÅSî_¶üƒ,séuŸ ÏŸ0YxÜ_¯™½ø‘Û^žxùâq節Ƕ|ï’ÅÿuÁ¶Õ[•}8iI³.Ýô‹K j^vjÇÛd¼ÒóÏþ½<<3бn³Ef»üž74Q—m>ôu—_lØß¾°LÙ]¦” fŸÏ<õÏ/¾.Ë}hwÁœïŸš¿zʱãý–|ûøÕs{˜½>8¶}¾c?ߺõYøB»×›Ú[)¬Z;þiy‹×Üñä¨ì>ßäqú¬2æøè{2'¼õmϾK;¬¾dîŒ]¿ÿÍ3ËO\0ý‰Eÿ=þ¥_¡Q­{vhþâôõk/ÊožsÑï¦^Ý7»ðö6Ëv¤%ó¶Îy2£ÓáÍ‹W¢öÝ/þzØJ_ä{êÀêëçí–•M[öìëØûþö›Ò'~öÂk}?>¼aQÚÅ_•ÉVôÞc¤Õ‚×*´}{EËÊ%ߣšö{õºÛß|lÄü O”=Ûk×!#ëo»n²vöŠó>ݶvýßì|Ûýmšl]”¶IÙª^lñï‰ßŸö/îï{jÔöµ'ºU\Ä%<7;/ëO7Œ½ë\®Ÿ¬ý÷J”9ùùà>óË“!®PRfúýzIQ‘ßo£Ý'_H`ÿÁýFæÿªOEAÎÙÿFÍÿcgÛËúã|’d®-HCÑaTÜÆ÷Ùmk åtÒ$2ؤӳèîs!¯ˆî8âƒ8øûtÈÓv·Ãiã?$2¨KTýOäÏÎéÿ™‰ÿšîòùšt³ã¿&óÀ_-Øàœ,ßiþßòŸX胙±#Â¥GöWì|¯åGû,½nÆÏ×Í˜ÇØÑýãŽ<>Ú×ü¦›j5~M}Hzîü·Ííѵçê7¥_vûÖŽ×wë8ëVýüym³36;E÷]º²U«}û}§Ýœ¼—ýæÒþ¾¡²Ëâv7̘ãü¤=œáëêüTlí¾Øyx¸ÿs_Om ?üŸa-¯Ïzh̉£ì|e1~,¿ÇÊ g^qäÈ‘±……×T\–••õP¼8H¿{ölºówïÛðç=µ;tøÏOðmáí jŠr¯îz?.|íŠ'¤ýï™zlå…3¡ñ¯æžèþ³ööÏ÷æŠÎooL¤º‡æ‡÷õÝô@F³íÛ·xØç·+ÑÚåÓæÍš-Ÿ~úÔ”¯·Ÿ1ÿË'‡¯ùìçÀ+z_½++«ùjøhCñ’?üa^‡^#·¼ÿ~—ß~wüe  ]§NOgÜùñ+—?WòÁ&á¥ïWßµ4gÚ©S§F¯/îüÊ«¯6ñ ¸÷ÂÞLá iÝz¡Ñõñó¾þøÕ%·¬¿uãäÞ}ü›æ/»óäù›6mz}ïÞo®{ûé,8/''Ç·eË̦í;w~TãkuÁ³fÍjºfÍš±ãƵª¬¬üþÛO–ùfì}Ö?Àï¿òªÁ‹öžºò“#GÖtTŸÞýLÿï׿÷¤ã+¦}úæªAyy-|·lºãr}ÇüÌßwéwàÈ‘ùýOý»©o-ôš~ósƒäŒuvüÈÜ1닽Û÷—±få~˜šßiݪՖo>ßË)L¿å…v+¾¶çêÿÏÞ_€U¹máâ8&*"Ý]‹n¤;$],RºTº¤KB:•N”餻óC÷9ûœ{î>çÜÿ}îóÜÿsׯ½_Ì9Ƙc¼ãsÎE"zºy-ŽE'€ˆ×úÉx•UB³T¿`7ï§vuw/hÚXZ tY2T ®UkO³>Q{ÍÇÇG}:_Cö:’l<ëÃxV=µyýZûé^û÷fNvÌÆ«Š;z¨‹uª :¼|jœ_¼x±9Ór­èñ»›…Å­_’yË­'Þƒ‹á„ïÚxu[_®ló$Ç•ATÓž4± $¤aüœœœ<ÐaÄÙÛ˜ÉUI ÕX8p=ób_dì¹ÕÒæ€ÚZþâ»ùã§ó³³ÏñÛúûñbhå[û²¤Ô;°É"¢id3Us\Oö‹WN@ ´}¾·¶ÆrppKáÃGº8RÆ’’’ 4B\ÖÆüV‡[¾|Á|_O] >ŠFž ØÎ 5[¨å«Üˆ‹‹;\),ÅÁŽ‚ôò“‘c,½jd~*$$‘‹S‡å••¹Ï±LHϲ¤"3=ÖÁeüû] Î¥DÀßÌyõò¯‘S2Bß_•§]Y°âvܹñÆ ˜‡6MØ#ÇÝ8Rõ*ä|¦„¼^Í žGEZÏëœV >Çæ©åãEGG¿Œ‹ °_øl¾+$&&¦VX9<<ì¦Üòú/‡g©D0ŽØàA(hh­½âÊÍÞ^aÄüx•#º¬RX$8„„h²²²º ®¸ÀBê{=%Îo=&Al=ª‡°¡ØØÈȯ3’ ²)ÒæFó…ÉÓå>ªÁut$hHÕJt;1×ÿØÛËÞVI&úµ—­Úª'…ßw¨P1\ôØl´,£@QK‹@»Ê2kgy ûx÷GÌ‚+™j­½1³~ƒVlBggçüÑÎ0’ëÞʹÄÒ1´\\·w–z:sä“‘R]:EÏü’¸-2øÞ¼Y%%w¨rì†FF^˜éP\†ÙÎÜWËSº‚M*¤ä• |pm¬ràÐÍ3Äz²®¥« ½¯¯ïp)݇ÝaQîçDí-¤2ÛY1bG”RýÆVÐIÔ«WÙ+#epqúÛh–S ÷&ë]zØMÎÀ‰0è`ï'Õ…,Ëí¸¬Ôàu‚?ß)u´½0»¸˜Sg°×¨ßè>ësqB†wëVßÙ»|üü^Žº\ÝÜà­~¨HSk½§MK_Sa®›OßrW•——EDt÷P#RiÉ|ˆ>ô¦)I(ò‚'WÀOÐ ¼-“@Ô[(:&¦¯ÊJg¨qŠ.åŽ?TÔJõI@PÛ‹éZX-§Â"ð‹ 4!àÌõaùé €rÜ» S="¹Ž«l}ýæÍÖ–Š‘O#µKJ…,DD×HE<ƒîqšä9ۜυ²‰0D11ŽqDfέ­…Ó)¦ÍÔo4Å0¸í,¶|üˆòüùóèöû  ÚºŠƒYè5ºßaÒ,‘°´dNõÁbccø¯¿R¶-§³¨<ª¢¢‚CB>ísAÒD¬1dG%(»Y`’‰wŵ—ÁÛØj<ù„[0ÏÃÃ'ïhÅ¿sç//ïîÊz8oÜï»&’‚¸$õÙªi£ÑÀÿÀ!]h`._ÇØ ³\¾2/ØÿÕÁe$\eýT!7•œA Ý<ŽD ã®ÏhkÄb(B9~XßOó¸eAwÀ·}F™/&'/ŸQX !M’•aô‰ L&®èù‡DAáÂZf¦} ‘Œê’òå$ÄZÕ©©uýÅp5Í–Ô„ÝwA¢½l,͵ag»«GàÜÖ¼fÁû½pBu¦A‡È{ó¡/_>Z^ùœ¡†æ¸®‹%étéëyüÝ)F(óÁ óeí§#ž—n<>@Ø;4ôÉQÜ/)¹€sûûóí…=š Ð9½Í¥IkKôVÛFktsd“ìï1³>é}½ˆ÷pÿÂûÔî~fûwû{»»ŽJî4¯XYôð!»Ý½´Ûh{èÅ“™÷Üe\~áòˆå•ó‹R«7*3dÈß]Em•Íû³Žwͳµåã>õöE̓3_S F¿·¿3µÃ“’míÚýƒ qŸ–¯Ö,Ú•oýš/4µ*?£k½HK#°¯°Ò!JŠ‹ÝhZ-tg޹¢¯O5³>Ùƒ Â>€b(/¨HÏC5çç³äñ»ZMžôŽNGL‡âodbŸEöÐóñU|¨±Ó™YõÐXy ,ŽJO™)–£D¿5éR?³äBŠŽÑ±9 ÜLºøMé!0Ò5•¯@’· ¥F  Y_2öù EEÓÑQ®8êðY0*ê¯:+Ì‹ÞȕҼ•ͧdÞ`~{ªóóƒÃãÉÕáJ 3Uªˆ×­’’äÞ~· ÃöþÍ"tÕ´_& ‚$#4|”ídžçééD" ƒÊØdM~11w£cËBáºx)Q¿èEóâ5Ư䰙™`¹—CJ•OcË\6êµ?óð0mu’ýRÀ š4 ¿ B²µÃä4â}I =ËSÊàºz­3!ÅÄÇwÒèñ« ûH NŸT ¿Ã-gg ¸•UÀûû.€í÷_¦’yÕ럛˙’¢ÝÖæ{éSôP\Ó#7Ÿá?gPue?-3[6ÜÑñ{‚¨3sÈU¿„©½†4A^VV’]svÍ‘HŽ…É繊ˆ½8ýãè‹3(8‡kê¹qûýp@C¢Þg{× £»°ÙoÌ\X0húVÐ«Š–É U,2tÜêÏ¥cªàçŠt €Œ ]JÏÈHØPøüÃáÉ»8hö¸H²,ºµõ‰@pø.~ä#@“W^æá4”¾9Ý·â8=ël“»ŒùGáPÜ\Ýüù˜8%•—\@ßÛÑ÷úy-! ÷3+TRÖöVËÌè+¬õdÝ$_vý6îlRh¨ž6x§>›™A•{zåšo? A Bj»ÑGŸ“'¹—h•ôp²vm55®ãƒpÀËm¦©A%M‚w' ƱÜy Œï|‡•î’Ý%êQr¿'$P³Låw@Ï’:y­œµ2ZÓwcá³]õü­ËB­ƒ/.ÉYÒB(„ $¶v•G¨;"ÄÓEÂË<”–üA%m Œ&—0Ê$‹1„§aÒQ„‚^Ç\uŽ?^TTpå‹÷ ÜaÚ÷ÛB³™J‰x¥›,äÆÇ¢CëD  ‚AÇÖiTh‹£5v\ ·pq&¤< (%EÅ‚ X¿J`¦Óm´+$$÷ž¡ªF3uű´29K|µÒƹ¥åÖì÷ ÒªªÂ™%^|“K¯QK¦ïGrvIò>:Z´€Ÿa–¾°ªŸŸÜ‹˜÷ÝﮞŸ#”›E~õywb2)(hù-íÍÑÊ®k€Lp™±°êÖP9=‚ Sâr&˸åýk.矇h€n´¿¤X-3Åþu;òå|Û[åL?Vï³!Ã$³ë_/#»ýÊT |~.GÛæ2ýíý‡Ï.ý?ä HTÚ’´1³^ÆÕ?IïvÔfoƒò¸;‘9™ÇêóÁ ;vþ7ìÊtóTs¹<=f¿òbçöbrâ{‘šJÂËO °ÔB£a÷8³±(dj­“SR0°±±Õ 50ï0ª=óõ½fhh¨Öéëë ·°Ð!€{«=ø*þôÁƒ|>ç ƒð+Ã…¯Sc›1Haô£=ôn­µ ñçÛ)|vW[ZZ@‚nq™öBUÒÏ©F"$@;àŸÎùX?ºåùòX•ÑòšS{xx䋞ÏÒkDÉBcÜ`Ú?=MVùtèETnG8Q Ÿßõìœñ svÉÉ:§r—)Œ3#Ž{ûÓ‘Ç{«m ð#%%}$#£B2]çÄØ×***PÆæ5¥'$ߢkýðázNNÎáñj)¨¤¯ËÊÊ"= FÅ}ÅЕ••},gA"æ·¿.€ñɶ  hMDD„Ի솅6!®DvÕÕ«W%ô}äª/6·ºâÕ{ÚÚÚüÁ«ìí[<Í]e/QŽí¬³§#%Åû›³â~8hþ”⢲²]ró9ñú VÓ²ÒÒ¸…Åx”*(^?ðýÐÏæ#–µE¥õëWÖ‘µ‚²N:F9Ï <\ås2Ê0Ccã7îºÍÞ^RRó-¾ÈyzõU+'N+ƒGfÍR‘¤ùišÅÚwÈãMO¶·æ/»Œ¯å»D–d8)i0G¼- (2RJFQ£‰P‚!67!Qɼ6¤ÍÞ$ÜOŸÕÖò[O7Ÿ§ ºˆŒõtwËí¶¤Msrrv±¯ëTsìvYÏÌ<Áe¼¾¾þè[ct999¤†úÎjÓž´‘$È9úú‘:za×M$VVÖt®nqÍJ@'Z©óYOÔø†@€ïýýýL¹DŽ9  •×ö÷`¤— š‘¤Â):ªKQ:cŽŠöÞ«ŸdE]\\@¢f#ñê‡QTþÅÅÅ+®é"^bbbMs…ŽÖÊÝÌBÏü )þ˹ïìŽíꥡ4ag'ê=¥ͬÌ,,ê=Ü ï¸¬¥œY¤€Ç‘TU xaOšp¢È«oÕ6éeUUø©Z''…Ûñtª,q‡ 5ï‚#†óáÞ¨¨¨†­~¨­££Z y"f TpüÊËí°iÞ>eúP/?èéé©6ßäº%F@@€Báçºÿ3±¬ºzäÐÍóp†èÀ€›˜Ð§øà‡zK œÀ„D ­¼_SSÔÚx•U{çÙëÄ„22²­.¶fà`Êù*4åÖ“uK‰Üqì¼¼woÞ¼iøs´¼›)Ѽ2T:«¸äú{aW{ñ&T§1>j˜HÊKtXÄ€|(!š(ä4é~ù“cP1ƒe§÷v’®½,‘l ‹^Ýmà|àJç©ðF“¼ƒµåå Zù$È©h•qAæsúüãÇGÝ©‚wA‰9:rYO5C+Óž;á“o»lÏŽR]°,u„‚y;mˆ¾Ì‡f5[R=G?õeAN¦¤sŠSøÆû½¦†f9Êò„<,<¼}¹/ë¡¥eÑJMr²NFZók³.¡·YÖLŸ~Ëûøñã`$ié¢>úÄÂîj{BŒŒ2 ^'ô±2vëµržgÇ•+B…}Ò–—͆v€o¢311 ñýXŠà}5`‘HM’e¾ÈÖùÀÏ›ŸD7\.þFjPm­‡+ã3Æ-ŸÁ@S=19Ù×àæ"à„FKKK¨#ð³ÍÍÕÃÔß0¤g LŒ“¤À}œ)ókãÕB®ìúÍÞ˜«r°Wl¤H¯ssãvH…\‘TU0¦FFq®")•ê7ê¦ïˆkŒƒj¥ð àÂϵß¡b`bÚ­³ Ý“­/ëÝïŒÖSèº37ÙDYc;{UN^ÞîâÜkˆ œ||üJmVÈB¶û?¿1³1ô°™¨s’uZ®ª[ç(½'­X°ã®pîMþ{5m°Gô"¬¬Œ}(DWãM£ó§ŸX¬XH¿÷> E( :z[Ýüæö‚ìÐÖ]6ýûššPp'pšb!‘³²®gí|\º8™¾°=X×;=;˜^¯fÓ(ÒŠ2Oùúcm-uÉb ÷PÙöh3#éC<¢Ñµ¶žŽé×MÆåÓTWT:jfB Ò¿¼¼q¨Ÿþ Ë™~ªÁm´ÁsnnnffæÙ&×jù*|nÛÔ´ŠiaI³Ü÷V@-Íï~° D)"BJÄk}}s=­“Q½`æç·wfýÙÒUg"¯’’B6š/Hbû«äû>„Ï¢}ÝËë,Ó£|ûãÔéûú?°f— }®§ƒ( ³ !¬¿bNC¯$å|Z;Õ¼K(¤¾õüˆœ2sÎ?^ç–òs7ŸÅ:Å·H )2Ÿ0ˆx0¬­­k\6HMºž—#:¯"ÝÄ& öØ'Ô©Ì´‡TK[;Ón¾ƒÿ¤·óóBo§¹,àDdhÕ’0Ar¹î?kvÇÁÁáú-SSú+JùZ}7ãpÄP‘¥ßB‹‚=xõ‰cêá«—8Á#¥ŠžýGÆ$¯˜ÍƒUÞ¬ˆ4Óö÷ëÏ~{Ç’Îeâ^WÀÎAxóÍ6ËTScŸŸåBÖF“_„ÿ‡Ò•{}ûc%òÉ< X“Ð~ˆFTÇò`þ-ý&Ïà£%Y’áÇU–‰OsíœN¶÷Ó®Õêb%Ê!s$b=»¸ˆþôý^Ó3é ¹›Ä£ŠiÄŸܨ(×g“m^(Õï;ª Þ}#óøêË–q•ç_Ù¸÷îiWUøéêãßaò¾‚*  –÷ühÉ-âL!mÅbu±¬*ÍϹTæ|ƒzo¤+êSTàV­ÐˆAíƒõtq):— ½Ë3 }ÛCIÊL¾°/¯®.üÐULk¨v¡pÖE!JŽ­Z» ÆãÎU`ø sU¢³cîO=\ö\¦ >éoËPÓæ¼ï\â«HŒ„· Ïïþ(Úxg3Q#AšqåZRK»1­Â®”§§ýóNIP‡NlBÓ®*Æ]q¹ {¶ÛF·ûû_}«x˸PnÊTTüÅ^Ø[E…1‚¸6€D°ÕveÐ Z»xÀ„”Ÿ¦.HñÌÀ»¼ëB¾7[ÚÉsë¡°_À”„v’wOoo2Ÿ·šÓjÒûÉFtK«d1EE©!ElÑs>$«ñᎠó+ËcN°á";±E|<:lvïAyG©¢£¬|1o€5s~fªÄø°jí»ý=DzÖrÄ€C*¹A3i8ê­Ó'Vg,Дwo/‘£?ãE)),—VPTÈ4-mÃÞ™|»Ÿññâý‰–õ¤{ȧ˜ê,»ùoZu»äúŸ]±íKõ1mŽ:æ)ßó½YÜžÄÝiïÙ;{@ø£â‰†£ë²qÄ轕«†×oøg‰Ö=^?-Ê¢ Ôemûþi²Ü¸‹0Æ‘¥oµœW›Ïœq?}2ç\߮ս)ÞödJë£4Uk-äL›iÉÞ.Ϩx†×jh î± iE¼–Ž©=œ ¾7píÉÉ~)»ƒ‰óc{ñÀq99ÝŒÙáÐ*3®ôúl[<Ÿã2ÛÏq—{³³Jù*÷v×'qdãø^?DGnpºÓ‘ñØî•?^;þˆ-ƒ_«®þ¼ÃŸ+¿ LUã-,ÐÙUãä}îÆ.ϵq´0v¯Ñnæ¾Q„Õm4šW24¬º5É?€ŠšN’õΕ[Cš:À”Eº?‚XõŠÐ™ •Èb€Ê¬4à“¨]}F!ðˆDì¹ûîò,Ò†™0& fß½b˜·§¦ç–¿SÀq'Ò‹ñÛt ºÈ›Ö7j•³V6÷!OÛvòöò¶œ¸ià]{½¼|K‰žÃ ­ÄÃp1K_¡¦¯g*U)3Kø›i¼Æ1#âV’¨Ä>Qò3*©’|<„ž‰ãòh©S1]òá[*G}Š™nÄèø€õ”s/ö½¢p‹ •Û˜êzbþøF2o½ Áz²dÞôÀìl5Ëqž6¬©óó%˜Ã¢á q(þ·¥£kA‚.†Ð WOZ{ËÀÀ=Áa–åM`.|¨ ü3RzËöp³þÃá÷O«/»Œ—GËY÷­ü¦‰@a­˜ðæûw.¹düg¬ðް©ÍÍå$ãzÐáòòÇ!Ã…“Á«½1¦çV@¶ãEc õžngBá$déaùª×pðð‚¥cêàÛßIgB[Z¬!oì“jt‹ šöñÑ,ù±û#¹·/*ËbÄ%ÙÆiUÃàmW´Ãê[»­–³“žro¯óÆÂ¬¼<ŸY~ Ÿ V‡ËÙy{&#F~¥v=nÎpXrתüŒ b BÀǗˆo_¥¤T­Þà+¹Ÿ¡”©šëÂÔ!ìÁs¿ÖÞM§öÕgáŽQS€©`“f^. ©½NñÂ4]ÂtÝgÆjj*1ÌÓNëDA¯Gç­fÚ"ÎŽ£@ÝêN!!óÇ‚~”ÌÓ‚«¹ “÷m7iˆvïFǨöeøÞ‰)S*ò¦[S¶æSƒs`‰ª,§Um­jk¾Ïñl4NüAÝpÏÀ«òÞRÏôóÜ\‡&£F×-|àH¸øÎww–°_d!VÅ‚^=:ƒ–_É< ò­fÃóØ×mÝY²é+ƒscNƒŒ Á]6¬ÇG«ê'N‹ ]îðáÑRKïP¬,‰F†Œ¬êÜɆKKφÐâ׵Ⱦ,ÁE7 ±à;LXˆ£í6¾²{ø,o›šô)$djM—Ëoª¼ÖB-çgñå¦×û¸QT$÷1€â{“[êr¡%ÞfkëS{ YgÄYøÃП³3½*+/C^v±ø3 T¹;uœL@ÀíÂvæc”tåP¡fk&+Q¿Œ˜vÙ6YÓ‡©FhÓÇDí­k;! î¿BL¬=·ÓS(C2Ewr0­Fü#Üç"¼4`67H!mÍí§,G<ƒ¯ÁÆ´ÖÎÏ–„Ýoef!Êåqüa¨‡…‡‹›O‘6«€>…f™Í´±_à´oyùàô׉’%ÍúZ¯r$:¿:CÅnìËòzb¤FÚÔ”((M¾xô ´Qàû#-_ÕYŠðócN{Ÿ9ÿ<¼¶¾®à»q§’Ch$ idž1:zTQ˜‚.’ $Ô¡×Ñ€Pï&QrÇáºEq½¨Ëxz¿€SAh¥E*·ÉÒZ«óÆ'q X†_i)`Iò;Ü JJ|&Ý(bïL¸g~ðKJ&¹¤ Fc 9E?ž´t~ÁeC$ŽÌùpògiiƒø|`ˆýѱßìðMLÖ?YìyÙU‰0nxÝàyÂz÷=\b{1@Y¶¹¿¦ûˆ¼-oBz&Ÿ,iѾp%98´—¦EE¥P´zíÍØÛŽU‡·ø&g¹lЫædƒž’jj¨]]-Û ð–_»‰ù”ÕéÑS&ù`·}@wé¼6·…šŽŸ¢³ê7D.t¾Ü‡7ªâÒb »4ÉÎMAÀp\·xxÂaOî«^.Ïá O6zô°úñÎÍE—›ÐsYëê­¼äz‘>íÖ´G$àRÈm°°úÖ±d ÄdÕå Š]· ×¯Q~ŽÐÎ=16¾*X¿H TÃŽ™Uú0škÖÖÉÊÇõ˜ù¿Öø%QÑëCaO¸™~2O¸äÞÊÓF…ÅÈC¹ÔºkkcCÏs—l_±õœ¼LNZ:SAlXÜ»Ø8Ñ|¡«Þåúþ™ ÈØÑ ”KK.¤ÓÞõ·¼Ž¹Z·Ä3.ì €²²Š¸nÒ€ÄðÚëDàˆpi®ý„@x Ù¸k¥ äÁJ M†™GÐ̯Í5;=¢le¯#_Ð?Ñ@ àÅðý³¯b„¤³sÙ’8W¯¶²˸È%ö‹[ÈhJÓPP܈¡µjkñÕ„!$m\]¿Œðòß‘§,RãsÁ?\LA²Šo› Í:…‚<ŠÐu‘ KG‰Þ]»­9/`ü›<<òìOîßCòN‹Î¯T¿ÑM` !)òaeHaù§O=§ª‰Š«;iç‹Ü€*59?PTPh»8¿¤WÏ Ôvº-`ù×  Ä“VP7[Æü9qï9¨a@öÏð8è¹Ú:@ •L²< êjj\’»CGÆß2Zív—§ D½™V†¹ý««e›VÉ=< ×'žŒŽñ´GÓ`5§´†­¶Sîz›®¤ R•™ö¤E*J‚¨›Ž\­ª’W®*Ú³ü\ˆè<¨?Ñ,4 '’jéU:qY‹Sú  zuû†§§d†rÖS0(‡[ô5õ6S:Ÿ|^nwt5 qží%_ÝàAÃÀèl dSTÿV)Ëx¤S9 ñƒí )Gö|f‚nõ=J<ç˼TB§ëtCi ™]¦·“¸àÁ¬””ýÄP=€&íèÈ R9;;†ÏÙzaÓø3‹/ãòÔCë‘LiÌñä`]¶¡ZÒÜ\æt»+wäAD¨lëá–7 fãsP)6z…ŠÅéf.¥»o3E=×›Ñ\€ûkJ­ÿö‚l†NõqÙ;‹çûk«·W1kD ¸ÔSO7ž¯ŽDÞÄÒÙ¯èl_çzŽ<úý“}§2g«ór¦Û2̺®H#¤mË}$0kýÑ)´ÿ˜=Y¾õ&‡ÑŒÏh-'qgÄChg™TdÌö §õûXYH!VV"hÍ‘ÇÆ¤QÏ Ð`ì’’d¥ª"h3DišyS*0#ä(X$¿œäÎÈIŽ·æDG+™®Ö»´&ó›”`T‰üÄþZ‰Ðhý¢\ZÃ5í÷]×åÔW_I†9ÿ4x%,qo³OŒg¸ÃÞ UM¥Ä§h÷Í¢kèèY¿ò ¾Ÿ}——µ~Ž9á :ûÍ~M%ÌG„yŸ¶}-¹Q YÊìäJøå¹qüÛÛ6[û§áé>¤zzú!…SÓ¹ Îk0 ¢á›;KK¥iÛ¹¥0Ã’Bž‡x""Y½±Æ—¹t×B7/‰ßÕ.pNÛS×ÛŸã†Ãå© ¸fÑÙŽ<=ÞÚñ!øœÏ}׿t;”$ÃR½ùÂûN ¯¿?.¥íóZ·v¡È¨—/¯ºó¹m ı~¹Àƒv¨øC;-ðûG8§OðTTï,æ³ÞĶŽH&Ú™WÄ!!˜ö\_–&(ݨ€³€æ‘]Ö?¼rº•&ê››Ë)à\”¼›²Y^üS5DZóƒpM> ˆÛK&ÿ£¡Ô”'@*R?ÞöÒ›X–2±Ÿ‘¤u cûTã¾Ê€?><®ËÔ®”Q ”8Âù¨àã­… R(sºï= Še"Q~›m}i¨W¼ òF= U ››윅ϠI†¾ò;¼wïWé½ïNì+Ϻ#$˜¥Ë¿n[ôãôô+b¸hº·ÖA¸H{åšo¿)×îÍŽˆ=ÿØXÑ-½e–—tãTƒçiÉlÊ×Ä% ˆP͵~ ønY¹9H€¼ˆ÷ƽ?\WïÒÒèµ]¹òh…ù'ëÄDÕ}Eň½U©L»ù7Òùã=³0‚YL@àO"BäÃó:p«LÃ…Q2(¤[Z|ÑCMi›iaŠ–†Áw8 ^ɠ܀¢·=”„ݕ׼_’M¿Á “Ÿÿdûé‘ïÌò¨@BÈ?p¶w¶†ow䓇éý Ì =0Ðmšnr9¸gP¿OÒÆƒ‹syv£GLjÅI“n .ëÓ>¸T [‹òx®IÇ4”²G/*Ñ¿Ò*Ÿcc {~-ÞGéM ™‡ùùÝ#ª¾‘‘Á[ö4ö–¥%¡éS*¿ûŽ» ‰êôy½ [h‡6 &`¼ï¿¦âò¹n2ÊÄö‹7{ËkUåùL=KÇ, °$9³(PäÀ[¯û¨•ê£NM±º••ü}s™è);+ë'ñÅVg£VóùmhF©ÎIÃy$h#t×DÍÖu@¡žtFˆn®¨ UúBÄÃfZ’^½Àopöú¯ÃÊP!EYëH#AHl’‘S~tŠúˆ½§t€þ¥.ÁÅt±ëê <™Òù¸ÀQ¤ëv=Ÿä™mg¼6ȹ•8™t”™s—Vmäç4Y0‹Î×¹ÒfÒ,bƲJ««'qÌ05¿þþWÐÆ¬¦&S­“¸— /îq¾(ü ŒlúÎ@ÎÞ‹’!E”ÙòU]^ƒŠÎl¬‚Ö¤g*vöðü,Æuƒà´»3;ê6Í×ÔzLÑæ‚®üz— bgg–Þ&/ZÓ‡?‡ ]ÃHVC»âÉ ‡évW†î¯¼|$x’Þy0½!é{sqs×ñ뎒é׉™›ççÚ}^ž+âW¬xjüšüàV"´+êH93ó¼}ÍçÉHIhP¸<õeÕ6Áú„ßÝbÈ ”•ûlí¾ ªÝðô’ÊzpÍ!_œ’ÛáÄcb‚g~k>^«a”¢ ³ö­Ãá¦DRdÞÜ×ð)¿~Ãíµ^ýØ Àßî¸@CµÖÞNCÁwˆWesq-žMô@,@ß[¿–ðËÉ×R¼zArBDJª£\] ÐkH'ºÜÙÜô}ø|‡„¤¢g\842ßu×~~·uÔEöC}ñ“Î$ `?Xj⋜»½‚ jIv¨K+½Úmoï¥ršì7 ½'K.œn†À&4&:E…Ávÿg1F²íÞêÈõ¯_­Ü| “ÜŽw1%#÷[¾$+–9sjnÐO«¨Lx{zSöä9Éçø‘žÞÅϱP,íÿ¬½ž(gõ–9æÓÌaçgÉ·.ƒòdZ³0‚¦¦@fý°øÅtk¹‰ËR ³- ²åýó/Ju\«É å#¾ ‡v/~)ÉSíÔÃ…ž"âuëµoI q¡¦`¨hÇ„¼Žo‚A˜YpBCEý„sõžs]\—1î ‡%“…ÚîÛ¸¸} Så(ié6h—4¨B!V¨þ¾9ƒ¥Õ$nÌ7X‘oËAY&—TA¢­²:†Œ, žyÔ]¶)ñ h# &++ »‡s3ó†]$H˜ë“ñe C[ù9å*3âuYÛ2îÛ:Zê ΂: *_ÎUvŽV­éýÈ9<¤v\Ó&‹ˆ(î{ÊíèX³U⇳¹+‘îƒõ;?¿+0:Š—§ãñRQùîºÍü9N^òLí†T:ôÀÝ•+Wʪ«ãnSf^m[ Ê»ïéZjN;»~~Ä?”y›:˜»©ý–Uo?{ j~u¸ˆŽÒ Úž,ò)U6ZN…1^mð~u$x¹¿PÐÙ36Wñ÷§E·¶©#nݺ†A2F˜%Y˜o~#¿ :ý™àÛ+ — ‘6€oyáã ,uZ €ÊÒ‰Œ$hͪâ*0Âgå_o¨ÅwöfÃìÕŠµ•W6/;E»ïD/{°!ÚyztÒWñCʃHeÖ“¶~þ_:Š{U2>ÐôÈ%rEº{7^‘Pœd1JÿØõ­ó§ zymáÇZþÂlò^“ Í[ giyu »lmſtò¥gÝšMá«W;Z:r`ŽNGóÂââmºÕò Èê…hwß·´\Á`ó---e••,aì¢äKQ©÷8MÜ„;nL5þ~@ÕŸU÷"špîDô`ã"åö~¤þ¢”„Ä´ -LJÏi妮.O¦Ój:à…ð¶1r柖S?C¬'Eò¾Ô¨¨ªÂ¬Æ¸ˆˆ²¬'ëFë]lrd=þn›³ßž¥I=??ÏS/Ä c·žà£¦¦Î#õ&æ~:ø>‘ÓÔvû»4—ÕØí72±/Þ¼¡©²™NƒwX%óX…ôeIF4zà¿‘ïH÷9O´’ûÖ¨‘ô(fšwìðÜf 3ŽÍ Éõh›æ»=Ž|òM$%úÛyZå”ÐËW‘Þ¨Ÿ×#"žÈaÜ›-}ëç·wtšMùùù‡ëõjLÖÖÖääºí½÷å¤ßqD”§åv& l9é®à¸Þ ”¤€'ìÎ ÍSÒÐȯôr”½{wËÙÙ¹ÖZÔçܳ¯!e7ßq¹U¤¯ÑÃ%ê\“ zÌTR4”TTCñY>¤ð;¨uv„Ý£š›Ÿxÿþ³<¥ŒÓEßIä*¤~ø’ÌÛþ=„>ùÔÏú»ò×R]$ÄÄ^XÙÚ–ÜÈÅ ’Oæ .Ö©~z*$² ŸøAæòsT™;0ŽE'ĦéHÒ©È´'Ͱ3‚„’•U!!))D9K2X*’UTTT¹Ü°c¾Á†’Q³„x†?ŽØáÑQpȉ}ìgKD×zåçð†&Ñ Ÿ/ÉR›¾Ë¹‘ _aý í…®P``4 ?±8ÇÇÇ€W‹´ û¿yó†ÏvæYPD¾T1®Óêð$‘ã:fÝ% B®G =Ü×­µÈe1,çêêjÄߌíµÒs çe®ˆ„Ä  }Ê0»…Ïâ0/÷gyê«>™ ©÷ w‘¶¦#ß`1é¸Éã}ˆeÒTë>Êyfçu´m<´³¹i«\ïl5TˆMCïø±¶¶ ô|ë®ýÓ}™-hûúÛ·xQQQb(71 ©õ›<ó·v•¤·ÊÊÊ”Hd}Öóòè·ö×t2ÔÛk–8Âw𬴵“Øa0èQÞ[b(} xÊmg[™çݧyëGyY¤‡¿„ó4]0”øöÖø!è,Ã8äpÜÆ?--Íuo%V«Áµ|y²Þ%€•B¢Ñ}ïC¾j.GØ-BBF$Ï]§r V___ÁUšìõ?ö,uF’ÝÕÐÐxüuC<ýøôH}.€2–¸”Æýõ3ÕÑq4ÕéL¯“ôö$n©‡–– ƒ^jú1ÐÎ &!TTÔÄó!}PWF¼1°“›.5úØ!?ÍÖ˜2†v¹Ùͯ²²ÒÖÙYãìÁ ÐŽ@dmí€ÒÔÈí¤"äesx$-­L‚Ž}8Àm«± Ü,ÉðÏ\ ÇUëëë­mmâBûr¯è•Åö}4ìÝ‹íÅ'£ä½¦ÍVO 2”P„ÝþÏÇІ-»ÙÖ}oeËM{H/-é¼6&gǨ.ó¡½Ý8ˆ8,Òáòjfii©ÀÅ ›——‡XjŸÏ=Pé—Lrh£À]‹¡+-wüñ€Ëbÿ‚ÈîÆõ0q³e^@øÐ@Í©¨5Óýå‹ÝɾÕÐŽ ËºÑS‡Eù¡ùÕ‘Ò6h‡¨P=½‰‰É½ŽF§UïZ+"bâ°Ù¶À¶®.t*ËçØž¹ðíÿü¦:¿4»²‚¶µî«©[cKÑeç$NÈ­Ö³·»«IBB2;;ûüiáÚXeb‡ôôðׯXõ.’OžUÛ`;8ì#zsúy“Ž›ú†šuY¥¦CšO4¸Ý! =Þnûý#®_@@¦bºHâW 8<êé1“fÉ÷''gˆq5Ø‡ŽŽ¹þ7²µÞ‘=Wq•€â/›° \›Ö/VœÚU§Wïƒ}¿«ß©É)Ùõ™I¿_ƒ÷þˇF°–Ì·5׋«TCµ­3‹Šuî„ÖT èu|Ý?ªtîX(,Öy8^P¹ì©³f¸öhòƒ‡øW®(«¡úá/ /ÆÝæG¿tæ¾å^>1q’òýåÄÒ”ÃWN^”à`Lt»àvJýt­2$\\ÜŸ?‹)((„«fð2*ê¹ÅH ¼=äN¯~ò‰×Þf¹ý‚Œ‘©)•  ˆÅpRM}ý©Åª0´°µ·‡â¯-‰ñÉbw"ítľö;Lè‘têÌZe¯Û×dddÈo£)ëé…c‹žâ ‘ÇÊèLh0ãg•”`‘yí*¿;[¯.„%á©®ñz®_dddŒÖ:нxñÚÅ š3SXÚô"7×4+TleÍ}>œ×veáöÝ»óxQ°±GVÜymH¡-Þ))ÄÐv°\ÅÎ*«qmK²é‹»(tNèÉ8™Dþ5bb"ð³“R¶¦ÃæŸdlD“bºkCS³9öµ)Åßð ¼mñE~7ßÉ)((¸¾¤¥¦v›ˆÏ–ÜÁÑÑX­¨®.é$Y`/ݘã^hPГ¯_¿vû–øPRÒ>QUUÅLG—;dµ1Y?bIŸ½²z´”¾ôPP;óü$gšLØýÕÑá!»””þ½{Ÿ¾Û»…Z Fr°µ}R»eOš°åpÑcf>¾šv«{Ë£í…î±±$u55³°‡Éé㆖mÅò•Ó›µñ±±° ¥"燈­¶^[꫼ώñç‹JKM>À€óððXv'À˜YY#®˜í¸å—”˜j–š°²²i–ê[žŸM\ÜØÿqìs…k" §UüjÁ€Óœ&ŠT8STØmBky”YªŒŒkä~\ªªd> a“õ=Â(Š¢kÏYt ‡‹”ËÊØy]ýp@bôÛ$¤ùäG<^-k»¬$ÔtÆsE]Ûõü÷ðç;ö0ÒÉ5pt¥„(½4í‡÷ÑÑö8whZ>ÅäÛ:V€ªïV™m×É¡—Øå•u$2Ѩ°gŸ?‹¦½ÈËÓ22š˜PkÞí7Cñ¯HÓ×<>^ÝÉ+,”šnr¶µ˜•EBLü³·º”¥ûËJö;44±5>!‚.2vÞ7Ö§X:=j<ª1(£Ðy¬=ûz)ð25‡†Ð&u¾î] cgÓ32¶û"«ÅSÍ1^ÆA¥ø`¤-÷èîç. ¶À[bßío˜t§ Þ}²¬¤)hò Íöç(¬q-6cã#{ß«1úäõŠ¥e÷ ‹+è»+C×ö÷ñé{–šŠ#ì¡m8Z&ÂÎ{w™9®¿ŸPÈ]í/¯Ž–Ϊó¹ÛCÿ«H½ïrß(èhhø‚³|ÚmSSb¹'šzz»»jjƒ™j!!ÚàFß·o ½©Ì+õÙžKLD}bÍŠ„ýãݸñ@ B2wëöíÛïAžÍ=±üApüóâCtÓx5“²rÆ}7·6ÍÇ1?¾—§t?CÉ~íú³ÚZ$NN2°Éc§¸žìúájƒ“èy%ü§ÌÆ€ÙÐÐúÉûgMAA a#úè’é"\ÙÚ·\\\ˆå6˜røºÞ¼az–ó‰ÕWN;±ˆ›ôãµûê÷ÉÍjÚtU¶Éèoûk“É’³Öº)&$¼P%Z\l¤¸½ 4Šlb²?áÝÕå(—ã;,<»ÌG„´¹™aS¢ßHÛÖ±hŽ„„pÊ+e“Ò›¤ŠÍhjÂprÂ41VÏ@X¬¦ §»ª 2Ty>Ë7Rb¼Wm%óÙýD*7b:ºѹâ™Î¨7tücyÀ”°¨èæ$‚BŸSï¾í `@=’k½›> Ã:{î Y5~ ¹Ö×ìãÓø3G Ã_æ>n&J>1‚nG¼Áùó¢"Ãë×]២q6[¸²Ç‚N7.Ò:¿4g””è®ù‹9ìþüv-™·9d),îžIsÛnVŒg{›”RðDÄÞl¦åC|Ãc­„¶n9$ÿLRÅ©€(˜^hû %Síí ÜÒ ®vTÇÅï¼4ÕÔ‹Ý$?Öt}÷dôÈ”4 »£Ì.#ÿöô§ó×›.Îñº»»_«UO$%'SPÍ_´tà]oÅŽg]€ï­ØDÅkfªg yÖ)¤{×£SRù᜿¦NÄ!1ȸ²³x1ÕPnE«š½ ëx™ø8 x9y”ÑìÏoDJô\t.cSÂ'¼eOZâµ­˜n'ÍþȶÝ]F]vþÊŽ$—Ö€zï^;ÁMìõHNÓáÕS‚ƒõXÄñ®€Ÿ‚!=7ÎíÈŠŠX$l´‹7§¼ ihÔóJG<¼Ï~*E…LÎÞ‹þüù ÚvÀš/<”9…UU¤im9òÍWŸu\ð££S¤¹Æ# ü\}‹#3_ħÿ&Ê~P 'ùåÑ£B®E-áG#+¶ÙÍ)7ÉI¾‘dý}QäýÑÎ7>ô»¬FóÀéÜ÷+:FËEîµUZ¸ô5ºD&'ÁD%º f{Ö‘Jfâz[>w3âg_~ûv€‹·-5*X}…2*ôkdlü4J†> µŠÕ:\+3W]Zÿl„f9ylðsÌéæÕ;³¹qq‹®G }ƒw‚ƒù)|…VKG§uÚéÅ‹\‚åð¾,ä~%5ÃhŽuø—$›¨$í<ì ÔçH®'kù  ñó#)À÷>éÏ3O ®ßàÖå²w^7¶ ÚU 5ò÷¥ø™™WbbìD¹çw ˆƒï0Ñ">âh7|к}W“œOšöüêÚ‘O¬¬‚aˆ›­ž!±žx&A,è’Ö’#OG„ygýãä|ÎÜ.~•ìü4 s7Ìöõ5…­7Õ¸Èç ?GqÛ*¿€[¢¢z 'ëòÝù§¾$»À±>q²aii%PˆœÛØ: }™X½ëPnò÷ûb¡7 ÒÉ›õîñd“Þ‹ìì?~†»·³sÞzß™KvõZ#ÎŒ¿Ý¼'g)ºrÜLš¶êiÚ™6lŸûz©oûNî“ߺ"Jûk½¶ðƒí…ñ ð/**X%ºŸ¤¬¬„SR=(Ù{‰ íÚ<ægZꚃ$Q(rü@Q(+ã[0‚tÉîs®Å¬M“a!93Û&ó¡ÓTœòh‡•ƒsãÓ2¸5NèCT\sb“ä$íg€!-ŸN"bûûN¸áKEÒÎöQ=~'X(–ÁÐÉ?Ý[;8µ #†ÕõgØhh¤ÜÇ©É:dÔt6ƒã°RƒfßDN—û¬š\õõ4·“ZÆÆð|NÆCy™†Ž2Üv-§º9^•ê­»ŸC 2‘¹ù…o“÷…ˆ+y{,ÓÑ#™ÏV0s%Le¯”ë\~¥/^H1ûÐn|çì&]Š(@àÎFhºõAß¿ë²Ú•äç[ _H…Ùæö)û½´ö‡,¡¤£©šÛ_fÚß=Ñ1 èñdËfò…ðÍθ ýÁ GÔ‰d™ü‘ÚE¥C®]kìË’wPŒ•  Ÿz¨{ Ëy´jM].M¨BÜ.6¾«Ìã€_âa{ëçÏWß™„·6y•‡Wá¢}™™y,ƒéâr6YÞ`OC–‘¡£s:^Ú\⟞~¾rªßúíKfUU“r¦¥9ǰ{T[ó‘ñ³³}wmš…ï°5-—¾»µÙÝí¡ÕxŒÆ807÷Úܼ¨ÙÈüPL@v¶.5í”ØCâˆç̓ƒïë<…’8†–$²Èd§Hù„èøaIÞUz[ê¥âñZO̲òÐÒ.¾ÎÌ$Üß× à·¿ÿN™Ï§Uóõ­LPr¨X7ÙIKÓä(x¡ÉÆ<é&`fù,Z÷ª“¦}¤äŽ¹Ù£uAZâiÂÅ32~?Ül»Û÷.שžÌ@]Ý·´)¤m)=ýù}$f}æŽd…wZ[))(œöØyyÅ7¦x–†Hô+dt|.NìˆùpF,ÛÍ3z‰Cï†nÍrî¹ŸŽŽbt§_,Ì5Þós(ÒÚÂ8?1§gfnß_˵ûþˆd<ødÝÌ«.]a}¸ }l\¾(w¡°&ËEM³@ÉÏÀ^Vv6OÈ&¶»bJ/OH)êö7á4U–üþšú¨ï—ûÒH¦‘•’‚L}k©Çt¶/‹qtTËpwùù„¡ë˜þKj?Õ€ÄËëÖ;#O{:vFд}ýŠæ°t>ÛŠ*,*]¡ªW|_{,þ µ8¶¢"rP;åzWoa ¦&“í¡íUçŸAÏårÞÙȽÿ«JH3϶„«(†À`jŠPôœ ÿ ú‰ oú´ä«WjU‡M^k¶{+¢ŽÚ‘µ4¢gŽ7fg§ïç••ÿx.Ï“©YJWúXCÚm9˜6hi9+wßsH€!²õ+E9;Iœœ-aÉ#Ìø¡ìÖ)l¼Ø¯pDj½ê¿o¥.S¯x=£œ•Ï‚y7¼Aб< G,ìàö¯)2ψF«Ùð„`:´C"3•†TV®Ën¿\ A¢ÎT+§ÊÊ=ØÜµGo¶5ªßUV¶î­^ Ì…LĽzå+Ÿ¬@)rŽÿÁWäðÉMÀN&{áNܾØÙ=¦g)~Ql…A´òþ¾õj&&tñ@Ù åo bA ™Ô‰ŽLÒÒü‡s¡œAÁµW@\t'ß »ÞÑ7Á ¬¬¢üÜ×—D2|û{Àì=suûóéÛ·…Z»¡¿»YÐG»óÌY¼X=‚T>Ø–D-wº“.JÅRŒ3{?;¾;38¾ûnp‰»x¥h³_òH¾võéáƒâ¸RÊ·¹Y߈ôSÒ ü¬€+v¸ø ˜§›âhûëg×~üxH :uצ‰U5# û ‰ªè–¨- ð‘²ÊµçÊYB¸xý¶¹£j ž Âs`¹Å/õ <_°!&{ Y€P ‚G]“is@Q3CiЮYБž J¹ë.˜ §aÞS Íøc*_VÕ&­†¹J׫p›ÌµXXà`|ˆ£äÎF]í£Ý®žóš@h ö›=fÔ,I§â›æ?ϽðnÙØµå¢£‘BÑÁõãp*2ŸÓ[% çšÚØ{[z TÖ3œ4/3Ë6q»Q?ŒUö}1´®Ë&Ì,HIc›”$`Ä8iEåùÐ8…¢ãY´Q« ›6.(Ú!ïâµÑJ¡:½Ç8›} ›LƒRD$¹~<6I»7oWêQʃS’üêD*D޾ßÕmÔ~fšNà2å–!«‘¹Žæù(Zý©ÅªÝ©+Z•å&0j'Raû€Üc@_úBkê­>}ª¥gŠiùZ‚|z&Ì`GÞ#"#íô ¯Ý` p  è™ïŸÔjêZæÚ)\×*ŸŒŽ(© ršfB$¢ƒ+*ÄQÙ=c²°C1ihfÞõx·û£ÄЏÍvG-ö\êÇok%άu‘ñžQVVñ­Á‘G£Tb®ê²¸{KLÔB†ýè+j„û?ù_½w=6džÒ[[d@mmbF'?GâUP€ØIoUZøã ¦»Ê¥ð]µÿ=µÔGìdž³šš{qÈUZZD°dÙ¨ Õ~%…*QÌÚüÒf‘+Lš"]ÉÞŸúÑZ´æûÁõza/K¶gžßÖ,Q‚"j@™\tAÓÖú¤©Ý†>ŽÜ½€Maî»÷ÅMT¾okgçàÛ†ÑROˆ »fϧæíîRZŽ;BiÑá …M˜»¿©ÞŒCt‘ÊïôAÒÜ61Á¤!äÛ*.ç-.%ýÆ^·6º'vªÖ½ íÆ ÚÓ\«o Q¿å2*9ØHÅzšµ ]¯y~‡ežGÔ5µ}Cp«¼RÊ·<@È+õ˜ñ·ì)¨‘jÜvX«¬ÏؼÏOÏŸ ,mN8´a’hÄ/cI¿•yœˆ¡¬\>ún‰¸¨ˆ¹Ìò5ócŽòñž¡â r–âÍ-œ5]êK6“¤óP‹»ôÛ«‘;äÙ4jÎ!8ýú€ÑļÔÕëÄp« ›ÁÖaÕ ŒŠ‚ep„Éîì8¦ŸäfòØÏDzòé\æ(¯ï :#M!QTÂeî{éu_&v¿ª¤c/=Â\ÕÖ±b~…{€]½UªÚ&žVž1¡mhˆeï@v?A¸ë C%2 Š‹“bñ~Ž?öUýÂ+â-tpÿQf@2øm#'›Ùα@Ã5dia!vó¥Žßh®NúKw5½ú¯”ŒŒø^'c†GÛ¦›ñÍaYíƒJѺîÇz–ãûÖ±;˜Db0ï†ÒŒ6ù%ç*.¹ÊÙˆdÅj¦O‹kj®‚Ò9òÖ’%¨‚¯"x‚ ÑyLÎ7Š °ÖÖþ-¯m¶ßˈ×Ô‰~O›¶–Ò/"@å#´÷Jð¨‰T¤HÂÓ“Ç¥?€´Y棠 t¯¢Š ´“Ù2— ²²ŠÛ†GöÚíZ·d¢¹ëððX ×ÔȾÚp²ÎFÌÿ¾žøwY¤Ü¸Õ¨3OL—•PûîÉç “*Ênv|ö5w$¦ }mÔÿ†‘ÉÂÀ¼ó†HhCC`‡1è¹3‡£ÙͬóÆ(#J´ML®bS3`¡l®TUêë¨<~ì[ÚІƒö—tªquö©oô÷*€àOrb‚"›o—k>[{F0k²\&§ogwP«—¯Ëèûì*1>Îúþüé0^SÔ§Ûæ‚l¡û‰{O`aÒŠB^L“æS¶ìí»š3½è£ÕŠ/êêÜvûé¡Ì*"r†A¢¯êe[=g1‚v©©éë„^\ð­ÀÞÞø ²$æ#où§ºFXXÓ*ƒú±4ÁpÔ“§P£Ìû }r»QÆ  àéËhûdYÒA‹áã#Ì×n_üâW_Uk&â·P}àø½Ë aà}„¬R&âeYö¤…YŸ¸¿¿êe—ET’ö{/v€ßsO‚A Q((L·¦®Wü~¶ *›Aʱi€|¡¡þpüyô÷}xíâMh!Î<Æ% #ñ² ƒ¹?L†Ϫª„Ù-˜4½%qD”÷<‚©cêt••'ÍpÖpè($¥9úø‡<ç€RD~@áeÖÀåí ¾ËAÑC5‡˜§OWj²ùÈ_Ïúö´¿‰Ïçv´1(B¡uñKóÆâŽÂÒ›NÎ,?r¸7ý=B™ñž÷Ñ£ÈÙ.5:ükÊý"½¡³‹•Äã†ÅÑQ¹ïKñ¶œyë5ád¢(—«jbŽ™MúÁ«#éºÌÑ8”5h}Sõ°O<ìùÝ Ðy9“šÊœ ¼ qy~~ìº/žˆ!ää•§¶b­,€ÁJîDÐÊ^u9évÈhpxxþpë¶åÔ)ÑúK ½®'kw{KÉŠñÆ”_Q»`íI·1²²úèÖR<ïìlѯI‰ñÞÛ·!dlÏâ}¡Õ”ë{––Ì ÉÆ¬àƒ‚²B‹†Âý¾4ÇŠ¹9´ŸãwC}‘Ù^—”:,^7üÑÜ@çzâŒJ-·nmçV‹ñ‹†g´ó 7Ž;¤¤^åfQ;K‘ C/W4-zR¤¥”•ïYZy<Ì p{P‘`‡/uüóATš¾ŸùÀéæHs@kW×§ÞŒ-,šOÇÊ—|%ÓÞ¨#8ÊÏŸ'JC~~:ôÌÌVq÷{3ƒýCB™‹ Kòõ³<[ý,.nßêÇyGC-ÔÎjšÔW6~š{£‘Ã!<æêþòƒD?÷7¶[:z{£³ÀLºcÜD!³j`q³¼Ûù*Èö~$þóÏet ‡º¶¶ÿÙ ÍŸÙ ˆ—¸8Ç‘~-®Ô‘”8 ”­¬‡w|}½ffûFz3ð2o-’×Û Y[Ð \¾¤¤“„‘B©~FÿL,hµa öñ‹•V˜ÅÂgÎŽ®Þ 'iiVÝ‹ qøj1 ËQ(((¯ßp@-!©èpwÀÀöÈ^ThçûÕwa†~ÉmsÂ2Ñõ’àN€È^'çϲ²„5ŠÝ±–n> ç: ö¤Šýl· #¢é?³2t•þ6pýÍø§¬Í=éËVcyÆk7÷¤NI°hËŸJ Z’‘5vÝj óüj´±›ïÃ¥CœìÙ¶têv5_Õæè‡­o¦tvçž<@¤)ÓS! êÒö#Œ€bTY]´CŒcæ¾T‘î³¾·›äÔ¦ºSåUssÿÈ@3Ñ| ÿ(*d۬嫌³¡„ÙÙB‘Ø`°Ü>Jí Wަ –ÜÞ‘Ý\ˆ/?Ü¿®¥£33¤é[nLðõkNe]™\Îû7²nCý]ñ6âùF›{N‹‹ €¡†N$ 6e?@ÁÃrK©Èߣûœ­r…‘¬"–Ë EI̬×3¸ÐìJU0¨¬+-Ò;wxW|LG5(=jõ·¼}'ªÃ¨$k„õQŠf­9YÂ$)[ZÒPÄdˆz\¿qd›Åd–¡ÒO° (x¸Ý% åJ]½“'ЊҾ6;€L’$ßüÝæ'àª5 @O2oh×)¸»ãVY †§{×½€!@²Q“Kx¿‘ô­#,Ú¨íswCà—dŸ¶QƒöQ¤ZÇŠ®ëµ³X¡1Ç™ÒÒµ?3ZW°«Üv·#|Ç?Y‡LM 0ëƒ&r :ƒp­µê)õÝÍ+úzÒU}æ5&Y ©Ö ‚v?TßÞfQɾ!hB¿+.Àèý´ð³ˆè+T÷¥ßÚ=Rlµ?ïÒ+£¸=ßyB(ÀÜÿ›ôÑ¥ë>æî|RTÝŽäáëKÜß°]­î.SœŸSrtâÑ/–ûá»rôæÐ/ðæ½{Pô1H¦~äòBˆ¸¬Óf«¸e¹qÆÐb>¯Ôkä}€a´éŒËûâ†ïM~Ä—$Ѿ2*1 Qíÿ„óD)Dá,勵â¦ö‘hÒ-‹úŦ¿Ê§—±êÝ4ÝšVv'¢££ þn-ÁK% € Qñ¶@•—+Ж…⇀lÞ§üô}?>¾kæ»QäÌ2m¹Ö ¼E]ï=ʆƓÙâjÚùXÍŽÞ^&*q šŒÌç–Üô4 Ç´×RÕ²ÒÔîºÅÈê¶ÀBÛ~Г¦€ÿRA5=ÚöÏùàW(ËLjÞs1œ —^¿¹>?7Ó²œM‹>V¦;ñ–ßæ¦iX kš» ñÝxÿþþIqWŸ˜9)W êêöH|¸Ýpü§xÊ"›^šÇªêÏét›½‘rŽàmJ®‚÷˜3‘å—¸MM¦|kkïñ–>fƇOððñ‚ªWL@^=]—»”Ÿs‡TÓ^•›„‚ZB"t7K\š#òMî]øHÉ;>»9()½¸1_f$Ô×€›ßl—Æ‘™É1:¶ÿ>OY1ÚP£õPÈS+X؃på½ÿ7*Žè•÷IWe¢ÃÉ0ïæ\º¨(»»@°ÙI—\8€ñ@ÉÝ<ÀŸóóoL,Íþ¦†c• Á NùA ƒ¹µ·ßÑý”s uîñÃLÔ[73Ét@0ÔñËD»Ñ30 xÚÝ­³¡ã³ÞFìÿDòíA®õ1ùðAgbóÇé)@Ã^fiqQî»yh`øª©1¥ºrvt(7*Ýz ýö‡ÒotôýîD­j¿ÃÕrëÉZÍHG¹±Êc×ßó}L+¡Óܲ“´y½OɳˆÎFF¥A÷_œÝ¬²:ac5øº„?ï¾ÿ ~³~[WE%ýî["=.Þ»OFÙy+ûùáÜþ./ÅÄCŠƒó+²²qlé~4²´„§™èæd2Ñò‘O£Ú!¼hôX@AG/¸Ñ€DGç¬W§4àö¥àÇ£ßlñêµÆZuÿâ"f VŠTˆ©uˆ•Ucê(Œ,Jà³c:”­Õáur hP§5zôd€ÚT5£­@½>H¯èû!:º³ƒ6ÊÈ^Ü,Ûeßú«·ÎÎÂuB<ýÞ—[)äû9º%òp™a;§VÅ# ‹¼TyÂ,êoŽ ð¡KæM¡ÆØÙêoX¤ËãÁ¹ ÉWv’Ô©Þ%}Ý!õÆ9ÞCQø¡‚›äqTBÂ5ÿÌe§[Úc—¯Ñ|¢]i¹Æ°¿ÚÎ;­{ßÊŠdñ+&Tq~xvKß÷W¢/Ùaš]]íþ”´Ký˜H(÷ü2õáég^ii'à?ï?Çöô.¤ˆ6é¿0t¨B†yvøPé×ܪáŠÇ •í—/_úZfgOHÊË“èêºCQrùäÉO-²ÃÃ]NǼ¸e£iðP¡?YVW' Þ.QñÄüG„ˆWÎÚú‚&%Æwþ¯IÜeÆ]øHÏtõC¯®vø`¦Å<×ä~0l /«´þž{p²£n$éµ¾\Eú‚Ö¬Æ2ÆáS‘ ·Ñì»ïµ6þœnk»æïïïþ­:¿¬’äR^ Ì–:`a}=âÅ‹«â} Š’n@],…;Ê)FvNÔ¾ÚxàÙÙÖ–õØ 7zgú…£.$ úš’ÞZË—“.s”‰É“eË ¤eÌûä8ËÂÒÃKçÁæ3«K:—´,ç­¥„ÇÞžŒ‘é4¨>ø‘¡µ#-­1K}É@\ð••Wd™ d@M=!˜)ÈJp ‹ç/^˜}\¨Æ$¡„±Ë¡è±RÛ;¶–#.Ø üpĸlmËÚN6A¨Ü*³÷Ùšò¸h™j\*³_x­Î³óæ%r™X[´øê±»–¡/öØÀõwÎÏð؇kn+Ú–a3ÊÉ…(™Ýô¹¸²y@ö dŽÁ/õ.>‘²˜$¤0CÀ½4P¯ŸÖÍ‹¡Px.¬Œ¥{áÄ2¥·ƒJ^«~_ÊÓ#"‘ 6ÆÐÀz™pÓtI?† 6é&@Ez)³PcO“®“²³Ü÷]²m ÁÄ0DÿæîiW¾¨óZ4¡±áÀ;B®Ú²ØDN˜1dãüžì,N—yñBB©¦µ9ô`ò:º~×±C·¿zÿo riš y ÎÀ¿¼2ѰøšÜ&é®" Ìm—UÚÊöòÑ÷ÂúR¿'fÎE => Í…-Y,o—WU}Ç?p_-^ÜIŠ$–þêÜ?ßTÕ¬µC©>ˆxCmÇhjôëW­)nËO¯†ˆìÓ?:::Ülö›yÿk£` ’WZ™«hTµE˜fëÕçɆ ŸUÐppZl.‰.μ·¯©×$ ÖOöà1éI+®>#²ÝÙ¿y|p73³ïèÈø‘lWë] ¤ª*´Ã#álÝl½‰ÉÉ䨵¯h[Jê‡'w$&ϲ{¼ÀìòrÞ^77·ëjqõÌììó©FÄ×þŸ ‘ƒƒùÎHè›’ŽQÞÉ×Yæg5å Ž*‰°‰ì½+Ö©&tÂ\L¾ãº’H›£ &YÀ ŒŸ›Ÿ·ƒ¶Â‘¶%œ$V:‘¤¤påÝFtܦbß$½‰í}™Ÿæc¶¬N«â¸©DËñÊ)De´™YYÑ›­csÖÆëÓ¿ËÆGê”Þ p¤¯wÝ¢dbf6²iغ™Ìmp`>K”ÎàÀS”"ÑãðØ·äñØÿá—_}¦j0`#Dâ¥kzBˆ„OB2ž÷ÖgÅô8<7+rÕRtõã’ŽÇr=Ù­ùÜù޼ô¨õÓ#¯6zkŸ‡äX¥NK[×¹/ζÎÎÏ_£££ó §É¨ªÂ·i>ãII½üž£ÓÃùÈpR:”ÍQÄhÚ¬cÓx£öô“ú†/2vëÀÀ-…Ñfу“••§’’­íí7ÎN: Ô Éã»f×Ö0‘líìX[[Ž_}Ÿ¯š»ùUpã ´ËÓÁ¡mñK2´ÿé}[ 6ˆnt ‹kd2%ÎpçÓœ>,bÙ…@jóŠ,Õ$“/©oûwO^¾Ä‰KKûZ¢ßøùêµkß .Ž5÷{|ÎcüýüÊÂÂ0âbcÛÏwsE¹=&¾Š©í¼qýz¶èéË“ñþ7²ÕÕï„FD˜4z,’œŸl¼ ¾E÷¶»[..1ñ­BÊGë‰Qæ’ª*h|]g$™©j®‚qÌyæýçÍ™œ?œÍÚF7¨U!AÍ®IzÒ%'šWˆ9Ò%.MJÓJð†)p¤%H VdüðÒÙÞŽeÒ¬I‰‰IŒ¿{+X‚™›;öäl¨PsÜ3¥´”í d ÄÞÞ^8éÒÚÚ¤eóJ¤êÈX#šÿ «é¦Ô` Jç½upIiÃ6šÇî2.",ÑQ°þTšc{Þ2GŽA:ÇÛ$e­÷&Í'‰ihC#¯‹tŽÃ5è$Fu¡é¾ººz÷çÏ!?æ>n”£X±+hfˆýŒ9’%ir¢î“R7\eVþδçm†xàÛèøeõ.…EEFœ&Ý3U°!g³®Áh£‹Ž,«D•h¹³îñ ™èà&åh¹ ëíh¹¥›ÐI§o)ßs889k7l¦Pkêë©“OÎ@xy¦28 ¸!1–””„ï'ÇÆ-ÛY{œÚ.°ù´¤ {l~á~ê~[ÂpûHÐûæ ®2™²(g“³#oRÚRÉ«ôôHô»ÎOÉ:z±œ:ð#ÌDËßlŒËÞõ*âÜ";+YøŠVJ’úæ€ÚíK÷Çïkk¶¶µ•?i¹Êü;ô»ò¤$$È©¨®”èµ…ÜabòóDî­–Bß÷ñëWIggJ**"á’†††/V÷ZõÎ,àÀì÷ï~ɼ6öt )ï»9k½ž †'mUúFæ¥ß3 rÎã ÚŠÅœ§Ò‹íPÞ@¬¹}©×ö@Ì[Ô× ð²´tºêH½mw—•ççÛˆIHQÇt-ȱƿ㶆ö²ó€àtv215Y¶SVV¶`ÛÝ×õPB¢leeÅäÄæø-èm–ç|÷ñã£u;8Þ=<·ðý{EÝ‚gøÍi>çG’<—à<ºÉÙ –k"é8q«R\ÇóžõdOÅ’Ýd9W뱤 ‰uñÚÕn‡‚©ÎÝ#ŸÂàªNKKO«ø’Ä1[‹KÌdK¢ÇW?ßbfc‹<9QÞ=>~"­tó¼sß`,#Fûi­=~$ˆm­÷Ãhô÷ý¹®Õ¶xg3C9é·bOgAœï!(£‚Rùì2¿I(Šž}À"ù Œñ Œaª£çÎ^Ë÷Ï®\*ýð¡]dÌ'#K08ºµ55¶txúúúHÎÎÖŽý}ýUaÜÌÑo}.¼­›ihh Íøa°R!×÷ „”k"aiôNšë‹+§ùEÛhÙóÚº:Ž»wïVÙ/Ȭ׋à¤éÍÍ¢ïÞ¾5­þ·i¶r$ n EÐ7^a~ËÁÉÉØëdßD‹uEqÎ6‰À‡†ÆÆÄ¬,*&Oþ‚‚¹aûïLŒÛ%(qOâ j:óÊãôüÅZ¦|.¼×׿ºï­´OÕ$ƒM=欋}ªö„*yyšª …½t:¨«ïˆ¨õcɇ1J{/¥ºŒîþxlgƒR§éW#‹‘/¼WÁBß<Íi=Emn½!IJpîŽ „¬m¤Êšß2ÒO^ܞł=ú~‹Çøóí¸˜˜6ÜsséNæBÙjš6¦ÓY´+‚îàã¿Ä*ñ:æøZç´ªelL3ÞèÁ{í½F©þF&¦o_S‰„E‹i>±ÄvÀÃ`¼¼¼U#¬Îëzøwî´OLL\ªšsbVFòUãög&fQÑô799o-~W=å^(nW=,Zé•V^º¦2¢‘>€OmÔ䙳 ä'PfŽ•ùvz´ó¸T¿1áÝ;NWÓüy“å7ŽFRÍC`”×€ŠrÏÉ rÁö¨ÙJ±/]æSŽ®Šoé›Ú¡R:qÔ¡”qqqgÄdd=†††5éJªŒ±?[ýÑ¿è×ooÛwhµíŒô÷¬Œ?=nzÓσFúŠIÚ˜O *ùF*ù¯Æ#¹'s ôV˜FÓø‚%2±Ú'µ/÷Ýúy 1ûá\¼ÇoµE!½Øeʉ¢Lóé×&…4mNË`Œ‘!aƒ4ÏP4¡'+f¿¶ÐGõ·ÏŸ †2J>}úd¹2˜oùs´Ü²/óa1­tñÙÄØA’þÀ–·Æ]q0SSS‡E9ç£mã­‘áþòâ¢"‚^×óŒØØ;@‘µˆúÊóüþ´%iUK jüšÊEº²ÕHÔìüÖeÿOh^£À¸‹c¥–%¢{½ÒéUÆ4œØUÖð'@VeÉo9è'÷<™^™nÝÞÞ®IGB¦y}iDßÓ¦qÿkºh$[Ó¡¬Bi}º9r²Þe8‚ëZå»Ï¹'Ò—-Y]=½¨ØØöïIKÿè]ѾP3ïÙÉf¨šö> _{J¨£ã±l sæo³áp,&ÍA±ö:¿Âÿx#9N¾W?l¿cðv¬»ÕñºT¶EâSiL‘؛ߪm ’íêÜv)88ðøùùÉȈ¹ºò‘ »8kÌξ.–344Ñ+H*ùj¹¿Õ÷9sò<Û¡ge•qSPP€ôú1™ª²Ï—¥/É{«#TttȼÖïA`•[WaµçÊ_X®ºõÓ‚E7;mÔH§:ÎÝØñ·vù¶;Ì)JÎ8éTSYuf0ଷu1… عà6«q ÅøÖyø1!@'ù—Èæk‡,gE˜"k==½/ÅÚí€e=žnòú¶½ÐõX^óàà2;22òâìlËþÏom&_’Ú_øúÖÎs —ä¤ëœüòÄýÕÒæ·|o–UÙEEE÷;É|ØýÅúŠ"açܥÿã#GE™™™âv¢:iÁÅÙÙ~Àè UUÇ)Uf5•çŽU“žS®Ütµ…2„•·/6š/¾ÞÄ xO']Øi©ø³Ã¯GÚ^ÇKBõSH•š6còë&= ¯‚J{yóñíÙÔŒýÅÍ•ÃR•^6*ÓÃÓ¿Ðã$YÑxxx˜™†æÍcÝ€u6c9i™§Ð3I†–Òæ$'tdc¥í---–]q,aå*ÎWŸ?$!Ö¡¥§G²:YÏ{r´”~¡¨q|ì^|‘Çr”Ýh“Œ þA&ú©âq“âÀQAyº¢óõÒèï%Œæ½Ã*§s›ö: ‰‘ySLúN¸œè–Ý'«=\y¦ŠFû…³¥ác5‹ö¤~džáý¾±‹Ê?T‰üC•ýxo8VQUU¬cð¢ÑÍÙ¶d–Ï­ ³'²R÷T¸‚(6,QжÔ>=êe•‰&:YΊ­0 @`Þ¥´ý“d8a;âç\{(à`ß0SS]8lllœ·¿KCXé|¼k%ö›¯¿l{Y-ÜOJ˜;ºòwMVhè´M< yi=¢ÇW¨’d4y¤­‹+5°²ä;-¬ÈŠÏ ˆê T¢'ÞkYx©ÐîY­®¬$€Durv0}æð`pE{ ƤÀgš^ ÎÈ :úG ´Žœ tVŽžm½›˜šJ¢JÛrm¬ògãÁ¿¨¢âÕÙªÁ…aFFÆDU3æ=¿³­N²ðý[DD]Д?º¥*$Ú»ÛÄâ‡:ZmCǪ‡†„‚†&æí-âéåUÛ œw¬éí[<Ÿóte}ý`Pžqƒž4á+H –ó¢h@çÎÏNxSš  ?°kæ%·çU…/Ø×˜sFGA‘ñeD–Ïn›ˆÃecjHš¹x/?!Àr²îHÑ(XXÓç.aÄüoÛ¹û*°­æ2½ÍµÖÜRŸŸ˜yL%«'%'σ,Üq0í™›î]7tG:¿Ù1 hE*”·µ2ùz«™@Ûùä-à£ãC©\ÂtÐwXZYE¥¤„Žjyž-?°´dþš& Š6îñεñjØÓÁ<ÉæƒäÞSÏÞ׫,˜ûý—iËëö¢idkh–nááÕe?Ðéš,¤#‰ëØp—?ÁîÝ_}“oôдr8—+¶ÍŒÁ[žk-‹e ³T¸”³×̪Ç#æ¸ PôPÓ@_u }ч­‹‹ÍÖè ô\Ù™¹»Â“€Þ^%è{† ¸ŸÞ†&Úr©xxªÚ©¿uu¡Ç³XïÖª!YÅo¬šñsˆ¤’%HDO¨iÆr™õ¨œ“‰xE~Ë}ž ìeT ›Y­Ø)7sYí÷í7…´ ÍfEŠ<­]aóà šõ 0\úš þ…¿ÿ èË…K›ŽÑÒÒÒX¦ºƒƒ‚ÞÙ4<‡¾Ò¦¦†À´'í!@îgU]•±×œBw>åÌ—ÊÃüË1Fªª);ïrC¤GÚzu¯_ííUínqkmžã"C*üò\$õ•^wâ)NhÌìCµWmÆv•;Ƽ? ºâÙLúè6[þ8ü>Ѩ¢})Fb޾‹Ô¼š~b' Î±ª#ØïÇ:%ÇóÇÔ zœ޶`Ükµ´´M€!´tu‰¯õš5 Õ ?ò|KÅÕhƒN`!TsºÜ—•ÀiªŒøŠzáïïÅlùVN¡Àõ«W@Õ_+z²ó§§33Äûø½|š”E©ô¶j%Ï‘½›××¾FŠž£T_Çr””¼)&.žŒY¿ŽºIþЪ,»+ËŸ•—‡rr°ÑE%…AñIæÑ#3‡¯ø³¥ ‚tuu]>ãìA™6ǃü£¦¦†Ïóh!>($DÌÊŠ`æ³ÇïLî 0gAiÖ‡š–vîM¼>”8i哌–må¢ë뫬'C  Û†÷C«çùéQëbsQÙ;Ð“š››¶A”ZÃwŒÖØee´q0¾¢¾%†Ò8¿¼‹&•²’Ò“eœG¼÷ÏÂpú[ÅnPÑÖÕqÿz:Ò'ûòê_¿F‚ªñ÷G?!ÉK±.OmÐ|úýQì#â‹F5>‘÷ý¤îTAM›^ÞN— ,„ ‡¡ /×_ oeìà7ýëà&ü||&@~cv~C—\p78dÈ fÄý×X»üeãì&FœÜ¼p8??7·‘ Î ç04Ýpqòð Lþ²q[{S{ ƒ#ÜÞñ/ûá1âà‚ÁÙ8ø¹`Æì|p.#~ˆŸƒÓ׈߄ó?íÇÆö¯‡ÚˆßÐÁÏ ÌÃìd̃ó"ܼÆü\p€vÆÿY7N¶FpÇ¿.^CCN#.~`ØyøyØÙMŒÁ^#.#ÿ¶›“±ƒ£¹õ_°‚‡“ˈ‹Œ5‚“—ƒƒ“ÆÃ34áã7aGüeöÆ&Ù8œÆÍàæâæâ0#Îi‚à1ñp›pðqÃþ²qã?¢ÚÀÄÉñ—qà ü0v#;'‚Ÿ‡×˜Ácgç4äâV2äü·]†÷¿ï‡8/;¯‘1»¡!ÂX † €Á¹ÿm?PœÿÝðñ xùÀÉ8ùáÆ&|†¼&\†Ü0~^N>8‚ƒýßvó;àÿ}O

 hÞØØÄ„ÇÄ/Hdž gnãÛÓß¼êÊá/ûâ36æàçÍqe^šð ypp™ Œþ½7üáÐÿ^-¸ ;—!Œ‹›Ç˜‡|€ßÇçJñþ{µÔ8:9üûŽ ùxÑøa&üü0.^NÈU@A>¸¡ ‡‰Ìè¯;ºìä/ÛGp²Ãù¸ùMŒ¹`?yxa8'/7?»ï_¶ïdýïèflćàäâ7„Áù ÙMx¸9øÙ¹ŒØá~4=A¤ÿ÷úÿ³×¿äÿ–6†pK‡Ë_þwQãÿ9ÿ‡Á8y`ÿÄÿ¹ØyaÿÿÿŸx QH(Š«=VzH6¹’º˜œ´89% ›&§8›„š¹Ö#5y9r+;¹š=ÜÚÁ‚_¸%ÛCJrJ3GG[66VNV{S656W¨-tóï,Žº“ÕÈшRMè²CW+KkáÑ ŒŸŸÿ×Ý—×ÃÀ›•±#œº–ÅØÎÉÜY˜ò²Ô°vdQs³5¦$GüúM˜B¸_7 "ÌàöÍ…ÕÕ$Yø(ÙþU#Z,êXÄm¬láŽæ†–nGú¡0ÿßﱆ[ Sš[ÛÃA%ð÷ë$l\ÝÀq`$>Vûå޿ޖÆ"/òË7rhÃNŽÛÃíÝÈéÿ~ù%ir©_Á'Äö«4!Ksk r3€â@-¸¡+ÂÁ’ÜÞØRT\n–ÆfÆÆ Ôrø­7t$ÂÞÜÖñÏgžÂ῎R’;Ø#„)Ÿ‚tjïª{J!¶_gþ³ܬŒÐx:üóÝ’×îìholü¿Ud@4ÌÝÿDþ- àÛðÿõ»ÿ«;E@>¦¦7²A8Y/a`µNìFonmî¨)¾Æ xy‹¹µ‘ «¥ ܈þ—†ŒÍMÍÁùmZ£_÷Ÿ™–²-Ûï2´1roFæÎäæFà"PçˆQ°°Ù[Û8‚ƬlœÉÍÌÈÁEÌäæŽäà#ÂÒÆÁ؈ÜÐüw×ä,,nrW8P WGH7r@Û-láskSaJvÊËßmáFF¿ærü% ø`O~©€‚KÅȹyl]/m(ähtÙà™OÓÁ-ÍM­)ÿ¸üwƒ,–Æ&à&vVnc«_w‘ÿM´ß÷AáKù_G$Ô-Œ‡]Pèbý :YÛSŠp°r³òƒa§uÌz¾œÍÑRŽÍÑþ×ÛoÛ³]Úúpyá¥õ­È¡2¶'·%î/ãB'¤~áÍ/Ûÿ#Ð\^ô'E“ÚÛ¸À€¥-á¿ðâ—-È…œ,ÿtÔÒÜÁñ÷ pÊÒ\DþÛ¯€#»þšÓ¹TXDnnýËJ œø­¦ü7þ«6lÁuÿÐ†Š±%¤Áß›qøOÚ[„îû‡¶$@ÿjHõrÆÉÉþ¯ZûCi„“½=BÊ¿·nbnùORJBGþeSBlN–¿ô‘ýG“süƒÉ9þK›ÿkI~é(îú_ÑîÏîVÿ–Zþ4äü_Ðð¿“î¥åâ¿o½,ËþÑfàÀeBúoZqäàZÑ€Û›CÁù_µÁí?´Ñ#c“ÿªc'ÿÐÈCpŠüÿV'cgÀ±þUC6öÿM3üÿ{›ÿ5ïáúïáüßè=T—€e`ð‡ÿІnÂð& ÿ›&nñGˆÿÊÐnÂè&Œþ«`øs&4aòß4aúç&LÿhÂô¿iÂìÏM˜ýÑ„Ùӄퟛ°ý£ Ûÿ¦‰ð ‡?šøüö×ÛeÖ´èùƒ¹‘1 ðæ¿y²“9‹ý4Žü³?DùÏaÀñÇ?<ÿŸ³ü.%þ¾ÄÁÍñ·Ž/ù[¨ýßøçðs°µ4w4„Ûÿ.±XÙ¸³89Û³8[#`mcm,HIþ»×¥‹ÜÚè…þl¨KÿGòkò¤é< ¬wVÚÓÓý9¤é˜éè½þ‘úþ¡hð[Qþ>üNüÝ‚> Iehiƒ° ydlo QYˆì98’Û˜Ã--Éÿ¬?¤s`&wþ#0“ 4·†>@ Þ€5.5†’ÜÅÜÑŒâåÀei6þ[{—À-ðÛR ‚å„\õ·Ppk„T@BýÀ€k²³ª.†<rð¿/¨I‚êÅް@ ÿ{SÆ–”À?Ïð™ý±TÁ‰@ ø¸á<Ü8Œ‡Û Zá@˜ðsñs¼ø§[YÍ YÐ~ÅÉoäŒ-ÿM϶6öê–Ÿ nlÂ3ââErÀà<\Ü\¼ÜüÐ ÎÏÿ{·Ð}ÿªO%sëÿªGÐ¥!¿1/?'§̄ݘÛÁÍÅÎÃÃŽàà†Ãy|ÿAส1zK%àŽnÿU÷ì0n.Cvn?;;§± ‡ ÁaÈÅÏÎÃÁÉã41ü«î/èOøó‡7ÿ¡¿ÿ“ÿÿ½D¸\#7±±qü‡êáÏb w4û‚€—¿ÿjÒÜ kà\PØØ“C€älnìò·x ø£Ðø…–ÿžõJ)òç2å×5óŸævþ¨Z¡ ž?W¿n0·2ý§VO6ü¾ËÖÚ”„¬ãߎP²]ÍÕиþgc‚·?Š.¨+´ÿ7åûoçÿXÉ¿¬Œ¡ZDÚÚÄÆÀacii``j·5cµ‚ÛþïÚÿÁÎËÃÍÿ¸a0.7;Œ“ãÿÍÿþŸ™ÿy ÿ4Ú”¿g;ÿù0$h’‡ÜÁ å|{@!~¥1k#cŽ?ð‘ú_»Ð'#s›_!O~9_$L "7çì­.æeV¶&‡CW’C…1+ù¦[mì8p3s3?aæä¸œ4üŸËÃùoäQ²¿Ä¹ÿ@"r[ûßø¯E‚ñÁ€Pœ\ÿP\ÿF(èý?‘ÈÞØÔÉnÿ?“ˆ“—HÄÍÎÿ‡Dl`¤ÿGøûWñodnoÀnbÄÎÍnlÈãDps™˜À`0v..n^C>C^C~PÚB€ü¿!þy¸¹aŠ^ÿ윜Üÿ/þÿO¼‚•¤0Ñ!¿À”~$¡Þ½À¿O(WÁÿŸ×à‚·›†²RHЯscÀ•¤Ð~N×”µT%UMÂ÷Š/·£?I¢~¤ò#@aß'–ÑÉH}šÊÈê„ôœ¹ÿJÎK 7 æò¼A ½²AÓÜÞ’VzÌ5Z§r§ŠPŒ±D´Âœ!4Š5¥+è…j­TO÷#W§äqÍ®ŽxÖþ8:s:èriÚ™w¯øžÂŽqóZ«±àòUïÜ'ìÿÉÏhò–ø®û#UFÿáÃÃÃWqqI¤=ì«Gºººˆù£™¥ôwÆÖÓMn?TÞ=¦ý"8+ÖÒ’Aæ¹Y^[úÖjeåv<뛄=g IIlؤEÇÇ«l ÛŒ™¢‚‚N-/ü÷öîÒD¿(Öqøè[P[Rb7sÚÐЖ¶Îišô¦¿U¯>„Ž`îp«YSmPM¡D_}m¼šˆ‚:*›†ºaª÷µŒl+ýGï‚[)ì@À‡7‘o°x]œ¡±ÆKíjª{QÄ4òzðŒ÷D:lLéqˆprŽ|ûÆÏ£á‡óùëWggýf‘üæ‹©ëâ6nÞüzÿöÝ’Âd± –'Bž‡½_¾ÓÒnu'¢+:x7?ÿÖƒš77\¬àãÃÚ‡…¦-³¿êxÀÉísô&½sž¨³¾®ŽÂïç‰d%9ùÌVOtç­Ý]G ¿Ru5 Ò  ­#éåy7±Y±Ï‹Ú'K'?¿ýüú•Hâäôèæ¶LjꙉJ¿díiáÜœ°*ñ\'·„x¡zOâ|(ÎÊZã;„ÔÞéÓ2g«0µ$žöSÕ+Ý'c•åãU NŽ…jwCCx¦OÈ2/Ö'E<åÁa ¢¿5œã^®Â'³ŸËzQJJØì,Å<ôä½{?¸©èƒN¾™vʶj¼‘ÕöS²°ˆoöA[~ÿ\¥²na0ßF!ÍR-ÿœ%Fxê0»öh¼CRÝû|<1‘ar²:9yÈß_0$tç“2v‰ðq­ØÖ^{¨¼ÇA“…ÄÓ§s­þî²=EC«Zún” ’Gså¼Q[]½œçwðôoõoo¯_]%ÛhIfrpvÆ VÁ;:jÿú•UZš(¼úá·ò,ÇuÝ–7B÷ò“Çk-Î…ú4èó'¯}™µýd…-wo0úÙš¯Xï77qòMʋ߹Rµ¬Ö#pìmm †h)\¤qQüxmœ Éê|.¼ííå|.„E|š~ørà7’\™nlhHN?>Æðò Øß¯Çļ+ŸÒ,™EKøÔ)4>¾z+ƒwZn¢6_XúuãÛ»ô± ×;kU,‹–תÆÇ+‹‹E?t–ò»Ú–ß³wh'”_­´Ð¬²”¦ãSþX]­¬®&#$œ¨u`[>?3È#|%†Ô %Õ‰ê賈ž_ñ~dÄg¨`Ißf¢'òW}¾ÇY„ODðãJçµP¾*æÏ·2ÖÆ/ââös»®_¹ò¼PSªT§:ºàƒßœ—ÒÕk‰±±ÜŠ';†r´Y¥=™Ÿ8>w1i–FîÐO!ûóôöŸ¬–Š[cJ¢Vìêk»£Ôùå‹Énð íc]ûÏöÒÓùm_Ëå½*P~ðêU³£ÓdÿªTž¼ ­fIž§×™é×ݲ÷ZÃE: | ­~·=ؘ™3xf¯_¿ÉQm~@Úë[ú¯SÓ}‚n Ò:}¦ö©©)æ˜E¯óFðÊÏÿñCÝßÎÎ/øû7ÓtÖë~£–ûèl OÜܦŠÑnú*«ªÞº+Õ%l·µ÷ï¢:y[DH(%*jvuuuv¶Üûì8-t9¤£=§AöMÿñ±»¿˜ÝÞŠº©éRÓTÇû¢Üby995] xk@ºDNS±Ac¼÷'¡Ê]?rHmˆ‡GGÍh";?ä48Ôêú½Ô/u\îmò:ùnÏïøpÞPuÄů÷Û;Ó»lúƒƒƒ½½ef}”Ëö ç¯.þbQ±±êzzVÃ:Öä£.¾-ä±2ïÞ¾5ù’4Ôß/æˆvýêhAG›ó”ÁÚúºÉ»oY†EÎÎŽÓÖ“ÇCñ÷\\\,*µ3ÁYëʸN¤}žaæ)÷ÕbTÚV#Ž t®k“=~‘.A`13wG·Ëá ¸EFD8ÛÛn˜©¨DÓ„&R:nƒ¨Á¿s‡û)Âò*pϼ<ú®x.óåï$ÿ{ß×ÔÖì;¨ ( é z‘Þ)!„"B¯* HWQ)¢ U@zi‚T)Jé]¾µA=zôõ|çÝwï»îŸ’dgíÙ³fÍügf­5tû})9›KKû²Útl­­·0™Ø4Ô®þ…”*³a‡x¸ùÞ ‚#Db[¶lÁÝdô d •ð°x>·°@ëeX{ n‡jŽ?Ù‘kËp¹,š™º|ÈESSSZzW_å³®.!::¯Ê~M=V¯†™þJös9¢h±Ñ¨byºý·SÞ߆=/Öð»ÙæpæòGTô÷ÿ.ìˆ?oNÐP’?’¦‘ä»-ÉèDöI§©‰‰Þ’«¤8Õ|ÿ-Bé>Î RRR(ËnA—y3á¨T5æj$‘ƒâÝ["Â~årJJTGÒñå{34T©ŸÎÌÌ|E&B1,<|dd¤Ú0èÐÎ]»¶mÝJ$y6Ù¾VFBŠ»ÃËÞ|aFGEå±ëÒ»ÖÖÖ'Ož„²¨vñ¹–¢¯’ &.žmÑ%‡‹'ܻ諣£#Qˆ··711ñù¬³Ég¤%$ª 4׎ê×z޵¥ŽáøiD£•“Îf]}íNèï õ¡Ë¡‡ØÆºÅî]‹Ág“é?~Ø­ÄJµ–¬¥¥%R\KëÈ!>kO±èö4t`HðÝ[}uù­ýBLL²¬¤ÙYY&Y¯ ûÅõÓs²²Þ?e"=ôFFF¦ª¶ö¥1×áz?ÿ‡©nÇ->ºìÃôŽÎ¶«Œ«ÅŽ¥ý Á4ètÙÁªŒ$)))okX˜™yú•ï÷+»æoíÝ<òL?ýt08åï'#zóF¬»Þ÷ðèèí¹¹“wÃFJÕ™C'&&$òïß÷®¸Æþà eâ½NZ»AàPo ¾¸ãääÔØ˜¹š’ëצ¿îäè8½´LDêwìzõ÷GÝÄþ*zóÞVvvBÎsÃ××.Râ/æ²”mLìÑ8¬¸¥ÍŸ¦²¾ýþÛ©4 ÁʃdEðrp³òñý`6 ùW,|~äk ç;,íl?=õek…Řš`þXúûÞä ÅÃÊÉ Xâáãcåäþ!Oß°´¹°ô5'jÆX¸´òÆ#hÐrÜöÓÓLßãÁÇÍ þ°3áaEpqÿòÄç&9.²8¬Ú nµÙþ.ènp·ñØ$\ z(ð3£‹Th ÛÏWm¶ú†}^.$+7Š•—“•—ó—§G7YW²úô,Ì·bÜàÐòß™2FB“Æ(Ççg¹ÿ‚hnöOÊüÇßÞ‹ê2Š‹ãÇ]F}¾£ôÓ–Ïë8œ‰…ÑŸú{Úâã ð¦Ò|jó¡ss²4eå㯼\?àç/zý‰‰ÍEѯYQþ’ƒ•CÛV¬}w(V Éœ? ïX:­*ö#~@“¿a†oC>qÿX>|?bÆV_ÂÄÖTºìgØ2GÛB¦diƒ6v³q\Vé/¹åâåcErð²¢øP¬HÎÙ?‚ãÇìªblM~†Ñ“£ªµA;ÀUÅUeÿZª`x‘Ü|¬(^V$ïùü3Tnb÷ }3œ öOª/…ÑÇÚnÌ#?«7ŽÑÇÛ9òׯk†ÆÆí]—NVÙ=¯©QŠè½$¶«‰¶Ó¢+ÏÎ,ÅzéÝ€ÐTCw·ûúª'gÆ}ù°õ¥¡(nàí àüüΓ¹þZ>½ˆ-°½”q´°½OÌ;ÚÏa´µµë]\èé)EÜWG[=}ú”• wme¡ù’Q'r{>LoN±E¯—œÑËÇ'E·Ø½üêA ‹ääd’ÝåmmÏCoÞ¼‰@ üÃ8ô1Ëîýò«³CõÙYY}—.]zñâ…z’ÆÌ»yWySÓG %ž~ä¾¾d¤¤TÿäÉhÏE¯3ÉgO«¨4 âE/.:ÚÚÚ˜Ž¹ãååEyqê¨löðáÃôtt·îÜéO½H)jnžœ––LTô v ðèÉ)ìæ<ú’I]½­¶¶v¬-µ'ß]H¨«¹yöe‚j¥~çlé¥]ÒA”vvv/ªªrÜVPE>¾¥å÷c„„„‹7ïðX¾}ëè蘓Ÿ?ôömgžÝžž¥¾²Ë666Ú“žD6ÖÖ$ò©¼ŒœÜ¨“÷«ºœ&½ØðdW~G¶¥ÇÌ›Xz:´yò`:f+ ¾ˆ›ãrDDDLLÌÕ«W/]—PV.,,¼xñbAÁj …ùBg®-ƒ[}Cƒ²kEÀo/¯ÁwÚ<-ñ÷ìÉÈÈPU†Ž´ŒŒ={öŒ)cªª«ñññO1Þ¸¼jyiISKkÈvH&ïÑËׯ_2^3#€ gggA{ÌËSòÍ=Â;v¬–æX÷'&&‰½{÷n‘tùRË5µÞ ûqqDbtû}‹´°Øcü9!—.jbfuivtttrr’V:pS»ØœÏ¢zêTz™­ÖÙ³Œ$ϧûÊV4„³!ñSßsØddf~JEBBT\F^žŒŒ¬_«Èm¥µ+2V*à)§ûÈ›¸¸¸ác$ddÍ ãN—‡‡‡¯3(Mv®d÷¸½wɶ¥ë:ý¼¾g漫ëªÿ!ÎeÔ7· °H¨PÜ“GWW—ßÕ«rrr«kk‡p쬬µ55  '1’"JKK»o_ÐèÐß·oßrd@@@ׄ'úVPP=PAºcÇö¬ëîC8ÆåËêÛRà¶b_w—¯ÀaCf~Ü0ŽJ%‘5\oÉ…ŠŠŠ{HæÑz%437///úýÚµa6Çëk@É¥¤¤Ž Ì†SDååå=<>hçÛS{í% ˜ª*v~?êé ããË­xùòå7— £±Æ÷ʕᔫ"1Ñ zú‘±ŸQWï'SuVŽwâ)‡ÿ09¬—ÄÐÐðàÁƒC¹ž¦Æ‰DâE?}*ÆÀÀàJx%:šú²+Ùc‘ýu"ô9›s൬Ÿ­V²¿ººŒ"0©ÐÐÐõõuŠ›l·!ÉÛFf Óó 8“—›«©¡·{7To£9þäâ<¶æf:§{{;@=ûî”*eˆ*¡áØuÈfÕÏ\»½M£:—´ ¥Ð85‡†…E »åé*¡ ¬÷:ôuWm]Ú€ì¨À)ÿ†]ë íìZ¿ƒXã d0Ž8Qþ­°Ê„G0«S+ S”¢ê"óøgççÝW[©{{{kŸ;×®ÊÓ“¹PšÉÅåF·ÀiöêAhsÚž©¢¬¬–æfÛ–ÄÓ@0564pPS—vv->›~¾%ñÚµý^Ê@ÂᾋWW·'”E@uųg ìçqš;ÄyyÛ;;]â±ë=ËÆ¥8¬-¿÷·³;¤áêZ››{ûöm0”'ÅĶ6ëbÂøÃºˆïÅ*3’±Ó(tæÆÜ‡ÁR` óIï{K/ÅJåååô>rœr20T–••uu 10 µ&k-F:Luw‹J@$¶JøÆõëâxåu‘BG¨qSÝ…ss8€™ª…œç1‰mKÕu°²šž™)ì‘õ„먇]ÈÍÉ!?t¨ïÐpÄ·}‚-¾ÐÑ-Ø9‘HA!¡ ùù -gʰ^×à@XÉY‡I5pœ:eme…G@ ‰DüêÕ+&Fèhõ |ìs9«¥uäðá«W®p ¡Pg””öQ{7°´L½wÎÎ^Œ© Œ|$ŠgÞ™sJFƸ»À‰€€`ñæäèý1›]|||–PÁww÷ÖÖVíÑsbû¤a À3hiiïM ¥c*çÏîyŠ— ai7/^ܺ®×™c½¸6ÉÂÂ2000¡—”WpLŒþå¡'™™ÊŒ7YZ/àEµØÄ£^õAúó”O¤të8ÈñX/‚ÏÏ_© ¡ñpŸìäójxæ{`&%¬´ ¢îþ{"iX¥ã.nn)¬WcC$’’’ÀÐð¢«î ***Àì™™™ñ¢ž¸ÒŠ]‰*îB »WøZÄA/g@pg{p¸Ø/%ßÙ¥›šŸÿ5p> Ñâ"«ÓÛŠ:‚DÖûƒDcÜölÉùz‹‹‹y[sNÅJúæP}eU±ÛÊα­%Ç{õ `I““:·Â† õõ/£7=ÍÈóÓÓ%<ö ííWˆœWæ'îòÙN†ø>vì0t!õÆû“£åc£6»ö–¹ºº/{Œ‰Isúí•Ã+”æÒ½K³C‹Û0 P«k×®ýâáá¹U° Fv¡›¦a:ó¦ ¥… ‰|†Þ&VÕÔÔÔÓãÑ–¢G-..îJ (¤ê.¿)÷ƒv[æ&ójȳûJ:?Œ‘×nõk;HDg`hsº ìØžÈÆáÌ1U$ÐÛv¥­£ÒX–N%LºxDÇW½½Ë¡=ý';e£•Ž„Í Á·-$méÕU(6 ˆŽF±O]ðõõ=uúthHÈ ¼ƒ¤¤ü||}¶·4ÊKÒŽ{NšK…ȉählƒ9È(*Ú;8¤&$$$%Í-,uñ'݃ î8É¡œ&ñÆ ´•”‚|Å™x,:‡àÑhjFF^ÓÖ¤“wP}øTÉÕO``Ü`0J€ÀE²föV˜Åv²O7ÇÅü[¿ûZZ{¶Pè¬öñ7+¦Æ]/*ÄQ>åP±ÍxøÐXI>l^Û%?ØS”Eõêèošªú”'ŠgßR úãÚ«qEîÛ}%LêsÆP»{¬A:8Г:¹ D0 ]ù‹‹/_Zª%Þxø0îV»"Ý~klL£ÌýûeW¯>3準bÁ.ØÎD™•%®"²ªŒpuœÊ}zy’™™›Vz^ÀÁÄì­’ÂQ!w×ÕâÈ+è¸EGÍýø×Ã,ƒCÍ®ŽIâ>¸º®½Zá\ù³+7Chµ$%W–#åäåÙÏåXM#`°eBúå‹Ô’’PÂÂìÌÌœà/Ë#ÿ  ¸D~犽XmíW•55ApŽ'­ÝN.—O«ó„‡ðóß~^-Kø¸61q'¦?#/ï9›ÙdÍ:¦‚wyÉ|yäA¶‡5ã©Å‘TByoÚt –¼myÔHÆ^48Äðá]Í9–GNoÞÐlÃól\˜ °ì1””ÄúxÅÝm‘•ßÅ£ÔõL´[ÀÚºï)!LMF6«bòêÕÀTÏPyåPEÅ ™ú¼`Å£±©©(ŒÏ;ÿCÏ÷¼2:¦•¢ë16AÑÝ­\||òÄÖC‡fJÉüÐíƒ/ÂTU‹½½ÆCoŒ7×Uà¿Hôn_ÄúMxƬRkëìÊJçèh…§çC?²=ò'ÖýGµ´hã ¸¹ÏÈŸRS¼ÃžžþŠÜ'þ¤*’»¥©MýŽ fôlrÐØø®¼Þ“/33-Éd\]uÌͯߺüäIàŒÓðaí­hºgLêÌÅ–6=S½Ë·x漃”Të©„^ßåL R:dØÊs~?-þ¡#èo²k[î[ ’Îg3³x½Å¸y¢rMÃf†ËvUØÕÒÐØ¨mþp_‘ÈN‡ÆnÐzyÝMçÜ9E3³º¡ú€-†îýœš]¨QÚ)ÕëýýI=¥¡¡ëë![¶œ¢¡ÙZ›'VʈH×[²ÙÇðà %åæÑÚÛLìÕpQ¼6¿H!u™ð8…þ¢ {jƒO«ÝØœ™y€ÝÎ*»"ò23ßžTà:©y¯f;l¤fVÙyyƒS6ýolÞ¼±¹vÝ‘äv⨱Ði!¡ÐpÎÓI®ÅkºôæÍy‘â*­lýòg^IÉC–¯bØihª:™GGÏ*œ¬Ox(ÓS›¬ëD®Ú¸‰°^™ïê)êšžî»Ðó2>!ab~‚×rjztTÊ ~Ä?º†.+)‰4OX;P›…„TKYVÇYz ß<ˆô{…‰q\rºº*bæïÝ}SÎÃcñÌŸRȵãÉ)i†—÷S!/²-3ÄÄæß/ÈíÊ€îÜ_5>naÞÎ1–ZìN©à!®ud`}mÁˆñ}M˜)pÿV¼ ¥—ÛaÂdÏ# ð9†¡U/áÁƒï}}w,úßb×½J$Ö_YÔ! (®QWíeb ½)$R®°°ŒRd˰öJ²ÊâîqƪÄ–ŬkÙÉ{_®¬œ£§Å‹.)y¦oq;ü¯›ó 8ûͬlU*‘õ·ƒ¤çÎ+tÍ}réRÂÕ«\ªÇU.³`bJ×̨8rÄ”í/>$~ ”!f–G~AõAõ.„Ùùr¯ÓªëêžBñíÒ<~|âNªå³X騊 *s &Óæ>¡ˆÈ2‰º*FíÇÏÌ;ž8)*ÊïœÆ BÜß0ïHaÓ|w)ŧ´ØJÉÚa_u}êêL%ÓÊüq¹r©¾?!%ebl¼+áZ|õŠˆƒ®S…;7 õ„9=')×ÌP›!NÐדØÕ.¢[Dââì#ì2¯).n±2¿ôèÌHpuR!§¸) ¶z?½^4±}{Õ6Æ ##xbŒ‚‚æc­,ññ× Xo]»ÚhÜ>;U±çy5“nš¨íT·äu–½Eí:-/¹ÜHÄñ‰¿ys½«>±¿¹|K¯`íMhhKù3ƒÊgÅnwB£t™«R““yê¶ ¤ˆ°V ê¯¦œ™ÉíîfºN_=õ[€!™_õïÎ_èÎ0Š›i£Þ±4Š <4ët´žŸ!c·0l=Í|˜`Ïy!¶áš0¿èÊ'S GÞd:¶°’Ž`A_í4·ëòÜAª=u¯46]«l;ÖܬJ!|×ì…P=¸–‘Ÿ_^]ýU«=p­¤‰îË\À*ÆÂØÖ;μÝBö4·znR;åþÀ!¡?2ô›|Ø&Ã((JÀáim8sAÈÅÞé-¡FõEµ/’5€&ÕGz‹¬–¥ïñ¤t³Ys®­ ËgP>dp*I°ÀÄT±Xd]vU’lpã0÷¬]ãzÉÌQH°© µ'¢TTýFƤÃèûcìN,p^w­jK¿cñ:âÊÜ¿=))¦/^í-âBÅCÇmêj`ð ä uyÝ÷Q½*Wåæ®l•n)jípûöëñeñ÷)ˆ3Ší€›·j³¬Bû>X'^1‡¹Ïýxw¿«ÏHüýjLΟWU;Êí0¹}Û¶¬W 2²¾Äpù^¯Hªs§N8‰MxŒÜCÖ?zZR²Ð·ZS¨pÆÝýH¸ Ü ¢²…EùmnáX)‚|‡]òZA\39I]éÖÚÜUÔLМ¼òf¬-ÀDp0É0r „Z;aºþEsO«BÊkÃ=ƒdŽªìpéå±Ã¼_S]ö–*kMžea]]m¡4Ô~¯§‰™uÕÂp–±ÊãCQ€¿?¯ü˜œ<ËÌ{‚ìR•Ô²ø£/±=îdz—„ZÂKë…3IÖ..ÔÖª—Ž4W"82öèäí¸’Y‘Ái­î•E‰Ì¬S­)Õsù5„·îh¥å»T5?˜W8·Ý?@ÊÜ燩áS¥ÛŽhjÞ¤j¤ØSÓ*ƒDªk‚ÚsmK_gqjæ‰Yx ìÕ2e¯“@,¸y²Ýƒ•¢HÄiÖ2¸®\¸ð¨RR~Ïniˆ·ç¡PˆÑ`œyòÎàd§É3¾fšîÂ팊ŽWNK­É;Xo¾€((èîì|›»¶¾Fqõjl»2æÄ‰Ð0õö®ü©·oé’“ÓçÖOlk~ùr~ãne%§¬lcmͽ©Ý-]20¢­MÄÓT$»'f‡.òX"cc9E\«,-$&TŽ=SºÅm*¨žªØª B¶Iݜ鳢ž«5ì¶€¶õË€æó¦wêúš±á‚×× –?éùƒ¢¢u·#¤]ÉÙ11ç=>TÝáÁÄÅùhieLO>¿ôæ zœ¤ÙÏ—hºË³Ô·î¥|âÄÁî=ïO‚È(sÎ „@;ÅÅ œ–ˆ%¤+-ÊË[ÜÝC²Ùú⛿æ2ÞøîÍËhòù±Tua¶½ø¯jæNÜó‚Láõëx»±Õšš1JÁ4ôÐp¯eÏyW7ÚéìŽ×Îë7/uѽH¨MO+µ÷ŽÙ²ñmð£Ë°½äq´âêââêZÇÚ,-…–ù࿈rï´Û¶ÍnëPÒþGiÓ+Þ{Rù> ½¨± <êäº0Ix†UPN è`â#Óî´Òâ{½+….\\oÛ5í°ØKÅ¢¢ ’ï|a›”4h»ˆ,c»Â&f€è»FªÄbÑÀõ§ºždzùÒ„I>/­‚Ù†Ô—½šwÐ8[gøæäé[,Ç“ßVRu™™“w8p+îB!VV¶·CêùÙ˜7Ïf)k.ï.¤¿^­õĪó`[¦àâ%UB96æ‹lJ’á‡ö33‚È+&).¦òüùèt~Œø%ïØúGì㈜̾—`ÞHCƔз²=Í8’9bprv°@i¶¥V†G®›—²FTôå}3‡6W°/Œµ1¯bÖ—ívbÂ|##=aáÃðaü8ZÁG÷ﯭ­.¯nßQ âÞ^UÛ¾Ã97nèï RVÔ¢xddoŸý´¬YL|!ÝB‘µºan®yÍMO/¯Ôl ͱaZº®öÙÙŽ.v¯ÃóíÙ62ÃvæÆÑø¬Ï¿¸ãßzf·Û}{ñ2ߤíCa1= òò‘Z §bWzø»sm°~ #t­-Oñ¡[Fä™w´@0mK¬=¤¤Fþ¡x^[ÃÍ­&ÏÎùnÆ[…`Ã:QÞ@zÀ õí°³{ÔÄ$$d‹µ‹•òØñâÎa"þ6 êl ÏÕU9Õf[5ÞËȤ!”DÛ)Òqº…ËŠŠ_áâÎê*¢ê?°¾&ð€µJ¤·—ÝÛ»çØ1É™把Ûfž„ž‘'øŸ–«€ åòoïûî«·‚ˆn k¿jPÆt ¾NS…IHb#ùfßôW¦‚¤ „W·ªR³×ϛƲj;GM¨ºœù3p÷›ŽRLmßI¯S>Ý™^á<¥#¸f/™ïÀnбŸI¡-úÈAöî"çzxØué--ÑfI&çQ—RÄN´ûK•=}ª¢­­ë¶~îajêàÛLƒ×\Çb.f‹_¦ì.¦úúàÁ›ìU¥§€¯ÈÝŸèr™ê+ Z_¿Czü¶Ž÷CwmîÃá•w¯ççéÏ ""…«Æ[½·q}Z ¢`"¨K8/Ÿå¤A#ça—õÕÙ\Û||{H'ATýœ$¥ Lרx4þd˜ OÒÙûe>£¼ÇAp…&·_œ.ØSXx<Œ-B Ç‹·æ¡ò¦øv˜úLêü¤6úâÞÆÐ}¶ñæò¯žÖö¾sfn÷‡D«Põí|êÕk×cúmýHOÚ[#Œ”ŽBVDZWÀæíL(K#pÄmIÇøïzôºY‚@@áäÚ½ ƒÝ…~·ÙÅ·6‰£©©‰úc½Mÿ½C%Py÷\¨žÎ¬¨8³x¡‰Ý‘æÍQ:Ó‘‹4Bo1­Â×ù¯·<*óI7Ñ'1ЧÍi~ ëèä!dúÄ~B!³Dy#'§@N‘ ‰jÅá¸"øC=T4¶Ÿ¥+¡ ´òj=#’= ó ¼ÑÑñÎÉI»paùâŽÛ>>r¶é7 ƒ˜òÖz++ NŸ1Šáµ§õìo–l¥OžœOVz^ ƯªüXU ÷b{z¨Ö“áòÒ§N…?PR’alhSï(öð $\PÝRXCGGwŒ3CMMͪî.>=ýY)©N½;ñ@’øèHl,ÈœTt —Ut{b⸞·kÔ¼TÛãn?'/.>|WAØ‘ÃgsqØ+l <¾¾t—wf¶" ã•&ûå´xÔ–SiÅëÎë•T5À SÈ“½éQ—ÛÒ¼9Ч®o4€{ƒý…R 6°W¯JKuÁ­ pnYww¤ ™½dR¶As‹:ì˜á|RbbiûbçÜH?›Ngí`"ŸО¥e©£¤9–=úÒÒª1˜‘Ãn B)Z}ñºÀ‹s쉣5»ß¤¢rÀg¤ðÚÝpÍ«AòܨÖs™ÆÈ]‘,@¢ç Ÿ,ny0(‹ öË8ì|[Ýq0ríÉ vud¡.ðÖpqlú£a0(ÞÈÈæé»ygÿ^ S–cÂÂdÅè3**ÑÞ 8\îÇMòðó—DÃ)оoÞŒ‚èÓ5œˆ94þþ1Ký˜\³WjÜÜš1âýçÈ}„Üïê™%½Òv8…î[ØC¦ÓSpˆ–í±yGÁq­9I‰í¯ŽÒ¡£'eÕL÷øð&B€Œh?Œì>pÙÒA¯:zgÞu[]d&ü¨$¿28vdfºOÚÎ.%Ûß råaZé[L´±\\\ÇxyÊ.»¢ÑrmnÝ2¿­ø&| AÒ%tûT±!žc†íÐÅ:·)Ýâ3N.—» W›žŸ¼?`FMí.öÆ ËǧÕ{v…HŽC½ÏÓ9,`4vì¤mg œ ƒRÊàêé-ÍÍò®®O©„–¡I¯!ÅØP»Å%'¦`œ·Tée=QôÒ¥b/¯¸›¡-Ïk‚8¸[Ü\.óŽUk+u¯–N‰Š’øø^Ás]]ÜåV²½pâŒ2y:`/ËÔè}G¡íPà`·í)¸J;(S¥£+>::ÚÒ\Ñ¿ê¿úF”îHÿ÷…É|Fªý5O"î¶ßŋ̂ì¾þ FwÕxmã¯ÞÓ‹r77án{~žÒ’O|wí¶—MM”C—æLh„¥ÉtW=“PUW/sñçkÐõš'¬T’twvq¹.äB ‚[‡}Nóãyyãâ1F+ƒ/Ú·í¢ì,27×»§¨GÞ !ýl‹BL<’3ÀòÍ<‰`çDÅnŠÇ⟞ðžQu—‘aîÆÒÐÐðº-Cª%éGÏÂ8÷ûغ¿¼¡á%•»òôû®‡Iµåò[ùe¤—¤¤ð.÷‹«ªš›·OŒŒ|~í˜*){äÞ…Û‡9*Îmg ¡¹ËÉÆÏo:ª&¹k×@3:¸kpƒMó!kÕ[d–Â/(xœ‘1|½ˆÙ÷À@\ÜzîS^Cÿ¸KÛ.+ÆOÀ‘H·š›0UÕãJJ{ØFÍ™ç‚ œ8 _2¦Otg5Äß³‡ˆ‚d HG{žÝâQ*“Õ:")Þ¯'// "5µ8sz¬mŒø Jð——‡àâzÿ*£\‡Qæ·›cU=–eìôÞÛT}½¾°à)ÿ]/dTAÁÛUÓÁú683ÊÔüþêbì`¢ý•öã(…œç|£zÆØ\HŒ¹33ÅžF™š”¼ycƒ²(à5m]ÜC†jv9 â8h0LÃÒÓÓéÓûÞâöKïŽ Ô¦cKü*ùìÎH߫ϹxÊèCˆÄèÜÖð))Ià¶Ü2ÒÎ*§[ˆ(#}Œ¨]]é¶m{_þë9^Ùs缆KTë…„irúÊ$…ÝøŸ>ÉÏ$²è)ZQŠ¢÷ñ§°§[1UR`Õxü,¹F/8ÛüN}õÜ<@1ïò ÿ—s'&%]\/´ JJÚ}ð`¥{ÿtȱŋüdl¤DphÂ7òne7ð”•5ƒàd©çAê©zÙÄÈ–‚¿{¹©[1zŠ.J‰R¨êrJeãá!åoòމ½wïí¥"îµdû÷ß9yÓ} "ë'̺ <>±/ ƒ®ŽáYï]çwJúÕ [vØ·´9ôƒ°C¢œÃv0ýéÓ)íu&.•ÀÔ­2YYï±Ö%Sã*g­³guj«ï+?¤Ûÿî}×b³’ÅÛ¢•Ï)ZpµkaÊ;éûMŽî—-ÃdÏœ1±µu¹L±¸(CîÓšå47üœº#ýY‹£…¬< ñÁƒj*‡[Æ"0y{Å ºÝ^ì/ÊɹâëïëÛ \rLŒ•!§æÐ MDÀQ¾ñþJGw]kë¬ô™ÜP–¬˦ÜÐwÈÞŽzÝ­8‘¦-k¢f6Ž;÷ö-­­.5õzb¢Ônï«D4!2ý²’’ÖλðµA û~Ìè]‚“l&¹F $Ø}ÐôôlÏŸ«ÉŦàn+g8Ýœ³Õ÷U¥c¤urÒœšèœì¥vì ªTê))ñ’ô;g?‘×R&|èÐ}6¶³CQ‘Üc‹K³¥rr±):kÜL#/Wú`kâÅØžâ”„§¨É¨Cd.^4@†¯®¹`ßÁ`8w{?q[±ããÃ7x&õX¿<³.÷Š'ìU§ëN꙽݋3±J7Ù{ù —–ÖGÛD£‡€Š­Àæ>ª» SºïzO¤L6öxx¨9S™£¤Ü–™ùæÞ=ƒ#wÆHv:@×Ò|Q6uþÔÙ³+‹ÖOA¿¯_÷3À»ÉÞ¦StÎåùt!…cÚÙ]]ù¯È„”ŽpŸç¦ŠbôV‘¿ßÚhü^yM—VLaÅ<Û~âµ€Ã$Ç#.Rß+2Ùi9½£y7Åá ÝVŒtUü°N"s¾ºØ9ërûÃ÷’ôÑÖÔllÙâliCdŠŠnžC\ŒËx‚z¾¶2ÕÕy‘…e,Œ½-’OÕ®§Èe®øZµ«™ÒüL߀\aDbôŒ–üï¨(Hî^§ÈC_玔g¢'ßÔtqÙ±åÂEáÅžëÙç[˜—=œ¦ŸºŠ‹? m fuŽoéV,tâ‘õÅK³ï43ÔVÞÑúÊÝOÑÌ\_[a%<Êq9<üPèëò"ib9à Í^‘VK‰=:sRÀ}•i­Øiòâ°öÖþCi÷î±76j ­–ðÚôÉM¹´šŽ±Ê¨ét­è¯Œêì¼ØSô‚æúÒ°n…óÄ@ PÓ# ÷‚‚9vå»)v{󻿤åäTM÷=}óü£Ù¿Ÿ¦¢bVûœbxx2 ™OtÒ]ÐëSŒ$Ç n’ºM)¾w/Q¼èœnÍûó/ÛÓc;;[kóïP<# ?L‘UÈÄÌŒ›OâkL_•—’“6ê¬ Zr¤Tº¯/¦HÍÿð‚Fîjñú}A ùvw·¹,¼oÙ»wÌQBòo›÷{{œ^î:ûŒ•• ·x TÎeæÍìd×V ‹±DÏh(°ØòûcJ']\üýñ.8¨Ã.=S=„+‘Lñö>!`²´(ÓÔT–ªÝ‘gÀö–ÆSƒ’’ÚÚšOG‡hÖ-ÆGêJ•Åe‹‹‹†ujMY> yÍÍ“ø¯VgضmãÞïûÒ › ’›ÞÊÙ!ñ¼ñ­ÑiÖ¦.ÅöSXx\Ð{Ø{;Pó6”Ehlô¶€‘(Þ©„Ìááñ˜˜óó»vÂb•¢ŠòrwP ˜A‰)fäÊŒ0·ië09¾jí­h›ÙÁ' …àžÇ®ËÎ$÷R·i$¹S§¯ÿXĵjì|ív±Q!ãÝndÈý%’Žt¹¸‘­Éê¯;ºÜ„‰ÅVW]& 1Fj0œ²VG¦Û ·›[V²Á•Àû{®]‹qtØJEeä áe>zÅ£ýXâ¶Žý|bb«s‘ûS&áÖ¶{&—„¹Ï÷–®€Hkú­ÁŽ’ë9ÂÑÊÆŠŠ ThòÖÙ]© =_sÞËàÊûÊJ<çâÅ‹ºîK÷u•íÎN ½Û¯½Û{°/ý&h¾^D©’£¶A9ö2V4·±=6ˆJ÷ýL?•½==P,ÐÃÓ‚nÏ“)è2 F‡kª×D}e§{¦$’Á±7߉s>»g}ÐK*hL”å…û‡CÏÏjiݹu«J{Èâܹ™€#TäÙÓ3!ÛwToÝjpâD1­Ïììui¢!y¹«ÏŸËYµu0;vZSóUarrr¾ÃáÞ½I©©º9VÑ 7Æ‹Q‰è¤ëïx Y>êÌwNTTÍj:,ߪøjÆ1ð¬¢âÉ“'H–DB I¦2|ÅpÒC‡ªc˜eèš^&¨£Û)ÀÕ› lx[½‡†¶XØí¶Û¢——ļŒ<îE@W>Ùdw!µD,z`ÀNR²'ãq‘Ûê­3š¯ÔtºÕδ.®¹È›²ì Æ­9û{It$iÞÍ—`ʨÛ#ÊÒ•êì2…‹ËÊ:XÆqü¸EÞŽÆg¾·ããóèö›,ZQ õ•}ÈMV077?uªqui?À"-11ѹ½0ÙELL ºv34TÈu1-+ë}¬t‘Xiié>JÁÞ̇Úì òò,|î« ±ýOAö²÷ñÃÖÖ3;vìhåîIÕUÒÑöVUQ¹uM‘ ¾°©u½´›²ŒÃ?ý’àa¡ij⃒åh› éØôôäÌÌ”ÌÌÉËToGhwé·.‰’ß_9m©Ä±‹Å^È•ôÞ˜jf¾¸ÍmêÜý 9Ù¼>RðtFUÕåÝ[üµ¯HÚY¿‘Ø|^spÐеÿýXÛÁƒïÇűéùO½zù2Ó´íСCšššù   íìï¯`aa& G³ŸˆÈ3LùôécÔÔÐ’’ÞAÁØ>¬å±î¦&!%øðJTÊœó®%÷tM æQѺ.‹º³ ãËÒ0RbâSgΠm®JC>?[/âña=¢9Fÿ%ÖÕ"ÙSu¤ê:CT…¿õÞÝr†g.ö:në Î+öuu·&8p¯‚nQ·—·÷H¸!èY?“dOw{;#+«¿e\£ñÅô.11±Ï·$÷‘”P¸ËÛØÔô8.n{YšˆÞnZŸU#c×y¶2cXw÷•6¸wKkk+ub¤µÿµ0õèx{àH+°ø²ÿŠ.xÉ\­-+åï¸ñy]¼(foZçe`¸<£¾xinn©è Pš>Äi¸·Ð+)‰u9Rhjzq¦?àÏòÊŠn±»ö™3¤Ði@ê4Š~çÇZ“ñÉÈÈÚ ŽÁK’yÞš™Æjh骞¹)Œ3>Ô˜ãxi ݆'#]!ÀpìXhh¨÷2§ßí2†á³gϾ~ý(ëÀà ?b½ºµEKÛ_ÆŽB¡6öô²kxÅ"uuEFÀ¬€N?qY°çLLFæ>,¼­¾>Pf{V-B~ò¨¨ƒ"¦­æ` %Aí‹äéù'z#ãKDtç”4‡v ‰„í}70ÝÞ(¡è/ÒÒíÑ™™™³Gò¬úÄýËú€³é»²a /¹·Ãéè°µä•ÅÜëç®íêÌ:ÿòá井Ñrc¼‡ËZçû…K¾Ö¾“„’=Zql3í%릧DW´;¦ûؾ7¾ŸïZ ļӪˆ°WÓLQ:RÐ ªô-¢¨¤¤~êT)Õ¾ñrä#©òQ/5ÅÒ|òYÕÙ`à¨Ï÷æ_.릦©Q]Î7º;½£6†3x!PÊC—˜áíÝW”6†jfx÷fWZ¦ü¸'&&v  »~=##ÃÔĤ4›‡‡§ãÕ«êçÏŸWW¿êèèï¥SQVÎËËËÌœFK$2F-=7ݪ/îäA¢#²ÆÆÆ66?~m—r`v¸È}ßü5ײP,ÆÝÅ%W‰š^¾deb)ØvX¢0 /A@ÝLí‚F‚wφS"ŒžõIì’Ü£666KKK‹ý@^"[±Q™ç˜¹MÌ DÝ/Ê yÁ±·£p…-\ß¡îî°†²“SnT”®µõÌò{H/øWA\ƼôzO\\åUýs.¢²² ³„GÝç\­´×uFìg¤8¹«Ķc#ª¤ÚÒ]rsz%"Ь=­´®Ž £°°{e EO±Geö–߯!ÛHÓýuŸ]°S««4´4M««(9¹«û)ö¼Î4iÎ2m{¾q>rd¤cæØ3ss0>GIH¼¦§@ör9æ('yíúu‡ñv´‰‰oÎÄ¥W³ÑÃÝÆñ;ôq¯êlÛˆ{***—KýÕ-–mÞ§çæ¾êîÖ‘’2|[Òrå©™€÷h~ä¨û¸Ì¾©"…eý“%í!EGµ Eˆzèúúî¸zÕEPHü•²ºnJV±ë’ÍS/|àU㢃vÞcǽ¯"$$ÄÍÅ%!)ù@)Š’‚" JÀæÃºÛéÓ§AˆäJOÊÙgHÕ?å'ì^F‹<úIZ:¶í@ìÔ„`Å<­§OS{›ÒK6‡^ˆöÀ£“Rwmk"® +;Ÿßîò‡¢ëÜêzVZFu¾- I˜$^riímïÔI š3oÌÑØ-¢Ñè«W¯ž:u @ˆe à nb~ÄöÖ•+WTìÞ³çQB‚ÇúÝuÖŠýäTŒ,,´^ÀüùÙ*–‡üh¥Ž”>3½ z@†jj/ïðX {¬»¾{[aT_äñA˜™ytiv¨»»»Kâ’ãÇ_tt¸€`q|ï­±ñâ””W55ׯì#ÑÛa_Ò!ä2_Ωú@ÑÎÎî$ôÌ­¯ïÕ«ËÀ¡¹­‰‘’’‚°ÁÉÉ YOÌDz2;;Ïy)›˜0E†áJìx¥3#ëêê²èæççlÒÏT';sûGFøÐ`hÐ;::vz¯³Lutt@KàE\æÍ”pöö¤j:ÛŒMVF†ˆ‚X=7.  ‘qvvöï¨ÑÀäwΙñòÕÒL]ÄžÁª ü¤%g.¬vÒ7?¸AFBRU]ÝçÁD>%Ëq:Œr¿;•“²eè¶è‰TþÊÃmN”– štçLYÊ+A6Þ]èw%p¬Äš?»zŽiSáÎÓgUUgGš@RÜÅe¶Ûû"ѨMh¥•ö6¼©1Až žxÖý“ =T¤O¯,[ÁPìyÞF‹þ°¾–›››ú´DpÔðð,‰ŠŠŠ‹—ýÉc½*Œè8b%#íØÓWvøA0 ¶CŠáÈÞÒK` ÁMÑylPýļãP„’“’®„ú ºÌ/ ¾ho~ÐÆÈHÃO ƒ…ñ9Nß»v­é.Ÿ­!Ð QÛÕQ{¹ºº*Þ厉±Yz7`Ú–Òç T(»Çý¿ÝèSï=aCCzvö ž½×/î1Û`IbÅ Œ44oF CöƒªžÞ½ÂÂÂGXÄii1sÑMeO"f¶”îâëñ'mo²O™8ÙÁ`÷0f2ÞÞÞ]ÐAî ‘iLìFlÀÏÂÂây‚ýÂz/È´oÖ8’ÈÈÉí^é×Ë™XŒxï¹ÆÆFÿppqPÐgßœ±ÔÔô¥•¾yà 8°DIɧ²lIºSoíÜÙ«ó!Wƒ–MñCtí„——a¯^/½Q^Êk7êtö5LJ“OŸ u‘_³ßx ·™¤‚(³ÕyÉ64ê”6êµÃ:'E iŸ>} ôNÂ{kûΨÇ28’sLHdW=û›N¾YüW®^–u¹riþ*ñQ‚’ =F˜ÛéS§¦z­\Fš˜LÛêè èe „50p~bÚvüÔ©è £¾@¥`޵I[î)Ä`2¨„^s»æp€(K…~0à¬Ü;º<ÚmŽg"Ú›†SŒ\,íÚGID±cz L™^’—78Ñ‘:2öHSóGº f[^^nÝõ|Ø“°)¤›‰‘QÐqº¤¶ÖXô 5ÎivËþä ¯Ìq ¯†$ÍŒ[·cû#æí/Wî4õjìÞ½;‚ŒtÛQ?ଭ÷øjµšn“¨®eÕÎi(/-}ÙÝí5¬g5 ÷rªX$ÏÅa¥3÷¼DåVLpOE §ÎÄêÉžâgådžg‡Äb0èì¹¹k˜ÊH~þÛbl ëŽBÚ{\‡A¨ªùŠˆ$óÎÃû2¯RÌgôÛBh/¯­-("íw€Áô¨ NL-.ÊXXŒÉɯ‹t“űŽÛN÷ö ¼×Ñ! öòztB`ϲÁx{ˆÇjzg’žþΰF;5G_é¥}Cõ©×èNàXa°’•^}‚áËÉZ©t dÞ>“ý÷KÞͲ±á4óí£<žnyRÀ)¶¬)ŸnÑ3ÀU´kÔ”{‘ÉYšÆ²j *Ò„lÝ6±}š^KÛv.iËÇùíᜆ“Ï€%‡kh ´§?ÈÍ=ØÝ½ÉZ‡(ÿÖe£¾§²¦­Ã”¼Ó’’BéºçEE_&¨>:}ZØ^êà@Ow{³Ð+WJÖ×| ½ªAÇ',¯Îâb0€µèMÄ –oÞ<Œ$¥¦fÚGY.>º‘Ãe¥cÿþ˜ÊÀä ‹'·]؆°~óø20Ä´‡okÜ*kyÚÕµÛ{Ïgϼ Pƒù•‘.QðgšÕÞ"ηïŠkÌq·9cf˜ïREå‘ÔÐtaƒÞUˆݳ©É¢õæ©[¶œ’¨D2ž>M€Bñ²ÝÍtš=ºÁõnè¹Åë ,í¯ÂЬs -Ù‰W–&ä2Ró¶là¶÷Ú;î(ܦ³´ôÈ/ŒÃ±në›úÀ/(­]!.û¢Ýôìl„H±0Ë£Ú2Z@nù8SÂôÛj£•ùã­-§é7økü]âv_¿|3/ÿ²ëò\(hžÞ@<%åq@1dX%Ê»Fðô.ך{ÿ¾åèQ žlb y]>>¡‡LççŸÐ]ïSÝø©²9Ç_ kM­SÓmºõ¾÷•,z]憯ûÕœ=tÈê- ˆí8„©<³s»„¤DÜ yv$§¼Ç‡µ€€__Ò kŽÍÇzíðO[-COqÓè{y16¦ã’³BßõY\¼¸ªÙŽìK¸ \ Ö °õÖØÛê®ÃÀƒSÈdß :É’¹×¹í0ï®8ZÏp©À£öë«ËÖ¦0zz4€ZßÒl=ų»üYgOY“lÜ{‘ ´¬¬oÓȶ,½äÖv€¢ÆÃuåL†eÏZÀ£T DÀ0À Øê.Š-µm/_š¹Úwò&he? ‘¡‹);G ÷|¨º›Û¬Y ÍE‰ËÛ¦‰ÜsØÎõðá½ü•å‡kº‰)jD£ÜCîžîÇàçâÁ`Vpi˜üð(³–V½ƒ½û(]`¼Ãfº=ÓÅëËNož!60ãÞ«ôirZG°3ú<Dôå}æøç–2?.m_¬­ O\_¿så*¸h=¸iÚÕ{ðâC>Ïžmõø £¯‘C«ãà˨þöƒ€5Oü[5dTmkï®»ë~s> VPðT“QXÀZ^î ‹nIùá’³•³ìì0Ê ”ÔÔîög"‚•Óô½+K/É''ed耦k®<³6Aèªß#mmÝôŒîÏkÞ ŠxºAÝ­ab àw]d°œJËÉ9úätžÇ‡K7oÚódÛ}< îëI =¬]Úds3:ÚçRY„ÏWysóë…k{Èhvé:ZXxûVç+,ßdQ‰’Ÿ›|“Rxñ@Úa0ž2tM¹¶ƒï߯ ÚEã¥S\ÇÁÁû~¡gŠ]Ç•szBâÖí³f“£/mw{ߌԱ׸wéÒ€èKìG¡_é_k'ƒÁv1BÏ)Q>S"|á¾€}§F®ÍëXé(:‰X4^ô­[âý²ñíK³JFØP}ršëKôŠ7¥Z†„†.®LElg³‡O÷^áÎqNûqF“‘>@‡Ü§//¼vaÙ®Bï9+[JÝsæ²ëç™CgϞͰ¹zKLQò^õÎqÑ膂Â2÷åêÂÄÄ bшu&sŽc»vyôõ¯8¤1{‹™›ÆRðNkç[ x² â  M0ÊZíà% jgÎä£ËÊýý÷3‡¶ö)©1çç÷‹ž™ÝÇÁé>C“[¶CzµX)’@½náòZbbíAšÕUƒ'ÞE‹ƒA$Û›18¾ÃåtŒ´°Ûèp¯žM?ݱ‰‰— [©ðwËÑ_ˆçuu¥;žŒèëSp`Fn‚,1Ñ‹a×{Œ‰B ¥¥%K…QmYJXXEî¹5>~£ûÁ–nÅ–—‚ííb=ëã­­8À?ïpî²4»ŸšJzh©cüU¢ÿ)¹OwÑ‹IËSSݸ*É¡÷uŠ: êiª$æ‹>"h?)'7^1<æE…Á²ÙîîE[öRá*õJã…Tƒð0n¢ƒ ìé¼ÒmºúÕ+ò‘çµ´ˆðèxò(4”`ó§J"®¼M©ƆW5UTÄég«k‚¦gÒï¢NúJZƒNéq{56"#î3Ðñ&ZžO¦)~€N²–³ZZ ®IÚzäH‡„ä™®äÐ }hÚHRrv¨ž!Î4N“$‡ƒŒÃÄÄÄ0´¢àÚέ×l€UüôÓë¿z=ê¥Éizåv4À==ðyœþXùÝP1ðíô^`ýù /%¦€~ŸX·(AtU• H‰‰‰íìÞƒ(¦F$öøñc‰ta6°‰2‚æÖVwh@³9þäbbÓ‚hŸ°(D‚Æûòe 'I ‰ñ®|u)))mm!Ž´ü1$E§²ŠÊµ›7 ñðôjL»äÀ#‡­- Ô„±ëÍåÝ)((HMµ”•­g6~é;—Q÷í$ÒbÔÛ·oŸ˜½Y(nvð1­TCT–qcL¾ÃÔú|‡åÎ;7—âããµ#Ëð¨YXUTT¸,LÊÊÉÍ6ßHHHôèðƒ.^’|S*÷ÊÌÌtî6oOßEx´ý1Ö/-Í ƒ‰½u‹\ìŠÄòPÒ^ë˜âââ ¶Ùª©Ý¯>hR`*<àçwGÈUÄé+!''w[Ðéq^ÞrÇ!§w^ ËM7˜Tù£Êèö'¤¥)Ÿ8qA*6¤ú­ŽÒ;p¼|©¦AG ƒ]ÙJf ÛãíãCÏÀrŒÔs¹Hü2Ýâ/¦{fv88H+ =]>6v¨H73+ëÅóçÏ_¼°³±‰±œj:çé\‹FUeåÐ3ßÌÌÌØO.j¬­UÐÑfg¯ýúu#t€Œ ²Ph“B666RRÒÇ'&&²œI*©|ÔÄÇÇ72<\ òÁêkÇ:ž˜—UÆÂ½’’’Ú—š ½sˆ÷bwlk¬ŒNJ""'çÅ>'Êä¥,%Uq혼sŽA³4ǃ` §Y#!-Ýñú5#™_²FúÅá+€È^RàÈjxäåäÀíddeùPƒŽ”¾6‰Y–VP¯8"! ÌÏ3Úã{Ê|~NÒó=Ý"í(jjÊÒH d¼süJc,ˆ²·râããƒÁ™¸¿v3Ëæ¾0ièU”Cæû¯i¶éo!ɛӬû¾Cð_ÖÿÙØ¤ió¹qú?Ûéïêÿ û?!9Ü($ _¢8‘¿÷ú/Ùÿ—ZBI\MSY1\ù´˜‚¬8œæ8;»:§8;»„š\CFí¤ÁÆW³A[Øš@®¡ÍØÙ%ià_÷sàܨ맦ÂîÑB@|{÷Å•l8h_á:š›YØ }‡ @ÆæÕm7k×›cqh8Ôö8ÖÚÎÄ^ˆF|³âq¨à2ͧ¢‰K‘n\,€1FÛØbqB§Õ¤ŽoîD÷ ã§O·4·BãL Ê­Б•âûãšÍ‘6 Bå;?·ûº,ûÆÛÃýrµy~¨8gˎÚ[AEÓáÇépðOT6*©1 ²oÞ*\iaúq«:¨¸2ÆÖ–nƒ5¢Ù(ùjkŒÅâh¾,Ñ 5`ÿQñÖÍÊ‹ç­í°6Nlç¡2ºÔbý‰ œ,l±7TþÓÕ_ðk¶‡jMþ«,o”­Åþ–?2³±…ñ?¾ú—®„jU~["ª‹«ò©ö.“ÀF K&63K´ãfe°&FƸ¯‹ä~!ÚO53J´ð= ?ÚØÇr™ŸŠ‡â,­h>•…[Xâ1sK{,m ±ÂMpPýPŒ™¥íFñOøÇ[S]„tC]¡ý!sÆmMÆ`ÍÌl­Ð #!šÏVhƒŸxq›Ü€76Ÿ*otœβrØ,JŒ3ظ…•åy th3#‹Ï?aÃlš@¯Ÿ¤õ)Çøˆ¢ŸjfÿQûã›E±7)ÿ÷㨶î[æ7ÏÃûGÿŸXÕÐfnþ}q@FǃÔGaõyx±h^}C^n>CŒ>– ÁÇ‹æCìE”ÐG=þŒž¿r‹Ÿ²ë?†õOý»Bù¼ÿóÇR@ßum-íl0Ø8ð÷ù?‚ÉÉñEþ€öæBqüÎÿçÿÿ óÿŸþl„lÆpÕ „C!Âïìÿwöÿ;ûÿýÿÎþÿ³ìÿsšggc³‘üý³߈ù•È‘¿(óïs²ÙGpÕÏÈÊÈÌRmö5éÍs¿ç7þ;Ïoü}(þ'56äøêôRÿé‚ç¾ I6»û5Ù$õYO¾3™‚þSjýG?*©´%еB_Ÿdõ¹ÒφóÙ(ò³¡µ_ÜÁÐmd¾iÈ_œŽ»aÚ›œÙFÖA³©ò¨ýE; Kah¼íâ#¸ìàßErý=Q$××D¿lfeƒ~ƒµµ¥0­‰!@ZC8T¶MFIM ©«*©¦&«(­+£«ûÙbŠ'îðÄýÓ<†ÀuÿO¨ð„ú'ÂçùQž_þ¦ì1Vfv¶Ðÿ_ëïáýkFL±N–6 ;µ±øØþU[œ 0_Àï;¡·¶³Ä ˆo¾|ºÀå'Yåû«|?-3 ˜Â? êˆKóM“dgþR¦pföïµþšì/ ž“ãï{ÃÉñÔŠó@Á‰øáhB^€FØÄ÷y8ÑÈÆKó÷HH‹F!88 CnCN,ÉŇàåàÑGè#xøPhC˜u?]^7&œÿš(#þÄ óß0lð±+ü'io~º­=ÚÌä7?9È òÿú pés|çÃpp¢Ð\¼n”>Ú€—“ɃEñèó|5Fÿ_çóŸ˜×\&'×jsþÀOr~í'Ý~’ê<'êÀþÀÅròü ø»ääý×Eôøå?‡Ù,ùxÂÝŸñ¯émNGü(LþgÎácœþÕý °“ |„Ýž 8³‰+|óݾl¾Ý„ïR³™˜*÷eYÞÍ.|ª/Ìÿ> ô…% Pscº˜_]_þçÌÃà@|$ðOFãÇhþÏFãŸx‰Ÿ £ÿh4T° nÄÚcÿï ŠïëùcÒàSZÍü¹Ê…ä@¢÷ý“ë¿<(î??ÿÍÅÁù{ý÷÷úïÿÂõßÏÓò¿Wx¯ðþ^áý½Âû{…÷÷ ï¯÷î?\ñý¦‡œÿ ‡¿ÆÝ 3³_XÊÖ…ò¶¯eö1‘³ý*ö 8øŠÊ´ dœ¿D‚Û¯¨@áHœ‰ÀÉWD$Á ÈòµOX{c}¥Í¯øÿ`l,ÿ™öp}¥=œ¿h_j í@éê~bJ÷Wº¤ÿ% ýO$ô…æK˜O$0ÿ‰~L³>’4øDÒà—ŒáK†ŸHþ £/I}"aô+$Œ¿$aü‰„ñ¯°ú’„Õ'V¿Bâ+=±ýDâ÷s.ÿ½ŸsùÊþ…ë|9‡ øÒ7³Ä˜ÒË`m°P0 …{¶8èY´™ÙçL ©ÁON„nÿɰÂ7Ÿ|o Œ/@}† î`‚3†C‘¹íwXáÿ(«ßý1¹‡¶ÀC)$Ô£?,('ˆÃáÇ7G´1=TÕŒ« XÝðzŒL»ùá?ó“Z´>‚ÅËi``ÈÉÍ…å5ä2àâ@ððqñòa ÐúþQÌîMÓøâ¦Plò«w5@ñpóq!8Ð<||úHnC^po$‚›‹ aøWwýb>ðÖüðÿàÉÕ¿›ÿÓÿ¯™ÿãä@|3ÿÇÉóû÷¿çÿ~Ïÿýžÿû=ÿ÷{þï÷üßïù¿ßó¿çÿ~Ïÿýžÿûùù¿ϼý¿˜ü=ÿ÷{þï÷üß_ÍÿéÿïÿÓÿ4ÿ§ÿçù?±š’*ºj² ’ºbÒÒ*1§vÂÚüñ(*§!’ÃÃ͇År"H}$äÔX.nn}N^ Añrë£QXnšËÃÉ…Dê#ôõy°¼(Œ!´ÎÅÍg ¿˜ü7º²Šj’* 'Ä%%þ%Æxy‘hŒ7 …áããÆ"yy0¼ú†Hn„>kðŒI‹©HÿKÜpò¢¸P(nÀ‘!EqòprsbQ@r7ÇOróÉËË‹ââ0ääá0Äðppóqpðñrròè#¹~jü¤UÄþ-1ax‘XNCŸ!'Æ Dch”‹‡Ï€‡‰D ’›_LX.”!‰ää4äÅðr£ 0<ú¼¼\\|†úX,æ'S‘–û—¸ÑÇF¢Ð†|(>n40C}Cð–‹›ÃiÈ‹øInþ}1ñps QœX¬©ohˆErrrsé#PXhX ÿ’1è¬HWþ>¾{›ß뿺þ}ü×ïÿeeiƒ;nbahùÉ~ÿ/­ÿð|³ÿ7Š“ õ{ýç÷úÏÿÂõŸ?NèBöÇþçÏß'›ñÆ–`p¬!Èn,0¿7û½tô{éè÷ÒÑ北ßKG¿7ûß°9Ø7qú¿»/˜­¹9€·/wí¢µÀÚã:¾Ñ äYüK£B ÿY²¿ºËØß8ÿxÛ±ïO y„'Ÿå 92#´•1ÜÖØÒÁî`l‚1ÞØz rp6@Ìœà–6p}Ÿ>™lîÈþÇ&eüßÙ¡Üä/¦°¡ihh« (ß߈¾7ȺºX+]]èV›‰¿¾¥ àxÃS55G[!ú"p܈u‘ßžùq@úãLÂÆÂ&ï€ä§=;þ²þý' 6F $òM¢–XäŸ.ÿùêã€~Þ¾¡h_1ò§HûœÙW±6=-·tbã Dpã D” óIV ƒ†›•›ÁËÇŠàDmD¦Í1ç÷8þøüWH'Ä'/Ïg¾ØÁ ~1´ùbõí._iÞ»~¹Gßæi8´•Òwvèc·ú#°ÛÔss,ÿ`1ffùÇ.ÿí˜ìã6ÿ–Ph¸Ÿ‘ŸÚÙXÚY}2ÒÏ›Éü’6f¿Á%cä;ôycÀ‘ kÎÿUpRœT"$Q<‚!„bL¸ýÇA°íÆ>{ª,ð‘ˆÊ××é[âp–±ßÃ&9h£e {Ù Üøg¾®5ðeOl± „Ôoú¢ú隯Dû%Û›Ä>G™Ÿ„kò_0V›äã‡Í¸à/ÆEb£=%°›.h³<òo@Øìlø;8Úg¼±ñŽNøÄÆ{ ¦8ðÑ@XÜÒÊic$àH\Áç ?i²ÿá¦hà–#M0¦ÀŠ,1ëql_1˜£MXÌp–üЋüu|‚¿6¶à›­!ô×üÁâ@vtÈnâ"àü…ÁE΢›ýÇ0ÁÀDh'~øfx Ìfaik%jÎö1Š‚ˆ_io `û• ,>o( ¤4Ïû­L!.6%ª`¼-ö³H7¼Ý§\²_dÃ6Ä9€;YڄLj°³1Ñ·Ãa¡Ä9ìÀš[˜:A'ì, LBàÊÌm7ñ —V< WÀÛ´ù˜—˜Á•í@h‹d޶…[Ag@&º‘±@WIAL¨~d.e ˆo £k¾·Ûcml¡~!?Ýç#5VÈ/3¢qß6pË ýcÌ:Á¡|âóul?+­¿ÓÒ0€ °@,[ZA¸9‡ƒ‰™\ ‘2´3c…ƒ–puY5¥ÓjðŠšpõ**'Õ46V’-Á·X{ì&s‰² ï6h œÔÅ“’*â2 ý 1YY5M¨—R²jŠ’ªªp)%ø ¸ò 5YñÓ 'TàʧU”•T%ÙàªXìOŽáÆPQ4ò_—&Ð-Ù™¤mú‚ÁšØƒ^ Fû ê`fia´¹¼ŽûBæpCh¶î`û“ú+Ea…ËZ`ØXáÜÐmajÆHÊ)C@\Ê øHV¸˜¥-j~òœ‰@p‡~˜?­zþ¥¾Øáèÿ³=ŒP¼.$/–‹âàC Qœ<†ÿ‡½ï€§ò}ÿ?E%%šJÃIZVg”‰dd¤D:Óvì½RšB" ²J¶ ‘YT*™™EF2BÈþßÏ‘vôíûý}ÿ_çóz}äxžû÷u½¯ëºŸû~.Ž€FÒh$2š:Ñnå»lä·:»àÈ(< EÅÉ‘€¡1ð; ƒ'`‰h:‰ö‡Hý²>úi‘ñóÕIÿôüçs³&ŠˆÅ¿íüÁ~þ‹Eÿ}þóùX“Ì'^å¦óe¾áÛÙ2-ö œo|‘S‡DÖ7Ò·Ô™µœï'2þ|‰¡á°$ ŠÂQP I¤`1t ˆFa©HÜlbâ¡¶ÐwÃëSÿq\™Hà ±"z«E$ñ8D‹D¤©¸_k¢où#ÓqCÅSX‚ŒÁÑd*‰„@#I( ‚#|™][ôÿÊó_’±1é_öú©û?ûÎÿÑXþ¯ÿÿÇüÿÓ|íõº¦:ã_SæÐ¢…ŽôÒqÓ•&ÌcÜ( ¥¡I$Šˆ¢p$,ƒ^…!t"þG×ü<6¤Æ:ÌRó'ãâ¨À±ñHŠáñlI ÓIT2 àåÿwÇü/Øÿñò?­Ÿé}YrüƒþuôCBþÄ"‘ãÁ÷(ó÷üïäsJYq;”4rÈÉJ«À`3ïÁ`3l3Á7#†G/³Éò»¤acÐÁ7ÎÃÀÌÈIKªÙ´×8hí›ó¾.¸óºÊæÇ‹|hødïe±-M*Òë/Ô$¥õåÙ”k:ZÈŸôyçcød}¹r…U»›Ú1ÙÔ"§ð&sg—€š‚2ËKM—=ÏE:4Yؽ{ÖˆmvkÎá“óøôžu¥bIb.~¸>ã‚ÌC‚ÎÆ~ÀÑØÔy0åÕñ‡2G‡:Ýw¬­qwÝaÇüiÏr ]+K¼œfÓ¹f»½å›Çç,¹gžîyód±œ ̱æG3,‹ IcUr<Õ±ÖrDl|`V6ˆøŠ™¬àÇãù3 ¨Ça3îi…ÉœõéaggíU W_¢¬ŽfçÚ3\d5#x`Oíþ5¹ó<&÷š{’^Ö··o7«†¼ví˜æU_ß7oÞ'f‚†é­äÔ•÷í+3=zóæMp…Žó­.ÓéòåËk×®-évèïààÁœÔWÇæd»Ï{wï€L V¸ h}=›uG5Ñ®›*.žU•Ì¿ÊȲh.h{™PSS8PQU•β|ëãåå•–6ä>;b}iiiHHˆjøž®÷ïÙ88b##/‰9m•äß<ÉË;_é ? ´6øñcEEÅržÙ¬¬Ûì?œ„Ÿ|ñBEAAƒƒCF}ýf"Ñîu¶{ã³WÄœK£5æÅkÝE9 ZÚØôç_Ákhh,~§ ,oà·Ödߺu‘çy!qd|ΟçÚ0©&–³F£_îZ,,á SŽhiiÑ}~Õýøq“Š›¯?¼-öQZ-î<ÜäR›¨¯*#óˆ×eXRx¼¼¨é«{·iyÖm’ÂDË–Â3Ü[îWݱzWƽåÐ*1Ç‹Ž­%›UUU#9ØÜØæÎ5³¶¿ã}ùrå %^7xGõÝž—ºAÈX¹¬ány¯5ÛðŠm³é¨Ž=˜|Ú?÷áC㊛¤âp…K—.ÍY°Jïç¡èùO\4 úÚ«’«.\ºt×°\Ä ^{°¹©ÉØÖÛâcÀ9Œ–Á€ ,s~ûâzSSNÌ]p@ n–Ç•••å]N3odO2mzv‰‡‡gŒGDDDð­ {,PQ }¶û»mìX8ö((D¢9n(V&úge‰Kr.W ¨lÅQ>‰úÅá¯^faaQU-îî6ïê¿™©Ï;÷öª#Yâ.¢6wîÜ9”¨W42Ô?×íð­ý|çdwíÊ--Mz­5–â‡uݱtÉ’‹—.íõzȹ 0\Â"(½£õVHÈZI.¡eòÕ1²æóê/œÅÉ**ÖÞ¦‰m¢‹Zµ>hèb)9Ô×¾B½ô®EsDÐh†Cí-Êÿ<íºF+Ó~•’rÑ[[Ròȉ'>ºT%îò¡ÊÊ>îjȽ¡p…®«‹wèkNŠ¡äÁŒYg²ºîX±bEcS“æÁƒ‹Y»:jDŸÜ¨ÍtªÊp°qƒ›››ÏŸ??ÂÝGçÅ))©®eæ…Wšxûú.ááI5(rÜ›ßQ›!jûþp¸:–”}lîâ 'ËýufΜy|þŠì枇#Âê4#£= îÝ; ŒX-<2&FH@€|k?¯¸³V¦ã0/“Úô»&5©`zèF+‚ÏÞ[?ænnfö2Õêð´žîî윜õA•à×+xÆ¡LÇ»v=M·(¹eɳtu›9ÀǤêŽBõmðÉœÍ/×Qq‹òÔwóàà q,˜+0í‚Ä(ã;‰‰¾9¯KJJ”ëÕÕÕKºàµT]]FeⓇ¯‡d}ÌÊãZ)jmdkk{èPí»òø,`q‹7*r±Þ"åFæ<ü±+çç¶5ñEù3i–ÁÊÀŠ£#"ØØÙ[ CŽfe¹D}ŒÜ’ù±¾Š‘Õh~·  MÁ˜çììüúõkù BkÙÈ%{ÕòέÛeooßQ“V^R’hrÔÇÇ'==];Íz¯ö¬Ížžž%~l2êêÑRR÷€ü –Èhºró& ž9Ü×™9wû¶ù‡–"111ޱüõy\[”GW·;¸¹¹EEG‹µ¡£šsªw€¹Ü±#Õº}p¤¿Ÿ~Àç¹Ó‡¿ ‹8IÉõøøS}£x_MšÍ‚Ô,»zãS¿Ä‘½a2ØxôáèÃtõݯo9£P¨­ÖmËkÜa›xDH°Mjšš•ÀTåwï>}ú4˜®FnÙKˆØa]÷ËD‹ð¸¸¸øøN¬½>Ðó/ï¶±°R‡K›Îe .Å4.š±\+Û7O÷sì)L9ÞüØd°ŒÞ.1›CéDMËpÍ/~­?³ÐJ73kf-l¥ ›»" ,¯MÓ»Á á%3VÁ|y@¨ÁœˆAë”þUÖ àï,V—08êííÝÖÖ¼~¤Y|ìI~¾±åÑOã=I„IœÖ,6(_ÿîYùÉ0Ù€×`bë•Ímf}À1õ8`Kf€8v™òò6íĂ՗qÆ•=ÍÑ:ª‹uUÃWý`ÁQîÙÑ÷µ–s5}+ð?ÄDð%å ëK¯÷•ÁbÛÀ,u.×##;Þ”XÔK;h”g¶W¾Ø_ÚÓ<ëêժؼûªûm„©lìV‹ZœJ6¡½m5HIq¬o*syóøPkëªf[ƒ}#²®aäeÂÝ~]Z£M뵆¶êªüر“ ï´WÕÍ}ûðÌLN¯ö Ž» ¿VêÔwäA³6Ž ½HÐU°-9ZVqËZvŒtïy!Ê^ÝNIñµhV©ÍÚ‚ÅwL´t¸ýŤNô)«Rž¾ÛÖ¶Œ¶lÙl0Z|´¼ËFX%šu=¾¿Á}ž¾šOaq1úQ ±7ã’Å+ØEØŒ™ÁXuy&µÏRä5÷îu?{öIÅ-§GžI–mÈ·Zâ:te  Ö?«Öó_VäÀ±s‘е1ÿ '÷1Ï3ò™6´Š[rû{>¬zpOj®Ä<Èð”55­zèüVFEˆ çt7˜x«ó·RRÞÌã~a»M ÛbótÉ ÅÀ‹µW–J°²éY\$†ùmóõ3ËȰYÆ­°u)•TtªÃ\óÈm]6v¯\¥=Ï<Îȋو¨oZrv9):*^BÙ˜«pÂNFÐn“`ÃàÇ6!(‚JÙÏþ}¤Ìñ`0Ö–CŽ{jNzäÓ9xMDÍBG>vøŽÔÍ‚ò°”™ÿÇžfÕžîÝŸ(w…+ÖPV¶î¦z_¿ÞzmÎiÛn}ýÒëòJü÷_ߌµ-^¨7 .aµ©Æc_·²º:š"ckmýúÔâ#QNº4õ|.ßþNùçWBì[ñoë_äæÇŠû°"Øg²nÚ¾>°h÷à¹ÃÃÖº‚ õ(”6Dó•+ܺ;´Ÿ ôD~)êC<«6ÍbeSÞ·{;Xˆ³³ ]Ç+¾FÏ0zðí‘Ëj´WyuuéÃéïÈh+‘Óþè|õêÑÊÇêÄÃÀ½(Äø½ ô×n4¯_Sí¿¹¦q“ZÕ.߀€z0¥”Ü­ñÊåV/Þ:¥HÆíOç͘é+»"vþ|Ë]g[Ýå³ÉÛÖ¸4=;™˜˜ ॣª< Ã\¯° ÅêÎ^|CIüYý®¥µ²ô×¹ôнΠr>W;vtþÚ Š‹nÝ⌺{÷¥ƒýÖ¨Ú|¹#ËØ¸$¼î bÙÜCƒƒ¥ mM_†Ô¼9aæ½Ö`a]ñȇ·sxÅÔúÞé¾~K| |ó–Ù@n=HKØKË ½„(/YåHíºtžØPÌœšFÄÔ15,Öm%â&°~­Ú_nqðŵ22„×s |æ®a`÷¨ò&ÍÔ^Àû:ƒ:ß”œï0_α"tF‰#X·Èµ.[ÇÖÑØó91ˆÂëie6.øcG "®Siy£\ã½#ŠŠ8Kÿ0Vïµ<º/F7Ôû<”\èØw€Ø}ÊE6…#°±{Z=ö¬h+b¡<Ñ<ÆÿÄOÐk×®º³¢tÕÀ 8¨'76h§_”ÉßœCO8ΙH(=³eðmk½×ìk%$Þ}|ÒÝZzãbÑnEYŸaP"ìò^º©ÛV!x z¯¥ª€ ÷öÅâÖŒgÀcÐA¾S^f²ËFÿž >F­cŠmhOЇ_#v«ÝÇ÷A}ϬÍŽu˜ûª°¬½vm·ŽÎ•¸ì‹1×®µv7nÔ}ÎÏ-::šHì½gòj´Kà\Ó=}ìR>o¼Ä¯nµl)è¨IÈ=+e¯'¹¢¾¿®!Ù$Ãñí‹Óµi…לwú¨l7êØÚÕÐßQçRš™~Fž÷™4 À L ¬´˜óp Sòf; é<°^dÛð`_{&ÐTpÚ²ë‚RãÃMùÜ„Ê>võ¥Ù<MÛºÞÛ_üCKÀjhÙöí±HJ[uõ OéÊœÈJà³z¬ôÄТT+]›öÝl¯;ļ;4ÕŽ¤#­ôZÔ[Y¼óé5)]«›<ôR“âro<|¸¾.­ÿ6eW`Q˜ƒƒÑyÔN ·2h®1ÛLVÙ+bõ’Gî®3®ÙêôtÉœTý›AiaQ•ÝÈÎVß©$neå™6t/öàâƒQO™aü øÅ‹ÚËLXˆ›%b`Àº#DV~žÚoéLÖáy¥ÆìhÍ¢Ž±ÑNG½?áƒáö BÓ–©÷ uv]Ái/~w"'ÓÉÁøwj”еZVÄÅ‹»¶½•¥U{•žÏþ;m“ •ÂB›ˆ„ý›oªèacq],:M™¤ß¤å5Ž ‰oÑ© ±,5pÛîÜÓ$o%Þ_RJDÓçôjpjF©¬Wó!ØußÖØ¹lY ––­¼ÛRú¥¥nbNûÌîbpí•›t]å“ ±qóÐÉÁÞÞgZYµMÏž·Äí,5ª²¦å·èÝWp×ÁÛäo Æ6«}Wþ°«üdåÓ@ñ ÔÃ’KzGrÈ·6(ðp-ª?š·â鬡Â>E§[aî+b—x=çö\u—ôàä¡we ƒšjî¢_ûëÔ—ÅöÜãDÙíÏ´¤RC/ó\yÎ]æ´O;ͨ½Y½qs&b醫*­î ëO=9¿gDàæÛÿ8$m‘j…®NfˆÅ]XÈzòÎL´&2ÌMæ`+›Ü"ÕΩfaø+ùìœY£=ÏuhOˆŠ–7n£Pµ'Ž:uÖé1]þÔBƒþÎøûÇTºáKNwTÛ™5= ‰¯¸sŒšFsÉàPtä­ª$ժ̚òÒ¤-Ú;ÝöpÁÕVMmðáßåQᨠ2D#\^~¬Ëب¶ËèÀ³Ê¤óÍ«el¬¢:Aæúú5~Ášô>Ç>îBHrª`½¼ŒKO>7¦,¼û£ãëGg»H$wÎCʼ»gÌ(¨sŸ±nÇ%Î;°~~fŒêÇÀ=–òálL|má°+ù­Ea=%‘RË„yä µåI¤Ž|_Ûݵ‹ÎÕ/ +î¸t¬þP›9ÖÁú ° Y3Ï•èWÝ9¯úYžúNåÀÒ¥¥Nƒ1>•;÷hGžWT+IIˆAx?[¿±ùÙn?EK±ñGì¸@¼5—Ûý´»¯v¯ ñD޵U{åDAO@nC ¸Ë¡MF-CR])Z÷Ï®´›;×nÛU‰ƒÛo­ùrc|ñâÅçI9šö4Çêκ-ÛlÑ›£M B:uWYæ„\¿g{×ü>oj3N0„ÎìôæGÒžßÕ-1XR¡«Wû*n0"ÚÚw¤8ô»—ô$¯ZàP¢Ô×v)6{»šbàÖÆ×÷ «„oîo­¬ILjs<¹”=¯EäÄæ’’’ŽÎóð|bíUœE¥«UÞðY";‚ŠŠsÞ«²¨.[[ªc_4ò:õ4ÏNpßªí ¡öL5}m&{RVᬰ•LôRÁG$ ës>ÝM}Æoųö -“óñâm.+aÃbÔú26s±±¹ÝS⦙µU yyƒ.0æäjßÅ4¦D·ðíÞ-ï jÓQ;<¬òÄFsç,FsÁ1¤œá.>}Z Õ¦s›³cÖ–Ì–ò¬,wö15u¹ª;Ú{Udû†7²¹µššÅô—jˆˆ‰=7k†ëübcaˆ¨ø°©ü±fsri)d!xDa öÅ3½ëé‡Ò7ôR:ïq\Í-=˜ZBk-Q*:ºæ;k&«ª¯Ͼ˜“ eÝÙºY,*×|Gv2¡.¸d‡TüIÆÑÇôYŸ›·QZ©–m¾›¬ZÊÛ´˜•MÆÛþeè…úúÓ¾¾øå%×Òk3‰vÝG”7‘ð-, ;Ñ•\çüºµ’ÿlŒvŒwû‡ª4¼Yö1áë½5ûÜCú˜®U ©KFÏãÌYršÍ­¥4ϲ.óîܹuž¼uœoC—˜jŠlܨ[@Dźwï>Þ ˜æ2ëäƒÒVVVË6yß¹SÛ"¶cŽ™Þü;ù7ó±­•d“S: —f•|?-|PQ eÛ¼3eon9˜ÏÒ(µ¹ùdìýÚ¦ÖRFîÙwyô„·q²¸ÖÖÖS§NÅvÛŸ !­³Y·`þüÄ›7 ËËû»º6oÚ|!÷Áƒ”´4t¬€]§íUJ^b]øPùzôômG$LÛ*n•UnÅœÎ]L§ù±³òq}Ó³sÇÚªëøÙB£vKøH+œUÞÄÿPémËr¥À¨€IùWðÉOÃk3D©½óü“Ÿ–ùú*Ëš„Ü.î±Y›ÿ¦½=Ðß—ÍRa-­jÓ£à’üü<¸xñâðǯÑÑÑJAØê_\—ÏõâÕÕTï®zÏÌ_? _/½kW¹æLã‚™kÒ™Mšª·<4,ì`f`xzœÁ¾˜ýEw-tW®¼RQ±ßÌÁ ^__oßßa¬§·œ‹ë^£y¤ûœ«Z*“¢CBHT*émÙ?ñYÿèÑ£ 6Ü¿_K$ù`² «äò•+uuuå%|®%%õÖf8D /áæ~÷öí9þû÷·´·ç'FñË K´†³¹¥Ø÷”ǹØ\_ԙ잽ٴZ½3e„D¨9|øX¤Z½;ÎÉ{õܹs~~õõ|çÚÛÚ®^½êãSßÒ’BÏç1xí6kž€ `XXXoooä…è}±½Õö=¼8ʇ?Éu°¯±µÕþCKQww÷†Ì´¥+àË{¹™íyÈ>åNÏçÂáp‘‘‘% ¾¾Kžxµ½yCmíÊpè·H ;ö4qÈù” ó”$”••ùäJ†²ìVPÈ¿c\edd¤¢¢"ëóáýûï_³LÐ[èñ=Øýˆ,„§(H«xAÒ¢Bu-,)Y2Öå3üxÙ–ø˜€N×––æ3ci=rüøñ7Ë?Ló®tårìØ1 Û¡ÆÆF Ù½{_75=JŒêk{)xfôC±Ò;ÁàL§R0@T ðÿl`^C ¾Ñ–´|# áy÷î@OóóÈÜ-‡Ò½ÐèóöïÛ^&ˆh§*{°zTòÑéî11BfyÇW#{@DoÛ6|ï ˜kVɹ¹i©©¨Ø(0ˆjÐ+uf•$o¾èy±(ŽÁ>0ûdªKî¾f© 7v™¦'>2¨U\1J~ßÓ3ý)øºk~ýª¤¤äŠ+¼x۱]D†õ-I"‡+¼M}x wY³j•ÉMMM~ÿ-:àw#*õCï­[·ÎoP kª[%k%C:•K×9~¸@gyn†u;míùpFþ½{Á¯go[³¿W]­¥¤ô¼ªJT\WÔà ƒúLÍw%p=Ê´ï=m?ÜömhhhÆ!¼%øåÅ~éó”©®‡›t.^R’»ûáÈ«ž—‘$ ³ØØöKh]þçaW·;”<~¼ ðÎm؛ǹf›ž¾¾>•šhÓyÈ`®Ç‚8$‰Åj§ZnöÊM¸sg[öƒoü¨¬äb]ÈË;–¯#/]r?vŒŸŸŸ‹u¯šÚ5àŽ×¯?ŒˆâÛWçÔxéÒ¥ÈH}SÓ›¶*ø‡ä[õ ÆÆÆg=)×Þ•Çs.GHÈËç••õ ôHú+ ïqFò¯_?kÖ¬¥K–¼ijŠÓº«âlÃâ;­²þÙðéÖí—ÏžøÄ+îŒÁã;Ëãë\ƆtÌòfg¢[GsV¿(tôñ{ÿe›…%.^¹l/#*j7ÿ"?ÿrû;­¨Œå²g³^°úß]V¶&“´Q‚¶‚‚B‹¼po»ü¦%eQ»oÃÀOTw]¾|¹$«¾9ȥɔàØÆó± bˆ“áêÆÂj±€¯GGóZ"÷“ÝçÃ##gϞݨph?Lóyß»3G¤]õ¢¹à•€±.8¹¿É«‹Å:õ¶.Mzê'¨‘“³²–ûJMáëãöí[–Ôåããs‚“÷öþ<£Ö¨.ÓéÙE¤à¾½ÃÚÈ œµ”Iê¨üïðààÃåqÚwïÞ-¾¡ÔßÛëW)³è¼Îüg%ÙYËG_Í/y/90Ò_ÇÁÁ‘pû6µÒw·gÌ…ÝM°û o=ã½!JyäñêÕ«¶¶¶4›N‘CésNprtÊ ˜Í@ÓŸ}ì«b$$$‰9m5« |ðÎIéлÍ"n¿y|nFœÖ©3g¢ÓöIKK³¬Ô]Ò´Jº)+ñÚe¬apñæ€ÈÃ<¿®‡°àåIµ%IÃïâm:kÛ_&è š¨^§ïõïõe!óå âŸ\0òÖ-³ŠË„5Õ´µkîe^Û·þ üåŽÑ%³€¸Ï8pà€ž^DFÆv«£/€ÄW._Vño__î“zÀçœ?â¢×¥±|×µ³SL_ïx~u;ƒikogT§H År³œ’_.¼{ãÚXëǹRánWFÅ 2—Hˆ8Á/ù.\Rß,:k}4}ßÎy¬lO”÷>z3HwŒK²¯9uõ’RË1*W–ék70»!!k±§pVõ÷+* ÄÄè^nÄíÜ.++ÛR—•~öl>З¬O öŒMléŠÞnoy^6ºçI]¾˜IcÖÍdmÉõ ERUQ)‹×É2kxäÐß±~Æ«¢6"BB1™KA Q\\œ“}¹Bî’· €[ê¤Y [YF(*vÖeÝð‘®9ZÛ2ÛÉÉiddD'Óñ®yãS÷yÜ‹XÏ*Ÿß½(iS]žTÙƒûÏÀÄÇì~¹ùã|V4'::tÖ4W/g~,#…[J[½5Õ¸y¾tËÛ•ËM´mTKXì¼b.2h»Ï>I¾=û¡áÑ¡™! V»jËðÕ‹ÖØ | VtÏ´åøœåÛ[¡ö4sÀ {9cE»ïyéãkqõ´þa‚eË[ÃÕ–12®0˜·B͹ä^Žþ‡…üÖ¿w8ýÔküû|/ñÑŠd†ÎFæÇÁaˆ×ù#©ñ©ß‚ ‚œú^~ìjàÑŠˆŽ–OÒºyxFÆõ†‘…+µiÑÞ•Å ÷ôð¨ÎrO*¬ªªzöÌãrâK5–Ü0Xð*YŸkk@ p?}Nmµhz|o\)Í%-##pÇ0öÅ=Jð¹²Û·úÌ{·æƒ dP™:±ËK“ƒ.zÚÓí½žž‘±Tç„ À‹ŽÂTmѵ5î›ÀDƦ$P|u}V”ÀæÍúÀ AŠç(Æ›ãrö£†ëòm¶ïK"U#‘ü…šÒ|eyþ«?:z™‘,ïßÝ×>`©Q¢¶lÙ2© Œýììì’žZ»Ê¨ÞP\ *ÇuDIki4ÈõŒ(”°ÈH"pÌÒhbí…®Õ#‚ûXM4?§¢¶Ço×ß‘êä¾¾eÝ"^ËZL¯±¶µ¥÷]é¯I‹æ汫0²Vʹ«¿nìýkÃÔw3•W;™î8pÊë¹¢F¹Âó«±›Íú;Z— j[#dŸ—wö¬(æ–™¼áDζ gW/4S½jU4× î;ù)»CööWÃ(É='¼xë¼ì¯ÏŒ¸vútkØ®±Ê„f“ŽÜ¢°v`dbF9jvJ^I ïüfÃëµê@‰ï£‘ÁXk, Ž…ùÜ8k6WêID´PlFúªÎÚ|O=óÙz&µEå6Auº«·êi¯–0 íx &Éøœì1‡;33§[mL^¬8Ùü|Þƒ·Gàl¸+ÓW}Oý÷ñsÁ}—Zi´Yæ[·ÏÈL4®ZÊè¼?:º.?_ô…6„üÞÃ%"Úü…V´¿USRºÒ¬÷|KBÖx·|ë »ò¦ÐQÿçÜ;e6ˆ@ÉwW—¾Ôñ˜‡Ú·$íº²SR¨ødᎎxnF%¦·,VXù¹5®Öîî¢x}¶GùWV$¥Î¥cÐÖ^ Z»\í„ò¦Tka§ª;‚œkÒC7pØØðV<Ë}lX-jmÓ\pÌÍ ¥Û\+Ác &beÍÎÃJý‚åñýú¬R.)oj­:qú´Áw¡eyÙ¡ÅíUÑF~©œ"¤ˆ NÛi´-ô|w@§.Ô—å幜„Ãþ[ælð/-}yèÐQ`2úôãy¦÷„øåºm‡ÃµŽÊÊ;Ü®ÝüÆ1Ål¥$âP÷fï5l\:âgŒ«èŽ#Iïîµáã[dÓž*f×}oÖ<™mú{lôacý&Öû+’5®jjò8Ž{[|"¢v'Y™CK$Ôì±6Þ‘ÝýTE£ùý@¶fqU™çêrPª-Û n”>¸.ŸûèÁ¶ùœY£¹¼.ΣvÏÁ5ÄUHÄ_æ‘4j ]|u{ž…eÛÃò=ówÎ>Þ`nÈæVXV¦—HÛ‘>"¡fs(Öih A×.ù1\EÂUÙ,5•'3SꆯyokñÉ“Wè;+^Z]Ú^õ¤ØÂ;<ü¶ââ9»£nÞåéÁ½{åÓåÎÏ>æ>Ð×QãÞ ãÑPW—â’Ó…GEÏÓÅ/çóyë€ÐåM‹8sárݵþl\ÁÔç‹;8¼º;6Ü\ÂÈ ìï°&=zdÐ3ªóÉùjP›­wŽwrÈ×/>þì þÙÖ-Û”yÔ\õ>,º"ËonÚW€CµFžW¤7 åzY¸ å§©n\Ý*΢í^ _î^´lé_Þm¶‚‘¡¡ƒy[†¶j«NKn=F>¼àÜÉkŠNë7ÐëK¸7Å¿yÐÕ€¥…‹ÐV¬S,€¢ö*Ëþƒ¥2[Žè.•Ev糞§½ÂÌøCK©†‘ž¶Ÿ_é %ñêŒ!{kë×ÍAý Ô‹m­sí6¨_qR³¤„ 2$1ŸõähmQl—ö­œì8aMK( uT“Zæs Ÿ Ò±1æñci‘äGù±.ÒV­\¹'‘ãi{×m'„9AèÛŒ™j<ÀkÛÚ²#"®õ¾{>2:4kKüý3Ü^­/vÎÒu™1b"±hqÏMÕv=ÇóEc(»öøÍrme‹ ßP5Wwå,š«pÃþƒ+cµEí^Þ¾µËk4ɆñâK²–öˆ!ûþýÓ/\‹"<„„htÖ¹¼LŽ·“}¬V=s©Ú|«.…²5G ŒB”ýVðIÜËZ¾¼eölÏC)¦TGGMÛVøäØí[•¬½±NGŸ niÞ¹«Žƒ3몿Ê>QÛòˆ$pª5sÝ»^¶'ÎÊ//lÐV]=˜v·÷ƆZ™Ãz²wŠg…\\²pS ææ.Ïá'ôGG1íÓc{2ŠgøÎÞpÑ…VA›Ò?[Q±kp°Ò¢ykþ%tŒêÆ´ýûÚ±sÝ6 6k é %·££Òk©x¢r¡Hý,ýÃÝ>:’+;jÊBÖÄí¾þ,нpLöP6›ôÙL?öy‚Çç¿iNm9›i)”´~@wZÃtÇ¡ÿ¬Üù;¤ïËÔ÷= ã«ê¿¶«*¸x›„Å’¥êéö꛸NÆé¸\Ô¾èç7Öª¾W]=?ö 8c…÷NÏšE“‘Y½dßú[jQœÊì‹6VX99¨guOw<à‰×e82üQ_ßšt½"Y4Z‹¦÷ûÁ4W×£DâC+álËÎ\´ì”¬›Â²3½m/ãKZæG~t ñ+Ù¹EæÇÐøúÓû„XÙŸ¨?:§sÕVË]p.Å«ÛLï»-ÜîðÔ¼øΫ5ܾñ©jÔ`õR‰Iêwç\µ2ìÕ1Fñ;B>Ä?ŽÓhváÙ¿}Küƒû¯o¤¤\_°`Ÿy¤× ÓÔåC 5 (©MK¶Ï¿,gÓ‘¾Û:æèh}(s˜uE2 ‹ukÈí$ŠŽ5u¬ÑTQI2,öàAgós^ϰÂEûö_³æhI)Ñ*¨Þ´âì¡ÅB›6mdË.¼™¡uš2ð½L[›¤&xGî¥X/øÉ |ZZ;¬NUÕÖîÔnA£ëâu\âÂeîT• u숌ÚôÕkJʃoÞÜÆÏïüêÞ˜óˆÕ‡Aµ3ŒŒn^9èRMg VwéåVÙXHN8rdŽøƒû÷+r;wN`›e(ë†EJ<Š5zv¥QçWâ]$ö #ñš£íÉóšŸß³}o06: `Á8ÅÉ+Ê$܈¬_¯ûâÚŒ$Ôýóïõ×mu>4Ôw¹8œã~~öŒ7÷«Ó€j=׌œyν[¤¹Ç}dË j.µ!iø „ë¢l©ª„k‚mÔ ¼5ÿÐBÞ¾ýz§ë¥ ¦Æ¥}­ȩ̂¨ûÁìF:ïç[(§ a=Ð}@ÿó˽wã;•K35D`Ý=òs8”¸¹?ÆÃ£75•cDëåö§Ea.5™» f½˜{c«ä\ËŽjç‡ìåÀ›ÓÌÂl4+ê6×mP¨”±ò:é‘"Ð\7à JWÓ¯ HyÀÂ-Ë«ø€å™˜<”%²ŒMšõ>ùV…¨µVlLŒ˜eKÁãs+Ãk6tõw¹ô4Ùô4sy R(ÄâKg¿xüúƒ׃wå—- |s€gÄtöLßùr>åq×;kÖmÞœWYÙR“æU<}™'Í¢yÁFEVÍ+^ì§&èíÿ0_P¸±lðaXX˜¤Ï5ÿN1±g[8ƒ9DâL-‡/å YÏ!¥¥qÎç,z¯¹fM•±Ñž²ø~_—#‰÷W°)£„–¹<³õ©Ãã¬hIÉð»3ûà\ WJ»k,§ô<,:›.¯X`fQµOEEt{D¤™}?ÎéýáüÁÞ«²œ0vúá`Q›D×öŽË/ŽúÀO¶µñ­YQl 2»##PÌʼnî>çºàkºQ¡²ïÕ}CMv듯:Ø5›GÏšIнÁ:óuØ.¢º:6qÉlØ‘#í•#Û›\ŸsãxàQQììOS­@09|í 7osÓ®c¾†¦;BNæÅöu³Ëïy¦æHÊ7sþ¶ØF]cëÌs%³p·\Æ„giÌ‚ùz®¶Ù¥r4¤Âh_#YIÉe—ÏµØØÈQa£A~LXµÏé9»;Uáì½r›þÆ<¥%ÔÑÒ»êÑU6-‘[m¦øºg'HrµDwÀ sþ†ÓEÝà©ÖX#KÓ¦†Ü»&­Û£ê7-„Kl^ºT}›íûÝ›–ÜzcÝNh¯Œ,Ípð‘•fg;kÑUlÄûß>}»wíäÛ°f¿Ð…Ô­7@Jheµ@ž®®^ °r’ÌøÐ‰š’’¬’„­šØÊ@Dkkíý1ö.¯#f{dÃh~WGEðÉorN<õâwŒpÄ 5äF½xÑzûvëÓ§<"›œö?`d¯\Bv\0õóst›Ç·ðÉ뛉I¥UÉŒ7n¼¼Fêk·´ª:°ßòNR cTyÞú†âÖÕ¢­'ã³g"êºóðŒÚ=6KcO=T鬶S´ŒŠJ<~Ð@oÿ­ý­Û] ³«ÎÇbœÅq¬Äµ¹ÈëÅÌ^oßßñ"͆»kìP–s ô¨³s%ê´4Us?àÒg‘ˆ/êÁéKx[EÙ›Æåžªý-Wð 3B^&Üß×^µVê¸Nf@ÇÍÅ^K —‡µê.»ÖÓ×W7TÞ‚ceS^½z«%5X·i…v1¯8âêÞK³fÍ:-ÌÜ{`ÿ~[æA¸Ç󻜇öéç¬ýÙ!:V6Wû¤2„‰ï‚Á0v[ÞÆ7ož]Bï W÷í¯©é~º‹Æ¨u •²$bÏfFFGG³°° }èíurt|pô*™L®®©¹´Ï/½¿Ê¤”eK¹úØú{Í=×3ö •½LÐmokóðð˜ÉÂb·mMRzÇÐɼÆÙsæ\¹xñâåË"Ú©¾¹ r™‘×qp6>1±Ñ+ŒL3SS=oî\9YY8[hD„ì®]»äåÏìU—óÑt-Q8%Qÿp(öúõ y~×ݲ²²Ÿ?g¤œ½téeA hOw7ߺuùÏžE¸×ÛÜ÷\- $x$äïo3ÐM;xð`ëfUÕâ»Í™NC}…!R ¸_ÿéQqgÖ˜óÇ÷¯W¬XqàÀ†êÐz6ò}·Y~~~EEEƒƒƒ ÍÛ S@ ¹ ÃÉ,o裑c\{pco»×±„ {{ûÝ»O‡…5\Æ>¶¯Ýõ³ç×»Ó#ß¾¯x&*J JrÏèhA9Ÿ½{÷Îá\CÕT÷¹¶L¹.3‚3¢»»{0³…6¢ÅÇÆ·uë Ž<ö‰Í˜õß?ÖQ÷°3îP†}MŠ™TõǦü+%ªoß¾]ºt)ß¹`å>¼ë###ùå*+*”9e}öÈÉEn‘Hõ¿\ˆrŃOØŒ§q›g„f&sJr=yò¤¤˜CoKÑјf'ª±±ðÝYfò]"×pÁ%%%FUwò=Ú°~½;¿'§'¯"V@Ne^C§Þƒ•í’˜?\‚†]/±Í¡ïY]]]E…í‹kr^k¶‡.;]GvR¯â án]šÍóÒR«–‹æ¿áM€Ãµr*ªªªÃa!QQQ™°µ‹N´Ç‘Ú·]^ouâb]{èÐàB¹²±……ÞÕn)×m¹UVzó_òö.L³aˆ‹g¥§oóá•xuuõÅ}¥W·;DÎ rÔg>Ïne9m„xüá®^"˜“5q-pæ4ëö§ùùbN©ññŒXÝ4«w}-EëºÆÂÃÃU8Õ‚Ö,_nû®,öæMÄ“¾ÖÖVVI |q—ÑÍn0ƒÖ±é” Ø›G’•èô ½¯€Ák§o7>TÓ¿×_DûÁÁÇOŸ.J6J³ü x}NNç*Âa2y—´£c:˜÷â¨Ëâ.b½ê#ÍA.eNC¡bÁˆzX³:=#ÃÊÒòvB‚û’žž^ü¡ŒÄ¤¤9<¾¾¾Ò’¡¡¡óçÏÊÎÉ©©©91ÅŽÝ] ?<¥IÒêÎW¯k˜ýjÑìMi€ŒÞ«öÅ+VèÓh4=½åK–juóf€½––Ö9??qª¬MWB\œÓF¥5²ªúì×el !Ÿ¾yêwdñ>òõõ>cvoßÁ©8Ê%Bç\a°¶v*Í%=üo;j7(Šs1I¡ºÞ/Ð<ïúöœÖ—ÅÚƒË`°¹Ë ½eeÒE³ŠX!–%fƒb.ÃþÒíý1šy¥%ûkk=}¥ç1™|ikG¼ý2‰å˜²¬ó@#L³5d$¬«Qøžû ç¯;³óCg]ivèbíõ›×ŒÿÅãlïªU1mcN'n¿4Ú³q“€”¡7[é¹äXÇ,IÅ=% d"óKï—þ:}Üâô„—ŠŠ¸ãÇS1ea¶ã¬¯AfïS8;ȳ~û¶ÙEZÞÙLebNœÈ…Ÿ;ÉÏæ–CòZÙ?·¦qtþ&a‘’ò!ÄDîm}·¨á,ýÃô.ÎæüÆóÓ&S_{–]ëéº7ú[öÞŠÔï@õ6îºß¥‹ç¯ÄÅ™}ñìbpqGI¤êš5k,5Š+“ ‹-D¶îñ™™j¨O300pË ™Í.8 «:"!Áu¬u”Z³ËfFl[Å- tj6Yr2»mÌ!—^UH+ýœ¶-Q^j½.ÁUÁd·²²:|8ØÝÝ=33ÓËKIRrFÒ¶ ÕÔê«?qÈR8 “’’òzvžÿ%YÙ“§NÙu¿9uçά,ñ¤á×åEDDöDï®2Þ ÍâaV± hÿÉÊ•+«*+¯-d‰®ÉÿþÝ=Ìm| oÙ¶°p$ȳŒ7/SU¶räÑd“š÷¯sÐ(ÔíÛ·#‚FKÌÝà`æUUTV­^]s@JXëæaI5––‰™™b¥æ¥Qêëd<?ƒ>«ä­¥Ñ‘êµe'K€´´µAÚ yèPíƒÎ‘ðU[ Íx§…;®}YQq g/@“?+êüùó‘¹ý5ïŠÂæ$½Ï¿‚ç—Sé1T~®y𠼉dµJú¼HŽM 2VÝ1N¸uKNNn­Ü‹œœ†œœ@ã>%3[«üm×B³¿é<[ßÀà´‹…†ººœ³ú}û€©ÌÛÉw.eF¯„””tNb^‡ºcÇŽÎÚŒ‘áa¦ÉúÄDD˜ZXP4ÕúÚBDV;¾½Ñ»Hî7P/½ øÿpX“ w&ö~|x†ÛG‰F§«pB»¶®Ës·šÕ σ‰[ÈX+((_}ûõl0•hÝ‚ùœœâ¦¯\Oš+ÉÕÕÕ·'Ú`tx ßä2z@gFo»¼¶v ž1ä†÷ؾ‹ú¾ŽS‰óSÜWwÁài$€/× zO7›­ñê/ÕÐYÁÃSYYùèÁƒ–ÖV•¼¹n'=<oßFa0óÙÙëÍï¾ÉRzx†hÄÀ+¡Ïœ9sT…3&’‚ë8Û±Q§Æ#³†GÈ›Qš."‘³dküߤú ¿î"Ÿ½+ƒ!fa·[æÔt n%'''&òC¯¼ €d¼d=˲3ñÌ=U—ÍÓ™!qùÚÍ›7oÚ ÇãmŸúu§Í»¶ç⥋™/:Ys(CSG§n+43Áõšb=½½ïÊç,Xqý:ÍØØéÍã…]@ ]á`³n]°U4­$ツð¹€lQÁ¶6Ý®$äñ@¿À¢Z×\º¿bÄŠZHó•·ZÎA¶¾÷+(Bü/_¾|ñ¢mOS>H­%Ua¼IõÇ*FÖ^´N–ËX&s;ïž 1§{®3ÀÌë¤Yä²MH³é³é¨Y¯˜cŠu{ålöÇË…ÅÅhP ¹t¬\ihl\FIæß°!üÆîî±ûo…–ŽrÅF¼^©xJÔR59+$.}F7SQI)>"‚ë”t2£nC륢4@ÚÇû^Î ?­ {?þ'À 7% ò­tgk,öh. f¼WZšõÌCò­ýRÇç‡\¨€ –¶¶¶ÚL'y.i „÷í}×–-b-ŠÖˆO] Üîý‡ÃÃ=Ï×ñññûË›à¶l‰?ÕhFج°Õ**"¢å©Ÿ`¯Âàj2\¬Wò Ç/€€Ph æãÃÛbPm3jR—.[¶á®–yB‰ã ýX ~xKÉõ$‰—®\‘7Îy.€9‰ƒš„+3³[—/ó0ßÁÁ!É¥Æ9× ž9Ø ÊÜÄÄD0‹CXÍã¶GsŽs,fcNx£™¤È@¬‚`&"“hÑ”’šêɃ}ZTÔu‚×ÎVŸËëÒV•žùÉÈØž¤ì¬üÒ¥XöuüüÊË“5âÕ¤Ù@3³J¡Cé¶ÙÇæ‚h5 ò•q’æGKÔ=€ãqrrš5oYb½øZ÷lÖVgX Åzï¨jÔXÌëœoE¤OPº«CöÍ*ùÞ6Ú©*øî ‹vÏñGÔX$Öc%ì2Ò[,y´ T׿odA` €li²a¹HªüGÿ…ëd?¾?Ò! ÉþOo4Ü4&!éÉ+®h3·¿þ +ò›‚’5…üªª+;‚#[¯„HyœÂ7Caø¸Ô?Äæ!J×aÊÚ‚ (m“Û©(·ã°Ûÿ‚÷1ûØY|yñ—1Éôßñþ?<õíû¿xõ÷ý_ÿ‘þoPgèåß&ý›^Ÿ @Do¢÷Ù?^ô½0oååŸ0/æë‘m-?¿”w¢ßÔø÷p ÉȈL¢Â¦Ð{w¡×MnÏ,ÿ¡Ã‡" „ph¼Ÿ¤óîn>½âî[V~&/³íƒÞ 8ˆý³ý 'íHømHþíÞƒ¦ã­ƒ Ç€ÓlM€KYÀõ6P}¨íŸ©9Í’Ùˆ)°Åx!¨›î×Þ?úã]ÕLÅ@ ØxÇ%:ÃȈ‰. @265¢m…C×}ÍÝœ¤k<ÞÏô«oAT¡}ÕL͈™™êðÅ„¼¯®3að‰Aæ€üä6㎸E`-\ÎÄZßBÿsŸ78™F!{böü1³;^Å lùIKÄŸ1€š„Ô7 Œ“ü‚ÜItŠ„Ð“BChŠƒb&óƒúÔÆuDûÔ³ D]=š¹¾%É„õQ2W°!=}*•6 Eb'aûE~afëx[.Êïé7 mÜïè?É øït —bÊ¥6¨õÕ‚zK}ò'Ì3;9MY«„I˜ üD«ê&_ÑŸ†‰“Ð"þ†A¥òƒ"?Xè¸Ç[›YL˜'Ä j1a&_[íT•‰œlÈŸ(s¼aØ@˜Ï6úÅl§®]ä$@ƒDýŽv'$úíJÂ-i´÷ŸðsÊÚ›kßbÍ• F–ξA×RôQ5è¯ÓÑÞ$è‚ÄþŽö& $nº¶iΰ¤QÆ›ôý†yN8HüÏÌs‚$ÓB§¡ÐI€Iø…N‚ Hâ´ªo Yêï¨5 ò ?U'“à4•‰šXPÈßP&jÀ@¡&Q¦•Å——rŸ;=§GM0(ôÏâÅ´5 ° 0¿£½I…ýA{ªV¦´O n?ép\ip00³‡rL³#è§ÀS×ã$PƒÂý4Íœ˜´Ï‘çK4š"áI@õ-¨Àø|Á´o fªä'aRòãð•cN•ô$`„"NFz\å_gSS$žzЈ©‘fFI(€‚Ò žS¤> ¡¿E#‡)Ž: ¡QßÉôiæ¶NqøI€þAeL˜0Öpމ|SÕÏ$xƒþo¾ÀØ—Å™‰úZ¡å1œYt3›ðšÓ,¬Œ,'šô~)•™åöÖñzšÙ’ù7¥±¾1¨Ø¡êÞÉ\þfA‚Ù³sËWÝ8'†€ê}œÌ°¥YLÐ$‘¡UUæíãÍq¿eĘF2?ÇkvvfWhõŠ]zìõÒwÚA#QL4Ìr…Ù~}¼ÿ8c"¡î°6zú½/Ë PÔù¼Ž ò©“è§Ñ¡™µ N6‚ž¸’æÐЍ1¬@ûUÑò­_õ‰ÙoG2ÚCÿÆ`æP¼œ:WÆ•|$0ù_¥)[ U’¾ ÓJ&Êj æJ‹…ÃÆD$âŸufù¹žÐ§C«àTm¼Ž¤3{;[ê}šZ SEŸ®Ïdê=l®Oû"Îx»Öqƒ ™›3l,¦7ý`80)FVŸîþœAX2à "·"éÛƒ?ý¬þú¼j@¦YÚР¾Ò6Œ‰ù¶™DtÍ¡‹¾¥YÓOÓçŸ MÔÏnÿ!YüîfS+sS#ƒÙýûÛ€æ?µ÷e>„Ÿ=ð=x"‘"™|üEàŸ Ý`D"ÓŒ&Ê}HåÖ`v ÅËM›Áïæ +]½¯ÜÅ”¡oò%c˜O؉D¡Ð,˜+ ßqoGƒ&ñ[î¿Øé“@úRèé›XŒÏÉ„ú©iú7% de$‹O—Yê3-‘nÎ0žLÆÏ̼ؒDú܉}‚äwæù¿°©õÿ×­™ÿÇöÛ»ó‘˜ÍÖò_Ý2Éþ$õÃþhKØßý÷üßÛÿñÅíàã6á*4:Íœðúïv¿ÛAþnù»äÿÞvÏÓ­ÌÍÇ]ÿ×mùAå¨oTŽš¦Îÿ°\Ÿ÷Mÿ|4}šõï.˜ÿê]0?ÍÊÿìN +cc€wÌüŸ,g©Y˜dii®Ád1ð c!‰}¯Î©n¨ùÇçw÷×@ë+ÛH Ml±ÿ©Þ¾6øÂŠÅ„K}Zt0a®0¬,¾9vðóLLé.`;Ÿ5úS~ÖQA‚©oäP`˜ÓDDDÆÐô“X•&¶:ƒcE¥Á¡UçŸIúù`slèØŽÃÊÔùãNÿíŸEô ã+×ÌáÇ>Eéñ¡iP0£Ò(FÌ L–æ_Ï0°ÀÅ@¦0 ˆn²Z…ÖCM\£kΰ20´Ï‹¼ß˜Äû76¥‡cÈñðøEÀо%Íx+‰ŽÆƒ’‘L%¡) K&`©D"ŽD ÿ!Ayù‰§ÏwÉ»ö€<*ÞAŽ’E(•à³4þëx®óY›$Š”ÚCþ3ZP‰1ñü âýú*ß’$3,-Æ|S·ÖuSàÄr ¢Qp$…Ñþ¥&©4 Êt5 ÝÃÔ£Ø/D….TL (:¶Â\:ƒV6?-ÙAÿd®MAÕ 3úÃ!¶EàÛÈæð-¿˜y ´‚ê­éϽêÄ­|ßé׌Sûœ|M˜é„;Žãè„o2ò.ͼH$MbàùL{þ¸d#ÅOì¿®&¶J2§ç«{¾žÇoç”à “ñŒô‡!á›Hd†•¥ܘdbE2‚Š4›EàVЪ»•u|©Þü ZËfVtŸ8zæ[˜ èóÓ‘0hͪK>­ÒB‹¥_öKB+¥ß­²C9ÞÖÏ‹ë'¼þžþo_Pcœg:Øô½…}•9þ]§ýïÿüÓù_S†¹¥°C—y˜J3ýÝSÀ“œÿÅâÐ_ŸÿÅÁ(ðç¿ë¿ÿÙó¿_ Aš÷-?;ú ýaü ,C÷Ë¡à߸óÇ¢>Ž%éQutÈ$;š¹òÝÑX* „Xk\–aÌ€ð^ßÒŽI@Zß|ü9åè>èÉÂ_kš¹/@̶Ô7¡ýìà¬Èš„8¤Eœä/ú‡¼$²>¨#õiŸNÇïð%ôüÍÂÊÒôxq|ÉŒf=߃rûO ’>à{b¸Ÿ0ŠD Bh4ð‰" ¡AÞ³eºG¯?E´ï˜ü2““§eÄTê§GùQgøqNðˆ©0‚ýõð)s2~ÃOXAðBD¬IB¢qÓ>ÿ=~{ªl@Wÿ„ ñ€Å£§ÀÃÏ3_¸06 ³÷?™"Sx~ œ~q~ªl0ÄÿÈ‹„x PSàø4K੺SgãÓ ?ᄈÀAœ 詨‰ø}ª.m¿þgVŠ'2ƒDLÁaÈIqFï߉38昙ŠO!pÚÁšf¢-ôL,lC)ê§ËÆ ‹Bc$£ H!4n²+ 4ef£oBgLfÔãÑëËïZFßijoã4à?Ù>Å0u‡EOIwÄŸóÍ̾þ ÇPäý ŸX²x4v |¢?åóðø3ÞðX"“7"z*xŠDý2Î}g†rÐÉ8æî¯ñÚÎ CÏn¾ìªƒüƒ4á9$KKEo|·s§—…%Íø'ÆŠÃ6 !š(„®; »èŸ .óyÓn1b§šƒ„Çü“ãü„>`> ¨ ø-VE˜\ð¿„¹)¼åÂýø",ÍäÄL… ̯µ0õðüág„¶03S@Û/YÁÄþjË!s1-ž~ÙmÁÙgËù4a›À¯€ÇÍ?›2´0á Ç|†·z_˲þû!Ôüf8Iý‡Ä#ðß¾ÿ …@£Ðë¿ÿñ÷?}6€o^|ôëWAýôú)Özÿ¦·B}*êS)ê0þ¥P ï„裱ø)ÐÇNš»Lè–O¸ømŽò3¤f†Wý[5ÂWËCÓbëÓâÁwÌ@ùT:¡°¿U¾g!Sd䧺À0c7Ž8•Øÿ¹2 ÿû€Ý÷«ÅSÔÍW#üb РÍøÁâ§øoÄ “Œ,t ¿ÒÑý×ßöød<ùýþOÌ_üÿ»ÿóÿæû¿Æïï^Ï¿{=ÿîõü»×óï«¿þµ=¿Þ9úß³×ó県Ë­çþŽtŸr¸oFýZ~CBô¿$áϸ‘42úc&§ßêl¢ œŠiMŒb ’ƒoFÙ÷éhà´Fàö›Q t„J£Ok€“oÙ ¾˜xÏï´²9ÖÏb˜OgˆÿbÎø=ëÁ|c=èß³ž/S¾Ž‰R:” Î(Ó‘‹YÕP¿‡:1uÚãп‡>1ý_5ìOU×§qu'ÆÕ6¦_c:1Žé´Ç±øz‹‰qþîÿï~oâõ›ûÅ¿RäxXb%úÛf¿-0 a¸.\äžàâÏ[îh–:̧í_›6³o…ÿl³Ù÷+ðëHdJ¡‘ph G@“ÐM cˆh:…ňÐØñ{D(Ì}¹_NhC$¡Õ°é’ÄÑÉX¤ ÈX ’HB¨x •F!`p2²¼_“4Õù¼ªÃ\½#™š‚$ï—Ôÿùï:†Fа4‡"è( ‰ c)H‡¡Éê— ‰ßŽ0¾1‘]hZD)ÿ*ÑÉÕAaX™XN[Œ¡±T2 K¡Ðh’ˆ@âÉ4*G¤Òñt*G%M˜ÐoMÁoÕ›TTôz…ß6€ £( ¼%ih"¦Ò‘–D@Ð Húßb¿Mtrã Cö»¶A¦’x2†Ž#C+q$,KGc‰4…ÀQ4ì¿Å6~›èä¶¡×ç¯~_+Hèu^XA¥a±H<š@Á ¨ 8FÑ(ÿ­ü.ÑɵÂ\+ù]e QX*@Dãt,‡%‘qd‰¦Qdä¿E¿Mt*Ê`Z™ê07ùü6ˆ ( ˜0°H ¸1 ¦ ‹¢’©x:áßa~›èä bB³ù}Á£4A¦Ó¨8’Œ¦bñDGÇ“ÚãÉÿù]¢“´¯å÷£-’Ž@Ó0T<ƒÂP0`žD,‚„¡ )Гèmnÿmü.ÑŸiC B,´Uã—:øq³10NïPÐH:L$â1($‘H!´ƒ'D Ã'ÝżéEý4¬Þ”‡ò‚Œ¿,œ¥Ó’†Š¦ h4 @0FÂ"‘hx,ƒÁPèõ7¥™|Ø_J3>Ò$ó4*ž†¢Ó($:…F©X•„i˜p1AnLuÈ_J@³e0uÊ€1SˆD äÖxŠN§#0h…ŽEâð$ õw$˜â¿”`*6õh‰N% t"‰†"id IDah¿ˆ$öbLuÈŸˆñi«ÉÊ’1Å\úÛÍ@‡x2EÉ2OÂñt" GaÑꞟŸøšܾÝiÿD(¿•B2…¿§,çç´èhE“é…£Aù Ò3‰„ÁüŠ¡i)sÚDô&“SÇÔœyŽmÚòR($AÅ!1‚J¢1H¨¤Eð"‰¢þy§Mä×òÒlõ-§-$8 Ð0ð ,ƒ¤“‰x '’IT:†@¢!ÿˆÓ&òk!™ @ Y¥YN߀1X”)á±4’€"Òèà7HÁcð4¨5þˆ¬Ó&2‰¬º´éO* ª2…J&è_(€4405`XtŸþŒ Ó&2¹ Ìµ¶iKK¥’Mö"A#ã‘H*ƒÕ˜AÁÿi§Mdi¡ØiKФ IT A¡` í@H¤RÉdd€x,…ðG$6‘I$µøÝyE’p8HàRt4…Ã"°H," t…øCÒN—È?HË0¢2³RœtHFFÓ–AÁ!)hàN$™Œ£’h‘d:„ÀQèh:ùHßóüXîAS2ÕB@|6Ac³¬+—†•¯µ½3 ²Âx”;üÅy~Q"¹fzM»¯Òp\Åh™ˆ³64/Ž®³(1 ²Æöáû~²RÁ$*úä³eY‚=1{Åbä*×I]§A–Éþx¼ûòEwïT‚@NÕRË\A;k®s(¡öûuŒ; ²Ì÷ù~O¨Í.n*»¬æH¸[àW—}ðW³ Ë,ÿ¢»±húx£?õ~Ç ¦H±¤Ö´$‹¬®7nUퟮk§A>¢ûw% oemÈ\ÏKÙý‹¼X~A ã8/ŽZ-Çtl¿·ÍäΫ6ü*j·…éy}Œ=0+\ïdËBé[¦] ³Å?K¯ÔYû®-«¶4®¤k1‡YaúMŸž,k'K½"ZÀ·‘äj³D:‘Å~Ä–Í×";³BvS–ó–¨ë¡ÕT!€˜D–\еÅbáùТó0+D¿?>|y4˾¨ŠyÎYBòä$Œó)YÒl2§Z<(bñàJœçaV8ÿ÷YŸ^®ÿL{(哘 ÁƱ„«ÏÕ7KGºãky¨i˜¶›"ì[¢ÖÍLÕ[ìƒdê­ÙðŠs÷z@ðW":³Bt£˜xK•ò*È1Õ6Šå׿z†P]2©z-›ÎÃ|@õt®€ä?Ïã°¶Åᓪøfâøt£ö"÷×%[ÿE%6ÇY«)çà•´HÖš±›hiÊ?-z)Þºõ Àí>€E¾Û®“«d™•Åv4þ 6"HMss±+Ó\,Y@<k‹9N‘¥i'R­ Ç=Ì$ÀE†/U('iªjEö¡ÚÌÇêlŠ×Hœäõ~ÇNšX “j¦¶5u­¹T !¾äL[e̓)íÙ,¢X¦î{Õкy7­¥ø"‚1K:îd&–¨mÉ ß ­¨G »YÍA±™QÆûëäÝq£M,1{¢ŸÓ‘ÁFˆciwWZ ˜­)PÓñÈ0°Hí H+¬­¯ÎôÒb¢qFË[ÜÂZ^Ÿ³ÛÉ“Jj }TTÉ­R-Úm"jR—B ž{EšåØÕr²´C²Ÿ$Λµ¼7t¬p?~Ÿu3±CÏ„1"WÄš´l¢QƒT>Î-7Ë’(Јî:'%#ÀæzËÑÅ­ÊlÛÊá97ŠÑq6—æMVœÖ™rA“‡Õ¤¡+”»–9€n/ool¬ôæ9%óŸ]lÂC7ùÔ…Rs½tÀžL›<ôoríÓÃJyž`nw쳸‰ôŽrn¹s†JM1&¥²¥ÜâM¾E߯DyfåM÷6ÞqNbŠ#õ$ FúÍXYjSjÀÎöqž‡ÙÌùæþááû´O$Ë@J–‘…w-ÏÃ\&kJÓ EW¢;³NwóM÷÷žÊkjãâ9uLM+–Øš¥7-b ׊Äó0ë„Gñ•½Œ@ªýÈ9²cÓݹ`™k&ª®ÅxæãÍ—ûßjkŠCpE*’%lm,êI‚ŒÃýr­Q= s‰ò–Ê•ïØÂ(˜Y\ĄՆ‰´_’¹+J¾V.<³ÎöéWqô}+EmŽ™ÞaâZÙiͰBj–°›ô½–Κ‡ÙÀzÓm§÷ \–ÂTô ͯ„]Bé9çâ º–Èš‡¹Ìx_ö{oZFVCÞsFt0æZF «p­ìafáÛÄBUÌfNTS*2®5÷x-i9 óë/ôíÝðÃãx4òæéîþËZ„:ýçWÇÁP‡—ÖMêQ&ˆ)dkWKã¤ÛøÀ:»—¯ü=YM;yh©%ªuj ¡˜VL §[¶§¯\dbT¿Þœž¬ÚÊ"K¯R|ðÞÒYÓêÎe½“XN&!ã[¿ò3¯/œ×=¶¤‘-Z75Ž*Ä£ÚaèTš´b-y56W;>¯q< °DnÛ~È97ák ­•ÇyJ¶ ÎÙúÙÂvr‡¹M,qëw÷2ŽRmÊÒÎ)rí©Úà§ÊÇ;!ÞF~ª2 ®ÓqóM,Rܲ&|N RÊÞkM3Àⲩê6ªí´X¦6 °DmóY¿sz=k6V˜9v €âxFóϯÏÚï¤7 °Fï'}}ž™£ª¹ï´X׿Ó#6ãò¸zJ[>>2ç–ømY-xSÏ¿“ZàB ­sM jïÌo7’ÃÌ&–˜}øþ¼Zíúcz‘1tIŃŽ#&}cgÉÍøÒn`‰Þ–ožúÉ€¦jÁÜt‹SS€¦ÆñΕ3›Xf¶%|c5 ¾KQÌE§VÔ¢’ã¢l~Íqrǽå$À·§}Þ2¥(®õlÂÑMÿ†Ç}å$ÀGÜ.WÐÕgþmÿñõÞ8.®T©jsÝ7S&ÿF}ŒÒ"¾.²õë³›.ýÄûøC’7$²þøÝ2[‡Á9 £h.­Q ŠŒæˆ3_í ¶ãí¦<®ëº^Æý1aOhy˜&"–³:/™îZ`ú÷‚ðNÓºfs%Ô4jo5.Á~°sp”àR*W#¼ècÂ?÷°,ÙyåàÒx L…€ºÐp\ 0;ô뱜ú€åß•)nÆ£8GmLÞµÓåºàL*‡Sþ*–lMJŸóÆUñ%pŠì-ç0a§®3 G¾O=øv*ûÅ·ÊŽçi6þ•-,hãÂvõ(¡X苹‡â°ho­œÛbç€Û}ùÝtzÚJòŸCµÄHlÑNƽæQc­õjý\k1yƶá‰^œà%’_žt’§’zñ•%2¥ÉÉL¯èzpc¯ô0·I€%nýëóÓí,7´nÆÔÇåIÓc†Ë^Š ½¿®r¾—ÛÀ"·- SçÈc{$Ö«(T2Ü_Á†Ä†Ãón`iÞ•}||xœ4]Õˆ-ûœY-g€Ä8Ö7 *S¯÷Evšn€WømÚ`:GÉœZ2¿Ý«sÁCëêc‘žœ)•B‡Í7 °f¾ïw÷“Æ+Ø…‚iŸ]ê=–`‰§Ò;ÆÆoõôãM¬ÏBÿ»û/O“´Ü» É–Ú)0÷#ŠX‹€³%´î°'Ö ¸µâ›DŠc¯Q!­e.6S¸Z¼Ê‡8 °dÄÓnçæõï“"y»C„&âz£ÊsOâ]àni|ª¾ÖüMùû¶KØW |ôb_|§·ûû¢Äl£æ¢â,c ÄŽx\O Ò!~R_ì½Ø›nG.5«ŒjKÚÑT_I'Õ T ¼.Óùa³þØe€Ý ·k}1³?»Ô²±T-…vRÈr/›ù\ YxëE5´¯vƒ®vÃÓÑ4%”ÓZÓ¸l =”œ¹6u…êç ‰Ý ûb—«øíÉrð¹$.)¥ñüªdK““ŽEÚ}ÂO‰¯»Ao/õÅ®4åQAÂÚ+x6 ÄH]C¥â§Œ Š“–nàŽ‹e*R¼¹Lj‚Í”úü™Ý’YôaŠcgYV¬Á[r =ŠÏ‘>gdŒ"‹PÍÁ%W%8K\±ÔTÀH7=2¶úÌ×O_¡ •v\èÄr%L5£×¦Ç…'–˜m*öf=¸ä>À ‡&±C¬•r…S…r|=x`ioz¨ú{ÎâÀ’—,êhÏX=:µ¼7t\ØD˜±Ú$Àí"µ­sòÕö Te£ÊX¢W Cm}”tpÞqJÇ·çV¸=ýqC£¢ýãÝýÆÓ*êÕÅ\n5r%§„\ñÙ2TÅŠ@Ó;ðòñíNçÜí!¸¥.xRýsv `¼’棵”šKEЄ“EžxªU~|m€©³í65ÿœ]åŽmtn€”Ù|°E’d‚˜ÚH-¯òÏÜ®|â§»þ&“F„Ü0šù:)ÍY·v<è½[P?lÄI€e#Îí$þvìÕD›Mĵ$Ð1sƒñðGªÉ÷v؆“·+ü&v;ò5(ÙüÀC¶(œ¼¢š<õíÏÃæ›X3ßöÄßZIãà(ñÕk)1w´O.Oo`Íx;wë(¯g˜–K`¡Àaœd ¬®Vî¨ýøøœX£8·“ø{{ ‰R/Á‚5´—2O*=¶fè8ÃI€†'Ž¥ßY#†Šé+Ë‚j$ÎG¡ªnÈHåP·O’—Ì+­± ‘¥cP¸°‘ $^|àⶆÊ_"Îwˆ˜GhØRv9踱Ü]aêìè3Ù€ùÐCÀ &mÁ£¹+„Ä.D îì½åÕL¹D˜›BˆÉeL|kÆ­œ]çù?Ï÷¾íqvç²×ûþÖå}ïÚ{½Kœ`eC;›°"N²8†ò¤È¤$4Ü%©ð6¤!áz9J$¹>ÍÊ#zJC²Æžà0Àâ"Ý$Gqœ ˆ áA¸J†ƒUÓ´Ï ±"JÕ›¬Ð° P^_™ 0‘E Œh…Äè†buÞ6ZU4èóÎ%Ó€”Èù±èN©àF©ZÈ[`òHÄ«@yœáx;¯‰cpŒÃhCÇ`…¿˜¥@U ©hýÌ’$±¼L tô„NÂh”㇤†QHŒ4ŽU+¤îAZ/k„3˜@R4 2†1.P@†öeeŒq’1 PÕBê)@&¬W •ÀXŽhA–Hò P'Á¿Và ’1oR-¤n¨Q(ÈQº;Œ!8 ‡!=GÈ"Eó"V½Ý#ŽòÇ©ªò¤²"ÂC§ª«° /ÒÅó"U}o…¤ #K‚Qè—'åVµ·€ˆPßeLÐôã´HQÐ^Hð\B)7Ñ,½q&"Ô ©¨A«/^ °XŽ“Y‚æe ­Ce0ŽƒÆMb2Ê¿l7£ZHÝnưį"ådŽ  8xHd…€¡ìfŒ‚ I­4MRÕBjGjÈÚ‰×*§8AYž£%D¼Çd… ÈP9‚6އQ-¤ön%«š@{þ8‹ˆˆ ¬QV/.1,#‘ÎK Nc²h”¶T-¤ö¶4$#æka ÐÓ”Â*Éã”h :9'’2 FÕBjǨkÀD!…n"˜DŒá% ‡a2ÏÒ‡…³”Qú­j!Áub­«‡¡?.bŠˆ“œ ÀªfI 9;í¹M ŠqÌ­j!u7j½¸. i $dh__L„\å^•Hœ•(NRÒ8Sܪ…ÔÝ¢êàssˆ²ÿPhg@‘”@ò`0Væ%–ecŒãA^fDЧ%(4`‹5; p2ν¸ß™AMZoHs€†¤Sn™©Æ5Íl FjV•BênVutáŸûÓp³2ºWNᆲÐÍAÃXB‚Tœ4ÕU-¤v¤†¥]~Mô˜5¦0FQ¡)p”¤@+A°8Çr¼Q:¯j!/u^÷I¡è„D{ô´ïÖM+E„ëaHªÓvëöÒç Bêöô»š¯Ð‡:½¥×*0£´‘èïê¯àEÚÐË!\ˆî†p;<?¨~_SdІè´á² d ‰Òê£d9:Dž¬EYtõ!áöÕåiµ=‘’ZxÀFyVVT_9\Žô°qjÍo„§¬×GvwwŸj’¤ ì )b”€’ J¡¡AQBd0²Kª‡FãŸ&pú…ñÏ¢ñOÓøÿÆÿÿűpð ß–f6ÈM´ôëï=ž'Àÿ³L›Á×Ò=gÃS3q€¯·æ ú·öû´ÆÌËÏÛsØ”ÕåÉÓû+¶;º?%a {iˆ4Üñ—Ìþ¥ï^"—Ýð V|zåR©½]»©õáã_Ùy8„¿?¬Éò¥~æþ[?Zn}%K7}ðŸÚ!K-œv'?$¯žXTuèüÑ»îÿ˜Qþ×ÇRoåÉÌé7²Îdd±inû™§‰ A°΋V¸ÆßÑÙËå·¼eþN_ù§ÆÛ‡6›>}: :”›ë³Ý:¦d¤jÛÊÊJ¯yÛß÷÷÷¿ý[ž…§d:-¨Ñg‰‰VÇm%MêØváeü,ù¬´˜¼õ¦°hç¹ï^Ý£é¸ívœ/.ÞšÜØ}°Ó€´Óö½zÙXîšsãÜÎ/âã?{üx¦¦ï~ÝÍ ÙsäË…œ˜¦{f<$4 ßÓhOœîÊŠ¯†8¸x1ùÛ¬¬‰×ߵ멽yóflü:÷©Cá%ï[[cm©/3ÝÛz™ž¼^éí–˜°j•—©ýìÙ³¡ WÓt;c]s’’x§ÍÉËË N p6yXt®üÆš„||ÏÕQ?Ìà?[×ìlyñî”õëw±ípÕ£ûC>ùä˜î¿û’N®÷  mbß$¶µ^¯¿|ngИïV''?L$Çw¿°göŽăÆWü’»ïêOï Ë‹‹‹ó5ÊfURRÅù4iÚÔ¾wïKÑÑÑKöœ9c5í{;ß%í=õz*°ìN«w´êàÑb®W£ˆˆˆŒ±ßYº¹¹q“®ý¼g¹¹ùœ;ÉüýÅ-aÄ«˜9sJbÓ§)y€øí÷ßíÝÝ @‡‡Wœ¶^¹žšš*Ù™ktWÊÝVŒM(rýzÇï6ƒæ³‡oÉMûpMdÙ)§vVV£{$ã™+ÅÛ÷Ê‹ãûwLqóôôŒ9|àZá–6VVïôîÝÛS¼=7ÿÂHø£å‡^;Ã/vO/ütÑÑdSF„™_ÓÑ`¯k½/¦âÊ¡ù~w×§]6=°/â’GãëOÜùD{´gx|—èV–‹».ó÷;69>0hel뉋 ö®)ŠYnÓ’Y­Ÿ{b¿2º‡­G›3\Ç®i´Ù×VÓ18ÃÒwÄãHo§-Y»Lš]œ·aóõƒ} Öf}ôË{Cò>ÍfÝ÷_£÷¹6ù‹ÕÉc§¢K+*–†Ççìï³x™žr\¹(Зδ(<ñƒg‹>Åz•ޏž‘Ø®`A¿áRªM“#ï^hûïöôY×T>ŽÐÌúþZSÜ:‚µ6µéšûQ×vs36~gÓÿF£„+¡M\ØaoïVŸ8v+i37ãþîBìó¡vïL\[6yâ0*=±°"ÍrÕÆ™ã¿Š¶žóõÚ ËÙ‚ºxòÀ î÷¦”,)Šðê2ÚÈÅ—c¥G#JB÷nÉìÃÉ[ãÚͽúç¿>ÚýÕð”ù}Ì;¬ìw4b²Röó_ýÖ›ù÷©tþlÌØ{mM6»´`KáØØÈv9`H“Ÿ6–>ðýÞÍÓ÷zgRŠåOO¾½¸®‡…w—î#æUý´¾ù3s$g¹s™XsZEíðÆýãÙeä¤=‰N8ÞëÖÀ]Åw:ŽUnx.‚€èìËßuûð”ì¬øme×—ÛüîþØöPDZ ý–[W—qó;³aª²}å8ÀÔµ—_biœgÚÇd›·.¹¶=q*AŸùØuÚøª‘ÔKÚÂ7±¥ «W¹çÇCS²N·nr2ïÚˆë·3ן1) ßw~ÅŽyŸñ9x$mT´ÆÇây!OK\0hùŠG;JŽ~š•¾yóÁËÚä'¿®›ÎZ|ßÒ|Óã·ì1­OÛö^rÖÅÝ}÷ƒYã*²²’úYLÚ5ÍnÿŽþ©Cï6;]V9MsàÐüwæMÒví²\¹r¥ãM‹‹ä€ÿfùE!´z.Œñöñ±×j5é›6ez—6ß9³ê¯æåmsdXΆ ÆGF¶.++ëìê»﨨¨Áîú)ž ,À®ïÙ:z÷›·…ÍlDIì–-][µç„}Ô¹Ýà-…ƒ]–ݾs§m÷¦%羟¾{äÑI“&UÀŸö¸~2Å×q‰¸t᜜9ïdWZ¹ÿæÅÛ÷ïû°až=³jÚÏEE..f999éÛ¶õóókîååµ]>ayaï¤E=†sæ×_r™š›÷<¸õ 5‹¿ Üuuêã¿ùƒ‡UÀñŽKKro‹·sYÍš`õwUU[ÛÅóæ5Óô £fü£{åÁ&Ò7rdIIIçnÝ|eãIÛè[%½JõÝBÓ7wüСm‹2Fš$šíڵ湰.ì}Ý3oàêÂââEî?DfÎ?ñ»ãÆ~)9«}±jUÜÞ½Ý,O¼ûÞÅ— 2âã[§siß{f{ØØýt:rۘ옸8³ÃGŽD}°¤ÄÎÄÄäBî½ÊÊ*ý¾–0k·oo–»®ïüȪ¿*Û,µuß8j+3ªßªC]:uzgò­’¹ýRfÚ:oøúü¥ââG§Ï`61'¾ôOåt´hß¾}䟥C::9]©øõè±cǰk;ýüý½†·Œ¾q¶QPPôÖßÏw‚]ÕÜÊÍÛßßìË„ûÄ™A_#aJdäØû ¨:º(]Ý@„Ü ,¸»Kp‚»kpw $÷ Á%¸‡ÜÝ‚»û[ûïîsÎíîsÆy÷½qï{ãö~öÞU{ÕZsÍùÍ﫚µªbô[B‚©CÔÄ„26699¬ŠŠ ·Ó6ZÝðð0*Yó$¼¬î)=¨›÷y%ÆrÓ ·«„– IÌ6åö‚òòn‹Þ/¶™"õ$…ØÅì#™ø#"ô¿ŽVv6–ÿ!þ9Aü³°±rþWüÿßsþö¿ÿI7-ºýÏÎÿBþõüÏ¢»¶òæ#Âñ03ÜÏDD¸·¼ôä*£>½¥Œ;ƒ§Ù´ „ªùWEd†Ó¥A8¶îUcÕ–«ƒìã°¿hû 9„±c3?wµƒ{'<›l œ|t„jd¨o‚§ßz4ý%1Í1ãŒÙÑíïÀô–,99sžÑ¹F2¼‰HF¥†`éJz¾.æÇÒ…W¥Ÿ†ÝGf© °× «YV ¸ÿt46ôÆRnôRûŽf‹÷ siúÞÎÕõ½œ\Ôè^óÕ’'â3õ‡¼Ñ=¼14K-Ãèú£ÚÒ×#µ­óì®®®I,pyyyufôÒGýÖí­Ö›~w{Wè{ÌnÓž߯»mļGÃÁ ¶ž¯mïí}qwuÔ=̶º±XiÔÂ詪®>c•¡N¡×øù'׺íéñðV?å·Eüè€lÂxß]Š’'0êÌ1Ú'yðñ±6]å—zב©’ÿbîøv¯|=^M·=AkŽƒQúÚ•Ç¥Ë6Û’Cëà hÞTÍ•e±;Q8ø·írÎ’Ýa£ÇÅòGK žÖ–3gÏÀÀaaZZÚg~Œz­ ùGuÞF2üÉTò ‡œð~˜˜óyŒ‡Mù¥ã ³÷÷^ ÁÄQg'—üë¡+Ïñ)‹¾Ÿ]yG׿§JpM.¿½LŒþòª}ªÇ¡ç™ÌÍiö÷÷I㥜ƒ³žÁÂ|ûömxl˜X€l*çjªP`t4ê I9C±báq¡íwùLA;gçÎ…Ç,šê‹×¼Nˆ­­­Üçæ_¬k»Fìd¥öŠ×ùÃá1ëCøùù«ï(˜™Ñ +››yD¦Š4X¡‘‘A€|¿Áxè:7§i­óâÅ DTÔnLy~ÿïßI «Å³í¨J&ø!,2>ë³ÞÞ^iK†àÃà;›îóÅü@²8©<9­ÈºE…´˜˜õjó— {B; ÷›êf]‹(èé‘—ÃCââãÛûúÊ[. Â¥ª{Ó:öm\òm¶Gêó¹¦#K°‡‡‡ÊªªSŸxÂÄDªL³QçéÂ: X!ç»Ååßd¨r˜Z¯ #ýLm2¬ÉSåzòeees?éÔÊrÃ0©uu‰MLLFG²D-ïoæ<$¢‰eÁè”ut?¥NNNò !‰˜5´.kY¶±@ªõÛa‹ŠŠ²‡…žš5î"[o÷°ˆ‰åfggãÒÓeWWWϧ´lÑÑc$r²€¦Sòòj®µ\U{. D\F®"íÁ|]4ÒË—´””AðÈxßu–ÜZ ™%ÔÑWZ-o[ç¹§ŠŠÞ6zݰŠKHìžÇæÏÛÐ >Û¯c²`' '—’“£²µµU,T–°Ýk:j•6êŠ-;Úß—ÉÊÊ‹‹‰yW[[û&±ÿ•ó󖯹PÈÕ]ÔÁÕv1 2‰l"°ô[&&Ûš…Î/¸’T±Ðžêù>ÔÌF””¼!'ÏS,tm|§¯OŠƒóé*¯˜¿¿ÿœÇÏŸ?#lªv䕕ㆼÛê¦|Œ 4LLòG.ì tÀ ‡ûûúú’“óÚ¯= #KKKFž­ôCÂëyYÒ~Kÿ9 `{+ÓwJ#!%¥ˆ ÝœÞÈ©FÌï®lçÎfœÛó|ûQwTÞÚšaú-A¹-\ƒ¶ J\B‚„˜Øx¾lŽIB…+kÏèhLœ%ƒfuh“žÜÔÔ”2{Ū¥Ù@Ÿ*.K@´k;ºöY&®$è9ÝÀ} €°béú,ó©„MH@€htt”Ûaè]ÒØ^f‹±7À W~ùîÚ»¸ÀCÔµ´öÒm¾&&"„‰e³ OMá¸^Á aaå¦/k¦¾Ú«·<àÚ\_ÏqåKyKCã×ÖÖæÂKJ*|ç¦jbzºcqQÇ,ýÏ1þã_pƒ»Ÿ^KÛØ0ŠˆŠ:' â³æ²8½_p•]vŒ¬9©% B ÞEćöúuÄb“ëúùθÇ›r÷JûçÕ•¿ós§ÜüüµªaÁy¡‡@ ¬_ zá™·à˜*‹ºóÞÚ¹²»h=d4OÁ¯¾ ýÕöô`›ÂlàR_öÎÊŠ^àzåóÜŽŸd®Å“ xˆiSMYé<žÞÞQ95eå‘ —¸çeÓ œ©¬Êµ uì‹NO©&‰Š…q»{{’ä1#Ô™^ÙlÕæ£äHˆˆ#‡®9²±æf~ë‡ööö80§ãS”Ï£ñÂÛÕu¬¡3kqWÆR¹K7®˜ÖäzDU¨,µìsÇð°ÉäË¢./íÜ|½ö¥ÚíÄÐÁÅ…*OQR:‘1/) ÏÁÉ)—˦šÀVéŸFZnîZþ|Bí~K ëììÌn·"ž ¼å£©)UËÃåü3?—Ã…B†é*3ù¹6_¡ÞMÍf7˜ï ”¬e¹ºFÎSm[%‡ùÏuZ<â‡2…ä£oi“ÙÞyX[TÑŠúÔV/'ÈÕxÝ8 ¡¢þHK{ “u|lçq6ȵs¼Úñ É9X1ì0cø™pÛÃ%!:zC}½‚—¿Ššš’“Suíc°å³Ë£eyqqq§í²ÛñÌÇ\.tf¬Ï•šä¿¼§«½§“Ô/â-h‡Üa|éÄBCNå²å„¤ÿ˜œŠHŽðÐPEEEàà•³Î\]»ŸÂ WžgWwža“x¦ÒÏBC¥¤¤Ì/÷g7öö¤///Ù{ÐæZ½›ä’úǤ¦^쌇¬­¯Ó²²~ F%){¥K½“ô¼åþ´csSœ‘‘‘ݨ ù3Qƒ5§É6êdÂåüXá§OŸh¨¨‚ùzÇÇc Œ$³F@¶Øé¥Î´ÂÉ”È!ÒüiüÝz¦Âßãr_ÒÇÇ'.-­¤T¯Tu¼Ñy††&tÿàÀb¦ÂÀé|ûcK˜_^Ää$ 9ÈvûM]ŠÊe¤í1ÐÅC^ÜÁ/ù‘ÇûöíÛo0FñéBC?0&ÆFF¾bÐm®ŸT¿Ø#G¿òtü—¡GE,ã~²^n%ˆ";±X<]™rê\ë »'0œ²Hj\vý³îŒ v¿/ƒò´€E5ò ³aâÏÃ28ˆÏÒo?Æ ü´_6I½ßjµ!yÍçBŸ)¢¯ƒq¥cV¿Ìæ}=ñ¿äCðL82RR»=ÜI0¹Õ°qªhÜ0ï¦[{¶þ¦nÿˆîç±_ûó àšZé2þð¾ÖÙK’…ýªèŸN€ær°®é:Bþõô0±{á9C¹§x<*âçä¯6v¥âh¿(Ñ‹4üÄÛ,2T.’‚~ÈÛEéS©Ë›HæÛÀ J®~\jñ4ºØœsí«òÄÜ8G3=׉re” ’ÊawåÖÉ ½ó>Zj‰‰‹›(Œš%÷çøÃÙ22.ËuÍÅïqÜÉ•VºH†…hÿÝÍ»„͵Gô ‡§:„Ýó'éžvÑé^…§ ç')᜶¸xDRDGÖ‰ÞH—.¢zš—©ñO/×ëï‰Wãk{õ>¯sT%Gms‹: ÒÕíó‘Ý۔ߩˆ™ø×í*hé– 0jh¼ ­Àñ›x&û@‚@—Ø*p|ÞS±gqš¸òSõ˜6=Íñˆïj2Ó¤Õ!uÞmW—OüÝcñ ÇñIy±D´=ì­òÆ”‹]u ŸÂ¤ù×+éç‡Ëľ×S½:·YXfœØ«}Oñ«C<Äíö˜ìV(s¶ý½@ÝUQëctÀù§¯·Ñ•‹i-&¦¡ÎÏE·ÜDs8½’ã?@´*×9Qübëd$º"ÚÄq×W,>Ÿè-?0ïH׈Ár{h®ÿ (î™U‚;®ù>à6íóvº&ž]Ø 9œ5þ&À0=¥D!lŸDš ëòëX?bFòˆ»·hr‚iÏœ$ÀØÞ]ÚL¹y}_2öC¼>ûÖº½cû%s¹·sÈ7¦êGI§Uz%%†þ6ÿ ø¶íÉÿJ9ÑÒ7ùªßŸ>°<ƒ‡Ç¹z¿µ2ÔIÀÿ° }¸VÇ^#k¾{µ¥ùâÿ®äà­Í¹ÅZNýíœáiÙ Jx¨³Š³Ê§‰éO×8íŒò8®˜ªäíÔ0NW1]§Ú K» …Ø 54mEÛßC“Ø}[¶Wé7Þ|ÿ²*æg«bpǶu2þÍ’¦AÙèÐN¡oVíÓî¯É'†#?ó$ž8]Õ••o{¼™¦²*PºP=L5—PyŒ&º}¸LÐ[£Ÿ ¿‹ÂcÇlõ]ÅÅuvmnÈÎ߈6{>‘0sïÁð&+ŠwóbSJd²ú(>¾ÜS"°ì OL–cJ[z”³-ЧãÅÛÈÉ©_b®¤)>ï³l‹Ëxzkã ‡¿WV–·¾2¶wÝ]¨àò[&÷Ä,-Ö§¿‹V†©¼=êXs=tMÈêm×ê&×Jk?ñPËMi„³s·êÒŸ \¾câ¿•„°¤ø»Æ‡_“ðíÉinðô Ë—Ú6«¿@o I«<üõdkx‰ÓaYa´¤Q×aC¢†‰p&ÉøÌ £ï»Ò¯ÞTï­5'åkáÌÝzú¥†¶Dçõ)ê £áÕ?»^=¶g©»xl/a”èN:ÎܤLÍÕqÛ€_ãÕÙCJlÃíOPî3°ŒŽé™|ÒXŒˆüØ]|Þ„š³¯œvÄ6—náúx(¢£õ§Kž*†Ãe<¹£# ˆ¯Q+¸-#l~GBGRX&oã6'~o´¦4³Q¼úêZñ£µ>èçëç·ükL’+œ¿–²*1aL1^!Œëá€½ÍøÙ—çÈX¦J >M\ût™Øý¼lÎ<ðÛÅ$Å|q?Mq´¹ãØP~˜ø‹½’ââÏêô]€Ô\°3+¿WWÇS-×}¡¡£û­ëyÀñÓ,*,§+P3·;lšÿðÚ—?s9àüKþ#Z@…šçž,,, DWW×Cþ»©9 k¾x„3«”»€‰ŽØ²kÌ„”lÓCÌó©¸ÌLy­:ÊJõ©óõæŸoRyÕ¶Ë‚oéésãâ°˜õý\Ü×/t}œ¡zߪoh(J¡÷Jëæœ y—F|š»St©º˜oôÄ8¬‰÷ ä†{„®­­U÷ÿwå-ûŸ‹ó¸¯_…½ï.)#ÿ.sòð$7·´Hæ)ZìYèD¹.{'vEàçè,ÏÎ&ƒ9 ¥¡ ølem-ɘ˜ê€[“šÚMgÑß#3w¾ÏÛÀ™ "$gŠmB/õÑŒ}ÊÄÁGFÝæ¬Éì¯n÷ÊáQ3"ü;ÍúU*/.>>/}èµû䲌¢ÔtëkRMv® Fµ=Ì6·´ÚÁ%ÌÈìå¯_ÂÀ6r$¼N¡ÀØ #±Ÿ?CÏx¡£V[Œ›Ïþ4áµ®V}/!ÏÃËûM±0LïèéfïÜ\J_¿Åd‘ ØÅ3˨'<.®µÕ »‹ò*BöòhÓalED [²L°d,UÖÏŸp(ìêQézƒƒƒâææC§d¢ÁÛ:åß¿CÿQ€[[ËféÒìg{Vz _/¯€ŒL<ÝÙÚÚxwÈÉz7PWDˆ((]‡‹Mö·ç-ÖøEFÇ+ívvv¼ŠJJ'³f™«?2}D>}z‹B"ÁbÔUÝ o‰ìÙ넺ÀZzĨ¹&€™ JŸÕ ˆU±Öܿ뼿9³ßŸa¹ßz²¨mn}<$Ä"ôm¸8Zn›ÅUQUMXºmii±ßìÃ>p’“CinišV®ªªªiÓkt’4»+)-­ióôô¤ ¦FprÝ@ÇÆÆ¾>¨[&ECdö¾uÚŸ©„z¼¦F!*j9m¡uF #åáÁŸE|õª³'†"æÛ·€‰‰ ÆxÄ$Mi_„.ˆÜ3u\q‘QZüKq½vÔa½ß‘ؤetô AÞˆd kk¿†|ol$€¬¬­”·Þ"±&#_(ÃÄÄüœÌf¶öËކ‘±kµ#ädLši§Ô÷ö|G½BzéìHÊɉóñãÇ«¶öô22ÈŒz­Ž[Cd¼¼s+—@8œ¬uÖ»0j×û)m8˜"¨nŒÍÍÍÐ/_:J4ªk'‰ÐÑÑÕÛ|ˆ}® Ôµ´ÖË}è8m—õôô®ookŸ‚—áÄ5ƦpV´[WuŽŒ #Côè{k¿Is8]î/´}ü]ïèt9oXTÎæå¿š/›Ú38 ­899ÁÂÇ—ìA¥&Ï~EÈ©0œ!Ð;<ý-6¶fKcòG©V]T@@@ÏÒR=‰÷ÑÄ“ž‘²²¯:ÿüùúãµ»‡‡¢•=-æ!̸ù$!—b›ÏCÏâbº¡¡aõüô¹]¶Íöf¢“ƒ½}>›©‚ŠJ¼ËM#ôôŽ1«FgDaNvv€9z©ze@hè†ÏìÌÌÈZç—y3ê÷°oQ¾±­ìÞgb8: î?çÍÛ Vü§Q"NŸ©×)Ø·à˜qâ®îú;ÌxªSìO.msýž\0pÖ˜Vì³·Ûq¾_;¬A÷òõèš»©o óð×ܪ„;¹q ‚X-ÿu/S«úWç—eÖ'×|ÌV\?[iƒG‚Q›KŒL¼|^jh…Ðá¬úz£G^‰NQ‡BŒJðÅ“‘LxjŽÝg$Í›ÝÏŽ;qõ’h‹†Æ®(I9и‡"—k{±þ-m®«¬-H•w Ûne¯I\¹Ÿ3E,ÒÉ=Kê-xQ7Ü[itú<÷þŒàP»€ÅõCIlq½î {.R&Õ>¬®9hÄ c^•J›UœßÚ8~½úŽM`õ×1¤‹7æ´)mI=Ð’vÓîÀìËqÝ];ÅŸ¥–©2ØqÊWŒ±‡¼T"´ð'ïcáºþ O.á”ÝÁ&ëá®÷=:Ô_Öu~ßX%! þÎk¼½ôñpx©Ác“^%ÞQ‚’%­M—Ňãí^V¿ßj9²Wók{Òàê Òú!Š=P´ßö—P6µ‰ãê3?gÐñbe|[=ï+™~b%íR¿j§Ágð@\~¯óûD妀öc2ßëXŸB»Ÿs Ì]¼pt|ÉRòë(»öx8“üÑë$[¢º -˜‡U=8ä¼uÍ™ñö”¯uàÀžHY¾‰ú#gº@…/·Òÿ:p]¹ŠÃûlæÞ^“YÚ j ¿‘Yð{ç ' NAT>@Á}™Ú€ø¯äĘC„Šù&2 íXë° º7^"Fï…øU [æ®s° ¶Í› ÒÊxAšCxjZÉpÃê:Œ‰¯À‘/‚95š¨dNƒ¨aÝPÜúu7—ý–È«[ÁÝ€¸ô5ýà ¼½80#û‚/J ;4• ú‘æ»/.‰§Üþ¦’Ö£nPðNa«íA>åÁ«’Ã%—}þÌ+Â÷Þ ^è½_%Êñ¼ï˘–&,T™£ ÌE¾Šìã„‚™CꮀÆ}os\^êêÔ¡¬°Ç2\yãÊ7ù’3JÄ1djók°‰/ÏkŽ;29e¼&½4Dæ)7µ?¼mo°µí¢>VFåg^„H»¡×±dÿô;ÞÛ„ûLðQÄtºö¯³÷ºˆ]‡¸`¦’ßÇ¢^h¿ äÛ^%ÿ3q$zÝp Æ¥†·f^yYñ÷-`š ¿:ëBDJ´VÄüXØ'ÍìuÚëjñívî0 þ›‚ ›éÒÈîʆµÔZªÐ³5Κm͉€ýÁžæàRC"’aÁTnœí;V"XÆ·®˜YLW?|e?½è}÷öÖ1¤o/4Q‚YuUÑ•t QŸ×2ðÀÞOñAçñì&GÙÀÎøf ç%9¯0Y`ï2o]O[Ûg‰¢nà—ÍHгsj¸Âöj?‰ô)ËBÆ#`÷'©,¤{ÑOIøWÏ‹$wËÛ,BRttI9V˜pÄ–œ©,ºÕE²Ð¤WÔlr}`íï3#‘"èÍ‹1@ßlå}òõšvŸqAÿ'§‡úlûl#õávR®g›ÄeJx‡+YùÑëü.‡ a/0©’ø»x_ u²PN~â¼^©ƒÍ•â'ždsˆv8_ì6µ@HDàùßÞz8†´'isü§W1#0ÿå,FIø½Æ¬^§½Ô¡áá¿·GsX|øð+W2–Ùf{©EK«Œ€ËæO­³Ë¾º×ýIwAqñø”# G2鼨fÃÖ•ƒSxm ½½sóòV¶2Dß\-£Bܶ L*™‘ ð»ŽFç=fƒßÏdÒ¸Ñ÷¦J?+²óêvÑAƒEÒÆ†ñöò`Þª5=Èãb7/]·ÒðùýÃC¥õ<ç@ ÇËLŸÛB¹›/¸L†ë]‘I<ŽT‚÷Ç¢q † ¥$ONN«ëõÏ’’’=ýýf™ÞÁ5–Óä||„z^'A.î""°SUW¦Áâêò:©òQ¢–Ïóòâ7L zz 9äZ†@\æ‚€Ö€ƒÔÚ,†«•ÌÕ\ŸËÛ_ìªXÍ×–Nºá¹B=$ÙœñY€j¿7ÔM€ðIM%§¨¸Ø9¡íø÷ËŠššÎåÇK.ȯ/L­ˆZZZølð¬É2Z6Ë­Þêõvd`¤Ï®r?ûKFA!Úäu¸Ð€Çbøl_Óšœ\dË 0âR›÷–\λÊ3óóäð6òæìoh-y¶Æ]$¿Zeeåöb—ÇÕaäÌÌŒœo;¥Qú = ÐEÀ ¥ddd¼gL:–Sú€e®ý ½ÛphXB¼â÷áÍßâ ˜†A9qÐÌ÷UgŠÈ=›ÒAÀŒêœµ¬ÛhQQQ[æG•%%_xyyU Ö;nÉ¥® (þcþÓ Àóþð5ç°±~ýö 6^*Ïs)›ˆ(°DQ _†ëâ©TK5óÆâú7ihiGk¯_ÖµÌYIßÉâ³iÂBihhü”ß>‡`aaýcLÜÛÙ CÓ¬ù„:ˆC臸PØÀyB‚ª‚ÂH‹çš‘¯ÎÇ­Š³ÂÑ_É“NôððÐmñÀ&‹ûúõxØ÷3úhgÇÞÁ° QÄ·f£î¨ÕîËímóûM—«Ãųãã‚¢" ÷/ðå¸xdº³< ÷(++ËÈÈX[[›šþí¥¶üô íììì¡4Š×ɉ‰WuË]þð{œoƒDr­¯¢¢ö¤)ú5O@´±™Ù40xuvNNOoml¬´ÿÏ4eÆ3„C½¼¼¼~ý–Žî䮫¯¿¿´¤$X › ßÂÊ*-6v}o¤J´Ÿ55 tt„xxˆñññ,xÈFFFü7ÁÁÁДÕÝ==5EEI¹zÆo¿&¦¯OJLauìá°O„óJ¨bSîOd ÞÝÛFµ^¨ÿÈÍÊÍ­Ž¦¡®Šz{}Móö-ô´³³ó*…Z¹®I¥úí?/zœ—Bo0 é3cac»ó/íŒÿˆMdss3!!A4/-<,Ì R=%%>§ª “Œ°~‚HU 0´·ôôNNN¹ 4ˆYÒ‰ŒAÁÁrüɽÆðððK Ž™fÂÂ~éééß¾}ûðíóôË´ZZ>pÜë?ç;ãz­^ahcããïŸa~¦Ðkvó—·´° E ‚¨èç¨(”Ìa[SÖdĬ­áLTìÂÂÂ0T”¥¶šêêgŽæ668b($ šš)À}·†·Ö êlVTàQ©*+(|ÍË3ñõm[u>Y댉‰¾ÀfU[Ë)XPXè~¼òî^ésÇjuMÍjò¸ùš+gÁüÇÏlf³’22VVV^÷×ö229З‘¶¶¶’fê œœNTÄ—/–`ûéFo–hH½ëòÁÁÁúúzê?/ðæyÌk³rGÔkžŸ ºœ/‚Ÿ€ßÝmÄÊKb“MŒŽf}ÿþkÓa||]dqq1 Œùþ¸Õ Ù¦÷eoo¯çÝl•™ïÝü²\:/å·ËÎ/¸ïˆa ìöãÓ™Z¯ ï.^£t···wtÀ‘MLNbc`œ>Þ!<{¶‚ûµÞ¤?Áz±±æÇÇâòV‚OÁKKK Y@6EgggWc€N!묩Ið¹ïõÈÒÒiðµgƒoGÛ;Ÿ6P|…„­ÜI—»º¼¬­­]úi"mhH/USYys³•imeõ¬üa·¸\QIITD8RII‰ãº”h&0é saÜ#<Ï ½Q]X\.Ec‹¸ToßÑÓƒ(Ä~¾PkM¸ÄR[UÕA(žkw¾= \<4q–ª>@„444üÔHKó[YE¥³³³¦®®®¦†’š:öPš1±ß´ê%RZzzØIZÀ.eDtttQQQb"NSRæ¦õ|#£ËÕ+fþH46ò’’êÏþ4r•l´!BÉnQ’2ˆÏ™¨†DoÖfÛ¥fàRèéõðݺ¤"\ÈÏ€Ýç~%ß=`Hé¶5[j¦¦¦ÖÖ ³«Ð:× ØSÞØòÄ]#Sf×Ô¨ØISùízCãÉÝÝÝáBÙ@¼³°¯ÏûÕÓõºˆÞ2fØ@¬”ÊèèÍËÄù±EÙy­þ°Uh¬”Ò)ìa y1.¯££­‰q×Ó»,ÒW¯â—}æóŠŠh oš©ŸH‚D>*f740Ÿk³›Eµæš¢¼-J4¾öÆgd;ëÚìWÁBZ;¹F${AÔÒÕѱÉDÒ07‡ƒòÎ+-2ÿ×ú+<‚OžŒççÕ# 1+¿ Þ]| >nÇa¢öÒ~çÏkÔµñûw©rQ “’ë>wzºN°¯0i –Xž"-VßX^•78^©Ù¯Ä»Ðç“tGˆ­‚ô?Êe¢TV³»ÎæãmÄe¼÷43+ïd5ñ}òËÈèJáÀ±œÖ”KÎf<ÿã·oÉO¼<ŹÛ‹ûAË“Š†›;)/ïFŠÖ?"âghhæµW%ß‹ ‰ò@f<øÄ?~OW}‘ŸL9Á·á :hÁYžKÇ­ÊãSMcãÜÒï¤.Bíh¿#"¨ñetaõñZN Êg«.¨eðî© " Ð*ÜæØGÖ> EJ<òÕùÊd‡è=^”’â 'ç÷óTl‡ F†…mÁÃóˆLI¥ù«¨(<•Ó›êà™àÍŸ™^‹¨¥B¬¾ÀHÔrÏ~‹3ù÷–•í2¥J—Ãü lÅçZæöä݈Œq}·¬Î^M‹u~Ò=>1oRáÄŒU ërÖKä{2®+Õ¡Ÿ`±Ÿ¨#`'{ÌOS8^šÄ~VëŠt FAzn=»vÞM’¶Ùª¢ÌÞC…ÀŒ§\®mi{¤[õ÷NÏ·”χ߯SóÛ×ãLê‰WÈÇWG®DÙÉo°Aó³²dò ”ûn/2ƒƒy3øpym—&âé0‡2Z¨«Øý˜ƒ@jÇH‡C;š­J´±y?7ßtv xo÷V¤gBYMÃÝP²7gXíå+¢SÉÊ1fƒ€€¨¨¹Î/ñ..$:Ý ãÂ0-ô¼N ´Íž_"¨ªf ÙÃæ¢À9ì.þpü+F¯…3>w«¹!O-·`\5o’‰‘9<Üß4¸zñ#_wzüåKT¡öÍSãÌI7xWËžœ€€¢•zi霸8gŒû5ÿsíVmì×iÖ6‚Î-VöU‡ííÑo-žgÓe5üvú‘)]:B†[Z”&'âXÙÎ/8BåÌ´ŸQÀÁÝ/6±±JutµÝt…m;-iJK‡D˲ÜÛ‹ˆh[ÁÝ.úî±)îÊÅECS\_OÅ8tÖÏ$DΛþqÍî6 à§”qg×77†X!‡¬šǃ¹ÜÔL3³;>î$ôô¡í‡:ôÅç‘æø~ÔëhG;ãœòÃÆ#7gYG¿ˆž&ît^½ª¹:ô}l¦xû©f&µº}¦=™­ýpÁý§Í"‹¨h)è‡ù§"Œô¨7«‘ÛÏ_"+)N½£Ð$øîæôèõüKüúоËunº ÿ¶ÓT‚QEñßÍžQÄ ³õ,ãýýo)Mù4ÉØªhq™lòG ††ìÞWo´W&Bø‰…È×~¤¥-·>L™<ÜʇɽßýŽÎ@9â˜Àòcx˜é¡/¡°pO[glÂù×M…˾GÇ'<·wGDBX¬¶0£;=(ìÙy0Ci&?òƒÒ‹²³“â7Íô™MCa"Í_€lÜñâLš‹Ã$÷‡m»…¶Ðàk‚Ño°fÜî§ ‰jᥠßíuÁ÷p“t:xÁâïõP^ÞvoÅæ¾!7g' üZV6—Ì–º2úÚè™ÙâIJ±ÏÚþ¬ï{‰ÆÛkuôô¨|¼•£%o*ŠœˆÜåBòׯ‘rórr<;‚Ïï®Çǹ¾Þ~Aƒ‹Üf 0*Wfçl==•rhä¢ë·½´Èq %&*Ðíõ¼>nÝ vPMâ/ñ üŽ.€4Ró­bm7ñŸÍi(ÍàÝNÔköì÷0EjߢHž»©oNÝggíà¯k%ÎàAkdÜŽ ÈȆ†>Qa °ã,ç=ï†5`ëµuÍ·O¤ß®¯ t÷â¢æ¾¯G4u}Í ‰Ü&k¯t-a7].¤ª4î°?ãq}ñìÅmäwî •ºº´ÚŒL|ó¾]ÈDÙãîÓÂn#5-¾Ow³áØ•G-ïÛì ØâÊØ¡Zr”j<œ©nÞÍÍå{I0Úá·K™ó^úþ~LGgíáà Ÿhn>˜ÂŒÖöñqV:Þ[V0ÇèÛj/ çÕßÏÙØØ¬­VVV––t½øéè,çª-½²°°¸þ /ú¥slrÒ„/++«¥¥E† “,·¸øn£³1 ([@šïo€Ê:J\\1 ðhlllÀîìíOºI|Krsÿ³úÞŸ¼÷Hþâøæ>..H낯óÑ÷fÃD¥hÞ•/ +Õ 9­~­756‚-6… íuú hÚkB烹‹ñüø„¤„±åå6ï;ð=üçvÃÊgG^äë‡,Ü*o†S¯»Šc©åÃ#B)CÑ3**+ ËÊZ}ŸZƒ‚:/毎–mŒÎ¶Gsó»W’E³°µ~Ϩ^¡Äýõ÷ÌL’÷Ó\°•0p9-­ù9èK¼Ylr}Éd_àÈÜá¡ ?)˜­ÞÞççç%%ô^_Ûõ¯oo998LÌÌ,ÍÍbH®ôÄP©3–' ¨{¢ž Ñßtüæ[C\§‡[gYÙÁÇG䎟UUfƒ)[g,È_ÂÜ­ÍÍ JJÒ„|}ìì˜å©©`RË9¹¸ á8­ü‚A@éŽ&|V>•“…å$’Ð2pÞéÍ¿œÈX“Ø]ÍàÚ\¹Ò3œÔúøÑ_Ðæù‘‘‘?rþÄ ið}zTˆéêêºÖ72¢6ð*––á].é«JnÆDB[CC‡§Goäm½ §ÂÆÆÆââ/Ã[ÐóÜt1ÏL‡ÒÜÁÚ‘¥¥¤‚Ëuc&q›H‰£{^ìª w>ÝŸÐÜSRQQYqf¶º¤„…½”oŸ{‘””˜ûê8¯AAA¢yoH©'¥ ½ÎÃ*V;ŽéZµÛvâM—ÃXùA"*¾öùú}â1?ð­ -ÒP¬\2NHGÓ¨‚׿æç }I€Û¨–¨“¹MÌ×¥§¥á0hnìíѥŀ•’’úäm‡ÚÑJ ä²%`ìyyA\#žž¿WWWØ:;;SQQyÓE”*èݘ úá¢Ï)©Ë™“«kH`àö?¯ uzþ±ÅEqñÍ“õnC8MMÍRéDFl9A%¥ñ_¿HyxffS´‚®ÿâÅ 6³!eUUN.®î¦ Žf2òb¡‰fä—ÈÈÊŠŠ¿¯ ÚòòÃSJONL477ß ·SˆŠŠ8¥’MÁÂÛ™ž¾êФüo.l\äúf(Càî|GÉ«1?^ȶ=˜û žšËþÌêÎmUgo«ÇûµÅãfZ„¶§±Æá†êjö7orkjjÜçk­›cÄ×ÀèI„|Òþnm½wb|FqwHFª¨9Ùäyezƒ‰ -H´°8Xj!$Á]XáÅeÔþº¾¿Ïÿ›g Áô´ëÉZçØ@ܳžVÏžÞü¸)¥zU?ÂGSSRJZ„ýÝ߈<àÁZ¾\·å›²`®Ä墨'¥—(Úÿ(s @Ö“’™îæ½t‡ÐZXYÅ­,€$jpE*åî~“-þ%ðý£r ŽåTI{[/ÌÒ+xxxòT¯‰É¡?šÕæ1=T~zÐÜJ#î¿ox÷ føí<^“uê­ðñÿÏëüŸ0úêjÐÿúú 3ë¿»ÿŸ™‹í¿®ÿüßtÿ?+ôÊÏ?÷ÿ?ûÞ¼ÿ¿ºÿÑUkzáøhLü96º‚X'Ž–UúHžøGÚ·Sà£ò~×71ïR?¿‚7µú↶ßgg*ý‚ÉÅ•‹ª[ŽHîgFö«šÒ†Ï6^4±9%YówáÁ‘¢‰„"+®ðBDÉ¿e‹£w¬_0ð¡_ôÐKƒ?häUqõ(~6$‚^¿úâéÈÐëQ‚Ð ŒŒà Ë:HÅŠ>’‹r_€ ]Ñ eƒK$·ï .Ä4Õ÷. 9ioªt÷øú¨íiÈ1°çÙ.…(´ùdñ0dhOŒq(YÁĸh7ÄLA«ÆQà„¤³ËæÞ°° kÕZÁO§¢‘/ÒıZÿ|¡¢=šó^ÍmyaAZ PÇáÏÓƒëjjiæÆßRá44ˆ€Ht.ýØ“EŒáí'sZNÑ—‰Ò|üôéSÐÕÅù¹˜º:§ÕŒP "²²¯†††0"Ê*¾zŸo£7ºéî{7.¢Yˆ‚¡Xˆ§’—éµE…aRÿîëC¼ gh>s¸ûp±‰ÅtO&ƒÿêp‘nJ ãõëÀÀ¡·zó¹ì ËÉE™ßM«A‹ìéèè´$Ï}\\8ùùù¡U7„\(ÄÄÄ=½½íÂ0a FÝQâÚÚÚÉw°î±°s³³íþ<Ä:‰Ïz¿-Óa^§Žª÷ß¿_½ Œm›+‚ƒ’ò9’‚ŠJt¨`¨ k@ ¦rutv>·]jö¯«ãòòòB#&FAEEµZjÆÿ!ŸÉè’V^Îôx½ŽZ__¿r±7Ííq^`>_e6¼rp Èát™Nö*‰`Dh(b}SSÇàà+tttn‡Ðí¥rïäå˼a~ÍÎↅÍåNÛ#Y"[Zš &“À¿»÷g«ìAr5¬„G@È‘ÏÄ.j«Õ± =Ï îÁ~ÿþ=»å2àÙЂXXX»›Szõ HŠ#@¥¦ñ8†qˆtë´ùèT[÷ÅÑ‚qvúÁÀ},Êã©+’ÐÎÉ)Oddä•ííPB.›8<5»Ýw**Ø^‚$?äÒgxB«uÆÀpxjèhgç×ÐÀ³;Q¨T2äeRJŠjÁãœKË ²±R‡Î_¿„Ï«bbÐ}‘! #¸-zÇ[cQ`„±Û5@ÁAüº×±y©hi ÕžG´ÌT!qÇÅÅÅþi¢`“úðt¤y°Mÿá­Ÿ‡[•"½¥r.2±ÛL|r5CCC1¡÷ââïÔÔpyyyC##±[ž)sˆÃha¼õO‘×ÒjRh¨¬¬ Š*Þn}÷îÝLµfZZZ…ÃfŸ”wAŽ«{%-mü=ÑßÕŽíÙ*³ø½Ä+¨þã;;aÛÛæb¿+ˆ† tŽd‰®þýœ”„÷§³³½¿¿xÆÞÆÆZórwu´º»N&§5ýýÝç•Ãè™õ?]]¿[Fìñññ7ûñ:s…º.»ù(íì§·ÙÕõý_J îÕ–Z¾‚­Z`óýò_&9Ÿ’\M"’ ›N•”‚DZpz:„T@€èlk8$8þõë×Çç;ã"ݯH_÷'0ˆššRÁ¿"xæéyç°—ÂïÎ Øäq?S¤‡02Öwá—?œµuäÃÝ•(p¿ ïØØXt\ÜÏK¨6 êCED¤á [c¤«Í>5zØ+o;¾ØSû8.'>QûU®ó"*z¦sÛú¸¸`< 5¸kÖZ½ÐÑÑ;9±'0é1ÚØ0Æ’ŽÔ5ë¥\Þµ‰¾@-—¶:ô†«ýY¶ú†2|IIÉãÓÓ·öSšäÄNÀ8ÂRBRYM€4d±{SPPðÝõh)‰×¹È¼)/2d4žž›¯Xµô­sSaa¡r׫ž¿T=ŒŸ4ÉÓŠÂò)EŒÑÁAY&ªÅþdbÇ%%…2hÕ*Gd[b£÷ÒîiâêÜ’w£‰äb(Ó?ßí\z‰„´V2þIò$Ž ºÞ Ë¾_ié?EP˾OD½½½æN$E0©dh®Rx©E>\(‹~xôÇ—–«íQ §£¥ôÏæRQ?Ø322_¾ì~Ehw¼ò® °°}vV#`T…QТÀ 8÷f«žÒ–b!±”q¨6 ×{ ÆóeSáØA¡™‡‡â·¿oåææ¦>ãqÙ¼Ð'6?08ˆN@€ÄÇÇ÷ñì7诒’þ@‹™W¶/6¹ $±$ù«Vâž]YÙ,®¨ª‚ÞÄ¨ÓøÆ£­úšJ.M>ãçÐ&p~è& ž«kjX\µƒƒ§¶/Š =~ÿþ ]r™“Z޾6t`‹ýš˜º†Fûä$öììl¶ƒôLáJËÃÕUÿR­ºðËþÀ  çK­ÞZ%È‚™Ñ@)bNMMu… ‘û@ãj}oï‹Ðã5##£}æäµ!¨ääÐ%<ìEÅÄžE½æ!ç=¼>Y‡V02ê6#B¸w±ÎÏÏ!¯BÇ B~uw#¬®®ÿÚ ºb#R7dc°jíÄ_é/LO3'qÎŒ ?á±›-Xà B™Ã£åSQtD•bUè½\>·;ÔÀ±‹Æ——IR¹lƒ¿|y¹ÔìĪâ:]Á6 ³>äp©å¥¿0„Ô–A@@ úÓdÑL%ðê_{ÓåÐÛ·€mÖŃ0TEBÝ@2Þjv?)Ñ`Ã#$4ZýTïóÀ Yù÷°«¾MØüù3˜Ôn MØwLL`Aþ#œ¿} ÷•k8¼¨è-<2t!ˆÑ»ÍN5…;,ãu:¯3’çå¾ÿçÏ¢‘ºå)Eݵ¢¢¢FÆÆ22ˆÇÆÆ¬]œè•ÍTBn|¯]1jìn‘‰x«ÿôðÁºÊæ’ú㯉r=á¥í¼ìMevxHvMD¸b®žÉå+ QD|#ù²„ÀØYs$êíVakm—Q æÓeéÛ_ëËÕd'á68NJ´êPjRªU g %jªj`aa”ë -48"€¬-^ëü"½P·ý0 óí¤$b!ˆ¤…°°°w a  Fû5Q Ä33x4BB:ÐY))Ê'G·ëc2Ë}ZÒœ¥‚´h!Unøïn°±åÍ×omÐ@´„®]’m-’F§Pæž*‚Z¡ÇR3P YÙ˜ÔT­’?ÌÓoö„T:ÊVtÀãáãgF22:Jk/ÄÀÀð§»û Fñׯh^÷×1¦ìTb"a=D ㉽¿0z{ßW2Q‚€¦&>C##tB—®®®£µßŒ!={¨£u¶z£wÀ¡µ ¢Ègb*GêVH8]ëþQâo]ôµ+Šè H¤oßJëÉê”§”-þ<<<J–üá åVoLë+Àãh“SP¬®­@K ð4œw'^ÀúC|#¬t`Ô®'½½ !ññ AX[[ƒò 555ñÐg£ »£’D™ô'±±aB;ÞÒ"Ñ?Ýèˆþ›©í–Ô6Pê±6å5¢¥¥åýÅ´ÞõíEqbOªå›ÿC&ó¦îû’EoÒ™H2üøp—õã‡Ún+\èÝN€ƒT˜ gˆl&N ‰¥MÓ µ¦™.4ÌÔÛSLLL0»Ÿ'%'ìŒåŸŸ?ƒDp Ñ©–KHÀã#óñ5aô—~ÐABBÚ^n‚Þ€€;çzwyýC!–Jöw¦ïc˜ûÙ_@4:š/0DÞ†€|”†q¥) #†^ÝÎR‹§ùìϼ‚dr^^‚þD&ÜH§Â0¼?yù†ñy–Š -žWä‚‚ÄÅjå n:ÕSdØ¢²ÒÊcPN8ÃÆ†ñJJÀ¾TáûJ‚yx§­ý@q` Å{"²\H^¬ÿC^³ˆt*HûŸdAzçÝ’Bu“”¸ @Õ«L_A™hÎîßšJÃpÇ ; HIQ>CµËÀÿT±˜O`Ä µ==òM“)'+„ÆÅLÜ#=î?Ó78¤R´[wêGëñ³J%«L÷’¾Ý¤w ä¥ÉækÚÍp–Ÿ)Wk/‘_sÝcþ-w±?‹¹Þ"LÚúì;3|nn9Y£ ¯*d{·è[ÓœÉÖß·¤äÙ0ß¾í®Üa‚†Iz¢Iö~ÏpãG¨<ñ‘sÖ ²äJòFD(f¨ß¼‹—ÏØ&ÐyþŠÐ4Ë~ÙÜÂäswlK{2R‘‘¯¦ ÐÈ/̯9ÈâÑH2b©IÖWõïïŽÌœv-÷+j£à_Më´¶ùâ©–ò¾‘aµdõÙ £St{ºz‡pì {.µpè.e碋Ev.ĨlUSñ¼‚\j~Zu¿W·®ðÄ?UTïÙ20Òê­ôB\q Ê&(¨C¢éÔ2:†Xl–¼‚<.þ<µ'%%«ßÛ팱EN¿Ú›ŽöÏ7½ÀÌéû,ô–êè‹wŸîXZÂÚ›Š”g¤&#{îãm¿Ñãíuý5P.™ÅBÑV]Ã;Úãâ­1 ÃPòA«Û’¹lôšÏ…¤·wy¤ÎÖR&e‚‡(«¤„¦Öãþ¡£Â0ˆdwZ­£Öºv{zXÌÊD-¡ú ë ’PzåçdɲH…žãëÏë®ÞX24¤ <Þs>h#¦¦¥íë'^óåæCSX˜Ìíʈ‚²ØQeÆÂÌ9՞IJÜ1T†‹ŒL^SˆE¯wb9­«¼Wø™[R‹nC T³ò7®Z·¼ÐEGy[T`JŠC|¿´ìàïǬìeûþ„H/ù™¹ËÀ(9o 9ÄÂq=_5åiŒë=¯¼¼I@þüñT;„×CqUéóÀcn1Ùqyà²=þ#^}¯à­…Œñi:/v€J±\¶$¦ìþÏ‹eïz¬g™D$ ×`Wl*ÙÝÈÕ¾w’a¦?HÅpÀ€>•Ö×§_І c_4HÜÊ‹‰{w}£¤¶ñ “þ)8žî½°ŽŽ8¹³J;5+È!wØ/q‰;?#ĨWè#â0¾FïÜ¥~}óð…EBaD‹ÝF›djJ@ßÖ‰‚šEL1KÊøC©â9œôûÄô M†ktͧå(4O3ß?ÞiàpT¹9ÌÉ^¨ÄWS³ /Õ,Ô1¡r^罇ss›ùÂ1{}ÍägÈÊQÛ9Õßbšv"¾ÚTeÊôÀ¯üPk­îŒ›_ß v*‘¥ ýY´¯{C"øÆ ƒ„ß ï‚#½Î'lì´ß’8É^åzÝF÷¡á·–c¹K† Bm½' ^´[ï‘wiŒ& Ê ñ’!Ù©‰K–»KCæ@G¹IxÿùkþŽ1C(ºôD.Ý« Þ`<ÿ%3ëÈ=˜#•9þöJQ4¤Œ!¤|©ÑOwmg3MW(ô |F{ª|ææa-÷ž;¿üI›=.Щ¨dõƉ0©’²?æ4–G£)ÚC™¢bÅúáÍ™ü÷Ü\ÈË/Q•;s:¬::ÖW6œ^3éþ1œ*ñW¯µªÿ“yú¹„’õnù×è âÄD\¥Ù°²Ó¡Mec†`d×jG;·÷-ÉÆ_$f«Wè€Þ}ž ËkPéY›Þçº+±÷¾è–xlïˆÆ¶^®nbûYÏ3ó{sóE‡„IÆ·5sÄÀø gŽWê·\h8#x‰ƒì;ÎFU¦¡ÑPïrTЦK•‚ÇWKH%i:XýF•‰,—0“¾¡¿ë»“k²TrûA8 NŸø3™„ G³Üî8a¾à¢vìÏþe½z¥“€‰¿Òˆeæçw¾ý–wôÒïã¨ÉÉÑ»£…£‡á¼n¾ù†Ý1×ÈÜIÙrˆPäà ô$uÛúaoltLBBçÍÉì¬×þ‚;Ñááôhž4[}}Ä{i–ü(ö_/ĨôÌͱþœÀg2ý*Ó‰µ,q,&ýÓâydwmÇ̨ãäì¬A0ù\éÇ¥xÊdæU0šâkJV1ª ×Z~7fD&=±½©ÆŠš¾&Ý‘©²n m22èä°°è­n°c9þEØ—seb C†x=¤ø½Œ&#]ÁÆ¡Ç ÿ<¹}”Ÿëœñ§á ÙTÐô'l¢Ç¢üü€ÅŸ#eQå¦)`OoßsóéµgÀ0³YFZÏïÿi „ÁÝ Aââ¸8² H磶ÿ‰g惰ªôC„m„W>0è9±]1 Ÿß;ãdÜ>÷d†Fy¶"?ÊX“”´PoñÀÚ?ÝüÛña è5³Q×»‚âbý§ÇÌ‘üW\DgÓî¼^Üxò™_¦NS˜Û±dS9WÞP‰¶ßbÕÀd¢È!îejŠ¢­]fxu˜ÊÌeû¥TË:뵉àiJÄ='XØ9-½ÛÑ'깚š¼dá¬$Á‹jhŽÜrrüKblvÆb§¯¥®åšØ(~g³ˆÔ=–Gý5##RÏ—ˆöRÃ8/ˆŠÇ× ZŒ¿ÇÏà¡ IØmŸÁW=4Þ£&¼Öú‚;2MC8 ¹Ð>,Ì`4Vw” »ôîõIË÷¼NîÅo¹ù¦ÁŽ@ñú\g ÔÚÔø—•QMHF4S³ÞÈe>"H'\—Æ)°FÂÔ£,ô>HæËPȆÁ¢ÀÄ"i¸éUT§Jì×)ΞçéŠ\gv06+ýV?÷­òë nåõÍ\Ï ¶þÑÒŽbMèvW'j±9¶oÞúfW`R¯m99í™>#L%Æã*#܈²M¢¥]®°_w-øYºŸq¦º·qªä‡R*>©mèåBCˆÝ“Ï3mm*ý¤£”¤±|â¯]ÔIvþøä.;;³ÇW¨£9¨h§0ðð¯ ̦_º¸äù„žÖX2UX%3A‚eSK Fcö¾~R¶–6ökþd9ÑÞþùzƒÃ³¿Ã$ÎòÞÎü §™r'ö],8ô㇄׷­¡ €a\ýëc¹$æ,ÜÛKk†‹Ø?Þ·qÁz¾ag[™¿Æ~¾¬µª,ŒM˜ì£Z£^Ó‡ºÞåÜ=UZ›æ Ë(=úѧ±‘ —¯ôLì%°e ˜Žµ…† Ãèjæøä¿x¾OÌ%Ú;!Î*•Ö© ·W¶ÎÒ Aô,´>   ŒæG_=IR¥Ø„s.ñÊçÖf‰+kú¼Ó[~Ïíûø".Ûä'…¡ˆÈ[À\:âé† €sÔX¾ÏÑmIÑ¢Õ"˜¼\C·%¼c¢Ð÷¤$zÊ`\²s•”Ö–E_\ëõ!ŸæVXè]Ðf9‘#€‚LJ«*sómäsltf%!xFÇgžÎ{CÂJU(µ¶$ч쉔¿‹QɃ£æË/‡ ’|«p=r:ߡкz¾»¿']U+Ü®kntžÔ·˜Åÿ‘š¥Ó”¯¢f1:ªWa†z¸äý% SödÞV•]è=L\Ï=5B۽óéò¶ÀÔy±âÅø½¯E`~N£0ð³ï]\I2®O)á¼ïjvvÆñþñî§zÀG~Ϻó·>µò'’2FÂD¼^§¿YÄ}ZÑ?ðHöcÓý—XN®ûøÞÞt Ô¤?xœKV‘A)ÿÜp¯äõȉ ™úF¹¯EA²Å"ââ/tÀl‰¨ÉmŸ©;ŠpùK]ƒ*ShrÊ÷˜Î›¥ðÈûxr#âæþ\¾¶ß|Q—ÏEF8…ý¼:{;Læ& `iíGæe–ë‘êñiÊ[WÇšžþs¤ÜËïbù844s%[ L.Z´SOw'ßÓk:½¶]úct²f$0¯ŸÚU/&Ó %)B£µÖ˜¯ù¹á.öŠí‰¾‰mÈ»Ý\-»ž¬‰/Åjñ5e8œm$ô Ho([Äɦϩf(€Ì¼•YWá¼Gét¸€Ìȸ>Zo%cHeMSX?]¾Îbð›x{ëW¥‘ãÆ®ô;I©=i./7êd[CŠŸ‘ø" 0Ìö‘×À!#¹Ïýé³+ê"0Ë€âµÀ.éU/²Âív—d¬GŽ»ã,Ñâc\JVR (¤3ÖŽWïê=¹ŽPû_´0ûx1J¸ÆËÖÓ×Tu† Ô”ßábä ð Ím;¢„à§ää,6 rxø;+=15EFVÆÔi‚DFÝĤ‚‚ÏñÛ»òº"÷‚yͳ%Ùhbb bb2íög>ÆNõÞå,½^êèÝáÆÀTª4¤™™Oíob >Ù왘8Pm]Òö”AæJäׯTA{wºiV ôþyŽ„sûF¯7`z0Ó«è<ïÃ""z3¯²¶ •î~ÿn5ÛðÿÒ¯²¿ä ‡PÛ pÐ|®fÚ [ʸèp³?º¢r6(»ãä‚¢>=%ñ7or/ !ƒ.½ws{-#“ò«+ŸJŽ]¼#ع%º‡LÊØøO“kØñ‰{¨Q÷!%%¦÷mu¶¼Þéb õu(«i6«ò&Ìo.“¡QÕK&Î8¡~“¶ê¾‚C^y ”Hqs#ÇÍÇäÞËŠóMîìX$Ù$ .–Lñ‡}%øÕ–Ð_÷Ç¢žV³†Ÿ©dÙP¤m>’+ygtþšráò¸²yÁT^ÈŽNáW]MåÎ@²¡ã]ÃÎð+‰e±ÏûÛþ¡Q*—ž0v@ËY5øîÊcàÓÆµ¡ôÅP´÷ôô‰¿oH©.ˆÊE“~9R -‡Nß4Y¯€”ñŸõÑœ«$îÑ—@Ö­ Vª>41 Ï×½à¶_C"ñõ+דÖûšÀœ!0MÁɉ/%ÅxöêÛaìÙbRÆ&›ks5¸Ü€ÚøûÛê[•|~é1ÙöCQ‰­Òà³P0Áy&¸VsÆ‘‘Ö: ÐÞô'fb{01¿š«ÿ\ëâ=ê Øï QK^þd׫C¾™yOƒ®ˆGõ–¹o{v¹r£ÎP©Ù“Îâ݈?WcîyµÔ>7§TÝ– ‹…åf瘊HW|Ä‘öPʘ;a9Øëï€PO/ºþ ó&ë÷Ÿe:žþ›ýÞdXH•±¯‚Qzœ?8ìE gÌ›\Vb =6ß>âÀK¾çöäÄ:ûKô;…#ge…ù+肪̀Úõ5ÿ¯“uTt ×<ªýRR—}C´ßey»ó§¥ž¾ŒÊ¦ó€’›g²º?«ðš× LjhþCs»²M&?ÝÏ((ë¨)óÖÁñØ„[¿‡Ýü»îgô)Aƒ×'ï§Y¯>ªªþ)Ñ€;Ù+§°¤y{Se6Ì`5c‡’‘Ëâá¤VÖóI„LT…ÐÍs¹ãb)œ’åØJjmër?ª¶•IR^¬èµÌ)f¶)œ³Ž^ß K_™ùå_ÎD|nlDŠ"J„›³C39¤À„ˆÓy¢âU/à[xzDUf¨b^^¬8ŒüHÞðÛK-ϧÉ$ž?'†G6ÿ r³Ýf_•âH†r™(ïÄÄÈ›[Ìúp…YÎÅò¿ýîXÿ^Pà7UêLWíûéÎPúËNÀÜnNsÌåž{Þ-Õ¬…uìMŸTTØI¸p’\ì’јcp íùÆ$%±ìmsê`Äð`n´Æ0ÜÕâ§÷‰››6ÓEªíÙ_MD]޽$Y_W·2¯ >Ííëc,Oýâ¸u˜!«b?šÚÄD|{÷ÓÊLå¬ùì·)µâRÉÅj™FS%m£Í 86˺ÿ¶ÞÈëÉe ûg“£âà¬ÅõØþ[-‘Ñ8ÜÃmò„BõBOO×HÖ<:ÑÃs Tûú·——ŸÖLšÀt,AdµlƒÀV5¥¢E×â™úøÀ_/«¡þçU^T«á·˜˜ÈќŘT:¿¶'Xsó‰UÞ7…ç»*¯áQ—4Wâã°¾ççô_jÑ’bf%‡v–ÔöÈJ#6_½äwªœ¡X+×c³[ûCnDh¨KäËËàÓš5R­îg(û¼}—/ƒÎÕÙ†sßß; Ñë=R”öþ®|÷¹víbÏ-îüÇÊá¢Jup<ž÷}R:…öh¥ÑÒ~[µÿø¯_º»†ŸÖº"ÕihO :™€F™d}TX1è‹›Úž‹Ïp饿¿^VP¢ãç!§dÝÔhŸ½aÕÖ){¡££û ­ËaÚ3ˆÛ1)F*Âúý sAÁþŒM*è^ŸÉvÚ\›šåTšÈhÓ—îõw**/|8ˆ>#Ô­Sq+ö.ÂÌTïˆTž5Ûoö¢PÄÊ“‘=.Ô§' ù2'ÐêPØBwß:ë_x/)ùòÓ'_·Lt7\ôX?„çAÍLHHÎW¾þQ 'rÊÍcù»ÝÞX<>«¬«‚*[ük/²> qnkSRé~58lÏŒB€ú¸ØöÂ,!gDPüäUÍéŽô»¬¬×uUßðH™X6ΞJ+‡Çwéi5³¢·- .N,+LC¶ØÈÑ XôìtBH|÷ÿ8àÞ‚®fP[[«"bŒÝMÇ‚ž/–…?›Ä²lG„‹ü Ýì.#¿x41ÃÊ¡ z:/þ”×WEÊMBÓ!~CŒØèaÜ:@dÇÿ ‹mlLÙžDjTìE“ð/¨¦Š¢ˆÕ‹¥¾j¥U¯?¦Ñ¬›*=^ù`Ú6§ý†*ß`‚†k¡é ö]¯$r&“˜¶6+!YoþúŠÏVµ€Dòÿ¾ñ‘ÙÝmåÄ/OZž”ƒ£¸k"¯ªöq·<ëûw?ÝͱUŒZûuîêOy/BÚN´P¦WÑÈ«hbh×:BÞDà­†»aÿ§7’ž™1~ßZX9“›ÞtÇÞÂdêÝ:+)ôìýÁûÿ9)il‹™ŒãÇöœ'ç"wxîeÏç«/ Õ[n±þ­aÒ7zêêõ¤dd5îHŠÊ«¿ü„ÊÜ.¶Ü¡Ì×é1rùu¯‡™.)«¨ˆ”ë–®l_Ãyyý]™,~*ž$ÊΓü ¿ e~bT$¤fÍIÛÏÒ··¯@fDDµ?Ý0*ë £úH’üÔàvB tx°0)½+F¾WËBý ÈÙ’KŸr±ÒÜ!"dŸD–È2™SRX=.X%Ú|¨¶›°y]ØiuH~—Ú¯7R’¾þû×:«ö)–CêKûçùõ™·HBN;cT.˜pÄÑjkN°´oßB+xß@(ÒfO ¡§IèÉÍÍ%¥§/QÕi¾¾v¢×õÊùƒRtÓÄÁ>¡PWövwJEüáöÓÈTª³364¹Ìš/·x†$%%}Šo§d*WxCíû¹¨ˆ|®vRäîrÎ|YAB"EAy`Ï5æFØ÷ï="Ý…EEÙ®GKa´ÌÌhŸá_½u- ¾AþÑi¶ò'Löø2£×™›Õd4[ÜÎÞ¾ðôÄrJ}mµ£çi°¥Úo u-´¶–óÛ·oo«m]\8ÓÒÒìxróò f* Ž…×»Üö“ÙÌôML({í¤)‡ÎVx[ÃÁØŒÍÌ>³£ñ†–bXL—}NLdtã'ÞTz¥ ¦æ2—ƒC+<JœúÃìììÈȈ_V–• n«6I•™Y¶,¡Í[Õý0i)©p±Øºúzîã¯4n{Cç ¿wGÓö˜Ã¿|‘®92ÁƦÜ_xŽƒ34ós“\µ¼KÉ)—UÐ÷Q{Õ;=- ÍÍlè»d,•z‹ôyv·ç_“Åj«{{t… ýoþé=’`o*üüü²m§59ì2„|‡À?ÆQÞÜÈÜòâèhTºÕK*±}++«¤ÈÈHõ>^ö¤=&C×£Vli÷1xÈÙÉIáH+ÕÉZg‰ýz×ÀŸ?éžµ#mååÌËé( K˪Ç­Ÿ2£œ¶¶¶S%lù¥¥ƒ—óÔ¼‡óu¶û‰z>% Ç££1&¦¦?q4™!2jj‰â LFø„„UwW_úîoØÆ'&Œ#X.wÆ©M--éζ>Ž•W«÷ÁAšì×á-§Jðáè[Ãßš˜ 8 .£¶ßf•ÞÚ::ö»´ õöpÑÄ¿ÿ¦ŠÏÃÂÁìNÒ¹yxž¬=™,ÕÛSdz‡ƒt½+ŸÁßž/›Š†Ÿ<}NDB º×ÀÑnryµÞͤ¬ç£tss¶e`aA zùmÌ¡8ê~È1Uà[Ø_ÊçÂM9÷`ö §À? îyi/cQ™›Ë>U8NðwÃIÛÊDê¥òZXDXØ ÏÛóÂí 轈/_b¶øœo£[NÅ›k99±E°ø +ls­nâð—}ÿy9˜Û±°¸˜ ýñéÆ £ˆJ0G•Lz­=÷îX*ª%›JvZ*Oœ‰.O#˜ø"ˆ1äššîU¯¢ˆš¢-§uíˆP̲³³GŠTèFATkáÎwÿù#vîxwyðòBelzá+W»Ñ»ÊÊÊÎ>†Òh%÷»¥Fç—é|®]9ï£íî.­v'^àããC¯úu¿2¹å¿<\¼ks.scæà`àš:Ý5Ÿ¯µ« ƒƒ–ô‘›¾‹H˜J¬^»ÿLQ±Õž…ùøp‘ot/44Ôð®Ùýl90wuuÕ|î¼Í½Ð­ù›Ží\µE–Ãr«·Öv}ø¡çß|™dÖ纺ºÇ——±T²H"“^pP§ïÿ¾]wèw"X˜»ìžŒ˜ˆML61Œ0 e¡Wã­­­›½ïp„wÚN•/¸Ý}u¶U3Ùµ¿ “)Ø¢iò¡ÃÝîæ°çÃmåʉÛõÕ£vÈï0è“ïoÜî.È)(*½nN ï2…HÊõںζ†¡Å%3óó‰Z‡/0¡•I+‹M®nW‡D¯‰ˆ^%~û¦xØÁÂÍÃÓ>:ŠÎËË‹ˆŠŠûàz¹¯A, ùw8‡=¯SS—_;xL-‡¤4Irð+Ÿ¡¡ˆ£{›ý‰j…ir•ŠÆ•Ñ ª wz¸î-e³ïó‹.”7®â˜èè¾ ¦ó%B0-++ b¦Cl~qaa`ZÖ{A nTI¦ÖÝ%êµC ¥‘ÉâáäŒ%—=Õz±¾r‹1’ä’úZóQrhä‹w ¥ñtìH)(ñ¾»d¡  €nø;œ©g'3êq¾ŒÌÊÜÙÝeÕÑYɱ´²¶ÖXÞyIk±|}í6ºšýôŠS†q(çI§¦*¿x?žx¼ËÓkrŠ2T2‹§_&2÷a2âC ÓâsåÅôoXãylJtš\öOֻ驨‚"‹ÔÐЫÆc ‡-•²W¦Ì("V[rÿ â~"éHÞgÄfúZ_Àó±}l¼êê{ÙBrG`ÜËÕ„ѽãc;S++íz R¦­v¼«Ê—'å& Z..\:Õ¿ÖVÁóósh™`IÉSð+è}&`ŽdSØý32ˆqèÕIç†ÖO 5+Õãð`ê² ÓÎø09,ÆrÕÇmlè5`utt [·†Òé®F³DCFšÝ···õN ˜ÚíM1VŒí¼;ñ.•ÓÚîdMâWYÉâ×lyõøà‰$r³•¹=’·;Uú¥L§im¶*ÛI·é§eÌ=Í%ïNЋÇ{÷jÛebЋ$.[Ý,K¥¹šƒœø¦¯Ó‡­N;ŠN{S¯nooí\\$„…j ¥}á¼7%žÎël|Ëþ–nêô±l¡Ùs0• 7ݳýZŠ|ðê´+rýkJJõ<£=‘T$Òïû›3À° OÆ¥×kM«Jv(Õ-´z{'ë>ž/ku¼ÒNÏÊúí9B@R6yyùÑK=߇øWxÌ~-îgÁÐÐ÷Ð…[âtNû™è98â–ZR9¬f*þª°c¼Š$äúùøpW5]®WUg»üZ«‘L «œ1–îîó‘ï¿·º’ÎcF§§Íš\Lííí­"ÈèééU—®\@+CØ89Mq™tÁ¦} ÌK€Ûd{#jMÑX´•Å{“+-y?÷{EÀÚâq.à~x±=ú¹T«N®º´ÚòãÒƒž‚Æ„˜–ÇšSƒv<£ý_þpû#Y¢¬¾ÄâñØ–î'êêêù«ª««‘b ‡Zèw¨Y#X\ög¼MÍ·ÿè¶FÄ› | –â‘”–6ðd˜’’Ís÷gÃô<<Õ‹ííï Âã›ÓŒº5ç”ĺ@Zð¼”9çåæN‚µž76Wn~üø1¢²™e_üiGÀÿþ¶ V«/D},¥¯ñOÛåV–,…ž±±1±y¤ #·³óu/‰<3b`&‡p(T X´–ÅË»—!¤Te{8ª*_é–…‰IÐ`ýŒ¡p­ø˜³¤@g®óM9Y,økö›„ž‚ÂÂ0Þó81•š® è1888>*ÀúWøJù }\“’¢YyÚ'mŒôØ‘X‹ªÝU”І€€_\ ]æzPDTTÚ#hõ%OD¥È²âËÿ>²Æ}M嬹Œ˜˜Û‚Œšq®O¸ÊK¨ˆˆús5F Bg9‚¥kl|<9//o ³xå®ñL±Z9Ù3‰ÃÎy3Ù’hIMª?äs’ýý1ÏÎ<ßœ4¾ ÂÀW$Ê[š<¤Èùñ#•D0TW¯Í‡$ŽìéÍH&Þ^y÷·¬Tm4DºDaaaÐõÊ Œ U€2)ì…4«Íý“9ð¾­þãMÇÆCª7­¢ºåñ‡N*êÇOGÕžß- •90û²'Ý$[_S4›™ "ß:F÷ý~ —›”3Þ?8XÐÒÓóßëÍñï@;ÈVbót|µÍü›‘½ËM®¶ñý ”J?ä:—}Ÿ"ŸAqGA‘3ryÏr 2K7(ú@¿&%…€h+*œúè˜8ÿ3Ÿ§ §-͆ˆˆÏDêuWy±~“DW&ú•QœdTù2Æ×Ô”J«Bf|rÒ$’€Ã°ÊlØZáx¯…·\­Ãr“¯1¶wúÁr|,O:Q䢢·{ÐeÙ}˜Ÿwo¿|ûwuµ}®ÖºbrRãêpQCAA!LVZåA'þ¼‘lªúM±£ÀHv|f•È•ƒ,Ã&ŸÓvÆ€Ëýs Ìh“:y©&ß\âä±8.*½…\Ž˜籄žž~mÔSâˆ^¹Žô0ŠËõhƾ>¿¼}–äp~‹õöŸ9,§"žÃÃÿLK{}¹WÞN哯a™P ¯`no,勒’’Õþï —A}´š6£™ZÕæíf©ãà~5·´hT™&8if½|2&pÅ&±wæ2‚1ÏÜÊ76ù?ì`a¹]·=U†sd¨7½úõi¶Öšz/£Nã¯ÎÎ瀟ԻꈎÌ ¡’My|¿Ù÷‰¸?‘©»D£ê­Š<ô©ä¤‚‚Ä šÕ4Îm€Q6{\ edd¨7»ÙOÊËÀ÷h“W¹hBk¦AÇ·§J «kj*Á7eä¬eÍw}ííþÛoåt‡à¾–ª[jn WTí9ïÉQ0Dò>JAÁë÷ÐÊÅîdÀÐJÇ-9<è3£f@‡¡O"'-§(&õËϧʗÏÔ5%©Ü…®s&Z.½±a6AÆWòý'Èô!¢!(öDð1l›‹jž—û…íæEÿz䆊O“ˆÚÍ×X66Ó5”Ó«žW‡Él0¦‘?-çkKÍ3‡ÚÞÙÁæ•“•}Á¢ ¢­¬¬Ì|4û¹Œ,ôÊWt¥ÎÝ^KÉB^oooH< >ý—'ädb(“ß(;ÔýéòÙäMÓÌ©.„EB¹ôv©Õ›nމ‡ÿéþ Õ_·AÉ È'ˆ°ŒŒLÍZ‰¬hm Y >‡‰”Þöǯ˃Ä” ,}[Ûhh++`Äzb(*ºQ &òéYÝ€Ö  Jå²e¬BqOV~MóO#y%%¡yÒ!ÓWèºÍ¡›¼¯O…ŠUKEÎþBkÏwÆ4•˜iõæƒèO—é@ëô""#+m—ï®–³×¡º#žN-ŒÓJ½ps~nNš¦Ð>ù(©YS:zC Óî»ûŠèš›m ú¾_–-’˜kÓÎeгƒÙ9;3Ô–‰gá¿Láq4ÍÊÍÕoxî{yrB[õxªÛŸªˆ™ RÝ„ñkE:>¾&‰]IYÙR•éæü²âÒRëÈ Šè±1e…6¹š>4D7å¸#¡ìöövèr¡fgnü%Ú<°˜TûïF´’’kþÒãˆÔ+”XHŠŠÂlü—§0·¨ .lj´ÞÞÈÜÜüC5ŠÅÎÞ\•™|‰®áfÿ·zJ~ß²ÈíN$’دߣ¨å¾&k\„Ôf R¼É}!è]¤´Éjüîh©ÅÀȨþú]›ÕLõNó‚ïUn¡oÞÄÄÄH«·'£aa““Ó÷œœg<‡ÎžÄî(¢u^äB¨œ{C)þ{Ú•:.®ï'1>þK†À4܇ŽýÙ~C±­·“©ßN_Í×éµûÃùLلɦZa{K~‹sÞ“0Ú9¨w;±ˆ÷5 ì!ßÝ—}ý%ò!\é‡H…~ûW$JH…§+¤ÕgÐïÛ7òßëÅÚuùù¼Så$Ÿ¿àâ’ ~F°íìŠÜŠI,wHÎu:˜çê,ø¨Si1þ|ã/R=JÈWÑ0d2‡Á'gf«:¤ƒÌ¸¸¨t>[aR4è™2~þ²9h}žïSz•)VsËÑﯗ°°oØR-¬ë ;£CÃnÂ×»IìˆÈ8‚1ðE6”½¼¼¼ˆ ÛÈTËÔŸ’Jµ˜ÂZ_!gªÙ*–yII!%±ä.hø.FêÛ*]­­¿¿ÉàmÉç°Ì‡žÊ¶³oØuž SU  ýçtf$ÁdP¤l4Ò zL¨Qw@ûÖÓ4=:æÙsž5K¤±ÉÉÀ¦&¹´¤/==òÛ˾˜ügôõjsE¥*»mæé,4E sbÐKSS”¨× ÑUðÂây†O¾wÈXXX¤h÷‰Á‘–(³½ïò #‡J8Êt´`å‡ gjX¡•Zµ3ßµ¸(*§”-,§;âh½+,§_É$!|úÔ·I¢üùp¹M¯8˜ú[·»j4ZƒãñŠÎýI·¿O3 ƒë^f—ý!Ã#àÎnn3jõѲ*Ð2B•b¹µËƒihé…ÏÝ`‘Kì%U~û„“ÀTIåŸó‡z”÷FF*æ,cæ¤%%_pÙ.‰µùYH#ưE° ãUàçç3T:[Þ`²v¯G—¹ãxù¬Rcc‹zf´Ù‡þ Imc®W½ò7jr2zͧ7€ì¤zr”h8à2 ŠÛ—cû¼}JŸ-ÈØ“ìçg'&æõ;ÿ®ú©ÁÑÀí–½QÒÐ rÂDzóž¯(ˆˆêQöëF›RBDM˜åzjÞ×®Ö\¾úÐ #à$ÀI0 ·|8tÍßß^Z¿ÂŒ¥Úýo<™C$Ôã>hk³Ú,¸KW{9üøàúE:XAÝ㥣—×Û±qKΘëC>ï4&È|ÝüêD!Úù^Ý‹­a¡ÂQ¼öû!RìÖÖhèÍ€aYbÁh<=Þ쟔qqpˆúYà¹ê,! ¦zX]xKÍ…7TÄÏŸ[Yy’êó hv´¯Úʤ7â²°èYòãhLV[ÀÍÌn ÄÓî|Es†Ž6`wm{ô.‰9K-ˆê×ú‰ÛLí  Üh[Û ®GÛUEJJñ‚BZ ¦¶Uûo=– õ‚ ‹«[\¨OwøpðVÁUg&Ÿ ¿?¼²ÞmœÆ“´§€ƒHP#šVï´ƒo:Äïçyå#^eª©òÖh®ºåú–ÓÅEàø¯,†ÐS¨ëF…i$eWäãßP:&.èzÿ­_´EÔÔàR¹´:÷*r3bÇíùÝÐÂø\U…?Æ´¶a܈@`8WíÝÓ××y²^UìÄo„LÄW5œþå¾ÿÚ+¹Ç‡+6ÕrÁ°T®m®>‚¹¹‹zéO-¾O/îl»•˜Þ”FÈn¼ÌûØãŸ›ëôìYs@ºÎðÛDtbâh&=Ö‘òÒ,Tøƒ©–«#YÜnÇf m$þ>œGK|&.šeƒšÕ#þAâï÷çœcÁèÑù >÷C.HXVgY¥!beÅudD0[ÙŸÁÈ;~óujú]>êm¯}îG± >j‡PÆÿ$ ¬¨ Cíu¦ Ŧ^½D½¶²;ñ±Ð¿½}{²8oà" zQý ®ÖÊ© uAÑ[èy}¨?ZXhh‡P©4:Y hêg@ÊDÉÄJŒ÷˜pÈr“ÔÊ׎O7ßÏÌ©ZÅï}cî:^y÷LF6¯M£ý`Ž£3™­í׬;ÿPÚ °NöRx’ÀükµòÖ_óu/´CDBg  ¤@àßÁš‘œ÷_Þ&žÜ:óû66úCžŽEBõÌ­¹¹Á, @Õp£‡Q½zÏÊÚuu±I¬L4©#Ø;$Áz Ú'+@ Ä‚YºVŽH‚?æ4ªZúwÞ?²,{Só=õeF]ìu¯LÞ\ß󉆨„W36;k@‰TBBâ¿¿wô½¾æ34$€^À‰ëA#ïÍAÃ<ÃNHÐ)R‘³³{æqÉžÐðȲ¹3;ާVFß^¤B±ºéüòï_-»=Uîiû¾¡2jè…ç,QWÀlÐ*¿–·iN°n ‡d¹;–~4ˆX}ôž=$Q¡¤|>4JâïO7ÚÒ„N%wþ{¢Ð7qÀÙ K~5’DP°ï­tMj|™®7 Qúíǫ̈°LŒd‰y´V]‚Ñߘ™ŠvFÄ7‰{Ÿâj]"ˆæ_! <  r¥þí²O•¢3uE“Ï%pAÈó "WœÔ›g`a`ú¿ç© æ¼oj=AÙ{…·šàl\þáLðáâè­xEAÐf¾Ö§ÄƒGÇÁ "å ¥eËB‰"ÉŒ\lú±MÜv/½¼I&Ã`ܽœew¬Mr Ðyúüg²Äi½Kš†–ö÷€Lë]w\7poX85É‚2;^Öü'¦ $ÎwLë65J®e6 ';{¾Ÿmuèçê˜æYNëþYpwJ[Éø§´hÊ¿q >>\Ñ`«îŽ111ƒÎæl†bfæ“ÝY¢íÀ?Ä„ºq¯­*G‘‡¼‘ƒãózÇ-çRkÕ·²ÝQðÇWz¡‘„ÝíÓWdð¨KÁ„\ºD b4tt¿—–°BPEåä2è¿ö0BãœE>CŒ‚÷ö¥DT‰.¹#@„ÜfFÇ+—†á2>44ÇÌж UHžµ¿âh=YœwuÿüñÚäe¯Låo@UTb³¼ÇÑ+è.í¶G xøWÅ-i¿j,™ 7àá±c)Ÿþ°_¿µs­ )?Ò†æc8ÎŽÙVÐqìœÛ¡pãL1²PA«0þ©YNËmÃ;-—ÏT­÷ñ¦…–1l VTص%Ö€"m•/Ë&ú¡ßc`Ž2ÔÊ_ðŸ[° 'ö†t¯v„¼¹?†ã S‰ûù“ T„Vª°¼<¦ª*±ÀpæxJéœÇ•MX­õ…Ý5³ó-åϨ³ô”j­*(+ g –© A}ÏQ"ÑidÇT2®yöW“ÛË …øŠkÌló-žGÂ4q fTr쎞Ht|Þ[ ßˆ¸gݘ*µ;ߟ…½Ø+V)NÿñÔÞ“n9iÕºÆiüa¡µ–Íô¼ãöb‹Ù0°X†kP]Ë!“ɯ͗ê{´PÃPà=¥z×Z×ô¹ßq€t]ñóVW&fr}nPAï†Öèîî¾…FD"#Ï;  |¦ƒÉ^E£ßýyƒQáeˆ‡æ ÖµÙ*<¯Û8Õƒ¨VjyA‰ñüW#-M1n°æË­´Cχ†Öíoo/æŸé-¿×Q±À¤N!³¡×ìuòE!3Ôйl[ÊÊàçj'‹Uy¶†‚Úûv=Ý&JÞÈñ£rr  aU#Q¼wéÊïÖ·l"DGÓQ5𾫠ˆ‰áŒ"ñý<<èä…jÕév,4ëÔ`|ýúÕZ‡Ø‘eJ)i1"L´7ÝÞ{L&Z |è§Ì@Zÿú ´~ìúF@Â¥ö¼[Êwú#DrôÇÆ~¢ÜÚÖÜu§ñœ¡jÖ|Ò>àHùpãqÁÚ5Y, $ì7÷Å€†Õ…Ö‡”½Š>Ð’±±ñúXÞ %ß+FôLÁ<{,l²<¥5^ˆÈð1ËrÚ`¦DÄöhÎók/˜@²Û+®B‡²Ž›3yfw[ é¾ìÜ\?|¶[£ž¡ë¶'¾è˜—ú€ÐÍ4Ïxx¼ªG)‹$œipç{-àAâ}[ݲì ï¹Gø.uÿVläÑQ=t\Ü€ Јx=yŸ!Å{Þ:Ñð:³æ¾  vºîø¼Ùÿá½ýÚQ«%+¥Ã£¯Ã¸"’’/¢’¸ªŸ6z»ëíV_X9qCCÂüÝü†ê‰ƒlL¢± M‘MMXÚtµ}Æz~7ËѬ)>ðÚ¾E"Ï^™ð¯ ëT TÊ2=ß°‰ ™‚Iqm²oŸX9§ü£‡_C/¿ÖÙu©òC–¾¥¯ '‰tÂ5´tÍbü’œó²XÌŸ%› 0*FG±×FßÅ‚?PBÃC$88RÊZJAQñ×D¡÷h©VgJde¦òn{z8w€Z d}hˆ€?Кý©© ·3*bÈʡϫ/hõ‘?È·y$Ôߤvv,`!XXn#ã–~îgðj»×XÚ LǤJ’ó“ÀЄÞp(ÇW­KŠFNFöœÍô5½ÁPâî8Ðjퟅ>w+¡ }TÆ…Î -…5Äý̵¾>"¤èÓæmýk~7ÜW„E@ òýÓ$H õvdSeDAè¼ïÔÔÖ}µÜ>~|;µðgë%úë×þBÜÔ1nÎlo'Ò$Ãc$&î¢ÑhMÌg…—n9MMK霭lÊ ï£—º7z½Ã/IÇJ•¨EvC“Ù  Ìq4œK¦Ç›-=~/¼0jùì˜ää—ââÏ“ø ¢VÏwQhˆŠš²K7èµù*3ûc}%Þ˜Š:ÕæoVÓbc1µ[£ˆîN”Þ ìN²uþG ÃR-#  Ø> 9?×G|¶ƒ®àA¯YÈÈȈA«u{(OGðN<ïE\|ªˆŠ IxxŠ>=ÂÉI¥òØêê.˜V/Ê,ÞÄ7Gò"òÆ¡X¡aaþ……€Q¤Õ£ˆ!>CÞÙi™x­©hN÷ºpsm- ) /,žéå•™jd¹õd´ ¦áÏîʾƒcP’YóŸÝ¯ï¿µ ½ d“Â# øÝռNJ|zqïFääû­¨(쮪6g¨õ?¬[óï¶ÉU¥µ}HI>‚igü‡Z1²7*¹ÏرgÞ]lˆíBˆµõÒQjzz¤ûÙßö‘´Wì~ééD˜˜âóÃiDE¡$ÉPAqÉÊŠ¡UkõÎÌŒzmm !tt·§Ç–þVô2«Õ|í«°°0f<ä™6_¡ÃÅ&ˆù§O"ææ4"""qº! j•)¢àˆ`pŒÑ)üÌpeÁòá•ááïoÄ`bbÈðññ‰¯–«Ì¢sss?˜˜ä)«©Iƒ!©ç³B’ÙÌ¢š}4ûúû)ii%ÃÃëkeS9%==› ëø@ŸÇI¤¦ @ZXX¨PAEEå[JÊÛ   9ûí èõë¤AÓR[ ‹ÂÜ?¾„ö*ýØØŸ­ê+ïH(V_ì„®ˆË¤75¥ÚtÍ¿jýxíé?Lw¦ÔrÿÝÆ˜f¥ùá]tttb"“Þ§òþþþƒ%}½f·¬F:ºØ9Ö$B>Xè1Ëm¾ZD¸¸¸f\e›Ð㜬w£òØ­øýéî–vwo …>#,%55^ï‹|éþYÊôø¾ý^Ù–¨6€G(ŒŠ„Ýü뤭¡iÕìá«©Ÿ---:ð¯rkœ5.XìV„›ì¢«6ŠÊC{Z<¯Œ÷g*¿ÅÇS¾zõŠœ|ljŠê%½‚Qw4 .V8_6õ/§ªëÉýõIÇ*/ÿä4'kQ†Úßën·>ߟ$‚ã0‰ˆ"SR.æëln•UT,ôÚj~üøqÎÒŒäUdxøO‚ºÆÆ¹]nù»„„èÃC¹]öñ†Òx>‡†"B¯ÎÇÇÇãõº7‘-¶=[í¥¶1rÆöƒ{Ý•ÿVrÜž¿=!³=”_QNU'B‚¢¨¸øäp‘Ïj¹u±,zÔ\ÌÄ„R·Å#h0•Ëh²HŦ[§Ò𹃣ãG%¥Ï oÀ‹×[}ŸkËCõ÷¦J™“e€‹ºý¼<š«±T¯·Ë:ݳëÒ(9\«4º–p­' ø¼_:Èä»ò¦‡†äzûûc+*˜%?|ø:6¦ˆÏj:…",%%eü'‡J"ç#//o5§tBù i^¤Ä TÔÄãc;–d™9ûääd ‚·GK-޳Wg[Ãs&Öó¾Ž[C¯Â¹×ÞªªÌD™fRßΕRBG¬4\'=4ô©VRìÐÄÔ¨׺ÿñioºÜhíOˆ²ªªáR³û\žmºö¯úÌ3NUÛ³îåu„~÷W ÎöôÌ?ZÒ¹ßCPI~›³gWV¢_\\Ì´z{þÊ›#lÿ‰ò‡~‹C}ê]{4Ô´d ¯¯ÝÞPQ‘ÓÓ#ƒÐljË<Ü¡û —ª?0¨YV”À)ЩžÛ2|üu2Fw!¡×T#fv³îÛL.º—¡z·XgKòû÷oÅb/$•ðB.íÍè*/“Ãoåö`¯(Á”Ýž¥Ï“ýY¶bÛòîO- z›U¯kîÏb½ü ñÉIh/ –ël—«×Ü|U÷(moÞš¥ml^%gn¼\èA»ñ;È;Óª³!##ƒñh!þ!— ñ·]–1ïhÙ«²©#¿Õäû$H%›øõ+Ú›7oVþ¦BV*R*(†Š°b5ïUVoî  Ô°>+ì%.£ú çã½{Äk Ðæìì,sêà\ýÐÚ³ý³qcVƒŽàWšmµµœÈÄüxÙB®¦aVàNhŽVý?&IAÞpq©ijjnôÄP°ZÍ0‡<ˆi«-9s½GýÜNú>êuLp0<---úçö'Á÷F¼ÅŠ%á­—ÂÍÂþ™oùßKHôÝ^ìå••É ¥ó™%ƒ=çÒ”~ÈÅñ¹˜['<,x?¬´Ãá zÕ`V{Q¯wG×Í7éb;¨ÅßÄçbŲk?þls÷÷~µ}§l`o?RëOÕnëÐßmt""Tb¬ªYz±¹¹Ýë’qc»¾þƒ>ò8Ärõ|kwoåÓÍÁeÕÔ¶F_ Ø,·p@úÓÕex²Ö©úü˜sOèéø@{è4gë’]T À$mK#šÅ¨‹;½¸´ôUCG>´výE“Ë<!Á£¹ìÃíEÇ7Ji»Í>lvŽÕ˃yK.×+Ë=hîƒÎ:Ò­•¼ÅÍ{½¯ íÏ·?NLOmöÅ«·xÔl}ê*ÊnÓXuß@—%–ÊmAà)Ep¬Ýâ \ÂÁ5;'GçÒìãW$òGaw-÷é˜ËéµóñëÓÍ—­^7——.Å.ýŸZ¢|ròWV£‘†AÅŸFGGý³³É!––ÅS‰‰!}}RÊÊʤ||„ºV<ÓÉl'{ÓLûK-ó6¯ÿ2òt€c@æj^bRɃc‹…V;ì/4Œ³@Ÿo-àyIÊȈBIIÉ TêTBrò‹Ïíß½aMÆóe#3oœ÷¦ÈˆªÌ†%¿%H/m$[í/·‘«•w%±1;l|€²5 ͧý}+h‰´èŒ'&3óȾ¹ÖñbA÷“…EûXžté-«k/~Íw¿uŠæB.õìï©R“:´44ÂÖÖ Cà§Û ^"À5ž„„ÅÄ&fgÃä3W7zc]†‹È‚êBCüv±32½Ãi•òà¹Hâ°TýÞAtŽŒþÛãÜü»èvüÄ„2;/²"Zy:zÌO@FÈÉÉM‚ì[“ ëŒDl‚öK¦f¶€GFÝæžFÚóî&½ÃºÊäÌ ­ÇùµXïBÔ‚ÒRq`æï¤AÀZ¶}ðSo$[6‡ïߨƒ¶>ÜÔ!'WÄábGÈ¥ÿ—o5`î™FÞAŸ…úæ “u0z÷³¾>ä¿–nýüú¯6¦¶ VŽNzÜFŒŸÿ¿ÿü?fVèú¯¬l,œ¬,¬Ðçÿqqpý×ú¯ÿW¼\ Hÿu¾õ ó­o½oR$-$RðÒ"%×{¯ ¶K‚Í2`+9=)¹£“ƒ³‘“Þ¿ÛòýÏ7““êÐÿ·6¡»ýϽ Ú…«›‘)›1±1 »)‡‰‰‘;+› ;hÃÆÙÊêlö½œŠž’¼Š¢¨øÿÖ8yX99XÙM ŒLM ¹¹˜Ù99XY¹y¸ 8¸˜9þã -lŒõœLÜœŒm­ ,lôŒlMMœþwúÌbÈÃÁÃÃÂÆÅÃÃÌÎÍÂcjÈfÌÅÂlÂeÀmÈúŸì¿ëçÆÆœÆ¦F,Ì\\Ìܦ¦¬œÆ\—;ê¡5E[é¬ẫ/rjˆà0ROk»&²úù!]ƒbŠ«©š×Pl”“.HH k Ÿ,‘Xr22g¡ËPZa€Åí´‘yŒˆ‹& ¦±Ö‘àCMLý¾ÓPCK-dðÈzKŒCÆÓî#Ø×a¨úbÒÉ*‰¢àP4c >N `x†g™¡af2 #ße4g!”m`¢OHƒ©•1z`çiÐÖvͧ£N¾G´ƒyb:—‰•Žb‹#L"Ñ›.ƒÅ2t‚Ñ nAá6xcHt ¹Å"»Œ•¦-ýÖ‰ ¸…Üá©ÀYF!)¬À\>Å)ê4mñé4i )/‚÷Ò$ Èq ¡FüG\0ÝÆ˜N:Çp½OTgçŠDQä êQSÞcÈ®1ç5áNÈ5\y«ˆ'Ä ” H;ÉE—!Gá¼)bì…þvZ[#4àëU”@.’p¯r€vE )Ç Ä;ag<èä÷‰ÈB6²«Ô˜2HäÄç¬8×)¶W Hm: Õuš”ïB2'cÈ9ÙÒn‡q:b¦: Õ•!y)i‘h‚œv„ ¼ÁX¯,Ð×5ž…ª2§¡OÑF= P :ì õ§Vš`H1ªR,¨YØõÍïÿõéÏÀWãiéBsnûÿP‚¥¸ÒÿAu@þ¿ÿ»‹ÿxòêññ?_?-Òô¯ßýôâùãbgwÿèãýý'ÇOŠß~9þõE÷Pq\šQ5¨ã‘îï?}¹S켯ëÉûûççç{çto\žî¿Ùÿ”dátóìÇÝzéÎ=_û£oš? GÕá1PãèöîæÚ`<|œ…ÚéÚÝðçtðñpçñxT‡Q½{œh£pío‡MÚÞüн7%„ùá»ãg»jgßvß=Ú}<>šØá²œçOõâžÄ¸‡ÐŒBiêq¹tÝ“ñ§ 8 ©=Œš;êA= G‹ð*šÂŒÒp¼4åEqoqÁýâÑëç?‹ ]̓q%(÷Þo›˜,ž †á`¿뛃á`ô¡x_†[í¹ªÚ)Ê0<„^übª÷ø®H;ƒ(]”­\9˜ÔËgþ0M{t§¨Jw¸óÇŸÓP^ìýQíì·gºÝè/FUpiê««w/é;2k(綪rªÁ¿Â*Ï”ñ¦6›ßÝëÎ#ÈRÿuÏÝô êþ^ þ~qo0Ôo’ÜòþÃæšóÁÈÏïï¥ñ^ká/apú¾†óë¡õ­svƒ¶HØîÏÂÍŽý|øÁÇbàá¢ñ,úÇînáÇÅh\ƒ°³ñÇPÔïUýP ê~tÃq|a/ŠÙÐÿ(vw—å$w5`bŠì:ÙV¸0Vã£ÓôÓü>1ÞÏ~xêVø¡,€5Ã,¸˜|zØ`xPûfˆI9þœÎ §£ùå3»Ãá&´ÇÃY{Wq©Ú쾦¶ê¼IÒwßb€-£Ó3Ê#²Ç÷4LœnÞ‡‘Å÷kŸŒÛ¯Ëöc†ý~ƒOú¡¹°Aú¹"ÍP(‹‰)ëÜtâç–šZìW9©¹hÉPpÒr|Žé¡©ª–/Z,Šƒépéhª„f'àÔppt`f~Ž>µ«}GÁG¿šÁ¨à5TX33ö ü7®“1ëªoÂ0Y°Su‘cFàé¾YO €[Ao›µÈiy´¹ÑnZ–„; éXvUËÄ»ëEìO‡í„Îgvr²9é‰ùzMZÓêj¬N‡ck†«R~nu±¨ýhü a5²«»`ç¥ÓÁn9'°b~vqhç*@»‰9ç˜\=¾;Ë·Õ›åKª‹‘»¸ùåèrV"íêÄT“á ¶¦¼$ŠÝ³ñ¿v§U(w«0„èýq4…‡;ÅlÔuÆí¾7#?7h¨,ñNûq:jòå½ûÿNà¥ùx Ößûþšºüû¾ÿþþÿVsÀÜ>?‡ngvxfAË"‹YX9ÜÐô•fÇV‹‘ÖÐ5Òʹôy|-fqá“«¦Í|óç1¸¤—PÌ!2 —bÛœ“¢a¯qÖ%ñ±4§gmü.…|šˆn‹¸aӃ촞ÞõÒu£ñÎQšf< ‡§Ï¬»^(a× %lUèòe“2@ºpПBqyôí ÁÆ"}òË«ãWääõ«7Ç'¿œœ\Fi'…xF!ÞY!Ðî»±B"£Øv™*»Ã>réÅwÃú!Œqé´ƒÏuy¹`î¶ëJöÅu)^ÌÑw§ ½l*c¡Ú6ª¿ ›Ÿµa¶ÿ x6†Rdñ‡B‹û½l£èz5(ÚhöÖÎÃ’š{ï{ÏÍpÅ=Â;E÷«·¤Ÿ$£¹¨vÇÙ.šÑ–n¤í†Êd¨™v§f¨À±ßà¦|ƒð¥*¥¢§7žœ¸ÉpZ¥ÿûY—¡_z ý~çãÒïAeÊÑìÂb嚪.¡qG„öö»?§ãúáãöc~ÿ;ªšáQªúyA1êKܸ„é/~Yl?à3NõnÅ2tÌPßæøÍ»§½ìbže¸oÕ’T(î¡ÃCt¿Ÿ&ÂeäYƒeø“ÑM¦7ìw‰úìÑ‹·=ç7C‡¬wUÚèPÜÃý'8C¢LÜægˆ“É &˜_ç5‹’¶¹óšþë[ƒ0gq‚50Mˆ$G,ÓH*0¶Q‘Óv¹ Ë渚ÉZKð‹$0šž]^‘­¾û¨:Û‡ö6”3|mJ¨jZÅ;Aš‰¾3sçw4QІá¤RÊqK=ÅÑqe´d© ¦™ÖþÙL6+'[œ†Šüüºí+ß>}óüÑ‹“×ÞÇ$¥Ø nñŽHG”Ói‰lP‘(Ú¨(ðõ)n}E2w_ývòÓ»g'/ž¾„ÒY‹¢X™ÿÕ‚ÈÔ¢‚le†\ÝÙý6Ô5tgUë³5°¤ØfaÐŽy‰×Zÿî ×ÚsMLvÌÙBn®o uB®ÊKÍ,F"M ó„)Ûä!Ö3[ãFk0k¶R¥ý×T[Q/EUÒî1Q¿?ìIoBݦZp¦$gÀͯ?;iöŒ[ìg¡­6Àt0ªo i^»j‚oˆ¶¸B0Õ·©ÐÚ ¹!¦é:=j ŒòÔWL"×bª¿¦yíì ®Ö@ÚS‰nSaáy-ÓöÈ™‹yé…ƒr- JôeLï ×ß`N²ÖME¯É ·1Æ+j-2‘.) Ž µvBPÄŒl'ƒ|%ÏkWÕãÉ:'ïˆif½IÒÔ™ C’Š6pƒ×9F‘æœ@y«¤A ß»š›;V22Ó¤K¶Ay$·•›Þ½ýiQIõ÷¨J}~¢OU$õ–Qâ ÁẔ‘:ða,¶3î¹ó$ÄÇ;L5}T;'›ç…¶Ž&t¯Ä1B¢`Ûh#†9é(öéÙê„B_ͼjãi½ÎŽhâ­£é%…ŠÍ ¬ ZFí´€¬êœã˜°D Mü5ÐÌ«CÜM²u4Eµ„êÍ[A=âN0åS_NŒt¶tE¾šyÕÜx§ŸÃÙMºu4-ÖÒªv\ª{æ6*0ïƒØ·hÒ¯f^µä›e4.\´#šlëh ¬¤‘<êà …úU!J¨@ XÛ6‘Š} 4óª™a]µ·­ÂÙM±u4M Ìbj•æ(Dm½ˆF …Xtš)Z4Å×@3¯Ú™ù41îC¨ÓžûÞíŠÊ,á*•·xy[ÁÙ´ª  8S§]’æãxà ;¥éƒ‘›=ÎÒntêµÊ¨2 ¶ªË¦°K_{P §îÃ`xQœ‡â¤ô(Ÿ4>3BQMËÙ³"ÖCÕ<\ÐKgÙ² Q?OC È–§¡åàÒõMYß}nzû•ˆ"ÐÂ{Æ©§Öo jâzmE¤ÀA¶ü¤ñ.öÑírÕP°ß{³½Î¬†krƒf•È ´Š™¤ÅQ(%¬U˜R ô™†\mVgýRǦRgúl½É¾½­•éw•}2¨><”ÁÕ‹žUË¿IϺF½ë.éÓÇjukBùd@6p‚(ŽŒ èCàŒãô6 ÄZ”Õ]ÆêFZ¦ÇÁ7^ë×™ì¢õ ¢–û%¥pÖF ¬õ.eõ@eÀÇÏ¢öªŸt 5Œ®O7p¾übĶç{o]5¸Œ\ü·‰Ü%ÅÖŸì­ñ[@,-H¸ôº¡ šbå%QÆ`¢ˆàW´Å”ßmœöÒï&Š‘È8·¸A„a4÷‚"ÅáSj.¡…ÑAh%E–¬‰Ð¹Wt #™Qƒ-u÷Íéh0]ÈELâ­Æd3Øõ!y>WŽö‰AÌ·ˆÌ·Æq(£žyâ Þc))ÖLk!,Ó-v¼ç—a6|q_@_4»ØP-¾Úè—XlidBtŽNá̧ƒ¡Ñb‰A\Ûi±¤_3¬ÿ–¡?Æyí§•Ýd c¹U˜u4˜q†12‘ZÁ@[Â}€üAs*´0ËíÀ¼¦2ÎÆý¡Ï[Ð{Å/ʪ®Ø«­bÏ¡‡“ˆÃ¿)Daz 5ÎPLœ'¼MäXm û¥ÚæË¥M¼óVÞÕBÂqÖƒyýêùËã“ç«Û“;BLï bÎÁì,‚”ËaJ 9—è™â-Äôn Î+³âW1î1»+ˆ %,3J{œ“ÐIÈ(ýÐBÌîâ¼2_ðâãå=à!æ‚Z}^꯮¼—iõ6ygžÅÇDÞÎJÄ,{¾.M^Ì^Ò³î`WCTÆõõ–Tf=—aµ‡[:1w³Íä­×¹LqA6ØóÙM¿+_4ߌ~ݱÕ)ëÓngÞÄWÞÌ~˜ÞÜp1ž–é]vÃhF.ôüZ 3¾‰¾Yz¨g÷YE2† ,å>½}Õ·­ã7`÷ÏßÖ¤@P]C=b±ô²&r6F.0¼wHÌ#!½b°óVØÎÕ3©W7ŠuÌ LnzÎ#” ÆzÌ)JÏÀ,UÄ Kn5Ó²…¾o—zÝ’Óš§Àæõ­–[‹ž ªí€Š}TŽ*hBƒDä8UakWƒÁþ6 æõƒz’Þ)>ßVÒ T޶*!P]¥çOTLKbTÈHÐÜZ z†f·< vû[H:ëSÎÂxZ¯òîNÉÉvð£:ý½ j¤UˆÂLëôòni¡‚¤ X©]á_n×Yz–W`2\ƪ#]žŠËŸðOºÙÍbyÌ…ù09íIê}ð´›±œ®CtÞí jÜQQ¸`· )CJc…‚q–DÅ}û,*áü´Wbàh´Ï@F12dDH¢ANÅ=‘ šR"%qD¶…ûܯ“úkê øãÓ^fÀ¤Ljœ2Žrêµ›Kn£æ8j-‰ní'Ñ,:&ÿïLû Ê”%(SfP¦e“ŠQa±uFšî¨r/9sNÃf‹]ë å‚CÅI±"ˆÁ, 0ü×>à@°tZ8°A’êó4ÿ0.}ÑÊîFRÎER¯%Jű ³HÀÖJ«uA @\“»¡ÑyHš˜zº|óóÖ“Ö‘¤“]ãA—Ä¥QHRAlp” ¡Œ€UBÒ1—*lJG —©DuA]f¬O%ü4X²IÏ1é¼%ØÆ™ä:™tØhÒ$Íkõ- Çü£z|¾„>%›±Ög¢¤ñ̦̂B#Ï("ZcñŒÐ4Ô4ú42ïôõË_^¾ž¼~ûÏæ„öl¯@:i©°šÇ@Qá ñ”rŠ‘9ÎýZö„ÎCÚüÃlIûêòçWëθêEÚã2> uÊM”*•¥²L;c Œ.ˆÔš¤Ûî­sö·ŽL2\  ¢™EGö J½!"¥v"#M!TƒŒQQëR®AÛr;½9IÈb$uVÁó=Oª'Wé¿»n-Ël-wk£•­s2z«”–@è0„o®GñO¾µýv–gv–—H‘Ytl(w©PºI:„SD{G@ExµHù6»Üø‰óë)ü¡]ÞïæugäÎ$3´9?Â)n#wŠEN,eF…¨ö{0xc; ¯V‹Ïwqøsв®ZЇ˜*CLUÂí:³èÈÁz©QŒQ[ƒ©Q–HŠœw˜`@îøtCf³C«…Ä)p¼_¦MáÖslÓÔc6›w~;Ÿyøö®»ŠGìáóq7€{!)UÉþ]ä©v,Z‚ ¡^ŠàÈÁ ˜Øß&õ·œk'®MêÍ CºÆîW¶ÏpØ·åÌÍ:+œÁÍ +Fθ(R‡ F ·BPéN.ÉüîÆ¹«`æ“Ïæê|áäpÛ™”DGNrÀ+ÇèW±&@Ñ€T@VX‹AÞ#åõâÓN:ÝH9ÿ^…E×Ñ_ÌÕ*<íHúŒÝƒé^+wïŸnòƇÿ<횪c[†ÅésuÎØxd›€îiQceœÅ"¨„Ö"!‘l§Õl8®'øÇæ¸ hÇüÿ'ÇeÌ <²YZÝ1CæŠÂ=„ +¹¤’GŠøCŽÛÖÈßM>+óu#mÆÊÀ²3Gõàö?óeLsa±˜ÍÿòÃwÓèC¬àmßüãùdÒoÿ3ƒî÷ËM&f¹œOíj&“G&“æýáÿ·sà„ø”<¥w¥DFéRÑ™©p\ìG€Œr¦»Ê¹ëéΨ)Ú¥¸k ö:s*+°.m9s*–°CЍÝì£Óœ¹Î27£iAWÂ2ª‰¡n2÷ÅËwï_>ÿñãË}Å-;UIv83Î`€N ªSÑ;¥´ÑBÀ¯›B{ðm…i·EûÛ+ ûøkÖë‘!ÈNu!Ž‘”²„¼fž0Œ FAR+,˜ïeC[vJÚž¤ìféÛ´4kÏ~ „ꦗ·Ä†8åÑC$s!†\êJÁ¨Ô ÍÅqšßS@uøÞj}=¨jßêsd3 ‚ÉI”ÑLõVþîöjµHû½]Fβ{:º­Ê3‚–£~}[ýúDn½~K$^¶xÿóüÏ3øŸ“““èçw¯Þ~|Kš®¯&“”Z.Ý_ª©?Þÿj’Ž÷Ä­-‘6(#¢äzå¹^1‰|ÏÎʉN5Á:vØú®Ã7ì}qa§ËE#VÒî>†nZ›6U3j߈Ïix‘dÍ4%ö]ü×÷ö‡ª-åž}¾HÕoêÉGÈxO0®)—/øv”r§ª"wœ:íÑ2¯áÞÞy3Ø·0´2UMŸª˜²î‚t!íÁ¾ak"çÛs°gŸîß§^\<è~|î ?@ö¿›ÿL¯W×|Cu7¼šÅjù9T—o*&·3XïYõhþýìq5€éÓ½ëB¦Ï–ã(aúâݘ¿=kç<­vw÷®\ÇÁm‚¡õÑØtFx—è"Å… „À’Ò ˜Œ‘"/S."ruª¡R<û ¤ø­™O—¿߬ÍÌ4ã]=¾ÚL+æñTZ«e×´Ì7oèAËÎ !Öã/.6!rÔJ})ªfðVýÑ-WæªÓˆ‘éb¨Tÿ|Q7â(”ïו—.õ$ù»Õ|V}ž~ú\=ºùe”®¯5–‘:_¦¹€’eµŸ»‹è4c¯xNU†›Î ÿ|v§ŸVóp ä‚Y1(Ìw"/ üàöæ‡÷`ÝÃèXCÑêèâ‡B[EVq6¯qÍ5 ©ËÙÜ| ë 7ÕåÛzÃîôè´È4ÀFHL`¬1*pÒQ ‚W;3-æ—߇g«e¸ÍŸ„õ°ôüïÕÕ¯ÕÛ|Ü¢Àjµ~$WÅÒ%Ÿ-]Àäå)ØÝ$L{Ö=)“†mÓnÒë$—ôßuKråoSTÒïë0å”xãA%žw³›å|vU]ƒÙžØþëtùV¸]-ëxç A¥4-9ùFJýAN~Í-Èé†á€óÃJ`5Ÿ‡›Óáó„väp©d±¶Hsí¸“F Â\P˜1œÀ~ TÊ/¿O*mzó'¨5ôáŸ_nFU7«kæ'P´þd=ë%ð§È]ß™»N.Ž)Rˆ_²I%ø¥<Í©+zlMÛ#Ü׉Lk)^ç ¥_oS‚Ö¬³ojñ~—\³þ°ÉcIŸÝ¥©ääÿ‡ç.«äê5ð#˜ 6­%<ú¨JÜ ŸÇƒð*ÆÅž/øY°áåUD»í÷§Î'yÎÏaY»ØÜ‰µ‡»)ç­l[‚0š{A‘⩾³æR©)á(²¤h[ò‹ì__`A¤©Õ{Y OVǵÕ07_›cÕÙhØOà|œ»€À½‚ç9ÍPmÇP¤X…bøŽ ¿ž€¢sŒÊàq¥¤)“ ùE÷ùKø¯™Yí_®3÷-šU íÓ5%óí5ûCíüš v»wgoÈ}7ù°[¼™ZΆZçM—˰n’ZªÖ—„-Ò{'.D{Þðy•bÒÃè[Ê÷!(q”67èŽÖ“ö`Ämï‚~@a=kXH°b+³í›4iI%Öd{™Ý.åýœŠ}%\¬e)ç+0qQy±îNr˜ðñNoš:`ëÊ]ëª]Gc˜‹[X>Nƒß(9:Ix×®¯a¨WëѤv¾DòR»oaæÃRûÃI¤v±VÌ÷“-½}›Ôvcv¼eôLÆÊóy0ËPÁŒ5àÄ¿ºØ–ηî,QŠEý@»kÄãQ·'ÇÃnïÃr¦_¢Ï¥‹@ÕÊXЈµªžD”RøÊv#_E¨`7”&ꦨ§ýîq ØÇÓ**¨æŠaET;WØ<¼m©ÚuÕ´5©ÖÃ’¹±#§7C<{„0ƒGÄA1¯á•ÑQJBm™îË/ú0Éý0Eêdùû¦xu…CA„zò,pÀ ÀxI½éÚ¿`kEí´ð†8ç8ñª`òË ÀÜv ¾ ×A—ùêvyʸp±ÄE˜3‹8Á ©hˆ$—b&H*0`§ \“”¼@]Ć Ÿ¬>Ç”*³Oð­ ¾¥Ôë/ß_þøzòîÇ÷—ÿgòöÅ‹ãvN“©6]T3?Œä\– §0›6\óȬàÚÉT¯V3)±+ ¹E&ìu•÷Óüö-”¢õ¨r1š¯A[@±‚¶Ýà@=| ¸«V{^?¥©µê®@®¶\™ƒ4¹äê«CóQd›ötKìuï]"c‰ÌQ$b‹z]ðdðA-’‹Å€Æ%#ˆ;°E H2Ä= ÞƒYJ´u¶ÌÒÍ/º=¶óÐó§Ñ/güC·–UÕœ“Õ|˜Ã†Òêgï=È DJKÄáOˆÔ{l¬“Ö8C1qžð\,íðËï:,}oÞÅXP‹lÔr´r;õõwböš»*C¼:¸Ø«ã˜dQb lI àÇHý£P$~_æÆÌ/ºí}5[ô`özxGnžÆžä.Ra¢\ÿØÜ–!ê¢p‚~—ñt9ÅËŠåe¾I{‰*ëüÞ‘6Sî¡£ûÙ:Ç ÏÓ*5€±`K)5ˆÑ/v~#¯ƒC”ŸšÍD«oÛè•g#ÇÊröó‹nè9 ƺ“¿Þñ¿OcOqŒ)æ£Ù¦>á¤RÊqK=ÅÑ%7ˆd¥ ÌŒc›æ¿õ€múÓO]mÓ«G~º0ö*øA÷Qx1ñ 5©±-åÔk‘àÌ%ÍqÔZ) ƒíÙEˆŠI4‹SÏ;œY»l’‡59Ê¿šé@¡£ÉX·QjífÐÇMŽž>Õ²pM¦…¥cÂtΓòÂ0¢`7ÁI¦ä¿u¿LyùËË7…Jøn†Yv½ï½¾›O¿˜ex>›‡þЬ5y¥µ>8úêµ£õ&ñ[3¡ºšÚõ+Õ²b"ù˜îXnÁ\S1À ÛYƒ)’u‡rvïseä‚ ÷¸H5ÌdE&DçX ”˜3NgóH âÚ0YóKï3Y{™«@ÂzÊ‘ëŒÓaB—gŠeë}—ŇïŒmM>kH6}0n`#ŒÇºÏ=ÊuíÝVÀGÑÃzÔ:7™RÉOw¶·Ç%¥ç <+ºØ““¯ûWBѲb‚‡I[W?\³uõ`nG›0%S~ s›<µ­'o˜|O×=!Ëv@E!<âVB„”! ¥±BÁ8K¢*Œå½³ªû\iÝs•µŸUòh"Dq>»nŸ3B‡Gë\{fµžx°ð0·^KF’ŒÖç—ß­Ï_Ú¨)Ÿ†ýK°ÿ=ªšÓâ顟U6RÄÐÕìk¶™$ÿ°|X<Ÿt;Š 3Ée¥ØË÷î+Iа;<¹›·™„Ûc¾u˜XÃŒmêÈ«_LpÃ×D–ðE‹]ù¤%) CúšvßÖÄ=Ûq×»´ùiÓšôp´–«·¨Y²²¿UÍ ß¯§³%Ë‹Oµ¤5"Z¦‹Ú[AAË9Á”§;b¤³q¨´Î.¿OZ»ºL~ë6ãŽk»©,S§¶þ’Ðý R¬Š‡R0VŽAÈ ¼óHZ«5§Æ+M@EÃf”m”ó L<!ËR¬Nð­—S✗o^¼{{ùæãäò¸¿©¦*|’ªßÝS¤˜äù¾A%N¼ÍˆJì׳W>9l¾ž¨þ F¬'ÒÿkÊSÿëÕt±ÝàÛ·3y zöþ¬âUÐÇŒ dðŠ N´†ÓWÚ: áH~ÑLÜzÏmÛj3¥8ÌÝ›6BEK˜aQ·AñÈLð‘Z«+s'åm_Áê}ñpqôâaöÞaº®µ´AÌîR4Ìyê8ØK‚QÏçW0òV<ãÕƒ>ü˜Šc;Žëì$å8—½º»š P£˜’òx²uÿýºAR"%J¤ãx73‰õ ðh4Qɹ®'ÝÐ…ß›™¶°¨ ¢|¸Ãe{¯[ —ïZ-—ßÜcm—Öñ‚°DØÊ@ýž  ¹û?e¶éØå{ªÚÞ|“ ,¢¬ÐªÛW[µì¬?ôE½  £èëöúƒOÛótbÊÛ;ùwW;•zßÀµÊ¬Þø¹HÚ½ƒ'©÷ènºéTNÒ÷eÔ§<5]óˆˆYè뵌xılOXÊcĕьpÚaèIvh4-ìb5¾­‹æê˜:%»êréŠý7¡îÿÃcL~ „®mÈ8à’i—°¡‡¡Ê:Î|ê…‚XÜ" Ê†Ì·-Êá©` ¨k4y„ù´½é¦»§¸8e‡d»’D¬5³ÃrœÚòàX í™®QKŸÝý`aóÒ]]Q(ò_¯Ò_o9a¸­Ëxıo-\`²PÙ>¥ÄLJ6E(L<æšÜ¶¹y;áàÚ{-ÂÁ½Å„¦;øü~Špp·—IZ>·³=SZÌ"¶é Pi\EŒòy‚^— ™^ÿøk§|LQ|mœ™Ç¥c"‡Ç5ôÐh鸦麘CD6ª,&¸MÏ£ä@ãRk£.J—¡YòûÐ'¹5½ÿB熗˜#Í\êÉ€€J&|ßt;ðno´–>ÀO”x¿gÊ]§):Kq]¨Uw× 1CÅéB´®¥·ò>é9&f=2H³Š*âûŽïY,P¶©MÑv‚^KŽûꇗ»Y.0ÎÞÄRMÏOÀ{=ót{/…Ϥ©L_qj2Z–Í©·8q<Û1­…ö½×¡£]|RÅÄ»½àLx.<5]R´X¨À5÷¨ƒI='¼Znﵚ})?;ô°w‚#Œ º¿²‡µêÞ«¡JÛ¡×·­`‡ß4¦Žr=7´¤t|Ú®kû¾K£J˜Ž%»QÑÞhwÊ] 6@Ãmhè7Ìã2Ðz6·\‡[!¡I¥‹ñõF.-î“ )µ ´í=lÉ@ RŠêp”V;<˜{D²Àv(w]®\é3ÁSpÛƒORFGÈö¶¥òÝà æH¶o;·vÐÀ¹p€î&MÆå€Ú®-—ßÎAC{¯ ?þò®ÛiòØs†Û“‰ ORA¬ÐvßäžTDQâžØä–4õö^˽vw¤Ïg"I& £?WZ­N°ë¬J:n(µñVŒi…!ð>‚' ]æöa{V{£U7ϽrŒ»æ,xÐ’´F‹ ®+FÃ2}ÁqY ÏôXcßBÊ|S„”r‡™*`Ê59óÛf¦%œãÙw{ÛöÁ,žû“¬ÃÍUÉï“Ñc/æ_ Ó6“› ¯V±˜†Ü±@B`ÚG]ݿסùU¦õ®Ùw^…Ï*òÆ@áà ¶êið­Gä_¾ Œ0ã)¦ª .*ñ޲JÍ¡Ì$p™ÇºÃÓh–>ih†xž—×Öe•ð6U02(;P¿/&žôžå»Ô·Ü^¹ŸÁæ©>fyåG¨‰‚¸øä—wß \àQ ücðËÓÁ³x ÛÕĪí¼zñÄ[ÕA±tÎ[ã¤RîyÎ Þ§kd“,R• ÇÈ÷ü ¿ø\:Kœ­ œOzõ°O,_‡Ã+ãg½ ï&ˆy»_ÓŸ½/xz&üt¤iÏHT„¢ãM¤Ò+¥²ž–. t`, ’É<«þò›ø ò§ÿí÷…Jn†¿¥°Eò_ºU”7³4GŸ®×®À ûîþ'9QxGò `ô•ȃkïUwÅ¿Œµ@‘ì|ˆ´oÎPÄ{‹ƒÀøœçt™kØ–ãëóa y–ð{5_eð{3jËݹj‘Þ‰ó¥UlÌ¥8‚¯YŒWV§ñ 9bê“ %:ÅÅ £èú«ºX¨ÉUÀqg86#PQ”ÎE*É“žÙÓßçBÊâ; çq–CC8„øCƒÛó4gRw1Oâ߀èD4Ïzeñ¢ÁA¤B¨d¹šæµŒ%hE½\YØw¡bK_ß5ùÑcˬ֠N{ß» C>õÎ;Îe üIÜ(Kò·R(ÒøY Kˆ}<ĪÉÜøCUÄ3êü§¤+¢y_“¥dŽü¢óQå)êÅZ¬\©PUùPøâ˜Ìrü$ƪf]0]kcåÒZoU„#X5“viGÌ€±^­­ç°€ó†~.‹w´VºHáYQCà²u(‘ï67•˶ՙ­£œÖPN÷Äy3$ù_O0~m;®ÆQ싨ÞÊËüY—UtB`õ•N¤À8—c\LIÉÀŒò×Õ£Þ:‚È9Kœ¬?/õÏt…›j‘ôf,;Ö_.–“P[ië“ΣIæ‹dÉ(ÓøÁ"UÉ ¥,ÈÎâ™zÔ3Š^›7¸3Y¨Š¨VÆ¿ÉöKí÷ìüŸ¸ü >¼Ã$÷›dðûýû÷Ïý_ù—«è콺™%g+ô×kþ¼V¡xVˆùÐH"o`IåŠZÍÛŠ ‹Ádø2Æ‹#˜¼¢ÄFž.0óí ¨é²Òni¨ÛzЫo.›EZ¡èåD­ùr¥Ü,î]àŒ’‚ò ö½i—jh”Z»Å›ùÕF«Å扂!Pi 2ãŽI¼44./_>}óæéå÷——襯 Þ ï ‰DÃ’:»ûD;-:Û‡÷^Ý\ljÄŧ͗EIcef b©zMDyOØ2ô¤C(!Žã é€ÊJÜ0Òw™¤v*¯ô]ê½Z<ðïl; P|Æ3£-8[X]ª_.¯Õ›Z‡l[fûÝe;"¾—n æÞ°ŽŒëÞ]«o˨›òA— ´%yÞD ±ûÄt``-±6´³¦e¢¤íUnÞ7@ãiÙ¸¤ZDH4¾?-pMÑg>-|æ íW?n×r½>5ݾíÙ}Êx¸´ÜU €Ý€îtîßD+L0å^ßvÜ>u[áܶ“é¡›4SÓÍõ>)¹UÁÅÃeÙ.jÓ>s] =:i…Íj… ?5î¹õ" ´ aÃâ´¨Û¶É™í€Ä‘TI(ºÐ&§æhÁ?2Ußâm ’ðÐlrI|jàJtGÞµkŠ@qï3‹À,9}f·á…Ø-<]ÈI8(–Ì %óS‘Âa} "±YŸµJ$Äiê§DëÃÀ‚}µP›áâWÄ!]på¶€µIÊÍ0%j¼ˆD²W^ŸyT3V‹´É)Äk”,·€²“p@¶°p{GÉÖÍçhr÷ç ð6ÞÿÛr_:¸¼Äh¼Ý¿nú¥VUÿ³Aÿ3A”¼Óÿ>©þ·&TÖ¿_¾¾gñGø@@âÐô ô ÔOÒVG³%.¹H—wêÖºþŸ¨¡ó«‘ÙF9 ³O)ï.ÖÀKTºˆö†-¯Õð’>è^6>ÛªøUdÄLŧ}*ª5@eƒŽ P9ž×*ºªx¼7Dñ¸ÔŠåèvh¬ídµ œM"n€ÂÃÚ„‡PÔ“½ÎJz£7@Bé—ô)Ès6à‚™fg½†|Ú°r³v3¥ëUZزȘåêEÆ\ï³Ú'ÿºößu}Í,ù±û¿iZfeÿg°ÿ‰Ò»ýÿSüiùÂf¶ï9”(iYÂe %3eÈ”KïVÈ_oýk‡:Ÿ:ŠJŽI<×RžÀwa9.÷X(Ô¥Tó®Š@Ëú'„‘µó“qr·þ?'ù¿£h¿[j'5—Í « à¬ëØN ˜‹–¢®GFÝÝ9×ä›MQÄK\šm½]b¦’cEôÕÙHøõëšnìü×»EK䯹E…I-†»Ì>A´H3²¿¯lWÄ£Ùþ·`à b܉lÿü_}œ„(à#/M>ļÉÚÿÓ¶îä¿OòÇ7mƅér? Jââ ‚ ân…üõÖ¿/n@Ísƒ£¿;­n2F×ü¿-b±»õÿIä¿;ÿïÏÖÿ[¯Ãa ¿·*T æ\¸s¿s¿s¿s¿s¿s¿sÿ7v¯‰á§õýNÓ)°´ªvá <˜*d]€ó7"Hb#¹µUÊ"È«’Ëë̹;lã]½Í· ;‡:Ÿùx~ñ-¶iˆ$7Uï¦$^dyž£6þLL"8Þ@æè£ù°0Ÿ~ïØÐ×õâšGR_ÿ¾ˆ³GÐK8¯òoGºÌc?ÑûlS…&/Ÿbâë'¬‚´³O—Ö£æ¶Keoy¡ÞÉÚùí ¼{ {oô¹éVÁOå1…KJ|U@(Õv6˜äC%ê+ÉÔô¡p%e¡Rµ]á¹,pêÛ6QðŸí94, ZÖzµ^ƒh‹ø±PÒqӉ꯹ø¾db\¡ÎŠSÓ¥/¾ØJ‡m„·õ^ý8Ëâ©ö}ûâ9z†æµ«¯f3&Râ-*Öûãâç²j¯6eUÀ·â=ýÀ4m%,ÆÐW× ¥Rxôíy¶r(9%Þ;ôu<Þ_¾}ñâ‡fÌ“VÌï‹c0ïx’˜Êv¨ð}ËÒf0åÂB…Ü ˜{JÌwèëxÌûú—͈§­ˆßG!^y®k¹˜’Õ\%%§^ ™oZ¾J§Y:âÛû:ñO5§9ûØ7Œøw}¾9gg7çήϰ¿³gÏÏÛgdO,už‘BÉ¿õ ©.¥k4WDõöI ¨Àó,ÇTÜ¡4 CÓb*9±F&“YvÐ$o—“ƒ2õp+¸ãùe^G}$Ê<°ÌZŸ¾Èq›¿]m·ÈÓh÷]Â{Ÿƒ…Ô î)ÅCJ¨/)!ž§,.¹ÏPHÔJÊ»Iç&ƒç[çEª4Øw^°Žž•‹-xÇ9Ö/^h¼`>2­9%"Å8 ZM6&St±ÒIâß¾ü¶ømX‰%Ðeªº•Ö!ZWá¾Dx _d®¥k’ЊúžòƒxÔRžé{‚ꄬŸÁ·ƒ»$xí•6ÑÖÖLõ8¹ëTÿ'‘÷~³°y¿Za¨8gh=­˜ `è1ú\!‰k¤Ô)¼¶ý)|_ª;†Â1@ U B—2âIîJáKX ôyŒŸKowIá°s‚Âù/ËÒ÷š—}hþ™¶{e‡óôVÈàé{Rá¾’Õ—<7êåfÒÒ§AÝ"==×…€.òXs”–´°´ÕØÁÎXØ£.´fˆEv¥£ˆÉìâ©þüxK ó6¿Ñ‹Í ¦IŒ×‹ìãÍBEô´šžžÏ‚h¼Òh´'äPÿt*&÷ÿ~?Êâ‡ø¶Èàõoàe‘*xMRx¦!¾ÎàEe÷‰ÊÉÌE”ªG½ ¨ôÇ7ùÑVa(—“t‰›‡Fn ¿ÎâtþÍtXœ#  }Ÿò)0ܧÂLé”h ÆóJ|©¡É1Þ]©X=ÿ1‰Æø¾7ªÞO"xÇð’ D˜XÀ‹¿Hàu6DTÉÅ&®Þcwû Ú{á ˜íSap!ÅpyȨ‘qÊrò[Þ’£Š HêìÜ“xz‡Ù Ì®BŒ¤‹ñX¥Z¯Â£Øo‡ÆÛ¡ñ=æ K35,D†2Q)œ§b>Çópyn °ý«Jf°¦_,Æš1ïVµÃkŠ \%ˆÖ1þ¸ð£ \ÛWü0€—«Mü*ìwŸáC'ã}ÊO”Å^«Þk>‚«}ýõ$P³T-é]Ç)Ïø1úp¢”‘Æav sôȸ‰F°À|MÒ,™ø 'NÝ(NŒi,'á >XÌð„ã Á4NÓ<š±2^þð‹ñ&~ËÏë#ã§…Ój€"5æø$½ÊOòÿŸ½+Ž£8ÓâJÀð\@Û@°ýÆrß>XI–e=Œ%$Ì©TwWIcÔãéÑalòXðz fY!1Ù· „°lbŒLbs¼…Ä›äa‡›²˜ Øæ°` [UÝ=šKšî™ÑaÜÂOÌ´ªë¯ãÿ«þÿ¯¿¾Ÿ¼5‡4¢Ùm3Ç•S˜ÎÀ(þ{‚ñöÞ£ãÖap£&$iw‚±èöEøl C´ÞÔ{•—…ìa ‚îH›ÐnÅIt&އ£7‹1:$U¡îX„Á%™+ë[æ’ü„Uó¯b®¬jjªšßrÕt\o|ø¯°:õD;ã±(®¶—ì¨]É%¤‹—Õ6ÕÌÅ嫪ëçÕ·\Ez9§¾e~ms33§¡‰©b«šZêkÌ«jb4564×V2ÍúœD§2AN¥¨Ž||®Â|bã~ÄL¦ô@Ì/Œö@bLx À1««ŠiãŽùt&ŠHN„éM`]ÞCÐŒQ"L}—Qa$]1>ÓG‰‡5Is2jN1ã™ÈÎîŸU•‚F"3†Õ› %9ü…›Í3mX5ÀZÇè±nHíލ¼XwéŒc­›à3“ˆX<Œ¸´E´k ‰ý ؋Ћ–µØLD{u¸‹Is>ÛîËd0 l˜$ýH%ÿ QØWÇ¥Ó‹s¶6m]Füè n©À$£ T¢ ?×£IÆCµ*B»ànÚ鵘•ƒ9iƒÉ©&úy@ž€—Ë&¸ç®ªÒ›HR±l63‡X“&“Å1 ÛyG€Œz¡„¥Y¡=çIfM^ÓMVä*è¦)UÂÔ‘Ho7\J(8ã?.+šrõ±ð¡ÐQI ÕÇP} ÕÇP}Võ±ˆÃûP{ µÇ£M{,ZY4¬8ñJ{jÔ®d }›éźÓeá†tÙ¸ñ½€Hv ëô4Š »ÝÓ«r˜¤NáçI!’Ф;Aºú:ùÑ.;‰ÕX.E=pìÃP*áè*Ì~· Y•t C‰Ó€AäyÓuª²€Ž÷‰ª«j›Z[êçÕ¶V×Õ5Ô§}“VU+£¢$ËXW• ¯*†ª›ˆ—8]4sH·ÖÏo©mšWUCB§ËÕ A5‘,ʲ„[‚ eA$A‰!KlF+ꪛêÊGšåUU•E ‹ …•4Éd5U4SçŬ±'¤‡e •‡2e † q§ ¡h¦¦<ÏÌV4U—q (#…ãyA@ª¡J²i(ºªŠ¢†tÓÈ!=, CÌn¼ «ÉŠ&,:ÂE [gHå2ZÑTWW]>ÒŠÄÙ 4 ^Gò‚ˆ$Qçdh’)A9¤s`¤ìδ…‡Ãùè= 8Ö8uMSDwÜš®ŠŠ¦²xDDºz‚vÓ=D(dIgÕ8ø)}YögGû=#vtÚî3šÆt'½èÓG‰1š¡ÁÍÐâÍ‘²DN³D]³“4%eŠêÖüC”¬Õ®ÝväÛ¤ÃefZY[zݽíQ£i'CŒ F’Bbêƒ,)‹ܳwŠð† â[gr˜µ>éÁ=n®“þcVm·Lïó1›†É © M§Ðt M§Ðt:zM§²7a2áb’ gì¬)–0™ðQÿé= Ó—, thüOYâe) ÿSæx6Äÿ ñ?nüÏ,9 ‘@C$Ð 4D ‘@C$Ð ôhBD!~LÐ.hcÑšJK@<úD®˜t‘Ê:Ê@¢…µ¦b!E‡ ´TgjÖ `uz ¬3—ª¤)¨ý–Å»žï ¼ßú,\ÐCå$ºó^Á‘ƒ*Íá³AKs…<|iîÛ~Ló½™ iš§Œ?pÓ\ÎÄü¬qžc+ÓÑÁXq¢È£o1´ódÔ&Y¯X>Â+¢lªêLU† ³’ÌÓ|·¬œÊ0;è£ÙK5 ÜÈY¯ ‚¾ä$ eÊäå­k¬ñ–4*ó=eh”™/=<‹LARÐDMâ%Óä€xÝÔEVdÙ(0v¨È >…2‘Ê#MáuNBª)"¨ó2ÐL^Ò5ž¤ÍXF¼MI2ˆBt¾1i‹·zouÁ^/ªÇŠš…š‚v „&¼r9Gå¸AŒ·d€0&„)(û”;¦‰œ4NÒ I”D^ÇddȈ“%Ä«Rq»dÖ†¡ ·<¡pUC ¯¹5F0 :ì%Á(³œ8hª† j:§›@ÓY$K¼ÆŠ& Œ±;Å…[ž6ÅÝ]cb’SËR°a²,͆FvÒÃÔ„g;a¶èî¢1H ÿBU¸9Áª œU #ˆLV•EASY²è^Må ÄëHù±ËÅ…[žÆÅQÓÅ&LlÔƒ0ñ|+Ià™P‚a¦Ã¹z" CÆ€ÞûÉäàÂm ÎÁA¹ª–M^ä á9Ȫ@45N5LtÅÔP§Â¦Ëõ9('îA'ÇVÁUk¥Á#ÈÓÅ,d’äÎþ†ÛI7¬Y‰NŒ`&)ÄùÁf+ç7Óàox˜d[×Ä'“Áì…Égö  X ³‹Š® &5 èX²dMfYDÒÖ*¦h"½¬93|Ð"&\Ñ‹½ž—­»ã&ÅlÖGޝӅwÝct÷t¤°ÖtRJÃ3ÖtÓÐMUUIPå€b’5°²ËÉ>h ظI£9ý“} ù›ƒ’æÛ` ^‡,`Bhp$Òq$SÐ[Öù.L«|óMcºGtžmXéÓp J2*¨’†Í‘SÎ@@àyEÒDÖT•²ææ)L«|Óµ•d·}DÌwÐ9(e¾‹2ÈUDVÓE/'†„é²*`þÃæWá–§Í~'^Øiœ£ÓŸÒOƒMHý´1AöÀ¸cáá™æõ*nEp55(«•ÂÖV€ YM‘Ç AáyAãdÓ‘ª!Ö~O=‰Ñ‰iªîž,È:gÀ!Q1%VBßÌÐ$GqY·‡Gl LšØ,îv@¶¹ 6ãAä¦ÊîpgP,CÞÀdJMá6—š œ\’Ô˜Ð0ˆùÕPEjxYÊ*ÒI*KMÁ‘I“ƒ@ÉÄÆÔ¹DЙ-éèI• E3°‰"h"UW¨K¯)‚ ¾¬ƒZeT!¡ãÇm%çÈ#ªI¦ž×còäÈšÆjDÒ/f žöq4pZJaB^ãy,µ¦ˆI`)œ.“w"2̲føôA«¼,r9°G‡Ý6PŸ#eêmuØ"§ØêÓ¢å÷Ö`›ñH»ÕYñÖàLtâKZgxÉd²º®ïŒÀ0$oŒ§ʺΦU^&£Þ‰Q\hj ýbWš€S ðɬ¨s¢¤ª2”%ïhš.Cr™A¥¬îH´ÊËž–9Š|p¹Û„"Y!èô” ºª¨2Ò8¤iœ¨œÊC¢7ª@G<2¹²æØõA«¼¬à¸¯F‘šiŠdƒ SS Hx‘Ñ8ÖD+š¬@ÁuÀ º( ³_9ÙÀ­ò²cZŒ"ÔÐÉA§¦¤Sy‚¡`¨XÇ…!Ì},VA™Üð×^{ÊÉ>h•— \Þ(òÁeN Šd„ “3¶ÓQ޽,“$ãÍòg@’pÒ"Û ÉO×EJRêI+PRºn{òV÷°ˆÜ–a»0‹]˜ÅîÉbçÃ9zð©#áéfrüÌ¥€³ŽØÝ_È›†÷2þœMœ\K4(fæŒx®·þbæb,qåï’A¤wÝJÛ»!F0³.Y9Púuxp óSgOäKܲí¨E“GßezŽëD‹¥Ýçs–T›}ÐXoñƒ^¿xèÀíîAöúïR!—Cm§QdcÔ¡«ƒ8»W*n’Þî¦q“ƒˆ€ ]ê}qЦcÃÃ04S²Ä€“%]$ñ“¼d(j¦ %A4¤ó:0EÍ`5ž’Âi‚&j2•ÎÖš†ù-µ [ZçÔÖή®ª¹´ˆ´J>â”Go=£}V {¸ÚƒÐë/(>•Eƒ ´d‹¾£Á1-Æ¢ºœ›ÎË C¢‰dwZdàÍ¿ƒˆÖIívZÓ‚úJ¦ $ 9\}ƒ\v^HÙA³ æ0½$pÁeÝT#ô´ .…E¬.Ίƒ•#(œš7wÊÀ€QÊøAÏõ'˜>‚UÆŽ`z=_JÙM4òôP” }pBWF½ A›M£SŽ$ôóBam¹‰lºþ厚(åæòÒ‘µj'm« [÷x]ìˆ: x/XâX§¡Ë]’]Fò!Y®)K+q1­œTKöh­—Uƒ­—CUâ1sª›rá½?3‰ÿZ)¯¹UdoÚ;h£Æ C ™\ R+¨œLI‹½‹ÙGˆUpežÂd^Î/eÉòn^l†Yçä’~ÑLW¶Š„ŠÀÎÈĈ÷À>npf\Oô"`¨|”{禗Àg/¡—#CÅ)Tœ .ƒÞWÍŸÍ‘J¹ÍtÇÝ5çEê X3€FEÔ)âOï¡k1iàÍ$XO6µjÛAÂÙ¾ßîáþsôí?Cß«ñ6!\Êñ…f•p\¢øyg·MNÕí^üg÷›‚Nlè˜HŽ{':!K1ÊA¦Y^ÉLj¶„ù¦ËÊü ñuvSgk4éþŽÇ•Ær`NëjƒÎY9¹ª4¶<¡¶Ú:†Ã¦·©ŽÜŒhŒµ¸ìr‘í1FÔq8Ž÷œu¹2`V¯±®ä‡l츯ñ˜†ÇJEb×w¥ðÂÈ™3,Ý:ôfâVíîŒgµ¶|Ê¥ܲ±Ãõ×.äûb4ß@yÞ–Ÿza0AI½C3¸ÑP¾("^ÿ6‹Ä,X ;FäÇLXñ|(ÎF Ó¸“Æm[Ây€ðÃÔnáŸüoN8X 57Hî„F,-•‹ìaÊÿƲÇçä“ù0ÿÛHü`£ˆÉ7ßÌÌq×P‰¾†Á‚#²fb^ÎpÓ†*2°ŽÖo$E“8ž5°Á¡ê¼" ²ˆ_ïêŽÅ˜ë"^µt‡ºRÛËC`HHfUUDl#™œ qP†–ªtÜuÓCY.—ü“} ëe2Ôâ Dª¤!o]"§©@ÃÂÉ‚ !‡–Žå9KþECùó?…ùqüÌffGI — ó=†ùÃ|a¾Ç0ßc™ò=–%¿c˜ q´²!úVOË›±`âÁ!wîräLOM7@$or:·-%¦¤ó3Ò­˜þà)êH …« u¸^!·áy³Ö©ŒN±ÿòC&ãÓz,2Y‰…ºÊ †$™qÇŠ¢¤èª®èHËÌ(—„q²Ìådã•þ§iE*¾NH§.ò¬Œ§@È*¬ U JH— Äáß\Þ|vùˆs¼@¨s 7yh¶AŽòh è™~MÇtsþÇgRÍ¥'ãž*¸§Žã‡ gĺí$—NÅ—˜çãäþdzRD•òäãî¼nv·ŽÛžJÁç jÔWú=?VVˆ™Z/Ê…Né_fyR0iû¾œÇþÁÛ‚BGøS‚ÿÏ{@´ãŒ4´ÃáÿçxVá©ÿ“8Nä$‰øÿ!ôÿÈϪÆùu§Œû‘´SêçÎnª¨8aþ¼çįàß×ÜþÊ¿âÿ}E¿´nvÅ俟ozð® <3õ³«Zú~úîÎe×þ©Ó%ïýøµ_îþÉñs×ÕŒ¯ÚøýÞ_üyўȯ§ló½k?œ¾w}ÏÎíëç/{eûcWLß{ø‰µmmÊŽ«è¹~éå¯=¸ú¡jÿzê„¿?ýÄ 'í¸vÅŠ>Y^¿®ï„yæÐ'}­:ö©&ž}Wÿá%›.Z9ëä'üÃøjï×ê–]÷î¦c«Ó~TS«§?øæóÍ—^àÍo|}ÕIißÍïØÿÙ,ùÂ/yûvýÅ»§²÷Îûèúq‹+:¶?ú›ŸHïnúšSø¹s¦œ~þ¸µëƒ>x|YWäê_½°ëÒ =W45[ÑrÁwi…[Ou)n8ô§û?7÷_8~ú²Ý·œýî¦ãÝZ¦þ—[ÒùõÏ‹ðO[Ó¾çW_~ç=iß«ŸãºÞ÷Ô9N'Õ½ôÒKï¬9oÕóOœý@Óª+¯_ò¿k÷mù»5_uŠn]ìV4¿cçúî®ÿíϯxtáâ-;¤o|­ïÍÛ•ø‡ûß\³lßoNž¶ñ¦µkå}ï\Ô°fëgŸ|X§ß»Cúé¶›ro¬sûóàÁ÷¶œö겓nþã¢_+7ìì}ýƳO8ᄾÿ{àÇï½ÿüy[^|ñä_>ýé”þƒîÙvþÌ™7^p÷’ë¶|2ÃmöêÛœN.¾ú°qæÓ‡öM´uó¹ý;{Ï»~Åáî<Ó.¾a­8ôí+»vÕWÏí«x°áþsÇ7/~ë¥o~önÛ%[nìß¹RÙÕwÜÒMk}zçùu÷ì½ú5܂ߺÏZ·­ÿÀ¿ì}òõç^ðÈãK.Úxø£Wÿûƒ 7/ŸYñ½—^оhÑú·ºa¦M;­cÇc·ÌžXÕÞ>iùÁGZwÿñK+*nŸsÜ´iÓú–.½øà‡Œ3ƪ¬,›veuß™Ñ7þÕ'­•hߺúœéïm[ñù³fÍZ·ôà”]Ëuλ‡=ÆÚøþs7½ºw熳§=ýñÄÞ —>ó’C¯l«¨¨­­ýxÏ%_¬Ú~ÿ——¯l}ö øbEņž½Õ |}×Òw¦V<óûŸMÿŠ/¾}ÿòO'ó‚ðÖë³ö}¾rý>LÆÞøéß9ñÔSßzìš… ÿñ‡?<³â™{…6¶wßµÏ칞_¥fèÏÝEçÙxßè¡I[Ÿ}v÷“›O]}Þ%«­Í‡ÏÚüÉï,æ¬Û&œ¾ê½·ÿíŽS×í4ì ûŸ>´úÐÿÜ|Ú¬^[üü9í–µgÖŠo_>ãý­gŒ¿íYü¯ïUżý‡ªÝ¿xçÖ•+íŸýöÐG{·Ú¿ùŽºs—_Ñ|Áš™Ëä 5mìþFùû…{&œuÛSb°ñß[**õÆ]Ÿ~ÖødGW×[•+o½õØŠïλç{ö}wß}÷1ý7n¸ï©®ªªcvõ½yÊ^¸ûwÊë³ãqvý† @üÖîýûO«hœò£ùìtÇÅTŠyô‚ÉïÛØ2å–ÆIÇß¿­®¦æ¸þÿçë/ÀªjÚ¾qTºCºAéî.i¤éné.é.é’N é.é’®ÿl¯ûºŸç}ßïøÖ!›½×ž9ç<13k¯›¾¾¾ý&*ª –¥Ž¯Cˆ((uM«!!°‹Ë¿]”²ùÃmë×irz’u»¬ôõIÌG3—û´sþ­›ÓÿÔIQäí­§š¦æfݬ~7È—ê»*­7Ûqƒ¦ ¯ºàH½YÖ\íÛo¨÷ö÷ߪªÎøË%34™0ê·âÙ·]àŒû7¬xo»϶Uôwz·…ª—j³° «âËâuA<ßþ±yÔý¿›±ôâoýG'ãfpÙKJIÁµž+–éµà@¯¬Äô“úñ“ ÅòŸÁ#"!ÙÚ5ØÌ³ñ?ü™ü½·×µÑYmÔ²/8óßMðªãñ¢*--mé‡ñ]ÐÁÍý&é“°»ûuܬ­µµ˜ª*ÖŠß“OëÓãçUN||§„8Ô÷f—ýÌ3"!ßûfëÿŒðÜì‹È^ãê+Š¿h%x8_ êŠxBtcw²ƒ”-Wêkee?éã œ÷ínTªhÑl¶þ¡s¼!6P‚9±^—s^´ÿÁq./Z»þîí[Œïs…ouu¹0¤Þ'ÐÛc9öÇfËߪÏþ;ø¡ÿ` þ$‰÷‰ÈõÍÑf_´ûõz(:º(‰gا†F2±¦Ûfßг’dè?Y¹}xm‘ía>P)tó+1¿1]‡K㿈yªLÃúPŒÉ`:Çï‘à'tš<¬?>C Ò¿”#éˆõ÷ʵէG.ÁëµçA¡¡Ï¡fÊu,v^bü³×þAÑ8£‰Iq//®…E¯ÏD‹öE¤àœµ‹ö%ÁcìéLG¼‡‡qćmù“»ÏX¡øïOº]uQþÓ"äè:ÐiøQr¦¼þøËÄ”ëLÅ/½]x·¿L³¥ ÀN~¾:\_‡Rº¾ó"'ûçë›}raÆìuö†˜ÿê/2ºï—7\ˆOK ßìEk¬ G“ãý±;-¿¶ ¤Šûýiÿúî.ÏšçÓu¿Ã¯ @À÷à!9ÇÏß·ÝAþý£ü·hðŸš^XàõRÒ³´ÞRœÕüek½_ÓT6íºˆíÛÒü'pÅ^ØÍŸùÄ}þ6v'ú»0iXoçÉùù‹Ø??{Ðæyl?Öö1wä'“±l¹6¯/ê;O·¸ÿàdû¾¾ÛñJ[œlûN–¤ÿÁw< úžg¬ÎéÚƒW½¦§ï^´ï@©{kàñöí[­jã^iè·³ó»!C²¯DÅÐñ~›oý‡zíþé„#Ùò2¬%»|®fþnd7¶wZÅJ®P¥J]·%;Z£’× Ø[2Vhhù.ª4GÇg/`=gg-Í>{ÖŠ¾ø]Ø>(èºûG´ùRÌ·ÊŽGN| $G‡?6xĬl»\ðß÷9ÿÁå~Ú‹‹ABsrâpë'îæÖ@¬ÁïDG÷±ÊaóÈ D,H”äêœûÌ“ùP©‘4:¼;<òØœ±ÀÈá|Ùÿô`Gâ¯40}‘úç[½«p¹¹âGRÉóòòCåR¾\ ·Kß;E>è«­ýýÁ—½AWIÃÃE!½z=PÔPµè†oÈë1øûz¯´²ÊyGJØÉ‰màa{¹JqÏÞt©­àÎú:tdïG,ê9]%*LÇ…ô¥®üƒƒt6‹—é.–ïßKYÓŸ·tëÎä–ÉÇLÑOüÌ Ô°Ö!S¡Šôc`Újì¸ò¶·téµ·_PÐ=T” ¸X©Òò½êŸºÑ ííÂñæ³El//'V.¾EÔ~èXÉÉÉ¡ÑüŠˆz)âÓ³A–AQéBžz˜ýÁÍ­®»–šËäælK«Ýû†q™“ŠêŸëÁâwÀ QÕ´èµ³‰Ã[aÏ t £££††šÛzùÐk=ž½xF’Hi÷û–@æ—ã¬^¥²e®²ecÌ] 6âöþ¼ À‹¥ªó·ü.tåY\uÌßÚì#ì šÑ(l,UÛû¬RçLS Â% ç@À³¸‘PYI3›„Gtù™Ì@\*Ôa§\h '¸xN¶ÖtÓû¤ÎýÏ„Tîìþ)ˆ<//’Àvûí}ŵ÷¬žÛ:Dç$* "DKþ¥ WkÏ÷B5=<Щ•|IHHìàÑЄÕÔàóòÓ°¼©CÆ\ ßTcq%ë•Í6=ç9öàS£Ûvr~sîöùÛ7%Ï¡——$‹^îä —ÉÉ勜XœÛýŠØrŽÑ@f¬¬°+Çý£h¥(>ÖEåÅ̇ýèwÉÉ®ßê\–’— I07üC× Ä%a±=Ҟš]5Y£˜Pþ2·™«‚~ºëxŠ„–€€@*Ÿ‰ÏŸ·5PÅi_4áéz(éFu?Ià„¥¸¹9õL…žõXZË*ß§;Ü·•Õ‹Õ‚þ¤&âQA.Pé×c ~û¶3, YDM%/ïV0B\$$îôÄALK ª«ëY\‚ÓCÝï ɯÓĺšl“e[5I²ŒLz NMk²£Û†˜pLذËC3;´Jiÿô3!ù±ü-̰çãûÑ4VM„¥{™¨T¢fÕÔeïì ¢X½Xlo¹„€…޹1üÒ7Iȯb_‰lÍÑ`çüÁ®+¹0ááB·ï}c[ŠèÁA0®>TÎX?PM°Íúöâà¼*ň..#á:‹ÏÊë#[ì„ýÇüQM/[µˆ^hή“Ì-Û [[Ãa#2ºÅEŒ¹Ò×Ó©‡*ˆ¤ª˜7Ç¥üWöcÒI»ÈDC8ÍÿÈö÷±ó*F‰ÜóuïˆÓ¡)w&ËãÀãÒúá\ìÎm+8ø4îvH‹¾=—¾Aˆ%¨E >nèòzººæ}ƒxt–`µú¹ÃÎï•ÖìY_KUý¤æ(α¶®SÂðò]@¥f=ÇÀ”Ôfñ{f÷ÞG_ÿ(, ^\\| Eo•WÉ£ª#xzú‡2]¥M`§aMSyQQ†:ÍÙ¸öÅ[ôû{~ûÝ›Ðiðߺ±#laÌ`´É$Z<%Ê4{é;%œ¿+*H@LìÓ#?X©`$F@XEÌGAþø¨ïêòË•›gHYŸIJ;(8˜MMƒÎSgmCtUÇéîÙ3ï¸dÎë ¨ÈÞgMºÝZÒå_+5skTÂMúeÉS¬Uø³¹põ&:°´PIêŸ+s%Ùø8”?ù ¨D‚z?;³"K±¶á- Ȉlkœ~Æó7¸Ž¾•Û—lÊ_N(؈(éé©£«}’öâ†9@Ê„Šæ+  ü=Px -—j²HJì52TÎ1\nœ`Î,ßõà¬âXT6@Œ½=slœ™üVÝ€3'&ý²@ÙiT(tDT~ÌZó^£Û?–Ø8ÉbÅ_¥Øj€vö?9 …3ž)k„6à“|‡¯”UÒS”“(Ùý+µ¥¹™Œ‚Âa/25UùlŒü‡è”¾+­ÙÉùâP•Á>]-)ýÂÅSyíí/a`T^'5Cûµ´µ 4vzÙÜ ÏDC9äÛ¹‹s~õÔ° ~èâ’†y=}yõÛç*Ý>uu-í¥¥H€O100€À í'ßUx‘s[ÅB"*zØÍ\Yˆ`SѲN¯Ñ³®Ø ÔAÀÓ3Ê éû÷Æ÷cOKB©¯WÄÆvØ–ÅËë¹v|¯ÔØè>wWçóཅvëré¯íÑD´µåÄ„u3UŒÈÎþÕˆ-í· rá[L¼ÖÖ%©û¦ëkw2jjlVÖ\ º/÷õHžd p$$Ø^c|U;\:»ŠÀ¦ÊvøâŸEeoŒ ž è˜FyÅýLƒËVù™¡-çgõ7É>¤a{ÿ±Ã?®msÞwg‡9nR "í7åUxí÷‡"•¦ýR AÁ¨€L2Fhå'+KàøèiÆ’ÁSž7¨øøÕàNq±ñ¯_./ Þ4*–*ôDá;³:›™Fõ~‘¡}j1aOŸÿܾà‰Ž.#cô¼9žØÇ¿pÐ4D¶uZ´Øö”û %=# :ßÖ6‹³aë´•û `/´ª *(äöêˆîôx٥˛‘} ‹z\Yð¯\àûÜé ¤ü‡f;vÎzjk ÂôtvK5±\CÞïéé6篗—õ¼Züž7µ®#½BG|ŽN2êÍ PPpjPoÆÃæíõP’䇾OOÃ;¢S%°˜ZQ22b" ˆ²sYCºª¨Ê~ ðÉé©°l<è¾ûAuo*49¹ï¥¯gOçÍ5Þø¤Iu%±¤Ž·«‰$2›qS¦Ô×Öö¶“Øó‹²È~–Âiò(‰á»£(ð'øã>#ÙnA**˜ÐáSÂý:±Öw«B5ÛϼýøŒÈjvÎ’‰•gÅQSs(R¾ÏŸÂðIH HƼ¨r˜þ ôF±,BdȰX ’»ì}T_ØÙ¨]áOC¢Qz¸]1f3𬡠åaÀõ ñÅãT’DÐßNb¿æòÔ“0©ñÒ‹Äšû_T‘;éBÎK êú³0b`§éä«Ìdê¾oï'¸Ø×¬B’‘‡bÉêñ$õº<€†šš.ŽKÑüAìÿš9¥óôôÙH&~dT”ÖHVTüëQú'[Fq»jÚ×µ0jnnšaâ"ºëܼ¼SÛ­99çÛžhŸ*íq£’÷5Ì‘ö¾ð”ÐgÂû‹µ„õ)°e“eOW¬ˆŒ`|VeT ’¤ …Ÿqñ°`–éáÚïßíðð¢v/ZˆÛ[uG_2˜ÃjB¯5¼J`ùRŸŒê{Ä©¤ä·_;,â§Í‘4Ùoß¾u//¿ÄÐqÍ|ÖÛ ñÕ$²'‡±9w?ã“¥=ZPCêÑQˆŽçˆ5+Aš‚†]ŸQ“Pd/ uj¥_/a»Tª?VÈñVÆübâ ÊÑ‘ÀlÇ™íOKѵõ ûãQhzZÚÎ<‰ÈF G?Ä`œàà‹68Ú8¢ÏZUÂA¨¤©ºXl¾2ýz|²Ð-Eº‘ YæAÚ’*oIä½þÌb ‹üˤ%±¼6áÎÖSŒl-:-‡øo„2Äÿ‚ê2e±Zo›cÝèóŠ ›âºÅáö4‹Õ2I‰`aÔ¥ô.‚ñ³++ôšÊúk°ƒ/q¹>—Ê¡qqáöô"~ísWÊÀ‰W¦†VOÒ×—ñìÜÚáH—ȼR9 |…¾½Y|˜œLë:‰þ€°¶°ðÎf¾†:ñýÀ¾ƒ¿Æ>Bp]׈9­Lôøx¹½3ý/'ƒ©™32ôäL‡õÇ•-‹(00Þ_ ë¿_"-à 9ÜÔ@yûÒˆç].¶ %«í¡¥W£;òéêJnäö>Óm¦·("lm•‡GØ}‘³Š"ÔÑîý‡ÃzÆðG:×?bb×´ï¿ßœs\Ÿö;ýÚ™uªœ,”p^îS-’Œ4J÷lÃPyOoe­£¬³ø1=gjšug_Lj…¥C0*×5uÏž÷ë®®¾íξ#»@…õF?7'PØŸdËŒ‹º±-F/u¨òŠš{„Åü«»à!úr ú÷§0z.ो «©ÙÚò¤zÑò£µŠýý}„ø×ðeººÓ¸á«¹á10DÐÃS‡Mª E$Iùä+@ÆöJþ#¾ozÓÒ½Ï)aÄÌìVºhÐò&‘˜…Ë£fŽiÙ%)Iö`ÕÃëj[ŒN]„¡;cW«ÅGs޵®ŽÑýv·Û«M€4ƒë »½½¡Ãç)œæ1 wï¤-#Ô¶åNŽ™¸çhyÇáò༇Õ=ýô´Ÿ¦Ú¤Ÿ õ²W޹¼+ËM‘ ùŽDˆ“PÔ—kÃÌÌyÍÍø ýGí^l55…d””—É~3Q’o*tß ë료æTvîN&)/¬L©ap!Ûoh…’brÍq§9+ÐÔ\ˆÈÂú[0Yº ”ïœÀ#ã¡åû & ¸“÷KebÎoT•í€Ñ­‘ µ-xc9–COrµõ N”ìDÊÝ ¸.:ê¿ÓÚÚͯ»®týïaÿyc–FR¨½1ðñ£¾~5šž’íÅ[²ž Ã0ñvùPd¾}#§­-ÄO)ÃŽ§ÆÄjt…j¯96uÚØôêe‘oªçïöt¦T»{€$}ýËèæŒV«Á‡Z!o¦ß82±Á/ø÷o僥&`(Ã>)IƒŽ³z|'£|„À­3jRò¿¹Jð¢'ñ½F½?r“ =ô…ÞþÜ=S—˜ûJN¥ÊeO'£é­Mçu$3Óçúz˜øøN­fö—ÚÚª,ÎæK¶«~O97ˆ0ººÔs÷#«Šºµ }yeQ±nlÄЬ`ÿüå FR"2µ»G%--2ÐòéØŸ>ÁSÑH}_]µþþð縄ߣæÐÞÞüq ?gÕy¬5øÝ[H`Výü^òðÜ\_.R467&`Æ59Ýø…A›­Ûô3¬({!ºT3ãäzÓm#œ&ÙºDàJR«KK«Ý½fî-U^‡,‚÷'^™<çD`”C/ڡצŠeùÏåQMÙ8|/JåïogÝ¢‡ŽBa6¿~EgÐN`³1²´›Éý,¼Wµ|³öîIS¶ Üp•Wk‡LŽJTšÊ( Ò†Áo¼Cf3¸ÓPÔÚú.î-îY Ü~ƒÑ «ÚÌóë2fUì—Ò•D‡,Ƙô׭̽ÛAõþ“ßÛ#Õ‹39使¯O¢Š¸ËÌÌIMíµaµ:úZ·„8„€qùõ+Œ)Wëì¬ÄñÒ†òíÆIà'ePÔHúËEûˆî/2¨ª¦¯é)ihH[Ürß-à¿1®2W€Õ¨ÈdpD Ü=â\[v‹Ý(ohïž*~ë~1ý$*úÑP‹4¿ªŠd8¹-&VèÑÒó²+íVçíÖ :k‹õy‹cüË;¸TÑYšœÌ®ËCr(†Š>b7ªè”F¼_¿ò+b ‡Ò?–•ÇIw…:ãôš)Ù1«ogThЏ…ŠÑ{ÑEaÝeÚŽØX/¨ášŠÃW-ò~mzÆ­÷©\ÊW¡-_Qª*’_M|6ð¸¨_úydç<äa ûïô0?33C',%Å=…¡+ƒ‡dEK[—šÑ1-Gê8 œ0ô<—L#bVð¬·å5“ÝïCl;EÜ„°p «x‡_¾„Å%P|^óûq§VÊÔHà :H„†5dK‹O}ÝZªûvn‘Í© 6U¯‚[²”˜˜/´ª fÊ…Õ¦*.–š¬lþð¤gÔÍ}{ï{ CyÖ`¸Ü|•;íº>ž»£ÅµGê«©CP¤$Ä—×Ý¿·§æþxãs}ÔB¯UC³Ø`AÉÏïÐCR)T;ÿñþž€ˆß¼cˆhî:b½†<é峎ASI³‚šKÝè7%ããŸCZZè)« ‚"‹á‘‰îšú¸Ä*¹ò*{Q~––«çÖ×ã×ÕÑ ˜Öþ16à –Ò%rŽˆÞ¢ääüô¨7±l‹WC˜&°:5›U‘ÑJÊöP²¾ý¤Ï¶ŸvØÏ¬ä=Õ ˆ¥ 覦þ(XW–ÛJ*( L-eŒ|&3èé tgb,ŠñòåÈË]´ê”˜5uÚ&' Z^Ó%ä¶,Bïé;‹O¦Þ†RÈfhÏí’–“ãcÒ+d ˜ùZʱÙ¼fb‚ü?úf$#%,,l‚~mùë‘Ýs'g9 7»¾³\VF;0ªHZ`=aÕá¡ëßùXZ­Üø‹ •øÕ~EÎ;%ÕN[‹s-W¬à<,±ÐP’# /ÝVðAT÷mm'¯5í\Šì.T>9Ï#½ˆù°øÑ‘Q“¥ý¸}7,–tå#«\î¸C‡›ØÁXúK® 8žL|¯¸†ŠŠà»§6@rÀþÇɪs>5ô÷^¼Œ›ß8u­jÄàR‘·³T^D^;ÿóAÌð³-+/ï.ú&f¾4ãú¿ ¢@¡ÆMX°¤ŽÏÍ™ObèêÚè´Å–[$š•C.ßîÂÚX¥ÈÐû‡6GcnMädé T^޽†2zìw¿¶ÔÓº€ÓËèšúƒ9’“ÃM‘ö­;€ñ÷Ö¯_›€ˆE+¹Œ'òÂAÀú•|Ù<´Îý*_q5¼ÈàÚùnɾ޴S€¢/Lp¥Dýøûä$JŽÏå0†Ô\Ý>r¶Ï%ÒýõfòÛ]<‹|Þ߻טXÁsõ¶?'M¤îáLôXÝO0?Ék²è79Ánl\S^ÎÍÀÙØäëÙ8G«ªö~³Þ‚¥Å&ø”B‹_8ܦ@%&yBB:.Îê@Ïd”„ «6Ð&L³Âÿ™1e¤äìõÙ^#Ðå”›!ÊÂY› 1ïø9d!p 2YŠ?;ÄXVi<Ïïp}‘ÑžŠ×¾úÃø¯PêÃWeKh(Qr4 ‰"5…‹»«>´¼Þrpvîž³â÷7‡ÜÐÐ1mÄ-y¢ÏᘌƲϿVÚK¼{GUS; èCPPœÛMñ¿{®£xA_³ý|IQI„5fÔl“£×Öâ¿î€\Ê }Œ õÜÌ—úS EM`4‘§—M8k`ÀµÛ_Rü¾¯vì¨Mè“ÑÅþõdŽFÔÞU½Pâ`®•ãÉš·Â>0›Ó¥“XX¼y±«ÓRoßT8‚*^æúÆÃxá›%Ó¬ûö·»§JÅé<:ó’2ù˜º­ÏpIå¡¿{û‘$V½Þd0 s 6©§Lc¤æâ¨)žÊkjZ6¿ÖWŽc­w8ˆ=9†ñˆþ‘ x¢œ¢e}ÈT X(ù_3»’jš\ù%²á%%æSSìΧ貨PklÐJ·møÅååá[Ûîà«ÍXR•õ–G^‚Cо¼ bU#Éâƒã1€ ëpõ=1ð70\ÚÝë¡lS³ ¨Y|+´õZÖìYÜî'l—G±ç;Öè$$aê¥æLµ)&xð"{?ffzßߌݭkêk¿¡{>Ë€ƒtÔ~§dÛæÓã1.å£{™ÏÓWÇ ¶T죯\órØÒ¦Í|B` ª@¶çÞư{;þ ÌæÃs^ARßA™sôXvùGùB‡ñþx·gÜ- sÏG™£ ëËËÊcÿ´Ž[4eIý¬R—_]òãªêªY°(R]s`K4d 2X%çϤ% …£`ˆ  fÍɉ‡¸ï¯ùÐÞª•¸®÷Œì”UÓ`+º½ÕH•7ol”÷×"ZÊ Ä‹HÅó=–¢~“ªÿKª`Ò%ÿÛ·xzØ7¿wYQÐå°LÎLOq_ oq»”<+RÒ\_j¢ƒøÒÙY¬Ý]ÖT>çížU5¢à6|dj"O˜¿ìPxîî†l ÷ƒ<’MlŸbl¤—…¨$ÔW¤¨nøp;ÿ7'ßá®?>¤œÌ™Í˜4Jkv_'ñ^ßy]¸¡:_»ŸŒƒÀÕ0AüèÒ"+GXíåFryØU×üÜy‡ÚøpùþOÑ{×ý¡7?®¯7çÚèÅ¥B ûcêò1¯¾³¥ ŒxÀ*X/oàŒZجA%eêcö=E#âý£#Ÿažóì0‰>z®•—yÆŒ…ûQ“1›t%×F(éÐIΓnO<å+à WZÅËtyˆ‡“H.:u:DDü¢{tÝä<ýÉš_vŽ›Áç£KTðßyºgÀ¥‡‰‹pž£§Î 5<ø=ÇO—œ”xÇÒk­`ÔT\ŒNàö[“0OÞ'jÕ³Avë YÏå‚6Šë-.°¿e!½´°Ä¨&m‰ƒÚ(b¦¦,mÚ¯PÇLÙĨUó[[+ñt•É$œß8Wþ€$¨³Ð"W)?^J( b‡ qßûj"•bÄ•i¥Øu6‹±ÒºÛn™Òî€ç0º™)' W¢ w¢†¾³¦e´íQUò‰IH€å¿?¡àøSóö‰ëñÏdí\Í+8¡û*µ dØÄ¤ jw~æû»Õع­Ó€ö¯±¸üPš³î—ó À,ðé>Z*Åb=j…Â!Lk³¤4nÆP-9a3è$›§¬ë£QP­K} ²š[YIS¨t<Ì1:œ’r¡uܪÅ+¿6ý­ÞLÈ\€ÞrT}½"”¼î³ 7"Rfa]¢>R«›£Ó<{@0¢ XU8,M} Í#üå„rÕö,õ8Eø»¸vP(œðkdiì *’®îçä˜0"dk<ËÐ:×4?«òTitQ4Õ užÇCAGŸPÝ­O­€9ñÁjƒýv2Ùöå 4(ÂÆ¦&2&Eÿoì¬ ©9ç@ù‡Øº§ÉNCÖ!mëc[š¿¶cÐ"ëì Æ©¼Ã~Šñö'“W= Íkls|€ÇuêÿYüë0Þò î7À«m ËS¿ÅâB Τû¶±°_2ÿè¨Bƒ[Pß¿Gœ|¶wcÀ~?B4·š6%i°éÞµ·/3õ5Ñ%×¼žžç¯Ù~ÒáxŽÏhAˆòÓó GÚ¡ŸX&?ÛŒóÛ‚PNᑉðhh=%êoªŒºmZzi%KûbˆW×òcÉÞ8SÔÛ<=`·¿{0e2š™1ÈÙ^LÃvû†/±¥«½o¯g;á"qi½x Rcþ0·ôç<µ’fgÛÍÕ˜ñËWuUS!Ç4û7îUP77uðð'}zn ]éø¨2hP‡‡ŠcöÙG‡K%A= *”ïI«ëýö~•Ù!VS eœž9E,wüž§ÅlO8jÒ¾ àêoõõhx4I%d)ÖŸÕ¬B¨®^ÆÑR¦]6 ±b1}ž<ªèLLvš¸µIñ?T͜պ,¹ßøª«ËB2’©¿7ÒE¹xznî )%9ö™¤ £f»CZ×í~ÞÉýM8<"¡NKù&Uûm ºy-¾\J!1ßRÆÜ?¢éyÛJØNNÇ,9b´}{Z¤Û OÄ‹lçT†Ÿ9O÷OdIõ\n‰b.4tI¼­~B{ŸöÂ@œ›í¢¥ ¾á±Ù2zš|´}c×JÛÎ[5*1ww2ßÛIvS3…Α4ÇK}’ÐÂ>W‚~mhÀ¤ 3SÙiŸ½±è3ÚÑ`¥Ô+÷ݵú2ãíÛÜ5ýój©Ë >éXý+ÔÀΞ- .ö¯MçløXÎSS}?Ä¡RŸÉGI‰çA– )rF6Ã#! ¯Ù÷[ˆCvÂB þÒ¸£º, ¿JýÝBØå% ”Ï"æ«„ª~urÕÞ“Ój%A ò†ÒZÕX@?ظÃʺKaÆøú¶; ?}A­ˆ,eUOKK!ŸÍ êäÔÖO85] a:`UO6cÍ@M.Ø,ëOŠqŽg|âõÙ0Ò\íÿÞ¾NwøÝQÆQZz†Ëõ°* )¤"muêÅL«¬êôRî^Ý_ù1\¶=ÞroÞ¥çvø}õñ’¬¦¦pÁ‹çy¦€N°EöÍ3È4îAu¯ûýiKfÉœºu®Ì\Ã1…•U:dZÓë8+¤ÎÚ‚‚¼ó4bÅÅ…xÆ+sÂÙÏ­º‚o–^q÷‰ váYUýoÕ ;‘êSŽ÷òåǯ_ C ñ±ûBÙÔÞþÒüÍy}æ!SCLMULSXôŸÏ7ÈLW(dMA2]c1xa!yE´ ykK^íÅ¢úw», 8ëW¯‚É_IüB—@µKÏJ,"’PYM-vcXnS¶Àþó¾_ƒò¬Ü¯$‚¦ÔXÙÌOØœ› Á¢:íF3ãvÌ#ªRTìÁîÇ+£Îgƒ©ôˆÏýg!&ª¨(¨˜]æ/ü]ÌÕ•w¦2'xN«½-…ë þ*39ToÓ!zë*y^Ìáµ¶‹š‹;ší3º¾R&t9×ápã$Ðþä[+¶mB€Lí}6H{Qi@É>EÊÜömÈhƒÕNR;ˆ‡çf`p0T47@3¤¬ŒV«w9×ø]-ö;¦ìwM}˜áqˆÑ¨@¶åöšã9j§-ú÷ŸKÊË¿à…þrz6ˆ‡T]6e€ÑÑVìœVãs_Cä %DGÛBöÈÏ ¡H¿ð_34¨x®Í€º=)>2. ˜³£Ü"YC€˦»°è¥¬Wþ«90­<Ѭg·ZïÔ&ÄÁ(÷ ý¦3_Û»jô¥yèÏfrJJ$\6 Ìââ ÖÉ!›z2¡XÐ96Ï€Ð>jÏO‘wØ —£S_ß-ºÚø5èTf Dèw¿‰ºç¤Q¼Àj1*w½||Ô—kÉGé:­*¿‡ý­×¶”7TÁ¢€¯ÈArË%1ÜŸ™F&¢1£tÿòº ñíAo33¨µÿW¦IÖDR0Ô4¹³„o8-¡{URšùiH虉™¨“3§X2jÄøÔ×â¢ÑOO½CŸîDl´-ôtúßiá&iž ìÑþó2I",Tð3DͽjÔæ&P:)wÈ" ÊϰR͌ϓ.Ý@Í€”ŽO§ëú"ƒ!­ˆ*¥¢Âý2p0u¢ƒÌ{W…øÝ;XÒ×\¶ï¾-úU7uÙiåïB6K3U 8Üm™ÁÈÚU{Ñr÷ˆ“Œ«áE‹kÖntâI¿À•|o³K-ðžAm)nb²rUï'í°q¹ÖÖCq× á1eãØóÃgnoÄDäž]ÆOÍíÌäÑ9]rÖ¾îeÆ™óâ™5cI=Y]5Ùµ:Ûh±Þ(áê«;¹ÿe .fƒ\ „¬/Ì×°‡îÅt$w:Eëéé¡“2¯ñFïŒ*øKÿòÖ[ÛÔ³¶†+)ù”Q^Jx" °“À"š†”–"QP’Ç¡¼&›<Û™ZY ¶Õ´FƒiècÓˆ¸;G]§! 4”®žú œ¢(ð=•¦^‘°(SA•  Ÿ¢h!K,½¨F¡/q†=/å9g“¡$ƒ1DÉF*orù­–Ö˜DdÅ©üÈ?#icãgÖéî.«ë¡´Yƒ)ÊGÀâ *ݽ¼ÈB"ãRùµù™Pg2… ÇùBAç YR®–‹Ÿ‘Þ±cTTŒN¯¨²hò›GºzsB¶\a¾ ¼žê«ù,<„’€…豄¤W/ÇÆúVZÛÖT¼'ðÛ¾—HHi¹N@sf|ž4ø5hÜb_dÑ T›ÕlN'@ÈWS|еk7ˆjö?P}ûö ²ä’ããŠóò%â—/aU¾  B»wW¢²@„~•/ìKTbêeöKÛï=ÜÛ3gx÷¸²£µT³ÈÌÙé……gý®ÍØÕpƒ§[&/æBˆTŸ·èð×XÀ÷cΓw»Ø“ÍR(w"neÈôVWð»  kãÞˆ]­:+ØB…Èš«3»w'de 7éþ<í ¨ íV³3:&MðÕ:Q˜D ((Ó¥ÍN £:0üÒW¥¡‚ï9>q/š%œ˜ú‚ÏF¨M­êÌ3÷@ÉʤjãØ[N@:Øt˜‰Õ?,ÙóóDcòò`±_*ë2ˆÉÈ<<´¶½ýhzÕ4Q-Ù 0>UKõEý³p‡’T*¥ë8~ä.åùœ9±Øñ@‹6†˜¾w0që÷Á%556®l•ƒæö˜‘fG)^ÈœÔlÅÈꟻG“IoÄ{Èö_Õ¸¢0¹Û|:Ûá+È’Éøî’C‘µê ^JPÄ£‰H*VðÝÞÊíèÇïé.–ÛíˆçÅ îY‘  &¯c<ÈT6&y½íp_>+@ê*ã7=nÀˆ©'a;¢k”¥Æ¸ì›“3ÅØo-'<6õ)iŠX…64À©¨Þ9E[ŒF¹4çȰ±s"5‚“JP…‹aÉ¡ÅìOO­ÊÄjœÊn|>*|&^=.Y9B[Þ_óØ$cH22ëœø]13Äö 6t_ÆvDäKɽÕg ­¬¤êÙè„LbˆKD¡óKOM…@’"ç‰?4åK„ñfHŒÉöbAÏ?ˆœö£"^^hÙ>—$6KÜý+rÍäÑZ5¦4W9›4Bi6Ç[K,åõ„•¿P’ôТ}sðPHXþó\ˆð*ÕûR‘ôc ±üfùÖ½®¶EЧþ³­€Hš"iÓ„Ðlcž(4n gSŸó6wo'…“óOJ+«wyޏNXžžQP·®§ÕÕ/edŒ¤eC…×–„®L-gž_Þò&¤‰xÍTS§zY‡ÿÕb9žÿà[e(]П¨´mpo F|@ÀRþ憈Ë~È쩞¬ÝÚ²’_:'õ69;×¾²²Ãƒîæ”Úiê= Váfk®È—±óL¿~þ”üÖpeè;?‡èÊôQSÆ$³×8@¥XÂLJޔÍÅ^-1R× RüÚÜœJQ9üâä†_\‚À&HBM…‚R ã·ZÚqº±`Ÿ˜1CÈ^vκ"×€ûñ©¶lëeÙf÷¨geÍU¼‚ÍŽËý36f¾* -¿íÂÊÍȈ)J>6JO’O2í2¼`$$ØÜÿœ²€kããȪ®Ø óD¼FM®Žœ•KùXìõ)8í2sîMk&;:y€½Ö©ÿõ}ye±¾ÜµDQ×PQ¿zƒÑûñ&Œ“1ÈÎoÙ$”Û£Ë^GiqõÇV†›ßÙr¹\Ã’úyeKa³Ú«Z(¾à¥MYXÔFêÇ ³ý¡¾¢‚ ²ö:?¿ D.ɸï|׬µ·4ÿ¯k8'ˆüàÐú3:AíT¡NNÄäå-í×µ\Èi^OŽõsçªÔ鼌MëbuVÉmoOâ_ÛÛûxrâ¿ÒŪ*…,ùÝYÿ5òçç¨Aè?C#zzªÿ¡p[ ʈÓßGœßgg±©%¸ÿ${ˆÚI=}<)ƒ\XÇREÆoûŽ]TŒ¸©¶ €¸?6åÒ)E¤ô°fG¿‘å½nG. $ ©޵ ™ÉtÉîuåS:LüÀMƒÞìlÚß\$©ïëî”ÚÓ~¡ ÿœœss‹¤ÄÁ(æŽûº¶§aÁÇkìÇ?EÌŽ=ɬË**?ýAž:ÜÔ`C6) µ!?>ê° ³²ÞïÉûw» Ë8ÜpJ-çM]U%\Zž#Çhf1dG3¨`iÅ Ÿp⸗¿+:íCvˆ¤Ð+k ›`nm9'Uk5º7òÀÄ|'ݪqžƒnÇ ^ì7gWïL^‰lx ja˜w›ü/àF­)‚¢h@¢^ªë,~”KùÒø¡æâ5­[P[›@\E×'Zù·6CŸ¤©¨”ER£PþÎŒt¢»6ÿg¢÷ŤËÊMK‹œH™µ­prќ¤ aœ7¾2ü­¥«Ëó`ÁÖÀ×6Ám5+"špÇðñ¾‡õÔ¼çD¿ÙšQÌ«›ÝǶ9\£ ~x®D× ÈJ3ðj$\»îVð¹&çrà‹pœœÎN7"á ¼i‘ÝRÑdÃí·'µ—ÇayÐ—Š ¾Ê¸—½L?+&5UÙ‹Ù^ü5vúŠ;¢9™þÛxd,j(Q¦Y÷™²FVGô %"W&„EGþÊ–E¨ÏÌWÀÞˆ½KÇ“‘‘‡NÛNŒR 4£@ãÔëîFY_‡æÔ˜ÙyMMn•KÁŠ/@ @äoŠØ5"¤FcK‹ñÏ/ðòYÁ´ª¬f²T˜XÝ}#8²lí˽߾IV^ôšç*Yi1ªFô»Ţ¹HÌZd€¡L(ÄÎ]i“x!«šTP °¤\r±oAùÚòy½Ù³!ƒÓ'&ŸÄ×Ã÷é.‡Û¶þ[¯q§ÀUkÀ¸²pàOµWNv‹Ù;§Sª-Ž÷פ}jß"%'óøÐ6óc /Ü[ïϬ¤©Œ@Z~5‚[9œO Ý6'þù“">++2Âͧh§þÏVƒM§hfƒŠP}û/º&]¬?¾–ÛŠhkcáê¼Õ –úg¾wiI +"«»)ÀSocãZ‘ô\Ün¬.b€-€KUüòÏ1­¹5‰_ܪGÙ ­ARv7«&üH)-SûnSï°¸=_fÁÁ– ôdOT«îŸVE¶×äÞÎNø¯_ðG(Ò`\€.ã1;1eÛÜèåõ¾Z~Iħ,d®É«ÊÝ‘ ‡Y‘¤6ˆkäÛT1"$W}u^ØÛ»-y³ªÑ•Ïf¨¿: Iê4ì %õ%æk§è±®,³*Xnf„ì^¡ŒõþH)•-*á,„ë³Üv>J [ÿêãågLýÉŒ<Ýh£ÝÛ?„ˆ5á¾ÊS¿(þ•¶Ó\¿ŽÝ¼o°¯¯£c–Šˆ¸uŠ>?³ú<ñ¡kl ˆMÕ Öõ?¤éý®$m /ÚVàÿ3“´ÃÊÇm¿ÑãPä½,’¢o/¸èËÏ™•X:&,m:õ\ˆ~¯^[Í\Ò‰A•øð¾«ë5Zú†ðð!RzYˆ¸Ì3€Ú%$PÆ÷£×N[Ylß}8¦z句ÐDR^¹ÊD—ÛØÍÁñƒ%ƒñ¬÷×àÆJ"<¤¶}?+"t¯B)%—¡ó,©„°ÿ¾,7j`ýxçL ª«Q@±Cçx;!‚ÑþwJ¾<•‰ãæ†ð‘Íúß½sßÞ£ííëœþJ”;60ïšžnr ¬‚™–I¤8YñBÞ³{»´’is=T¨s½[‰ÇÃÅfjÐàÑ ¸¹ÿ™O–Ôsk€njzï«Uƒà†¾d€@3S¬'Gï N_@&MR>jxQ U[xÊkcÊ GDž€ÝÕð|ÄÓ0[3$èEÀäSŽTˆ|\âJt‡ôrtS3%@qÀ}×—€YÄŽ11mR4õÔS€¯~¤h†{ºã–ìó³3+e--ûó¼Œ*f 7†ÞÑÞOJõ¨WrÔFƒ Ø@‡.x…£JTrmœ¬C—FIC˜ìDÊÕ–Ó&UÀœ¯´¥ùûa¥ûÓÃ&D{u<^ø†õšlî<Ç¿c”Þi\MF¿¯ÜNt8|tîëÿ™g^r™¥ºßb¦ï·Õ(·PÙN÷ vá?diÏÔLßùùqE‘_…ãwµI˜l_X«ü¼§'ŸåJjùø.¾S—~(ïïĦj6ü >;\ìÆß{ƒ´ØUˆûÝFåPÀ -tó˜*(@€_-­›;ÏFmY·ÜèYOˆ‹3¤ü6׿÷'nÒÏr"„Ü8‹ãWh¥Í¼êÇãM˜™<ªšš¸#™ø¡@iÆ%qÀˆù·¥üvˆˆ$<™·°8íÅÅ…(Ã,7Å®f—Z€g©G ¼®eØ~×Ýú@égxÜ X¼„Çu`ñþó`αRÂíOt3•nFÞ\#itŽfսוdz‹½ôôIé=Ȳu±Z0¹jÏ d`X!—8Sõ舷ÊdÀЧØ.Mš| —Ô©mê3U~ˆìfû”2Ü$jð´áøîU ÝI<ùî…$;Ç{XìØý=µ¯_•ç>£q(+Q ä_ý ŠÓ‘06.}šá¿ì)-EÚØ´m z…IÞö\ñб (3²“†«„Ьÿ F‡5ah::lHñBê²åÓœzr¸¾àÉ ‚,oܯÀfÐKÿÈãŒÙ'¡¿UšÜU¡WëÈL㛳¿¤1’þ’‹ieŽ˜_˲‚`gÇä~³eàÃ9¿"Gà:RUYÞxµR|}žs (Xr(&- ¾VätSM·¢›tS ƒ23½´>¦è ˜oØ…ª6)˜«¥AƒÌûØiµó£ÌÏã§òq麧ÿÀQS{ݸÞÚJ ]PÝÔw¾ýŠ‚;Õ)z°î}Ýò×rb-~óH/þl\ccXœØüü~ 5Ô&è¦zé ¿¥.«ŸßMÙžC={îÓx°™šÚnäéèè<#"ÚÇC‡Ëâàá1ÍíVA°3ªžûíu"þéé3SÓ Ç7æ=d¬ñÍAáçÍiO¦Šß®÷Û‰¤¨ÔmÎU«ñ~À,›?ѳ…da¦,.z)¶›ÃADLü…Ð|³ãÑGT´OîP¥ÞææY(® 0…î7^ëÇÇfÇfÑan«\+½»“c17(h‚×–v3ëû•~\cB5D:õÞ……œü·–ÔÙîÆKËz‡m ¡Ÿ§]׿<;Xö"Ù›…¬=§(uÞ^ÔÆeoñþà($vû%ùž=Kw=õæµÐ/Ÿd‰¡ é§š2?a‡|ùrº<.’Òi(jb²øy¹°áøn34ã+ÕÔà¯jû$µÅý.øZ‹÷žž_ó)ÈÑæ›}²“ÔiÆ ®Á@‡yû"€í%t|n™Ê‹‡ˆ<¡%$lìøÈóØÊñäùdù#Ï~¢| Vù,}%x~GIýj÷óüñìùô_Û+cWK¿~%&ŽÙ. ”t°SÕ`ÊcêðN s²±¡)ˆy{óÚØP\¸ˆ¤0­ü^Òæ¹ëTñS”KVâ¨bJC‰lAÚÂì"'ÿÁxdqÚÜÓ·Òð\³Ê~õe&3ñåeýïéaÒ‡Û:ÉßrÆŠl'…×C&NîàhB%Š7oHcf0i„bв­Ì8HïƒÑµ:©ïYžŽ^T;¬ŸÿžÈ/¨îþ™QVöìÃñ#k_ìqת÷ÌÜúïåéÒ÷¿gíÉ}ï?JŒ"Î|1FÝX´Gë.ż³áö¼üÃåªEýŠ|•‚bÔè|ûõ—/KRªQxÝ!.¿Êæ1œï£\¢õt÷òõZÌ÷N]¥¥}ñEÔóh=¼/ö—ZRž¯qs779.Öë;8|5û50¸ô‰Ñ$wÏms d¡ÚNž K‡:œQfÞ³‹F‘jcû‡Ÿ‘„rœçÅÙSer:WfæŸnœÒ˜Ú'zYx·ßãKVæ%[ˆ™üiAm^ÌF«íÃÒ2Mh¸)·¿g+Q²}›9À«-PzL@ªÉXÏMOct‡ºu!” ³ž=Úˆæâ$§Û#(”÷À´o ½¼Löé¬ Fzú^¢Ïí²§Wê‘“É{±óÔ®|›#a`ù6cöx}Ù­as<™tã|­º„‹^,Ûy› t 1ߨub¾Û1$Xw fµQÆ07;…ž…§Õ&§×W«ºSŪHå:^yr¸¤v7¢+ô|Ö[¦u =4ûðaUW7œŽ 5 f„”jN¢ãº÷VÕÕ4¸a½€i¢d'!Gþ`ÑfRÂI^†˜Ø³-Ϥ¹ö³@-“;> ‹ÓaO ³¦ií—ÚNGg‘úB…ÞÔµÁƒ¥¦Äèß¿±u[SÏ D¹avwµã¤©,WZêØhmÊqâq»2t<‘DƒÀ’SRÂAr¿ÝåtßNã´\mLJ3OŠK¾„"äÌì"í¸kú=ÑfÒïÚ_;«£çcž&CêËŒtóËHœ6ÿzÛ¶(âä•厜H»eAQww¡ à WnØÄOp•øOyp ¢1(yñùˆòç;ž·,†·ïnG8Ñ,$\õõœ'§ok*5™ý>¯$(+× n!~)|ŒläÞGœþôá5ö3WWw/.‡ª”f›àºOº”ÉÂí¾L55tŠd^¿¼ãß%Ìe‚TÓm÷Æò{ÊòO¤Ár<3¥€D÷@m¹¥A¼Á®ý÷Ì\H2#Æk7ù if¡k<@A}³\r=L§àn¤]¨W§.ç /SÑÒŠÊ—2©ö{zyÊÆzp|"¸`t²†~}ÓDÀ'^K–BrµŠ ÕpôÂ÷I€5è­Eéês}ýÖÒZ‹ÊM¼ë}ÑÈ­·oRy/d"‰Zi¨–D†“™ ޼ž²æšÎ‰ïô¦ŠMô„¦³Þìh ‘Äšôo'ݪð0BïͺU¥#ÍnïàÝœuT™B¿€mÞœT’ú žÓ‡:lúŠÆÂpæÍ\ór…AGèg24þ'o\d™øÁQÄ/Eä¼¼z˜1.Ñ2¦l< G%XýŽŽ Žë¢lG+ŒzǦƒkk…÷[ø55¿¹>Éüš›cé*›ØSXfz60À-.Ù·ÞÈÏn§‹FÌË®9Æo¹8ù\šp~¦ÑóB£€‰Î"úå70üäZ[Ü ¾çøéKÚÙåÞv9, 5ajÉùsò 8ø÷&¿(Ôoç(ì€ÎMäù\?Þ‰ý^š'ʈßÛ›¡V)‹Ç%ŽYDZúÍýêŠ$?i¥1ñ«£œµ§G{tjùßfè(G‰&òû‹®×•!¡o°·0†œíb61•%WðšljŽœ@Íxƒx$£¥?¶ßd®*È|噵iø€¯_­çj¶]yc?>ÿ½´ žÈoÙ¤ ,;šÅ›ŽÏÐ sÞ!™áˆ‰hOg/޽<¼P½ÞèÅþf»ßþJcïòP¾§çËzŽŸ9õ¶Ñ bš<ªŽáõm3Ùwârúau0fùï'%ûP3z–[æ}HÀHlÜ^x5º’Tè©>VÒÙÛGâ0f®oN¾d:¹°}f`€ Îr"&í—JÅù 1XØÛÛ3XfÓ–û3å9°Žaôšvɲ𥾗œä#9­I)IêE™Í†U¦x-€ªŽ"¡Ÿ/¬Ï[,~Ÿžœ#OG ]»>u/Óq{æw‚²o<õ• ¯ž/ËÞæà$jàæHV ¾¶6ŒûÕ²ޛ ¿ÓFÇM™Ö›m¨!f¯Ë?RmžuŽ7Nˆ1Ä¡ïêZŽj8Ÿ®üøª¬g=ñ’XÏfû£?cK#jó¼1™,|߇:¶„ÉRÁGw.‰Û?¼F7Æ¢ÓÅ‹-69|½_YúÕ ƒ3Û«‚Xß·‰æ]Ý‹«»y¾Þæfÿ¦ãS{asŸàô­‹ú‡ˆ·WA—‡F§ðð“ÝúqM´LkÛ ‡¯è÷µØSïÍ÷uvê[Nö•öùù8ï(rn­Æ„cyUGE¿lvc†›­XV§‰KL8¢`=EÑ÷YÊrü3ª·OÆg39Íëë׉ýC¦NX¥ÄýÓèÔáч ]Dµ’°í@Àx]m:¿°¤½œ›WÃUdHCwýðAXØŸðc`Æ£Û©8ic3/Ÿi⧃ “þj¯+˜ûKöˆˆˆ‰\1gd‚)’@¸Ðï½ÁáJiuê3ûêü(_m ‚ÿü¢rh8QŒ>02"»ÀÜžœ–ª$8貯øÙ cæz#2ÞÁ¹öž™R þˆ¼9ÀÂêóûå¡EµÝ2ÂRc|À<Ö<¬´ã°¤²’!P±J¡ÑÑ/ÚÛ™öÒú Z';ûeŠÜíi?åõI÷rœô‹ (ó{¡''E©ºäщ§jc’ü¸/¬ÎÎ"È’¾/.â—¿óøìb­ ¾¡5¶h>w``ì°Ú.¼“¦ÂD&šC=nãjTyHg007Ïn>:,ÙÝØ¸(­ð€ëÔät°±·ïçÇÅnÿXÜÑAÈüYJG“p!‹ožÛõÀHåz¦î«æ „*õÏO¢È,¥.7õy3Í°Ž„›@ž8¸þ[‹ú¨ÀÁ9$ÂÎÃCb:›AÕœö?°Z*Ãß^Ù›\p¤––ü*[ÜÛÙ™‹‹f+“HÒÞ~}³Ó±J³VÙ±"‰3ºE²Úv÷ 0%,ÀïûSУQø·ýA¥U€Z^c„ ‚ÃÆ¥g1fYñØá‰>4*„ÓØ;¡å@À°pe T˜z:†ƒùÃ)ö‡ k‚àaÙ·ß0€”׳kÊÌE&¼dìêº5$E)nå‰ðÆ¢ÂBí ¿œ`€äB‘Œú$èóQ˹&ýhi°¯7rÛçÝÍV«ÑöÞÞ׊÷K‘ }5©Ë;Û}R¦wZËËQ––2«,',ÿìZD-“¿ù”]üHô9Ý¥ŒŽ¼è–ÿs³´¾CîBýÅÇ@±ÞÚ!¾÷§¯MkŒçdÉã¡*Ûo_€T°àà8+¶}³[öü¬HPjEÞßó¥xß~¶¤€Á ·Ä£Lž¬…âõ€ØæO|’qB#…(<÷ Z¶;EÕ»ÚQ3 m]ˆJä š?!«}Ô(çŸ(M"ñ["]n¾y÷'Š“Í¾·‘Šz…6 =&FQÄȈuoºVJ9Nª8¨ŠCߢ–ÙØœÆë¬·ü0‹š¯—Ž–qOúIS”•ÉTÇðPQ¿G>Þ[ÆÑD«ÍS%X¦dd„ßfÞ ¶TS ‚Øð¨vÕ&-&×'1I·ÊÆ´—‡-QXbÐÍN{ëm'§wL==©!Ú$äi ry-uò²„$T~ê•Ç.ÎË<Ñs°tçùm—(ÃØ=#·[eHaaÞˆop‘çg9í„読ímõxÎêdº£2ì}"òÂ÷zÅÆ¶`®Îg¡ÎÚê‹¥‚ª«+ôåQ[P¹ÎØÚ\µ{c 7Ù:©ƒÃô]ÏŸÖšv5´@B7zó¨ L^O‹›š½üìû°QŠèeñyåûÜ™ÿ_÷YêÈÑÙ»Q)~Ãb£çýg‚¥ÔËþsznóeÝ{"⬀u(˜+á!úíÍWEz!®Æ$ú;«)'"¡lÿ„÷ˆ ×¹y¦;—šžŸlD.»©$µúg³…ß;àÔ”x'ª»ül4Åäyy9óðŠG›˜:Ü…–¡o$m¿Úb †A—ѤïCå O q|¼#·';*µ(íç}ÛˆèwanÞ³E:6’ÈWÉòð +"KïÍÔI•j`uùúVhIóùòC3wÜSÚØ| ‹yTÞÎûúO*æ5V·×•¾¨¾>€ò ìLâÐgL™Lë߸Ö¡Ä Ã´?ÞJDLko:MLÐBdÄ;¼«û‚ÇÏý‹ú¸rÜE „ͳ=÷ä°±±ErÑN×úö¼ 6§GŠôPt³ï¢Ê°óui&c¡2üõõ=š„„Sù°tÊõ Gg½­ÎSâ5šPÔ÷ˆ—¡¹^T¯;•„z&•XÕ´¨èò¾˜ÎѪ¥Æ\n¹ÛÂï;ëë1¥ŠDžBÿ(gÉmøôø¤-Ÿ²'-Ýæ ¤Ï¤´œ— ±Žá¯Q<βüQ‚¢á”§àX¡•èÎ@±ª»xŠßÆA07¾2ûy=Ek–E4Ua[¤eilmý\ªÁý¸mÜÉà#ºz¨n…0H[Ý6O¤æÕžéÒ‡­!Æ¥ö,(× ˆäüö>ŸAóô¨e1>)ÉÀN „¹U§á²§(U¬Hqv­†¡„`ippèEMMT¯-Ï`zUmbWw>t:‡jr9<¼²oq®,–6uxç¸&ýar)*ä)Ã…Ñ4—‡^b›5»»iÜî't¨$÷pR±}ä\ è œ¢cÙCi]ž×Žd  sµ“]:Ÿ´ ˜ `;ðÀ(™B9Q9)„:àQQ‡òµT{ØÙß7¾@X¯€|UÕ…òklôgZ­îšÄ ÑŸ)¾2N~3W»óÌÉi¢® ±ó{@§<²õéùX?«ý 'ÔxQ¥=‘à}òísQPŒõvÑ]éýqqpÄ|œýsÕ±F ­@d-–Ö¢¿ý‡œ|)"2IF9üpÛ0~~šºMNH“…áóµ9Õ ÚÅÅOyr)hu‚vÖÖ ¾6 ì?¬Ì'u\Ñs¼k¤ö7]]ëÝ@è†1£VÌQìZ´·åÕ÷ÜeÕmýÊÐö¥dׯ‚&8'‡ðò ͬ®R.é­nÙ÷\1ÍjÇMZ"þk4"¢––RQø“Ķ îÉï4rÑ/݈Þ…×å¬sLHiC)˜ž`¦FwT4¡’Hîk}ÉÞ>IžÒF¥a-D‡‡[q |–w5ìY|n’@ÆN5ÔÖœa`%†üþ­ÖÓ»,is`«ÛüéãÇÆYûñ²¶Ÿ•á‘ñУ®VIŸ)…äü½++{FõŠ–99ÄNFÆ-.õkkª¾¯/Ôg£îæ§$Õ·£‚—çªÔñóLoÞ 55Iœœ|õ]¶§ N¥šù Ù}=ø8x^¶ùîyÉ»«Ž€™ò¤Ài æÚî(ïÏ1+t›`¼¼t‹…¶ûèäû_úÕLú¶HÞfɓԻ ‰‡†ÛÇS°µµÄm=’J k"q½Ù˜t¥û€‹IKAöØ ©»ËãÀ°7Ø5“ÌñÌE»nï5™ÂiðÉÀ®Oöaù=ÞðB­-Ôµ@”/<>}ºƒMEÉÔíÁÁ™©<µÌŠ9ú‘?2\*3¤S†þ(‘¿ÁÿË—–°X%Í1Á˜è¶h8´3¨O $-ÝŽ88ߟÔÍrß]Ö¦²æ£™zËî0Û‡•ÈlÔŒf6…8núŠëë¿-îL’8®!4V ë`Þƒ•õ½ƒ‹‹øÓ£-ÀÐòñüPR‹påèÛ÷Íh…°Å·4ä)Ì~à%•'M%ÍЬá‹J˜©Ö÷ö€ Þ£7Ò¼¤ÀüBô]Óà°w£÷nø•*Ã-€`ù»§§ºCÝzÂ0²Ðñ~ÛYþˆDÊn8…ô#ôç¼Ö¯ŠÏ—Zo˜ÝŠ:Ýô2üó»¢õ몟FeLÏÓêk¹Ùs õ4*2ý-rl­ç¾Ë( ÷ßßðM½)W·±¡ú½Øðˆ+³Ò6áE ÐY­g`áɇ¦_-Lò¹Ò²M¦§`·,(éêÐw;Êɉ9’qET¨tlô{d¶XUf®jÊõ¸Š UDVV1«Yc¨¾®. ÖYÀf…ÿ9£N3«ñùxݾ”´L“Aø+ÿвRƒxÛŕޙòŒ B튷ù’ÐPœö3Ë~ÉLþ€d±ØÒŽæ{ÌæéÇëõêrX.Jlž¦¶F³lzz Š÷­eIà`›;Á(íŸD?°ÇšÆ÷€¤°œ«b¼µ|ÍüIŽã}¤‹/æOã«#$x$¸`ÑO-]nŽÕDÀ¼íðµå¿P£o}¸æ¿1E·ÐQ‰cîNçôY¼ðCÀäŒFÄùŽý'9Lëʲ殺üüç@6Eª'çn¤åý`Ó­}û¥Ò®îY“Ù $¬·ez^Dm^pdüÞl”%ÂLš†GKŒs§ØCÔaÐ[6mSS~À4IG‘ü@Jþôáò¥õjE1ËÅìæÚ.®õê~ïõ_¦ÄfØìM®‡L6C™ ` g0"q¢ë÷Î]€@ƒØ\j%ýçÂoéæÓRÝÇÜÒÆïˆD{Ç õUùuÔù¹³D‡o9 QÖÍÞÂ4œ^ËíZ~lˆ1'sõ‡ Œ˜fGA%/µeDZäèE]ìTÿFR,ñºrŠK¿µoºõ'ýé¸mQó=àG»~ü@ ¥M14›}EM ¤`Ýsž¬J»’Ü”öü‚ìúÖ4úü<í8»/6À#ÇâØl¹åJYz¬þݰð¦è,¾1rúR(Ð!vë<À`ü”¾Ym%¾¶[|“Ò}s#Ñè(ÆCMϤAd²°¼·D]êôf‡²üÌ“Aí<•êql(IêtÅ Í·"ý©÷÷Hî¸ÇƒU?˜§»UsSÓ_Éwy¢Ôô}ƒ‰2ÒJcj4J9í!ÀÆPêvÙ{½ÇÕ;W½üÔb\UÚB/¾´$*Ÿþ­yi:YNåñö3¼7ëO«½´™iò1øo|;;¤¬mu €žîL¢/žâp¬J-¯¥½î„,ln.qÐ8LÞ+Pñi…==|¾¯¨â¡6û¯zúIѶ¬_ùû>¼3Ùì+Æã:‚0ur±]Ôðkëå)M4ÁkæÌ›†™Ž2ªEQ«¾? ’ÕâA¦QËÿÎà"%ãå}‰(qó"A—IÊ·ý¥$CÿÙÖ¦Õ=j2Å«­öÛÙ÷(Üß{{1ôõ£×À01ÅQ ÏÅe¦2·Ü&Rün¬$ÍUüö lD³3Í\÷ë‰|É‹ñš¤—Ö÷÷%›¤ôÿÝ ðwÊèš= ESLº€ó Ç´æÛ«Xõœ]õ71nÜ¡ÁHOþ¢äkÿØÜ§¤rUöÇ¡¤Œ¸aÒ.µþ&çÁß³ÇrQ$Ë/í;ˆ8j˜}µ}š@$g ž^.ÖgM§eB}ª¢9&,L6"¦¬Xr G¹¨*¦Ök¾¨^¨O>¶„ù™œüÇx»óõ]‹(]ÝŠ¶Ãí‡ENÉØGT„ݸÁo¿a”GU‰¤²m!t¿°Ø>;d1ê¢NBù(CÁjº¦7‰”m ùcÍ“hÐ;£¨©)u°úkÐ]òXƒÃ…Rææí£[T˜fY|Rô=G„'ÒRZÜj'>‹ÏÍË”þiM¿æáÔ®ºÌyz°™fÞÙQ¡Ã×P:›Ú}›*û48D÷]èi©|u%ÑCD³BO_anUÀvÛøÁAü=æÓᚺ¤=Ý=9wæ2Ý åûxÃ-xcÊ|}:¯åТ÷ÍÖ9ï·çûð„ûW,N¿œ–šÕ>â)“ä'ÑÇn$iz:÷YÃÔÔ@v|Ñ£g£Çú™á¡¨BùŒË/Ùùo|r|êáÞ¾ò)65¡ P³zÿ]ÍDs ‰WÙ+às%g+Ú52Ș@ `ù³Åÿ9íïf5U¢”2K‡`,1Ÿ¹ñÔ×-ÈÜìðp7 Ñ G3-бAf$6¨ac@¦€ú$Uކ36Œy~N¾a}ÿ“¢uK†3ÔÔÅ{²Öx1Ë¥nå-QØ‹y788˜ ª’²¼û2Ð*›–HóRi?÷¦š0õÐ(³!=ï&þ-˜°Í ;࣠R9¬Ÿ­üà”.3ÅúA5:2ÒŒ”Î(ô šü±u®Ë>5<òICCJwÏMš‚šÚÊõëÓŸ.^^^ŽWô˜Ón¯Éyx./UF2ç¢ wÖNÖ»=W _}»â;þÐY”óšêN$hã)$œlÅj»@ff柚ǽoµ¡pkëë;ÙÎF¹D³¢]ÒÒ×¸ŽŽøî'ŸÑ­gˆÄ"q0¯o8~Ê-~¡ DÀòÌõ¹3¤f•Í 8öЃƒg¦æÛäÌ•ð[BÜO·û´ÒTóxìÇñõö¨n}rºJ!<ÄÅÁ…þñnoX.¥¾'îæ«ºÜ­Ecrß‚nZZš´‚B/–n ÷ÏŸ?•uumþÜr™j95 Ë<_jÑô¿»BŠë…¼õƒ&ôKº á©‚³œNÌè¹Û•ëõzhøK;“‰< pžéUEáÏõ­­‚´¾z+uÊ_;ÃÊ•úåO˜ß/¿ê\­[÷&ÑkŽ—¨Ó·¡|`hòYõB¯5ßÊ ä­jð»Öø”–W[;œ¶hK…Ö|4Á4`à@Y!© ßBæBA_Ëe‚ß³•¥¾ö2‡m^nðT˜á2ÉãMN[úŠÃ]ÆsÿFEéRQ¯HHKOÒÍspq¸ ãc~$e,Ü{®¯¯?0Ê$lWÌÃ<ðƒx PøãU¹f³þ3WûÑM_ÿÔ8ot抅B>D¾±©i}Ùmµ÷­j•I¨SòS»Ï]•Ù0ŽOp‰ªÂQhõf~èœPyƒ_aaažNƒ]ê źYÇONævµ=ÁpqmsÅ\w­šŸ+úˆ^Í3‘‘Ï3³¬ó%"Q-šä<ÓNÅ¢Q´|ÚýŸÍ„JÌ«viWZp|9÷í}â¸Þ@„™nX©¦}¸ÏSätilšPz"M%ø= À>²Þvµ|ÊS2†ˆ|Ïj¡óRýœœ¼hFQ-<~hè»ló¾©i_ú FчtA«cܾ¯£mñnsæGcûÐ-®PT-Â\+ök¾~•n}¼Ýïê핸¾»‹ SÉñ€ [nq‹üü™lýà€¡P)‡éìü|:¶\¯E¨Xyn>¾HõR✔”óÑLZ]=½àŒŒ x44Ü›››®ÅE(ôŠŠ ZZ™QøõÍMJ úö’’!NN˜¢ðŽWGz¬VS¯kWck>ô–XBõtÂIÔšÿxñIȃá¥Ùï;g„»¢›C)태fÛU_Æ–ê¥e,hhûp‹ì• àr,Ÿ:Mð·L>7±û;{; ùdE)§ÚÝ»¸¡éR‹ØïÂnÀ.òaS€#N§Ñwõž ÉkhU~O¾-BDÖR’’%Ã.óµp°(lwãâ:eÍõ¹V¡0H8†k߀¯ñ-¾‰ç!ü0|œ“Î¥ËÚÛ9YKNDLEŒª]SóÞd4õuô›ðA]GêêGGjÇ›òÆë#ÝÆ^„°˜œ£TœÈª™2ÇÇÌyùùÓ Ìú­Zv!›ÁH¸S ùyyâÃɌӱ_¾@>½lx« {gsSÕ®íUŽfB…™zDDDOÂ+¹ ŽŽŽF÷Ó8^lÿÈØš)-'q–&ôº±NLM ;†ˆçãÚšá¯íí¼¯_áQ9Ù÷´šœ^Sþ5»ìk•½´¥daQ6±ÙÒ¥¿+Ú¶Õz÷DÅFM9¾ö¹{x““‹øð±²V/±9::î=™°ÏmgŒ·lW. •*¾èëïOñÔ7KYÈ«ï¹ûªL«úä–K„P†Ç+m¿W;:æû &’ù£?£QÊ.cý¯®­ÄËhb›Ýz,æ!‘ÛÏï3­‘Ùþstt4,6îóLÅ´Oö+¶àziEž ,’÷Ä…U¤¯v÷J8䦙éû8™”Tï4vnÔÎçê ¦M½,up[Ù}¾Á-6ZY#««óK†¼.g³ã¸ÙGÎÀ€|zz*-+ÛµÔä<̈…ƒ27§¥Ûî?Y¤ÔŸÊjB§{ü{"ŸÕy[žŠŠŠŒœz}}½ ;%-M{ÞHÚ8ð€åÏ/ÆÆÆS~xl¦aóÇ¡œ Æå¯³kdû,bF.küÞI=ycžø‡óб¤éJÎ?Ã.Tñ*7ê¡`e}ëãu´Ô4ý.6D¯ S®DFwùÝn©ñç06vØîd33óú¯_T’Ñê%k\«Þ”®GKÚåÜjòFB²?§5K ­þ 8—Êè¦mæ[¥$ª._V„sr¥÷¨¿70i[AìLïY˜_|§½4t9QòçnhÅ@{{fåeº‹îÖÐY#U|\¤·7¬jê}|/­÷vÐ9žÚßÖ+ü™¸f ý fŸ? d è@Êߪ@úÛJ}‹M¨žõRñHÆ ÚÚZx$$,S{ý²t|ÌÌJAÁÁšš¶¡ëêîž#ä°úôU§¡„ýgÓÁáb T´ßÿy”ÄA(u³ñôK¥ù‹¤èJ6ùòíÒ&ˆ®ûÛ…íô*9õœ5(á®ìø4­"½‡:ƒª¢¸§¸­y„\F7iG!GPï ä^[aSSj§gÃÌ‘ããÊ›ÏáP±=<<¦#òyOÕ®<^J™ÍS9n©›çp¼ /mŽÙc(æ?ýl¿]’”Æ JfcÏ㓯ýÞfhº~GnG›‚µ,¦¦+²zâqp¡/ üÛócÂmw¦Tãn QÝ_=>jjÉëëë¯ö„ùY¥Ý*—bð›}VV2Ür<É5¤¢U~3تIZÆ£ýè²} ú̺4‰ƒ'3:ö““XGGGߥDDnOïcBC»ü@åš|ë.þ±Í늂Œ J!rW:(~­£ím#š{¶4dûÖSXÀ 鵸ªsOߦøŠœoÿ˜ø"ƒU¦ßvûÖmþ+Ý‚8€×ågÀ.¤5I}»çnidÛ?Øß禥Û⪰Sã_£øóéñJèÃÁFvv6ä0¿ÇÉ¡¾ƒ&(7Øéqss§^ø~úRZiÅëzÜ~Ç”Îi‹B`8ô‰v`llÖ³Œ±xµ„@À aaa(ß§7¨×nÞØˆ0¾×ëpßì– \ög€¸€ðÆ^QkãUiÐAÒÞÞiX¡BFHk+ù©Ö;ÂYµ»dU½pêä™Bÿ#gMŠøµÊŽGQÐ9ǃ9Öè޶1hÏ÷7:—>Â:‹IºŠ¤•ôtÉ3ÛI¶ôÂΫ®6e>Q…yåYÝÝÝÀÑQ]8ñðð|U-Bͪ<÷ÞeýTaÆA< ¹ë‘X(*h°l,§ÝÒWm†S¼÷^‡®LŸtíÌ[Î×¼ZZ^®6ÿAÀ U¢c¹ÔȪQ¦•«?³ÐïÓC,¦¥…ªX/{cð…ÃUKÝœöN¤@{ȱîÓÃçŸ#<š P/{ÕßÛ¼²é½óÁçò-ëíu™ÍBcɪ¸ßå¼Ežýj;„à3¹EÙíWttêå®ùŽ[)=¯Ž766Äuu3/·4¤ ùµ£‹¦=dó8 a®ú\e{ëa&¦ºüµg3VˆÉØÄDÂÛ»Õýv·ˆ>sðfˆ¾2liI·úý$õÄg‘@Ùã ôB®ÄƼ8²Û?»”úmtLú­¯yÝŽV¼Ž.Lòò6ÕŸaaaÉùXµ?ÑáçGD}FÇýYäü±”ö­Õü“ÐÓ½3«÷µC|f& K ”Þ(ü7ß*ÎßÞ–£ò$ÎMNªz_-»Q02*”½«“u÷ô,!¥Ÿ×NaÆܸZõÃ}ÿþ½ñÓãÈxáMùš'¡ÇëÍ=ßÉ9ÜSP1ï£ ¨æ¦Ì1÷ó}\²h̦Å3Ò7äõv˜  ­:ݯ숞-º¡®m ¿ÙVÁÑÜZ¢2' ŸrJ­c;ƒ6–´¤öq¨>iÏu¾]÷ŒU¡¿oÜ„\Þ™ººÞUÐéWÔê¸ASQxò™ršw vŒØˆÁ£;o=‘Õ'jÌA èÉgr¿ýRXÒx—È>Å ‚˜Ó^«_æ&M@†6 b¬ú=µA‘é{rÄ'&R&3è—ø ó½éM뙟Ÿ7>˜«î”ilnŽI¤‡C#ùJšÃf!ØUæA <. ÕŒâ÷´ýÓ@¹K€¤Î ON¦±Þñ©:±½æŸŽzw³¥Ï³NXÀûì-Ò(f¢Ã¡)¯^žžbLLLì-â2ëc3êÔc‹¾vcàáц'ûöm¬%xÉÖŒæ\ܧOÏvjjš¬Q`”Ñx|ŽŽË¤«¼A7½òßÑÿÿ¯fÔç±–WW ¾Û?]Ìt_öyI VÒeŒ‹6¬F€ÊÎU~ ü^ýmuÂÞk QTöš¤bIÊÕm:N//gðä¾U¿ ¿˜hOâQ’µÛ|»8…ØÓ<ªU° 5ik{ìb§£*ÿNãÏ­v«¨Â…—BuÚÙu.ï~¥N±]Êáð«§Ù6È’X]ì‰= MZÀ„¡!’á±ú_ߟÑ{g£ô+¿Ñ!®Yïää$š‹îà*I((õ̃,h=±<ѰPŸŽÛ—b1wò¬2òj ůÖÃdÙêß6aÊÞ|Ò­¸º.‰i ¿5Ðáe³·n ÿõËô›Í¼ŠO °3¿*o/dpÉ í섎º°URR‚òÏÊÒ««ßÙÙÑ\wV[¬ªöøµÌÑsŸ»^ÑXoŒ +éÖu~•œ}NËÃ4sAb0ÏúN½ŸÔl×zédÀÚÙÍ­ÿbvºˆ[¹„$"C%ÃccCCCû»¡JÅ€M-˜IIMÕZw¦+ µP¤«}úW½ÊÖ5Ô×ýÍ­î:ŸÅç¶Q¢ßñ’rkQ&ÐÊ3^»ÿ\jÔ·åççG'%­ô}‰äp´ÄS~g,ó ±5šÅwýxwìx¾­Ðz½ ù¬›¾­Ö¶¶iu€‚ôuÑ5…çÛïRê¾qÎHÝile>c¨Tˆ[® ¨ UµmRDd$´ðæZ›É Ÿö ­wšõåj^ípZ“æÿ¶Ú‰§”2ˆ:×êñÆóò™¹1¢L&8‡ûÐq9õ"æn$G0!ö ~z… f½ Y¶ªê"õᇦñî¿xò2zÂÊê>·ò|?>±Ç¤/JÄÝ;!!ÁáöÏ{ù N”«ãUM!AÏ?–#™ä´Ä~´Eâæá1ºØ›¸Ý¹“ã§_îØ¢!„à‰zJ]ì„Ú‡:gʺºQhB÷ÊjçC1¹t °Ê·Z榦ßgfp€ðu?n»‚‚èNR—l¢6a=–ŸÕï#þE˜Ž…œÎáÕż¡7³ºá[ÞÚú÷ òÕ·jc'ú,Ì”Õê Õ}}Û!ÊÏÁÅåe4¦j‘âËààà½þó³3q-­TÈã)~~Ý_;;Hä%šheÿ?ÕybNÑ¡«„|9µ£Ù¥ßt‰zžD$N×ü¼6.õ’6⢷ù’áÀF€8g ¯´ûè@__¼ÓêñµT™÷ÍÌÉa†ð×úö6ufffÏ\µ‰„††Fðþø‡6ùjêSR¿{òûûû ¶¶6ËÙ ½âÛϯbcu™p¼h‘§˜Å›š¿^˜T"Óêqn¾¾¿OŸ™•%áîÞø ºfvš!ÅÓTª¸âÐ<béMïáð8"¨µU¨–<Ñ&#à°¢òöñ‘OÚûXò;Ust«º~QC4µO~²L¦¬4+Ýxoª¸«³Sä7oßCBBb«Où¥mþAµn­y4„×-¾kUeör¹Ùe²±¬) NTíØGlÖ:¶‚³XöÏi©?½çömÖ,•IÙ$Q껚ΚI¾jófôwÚ t#ïžØÿ±»¬mï·ðlsÈÊM ÛŸ­,µïïé'%%m³›JèyyØÑÔŠ®3ä›Ê¦*©C *‡©ó ò"à°wlÖ6öb±A,?¨%€§Ñ÷>í%Ð+*f›¦ª.0JТ~õ¿¦‚x'”ÕÔ¨ ÷N^ߨ ¸xöù=ûm´Îz6ÂüG:‚……EµÕ4ØAÄDÚ;ÌQ­ÿ{¾©BÑîý¾IÉ1¿»2dÆ)kÀÉÅE&•¨¨¨øáB]pCCÃ\•‘X±m…Nƒ"06ðब.{jñ¥¾e¿œÌž®./™êÊÓÞXD„cÑ”¤ Žâ ¢¢n+ýîj–è¶¥øBIn0IkÈW‹¢M¿qt<†˜/¤ªŠüŽË~¥|Ç °:¨BîS¹\U¹ ût½R¡#" PçïœÏ†èûPCÃJÖ•E>|`§ ¤tüóû­n«;FŽÏ%>“n CqIɆUßRµåãiÝ6Ï—ýº´óÿ=ø‰A¿BAp/_<6Õ Ö8¬‹/¬Çôûòpñäòös™)&æÇ  Þ&¤€÷—,¶}<éF»’ÅádM$“Ï •ÔçÏÛcYYººr@]dÀûé©r̪Õrµ½mÆ¥ªC3« ªˆÁL¨,zþUøÎXN,0FßWWI‰ù\;~¹-èraÞDçaä—òËÍ£ ¤RsÉúNÔJ0ø2Úè ‡Üx9ŠC½Àä®Ã×77cchrÉ !(„'7í;‚;:„ÞÕÛ„#áj4VÜœïäƒ×㱿 áw7üÛýwßàA£¢öm Wû>xB-Ü¥}„A:š¯ßæ¹5s3kàg4˜ðêääb}®VUb™µkÄÛ~˜ 'M*LG´ž®ª­ížÈ—‚†"ä´ùÞè¸ùA_8ò¡mᕦ1í‘­M4±°út©&ÄTw³¤G\>Ýwp²O[ÿJWvFP²Túx¥MNo)-L¾(‰~úÍ}  Ü½ˆK(ÀåÒâØ˜’ÙmÍ•f°ÆP†&&®çu_¿]Ðúùù]°•¿«S¹¢ÔóA†zöüy= ¥d”°¹9õLJô]3€{˜^ )V‹0ê1º»<„ô>à9\•q/bÖ˜‘_%ï“0»XüïaZG­”Lþ"} ³jm}=$ÂÅáõ5 8÷ïÃÃ¥Sááá/íäfËäjˆnÕ€ûº}JMņ_éW;88øf·ß‹kЬŽÃýµcô+¥!»Z@øÓ‹´P”R1»‡Wðûs0D oŠ… ³<&Æßã=ëÿM¬Ü}QøÿÏ,•œ€ýÖP’dDª¼:0šÀÕ9Þœ™É纄þÜû>1-­øQˆ’òy}}=0ãý^ÇmpP{ ½P,ÿ j¤ÊÙ•jVê¿fbê %õÕ²88ߎ•1þgÖ‘‚qÅçJï›í"Ž€×¥øX¶ÀD…ßHšóÎ(ÄÕΙÄ}÷‡v¿˜Ö”›ŽÚ’ +.CÀ¢þì÷ôè~6H3Ñä܃ÔHòï^ È+ý/ ¿¾Í_ÛÝ ·ž­€†‚ÜÚ4Š˜¤èÉÅ…„¥åëlßÛ÷g 线<Ÿ(R"jžõT²`“±…Q}0¼¬Œ™T°uªÒر«C¸›ˆ.úÐø<™I/¢@.%ù9à#À¢88Œï^@…EGGFFö¹¨msj·È2U¶u4;Óïöðå xGß÷Ƭõþlxo±²ýÖªiâJv<ë*w)Üw9ñ¶Ã×'˱¦+´\fƒ^³ 5 „eÜaÇÙ"ù¾ãFd!íxQFA¡àîE;±µ™íaFRŒ””T›}ÿÂÂK–¥;ü~4Yûá.× ±,8mmm Ÿ(äéQµ•j“þàØW ¹Mª¨˜X41N¼>66öð£ZmžœvK–#C ©çä‰ñ y@ÿSËùܽ?<8<¤gè{|Ýüa÷#®¾»ˆý>—Tp°ŠnûATÅû‚dÍ×Tžu55V»<À\µ˜;U‘b–(øbq܇Ü]¾µß&Šˆç'YbC~”¦oŽÏ¿B&’æk-¬½å)¸wräGtìm;;5O¯V¿V8…ou··µ1rÚe–ìüþ;7]i»(3š!ÒçŠôRÉû@h»»Û„³ýÉ—ÍÎþ@™aG¿1F~èGÆ“ñfŸjªÀÝ®,M´áåA‘ã/i†¼¼Š]V^Šán*Ö´O½‘W?~ PJ¹Vü<÷¼8“JaÔª1íȦ ü÷‰5òò˜‰ƒÒ2M±Œ:y,£oÔÓ%ÊØ¬5„ˆøÝ_â2Qí“ÿ¯“ö€“FID>Yˆ!“®¿ó; bïž5pædÅøÏñÖlž€Š ²»Þ–/°7Rª{¦þvU¯õraOÈ÷“¾¼H‹«‚5‹èßóî'%$|î™MŒ––ÖrA­#çÇœPq3ò„PøLb)&(2%Èþ(±î_.þìÏ.ruÿ,€«rÚ "ˆˆÄqÀÓÃÃÃ'‡Õ§j1VTÔ(ÿû{<à7š›ÝŽ+\jý~æÿ´x¢b£Á$bqE7]†\5N#Øÿ³À„ÕTz€²ÒþxE.•ý= *‘ûstò¿Š7W-¼G†²«5ž’œ¢F—„¤öôáj“ÕÝÁË$Ô¸¸¾Šš¹+Øïûì,L ìôHøãÈÛñúrÜö›ºÿ¬B€ƒ®‹Š_ÝæÀö`ź²c…”“3@»HœBDKËà?›)9jÿt¹^ðüiMƒCÈe8°Èð¨DxQþP\ zžŸ%gåÄÿs˜¾O¥¢Î—é>îÚüÁ•S^­ÝC‡þb}ý¡Êz†Šz¥xÂëßAÒÆ¤´Äa¸~^®ãµ‘f±ðÛì!¶.4'‡>™aÝÆø¿ °…œ¶ñíK¿G|ÈÕ˜2?F)4ª«ã û¢!Á€î™þÛñíc¶接ÈzÛ¶“)Õò?ÍYã㨖]ø«¾^Ê•‹äÿžšM$_§„TðÕ~,nGPm?(4âemÑqfpë³€áÑoøoc@Kï6"W!×{ñߘ~©ç2§q÷àØø_íE<‹×ë’•8¸/Aë*[ÙNÈ~VÈå?Ÿ>ÝÁ.2ý„xÄTd«ÎBãMµ\ B¸~»JÅ »]Á^µt 7ëý÷´ªý`äÕ¦8Ä%ûŒŽ– aWë³²°'‹®€”)ŠK¾ü¾¶Hóß~©Cúôï1亨X™Ÿ¯Išéuu÷LnÎÄ$çÿÛZcÐ`,ÜïÜžmxôY²ÎÍ˰Ú.$j5Ù)² `DýŸ6@r§'OÂ/ÏíêÃþ¶õ`ØÝ˜”ý»c4BŽÿõÌN*ÖÝåxÊjn6ŒZ !ÛeåÒdÆB/L¡‡È»»ÚQúŸcà7Y›N«;éí%Š(Àˆ>T¨“ŸrãŸEôî¯71LBEÿ;@×ô‰ù¯Ñ ;ä3y¢‰#ÒœéûÔqùÞîâ±±9A$ß¿Ý{Ë*#ïYg9‘ó{¶’CT4Ÿï“ äš|^+Çÿ mêp{Èe?H¸*òy8ŽÚ.{S]Ÿh• §K¤—:r¬þmkXTˆŒñO$òížB·Wö—‡ Ö8ÕCAmÊ-õÄ•1쮯ÿ›Š’w{Iýt» ›Ö\&‹%t5²xëX<Î6µšÎàÙÞœÿ­e‘‘çP„×ãÔÑ‹ýÙ¾/2±›¡¤1dôô«sëèÿ>Ÿ(±G-1À¾}>´3P Ût¡6L]ߣ€ ÊðGº‰dLÐGã$•ªø žÞïÑIJ<¼3àÌm@ÌKÅ%ªZþ¯x GÈ—°:5=‹Ä=îÏ%^ÛÙ±:p(ù•¤é)FMß7&ô¿€YÒèƒ9GT7VëäÝY ¦R‘@^ÈU½íwGèNÎ<©ÿž¸ 4™ò—Lû¹dÔï¸&¡ªŒªE‚yyÆ@e üï¼`‘ÇT†ìÉOH|s²`½­ÙXIÌ‚ϵ–ãGQ_ßøêîÿ©|xêðÝøAS'ï‡ Á(‚i˜\œ®Ü±¦CŸh@Ã.ö•þYÿ{‚2%™ßþQä¸?ó|$s~v.—¿†ZaÏd©ñH«þ€ Ñôå³ô1ˆ Eâ ð"­×Æ\ìÖæ+ Ú…JÇ‘##Þ6KîCs¹ÿšÝ¬òêçdçõFÝ2KíYáiorØ\_sôõê{W&3ò…±š4çj0fSÿÛׇ]º’hF·§?}QYÙÛúP)1dâ…θ\mvóŽ¯ àÍ¡£ˆ‰IHP¢ˆ£ÓyÎiË üžepfõ5:ÆâóýÛ¹Ò“ýÊ¢*óŽS%¯ÔW5A™úÞ1t<à @Å o98•tS9¢7!”Ô»ì+B6mD62hjJµžˆj2h;A±¥-ýO²iC?_€FMG7skabظHȧ °C]ÎȈµýá’ ” 4Ih>î Á`>·š*k@™ÿŽO ârË]žã¦'oJüà/x”-†t@þêÃÏ=„óHå<”1 Íã}c±RÃ…4¡·Ñ$Tìßl8µ±¡ÂcÍKµçx¯¹Ž…n@¨º¶Hòª<ÍåÇÒR3À$i¥¤+Çþט—¢,@KHôÖÖ&B.§Ž“¦‚ª€¢^ïéBUS{ÎêR²^zffÔÍ»±_yõ?ýÍz[!ƒóçuª<õÌþ€t¬§¨¢b)Æý1Îʯ_@‘1W¯úùÁ'R  ZX,_1ô–i?Ä¥{’¶¸fi®º=z³é{îJA RRòŸ±WÓ-û¾êGCÆÆ¦øàv¬Ïy´<Ìä² qH@À˜ $à(yspðeëÈ~¥•r¹µ¨x²‚—#Z§Å¨®„>$ôºS ŽzuìQ¾×Y_Åå0w—V^rººÃNæ¿ã[˰¿ì.%Ça¼Å’Ší¡€FDŒ8¢Ÿ™ÄùÛ‚™ƒžðüO÷nïHè}ž &ÇKS:È»À IçæŸLkú%7*Fìä c Lìù2MˆÿU].¢«Ëx©ÑMµ¨Bb¹¹n¼Å 4×úà¹D)‡ ¢=rs匬KïqäàÉxn²ã)ÿ‘‰b»SÅ0V³õb"ò;NuÖ‹¹ªE8!a¢7·Íd,ãÄÕÕ äAg¸GliDb!AxXÂe]„$å¼â%`¨^-8AIº$È¥’1N ß-7æ Ü”*ÃÏͽf¶KÉбüþYŒ.é{Ÿ$bñ”¤‰Sã—)µa¹¬¤c›\×`qýL?1ñ¡vdjØ×Æf^Hã¤?5} \À磊Bïý§ 0Qå±r˜SzH:õòR†Ÿ[ )ß ‡‹Œ&,ú ˜nÁJH AEõ‰ÃÐôŸ‚“¯¯ç„G9„âk9{Er‰b_XØWOt“û3éy¯ïí™80à€„˜ ñŽ´¶®. 0P Þ&-&†XéõóRõaëyÑã•€wX½ èÿÙ>S&oi wÁ!'›AƒCC@VK¶ ؘáA~ú¾MÌA¯ûVÚ†£I"‹çççÉÙØÎâo?Û¢\˜Õ° QU¿ÞMïQ)FÙ›­Œ.×éôçñ&l¸TöÅ^x*¿Êãí~IÈO¬§Õ•‡~5Ÿe?"?ŸëÓ$ºUc>_µ‡Œ½Ƈnª-6 ƒ è³VFbÍ3õ²œøÄû‹½iêÕ½ìÆìì:Æes¿g~нãÝïZx¹ƒ†ÝÊ„ðÍŽ,¢#bç.Ôàèúá\_P×]3ñîÆ{t'óŠçÊó!ÓMiŒÃ†  *êÍêµdTWw šÁêÒ®·ô€ßþã‰M¢?Wiy¹º†F2°jn¯óv<ù¨'Òøé$›¹Qå«:9ÕŒfñq•ñJcæKYŒzÓúùèu<&ígæäTÚuø$¬x1‹mî¦P=<ø¨+W‰ïîJ,´\i‰Ÿ^ìÛ–“Ë CÞœ&Ùl÷n5'¿a…÷÷»·ÇÇ¥4Ùפ7×qP,ìÎ;£ÓXJüFnxxEsvÏ€Êmå­ ¸¼ºR—–þìz8D¤‰°áúøØî¹_^TgØÉpsëúhí¼=‚Ë)ÎþI¯!³Ñ·M ·fúÔw¾x*ÉXŜǮ‹ï›;;¥aaƒ µ4rµ"yÍ¥è«è,¢ôö‡ZýHR×Ó«ÛÛ[Z”´´ü**ÊßÐਮžT¡ß¶W}ûjwÞâXÝùæá4–æb&g¿/zâê¹k6‰¤Á¨ùïÙ}n¾ÌÌHóÍXZ3$›Ñrrj@CC×÷Aþ©a¾<MO'h;¢÷¼;lÕí·üݯÕ-»ñv£+ÉÊæÛU@Þ²mƒÂÔ˜ï%c¹NÊW™ÄÇáËXqkkklªËÓêOYŒm× .W˹$¶Ö¯%'-Á»;Mü)k±š|W·'ÒÒGÅÁɹÎé mˆŒˆŠJâ0_ªYius¶Õ¼ÃÇîqfZðåˇÛQ&&& •š®ƒ¾»u„Àð±e-þ¡‘LžÉ#t*™«¯Øþ=A׃Ôþ½# dss³•VVœcwú¬¸%­2!¥Ñr3ù¾së{Às×P(Ã(^¿Ç{ÿáö“.$:ZÚ·ŽŽÕ]ÝÝgÃÌôzÇmWÙT»J~·‰)8¥à·Ëî£ë¥è¤¨¿‡J£ïC³¾÷©DppðnEËÑÏ»ãæáÝYÆáŸGË-/II+ãâÐ Úu5+tõV«äÈω‰™×Õ%:{3œÂLÿæêúú:d‚&ØS=0ØÕÕÕ _NNÔAzhk$^¯=/תEðÖÔô d½!éÓ'é„öû39…tv™†%§HÍ«üÒvãÃR”ášo~O¾RR-·+¬íñ ™ÿié fSS=½êû÷Å—óù÷÷÷vfgggZVï.UµµÓ L³u?ªdq;ŠÞÜÜ Žºf´¸–Çñä‡}þLHÑ13ÏVú=Xód)ʨøø´ß2ÐËx]M£ùž*¬”ðÍëÊÎçØkõüÖ÷Ï—­;«|¢™Jƒÿ½¿€ªrû×P0hé’^t£tKw/ºAJ)¥Aéîn E‘nDº»áÎ×ýÿŸï;ßùîÞçŽsǽãŽq×{ ¬µfüâù=Ïœó}ßòÄÄD‡ý(†•ÌÌÌŽøøø òžP¾WGüàéi†'O`< °‡×†9#Qo±§¯<èBÙ3ŒЄ¬>¶è”L#Ý=00 Ø‹Ÿñøð|5£9z ¿0ò!§þø·taÛHX^iiéO`ÇÙmO#iŸ{í)îÕ4G’.“þ(XÐÍÙÒŠÑíEÒø_¶cKN-"\Í'Ú­ø_vãææN…Áƒ7Ͼ îniö,:5ööö×Õ¹‘=|øDö`ý=aIqñ¦¦cï%’Ú ¬TnÛÄþþ~×½…g³^»­M®ëqeÍyÓÍ_‹/U”• T™é$®|û0íXr]‹CD4·£‰z¼O<ìš’YvåƒÇìgþs^ÛyßKôê¿%O;¶ÏÚMVukœLÕÚ®µŸ……‡s<{öÌb²Ê<¯¶¶¶×6e{º>­P-?uaÁ¸Ú~ºîÙ©]˜¼œœ‚˜˜?* ;fH×Ödu/ñOŸ÷ÓSSƒc¥zŠÞÞ-)|ÎY²22ìÀ÷e•»À~ÐGï!#§Qln…ÕGrþ©5™ÃfTUM-†Òíïܹ£†¾íè·i#7Y"àV4Ùî×Þ÷íÈUõÉÍîÇ)(î½d¯[#½û=]k›Äÿb%r³xñsO{Ñid‚/1ܯdG·z60ÉEàC\ÎÅÅ«îÏŸ´WØüÎ#@êo—o¤X¦ÿh|±êº1òäzC«}¸H£XyÎs醺úÚ÷LqF–Ñü ß"&Í£)w€YJïù2¯®¼Í--›ëá<²òòj¯^5'¼{—m>(»!òM¯Þa´Ém³Æ¤ 郈.À;Øþåü-@ÌM£Z‹¯$ãÚ~·¾ëYá» ¬àî<ÎégcS,PZTÄXªS-àxwDÉÁ¡ ªV¯Ó¢’…ÜÜÜ©j˘ƒÃÃ˨X~„×o΀HˆÍìé‘}BO/-++ëÂmÏ¥„7sŒSxØñf²k§¥¥EÁxµÐN]g¾êÓ}º;ïH†)]nŸ.ì5F WÐÓ›~{#ßg¥/KF@`Îc?e¦«§÷5Š”WA^>bS·W¤§»;%˽é4;FdÃÖYQ1 –w™|Êë0Çñ ªAäÁ~.㜷axôƒÝDЗ3ÅCš„W)ù]>¿x‘>z3E ¦¿4šáG` CÜÍ}VrÏÞÚfmmMÇÀð%0((Å2ÃgŒ‹›»±,??ß‹Q¡ž„éš½çFùð|½[З&)ºG¦ùxLözU ·™¢¾¸°ðGü5è((oay½Fá@ƒÄ?>?‹ü´Fé{– ª >^6p󯍖‘†˜˜X½ËíY¯¨ë¼Ï©›¯×É–á¦=eqæ•ê²6ÙRºój¥Ýs?‹E7geÅbÖçtvv'&"âë‹tnxÆø¹ànKõÿý®ÿËesó\\õó&``;Dddv(†Úå•”4I¢1$ÏÖš³¶f%¼÷énª¨_[žbZÞR™¸DVƒheéVPÆm·§jã¢Fr‚±þns~ÿóçÏ„„„Ü’æîž0¿©–—‡§7/梒þ*Ø¿Ê,oÆü @\…GDüå¶cÜG>ªHŸ?F´„© ìšë$ºïÌþþmÖ,îÌH’㼋N•DûùWÇ£¯Ž¾jíWËl{€) ×´Zê‰jZNÔs]ø„hnn^˜•%ê­†¡a:.žÁ±«‚‰»ƒ9)iñƆ DýÞ=Q³o7ßfÀÖ~U²¸ÖaV@øp“†“˜âwðÐPsÉcÈDŸ¾ŠÜœÁ¡ZY©âææÖß×§Xí¬ â§Ð¯_G/Ž7Þ¾ýÈ;ç)N@@ àºöVN^þx=?æ;œ .§¦†+7?¿¸©I—ŸŸ_·Înòã”ó_8{A÷y|Öí×gÔåÕU&AA¯5rR¸ .w €Sýî{·ìÄÇeùì>2²íñƨ{È}‡ë‹c9YYcãhèèµÖ?éf{É/.ÆÛËffô·g›µ†¿ŽVØÛÛƒøŽ£•WWQYŒõ„.w có#KÒÆÆæ@†t.ô1ìkr $&. t/(,”=>>fd`PVV~ føºÿK³Nb.À…¦o½Ý݆ã##VýñOÊ\°„Þ‚–Ì"„Pú´ß^…ý°ˆQ¸`×,?/‡jÜï%qÝ©»1´OB§3/8z¾gw…`5»¼¼l6”– eX£ Ãç$…y@ÏÆÊjjÈÍËõ¥TíÚÈç8áqa]»¶³n"wÉe/cÜ¿ˆ=‚Ãþ¯nÝFKùÑ”¢e÷Ñ ¡ ˆËÉO%')) 姸x«AÓï&6M¹…®™¶rppoee`ØSîyô¿šÜÉM2Tuu­¡ð\@üš!jô3OñgðÒDzi¼Žc€€xå¾° à‹›¨B¾7‡LTTϰD¯œÊééé™ÀìA͉ËÉ•OzU'͘EüWãÄ^M;”dØØ[Z„–——ݘ.¿ÐĬª U»®+¡ÎG»{·¾H”Ê@@@|Xý&2½»ë)D4”÷~7‘{È‚³V¹áh *žÐÜ· t¢žcNî?EÆ §ë áuìS@w’ÙMü™†+á½[˜æ’’/knPñè €!'ÒR¼ŸÇüÅ2öyüHª´î ãÆ}Ζ1Ðvøa°þd˜ãœP³øŸ¸¤Ì’Í·ó_séý‡ÍØ£cÿJ0çÈEB$üqØ¿fnLvX-ø¯? ªÉÉ…«ªªnaÞ7ìrô´6üwc¯£NvçËiîztp|¬ajú«b£"Ö£¸ÿ¯Zš·þ¬b@¯%bYÓ›·÷_Yâo…~Ý 9àß_™øµw‹x/ÖC™sâO;²’JebÆþÿí—µ©¥“•£«#‹‰“5«•«½Û¿ÿàamfiîjÄgÅjóáðb/..è'Œ—›ýÏï°¿~‡þÅÎÍ˃ãàáà„qópÀ8ØaÜœ<¼þéõ×dØÿãçÿ¼ÜM\ýËßFÿáïGÂhzhÀKﵸ‰½¹‹‰ÖŸ·¨™Qÿ×à€b†ÆÎofÂÁ ã1ç5åÃLaì&&œp7™)/‡‰|×ÁÍÎî‘óÿ­eq;;S¸íßõÀeaÁÍÉų0ãå27åád7áçç5ãâqp°[ðòÁþ¾õ—Næ×:œ×œÎmÊÎeÆÏÏÁÎÁaÆoÂÇ3a7ã´à‡s²ƒïþe“?-K+iÉJHKªƒJϵþ'-›ÀÙyÌx`\ìp~.>07 `GSv>>N.87xïÿ˜Øÿ15IquÙçJÿ£ðqX˜ñÃ-ÌL¹xÍ,¸yøy9Í,ÌMML`榦ܜÜ<?uImõÿQ÷æfœÜ\¼ì&\¼0~s3~˜ ‡9 ø——ã0çãäþûîUŸ)IKþúç23á1µ±ÊçÓå…q››ñšpÃ,L,@„ñ›ÿÃôŸKK+üÏÀoÆaaÊþÌËnaÎ ~å215å0ƒÁ8yù-x¸,þɲÏÿGý›˜²ó󳛚™p³s²s›sq¸,L¸Í8xxMÌøL9àß¿¢¤’Æÿ,ÌÌ`<ÀÞ0àNs v..~ 8¿)7ìºäùÿP…âx 8ãååà7åç7çàâçäàâøû>ó?s?p=¯ n’nn735áhÆ75å57³àûîÿônð¿!œ¥Ó¿QÛÄÌÌnåh ÿ[”3ç‚Á˜òòÀÙA€y²óñò›ÃÌàÜ|¦üÿCÿ·œœÌÌþ®uSNNDü| kxMMø¹\øøÌ`SÌMùÍøþ®u¸•‰ƒ¥ùß6ofbÁ‡ss›X€šós󛱃ø475‡Ãù¸AæþmóŽnP'Övf.æ׋€!>3vNSàv`}Snss~ 8'§)·©Å§È /þ®€.\¼pNvq;˜7Œ €#οíÄÂÅüo} çàbçåæá4áµàƒƒ`3ç“0ãfgç·`7ç2‡ý]Ûyéo 1€ ss3^0^^n8À.8/ T>‡É«#Ó—FÖÛ èÇ”ÓÜ„›ßT" Sv3>NPAÇ|ìæÜ`ÿínìLLÍíþ®'NÀK-8a|æ`F Èø8̸͸¹AEææç2…›ý÷{r„ão#ÆmÆÉÉ!Ž ¯)§;'¿4zÀˆÿ¹£Jp @ºØ99Íá0nÐ('ü|¼¼<¼¦ìfüì|ÿ蛿w‰¹?€H~P£@»| /(3x¹¸À¬,þ1´¬,ÿ®}~¿0¿…œÆÎÇn|obcs0áý§öÿÑÓp8/@u|p3€ÌìÜœ€·Â@~óXp²sþSÿä`» '`rÜ|æ ¢˜Àµ0~åå5gœ†“çŸÚw2èô·<›ƒ—Ó„ÛÄÎiRnÆ烃Yðšðspòü£ \ ˜ý»@.°ópðqÆÃÇan Ê"¨\ܦ<Ü€—YÀÿ1\ÌMÌì^þm”òòð›rƒêÊoÊeÎcÁãä2ãå‚°~>þô³‹£ãßÉœÝ Ì HnSÀ%øà Þ™À@à°ÐÈþOí»þƒX‘ÏgÎËÁÍoça‡óó®B”¨VvsP·Íþ©}w;·¿W#æ|\f<€ësš™I€ŒÇ €¿ s¿;(É€]òòƒš 'ŒÝ܂ǔ@÷߆¨“‹ù?qnS(gÁ yÀˆAÃp@689`üp7»¹éß5ïbnñ·èÉÏnR‹›Ë‚ךã,ÕŒ› dЀœ\×ô‹ÿÅà‚s™ƒÁùà‡sÁ@Éáçåæâƒ ƒ Æû]üÀê3e·0…qòú”,'Ê ~nÀû-Ìþ©ýÂn±ØÙÍ`€à±s±›rrÃ9a¼p.>¸'ß?µÿèÀËc 3ö015ãâä2á䑇לÎË;Ï?vðß@nÀVȱ[Xð€3çùÓ¥)Ð&ü0ù§>þ1»xwáãxl`à/Èàp3^ Å98ÿ~Üþ!Jyxy¹ùÙ-xøØ¹ÍL-¸¹8Ìø¸àªãàïQl4Áÿï¯ÿüÝúŸ‰©µµ«µù ;ëÐ ŒÌÌŒ@ÃíX,ÿß²þ; ZÿƒqÃ`\0nðw' öÿ_ÿûÿÄ+LYIú t4ꬌ„*ÂÝ/ˆ4(ÐÒ÷Žƒ ød*/-p ý÷±5ÿÝ¿¯çó|¿5ûR_ñüyo|;1Ë Ý<ãmîÃÈ­KB$9šŒ’¾oí¢0&öoʨ˜ÅW…˜Fâˆ%¢<™rœÚÅ=ÕÓÅŸýÖzüJ„â0yG8ãÅ·ËÎÍå—ü«‡±¨T÷þu"=œ¼ýÑ_›‡ïa|ù×1iã§týíÎ§× ýéÂ÷„&ð)й¹¹½““Ä&Œ,…ß.ü„l†‘$Ü62hÐ…–HfÔÔýÜŽŽŽïÜÐU“Äâ; Õò¿×;Aï]0C}ÄÓƒ·œ^¼xÚÀPú @ë†*!¡Ž²Gaö¯3Öìþu9âÿm$¯SBC¹Ô{£ÉsYUTT´«Ìú,ÉÅñ.bõøGS}õÜEW—=ÁSC¡¢%ˆø\ün*ËüÔŸÀ3þ„p´1Š~¸:$­ i㥬Œ=UcÍ!Ê(zK‰„IvöcU´„¿Ù˜‡‹à.£ã\KŸÛ´ÛæÕãÇ÷"Y:ÇJõLŒž?>z2Ä–-ûŽnƒá0û šòÜd¤@…Òç¦+µz:$4TF æ;•“—÷ ºoÔ|›Ìì ö{AÖŸË«C½§ó~Xzzz%ú¸Ož<)ÚÓ ¸kgoï|¶g2zØ××§]mñàâx3äæúþ5•[FVöMv6 ÂG£vßÐÈÈÁJý&WTLLÌŠŠŠ×aa¨=Q¤!®5…áaúøø”îô†ˆ‰‰±ÛŒ0@×|FGGó9ÿ’Þî¡ mÞ*M»ÑÓÓ_$'œYj¼¸ðQUS«|yh1ÊPŸŸŸ¿1AEEEÌïò¸Ém3˜J:ïÎ —¶’k–v¶zîõRúœÌ6{° ºØ¡C÷‚Z)|·Ñ0^n’›K‹°pu~h5Z”0vº$ü!Vª[ }ÉøloQ»ÖF#xûææŒâÓÁò!aðöt½åË÷Xæ‡!åÏA•DŒkÑ03còØ! 447wõô ù]‘‘“WÚMVéxÊÐþ—ó ;ÂàÑ+I$0j(7º˜G’ ò¨‘ÒÓÓ«k>XYYqrvîØ_êÕ˜Æ$G¶®qœ§pvv.Z}þžÑÒÒR½Põ¾F‘ú›êêy±ßgj¸99Õ¢°wg›‰ k½×~d#¶ aÑ­ù~áëmu~°ìäî.Õè²lla\ï8o1±³µõ>“’þyúàßK·µïT ïù@Pª¿nlä‡.d^X0Fx­@ Z˜™IÕä±›¾©¬²lÞ5—õ5H€ò‚õ2}c¾ë¡]BUÉãQ$Ü{¿ºÑGáxxx»wÔ_±µ ºÎ].çÚËÈ h–é‡ ¸mi0èÕ1ÇÅŽMM £•·qŤ* ‰*Õ*§+7ŠùüY¢¡±º9 øì¥•¨aë«sá—A Z-=Ë´+M±Å>ýü‰b˜ÏéÑÆxyÌnû-E­ÍhÒ!.Îò}(Ç ÁÄ÷÷á%§¥ÝEHñI-üºÔ£Rm¡ˆðx ¤nþÔ‰ÉGï¡ÏŸw9g½Œ3iŸ©{€†Ö™Êm ]ÍeõýiíP®|Ò÷ÎÒ]ièšêjË!Œ^+(#YtŸf*›5Ð ûª—hÃ^é7ºh7¹2þîíí]ZHzÛgæy}Á ]°âó½ˆÉÎÎÎD•¹|Ûû$lžaÜÐXÇË  ›@ù^ÇÆBk‡çñ@±›-ãt{ãÝ›qllŒRØ!_ét³¡—÷ž§ ulŒsnQRÞþ¨CÑOq}q,¾>œ .óbwk²Új¶©v씆©²²òíÀ2Ht• ï÷FOö,þÈ–FÁÂê1ý£Öv<愦õˆ;ßÒÞ>*Š”—šƒ‹Räs‰NõÂÒÒ](øÁç÷/Žm%¤¥i²<_} °™ìÔÚ‡À¿~ýb÷½ò$&%…­ýhð½~Ì3ï}ø ïyF4p«ëÆjÒƒ‹5猇þ  ÓÎ@T„¹¯‰W¾í˜äŸ¾}Ãl¿½ZeOЇð勌ÝDÅ3n/Å4 ÂÒ¯×_6n—z:fgÉ‘ˆ9ÌPÖXÿÌ3™mrCx=×ê_L ‰‘^ýöaqaaï‡oË©É×õ$\(i<ögûK±ïßGj–êî,»ƒ4¾†.o·-2+Ñi¡ÇÁQñC¥ ‘ÄÆ‰u'f7F0lñDäå­×¯õØ!³+)lR8–H†Áƒmz C'+Ó•7Ôµ/T’ݶ&p ¡ûUä‚ï.ÑŽIHäðð:Ì|*Ò(ƳJb32]ꉲú™5b¾¬c²Ž |µ –‹µï™ì Ð aã5Р;ÄÙ4GEEŽ.þûÃIÚx8*eËǸ¶Yþò%a¡ ¢N÷Rþ*À(jîy¼7Zçæ½Q/ðõ± TôTß½¹‹¼Rd!â3¢ 5„%Jl*(·ŒZÛs-/³Wä@ ¼þ†Ž<¾Îýñ_!AZZái»ï5öÇ)Û•`þHÈÈÈSS¿ö»6XÞ‡†„šBý1"€P¯¨¬ì0ò»†®¦gÖ«Ã@Ø[Íð»ƒp²3‹ÎÉYmwÚþŸ°»í© ô=›?ý£ý'Šˆ»j}›)"fdD ~‘ÖןZfÇ8õçã"?:TÂ¥¡!T–æçÓwvuÁœž~$éÒ÷³QAA¡} ˜(‡¢I• ANé«“­°ta¯•¢íÍñrØË³†††…£õŸN½‰,z.>¬HpÈŠK(À\*ˆÿ5ºNÎÎY_߃Iw8­¬ª¼n*&.n¤J•YäãÕ¡çb_°É årÉ8R^G+éo È!PwÁS¶fá) Ÿ¾ïEmÀ@<ÅCƒcßÚÞÎe¥ÇG#ÿÜ»IŪ´{{k„!+ë‚Buw5Y£˜N¼/îIÜÈ陳¬ S±%ƒ¡Ðö’ UE t¯Ä'O\¾˜=ÚêTõ¥m=ãr£˜ˆAcãð†¬íúDËvl«:ú™„Äc<êb#=0שg…øžg{´7竨sÞþ~7/#7Ç)ó!<­4uÉÉEÍÉ}¹Uﺎ€A2¢‡ˆ`?ÍÚÓꥒ̳Mª:¢Q%p ïê*ü`:²X‹ÒâUé Õ"ugýö6ìW¯\¸5¥A üw¥<6#šd®ä)à-|k™ÛYG9¹ž:) ÁÎK²$Ñ·—l¸§;’ˆÞÞþè’OYõÆ°çæ–Ø}šx[ZÙhxçÛ7×ûLçã“-D¢_Ž+Ë7hiŽÔzDKËÝkL—4 ÎÝ«3ø?;z[›–FæÞÍ5QÃËðœãßI¦Ý®•.ËO™uL±õ‘Rá^AÔÜÝÑ ¨©³bàP@”®¬MÜ9ÞL{Æ:t®•ZVFv¼‘b2ÊØƒÄë†+ö©—ž­»9Ö^X˜ßÛ§\N3FƒbWÐ=R, ·ûc~ÒqF„1ÉÆÒ¯n§Ïýº×Lè“ìþ±‚Ǻ*ßʼnAÚöZ¥~Ù]558™ˆÐ}::©ûúR§?šO70†ØŒpÇ˾†DG»vïÌû½éðëΖ.MMÝWõ00 ÷>7' ‘XsŸ\`$èƒžëæ ÁÑñKdbÙL9Ç Šò™ÎK:sEÙ4âû¿º+lǵûº`g†ê«DŽÎç>aŒªlm 14Òy #EYê烩¸\©x)¢€™tŠ~¯XÔç¼}ÃiÙéâFÉ aþ/(·¬KÏÎÌJ }ÈÚo^¡ÕÚj}Úžú¨|åˆdž¢€DNþÐ}›$b¬ÔVV{]ÐÚZÎûxT3OÃçÏ1¥{ µ[&”²úG˜¸5Â˜®p"Ìζ¼TÜš\ŠÏ4PP¸ƒI†Tj®ßæM™À˜ 5ߦéäj FÌ&¹Ëg(›cÇpÄ>½QfÖ® tœ§ãýFÌ_%,$cz}ñt”C]±&¿Í „²ß­é]d‡/.i••ˆ3Úê–®7›åèÉ"³¤`€%†Â ½¢I–{§Xo’Æi¿ y@¢™øhÓ2¨Êüz… À ¹?Œ»80PÂxGßH¿ùûúB§c´6fcxX¤ÆªûÇ}³d‘kR…÷V,öë W÷晊P›8âLV¿Å:møf\ã-«ZoOt•¯q<ƒÊVöv‚Ü›jËÝOÓ—˜äMÑ#ê´Sõåw›éÖæ®‹Å®ƒî9$)¹a´¡ôî_ù˜ÆCéL€ŠÓ2¯E¼:f4·Y]vC}Gw„x7Õd¹ÿ ®zjíïßêںߤÄÄä§ÝÜ–×~æãŒ•<Ôÿ”`SïøÎé÷—gg÷hÖ0å£èüV†šÊÍ™Ô$f{ïÏl³iéòN燌—ûâAŒV[F)fÛM£Sï‹® ç¶IE±R‡«d×QçÏ7]\45¼ü)¬ES,i`f†q²Óêß~Óº·GT`ÐLýêÔ! 0Óf´J5 …nøQ©ùô“â`J5Q¹a·ÉÖD4±h[Ä+âQ–žÓÑšhÑev5]WðñÍ'FÊãå¢þõìWWe¿Ž7=µuF_·ú¨mO_üÕlàŸf¿oÆ,ll„,,\®¡½X9’ B£Íeݬ)<¤™kS¼²jîÐûµšŒÿT2蹜ãÍÍ%€"g`›/ËuuP¢m¨c¹ðkÕ?¦ÎzÿGšôxÞ\=¡¶0$ÊöQ%Û&Y´­¤¤HÞ@³ €+)ü¶¾åçúO“³õü»|.f.Áî£ÅIâ…ª´hM-bô<<ˆ77»‰‘h˜¾¯Ã ¢z‰cMoZ¶y|EèO‰zðQ9Çdº®Z»éˆ=2ƒý…ÖÄ$÷ºwM\µ“í¢÷à=v]?ó™rXs¿7{ñ¢]ž›PSvtv⟜(.,|×ç¾+JÙŸB‡‹ŽÒ€ª¥e$!ÙÚÝàL¾ø{ä!Ò+Õ¤\wŒ/÷Ÿâ£`¶aQfxœ2ÑÓ1~/Ò`:ަÞ? u隈;[Í wzqØ„¾¸6ZLµòm;ŠQ£_Æ@óÉÓDMÆhòKd‘¾—„rñߥÇË+êÃyìmˆ@YœÉkŠŸ€ñò¥Jïs˜Ý,I [{I¤Ï%ÝGÙwl9¬áÄ>>\þQŠ4B~è~·Ê[s>@d·”Kà Cz`ó†„[!‡5°li¤O[Ú‡<'«º õ)Õò\²áèkkø_c¢ÙæM×gtünö0êð÷ãã3 »}.¼£âhä°Æ÷¯ÜLaü° ´µ1,‹œN©&8Vå‡aF"¢NunîçO/£žŽ€ñLuƵ›IÕ¶þ˜äbÏŸ³º…ôE‚MÇ®”É·è{>gô±±Dí† ¶" &z7’7ˆ:^-/ßfK;BåÙ3åL1Ù£Q”»H\ÝZF±PâõK· ƒá@@¡ÙtÝ£‘b-Ô¶6¼ï-#æ8>¸pøÝ‰iÞ ô@áøújí÷RU¼<´S99ù µZ(OK5ôZâ-,”ÛšrÑO$óǾÃÊj³Ó&Ñ­š”çÌç_r]fäwÏq×xkÖë~e%*ÐB<[[©-‡‚T²’G–qp~ÐC!™åí¼¢@<3så´kˆŒiµþ³}1GŠßø)«ªªêþé|ýâ^$´Ã§OO±f›|úh³CCk°Ù*Áw‡\noÐ==ÉüÛýPJJYö/w»¹0 žt‡¯wNMáC…†É ˜¹wÒ†b¤\¨j}´m{_ºwåìWÄj’œ„e4‹ÇŽsM¿¦âMÔ¬;ª—b®LfÁ{›@(sóùëŸ €NZZX÷—Æ­¾d„fc$ÊÏbËàö°“û–ËðrU†3ë7Pû(¤ÏD>ô»ƒô;KüßÉ` ŠfXlðÉöæ'€ŒM·áòR z±ÿ|¿àuçׯD;B½ß3KaöºĤDIMÌ¥Ÿ_ësÑÒ>ÁÆvÂÉ€‚ÑrŸ†æ.ˆiJ¸l{RæÂBsz¼@à®e§ ½Œ¢•Ç„Ô~Z×x¶‰ª@­W}£*´&úÍ ;;’Žž<jx…Ç.p!ª GºôöB˯Ab/B5Ùœ ð‚ö+ÜÐZÛç Sªœ^l°lDÊü„c&·{§ÅÉ…›PI‰Í§¹¶'vö¤]_dŒ6Çø3! D0ç†æK~þK½*äžåf"¦OóJwãsÛñåÒˆ ügb9~\p, Œu÷˜žZ•ÞÐTQBâ¡~붃CÊŸ@Çvû臜¯>êóÓP3âý.¢Í6…ã-ìÞ:ôì¶ÏGþ ú¼/í9µu5›Ô©³Ä LD@ˆ…i·œ=:ÙjôDbiíGaÖ0Kx‰j®œñÞB"±PíÎl„Ƽ¨aðÕŸì #ðøø¸BÂPÛ?A¢»ås*Yò Ço´ëY±-,raNpÅ5•ˆÅ$iÿÌ—i7‹<þÔ{Vnø@¥ÅV(ÿ˜zØJiÉxì;Ș¦‹×ž×ˆð×O¨Ê%Äl¬Œ@Ä5ƽSsÞšÝÛGíé{W¯œ(Òä^Ò³ÆZ”#Ea7,´Sô>(âÏ23¡’Á¤EÅäà‡iÒ夸&fêþ»ù€‡2z;çEñ^ùt±è7bWÁ¿$,Pé’ØP-!A þvu¾¸þ0xDÝ‘ÏWçuï·¤©óvkô¹|ŠX¥×)-`£„ÿæ2»ŽAæ¹òd²¡2F€(+‹f7çMR¬yÿÓDŸÅà¢×ežj’FìÑ»¦ÿŠyeäNwŒœ'y¨³˜!Fà‚ˆÈ ó(c3l󎨄 š^±~_%çQ…?Íó?ZQĦh…ëÞýÙgëôßW‡ *‚»¨Žç2A#Q¤1‹À.òI;ÙZåÁPøÊ%ÈÉâÈ~š˜@õ ¨üç=ŸÆOÑnΖî¸ï•ërôϵ=dT_п'¡^ã Ä}ÁÛ°èèÞp‚Þ 7[l®ÿûèýEÁ#æ?ùüR.Ž¥÷N0ƒËw 'ýè¶9xº0i–*ëCI I, U¨2ÿWíÅxp ³Õ|潨ÊFè —ì¦ ÄÄk™zõlfø8ü"”Z^^Q!¿¤®ú ˆnÐJ.kDhD¥iD*jkiMMqæf2§«c‘(9%AªÝW“˜¯‚ð뀼#N¬.ä#ëJòð9!Ñ÷n¤­¯¸?ï̶ªäÊ=IEÍ¢ÙäŠ Ù2¹^B{‚óì2Äøtg@»~'Ц¯ Í‡4Ê>Pú= qÉ w~üéç!CÃÿ\ssfm㋯ƒ`\¯“´ßñ¨0Þ÷ØíP4°@¦d’ È$±„* à €aRP gæçGìpƒfVÓÕo‡Åw.ŽÎI@¨”êòÿ™ 'W<@ZšYê½ 欳¿|C)V£¯ªŠ‹I.XSÃU(n—+‡˜-=þ)y›ìê)Ï=ÓóƒlÀDñ¥bʪYÎÍÎÍ-9]gŸËÀ0ÿÇæ÷J HCü„ƒÜ*=v=k¬TÔþ0P=‹r}yšÔ„Qû¶ï÷÷ñò7ÅZL?œÛF–ߦ®mlˆe*Ë ©´A²r˜ý«¼ªOØ=1HÇ\ø¥MBÑ"FFÔòý©ì¡ ¼ùøøÀ×bu¡”²~ûñ£ ijf›Uˆj¸ó/‘zzZ† [1<úó‰×—§FŸº–°¯®Å¿×•Þ÷=7g`fV€B |DZÈŠSööæà±ã ã¶Uú¨[[5Ñø_À­ðhÉCrê½x¹7Â^þ•V±¢øá\ƒ)ð€ÝvÇ®IChÕäñçç¦÷·f›×ƾâ©åm‰Õ;Q3¬I_í‰ éUÑSèÜPÁG?U˜t‰l§~éô/§U99³Ž -x-äCr×rUÔØ±Â|€ä×DeáÙù*"ƒÞ˜òÆph( ës›þýÛŒŸÈ"ƒ&.222l‚Ü©ÕUd===·øs•óI,jÆ+HŠŒ0ƒ —ž.ý½©V°ÌÐ'´TOúÓ€-óÆ7`ÄÔYv­@ÛÓ?O|Gÿ¼sh‹×qN" —–ýÕ‘Õè ¼7:Óv¼ì_»Eêg£ ðïÜÜPYÍÏÝ…nÃ4R8‹CÌG¸ˆj’”„®T¦²ñÆHav%5øœnÙ  I÷nД£v‘þ$6,zzúÇ´´…u»•wG‹µ¤¡ÕôËÝöâôç нqM,,‚Ãð詟xðŸY\LL=†Í¨ÄxîÔÉÚª@lkkë‡'œ¼¼CÐÞOn’Úô) П?‚À º‹· ôÐròÒãk™¡ÎN±™gñ㳫óÃ_gûKE½õ³¸ÎÎÎb…êá/V¿™oÀíìJ6„t„•üÒ¿|‘] ÜÄÄ$S@éÂ÷·ë_S@ºËA`¡¿0ìñÖô¤<A@n’’Ý€óN­Í¨ªp°@!!aQÆæxyLo e1…V™þC„Ùïöwš@ž™ 8\\ Ÿ€h$æu Kå²öo¿½!ÍË˃vääÐúãŸd^Cw›fwù-ƒðôpå+çq¶dáÃo8DDÈ‚‚‚Ÿ{z² [m§IIIï"Uy_JHÜäø¦m¡RÝCøè0ÛÔ(²RåÅ.pñˆúã×í.çÎwT;`\`áwßCŒ^‰øò"õBÿfÝ"Šùf6µ4@ G‡n¯O)5Šr^½Ÿ­IzÕiFÐcÇl‚­Š/v×5e»™œézÇÂ8\ÿ> PøäµÇé‘ûîœÁæå~–èÓ–æ\"Vý×)))„—eÝ•Ó?Zù¿}H UÜ(ƒh[冄à ¥'†2 z’§Åà—‹«³ýŸKž›óUÊHR^Ì¿¶ˆ1ÉBQñè@Ä6xBäÜ""%½„ö¹Ò…~ûöÁ¨MèærWtÔïòd[‰ÕdVht´¦½ßñ«›[lr2 ///Â'`Ñ©˜’oœ>®!!Kó~·’冭.ËýÌÓ+®ßæ}/Y†Vé«rš›ÒBe ˜òq˜žã {•awt`å°†Õ`ï>c:x…e©ª—Ìeǃá¸mŒàøúúv‚h­%=Ñò²º@%;zg©7†(,,¬È~=×ïýÛ·€%Ø5K ÿÁ˜5.³?%&! ßÛÛ#›ñ:Q@ørЂ„ Ü×›Sžb£^¢­Ï¢§ùS Ú]¯sϤ¥¤^ª«ü­215NÈ¢ë]CI)¢¤ €ÏÊÊÚ r<£†…vËËCºëƒÍ÷^o Ùß¡îßò°qT¢A´›v'”O¢ŽE´ø¶…(ØL×¢%ÒwsMEÌiAš.b@åöäñ›Ùf®ŽÄÆkâ:¿[_.» lPX’V6Èb~×çâÃü„ Ñßíåõ¥|Ž¢'ù#Ö{÷fKÊÊš3iˆvrÙÀ¸{·5fWF"Ëßß¿Âú'Ý\ËC´ ; .^—––þ{ŒÀZ7`@¾½:¼w}YÞ}:ï(€¤á|q¤ 2üa19-¾¸˜I.‰õ::º¶ŽNÇçÏ÷ÊÊÊŠ¶³¥c+šf˜˜¯euF@ É:@çP $Qv•>;Û(fœ¨w¼“Êu.PA(Gg4¹`Õl›IWð’•Ÿ` Ø*‹Ý¯$â¿]^F&±FâÒUzV’“‘ë=•9}m¾¸CZêv÷ÿ²ÊÛ6bþçFÁˆ€¹dQïîÌ2 fì†àÑ;tLMAËì£Eæ‘›P4bÀ\t`0Ô½#¡pûiårCÚ³ %€.+ªIn‹û§zn0@";»–ñy¶N/-²¹ðÓŸÐSßyóø~º¨ß]vöïo:nE8úÍ8 ù^ÄEM]k } ´¡ñ|q®•ƒ|Šäg¾_ÀŸ£ˆÐpbƒYÊ3ޝï*Ô YT~ è×Q?c@D•½¥â9 l’»|L+§MM»Œªª¯²W+Ѧ%&áy#†O¯Ì.ZC¡G÷3(sq<4+ûɹN”×­GrAÅâ¼ÌO¥!~k÷ðÍÆè€,PD* ‚>¥ {½M<ÙG  :\Íè`" Õ¯Mêûý‡•&Á¯<‘G ³u6%;ãäÊt­G},N;NÂEÕ®cÆ/,Üu¨ý1:úìxC "Ä6£ŒA$Ü‘ó“Îå²CCùJŒnÙ~`®MÕ¢MÕÀ‚ôËRŒ¼ÓöR(ÿp¿/Û‚”@¼:¤Ã±{ÿ)OÑ/ûÕ±K2ï!¹àXг[ó”þ0xÝâúOè8’¬«« Ïûˆšš…øeÐ¥PÝù3švïM{4Uµ,„¬[IöÍ€“.n]Y³!¹%"ÆšÔÑÙ‰Qª;*VmaôÑ@äélÒ´×µ¶w+_Zdzآ%•µ¸…ÈÈf§’™£Ž¶5‰„~Jâ ï]³ÉDÏU…IPpZ¯_½õÃ’Ëå˜æÙ-ÇÞGHäE³üuÑ@+ˆÁ¯ùw==d/£Éi~ªµÚM?OoAŸ›KŠMLtk?>ú­Ì0ü(i@9?úáTmõël¸üH‘âPz7¤.&j7©¿2÷Ç;TTZç$úâľÚ{GC `94T{Ì¡ða#Hćd©3ˆÿl1ÄT.‰Æ£«ó´[£ÖKgüF}ä¦&fƒ 09d[3>¤×õŽïÔEÌ>í bóLŸDMwtfQ»º-ë8h1Ìf$Òíí¶?¯4éz²5ï÷ÁØFMôVáÍN0È'=‘“Ñs­ZKù{Þ[88…x¢,¸*™û ò‘­NN6MMá½y¦‹mïíBˆ@r°è}ûhÔ^[Q•ŠìwûÖnºÙ%9™Ød^Ä’O Žáã!«ˆˆÎqµêl¢¤;–«&çŒJËË#ì§¥²<÷M¿ÿè;74%''W/±ŠTÉ0ólÓ,E›hØ<»|˜žŽig?þ (ß«S£ß–§!¡# 4ÖЉ¡ Ç|„÷Ò^•?Ñæó¸¥¥'K‰\鑘Dü»µ5Oh=Âcþ:8Oq¾(æ$äk&$j.WDݺ’ûä")‰Ü\ͧ¿“¯ôõi¶Ôèã"¡Óá˜GwŸÚØøûïoŽ}´;-TÍÅ+%½ú!Û/G«YBŒBCsÍ\Ïë Oîu’4®ÝòŠ ¤Ì ÉäâhÖóFˆg—œ*ëN‡NI˜ŒmkûÐÄì,e_Ÿu²@­ TÔ‚pk [ u–GæÙç0?g ë•Ò[îðOÕÕ¾Î_­_›¬¦’‹gȳ±µ½äfÕo@F¸¥Œ¿O§¸.û®ÉÇÕUCÍ›øívÑ™™“LɈÔ­rÕÄK·uUJRlIéSz6šîÉ'zcØä#]›ãû€Cš°s³h $¬–ƒdxô®Ã€õCjÑç®N§Cîëôääy®0?ÞF±ÍQsûqê57tœž.ü: Â$CéÎ’¼¾ñ3­~¿¾Þót’Ÿ˜àú ]*ìþæ8²élÓÓ䔄žÁáW$kîèGï¼7dœ•âå2¹“Ô,ͧëªÜŽ5¾Š\S¥(CÊtjŠc®ßx€]WW›˜âìƒÀhW" [0|EÁQÈû MI黉>Sâ%¬2ˆž;´òשe¤ÑÑòÒç{IÊË9Y‰ó`\©-Cvø_CkåÉ0òƒ«Å<Ø#5_iV…±r¬ÏC¢”Rrr6‰Ó Øyx>ªU+gŠõÙÅT›<Lo% FBAK 'ˆÒ˜þ7™I$ BëÙÛ«Ÿ®#|Ytøíêv…1¥Òû†û¶¶òÌÚ߉F‹“~ÂB×÷ñèp¬KÞ¾EihºXÜEþ³¯¶z"u~0éçIEÍÈx°t°žEÍÊzžmojŠ[é¼$;øaZpš§+¸VÒÌŒ¹í¦éU°FK³ÝEåT¦å0\@@€Ê{§7ì°¾Ù+âZ[­ÏÑäÙNí7|/›5ýS‚ó|îÂáúä¡"”ÒoÃd– ¢çCÙg‡CèV?²þì…^W§›ÇËè9ßK9§éΰØÑ7²›÷ÅD뾕zëæ¶,#/™ÊÍ)]ï`”åçWì¶{´@g14ÀëÇîfãñg‘æåŽ––hìxmÈGõ¶4þ«ËÝé§ZIL5¸…¤€‚XG‚2Áã(¥Q|ÇØN°ô£/??JL"¦¸dž*¦¹ï¶a<ÄG£íOäþœÆ+KÌSò ïù-Rp°N¹ÉUãÜЇÊWÇÎÐþ…ûKC^DÛq$ÓŸyí*¥º: M'Ï’XGUÙpZ»¿"¡]ùvÜ=äs·“ޤœ’7TÎìy­0iÂðÍÈv<ýÓb×øÒi­µ™FŠñò{^—ÇÚ?ˆ7Ǩ\ž;ξ Èé{€=ïsÊŸÄœR/Ÿ·;gÀÿÉ¢ó„n›.÷‘©Ý ]ÙÙ†}â²²¶×u‘‹ÓúÎ÷ü­/Þ?*¨0~šwDŽ>ÆÖþþs*w¯óõEçF;?›Ц|S“ÀÙ~¯a†kÐÈdµÌ1Òa>úsýDg*&TNݘømX¦¶€ÇŽôå ÅDýÐCÅ4_ãÕ¨0Yª*v“.H€tþêv/ЩKÎüSó1<<üÓæšþë@€–Ç£~zÀ<Õ?αUº®›“lÀÇJÒ+ªmï¤(xO<¾ÀÇø"‰'^¹b5ÚOÞêÅÛ Òýj†ˆu¦«DGÚÏ}ÿ¡ÙxkBée[)ÿvYÜ6û×n8` ê®ì€v¼Aý?W~k§è¤©†]AÈâ•©Â^l¬†-!K½ù².¾"¡LZHŸ>F¶±ôêÙ½ßÿoÀX¬É½¸bÁÖ^RŽ„dF­Úü¬Ï4þ{E8ÿ®ËbrɹRúV’ýçå²}¦yYhSaöá_*&‹¾j½\C½.ËT+_»kmqÎN¦W’ù«éwŸÓ]@GÒsxvwk§š¸QŒ|u®Ngép¾} £`| ¯t—•• Ê]&kh<îXè`ÉeE/“4þö^Ú$&¨9¦ÿêÎø:cž›Y÷wÌÙ™™BÚù¼Oïñ»°€f³Iè°  JN®vˆääs– G`Ÿ”KfÛ.wx¿˜qØÍ ˆm¨"\9Þ);­6xž2|ýÎׯÍ(àåö^j.3 Œ˜äE…6YAPã)œ&T$=ÏÐ!Ô‰ù:g—“îûnÕ‰)«û_( ‹+ЧBÏãr•*+!Þš%Ð6òѸAx,¾Ô3 Ü€Œehºÿ+à_ü›e#¤Hc (Ó4«3ê¦:%êGMyKôŸöy%H"ušÙñ‰”bcaVÃfˆ7gðx©èй–ó{Õ–»’N{>G›–÷µÆE2\öÁ`“ljb($á@îA'¤|¨žæÈ‚Ø_«þÜCg¼=õôêbóÉH!<ü>úE` 7rö‰ßrSŠ;ÿøÞx¨Zc§ƒ†ý®)ž• ÚS džˆih0²ïÁ¼_ÆéeøO¶jíªÄmðØ¥Êx–üƒ^VQÃt¼,B»ê7v¼ÜÀELK~;Àƒ¢âÀþÈ–.øW–%0ÁDý. «~2ÛþWí;û©ÜôÊÅš÷šO¥W^fœq´[|¥c,#fò÷ï\XY iöÈfwµ²UH;yuÈó“NE¥÷u ?qxDÝ@ÒnöóŒQ>ŸW„6£EÜø)ÝnoÐÒ*t°vñؽ••§_é-™”Âè°& Áø²Ñ¥¬ð’ïÝk¤+¦×™k£Å™#ËÞUP=Rµ?áO=®¶œþh*¹$D.Žò¦Õ«ÜøGÖ]%Í…^J¯ý*[FUÈOùÏáÀ¬Ø""VÓcw ôv0à„vj]‰ß‰Ã|ÊD|4»fZ„5fp{’±|]¥¼³ƒ¼w°¬I>x‹‰ñǤü¥ÏÝ´ðó@Ð~ZMT0&2?|}qÌTXhCýµLá¦Þ,zåF—‡)@"åBSÑÅø’“™|ðÀ7çQPu”¤äßÅáO´œsi–‹`ÒÐÜUH9~'åï8þy0e®Á}›ªí²ìesžX bJA(ÞŸcy¢×®@r‚¼ÁûCÄ…Grql@ûÁ™É#Ëc¥ùk3/Ÿ`’§JEÉ(µýkPÏékÚ8ò×Ôeûëß§sCî×K1­ÆŽóêŠx²@‹ 4»³Ü*è™~é£1Æ—Æ^e…û¹:Õ÷œ¬‚Ÿ¨5Éȵ¡£{ßG?¶½JJY*LŒÔ‹5YŸ÷zŠN'²XB»Ê̆v!©ÜÜ~ÛVY- ¦2ú§ Gt?%^ë{“Ë`†cÄ«cO#•g¦O¿=‡Éšô`8ê·ß „`=Ol¯åA‡F‚‚å÷&S\Ïo˜ögkà”Bž{¸ÿ‹CÖs'‡A×ΨàÄ%'ûÏû‰$0ÝUnó–LÅãá‰Êa(=Df&ç@ù1ï×þP«¼)Ó´[U5)›M’¤¥…Õ¤/N[ìSw.SðÛ»B§|yyŒ•n¶Ø‰Ìüh‘•žÎ~5¶Zô½>ñr* ;»yQµ{æÁØOggúâ´c¼?~2¾ñKzº<ãë‹§ÐAJ·ÍT“>\/.õ‰äEˆ2òjbZZѯŽww;™&eh`pÕÙ FäÊcu}ù‚ÀiyòúƒÞ³–Õ™wøA¯•¦¨èÖhÎ6÷f*¦M©&©- Çï´EšD?¢£CÌ–rû4QI~È«uQûN:Ò*dÞW0ª†+צ¹¬  Ë!,÷JMš(T„.”« L×ó–ÑôÄìÞñññ”Ï C³}jÁ×ùÑÇ :!çàà“Ã*ɱN '¯ÖÙWˆç{–éS&ª…Bµ·šATá{-+ô ?jd¤cÚœã!À•PÄ» éÖ„¾.tŒ÷ Éîí›ò½:¶AÑŸ+ÐoŒ`¡‚kÀprt•˜™\£ ȰóÖÄWjò·ÇG¿¡3 ÐÙˆ¥žwˆcÑó_ø5Lp™çv-rœ#£²2 :êß_Ò»”§xèŸkN àVš*5@Yj·]×9<ø#¸üï×Y ÿF‡öAô¿Ÿà˜Eã«™¸ŸlLL—w5¾¨VÉY¶ ´2­ô>WöuWVØÍåêÉ’Â#C=ƒN¶…ß¾ŸjO „º‚¢üâÙ¾5;Ï·iÝA‰Î× 9Asó–-v“&ñ ™1:Õ¯DàÔ,Ù u2“ÃÑ4òá&ú™çÖгÃ*=ÓJܼRA[gô Ý æC9Ú¬'Ô*tµ>qus3¶·›÷%í‚åàx†qÇ&B`ñbe«;[úÇ^aU¡êÈ/dþù.Û@Lô†íî2¨Á¯£HÛ»F‹±wv°ô¦¹ÿ·‚€ð(ý&WJŽ/Ë.9¹æ”qjj |¯Ž('™'nG<ögð"{F7Œ {´ôÒœÿÿâKr 1|¨)ž­ÈÀp œžK+_%Ù¹~ý˜„†z¸º+_ϥΫ^¢vºÛþ 03§›+ƒ÷ü/UT?fÓ¹†QXدÐ;à¶°´¸òõk5ºJ‡ÉSºa§ÿ¼ ¤jR»P(¢"úŒn‰‡­ÞC¤¢ô¡ÓfÐ=r?Ï @_ÜñE`3léÞ[´‡™ˆY“iÕ¾å:;Ô÷|°»Œññ¼ê# ­ N˜<=É u¯–ç:4Z+±q°Ðqw0•›©W~™áÔÔôháÙ.|Z·' åøéœþÑѸætŸã˜÷?}4‹PCת $±%5a0J¼:Ò~ŠÌð£xËÖ›&ô’ƒBÔ÷=[ï°„\.Æó ’_ûKq z<¨„„åÕöiqY@µb`“êaÀ`2 Þ«–.²Z»Ï&úwó—'Yû¿-fó7ÓÈÚžîÌ:99½nm©,{ªKRÃß~ºöƒF¿Á ñJ[ü¼ïç!ƒûŽPL±Öìù') Á„,ºAäœ+X‘SLxV8ò¬Ò´ñVL#ó{GïÅۨѽøÇ§jJÃ’9Ï Õì›+èhŒ­­¼Ý$ÇÑâ$Àº²0ÜwçXÜP%RZnï„0ˆB‹^ééÒN›š|gë}Ïe‹ê9Ž5µÃÆ_ÓYøš&Q¢óâNÏuÔÆèÀâ¨t¶xHÓŸõõn+åûL‰ûK·+z@Â~Àý˜ê÷³¶¾óbeÂPÝ?g*dî•ẦŒÜs‹n¹Êªš$.qÿ5bŠ 5@î¿Èl:°Â³MJLz(]å¢8œ+ïsvf'íê*¤}|µ*'¦A¤ŽÖì‰Ù…"±±Ù ЉNÌù訩‡ŸnO¾Áœ¯tMïöDB*c2ÿÇ‚g%ZðìììTßåRò$¼l„.͵›¨¦;¢i=:6;­VçÊDÊ*?A:8_µ¦j›º·[ÈÞ²2Ö»¡éÑ^sìöH[ ›o³_ꉂ™~F­khà‹gP¹3^f0P—·eÈD]8Z¢ƒÈm“Œ¿f>6u5§F4h9_ëåuµ‰ U™Q{Ù+2’Ôuq™Ðýå$ÉRÝZõiàÊÇØÔ,,,]¾+++)Ñi¾íG.6—†rráÚ­¯j¡S+™™™b(T§»l hjÛ()ûŸ<ò›ak;«e¹ntœm¢ýõëW Æê·®À~ ‚ ùœû>P°°b˜7_µ;º—k8àc¹æøBh78¨ÿБ ïÈ–{fö¾»O"w3;:: ÝÿœœœÐ¾wô 'TÖÖ×À½M ™­½Ã)ÕÓºº>ýââÈq!»<"(((42R]ŸPçdWÜ[ôZH²~Uâü÷TmHgEBþ˸dv“| ÿiÜd%lbÇ’¶%<—‘ùr”Ép ]hblüq*Ñ7ví{qqño£0bd€'Œ¡âƒäî| ^T„;¯­æZ^æ-­äbA·°Ob3"œmö ‰¢lÈõý‘}oÔeûÉŽ sxñåÝ3'þrŸýUïá¨ùûs«TVØ(Ã%£*¯#é²&಑Äò†Š‘´Ž#k¶¼© •þxQ,ª¹wTñ×+>íÌÍS~ ®«X`­^öN‘v÷°8™qk´´Ø~1Ùòò°Ørl©¨ÇÈv£…ëÕqAy”ßqº™M>”‡`ÝêìÚÐ>Óm“6¸TŽ•ù5™áwÓ×ä±ûmg¾}èÕÉVß·‚½BBBàgñçÉgxbZšUâÌŒ>ÒDZ!I##£ƒsQ`#fÂøGj~º~\H)o_É)~í9Xn#†™ Õà`ïÜ\Î}o:FÖ‘ Ueçå•¶³+ùí¬¯¯Ÿ`¢Š¶]ZJªspPá@[7“³m:*,¬°"½d ]Ø‹zD6ø ŒKNŽOÔovYF ~@šw° =óZ{=Ìi¦Ý¯}j{l $jÜÀÀ oT`èšYS˜uj¾:øò¿@jkk[›®‡rÎ6òÜ;ló±‚XL‘‹< ²ª¢á©k뎮®»à«â®®\`¤ìVßÝCBúu²=M,âí™pZ[UUı+2J!#"%å¡©©éc˜™¹ù"\ŽÓw#mȬÕ/ÄÔULL`Ó•K$›#Ö÷_¸]GŸ_ˆ,<#‘0b(7hN<ÞÏ”–®¾²¸¨²\Ý—BÇÌì1úƒæ $šk•'¶hž÷B„쇃âÌLGÜØØ¨¡ÍÆÄT111mðI`¾"{ñD–I€:¾¾"zmÞüw?¹¸¸h2àWñØO±Ãáp÷½…´rèæô6v£ÂeQyFû,­ýhONåÐTVV/?V aúR4uZð‚rcuµƒ8cÈ2FHLüü’œ ¯uNŒzÖæ}Î!¯¨hÙRII ãiiÆÀÆhñd2 ®­¯O†Ž…eésybnä½/Y»}£ÞÆU¿8"þô)ñæä òÍï&ü—ëù >:÷H¼9FW{„]ÑAÄICCcak;ð-]xt÷¸ü®ñåé®%t‹ ))©Áéé4BB9C¦ò«%ÿ;+ÛÛ_Aœ§TVÂô*Œß˜µ¢âÑUä)¦U‘$)**–ºlêN}ÏÍ"-|òìäøØœ\ÀÕ´e„ Â#lõéàd¬*ÍR]::zå 'cÍ»6Iæ‘•ü/V*ÄËÇ­mÌ%öÖþ8º+0Ì®ªVœ2iJˆ¯R~¼÷¨Øf>û›•¦&áÏ?bß?²Œ"á6\¿œG $£ïù2‘…¥eo*—u矄œk@¹hÀV%AÄÃÂÊêKžB õº4S}Ì…Úù/XOr$QêíÌLÙ½}~0Êtø Ÿ–÷å6½ÕÏ`‡\ºÔîñq"º‰ïy„§PSCÆl´ƒŽcÏÀJøëêüþÙ®Ÿhöïdì‡3­^Dsss2ÏŸK»¸ph–h¿ù‘-ý‚\óC¡¼ IêÓGO½½…0Éø^OV[¾ ǤrYÚÙyýúµSP{LÓ‘0ÜËì!É—*þ 2Ürrõ»<§ó¡?ZN4¹á²êkßÓ?@¦oÿÙáÊW8ü®––ñǽ½ÒIF¾}&®UjIî\5йD€Ð½ƒ)œÐhʺ¨$ffÉZ[[SjûwÅÛ/¨f2õJP ³³“‰ˆX¾MOHá¼4ùA-’Ê3º$À,Æ—¿^¯³,uIoÍ` /Iæ´|´ò\=ßmÓ%‚›Jÿ0MÙ#¼%ºçs9O±¼SïPú¹Hƒ†Ÿª•‰„Xî4w°‡+žÑ‘°qrRket||&J þi9ô­7]ø§‰Ãœÿæwª@ì¬@0⽽ſ㻣QI|ƒ¾Ul÷Þ9C„ÔiQŒÇ,&‚ˆ([‹©LœFb]B2÷Wý¼©±ñwô$Ö GT‹>›~m9ÇC¨¸0Óò°Ûp‚—?ÄœV•¸¼½¿=¹Î›£0iz~úôÄ’DêêÑÒþïÙB@z²ðå#â»$ÜÃopÞ˜îøö ÿä$¯¢šóMe%Õø"®X¨ØCž7Ŷ^÷îK.¼{Þä<+ ”–••|ÞǃðÙ³¡O«‚¿öu¬ÆËÆMp²Žììæ®ó¢ªøÃ#‚BÃå$å<…ž>fôyöü9©……¢±Ã~^žâ÷ÂwTS5Ö%Ô4ÕÊÚ %‡¯ššt+êííÓïd]ŒoŽß!&^ûè ?÷]ÎË%ÓÒBgÑë?ý=W¬u.#Ï$á\I,Fðô‘„lqw·)Ê=j” Üv"üø§ øÙŸþ2…IPÄ„¦2µÊy\¢¤5µ_ýí¶B"4èu2¨=ø1—ÖKÔåöÆgÏ3|ÛCæøà@NYù‘úšGœÀwàx‹J:*ÁfAwýÞÛ¼º::ízŒW§;ŸÜ´ 02•1˜ŠÍ±Ã>»Ö7ð=|øÐ-íûðp@e¥VëøÐ—=Iç}&~)u•¥wv.2ÿ™ÑØŒ[í²i‡Q›;$ÜÊɈoÞyF&'7<ïÕ,%•!¦5NŒð‰øn }â{üóÓm8º::Z*Úg[­ð6PFÓѹœÜHT y%úwø¶ßR74éö×DÝ‹‹Ã'{»€%øæÊ=ç/Í1qq¼ú!95\¢¹°/¥¨A¦d¯°|.>ï¶Ï÷nŒf,,ÓÆ“á©J èZÍÏɬ,»¹Õf?pÜí½Ó“,æ+A¨o0=¾¾UWG‚¦ãÛ5õxà¾“Ö B¤˜ü ŸùX}>—I¬öPF”~oyIIüPQjõۼ鲜¨~û †¤$íñÔNµåm@ZKMç.®©ýžg®hnȃQJ+ëý·ï¯”M2ò™ES_±K7˜8:¢½8$tKý*ƒÅþlÇQ¼EEåGÔwmÓCbsL ï aÚñzšàÍé‹„ýl+i·í7jòŸy>æ"RÕú!’¡ÃxhÝ2Jß$\]³²ÂO_[ã2³$zƒá™V˜Â“ØÛs Ž¢¯¨°*ÜóÄ"¿À¹œ¸¾QWVÆ£[cåßbÙ59)FµZáÝÈæí#ÿNáìrw휙Çnä:/S´4©X&q‰u¶‘()ùÔCñ`W©4Ê/-=Ä'»íµ¶Coz™fém:—ö6lÂW‰ÆšY ²4Š•»VQPÎÂ7•C#ÛÎ~a—é£(3øGGJP? ØÚÕêÂ?i}ªŽNûEb[Èï†$ÇÀ¿ýVmï¦9¸–USc§ZCº¿_Îô^bíG¶0H˜™„ÑŠ 3ï«ý1Ýò‡ž¹±?=/\K§‡˜:û|ù^¬ "|Ìë vßÖÍôó#Þ$fÿ„ÙÔ4ÅÑŽEUTР"Ý븸tˆš§tý˜$²'f> ëWñ{퉄øGxÜ9ß £òœÒÊ›öD¶}ÿ‘Iu"qb]Æ!ŒU>¸«ëÝþ‰½ÈëááÇ<<=N.UowFGÛÿ¨±Þæ¤êíÉËö»ŠëÁ`õ#ëI"Û-q†ï”¼I˜¥ùË—’ .´@5 wlOÿø>:*Un8Öð’³Hî /;û>pâÕÕ¡Y$Yaƒ*óPzkgŽlsl‚†2ÿØèhÇÑ:¥él ÍËáì|õ©ÝœwãØÔˆÅ^Æmd/xsô\øêŠÂ´M4Tâ£Ní8Úíå¼ë=¤`vö; dعìüo®í¿ÈÌÖáLåN,Èe9 òÒ™-öÇÁÉ|ûZ…å›kVϘ[™lF‹bׯ¢pÍÅP9T¬ý® Ð)38CÃd»>‡ Wº,;ÕØMÆoV ¨4¼ßéQ/q›†"-•·p¼©pK×™+ë´®aâåU}ÚT«Í€ß5õŠ–T®]¿º½½o^ú­­?i35v®Ä®w옿}Âj€öL%›Òwg©×£·—Rð ,øÛ‡öÒ· ëkV]ŸsF“¥<T êvßÔĹ½B—Àc¤‹?[ÏKæ«Ìd¸nÔ5u\n4ÑØÁÍÍw1É’uvOÃ"ä{·&C°IÓè^Rئo;¶“?ÑÙYÀ˜i#úôÉ ÔÊäŽîn\ñ`>Ó‰ ÖµïoÒT•:dŸ.,½@Z\$eœqOk¾´à0ÆQ.eå½5‘DÌ÷½ 1›F?ë^JAŽVyU…õOÉ÷Bç(דÆÀ}µÜ…>’bê eCí‰ú¬i|›ÝOÎZÍ·¹™M–ÔÓów¨3¨÷{U."!ëïì—‡th/c8¨c‰c(é?Í‹[~’ÒÔ„* ü÷—2bΞû¥º '¢·WîÜé|„ÖqÅ"`¶9Ÿé¨™Òo¦÷`Ù×8R¶õ•×ñ†ªëºiYqÿãÇ-Ó{ÄPx Ê“n­Mx¯VÛé­pÃæxFoG€büœ‹ÏEMýÈÂääý83þGÈøùƒ*jìî{xHG’­GîÌ–np¡óSõÓ±°²²Ú:Ÿí• QZˆm Ÿ® òG¦rP‘“³ðñë,œ9³¥T¿"¤b2.AUY9Òȯ5š\Ðÿ{=:Þm4€ÌºãÇ"ûZ\,›üCxÛ¼?,X*Êõ{[+Îû÷ƒ´aQQ¨Sµ¶…oû2ðqãPDÛ¥÷No‘×׽ɷôˆ¤œ'ïé VovÊtä,>ŽV¼Âs_9ˆÖ0f7érºîþ–^ZÈÄ%éoFA2>'d@y‹oNM ­™Ý^Y¶Ì”åµ’ßG÷ I$Ä&¬{–§·5 ôê’ÔB‚òçîÜló V’¸)DEHÈbb«'¯ùð¡ðwEåKÀD,ƒ[[Z K`AÈ !#ßwÃeùª„øÐ½ÅÒGØ(±))1è*òíº·gpÌ™;þ°M0Ò.0›ÖW­$±±!’¾½¥z*Ú oË¿ïO`ƒ³—£?uÄ€xqÑ´6]üˆic'*Uf}Ο{ò–€ì×ÛxD/@”ÄÍÀÀ‚ç{íFâêV Dv%Üã#ò½ãcÕ"A‡PS êã‘à`Ððë‹CÏKJCû0¿¶æz¢œÅQMPâ˜:ÌÆ ŸV «t¹ç úÒï>iÀp£<ÚuŒÀ¡y°Z7Al²ù”°hi‰úía¾MþþþÔ¡Ý›ñ TŽÅµ Bï¶»RÑ[h¤¤EVOœ×UQ &.b -Þ¡>ØæSCšü€´GƒÏ:íí¼gëuãKôÔùe0'1''j ¢ö—îE’o†‹ªLÈeWÑâ™>Ö$¦×ÙÉLO^û_—¢œ±Í›ÿÎ3Ù Ýî OcÀz^Lj\`å)¬€xÀüèʼ½ò5 ‡0Ãï6ˆLZ»yaAÂó%ù3Ãt„éúç=Ÿè‡<®îì4i% ¥°z¼ü-mN0†³Äî9— ÃÝE)__2òöx ë“€¾ÿÜÛÞÓà,ø½Ì€éêæ2‰Ë: éã½'FPÆôêô»Ê“ ’®À.ä„*â ð…F*¾Å–h "|šhH1ë,©R•swÏsEgÊA:&]K¯ØóÈŠ¨¶=¼Êfô‰~vd³G{2åÚ r¥Öå´ —\Êoé×Èœ–'@01&i‡K˜†Ð·§ÿøQ‘Ç‹“í{Ȥc’¹·1¡6É\Ö¼©¼Ž‘ ¦¿l-{bÂ5’´þ.è—ÏÛ“ðèØ­3Œ›öK --5™È½ïÕ>n*·m$“»¯·G£ôT×UTr—²³T±qT,ø„…‰¾gIªñ ¤vŒá»»Ó¨ (-Eý€S–}1ƨIƒY;yÌGRúî}ΑmmÀ”fTó×fùóNÀýÛo$&–6`ÎõËÉÜÑysÍÇÞó½4Š ,,úäîU‰¬à“íæë̸Œqa#ÌÔ¿„„=:úúÈB0¿ÚT\œä,‚| Ñ76æÓ, îƒyì<õôjV£ßÈ©—.>@Ïe¤àì!«Ë𩃪}Ã+·BÕçNZ@  tÉÈ½Š ô{ÿZ%»É™|Øk`p0i&œ;;;€]þCÊ}GÂ\^íSßõ¹°{]¾«´=ÅDPm×ÏDú,Î Ÿš¡q)hks@1½Û¾U;oo‘gÓu, ˜¯AÜIHæRƒ ‘µ8Y­*óÌÝáSgíÖ–Ââ‚1ݹõüœ |•I. HƒÊwïÑ«—šJ¢a`é´Ï{q´þÉÏEKýñçà7í·< ë§…ŠÁÒ…d_·û±³avké°sp¼ -Ê(¦Hë¡òÎÌð˜|äX¤~ïù^ÝÉð½`º8­ïÞ™ý©Ñ†{·0×,Ë)%å|¢‰!sVh6Þ\MZmMiüêmŒd¸q ®¡¦}&ôô/kû46vÓÂjT®µ·‘‡Ë­XƒÙtï ‡(Ž),=Ï]™ù1áKgÇãÖ „–7ë‹É=Ž ØoKsÓV.§Þr•I€(àùF~¥¿ð³ÅP÷ægìt|zã>QkKBÛg ÆÈn¾éw±Î‰…q#¬|牬’xU\2rƒWA|44XO×stÌë%“f©g+á¤MŒ%¸Ap°ŠîNPÓ[+M°šŸ ÝtÂgåçÇ{±züýûcïï(ƒ©£›oñW¾¦ Í4ìcŒ—I>b`¸s窀rÆ.‚È<Ž’¡~ˆŒú§V/gb^ä¹k)š «p a/(0(w"í§E4Š3yR£Á`±ß¼YÔ®^aVU«Þ?_½®´ÂÉ {6llm=÷¸á¨ß ×þhKèöSMQQóR;H?bèr‹ïåˆMÝîUzÅGøáû‡Cˆu,”~[,ztY:Õ=ú!¹Êæ~”æx>¹¹Ë š5׿Û68>ðQGññŸwÜñð>_†uÑ\/ÝñóžÏ‡üÈ6¨0x,7zTÚ20ˆýYKçë N Ž¡‚Ì̬ @ÍúÑù¹$µgžgLå-Þ~`òO$ÄÚžªõx¸µ}KΤÀDšH7ƘHïödSÝÈcW ~s°§¼]) ØÖ«LÜÛ&®­=ÜlÆÿ_õfñ5ê]U^È ¼Ž.‹›‚I @ýg[† ¿:Û™hyy‡üg" GúfæÆ‰Å|Þg¬ddS@öþ ~C'#Û÷* ¥]ÌÓ“£³3nÿW7)¨l”ÞoYQy|Nõ&&UžÐ–Y½*5}©Ò[¥t¼¿¢HAÈ*,è‘UéDEA„5ÚPLÇfd±p²=\<Àë(%Æláä\ùù-U41O º€«U—[h <ÿ¹hϯn¿G\®Â„~ h•þ`Â_ÅT8Ìï†áš}Âçü ‘Ǿ ÈHf ô#zŠp2•#AIHçS 4¬å?7úu¼9ÜÔ9E°3Ò§½„™œ âV.íœo‰Uc+½\¶!g0 0Š Ç¸<ï¸8^ýÑì|u0€_c}ˆ8nâL-Øü4Žù^ }>6@[`ÔÐXš?Z›zvÙRWRR*®|±ª8n¦“Ì]ˆ®J³¿°õ>µ‚Fý×LÕÑcG¢«wã×’|ª&¦Âû¼—äå@¦@ßW‚€\±˜ýŸ*«š ­OuÒóä<ÌIÀh‹ë~ýòßgÜØ@@Ä÷Å*ųgÏ`Ð~'›n2ïqÃ>{^ñ!¾yƒ­v8;¯[MV=AzPR+ôÍÝmk⤇œ+DÚºu'Ûï1ƒ¸Þ®f˜ÎµÌW/ùpG‚ñ ÌÝ`¹á+Z›U˜™eÝ&¾¨ÐáWIr2(2%)"vöŠ´ï,&'ˆ»&ÉŽ\0ÓÔl˜éÜŠbfôYƒÚoÕßOb‰ˆd|ÿ­±û÷2£3–áû·Ï&Z/éå‘÷³Æ:C»ê7–÷ñ(;³.W 4BÀtÌ?¼&,[ò»m;ÙŽªpß¶Â 6îuÓÎ!\x")O% @ð<½¥@U©¯¯ïjÖ~8¦È‘9¨Ðâ®Q¥æþBÇÉÞÑÖ›6Á·dÖº:ù‡^¡ LÏ;çæðÏ>cz ¨á³g8 î,wx„Ä ccb˜2hJþ9_š.×ýéè§y¿Ì+i9r ¿Y…ß$0 ³ûµ Ž/¾Ⱥ—2"ÇlÁç¶3V.Šj²ÿ‹ê¬ývSÞRÎø"öC£E €þ’ò‚;Ú´ 8ÞìýÔÓ¸YÁ¥9é¹X%ÁÇwF;ü“éõöo³›#tbRÞ%>Ó‘ÍJ—UJ»«¿º™ ^ÝÉË žhõ°³_” ”•Mè=(* nLhÔ±ÄÑÑö«‚Æ@Δ˜:Ì„~¶ÌØî@j¬Ã/ðn³Çüg€•Ö?=>\PAƒáÉ$€gÃ^¶ö{€‹´]:à#a¹/0G©hª^y.JÇà¾MIÁ²·gq]û.ÅaøîÝ}}ƒih5C?Dñ÷kG”Œ›G7¸xó¦;3óØé‘n›=Æýñ"ú!9ªhèΧwîv9Û¶Kl„ã3N«—ÇGÁ€x} ‚?úEhK™^¸6ùÖÙ5ú—êÝ­xyxO!}& d Ã3:„rË@ Â#$µ›\,×ÐÉɇ–釛È@XvvþB£Mè/Ãôš»þgQ&ð´¬Fÿ\DBW ®ú˜¬/`H¾7üÓu÷·´µìfø(Ó† °ÝhqÃp(Ò¯4·Œ*gIFäAnf–œÝN›ˆécŽÅ7!„Lå@i @¬¿c‰êwF“?;;_í#ƒðô§çÁïûÐÞàãÇ8ïèŽ;à (Ô§5¿õo '±㓽ýeJ…qdìèHWȲõÛ,ºÌ`úÇ=›—Ò_J"÷ûèsµÂ¡ãIÓ/ð¤g{ZE»b|§ÒëÔÕug&q󭺮j!´ÙN‰ÜCÜäVýùK¬Áâââ=ÎêÀHæÎ¯O/ÏN¦¢`Í?¥oâž97ú´3Ë[ïÅ$ü?þ‘mE|<³ÝŒ'N¾’p4¥[g“[¶‰¥e¿›6#($ªZ [Nvv$@©X|%éËéL^C\?Q|m$‰/®žbgfÊ‚SÑ¡ï~y-@„NHÖøè=öìêÐW}J“ƒói&üCÓë¨(TÜ{ç˜k?ºÂE,1KùÔ½,H&pÄþª™@DµzYôÐ/z†Z…ÄÈÌÜSf0^ —ÆÔ5^–ÃbìVynmÍOà‹‰* í<üáÑß>|ýÑøBÏuÝO<š†îA¡K©©xW“‡ÇGÝn¹H`UŠÿ(¡0§Âuöi„,V¬÷_â u{Þû ˜0䱋ôy™¸º^GGØÙÙR) ÆZt4×Mz¼ÒÛf§Å]¨)éèA(À~ <>À¤ýbà  þö|èþ{cbJß DÛñè7€@À% –õQ×*žèîÆMOf·Qçmº(ð/(Áóø×¶ECƒ¶ioô.²\ÄøLikL,,È€ŠÝÞäj%­G›Fvt›³ä=¿ÅŽ |°(@–õX‚¶2$\¬Õå´5AäJ÷ñžŽ"ê=ZH9$ÀþšÊÝòTØ7í÷}O$ÌÌÐh»r ûÇE¼NPAjV¦$žA¼'iâž—'} ¢GQr•Ö*ŸHƒ‡"ÞE·6?´³ƒI,Pà „õ [2£ãú0^h´Ò›ö[jPÆä$ã•qZ’zMy*Vï°Ý€)»¤â_ `r»>?66™­üÍÞ‰{HzúJg™<ÇÖ/SÙÜÒPõa‚Êù»‰‰ íFAÚ-Çf–·‹„©åSÀW}÷öÏËL]þlT¼r;_ù*(0+k"1@Ý®`·L×cW Ä,†DBýnt"ÆJE€$U…6 on1镃ª9x,à=æâB±Ü[èxIºîØ~}Ï~ÊJ ùêÄ^$]Ä'laAB–ã}\Ü}ºï.îuQkBúm2D®ï e´çévÛ@9G)Ú%ËÚ÷Ìî»éR·ldýßXß>@D\üÒ÷$0ל©¡YÐô·Œ¥ë®ƒ¤8®™º²2†t¯ÆDMýÉo0D30D€*w=÷ø¯®V²ä‰^”‰kÇ?*~SSC­Ôû]íó¾?Xé0«ÝÐdKb'>>> ˜ÀóŒ¶ø+@é,Þ±^'Å™P÷׆+*¦uu"XÌɸ™ÓñÝoï»dd<Ó„`î%LãTÖB±2‘½1xØÄÄo˜´Äpˆ’¢YÒL€†öù¾S !½Ò)¡{>w÷î]á«]?ÎÌ *#?󶻫-Ÿð½t¡üx˜x¸RÞgÏíæ¼"!]h7߬C«ø”ðÊÊu‚~&aŸ \ü\¶cÄß¾®MþDJsmìk\Ïë8ÁÁÞC/™Úpnì7U‡în±£Ý˜»È;Æ3|ZvS¿e¹½¾D=DÁÀ”CÈ÷=G[Ö¤‘âûif;Êç´€Éãк·÷@ÝâzqE±Zþޤ«+£Ò‡©|% &sœžiª‚œ::Ò‡È1€…5…µŠò‰;±(„z9b`f–ú™÷Êɉ½ØÉm¢§'9ŽH• ,PoîÝ çMM|©H§žÑŒO3-÷ÇMFå•”¨üðöž ‰‰ÅíýîC73ûýLZ}lÌþq˜ÓP:t“|ùZXŸWa¡æþÞâ7W ¹» —F64W¾^>á@‚Ùjú•‰S«â BmݹÓé¼o \3q˜»siâÍG`ZZ©”‘09ß2´ÌZk+ ÈŠ)?ÿ…Ô#¦áŸ/œ.jx§j³eŸ‘¢Ñ~a„Ž+éÕ#-|Ïl^›id+%  .iÀ”·òëy™³Ôzºpé÷léõíá‹‹&2i…‘72{Œüº;‡v©ÊôQ%M¨Fér JÞÙ5Ñ&Œ0]ì?äñy¬ôÝ÷þ¯œ™[ýt‘O­¬pŽÝ~Ô;ÒC¡*PSÝóuíêú”Èi±Sm¦ù”e<›6éZ(*ž¯¤”…RÆIp¤<È(”øGLUÎ=¢×®£H7MÖ‡3“…ëU¶±ÑºC#.=föºB†pïU&«”šd9Ak*ÜEi=䡱E``—›åÚž^”Auu„îÛ©Eªô‘ܪªts‘ÆÆ|³áþ2!˜S-Yu¹ëùðÝaþ†„\PUãžju½ã!Ì÷J å-ߋҞ®:£ M0…opzžsÜÍð›£D':Hpqÿòùs½çb %ýÂúÏ$ty)@*¿¦®ËÓ mLÕ’7¹×¾.´~QÖEknC€§}¼À‹å‚è{ÓE1B6Š¢úY  î/^$ˆU¿âÆ(7Z•““yððWè\«`Áò{l£JJ"{';Qÿ”Æû’XÔ—>P äMp¥3g™¸ª­îoAãïŸa£éwK ?T –‰{ÿ¾;Ì…/ÌtÿW÷D“[ñïʧÊþoßJÈŠ](ÍÉ]~ª¥E ˜ü‹nä3¥oŠSŽ¿%¤¥‘ÇˤÛ}¯EŒ^vÄÇ㣉]\ðh;å¼êî6å²É¹oŒD¿Ûî¶©ù¹7ak’Þóêì>` Oµµ9þYý\¹ÛÐPÓ»5éàäfeiI«@"¥Súë=%ÕãÇ•ú¥¿dIôŠùžY׌"†>…Lbj÷ +Ô~lt ‰­(2!ÏŠ¹iå`w§¯CCåÏèLõçÈ wtH1°Ž(FŒD3¶7@n}|ïÞŒäS„qœþŒº: dO¶§ª"lToŠ?œê¨Þ+°ã¯Œ&¯Å!ŸÅ¶;ݱþ>Jð‚<®ÿàèH=µ/ª€­XÐÜ*„1˧t'>“ü8—v÷A™v¥Ø\Z<: Í$ý:#cgËËCc“7+_ÓàÐeJÏŸ'µøžléDRë☌ɥo/¤fdPîÌ6÷ºç¼Y_G5±HDÖçrÝNÅ|q(´¶€;3šR4‹Â‰\ª¶`H“Ùm£ºÞ~:¯Š;ñøXrmæœ{k›ó ¿/ÖéάÚÞôHÒ“Dcó݈înÕpŸ( —_ŸQ5¿þ䎫ó6¨?Ù¥:^ùöa`k{{2[:Fl ŽD*üªæ÷ñbWHµ¿¿ÿ«n• ÏfCû킨ü|ú㣒çÉr•>bñ÷ÜAs¹“"Ç“áQùm›­Ž»»MÊG¾ ñÔíõëgï.ª8ú=¯d/SM— w_í6—Ë^¾»$øÝ,C.ŒI.ðÑmslïà@ìÙ3D99¹½Q-£Ž‰ ⺺:>¿ï c¬ú ÈÈÈ5³$‡+_ž>zÛr3íØÞ1<Œ ­çÍ]äÇCD„„¦þ÷Ùa°7……OYõQÞ @’Ûü‘¬Wmõ»v²Ú²úêÊ2ÚXËË}¯Š5KM˜R%¥¥9yyyW––Ôh˦£""ŠÆ~oMVÛMT˜DÂz0)„¾ø^nóö«­»{8´€“þñ³ÖÛÂ!Í(÷/þeð$ÕV˜¾Œ$J šeFöfÔ” šQm{).¢üÌNC)âý¥¤¤$9*ê:*j¬%™þæ+rA÷ø–Äää/Äp…ǸÚCSSMýîåZ†Š‰OXY-n¯wýR ï`bZDÂ@†ðœlëý{ ‚ b걌´_F,™,Íž¡r¨piȽ-dSû½#jm¤Ö ÆW}¯Ñ[3##cèèø8¥­Í7h ÍL·|‹»R[ûr}}]cÒáü¸¿ØZ§‡z$fu}½¥Z¾’ù“'OÀô&¾ÄÒÐØšåF’ãSÉ$àšmT'”“WeÝKaH…†ôÄz÷ÏÜ5ÍhÁÜwào™"¢£¯(>D•——ONK£ááÑ<ðÖ××/ÝLII‘¥Ðj;mLIÑ ÚîùüY]ûù˜ùPºpôP>ð“Ïå7 ôеø¹U» ö>¢)LÕê~8SÑek™a›wØíeû­WyÃ\ïågC<7û$ºl½ó©LëøÅ]] Ÿ4Žšl!óéljmîLSãñåä»òÀ#¿º#p‚¾Wö|ùÒdc¤º²¥µ/àììÌ&_þôäDJ]¿³³“ÝcGßûdÒ²¶mµ?Çh¤šxÊÂÚÖÖV"‚9øåK(‹vÅkÔ{wè°Q&ÀèSbcqªkkÍA&˜#!!ŒM·û‰Úη srp˜ÎÍÍ•TTTôŸ0‰²20ƒ_'&’’’VßG'”Kc7¹c;Uó$"&¦ÜyrdDéãTF¦xˆ¦§£†}HIü>aRð£m΢ÍyÉ—Ëù~Û#I%»:F}€DÐÔ <¤dd™pó¢.“uÓÚ4 ïåi‘k÷±yÿ8¦Î“¥}úmÛ¢QLpäýõµ€5ਨ¨q½@îNM]ÌäINHhª'1ßü1NÀ”œ’ò3ž+wƒi eêÕ;(eèèèTÎûÝèžc~þHÎçôúz¯ kpp0²Ön2n{®µ¹³jØWôÕCu]t½Ê·÷üÌ¢¢FsÍîÀìƒ==Á-ž*Us›ãå“€Ã#A»0`íƒ#}ýAÍRÝîÁ¯_S23©.E°1>þà6=?Ÿ19= ]hÃã±3c#øÄ:CÍ®6î>jžñ.¡Šö‹[.«Ï‡?3‘{f2œ+¯“Æce: †ú 75yí›4ÒÑîÛS0Ð tçÛ¾W÷ïß·»¹:‡<“’œ,ƒ_t)˜TÇ Ï}×FÆçô´j62ºÆ…¸x¢¾ÐE°èòöaLI<˳2&·õ»#¹äà Óû–>·±Pß¹ro“Xôz¤"‰2Cµ„”Û_¯ÊL6ÈXãÍ¿ì àã Å௥¥ÉV¯ÓäÜ\ÚéÆù¿ÝÔÔÔx^¬($ÆÇަî×­±¢zùA¯ÉõÉÀÀ¼Ùc×a"K2BÛÐbºÖV+¨pÕVîmqZ¬gªÎ~À÷úX+1.®ódw~üΤS~åzžPßG v€žX g3j3£¢¢MøšÆ[nè<Î5ÚV’ñ®¤²Ð¶¹¿ØX²ˆþËÆðx¡¼`ŽJÞ=ù€Û°w©¿bÿz¹z£nièB9é–ÆÍ:„K.áÑêÊJÕµzé½=Å *¤ôçÁï¾d^GŠ›«Ãç[3jT0uÞQ„œü|8 B2JJ=¿ûÞÁÌûñ4òÊ£ÿºPð“Üsm*&&ôçéB…ã"êÿ1ÊíÑb›É²þÊѺ¡ØÓìÐ8 þkl76g1?½À‚ú©›žB¬·Qý¿pÇj†ç_& Ð})ö~n/Šìú²S=$Òå›’20µOèŽóm -é±±ˆäääø€¨|MåFx=3£ßØ£<«~ƒÀîsáJ&âMlmm-#//îë+‚ žÂÚ®p¾¾)z¹ÅÉlÔF¶¿¿=Ï!‡¦ÂçòäU7ý€úe­RÕç¼²í;¯ÁŸ4´Ëò|¢¿Äd]š W¨×r… $ð=™OÂã Èj—ç¦s,ô–ÕÑqtŽå¦³à–HÛ8¤è?ÓIR©ÓÓGCGŸì B‡.ɳ¬¢Mã´ÄdbdŒkñÝ[x6V¤ÁdabÒq²5Ù%CñÈ™¯ÄïæYÆþ Î$6#‹n¦@Ä NN¦Ì6¹Ei¥°f€`'ú/—Êuº¸¸lÔ3«mñ÷áêIIëÖ7MØL¯šÝoênÒÕ?ßIq¨ÔÁªþ+‡õº¤dÐvĩڇ–Ýùä¦ë(¹KCµ¢{uÂÃr[#‰3êZ<™W.Ü Þ……ÞÏ͇½­‹ÚøÅøÜÖb#B€a4ËáƒæC7+"Ú/£Å…»e…íXhh¦ÛSµp€¥…Ç^Ùv“³M•)œ–r†_¿šG‘òZ@1K4îãèóDÍ¿„5÷»ƒ¬uTñ„´’R…¬cS-:×+ É&ÇJõÂssgW…  ËTþ’Êëø 0×OÄ—õÏqÃ$ì™ìèxÃm=è¶=•ðAØ+± ÖûCÍõóÉÃÄ å0hF,`F_^—·ÄØ2ž«ª§÷ç´)N¬W'j…¥\daÊÕ2\¾‘ô)ofxVf¨xí¦x}]aÒ5±¿Ô«¸dé<©ù€a‹gl­ÍhxB|<{± ¨H/\]K8`¤ð™ÓÖã\ýñH*Iî_"þì= xUšñØYäSÈÀ7âè E«\v§ëîªD rˆu¼J »»šªj’ àà… ê¸#áTñDEÔà€x ‚®ã®r "ëÔYtÿWU}%:³»óý}R]¯þ÷ß×{õb?Þû­óÆFŸ[MÏyîð¬øœI‹Þû¦fpó¶§•×fw®¹³ñ®ßöÔo­©S¡Å¿ð8$†ýï}fÒK ›š¸—ì/º\U^.Íš5ëmÛi&EŽ.eŸ|ᣓâ¬3nžX¹yÁâ-ßWõ:plÊÎ!#–6­öÎÝâOÞúÄÎCºï|ŽyhÊ—+¯ÿòàÛ Ö-?6¹4}×„ŠŠ|PgçÎWCC6eß§k>„"·õ1öȬ“ÙâÑeæ½Måó[—÷/óñY€¦ÎO]õÕ–[ï¾âòéß}þk†$¯Û´iSxóŸ.ûj‰±^Z»v­Ÿaîì^·¨¡¾~èüÀÑŸ_|þyåÅèÇO>{ÿ® &¯iþÊ‘ŸïÒxx YÈÞøobAÞï'¿<}/4úo½ýökø×˜ï¿ÿ¼n8Ú¯yÇŽCgÖÅb† ûÃD¹áÈ·—A–º¼è‰•+;¿qèëöȮկlÙÒÒÿu{f̆¡qm`ÿsuÏ«&â¼~uÅ×e_/k: ì‰û³Ç fôª°n2jjzyyõÁ»žCMMMÔ´¯&àâ9r$÷îБ3ù6Žõ:{ä¥q ¦ÝóãòŒ­ÛBlëÁ]¿íܼW¬¸öÀ>šë¾àÌxóYo÷þÈm­hØp´yå†÷^Ð+‹nü!ÿEcÏwwŠÿGøøŸ¿ÞûÚŠð¾Ms»Å¦N]þõDÐN^ÕÇÝ ã_VIkv¾Bÿ@ï±/|~óÕÏkåÞš×½ÏÖq¾fÎýß­ÜÜMßÓs«/Ôw-;¯qaÏ[—Í]ûÝ¢ÿ~lÆ‘[6ï\Úlþâ‹9PQ6nßÞ {Ûš5 MGÌö<{ÙNƒ«Z³yç°_o{¬³бÅ_.[·G?ÎßoíõÖ¸qã~øléMýŠºuér惇¿ ¼¿|äÑ…cž|zøÜºô®_5ÿкÅÃÖ½|Oe·¦È#7N¬’oÏ/Ul³ûéê 3ó;Þ6áÅè¤Æ£÷\ÕaùæW-z}ñnPÕ¡½{÷΂î¡ñ+'¿·uë¦O^¹ÿò„k®wÃ+ïíÚu£½³±ñòñ÷ÌŸ;(çûö7OÙõ3냬ûn2`Êåï_òôëÔ ê&® —Ù>b{Ò‘‹õG_®ƒØ4Ì[¸{~È]®Úÿö‚ñžùê牗vYU=óÈm~øáª^#? Žö<ôU´ãíúÏ•ÿµî±’Gg¬üf÷Ë}ö67ÏÓµ÷¶éKÅÑ7uí5<¯bí¨eŸ>gôùEwî=ò¾{¾úÛ“«gÄŸ›²µß¥—^úÉŽUÊÄÙ¾º?üôÓãÇîìóí Kî¾¢ü·…?U=môk~xµ¹_ìׯãÅ_<6Ú´íl(aÉ£sóó†~ëÒ¥=¶Kù¥Ü7€Ø¸büÊØ'ÏøïoÞì1qö#Ïýuφêf}x}—®]%¨Añ n½çûØ÷ôÕÇ/u;úýÁ+ËËÏIþñòü1½(öÆGýnæÌ™6wó²âîÝïïÇ”þéöCßï¹Iyg!õõ·ß¾úû3Îús§+/[´d‰²kudÇêÈEÛÊïtè‹÷g7çwèyð•7ßü×É“'?»jÕ¬õëK ‘=£Gϼ6¦ß<¢ë»á×þÖû Ï-½ãWø·s>Þ\:¯L–}Û{æ—vhÕÔ¸ò’aü\®ç­p ÿ¼ú¼ŸåÝàÍ0ï{Þƒg/rK;œ1à:r惋¯~*n[úpáì³óÀ@¯Ç;ÜzÏ5ŸþùuŸ¾>g¡0Õ¼ÞÝ8cvׇ§|þýóžxkߨH$ò»+fÞw˜;óÁޏX¹³ñ¦R"ÿhÿóç”wþ£'OÿnÀÑÃÖtº%Ì-øwK8®±™¼£ IQ7Ì<öçN·ÜSøÈ¾QcðýñŠ®]º|ýõÞA·…—,;0××ר®Þðê߯vQ=~{–uý ’7gƒZßóú ìå Rš7ï]ùÀ›ñüÄ}‡í?õ¸ëêüÝÊ_Ôú<ø”YöLéu7çýòùgú„u¹&VkØbzA­ ð̔̆j¡¶ºZ*á‚ˆÊ ><Ëâ+âHçžrïÝKæQ4OqÅRGR|ÿPŠôDI^ÿA>¬¨±‡8UãU…cµòb4'r$ÃJ¿DÈ?_ü[¶WìêêAR™’3vÊ¡ÑvüÓ¢püÓ Åñ4…ãŸc)ê—øÿßøõ,5¨êêŠÁ63Q1¶txù ÂÇ3ƒ‚Á²ª2bÂЪà ª€$ªL)jé¶nD¥p08x¤ðÕÚv¬0¬««+¨c ³&X5&XqQx²÷5`§Í,PmÕWÒ±È!X G­â,h(QÝÙ,’T¸D-6€¦ÆõižAFÔFQ;PÕC>BqïŠ}6ª·ÝÉý•ZÉ´]<¶jH@ð³!™;00ȈÄ$[—ÃéxÊ‹©9Qˆ‡b_ ŠBT؆™WfÔ7À8(I( Hg†­ÛaT’ /¹ŠS„WZ‰>)€¾ÄÀŠòB‹:¢Ò Bb Ò‰¢ * º;…õèõD­‰4S’­Ų|„‰ÂÅ>Ën#«!ÛGØ O³d)¦³ÓŸL‘¦IL¥Ø7ej™ S,_IQÐ}Ò¾‰jCÔB 6°Õrv¿Qišm"tZY6‘¥OG'Á²ÇŒ*ÙÒÉÏ>¡™% âÒ>ª¡Ä#à6} Lðê†>zT·Ç`!$p¾¾ý˜:=ªu} †¤öq%ŠôšZžgW­êº`ûTK`ݽ ’ µ.ª>ÐU2b QÏ@€P "jØ€,bLC„]«[ù Ý&à«6,¤rá‘îIéx°»J "Ž_ËF((¶b’¢GkŠ}¤Ï¹Iªê݃zŠl—øbŽÁ ŽÕ÷wtXd«‰˜iL§“ÂzMÔ—÷ÂHƒId‡"î,"Éš7dzï„Ccêu Å“ý‹@–hÂxDF¦¯„.à D0Šª¶2‰˜dÚ®rñƒ+Ýäê>3ó8@i‚‚“šFšK–åæ WDQ<œ6Ö-Û{ÂzI‘äù8"ª/pó°#pÉIº ¨j'fQP‚ÿ`b61€³2pŒAa,A Õ6ž›JÜ„Ll&ñJQðOŒ'w´‹ØÍ¡qóxØSØ4=Ü‚Ë!x$ëÔ¢`<ì4aÙL•Ó*§OPç§Y®xÔKÌÙ± ÑQXm—˜îÅqBÈ™áné* €ðIÁãzÀLd5"ñ45äk©µN§ Eµx¥ÖJ),Äjˆ*IÂÎMIÒ2á×ÒZV,¬Û²d&³G bLÄ-d,†.ŒQÔßGxT³ ¨•¢jB tE嬭kAÂV}úÞ€ËÂHiZHß§w––¼·¿wï¾ýgd„„\€7¡2Ÿ7ìq”öJ‹G"í0pÂo.‰Åå€dÛ¦Ž“ö"á*RIKef`wR ºÞXÛí Æ–ÅÓ\ŒIWKä‚”;¤C’”oK²™ô …Kª1¥¡f¢Å*LÐÊD]m a´Ez¤Æm2MR]­½êj «-ˆEk|ÐNœB‘b Ò$¸ ƒ>B Û¸‘MçÖÁ P‚C€óºÏl°Á³ŒcS‚WV­„ÝÏova£†Š(( ®™3å¨0õiy&rÓá´zîqŽÛ`tDñ<åÑ~J 9¿è6Îms@·ÁÁÌt• ?N2u#n%ª³CŠ®é ‘ÊnD6†B~†ŽB¢èg¸œ,µäèÊŠ ô3©ªEÄ•N§ƒ‡„•HÆÙ DÎÿøayòS,—ƒ&;m¥;%,©ˆ˜ A¤z•j‡9§¹%ªpë–äÓY¶@ ·’³\¨VÜ ,íçx¿(0~ÉÁ9›óQ1亴ÕZ‰ƒF  5Íù9?Ï“~†ÎAŸËN¿<ª-ü8õ 5=–Ãó,™[`>A0îô*‘mCóÙBÚ±„04Ïa0Y4Î1~Š ùÅ\6 ¡ì2'x¨D¦«í N*Òp’¡å@9œe5Åû)2F'fr)E8>Gc+Ks± ÇáEt´ƒ£:·vļXr™n]_¦ãYíá*u‚Rt DŒ3(Õ&³¬ úiRðó"ï§™\O‘9¹­T,½=|ŽÀ|Vz|šRQ9¨²¼m‚miNôó!ÁO 9Ùl‘!ÝŒ=PÖ¡‹ÒQ ¯/C¸-‘‘KGˆv‡:†Â–ÀÝ„ž-y2Ø’7GR~&W6Ê îá,EZg =‘>½¢¢%asduž†j™Áœ T.ÖØ\¬áoYËm&H–ˆ`ü,ðÀC¾`i!Wy#sòa„¡eÉʼnÔ:wA²f!R$IúÙP®„Mqm3Ó:kãQ0øxÄíŽgšü ‹-ÕŸÏ¥Š?>#㪞‹ìÑQBÂŽeõf?-R~Šgü ÊÅSèøáyA°]RmqSI”áÌǵ©#îñŒ´S‰×âîÑŒÔxÚq€Ô9"'b€aÃÎ8b”~®"&ÙµÉs0àÜ»(u‹B*Áâcå@Isw½ö®gâ4’{†$ã,àBaÔþ €äÁçSR]9`˜v:Ê…IœgH;cš8,‡š¦pr'àWü™X½3ŽÞ,çí¾³}è8oê¡!öa%øK7\g½0©’ŽÿϧB¾£ÑmŸÿfy’c[œÿf8.ôËùïÿaïJÀ¢¬Ö?z/é¥Üm³žœÐõÛ!B!@Å\¦od`pcQP+·Äí–Y¦¦÷ŸË ͹‹…f‹×´žÜÊ}IJ­¼¹tÏ™of€™ùæc@Šáaæ|ïœó;ïyÏ{Þó;ïññ¿›!ÿÛ²QŸ‘kö¾}„oáÛGøn~„oï¡ÓÇï5áÛÓš)mVæ÷Ø¥Œ2ÚÚ2‡hŠCÛÀ¬;X=¢¯R{ )Ûaß Ë+U°ªw^†hNï€9T̺ÏôÏÈþƒÔÇÒ)¡Õ["vµ·„L&ûïó«Û¥4F!õDô={AI,U—(°’¶•4E6怺»g_±:""=ñ”ÄÓŒÄ1¼Ì¬,ðˆD ,ñxœ³ñ¬ä=ãr`8˜ëÁôž[M¨Æª\`Íý¨jðA;Ô!ŽR!÷t5°{¼Ð#²ˆˆÄ3(.¤(Ë(Š"AÒ<ÃÓ¼ÌÖ ½YÊÊN€&ìµ)?ÁxÔvhY‚ˆ.`°5FÏ®[ÛWpÞÞ¨j¨DüÀŠRŽ·õQKXsäè‚ î¥sªoPÀªÕQÔ­†¢žè'ª^; ¡d¥% ¡QbH‰”y —9AFÁO´îþ²zü+'ªQ5qL-þ\0qÕŽQ8™Ö »VeØ<!èZ²]‚U£¸-4]zñÖy?w|Ü„oUë, ñ†\Ì/3.ã`=¨½M²s=W­éÚ¡v‘¯ÄŽû@N¡uŒö×i°4:ë™:#פ`ùžüUð>D³Ê|pf3'¤ÜÁ‚nTXyîNÑÅY«-Nd¾—Õ¹Z¨°•r®ÐŽTŠ8 ž2«O.UAsŽ&Þðº ]hï¢g•è: ‰Ûn|®ÙÄ pÄÛ¢.ð»ƒ_ÎQ#Y«‰m^FÑŽ-çHPΖÕü9ð³D„ì`„Ð.ιŕlxm´Ëæ=(«…º†ÒZÎåp†V±ÀæTYÃnN£Y½?±«šÎÝMâNñ¡^¡À”6ÞàePªdº†E)¦ ¦‘Çzл0U u“µœ& Ø†× 0ÐsáQ]¯bS-Ô56Örš°A{…ž‡|>¯U%Ó5NJ1m05ü‚À«¸ÃÂ7 !ram“ Ø<,'aAÄÔ 0·Ì“@¦>P Ê4†ó¸Œ‘‚,1H4ËÍp$CãQwïTïz¬£˜ú ¢ç*ª×çšÁZ˰åíÏB•ã=mÚÀÖÉÓЗ.êõo˜j›(WP¥k°Ľ×)?CvªðCW:7HYÇÛXpú‰IŒMHIÐåpB&L>á´õd#)‚ÒDoèU’ °´huïµ ËÊ✪åSWzà´itc¹¬Jý½â–YE¹‚BK/3M —„÷ÂûB#†÷1¸"lRnEÍø½ *~¯eì HÓјªº .‚®©½h#¯o¥l1ƒËÖä(;ŠÐæ/cM§{•¿ "į©cñ&:†«bò‚º˜¼¦ÆM§›«為À¹¦ö’M´³UMuî&8çͦšN7ÛâÙ‚ªx¶¦ÖÒM´“«bÔ‚ºµ¦Æ7!O®*î,¨‹;kjoSuÁl±dAU,YKÓ±&à‚Í‘œë3üP[ËËÙRªï…™U’ <_–á K“ÃÕF¿q·ÑoÜ“è7®>úM1!"#1…°(Gá´ŒP ŽJÇã"ë.ú­Ï±æbòwm›YIµ¸zR-®‚T‹{FªÅ=!ÕÊ2FÒˆDK¤€Ó4ƒ3#‘”Ä1Îc„L{—¶ˆ{ÂhVO£åêÈðÕ&€lJC-Ù®gÇâšL¢q¯£žø5—¦†dØ©`Õ¸@k$e3Ó(cšJŒiÂï…jÁJ,® ^ášÂ4F D#)IC‰«PÍ´"ˆy/´¥A45$«N;—"G5ŽŽy$Uàhm\— Uï’¡*\2Ô3—̃“$Ñ&’0)ËKàoŽ ’ÅeNj(m×Lëb»¦›%xäf ššOÜ,XéòPÕ;§Ç/ÖÄôÅâ/ *ý%m:‚7±Îý*58ØûNÚ𠚘 ¨ FÛ»BÚN6eEP§upl´á@5-PÕdµM­‘ðÏ’¬ÆvL¾f²»?M<_Ê:ß«)æÿ«µÍ¢×CþNß,‘l€ü0 óÿ¡$Š(‰û!(åËÿ×XÕy^ ‘¢X„9Z–0J")üd8Á}#¤ùŽÿ:£d^ÿAÑöù?Q0þi'}ãß—ÿ³æÿ´%Š®yøT—¬dˆgÀ}©A}©A}©A}©A}©Aÿª©A}©@}©@¥ ž.=ñFÎZ;†æ$¡œë<á1F[–*Ç;8,DéÆr Á¢²v_ ›¸´,eÛ'ÍÈ–ìn@5XÖʽ'Ž÷¹‚rÙÆÀpØÙ¶ ¶X¨Ò>×BáõN®„b„£Pûb90c—Þ œÊðn20³²^Sbú¤èä¡ñ)úX½¾j´ªªé¦J¤ê*úÀCÍõ¯å¦J”èi7BiçíŒYŠÎô ÖE_AY¡è$“Éh²$cÌÕ·E§´ÎÁàà~žµ™qS=F½fXNÑIºshuøVS %¼æÒ¢ ¥Gš9Ô³¶±nÚÆjèOq-G<JÊHr ãsáZ‡»18ê¼"™RAžÑ$ÂÃÁðŽykAC™\³ 8§`&.èžãÆÍ¡‘Ê/ÛTVsSUL5fðd›¬«kÈ~°Øaj7 œ‹õ xÜMkp jE¸‚¨z4Yžt9?uÓ&¢,†áAI(Žs4ÆP,‹³"ŠàËX*IXI¹ž™Ø˜D}tRRB’>2!)ihbJt”>*"%BñBú æ¶g"&Óø¸$°Ü{eÿòzGn:ŠÐÒQ$ⵎ"ŽçyF@?€áq„q‘@9š‚7ÖJ’H½:jP\|´>:5.9%¹ hÐQ¸G@’nL ©Å'!Y¯Éa‚À‹ƒJ(à$ee8RÆPEYÆ•J²õrpBTt¼~HBŠ~PÂÐ!Q6 I€¤ÜL¢HŠö JâPq^`Tæ1‰ãŒ$(‚”ec8¥’t½€ŒŠKŠŽLIHa&’ö H7n Åh’&½7´iE1‘fDA Š‚Ã•Y‰âQ#qÊRIš¬ÿÐvTH$ã´Ÿ—Öâó2¸÷4#8‚”Í9ŠâI!A– YB¬“ƒ{I#« %’õHÆÍ‹!4Ézo²ÁŠ"ŽDÁÇ0DDâi„ÇDRx\°T’­ßd18:)B?phòCñCÖÍ<Ãj™gXïÍ3 ¸Lʬˆq4‡#ð²D¦E`(1ˆRÉúÍ3‰)±–Q109!~hJ´$ê (âzžŸ{$0Ñ^G“X‰àYÁá=¶¼„ Á2¬H£<¥T’®§2‰ŒŽwð0!˜g@2n€Ô0Ï ¨÷€xa.Kñ Š“ÈóÇ‘‡ZNéQÄåê•ø’…æiy9¯TFvUÍ•ç{©EÎÍ`Á5 ÚPºq"€(îÆ¦âŽ6µH¥TÖTöO¬C 7ž¡Å"P7BQ¯CT{k£žX™ÍB e/ÎÉÑSën¬Ã ÁÍ¡Õ÷Â×q˜Ô²§¢FŽ•Ñ«00ªªë5»Uûâ?³Y”„ «±ÕA[ª ÖÕñt°h6SV§x’ÁÂg³Ü´ÅYyWv;?: Áo,4 œ!£ÞÑe‘ÜWWw­ä@x : N¤–m¤þð´®fÎ¥þ4îØ=Õ{ë¶ L¸Áþg<ÎdI)+°žs9¦´€4•_ál7¹îkª¸Íû°\?°WH¿>Šì½¢Èª¾ÈG#]Öž·šŽÛ‡À˜\ÍÏ x­›ÝÁß𔾩ö[é5߂ʡ:û ‡Ìéu•ŒSx 1Öñk ø´1u~³Xë-u·ê¸½FÇ…8õí׃ʨîgµ¶ž$ms™¥­~ȸ¹\Á³Ûšd5îRPwyB3ƒ¨Æ *o\h^ 9\c æÞ‚æýu*ï7h^ Õm´}¦ÚI‚}•õ›H5Ó«ËDÿ§‚Ⱥ0ýKîO¨»´Ö ¾ßë/•ÿÅvsƒ^”rl©Ÿ¸œ†ÚÿQ»üO¤‚’4Žûöeÿô¬ÅôV+B?åJ@£Öð¯Iât¹éŒÞÀ4| ­ Û(J˜Í¢v¯q ŒþÖ–&XÜL1šD`åÈ A12Òa-aiPEŸ‰jÄñ¯Æë€¶Î=^ÿ$ŽÐvãŸöC0§ ßøoŒ×ÌÄ!1mºÀáÕ&.6* üž þOj}øyèçù¯_÷ñÏÅDùýÿ-+[ùºŸ_Àĸ¨ˆ”üÅWŽOHLNërßO­¸˜O÷}ôÕŒÉ_¼<­uà%ÿw·nÜ»ìJ~‹ ©èÚ]—טSƒöþ=¥oÄ»ó Ë{T¼°5` ¶~ØKÝû]ýZßÄÇ-yûÛOùþ¦ã¸½w¹ Ä´yçþfê8q¾·û…í'+›¹ÿÜãϬÿ&èÒžï¿[·#TwhÖÎÈ7ŸÏo´ã~roPØ«Nެø©½Üù‰%µ>\4Úx_ïÎA_ÛQ1õÍù¥¥}þÿÃOŸ>]³nWòóãÚ·([4í§«CÊ_ö¿ÿæýíünþ×_ׯòÖ‰!‘{ãWw¾Qضÿ‡ï‘ÛÍM Bò·=s(°hîááKV­bÂμ&&¬È\úÌðnO?Ý¡ë¤Ë³fvzºýcM™3gÂ#ïPÉ…W2·O‹ Œ»[PöDøÄÍYƬYüAnºgO0g¬œ<þÒ™[ëC³Þ»ñýáü6ûN_ðÏŽþ/¿|ûTe¿c+ƆMøõ~cÌO††>صèÜÔýá÷2³Óçæ¶y?ü ½Ifß¾›ðê ¥çýãæŠÇ§L9{º²ßË×Ï=zâ»ïf–”ˆñ‹ÎL]\¶¾øN—UÇþÝpK?øÖƇžÈlqêÆÅ×g””LYWŰ[^¼ò}›UkÖ ë/]Ú¶ò—W¶î½_‡ä„ý¶ý»³#üãzù+~:žgêüp׈¢;ëŽlÌêöÒ•=‘£G÷9gúÁxë¥K%½CBwxmÖÜek¯¶|éò‘=WB'íèøÌ”Ù%%³oþ~©sö„â»2Aˆì;üÌ©ò¤Q[Lÿð÷ßÂŒ_ó_âèã~4ý¨Ø²U?"ç÷^µáÄ¿â>+;»v]å’C›..ûîÔæÓ»Fo¾EQÔñµ?œ;÷>i|î¹×1BæÜ®ývWì=oÑ¢Yƒß8õ#sìë]Ä‘M|ùî‹7ºÜùrùÎ×mi<´[—.w§8p°u›Ñ%þ÷:ïÙ§Ò32Žy¿ˆ­ÞǬNi¹`M‡áëÆ zá…–áLœ_¾áüW#Êtÿh㚯¿_³ó÷_¾|áì’°ÃÃV|£ëÝÛÿ¹…ƒ"tL{ï½ÌcsÑ¿d­Ú´© (Ï/¿¯«(êÖR_¼å‘„%aŸÝþ/7£d”¿_þí›vî”Ïîj÷LTÒ?;|ûš¾tÇNÝö@ÂÒðÝÛ ôºþßÿ´nOïá=ôxnzjX+¿ö¯ŽŠ zoðõ)Im³³¯f†ö¿º¢´ôA–Íøâ˸oß:ùæõöEE¿8ztÏâ½Å; k:õœÃ]NÕoÞºµ…_ÊšAQQ3ÆUð÷»Ü³dâÙm•-òv{çú…ë<ûõ7ãÚå]=6-¾ÇÊ'nŠ~‘›^zõÓÏž÷ÖÖ.K‹»L.¥•ðYɈ3ççÜZ2â3}ná >‰™fž¸óíÊý}±c°ôóéq9¼öÕÛy?_ºhËî’ã¤G†‘ vwÝ8ã‡åÎl—sÃrþz؈—¾>Q<«’ 9´,bcl|ü®/æO:·íÁ9»_]ùÁ~wï&oÙÜ)ë©§ö.fî\‘`¾ñLû.{nO¹Üb°îÇ»·Ò&.Ïõì[­NHÛ%Ì\:w=UiÈO-(l‹oV:¬:EÇOþ¹E`àCgO”mV¯àùüø§"¦³¡W¯ŸW­ºùèîÝ1‰#F´kÕªÕ§ŸÇü"ä—ž¾XQ1pìØ–Û·/nßþÔTáó»¥ã™Ž­ ‰Ã^Ꜽò÷ÝMQü™gW|çXñ–í­Ï~¾-²»éÓESýºo_Zì9S.Ä·—þ@üøŠ!ñoݨ(l?f̾ô¬¬«ëò²äv;žïˆŽ;#‚‘Îïšö¨Æw'Ì‘:>ÿÚ5jùÆ÷=+ùŸ»–tùDÙè•ï-Ó==}ܹ/âFmN|¥tdîæ¢ \µvGÉìÇ6u{J"7]?ràðáˆÕïȸøè¨­7z›r?|~ä-ðµmÚ\ÉÉëzPø{_Oõºõ/*M$*dh“ {̤PIæÝQØÆˆ¢ "Ò@™*…8‘T2„ J2“Y’Y¼ÏÞª[çžsNýïÿ½ïí÷é£==Ów ÏZë÷üÖ’fâW:Ê¿š{nÇ¡¼ãÇ•'* YSÙ«O°x¾«Â¼†¬?]ØSgœï• «CíÞ¨Þ̃±W@ÛU4Ü;­qRh;?ÔÛ‹GPÑ£Ìn¾-€%¼ü=d}0ø~vTš] ±Ån­b‡{Èɼ.®®„†4…kI»!ç+¦'MZÃö¼- íçQœ£Ü».<é-ÏМœµöÍ ߸9:.»ì‰»þ:‡Ö÷d¦»÷`uœ¢AÁÊä›7UmzmBø0Í/¬F~“SHK¹b÷p@ÏÙù¬®©cßÐx]êþÖv¸Ïýôa§]OŸŠduÛ¼—ˆzú²ñÙ3ãŒvZYÕ› Ÿ<¥¦WeTÐ q/tæ7µ½ÏQYYÉóâ½/4ESk^¾<^)+$$´éÔF¾·¶"1Í]Á'vÕ­¦¼<ôCPÙ‹ÌP#bb‚úú<è'ëÒ,Ú¼–¯JeßcnÎ)®ò*3IUнôÙuïÇ5W†mêüd5Œ_Ú>‰W{z`þC³ŸßúÉÉÙ•ÎÝG}pÎJ`s[jonÌ£¤”ÖD3›>8Ü’ª¾žzíº±â\†©2‹ÿŽc¤†`CìKÅ’)y÷æÔI$ß§çÇ‹‰p ^AŒ²„6ÏŒo‡œíR¯|λßX¢á^zz}m­¥Uè‰Òü‘””§jÂ&þžCíãƒÑá»ÎrðóW¸™ ¯IeÔh™gZ²„ıÉË\ÕMO¿›cûªà¦ÓdŒp¨§fâIãLóG³;=ù/8{S½º„fÿ†Š Û>;ŽñH)+s‹‰LÚûò”‹¸Öe0æÔÔÅ I=kÊÅ(Zªüðu Öf’#sjxc`POÌ¿èÒ$½Y4+;ÛßÀ„ùºAÍþˆÛ™ýo<‹Ñ›BON)Ÿ±±±QÕÑÑIß™½•½ÃÁ:08h’¤÷AR¡36ñòwê›&‰I{ãë)ó,÷e%øcèæ«Ö]õ4µ>¿¹ÿù_|î«xÐ"=¿EÿEÁ_ûhàÿÁ ô/ÿïÿÿ·$¼]Á þ G{þ#ÿoÿgÿïˆ1WC#Ó;.NˆÄõäÂpµWê¦v3&ç%—CLõ%o¬8³£ðªÏî~¯lSóFÉU†|._6j’º³vãu £þ-•yaR;’ËJ„ ׯà€LÍE 'ÂÎúirv‹ñöí(Ç ó³Ë".–ó]ÒUcb:ÎŒ¦dÅÄôòDñR¦vQq&¦Ã<†¬—gê3!¥$0]RKzî6Ülge¥á ‘ó_îÖ… ݙʋ v–1deF¶Oõçææž8qÂõêÞÖ¨”ñ­Y6†K_\ömU¤w -aºÅ´’鸀¦6Ó€ ±È'))éÛùr@Ãá½?ŽmËS÷\»± üJv5· 纷OcSïªîÙvzVf«ê¸¼c3ãõõF¡Ëõ ;»»›…:Cw$öú.ÛåSìYVV¦*8RrŠ;˜_ÁýÖµk¢22CïÚi‹;·<<¶‰­uèÍýáüù‡á˜×n”XÉÉe)š¾ëýè¨/p ?~œniyóæÍë×ÑpZóƒððp³{-˸¹Nžœž™ÙŒuPppÌxO÷n‘‰ìöîªØ@Üãææf`ðlvj”…™9""b)³ªž‡šõÜìThh(œâ7Ô”û¨Ë)6&ÆXÊÈÅåÃÇ™‰ K÷œV§ÆÇÅÅQß:å벸ÏÍâΖ#ÑèÒù'vª‹üWs¼âÚ¼¿oßùØØØèh3}ý3çÎe4¼çFã#¤÷ÄÊe“Ÿžœœ¬¨¨èxÆ%_YY™™™¹ÿ¦éù˜íœÇk€0‘HTSSÓÑ©Ê =,­»°ô‰¾~Ûյマ‘úð€ñ2ØY‘3¯¶¨õqU^¾tê6™©¤¤do¢¶ê ›’BæªÅ~éQQ<|||¬¬ûR6¬_ožçB£ë+*ú2«•ÎÚærr¬œ=JÜöF¿{gM£m7¿XZ\¼´‘~ɉ‹w7f2©°-hsÜ•iU˜˜¸sÇŽ­ùƒ¨&\½ª ¨¨£­-Š·47èë æxì»ìËf­ÂÈìlTÁʪáÙ3ŽÛ·o bʤ㕎í²Í4–òãÝÉ…9doa@µévËr111Vv~‡Ã‡u55y”ŽÞ€qÉF6$Ú¼8tÿÞ=OO¼ç ÊOoï^®9ÖÕHÖ§QïÄÒ´ÞõÔŠ £í„Úš•©jï9‘ô®Àu"vå-̧J8'jjj ö7îªêë×ÞjøÍ$Ó±£ÔË[¿üLß¹Âð¹wÀÃZgÅ×½6u¼¥â µõ·úŽ­Ý¬61N¿Àœ€«æH"‘LM/‘+ýüü¦§§>€Gª£`Û-,--ƒ‚‚ØxÑ~A@@àý¦@õ«S£o£££•§e„Ã$‹ ÆÐtcåοLØ@_ŠL×»±‘Ç›i/o]IH Mè5—ázÑÜüX² ÈLNN¾}î¸oqí¯w=|ØãÈiÓ,MË`OócÛþ4õG<<8¥“t¢ÇË·Ä“©T',¿“o}}}iié úe証lÙ²÷'!ÂÎzZêL½½½À I+ãP‚\ X¹[EQ<4¡Öúõ»½yå7Írv†n*¡f®SXô7¤o±G€1ˆï+J5ß)ÃöìÙ“üøÚa‡­I¨ŠÊJ.NNS33°ÌçÏž!'Ü‘ìú,á5¯°a ËñžŸkm= "’°ViòÀH{Iñι{ •ðl4ÚNxØÍÕuI4Š_êò*Ð"æžLS\«.W«;CM>Ke†”}¿Ë—¹ ¨¥HÝL½nM…²³ÌÐ¥A+ñr&L×ZYóß­.à×nÃ3© oo•˜~µïÈ‘#ZZZdrç“‹ AŠãk7`€ ?ÛM «¤¤TWW×ÙVö|™SÐʽ¦úLê%Â[>FH‚Öç=ÌÍc:€H=z–Yœ.¼I]]½éÁ‘ÌôôµB.£Ý:ì==š‚> L¬áQÐë–©J9=“½Q$k`Qòøñãââ˜Ï£6`Fáw £°ŽÂ¾…¥ÊˆøøáÁA¹ËéOz™±ÇY¥ý¬–„|sŸ[¨³½]-ŸlÐé×ÄÇ›ûîy?˜. OOOx_ÌdÒ‰…›½Œ{Z[†›ó²5T𚄃º S{këqò&^ÔÁõiL+j}}˜!lÁÁÁ@û¡iÍ ^³îW/Æ3®v& ¤eœÔ†Bµo{·;;GXÚìÐЂ7þáƒæÃí¢öP»Æ¬»w±òò÷ü˜—ñ3p2±k40©ŸÞR˯ŽWNzÞË|²mÛj¡â·£×7…lV~˜ž>\vF$"=Ï¥7""eU!/×a ÒÙיʎŸŠáè—ßÐY$q5!Ám¨©œ ß®¦ÖÔÔôp²ý”/ëÚ]h`i8¸¹Í!ª¿D~bèÍëá‹›.ó5Òí0œýÿÎ2‰µ*¼àÚ§ðê6åT÷ÉãÕ6Ìæm쫎¯ QXÛÚ>pêªx•yãô²pMí»#î@•ž9s&=NN‰ÑGëZAõ;¦¦§Î Ý7|ÌlIçbþsеv€ÕW:”~ÙŠ¿Ú/Ý œ 1r®}¥¡|†µùq‚ wÐΈÌ|žËU¬í(¼¼®l¼Ìñ)uøð(¤ýX_];-»ô¬¦ú!Í~l®‰GˆL¡X”¼ Sž»5Ðw•oÂ+ ¢ñ>4dZbM">ÞkúƤo¨ŠE«ã’<#ýZ Ïn¾“íÊËSã§v%¾E¾Å{ó.;ÃH™ó2ûùå{O¯9Y˜²¯ùPý“k2÷ò÷)Mõ$Ц§-McÔÙ¥’H—¾Ù)®“k`W%.ËæƒžDÅ“Y±mý‘Ôò½¢0–bâÅ Ü44¬°+çXGéóÇa-6H² “79ær‘ˆÔ[¯¨†ê¬ÈÕ2cjžžÀAæ>t(zZ'ÞÕ/\OóuIPÉd¥P–}lzF†Pîéh= ÎU;Žz¹ÕÞ4Ëß»nS VSÛ£ðɓΙáíAÎlðå¾JŸÁÜð'Ã`6>´KÇNe?òcí$¾'GÓòç=}ù7ððƒÉ–hl}u»‹tÑŸì¯ÖÖ€—-¸U&†)©u•ÉÛÅ»Æ×­%[k—©ቊ4Ö{†R™Xu eÙ÷ ¼&\¶0 FÓÛpžÙå^áÓØ%ÇŽ©ùYzœm~qîȤƒß™u þI™ôF»#w¥[x Œ\êdQݹód}ÕU¨dISÓΙÉ.ïüã'–„^ÎÉvl>¦ÕMQÁ¨Ÿqóòúëëk037ËJ¼<@£¨Y§¶|y–N4•m³Ò¹¾žõS}©GŠMCOZ#Muuɇǟ­æÞµQzz®ä”nJ˦%AZcã«0ö À|Ë åûøð#º¦©©óe†Aò Ø&J–¬[2þ¨â ±KwèÎíw¼ç‹nìPTl©¨431›yÑàæmwóCCç¦jXïÝññ!Jå馇gcøÛ?ÞqŸÿ8æãc€€%éž)yu·mtY\Þ9÷¬hüüìhõÛSÜ›SÒç·!Gß“YW=b9Ȥ©èñ¢¨ƒ¢àýTÙ‰\>9B38==2åÓÓÓß°m|¥5Ïë °ëñMGâ½´\רˆ ½™éx¾g¯¶ÎÅ$Ýa‚U‰rü¡Päµê‹£öVVÕãƒo98u.^]få­ÂëPz-ZÆR*4×Ý'')m7r(vƒ]£ã´ tsV¯‹JÁLËQ.kkÍ$9þË’šÚr" ï*eG}|Ìݧսwù7ÝÕçå=2y3kb².ªÅjéGŸâk{=<ý£1ñ8¯ÙñHüÓÐ@‡áùe÷º }w ʾ© ;›éò"ùŒaËrvγCîs1ùd-#-­cNNe!¼¤ì›¼ç¦„‘ÈŽ0eS8â‘……†¾; ß>qð[öÞíÌÈ>+W¬aûè²ÊÈ·ë×¼~̶Â=¾Ï¡@¥Àgá0l)M¦Àô' cù~0€AìLœžDÓ=ÔZ¡ZÖÍ!>ÕÓ°¤gÜ2çŠKãá%0”kưº¶“#¯ù0qãcñádÛ5ñ“uâáQYQš¢»tçŽL í&6Û· ɦ7E(m“ú-$Da ³¸¼bÕfXѹ>‡ã·!0›Ô¸¸‡ÕÊÕŠžãͧF‹Šš’ÙYñ6„*XÊùªV?µ\ÕÛt’ÑA».Y“ˆ}¦¦ñE3= 0Ãßû‰‰wjjBîÝë ºË™ol®äêZ¥` v 7À¿9-w®ÊñÖ¼ysÿ`ÝHedåøP—Œ1ôLŸƒŠrkZÌ…©ÁSL]ÓѲÞçµïÖ\yϳ†E9Dí 0pœ-,ííÚŒž¶†hEÇ({+£ÇïFFVºµ,#…Š›võØ®ÜÕ ,G^“ã‡ð‰ŠB8ƒÚ;¼CÂæ·*ðÛÜè‹Ä§\QTð@ÊoÛæSâcæŠÔ_¶Ô§9û3€ºE@¾;àd»¥ƒÁ6C#¥¶‘glk¬_½Úíš-bä[ìwߪZNXøöÜXúã­[ô>o[Ó¨àY¿nã“)Qímî}4µSS±³Ï=ÌÙ›W\^ÑçàªRsßcl- Û@/'ܽ¥5ÿáPóÍ.§½RÒøêªOJ©KëÚz roÔÿ6"|ÆúñéÑ›7cŸ'æ-Ëéƒ.±ÒŽª¨ÊË´£EÎáâòm]“¸.SѹûuPЩV#vŒpwI­%lݺ!ûš¦ÜQ¨‚Âóæ¸óy „‘M syMm÷uùý븹 : ï ú®j®}Ä**B_ˆ`œ‰þˆ¨¢â‹*;$ø©ÈˆbÍ‹%––2† ùÀоzgÜÆÁážž„ß–CÉbÒLœÛg§fðÇPÞ#D÷ƒ!›ö³¯Þ±cŸ¹}Jvö{ûÑ4v ‰y;“ø&§Os©;:r›™M9¤žæt(UWœü°1.p¸n¼’øV›uM<äð¨ä¥˜V¨Û„½»{bhÕ»G‘7ï. ‚¿y“—ºÞ¡×`«áŠ" gMM¹xÙ²§–ðÃR†ù›DAÛ‘¼’:ïw)xò]—†:ùB¤²®îI+¾êø‡Ê›¶?¿ç豎x%;yo¥·9çžT̾{ßïÞ¾œÌ®![`‘[hdlœk­é¦ô6ÌâP?Hÿ95°ŒÉšjÛâ%h_ÇÆ|÷ŸáüÇÄLÇ•+OµF?ͪËÈx|909Q•¸I´ó\m­e4zª°ÅlÐuØÒºGýZj‹ÕÖ’®+öÞJÎçZG—m3âÿ8õ–ÕsÂIyªóXÊ£%)>²)µY‘œ{÷ïo誌œ™…æÄ‡± v~ šM¯éíNiVVDÊ#ýµ»wW®UžÕ+ÑÍòÈ™ÊãåÝÀÆ&P–q¢¨MòÊóÞLj~Ñ{˜S ,x׌ÞÛBÛK¿ö›h.±6`EØ/ðhªlkGS®³««kña¯¯¯/–9ûCú½Â°¥ó8ýg-â”Ve:!À+cFiÉÉÖ%ÁtttØØØúÒ#=Ì÷)ÆX³?‘¾hT”Èù¼þ¦YUUUlLŒ¸vT1ãŽý›]aÁÁÏjáÜψWÇéWÓ#ªÝ½±>úÞÃÑèdm‰\V&¸ëM.cÚq•„Z'gg–ÏË+™˜äÝÅÄ÷±vµ¥© i¹ï&{ª$%-ÍëzZ–:ËßRZ•~LÔô;˹eHÃ"µæ»Á«³ûŸÆÊÝåu=cýÄ«á5Lðc–W×_Ų³²4çF“⽄•ì°+Hgnšd&^¾ ‘•n™Ÿ›ÚþbLðÊljW ­ûªãÜë¾îÃÀŒxµÖš[Ö’A ñ÷/yßU Y'bQ¿ÈÖ¥7e˜>,‘Ò×ñÌ.Fb÷ Ü’nP9ÂtKý›ŠTwŠÞøÒdîsŠK˜¬—|ºƒÁÌt€•“ Èðš÷i{“tÙ¼øUN•Íð?)(ð`k*½046.;P¦¹I3ãΣr@þ @W­^-ÖPº;l5ûß™Ý<ÛÏm m½Üøëþìøýß/µë­ì)€¿:ÿøæü?’^ÿüþ×ýßëùÿßA¢ä?1À?žø×?Zäsß/ø}ûœÀDo`nûû™ýîñ8Œñü%ƒÃ~=?ð·ÎÿSí¾¤Uù)¢ñ/䃀a~Ÿÿ …ú%ÿ¿ò¿ý7æSÿ"|…òž¿²¼ýÊòö+ËÛ¯,oÿ)YÞþ¼¨ò¯¬o¿²¾ý¬¬oßš¨ÿæRȿۣ!?P ùëÎD[é=Ëú)<úIJÈ._¥® Ø“¬é6}…øÀýªÀñBÙï½$š…‘Iv¡ä7dñ ¹D,#Àp$”JD’qH(MÅ‘8  ƒÑ‹[9à?5¢Ê,›Ø¾ K%¾¡'`g„¬dÈ(ßü‰¨ÀQ¤¹Ú’!öàÎAˆà3² DìÎŒ7‹šêç$óh(C"¢XŽE HA¢ÂH  \AÂ×Suµ]1æjcïìˆÄHêNþŒácºûUY I `H ŠE#phÅâ84|L¯¬¦½Ä°ÀbŸ ´±§–cÑ¥‰^äâ»—€øIK@‰H€9à2 ì¥`D4ކ!Á®Œù²ü§\AÎ?-ÈŸ´2N  ¡(ŠJ à$‰:‡’P*‰Àà„•ô´tñÛ ÷þé>•Òù´Yò—¬+ÿ‰9s~%²ù/Œÿ83ì'<~A‹Ó­¡‹ýëøŠ„!~ÿAÃ0¿òÿÿŠÿü7ƾ’:È‚#1 P)À•"Q~ƒ~ƒ~ƒ~ƒþûRþÿyPéM0èŸ ‡9ü;1ÿÉëúdë;ÿIo;m(¶ä_1¯ÿÕ1¯?1ËnìËÙÕÎh<ƽüO¼#âàJ”&¸¸8ÙÐg ŸÙ… ô{@Bû×fÎϧkäË·Ólm Dš£0ØÀVN;†7üÕ<äþ b"èäOÊBPìŽ1íeÿL<žÆÅãÁ`Ö þ-˜˜cã fGpð~Ód¡øâ“/üíÌ=1üâ…™Òo,X¥Ö #VòÇß-î¸Æ?/K“ÁêNßž×øçïÿ ±#J †ÄH!à_ËPXòw…>)`;>‚àA‚“ÅeÁ$ù¹¡£€_øÑ眼Œ7t†´ø¢Ä>÷ü «o*qØQè»4™B²e°Í??ÓYXŸ2?Ó覊½¢0=Øg ÿü+'š«ÃgÞúR¶ô)¡ÏdÕ7¢b ÿ*ò×#‚©Ø¸Pìäh4…$¡¨P* MBS¨X( K…C T‚éßd£­´@+m`àÐÆ  ÝF†þôvÁˆûÃèÙbÆ¢¯€î<}.ÛúmÖêOã|;$‘æâB³c´³±£àéJQÓ ´øãå;S€eCw§¾€½Ÿ› C©¯'ü§`à T GÀb$ðŠˆ$`$ (JÀDÌÏ{cý Øt\ÀYGÕ¯§j¨ù×h/?‚6††@ÿp( ‹# ((JÂ1H$NF~*Ú‹‹Ž¶½Ëßè  E]鳉J ó÷.ýG`†bP(GÄ" P2€ÀQád, ÃÀ)P8ý™0/b,:Ì. 5ðwu½õ¢PþÞ•ÿÊÐ!…Àq(€&“à@ˆd4ƒ¦?åEŒEGù¯k£|)ÅŒ$Á1 ‹£@±d"Œ€$’"Ž›! 0øÇF®J¢¹6dèp‚Òߤ!ÑÉçà/ ù½àþ¸ ¨,• tI‚aQ$‘G‚ÿ1X8‹AýTqùë±è„tµw]·Þ–foõ7§Š'4ß¹þÁš„ƒb‰8$ I¢¢|2îâà0 ¨h•JÄýL¬1Ö7X/Tÿ›hÓC‡‹Bû{ø´a8 Єd(–@ ‘)$%Á¨PJ¡À)hòÏD{cý,ΦQ©Î”Åm»ß‹À Ä`IH8‹B!È$* …C (,š ¬Wû©h/b¬³n¨äEáû½kþ|©H2†#¢1p*ø…c 0°cQ±T”EBªîXÄX¶áþ…§¬ôOŸ3â'WïXîcÄú^„XD"‹ "Èpà´QHPŠÅG"Aá ‚ÿ™ÄZÄXtb¦Ùÿ6ÎN6‡ .‹ÛP¿wí‹Æù˽ÏÁ2Å…`cë¼€Ãç7 Û?‰S¨3~ô¯:e!J¸P¢þçgД ­éÕDε8ChTˆ‹õŸÉZ`ýß&¿Ä†A>çÏñjÈ×¢À…ï ' äÜôóX_BÖN²Œ¹|Ž”.ÇYè7¤>5w#8C¬¾Ü¡:Ñìó¥Òlmin6öVŒê¨rŒS.ôØøW•H~¬´ =Pþõ¡”ÿCU±þ$äüMøöW¬ÿûç¾dÛ‘Q?õùO°}õü'‚^ÿ …ý:ÿó︰h"…B€ÂaH‰ŒE¢þ‡½+‡j}ÿS‘%{’JfP¨+f_JÉÚ¥(Û¬2È:nÊRYÓà EÈVÈ’¥Ù·R¨¡Q©(Iö¥AøŸ©»}þ÷w/së×çþ>×ø˜s>sfÞç9Ïó}Ÿç9ïû}Ï!Á((‚„„B p(†B^dÈý{û¿Ž£‹›ÑÏœ]#¿Iœ‡ÿƒýÿ‡A¢Ÿÿ¶ÈÿûWòÿþÐëi€‹4ÀEà" p‘¸H\¤.Òÿ²:ÿe.¤èù»¤@~U§ìÖ!¿¬>üÐY¶~›û©Ú.|G¡mªººÿü6­Á»6 \›evêííźtó¶´´ä’%èkËANÚa$2YfëÖµ \QŠçè Öû6@j”¦·©ßŽ:]ζn¼°åxA[¤Ã.YÑãï¹Aº{÷V&ªû"k2ëoÝÂU><+^yõêÕö[Îr"ÂëºËYý[`“õ0oó5#‹QU•ª¯¯×ݳ§"y×¹—oÞpëëëßÅäè•MŽödŽ—8½:“¬†¾&· À?!¼gïÞ¨FË;Aþ+VW46®°´´4½å$£lyÇ4NJɼ]RRÉ`HÀcÒôâ5öíxÛ¿"ñ0}îSŠ­]U•–Ò᛼ÊÊÊCÃÃå:`/¿Nïéý9yé!©¬bPÚG:Ð`C§Åm7u<^t¯µÕ¨Ø|¼(Õ[?a‡Éî¥KN½·y—¡zr"+Ô≷ íÉ>ÆûŽBÁÒÒÒöR¯m–'ûQw<'ÅùBBB'jo$&‚ÔÕÕ©G ¨Ü²-8‰‚fqµÕ/Ç.@Më(IT>y²ª©©©®±ÑHyŽý`ɉ¾GI¾ùY¶r¼\KQ%Ô™1‡ØK—‚ÇûÚˆõç7²ÆZõ£?ص]Oò™› .ª¡ ­g;nƒ‚‚·ÆæáåêwO¾zý:ÙU‰Z¹K”qÏ6À,XÃáêššjYyùHÑÆ?N?ÀÖèÑ2áº"ëÖIëœèïˆðU›û´òHѱêºp9ÚõÆÎNpss3  ¦¥¥trJÊ“©¨¨¨^û½ZíwOb–.[öª»›+Ï4ëS‰ËþÙñÛqõˆN9P-{{¥ b|ÒjÞt}µñN¯ñMy¬W`·š±^ÑÀÕ“Ý+#£¢ðUA¢¼‚‚Ü È d•”€¾\ù¬ØUFììã©—U7û—•©¥êÅg¸Z´¦éë­K(™‚§Þ¦vð‡Ú¶lR=.200°¶CbÕ*uÙpˆ¼ür F˜ïKSÕ¢jDt ®.õš‘æX‹ä}ûÀ7$$„‘×~ÇñâäàöøÏ¹™;(V&m"`Ä€OᶆVÙ oÇÇi¾ïti3¡}tÁ Šé*Ý.»îÒŒƒ¼Bm÷¿|\Õ˜¹}vXXh’öÄ¥xiWMž¦¸œåŠ_–Ã8+V[Ùáø£FmhNLÝ£góD÷E¡©V&£“ªû.U 5ï? |ÆËå³ÞÙv8Zqrð®-®¥S@vÞ½9js_¨N#~+MöôÎ>Ø4Ö¸—‘ÛrL[; Eí ָȂDÚ„ÿð”¹1ˆÀ†ÆÆ¾çMLÂã‹/_Zó 1Œ½òë ôààä$ÍÀ_aE"B;d­‰ÂqŸ©®0µw@zœc¥vøî‰‚ücž<¨­ QPP —ÕÕéŽŒŽ¦Ðé uu55µÃÔ¨ü„ÍL&…L¾&èäé©"½ýRPÐú­Z:aÒ¨i,Õ¨ãº<ìX{îé3gÎè*IDènHÞá5õpŠùX<¥TÒ‚®‘ô“–lx¾çôDÿÖòÎÛ´½f¥@qEëgš˜]ŒˆÐÔÒr)6ÏN Ó__’1cÜÌ( Ê¡àÐPù$Ý"ÇNyÙäÄDȉÙOÅOk¬óªVçß-®Ø¤$Ÿ¿FU®¢½:%>>žéc˜'þ¥I_cCØôÌÒ 3ìz©ö:UÍäfÁFÙ=zz©ÒÛO<ëmòµ:|x;¶NcˤíÓ„Zï¼ëŽ:ÛÜÔt]OÖhó°RÆ p»ª½{…¤ŠŠŠª'ËÀ¬©¡!£U^NNsrzvfzhhÈàê9œ½½s¡ßY8<< Ds‘èÜ]'z«Ø¤¬5.2Ò¯9eN­¼Ü¼‹5T)¬®‘ý4Ò¨2Î|âÈG ¢fÎ;uÕ†äIÎLè9x ÝÞrï?¼v«›"™D28xPâîô@ mv%°ô¾ƒiccnk¡Ö lóbC³´`ªGuðªîž˜˜˜È˜˜ÝÞÞÞÔ™àà`·BEñîþþý±h‡dµY–f¿ãÔXodl¬Ý„óã@´±OŽyñyy½8]333·kUCÙ ÊøxkŠùxu 8ÕªÔs÷¹Õ*ò¼ÒF Öwè(4a,K\Æ#dpQÙB"b`jÍ4IßœñfdÄ…Å 9ç.4šII¾_Ú™náÏh›¨PX;úþ…GÏúsA);ÆV¥o¾:4äÔr:::—Ðk£"#ßÝ<`e¦+ש½5E',òÍôÇÁˆ°°°üg’iûO_­*'Ó½›¢2(7*..QQ•?™Ü,®´QÈ5µž`^@]çoNÓñ%ëpÁ³œÞMKÚr#±÷c¶"Ú.«zˆuvzAtùQ¸ŒŒ (±7êö†'úAî¾hÉ5q§Ï†—¯aï¨wef b’Ø…í½ÓËPŒ¶§ˆ‰ÁN0ŒÑFoýŒ©!µa§Ó_=$76رœ·É'_ÂôM³>¤hmÞá¥ââ:W39ÚhMLñ LNÝòœ\"¯ZþªL讳ÔyD°.r¿9Üö£ÓðkpP0?5Wd‰õ;+:xNBVnîÜÈȹãGÍ 0jb¾a­¯ÉúuUì¨A›v‡Y‘²ÈƆžy4Ÿza&¿¾¶½xT–ŸO®Ë–üSggç{ç7¦äÙµíRõ4ëð¤S£%û^å”çžüøẆÁÔÊwLwέ_je…ÑÒŠ#…™Ü«2Î<è%¼ú¢{ôöއ‰¬,k¤QäÓ”Z/¡ÔV$öïJâC#ÄOÑŠ= <É&?Tz¹MdmÅt/1½!/ èäû´`C´¤IzÆy9øˆ¸v˜÷²ÙÙíÇæn<¬QWV°gþ{WWSúƃñË¢f˜cwÓÙëh•J!)Bçœ{n%uÓ¢Tc¯,aæg%‘u&•ДRTü,eI’ÌP I ~ïé–¥Å=wîÏç÷ùüüSçÞûžó¼çù>ïó>Ï{Îû}6H}®oÒê±Sûå³™&/øpF3?ÛóPGŸî5{ÑÖU#G&vñ _Y­k·-ý;ÿ§v›Çg ›˜¾Ü¹h‘\2{awív©›'…F ¶.YfêynK¹ürMUÐ(3óv%•7G…>±žt•÷†à6Ǿ²‹Q3xØ!/-fÏ®­¬|^›q{µñÂIn»-foK¹x'{ðOñًà 2R??Ô ×ôßü±‡3¾:4®°àLÀô4½u}RVEFÐ*¨9âå¹:ÙósŸÇw\Ž¿°ŒèõÝê^ܤI4!Ÿ˜õ°páý¢+» ¯Žÿp‹¼ã ÒýC$Åoó<ì[˜o [ÓÙ`u¯5XT×¶§vZæ’X_wBwú½ü|¿êŠ£®Wöÿ ̱h”ÁÌß:tëõlìµÄ2Ë»wG‘Q.ÛÍ^í®“³®¸Ë˜mëž?o7p›a:°o‰Ì«W;¿¬%½CÐ=üÀ«±Ô¼ÎG½Ë\_½°Ø»ŸÖá9üšŸþ®ÿÀUUùv¶kϸÏcC«ï ¼mNEê¿1É‹­É[ï®íäÔ±géÛr{ç!¹‰ü£ÍEG\–†=*º‚$eÍØ g0*héɈxCÄWRtTÎÍ üÓ~½nºŸÛÙsÚòI½¡ÌÌÔª;æíº÷è½,|•Â~ºL;òëWºEÉI'‹Ï—Ÿ¢½Ðß}‡»ËZyø° 6ÏqÅâ`ÇçQèQ›Š‰I—ú¼Ñ±ßСŸÅÅ}~q¯Û”Ôëoÿ%)kZüëts>ìhØûfð×ÙÙ“ÍÌÒ<çL{ºgà°Ð'÷6­×õ®fCŸÞ×Vy|yÙÙÜÙÙ™—+ï¯Y¿~´ã ®]’cø¬ÎXìñŸ§ý÷„¯™Ãðñ»§R!DL~ùoíO$»^Ø&/¿YàÃþz^þ½Ïé> N°£ãͯÐoÛó î>eÊzݯu î$e9FŽ œujý ì‘}@7¢m¬ÏhØØ%JÏ  >B&´Ýã5c†`é “#Ãcc—wŒüªvS¶[Ø–d½ŒWÏz ª2ór>ÿ´ÿ›º<³eí²ÚÍI̪}”qàHÚáÃmr×î.);;´Ç™aäËdªt’‹d@×uÙwË’—;Æ¿Ž]µz·ÃÔ{KN’—8¿´­ˆýýZZ]Ÿºç’A Ç~X±âBLŠ•<­Z?%5b »c¼¥|¢ß¥¹ÐY)»”´´ B)êsºÛ쿞s#&O3®üBÎݬ §o?z3`D`¥VŠË’Ë—mª‚´¶ååZt>¹JW’)K¯Õ—÷:™³§èû(›%;ú éÞÝ;³°0s‡|IUݨNú—:ïÛ§?Þúlqq†§¥¾.±^sj£—믆¿ðÝø$(¸_°rWÛÒ\yîÒv¹öNîÎ;Ò|˾ ï2s<½®Õ‰z9~CǦߣ赅«ªk‹ ÆÅý<²Ê7¥ÙrÔÍ›¹}bð 3z`Õ…CÝtƼ¸ßaé²Ào•§XdZížzúôi¹ìQ§çU »Ì´WîròüªŸÉâàíûîÅ6³ô»†-ýa뫞¡cìœãCo¤ÕÓJdC,~lùàÆ5ðÝÓ?Ë–,r‘éôFÀ§þý%&®®£ŠG}íSÚ¾—Ô¯{Ù›ÐÛOè~Ñ9ôÍ+“¤ úùaâ;vîe+Š´ªêÒ‚Ñ )Òná+ülÛ[úí“z–V\gO—%×FŽþ 8®uÇCܲ@rÞ?]K×±}Ví´,ßðÀñБ__vÚúª“ñ¬4l‰›m®$ûùuùº+ÃgÏ|èÈ=.wí>Áèªáηú–ç‡íÝ;¥ï¸î:—òýlï:çC#á^½*=³žÕºbáé9¦OߥOÿëÐé!7½3æÇ ‡{ D’=ϯ]¶¬oƒ×öt º.w™ÍÀ\yÆhä ·æÔÃS›cc_þYÝ»ëÉðº;7R²«#o°„–϶”Þuš{óÅÐcÃ¥…«&¹M·ž7:,­=›ìeØFv¡ÏbóÕá;ÓÒÚ–•…'ÜÜ?u5‚xõdntPÝã³Ò‚˜ž×_¿¾Eù»ÙKB­ÌÊš|ãø–ó…©ÿŠÎqvÛqj·õOTÍñTëŸNJHÈÚ>.¶ýÑó¥Õ·ËÝÒúœ©­ŒÛ~âXþ¦Q‹†gG¡Q:W¬,8˜e²—‰)õ¶6S¬YF/Š.y¡Gœ£æwÔÖöit©Þ¢v:ÀŒõëךÞ_²„‹œ“1Äý+·¤‘nR§áo³náÀÕ&rwÒÖ‹þºÚsNNŽ='=—@Ók×fÉtº_¿¬‹¿¸¦íxæäiZ\q±Û–ðœÛ¬D"q&¿v(³éOÛÙ§ÕÕŸiKI)Éû¦íöôåÕA+V¯6½úëL¶¯5èRrÖ8c9HîGøß_|íš}ÿþ¡¡Ï Ýî_Kø?P`¥ËøÝу.Œ ~: ÚNnnn}F]ü‰Ú°aCϧ•7¿:8ãhx|¼q÷=>»Ü×3ÌdÉñÚÓâg¹çïé\[¹`Ã*.ßêbeeUUS–”„‚À!ÞÖVÏë@ÀñsÑ116uuuÁM¿¾k޾–+M°¶2p`¸–}PµqÓ¦K•7SÏœ9cU8ÿdxg«™± ›ÍúéÔü‘q/o[ü¼­Iny{‘óî,îûý™¼¼½wïÞm_ëÙ!°òFÜÈÀJìçuà+ “"@öÙ—òYæ|àAáe™,Š5?Q¼å^uбÀG±¿¹×&ga:ðööö‹ÁèØùkÄ÷sÆkÚ†{æoÑëá{ëTÌEèÂ<Ù˾záÙ™_û¼Ç·ËPF¨eøbjÊÈLW­çeo´Nvi‹v°é®'<í±2Ÿhö«‰ëÒ?ÿk‰9ô{þ‡ $Ž4­ÿ£Ä'þ—Oüÿü/Ú|À4ænXÏ¡ö‰âÄ'ˆO ÿÇ šeFhO⇢åž(îQ¨>-FWв¸^EQ÷ÙÃÿ4ÙCK¡ø?OñàÍûqeTß‚odyx<1c¯‡`#ß;IQ÷ØHAH 0$0œ¯¼•¶ ežß5vP|ÑJsøÒwmÍÁ'^±¯•ö‚6ßµ·h$=Q‡¡BI8¦7Å8Ö„ÇœàÃçAСܧñ.ŠŠ÷Ý Ekï’7§¥êj wŸY¢þ{íšúùK…Ý-5VÜfkì[®ÄeÕpi)ïæ4 ¼Š¢Võ¯a¨d5ëq5:ïÞfm¹ WãÛîH“óËX½+ºõȪݽƒ6)î×Ï]ègèîÁ¹×Ã-„SB ®¹ &ÀDÛø©ŒúK¦~²fzPü]å€S›ëç]Q²ž&x«5Wž¬EšæFâé÷(žþ»Ìø-†TÐ7·P¡Œ‚$0JH`®Ï8ZïÚØ†—¥[,ü>ܽ™(†%)AQXØa؇¸ k~_0ŒJ`’” (*A T‰4¼%Ýú-ðkv—Šïýy/!ǨBßù,C09 ¼4Ì['Ö¬_(Ž JÀ\„ঘ7ë©Ü{>ïí!xäÆ`ù=¯Ò‚|Z@€ÁA*éѪbT±;pB !8) Z‚R”؆’žM{¢HSšiÄÊËg./Ć .gC9+¤&.0ƒï…?Lc’Ãøû3œ;@ä=ÂÞ ¶-è ƒ‘z{Â…Î*µ'ªµÎŠÕš¢} JC]£À¦1 “ $®¤tÓ~4$uÍíH2Y_ùÀ„–Ô‚pÜ=NKHà0J™tk*>ÐCêÆû7“ÞDõP4mÉÐH}0Ó¨iÖ¼Ÿ‘€4ƒDÈ/„½Ÿ~>Âþ-¡VŽÂT¼ÀÕæú5ÌM‚{ñð5|{¹ÔEt=XD‹ ÖÐk6 '´`7ª°šc7ð[_FƒàçšõÁ¬!œ Rl~3%ÃÆöõnèí0k°«Áà#èâ–Æ°,Á/À?*wK0Þše‰ÕTƒyµ0qà Ìêf u;? †|ÞË5›Äì´”¿u.ïé©~wqCtó^8ûO5MsÞq½Ÿë(å;û[Û‰vejzOpkµgf·X|FÙžZu·Ìþã6Í9ëlL<•Õ± ß0DS,‰³$OÈ žahXFÃ.ãxžÓ,ÝŠRYBçÒè¿Y¬ÆÒ~¶­•­ùl'¡`â*ü 韰"<“‡·â³¾Õ¥K—”„a âaBÆ‘ ÎÒ(Êñ2’…8)MÑRB£,]Êei”iã? &R¹q 3_$&ªêI-B† 0%Å ˜ãQ™ eP’!;ÎùB`¬Iå²4‡ÉäqÓ>†‰‡ãÆù2"QQUSj†HƒÊ âHF°BC(BâÀ8hN£îK„,Í¡b?ÑR9*>ÞnbGŠŠzR\Êaçë ¼ÅÁ§ªJÕbÈ"À¸e)A‘ +ƒQšÃq”‘"† åˆI2d)—¥ÁÄÇÊÂB9|þ2™HTTÕ”ZÌã„—8„Ê`1 ¥!Œ$p—!š²EÈÒ*&¶öÊAa½DOE*êI­€ &,ƒY”ç’¤åaTÊâ ¸‡4Ë­\–æ0™4ÕÊÔÚ} ™ùR^nÈCl(­ªÆÔA‡džÄ¥RüE„ò"@"K˜f¤ªYÂi²4‡Ž­=ªü!‚ÈìÚ)W•2«Úc>Ü`$¤H •@Ú{Ä‘E{€Ëဠ78Á{‘™å¬r¹3³ª\NOgÏÈ.geF¾xïÅ‹÷"âýÞ*ÅRá]+<8ðºR  Ìâɠ߸P5ڬ˴å*³ØÙ¾¶}'òpÎ9oœ¹RCØ´Ú*fÞµÂqSm•„svÇUi겫q'æ.d^–Ÿ§_U84Çs•çÊ"âÚBءϱx£ ‰ôÄJß ïBò³Nå¥.Vw@rAœÓVT¡(XMÆ.UWU‡.¨°Cõ iJÛW\«@øõ¤½ÒºªåïZXˆ¥·±U’W]6ÎL§U!LçVV0¡v &•Úñ]Çulßž-m‡Ù>s¤·Øö Òµ²“Ñó2h?¬@÷¹2 q4©£¿•"z¿8¬îœ9ŽBûO…#¥V4°]›iQN<ÜÉíñÞÓݶt^îïþ`o÷5’¶iòCWE˜>‡t•ÙÄv…W,ÐL‘Kô Ï_ì?Û~ºz2t(Udkæx¸Ýë1׳¸ÃÀ0j_3d˜£œ«¦!P0Õ¾çÛQ<¤DpO9®v}ùCÊfhØ~µ³÷"§âJuEjv-aè0*¢=ɨ+$uˆàÞÂÒEÝUs+ºZ0ACik7Œ(DÒ£*¾Ý!âÙîáöÎöá¶±4{¬ß[»³–Y©St eáLƒ9'¦âÓ Ÿ¦£¤åǰN+…"K‹bvvŪ 5i å­;døœ± T$`k\<ß6ƒÙ"ަÚðrºÏmø¶*IŠ–|e¯áR:Ì'`%øŽ0­`PÚ”hǦ¸Ž^0—ÛídcáÙ‹ýÏkÉRb‚€ÙàˆP›‡Â÷à>&Ý€Ãl"%s]¼VI©À¯×Ñ׎´áuª™b+§º ¶Ðìh¹ñmZÐ;KËr1ÖeíRÛµ>ø“ÂŒ(;t=ðôTèù¡Ë= 1×Íc9ÕÄx|¾à³ Y.²ü4wõɺ›Q¶i½t¥uwwß”ëH]¹-£#‚Û‘¯¤/iR ªH˜6ŧ\Jh3u¤œê\G ‘¥Õâ-zâÖÔãc·f¯/bÅeÅ9ZHyŒ @• z¿Š¨/Ù"ÝœëB‡SŒ‘¢÷T…ãõ=¥ºº·Ô6‰ãÆ£`uCA÷|p«Á»×ñ<ºråz^Nu®çãþº4½'ëhúŽj‚¦—÷¯¾¦×Õ¾¥,:!,ܧ£ZºÄ âEÊcš{Y0©øê-z)Õ¹¦ëX©õ˜ôZŒ¬£èøÑì‘ðµ™ïÒ¾,`¾k*ÚRY"¶6±#É£€‡GL îó¥Önè6S©Ë©Î•:Q£†Ü+QìMÄ5OF"§[w±ÙrŸ³.ƒ—J“ "—1pî†Òæ¦ûP(Çõ™uà;Íf9Õ¹0®N˜¥Y—ÃK M"Bakm+Í\øÉ%¡ž’Œ¶BÖÐ(³œêâÐ<鞨Î(_|^­H'mW¤5Y½Ô—²ÈÆ”Êé âØ„2 C-­ºTNuq^¥Xëȵ.¯—J{±5 ˆ-ià‡Ì”¸Ü‰"/´™’"\ðLò•˵œê©áй®+’éȈÑ2M–K².w—2¼<ôhŒç{ <."øaväHÅ=óõ†·”ꩺzIÞ­(ʺì]*fshÀÓrÞq]–/e—#ðϸÍñУϴpŠ8e:òâ44ž.§z2ÉöÆñpÅQJ±“ sòÇ]¬5 oë]“ãuSß/TðH‹¦Å+óʆæÁ%§ËwÌM ±;*­~ Í&¿´þaµ‹Y ÅÞ9;ÌAu‹G˜Ëúð=Ü6Ÿ܇¤|ø ³Ñ-ˆ8Á: $Öã¸;ú­nÿHÅXk*ã©[ƒ{ð#´žñXŒë™ê&I|Jä“ìÍ%£?©”ˆçðiB‚©(˜W'Æ:±ÂÚ:ztÊcõ‘u6[‚÷­XÉ.° G K6Cvc§®>à ã>–KÃL¨‘ŠO’´$²>yþÊzª’¾K+ ÷¬—ã¨×ÖÓ®PýDY<±†x%9NkãS‘ˆƒŒëñ7\þÈR]ø>¶Þ¨8ÁNÙù{²Ö6±öám>Bºc>tˆ=³°ŒÒä¹­cgpÞO æÌ4~ b†Ð,tô´ÛëY‘ÂÚ†zÜÛ´àNëõÞᓯ­íçŸ[¯·÷÷·Ÿ~þÜ Â†oÕ•¶Ó=ö0C zóþè ‰¶»ÿè Ü¿ýñÞÓ½ÃÏ‘þÇ{‡Ïw¬Ç/ö­mëåöþáÞ£WO·÷­—¯ö_¾8ØÝ²”ªÈ]m„c½L34Š=ÿd›…=iƒ›2ªûèÚVC„ÆöcwÓ2L7?²ºÕnÓ:•Vyá¦Ë„»iíõÅÖ¦Å(ÜÂû_ô€ûXÃxÜÕÐøãÞ`oZ’ÞþlÛ"6¥äuµ^l[Å–×¼ÄÒ”-\ʳò\¼` .ÁÒ+ϯ1é‰[’MD®c0%畉gÓiÒ’âya¬b~þGZ·|ö^“5·Ž ¸¬öxNÊýsÒfÊÏôXDVµvNºTjA‡&ÇR_üúE¿w†ÃÇ% æ>ïÁߨàýÁi:OŒ„Á©¾šzò騇o†Ì¥àܾc&P¬WyÅÙ"é›rFM©‹îªže²QSÀ€)Î¥¹Êãô3:NçÓô>9ÕFªH *…\FìÁ¥ùŒó=*CWª9¹ât±v`V`Ò½Äg9[¦|“w¯<;ò’î=Þ©Ó5øj º¦ ª±ªÜzõ|ï7͘™Ó2ˆ×Ñßò$ÌKú›%b.×i0G1?9£,¬,•eN¯sƒ3[SðH˜ò$éc¿Ù±ZÞrWMÏÍùAv=1w¥~sêZˆqcqÙtoœŒIb9ÅIÙ·qcºì‡ÜöìˆF ¹AÂ'Û#L9\æ:Ú§nz¸#{(ßW(Xï™/‡cøÒÒyÂé–e\Eø?uýRßjÜu‡Ð#d„ñz}•õ§×ý"sÁNÀ£G=Gب”ÇàùnÄütcÓÚèâÞÃOˆ‡»a¨ÙÆ [ÝHÛ6®-['»¼Ð@ödúÄ 8y¾m¤7˜ç®q¶X`IѼAKª–m+ã ŠD`x¿«¹ü“ ÝJ1Pªô G_¬ŽÆ=ŽŽ ßB‘›>N ¼«ìa9´Ê…îo¿®Ü=~j Ÿ÷iÓ ¶n?qLËe7Eü Ü;Ó}ü>¼‰u !¢²ÀF¯ ch‡c3‹éÒ"º8¦•¤™·˜ñ‹/ŽûÖÎÁÓ}˜“ 9rÊMÕ:X]Ž sÕE¦*³ Xª5&™ ½Tñ1bv ÓïÁ?ÅÔýS 8tOº €ëè9PÍ…þ#XMÕîOz‡¤5Z‹rœ Ìpªv2ŸŠÊÌNÏ _d# o=;|iI0œB%5¼­K"í¯¡F„]á¨Õõyh¸Â]z&Íšv²LKoϹ˜7«Ÿ'øäÛª3—®àÔá-¯É´U<ÔæIøkÐÃ;ó_Îc,,Eš×'é"äKü¬ :O&K‘ïÏ (¿ÿý\6ó»’v#ëÁ•¤´ô¿Ði+_Ÿ½lÉ5VÐ^?íï¾ù|ÞY>YHVqŒsL;[Å,»ûy"jòV7ËýÝ‹U¾hqžHìÁ°Õ‰¤ôx±žv´Ž„Ö)¶Ö‹ÏÌ‚‚äS/4K±e„ß…Q¤9 #›¾t<ø)fC˜:dÁù­4h7GzðÏlM##¡JWaë¨!öÁl»Ý4c°i]>à߯ÓÞêlãa¹¹¬¿ÅýźÀyìÚ;pa;´n/ÒÃmðaÞƒe=™Køå6½5îŒûÛHI¬È·*O¥÷Ô ™HøªšûJ—)M%uµï _9‚::òRTÑÝýýû)\íDÒsB9S\„!¨½$!÷üDá¤9˜ì¼<}Ü.EÕç~|?1éä[_Ïðkr~¤˜H;|øñ`t|.HcÌ0'¥ÒqYèxÄ¥à fà¼3ÛÈn_ªî%¯ððqÍ—)ɘçyž# œg?žSßãÒæÜ}¢¦L½­Ê6öt÷”‚k;· ø¹ž´a,¹‘ôl8<ûÆ$ë^§? ë;Ùðà›ãdߨ¥ãë` —Ûýêú™ùLè)¸_Üz¶÷l7ÍàF¨ˆOÚü–«žÏê˜ß Èÿ 2¿ÆoMoeÓ›—¨muÓR­Åm¢ÅMesƒ“<Öž-¸^¶BA²æ˜T¼ÚZÔ59³i¡¼Öª6Ъ¦¢™ïš1òny¯ÕÀ­JëŠ4ËÎå%`Z{·ž$é¼.N#ׯä¬.[&«×*×g°´èP;‰5r;p9¸U•_Ìqð Z[å&§–vðñtÜL0ùê·8Q¡B£p-e è/Â2^Ïî£AÝËQø¬ÿ"œ0Ñ@÷eD&¾QÊÝñùÑYR!: VaÆ2¼Õ°-ߡƵ³”‘NXº©x8ç‘ÌñRÄB­Tºûåýo|u1+æ§ÍÉ+ΈհÇ3H³1khc*nÉ®6^ÆÈ ÞFDe…f<>»SØ`e[² 7¤¬ ƒ6dôÿI™ Aúh:a4£äST9}ÕßO­g¼+À›]„6«»#·Œ± øb+§¡l.ØÊé(/œˆ·zn”"CÎC…\9å8‡³‡ïP^q-̦R@í†&8í]O,ÒÐ$”áÃG±‚™Õ8Ww"úzŽƒM­)´§£Ûƒ+7íàJí£$K^©cóËK4Çæçnœí¿Î‹àí´¼QGš×1õY¨z—”xxfÅ·Ò% TÍáO›}t~Z¶I Á³ð#Ê]âZz~èræëæYþ¬ºHkþW‚Óéœ÷ðIV·e¶çÙõÅöaŽó‡¯™o]YŸúaÜ}ÃGª gg±©ÔpIáŸw|.œ¨ü„´/ ¦ê­MTð¼£é•I‡± ˜Fø Ë8Q_³¹vùŒ&M¸JÖ7cÂE¤½v¯={ýù>X»3ÜÈásñ´àà—¿À‘¾$"ŠœèСʷ¹y¾Ç4p IŒÏ_Ô„žiáxn,DE%nG¾ý¡QHµa~ ”O)¼‡Ú˜I8Ô¢ðL£ðìõ –ºËŒØ®ñÄ1m‘yÚ¢E71 ÁS.u$SÜá‘ð£vÚ‚˜(º±H ÖƒoÝôÖMoÝôÖMoñLÚÂWé§sß@+íœ Q¯´+¤rAYmè1kάØbº-›ÝÐõk§÷”­-ê×Ö9hÑǾÕˆËqËä½´`Ykî[¬¬›‡•ÕÂcÕ…ý./7sY½—Å!×fà•­I@lI?d¾ ÄåN.’Í”!ãÍ2ð-×"p\-W ÆÕî‚­i,²µ°‰IŒ8}Þ|GµçÍ߬£<½¥¼Ds±Fr“ °¶…·nbá­Ô}pT”X÷îM]Ût/û.ý /&#À" Ð0 ñ³ù ­NB}þæÞŽ7ò.ÂówÚd×TYì+%A­Ð¬@·qIa¯úiÆì¸—”^·Ð–êál5ƒ²w\›€Ptä|"UÀ”‰÷59N³9!c6òæÁý^÷aÕWÌs2&­™«[Ç“Fg‰OYCmf¥÷ð¬ùãÑhøë÷žnÉÁ—gGª¿5ˆîwûR}™½+} {r4Óª•ÄX=5ìmX¼7š\Ù¸o¦~‹n[”X9}î#“'  äþÆW=|ÿÖMùw^¤óv £îç Ÿ¼| ±Óƒ^¯Ó9Šùð¹Sûþy®‹¿©Ïˆù›¦ã7øŽ·¨ N=¥.eþ-¸Ë§ä–uë&ýK;C&¿oÈ¿?zùü“ï¼ÿ=TØïì=ÙÙ¿uë›ÿ|ëÖ7>|ïÛpå?~þÓïïoGŸ}²sëÿð¿Ÿüãßüé-ÌÞÎöá—ñ_ÿ~ö;‡¿øßÿùïýË_•¿ö£?þÖ¿|úÄú¥¿{ï~¸ýÝ?ÿ•¿úï~¶ñË¿÷égýÕ·ît~rûïöó¯~ú½oøÿ©û?øîÁß~µùÍ?{õ£OŸ|üû¿ñÞÿ)ücù'ÿðOÿÏÞ_Çe¹­í(&ˆRRJƒRÒÝ!¥ÒÝ!ÝÝÒ-Ò ÝÝ -ÝÝ%]"]g<èœkÎß÷íýÛgÿqÎf-'¼Ï;òw\×ãƒG«Môˆ÷cÇZžœ*뾺U6ÔÚƒi†ÕÄÔÌìl"/d>8B¯ñü"û»ÐÈ|¥hqBÀí3¼ ñ¾ùú$æyû¯o/ºfo ¯ ¦‰t'pD J;û)¦Ón£Õë~âì %ñcNi=ÆÁçrŠ R)çx4p—ÍÊk{ªbŠãÑM„Tõ«•Óå¦S[¸ï 4ÛBpw‘¡úÚJOµoª&Œ ü³FÑ¿Ÿ¹‘tÝ4™Ç8ªc?›%šÓ‘þÝ»w•UUt{ovçÌe„¤ÐâðÍÍÍSRS;:;$cTt™ãGÖçxØmSܯ¯jÏ6r¢{¾ å,é‘hÝt2–¯F$DDXØa9ì%¥ÎÁ÷Їd~_z“qZñxVMf*ªàÒRÆ|µš¶D.çoÝÝ:mAO¨e4fggå´\÷aOûܯšs ê;³d2K Pjìw¿W4\š–ô^ª²•³YgT™¹éA ”œ\™=rÙD¹)öR[pjQ“j•1,"μÆõY”ØîêÏõ¡ŽoßÞ¥‹ñ*õ¬°ËÈȬ௯¯R!Gö÷rìîu&º_»áàºÇØ|ùâÕè {ÐÍз·UÒÇ\™'¥¦²çò‚%æ»Ti°ŽsÍ&[H` öh®’œÏ½î$ž¤‰ý1§\OÏ;­­­/´±üýýÛÛa544Ò%’B:tnw>î­s>~Œ†¦ÜÞÞîˆIs»ÐrIƒZÕ üÉVvöâ··™Í¦ ¸ú€dü‚‚¾ˆDQ‹&°(ûN˜èÍÖ:Þ½qa¡1‚\†+Xnãz§fw¼Âÿòì?cåñã¦ï=q·à<Èz¬Òz\ϼ3[··gQm³Þô ßU‡Ël®ÞU@P0yh ‰”š:ôXêNJVYÍòI;¾ûszúÁjSF,r2²¯1`l&#¨ÈÈ>þìqqáòøñc‡ªÕ'ô:¯=;k&ãÙ¬}gDy)_ÑýåË[©¯B… Ɔr ”§ä€dÃ~íèèø^YÐp  §ÛãÖÅJ B×ó£<ûºó ΛAÈyÂd„ÖESðqxgºªäÍèË3ròŽê„èh¿¤¤$Û«&Å0ŠP^bbb您ˆˆB ëBÁXº®T„„gÎ..µeˆ<<„Ï“È‚/abBYTTTF’Íb|q²/ÇüåËó?úùûk.¶ø3}Û<Kr=RbÄB8ž±Ç·´´|NLŒ‚‰Ù>ßè¹>œÞódSÝáÝÁjŸõÑ–R¢û•£1.*©¸ÎÑÖÄsRÒƒ! :­¸Y—ƒ£ÍÞÎΦ”Ôoïï=„ÉÕN¦h·£0¥<þ9$Q¢Ù|phè„DFaaa¯ö/7Ák;üJ;”M^N®§³S:ÉñûÓ‘¹9Ããc…$·3C&•í¡ŒÐ2Q×\‰§žŸë÷šå«g‘MGG—=`{tR¤ÝžËa'žW€ŽŽžõ“Z65%E³ hÇhÏpS_ëhFÝî¬ÚáÑ‘¼†ÃÂ=c\¡T)×ýVL9||ü‘™µàùƒ?²ó®SC¹¥ëjk‡¿~å=¬;ž•y‚“…ø„öóäø ¼©ÌòÓWÇ ×y>>>Ù½½½FIܮ×çÇc§nòϵoßÀ·ò²Ç©”O¬°–Ö?œœãlç‹FHËütdÏpñªË²–@ŸÈ¤—úüPžmáj…GÓëÔñˆTÙQ& až:õ 2#ðtÍírõ„Æ™s0Þ„C^S£(Ï„J»îíÖŸçƒL(…;‚X>8öò~—¸?؇&ýAýÑ ƒx4ÙÀeø€Û¸ìì㪿sg¯*–Ò°—À¾<«?dæ±ú„pœô½‹ÜGÅ:x¹Àš¼RýÓ“;ŠÝºþtÙïU>—\Þ6_ÙP¦®MOëÖ­²Åä½{Þž2ÿmSDñ»§êx8c™°¿®vÀÌíçlõJ¶T˜êCÒß‹U[òåý¨=`D츽Ñdz¿•,(Å;@vÈ.¾ÃÒ‹õM˜VZ«˜Ñ2´8uÇóíŠÄŒŒããŠÌ¦“:3 V+ÂDDD•K!Š5vTØ,fw;"EDD,ííõ¿¼iioŸÊypãü&‡£µê33uìDý©ÂT§ãšÆeá;>c;íÌçjîNë ',†¨%X<ì_Ä[ RaÑwB<ø¢=†Ø3ä'Ÿ™¿Òd¬Ü©úé!&6¬ÒØeà—_–Ò*ä«ÒÒ" Þ!l8x~òR‚z§g¡B†üÛ‰c´ Ó›b‰ñGJ£žµ9‚ËihÉ ZD»Â(gDùnI¾sjÆb!Ùû“]Ýö¥ëUvgëÞewy“>ÞŸ!ÿÕŽüàÇJÓX®R3pµ~!!ß·&Jzæ`  …AÅÍvtxØ:00P=ï‰ŒŽ€ÃÚæìøqúÒ é1wßâ Çíºˆ”ˆ{ÇÜxF‡»†–kŸçŸ¦´2<¬dÉì­Ìò_“ X.»³3oy^Õ>ÁÅèüaçeï!ÞâV$ f½Ù »Ç‹.ï`i¹*ˆ%&%§ÀÎ{€0èG‰I Òj´O±üÀ²D8€2~*±# iˆS±0"Ûí~÷£ù#K5³³Z6LÑ5š¸~ ò]Gj¢Ýÿ&l=˜”†àüm¦ÔV:¬àîD®©3ÓÞJË%‡¥`–~£2²€¦³ÃM¥Zº{÷îqž.‡Sª”?Ê“ïÚ™©® xRo??8-mí§œ… *Ï€Swtßx=åä‰Ï-Ü®ªØYXáüØ¡B%uLF«ôsƒ´—Bt~}ö=;ÎSÔ—ø}8»¶:%ó’W0¢¨óx’Í Dbl5`xΆ±ýÊò%yÔÑ÷Aí茙¶‡Q*¬ûV4±ýÑýÔ)•…&·õH1ak›l9‹©sCJJUo0¯ÁJyÅ ];ã'Ä8çá®|:V›~d¦‰öïLüéU&Ñm+DÀ2¹êÉ "ZÔ”*a#YkÎl ¤–âtÉ­!CJø‰óp @‡øÉéñ°@Ð1ïDñøÎ»ÞQÓr Û/çwðìB¤A2(ÓQôFΓ²t#?CC­Š È­ëì¼Tv«y^Ù¶$HEð¾-kå'3„Å©ü.%õ×г~; Ë~fó•êóÄFvNgƒ}¸EôôæŽÖÆYBxôè9ÉÛoÆ$Ð?Ä™­~ ›ÔåêÅ(‡¸lôÕàÙU8ö‡¼Vù€¬'9D²„¯F´¬¨±ÖRÍÖ©Q:¯HâÖà5*sV¯/?ë2„#£S’{j©MPǬ>ŠŸq¹#c6qç85¢Ã]Ž(â®Få÷ø?[êTfVQ€ +¿XgÃàcŒ&¯ðŠ×A=!±¢Žý&ÆæÜÑ2c}û–êÕtvšIŒ9dÞ5Ñùü¾—lNÀ›£ UéOxz$8oì=XÀ[j“Òë¾WӧؾH~'úÞ§ßÞ0†¹6¾VFù$þþ•=RÞÆKR§í”^ÈMf:ÝEÈ)§w­H-úiš©)õ"A3Ø:„¬>Š®Õ5¿±”ã¾}@™Ž¾'ˆq: IÕß8rkרªƒwÅTû¨q¾>˜iÐ4ÂIô’Æ÷WÅþñIèûž~cÕ' ˜åý†,±£‚¦³»™VÔ£ 8ÿ€ É€•ô´+–Ðn‡g³(ìµMªýN˜æ [÷; òô³¾(#iƒaÆ–ßç©p­{;+|Qê¸ëV5+w^ûŠÓ«ø€¸c7h „Œð¶›š¢‘W¾6,ÈÚ[çJ‡àZ™éŠ*Éq’ƒ´³BÈGް%~åÓüZn£TFVQ÷ʧÒÁ5 ›üªxмš›Á÷‘Bó>›–¡Ñ¨'ùd±ü …Ÿ?Žþ|ÀiØ•œ«ü ‹ 3x'HëC.t_û(T" ¦2òº¶1¸óq €úóžH&jíJN¦=eÐ+á°R³F€ù7ävÌÝϱÛCñ—þâÿ̈m£ºÞÆòˆôñÇ13Ò5ç/©QX9Ö¢ÝθEÓ|ôBäKÑBBB¶fj¢œwëÆf“á |;,••±4™*ï™M.å PÈ_ÞÉ9BäŸN­ÎQ¯Z ɧ1bǨ»ƒï|Q÷fé1ÕÔx‘ö·íŸðù%âR9M§½…ËWSâznçìK€õ²U= eo×ý:n}(#jimõæv=+t<ø®Ê7`õÆÊ%Pø›ü³Ìä7\n›ƒ,Ãf,ŠÂrù8KS ÔE õC_’ÈKEpRö»ãXBg뜭û¸Ž-À?&¨;­ƒ6¦”•CmÔ˜c+ÁÆz%ø”ÑÒ±éʰ¥öЃ뫹ë¥ýDM1+p‘SL ì»^™O•[.µ{œ)þuî€æÛ¯¹ƒBn Ù™l­¬¬¬Ÿ›c¡?þtŠ2ôë\ÍÙíÔC RѺs/ÓQ=?‰z¾iç㑎L¼F@ÛËFéz%¸üŸÃ^&V®†µs&8eŽ=,§W统=›@E×¼E E+MPpÕQã/ÈMùå"}ûT¿çêñâyܹKôûòaaaÁclÙ6F@™hrL¥Â Á ®bì  þ¹i"$$$À7s—f}°!ÕÏ=§È.VRÂÀïóHóòìpÚnÊôz(õ÷ùƒÓñÂ×}‡EÒ×¢¢Rh½ñlÚ3 cc‰)>~ä{û–@¯$—}¼E¥ÈÄôpt,\›ùÃXÔK5<âƒø[Á©÷E²îmìgœZ»UÚÛç[6˜7ˆ¯±qF*NvÜšÐcS1\š:?L㦓µGôlüjZ1ÓV1çÖ•`?Ûq²¿ôñ;äëaö÷÷¡a\\l:žsï›±ŸS[*{ÁÉxÞÒÒÒ¯Pž¤ë ýÞ$‰ÕÞ„7ââmÍ©G„ÊŽøF9õP°§ê<²«q±ÑDf¥ß}ù, ¤¨0k‡g/0çÏ\ÞŽÊ¥çWiål¢g‰Y÷JmÊ/ó;Œšwt3¼%/>ÔXý©x Ù<æ³x;ea¤†•uݵ´âPƒã^¢<õ»€êâ9oÑ]ö¹?~ú´SÃ¥1K&#÷ü!<ü.'F§ºDõ:§§«ˆ4WWSõ!£²Ìlaç<—?Q’Wô\›Þ¿8è+1Ÿãf·Ûÿ|œ\~¶E‡í‹¼8 y8¡`¬Ö+]U×Wç¦Ô^ö;&Ï:W¨vË29LÔÞ˜é"$¤–§;m>Sp޼33J¯ß½ù¼uåƒe>r°P£´ò1¬Qƒ¾«ùú»ÚcsÓQ0¾£n®Yâb«OxÜ8‡2$2ÌçêîÎÍé¥Ç?@%â/žÛ‰f@@ÀÉ^3’±i3¤@yê«“eÆ€)ŠÞ€Nñ„ÕâsÏùii’¤¬¬@{nÞjæî¹¤Ê¶áÌ¥DG?ã)¨Ã—ˆ›;JÀ!°W<¿ûô¢çŒmnK›‹àœŽœL=9 µH¼¸P¸8säQ½ìò1ÀYið ˜ì:¼÷v­?D4hçjÏ—g|«ëïSK‰ít vèõ%ŠYYÑC¢}&4ßÃ2ww¾ScyºÊšópX‡Û%„ÕBƒ"Ð ¥J‹äCœ¥‘€`‡D Äÿ è\¨x†öt¥åÅŽ}Ãä,G˜‘?ùt£sØm)^\^»ÆÖ’oäÑ(4 þtL§psãH­eÄ(x‡;°ˆ:@Û„ –JšþCÐxßP{Ò{CnÜ“X ÿ¹‹C½ÕÑBý Øw6Œ¼wª-=`xH-¿ã(&ÃÚÛÞ 0wW¸ßó`¹3ŒSqc?ĦÈÞšb3€ÕQ¤²ÛžôN!cº zB×4KXnˆEêý¹qgúÜŠ…ýԦО•ñEU=€À]ϹÚËžÐiy¹p½ð2xlåŠÂç÷éÓ¯ -ò€¦¿Í,£‡wxM˜|/p¿¤ ãäì ¨†¶Úw?B®›Uƒù<åÖŒ$7aKKºpR ½ŽÄeÊ!ø<½ÀN^99±KpŸ>GAAá¼¾88BT(µúµæA?!)¼“Fô3JtY•¯!:~…ÃLÛõƒr­•ÎÈÑÈ w3`À\¯çüüÛ÷žžÀ•?ôöö¶ ‘-½÷»$Íê˜i’ŸQbËÏã¾½aþè<àEWó%×#ÝÏA¤( û“˜ûž—··’{hPP)õªšeÌî­;÷USL*:ŠºI'.BpØš¾¾»³ëƒ,&žO“R†–RS'Ð8wçt-ŸŒ.R· ö^+Šp Ù9>¼Ç=áÀN¼å­ù @û©]¦û¯_¿þ,‘Ä ÓÒÞ¾´ºê›­ZmÓ1™zq8¦a½Ðt/]4F«OR»ï[Íf~ÃÒm\¡F‹y^n´wi½ èÁX dô×L%D¤sÈHÿa)L“¥y?òCZÎÑ{3–´cÞS}þâô žËùÓj’{¢?*)=° --­×ââß×R¡¸§£¯?Å!;p¿´ýD>?‘6œâ(äÜ“òS5Ï'&qx”Pgñ· ú)…n—N4ê¢ –BƒÕõ‰êÎ<4â*å&&Ì Àxf6©Øm>8î·RMPß, ÜV–…&QÌÓ¤µŠß’g.) xx†ßƒ½×‡Œ«æT5?ÁøÊcWš•½"Æ]0Œ­QÐú# k@oÞüf=ݱ½ªàº#ÈüæÇüé -6%àóâ´ÃM¾”* .eΣçk/ûøm´k—ÒÄ Ô+¯›áþ@ ÍÆ ôš…<ŠÇå-(šui¸x¡²œl€6 ßL…ëÝ¿ nïÖáF•öâLDP‡‹V/r8öI†Ê·i/g{*,ßO /»îØ¥T½é»éÍû4œak‡ 9øÁ€¼Åú…Ÿ®ƒj×­Ó(ߎ%=l­ÒÞº­&êa"!;'_éôE”}12ÓÀ¦€Q‰è“K:ßoŸ«ò©êç[óënÈ<ïIêËýh= `÷>lKà™’ÿýâÇAÑVßevØj(ëO@ˆtƒÄõ>óT‹ l·;ÓŸØôÝ á–6£óS 2Á+?ÉŸÐ÷8x¯¯õw$,!7…<ŒTÝï@¾›qk~cî]o2{-ŸZçªo\ƒuœÃÉR‘_V’²Ÿ…ÐqâX”+pÇQ^‹ã-^3ü±ÖYBxK†ßÅ-‘Ñ)«ûEf ±Ò&ë4¹¾ öçg¾UIÜ|·b_),Ðd(#⫟)·‘¢^«Už®R’o¸ª¸{ð#l²¯ViqÕ5©¼7LÒ³PSØ~ ˜06°â++6LQD†–½¼v)·J›*ûÌÚ©ú'f ŽÞ@ô´TW’êƒ}\¯~„²üWîú#,³w½ºu=\_¢”_<•¿™þôrÀÃYr›«˜ä¡âj˜u£€aQš a8•º¦.?Cí3›“ë¶¼" Ó°Ÿ¿$0"Eõâža«Î5'峃øwñ:¨X°OÎ ¦¶q ê üš9ò8õÞ+µmzàN.ö4¼aal ¸–m4‰›_Ü,Ú zr'ž¡[•-·=Z­\Õ®}*>÷aÌÉeúu –ûá˧׿º=IÌÿ© ´ê@hó=ÉUƒ¥î|7Œ³/ÉÖ«_}åV¸ÈˆQåÎl§ØZ%.i¶©¼7Ì]ãc ÷»9®ëµñ6£û›ªn'´¸#)‹Ë)%¯&NVü¤f^UŽsˆŠ’ ZZZF|ú4ÉÑÕÞî tEçæï¥åa™~×»3«ˆbQ@Hòïßåz'?<ûÔÖں߂*1΄ÑsÉ„ê¡-GËÍBõÀ›“MÕŒ7uÅXC†CßχOŠ»| öwV¤Pw¤W=½䤥 °›Ê\5¥8ÚžjO Ìž!ýµv,Àðàé⛳˜ÛŨÁªg̘%ïS¤,Ú´Qȶn¸Ÿrñ³;qëlG£ÚÆ€© †»ˆÃŒé¯!ç`–üŒ•=…AÈÖÍ(̶´!9±Ç³ýÄ‚Mér1oÈ>;Ú¨§(´Š§¬zi¬a§2œ¤Æö û½áKƒƒÒÀ 7CëäO}  ßm•–K[ ðÁYv¡Á:ÌìèGôt¸¸é“ÎÑl^ 8±/ºGQ ]Q÷J•»Ñg Þ¨.:+dúáðɉ£cÀÁå6ÓS¦‰ÕØš™Qã»ìÝp+µ°ð@f?|y.Þ^¬ØÅ¹÷õs; á–cjöt¦“ŒÓÓÓjm‰¿ ÒË -~g¿f½#ήc4õ{oB`R~Aíø­¹heùàhÊCªF»FVŽ˜‚"Ðvs´H¯ ¤ŸúLx8®Zd½Ú«b²@óÛØS¥Ð¼ËëO̱§øUº\ïrpt¤3ŸåDKÛz÷5#Ñ)`zZ’F­ãA®.b/gºº¡ê2x.;¾»’Ëh8::²ØªŠéñßè[\E…}Þ”õ÷nÃ^‹­l®²Ãó݆U€6KIÚVÝÎ ]~t(‡Ž0Ž:Fmª¤gfúŠàÒÄ=Ð UÕG]¬¶hKmÁ%ˆÐâ¡¡¡!ËPivc§’òl3ZÇ:·ïܱ´¶ÖÞ›o2˜KJ!cæ™@-<2rä3}EÊçÏ ­¨88AâÏ#NVµ±°W."¯÷™ËÛBê÷™mk VçÿX}»²M,ò‰QŸÕn$q26>^ÐcÛšÌL¸Ô¿ðpT˜uƒ…ž ¥¢4’£ Tf„ÞpuX€-û=\‚{¡ÉûaK[ÛQsKï¡Eú™Ý.Œ«‹UTLL؈C“ó³3fa•)Y+Uié¦g¡œ|šš„q,æPØ~„Ë¡Ùìc¹Øò ®ôõKZšåö$ÓÑÖ¿ž ƒ^·EÌY¶‹>PááUÖ¤äää.ûí8¬€\Î ŸÆž÷^Ê/är͸>©“”””þu@éUÂÁ”Ltƒa„{ô¨¥¹Ù“\&ý-# Ê·:¿‡6òiZ¸Ý"‰æ=ScЇ'E­v²–š»zÝp}ÎSm·-ìàÀšä~UÕcYÖ*-(5^fŒ 8¸Íú 7`NZô1F¦2¦–Ê”³î×®f —v•¿–•èm306ÖdŽ+R¤ÝVPwô^höUqñÂ}{Áÿ;’ûÉ´´4ˆï¿Ô­?ýŽ °  "ЃÍ+ÐX`#HŸ‡Ö±êòLº-ML(ëëëM&K;ÎÌgkutt µZá¡e/ªÍ¥%íË™±±¨Ãͱ¡ ž¸ƒ‘ QW¹ú’«­’>¥` 5@¯—ž÷‹œ7î'TíN›3]uNÍT€h|w``šE {ö šÜ+éãî#~ šû<b$À0HÄb[r•Jò’BË×h@”Ô­a®‡Ç->›…Þú»(”¤X·‹Õnë ,ž@ê­íưS»|Ôïý ÒªªÝ€«(ë¼ó‹‹ hÆLNDJ–(@\g‡•‚Ó²Q‘߆ï©WZ$ÏÿÞzÂéææÆ;I°Pñv݃É}£Üs= @wGóÕKJ1¨´¾wÇ<þ¼˜oì!V—Œ—àë×pCébÚ“¥†?×<g“W9º:ßÕŸ‚™U¼S&-ß×i·ßfœü1`?ëH 2cÄZŸ®bqHPŠŒšº|–Kž{n4Oå)—#""âè÷Õ‰¶ºÛ©n¾jÕmñŒÄ¡LŌƷ¼©ãñ?N)Ì¢H«V®>í­Û@\±ewqQ‹kÐÊ\å²€>îó @Ž -øŒi̵[4†Î­/N,ÕWÐ:qÕ9.6#ñ˜ôÏå§üXIêâŒàƒ“Ò $$¤T,ô ä÷)ðC>_Õ7–ÅýʨHו.ºQÑzo TÀ³q¡ ²°`ÚÛÛ{UWëE™7œmä@sÛÐ :,,,´¸ ª_fbZ4<ëNÕ*è4Uüc¹Š” ®e½Ìr˜«»µÍ xà<¤¤¤.~IÔž,ƳY§wr¶³L¦K_*$í7lÔ»ž+–HÙºûn›f¯: gJQjÔ× óc[De0Ù¹ŠŠ \ßÛó2aÝ•kK9F›5É8ºªÓÞ:ºÅ‚õ˘ì1’óq‚€ŽñXþ pÏž?÷ÁÚµ³Yÿo§„Ø$G‹VvwÍÅä)ÌÇÚAûÖæxìç\Yš}‘V'ô“ÊN1ŠÊÇ7è ŸC3¿w8¿BÓ«"4u²úqFôºhzÝÑAOà<Р W­¦|¶h8#/eÅP†«ÝÛÛ[@Pp; :Ÿ¨(ÌëÓ>÷““¥P6ëïAL–ƹ‰KQn1ü¾ˆEf3ì0$‰ÝóžÐNÍœ:Ï\ý:hW¡édK¶\Ž_PÐsŽ8ƒ%ú³.bŸuçªX„.˜mœ‹,—„î#áuœ¯XmC _euµ0DuJotÀæzö³È ×ýêÂÑ ß­‹Qy1ÀVld´šñËêÉ·°g£q~žÐ~ý“]þ¹¿ô¤Å æüñí™ÜÎtWŸ‚c 70N~Å!Ñ«««×î·aüôµÚ}{² ZÈ‚&""2Ù Àd®bÑûµ5UUÕ\™SHíž½ ÎQƒVÛËwëÏC¸O<À°k3ÇW€¾,µWKa*µÿúŽþ"å=óˆ5%V›º}IÏÍìZÊ 9Ù|ÕjâR M=oνV œ|®¢æåQ {ÝöbØ+¼,Ëk`[¢¼¼0 |3/—!³ô¼à—m8cù3?q} ìK N™<Ð~¨ûEêËö 't)rv6Ó¢*Þ®e±°?ì¶'uâ «“:sJüª{’x𑚚š …ظ;‰gnVÓŸ9³)¬¼XÌRª¼ôÕʲYºr+®ðz¯nëû"€¼îZLzç¸K(€=ð¿ÕT$çMˆ·|zücú%Àä-–ÜïÓ÷bh}c¼óـठk½§VNäe‘=ŸŸ|ÓÔT\ww7VÅŠž #Ó›ÁÍnêM”Þ –ûá¦D[ý/“Kï^ b'ØûïC¦Ó¾P–Íæh0€It.'0Ýz7¾µÙDb³iVH3mØqRö2¡v÷·ºãYãíõ‰ s|÷Ó. Vû€¡m¨Aø<³‰=h|¥JJJef]=v—4ëÓh%¶eèLTÎTECýÉÍ÷:úñéô.ãá8(»_d¯DY¥µÊ5¤X#Y™åÓªä}Ø´q ªuNè&ÁÇ£§GàœîX¦®ê–3m€…dÙʵZ¡’ˆÎCàDÃeÿÞùѶöÆp ç÷gº{A°Cô Ez‚³PÑp™×cgaaéxq}¹ëÎàzfS\R¢ -œD¬É„™Á~Gõ üQ©´Ak5›Wi"Qƒ5ö»/V§kìi ÕâÊJäÇùb()„¨5ûþí© „vx#·7ZZ[-A¸€†à#hM½ëÕÒx‘6€JÈÁBÍÃY2›¸**É#FŽ?ÂXÙ+b«0•9¶ Ä¥³f×F2F¾âo¯Ð˜°Jˆ=›~üâ…!é¶Ú-øë©ØÆ‘gŽËÉÊ“cüî—e¶š1ÙLëUíÿÆ5 m¿q¢³´ÐÆ¥ÿkÛª^ÿç—£#ÄÞȦ+q›''›õH<¢G}òä5@ Jå&OËa0¥TUS;]¿6¨›˜ý70tt2 £Òéy¨ùwu%~éx®vÝ1AÞ¶Pü> ¸-¹:R\\º¸.YÕëdTó´néÈ‚ž=ýðØð'G»†a³‘D¢UÄ0ñhª—ñëWöbæéã}ž°Uµ’SQéÇmŸçrÆðÀãr*ÔïÃs:ÚzàñkEç'À‘£+ÍMM+ý¡\³©ÆŠbÇä+U_íKÒÉ–s9šÐ׸Ke_¥uvQ’p1Ç<ùÀ<0ìp™Y«–¸lĈçÊž²µeŒ @ LLÌMÀôF•WÔ¨ˆ)×K§­‹ÎweG¡ Äkæ´\#pMFx;'È _hŸn²‡¤¥h˜Äœ8ç™kÖuÏ깜BÇú÷)²Û(òšý[¼œÎjŠ?„;j´ø’¤½®¬P¨ÕâòŽ?úÿć·ÜüäÌ¢¯ZkL3'Íuùsè7¤ø˜(®©™l;×âÃåÌ i»=䬟=sÜ­;6âÒ——Ç y,„A¥|ZÎÏÏ›Ä 8¨¶\ºÜ)µñh®&¨À«W*æù—ÙuUõ1U½]¨K·oß~-,\Œ¸]ûÃØ´¨ŒYqÕòlwì ‡’G`ª&’3ÊQf'‹õíXûÝÙ„™š)†»â§×m‘¤ÌÇ‹?^rµÏЧ<ÈìçHöȹ¦ÁÄÐg­žž £®°Ï;e¸ÒŸßûAñ¤«:=AÇâ!¥HÄL *m?BR¦xðL®P…ݶ2 ¾Ñ磠 ˜Œ6Vï¦E©kíLW=Âb„Køö,”³ €MÎÕt ¿¶ÖÖVöïækýÉ8lV_È㈼ ô*¬¬óÆ6M?)äתEAó7ÐvdÛÍÑ…ùyIݳŠI-cÓ  ½ÒÄGÎ9°·îÌL^RŠ7æ7¿ð2x (,­ŠØ>[å³ D—}Ï&1DÀݵ*©fÏç4 o5‚è‡t@FôÚ©…þ·Ì¥L±ä¨Ìö|î7O4àæÐZt¸[TTôó LxGËt•5´‡á𻈱,Ðç]ñCdó1²‚)'Óì› ”T˜m9< ͬô÷¤¯¯€y`Ç4jYÑ/IIX¶w·{±ÅylmZ¦}¯,Ù.på[@NüŒÍ cÎ÷¶Gý‹ßwƒ^ù}êå*µùa+V«G˜}xºš4”!h¬G1]€Zôµ)i]'¼µÊ2©á üNJ=tÿ€Ô^· ý«2­âE„euæäUbÔ³.’€‰ìõæšÈš¡TÜöuèõ%öTY¯*6¸qé•ÄZ2˜ú å»ýFºt9_ºWÜâŠ:Þ$MÑFÕÓÎì•j5açm-$¡ÓŠ&ÆÉJh¬ê»ï…x}’]ÍÝÐå鎥Y1Ò$ÄÁ)J/Lxxxèm €hiúÊ@¤N!Ïh0me]]«!1¸c’×›Zù9¢7™ýýŽ5é7Rµ@õ8Gí‘´Ù0u7=̉ÿR7Ü‹ý•>ÂÎËÞJXÃ*ãXžü+Ü-œ4d>8~sÕ—îýo‘ªìÚG$òûì M¦ o4Þ_ öñ3H‹®Ñ Ó­¥ñªÖí8ö²›N•€=Å’ìþÝÄÛÆÁújcbh6Q6¥iöÚ<›è¹¥à®ÏÉ_êà³–‹t·úŒÍ³ã¹ò½^°(Þ ÷ƒ*'V¤¤ú‡ù²#D‘áP ¿ìàÞ0„öQ¾÷ú‘ž¤ìÅë­_¿Øö²X›Ð †ŒN©Ò‰5tXûT•#V ".ZõìÀƒ†Õ8Ë>ö^A¸f7íN"¯ðº0n-ã&ŽPhJfÉ8d´[|šÒJÕÿ48õùŸ_yÇC½¡Ý¾Eôüæ Òj!Ûç{f,ñª8[¸±¬ÐYÁ9yÑü"ÐîÎkeºlAhI C‘™³9ÜÔiÙÙ—Ü ùðS’²ìªEñb“4»M„N%Âh?¢p Õ²:¥óZ– ^âgì¤÷/™ Û´)‰_ÜWº-§‰™-H|¬…²žñ°òŠÿ´‹Ô=/º(IhïK™½CÊ:´6d ôÑN¿Ä½Qwº†MÿöÏ"¤Ûð„±Ã§}Å•'bˆ s—Ó;5Ü\þç.gv‹åS)–Jr€qLÑ%¥!94à†V]H±€x¥šy”ÄÝq%=µh¿Þ4Z%Q±Çß~è[´Ž˜¿M±…ô9¤)+„½÷ž%*»œ×Œ*2“NÝëC¦BÄ]ó;ÊÝó‰ ºFÿh9Ê5¥¶võÙ·Žÿ1Õœ]Ì‚ÜÀ"[ ÛâTjý%ûˆÒQwûús—0oh `‹w5‘ÓymmšÿÕjq ƒg ²ièÄÛ…¶ >cz—%wï'ôÝdX{p£ƒoäPŸsa,ËDû‚ê  ­"9gÁ¤ÐëÂÍìFÍ>#œŒ9·:5Ò£§žw8¶*º:ù¹íW÷ó^€S8´ëñ(ùË7>³â0úì•£œ3Ò?Ü­,ìì¿RLßËóuù ¯iîCÉ ´Œ¶Ùo­¸ŠÕM‰†±¸¸=4àÏüZ³™„¦4[·¡ž¼1ì;Ö!Îx»¿(õfÁks‘æÜ]Á}5QÎïè÷…± häÇÈ· ³¯GïøtÃZÕ5©‰…à–aá”ýˆWi{³·3m5ê£k² «Ð©ÄNïÊú¥«¥UÒ[B,ÿަ¹]®`#©œGÁ•Û Ôkì"¡…ô¹ÐVÌf“ÂÏt ¸RÖ»Ö†E·¸@Ä©ìlæá{K.5 Á -‹É§„evp³²¹XÇØÎz8³P…°WÝB·{­g¥pÇ«2B;QÏÐPçºëüŒ¤œXWì0«nøÙy¨ffVô!¥GäÒï)ÏÓoâôÃuˆŽ‹* .}žÇ[mym®zi\où¾Ày-YLì†ì D>¡ÒIdùpþ.(Éý'9‰dòù¼GJxZ»ÈÞô5‰bî^úHT¿¶Vç娎ŽjS <´ò‘»X¡q_øµÑ³±öêlÓfwvf6Ù/‰<€ïaÕ4cÍâ{iú¾§0{5%&·Â·§*nvvúÇŽòð„A/¨®¹’\ÏóÞ¥.jU”èòó¸N·ƒÅüõ+›šöº¶%Ê4ݺ¾R-*}ÅV@zŸÐ¾…ØöQ°ô–J¹ÉÂ~;>ˆ<¥p¸ìlŠá‹VSæ«€»>Âaí—òO·Yþ†âáDÚÎÖA"žWÒe*þÈa œ?g$&tètnô|>æÏ–ÒH6mÏEú/ñ*ÏF¹?©?ÖÀ(^~ò¶-èi.Ç謦3¯Ôòm*åúww`‹M§€3!Œåuåé*Šw¹f:úÓß1W5®­]þôr…è'¹ ƒ}ºqR¬BìO¸Aã ¼™.ÁÊû6¼J9¨^ÇWêéûJvz° ½nnîD³™ê"£‘€‘›QÕÿ½/IB]Æ­è••ßî°¦\vˆÓ[í®«Ž'ÜA”¼JŠXÚ§J`¡hüÖjnÕŸ%ý 9!w‚ó«ëõ¼Œ±Õô6Þ±²¯Ü´Õ€ñ_fÌ(Ïwú¢4ÜÞXZÒ¹Ÿ %)Ö:Ð4\Uã>ÃHqÔ%ýtˆ¦qÁ ÜÜÇò‰¸a‹†Jžn哬R€–|‡…PY¦ƒÍبƒD ŠÅY±À¹„üŸNMØf ’­Ë鉠¤pCÞžKPŠŒŠªuf&áM8‰Ü©3ó'??8˜Ñ\¥f@>ˆÙ0¶ùä߇ÉìfXZj˜MÐÞ+3Aœßhq}À«n„rªØ!B•B;d$µnÊT7’ÚæÄçã𘾥äÍ$€3!ðˆ‹ér‰®‹› zXß……exûƒZõõ\½kÞ9Àá¹ ¯„„>~ú4jR¯‰ÄâF¹¼|n¨ÊöQA_ú‘Çíö¹7©áæ°Ó·ÙçG{b<Þ™UÞc]Âê¿Å¢T¯êG2¦GŠ[ j8© --2 4ÍruynÚI u°´½-fcÃØ+ k ¢nll„vSòóÇð¸s ¥IõÎ #¥Ø\uŒe$DÎmö&p0X. Wв ,ÜY›Ïy¹ŒÍâpÛ=úê)» `ðKÆ3ë ¾YDfk¢Ä·»[T¯;z`žþpe{Û´ä¿ZæzaÞðš¾hbrhªßzìèÛÚ¡€Î±œõµ‚ñªQm×Ý?ª•9ìíí¹/öø¸‹uü{ê3’Üb°™!>áäÄîííÍ|®ßÝxz°z LÞ`-‡¬ŒX†ŸÌbùÎ Ƹ`q2Ym$%©t­¯6ÂÇ”ÑàÍ·“9 [ò é=ÈšFóT°u_TDR(@;¼¯ Ü'~ˆ&q'=‚¤òJ¬þù…âÕõõ7||·ÕªmŠêí7ä Ù•®(l—úïêÉégfé Luc g#ß:: -Tm/éubß\I >ÐÐ G×(çõ´¯|j` ©¶Ý‹ïòUãúL“‹K PÁP®£èÃÝrçc3h[Л7„DDïÇÇ>=ЏƒVs&Ø<¦}èýâÖ4w õuÅ„¢LU‡m K„Räµk…Ù„ðN+p²•nÕ¥K§Ëjä|r]Nþ#…›ÃÑÖì °‘ò6 3¾y—Wt$.UV²êõÄÊ­ä”y28m)‡ÚZX|®¬<ª9êü—E&ºQÞ Ag0xwïÝSZÚßß_Xl „qppØûg>ù³ðÞÝ»ã.¼Ñ=zß{â^½}K€‡‡'C/uàõë×~=@ ¢Æ4Ä¥ÐìvgÅX$RC¹‹¯¯¯v¯×&Ë(\®NW™ÛApÍÌ$¼¾÷±>|†þÞIòÚASEg‹MJ*wëj¸¾r.ÓhpËÎÉÉ9É6o¸,)Ž^ä¥T’Ãâ&bbAè=çÉwwÛá¬ÑÙ)æÏâqÌb=]]2sŽ«¸#CC2rrr®ÛecÞ°9«}I ¨¨¨#Éü¾“8«»»õ½FÊʱÕn—N#ss mgFNu@úê•/qA¤f·þÞm´™)Öê.A,˜¶‘vYµ1>rxG<ÿ¢zkõÒ4ûbë‰{~£íKh¯œ5n•œÕLŽ[ y¾óáÀç†A9ëÁ§} #žjò¡mé̙Ԅ©“£$áÚÀ0={Ö\}ÙÏ”a /_e aig'ÿ*èIrzFK¦(P(§ïÝO7Ö‡2F ·)B * ªuŠKKe/|ñ‡ëÊô¼ ?l:U®tìëíehh8º]ç|œ­©©9’XäDQVY9^MCI™+|úNR¡@=ëÑý­"ÙÓÏy½=¥%?œ2¬Ù¸¾:n=ÈÄVØ’E¢¬Ïus8&?¼¼b"mùˆóÐÙ`kY1ßyÄœ¥Õ¶€ë|—ÂË€yjr9z‰c·6˜.ô²÷xmþØæþÞ^¡‚j’¥Ñ!yêˆQGGÇËŒ¡[º,v;ÓOSüRÈÐ01—–—e·OËÍf:×R--NVÞ‡ò\EC+ ù0Ÿ‡Ös5äs‡ÞÒ~00ÂuV°¬qATÒ.‘È KH0Em <¬“ñ(´„•’šÊæ|DyÝPÇ’-:vïJö~6ßí„Éô¾¾dÜ• ¥Î/§rb„Ï‹2%Ø(~WšìQÿÁÂÌyQ)IAù¾aÄ”÷kÅ­ãù-ó0dO°±b’ ïÈ|ðê¶–K“–Û½|&)Fœ%ú<ëQŸyžr`ÁK­óͩó;……´Ë««ü©ãIöˆ(((\³}åÀÃï×Ì]"š×ʇ´nîO2˜óS;¥¶’YØÞ£œq̤˯äájY8² ÃK(gC\"aS¯ Øž¨oسî+ª¿š~–²`ªHÒ®œ‡1Unʯ¥E„A¥ìµ¿Ô¾4eÞÐê‹ï6¾kg>ódµîx¶$8)"b¹ÐMM-a›¤xög„„·ÌëOIÌj¶™e–®6>DGä€t^?Úä*•ÜJEyˆA ½)àc?똡æŽYCo¿£ú%-m”陓c\ÓNöåË|Ù˜zó³PÎÁ}Õƒï=üVVôòyÊÐ:!.MÝÏjø30•vÛ±Ûsbbb'CIW^ãããf»]Þbú ûOc¸î( ñ›"À”rëË&{(²‹G¨ERû]Øî*Daa¦5U’µw L•¸º/¬Î~uÝA eñ°fe÷掷¦$’–“#¦©Ý{Pˆ…Eá—/_^ÛÚ–µ´µMO$TV§ŒmSQ‰ •eŽ •iÑ>a7Iúð 111eh]@ Å¨¬³Úvó95µ8''§Îb‹ÿǰ0Mc"R§ã#ñcdd‚ÙÙÙññ”‡‡‡¸GcåAÌÖ»ì“,©d"QÔè@u ´bjøEEEåÍ/¤3øåMŠì bffyDÖ·Szô1:+‘qq©^D 3bçª×)ƒŸ­¶^·”ÎW˜˜˜þ%q˜ãj¸—œeO(­ökŒ&J2ygëVÏ‚‡Bº8â­EÅûñ­¥O«Xh“œgÙÚøG÷ÀS®ã1j¨»ò]]]ÍK¡<³;ÆmÉ_r’HùËžVïI~PópßXXÌö¡|Rð48ã4^ &>|Cõò²ªý@„Q¡oG¦oyy™€Š aee…ŒšZHHè¾^_âöVáY¤o¶™û(~I…D›uÍÎ×Rïw{1™MÑŸë¯Ïbüî'…T½˜aXþ¸4ScÏŸ,ÉêÒÚÞÎÁÑBHÊÀ€ÊÍÍíçïßXj84¿º E}_¦·mwƒù¦oEœš:èˆE”4ù&9»šqßA Óæßñ©pãe…èšäêÊŠw(÷Ù· Í~˜Íõ5,öjîÇ<÷¬ v÷­CýpžZ)„ø«šœáA;;>8Ø<àö÷3pвà*6É&s¾=éø€@3j¸v aþv K”ûÉ,„J8é7`üÖÛ[žsä³/௮®^‹‰y«øŽµ~¢R±î°yhU&]´Håu éå< j•òG–––™¹¹[R×ðÞ·Ïw_4ceeÕ?8ø^AÃ=99yo¿ñý½‡oiŸ@A0"`e}èj¿QYùÈѳg·`nÝ‚vmõ’¥ è|ëa#IÙoË)¨˜(ÑÆÁ ¼vûHŽ‚éT…ÉÄû‚ú3x’ðЋtûíÇ“/Ùì7JÆä´« GŸMÁT†,RrÁÌGjaI)ÿÄ]Á–Œ4ö!ªd0|ß\Ž®uoZ¶™Ô’ó´‘ gJ¾A#¨íNO#Ëdó! I-ðâÍQ‚¡¶™Ô´Ÿ¿§ Œ`>2 3ôQ¼µ¢¨à5ÍS>tÔ¼o´1þ–xGã½çRëÞQŠJE»£IL,åÉšB³ìƒ9¤!ç·ª¥ðKÚBÚ¢ýdú¾¯<ûôECü ¾äW|>{‹ !³þ-o^¯_ûµþcÕiÜ‚\CÓ0ñ T”¯¡~WfäâLÉßSn‰­äIH†Ø¶V’¢¿š”jEÔä4¾ŒAÁªûÞ/3*5lHQE¹¡rƒò)%S£v-öûÝ˼ENkÜä)<1X”¬åUh‡ qûkI©ñ¸ˆ(Z–£ýÎÊ%†ƒb›F±—Œl…†1YRA­¡¹þ|k6í,m=ßá}íKv ¾>»çJõ¯Åîâ[}Ð)FË^:”܆‚ú÷ÖJ‘ÈÆ›Ó»´Äm‚_I¥½-Ã^ÜǾƒ¤q•0«b|².¡ ùÃúNÊõ æñ%÷ÝøxD)ꋎÃÖé$7¨ŸJ¹6úl¢•CCš3ƤXš™ÌÚªðÚü–ØŽÖçžo[³º,¬¦˜€$Þž¹{i5á†ôÝAA±}hþíYJ©PGØýauú!}Ód”à1QeÌöèr‚¡eÖ·ðQÏwäN⻲¿þ ’4Ð;Ý¿ÏI”Â݆q8ëBMîä|#gÏ¿0 ‘ŽZú^/q8=)=v^³Ñ!7QÊK04Bð2©÷@w2ÉSò Ÿ–E©Ü>os˜_{†S^ë-Cèçgðe¾>åJ6BVÆóÞÀõÎfé“Ö‡'zû‚À.’P¶Ø…oíÒ¢»d#ïãgîn¸$¾@Õ&"ÂzòÐsPá¤ÝGK6~„eitµ£(«ãýYŠÞ°š™uêÓŠKsw_ÛºÛ¯z«Pi©ùîíZ ¤ó¾ÉûÁîg¬åÝü¦n–ÔùÅÎAFI¨Ìäwæ…o>#pL=ø´s™RÍß´çTÚ¶i/&%ÉÞq¢WµŸ0¨ßZL÷Ø}*®Y½#,ld‚倾ú“µvçÐI­AÔ%˜Ÿ[3}€vâ´Ã-™Ê°8ž.榡]ÓIúÉ]lµ a0h?v·|D¡ümiÒúœê4k”Ü;º—¾(ÌÚ”.M÷ñZsšø-ÜfßÎòºF‘ê¹Ò>½ª°¿`à¸ôí  2 dZ8qûÐPoq‹ ¥pF4Ù@,QmZURÆ€·Ynèpd!(³ê­•ãÜܽ•ñw\tjxÎãÜ;…,Ë@XÁ™³BX½š<ƒíf. µÈÏ sýÈ ž;ï}&fl§²…“óÓ^Wõ[Ÿ]ù\0í1++¿ÊšûÆÝÖ~ÿª‘Cõ^-zm³JÁýœÝï9J’Ã2³jïÕ¨w7›Z_XêÞ½ÂAFaÃÄ_FmcgwWô)ÁWà` 0—¬$CvºVœ>vçSÎx¹·Ž4ì£Ø¸*|â6þ ´åuQ¡á ½[¯„á6Öðèì)n[å9_ÿ¥y]ë ZÙŠ¯ªIÉÈm-Ñ~{Q8QŸ>5™0?£ èzºŒ`ôB(:0[³*Ýk%öñ¨Ïf_þí"8´5Ö®¬šAN©Á·C²³·û„˜W?'Jil^@p´þÞýô«ŸÏ—ïN /ú°!—¥r¬ebM ¤âB ÿµµçž$\.Õm ï=‡díˆI¯¬ÈÑà-çæ¾Ã+ QåðK–R{ûõ`Âþkg”Ÿ¿ß} Ì5¸šðd®ü{»¢Àq ß}ïAöeÔïÙªw:û“³Rî}Ò£ðXÇA* z¤ïÛoº¢k±xiLvV„¸¡Hsq GÒ& ÀR¯ïÜ“è·dj‘i[»&’QäÈçYÙÁ©eSÓη8}žR¸s˜}ª‡Ö¤ïÀÁAID´qK½“k Þ»ùÏ…¹Lú׿æ;XÁ÷'&&ìly®N´Aämœ›Ã±¼ó0¡ÜØÐ° Ddœ ¯_yA¬Üf<ÆÜÛ˜naNÅ-Áê#zu™gÀY&Ö ý‰IIµöØZ0™ï}Iæ®]Ÿ¨ =ëÐë8°x9~½©E”’œ?®]2DšäòâáËáÐÁ1Ýñl¨¡\GO ƒ*JKÑÒÒÒÈÈÉYæ\<;;…)ÕªKÛm«»úúúòk ˆÈÚš®B„ÞR·Ü› mÄU¸,£BJÃÀ©²¼Xö=÷ Œ|ºL†¸ ©i^ž¸Æö*oˆmIùªésÃsF¿:çãÅî??¿¯ænت•f΢¢AÛs3vØÂ""¦ÐÑkk*qç;5H@I,*Ú­IŠàEÅ0ô}_·#6yòsH"ͳÂÙt{²ŒÞx”²H9Ïn׸Lù¨hi$ÖÀ¿ôšM^x#ëþå—§''¯«fœòUà ÕÇ¢Ú‹X–ŽIBz7Ø'?EG“ÅÄÄÌà5?Õ>0g³†öê»âˆ]ß|˜ŠˆHZVV§â  ¥d‚2Éí,kÚí|Ûn[<‘ÓŸÃN”K,c ÁòÅéA93‡“ÙÚª©%6ÏVÈ šœå¡¹ 7UÇ r:d”ŽcŠv ðŠõ.Ž5 a‰‰³†¶*D‹¦ãÐ=y("ïÛ·4ê&5 ¯’%ß^_]Â!!U´¢"#{45ñÁ@»! ¨ŠŠ;à9•.§ÅyÓÿŽ~"?}j8¦1õ#xß\’ íäl³ yÀ`~w7Ôtª|âL£Üäé°#‚ÝöäH*ö—êÔ %6èEèU|»óÑpÁ»ÀzøUUq^PP8sö¬²’¶/Tml¥†ôNY¬EÍS©H)**šA%”––.t=·‹ˆŒLÎÍíÞ±¿ó‰Z- ¶–Èö>0ìh{³Œí?~1JZ‡tñKzzJuuõÔÂŒº{ú<äí!½‹óîm^BK!«¤¬Tx ˜­Ô×[qj6ÝÍH?òЩbfê,0…u 4ŽŽŽôÎG&5–3Y¾</ñ\ö^vôõE]\¸8î5š*`Ýú¦ÊEÂa·õÁÇÇÇîÜñdO3†Ý6;è)ƒP¢Ó¹ãf^Å—/_Zò{³år–côÃRRˆØ\ÏJEã˜Å ­ô*×,›¹x1¨”Ÿ‘†ÀÒË xpK{»ˆ’’RèpÀëC¦+À'¼±±)Í»ì™bŸ”l%"•HŒ(3ëü¹>Ô:3£úi2¥­¥õ¥´tX~¶Á½¡¥¥Åf\C¡ÃRJ*ÌÏí©òèèh»ý¹iêçÏ 9ÍC­2å©Ëwaå»ö#í=‘×€2?FA0¼N ÎU ŽLL¤†yNCS0]à ?u°¹¦ÚÚÒò-†AßdŸÝæõÑÎÌÔʸÚÓ캉óÍ’Uvý•áWc_ªf·¶,d|{ènbÓuuy>U§¡¢2E]´.l¿A) j//V/ÀŒÖ56§¿Ü„—œº²Û'Ô+¹t÷™ª0úðùfn@dPîE¤bÞ(i;F`Ú s¤ðõUÜÔÊ÷ïÀ@òä»r•J–™·s-M˜š‘RU;´<8®Ú®½à™/þ'átÛÊ$µàÃ~~¤÷S‘7oÞm–°h—q5„ôFJg¡y6ök^'Ï “´7ó/1…+R©=#JÑ̺^Åá¹ü9¤X¢'VS3o¿3=A³tïÞ½‰™uIIÏŸ T&fff4§ˆE>̓°Ûí‰g2·–”D†‡‡' BF&‡Nö—ꜾDŠœ7ã?~¬…y݈¹]¥}𽇌šºí '0Ù©ò_óßS#<ö;8À%VÏÀÂÔp[Y[£àáÍ®»]œö¹·¡Jp,”ç·ýè¢)r<ÐÛ/º3ç~íš±dÄñÖÝ 7!´ š“7ß­sXM°¯Æ‰º/QÆær›eÀod÷úÀÐ\3´|pùÔP¤Ù|ßd¼0yH ¬â1*jˆY ¾Ü¤VõÏ”–þØ|fkk[îޗăÿàÁƒñ:gvÜ<®€( ·§þþþåì@¬¯%$|Å3š«¬W‘ññC7ÇìÇ5^­äw'p`’‘‘yˆgg÷š)Æ‚ý1<¼ 4 ŒÅ)óPËcu§õ4³ã[¬õð0ùj5>ÆcùÉ••7oZYÑ»]쿺¸:nصp¯ÆêB؇B>÷+0¹my‘ÍuES6vµ´û?/jæõ ç/V#OÖ)z½ýüî—”}0%5U0MÚ_(5l$Ga oh$»¿CLÞ€A’RˆkŠëjç»ëæ‚ü}Ï—ZZZËecê›‡Š¦¡Y©Ö##bš¦}*ö–Ê­óÚeŠidâG—¾â³ »^&u×^[×üÉŠ¢£ùب(¯#Ò‹’v?DFzë'¹–Ï0Âa=©±Ûæ31É5}Á¯®Ž‡ç~±o7Da°÷æõk˜þ3^¹T†”·öèðÅ9É&ïΨiZ8׿½jÓŒˆÊ)iÖÒ¸ÉÀ¢ÿŠ÷ÈÊÊjo§fwñòxÈCzzzZUô}¿Ä»\c ‡²¼D­ïïþái=MU [ŠX‡ØïÎ"xó-ì¡ããÏ)X†<¸Äà—¢¢ÒÅâîóððèèé±sP¦êžH>w³%ÝQCë˜ÕÏiùS>tDö™ þÁЉÞË[´~÷ËÒéQ9GRqÌð™|dHýü2íYóÞûùxÅ ­Î/²ŒäW¬Çq,,N¼"nÏÖ§ƒA™‰ý™ÍÜï±)‚ÍÓ…,2b1˦t¢³ÈÌáÂ=%4<,ÁŽb°VtãÀÏËŠw¨Ý5|»`dgßÓ½LE¾úŒDrÕ ûN¦.—ˆ»§’åÉ8pž&4é]ò$`´³”00>A{¢/°y¼xÖ<÷±ô}…–‘ pP¥ª~òS]0¦. ¯94"‚v¾\f iÖÖBHÑþé`ô@oQD@ ù~†²ÔñãîJ§Lúˆ‚®'éVþ ,4ˆ¿ŸKçÈunðÃÕ£@Î൱ö»ïSˆ›Ò4ûç}†¹59›®ìXÿ@vSòª$"i u1IŒ–Iy>ݦñ¤#åÈcäi2L)ü¥¡5.…ˆ|€ù|¨ÿ Ô*TÚçÓ¹´µeÍÌŒ}a€®ÝÒ¼œ Q™Ð'îpw÷î]ZZä@LŸƒ»ý±'Ûs ø å·oß–TT„ƒîÙáæÀðÏÁg|||[>}€޼‚C@ðìƒRƳÑãÛ·×5W“ŸÌƒÜ=ù’¿Ži¸# Ýqww‡Ž§½.Öíú,Ÿq¡ñuÏÅÞtјÛHHHáèèëÛ;¹°Êáã»_Ð¥¤¤@¬yxXvíðÌ 7 Ô­Qü÷è‘—|Nîy~ÛJ)<„{‰%¸/ʬwíŠFlQ…(ŸûS›÷aÊ767‰ih$ôú©¬¿w¯K%ð\,ÜÌ+ìæVdÚå‰Ä ML”A»BæÇšÜ^]höÕÝ΢×ë~⸑•±œW1 °ßãöù¼ú‰ŽBËÇÓ›N2:®D*˜\Îå–ÐÃ(•„ ×€ˆÎt¥%Q±ÕŠp ¶ÏòÊÊ›—/ßuП¯faQh2YúFXDd@Ÿ¨ùù·¾KlN 9ܱ]íKŠ®£îx– ÖµÑ}ÇËE—¨Zgc wOœ°ŠŠ}D­¶¶·©ÐÑÑˤ†r¿0P+ÈU+v8É’vq©ˆŒ<Ì×ÑùÏí:)Ïm»íkœ«ÍK½,U¤´ú±üF©Æ.O4‰[mzf†˜‚¢«œ‹„D4ÒtåòüXDTTÔ÷Ò6s‡N±i ¿¿!æuÏ6P‰åíŠ9Œ:u063øOp ÏÝ\ã9å¯NW“ˆq«´“‚ Ó7sœ×ú 'jìwAûŸ `3Óÿ&z¡w¢ÁÝ½æØØØxŠ8Pm]°i§ºYùÑÍÃé,“m1’ðæßÄob§n{ªBäõk¿¼\é¬Iâõ‘¹òÆ¡áÚ­ƒfqÂiFPÃYÑm|/E>Gw4WÉj±åA 7 ü3Ѹ­#rø,¡sÃÃ:nj¸ø‘ÂÄ$ã¬M'BÓšcº1lí<—Œ ãÐIA‡ýQ—ÃË—/+-Þç©þ/RºX†ÍÅÁ+F/¯ñV÷ýEÁší•••ñZG†€À@èŒÌgllåT””NOOíû8|ró5?tzZÕË×÷ÎÚÙ txè`šH¹©óñN+Çníж%?'ãoÏ¡J€l¾mmöyA»…Íl²Æ(µ×Ò"@©\ ÚWŸGŒÂþܱ4w°Ú÷Šï¶€Ô ⾩¯BW¢4„´´RòÄÇ‚&Žv¦ÙZÚÛµ/Ï 9RU¿W•A'œäZ¤$&¾xø+%¥§Àgm™…ÄýWŒ F$ŠZ  žÀÄã«ÚANþt‚=ñUÎK#£Ù995\Ô HŽ1­×'Êþ›6lô»w†6?~úDbT¦Ú {Nâ/Ý(Áf1ïaסó1’BAØÆ¦4SöÅ€c±Ó¡ ³EØ9%Ü0¯åå?  úC¤®L™+x†¨:%h²‹««îB“÷àôôô¶¥sÀÐ 0¶kÕ¹„ñÚ1j5v„Ị̀̑„44H¡ €§Ä—ð@Œàóœü7¬ào½½>­Zë¡;þgÃ\ÇÓÐÑì@iVù}gTÍCíѪta¼¢ŽðóË×þ]u¶G_<îÝ›/ ,N®ïä/ìðÊjB—Ÿ½Èç{ûæÿþûûÿdtml Íô­å¬µd´­%ù?yÿ#33tÿ=3== -=-#-Ëÿ»ÿïÿÆ'¡€?t174®’r|¢o€ýQÑÐ(0ðÓÐÈ (¾–% £¦%µÒ4³6„.Õ4¡¡'"øëµ›ö 77nÊJÓ8@eÑA™ÿIeó—œÔ:6:ÐÙ7:˜š˜Ysý›bèØØØ~å¾I«« ]Blªk£I¥¥Òµ´5´ã"âÿuÃ*•,t³õw±rÙè:ØüÊÌ¡m ie­kÃ%'+DÅJDóï Q¤’{IÅonj¡ic¨eò×rÞr±ý#t3‘þ¯+H¡‹ÃÿL'ðë¦ÐßW„Þ丹v™ûæEpó‹à×ͽ๕¦•#Ù?¼”|ÃNðï­Ž@æÆ& þ¼W˜“æWðœ&†fÆ¿ï@µÑÔ²¦Ö¶¶&"°Ò5.„v4ѵ6ÐÕµ!"€®þþ-(ÔBkm+C ›¿~c¤i§ùëéï;Q,mu­© û¬i~}ó?˨ãhöû‚hëÎý—öšiÚAWØþm²•®µ¡“îÿF“7FGÓFó?÷ÿRNèÙçd:æÚ¶¦@‹È©¡ûŽÉ Í m¤¡N@p“sܤ±74Ó1·'§61×Ô!ûÕÃ׺†ú6àû/Ú?n³ý‰–€æææÚ_6öû"Û?î$¶1· úãFc3sP˜©¹.¡5HDI`h]K¬mbnýë¶ëßUþýnãuÕ]„Ìù÷ èº&&ÖšÚ@Ϲˆh‰n>[hêèüþ ÄÃió«5ÐÅè7®â¦ãìLÌD¿.T×¹©ÂÂʺ“]ÓÄPߌèä¿ ¤2ÑÕ™h©™tMå"ø³i¿óýºhýÕb¡’HžÑ1Órp‚¾˜ý­@[S-èÒbzj&j60Làë_ÿº3˜€à÷½÷¿/]¿þ¸Døo—Þÿº:Z×L‡¡¿] }ñ×+‘ þîˆþ¸ ú/÷K[™ÛÓýy½4ä/þ¸ÙÖä/OM ­m~qs 3÷Ÿ×,ÿõ>å›s‹išý€¤¦¾îïnþý"ç*ä³þ[Òº&PþQŒõ.çfjÛZOhCôr5Í€~Båü­l`п þåCm­þ«ÒÿQÚ͵à+Izòo³þº ú¯#ûw‘ÓÿMäôÿ‹2ÿ?ܯßw…[ÿ‡Ò„ uMtþGÝüËmçÀKüÝÜ­ ut©@çÿ츭!•Õ^àoÿñˆèŸ¥F¹Ó?õÏÏÿ¸YÝúûkkG3í?+¾ùÀýçÈüÍüþy´¬-L m´4­þôT¦æNT¶ÖºVTÖº&À¤ÙÍÌÍt9ˆ~×úï:Ge i¦óG‡þ~kü þ5ü1VdäÎPX×´“½'#ýï:)%))9‡ëßãÃÝüËÝôD¿ÿîÈ/óÁøC†¶¦¦ÀùA‰ÿP£g¶ZTš66V†Ô‡àÍÑäþgÙþ­ô›HðOõþ~ö??PáÿFUð§"þá)þ¡,ðœÜP Ö¿« Ð3·"“á#IAEæVÀûXiÚÈð˼!°i­© ÀxÿÙñÿ^öÏtZ44õ‰™[éRSSÿ²"‹_Õsj›ëèr?34Ó6±ÕÑ% 1±áeÿnª® Ñïjþ`eP 4X 4¬Ím­´uÛì_¿¤6€Š'ÑÅÐÜ}SÓ!öW±¦ºP$ÒÑÕ†Ó¿Œh>°CµÍ¡plÆE§ýiô­Ìm-þP Î?`ð߆jüßtÀ€žû&ºýŠm©4ÅÐF×”]“‘M›Ž…‘™M“Q—ŽU‡…žUS“ŽIWYOM‡áw›þÌõäAœˆà&À¤á"»ßo€ „öGã›Úÿ¥é¿gÒ2·±17½éÖ¿ŒÀÿ` ÿ¤âf€TèèYÕþ½L¬uAH‡(ÅÿºTdþÈJô·áû« ~Õö'¦øcÿPÒ_á½QÕÿ0ö7‰ÐÐýåR€gºé¿›2ðkZ&æÚÆ °ÿ-cû¥¿¿lú?´äFËØùå-5ÿÒ?ÇQÓLÛ’ Ô»ÿ‰T! þk7~ë)Ñ¿<àÎÆüqçŸíìŠü#>@Àõ~AÕN éì }ììúüCsþQ,Í?Êý'¸øO;êƒ7–•¡®¬î/AèèÚjëL¼T  xDc­ÿŒœàOoõ§Ï½—ÿ½£ÒþÃ04éØèu55µYXµè™uµtétYué4ÀoȇiÜdÊ¡ah¦gNFõïšÿ8 ¬h¸¡†ëüuÄo´é††ü²T{Mký?Ѱž•¹)øZ$311 JŸ‚t윆Ñ?€üMCh~ ù?àA¦_pé/(é@ô *ýãù_âñ?p½µ óõÌÍmþùÿŠs Qûç€7Ÿi¨‘23Àg!Q@‚ÀÁÎPמàLAø;ø…éþ†­AYîüoûÅÿÈÿ Mþ£¾_½$âþ+—ù•æ¨û— ¢?¨-4KôW:ò+ƒ¡©þ?•ú{Fâw. í@±ùó ÍñÿA™þhß_üúƒ™AUqÃÿÿÃü¯ ƒ¡žÀ¯ÉÿS£ÿyþ—–ŽŽ–öïó¿tL´ Ìÿoþ÷ÿƦÁßÇ›€ ^寔Tˆ É0"J¢Òˆ_.^[“Y„Tf]Z=zmz:]-ZMZ6F6M&m-=6ÑÌÖÄ„@òÏ‵ý§ÒXéXh陨èhµÙ4éé4uèèt˜µµ™éÙèôXuXþµ4C3ãþczºšLš:Œ¬´  òuµ´´5õ˜u5éhÿµ@3[ÓÿX-+“&­›ž3@zÚÌtÌŒºšÚlLL¬, ÿ¦³Ð$Ý,މ–EW› 0 @ ÚzÌÌŒ Lô@|ŒzºôLÿZœ¦þ,……E‡Q“…I“Wzf6 奓ØÄéÂǦUWÅ,€¿‡qÏï4³wœ{F?™¸½ÐýuõÒiÿ#Ãj·u½uo¼u=^}Ÿ£Ü-hŸÑA‰µí]hc€œf±0ô[/°ã´»'†j+ŠìÅí£{Œ±÷á2¬ìaß{¦…¼÷ó‹ý¼¶fð%#CW(|~g'ä­ún°¸¼6l.‡6Y¼Pç$–dÖ—›´ØØØ™#FYÍsóò’gÇ­½•;º‡ùžÇöôÁÃscìÇ((L´eÊÁ……´p„'ÚMIૌ¯Š%ÿÔ"’è³Nyt.È‚6AïTìôcùÍ7â\Æ[r̬1¢$¶p •>õØ^µº~±}~lR‰²tÁàà ÍžÓPžJóÑ ãž‘ôã™pvh T‰Öƒ±½ E§ Y¶TÒfff {û1çíFÃ,]}}ÜÛPE^ƶ”\nÙñÏ™rècù"âòȨ¨2 v1¢>—çÇ©*fÖÖÍmÁØ·`^D‹DQ{GEarrrÒBW¢£¯ÏÚ/Cù¹3ƒˆˆm÷ýD¥ÃÍÍ #ÜPËb6Ý_v¸S³Û45…M¥RÞòs}HJQ.Oº?z‰\\\îko‡Xµ©ŸŸ_·’ܘè矱u¦SÌ6ëƒÐéO㕖ϸO—Q“A.8„‘²gá…ÎÇf'§§==%ú}£5! ¤ïÝ»wxEÙfä+*RŒ(½¶Ešäòþžã—6] žÀpR‰EO$nèe®[0I®GOÅ9ý££Ÿ\\ôA×î1›ŒvîkñGEAFö0Ë_€oM”Ü‚éèè€ñøùÓÆfcøÌÞéjÒÒ•.¿À@~FñvoÁ@ BFF4h2´«XµÁ ªþ#±HP9è¥ÜX7}{(~{•õêÞ¬ó®æÆpÖk~iéÇÐIªÐ>Á‚<šú“Ûv[_=aQðñCWº¢jvNN ££®®®$ÉÐ@÷ Óu2Ä öµf(éùSH45Ó´éF¤ts`?~œ­š~Á Býå‹Kߨ˜B<»zÅt‘v»€ŽÎ³³Á4¾,YøQH’y!»«•àÇSÏM”èÛíïï§@Ç®ª(*’1›N>Çsý)¤IÀÇÏ/¨®®ž°äÞŸÀa]Ý'Pc·ÝbÝÇEêv¾Í’<`ðȨ¡¶°°prV'Ó"u,+Ûùx'²žÚ+s/(Ç r}VVÖÚ`Z ;Ùë].á´ÇîçSsŸ%ÉúA[´ßˆ‰yûúúÎÁxÌÖ9oÖá!#KšªC ªÕ]¼iˆAsaÛãfQÍ©¡¡1³ëææVéz^>{ñíÛk//¯ùõŒ¤¶1 ÷à¯_ySyÂÚ‡†PwëŽñfWq/~tÑœÌ{"ÑÚï¨  ¥žÊÜL©Ë}4ßHc:áPä&u‹—ºàIº¯/¬´´´ÍPXX˜S-*©x Ð!lìÀ‘ìÀŒ Ò|õºlì9RRØ ‰$ŸÐP¤Þx¶Ô >>¾à¤`?¿Ì¢ìX¥¨çôääoŽÏ,¬¯g±ÌeÍ…´ÎÄ„ÒÊÊj×]ŽžžÞbQpºÞUelÕ»ÛSéüüÖV63o–ì¨b4ÉóçwŸ(Ïú.†A1”窿§¯·×§¬Œ þáÃ"“ z^uõD3·SeèXJõÚ'@á¡]Á%}Ü4 ­¿w7F˺_»éèèÌï-4G³Y§‡q3g²’‹ ¥ˆ¤P°Xhº×ËôÐéßíD‡Ûå ¤Óà»ùÍÍÀ1ug ½ôm¯ÞÉç´¾»KëôÓàî½{/áÞ+šLßËÏÏR‚}ú28ò6I¶•ùLµmSk« ÍδÒÖtUÉäÙ`ñzSû•Ë@¹©ÊÂâ"´ý= 0жËtºRªÔlFÙÁÙ9°¿_’Îh˜  í¹²ÖÖxQSGǛ礤›“Ê…oߟˆÙÛÛ«5øå  ‹‚#Öþá˜F Ðû‡¯^½¨0×@AEmŽ•#"*~BkÕc´§óS–‡bƒ[ÝÚxQª…­-:è3Š···\¾áÎ\ ÷õ…õ@•µ~ØÇÒ']Sõ®5pððãXÌG»7Þ3å R£¦|$øÑÔüÎrÉ #õ…Å9¡—ýÓ¦¦&Z»-Å,þàß^lghGùüßxó̶N*K6rtpTÐÁ8c…Õ>¹I%X hÿlõ‡®•È#ý,*mâle=©›x#œ†øŽòn8è‘‘pg‘ìw‹‘Eå¡­°ßL蔈¡ØYÒª míÆ¸IGD¯òG‚N²¯!¸_£éÐÄ·Õ =Ñ{Þ.\¾áöû7¡13’%‰üòxˆk°MJettTrßÉÜäþ#xZ«ç{CBC0ûó×åê¯Zе¸!4Î( ㊯LϤ…x€r2ù} ¹¸Ô6h‘øÞïËQ¿s·î‡†&±¥€õêáìs£ú£6Ù—s洛‚Š´ïì¯D¡¦!BíÝXÚážÿömpî¡7•)çó2S µ§µ~b²Hb™š¾äL¿ŠY–R¹S×ìÎ78a\„˜[âòîgëh¹yº0M|èˆøõ”–Pˆ–Õ߸=?ŠÈ›sÛ þõ bæAZHÀs½¢£—/QóæÞ†ÉÍÕ/ZŠh‘‚vœ'Ìœ¢÷£]2å‘ßßQV¤¡ g“?ÞåAŠÜ(×0*ÀETå53“bÚ½}dñÓ‘›’Ä·Í.Ô8u0(™•.×3Â?té:2*_M9úßl‘f§è¸µ³+PÕnb8’†›/|õšúc¼ IÛ=¿áÁH˜ˆ ×ó7nR;U•áò¶n²x¨ð°Ø0êQÒ+Í”mš¤—ݶ´T‹Œû a©ºé“úcÞ™NxL0brÍæÜ+›Ê…úFjïX#`!4#üšXÐïøuÞ'¼­$ÅÛ˜p)°Û³•8çéSøxöÈ÷ÙmôýF÷ÊMÍç3Á@döš™ ’û£¨ÎKN!dжìØÁÍÐÔ•³烋ç°XaVô$hÑô¸l«ÚÏ‹¥Ÿ@ßîPèTE’—ŒÒ-;ÇÛ5v † "ñ"ÆÞ¯ÂȲœÕ© 9Ö%§1hQÙ”­lmÁÙcT–)¦¡Ç2• ©ôNNn4V@¯¬VI‘¿Óãö(¿x ã~e¦{=flu>¨›ÕæŸÀCÕ’¯¦O§Ýf_é|ü0‹ŸNÛï©ÊÙîg Ã%ëžÅNÈ02×ßÿ7Nëw‚®ÅÄÛ V­ÁüâÑ wcRô4¸ü7ŸºnÊûmy)B/IÂßàÞŽùeŸhŸ(•´ú­€ó# ñ ò¿©Š ¾+ІŠjkËõ_[Ë¥R ÉËcÀÃÿHP¨ÄK®y}u¹6š‡===]h¹$tsêÌ×™\¿2åΟ#Ü´Vçhqi ºØéäüœ?YòÉÏD褗åŽp(¢A7RÂð‚ ›Àn›½—h½Ú›,“!Ý{šÖAÉÄù«u³Ý»f»RR(õ×WÎ?7dž2$Ú=nÝùÿ É3V©Ô%–Å<:ãäxwŽe ˜u+ˆ:ókk~×,ìÔÜþç£ÍÿL<â m‘‹ŒÇ”º£÷qwf/ù6$!1=Ñj#ú¡sŸïÊú)ô:^O¬÷ׯ_±œÏ»tè#Ò˜fÅ ¾oUU;èèó…`Ó†‹åóUý»»EEçšDü#Cì]hÂ&, ayxxZZ[ ™™1ØØØÊÌR)¥òr‚‚©Ö: T˜Ï íÎÖA·9ešEÿÊäX)"òâ—ð¹ÜHQ™2« B’’È^È~ÁÁЉ¤'ß(üioÜkÉH‰¾D®Z †BºwCðݾP4ÈéP¬©«+gQ–çú‚dò‰Rwz¢®Ãõå1÷J‡R—…zЈw‹tºÃz+D§%iššš~”Ë‘}1>>ýÅ4;Ü4}bR@‚¨®Mµ@e\’ìᄎ0¿”ÔAÿWÿ½JþWÁàï º»¶Òxæ­¡o¿M1¡¾Œò¼ƒü«*¿î'ÿuî¿ïbƒY&wq@ç/æö=MÛoåÃSͧ0ÿµ±ý‹5¾à¬ÎÎÌ„ Ñ[(5Œ(Q¹ÆŠvv¶§‰,~ºèšŽ÷žžb£nÂÂðÀÄF¹Ÿj¼}KÀn·eP|”šš–˜hV|”e•>[ï}›˜˜˜Ä8I´}tÀã¹Á‚;½Dè0Ÿ?”E±~¬fXÙ7_?¯x!·òŠžÐ‹ìº)—ƒÀûsÉ‹ËË}„Óè•ÎQID¿Žæ©@5Íì/éva„—™kkß)S6ý]Ó«P¼Ö;ÅÈ@Ÿ¡ ;&WmyÒ9¯°7¯òˆx&åz&î“òÁ!!µWZ.‰V# yBº²°°@¢†ô´}¼H[ì*êÑ/æ ]òe3¹±Å ïk_’éd)ݺӷJz†°èhƒAÛ=v*üë`Ëkù(ü"½ÿf¼u#täHÂ×/+««!¨ô­·—ùäÒ§;ǬjcÑÒÒòåë×pW'KHž³sh#öø±9Å»PËd¢v=“Û3Š,’FÕåÎ3ëÏó“ëª %]ƒ’õƒG¿/ÑôëF v³-± îµ­’¾éÓí^#ee,Àn-ŽwÔ@ô3¯´ßŃŽÃÕfB‚Q,Öy“°k€ï{Oœþ°¶ö¿‚‚Bj‹N®Œ©QNùœï$N’\ÖöÕwnbmÚïŽmÒ\{ÍÕKäTT0?Ó///‰C õ|=+¨$¼_)ŒDÖÔÔìØß•«Ñ€œ"³üŒ€Ücl‰ABWUgî32·Mû¶U?3îæ¨¹7m@*cãΑžºìqn{»îþ’þ>@AuKx½ ­õרüΧ~Dçêtv ›ëDšßãa­s<Ðö©™™€Î$/U:‹öN‰®à!t‹9^@@€QPÆ…!ô>Û/—ƒ_{ŒÇfu÷Ö­[¼f3Ð=â3œ »ýœ+æìì¬ÁD1qºDR€ÆwÊýV²LðñØmàpÙmxEE”O{eMMssóèÝ=àÂ]\\`"×̦+o}ÞØ–Ÿ©ÏãPÎÃØÍó®*>>°`@ÖFONOhUÅæ|‹—¬‡3¥NÚy®’Uò++Ÿä)—5%r9ÃÈÖ%—4䆗^${´;j6S ‘sl³»X¡%Ù½˜Jrj¸¿éÐC «UÛ¼4‰ÙlÚO‚ûô.`†3ÕL€$ÚvÉWÌeŸ‰¦s÷1’0™jð‡‹’4X¾°º ËÂÂÒÈUÓfì“››+|àYl×um¶vÅ\z™žB½*޽x Ô”Q9÷x—WVükk9Ãââ(òU«ˆ„‚±ˆ¡ lëtñ\$Nç`‘ð(©ÕªŸ÷&pB$µÈf}P8 •Ïïúb•g±ƒ4 8ãE`\) €inŒÈµY_žÙîŠÐø{?ÄÜø´¿·‡ "$:Ð#Ù‘f‰QQQоÊʱSØûñc°G¥Þ¥ º:鵘úƒR$’¸µŽ¶&î›çT›ÌM:­§Eý,¯#|4ãûL(Y¥Â ÝÑÑq1Á~ò¯……¿yóf±¨jšm×'…; ¬ÁÞX&c¯ÐÐÐñ{ˆ½C/Ñ¥€ìÕÇqö)Ôç9å0~€P+SiLíòO”ÏVÛæÌÕ×õ•˜k·3MÎÉÅå 84ŸlCÂÌ\d«ø¹¬ŸÏD/>ÆÓ§OïÓhŒTeLWY š™åCý²™ÊK_ÊͶæ3 =€í;ˆI&œ& "œ< òC JdèƒR‰P©É„t…‰Ø\T'·ŒîfÁ¦c›$(pÐÆ2' Ó‘ãs… ýlÃs¬ê$?ÒD>û¤Gк>QåXÕñÁY.¶<Øï¤(€ãmy¼3ƒ¥ßsEMCDÄWj8$D©\úÐ8…ºwFo7–òÇùÕ ºªž´ 1JU|ùÁcgg·8¡Ÿ4Âá?jCÏî|”kÆÎÍ­n³1œ5¸â…Üô{BäøìׄˆNä> ²¼¼üâbk`µ.¤Âi@LDÔÔâæ\Û“e¨9òyïݻǗ3“6M„}ú”Çm³öaïðÉA%ƺØè·èë×ýbç''kbIöâ@£+LåLYøÒ·mvgÕp¸œdÍ'23ÉêtFTP¿ÇæŽK–×ý88ðgµ\ôBæóÛ_j¬˜u©Pµšè¿TS ú^*á]x¡ÃÄÄ$G(ðæ¿™›X»’ܪ×$Þ*’)¼·:%’xTÖú¹4¬É¥-Wß“Néð‘Øò‚äó¬bc7Ý1È3‘@¬xxÀ `aeÛÇËcZ›{îLW= „d²Ì˜4Ñy‡mʼáA°Ì¶3žNG‡‘Zop+3Ös¥¼zå¼ò&̌ϟyY’’h¶¶·)j ¶ì¥ ,8P* pž­¥V8Ûê‡òL`ÔÖá,™ÃYëÓºÐ)sßozHãÇ ß»ö}bjJ¡’wrjjs‡h¤%>\Žÿ99ù€ØÔÄÄúvÅû÷ï…ãåÌY88j”·»²'‹** ,S¸WôÅßÈ«Xôt—ÿôX4žU :&,RxayùùÇm²§z}vvaûù¢Ç¸Ñ›\ÂG`yøu§{̶V™Ô{zò—ý’c| E ·lÙ–ç“«Æ‹sÑÈ2¥±ƒ dJ&Ðç}Å!w^£êïQ3 .+‘ -`|ØðT}“Ïk^¤@ÄÉ©ú‹š9Ûø¨Ám ta_#Ê:•.$xããÈ}×Þlå¼û0Óõ®5Mµ_¾<ŸÙ¢ÑòEÄÍ6iþôµzýÛ·×uNѰ™jŽæ*Ao‹ï”ù£’BŽ‚•#9‡Ÿúº»[ÀY®öâ‚®¢„“ˆ öüüÙ2’£@èå|df wÔñ Þ±—P­±cq=Üspr’?«Ï.ËÈÐÏ;Ò•Û†® êŽapê"yþ\v±µMêê\rÖë*t8àÖdÙC׳Ÿ/ÇòÕl!"e÷”¯pç)mö–Á|ˆŽöO`—S”§.pp\c{#Æ»ü½#jøä†Ür¶FÒ&õAÆÃDR?À¯µ«¬ªj˜èüsqqñ¼1͵«|a!¡ûÔêµ~Sæ›FsT1Éíî@áÒ¹™±(•líìÚ|°?˾ Ø.:nÃ6ŸïŒ¤`u¿â„ÞˆÒp«ê,çãユ£O€.ÀÁUÏ[Ÿ"=#cÓ-_£!‰çü+4s³³cÎÍËZê§ÛõéÌ?`` jÀןïp'@ðìÙÓÓS§MõZºáá.ùé'¹bh¸êÖ•§ÅÒjÞþÞ›Í ƒA€b5¨ÙæÞ{çÈ•ð|ðƒÝ÷îOr™tè,Èoß¾}]hö¥³þ.Zgw’`ÀÚì‹Ô~y~ M·‰Ñ™«ÛN=¥5qZàÎKè'ÕøŠÕaÄãwÐÁúÏŸiâÎþeæ±!±ùH>Ù}n £Žét ß-éô{qT«¬îAoç—û3—w=µŸ@@;HHÀ/µÔù€õt)um{÷G©2"«Ç@ê«gddp|p-mmZÀçb\£à½®ŽÇs3^d6‰|¤äöO³nMT§{{ÐÜÖÂÆÆ €¾HNyQªv䬩™Íã^o0Užgai‰Â ×ÜÚÚêÔyÖµݽ>“6Yi™ â{ÙÞÑFrr²Ddd¯á[ê]Ï€Šy'$$8œ,ønШÒúþÞC/Ë,ìì0 Ã«ªªî›SˆÐÜ!+nèì«RÓ)yè_w‹ÄqF=pã𤤤jïœä@|r54àÀ ‚έOl i`@êçö”BKKËZä­èMû¦]0Ùq‰Ì¦±£¹1’/" * ¨»É0æúÂËñÓ­ˆˆ¿Pî³×Ÿš hÆB~½!2ËhnÔ&^ÎV*˜>†|~ø-ìôV~³©h9"}= ÃÏIH÷ÛñY&Ø»OÙ Â;6\†Ê@|+,gžÔ^<Ì”Í~ÑgÔ<<5l®&ŽoÊÐ3 ½BOO_¥ª¾«<¼ñä™ñ’q?¢<`ZÃ¥bIÜjÈßšn8nÊý»må,~‚‡Íô0gx€¦“ó™|°©m~ÑJqêOK÷y{óvu™B2=j-]—>‚$/D¾ÐòCód#¼]ÏJ¡}9µ˜îJ¡eDêÒ%s¥æ2Â/Žvwú"áCRÖûþOG˜·%Ñ ’_ô§ì½ÓÕµzªCÏ›ƒ²ö¾]RGæ´D ûÙ¬9Ôî¼¾½È´[tê|0Oß®šx—àM…Ín}ôOeÀ¯-y’Vü^ð–•ü‡p¿øx24owñ¨+ðë[g'×§ñÂÆB=ˆ Ñ; ™ÜŠñx¹ž-zßá.có¾]ËŽÒ˜^[Ö‡ÜO\cƒí_™YÊË·ç·8ÉËÛííE#iÌ¥¡**¿Ú<µTÎóPλSj>W-¿Y\\ ]kW…´™BìÑ~+† FòdµAéBý.¯qíH>ϬC°\Óä$4Ö7|¼v¸˜¸xÄGêEp•HPÓð9 d„tt(þþþ$j¡E¸\±sî ž‚ï ¢Xz"²úúl«¿éŒ~è½¾(òUÝÙ[ MÝÑ   EÃÌ  ¡éõ`Ad½Ž}üÎY¾¿{£³ôã Tù¹õ¤ësª=¾¾}S¥¥º^¦q~o”\`ëÝ0`Œ½ÿ 7ëd)T+WÅþ¡á½2§¤à`t pÚ²[„ ½âù¶¹‰wNçá)uœG/-_÷H£õÍIV÷ÕÆZç+ Xî?ͺ®ðäxqÜRµðŒcº·‰Í]õa¼K´ÅÄ(‹—(lîkX¸T`ÖdcÁÆùÝÅÙ|gëtž›ôú ÙUù.4j[:u`‘@HléÜ:yOÕ{•³ì`é¾$| }q™œÜÕ…'CB|Iì[èt¦Ë/vfe0ðr'fÇåu9«‚Ä·Ø'e"¯x^9P²F]Ø"ÜãL™k‡øuö ¨ÙÜ1z9[Ðób^ÝMƒë½Ôãõ.ë¤~‰É{á¢Öñv?Ÿ®ƒõ‡¬n»wßl8-}<¦ðémQ#/7&Çö_CšÆ,çw°¤íÎV8zø°þ®ul•θ³æ]öThƒ¾¥þ‰ü¾Ï,“ҜǗ§D×|˜ÐÓÚ¡•îÙÇrüä£gDË£–ŸW7ÈÕ[>úè6:¶Ÿœ‘vÉú–ÑbåÚ”ÑáÝBBÇ-k¡c´®–?ïQK§èwo¯ Œ ·š¥j5ÞNN>•[Sà RIéˆ}Q*ÌÊfº)¼³t ýµá‘›>o*·³±åLïg.)f*(ƒék—mdɹ­î(»¤n™ÿN¾”×[­ž †\¥ÛÚúp*xpÐèãï¿ÄÊ*~ƒ8ÍZ¢(Å<¨5ánÄ,¦Ìñ1µ9,c F?{ûøçõvÜ2 >»·êñeOàÀg2ÞR]Ÿðñ¯– ªóð‰ñžs$'ïyô¬èèüóÓ«?o½¡½ÅPÇyûÙ–ØcK‚#ϯ§:í¬¸¿_uGxÆ,ÃêÐnÝ9!í·äÕÔ8Èl<ý^Q3òö´;"]ý!>áµ]bÞÀûÛX³“¶ÌÊŒ1¼¨ÞKJ„ïãÆÜ;Øcii„Fï=’E_iCõs¬Ê~ÇVTCT>žboÂs€ça™Dþ)ÑI–µ#(ª¬])"ÂÅÃÖbSÏÎÌâ´É.Q*Â#™UVVØk†×[hÔøQ:Kf@ ¥.[­½F»†û¥3æÐ=–ÖŽ-ÆÑІ‡Ž®›{ŽôX—Èp-4·nÌÚsUK~$kŠÞP ÿ±æH/¶ýKØÄuÕï‹OY?Ë—eÒÜç®Ì£¢"cñQãª÷N‘§®êÇ[‡º½£ÐPÍìÙÌtèPFSén»„)6wo-cè],åí³J­(³²’ð%nÏdú6Ä ¼êqÿXQ®ÁÞ\꺑鴖£ã›rÏÒð{<Ùã^ÑÊsMÊ.³d> qRT6RÔÔ\(¤®¼í¯€tJáãËcÜò/…‚äÛ™ed™5önžWÚ(-tƒãÖ“{‹„tæ}’gA’wÐjZýý¤ì:‚ô¹?=ÞšÙW*3ïÃüS˜ö˜ÖÇ ãÇn_$nº—±%¬ô[Y]Jî ,6ñŽi¬k³°p“y­­çm“2§‰+ÞhÔ!o®ÊVµò…Øg™Ÿ¸ÃÂ:1^ ™Ã˜—õÛÇŸä/Zµ~=3ˆú 0‚4áÈû¦} J»ˆÄ“ŠuÍ•±<ñVnƒ·bu *z ÷ ÍÿØU?++«ËÙ":1qÎZõ˜·ª,‹Ûä64°<ŽÙ—(µ¥}뼃 …¦¬òÌs—Ü[Q>Ößé].ˆ8,7dV¡Böj%³¸ðø}R//:'O>Û»Út)::©ì€ož:û¨÷‡ùt‡®´ºÄ•¼%¡£³Ï³kÕlzD‡âõÙ"ÜÚšYošKÛ‹ðÜØ+´8di§‚Æqùy+WnÆZ­oóyà´Nb“ ð˜Cëd=–„­>žÑ,Ë!©dåÖúf)'ep¯ÝüŒ§ÄOrüÂÒóÌ+çÐ(‡õ¼­ç;?þ¹4Ë‘éuLj™±4mÚPOp™7Å7Jžmî«XkÒùlãõ-Všq*W³ÃF¥“%—æìßµ Eè»Ê^—@ô,Âõ¨‹¤Û\†zîß.{Õ¶<ÊósMF¾s‰1Y¦ZÐY\»¥¨U¡åi£|A|Ç„Ë}°þØýÒ¸ý±¸ž½¤ö§Ï[˜mø+âõŽ)¾_²vsð…ãÅÙ£,/ÚøÓr5—ŸÍ.4Æãáù~S‹þÌ:–+±o6K².^,¿ñ†öÎØåOΰ'¨X«¾3ÌÚwºNV­ÞŸHoz–d¹hvÏà \|€ëŒsáð`ƒwëà«Fçð$£ÎQ8•™kWµ×ØçF(Í–çÕ7š«b2][иP(Ðet¸9=ÕR40Ñ~ñf“öª…[·¦øù‘œœC™½…Ú:º!µÛœ÷žu¯*”ìVÃÚ(¯?É›pà¥êQ.c×`éÕüšš2ƒÝoV­iÛ}Ún¨y™î(¤¦æÂ¹´àè¾"Z³Ï]’Ðqã'=‡P¡ºTö ®HÏ£­q]KUœo3ÊVŠg±*ŒâY?¹Â«qÝV΂%YÕR~LöJá:;1íƒ#ìËø ¬˧͕f·9Æt{ä2Aÿž,zÓÃà’‡%b›}9¸ø ô žg´úÊ(¥Ö.] +$<)+`xyÙû‹·q¡\£MÌaõ)óOt)uÜ4¼Ê[Iö^£4Æ»=ôD~¼®úVµè\wMO½œÁ¼Å—Õæ¤E†G³Pò|W=ÆÛŠ“–íÐ.ÞWe!¡©¶IQ1ªÁ.ÑËËÈ[^°„Óó³K˹&–G¥%ùò,Û{6¬ó?ÃÍG^Þ}ƒµþ%ebh^maåÙ«tæÕÚ“9~îœy‚ñ{¬ã¼‰kj¢µßkHÜ“ÉÉ=}aÑšti`;ù!¬û{šD¯\}SP0Ÿ™ÕE ¢û¢Xeå(›Uw>’¦yº4á J2säë¯j|p œù G™Èz›†ü˜ØˆCç°û>D]á(ŠÒÒŠUM­­êÐðïºa/F\qÓ+ÐìuÞ¸â)Á57ªì©²ˆˆHŠlhg;î_í.ʼåèÇ·ÂŽZ€È¨i£·]ç0öã»Ç(ñ=éµ²ó„Öö½.Ý…·pŒ¦#¶Ù(þ•æ÷/®¶Lî¿6;Íõ*Ó]Ø!˜7a£6,ÿªb×i èŠ6¸Xºà´Ö)åI<ä”—°Ð;Úû>jq°Z8g‰Õq³u k8˜ wvìuïé°Ky½ª€½ÿE”ÒÖºû|§9ùÜ&E®2Ðß“£ä>îÎ%9rîðlÉšvN·7}>XÞ#X5ÛhT/§0X½-–í\ü)7?çug×Ö»•=|xä†%îcwãÜÜÜ,néª[•‘ù-zmÏ·–|ýž“òâ‹L©åK›êN¸®±ˆ’”,l38˜.°¦óåüôÔÔª•ºì5×k ÷ÜR)Ë<D³É“Iû˜;r³þå¸E>=¤4H[Ì®ùõýf­ =<ë±VçX8”²½äS˜ärÛ ¾úú{Û.èÞs}ÍFTècΓf‘Ðq&/?è—Z{¦]ãÈrþ;gNo8Ÿý!/W€«•ÍËùù­*ïÚª„²Ë^Ò1<‘8„ÙßmOhÝ ,_¼=ÒèøACU Ï¥Gý<>[X÷1œ¸euÚíJ;4Öj¶kø;T¥í‡8¯k°½”õ·—¥¶>”v‡x ºíÞsÛù˜%À5À%¤˜?åv¸Æ‹›X*$¡O|_W¸/”PyÙOv)ŒËíz~;˜—Ï/ÿãw¥eIjÕ˜€,A-&ݳlvbÊ«¸çvn8ðR#H¾ì±×IœG¤+5Y=9"þÂ'/wlì³³Y꡼ÜÐ=Y8mßLw±[ç‰þ-/ ¬ÜÛ×§|èÍ=×í»£<›&ïçG°ÜÐõlÃF‡|OrjÒÁAaÓ¡·ì·¼Ê¨ïM¼Š@Ö¬{áôéÓ>W·Ÿ Å®Ý Jµ7 “œÞíÞqsùÉëb+ŒîÕBQ…ln{ûÚE\ö\*AF¹ úÞ9••Ë=‡Ï„²³óµq»^Ï;“¼;ª•c|£Æäçj{Îõs Nò²a|µ‘«;6ŒvêZñØ|BÅ75•žßíKÓÖ‰ÕKÑ Ò[ÓÏÊŸÒÅÛ²é¬h¤¨¨(Úšg|l´w¸ãV´[_ÚcíF2òñ©ú¾ç¦ý¡ko? ‡ðÞË,(çΓžÎÉÁúb¡„Þ¹ñùµç’?$'÷XÄËgòº)¹¡ÆVnt¹û¾'¥ñÅÆ©lIbÚ&#=OUÀ*³thŠYœè¿¦²±Î\¿A¢ŽÓ‚_tRü欱ױFïqý»6Õ³Í*EÂä=yY9«ô#JçE­ÄÏñÍî‚8­à–Oo²Ùú¹¼[áÞŽëmöÍ>~íšXÔE çs c¶j­Îòÿ¬æä}÷ÞÉlÉ7=´W+o½’ÂðŒH=¤S›½îQYˆ4ÿm»vÍãf^—uî_ªº|îHG-®à^w×¢pi‰Årû³ÄäGzö‡†®rÖqõ¾¥h0ö)‚ÜÓæœdÿX7éæàz®¤·î!%Ì‹š››£P_ohõ,q“ÇHoу§O÷¤¥¥ù¥ZÖò¦1i© É{èÈ~x¸êACƒznXnÿÀÛ¶3gü\ÜTR,kÕ8ñ7sìСٗ+ÍÍÌ®õôõ- Do se|ð¿YßÔdµbÅÞ•™™²ö}meZÁ.ˆÚ«ÖR$ä_WØÞ¦~§{u˜Œþz—÷Ò«–K°-ñÎ\++»|žB¶k~Šùø’Fo¡µ6õÃ[ÚñV¾Áu¯¼k1óYÎ¥ûFU°zæ»Ú7ÎQu6;õ°âÑbKA7ÅNQçë[‚ ÔÔ²ö}¬ô>¶íôæ#Ú7€· (xîˆIèùè±…»'xhàEtÔ¥K:í‰íŠZ—¸Öf§‹¹6XÜ1¶˜o8’ës›Ñ²y8¥®ðv…%LIvÍ›/kn(ð.S’IîlôÂ¥bI¨ÄÂã—3èÕ%%Û=úÊH";ã³ö¹¹½k“0Î2@»]‰‰9~øðœÊXu!ìþ«$Fosk몮z±'Ož(**~[“pñ¦áÞ½{A²Eˆ|ZRVjeŒZø›Æ, ¯¡fÖÊ8-18ÞF°zþi­(hýúÁüÁÆ¢cæOÇÖf¸Š‘ù]ºÄ™¥D…koâDHwwµ/ÚÙE´­÷ÃðÙ#Õx±æ¾Ð !èÃö`ã0)g…] «ø¡ªúaŸ›Y¼N  ÄbFö~ìxX®­*¸ú¸¿–ˆìÈanè­¹9i£ìøÈÞ–œƒ –G¦Yô’h-¢\£Ý[š»–Y°{I1]FOŽ_u¥ˆ]$¦„ÇżHµ\« 'ÊÆÆv îææ–á–••…ʇäùöñÊæŽ± ×nÉ@A¹¸Z†¦æ™›õàçÇ>v×n¸¹ý¬äü«»×§è%øùûãȪ‚ÑÛ¡¬ª¨dÈ%ä5tc_ûõŠÃ±oø¼¸—Bozª>x ÞeÚóñí ¶¯i³>¿–ß”Âö&½nuk)•Ùí[})jlÔ¶W)VM‡Õhßµ:ɽSóûQNûÅäªËø´øxÙ$ ­+û^#·»^ )Â-†×óâ–„GÄm‡Àô®$hß y~oßs“»Ðt`?Y›wŸ;{6ÖÒµ)ç ‘xg3ÿZµ°EžŸ–©^MÞlÐÛÛ çûqEyÁíU×YŠtêeã–¬¹¡x„ܧ!ìsæˆ/\ XÑÝ®ÊÒÕðÉ»3tŽ´G¼ñ®Á>ñ‹\pù%ÆËWtœ‘Žg¹¬q=¿íMä >_v.ѹswû>½tÁ"æ+è~íÉÐ=—÷¼Fû÷^®¶P¢R/çbµIA퇋7hd…­ÑN8¾”Vt“K@:óú^È®)g®†fUZ»\‰4­([pgN»+\¦ÅRAÁÞ¤¾¾Å³ÄÂÝ!<¢-OÅ{_(Ü<¶¹ÂÏù¾ú±÷­‹ Ž…¸æòŬׇ´“Û;;Å'Gˆ8G° mø,íܾzl0{ü˜Œk—_ˆØÞã2ím£ã£‘Ürî)i^£iûz£¸ñf'Ï­/Üd87fyŠÈÉòK;mýØ^½½ÖÆÞ>éme´ï¼ùó¹’’’ZJo¹?ذ„ -«­i>")) £×((£ûÓL‹Ò½]2ã%SÕ[‡µ°‰2£ö m¥ã@?ùÊ”²ãq5+޲e²T~6¾Ïçi/vÏÕYDDË“ …íÇ‹ W¥µ¶ßR¹Ÿ±ö^ŠcÕ<>b)b¯úp;Îóu<ÝùÛ¼=Ý@¡Þ/1¼ç² =#Ñì+TsCIB\|)zx£««ëÁóçº;.à·½jkc P^•56lYy¿kóÛ·ë†Þ‹Á0ü±î¾kwľþê½J¾‡£££Qg ¾»È-7l)® -¾Í[éLV>v$€–èÖ‡%SžSG†¼€ˆLÒî]lôæï6–Ú\è&šä"½TÄ1‡rm岉L|©¢’èJ‘‘S§ž47™øgyn÷õYÈ1 t˨a·¯îÚÁ3ƒ‰ò 9mAƒcûíç^AæØ®"~$26²ê2OÁè+º/vö¬=1&=/l· j¬_:—[~74|§ fç-Ru³zØÖÂöjßE@Ô†½ƒÙœ›·n]0íUŽ*†ñJuÛDwÓ–¦-‹ÞØP¿øÙÝäÂ4ãê‹RÕö ëÁ®z´»|\Øx)®Â|ZÈÍ¥Kg÷!Ž6ÇÀ™ù+”ÌÁîK” ¸Êq[ûxuÁ<μž%ö”Q(¢slu›…³BΠ¿ dwØx¯ÊÈ}Xåñnï·²Nתš¹,š½'ÖfãæÖŠŠ™óW¬(‘j]·^ƒö¦7Ôv1/̓²½ fZ~äñ‹{-?åô3Ú* Vè¥ 8oü¼ d!¯NåVž¾¨¯¸ä­tÉÉ;5Ñ{¡KÕlCŸ÷¿Se9tH:¯°êJ1;²|ÿâ“×¹!~™K˜¥ƒqšµfàâ<ËôסrçeV¢£zTç„Õ¥K‡¹[îpŽ Õâí‹Ô\úrÏåÑœ'sª¯ïl“Z ÍÒhkõÈÏ7PrrZÈŸ~âÅÝî¼âb`49‰Ô1w"z\‚¥wø„©ÉH­ÊÎmÕ|SK¦tŸ C–È\ÎѶWJg‰–—<1€û Ãúl¥ÃM×íô}„•Öº ²ŒiŸã™kYçâëÿ ʬh ldÄ%ídÐÔôD¯¶H°#p¹D'¿©«>çl°1ìYê®Sœ€Ar–úwžñêâ¿“Ù3›EÜÀÏËñª€Z8þ¨´–c¼JÙ½='.j°]Q{üà‡OƒE¦z°…ðícâÁz Jp‹€¢¢@"’i Ïïˆã‰ š‰z¹Ã²aé¶©.o$ï¹Égt'´SYü`vl6ÐNq¯÷zŠão¸ïzÊdÎf¾Ê«-ž®Vý²]£º@ïe@E^Â[ƒ+…ë.í:èãOÈd%ç™îÛ¾3%3[pÑy Ö€M.w£Iƒ@øaV©•¬’’jÜäD±C>žXúV×}n©§¤KÙT«DŸñf/êç>ûDRWÛT|eO_ãx`©ÿŠ^°†úwÎH‹øèÂáq”šèåc—Ô˜Jm6Œ:bI*zR®‘+ÑÔöf§*]Ìš7:ùÔA??¿ã‡ZàT£âœ“+åÇŸ¯¢¶Ï[i×óa“DzOË\Öv®jj  ÚžùP§•/‘]ÐsÍÒxôÑÑ {^=önØv°¹ò?š¬>TëGpQRÚ_Ô¸QSÓü~ǧ¾»TDtËÆ¬ìB]AM&Æè6Æí뺲§ÝYŒ½.×òX7½3{gá*i+ s´Ç¾µç•¯PKpñi P½PÍØ ÎrÁ›^ا÷°[q¨ì]5¡ÿUUtä5zrÜí ÝHË n3\ÄßéyËhiËM-$AÛ½e¨@^’Y}}ä¼dyDE¯Š2oñ¦ Ùyûú”I”¦¸ ©Ür÷ÝU—?õ9¬ìcÝZ´JJb¡Tw#ç FÙŽë³oî Iìox=Û Ážó:–í•鵦&˜¹{“š¿fºWSì ´S¹j+ˆ“QÙK—‡6½*^jX \F[^®ª´«†§ãôhdSK½?÷3D8ô„Î!Óýr–˽ËË·oÏ‹¡æ=FòçÉö¿‹Ýí]dСYvY@i‘_LDröŸÄ¡Û –œ*."˜Ñ5 žttù>T¾yÓåu/Ë*o›² ´ûRóF*“‘<V}-ÓøùAjBRR³rÂEb·šÎ‡ˆU¶¬ ¸z‚Rs]Õ0HUqù‘â \<1ÉS‘gís»Ä×2´t‚k^JîÓD“·³·ÉÐ< æq½ý\ù¨H%™ÌÔ·Çú¡{•È^×Ö¾“¼W7jóŒêÚŠ‚¯ø‰¯8­%wqdÙäV`žùJWbyõˆôøÆYWŸüS§Â¥ªÔÀï+S³IŒÉ÷tïsºØãb~®ÿlìúõ¹mo"|vHåÞ3AVÕ×9^Ûc}Ò]s}í2áþ Ö>SÃRß—z,ƒÚÌ®Í1rðyyôù†à#èéûB /ò³h©U¤ÁÜf“{—•°ž.DWái£¼ÃhMáÜÀ¼¨ØåÍ+oùîÈh`}}åŠÉÓ=ê—÷n'<ŸS=råæÄüêo­]ù>eqàÍ×Ò*ý–³øT–G.&Ì«ðpèÑYv~²W¬ÚÕ· Y-ÛOL.×óÒ?¸ÀUr랎ÍûÈã­BÜ÷©ÌÒœB Ââ«ð¸¥ý×îzW¹›`pOæCŨb'tÿó`×Çe••ÛÈCP×ËtεkeعÏÍ;ú©µ·è^´¡ÌSvV>G ¡îÏÜûË»7Ýr¹ßD7K,×Ùÿ¦BåQsÞ9~.Ô9_ðð<€wŽ‹‰S©Ž›û¤bÕZJå¢oiwz¢b•00p<1cÈn¨Gt]H»(sBƒ@ÙÅ|Îᦶáo¸"iÇÌêã 1œŸ¶¼‰‰6?EgÚõúMëçØÈ£{.¹ù–³œy'I ‡Ç­o×X0¾«Y{‡änÚ²4GqNÑO¼C£e ™-††i"Ð «­z©ËcÕc…ED4lÉ: Rì|ÚÃûâ#ä^l’$•7º>]j>OŽ÷ø-¯¹Ú´å:ºg%©}¸ŠK™no³Mn«Ñˆ¹Ü®`¤we×*¬øtgòž&Sz*¿ ç…ˣ¦)œ6ÛŒ\”Çæ(Ò7I»—k‹HvñFEŸF¡ÅG§¹a;“½Åµ[ëžóôöXP̆Ž}ŽÄLL,çѳ'úŸ¬8yskѵ:«D渰ãÄ>vmakÿÊxüÁv*ÕLÁä@å VÞµjÍþké#ü–Ú®úÞׯYÊ;>îЈÕkt×LPîóß½lkÀn“‡¾•úy.ÊŠ³&èêº vøù¥ù¿òêÕÒœêTžáÁîCÀç³óµùÞ±¶4Vq몡x,ï=_)C«—÷â§JÝ?¼²û¾oÞؚ PáÍ= êr¹÷£½*ŽÄmô×@oØ»Ÿ°ßâ¨Î«ª˜ZHñãeMÐnzpä…{^nœ&ïÐpíÆ›]°ÓßkÔÃÄÒÒÚîâ»ãNñrÚ·p5šT6\õ o=ñ¹ÇoœÊ¶2{ì8QnMº@Nšs\‚ÊÎ!yæ¢ì fK}Šì0QåsÓ“á§ Á»Ž]3B•½Us×®C{bw;‰2ÏŸ·iÁŠ qEEç‚t5äîUÉù ó:·×³*›}ÚcmóyŽŠ* LÂrËšœò"V •Àx}>oiÇ5|÷\®6•‘öç_·©X_ÙÔWQ±Jîþ¢¬¬rn(Iý=™½†X&O…ÜqTHŸçæz¼™çÍ@'¿’¢r˜û–Ñf“[¤»‹¬ëðEM¹õ«s Dk½ƒï_xÇgqQ”390Ñ«å–ógß°*Ü,ç]¾¹—OMmÖ:ɬ¹©ÃF©%B ‚úw¬®×føùY áä^ûúHˆñØÙo) ݦsÇê|Uóù«ƒÞB666ó89ÏLo¡w‡Ç(SI±j«Žnqå³$÷þ…ÏÕEÖÆ¢GL788^ <áç'˜ÿ@DÄâƒÞ§ÃááÊí?¿k‹ÿê©kGÙyàS_”í®’"}ú#ñ‡‡ç/qÊÎF›Ê*oV¬Â ‡êtOš?yçUñºußµù¨BÓWo9Êž{lÉÚž%R´ªkÏîÚF6Œ0³r˜¼L³_Öv½Ú}Òˆ±}¸»Bþ3{AAA±"ŒâcßZØ<ò©/C¡^=ŒÌÅÔÓâ/%"!‘PçrxÚ7fÇùC\«”›úkU¬¬¬¶X-‰r§¡4‹‚„TÌÌÖŨ…·Íú¤lÛð©ï zØ\\'‘ɲ&¾ò~–õ ╘¸:NK'ÝAôÔ©S‰.ïõêGôïÂ…'xЧú»R…¼Å¬-‹zzz®Ý Yjs‘w~éy\okú»y ^3„Eл犊Êx›—d²´4üêaðÃ’’§InèÏž?oN*ôÙ}½ê~–k·Qi¤‚u]ÊÁ  NF鹃§×ª··©GÊ 1DwÜŒ q1y÷äêÛÚ[BcÕ…2?µ],mRT\ó€+ÞÏïÄò²…L&Ö†½ÛÛÛÙ˜NÓÝo™2pé9¬û­çuuQVøÎ÷/øRºâêf¸ix¯ýþXž+8ž皨£¥–õíxYRRRL½¼ä»êïÅêg%çß%¾׿þ÷–Hüî;•¬Y»–¯j Wp•ËFÅÕIÔ¼£hm ssó4·¾5 îVYõ—ÛÞ¼©}Vþ¶2:Éã“CÙ~ö`wcÑyœ)Zžâb{ë".žeèÃÛÄW¯žÓèõY=›ÜÒ³sc˜p¦åñ½žA cä±»Ù€ÀBTâɬ¬¬f©zñF÷yyxxÞ>KZ…>|…6Úš%/À¥1úPQWc)—Æ¢K§A¨Ï“‘ݾphƒ÷¸gZzúJYYƒö]~×ÌŸNžÆ€ßýJ¢ˆÈl9²J%°éað*@çNa”ó<Ū9ösÄDD˜Ö¯_ïtVšýörnnßʨ °p$^|yR0½Å}2ðãøûš$´¦Mްw‡yçºãMÛµg1=;¥ÅÄtgvØíó’Ö}ªÂ¿Ú>ý¸þÝÜÁ˜ÁD&‘*f  Æ x,…L¥±D Õ˜ŽØIZSíþúŸÌê?Aü¯úOÿ¡þO` 'ê Ó¨ÖVh-÷/ÕÁ§>¢%µª°£mZà€Ðœ&kj£e£¡©’À¨Æ`t ƒÀd,ŽF Ð ,‹Áã $˜ “`e²J¯ðD¥´J¸µÚóãK-^´z¹­ÝQN"‰ƒŠ8‰0ÑòçûÔq_SÇC"ƒŠ%!†„¡#dB`ÀDƒJc`Á±ßRÿ¢òE áPêXöoÈ#tS;ÑmÀŠ ÿ^yB *=ù}KõÏôˆ`¦$0Sq,úr4+gG'ì×T~dž_ÿ–(þA‚8yR¸R`õÿÿTÍø×ë_©ÿge S­i?Ñëoæþ"@8Âê?ãñÀƒþòÿ¿úÿýïõÿS™4¾_ýý~õ÷ûÕßïW¿ÿ½þ~ÿnß»ïw üïéï÷לLÎq¸êgf÷Ã}3êo¡å'fˆû‰ÎŒ»MVVÓQŠ)pж±ùVfS} g2Š ߌ¢Mu0GsF£ îö›QP8BG3îä›A”À¨åÏtNˆ ÀX5­ÃL†Aùÿƒ# 9Øþœöà¿ÑÜ íãkmY5á Œ§˜2žÉ”ே€§†€ÿ}}É‘¾ I›’6#A=}júŒŒáë!SC0f2„é×C˜N a:“!̾Âlj³™ a÷õvSCØÍdˆoôÄqjˆ_ Mÿ«š~kN?Ù¼ô+~§!áVÄAÁ, ÷„mÂT+«ßºÊ¡Ò¦‚ˆ¸°ËT$®ÐÜýÔGƒ7 ‰9£.RØÕÜÉLEæŽ@i&Î}Ó¥Nú‹¬@‹“ÿëö„¿; œÂ4a ÖÁ§Õm™@¨lÒÛ~oÆ“ͦ: ! ,™DÅP „N'Rp0ŽŽÁRédO‚È ø÷¶u“WN6®cûÒ¹üçË€Tب9â¸ný8ø‚ ïˆÅ#DÐ!" ¢,…FÀ3hèX*þw¾\*I›àAü/ÉLÝ1žÉøS×üíÀâßì§ùÿ® m¾+¿?OŒNgÀd„'3 ŒÇàÉC¡Ñ(tƒ§©˜?MìOiT;Ï€&–†ˆX,™Å T™„ÁèXŽNÆc h?®iÓ4¶s˜h48ÚD C€14‚T˜BÑñ–A£ÀxôSd´¯K¢S°?&hNŸ¹õa t‡L¡ãÉX¢)$"‚Z• Љ3³þïéÌɘÍÈÉüxü ÏfF«Å Ã@#*G¤Rè ™†§€–ІLÂþ¬Wûm|"AêÑ1ÔÆÁt*ƒÃRÒˆäi]~z›c†Ôi8<ü<èÃ@O 0f8HÄA3MêèM©M4âè8  ÷´~çÁÓ •¼(°}:XðÅÄçÉ!Íéèö• ‚ÐÑÍ*[atóM~Û¹Z9u(hrgó›mìIª"ò_)šüÍÔ&êWç0§N˜¡‡1¿>4y¹µéFýr0ðËUv6¦_ŽŸùFDjb{kêäÒÔì×ÂoS¤PR¿¦ÿ¿:ÿýå ;[' ÄÍ"QÛ±pü¿qþ$ø?žÿ&ð¸_ç¿ÿ/ªƒð—õ6F×Ûø÷õ–cÓŸ0v}a•]ړߣÀLD\Xä{:ò%mÄÁT–Pˆ0Ç a1 ô“©d,žA%8lœ­¬„ ÅÿD¼Á¶ŽæNn?¦ÁX2Ž‚ 8BhD@$€ô Âc! ‘„¥€ô¿œk˜ `¬­´{Ï6u5ã=[Õwkþóñ©D,ŽŒé ŽáàM2‘(t,ÆÃ4,íÓü#à}³ú¥<ÈAA&LÄÒhx‰€æÆxŽ@D¨ "dÈ¿12Á‡áWr7µ›\ö©Äê íiðDÁ!è=U †D`i Œ›Ø'ƒüFð¸ßIÊür³ÿŸòÿT3º±1LuCŒÉ4ccsš•¤5ðéùðÂc¾zþõÿé×ó?ÿ‘O…èa¤ƒxÂ3H2•J®š„§ü²ÿ]ü÷ûÍ6côqïŸö3·PÇ_öÿŸxáa €/0¦Q(0ºïB#‘ˆÀ#2ž ±¿,äÙþÑ{ÍÿÌÜþ‰žøËþÿ/„ŒÅÉh"Á Ê€`ƒ!S)d"Òð_ò¿gÿŽÏÕÿq}rKÙØ˜fkeellê@µ3›V ˜Ýÿ!bˆ¨ÿ‚ÃbH¿ìÿ?ñú­þËwV{ªÌ÷þ<½ú0«¿«R¾.’ò—?ù‹B-qˆHÇãÀ;7ÝJ1Áº“ô-è·Âæ¿o0 ;N=g*)ügF0xq Aáıö|àÀÇÄɲ0ƒ>³b#LE)þNYpxª,xñ7eù]çûþâädncú/Ô€ù{ÿÅBô‡ûÿ„ÿåÿÿ#þÿWý—ÿ®ú/_ÌNx²¸ðn„8 64äWA˜_a~„ùUæ¯ Ì÷‹0übþ ÂüËóš:týÑ&ôýªðß\áÏü'k$Lz”ß…?%³É''Òù/j³ÊΖ :99L”EÕExJS¨ò”å7£Oxþ?a˜üîûèí/mrÄß4í/*=| -“°FPLGhV“søš3@èˆ4[4 Ù YåeÍ ©ß˜:Ø:ÛM Hv ï}#†‰c€ßÈ ’Ÿðê“>ý+Š€s'ÄZšŠ§à‰ ‘DA·Y± Ë¡©$<FpTKÅ`¿ðôÛUÛÀU;@ðBÓGØÂA㟈°Ë—“ú/+IL‡:‰a¼ÿ‰þîoI¶NN¶ÖàbXÞœ.+Ë ëC¢á_OÜñ È3Ÿúž©KE¾Y£¯Yý¾˜ÉDÄ?¦Rêpö}ª3ÕpT—¹Ž«3Ç lªzÛø¿o8þGÈÅ/EÚÔý¬UÕ…ýK…íúßîÿ|{û?¹&<·ûWDl/o÷ƒ¶ûAÛý í~Ðö€€í5hí@€íÖÏ£•Æ^®ßÿþOVáº'÷T`ú§§Ð}dyš±WzkcOŸ=¼`Ùó8Þéó¥ÓÖß]ªÖ™ÖÝezöj´([y k^8¯Þ3-Þ'¤4ÄÂkû>Nx¿ß—+l´ÚëÇŒï^— ãä‡h¼—ŽM.ûW?\Ž÷^íŠû¯¼DÊkýŠ–J—A+°~œ5Íøä ÌÉ-qÜÂO¹0}yíò¹ÖVT_Ç ê¸q†^B¡-RnæQ~B/N&!÷aÑ è&,ÏD×_̓)w÷çÚ:ÓpŽº‹xzߤäæ*ô¯„[u ÿŒn L H»üWŽ¡÷Hvë³3Ͳ[gŠàíÅYÂøîÌp©xGÅ3õ¢½ÞõgãdKþþìó£¾7̽œðüÅ0kWí:J×ÐÔaÖz½òY<ï²³ÒÉsÝA‘ÊT¾4¥æqßb ºgBŠæ–„ø†…€ZjxpU½»PÍüy¥ùt‰ÉÊ+Ó,€`[FW3Ý®«›]Í©:EUÕ+ÊÍ„7Ë|´'„ÂYpÀTœ‰€ûî4»°dn,Ýî:ð¿âtUÕ¨+¿ ‰þý!Ñìê:àO·ºzå)´æÝuÉ øŽ£ˆ£¼'2|œÄš0•#P'à:‚Fs éxLý+Dv¤„œ÷e âаí®åÚ]MÑëF²¯¨§W@+`KNT`ÎÌŽeÔ®(‚ÔLË©AjÖª©ªÍdá6É9º¶@’V5ÊœŠéÕ€•Ñ—¤¨SQk@âÎA²ˆ‡xx͇!*/¹ñW’ÔKéÓ,Ô®e]ݲ«¿²ª¤yÁ›éá(iI-Só©j™žA¦i~`qÃÕƒ2ž圡ýú ”[=OK᪠àf³ß„‚O9ÐêPpËx%EsH<zÞNÖQ_‚Ò–áþÁPœÚ®†®9m7¥·MhÛö©áœë”¾k¾p- ®ŽÅÍÓm3¯F_(+ò•q‡lçÇ5cý J;fG‡Æý½ ;÷ÉŠÉY ];ù·—^T¢») 6A7|î0]U†µ“™Æ©ç17P}ëuÚDw¾ÚG÷Q’ÄÉÃã¾€IŠûÏäÇæÐ+›P…^¸a†Ê|ÛðUWu›Ô2ÃdmR@¾Ú§y Å×FMѲQô¼¸Ô¦Œ©¦ãhŠnzŽb†aúÔÔ Co7I¡²¯öIà=Èk,§þ•Ñ@S¼l$@… ¨ŸLƒOu±L¶¢ù¦ësê¶+ªû*ÓÀCèœ›ÓØÿLx:Ίä~U²¦!â7!2G³Å1TÛñÝöLSW¨m(ªg3›{´Õl¨}}}DvCäÑÓV_›"y‚²\W×=Û¡¶Ã5—†Ã“ëœs<Fm5©F_e‚š ShlÆp8Þñ'™Õy†Ù)ÿ ŠÁ†¾/ùÆ §)Î6¡@÷5ׂÿ¸m1Ý6•)HÉA´ºÝ&}Ôè«}Í&§‹O#˜üGPpÊTÓSJPÕŒ0š"k#7‡¦©.gÀ˜t긎á˜LKUÛäÔlUÕèëþã {dÑÈÿÑ7MÓ,ï}Ëc6J w6$ªzÏ£Ú§»} ×ò½{}×uG“·ëö»‰›º¡»#Ï ×W\M£¦­ººk¸–ÐÒ.?~8?úýüâíÑÑ›Ÿÿuññ_LW„rµ ‚ckœ9L1©a¹’¯[ÜÂSHŠN½eÀ|8k×{]ÝW»$kò‚ ÒÇ¡ƒ'§,Æs!É⟙ˆ¯«Ì} XÝhtќȚ"~#>—b3®xžã¾nSß7WõTÕóUj¶Êgªûj—È8c<"£)‚AÖá4 ³ xŽíX«®«¶®:ǽ%‡z0µÕ˜Œ}µK©ˆÇxD*˜„¬AMQ³ h4°ÃS Óq,n™~àé®gqŸÚfÀíVw·jôÕ.ü•í—?"!”·ì× …¦èÙ„L`2®ª°ÀWtßµl®û–GÝ3ôÀƒ~Û$…}µK ¾ØÕ~DB˜n«¯AMQ³Ñ~7u@î8 ãrÀˆPAlKÓò¨ÙnýÍ}µK¥õˆtPŠ[ƒš"g£m0ű Ýu‡+Žp×Ñü@óÛО®S¥òY aú„|*Íf½‰OåC<ƒ[,—Š äL:R¼$äÁ9 ãp0—DS Ks‡JSªÚ,àPññ¼Ajè”qî«zÀ,ߢœ™L÷¥Ý€ÃʾÚceÂÈyPþUŽÇ‘auïuBÿš¡`#/°®PÇtyÀ Õ¦Ô²U? ˜Ñ`º†ÂœV#qjôÕ¢äÖÄWï¦8Ø(­ p'òr¹âz†bÔ7á’g9:Ð×PÕ—°Ÿé,(£¢¿]ÍÒDv$åCI6yîñÒm€j(šK­¦¤¶Qê§êø¾¥ÌР_·5MwUËU½ÀÁôïk}ÍØãûOö¬œ™Ò²Éÿ¯`Ý4Ãx“us~ž*|X{ ÖP>1sI¥•0¬‘TÚ’7Z5ŒûŒ@¯¾c8Ü *>·°ŽM:Ú7¼j*g¦´j¤ŸäI4ÅìFÎ0§U êr •+5˜ 4Ì\0°mæëùÀÊ‘ª÷Žíê”°]ìȉM°唫ÃýëóÍfØjÂ7Åöà4ôpœÀb]Èïî¾9ËlJ€ådÚž§³Àp©î-n¹–¢¾ØÌ`´š“YÝW{öRAÖrÏöA §»³j$d6DÊFþæzÌwmPdÐh¹£RÛ÷M›»U,£UWo¾îp7þ1Ñ_ÃAÒOýÀ§zUL³*¥ÑtBÄB'c$™ýWl¼ ¾¿Ú…¯¯ƒ†G·‚Þˆ¦(*y7ÿMÞOxR;eÊý(ô?¿îH¢ß¾¸õ|@Ãçÿý<Ç/ñc2†¿ÿ@+†¿I úiŒøãóþÆøõ’÷áïŸ?ßËbÓI@£”ïuö¡¥¿’•¹³:¿,LG½}Id}ßýþ0NG? úYdÔ›<ŸT“&/${“çcÁý&/ yVŠ!±±h)&‡ñ˜K<~ˆ‘gX•QóRçX),áXB,ßЄï‘Ûx"r0à™ˆ“1ÇúïtÈvãk-¢ .L†X«}cž RYyŒ“_>|"ï`áÃ=Y¶<"'è¼ }>L9¡)á•ôJ¦à[oˆ³ ò6†ÆåìÂý„\ó$ÅAiy?Yk]¬áºìàN€Òñ¥ì-ÁÚuÅ{}1UÏpüÏæ'`:Nä¢ñ+X22zF¦DÙ“¨KàIòÛñù¯?“ƒßNO>œÿ±OÂz»üšËvÂÁ( ¡YUB‡ã[þýÑéá¯ðüÁÏÇïŽÏÿ@øßŸ8:;#o?ž’rrpz~|øéÝÁ)9ùtzòñì¨OÎ8¯9»@R‚€)üÀm FŒ\ÑkLòðyx ða8çè¶ £xx)†+«Íe³¹GÂÉ®Kno¹hr»äxè÷»ÄTá:üÁìŸaAphàm@ão£8Nºäç¤<þþ€(šª*=Uþóé쀔W@v~ÝrFš•¢#oÊÇÚeœt¹¸¬Qk Åe™gb½³p¤á8žV7ŸO-‘ÇäUÈñ$„éyöÁü³­¶#÷^¥n:¬Ý鏿Î?˜›.ûYEî»ËÍI6’,­¸ÔaÅçBþåiK]2‚° «Ø½É[L >Õ]Ls’oã›!žÉA¤]IAŠwÒpFTœ‹(NQ<‡dLÒ ô{+ºÂ•• ¹ËÃç„ï|íÇdV—{|2|¸rv„„¦`‹Íø\ö^ÜKÁ\ÍRÛá­U–³NOÁÿΜŞ(\õd„-Kíôë¸+ùJ~CoåÞ†88cÉT°ÑB¿:³ÑÈŒ‘>¿–Út>Õ)Q”Ç#ƒž(™ŸP"³aõë+@ùj-õ¡*Ê?¥C®ßšz–)L­¸Lâ è¸3Ç¿î0-(bóÚHÕª‘`ñí8ðó¼–­ìÜÊŸoOþÜéUì•§Ÿ¥/tî é…ëƒIŠÑ–é Ü΂E ]çãç æ{à+Œò¹“zûdç,&ÐÍ0žÛÁJÈ!ñ4ü¥ÇUø¥ /¹Œ¡Ä$§å m :h!:îæO…ŽÐÜŒohŒgäò<Í #”Îéx_àËsÛÀ¾RR¶OÇ}àICÛm¥Æ›ØÇâä,2È%egËŽÐ' 7£[u2ÍAÛžrY£ôíÓ¡zQyK÷ëhµk-ç"¿xaÕB)Þq"Å# ÐëcÌBL”'²~X– b=MNów½žì'´×›¹“ÞËîÉ[xQÚ¼AcÆÈ¿‹[ˆ.\‡CzÝÑñU'\¿e“° @o‚ì õLa¸ùMákøN´ O¢lº¢°ÔøŠc&†¦XUmÎ[aÜ1¹xÈ^?Pᯚ…õg+E†ÜDá~Ý.V¬°¢ÁüFÿªhz~râ`ʼnd¹Ã$ŸÉ“®ÆãÑËÝÝ›››>‹¿Ü^òa?N.wÃ!ã_²îä áàr®U’&>LDöÖhx‰©ãâJgWð@¢ö¾ª¾W»“¨D^Ìnñ»Úöoêß4:¶GG¡˜íÝ₈¼ yÚÃÍ)ÀýEOŸ‹§ô¡À?Ë0ðSµMEüVåoøbø]Õ,MWMKSÕ(šbëÚ?ÈW5‘ŠüW|~%ÿ^}÷æãáù'G‘JN>ýüîøtz»»¿é‡»»oÎßß=ÿ–BÎ1&DžE£ÝÝ£R^»7ºX¶ç§»_°-_ξöÆ¥7ûlÌP~DÃôõ’fT×uåÛâYN‘­ƒÔ¦Ïöø_“ðúuçP2ëætr¶.S^åË{èIùøõ§ó·=øÁ’F~ï}:èÆàÚÚSjçøèµ;}G¦é^J>&|³çÞHv“ññ†ˆÜ/‡±ËHidç †;Ó^ƒ“ã—Y褶bö¯È™Xƒämˆee/Ï€Ý?gÜDaÚ÷Ó´B3ÂD¯Ûˆ§Wœ;5©lrðSæ —ïüI¯©¼šq×?ÿšðä¶ÿ§HF–wê½Èn‡™ýšÎ¿]‚äŠÄVANxþÍ×9‹}®ÿv£7Qý×ËbÂ_ô ôÛpŽOq¨×¼ØÏÜ€@Œo^ô1ßlGŽðWŽþ¸¿|js¹XkjÉ®r¡e"1×qdá©!a '46ˆ¯¹ô ÁC]2’‚pŽ3GSÖõw³º’ W CìL“*0üoDýpxùº£tÄïe,û Óój,¡A52Ï€¾ILkôe¯#ÕO&ºKæO :Q~ “?ž5Ø‹x/)}“ä[¤-{Oª¥M—-¶”™"O»ÜàÏðêìk}³ïf Ú¢c©}Ü&ÊtYøÈÕ‘ë@ª¢è;”ù%Eo”•+2Ërí²¤¯&ñZ¨«È/rk•®"¿™š„¨4æ [Y3ÞOᜀQ O\œU çÚÁséL§ŠlÚLZ§:zÄ÷fÚz X6t–ÇžßÑZ>è,¨¼3m=.; %òÝåMI­²ŒÙÙ)×f¦\k8çË!‘c|oÕ™«Ë(öh4ÛÊ/òZ• %`³+; ïÁ8‹1NÂ^’30’ß^êÌOP9g>'ó×s£,ÎMù‘ôvè‹ûfVÚÐësýÎóZùóîÿSw%¾qÜVÿ_Y$@šùÞGÒP­»¨l’ì¶ŠO[ˆ¬Uu$Šüï9³+íýæàŽZ‚áÕ —|?ò]|ÇþðÇ~_•‹•.Y¶kÞŸE~Ò‚.+W {í…ùg»”zñ[6M=âã®Yœ¹'d7ºFn,w¾s_Ï¡Œ~9—ªöæ[üË*@Û¬øTâ­ùø¹>ÝKŸ&i–Ú.^U&ɼêJÅÊ—ž»ž}ñ2o=™œ_Lÿ:>žæFSÀÔDã©¥y¥÷ NMS“] PÀ ª9UTA}uuÿÓû$§þ4u |·Õ‘òÕÇ4^+Bi`MúkZ=”ë Zpƒ«¡hÿj(:ÀjrpÎÿ]^ǰ®Õ纮à1´ ¡”ŠlW³ÁÒ]IEUÑ.¤bÀ ¬;®¹±»¹z¸Ë¿íVȺG.ü~ûuvë¿x™øF¸½ž?8Zy¦¾vNR4‡¤}ñò«?ÌîxUÿ³xá? § È Ú\NäX·|TjùA7û\ éï^,Ótôâ»mO¯ÛŽð€h¡]D Ûw¬ŸÎQõf#]çKã-ÃHG‘PŽK¥ÅFp$¬@>XM–áZqwʼ$ËÖ­ò´’ÍÚro02øÂ ,gÈ#£0WˆQ„œbÎKˆ¤4Úš2dƒ2wq{ùÚ§õúÝôølòa|6=¿8ºx>}wvzüþÕÅäômÝwþÉhÈN‡'»ùŽ9¨Èh–[æJqgr Ák²Ó¡ÉOkƒìãó‹ÉÛ×4oNvö di9Þba° )J%ÅÈ8Êlî65çlp²ƒÓÚ ûøïÆg“7ã·G'sÚ7$;žìɈÒ1Ö”3†-Ué#Í,–’í“Lv>4Ùáimýxüîlüêèb|\WÊj¾Û¹ÏVåþïZó/_UNØã*>ñ|Þrżl*šyϺÈ{^^ìE.ˆEm™Ö"‡²I!yt>HLD¨&ËÉ3Ë{N_¸Ñš)A‚‰ e¸E‚X´UcPÍyiÁS`Zù(Ž?L^ÓQœœœL_½Ÿ=žÂêçÏ#ôM‹3ÉÙðô§ãtJ¥i¸×–P¢ÃiíQ¸šþlhúÃÓz¢ÿÑûãÉéôÝÉÑ?ÇgëôÇ•±›G¨) €ñÆyγ„×ÕÇá—KòUx ¾ÈîÎE¾(`!Ï+' 2É:§”rœzn’ì«&+žÛdð…›‘Ž¸V Ob¥È3-¼Rµ$ŠÛAý§•ÎåiR²á3}{úv¼z$WùbÃ#)è3%u4i¿‚j5%‚â4²Š"ʲO @œÖ ¯ŽÞ]¼?O'oŽ^/!±Ê¿i ǃ4Ù\-â —éQé$Nÿ#„Õ0°¡a€§µ†“ãñépcøð0-8Eš0©“¡œS1!^{Æ’‚0­aàCÃOk+ •ưÒñ 0E²Å8=™¶§ ®U4x¤3HiëŒÅš9gø\R©Ò Ciå³yzrœ¬ØÝªs[ÅY©áÂx,¨åÈi®ƒ±ÁŠY’ DkmjÿšRCOkµê<=:9©aèæôWzxá"Y I•Šj*½tž…ˆ£2ý§vú+=4 ð´¶ÁðîýE%¸¶:vÛ/=;J'^ qúÕÉP G…,SÈ'ËyîmÖhpvNk oŽþ6žOζÂÐØé¯ñ30%é$bA'(6˜[Ç¢‘žD+sßSÀgJà´¶Áp6~súa ˆU3²©lЀª£I ÖTæÛìʇÛ.:›ò t—< äAèÖy‹Ì¯ÉÛ‹ñÙÛ£“é«Óãq«È| DÕhÞe¡@˜‹kbgVBÕºqÍg½”žÐl6@0¢–ûfÓ$ïãñ™ª6èâ‘ó*äÇ+óqr>>Þ\NëÌöéc­égsóÓ¿šRH¥Óª TÀń֠Z±”ZÂ…Ñþ{†ô÷ÁàÊ©­ÝÀÂ@^kú{{°0"À ¤ X«L²5\˜®j%]cÀ:XÀ80(oØzäak¬01VµˆŸúj-Óì,h‡–V"» ¥€AU‡ãµAß/ LH-¹êzŹ-GZN+Ä0ÀÖq‡ëcŒ.‹qé,É­Wñ„IŒNIj¬wPj1io×Jëãq´PñçùÌi•t1Ö_¶ö? … .êKÃÒfVk‚\¾ç3Øckeð('0\/{¥¸eeóbôŸÌíbýŸ“u5ú õ¯FÛ®ž]½âQî 5‘ä|)דּKÍ6Ú’zõC§ŽîÊpÚñuýx÷”@Õ ^x;rŒ5W ÛÀŒ‘ M©w”³shk@ºÆl/íð¥AIÄQ4KOŒré,ÄÈ%“Æx‡ª(ƒwéÝEJE à…åÉ5w`"‹^¸ ¢D–ÐÄ ¼!Á‰è9—3é}Ð5áe>pyý(¼ïnBð£Ÿk*™-˜¨.bP]ˆ†W¸,xÏn2vieê}kuŠ¢¢hLUb2ÛVQGm ,qÂC}))8ÌqkˆßÞoì·Æ'8–Ù[C@ÊŠÙ¨q:çiŽÖ»À‰ˆÜ)ïE:[„SÆ] ø }çõq'@à5®:-¨4¤¬ä7B{æ°óÜa+Éãù(XÄ!`bk~GÉÀò=Þá€Àk\wK´H¤Æ”„œ´Á‰ I\†œÙhµÒã:kSÖOµ§!<­‡;;ý%™h³ÛU%ª!ËêOž éEt*†Üô$b¡ŒT’Z“¶ébME>4áie*&‹Ô§!VÈØŠ¢¬*ˆæ4°¤£³(νkLÒóì)ËJI¦¢šŠð´2«A×ôù†T,«RJILJ@YX•U*÷ãIÒÙ:‡üœŠrh*ÂÓÊT¼{°„lHEUv/&a¥ 9K-2G<öÉ6§&‰ZaŒ±5Õà{œÖüDßÏÜìª=à“c¨’þãìväf·U‡¬¶Ê9+« .r»Ä*ç^)ƒ<¶\„ ±Ìºú\°¾.—E‰êŸ0"¬öº4\mYEË*–4ï¤3 é‚q˜$~¢‰‡Õ¦È¾ê\V»g—ûÅ3K”h³˪9Æ!J7qÍŒ¡éìhÍQâ<Ò3OLMŽ¡‹gl¯1êl›Á«\º]yd ),¥¬Ó”±`•”"Ù®ÄθæÚ&® lx)Në6Ü…Û_‚'d=++¥ó!2*£7XKëMÐÔ»dé¤uH§çÛzp)OkAEÚŠº(uB9÷OÔšò@„¥ƒc£áI2È@k*ê¡©OkAE։м¬ó+ISêâšXŸìkVVïC.†1—¯ MExZ *ònT,«¥ˆƒaD Ç(sk+, ÒÚÀ°Ö†×TÄCSžÖ‚Š¢Ëj?‰Bš*#w(pL#ŽD{œ²UÜ«PS‘ ¾Ái-¨(»Q‘–µ² “”c#­261Ád· ®4"ÊšŠtpœÖ‚Šª¸Î…¬î»Ó^û´…û¨y†y‡èL !Ã]ŠáÔâb48ësùMNQD6çplD—p9lw×goÈq ½‡%ÁIe@6&G°¥žK-pâ7&Ê(m.¼?}|yZ½|~]t_FzôâEþŠ?6¥#pÂ…ŠŽÉ@²ræ^/†{)×Ah‚˜&o£cn‘;'dy:¶"#d(º à¶]¨Áö8á>&–*pä\p“”<Á1‘¹–tÒŸñ6lr;¼ƒbó À$[I/º­¶–ž7viŒ0¥ t{0¶mê/oI48¨³™ïEšç°u…°Dƒˆˆh`^jF˜c¹æÈäËÝ\c1G´lb›•ÏzÝÏ̬$ +»$H U’¡°QJ!K\Hj¾Tç°®ˆ™áF¡¨*gîC}Óy¨s׊€&éVƒjG'p4sÝä:Ζְúa=ý 7mÂpklPd‰M©hŒ’¤BQh¥²‹&M¦¢…@QàŒæRê*g0ŠÜá`Eö?*¿íd™››píÿ N ¡IYhO56ìG”j¼½…Pv ¿”€b#õPÛ‹ro w. аN3³Á[¡}2£¼ÞlÛ^nöpý_!T ›¨.I+@Y¬ðPØ Ç˜NÖe*i;I– Œ-âÄ[/£Ú~ô¯f³Ÿn¦U²Áó3 ¶V¤ØíÇì¦JW4j¼Õ%AuñÒ(@æ*6˜##DGùÀyRy”cÈ;Ò†C$¸m[íc¸úè{­™ïºjÄÝt_:ƒâ­÷e!ùô¢µ€R€ª¢ºø‹ ¹•làÓír(»m_£}2v£ç6P1‰³è”w’’´›c½}?‡»;ó1LóÀ «ðër3oŒ P¨. … ¥; TfÀZ^U°Vm4¿:zs2ùËñäl:~ûa4o Z}v¾Ò´áü ´þßLy%@Ý‚:èZ(Ã@º”a @‚È0ýl P{¬Õ^ø½á¨ •ýµž%@ ‚x— €AËwçÝÝä½'ÍîïÝ£K¿C“˜fù7m¶:d&UE³)fkï}ÿýj*M½¦Õï÷Á]nd–ßÛòÎì15èéÉQ|¸vwߎ¶ILk´/3Ÿ¿ÌOÿ§ïl¾ئL|ûéû*°§+ `X}wÀ¡7`Xáß DÒ¢G«Oï ÿûó¿Œê¨ÕÑâÙb´—0íwª úƒ¾²½ô?¬+n?ùw½ùõÓha­ýiÉ·µÀ£jÐÑý§ðôôè~V}P!QM÷=Ï¥Oúœ$8¬¨óI‚‡Þ8I+!Lûq\z´Ä©È]}è§?v¦#<ô·¦ZBòa½Ö–Aö ‹ú…$3 Òœa-³©†Lh™õdÆòôé·Ÿ–Èî‹å+¢&ß¿óbiºz³Ô…ˆsîÀd¿M gRvÞÔðÐ[ÅìRÖ&,eÞ#dßÕÏŒ&ÇŶ+ïGt8è¸3Ñá¡wrdÑœ#‹B÷×S ”Lî¥È P²¹±•îOëíßzÑúpíçŠXôäÅp}g¶½“-ÈælAb ¤§Â ÖFê®ð‚CoÐqQ‡i7 ŸŠAê‡w³§Â@ùŸQö›ÓÀ€=ÀM:Ëú7 -Ã'Ĭly`VÜ»eZ«´ëëõ#eÇò}±·ú|Z²ê‡Ñ‹–%Â<Ú:—–ßßçbª.BGùžs/±›Ósë>=z’’Ù};2×£p}ûÛhG²×ó*˜™B…\M‘r¸•Ìaò­lʨäð&Ã3Ødæ*«(È)æ<±„HJ£=0ójðý‰ÚÇg“‰ÚçGïÏ“¼==~ÿ*S½©YO•Nüï¬RÂCïTÍisÕœ–QY-[ -e¯-{ȶ˜E¨,UOG5X-¥»£zc³®UfÙc­—ü_ys‡¤¬¯l¡R¦P®–sð=7›<ìïÓ첌ðCm½î+JU{÷{›ôå2ÚTO™—Šì|Œá¡·ºæŸÊRžùų{óªGFåÜò.ýØë\v ®ÜMïe«b´ùò×ËßgpÜWÖ†{¸½MVFõ¼q÷!¹«ÆÉõßæ‹]Þ-‚F®?Ž.¯ ŠöGªKfh²’Î*uL³À}’é”hÁcTQô…·À÷gmxüaòj\·xž¾;9úçø¬ÛåΜ<Ú‹ˆ½rSÛïÕ‹»­öÝ'æ¬:¥c=hÏ+¸¤kw×78ôV™Ñ"dªq¼TÙ`)ÑóÖ¬ÃÕýÖz§iÈ››†¼Ð­M߀?°Ba÷€?pèt$ÍéH ™-‚÷æé½-ÃažÞZ‹ˆq‹Tâ‹®Bê§FÎ\]Yã~^‹ ­âˆgƒET]T®f[®béµµe,þÒ4¸§¿1©A4IpÁ)"Þ™$u„PœÐîàÆøý›Æ\éK-)‡¸@Ôy…:ZË\/Z{Æ&¡júuØ Dðû·^ Vš\¹+­žÑGp§ÎŒzƒÑÞuºÏÝí¾ÖÊ<ªnÞ7ú÷ƒIßó[©;ò!nGàÖ⇽éßÚ¼±u ÷ÐjÑ6ž¡­5D¦›EDº,iµ9XRîeO\6·ó¹…‡Þ© ±æ +¤ éZ3%HH2exn^h5ÒVœ8=ЇvÀßÿä(8¿˜œœ$aó&ÆrŽ‚î8¾‹$Ú·u¬ °ïº?¿^çÑo$—¼h]rîo/Ã/¡vËÕÑ÷Oi&³8øõòþÓèîáææê2øúûFןm¸-@ D}À5&ûyŒº—°l zm;耻èèêjæÌ} ççðy–°«¢:FiÄ%` :“ªöñ}‘ƒ‹‘õB®_­³¶àÕoî;´«¢¥vØSÊF.6z,´õTd«jT÷M÷;étw‚CïÊèxìÚÓ(¥cþ4ì\<[̨Zº-–›¿¶v^ltŽ]sa<)­²”¶o ¸›bçm½™½¶Ù¹Ì][n*9ÚÈ[K—ÏZ }åÀæÞž‘-s ˈ¼užü?{ÏÕT²6*‚âÒ)1‚•’žÐi®®¸.X))7! ‰ºE•E—e9ˆü+kEÖ§,JYõYP4"*ŒtBàÍM‚ÆÅ8ÿ;ç]Î!wÚ7s¿ùæ+3ßÌP‰T*…ˆÁбX4D"c)ø-<‰ddD?¡³uã×ÿálÐûPr“u„Ið<$è<"ÑqX¢à)8*|- O%“qX2?Ñž‡ã×ÿç¡£ °¥ÖInGnÖ´'ؕק{qIÆÅLÂä2"aˆÀz4ö6š´O†H EÃh$e¢'—ǯÔäò:‡uÜ&1 ž`ü‰½ ü“L‘ %a*{Tý×™Ê_qþçoŒ ÓþÙØú4Jà D%3˜ã™ÄdA¾ãY4-"œìgJÈlƢГÀl¨xˆHÆã ¢’°†JÆAV"•ˆ†·¥apÍlƯ_ìJÖÆÕÖ6\ÉÂM†©O£  d4 " HX,‹F Ó<>ájȸõ †Ølˆ_ýÍ:GKÉí6‘ˆ[ó¸'êü5(.wüϯUpA+‚§`áI;/†3 OÃJÒ# Ÿx“h‚-±üg›ü’1|p“±„K%㨀d!ʈQÁ˜7¢PÉ´Ž øìWï_‘@ýâ–p%ªO’ˆ“`ÈÓ±2„ÃcèDð™,†HCèÖ¿~‹³êÿЗ¬+q2õ Ó‰X*ˆ.@nXŠCÀ¢!ÈE!aQXnÂõ¿~±ªÊêï,í$h a' ©$#:@†6•‚ÆhØý™‚GÓéXš~¢ züú?$h‰² "~BŠHG‘Pðþ @=, CdQ`Ÿ%âD+„ã×ÿBhm³~ƒÍ*KGkÉ©ƒ_åEöÅ«bOjÿ‡Ý}Lj€Z~þð„ÿðú7ÉôºÝ‹*²%vÊg¹‰LØÏó:}gÛ¨K{¾ä#†wõJšŒüÀNDá "† X1§Pqt2‘†¡S@9Ž<á;øÇ­_œ‚³Áæ;‡öR“ÀTÁø÷F~“ÌW\Kù¹&\îK,*[PN0Â…çZˆƒàGñ†¨óŒÀà¾v׌" ˆ(<Šk@zdE¥Ðéx"ŽH&Ó¨(ÂW­ë|ø÷ÇF}êñRíG÷‚½?ZêËp=váÚxì¦La`¡¾>’@ö€OýFê뛈ð2‹ G̪/J&Á‘L9>ÅÞªè¿ ’à&Ã}È ïÔ÷'³<µ‡?DÂB^4x/#‚€©$˜PdBÜé¾ÛȰP‰4Ýáÿ€¯° ÈwäÏÏð-4¯7˜d4‚@WÒ ÂÓ),L¥£Áôè5a'úx™jÿ<òßûŒåZï*ûAB4‚°Í pB ’]Ç"¬Ò“Åò764 4 ù±ƒ< †_€‡¡ÀíLT«°€—¯Ç¨Hf ETÊŸá¡$û°ÞÅh N™G¢ Hhr¸}¦†0âßÑÅÿÂU™ËIýïùû¼ß.¬Oö÷І!<&ht"KÁÒ1x*"¡((ˆH‘DÆ“ˆX2ÎÀ›ùÉuÀ€ÃÁ¿h"%£…aøÁðx)4•h<ƒÆHÁ3bqRÈÿ*DŠ>æÝïɳ“€ü”þFšÉ9 X†3RÛÉ¢ÅÂÀS[D!Xà2ývP!!ƒÑC2vøø ]ô†K‘=inr`@…ËÁAaØD.2:V{Dé%?(ôñüž#’=Çæ÷™b{Ñ…àá·‘ÐEá2{¾Oô“yd²¯/YZð:öpćù=G${ŽÍ?þG´'Aþˆž-øXqUˆì·Q …qâ@¾K jØUbxã`ï’ÄAƒo,!3DH7.Yg‡=ÏF·Fàº&¦)¢xía1?„"?J˜$àÍ䀠ÑÐD‘â ½Om,U|Œþ æŸ1`„qâ½KŠ ±àƒ)FÃEŠö>I4xa裡‰"ÅA{Ÿ$Z Íó™Â8q°Þ¥Œå퉾 ~YLþ ³çûDÏ1™á/çb2Iò_܆_7äïææÅ úÀ:áç‹ÆÊ C ä?F〠ß‘T‚ÿÉÿIxâÖ¯³“—S‡utùÕöÖ¤¤dJIM 1ÄDi¸k‚Ê;k©!øïHaö!)Ð3«­-Ù‡[ž±» -Þ`yátNlˬmJ‘3ö&­ÿ}ƒò–¦©Mçõw,»¡É—â“k¾ÑÏI:gãcoçœ`›Ÿ]w/å4O>äÊÁ0:§‡ßS¶ÔHÓã ²bQ¨«"ýPyyJû7å/ÿæ…e꤭›3caŒ’Õð¿õ ÷]RïÃà_&uÁvd¦_Vñˆj&%(\ñïîÖ'y~óY+u<ïŸp:¹ñ´zó÷HA>Ü »Ï~Á á‚g°TÕmm*Á÷”l”íµÆ{Ù3£.?R6!~W.^õ[ Á÷±_ïI.bºº²‘¡Ù¼PË•ì·-fdˤ©_‘yx£“¾êúb„MnµO¥9¯ezXEoØYaV—Û¢V_À(æw_TæÌȇÞh½àöÆýÜՔʸèUw}?"ÁÃZölÄÐàîYª í.߰ܪmûK´…Õéª9ëÀoû-¹ v}ˆ0sÎs“‚·K×f7Ïì)îè¨Ïˆ·–õï}SkÄ|ýÍÇ¡t†«f„÷7jÖä†ö½ý.•`“uÇZ››mÁo|àìçrigkI´lc«µ‚–1«Ò¬GÏ­h`|_)ÅŸ÷¬0äá©-ç@±óþŒ8Û,ÃÂλ?Í]Á¸Ôz!Ù5xÙ¼ø§ÛË´¤-OmνâCè¹4ÍRéþýûÛœZ¶bÅÇMß\æÖ•ÉÎí¶ï7£;9Ý!qZB”ú®‡Í¯:úL†= ô„Xn˜Muû`ËãóÍ)éAµ»UÕÕÕŸ±ëöû>¹ ƒÚ×Tšvüm1ÔçП(âmùR7víîþþþÕu¼OÞ³àY;Ÿå3³]sÚe£éƒ}¥ñªW•½½½äÜøíœÝÝvôÌ(v}Z`øÛC¡½µ±S4Yž%QÓ¥-÷ÅËÆ ©â¢Ê0Š-4>7**V,_ 2÷Âö¨LÏà·x,9Tî‰{1Äï4[úÆÒ»ÒÁ‚¯ÂØšÇÐJ(»ÔýxÛ´H©š·Õ¾Î–Ð0)kÉkB»«=æ÷ý—×½®‡nUST ]  Š_Û¾ó…õ!2Ñ%‘;í³ïå¼½ H™†Ùb—ayý°ÙÁȶ_düŸ_Ž<™S¤Î˜¯ª8OÈXËήž!øà^& §¡úˆA”Ú@[`ñ%ú-õ(äÔÈË«ͬ¾ìïjÞæíý‡Y²Kÿ#jÂ€²8AõiÓ´ü[ŸwÎcð"¾U²vršÛ’ïyçhÒŠMEƒýÍÁ…æ!² eTBª[X×ýMnaIÆ·‹Âx2ã[;C²Y¨]ů yÁaJÒÛy­yõƒÑ6"–#gkœ†hF zÜåÀÆWß¼'€r\û3¦›·n=uß{fTCKKè·ŒÎóBž8q"`ÑZ×_FO¼Òñäýö"^ÛfEi! qeScðö‡œ?à´›mªKm~pz–ªf³òþ#M"6à º²d¡ %uÏ.îhL˜õÐ%p{~M_G='¬ç©?ïO¨Â–©« Õß•‘Æ+êØ³}‘Ñ[weaë W&Ÿ]†xrYÏÝ–£©ùÌôYª¿NEvk^_²PWV¾põ^Îe¹|½y·£­%ÿPÝ(òÙ×muUø YÌO@çR6mMŒ¨OÛ¤ïò£åÁ¨\„úMýÓ§» CÚ«`¾´R—1”{F£YY$–Vœ=6 ~õ$Í”Öô6I´×2ºÛC§}mÊÛÔ›7—½‰} (¦Þên9WéZ•çèä´¿ÊÝöñâ¡klíDcöÙÆò¥œâ¦Ð…÷ÌûJˆœ-9Ô¨er`ß »aÜܲÙWHˇ¯Ô²»÷7².ž¬àß]“¸š&ÅŸûbÙ¶‡·Ä…pŠ#†nèÏ®ÐÏ+äE·(%”¹…÷½Š–UÜc•™Ï¬lñ°8TNËò/ίl–냮>+Ì6ïopÔUPÁ&]ßóûÞ¹ö›‚’°Ck¢Db²½¹iÞš=V¹ëuç%, -ò7M—“ÉŠŽÈ*›ó8¿£ávšÝ½U®él»@²pømWCÖþTY¯› Úp-nŽƒY×/V™ìÖóaÞÉìí0Z¡Ijtà™¼yÉ­Óêüíbñ}H-ËŒ$dj×xf<ž8DÜ5³t”uVœý¢6nŒû4+ߪÄ}‘ÒÞ=W¹ëuÕÊ´c8 âJgçnÖF8Ødqã]Ëχ0å{mó¯öV¸fTÖsÙqÖ/ #ú*€œ*¥pù=œ¡TÎS&m zÈŒßyŒ¹.¶iü<ýà瑲m5°T éi m?z§ W0RÁpÄ©ó;2† €6" †eWóC³ÒL Ö^¼Jv{ÐÜUmâŸ_ÓÔÔt~ÛÃ_“’”¥¹—§)Ö„óZçë´Jñ`H5íVue¿Nñð!hðÃyaÏ«íÜ1)|óióÿ\Ћ’“YÜÕõ8ËÎBíæíÜÍ/ž*ÎÚ½õ¸#RåmŒƒCH®(Åî¨ê’C§‘h_Ó,o£=óѽ©Ç -ÛZX2Q%›IšÁWïxšª×ËO¤aðU%ó¿‰*qǨY§­ËæŽ]<#êyÀMçE/–«XEîš6S'£2Ѿ—‚vÓ}ùàß,„Ñ]BC»’ôÂÙÛw[&?q°KŒßÙP•9}Ö<%é\ g/^¼d{\‰{Aï‹øÎ0X{yÈaÉì8Xñ+æbî¾àWÀ½ä  {?NhÇ- \U’æÖ0+ »€jQÌß $þí4“ZRµIMH{a¥ÅPUæ.-¡¨ýÕìFË”ÎÝ(ä3À"3^.íx}‹t‡§~Å&\~ ,Ó ÀÞnëUœjz‡Ù`ï%þ9ò¹måŒE}?Cñ¥¡qÿ謭¼·´p>qµœµöòöyWöØ_Ó(’ɨ†¡²˜µPm .wTSàË=}Wü©º*òÒG6•öÊD#yU&HˆNÓI¼†L#’4çE[¢Ô¾iP=üíï?gsq‡ÊwmM(«›!­yÜñr=ó%ÝqyLçíÚ¶Oâ^;ß½Ö¦7Ž•R eÊñÅs§Ûà•C|É©iûù¡F7Û ápöÌO{=5¥˜—Vå–@¯hH.X è²»¥ú¯íYå4í/yíÅ€%ÿ†}SRP`…„x¨)9ç8ç(«s i=XwÌS ‚žËN–;p–|uÏÒtöÔ£´o‹MVâYÚ‰½Ï£û*#6ØeU .¯ì9ØÂÑ£™¦oZtPjû"Ó§\l‘5ßg7ÕþF´e Run9í§"C«ÏVë$˫ھ?°Rn÷VBêܸ˻SÜ‘î{Nb]¾’»^WÞ¢¾Ú<£¢þÜïüÝÑ‚L’ë ]×ÝêˆIY™©Ä$ª µr?u̾Ó0ÏÇUÂTå§>~¢;J]Îæjí_esäbë2×ë©íëå+?êî»òæþJ©ÙMl].§˜–¿•_ ÆÒÚ%Ñ%È Ë´ÓÖ->Ôè¸\+¾«Ø*mýºŽ-S§8,™³×:4÷·¥³¹ö*Ó£˜‹+§–”wÉ1zÏV‡ºú=jU2-)Ú¯4׉Jî'ôR֪ɕÊ‘¢Áø™©[ðê0Ö㙢Œïªùw«öh­^4{v\ rFê-:PžvzO[yp’µ¥eäSF¬oÒ·Ó©Y;™$ÍNõ!é±s–®ƒ‡Ë«W¯€Àܨ«2Ôÿ°8=¤Í( y ˆ‘›+r:MvE*Lo$¸tß‘™ÿ÷ÊJ)—îi l÷Vµ×»÷¶Þ,ª¨ïAD¤¤»¤¤»»¤»SºCº)éîîî’î.ié醻ð}¿{ι÷̳Æý ;þñ‹µÖ0;c%o¿©·¸¦p¾Ž>‰¸yTˆ§6«¾]:–'B¾tí„zäB†îزÏQlS¦§”£ø1Jòõ_ƒJWU’ÈoWÞ>AÕÍì[šWvõGPàÁ‰Þ‡µ¼~Up²-Aê¹?‰Xšw¿Tž s¹ÌS™ð)Ê3 íÇxuȿѡþGÎÆG𱼇{|ú>†‰õS¿#¿ã3 ZÈk?…tzDá\fÒiFØì{뤎­ªßVA]• ?±à peH£‚EŠVdH×ßðDm†ŠðP »Ž? ýèƒï!¡“€#â‹¿Á|üý!²afÜœ®­­q èwaìzõR¾rv‘g1‚Úè·™$*ä¨,Q“Š¥Òä6¾*‰ÒªÑÒäŸêÆÌÍC}fÀÚcÉT =i>á>˜¥ý)P¬v Ci\TVVVRâo]«¹¼¼Œ;ÈË»Zôt¼¿OEGG›•-\¨¬h8Ä‘$™›>¾¼,sÄyƒx}â³—ï}ž¼ª¬¬üˆýÅ{°¯pÜ@À4ѳqŸK³Þ›A!!^À‡™ÕPÅrŸqÌi;\Ï–>#dù9¦î¯>ÛÜ<œWO瓼—ËD6¯ÝŒùH -Ãß Íæ'(’ý¥û<`ù8cùØO꣬iE-ëùä«?vê(oõÈQ©b ‡‡”v/™rKT¥¦-‚U¥„~3g¿˜Ã ¬²¹‘É´qá‚Z^^mâEÞÍ”‹eÈ“Ï]šóä ê3ì²Ežuù§ˆáþïøM´tÞ+ßïs¸ˆ0Ùãê~q"Ÿ„3m½pàÅ S«ßQiÐÀDô¡Ãþ¦Áƒíɹ³"EpåA ¸ [Ì€W"]—"õìÏ%ISއžÎ÷êp´Õ¨Qþ ÑÁÀ‡þ3[£”¯x†]åè2°êžÂÈB±ˆ^îcôÛÍBU)E‰mº¦ñ×§emM,ÔuÇ:~‘¤VlÏçc>@”æoP;s½.œ®p|ƒˆw3á ½Äý<ŠÙ|ƒ•u6Ë’«6r¤(ÉlÖM@0¿áZXï ¦îl7;ºÒxÃbì3%JðÝ2qªl;è7jÕ’ŸFøøø>Î=ŽW/éãÚ÷âÐÄ9aþ[îóX¼úÇÃß®q@ïa=0ý!g?ý™çj:½¾–SƤWØùØÓ®õábÁŠ/´çÓßêå…ý¯rÖlüñ Tèµ9²±þŒr4Û aüÞ‡‘{¶eŒa‚’¶q?@¨­åÔÔtw°îß/ìªP—¾©±ˆFËÖ.&[Ë.‘6eèD!óhÍZ ¾¤guõþÔå2ÃiçNhƒv‡3[ËJÅ*¡l.“žú•WºŒâŠQ¯ö•‚ýå¢^û#Õÿ‚ii©P½=üÏPü¿¡ 3Q’/éôë×A^m°´ÁáÐ~•m»œ“ñ"Ÿ å>DzÏž‚®ôäKÚ²ã Áí0©&Š“ÌUü«ò‚ôÝkêLntT’äS™ò1#&pÐÚàLÁÌþ"Š…?“ˆ½ò’ìÅI["-_ý”ÎܶˆïØìW±fÿZ§,c?‹5 mæg¼q,:L!‚Rå)IÅByrÔA£W‰Ò¿¯‰IBËøÊ±™¥5êa³\r?}#2¨ì®4<ê ¯Eõ*ÄK#ÃF ö_< ŒÃ„|Z¾2ƒH$ìï.YYY§Ó¤âé¼+û:×þ‚R8i9õElp>Z(ÕªºÈç'ƒÍ**‚»Ò®1›Œ¥ÖóytjÕMoõëÛ`L)o»–ºMß(EìO£í×¢ŸÚW‰Ãã:>_ÜÃó\/9dckAE~w™Ó9?i0\ñ… ¿Ôƒ©7͘øãÇ_÷¡89ཻw¤j5ÍÝm2„EAkRˆë$Tjz]pBŒ8Ï8 ;¼ ¢f™ÊKÜ´'Žè;¶ìF 0 ?B¼÷´s¢XšÙâr¯ ë1Šp½q†<Ê3WÑŠ¡&QL¸3H—~æÀX“ömf2UŒdæÝ°ü»‚IzVê’Î0:µŠü>at—æåÌCN<áÂÃ<ö˶jÅU`ÆÂ“Xüýß(€¨œVÅê¡v^9%Z˜É6½6]r߆‡´ïס"u‰ü)xà‰‰¢yÒ¾‹¡ÉþÚ¯òÿØOúzÜ Š 5M“f[*÷U‘{$ékÆtR‡}{¢`çÆotj¿¶à—#v´…NźÌ"¿SÄ¿C‡«"þ¦ÜDœçkÄô>‚=Ž8f {÷ÐÑÉ©QKëÈç¦+šñÏGŒ5€xÁ9Ñ#6ÏË'iXWx<® êÅ3(Ðóó·7íW‹ÿ4½ñN¶ù4 Ã83C›ÍRj1°™:ùÌvûÊ×…J:¬¬:}õ..Uc¿æJµþ3nyñ¶Z®>¾Ç…i±¸ÏWŸÑ~ó÷/Q–Ö˜ r°JðëW€u‘ƒ/ŽŒ˜8ñ€ÞøÞƒ¢\F‹qîÄU¨K?2¦fQK:¬6n1ðíÕ%lk<Ùa \!æ¢w— ‰åìëVC‰výë„öÑÿ˜q¾¿%ï@.öõ7“˜!x.šq•Xô5P‹' ùñêÇÝ컈6PP•àdÉ#ëöó8a"…h/Ø‹Üý!R ¦kÍŽCꢇZ#ôcäEï²€Òë =› e&³Êö»1t^Úoi0˜ÓÌIpL8b–µŠ­ºI–葈oº§ènꋇ–ç÷öwíº¿©Óä©JÝÒPíeûýÒÌâ¹w™+Ó©p>Âw¾ÿކ<=;{¼Òz_ÙG EŠü“NƒÝšø’ÝP€)ÎV:_i çùÛæe9dè ®o+ÜóLX?²HFì–é£ä »©b]ÿ.èi¹Ë¡ìO í_9ó·F¼‰èÀk„‡D~úNT²¹M¸£#G¡­\þT¤ø7÷(o -jj5 '(§ör4K§Íb.‹2¯DwC£Þ–ªr]œÀŽ·ŸˆrãÀÊóJÊXW.>:9™I8’ñ¥CéHŠŸiÑ÷ü…£‰½j#ï S, y_1ÿ»ëßàÆî·­Ù{—„YÆÌ¹ª¦#Œ¼Œüƒ-°ÔF€Ã“àM‡lGŠÒ6AIñÝ‘*66{B„ÍfŠNùï$RÔ²"§GXÕ²'±SìA´àîÌw‚W¢=SóÖÙÄÁ£»Ø2=SÇc$%Â?qêÚ´.ϯûZ˜X³²u©«[x|‚=Bùü<öövð ,·b%UàWëqçy©1qŬYÿõ›åo‘£ë ëͧòš›B‡¶FÓùŸ›OãiµØ²®=t³Ù¾ú¦ùNÄHV¾‚´á9’«†’—äJ¥£RŒ˜mp?½M9¿" î‹–/´®¿Ç‡@³\<òÎgþcÿúðêëòñ» =ȹEuòšþ :2oŸœÆùÙù=P‹Ð°Af'T}³{9nn’EbÜüz‰ñù,‰›¦ 4‰þf¨Õ´\œA|xµ„l=µèpïù>¨kuÉ*ȺV„ñ•wnݽÐÑÊMó ŽÑ‰šÇÒFÐÙÞÞbiKeÎ[ª|À”8+ÌQ§Ü<½ÅcKî0ªJ&I”¦@)tåTšðëPgÀòC¬ÀöÊ·ÊS¦"•ð•žÅ–Oï T^¸ŒzU¨œðNú=UºjcïPhèǯTÍÖŸµ–,›°—-ĽS´´lTYëæß¥Ž©Ý¦ø†ßf>eGX¬Íû½CâJ½X ŠøóFmÂâ §…ÿ14Üè “ÌÝÄ%ð\ àõˆY±åZlrzg22HO§Š‰nމ™>,¨Ülí>ã,‘ŸÝµgþuX×=À<¦7Œ_¢d.I¤:•(Ðók ab”̉häÑKFŠXaöÑ6,ƒAULFtâäJò%õc˜Å™ÊÃsŸîa_*U Gš\˜ä}¿Ñ«ë)ö.ræ›<òõŸ9Ÿ[x8ÿÅT8hæEòÙ˶gZ´×ÍÝšˆ3%ÊÇž¹ÒÀø |FÞc‰'Í ÿD‰víÞÈÈà4×2olÉ´:qzÁ˾qÜ, M::G€t0³Š£ˆeŸ$3¹tÝŽkì2ʹÙï„\æÀ–P£6i|(œÂ—J ¥ú!#¡!–Ã÷TiÇ»vš4|É#s+ÇV6u¯ýO/Xçb–æ<û ÃÄntÍ Êlô™°¥É™Seß‹pÑËÝé­Ø ÑV‹¢m1‘3?vzï\-–ßݯ^Û.Ô°cH‘£ZúüäÂËk`È„MƒÁœ(ÝFƒ¡T‹V ©) p$Ç{Yü ‡»’uwïÔj¡æ:ե̈́)qZJCef³~EsõDpý””e© ¼ž…Ehœ1wʼê½³FbY‹öþÃEd¬ƒàYÕOR¡­¹=³KV¶V5lì‹@gLÌ¥¾uïî‚NwA±wb*I¾ÿƒ„¯Ø‡‰ƒÜׯ÷'Ã4eös„ˆU »QïÑ£è䄼Ný 䓟Ì{°s—^Aºü”çþ/~cxÉðo §ã߬Œ™f%žžó½aÑj¥x÷‡ïŽLÿ|£u3¢<>í®uv£6Û4l±2JnU½4– ÕÌ`÷û NgpyÒ§Yìn3v~¶}%žMºs„'œØÍ¾¾Î`ãâÖùùJi„—G1ÿq5íL¸ŠR¦î+Þ™ v4ª F]„ø ™s¶VII/ó±kA„³óÃŽI ×+¸ìt„w‘€¼µ’³3;^µ¿¿¼Œkâb–®ûc?ÿú5Õ÷еkƒ3£Ç€2á„¡–y‡j¼PÙ>ZZøkv?ˆ`£Ð¤“rˆ$ ƒº~ô)­ÙMo¼åLÍ ŠzŒ êø 8L,kf'Xñã¬E.U¬ziœKŽâÇ—Hn¿ú€S ¢Fõ•¡ îãßDÞZ•Diý¼w/ÑŒô_ 㳈,êïSF¿Naƒnwn^Ý‚sçi ˜D&›²ôxû 9Ô;Q¼M‰v!KªîÖgdiÐa÷x"ê›ÜsdIÚeOt₺Øê¿“1aæyŒ}ܵ=,Äã7Ô©:TA¸_©¼®ÎÉT¥fÅ2Š?w<ô^”cgÓ$Ž<ïÞ·ñ9;C@&ªQe©ÞVo9ÕÅßè Fh¤tžmË—¼å¶?cù2ÉlÝ>‘|S‘AáÏu'=°B˜ ²ðZ˜®¾Z}'b”^“”$¤§t ±ÀÆN´C##?GÖµ¹†M=W*A,{ª‰¼ž1“Ulb–]fÏT¾½fMÁêoœéYgÞÇ‹cŸçæ§ySµRæ?Šb²wï¿WãâÐØÑþlªQRÍ£¥ž ;rJÕ—Í÷pç¡¥mÕ`ƒž]©L5²V!)U››«é'Hù >p߯¼’u¾©yÙ®`Aˆˆö*¬H皃šÜZ9 ¯y¦õMÂ_fÍ@ÊHq·Vb3ÍõË@Ð;ÖÙõ˜µ©•y•¿€Ïgšo$ÿlß(O…~EKÿÅ&1d©]äe:'S?èezE†¥RýPW°y÷(ûì“÷N?IõJÉ eñJ*yýì1Ðå’yñ‰»ŽWÞÍ‹øßœž‰NòØG6íÔ•)Œc%…XUU©D%sýï)ª×Šô¼­ž—¢Oµº±v¾0?Fr~—ØéØ…ßÌÖ…€åérŽ$è'Ñv4ùǧƒvU=™ùÿ.®èö£@ùQÞÎf´*ÛÜmÂ@¤F–0|®ö; Óõê)žE¿¾.J6_€$x,Å7¸9#…§ðôžSÒ¸¡b¼o'â3Éû«Ó$£¨ŽÏ9oš¬`vF÷@ï#ÇÆš šþúDôýe݆f­Å_îÒbfLôÂÌÕžŠjÍÖñ¸Š‡0ïXe‹Éˆ; >sEKðéëf¯ŸI…âØ ûÕ™6 j®×Ñ-£¦žæ*z@š\ A•R'è˜ÚŠM*åc,J¢4%šý¼•*S" U¶är`{Óñ¢#-Iµc»µ=/°Åã«6íÅÞ»ôB—ãµþËJæ¿U"½Øîˆî:Ì*GRô'[öóò 1:40'ÇÓoñ1®«Õ[­¼ƒºl«o½ÚœæHÞË•ÆQÆ’Ác×K’)P•Þä+KÚ—×êÈÁ.Dý2tltgöº; ¼M#xv†¦W-,øD«ZL N™BäÚE+©E³RÇöÉ£9»üº¦8»Ë¼þ^ÿM¬$¼ ôÔ?^ŽÙ(Ø\:@Àç_ùr¨~ŒŠßá‘ ‰Äj’™Ýõßuïe¢ãfO®½Y¿ëó"žÎ«­®®y5`ÒŠM)˜â»B¥ûúÈEü¥ó“Õ§ºt¢É#÷©¼Å¹’B¼+ÌźһÈOOñF X?<Ž5nÎÓé#‡D?¸GX[‡7ŸÃ®¹qÁgÚBB"8¨+ùŒI3ñ¨Mf,øji?x”syä(Æ› ¬‰ñë½qc˜¾EÖåì"¥‹ÒÔëˆË­Ø.Dȹ>â‡ÉI 3l‰ 2¥Åhsˆ¿õ0lÚ¿OÃ.þô’ìóΗdÛ÷¡·AÕ.dpÉÊŸ„´/s(ÂN9Ö¡c¿É1]’ï X¸(W,”/ß>‹ Œ1cYs„±b#ìWh˜Â®Ðô’5ß‚g~«X¢+Iõc ×B˜W—dºòõ;ÒºZÎ…ÅTkkÄ߀…×? ÙºN?¬ûáaÅ¥Og)]<')Ùš•55©^U­^èxmUeé¢UŒ‘D%"d;BÏ¿#H|²:_/±Úï— Çxª'Íbô.ZÛO{;ôžïZ•-~éb„rz5­>ßTŠ1·þØ8ݬ³ž‘ã­¥F é,þ)Þ]^8Ï1FNy3œ('0g‚4°fGà¶yGøôwá½u0np7¡Çáòõ 7W¿Sô€çqã ÿM‡Êö"'cPÖbàB;>Ǽ°ZQ'õT\üAH‹£mI¼g›¸V2>}쪗Ӯ±qSÜÔŹïש…}3‹*¡ŸËãŸÞÙJ溢yý7ˆö¸9pwfŸ ¤À]sÓÆ+q?V s gÛr؆åãŒ>TûÆoÉîØÏnñŠö¥a”FÜ¡lî:'˜Žôvº½bÍ¿%@Ù(Á‹V|âÊ#&ôÐ…lÉckµJÛ~¬à£¼Õ+((R•R¦b¬•!+ ܂Ӗ¤’1^Ú ‹å³­lÙΪ1vÏC´"õúx§CTY<„ðѺý‘÷ì mÃe°nf¿´p¯¨Ì¦´Ì¦°ô(DdÜð š°(Œƒnç!ÕsÍ÷zížg×Ä+Æ• À¶?Y:=&…<†™È¸ñl,’Ïø×6¥Ñí¿K‹?A6ß儯ñËÆ½jqÜ:'ެ׵Îy7j=ü>‚ÑFﵞÏ#õ¾Bµºt€ÐÅn¶Ô˨âwrwÛ6·]µö…HYÔG]ŠÏ• µµíé¿[WEš”S–' üÒ-nXƒÐp½§††.Q?»ñÆS»î+«Y[ƒíeÀ t±2m|hžûh‚~c‹WSe…üÑuÐZbayýô´cçÔ{~Þ:ú¹Ëû” ‹€ÞXóüer>äUVz‡á5#Ièýáot6±W¡&íÄ^Ž$™®J+ÖtÚEeUs̸Å÷'Í£YÈG‰ fø!øãeÅ[¦~´d‡‡B{Ïzõâ£só˜Å%8²Y‡~í]ÆgdJ4’ZÍ,Uá{©JUê€ozT™|ùf§š¥ºÕóïT4ÿÒ ­Áþ¶òvŸø)ß?c&[ëÄ¥XS0ƒR§L%jÁZ8!nïsY*NjSŸ~° _}[ho¾«¿î˜v°ÜaÄDÔ¦Vèží ”3åÅ.9m1ÐP¼9"ˆýÖÉ«X•W¥†@óNPŽ©ÀÐFþðcô;¿ÿ`:v%À{yºq„øéëˆ ºyFšûñRç¤âÑß½‰lë¡8k“ÊiòÈOq<­Kh§Hçµ=T­ Pð›ÙÔ_”•zÅÿ|õ2 Õÿ)¢Žÿ´{•‚ ¦•ó-ïýb=tô ëã»™Ù톻ýü½üiò©äy²3¶K®ß^“}p™ÓóYö\õ*¿œøA‘Òc ½t{.eÓd¾=™‹Žš}áJ™Ñ{iñ÷È{|G9£¯¿a÷Ãg÷;Gvt¹¹iG±ì·‘ßÕ´K>ROuâ…&2Ÿ»ò°] -·vy¹mÆ"x’ðåÊMë»Ã dñÌÁË Ä Bhaõm©*}- „_Ç¿‘»îÏ?‹”QZuóƒA ‹`‘‹ƒÀ IGúƒX}¦kk°`±i¹5½i™ˆç Ýx š‰—¥hšcÔBœ$Å™¶ï„H¬íÔA-sÜ—+wáy¯•Ý­Å U[eÖz]úV=•—)Ç‹rÏnI0Bû,.5hZm_˜DŒl³'ó²%G¾‡k„ñ0séž(öÁW¢ù§’eí䨷…³ÓCáˆ"õlñ. /CŽ«¹À³àlq¦Mv16/#1§Z³¢É·rÖûrN%½ÅA(TÙC_¯8Ì”ýDkP"„ÃùXw³{è(H{ÔmyÊø³CËg8]/K1˜~ëfÂlÅÐ+þ¡ã E-¿ç¦x²ªÔŠób ÷q½§åì è VZN¼8irÏó±ý¦˜ûÁ ·sŠ1Þú ƒnƒGR}†ïsº÷k2oêM厼®[WN$¨ƒº¤s¿¿ÀAa›·ÿ1/†Ôþ÷Š[~—õ¶ý|¾?Ê)OÚ8EzÊJëýæNz:z°«Tœ´VÝaˆh(¹áLòÈê’•¥yemW™£G3êÓos–¨(k…Ȧq%ŬtªrI9çüv’¤Š22³JùM––Íá„'¥G?ÄÅš]>P—§3çÿ ¡>+”ôL§×V3åsè…WYD@ˆ!zØ›’AGotÖ_ëÉù=ß²ò³g=[8¯®¹yYÙ^Ò_,ÕJ~ñ·ªÇï\Es÷56OyKÁæeÁ¢¤ä'D’µ.ÍqûÆ [A+Fšp„Ô†-ûH!âÎQRXbrÒ—Eñ“Gl+]i0lA []%¬¤ÔrPo‘וüש²ESúÂÅdN\‰/cÆØÕ§¤95ûùWÎù3ûÕê<Ó1ºtñ´ñéñ éå9’éîb¿S•2T“ÚÊ”ÅJkfö³]JÅ-º>ÿ [µhþB+™<’6«êáÑ\]:2¿r |R]=÷ŸüÈ.}ì0{usZ~=ùŒá1µ­ˆvV” ð•»ß•Îùçß´|~&õú#°quô|Yž¤LUk4pK½C£Ë I–æn1§÷tvâÊ3`À˜/ÇÞvÚQ•l©—µ“¶xÞùŽéB¥VÓþb÷DŒÙTšTÑaûaÔ䩿e™k«Þ“}nŽ‘ëF˜_û툴 V7»òÃí˜ËT»E¥ë‹r°œ þði!G±ÃiNF§Öâ¸3 õÄ}LTŠTqyùØ÷‡Ÿ`\üÜ¢Ž“Û¬pƒùÆßµÙýý¸¤¤2`¶B{hèf¨t448¼š‚Ý‚û¢ii¯’’F“’èŠa¶àÛŒýu#«„­÷åÜ\ê“›~¥|i XmÅ4ÀHÏ9ÿÎÑ”}#^Wè‚ý“ 9ªÍTØÔôËZ4î—¥!ä4fmS•ê-¼¼?e<ÜÝy*Ñ9¨ÑHRe-X/Ý?–Lä«J]¸'ªJQ¡eý0ì5N#s©ÏÏï[žÙ:Þ;U§IK#@rÔôJ†‰Ñ±¬%½¸`ÀÙ²¨´c^›£æ6Œ÷>Œ‘ßqä˜:òJ‹†Ïb¾@žRìˆ&Žçm©ª&´¥pG’U,ÖNM8_Af J'–…EUç3޶hFQ~fÅñ܉^Ó´Âʉ$Y=ŃˆÈÙßf^×Ë]‹õj‹VO!!.ˬ>·gÔÕ÷äì,ê´îqDXÔj£ÞǬ.®æÚ½oWŸ‘±wB¬Ø0ÛoVƼÙsG ÜN{ZÇøÛÙ‡KžL°ÚŸ.Ãøn–°º€Z¸^:OšÂv}¼„ inZò¸š¶Yõn¨«“*÷z¾GŠŒƒ|~àýoœîÈï¿g3“ï ³ æ@”om]–=ª+fáš›)Q%Üœ˜™)BŒäK°?¿[U[U¬®Ïî›Xv0³©»…èyð|p@{êªH²&—nSRí%2m§CëaUk]骯%@–ƒm¼Ð°tºû½/ÚÆ¥ îW»¬i…ms½ÝâÚßæeâ;vòè‰9=-h\*ô«ko¸Ð’Ïú/ËF}›-ßv‚ ,£sQ‹/n^œšÙ tMZ‡Â ˜>0&ÖÎÞ¿dòÌ›“ºt×p6‹•Í·fÔÝœß75µ±·oß!&‘\t¹qúÆoÉ,fï’© “ ËȂ՜eP¹Öä Ç+Ä Âvë [Ó3øÄ±ª…Ý×%>S¨ £,8RñNîÕô¬[›©©×ÒÂ/-½[*”Gš8òï;8倀ýN!@â ËÛºM07BØÿ§ôsá°ö&J4n9o¬\[3ušeA‚nþ®©¶êÖôrŸ¤¨Égàlj±Y¹Z.°lÜ]†Š9~&ôVwx~´%þè.CÚÃc¿ù2 ™å’:br>–öÈíîgã$¨®ûÞèÖP9Þˆ~Ëù(ûõªžÓŠrYÛJ•Çup*wDmÝ…Œâ’çyÉLñN\œÅ'Ó”¤9Üo°¸šX3sZÀ†ýÕ+Ÿ‰26æºCoøR¹oÈ“ÆãTtÿ»².ûÓbõÁ¡#câ*¦å‡Ûžómô±dµF}ƒŸšV®“y›‰îï(ûak C>7D¶ ¼æÎSÍÿZ¥—­à}[bÀµÊÕz¦b w¹<Ú@$xñxm̾œW_|æÄ¿{ŠçO±%—Ÿô–•6ßYé‘ .r‚’ËHž«tJB†ü5ôàcoI¥zVóâËLò¡ccaΙ yt¦j4¹’-5ËàÚ|$oQ„ìõºàÈ«<—ñÀÄöšúÅ;©Ã?‘J|ӭIJÕ!ùŸE`mÈQ÷;—; ûäRv9œKoN#(º×*€Ñý"ÊGŦ}d¤Ã”ø²Àz„éh^iÈ€±¼Ý{AÇed¬°ÅÆåo^².K2o°ÜÝZÕüp®uMë}Ë*7Š÷ÆçÃÚ–˜JuiŒPs†þ§Ëò gŒw_Üï¯>àã‚ V3Û6[þ‰'“‡Qg®Ëì˜ÿìß}çά-óašZ_#ÑØÃðgôjM¯¾ˆz5µzÏG')`Á˜©hgFÓõx|¼ZÜz4i+}hâ8òvnN¯ û¸Â ¬--°~L*Ò:Ž· ¾L¼Ð}Ç“å]~Y>²]¯ÞR1øº–Â?³B¹V•zf¯¿ ¢Q“¶Còh±/£§®ëý×ë«7¥õ©£_»Ö‚Ì‘¿ ÷Y«§åØjI/’Ÿ®C¿|îãe’²ž4º€î§ ââw|î¨ûà5Mì·“Î;ÿhò?zW(碒¥C|·M»§*&&@Ð<ÿâPFþ]ƒE–À…gú=»—Ãy¹òöNÁ]]ân2\Óï€f«íÐ?)‰&â-+>Ñ…{þt3«w´¼ZûÂ?œ´i9˜ŒÑ©×ZØ´ôª’¢èUoËéè$Ÿ¸îf>iþ‰y²t;‚eÈ”#”dÛ|ÔþöÛçj ÅÏ[ñs¼w»l±’-^÷~«Ü$±’„œ“M–sH|6õ÷CƒŽÅª#ö6ÎbÁ”÷¬Õ™(ÁÝÁm¹Æ™µ°Ÿ¨èçôÖQ ?"WU«Çãš~¸œ“¡s&G)\7™Q‹×v™?&qƒåñÂ!T¼ÖE>Q¢}xZj ˆUÓQqìAwkäü@E ·pä]=`—r?gsÝÑîìñ•+hŒԂõm±î£ân= :§:‹Ým¦E:6~ýÞN–r$t«4wö=[Z$‰?2^ï,l&£pëš?_‹ŒtëŽ ½ÜÛXeevqáWž·C¼©ìi£CJ²I9_‘¢%VN;'0CÉ Ìë”[£ºÖêÕ=ƒV×`å«7n=ÃibŽÉ\¬¢¸Œà É€XÉÆð§®ô‰ÑØ»|z6:“Žˆ‚4‚±JãŸÓӳ΢$_¢6Ç’b}¶boÿž$ Ç·Ë_˜ÁøÎj­Â•€j¹zj%õ¶ÀMŠW‹Ú´Ÿ—ÌU/DFqËPùƒeƒMO Ò¤CùbºN"jj9w‡ºkk9¯VŒág,$^&RËÙcÓX$ãó°`JÒ`0Bë[—çg·wwíêj9‰ ýƒ¥É…Ëã·v¨ÏÏUno¿½2önö1ÐK6sØ(Þ¸yY®ÔJL¯”2ÛvU;L‰@® q~eÚ(÷ùA5}Ì—(† õ‚ÉcCÞÍ%!=™ÓÍQušÌ q“Ñáì,‹B r1x|¨ùº#ÜxjØ›ÖKÉHʹè엙ȩ¼V­ú•Çǵ—ê›Ñr²«.«ï¯ç=ÿw+þ’NÍn’´g½G ƒ>­ÊN¿P€áRðÈvy™ÍíÝÁ6Ô\œ Ãíá–€wRåmMF£)x'9Ž‚‡Îü%kN&'QÎÍé\¯°,jÕÿ™l]úg‡q¥ÅÏ¿ÈHdÅjJþX´¸äL…TÆ)P6ÈU„· ¦Ž5 šÂ«!Žh~Ë—F¢C‰•-¯©utáŸ4b‚f» ÷nFùò‚ȶìk×{3›ºÚšßššx´´lßÛ×Jbú ¯§¨\™ß¾½ÜMD$ž2å3`àõíÙ¸r6UŠØ‚¨àäP=²‡ݱQYHøôíUfܶ½ù‘ú[è,ÓQGáÐ} {´Ëˆ’Gh¨&åi‹†k6NÝÎ]…š]Ò=7 òepÃ΀ÞÒnvöÖÕµ©ý€Õïq‚?_±v”ŸÖt¹âQŽ}P©ý´ËÅoÃÅt›Ë£ú1\°‹§œ½Æådo¹YîxÑE•r“NƒÉk¾Šƒ6釽˜ h''Žâµ³ÃE2WXew ’¹„'7çÌé>Þuuu¡]ú#ézU®§1eÉ\®Í Î|þ~žò… »¿fµéÊsu8ÿòÙ5]£Í8ÔPV}j•Óœ™}æd^Õâ1ƒSMÝ♹©:uO“ê7M“1Îáae)föijÊf$/Ý ;ˆ¦,r·R˜/B[‹ÆÙÊùvF+öߺø5+m*ty\eý§†fºpd¡ø·/Ý´ƒA¡¥y6‡áaYŒ?iäJßgÀ(Cî&è[T ŽðŒQ„hÊ5oÝ*¡oEó¿ÉnKk§ššßžm°‚ȯ ëÁ»Á½÷:qí™ñ(#2sPÈtyÓÔ³~yÛY=ðuÆ·»Àay|ÑLŽ.½J!)‡á—ίb„òIss¬3ð˜Ê9ŠÄ%w¯ãMÉÈ’ÞâAjg1ÍL;Ú°öä‘[R]–Π™ŽO’`H=ܯ^r;ãÍWç«ý¡Ñ`BLò5º9¬f¾^¹_D˜{>‹g F÷›ðùf"Ž6h¸ko¥}î4ñƒ[pÞ7ú#À±Gà™GK¾žÓawzI(}Ú·rÚlšûŸ B zz’&šOì_#á™=lFO¥{Ú÷ ô(o¶Ypg”ïÕjŸ K=¯™Ï•®[ö€£TTdtk ´‹ñ[Jµ‘ƒ»KUõ>UŸH™Vßȼ ‚.JvönCÁøA?aÖ¹ñ1ÊrŠB1ÍÒ0ÔÈê—>brkÍÌ#×2ÌŽ½«¯žJÏIÈ¡¤ÉÑÄ+x÷NÅÍmð<­*_q/Ѽ®-9Ùš-91ȘécHè ¸ÎΕ‚…ÏXa£oumaÝï2´þg-ÀJºQ»Z‡*A|õòмZ±é ÆßQRMþ^?¯ÒôbeMý·é„_?%Y™.„ù^´3B­ZLfÈÛ+õzD`Åm·¾¹»?½ºO'((š‚[­Ìó6×ÄjÞ¾ÏÕÓ!M6ßç4ÔÐüòËI:oóç’ fž¦æeB/åf˹஠-P6aì£x’tÁb²ˆew°¡žÞg‰Hü%æÖµ¸ðU=¡ùÚ>5™Ó{s3‰í7YOÛnó8qd¤ ¾>4UUí2Ùý\–I–¬.ze~Zƒ¤$S(wÆ>žxÀkúUÔtH$ƒSÔB}l)-æÛ9£ª-eª·º"ÿŒç.žy׊_½ê…ŽQ´÷vyîã·í·——Û ^­¹• ÓFMÊ­ºªÚ%yë{@ÊïWÑk’¢™gòò$¬Nm~̲NÌ™¥M—~ê߈՜T­æä矖,9D=¨ão#înƒpša¤LóßÑiÊÉå8aÊü¸¤2/¯8³CY”Æ·²*†l²I V»†j±í\êbJ:ß²Žv‰F›çìþÌË$b¯»6fvéÈ—!Z-**iŸûE¤¾éH#¦Ë.§£¿k³×««òÚ%Økðù0Ce:O'Ïáìì‹Òä·×m솗ûÌ& à ß_]„‚ž¾rdäjÛDË¡º ®èÐgÇ̦Mc)Œs3—ЯÈ£#ãóSØF8ܪŠ”è½z‹Ç0÷NÁ5&¡ý®PçWMxá¤Ü‰Ÿî­Òùœ¸ eçÇ…‹É.Ý÷\åÂÇEq=[»UÛµv‡Š•æÁ*\*éL[„ £ç f£t` RV©ÙÚìœú°úü¸}8Ÿ6©x4®Wi2¢BíYÒÇ ¿~ºÉ{ýp ´8߆ÂDwáok[—ÏómPRZ¶¥é¿m/3ËOAŠÖ,ØŠÓ©ô¼¥Šu- $m¦ÄuW©œ—ÎVmïçr«zR¤£aeÓä¿ùÃq‘ø‘zªT—÷ºnÑé B/èšCõû•ÖüëÃBk›º½Ëªd›$7 ÐMÇè°$oÙ¸è-މx'F Æ2(¼„×nh÷Œf&YN™†O¾sÜ-ö[‰„Í FÝÐ[éÊ3?i„V˜—W]WGÜuŸRŤ¬ »cLœEÐMIªl}=·\ê~ ÉË ´/•Ä…›tjQ:× ‡qˆþ™ÑrÏL¹[+qõüâÌVz ð>ÅCÆl´/³)¸Ea°/Kaü´Ëã÷³Væì5ó&~¢Ú7±7*7Íü6³6«`cÇÁ cK§—Fö—ïÏå u2Ý »ž[½øØ^KÈ=ë}a¶8ÚñY™t]E9¡¬¥êóÕáƒFõ…s¦;KÒïæëépüOWGÜÔhg6m·!Àc* »l”áJ}º[½ýã‡zÒvÿëpþÖ7E_UiÊmÑšž^ƒé¨ýù¾lhm„ç¢l¾ö ûáŒÉ)uù°h'ÚúáN§µÞTuš‰…ý¯nBu5MÝ–•ñ–Ð Ó‡ NU™Yòß_<Õ<ºŠŠ’梸øËÔpyña¥kFK׿I¥2ºøåã 4f ¥Ò8¬0ûƒÐab€­_F¦á³‡Oépd\yݳdè—Ž)PZSkÝxê¤ÉsæÌ¦ÞÕYÿ(döðB,§¤h!©œS:Z‹*JS*Z‹ †a}ÑŒ¶ ,?°ó°™¥§òq¥$k0•ôk݉/Ë ÷¸Ük4+Ðc0qþÄÉ[\8T^vlGà-Øû‰yW“ wmeVÁÂ:ÿ9R®·Y•š–v&.ÎbðE‘îg‘„uáœÊB+K\®u•ÎÌ”éîÈ%Sš§® ŸÄJýl_°ÿMÝtg4›OÏõ¿_˹§»˜Ìg;ÑçqOîþééšPUE†à òÇ÷Ç{Ü“‡($ï‡Ó“ˆKu19R”çýâ@|îðÃy¥!#¦¶óÔ³—ßc®ìúÕÀÖÿjȪÑY¢ ‚uE’ ³õ9ëUÝÇÌKÆgÐ#åZõ%ÒìÄ33‰/sT×0¡²:•WÖõ#‰L¢>o#Pt°¬aòçåSvV”1v¹!SÅvw,Z2X!sÍ›—Oình1ÊÝ«·87r½|¥xæÍÎ0´`…ºt¬d‰ªTŠx~ô¾cŽ*õÌË ?'ã±?9°5ƒækv‡›²°…––Í@Ó IR¡&L$+%èSÑ(ëÄ#RlNÛ•³w›0KIÕþ”PQÞ”I-â·¯Þk«6úXKbàÝfÿ½´fÂøµ ÒøÁÐÎ 3¿§qäN;Ò‡tzû3£ONNR22sì«57žú‘ßJfVUTUÙ¦|2M$ í¹_ñø´â}Ÿ<«ê¡‘h3SÄY¬ª";íFð|ÎÿüsiùÛ‰4[Rˆò‘‘Êñt‘oË{»yv|?ªa\së¹ÁÏW Âèu?Z5_TTýVŠh(¹¢ZÝ›i®.„÷¿e •aÑç+¼…Ái&I{vBT‹C…·ÜngÖ±õ=Üö¸¬z]Næ¢c^O޾mænsØ™GÜ™. u²â~@S"„%|ê:iuuqáÚÔ´´¼lC9h]]%DÌ„e$–ýŸœd+˜0ôË7Š}èxuôöòwàOУœ|Y ÃW= ›bYŒ`¥EMº0þC¡<~mXÔü÷KÛ¤ÖºkX#¼…ô#%ýÜeÏ fËxb×{÷š£ß•Δ…ÎÍ~4Õ9"J ŒæÛÀ ̧~›˜à¶Ã8ëý$æmå ;þb`@•¾úýaÎaÛßiˆû-Ö¤ËÃôôz’ƒ¥eò„ßwZOî­½½õ““•-Óoµµ´;£dé\Nüüíî7_ww¿dr`ùBöµ7±GTãÓæy˜¸1Nå'‰b¯:ƯöÖ$øƒ¼B¤ê}OüNÞÉUA|NùºˆџߪsóGð¸Õ£ÅãÚ€Æ:ÇJ9!ð®íï?x!œ+x ² RR}¤.ë§ô¾«¡äooÊÌTqŸ^X\tuS0ŠóÚ=^¡žƒÁB%‰$¥/gâÆu+x©âwï,ý…*?‚̯?<x{+#íHxõ²:Š;ÙÛ{{yQÂú }úñ—U6"GhppŸ^÷¡Ýˆè<ëèÕ{¸©8ÏôT/·g\0Ù÷dX( F@i·¶Pò?ã!¬yŸe¸ðÄÓç÷ôåOÏÔúº‹Š!zÞn ÚØxÕ–âdxIJð=^Ôëy»þùŒ‹7ÌÀξuzÓÓS‹òÖF__,Ÿ»JÝ'àêÂñ-¬‹“ʸµ^»Güu’K™žÏÚ‘ ¨íi@úrï>º ‹w¦†ñ$|} ÈLK£«iŽ$B‘(*NgzÙ¤¤¨¨pqÀž¢"œÈO‹€òffVºº"Å2¦ð÷)\\ÿìn›ØZ­ÁB|&}Ixv^ÞíöÈðÁœÞRSìüÒÒÚÞ“;‹é…Ùh‚·¬ì ßpy¹­hútlÌ4úL–_T iG7t×—áÁÁovpðŽ„lÃõ>>\~k‡àÐ<‰¾+b$¡! ÚÞ&&Ø!9p=ÛÛyii1_!\||pÎäïïš|›?u¡aÌ"{I’¢ÀªŠ))ÝÏcïŒñ·yÄïlϺôþð}‡áÿæ5öIàgŽðr­ëó“vþf;âÙ„EÈÈX>ËYµÞמç#(Ù2'+d•›O) ›ÅjÌ þ€šÄÄSx¹§ûQ ±ÑÑ”}N{N0éónn¬WðÝìå½½Yãµ|Cû=E7á„ ¬÷hÓøéy=oœ…:•(òù†âÂ4Û<´òŠ,à|ÉA\[«7»·‘¶a‡b2º vµNIJޛ#è.Ë$ ýÛq÷ „€N/u+ÊZ˱©ÉÒRZ±ˆmé4<–/ü·ðoA/‘‘õSë¨i?”{à½bcdüâPmÊ” GK:7·67÷rv#[ì6 w‡ßíÍÄ«M’èè»ÛsÅ‹‰Ü…låé~9ÞÏP|}S<##øôº1YÓ„ÈŠ¥$“þB§¿+ŸzáEÒ®Wå8ÜYö6Ð {o,µ0Sÿ€0¼C¢×㳘+K\˜ÛÛE^nŒöºµß¥Þ3¨4:TÆfÊ“yWW@oõ#iiipŒÿùq27¨‘f—v’j ÍÏÑ4ÍY0·„ òlš†Dl“ׇóŸ(d—ú¾xö„TR«þðmÐüšQ*ów 5䤚¶”öcᇬjp“¼<)‰Ò¦CØ·Uÿ~¾v~b¡ú•ˆð‚±ŽŽß xï7"vÚãtUUOÖ Ø½=åH¢’C/,h:E—UVâ?¦ˆïŠA¿khZ`e«£ ;õ¾§å¥/AæqVw…ÌéÌgÞ<ßÉAÿÍÏY8‘—‡ÈJÙ•ò~á•P‘‡´®îLO¨Üú:&ú ôæaìWú™Ð}áË‹•ñ÷˜£‰Ì"‹M»Èñt¼:­w›Ü'-xø¼²`Ï›°°£öç´È„ç{ç¸ÄÄ½Ý ™÷1ÀgOá@yå{²Š×‡IƒÕd½¨ü&ˆ§Q`lw9sœ JYûŸZia‰•ÐkJ4nŒ[L¶33æÄQPn zظ©n5R’ûãqÕX®5;@®9B­'ϯúøÌNO°¹Vä§ά¬ä`4柟Ë_°äõóÊä.Üß)¾•« jò~쉥6g·1bc«{ Ó$—„†öž‘ˆÔßÜà•o~e%/u1 u1 s5 w3 uqK[z\ѯԮÌ̧'XËI’Iâ™BL‰âAÊH„ÇR™âµL? Òˆ®˜Mü[îöǽwT‚Ø)Ai{¼ºzC¨ý*ÈÛ¥°Üö¥]€œ=YÞ˜Ÿ×KÃCÃæ´{¸pma—µÃ“w½[}Öµ±°Ð«·™ A7T¹€‡ X__×$ˆH‰¨ÒÀ–ê_ן¸qòãã«® û«ƒO×—NççÙL‰tã_éÞÊÎgj¬ŽAÌ„"ŸÂFÃÆÊL³7FM]LOoK žÁkð‚¾¼œŽÉÁA‰Ý Àç'—7ÿ^¼¯aº°¯< d^ÙXBì&55Åuw×HÅ+¦ó|<ÜEæâœ_ø07W_W+yË*ÏÏï¦h÷ô°áïŸfÝx+¶ä3óà<©‰üW2\››Š†Æèc $Mc11ç °Llmñ‘®¯ó_Csà]ÿpùÎ?ÃÞ Ø@¨77ÿ’¡, …¢àì£ãì³-.ð•›'Ñåm$üfgI¤8‹Ã6 †k±ï±/“7ð$5ÓØØdGGB © ‘ˆAxÃÎxˆèKo4?!çæ¢£–í'%™XZ†þD6&â'±. AñÚýÍmÕÞ¾üîxmmíÐ(_àã¨VÏgÍ|ÃÞ¨@²“# ˆg}=Š™Ir×±¯PÉïÃáήù…Ùwã,¬Zu)^7 ì\îq´ï÷W–ÆÇï.çØÛŸŸä0†nÃØ{9¸íÑŸ7‡èNv‘õŸ­zsÞýpVÃà ëRçø•m-I¹)çB­úk%ñ?·:_RêYV^ISSOQQKU•ù;<33s®âQdü/@ÿvWí R¤M--ßY#AÜÁ„5„öŠûŽAiŸÐÙ¹Ÿ•…sñ:11±XßÔT')ccCàº€Ã¡Óæ°º±[%:«­qÔnKÁÁŒø«Ÿz¤;@J¼aÒË*¿×¯•òó1=éêIXk ŠŠÞFKIáã û“E†ÿþ§z±«°’ýé6‚`ËÉñ»¶Î="^?Ò5â»sÄ·ú—ú+°‘²0B¹ @Ù»]ÎdZÕ×]NêYc2|395µu±W?}Ї %”é:u žnßgs-üGr€IŒŒ—1TäS·[ñoFÒ öåY·BŒønÜT^_JIß~³>3./申µ­z¼âµ·P»Mþúhá²*"7PŸ$2§¦¦¬  ð·suIc#ÔýÎù'Ä –ßxˆ#ss#Ãð|ÝM¾DBU XSü!¬Àæa&&$CLšOÑ35Õ3½¾µõ ×—îÃÝ;¸"\ÜEyÈ[Áe€(ß_AlÆ`×äJ× ºµ¾9½sºñ-ÝÛ]]W—ÿ‹A»hh L¸\*ÒT²iž/ÚZ¯ ûDâ¿÷D}ûfsü¹š\+÷¾/ZZÅ_7ñ2Œ/¯®¶êñ7e°RÏÎ@@WȲ ˆˆØhÈÏ—}½ ôždÕã«È·Õæ¾ÐP©6{2’Hé4øå¬ÊÊÇXµ¶(qÒÓSËÏZÌ*fé¼÷–™òxÀ>l«(Çáót  úöt66 :k÷Ph6‚‚¢b½ñÐ|³‹ÛÁœÜB…~H¡çRëÇó#4]½ÁÖà­zY•†¸yœFœ/ÏU¡!ý\úÿ³€È…Mdèove%ÂmÕÄUè|Ð< ùÍL'Ú¼J,Þc õ …~KYplúÐÂÊh¿°à©å.׈ ºÓ”~PEJ…ˆý;>sî@B@ƒ‚‡‚ôªþPýúM%wVgŠ1€ÝɱóÜ\'l{AqqÛåm\µsbE·ž—›k~ìO7‰ÍÍUÆ0éð`ôª àÌmŽû‡ŠE$ø'§BÓùé­­Ñ™°d»ýTí¦Æ"àôîЄ29˜«ùœ llq÷þAÕ]]­Að§ßˆW ]yžr¥äÆÒ¼”ƒ¢|‡™¡‚‹Æ'ˆ“øŸåd Öݹ–÷w<½…6½ÙÙïf$¯r!š^K ûÜÚk I:91ã EFB*{XØ}SÊ'8ü}:4žÉ÷‰ÎÙIÅò s0ôóíNÐI{ú/NŸ«ùo‚~ê:O9••­E0Ƙ£eý#¥"úԔͰ’´ëÿÌ"n $/Lxf=9S²•ç«ËÓ/~5‡g:ȺV~ ªªºþêê œÜ‹(ºV×4€Ku[ {a@˜…õ!XO{×'€>‘Ì:‡ƒ+BÂkx¢X^:T+'à÷y’gµ…A"Üö¾Ýªåv©nÍÊîÿú[@ )++ “~¨ð¡a§´×Ðó‹‹Ð¯'î/ÏwçÆx)û»VWñÏÄw‰TTd E)/?ijV e)ùù%RÞ÷ýò¥ïÏ@O—ÛÛCFA±ÓÜÌ=š†ßd6Áð}\?:"œ/-&Æët=é—@SÝÌsÃRˆFuÜ»s>wGNŽÈPušF~ :ºÛëÕt{ÿuw[±5Z;¢ãTñð½´)ÑùZû‘mYsÑÑg¬æíWxW:ºV¼\L\¼|^ùR²×ÿGï]Øc{S¹®þ#¼ƒÓÑÁΧËÂäîVÁË«ðï’|O™‰3ñ²­~4Häéi–ìe¢Ž”´˜ðù`_SòSßËXPCbÁ;N £‘¡v¹ÿÔÁ8~šæáaÿÛ·}ðüðPž9îï›\¨QÍøöØ“¯ŠS8yz eÞ4ŸØø\Î8áâÉ$“`Ð`™°¤¯V¸œ”ù2õ¦Êùð;ßÒ'|ó¯º~(4Y?µéø™«¥)Ñ´ÔÜ<šaÞ0ÿÌ®öñAê'ʬ®©ƒfQÐ{¿/âÝþ¾¦•uéÝevö!áÚÚÊOúPž };£¼EEpˆ&tº<ž³%~íc¿AÔ~ÞŒÖC"ô¶¾»@¶>ÈêÓn¾ò¼=Ë«S½Mf}`Ð_Sû¶LÏç ž‹õÕÒ22½?NÓ?õþ@î7øù‡ãé´¯Ýûr&¬T+¿L‹]ÂË¡²2?çã͉)½&‹¶—ï¤øŽç{…¼Ãö)#æ§êù3«é½k㟩­dÆ1²f^¿fÏf„í8hùÆææ£F\ÙÒó++h¶¶j¶¶p~kð÷¤Ð jÛ²²ÚW¿OÏÕ…kaq&—÷Þ´3²Ó€€ö‚*„òë¥Ù¯y…¥Öcåt”B›EbÕEØ~k‡G2§gYóeÒäö*Jâr±?ãT[̧[ZŠ‚‹UÃÔ˜É`Ã7vÆø½¯—oø¼hæÊÓ[ìÖ¾÷0P‘¢ðЗïÏWG™ŽIöý³…‹K_‘{»÷EQD==œ#¼Nà˜­´½Ø<¿¢R¨¿P¥ãU„ ÏÚ[_Mz=Yá ðÔt}ˆöíO $­ —›M[O{±@®SxÜžêÇ|N{¾ÝžwÕ–†®M©×G,ð”ÍòàáTŸýÙæ@í¾°w_?ÎýåpØ./Õ£Õ`Z÷C2)n'A %Óó¾íkóòNb½=ueQõ'/ïêÁóµyÕȈ pÎßÿª#á mBš‡B*Yxο~Ýÿè"yÚ?lÒìîÑ\5_B„ô}æ)"QA4ÀÊÑG±½VåkäÅ„ŒTëwiÕòÃðõö²IOˆ ¬{z.¹s¿©Q§¹½˜Zm»Ý6q帯Û.>!ûH_®W|á÷†sbbƒÍ6ükÂ;CJ4SS5Õ¨H°%%jÌNNêëëoï|:Z]ÍÖãn߯«/\áê4…Ò²£>”H[¶ŒÌÌdU>ðøƒ&•DDFDù²¼ î¬]ÃÃŽ“9=¡A8[oö¾Loë¬d‰­º[>ø<1ë,6aÁz\‘ðyÞÿ®dï‹@¯£ë60X˜,Çï– ÅöF‡.±ð ?ö¶Àîòö¼¾î”–»:ÈrZœ¨-G’”èèœ?EÐ]Ÿ~QÒËÉx°Õ¶U˜hÿ2O9ã7ìáëë÷Ú¾jÐ2e¾ÜÝGÜh±Tdûg?Ûä° .Øpô ºß ×^ÉÏ®ËÔ45¹ÍmÈ¥¡µ=?•€»(>¡lt¡7ûdeëî¯éñ8*xG yE¹8ÜÝ¿€íS8×Þ›;ú–šq/MM.@~¢óü¼ƒ¶ffµÕÕpðÜ÷}ã™V¿‡sâÿ+½æ«}ffë/¤â^ Rû“†¡M’…(›†wq9ºöBãGÛ—D`JÇRµðqö ­~„NN6­z5xr¢[pYkÚ½˜~1­ÓáxÕ–j/^ó`Væ›G ¤?ëËTžhrÇ40½V¥˜â¦Ï7å-@;KÌvrHØtíÂìį÷p=õ¶¦©üÏ7û3ðÀTºKÅ…ϯ«3Þ†ª«Sm@²•óð«cëhq[ž®!%-qr:*¥†¹Ùê¡­¬Üµ6NòAØd 1Àå­ûÈI;¿VåzŸÓ¹õš`ˆ@¥z•×==ÿóƒÝÉ gŽí¤8Iw5ú™1*6 íHk åÓ p_åž^ËŽÄÇoH7ýÆrb¾Zh |RH0‡>Ò uBI*ýPùã+ß+Ë?¶II Ô/›=Õ„ M¬Q'ÃðÊÊÂÐÐ plR"ÍXçZ‚‚N@\ûø,œnØF}~«Î&l±‘Ù~¦è45ÖÜÖöùrN¯Ç ònÒc{k‹Ì¡ª¬ŒŒµ–ƒµ–l´¥UUÝÝÝSS¹>>OØ»í66ÏÎgß¾}ÛÜ4 ÛG ì¶Z¨1Ÿ­j¨©qÌÉA#áw’”Ô·,þ50àÜ\^Áp¶ŸÈóhtèèè8ÊKßÅÅ)]o*ªJe6ON°Ž1ð­ô'öHbŲÃx5GpÂÚz¾X=?™ÊÈ|»PÈf¼«““¾)sÏ®•_œ>ÁÞïÌÀ&…êìïÏw˜t"¢¢…zø|ï0h8¼î-‹‰>doò;}¨O7ôË·ÄJã?K $ëdxRKáÌ,õ•½ÝaK ÓW—‘q°·ê j¸ÅÆ&#‰BÆ“ÂëHÉM3¼87'#aU N:™1+&²Ú–m×’]J«Dcs\UÑØØ(O©\-–j[Zê%’¥Y »òð.Év-Ëò¼´±1º±ÑÁã¬}âU·g1b+ƒLi‰:Û“µu">¾hŽ$Œ¸pìüç±´î“ögf>okqØèw$ü¦ËÕgݧÝlN©øp"©¼@só=:+ºúo}蔓“xˆP¯¸œŒÞîÒHŠˆ|‹›ÝÚQÛÚVÝÚüëÖ2¸´4xvæþoÄWOÄ—1Èùá¦Íß_)Io\4¦|GA7ò?:º¥EòÂ:àvq^ÃÍãù¨³¬˜z©Ù%¦Æ3ñ2¿C’%pøÚì,x¦7üÒ´Rþă%SX¬–Z»'N>K‚ˆvû­ÓB¥7VK¢n›ïýæ„4MWZÜØP)¼;·Îz Þ°ÛQSYôÿòr-5ÕZ%æFèÎhªÇñR£î Æ. 3óâ¤Á“Uþä”PÁ222ËAçÁá쎔ɒNò áâ¤\W‡-nçî*Zœà·“ù}Úîì?·Í¼ù¦2ÉðÃõ\ß‚ƒß~,¿þìCL5 cÛÎûx{>ɾúpº?f$:P¢ÉºÒݽÉÿÌikðV#+>ÍRK‹MY0EÐÃ/û‘ Qû)àÜxµYoŒ2´ñ F0)ƒÏ+,Oÿ¤¤$†ÄQé¼óƧn _˜t½0¦E#Sµ¥¦X§›¿Ö¸»¶ñnT3i’µHïÎãø‚'Q¨((ŒŒ$'ææª`•`@ˆÈÙiá•–~¼0<\URbOWOÂ\Ý’—‡ÝÅ@A±øKÀ1ˆËËý{;?-ÑW1É8S“^fÀoߘ±¨¤jH[ºÕ><š¿A¤ù_êîðšÏÛóÏÝeô„3ÿœÞ»ðÜÜûDæFAA|ÃÞÛO+££w±j0Ñ$JÍêê ·÷SàD݉ul!ýbŒje9ø\Ê"ÿ”•É>=Õj*£3(ƒr3æÊ'Mä÷ÉÄPyuó&ˆ¯£Ãë›ßóãôöR£ƒ‘H5 lC)‚ooo]IÉÙÅJM2žû£©iIs¦¸…Á†ˆµe‘ FTÂtûýiɽ{ˈ½]äÖ«…÷ÁÐüöF¹dðx^ß$­ç™5!€ðSø{Ú'ŒIç/ŠðrS»¼££uüï†è o¶““++QPšÝD´’??Þ¥ããßÿ $ˆS_îèíeâHøxtjn‹yæúðü`šŒQûê`YfæàºZˆ_!O’u;wØ‘e-èê_ Èä.8pÔLds22¢~óKˆXe€qÓ¹ÜLo=ÿ²Ò÷¹LªøWoX>@¼¡ø9J÷”=\ˆ |<ÌädÜ“a˜—+„³cpX¬3'ôŠyY~ô§#Í(x¹‘¹ª­íh„݇Ça›61b Ð9$–×]A³ô¿CûS7 %B"accìîθ´1ý ¸mff%˜®à®Ì‘DfRŽl”N{‡ƒbk§€ýýmtêð0\LÕéÞJÃk:ÉǽüXpՊЯþûU¡_õÕ/€ë40”{<í3áæ¦V4JJHð|8]ÚßÏ3 ïî+÷eåùw«oÓˆþœþQPV¾¸;(w9 è†Ãƒ·ÿÊŠÏPà êùK±ˆ:ca¢é,/T½••Õý?)ÒVvv^ÏV=½z2©¶òRkb…ª¶ìˆsSzAxg³è¨…8ˆ»ä;©÷Xr.wüõNŠŠQÛßfXSÆ<)(è,¹moÜ|Š(SVyÔÔytð~ÚQ+³ºÙŒv8 p¹?Õ')j.M^Í|ŽKÚ¾,#¹îýx‰¢È–bes¬ÞxæjV°ún:>Ïßz‘%5$\(“’~|bâ=*j—>>þÎXºž†Fðh__ßX«Ô\Í$ë¯ ‹\¥¯¬3Ó’s~E…±e0*JÔP04dü\ß™'-̼‘„s¹^ÒÐÓó9]…ï2Nx‰ijh˜­¤éÔ pš^ÉGSI+†¦4–Ç㊆)ˆ«€äM‰Dœjjæ:Ï<ê…zñè×Û¸_ 𒳞R³âR—4{¢œ¼iº>°ñCí_ Ckk_ßÙ5¢Ó··øìOÿñº×!A4øuN¡ÑO)ïœmÚ ‡*àýföœ—îí²DAMð·K ºžùjSãQˆ»p…y5¹Ô»žéB=XhEh^÷ Žß®'åoÚU*·‚™&ßä˦TÏ£Ám•Ö¯X˜›¿‡…Nf³¶wpذãxûöí$½^–x¦¼j¹îòìl lÇ—o= ”1>…gD•––ZΖd*²àX-ÔZ[[¯¬¬`*N·´ð¼¶Ã3­žÿA Šbaa‡‡g‡W^T”ÄnK¾Á•‹² Òår¼D‡0AF5éwU'ÈÏíqe¸‹¢²ù•Õc1Éh9ó…íü:=-?ÃY¶©ûï+'ï¶åÚ,7±šYZZÚÚž¤û<%ŽKæ=o¤Â£âõO=Q!Ã:þîøÌΪZ¦=¿°R„Ëa—Q[ËÔÕh¿B%vrj%¯©Ù·ÖÒj*g€ä]œ‚ˮˀ…AÐ*Üd”Ú)¿36Z&¤‹ÀÄßüe&´GYÒ W:¹v©<³½Ã )º¬6Øq£¿„¿ÃÚúV¬ P5[[µ‰}Ñ$a}nÖOë¡«WNyËŒ†½F&&y¹¹AA/ßÀAè}³–ÀhXU]íÆ³²9+%›À ÿîÇõ²ËÄ:µjMMM ¯Ç,è­Ø¥Jþߕ†ÚtñCøÜ·e:Í9–‡%66tîÚ_xøøøHH^õú<œ‚ƒq„ĨJŽccÕ4k~´Õ?j*íHZž‘|ÛT1üÚÏYšì×ÿ7¤KËËñôzºŠŠ€Ž>RPPQ'>E¸0I!æD\/㢣«(+Ǥ¥ààà ¢úm4õe   Eàq®¯­e.ÅÀ:™øeŠV/‘1*ÝÉoÆñ«<í ÃÌ‘šÅ‡wz:<¤ÚdÝ+™üþý;³é( +«5¨d?sTtß{Ö vÅhÈ·]ٜӯ‹ Éqq³·w6÷@ý爣†’1›$°ìM¼±)f>ÊËËËÚ¾ÆÖÖ1(:--|4'7×Iurn3•†Ž®÷‹6 *Ù¼U] tif`ç+X_»?¿ Á›ãâ7\•••­­iÿS‹Žú00GeªƒZêÍ6–&.µŠßèh:2^bÆ°Š“ 8d«‚É5CÞd[8<<¼½m,bÿüäEöHxb”Ð'NèÀ‘rvfïèy¾-ƒä·Áá×qÐ]KK‹ EBI µìÕþ0 I¤ëz·ÜöÈ}ž)¿Ú7’à`Nlä ^úò(Ç5®o™£é©:-ä©*’)1ª_±a¦È©^][îÚæÔ¼}5{>ž*nŽº× Y_ûEŸ‡M§î0èý>+[Ì(’£E[ÛJõd&æ!wÁTóxW™ÉIë—‡LйµµŠ"JjŒ8)SiII2Ù[V4Œ__fKµ|}}¥âhÇFFF"##wåš²cíÿŽ8ÕAâ¡°¬¼Š¼;ÍŸ0ã?Û˜çâ%Ø" gÔý_6G]®™¾^õ‰ÐÇ ÔBìùÂÃÉÉIBbpówm(žþD‘;v)'@ãÇ’ÒR UUUGG–XÉTN‡í©|¹/èòlÀùksyuÕZŽyÐd2/,LåŸà²ZÈ Sïu:Aú¥ðÇjÿ èl£éh‚ÿ{d†"5|’ 2žµÛŸÖ#øÓ@3àQS;\¾ÌŠxÞíÙâ²I#ÂÚ©éi"ý±oÜ%¢¦ššŠîø¼¹¹™Á ŒNjlÎÔÞîïîn1¢TY Ò¿®•'Çj¡ ²+&Ö;ž)¼ê¶ƒÿðìñáK‹×ý€¯3W‚vçCõ,#///Óפ(Áõõ×ùéÞI{¢È¤$%%Çå?QoÑ–¼›€~)´ãw–ì 8/©¯ 1ý*Øœ{†x;ûë…<‹ag@ˆßIqrs?_-ÚÒÒÒjÕÛô0”TV¾W›~>• |ûE @0Ås'ÕE×m+\%Ð&8¬[ƒ±á„ÜÎ%55¿|¡tuue‚å}Ø(iJL*ÙRyÜôð‰SOÿêÓ»9õh%ÖnÆÚ|(Üü‡`Š{zįsÞ4wÔ‡üzĹÃýhýíë%#…â‚H“J”?²qõ"¹CžiÁ“&&æÖë…ÅÅ—¢¹jOô—þ|mCp}¡ö ’ÌX;·ÕŸ±¡4‚°½ÏÀš„Zjy úZ£DxuL•®©ãF‡OOOJ´Á…ZËÅv«ß™òG‡‡ß£>…ãžeÉSVVVv—•Ÿuà144,T¦Š•$csJe·M+-¥­<(–ö “ÿ¨”‡ÜéôŸx11PÃ͇]Âÿ—xÿÑD§ç;•ÉN­ÙäÝ€\ï‡ÓOànÈ£Ý@skT› à²Áÿ7Ð\?Uý8æggë¼Ýq¶ÿü©p=5ØD~>ª_}xx())zz8—ÛÊùÉ„Ûòè¼ôË÷¤®öítLöO9¾Û™!ËóPÌ\åÐÿ‰²‚za rŽ€³sÝÅgö6…÷ zÂ>~/AÖ±DÝÃpԢ朢U~v‹'‘ÅǺ¹9ÝˆŠŠ2ŠIb}—šÎçÅi’k Gyâ ó¤­…Õ²ØÔØÈKº™ê²Ò(R“—wõó§‹óQSA%Š1qfF¾©±q引c‰ÎÐ~ÓóUËÿ¬P=3sÕȃkšwl*Œå9«g<œqž’)ÝœøË¤†îX½ç¨Díö¹Måýò´$AÕ¶„ŠXM]°E.æO¦j*œß‡¥üQÙ-Ͱëñz+ü6K+³³á+?ËiὟbÄΓv½ÿ ˆ‹úѯ—žH_s o/ó5Ks§R.¦äÇ—••«–ZX[£Ã$³Ûæ)>==ÅÓéH/CJN~u0763ÃJNž×ÚŠŸÊïv–“ŸŸ_\|0‘ýi"±®®®ÖrnÒŒÅÅåÚé`¶¶¾¾zÞ ¾ËŒEÓÛ»­óV N«»ÓPmff&U·@õ2À—•ÕÕÖÖVVv0^-ú½Aª«¬Ô¯žÏ—K'¿ˆW ‰ô‚EPPßAR\\~)¾¼" œ­í´·ÀÓÁÁ¤#Ï+D?AžøcŠèGGÇáá6––ÂN€1åäÆš]NPja:ëW½»ºº–—ñ[™÷2·à¿øá`NŽ\tÁjŽ‹«¼&ÅÑXjõ`gc««ªªª©q\¬³®6™¬ÃÊ+ÖÜ{ýŸTg'å%ÿ¿ÿÕÍH–ÉOÖ4Ç\¶B]žtÍP<Òó°îVÓÓ9ÙEޤq1ž™ëé½q¼/Žiƒ%ðÿf!çúk],øÑ'05=g-´÷ãåë¸c©Õl–"£¢Î:ÞvÉP+ÓŽœ§5Zmó¤Ónø²!fob ''è>›…š·©·»¦ûDE/5=r5ñ‰pkkKKUAaí訴"P®LG«â3$±h7¬@2rr11±¬è—ï g1“—•§EFE6#Ëþè…ÿéfcŒïž†ýzJ޹ÎZ«žNO_Ôa{XB\9X”´bþÐêÖU¦ž‘±ñr»ÿÇ{ÑZuV‚Lü/ev +èùt»AÈßæq}ÜŠI¯Ó$Òp7«Úq½ú|{wšj= ÞgS|²7,:5Eü§I³ó‘½£ã¦¨ 48cpù»ž€éÍr#vM¦öòT›"lê’_Zâ?ÿu÷µaKÿÕq¬–Ý“mp¹v´3Ê»°æØ´‘Ÿ>Êíý°’+%ç!ÜÖ–ýᑟ‘qBä=³Éðøƒøt$£¸cŽuf;6 פ#àa® ÍT+¦ÂÂÂ]NÎùÅÅä®5PþÙÌæææ©±——¢¡¡¡_ð0C{D$Ø’ii})% 2+ „ˆñ8쾂7çæ®q™«¥ú“˜8¿´D)~¼ÚN_ûã$$ädã"HVvŽñ&=,Iäw±ìå†/P}§€üŽ–›1ý»Öbâã³7@kÚsà‘F7p½b32Ò7œÇÕîñîrT™„á”8qùìt^SgY$¤¦~…‹Ï󯇛Ë?Gœù0nîƒãßø øR(¯ ü½•a  †ëa`4ÎIÈðïV>s^¿‹9¸;G<Út(®úééù#]ÙÙ-̶œúo„Ÿ°%;ö‘z>IÑ[OÛv»zíÞ º°oï½½½Sci>~ì}Ž˜˜ô„û¨£©I"2oì»Xo[®ÛêÞÿ“ E˜˜å?_(++»[$"('s33Xxø˜8òl  þtø·#â°4÷ ¢v8_M¯Ý€Œ‡ç n¸+)û\TTôøøØŸ¸5£¢¯_!5CBB¾K°Y%ØÇ§…#N¬uÕÇÓ`¯­ä·ÕLOgIÅ+úܬ9IIM¼þï¯ÉLÑi¾‹;«áÝÅÏ•ŸÏO÷Õ¼ƒzõÇù XJJÑe>ÿê!¦•.Zô P+iiið0((Þ¤ŒŒ•¦Ê~ê›4¯zïÈ•úóׯé÷¨ÁwÝ}} ¾/þ®uQȦdL˜ýÃAV’o73ï Ž—›)¢›DÄ ÑˆqʼnLK[):)ɤ¬Ûâz à,[,Ì€«;Æ œÌ¶6>2²× õõ‰•B››=!¹âœ=q)NO?Ö֎ض²†£™ß_ëá²|guÚ‡PÌüªzsX=F‰Ñו³Ír;>þþ—®Øë„ß¿!„q¡,Â-wI‹~™4˦-=7Ÿ<’ݲ±Åéù´‚:ž.|Óª ð¿Æ’c,éZ‡•tbžê!R‘DZÄfæk`Ímc™šš•hÖZ ÕGZnëÔÕÍÍ)8è…êêêt^:÷Ë}ÑP 'ò¿3«Mdd_£@}G! ¤¢ÿúâ¹Ñf9Wæää4räïïŸÈlŠb`ia1<2²¸°°âu­ß•””„6K€‹Ûl5_U¬V~vûZ©fm‘Vüª†hö§Œ`€úbÆÈ¡´ MN–ºº@àÒ› 'œnÅë Â>¯~gò¸Ø(R)¶°´Œµ4þÇíìÒû™jFÐK‡ày¡vÇr¶%§²ë«P¦Ù¡D0¨ÂÀz»PñtÌgPšoS(ëY¥s܃jr"ôåqÑÊŽWž2î:gVK §À—‚Ð¥óŸLå#ih…9©–ŸùÒƒšÆOvÿÊè"$Ð%`:…8\&!ý-íçOyyù¯áÕUU¿­Ø"u’ÑnRü[P¹ÏZéeuX(ÍG&ª,!AZ»÷pk¤˜óÞ¬rëõ« Ów¹ÂÄ´@‘kiár­.,4™ŒàÑœ=1[¦:jˆ¬Eû<¸û‹]¼¾ÖÖVFølÅBÐ2â áøÜXð~~] «@p£¢ €£-l_ì¤û\Ÿ[ÚØÄݪÄšÁoÌÛC‹:È*ÓŇR/p«­ÄLòÏ5å*C3ÇÐb{¼üq<Žñ……¤®5íFû×}§¬–³4zmx9……½½ädd¢úæŽÝKbµ¡-Á[Ö9Õ¨…!X“žÅvÐ’æÑ r ëL×¾æSäììì€y~þ$Zõpê^7‰vgòäÚÀyÜïF¥ÁÊÄã´‰NºfˉX÷{c{sß¾<9)˜%}¼:–9Å®ÝtQs]4±_è>Gž4±³œi»ÍÒçJõþtÇ“¢¢"·óíµÔ1{¸byä̓XlI8tÃêy³¤ž/-yy½¾–1‘bxýÃçLC<*Žäpøû$‚¦'são=–Þn‘™YUfæ¸íZ-ï[%i' –ó{ Y·)Ílò÷öÈz//jkü+H®8ˆ´ ]˜X³ÓA\/kÿ§€¼øùgœéèCuQ©µªž²”TPújÝI[si%vÍï3>¯Ü(öJ†N†u§ÆÚ¯fo©qµå´WAQ$•÷þ{Ï‚²íÁ±p•˜ÖÓýIû§…@D|àEKÿ#PSS¯;i[Z×Ö²†o`÷8*®1 -,hÞñ†![À¬Õ'&b§QHRµ¬€³bq5Ó|xmÞ¼¡Ó(ÈÍLvª–:ÂC¦Û\:S¯öŽúøô·E’PTD%%%U’©/ñ Ÿ±>ÎA%‡ÙõÍC½{éImH0«ÀA…ŽhôðLKç^[W÷߀ËÎò&¨1ýÉQ6á¶.fŠ㿦àyºŽJî`hlü¡ÑÀX\Z:wŠýáÖTµ|vÒ£`¯ŽB(ñþr€¢æMû´‰Hr? ­¶ÒRëå&'eª™ùùÛÒú•ýݹËÙÙYpÉ@Rå*沇‘y‹ã%³ÍÎb,þŸC†ë½½½åmwT¤¤Ð^¢ö§ë¢...1Ówjþÿãþ½¶mÆxÒdÝOF²2©8Å÷ÒéÑþýD>%KºíWÉééé±±*ââýé>Oà ª*+‘á¤ö“//²;Óˆm Ø&G‚•EáÍÛTÌð²ŒàF(ø'ÿÿƒªF’ûß{’(. ü¯àzk£ ¡2âžxzÂE7*@i‘ÏGc!W´æú{9²üH’ Çã\ßÚÍ”I˜ˆŠ@*ðvK.‘)€£ð¥¤…ÖäÕË/ä£èå2—æ2·Y³ÜsðõÑE/ÿ直ȑ­”Ffëß23;øá<`euu“ÇR=DBj&²¯[®uy>fm2VÄÍés/l¯Ýÿ_ lMÛPÒwôë­ª( ÜøUUŒä‘Ù2¾THËŒ¾‹IJ33ÃJ6–Ç&öz$¼˾p=÷f’I…)k™8œÔ{Ít¸š²¯áÿáÒ¬ÿA°=š³97¤Ç·óM¹Wî’_¾TÖ©Eó?c“à >ìf7‚€Ç8::266þAÀëuWSç !@v¼Òzÿx½J)%š pKÀÊ,ÌÂB\@yxd {=ÝlÜ–høyÔ’hiÓjåµ=:/E‘}xx4oÕŒ|U—á”*ôÎ ÞleûÙ^+((ˆ^½B@«¢2z`©B߯®–(ÌãÚ †!%ÕzÓi£7´Í«´««uó5D-àõrbá@ ¸=—¾,Ì‚±¿k-ãí êz‹€+OÙì|4Y'‘Á.€œÓ-:¡Þ:øíµðýåùÍß®!ÌjTT4FÃÞ»»fU{Vq*CÒ2^CÀseæ¡}íI•Y„ûÙó,ªåáæ&Ø€‘1´Ô>)Eê¯iˆå|n²Àø„a’#$*k'¾2„@yeu5·ÛYÎËZV£MñÕåfÔªªA(¨½VÍH`¸OZx\Ž;ë«{ÃÞíÎ4± üÀffùsqbwÌ‹G³Å–™$„ŸlÁÇן+}M§ê^é/8½‡G(*NvãyêôÞµ°Å\iOçÖÿ¶V"ùo(…EÂÐ0¹NâGx’©éb³‹N%¸€èûökÝoâ¤NÿÞÙŸMTÏ ±KŽD¸”˜èùsvãtã[[ÇïÊ—¿óo] ›ZYN©ú—9B)˜®±ˆý££ý-ÑÓ‹W·Æ†f$3-Á_ Œ¬¬ØlÃ;Ç:+!膬òËe:ô„ϧôí=U$°U_Ýì'îŽ_óx¨Ù?Ü$D’¾ÏÏ–+w9ŸmkÛ«©Á ž¬1Ÿ…E²=Z¸ Õ‚Öxéf¶¦zIŠ·° Í”?Ÿ -ÍÌjk ±û¢ö_¿sõª¸­Õøxàø¸dXA]† ¾‘:¦>ç„Qg@ikë@WW˜“ØsßÀ€"uLÐÇöÙr²€NÛј3žìììÛ¸æ¦Ç+GMÍ·œßôôÊìŒôC=¦qwwIHIgÒ«[-¤ q÷&ßIO劾˜†œVG RHàÄ‹b(JZZ²Ys qü…Ðÿ…̧÷6‰QbnþwU•òãݨ·w\ ¢áÝ­œ´ô³ÃŠ£½_X ÖcI\EÒQ‘ìD‡ÿc…= _ó^Ox}ŽÌb¬1áh³ÊD3Ÿ`R¿Ë (uÃ;·úíÛó1H¶,®/_ƒšœD H24Õ§OÜšÌy÷ß1ÿ ðì¼€‹"½¯oo×^ é߆Àï§„$mmŸ.øÜ”ç¦Hÿþ¥?¿rD@ºñ4ÕÖf#)¹-*hl ¯­ÞÚ2ÜÚÊN`-üÊ0Õ–¾]aú[4ô §Æs_9&..Oì ^¶C¯w()|®Ù-ÖHW—-€šz éþhøñ#?‡ú„íÅ ûwí²EƒÏÆ¿f™M7¡aÄÓYk×άL&€É ï±±»ÓõWâ(JÊÊÇGˆþ…’ž0ê&ÏÛûcxø+ð§7Œ‹cÿ1·­¤X µ·ãÁ‰ú 3 ZîÙêc¤ Çn.# KK,¼#&ÛÌN¥…ºh ´úwïßtbÐeÌ ìnM©Ðd½x×N?0XTÒØèàéMº8E#©¿ÑbÕÜÈb4†·ügSÕ!Q|eS’kLÐ?­¡4É®ïÇF‘þß"Ûàm~Á‘‡ÏÓçu–™Z©4%ËcMÐ?V¶úJ½JˆZ“SoåóN³ $Þ ÕY?Ý?AíXíôïÚ;õÜ»C>îõ”[ µÑã´KÑ¿cbh•I¬©v±ûÅÉøâ%L{mn®r{´ˆhhãæùýµÝ¤{Ê¿1}ø7&@]¯_†××QŒÍÍýr2Óï¿íž#¸p|®®âÿž­TP[K‘pøgÀùþpwï>ÏÀÚɉØÌ%ÛÅó‰Ãukà•…ÅKB¶µµ³7§?¼aò6Cd%Öâÿè°?9}-þBÎk»!c~ ôõwÄËÀMy ŒU Øw:ïpûžŽêçÿ‡Ù¡,Í>#­œc3¼#Ú_WÓ³,6òÇøC7¯ø<5¾¨L Üä±Y&¢â ÀA2ÐúSûÅGFC Üü8Ý€›îdõš,æ™Y6ÉHl¤¥¥I"¼k¼Òi¹Ÿí´OD½ÓÁìÒãàs*¹uU)ƹÞJàÛÚ«Rù·mJâ»u*ìÄd¥æÖ¹dóÏú&ð–fÿ~xdÂwIöº²òù.Íü¢¡wIÀ;¼àfÞ~û&«‡I{K¶1×Öf~wæù¸cú¦ÙƒK’öÎódeðõ[CýËÓkJ:¯ü[שÝãÝݳõPq|O̬۹ÿتš aº:þÏŸ‹C3éæ´/ïF§þ£ÿ×cž{QQmññ†LL øøÕ+:]w—+9Ê?îñ¸¡zÿäNæ¡jýÛüª¸S¯7[Za"VCn”ÀNž°ÔpdDÍ·®› |k»r41bÖ ÁM¯Õª6¹_ˆâkÎ6p´õú'†ýcO(ÎW SßñFff¦ªK¢ÂPŒ£&RËý—µ„‡9žwëî´ù.ë"zÂÐÜœº²({©}ýt{˜ocËÐko¢/iº„/x½†iBßç÷€Tyž©?¯‰/FZIq³ª>¬Zš—àzc#@^&D^æ[ ?ŠY\B³O?[Mß3–^ŸA¯Ÿ§(Q†~èætÿh³=óQ°fÑîøðòáÞ WŠJvÞ|Á¹KJ8®ZÅÍÒ-Òt‰#æ…—ì !½1—£†°ÅããÅóë—º66$¾Ÿ6%ÝÜœfÿ®¶fxÝÞ_‡ŸeˆÇš˜"€íë3ef™$®Œ÷ñ‘pq ÎT†É þÕDooíñR´šqîæŽ1:òJ×f|…™QzqH²Z„¼üYWð¼…Ú‡­‚¼œŠª¾w²¥ÈL©©3jý’¤dQE…„|$OÜ£‘Ü@*,üüÙìfJ;mßöËR£8/##«ªŠs÷Ï›ý©"£HÒCûŠ…r#ÛGª _(Á",fÙçIûo§ÿú5pW4%Eê-’á/„–B‡ì/D¾3–UCãæµ­Ï~ú=$•‘n—LÚx‹á››wN×WBx`FÉ-âG<¹} —ž›‘¡¬¬L“7 É Þ’ÂB¾lyyt‘É˵‘I)Ú"%9x|Mرf{+:yÞÉjX´ÚC7§ÝÞ÷Õóu ¢ênb¨ÜÉ-#_ÛGW¬™AX "#í0èð: ËgÌ}'ë*K…h'¢ü·7&&Nü4‚ÆÝ ¾u[f@0ÄX2¨‰Iø?RþŦf±Q©ÿÿÞ%¿¬X­hdØ”õ4­pÃnS›}uõÁœuÈ.²jgöÅ /g‡¹šQuñ¼RN99¹:O¹ÇædžPšº‘dõÌKè §¬.ò•,Ârߺ“XöÅ<=óÒÒXóÞY¿AªdéyÁ«Ý¢/q𻩘–Š­Zì¿EŠŠžäö|¨k¥Â¬MŒêïf*;Œ¨Q,š#³5†ßöŸÓýf+]8‡TÚV«Ö–·¬¼©YØ+ ‰w¼ÚzõEÒÒ³””ÃÉèÿ¥‡kttåî.þõÄÜÜÞÔ”¥eU †›um¶Zæ7Axè¶––??7.'LæÜWy˜ï`4%%ê‹HBÂK¾ÕÁÀŠ>Üí±°Xè€çÉÃÜ<ñ3%Š$™ò2Fç³¢ÌI碨¤su–‘¬&)9ØÕÕÓÙ9·ÜÌkfúí›'©{`çSÐGßM7÷‘‰d‹ÝrUaá ]JÊ:NÞÙwZZI14®ô6zNeÕ@C…ÌŽ:‚SÐÕl²®´­¯Á¼?_:ÿ<8pZ‹à¤Øuq½£úñ97+ œ,(Y-\QiR:®ŒƒãúæÔ$‰K="D°t œÊÆÁÁ4ò© ‹”h`ˆˆä ÛpF&‹ £W~†„(“ÉON))ž4CôDÛÝßéAI™¡ÍSèµä¹ÖÖ3_| 33A¬`N 1)“èÐáä……¶ñœG ‹„ÈA9´ÎÕ¿_Ô%5,h´¥ƒÅ9_³è‹uS(\5{¨›êgJs¾Nç7‚µý¬  2ñ¯£}EaÁ:Ù¶ã®Iø¿I~pŸPÈÉܘœÞÏ'sœCU²€Yv¤UÁp¤–”ˆËMÔ;m¢6Ü›M¼ÇRPò_òPÜèËêåUX&׉÷÷Qž\-¥åå¹>ÜØ ÒŒÙ<á³&(}õ#úHR˜íCö‚TÞ°N8|ž²ZZáy ÿ&÷û_U×TÑ’“G®ÄƒÅM`X·ÖÕ} ¸°ÕË2Þ½<|^wU…vAY|×›“Í™Òúч܂~BÜío¹E$2Ĩ§Î/ÑÑãr‹45 ì'¾éE ìü·\ü¶ß;ååTT<­ý4»:ZôéÕïèÌ\¾RFq’ýRWyŠÇAm®Ô+i¤®IÞñŽ1ÅQžz³ýNfäO©.·µžÃùö•‚´4Î!²¿³…ñXZIññŒ»ÔoÒ«bèPýõõ«Y"{1éS=ì/^M@tRÄo0Kï?¦زP5Â:åwgÇ·n}ÿaAÏ”ìàf¼³ëœM-)H¦¸wcâü[Ĥ¼ «×GEއñäoa/=Z`P§%ºÐ;š«ôCh ?ï8OAA›”„‡Ž"O^>]]õ£u-é[ DYíý‰¼z»-œóS›»ËéUFÞY†y¬õ"’ÜÔÔÄtòW¯T9Ü"[S¯wÇYii_ýËPèU£WaHÊÊ®££×$õÙUUw©ü¸!8µ Ø qÖxòŽ—)h‹ ó¶v‡7ãíwtHËp?wᲇaâà0x¸wòˆÝ2ÒÐ(‘FÊ)*Šsú­õ Ó}£ßY³8`L·Z®"“õiôÒNËñ=_%~ÅGùÝýo#9e>5MÑØ”rìJÙz·6§½º©)^¬忬ORÈíÚ6 ài7Ïë©?Ö¬m3¾¯Å”`Z@p]¥„mƒÃÕnL+`Ð0­*& ;NŒTRÿÞÞœš¸¿Íå^bFàh_~C+‡vùpëÆÅÅO;Ÿ<NT- ðE°¬{8åýµ6ÚezÌ @5‘³å÷ ¥@Âææ­¾ã à «ÐëŒkt+)Ñæ“h:Š´ Q}ýz³Œé“PP§¼­) ~ÊÁ“‡9=‹S\P"ü4`ÍÛö"M7Zrã¿11ùú*€§¾Ð퉄×àüü”’|—“²0¢ ˜ ÷ë|;…Û’‚Ùþa¥Õ1sÝQ4#®¼ˆ$;5UjÊHλ+ lTÛäî÷ô ÕU!„ñÒ;˜Å‰¨¤¤G™5ªPœÝ¿ž·Þ°ï_½´þù˜çs]Ù¤ÄÄû#Ma9À„@Z¦¤x{Ô;’îííä¥f‰c ÕhJ´YiAjt«þ„»] []©ßkh±Øìu¿²Ò3_]ž”¤>(=ÌpáoÙ˜UР>‹1âmÍúâÇï·Y„§— ê=¾<–ü­|<—¿àqÀÂJââŠ'3½8žœthj‚=ZpÁû°E•ó› a°o`€,IÀ -ªÚÊJ€³³[JÊÞÂ<ˆV[&v|XLRÕ€€È|ÕàPŠ× &ÕýmíÑrŠõÍI‘ɸö7ðŽ8%eåÇ›Sl¥¤¨‹‡Î@=/žË›Spêñ¡${U@ÿãà=LºmÉÕ««ã\Œd¸ÛØ€&ÿËù‚cµƒ…Õ·`ù/Ê•goÒá7TƒCÍÅe0C4e7OšË‘yzp# [õȼ[NY™¼â5‘ŘMFÂàÚùoƒÉ¹9L„çÆd·œü>fÖ©O¸ïÿHùddLc«®wqüK5‚kjÜ»3£Ô%áହ\MƳ%©T-2%!îÅç?õzwŸùí%óD$™Uc£ÖG“ÇSß½ B”å‘/ŠŠþsw÷èƺŸsúwš.Õæ¸öA²6áƒè’Cø"-›gv²0+¾|µˆAù¹¾®ÿíÛ„˜ xÏ':zåÇ%{n{……îi'Ï—¸œ>b¦æÀÔF%&rY.M#â]LN(’àŠ2vlºéêþÎÊâÝ¥¶¥£¢j~«šˆL¸u`Þhªt†¨^³nrð¿}ÏÅ5^ix~Þµ»s4(§½ÝåÞÌ_ú宯øPP+óŠÊSÙ9^ @~¨«c×ÕÎÒj´nÆ³Ž±‰B™Ô¹0™e6ÊÈÐ8ÆçŠÁ”ÏzW‘â ¡p»)Ó;[‹ŽQ<)Ô;VVN‚ €€Ô P(.zFF2£ò ç æ Š8“>àp˜N„HÆŽÝ]šMcÆBÜ_~~]EE,þ儚š)+«-íÔÓSc­†Â6ôRZÚÇn|$DÌ–ÇÃêR`?íqÄååäôJ¿¨{ññj߬ §QyD¿F‡ú>åéD鿔Ɔ]M-ŸFmg¹ö¼!‚m‰IE `tZ{i5 éÝ‘¡ 2}ºßë5¿5å¼:wògIÉÉ®®š¦œª*ÖŽ¿Š_Ãï†y9 ¥b' D{fÖŽ[ ËÁÙ›ðdGÒK «í.5nÞ]n¿~ùÉ›Ÿ,é5(–ˆB[_ÓK ›ÍýÚ´Ð?é°˜¯TúéSÖ¥ÈQe9SŠ‹súY.OmÍJ‹~ î ”•MYºÕ†¡ØÛæöÍø2‹ÇýF^ÜßÒ‚fü:žKV”×ýflh(èŸLãðØè~8›ÓÁü*±•z#™Ý\çjk¾²)XÍCûµæÃIBBÇÂBÇtN“B71&¿n+‹[äîáØÔ°ëîûÏs, Hâšö8ZxÊ,g&„ˆÅ¯üœ¿€`¯,eˆ9­ÝæÇÕ 5AˆÌ=áu”€îÍßlCdv¢SßUßö —ˆè˜î«õÙÙ¦ËÞ^_°Ó'¨ïV1aa#õNV¼)²œpÌhÁ]ÌŒñŸ€Dl¸æÖz;¼ŽÞà¢p±á¿³!_h¥§Köã7T¦01j‘zý·îIt*Ÿ»;Êwðá~³Ç?M˜ã;Ý82½!ׯØ&¦Œ˜Y”j5Æ÷§S˜M-¤å&æ*‰\¯áCjlì3´à@Ö7¸œû o§°Ûü´G¾y#,\YW×ÌðjuªH=Í*æ¦ *X”•FÕáDg-[z)C”+"d|gÆ|ê|ûX,'ÌJ œçqÒ%Iö¶ ÐÀÕQ£ 'Xþïî *g9F² ïÉŽ˜¯”‚‚*ª-qÙlÖ´Œ¶•}Mú_@¹'„‰F„@1ò£†‡@ ß¸ë꬜ææÂÖ;Jã°‡Ir†0ÿ…njţ&#Ó²²âDß„<i”‹ÖnXÞ×ovqæ–™¹QefÔ¦Ï({˨¤¨mðhið.ôÿTÇmF¦Ðñ\egŠoL[eTtt•þóFï<‹™^–5D³B½VVSÛ9Þ11ž5¡ÑÂBš!aoÞôù"¼¦ ˆŸ¬²`³É 4”Cû—ç~ ùy«ú UåL$¸™iœNU==Κš4Áø_ÿ×AKîïݵ1´éƒtü°ʳ=À“˜H•DõJ ?XÄì@rckK&™û¶`IøMž¾Bäc ¿Üæ&º‹‹ÅæéÍè苘˜»Ìud‚â"†¥»„ÅÆû†âå,É·cüXùvF’x²añwöÈÿÖ”xDSS¶·÷ælyž|½Þ—0#à>²exnžx®z >+äää\ß’MLMÝÝß'ÄÇïíìáñÔ¥¦~~p [˜õò{×Õ…ISì4+XÖžÕ®.`6ÃÒ22drÆN$ΰk Lò¬ôÒ%9Åãþì`aó:פƒ¤H‰~ïšXºœé©³,;ï§ûc^ {¾fovIX¨øš¶¶¶a>Ý¡DÈw²²***×ççïùÞ{9ßœèèÔˆGÌ9¼€júÚýöÝ;ffæŠÒR»-©Çx¬àØØóUê^^ÏññX§ë¾Hø¬llÓÓÓËÍ^Í7á{{{ß¿C}û¶žây——ÝÕ×NND”±=œâu&¬Yc­»Ôàruu5˜À¶\c³>Y BàúüÄØ)¯ ™§ˆÿ¤I£Qó×å|«««ëÅ‹—*ÍŽ‡j92I………!¸\Êø—½‘4À³²²òZ¯|;ßäÀ*Ö¬ßSyûæ êñÁÕùyAqñ‡æéh*•ÁÁ÷ïßóÕˆ>=þxÕ“ÔüäÊj»qÅjŠs+')mÓÆŽóÁPÝ+! `nb¢hŽÄ3‡¹J³ä˜«û7ÿ›7ÑááŽ92†ÛCâV2pÂrs˜ÇËÏ‚Šaaçc ´P-ժ͞òòòm³åF‚‚‚|`ž¢BBÝÝd$$EšõÊ:à§¢¡‚‚ÛCITžú“ùJyyyðððÓ%Ú²ââªå†ÒŽŽ¬ÂrVËM•ïÉϯ®ŠµÇ{{ýÓsgf¾ÊÊʪJ*Y­w;/IKIqƒeòPàv<˜!240(Ò¨[^n~º­¶Z–‡­2Ÿ¢P±Œ‹»Ý/i¦Õ¨ùò“Àjáúps ùõh±žÍj©áî™ðÓ§OŽŽŽÏ•¾ÿB{sTúÍÉaê¬'_•}̦ç[9¤U °[Òëñ2hƒ“£WÕÂÂlþa¶üeb$ׄ lÍŠÔŸåUºcψX̮Ο§³Ü5¡¾#ýöõõ:½¯©¬t05Í¿r5ên[-:1‘Ú“‹‚"Ï ?f öüìLˆ0ü3A®Wvtô¤/Õ_ùjŠûÏ¯šš‹€]ŠŠŠäå…GOVÛôi&}½TðyÑš=ö§Šúcé—=/vä„…!$µå Ö[²³ÀãÂñÑL¥Ùc³ÝÌÌìÔm2çn£ ÿnöé#­;TXvn¡Ñ gÛ:¼˜Q8z$ÙqÃ:ò.š­ÉíYîRãt¸Ìéd2Ÿ—‘9÷ýR#Î?û±a/i %~v²s²_Â"3ÐÙ©?ËY¡ 3tO"™dóΘnPò”;ä¶Þšç¥„©üÉglxS‹Çk•¡*‹ù&÷ÛëÁ­Á4áœg;¦©€ŽiOqÚîm•fÓ†Fkí¶ùžÆ{zrËÊÊŠ‹e˩¸›Ã;†ñËx3åæ¶ñÙý”Û[2!aaé?ôû }qÓÉ÷Ú~¿=::*‹é›žVy0{h~ºëŸ™a'#} ¥Ó.N‘çq<ø   ›ÍÒyxãðêbWát„„äúxà írÒQ0æñ‘ãêXöÏýàÖ” |ÒÊŸ}3äÍNiÕÔ0­WrOM1cI'bZApÔÒ:ÀfH·37g ÿaS º3Y\¬wOô¿ùé²b2r¿»0qt¼úùú-˜d“¯Ë1 EWÐGP¼÷%èàLfS…ÿ}}ÿþýÎ(&&æiú=HéD»—/_^\^â?ËÚÛ_„}„¤·Y6-×ýP%%*ŸÖׯÀš*jj6Úïʤ÷õ÷7ŸÄ>5On §¤$%%…‡¯®®–‚‚ M>é5¸>Zœë|¡¯ Ì«µõF‰7ÝA’ðÖÎ^Y@¥xNßt1.ýŽ-ÛŒZ¡&WdEE¨üË÷§1'BfoØJæŒÚØspx€53C-%ÞK‚ _æ3ÀXœ—w{»ryqannžžž˜¤#T­Òj™÷-ðÊ< Ê**OÏæ;wÕùù†C‰&Æ/LddÏ­\¹Œ¯ÔÊ nd)'W‡ó^ÍK;ËÍÍï²ïNŽóëêîrR<™™õËgdz¥ ŠŠÐù<ÿ=㛩iÙ4-] `‚'•|¤åââb`[«ÂÃ몪BCeUUgE‡ª ø^•ý`OûRco’éß›˜!j>D˜ÑÖ~üõ+t„Ì'¯‡‡6‘à9ÎN6Nχª¬Mn)g vn`˜ÃÅ&à Ø¿_HÅ•5§§_uøï ­Ã“Ê.Å&&ºÝ]Hac~„J5á´YëØÍà{öxˆcÂå´§gcË!ßë${‹ˆ†´™:*Ö6¨xVü) ¨cä¡§µ‹Ýú´´unN Ð2ÖÖ™ºB—#£+e45ãì?Ô¶®ÃÏU#%³ ?ú⻆ ÑŒi]îW¯Þ] Ó¨c…ýsáFôÄÐK;£!l–܃ƒ4ͤ‘¥n×™14ÀlƒFñj¥™˜”ˆ‹òÔÔÀ¿o?PŸœ&ù¥ë³ C¹3áÉÒ[Ì¥íìÀêê6íòyN¥’çÿE^/jn;œîëË_\02]ÂñÝŠÙsqX Ãør‹ø.wÇ•µµ×/vÝ2_æPáórWºØ-®¶{ym¼gK{V¦ß‹Š‹‹ 0×ÍÍ d‰dŒ>6‚”Pa ’‰˜Xwp²’e—ñŸ˜ü}:¥½9–u8{p€=ÓÛˆ…eskÐAî_SðÉÐ,±¨‹ý Î7I³å‹ÆÌŒ9“f¦ù>¾²)Ü.)±ÓU¢œŽÌD¨¯ Vˆ°°°€tyº^çr:ŠòüãZ÷ª‰_Uµ2t891Ñ ¢‘çXÉpE§Òªž`béŒÞᙋrv:™Lö!Cz²-l-–f_ —–4míÞZ-‘þùÑ)ÿö¼²œ —Ép˜'èHˆìk­wÚl÷õÝÚDOæöªãF*::: €ž83 Ï32ò|i°w—`ùõ¿ÃVó[ ¤:˜­_Jƒ\ NËΆ\‘²\T Ák$b`ˆ4‡\ÇûÞu¾§t:’6üAzúKkJ‡öÒÙÂ6ƒ*ËÜš{—æðR%ªöÂBwœ¸·­*ZýÄäª2£Îë{øß½öÞkzm|0ôqAšõ¤WG‹†k66»úíÿöOú ¿ñy7›ŸÙá’l`I["èë¯S®Ú¡]Òi;\Uf÷½ˆB33k˦R"!ö/ ˜@ðam¦¦·1ºK€Ù;Sú­m$-ÉóF÷¹ô›WxX4}E•iàÕFÈ“¹]¸ô„rüPÖß´³Ùx—Pôcv ábMxõñ¾öŒw&>ÜÌŒ( ž xž³U1‘/Ȧ¦}"ÀÝílo÷é ?y¼óæ_þ«[‘•µ´P»:;{ Á´X(´&b¢7o¸ñó%òªbò2Š ©"oÝ9…ý£¢xT,h2ª”Å% ”ÓøÈèd˳}>!P¬v<ëA#AÉmfRø$íNWSéþƒ¿²âç¦ø¶ÀHsØþzy½4öº7¬ ³¢Xw8Ÿ9kÁ_äò"lbλ ƒ¶ŽU¤¸n&&y»ûf¼ñË*fÿ5VàM;àD’qÏ;=žm==¬Í|ðzæuu?ßúÝì¥ÝäùhLB²°±±³³sxHƒ < sZX~‘R~¾|~±2äÏ|ùââ§úÃ,ò|³ÉZƒFK¹b,T’¾íy–£éL²ýEÅʶöîT½;)Jòéjjù -dyâÇÍ!@zFFFNÐÂJc«ã`kZëvMŒŽþ€sJÃŽ,ª)ó ?=ãØÍÕñKPìÈÚéT¦„æ?6,@wêê¦mï͹.7AÌ+¢À♓õ¸»$!QP69‰=gJ4ü÷ïÎÒoÝb97¢@­traò´Þ TÅêùo4a **øß§ózžžÅ’±ˆ·%KÍ%_K 9N‹sr÷&Û9p‚Ÿ],R%ù%Vi·ý‚5d4t‹ºFÖbÎÞ_$ãWÛð!ô¶5óPÒ¼PFﵘòw×XÚ¬ÛÛß8=‹eÔ‘½¸¢Z¥³{˜¨cȲ)[|®†—{(™Þb>qÉØªýþé}Ž ¸æz˜\6ƒI=½-À î¢ÏO‡mí9d$<×gsw[2z/ ~£c:»-œ4º•h7%†Çª(.+LOžî/Òï‰rR«2Þ4ð÷wtÐL;¹hùïx7¤FŒJ£þaPg„< ¯'liJƛשØÍùÆ—…$ëÙüèT×J«ãN!¿n"¯Çôôõ÷j§X‹y÷U/$Ö%Å_Ÿ>i@±)QeÂ……•ã'nJJPû×4I@ò&K¥dJYùÎi™wãÙÆú/·ÛÕvgkË|î\X¨T9©¸1Aâô½½ÂÑœk&Ìw*ÓSØl®^eƒýTXË*L|a7H‰©ïÖ<˜JK)LLJ _¢Dö†ZÐl,ìÍU ‡„(ÛßåšàÉ꘶¯÷îÀa|/±=Y NñäÜÛž6ŒGy¾ä@BèX5FÃPñxÒBH%ßˆÛø$ÈI9°P[»Ô+Œ¿ä ¹Øªýk íM°H{é}o¤S/£ÒÝÀ Giiy­Æ¸n{•°Ðúç30,Ç;mß5JŠÑùj«&·ë/Y ô7¢! {‹\ÄlÕ;½?}ÊhrJøL Q¾Eôt]o¤ßÑ!zâpqÁ óñÁŽ3éêXOXÜ¿ÔÕÁüþŠ<ŸÓŽ´6]ÀÕW䥘²±ñÃZgŽ×mç+Q)Iè„AT¸_YYJ™Þ=°H¶)|^Û›“þöÈþ Lë'· .ðn•ܦä™ OÏå{ªæìéffV¼:NY[·˜*äcµ¨»Ñ®Gyµ1=–åýú§¬9É7Æ11wÝ!·yyÜkϧël‚>UΧ»â‘‰%ZIËEêý>;3¥óµµ¿×^þ8yzÄXÆÂ~°Òéy§©y‰´ïLBIqqÉŸ?aT”&ã2-浄×9_>< 'ÑÃ(YÙm4UÈÊhÛ´”¹NÇ FKTýÔÀd„÷Umïß…¿Ž? vä®§/í 9›^¬bVS3åå•q»z ð®6d¼ƠX•i­zyÍÝ)*¶*Æêûñ'´€³³€¯ÔÑ¡¤¼T£ï*d’/¦§”ŸOlðd‘±°Žš {] b¸‘S±ídîÌ©=Ý]nó=ljË ¹ýÔ>¯w²r9œ ˉ¹t+þ-°úýÅaÛôå©Í›·çÒâª(XœK ‰ïQm‡–=$‚Rg{P»¿Ò¤£Ì8‰AçÕþ'~ÖOá›as0SÁaw7¾ËŒÜ¥3¢©©>ýœRpnªh]^AýäU¬™íÎÈ Ï;Ç#ŽË¶ ëQó Õöuø‡G¤N§ë#q@a!_Øq°‚}æî˜€f|󖪃í %ª‚¢©ƒ’Ÿ ¦ÂÂïNV“ª­š)Ë»Ù9Õ4kèEUb7WKIXYÛã@}·ŠV¢·Y[>•V»ÓýÕ)žãÂ4˜¦’ÒîÍ©‰¡aâݶŠÊt‘úþfep»®fÎÎñòvs—®—¼ªêe ~0aÚ¸Éîîoô)‘=§ÅPâ™Ì®•†¥¼ ÉêJÑ»[† ýöáÉÉ•ssk¸llV¶êv>Ü’­­œð~2þ™_°d5þóÎÉjÞÑÑ¡x·³©  `Öß¿?í‘gf,ŒŒÌÞ¿×è7°èý ÒpÕÎâwZÙƒëõ¼ÄãVÌãÅë0’Š˜Y樿Qè°?¨`ðϨÛjÛm%@­È*ŠŠµ.çà ¬ñIœ›Ú|1®£éüÛCYcÆhÞü|ŽæñE‡|\ytZRoßäæçÏWôºmôXͶ}Ärͪ‹¿õ–¸ RAö”5®¶¤±Z|s·vdã}´c¼¹c\é\ÚIfõí[äúcNmVQÑR†¯Ãr“ì»ÏS ‰ï]_TU¹\Ξ|‘´î]\ZJ´Çéì0,ÿ;׌†¥Ýx·s½ì!Îmg'#?f7Fñ¿òAŠF ³¦¾úù°ºæÇ«ZLö‰² òétZ£eY­m¿ÉäÏ<Ÿ·3v^@é+88,>=«Wk–**—à1JÅ"yꦱY&ŽfTŒ«-Ϻi]Xh[YééeòA<¬0‹MNîbÓ`ãk6¿>2ÃGü„RPð>3sÃóÜ—HU[m~sv¦f8i?9VÅþTOMCãn¡¶{{˜o4Ã78!Á¢Ùóð¤èEfvff_·Ñ5@{¦ù R\Q] \×ô&¦R×:p&ŸÑ­šKK‡ö§Iþﱺ(~¦KÈ á²[ÛzÄÀê©ieµ=ÖÓS7:º2-wh¨,ùT09TÑþ»²Qú­úöAVj싊ŠË}ðÀSòYºRW·QGWöÃíöûŸgò"]š=«^ÁÚÒÐ\Š‹¾ŽIÑfu< ˜;9ÙýðÁ@iÙ麓;–zU ®Ð‡ËÒl£á)*DðÝÙP¢øÕ5ßÃí+tº€&F€RƪôÎ3'ñ̽ò|;Å/Ä“Þ  Øò8)˜]!((üz"³Î€‹ •vŸYØ×–=´+ låž·›ö––iÍ^Ǫåw”T^÷Z@uiXþ#F}“'Ûä*.¡6ÖP+0(PT\,)åŽõ>Ò}W^MU5¸²2>s™‚/ h¸îë¶õô"45 ××^ÎW˜\u:õÓ©WRnûèq_ÅãGqÏÅdlV`±Ä½5šÁw+›ÜàòX'äNŸñ™`íüõÇ%è…UÊ Žvåvåèp¿®6;:2nbcf^šˆZ,Ñ®÷|4OJTÓ›Æso¨^Z⼂wù­\¬/kBt´ÒgÎßÔÀî³Æšå‡%±ˉˆp¢ 7º(ü»›ú:¡MiU5ÛrÍiÛj;_ÄÐÐx3s¬×çoíìæÿÚdT'$Ѐ™ˆŽRüí£5Ûxÿû÷Rš Âý•Å}§й°H¤ÅÚ^Z‚‚ÓÅþxxX±"øKµOÚ¾HÏIí£˜¬¼\÷šÊÊüŽŽ/|ÏiÎË6QB@¡ã¯b¾,³ZvÐÔTNáµXX0¿¿0)(.–â$íÉŠŠj°YwTUÇþýûÖÔ4?"dœxgoM¬K–œ¦( XOŠSìóDú¸‰ÕRÔ4D. ‘'¦RW^¾‚ úX~~ux@«¹±³We‘ÄÇGF¾s‘)~O*µS¥ß«ÃÂÂŒõù»3é¥FTÔNk«7™¬ãÓÉBçsD||µõjHÏ÷¤öÚ5Ö+ddÚ^|ábQÉO®«müGGoœÍ§·'ñWoÖ„u54\¥¤Î€®TTŠ*âææ¼8^–‘” ¶ î¶äI`6±Š¥U®w’•W2³P´fǩГø­ûhd·B·ý@Ö„ZŠÔ»}Ôù¾*êßuÚ€ä4†“Yedh€¾"Çx_Ü DW•ùÇý-C.¯§^l¶dŸ«å¥_öäPÆ@Å1õ¨tø ,•0e¤Âl¯ºšZ¥n{ç+XÔ:G  c ‹ gxírjªË5mìÁAަ&w7´Êµg䬬$ôôîC‰ëIœqn®s.ÎöôŒm)n çkþûô8o±È‰èk*ö>a’®$¯`Ýk¸Æë5Z@[ªhèQúŒúSp°ÃRÿ¿­ž_þøÂXµþüÇfeŽx惰g}¹÷RAá*•?Ͳoõ ÔÈÌØ˜öU}óóªå¢)é*æÎS'ÄT$qÇm4²²ºœo1äÈܲ™IË)šîIÂx/UÙdh kx‚¬ýõû6;»x¦É£¡–Ãèñî<‰“ÆÎA³Úfý7(ÌW?©êŽ÷Ýt:ü†€U•Œsþîlðõ눗—ˆ­Úx,ó(Ó›™–ˆèÍJB,¬Aö 9/€£måý©¤ÀD‚¤Í}LLc<Þ‡õ¡$ ¸œö§ÊºÝŸã ¡ ž³23M×»AMTYY¡ââêXY†]÷õ87‚tÚØÀxOÆ9œÂ÷™{L¸ÊÔÀï£þè”òõEÅùEEAÑærm¤Ç®üÝj;±åÐîüôÔx¹··7I°îû.û-ºæÄxîYƒÎ7tîbøÿ³¹dh¹¸ÚJûgAtà˜ÿæA“ØAeë 鶇ÛWÉdÄúˆg“;ösA‡“kssËdSÂÚ}­„ÇÒ >žÜ¶‰Zrp•„Kk• ™øØO))9(wÖÕ[mœÞ =TØn~É[\x]tjö¦wK ü…¤¡}ÛÓ!­¸ú¢ç˜¤GÚOŸìúÐ0Æø±’’“·î¯1Í!I¿ÀöPLqqÑt!ÇþÁ‚ž—€Ùtñmg ÓqÓ44›+ó½®à ©Ipß@¡uã/#$´ÔŸ‘ÆóY„£y N*%!›§ÐÀ?‰„:FÅNUT¨¼xa‘é"Ì!œ3Žƒ[^讜Ï67ûwÅ–¯UP¨4’Mhò˜¯«¯V9/; ¹™,¦UgÕß›HÎ,gÖœ›Û{Ó˜ w¹¹|uô8¾8^»æ¥´mý•=ø=ÀÙÕ¿óXñ·ç°@`hÖžùÙ‡Yuè3><Þ ‰ ¹>ÖÕ8‡ˆëγ@¹çL—H¾|ù„ÉÁ¨(+{~¶é‚°@›”˜Èå|be·…s<]¢©·F·´¤™¹ º½Ñ@G]ø·œ)rKý{ppx³WÊÎÎ÷ùjoïŸÜf¦Î?~¬jXžìŒr]5&§h‹p0Ó†‹Uè‹oÌUn³Zœ‰IH’•ë¶4+”?žs,| •Ó¿<QÒ¹j¥¸Úé·YšS táŸ/PÁ¾õP]È‹¼Í’üŠB½æd£3iº{²0q÷ ºUVÍg÷ǧƒ ûx¼Ü•²)U.%kk}ÀJàrÿéÙŒOä8WèÑXÏÌÜîë“Ð(¦/ ‚ÒŸ ?¼h5Zí¡¯ÕG er‡sq5µ•—g{™'ë ?>cbbâ¡ØXmÁ{Ã8àÂ’ÿk!Ìŧ“Sr?T}&ÀfÕÙdÅšú¥®‰IåÍWÈ}7ÜS#¿ aÝ®ö*6z‰k= óû4êì{€!Ûà8Ú«s% õ_ßo…‚5†Û<ëÚZ~Óý@ü¤Šêm?Œ37ÿ×™`ì¡‚‚ó¹ =!£Ÿ¯bûM–—„„_—è6ÅÓšmˆù†ášš:ì³±ÙÕÕec%ma±±e¸¿5õA”Òçÿ½K_¬ûE€€Å#Ÿ{“õpò~†(—©I^ø!Â3¶™Ö¿ ž©ŸNˆð™?ôqÜa±ÎÎv>/"2ä\$ïÚúöóÓý¦A:!Ñ±Õ }ßÜœà†0“’ŸÞDG .¼î5Ö':ƒ> *zz†ÖÖúŽWõÀÒ}¥ÿ|H©§–¼¼Ìpò”>9¦’R6DS%ƳÙùû‹ûûÕ``aYé¥ïïÍÍ NMV²@ºO•”£(î##íBñS¦jËIvÙOØE_•Qø‹{^æ×ìJ­Z3“PROö…ý·?éûìÔHÅ@[jY™#˜r¦·Ø÷€€±…Ú# Ú8hKKl墀¢‚õHÄ×PŒù™™”ìì¶-ߥ++˜Œ<çê49÷¯rÎ9¤gZ'&¦V«µ%?ªkh e:/jl|=‹КÊÅ©V¤Áq±Ô˜¥RB‹É3ÇÀr¹ÙáïÆeÿùDTJÊÖÀ€f7è]B²@$tétgtßÏ/n§Ðà£zàá‚Ëd{†÷ïßx»òm†å;öX2Ð@jTùd Ëʶ_^/Ó…~Ïú1ÿÎ@#u0=Ãk®|{›¶£Û¨Pm¬õ_ì˾÷ÕÓõêébž~}Ê"U&½ƒ™b„TŠJJÕߺ£-æ×f¼V§ TÌ(„,ü`‘´à &¦äu¾}Óÿ¶i¨YZ®fIî20ôŽçàË++ÛÚ”BD¢“UIN?'‘ûP½Óæ·®jš¢ Dƒ,YNÄ>sÖýVo1 ¸ûóa2$ü&fO´]‚±v‘ÊŠ k,²z·š…™ƒÉðbjL~¾lu—5#S(…·QÅýûÕ+º ¾g÷ƒG7ó5(¨€ôÜ_¿ ƒ×ÂAØÛQjzº»w“*ňÁb~\j„ççOV)¦KŠOÏÍÌÄab gÝ%ö‹ûØ=]-joÿÙt¯Ïa_D  m´t}ì“`ÕÑ¢Ûãå>êØ‹Õ÷ZMÔWgsÊêý¡!ˆŸh¼gÌÌk›¸´1ÎuAþ`!V‚QççÔÚÝãóºŸïŽ»©÷¶ o‹ôd½Þ¥`´=év­…÷ ¢Òno³^¼ð¢¾}ä -­5ðÅÔS±Ûn™Ù[Ë,î.ë*¥Ä¾nìÏ Š‹WiQ“ðTW³‘%¥ûë•«þ'3x]+LŸŸ(¶¶85,L:,vcÈ+œ‹Áþj60@÷±LIXxw‚âÙpÐ^¬û‡lKXXPд¿¿ì¿»ü*LÌ €<ÿoW¾þ¾‘Ô.&Kä G¥Ùp"¡‹¥e•×S­õÞ^óÖúQÓîÑâvæûß+N&q•z®ucÛå{>‹mc‚—ÀÞþxÅÆw!û²Ú—Ì›ˆÀ™»u±~¸ÞÉJ˜SL!';û`˰Þa¿fb"zuu¸”PœÛþE…éâfXÑ¥ÚH´1#ó:<^wûV"¢"P»—Ö[r€­­ãôÇýð p½HûzgtchzrB‘†ªàSÒKC¼:U,ÌÂï`\Ne4œ 'ë¡Å?~QRj?‰ ¯Ã·µYšÏXkijåG$bŸ=ÚÄýïÇ唬¢4ÉÁ•Qƒ¾&7MK;Õë–•Õ(âù˜ Ö„Éz'lYÙz©Qѧ¦ ®–ËCÉì6²÷W¤°Hw¬0o ~ÿÛÑ¥¨Èÿ¨Nxv ÷-’Í ¨|Ù+´ªJÍ…ã_§ ¦ uDèòh1[6…5ðCR@`™Yu‹ä¯¬¬§Ñ OëͶs³.:©÷½Cï|^zfB(ËËWÚ¬ÿÝfµfÓk•XgZ±tFÔê.ïzöz|t+È£`s:ÿóÇD7Ͳ¿šW$g¼FCvÚþHãƒîÍúÚØ7½2鹜ü>{GËÍÕÑ4¯ç+5µüÌo”59‘dÇûK“Åšï±Ï¨¨üÚG!6ÿ–™xò¿EfcúÈ]C´Kmlš¿¹‰þ_¾èòWÚnþ݆<ä%Ð>LP’ÛãÝ2“ Ì»ûc-D`ø\ÃwC‚ê)-¥H` å°Ñ` ,@Ú?ôº²óUƒÅÚÚh˜;´ëoéïGK+}b[ûÍòé%ÄéšNûHXNQGǹÞ1°S”}k;61÷­–ÔùéìáÑ’çñR/@XíGK³1~8çǺ›S®rÃKÆ™åÈ©EEÊZ!³~&ÂÏ9¬xÚ·oy´—ñ€àP8 ²é`,Öˆ^5~‡×ÀB°‚”¨”*66®€÷0¿PÛí‹X)+ö•Ù6³c™„¯ÙþéáýÑQB_¡áÑOo‡Ê¹faa `$¤à‰€N¹»aF3;³×ÊržÃȪyaÑc”vYÙ1XEœ™Å$ÎË–M¯{‹B%Álç¯Ôèèè$žðwÚžÏeÉÉ];£!™Þaiyyjjÿùlþ“ºñ³å÷yùŒ‚Cáˆc;……¡¸ °ö"ÃN&: ¼òçNþ¸ú†ÖÀ`²µ5Œ6* ƒ¦V “|AÁ¾€àº¦ÆTG7ŸZ¹aÇl9_ÿ¨ûs[Êè6à˜"_jK‹Š.ŽË¸ÿZÿñŠÏº–Ôqñ`ô[päø²({€{Ûé<.{½Û•_³V2BÎxÂB¦Îm§¡së'_óˆþ‹–Òv`5AŠýùçà>×üFŽgF@ˆî ä1ü·×yWJ¼ÛÄ^K+éîªr±ávílsôþš úµËÕñrd=ñó£p'ëìŽ}RÈ®q/-@}#l4œ]øÕ&8¤9f¯gÞü|©]¡è¨_¿r,æYß#ýzÍ‘²ü_ÇCL±ÑÃÆæãöPÖѼS£*SÒRã|Míl]]•e™ÁT54t‡çþåVïC@åV†åoÞ&Œ„…9÷°˜)k×bË‘¨ššö¡ +©LƒJc€¥'†þœmMM™hh¥7¬“F¥)æ.5ô‰óÏ“®OŸ¶oÜ!]Î<7Jªo'<ß {†éÞ¾ `wcí?šÖö´Š¥¥-¾¸X¸{¸­ßt°Z¸Ézrü†'‹üÁñ[»Ï¹©)¥Ýö>Sö[ïO×ÍY@*ê¶Î–Pƒ$TK´`:ª‚ª*V[HY™í¯èÌÚo¹zdÖÕ M_·$q #áÜ´ÎÖ¢µ~ÈjQ‡ fzw) TxoI8Eµ%åZ%äîJÏGÖ…†Ú™6ÐÂ]Õ×𠘟„J,:HÕ¡D0¤ÙÀkzV )Òöîn“z eÙÌk¬f_¿…qu¶7.Ë‚ú„üFÒ/Ôt›jù¼ô€®©g9‡¤Ðᣅp±‹;‡ÓÒoÕdR;¤¨þzß »Ù¯‹ÝûÐbS ¯Ùdëz½û¸É…)p#Õú+—“Œ°´÷ÿÔЉq®0yÍÆoßeÕ¿+újs%£míN¨ÿ£q·Ê*±“9²Ølló¼sùT‘!S5KÍ%˜L†Û÷×›Ý!Òf‹j!FOßgâ˜z™ q\Oõ¼_. Ÿ Ûmá4Û¬›è­ÑIß²TÍìO“$qÑ…úßÂ+€ˆØ©6ñ fä`õjK!GÇÖ§GøÌò°‰Â8±žÜ?f%$ÞAÿ“3=Ó9 @iIi«õ®·GGØާk € x  „7?‡#q™¤KHä‹¿QRQ |»PçHè0…&¬Yµµ6ö&‰ÅÏ?ÔºÁÑ¢µHŸïyá¸3°Íd±Ò ŸÛfm)’,í2Ìçá¡L.£*6vZHdHÀ¨sÆ<æ 9%ÒÀð ’Q3—¥ÉÓËBŠÈÍö7X¹E/žtMòøì SÂÂÎ]\„f˜*ÍPÕß(|¼ÏávS©wûÜ‚ÏÁq,îûÒõén_µÙÛñø‰‰ÝÙZq‚ì./K2c(Yúöoy6¹r^.½Óær¶4…O4°æž†Íž‡b°/â¾Y^¢àâ†Å×éΡ  ¿†ñ™ŸƒŽòH«å˜Dr†ÚÚßZZê¿ä'¨Ú•0qB`„å ^oæ:‡ý¡Jc]zû\ž]ÆU/QƳÿö½‚L#Eµü.þÏÎÓY?Å¿¾ÀóÓ!­v2ðƒ¿`‘lÝ®4°‘Oº1~ûB^XV{.ûÏÔ$Ïërï%PDÏMvîwç€Ým[0Rèà £3åçÖóó9ÙØÔA8Úüÿo‘¾vi6Úé¬ô1• õûc¹iQì] (òÕnu>׋»ƒÙ(PÊc»ì ¿Á ûËä()ÛÕ«[ÅÒÒm¹èʪ'´³Ô ûÎX–3°ù?ÒWµ»š,XÍÀÝ:´2öKI|A¼{¶&Ý6Yà‹„5±9Ìá|ÒµÖ™ÃwœÐ«¿P‡ÉÆŒNâ–aºBP|^`ÉSgÇ ½Mö<¤[üüüµµ9VÚê²Ãˆˆˆ1gsÖ¶¶G56õêÕ¬œÎ#* €_ÈñdutdWµ­C°« jjöfgÏ.›µ2Ê*1PM7Ä`ÿ•»>.(w÷Þ¼N?”$}}¦MÒöœƒ‘‡ù0ŠÕXÀ¨-•aaE›ÜTd81¾’S$ó=wü‚wÃÁ¡.ÑÒ<ÑNrêhvÙê ÙÃÃ"#ÅØ×o¶¶6æ‹Ð^´yâðÿÑ+.æ¹ú÷Jo ج ƒ±*íŒùžNŠœÿHùdgKÈ…"Á×Ú‘ÝïMv7?0Â%]úþ‘‚I¡ƒÕþ fá'hp/‹¸zzC¥’ü W¨Š>î>~Î|µ7@¸€`é£)‹É|¥Ò×ôïöYõuÅõöËMõŽÒhËLOV§§ùí£ÒŸ´¤sÆÿH‰>Þá/KCöÔ’Ðý÷qo™ =/ 6 ™±Ê«®:·S²óM³Š—Ä È·Îoy›ÅÈŸ·+ O¯®xfœhÏ®,ò¼ÛxÜHkë©ÎV¦³ý{õÏnÝÇ(È95¥•&%„³„-,d””(wÙñÓóò*󋇈qÏdRxyÌgèÇ(ô;(t°ŸÎhˆîux×+ù¬ÀÉ­Áo`½8ÿ\_rXÄSí@n>=â»v|Ѳ7I¤¡9 ô€åf_Zfy9 M¥Ë9ÌÉ`èá|I¡¶×ÓóLýp éX1RK䯥Ì7/ÇÞ –‚z-ŒÆ5ÃU¬£Ù_ì0¹89YYTŠÛ©äŽöŠ’’œ F‘ËUAðZ~둾‰»ðõ—>âU >¾}Æs¤OL<Û¼v[³ñ,ˆT*òèh:“©>J+;©›»»³dß—¤Ã##ãÙmU^C#Äö#ÀÁ\\tpÁa~~É,£‡h` *—DÑ1ͶÕî{w8¯yŠHè— D¨Á‘y¬ï%XœŠO-?T==/23_6”Ã1Ì6º-FF^ip¬¶ý6¦*xÕü`Ûœ.ÀÜìó f ÑÎhˆ96ì»ÂÔhf!µºÑÏÆ¢ý}õ¡D—­ÃÃÌ,’ÏNо5ìy¸CË­‹Þe,Pš§ŽŽ¬‹U‡¬ ƒ­\© ò‹Uƒ,.ËÃ|õ<Î'®7ÞàLÏ÷œ v/ ~É‹ˆ¨Ê Ý×Ú@íQX±ŠL†ý=p«¸BŸý#k4x—þ=ï”TÝévÊy~~|¾×O'äU2²ÝMáÀÐåz»íŠ¿íÕç½X©© ;¸0 >÷h4J°±Ný-k炃‚ºÀ'mP¸(][ÛÛŸ^÷zšE ÝÂBõ‡“†ìÈúžüLcñ‹ ~™SÉ}gà(¶#“ÖÑꦰ¤Ô‚ÛÃÍC,] .îóBÅ®¡–Öë¥Z(¨¶´¦&ff‡IJÊŸ[¸Þþw¦Úìl zÃ÷0lNV^ñðL¾~k~‚HXsã%ö+²:<äê¯F;-pq‚Ø,/¬,-Û¹éQ0È\œ¿ŠŠ³{º{ššúg¬‡oö{ŒIœ½þ5 5A+)!¡\¬q+-‹’°7q¡ÔöÃ+ëé ~mMhù¥+œ# îüÝC”9š;:º*4¿I‹ƒ»ûR†¨ÉýÕ ò{ï’8íßépáp|ø{ ݬ SÝ _®vøß:8Ðx=œÂS·m?Ns '©«)+ïo]M «èìpîåççkÒü{FóÝj»/%%äÃOÒ×Ö…¡Z[[Ë Q+y*¾u‡heÞ§XÚ!¾ãÅo´!Ò}rÇþø¾¡JŽè¬Þ¯iûû´Bj_¿žŠê­ÓËökrÎF(ÆämâÿFF–jŽð94·‰ÃÞø¨Ò¬4<œü\BˆP·ë] ÑpÕýmQ~¡¹µ‹ÙT\Ž,Ó­;Ú±ñçLE§Æ–©"õŒôôŸÞÞåeeúúúîXÄÇÃãu9Óç—œ ÁÙ®{ÞeÝnq¾¢.¨¨0œ-;u†}A(¶á„âQÉõJPõ#¶ ¡Á>È“³³¯÷×Ã\~©‚rƨ§†]ÀE½ØÉ›-ï®­]lâI-.~ Âð™@*™ûn4ƒ¦µ{r½¡áTê¦}š-»²÷ØX'Õ†=ñp¾º  Û×ÇDZéï#ˆ#))©©©éþt‰QùìÌ#›åÂÈ䤒‚B½ë%¥£¬™Ù~¶t33³v•˹!k‚…ŽÎw?]ÝU ŒÏȽ‘d|‘YYY11SþïÉÒÓÓ‘¡óòó#¢££cb>ä*âõIÍÎã'´vu8½zê,!!ŠÇ#ðô,ïÁ›âµ;F¢   ªªúöm`XX­ç¢ÑñRãÌÊ`¥ÙtUU•gÄùû”æ±§õmŒýcscöŠf6hè¸Ï˜¯Ý1FU·»pÙ¬–ÀHÎOOMLLZñ‚ƒ‚&&'ƒÁWH›ebEEÅ@„Ws&‡ÐÐ[.ÔL¨|sbeaéíéiYu>ˆ°‘ÌOŒð‘†T-¸ÌAS³ÿt]vºÐ†žþ ¨Ôõs9èeÿàí9Tj÷Þ^|w0×_]o¾%~!!]ÝÍ¥Æë‹K/,×ãÓõЂ‚„è;‘ÏŸ?WwÇ ú"ŽWT[-ommé}Ã,½GŽc·Ñ“‘‘QS‹¯¬¼|z¼/åš.T_XÀAFNÍÍõ£©5ƃ……%ìÕgÄÅÁó¥™-õ§£ Kù÷øvdœƒ½½€ô\ð}064’ï²ç½Å\… y€Ï¯_äääAØlˆÂ£QQhyàÄ!—)\NC--ÔÔ÷×(((]]]p?ÝÑq9lõjIHHvwwcbb@B<i»gižüûÚq,¥£$Ï›CÅK¾õ…m{ÉöýûwÚȹHß 9KÒÎ!›…Ó¿s9uÙ;84zÜ;~û¶þW·]¹HMIYyëø¸$3sâ”Úü‡h(^^n®5;šðã㣴´ô­ûÓ6öc6Ï«9ïkd,&Ããh*çœW\N0qqòÚËNÈŸèuÛðÉdy;!{]  A™¶Tû‡xfäÕ’o°€e50XÁ—–ºÚÙ³\®åc‹ýíD8¢ÎC¡Ù»qqaਦ¦¶-/ijJéÈÅÁ1ÛÓW_^Q&,‡:]šùãÿ6‹=õ¿87±²âó¸cŽ“’‘””³baaù“/(!˜¨áævjÝéx‰†–VK]Ýí`†­:Ä™< ‡ã¬3w8ÀߟyìÄOŠ´Ùë¯÷ãGqÒÈQÚþ)Ì´Ùæf*aE‡ÇÜK9¯ ôêh´ßLøÊµ8¡ì¨ôM%íîïsr,ä&#ËÉËóÞîîîvòüPÛ?92âüôÀnii …Ÿï¼È ­oJ{mÇyãæ´D®(1Ñ©Ý× NgWˆ}fT!9¤(“ô”;6,ìºp ¹Óq“‚ܨŸÓ”´|Êj‹„ýØÜs÷ǺŽÑÓž³Í¦Þ^mc(!qqqÿðpG·àð #{gÞ¿,+c<¨…þ“@híQ}ss3iz¤T¿ú­¨h(.+Ç-„¡¡áàààáá!¨ú—Ñ}ÓÓ±Ÿ á ÕÕÕß¾}«ª:»±±ñçÏŸL†_¿~íèè€Ü˜ÀZtØŒ=}ª `VKN\¼äÒ_i©DöÒÌLházSæç[ªC$tôàj+¦†Æ¤Ô]2äD¤Œ•c¦“õ{ê±ûëãÒy"ÑKf–Á¶á¥¥¥ééêóò¿¯ÅˆÇ9ìŽëU””.fËÁ(½lÞ¿*7B¶èë+#!ÖN®'%U;ßRr€ýä–ÜÝô?ž^'Z6~Š;;“W¯z¨Þ§Dº!ˆÐÃÛ¢Ó:¸8W×Tç¶Û2Q™ŽäçïåÆÃ?6NÕ663ÛÞÜÔ­>??ç‚h°Rl«¥†Ñ‰‰K'Ë™ðƒ¯‚`%»#4é@U7˜Ï–bÐi5{j ¾â#“M®©«{£FIGGwpa«§G.fog÷^—1n½+8 ‰”Ô™™‡ÇãÐ Ñøøx½³p|||mmí éÞÞžV£ëå­Ùná¾è}ßï·áoÞÈŸo+Àè¨nò•;qBéQ±É,(\ü€ÑmI­Vaüxwiccc4œ|øPòš››ûh¹“]· ÚÂâÎROçê]º´ªjq]ü1Z#*ê'CéJ(ßVÛÇîdïPDP¾ÿR³’ÐÛ+žÌ×LÍÊ:=ÍsLî#F\Só‡×ùïíR#ÂÞÞõª[kvÛuîYr×ZÍ:ÝvŸ………Ÿ?âr9Ú{·û X-7  hT[.NûÜ|‚+³^m ·µ ù˜—÷­÷îæ{ú(J6‹¹Ììì«­çß¿~ $r(ŒÈ{”©â´Ûš™ñ ”gÞ«4«««ÃuÈ ùE¥\è|¶Øpvzº»†N£Õp³âEKNÞ34”Ìëq—§ÃÛ{Û 5ðâ‹ÊôÚqÊÊ!œ„„ûw6è°wÌßz§ÂêUæ.÷W"">¡¡ÃcY’|.uujRR…••ÏOp?™Y=]>FKlÚÖ6?^©oo#>$óoÀßïw‰\ýxõ ¬IWðø¡§Éw‚žîÑ©/Õ§úºê¤ÖG@PÊ$»çÔó0•¿;&H§f‹­ôpûž¼tNäôüäf,.βäÿ9ô"³š%ap©Ì (¦ÒRk뿉‰8Ž|? TŠ5FÇÇ””ÿê š™QÝw•àV««©±šÏ¾šLÆIÍÅ!7£«Î‚ÐÓÑž…0ê­-…Ò¢˜òPò”'"·_º±]ù¯_Ã|ϽS.ÜKqLF"!8DDß Ð±± z¦µä€€å{ÊMKcÐï #‘ŒíqX‚øèú¼?ÔTR}‰ïÅÍ̲8>Ññ4EöR÷—ýôúWkÞ ÒÀÏMóœôô###_€ÙÏ–6g½óôô¤¤¤l÷Ejv>]+T-7·°æ]e=666ó´yédSÿv±éØ{$ÅËG:Ñímù8Vû(«²>?嘠­cînºÜ(erÑ ù%4ZÔ‰æ»ýÓƒ]t´t(¾UxLL W¹™±1Â;©&{Š»ÅzN·{--f#£÷5ôªa¯a` âs]ÒØxg¦ô[éiÈN;»öâ2änzxÃü¥›9ª=•ääd¸ŸÐ00W““ÒŽŽ°ÕæqkëëVµß¡>!ýxñb¦¤~ËWŽ^á2…Çí }±Á¥¼DyæðžN³éam¡6wºiwÃmc£!…qó&œ/ðƒGe7çMbå¥U²Ü*äfV(û·ñ¿ N’ü„ÚvÇ©(±<ïiÐŽ© eøùçúcþܦ,›BóÇÐ]gÉ#ÝßuUT|ÞFþô»”$ëÏÎ@© ij¼=‚#ÌÍsüª5ªíõ»¿O¢ø«n¨29ô¹Š &,k‚æ—/Ö—{ϧYIꟚ`†_7AâżÝnaøVAý¸°°¤=üŸ‘øg±¾³™ÿY+ý–<]ÒÍçïïôaÔ·²îÄßo†×³atµ=”šúêù¬ÿ1"´!ãÇq©Õ2¯°°0cœ¹‰ ”uàÛƒ' òy/*Uˆ¿ôõ™>>¾÷|°aÔ¨}É ÷_}33‰©¨ ” ”989×ÀØòr{lغºX¼ÝËÕ«Q$Cð.½9¨C+Ƃܤä*ÀLg­C`1kKEH¸{ž21é»’d€ücèÓÏB2iïp÷S¤Ÿxy§Òn˜¡ •ÙÖøüýs¹_+üÒõpVNl]]rPèrFNN€SŒÕõy©,¼d¶á½–á[©Ï_¿h7{FÄb CÌÿ÷TïÑ)¨‹©Vo;Ÿwá³5§Íî¼h»0ˆöˆ/>37¸«¢aÅ»®´H媾‚‚ùd`ÀQÎñ§ˆgžÏ?~ýš¹:TF;*UîŸÑ›Z­o@2œ¢Ý§ƒöð轤 “4”$HŽæ-è‹÷Uíßм~í,ú Ê>tXôú°ÞÊÊŠÙå̸r{?bT´Š.•:ñ,4½ç£CLb"ñ’ê/yulQyùwÇGûG†¸S–óºæšöSbÖ§þ¾ ÅýÞ×tÚx_«‡(¨©“$xv]žVÛ™}}˜¡ZT^¿&Éɉ}¼Û7o€<€ˆW_Ÿxø| Ç’¸¼EêêÖ“„¿VVÙêü÷²f:(o—¦jOw—O((|¸”¡N‰üªªŽë"Û—ûd›w÷d…êNšââSã‘eöyI!!o–v¡ žå5/æ­Ò¨”¥0YL1—T¿“ç6Øiizøeo!KK ÓÐd¥ ¢‹cúŽSRb-7x\5PoheEöú5Eƒ ?œê', =E!—Ã`l3`£ Ùqð|Û½ÿ³vKNä®Õ9ÛxͺPã1Ë9µê'Fü%OŸ2z@or¹6rmÃíÉ=³ñÑDò [†åý{ï=ëùÆ{Kû laá$$à5ûIPdC׹طg¥/aòŠQr_º¸¨wúJš}ÄÄü/ÞWˆ¼^&`*Xë4¶±AíïÞò ‡“°›“¨«£TS“<9:¥ŒÇjî—‘Ÿ³äò[JAAÝÅÅÂå¶ûÌümc£¤ªj!,L{ºGÂÀ@Ûïä„_šêo¥¬±º:ŽÁ>0S)<÷î@åÐc­Ô—Îâ@ógfužBZ%Pp/ Ý#4´L:¯¬v[»vÛ„ ¶9á|ŽYdzuµ‚»{r‰UPõõ%ˆòÖ`¹Z­íÏìlÂ¥]¡¸?0@ 4'6|dìéB«N'ÿñ]/‹êå—í‚®®ŽììŽ'¿uU:­?‹1ü‚ –ïÏö&•èuì¬Qß¿Oàózz¸=o¾ô'ŽhI+àdû¾v:’Ÿß^Ó%(¿d àÎl\esòóûšû/Qü…òžŸÉ¤‰%Pàžë¥‰ûÂÄÆ ¢ýLŽf»y˜²’¾çxÉ/¥ä`ãá¡ïæfr<íCà1Æ ‹f±~>ëîù6e¹m»üùY›*eXd4´Z.jÞž¥R‰8bày¹Ußîl79±3ƒ|¸C›¿ÉˆÔôê§‚rLQñ‡Ÿe,)¡G3(ú¦ù•îµ< ¶¾šQ)Wùü{ýçë$Q¨»ˆÚÚ¡£Åq$\×Ïi; ä0ÎÝ/à~£¢`»k**:œ®΋cÐ ã[ml Û9²îæŒílom9^iâ•hc±x9Ì'…&šµWÒä»·7VïtŸ[`uŠ™j655¥É=7Ó³TE£³7Á Ý"ä­¨¯¿á‹„ßt\ëvEÌÆbÃÛœò™À­ZHYÙ}”0?o7ˆ®8³,ÂcMÈÕl¿™²Vˆð‡1\ß6‘ûÓ³i™£ãÞùöó8™o`EÅ^Ê2'×ó_½ß6ø…ˆüee¦%.íëâbozºc¿ÀýL‡ õµ/¦Žûõ‘É·™SèîöüL4TâÆZøVsÀK9((J&ñ&¤‚ò1É\ÉäsŸÌL¥V_ò=w4yjâ|¨BŸ;»13ãúI /OÙeµƒ÷;j‡Š< XÃ……(ƒšÛ=!àF2µõÜ\ ^¦V3^J„¼±Nj•~¯³¬¬¨ì»Éù%V ,‹óµéð„áßÓ{ú¢'<îHˆW îN»Ÿy½’ß¼-Ç€†jšg™ÆãZ9¿Õv"<»ÝIf½¿ŒŠ}Þûú´µUUúíº²¢Â©š¥íîò½Óqò”Ê6ûtaíÕŽ\|fæWÃ-~UÕ^^U#ww Ïbççj¸—b½HqÝ=TêjãJ?ÛØ\†àþ°w¥ýI }B@K[e³žy8¯ÙÌEÓÑäq èGP€u7“ŠZ¹Ñ»=…Jyæxᘺíp0áú=^pÈ?©ÙJÒëö³"“ÿÝ Q9öÖù8ßyEe’ÔÈIE.NkG1ÄèOˆI:Aq¾AXD{_n¶§X>žCH˜Nûè~…Ÿ2öíq,rXd$#+ÞÕ­Ã>&@w•:oX#ÁA5z—´(Û³—¹ªÞÉë§7VËž'ײ3»†ŸN©¼ZPý¡=<*GF»CÓ ƒ ü 7ƲÖ;;Ä´Õ¿þ ݶÔ8~}·¤Â²Ÿ]ur"Í?7ﲺªêQ&ÍßÊVçå•ÑРAˌ¢ÖrjAí}Õp%d¡Aggs+¢¯ÓõQ?ÛÑbós~aaFk«¨„„=ɺ,ßëüܞǛuýo¸ÆçcÈVzµª¸BÝ%§§QätÝŠ?_nĹdÓûñ#Âb¹ÑÝÕañêjÜÓ<0Œ““è[C•je2*¤X¨ìÑÑÁþþ·((ª((³zzB66zÛ[Up?¡EΖúèñP³ö‰Q[©#P©Ùí%]¸Š–6ÛÙèÅÏâÒðÇ3àälmW T:-Þ¼SVv?'K¡¦&!D…Çf“™«èÝ4»œ’-Ô’®w¿íÄÀ'Çi{‘» ŽÖèñ1é×ï¬oÛ¢þBm‹õåF¡û,¡3oN«\·ʾ"àÚ‘9’’Šœ\9îéZÁb`Œ×Ô,Іòžžg€ú“ÚE…óËȰQSóoöâömÁHÛQWݯ`¼"„sÜxxÞ$ó=»»»ã9’|ð’’}–Ï£SW,ýŠ€‡gXÀÇQàKà÷“‚Û}¾'¼½Éä7Åoõê%ZêÂ=÷Ë?MM¦ xÐüì8Z2C\0ôµô¼¼%uuâjjzÆ4Lå«hMpÆ-“‚HøÙEš÷²6§6­Ôw^7_Ž7ìíWúš<˜N‡ßÙÅP×F%¸A‡@¤ÒçjHšo®–içh16ïnqÿ×ëÐnà,ϯeØ5EDl»Þôˆ†NµqM¯ÈkhHç0íÚ**Ê(($¿‰–p´aÈ "!éD†^=½!%uÞ9"lš:ˆël÷¡Xñ_æk§Õðs=Y½‘ú¨AËÇ×LÈQÖJ.&5@GU€þž(þ±ªú~Bœ 0H™YY·å ‹²îªAàÈñó›>?©âái¾¼ƒÿPð4WÉîõü«®.FvÎ%\Lˆa­ÒL уÉ@©Ý¹7Þ\ißÓŸzûÝ›¦E MÍþ¶ßååý\*Åâcck44‡––†ÀtQQ=&—„õoj׸ïÆGªÕÀ‹íÇxO4˜"Ëá8p~NécÐÏ‹‹²¶  F4a%[¥åˆúeœ?XNO]η’¤eŸ5•”V¶„øåìwÇú;;'QPæusRœ/È-ãͲ²Èt %ÿ}ÎÐ1ôwÏ‹ûc;[Û¥­CŒUYû¤ Ÿ?‡‰ QFKeE¨úp9EX-I]\ËÒ3aóZ%O‚$÷à¢F´Ÿ{îì¬ììlhb ïæT„½-Ö­Ëh€!'{û{0¤öëñÞ¨XƒãÅ—´¬¬×|Ï.ž7'ÜM»DMMá½åZ@²g¢UVUõ÷KÆ%ì¤È¶J$.*w›[k5Rò#ÛŸêÍkÖ/ £¹ºþ’–¥»¼ †‡wáÑ÷»øùšµ@YúkÅŽž%íÛ„Íh!BqÉÀåºM “¼ùyŒÛ¸‘‘i8Ïa¡f¼øvdµÃýSŒNÇÅÚ¥mlŸ>5gožy{³mn•Ñj‡Ä1¬_üa˜“Œ ¹>ùÛ%í(-´óO…Ì–ѳ²Æo{úf¤üLâÛyøp<ï”2¸EN.Œ[ ˜¶s}Bƒ§øWw—…Eúåת&&λÁF7ìš}ª¢"qqˆÛ‚ây‘QôbG›ZÙ»`þíÛE*eUéTòø°0¯}å± Qè—ºw¥o1æff0[ÔgU–šOT•¥Þ110¤t¯‡âIgE\)*Ò^4yõS½j‘a”ÛËsÖeïÕL÷”²²¹<Ù1ãr£X€Y+÷¢¶¶º††S– Òjè´?àó>XOïòÒ;?ôôàh/cr&™ü“o .Ê_?Ò|/µ˜·àÅ•ð‘³Æs"×j?sTÐÒÒ B½K›w?>‹‰ÏNãÇúTrØ·äöLÚÎÐÓë8]]h: 晫QQŒ:½È?9‚9Ö>¹Ôü¼÷pKÎ׬¤óò™e™-ÕóK^®13Û²ÓñŒºº`Cùƒ¤ªêa¦¸h,M¹oœÚ]X³W[š ’-â*äù¡PÈ/!ŽdX# gO0^^À;Ëyi?p±î8ÉÉ98j¿((Ø\™÷wZ\^(ž‘D{¹¾f»k¿Un4‹Ï;Qß7;ûQ×âóÄ$ºkMDëQ»o“á× ë#–ïD¬ LfSYÎWZ kŽôOnNKkØM&È¥ %/¿³ðZëÀÂ0Òjy>7YŽ¿§£ÃŠ–8jø¬Ž=½à®-øÊíÆz³ÞiúZ¾²¡!FàWøî¬y¯áféóëÊéÍ|5,ôk’óÛÁ³¤DGϨNÓ“ëÐëó@ sýúºÛUØî'L'á””–›Ûb Zm§û,Éþé÷©³_¾ i6ÜÈ«ªJ uÈò|üƒäºs¶‰±=,ÚèêõŸÿçg_­.Ôö´ûâ/6ܾ žêndl…êòÄ@nCôTRšÔÿömeׄÇbîkn‡C`÷º‘AôøîÀÉIa,] ŸÐOÿ˜À@ÿÀÀ]Pô®š¿ÒÈë,ƒ1è–|~[ü`â!,)+c`©$æiŒj%×§d¨ oß·¢Ošˆ‰aŠo¢S´mÕ¼ž ¢ì"óáÄ»}šÔœÛ‹w¯72¨@E%/÷B%ЇÉ(—ëêOÿ£ ¾ÅË ¬x>ÞÚñY  ‰¶¡¢ž °zذÍ/ !À»x¬ (Ê ¹Ú)PQ0®ÂéQ}‘0_VÖù¶TÀÑÃ#01q#W.-àÅït«oßRS xttOXL'’ës.]Æÿ,Õ8ÒX.7¹}ú”@Cm2D(?”èâxÏJDkɶÄÿ®‡Ã¼ Hçå^_?Oæ]„)ïò‡2ßêJMÝ »uÚèÍØ,·µÅb [¾ú- .î õ.RƨÉù´*- =A#\‚„‹3ä—Ú3ÁiÊ37Ÿ+óAó³&—îËÚû¬Èm¤k픡µµÔ„á:ÆìRØ%þ77îÌ´´ÓÓl[³åæššÑJ¹fûzÄÞéû ûžŸS5ߨ8Ù_ .l[Ò¿)ÖHóýr™NU¯Þ•EZNÎð;Ó‰óCCCh£ÐØxÿŸ$bÔÑkrÇ!o†‘I¥+b¯z—žde÷4OÏäLLA¥©”dάú8}³ÛäLºÝèUþ×Ë€€ê›‚z„ÿî¸loŸÄR}µ.oÂÏÉ‘Ï;æõ¡¤¨™™…4ÁÍY¶¾Æ£Äoå½½¿¿Vrò4*ª©µõI„ŠÕ×üYÓŠñê`µÙêØËóÑajo’¹¡ü;ïøØXrœªÏdž‚|€©Y‚>±”tå_”²©©»WÚ§Ì,•¯a›ëì)8éJÚæÔ¼Ú}ć†HZ3ˆZÒö·®ö`à£bYÌm4X$ìC‰Þ¥§§Sšê±Ö/..º?Þ‰wuÕV* ѽ71É:<Ôr äÍÌñŸß¿‹ýülžÝص½’~;!Có#óâ_^p«(M^\ì²#m{ÞQü­¨ÈÎXü÷™ouÿrB†Ÿ?+a¾w¶œ ?Ù×éÃHw_¿™··öí=†Jd/žrr2 ‹KƒBâÚš)gÒG”pô÷çUEÁkæœ.eyÁÁ/s>&ŽIlÜj u@}¡¼¥xÑ·ý}.VúçIu¾ëíÝYQ÷C:K\Ü莎ÆW ¹T¸“Ï}ðïEœ]F­Kžª«ªŒô£&“atunNM<ìKùGG'GŒ}¾?Vé½§$Ká(Ç<•@¥¸ãáάÇ–/— 瘚pÇ¿Åÿ×[Œ˜õÿau>óxÄךNN¾'Û¢ûªã &z òóÓ§ç¡$H€b—‘Éàæ)JJ’ª´œ_Xø€Ÿ‚&Š~™ÝР,.îØö E‘Òe,SnäQMQïã’ébþsÝ ‡nlìW¸¸?vfàiꎗúØÞs>%Džk‰Šô ›PPØ€ Ë­7ìö æq tùô›­È&fò€½½|`!ë]Éq²*ËÆA½Éå†ÚÇbââ—™âÝ ¸¯7¡F×w]†Z>ö  ýßÙ\á ‹¯Q‹úµ¬wà]×_¿Â*VKgç­$. 99FƈH²„ºú„@‘s ¨3Æã::ÜyñYX&Óå{™±f‡†Ä µvûúºfˇuxÂõ HNC^¹îž¯«~Ý‘'¿34lmêɽ°z€ =HƒAKÂÐŽsLÀ3vGc3:Ò"#I¥Kÿ3¨mcC€5!#›ÔʲØÛA%çË»_YÝ­ÞHkk¶ø|]µË )¡C NR.O׋§|„­¥’ÝzM&Š5ÇOþŸnýˆ3÷ЗímU¹¹=«¸°%×Çû?½µ—믩 Ügè;UË© ‡«Ðº¶¦•”¤úŠü¡€_ZzijjdvVÿLü“ ´¥9Q‹œà«ùöuóoD÷OÁÀ•:w¿XÔ)Ý+%tøš_@¥“¡Lö8šQé/ÔŠU£&7ê¼.’˜¢ ~k~Òa‰]Mmo woNek|¤ñ¾Fæã“Çb¦8)P½”J+¤ª›¶·³³›ïDt]]M<]\Šþ`Žv½½7¨*g’WB_à«J lp¤‰iñµ ’ŒÕÂá¼X¡ %¿!EÑeem¦Ó¶l¶\ú¿Öx%µªÊe®BÁÔôŒŸ_¨ÒúFÈ’–Šùâ²Ñ­äÍ[*Ñ /`9Ü óð`i°søÝ¿Ù쪄†.ýŸs#Ü,’-ßû­ËøíºÒLj3P¨tÎ¥¤ìΟz¡qk4<=ŸºðQ60x¦:Œû_ãðË©‹Nò¥jQ.ùú®¸jc|~ôñ—eAÌþ)L¼PüqëûØ‚9LÒÒ•1tÕ)lÃ8ÇÚ¤9ú/_bº]- öß¿ï~ÇÁq¼°ðtwÚÝ›ÀV¿‚)¸ñûx®Ùk XdgÈc¨_PQE/Z x¸øU°ÿG!çÃjÒëw¹c©©Q°HZ*ŠÌñqà ¦]ïÓ_Ÿ‰˜Û TÂ}Ì. /*(ÈŠÈS,‹ÊÉøª) }•Fû(!\ÎñxÉ…h$öSNixRü]‰È›³3ù­-N´¾nÇ–—ê.BÈ¿ÚWy\"lnm¥$$VwFÕúcfÝœ¿¾•Üö¥C]*sð Q€ôN±*7„~‘2œš—wx¹¯W(ç&/Ï/(¸ßŒ½‚ Ài5žÐìÖvùçÏ gÌù¹ 2{û%ë“…PC<¹Úüº×÷wÌ›Ý]~'$|\Rý?mý÷јz'ÙëS›6®·˜ÆÜxÏ›ýé\Nò õ+«l»‚Ç/Oþ&³˜áh9¬NM]EE¥ÿÁ4úyË/"Ò6&?ÜÙiß5JoøáÚ·ýüìLR¢éŸaë’MK·É>àRNŸø7‹““ÒÕVd··ž7_èþS4yÃE1¤°˜Ûü­˜hçR¼æ”eëÓA‹‰R ôGAxÇ+Ãfjfæ×/w¼ÙOètݬ efºf÷Rçúˆëú¨Ñõê€ÌÂâEã’óÄs(^#¹qcc#Êÿ5½àž/Z½ÓTJŠã¹]˜ÁOxÕÔçÛÛËÝÀŠH1ôíÄ1Ñ$&Š J]ÿY[Ûóó+¯ÌÌŸWŽ´q…«kzẴ¤#vî¼užÁ@à©WOÉCZ°3ÿ³õæÜîîZ‘ÿ#tI~Cé 2]):^Õ›Më/ˆ‡‡¸8™*v@Ë’ïæã1´¿–€÷ž /OcÐ?)(¯ Ž+J‡ÂÄdLά”çæŸQðšpcgé }ÚF÷«ƒÕò.„‡)Xôƒà¿KSJ÷ñÄ©âƒí”W€Yÿ2Çûw*H|n±·ˆž:h=½âuu!6Nl9£A÷oí,,ìÌÍi“†ÜŸ¸·ï9ÑÑkO׃sË€„­«ûÂðúF@ÎþþªÅíZþáqºí¤ô…²êìŸxµˆd­ôÅÿÄk(nw06 Û4Jñîû÷‹Ûssíå?33<<“ÑTdÔjúTDD?œŠyIõ ö߉´FS]t‡Ž+)nÄP—ªWäg3IÐcgÐÛ‹Ï¥7=YÙÓ#ö'ÞTŽfÆHB®´9›ÀÒØ—ÃöºH} ±ë±Â¿$/ß4žyw§Ã?ãéÎlÊÊÙõ2ßùîB¡·÷ÚñÿBOý<‹•hÃÞ H5ÁíZ!¶]û ²1Õi[LZœBþK˜£ ˆ‰“=ÎlÂKh÷peÎ?ûõ‹Mˆ+ )ðzm¡FI (£Ê¢úxÙks¿~¬³í˜ÝûåÔã«‚B`ŠþO[ýÖïÓÞÓi-°ëb=ûoßRŠÝ‘˜$ýëô÷ůܘ"†ÎÎɧ'xð**:d2üS¢Îf³!¦ËCÅ–‚&|yáÉé`:z0ûŠsé£ðèf¿‡êêêüæ¦å ¦p£jà a¤ 4é[ÈL]_BÖ¾äÿFð_fú8;*ÇK“¿g}»Üÿ$˜ TÇÂâ 0O—kû€†wv؆“ º;è÷÷Õí홣%­é•¿„MŸèЯX;c³ÞðyÄ»ìŽÙîØOxq†BpåYàýEI}•š›»·5ØÍ¶æÂýt0»ÞÐ`¬_³”vk[Ä08hq}Ü\ç~+ @vNm¹?pkËtâý#BK4ÂÖÖ=«¥½VcüÙ·±, X$Ÿ¥ææÞ1y'‚j.c ^ç*v mNmäxh ×ý.hY ÛÚ©åhhv'rVÂS^‰Šžäu‰8]á7µµM‹ˆ8ÈÏàæ.¡v·‰²WÇŽm%÷ó×Û bg03ó(T³0du_i%7¹4tyÕ„÷þ|jتÒX*ŠìË×»ÌL , ¯ƒ[ÚØ’¬,¡ÍO…D¢ˆï÷ÞÀìS |ˆ)Îʪ°Ï[\ëtÐô:®mýRÕurk¬¡Q\b5¼r]e Æ<­&§´L|U¥Íø˜DDäÛÈÈ@yù7f¦ñY™ƒƒ|1‹Š.›Ydí÷&ø™+‡_y &°çÈðÔôGI'$šgx/TšÙt‡ò pû9AnüÌIi~ôKÃÙ²~·«77. árFF¦ÓÒò¤¶`¥¥…œìÀëí[Ü—?¾üÿéÿéÂñí| H¥¢%-MSër+)ÉÓ°î÷M8NJYTôgD„)Cº¿ÿå×_.X˜…2/ÝÕ±Ù€*¸=—³ZjèîZ•I2%bº¹\Z¡Pw"'Ͻ8lt  "J4)u,ÊÑ x÷ðEø¯J@WòSŒÛlfó«êîü æEÃïRßnU"¢ËvßíK³9D ¶êÈ7oÆœŽ 1~Œë´­uø“!áe ‹·@¶NCच#|‡â¦x$ ÖÓ³ M˜zgn¾WªÑéXIW7«°øÇwà†€ Á·ÚXÓÛÛ`F;{ñ˜“ö£Ñ~7«­­O½ºˆ‰“¢ L9XoÕ54,¥›ë¼ÀØüZj&†¾Âx=ߨ|~Ùp€þúÊ‘‘a´ƒ F÷ÿ(´:´Ç#ͤ\Gz+sýœìzÌ×@œ²vãRÑÔl0gÿ.›QŸ,¥w8ç… ]ëlsÛ"´X¹?ôx_’Ìs/®Žý¤ƒÉÎåþA¦¸ýf¨‡õ²£»;/5Õöñ8oÑ`Ô)Š Ï^n÷WíåFªà,ªªábaÑÑæVÛŸÄ £ªª"~üˆï êƒ~™ÛÔd0š¸¹YùãÇþ/§l‡bS‡£°ýõu}‹"+Ý´ù„^•×Ê®®y%VRÖ'T³J¤…_ø…_gàÙ£¡e‚ª.P–KᾺ VmZ˜î²ë €·ÛV“”\I*¶êé—”ËÓ/´BõmïïuÍaúÔVnD„„ëJNEÅa™Hû;=Tzœ„dé¶¶¯¯ÌÅ¥ðGïÇqv®µv’i†<-”TØJJ›§Ûð¡à0-¾ë¬Z;''o/5—x]ìˆÞ(#q*ª°uvoîøù™(ÐRRê™íð»8Y¸óN»¾>‹3­³E˜š±¬XuõùW¯¦wwóÖpEÿ~½|'ò‰5Ÿ“©Ërëm¹ˆðFøy, }ùÂݹ¢¢ÂÈ0F÷=%) :3sEß¿f¹ r4o~Æ>v¦ò‡»Ë yuÁÃC³²5®|†'W÷BÄþãuªwQ Ò ©JIöP<‹e˜ÍÄÄÄÕƒ·ÜɉîÝ|õ1 ´œBd·#îã(ûXîí!aK<&‘z$•·®=-+ÛD¢ÜÀëÿÏîX…¥j5ÓÆ±4¸({=íþpú0r—AŸ1JÂ!ÂE •Š"ÜéE&£UZ„knz:Mô¾|R¼ZÛêÉÄ$úß)|´ÏéñL^üN¬ã»R¯^U¢S‘Rk™¿ÅxçUT?R‹p7–µ®Rœð«Õà\o½ú»ÞiÚÈ ñ~¹-à)ìc㬹ùX[Düäj}MíNžé‘<ÛéÿZ²krûŸµµæqÛ[·ó8^ú¸´âlôâ1½¦&^ÆHDH¿³£ÁÂl}o/Ÿ+A&ÙÜôÛ·|À¾d²Œø|Cbb=‚ÈCCÆ€‹‹3&'u߈ž$sß^lôž©“YÍo8á@hmPM'#?î[v¬´cà÷‡¬¦fzát4šÒ¦–<Åb ÎÎ )Ö;\ƒåu ìÌ¿¾–­±ý½46Æûͧ6t¸£•^ÖÁÐðv£·{}ýÚ~gÄÅ*2¡Ÿ¾qv^Q‘Y&Ù}`jj§í·Á#2¾=_óO ”ÒÅ Å·ÇÔ¾±5¤oüò°í÷βái"G ˜´GFm- //X?FÆíÅzNPfn÷ÿÓáy5EW“–vÙX ê[6Å•µ¬WÁéºÒS÷ÔgC&1g5j‡yÞ.~r úøÁ¹»!¶xˆ¶»nÄ“÷i´«KgD«æËׯ.—¦EêþB„ºS…6fSì-¼™d©æ‹‚ÿ#ÂlI¶瑦¦î@Õ²±1¡%^iSWÐþï^€¤èÉ$<󪊉û‡Q-­ùÖÍ3î!eEf^—2t,žU’OŸ¼Žž3³ŸXís¹ÿsZ«ôäsÔ/ qûûͪ-ê‹ŠŠ„Ò0WpaÝÉþ?z@ñ<ó@,wôIx­ÌѤªO¯êJ›A?µ*R6Ñ9áÚÑ ß̢ɛ¶öìlN© 8&zúæ][’ì7".–Ê_­ä-BþiwÈäé©Í^¨eyÛkáQ`8€í0.s°ª6k)Jç†u¡ªÚK"yð®ªÓs¹¡±d‡€;Y~³%¥-ÜO`"½NGÁÑ45¤À+ÜËiŒÏóA\–sŸ+&^íìd5ôKy—œQ¸&·‡d½— [õà8yñW}ÍàáoÓÒÞ!ø®¹{ýõ«˜I0’ý=5Äh`µÀM˜ËR=6·NoÄÅ_Ë&ës»DÈ)+äåíìqvM:T¯êÐ#¨{Ï2 ˆ·DSÇÙ‘ëßÅm¿àü¡êõs9MMt»æÜDq…ˆÛ¶0ó;Óž/3Šš‡u0­ô+ÖGÒjÏ·\ŸÐðBSbUÂ5ztЈ‰7bc§#E‚Ç:DteÿÐ ˆ‹³22ùH&C}“ÍâÍë´)1°;><6æù?ʃ¢­uÊ9 *Àãž)̆™FÃLû¼§$'$Äš44ÐC…V^5•3Ú2zÓ"ÜÍ@?J÷òð±7oäpÇA&ƒózÝÞëùÛ'gÈðWŒßU 7cÒ#-EÔ>^¿‹˜D@0ð‘Ñn…E—èè¯÷/PC$$ò­Äj\˜t¿\b‘}©:B=Ê’I{¨Òëüå°OêyÔlûÆÆÏ††7ë¹Êjj\€¿í‡)Äøx“N$ŠÇãóx0+û?d ![D–A&Ã::‡ë#Ƚ`ëßeu#©€[¶(8Ø„úßE]l½½âkIG\ÑÑ“"¢Íþ~=®§k4±ýØz%$ìk4Ö©I½£íëÒ63s““zÇÄÍÍÄKBD¤k’· ô§ˆº:ü±½G^e%++€6BÂÀNSL^ÙÖÖÖVLSwBo²gg™º;¨©Ù½òÿcï/À²êºvaø%iéni$¥¥¥%¥»Û¤[º¤»A@º»¥»»¾¹Àç}Þx¾}|±ÿ}ß¿ßu{ÜpÁÅZsŽ9Æ9Îs̱օŸÎÀÊZZë®1Y){È.¥ÏÆd9€|hKð0k´ÓôdmhP¥¸åUG"ïýuÞ°h÷KçÉ8n*ttRTTßòò”ˆ4B,†ºŒ<Þ……¶{n¥ZÈ•V$¼´¦;síØØ„Úd‹ì/ á¡¥µ-¤‘@pª¿º3¿ê¤)*zz²{úï=€œAë©“c¬Zç^+áþN7³#&–²î½ÉÔT8ÓG@ ÿèû]V–<ƒ€£Æ|3Kn’IqqׯÏGIe¡ònúݪ̆‰sB''*>¾ÇF²}QJïž7êÁUÄÅ5™Åc©¨Ä†€Àœ§ž¤¬Ì^Y Rìm Ÿè@ 橬8ô-ÈöÐØTX¸é××@¸¨±·ßÌèÎ·Äøûo˜Œ(·Çóv©—®­[.u—®¹òÝÔ(ZÏNZ¡‹ÿ(–¼ÀWÕ¯‘ó”‘ŒÚiyH­\úç¿‹ê %´ªrÕÒMǘ±·i?½–’²QW‡Š@G´çM>Îÿ¡t†V307oB'ô9Í‹½açte¬¸'ß…Ç(¤mƃAé Úƒáææ¡·‘Æ)AmüÄ‘‘}ä(Ï"\8’`brÖÜEªúö­ü§!‹ ©Oi T ®OrÛÆMÓ£dp‘ôµŽ§E¿„Ù ‡„4ÚŠõ^]þÌ×Ääs,¨<Φ¦Í‰å:Ì_hµç.+×íÁÆh¢¥Ê|zÓ¢•ò&SÏpwFùÍÖ“V';ía8Jð¨ÁÃý'¼R8†·±÷–+îk©iÙ V ƒ0yõ3z Úc=J_ÍJëËã7é²éÒtO.L¸{2£Âz§Ql¨”^½JKЂø)ºÕ’¤_© ¾pJzåϾộ¹þ¸8gg§ìÓjjëÀ NíQ§\—âçs>¾¾‡Yßl–‰Q ݶ¯?}úd¥uÏÄÈÈã´qâVÑXì-Uù‰óµAº‚‚€¯{go†’ƒZÝj™ƒ¹¾Ãi{ùÿx€,…üè ª‰¼¡¦Ïû1 Ü”™9½²RJYÙKœLÐÁ¯nhròèOóà€fg}÷FUŽç° x ˆeQQˆc:î7 ¨=.vë +]Ž«Àáháü†ze‰Oõ¤…qüsRR>:ð'ýZN±²ªY§'^}- èjÛUÇ{÷Œjléß”µÜû$k¹ˆô’–VCBÂhU®ºÙo~盆ŽÎU,絘Ĺ””ÔÕù0Vd¹åÜéTõTm-þù‹ñkËÊ‹@.€€UUO99Å>Ô@N`*(dò¬O¬û=¾ÔýÞȨþ¯$‡ô ÂiòSDLÖ×[ýB´«™G¼oúë£ãð@:¶¾~©¸xù·D¹6 Š€m­g˜ ?~D é ×¶uÒ’acC€G¬HÙ –¹ß7`#³ s€ñ|õ÷·9Îô¤›»Y>M¾QŠhæND316~ˆânwºç7©þ”mi°«ë›z/Sz2rû05uV•Ën‹¿#A ŸËN4-}T'j@€‡ˆÈõBÁ¶ãù±‰oÜÜ”Q:©Ú <ûöñ䤯a{íÝÇù§›åA¿~},( û›@ùÇ<7wó!–&-]îƒcð—{uë•’é,º:Q_¿žºòg ÿ£cÉ‚¾ùÞLúœôô‘ÒïuŠ9²nzq8¹c**¢fwØû lPð©ÝÎ [œ~ÃÔLÿÈ›jBå,©âoß>g®¶†øäæ&Õð„ñ8gWTŒÏðýœáûÐeîàÀ®UnþçXñ¿Ö‡"Ö-Ü1"¢|Íoô´9%å„s‹ÂAy[£9n[9„|Ó+j Ã-q/Ï%å1ÎûRè79ù8_?–’šœž¾Þq\Yì ù»ÏŠaðΨÍRìœõéñ¶Å9œA­¼²SODÓYHˆ‹Þæ °²:©© fø#…ÑwSŽŽa?0=—M ÝwoòÆ]\,õ¸`²èÆ“pmºp‘n¾ðF(ËʳÿPYZZçåE+¶Fƒ¯ñXAqñvG©ñLßäÎÏ唞„÷çg-¿Z–ÖV3óÔ9µûˆÕÙÃ#ÙutÕ˜Ú„¶˜yÝ6Êy&Ê<ï£jò9—óÓ×ggJÞl5¯Ú’¿p@û5u––6ýánñ¿Ÿ¯kFç~IV–ú»ÙªWÓ Ïpk ®…ÇÁ„? „B†-M®;ÑÓÄÜÜ/°ÇïËoßoNÇ@ØzøõnéõAvÀ–™é£+ ò ´Ol3s¡N Œ} ¾}c¦ÌOIÑÑÕ}§«ËŸôìöO=O·ÌÚ8\ô½3 8ccþV)âÍP|€¿–{OêïîÓ´½ôÁNbŽÆú—ùErrû­Ø2Ó± ça¾ë_›Ón##‹ƒ™ºgTo-‡JI)2ñÇpVæØ›(t›j(…Ì‘›ç‡"»ú³­y8AçkÍ¥¦û*(>†¦êÙYããËcÎÄ|Z²b_ss:·Nåß„}çRNM/¼þè–Í@€…odfpžƒ*ó9UæìPvrD„½Ý!HÚãcØ >qp|—T:#"Ž“ØkV—C›E7åFèqµèÏžqx\¹¢¢¢Ö|zŽøqçѪ%]âõkFÆ(=Ã×6¶x«ÀZˆ ¼˜Š*¨¨„œÞÙéœTÑœ–ïç—™½þÌÌŒLF¦çógxnnî]¤lj’â¾ù1ˆÀ‚7fv*”hÄþÖ.øõŠ¡)—vãsn…›­'æš|ŽMTƒ•e‰R2Fɉvã–å%$$000æ¶›®î꯻uÌÃù¢ge¥bbŽýùsQ‡<œ_¡÷õ3Ò ¦>~«}Ä*OíO?, \ÕBwóQYÁ0úŽ6'v£þ•|8Ö{”õ<š–óß雜àÍ¡œk>yöì‹Zo uJ²urò4P©åee€/¿`]\[go8à~ð5Iþ‡©ûqÀù•[ÜçÏQ^^qqÁþþÂçÙKéˆÑ§"8ù=>Í«z|«ø±þ>ü¯ò­>mI—çpnÓ·™¶£çZê¸5üã&nÈu{I€”ÿ²•ÆÇ+ÞÊÊrþüéåè÷LGá S$.1±“u8è“ ŸQÖÕé Ò)WdAO¬“ûJ¯ 6ƒ6¦bf6 t·É‰ÒN3:¸JPpØKF{KÆîî+†iØÇçˆ>M{»Ø‹«œØ7†Ÿ§GÄG¯Oe’QZüÏß6@­êO>¢Û[Y…ÇÇSß>bfî®þ I€¸åPt{MMakk¢¸î'yèö²²¥yô’Õ"¹²ÜÞÂh†¤è}£o›Fßê¶¡Ww“mü­Ç30è›ç ¦ß+ø¬¡®®ÿþýè3ðøOøÇp\§žnCˆ+ØÐüQòC²K’úžoÉc¡;D÷Ädé×)­¨Ä¶*—¯ÿH.{Œãúå¸Ä{m/Ísö8ÅÏlÙpú´N½ORv.6ír3LKKkþ ¸ûÇlj)\ ²³%Ò;_}BØ•˜µ¶Ö~ÖÙÀ(i`°ôë+FSccVv6¶·‘¹y<·½‹o|†d!Û¥¼E#ÌåI¸ÑGµVè›·e¯z Lý£SEe£½õ×ëî°£#>tQ»‹ø£¦&V*,""›¥¥«K*W©XtkºÖ„6=;›&fi»å·µÝ¢xFFƬõ÷î ØXè™'''Ò¯Óä~{=Ä2èúÞlBA ëh„mÈ*„ šQfÕùÖ·åK7â…‡‡ºî|Xl:SüÈôå Ñ ß „@Xß/§·-A;VÕfE;ê.ÌÓìg«ç; ­;ÚÛÅÅŬÞBG”@¸r¯á êpßù¤7aááSUv4ÌÌ̤¤¿Þ~ˆ¤×(6ðWÍUÊO éëí}G{·‰q}$_™:÷Ö@ŽH„þõ³Fý€q©Z¹¹½½f­3k¹ñ¤)ßåÁˆ’f+=½Ôn¸ä«l–k”©HïAÃÅ+¶Ië1îV͵oòFf¨=‘$³Cõøwþ”¡þ¢è-­ôë×ïlÊÊÊòTŠEÀâ¤ÉÙGk¦7­¿÷¬e`€…‰)˜n®/E´»»û‘E¬&fÂÏ*Éè¦uć1Ÿa½Ä¢Io‡†˜g*d-ßk"Hb¡†ù¥g`c^Þí­ËñXñ¶6N‡-u8ttˆ]x88F{zdr•Z[ZD„…­Nó5ª•J&‡Ó(+)+/Û-Ô툠#Ïâ°^x­ªª V[[ÛÔ”–ˆ¤-ž‹éZêpãõ!Ó²+'€ŒŸÑüE333µ•¿mN(«ª~‰‰‰‹s›oñ—Ša‹Æn»º<Po2Bïþú,¿;V|5°` ”Ó6@…+ýººº»»»½½½ªêx’ ÏIú#û½ n‡-<.[è12Á2|—%€ùÑÐdgd.wÇqákòÝ%ZøÓì'A;×Ëf†3ç/Ÿ•ÜŸ¤…¨ö³&ûý³§äåå 3Š‹‹…ˆUJ‡æ[ÇæçææžRÕ3§¡&”m%ÐŽnÙÚÛq¥ô‹Rž—°ÆmãÞ8bz®>³Š˜Øƒ˜îŽ ™÷[“!·ÖÖÚ»ºÈjd¨Ø^¼`|”2dlׯŽpù«+†}ÌÖݽÎÇç~£¹¹ù}TS fÖÖ Eè©»¾:?<<äŠ,~ ì]¼ ðdF’¹nóI÷Â͸U`— áwÅßEæÒsWoŠx¿’3—*´Í×ÏoÌVVV¶<îâç§ûšlíí­9_¾|yJ¶òè¾.ö[ÕÜ£ý¾È6=@ñþû¤çÞñ¿µï1áă9§X]h =kE%ä5½|Ça+rïÕÍÄ“ o&ý »¨Èz²ÂÊt|f&{zr²Ær®ÑÛÛû+ÅÞ>*>WšŽ…E~( Â¯b¡äŠÊÊýÇÛ3ÛÀ¢ÛÛõnçöZZ3Os•¸]O,?=®ª¨°¼¶µ´>ûúä×õ$È£}4›EÖÈÆ†eñ1ó#ô¯Å1CK½œ«ßÄù/®ØÜ/¯¨>ʬô}ºs÷ê:n>+‹ÚýWÓO!ïŽHQ€9q\‡íá4r™a|¡½áWÜ?nV½Ôò†qÃîTTTLÖ{$H¥§§·¶¶¯ÎÎÎôÏVÎ_s­¼Â‹Œ,þ ¸“n šà†.Ô1ñððppÄ+Á¤sTŠi‚•V••ýé><¿;ßêåå5ù'çôб=»óµšËÃ-ªÀ ­ÌBƒ{Ž“““ƒÆ¬1u.Çô×a?¥óøøÕ54*Ñ©©©m½?>´D—_` ŸÕøj®Î±•¯â ÑòP™ ¹À¹÷Û…§Y—æùjò #öéÁYêpÿ¥³ÃuëÊšººø—W+}$ÜÜÕAÌ&Ê |ÿþ=¾ÒweeP»ôJu‚§OEUê\OÁpMn5UUD" ö—ºæµ†z{„+œö üElÎ69m–ð8,:1‘„UTÆrÕʉIHNÒ¿Õra„÷-¬ô¥Lª|êWÆŽÅëŒtæ,|÷‘øóg//ª'¾¾¾Hþ")r™'é’¶Öui‘¬AéÓ8M®mq«ÆÁ[{8_+_ZÔGñŒáŠ#‚º7̸¬5K-vÀÉV8#žÆìX“ˆÇÙ>ǃ5:Qå!P-ÿñMY¹Ý¶Õ »G?ßš/ëq™9˜Oµ}®16ôè¬_¡2£ó­ø¸œÖ©ÕÕ.®®®ïÞ%Ö×óíÏ3F±E½ßÛÛC÷kO+ª­ÓŽÚ_î $äsïM|ÅËË =Yɸ”å}÷‚(æ“' ++}†£ˆ#¹jáâqqq‚‚‚¸¸¸]ßH‰ˆ´7F u ß&½Úf·ÇÕŽœÚí`åñâã5ã©K ìå3ùûŸ¯_èo<ÈMWŒ¡ Zf÷ë\^*1pqq±µ-yK{tt$--momýޱ¯ítuxXÉK€(ø5)úW¹L=›=îwïïßq.ù²OçÃâ3¾…÷D9hÅ&ÇËÁ ^€z[,ƒéÑ€Ÿ°…ç=•ÑîŸf6®¡äø.ØË. ©W¯^}JM%Mº{'XQ€=ŽÓÆÛ §}õååjÀÒƒÞ"Z;­âÕs]†¾5Êo½rû•‡ÛÌt.sEG©„=ï2 >Œ–”’:ÜÝÕ.‡QÓÐö‰8xå|»žÝ<Öϯ£P·õhcŒÅù` ÂZ­n-ã( ¯?6 9Eë»Â)„»µ­×k—™òé555"þ8d‘jjj_±Í~éG1ë·g)f~êêêô~tzy§ïÌ»“ÍJËËËìŽ;ï,,¶µÜO›…Þ©sžEœ.—ÇÆây ȧ¨˜&— w÷®WÀ4ÕQœ€H8ݹsû3à±XZ®L,,¡hÖ V«8̸Ev<%$¬ù¼‡÷|ckªÚÊÊjCÄüÿôôtll hÈ -Íñr -ðÈ7ööG`ØÌÆSû ‰€j! ¸?ÞšR{ó&(4Ô$ìÁÁA /×kŒaÚØë§@€¼k\ÊÅÆÆFMíÛá±9^šœœ ä]¾zeÀ¹šW^je¦Ú=åÕÕ'ã_º¸º¹ùcšp=+È! HMKÓ×Ó{òôiKKKÑýj3¶¦|n99¹x^7qD11±ÝƒƒƒÃÃE¬‘ ‰Æ¦&/”$ÜÑ׺M“³ ï‚ Ó©>9|èíí\LК¡l匤+2·«S:rr@™£7†”µ0ýš™˜˜6¬´¹9ãd©%0Ù‡ë-ï-˜W{õêChh¨R¶F½û¥(¡›ž…Åußõ¯æf d °G)$£,Û1·²rrh¾H’ÓÐÓ>ÁÄ´Ê&Uüg6nùýÔ‘9:'5õ³ÔòâbZz:_$Öþ†Õ$߃ѭç«8n@pª«ª¬mlXàŽy{„+QÍ•þNÓ5ûeÞ;ý§N5r‹ñ뙩‰ï hÉcº{zŽwvÞu’Ð7 ¤Ë¤É‰ˆ 41‚e¯¶ßìÏ”ÝYxkca Ú033ÂÅ«(nA¿(ùYí3=pFp=€ôó} ³dyêUôx[âfCÖ)Ø12ÅØ¬ÈÞàÈÅåååÅ>þþþ~qQÑ´ËöK>¾úœœœÎÎαâ÷û §ó|?$£/zzÑäTT8ù8ú}²;_Y ä==½)&g~NŽÞ· ãV†Ÿ33-ß°#ÜÒ`³Üº/ë++æ½,jv[U=Aù7R`€k…A.ɨAëÀé­Í°‹;ò– Z²…œ\껂†F×ßhøp‹ö­%Êúë+n@_HI…Ò-_ül n|¢—anuu•ŒŒ ø/€lå졳ݕú_BþQ6PЊ1B÷¢s-™úË£ Ï;wáàà€Ïµwt¤KF3»Qe ¯¿J«æâè¸S.GGOOþ¹¢²ÒÊc¨ ³ è‰ÜŒŒwÙŽ'VÚÚIWôþ´XX‘çÇÛÅ«¶æùšžu>|[ß/þ5ì9L­F>n¥3‹¡ÚTp|âoB+ãäÄCIG§ïaèÕ'¢î-ì÷xåÕ.ö[›*<D~¢¸èŸ£Œìœ_~VókhL”•õñÓ'cçûÒ=¾2ÝNÌLlå!˜JÝÅ^Lj–ÇÔô´;0¾–Çåa“®í•¥å °*,çÌÌÌ ~¨ÓSüû\Ü´eßXÃXS±HJ%àö±œ6(x ††ï0&—¿ „‰§ß¹_V©Óççç—·í|v°J‘àÚXÿÔñà7d›ÐO¼[F¾º;ô®§{€f CGYIIFR¡ÄÎô`D¶UN ¸ÞVÙ¢ù ð–Í ûÑŸŒ’j ;Ù¢ÅÕ~ÿ~ÂCíÆÏD‚Þ’q\¬>hýÓÓøøtOýjkkA¼ÇÅÆŽJÑ;üs6¶÷$$k[ÛAÃ,~9•šŒˆ“†<&¤ÇiïW{~œ×ê9ʼn©·=|àò¿ƒI¦¦¦æççïÞ½ "›„;šù_ôŒ$ aÀ¶ð#ª`?ßQ™ô¤«b¸…ÄÄĨeùÒ§ىﻨ}znªcaüø×BbãÑ‹4,« ^÷‘qæç›®ÐÜç/œvïsÆoÁûDãÁ`ŸÉt¾m(?„-΢ZãX¸28¨@HHxd3¦¯¯àâ"WÀôõ›7hD¤TTb+ü Y½[ah_…ÞwÇjÇ|ò¶Î(µ[œÀe'¾Â/Y8èÖ5¼øN?â{•Vâgá%›’cã3 ¸`Xhè>@U2RR[[Û …¬†þ$8ØÊ§ñ‰‰ë‹ýž_¿~xˆï>:6öXàÛ%=œg™D">\¯þlÇ·cüµ Cð|n‰·2¢££³`])I”yË{iIÉo½ïÀ^äiÄðyÔ©Ó{,Ç9|hî~±ÛÚÝ- XJÌî¸Iþè¬@Ó=|J‹Æå{%MŽ„’ä# 9JÇóPÙ>ÁÜ&',ê§fÜw;þ¼³.ëÅÕŠÛ>§WŠ wˆø° ×Úc8ÿ|IùñŸõzÀ£#rïüÛ+Oâ1ØCD$$t®ÏWô ã%F¢wà~wt4Á6$޶g®›Pùñ…ëfÞM„­`NBŠvæýa¢Ü‹ †»´²òVM­ƒñ[­­-¿§tßyœŠz?x–²²±))k:éŸî-M»®ÏéïïOü›˜è'‹½}< ãÑ,^(ð³Øsuüw%¦ ³'òahW"ÿsÐ+jÿàßB-óÃ÷Ýÿ`¶¿¯aOs-å`@OS‚‰ K å ¼ûûß÷05ÒyoihakÁL§miDohkfÊ £í¤o­Å¡Koló?åŒà`{ñúÊÄÎÊxóšéöõÍ·Œl¬0&f6f&V6f&f# øòüÿS†ü;™ûúÿ‘Ã^Ûúù?ÖûùK$5¤çàP{NüJˆ˜ö9ñ¿yä$Úìúœ/8ÙÙtÙt9åeeæÔÕcÑa|¡£¯­Ï¡þÄÜÎÔô¹í?N# ©(ü¯NÄ©ÇÄ¨ÏÆÎ¬­£ó‚S[E__[›C[[߀•]—…㿞HTNXXú_œI×@Gx—¾ö m=vF=}}}fNN6}vf¦ÿz&9á55=f@–´9Ø8´99Xt9t™uØØ˜ôÁlœìÌÿõ<ï-µnÏ¡§¯k¡§ÿ/Ω¯Ç®Ïl ¯«mÀ|›S•CO›é…ö 0bNfÝÿÁ9õ-µÍõþÕ9µ™tõu99_°3ê³²330¾`Ñ×5`ebc×ÖÕûœÓÈÜVßÚÒÂTÛö_ –…CÛ@ƒ‘É€S[ŸY‡S_G×€‰“ù…>'£§63‡þ¿IƒößÇÿ?ãÿ?~`iamKg¯omcda®Åa¨<ÝR ¸‘®)½™ëÿ4ügd|Áá?+Ó &V#3#; ûãÿÿŠƒMS[‡ü‘‘YŸ‰…‘“SWGà!v6ƒÿŽÿ}ãßFßÖÖÈü=ÈÿO¢þÿEüƒTÆÊôßñÿ¿âÐçdg}¡«ÇÄÁÁÆ ‚]—UüL›IŸ™ 0‚ÿŽÿÿ ã߯ÖÚN×VKKPÛLßZûµ‘= Œ‚ÖúZZº¦¦ZZï­µ- é-ÍßÿOˆ&F–ÿ.þÙAþgfdûoý÷¿äøúFZ j³D{-$ƒÝ'…Áà#B%•‡HPS*‚Ž„¨ìú/±6=ô÷ä:ÆnL9¹Õ^ﳯK ¼ö„/F€#"º7¶–kš‰V6J,Έ–ßÜqï r)e$R¸ßþY¹Å?¹†¹Š”åϒ|i_ñÃò3ñ?ÿ\@&!ÆÜÖ¹8xúøùC4fÍžVÔý¸íÓø}ÞOM®K±ùs–xpÿ¬ýÄ4t ý³+Ñ|BúÏ—“/þG¯ò Ïùù^¯Û°:ö>AQQ1<;%‡Û>§%}íÙí ¼%zƒ­•¾ï!ÈU+ïbê}´9^*±]³­û·®„­ë¬fXp¸>RÍ÷=úógxeÑÛßñ³´"‰ýs„ìÈ÷þo½šEßÛ—*ú„€ ïhs‚†—Ws¢Ì,»¯…ñ߇ÄÅÅûO÷—ó3»ü‹ÆL¯N—Y-gùKMF¤ïÞGÜïácˆé6ÔUGmbTçâ½=u/d þÐ윜ÁÚãéìô\j%—£¾/I^X/¼†¶¿D&jjxW3åÇKŒB»ã¸Ó)\÷¾O¼Px÷nSe»jþržðº\%?¿þJµþ|j»Äj^dÊíx*++«*Ï ‡d"G¥ø»©éí…g±Q|šæÖЀ͜ÔêÝk[üqÓ[œ' LǘÍfê4¶ë¯ÝýÝÒeFÆŠßMXHdiÞq<ª¬¬Äa|ç¹·¿;¹¤ª>=s}µ}½ÆàqêWf6AŽŠŠº<î8’ï~H#Ïsú½µ’@9&;›Œ”ôuÖ•üí*p”^ÃÁ<É#CB’±Y Ô Wlz^¦G³¼vÊ­®®¦¦¦ÎËô2V´¶.úøé&:zòê@:°“¤œ]ð6˜§²ÐgKË‚¢âb21‹ÚÈ¥®å”gTbß¹ò¦×éÞóá²™¾QWýøñã ³ñËÏØb¤l–:e+ààà^è·?Qɦi™)Ôõ)3ŸÊºsá·) 5µ¸ÉH^8©°°°Fðfÿr~§ùd…,Rÿz~ýVùúpîÚL}}§A±ŽŽNXHˆÜ²ÍÃÛ©©Ó …³¶ásXò[YYuëfeýù£ãäâ’-HÀ:þ +»¢â-89—õ·YdBÞ‹ïã´o øŒŒÄ¥¤†€n–ÏÏ5zuïKDÐöýiöSTP ãr;+!&!![]]—¿V\î«÷ðHKOçŒdÐÊ;žv‘‰a·VÖrKö{*–¥ùø{||^·5+«âùÑæÀ7l–¼gõZõî8|î5gÇÛù’] |Z?¤BIõõõÁ|廘ÈÈ„]Ž·†.N÷åe8 e€s‡QɇÅÅ媰ŽËüs|Ó1YkC£jeðð”,,N2¿‚IDÁ »÷gmN‘Ä-,,À ÕM†sd—»ãp'€SŸÍ~BL—!“SUý¾¼M_Oï7㣴´4Î::ãwïûò+Íý¥.y°úþ­444¬[êþØ,-§£`cëÓsµ""#+Šˆxã¡ø€H–z\»/¯uK´7ú!óƒ¡îD€¡þÂ:¥«¯ksÍâ¼;–3e([™†]y¾5PYNNîSëßÐÇùøÂhë¶¶¶öß¿ßèè$×üy|Ød±=\µÒZ?®ùçzxTTE¼£@ttt{g§@rɨ7&.~Í.ÜöÚ¬ml=.tÓRSÓÉSQQÌQ®¶ß4ž´š7Fæš|ìvf_½<Õíf› …š†F¿?C6¥D§Ù7;ÀíêÂÉÉÑñ·q©ñÖdeÈBMùâ☹^ÀŒËÉœÏa ®%ŸÖéé)5UæñßÝŒYÕ7A`&RÝ##ÊÕÛc¦ÃVó¶=/ ¯¯.Ïd0±°FV滢YDÝÎúz“YmWÞ@>[ü¾§Îxä$///*nnµ…¹¹¤®v“__gypv´™žà®J"ò­÷>¡ëÝŹ__1XA˜rZŽ«Ú,›ˆÕ팩öøñcf½/¨9æSUF«ýiÊø×ÍXZ rr!:ººCµ.þ/¡ÓT—­Çͧ)媦Ý{ø”¶áœ>\‹Ùí¿ ²¡”¹’ ¬ÈÔe5ߺâ`®ýÌlïTìõë …ËmÄÛ÷Z²æÁÿ[^´¸1„¿q“72ó£”áÙ‘J®?RLU•E ±ñBÈÒÕU®){ s½ò¤oo9ñ$Ÿ[ƒµ6«±BÌd•íáÚP^@ïÇFÈ¢ctwZ䚺sf7åÐ)IZVÉ8™Ø¦@Íàf +ýö ]-7Y|’Ñg*écŠ~û¨å«êˆØAo*уü™•¸û(F뫽gÅí24öOIÈ2ݰ,°ÈÍÇr”²CBC1ñðr‚‚Фx5€¿‡dm¿¯ÒnBhnn¦¢¤| 0Ë&~¢Ê.#CñXNTÔ3à_Ö·+ŸèŸøÏuƒ¼ƒ‘@iÞœ‘û)õdxýe3ø#ÛñŠÓÓ:câY~(> ŠsAô*ëKÚ”‰1m™juõéè¤233Çëܪë.ÔèÔ+zÜO÷·kKœö ܇”UK ƒI3‹Éÿ”µ·/3èúžÖJQmŒt;ä¤Û!(­*%‰7ý ŽôŽ!– V»T; ÷)Øs†(„ÇIá|ü\U¹ê•rõ—eûEúOpq³Õ,j³•rûÁW²LçC=@¸../Y­þ ü/—2°)6Ö8k6aZ›lUÑ«ñÐPLÄ&ÔêÅò“^™gáÚmÖà‘¥wQœ¨¾^9üÝÕ¥Hð2¶õXñ¾'¾{fþÏŸØeÞó ;ƒƒƒ«¶ëÎâ£Çl“nð•?fñÖ5—ãÔñïtu~Å €Ø–ÚÙÙVþ¡ÂV¤ðÙž‡ôÚÅãìG)ÎÍzfã»ý^²‹Ø±~;'ÉÉ*å¹kOû∕“Oõ+ Z  †GGgòº½aff~‚ƒ³Æã±ðûñM ‹ßâqXêÄÎÕ¬U…Z¢§ÝŽ5 Ï¯ýùIŠïó{Üøø!ÒƒÁ>>>èèèêø÷ºz_}Š­÷¹ü-£;½•6ÉàWb²úÓ RŒyÁrVÇ;©ú©P{×@©âŶyúޝÌ*á ©[›ê=WÅB^­í‹„st×yÓ{æ3eÓÃäääk_)â{³óë¨ÅÄ¥¥‡??Àˆ]&ô¸°ª=[ˆèäFakì2û‰vW·r“ª²»{`œê!„·y˜Î{~OÆŠ0‘Ù‰±,Þ녬[/<±kçåÕ1 ÞU·)7ý3£ÍëzEEýãe«~ÒkD ;ÿcåV‚%‘(á}½RUV›%Éå¬E€«Çõ×µ’䡚z¿³š¼ð¸rè¶þó>á`™„s4Ä2É((h((D z§ý™Ÿ×àÁ½µÞ¸,d½)ý|Û•ŸåÒípyjšœ¦­7£¨—ÅC}ìƒùà…U¼TDlÑÚPxëõaO,3r,^ÖŠ,¾ImÙ…NÛäâ’öäï¥ßŒyêÁ·Î9+~#!zI³¨7¸º97=Xe SjÓwì­¨´™[D ÑŠ*÷q¢yÞž0%eŒõ‡®©K×ñ/Ãï¼Y`þТ <æI²¦.»lŒ‡Eí¶DMk5ï³ii|³HÅø´ðs{'.Ô#¶E$㸳•óííÝ¢ Dö` õa˜ Y;ŽÑ\"1‹‹ëš&Õf6æ¿ùÕîhHÏ ©]iÔ.®ÊŸÿ…]3Ì›Ìâlj؉/÷Kè·Q)ïf"egÍÈÃ;·ƒ¿;¦ýÒ6ÓÔLuëŠßïó’Aßåõ¡>´»2Ï·Í ,ðjíÐk£hÆXÜ;ÊvIÓ;;_^ÀZÊõD uµØ­³ºý[u_Lh”üY”™ýã „¶Óùý­µÎë#ˆ¡pÄÙÄÛ(–Vâ·Ý"ø ýæ^±u/qàÓmÖ5’ó‹Ô'#ÛÞ1a;W¨Æõ½Dm†EQÅÑ7(™Ãz¿ql `›—*ãõÒy_wy°[œŠF=éíJõD”?´R¬ÍPºŒžK^·óñ-è­©Ÿ0ˆ=N¥à*Ý4‘MôØæÞÉ"ð+y÷‚óÜ®·Ð͘ 粨ñŠðäçv™¾Oaò¦ºåšõ¸)g…ji*ø˜ÜŠ“'cwPR¼½RŒÏ핼õ.Sø]®‚²“kÚˆ*]°÷¶åøõeN‚ŽÖ&'F†˜n!ˆFàö:Ÿ¨sí1 häµí£‘в”•ŸâÑÉo¸ÅÙ® –:kH={rwŽ·ZöÅ(ÖC™•>zÊçý9(SRkhúr>”Åý/{þæôž_n†ã‰Àm“(”^OoŸ—AË£ôÃ7™Z,ÄÁuêP€Ý[áü%ííh&nW¢™êå{0;+f×/õµÆf1‡*&'‘í6´#´¢"±§<½ÕâÊ7) ˆW2A§s¿…‰-Mó!µ:ûüé£RA‡Pë.‚éÉTô› ¾¹~9'p#åWe¥Î#9̘z*ŠŽ9’b׊?Pònó?ÎãÛ é ¯q2y¹]À}°;(yêpxuMíµ0ÐVü@þÖö&ÍÊ7¦yh‡ ²pQg° u'õ Ô4a¤NåÇoZ C?þq=LÑòaV¸eÈ72–( Þ4è%™Eãµh¸ànðàø´¶Ãï¹ ÉIrÉ[ß | ]ÏCÚM1U†àz$"_r„'£¢øÕ1 Xkt²·ÜaöÇ­qJ½µ3ˆ,æ#é5²€H2ÉÓð 0ÿ¨×søQŠÂáéj£l6=^áø"Þ3N*Fîzèüü Ÿ+íàß`4t«ð¹á° ŸW­çU+¨¨¬®Qšõ‡ÊðfêwDTr!˜7¹3¸å…¥Ù;]낉‰iŠQúh) Þ—`¨°EW?B\ãwAÖóbɺŸñ!©3Kìªu®•4ÄÉ÷ÖûÓü¤c9æn ½´7*EÏÀ ”µ*ÐêÙ)%œt€hàße7ìKF6V~󆟩ˆŒÕëªW&‰ïÀ†×~oAlÊý|ó¬ËÂ}¾QÏPÌ~s\øñ 4¯ñC®UÑ9Z¨«ŸÔåt›qýgûéÔ›z)\!µ½Þèõêÿ"—ŽÍˆé"Vø÷ïY€S¨ä*u}g•XÉÔ~&þúuï¶Çµ ÐMÊÒé*H¨¨Ë¬HÈ-qonx„¹ùM}6Û’ššj¸=]ûÏ£.ÞyJ¬è R±t™ûi>ëŸï‰KHÈg•YÌä¾¢ô‹ÞVÅü¥ÙnP¦ZÍbð»§Gæz—ð: ˆzÕ‰Mvì1ÈïÝâì­Ï&z=|ø0”ÔÉÙyxŒh’—Ζ¢¢¢62²¹¬ìí8ØË½ksQÜ10ø±ÏÄeRR;ÍÓ[l$½Qöá6KßÈ¥¾§îìX–ZÌhîîîù©æÏæ­=xòàÑ#ˆ†w'ðyH™™Ö~†l^m»*w(ÕÙt ŒÃ_2jâæo²WÇÏ–2Ë—¿.­Échl‰ 3(00Ò¥&#lN7†äoº1¦¾~ÚVí±&Ъ†›ã¥ãÅïE¾=K‚Ä÷LëøÒâ"pšté¸~ Ðl·&9_ž.„ŽLþH‚»{7ßE“¡fçãÑÆXÊÊÊÊúÖ¼ˆBĘ­ü6éžÁ„í×ò*¯Ò$¬w;ÿ¥Š±·ËQÊO«Ñ0¹.6èªÊ+\ïñõEBÆfN꼞[ÉóËóúëj÷Ãl-# ØcoV¤÷ä‘OÓœ¥€”Þ²­zM Ÿåuk‘UÊL£¡•?žñ¨oƒÜoc¬Øù|³œL1ÿO¥kçä¤:ò3F~ ÆÍmèè··/ÙÆ[‚‚‚žgžõÌo„£ÄMÚÉŠòQ½9†£!ÅFáÜk<ç òPÞéºûBôðÒÁ:WõÌdÐÿÀ£–s­H§isºVm}87{÷ä6K µfÓ5§B9òº×7nª¸7uª§ ddÂ,: Ëñ.Ò,ï»söUÔåq³‡²ôîÝ¿OCJ*4.£¬¢º†:Äw}a#,$ı~ÅÍ}žå†ëäËNMN.òêÕ+çËÃ2±—.G¶šç—¹vþ.$xö«ìÍ㥠©WÌwb)¯ì7³ý+â×cýkõM$\ü_{gʪªfuÇq›€´•¢¢2~ÿ~]»Óø0$õàÀÖËǧX«Úa{ˆ·Z¿¯_ûÊÌ&žàáÑŠéûýŽË+›­ÛÐÞÞ.ÇÏÏ×s^ʃjç?‚vS„Áìö-ín\ ñÝû(+ÝÜÛa¤f“²!z…oóNªˆŸŽŒ³³—·dýPÇãÔïäZÎm÷à›5kGGz­p“mÄd„5že‡KT•…UG ò7d­¡aÊ­ŸæÈ<,¹tRï9¤Û;Ãê×LÁ ™3v;99Y‰¬¿H»:*¯§¢§—ö¸>ŸÊmÜ=X@®|¸OÔ¬#›¯Y»¶Á” ëµ$5x(>þü±]é%º) žæ×‰¾<Š*3Ÿ¢ÖÒš1q&XÃÙÞ#¦»I_·Z†n:ŠI·ú”U+>+/ÇÕNªE»#Hí¶y9m¿¿14ÌØwuójd5ź¬=ùã‡óÂðÿò>TŸoïèX\__ßHIêÔ¸%¤æxÇ·™ÄÚºÈcÈ+ :ˆHÈ)å©QÖhÑ31ÉÊðì~ffa"TcÒðÑS¿f²ùá¿Ök¤ô}"<¾»>?H‘Y,‰ŸUŸ¾´Õæ³Í¯kB“/òBç"æ“'†aœ‚Ec¹=®jxxx ¥é°¥.f=ݺ·‡‡A.Ù Ò ÈiÉŒ3dU u¼HWGê¯Jëη¸_ô B‘ÚßßP=s)M£œ7Xã´ë¦Þ±ÿfä?âU]]Ýx­Ky§A1´±á²U)z~¼=’žàЫB„Т;–sm =Ð?+IÐ'Ëb¦î;€aÅ rRRJZZɱ±1).sA»óþú—¤zLf¹Œ(ä3½ÚÛ³‰Ô~íÍÝ,–ÈT>B)¶··×XÀßôûމ-•XZ®²bbb¾þþŠÇ[S¬Î†þϘþdqôÄç~ù‚¥ÈO÷Q•Êͧ 7Z~($s´$TŽG@ÆIEå»xXÕð²¼u§ “¿€Ã‚‡\ù ¤L~ÕÛÍš‘Äó°$«Û=– )E/A {Õ°h¹ÄØM¯¬"ÅkΩß¹üýA×Òž»×7ª3÷f¹ù‘·4½«¦'š;ÀÿVRMÓU£m—¡‰Ø¦ó¯/%½Uuª|e¦ [w{#ãê=ÉåKñ·¶û¥Ô5ЪÑÇ·‘ÔcîÃnÿ¡cç&«ó_Þ°ö沈)"…÷< üF(oδÖ:2ùu#pRðF•ô.)>Qz!¯ÝºšÚ7 HHRT–™¹{7âô–·J |Ì&)á„n[J|õIÿ®á ·Í& 4hrƒjwô5¶vª§äãíC'7§­Ë]Ú§¶ÈP}Ò'ñ¬m*´¬Ìì}âÚ7*j_ÍÇrX%¦@ÕIþìõ÷¢Òã¼Ücà*oFVµ²¨‘ ´.…º­U\½9»3¯×ûÚÆ¥ˆ„kó×UýV>Mxûøìë£Þø´+š‡r+ßRl^¯n' t7Sè•Kdyƒd?5Ð[o±IƒŠ¡V‰~ÝY å[!Ö¤Ó ¿VWîÜÆ7©æ]-{Mfî-à± Ê„~«¼<šnTU‰1~UŒíÌD¡¯Ëó×!zƒò‘/vO›Ò¤‚nêã7 ÞˆÝÊË08ìÔª¨hY»GíÏFšðœ!<>3h›.~«SëñîRm—Ì–¦kúÍy÷oÕŒœk•@_L.Ë}‰Å­=eÁµÑ©œó‘Ãþʦ´ö1sYé,á÷õ4á>mRÚ|{òƒSøƒóïñ5°n\çùMAæÉÖªí`xM(³¾Î1‰g­ fï}&õh¸Šˆu<"¾”Šb(y>ó©SÔ¤íqãk¬4h£Û3âë"…%vµO(çtõdÖˆQûˆÔcg'r*·BfðTòúû.)šú·™fûëÞŠ¨îƒjÌyõùnÙû¶DMYyM˜¼9µ®\Nlš7JÄ0éV*ž·i.Åœ#+é{(eàv¯Æ+Žm m,fqô°Ã_Ê—fZ¿Éktÿ–ŠpTô£5*]|ÃB! ¤½73ÆÚHÓªyJ2£ö–õF³šYÙØý \ÔÐâ?—¬õUÆn/κÞâàRÎt?!É÷Ñ~6^ ý äž'Ož¤ üÈÌÉ‘ô Ú€jll|‚Žž Pa%=4ÝÇ ®ÛÓæ~'º×|JIÙÞmP&WMO«œéŸþ^ÓMgÖŽH†ˆÖB.õý…˜ßSº6½~ BKu[Q——¡ò‚©iË“r+ä.–þºM"öï³þ˜÷úÙ‘U(ûÊ#ŽžÜÒd·×ên`|ä¶ßž6QžOj(›¸¤dXLL Ĺ·¦ÔB ]6 GV¶ª·íõÕ¡FÞT‘WÙÌu»+gÅnÇñ8T(İ{MMkjøœÑOký@1³I!ibTPU¥.®t>442Ê©ŒTŒš’2¨MÏZÿg n| öâþõø¸Ýì ÚÔ±RNÈ•U¶wç5;»`uDü›£e¯<é9Ñ<««øøø¼ÞÞ7^Ÿ?¯Œînå;ß`©Ýk§¡ =)‘þïvFbt6m±J[Ó$[½²é3o(-(k¹)‚% %—êÿò˜dÁ’ã`1R zÞ—ÃV,´Ÿ$Jà$ÔÃ{ž“MG…ÐÄäú =ŸþjRð ²^þƒôíPöäG4wY]ý–L,‡,‰h€‚•U!ëΫ®ø—j!,=†;³?‹ÆL!-/órñO*túô*¨Vä Ε×ÂlÓ4RîEuÅ|¼œ{ˆi|cÍ‘½“ñÑî.tá^kÙ¿³ Ï(?×¶–£k+Í8¨‘rOÒô%»›þ¹‚kÚ.å¶ bškzù°qJÔââ­å_øWÖ£i63á+'ö~“<”E«‰äHZÙÝœ˜ÝóÖü%VáJÕ<‡3éè·ÈAs‹ã†órZ¿ûVóý†ô߸@QD_^Y­Ü¡©x§ï¼nó‹Ùdåþ„\F¬‚_7aY;È*ç™ëŒ ôþ0È߯ëÀlö šP¢?·ýFTÝÙr+? ^Žv“w%,ñޝŒ2å{aÎ Z®Òò·Gâ>ä¦kt6¢2ʢЊô Üþ¹„¤ä`•Ý:ȹ±>>>¦l1P·HžlÚPÞE‰Ž×eFmvÊÍàVè¾cSWT o À§ñiú‰ÊǾ¸œïq™MMC£q™Ï›årŒšZ£‰ˆ-¤bYüØÎ°§ ÿìZŃÛí© ó÷(a†û­‹!ÏϳÀ”„ÝÿÍ×81Ôwã¸S^ƒ_ 7?ê”{¶ôVUFìæS·sçº:õ`škÄPb÷ü(-[9þÔ¶ÛÂdÚ_²¬q´“¹/<5ð ¥ZpUÍεZx,s%BÍêÞÌðþQÚ6|Ä.ø¡Öª„•¢Lý~Öø¶ £šD¬aªÐÊçG›˜„„ùfeC†ºÏDüø¡­‹Óý‘Á%‘'XX&KѾ߾…™*ÙÚ–Ä»lqªä‹¬Î0~YMgó«Or²8ª%‰=a9Šæhì}tµMwùžªùæC±Ã“!¿ÃQüS¶0ÁãÛý…$H¿¡{Fl,ÞåiÇðÑæ«nË·õµí½y•b ån諭‹Èê1§;°ŠØ.ceÊPfÞºDÔ«—þ<‰ƒ×Ý‚‡/Ú+·Þ¸ÊëG`µQïÀ ›ÐÑÑIų»Š Sû±9Q¾ µÂs ܸ\Žr¦ÝÏÍò7è=pCbb²ïÜE äã«ÿi–×¼xi·Òû ì›7Aû…¡2Æ¿ƒˆ¸Ü/NXJkØü—ê5G¸z×GL&+¬¤Î&Á*Äï‹æ€œÚ·»éÅå’¡@0mî‹‘ñJÆÎÊîÅMÐ}‚.Q6 ˆä–oØÊ¦ë§“6=F`5ì4×·¶ò|}}MŒuKUÃccsfgߨ3ª Áq~±ßƒùøñ\'ˆ› S1 Ü<•rÞ&…„ ¿÷Ш²Í”í,3…öž›š0ÑЩäü6.¥¦¦Îñˆ$ôà»:jðML Œ”ÄÄçµWgëÝW îgFSÖt¾@%Bš¾*W­<ËãúŠ9¦ üLV\ÜwÒ¡þât ð&Ìy”gŒüÅ*²²²ªÕöfq ©MfH¿ìZã£z›r—ý÷ܰw@ãÉ“åùµ·7©öäý(x‰Ë…CÆŠ7kjk‡RDqÌüüüÕÕs’“‰ñ9­…yÏ2¼Q ݥ̞ҾMb:íÇcàÑgG¥–s˧d†»šÁ´BHãxÝTƒƒƒCRíÖ‡¡æ ¤ú€>’¨=è—)›éªH¿#ì¿tÍ„…‡+¦Ôwæ“ÿ§Þ˜}hßjÚi%ôȉÔr¯laôÿ;³¾oQq1«É0­T<ϘӖȞÖÕÅp¬»ÿZŽPŽÃ+ýI&1]gû¡B`‚}N±FvÌ›Ò,äŸ]ø_ìma=ŠÈ½sç¤4§e¬~CÝ`ûÇ/éµ^­þß-8d›±—OØÍ6Ü1›®QÙ®=އªåÓÎ@凓6ÿúe8Qf†„‚Aj6V$,Ÿ.=ο>UtدÛÄš²³c9fÊæääÔ6gIIN.âq>1c¼° ØÁ~øÝËýNHïé1G+ÈÉ%‚Ϊz5Ÿð_ ^PÃJ×OŠf»³¯é¥tÀÄ'ç 8¿á|–د,±òתÙ,›€ªHPS+Aù[Z$DÄŠÉJ‚ãQ’ä@gþ6e“ÈÒ ¾'ª’«¦ ˆ“³³fi}ýÕa¾óì‡û [[[®=WÅWëõWÒ±A¤Ñ]ËO "Tag/7¡~­¤¨ØÖÕ•ÛÂY<–ó‹~ð÷öüü|ÍÖÎ\Tªç=™½ U׿³[ÄÛ°êê.äožŽU;ä»#´ëf(çk:o–Ž@œó{ÜŸ$¨8ÙZ®v¾(©{æ”I¯Q5øÛã`¥g¹ç¿tæ¤,¡cÿ³‘篙€Búq/G*{ÉD÷¢äêÞjEºž¯CQ.s¦q¯ãLÓo7†øozI$¤¥•DD¼¡òv3–åË—@o§Y§EÑÌÿõKè%„Ü ?BBCYµ?«N¨Ñ>]Þ@©›éhbNíæTµ2`]r::ÉÅ]Ÿ`¼°Y’Ô××_íMÄa5èe5t•g¯žàCàü:着\„‡§àâ¸ÞiB]÷gŸ~ãî^··¿¯('ןqjbóŸÛ|P)@PGæW'o­&r/;È÷¿w³‰)Ü;°Ê¿¾¹#™ÿ\ÝÜJ©ÎáË.}˜ï|¬'o´ª”l0oÏ%J›ù{›o-Êú©í|we…jê«ZÎi2"m7¹‹ïÞ(`Ÿlèk‰>`m½„×'¢¹*Å"€Gtõ¯ô¥hà?ê-¿õw€oMö§½#ÌÕ6¿€‹Ëš£k&ÞW7´–pÚB½Ýû-Aº)/â˜þ‡&#¿}©ž?çér4Øðá.æ³gËñ.ÝC…½HØ"Mç/Jða%P¡ã‘q>QÏgšÝùiœ}{h#oy@BQV}uÍñFôÿ„˜vﻉ.‘á< îÚÓ¥˜¼€lï†sTò€§h¦?+æjŽb}'÷å–+æ"Ýp¬¸@rEjfÙ¬¦ä-d¾åíͰ¹µö6·1YØOÿLÕ_<[c›"Æ‘ŸŠ÷W›‹KmHÐí܉l·…ÓHÊîìÞB:¯ñóúôƒ6 ÑÃ¥)#g“…;fÎ{uNtZr k?å”[m+ÿk–í2.uÉxz¤¢™…•²å‡³<®*‰‰‰K”㨚OU)ÞExÈ›‚B˜ãÄÂ>œgDN»ry5œ-y®Ðµã^Æt …TLB—ÒRËCêú·‹·ö)nºí·²}5­vhôê°½õ×qœ"&™bQ¥NÑ©[=~`VVDȉdÞÃ)IR22£îXNœ—Î%_^8íéÅñ8É…”˜Ž1C}~ËÝqÔ´´ƒPo›nË#(ñ†¤þMÑk#ùZþ¼­„ù Wégç3×y`ÖÆ Ñ­iºWy‡_bqjZ°\êáÙ€€b˜ZÒ|¦ÄŸÊ*[É|¹ ‹Ýô¢²u¡”Ñ…p³J“ ŠX<‡3|'ü1 m1Õzõ¶s_‹”Õ/ëRÍ ¼¹„ä‚^<TTTÜ;>c  šå97É7ºMJŽŽ´*É™òé\= š5oÝÎ*“{zø®ÕçææövweM‘¾ëÑÃzqN½œ2?Å ÿì΢ÌëoÓÀZ\]ߺ¡5üÅÂÃ*2'¹ÇMŒŒå1VK–ɹ`¤AQï±t½6jÑ0àt©ù$ª–çæ’|­cŠøz#;l]Xgœ¥€àwØUò¡,¾¨rÌt‹*‡K–\m¢Í·Ïõ¸'nlœåŒû#+‹ºö|«jw‡Ú-Å䎷¦JÈWú¡º¿íÚ ÍÞÚ+ýåg‘ÇcòÐÞ5Ƚ6á‘‘¦lÜ=îø°ÄÝÚ„°¼)J^ä õ}öôùŒ„À`F'íœllôzÈjÐù쯤m’ò­Jÿ•2IãF”³¥3/tÂñìEs½Ú¸ã·´3WÓ/…eï8F˜Q)Èš{m„£4OcehÛT±m ©Ï‚ì: ˜«ë‰åâòrvjê/'óÆÏ¾sÚüˆ ×È**b† à¼ób¸òÚÆ>`|{;;ACÆCÛîÇÜbr²²Áækê0Ø{Y–õñª÷ÕÂZ—sauoð¹pn¤:æd¹Æ¡ÒÍÇ ÓÜÀ ¬âóÔRop}ÂH<_¬œðn=Rh$ã#ÁÀ5 öžï ¿Ç³ñ¨Ûsƒbª‰êóUÏù.~:é[Ðy(‡^Ô,ÎåÍ‘—>< éûh®^ð¯:°ÈÄ@Êt>{­1 AS.Ûµª¥Æá`¼kêD§é|—bÐC,]]]_¼ïÆsÛk£€:Ë¡*ž¡ÎµO7¥ìQºWû´\¢x¶ XÂap 7&4ô‚ ;+W&W’Ë—}i²§—où[Såòhðø)ƒ¿ÌªÛÔeüIcrÊ5eÐâÛJZÎE€&TbÖÇÖ¡ÊÈ'=hÂÓ½”6ªáHM–Ç´sŸƒj†_oês‰*”Å k|‹ë ëÝYIô|{2ÊÂìš×^áE a· IiÕÌsK/Aˆ8W¬m,Ê.çé¤3T!ƒ%qÙ$ uŒ¹«ëq o5s3ðG·Mc9añÅ«àü4+÷y×vè; +uÛ/R*Ãs¶é4÷¶Uk³=*ÄdI¸~—³Âß…}Nrè^ë¸nSÔÖxeÅ»f/ê ©t”©®¼h샾7É7«»’ü(:k$±lÚõ95ÿ¶þ™œQÚmiœ#uìù…ï™o÷}6º3Vô‚ ж®ÙœtÔ/-äÏé§}+šnR =‘é)Ò?»¥,1r÷e0—Sü–€\«w*õH{zïá¾’ù©­Ž™çpã£Ò£@ܺ„”ì嵉÷×*Éójt\e¹oH"ì"õ#oZȼóM¡,Íþ3pY$ãùùu~O]W2¸~¹¢‡aÜa4·\|/ó=HL”ô|gíÀ,To²aLívsª Ì7w!Lƒ>áÏs¼@à¦oŠ¥Z°Ù ¬RvGâ‘]I(_(Y=£Å=¡¨'h«t׿äѧ¼DžKs{Šò4ÉV謺A=35ˆ vWw›i3›äÔlky[JMÌeœ|@uDå[Xj{5ö–·u}MFœ„ôJŠhÀJWuÿH˜gçx}ÝÍß)™<‡ÿ˽xÞAŽd ò?$ƒ¢°MJÅÁñvllLOb¨¹jû?ïÎÇ]BOÛ­ZŒP{0$4[ììô³ýþE7§›s(|À¼|º#æàá]]4 Þ‹&œù©õqE/Á;Áäi—dZÛ<–¯×[/äµ®dò¤=äi}jõ1•!ï,ÚÁ4¹)IîXL=$ÉFÅ“Û]EÂ$`Ÿ+dV)êPT1Ïß?´âžŠÒ©hÔÂPwíô»†™!!!СÆo***èI?ÐcŠÄTËL£ûJm–¥1Ÿ>5þóëëw&]"½gÞÒ ¼tbÊxZR€JmMeCÚOæåaÔðòñJv~ÀùÉÉÉfã%ï³{ö;§]¶3““ Ê(`9/,¦kT—A gú¾®¬Ùן&q^e¢Â帓Hàq±+g"¿ûp_îÂæ±õ(~» Mß®ÙSü¥Œ¾åŽÁŸ‚|®/j·PmÅØ 05¿åE%ÌNç~¥s|¯C\¹œ¨Ÿß´©B-…hFr>”¡ã÷\*9È<—žÿË7BR£¢ž™M”Iýüù3$•N­Ìpm0“ }­Z™¦³é3okkk@šècºÈ8ñP€Ú]±ð8ù‡X–$8nd(<—d®‹:YðšL è~E K€âX‹²>‰-¿fÏnœnêÔ¼¼š(>)²KkÆ^cú\ ¤4y‘΃²ç¡%ÅL¾-¼ §þM-/k^‰‘ù|"Ë‚FÁ6K]Ãçt¢£ºš‹ØÓ`ö_È̳Ãu 1Àþºs¥ëßQý¦T!’£” à=öï2JJÇ,þVÕ³‡T·có"€ß›)ûˆŽž>"!aFñaÈËHDr§\Ûå7àŒ–ŽX·#Ô|ïÁ^˜‚MšÄi3µ¢jöZÍщ½_€«­æ©,e¡ïÐ> ¡ù+Ô6èN¹µ¡ìý†õ)‡ ÂBPx(Å‘‡€ÆLE iÖéŒ*o}Úgk…~(M b;ÊÈ€4þ[³Yøýx© ªx{³J+w`ccgB7·%`Ã1œacö¯ßåëL[W“Ô㦋!Öi-">S öãõXäP‰“€÷¦½kmûhk¯6mkSõ¥¤¹õ>cXqSòà5o*øHŸú¾qÙû‡móÑ\GNÚi÷,‹_‚už÷gKHÈ¿¸pNÅÑ#ÅøŠå}·‚’R >W*Ð!F;˜ÝûOýÒD´" G–“|úçùò¾}{’¯ÈÝJ ­„ê>¨„Ã??Ý?Õ 4ù»¼™Ûåšr}‹?n8¸ðÏ•>QB³Áʲ'Ý åÜ—á`„a­ÌG¿?‰Ç%¤Ä*HÔ³#@M¡-7f¼XÀ­èïÇfLåk[ÿcå…©;¥šò±ÊDMSAï{È%‘fM'+d¡mÚÚd,TÊS_­QÖQQ‰Žw;RÄZÈ…ãi—|¥\U2>>>Hãz\Bu·ß¿Ó0Ì´OTFDF®½O)ÇuÓðFeUϼ“XM† ¯.N©é釡S¿õ˜‡8ÓÇ­Ç7ísUKÅ¡þz(æ°°Ò1i” Wz“”§Š—ÆÑ1ñJ× hVº²‘„n·¡=|¹î\ÉuÜ}§ºÝKÄŠ˜!7h¿çtÉw´ÅCŸå|Mx²^€³Ñ^çûœ¾ÂuÝyˆ–µV³¹HR²ùÛÓp¹Nqþ}Õ¥RÉÉ¢jƒ%&TõO•ûÕ ª4îæ¢øûý&îxÔɸ||?2ø¼Ïâ¡+ãïèž#^ÇgÝ.¼ ^DUNQÉ1ÙT¦®¤‡á Ãئ =ªøE(«\îqíïÞÏ þÃøàùÖ@ÙEÉuò{ŸÊ¸FŽ’/àÒ8ÃW¦{f’Ð?~,ËÝü™ô1t”R;¢{­Z?ÑŠLa ÎÄY¤ìÊ„‡}ÓX~ØÓš{ˆGöxUMOôêb_Ætª É x=—«›[!àg÷×Ê_’“N¬©s‡p´ß‘ý¬›x¯¡'ºˆ§äktè}‚I”ù²"÷r^Jjëèg”Nr[k¿£l(K‡/ã5P? Ï¥¦£vtä û*ôqvö]ŽFõÓááq¾K@ã%c9dMN??À˜]ZòÞY"ü›n8ÄfÓT:¿âÃB­ƒö–ᣞÇÃ;®“ôoö~b39Ïóô•˜ØX9@ôýóekªömjìÇÔ#íu]¥Ú…ì|lg©ŸÂÊñ)¤ÄÉKÔ¯ÃçÎ2‰'9T¾]¤Z?‹Án4ËÀ¬!(ÿ0B‰ûLì!a ³W™ kÜ“ö]]ÈìӃτÀÑÕøƒJìé! ,Pv%1z\‹/FÙ0|#…la§WGf~éŽÚ¯ëUá–?ðçL@Çìóèè[É8.LÀ–ÏP 5¸\Žh‡óµf¶"ÈÈ¡¡û×Ý}~;‹/¿Æ»?ÑÍñŒÊ-³µ#a^ͼ›'û—€mê"þnû=® ýÃ׃_KZ݈3:7¾Íb™Þ¯ÇMI£ÀÈYâ¼ár^JͽøÞ„å²Â-IlüñÓ§»{ûû¥¢Â«$´Æ$v¡ÁÐôO‰Ä o„â¼ +‰Îê{Ýr²Ð­Šáî1OJ³ŽÕeÉ}ÏüXX©­æ-&$UárlžÒš­”ë5‡vã%wuB¾|ù28íº/5Ye'1£ý†BÛÐð *ß𦦿Š×U: ½•!pœ58\‹®-£l*×ÃÛÇ;ûj«ŒŒÞ‚6£gâïÖÍ|¦— vÙ¼Þ%VnÐäÇÄáæë¢n-´…¾­°$81;7÷áp}D÷âdóø°Ø =(‘’Šêç`¦|¡vÂÁêÀ}ØìÂÂçâ÷=:P™²uzzg„åšåÉŽ6íÛؽ{÷ÞÖ:³666&¾¡,pÜÕ>M¡ °ð•¤ä£x÷3#»ê’Û7³2y½†>µ¦ÂiÿG]S¢´¥W5uMÏ#îÒ1Úç2À¥s4þ„È<™ÜÃ=á]À©sß@U¿Ø(qÓdçf×l%P74¤\êŒþ ]HXXûhcl­Èn}˜ˆŠêôÄX÷­VûÉhUKå2ŸÀ‚BCïZXl;·"õókjöÃ*ÔiFª9Vƒy6¢^aygww—Ãv z*²éÍò VqB«ð‚V½ˆˆè å×Whßó„»_çøÏž~fåI(Pâû‘ó&‰Q#à£vŽºäZéœ]ñþ»Ÿ>zþVM„–Vrþº½ ®M¨ì½f–@}sprþœšÂgbbŠâv0÷kQ)1| ØêHÎ$<zás=pdéôK|fÍŽ8ˆ ŽqMmín'KÏs::)ˆèèïß¿Gü{…Æhå§¼›q…¹ž_ß80 Џ³ªµñ aüu–·SiÈ1ª Xaˆ ÙÛ ~ ýRõ£+†]w±=|gw÷çp®Z!ðT»±2‰ÙÕÕ¯ÚM€˜÷&íìí5~gŠ ÄŽ¥"…ñÁ:'Ò§û¨-½I‚LîŽñ/q_äj‰w÷îP+s4t¯9#+ëÐÛ~, ü²ªª¾!!è©©©@Qàé¶|3RŠ §Q&&"º‰Z·³W'ó¨®'s>k{ šs4kqÈÈÈ`ž±±xŽ..åÍ™P2¢¹IÁ²1mM4ù5p¶ëÃÈ$"ßÙ}±6¸«¸¿8;ë ¼ÄŸ,Ç6sÿ9¸öclìQÑÑ?{zP;"è>I’›„_©¨›h[itoÙ˜½ïƒÍb©žße2à`æSUi»Žòh?RS3êeÄÅ?¦§¿Ÿ¸/Á5oW¬ª¦Å>! o„r<Ýü!2Ôê°šÇÍgÀü.; ˆA‹Ö‹HÐÖ;}èkÒ·õî/‹Š‹e>[Ô"() —lßFZ’šš'lÉ8ÿùíû<ð?ŸïUØ,£dGCCóÜšª^â 3#+KŽo¿“¥ ¨HÎcHiÿm¹ùTo½‡e¸¸ëÙjzWÖ>Ðs¡2¼/.. â•ëùfùÚÞP¶².Ðh8mVÿŽIcü?âûþó§ûË‚Ôá:@ºýîìüÕÇmuv`Ð:Cørèe^µPlÝŠs|iº–Ç%&ðx`†û'âEÔ; ¹œ'Û[Üf¼J¢ïÍÌüL*)yÝ3Kibü Ñë!1''öׯ_QQ[Aˆ¬ "j²o›0ŒtýøBý˜Ý£ÚG+RoVK†œØ]ŸÜúŠRÐ]®²N¤Ñϧý ÈHŸœZ(©ô§Š¡HXa¾±ÊGJ7-ÑÔ®Â;õˆ aOz¤rM/ë1u±IÚŠ8q‰[¿ÌéÉüººúî2_›œGœ†ÍÃ]Ywå>CuÔ·ÏìLŽNæ——}~ý:Ü &t‰V,NȤôkÎa9ë)‚®É¥¢¢‚ÃÂpyqñ‚—ç Z¯ñ2ô@êÁ`D©@tȇ#Éár| º¿e2UeÅ€ûÙ*…4=+ ¦1/=¢@m428ѳ†hÖ66vyxvçÅ¥¥ÂââHxøøC௹ÖPîû”–àn™Ù|éOéË·ó#ammíâyãµåÌ‹<¸~-¤`ç ØéH–ÅìÄÙ÷¹ÊÑé.œììS¥ãã#«©©å¨•£@5Ë3;nëDàAÑÑ_^B çåº(ü¯–Ý?Í”ôô-€N:G}ÿ¾¶oËõdó%;yåqÍL<èJò¼íÛ”ïÞ‘ò§]h] ð÷Ôi/ðÕ¸7¤B °Œýà_€u«‚Ë>žG[.wéLM#¤ ˜1¨/^‰„rg‰‘yàêÔ|•Á+ƒ6SzœJ:ãɱGæ¢âʾ«CÔ¶‘™‡ý&]ز"Å&uÇ Œ/ádŠÏ.ƒQA/)›a§ÁnŽryª4™À»çöÜ´†Luƒo)Í:w±ç²žôÌÐÂãäðÅ“™ÏÁ0Ýýóù®Ý/Žý*.Ü$D®ûzaT1åï3Ø gÐwÇr~Èg¬®æ°5ùU¥Ø 3ÿe•ºmæüüü'`ó$­zw˜ççÏð< H_ËÈX„›h™šÒþŽ§Ï†ÀØ¿ï % DÂÊ_ÍÍÚ§{‹‡S »a›O׌ª Ì– I.¨ ðDGW—N@@`È×WÄÁühðx|îx`aAÀÁÃõ˜Û+Þ9:òö÷Gf3õ°¡±tÅ+y¤7ïÀF uï‹‹‹3Ú­)˜ŽÜn7Z±$ðð,ß­X œ’×õÙç´ü¯^ÝQÊ×ô/(`¤|‚D«YólÆuÙÔÔ #%XËiô)½ú—ÔTRGGÇw€ü=ãsw Í4«ŠM/[®ÊŒ)ï’UQõÂ¥ð ¶O…©\çMó= ~·âè÷b­5;¿ÎjùsS?ÿ¡×…þ93“]¿=¬ 9HõóHבÃTNîŸxtìVß ƒÉJ¥ÁŸ(HîðÃ+(âs˾QÌü(ç~f©à{.Æé·EÎÈ8ìÞ\gwD@ݱEÑH-‘íyÞ5w™J'Ymlæqêg6u:CËõxmAÓ_«‚í{7rs4&ÌsWQöËÎæÚGÛwÛ¿Ö«ùLÝpÅ2ºdDµ«Ž}ü6‘Õ´Xr•ë;eEìzzÁ¼‡Z‹ ß=pn¯ëûœú†fÄhë]ήzLnãëþ‹Ž+—Ä?š‡EÓ-O½ÑŒ_ýPò.XIº¬¼ëYï±v?\î"œ$í6ûÓG‰V9¥—?⥆¾é9Þiç«<æw|úøñ²ºã%FQ|¼››»û=|ºËÝqŒllæ¥Vƃߠ¸g¶&0ézŸ0Í=ãõn”Q{«2Æ…þ]æUTT¼É¼-Hñ?a  ó<ÆÄôbÒmy‘ÝÝNäyrâz©‘ŽH†û°_¿~½;\ŠbÔ†ôpíój ijŽÆMNBe­^ÃfA¥ñ...®ê®²[ û<ãq/,,Œøð!DYž‡‹!~¬ª¯ú'G|âèà ‚@JЫW@W~öìÙìáˆÖˆ!ŽošD¤@iˆõo^ßÄ}r“‘Ý–»ñ…DEç+—ãM†ßÚ)*fY®«?HåÃ"žwÔ>ìryÕuøSÔήƼ¬~ýGð;8áï÷èBþœeê zžU¥Α‚_n?'¬8™ù„Ybl.XÅú}Tl<&Ð…f«\ .¼4¢ ï ‹…¶ÊD&5Öy©‹b0‹Z˜rñ˜åã<ÛYc‹„‹€ùv§žÿ‘Ôô®½û8†õõÇÃ{™Ç¸1¸ +WŠu¢Aú)ÚŠ¸‘Âô¦ø<0$ý…j{-±ðêš1(\å[Û¡ç±ùøS$‰äï)õøæ°wôŒÂ–PügÄŒc<æï°iÿ(¿o¼}™Úu·ÔbítÕ––Örk’²]—5l¶"áCýÅGrÊÎ%"é…õôH©EA¿ Ué7„VQUEÌÄ$[ËG 1ë÷Ídj_XËe$(jNUõ»³`-s+})k{ã,ZÆ,¬¬ÍQLºvëJ‡î¨L˜&—õ¢è­„¿€Ö÷P’ÙÃÃ#–ËIZZæ Å»­ÉÊ×ÒÒæÖ§¹U,nÌ,,s[[(^w000¾$#‚7CŠg÷þ½{™•ÕÕ$\\8 µè #´··¿32Ê|‰ŽŽÆFBBzñ‡]¹\BZºåìp½Ða[ó63üví1£g‰[‚irF¤Ï…ds°"é—UØŠŠ˜!‘I!ÛP}¹-¢õ©jzëó"—ÀH 7ñì‡ËÔ⩱‹N%ÖÅÇÍ’ˆ×c.9Ô§/'øÂŽjÌí;×ä9;œ?LŽ×D~›”óæã‹ Íö¢ÝŸhwõ¾¡ÂR•0SÅaM½K>‰32ºŸ"÷åÍo… ÚÜryàŸ€~Ûåö½$g¦È4¨ä6’ ‘"r¨Zš£RŒÝ%’l ¥s<Ðxýýýƒ,úÀçþüI¦·0 LdŸv¼[ë|ØØðáîP ?>÷S¿§tý+×3ëcøùùYm"¼–¶ôÃÙÌÜÜg7==Ý$lˆmÀû!µæ~2wÿ³·÷Ÿµ¡l (’†™ë+t«‘<ìòÈP‘^^^Î*-KgDë5Üú¿lMÚÐÝÛ”À&^5øÜálH·=ÝšÜwä&€7·uT5¿9QtùiÖN¾z¸Î|:s§“bIg/õq…ݳ;Õ¯C a` FÆ'%[˜TÏ‚FwzÌ’Ëìÿ}=Ðrgö§Ï3Ù yLœy©zº÷µ„7Ù‰ÀÔTÙåèÙ*‘¼ÞÁ*.KcZ¾™@<ÞÇ˃ óàˆ G›Lfã/:øŽŽNN— m–»E,¬Ëº8´ÜÃ/€À1ÌÕRWd²¾– ¡íctô‡ë#$ŒŒh÷îÝsžÃNaw Þøœ™Ýd8çƒ:}k,§ Ú³g_zø®k4=ñÙõ—:££Ø- ¶ñg88nMqÎQq<žr`2è|öõ{Ôøáù‹³ÿˆ H±¯‘šÎb)¨Ýž-¼æúúú'+)hOž¤îWVh^iEÖ{Ô\ÿÎçg|Bd oDÉäÙZÖEï­Køƒ—¿ÿËæØÕ«q>  §íŠ+IÁ;x/#š((úþ>•¡b–Á$!Û¢§–Èz÷.õôÃÃð,Õ_¼gggóØCûßÞ3ѽÿ„­¨ÇDfï¾$)yð´åÏg7šèéÓ§[xeâ9]­p=ev?]Œ4ØÎðé*мg¼®PI!1ñ9­JQêϪ[…,,"‚›­=žn2ɯõö¸˜'\™(gø!ý±Îí\g(KqM"‚öCz:…72®w’ OcGÇC`f£4«¾øú6ÎþüÄd»òæ!AñûžáÑuÓý¥®·•Öd®®®HoŒ j”™Ž1C3ŠÛ¤}à€äÙÒä[R‡œ'HÑgÙÊùš–s¹>ô¢³²ï‰^ A¥Acøã›JIéðäCÿïﯯ.‘€b¦ð\«íi $Ô²xК™@ᔄޯëõú¥‚gM¶þÚ"ª™[玺é¶lÇNU&ê|ÕXìˆrZ°] f‹ Åõ¤òú.'xhÎh—¨mmm½­°Ôþ¤àÖÉä$cáXx>‘¼Öдañ:çÝ;Ê·(V‘܃–NŒËÝ_H Oˆÿ\G?%gÏð·ò¾-Þ/6ÊB¹žªvP«•!&^s­©©Ù™r˜Yåþ†Òñ«-åjõ^yýÛ¹rT–¤´¹=,šgb/–IŸEã4,‹©ð=®Dò&Ňjüf~OôQõÿRMÕG<­KËõ¯Û$·îÞGù¢[uö%ùKùŒ;î]„GüîîîÅgXðwê¯Îhx^¾´ZêĆt•FÕ`‡‚ŸUŸ‡¶%¾¡D \YY™ƒ›„œu%lv~þ.ÌÒÚZ@DDD"^òfoMŒÍÝ ‡–¦_§{¸ØTGFcËïCvÙü‡]p‘‘›ûÓ$˜ŒúI!uy´1Va·QuáÇP× æŠÊW Â0i”r<}|îÀþÿhøCÙÊLÓ5O|‰‰IH¬.N¬ ¥ å‘âÛ-B˜ŽŽNÐüž1ÂÖ‡såäÐݯ/ž`bÑÒ>YøcL .½fÍ–÷ÝÏÙÙ±@®àƒƒÛ7ÉE.€¿°°P2‘}_1œúÙ÷tÛ=Žÿx•Réñ 8Ã]]]˜' ’ÎTÃ8è_á“)“32Ñ¿¦¶-gÔ¢+6\èMJ'eÉÝÔxŠGR{dàÑQm绉GM¹DƒßIÛÖ –‡Ãót…„ü+§Ö?™k?Â{’Ú6»ÅŠÐcå-è Uå y¼ÝºL¾OŠ÷éÞ·oß,÷—¤3B-vww7 [ß(*zºŸÜÙ®¿æÍÓ¬Í2wXlÇ„¿wïŒ^«îÛê@zSo/ôüÑ×/®Î·Ÿ±™¾­ý¬-ñg8W $›Æ¹&& TVD—¯ÖÉÑÝÜÜ ÂåÁÆìºú·‰r ÝÆÏ@TË÷ñØo<ë`zß‹pî4 Dßqý‚C¦OI_ƾ)×u¨¬eÚ¸è|·N2‡ÕÒ¯ þ':ËÙx“•JÞ‰*/wV\•ÝD…!Ø…]WAÛ›ÄÎüÃÃãef¸â…ÆCÔþE*ÅÚ­ø¿»º„!­Õ—Ä¢Wÿ²° GJNNÌÃâåWÓþÎ?†?¿ƒIÀÛš¿bP LÏŽJZhkßr $v] ©‚:»Öêóþ’3¹Ì'€³ ¼‡J?Ðz€.÷$ˆ::r@òzîú‹–»?„ä Mrh|£™°±tµB¨K°FÖB­ÿ˜`@:g.î”Òu¿få3˜9´wÓy¡Á¾Ö˜Ì=<Ÿ—Cº°ÝÙÁÓöã¾d²÷gP¿î—š¹ÅàŸ·¢PW:ê…lm_˜š™šOqñ\ ¬yŠà½‚Òï1ôY±YÇÆOàï¾­qd‚v¼ÜÎl¡*KKËh Á’ð:MÞÈ€\9Öb“:Ô’—¡$¡¤Dø!ÕT¤ßa»U¿Õ)R©Ðì‡fP›^‡1›Åô#àÌ™ÀßP>A|ðà'P¨€à„5€ð¶Zé%oœ˜¨îÒôKyØ?ô•‹ côè…ºÊ)…Ù[¤EŽÓ-»'‘óÀLÄ–Eº‘j»Ð´ÿn×ã-@YG$*,†{_Å8W9DñŸýRc‹œšÅƒœ—d¶¦eÁ5¢Å©þìEŽèºÐ«”6Îo;7Nö½½WŸà¯¿™™aÄ[ê4¢²-—úJ~`Â!ŠdÉûÇà…rˆŠûXóæëgÅä‘{-9»}·Øêöè@»î‘üv‘ŽeêV‰Ç BGù½™ŠŠÚ­ó ¯=K«©LÝ:ß-€Á±@»þót‚ñÏhÛÁ‘¡Û/ü?vx§£ÿ厶ô ËìÍè^âWèÑ€SbýúÇNjšœo…C6ÈM¾æ¿e)ÃSÀpâÇÇ"´ŒoÃG(7&û<€_ÂW ¯yûõz«îSvõÞ»wĉ†¨ÑKˆ$ò¼}½³{•vÛ§¡‘>]ý¡æódµâp9xø†ö1xà(ÈžEr÷0ts7éâ*—uM$^¾õœá­z@òÕóCqÚI,Éûï7-3e#ÿøB§÷|™€ø|M;úüÇKÆBÞ´¶ëݦ>.}q–…Õš÷–DůÇ"®t'S*¿ÒÌð Ïά$Þ§ÔòwÆÜò±*>*`û²dG¾¥«¢í³ãº›ç]}pœ4u€G½m½êÀ‰-o«½IWâå,˰ÒÌœ- Êïžž‘›ŽäÛ:ê—Œ8Î:Ž»èXÕƒ3A~"¥ –Â_ù0²2¥°NðFYØGîöpr|)ÿ^€X¯l—½Yöi”&,Kýhðwj†$„„61ÿnš¥þ‰/röž÷_‹`e!8÷²Íç’»©wO<ê-NCïgöY®{®÷Ї‘ÕÄÜzþ´¿|3Gíi™È³Úv\{wƒ3”L©=mƒ²€ÃÖä«×¯‡ó4~‚‹–ôÎÈ üÕÒ×çÏŸgýþ(Düá9"‡û MAÑÑ`+})÷»ã_>üæe&>ò[$ÊÈÈR˜ë!Ü×Þ~°üSÉÙo^uÚ Û#&ƒ5ô ñ³_wÙ5˜„±â¿]¡ã5ÆOã ?Ñ¥9žöúÕ‚æáÔ„\ç1¿g Erm9z} >XÎX½ªn>ƒð¯2dS ŒÈ””þ„+kþ<ÙßvÙÖ^íOã°YzTw±'k€¶ „ãuD2ø9?oJPeå ÀëÔ54æ66¾òó{qïi«ðæÓ§ÞVó-Ú ¿ƒ‚E ôÚÐa @vöåkñ="äÅö}ó&¨*'ïv;"ËcL`ã–8$Ûç>—ò~˜`@ÄrEðè|F˜T½+ãHüx$ÝïܨøEÍ*%›'°WçšJ@Ýð+·ö^{V¥¥=¼çL†s~¦'¸û‘q¡:dHh(‘/1ïÙ Ô¶>’/*+û £Þo4¨/‡¥É6wDaª¥¢¢bvÛãš{ÚãÚ-–Ç }¹GôÕ«;žÃÑDc£…Ï¡Í7¥<õ¯ÕöPs%%eC–b¶åÆ(“ëéb$ÄÍ÷{øÿ~ m‹qÕÁÅ}:ˆx{Àø*ðêéJZ3‡nÄ—/Up7!>žtrâø ‡IU7Z¤ïW'°ÛØæ";æ¦D÷ÄÆE·uÝû·¶ä7Ô„[>XÒðÚOùR9c…„Ñs&%µM–WåÒQS‹Ï• ' Ÿœ§¿ÜU7}o÷Ž9äËk™¥®,-×ÇÎ37§‡ÜogÇÒîô6 6öƒL_“‘<"Žg¸l¦#2ò‡@òÅL½×pØžö ~ ² ôT#¿˜XÛ§Ø:Ó‰2ä´´´·¥ÆáÒfQâ¼N“ƒz’æææÖÜ誉µ§ÞÄGq¿æi?ćèåPãËÛ€»í<.•ï"vŽ€%vÐ:LªÐ·I•Ë„>pÞt¼äð,ÄG~y#ã2ºžX~IFü—‚’††ÆæƒÿP —5Ô˜øë—£‹ »j9“–Ç%+ôœ’¨˜]ˆ³¸ž0Z[[[mŒ) îýW=¬zžÃѱø%  xlÒJ4tô|WÏÈÉÉ»Üé¸0œ Ñ[IXƒ2|øz •,Ȉ‰×Jn”Œ±øbð=hÐ>å1 r¨? Ä6ÔVÖH˜Ÿwœïqù°#‚® @ÅΤMöæx)Té—Nz3Kx}rú\— jÉhæ{ÙÊùÞBÄ}F5–Uû3ÌQÜQ É¢­*YþÀ=TÅ©4S?WÞyR})–zÌ­”ĈŒÜ ÒKPpð@1¡ÏÉHùGaÑòâÄJ½Î›F)ǰdj¼ÔÄj÷0x/ßåtC!ª’ü|©r;¦Êdó4VHá±—^*áf•Ä0ÔYo‡ wÓx½ùè†Ñiijh:-bVTW§÷‡ zÒq\i²¢hðþ ÷ïßlàKveýúûî%™˜ö{Ø´˜å˜O-Ïtt>žËq]3?9Ypa‹"2™Ô&ÿvÎiR˜°0ybuuu§½¹¹yãî®Ýžµ¢âÇã“þC7•R¼Ú‚ÚÓZÉélKÿ,:71!hØ­Z”¡ È(Ž2+þ§¸©æ_ÅM1ÖËî$£½½øºM°¾½»ÚÕ1~åðøøÕÆxõâ@%â6R8Œ(x‡«OŸŠVñ5éÞm%:¼›7áØéáL´;‡µáw€"ÿq—·ÜÓ0¥ÄxëÙÞ.K(Iö{CÃÕdÚÀÉ&<.ªEOAdYv\2I¦ê«~ÂoÑVUW7áK|Oa™2Üf¥]åtƒŠŠ ˜ºú =½wH:ÆJÐ@¯jXXlÎc}ö©ÍZTíutÌó§›õ8°º19ZnKûð¡Â†þ`_¤YšIDšR(ÅCáÖó+³÷?þ°¬"Opš„C9Ôî~ÉÙR%úTÊߺ︎BH­(û±¨/–®Q_Ò„4Qòô¹$XÚk‡GGTÌÌrn¯"ôMöMNNv±‘Sôh™³!ã²zoÔ[,­¬L貿šÉ|ž£QÚÛÌî:À®×•À‡+r¼®ÓN'<ò|½×§ÿÞg«ÀVW1ŸâÞF»"Dòȱ]k{ûk"RRÓ]Îóá`rž÷hÖL´aÜPQç1.ÿìL~ddä°øø±EgX³30PZWð¥©ÂjêJ‚Óôõ×›u¨AÁImªžó+ÙkÅÖ3ï›lyþ³gùPA(wmVóÈi«Ô*I”ï„@Åõ‹÷0›F=¾w‰Y©¨ooONÖyVè "ž¶Ç™}ÐÜÅJÿµ˜ÒY׎zšt”(³œç#Û;8õ¹#hFÓ q]á%Ÿ¾5â<¾xИô83”€ö’Ê¥_æ&ånm®v½êˆaßÃÓRÝ4| DW¶ÚÀŸ­¬­å(¤Ïûà%hÀ ŸÎäçë6›¬Ê-MO¿ííU´—/ÊÈ@‹bÒ±èv@AÙ›À†ñ¾!1!!W.!*ʇA£äöÇ=é2bFFíõõÈ< ÙËÓªDL(þñ¹[L^—T¦ýõéVó§G/½ôŸÁqdfC×*7šünÒ§gæ#:`˜¿(çì”1A(q×UXWÊü±žž;ý½í­TøËŸ‚œÞ磔#“‰4æ/_Nº:m.r?s¹ô÷S.FÍ2Y˹ŠTùˆÛ`ÝÆOr+LÆ çfg{O&Õ´þÇÙqCsóÌï4IÕ"#¹ì=jFFì[LÚ þ7û5,‘ý¹Z·˜¦Û£Y!Uøæqá$ÂóôsqN¾·ô¬M™~¢ RF¶Ð]žYô_ž÷^‡HŒ,kÏÞ§¦Þ5-»HƒÛãAyøÏ§G;a‘‘ïåßû¢)X}h³ìÚD>W `&šÀ#óª¶ÑáÜ®\ÖÿÖÉC²š—4ó¥=îñÍù!FÀ[Wak5ü_è}3 NƒGzk¦øó°ÄĬíßA8Hµ¥D|³š¼KCCÍÌ k >=¶ýR¬õñãÇ?[[,õ¤ß !ñ?T˜KKK¸W‘Ðß]-sÞ¹ÏËËÛ»}í鯣3Û±ŠâS••@9²jÿ¤Bº%䙎²7óóóÃú.·ÕAæÔôt]Àk¹ã©á)ŽëËrfßexLSUU¼zúúTttèp^†£ªðšzc5]êjm@ýÎïÍ<š›Vó^RDDV‹æ¹¿À+#ÇüÉZï-+Á$ÞòÜENNN¾ùÇÇÈH޲<=S¦£ñ^e¤ : s]Îâ¾ËNźˈŽêÚÛÏ{PÐMP9pA­„å²·ü®Î µ¾® _‚!¤u-˜Q¼¹¶éþd»Oô#6‚ÍÓ4¾~ÝW¯'9RcáQR26-==& ‘õ?è·~R‡¼hùpï²›¶_[þ>q¾ÏÄñ¯ÒBÑìÆ|½<'—W@ qÛÑVUU}TÚà GutVÃÄÆ¯$¡­ƒÚ rþ£»ã.+9!°J«—â/_ò•,Á+ÆŒ2s;TTº#}>Ã=ê£^¿sÝô“*É2iË“1…»trm5Šþ»)׈Hæ°‘…žNÀ¾f{Õ.s3" !¥ðoöÿé7TK4ÑDjÝÆ‡È*ŠÇÈH]/Þ)–ÄåØþ—¶­æòÁ yt– GFð(M ¸/¼.Ý‹DeI2µ¦ƺYrHÅ”„é£##¤oQ#;/Cÿ4ñúúÞΞ=MÇ!œjʼóQOéGr%3¯Øà÷ÖFá‰)ˆ¹úm‘¨&”dd£_$kJì/zÏí6LßLæ¹P­+’ÅÄú×z ßÄ#W¾ÈöùüŸÖÎi‹sš(-Ÿ*ñë°»y¸Î4• ™aþªåõ„áù²yëÉ9üÀ‹v± Ëè)çóÇ6xñð’7p}¹?vMéÆ5õ‹VfU÷/qœø¶.†*ʾtžàL&zùj*Ê&Ýᯙ’!bt’¥ ©²fN®•#ý-Û^#,+¿½{+˾×ÿm¯}ŸŸú§µS?îl®Ô"¹§""9F ¸1.Hh$“§ç‹?Ñ¢4q1,œ¹Ì±KwÚÖtè­ÙþÞ™}My‹Ëuÿ›7Ì«ˆâ^-L°â㉦&Y0Ùã+µÊÊÖº‹s>¿ìÏú*¾´,"©•Óàk“,öþvAÓUø~¶[Ó"°}º¸X3Ñû§<ˆ¥(ãN3X¦éÝ/{û|ËÔT¯•RI÷K¿Þ¥UVQ‘üõkû׉4< œïì­ÜrvvÞÜßwÿ<:L‡mO?¬ÁþküwR^žW±Õ;.zVO^Ã3+2ë焞Úf©ØlL»ë3ü¨%Fiv§(*,R.çNmà: ë'vi ò®\Öîd+z–ÕôÆÀ7]u$Žê×(Ûܽs °eD%˜õp¥EñÀ;|éYÚ¹V:ÑôöÆgål*´+ê}–¢¢(ÛÛÛðDÎÃáïïÓ Ya÷`{gpf,Äá å…/ð x¬ÁÐdÁ(mº­VnsüXhx¸@»ÓýÒÚÆÏO½6×+7J–ã`”ýúæO´õåFÒR"¯à)@ ß¸Á3kóø|/Ïã%ˆ@ÏÓÓ×WQP–Ûâ[/…Ïï*"4"â]4«aò·o¿’ 2°FÐß"‚DáBÇK£òððx¹aé¾XèŒG9‚i(;–ºz$~ÎÙ˜MÔ ù`_CÀ"ò‚<Ýæ`ö•ËÇá¾"ýw eóFë#R­çµv?OEð~‡Ì»ÒÊÊê;P#“““ˆÉ¼ÌàààãnTTŸûúkkkrJJ×HIc•eÄûûû45}2<22³¿6‚rMU=§õœÄ2 Ù(ÔUòˆ‹‹k|é[i)ç Y‹¿ðíƒð6¢Gœ(‹ækf—Éôsï¸B[núþS á•Q‘éerÀ°z1y‡£Ú%³öœ¢Y í»®Pü×x ø Ä^ üöFº97Ö×±#$®ÉáSùßY-÷¢”C-¼[~/Üã P”¤³éò™“ëëãYü¦&&)3ý?^.=XòŠHyïùš$¾ÈèüFÎøæ4¯¹~iàVBS+%Pe­×ø¡ƒ ê2%% ûPÕÚ×70¡¾N yÄщ¡ÍT¦Ê#ñag>Öò`h²™Š²Ù}€er RRPgdÐfô™Äñ8b ÓôîÎÎ'Òçp؇í|ûSkkX׳ÛÖd†††€Ð¦$'_À€ü&ì*V;JÅ‚Wj1VPfiâñ6Ès·áóõÜÁ›iMigqALÎj¾l d¥!"E éâ&ßË•ïX0o³1ÎÑŽûѽã½8íb¸È¸Ìõ€ñ¹¢‚ã£0 lÀE‡ a7íÿ ˜Ö'}tÀMƒX ;¿·µµ 4µŒ¤÷™À¾8ó‘$,ÑKŸ2ÌÕ >7I‘®;]†òîýû¯~x_¿¿“™›û^>~²7ù}™„@8ìø[a!ëQù‡ßïIsÉ/ ‰›šœ_N2Õ³Ÿÿk­ÅáÜñ¾+*ÓË[•e.UWºš]~d XR€/²—˜0÷ùÑÓs!«ªê«¢ãVülI_42õ-jôºúA}m"®÷á–©ó ]Ö^u&ç* •Óivœ8_)ص»f’µòKáêAºKRîûÚk0×*-- G».ȸ㱻»»?qY'÷Ü1áC""¸‡,übãQi?Î‡Ï ýþ ø˜þµÒLJQ’´R•×ÅJ×­<²ºòÒ]“£ÄpLÓEáѺ’¢"¬<¹8?¨}iiòë—ìWÍr¼ÎÎNƒfq™æÃ­Q‹Q.ÀÝJE*”—B(äîÈ~KÁ<Ÿ9©ûRùâÒs¾¾ÿWaÌ©<;âûPÏ¡‹¼ðß?Z~AÅ7/‡Ä,gØ)Ù—Ùì2JßÕjª¤›¥ï!2ßX5îj_Ÿþv)½©Ý¸'ory=B¢/õ¢ägšõëËU –ù³gQ¹YØQ!§Þ Ê–-2³¨úý¬¶ |îfÐPxô'PÍGÆž«O=3Gæ‹***#"ø¬¤a/µ¶6EUu5â¬νzö÷7ü}‹ ûƒe7³èM>M”ý'S|T×W¯¤»þȬ/V †‡9Ã6‚ ÷1ž7ðÓÉÀŸ»ˆØeq”¬‚–ÏÑ‘]›Òz Ô„ï©æHNû]!õLEL4ÔðlK\K‹¼?GÇJèý÷––ëOŸ>—”ìÙX²óõó{#uß+ |æç>“ØãL­³ž÷ ßbÔüFk ¤â1WG„;MjÐD™°™Á}ÄGGGC?|HÞÐÈTRY>0ö¾¾>Ñ“/ÁiÛØ]Êê~’pòª*á5@°–ÑÈÈÉ­ÏŽíwW‡.´ED®¹ fjròWêlFu5_VVÖ ]Ý”ÄϬ¥ñ™% /¯µ'†š…&Ó’ÄùÜFËÈÉyôTHÚÑ7Òýý}†}!rµ3î×'4ì­î‚‹.»[ó‰ :<ÞZ‡Ç7øì¢°#uW,kš4,ž|½¹ö6Ç“tB…¸¨¼ÂC1™X÷ç«whÏ#»…Òùßž¼íVpëÒâ¹q ÄqÛ·NVŽq6±¾¾ð¬x2í4ÐÆ0ŸîÇg;¢6\Â>Ìâþü9br{®íù~ŸŒ(ÇÝ xy¶ŸÀçúñ£žu­žÖØªÙæ´„åîV‰$£Õ6]Ã`xÆO¢ºì¥›7#4îÁØJˆÛË!ñ-~ßÈ}õF™KòÓlLTþ*oóðΩ€ê™±Wø«´^9ÕX«Zf9¡Däó*4„G?ÛÛ…àgNü7àT çú2¥AVX#ùÝ`—ðõ›÷ÙFtê×9¦€#nÒ{^n϶®è\ óðäFedÕhy±*¡¹‹¡çå3þá+Ï­ÿèá´ ‡‰aQÖµ%-7Ã:n\tNõ»£§ôg^ÔJˆ‹{fg?T¤‹h)yûâõs>…†¾GÚÍ(ô<ŽÉ.Yc¥V6õì`À¢›ü K—´<"Д¯Û< öšb ? ŽÙñÙÙÙCÌ”¶éØ¢W¥¿V¿/ŒÍÓà¹™ÌØõ9Ñ÷Üç¯Â€1’*ÜN8ÊæÄ¿)cq¥óΗ??Ü€Nbƒšs‹…l¬¢þä¿´_F[^;MòÅÔåîé…ó›Áñ8DÖc!v9X ÅŠäûç Ûh(LÍ¥b9:&%+›Sƒ ˜œœ l÷ˆi‡GGS^8üžÊÙæá‡kr5mq‡‘»¦_Í]Ýù×ΆpoÜèN阘 DÜßÕ—,þ¿ÒÏkz’Å7l¾´ ]P]=ƽV:Î<£©© >'é‚í ¨222³³³ŸâMë7ØO6ÄdeqÉÈÈnGµ………!!Ž[Dü„ß«úz=¨–‡‘86:úz¹&6''' ú‹]Jÿ±“[Dâe~mÜ#âÞcÖkÔl˜Mü-çchòu´ÖCà­—ˆô°—Él¼J­V÷* eÔ·o#,,,àÀª¬ììXòçA3XyM¹JÂñä4°˜æ§;;;‘€;/ÝÇùÎ;d<˜°EVe¼þñy­ØtÀjm˜]³Ú… imm}d9Î0ò)ÛºåãcÛù'9ÊÔ X ²\Nö¢àõ½†AXD§=cnÛæh¯ˆs|D´“áÁ#Q «Ľ{÷Ž Òà`ww~ €­7'ŸÆñ»‘´E2°r1>xp½-ŠILPðJg¢@Èá¡“×¹ŸŸ,Ñ›ª÷7è&4ÑëR¿f‚‡^n*Ïñ™à ÿäw0YγQ…ŒÁõxgk{»àpôyËÏŸ°kê•®.³ÇùkÄw8#*Ê'.Ž À1r¥Ãš Mvgõ<–gW›Û7úk ÕxÈ“±;zU‰ ßþ|ÿÖ-jÂBƒ®ópþ:ÀãßU»L*ìPhÔž7°y¬»¬.Ò}=™Ö¿_ú- Í€Ð1ë·âõÍñ33ß@Å¡h&çÁtßât\×-³F¾8ð¸@\ÐAp¬ï€GCÃÆ56Î2§ïæÒAVVQñ*0‰3W ›2äR`éHÀ {”¥«I¦€äö£þý§‰%)¬’0ÂéÌl<àçç,·…ýÇ(ˆŸ]]Í+yµ@|¦Yò8m¾¸{ïÕݻšð ä¶ÿ@ÿL±¼‚€'íѬrªªhOqCóB,-,°."[ôdé">1뢬‰­¦Ëï8\ù#ã*óÍŸâ~î6‚]Ž=K/ Óþ í1˜{RRArc¢“'„T@qj ñ¤~¨g ³½ø—¦Ö·o¯ÞÄÅÍ}‡“óµX0‘GíÉ:MWÛÛÛ°GÛkEžOaÆ©~%$ß”@ΰù¯«~{ñ4Üæ.åëM$àð#9œÀ+&’9š$Ùé]åeê?<`dd„ÐL}o “èÅ£¡~ùÌM÷T¥"ô˜•%à UbçgTQmpÜEa«»ÚÅÀç±uÍͨÀ|…•”"ÔC§™«/G]Æ´Ÿò*¹šoòòòÜGººp b7²ûs•´ê>~ê…FJ÷ºˆå¨«D¬˜l$Aç_6??õ¢ mæsÝŸË G¯ÁòééiTÿ¸ùûì|¼¼ÄX¥ã@mz·&Þ jQ+–Œü|‚Gåœ(§ÉœfkήQ÷Àªùû£KŰ]O ú6:†LGÇ€qåÊ•ͨ˜žQ®ñÌq˶¯ðØÎc‚¯îŽ´' XìNñ©‹z=¹À´þ”ÖÀCŸñ»¥óº;™ã‹„c__9TÜ`õ233éñV¤kô¾~ssÈ0qj¸Øå¬T‘.Íú:¡­D›ŠÄC~~ŠæJ1`VP†÷e«’õÈ1I~ò‡Er«ãÕ¤®ë-á47HIMût³ŠžkÌJƒGSì{ñV&M¾üåsPTÔ-éxnýMmw÷š§˜ÿ‘4Yö ï³ÌcÏÕ© ñi: F}‘q­¶ˆhˆ_«¤±_J7@øfԮʘ/4Ä´~˜žrù°‚gxòhðÕ²%À/_nz]}UU"X©"äƒÍ~´a?é¡_ò&1ñ‹Ùk-“Ÿƒÿ^Å?\ ¼àË¥:®kì»Ë}’&çÕãÕ®3~4 OEå?Ye ˜ÞåpU@@V(|C|{Õˆ.Í"¢C—d˜à,*@|8jÛE(XBBÂ`‰ylÍsøÀ0I90š‚¦=Y]uo¯Á“î'0™…€wÓ…]ü^µµ¯ÝÜnPRZZþ¡ò€nÂÚE|||ÕѼL¢D÷ã(X$Þ4 NW²Uòš"4ŸÎ_ËËË3é£srv~Ùà{CüùówšŒ–=£—‡/Ïÿ[Âç—ÁþêÐ'~7nVV8ìŽ_]>ðññ¡¦£Cºn¡3^ÈȈV9G½ÏàqÍ^¿Æ`™5õŸÑ€&²ÆW­mmCCÄ---O45ãÔš½}|„’d–Ì­!G£T½Oà†œ¡¾É×*çûfææI}&ùN[¯¿.&‰*TU}a~Ìq‚½Œ‘l‡¸yälS’ßå)1¼mˬ­íLA†ïÞúHi^ˉãú(óbs‡qOŠN~V–D­–’ҽᑑ•Z ÷€-y…Ƙ¯‹QZxßZ­¹¥%Ó•GNC##öööϧ‰GPn÷÷÷s ZZNܽxßL€ï øÔ+8öM—Žgñ•SQ1üehëíßýí¢µUâlÁpy'¿´ôV±zÎ žÂ™úrç8î„Ó V@ì›S˜ÙÀPRRš^*lÛë× EEl)Ù¤ +£å¶—Ï¿`Ø÷`¼Ò±kÕöîet© ˆ¼ªu?Ž–ºÿÞ=?Æ—LþÓ]3k ‰ŒDdíìí »rjÙ)à®ieûró<ÅW‹û¨ráp…ýÃ/RÑ¿ LoÐk”`]/.#ÃIK³ÝxKg2§tœEµhL1q¾hk_ò«­  á!=Û"2›&ÿ€……³Ÿ€îÁƒ§/^ÀÒP$lw€sæ ÚÚÚà©&ïà´ÈrìÈ‚¼’<ñH7f³ÁGn#««f¼'«…ÀMmEÕž^Ï{ áäâ2=bYËîD·u²Q 3\{÷ôž7â^Ešp; ¿‚ŒŒ„ ‘IÁ]Ê||üçÏŸ¿òìó »(`â‚Ážé’€-R(›;…3]ý½1¹÷į̂ÂÞ ßö/²´Ÿå3!¤‘qÛ¡]»v žÀo-¥'òoÆðv0§Û©aI~Ç|°·èwOO’r6$,§S8Ÿ¸í³j‚2åµY¨©¿_éàœhV“$ŸùY9û9¹ù· Õ¡¼‰³uÇOæ$ûëc€aN‚·‚ƒª Ú?½tÀDÀf t X¸œw|ÛʳÒp“bí?¹9aœ‹$©ËÌá ½lZÿéŽXÎÆ¥žô Šdàí‡ý–~¥cx°{ݼ}©'ŽcþãzÖ@™ž„–Vü§OŸh±)ù5í¬¬pQ±ÉhEÅÄH?R±+¬¨jy”òQÙÞ¾øw÷õ)}l›ƒZ¿Šåâ‡'öçnÖK¿Ó’¬ÿk³aæç×î]²Cq#@z2ZaŸ½83C + Ðß ~ÍÍåøçñ#_Á³Ï;.Dçgœ†&6Ù-F˰É~Œq-žæô #dZˆÔà!HSö.V¸½lw¹)7MW>äèEkU:P=z„ B1ÂóÇÁªãålhv¬+N6Ï7Ë÷û9ÓôtMàÄdˆ» ª©!<;ôü£q†ŸKKct%A™€ Ò¿›9ñ„¤¨ò\¼™ë¥TÁ?ã4[Ÿôw†cÄ%—Y¬{M…&÷ë—¬iúáÏ£I/œÉéé+p@•½}#*åëkEðA*èŸâ¶›D…†Âf†bêr^Î4®Ú/•ž·nVu§”2°,$øäfõ_&@þòp3Gš¥ýMHÊ™–ÿ¿ŽñäL5+Câkz¯ÜF­*jEåk ¥Bóõßi¨VÕ8-ÇÙ*s‡‡!¬Nö×8¢…Ͳ¹„sºL|Tø÷ꊸŠVÅLÓ…€˜'£¹ûü¹¼¿1ˆ5ׯ(jjj¡Z™ôXƒÂ Øø ×údöŸÝÅÓ,³ªÓ£Ä’,A¿,Àû9gSV^NuïÞ5ÄäÆF^ˆšŽ‰RvŸ À;a€o½L!ØÅ°Š­5IT ; e¼4jšüuñ4yZ|ôp·›}¶ä«¾:î\¸ûŒ%ŒY½Õá—&íc%æ¤K©"$Â>|xKðPù;Ð`gÇ{B+³‡×'j)ëêꬬ¬§¦^ÕÖÖ&<ˆþœhrò7)@*.;²ÂC@H#ãuÂM—Il*Ðo ü?Gä</rµÄ¥¥K53W¶]ê®Ét9 ªæGpSé`+Sðù÷¤ËÌÔã4³BɇO@0Kå3Í”F¾}{tõÚµ¤²2¢üü| (#ŸÆqÇŒQºíÞøýû·¬‚2B\RÒ ,Ë{ÊsD"Š\sûÝK£Ë¥z‚ž{Ùú vX«A»gu5 â°òá©ÉØüHoBMMíÓcÛû >Q¡½šp$-!¸Šä%øAîxl”’¦Ý­­:2`8G<:¦sÎÂCæw M*Ó^1«ù“„|® llm¡XÉ×mޱïÒ(:ßÔ'“¹´ªŠ (·þò Rž’ÏŸàッƒaï×Ï0j¬iX‹?øí%„O$dxæ Ç"Î4 ‰‹£%§¤PÎ7‹íÊnýÔþTüBÿêŒ?H9Sý²²)9Htç»@ÕÎæ&a·1>fTùP%÷ûÀ€Jí) {d':æÆ5ùI‚š>o\òþ (jñ˜X´¯Urz^ýyâää+á÷Ÿÿ€¶/ëßß·Üî*b±?‡Ô}'vb2;¯FPMžÝÜ´ê¡‘ÚE›¹,_ 105Å@“r¾Þê“Ó)1!üë©%Ìåªõì­ À9­šå6×^¾| ð#Æ=±²’G‘Ž@XΛÖN+–Nà½þÔéÉGŽù1[GGβ–œN-WÚvØ9“†4ùå3ño1i÷Zn 6¿¨f¹“œÛ>XŒüˆ¾ÄR{ ;†6ùå¾ìØUK®7GM¤–/šƒÉ1 ¡BBFáýHæ÷µ±ø:ð¹ç½>•|·‡?ɾ;ápR½i:œƒ¤¼ `èåÖt£ÓVã-ÈG!Ùªï,,"BEE…Ô×ׂȓ'O<Ý_å‚=ïìì\‹éÍT`6ì$;ëaD—¬$SKØ?&ï d<ëÊ'ðó DÀ»ôõõ!{O¿ë›ÁÊâ°fÔñéä³ÅxÕu £buzµ‚««ƒu- ²Ÿ&ºrئs¾ýk›ºà~îßða£¢£¯¿D õzê…2Õ## Œéÿyš™Ã4dH=CîMc³DålEEüóür$“lì-?Od›¡ HŽÊ³hVÃMÀL'wºš'Ü =ðÝç—ù'’¹ýá“Ãà“IQæzë^~îG‰{q~Ëˉ4² HÜ ¸V¬d»ÐIõgb)ËðÏpL•žArQ>œ!h¶ckãà °‡ŽŽ®½¦ ï¿Ô5™ìŒú.ÇÕ® î~4]Ðv'J? ãø\ )3‚_k>Á,‚ZX·=‚ùÎø‘ٳƀ[Ô÷î‰ÔVÃ{°P/ëŠÇÇÇQîiè~re,ôÇøf«ZÈK¬Ëðã& |;¼(÷@;â÷ï`)z––¦#O´R[Nô¯ÂÆнxÉ»xn-Ê9ÊàM€3ƒ/·]X®µC~L'®ÚüAÄf$ž~—tA£VKEÅÇ~¥ÿåÏP*8¥PVý¾NEìpçÕ\kL4@þIII)Çuƒ©zW>Ü@Ó÷ wñj£î;°Ž¸.wQ°É|ALq~1^å 3.`y =EG››a,»ªí~¤_|´“xèé‰${ŒW{Ü—žéÐ@æ ¤rÕTác“§e|5ñŽMsÎÀ¤gÕvëC§ó£…­ÝÝîd‘ŽÓû¤Ç ~ÐSûŠ^EÒ(1«›m §,³ ”NàM¢pHõŒJí1à µ/ }b5 >WA~{þFÕ½ëçG]¯æÛ£á|>8­ ¶F'‹ÙkŽø¾=×£ðëíèMðQ‰˜¯$ºí_}z9;d©']w´Ìzóà€sذ^gɘíêÚÚÞ )£¶ÆEiæ9)“'à¦pØG,‡9¼óØrhb°·°1âqJ w RÏdÚÍͨ`±’ĆÃm¤íõΛ'œ8;™¸€¨ózÈÎÍ*4Ü«e1®ò¬Ì'kÏ·_Q–Šf™{³lwó_ôm$›®ç¥˜é²÷­›UHm5ðŠ³›Êü2fò—½õ€ÔMRΞÚ¦H  1ˆÀa±±€ÙHFDE¥8nŒÿZ²ûVXhZ 5¡Ì5óý r¨ø]„çׯô°…æÝ»w¸Wá"³Ojn„Áç;‰ÇgÏÅc–k·R?‹¦¼‘ºojC4ò·€ôxtgggëx%O(Mvýñ¹°òö+OGÎ÷€ðp ,|¤yî®›“uâ‚ââ¾î:N¸b¤ÄIÚêÈþ}Œ}g¹LBFå_2šŒ¨8ó©¹_qË÷ëÏ’ƒ»²îi _¹bµ>Z~ƒRÀLFàŒ U$Á'6c<ØÕ†EÊÁf<áãBãSÉ–ßÿz)”À'R-M³ºŽ¯Y®èì…‡5}Z®eÆÁ 1èJÉÿÂ/]G˜“€Wïn£9óAúül¨ÿý‚Ò÷€Uq RâãëYÿËíÈŸ\8?—²…ÔûFxõ墷áøÎ“ñ˜ìÃ-Ùrø6@:m=i¶Å¤1ñPŽ=ÝËóŠx¨Âz² páx ¼ û¿1"ûh:‰´ß2w ÌÒÈ$ô l ZMçå¥^4™™µŸÔ6‘766›GH\sttªìU[$Tc•Ž{ygK2p EÝ‚6Ì  „ûþÅ“§:`× çžüñ»½ß¿ç8Êw®Wqqqññ}ÖÛy¶¦»éVÌTðŠ1©@ÑPþÝþ\­“¿Åkèw `Ú'&†Ü“ŒœZªÑ‡Ò=ÃÒqgþùàð°`v¼ÅñKKÌÖû¿M2»\X|¦ñj¹7¸9¶@€œ¦&æ;A8à¦aŽ÷VÐppĺøöò€hÍP¤{}0æˆ@ü«àU°v’oE‚8m`p_BR2,"âÝÏŸâ6·ÿŲ;uw“›·vé¹ø ª²H ÷(*,– <ÿXÓé[â’’õý9[±§¢ÿ5ª~h⨽D /ét¯øxrÀb5›áx|»EYÄ Fµ™VU mn» 2.œ{Ø*ñ ½ZSÌgåP&­düÄ÷1›ð¬ Ê€Ž9ÌäFGê·£Ú¶ò<ÎÚnk¿xq{ƒ@!½ÇBF/L?9%%'þÊ?Æ$ò÷”äò”ÿy¶å4¼÷˰3îMTÔ-m×5vü[·J­›Œ88qpp.5ÇÞ†1Éáññr©X Q]‹øò¯¬ÞÉØ첲‹àb…$éÎAÕ1Âk 3`_0÷OŽŽ¦Á8^›o²“¨¯»euÐêfš.ÿ)?¿‚!ãK“ˆü^Ïdÿ@À™ƒ­n32 æ#_ÇóSç€`E+ÁÜO"Šif¼=áÚs¾ŽM_ãoI8ÙÆ|ÄuÑanšž^ú¿¨ï`•s¡»Ž$Fß@_ß˱ {Øj‡‹ï]TTdÂZòˆå¯ÿžÑóò’ÉÉÉÁJÇu2A!¡|“¾,åfוœRxÚÇÈHHæ#""PNÚþ÷‰ó£Ôলÿ»³?GyOf÷[ 6­L&ù>£bŠt³Mx/`Pß—\ŒùÀ™/M™ é¯Ï edµ¶f~ ؽ†¿eÍÑ}@û±ÀZ«wH¸ô[ ~ àÖR"· 4I·%Hû8ùýƒdÆ© ‚ßù©´.àXû ž +’²§{ £\*ï–·I>#»ù\ÇÀDÀÑ RÒ€ÌѼ÷ÿ³(ê‰ñ ¡è?1ô ¸pðs†\ ¼¿Îùâ7'ŽË€<ލ:ÝéÊËrVÓNS__ kƹ,^¿æ…—= ™‹ÒáXù$pqÔelTÌÖ9C‡“tæ»-­'„q8yHƒvD]¹*–ý‹{’¤[UÍW+^¬sY˜œùùAq÷Èe×(‚høË–ï.nnHÐ ^Á±ä—GÏ¥’;…qè³&ª]Ýü®ß‘<ë6%NXßÁC<Á£>êƒUQ'ºh°=Ø¢síûPOMµ›äòÍÍ8§ÿËônû'×Y7ý{qî,ÿì½(ªnÅpr_zrXó{`x ×Þ}‡æåãCBFê´×§¢VÁM®!‰3XjI 3ƒÔ·–¯˜0>~rRŒ]ìX!„‹ÐŒ¶3Ç!Ý´lGSúžú,\V[;DÁÒÁÜ©†Ù¿9o´´C3R RÿÊ(Ê9×¢H+Nö¾Ç;¬êE}û|¥ßþÞ2ºÍ7÷3—×@¯ÞüïãB¹ØB'Áí!ÃDóÞ ŒLW™†rsÎЃ!¥ÞþÞ¤Î@T‹“Ãáw,—Ý’CÊ!È#„ὄ ¸ÙØÔѸ‰Ôgg8ýå{na“´Öýåì1Í]R¦=^‡ätt8 Ç7ú `yæD†‡õNÙYŸzáð?ÑÓ»{zvö·!ŽcÀÉñHöIÓm_—z¥ûðÅboóäÙ+ÊÙ³3ÿß­·Ñ2²Ík\¬Jׯ˜U\?œ>z½»ýÍkå…X–Ãñ‘2ÙË6»ò‡ó¶ËæØJÇd•<íãwËõ?~`fÁ–}x/(€É€ÈÕ»nT˜¿ ã4D pªþ‰ r*7HHÐ1Th—e·ü¸,®T mí³Úó’›“èF玚¦?í]§×ú‘3vXƒþ¸­Líó5áAoðÍ®’xj¯óÉî XœÊúPfɪe!#v)~!ÃÁ¦xJõ΋ÃfˆÙpŠ"33ó!P'ròòo©Å‚á­i²t‹=é8x7o2¿üqÕ7Ù·¢‚Þ}§r‰¦<}òHè;@Ô8Õ„ä³û`&q¤Äûªá(Ôj·æ’ÿN’ ëaK‹ËûÜîGj$.µÒ› ù¥ÔÏî¬n󻱻Ř]‘)4„£DË£r­kAó—Ìú¯W§ê78ÆT)ÞþÍg"OFÞ½{÷6##¶X0Ù›ÄÄÄ:æy2K‰™C`ŸöÅöïå®?[–]?S ¸ùLÅÚ”ø*éç\QaN$KJ’ó'{ó=_n%O»•a;ôÖÞ­wMÛðÑYøç$˜ÂÖâtÿSº3zsë™2Ø«³\ÁEõL‹€æn¦P…Òׯ¤2J9›¬+HÁŸç>£ú§·—Â/|÷ØP·3HG×|xº‰Ù’ÿæYˆ**GçÛŸ.NÏ?çú Ø‹»¹‘?r÷ЖÚlê)ä£àŸI‰ßRLåÑ>Šeݹúå N#F[õ$ñôÛåöÅõš{ƒ_Ep¯®Ž”â¢ý³¥åÍ”÷"å(c ÿ³ä–!ûß’%Rûk8 e3_ÇèÒç¡úMXià^Õ30dŒªïèÀzðàÁqM„Ä=^^ÞÛI²´²ZZæÛ§¾ÜÀVfÉ~rèΔ¥¡A»Ï}tttÄÓäSSS_4úlnn>©u? ýø1Õrä·}¿´­®ÍYM“[ÌÍðŒìiï»öFȉŽošY«‡y-®¡[×õŽmµ¦×ˆDUy”ê¼;óôʲZ×á´š9¡ë_`Rý»›ÃòÿÎPÉ×®]ƒ3ð`ÍîtÃuxô¥zü_•±Wwï݃Š‹‹?ÚY¸AI¨gø!„U©Ü #ú¼_&jjd`&¾AA§G;H ˆá<8u›±W‡‹1\4R/Ó‚Àádö‰»ù—çÖã$鵕Åîx&ÿé¦ä…p>¾œÜ 8jˆÊÈ܇{1¤áÏ™ Â3Š›E¥&¡"`‹ÚS‚u•ÞMÊOttP˰ì½Ozª'Ï)MÓ/å½Éû´¡¡p–Ùc›«îîîô|"Â8¸Wÿž #åšÁȨØOî„!pŽ™í¼>!aò"SùßAÁ¡LM½ëíí½8cp™ o˜þƒUJznNŸ×ßd™+ð?;fÿL(ü¯C÷—–MDR/’Ð*²¸¥Nåƒ-^¼N¸FËÄ$¶1^½§k<³vl]š¶"á7ß4{ìÆ4÷åÕ¶+«½ˆ&[ÈÏ«>5%NóÕ‘Aol:øF“ð8kò~m<´ÞHWÿÓÃ(µ³ÕLI ` ˆý âÖöö"jjj_Däxê…²tÑoÄ*‘†r²¶¶^ŽŽî‘ñﻣ¢tŸE1j ZY}«c~úô©yLJ~•:ÝŽ‰„-g¯{ ÍäUãææ¶7B-h¤ä!ÜoÐóüû%VƒŠ†Õª¥ÊVÀò×x<{ùj×”ÍÚü¢-‡ê¿»IjÊëÿ¬—`ëú³de— ¼´#+Òé«¥uÁßì'ój.õÄ”IˆÎËR%©sÁ8_Ï/ºoBBpàLij«šÎÎsµ«ýá üüüüà¬éõ±JTðÄg8ûnm¸ØiÈpÏ )¹Ñâ¡›š¶ Øj€ÀÈÉap?Ýã=?œ¹ŸXkÓDEß»O;1§°¢¸ÿ¼W.ó–Ôõ–öwI?þMLëîÞÕm=É…fbÒ6¿g½JVÞñcå²A¬:ÚbÇ”›!¡=ƒç#”¡ga(ïx,§•ó _‘3ñ_ÒùM´·žÿÎí>OXd^¸Néááð¾óF"ÍÄFs†ÿ?«hRɨH\–Ì$=ï ñåöùs þ4Gyf´ÜN§ÉRÊF þoÖœf¯—zÒ©YYo¦¥¥!&¨§7+ÔÖÛ>áÐ6‘kÓÓÓíëÿY¬I¿›‘²éžsžX}’%A)p^ž.êBsOü6žµÊÕÞ¼2Zy| ò[/åb¾ß¾ýög[ýµ§¸”mòÞZO„Õ‚ß^ÍD–$èBý!Zo}#䧸àýk¿wªtòœÃbyâÞ϶WÄíÄqTWtêÛ©Àc{ÙϯB'¯­áž®Þý©ó•ɳs{jãZ£giÔk·ˆ íðIÚí°¨L<-µ|h¼qѨHòS—»î-7b0U=Iäw³²µ}è¸ë¤ßú5#„ZÝ&Ìãƒ.hÑmï:’#ï&èÛ”c§ñâÌÏÀ‰:y=y:‘ŒZþ±±¤§ Îg{ÖMįw:à %4¾¡õÃ=IÀVϠÛSÁlٞΒ8z¨üõ6 222„ ê 2|JSfd^uOÌÌèáᨠ³Õä“óóƒÚ™ÉIÙ–Äܽg* ó 3K»ò·§BÚ>ˆ'+ê¿O-ô8Íi5mË–ÿ‚ûü8ºœX»ÝÐ×ÉàÔ¬>ß…Óº>rgÍþ ÏHÿ+;° Þ¸ÉÌÎ^œÍ¶„ ‹‰M”ä}]ký¨&GNEEÕÐÔÄbÒKËF‚¥žC¨¢2@×Wη)ógÆ«+CÓoèTÞF\©Bò¾.3ž:-5/¾3 †yb3Ù6¥Ç³ÖÈ1Úäß¿\lº4;än£†ññ󷬬Wºº äJûBtM7 U9³jUØM­•N|òÁÖ¤¾ü)ðl[aìwße,$–añÝò¾±Oƒ³­ ÕÀð|>»öîæÅã:gß?©(P‡‡2o 6õzD$[VŸ–˜º:ì-™.6Å$çþ°LEƒOM. ÞGMëß§2Qã¶btù»‚Þhi¡Þö¦M ¨åc<§(ZBò4Qouû¬(ø«0vî‡V%ð*w -½qpå X\㯤m÷§ÿÔEó8Zõ2¿j@3èˆñáÙóç"Ù}‘ƒ‰@·TVºõ2xãŸÎé6­‹aÔù³þ¡ÄÙù½U1¥¹sâºó´#)îkÎ0ÛM³{où+šæøÊ ÑM™dÁ÷+ÍÏÌ( P¡QÅ|¾†Aïòã¶[ü>" MmßGÇ ·¨oßÁ"òšÃiŒ¶š7Ȩxddí·LS-¨¼ËHýåËÓä¡öÄBG%û°âÉ&t#ãTëq_©SGzŒýÌWzšð냭\ˆ ÊaðáÄŠ¿G Æ›x-kœ¾^ûO`!gHZ1[Þã¥ÃíjÛÜÚ¢¢¦NÉ­Ïø888(ÑAq°½}‡‘1øÛ·o•Yy­7’™ÝÊ|F–AÎn-0Ê¿áÅLH´ý×Ô ³:[ÒaæW–˜gü··Pb–¿;Ý 1=­bIËÂôUO§EòíÛG€Â£è)wD¦F,kï±°à~ÄqjÛÆÞëvà1õõ^̺MŸV†*ìÖÕÕé"sXSAû—Iq¤4‹¤ø¥¨hùÈG<××bˆ÷íS ÆÅË#í92±»2/HüíIîû]gaóPìgT1h®†W¸ËðvÞ „xuîLLHp ¶ò‰Æš4„Rk¿Ã êz{ Î'ç¶+˶)±œÖÔ$³oŸ*Ð.|íä{Ÿk$¥ûᛳ“ÛÝE98x%áõö³óÝt­Ö‡y¡11à¿U?jÏ÷˜ -³šº‚´±È¤o9wOз²Ø|„_$ÿxy¤D7ZýÕ!¡æ`rk›;,,©@þøM2o€Àõ•+WÐ01õ¶g[ˆ0Q&÷ëô\÷W“Ò¥¹?2² xÊ›i¤—yµçÜçç碢€×â!w|Å"Êþ™£¯JJxãÆËÇé±™Êm<4¦­téUu¶ýÓÌÑR \3“Â:üþó¬oT˱óœÔ'UoR5óVd…©_­±Î~a7íÇ¥ ÎËc‚ué=HÒcËó%˜Ü„Ó ”Ð^öÕ<Žò›ˆóÓøFD®‰¶8 ŒîaÂÔ‡y%´îo£1."røÒ ¼ÏììvÍOZ‡óÚËâÿQ´@AÕà€À@=@Šà¥aß\,š‚É%• /ž›kdíâ­j,K³­°Û@•³­Aû§§çgC5n<¬†³Ë}Ùß×xY Ú'¿¿A†'°ž·t^‡ùPº*4L¡E¯vÙ›~wKû³L"Dê͆›2›<ß »(îKlj++ÂûYyV!MžðÈ@¿/Ô–£9-)€ü‚Uk³³³0cSa·ô£™ÒCsÝùcMp—õxrlÚÿõåñî’ž¾¾ÒQ†ŽÈHÿ4-Œ<Žëzà#S¿|aqÚ|ñE*úÐím9¾Ç÷ÝmïŸLTKm¤™£{ihùP“¼ùüù3‹€Ðç²çn‹I>ª5¯‹¦„Á÷ àsâUåð±’6ÃÁ¡à©4÷Ýw¸Ê£´wö„ù4ï<{üåÞ™ ƒA¸?†oÈÇwå=¿>}àm„+1K$ºº¶f9’žEÇÁÁ±JOG÷£©i¾Ä&..΂ô]n·Ñ¯%;Zÿqm?é¨üáÑQñe"ÄÃЖ"$˜Òý¹Ïއ´¨¿Žƒc¸3߉¤K#“0;d˜x™y«¸kW½»w¯b“s ¶/§ñó§8‡Å¨jrà§OŸ$°ˆÊ,­ˆ›"ÿβ‘ŽÈÉK67Ý‚vkÜs¸Ô޳ŽÎ{¼˜2×Ï ìVd»|í·ô’“…Ù¨Ù 7Y÷wµÌ7Ó{`)¸·n5ƒ]/·š|—¨ðĹÑ~*ç¥ß÷¾<•““Ój¼Û`nfnî|qv`{"vxgO.˜/_ ã-J$K¨¹Éû³ë i*kA˜Q»‡Ž âûÊJžlåœ;‰å¶ Ê’Ñõï±t[?>±ðŽÇYDÛÉö”å+ŽXbvü›4Òz€Ì¯Ž–‡çÕg5ä———÷áyá öòóóÛ“¿ÅM~øm¾ÙK®VeÓ¯$!bþ×e}(×®Y¯>nsxõêP0‘k±ñaÈF~x_'ãu ½'©Z3Q弃§'àq^Âw󦜒°ï)ØþRÊZ@ÏÉsA'ßýXIäåK*Ï{sæ"[WQPl€í´íwÆó¨Õ¼>"ïcÖ²53h«/||`N¸à¨7`Ï•ü¦pŸØFAPðíÜJ¡a ºâè—¨i *wCCóæ÷X¤&¬ØT­J}¤ÞïS+(ÜÞ£R8=~/šÁ|áv]ŽƒÈH ºáðF@8]ô¥ùã{¾tçhpîºðïÁê Hvwí¾HÇûWWó%¾Þ¾®Û˜äz°îäâˆæ[/¯ÇöËø9êÅYï o ú?`e-ÌË÷íµ(¬£sÙ_}fbB§žSÒplutl &ëáºÏµF ¤bØü^Ö¿P³00¸ïàà°¸çÒæÔ>ïÅéNÕévœ$£¡12‚r1Nö¨¸& 2x*:º¬&îeàÄså,€ Žpwd6øèþó˜†ý¶Ÿ?¾-³$aÏjµÇÓ¹:1˜±ðº¼ŠÓg³™:²'pdkÛ‡Ú)»*ÚS°I׈Åb”+ÁãÜùó)Gu²ÃqU oñǽ•lý×¾Ü×2VòòÂ]j—kU:d…„„p»Ÿ:)å hì»7 dèМ-š"ç§ÜÎwÄf¯¯¯/éžËvÜ{™é ò:Îs’Ñ(^O÷67eKÍG ,Ü7Õ·[ú-¢Ud–••IçŸ\³?l þŸÉË—/ý¶MZ=‘{‘QzÈ“-zû&¢`€4ψIËÓ‘œ8PÚçßì?X¯ÖXÌOÉê6êŒ3ÖqI®®üJò‚ÿâë‹¶·’W«¬¤¤¤Ql’v%«¶¶Ölsåc>*a¾ýΉ óá"9rrò¾OŸˆì0Fº椨¥©Ioî)® ã~¤ß71¡³wp BóÖÒÞÞ04TÞäNÈé±Ï"T°•™]ËKoÕï•Ø1—³åùyûø‚ÖHb||@'xëx6ªêø\áMjjjO¬ˆY ~Õzx ÙÙÍÊ`üUœJØ~ðZffæÈ]—­­-ð^'%½9Ä“…"ãV5îóA€2F#% ã®L’QŒú1ì‘n; ]†¿>?-«¨(0飃5…€BùÃ6SXë°»2ÒÞ.?BµÒZ4ð{çú~`KëâX%',|Õc—ÑÃB-éxniiìJÇ/b!ìÃļqŸw-‹ß¸œm9QcOžŒ+8¦‘§“]b.¼  ý=}àêêÄ€ƒ<þ»ää; Ž?¶¹ ›#¹ßá&Ó£b“MÎEéÜg`2Èe¶_V‚\gàåõK¥7!Kàëëûí59Ò+ëið Õk¤Æ~ôè×ö· ð(wïÝ›š…’º±)ˆ´Û¤Žª${\Ð^ñ5¢;Iði.›Y´“ýµ™šÄT€³«#¥!c•Ž=é2‰1'H€¯Üì-µÔQT*>.1×€ô×q¶e@clɬñôô5¬Åª°_1PSXøÏã¨Þßàv¼”þØq}”¼¾ÞPIiiékr||áW¯’ç^Úƒ-¸8eõO†w&þô˜èÒh9+ˆ Mõ‡‡W:Z–˜ S¸ÏmŸ –ÚX“¼:q‰Ù⃧}Ã(—ëÿÛ¢Úý-=ýUZæÅ\º÷Øä­Þ×or9mÞ–Œ¤Ï6M¿-Òzm˜~ ă z#* \(çiÃ>9 a 8:üÇr9Š“‰‚E ˜0Pðl(î ®—.­¦pž½ ¦žb_ ûÐ ež\‰JbÀ¼oSS{©h;§ Ïd-íä2ræâoî´®œV0Ÿå¶¹®á²°»ÔH)Áê¨üj`Ô,ûÄÄDÛÑf=¼µögg§AÿW5€<­&ZsÝ`‘`Fçì`"@hÿ1-Lý\ÇÂ*þÖ*>be˜5ÌÖÝËÞø† hd5¿ªûk™ïŒwÓ×30xehè£g>1;7‡ôèUëò \œœëÒOà’@Úì%7Cþxï=n‡*6™n4šæU7¥> W­r²~®â¡Ä…ëcnî+£[X®úú††7 •—&™= dðê|`å&!Ù_ºN,?;w$¹ vˆÜ;ó˜Z¤ð»ØëÂ#~%N˜Åœ¶¼iÇ ü—èn‹±ŠîbSõ³–ï0¬¬¬^|÷DÒ¬u_Hpí¼\ BC€é8§RØ8‡Â~sŒFg•`]†¦~zÕožš¤ð8Ýâ¡›ñÂáq¸9Ud>¹¹iSoº!|(ø:Õ'ë•ÞïÞmGßj¼¥£LÊeuyÍ*§|õN‘K›‘iÝz]ìŸ.k™»"ëññwt—n±‘‰I•Ð60œp™šµ“BƒŽé.R³¡B´@lVUUõ+ òOÞ‘æw…½édä£Ó®h ØÁïpru-|}dÓæúüþM o!‚ƒƒÓHì¥Wú±Ðt€QPHè1`MåöÊ êºrÚgú[k¥xÄÄ~yyys Ö¶?<=’3©+ÑlÆÒz¬ÿ(ïì­¡ááWl$’½ö+å…ç°ß4r}sww`zÍZUNÄÖwdUîßòó§ötP?gdd;;¶}Rž.¡¯q>"»Xw‹©÷¨U® æÑ@J7Òjzº1 5=}'Äã9Hy´¦3X4ªN¸OqqdÀƒbccõ/¶çÚZÚÚêÓ¬K#´‰±~’º?þzç9H‚´´°T·Ï©¤Xlø}…1)´Æî¢Q—µãã=°wYYÃA`Ûš —Qv!oј8øÁöT^“¹8Ûð8Új¦D‚8{ýúuðêÁ”B8|z-%]XèÉRʆt|4ÛËŽ·ä-ÕŠß“p6è÷ªŒ\^¿~½\t¶“D‚C*KĆ„ǶïA¨ßw±D½Èèå·-9Ãìh¹-FŸë7ïtº˜ª÷yl=}NJ…ë‚ÆÝ»w7KkÏ‚UÛN`ªhù# àyˆtsAœãßVu¾½@ؘˆ?Atb¢Î´R´Ï)AŸÎðþÚˆ_@œT ûÑ¿o˜~IMU%I‡ù6`_îà[šýnÒ8ç´ `gb ñö¾ €ÖþÝgÛŸ¡TfÃE-Û¡ðÂh.ž¨Ç¯†Õ‰«]æO6jQaº¡¬¼<ßõÀ–)¸îÅ·ÔÒª›"¢¬Qs®M"ç{ƒÏö;kÚ‹ë3 l“ü³Þ2d^¤šgÄ—á8ßNÌ.  ÃÛ± œ[öÊ“ŽŽÀ<•‚Du£G8E„…3òt€ Kdþh Œ]b@í˜ÝlðÞIÛqEò±åµŒgÏžé'ˆ-¼÷.Â÷¬Áï¦ÉJN[`_w·Ü€š˜˜õä*RÂtål%@T{ÝŸßBÎëô ]¼©¦fÜòòrÀ €è:J­s‡GF²‡††–ß^Ãè¯vÍVÒOÌ0åL^µUÓêÛûtl¼ØGppöÕ}xɨ<ï“Oa®Â‚Ý ýS%w 3ñ£žÜ ’™<”~cIJ‡! ÞE'M×ÛˆVââ ŽúÐ*µˆ‰ŠR™ŸÐÖoƒ“\À‚ìç_¦<ßDµÁ\¿ŸÙq]s„*¥ðzYdR L#õés®F©´ywò;ŽXð*} %@efµèe%ܼ%ÈF,jž”ÕÆ–É™KÒÛ.sž­\í²øÞÅÙ#Øe&+iT—i½S§**uýdD¿Ít}'»µj¼üh¹'=dîPÒÕ¦·žRK ÇÃN‰¯`6Æåt¿m¥ý‹;«œŠÅ™È}ÛâSÌ?ž»c-§u–~3‹Qa==æJJwÆ¥&ILL$¹q#Éb¨ ­á¬ªÛHq€bÀm³*++K2erÇK›÷eE gœŸŸ/¿Ã¸E÷UHwYÙP\ÜÏÒq\r}+{‘gàÛ⹬“—76ò ¿ÿ¼`µ×²æH„,`,½JÙÊ™@}ÌïM }ál©ßùÌ·éG®º {Û €i~rµ$__6×NO º»ówñ9_d:°^bÃnŠâY]í,ïÞ½{7ˆˆT§]I‚šXf6ú‰Õú2•Yôå”–™¸¸ÊÚwh׆‹M‹,Ɔ ƾ<'ÍÕ>ã#ªÿªzo4§qéßÑÏß:;¯ÞÅ£i˜ˆMÎ ~ó0j1XDéqÊ 3p€¬ŽWŸ÷ó¾ÎéH7`£IÀ”äîo==0êyþuñ´°ïÌã‘°Ï­+_×/ÚøX7–©/ÄçH·. Y£ùrÎ-öª•î™ ­a ú~˜ïJ”±³ÛÕŠ‚Ú]²2ßnIþ=&ñËZ7 òlåœWò™¸xx?€uñ8ЃµÀäq„amm} ž^ÂnžJ’Z¶›‚½B×8ýÍâ¿úù õv)®ÕµÇ"WÓã ûfÜ?y¼ÓéO×»øNÚa,0ص|NúìšžÎ/]Ý‹Ì-£õ×|¹\ëùÏÐγ›4Ù¬Ö¬(áþK¥{±Š…þÏ4Î<̃ULi²›/ë”:ÍÚ¿wwúLh—º} á|¯™C¡£Ç¦»";óÌZž\—},Þ¦§†‡/Ç (âi–&I+¯aÂÛHáfPP‡yt‡E‡|äáå<Ä 3ÝþÉ¡^©-=‡ãÀË’qYyöö*¢àPHG,àÎ+Ë¢KŒÏô&4Y]÷Í&Ú g„ÙuÝÙŸa æ«æÔ&Ûâ%çËöÊËÔsš ~ÿüÔk}ñ«Xõ.€CeÖº~ŠFÀW €Pƒ-´Ú¤ÀSE=ôyûöJ\\=3­¿ü„í >‡òu}æÜ,,[ZZ. q&KÞиt½¶ç¸m„±š ¨àܪV ¼Î€à{¥Bdª6qkàœê'©–˜•³ÝåÒ›!Ó{fC,àì?:$ñb<÷û÷‘¤–Æ/s»Û]öu{wÖ?aÒ•”È*ªnmdˆ=ÄŠoFQÛè¾I’}RعÔRT¡¡·{÷4ޏí³õï±”'t~sô¾‘UóO†åf(ØdªKãQ¨¤ØEΉ¢RcSÓùÿäÏ=KV6tî?s{–`1xÞÀ„²Oxx¹q<; w|0X³˜3ïŒó²ÀXaª.¡ ›™¨ùcÌ›Ø%\Îj”šøÏXšUÒ’c$Kø‚9¸\»—Ãüænñ±_…ù†ín–`£c3– r¿XÈx±aSµß¹WYÈÈúT¦S¹©êú6FÀEµœ7s-š®ö5ŸÃ¿s¢ûf:Ê¥Nç¥ÈbÇVÛ‹ê[Ú°ÅpxØ(Š–Ö”,|r/wCLæòÝ^ß é4Lä]á&“óºCM}¹×†/¡\>9úùS¼íû O öXôšž™y¸Gvf@Ëažìv²€ãYr”ÛRBøÑñFÀûÁNa˜öÃ÷?Ïé /M,cëå!l³^ú•„ öàP;¾˜±Í¤—À_T5@Ó_ X†]uvvp¯”ùú€‡ru/^´bÉ}´=2®¡e?n|¦Ä 4Û}鸟­‘`# Ø×ì0.J×Uæ‚ÂÂhvSBbçÉ/µ‰h0Y 2¯ç_m[X’’’”Ö¯–eð)$*&¬]àªàŒMþ¸((?tã˜$À¿Vœ±Ú4ÔÙ=ŸË(X¥ÎÁ“Uù€LáÍÍaKª§*û›ÇwÃûßÃ&ü›1ö Oç‹™àfa§pàr™"_òÖe.g„4ój‡]йepžÕªœŒ,¿(› %¥ú«kéÔZéÄ¢µ$VóhuÕôYÕ²ep|›²š|Ú¹¹¸à=El$X€"νA¥xÑÉèÍÃç¦íþCOè %æ?êë—&jBøöU#VbùݸÁ.Ø­ôåjUþ.З{­:ïšÝÉ“SK ììØ€-¦ƒ ÐÐÐðÈíx—į§®î 2ŠÕÙ±}‚ëz9] Xn@¡)Ü_"*Öü»ªRìrJ ìeÑÜ~Æ‹÷ØNj>É1oÄjT~š/ç/1ª„•\">"+0‚Bƒ÷çàZÄÝÝ=âÖÿ%…Ç—ŸxÆzÝøO ,‰ a7éÕJ ÁfÌøÜö(ì< ¸ÍÕæH_‹[ì<¬½1þñ…ÁϳMWVãÍ·¨L<™Æ¾øüZIéçÝÙp(¢\ÖXßâ_‹»¾1÷ló¬c3ØîGãDÒïø°ä2!ŽU™„"·&ŸO7ÎO­åát¡Ïm5Nñ9ߥÒjÛÝ5ʬcýZ&Ävò6! ²àñ¾zåDEÀîÍg¿0L,Xí kއK._gp@§=e0Ϲ̤êD©x-Uò rS“–ÏwÄÚ^f÷—è_Þu÷þýä,º¬¬n€§jÞÒÒ¯Ün郾ëBgü½ûW¯]‹ð¥bfÎox¢O›¥Õ£b'-ÈFÈžP ä»,+'ñÌM™êVMÛ}k×ûKµ‹ßò•ÝʺþãüÊ?µ‡EöóKìæm¼¢Š‰nöif{>©fAjÎBT¾ª>53£OHH W/òMOpÉúý@Càd•u¾=Z/T˜‰3b‹Y~D„)Ëd¿ÒŸ4°²4G)ÅXÜ^FÁj€ # 0Û: ßbº´ÑäÂàju+Ù™n'­ívžš6•‰­Æ)¬AI1ªÂ|ünðñЋ£³—¿×KʘnéºËùmŒ›Ym—¤4»ælšZV›3õÆæÛ~À6¢ZŽx¨Ââ²»(a‰Aå¡; '<.øªä6ô÷G±SàvâÐV}„×c·c»hµV|*TGÇ••T䪽~ 2þ׃dCß^ÖÃÎ¥ž/Ï‘a×ìdWd ~ŠXÈ|’Åt¼ãxæoy)ÎÒ‡Ü4T$K¡øX‚JÜRÛ‚â&ÂD€ÎåýA¶T~»ŠðŽÙiªPÁ–‰ù‡ˆŽƒZ«)ÁùÎø¶sÚLFáâ¬ÕϸÉD;þ?%9>8V{žê¥Ì™šg]¿pÕZä¾×°œ¯¶°«ùØ ù–Ž«æ2«­ÂæÆ. Ô¥»x*zŠÌz·ÒWû cýk;Ùºç¯3iž’¥(µ×ã]2´ãržšÕ /å“Npà:ž™Õ;ÔÕær~ÖªJe¢áŒó¡m˜ðœJ àay´72 (4óëC«íímÏmT6_àY1 éÒÝYJ³í/¿ÒÕU+µ ¿;º¶á>¨>Ó¦<ÕÚ](n·1!Á›]wæ;Ú~¶Ñç¾{¹B•Ë¡£%æ¤@AVÔÊ$ò›”¬­§à?×Zyd˜õ›ê¹Pýï_ç5àãFh÷´µ”•qýøñÃ„Š®ûãO!Zªå‡¨¶G¿7–ãÜV­1¾³ÿBºE‰zª«i4TŸ‚Mÿ£¢÷æÑ¬kr#½¶[!®[Éusõ-õT·ÈÒº”ˆ¦å-š :ÚÉUÓSOdÆšÆøeŽýéÒ—µý9~~~°ÓÚóðÐÉp«Ï=qM'éÙG ,'j¶ŸHû²|LˆVÿÔ$>Œ"NWÙ¯ãàPb'êO—ÝîéϬÛÔûJX ë +g.¾ÕŒRù³Ú3×FO€|·T-ÛÎ’µœ¦gúË®8 ¶¶‹v‡6—MSÚ.4§'üúà.ÀŸ‚kÛ½10Þ9¾Ïu2´sè3Åu2¨"”z)„÷àÜ!ÕüW×`“.XÿL…ôßµØ+¹l—ÏùáBÄ—dsÜu#âS4»ýr/w°¸oSŠêçÄëúÙ–ð–ÖVØ<HöøœãuåʘKÊæiÞ«ý²"‡Ù g2-&ׯÒB¾±zOÞá?܈ ËÓ‹5¹ò$é–ê¨×t·¼— Ï‚Mˆ£™ØjLŸh†`/ŸmÍ€lÝq»à¶Bàâïç³é$Ý_b¬¬ AØ‹W`š\4ñ1 E¶¨Ã.»Æ=M¸z;þ|­ŒÀÌZʬgàð›”î_¥–:àÔÒX–5J—¹€ñ\~ˆXKÐ7k¤Æpë¯j…ï´]ƒ€Úù <55Uuü`½rÃf{ö`é8ߘj~žlÔv­®ÐÙQy}ô4°a$ uzâæês¢á–B¨Z7}Ã\¬A½È\¥´AZè3«GÁÂ}˜Á³÷n…’E‰¹gÝ(Ìtzœã…Þƒ·2—œÃáù›ÅüA/bÔ[+ä‡-ÖÎqG,Ȥ¨×x‚°ü±¸Ê†_™Zz…—’‡uN¬ÈÈaPeM7õ]Á«íLÞùô½[DñæŸ<³›Š~oiÝÏ>k¹¯Â£|ö‡¦‘Ål9`·‡ woé„FE5Ep€ÎÚÆ&kíÛ»ŒPªÊЪÙ+ øÌÞ#m‘aÆ;þÆÓQÙ»Öþ‘sÜ ™““¶ˆ?²åÊÞШt`ˆå´üò<–)-~ÉÇbbb{ò÷¸ìbïÖÔôÂí;ŸtÞC>Àíx¡›=Ù?¸ÌW“ÁÇÃV;ý<ôïpÙ…òß }3Ë6 Ъð#œ¥!íÖi] ¤gûtÄ¿ÿÊ/:¢CÌÚrŠÖ ]¸Zÿ'Ãݵû¥QÁ£w‘+Øn游üšSV)Ìg8×x4N+˜hüCí¾Ö ‘k»ÑïŠ^7qß}—Ñ ,ê´jš{=)¸h}Ni` J8ü>ùAÅÂ5¨C;øÚpNŸHKcS‹ÏqŽO΄ä¾G›9)zãhÀcŪÊàî† g.Iy˜Þm>q¹ºiûkbH•È4ÍWª„X¸¸ˆ®'Û†×4+‚@HÐ()2®ïËV1eã bae]á¾JeyE,êÞ̤áC¬0ç™Y ¼ÀгÁÁ¶U:`°¢uH·tš@ª5ºEá6á‚‚[üàì9 âësW£Bä[¦‚;Œ5e(\“ÄÚçž“žÁ¹WíìªgŽ=Ô;Ó´_u´¦>µf}K¶^FO%ÜwmlA´×¶†,ÎõÝwi‹²Ãg&6rn€®ý-·…¹LäÉw¸ýjk¡§ :›²bSŤ*e+ÃÓ0X\uýúK€Üä<%¹õË€¯ÿæ`<óºZÉxÁ¹á=çʱž>/hK,–O€@?W8Ö.®kúb“²éõö-ìiëîîFŽ‚‡¯žä‡Ò4“úÂMôÄq­x6¬Ôá«Ve¤Z¡õê sÛ†ú“'óCêõ/5¹ ‟áÄyÔ¬r2ûùøÆME qŲ›1LJ)R'ä|ï‹Ì¼l¦¶UW/ .Ìt+4VñÉ:²b(ÒóDýéß¹š1Å´ JKË·×|3˜¡,Oùyb¸w3ñš8šÕõɈ´ÏÄ"ïÞüUá[3^´¾ö.ÇëtCŽt=‘¬°~®Mw¼&ì¼+a>•)1XbͽÈuYUUUæëÖ¤<<<kÃ^8üªIŠKø9¥ÇÅáá7Q¼’òI‚Pâ¥}’{óHÃUtÜ"n!ã~¾žV,)<¿*¬óQ§9̯²o<åažÝ¡o2©ÒE?`Ë|gô»³òÇ» }Öºø$2j-_™eñßåÕû?PøšÐùý 2´ùˈmqÏå‹t|ë{,Rð€¨' ¯ ú¨h;¿+4ìú,‚AȤ-µ1^}cfº1àðäDåÓí;o„OÏΆþ@ææc%5µh©û7-«÷! 4ã`}ñ1ß•ÈÔ•-œrÙ^O°5íqÃ{Òe ÿgŒÿ\[ÔÀ³Ñ4r-÷x… ‰ÆTÖëÒúZ/É­cbrÍ-ã…À xÞ«FfÀ_¿]T·¥’1$™¬ÝÌG*}!"îußçn›àÛ Ë4éýÞKÊáûûûÓ{f³¤¸uÆ=nOà‹Õ;==•øø J=™#Ӡ̺ñIÓÐtQ60Uou‘Y…q{ò`ž±:œ©;=¹SÝ^†Ÿz,/k5‘ÉåR-Ó[Íâض^‹«Z#­HUú]‚. Uq‡›K艘Êߺ0Ed¹ÅîTÉHzXˆã²kH`LjemG 1+—Õ$â¡òWÄ$€àÙ)J8ZšÍr<î9”»ìe¥µóÄS©u³N°tÄóDÅó8¼jD—WP€×õ(|‘zyz¸Õ·§‹—<krMžèóÜÅBABCw¬ÂìêñÞJóï4Ik[Ûìð2ÉJ›M”£¢W¸+¦‡$¨W*بn9ØNŽ=$*ÑïŒ,ÊW0êÁh”¦Zû¹ºƒ¢Xè_˜Çç¾0``ÜÓœÝßSŽnÍÙjZÙÛí>×JÈ?·Ãªo^Øêõ/¸ìT3ÁÞæÑz }áÑŸëSYuÔßøRGó;º¿šïzM­š–Ïoܾy –?Ìlÿ,7º}Rõ&N 2bÐØìp¦áÅ:ñªF³œÌ—ç¬[{Ÿ®¶¿£ã»õ~†|Iq€ê:‰'pü|Ç’ºôx[-Ÿ;Yo’iÉÜã>}"BLOOÃJ,@»¡ß;ï$§ºÆó:0Lt‹f k<‚‚ô{3äŒØHŠÔrss#YL³„ ¾~• 3.òÛ_A¶ZüE¾Â¼8váéa‹üï ³ í_ãˤ)JMhoN‰xÍtµ×^59ežÀz7|崀м‘°ýÝ=Æã\ßÛß¶cžÞŸ ŒìUPÿ-³$Γ“vð»ßé}›R·ÕGÇ™æ¢'4‰¯€`ÚY#Ðî}ý¦¯¿ÿtŒ@šN­{$‹•c”ý7áŽò*š(ÝlùMão öálq´n;°g³ÚtëŸwýi-pržñ{jq#aŠ$¦Øª¡IYT›ƒMÔü††Ž/êçƒ.×¶'″úã‹Í*Â4ÃO7b9;üȺ `Ÿ«l°_°wZúìÑúû¸; Ú=ÊÜÔïp“ý$ÅÅ¿µ‡òºîÓ?}úqõo%f 0¸¶š¢"¶H¦÷$áx³z˜kêÓù“HŒÄÿVZ1DìœýýûF­ á‘s$xsÅBW¢aû'æ>¼Ü=¿v Wn´IýÚI¤2´Úϧùìõðœ\†9×[jrŠ~&ïY/ž-¤‡ä¾ü½…Ö÷è…B/y”Šê‹y¡ÎP×r„§Upc¦öHåä­µ@GoVŽým:o#€ý‘Á>¥Æ÷pW—ô<‹X™ m©?p½Gã²Ç¡;Ÿ¸cV“-Ð÷þÇ|j×] :—ºõ?-ž_}¯¿iàá Ѷµ«I$ÚæÃWvnˬ. ‡=¹î1gbo C®àGŠ+7:dŽ–‚´£™Â5Ð %ýPq læ$¢!B8| <UBªªD“ » WŠÂÛ®$ù·StyŸêム+¸%IÅsG¤IFE–äŒ@ÈuhCúzzz°xR4ˆ¤±È¸'kGìžpõm€=l²À ðöæ:m;>w±´p»'/¢-Ql¢;Þq)›ÐŠ2²â¬(²¨§bâ¼OÞ*Å× ƒœ¸h.ÁÄWjY ¥Ä÷âÀƒæ[ÏàdOçµ £[¯SPq[ ËŒ_¿~ýóçÏŒ•GÞlBÒTû%ƒÜª×¹OLýœs¤È{i„¦Ø‘õ%o¤kÏ6±#3PìÞv·Ef»Éè¾yv¿"W(›ð kìÅëÈ“ )ñRÑÞ:ÀžÈáóÿ—É® ,Ïkcª½úâ×ç§í±œ8A¢õ¥îm©ÏÂÅ%$’ÍGJ.¥Ùî/¡È·³½ˆV;ÅŠpëF‚†¦¦ià0É"NË™ét«¡lD˜àß ,Ƹ€#£bÏnx\ð`cc÷Íà%w>óIÅÅò,—½÷PîbäëurãZ£–j³'JS]•¯¬Ìî/y S' vê#W`Þ|z &s¡nô(%Fi5~ÎQM®–`¹#5±{ÊÃòhèº ©á´ï+j™"‘ùv'o#Z‡çµâÃÆäÎ-×>¿­.dÐÎaw*~ }DrôQ¦œÃI¿²Ã¡Ÿêýö´‚hry-Å_p±è‡ï óŒ™Þ*Û®ÇzLÓlËÏæË5ÅáØÌ[KWÃ¥@ü €+ ìNEôT’®6ƒ;ýú¼õl‡Íe“Ž–[wdÕ𽼀ަ=¦¥å*#(­Ûïää¦5â]µÞ.ÿXÿüc½pëÖkùãgd”“)Àw÷˜Gªº–²× »}¦E‡—…ÓÈÜø0àhgÕfV–°«ù¦šÛLL!O½P¶Øsœ`úZ:‘?(=Æt W¿ÿ«zX -óGç¤|M{HD±ApÁk'¢—È‘AóGê<;±5>øjI.6X¦)#v:/ŸÚÞ¤™‘üÙÓ?Ï?¯‹ä&°ÙØóýöD‚lÄ"¢¬ïWïhžÞãñÃì½Mõ@˜ÏÑ@¥$½æ l²[ÞËæd¸Yíñû8Ay÷Nš=o€hGzqÝ zl)[ßꙆß9týJ®LåÄ‹HyÎæ /ÙïÌö‘¨ciOÎ4{ƒ‰%ë«Ëä§¾³lŽÀã|¡çÞtËùº‰i¡ßØÃIU0¾å+mú[Ñi×iß:MÖ²ÂúhÇ“|®€ÿÎï&Í6 $_d¥•• ;ó3?è鵫>ÅÅ‘‰“=‹bÔ:<œ !f~uÕ?^ÐôêÕ+8NÙãt†’A¿•!·–UïVkÓ½ªî©›KŽ©;–¬³+ÜÇó§Ë™á+î•4t¶¼C%éÚS9”rWµJ“‹ÇÝJP‹úYþb2“éÎ=ÝgÈð¬ tej}Ë‘’ ÷³cµ±‰tÊóej{ŒnUè#Å?5S?¸fzöÞôzäá¡àp G[[€a‚3œA«`ñøÝ¡–»XYZ xîp×Ïò 'â+yÒ@¦ÜùVH Þ¼•ˆú€<ëå ã9ñanZ°Íº ¢J…fí·×ÃgE#Þ+ûÓØ Å¢$NÕl½=©òÐò¡öÆ Š„mšõò2Fk©Šz¸YnÚ}zNÜa¶UÝ|­ÖU͵¹Ë*½[Á÷þ\”ý€£Ã±•·2<†«di3Ÿ3\Ìî8ÃÙ¬¸6ágjþü÷W[‡Ó=Þ£ ®“ážck&õƒ­<‚üˤṾ½áêò!¦[F™TUQ˜v¸A±É´ø/uuu‡jœ+gg½ë^Ðn¹‰zI§ Éი[¿:TøLZº©«+O8Ú¦íð:F»^"k(q5µ¶Ø¼_‡ ™þØwyEÖU§9²ì¹—Œô•|rf¢½NÜw=´­ãò ‰ŠŽ*°E|ïÏ > » g8P𢿫 VâêíßÉ[a«ûë4kýžWmkM£çzkTƒë­”ïäÎÓo“è·Î£¼øÛ¼ƒâß.(ÙüÑ#ƒñüƒº\o‰q'¶#…eÖÅžß;-ì(HÅ_Ð T`ç´üÖ¡7øBÖFÃú4ÄDÙ˜pú'²›±@oÞ´ ·Ñw Í2{^Þ8r‡_öÖ+ÿ¯.œuéßçš?›8[‰i «¨ãb¾¾kÛÑÕl;£Žd 0dÞ`OÒá¶? ‹g½_¸ö˜a…Ÿ*Ó6©u~¡+yë[ÊÁoŽ /|Ætÿ‚Í,-33zۅΈ ¿©4Ó²}j sP÷‰OÁZKØÉ\ õÆu¼½¡^g¹"kòŒ/éÞI ¶¡y#3$·ã?$GfX-𺟳½›-㥈îùÐ_]½Ìuḛ·¤ú£ï«”Iò)á'bÓì·y*&WÍu¦®Ë=l] {l{?]&ÑNáÄDi $RTć="!ç\°žóæ}©Û@¦ÊœõŒ'Ó9?¹Îhʃ!Gþ{v{åØîw×â#½[Ƀ´NE6 ¥ZÖó!ÀMIÖÚªô¨/ÈPtkÊÛws<æÿøx‚õÆDYí`– n”°Î¾÷ïÝ"×Ðö]˜*2î[o!Á#¾J#\ÿëЧûºuÐBÆéŧTñÕ…L…Æ›Ä5N‹W5ÄîYîà^¶Â-LÕ@nƒájoÉTñk*Ú£T¿aœ(’Œo¬òQÆYihñâJÍ ÑQ­Z†Úr·»E–&m¤ß(z-Ü”…Q#ÇÈ›ŸÊN½?ÞlûûJ‡ñ @ÉiÎÿZ«Va÷`ii N,–‘‘á?š½ WÎÁÄ].®O·˜ú·ˆÑº¹Š×¥ó<ŠæâXô4\)âGüùðþúËUÁ=›âlOþ*ÈÃf2¿qŠ–ããcÛuî÷¢ùrD‡‰´?\$²œ¨Lb7ø:‹\û}„(5CT¦Ø$î‡û ª¾õòºŽ‰©÷;õÙ½Èkƒ…†8ñÜö?€<ùöíQ®–éP:-úÿª ô¬{q›žÓÓÓÑÆžžüñôs™½†¾ÃÚ°ˆ‘-*6Ùw=fÝ&L 777aMÂâÀF1¡ŒÒòâD­l®Jkûö /ßÑñJžeÀˆ:1ï&¼-Êí‡1HIIáÕ ‰4ÂZáÄo3 ý¬pO·¶*l,g寭~¢i…I¬(ÈÆî<øÕu›Íâ)6<Å™¨{÷=8X;×åÞ9¾òU—;çÌŒ§ÆÚDØÅ…Œ©‰EÆ÷s›çÂ^³…ìêØñžå•½š‡åF/ƒÊe ×Wç1{ïlÙ4eßäØÇÚ°ežÊ–Úï¬ÁLK0¼I=à.è[iÐÎôj'qf‰ƒÝ{òdl™;NÔp}´6g-Mï!UÃ.-ñÐëß==SÓÛNqŽ@Øõ•<ć—ç]³)'£  (®,/·®uuq¹CM]o”hßÑlãè˜G¯U¼&˜„KßÖOw6ê´Üã#~÷ÇJ^m0¥Çé„„„ýë¹Öî“ߎ˜LLLâwñ4«œnäççÖ¸ñ$''ã’’€ $åìœ|Œûû-XÚøÕZ|®5nôžžØNVÕ»~!Gáxèò­ßomÿ*A;~öËQýÖ “ow~Th+=ž IÐóâ¨X`§[Ãâ‰Á­”“M¥'aiïsJñåyèNF;-ªpž© ½ç—Íò/ê`©L(²`rû1ÝyeSd· ž£/ÖozW{/J¢EåÇ#6„×JÛïSÛæÒ¾˜aä8re¨Gýêø£Ëò^­V¤~Cº÷]*ï"ðG\Rr惽œœœHýöí[ÂÝÝ}°@£)ˆ5B⯯¯ÉZxxx9±ß³gϾ•–ŒD‰¦ %vå±?Àåu¯-,-mn §)ÎÔdSVŽìÖKÍwZiÞ]ê:íG[€8ïìlÓx·%ž÷ÑÑÄMÁä Ýyü˜ó»ï j«åÞ@Sßáå]tÆý-oTô¾ˆ$ §íÆYYlæÁçì2¥Ô§-^ÛÜ#߸ ßeJÐν¿CQÕp#Çù…¨¦Ga7*@e½½&*ËÜߌ„3í4VV§XdD®äé*ã?}hÅ g³ÚÛ™+h¿zð{f–ˆk»ElǺéúDpŠšúItŽ §Äû„Ÿ¸ Óå–C· otz$øQ»û•‘„éZ]`1Hñ?‘7% !A –ššJ4608)é†bˆFeŽ!óý{Sýæ°|c4Ýé±K ±–Ï„”ðhú’øñãî…ÁH”ÉöG±Wû¸“ß»{*µoçà ¹ÊyNä…·²L,ôû^õ<=}½yôúcDÄ˽å>„çôô+ W+«G€a¼#å´xÑ÷xóà`¡¤eÎfÝñáÇðêŒ$YXÖ)ª«^ w]^AÁzgþy ¥E¢Ç¹sug³,ïÞšno†-=}Ãr_6¼"!ƒ«lËæ¦l¡ÂE»ê4¡²ÙÁ9ñÄÍÅ¡BÃêÎw¡‘O¨9fíæè-È^{ å]õ^\1ñëËÚþ@gð,’Ÿ¾¹Zõ1ãFkSË‘ãæØÃë‡ÖËÏSã#‰Wë-<ñã5…mÞ„:x¾$‚÷ùdlÞöÄ_L¢Gˆ;ahŒ`sâ{s3êË—/ž€8l:ñÂÄ ‘£ŒajjÞû‹r3|œ¿‡r¦ÖÆ«y–Qö–©µµ+!vm´¯¥NÍûÕ¶Æ&A.n†žZ‚ïÉ^ÄÒL2õå¿0gÓ?^1k¤oÙŸ® ÂÓšéK•굘t!Gª~wÔÆ¹w‹SË/>%ôS¾yç†)è]§2oox8µ´äWç…ª ˜Óa³Àù˜Ãá´‡íË*+á°tØÝ 3t所xÃë¢t܉a‘»òWU$ÄæÞÞ;//äõñj LžÂ @¼‚}B(ºêù¯®¹ì¯úÁÙU›“u°½FPHhÅžÿxÚXœr~~þ·=]Aa!³~ëGÑÆÇ6³â´˜”üdˆGN›/2úLè$ÔÉßçdû²P1Ìj%3ä[ª·©VQܾŠI–P*¼Þ‡—!Y4¹ElgCNÄAñÊn ¿¾¢—ÿéug’G˜^pÚ4 »pœ¼eÅ æ¢}ýüêFËmåV¥€¿Ð•Øœ¯Û¼ÙÆT ïx|€Á¨SØÅ‡ýìêòQ5;”ØŒü¾¬Š?ª|gÁÿJ'5`oæ^Þˆ® ©§œ”¥î>ò_t›1IF‹UîO{uÊI{íœæä©Y;%eôB€õkiô†økß<êð°™TLa‡Ú™×.H‰K¾$úÒ¹gKRh),‚f¬ñÚÍÍúâÜ^³ì›;–ê“XCìBÆåy¬À"îšš.»E\ð ÏÉÑ©ftó{•”8¡ca={…·mGÐi^(ð}óÅ7)ªì—IÊF[§¼¨ƒNþÝCJW»Û Xà§T °J««ªÈàáñjW9MÍ@ãž/S;]V¯Ô?: 6¹®NÔR’¡`Ò?‘—ÇsÙ]|„¬‚H»À÷u±²³kèÍTxNް‰$ëã;Ù‹ùÁºdd¬ô›‚âºÝiå–ñr_Gx­ RX™r’h°é¿I>¡s’Ê7>G¯œ›^@|–¥}¤ßŠÿsÎÆÉÉÉêÀÕÕUèNØätcœ&ˆ!¼OÈ!a1±Ò–uö€Ü³†Ÿåòo?êýÊR¯@ÿÕ!‰>r.?è"Ù].s"3;¸{ƒzÍ1ºÛ;EºÇïƒÁ|cƒ±—ŠŽ‰"÷¬¶Òí×Ì6¹´,¢Ffv2ëÚã’ôîRuÜø†Y›fa‹û+&(xEÅb£ú`¼Þ0Ñí}±é€Í œb˜””9EUuµõLÖUTTÛ‘R³¡·©©wãx±Y¢1Y ;À£Ã ÎiÀ`àõŽŽŽ_Õ‹ÑoÒH7lÍ4ÇôôôŠ~éx²ÖÔ-¢÷O‡‰íH™r—_.[%¨?}ú”¡¸4S=ÒD:¼…û[›M­EYLLìXðY`ÌFr9 ’gwtûµ8ÂdéB4³Æ*…wßÇÆ’–€§ø4Mþé]<ëddäî4É[@Ýtvv†ÙExQ @ŒIÀÌ]^ZÆGŠ<µ!Ì0ÔµøªÚ­ª¢yÝå—2 >ý§ª“»­l£At_‹ç­”RJvE»¦”ˆTw´(Í|$u:‹å_–yµlHW¦õ>ððŽ^Ã-H3‹Lȹ÷ñ~L]“ÄD+ðúå?ÞuÝØ˜}BÀõ`=@[t6Whh¨'`#Ô÷¯‡—·ÿøö²¾ÌÁÚÚšˆÃŒH5Rrû¿lÕžš”êH÷ß¿?ÖþñãÇ'tæ”úÅ×eèÚ,EEEc¸ð~3c ÝÓhQ˜ëlΫØß}:`¨~áÈ"ˆfcÆFKM ¬Ü3$DFüC‘P”ÌÄ÷qÊþ;fkQ´*I›¹xÄFŠ^ÔÄȬHÈæåØ_K\FªRå¹°×_¼Í¸N•£æîÎøš¿µµµL Þ¦ð­¨ÞƒÝèðððÉmÜÉí:R˪7 |®%Kzw›íDƒNŠ_ÓNÚwý1x[Ñ[±J0õýìýT–ÝÚ6ŒÞ4ÒÝ-JwI ˆtwJw§Ò%!(ˆ€tww) (Ý-ÝÝìyé³Özßï{¿ý±÷{ŒŒÿ^ÏRÀ›ûº®9Ï8ŽsžñÆÖ:.ªÈ…LÒœ²²!Cð5~#õÞäg3i¡FM´`çuÃ_”¥­'7Øök~Aî;V5£|73U¾JôÑT®f^¡S²8×ݧÐ[‡½¨9Õ¶üSýˆÿéÓ§36êêãZĉs nØÊ度ÕÔpŸ¼Í·½½oCŒ¤³Ta)›û(0(š'€ŒÙþ‰Ó Hð¨Éš”a9”âÙbõ5íÐþ´â*ñ\—šE@K>G”,ÿųWÔ¯qŠØE0Œ4‰ÈÝ|ß® ñhíÜ];~ÛËSpÖÊp&49KˆÉbTLÉ{«¦Ëú…ö•º’hŽRßêd\X™FÂ[rNK‚¥åeÖÿÍ¿mri’£dZ¡gS öÔE‘,ŽôÞùèCë¢GWrp/v‰ï¹ÔuÜ—x ËÚï•%&Ýi¥ÄÜ}ýíCŽâ%rb§ú]."§úh<“ëË'èëh%IÕ¥8N¿'ÁfB5à¶óÍ?~Ƚxñ¦©É§Ê'%%Åþw/aãùRČϽ{÷Fß9®¼xZöøc_lBRpÉ|Tª–g‚îû0~·ÝÎw”üÐPDDDH¿~¸úþ©ù~i³~HÅs½ú’žj `mäi6VȈB´OPp°€¡ÑÑ!y³‹K¢æœJÒ¼h ßeò¯­€¹"X~´aôPx·$7ª\ö”Œ¶³öõSóþÄ7¤ìfö5æ?>uÝØššöT w±ª0ªVôLhñF•×`ðª|kT$¡`¸þ6ïlñùjòƵʢ`ÆÕ'Ý¿Hk¾ ³œ—µ±°Ôw›hÝ¥U?êUàºp`_ŠÀibÃv\ƒÒàý]Jã@ ‰…//ÛrmÌþÏ­ßï<£-¶$HîY C=ëœÖŒÎvgaþG«móó-SPÙ54„Íu{ÎÎÎn¦Ñ*v«¾ºº2þÇ€Š‰¤”'® €# (Xœ’ÖMÓÍé´F“''Ôd|fF¨5ÇÞ=Ò‘t{Û·.ƒ™¦#C+z[°Ô3&;•l‘äþïâHœÊ—MœŽÊÒ¸X«¥Î,våË*|:×tèÜtÔþ†T%…ÌæÏ´Þ=G¯Ë1Œõ*B$] ·nF½øžÅ‚ϲŸ8ÔeTbˆ rPžÍŸÉjÃÙ/; Ÿäïà ©E ¡Ñ Rꋊ½6õ3Ø«'†VLAM-øþŽÊÛöŽV»9D$¤¶ÙYJ`vmæðé+¡Ù)bÁP7U(XVVš1 qÍÊb莦¶ÛÄ9é(vI«ªâôß ˜Ë ¬l„Û›¤=ñ ª­eFï¯ÞÉ2˜JÆ$ç²oY[[oÐ ù•$<&¿¹¨\š.÷WÓ9©›$¥fY7üùSn y¾Ç»ä‘t%Ù[”àR²ÚЭ:ü‚1¥þ},[Å=Cø‚aq5îÔ­\I1íáêLwͳ‡ …&3‚º¨Úv÷$ý~‘ßEîb§I̾Äç¡] IiºVj3͵²²Bóð!о÷R ¨a•‡ÕÛ€€ØÄÄи¸?ðÔ‹ÕèA¢À¼Ñòó“w gbfÞÚ¶;^ÿ%-/¬”×9Z Îj=Qº*d**ýjmç{siDÚ}1ˆxPû¡¹*¨èèì.îÈ“SSc—e¥¹ƒ ›_jÿZpº"ú7ÍLä#PBÒÿÖó[ðça½tEpö{÷Ü¡¶)0˜VÑØØØùžß: ÂÙþp4xa ÛÛ‘(ØŽ=y)³zI:•UU]³ n˜§;««Ý;Ú:€9vòi`e…ÎÏÏ :T`LСÎy•&9øYð ‡ÚDÀÕÃW­H çí \*ßê Ã/³_µNQÝ¡8©*ؾ«™÷Žö'„&+rÚ€íÒhßHŠ« ^_ššêû¢ä'õŽ¢-„ÚWcë,¼S@®ÿÜ*µï9ðX¥PË<:_Ðê‘}ù $¯õû÷ïóà™æ„Á*—­1hb-À1ˆðqÒ<ÍÁ†Ëf*0&ÇÝÃTà—˜øø@hzÝÓ§XP"¡ÙuBÞ‰ þ{+ß߃ۇ†`V8_Ÿ;èÔ;߃.LĬ5²àô 3^k'7Nît’·¸´_¦y{sŽޑþ˜CymЮå¦Û¦¤ÞÎ'ZS³Î1Ÿ×ˆ!0f,÷3R¯ïsÊ^lsbé4&ÕûzÍܶ‹AöýŽøä n68EY哵ZˆúÃøcOE÷Ï1ZËZ:wO 2œâ@ǃäg;(ßAvÝ<=»»ü¼,JQä‰Ùyidõþ±š}– è$önuÜ*0ùPÓVˆ}À# Ħ¦FAy‹WówЄëÚ›HÌ%5Jq®±ÑôÜSe^þn±DDšGP«îÊ’…@3¬5þ±²ýñ:”ìkŸ½¸½Ýé¼e¥>¾PQvT²7[‰µ“IOÛ ˆ ‘ù@Ês Ð0±…_J ñ¿~ý"a5Bì4b…-o CçêÛ;;àƒ"ÛÛÛD¯-´LTÛëèê.nn†i×,µ¾A˜9»&—Ì…©”7²à@GGW ð=_†~‹/DôäSù‚ ³+,Lýñ©îÒ¥×ÕNMÛÚØ·J÷# --¨ÊâÃÑï¼U½œôQoº-Öám e<®?]é ×SÖpK÷ ];Ç4ö£FxÊ4ó|êAyÜf$ìÌšú…P}ºÞCN±ÃØJÒÂf”(%ôj*?<5]µ/*(ojGõ$QYc;•ÀïÚZ Ãp¤ÝYð÷i6;CJñçWö€ HŒŽmµ·缂æ•ÕÀ­F ß’à…!¾yójñ8V¬‹&þÖmÞ‡jmzÚšÄn™`M¬§*ïAIÕ!_ÀœlV”#º0øùùmO× .xl¦’¼®ÒÒÐÔ4\íOÚ?9A‚a²!¿•••AËEÁã_3çY0”àReõúó‚o¸@K’ hBqq1dß"¡CêA%è j÷¼ãtø(À ðÿM|÷Ý´zº‚Aoü㘾ßûûû¯?¸³±³åhŸuuq‘”Dvk(F·ÙŒûü‹Ÿ¿Áòì^h¨8]ãíåÖ9°™P€ê?˜Lh—«û;R˜¿Íë‰0Ü!´ÊÞ@“QNdFOO:àe€¿+⣵°²*pÓv*aýùóIŽéÀ…9z~[v3/ý›Z‡Of FaXüµ•ЭÐqénÆþR/•½_Gv݃¯l?ƒ1Éq¨©í*#i;XªÆØm¾¹®`…1¨tn޾uECã²;;;EèbI( v¦#ø÷”pÚ©³q…j»àLj¤EyX“l ˜ÒÞѱýËó€R³dÀlµõ÷c@£ÊcïKíoW Ò12æk]¨øìM +ܵÜgmZÍ‚’B±Ûìïû路ðÁ¼Tèã}wH;¥¢© iÐÈ$þ¸÷%Fò”©”pwç©)IK£þ¥¥£Ëø¾\VSÓ³3]S‡®¡¤¤d`g7hS²g• ºügï Ü¿yËËË[Y0 Š-|£§§GÂcoP5È<Gè÷Lt*_íb=‹™êLœuS«¶:}¿Z¼Pͯ«6©ò!P×§õéšgôx÷ † ß´à÷-c/hËÕÙ^2_¤™¢IlÔÑlËsÉ'Ýn¶kñ×F+2q 4õ!tñhh_VŸ|ù×Ý cö—7Lf.Þk¹£"~ªóºz_ô¸ïVöMí«áƒÌ½—ÞüKd¾Énä/„×Òy”‘^pÃ1öcTS7vâîéìw g^-§ýº9X}6¨|;…YbmÿvVD6`Ç©øMË™sÓZÜCcceÁ¶—VùUÌ%M§d\vs:Oêjìæ…rU’Àú¡6 Ÿ#(ù]9ê…½¼¼*ñ7Õ,eB`ºåö2âê©‚ N]Þe¡Ý6•@ë@*lRÒ=aaa@^ìw ®’ÀåÜ‹%ás~e<Ú°§¯Ù1¾ëêh‘upy…5`SýÓ¥äTm­¤—'F÷õ;´Ã‹‹‹f¢ÁAÝï}R²l×ü`“_kË{Ù GÙ-€ƒÎìB¥üô#7ãhª&ðôµ>W\€…EýC#ÚzÎÎzâd¡p{2·Ñõù4 õ54¤… µ¶¶zÖ°g—­ÉIG&£ÂNz~éȰXõ—/­ë¾®®®Ö4ɱ±m»Ó5ÑUÕÕÅDƒA¢mà’ï‘ZÒ„ÓTX1œ.3–²·ê$1<<<ˆèºÐúf…Ú»•ÒHÇöÙ¼ß 11ùNEmmíÔ+ÀJªv\nl ïòa¥À¯›F„‡OŒyPíè*?¤×ü`ztx8¥n€}zø„(BÀ.6¶ò)¡J.×Ú€ZÌŠ>ó¯0Nü–:ïŽ&T•–c®¿Õгf¬´ŠMé”Fç€Á(ÊÎâAÞñîÜKâÂ/)MNùþQ7g‚®w‰áˆ+N~e i ý·æ­Ë.Œ¿þ• f§×8õÅ÷³çÝ+¨öûC‘´5Ÿs(Ôúêq;ËO ÍS ¶+·å‹È:Ê_VÀw°ð8¯Ç´uUmY­ÿLG½wµ¾»5Köã>¤5gÔ¸¸m pyuDéÓt±¹jyBé ¡CCJÀ}æŽZJ‰]æmžë³Û©õ†¹õ÷‰ÒãÁå>RœÈS~ŸÀ)[xòê_ÕðQâl^i:ã{Lq°Ð† ¥´ËƒÖ@³Z‹_¬$úUD¶÷üƒ¯éëR¨pÀ°‡¬è:0Сl17ÎWËÝlͼ¯2$†Ã±›õ·Ö:,CƒÀ¯ˆ:ß,(Á ²À`lêw€úæ«zÖ^Ùê§Uëû^0@ãý|v÷òZîŽ"GÅÂê(»µœ‰Ëv&4‚ø@{ÿÒ!Üásuªµ¦xRaæ¥r1GAJj±$ýY/¤¥Evº7o·©°)ñúdg½4O²×âmÝ·¡xóníb¿~)Ków=Ÿ-Ú¤§‹?•¸ ü+°ì¯qßfhºø½ûôª©wtø5¾{¯|h·¿q»ð`Àø«ÃupÞn5ØÛü†oL°|Ú:W†'*mLâU4ú𿉱+$Y§NÉçGk`` _ôHIÊŽ\]] ?¶1°ÀÑÐÑÁOר…dfÞ¿<Ù y™ÌM†sùŒBûòež ''!...4ÞZŽR¾©Èq>:ŽzÛá¦áÛ.#‘ Kb$" —Á’ŒY@€bk¬( ¢‚½ùöÒj{¶a|„6–¹Ñêé^?—Ë£¯áƒ¿1$i$ÛNµ‡ák“UÂüùê`Ztg§8ÔªsÅÃÆ1XÏÖB]›N­¾ÑUs˜¤OdoV”Ýp‹+3ÿ³€ªÁzVE……Ð ® Ñ7P Éæm4ÙãútÚîÛPÞ̰*ÿYÏÇyU<··6P$H·n`d‘uþmˆùÝ$æ Üžå¦‚4¾“›Ûšï``DºÛ4Ðõ†ÚþŸ\ƛçsM^$,"UWØÕÍonhnÞƒI÷Ž„~cccFbHu0@@2 ìåòõÅÑyËÝ•0"2òRÖG=6ž“S—©{e8ª–[â¼µùÇͱ÷Î {_^_ʳÉ3ËHlçœÙ;háþÍ´ÖÞ3ü‘·*ê}^^R™,<軀~ÈæEˆX¯PƸŸÓRÍ1qºð¬Ätì„oµyÉ뺭QÀ÷”vG·@NúSrò}@†DÓq|}}÷ÚÀ§á-~ñþÕÍ\#)œ½›4.ŠÕaIê¢ÝvS¤QÕÇЊAAóãÍQèÄÊewZŇ«ú.êÉIºXˆ09PÒŸZ¡Æ/Fc†À˜|Œ¦1[Àë yuДSŸÕâ— 8DLþHèD­““¤À½?wwwOí±{7Þ““ú¿F–uÎÆê£ñ 0o¹9%¯iÚlÞù1ì{Xù,«ÅÇ¥k’Qî¼›"D#‰^¦RÂe’+Úõ^¥$÷•¶q™g^Ó…Æ£òј\þñLÌn®¨ÅŽÌ/_`@:Ù]aÆ©]rwÚ­´îu²ï£U‰!÷´þì‘üLŠ0}«E¤š¤43+P½i±x×Rë’£P‘íœÕxÔ8lfªtÉötQjÖ6ßÁ)½#\¸Õ䥚yWÉð6t£öÝV íMV(öØzº4*mU%PÿWVÒ@\·~ÆïM[V‘ÍÍÍA›áµ×„òOàô‰Za+¸IíÑŒþW^Jàó444 &ËMg˜tŒ­žq?ünæ¼pxéq{\“írZqU{ÔåÁP¦fc…àÀªæùÕŠu³þA‡ØwG0fÇÃ4o#{ò–˜ï&¥åå–ûVÅ´uÆ=X]ý‘ #j,(Ôõy¦Öì¹c*ÚÛœœ‡®;S¦Cƒ°ÌÜéˆkƒtRAC!d¥|DŽL:ë·ÌE´/"ó/<ŠUBø[¦ætLó[÷a©D¹ŸÒ8ØÍ÷û‹Ý}?‹e^ ÖlÅ} §NB–©Cîe®´¤l…í¥œ!Êù©[k8³ü ÇF"Hy£¥~ý§¦×ƒ|åÞÍ~öùbµVa £¶@ÚÅ+çs,LjjÕæQ@)¡~ž'›¦@‡É+íÛ=ÕkivÒšÇñg ¤©˜‡xðo`PðËÀ  ª©@zØÄÔÔæ¬Z}échætÙtû¾(FßËGm?:°zÍå××é%U7ßÙ=Èÿê¢ tjt,o·j.Kåñqb,,¬Zß¾””2ç™çÏŸÿ´¬Ò(5€ƒRÖÀ%÷÷í‹„>)õ¾p„b¦¦¦‰,†¢Éùˆ›ñBLRÕdá)áiqÛŽ¨ü‡¬û>üM;ýYfëK´Ááïb&Ðhª8{ÚG§µX‡>£v Ô¾*žÆõ­^#2Чî[è3øAŒŸT{æ†'&b±Äüc-Ùr(Y:Æ,¤yªÒüÌJÅodŠß¨éÞ!¼™À`_ºÜ²Üôï?’ÐW~Ý…¢/¾WS4 È/Ôžåüü¼RÚO‚ˆ7të€A庺,ÛMêó £‘‘Ž“¼‡ŽÞÜëºÆÙ‡Gýº— ÅAàÊ=q–2„–žkå[ìý‰Zã¢+`Å¢Þ¾…ßu•“À›³?19 ÍöMòáóRxÿþý2°>ñññÐØL÷ó}Z¨ ò£™Bý*¨–ÐÿðбP·ÈëlWÂÁ¬ð ð],*FÇ`S=ýIìe~w¾¯9Èš|È2í$ÓoŒJ ÚàéÒ¾D7­ÚÍ €Ë,l•´ à9ïLš~ª©©™snƈrpp`ïèÈæy{rÃÏÕsñ~•˜Œ,x!!ªâââÑÛ´©#&ªŒù„ÙÉÒgA¹ïaæc3b›y¢ÇÞy÷% ·L7~S.^ÝŠ•¦o¯¶™.µÑÞ ü˜n‚Eiyìðäì÷;/’ööö©ÓA¢´ííí8DDfÇZïÛU fŸ…Ý›>,ħ‡ðBÝIÚ©ô$ŽÌÚn‡)ppiwtW99C»qe¨Z1Óâþ[†C»„Åî[”ZŸr˜¬(8hÿ~Ü径€´Ä*ò+»9ËE Š[C£ ºi:‘Œ&o<so_%òtA8'®wÔ7:ß§ç±Øy©¼’6»Ew0¦/Š[ë´øÀf¥'ÍŸˆÈºÄ<¬‹™([÷ƒöÜä7t:iA‡¿¸»«·å›§‚–w| ’˜–F uFÖ÷»!„f¢.`ç3  ¦ G[Î7û@#é·ŒMI‰´k¹!‚æráYhW[C­‚üGI’ Nb77:Xê‚âtþá.’bÓ!¸¹¹| Â-Y.¼Qƒ‚û(É6…ih`jEíaø×çýŸ8ÑIII¡ùò^~ Ômp}3¸¶¼þ+ÓÞÕ5ø'غÍÇOŸÐ‚ cÞ¿W.¹%?t³~wôð‡»Zç ¼…zõÎya÷é²Uܥ®WØ^«òA¹‰Ðñ=/z‚Žq£9.õ§7O}ºìI‡¿¤ã 1iP*|RÇ’Œª³$0/hÛ7`©£­^Ì,±#–®O³´Â’õr åCoU(¨ÄK½ e¹~ÿÙ}WÌ‹þ6È?Õćþ ÁInj³§«ˆû]c|%¦¹_«S(“ýÛ—»Ú×ÔB÷4º«9Fµ£¼\g;s¨L‰ßé}}Š Gh\¥ŒJyH%…iezÿ¦%rýˆ‰©°úf9Z8Xœî¹ 4ã`lQºØ…Y·ù®^§Ú::ºr&ÚÁï%sÙ´?]·CKK»>^¢ßtYYYYè:=?O}uºÃîN|iN‚¬UD¤¦¦õªt3]ðŠªB‘9(Qy«¨¦¶%¹Ùs§…Ö¯g•Çoè ½Î„^$Ë%MЂÝÔØå±gßneá¨ÒÞ7ÁT®Öç{“”vžû:’r0R2пhPQûÒö†u<}XàÓìën‘™ª çü‘ 5AfŒêšõÖžŠ»í±‡®žžám䡯©HP²'‚ùÖ3ÚµDÙ~ƒ§¬b(Rƒƒ|ÓZŸ U4ìrW¬ô….c­¾H+‰ùê›²Ðæ}S¼oéÀ¼O©» [µ£kvé}ê¸âÕõÓ•òÑœ«ÅÇÐ⪤ǿÆç¶›ëÈ¥`Öï`I˜ ëЈ×Gð­8ò XRBý£a°7" k;20–V%Ò ÕÝçWpFL&ö¼M¿ÍÌÈ&° 2T€¡yñýýýÐTMhüè ÐSFFF©ÕøÓâ&h1©sïæËxÒd®9ž¥€2x//-Y&Xå³f½Øúè£ùf™ú«ÿh™ LÃþû·üÍú’¢rW¼ –ªþC%n¢G?JØXkŒvº—¬ x-™’ßÔPYÛQ4ùÑ#kåõÜò¡ÿÈüÒSoáæò©|£_oÞW/ÿàžï<¶Ûd™"hŽ ùÜQH6;ן‚ÒpW¨¤V†læýéJ÷ñð—ŠdÔ÷Xc·Êy+Ïy‹÷ú‚‚©é¶Â'“ˆÔ¢Í^k%·µ‡ÛÙcʉ]yñçÔP:Ðà€ÆÆF®y)¯Ã)«ãÕÀå}ˆ™ª±£Va$¤ /p¾¹¾.5í#‚†\3& ¢µ987GõðÕg¾Ã ñ—OžDl5X.ý×ð$ðQXBÞ$ÿÖ‰ì'äçççîéùÒÎÝ|z<Åy|œœwå÷‰ááÃqÆÅ‚WÆ2èïÇJ2ßãQž+|ç@~öˆE­˜y1‰ý'©ÞPDŒY¦"©þÖÎÕ=?±‚±7‹¬8n¸­CÅÞù™Ñ„ô®ðëÎ…·p¾Èë‚Sõ¤tvyÊ9JJq1j2#aÑÄBιNä2v‰–ADu÷¾s>z2"¢«ãsW<(½9'ä9ýÄ”lEGÕžÁŒ¹ðÇ•ƒý"ˆ˜Ý),€.Q-”ަ%¨w¾{ºøûwPÍœ'ºÓjÿÆ®WÂ7Ð1ÔŸhÛ¦SUV¦U½ÁdË{{Ñ ²h88Ù~vÿø¸k¹4ï ,Ô0 ŽÆÞ—¢ãæ&f``Ði Ö÷Æ%‹BNó>|QÄ– EÈ_?yR€œæçôúàVóË‚<)Û ±Ø‡|èè¾ø×’F7Gv%‹Åxê9IÅ$)sz8>äŸïãGjì ~ä6Š£¿Iü|ôõb…áCÏÖ/ŒÆ-FÇ"Kû|jñTKuRŒ¥5p¶ÇOdFU„=•öAÇ>ãX'Gç”fèx‹GŠýˆÅ“±T5"Ëôx«VöŠ‹ï¦Œð7ÚòòòâÊJ`b" “N-NXXtV]ï²¥£¬;ómÏ5‘CyCCC ««ÁœVcöëVêu\Ú>—4„ý?~à‡dÉ~lÄÆ¦OòÁù_ÈND×Ìv¡b¦$­Póó?ÔîHòðIμ<¥ðØãh•öÑ#ÔÝÝ݉·gãÅåÖ[€ô²z®XöpŒ ü/÷öG:Ãå3…wýèß"ŸIJzãÆ;bž¥OmQjk„÷'W¶œæB&h*…ø›Ü2…ð6ajã{ãW¥ Ì××ô+Yª +¹´U„­ý:~Jüžªd+2¡6ˆ1BÀÀߥ0Ô¼Ë,ƒ»}êcÑÄ%*=ÝÉnL³IÿÓï—&Ö öRêÑœjo'Øm 5 ¬9ôÜ=ßë"ßíÁ0Çš*=9ú†¦0DŸY7}µ÷*rRNѪP*…ª¼½½¡®­ÐÑ*@ P~33«ïµ»rÈ„ÑÊã ¯&Lñ!œÀƒéD¾”U^g¶W» 'Í/?©iû~657¯œª¿`4)<¬vÞ2Û*xÌbŸ%KüTG:ë³t“óÞ%À2¬.$1DÝ,DÌZP0 àè€ {øÝ]ÍŸŸNÛ•u¡A9À°ÿD°"Ÿpò¼þIc=ßÜ4– tzzJÂn†vvvìÎÔ=zô¨õ£¾oØÏŸ à=”€UB¶ìm@€ÃÖs)SA®iáÉF&³1 2€›IŠÌÖ¿{¤ee;Ñ~IþbÔûÚ¢×:\ ¢ûz§ØÎoJHüòˆ¤tj“ZÕüvñDe0¦ðâRåÄut m]s ]llìή®Å.bý@µ‚.ÀY¾?L[gÆ•Ó*‘Õ7[Üçu‘Û^¡k_»±|D¶Mžà›ì%üë“öWŸ¾F…HpU3î™ôRQC×áyí%~Ã(ºW¯È>¾6øÕ†!àKžV,†J[”’/p×#ô'c*½ ßÍÌMÉ&ÜCfPN=§ç…µÒÌôÎÊïS·Ë{ÛgW½GÕ½ ·ª*¸À%%¤_;¸XK[ü 0ýÛ®âå’–Ûö½–»9ú›DQŸî{2Ô–îÐb¨/^ny»Ä,¹]öÝTK7»º$sìð(kû|NZrø¥EqI…ý’K,O˜ÞÈ `hc¥qHHB'+Ìw¦ª€Ûw?›uƒÎGm…Ų­ø|.9(()i‰" LÎÛÙpA¯Shp8£™€ïɨúŒÏÙ íI– clBBPh(*…€ûÏ‘ÅDŠèÅçÉÆo¬æW–nyy‹?ø–ôS=¤Ñ„åÆF®$åð‘NâD13ËM½»K¶ÁžÔeØíú–^p “çÑPTX|éö]´™´M¥%6#^äØ](ßu}í­îÓÃ÷}ŒfSŸ:´ÑÂRaª‰b¦îŒ*¿.}&Öó gÈ™‰o?m]Pwè%l-vŒð»\rפ¥€Ó¥ì ™ì7Gc$s5æø’:5÷¥Þ,wGUíê7yºT¡ÄTÕ² GSúxÙ'³¼Ý¯OÇ–æHymïÔûì2p‡˜¶eüPŸ-0{Û3a3T9µuÔ?ÔýP>¥5„Ú7ÆÀÀ@ƒÕþ¤GÏžõ@sO¡)D?7œ¡’QQQ´­ÂCµ“ÄÿC{Óê­.1“†ÿׯôÀ’#’ð»Z‹Ý‘o‰§5Þ˜9‹’C„žZó„”‘Sã½h:”+Bó±oqñÀë[“× 4 âÊÓË‹ÜFýcðöô¿+þ¹Ÿ >3µ<®Ûè’#\©Â~TvÈs~w>ÇC²ÙX=+Bö·ðáMïj[M„zÔryÉË8åÅÙ æ” IÞë?n¼“ýåCèü©g:µ;Ð3½¹Y×àÎïCe° ¿Û3µw)}áá€Znñ|Xýè´‡]⽊¸¦xÙ§5·9ä+%Þ¯.ôçw‰¯n^² …¯ä伊®²”Uzì6 \…qwdЀpàv¼÷ÛPF㈠R `–Jíæ…‘‘¡æ¥ÒòòÝ5ó¾д¦°8fíjšÇï­ ¤.3J3ë5’Lר¡À @öß&''· ‘‹ŒÑ.}½þ]©Áû¥ 6 @Nêy»–¯u•¿×’DÓs‰ØÓC^ŸÃ×ÉôDS÷ç`&­JT(T¿ú#J£„¾ýøÑ•l×|ÏÍÍ ‚Óyyy$ȼ¼¼.Tv³õ.ÒÒÒ"::°…ÿ’[¿¹ƒ õZ­5†f¤hV˜qjºŒW§],EiCbq_ód«]7GîuXŸ(Ël»‰‹‹«•‘õ»½xˆŒM¥cÓÿüéÇLÀ.€j„ÔÕyM'\n ‡Ð Á~ýúùÛÙz$@tcbü}o.Iw*„úÝÍÎm;'ˆ…rLæj°D˜Øy1MÊ?îIšÚ<Š4´ÌÙ¸¹¹)raÛN8‹½³s!‘>”P¾o(pÔÏ󾻯€*‹¤ªpÛ›;·nÅãÐäëׯë`g€„fkñ}D~¨EW+ô©Éä ”®‚‘@†Èˆ¯¦Fhõâ÷ÚZÀàZfaadC{Nm-Éÿœù{ùs|`h¨|ÎGeWÕ"‘é7ehÏšQûZ@ìµ,A<îoˆYâó³í…OŽKП°×âXr쬲(Ãx«·yk+›SŽLZ–WÊ·m †²ÉXlm»Çýý|úCÕÒ;ý–v×—zhnú^'eŽûêò[õÊc=ÒI\²HßwÅ1‹m浇“¾›´Œ_MpbØßOzî½òš…öâZ'„(<EÇÏŸ?×z=€vjçøv£Þа°7ât¬ZyyŒÒª©§_GS‰|£âÄNk£à‹c^ú&Cë͹ÿ¬i:¤x.ú;—gÍ]™eXÈQ®¹ð¨á›9²|fáÁM/\Ý+^ž‘ðg‚‚©É¥p°dÌüñ8vö -muõqKvÊ­MlXÆÿ@.Õ›®8ñâ€7Ó¢þÊÇÇgqaÁk¼¤ãû÷{ÉÜv’""°N#Vuyƒ‘\E¯S¦J-f( |ì €<$XÓÎÒòòÖ¬”·wãã;¹ÀJ yøã´_˜ƒç.›wh'Éßv Š4Ãà vèßöÜèFnl?u¨&c^EÓ27œŠËT«”.çòùÈ‹/57]”š ‰darì¨ü‡†¿b±î%Ä3dÿ*j!ûÈKgëÃ×Z­ómè°ü)árIêä·æ Ø`á|x†Ë{JýSÅË…_ÛÝ…áœü ‹<µs\›xÌ•ŒDº öž]dC¶«ÀãÑ”q†ÔVÜŽ«@¥4Ìž;Uã¥Gfççç*ɘUÿ%&‹¾@M+<4ôµŠÀc.j1ùÛ –t‹/®®iÙ1¨_Í¡Vöª2¹{‹¨Û^;e}ûMÛW¿5;×%f]ÚtEÎUê§w‡4?ÒlSy·Rug„¶™ÆÄþUPxƒ óÜÛ7•AÁ£qJVubr’–™9J6\RBbX&:Mã5—«SÛ`´íÌSØÿHe%›IþÒA\LMGÐQ(ðuUµ¬ùï ÿT‘ |W¬#Å´>8¢ŸS’xÆRøšñ‹íï¾Jôµ©\À÷ï“jhk¶Ûµ2ñ7M«H%Êbúq ¼b ¢«IINÕ<께f½1´Íîæo!¥Yý”þBZÙ>Í$àm<Û5å_Q^&íKæµ|xâsÚµðŒ¥ LÏ÷´ÕêæŒî?tÏéùîàòê)/c¼Ðˆý=›Ïþo*“y˜Ý‘ñãl—ùÕûý ´:[šóÜb†<ƒRðÍ1>tÒÙ‚ítÅ©šÅ`Lø5ßsHHY†ìcÄw|}ñî´.é}ÚÝ[=25^嫌_2Þ´Øw?[æ*X¹¨Œ&H^x*^Í e2ÕýêÉÍk,ü{®(,,l=Qš>Wö#™›ßmW\O òëÀ’©MçX&Ôäÿ ó¯ÓþwÆ|^%ôñOG`%YµžÒ„ç ÚWê‹{{Ô c¥ô=ÿÊøå½Þ«YªÕš!väã\4X&eç”ç …l³äг 3œ ëFDÚ㑖Ʋ2+=³CßÈ*È ­ÀQéûI>wUÿ^ôQ“—=|äÇÁ¿û>Šø\–;b¸“<òÄ7òx¨u¿6ê@LPnÎ쀀~$º6{ìG´`õƒFó*몙LùŽŒÂRŠöwÞ`Db3ßÒ54fZ“É‹º_ºþšÎ©ÁÐè\çlÏ7Úé¶X$œ,u… E<¼·˜y 0š,7%pgéíë[ÜÚŠøSFk¥æQ`9š¯ªQnrOÙvªÒB£Ì(è—PÇÿZÃÀ9•ÝLRMûdÒw]-þÖnEç‰Yè½b1ä Öן÷|æZ¢ö:ö؉ ÏÏ=tí-å‚@ùú\52YcÒé_baó(s£ÙÔ¦MÎóƒ“/OflœòHǼ‹ ö/ZyUw>®ôŒMä²Ñªú:0Ü)gŽÖM&±Z—Ä¡àí-h(ŽÇ#¼³¥•ÚkS"€È[÷[‹¾çFOcgÉi³ÀÁ¢E†TayE¼ž5íp³Z бÊXÎ!¿”‰É×°û7$Á¬ç‚E…_(òîÞÓþv¢šcB¿¦®§Xí³äæ£Å£54Eâu“Ñ܃ðŠ^Š~mp×&ª\§Ý ÈʈQ ˆP®»’£ÄÊ{3¸6®Å¢G æ3æú˜-òð‘À~ÃÍÆX©Ë( ;²2à—x‹º¸²„ïr€vuÛWg4ªDød‹½î )½÷«þcôx;‘À¯Ë”"\L¾Øj³O{ÎONEVVZã‹—Æ Y?D"’L›Q=sõQƒå¥"urÁ³¸<»÷·PìäC|*Ð/›'‘º’,÷_1FŠ™þô+0æ2ji€sHPïwל'öZ­¥9C—7‚!âæçIÒx ÚW‘‹pcMQvvÝßðzÂÅW3ñ*“ˆ.êL¾s pï…j,²bÄÞXR?+G@îû…°1JÚ@˜šŒ×±×>ي›E8>Ý›pÒƒþ7»¢Ç¾U6ƒ4!’Û™(3Nd1|;·8O°ÂZ,c}Cmzoª÷ÑFôÅÔÿ<ÚÞ¼÷2ä`CÂÓձɩ´Û­9ŽEí5 m;UQ¶ƒå"=z¢ñß{ie•…žò>Hºm¨ ÞîvHÝÎ+K' ÐÎé Þ'U¼¤„-s- .bÍïIçìðÔH…m[ ßš•"—ä8ýëRœ-)7/ÛKE^È{ô!ËBÖFl¹':§ &ú‰Tpð³íŸØµ¨tÃýÊŒhž@†tBj±ücu/•³êï&Žjs7oüJ:ø:šCË3CýIàªuº²ú‹“¦²ƒÑ«¥ž†y41>mé§;ëoœâ¼ñžqÌ‹ÜÌ~»ôÉ$< 5üQ. Æ4FEê&(³¡¦±d5ÏâOƒØVR™»ReMžˆ£fÃË!Šd¥«F<ªËãp\¯îï G(X±òýýúX‘vÅñ÷ä©°Íwóc¸ÐK1 éÅKƒœ¿Æ:àK¬ÑGl¬â§,· Ç$]‹à[®ÙÞܬªeÇð|ÊPÅDfÚÕÙ›Óâ m¼šìhH„‰Œ„×&§·Å+ÍÈçÉ)}XaÜ:¾ ¯Ü¢«õÌ蘔 `FlAÈüÛàà¸ÍàgÁ†ï—t–V<¬x¸¸¤©4¨ç9i8880bbbë¹FM7¹§ï?x€\\\lïäÔQi1üEá‘ó µ555D6ßÒ@é€m HN&ç²›‹„€¥†ųâÇÛ“øÀ/677O4ûxU¤qsÊ}ÇdÀü!ê×?‘Ž£ˆ¤•ØZŸÉ›Rÿbñ¶–y†º†Sc.+„pî’cÙ÷^÷·Ùç·ÍíÄMæîWöĵA“Ps‚ëëkSÓ @&ˆîêiQE£¢¡YŒn×så6/mÖôµgCxçâñán•£œÛ†©»×¢ªÄ¢~†g_ E…†~J£A…º=¿}ûvaiéícål‘t‘,%Z.."***ððbrr‘»G¬¸pAAA/?E"úƒ·ZN;88¼œ¢VÔn¤ÇÅ­B=88€¨*TóbÜ1{ °^¼xÁãyüh M8:ZøVÃÍ8 (& *&Ëy•Ö}q´Õ/‰KHÐçlaaMzÀ%'/(à*íº õnÀÿ?í™ä='²LÑù {ÿVÜ×’WŽùœ+8W••Æ…-$³±Økýº^ÏUò[r*O£Øû“FÈ÷åŽZZOWc~ÿþÝýædü`5Ù*y9fg 8®Ï«A+ Ƽ&¿‹Eùi×Í|ýzH=VÊ5$FP¢Áéîl E€vB#" > X‘Æ=ï ãÓó݆½R‹áÆ!2#tçWW0]ÝØÏŸ±ÚÈ¿ï¶<.ÉN^Æd¸-ˆK"õ­·×óË)Ûüq7v_##ºöövš\€t%›¸º¿Æättr\»I>Ú×vÁ\ƒëG\×’ 4bÍf'J!™64e!144RÑÄܼ£¯1ˆˆ¨þâ¬Áu'üæêì>4Þ!&.î-î}I¨Äð- Ø 7ð ßLضݘªókÈŸQŠz{ÑräSEÝÝkwIÖîì4G™ogŸÒmžã°¸lª0i–#NWÛt€k:œíêBÆh¡-àü¬å.J»ÆÖðxýW"§уWŸu¬’°ýÓcÏ?À¿·—ó¹=C"â€}@!¡h°zgOÏòÍÙ¼”¼¼ü°^¡äTxÎ5y©O?û,Z}¤C¥£Q»ÿ9ZõS´t¨}ä9R›<¾6¦œõ(‹ƒBG¡“GE*'UÓàC:\ÜØX8N²—U;Œ2yxÔÙ646êÄKÓ×;Êd•w{VAH$)ÜK'ÜìXó§X›ª)ˆ[êîÛÞx…ŸûÝ „™s¯†ç;¾ÜIÍÕ®s2ÏŠ>Û%à°Ô‰p%+#Ói5^¼Q‡×YZÊ¢Hª[ïŒÛr{i5Ë [*Ömèÿ2º”ý2¹ó•Ð…¸³›qjJJçÉÖøV/c‚ŒÃ\£GFNNÎk;»gò‰,ÏÏøPEœ×cÖwv˜00ŒNåÐ^êaœ¤ÅÄЇㅉŸû/¢(H8lŽä©¨¨TYÝOéª0$+Ï’%Æõ‡2\YK–_ÓßÒ˜¾øøñc„rŽÍÄð4fææÍÅ›‰---î‹íHºuï¾ GÁ¦*TNvßHF&Üöêúâ(#--­íV\‘@PP*! ÿýûw†Z!Ø‘M‡1æ° s- ÑžÞ}ÕQ“ïNëQŸÔ m«D|n »CãgžJâ'¿¹Ã¤>ñ[÷ZÔ1¡KL¹Ž[ÙÝ}‰1ëêéÉ73;ë2½ººŠ¹i·=QzCa¸Aá»Æç6 Ã}-*Xók¬› T¨^}„fJÍ.´«.C €G •Îww#ÏÍÍÕïLe×lÅ/A©¹––Œò):m¾ám òW_¾Ã„v¿Dv½ÛW°íFK*Ú:Çß2¡…ÑáFœ\Ñ”%«¨£ƒ¡­­ }ÀH8çi|0GßúûÚ«^"é?îB€‡‡F¹ÖÖ×ÃÃðð𠶈:ÍÞoòz­¶Ž|'š¨w)»jº5Ô(½‘±1.!!R˜ø[ ;"™¿Z‡‡ñ!ûÉ>(.’áww[¿’Úìyv¦ûñ¨dË¥pçÚ*O@:iê)îÚÅÊòïÄ‘(Ók)¨_ˆ/W‘ÀA<Þ™&&ç¶ ”É‚†èF=@~N 5¦¦]Ê×Wˆîþ}¨M ¯Ó* ÿÊ·íLë¯Ôµòécû»æÑOyÚë•;llezñ0›ýbJh¢‰Lл¾sãtÕ8q\3â-Lù¡½rRôòåM÷ñŸŽ%’òÃèèèÄ £EÍ ³t»ùf˜¿b¦¤áîLöì.Ј* MÍÕ ¨Õ†üg‹Ÿ6øÀháBçŽS·À¥®|—–“ ¬ªâ”‘•…Ziï –ùæëöö6ìzÏvýª¦‚?~M …‰g\•/ÍýúTu2óµ0ý›J Tµ@-]öãS¨ ”ë÷ó§D£óýEèt™ÊçøФÕzúüí›zýž©–ê†q¸…©*+¨ýX•¡¡¡Ë»ªìØ*€å]8}¯Ý1¨H²²²H=+wì­­™ðMWÊÃÞ™”ÝŒ„whõàÜÄíø6‡XŽYËö­¨fvöû!Åx†5LÔð…:ZúJ{+‡32ƒdÝžœ ìø¼šî(+™0ä mj„J« ¦{ú´XÞ|üLÙëWŸ8î)**ŽöBðezZXÁ À†D>—üÝìËÄDèÄlj êË‚„N´µ†‡Ú´•——óuMáYŒÒíš}sX‹vœ¹­Àp»e’RüÐnÀ¦£Aƒç2ŠºÝ»jë)Ÿ\ÊZíÂjÂdáÈã\˜‡”cÄÑýkâ>ýǧºáÃ9¯–“íšó¸6¡¸t"#ƒkŸ§†¦.þLw—§¢µ5;Îiã¶3E(|w]ñTóÁûïöG«/ÿì›çÉÆ‘磻4ÙæüÏÔé°°°ÐÈÈÎF£RóA* >géñéžg=šiGÜ•ºÓã¿wO¨=¡ÌÑl2>‡%ÄËã E‚-B+]{}«Z¼ª8%0}ã#‡¥$>¡]dE¿Ø4‚Æì›÷nš¸7}ôzÏÛ$•ZàÖ̼óÛæ«Ì‘¥î†ÚÄNI{ÑUJ*Å×r(fç±~fv]™º¹s»½Ùó»HÀ»wï4êô<7²´æ3Ÿ uvwõ¼£¬ï¼ËIóECGG‡%p÷ÞØ^ÿXmÏFêéGã±B͉&¯šâí‡iÞðaâFûM[PÞ Ø" ¥÷YXp¬Æ ó¸d¥¬ìÙë¿§Í‹ûæSeŽg¯ümß}µõ‰2)bóÌ Á69ÿº,ÿ–¦µ°Vu>ž'U)h_€ú±kLaÞòMbl‘N )—½Ó…ÍUZ\œÓs¯é ‡Œ,|\Ï jh…yº3Âi5fˆ_½# ;{€ÎÓê`0†Òªª"u?(8P ÔÈ-HôÍúúkD$¤ÑZ!ãÍñ[ÌÙºÙ}aÀ" Ã:ì½iÊù³9C½´#?—:¯(cF” 4¦Öý€nÎk¯‰O÷ °ùI’éάï?$¼•ˆÑÅK3‘ÜvÆ+e2f`D$ÜœüfÚOå•$¼¿jÈ·èÐH;âœÏÎâì8UQíi1Ñ¢eÆÇ–¾«*N×PÏÙ´o~k©n@q¿¾-W„šh<”Õ¶ñÚ@ªçU¼LÖùvÅ T‡Z·ÍÚ)]ÆUeŽ ·›KÑU·î[ðˆGŠæÎ¤ëßÄéqÉ3A¶:§ž®±ãvåÌ+"XnqÅÀ ª¼9¶¦»ÉH\Næ"­Îgì% ÁŸMèaÒ)ýSªlx0zíåï$Ø3uÁ)ï»Î§m^sÒµ…LÅìÀ¾Oõ‰üà´Ö#Ëøßy ž²aC: ½¶Ó)eÞ] ynI§þÀ(66…/¯@¬¶%Šº<Û¢ ‘øFžºÀÿ —¾ˆ¬ÄÐR51†ž.ƒË ¸øn¬7°DÍO-7‹ëOLéâBµâP°€4þôòÌ–Ç~A„]r„/à•’ÆÃ? ÍÀNM,÷§ÈþldÔpW­«J0yNÄA'6bôÖëíÒO)¹„îsª:Š…ÚØ%Æ(§æsE¶äW×…Êê3ü{O8ÑÔ¤ý®u*£ÐÊZLî–uJÀ‘àðd+ÔÅy#˜ù,ý\iÄ ÎÎ9Œ±âÕR‡*5†öÎÆUô'‰¨îÎ:9Ð_±àî›DJ½¯zU„€$}Ĭ««‹”ñ2â}ÚÈ-® ”íBñbõ³çæã™&¯ñ Cè¶ñ‡-ÅgøÔ÷¿™P¿O$ ‡N®ì~Z.6ï1·¿kl·“ÜÕ5{ñOãui$ \ýbŸéÖç98äÎheyÊóÜ¿i]ì„ú醃¦Üª‰o71.›Á¡è‡µ)Ö}F'ÎUpÔØë'{K¶¨ñ)§=fðÆÀ°`íéË4ËC©Ûÿm8rntùf´;²°ÐoŸ·¾A@Á! @$&&†: £‰ºmï/v@¥;$|QÊcñ»õ†BmmpÉÅôýv¿øýñ ÚïZlÜLB‰‚’ò [x}*/£$ ðsãÑ|U˜ƒÛ^{g'"Ô&F•­åõUߢxZ¥?QIüzßF”_ïoÙãêtX³¼VUotÝWĸþŠ~Â+¶4!ÔÝ|.¸ÃÍߦc ¯,˜ù£QÃÍD´¼ùsÊæbî‹Ì3¹WµÂ†èªyDóÄ4†·ªÞW«¦+)¸4ôi•Å”ûÉç=R+࢘.^ô3šv".½;éãááÇ_«™i߉géˆY5%þç£]05{ F|ï}ìÈRe´ú=::ËXµ"­ &¯3Ñ<•%ˆ.èèPˆ‡ ƒR)?¼°^¡N^^^€ááá,Àõ§ðâCé'…š¥F]h¨oýÓünIÕÔÔÜwëÖ¨ÖeõÉÅ‚1ÚЇ2 ¡hguu5€:0Ô-ãõ@ßghë >[Ê´7úEÞorj Ù.ﺿëÇ¿:ÙG”yzæŸú1«LŒ•Q–_Y€wÁЮné°‰çJâ)£ 'ŽøF}úÄÐRGC°lL;rVŠy£¡Z2‡„ùöŸÝs*¡[sfhžÖ% ó†’yEoeÿO›\vëÙ“WYŒã"cóÍAQ÷ñoœ¾gï†lk!¸ÆçÓ¶¼mAòH'ÓJ]ÔGiç¹» k2÷lëBKe”âÙLÖKÈ­ÂP&I’~ •?$&&âèÈ•K;ƒÅ‰'@DAA€ÒZþWu}{µ·>Qv|»ß‰ÿêO#þ¡,t¡ËõûºÔªÏœ.§Î/·Jއ_-ïÎ6„FE‰Óµ•›öÙ_ÚXÏÔâÞ»w‚ÖƒZèÝâYT]í‘9/_ÐÍÊùýy¡ì5ÚŒ6ãźÐtî£,µ‡ÿŽ¡):)=©¬õÈFä–OX°»ÛÿÉ¿MEo)±í{‚Çd#÷$gª_YmàÅ#´õ–VòÛŽ”(J£%w ,MW$™£x‚<°<ÁKÅdá½=þØü™bn7÷ÚöæeÄæê”šzôgüåiÇ<£^·Ä誊,½ÆÊË$¥—7+ÝT¸¨™Ä  °1°íRŒñu€0iTKKËîÚ—/4+++ëÕ.ÂæI‰–n˜8|žJøG=Ï{С·oßîßœÍ/ŸÍû•”=ó± nŸš"3Hê"Ë\w´ ൅Ƣœ"É™zðZ•®øZ'˜™ôózx=ŸíƒC?øÅ!±»dº?/KðXß„tœ|5šP†¯RŠÀz£³V`0ûâ•-÷ð>~EÅ`ÿ3ÍD½6Ý–=­ï|bHÆãDí!wO±kW­o‰Ÿ»¨fþ/¯™ôˆNƒ¸~îZ»ŒSÿ{/èèØ>UVrÌ¢~ÿ„Øz—”|gg‰ïææv}}4¸t„ÌÊŒyK 4h\TLì`Â8:]»Æ–ó4«SYY*8ƒ#CCC?+Ì_AÉ;ç¿?êC­ µkŠóä[F¿Ÿ<}ç“‚yGœÂêþR}£zÏÂ34×tÀê21šüPVH__d½ÉÝ6’½u®W±v³û mMá£[&ÓϘ^¹ŸU…¨¢È³jQlmν ¡¼Ù5ãysÊÅ«Âûhì„ö… ÌØvµ,µ û ʪ…*Œ„^}ŽüöíYŸ„¤¤ôÍÞ¼ŸedfBü“œ šæ5±~‹„M5jò!µ4þCK"ì+ày¶‹éää„AÁƒyHooï…ååa•œùMgÊmÄA{~_i† ¢?~`š™™Õo< Óz¬29?"ØÄeñ"Ôšëýš3…±a¢l¢”ÏUé·¾(„]–M;—­¬Rúîöüºçˬîûñ>AA\~7ۨ߫©¼N«Ð8È,Cu~0ÿ  $¨Öûædœ„×ñë\3FÕ4Ñ´W‚'0 ™¬¸áª¹žQ¶¸ÂŒ’å„j5úÞ\>ÏR"åÇ€¤-S!ÁÊÀÖ4ÿÌ]!P–]rØõ±,§ô¤#z›1{oRÚû°ÐMQ EWà…oQßš«(,ëˆ6Ü~=î$“÷ÅÔ·{úçõ)ZíþÒi›ÉÃïö;¡cOWIK>}dKïvZ=J®=þAyyŠ«1µñ †ûëîWäWsT‹hØ]8¬¹Px"~vb$÷çãr‘žÿó:þ¸”‚Öhá¶–9¥Þá1&mžg丸Uoi¾lÎ%ÿîûUY?|õY¼Æv6’"é@€hÇlçïŦ‹$Åçö²j} I&_°誶¶à¡ü¹dîEh!,‡¡Ø11 ÌÞÑQøoŸ( ÕáﯘC²EÅsp¬ŒCDÿÞç£Z¦žºßxU1LÃdÞß5Ç.ivµÇ¬zFúq„†.£:X KG==½oß¿³º’ØÌo —9þ–1ù•1˯UÎ;¯J»Ü#ú•ú‘ÈóOº(üKI º‘”D\(îèÂ@—cЦþÜÍöÂì •ëçÝX`}r¿³üRšCœ?—ë#›1¨©ùïßAº ®¤üñ2•òJ_ÿ¢³ž,GrÒ÷½@‚Z>A]ñ Þ_óÍ”èDL­{-wXVVVºxCóóÔë#yøqqqZ7ñEÀxŒ¿ëñ]xê(OÐ!g  ȯ¤‡µÁS$ü,o†«looæã^¥`×¹Fî-”$„æ¶\ñà!*¼ëî ¸mTã!3UÝéꔘë•÷¯ ²6¨§”„„Ä«q²Te5¾Å=çOƒzÞ¥šì5_a½º ÷ß̤›îE}(©¡ŸˆÞ—`ógÚÎä›ip§,¬®¯ÿnËNÜu1ïC™˜TúŽ(}Y–Ë+ªÒRVNWãRq($ÌhBÖx­Jƒè»ý€Î’…ÝEðAb(·%ö¾ÔÂæ&Ú³gÏ ºü‡òˆ0ï˨¥Å—çPÕ—.[y+þO·bnÀJÚz»fþ€~ðªâÏPëÜAÿýM>nñÒmh…åý§Ö#;WwÇOürr¼ñÅ̵׺p¶ŸwE$ß$EÒÓyJC&W± &5“›»ÆòŠï CÐð‰¢Åú¾¬JQ²™#í#¢w9”i·§?H0ÿ Æì–‚5Q9aÛXýìÚ“Ê <$üXˆÅÉ— <·7‘röîüÃKª<ÿ^law÷ô|}}a°$¹àdn;QD¨—Ô?¼bP(‚”Ýl¡ ¤™Í±òä¡å~â>{æçÁ…tî'eb{¤Ÿ»±"þ*“%Ùïðžõ¿Ô¶rÃ("ú‚<‹~éXаÉh8 TªP` `̘¤¤0(Ýp¨cG¥sFFt,É 6T`·m¿%žIàp#ÎúÎ'>ª$­Åßn¾6òI A{C e=¦›«û?[üNò1Ýš k1e,)Ó8íÏðï߸˜nB¾ 1е\±T¬¨¯‹‹G½Ì¡#$$4l:§OH …šý‡˜ÆÐ r ù^n<œ=ðêSºéOå'ZÎÁnïèøUçdÎ¤ß uÑèHåwcñ:µæáã[Ò¿»$PQCãõv &c]^§:‚ò¾²ò®“Ô™:¿Aç»]’]ìãˇ|Î5l®¡ÿܰ¨G3ZÞÕÑAŸ0ûÁhëѹƒ òÐ2:PsÒoÐ~\û"%.6¢Æ6Á4᯷iBsmðá L7ðJí}’ ”î¶7ç¾–êf`e LqZèú,èÅb=Qúà]­!âs[Û]„+JJJC hîTgW×F/×ê°ÝhÕl••zfÕ‹—rˆJgkOf°ÆR™")ÿJ”bC†Úkß>f``cÒ´°ØÑñkmÑ÷n]÷w­°ÉÕ}å­JF{[¢b¸ùÚäzÀYIã)FTØÎòpl¼ÜUïóüùóo}}ùªZÖ¢xÐø UŒ¤ÒôË7íOWnÕ‹ùEJÖ²Ô`ðú?Ûþ 4.¬u¤˜åÚãÒvã_¶ö~íDfxÒP-”…épÇ…æ–¨~ÕJæÎhªÒ{[¿ÔŽËn®pZ^NN|ð³ m‚ÌâÖ–¶ŒúsœR¯3Ûó‹‹6€1€weÉB9‚…z®®–¥dx{}eÌ…[Jû±ÏeJÞ2ÀãºØ&d•i÷IMìF¹/g4`rR¥æú ´ý6u„AãÁuÙs›Ž—zŠÿ¶€§}­âoïí÷މ§.cîùžÊIâáâr²65rúßÎ× à6))©F£;k¶\’RÑõÆpŽÃíµT‚¦¨¨5MÑÒ"ºÞëìîÞì-ú‰–yÚ®êÆX¿Ü÷¹<.™–UZVVÖ(šÄν¼©Ëœ[3«×kGw—¦_¯×ˆäúS‚õÝ âo-ü¿âùCz$üpúú o|–•b]j¿MЂ-ù¥_LËYwYL»±²Øß/ÇÃÃCÂUj#©¡© µ§AÅÆ/ê{„ oÂFº½½ ȸ¡áA««ê¤¿?Œ‚×Qœ{Ö øò)¡}Ÿ‰á ~ýú•†‡§VÞgî€Å£”-5Öº—%Á…´yÐbK‘RÜ|--å*rjrCTqdî/:žopZÇ#Ð/ñ×~EÎãËalÿ÷æaátœÅÔÏ$]ã0xsÂÓ™~µ¦W ›¸x÷–¢á°‚ ·l+'}Xn×=4´ö®b\**=›»$vs(-žþÁˆ{@§¼Žôà!êÝönEø]]]a0'§#²NVŠ.§`xaâYÝ*Íl|¸V¨°Ån¶’W«ÒãMÉ¡ï'-îýÂ8þp~¶zãÌÓáO¯9édìiûÔ¾<*È8œ/@#ÐùÐq¦)u|å7ç¹å)`ýÐ&™Uë/É»˜¥øìFøö1}£%ÚÒ·˜£(É ›ÿL8èyH@=¢ˆ™®wyÂÈÈh`cƒùűw ÊÇ\ÿ™ž››Ûšý2™l$­¡ß÷ö¨ <œí\cÞÖÕ¢™ñ‰fÚ-µšE1pîöœé¨u-áÉDX¿¨ZÑ&¢²°ZÍ|5·r¼qg…‰•ù½âå ¼ÛüÚísRðóÏßÙcþŽ/ø»Ì V‰˜Ÿo¾¢ xN¶Ï„³ß)Ü<îãxô]ÐmËm¼@«ïñÿAT¾h>´êÛ7i¨ÔÊF4]ÄÙ™ÐÇRÃŽ`”^.µ4Ì–b´’GÀÛ‹­¶Ñ­ä|¸I˜! µ|±™›B×ÏPt%–¬v_T1WÒâ3žiÊ£†"q Û߃xRì3iOê‡ç̽iŠF<úPZj1;þö/Œ.zôC™nOçñ52ÿ³ño£wƒ$z»Y½M²9 ³ÌÀ;888ðxÒ×»l™mÛ“}D¥Ð´ÇDú؇[V"ÕÐl˜šËËPó;@;€ÆBNê£øO<Üug*h±#d«*¶òNÐY!Ô›êÔÿýýíÑù™:'¨~  FÇ:ŠgûðžéëOvoV¤ßlÝñwò ¦¸zD®ñå‘JLj¨¿$|Æmž‰³Áƒ_-’FNCù¹½U rÓã¬ÒÇáé~>îÔ²KÆØßaÃ?°Wñð³ß)Æ(œŒ!1 7^bþº[üð9 É%t¸ÂMtÿªÃmø7K ÛõZJ¦Í;B³,ʘ´´’iàƒ\ƒ¯v£Lìþ’¢¦åå%mnn~9Íšr7ÈlB`ø­¥ž•ô…øbl 2®"þ¿Ý[`™˜EE6FrÄÏ™XÌü-B[+ut˜¿Á[ËLD†S3÷ãyÏ-Æ>ŽÚÊ+?j_•ßd¯9î³&d‘ISôïw¸5È:%L'¡%è D¶}¼¯y»‹Ût¢ú›l†G>,“´ÿSG}&’\ÿí?\Uë*ܯë”A‚–DVMõa x_Wû- tåˆ`Ÿn«ï÷éÈŸT¯òô|𦤖ܵcM‹ó0»~ù×ø±ßÞsàsL1"hé2Bâì\Ìg]Û×,PP³ýŠÐ5{­E9elU¾¬H"…—Ô:ÔêÀQM"úxººE5þî g÷"|þ= -~N…¬ÐÎÂ.¼'§ [Ÿ_¡échŽc–XcŠwÎÑDÞ°’ÜwE$-´³5 ‡(g?2¸Ý?.BŸlêøá Ϊo¾(>u7µ¢‘ôGh2÷l¯ø¨ð>V5óJEKH@‚ù1›ÂÏ6¸í§¥QÏÌÌ@µLºõP¢Ÿ«kqu`¸LVûߢu$q))±§`+޼FFF8æææ†'£-½¹Ý-~Ì%†‡KDu<ö¾³§gË&§Újüå Mmm-Ô½·ÞøòüêjëRúÕ+nw=Uá»ãáW¨¨¨þèûn.++Ûßß÷ON&—±Üixœ°úØáÑ)ccZyOær"@Ë–OSÊŸÀÄ¡ÍheDP;õUªÜÛ]ZâvSøT–+Òº›ôYóì`ø–ÿüFË£g}Ï“ƒÃ:Q;)ã* ³øÕ_sU4­ŒîCÖô¸3Ô·þM¦Ð 룵AhVchxx»×^SHe%ÇõšðÝskk&à`ÿ%&#ƒšç%»MUY•™|ǃ\ÚãÇ÷þæŠ-G wFÅXíEÎ-_c"çí-az¨R{:ù³jšáÞ\“c‚ûÕN T:„N¼¹ÃÏÌ\¤W/Þ÷þ=”äÑŸÈŠ°ÜÝóŸDÃű"mAOx¨œ¯fZ°ûk·KBÀÔïNÝõÙq+ã‹ÄGVxL­† ê«\wò«…ï”xŸú¾Ž¤F£±„+ªv|ùÝ«éò%E½ô§'*ÿ„Ï– ‚,u„õ"·éI ù>eža šE/ÞæIîÍ!±%a—¨§RZZênÐo LØ; ^xuuu˜Èü{&à-~ÂVÁÁ?~ u‡¶VZÿ»§‡”U °MŒ4ý£'O¢¢^FíŒ Ö9­A]áaPi"«±ó}jrGJ+¾’ímkwÕ†wpppÐÈT*¯Ž/>(çȧb  `s¾–“"Ò;u Õ›ÃCÕÆŽ0ÛK ̈́Ÿ(ðã^¾Ò-ÏPˆª¤F³wPÚØ:¢ã/©zq,|y%e°5À½øW*FX2ªƒ'À³—Gÿ F´ÚnWª\Ñ£’ø%Ý&Oå²õ8/ ñ÷ïß12Y˜˜U‘xMóß¿Ç_qô¨â.,ìE^Ôà`¨¬ê܆NüTüõë×Q;Òôx*]0ð@éÆ^ OÇli {Xp%&&ª<ÑvI¥Ç[žÇ`î+ ’‹z×6Öš;»H˜„?D²Þmþš?m-}výËã‹ño¾÷0&ës%‘¿B¥ËO'¶y{b™™¡e3¨Ûz;®ìpÑ!k§‚†¥ª@©ƒ™ݨ¸Hk¹ÝÝ] •!Âq$p ‡ŠÊŸûÐÀÆÆæl:<<¼¸»[<­V0 ƒÄùÌïêÔêþÄm;Ó õm²á (# ÈÌüòÌÉÒÒ²ÊøÄp½1?.öÌÑÉ©c´@ÝeJ…«–7w*?«6a‹ ý&}ÎÌ«èE³ž\HbHeÝýh€¡;ùÁUG>ñ¯aT|RÉSMO~wÓC˜¢áIIfÚñP¡¢’]lÐM‡ÕÛË-2ÊÑgͽ£¡D°Ÿ)ê®*Sî×:Ýýûf1™™--uE@‡ÔJô0aP­>Ôø82ÃÄÄ„æÁ䨨XÌËË :¸/4"ÂÊÞ*†ÚT@ iÏáéwéî°?x~÷}„†0@™8£ïFUmÖTßTÒÙÙIÃÎŽßr{ù:fu¬Á(ÒläÝ€hhdûÐÆî« ²¿Cð’HŽÛ”N÷>¶Pæ)†×&é(kÕ&f(Ø”þø‚JÌs%K.8l:66¶‰©©  ? xAÑÑØÐ@„ý}{çÝR h(°þ4aê¶¶6¨ÃõåéNDL Äaa¥Ö“lP9Vzz:t–CFâ4ùöüòr©ïYKçfíãjãGT0(悌M ‡€¼öðs®ka1FêG¡£Õb 8€\ .Oš§uE’²oÎr?c«#+…J$jllŒ¤”Iv9\yq¼;«½Éç Ùlö†6N‹™Æ’±ƒ“ #¶›«úš©ä;T i™S9I¯æçÛ/ìõ˜6³Ê%Õn'š5PÜð±ýg!:KÇáœW~¹'x¹®êv”4[n³„þáT"È­]`t”ˆ‰Ê×¹ÈÂQ2w‚"¨kƒl‰‰÷ì1+ºŒßÏ,ÌŽCA3Éð”\C[FÃeK¬6q(¢xLü.†žîŸ—e¦mÊÓ¶EM…¯¿¨nÝ‘ýlÀ‚bnóTŸ›¶ §"«_AS—ÑŸ5~9;ÿ™.æ°ÐúFrÃêŸL‚_—vòAê+<8©ï¤ô·K&å§ £»DÇÿgUÀË&Ryé,ÊãÜÇø) ,CÍOŸ.ú•£Ô·d¹9…­ Ù­oîm”Uv. ^ØšmÇ„†®?ó–|ðïû /f,åf#l±ë xD&/ Ÿ°õB_iD  —3özÄÑûΕl»‰ùàZ Š‘k‘ýë=¥Ñ‚à~¾æÖ„¬ ÿ•À›T~r~Œ ³¶µ’j©$£ˆÃ4]š×ˆ#k²ÂÏaÛÙ¦ÏcF⚣ ž\žl©·Ð$‡Ñ b&½p©øoÅÉeyªïËÕ µ<Ûë5¡ÇUD71Û†ýåm8?w$amŸ0T¸O ÜWµÝ¼-ØËOHi-SŸ‘fÝÚŦíØ”iÂ-_à¹ÀС²àþ(õžjqÈÞ_ó<173CN9Q`åþ€EÉG#,¬_#Ðô}IåÙ›2ÒÌÔË‘›ÿTy ŸŒ¦S&,Ú[ xM/&EówŒ¼…BÝB¡#ˆ¬‡|U+€óÏd™ZŠúŽ Ó5kóâ -mÛ·X…eÆàjQÿjxœøÊðÞ´*™tGí§"Ú´"™´ŒH¯{‘B-ˆ^¥¡ÈNðÅ%&†JDq.zŒ¼zþüyÕNm-Ï}‰Ã/WÆì’ü'yÚŒq±0ûÜzL'Ñ4g¨Þ–uÐÒÑ º7 þø¨" [Ÿ¬xøUé±·ï§il|Y\3Wº~þ׆yo* ÇfGKï)¶ÄÃz¥Úz±'ãL¢õF¾„qONvpÌKLRõ°t”PSSƘc]D‡ ïº7‡),,\[Wõk‚j. 94˜ä\ë½ù*ŒýÐÓÓ³··‡8€xz4ý¯%/Të{s;ŸŒØéYYq ÏÈ `”Æ9W Á‡hoý;B°;zz¤ˆeuöÏÎÆ^B ÏöyïþÈsÏg=ñš'xbí¬2ºþà³nàX ýÀ`3é5’(g˱ºJ‹ÀÃ;<<ü™%û‘¬J…Ú%´¡C¹¢33:_³²;°…Å­·ï$ƒ‹ÿÇh Ìÿ¬K9O7nÿß2˜NËÛ †ý^QTRRZ#r6ݪ÷5ù¤¹A ¡Ó?|¸ î|¢ÆŽºùj—8—<ùÑ°Çø±à¡ÞÐ8ÊÓþ#}åVãO#É8Õ««á È£_Î[Vv64¯WMMÇe“Xß ¿=ZA?‡^5ËÐüÇÚÚ½wÏŸãäw9îUÓ B½C+*d²Þu!L«šþ—ßÜ”!w`”j½/ØêÿÇ2¦±Û-ÏT`½¡–p¹¹ ‰OHhëîÎîþgOãã t OÂÚ~Ö8ÛB‰Ï‡‡ù®ÌàP‚¢Àá·û0ÿÿ”1€Í¯¶Ç|ñ/#õßÓTg'qŸ™›£ÀX¸¹Kd\]¹÷Èßy/M`€þiii¶~5¶³1ï߉èc¿ÿ*è¾Oå5<Õ­ÿ¢^¢§QkO+*&fŤ=ídd``°ü3'Ûéh¦p£efn®Þ Öäyby¬|ÃÉŸ4cè%©¤¢†ÿjËÖõÞ= έE¨mÆ[š§Owߟ•°gí%6§m SU |ÝM¤¹>w€ÒǺ±B,´´Âž¨Ó±±á `wkÛ5‰…`‘ò3 c(ì É>3üÇðèéS.œºªn«i²º††û‚‚”D $ ·'+páÎúöíÛOH;Blµ‹ÔD¢^ôÖ×û\q•èGCÄ·'ÊH¸mSæÊ«Î¥Yûüè\i+Iš™±?ÙT=m @)(ÕTïeÃ|ÇÔÜþäÐsœX¶€,Ý}À* öˆ%gµÍtðÊŠ 4 Åýè7pWpÆ!æ1¢465•\á9š x{ÑÔÈ?‡9¨\< Ù\&’R²AQAÆÎÎþí·#“F) æl•{7j UÀpYOø¯}öÂúùZÖÁþzð³ Ó›/VÉ¡#¶¤~ƒ!/  سk²ÏšTÖÊ‹.¦¸&Éþ´ÿ{ªü­¿¿šab=ÁR¨×D&ò{Ïgs$,•ˆ¤$2°8¤¤÷`¥55=Ù/“Áfh-cò»DíDqϵc¿5Æ 455õœÎÛs2+ye³¦ö€fóNYÜ\„ãÑÄb´ÃôÎ@Tiÿqlo¡!O@QÀFtÎßžr#"!vG’B³kФüüœø©ÎŸ†î¿?ê/ÍÔ9IËÊ8éúèÍ5´|ùòEÞ%ò…nºÄê³ à ŸœoN\³°RfyȇŒ>-üã30 tòŸ›«ÆñG ŸããÄ€MŠŸíÎ../Ÿœ%<¸g.Ww¨Õ 4¼q``˜×žBÍŠý­’–MfaÃöÀÝ៨ýWU«VÓ:à߆XšïÎÔí<‡ÚQQ½~Þøâð7Ìÿâh 2>W§óÍ>Ѐ[@¼àaÐÈM^§U¨ßÜ à™N€1€À”˜4áõõõ½/~œ(7˜sÝߨ'¸Ÿ~×t…°319 ëÿñÃj¦8.5µˆü²]ìºäñ ¿Ö°B¿ë¶¿V‘dÖ¨4µ:Zà0Ôvš'[§öRê¼#µ} ‡Ê”ïjÜîXçÝ(zôg|êøÎUWBè~£8òTÑ*ÿÊuNdbÀ܉¬¢±©çd5x¹]×ÏD[™õ4)1¸¸z‚£];üÅt­‹YRÄkÊêI#óúê²z5tSBœßþüµóWží‹ÏcÅ|„ðÚ}.|…Î|ýš¥š÷®®.¼õÝ‘&­¹011óª«Õž~´ê×ô¬/޾ƒ¥{¦¹°¡Ák„-›(‚ÁÛöjÕKÿ‰™•Õg·špÁhþÒ’%x ¬±žhêñ‚’f2—™×=ø;eMö‹o¡ Û•““Óèð0û*IwñË||u55.˰amÖé!tüx=’-&lƒÑ ï6ì qrpDÖÓLÌÌ0E÷d~ýJÿâ¾lµíd¹„çFÖÇ”v)¼|N«‘¢é1à¿ËËËã6êÀg<~þ¤Íhpde#Ã,zóæÍþøûWBy>|xÒíxy¼±¿¨Ácaa¿¡:)þw»»¶M‡½O6··U$$‚¸l¦8XáÄKjkÝG.Dâ€ôÒ§ ûŽÍ9 æ:6/ELàúuÙÔÄ$·®N³¨¨ÈÒÆf”¯1³Éë,xÐfžÉ@^¢¿=㣮^uUQÑK@n‡{HèÖx îemþãS„•näÁgDò[Q Ã`þyí/ÀãÃBߨLW[,uåçç+½|µíÚ0ç{eÃÉŵùƒ{£fkg'Á„ŒŒLIW7•ÞÂÀ@äû÷ïøáêššy;Ó5À ë’QQ­þHv×uÓBeZšõU O:xRU5µ^Ûšiu•×ËñT `Ý Ï¥°‡Ç‡}Ïú¶NòëëµTUUñ{Ç7œ99]D—ÝWb¥T´µ ††”\\\¾ÿv|ù(›^WæµúôŽ×hå‘ÛåµÝGçK‘ä†Fõþ‘&]ƒGñ)V©ör&ÈÚ»ØN“†Òn•Gý‹ô[ô¢O?ûÝz$|üø„–ö9°.À³d™öx03°áÜkÍîÁ€¿8úšiÊÏ÷H‹Àe999óÀm镨ùìW~%È™¿£ÒE!«¨‹Œ‚Re7߬È-¦ó¤¸ï7Ú| Ûœ{†`5ƒ¥µ5†°~MY™bVV–ñª`ì2Š·6BªžÏÄLÖ¤ì6£ÆGª-gl8’4Zz¢ pKï˜)aøðL¿ÐÇ×w·7ž oPÚwÀ¢WZ ?ø‘&¬ÄøìÙx½ËÖ ;ð+à®ÔÊÔ 5hC:Òu\£&¹”ú¹çÜÅÎfœ¢ËËË‹_·8o(é¤|ÛÜ´œõÚkb|üøW¹iß1pFR©[Á˜äñÉÉæƒò¯)¼N·}|šÐÐÐŽ§¬J6NÆõ£ùVG‡Ðm꽎¬íÓwí>—ìÝð(ÅÇzy¾43‹% Nïî–Ôd"¼Ú®ÈÏËSÔÖN¶´²ª²Í·oøô‰lt||k1„ZÍÖ¶X­X‡ô闗⦦YÀéžWcÕ÷¹÷ûwE—“D›ÆU ŒŽŸ›££ÓÓÀ4IQº¯©Õâë㮹uÐ ”»Hçóçoªmgó‹´kòKKþ.±ÜØ…ææÏA!uÙ‹KáÕøsv4XÍ×ÚŸrº,Ð:Ûâ\í` ñ§õ®ÛL”>úfîYe@óuà åxRÿéæö¢Ð… m’Ü}á_£ütX6HãD u„ü$Ž®Å,¥ÞQ(êêRúݱȴ’­…<ÝÈvÞj\SÞ’ö5ˆPÓ±ðår7¬V¢Ìä tA˜"KÒr¼zJFãAѵ©ÂÎßIZñ¨C£þs?i$˜ø‚ù7µEîx ¿obvÿa|Íã1 8˜Qä[ú?‚o¢ñ’ñÑKõçõpº<¿?öàmUúom6Í  B·«_mäº;ÃE —&'™¢f=¨<ö–žÁ¬»‡ÖŠñü9ôIþvmqÖc)+9p:nÀOš[¨Ã _D¸ ÁüIƒÿ¹ fàM›·†ÿQèj‹ASƒùÂB¾6#òHþŸwHÞCÊ:zˆâ²kŸ6Puj±ß¨þØCy"†tkã&A‹ûç}þ,wö =~³é§nWœÎ¿rŽE“WL¿)ÆeGî=è䄵b†þû²4ý¥I+È•¥tÊïª,dœ&ŒRñ` ÈRïÚAÚJªÉ!LÍíÕP7B9cI˜2%Ò vþÃxE¿ ¶¶–Äüm^)@’90¹ä¾µ’*«ñn|¹©£-þE,Κñ‚Ù›¯ók‡{8fÅ`û#̃G\†²Š±Q\nW¾èè ÷7–Gjä €Ýì MW(|ÿçqÈ'÷÷K±¨rEhp¶TXÂÃÃWìyŒR‘Y˜yüfë½Ó¦~ß =°RL“{|ºsMÉÕÅ€l"$»úë#®“£c%PŠ­$Æ3‹B>3C™Ÿ_éÖ”g'&4}+.”xñɧFWý½ [mŒEðßëM2¼7~£½«—¶$ç óÙXqsG-kÎVÙ²Y5ïBí‡Þ'&e‰" T¤,å•›µwÇ™ò¦Ïd”Né†Ð­ñ¨ a4’ÿù°÷ƒ”*~=¥);ŸcKžÿ¾6Z©2o-‘ºkÖfvTµ›–tÀ–”øR’'n«QýFßsd~QÕ/D |å|PAkÊ,=4å)U¨Œ£a$øã@ÁK.1G˜Æ*œwÉ·åaî0íéûlCZãçX,¡BÌZ ƒ±ŠýK³Àòº˜„»Àÿû[˜­Þ¿¼t¸ÿûwÁ_ñËäÿóîÖ~Ìt† 1vÐ÷/$äÅ‹E ÞÂþŸ×ÿåËÚÂÈÜþµ³³¡½ÅÓ×Î6ÖÏœœ]Œ•M-lÍŸZ:ý{ ðââà€þfåædùó=ëßïÿ¼Ø¹¹a¬l\l쬜\l¬l0VNNÍÿ­òŸgù÷ßÿ7y¹:Òü·ý¦DÓF£/m: :&ºÿ.„Ü7äàåà2ãæâæåfaáf;ÇËcÈÍabdÊnhÊjÈ ~ÏÖÅÚšF—é_Ÿeeêñü0.6N^Vð)¬¦f,f†Flì&,œœ\Fÿû‡¹Z»˜þŸ>Ž•ÝˆÛÌÄÈ„…ÝÈŒ‹•ÃŒ›“——ÓÄÔÈØ˜ÅÈÌô߇¦Ëÿÿèÿÿ ÿÿú½£3³…­™³µ…“³>±¾¾…­±õS{[óÿßé?+7'¤ÿ¬œ¬¬ÀÀXØXØYØÿýÿÿÇ+LA^  |‰ùBZ\ C› Š ~biqÇþB6’•‡ÝAÿûÒ”óþ_µwî)Û³n:#Aw(ûÄöL"§stáÙoyÊ8žÈ9Ñl«çaVÉ=¹ù`a©–‘1¯ÔâSÁfþÁGö¥NÒ[:1 …î²3Ê«‰™ë‡9©S¼Ú¶« ÷}˜­Ïœ›®ûYóÙÏ™,¥?Í€ÿþôSÅøïÜ2˜ÿûßD BãØÿóohâßIÿó‹HFù`¢¨ Y“ØÍ (‘i›Ìn¯/…ýš3:hþ¼­éÏ$¸®ö“^ ï*9? <®•Ц‚ƒýs¥ è ÆÁ¾>tíjkEgðï€2ò!þ¹ÎÊëUŒßQ(¼¢cð¿ïHüÍ#^±ßQ†H|ʿ߈ªH#3€#z™êïïå·e|òPBBâü°ïÜÏå—Þ"-ýöÆøÛ€BJѳŸF7úЂD·§k°Ñ‰˜D h þÎà¥Yœ7fÚÚ†¯"Íý÷:ÌÐÍ •4]¬&‡c¥«ÖšÚ¼Í=ïP[Ëûßžß?>>ÆÁÊøÅ9ªUÈÊÊJÂn&1¼qðàÏ'|eøs—U«6,Ð Õ ‰(s:6ÂÄÄÄ çqß§ÑóøMå­ÖØÍÛþúŒOJ¦®ïC¸}w³Ï jâÑ3ýæÈ/_h £|âgz&òv¯_C]XÌ( 4), šÖ?‰æN«ýÏ >"ùÿmùòæ‡YG?†]Ó Ñî|Ë|ÞÕœÚÌå3ØÙÞ¼”‚ÎÇ»„Á5±W¯°ëëëÝñÿnË=h±c$¡rÝWÃÁÏ‚ ö_?/hÄ4: ²¯±œVc­mmpOŸ>Õ¨±¥,ÖoyWZÊMutuu-­ªêÚ-ÐÖÙÛ©™·ul*P/a[cÖ®Æ(àÁ–_P4\¢ÛDjÀ¿¢Qa†Y¬Û0f©³£;65EÞ mš×)«Nx¢îºy[Mè&UÕ³ÀÁÁý·sHŽÝ?:Ú9¸šþ—(Zi„cùãˆÆ‡¥¦RU¼/#+ «®®î߈ò³Ýòìêêêß333æ3êÁøãÇ-¢JÆúº»º Žœûûû"¯_?’““›jɤìœýu@AA¡ÕÔtyé*N‡AÆ‘«Ý£~Ö“üG=bÆ~âˆûø±ç:åý{YYÙÄääûÂÂi¼M_¾|éØJúô‰­…ûÞ·¤¤$κÙëëëã[Û¦÷éèö»ˆõnÎæ{z¨ýf²ÄŸk;¸GŒzÚ óñ‘577Ï 5× ÏýÓo<Rÿ¡oJÌÌ蘘˜@ÅÐÄM¨wäÏŸ +¿§—–â„`SÛ:4A߯®Ò±³ã{ívUZ ó Œ}…f·¬¬­›£¾:Û³slúôéÖ³' 2`› ™,\\’òòXG£¤@­|7nrÙ"z —ø3Ïáfï_šÆ92&ŽJÕx}Øw¾ž­ ¬`žæCôg´çæ¦eãÑ? GgoÂ\jêùO¨þšŠT_Ï'—ÊGAülw_CöãÓ?Ó‡vöàclhãôízã'rÛQAéÁVV[\Ï´ß´·‹Rð9£BÓ6¯ÆKô÷X‚«—lŸU¯®”ùžÍº=zöÌ|*œ/³Eð_ë$)Ƙ CH‰Hè<þ ]AG'Þñ«í|3¦ººº†–<ÌÑÉé`1„šMÛ^å0ª®¼»¨8ÚÍ X½ºº P¢ý÷ ‰?K 5ìRÁÈȨ ¤ôš¾ÔŽ%kóëÁ»$·´¢ ŒÁ‚2 Ucý’™à°Ümxqø»ÿ‚Ý|@ÅÀ¹("2²3ûeò”Àüàà«ÇËÈ*Gÿ¬êŠ…‚6>­xÖ‰ø+\Ôæå_/‚PʼnûoWñçîEC "}ÏZ¼ó§QQQ×Ó_«Èšïm ç@y¬@GY/·–åþ:ž€?‚ƒÙä¥ÊÐPÔ ÌjæÏÕ¨ÿë¼|Œ8¿ ?4Ý%],ÄÀÜüLåÀùÔ]×CçýGÿsÄ*jjÕ<Ì wG*Špõ °k¾@vpp€æ|ú^H­olÐÒÓ%ÎÜâir[¡\£¬ªŠ¶6ç]NEÏVï²Ì_Õþãz¢iØØðJš/¡y–>W§Ïip`0222û…V8(7*ZÆ8ñê§qwël.+3ë_;L óÿ·eýŸ¬½Ò°ÌþâÐJÐ8Ýž„Úl9yj0kUæJìÌ~ümxN´ºUŵ“³3LJ§ºS+¬PBœÿauö©ÑëWËËÀ˜,BY%À#GgÉ~¤cdDƒiùè㇉ŸúÝx­ºlLüÕš»ôÈR€Û%…Î_½N·ŸËȠɧðÀÁx\·I††‡!ý ¦¤Ëo^ì¶9ò*tö»9!†-lOVÈJ™˜ÐCg‚"\Ä ¼¼¤Pf)°šûW{-n|È0 ¤­P' ¨“ÕÕNMÿ†M×ÃÛe÷©†g´´´Ðœ%§†ƒƒ6‡{ î+**òxŸ³èyípB3`ûà1ØkîÛYm> €Ò}ÌRÂÞ?|eô+Cb¢É‹VyYËu J…ƒ.½–æ÷jPñ"û¯ŒÒIA¸Æb˜“à€Rp+:Mž„0û)NèòŸ8­ Ÿ¬zB""°ã“í3ðpÀ>Â`À­j4¸2oooCõª£êÐÃAiœ]\X=MTÔÕÙsÜôÿøŠOyû¼ÿñ§Ë£±À…c°Àž5ŸÓåççO5ê¨S½¯~ýúµ]¬ÁBëhÍ;*Á©¼-ÝFwܽÆ#¬Â¢"Vçu¨p»´¦fo¨ì°K߉üy ì͇#ÀdddÀMõ¥˜C À°°°Šæô||Åép‘1ÉEª«ò.vœ¹a€Ý!ÐÈ’qŒ)zëÖYëèPèùݸ@%ÀkÖÚ/1†ÇÁÁñ¯™ó,èÐh¸r¯rIéîÿñÆDT0zÄ_Ÿ–ʬ#-ÊÆÆ†CAùJèñââbGO¯øÂo šß>’«˜ZokLHX*-áèHQ@C$[ïMþÕÕUÝåÎ0R…)Z=,%EÉÄücF¡\IOtìÇ(ª0€Á—{ùî[øl{8ðìkp6Ñ223·¶ú®mmmçV\ÑÐÐø(~²=¾?®èÚd-.ŽìüHæî˜žN®}ÖøQÏ3o¸ÌõìÀr‹'ªê„ÄùÔ×u•Äñ÷ïßîw7g`BmNø]·[±…¯.ž€+·ývL¢™mpSTPðð×u³ÖqcCR£táÅÕ§à`d¹—(í##°ìldnê‘s§£ç,¬±©v††¨³O)£ÿ˜ÆcAþÅËkjb::ÊÄ&kḬ̈­¬ÄÓ=”:|VBÿö%³£}¡í’…kwr9$8ب#†P+K`‘‘a~œîÍGc’N¾L’ jGRc;ÛNnר–"äsé¼J¢¥¥Ç>Çøõ+©ƒïË{åJyPk–Õþ$ccã••–q»‚¡¬ê’Ï#£$ZVãO¡Âp`+Ÿkj’nnm%§Ìóì¢?ey‘eÃAÚe+¥E7y-ë­úÖ£|­~*[¨‹°êc>âGí{B-Dyyââ_ß–H88Òã=vò™¼{ˆ``“”¼,-g{Dubha(++FBºÑñí5ÌÚE™-älÀýÁìN˜˜t&fD5Ò`±h¹kFG1a0fæ—Úämmm§§HØ»ïaaeÛÛ³¼ÉÌ|ÌÄ„uráâs«ßZíuG‘+ª«‡ä)ç@3ža&ÓþXÔB‘ÐÔzëÌèëÆÕl¹¤·PsÚ†½f1ÞápDøàÜâânþ½F111¨Í°J©áé‚;]£×¾ÅÞ/­®¶=*'$$„:ÅA·_ÿ™þ ÆïæòDϯqåà$¾¸óç—­±EÎQïÝ{ŒÐíù2×ò0SïS4ËMîÝ¥ÝA}pƒ¥éEyûöm½‹ðñqåâúk4©ž±'韖¬’:£˜ò†×ÎÏuö/\1Ѝª›¼/~ŠÞÝð‰Þ–쎉çÇ`vrDfæÍ˜?¾ÚC‹L)Oeê  Xu+qº{‡G}I§™ÛÛJö<:à¿•ß ìNì‘‘È,v|”&ó¿í®'¬Ÿ¬oXÔx¥ ¡}©­%ôl#¶~JNô8~ºÆ®ct”ðÇ0î¼ÏCúOÓšCÓsr• ó_o±ps÷˜•ÅùúºüM׉Vn?2§EYy)IgŠ­)ƒìÊk+«“©›?LRÑT컣ÎSê®oýLãã²±ÉÄ|Ö ö5È柔§£Ã´°dôŽA¶»mr’âéÓU{gŽ ææwo÷žÏË75àwX–ˆJ¡Ã(¯â¬ñ5ågЛ7¼)©?ø]..= ß=¹$$tR+®£ƒu~Í·‰°e\ÿ¯QSNËO¥7Ã2=c®,LùßþÚÜçÀæJ‡‘‰K¿üý¦c‘޹hÝ/›$)‰!7/¶Š†”d½½« ~`À,‘s‹´¶¾××Õ¡Ì?Ýp{gçÝ·oÒPõ£›ëëzÂ*~(KªüÿÇðóׯ¶Z‡e¨§Ïêõ¿VWfrS»aÈhô'¨„æ°ü¨»š¼¢"ƒ’Rmè»몦^ 4ïKc:bhÓ»öÿÀLÏ›¬ƒûõǾö†O}B¥ÅHWˆ<>¦;Oÿ°O+&.-ö½2Z™¼ 3oRÛ¨ªÒýW͵µ‰CC ´¬gÎáõš€m]8H/°Ââš^:©fPQd`g—ÁVÍèøé!0¸Œ‰ù_6Z—ÇVÂ(­¬î“m>Ù§Âûu£ÍQ7BVŽ VØ Àý.Ø»K¿x,.€ÊôáÐó€ÕíÏ<Á_!!„…é²~\¨²ÕÕ£î¿y¥_=52‚Hõ‚kc1ðÇÒÑé_Ü´„SWG¯­ÓdiÁ¦ÈÕÒþX¯;<ÕºÜF‰‚B=oä¤zdØsX²FINnü) ÄIì•£*:ÕÕ™JË1䬽XO`5ºbhÇÙº Ô^Â%Û ¹¹Éz‹†Æ‘ÔRí5_é¼>¿ž2 ¨ö¨õäÄF”{s+fbóü°3ß{ ü77zÂ|)½6ºÐ—޾{AFññ*oúŠÄ_„YÿdN-.Î2»ˆ‘ŽŽPB"!·ˆ£®8iòýÿ‹»¿ŽËªkÃEÑGQP¤%¥$¥é”iéîéî. éîN Aº»»»ö˜ú}kµÖ>gï¿?ߟ/>ó™sŒ;®ûºÆs â.LL´L_üxø\Ü5u^çßøøx˜‘W×2 êáa­_è@ûíõ$å›\x˜þõ`¥™Ã騿V9-£I><ÒÇY†ÓSþ'ònÉ#ÃöÞâÂÌ÷œU™[9Ó–å±Ñµµ³ÿê~ã)Oå]U…ibÿ9˜ËqyQùYà{Ä:áFUÕgcc%U,{eø¿»jíéñ\Üð!ØPQå›e+¼•ú;€ jXú·Ÿ:Oeå.Ÿ>uùÕž!|™“—‡øã©½=µƒó´ölÝ&6Ï JJ ÃÇBLß5/~Æ·oâʹ¸ÐpýòöhÕŠK<~O@,ö‡ºúز—X—hTç±eBµ‚¸œ+iX‡EjYRá7Â+Þø@Ý‚wp#AªþBÄ@,&EAÄݘ#*»4˜á22†ø½°ð±5hiëô4ÁÜœh¬Ôê¸Ü³G¯IÉ1‰€ÙQ V^óð`½BÁâOÃöñq ÝÏß¹»;oÖ\ìO6þ;¶5aŠXùQ݉$cˆ yמ{ccD A¿MìîŸ?ñîèNGUSrJ¬hNNÌÜV÷Îü*ñì6¶ÛiŚȒ¿³›ïC ¸Û¢ÞȾzÂgcº|x2ä÷§5¿~Óz ¾Ö[ûÈÎÆ…#²³¨ýAŽ-ŽO@åŽçÒä•Êc”fQ²›ó›+?Aô5ŽdÑ¥‰ lÝ?DbKPÞoyQEùÜ_Å7ðú¼Ür_ý(,J°àœ ƒM­juÇÁb)R¢é£ríOâ<]ëéiïÁÁ©;8M1øc››;×Ô«²LJAš ‰ÝúƒÇùw[Ù7eÒ|ÓÓP¾ôÌ"g°úüüäTˆÛêýiX,ëGG kj_o¡]¹yý>ŒJ"áÈžÉWG&™<ÄǪ¦F•‘uöîÝb–1t8ø'‹;ju—¯BŠG3e‘gšÍC¦>™~ù"¢ý…òk©%\P0Ð;veFÿÝP…§ÙAê´]°¨‘üôÀÙGuZã]Æw#¾‘‘*µ,eì¬ff1T³,“±NÔþº¬Ê«ðÐXÖíK e¾ ÍÔÇ;Ÿ—Yž›±€p|¯ À ôÇPö)“K ¾šº‚»Ÿ³œœ-£Í—kl…?zÌ»7f›“°V#ÍÍ)—}~¥?@0ª[¨‚Äx<…O k{œ7t4?›çtY^CŽ0Õt¢â ZqãÚüáË©ÃÛsÖRëõÇ‚Âîåä<³ë C2³ŽJœí±ûSÝ¿2ê&•8Z¹¸ª;Æá¿¡+jKæÜ|‚º¾ê«¹Ì©ƒ\R§}>5x±}W¾iÊk X¥‘Ù,ZLšþ›2øë_ê¹ÇˆM#èœõ/¸ÉÈFû–Q¹D—@ôT±?ó­’ƒtP¤‚®@em–‘Áñ þý³ÑyòW• ³jê¿¢HR;Ÿëv²µ¶·ãÒÄlQèÈÊÕúö:Î$DùþüùðÉ£2Á¾í*lƶC+KF¥IVcÀÔÔšnкB„^´ÃÄôDÃfCļl®ë ! ±\a«2çõÕn7)5Ÿ 0üä—éþ¾‰pÛsŒãM9÷! %Н¡,ʌϷÇ6Â/8¬€ìö¸|ý²‘H\ó¦UÕoíèh™}~‰„~©$$D ð“Á, ïæv2Žk”ò.À^¼g(”9RÌ]Yá,äÌÆFÙÂê­î§Œ&3”J…ËKåò2òòþmmˆà’Œ’’o¢kÒMJò\¹UÃþ|­­}Àtžåø2¤²’‘†YÛ¬H.Â=~`E'>¢6O„Z¿€>x²–õq?DÜA8Ë^2I À’‚­6FÄ”õb£¾ÕÔ$uiÖèD­¬|ˆ„ýÝS»}'Î(î9ɨkieþqKËÖ–k4€«c*(œbóÎ!‹Çµá´;ßÈm ×p>':Ó˜èÍlœÒ^g;ì\‘Çñ†˜Xûâî:EôÌFÈ AµúîH|ïg]:·W8%ïvÊ—í_‡/-¶syùZ£á'ûÿúõN^‰•‹`:?/žmßUÞ&§‘¿é¡š†åq¦B2rY ¯­Æƒ"‰GŸ÷ôBzgvç,#ór…þeee¥–Î[À;?ÖeþÓÒ‚áÕ+h!vÔÜ| óªôô·hX±ž>ðÏáí ž¹¸êi¦¤ŒQÝÃg”•¡@ËÁwxèXêÍ£Z¥ï—t?ó2 °å>;MO§º¹\wMâxé b@‘NëCÂGƒ½ãUªD~ȾâuCHu=ãeãHо¿:8*ÛÔ=ù€'+]%j-øºÃûj‰n—#píbåøÍá^ý@ÛŸÍÒËHá"ß~þtÖ°8&G°ßË |Á*:&ÿVp×·Ñ[’f´…O67…q»i|û<ÊRT´fa[ù51‘lÂD¼¦îSËèè7ýé“tøÁe£Ä,ÿDÀQ³*©è‹D©£ÃaY¦=ƒ‡¢œÑ\ipÁ nÂb ±>}ôx1xºZîùóðEÄ/@çCJuÕ )>'-®|ÎÚø˜*fk ‡ŽqŒ÷Û¯ηý1Q"Åâ®)ª¦¦ÁÅ[~GVΘ_úLS²n×ëç˜10WWÓ†›#¦8Vs‰â~Öîß´í×û©‚òòðŠEH@ÑŸ8¤‹ÓÄ´Ìß?{ôÈA§+„Ûi:‘õÞ'_ Ãr{Lß»b°—$üà⦫g¯Ã™7s¿,næÁ©«+à ýQnd„k±¯Áb6UÉGFºò^\NÀwª ’häÄÁ±µB¾—0•QxŠFPÅ;‚·o?ÏËÉéY›âÿîÝ;-cc$VVqô-³ê1Úå…NdÚbŸÐ;(©óÍ"ÂZÂïSb•: L¦R½I¤7”•±ónLÈ¡°*‡ŒFáßþ³cuiŒVå-9 `=Ó‰Z7¬I!O1f´õô27>ÖKR¾ !ÉÀ†¨“·  ùÐC˜H¦Äë/™ŠJHŒ”ŸòÓïfK /Çj¦¥<˜‘ÌàÞ„ ÝìvêH*;†çïDwÏÂ]­éê'$&Î{,Ýîo Æ ØCB¹Âã"åü1ìuîï:â¸åCçì”@F-,n_¬%6kƒôØ“¶8PŽÎÑÚ¦o÷®,„·9 G°oÑ"<¢  ÉËûœXk¡SNïñsäõèy¦ì›€ÀüÖUů½«$¼Íˆ{{»¼Àäa/,Ú}(¬©‰PU15Ÿà`F@¢Û;³6÷ßeø¡ñûÕA¼q7¬™±Îjõy‘†¤ ¿Z^ÞÝ™€ˆiooÔ¶ T¦yoDQœ¥»[`зÆõÁAðZ+"ÎA¯6.z bbòm¶òòœ¼¼ÉÆ5uAŒ"RS“ôÅ3á4òÌÈ0,&lÎÉAÄcIê¬4öW.m#Luy‹ÁÁѨ´Éèzeòba¡U¯Ñê:__~\–jl„׋‡»Õ:5…mgç ¼ÈÄd|Kç–_@³9ýÒ!âÿýÐàfð»w~ü<ÜïD;O·»E¤è¼E½¹QcÔëA{ôÉ£¾þGzûN À.‡°ö òŽŸŸÓÓÓ1§¦>œTx„†–‹—¸}ÅfGƒÞ|ï† Øá//ÒñZpëHnŠëÙÓëZkË‹ƒv&†·C]s­ +vG—o¥ßbÒr•”œ/îÎrF³ûû?Žc1e•JRöïŽävZÅV궸©ÎïxPk„RØdîÕÄv¨­ùÆ>8DhÄLå^¢c¿"YƒÐY5îë«2OR E ¸6–tÌà©àExS‘d<•FgÃÿÝRZÍšV+®‡D0eÎSSåµES£Z^‘ f¦IÁ€Æýmz#°°¾žg•ZÇüÎ/,,,ÐùÜ Jñ½Ù^~ öwÌÌ [F­»ÜS2´cvöX¡]]ÅÍK‡œ€-±ä}yÜ¥5øº™ÇU@UV6•÷æ±¶6j©C)!ϵ‰]jƒŒrɸÅÖHž·ÔÇ?ïa-›ÃùΧlê¶÷n(P]W­ZØè4Hýý-;;8½}‹—nÆuäõ71±ÏÆ?Ÿ=£èÛÃÉËË— !)á‰TÉÌ´ŸŒ•õà©\hMLür«*ÇC²¶nw;O{ ÜÝ$Ô3DOFör©'Z¸ÆæÍíü¾ÝÝY²$ùùZÐ&¦PmüÔÛ–ŸãÓ&>'ÉêÒp}Ài45õÕÇ(u{'g8sIÉ#¨ á±Ê28ðõ%sâ>à „£+Áäò‹eMF‹ïtg;O;½žš¹Z©9 õvGR3Êî+VÌÔ„[Xhü”vüh±‹›cÞð8寱o…5.ÿ»@×ÃýÖ8ëSü ÅbŠŒ²²GEÅk}4ËOŸØZ8¼€­¨fÒ,ìÑá}ØÙ3"uÒBÇÉ$:Ñ¥ÒÙX ÈÚJ,{ã8åBÝØøTaš 3ð›B$,­8«Æbñ˜Xãg¿Óe¯>®ã Ï¡ftRPéìe—?åUjžV]9©9z⚈t®^eÒÀOMR¤.þðæ!_@qÓ§¯†Ã W'é#‰ªiN.·gãšš^|Dœû÷·ó¤•7î>ÏÎQ@}û†¨_ìÂÀèÛ.äÚˆÖYËrÏ’…Í1Ÿ•Uq¥:ú.ÅDzé]QSw/µ¯òMæUggghÛZ7Ò+©øŒøŸlvgŽònbBÞŸìüõx}¹eYáÛ襁¾xã1JPa)9~Ú:¸üüùyqo–;^^\#ãÏ¿„|±iÉ‘ ékÀfbrz>yi1»Oðèá¤Å<™x§ö’ ½·âcyÅ1Ýë3^ËeRýþWþôÍI¨ºËMÅ}›Jjõ1^ªÕ,ç“ Ä¥ÊÝïéÑÐqÚõíFêò'$Àß\è>:ÛoF„ƒãlÕ†FMÑt „õEª1‰ôÔ/øçÖ‡2 °²Ì`´R.ív}ÕÖÖVÁÝÔÀÛ÷††Ì‘áæ¸î/_*0Æ2¿Å…qÖ·–T³z$Ïje©‹¹%¤¥5=܇xdöûnœô²5žþ”Æ@&°ˆ6ïÀ@v@`‚㙄©Vë¶AýÕèdžŠž>’Íâ¦!œ¦&ÖÅGûø¸JášÚ ¹¿`€jµ,ÐH@ŒÂLMiûN‘Ö~ãA× ù"Àrò1´ÖûŸ±Y‘¾òð 9èÀ:~‘@3Õȉ$âEÂb'žZR˜ÑÒe€§Xçwºmp²Yšª*ƒo{€[ ˜L½ð;\¾Öw(û}±- u}ü­©Œt•ÈË·æcÈȧ +ŸûIM_½ú¼Ýü&­Xce”õhìo£H™™á¢Oö:ª«+FƼ¹“ƒtKV—»ÕÊ77Ö¤VVb€\‡B)П4èšbñE|o¬ˆÛãèè“ÉüâZ?~Ƈ(bvtttŸýfTa‰¾l*vÕÅVOµ K‚çÏ_]\——êõÒ áçÕmW׃ħVeÐ)"‰L,%¹JÌýŒ ÆJÅÌ Mœ`p}=£®¹9¿qóèÇåäØ^xÌ^Pæ×ç*¢Â)ÌrpA÷`$#%{¹j¶x>¿ŸÖ¤á÷FÎGëÎ…Bo|ü˜ôvÓB*ᣀ³®nùG 8WW|$<ý^RÎP{¹x;=4?‹ÍÆóóyQf|¿x¦ÔV€×ˆ*³)ëøùéZ›Ÿƒd®·GxÓ‘=ïîŽÁi¯ññ‹jxC¡Ñp_ÃÙ§ù*…ÓÌ HÇ ‡‰“”ʽ—|‰ÓöÇB{õ£ŠJhANÖ9Ev”è’©ìcãÖÉÉKã(²a‚Õ5ý÷¢xÌäh~a±‰æ‘‰ª> \—çV@p¥åä UÃÁÃ×…NgJ€,ê©gg‹kkõ˜Ê"€UÆÊ‡²ÈÉþÔÐviÞÙÕÔiKl6@Aþ´ø… 4tã‹Êkr,KKv4ÄZÊàW›ß_t“(Ä$ô´Ó7ÿ\É¥ŒŠ×j{dO£ò…II©3 Þ¾¼Ôlö)ЉKš÷N8€äÊÙˆÀpQWN†à[¿Àí]ûݼ¸5ú“_dpth̆¾©æëÍգǗ:ËX×·%f¸t.@$…Å(z­¬ðgfÅí×ÖêÁ€.ÃϪ[ë–ÀŸ˜–{)äNTÜ`Ø —WØ“86æÝ›o13Kk(ÉEìÅõDôÈh…oË]ûPCååGt¶ä¥î®H½+i8´ÔsbÂûö/Þ«ª>ƒ0¹§žêv²µwu‰¾É#´ÚÚÐ@RJ{šÀøâþÀ´‚Âà—ø˜ñŠ*Ô:ÑöæÅósׯŒAcÍÊõv¸HHòŦù¬ƒÉ€ëâUÚLÂB€,’’Âɪ¢6ý’%y?ä²ÌeHr?P¬GGM¨1Ë~™œ›óJaõBBúg¹.ÅBÐb<Ž(»WG`—6Ä 5‰©]p;ߨýKoÒxb}ü›}èèßÁ©- ßL€Ï_¿c±¥Ðô¸½Þ?'zA5€¸òBëw` © A·Qts멨 QÔ€Ž†Á ò U©Èå»M¨‚ýèâA;ê"›ÅUE¥ Ô= WÛt1%„SxàÛ¼¼­ðøËLn±‚¦ðÈCžåå즡¯aŸ  f jÚஂ€ñ±±oÁÁ–ùíÉI}†’lÄ™ó Q¦ˆ…aq°0_ã΋ÀÃÓ¯\IÎv>U¹ç í–¢yŽñ2ÚÄÐïÐÂøøcÝ®ž*Ê7uS|êÝJZ÷""¢ÌÛ9 ¾~ŠBØiƒp|4Ü:‘7©÷7‘AB(ËC?N¡¡ëÁE ãƒé”Y[)z$…3%G‚††§ystá< ÆA¨¼.¥šó{t  i™È›H<ÍU£‰k‰YSyu¥%a•t¼Ðl…AaA{èñÄýÆ’EMèÃÆW;Ê9Çu "ϯJWU£VÚÙ_ÑUT¼#¤Ðý\®C.aá|T‘™ƒj `É7¤€<=¡T#bk«›X$׆ˆ"4V ómï¸:Ð=ÝÊS-jÔj}ÿÅÈÄ»BÊÿïß=a_‡³•¨Ù"æ§ ùó‡šÍñ-b»ï´6@  ô‹6J¢±¹££m 1 ¯$ðñ«Õj.ÃáTß/ñ º#KºGS˜ö„E’ˆÏ]ƒ)ÓHNL ù€ ”ü{aã <{|Ûà D. 3:¿ˆ=€—“Ü:Žn7‡˜M·gæòJãºa >½„aak°§¸Œy4poží¾‹ŠQdRrqÕS`Ôíªûÿ§eõÈòèó ©”Ï›Ä‹ËZ"¶ TP+å×0+ûÆ5}µ/,T¡±„¢"Ì”|É#ÄèH %!ÒÕ¼µ–$[[}Ñ0Ïxw_âK‹Š.ê ¤ˆ³ÙÓ¡íîrÔÝ‹ÍÒ§8¨ûøoª§Ç(,Ií Š¯oÔ‹I´¥ÌL~€h0<*Á¯¾òÃx ̈ ^ðœ¤R†–•%û'È~Ö{IB-^Å¢vÇòå»rLA8™i_Üüæ>± ÂGÐ÷§€¥²[ê~ÿR^aT·ѽárís\"êÖàò;MCü—Ñ!==Nqñ8 ñ¯ #hŸ©‹ß±<Ôá‚Gi´DÇ›—‹;Úø±pY™ØÁœ3Ås¬XOTž8…ü‡Qn·ev2U*loÈÉ1¦«SLL0 /,‡jÊö°°é}h÷…KÕ앟üÕdž¤æ·´D+;‹éT`€à¨¬£ÅãÝçD®Á¹ï:(¾ pÁø”b 3y0¦Ãï' ’pSÝÿÝ;uæz·Û ¼#U55ohôÕ¸)¡ "u÷ôÔ6Ëñ1"pÜá´yéÅf¶ê¯â øâx瀠—‰§ÂaÏ•€ ¸|à„ËÎ|3¶€ï%GJn›"©ÞÔëQ%H!ªÞó’òí›K©vû3=ú/5%N‹‡T­‹áQò~Q/è""[-dT©¿úøÀ¿z%ÁðÙÙ©Ô';›™‹«`qIGêÞU4ß‹‡í•FàOÉžÓÎ…é°L‹­j£ñË㑈×:0>à´KOä{h»Å}j´ª4 Ô S9ö§O '¥E8}Š‹ÅSÍ^¿Õ)}TmžÍ¨ð–œŽÑ½‰“þLn’u”(‡ýÆH¿þ–žè5‡£IJÍ¡ùÎj3SÅ©à÷à«wwšDD-€çËØ°¹~ € ”——㨗ñ—ðKBiŸgù¡—1J3¤XüDhƒuæC´\÷–òOÉŒ©Þ y›0³9ÇÉÙ5ùÙT¶¿¿,æS^ ¹× ›XA,¨Ô©7!€eh8ê½`1qH›¸·²îEÉù%¢ÂˆÅ  Üà:ƒ­=‹‹™:ƒ,}<DsPË**>…ÆÎ)¤?xô®êþTùxÁÖGFñÀW_0äÀÊí+Ñá«büX+‹9ÊÏ€—w(Ùê€Ñêv…û…ÜeÎÿNÄwáW¸Å+6 dšrÅb”C¤*1Ÿ×÷€æô]nÅ¡ ¢d¸t3Í¿|ÑXÍBN( ++ÂÊLyçæÎB§Ó?¢ ø(ç«é¤PJ x>„¦©ÌØ^Ñ94ˆÁ$ fJ&%ó̾°1{E0­äZÔºhº#²š["Êf2sñ:(¡Âñ²³;ÔÁ°DUxnnS$B3 ¥$~‚l|íI…ãÁç%KðVámLŒO§=R }*$õPŠ… Õ^îÔ´¸<"¡ÑØñ-T5ÐÔdæ½½»Nœ¨=þ&Vù´{º„Åñ§qñ{ÉUð¶IlÀ—nBW›£‹Žõóñ¡ðOìôô_f!òÛJõ,BµzèàlZ¸UÇP{N‹3‘ä5ÿÿ)`#ÑØl±ÏÄfí¹ÜY«óó œÒƒW(Xý?—.EFFÞiu-B³ÖäR6J½Ò>Å’?}³ yc±t–«Ò¶žð>IJ~ÅU#1˜fÓ›§ ÓÙMM˜³z¼gнZÍ ªØ††ÌŠ]õû< þCã_j ƒº–™¦Ó—–­UMƒÎªt}М'Û~z¥àe^ÿ[ƒ†W)bŸ))nrQ‚òLJJÿà Ä‰kùCL‹¥uy¦Ô à¦ìÛófÖRÓiBˆû›™aÖXSÀ4ü3>I€›ÛÙÅõuŸç$;¹dï… ÷ûz_€&h‘OAë!„v´yë*è+Š*)ü¯ƒXÅM ¨$U뤹 3Ñ^¹<‰¥+TÊ­œ&#ÇÔšª˜es´"#—<úhÃ&&JùbˆmbÒôwÌÌcªnO»GòøÞ©Å½£Ð<¥•³`+;Ë’ü@(..Õö>¥tãc~Œv:öÑ%ËQžãCá†G)\÷+Ñ,GP~˽,Ù5¥ Dђ̹9ÑtËhAZ±wVyCC ’Hf”Hå‘$>Íyü …_N.[ªPÖ†RšŒrƒ¶p²9Š"X{xYyqÞ|ßy>?ï•›û`¬(Ùga¡ôdMê)ÐrC1EŠ“HøFU„1aMd/d>~|€’mù#ؤ*Â…²4- )©Â”&‘Ôâ‹5qchSæS p„CS\®°^F?ðà{$)‰ íƒE !¹¤N¾ä÷î² ‡©î‹ƒª2©zC‹Zk-œë>—çärw™ÊævƒˆŸÖx‘£Ñ¸Ùw©—GˆßKJÎ d(^`*jíÏõ²ÙR!ÒÑa*7ß9ö%±Ëj‡€BMz™ ÅáßÚY~–LsÙ?^s7>14‚ÒüßååË0±Z¥ï´ÍÍYYŸÕÔ«¶Ž¾23‹±°¯6±§&Î4þH@bo ȉ’ìGôôœ3‰™˜ànnŽñ*ˆ¥úüby¥›2‰ÍatôÔˆW<«vc©@Õü:QiÌ£á2¨ ¼€h›8š¾Uný‚˜¶ð‰¦»ëóõÞ–A©‰ö»ù‹ò/‘±È“z|Ú‰ÙkÂÊ6­~ ­µÐ×—×p á²üµh‡LS¹1:òö…#Lyîu‡¾êà'þ:¦[4PðÁÓ¡‰ëÝOèˆÏ¨µ´¾¤X~æiÔ&ž³Ø™H¡(ÖñâglkC·ñÿúµ,$¶…;u.üo×¼U]ш‰c!‘Ç1Š¡éŽŸYEÿbIJ7œÊ}A[ìO¶¹9–~ÛÖÎ."Fåÿ!ÈB‹Ç©3wTZ†€§¯«ÍaqQÛ;Cx¾¥Å#*NÆHŸj³K¥"7§J\ÐòóÔÿI0¤A‰ƒ¡à×…ˆFNEþ¹C~yµ›Ì9‘“ƒXܸj?ïŠéãsrÌa¯v°´@²?##-­ž½_4‚#6Û¼½_B#ï¡¡Ö¨¤^H¡1ÒRŠŠ>‘ ùÙî똓“ã É!|IF“8ÚÈž™*¡‡±a)CŸ†@–|ëÊtð›‘ÌTÄýC7sx¸LÐöx¤Å­ÓÛ×$Ã2J°DÓŽŠ7——µvOE?|`ÔïGêð{~ÆfµÂœÐS´ÛÍ•1’ÛÕ&&´T•*‡Éç¼™è|]k¶cÁêòb%2ø.uêV—+Ôûròös~þ¶ƒÛsˆ={gó[} ÿÜfÈV’yMÿˆD˜ƒ’côõ‹K@€š®¶èýÑnÏKÇÖkFüóçÏ׬,øBw¹U_±üò9lº›»ëlpý HÀn'×Q°|xÑçd>ɕȕ™uD-¦ý%ZJ9| =D‘P|gÖ ‰û;e=Œ,{ÄòFRòÔ)Yø ™¼<àᥥ*5€8÷ƾfŽîj`Kdùý ˆž}ÙQAd`o€än×»ø•ΑÙt¸JÝ^Þd|ššÇë× ÷wÍóý«hˆÐ+A­Jšê^©©Ôg;*OTUOó±#D2-ìæ ÷4êæMì8@>ªJjä`8½!_““—Y⽯iØ„ êB__ñ¦· (½‹‰æwöó³øOMÁ‹JkÀC¯¸HKãÝ_Ï×CWáý[þ‹m\å¹4È”ihãâq´ lƒ¡{dàNA؉¨p< ªî8ÐvÒ¿°àÜØ6ráŠû[Sh~ô«œm<;Ë?jÕF<önØ'çXNØÎެZíÑ¥".EµòIE ¶s{„^?Ť¹ÀT£#\ï/üqö€L^EÅ—÷>¨ÝýÞp§ÿ,ó[û7\Lø[)€hÑžÛí±r£SÞT“ =maçÁb*4ºD+òC6ûÛõ¹õHÝn6 ŠMM©º#” €ð Àñ§aÃÂÂj§æöçªÜïõ\.õ°?9?ýþãÇS88î$ÞfÌ¢"LD¿%{ŸgzÑZ7ø}û ½”+¾Ð@\Éz®ì‹ÚÕµNÌÃ;9”¾ rZrÌù¼³*g€—AnØÃa9¸û¶Œ*®âçú8 Ž`R”üÄç¬àÜÜ÷Ÿƒi,ÛA-A$ûhõÁ?:vœèõëÊnE2ŒH-ïîL$Y*„<í÷¸B÷›ê=¬×Ç´'¦ ü’N¢..Ô ªé ­ÎÐÿíO­(áMÚ l+¼ý5@o~é.ò­Ý·x9¿˜â¡^>ðù·yç™™¹®wÆ%¥tK+ˆÐý¡†1nxñB}{¸»U²‰]QñŽÝ?1É}wªÓ®-| ”A­ SJúbcfv¸_)ª üÆ5÷Û;;kBIH¹0µ{?{v MªcŠ'¨Åv }óî ‚Æj€y³A€¦Gjh”T>€\ZñΫºúvy £·‹WÕ.ÿ·2iD˨-‰ÿÓxÝõþZdiÜ®ö~ _x†³,ß>ÿr[+Jë,8 ™Ë¯ËiäD(Jðµ7`î‘A8LµÂÔpf³bÿT_\m?~‚r¶]:M6«¤ Ê{WJèæÇ'+û@ŽŒÉ Ã-ü ±#ŽÙ˜°¾Ãóy¼O¤ê@VŽrúgfòY”Ýüw-ÀC—ƒV¤‚O/ÿÐßi7þüÄ--.Žè ¨´â©xéWÖ~¿0™w#€&}žæŒ%qÕ"FR䟹*x……‰?AnD Ú[ÉÆ‘°tsYÉð÷Ïžž¿QNAðçϸ  øù‰<öm÷njbyôÐ2p öÅȈê1&íQûXaùuGóûLçó < Ó+¨Þxúú274î¢:UþüŽ‚_tnv“æŽ]ëÆAig†ˤJAs†6þSbiTŠÆ£Rå¶ŠîÔØ£•àŒŒÜôvò[@ò_dfↇÖü/K•´>£f©çVk¼C<˜±Ö„^vÔ,~•ÁKMßšÂ[b6{"}Ù“ÿ¹?¥ñœÍaßÅÓqŠÓú]N»¤®4ñ°vŸÉEÐã?CÑ“„¼nªU7¨@Õ¿³aœ™¹’îíˆgb„Ƽ$×<+Öj×}–6Y¯(óæJM&íkœ˜Kg{%ÕêKÝ–Éõ øDÐøÒÖö›”z °êjn·ÛÓB·YþÜ"ÀÁöïO»ó”('””½mó€g°+'–W·µ…{û6 Ôýè£&½‰mHpl¬i$KÝpv`ò¹ä÷{¥Ê É=”4“ý‚ñ4¿Û.dª®Ð:-¶“¹<)ua¨r1–7æw‚#3¨Ë­«{°ßìŽ>5õéb-ñGrSJÃOeNòçOŸ:þüV\,^]Mc3^eê$¶Zó1 ÍEi*Êœ–ÇûŠŠo ÔƒfF{ÿªÝ# ¹ž¥¤ôŒFm#°#°‹yò×°¦ZsJ™8 Ó´.AÐ44PÛx.õš…å¨ñX›þì; ÜßîO4r"F;z¬B£rOè^ p©í‘0ngÞ²2±é‚„ÁAmív‡ë]ƒk6ŽQEEEOÛm©…Åv `ÈæðàŠàkÑüQ šL %–»5Ü)ÝŠòó¤¸ódÊÅFSt+§ ãéÛ(Ÿò‰’ ²"B—Ð[ þþ— Æ}AP&%ÿޝœ³ß×_ÞoÆ F«¸±ÿ œJ!ÏÕͧ•ìªã5‘ù-#ã(_ß—>H¥Y;™]­²ð††J\.íõPyg‘£aUΦE¹¸Ñ©‹·ýG_tX÷Vï ´f†mœ'Õ!5Y= ;Ò^{ºJ©Ädò‚‡»ªN\œº 2¸£#-hcPÐÉs¬jäº:é;‹ìl¬Eh*Z{¨Iϯµð„F•… ©éö£{i‰J"¾ìÙË—’ëZ%ÊŸ,¬Þzƒ’Æ/€u>C’êvÅ Ñ&¤jFSSZeœÅÞñ¶¡¡O""ŒúR ÙÙVÍol|ÑT¢Î¶êaú¶úéééÅvq3fuJÜÖ›‡ØBB§”Typ¡JŘÞÞ•”tE¾Ê4×îaC_•i¼å/®>iê$p§#,ìïÏ/®BÓvêõtWö?n§Ç»¶‹Ûf’ò0EÆ+ÏnL¸º>Üu²ÑÌæÑ]"Ķ I;lî©Ü;7ôÓÑ›Ë7á"á‘r™™ü¤d/‰€õ†VÒ ºèƒRÙz°h×7J7÷ñ’'B-›Ë¡ËÅbàˆÑ¨4pK 4Ø>šïîÃGôM„Ô'&†¼Ê<Õsµ—â]­š›;¦›_I‰o5> Zžâî†â:†‚pKhrº•XgK¥1Þfä‚“…÷t˜t\^ ðkîÈÈÈÐyÐ2¾Ñ|ÿ‹Eß'@|h™›ÓëíÔ]l+e`Ä™h¥Ígõ p5À¹oòŸSBâd07’˜†6XK[û“ ¿-}}ÿÞ$fÌ–òa`í*Õ]áÍïžâ‰Œ´f°ÙHÀ4׆SQéú¨3á¢Í¿e¸=¯žƒûæ {+§ÀÑ~²Ä‹—ÑââpýýcGV|óMê‹««_÷fi_õèüô«ô uGâsá^Ü1ñ–Lœ3·a‘K¿Ù€gÇYY}M¤E,ôP©’·8ˆQ­þ íöê!>~@[¬%G†ûð°‹„ñËG{ïËë³ò™I$ÝΓ5Žч]„БÒ~‚£ÈèH££H††ÒŒ†²î4jðuvÌë”b6›²b‘þ80èíZdlž..{-›Îúïýe ër{ù"äšèÀÃLL%ѼJu›…44,“ Þ1ËU£óZ¯žÇ´ÀH,;Û”ü€ t|C¨Ì^úm¢æïKÏ´4”Gi?PÏղʠ&$àÞ‡ë?Ÿzˆ¦IÍã8]Íd±=FõK8DMÈÑñePðéÂî.Œ¾¸èþnŸè’±pUiÒé¢"}ÑîÖA<”àÛyø¦Î¡‡‹¾œaÉê#Y䨳õª‹¾„YiÒ©ýøoãÌ££^sÝp`ÒŸ¥™Yî®üIS¦ùDš"”]*X+  ç £œ´™£þÀÜñ¾AÖ¦æl8 Cž øäé…f44ètëÒÒ"cãn-ü ¿4ÌÚÙ•<œ6÷ÀfÝs ;6ˆìãuôž,~µ9ïÖ k¯Ô4SCéÔû—t¼Ífi7¾<~ÆÆß>2²0Ÿ‚š_‹œöÉ+%39oý)Ãè‰åíœh™þíå—/~Åo^¡mˆvºçËÃžÏ “¼^‚g1K zïù…†M¿;žÜËW³«‹ðpË+$Lf¯6£•5ÌÖárq„ã22ö54¼—kQ„ÈLfp5ÝÓ'÷BùÓžÈÈT‡§¤d5¾ú”^— =×àJICc|tܱnœž'öˆGCJj-§Hß(6é m¡ JüŤ$òƶñ2ðvKGGÂò/ŽŒŒÇ!Èm5–÷22ì‚éFQ1Šé²…]¯_{¡)ŒÔÛá,? ÈNX ¼p·>î¤X T9¸L88Ø@B íãQ纰03+%U±Þ‚ãr‰£fG(’¦,茤¸<8¾F‘ËjzIí¢ýEdØ%ÿ¡X¿ñ Ååíbi€@ ‡¾˜ûMíÍýü4%ÇÆñéo ‹_@]ð{ϤÍPU<ÆÎƒ¬ç¥ËI»ph¡‰eî÷d4êW1.žrèªUIóî¬áä)CJB””ðçà|ëVc“Gª®õ¥B.ÎðÁ'êê¦7WÆD33#æcy g-7þp5÷cFEÉeôIJâ¯Üà|B¼õs|üYS“†šï{_FVV@ÇéµW~ÅÂ`º]n}}7zÇoJ´hÒÓ÷tv§ü7G‰KÑ/Ó®?m9^U<Á 7i+4€ýЉ{ð³šEèÃ\”îgS tròçÅk¶”b’”>þyps °ìÚüÄÁñiá¸ò{Z«çGJ~ÁŸ§!ÈŠïÕk#*¥g߃â7„‘e¬d ê6ÑÎ$ÆÓ§ÆW'èÀ˜>H–2Ó?‘ˆî4ÂÔÕyPðc5Ê–Ù^ï5œDà£$=ãææùŠÕåSòzÆ'1%%ds8»Ú/ „0óöMÛµØnä»Ï甌RórÓùýT«ß~¦¢~p°£Â¨ß7á}yìþ³Ü€Ì*$ä—œg~ò·ogåL…çëÏYtt‡?5¤ˆü´8Ôy‹Iç"€"Sz}^–ªÐꩾ¢ØõC<ö£Œ qõ.õ·álB{ª¶)ã£ßšx?|˜*)ß~DM‡Ý2"OHN¾äþЃ Î¶ÜDn6ïèòæd¸ÍûÑC|åt%zñ“Ñ tñÒ–§[ÃÆ× ã‹=¼”À/üÒuywËøÙb¤ôUÆw¢—Y=? ÇÏnÜ”Ë2y›®¶ÞBVEDøî–ýŽÞ §.nZ<¥B´¶¶^Y[둯JOHLLì$(#óüC0®7´ÍÅì+6Ц¦¦£ÏtÎÙ jÑ2 ýÇë̳Ü_9®yæ×Aþþ€cµ¿@L¤É.4õ•J&ï©Q8Œ“àJ!!hôÑtcÿf0Ð6M@^¿° e2Q’ÖoÁôòåRÑ·óÙNIË‹n÷ûmŸïß±šb¾|ILMýŒ¾ù¦l¥viÉ*W÷óÄd¼HP¡íº¹MÅÂŽ Y5tŽ·¹9}u §ÐŸÆzj ÷Ùg>Ô1°ŒyóèœÔÛï·ÍΪ›¹›È¯×j{>®¨¬ÏË;ÝŸk¤'ýžŽ¿žÂíQª‹à10eÌo©6½}–âÿîñãÇ¿~…íbÑ*DÇÆRXO†…¡ “pq½ƒöc6â9Ùµ¤ºßù·û¢öRW®»Yà:zLQTJ }Ø•s^¤&zh mâÐ{{ªDBèþ`°¼R maëòƒ««O o—Úû$°z°HHThþéëï²³sÕöós@ƒ½wÅ 2^fªx™SYy¹ŠÍmöh ~¨BþëÉíââhcüÁÁANNÕ"[Ê·ŽûÍT•]Uß—ixŠòŽn‰öÏ,Þ“¯XgPQSO¦ ÆýøAfmi©ýüùsÛ1„–|ÎN§“־߿'•UTâW*]¯ÏJéÔë@LTY¯Ku;ýøñäõÛ㾞žUÕòï߉€Èê|…Ó×Óë•“K¤éÅÖ•’’2/RØ][]eôàkÁÖÝyÖ70 ½yžÑ”¥cš‡Û9Ù.¥CZz³³õ“"0¦*5&ý,×åZ†°r+êÒõÇYnÝ.9y8­†KX¡ú5çtùúÃëåÐéÎ`ßîHE²U—Ìe‰$¶pÉ$¶ÒÖã¨$C`Çã³RÃá¶•O¾yj.•˜dÈðø—ßW‚L^в—;±Øl|´»¿s‰Šúù!äÕäB¦ËÅÁ" OÊlmàéöxh¡r)ÿÑTJ¹²¨èSN‡"&FÆð‚jÀ.ζò‹Ë~þŒ‰‹û¥ázªPåriÕíTɬÀBFæ#ÖããëËDHH؉­ Oÿú|_éê6§8W91°««Ë÷ö¨—¾ ''Gëi€•¥Œ@ü<@›ž—;|µ™C'Ö_záѬ›êb%Rd›ÓÓ¡d,3ô]÷e ªXÿ¯ƒLttt4ttRe.Ûc…ð«¬æsQ4]e{³õâÎ'ÏuƒÃEä ¸)(²á§ 5L%£ eTTºYL§~ª©©MªVcëIÆ1x€¬“ø_èR¦ŠsÛ:¼ß6ðäºRD”;¦Q&3øREÎ ­~qu5-‚öd lt¶ï!iíù–ŽŽþ›½½}±ujyr²Ã=rp]ö£øøxäªé eÎßÑàA4\\\ÐéyÖëýiöûs”oÞ¼×Ó#“”ŒvâmkkkY>´Z¾êëš¡°²Ž&ÈȨ@Úþ~–‹½O])½i›óéštË÷ïv’~èåÕÕÂVVeŸÙÉÈ~¼Žé^öòz415%ƒ—øatl¬ªß.2"b«€ÂxòàÀÂå áâîz¿Ô|žGYU–žž¾°¼œqrÍh½&Á`)ýY­É¥v8Ëw`]ð˼“×_€íææÖ×Òò½Ÿ¨ ލþïœ{ó‘ªR¡w/åGæ5n/>§}Ñ%§„9E¡pÝ${-z6‰YX(s\ˆ»ººj2×àØ77—òôÑõõuŠóÒÇÓÛS?ÜŠÒȦ–¹åëxLç/ÊZ­yÿù#`ÒæEkU˜ÁM¿÷Ùq?¡;cEb˜c UÐy<7 «¶°K'ÄX5‚i÷ЕhÛ.!ãKw¼Ÿß“³…V¸n+~þ‡ÖVV4Ö‡ìæÈ “¨5Á ƒttò«® Ñ·ZAS¦yGMy=n vË+ªRb @se£Ún)Ä„‡·fI&vº¸ºª*¼ &X‘H47ÎËËkËNuCää䜘˜€Üz1ÞÛÓƒöâtÄøW­Å6ïˆqG.(¾·¶Ÿ={¶3׈×øþ{Aa!Þ̘¼‚‚wG V{ObQ’A&Uƃw·×‹ 0èâ©ÊüÂú‚ŠW¯úÂ#Ž¢¶¶ (¹¸¹Ó²³¡]³’¸Ña ++øfà‡††>ª«CGw÷òðx®u…Ø6ñtº]š÷ÖËl¶®µ­í!Èz!CCÃŒÃÕðSl¸%]ûµ>66¶…6ïgÈfÏ#Ï d*;W®NuåîKÊÖ<4½æ û02ìý Û/)éÕg}ý×ïÞ½hjjRóÕÉ+#̤SpÔTÐãQÿgϰºήµC6·¶™ÙYmmmËãõqvi“—ìÒcqÃqxÉäÀBBДgg>ÉÉøÐY’€1å^Éü^}fT$itÖhç2´•{«<¦æÙ–d=>0Vq‚ÕÊlÀ|ÉzKKKûeŒhLM©ƒÞèñ骕«]+Ü+‹]7ØD0®òôÓöJººe#uU6F0Ѳû UMŽ-g~éÆá7’«|Æo”q&ú">½r`­¿ô‡úúHS¿ÊÚíã©ÏìX…ŸYLu@uß+T•=ÿцìRãÈÎq( œjÝ»[•urrÂqü›Fò!( ²@#ˆaØd6O¾f*¨ÆåÛ##iii%‘r¶Ož=#±Ù7óÄR塪lHâ°E¬6Ÿ÷ÉÈ é %Ô4pj˜"àqyBO_Ì1àèäÔ#/,9Î ³°·ïU—6?ÀTt´ý÷ïÂÁñLWM¦7ä¡U33ç®yj? {Ï|çéòÿ»”xŒõÎÕ8ûPQùvê~ÅÊMYm™Á@Š·¯/‚Ž®®åÞ ûÉÞ,HÆ…Cð›A‹¯¼”EIXwœ×H£ngñݯ#9¼<*ºÔd¼°ý–"…9Óªº¸UúK·5×Gxžp›t_êÉéµ··¶".\ï7w5¹^k™š"ÃâØ­Éã.PðÿK(þãFI€&éIÖÕììÇ€‡ôHQcµŠ¸ÖŸì%ªa¾érò;žÃ–ê!\xT”@/Ÿ1Gnš‚ÑiEó†A û}žNO„Z5߇°‹ƒvÔRû}Ï$œœxbl5è))a°Gðð:S†~üvv,éÐPpüÖ”ÎÛësËë3ShGg¹l©Çßy /Ï|:‰)¬j¶u-§blZÈî³åäW[Ë>NŒF&oŽMìeñ£ÖÚ„ÏEÊðç™Zk„ãµß‘›õPÃGë“’>zÿþ}II ?ÿ·M]ÜÀÊ—ߪ4êE2ÖgN÷­6OôôôL@‰‚”`ˆ¥ìÖk%ˆÝÛ´ñ¡’3Šåjýß<=ãÁímmõûþü)™<ÅU5 ¡ foÇÖåOó;Ý»u7Yîä])» ys¬Ïd``•‘ÑxæVÉâúz’²‘ÐV o‚7··Ë“ÊžaÑýz·Ö—&à«\m6 uó"¢¨¥È=Ýe4Ï„^=F鋳r!Ç‘Û[ž‰¨š™5©·ìã £ÁÔò5_ŒžÊŸ8¦€üÜó¦Ü²<ÁÁN‰ðÁ»¡¯w²_ÿü“’ãÚãËu¦‚š‘^) "Æ~o¦»În·´@EKë»Äº¿d²æX3Ë—EEL8¢ÓÔw’SdzW‡¢ùÂSËkÛÖfµÈOf_¿~=ቀJÚûôéÓ¾înQ³Ó7W‡_‚ˆ‡–xÀ)1…çÔÍVÓîõ›í' 總1@ª»å˜Äù-ÌàÅK2ƒO0N׫wÛC?žúûkGGG›lýøýaq>3é.@ê±@:•GBI)¶¶¦¦ƒBjdRêvwÌ}gc㌚:Ÿ\zálwº«Îf³ ‰ýÉœÓαìi_°°z¾ç:@ûÝ®­¬ü„>Kb·¥Í¥rj—ƒ#ÀÊ[uuõ5p'”Wl 8™õ¸¹¹'ƒp˜H‹_¾|É~±»½:ý +÷Ãpmž-Mzå’¯***Œ€Ìt rC¦ZñåyyEÅgH÷¼~>ùàD!w·›pÊÀz}¢gd,úÍXQõΩÿ{žðC^¿ûªÕs|ü[JÁÇ "Ð^çW/%š7A'þ–h·Ã“’’.ì7ß@‚NA$ÁnnoŸ£¡}­¨x’Pçlg’6‚™ù%,,:ú±°pׇގŸ?‰xxT«Í =×?5ë êÝ‚”„NP‡ö/ß/ÖÍSˆ7ª^#—.ÙÝÝ í0¾6ª ãþzþ¸ø! íùó@gbç$GÄ(7:1/--¡a`x¯,ƒªm>V¤81¡üóçOhÿó‰:[ãòéôª.ZŽ.E^±Ø$•&v ‰…¥¥‡æææq‰‰Ð9Æ’’hlZw æýw-@[[¿5>¢Ìƒ“xR¯_[À­™¢‘Z_¾øA[±÷ÆÐnÌÔ29nyC¦$ã!ÁiRô÷DhZW'›’sís˜½±ô¾MM8Ð í§ pŸ…½†´Rn÷þ†‰Å| d5'§îp–$›Åìlo6Vµª¥£ãñl½}×T¥qâ,f%·³}>Z‹¶ m†D©•èf“ÏD³;ïÑñqxt´wI ÓG‹Úe9¬×Úk­Ï-—?pŒ§¡‘ §Šò‹¸Kš«8sôœØ-ÒƒLÈójssS+¨›‹™[·@Òr¨bkK8&WÉ8Ÿ÷tTGÒÞÊikKKF¨ãH¸ïD¶™õ˜™™û9÷ªçÝÌÌ褒9Fw`)#R¢¦¿+;³Åè}Z»Êٵ̯µÞ4Æ[½—R®@-]:!—¥Þ¦}ª²ÙúïæÛ/‡'Nb*³Û+*+…de#2ÕÜÜxŠ4›QBÇwFN˜«½>þ\ñF*Jñö×ÛS#ÓÓl7[ ‹0šq³¹,‰Ö›ËcËÃ%¡ÜêÀ:NË%ÁWÜN/ ³uZ=µÍÍç?#ý­z>TJÉžÑÉÏÿaqgòÑÍmõ‰&)´•£ãýíùa7E*ˆüó½Ùvè@wóæ[L¾a¹ágµð¬££ãb+¿8¡ ãÌ&ñ]!‡að‚ÖL³;!` R0ÚnÉç®}ÿñû¬ì-t´7주lqÌýþÅù×ù\£E˜y•ÚçŠ*ïî‚¡®®n¢Æ’„Ålfâ{Ah¨tò´¨Q"³±br ßÔtámÍYKáЖ¹Y|NhçÔÇßËþ,µ(0‰Dd(‘4ã)ÚŸ¦)j¿8\ÖþüydÅ.7]eÄ ËÉÉ :d–Z¶ÄçϤÐÎ7ýÝ›oFÏÓ‹GºÃ•ìŸit®&Yþ¨ €ZÍ—HI½>„H {¬èß¼i¯ªŠÜtNÿÃø×)”ÁðÎ?ëåº,ÍÜón¿o¹c=!>’ÓÐé %Ô/R¿¸\O­EñÍ •:iò³_>é£\^^Zâ?\œ€Î‰ï¡.~çÐÔj*ÙÙÙi[–³%%,œ=é15›.”¡¥«û-”÷®ö·Š¥³³óÆÆF…Üçž®¡!tp­Õ4+OÇ[¯oCh~ž oNûüc~?è´éjzý¾8ívK|’ß’½+Åî÷wûç5(ž”_•4…ŒŠû๠llm÷öæˆß?ï€f‹O·ç=‹÷ÉwæÝŸº0”ŒNçq ºŸ\î`Û$­z6>!ÞÚUÒì(7wÊIK0Œj‚QŒ{M$ò ŸÖCØÁ‘UKƒcûaÖs‡6[¶ÿqÉÔ÷¤på† É“-½Ðx&ûŒš¸Ny¢ÿ~ÌñÌÀZ‘[ešps#ërµ©ý7öÿ}<>Ága!Ÿ(ë |þœµÄTõÝøâÿ8Ñ„ªx0·Âÿ BñØ÷{<³Y«q5_Á'ÄFëÚ[­"ŸöŽV{ñeCßVKwb;pŒkç¥ †ÛÊ_“f2F%ËþŽgBò÷Wy‚t4ýûÁö˜í°'Ä‚´$ùÄÅŸ¹¹¹©ùòGEqe;)~™Àúô)9,õÞW­ª8{îµÌ*jÂ^½ë¼¯Sö.Öi9ÇÓ(i«¤ùÚuƒ‹<‰róļÞÈU‘°³#‡Òñ­ým¦ÚNGÇK嚊›Óqu/ŸÎ›K’Ù?iÆ ÛÛÞaa2V“<ĦÏq1¬×v:–»ðjQ¼Ñ^?fÀíX7Ö9ß‹/©ÂÔ:ZÙýÕO·ÂAú÷Ð LQÑîÖ8F<Ë['·kÚfþ80‡»†úú> ŠÀCG¡ý}Hðo.–M.@œ˜þê~³ôïûhñ7—ëøA8åÏÉɯüßÏ7…Xå2ú|û&¿Ù[ˆ®Ê Œ`ÊTIæÀYZh­ECÌgt»Ñÿ¬Ï³þŸ&|ðUn¼bË’ž÷¶\æ:Ü.>ÖÖÓ£çx†ØCôB±}d„¯èš†•Nx[ZÊØjÞü˜_IéÙr—ù‡OSrE¯ÿžF°pyŒ~q}ÿŸ³_{–ƒ×å8˜ðÂå7J.¬¯ïï¹™«à¯ÏúÚÚ^$µÍ̼ µÔJ²µ(e›àÒÞ¬DÃåÚRrýåÁÇq\Ž|¾£·;ñlìÜб:ð Ìãâ6–Ç5×3ÜÝ)..MÛÃI”þóýG¡]5–PQÿ–“ƒæàd·ùçÊ8‚iÄÚ:Œä£•OE\SK[[–îÕIëDޝæM—ø¯e˜Çµ¡½"‘Ÿz/ê­ Ì‡>Åh°((\å$yñß Ð' H>ì" ü“á‹Ü:tºAôbÈT rFx((‡gÓ‰ [FÁóî¨B XÔ|½(¤´uuÛl±Á5ß@ªg`:±ü`5v_gºêKÃíÙ}X‚ذ)´‰hæ­¼"béçnb—›Ã8öc…iÖg=xƵÀÞ2k‹ÿ=;©P4Æ dìÍ­fkwdkNºöÊ/ ÷9¥=ÿ½Ïï²2Dí6LAA5è@c`0Õ?,ñc&ýÝlÖnG.…Ô#Ýþ¤ñ#Ò97g ’S,ð1!‰á½Ïlë2à>:¹èÂæ®c'%FW ¡Èsê‡âY¬­vᘹԡõîÆš´èCð§Ðâfÿ²2±"’¿Ãô—‡]âÐü7ºÅ’ ƒšZA-J®G¶t u9è&‘|+Ÿ_Ñùù̯_+Ñ阞hä„ð)h-Õe­E ü{hTQ:¿ßÂBês\'ìrÔö½YÂÖ åØí’Ìž¾>X]¡ÿo“ìʤô^¢oûíÏÇÚú«>'¼Ûþó÷x§¯¼ý¾Õo»ðoN†M¼ñ4³š€›ÒÒZ=£_Jþ—i Ò†#ÈÛû9´@á×/oJº¢<󋃇¶Ôÿ܉è‡g[F¬m¿ÙWk‚µHÀhl¹ë°MøÔân[ÊÿzÝ÷øÌ®xj¢a’0–î‡ÖÁýáü=Àû÷oÆÓþžAÄ­jˆ$7m_h¥c³3!~õŠ8L"…«Û·°ðë6t #mÑ–ײö}Ãi  A÷Jc÷®¹F¬Ã9gz‹G¶Ï ÚGDDEótÿ ?b ŠÇ—¾TÞoÛaŸH™ŽÙML%kQT°h.ppAû¥P§át¬úâzÿó+6´ï64ED»="#kCH¥ ±õ—Ö3Lh÷ E­U1MÁs‚÷wùh/N0¸~­þçV­¹rçk‰xi ÀæäasMxƒvÔ%ÓÒbÍÖ©Xýå¿dºqÒ?B³µû÷ˆtš>¶Ûä‹[£§£ÅÐ #"­kPþž~°û]ß%Þp¸Áê³´ à£Ö9 vóg=¿|ŽŽ¨lö¥þ%Œ°n?š÷OP–~ºœž¶™7«·¯ýÎ>˜2Ö\fuÒð­ïâJY’Ê…œ»ÐSj±ø ‰#4šÚ•Ñzí#ðmdTT6Œ¯:•Æ¿w'¸åPæÃùl›åk H´†2M7æfч³Q;ë÷Ï<ÃÃ鯵¡=Ëá»»Ùãu)©-VDˆñkPrËÊZi™™=ÁÀp-€‚êçFyú‹wÌÌ fj„¯¸ë`ëî>Jš¶í[£]‹«•è©.VO¥kP¡ÎKú5< L=e`b”y-Ò[Z‘8ßSTó}Ù íj“¼7K[j4ê0SsøX±ÀO©(Sû§ŸùÂrù_Ô®ô<±Ÿ¶~‚]ÆŠÈæ‡êîÍÜ:¬ã›¿âáB‰ù æ;jYnÈ žg ¹¥"(Èf¸¥?éòÊ£–žìÖVÞ ÷{åJ*ô§OG¡³Õ‡Ž×ÉâÞ®:{y'·û ï/&šß´¬[á+Ö‹I¹‰ýõ‹éà—Ùi­í%ÚfØ€­ln:²9 ºÝžRU™vŠÓOŠÂcV•|LÖÜ„¼"d¿.EÎsõK0ݲë•Í"G¦’ššGR¿ÍöÏþ ñ¶ØäÅbé’K>w'^¬§Þ ÈË?Ñp«Åkº=£wp,ü™):mqaA#&N]‹ …¯¡pˆZÇ´¹9ÿz¿¾_À§Ì>®9$Ý ¬ALCú º©òí÷ûvç*RWõø8Z즹|"óª  ez]‚%>9äÄ·^ü‡oß¿G`ÐëÝõªÅ%âYáÇÌdf®|\ïO®D…ß/"c:Á¯gxtµýßz›_ô‡ËÕË¡±ÃÒ±Zúú_Ûµv&x€q$W÷<) j(¦¡ÁøðáÙÒX¡0(tpAøÓ¾Ûa+{s]vUßb0oç@gšþÝËÍߟ$·Gó=u;ï3 éÎE€†§ãù bZrdœlè‘ð·Äüq¡ýPZjÇíŒzrjk±3Á_S;i/ -zÅ oüÜõ·ˆÉà ï¬l+}^ó^Ì0¸Xåd³Û!ç¹X ÜØ:bt(ašsê…Ë>÷ñð@_„Âq³‹^{sˆ›cä±jµ”wi)Á8±m\½=ÓáÕöÞ¿x} (,™3Q{­/-ŽÝš`uWw¤%›ã[bËånP¤ð4 ø î?06~ðïæIù/–ÊBb5ïZ!º=i û=­u™£åxE”çè(`°œâ_å³®Ì$PUÅM_Û~-(4Û™ê>×z;/C£á‚¶·Wå°Ël™ž¥É+\7|$¦äÑ™bâxDJÈd°÷ÁÊ šå߬ζ63õÀ6\¨{{[–ϰÀý/ÓWˆ%þ·äÂÝË"ÏrUŒª?UZPBâu•7²««)îJë܆?pnËØ˜×v´éËõ^=ÓDí1Wz:fk[[N¿q,}6‘}Pð)Ts—(ÅÌfk#ýû“¡müg¤ E7hP­Í«Ú+šÍšœ [z¾ý‡ø@Èî¦ó;‘|ë¾›k ¿ü‹uÃðŠŠll–ã'Þ£Óãšïp)qH›ˆŽklCí «kÐjÝÕzkºÚ½²_¤oÈ×ú&»BY!ˆDI&Bm»k‚Ãä£ÕDLI_Ü6ïN±|²éÄöÜ—VUJàïR(Ølp<ám}ccá**7I„£-;K‰ÈÝ\ ¿;N…©£¤¥ùZ¬übþ[®YUSF:~'n>ArIþ[þržÔÉ’f⃮ÁÁÃñII=¿»¤xÌÈèÏæÂ†¹=.ü^)6T£qg°¹ÃŶõëƒÙ/ufPì­þISVkJ JpìÓn/°&K` ¥ÎR›iâB«§ÚÊfûô´ÇöÇ¿Ïøþ 6gjgÈ. ÚZÛý>Ù++Ún¢îô²íÁQ¯ÔÃÛkÎt€QÀ'mñb%Vzl0‚¯XöÇ\Ÿ °tRB)‹·Ç ¿ ŒgÆ'@ù_µ?Ûù=-̓LeñdS@G‹ŒWÀòÕ©ïÆäpHg "-ÏÝS+ë@h(YV³í9ÝÐ_Oò¢„á¢Å¡=KVÿJ­4d±*†«£;l±.Ÿ—SPÙóêÔÔò‡M2ç/_rιïLÍO–?MÞ dˆ¥ç¾(¿½³²> eÅuMúñ¸¾*q:åQ$CMWXFF¥|â¬ó¶|‚^aYP¾?–WVö™˜x-›--Í­±$Áÿñ#šeLà?k‹y\ëZÚ3˜8lÓ59 ›i¨¨ù ©xîìðû Žþ޹?f|‚(;ïa!.Fµ°×ô"‘µ9èªZß°ítì7Ïû|¤4Jª­= o%0í5þ옠ß÷,cí~Ï÷°Ûða€.Ï5J¨5^Á”ŠyZÒJ•«éaZææˆ¨¨¤Sû7fë™@>Ö ¥BüI¥ù.TƒéÓ'\ ò «©r2ptXæå :\êQ€ªž)ŠAî°sT|U&µ73óOÎ}íeT(d B;9ó-7eߣìôƒ2ò.p`üçDi ›Ëb^îÜ”¼‚B°ýÜáÑ[~¿w¡½•Up f¶þKéýå¢Z=dym¿´œª5ò ÐpB˜–‘Ñ×îÝ?åÙ´N'h&Àú†bæ œÃÕÛu,€òxO®áÀðnÄ£¸ËÅ•›Q‹÷«F@DâÏ=­µ>%h¸ >ˆpßNÔõ÷OA,8{ ™L%½rÒ€¨Ÿ©=Æ>< µÜO¹˜¿½–þ(C ½`8Õâž™/·Éš>œõÄtâ}¶W˜ÝKtôoÁx#}¦€ƒ…v ;:"öô,ÉÈ„£|¿|àñRÔ‚Ådâö©0ÅÂíysW0ž& Q5í[d™• 常b€–­é?viÂä¹Ð"R,Äùìv•³ŽDl$BôôYÆ/Í&ùµ™eå¬-öçtg¯±Ï÷ô^ÓìpA…]]MAl 0YMÍè®ú 6'ÛTÄ™ oß¾eÐjyyyYà|êùMëË÷™Çr<­¢ÇàðÁ4ÛÎX++žXÚ ‹Ú½žÎM4^ó'«&æåyþ¼Äð–_Ä:º†6ðS&Ò"÷¶«®¤ITt¢à/‡oÍ÷Rô׬a_‹èûû¡æäçW’z ×–ãÌ=1TDˆÑrI°¨Hlã`±_c=žéÐÖ Ÿ\çâÊiÑ—°Ô±l쑆†:[€WèøEI²žÕöJÎö…Ç.22ìCC)Ðé wˆñ“°²bv¢e`@§þ\î\Òü&cŽ Sl0lc5›zA«IåQÿšFÀíÏÇõñà§ÿí†-ÿ $è¡…:Ÿ3¯÷mf“·¹4ee=¢¢^efñ‰õÈef­-œí"­Ã§æ@% ª;ǧ–îÍŽækåQääàèì cÇ emlžœV<%2Sƒâ R!Èø¢Ÿ˜7ïvÛŠx…9AC7†Jðð²‘,_ˆ–|Q·NªüC¤ZBðר?…AïâUVò -w¶¦É%ϱÖÕ݄̑A#2ƒƒ‡@È<žš²¹’ˆ qÏbrûÓXO63cÂâ‡&KxkKìeƒíÁGØè¼Í*2#¯Äôù3W; +¿Û}k™¥B¯ªÅF¥f@T·ö9ÍB­wWPx­ÖçõC¼ "…¯¥~)“?ss»H‹öú1d§¤á? iâX–éB SÜfCÚ¤æ::èáñ—¯øÓ¶”LMi'&üœgAv·÷ˆ}¤ð×50@¤¥ ™aæ÷û¶pè d‰+àäÄ¡X ì1[o_í-ÐÞ¢$'NFípkkðTŒ’çï ´±@ÝÂÝ­ÉɆö×zû}+|ZZmmíV€1”HСx/4t¹Í`‡Åñ88a ññ—¿€6ýÙ ž„g÷HxBnIÙ[ŸÆFœ]ImÐ"@'¦Z:;)*v2·µ1KâEÉðÿ°@z†ö¿-^nóǰ<8ÙyÈÉ)÷·å$$pÀ‹ïB,—g+óßÖòŽ¿¡¡y –ý{¨XðÀ¸WFÆãWø?î- ‚ˆ)²Ñ@ûúï³¥f…ôõy@é ]­¬ìÐSV}¦elüÐØX´ùî:‰qgGØ@‚Û≠†££ãÛXä§OßÛØ¼kko×65 Öë!&"‚ ‡<†Ý\®§&IÜ#Uì»Yàk cøç®§Ú3ØïC»qjIeGgg `ýR8½(qëꈼrÞ„"PS?hh¬×™a“líU¾’tË\#“åÕ …ˆÈú›7š$äkL@DnI¶]ï£ò ¤ØQÒþÜ¢N@ÁèÌÔHœÝ=T¯§óÉ^k¸\ƒw¹ÐÆÆ¤çñ³ÝN/1‚iÔêÉ÷JåTÞ¬8?•y£   ÜàÀ½6¸µðë×/¹Ö#®W¼n¯öööJJJZn.e44è]ïïn-,,¾z{?¶Û"sl*(@‚V'TUù#CóGGVlìì à†ÇÄŒ}Vù´E‰/ìî"srrh6 þ=˜›OZZ:÷¿«˜ B}™ ú[Z[ß—íW.Ë‘ÆÒý ¢/Ææáiü'í¡±´Êììì`€ƒ…ªËÍ_üÃ"åþ¾ ¶"ú ¬üYX´Âפ¤×™Ù¼í•ƨà3¯õñ­tTqq]åO¸÷ÎÓQÄ…’r#ôýÖ24„Þå²Ùú,ÒhùİsªÒø9^`\6ôÙÝÍ%rÉLÍóæÛ3<*jjhY«Ë騒r­ŒˆœþððZ÷ðáCÝN$XËÖhþs,,_ðuXKJy‰þoÜ̬¬o]ËÄÔÔâe·=n‡XЛZºÇ:ðQຆ£jØ×å®P݉R±f¡w˜Ær¶#¯|¡ãou;ƒ<ÂÃe’/^tï7wµÎÎbJIÙ\?†TÑ"#®B`Œ’z?ФS1‰©óaµµG™à/¡_ýt‚R!švvÄ@©‘é.ŽqÊ—-µ$ìíýtôþ‚¤[—‰ ..ncüòG2šÞÊú:ŒÍf#LbU]]0òæt%zKTŸš6ø_«‡5ŽÇä\\?gÏŠ5º#)HÞ¼y äZ(÷·ÆFî¼üü´ÜÜ7*ŪÕfOPQ‹ËgŸb‹Œå»æÈOâ‚HƒVU™LBGgØïÏ9œÏÚ—êv¡Ä%$PºŒËüîÀÀ¢p,d†Ã¯®¸­ø`Ë H«fËüýK/¯ UnÁÊdngL˜ˆ–ª‘é9µ…¹)¯„ùý–¾Cá1RQY jÕð÷ðÕUJJJ!»*6íÈTÍ€¤$þÏz/Ó¿ÑÝ=Yã sÃÆZýZÆ6ùÔÖ¦B ð‡'÷É?zjú­Á/ºë툋5BÜ󆛀h, ˆeVÊ奥׎;{{!AAHÝeК±Ô.ìÏÿ] À'aF_Ù××÷wɸxO h÷ñÚoÐWhý–²ªjFfæ£èèh@í¶nŸ<{ÖB£o¾yK§Ù4ó¹à÷èâÚ93‹ÐÑù|÷¯ª–Ë€"€µv@Üó³¥ç÷úÁ¿é÷**øC¯Ö‰ìÄ_̯“ý rs{“ÂKßz¼þ¢@þÞ\«zz…ÄÄÀKHvp›kÜÐßèèìëzºßr£rs›:âç¿£ÒÒ"šÙÙÝ OJ¢Ù4 ˆú.¡£“ž‰%ÌÏÿÐÄÔ”¬˜ylºï_þèñãÅìT·¶0bÒmA!¡Ö®.áÍsݵ¾ø8v묾R,ÔÔXÜÄ×ìV+TW'›ßöfs»àd 7ý³D¦)Õÿö- –Zü”šz½rô¤¿{€ÙEDì K¥¿ÓœÑ͆ ¤D1Ÿ‚ú©bœø…"ëDLE G]ËÆÆQ§µw§ ññÄ.¿Ï8H=ÔjÂüÎç¦Cîn“ÖÇQ¡”ÒRúq&Û-ùGðð¯ihž #›~ÌZ;ÍË£Œºß|ïV>Ìåø“Fù+¨Z0¾?&Ÿ"""¡=I éÅyòíÛ7-mm/¯GÝWÏŸ?W.×ÚÖåVÇ ¬¬uØÊÇO}MIÿÓ£ú`3[²§B©v)hCNÝC{91ÇΜ—¯âIÀ~yùƒ’ŠJØÒ’#eer•þî7?CeÔÔ<¾}{ûâetZݧ+z#èœw#ÞáátAA6Z_ržéêrcãm‹Ætû÷>}äÑÀ;;þŒ}óð`AB²1„é=ŽH¥w(V툦νX‰€DÄ™€^û3h˜: õ¾¾®»Ðâ±1’‹ÑtweœÄëÞ$¿9œÝÞÕ…ÐÑÑMò€"ÇZ? êÞb¤4O+Pú`‘ä’ëA@jÌ4¹â…„„Çüîî~´\ Ê72ñ˜‘É»™ Òê×oŽÝÞ‰;ê–²¼”v=]–{ Ò<îuÚ¯á~ þ)øGÐXáˆÅjj!é鈢è¼Í/ÈÈ–VÛÚ¬¢¢ü4éih´µU<„„V%Çö<PߨlÜHË(,|Ìݘ Bú®¥õ0%`¢»éD_zÑ«MÃö?±88>E”¹4ÁŸœÚæÄJ?{Åi‡ñàó6W׺1?ižOQæœK9kgðñOãâÓœHyãͯEááá_==á`€)]cs;U¬TémS]?°ÀËo@x”òvÕù‹±±ö@JèJ™k:Ï'¢ƒÉrƒç¯^0±ÙzŒÇjösc0cqeÅ je•š⠶ò)+cß7ß/¶z"XXZ¶öDS/no?ëÄîOá CûÙÕÕÞÙ Ÿ¯TܹÒùÀ·>[:µóds¸Ô`€ ‰Íòáõù¾¯¿ÿShMSõ¼[ýàKhW{“ëu‰ÉäÛ¨˜˜%ê1}¸Ô¸hqa>üK)r£¤ÌhÚQLF†˜_E…, °WFƒNÐÐð1d{bÀÊØ{z¨dTÞº¹áPQåA¯ŽB.ˆV f­V–­ªQV«jPókk{¿…u>5èSUEˆyZZÚuØW>¢&Ó®_"X€þ‡¹Ïcc{¹p̬­õ™ ”¢¶£kB•‹@ë åÞ¥\9 ìàòÓŸqwƪPÿîÀéo/¸UHwoõYʆ†¨€6øN2® Ô*иm¥óó¹§j5 Ó û“9e¼A0_\]U1ß dS]§õz€†é·ß”ØcK)ˆ|y}­;Y¦ÄW¨cŒÎg&Ÿ?†ÖäpH¿Ý½©2†Ž7™,{œ’’Rc½ŽòŽl:þ­âœË±$$Py:7"ëÆYè°9ƒÎU×ÑÕ}އŒŒÜ—ÊÛ<‰­«£ƒFH Ê; Ñ÷è(Z¿YŸ^JK­i}:?àLb/^D¥•Éz AÇÚñ‘æ}øŸïËæ‰‘Š^É+ø”•}ÚGÚ*§¬ ß (ÿïQ+ü üGGó?ðS|°´J¶ú¨nÓ] ‡ý㇖m°““Š´ÂÂSsö`ŽÕ“SÍEUIóŒ+HÊi}§fö™ò'ÕØï?…À6›ËÆH@½èœkÄ*±^wdc³y¨õˆ³~©Ó®Òcµ7Vwo¦D¥GQÝœÓ6-f“Ú‘ß׾饈¼„ïj¥U?¥yÕ}üýy>;ùoôÃ]:t@óD{ò(ŽÇµ.3VÙ5‘Å´mo¶:öµ²’Ùng‚X…Çz ‰Ã~ÉÕÕðÇÅËãuÛ±ûµDó?ùJôÐI×ÍwWùŸ×*¡es¼÷&o;Ac45 ÷›®éÈ%FÆÔɽ¾þ}‰i$*$$fÅ.'„\jƒXS^³Höà«ÈÏj7KUE ŸÃk’>ÊÕ%¤ålµeŸEÐoÑÄN Ý^£¯¬øáriÖ§Lyñ?¡¿Å¥ôéÓ‚PÑÝ÷÷F-@Ï-iMìWâàâêNÜÌ.¾ºƒLa•¯V':ú£r0¡{ƒ×9xÉ/è¯Í³¥’Û:ƒñ76üÀÁk­öDo g/N£òxÅÆ*%¯sqkJ\k¨©ý=êúñãÇ„=Oá/¥¤¥Ív]­:‡þ|?œbH‚ißM-æjvËpì߃ƒí8Þ{áwcÖðh÷èiÄMó¤Sé Y9Œys6¦¸·á¶}ÑÐ×ùÅMm?Äc?ׄœá. ÅwVn~i¾'ðÍ–„¦þ2GGFzîNWën²Y­<¹¹½µ\ïO†_}…o¹ÜÌ!7×ÕÑ!J ÿö1‹IK£îGõz»Q•f}ggçkŽá¹ñ ÷Ñ’±’ü"õiòÐø”ã×.c‡´åÃï?Ȩ³…Qñ ”·Ç›[— GHK{@d‹kbØts$®Vkõ£Ã?~lÌÀÌl.Ëid2…ëàj{ocf2WÂÕÿ—ÕÚD)nÿÇbmÑÚ†®/††i@µP+À`/^¾dÎ1ßÉ}‚„$(+‹.+'‡ç2àåí]yN‡ÎŸù—O•®ôo0êðǸ^Ü­æÖ66n³U¶:UÒì–ßÁjaetIô«°04kÚ4ùçOµ¦¤€TwÅߥ6~V{õûh/^x}ý «©­ÕÞŸÃ*_M±ã‚ñuø“ÖÖViißúzNh¡]÷ÉéÈœž’Á!…¾bG¥SÏ“Óüò…òèø˜ÑbÏfk䩦û-s*/½£ëX `Uú];\ÄFA×gJbëæÜUc¹ûÍSxq©cÀr­"Žóœ9Z²f[vìÀñ²ÑÑ—˜˜˜ά0øÉŠªªÀ°ïÿ7¢n­k>W}T°ÅÍͧÜÜÜ5uuK üÀˆDª¨ª’ÐÒšîÎ7¢  ½øÅ¢Þ³nª’^½>A÷éF}€<øûûSÒÓwA/€ÀÝ!~ $\høÓþõ\fLn¼F•>fTçg}}–¸:,£ÿõ—PÐÌ]TIïk~mmè¼ ¿ÉrMï"³á}|â¼Î?Ðývsã)++CÃÄ„÷àk±UöÊÁ¿2–€zûÚ3žÉà#|'6Ð74•Aþ(ªªÓÝQ™™¤SS=òÂÁ ›vLÿãÅ“Þ&¦ï¹ÆÓœð0Û-¢¨rý]ˆl×J.to¾¿—‘—‡qê΂ðޝQ–èW;*¿PFTOÃàŠªÜÚ³¡üÈŽ¶ŠS-â’ŸÝî'Ç}‰ñ±<ýwÔª_â—ãXt¿8)Q3I&àdy½{†Ó!+(þ‘`€ýú\x¸–hÀ‰-nüSmÿä|ãùz¯­têÙÝžãñZnM2àÃbÒÒãA8L¶A!ˆUÁG€ý—é‡Á`€.熓±ËiW€ŽŽ^ñ¹;B 9ZIc°L¯÷^>³ñXÅEÍ,aêØ;@Jª×öEÇ ¯ûS‹Ç3BïF¶(a_5úÆ·Àí`sy‡$Ÿ§v¼§FWZ­ŠªÕ¥./Û©–g)††Ÿ7 éé+Ý|¼¿*®Þ ¾úÛ¢À¿-ú®ô©tIÇçAÿ®¢ð{T%•néà‘ÑÑ\óù&Å.XÝËpÝ …TÒèTå¤Ó’¿»v!ŽM.(yyzzzŠÂ›Š¯IH C`6ÔQLàâ Ûúù´÷žð­î:¶/N,Xgm"GŸÃü»°à»“ìÓ£^ÔiÂ&8XA×pøì1[rûMhÝÙÔ}¶?Fq9 Qc>lüåƒì>Úäê>~gÿ¬â!¬¹(é ÆWl±%â¨ï«?Ð$4®†¡mû S£4€îH}3î®—«ÙÜÔ󫦘ö®ÕTkAgI”4o¾µ+n¬ü©¿Mß~={7+´KøÂ&ÔÈQ^ÕyâwwCW…á0—ÝþãõÖ§j³˜‡p×vÚT0ǃäpÇ#Ð_W1qñèÄDc[¤^“y7yлä»Ûy ŽFsÏ—#ko,2q§ýô*ÝÎ  ‰úe*jcÛõäã•_"zúý;WZ0˜ ºäñŸ?Úlð8ç5ßèe,-]öD½Ižc¥Þ~†Ó¹ÎáXöÁâËÎD È„5Ê‘°‚Ò¸ñåQ·¢ðØw¡v8L˰JdÜw ég³õça.®®+ÛÛJš³»kŸ¹{CðÎgéO–‡_ Ío±Á`~[RH+R½;Yê‰çvFù³6»7’ÂíMEű¹fÃÝ>ïöé–ÙP;ê½ ýœcå¨% öåå* öõ±Tr^]µ˜8µÍÒO•qgÀÎôô÷l *ÒŠú‹¢¢lüž ÉIÏCž™„Z¹ mW/gПԜcEÎyfRu8þgáO–dêfý~=Sú¸ó’?onE¿ñX_T³;aþ2ð'ùß Båt­Cñ=N73žª?ÿX>$•ívÝ\Gò)ôàl:Õh¹Sútz^JIB¢äo;±þ¶Ó7™Kåh²Æ÷±ÍwÑÉꔾí“+Öõ³¹ãš÷ÊÈÈ(Õz'Š©nŸÒ;çeœ®ðqyÝ2¡/o ý{æõ^½‘èÐjìùöˆÃÀ‰ªìkŽçsMâýk¿Cð93&ËçÿàÛÿÜ.írû„A-Ûò7’ô1¼mT£ó³Õíé£qÖá( 7Çq2ƒcÅèhf§‹E oïÛHÅ">ŸÑpðX†ÍÏÍUJåi’Ä<Ûõ 奋j×®ªùýNòå —ü¤¤ö=¿ …­íÝvëàþ”ÂÁ:Ûòh-[`°}þV=M¦CÃÅ}uµSޝ߻D:iÂÒxµµ'¼®$%w¼fúÇ®«ÒíÖ™€ëÏ–ˆEÜæ±euØï~­š»µµCkV>é2’ZL*Wo‡?²9¼>VvÍ$)'ÍuHázÐêÖx¹FÓÑ嫊ÿö5pÉØ´þë\VVÖ±RTT’UãÙùùp‹Çƒ¼b{JÒÌÔÁ²?~/ªIO}ýúÛ‹/6ö~͆&8måÚŸúò®|9ÝòŽcû 5HíÝmaÖܬ™}ϲûaÖ²k—íÏ=¡R·HóEG`Ýåš¶ÓQ÷SõçåÓo%åÄcõ gëx·Wc Â'a°báá-`®–»¾¸ÀÆ}—ã9òãs5ç Îoj®ã>ЊOµV>äR ýPn¨½ƒ0æ „p,is&š‰ÃÓMIîÑ2½éÓ)ãúJ$22usÈÝ3ßþ¹8dkú|¨ä{²+éÊ×±ãqýülñõ^FÜØÉ«™±GP®VøÏʰ$†îœ¥hö³½’¢U¿*+¾T,tâ;Ÿë-”€}Mñþw[¤êW]úÇáíƒå½ñuõ²rãÆãEÅ ¨Û{õÂ*Àð°êŒ¿íe $l§­&9=±ZÛ™4úT«ˆ€ê–ŒwÜ¥s¢ùgO&$©lg3ã­ÜÕ¾îHfÝÎm׫†*ÑQ%ᅫ¤kÿ¢ F°Öo•EQÄ.§ìÀ>s¬ÊþJjwâ:Æú¸)!(Ù±ó½¹1‰uûn¶)ðÎr QHX3­Puø%Ï¿èbÿO>iÿŽ7702Æ[Ùwß ]Ù£{Ët¾uw­9lZü§3ø>ëÜMaÈ#ØWá’µ¿ñˆãó9!ÖSVR²‘®¾ïú¯ @¹À7KÊ ²/Bñélù/üsíøz»ÐßöÄ'$ÀÓ4Ýž9ÿN8õ ì=íÄ ý2Sc\Ý¿ë_VæãÓLæÕ´ïîÊ-<ݳZ+E8—¡E“ÓŽæÏŸ4Ï¿W“)[ÿuÇÕy³„‚Be¬KË>‚)z Y  F=QJïôû¢îo‘ ûwFC…‘`¬Ù]3™s=Ūsº(éòîÚˆV¹D†Ðí¢“·øä„SYögû?M¹¿»Ë+Øq]íÃÒ¼Q·^/RðØo`Rò÷€ÁWÝ•1è¦÷zyÅÕùMsn¢]¹ùåÎÉý„fºuûMѸŒ:%<7Ï;€õ‚-þåôé¾{&ƒèTÍáb-@,2>Ù]°13ŸÆ$[ZÚº’“:—e:Ý5»grä(à©•p@TTŽßéüÔªNÅÕ*à/Òz ï›ØGÚ1. !+ÅaŸÇ0mß å+¹Ód—¯vXš°îNZÿ)\8þ¯¶—«N'ƒ©Ì*šYÒ„šÈ8osڻج2ù4¦gÌ*õïÌ8òݺ›¬[ÎK½|‘ôQq ËŒ“Pñ¿ ]SQ‘š/MÈ;~_ö{ì°XÏ%ù£üÈêÖôø8­ãÝYu³ñÙ+Yå!Û,¹æ»SÅÑ1–šÕ#¾ t0žÄ^ÝŠDq±d†°°½Ñýíuèv‚1GÓIUàš“¸âÞE‹žMפßk$ {$äòrزáBêWo›¶¸7ƒXuv_Šk¾bñòzÿ¨Q#Ž(‡ÅBMDäýeS«Twwq@‘~÷wL>Ú¿ÆÇÉëg醣nn\^``¤oŽ)(!+º¸ÔÕQ©µ¶ÞÒ]‚{/ øLŽwS™……‡§••½Í×µáÔÓ»UøÄÁ7®é.ûàÁÊ®n‚OÓ•²ŒŒ"b^cæ±û©BIÊm³°öùæòG--Ï«Sã||žá@áØÓvïøõK¤ñb)hØw9(nùbAmó÷÷Øšyùš;yØ0'½MÓ^AÕêîèˆý•,¸ÑÇ;G§¦ËMäô;Œ«++µ9Œ0Øìs*7¬|´¿ gIŠIIUq :•üNd5ÞÉ…<]ü¯&‚ÌtÈqà§ úÄx¼ÿ¦ ø¡ùËsÚ B¾g‡­õÅÇÚí1 RŸŒ9ÂÁþ&¾SãÂÂJha~¾œ‘Q^zzú;‹>Éd…ÕÕÕ¢]11±­€¸]«u®:~ƒ#€a‰†}ÕØ?ÙÆ'Hfœ­·§¦¦G@y¬òUVVVmš÷b.µˆZ§ª7ùx1¹äÝ_FXíãOû©B$-- —Ç¥¦ÊtzlÅ«¡ÂõÚ®£«‹š”TˆØ¼ÂB[SÍf·ÆôŒŒ—èè镯ãu<ʹ2NNummmï´~§òjVVVG“z{{oþ '1 ‰Î<Ÿw× å>‹ûJPèç÷¤ñ íÙT£s5inz:¿‡‡ÇÑùùù–£ZNair;’ëÉ p@HˆÝïF˦˜ s`‘·æÿ)亿9îùý[ÁήÊng"M!_‘ïxHœÞ°7†vªÒ8ÖÊÚút§| ®JÏÀ`{¡ÕóS¥Q4&ÚÆ•Ëd™^ÏÀ€øâÙÞl~C­f“YD&…ÔFu±‰uéîL­ð®±US¢YhÔ{É8†ÖíõÁˆ±²*ÛBwÔîó$– «Æ¢ÆÇð°ïÂLÀ×uq¤Öà{ø¸xXXkëëõsë««ñÁÍe"oÏw§×RDÁç©Ü(ÕÍ2LÈj_üR¦ibbR¾Ì2W\ZÕy—ÓÔ4§VªãÝ|\I.ùv ‰}ùô¸æ£ªÊtï°ƒª³&÷t‚½°ÉTEîð5°þßú½¡BÀ—&à[7‡ŠÇR0WSÃ6¾}qá];',((áâ’àö›ÝíÆáï™tÏw&3¼¼­®­m-‡òŽåÈdØÜÝ8ŽŽSSRþÊ_ÓÎðÛcú÷Ôû‡ ìAª±ÿøânÄ̬ØçÏ™êû¨„<3&ÐFjÅÏ_ì9ÍO-ǵ··'¾ªÎÉÉévÃÇOŒŽþáKà$’¯T<¦jÞø£¤„A”·`ñ-hRqjWJùç„,‰ay))©zÐÕåõõqð¸6S¡‚ÿ"Ð壡¡!•¬¨¨?&½ÆŒ‰Ä§O ˆÏžUºß»ýNæTbÒïûr^3œ-=Þàx,¯¦V°´¤ó#;›urg²|7„YRGLZZIDÄQWµÚlô§?F£A¡!­±³#Ý›¦¾¾~ýñcØw¥’³" éÿàå`÷Œ%<äaðôôü½Øî›RP¿Ùí6á•ñïf} ‰ œW¯L²~üˆgff.2ÅJ9Õ­ÃÁÅ5òññIØÜÜ,º•x郡ôBk""#·´ð•gffþ.¥Jb «¼°W·?õs¬Èi°Z{à€µflœBÛhŽj ’»!Z;!k³”ü v"ö?@ÈÌ~äjTXØwhŽ[V[;m¯éÚlÜô=€_¼¦¦“(G‘¹HÛãµß ¶yJŸA¿ÍŒçõP¤º¤WT¼‹ŽÝ¾8\þÔàPQ2jÈ­Gðò/åüj¦·9ô—ÍâûÒÒÒ;§“/ŒÁ¿í¾yó3k»&å-jw}ÙCØBpM!6µý@À¨Ñ@p .úBAð£E¬™)Bb ame|8ne)©Ñç0X %׿{æäP‚@VÁoÏô((ŠTAÉ]Ï}'W·+DöU* zÔ†¬ì˜h„b±ÛÄ)èB~éÚÿçþ•àçÙ_ö~”ÿx€Ÿþ¿…ûÿÿÿá­\ Q 1²éÑ‘‘íÆó#RÑ»;·ˆLó¦Kˆ“9çkµe 8ooÖëvÞòøš£Þùßa/>ó³n !1)·º¬æ)ù¥º¾¶–¯A‰ý§kKñ̃îïb+9éÞÎ:è  ƒçKÿmEI\jª$¹/¯j¾®‹«©˜˜‘3hÔÔßÖζ¸ž«ûÀ çOïÚùîÕï;¡’ƒ@Nù[¿þ ÏØ £©[ 5+Vkº9òš>„}÷ý{Û xÐ^ÉÏ«Ã;I@m""ÍÃ~wBg ;½¾óF—GD)¹66N®##£‘YŠcÀ`ÜG±øXÃÃÐ~ääô&º<ž)“‘N#zÂå™ò;ž¨ÁðŠ¿ €B`B Rþ÷Qü»MriS£/sÎÅå ¢7ŒþõDDB¢*M;)NÝVž2¦‘- èÅ?7ÖÅ¿‘ëüõ—¬…’K7µB#ßÿ ÎÚ05߬žJ þˆ‰-ÅæÄ9ZË?( ǧUú¯¶6œ‚’½š­m×K‚ÏŽ){W‘ááÚ§©€Ã˜-þùà òé #cø}‹™ž^#©aË×nLŠÍ —C¡¿©LZý—}Æ®4õF® äýI?ç¾2>øÇêÅ*òÿ·±Å¢­(üg0C˜Ùz­Oœãƒ}°¸ï_ §øÁÞÁD]=YVNîÿbçJ £¨²văü9âŒ(Ri"!Ø[õšÎÆ„„%!&é«»«»‹TW5UÕIHpøg@DÀ?,JÀ G •%Ê’a!@$Á!LXT6£ÿûªº³Ž sø=ÇÿØçÐUõê½ûî½ïÞï}÷u={ö\󷇻M:5H¥ÊuU<´%5c/ýFÔ¥c=#õz¹XœæížëF¯¼öíI0ùêW包¾Ü¥K—Å……_×ÜÝÝ­ñS'=±yÒµÃ3ê’cÑJ£ ÏöìÓ§Ïç1Ù?fÏžò÷çjÊ\ÕÎè¾çèí«µ=ûõ{ÿuXìµkKÊʪ¶æ7þx 8ÈXØ+ªJ'Õÿ¸síÚa€â°ÝT¯Ðϼ;ãDUÕ ƒaláÓ½z­í?|ÁÓØÂ¯fþ’%¦µOÌ´-2™ìæ'ªœw®.\ýê«Á]yäà™3gÖ_šºª ¸Äc{ÔÀrú…GFÖèïìk€èp¡Õ9#ïnÃ¥%Ë—¯¿r…¶¿~ìÆ)†‹kÞ˜||©b–ìj%Ú³¿t¬ô¸9Rµû¿»mrbbâÇGo5l"-^¹ò}4ðôŽ ¯×;þŸ3¶U M„ æè’ŒÉ_^—X³_·6eyÕ…è>”úéöÕ"51«ºâ6’®úçß}¾xú5SzzºþðÃ÷­Óã^:¸8ü"„Adt¬RyäóŠŠÜòŠC‡´ÏÎ\ò?¶kµUÜŠ5«Ÿ‹ÞÍ®ýк?¹R—2gÏ1Û®“'OÚ÷»vfY]óÿšŸ_¾Íòi° €±)•º°”"[±‰ßW/¹äuß•ÍkHªùrW?H­¸}L>Wwì> ¸¾ñbOÑü¹óæñå .ÌÈÌ\VŸŸð÷Ðû×]®^y~ÿBcs¾1R›SQ“4bĆ)½ûƒu~}Ò¥Š•0û¬Y³vN{~Ù²ešîñ³‰8þáé Wß²î}å …ýá ·b¼NÑhR?ýôÓÒ;szôc ®Š/­îÚµkp¹åìUü‹sçÎ¥,˜`6aÛµ`ÁáƒÇ÷ˆY}b}FýƾJ7îÍÕýªÜÏ .ØY]a­Ú©II[K [S}óÝÙø³AAåb)ñmpØÞ>~ü¸Ùl^]Xø¤bòο|¶äž½zMùåncQTn©ýó7]› Ñ^Úêç%vúéµ¶ovÑZF³¸¸¸·çÓO\PÆœ.™ûTØ´Æèñ•ã«n?ñÝ©(úûf_/u,OwTwoãF}où¸—éÖmùž9=Œ›7mú¼ ñÇme#5Õ2­ûöî}s÷î݈¼d¦¥¯©wþN 2Ó9Sÿ_è¤ôfèl༎z `!ÜdÊ,Üæ<6ÿL™kù“O>ùtß¾ŠÄArù§sÏ\Ý®øLÝÝ»§ºQ‹š o5þôPÐÛQçàœíÛpá©5kÖ¼·sçÄý ûUýé¼%‹Û<FÕ‡ßÑ×âÑ^°ó“ãkFê¡`_Q7ëŽ?öX´LªMKM•'WO~S˜KvõK}éOÌÈÝkÎ^ïtt‘[‚üÊšó›T§ªjêK#a“¨ë#Õñ?÷Ü•¥ç·Ü¬»úèàÜêmªŽ1â±Ü¿.W®;Í­p¬Ì/;]qÚ£MŸ‡¸ÔÝãk?b3fÌØ9dÈÅEE%55ãSSR毬„U^ Ù›}÷ç†R×l¢î…±©‚°¥~ì* Æ}M\BáGÅó“f6Þ‚â(ƒ¦7 ÿ§æÂÎg ôÑ×C⟆êËÄ_|wûöÏ©*.)j‰E<ÝzÀÏü¨Ük+o~óFVYä¥[õÕ/FFŽ ¿#ǵn&ÀÌÛ¼¸ÕÔ|׺vš”ñž|BYrCCÃA—¯Ê§=\÷Í¡7vÜž¨të_ñ^IIR¡ðõÞ?Mò~³¤põO×weÁ¢¿uÀ­›•£_Ôë·0eÍlô èÚ‘sõxשׂ֭,ØŸ92)©hEö÷Ôl÷¬¿’³#”ª¯Úu≭ՓkÿoÚ¼ÙóíÙ¸ã·&=Ú[yå, Üo¢¼ñù9ÅèZ¼{<@UÚ!³B/ߨ\ •n:$NHüìPçþ.ýæÒ¥ìã«¡B($þ Å^® Êýù»r 3”ôÐC{iråbªlšš_Pw4¤º~Ö¬.ÿ˜3gdá'{ö¤Oœx¥f¬Ù|¡f@bAAL{÷§ëS¦”ÜýùÒàì%é‡Ë²òŽÔÕÕÍ[¾xuxÚÚ:H¾/×ç\Ö–™Š÷SÍùꈑ#Ó ¶¸}ýÌûÛøKÛK£—Åæo‡Þë ÂêÙ»÷‹11å‡×§)Ž©Ÿ–<«áÇK`»ü¥aå/ብ[©Pj÷¬®(Ã3²ò×@ØÖÁ}Å|qߥ/ž9hÇéÒ3?_4^Py<= Äf)4ÑŸÖÏï7xòG§s–ï{í™w^¹tDañŒïç?gJæJé%¯¿~¶&gÕ… ¶¡ W¡ ·îoÝž?úÊýu¶Ï‡úž*Púpc1wN½SËîš4wîÜñ[œscr^i?ÖU²aë½öVÌôœu½AƒÆqÿv½O&ôÊÝ!Yì­½O~wË3$ß‘¯NÈ;t¦GPP_‰L oAVçß8l„äÚIêD?úí"–YÎø¤¤WO<¡<)Pò,óqÜÂèï_aÊoE?[¾ÜK›g'O¿ª_ßbáfÛPÇ‘FÇq>œq´=o<Öþ!6*ÐñR•ÞU£[ßð¨Âß!0Ùõ´ñãKNš¸Þú¯yóŸÑÃq-lfrú_©%’¦íÿ÷ãÒCù‰_ºeÌy-â‘ás×¢çÄ¡£J‡¼4+èwõ¡)‹ÃídV£ Ü”Ò)¸h•â²Ôv›Z¯&-¸Öª×Ûìvð”Z§Ó-£Ånʲ‘n¥Ë¦ïÌjøt:tÅzµøŒKÏÒG§Â5\ã:\¯ RkÔ\„ý®é3¥éú;ùh5Va3p›Ý¡7í¸Ú®Å#ta$M2èÏÿëO üçÎc¬N“­œÂ?˜Ôøµü×èõ(ÿ5Z\oÐàš ôÒ¨ý#ÿ‹OÁa-Ö‹ žŒÁg&³!“c²–á€â£?A˜I6­Ý@èì: ©#aƒ°ZŽ QŒ‡¦±Ir¿,žšF–«Mv¶B­Ö¤)Ší6­Á¦‹ÐZÕ†&YÁ“¢þH×ß$ÿ} YNñùÿ8ÿq£F£k“ÿÚ?òÿ7ùD‡$ŒŽ7gŽŠ¡¥ÆÆ¤INŒÇd •*C¯R%˜°q#Ì)É®TcfŽ`xJ X† Uª¡£d˜Ì)îH•*77W™«U²œCeNUå!Y8ì»U-F*m‚M-N˜ç¢>&€Üd2I£Å¾$aƒ‹‹ õUS=TNŒ,že’f¯›”aVé)F&y‚48Êê$8žbÒÍÃ2U !ãéqŠxÖå&ÊB·”“84ÆÔ<†!\dŒÌA2$G,×¢_›ç…vpR„W‹#J ÉØæôÂÄ fA;Gp^l`s‡p,nLb$æ{ò'¡Ò‰ £hK%í$G2V2Z%Iަ)Àk'GÚÁ^ÂÂ+­ß«Dÿ ±£è}’±ah…Hsœ 9½.‘äûÖ$vja()Çæâàišày /$_`ѺE+Mñ‚ï¼¢©ØhÂWˆdžRÂcÑàØ‚b$Œ!¤ÏÌhÿ`` nèÇ·’‘JÒÈ‚f1|gä Ä#×JV$°$(Md™îפù¶z8ÀU0ºIºð¶µ–‹ŠVyhiAý+ÛÚåšV.×ܧÏk"Ù˜ £:ã+ÍZºµ”áR[g,’.b¼ ´Îlž²‘ °³ÉF¥àü†ùß67Éîu!§ß'÷¶+|»+ßì›–]x/cmšX|ˆmZ„V™vïÂðnš,× ;MááINÁ“4do$Ã2d” óÍÈ8…“`l~ƒZ:ªCào ûv#î—ç£`‘cë†ÝÃÂÃäaaáQù­qßoÈô»Kæköi-!G³ç[5‹Ð|Ï_[ûô™ <$‰MñáÏ®æ5 ŽvÇ]Ë! òcšåüœG‰aÁMqÛß”‹¢ad Ë‘J¥R S÷=Ú‚ƒ-4k͆շ²62¶?ÅXiÄÐBóõ#i™?|ÕŽ›åðmÏz8+éK{È—ØIéD3p€8•8E´…÷ÍûŸOA³ŽN͉:>Èy!p=tçÌõõ}@³#ëpZÔéÍçÛ¬;œÒ×ïÍ õ…T£ÃY}ýÚUJ¦v»E3즼Nôéh#ÝÀ ³¼˜ƒ#ÜÎV‰åŒôçkk)1à MHv4årH$·‹²²S”nÆ!Ã,,:ˆ àÓE¸!ký=5ÍCdAC<Þ¯tõSº#D ôF"‰ñN+X-ufÀ‰šv\Z L„µ¦—þÐ_§’’ܯ%u`x7DÈ5Z£\«ÑÊ5­X†´?½þWò½s*L¤Å[1óÛ(£Õár-n’ë"ôr­AÝ2Æ_ûÒÇmýƒŒ¢N¸Ç;¡TD;ØÐZ›8 /p„±Z?Gý0Ö¸®XVbmT1‰Ëdãê¸Ñw´V8Þ>l´Ö&•PØpTlURΘ_kÀåj¹^ÎP;šÝÔ>|t¼2MÒv=4 ®Ó;¡†6`ŒPŒU Bz¿a‚Jñ ƒigÔŠÁ¢Åˆ]@åÐa¡€¾µøNjÙBBõR8ëLÐoƒ7’\ŠäûñuŒµc¼Ç´€øöÕ—.Fó˜´×ÀÒBMRÖ$.@¼ép€$6½Ñ$×ñŽTmƒMÒÌmTLt¹iQS,^Rµ j 7 ´#í¿Þ„ V'Ø¥2¨Œñ^^ ]´5¨q9®×ËFˆËˆµm˜â&•×Ö£ñR;èCÓš݌˜ŸSrž^mÁ€ ´c¬ÐµÅŠNfG;™`ÄÕâü˜ßpïü¹”ÍAvN©k j¸·úNìm¸1tÃz·Qb˜Ôq€ŽžÄ³‰fàÆ fš$£}$7šL¢b&ƒ©3еÙSîckcSë$ïàu³* -ÍUžïânQg7S¤Vp8Û” b3†ñM¤¾Í•ÿŒÙ_ûHÅ¿û95~šæàXÛÏÄNàïRªÁÁÑ*§¦ýr©ãjÌWm5Uøv1Â#8YÄmBlœxþàÑ"Ý^ÓaµÇ’=Â4,ÅCÒ4Èn.íd hGY³cd Œ JñU˜‹ Â^ £6]<|Oû |¿„oއ/%oGß |‘BXšàá å š‡ª=Mû‹t"ç«ïm”ü„7“êúX%Ãò”¾ãTùßOPÞφ¤ÿÀЧ +’GGÁ]“?Í(Hü'(^8’]È…¬ˆÂ¼¬à€GY<‰Že!ÓT°’°µPv/jð0huQ³wñRü‘ØðQéX2Ƀ|§‰46Æc•Á’)¨x#xÌZx§tΈF CJ¤ù”À†± \\Ã(Œ¤à=‡Yâ‘Qÿ<>ir ”HHo e½ЦqJÑUÁÈþà{Ðl§ ¶LQ¸ n@,šKÑ4f!QAb÷Ðr zb‰æ£ÓÍXܨL,#.55n”93 zBäÂ[r@”CÁöGX°Š#Á‹”Oš?úÇ ILN4g"ý‡%šG MKÆNÅâ°1q©æÄøôä¸TlLzê˜ÑiC•XIvÒ»vq‘8T½‰9ÞÒòÿeï/àºÜ¶vaƒn‘’éîéRº¤[¤$¥)A¤¤»»U)éînxçíZkïýìg?Ïù¾ß9ßyÏ÷¾›µ\Kþÿûž1æ׸ƬñŒ­#h¡• ©¹¡‹)ccS@CM  ¬ìÿ‹!´²~êî˜ó§4ùI_›AjÇ@êêð¨ÍŸ(õ_ .)ˆ4™H9YÁ#†6–V@ú*Ð<(@òµ(\Ò (©¨­£ôø R6VVFVv€j*"¤ÿh„ºŸ\ük¢èÆ¿þ3[Ÿùvt‚&ÂÍlmþäø?NÚ:™ÿmz|ðû÷?Š|m)’©© &4P/\^›ºþ6ý5þÇTè˜/e™–ô{¾ø?M@;ç8ØX¸Ì Y¹MMY¸Y@ØÃiÊifÄÅnfhlÆ þËúçþ6ùúÿiÿ4-ø3uÿ4û÷òþpEÿ°`ðÇ3!ò?,¿þµ~­Áþãœÿ/@3ÿ±Ô?—ýþ|ë÷¼Àoúç'¿£~C¡¿Ö%þjß³Ìó¦-@U !ý{WÆÿû?þ1*þŸÚö?ØÿÅÊÊþÏû?89Ù¹þ½ÿã×þ¯¿ åïãýÛÀþˆŸÿñÈ_Q©$€JhC×1ƒBaÈmbÊËihÈÉÉâ>3N^^0̬<œÆ¼f<¦,&ÿyبHÆäXƒ‘‰'›'7 ¯!/' ;/;´ØØ•Ô›•ëTƒÍk§ÿa&Üìœ\\œÆ<ìFÜllF¼ cÐvVcàÝþsÆÖ ßÿÛâAC¹8 9LMظŒÙŒ¹LYy99ÌŒMyÙÙ8MX 9þËâ_›ü·årñšQððšpð°rr°ñòðrs™Buòšñšpý×å¡ü·%›ñ™ò°˜ñr±sòš˜™ñsðr›±›™²ðp³þ{»ÞÿsðÿïQþßgýÿ×ã?;+÷?ìÿŸ³r³psüÿÿwü„*ÊK¡"=8ªŒ´¸2 Ì}ð÷FèÐ ñd4àpFrRâ0wÐ?ÍyïÿÊçàöqgÖUSe‚~ß¶CÞÁ/#ká™8FQ]õ¸¼ŸóPƒâÖ\ö”V±GiaýÒ ¢ý(*SP–ß[6qŒw‚¢±GWþ±~(øˆÜË7 éOöê÷^|{1÷ÑqˆW ïÁïLãJiž%d-ŸÉ4y÷;«t ›ôï¹4øO?e¸©ÿ º‰VIII'X¤ûCR’ÁO/~ç}TîÌþÞ%N¼ï& ©­ÝÙÖövKV]G‡ÐÏÏïIJå’ £¿¸M]]]†ãÚ7ðŽtùîL½<½†Y€4ö,û?ׇ%† Èg‘…C„šªŠGé/žë´1¸…‹,|w])jÚ×ùæ×Úâ¢ïíÍ•Ü'ø’tn:…r Ѧ “wï”×ç[} j¿ö÷·'0jCùfZ¼®ŒVâ¥eec|în½œÖ‡Ep ½ßs Q´BYQ†ÒcºƒBħJwZ#ê§ Œ‹‹S¶mt\“?¿¸X<›÷éÍ Î(.ŽŒ$à–Mó9ü…8Uõš"œ¥U&y-Fß‚.""âi4µüGÍEMÐzU4Y¸ÐL¤@èöc84 ©¥ÅÎàÀJA÷Vヶ·÷&+L‘Þ÷ýu±5QjÜ÷Ž Å¦D¯™îÂÃÅ…«Æv>JÄ®ýçOüéZÛàg¤me†00þp¨¢ÏŸ?¾ÿ¶´”9ÿ¾œœÜúÖ–ñæhÛÁ, )//þÔÔÔðȈòúQŸí¯¾˜X‡ðMªÛËf~»…·9ÕÐÛ}ß¾ÁÁ@[K÷é‹Íëèí…‡)óºrù¬]+¯,ifFå~²øîÝ»Ggôòö¥`dè Nìï·¥pÛþ~R·çÕPcUd^µz±Và‹®ÅéZû¥€_õmmÏy²¿úÖU¢ÛøÔGØeOTL¬ÜzšËj¶;33“ÇûºÎd< ­Õ6Ãe3•@E@xViö&šX°ÃuÞ+o-fþ{¶åʪ3nïX˜˜˜“åÆð5ÖÓA Û?+AÛÝO,Ž·&Ð}în¸ƒP À¿\00|ΛðèÄÏž>ºC,àCAAÁa1šßu¦2³%‰@V+’e×ÔÔ´?ÈÜÚÖÕõ°§§'‰ÍT6ÓzffÆÀ ùËG^¬¹¹¹Ø5ÉÈ'°ŒŒŒÐ Ù¯_¿ŽmozƒÅnöåmh("(CÏLÓ›Ê><Ù©ñ¾>é‘C×Õ/øPÓÞS½¸ÿ.…îúMÜ0‚ßµµµÁààà$ ¼aKòB"u•-׌(T+ÊÒ(Õƒ®E‡Éxs´ª¨¡!õì LÛô4 ÇéÃè^zûÖ¥Çg ˜¢!…Y+ë!¡ááþååå¿ìo}ÖúçEÇ2DxÞ^¿<ÔÔ×'yÚ/žv~~.º²:_Ê0}yqa8˜Àh>’ƒXc3¦UmAFO,š‰ÑÐЀäEœÈ¬ŸPÕòòåËøgF&&´oß¾ÁÞ~*(@ìÁCƒ   ¬äñøø8»ÊN‹‡BéèÔÔÔ3͸ #n§Ûø«_>Pül­ûҚ鿾n®©© #ä}­iž’ŸOÃa5‰ƒ‰é;Um)—FÏ„8<1Á¬hãäää{#Û¸ssuV4ŒáeÅCF횸íå­-dxxø@áh!¯Ë …t!‰„3ÆjˉžË“-JDsww¾¥ååöåƒý•A\´ ­›mt-:Qרø†Ïu7bÞçŽõ dzpFÅ6ê2Ð/i8É_åµµ‰NJt‡ofx¦°>~u¾¿å”b±žâ0yõj¹q¯åý =¯ãês«ù"n›€‚ZF­§?£‡Ö²{£ê\vžð¹lkf|‰=.3«×fE$WÛÇ3ŽØ"EXŒ…•Ašó+)rRR$‘ïngLh¼¼äææù™J8¬-Zn¹'qZòà0§éÚ‰Ö‰Îv—ù r™t•nlOîÝÃÜ?‹hõy:×î/ýT²XKí{…©—ÓŽEäë ÙàùhÆ“'±7y/ÂWXÜ!Gî ùÀÊÑšêù…Dµ´,îŸ Š¹Ô Ÿ2ŸE âÓ4Ú-1ÿY!ÄÀˆúÚ†zK¼%Kùô)Ž¡ÛáSB…´€å›+·ý Ž×ʸhh8vÎÕÁ©º’>Œ}ê‚R¸+‘ơĒwwçvôR?>Û…]>Ýቺõ£Sãøþùëåq¹¯¿?ïöÎW¥lIì1JàÍ¥aÙ¤a`ddðë<¸ñЉno0‚}‚øÀƒ¬FâüÀ5ãqq}RÔHœµa£O¡!.Çë0ÊW–ðÖJ.ˆz$‡I¥nH"ôt¡'R£Î~›X-PóË0¨õãG†ïåÙ” °Ìâb%Úò¤¤$R>¾å(Ê!'§Ïųú-:t·j…ðmïbd íÇ>ÿĽ/Â1òãFõ›h ¾ÅØ„r¢ûíR&¯¤ž‘ž#d²d*Gé‹KHØ?$J:†šÒŸî)…Ø[3?û#3 ›9ÏȤ¤§£Ùá%ºÅÃÕEØ|Îa›cÕõh*”]F·×*½oë±p˜¶U ªœ_;ïµïLs÷ Ä?ÈÁÑ–B°œÐëÑ÷¹yÀß§Yû ;’€@¶øzÉÄaa‹NÞNÀ›I¸ÁÄt¥m¸Œoª¦úÙt Ž“UÕ‹ˆ¶µA…-2²¨¦ndħU£$L•áájI+…Ôä}ƒé¸æ´ÙüùÇIü£Õ¿Of+³¯É‡a>~Œª??#òŒ>-íµ"‹LgKvž¤Îööû@e†G²ø ÈrâhðU%õ[r:é1™.–Á¨Ö\èÃfZñZ›ñá‰Òç‡m?ò“¸÷ yJ·}ä7ÉaÂn >š©_Kb]æÑkÖBÕÕýYµÖB-/Ķfh H´5^Ÿåu%ÉÆ«þÚ1´û=u½  7aX~>óð°¢¼š ïËŽövBëi­ wg"y#@6aŸõgTHË´åÊÝÖ9õ“ “=ÓÕEMåç–˜oáZÿžýáKìeZÚ—š­·t3³{íßËÉÆ‹%R‘ù=Ne€Þöü¬ü‘‹aÚONUn—I½;óùÕ+þÏZœŠL’ ½=TܵcÃÜ„ddå GoÌ'‡aÐÐVí*º\ç9Ew¦ŽýC0Do%ú3Èû1Ç‹'ö=ïÛî‘æ|/NÁ¾<­ÂÉ×R ßÂè×°™q ”—§J×~eÔâ¢Lßh==ÏbòÀlèVÏÂÔ{°;Ü[³â—¨L³"‡DGg›~g27†›×]ÏïüÐôq—{åTYíÐŽzM-·Ô{*çz´x €=  îW§XòéÞHèè$O©>u~+¹^g5xf©Z$‰˜!ù¢½Âô•ÝF¬ðå‰e ð­]‚Å–ª¹9áÇã KÝú¯&žY¬$HÍS/m Xî%É ôù%;ÞÉæXþ(ž,½  ÁPºÏ;”çýÚ¼½Ãe OYìX¤ŽV˜ÉÄMÙòi„|䃃™åS»]í´Á01Ú¹ØPÔê7=4ˆX<ÞÈÓ,_"<>v*s)FF~²\×8ߛ̙¸¿9¶é)šÔ-Æj;GÛÕk0×DÂâbŸ_Ðo£'ûºˆød+:ÖÆ”$%'ÇDTCƒ Xëƒì'M‹±*eøA€O”Y&Šsît“, Äèú>Øaq³#˜œJ°í¢-X\Lgõ¹¥=?þM³*½Põ{\yO$?BÞÌlï`ÎõÈÀÀ@û·Tîrën+«çåÞÍE¢ÎíaâFM¸ÔøÅ×û‹üOŸæˆHIa}M!¸ã×ú T“+çuÙ€_¬È›¸„„Hǵ´ÎÙ!½ÖÛÆ-c0Øv.5þQQV±ˆä‚yá¯g&1¸P|#_x} Rxú(ûÍ‘i’p+nO”sìOû%ÐSÈ’î?Èf±7zõ%uZÎ0ÏãbŸì^K‹á]”š”Ý>u~Ñ‘¡µ5Æúîp&«Åøççü eâ8”÷ܶF »Þ$¯¾ øk~aJA|C¤U§K.’38Ár´š*ª: XÖ,Ö{jט7•¯ö¾—ΫÏ4Ö" <é;Ö4áFýZ¨¶–YZî¼¥3œéO9a¨¦ieö+­“Z¡EÖÞa`GÝàÐ({":²€88JÿÃ…ÅN×Éê-›yïÈá|xœ›ü(øKϳiß]ÿè±àcËñº¶®³\B£Õ-÷c²4á»jå( õòò~ͦsŸýCwDÈuxŸh}WV©\XÃõmtõ_0ês'ð0>·ÊÜð>q4\.†è/4JÌp|›9”ŽkîýíŸð“Ó)ÆQë?zƒ$Yé’¸õ ;~` Ih6Tæiàs˜Ãùba|´šï>SÑ\Ã~€ôÓÕ_Î… >Ü')Óïå) ëucQVýU—¶{nް¦Æì#ê)YÀ;OüÏV÷}1Ö†ZÛNwæ¯"lf?³z¹sW½6þælžadü¾Üiã¥Ný#ЗëË-˜ÑBµzF=|üûšÚÌí«_ÅXí ¶d]Þe6ºqg– 6Q¢®YiÆIŸO¯ÏœízçÐâ)“gzŒ@vèÛ>ï/Ll0Q’"ýâ«_QÑ*…]Ç£°R:\c”ÞháÛVÝg;ScûkéLvK«z<“"ˆ›I˜õ>øú2Q³ÆG+à­~=zæä¤œ;«M«ûÜ•/…˜[ùpF\cf^ïM!SF®TÆç•_!vÛ“VÓ«‘££Ï#ˆ¶B±ø3剺/–¨îÞQÁ­¾i›V^ýÑ׆½fn3÷±÷%ÊJ|*cWÑÜdÍW‚)O ;ƒÈÌ¿wl•ñÄÔFèém¨úšŸÿ½ÅË8Y%ƒèp˜æ»‹ áñÏõÅÃcëºç¸zì—iè\"F±BZ*Œæ³L¢eÔÛ¢¬ls˜`0è~ÎÑäv R!–®ÿÐÁA¼*‚˜L‡?®¦ééþp))æÍÕ´ÑîŒ gñW0NUËu?¬²<ãÿöñœToN° Ùáè St˜¶äPÛ3\ÀgììX‚ß¿§dÌ–B E—…ËÝèG`ÐvóöÆJ‡Œ{úÉã>vRºËdë—U]X[Û|¼™ª…•R“`çF¡ÄþIFPâ˜}-ƪžR$2 ×ÃB…^à€BÉø.‘½¯vÈ™ôŽÅz£4ë` ®$cV^ø“ã„—›„zÊû³YMê©––D zH:…Ú êFgõ·F¤•Úâ yG“¼Ó”ò[e¦ ðŒŒmëPæûÀµÜt"7á—ú­ê:ÁtÏ”¨¤¿õad¼¬¤7‘oz<:z+B+/Ÿ`>ßÂZÝôH”Ÿ¡²£viiéÎ8Z]/w×Í(%ƒ°§©H‚R—í{MnåÊRŸ®.ƒ o=Ä%©ÆS¨˜˜°oo1‰ímöh‡Mø>H7XÞìüóÍL“²Ïs­Ñ½MoˆÝŽi—” iÖ•E‹~Ý“Dò¸¹¤XýÊØÖFQÇµÓØ«~\¦cñgÏ—è|èv¦‰'§– ðºÚ5öÃac‚JÔÖ4¾]RUµí#Å|Ó¨,‹$b‘eRV%NÎzº× ତcF‡„€ûV\_‰‰žžßu®«Æz®¬œµûò¤‰]-Ø¿“®ßI¢ð©À5ûê0,ð9ÉA’HÌÙ¸AqqÏ×7-²ÕèUœ¶Íe×1³>éDÖÚ ~ûø>6!ûâÈ'] öìÜžj]Ýã/)gz¢v2Xt£mçº2,'œë<ßàXY¿¨GËaí±»ÎE>†Ü÷>Š@`nû¤CC7ÆúšŒ/׿ó›·;×¼;Ì6){*š‰çq6¢h=`WxP¯²°uþ“#×\Twž¬?¢:Ý®às§F'˜§i'³px8îÍp©>ýõA0»ÅDI³¦,ãÝo]ÅÄŒQ4Ǥ¦–Í:ú tôÛ`â÷$Þ£‡Ëå"¶${9,ŒR9æ¸Ì—†ý±w¾Cký;N¬¹‹ÛM¨¨ªËœ·XJÄb¹mš:²$òbbÈÚ–º½ P¡DL_‚1»Ws7ã1uÞŒz'ˆ8¿Ó؉þ" ô×7ŽXlóõ8¿9 7ÿñé7¿…C=®G W}fbBŽÃtÜ•Êo»¸m¬VGg5(aa“Ì­f=”íã£]ÒCp‘—i<ð\††"X-5££  ZØ]¸?¸¾‚*Û/‡Á¢'E$²CÿØöëGX?X-Ççë¼®8½/rá;mËû"1Ø6$ÅÓu¶eðò(quY‡V$ ´s´@ £L–iMø×Ô¦½Šy–Iôê›<ñ)7Ô½A@öò%o¾Šn±Ö S¶”¿2Â"!¥ÿbA¤À”i%¥mOq>”['XœŽ”fèýQ$gžröÕ¯[¹ž}K>ᆠpÖz4 ›•ô O µšdyX¬U0÷ŒàÍñ ›û?2ù­»„ïŽveï®6R”ÈãP±úé@¤]3óìlw|²éM~‡ Y¬ßî*‹x~݈ ”KÃð–>«ÍG¬O {ßœyö@ù%Ý)š$ØbKueÜ…êcK| ‡ñè$ìöôlj—{3CÂ.rj¾óÿ~¥1‹÷øxÝñ¾ÒŽ 0þ÷Ô$=á¸$ežo|"ˆ¦}·ÞIà ¸?{s$€A’VïèÓVg//Ë95>/üHøº qnîÈÀZ7zËî±èGë­;1ˆ|5]Xø\mœ5s¾ñWvÀê² èòZ“Iø^ Èp0Z¤¡IŽf% y¯*7¾'ˆ¿{¶ƒàn/-Q¼êéÊJóÂ_6º”){+YM9¡JE u­Ñ¯¯^±……Ëuïµê·müPxýä ìÑ…#Ýõ5ù-Qõõ|FÜõàúÏéú/}dcÏáš›ýV]Ÿ”ùÜi^*+@аt'¢›=ïC äeU‡&cvy:{ßrË‚ñ[Šj]1pù"«ª¬^Žàvó+Œü¨<¸¾ð\¿¸ "ãoÜgsÿš’B£6CÆ–£ÕOjŒÒè%—KdµJ¢P/uù„i…DGN~ÇmiwÖ…d7ÄtÐ; ¤„k°ÿ¹§ç­j­¨›«Þ,R HÙÃlì°“U|ÀàQáá?k¯…¡¢Ö¡…Ç©€`µTß'Ή@5/Â×íããÏ+de‹Ô?ɲ†D`à+¦š(’bÍ5©ð8®âƒ˜•»Ö¨ç€ÍãåáÌ«ó£!ú|ýVœñR×ÀTÝ%±õk VTº]ºj…kÈBäÕµ^TÔhqu›Ýì8ƒ$X–ôŽÍpX·ý"#£ØŒììÐÕ¯‘wDÅVQ5ÖYîÎ+7÷d¤ñó%ÙðpÃì—ÑH9ŽÙOwP•ˆ‘¯ìoªq¬~;y¦8,•›Ìô‰C2òysÓ‚ÇÍŽp"“&¾‰’šÛjß/Pb—ƒ£°n®²bð·käñóÆÖ’, îáp¥VRHG‘”¤2ê{7»pàè+­øghWRYáK{{ýóů^MÀlM4fÙwÊFÅòolü4Ÿó¤/qnG†DY¢l„ÍA¼F‡·ùêÅë¯Í»Œ‚€»šœ-ýEZÕÕóIz—×X?³¾¤S]DZ¶±Øh©~ø–"bÊ@*JPP!hÆðØXOÿ{sÍÔ­w}‚é ‰úò Ø$zÇÌ5ÛY÷H(väåÅnP¹aÃH–Âv Àx¾Z¸“ 凖֦fó¾ðµâùíA]ƒ±Â£É礎ÛH²rƒÀïPeýŸ)º)ʆãPq,„ÐP¬¼€›o¹ H÷žz@A!H(,“|·2 °g}Ú•ýá}ÖªªQÀœ -´`ÞÅÅù ßÖ÷gJE›Ú€;Z\Ôkß5cçÈüœ›{ƒ=Q˜ìù5/vëÍé<G‘¿˜¾°koHÈC§Í*œŸ?ÉÍÍ÷í/8lm¾Øw‰O%E@‰ˆªx@NI‰|y9f`i) ¼iöÇþŒVŸ§A¨ÓáŸ^l-í/¦‡ïì’ÍÈÈÛÂÄM¼Ÿ©ˆ€‡‡+ ¸÷±NÓz0’˜˜Q‘ºèÞc=Z";//y•U=¡ãªg4"ŸQ”lýv×'Éqq ºSèÀ~õµ,c|QQeYL¿õ ® Œ5²»[¦ÇÄ"FF êŸn7.þÒ?š8`bëÂú$p ™È*h¡Ý(A;íÁ{¤Ã(}Ö`ä ‰Cã^—6?Ø*ÏIỦîáLýóe™"Œ½‚ÌÈε5:u‹ôéSœ aVNŽÑáO‘¼ò©É÷99…\}ce}ð| çIÜÒ/“—‹+/ÒŽE€wתÔk›Hç*•˜ìƒÿÆýÄÂxB•£æ—ËÑrP,Öµä§Ýû€ƒslqW(-åjb©;ïàxÃC§U(qKQuj¶Ñ–ÕìË=„‡¢' Ck_‹éq7;•œÄ‰1f'N¸ãáá©™ã7ïµX>4^N6¥›w52VCƨT0ºÀ«üZ ÞL/êÕМñµ›ëñÖR 7z®þ†ÃæTu" 8a—¨x¤X? ^}Œù…f^粃„îú‹ïqüYë` ôS¦8„ûo5z¢ˆ¸¿7Õ³‚¸²[4ïÉf&`­±|À_œîeÄÍ\  x†ëHŒ”MŠÐ~ÿ®Ar(’d­Í«¥ºÂó”ñÈ'ü!ª´ƒ Óµé,v . *\nóµ¾Y\‘80¨gñj›œ]å­íXÃ{jêlã^ªx¬¤îä÷½.­‚jÏ´øSÄÐIZüÃKÈ}Ú~-¸ (÷ŽU¾ŽÔQÎ)Müîñ‡_gaŒŒ,ÈÑæàbîÎü^äk%•åN@3µkPĶÆÍtRÑ”˜Âæ_\?ò¾¶§ˆ°hë4F*þFš72RqpsF€ò‘Ð>túðB¬­Ù#\õ2mhÞ»ñ-½ÆýýõïÊ%bJ/A}vZþII9äÚ°G*k]98%úérþã}܈E!’s°ÌÒ0YPðrøGÑá-ŽÛíõhþé#¡’¯×ØèùÝœÇN6}X:ÖûwÊÊÛ6K(ø€€ò¸l¿’}¸òØ…ÝŒPÊäWâý’-Ÿ>õÀG'ò;0_‘.D™-òàF6Bµ·oI|ªVøPâO7TØbß³“â°çÝ5Çg®ó1<ÃÄ>Åôú>0~-ħLþâʼnObO%Œ¢¾ ëÙÕù!e¶"yR-#Œ›ÛùÒêWR«©c¬Y-1:qCm8÷/U ÓÒ~àqµCAqªG }l<ÍeûYÛ5Wq0,((ù—Ðg­êÂ,gKö*kK‘#×{ûGáÏöæRìo.u’{£Œ/Zs@°oH|MÛÚQFI œï3M¡ô`XdwãËã]B‰çq"ÊÊpÉœÚZK;ˆÏl¼°Âñ/ËÛÓ}†9¤rW¦ð€ ðóta¶‘ç#?÷33Ž• ¦3F€LÈåI"bb¨eöÝ’ðJsÿÚ ²%—àe1=žõ…b;nð‹®•ÁÛQ †¼¬ìÖ¶^êZ˽ÅNŒ&3üVó×b¤~½Ë‹]¡2t>óô´ÂÌ¥Ï"ÖÐ2œô¿?yb1<2Òv¸" MV FÑt?‡KdàõWÉó´_ì@Ñ|¿Ûséq¶›i9Q‚8?—$ýbgÊ?3Ó0àãG„‡1BäÔÔpFö\™2cŸ_V–½þAU6ëZô½¶‡y—¾šm¥{ûgeù›#³’ÎwtBúÈOžH~†ñõrx˜å™¼<Ê£GòŽDɲJ½ÅÚµ ¿~=}Hä‘ãîL­Z<…ÔVë!g¼p€÷v¦ý½ŒÌÄ»Z5÷šùõõõ•Þ}v;CIã=B F›íÝÍ–ME¸ÿìùs”Q2ùT>ÊÎõ¾‰‡~3ñOFGãÎn ^¤p‘ÑÑÉZ¬¿¼xhnê§§ttHQQQI‚ }Ò]¤B3 6œièºÇưYYYÙè[ÙZ¥ÆKϤTUùÎ=‰Ï¯gøâ[7$_D[Œqdäå!zyYƒðÙ7™ÓñÎÖt ‡¯Ð#•v*[*:솬D±bÝüT>9µG 'ì…twK (aª­mlÐŽêï_ðÚ:·E£ÌûæÒ‰ñQ ¾37‹"&f( kâÿÍ|m tç-õàÌL∈cÅæ†¨/Ƥ¹9Q2p°÷É>½à‡ãçgOÞH§©v E^O"eC´«-H'È0°³Xú‚PõBÂd»;±Ì1³ªîß?l±®C Ä S 1aaaA!_û^+zVL§xnÓ:ºÊ©ßÓ*ŠÐþ „z[#¬Ð.¦ÙB–ѹª "ª% áãK1Ý® QºÈjh¾ÑµÄœ†-¤+dßBB"ˆøkþØ¢QkØ ·¾µEñôéÃgíçE©Ë?òö@PÍh,zr¸K·\MiYšÃêÙD< éŠýA_®^îÇHE¹}6®d´ :r8ŸN0…ãåe®¾;#?? ŽB£ù¾dbA¤LLò‡×õŽk,m0/.^ŒD_ßž/£Ÿ_^fÙ/÷À¼…Ö)õÞØ¯~a×Ôgü'#ε®Åp¡õ¥´jÂð¥ÙŠ”sí±³†VŽZm}“ä/>ü™òNÀ4¾$½ßR¤“-¨MZc3ßé¸ömq¬H#_9‰êEòÓ7·—'[ë?ß§L¼H^‹™OdÖ704${Óä²3…ÔKÇ 8AÛwt&&HúoKºmuÃ/âOùär®ówZveë6¹ò&Þ«„†¾þlØya5Q¢­L;ÔÙé¿â{ÿ^ û+4vƒ„„„íë‹#ØSø6&½¦¾ÏŸ?'µ´¥ð9Ó ~ù'àú«ÓÌÂbàøää§ïø§W¦&&e?òØQ¯µÑå2îAIøð¡ÿËׯø0fææ}²3 ¬= “íþð”+TOŸ² öà§ û˜•”” ù_pÚÌh*ÛØÙ•=m¹^‹¹kÖ®0Adge5tww·Zê e  Èî;«Ïqd`ÄÅÅ]]ZR^½9lta|7VÄ.!þT5ŸPBq|B.f«ŒM/üÍÁ㓽éZÛJõb-Vkkk³×¯û™ô[¾àKô(«~ÀnƹǂŽͶ§¡u,˜å¶vprUnÐ~_½TOðw¼.dðçùà`\N6Õ —¡ æ½ôtãK-þßÒ…‡6ÇŠzaaáG¤òØû¦'åææª p*‹ÞRÖö/\žh|ˆ3’¤Œ?pÇ,ÕkNvÞžŒiöºJ (KôÀ)¼Ömt1-Õo5»½½ý27—V¬Y.z83$|÷eäÇÁÁðEJÙA&­”r euÊ p ¿ð9ov%0ë3ýdn­AEEe|·ð‘ß5êds,œµ'©±‘Ÿßý8¿#½w¢…©¶Ž9§Úr‚íÕ«W8˜˜í÷ïßOJM%rtt¤¯ù²ô­¼*'E>Ù)õIU³¨)MXE‹^˜N°Ú¢Ö—;[ccã3,¬N4Bž¶ˆÈÈð™’:6zwÆm¶ü¾½z¶ñYNËñ2›Ù†ò²2–Óõïfff=.»3/7Ý>)¤SVVžÜm|ù5™ù£7¥|äΰHbÁd¯ËãPü'OØHHÒ/´$J1åà~ü¨|Yi&7„ª‘«nö’ÙHNNƒôÍöÞž~þáÕÅ… ±ð›ÃN‹QéC“§Æ¬1ÒªÂÈÈáÐvH_)0&k¬§ÁXP½Š`]ÝÞf¸XÉì[;¨¡ò£Á@E%yx>^¬ý0™I¶pþÞ‘Bs¶¤ään†ÕJ,$4¢H(ÿ¡Ft:áwÖFF.Û“ílllIš f6:­0â«þ:ÓÁß*Õ!£ Ä x¯cž29 @›1–»¢þ"Ê«ÛË`ÖoaÁ¯0•;Ý*mÅ™TŸé ô¸hˆJðí0GeúÊϸå55.¾úOðññ箯‡òòòØêö;•×µÕ¼©ªªBŠOñi½–J(Ÿa§§§çrø%-Ó $e|sy¢r~m›Àƒ{[m=]ÓçÞˆW]]Myµz“W\¬» s¸§1Û .ñ¾ý=µWRÁaÁ¸ëuÐW¥­²B¨¯7«_ ¸^<…löòloH¯ÉMé—‹DLO5mFVËÚ€–+(Ù ÙgGû D<‹|hyK³õ„¨ÊbŒî ^FÆÆÈÛÔ[–99&Š»pïXzìÎ÷ à/½Mæ,rÀ  Eœkö ~Cøä‰–y Pç~hO“¿ûÉ-¬Ö ƾûÉ&6 ÷Ó§9mÞ¹³§3õŽxœOwgÃ)¤¢2€¢ÁÀ033oŽÉ-w Dø²õF“ྴ±öüîFÿ­ŒŒ `oÊ×:NFáÁ;Ûÿúù)ßY»´»®ŽÚ"õýûw<.+<É<¥¥SýåK­8. ¯¡øê] üÅ›«³X¶¦æær×½9åÞεD&Sº ~6¶Gü.Û œ›e}õí£r|bú—’¶Üøø…¹f3Ž÷Ížø”cƒ—á6+ñŸ{£xx’ƒ‚*@§q/)‡3ÅàO„qððú¦j¬µ©Þ0µ^Gã2ëý6j€ýšÒÒ[£*¾7±±±-õÅ@ãVWW­ÀènŸlMÀÞð:< »Ü«V=¢‘•9øuwVa:8Ùæûॹ9ßÖpæƒ{rc†³D£×ƒ ÅaU(Þ—q_ž?7«”K¼ni.¥ÙÚÊÒP+é¾¾ãâæ~ŒFdb5]cýYĶf$œ¡D¢ïåàŸcžÈ¤;à~¼Þ.*&ö!:Ýr4ój9ZX–HÁ~íÀùs·|¨8ùx³‡ëé´mkyW—8¡.‹Fƒ1§œYг]ï©I̼®lÜëM›C*+*&¯ƒ|ŠåH"¿ë.a‘zqò¯70Û #Pžëë§RUÜ–Ÿ}}(ü­¯Ú jôex¸¬ÍœRCCC½Úbì~v^ØÔé<…À䌣۫۫½ø%0å)vö÷_?ò¾+ÖNÜØØ(Ǥ,‹‹‹³MP]É—f«ó8³Ïé'OˆW)¹ÁVz©Ï,QÜYèÀ¸zwîËåžÈ 8•åå†w×GÑ¿êKcºÿÁØÙÙú^w€ˆþe±Võä¯þ÷/]\\ –h7Z¢ªÉïLײPa àCwó'£–Ùýw 8“‘Ñvö”ÁÛÛ«òÑA¦- O ±§·7ýËܶs,ÈÈÈýƼVªŒ±ƒФÙ& ~hÕ´ÓÒJ=¸t§•#RO8z÷ê0…nУ„a-sóñjZ»å„ž_ïƒËSëngš:Ÿ;¡O/R‚€º‹KI·ûÁ~üÚ¥‡9à@<°þ³ò Ú…”)FT&QòGa¤¹y {õáiÓt(ýq™/3åpéU‹>¢4[p‹`íqÆ€yŠÃ˜`x´š‰ÇÑ'¿¹’ÎçŒ$„âûñ#“9 0[š¯MM† Ç4‡ –{]ãÔÌ JqÉrÛ—É ŒG$ç)Äcâ}W>™î/»pà¶>׌?‘‰AîˆËÔôÌ¥ã¼ì]0:Y†2ŽÃ{”¹–›'QQ¨JÍ \¿¢–?‡Öâ²Ô“µ¡íȵ¿ÈñM" ;m›÷;Óô阛ÿmØ9å@„Ê!'ù͵C¢Äòä_@Üö¿ý+ ÌÃ-^Æ%bÐöáŒoÎ00ÐÔÌñIQûTú©yŽŒ:7Î VÒ›áa G¢0Y7à ¦ª-5 ­EYoÏZóð8 GG-ÕâQ ºç<š W’Wu %‹ˆ`8å­—†óòê\\ŸTü´¥ÌÇó—îí'ý4ö'ë/õ>?K¿¡WæszŸzú†ÛòÔ mÒRj+W=µÀãâ&*[{ìh‘.-ÿXØÜ$]Îÿ¥ñZŸ^t`*Çß»„Qí‚xQÖìÜ£GUF±=Î4² VèæÒéëeãâd5•Õxž6óaKññTw¸w’ðÐüw­MsÂÅÁãÙnV·k”å^~û?Æ¥ý ÷A8.IFffãó:4 ²‹ ƒÍÑlé_;2Å–¿gK­|ûÁãb~%Õöu¯©É¬óËg—\bý˜ë“ ]hÈ|Ú~Ñþf岪ÏÈÖÖ¨ f ‰`Ýž÷Á½¹²õ•ató*>gšªf!UO´pÈçÏ„òFï\edðy\wy{"c7šË¡Íg/íÓPZ¼o0Yèg*®Êêy.t}: û%é;µ‚|ˆ¸^˜[ZÌ·°†„]úåÊ Ùá êFÆÁ1 íùC­Þù›°À½HQfÓÔÒÓó]YÖ*—Fr?$±çáž{îj'?áî=Ýé<8›:¿Úëñ‹F€(+‰÷[ ÀY²Ø/J:—´Àÿ\þÐ’~ó‘¦DCš€m+²Fþpûe´,mnz·7_¯<ŽÍá¸kK Í 4ÞBjŽ'0B^²=ë߉~Çu´?î=Ý›ó‚ƒì3ÅsØÛ™VHâ;AÈÊn5˜(‰ÁcÉàœ Ã¶\ìB@‰žzwÿ0YÌrï>Û>±û±¹¤¿%x¥¼6ù£Œ’oRÍîœõ(b6¬=ÐÂýñn3¾Z¡ùÒTu½ˆ»aÒ‡:Kt)°8o*…ˆ6# i|ß?@쬳çHEÆ®ë5Ûù­—Àóç"º©GÚ¸+ò¢¢Oz"xßv‡+oŽ2ñ¸ÚuT1Œ}~‰Ýèݱܛ9Y±7±hgq¶;]VÁ–µaµˆQ¾1´ÈÀ¢QÞ´Á•ÝìãÛ 8’<…Æööv¿­w ¶¢›¦ƒßÚÆÇë6jÙ)熇H·"3—™²$˰wf©Jf÷GžÉh‘†ÿ Æ/Yù(nwÃõaÁ²ZÛ·Ü«t&äI¯¶'ÑðêPgf¢;ƒ–t8yœÎùŠ8oM„ýßÙ'£ôôæ‰è·>I$ë‹tÝ[Î2Ûžõ€·œh€4gøGQ 5Ÿ ±”{{óÉè×Õ;Æñdb:hѽ†üùs©©8ww!‘R=‚ÌO=½Õ–Ž,¿5cŸ¨¥¾»lómþþ½ë™uý£‹ÙÛo,KíOKû2‰mÁìÛ5X0ßRG ¾^ðVYŽüUη>Œ…¾˜à$–LŠl/ÈÄwí¹Þ>edÁ¬hü ¸tAtîZã¾/&ËC×Gri'ÈúUo R8Ù%NêÑdÌ ÝÞ&ŒÀÿ‘öGm—>›²‘¡Â(6ÖX¼exÅåp(“hôô3õ•Ï6°ÚqO}³Åž'-Duu9•tÆ„~$ÄD#¬ ¡hûš\¨V‹H@CÅ+ §–gÊB·‰ ‡>JÄocÔvËãf÷Q–¥…ìdã‡Âþ…#Õóõ>€ùÀf ìPV«Q L!ÿ' íÙ‹§¯d1•Šÿè!ÿ:'´ š†C­ð/g-.Ýf¯}Ê5…&Öøø¼ü½´´¸V‡„ûßGgè è4ó!««ŸÔ¡…«¼ÁR¶ó„Àl•°€×ã”Z…­z=û§Qq~ƒ{‡ð<¿ˆþìÚÒÛ²J¥Ýú0pß#¶Þýê™,'ÂÀÀ@‚UÌ"·ƒ-õô‘ñÖ8KXgœN0hR@Ü“WŒþ¢™Ož ÔS±£\ÍKÜÝN)#ÏÍ9Òb2t$súÇ›‰n:®¥AoŸ§Ï¥þ1l‹ XâÃà N¯M>@K#Á{¶­ºmø³ö‡¿LðžlÚ%è(' iÁ£f©‹= þ‘ bºEuzˆ$¾ö͇œ 3‘ék×GÞæ¶µ¢9Ò˜ Å Ä‚¡tßý}·/I"Å~@ÞуA#s7¨¾}Ã1úYQ‰Ç½KÚà\é—8aUen´‰â.`ôÞ½`*ò<íÞ6ßâ5à³CD—>§«Ó<¦ÿsÂÀ‚¸µÑ߇6'ùŠ”… ‹ª®sÐ2ªã9¯Ó¢IGç2´¤ðGW?¿f¢–Bxñ¢»ùÕ;Ö hÈuïk¾²Äƒ‰’¯¹âe÷¤M0“Þñ•ªÙµÁX`? ÀȪ㑃{#@Üetq×Á,û/PF!’ý*çôQ%ä^—• %ñVÂödµÒóòÇÇš¸‡÷15‚™k=ÎüX{¡…¦Ë*BB†:4™‚_/¤›­~âON%gYjЗˆÑÅ*Òô¬~x­I)º2A„‘ÑÙäý·^^r«™õÀL±³¶¹–{63Ir¡DÓ÷ ýŒŽüAè$êÐò¤©.IÉÉïUšy ý¡îvI(¤ôr}c‹ƒO98м.­zæš]¡Ýާ;›ét‚sG½Ý^¢Æª ÑÆ)ÌïúµàZÛ!ºŸL=ää*ÑMñǤ˜²'Š•}·†X€¬: €CËÔ¢¼PeʯЃ§AGCI‰¬’GÜýåƒÏr^úÔßE5L@^:5--2•ßÖèú<Š…­°Ú9ZiÏóVœ(‚õ)Õ§åÁD”®ÞÕßÝìÑBÔ/šä=&AŠ_4I+)+kó°§ÃÍeuÇ\s6=EŽ(p®56ÍQŒÚ6RÑf“uöãªýÑñ4¿°xžë5yà[Nܦ¼ãã₾óDàã{²¿ŸD>flØmÝ(KÏÂ/“P}ŸtãådóéS×çIÃ˜Ž«Ãm˜¢üú˜XﯿîP)ìF¬ ^iˆŠÓ VŽhÁ¡7¡ ·†æÝ;=«"cÕQÜç).(··˜šåYÂ=Ñ®÷£¥¶ý› ùžíº>çÕlÚŠÅ/³\(|þÂrx²¸™§ÝþÞ¦9t;ií2ï[n`é‡̺¢æzo†>I|fÂÎö–‘}6b…Ý'ßþú…¢SφŒEå”#®øíWú;÷™:<7êØX62œpà‹:sån•瀷­­ßËTDéy;Qjü.!!Ôy«„œ’R¥°—"CÝÍ.ÅÖ{¢°àž×Õ”ª²xaÑHl»—•b©jÜq‹FAV¨Ù×ÐT‚& BÂp ³T/ø">~œé/ù1Rm£}žì„wsùsa þeYÅÒ©·„rՋͬ×*nð"OÉÙ°b„â}ûø†i̾WT·ya%æ=…Ÿt@`/žÏ·7®”Ρ@+ïX>j=ç‰NM-·¾¥QÔ•¯ª’Kéoaáù_¾X,¯~½€v¢«FËålPúo×ß#ê£aàQQY^Ü{V@tt²•ôhÏVMeÚ{A|“:%ƒ@Vh¶¿ÀÕí=nažŸ©QŠOcQ8j¢(%…žîPãà?;S2gÞí&)¸¸r‡CL…ÒƒéÔ8Ê{íððÖeO’Ä/ÇK[Ã>3–3:?Ûeîc•&³âöáƒß#©º‚‚ƒïõŽ*…v$é¿C';Ž·¢$'öV}¯|å¨Z\Ø-¢Z˜7BJ,c*™Ô/ôB÷‡ûÙ>ë%PUÍIçÉ Š dÊÇ—¼>VÄ (:ÒµîS#àv—ièÆT6ú ¾&«üP°Fn:ïYOk=þð4A X˜÷ÅÊÞ#Ûç_û1{"I ùO¥ézŸV¨47 A;ÅŒ{©:ÚžÕN^ÉŽž×yÖ/e‡E?ýÝ»l8Wm‰ݤ# Èoð}°ƒtr½¾nž%‡«µŸYawÉõÆ!ñ¾n-Ð8§uƒ—Ĺ½xÌ­Ÿ©'ÀÙ̆½™fÒvKòò‘ëhfÒM^j÷ïN¨G>÷$E¢²^õÕzSÏ9øàVsñè ´¥7aC{ñ°¨ë<ǵOÃc7¥üšºº¨7WµtWI}pÔý^ZoމŽð%y´PÄy­?˜i%Q^Š#ySÌWm±R£¼¹i!·2)~êäÄQn"£ÿQXø™™3RÕ#6*Ir ,z§n[!šÇ÷ûä^L6{<–ŒÌj'qõ“'À•W?¥Æ@’Àãy×BõÊKׯfö)bJTT‰sp´[^#-XSgß›¸!Ð+7âÏŸ7 At<1ßý>€èlÀ©Áš¼š€©µêílÎ,)svæ„(xþ,•ßë…Mó÷ññ®hqkã¡<Yλ{´äü´ª e½žÑÒ⿲.«©ùdþ£‡P!=¨sn®©ãÌ`åW 2¦#ÊRòQŠó"ÑÄ_‡‹S8_èˆýXXG‚ñøg,è|•¨¡ÆA­î€š™ºzÔ¯ßd΢¥ÑZó©QédC,Q„ Ùéœá‰ OO:8tŠÞ`™~$J£rŽûÔòÝ5Ö®û›cRçW­bÍî¦úEç;Óš!Ý(Ÿ>U—ÙÎ+Ž–ë-6¼$|ñâÅú†Œ­ ) ¨Ñ¿~™ <¼_Òù,]hœÇsžˆ?ypÛ±–A•Vx¡¼tuøüú‚]¯Ù]þUÄâ^«ÿpeìñ‰3êx 7"º‚_q1Ùæ8£×Vº¯ï½ÏÅÅôNVÊ\"""!ááïe~ÚÛã×yò>üöí…R³ûÏÆ;å ûS+ Œ°B5S~g”è^±<ùy½Ê Q“téö±7‡ŽpMÍó€P|n©7³7U̼n«T4Ð dÀ1W|8Wî¢á¨E=ÍN¿Ù÷m¡aD¦|*Ÿùøs.úÖºu«;Ÿk=>ß8R&&4è˜0Y€'²1Êøø8 Ëßãº:;"&µAô|•´ÿêüúßN“xêÏŠ$M,ù³;FC?GÍ6ÿSTú¢ïòè½Pú <]FK‹·o/2Ã;Éò€¸‰“Ò§¹Å)¦´ï¶1]n«>W–kMËqß™ª¡Ix§L;øt<ÏyÀ,è ly8Fç­q 77ž·~/ªˆÑÓÒÒÌGó1#""vw£Àwí““xСչfÊéÕ_¿ 6FrÿZΔyOEÆ^¹FvA$è®vã< { íxlff–¯’‡†F, ù]…Ìaû[*Yuu`TZ2Çk?z».#ÖÓé`³¯É™c…àûî‹£5ÊO]îæ¦¦á¬ÑøÝÝ]‰„—„…>Àƒ?-ZæwÝÍÍÞÎ70öööʶß´»ÖfÖïÃ|hųÞq :›ù"™£=·å'öóô!Ó®–Gƒà뛓t¹cgÖ ’Ž«_ _¿~m5”&ˆ“ÂëH-‚4ºìqZŒ¾³ÑZÝÞþBNN®ùìLee¥±M7ñÑZºÙÆÆÆ—ÎÎìg¼¹'‡+r§‡+ƒl{RtŸJËËY§›=¸ÃCC áÑ zzzb×'ju]X‘‘‘]V°¡å0›™ºv òŸ«[ ¼^—N ±±.{s_-Æ?¿4ù Q`~C?ä,‰@VawujC@ ½¹“{òÆÊĤ«'’ 7++kø=$/¸³Í±ðT7±ŒZU!ÿ´4˜pŽÿâBäCjaœ /ïÖž¤g¤4‡öÄКÅÏ­qF³×¯_n³RPPàG„ŠgÙz¿Á•èž³ªWJ›˜íê Ø™,÷751a)×ü¢¬¢B9´â³—Âe=p{±–~ÿ (Dí¤ 9¹«zSþgé›l“wäÌÉ(²[Gç'[ ŒŒ‘¡ÝF§û‹¢éí÷îÝ‹(Ÿ™!Ý›`]ÝÛ»ûjòîПWVePµTSé×2´îÅÂÆv?º÷0Ö‰]ð»Òv, $ ŒPºYŸ’ËÜÜ J@}=/tOëÞvýl0:ÉpƒóÖ}ŸÊêjÆš™&¾cg]Ô¿©MU ±ÞÎtmïíÍòÎ|Õk˜úz‘lÉȧ>¶3uÜÆ9Ck1E}’rèd÷Á³Î^5)ÂÓíŸÐÁp. É~GGÇ&·ƒ¬¶ùû÷ï‡1Ö’“œc¬îÇæ„Bžxååå!‘‘îîî¾kG› ?X̾๽yCÆÅ…Sk;ßG«2àüåÚ9y“„,àWìøš½¨èýѱ±˜B±éÕa`À("A÷+$qY?ÅÀÁQ7c¹ôLð+åtd~_TD_¤UMTÕ8»…™¾5–ø•™YÅöW@ºl‚‚‚\F]@]•Wdåºw߬¼™-ÕkxÂm󥪪*)2ò…ï•âá„pŒtWíü·d 1…ªSU¯;wç[õ·ý/V|t”S™¾.ÛfzÀ!’f}>ƒ4frv6u D‚c¥úé;³‰¨x,oyùøØz¼?™™š–¿¬4cõòòÈà²;ë^¬ÅÙG¢:IKl kÛ.¦¨ˆÁ纫ƒ_O“†Æ|ü3~oL>Žû¬ÚE@_-€¶©©'ppp:ÁÊ9ȸLm==p­`ÞfUÊÝdbbƾJ;Œ+òøãRÃÆÿ´Ýz1aH‹ýǵäµ ÌúQO8-ÚFF¹¸¸Ü ¡M® ß‘*CÚ¾P­(([*Ú(H9; Á0°%ûI¡/C²ÿëKM%±ÖŠ×\×¾¥Dbòõb[>pÞNåŸ:¡ÿ{ rtÀYüüü0?îr¦qˆ?ô¥ÒmôôéS;l…Üß.¼†kÂ0?îóçÏä骜ÉÉÉÃ?~,󡈆„ÉÉË=#]àC©Ï½ð}õçý*ù(ZQQ¿ÿ/nZ¨GóûýœÝÒÁݽ¾åæ|´³ÝÿÿM‚üïûŸþEþ×?.K“ü›ã. äÿàþ?nv¶ÎÿÊÉÍÊòïûŸþÿñÿ…ùÿnv¤¤1ûwêǧ~üwêǧ~üsêÇÿ:YãÿŠTÿ'¦~ü_ܯ¿åCù×¥I¾6µ2ùw>Èÿ£óAþKVþ¿9+äKNþgCþ.Òñ/†AþýrúÙñÿ:=äï¬,ÿë²þÙ ÿoH×òÏ2ú£ vBªPî (càÖËìñ¯ºû/ùr÷ücñÿ8Ú¿¯ðÿã;R(-„ÃkN ¤vÀ¿;þζñ»VCccSGG[‡LÀôG3ÿPsæßÍýKçÿÌÖå`€¨ÅŸ5¸:’¾ú›‡3s°µþ]¸™­••­+”ƒ ¾ßÉ ”û+¹Ïÿ‚þöþ19Áÿƒ’Süëáÿ§Qþw‰Ïÿü³Ñüqù·µ¡ÝÿoæXXYÿùþo.vÖçøß3ÿåbý‡„«ÿ!EÚÀHþsµþ«'þ–íßõÿ ûÿ[šÈÿ¹ëÿÿ{ûgåäâ`eùgûçâø·ýÿßtÿÿÃ"˜{ž¿ïÿ‡ñâ©ûïîÿßžuÕT}u˵ﱞᇄ$5*²ÝL ‹)élͪ†ÅÙcþˆ›U¸2ÔL%Bp<òÓ¯l*¥šÏ$ŒCËÃÉ»ýÞJklX/¼¹3x%Zúà•YðD7vïÚ—3ü~^G›4r,Q Ì?döÞ¦bÿíWZÖÏäýD¶—……üùÃ×I÷×ç#xpʸÏÄÅ;ƒÝînΔ45iœiÅlm£O¶&ätá åå÷ÔËoÅÅsР‹›#ðÙY~IÈ‘Vçä<©w„¿Ö?Oël¿”·8ù.E"£{_©8UÈë ‰Ïuù¨éïVñ¼Âþ«q¯1‚ÔÄÿüÉaÅSÿëó˜M‰¿¾xâo^xM8SÜ3eåG-çKáîDbXS™ôçzÀãhP1£&Ï?ò”÷Lã<~l°Ü™$äÅ×M-|‹7”&¨"è³;ËBÀõ™làsß´Èï:_Cu*½IKÓ[¶®µ™ #à¶1øšÌy¾Û¸g`däç¼5^ÖêyÁv Ä€aª.—ºCú[b(E!!ÒïO×Úö G×;®-u"ç9Ô76. ßu…3·„ȼ§2„îåÒ$Áà Ág73É‘áq?Îß\{óæ ”)€J!-‚Vå“Á`#x®÷óËJ˜÷Ô ’žžžñÓ÷Ûrå¡èûV4_¾4\ì¬ó¾áƒä•ŠŠŠ…‹k|Ó%îæl²Ú÷“|ªÖ.ŒÝrê—ta㞈vP˜Ýá¯~ek¯K³¡´HPÑÂú÷ìó‹µtVçMÕçI,÷¼½½sõ^íΦém‹éé¥mòL”êCcl> Ó¯$oNü-0]H`1O¡)ûûvV?+`Ó}ny¡,6)àÑÞ+µYAñ½»=k-\³™m$ñ>¿'—ÈÔ]c=­*<ßèʼ;ßý5…󿂤Ðù9ïË ê±–Ö›S+k뢘ñbmxttô1{1QÑájK ˜6PK(™X¹¿ìT«0‚2ÓAœÏzÍOÖ†Ò™±ÏA?áˆø]º„oõ½ñS¸¬éª}45ñ\öæ"qõ=1õ½/(•UTÊ]÷ôšè¸4 ÎÈ©¨àô}n8¡+àûú¤·'ËÅN®ÁÐELèûâ>Ÿrn7?…†|§2ž§öÛ“¬M'ãÚeµµÁ©©DsnË‘Ó ZUQQQvööí#¹röK]ˆcŽÌMû÷#"#YºLÌÌ ½½É@·ÞŸžž‚w{c)åèvbTÆjÀOaš Ôy—íI_Xd´"8Ô'9';4`¤4›ÜXX¾çÊá~ÖªFBCC+\ƒM)—­¤ƒ×ûúúhªïšÞA[nÜ{FÏ}ƒ2))É`¦Î>wÊùW&ÔbóéFýË­ÒåxúÂ5\M`TIÉÉêWɦj§¿m)Æ…õ] 9¹Erll¬Á«Wyî:‡”cg;ÓµR›åññØ0ϨÞÇOQSRæÎØËíj¤XÛÎÔùFpwŒaÙ‹µ‰IIAõÅaÔ2wæ¿ÿþþ˜†þ=˜™™™êl  ¹zÔÔð$^ǘ ëëš%pììì0o}}E£ãAå,¦qÊÂìll~÷ad‰&Š*Îb!ðªB†À+VÔ„‹ ‹‹ Ó¶Ü=h}´þÂi}ø Ö99¹1ÇxØGêêê¹Q¸¸­É6 µ¥×(îíW½ÒipB|‡2|éAÀlUE0ÓçÑ£Gª™ÃcEçÆç——÷iˆáêìEQžp ÀÂÂ:§a é[N”¨Á¿|ùRZFF©²³xª…Jì7°Î¶°|ŠÈÌÌl5U…ê‚n°‡NíÛ¤@טpqá())M–>,, †‡Ô°®Ž§«»ÛðhõkîéàÀ@¡‹6ÙC(Fÿ{êlÓÁ„ÐP%¯Tab±`´±K—8N÷cs¨;èè½A¨²Å|I p^^^¿ÖÖ–§m[aaL^½Ò˜Žªõ”;®ÉwõöRðñ=Ùk†w±’ˆT[¼Éùàþ}‹›©ßN4Y é9«ãês ·FKÝ,Üܽ~°È)[¤ýZj>›“—G`ñ8ݶˆæwÝÕÙž©Ç²m¹ z»„½wIÈûH%O¾;MÐÃÀÒR{£ °ÔýíI%‹C[˜õùÖV‹º\µ<`¡íh×Å$%E%ë!¢¢š™…è6êu9Õæ¶TUY¹½)Ë“?_ žÈÈÓ8›“Eh:_²üêw544ü”ðd0,Dúmë*!ŸÑÙuû·ì¦æÆÎ‰ZêË3×ñ>b‹ $q‰\R6¶{¬¬!QL·a¡2Ï¿`!dÀó7ªÛ9U¼W9H<ôÐÐÐÆ#8²õ„Ú¹‰t„÷çÏ Ÿ[&??QL<7|ð™ >XI”Úß* ÿÞÚZ9å±úü¡ÙשЯ)¯ â¼-ømœãÚÇJ[õº;ƒiíìÌQ™KmöOvBï=ÐyRŒæ,«0Ô¾Èí(J~øÒ¡õ—è‡_‹?ÐÎ,­ßö0UPV†™i¶wt¼ÆjÜù"{7%>>ø=u§Ý¯¾:uv$´´hx¥âc}}‰MØð[®øÌ¾àeŒ_–êEöüê×Þo‡_.7h—®&&€Q/æ ñºb"cÙ'âá}Yxs>FK Ã˧Õñ£²H^Ã47×4¹4+[ÿÃÛ®.'” Ș7ßþ¦©Ñ±WQ$­‘¿~¡€·Î÷G:¯èb"ÛÚ(úýÈëì:@ÄŸ¯c ÷úÆ6ŽÉÜ<€Ùól¶ÈαRÍ’_Y…}qã»Áµ¶×u¾y„TlåððñþÁKtGG•ëË­%÷¯jú ›‰ú%¤||jØ:/RÆK;ˆm2*HéÉɉBÁ ÀC2Óѵ^X7ï'…`,™ ¢É9?AÓíO­6½¼.yÚ‹èƒÐ5ð]¼’±¨wÛæïÌ €óð0\êš3ÿñ –Xèyû;²ô„)… ¥ìÀ»“RR «68®nwÌ6†" èD©o +¨™îμ‰(7žàÖÜ+n6Ùíû@à ñõ»Aë…­i,,ªcI`ʉ4tHää@P}|¼4FZ„TAH¨%÷Dâ!œ,¿û’îÉÜDE.>h£ññ:Óþá¦Ö kAÁgºçØŠýû3Ž%xÂ-Ô=hŽŽï®"/`É)°2ò¨ýŸSuÞÝÌ?l:rDY~}s¹ ÐuÃYY±11JB}ÊAšˆóø&B£ýÖÈ9¹AõQÄà_¿þ %†Xÿ®»¸2†íçœï`t$¶4Y®½Ôè[¤AÒ19‰ÑäÜq~ Èêb…Îak£³²e;çy?݇Fnpu²ù*.Ee£#Ð#‰Õ˜_èâ×›¦ã‘2¸7‘ÃÈŸ'•!JìŸéŽ#.å:Ù9? Ý(\°ÉZÎ| §a:ö´ímq±D HB¶±e±fj ¤ €ŸF®¯ÞªdÖ¹x,zééÍ=ú43?´W¢ó(ÜØ€O¶¤³ï‡J‘–2²mŸ^ˆh6ŒVŽÈüÜ¢çå} §§o؃»=Ã[*¢—ÍæºGeô%É<,—a3:QRÛŸ>ïü”Ò4߯h-}7‘K91?FîeLL7™º“±€´¨™ñÛV†•‡{“g!$ÏÈl`á¥BâŠÃDaÉÙØ2G÷[€¡«ñ Ç9d٬췩'ŽÒpŸ_ž:88`c#~ùXÿ ¼\Án{ò)˜œ«ÊzZ~q9šœf¨øìÿ2àÖ;o¢þ~x÷Ôg•ìþEÉù } >ˆ/_úÀ¿Ü™Ö.Xí6z9ÝGFPKP© ¨‚ÈXÊÜŽ ûV¸ö·‘†˜Ö§k½ªéÓhŠ—,ßÞ<°úˆ˜ØúÚÕ•Ïü6ìµ¾§ýC~—‡Ëgóó¢g»§±£Š ì—¹:†уÑ[sžÄ£” ‘´@·‰«ÙqšÊ WÙÚR:‡jÉà›Ð?¦£ölueÆÎÆØø¯¡ /ïKÙ™ûPH*ò;$m62N'eÙçŠ"Aïî?#}ßÏb®ïöƹhaQs=#/Êv_ FW¯°¿¿˜%øÜ¿ÔVáxoï³Z³À·Ôð®/ø.ÖTX=N d,‘=Pl÷N4+ÍØV¿‘¿f€Ñl¾tÝž½¢þöñ‚ÚÊŠ!‡)oNöv—PÀ [!ÍD„©¶½êõ Qªy6U!7nL^Þn‘„ÀÀ—õûýnK®––Ž¡ÚÏ ¾ó˜^ÿ[übx_£¸¸/ìÎá§¥éZrø¨ê¥Ý÷¹ÆôÍÈP$äw)-+AÄr·üÚ$¯DÆâ¼©ž“c²0Y¾2V"=©éàpÈj1ªå´e ˆE\a5ˆüÏìÚLÂÍIM¾<µFן×Î ÑÒN#’Œ•õ¶Q¿˜m;X®‰‰)ª¤o.Ö»áo¹9%¼¾IÌ’KtQNTøÀŽ™Äë>ÅŽÀÿñbÓቸwËýWßÄó½'**dá4š'+¥ÈO+¦d*xîA0Ë¡€j}]]š”¢âÁà €ëz†ž¨¥l;Z õ""®Œƒ’2220üáêÛzó¨==¶Ll×0˜k²-3ì|þ<}NÓ®Êü{tà 4tÏŸ£ä2å‰Ðz\€Ö—×¾KM-E*¡z¾Yc­-­kô>Oñ1Ón]¾‰„x³Â½ OÀH´;ÇÆà¾}³΂ýíñ‰~O_ÉÒóßÅ…†’¡]\«À¼KNUÉëXØó©Tí{Üá z²¨o»·«Yk4º¢JGKû 3øŽ'¢«ÂÔèÑwUà1?NXO­ïî}ª¡£¡éZî€}‰‰‰è¶OŠˆ$ ÷ _P%•¼>t4ëhQ„ˆ"ªªlŸ?'ÿêûÆ6“BÇÐÄDqÇ~w^¡ã{v-€FVâììu®=“å‚,qÚï“‚?¡½§ö‰üüYàáC†À‚‚˜QJµ­R#à“xWÓûatæ,1±s>^güµŠ“/ª§1•™EJHfL ¢Ûñ:-ò äÔ9‚²uç÷|¡–í¤ƒL?9ëãGÏüPcolðV§ù Ñì®ìù<€ïÑ£ðƯ,îN¸nî.ÁÁÉœ–Zܾwg>ðGC>‹}1µÕF~瀑Ö5úøÚÌn—÷  ƨö_ŒÀi¼§:ñWs,ËÑ*´}7–)6MåŠFPãwÕa°Âã¢åw¤ºRáE ÌÙ€QŽgÿ¢{+@*ÔrZ³YôÚm#Wp²é ΧçÔμœŸ>ZÝ´ùJàñUe®˜ĶÅPõ ªüá.@QbõŒ¡QwWŽ:ÞŸX¸7ùý‰™Yò¬c,À½phžsÄ4þ«ð àÐÆ=NEßY¨W"=iþ c|'#¦è$ŸÚ¦=ˆÒ|Z˜…®¬ GWF§™¯áííì¯ÏùYX†ß7F*Wà={†pxî_ôúÇ¥qGÀœNª<¼¶Iwˆ’ÒÔ+ddößÐ'ú[ONz€fJ'Æ}ôÙ„àÅí ðÜv®¥³×*€œ/G/½•åEt®µ9þÀ/ë*øwÓÃÄç—6~¢JoßæjÕWèý’Œº¾ŸîÅ…]i† Ÿ–¾Ük[€ƒö®ßµ{¹÷, ÖÕU~iöaJEY‚CÇ È©|/-¯u\ °ƒ˜hLÊéµ"œ ¾Q@¾n.yÅJ/Ó(ƒtÛ‡@Dó¹˜ñI&çÔ«î°œ””\Á RÑδ¹ËŽ’N]Ù#.®yÏuÓ„¾v„b¹äÅjo7¦£«±Üsb-YX ¸‘€g’2]S¡ $ŠgLµ¾Í^ôë[ì9ˆì‚¬Åb)!®™Gþc?ÀïwïμÊ|ßìoåìo÷Ÿ(s;ÐÛž»ypDN7j x@ƒõaãíÉ]@G*FWÖs*Úã33}-Jê–=ü< k«ª¶ÕŸ„¼lRÚ[‘q@š¨œO£¹9]+ØÔÔ`”ÆÎþµJörW· „À<5úXTÂõû C%Öa--àld~<ÂŒ!IGhex¾/¦_0øšÅãôc÷æXëri«z¦õ4Piýýï»ÛÇ T YØèÐJ>Éïƒ1lïË¿Ìl¯VRÈó6$äaNÞ d# ÖðÍΦÑ΄yàKˆ.A‘è朜»; žâ•­€qoÔlp˜˜!;:b¹¹9ù»ws«³_)‡‹MMEƒ’»´Þœ~úöEE-¦Iíú!û+´¥µH22T¨9Ö˜Þg.]:êì‹Iu¾tâ[QùáxŒG–$äWóÉ$¤òÈihT^å?Ù]Þ™%bÔJRõ@YPÄîúœq¦11`¼8¥½³µ¥¥™Å(€ÞCŸÃRÎR ¼s´ím]yÿieMצwäÊ‘´Ï4]Ϋ(—žŸ¿B@@0´“x’mõ[ }}ââ”ÙžïrQÊã°Z Ýø#¨Ï‘¤ÖVX€7`Ãzk´üü$@ÉPˆéÎ_ãð¹X…Cv2ÝHà~æ²|+y¼»{Õj°7wÇ[Q9ºÂY Þ>kÃA×où‘#˜ŸTÔ5‘·”Ï#ûÓàÅþD'~JÆÎŽc`b£­<Ö¤I©ÁäädõUB8$$ÿ)¤@'j°Â>w)ÒÏŸûƒ¡l·€^™á¤–Ÿiïï X]F2éìD-î/‡IsÔxlœS¼åë.ÛºåY×^Y]ùl­Êtx4($ÉoZ¬(ðñ|ý»váÂ@GÇãl)ö:ò¯jl}a håÀp¡(HI b†còòBßR‘…[ Pš"AÏ ØÐK ²ëß;3%{iyŸïo޳°±=»»ýö‘TWÌÄt¥`ÙTµïÍ.WýXyì{v» Ï냧_RùÅ7ò#þˆFÃüé]]kŸþWV†{9¦9ð¦pQõñyõ«SõÂ7åÈr"Bàa![?ÓT±¦HóŸ<ÑÓÓ½ígý%öµ,ÖõÍAàâÅZœùJ¿ ttnËÄm0 ::S2æz·’ÈãºËtÿAbçÔ”hÖfÎɜǕýÁ’×GÞ#…¹Çe€ ¬ *!aRÃt¶KIÆÀÊ †:/ÌŸšZî7¿?iƒ4˜n€  0øë‹5Áõ­­õý–LnÐ{¥VGd»S«§ÿ0ßöÛ'VPI£RPS“è6x"|@ÑltáœÝèžÇßÉ®ÏZ‘¡ù…G´©ee½xœŒÞ7άšIyU˜×çÖjvjsp9ÈÀA©‘©÷Ç#ËÁ½\]ýd>?W¨êÖM"m M ÓÑ““ߣ– gaQ­FšÁ,Ál@$ÛwõkÑÞ…ªÃmÁo(|?t‘Ç1 HÛNõ^FÓ“oy1îÎ{až§Ô Ê%ºm(3Ëlýx´ë›Éç’Ñ\EF@@Á[¯`ÉÈÊÍgðÁ°lŽz¯O }@æ|÷­à?IýJJj8/)ƒ±åÔœ2x•èÏIÏ‘ Þ™Yþ ‹£•k쓎ÓŸ&Á1¯¸çÎïÝ»G¦Hƒtæòò’…•õY"S ›¢íê½ëë#}Íò%˜Ý+\Æ9]´1%qñû×7¶ùA¤ÓS5Ñ è N:J¸*ÃÇü_F,ÜÜñu°ââ/ …j‹d$$$ûÝ]h °!2JJ,"¾ªîÉòÙE€SÍüêËêl¿Cûú”êÇòqqd¨…õ}™tÕ ƒ"iðñÖÛÛž‘p}éê m¦,”w<;ÃuÏg±¸Vààr‹äè3|"!O" j™º xü íØœºñPhp()L>]Ÿ<cHírT€i*ýˆIÑ~ËþŠ |}3AÌ&MŒ¶°á[nܘ­B½õäëù}ž¿ö-®Ð<„ ꘿ƒ{„õƒ÷.‡ß~ MÏm‘[Éæ¡Ùq€‚pê} ÉùÊÏ:ô~þö·×ð(lNluʧ ¦vÇÜY€µª-ƳASRmþð2Š4a0qè¿,릀=¢jU¼“W•F+]KKÍ}ÂJ < zzN×Ñ_ý^–U~úýj0ƒß~“fAwQ¹|2ýt Eø°°jV”û‹©e¶ó‘ê‰THÈá½ùJúFw·x\Ÿß®(>P‚Ó€G×ëô‡ï/«´„QJI¢¢bHotúoŸƒýëAâIqqlc€ë Ô€E‚’”†æ±Tôœ¨Í½Ëc{¿R[æ’y,.®±!¢î‹<'}CCÌç+Œ×¯yãmŒ 2à?ëݬ~# {ýÉ~™+ÃqÍåwx—«H¡§Ñzオ¤Ô_ö›=…ùÝ{ “Ã-­öØDB’ š¦&”04¼€”+HÇæ@ÜGG¡ avû%@†E@dò‚³ó¥óï‚ø_£±AÁôH•`¼@½&ö”Çç–øÓ‹i­#¶(‚|ƒ ?ׇ3­)Ô?Õר†ZOûÙ­RîNuÑøéû4‡£«üÉ®ðt0ÇD¬ýLV^Í•¨4»~.*Î ¨úëÒÑÑçù°?!åÿ&¶¼8 Æe,m{Ûó£ Ah[›âCØYIYYª©ÚÚHíWÆPo.«ƒ[„lûœÇâ[ ÷æ„•3hN<ðê3ióØ‹ìÞ*mÇR´_§Ž*üõxw'äO2 ùD D_½f!QÉ‚tz¯›º:Uáô—*£‰xùB7N£¹ïà A@öý{„ÔçÍ,ÖZÂi ¡£Ÿ¹Dغ@èAØì9¤ÚG" õv+bÐä47 g¡\5I9ù#;ТûÄ졯’Ã뤥é.nü ;[<€˜º¼”FÎÃCøjHréW?ßWÆg .$Öœmœ>¢ V½<»{ÌÐ<hNÕRP4Ñ…ãØQúÓ ·nIË(ÂB“ß—`™eõ¹uÅã,D®±IUÙñ Wuxùx;R#¬ð÷T…ö†€}ió)Qò½ xGÏ»›¢õ‘\ÝìqùÑÇ+kôØñYɸEY¤ƒmÏÐ]\ŠU!ôŽ´ÎÓîWzñâ«x¥YÏ6¦dN3p-1—nï"põ¯áÐI>=ˤ¹œW0=_ Ö`uwÂ…y@²DÏKÓB €YñlõÔ[:Àd־ͪÁª††Nq7Ù^o„DFvW˜æ0åö?%åãÃ’—ÿúsº$`ãGžñ|‹W’—{õt|öšå‘\5 rcc1%´oÏoζ¤åoùë’ÙrÓ-¤mmpzÚÔ´¤Ærr’‘Gݹ–®Ðý僎Õ}¥÷ ÿja±ƒ´È¸·µaª$oM««W¸ópe.‰ý•tü)ŒIhŽxÓ0(½kŠÃÃÇ”~tm@0XÔ§í3õþôM´ÇÛaÄ‚„t‚»ÙR ö—NP¨f¿úüáã0Ñbâ¹<”û§{óÌö”â¹ý&O‚Õ€ÃZ1¥¶ö¶Þ1˜CÔ9gPN#]_LVöÓæCCà Ÿ›­wëFl!,sÙA9ýH:²±ÁëvÎ’«ê†M”Ö×÷ð)Õ§ù<ÐØ&N·Íµ¨5û1=ÔÑ™¬ÄhU¯ÜÑ7 W·±'Ç nüÛI¶âãÅpæ(ƒé˜·aò´’’p444â{sQjÛ/»wô÷Wt,« 7•Ò.þJPõ5ÔûuáT€ ‹í÷ð÷‹Ó¶ú¯òiiihº~VÆ@SÁƽ6bTX}_¾ÐŸHaPzy ö­ŒŸï6j,. kùY„æ×Þ9xÒ%/!..Ë3*Ü'+--–.t§,˜ÐöÀÆÒÒ±éæïËGÞ2gÌ-È–䤥;éK=ÃS¸®Çð¹l>†nü¸Ò8‡–3A¬ì/f·XÈÙyeö»©Ajó>>ÄEwQü®Bcî„e*¼’#õšÕ332ÊF¬QPO Œ ‰œ.„ ÉÏQ!£ÅYЪä=@¡;‚U‚ĺ°iñ@JJއ§*(- —i¦s´@{H_AŽ æÕ+úÏš‹þ ®·PÛóÌ¢Z…Ö}¤”ªÓäFRÚÒ¿±ñfì¡ÚÛÌL”µ!©¤"#ãô…/B:¯V¿àëì ?#M &˜ó¹ÃÕixhØÉ'£‹¶‘±°Àò'aOIMYD„ Ù‘Õr\žAgÝ÷lž¤7^0´*.0ßý˜¥hŸÝÀ‚*++ö`A ü;ÞHÈþ|ßÙÄä1üËž8;û×À8€0#žß‡F¸TÈ3ÉÙÜÎþn£1ð/Õ‹RâÕм …‚ïlãÐÒr4º‚’µ", ,¬B]à›£,LBBu·ùdÎ÷?·ž®1ÀÁˆáR‘ì²ß‚žt-vNdæQòe{z_ªÔ9R£M×| Þ8NZ<² 0u@µ³õ…׆(©_åßÿœŸoòðaÀ3}ý Y>Sº!üÅŃ$î=‚ãå€xz/V7»à «û˜c‚ï)gkÖXá º?uÆÏ[\,މ5ÒZ»yñù{¡šVí·À@ !¶¯|°?§§¡ì¨.×=„p4ïûé>Š}fíîêZÈŽê¨÷Ö^36å·(,Ô’ÒøyVÍ›Ö0æ‚G s½¥l¬ÖÏ_ƒÃÀttçíx4i]IZ¤@ŸSd2‹y¹É:ŒfwÊÎá²ÃEÿœÔã““ƒŸ¯Ò3½®N•EŸlç&ºPÐÐTIúù}xþ ´Ì7eË΄TæõTÕë$.ëäQSs¿_F=éB%À  ‡zDE…¤ùr¥m€¾Xk¥£ƒ¼t4ñǬÑÄ%²ˆ$CÒ…¥Ø /,è ŒGLùa3A9Lbêêêœs\ÌÌèá8Œ~þþ´j¬Rš‘ÒÒÊœ\gг¼É ¢©ÔÚ´ æû¬©dŸ¡r¸fjYbEòbqq1($ä¡€û±ê¦r>1Ôgá»k•M6YZº±£Uؕگ)k‰»šš¿ JäÔÕyËÊúà3^Nà*G§ûÜâ'2éÆ6 ŒØHD@uckK$dÉÐO´ÏÀ(ëmŒ¦?]ì(x¬ÀÞG ö÷(¾¹Ú©µ<ÁõÈê©ñ¹óþ’Ä*¶Éö419YkÙ:‘Q;haÁ€Ï ‹‹ë|¿ÊÀC(à†ƒ‡GóSB#uG1xHø®i*=±¸¾Â‹£;C„høóVùt´Þ¼þ 0Ú4Ü_h×9÷å ¦îü´‰@†Ap•3:„‚võŠæ±ÄðDb{?’×UMïî¬åÁbpøþjŠã÷Ïʯ<ŠïðXv•Iûc?~¼ê:ç[]Í©£«{pµ×šxYÆô¾ao/šI·!ãE ´ ÌÁÑQmèî|9ÚÎÁA4…˺ìÕñØ£ƒC™Iÿ£ÉÉɶñqÛæðÜâÒÒ}˜²òrUUUh·l¹q/°À½,Ûù–²ÊÊÎç- BBi‘J³¯À° Çvh¶Ž7~¬ÿÈCþâxßïîìîV¿`ÍçrƒÚWUYùf}#^h¶·»;žßÆ”ÞE½v·ï•¯tZ<ñ_}û(bÛwññ@Í<«,Æd‹¦¾rÏ?£z/BõÞp8Cæí—/ÏŸ§òa‹£usÏ{ªXó/-/ÓΫ1222°´,*ìíì|ÀÊÊŠ!ºÐŠUç¼…ÔäàúhÒ‹7_“휪ăр7ú’ù{gb1J‘tžyGW xËm#7qÓå…¹”®ª†«X­œö|máäôt"1t™MJ_ŸôØ@Có‰’ÔM{Ó=™F—Y¢³ÝÙÆÜÓ¢š`4¢dæ&èî·¥`ï·‘‘¨o—x3šš›«[ˆJ[.é0@ÖºÃa‚ï1iU!¬ ¥—ÚñÿtááåUÓT°*‰ Qmìhû'»N£ *ˆÎedd&Ëá—––X,Ǿ|`—b,}©BLló±6ÌBëÛ·ÔÛÍ¢RSÓÀF×½ûÏêyïqR‰Žjr,žéáyDfrYÛ„í)ˆ^÷ð„ÉÞg}˜ìy2GÁ‡”péÕ?çOÜŽ¼¸rêž©w,w;0šiöÀE'ÈßÔkrc%''‡n%dЩè|5TrZÇþê[WŠmK¨ÇÙî"d^&27###…³ê¾¦ƒ †ý±”æ?>¡vtvªé£“ô€Á"À–yñ"Ð×÷žƒƒÃþw)’{0lllªC­7§Ó^Ú€åï÷ØìÎÔÕdçÄr&rxœZ5Íy¸í/ÜŸÕk¼Ü óöÍÑ*0¶V)##òGXX1ññjEŸ™Ñѹ‚{)˜v_g·0q5Ékx¥ÞžµÞEý+p/æ:>I yB<ä±Y/¬”øÉ„œ±—TËOò –Þ„þÆÔv­Ý¢èâê*U‰N=9D"ô<$X_<;µbýüùÓ¹0›édÔ¹usê;ƦÇ@ÍÝ%±>ÖÚç¯_±m[ojÊ**•””,( ´±pí^Èl£køéÎ42===$ضî%9±Ñ•••Ý@«««Ëjjpä”v¸½.¾~É~°ÐîOWûBZ†îú »Y„|U6ù¼÷UqYUÕc444£µo©F#92FÀ$ § ¸ÏiôóçÏ]±”râ666õ ôW-V_)Óûû1Aﱫìèè…´''/™,:´±>Zðž…‹ GÐãô1°½ÈÒ×R5Hù\tÈNw›ónd´"y¥‚¨tæøtÇì97–[ø„àí¢È”qçÒ9tg®Þªž¾)n°Þ sT¯Ðw,ÑËùaáÈÚ74„;˜ÈŒ ¨ ¶C½¡gÝLhÇÐB]}="$»Åeîjáë};'§Ç€ŸA7nøtí¢ý\\¹)9öóçKŒñññ\ ú)õ%™ä³íŸÙ|6À–••aˆ"Ä|üÈðI!½äd‡æ5Š v…Ö&l4[<ëÁ×¢d€íÐ^ßܨ9#+ ž~Kå—¤$àÇëcE‰»ÔÉÃWá;¸oœRÂYÜÙaô¾½x£”w¤-q2–Cíiz2ºvMõ°³ O]i9ÿk÷³”ĺt6Ó0·Ã_¡ãµÙ9ô%!ÀY‡Wnõ“í žALLìàxC¥Œõâò²Já Q„ïõŽkï <¡÷2¦Î$˜ÃÏÏÝÆ–Uòäëuô ¯ 7½Š_ EéúÈëB’Ò¦Ã0·Óí›°È8â,òþ”‰ç9‹Ää64«b¬6Š÷wý¤ç³1åÖTÓ5ÞùOîCôñYVMy9&`L€X€ÖQ@C4ÆJ7]ZÁ·å˜j¦)±Ùu…µc!õF–(i­6l³HAS-ý(¥hÀ@S"2› ÷Ö{åPw äz,‰þµÊŠ Hí7yWô/ã¢ã#"#‰jySªUctëÊÌÎÌtG¤FÝ ÜýâÖVÑÉÎùÏ-ÅÛ¥ w84BÀ€ Üäñ¹mZŸ(M¯s;ÈÂc1xËãy^¶p€©]kè‘WPðº½ÿþ³ê½p¨¶“x}**ª¬üü|IÜйÚä᮲°üòüe*»õah-¼¨€Ü‚Ò•­“è ÁçÂ’ràòÚý`;¦¦´žäQÒiõÖ­žLRMq‡ 66åÙwˆd…3¥Ÿ/õþR)¥Ÿo˜……[U§7¼é_êÿ¼Šœ R;ámEl¿ `;uä|6Â3ÕÐuxþÂÎNñÉŽÛɘYÀ[Œû¸ÌziiÄžžžvçû†â’’Y éBûûûÏ1 •ˆ à.™Ùâãç_¾<ÙÊõÆyôH9û,Û:³’ WCi‹SÕ–œzh ƒ=­Aš©­¸‘³³¨ííØ¥YÒ bÚ¥¶ î©%‘ sÿ™`TC7ÍÚí/ˆlÏ·’@wÚ677oÖž! õæDVxfn­ Љu*÷^ ÂM…Wi¿HÔ_sèH†Öð £ÎØ ä2árŠ'¸u[ä'TÕ&&ÿSȲ=ß_T¤y|þ뽋ëîŒrïg a½< ó­‹,ÚÔ³Mwïʲ²¶4Aw>„BäÀÄ‚—4…åv‹Î(G&άUµsè«qϺ8?Ý!ài†¤ãŸ_RÐì>²21y šÜŒ´ÅÀÀðX»Æ ºØÌÌ,K¿Õ{ è4¤ŒròòQš N Ò8Œc@‡\P°¹ãTíDHí¸Ž.óÐVqV¨iF­”kmcà×*nâY—ÏÝU^raVâôQlÞ¼ÓŸ®š ekéæãu¥ï*Ô†VV î§Û/mvû!ë&%'ÖhZ;ëçÙ§‘+/Ý„ž2aê£7q4 °M|k¼XðV:"¥‚Ì=±€/Qü•aO¤¬™à*ºšKªÄf =ôsºÊdÙUOÉ2+Lƒ ,y uóJRÚ^Vº„Lè]ÕÜÂ*e켑Ñ(±m‰ê9ò²ÒLFëA'2õ\º¹-¿ö–ìâGµœ7Àõw‡ãRÐÒ"ÚÛÛC1”¥Øùeõ'úEîfU ÇÕ/íÐ-lì@lzuƒÛë ˜·ðèÄ00=ZØÞÖÙ¸ú-¡©‰Wc3¶2˜È-ûõELp0Á·¡ÏDD2Gs|?ª+©ÊÎ\Y]]ê3Yù ]Ïc‡³`,6 ä#³S.Ñ(ËgòÈJ‹1º*«Ÿê ½®Nãã±Õ‹µrݽAýÔ5FМ‹v½È #žS‰’AÝ‘csßMP+Roÿò:Vùê£JAf]c#îD‰„œ.'†n}ˆ,ÿ“)}Ÿ›@ï›ËÅ•Dýž¾hYVúQƒCËp¼‹âRç{⦜¶s„Â·çÆ¹C{“åÙ˜Eü€M4¨µ(þ8ÑOþ­²°ÝBF ŸýÒC.«I˜W¯^A'÷î.'Z‡‹4JŸ´&¤¦Á6z¼²šÁ èè _ߪ¤¨ýÙíû~ÔE 0 ‘×|⊻{ÓiÑ{Œg*×¢ÉOÌZ91“øílèTk*A™a'\Üw™  kÒ÷ødÂÂò›ÊUi G)16‚xÃóúÀp¦Ó¿Åk´M­}nްíxãÇVUkZ+ ƒ¡¹9ªXg KY€¯/¥ ›×Sê;˜@Ñ3õXËñϸäJªqº[^‘„¥ó(¼¼‹Îî;êÅT04âî—¼q>©56—€—E§k˜—oΘ‡Ò¤Þ /nZ<¨ŸôàËú½wKZ+èŒ:RŽŠ]¼ÒÌë݇7øÏbFWÌ?Ý—ÓõƒNÛE’sq©o>rš:\¹²»ó~„F䮲©“Ê÷²óû÷Gíí‹(E3ÀŸ”}µ¨¥§¡éò‡ïG@ •01!'§À²[–D‰}Ï3>¾ún0¼ÓßÜsþ¯½Ä‚ÛP“¸kK Ìóç‡_˜«þ¹ÂÅãfÇ m0r¿«¶Œü¾²ÎÎR«ÖF}ë°.Ây+Š‚õ;*sËc¹„ˆ \Ó#-©é_+´ à¤ì¦`` ÆÄ<à±_BK¤GC).f®¯D™±Õ!ssk÷ý¹¦ç0¢Ú$üZÇÐð`ÿd6„{ÞþîöL<#)ÖÇ:é­›ÃAlý[öŽÎ;TŠ‚ÁL:&àáô—dCdß÷›LÖÚê§zL¨št‡=¨sÞÂŒ"|£mݛӓò0 @@9PeqñpʶaE’o߬U}ãtlüçšS Ls¯|eDEŸHFj…,{,…3ÛÀ{ùò ×ö<´0ª ô¦E¾—È´Å+±ÌfÖÞÄä×BnbÐòWn©ö™™*ùÞf”>X˜1o‡‡yL^­= ASò8¶;×gI,H8\n¬¦@Ûö=»vÊrÞèk2­ÛAw¦r¢XòŒ‡:æÆ[21¾¬Œ Œ‰’nƒõá(ð…øÃ 7š`–¡££_¨¾‰ŒUÕªÞÝ~s[‰_¼Ûb“_s—WŠi‹¥¼’V½8Yqm™ÃÒ,Ât°g¡ݧSŽÕ¿Ò1E‹¤tÚq¥'ŽÖëà‡nùG ïË …¦Ã;Í…¨Õ¯‘[:é5åe,oï1á±´åŽaaý…Õ˜óãÓ„ÂâiÿƒŸ¯nd<ÞÝÑ,5ÆÆÁ1<^¯^íÒèÒ¬¹7UQq¸?ëºVöæádBj©zB²­/Ä'‘‰–šZÿă„XOà#‹À5kllXçO •LK ~§=›`›ÙíïÅ)D::Se¸81OÉ ½ž¢(¤ÆiËò¨¡c‘DåN>ëßU®É'¡ÎæÅ†!6LI+ælÃÏÅ£¡-.“0‹ÒG9{MÕ“ŽÎeV—mwýÝÈîp©‚•$ 4h‘ƒïج^OÄùä— N-z÷üGßx5䦓j³o„}>Óobù]‰)Èɉkm{OwxÄ%© ƒ ff’vŽ–tm›3?DH•U±˜LHË ŠSw¥g.Cýò¥Œq‡æk“ÉúVíÛçf0K£¹£/VýIÅ…:3Ê ¶Þ^ÒS)¤}7¾=zx{MTç~B19U£ºUžòè4!öÛ@|ëâ„>órWè™í¼lqo‹ãkSSKÇésۄƘ©±qºÁ`Öùžs–:|ÓMFª:KŽ‘„Ä}tâ§@‚ÅÚÝ"ã?ò^²° ‹åÉs­ b@ÏÐ`¦âo%Pz1ÛB,óžËxü³ˆ³žŸÐ,Ý‘Ö;ê$AŒ¦“Ø†Ç…Ï Ùß0/õÅ Öù?`eý H6ÜPÍÊçÄ"Õêm Ðruæ‹°÷ÇHã^#ÌG‡]\ÌÜvª¿™ÿTf§Þ¹9èmìëW2¸õä.+¨œ÷ïÈ•“éb]ûÆø½ÕGÛioî \ä,Q}}!!!€µJ[öއ‹«5ô½8¨äªl•;c{ȽŽú‘×ÉêqÊäysB(pç™÷&ÚN›+§t¾íÃ59\±¿ïf5‰ ÜJ°>?tŽ…x&SD¯ˆVY~•øÑ£ðwï¤êiýfŸÁ3É­QBÒMG'swL[:;ðñ"ŠÏõh½7lÆéÎŽa)ó!rß”ñ'oP@¾ üÑr¨ÙÁVVÌþ!!Tææ.—m ¡¤žðZZÄå–+_…Ñß^ªJ·x¤ù77+Aåh[ÜÞæâ½ÿBcþý¸4•ÌCš|øÇ{Ëždv Ç#¨ÌC8(©®«ÃV§«wèµµ`Ƙ9¦ÑöùÐÓåÉèèp×Öðá¥Åœ`³²«4ûCp¤vç”1[\Í:›ßº\O{™š5 SÃkÎÙâ¡ð¶o ¶EÇý Ò¢ÔEßÏÅ-ï ´¶þÔ¯ÌC°¹·~ù—9‰^ŒžÓ†¡¥¼fÊ/7—@ rXo𨏯,—Ó‰—U¡©³‹¿^‚#%Õad2¡3G?¿þÉ ¼Ø—/Ôllóú³Ë‰Ü5¨ªy<Í–•&#ÚŸ[D¬N`…3eݧ”**æV­œ.Õ¤/JýPˆ%j°ÒŒ‡¸Â dxÝê1¾Ï³áî·ÖZ\öø!2¬÷¸T»èþâãG(ÄOuwi1åäò4ªŒ)5£¤×æ_ßXyóîq™n>ÈNäwj(7nÉɇz˪‘ÍûsÊ1¡ðIBŠX8ïêÐȯ[ß_)î  F«¾"“ŽYéì5~ëææáÓà¬ÞØåbîÀ’8ô2(r‚ G››x»Ó²0jjó`LDŸŸøF[Ý…³PcT–šŠõ:¼;™; mlÖÓsŠ.÷UéÅÂîà::»9ðo(Ö7lW÷ð½Ífîk_QS§±|×Ò Å7ôW+%pœÿÉü †Êp±ÞÇétݱ¢˜ÒÜr``Îá±ö"½UCO`$Ʀ12R Æ!v{âEñ¦ é“™ ‚fç5{c|fQɦ^§¯0-]¡o“&Yä›~zïHnccOƒ+ó±OZ)7¨)Ú”Éï•Û ¶&ñ´4¿u Ë©ïʯJ»¸ð |«î=Zš‚€ÃHzºñ‡ê,ïS5µç*hxyÅž #—Pׯééƒ39/¯·õ_µW7nüDD¡kæ^‚>HÝTi —ììg FHÔeßð¹óÿŠü-¢¤ÄèÄûDÓbzq1©÷u6HEZòÇä$ïìÂqoê—œßW®WæPOç°?y5)Æ‹ ùÓ&¯ÍÖâTV"Àô‹{+žaاFâu#osö©Ù%.xt”Í×7‡œÿ DÍäÔB缜š÷î„8\c£)Æ¥BÐï?Œ½è®™eeሸÛR›‰±_ÙþÉšíÝ‘ìœèÆ?Ùò3y¶q*éH¡¿0>š˜Õ°*B¼£o‡3J®gÝæ"&¡¡lV›¿åÉ,P੯B¢£¥†R¿…ô„DîÃ&Ç%¨Sðò¾Íõf‘””¤š¯ýŽ"-ý]ãÓßv0 ,û'…èED¾è-Ö 'ò·r˜ã ;r½r—¨ ~“ó§Ávääz…?0l‰¾Vg=p$?2²]ÌÊJvKå;Çù¶,H6l55vä±Ò»ŒÊÔ©dßR‡×çÅê>™c(ˆ¸(›ýÓJ¶Âß-Û_Âí>ºÐql()rr jŸ !ûÇç×/‚ÏŸß­î›2pw?^Î ¿‚¥^}zĶ 8yQû}n=¤Êä¥Õñ²Ýß<ò³Ç•Ì ¶Ã@{ÊËGqnŸ¼’±yGR_·g G´ëAËöÌ9|W‰Šw ltâåÇÀ´…é/ÞÁŒJ{Dù“ÌîUQÑ{_ÌQRÚ”ioÖï’(†VãæÖyò·l§Â01O6&, ²›æŸA@‰óñzé¸zu˜»;UŒ¸´È@±»ûN°­ðÎrË[ñÁx)fÖ ï4mYa»oܬUhp(‹}SÅ‚»“…Ä8 Þ’1%¹ŒI·ƒLÏÞY?bhLF‰¾¹"#£;¹@òªs¤¥§çÚ)ãIMc`6UaÒ²äpwïf̹»×B¼|ubˆŠ4:)"‚”Õ9Ú5o:å»Qœ¾zk¸Ž­3ëó<ÂRÄϱñjk‹ ‰¸N ¤¤9-ßlÿ –¥<÷ c“–€‰I M`ŠAÇŠ ½¸p£¥ýÝ1YêW†ç3IyõdülÀw_óùŠ `¤|ߪ{`K:ˆü‚-(Aœ¥gÚøâ|µ÷áÖgEÜܪÁ­»ûËë;YªÌúzŒ}ã<ª¯æ%tì|oÞ³"Z?Ü~®?!***­p:U(”Qšš¯ìÁ í rß /PQµ^ÛÁ…‘A»¹ïËr¶¥ %YBÆMÁ¹•eNÑ~ÅZ%ðmï­XQn`ã¯îÑLvå“áŸi²fï€êwõKÿ´Öå:N€……»¶«è™Ê}ùŠ˜§Ö;%¥EEuK*;5•¼Ù-ÉÌ=:^"DMhéèÚǕ﯄ɢ&&;DÍŸB‘Ów>Üî £EþøT‰ m„*©†îË–Ìs­«¢nk}´H)b¢¢ìäfj3Îw±0@TU?ÕúÇÅ…g¹€¤­æoÀñÁMÄCÍ#Y¤•ÀØÒžî¹üQ¨ÓD=¹:²µ£a;;œF{åŽÙ c+ë ¬½Ýøøf{SÒwšëobgÔ° ’ýÜ”DÝæ¼apÑð~wvwgUÜ@ÚˆŸôÚóyÊ@y)DóýõýÚþÔ›ÝݽÛ3} $qflEÚ-\o~Àx>s}1ÂF˜'šÛ“ZêârQQ³a¶XTQ±²:ß¶übZlN©b&ïôv†×ÉY9õA)G–}“ôÐjC?5õL•oþÝ,ïRò||dnîØê¢@€QÇÑéŽtsä'UgÏsggPÏŸ¼úàˆ/@I‹K> °¶ç¿@»ë­[Ʋü¬òwþ¤{’俯Õ[­%.OשIããËp¿Ç ³Âò­¾]yZÝvÀßéˆ$ó· x™‘×—QzÈa¾ÈËj2?J,GÔÀeµÊÿK×FybX£ªBKv¢n>ÝÝŸ!Ê1WõŠ×óg`gçûjËh>f« ~Xäñ€"SÂÆ.Jx(ö™ûµ®ëŽß˜Ãi)¬×¯ S­ö§7’¬iu§º·w½Ž^ÃPµ{zjÑ7fœx ±Ž‹óì ¯ÇÆ¾0F\4Ꞙ£¤fáç|»¾“~ßÿY7 ̾†–E矋jvêxJ^Ò‘tšõõÜzWNŒ³3›ò:Nïª*XT´½“Í~Й䜜7¬¤jÒ¢"_¼{edÒLé0c†ßæ©èŒãó¹D#¼È¬¬ZÑÿ© F´=Ovc%?\6Å¢½‹âÕÈÏRÜASïúzÎÙºT€e ‰zíåÊk§3yÞ­žÞbT¢£µ œbÒ¡ÌjL†î’Ãc“ õÅ ñÉ˜Ä }}oªXE&Ñ Ïv%²ßÏî Ö?IE‹ÐÛë©×á:”ÆóãÈŠ@ÔÂâµ·wô+ä1 V2š¾uôÞÊwö …ü¬Îι\,ri.ä <Üøý,–ÔôgÕÈŒ‡‹ÐÑÓDÈs8@'J…f¯á°²c뉥›ffÞüz_XêáúxÇòêiÓd@ Fº|¯³óA«ë£÷ŸÕ×C»ß[tTs¯p(¥XZs›.V/„0ÀOyßÒRFPÄ)(öܨéß~ðÆA¸>÷é@—Á¯®ãì DçËÌ${D…~}º±‡ÍY'=Û²7-Ê õO.¨±šü„õéhOb­ÚEÙj*ŸÕ{¯ ºŠ‰1cØþ[BxÔr`Z ÷ûG>JT±¬Rÿ#ÖáB]{YJ§¼À%EñTyÕ‚?‹áP¹Û­U£p”Zàk°HHÈ$äG‚$MÀP€’»,Šäqý‹Èßÿ¯õZç篦µ4SJ¯J¯Ž¯»ž¯!ÄŠGÀ¡£TË’Æuúj¡ö–œÙ*m–Zcè(ð7‘"³t)ê¨<46ú '‚¤§sED]VeôË—>ÉEÅdÂHÀïÈæ¡“W…0É¥:!9^ßîNä.­¡uŠBx¸|Óûñþ û²Ndq57w˧_‡÷O±¶ÃܨÂKbå•ãþ5öœ©dô€.¹J¨%§~i#¥ËG«¦€!Ъ1 È#îÞ8§ÈÕ>Áú x*ÀüxÌQ²ãñ7›ø¤ð{~fØ:|$pã'uã-Ê…Ÿ‡ÈdçÉýqvw#tökq|üüÍN:]À¹*–hÇ 'ã² ÐÏÚ¥åæsÌ…QOâãEÁˆ@†åÓ§eðC\¨ýÃbW@vpÆìTî5êJŠQ6’Ïìz…ÿ .uº4wtc‰œÅ÷w¤¦ÿþ-ƒDX ‡JúËÛË‹Ä9óû”Ê{G"WdÀ&M©:5=Û`K^OþUQG'L¿ëê£p6ñ¯ÏI4WÅsKÍøþ0ˆÃ:˜Yöd¹;w”ëíßAœÏ=1dl¶à+oüb%A@¥ë²Aðxd6Å  #`žÈr{Mí›UR‚-N åób±~M #g<„²^HëÔÉ ÿ1|ªX\o[æÓ¼¡¤Ì¨•ÕŸêÖööWX8ñ™¢ˆTG¥0 Åþ»€j1S¨{ñÃI.Ëbr’ùäîŠcXM ËùDDei•þþIqäò|ÂaÑ‘Ây< Š ›Õ¥¦3ØËø»{KR^¢8Tµq7Jß­ŠNâ: ÑÕµ®8€I Kkl¿Yà2 hQåGüûÉr‘,.%Ͷܣ ±ú#ã0‘ÐO¨Žed ¡’ö¶ƒ¨ÿÙíÓ·‘íhÉÀÅ…§¿)ùž*ö« àr¼6LïÞU[ïOÊœ­Jsÿ3áUéžüAy²ØÖëÝHQG ƒ[ÔÔÒ£–ô´´ø==Ø»£™¹o>}+DfeeˆN-½þ‰Ü„)?šíñGYH°?–­!“â LôX£=+ðNqqDÝ=-‚ ¦C3&lvÖ WÝ»Cï£l);˜,ôo˜9g:d­mN"þIá,tLy¾×…gh îî&Þ¼—\\jŠJdÿ‹Nœ>–í:F,çÓâç?–ýÜÑ`kË âDhÕÙ™i*á8R!D$òv:5%%€‹€‹Å# Á¿@íÀãkÄ‹àˆ ŠK~½†ˆ"ç2ˆ>”._¬‘ÃC”uúïPˆ“@°IDÄcŸ- 8ØTDÌ@\~ì8µòÚ#ê¯ËUùy³òuÊúúøÃ©…)9Éìƒ8’§<'äÝè?Ü2˜›×®/·líÛ}dE)%'‡ž•]…Fx«¨¨Ô/$%E8<™ÓúåK{<S £/aa÷GgÔŋը§Ð§¦>ó:c€™G[l!„Ì _à ô '²‡¯ù98…ý:³Å‹3ʘ<”c_ï]^}í4÷Îð`ùPÊ‘kÅühÑô6‚¤ÔßÛû G5DYóåzN7"ÆŠTYAß%òÔ+â`€È€~±ÛËñx@_ Û°ïªww¬å‹)¶IÖ©vNh®tÙêjG!žÀrê‘U`ï?*ùG§M. {ƒŸ×£™XǰڥÊJz_ÿhêÚ_BÔ= gÊùµxœÃDÊùW‚3¿h™ÊÄ®Š! :»@øú\áµÐ,Ú‡‡sIJª¿ô„js:g>¹ññ3}“:äOµ2í ÷Pv&¯ xí÷_«¨hž®g&òÎ%—ÐÓlÉ‚ÓqfÈj—( d•©§ð7ñ5É´îºÙê=X¾ù;ä‰)fcÄ(cNÿØ%ü„Á€Ì5î]„‰üëç£ÃØXòwïˆF³‰ "JÃtùÄ«\«*sCŠBOe÷n®î!æö<åÔPÇÍV‚×—ò+Ÿ»‹[BеŽõá=?Ÿ!®_tšÈuU±ëä,éøZ’7c“’pbãé8Câ^¢F 991C†D¿•Cm{«û5¤%‹Z ð 9¤òÞ¾Já\ñMHHYz8 ÀµX„ï©2ù›»®§èùÔœ+dm#ž–†FYÉáeQQ½Ó @* ¿Ð f98¸ÌöËÎÞ3ÉÆìî>ƒ˜“·ÅŠ5K |P9„#”óˆÄÿNÿ±:˜A~Z¨£‚ÝÑœ@ãû_«mÞE…O®‘!Žô ¥ ¶^ÞËÄUÆQ”ª†6ö|²®f«ÄÏònݘ€å꼎Sz.í…¬A@}Èû`g¯ àP32u|Fwn’?½³ÊäõÉ |ïázAÁj†t•FÝð뮀kÊ–bøL@æè®kÛXÒñ\£ÄèÅÄWZ?1›Å3¨•àÉ9r…Q³°à69,y•Yr 5êýIŽ*¯Ëåy'$<`}ïðª¹Yèt]C«ú«÷éÆ#)]uu„’RpÑ%äðßOV_¦<Ð×Oá¿'áh’ˆL4x¯ÙîŸJô”WŽÒGAÍ@ctç—Qêïgav­eÞUBMÔôK±ºë::õuµ?¦ÑÑRݽÆ>=ˆô¹YY• ŠŠÈ00¾~­.fõéÎaUQý4A\ûÑÚšê³vÄ›·Åh··F Šß`hòu¹Æ¢/ð)´íÙq)Ä„Cp¤ê=Ü£TdXyl6ÑŽ[CÚÛí•®Gi9®€ùDÈã™·‡¦Ëå¾£†/|Å\ÏÉBÏÖ Sdb""0‰Ü5L½á‡ QޝÇúÓ¶ÿŽº×û^ê ~$‚l¿8D2…„”˜].^¼‚ýå.÷§²ãÛ·[½÷10Ècç™oà„…‘ÿ³x4=Íý…½FLIMÍÏ󹲘±qÊìÞ©{BO÷ýQVwvP:-óŽ´¡ï¾"èRc`ÌfÐ"”~âôûù³QA÷»†ÚÌ<ÈOV™ÞBeÖµ­K`EELMIìì§V× ¼‚0KG+ ß7”ÓÐ¥Þ† þú¸ì#»€ Z Oµ™ºm$JŸ 0¢½¿/X¬õ„P‚flô²0³ˆ€á^eâk<±Z…B–8g磋x²üáÑp¬ÙàQÐoi”‚âj‚>eºdÿ= ˆ)¥ˆˆßSy?ø€!UüD:_cæ5˜°3F® ˆ£»”ÌšÆÊ¾¦ól«+£hÞÿhžÀµ³­„zë vÐ4j¹êîfç—ÿX’Qx–J}\ÆÏNágp»†Be¨â ˪ÑáÿÀ¢Œq°ž–®¢âˆwÐiil–Ãíïw>¹ŽþZ°)‚a²µ5UïvK…Bâö ÏP¢¾hl¶lʶ]µ2=}ÑXË=A*" JouÏ©~ VHlHœÏLÙDd‚:Âj›iá<=ÄIC6vllÆÓC_#ËúÄLx0'fÎUV…¬m`ú›Í$xçó„âO@*Ùv7.àY2²B§+ªùÚ¸aÛ´‰Ìkh¿>ßb¿„Ý#3jÝàæäÜÒù“ïú IžÌžÏŠG•å$¶Ìë~E--ÈêV*×)ÞÞÞ­•s/pˆ¾qq(K™è?ú6 ·‡&C‡º¤31j?>~ùg%"§°dó 99dÕ8Ï“3# ))ú1¯ûSÿÙŽð«¨È[ͻޤ„l;1é< €bÂFêuQ(«DÌ}edÄ.Yä‡'}ˆMÉ̺x{·‘  øÅSTtËû§RMa}=gÁ¯m!EE’ùyb˜â“½ý¢LÀÑv»oš85^¿6GÂ+',åÝÚêâà  èÊç¦^º¡?M==ÑlKTüÖ·gÒ%ZöÈêeÃa²¨]èEø¬rÙPƒ¹YÎnÂV\¼õM¬®×Äì3@4ÕÅNo±HøC; •å!K#?“YûP6z“„9Z1EA‡Y\.¾Ž‹¼X^‘”~Ñ/ £ÁâSàrþݧ2ª¨ÚãWdj¦¡¹×>]›·2™p7£(,¿g¡®©}jJª[üM ˆë½qOÉ"ɘPûbÙüq^ö‘øF)ҘϽÏT¬Ü:õço½ªPßçÙÊXýäåå‘aaÓ€)Y)°–hLM%¿8z¤±X¶óñó»âtïÛØ¸=qrzµ1] rË.똖ÆÀü5òEÇ(ëÂBg+«Y”ßË=Z0—ÖàµAò¢.¥ñÐ ,^¶47˜ŒÀÈ PPˆìz¸õa6†¢¥‹Â«¤ÓŸ/ÇçWçHËmoðÁö€ÙH*]>/³’‚R¿Ú<–¬nìÆ¥>VBVhSÆÇé›=Òüóå5ÁÀ ÿ¯+Èj*›ÈñøÖ}µ —ïpÚ‚áóPðgÈÂæ¡ó¶ €”Pv窷ã>+0%¬¯Ku÷Íì1acÇùkVP\|Ë=WEÖf`²QEå÷ñGaxBò– ŒÚÉ‚>m®<€ÕêËòÚTõô Vvõ÷cÅPkvü–pI‘üܰ¹Å㹂¥ÀÍ=á·L´Ó¡–<`~?“‘éþMÙÛ&Ç-.·tˆÇn¾Â®ð%µl%u~|rr& I×dq›Ç ÂÇ"+£ÉÁI+{¾à\iâò/A/—ÖÐ!•W°®¹Y ,uU™‹Š 5à4--âWªeªÿÞûF¶î£%ǵ5ôÐŒ :›9ežK½‘Ÿ®´t…ÿÜítª& Ya¯Ñãõlm<6ùWˆ#F…  ±D3íÿN(ûIîp÷ÓIj~S RÄòNKØø•ÎâbW&6g &½¹Exmß»ºÚmw¿`4ô¯_Ó9ùa¡³µvâó¾4žAÞ‚Í„,Ý6†›ËAFËî³siëƒYC¹þg]æ§9ëE<6NüÚP䩳³³DO4ãáê¨FQéÀ²&›-*µ’zÿlqÏÎÝ1cPŠØ ÂRÆ›Îè P_@_K…ðw²s³›š°,Á„QËñžMù÷vçÃÆU׈åרþ ÿXœâ//gZÙ6ùæä¤Ù½À™šú)¿MEF†xô7LLp²F§T}‚‚ò2n%çêÑv÷J{zà !!,¶Ä˜.OFI óó'ÙÉŠ(p`:ú€aqs’O*¬bÍÃxB«5Oú‘îy$îÈE~="pm½;*ÌëZ«³MšñÅg”Iµ@öaç*õñØ‹¬£×}¿ÐÓÓ÷nÈ[íObÒÒÑu±1*'›y‰_åñølµ%…öKW×W§å7‚ÆÈ*Èìì¹àVL4Î[8P”™Ù&Jå …tY~ìþh?Û²€=<Œ#´”P] «t¸äŠ chc0•F’þõÉ=7ñ5dssT5±1M éAO]†), z_ ^ Ûãáû¨«›¦"¤p¼ìi°Üì•Èi™1z‘°tÝ?l‚ÀÀWÃÊKꜛó.Á£ y«oÙ†: @K÷Ëû†Ïšý^¥‡Hø?´wQÄßQR–eÕ¾¹óÏô¢Ñ2¯¸Ox„©«¦¡áß@ºv±—¯ nÂnFÄb[(ó“õ zD_ø.qZc¼l)òº®H˜±Y`Whò¢OAÅyÏŠ8V¢‰ о}@ Èj!Cñt(¾-hdë6êøSô$uáÕá¹°ŽÎkÈŠ”Û-sAQtH2×: 5 = €I,,û9 Lß®Ç<š+í F¢}´·ø&&šÛÿòf1°*éAJ¹¸Þ“prcMDÂÿ™jBUôèH¦Dc-UMH^>ìȪ»÷ïÌÞlÛ êõ±x×´îßé“Õ¬KúèlôÝW‡u66Ö>™ÑÝmªÃÏ+¨¨ ˆ÷=~«¤knƉ†î!9Ò±zz#ñÏZ˜ìÖ$pS´´´ÂÿÛFg©ýhÎëÇâ óDNKöúˆˆ’5+'Ì=Ë-בi(¿~©iÔšã9Ÿ‘‹:†Nø©nÏ ýÛÍâZñz·ûë•>o§ò`Ô#““#¼½•J´Ø•¨SÐBCÚ µàáîïǨc~~8-õ.ìð~~F̜Ǹ¸Ò¡„3)[[×9‰ž9ÃvQÔÜøýÐ)® ;œ–"ìÈe@ÃųP»Ô dCOºg¸—— McùW,ü¤ ¶§F¯¦fgÒ’O;³»ß¹àOcbciò=õLòC û<¨ãì×!k†ëŸþŸ[~¯ÊOŽ´?@(ðƒ€±)Iß‚¶xohä×YœÏX|ýŸ$1˜I!ù²°PR"ƒY#;¢YB$Qx—ü3%ñ«tñËè˜r€  RêUÌ‚ÉnLF„ŠŒ1üÑ¡øhcª8 „¯ôùz‹Ë÷))|Æ*s`Qú"6 ç+š)Ȁ踺R@ÔOô^Ž'jµ8Ÿ£@V‹ê­·g+x—ÖAqÁX[·Á;::×7+–ƒB÷æ‡ßŸKr­ááyMÓèÚMôÄ8‚Le æóv/‰PPÛžùÀ\Rz‘mýäESn:õ›{äw"Ëd92æµ¢­Ý “Ôù¦÷ÿÝ %æ©*ÓÑ~…<ÆNFCó„[SYIGð«OàY¦c¶¢e%Àá’ª0žÑþMúÆ?îæ­FPDÏ@G±z!º—PEµ8”¹ü3O_eÒ=ÎVÏoWÏÿ¶U×|›@ª¨ø$jó¹;¼j2{¸+Þ»ÿmcÅþ²O`™(†æ“°x>ÅÒ:éÚ9]}#‰ …Å룥OrwÜõæ«1íX/Û᥌zä[ýU㪵l ò¾žx””—ÒTûü9H»éhuÅóåX™®ãÁÏ^€ú:u÷Bë‹ÙòÄ|ù‘Îrý^ˆ]CÄI·gGåæ&FG+?B3"†ŒL€6t츠ÕU,^w­ Ç¢¢`DÕ©éòÊqtÀ%sÊÊéõ\¢¢`"—`KHi {CYº€ÃÈ̽›†ÿdm ³¾¾Òl{SÒ âsLÝ:ã0¸§ë6õD–lp¢S8Ÿ\gÿY%݆7"£SYZ]P¦›ïÕ/“ä 2±}í$#wjÍÝ ˆZJ6LêùiÎÃCÑéNåê'ŽÛ¥ýë»O¡±Ïˆ’‡l­H‚6ô|-PF€+µ·T™eª¥iU¶éì ¡'K÷´aP+†ú 4—V­ïiéþ ADí•ÔÁ<ÕrqÌÙ-–È%høÕ‘ð2àLL‘H—•ßå»zÿþ-&`Ĺ”‹ývqí˜4 ½½&ÇËêå$cI¥Ù ±ŠŠŠáa}r® ‘·‡ªêg`iäx½ZZЯŽÓe0•Š€ÇupXˆŠQV1y(( õ=âOJß^ÚE?½PíæV\«¼ÜÔEJpðÀ«tyA æßÍîd/ˆ““Ç?]ÝŸè#y<Ýbuv> õ…WV˜*}6í _øýûdQïÕ$0þ¹Ï0(ªRÈÓ:¹Å‚EYôÚܬi”Þ<¬e22ìïãc}œrãÆÃÔ·Ö5ÁìR¿”É&aDªÉÆz.<’ÌÇŽ?«›_ÀÀ«1Jüs¨   ·\ß5£d„QB·brÎëñ޲òmÎpMh¬¤ž´âä¸Í‹ËéäÖ&‹çÓ›¡$V()© ¦há@…÷Û#¨¢¢ÎD<Ä :í¢}1w`É“ð%Ъ¡Y^ÇrªŸœ‚3¨‡\ó}0á½ø”OÞ”‚Â`f~÷³Œ–¦g¬¨1,æòxxÄ˨ŠrÍÛÃõ÷SJ^ò9ñòê0ØdÌá$ßÌ”j1ȳìúÃ?ntÁ‘dçŸAv²,Wâ¡ ’zM ÆoUøU+’zg4~òõmö÷ñß‚´B<:o@þ´±†÷¶ŒŒÊ(R¨§or ‚„Dfs;¾½;‡rØOßûÃ|MLšG2ðóáQׯ=~iç½-FÓÑ Ñ·XŽk]¥œì `¹ÙË99ÓB23«Äûh,Û\ :ÞoH2N—9zI𢡤£Ãm°uýÜx(™!]?9É À>3àÐë~r¾»»}§‹¯Ø²cýlÑ%ä">ƒ[7Öž Zï<ŽØ«ÖcƃG]ñ=8l+ÌÈø‚…«þQ³jh¨ú_šÍÝö×RÑi–ð®:_+£.>ZÑ}AAŒ.zI´§'„‰Ù4v×rÝ4F¥ÉqEÔÎlj¥ä¿þ×YIß±àˆ·pf ƒC‡D@• >>‚ÇÄ”ìQ9^Öz¯8Ìëpðdâ0g™î3U¬*|ee:)ä<ÅÁw£0:>IDÄÎ&déæSyûÎùÚª„Z¾|$àl«3á#â²"%öÜxãü{µÜùÜI&e:¡w—r&G²OAIé…î •Rú*jV|` }e #W‡màºzZÌÛabcOÍ6ÚCß:FZ½~m^_Oä¬Ûçîô¡ýHhÀ†P›Ý?IÆMu¼Õ×{“rÏF0æT©µm‡×§§ÒÙxõèM"‰} "™œZȲ\±€é’R{‰?±JÓ8¸_:î·=Îskk)_ÿŠŠ(b©•6úK'èlË|2ŸSz®ý…Sk~* ¤? {w‘*ÅWÙò ‚mßÀ@•Þ$Ê57Zu||ö‰‰v8‰ïÙÉ«^à2E3ëw’AaÍ×Yúü± i®skà¥lõˆ?ýHá«"@{×krÈÒT{û«‚‚jïe¦úF­ŽÙúµV’TjV÷{Lƒê,vóY1ãµ l>|=fÚP<}ï¥&í±ÚÒ YRì<@+\\½Q9Z˜_½*/ÿ6!+øÖÛþo*@ÙÌaW ~xl_ánÜô†‰xÌçÙâó¾õvlé]ì¾Ä{ß €"KñZ‚NÁÑTOÖË/+‹×x¤¶ÇÙpE~”'2^ˆ p_@=?œC!ÁnĘAv.!›ŸjCʼnùïù×ïãbU:§ÞžIý•é(¡¢éû¨5o1¯Æy»ÊTŠ?ݼ´·÷Ód-ÂŽ¿/^¼3_Ú L¦œˆ£hÝË“ dì 77"(P… œà·ízÌ #/z{ ˜Ù^p²ÿnÀà@-Ê˄¡oi)¡f‹Nñë—xfá‰ëUý81Â!äPú!q0˜PrvvÔ©½;HM×ÝÉêP‹9þ]$l–ƒ©e)yX´`1cö[Ħ”"…ï¯ '{ñ™Ü²©¤7¶¿ðº7Š­{ªw+’3 RS#ûwáÅJPôø`ÎätU‹ˆ/4ÙÃ|0>Š?8š‘9Ò¯PY>²5Q‰úÃ-Ãô¯K==hZ„¯3¿ð;»8c迎ݱiÆ%'×cÔwïfàõ¦UDY3†š¡Ó²M[LMm ÷­3ÿó’mØBárµ|.X!ß&ä&ïµ@!Æ)Š*¾/0€R`–UTT$Qοêš.Ý@Gkï¬ý^‡FòÓ ’Z=V…tã7ÿ¬ýv±8•·*$ &Īÿ»fèÅú†-Äåä@¹»ÛãšµÊËØ{gfÂjÕ>TgÒ|ðô,ÊÉyÝÙÅ“%``·§$Ü¼Øø¿¶½éb½Þ{å74}?** ˆ}ª]xnÖÜ,è³ÈÛää|ç‚+‹ä¨'ä$ñÅqv±ZX{³óË=qSëw6€ÚÄÆª@ŽQ!‘” šìPØÏ³0ã!™Ï2'?|’ðBÄý ¤Bþs+/ê¿[F¿%ÏoXÚð££ç3µHÄÄnÁdDE挛ô¦§SÿÒn‚UWW¯¯¯dä2ýòåËj1t†OZn5ã}›[ø! bjSh•¢!Œ}4%rhPEè¶çý7)'f·¸¯mèâ:;ØÝ+$ã¸BöGfí Æîú¶'yycM4]z.bjÊ_kŽ‘ÄúÝó«+dShÏ•´¬÷b¡H”A@ö€–^¹t=σ™¯)™Èç 4•ÁÇÇwº=ÛâLojS•”¤º¸œY[lø€Ç=©Pp­\ßÍ­h¨rOO_—?¿FAï&‹ ä‹1N缋m¥'°SVkLÌìqCb#ˆ¸:?"ä5ZPð`iƒ;#Ÿ­èò Ån5Îêhі׳5œí·28rö)°+€4ó›rϵ»ÿá\£ëµdç"6¨·R¯â '̦•|ÇùŸ6Ïñ@bãÞfäˆôF‡"nÈGŒ,¿Ðnr­WDWÚ›¯1Kä¹fv¹šìNá&f% ̰å×·ïÑУ¼Šè±°·2K— :þ{š:rH=(ˆ$EIÝ ’à$ ÄR2¢©@Pô]hˆM­7P<¶µ±h¸\.Уcl­OVÙØ,ŸvÞx>kÐÒ æ¼¥ýí•õƒJú Ânùì~<0Oöoät HmëƒDsµ>p,ÀÝ®»ÒC§£%Z ê}+dÈÚ ìå°Êà Ý #lÑ7ÉO¶ÆìF…@–y¤HÜ×ï+GЄ)¥«6ΫçtQTÅ€ËÍç¦`/{Ö¬œ Ç€E•]Sõù¢÷'ù™Œ—j£ªâÔÉ-”¨uoïÖþNZ6e×ÅÅ”™y÷p¸™=’hãoxy_ºßíŽû‹œŸ¹¨ÒT(“ºõƒ‹¦A´`g´×êÚ‹+59àÕÙ™Íèè×Lã@7AdÍŒŒ75fÄ,fÓøÀ±HGSUÛ£â!M.­ c‰zõmèïObÖ;O ™ÍzùÕŽ#Ô+m‰ÃɉY’é½÷ å’4Ú{)Ñ\lK¸/P"‰?!º§óóëkTnž©cªj†lŽÛذ¿Îâq$÷Å@9†ýv‘Å ›_DÔÈ;ë¤gâóõ…,_ÁY~ü¼È±X¿æѯž jê4ɬà7­Þ]kdŒGÈ2²M£ÄÁÝëVN'gYûm×gQ©©!™ÂŽk[ƒ”è"×îgçÒè˜1ÈÛ«ãÐê;yõe+hj"ã&PHHâˆPŒïÿŒ)©°L×õžx%èFR§Zó¶i”Ž˜Ó¢{®Ê¤Í•pÝŠ¨2«²£hÈ@®â^»žÂîX6»°,âYÞTÕî¢â¸ë“…\Ž¢‚‚GîžqÉ3[›x_—_ÇÆÅV²Ò¾å @‘ÚͤӪ1èêêÊ3ȤExz²´Ú‘ã®ÿŒ€%ê>~ŸËë)aw¨uµt¯¦¬ìSzQJK‹Ò½Ö,>¼MCNŽ Ä*H»ôHøÅ‹¿ûûÑo=º:Ï•ÆOr«>óKIѯ¸á)çÙ䉓‰]» -{gѲ™åýø6ÑØ5›¼¡]€(¡¢6 ‡9žÏZ×õ*pù¡DßÈ/_ûÔG ¡¨t¶{Á®žÒba©qÖA74`;Ý×Bøù£§‡ @]ðï‡%¸˜Åê×BUÆ_0ÒÞ10Œr³|Z´l›ÛØŸz³Ø|K€I­Áæ¡÷^†¨÷û—:n gX551ŸåOªª~FƒñkÛRhéè:Êõ» oUPPÕÜÒÂâp ¡ï¯æLd×GCƾ×÷5æ.ŠpÑïÁ:±…Ú+º#¼›ÿ(÷b‡C1AIÉ—¼:,\©Ð'N=«§Áí[ÓLêÞ%ïÆR«·6µ>ŠQã…Î+¿A…z©û–cˆŽ× /ÜlfÚíº «}ͪõþ<:<µÍèúŠI‡Rļ]7“þY),* cÂÛ³Gz:{ÁµÈËàäs5ä ¨ùã¬P3ùÁz?:ÚÛžaõg~£qʦ\}¬2vÑ«z¬ø6q-€‰“Õ(dKoÕ|Ù óêJ C“øò†¬ð „ïdL+8‡oÀªª¥ÌfÓ, v4ԲɾoÕ¹ïpÛ›† SÈXm*G—``‚ÁLÚ’QÛÚálfs˜«4:¹¾¨«ãœœœ<¹?n3\nv>9+úvt°³3S€M¸’Åást#’{ÕûãKViÏÚId”âÍÍ: ©Q©Oå R b©žÇVIbŠZ5ð v]ª•²µŸ¿az>¬*h«f+.y³c9Ççù’½¿¨Õ½i‚X,{Õ¦ÁÊѱ¯;se‹0-›jQÄ= r?”ƒÃ +Û¡d*gÕ¶/Ÿ%àÁOyX^™‚ìßFE%}‘ªÂU»ŸÈóÉj„%Àû­ÚGUUl—zPñBŸ^°à!ÝÜÝuŽŽ¢ó8twú!*jÞê^öú!âfäæú…ó¬%±z·•üHI!#ñëWøŠÇ=rȾ±ÂoEyyþ±±±L­¸PGË-!qoÕ;‰ oîôðøøÊÙÙùëXL2»õXßiSÏ]®;E^— x---oÃgf~ïHjÈ ÁØ^ °,–ËÍW޼ÿÎà’óºab`ÖmtøÄqy¸ÁÆ3Øþ¨ª‚R–aÿ7/ƒÁÈhÊ.`…–òöŸv|Ú¶¹…-— 9ôî9seÎs°ìŽ{¼7AŒ"(,-ýý«™£o#íRf ±$I]Ôi~`_ú¤øâÒR¡ËÓ]U­ùœÐÜÜœâé驊ôÖêªÂÎ9TA‡œrEE…Š“—Ñ·o’ßëOæl ++ß,-¥™.Ô–®Úþ)ˇEÂûX¡ñ.¸Ç@ñ%,R‡ù웛ŀ֋åœÊ¢ææÏ':–––¦7'kX¢Š“@ q%¬Ý¤+<~®u(«—éäJIIµî]gL×==.\½^7«ÿ¼ìè©¶ØJí¶L±cÙÏã G£¼¿/]àûªvôŠL ŠÖÑѱ±ëMñFjV–ÍÀï¯|—×+üäK–†o6„„4>þL‹‹›@:ß ª2­í¹úŠ„bÍû§Øæ›ÄÄp²G«J)uõ„àÀ@´"’§~% ÄÕÕU½"`½¼gÞ¿OœEK¡¾cËÍÍn~Ý5â¾+}\ªª­-KÌeõc|j*·³«‹.8«à5&µ †'é½R‰nÈN×L÷©q’¼$µÅ ª$ÿqÔyÝfZ›ãA½¬æ'Kœù+Ñ0Êbxý ³TÛ³MÌ"³l11¯ß׿ë#Ñâ{%Ôüürÿésbb‰X°/˜¼Mâ¾¾n»‡Ûþ¢çeÅþüžÄjò4ÊѽƕãWýX;yNòÁs†4‚+½ÍÖV ;ÎOÐiEt=°ËYœ L”ôûÛÁw)€N’ÿÎèÈò9²êŽæz¸—Úp´¾>ZRÕ¤ÌÞ[‹àA–~–Ñ2]T^ÏŸi D•ú@‘Òôä턈Qå~~ºGg–hHdd$ÐÉ/%:-w1×ï´ªáAÚwzà 2ÛïO–Y8žmök4;±@Þ$01ž“³Ž;ý-=ýݾ+]pg¥Ñàêö¶?)rFF¹“Þ0BF8ã‹’Ôh&ú¢Ñª-µ=«¨±É½‚y¤úþ°Z¯ð\KQµ8Ìì|¾³Øë0W£9뮨ÞCOæ[ i[©ÑrW/7M.péú¿Ç×÷äíŒÍÍÍ}}||ð¸¬2œN×ý®¬IIÓëú? Ÿä(^äý{Î Š|:]y›ó¸·ó+ÏO÷–ÖÀ¹íÿ¢Éïú{Ùܺá‡&DôÁF¤¾±Ì×éé¡ÁÊÚÝþï4öŠç³»ÿÎÖŽ„Üÿ1 5÷ª¡5‚;‡R¥ozèݺO5b–8=Ào?==‘ø ù• úÿ×dÝ“… ¢iÜ+Á77±Í¸ñh}~wuÄI[uq ³Œ ªš˜ö+5¦Š¦xY {åÒª©Ä‰<÷¯àÉNMÖBTE,£¬Ý[r 2— ¦:;É»Œ<“¶âÄKÕLšˆ“ª´44¾ÎÜߥûùù]Ù'ò»7*ÐÇ‘SSSwŸ RæÏ¼جõDk)¤]¸>ÀƦÅÉÌœ±ŸÿE„•£‘[æ^ŸIò¾î~{„ÓbŸŸ v³ŠŸAÅYتTž…ôb¯O·YƒÝLÇvû Ž[êãdÙáo3Ý¡‡ûöÚÁE1ýkQmœâF{D4LêWs>DK·‰ÞÑÕ¨fÃJPšÜ¹€èma/ЉÁ$§ ¨ùù˜”Á¦G̘{Mlz•öÃ…ºš¿§ë0ŒŸë¡ü„¼àPIÚWVHu=n©zÉSÊ®–)È0÷|ˆy;§§ ¤ˆE•îæ÷+h9œB>c'+;{¬XÉÉÕu§ÑÍØß&´¼¢¢ów”®Á\¥ÂÃý1báÆnhkk@˜µî…û‡°ÃJŠ|÷ :DJÊ)b‰ãrËçà,áešo%—ñYþ.f“Ë-®]33¸èèè\¶ÛHþÈ„þ ¶˜VœmΧÁs†¾¯?4æåå-×뀀„Ç E!Þ !ÙÁ|ÍÛ>µ_Ÿ“Êìc,¶ê޶tõLLê,qM‰÷‹çvL°1lÐf| ­Q9/jP9' -î.ÿdd¼éîî~CM +))‰O™gØ!¶¶ûÕ§ÁöZ’XÔäâ’Ï<ôÞÀtêö8¤,X•N©ï >ýïÙ1Ú¾$.äÁ ì¿´uƒ©ÿíVl,ÖÚÎ ‘oii)·]Óí™QëÙf-ˆ¬¼œœ@Ål±× At˜fQ7·f@"êe?òa ÁW¸ß;¬mn椽$·åi(emZ9'¯{þE-—šX¶5Ïð¢{µ¿NçöÇw )Ž9.£~­¬­uö‹úÅÃm¦,§ðcêòßîn_¶Ýž·ºß‹\îO‰aP‰´¸\vƒ]}É"{¹±P—Ž;<œ-ª1û²0ûKȆÐã|øÁfüΟt[‚…­)1‡¶F¦—W ß³ ûD¹¿I‡oN[îÅpêr “šlûÚªm½ Qm$«CÝð·A9‡bH½‚müie»Á™O|E×U»Í³7båçϸC7rÿ ñÂ{]ÈF<›2õbÙè$$ˆ"3¿ž”ÄûqúüÊvÿ:üNb Qxª—®6¿ ˆXÃå§;ÊüusAŒaMÕttt'——~ÙÙ©©©«;;““**ô¡„œ(àaekÛ5œÆsÎKly8_S RˆqpxXár¹o0ír`Åà•¡!:1qX&MçÄ„ò¾Œ1í‚`,iÓØB›§Àâ⢞¥eD{ûG¨Å‹?D×$¼ØžtÄýâ.A"úxw©ÿíÛkNN΃¥&\(…SÕû£¥¦ÃOçºAò=µßwN§ÔÓñw¾ýM“"µ/›¯@{òxMl½?©íësôžñsìuy¦y@…„¤¤O\\Ã$KÁ,˜p¢ÞRqôk ­ …*7W –Š¢±tʰ@V$$íMä6úf¿Xp²†³Võ¨r§BªR*—5t_ißÖ` ä}¾ÓxpMF~ö€nB>‘èÕ«W›sÓàVwöàÍS_†U¸”óåD“Þ­îï#Ó7;7§¿?Y8ß0ˆR&ÁMKÃãå.Ç#"ã¡ÄÌCq]y¢û›SCćÝ>tõõÁhïêÂdùò ê#¨¨îªE*ý§·`@^£ð¿*ĨÍËüî?óq¤ƒ_ªÕp܆*èÒ(¶Ïåg@{¬ ¢¨Ø *éøHnØ¿Ûuˆ3õ9€Ø.û},¹T.¯óÇ›S(mܾ¤´íß4`ÿ|ÿ¥USˆ8ñärP±T‹}m?yëÙÖµ*UG{£L­8lÝ~ËHNäÃÆS”Ào;);•X4¡ÀêêêÏò Ã…ÇÃ#Ü:¶ÿG5Ú¸«4SN¿wÓnñd#û:¹Ksú‡ó“]¤T+$í‚Τ=Þ,5U¬§9ö#>ÅsKÁÚ¸·H<ï½oïðyé1B©Jþ¤Ð¿™ÙÙÛcGð?ylþFM¤÷¥½aÉg)ÈŒ`µí„bÕl°¡áþã¿ÝŒyô#[«Æt~¥X½,<•”œžž~ðy§gnJÏÀ –‰]ñ×Ù~„×óe¶±±qCmœòJZº}³ÍÏ 60`>óåÒÞ/ÆóÌî¼ì‹Xé­Ý]¸f-ÌF‹ W)5Eµ<–?=¹JM¥¶'"o‰¡¦Æ[%5lCðvº@QøÞVE d]õ »Ù4’¢¢"šÐ¦ë­/­Šœ!¡ AŸšñû¯£oàÉÞø¶R®âÕÉòC²,Êœ-ä‡è ÿäÙñxù­vj±O ­‰óeßÇ'Ôß.—n5ûÌþϺãiØÎO ýR~}B~EôO²œ’891k¶’’¤–ïÅÝܨèÀÒÚ~Ã^yȪªw¿¯uhÀeÒY6MË9œtbbâ*)ÿ»[jTAÏÄçzÕý;ŠÂzg˜x±Á®µµuw©‰óîbÏBlõêðŸO¬!ÍÊk¹5‡AEMž•zwä½;SFêí톉铘ˆGIEeäÄ ,ã=ëýCIVvúÆÉš•Û¥*Å?c÷V£+€³o<730((%j90ØÅ?û{n¸ ßd“£¥L"ó P áQQàpÞi@½¹>Í CV+Ó ëîúÉÇ3co•š„¢:÷ä˳™N‡° Egv>û"“Ê…~ttôu¶œl¾ö{™°Æ—þèùd^ÎI‘^†üÖ¦7ñï4½SÏ2*Ò¨1Å]¨ŽpvvÓtMÀ¹ºÕ„y„áiŠþºÔ>©X„3[ÑÙì|Ÿ.”ƒ­³ÞóJå—9=}N M¶R®ä»FËõ…U~}Æo{8Cü±Øa»3Ü“#sòtœ­Z¬ö¡vÄÚX-O .2„³Œ´¦ºº{½'¤À'ÒàÁb¦‡‡G¢€'?äã¿hu[Ýj¿oî8’“ìÿi}_çÁvnÂFSüïti#Á9 öµQé+ÈÚJãÒ%ºž/aÝPXYs'­A›ciõƒ_cÎë %Êâ1¯ÚNt ºÙØ/+C}Œ£¿Â Éôà ‡¼ùYÛS°®ç#û`eC)¤ÔÌ“Ø ¼Ø¡ú14ò=ÁØR¡ÇU^^^¾Ð[yBÝRÓ°I§nUF¡HE˜’JÛW,&öz]Å\§- IVaT×éVÉïé1l㣲²²Ýñ2ñR“c7>^)M£Ý-T±ZZ»¼Àaïq›ôý>¿¹FÈ9ùm?¤.ëG¿'%Å(ib¢sKä=»\ì*îr-¹BcbÂ,;$¼ÀÀŽmŽðÏj¿¯‚DȽ¼¼ü<¹4zûwÙãµß?™/5b›ÖhíÓVÆEgõîOqZ={SËÞ!LÅÅsc´tŒ)îËp_Ÿq«•pù—µš¾úôɬp+pÖêéF§'å€ÌQßkpÕ<¹Ã¿´_Z=ÜȲYPkâ’âê4]«-}ŒgÑb¹°PA‘/×£·Þ}­o6øºCàá¤K¨ÿkxØHßb8bI¦§%J*þ]PÙŒqW¦†Fˆ¥¾ÈÒ¾ˆÑü„îž×‹ì÷ë%ˆƒCÛï.=7zB¾ ‘,ŠìÓöl_•À õ…€£ÄŸ©­ÄooÂq½ÝËš™%j{ˆÚW§ÏO2z´0†‡ñ 7¦jÛAF|¡¶Íàxù¹üûˆ¸äú¦¦ÞÀ«¤ãE±TKÈN¸ÝrȤàxeZOÐmq&š°¢µ~]89Óò.V÷¦ÈÞëgñüd;Ìé)ÝÍQ GhBÍ–X®R¶dÌÜÍn6½FyFÐp ‚°§ÏW× B¦ŠáÀÀg<Ül0–hX#yy½+Ñüc ëicC UûƒývÞ  –4mÉyt´Tǘꞩb›d”¬ºª®6þøÂÚï ãˬµØxùp7VhûUbÝŠ)IÄɉ':i:4”Fëíø{c¸‰‚Z¿)f7BHaGJL¤eþ wuÜæCc)Mܧ÷ ög7(ó7·&L’ªPzFFá?~ðVE™.¹•ŽFºÛÍ´r;EÆ) Dðê¡Oú6šápx&ìÒHp8ÏÐ>U<¦$NŽ?[Êvw¡éÅñ}ßàÑ…4–ñ;ÈØ¹   €wºÄD¬‡O+˜4ß,Ÿ7%¡¯Ž'ìy}N×Eßã0òvø¤` 6Ó‰ä&s”zQË.žLÈ7u r"0QnB·Þ[¶ÞÿzÙèø,1þîr_Õ·ì8!‘ßî—®'å7÷ÈÔTÿ¶çVŸí?f)«Ð >nVFáq¼ËÒbwµÛ¯Æ @ñ“&¢$÷mLÀbñ™Ùͽ­ûá–ïYå'oøíYîÊ~C_øÒ­Çý®8¡7÷¤ãFl>ïm·- ¥"YšØ/ð‹ñþ$J½Í™ÃA=­=V‹ÃÙ&C(A ºpGÏh&˜!8¨ÕŒã–h¶K…‹{ÑÃÑL3…bö¯ËŸ“«Ö‘`BTßú!úùnÜ]ñÄ–obúömHL f†}¿ ÃO¶?¡²>ww7kWHå*m¤{’W›@eƒV/Ûx¸½o /¸æ©Ý9ÿ´ 5«ŒÝH±ÊÆîðî…ñŸyŸ¦‰ÜðìP5„žŸŠ×ÖQ•óœ$ˆÅ''_==-×{>ãoͽµ'Ò\h¼äMf³ÔÁ¥’hVV*P‹ü¾Mp Ä–‚°?ýê¤UÃâôÄûZGr§¶¬ù"–v£ÛÈ,‡„ÉþðîQùo|«`dlì½5(lýçMŠ©Lj=ŒlÊôÇ”ciâ€À/û)–óësU"%:îBû´.4ïÏè@6zÉ ¸ã"â\D/%ÄÆÑÇu¡ 8A8yX6ÞÇdÃúbÙîh¨‚GQ¿B#Ù44WúÞ`©Qùäôµi‘Ô¾„Š/9Ezg—!™Áz¹m>)ÿã…6¨T{~³³N±LºEí#<ÎgñƒfªôÈ ü„U&Yµ{&\ÏwžƒàPŸºä죸Ðû}|ý‘n¡qIºÏw$•úÆYX¬w—ÝéèÕª{*«ÏidA¥ëêÊ&qsŸTúÂßÃáĸúÆy"ƒñ5A¼ÞœCTÂ!ænŽ`øÔÚ *þXÔO~ÙXn l¯*“ãŽ.ÃæßKËÍfhUŠÕtö%D\6ö&^ÍÎa7kØßœ\šï¬0³°t$³Óأ˧ñ¹¢>=œ>^ÿtÚI³Qê##O"äoÆ÷N¦B¯C°0{×X 'ײ¹¹¦Ë®½ ž<ʆÝDŽ’ïn哊_LjÏ¿Îü"))•–ir ÆQœÿ&¤rWnÿɉƅ:Üpn,"7í&Ø ý.ÓÙJ#®ƒ§4EAJÊ'’Üîî„z—KýÚˆÜüâÓûã|`/‹Bœ\ÞÒíQ=Ü™É,àú—~‘$ç ÷([רþ+œâ ™­‡ÙšAT99ŽÝQ}t¹´F {JúœÇB>Š»«G¤ÁøK?¿¤ÉŠÀ )—FXú8‚øx˜{à‹šæ› Œw¶í^Á¥Ó™ó¶px¸1c`(}ð®~¼œžaªê:ôóO½m–š>·=1M—‘Bã&T*‰Բؓ!Æb4 Æët’>iý…Œù„’^½V8[ì ‚÷ðïÔö2+J+œÏ™ÙÌÔ^ò¹2vÅ3˜ä†‹XJæ*uX¾„ÈœfU£Ao¨3ËZ€`–·”¤äËкÜÖg›¥ïÎU[$³Çôú£ ¦’…¶&Ô½¼hÊmwDßiM^]Á´uG†&(}óîáAC•ú“Ìžh]+—Í&·Ç³;³étÉûèÞ¹—ŒŒµx,ic$4ºÒ2nA߆³=ŸÅˆ1÷àCT]±€œ\>bd‹}ïJjª©Ó¦yDÃMýÉ— ÿüôV£Êíîê;-Hî–¸Ô‡" £ošåU¨¤­/âèwŠ_ðº\@YÅ¥OçotbAx(Ç4ì«›ÈcÏ q) ™ÿ:ùÀÏ&{ÌÛ+ƒómVxø]Ÿþ"zûÔ: ‹`Pg b „I)…óÙç¹¹™?–!ªC¯B*‚ !”x+–mÄ=åúfU‹i›{O&_W<ÈÈÉêÝ_E}.É›Œ ¼˜.xöÍ;=-øÏ¡B®’˜ÀFÄüwâg?kÜ1RS“øÀÁ­WuŒ”ùAB5èÓ‹FQý‘ŸÌ…Ù¿Å€‚ñöð¥P ‡}N¸2- ß›í‡›­÷z«µÖIkJ2ßàÇvç/_ÎÎþöf!w×§·‡¢o&áã÷ŒDBÏTFD±(†Š(ÃémOêYn·ã³U&x©© ¢K·0ªaoESIëM—übæT‡,l×ÖNÏ6q"59¬ %Óäæ1[­š&¦¤œXê ñSjªeå¶·éó7Ziô=1…ðº/‚˜‡"Ù‰ï{^ò¹¸ŒJÃã­g 'm B§˜^[í°s¤i%¬·¥ÁL¸ŽC-¸–¤ »~>¢Ž±"¡ÓĉœÜiûÃ|ÕÎ{É£ËsQ~ôäKNîøz‚Û%ïY3,WüwÇ6 «ÍoI "rp(Mx™K/JÒ‚ŽŽ._îñˆæq*(ÂÍâlÃÓÝK½z½"/I,ªäùhçáA8Z¶jc ®øÿ(ÇrËU|d 0 3á<½?D6G ™æ`žƒ#2ëO·1šýq}k˜¾Ë-Àïêbßü2‰­zþ£©Zÿ8jÜÞ^/äªÀAûr‹¾F‹ @¦nt|xšü÷‹=”rM£Ó,ÏNùK÷÷%Ü/¡…Z{C1“ÂÝTP¶ÿü ·ÿûÔëõR=7\Ù2}žOAí¿£t¥ˆý~¯–kéIþF‡P ¤B 1J÷ïææ›1'½Y NäoÁ4Ú}•ÝDÅæ &E5wüA˜5N1·oÜÛñ¬å›ÍÇ\<°½#e0CâN®ÞÙÇà7ÊçòNx©ñX¯Ãû'¬«³ýßiûÕ­K²ÞÐ9ßÙÙWÿ뇈š!è#ÅkýÂÀ㣚ڶFC¥ÀÝÅ·Àµ®ýåæG%ñ÷Z’’LcmÏRæs68Åê¨í?^¤,úýæ[ãÒÛ8¨Üq®‘þ¯ë÷Ç|c†î…hQ/è5+_=Ý¿@c Çvç(†[ªBBBB´LgðéÙÂÚ'Ô`Ýúí[[ˆµÕõ\êMf÷”$Η`аBc7åZd‚âï7F«Í-¢ £zËî¯ÝïJ>º¹MF… 9Ý´}±x1iŠìpLâ×hÿV Œ-Ö¿²ò½Z©î3goø’o¦pŠð,‚üÒÄ8¯{³ŸþuCàùˆ˜`ÇaQu|hä1 eav!!š[©¢P½ŒBŸ{×wCE3 /[Ýyz•K™õÅ",üè”y!r,!Í›“.úĶu“ŠÁ¡bÌn7ZŸíHcë ®U§wðð`8]ve<9ÿd©î8”Ú€h¿_Ÿ¡Z|.ô¥\£ä=»™ZûO¾l=SShÔxDW@>ÕK+»3–0óue5fpÙvßwáÃ`ƨTu‚žl åJ C–œ™õ…*ŠŠôXÌW‡ßì¤Ã?Üæë/³[ìOrÙÑ ú(6ÕVqîÚÓÓr±íéŸ Çp¹´˜^@¶€®ù˜¨¢c“× ÌÎF®µ$ â¶ÿ<ÚPÕ¦¸¤V[qñ×KæÝa¶ÔqÞ(7\ô ›»I\¦<,"Ô‹§MÌî.4rÒ"ѺÏÄÕ–ÏüÖ iöçƒL÷èX¸-§§}ª¹á…Rqk¤¼æš´r?›€¦&±š0A“Ít“Þ‹Ü§× .ª¢–Ñ«½Ýëäìí%¬ÁTц’ø¸kÿ7<.f4³™ŸB€ ùÎ&,ûü.D– ÁQMÅ´!>~›[‚R@b‡’kàl·í6¾ì‹PöÇ,¬uø<1ýoh¾&ÿäo3ÀºêïŸÔOf÷õœÀé®\:’kîsùÕz>c§ò{Ñ)ÏKCT „¸o¬æÃ…²ºLÊ4úDžßjÓq-a“(¨ƒÚ7s®ð($°ò#°¼“jL®¢§…‘–fՉދeCÂÇðÅ~®ßá­srõ¤XõËæ²s>Ñݵ¥¯óùa7ò§‡szjùåà Ì…,õ2ùœpŠ· >AAÐ}pÒĹ Œ‡faäGfDƒ’‹D¢*f>šÑ«ÑÚL:]öLè~ÿë£Áºt!Å^!'I¦û=L`ˆtÇÑ’ÇÍ.ÅÿTŠÄ? cW…ADì¢Wk¡/‚[-k³0ÜèÍ„”`pè/ ÄÂL_„‰ˆêR§‹UÎ?ÒÛ}ãäꉠ»Â摇ƒCíæræ'¤²þ³"6üéSÅ: Ÿ‹—dŒ“2FÖz;˜F3ÀȵæøáoÕI:'lÑÁ³dö”-V€³œ\½c”ñ–ùT‹f!ÊYG{ZÔ›\D¯Âã¯VÒèñ¨ëäô®à4U‘ Õb¸1Уâð!)¶%~ye15S&ÐùãEñX‘*ñPêœ(˜ÆËÛ_xl,y2sÁÀ‹ÄpËyñ¹ÆІ Ì–çYY¯¥µ¿ Q}åx-5[c†5>>>ök ús&Í…ê=R'×g¦Ö‚ ÕÕ2}3³BL½Hå5ÔG!¡5F*–œÅáD (ò#=@1B–šÄ×–AiC^¼äJk’ß§…qx~b½8hÀ²ßçIg^zœÎøÆöž ±’‰&:‰íá%8éAŒª7_‚wjè?ÔÿBú«Z<Ÿ­œßÃåÆõy_¢’â_³íp`|sçÜZ†ÈkåBCtôã¹ /°Z5⢳žMÔ^“­{âAf?å²Â1¾®±±”۹짇Ӿ¾~|‘Ür­`<à-W~}¦+ÑbGÛÞ&ÂÜîûâ…»ÕÖ€ð«WDQà§üüøÚï.ó!ÐÌG$7JÔ˜^Epµ¹yI¹õ†Bµ…6Üã}™À6%ñè°êj;$ÒV”âÎN¿fs3Z¬‡«P F©øj¨ŒÖâ‹ËgŒ»ËOA ¶×ú@²yfAÛ ½Ø*r¿¿Ë4J¬PÞ§½N¼ÁhqaÐ*íÈ“Vl¬ö›Œºðÿß—;™ìSy¿±A+ç™û5¹ ßJ¨ i”d! ÅjÔ—ãBê+°³í÷³\c…Ïó§ïÑR9Û, u4™™-mµ„Ì;ó zYËcX§=%¬ùê[ìµµçõÓUjÀ一¨€q_,lªhÒÍUÏ|„àúßT¯w:bi>„ÙÖ†œ¡x(’’g­Çmé[ƒ¨Ìfj¸вÿ´ë Ы00uzÿmú‹œž;zà×çëtû"6¸>°D…FcM{q8ryúþ#Ù+ÈÒ-0Ãþ Ã¡†wªEqã +zÕ7©‹˜fv¿“ËÉ´å§™ºùÛÐ4?‡9ÞáA3ÕÿDÁÁkóFP9™M†unnØDÿ$cƒBöÅ´‹È~W´£Cwã¸í8ãS¯{2­}ŽýÑ"H¾s•j)RÝØì±Q+ŠÍdzévFùÂÁáîœáöïàSžüÊ  [ÐŒm<èÉÇåWÜg^DEɃ:- $Þ?}½ ·ÒúV£býmóõOP.’zÜæòL—Þ¡|Žã–«m}æE%ß¾;Æ,ÿ—XдÏî7úØ}x~L½:Ä]NÓ(¤ÀIãaÊüTGus1ñG-x"ðL¡±S9s T÷>*Ãi Èù¯]l%Å¿î"³YòãBãê‚DèrPpà…V®ÔÖh¾¼ðPRnPÐsï;ˆù~D݈ ˆ6º¿œy©Ñr÷ Ô¯±úŠ”/$Á°ÿ\”|_0Ep°àH5¨±v²fe¾âñ‚ÕÄÁ?.N‘*Qb¥\CÔ¹èóJ“ã=d¡˜˜û]÷ŠçJ·RºÐ›7«ÌþÈ÷ÄËËÈnÎ-M”¿5DÄø{Ʋ9Ñðœ0V ¥ÓËÇÑ_Ú|‚¶[ZÊ.þ€q¾CÚ>]ºƒŽ}‰Tf†§þKwÎÅñ¸‰4ý“ G;P¯jG%>§jÙ»—À…÷°Ç» ‹‹‹û }—!à§QµÍš…Ï€ØS¢éš¡fVî|žDÎ7MÌ‹‡¢¬Œ ¡oã?½©–¬®ør€Ûü®ÕGþ‰ }+¬‡~€óŸ}"§%Çõ¿MTa1–y{˜Æ¦ Ø—®¢W¥[›­MǽEPèX<ŸÒ¹¬×qjÍo ¶·Ë¼êë¿ á&¾a¶z“ÌYFe­D>ðŽTE,é}< ì½=Í•²©Åyy·ÚìÌððP…KD´™XPn±ìŠIcA~•ä!aí×dcåå/ k"?è&íΉü àî0Ü]«Ú¡Áã©U*]˜*VGomÕ5¸:Xš­=äeÔi.{l Güömož¥‰¨5ÊÃ1Fûä$ÛÍmi@CñðÁз”½ƒP…uVèNt›Ë¿Ž‘Aœ/}A gz‡7 ½*·ñŸy ëñƒõ|&æ%‚ð^&¬ÿ,^¼SAß{aöãäòûë˜ÏáÛÛRn'‚[nuø„„¨PåuL­{14¯wç§Hw†—­“²Å-34«Ò+ô»¾ÝÜ»RÐ~ECTùb¡ë Žlçóôe¹‚)üt) †è†0‹E'_`‘á_Ôhù!›r»;e†ŸÌ^”un¯$6UôA¨}dæÇÛ3#îáÔþ[ ÑýüɨPgÑãVw½) ù÷|¸ÈÈ`P ×AEK|odï¬ñŒòh.—Zá×˶‚_wE@"ÐÆ›‹ˆô”B’¾þ”ô+4½ê°ÉÐró­ÄÎ_Šõú«JÕ).–÷gS¢˜ÔÕ^Jý2¢[—¼¡ºž$]n‘_“¡áÝàòßíj›/px›Ð£í%aPɰ¸ØIÏäe óq¹DP*‘‚ì3Õ¾T×V.œÜ]ñ¬¹B)êe8ò“ªŒŸ²ô³3‘lò˜ÆìËm¼·jn~g[[<  ¨ê?Þâ(hÀñQï¬\—ÝÛ—¯·Pk«‰€±·gš“““i»ÓSïPº»=ðÞx¦ì9„ZÖØp0žMèË}ƒ`®ÒPFœþ»ëã¶dC2©lôѯ:KNßzCÓD+=ȈÁ$O?Ý3½^ñh"†zŸú ±™ûûýzÄÁ!µh5’/Z"Û7³ZR²ÏÍÞˆ¸ä!xèØÉÿlAÏ~quˆ³ì^çÖºô6Þ;ðÑh¦ —íö¯Ú¿h™ {å>×[‘BÊL(>ÏÚÖ%: éÏvé`·ívOø¿{ñ¶ãN‰/70ÞžZ<&ŠÆ{{Ý=¹Y†}=Í”%ð¼n7Dò?)?Æ<–a£Ÿ¾±o<…È7à9åï{©\Œ8ú8áÒ¿vK"±ïÔÆ>Iʪf:o†…XÛð S®Rš8aT ¼Ççf¼$áaõ•u·Ë)úÅúÌû‰ ‚¯IIt@ö®LÔ§Šâžû§^¬.·ä¨ôË%œV¢ éuúêqY1t²yÃ}÷ÛQ' .:7:«±w\œsÔ6y4¦ãõÀlÃîÖ€f×$Û_Í_ /ŸÎLþN|}¥VÆÿ¢†{çí tý­ÃÞÁ„*.­ÉÞ£¥ìÕƒÏÔ3¬ûÀÍùú/î5 —íp…ýê/†ãå[é[ëÂT(VƒIû•xÐCïòv£fãl+ A§«t žø `âp +C•”Æ„¡@} ;¡ßLØÛ]ºçìî¡Ú©'BïW†ìlôôpteL aÅ!NÊ}ÙTV)5-[°JúÙ‚›Â‘ÖÿþóISeåû¾ý©—Á¼pèQŸ>¬ôe™ª6™#ª9uïš'ut¡?B¼:¤Ã*ku³··o¿P#Š4žærI¿¾;f9Zwlyhöη½ÃgÆ®qù%Ü/£{Ñ„¤$Œ\éOo€ºá0]m'ˆ‰`T/K-52–WTø eþ¾‚rƒˆò†šúÞÄãH4•øÉЧdŠ)¡¯l9¹…§šJ,yäÚ ô²ÌŸÍš5cÕŠ§ >Íä~<Ô"¸5 êh¬ª·*ysO:\# %ã÷6÷í &z¿à=‡£ áÇ»ã/6¨?|@Ž Ù3þÜ`³eM7‡›®1;× )—»£NnO ÅrÓ’š=ìí¡aS¨’R†Ê!âÂ1øÔ« ·f:€„ CÎ÷nÖÌ·{ùÇ€ì !»Ö4ɳêú °[âÈ„“ß¼3çž.ÁÄaXþ™¼O2hÊÙxxQ{èµîôÜʳUø9ZbròÇL…UÈžö\¥G½•>Áˆñ›qå4nö€ «W~›²e}Œ)îë¥~ÃÏ­Z„%KZ¢Úíþû2g„¬Æ²|œžRýlÉß[€a†l4åÉ.½3YØ5Ø÷w½þ¹ºÙ¿ 9lÇÎÎ.Øs³RËekLßÜ"°µáI«³MJ·³þ&ͧíÂBúT>˜ˇómJšgËd ‰It§]¨?g«¿áY6ŠPb8ï•‚üËý^¢©e²]¾¯¿W§5)ݶuÆ¡€c}j R±Âñ]<¾F™«¼êíkÒô<.÷;ˆ´ª¶|ö¨X|ì¯ôÍÛ²õ[>,rì¯6—Å꺼”ªòb†«ˆù‰PtW.o[Í©>húýøAÁ="(’c9ôG0«îÍ[fË—Á!™Âƒ©ý)ÖÏÄzÆy¾ÑSØPPDö³àµ= Ö ñø›?HÅ23\¸èJëOäeÞ<¹ÊÅo‹! 9H_.ÐY³á‘;þ ²¶ø;*`a…Ü< ùðžvcc°“t ¶hXlð²)Ó?” ož`±hôÇÔ훇{5§ò¹¢º^}ž.428ÛWû Éxda«½q;™¤u¯`ìï!T¨èØ|¨.•?(…le¯Ö×m sJff¥2€ºÚ½¼>È ˜™ )Ðrrrú›9s}˜Ûe ÚªD‹9¾ÈVH êª =»Åý"ñ‹˜hƒÞ …ÂñL•äön/¹´Eëí!ÇD–lL©„ÚIEB€Q>°ì½?ù „“—G­P89Ûö,7ÿ|>R,!¯Þ~O1[Kïx™¥¹Ñ[Â+«¾.G}}}=2^­¾é†Ï9úGd$³ùœ : Ë)Ô¹*ž,Ù”¬ØÏÙè»c†ìË¡/ ¸xÚ‰‰¹'ýJKU3çAܾ{÷Î=¦@œ‚Âúê@³Ðð÷ðTñ³~O0á×ñî×i<êý×çÓ% ~ÕlìþH……UïXXèÀ_Miã”EÔ«©åYY•‹ø!LÓê.C‡‡«?0Œ“MxÖŠcc¥ Ÿ;Øx&›=¶:WeÂméx}TœÈmϹì>ƒò©É寃·“ÞöÐ#Ô~W\Ã>޾¦ãÖÇT?"RèÂÂB`%F›èèèÎÍ^C•{>Ÿ¹gžï*òjÕ]ÄÄ {<5`îOO¦= ýù£oØÅ”h§‡¢[jؾwðŽ6Llu¾†9Lèñåæáüa„âœc}]Ç Ó—¢@9Ÿs(»¹ýÕZ™ÛíYjq¼Ü<9}èO>Wƒ‰{5ókïêè{™vÓÖõQËñš: Ú]‹ðå³lã?6~Ãݧdh$$á³³³äfÏ‹ âðHÍÞcÙ"5¦F+ivÈᤞ?ü‘Óôõ3ïy±`’Ù¾e;…¢>·d‹Gd©•jÑêò?Û¶â5Îøüš¯qvD‹þ™€ õ†‹KcòË.RËå÷tô-*œµµµ›õ¦œp¥M.~7¿2ë–ã àœaMQ‘ÿ<*; °Ñÿóè‡ Qýï÷) ß©ý÷ûQæÀàV*LÖ™&,”®]]¥Ð^¯´)|ÿ­Ï“£W² +rWÊuÇxqwx¹"¯î)ÞJ¸é×COoãàà $þ†ü5Ö—ÏÛ3*TÒð`ì·Y2Iïw—[\ý?éøú¶OLTÑlK&,(bÍöaD‘ý^LMåRÌ¢¤„ƒùP»uÝÒ¹Aå¡_¼Xe2’þQƒöw«€ñž¯¿?9%%˜mŸ¸8l77·êR.+(†Oµï‚Ç·°`®*D¾À¿¿6¿Oûº_P0üû­{Ù‰“dŽ®F y—ËíþLª´´t}Cƒþñr Ô"Õbh("bbëãe>P®, ´›8JJKÛ<Üf+(„y Ø~äæR©•‡rš’*ÓbqÙlÂÓ«ùŽŽ*ü¿Þ¢`ïø¿ß¢@)«´Õ8B‹…p°ÜBXc:åÝÒ ÉI•Çÿ—Û&ßÝ{X B·?=Þ³x<8Õ75uÍÍáŸoÿþú•juo"¿¼¶Ö?77WÇRܸÁèÏwbË+¿²ºÇ?nsúÏâ"6ñÚº) –+•Fˆ °444¯`!Oêé_UÅ:÷6`k0Á,Aõß{jLêïnnÞPQQõÙWyƆÿâøâQv°ÒFjaaQ^W'®§§Wû}Û÷Ž]d›……åVgynNóv£ ¯Ë…D‰V©ëù÷Ú/ýŠ5¦ªŽÇ:›ß¬OV×¶·ó´{ûû%‘ð˜?*U(ùT'Ëð‰C˜§ôS¨l1Ô²`„q8-—±ê,WpÀÜb5´¤½ìð ÉÉ¡¬p>7VÌ“Iòn&‚'û¥ÓB¾´Vù÷³Xj _[®·I¬&Û#Ph’Ù1gÊtq˜tqH=n29¾'_U¤^¥Ó)çRË&~ª³‚|Aþ^¨œoš~·ßâzýKBNnš‘ƒ\«Î‚Áœ™Y¡D»Ií¸Ž¢j±r;nÇ^7122Òl%aÆa 4jš/ 0ô“ŒL(†Q[‚I÷W†}ÁÝÝ"æsï_|%EIML%ÿewÆxä'C£ÝyVV–ˆ†F¢•£#nWêˆué~ïB3JãÝCämË{›M tRR¦xFíä­* „{§”k>ô-ÚÄú5ÁUFFÆÎ•]JÄ01 Œêˆg½Ål.‡ ÿÏMC—gD ²F¿²—¨¬‰Â¯¯¯Æï³¶v"Y7„ówj|N'áÉ|µJ‡ÏõâˆQÄ$ä´JÌÒ_¼aÔnÌy|<˜«Ê‚ܨÐg3ï 2!9w‰óŸsg``}§U-Qߨ<˜À„Hæ»;žrsÜö|áÁó~ÁLÇyÙí€Ïqç…'EAlÑ zFF9øÓ"Ï?G×3 =@ôªÛHÿ½ëp»^.Õ~㻜¶»Çï à` ¡/î–X—§Ñ=ôäiÛF?r0Pˆ;ãÞª+äJaÛíO¾vÎôÅ*óx¼›OÇÄÄ«1Sw»š3Ñh°1Šß™)P|Ù^Ìã£Z¬&{ÿš ²ª½Û×Òõ=ÿíœÉ?c2S¤ŠˆJÊ?ùôsâ “˜8 ÒUõH£¾`Ïk`$ÀèâíO—Bb2'77Ó|®Ò¥…ø­ú/ß?„2ÛiÒÝ¢M¦›§O™†˜®+lkk+P·> 9Õϳ^áÄ<û›”ù%Î[ýÜž%t[æZJÿ¯÷1Bn‰©§“"x÷I“󑯱R¤U™®´ºgHÉ ÂȳƒÿëíõÙÆôô499¹PÁ”i…Ó©b¶²¾‘ÿÍêKë³MÉCö5//¯,ࢲ z‚ n϶ w±A#:“”Ÿ—<–-ŽÈÃÄ”ZHHH¤?šª&ÂÄÃlçÒÕÃJ::Æ{X3.ÝÝxªH5ËfkrGx(‹PNNÎWR׉”6PBÀàÁÃÁÁ­­®¾ƒQ3âj»2ò}®/‚jîÉ XwAsq›ÁäO?‡†óÿ>¡¦V"ì~ß>ê/ez+ÑM.F@J¦_XXØÉÕÎéé)ŒM­ÿ$í±knADøM‰|ol¡M«œø5ÿ‹kZ›'+klwä&‹ÕQãèU¡¡›1¿/Ôþ™Ùúaùw¾Æ êøîwàÙàà "QjÙÖù¼ ‚hø¹óï Ls¸ MìÿHVÂeïÿÍ-‚"•F´÷¡àõþÁŸ­P¨Òÿ×{ç”úÈ£K›¯ðIII_Ol¥CZ «¢!08¦pòEಘ ‡C­BC´½°æ«$£ÁxlÃä:Ú…»êj`ÞɳֻY‹ÿóà@òßÇðBÿ}â H–ÿ~?çü‚çÇx¡LHøuvu冓¿™šÀ õ±Pº ´XJâc„RFt‰IÈÙ/?¹/¤ @‰õ,‹ ‰ã`Y»9™Záåà˜þú´ýa­>T Ô{øèôúz. f’ÄÂRqô0ˆˆˆ /dïßc€LŒãö×ip:Åv"È‘PŠX´Œ6NªúûB¼;)úVŠXvÇ?°¦hÎÅÿJIY9*2ò=RRJJWo¯Ø>žˆ?„çED¾`95ûf ûœ·µIûýÓ3›Z?Ûÿ@ÿ¿FÖÿÿ/üÿþh}Ñ„öÑÀ·¯žî'Ð Ówl|à8;Pœp„ÿÏ^ HJ5¦[úY¿ é`ŠTßê¾sþgbi=ÿ‰qŸÉš¿pÎŒÙ*ô«kŠexãh×Wô¨€4¶P»ÉEÞ–ˆ.íÛº¥QiË¿­ÛòƒdÂ{‰\)ÍŒoÉÌìžhDž†[ÉÿͦH/ðK†Ó–2ÕLaÓS®¥9bh ÖF=,!EìHø<%¸7ääK((ñÜÐ{™««zvÇËÚ ©!HuøÏcóÿ­rýR‡ “© AüBQQqw¥Í3s>²ËáߨƒLšbEEUÕàu%“nk÷ÉZ×ï“^jr77/¹:ŒDsrqÁâݳá <û7’‘!‘¬b\ü±Q_(¾ðf¾¾¾« –”WVzGDD\¾„CÉÊ,ŠÎ*߸ž¥éöO/lº@,EE)ªàqZä]ƒÒxëßÉe*è]-¨ã?Çâvc•“—gJªÛäÀüß+WW×`AîŸÿo÷¯«”jaC­îîº^m5¾ƒ‚ø©¾ˆ€¦&žÔ´4Ëe^ài¡¡~ò»ßy.™I¨|#ê;]Ù;Ë ¦R6ä¨ÑD¨ýÞ5ð‹i~6|°r°Ó‚A_Sûcíl`Và´ùžÃF ³UÓÍâ÷EtÌÔôùo¾ç}Ó¬¢¬Í(Ƙ«bŠçãZ«³cô`¶v¶x6áú~Λ Øã[w : _D¸KpM>Ë»ÁqÀ“[V\ u¨PPPT”ÅPz‘Ü.Í:e¼$EÅŪJJã…ç}ªŠŠ™ÉÉÎ-:Äün³ŒçN¼ŽÇ?¥¤¤ªAQ¿¿ñ³u~»yêd·5€=55µ7š)Œë³½m ¬~E_c´ÝÓƒs©fõ—f`Ö¤¢åçJ'ô>ð6Žk—ð…®Ü[mþFoq¹,Rv­ù(Ãõ£òÎz)­n%´‘ÜNÐõ`Iw¿J’”`fL¬®®ž5:¬ð¼¿*µnøl¼Xo ùê=tX8<;?ÿÌ­ 3ÞA……­mUÔäÖ_ Tá!Îv¹ù®Áù†žÄ‘¯J AWciëBYŒßÄBýxRÔÑùì^qé_@3ªµD(”…™™‚+nça-¡Ã•%:ר’§ïQé*+®.Ÿ^€æßõãÇ¿€nc¹¯Úð™‘ÏýNEVV8×é³­A bµôžA^ðcP!_°¡”î¯'Y 7í¸/·téÉÈÁwª9-—‰:v]˜t¶ÉzÔJ Sà©ÿªûu¼õš¡Õ3øÆ©r$4¨c>à¥ÞiÆOW…ß›A¦ *- t§;H™ü¸¼µµõìßtÓw'Öþ}tÈ=Ú…”Ÿèê.Ÿr '½P/*ß “!+%#£¢¨¥õé•$°ë6MK [ÇoN7j¾/p4 U¾ÓnvRD èÒÑJˆÍ @%•І˜þoy™q;±7‘/ÜËðö­²‹K#&¦ª†FAåÊü£n>enn®_è–CSõ†XÓòß™2v›M AÅ ž¯,m¸ˆÀõ' •óï~BÖç5È®ö<õôôô*ÊÊ }zìNVoÝøyI´lDAšrÛíF.(á¶Ù 6ŠJÒÔÂbº;“JÒlæ×®®[æÇ7@Ò €‰þ2”îù¤ 䦨°pìO §ýj»—N¬p¯VƒMnQQÑÅÓ£«¤’ªjP6ûýI‹û“ÿ©\Ã:­Ò qí«_ð=²  Ö…œÔÊtJ¿>kÔ½“UQC¹×FHOK¹r¬FD1»óÙÉè‘eŸmïÁß«ß "$™¹»·PË$fÿYôÿ`çZ€ä(γˆSÁ‘¡*Ž\¡V˜»“owçý¸—§“îŒtw¾¯/=Ý=·#íÎ,3³w:'¤b0ŠíT°+$N 2â®X€ )œP2ªØ<‚!I!!˜ü=3{·w·ÒìܞĒäJ§íéîÿõýÿ÷ÌÝ}÷ß¶žØ÷½û?*mÚTøëËø½_{î×îÙ¿¿KQ¦)¥—Ü[ùÆžî‹ÿø>ÿ…Ùû߸™^¼³TbÑ`à7Þüú7¯ÛúÃC¼z&p÷ðƒR8ð‹è|_÷ù{hWGÇÁ‡^ z~ü¯ßúVwÿ¯ßøÔSOí½þú_¸¿ô÷{Gf¿r6µ¬ÙÞ§Á(û½~‚ý½+ùGõ~á'P½«Ü ³ï|äó¿ü§·Ýöä¡Ï¼ûçúöîwµÿî‘‘‘Î>åôï>“ª§ú®òuo=©¹þaëþýû~û×þùàáÇ?1:ºçìut|ü´þ#½ú;‡r7íý—×Íõ> ëîôÔÔ^0ÕíP‚NÎÎ8õà»ø¥½ÓvÁK_ÜôÓqP°çû7õ«Ïâw^=òøìº'O¡áß÷©Åâ“°âï§ßûÈÛ»÷Úk¦üƒ¿šþì¹çÂ?çžûÞºçÓìFgnºòÈö¿}Êäùçÿî‘×åGŽì¿ý—?zü+ß|ãµCÿ~ðÌϼòÔØ…cUÅûoœ^wÍIoü`îýŸÏ?rÉ—}ö¡·^þøŸ{ð×o¼kîµO︥ïâûî»ï±'ž`1ãÒ§?yõÕMLL¼Rø@ßì+_~úŽÂ?¾ýOn½u”ë—ÜU¼áÒïÜyçøù{º¿ÿÝßúÐÍ7ÝôÍKïŸ=ÜóÜð;÷|ø? Z{ ÊÙÛß>ð‹›^éAæÁ§}þ”§OâF~ìçþé m맯<òÊ÷Æ·ïÛ·oøºÿyø±w Ž^sïœuÑÞ (öÜu÷Ý/ÃÜS}ùK£_8ã¥Ê:vû€x.èìÙæý½ƒov>sGá™×_ú‡Ãï¼qh×Oÿû'7œz2[Ï{l~u¼cì–냞IŸ{`þ Xƒ÷`\<ÿ‘± N ã·ó÷Yèd!ä)°ŸknÛ¼o}ž>ù›ŒÝ¿û·^ØÖó³ýÑG¾Žµg ïåøÑëO¿äÛÖï=ûì³™3Ö›O~îçIöôøðulî¿ýòðÉ•uÃ=n™Ž.ç£,T…ºP†pñæÉðò½Ï¸‹ápÝÈÐè–¿8ï²k×ýý)ÙæL¥è®˜E;W Ê¥|­¡âzAAÇac+4xøQe™} šÂ‡ß…è;ÏK²¤ÈÊ:ATEIPTQ×ñ‚"‹ü:î}¥H>úYø|Ÿüôµelpêâñ!ŽY™Ÿ>oûÈ —ÉæóJƒùü–©-ÜEÃS;¶sBŽç¦<äøv`»*åóC£.S ‚JO>?77—›“r®7“ŸšÈïfs lp|™ êFæH@2ëûB‚»Ë%Çïo0`F4:ìK2 ÇúféåU{¶?3è:u‚ìÔ|…f8}ëÏtw îÅEäù4蟞ښÕ3ùF“\”ÞœtËØf©~ž‘¡~cqŒƒÊ´?3Cê¡ÀõêúmqwÏC;(IÏ |8"°ƒXt/.üà0Ìá!Ú=äÍs‹º¸Íã#=ÜbCù_~ù÷zçÌan«]¢Üµ¨GLûòÙõ}%ÛÙÅ=j2éç°ïg8–ú3~0_¢~‘Ò Ã ¶X[¬ãÛÇž] êïìD³(jÍp¾‡û3;/¯Ro>·ÓÏ ôå£;Í $óŽO1C¿|t¿š ö<Ó%óðAìYÎ&ÐÉ­€Dge³q9Ç `²²;K¹ hûtêæì€ƒK\r}J8sž‹IŸÅe³õó0¸"‘9yÀdã0-•ü ¶3ÓŸá3á÷ "$þêé "nàÂãB €„‚÷pŠZÙÝê°/ !‰ŠçîС’=ãdjÝã ³%jÁ >§Ðr4Š[`-Çœ>“ÚÙLçlT¾·dq–LX-›ÔË ˆ9%g€™àvD8”CÆóaÂå/úˆuŸõÃ.ÂŽ¡ö©C8f!êqä‘rÙmQ”Št¿4<…êz.!ßâE¤ ®¯Zªk-Ù~߀[%{ Ÿ Òݹ(X‡ì@¶)`ÍÐX̾<‚_ØhŽ ôó—Ì1AKL‚ÅiüfæAà‘[2×pàh¢ÉÀ«â êk¶šÐ¸êA\¡f· Þ.å’EàÆSõ嫥Ƞ5Ë.U¹¸DåbJ7æ$’q;ŒjFW3%×D¥¥³l‹Úš‘(úña©gû6¡YsAƪõjŒ«Ý]lÊ,WP–EΚN–·gã¥×_ÔM}ÞÁ „Ã/ FXâiË ãWJv`"o!PdËîÙªO½¬OKà½=ŽëÐÞ Sm$\¶ˆR¨^Q‰eØ·ªN¸^vv]ÉV€Q4;Òwv4JÑ;º;:ºz¯Zük‚ÁÄ5eâæ˜õ(|,ª¿¦µj¹ ‘u®¡eƒC}ð«l؃‚ê™Sqõþ„XÔåÞºA„Z¶C³eÊ ڰç¥/w±çÖXø¨ó2k-á>\F–É·%äKlÊxަ]t-,‚n %0¤Yrñ.@v Ø`;¸T%”;çòªôÂ0˞ɣo}ù°OŸé… ì²¥ ×òX÷™æ:ÃÒÓ|gÛmº¯ d“KÀE“]ÁرÚh)S Cu6b~T-¨‹ß­z˜ÆÁ)î“oÐ7WdYêñ‚Þù¸óšÒwgš¤íÎ4K7‚]e۱ܣ‘^ìÓl„äÈyŽâuÍP,Äœ‘˜GB+Ê€KÎs3ª9Ëõ¸¥®ÛSsÒ¥S5jš>»<¥âË"f¡ÀÔ“«83Ît=à&L6!Ò—Q"Q]ÙÖ]qe˲)3*A-%IS˜*.W5‹Û«ÈB6,œ_Dlñ`ÙŠ&sÀ\ú±.²;Ï…>5ä³AVzYÿO•ÂËšûÕ$‡‚T ê—u­ÛPºUIè$5,ҎΑ‘àˆ©XZpÉ<é¢Äx2T­ žéÞ™Ž!æ§+˜Q…1£F3ÌÈÇr؆Ü,p^DŽ»‚ Ãóðb· ˆðŸh$±Á•,KSÓj† Œmæ7‘¦‚rt¹Û¤nQT’¸q×4O é] @#èÝÏ'Ñj‡ý‡L²ÊkJ“jª›á(J’d=T’¤G&ÌCÜYÌ9£°×ÖQtŒ2,Bq)Le Š®Ë¦`Õ‡¸ Å3vYîôg 2é+е>3ž[­Ôx_mWlyjÈV‰õ+òâ8V·Qm[G8²Zî‰)/4Ž@ãv¨Ñ™ÜP¿ƒÒY™Ÿáfã¯á>„R¨ÕÛáü+&™X:ÎtƒÀ-‡ü¯X£é …mãã úqÏž…jrÐõjkâÊQ‘t¹õñ2¹XS(ÕÀQxf"ŽFØBæ W‰è-ß ä­)nŠm¼ø5U‡;“Pû £¢^ÜBª}l!!i‡á ;XS.J®óåôi…›¢+,8Y»“Y¨zÁ£ÉâíãŽÔåõHˆÔZQ’PD$¢#É$<æMUÓ¦– Ë–ˆEj©D“V…àE"™®XXi†c>.±V…s pÞä–ÂäØôÄàP_ÞL´oj4 €Ê–D$aK"!† [ ¢#E%,(š!Ék©ì&h­²™Š;'ÃÚª+š£þÿÚD#¤UL+FÐQÓe^¡šÅK2MY:oZÄUM±èZ¡ Z­at­¬V3-¹/¦†M]‘‰aðŠ„D¢ê–¥©¼ æÚºB2­Ö­àÌЀUˆu¶º9.ºájЭ:A#ót†wúû…®Mñ¸žxTŽ“R­˜LàUAu*S#Ëd^WMJd pBÖÒdMÐjÝdƒÃCƒç&†&§·O…f‹ À6ºÒvÎë¯uèål‹ëôØßÅyr¾wõ^•h°´Jl)Ò–4ôxAÕ ©<‚ÅNÖ-S[Eké’i­•Á&§ÇÇCsUÀ«øuZ ,tV§ÛÕÅ]™´WTÛqÞ€ A¨TQ&¼)ÅÒUl*Y†lÈ‚e²¤h—§Azžë…›¹•®n®Ðm$M)çVØy•í:\ÇÇüvvÈŽýj…ŽŽ±¢ÃE:kcƒ):ƒ.@W QÍo.Æü#SåQ r¤ê: ‚5U”¨ôÌÀ¶ñÂÐÄÄØDatl*ÔäØÄÔÐ& 7¾i!Õ|‰AyÍPA7Š ÃP©iŠ æ©ª òÚÂ7‘ÖZÁwdt$Š6•£Ã¶Ò•eû ~¸ÿ=BqX‘QÞyp&¥ÇŽnlï Jbà¶‚Y¢¼ «–@DQ# v2@‚jš`šõ˜=oó–Âøæ‰Í;†¦†&&S€6Z-Äv,[†‰habZ†©KÁšÖ¨†±¹*ж»ícÛ [6OmAÇ.XZ2rÉ| ]4>4þ—;&·Æ'†jWc“SÝTÊÉ)HZ‰[Ñ.2€Bš©àÌ+"1 A24E•®Ý¦}2™ó­›'§ S#;†Æ¦§ÂC‰ÁAá‘VAm·±ôÈ4 ºuç¦ÉûÒ‰±ŽTÊ˦y"™PÕàèÔ¤«CdÇÉ\×"¶Cç¢X–ÿÞ#3šS% LÀ†ÐL¦™šiáÒ 4ybPÌK%šH Ë4¨h˜Ñ‰Ì <–Û4!NæºMBJüÞC3šÓ-ó `Ch&ÓLÍ´piš¦ j`ÜÀDâ²BxJT†@›mº•Ìu š–GÛ h¦Órdnù2Í҉–‚4™|z¦NKñSÇX§"O,MÍDY›XLdèF›æœÉ\×@:çœ'¢Ò®ã{½–ÛÈž.ëæØ™/{ 11¶¦2A_È„÷!¸úŠm˦„Ceö°çZá#p\à6½‰,­"ô¦DZK§(–ª^1U$Šª¦QKÕ Aç)¦hé iOT's½˜ rB@½ 8§Ó}ºT‘¶–ç–À6™tzئ…RKÁ˜×4Óä± ˆ¨QIPäi¼®Q‹Z»ãD®ê¬"Å» ÀP»b7RU`Lôð5à% ^µ²<ä&’^EÈM‰§–ŽV%„u„%E"† ÖQ4Å´ E° C5·'v“¹^Ý‚…ü¶p:+¬ÀÔcææì È¶cç½ ÍÉ|¤GsZ„µ‚fU·LQF²¥‰P0*&ÕKF”X’iêT¶ÚÍÉ\ן³v™‚õN”|crIN§ù4ž¤ L°üweúL:=hÓ©ÐRH¬E]¤ž(‚Ž5)º"c^” íVE¾=A›Ìu ´±ñ Ç}G,lò“KiõÝŠm !²€LÝ”U˜š=ƒ†-^ÃPB ¢$mZÑ$s½Ü¶3'Ķܯdë¦ÕxKGÞˆê‚.©¦`b¤!jhª¡ À„ XöÔ6=òNäºþÈû/7›\oÒ©>Íz³FÕñ_͉¶c®–\'ò°Šƒë”jéàZáaFKÇ2Ñ5¥…h꼈)Ï|F§mš-%s]Ÿ-Áo`;3þ{õÔFãÙ5I ì¯GB`¨.>DEG†¥i"¤µÙ'빯‰’xRžÊ¬iS±hW=feÙyy"áUœ—§ÄhKþ ªP Q3CBŠÈ AåÙ!=ŢѦþÈu?„V;«õqö…&´ÖléùNI7‚ÌÒR4¬iŠ¿ˆ„(‚ˆ5¾MŸ}Kæzrü÷;r’q“Ö–­½Ø@, dÊf¸×G0{6Hå«’e¶ié—Ìu}ù¿hÞØìœÎ®-g§—ãd&V±™—°-½¨[‰07ô•-Kb~ i–¥K&VÅ6}§#‘ëzç¨ØN{ùÔHç5IMŠ%YUu¤‚$*Ž"c#|-oŠÇÐæÙ¨ÄŒ.{E%‘“U¼¢’ÒZñ6ËÔdªó2Ö,bê:¬z¤Ý‚@t*"‚ÚôaÑd®ë‹Áÿ÷¶£y[SΖ"i ËŇ]]Œ=èà¨.{z+™‘ô¾–ÿ-¥} –L6­¨È*ÖE–Q@…k!Óäõ6ÝNæzÑ×R0=Šv¨mCRþìBbb–Jóé ìq¡Ôœ;K=öüVäÿaïI{ÛF’ý¼ó+¸Yì›d_âtólzfŒq2IÆx¹`'»àBŸ6JÔ#©x<¿þU5Q¶вcK‰DÖÁî®®®î:ºŽ«WVý`¬!š $ªE°@˜@2ß®ð|δZETiטMuÔꇺõ‘MgÅÙÑn’Wå$z a}Ï,ηòÑÊ&דm?kD $¥i11ÆÄ‚S3áF‘JR—zx­òÙ†j½P7d;+ÄÈ$pöVéeõ¿,o>MóLÍd4ù ÕD΀çãɳ:ÍfÝ© |ZƒvItïd Ñ} ©Ý„¬FžÇbÏS ¨(“A—p×SQ¨å†*ÊýP_CÖ#q1²cÜ}9fÙ†!j‡®™è|Š*3X²>j¶H7¤vëëe¸¬Sv,’{?$ÃÉ}( ÞHSõ)‘\šP…Ò÷=7aèEŠÇ‘Aäo¨ðÑu—Ü%ÖñôÎ.Þõ´Wý„÷aqŽ0[KÂpJO3ç÷Ã×08CÙrk—Ô¿^@ÖPÿÕ2*RÊd@@,W†Æ. © ÓD„BP—lªSP?Ô]§wÄcÓ4êÿ›é¢þ`mµ8‚E¯\qQêbu·Üa µ†¶ˆ$I®ó,uƺ(ø©¶Þ¹N6+§³òJ¾ëUVa8í¥Ç¹Lé@y:41e\ j¦uÇ!¡, ÑÆºLõB}™öï*Ôçk‘þ°uºMÒO&Ë)¿¢5¼­Rã|Œ>w% ˜§Ý@Úu‰ˆ‚ȋ㑠+î‡ú2å·²çöŸÿÖlÍMБÕq‚~àÖÈ5Foäm…ÉJî±PÅ.#*¢Â×2`>cœ µ¡) ú¡¾~?l;O¶b_g;\Çúa[Ã÷p …ÞH.‚ ' u#bÄu êE”x “iOò õÅí‡úòn°o?g¶\ëŠGøë@®ÐØRÒ@Ú¼Q,µŠó ¢œhm"ß§Fë˜r×÷µK͆Ú2û¡^¾¶# [­Ûß×qƒ~¸ÖˆÊH™7º_  E=ÊeÄñ#ÅXIx‚z¿Ú õÜA@ß™k@fL¡ë÷çgX/·÷žuö‡Qµþ„7¬Uòç!ÆeÉਤøTßÛ_ŠG‹÷®½­qï:ÄntA æq!LÀT$toT2!=¼#£š £ê—BÉHŽïìÔ~eÊí…b ÊHMCK›üÐ)©ZU‹µ¥¡ÚÒ±ÔkÊ—üfÒÊù ð•'S¼ª¶ÕJ~¸¶€|:Ÿ¢¬2£ÏJ¬G?•‡öýÏOáíÏJ<Ϧv/8.!Ôy=+ÿrÞÌtšê¼ƒõ PÊ4‘Ÿ~yƒX/Ø=ûÓcžüøß?¦e¶f%¼þõ+¼Ì ¯y/{…Á× ¼èòǶœ“ái¡zpþúõgD¢S”Xæ$ÕiÊ/öI6Á'ö&Y1ýu +ŠO@×ùç `oHƒI€HRˆfx™£‰ÆqìœHØòÎË<)ÿJ&§ë ª¼–ˆ/óë ^'9"I+ÄÝU$8à9@§“!Ïç0ô¬ªÎ¬|UŠ3¿BIˆûŠŽ^'E½–lY度<֤ðN‘™òœçú'ç"›9 É5R托•ÚIJ°§¸Õ3•˜ üb6²·ág¥ÎÇÆÅà‡Wo?:¯á<€ß^é‰ÎÑw&ÏN ˆÃ gŠßgM <íØ<­'5ÎË :·+ò“£Aµ‡¾àÔ)p^n3NÝÛc€zÈK„;w2»ë°NÊËy»½U±u-šæØP #[β)&—…ÁÌ£•¦ŽÐØ•™¥xÒùÏчßß}üà¾ýÃùÏáññáÛüÔfÜÒŸuÕO2ž¦êsÏù¤¼À)¾yqüüwxþðÙÑë£à,_}xûâäÄyùîØ9tÞ8zþñõá±óþãñûw'/öœ“:Ùmÿ»”€êúhŽŸ?€N ˜Gªœ3þY½H¬ô€B»„=8€ÒlrZYpÊÎm}ÍI⛵£ðÿ%ByìMäÞc' ðŸ|JaNJx:x™èüeš¡W곬(ññ7‡q)%O¨ÇéÇ“C§‹‚ªÂü5'½­¬ Ǽ±Eð=¿er6Ö“’wÎüå5W¨Í…宺£¥\ùÖ:Â׎ýw¥*ò±öWü=ŸÀêʳu4§[…ìÚ dóŽŸÎ{žóÑ ‹«Lâ,¦XV°Éâë4†­“©eUXÊÄì|uh-ö óéÁØüX£íÆ_?QàÃG¸({õøvfíŸå˼B=¼û_æyMÀîrÚ6—|Ùt„"Õ¸¼˜êAê ÏVÃVU¯§/Án»ù¤/,ööa­J#n¬óúÛo[dr‹Àµ•0·ÞŸõøÀ*UðwY»>¸—‚ùèZد¶ÌÄÁ¿ñjk“vŸ09?E®ú`á[`ì8K+1×_vϳ\™4;p˜ZPvâ.vþþK[áôQ‡WÈL饥iÓìt®› 8¿Â(7Ü âPkByH}à©NBÁEWGTúÀB„aÄ‹\—{žˆc¡£À<8øßZV·Üâê<î ¿ýíÕûÑüìGcEu4W‡^½= ¶} 8 G[ñ×ùgâüâ?ÿù§S§ã„/ì¡S=Ð,Ä| UCT¯ósëÿþ}8:<~u2=úi·J¸JôIç» žÕIf‘P–à¥,e%-A‘0º $,ŽX»ü.Ð ùWOÕ²´‡êëì´½O°x„æ<Ó:j6ž¢(½¤¡ÍŸ&æz=‘ËÚ;Û÷üºƒ®,üóߟO>m>Çû´:>ϨXiJ#CÐX˜µ4®‘Xþ†Án½Út?›«ÙŽÃy˜”Ú‹#Æh)殘 &hÇÙߟʪoôäX¹¸ºLL3ƒ‰¯¼02. ã@Š)H§ÿNnê!¦º*Rl˜,am’;b'P|ÅÒš5;éb¤‹µ…‹€l™8ÑM}Ûw™×½I[GœØ +++ƒŠÁËYb…¢Ù"KØZâß’ÑžúùéZlh¡úúý°œ[DºS&%:áMü«÷ØÅ• ÉÝ…Y‘cX$“65üåy’^ì9G¥õ*âsÎs8é-3ʦz¼aV`fÝn™Qh0×t$]¡<ƒYüyhæÆÄ÷ã jç÷úoWm~¿ÃÎ7÷=«§¹.fi7lH” E|—3O(rñÀxÆiŒMÖ:z÷?ßøy;ÄÍCÂnÉùƒ¡3Ø×ÜâG‡fà^:ŠbÁ•ñ×ÔBÝHÿ™”«°ÏËc¢=Å}ÐPE$àl—^¨FƒH²ñXwÇ@{z3ÆuØ»JîÃUVH¸¸Ë&áÜ)½÷§9¶‰I·K}üB2Ó-Ñçxïhyí·Ÿe¤v%6mqbUCÝ`¤!·Z6¾y¨4°HeóÝO:Ii›áºˆÜñÐmÖYú9̦pôüÝ©,޾¼v¿,Ùï´—/i/-Æp"ÑU_j³üâÛ<쮉àïµf,˜¾$D÷¦„r ê\ø1V\Š#"LòX1P𖟦ÉÄdëéD…ÌY ˜/u}"I”4 Ãy—™ž­:â@×NHᇱÇ4—„Ä^,#O:Ö(}G¼ ÛÀUÄÈ$©Æ­´Æˆ:4RI7†9¹4Ö.“X8Qx$ŒMhttiÄ!£ÜÃecgb¾ ]¦ˆ!A ? Ò)%ŒFÒSMyy¶©Z+Iš”‰.ž¤IÑÙÎŒ1"\©áô‹a|L£l¨Ï;Ñгû®m<²Ùr-=6B…˜Ã.—Ä_Ÿ¡a.lDQØ]=v®cÕc#ÎTpØ ¡&¾ˆ%qdŒ8dT ÝÑc'ú|¸»B\èý 1óhå9W¢…w͉¦/üx'Ø\s‘Wæ‰þŒ–ÙÉ"ʪ¼Æ>zdlôç9· Eœ1ÿ„×wyãˆ?Ù‚ô’ÛÔ4 íï8´°©äiêÜbÞˆ/}™®K0a£ ¯LtÙ·_¿v€)ŸÙx4GhƒA‘>ª¾|’ÙàÓZêJí ­iî/¡ùùYM»H³^V`¬ƒ«ŠUë‰eÎ'E5ê"äÄÇ>þ-4e“ þÄw©Æ¬ÏRJJWsÏ –óï»›¤Íº~$„ ]—?îæÁ>QÊGIkC´Yd(¿îLš·dÒ E6³=ªõ‡á3®4m²ƒ"ÀøìÂAØ1ŽÍ7!ЦÑxÚå•wGÛ¢À2˜Ã¢n}.áQŒ Ï AÚó©fÚ÷}ÊA!òÛÃýy61É)ò›«vE½]º¢áÆ›n+*©›ÏIÎY‰mgöÔ›Z6ÿRr½ Ã!Ìo… ±›Ãü¦ÉdÇû¾"ï»qÙÁ˜H&[„ˆõ§‡"#­šn“„°Jëíà»–;—¥Íe%¦íÉ*¿£J¼Q«÷Y/èB¯-®¬Õ ºãëßä=)•1Rqá uª$: ³ dèA6йִYì8ì3–È£ŠêC5ÇW1üqð ʵB4È8©—h=¤mëmc1xVÊYžcxeÛ¬§òý™oDy´Ë]ƒÝ ©m5C[|r%Ópeè®K{|oã߈“Ï N†xŠq™Œ5åŠú4 D j‡“}|j"1Ò•Aì ƒ}N=8Jü(ˆ40 .|WÑ*R™G¦Z«õnæbDÞƒØKc]BAK5AŸj-ÝxÁcgŠf¸rêrÍ(óBA…ä×qÆ ¾”1÷luµÍáŸM óŽ}Þš¿épÈÛ€Þ­gqõLvîzÛÅ^Âàº?­ÉÑš Ý(kßK»Y$ýúI7•R>å‚ ?$¡«eK²17’ºíV ®‡]½ô;˜l{™èóMd+y—k^jñVt{MuX‡MÛ`“Vñ4ùKwü5m<1·ïïÜkáÅè·:ÃvŠ©âmÂãÆ¡ r¡â€—‹¹GÁ0_Š[½n³´‘Lœ,WÕYl}Bl˜¹>¥]U;™Oïå~î}Ã1ºû[뵑ý[h ôT¤ˆ‹‰‰=ª#—{"ŒàÌŽy »å>/ŽßÞ¾½yñæÝñ+žFwû1s›á¿Ù7ßË:# ¤B­©ôhSÃÐ’kŽU½Âq=ÿʾxÛMá®Ø»s©À]¤wþ“KU ÄQÕ^¹üu+ (l8¡õ4¼E¿è–[_•‚|¦-™á¹!¶>–Û—Z¢‚A Lú X+]W0ç(A•i³àzÉt¼@×&÷Í솜ûþÉ27²3Ì aˆˆ±e¦‡©’ŠK¿éωÔU)Î4ù¤Ó ,K™M&¯Š»–O§äÀªtiu-”¨]£íNºhå¦ÝôG?RŒ… /ž BmNÈg¡õ§>wJQfL¡·òó3[i~“»¶È¯»h¾°æ,;¹KõÑW>Ž'ÖÚVõa/‚­-­5¾µ]ê§ mõá„‚ypΛ€©HÐŒ B&$ ÊÄ4ڬÿE2’ãÝ-×=žÿe6Rúó–ÞÏíl#ÎìQ{E·}X‡½[è­¼EÀ·óÛzp¶ïRº–2OžŸL3#Ÿ·*î¢IÙØÎ–ÑáU3šFÒÅëÒ¶°Àc§6lÐ:bÃâEƒÚßÒʳ¶M}-¬¬­¿mGl;hPÔ-òE‡‚ºÉÞêðZÞR[ߣŸe©-‰`#Ëæô€À êw´pÏŽ@ÜÇɾ¯¯NâE(•´Ž°ZDÚç2¿ b)ÀU§CA^ð\¨ƒæQòÄ‚ÛÂ8ɵç9Ȧ‹Kî<¬( ÛÓGíE<¬A‰‰;çwðÝEï6"ö¨PK7ÿ–wxYry†•hó ïªüݲŽÕ›­vst¬o1Éô½Jmm*ïá¨Îµ{ŸÂP°÷öö¶MhÛ% _OBk(´ ÁÏá06_^Àä«ßœÊ÷jõ.-õÔý}æybÉóÓÙXOJèºU¦†X™I—K²š[/E,7‰¹³óÅŒoƒKMö•h–ãÕʹÉO»¹É÷6ô>ìÆIÁ7(÷ÁV—ó"šô†pm’h²K¾éÏ¿ýäçW›Œ oø§yÁâyÜëSè§ÒHë„Oò(Ït釭²Y]Aî?]ðiY^œÔN‹dœ¤ 16ü¯x´çT™ š:KÒ@Øbɇœ»ÄW¬ Õ{ý'OS}Ç“·7ùziE¥6»µÙ”›™ aqÓ6Y"?žhì®’(”¾ðZ^Öiº¿ÏÓ²Š]UošŸX’n¢ãX¸‘Ю‰ ñb<˜´ X¨˜yeðªõþ¾HÊbèÈó93âÆ&Œ‹•=EúLy•.¤0Ëç\EB¯)Œ(Áˆ\Ÿq¦]¥\ÁBJ™qÝ3|º~'Æë£gÇÿÏÞ•Æt­ÿA‹ò”Ä^#ü ¹û‚Z"iD(•hIwa2™™Dñ¯XC5ˆZk+­­Ö$%Bƒ b«M'‘6Äò¬QÄú¼sïL$AͼÞ!bîÌ=Ûý–ßùÎ9߯G¥a0, ‰óÙ–ˆ0E1ÎÐÀc¡ÍPOåÜöØ_: ëíõw€,;:z\cäe/ïšâzJdŒÁ¤nÎ .bŒÀ‹(˨Uªkr«rÕy‹'©_½LÌ¢OÁMð˜40(€ s”yªÁ^¾þ~àŸÞ=Þ`›0ðÍ‚áaQN$1‘‚Ç€Y¤vO·I úVÞ\¨À²03¤Ä¼ˆca‡1œÇ9žc®4:!Ì–4Ÿí' Ó,Dã4æV0Ï<&‹À^bý¥((ÅQ ı<è 3 ˆ$†Á¢ Ð0ƒ`˜€À¢m¡”PCˆšÈÛ|òöÜd¸0Ú$ì²éò»ŒjèxaŒR*±QFÁ>±¬½Ò)I(‚i$Þ—p½¶(o» *4º0“ѺSÛ>a‘ɱ–PØ-ëõBôRÎÒ¬V TYòÕŠd¿•5²T!òÕòbUB:½ ¥¥yë|ùQniî ÂÕœb* ró™qK?+D…=Òì„Á‡zN#¯ËÒdsÌ<$‰JŒ<4À)À,Í!…#(Ê‘,JˆŒ¡ÀåNªðþ¼Éµ*„BV„R Š­ga”„!”eyåÑF©…BKA¤ "U©‚HDZqDª7Hª@ÒWƒ¤7ló˜TA¯;w—ĉ3Ïó4BA< ³˜ÀáFQ mÌæPcÑ2ÊT€£à¨ÇÇ«¿J8SÁޝ€•@¦IÿHЉ,‡1ã* 8 A$Q0X(„Û0$U‚™ &U0©‚ILú*˜T h* ´œ ôYIR‚š ‚DœGB¤aŠáX˜(A hš€` ‡H)S‡!H%”©ÀF6*°Q/\W˜ V|SXQ e*@ôµQ†)‡–åE˜Fž J€X‚ea¢y›¢JSA¢ U¨‚D+ŽD•°¥E_a-] Vþ31¢tX‡ˆ¶‡I–‘ãXŽ„Y†¦hÒf0¢‚ _«»×ë$[)§o1?ŠÏó>ÿ3IæK˜o`–™P½I'“JÉÎ8F!õzI“‹ý¥5áKáÐYlŠ•<¬BØå)ç,Ý®3…²À˃#»ÿ2‹/§Ó¶>öÂVÞÝQÝO§Öéuî%(Í-bK …T¯QЩ5†"".µ«ärtz£ZæL•¸´«¤{× !ŒQ!”åçÁïç7¨£ˆ* áXåh†g &–(š¢0á’oòŒ!hŠF÷ÂNÿâ‹ méî.ãZAtÂÝý©ëÀ º[?³|$]4 ï¢^/aó0éÿòG’)–€‘މpcŒ#\ ;.Èï-EjxI»t‚ÀÝ’ÈóŒá‚¡"Õ¢I'+QK¹< Û&­Õ–h5%Ê´‚*k¬xMx0!±¯@%PÑ@úPR„ …aQž–GÐ¥«VÃZe(8Ìj»xh5]+T‹Âã’¦)L 1¼g0’ÂiTd„×TUY ô%.¾Ú‘+*´ôxYžÐ*A'„˳6ÊòÆZü£1¬“‡GdddG^?&*}xˆ‡®Öõm³°%ºÐ÷Öã.ý>¸p,¥`IÎÒ%Y÷G_ßQÐ˳f—•Ë~ÞÐ\åèè˜éܦ†——×·S®Þ]f»ƒwc¯.Þ=:ï°S—'þ:1;=mêÎ}ç¶aN~ëëÜ!:?7ÍÕÍmû û^‘{ç\ëŠãNk×®un·x§sçÎkñ¤û³)æ¬ÄÁÇSóÏŒ›3‡þã÷‹^O¾á6áý $]óZµj¹Öˆkç–}Ýßß??;2gð†qÿî4`À€°G÷F¯J =m3ŸÞtÔÙÁQÕåþù¹ÍGwÉ`LŽ «[ýž{óÏ}QÇÖ¾søÛ‰Í rƒ4sptŒû੾\þêüò­[ß7\8Òƒç[:û£»öì®­Öíææ´N¸·MŸÓ5ûÁs“ 5[Nÿ0´vttôù š¤÷óHyÇwÎæ‘§Ú¯*€ÏGlX³?Ëi˵E‰Í‡šC›¬Ú³§Ûš~˾ܺYuý4RŸ¾fx2Úyùøkg›mY´85Ùéˆ÷ڀܳŸßHMÍÏ Y–ºo_µàñwœÄ# ªÔ«W¯u›6b::dHÖÕ[´h¡úi«îX°~ÓîõÛ~¬vqÙûýµÉ½|}{l–²YHwîRe§ï;yP“þ[Ä™kC "6xÖ’QÇc×ͪßD]h<îÖÏmÅYë;' þ›³sv-˜e Øð‘c_mæVïí7ï6#¿tA—¨ðmËÆß üÕuÛ)N·f\õºQÓ}gÃ…™_µö½š³'Xå™™ÙæZÎÙ³`ÍÉÖÒ϶¯ÍT[@C¶ÍKK•‰Ô 4ÈuìíKŒ±qⱓ×ÎfåmËJìã§ÕgðoZ¸Oüg¬ÇîŸöN®½8eOx^oíïÛ}“ÆÝü£GëÖ­JK{< ±CÍi݈O\\\ͺu¬é»xóØ;#c¦LÙ{üx½¦„öDèúk7³iµb&ON5››n 9>ÅsʼnxÃ?U‰™:õÜ¡¸VOg:÷úáÆS9?¼{­gŸ>ÿªZµªq™Ñ,Ÿ«k¯3Þ«û»~µdÉÌåËÕïÔ¨Áý¹wò÷›6‰Ÿ3狸V>¹©5Zxiµn‰ÚÌ“#w%}èN貦ýçñÃ}GÖÉÏÏÿm çû0Á©çgûÍphR; ã®ñ½Sv6i‘¼‚:8«éԴ؆WîŽ1bâìÙõî^Í̸úcxxܽ° AIuUý‡ «»°Ï”eãUËqûð•u¿]ߘqýhóQÉøQç#Ù†?nÜð8œžnÎêHQƒŽ,Âý8;Ïè×íqÀ½{÷.®âà7ßÍ1|Ç]Oþó°êÄAÛGÄ}•žÇ>~pg¯Ù”tmÝÀõûcÞ«ï5aÂîCGŽ4˜T£žó_ŽfÄÿuiÕìóæ5øÄß?C\ŠãøØnµ&{êÇûm2¯Û«ØÔ/Þ]¹sgஂ³Ÿý·þêä†ÃZù|Ù€¦i—¶m}f6£<º³)ÚɳæŠS#½—u¿J¦FóÝ9{uwß¼gP´i)ŸÌÈÍe·D?™àX¿þª œ1{N³ÐG!Wèáæ„qæÐf£L¦„CÇŽ9Ÿ;0+cTÛ¾³³û/i×®ÝÊÏ6 ó\ªVË0ºSk¾÷žcûøÃ—¸Çsžt<0³ñ*sNF†?“š-c¨Ñ¹1aÎ SyÆv :^Å<þ`â熴‘ÿò?6Û¹_ÝqãÆyy{{/6/í=ìP^8hpÚîà¢ñÔÀ=k¶œ×[ˆMOòöñ‰-;õÿÕjxÛXräHŸUW´æÎ›÷mÒîÕgBOå4RÅ-[–“;Ë&\\<=î¢!Ǧ:Ô«eŒCNô“”ÍII IýÙž5Gß:ï[¥û£Ûýª§'§4kÚ´CÝæ¾Mêøá‡)iç—'4šùKæœj‰CÓ“²×ŒîDÓÓ÷ï÷ú$0pÝgÃÎ=®“68(¨CVVÖ~`';xöYˆxKF¶Mó+Óë·INNîß>ž–½+oojj€€€iø¨ÓÓ~YåSÛß”x~âµÝçÌ)4‹OiwÑ'¶^¯™±±=?ýÔùúŽ‹¤ E^Ò¬ËNäd5Úeݺu'ÀóóÆŒ[UÕ¬Y³À!»Ý»uk‘šš:öݹó¹Ó«î?pàßgõë™.X¹ñÁâZuê„æS‹Ú·oïÉóßêèöí{“©ý{÷®õëHüÑãÇwîfnjO¸³>ï°~´x˜Þžž_œ}pïÞ˜¹Ü¥¿E¸çDÌš•¿¥éŒ  éÜÁ/ÓCÍ Nšñç¯kýÝç‡|?³Ç¤ê©@Å7nÜ«_¿ƒo욤ß}¿úåË—{ùùí[s¿ÏLØÆ%'-Ð÷Þ îY¿B“8üú7“Î û¼ïÌ݆9¾µ4|¢Ü¾«¿'øH\Ñß5ðè¡À /§MsرcÇμÇ{ÇÅǟʰæ×Ìy+Bû®Ý“·æÊƒÛ—3ÜjÏ_™¬B,yvLÏM±#ÁÀ»€Â vT;aÚtáâÅ+‡gÇÆÖmkjþáØíißTë 7Z¿íN³Íׯ5©?ÊϼÝùâC“2ÄÜ»ý¤pr]'åmÿôÀ‘…hÚÉÕ~“¿ûî;ðHsw\ü¦þ_7¼~ýzîáø¡Ì’–$'MHÞ3wÐ,æðý_rîѳç¤Kg6-ëÕ»÷û>³?p 9¶Ä1ú¡9çUþý‹Ë®$þuçŽð"ñßoÜèä÷uG'•—Étg£ºï½wçyD;öë’óã˜ü•Täõ%`6f̃ËßeŸ×i1r;]=Á¿Éï·òÒÓ€ÕôÖé~8tô¨“¤òÑ÷Óƒ½mÞ¶-ãʧÜÓw>Qåü/{ßOuÛÿo4( d«dž=ÈÞ%!#+‰pŒã) ´$wTšJ”$%R$D4$Ù£iE2Êú_ßshÝÝwyîçùýûýÿO¯ç9÷ñ=ßëº>×çúŒ÷çú^ßÏGz ô¶—/°^u°M›6Ým¼Á`¾l‘bô=µwÝuàÀB?`ƒû»\'óJ^ܶä»×éUÎÙImÈDd]»ºÆÓàTàØ„–,QО!C,1Þ´é‚oPˆ€Ö‡}‚ú1ã£Ã󃂆iÁ{ŸBúÚ•;ª¹ë©(6A‚Gæîƒ£¸’ukµŠŠ‹w¤§§ÇÄÇ‹ÿõ´öäìàÖ°k86ƯãÞ.bñΦy·»îÓOÜ#¬ºPOO¯¨¢bµùqí¦ˆ3UgùÆß›Ÿo9´ÓÎÞ~ù«êãê\ÜÜF7ž0µ°F±ò˜–Óʱ¾âíO6åœôi¹Eâ ðŠaááF-·ÂKâ$5^z¢Åú‡|öÔÕ­oëìTÚÉ·T6N‚ð˜ä¿Qqè¦.Ï5—Õ×\È$o£µí‹õcÎp¼~óæüÎôËɵ÷Ó.^\<44Ôþ2ÑUXŸÇ  IIHHöæ(¤¨·õ4×÷LX°•ûíkÉ€kô¦Ýå—Ÿ*o0ì ít\m¡ªl¶øª¢GËiëóš‚î¶,a.8›,MÈå‚ ‡½ÿåÐazTuÌaùò³ÒÙfMâ jL¯aÊÅÀ¦ûGŽ)«¨Y‘Õct7pí½vêl¿ˆŒ‰‰ù'Ü!«eÎþ0¿Ã¹  :É¥s—Â!uWD½8ËyºJk_Ú‰D"QøÒëÑw…¸Iƽ]½–&WG·mÛVŬ^h˜!)/²`ã³Õž.¶Ù/`x¼(˜qXÌÞØà¼j%¾þ}w«ôóú7®Ì¢Þ_h£¸Ú*UÉ(¡sÙýC iÖMº;:5lêçxF7^h+Žvº:vL+”Ô”Ç\‹Q×ÛN’ÖNÒæK/ƒûÇ(iWWyF?yëp¥i¸ûù"@)–Yu-Q¢µ£ŽûVܾ'ãÛa·Ï/“4h}Û* YÎ?ºJ瞈‘“f#½¸¹ùÖó»kv¢CõeŸî,šÓ½Yi.“ªtâ‘Ï*ši¤ñ‰~Ÿ‡žòWE õñ0õ'Í8y&3ìKç®IiÆ­VïxŸ»$Ø}ͬÍñï¯â)Å«ªËöo¹.öž¤paž8¬°6òÓ¼œÞ|ùƒfû$äyb#íÆ+Êï§'.’…ÏQ»%|\âH/G©D¾ú˜EðØ)ÑëŸ4ui“«íoØ-àɉ qpÜ×Xpa¾˜å‡pŒÒ¥Ú ß«5KÒ:¯–é8óêê÷ÚSkù£½wôPñçg…LÚlj»y¦*Úw¥$^uä\e—(ZÖ­¼]C¦?Ê}ÙìÞr½å­B1YÒ¸µ‚Ž­*…ýÂq{óN¦ÏUNµååàúøö©å}L-ÿ.¯ºKçæêàpoh¶»’Ø*ÖYª³3ýxT ù”fé‹}üïvH‰'ÀÀŽ×rÇIJ.–d*ܽÏù<»ì*—=¿#Aö U;<å‘çiû†× š¼jÚC¦¢ r¥Ìù¼$FYÜUí{=KæDϬÔÉC‘ü»wçø´ ³¹ †.ü0ÿuïŠ\’aÍR¾YޱmmžÈPÞ*í¡à±bÑàíøÀ”€sG$ô­q¢£ïœ¶lTUàwônå¯Ëm•õJ4p'4Úôö輂­—ôç/v+ÌqPW¼âVÇ?ððª H_ ®äüîþ“G}î/uãf…ÓƒÎ]ôЦuüœã×dË#W†xlýðÔy]ûMÌŽ: ‰Ì³ö'Ádh¯—&¥ÌZ^ݰkëÁÙ3šwœ–j"ŒnÌ»9›‹yvèá…Y”¡…Ÿ´Û÷´LhIpXº<ŒD?$ëf²Ô9¿Q×ZànÜptÁ"†þ¦Ìk6»«ô•9 ­ãâjwFô\ï¹Ã{ú¬é®'Ò‰0Цq›ÜÝXðdé'=ÚrbËØÊÅÔÝtá}ÏÍ|}³‹Á:ߌÏÎ)^¶Axó¢ó¾MÝx!!M͆K#i“s¶ÎÝ?d:+Œ†ª>Å.—r–$žq/?L°Þ½7hÏ ÛÜËÖ\g»G–ÜÜqóFÑ»ô,Ÿ;FÁƒþúcëôÞŒ¦ È?W?ÿb0;§®?ÚËyûQ“T¼ÏîA>Ëæ¤ŒRÓµÊ,êÕyUtî#Ýu (–¢'zŒ|FØ;ôýJ%µ‘ÂUЪE½žE~Xy"N`¯×N㾘‚…áÆu‘9?>mtnÄ»FùÛºÖõ˜§†ò²¹.ÛíÂÓÕ×ÓJ ³Ëì;÷kȤ?õÎ/NA¼ÝswŒFúÎM j›3ëÊûÛ"2Ù‰õÇEcœâ=Ïö¾n¿µëŸ‘ï¿{ÏnpóÅ3ýrqï¶<'¹(J-²œóíbÉK÷j—Wµ¥&úè§ä§òº™[™¦¾c«}€.š²€ú|^ØÍnäc×¼M=–esúîÔž^„¬Y$PÐ,rN[ñN¢™ˆ þ¡$·Û,Ù1m‹æš§;&ï‰3q[Bë…ï[’Ø%”Üš™›²vûj“hca;Ǹu“JzmÃOy$ÞìÜ~.öhN|6ŽpB8!ùpGeé î³'×Ûó%/‰™öGc‡±ËÓ3ãKF†nTŒt”ÏòŒÖ~<â“<)tâlCWužØ‹¸¸&«ÍÆqOŽ®ÚmlÞX¡ï·µÚeÛÓ²5ó.p8œÇ "ïrï?%¸²®¸^f,ó3æI¼‰3i0ñ>¿¾5¿4%M9fLZúCxÍ\½¨Æ†æ#y ËæR/›cèbÒª»lvFs†.Íoüœc}Îw-ÙN_ 3ãž»/"+ÛËtÞï?,ÜrIÙ°‡YÕjBYÂuý ;z #Ûú{š¤ˆª+ïsX9AäSó*ÜU9y¨½ñ°ø›ÑËsÌk?õÇ.ȇ\‰…·Ï ¬²ô3ÛÚ|*¿­½ô‰f¡ù¾)íŒÕ¼½ªÅIñ«­Ö6¼kÐ,ŠFñܲÊ×¹…²:”nyÌ)þáMÂî¦Ã¼ªû¶œž·¼¥pç{çÙE½ƒEûtf«ß{ZŸjµ¼ôE¤JûYWÍÜž‚†E¯w¬×”?©fd{îNâ“l+ ·â?Á&V ÕìÿaÅÂHc…¯ËÎ-Jjx>¹Á¤ŽG=x°}À¤,j§0ÃÎÖ5Õx(én›¢n’ oöÎ)qìžÃÍ@U€’÷=:_w’ÑáfÚSò"òâ…‡Æj½÷‘«Ûº_uY*_­å/§TVÍäq™§³V7}áõ¾’5Ý"Žk*v @¥ñrJJó8tpHõ v°ôu‡Ò÷%l^ä¦s“?)jûõåÜ}éç9}ß_íqÊ’7ãš +K<9¶ höëL½îà-|)â\¡‰¯&ã=3Ƴ¼­C³^G^¬*yÆå6—ü¾jâ î‘ôkëLòÀ~ÂNȆùªÇ Ü[¸pak{û¶˜¯æ|‡ÜLûîj†ÝžXqÜÉ-“¾ †AXØÊÀîºGíóvp•——óÌ›§ïë VsŽùôis¶TÆìÀö¦›ArjjüœœœGp>ÇzGäÍŠ@ô%(%p§îkbÉî%<óçGåæâhÕÇìÐß Ð`ð<¤¸˜XkGG”VèЛû7X.-Ž(Ícvqp¼|ùr_9%xè¹'‡X¬ñ¥ü*ÝŒ‡í€¥uÈ! ‹ü BŸ6¾š½uÚmÏ.½©]€´’Šy±K?ñírTˆñÚ{ÅNµjì¦aØÇ›ú§jþÈénm݈ð¬U±Z¿^Q{üú¶ŽŽSNÏ>T· ½ÿ4Øe }ÝÍ KŠjj£ÃïDDÞ`ìphÛ‘»”¶°ˆ++/bAéñ.×›ù$Ûêw‰e½^KxÐ<f+¦Pu\G½*™ ·“_RÉ.Óù¼Óð—è\Î.ÃQa™ùØû#í¬èÊàË»LÍÌ„ 6.tìÉhéðÓÐÔ4Æò¼Mž?es¯er"A«mš8v올ŒŒ@ÌPü˜ bƒœ&ììÛ]kS„Ž' ëäÛ*.~©tjU³áè-쇥 sv–s2•_Wñ¿á â&¿î:DÔòš{YYYíS 6w=~òÄÉœBC@ý#gd‘ÈÇÝ¥D‘ÉKÎ^æøçÝáí ŽÊ{¹w/_S?çCÍ¡7oÜ­œ/:iû¶FÆÄÅAA{уk$t"œ‡V¬»;P­sÉÞĉšŒ÷Ó‡ñëÂêT«»ªÈÄñ;ÖgÓbEA¬µT{GœŒºÕFúVÎÖ¾G³Ê·¦VïKÃ\ ·J,«|áOXf‘sá‚Ò‡®gÕ­' Ö§Û_‚˜á¶gtÉ’%2H¤u®Ä’%;ŠŠŠ½èAܺÎÎÉÍý% âÝðúõk9<~½«››Ûõë×7v×eÕ]óooo¿ìùL-Yƒy¡$/áþvýÆ 99n ¿N ê{€kiiIzxxˆ¢h{ ü9×gkl,;®2¼npÅ ê’ÓÒ*X§0÷pmý»­e‚ËæÖ¬àÍÐ-7# U=(jq½puÜ=µÃ w𛥀~+ÛgÎ⨩©áàÈÏÏï{d"­§–H~zÁ6/SñKQ´ DRTU5rt›øpN'gýò³6Þázñò¥Œºº0 ¤Ý4ÉÙ°ïãÀk9MMq·êc% ¢\ åjm½ð°šËnÎÊ(+ÏßµkWðÀ'‡€Î\IIé²ÿËU•`*6ºd$ 6p¿èZ(ÔŽÂÒw›[ Ìß88¢Ä[Zƒò¸×Ÿ»Ûû2ï)ɽ%,ÛlŽ©÷j‡Æþ¡ÄŠvWƒˆÅ+â/ÑϵIç 5^õ8Ø70°„4¤â H×ýHu—‰?ˆþžycÄbƒG{r¼¼.ú2™K vò ™ÄIxøU깸¤ÑÙr‹‡oñÖ­[e ÅÅóæGp~T$ ÌÄòCo“ÓÈèè0û®¸KoߦZÆíÞuâ Š±Ï®=®v!=Ùu<â“G[o¯Ú ÿl½+N]¹b]×а'Ñ5ÂGÆÐÛ;Ã7 `1`¦:ú!.¡ý&nÞ]“ác 'Càë€éßù¼ËýSHñí#Q×" UÛüi«Óòãjlm¿5ïúüÆ‘ÇÞ„ææw^Uë¹t;·ÚåžôÚÎøœÖñ àaúŸ¸Á'úsóg"ùLçN®à¼D[®ÊT“Øgê²-HÚml¨¤Y¹|VÒäŠ)rkïÕdAV7éø¡¢ç¥RA ѲC¼:× :¯`bø@ñ¾­bu†É›&©Í望PsßNÞJ8yÅ[äV>o*çIéá•Ó5oìÀ³{à$ýµ£ñþñ%¥K)¥b‹„’äî ¼*¶µËÍ80á¡É é”§šòWü»ü|_.©9¬”!9Ï*º•:»óðvá2ëO¤·~zî8‹? ôöÒ­<…Õõ©ûœ¿žðÅj_-³óC5É/Z6Ë(LÏ)–½‚JгdÜ2ö‰tB;°Ý³&걆~‡Bpö~V[Q“jFÍöKúz;ön-0|á.mŠäGŸîÝZÎù¨:sÒfçrO€Æ÷åÈ(Ÿ¿d-7þÎÞoÐrÉØI—ý}¥°¸ÛÉ‘yK¡g:‹·rW\‚ù_U/ÚÒQr:2O\®1ï7#X„¯ßû¨Ëé˜à®˜<ì†õ Èç…%p¶d¬0lZ“Sœ¥¢ #šõš|²W‚fÆÓf½Öo¾åïµ4ˆ¿¥`CLýãÌùÌ3ä&ß÷$Ïh=Ê>—kÿþîŠéHËF¾±pA'µ• ¬Ú—38D#QzÙÛZ›ž×ËàÜÑbßQS¸ÊàÓ‡7µR­æi·I[bÎcNy­(˜¯sRzÀ ÷˜òÇÓ³–Q‰/î7Ǭú\cúHƒïoÆ8O¾­ÍV¹ç£_&-H¾ó@KM2®ñ‹ˆ‰hO÷!,È3ÚPGYkÝžwÔoÇ^Ôø Ö¶Ãïø]؉£`9:Ñ QÎAynY©÷Y¢51vªP<º|bÑüɈ°“2ûσߙ±Öó“ î.ïfîk½ÓË#UyLâ¤fÉkðK¤ô¤íÞdêÈÓ©7¸;-¯¤«/*Ú§®Ì•J ø´Ò*@Ö4îšÅ+ü† ŸùMì9êkP¸kBt_ w\o`-Æ!Ç­ù—”Zk‹9e ’ò¸rŸä?­h/£<¸¬jbXƒ¸°}ÙÜVûuÜ­/ʕümšõ~èpÇ…´Ö²Ä@xûñö•¢†‡o¿ˆ,›×™^iÔkkúíò þƒ…ÝÕ¯GÄOØÎwn´ßºNZøÔ«?†K÷ë­»Ó7/èJ »¡‹ðAnYeë§V!wºù®÷½\“üéò,&Î6&¢R Š6çŽÜÝGõD!fXœ2šdÄ iä\^~iŘqZ™tOé¸0_¼õùA—7†5~^£J'陽;ç_tåòè[çÅ®Þ=¾1iG7‚;‹¹%à4ƒÅÎÔ‘MR·Žl†¢^™«‡{ú”µW”6߸!œapòÚã.ÑÆçsܵ )"'(ÛïÛ¿Ÿ˜ó £`‘6Y%~AWVÓwdìr[òþ<‘F«›Z‚ÍÕ.WM?vr‰Ô„ ÍJål<ëneÔ‰8œ’"i/µÀÍ­¢òbÈHñСCëO{}*øãÑÍ ÏèG Š#g=Dì ¾ˆKÕŽßhßo¼çi›Ç³íÝ»øFç íè;õuز?‚¢&(&¬j }W ª†×íF·‚X hïRTk[ÛÖ»w =£Ý-ýüü²‡Æáà€"÷¦K·>)Y$ã·À¾§–¼ÆKœâ ã"eüÓ (|#‡öH+wS(h¤¸bÅ€¢½>͘¸¬5Ï6ÝÎájïîÝ»ÕRD9@«ðü‹º×°þÙÈ×uƒ&=9»&ïeÔ\¬8ÕÔÔbbbv9–ç=þ|ÌÞ½†ôc½ë·?M·—C£GDDÔ]nKt“I³Qº¸>‹ ¸Õ¾¡¡{ÝϳS-^Jà}9ÚÚÚðþ/LÓ™×J,ƒü<smîÝ \´(*2’£éµ¤ä‚ÖZ‘‡=ó~YœêÈ1òßÙ0‡)¨ghœ„ö8VðÀóûÃÃ" 4ð¦‹HH¨Ðü¡0oþü’sÇ#”—º8bVæ¹á¬Ö¼e2œSWÅñªiÙKÿ¬ˆñÍm== ËŠ¶óÊêè¸Rh´Ýw¢æî xõö~ȇG&F«VíN;Þ#»ê?Ä ¤wè§~~Z!+Õf°`´AÜPÑ|õ˜ýr&»““%ö<(g'±bâÓ³Âko`3|ÀJ-ë!—¿Ž8ß²þÕÄhw/–¥åË/–<º=}@ü³²²zô*ðlžE[^®ÌvÁUg®”¼l8yꔑŸ_ýãí­Ü²Žö¤?bbÇÍV­zìÔò¸ëZ§_dYuµO?þº¸PªÈhÊÍB¡<‰Ï²½vXâ²÷˜uaÖ‰#"@šÌœ%®\¹â[­5ü¦àøþý[o0^··Þ‰‘^”³Z)ˆ-¬lmwDŒÂ(—>y²èvÆëáÜ«aNÚÛ¢¢›;GB6'ÔÕ­oõ~*½îªí–u©©©ªR&댌Œ€¤Ô¨š¥^¾üðňoÃ=õÁÌ9]­G€¡ ë/íÿÔu §™ñéí9ww÷È£GÅ96Ö_õTœ”Önù†ãºæóòêÑéjw3¤ lìì g5)aâ[ˆGÒ-Öuú¬Z†êý°xáÂmùù+›üÁ}úúú• ³s.{_mÆ–½‡4³ü¤Ñ߉±±Þ Ââ,r龤¤]"®aB>ƒÂC¹…o¯)++Gh-ž7Äi¼`á7n>-¯â’·8QÍEßÎNxá¢Eý¯Žú\»žq£3ÿɧ5f§ÊúË!!!eþþÈÔ»db²¼œó¶Ô Kà;YU¾ðÚ§9űÍ+„¤¤Ôœ]\ŒÂÂòëò˜éÍØ£Xï…@udUT̽ê.ëíÇYð‰cÍy½ÏÙlP1o‡>$±³fÏæUWWG„ B×Äz¢µ˜ÏÙ{f¢öðÑÌôôtÖ&€Âá–òË—w-؆šãåU¹UÐK<· '\*q$Qþ®¤3L¶s'}m®§æ:ìÁ­[‘ ê¢ÝÿîIc°ÃÖ©W"Að.V•/o†ß®)+Û|ߔ ÐyPÀj¡ýª«¿³z2ˆmMó ¯dg¬Zµ*wKóhZäŠÈYבz,+ï77ûŸ3 5?¶réÁåk¯­—|/Í}óVbG“Âä•@Å ÊýC+jùS+Z-ܵ7àåý%@tðIOoZÂó”„¿gçeêÑ}yº“§>»·=‡¶|v# ¡H›B~³e­Ia%õmûS ¢O½k®å?µ¸=Ãeåc§ëŒ ˆÉ/Üœ8WÊyçÜgjûd:•õ_;9«ÒTún‹®´E[(é.®~vdäÃyÎiw@”¤ë}þ~=ÑJÓFÝêuÐi>WšZZ.]—„\²|ģ̼gޱºL=î[cM!‡¨ÊE—ä”f=÷ìÀ,› —IhÊ|À·ýfÎa=m/>V´je8žH]›‚ʶò½X¿{ÿ£ÅO©sf—^HµmÉ+Raì³L¨>ÕØ›T©so¶{À“v Üq¹ªçÇÌwm¾ºa#ea†qëÏûºÅ Î͹PÇxØaëƒKòŠª6L¶¡ÇàÇVi[Ðçàkž¿JY}ckç¶9<Ôß°Ähƒl'd•ö—ìzâ‘èÈ@Ì»ʶu±Ç›¯êëçºt¨ª"*ïV‚òMÈæ[sÖD]+‘’bF 3©ùÜg4Ù·÷öð•gf,7Zu=ä–ðnfô]Ã{ÊV­E‰ÔŒ¡nßF½á{/"cÌ—e'¶6U”·j˜qA0µ¼aËìxÁRþ¸¸zÿ9Ûìª'ì R JvÚÓ³e‹½ÍKœîè@·Y`—ÿ6ŸCó3ù¢}íI;}ØyâÚÂ3ç^fÐåžgATÙm*T´oêÙ{@þŽV¯oïC´{›$1‰0/müÿ‰¦-7‚¬^§Ÿ›;BÙj§jé·ŒæÖM€ÔlïáÊp¼}ç)¿Á«9rtkŽM«LSŽìh Ÿœ|Áámª³´+úHVDšªmªÊ9þ’å/ËžÛÎ)·ØÖ>3”IíD†òç¡€¶˜l›sƒ|w àák|h“FBðv6ûu¡­/FŸ=¶’n¥„6rI¶ ¿™a xb=ÖöPW—ƒú|Þ¡—5w=ÈìÑO«h¿¸×bwAcÁµ¸ ý“p¸—ßZÏhoüTQ‘ᄎrõQ'ÍÅWd “R´—­›¢ï0¶ùÑ+ظ¼Œ r²?ìr—$, jŒ Œ–,?ŠïÅí¹(9/§íÕìÙc¤`7Þ·ÐÒÑ–—Ëó95.zOR8俦AsŸmýy+§ Û]ùBùM¥Mæ í7ÚÞürkÿdÏÜ]“³³¨ÏséööP«9ßvWrà[ÄÝ`wØe®ˆkèõO„õ€&D>X¾´£/ÌzqfUð×G«ºšðépðƒÜ—Ç‘wÂν¸î—Y[O´bjM(8¿8Úµ*ú¡Ú¢ýª‘’´ºvKç &UUþžÑú†ªKÞ»™‹j_6ÖÑ$«èùñ…¡§P½Ó"JÒQy3¼o+GQq±ß‹2!èØ//¯¯ŸŸž¡á,¬O3Ãj3œær(ª«G›/+ή֞ÏñÐÝ×ßç˜Vh¥”ôÒx Ì´íÏïеVžµöŒ~ìmûòYGÇhÕ‰•öÄ¡+Ï.:DtD~xBïÖ[¬½£cbbtâ†Í¼¯psì•Òk‰Uåh-Û/×××§ëè(ÆÑúáí“´K—JLJ[|†êÊ‚Ò !õ2ñzecW?½ –ÿœS^H*?2iÖ%ß1÷ÁΧGV† ›š 'óùƒµN<À]‚‰())q4®âç—Ô˜•°j‡A4?qbìãÈÛsÇ-v]½ŠÞ+†™—™™üîÎ,–î Erl(HÞ×_…sQM *·J¶ñiš l™ ÙPñÒß</4ܪΕ£ýýýІ°±ñœÇOžôtÄËikK}9ÆQ)%’´â>)eûÍ©¶óÝmó©§ ž}R“D%%"’οuöö÷·ß<:œ4ÿ‹/`|ž2Ž-šÝìXÕ‹Ûs|íŒe¯ìÞ —ÿÐs{bNñ›Ã÷]‚>ûJºV|váÂú8t׬Y°råJøæî•É„EÅÑÑQQÜRÁ­œ+ûï.â0 ¾^B>U›õ:2&Mü¼ª­žUæÎ-sÍŸŒLBþôámLl,´ „ 7â¡c‘ÑR›yE þò­ÇB{·ZŸ§\ÚÛzwµ¡a“éD›RØx¥ÑØÄm]|H½ƒ¦Ä+`6d;åˆ}xóîÞÝHÇ’cܬçîSÿšçÅq%è_­±¬ømÖŸ³œÇò¸JíD¸òëž«š8=¬þœX ªwÃâÝâ̲†Rñ›©‡4gmÚÆ½pWÙY‰‚ôl“ô¾"ãÄwE“…Ôò[]õ®íÚbHY·³rÁÖ {*'}k(îb´_nm¨pÌÇÑ ''ÆÛ^½Ú92 Ðæ©’qÀ¾ -^¼½µu£ŠóuA0aam¥M»ÁR>_ 4˜ï¥ÛQÒ‰úN^ Ä»ì´Sð}{tžâË?Èîb¯jŽá¼T0$V›é²gˆ:éÁ˜9ê ùïï+—UVÞm+Žë‡r«j•ž1¹IZö¤ÿ —Ðs‰ŒU:¼AÜ^P8 "À' ù–ÑêÕ6’6I„É&¿»ž<_D ¦¢Â—™™921ú΂¬j Ð澡7\ AøAä†Îà4å•î¸5Ú%¨ïS" ÒèP qÀP¨E‹–™ëÒé½’¥æg;ÀªQþ…½Ž¢»»’rr{[7*WØÝn6›sÉ÷\`#TìÕç}æØƒÛÿ~›¹ôI-{Ŭ`KW,ø$Ñ#f’a§œaÙž-s7î4ÔlÂp¼ O~ûdî9‹”Ç j(TvÉ{}ý}‰‰çœª<0255…¸ÙÂÎ9÷¯,éÛã1i¾7öqà …H§'pîÈÄDíOoä@$sÑ1gUnõØÇù_wC®À™3g õ;>ñáœpÅq ¦’°ÊúH€‹¡ýXa©™™YOÜQsHðÒÒé†drE 2{Ô.äxÌÕëã[¤¢æ,(’‹_y²Ám¨ûyð«$·¾JT5°Ë\«ÕJ> v9©l)Ù½b¨ñ^Ñ­BrÆAœ»þVXÈÍŽeO|ue…¬DìZ"3Ö&×m)=Qz©ñ¢$?“‹¥ í÷ý;aåò#Æ×&¯p1 Ÿ‡Ïå˜;öiXkã»ÊuÚK£—Ĥ­{xa–Å-×½Ú!Å:ׯŸUí*ƒŸÝoX³¢LBþPòþŽºN®ªú:#¿@ã†;`&±mÕCwoòû¨{&Ç Uxdt4h—F d{d'²2cƤ]ÇúªõÝ9ï¸æPBsêW¤Áëh}«Ì{Ï'›/*ºì”73]³ÆˆB‘ÁM–Ç“e7ˆX¦o` ˜u ò‚[€99@¬Zô²"‘Sôج ±=n«$k,¶Å¤$Ühû£Ý~5­àüU0G¥|¡LbEÉè»Buh/˜„§µ—–+(`6d‚5?×{ñúõžÊJshSáÓ¼Ò…;{îÜ=Ù´]EEúýÀ†Ïñ"ˆ »ž] ›ô®¹àäõëë¡3¼wïÞ}3„»z|Ór´>[¶3 fãé¸jýêЕýGE6;h&[¬= ock{DtJ óâââöÙb ¶>L5sáâ8}æ ±*™PVUEÇ*ŸJ]*ÑðÇ™G‡’¤÷J¸QåOZ”6›íl[½ùdª#¹ÇÒë``ÞmP×» Þ~M[üÔ¹sË9nß¹“ bÖ÷B‡eg3ö¸–í¤ùzy6&»E ™NÈ­9y*11eWVY<‹‰å]nÄ´2HoÀŒ+¹{deõ_¼zÕy„fFvvv{FA<¹Ëåf o†òây;èáÎÎɦk×>kþ"opçê ÿ&i~SyY$7ùÝ#×ÏOc=Ûb"Š,öýp9Êäò©ç÷ÍW­*z|fµßÛÇ *Uò¹õñ,=ÜÖ6¡7‡=׬œ$éØŒ¨úòúç¼BVö—½ž#O]èïQßpÕ+ñitIVW<Á›þìCú‰ê}aUGùmÛ¶mOLL<¢ž—–™)¬ÏÓÿâàÚy8 ,×_Ä{î?<_v2½ô!ˆõôzŠ9wJ¦½ÔXýÉÿÓìY˯“ëÚIZK3%ó/êRæÄª+›Ø>:$³lÙNNκ«‹8`b·3F?ø¸ÚY*.6µ°0¶´„Û·M¿æÙ³\M© ãí$­±“ÙIPt±vwÓM‘åÉ·W«lWX}˜ƒÃßߟƒCAA!f÷n.Ž¿2â]—òmb­çŠZgpý±ÁîMC®ú5Ÿ–8Nî9H A,Ú(°¾²É%®ø’sÉÞâ(XöëíÆ1h£óqTúJ[«Rñ‘áSùŸÎ–o5>µÕ|™§ŸKÇ“Ììl@;­íþÊ©VŠ‹ûw觺ۯdR•@&ïvó~jï.ȶxî£?¨î1\ð^À>§ `G“_ýÂo÷ê] Ó$šóá3¥Št1n½Ô$ØBàVh £íë7‹S~dYkù÷ä ZÏð….[ÌÄÙ”Õ×hÞÎY¤ÙsøD#!Sy7FHï ;¬îJ﹜v­.»NÈE`ræF4®ßûi3úiC°„Þ“TçŒ †ŸßŸÂØ‚жõøäØòä”Uñ‹¼|M‡y¯FˆŸýÆ<»ãº²¶˜Ä¼d½ìm_+ÇO*]fGu.•Ë»eç Ú1Ȩ#ÏÅ žñŠÚ!Ö^tPTS3¶°àßñ‘ ½t7~vÍQ€¶IÜP”2 Ñ»‘—ãì¤Zgç%üõrAdMq}jÀ¦Œ¦ÃÏë½—A¡ÖåVòH]“t%I%jv‘Uââ 'uÏè‡Ôí;wr¹k‡3¬¬„dåä˜VVVŠ**5ª¥^zût_}˜¼óù'h+"mþùKÖ…“‹è”§Iæ¹ÔkLqÚõpòšoŸ¦6[-­Ñfù‘}WæÏ«Ù`Gµ¯êÖ‘5Äó p‚ìA–Õ¿¥«µ½‹Ã^§bùÜÃy Ÿ¹–¤-$.¾×ý‚GÚ¢"–îx ôuU$óDªq¬IËn¯P²,7ôH«fy©ï|‚^7 Ñ =µwçÂÐ0ÙmšöOŠóñ´~0Q¨å/Yö§ƒwαUZbwqýÖË—áÁ¡¡d€€)ÅÑ%„Õ7\TÎNMåÔÖÖ®Ëv‹ÏLnàû›wäH@ԛ➓ŒnŽ /j©O­»Èìªe½+’Û±gï^>šÉì·©ôÉæ|=’\×Ö×VŒy/?1öZ‡ÜYs~dl šÙ1ïÖÄ'ÏëyyíûM¤<ìS‘ÆñR±>…ã¾@‚ƒƒaªª 8|?}ð–® Åw‘kO‰/444Œå<·öx­ª…ñoÊ^¶)ïßy~á£À±í‚ú¾÷i²²›–ih8k¨©UµÚT~üø‘‡Ÿ¿¶áÙóçKÕÔÔD5U®y7ì¼~ß]Ÿ3 ÁMYjT>14N/++ÓݼY£9äµdØÀps& >¼·w)9ÎàŒp€ÌV"–LyßêI òž‰¨9ÃñK¦¦<þ †ÌöHA®„„„‘þRi³…g-Rv{7\#¾®J] ?yò¤ãŠ˥€`t`wÝÖäd yyù5iVu…[t@<—$±^ÈñI èPbõ¹dZÆóûÉ:[´¯dgû u;T¦h>³vo}^À 5—¼í/ªÈ/[Öþ×2‹Š—ÒÒÒnßOP†ØD1sìîAQ]ÄøæÆðá&__ßÛÜ+#ãu&DÛÚÚ@0†kè?  í#¦4>˜?O—kìd%î\QeªÿÍ©øv°‚¥š,°(Éûè½½b¥5ÜÕ\Jî©Ïáà0111ÿÍ[RRrïwòNž£rGj´”~x¸–qœ/Çõ×ÇBOØ(=÷ÜH «âzT½ÝN÷óÖ¹e#—H/º•J¥Œ?°–:¾ÁBª\–~YRN÷R `¢D8<Ÿ={ŒLX$—mGÈ‚09eã;•âþÜÝ%w—PÛ*â}+IÔ­ú˜÷µ+i HÖgéÒ–·eÎN½~µKáÜ‹ZþR÷ûb 6íNèC‘«ïðç3}ç‡ì …ýúÕmÇð×Î ê{ö¸ïe nò Â=«õL<Æx^æx>+ji‘¾qã†ÝÞ:ä2jÊ.—hYí?§ÛÛ\…ò$×óíj{8´{¶¿r/ôH(NZ‡ÞçÀS“œ e‘ɤU¤r´âcÅÄå ¶ÉT ®wû.«z ®á;¶ˆY ¬ØÌø¼4ÛÆŒåúÀ6srÔ几Nž:eåÚE\“«®Üaà B]¹ŽgHBP(çÄÈi‰„šo@nv "ö]γ Ðn@m†Sôýû«XA÷ÎÅÐ :cmûäy¡¸p¿DLŠfP{æÍ^®-N·q7AÇÐëv‰æ—Ôp@ê ½½ˆURVFl¼Í1òéil¤ý ÿ3tes¯í6›söìÙ3¿³«‹õ ÂØÅERÞ¬‚.ÐÖþ³Lƒx)­à.»°Þìy\_¹wöìÙ¬ƒ<­Q¤òÀî%ì½Ë¾äáÅÝ $Φ=(Ú6{>ô¸R¼ºÏÄœb9èˆ|çöíÂec§眩=>¿ÜÀwi¬8‡###­ÃÍÅ &`©ïëi?äDîüÇ£!½zOŸÎñ’ÜÂß¡½KOw Ø_—½ÞWýeeÅíìã«NåݯO帎y~@þ`ë“ÄlÄãBêÜÑúÆ#zo7¹öppÁÃ70å÷ßȲZª÷ Ö–ù1µ¬i]œøëM’qÏÏy,Û´rû?­|Û:+(,÷šàå÷îW¼v8|þ‘w§:oñ`vÎõ«-›åz»è,íÏ’ª9ø Ù^4Rr¦ôH ¥Ða³ V ½dáƒcÜWø õ\&¦¡>ë¾Æ?0ÑáLD5|9´1XÕ³eÀÉf“ÙO ¾þ…8ð’µ8§¤¸ I‡f ŠYzÜB=òŠÄì1~‘œƒ43ÔMO=ÅNzš¥oeXÁ\Ì3±‡ x×ßs †)åù ý¹ïj·AÜС« B\c­=·ÆTBp®­¹_ô¬\$CrÞÒ;--…¼Ùϵ×ä›X¿r­Y·Ä¨C]=­+gdäJ¿iâ†X}ºR!§«ÎÁh-†¿•ß ©3IþžÑ†ÆŠÊÊž qˆ’ò¯ü¶ŒßlqºW]¿rZ ­O+ÏzØÕºûŽõÈz=´£ˆŒÉm^yÁb~È®Çywžó˜ðýò®ç5‚h(¯þyh‹@ðððÜà4 Ëæð¤îGÌiOL ‡.°-j®·¼.oÐÖNŠI‹2½â”íÐÙÑb{êµo5vøF’Ë\œfðv ¦îöŒEŽ0@ý÷U ç“ùî3–lŽ­UœÝIW´²?»ó¬Þž}©Rs*.]²ìHŸ¢šy’+µz¼µ3ÆŽk–Ø&´ïû«¨‰*îþÀ¬/ØŒ™³@¬&Ó¨·iÏ¢å­ÙÕÚÅVïÌ9n‹ûäo/¢ÖZ—EN»xñ.äø^ëL.}—?ÀiX9P‰ îÉymÆlnÜ—Á(>³:f¶pÕ*ÇÂü’åò …˜—ÇW«¥¾ß¤µÌëíÜ$—®É¨•c«´\td œÔTÌ;¼DòÒ¬§³Óò¬ ZÄùr}ºyçi çû… /VÕ$œ<žôþjñ»'sÄ.¸\*ÑÝ/Å’ûÀx†YßyUÛöÂSÕEåO¤ŽãúºßÎz§]ÕÏܱEÇþú'MÑðü °D«äy“’’Dáu³™ªª¹v´ˆí¢¢¢Öç[ß¼IkPÿUCoÆDA¼ñéì#¤úÙcÕ7÷óŒå8¥7Ð'ÇgÏâ÷-íÓî>ñ惭‹·î½£ëÉv¼å›²r[±fsð!urÁišÜ’mRa]¥ÑrÎãÝm/¼B—W¸<°{æiå¿*®³hNÓZ£ ZöˆqpÎ4i7®PpXsûŒ5ïܹѴ®í‚ûÊ)ÆËçŠÅÎA&]t Ü–vé™ta{w÷Þ¼< tCûùê·Fd3]nî”èOôÜÍIÖ¬<ãÌm2\{³p‡]kGKò‚Š"Áñë®sW‡'ˆÍ3¶ë\cŠÔMGö¦iÝÕ¸§ÏÁÁà]4˜ëpÖ èÇ€¾dÍÇbmÔ¬Í,›»&tùîž+KËÈ ›—¦HˆvúA‘4„ˆ ¹8.\¸àÛSùÐõL8;Q$…§½£CHP0r@è9^¼såî.©&ÊÏÏ¿O~—Μˆä•Ý ÷î4 ù¸©ÞkZÔ¡±òVaó OòꜩBÓö&\9›&e¨f7:4væ\É£b~­zs¾ûW–‹[¾}ùrG¼ö'ÿévÈÕI?„…ÛíÒK.:d_Þx‡Ë«9iKØÀ‚Àžú3¹>¶¶]A…—ó¨¤wÕfYr¥™iÑéÜÝÕØºþÕüК/¤|Ó†"SŠ–æÞ3åI>°/ "¶iäQ±@YCƒ’9}ö¬Ø ÎÀ½Çþ³'.qí?Žp7Ì/Z#>KÉlg(ÿÄà¥-m7^‹ŠhîX°WRóZ“ÖÜÁÁÁà‰¯÷8ÀµCk©T(ä× 'Ç}ÂúîÌ@<2*ŠÚ§€ŽFt=zQ~0Ë­Z zøÍ“sk+‘@P7S$NŸ9¼R.•³æ%}¨ìD¾LÔ›9/1¡iô²¶ãW\Zmf¯ŒNã¡ç HÝÑ»¿ÿ Ûù/zTK¡#Ã.##:¸áh¬8ú5¿a“öŒ½ È[\ÎïËó°HæÄGêfßý.dZÅ7¶79>æðóÕÐ;«]e£$Z.)ß}Zœ š•ŸhTªT';˜=ü¸³jA5qU]h`/¿‡ÙÃØþ’ÓÞ~<}·ŸíQ“ mX»ý´·é¦“$nÿ‘#îC±¬‡'…ñ¡ ‰¡rÁ1š›ùqc}g5ÀïïÏÄDZp[Ú’¬Žúciié?JÙæ¬Vz/VzQúPB‚ ½øÉÙ5ÅêoìyÈ—791ê6 `b±KPÓ‚]qîÙý]™'oJly¢9/ zÐ1P³ /ž%—ì^âËd–èŒEÚ¦ÛÝyútIq´@n`Ìœp°bšú®?5ÒbvÖÄñŸ3‚Þ6Ž“ÔT±tÃGl‚ö³žç÷4äÊÉÊrm™8Î|·#:úT~¾ôÊ`Š03bÎÃ`ý‚6Êï´µ·wºØ]å;V#ñÎ&{4h¤h~žú|tËH±t_#£úíáµÇµcÏ‹_ùžÚѦ]n/˜Ü‰š»ÿÐ¡í¼‹–A'¶ôW­šO/•ÞâüŽ×SŽ˜tĈ̱°÷f >s510ˆÊL^w΂øþE9ô8Î1#[ug^“Sú䇷OF:¤'cL¤BfŽ6½ë+ÐáàhŽõ¾¸¡ÀÑ~§~êíSñÚ»í†b½Å86K©¨¦†í‰—Põ»fq g;–QHD$:2’£ò(n-.^ÿ‰ßš¦•ôF¼Ê†üõö4î°°°Ë ^Áv¹eþë|šþæiº}ö°‹³ó‡e‡B>¾LZºtWµö(„ˆu&?®-è©>®–BE«¼ XÙÙí\«3¾x­Öàb,½1­A ƒY¢\¾®uò‘Y¾œuî—XÂ>W†í²Q\¼Ygµ!þµwÆ„ý†ÙñZC¢XŸæ½OΡHn¢°`tÏ®ÎûÜø‰T1|LhÒò§ƒ`z‡æÎÉ´›NWÞÐ :T ¿Ãz÷½5÷j®Üulxlýä:ÖÛ\¼~Só¨Ýg:£°^ÒÑç¯ì^“µÑ^E¹2’o >^…Tåæ® p6 ¾ÞȨz×Ò:v}¸rüÎÛtw/¯»/ý9ÖÕÅl¸4œÔb_xÊ$žËðw×§ñq‰(¿ñu%º¹ï‚³.Ø õ¹eæí­ \ò©óçË»r*ŠÉ|êMc/]ýß>VæÍˆH”)—îŽvww‡!‘@<·Ôé·ÌÝC¯oŽŠO¿pa÷ëã[ŽÕÕ­ÿ°Y+è]ó F!?4$×®ìŸÅaddô&@ãýû÷oºº®¦_ºäÖpÍ»ò˜ÖÑš›kô¦û%{D´^ƒ@È!›¶àBò=(HAp§¥ùqÚ•wokèY¦¤´›ÙUÛg®4G_™\ü‰Gî#¯ŽúpàC‡T@`y¬ú}aÿ=éê×¢{»ŽÏË<þ¦]z˦¡  ªäŽ{±†&&k•,lm—ìV…rHhÄÈ™Äíí1OGë(y…ýÇŽYP© nUÉ2::Ç33ժ݆ûK¥³ÁLÐd-.;Í819ÙÜÉI\@§Û¥ç]}ާÞ7’{.ÿ‰'oEEEOíLªÑž²³¬Ì”£Zºô¸T˳çÏ?f—Š:fÔH×õe•î&ì—9U²¥#‡ìݱc‡(ßè½è(í˜UgH/ï'8_÷Ý x|ÏݪM­ñðAq`Ê'|÷GC´ØˆÍ~}âÉLF¬¸cܸ¸hǤ²º7\t¤-ZÚxï£ææÞ]Œãç€íض@k¹n]Ô­ww- |Qrø….â%ÕÍmh¯µ•U[>™À˜]¼Õâw¯–\,–B¥¶ùâñáŸ>lo/¹wÏÚÁÁŒD’å°KOÐ ê & ¸Îâ^ò¤e„–$©x9|4PÍùúí[á£Á“ãÜTT/ø°pÅŠ§Ï[$"òz)ãjDGÁÄÆù̱¬ºÍÉÛKG6håÇ¥X,‹½çé7\:Øõ¬¼¬Œ£W¡ˆ——Wîž©©©hV@öIÅÅÂÂW¼°HÊá …w¾°JŸòµ•v‚úæ!\ÍÍx_¡þ¤±ÑÜÓSùéÓ§5µµW¨Âko;&ìpàͦì¾ÁááxÍæŽx*ʘ˜Ìõöö>b¾lÓ¦MÆ^âiG&îmy™`„û¶öISSÏóÓs.÷“œÕD@/^½ÚKpÔ¹žË±öŧ(™šþÒÇLïȤfDNŠùùW[;::^÷9ÏøÔþ5G±±uUöoi‘Ε4ÔË—/WŽvgG”²îkÞÜ¥zÕQ5t¸·Äý¸®Î4$„ lŸùá*J,ÄñnÇBvÞ½kb‚¶ÁA“-ÞõWw¯,W™™ñö÷÷CûÚr×ؘoéði¹• KLQ‘~gW"ÉüX„Rt‚óÓèhyyy¿`yºý¥³'NÜðÞÑï¼¾]c½±J†Ž:éÚÙ±íþýUæË¤á=K"3--hXíØaU§{À›xå†Óú ™í‚…$•}º·K•“Ù.z¶°B¨sÅÞÕöööS×îNÈ â&Ÿ¯6x$1:P(ÚÍœ­wR1 xv€¢€ÿz=xx•ëÓ%]¦ææw½°ÜÛä¡ éOWmڤ˳ñºŸÜÆC véÇœ8Ÿ–Æ3¸øî,hY_¥ÀÆYnûùÎVUY6 ]xßS®–y¼»èÓ©(ÂÒGc“+‹È5zG]ÃõDÔ7¼fwãƒ'OÊr\êÜ-¼gø,w p섈1<•JÍÿÔ™ðŒ•½½‰Í⌌ ÅÝE[pk˜„ðëwkr"Ô|ÙÁsa—GÈ—=6hÅòÕ R³µµÕ®v͸Qüò”Îã'XSгèü÷´ý×´¿-Ÿ(9¹Ø(µ  åôiy þh{½ô«WÑUÇuÖ†…­ô½äþ´6ÃÉÃÃã)kß±cU:wž?§¨®>,†z¸ú†ü\}™{7uØô3igárF¥{m$QÖæ«.ĘìqÔÄì–ÿøøÓŽ$MÕñÊ»õ åÅŒ+*í­íTJ¸ÏÛ²4.&fÄáÁü “-[tvŸ¼ônƒ’’Òuf—p¶[õØ:à¨Àòãö´Þœƒ:,ŽUÁyqò®S© ]¾Ä´*É‚þ4ìøxJ]—·´“Wµ²ŠWk¡U òÃd©žktÊMɨÆêrmÔÔ3C¬àc2Ò+·LŒ ¥+kxhИr„³ïßœŠ_("R-ñ†QYÉ|ëÆ.¿ÇA-ñ5D¥WÈa×¼5[ŠE4o HxÊÚ¤/®q\Ò黄‘¸–¼ãmöh Þ­­ÛÕI«”¸_éä ãY…í‹2žt]¸¦SÚmΫ".÷«/ZKD\_ÜOPΟøÔUç…ݽgB”/|¨á¢ËÍÃjZY[o&¿)¨e0ŸjeµXEx>Àù+@ÈûW‹w3÷pDi©5öÊ€©dÊ$cqj£‚³¶ÊÑb¾ãã=áj½ÍWIZ¶ÒxÍzJVpÎc÷ò­hÅdùòãp8\ÄÅ >™—÷€µOjj ׯ=>´ØÂW¯h´ªär€¥ ÌÎʼnꮴæü­IçX‹¾]Ô¢™ñµºía_ï“-ß ®Êä›úÿíÏî‘äTè)ÌÙ¸I.Í8­Ùö[ ÏCéìÌŒ, 3õ7nãøï¿=ÿã&_ª›+žìêêA'{©yS0ÿ†ÔˆÿJ ÿ*ÿ#ŠüˆE#þ›ÿñâ‘„Ãcˆ$‚@#ñ$4š‚ÂÐHH –„¤©8Ú5äÿ?ýÿ&µæ£êåÁ€RQ»ºR¨¾37 3Ö$ÁþWÿÿ'þ‘h,šŠ%QPh GFQQ Z **Bý¯†üÿ§ÿTo_/bu:/÷¿C5þRÿ‘p4 ô‰ZD Yþû_ÿÿ?òo¥ŒáZK#´Ò0K[}s3˜¬ªºº=Ê@]ÝÐÆ¶ÞÔf9 ¡‡Ùøé (›=ÑK]ÝÈBöu¢õ +Ǻµz0Ôj<õU5à«–j” T,ˆ5`°·¡õƒnÝšu/•UÄð¦aнªT?¦G –¬;¿ª Tf:á¿–l58€ÝXªiàhÙÚ«âeÕÔÉzU[=Uo_b€Éëë~ÌŒ´_Ú@•>´dÝØI硊IŸï3d熟J ÏjÁ*^òUš|ë?02+§: \÷'ú‡À¿Ü°¦gi¦Ý®1>+áç/jd”€ö¹HÆJuöóVzyÐ=§ßI 52ƒ! ó§zA…B¼¨ w*5@Ê™b tD$ƒìïáðõ/›ˆDöÕ©Dø›ü˜TÿµMPåuö/¿ÖBŸªÂø¾õWôÒ‰P©„+ÉþT¨Ë¿@ò1¬Rgÿr뵄JÈ+R|ÈLo H+Ô º¿!ŠtkhPA˜š¬{‚<蟠j^>DŠ"{†¦T7÷ðûY;]Âà—X Sg•+`«ÙTõ‚éÚ>¾²Ó•3X5cü©Þ>TX€»nRy@å/È^> V-ØÔÐ2ßÖÐ`‰+LÒè©ZCT//†/‘ìAwÓ’…˲þö%R(Sö¬ `SÕÞ±&¬kâ0 Ö7XS–]ºˆÂÂ×ßg:¢—‡]vúö©U½¨4Ю†¡z³[Á>“6ÕŽ]Ëg¦J õ4UC Ì…þM‡¬*@²ÚH5Œ,ø™=0»PlºbÖT ðŸéÊßT„b—(*>B+ôM臯ë`À¾µEÓUG¾ªcâï„ø\Ʋӵ0˜^_]… ÿ—ÚmPeéÚ_Ñ`MX{ уÎf€%Ñ:5Ío«w|ׇ/¸ñMÖTÈÈQ¾tÃø•~ˆt P»oú2 ÌîhÝt­¨¿émzÒd¦?°«²_z§A¥/¾é™U ã‡]± €|½²ß²ù Ë‘3äù)aÏÑܪ™ùs^¹yùˆ^ßöb¾ö+3úª€0ßj6ÃBUóü]¬‡ñ…7_ß¡“?ÌúCûó"|£iß/ Ã×Ë#€Dôÿl(T½}6«2TUÕ h¯݇NÕ”…MmûÁäT݉tÊô„¾-DôÃÿg³?]*HqE(ä,ˆ6`öŠË¿ÇãËU–/_¡þ­áŸžÔWž«ÈÈ6_X?Í1¦·7°j²¬’lI‘£Pitªª7²^€íkˆdVM§ïùøMß,ÿݨS×þÅ@Ýý@ÊØ]~³i%ý" PÅ0Ã)ÓÇðaú“©ì²cÓ£±J1§í7Åß#ØNE6ÄZ¡ƒ}3墇4W¨ú•š[|¿› XE’—Ùˆ4¶´Â#.ócúhêhnjîì¿Vª³îYIògy×ïxh²ësÛÝ~áæ¿«¢4å™ -6¾­§¤þÝ}jîÐìþñ¨ŸK”ýý ìÛþrÌ?•<üšÉ_]xò³›MQH¡ú§Ä(Æ*HÄ.½õYÔ4¦…êÛn~¬dHŒ@笒P,@÷•ÞMmz±ªA‘|ü,¸l…7ÑHÏjwE~nƒüªõT)Vé(6A ÕT8ñ³–NÿäHs1܉©ñ–‹ÝŽøŒþkYa¯×t™EVµ§i%a³Z 6M:Ð+0mÀ& «‚‡«`qhÇ‚ä=8‚ð—2óíàßÉÌ294FsZnþDž€VA¢p`|,\‰Eý„Ì÷4IÀð{PÓûšßÒùS¨T!ƒé í€Ó2e?¼Ag^ [=€âB¥ =€}™îîÜB!©H‚ ° ‰CüŒ]¨ïIeü'ÍÀâS!»c×è‚ù ´ €¹/à¸Q÷Ùîˆdw0©â‘ìj^?\[¤ ƒ‹‹WAàF-öOÄBzüg†°¯r¼¼HD²'ÌÇ‚«PeÉi—÷#ÞaÀ£X¥‚Âül•ñ–sƯÉt㤠…E²†Ç ¿0<á‡E¿Þ<ÿ9!Pg/ÖW¨á߇Ĩ – ‚ÂÂ&VÈŸÕ¸üU²@“ƒ  XÔ  û95ð¿« ûSJ~Ä ¸ $˜$4 ó³á?dôÁVä?yÑ_äÍW=üxÁÐxkÁ0HôÏhü“Ñò ¸QIì[@Ža™M,û Vñ'³Icü_ B» ¬0ô³‚3X%@)Tàc§.ü@Ñqp8‹0<îWÌ9ÿ#ÂþD•  +"¢f:˜‡îûŠ´Q‚dztž€"ü‚Î#á¿P¹õWÅç/½|KÙügýRâûš§ßXØâ<ƒµÝâÿ5TîA–]ÈØÚ~¡ù»#§ïqó÷aúN£­•Ó;ŸßG¬JðÓ¡;Rû«rÆ_7U^ƒˆBQdŠB P4 C¤RÉD ‰"#08 -«ýmÍw3ÐÊœJ €8âáhô‡v}daS²·¥~\ÆþÆ‚ˆŸ t¾*þg¬¿•äà5%i»®T'i+®cøì>¾þœþåÇlaP¡êÑ>þ3g̺馲߬ß׳øËEÀa8<Ž¡âhpš‚$!ˆ4<œD£ÐX†Fýw.Â/ŒõÏÁâßµ 3åÌ/¯ÂÔVÞ\=!,õrOëèçŸø*b`:5·“=Âä6e|fØ· „ಯ6TÝÝ×XDhŸ„Áà܆ý2 X`[F(|ÿméìÿ,^ÖþvvH cïü€ R>"‰@FáÑHL ¡¡$%£  Û@÷ÿ%åó üKªó.~¿Ñ$÷ OqœìÁ* Süõå‘#b¨4G„T K@‘P8‚HÁ£àhO#MË«g%v뿯þ] "GDQÉ4 ¤A¥Ùž‚¦QIH,‘@AbH$T›}*@™…ýÇÏ ÆLWóŸ˜m4‰‚$ÂA”Çc(KÀ¢ñ$O†cI?ý~’ósЧ„½gæ 0ëï ?ßm9"™@!"1,GÂ’$œ|5‹ÁRH8$‘BžÁžÕŽ=ŽûYÝo#¨3ž"¨4ƒ#RI(*˜` ŠFF#H4ƒÃ¢(¿Ÿ þœâo•ñÿŽ þfr:SÙù'rŠ…ãàœ ºF€µA`Á¸h" ‹‚ãˆ$$‰øûÉéÏ)ž–S¢/ôÄÓ@›@jÐÿMae°¿²ï†¶ ¦ž|¹Àî Ì)œ©dü)D©8,§!àT" l1Ž‚‘ À Ë?)ü9ÅßJáo ¿KÄbqX<fM†‚Å#à4,ƒC’q*1=‚{ ÐÙ2Ö`P„òkrnI pÿ“¬CÙDû‚o¿¼ÏTÿ‘¼£‘4<ž‚–KÅi88 Ž"S‘$ Iû ­îÏ)ž’®©Çè¿‹µ…âëo$Ðæ³dLQúûà …âŸ I¢RH4 œˆB¤ QážDÆ£(4’ò;Fà?¥xJ ¼‰t&Ñëü± ý}ÂøŠÄ?? …FÂch< ‰#¡áh< 't§ÂÑd,ñ7 ãNñ”<I>Ì€ÿÒÇ¢ó·¾™ Ä „o¦û»_=Æû•-Þ?É6‰H¥©D, ÇâQDŽj„& hh$M$ü~²ýsŠ¡›õtbÅÏ…û»'¤= 4 ‘Š ÉH‰†l)(,œJF’Èè?ó~* b¨@/0`Ðë ào/°Rß]m ÿ¿—察‚@LM Qh(…F!âÅ")H‰Ã €ú}MÏ¿{ÿ6¼ ôñ À” ³õ¿öÍTdÿ‰éÇÓÐdUÈ$EÀcIh,–ä€BF‘Èþ÷SŸSìËü}Õ㿪ñTc¦âúP‡! p"G 0#0<’âP  ý†¨è§S¨^TÐâ÷w¿¡ìÍTþ‰ì‘`ú CaÐT0  GPp4ž@¦I¿ãƒµŸS<%{D/¯ßEô~Gß?Ã…ÿGh$ ôx‡A#Dž‚#S¨d<‹'a©ÔßðaÃO)† 1tJõ74þ†$ ƒ¡à·G È8LÄQAx†À©CHÜ×$™©³ ‚˜ð[JøL¥îŸH8ƒ…£d@ã·šFb©$t•ˆ#®úý$üç3~s ÿŸîßV¸g*pÿD¸áD GQ1H,IEa±H"‰BE‘pdA¥ü†O-~N1[¨\Yï&ü&òý÷/¸1¾+8 K¡Â‘$ ‰GâHx™@C¢€]Cá 85=2ûÍXhL¨ýo)Ç3•­„uÉp O£Ðà8¸ˆ áph" @k óbÝŸRÌ °þ+Åÿ·Áô %ë0Ca2LG¡H TÄ ph ŠBPQ¬'¿Ý ³ŸR̬ ºQÿ¯Á DÄK‡S†B“Ð4‹Ђ†Áâðêô@ëØ“‚°„¿7ë•›©ã‘S³õøò ¬L‰îïCû᯿¡ÌÏT»÷Ø]ª²~œz_€ý¢1”Óäë‡??µ‡ð#$ÁÑh 4"M&‘©€½$°pÜ?|«äûmUW×ïEzÑñ§=Ö¯~c½|þÓðŸÏŸÆ M“ñSÉš)7ÿÑÖèÀà 4A# À÷€Ø‹!sB `퉟R<õŒÙƒò×Vô{PVü%ÿ(Ty¦üƒÚ°¸÷W²ÝÀ掶 5F„1é~Lêô›)5ìKΊ_ýël¬„ ?ß6˜¡Dü³ó`P¿hºaÉH2–Š 1h™ D¥èßñ<ØÏ(þ|b*+ÀÏ]ùóÈÑÀy‘(4"ŽAÁipŽ' ðH°X,ŽFøìhõ¦Û‹&º3cþÌE×k*Âçé±þðòúSbÆ·Býsºf.Ô3´"Ô4<‰Š‡ÓD, ‚4žŒ&àÈ4™F…ãq¿á³ŸS7ë‚&ƒ >ýàCá]ðd* |ú@_ݨjà“ݰ\æO `úÓa4¢ƒª)« zÚ¬ËÎ×7•ý‹âÁ,Ñ€±³~i«Ñ}¾ºÞjSÉÑ ¼`3¹Ÿ¨bΤX ÚLî÷ñ3œIúÔ{?`i ,ÐÇ7‹ƒ™é ˜­—¿ÙfáABæM¤Óg¾Ln¾Ð ÑUÁÅÃ|Réàƒá-ݧF®þyY@KºêL&ú§Îˆ HIfÐJX;“û©lŒOâõCmD‰­+ŸµÄÊ¥9`|¥ùS©@AiADª&,ć t’¸Fð÷ 1ªz@Ù5ÔÂzûP,ôƒlÌçvjÿ˜M_¸Áz5"ÁÝÇJM ìòxƒD…º¢1½T`àN˜½™éZ[˜ž…Ì^ÏÚZÏÂÆAÜ ¬ø•He÷ã "P˜»?‘Mq‘µ)¸_OßÌÜÌÆ𥱙…Ѻu0ãµÖ0=˜¥žµ™­¹ž5ÌÒÖÚrí:#5Ø:*õ×€ÆZJÖÛî,ë?sþ89a€yxQ`îÄ@*2˜p dÒªÏ@¼|èn,¦°Ó¼Nñ\æAƒRÀªÀ‚üÚ™~Cþ¯EfF'«©À0p ‘îéÖh”Òt`ìA{ùøø«Àô}Ðíkô`Pö¸*|…í:½¯9àŽø‹LùûLma˜Aß)L6‡¾äne{2Æ´+cǺƒRBiϦv>¼™³z|ÎÍæãååÄN÷MszcÆrÅ ¶K„ReBÙ6–+J®ù徯ÎÜþ´Å÷fX¿²u‚©ØS¿£ýGm€ Bs¤³×••‡D%0ÁþhQqËå°øê?ó‘@ôýŤYIƒ€ ò&zB|ÿÏ‘ÑÀbÇçEýš/@È©,«Kdm?B7Ó©@— 5ÿ²þmj£iíú‹Y©±%å/¥JÝ Tk:-Šø cV‡É2ÀdÙï8D †Â(ˆCŒo’”ÆuJ¦¡¤$¦°SÒV—¥Ã>>^V€¦@Û=¼B` _*r,^L…lìž!ˆÈîX ¶–îžå[%ø<ç¯$Mñ?¶^*°ÓÑt^¿Úcùjizdˆáÿ¦-‚oGŸI˜üçÝ6y+X9R¦WmJÐXbh„ p…*ƒ¾ˆ%1rÁAîT– ‡[ˆ©SÞšuù˳eruPêoU Ån@ðÝb:Ý øañW* Ú{@ 6éÀ×L Ë÷šÁ2`S)ÆÙù^þÞH|¦mZi?1à+I'$ê,?â·ÏY²§ï²s²u Œä­öM.—¿º¦sêÀ ¿îe*ìúq"¤_Ø}€4þë mj7AöOWY¹r¾$Bþþ!;ƒùtÂb(iú—?ØiÒ¿¿zðò½TM§%ÿº¡¶â.N÷żÞÐièo9üwº¾ ¬ÿ†4öTWR½µ½X-Á—éí?šì·×¦Ò³Oÿ:5ûwËDk*5ñ̵{Z Œ!ÐÊjÈÂ_ß4²µPƒ¯º`áu(?K±>«“1P:*ÄrÓ{*4¨gâO¬fó·Y”Ø» $@H;i“/”òyjJS~hãTr$ØŸµ`ŒéŒììÉAô>k 1às &`m‰¾Pr_ÈtM¡LV.̯ll“‰ÍÈaöà ‰Èð€’†°]+ {$š¿7{{2@ŸI†~¨¬q=þõgE@5¦Gþ\`ONµPƒ2Y0Dfê¥O uͤ “Ê`a obdk=(S-=S¡Êg¼©dw"݃áÍêÁŸ ì™e¾Á3|¼±…ü=+H yQƒ¡z%l,@óðÖè+N€ÿ„§„ ºïs&nÆ å¸p°lÀ…ÓH2t‚…†!ã),GAbPh ùO ¡Á:¯ñ%ã_{õ¿—ˆžŒ S0d ‡G#T2…†EÓT*I"üh\öy§_ù¯ŒÕ´§RQp*‚c‘$< I&"à`â* ‹&Hx ´‰ñÅ”²§°eùïPÌ¿š¬¸,™ˆÇÐ8$âÑ( ŽF"Qd$Ç`¡­OW=K#W³5z&F3Ÿúç3„$4N ahp@IBáH"‡^ ¡P‘4"‹&"(T8à.<ðNÆ£É$ ‰Ä¡PÐV/ ÆÐÚÌÎÈÚuží:WK뵆¶6fk-þuº€%’QD$ 'PHX ž Ç’áwhd8@"R·Èd‰¤¡P*žˆ"‘P4ƒÇ€3f3ÉØÌÜÈu­¥‘µD«¡‘¹‘Ñ(< E„£Æ¯Ç*·GQÁ²!Q*K ÿˆ(Kk#;3#û*‚‚ƒã‰‹¢ÂI•HÄ“ˆX Ž@PPd"&4G£P)pÐ\1‰ —G“ÉD …À¦j­¹!XÂ/tY¬µøVý ?ªdI ABKÄ£HÀ€ñ8"††¢ÑHd Ípíê µp Ž¢ax2‰¢âÐ$Ç“1( †‡ˆE"hX`ÜIEó…GP1< ÐC²)ø<×ieúåµøq.h9"œ•kNÜ&“ˆ'ÃÉ$ ƒCãˆD ež¡Q°$4 ˆ `0T,žˆAc©D`e°$8Á"Ìr­µë:#k3=óÿ )°>Š„B¢€6!±à2 X<<Š´OÆ!Åvþ¿fÖ¡z4‰@@‚ÁvK‚ ‘p@IÀÖb?0묔ìÿÚhTô®'‚Š Ñ€NâÆNE[†ÄP‰ÈŒöOýA Àæ HT4‘ˆ£b°ŠB†^AŒå†„Öë_ K¦âi88 ‰ü¤‹ÄÒ( ƒþJXþçÁ¢Rþ>Üý»ñÀ/焆D»G!“È$,G@cDéG…8&‹›jS€äÛ*?ާ~á­ùß$ž‚pí(–úgOYg6‘§Ú‚¯*°¿ŽþŽC¬=©!²Ú?¸fÂ_<Ë3ÓO%´ø 'üï{ >c)˜n ¾ÿ¨íÏ8óCFüuüýÏqV|ÃzÀ(«­ççšÐî4&Ñ Fùòô\ f?õĈU±’•ÍþÛˆêë8“ƒ2Êt`þÍæÿ¯‡Xÿ>tô+Vû³Š€ø … D!¢Èb€M¥ "ø@ p˜¯•HCcZlÔþ²/±B#Èä²ZM só€ÎÀ±N)݈tèüÌÍ—ÎÊ‹ÝîúØ{úß¶dûsþ Öwh“@’Éåò+zuÚ3&Aâ¾ö¡ï`,w—–IÔ‰”÷pÿû›Ù%)’¢$J±ãÐ@"‰ÜÏÙÙ™Ù™hâ ó÷*¯&£‰<Ó±dÊOe^[L”‘¥ùPt‚—7oO týÃìaÓ’™ó{uÉïãÀ8‰ôý„Ü£Qm6–h5Óo÷(ß²vÇs®ƒç´H q7xN‘J¤c7_ˆü^K¾”]á¢óVtléÞ³%¼#£îØ.àH¡wï"Ë ‹·„«^͎Éi·gQŸ1 |‡á×¶L¹÷Îö š¦»f•¦òrÛ}ÄuÓçžô8œ¨@!"`>±€¬ÛQÀm“-®EMNê{TF°Cfú¾M¹ïÔ;9þùÕ)|¼9~ûÛç[-ÊÜ%¾•t|ë^ñ­Žm}¥lëlT˜Fº¼‘¹Âº†º¿¯Î9xÅeR•û‹_ã±TÅ´GRæ±ãû$c‰Ê¥ ý.Øx!“î s ¡EÊÆ;Á0›fÇ :šw‡hÞO°ã’¡±˜•$r {“Éb:â™#ˆ¤Êou6] j‰ú$f^Ê} òÆq¢;Üt´íZ Ûã¶Ü Ú6×MÙnèÆúb~"«>hù¦@a#÷x>9Fÿ‰Ñô¼Ø2ïæqÝ\•ü”.Æ;,s9‰Ñùä‹y:¾aC¢Q.ó*(ܼs¿@9°Îr¾í´æLxÝ÷ôúK›=Ù"xÈÝØ“ÓNÞèä;%oœJŽØxô­ª|¿DHrorí‘–û‹rÄ,Vާ*ÆdÑfF± —Teÿ*|ÓMKf9q• Žå”y¦SY„X§ž¼.Ç«"Ôaá+›§¤^ȈoEj $‹› £r*<ŠYëêŸ=+R´µõ£Þ-ùÛn>Ú»&’ÝÑ|ÏdÉ»õ²GŽûÝ:Ø#7ùnl?—N¤;6½[âʱgÇ´¬›Zß²ÑBßó)ó÷q„„>¥°)˜ç†&¡¤i£•rïÓ%q¥Å‰É¹ä ê>ˆ'ÜqíÈaÄ’¦co貜ô{¯Ùz¦t@¢”;2]bY Ö*€¡å6ÎQcßþàˆâ3L…Äö(0L*Ð{Ävü°©?ÔÛj|ßnl)‚/›¸"ð­Ðg¡E<¶.õE亮gz>a¡²¶DEXu£AEnmã»y3†£Í´M›r# 0 °ÒcDÚ”z xú˜·l‚ËT±{áˆ-]—È0îBøf(èÙ6,Èo¬'©­ÙfI}mÏ”ØÌ (£ DÛ<´™]ñ1Q`oèy™—y'Máö¬°wBr×KÙÉî÷ÓÇ(߈Ýiåa8•T£yÀ1½Äùõ5ãRYzÆ£:všÌŽ.ÊMÅw0JqﳸÃøË.2iÖ~¬£üénz:Æ(‹Ì¡bF@wªÕkq*Úž¡þN0ƒŒ×uÜà~rƒBTéØÁ½7–]Ï}_ò]©ƒif>§«d^ÑöÅ|ŽÎ©è_»ýf•nH]LÍ(·C.ÿÖÙ¢Ówt‚ÇÍM¡ÓutºŽN×ÑÉW·*_½[¤ù5¸xº!FÌ88´KAè >œ’¨ïW ‚O™Ç m·.p$¦£8nXÓñ𵎣ãÁ÷Ì÷ä÷_^=8vëÀÉ à&¬²'DzNàXu"i[ÒV÷·ÍnÓxÎÎeÇrï ¹gŽI¤iŠ@„QdÓF!s)0€Èq=_È.ôÊ,ýÒ÷LΓ¡@ÉÁýö!†¨¹».aGwq2_ûÊu÷åØ>b<.]ñË0¶¸ãwÛO Ñô7 s}·,°(±eÀ|Å _½ÿöýÙ›·§g~}÷îíûÓWÇëYãäC8ŸÇ‹ÙP28Dý›Žc¾˜Èiš±!YËNw¹OB“R †㔇\j…4‰åÝ*;m¯X2Œw—¬èÏJïÔ‰’Hÿ, óм:3ɳ‡a¥dè‡à?¨<¦0§—ÆòU\y—hPó\{YÂ9ÃZd»O^µiаÅxêŽíG´Ý©¢ÞxË1U/p´Ðö›)•–[Ž&Ùs4ÛµGÉ£©Þ©Ý}¶^®´Ür4BŽ÷ÍöÀõÈ-T5ÁµÐvÛb¥åöà©Ä´Ùa¹¶†ë©µÝ™WŽ0íÇ´ý|¶Ò:Žjí þÛð&M¹f_¥îϰû³6>\•† Fs½ôk•{¤)ИQ³×ãùãi”ôŒ²RNWéKã)ÖïZFÙ¶gÒ ñ4“ìž4ƒ‚„Gǘáb„2‚baF>ûf{AVs'ð·ð ß üû0´-À¯”¿‹ öývGA¿;3Ø ùJñ_y–]«ëU³°¡Óm/ê¢7µFÄ1÷Y£¡zv[£ýXäæeª×øì•º¡%Ü}– …¹n·%ØC‚Û ÿJñÏ~y7œ¨Kaðß-g?¢µ=ààŽDk‘¨Õ~È+ì°"7jk/Äoq1n7Pï! ot¥øžˆxƒG÷YŸ»­ÏÝíüû:S}qzz£Ô‰Zû,I [ÓnKòY‡£µü¢^eÍÒ¬3rOŸ6èø1U~ঊ’š\¥|Ûï¹RÍè÷^ÌŽ~Èã;ê2Îe’ÄóB±[KœåÆá±Ñtr]í’:¹¢EÎóbrãi6—‰Tg 9Pg.7¿¾~]è«ZÛå\”¦i‚s)?1ïgïô+|˜¤lŽgÆ8•s•sY¿BÐ"ÚNÙEÆÒáAhx ~ë&a•`ú˜uTù¸ÏUÎeÌSÌõ[Õža¼XŒ³ûèãQ©-à~“fU¬ÍÏ<¤$ô|Éü0ò – Ú`AË5Y¦‘ÕiÀÌãÑÑ.]˜‘0S†¾es$ÜȲ,“RÇ ýÐ £ ë"Ç¢û¨oÓeS^4VŒ^Žƒ£Ÿå°"U÷ñu™|÷Ótöìððòòr âOWçr:ˆç燣©Ÿ²~t…Ñä¼Öª‘Ì9Ì=«5›ž¦œƒC¥”7¬?°L#ß‹C\ÀÙÂX\á'vuôè›îoÝ fn¾a³‘ZšÃª•á‡p4z%<üŸñDÁ³ó9› 6kÓ‡ .¥øiyŽ©~[ú·ú³mòE\˱,j9î7&!¶K¾1î ³¹Ÿ÷äﬡ¢¤M«} rÁ®y‡Vµ¹dÀ\Ø ÊÌ%Oµ(1…$9}ù{ù–wÑ€&F:JÇPõX&|> eRÊ∥0h=˃”ðÜ’idôH~Ï+è9=˦=›u€]sê6ýþû?p9(õ‚Dâ·Ýî»îÛ#nuÿ[˜Ž­Ûÿ_tÿ/!_ÿïþFç<'ÛŠm¤ vAê(6¬R„ ] W¶¿íø½ÀéÁá¢gKQ€õC°ÈÊÔµ…q|ÞjXøÿÆê+Ti 1ížmÃ?êõlÏÙ6oe8Õ £‹6 Âóh8V/°ƒñü-ƒ +c¨ÝÅ)‘ŸtÐ÷2dü£¤ZŸ£–GUí ,¨ÕóÀÅõ¶ Ç]N%ñP1šT¥:UÒš`~s}4Ádç,?»°4e|(Ežµ7Kf¾:ZÉžbW Ü-£]]@–s¹J¼¹bÔʆœ-YÌ™`@Ù'ÐÚïíðñBàÐa”£¹Q4×4T@4B) Õì+²™¸ßï›öžÙ£°¨–ïô( ¶õ¿ºÿk׋!”Žïs9VGŒÕå©,$²M(çj¿i±ü•5.]`°``<¢PÞi…òA3QB¥Cû‘”HVÜ8:GÑ( €Ô‚FYÍ£Ãÿ4r^ÁøÎ’x1çr§a–Zh$ <5HÇÞŠ[n#n­î‡RÆ¡²r™£V] ÈäZÌ€-Óò›áµa/Áh-·L’­"«|w•}›ä?¥wPB›þpÔãÏÖË–í8ÊÄáXä?ŠÅ;ùïKÈß¿ýñôß½2pw¿þãõÉÆAÿðð7ûÇÃÃãÓcã÷žþòÚ°¦q:gÓDé.ÙøððÕ›£¬è¹´•Žçôýá'lËÂÊÙ×~Zª9©@9Quøi2ž&/š±‚ ÐµUYÉ0^ÃD¦ÌÀ²}ùïÅè"H¦i-¹fµZŸR]ù9jÞ™¾üõô§¾f+üÞÿõ‡þñd —Û9yõ2XÖÑð¹Vzá%ҢܱÖMeJ)UCíî£åö2ÔGM‘ŠIÝòOŒÞ<3–Î Ö~ýïÎÓçízÌQ]sÕý=z1M?æº=&ž$ÈCñòè0Õ¡”@«Ð(” à€ñ >KËoþdL?Í”rþ{!çWƒ?1ÖÇ¡~Ó®¢¸š&2kµKã² ÔÏ^ë|Žþ’{ 9 êø÷¯½SMTcþý±Èn/?ƒWÑXð'êø'ÏU™ËÑTÄ—O㘉Çz†ÿ”£óa ï›A›«S[ÖPŒ$Ûr™&5W¸§ñì W×Ó…íI|!uþY(ÔÃà1ð•ãDÇiɺþ¶ª¸WèŠ<wwvYZŽÇsDß— ªâï"û ày‘êÑàõiCM(‡šø3ÃqgŸžè`3Bu1›Çx`ãÑùô /ž5ØË*™GNt-£ZVOÛ³vÝÀØRæKs™V\LBÔš“3`™àµîX+­Ü/#»‘ ¹»r+[ÛE$ˆÀúæ{É*‚/Ê:y£J—rSGÉx2/­Âv‚ô"×Ë/Æ¥§c­ïË.‰£u!×ó—újÂG¿°ÑTà;—Ù4«–„Z3tW¨´ñ^‹üËf’6í°)à#Ö«´u X7ôAi"1yf›ÖÔɤҒ:“4VÕÆ‡b%K6-Ø.U¼OFBöðУþ<ßÞFþvùè ¾b}¤+ù*ÕŸçö³d¹Zå"ÉÕ”«GòUð0ÿRŒz2zÈæÅ6êOâ¿ú˜´ºŸÈ1àö³i<•όܭ arý!Ûò Umƒ[Èâ*QÌ• Ÿüéãvq ³ü=J®nHÇ’"ö¨þæžÏ­¦8jxyC3TPåë zÿVì&çs{«TѨ5ή¬1ëf¹µ¯æéÝмrˆò ½¯kv!ç H2k&—½ýÌÙ} 7õq#ókž×ýåÖ73Ÿ/Oçodûì¢ìþ o1º>§Â$¾ô¥ksm/2]ß¶¤d¡-ò+†+‡=n3¶:›­ïª»‡øeîÿŒãuzðgr-¦‘M÷ÿ(1ëö‡ºýçKü]°¹Q^oãå£?ÔŽøÃ8à=ã ‚ jÇôŒéb<6þÕËˉz¹3±¦d´R2ZSò|¥äù𒳕’³5%“•’Iµä£=ïîÿ-ïÿþüîP_t–x­t'û·Ø ¡uû¯gÚÝþïì¿_£ý·¶ë mµ0ŠL¥·³ôv–ÞÎÒûõYz #Üb>×ñÅîœåwä¤r²#̯y^Å íæÖ~R~œû.¸7ˆæ{š´óð‰94rà-& zÊŸ#ß¿ÍaŸ¥é|„ÄñÆÈQ†ÕZi]±€Z¿Ù³íâ¶Ú€yºåõ ô¥Ç •óü1Ygn bÄÎçl¢Ôjµ±Nd‹–ØÜñm;pBæЃ \Ðô=8p9Ô V[–ŸFm† °p„#Â#Éù3Rz<LXnÊ€¨}&àÐÀÛ \rRú’¹Ð0L±ÚŽã‘Èç¾³±ý³ðêL‰ðm:òƒÈ .ÌvÃ0 TÒ ïø®p-.DCGãE2lѲKm@Ð=lÕ&QˆËá9Ò6C§iˆÎFÓm{Òb¦G¨mIx"C&uàÍ"›[¤aÔ¨toѰéQÓIJmI#ËFžô¨ ¶ÏÃÕ†'ɹö*úÛ `¶ îrJ˜0Ç1£0”®¤®Ð%›º¸œÒ6èCQq&0v·Ã½€¹&ÀËölünZ°¿šû¡.DÙz*®iDmH#"Z–íP‹ùÒóˆO·uÓv:$ðC‹Zðñ–‡R_„¦:€¿œùÍý´œ„`”žÇ쀌rNÇ7ÿŸ½konãFò÷÷~Š)»*±}ŠŒÇà%o©"ÛR¬:ùQ’|ÙÔÝ `dž)QKRÎ9W÷ݯ1rH9RϦV–H €én4ºÑ_ŵŒ( éŠÎëN4ô‹¤‰AaR2)ˆ8‰cŠ’…<¼u7µ4pTÙ¹RT™fÆÆ“ôÓ(o5­²KOs½ü’~Öå{îr¾çzS|»)Ÿ•¹šK&ÉÉ™z!Ñcé²ü/èy>e§›O€K¤¶fíéiVÞ ñ?Ò4žùChw3LKÁâl]äÉ2+ ´ÎuJØúN ›ï´ØìÖƒVÓB<÷cдqàÞ7ï/ß“ÞÙéËó£óßzoz½éŠ­5'^1'^{NÖW.rÛ˜“¨˜“hC|YÑ©¬Oü/+øa0yQ^ù·"Ê}¸hÄ/FÊýD=Žg3²©Š7T÷ð† Áö¥7Ëô­Þˆ¢õoDQ A K›â«0]„ævp7öÿoöv¤b"dõD>»¯¿Gà&ÃÞáF7YÃ`®Íx2Óä œùáŸwÃÉ‹Wé?ùÿ[sª´bª´6ÍÀRíÇAN¨bC3¼NuóógEšÏž—µžï¶áÊ· [ˆU¸Ž›³5”<¹~o{¬#11”V …Tù“g̨Ñ8tód–!Im²JñVÈiÎr_¹îɳ`ý²n1¥¼tòà©=ÉÊó=Í §?)±Xÿç2É¿IôÈìƒ43¼oŸÖeD…¬†´wÞw…uŠi¨BÄLY…iˆ%3*¥C6™%Ãß’»ÕSšãî´NÓŒÉk¹[Z*lŽÑsߤ÷;a]ž³ UÊH žs¶=ž[ACÆ93’F‚HÁ2@dŠCiÆÉ,9û–<¯žÒüŠ·caM×âù›SΦ6Á^°þñiÝÌé]‘ìﬓ¬–f]fVعœ·‘ C•‹ÕÌ,ìv6/^aÇrYcÌàYp_‡wÁï„©$’6+†“IË^ÒÆ'ªû6ýi=f3®°K¹ª7ãù;W¬*tüž‚ëß¹ÁØåEM#—•‚q¶Ñ¬E…í)P½Yk-\S³ßlø +UàZÃ?o6h…Õ©WMIåÝ©IÚL+ñH9°+¤²¡Ä,$J*Áã°;©XYžTKõGߦ×JƒíØkÞ%—›ºªFT ‚Þ;Á&Š…>gÇÃV†…±qŠf±§Tœ:ž91v–¹ït±ŒœD±Òœr­lK*abjb‡¤_–¹Â†8'‚¦íPTE Öb;{¬àßȳû²˜ß—ÿ¯f¯;¯&'XTìÊBµY±iJ´u•6nH¬iÍû’Ãu¿öz5tÄ|iì°êL»…î)/$oú‰ ³ª÷3e³½ªô̫җ‘r^ ö²8Ó:"•ªÍÞLo6™íâaäaç<_æºñ ”m™½{f›W[8A6œT¿áJ¯¶Ú x;»¤–”OŸxRBÕÌ )íhhüE×Iàž´òæ´«äÁ`©'xmx”ÇÅ`Íð ˜Sí¸·cÎk9ôäYPúàÓÖJɳÌ÷Ò׃þYYð¼ú÷&Œùtà`Z3¦úŒ´cZŸ½6c‹-2å2áBß®fÀ¹›Ü|±Õàî¦ÿÏ;çoµ§H93;êƒS¾)OÂM4YõÉf;žlzbÚˆ5sO?m£àެM—ÉœnKÊOu[V_8/ Ÿúðq²ŸlÈBš]—…ÓˆbM¶" 9~\­J¶R'ºþ.E…›¼iEH¹4”¼òÍ7¨5]×~š©“úFSÅiÍÊ×)¨®qžÝå1³<KðEúCð¤ G†Ùþ µ® 9ÝØšŽ‹oÎåo5÷¬?s@å:µúŒ®NmxöWÏù±µ7´ÔÌ6³lôí¦¦Þ"¥g©ry2’Ï—ûKލÄ™Ó\ F¬L +ÉCë€n¾5þKƒ«@ëïÿÌ„˜¿ÿOFþ{wÿç;¾ÿ¼î{ÀÍ!´é ß»[?Ý­ŸîÖOwë§+òÝ݉I‹|×2OæzLùνmóÙ ÖÝ‚ž€Q¾¦0à‰£—ÍeCó:”îÁø«qÌ}Õ]ø>2ç)›x)–y“Î×o¿ë7wzsôóüu‘ωG>WbÑÄÆ©³^¿Rc>öÎîÒØFxc¾‡CµfÎ^9œHê@Gó'©—þÎ.—ÆãlOð=A÷*¢½#,öDÕgØÍ™’¯Ä__ UÙoÚÏ h½æp¤ÍqqP}è\¼eøèð?|ÂÒÍ—D] —ucS—^¾mB­ÃÔð RZlt‚‚畨Ú[„)_†!Ý1©? VG]6‡ôh"[ á<˜D̰dwG$ o—€rWÅô¹ ¥bMšˆEžN`ô`ió9æÈPsa ‡b{ý»3<ŸÃ(>œÇ2.çvöÄf¬.¥C>EãÉH¯þs+;¡Ïpö°\ÎP™wŠÑEéÃ%ÈéÕìNŸÛœãe4iÂô“´ €?ÌJN;füÀÏÌ.~<¸€´wFêÍ‚5AÛÍ`Miw¿›ͲŒ²ƒ°eóŽÙþåÿ:;¿•u¯Da¾ï YêÁìËI;}j‡ˆ[ÀÀßê.Bö.ü—ÓwöܸP`g¼XÅàp©æA9gÏígµv†¾ …‹@”SwúÔîw—¨ºDÎtÜÔ.ÙÔÛüânúþ@?ËÎÚïÝ2™v¹d]Â×=ã?OwÓø¹Vþ¦"d õ_8Æ]ý¯.ÿë{Ìÿš}°¸÷M‚ýÜåƒuù`]>X—Öåƒu(Ð ôw…½`o7¿m|w} Ê­ÎüØOè§4h’‡TSXœyz6‘^mÔl#UÎS; ÍgBP€¼MðQᱸµÿ)GKMÚ¤þûßL^Œ'T>4¿ªÑ¸ÞáÜü1Æ*“¯€«;7êò•µÂ ¯H<Íæ¸.apÆ– S—E¶×óDZ*XHW#ËOçÙdeyUOúåPÑfm^Xuĺí—sñ‡Ç!{1«4»˜‡¥ØSlr¼‡ ®Èd‹sðÙP&âøÏAÅœ"{˜«=ò= ±œ§—JÞ½gëÍ)ž4io¦}*÷4¢Š¥eèâÐÊ"ŒI¨©Ô"L0›|ζ¾1Ÿ¼è¹Sg,?X9ãIàÝÑàÙ³Vǧ¨‰^XÍx˜ÜJ}òˇOÿ„¢!8Ú_ƒ/ÉoîiÕqdcR5?¯Ì™jÁ‰îƒŒ¤ûSöGjs¬‡×I#0k_»tƒKÞØ¿RÙÛÁìq ôÝäSe'‡GÉï ÃøÓ¾Þ~M„HðFߌƒƒQß| ÞõÌàÌË\§g[â£`j¬o>ƒNš$÷`?ùêÇkÝÿñ_L†ðÏÕíÏðóæ'øaû×ðÓÝÀ`‘ÿTûvûÖúã p¦<ÐFƒ¶ðøç›ŸR?"³Jl ýõ H­‘Ãý›áøöçëpúwMÚß$rÓàdÓ¤½Ëno{I°þìs™)ÞÆJYrÖ‡Ícì¦<¹ô>eîhù:t<Œ'¿ƒr|‘à•˜ÉÈÁ$&£~t7qÞû#ì9lc×CÛ¿úîn¼›ä³ÿ`gºžÂaüòîcpæÆ0|æ4 ‚w`w› ›ˆô¼õŸŒ?¥î”êÄOâ"›Dp2„Îο\¾Ùj H>NÖÛ^“z¢'~Þ£`˜ðS˜ì×À;;ÓçöëRk%™fÔHÀü> o½‹ƒ9~ï+ºŠï{´ ~=½|óþãepôî·à×£óó£w—¿½€–°Fà[÷Å¥ýxXXï>Ò7 Zàߟ¿zí^žž^þæßòäôòÝñÅEpòþ<8 >_ž¾úxvt|øxþáýÅñ~pá\MÄ +GÞVI´Dsúür’!Ä~Ò_È‹qý/ð ÃaÕ7‡Áðæ*!JzÜ‘ÑüEÐýQÈ^†¬›eš®”½¬¯ý½€ah¢o>€GÞµNú1t~2€-x/x9O|ó·G‚ ý„)ÂÁÇ‹£ H‚âÀ_,dcAhDcÂLì$Š‚ÆFHͤ :»dP8¡i +°àL•x&ßC”©,þóß·.ɳH ök˶YÿñWGÿ`†±‡½úø’‡Ýýÿoò?f‰&Âa¤#R"c•TD ÍIÄ´Ñ]…Üï¯þo Pt6¼ò.×f¡ß:ñ_A1]ˆÿ2j [ÿ]ü÷û‹ÿfË.H]°· övÁÞ.Øû={W‡gw dËÁÞ-¿×ô&dyo'}7°]x§#ÀË&ùýoôÄŸ*Õ½¸¹¤´þ®¶nÚF}ÿö÷ÛÃS}Ë2 ¯®üM𜌠D'`ÎÀ¾øÕ")Oco‡#·¿Ÿ–~~û P)æhœ„‰æ]#ÐÅ¥ 1ÇÄEJ8c¹p*&˜!¡¬‘hèº[ýê&9Ižl+Ñ¿„ì5&Ÿ#ÁVŰRaƒËZYƒˆ BáŒ9E$!GŽÇGlÃÐâòAeéÉ.Æ“˜!‰u¬ SÜ9„5÷gg±±⑯”>s_Ü I ¸GV“cO£’MI» m¬iH5Âik"¡¹@FÇ è‰Y$ù7`ch` Ú‰$0ÓQe…’&¢„2š³1‡”¿O.VS#žÛW0±)a7Z‹Š„VÈP£0¤’À&¦2Ò\ikÜŠ‰_†}<»×5S9mï”Ö[2 )°ÛÑû[yº/ÎàÁw_5Ù¤“`ÜbãýàãØÍ©¶H„4q8‚¥ÉÂHS⤑(еáfšssd}pq:]˜Ì•›Lç£ë4] x”$rÀ(àªöüOž&F•Ç4h6;áJâXd!Ê$¥T8-¦³;Ox=P-’§0¯Ôå/N ^G_[ ¼ÿœ ©‘¶‚ù‰ îijßêï˳hj²7Š’“©GKŸ‚;>Î<…E#.õûs‹Þ5ÌþHÛz•ð,?š;8HWgâÊç=Ÿu²xQo~n ½à£þðñßÙ¬¸ôÌ$8¡±o85’“oëɇ©+½å’¸Ÿ >ïÍ”3®†¾8ÆÝë†<ˆtsÜP ¦mªCn‡}ÿYJ *{ ´ÓÔ¾agÛ\hƤd‘H"g-Mœõ¥¹ÔÕ°øNêŠþÓLH¼/³- åÏ¢jõýÐÔïšñ>ó¶Å~˜UÒã Á§ÑóÃK0¾lqçÏ ‡õÇ™µü®ÇÁÕô; ¯ÊûÃØƒ$ƒÈŸe.@™>_ü»ÉûÎ}òoŠ™>Å<š¿PjÕ²2=‹ëîÒwùå÷ÿ“õ‘ãm²>ÿƒ"ÆøâýAD—ÿÑå|×÷ÿË·º’ÅÙt¹"]®H—+ÒåŠtÀ0À÷ Pb©ß~ˆõµQÝì–î[mFÃ4;Ä„/¾ ÀzChÁ*+V@É.b_ü›ãÌQ}KXóRÜ/ ±Œ{dù“òžkb 4îug éókïÿÓõ’Òèú.3K·ÿ•ô€$${˜ò»û¿¨W’ãá\¹TgD±X"'CIt¤¨ä*”ŠQ¬¥Æ „ø6¯þ×ËO>S•-/ýû%k‡×`IùËþOÀpº>M;+þÌ¿©ÌhJ¡M24$dä”Â:ëa‚sK˜#Q$eh¶ÊcmÎ+7IK´o…MɳQÆ udÆÈáÈÆT†Ö“ˆSÇ,ÛdE±6g…-òâu²Bö‚à­ÁI(ãJþUuSCRmÂŒ™µ\sk•š„*æT„ZÄ­s1Û&[jŒµ¶˜u|ßüaÝFìiJ²Vå66 ˜Œc­PÆFX"¥,“z««¦z¬ÍÙ—¾°¥Ly4­*YÆž´UÅÓb›p‡MMLA¬ÂaÌ´sF³Pƒ™P4Ü&wjŒµ9wz[ÚXšf&F„ s"F4´$Â:ö±c«B.Xì¶É„cm΄wÛâBSÊ4ÍÎÜy®°1ÒÈm5˜ëˆ;©Àº‰C†Z‰FIkÛÕJNR×x‹«ÛÔ·ËžÔãÞ8‘ä€ã‰OJ¿©™¦Ûõ„Þ9Œ-œÝMþÞÞ¹4ű)ªÖàn?ÿðÐZwc?Gcø±?ŽýO°å&Ë€ZðÐ?7Á¯òç|MÚaû¸ÜdvÅèö»…¼*û¿<’UúÚE€ªê¤ð<³µ~^x }øp郳èY°j æÓþ’ŽŸ”|˜÷îõùµ <:œ¿·¦y–Íè®Óáÿþ~ÍwÅçeSØ8qÕ $’PÓ–êå¨í<ù}<Åk;¹ÏC«n4‚Uãϱ‹˜g·ù3Ð2£ì´úošdK¦¬“ýàòÓÐ/ø±oj²/ílï¿ejÖßÚ°_ Ð´÷8U<î@¡gê(}:YÕð‰u·°:îÆ «+,‹™I¡•Çœ§UÄB##N¬ÑF„H9=Ëý¦“ay¾‹|ôÔWÎîl$}ûúRÉ—³äÌ)Ѽ tçš’®$¿tÔ_dïêe±ö¥}BæblÁܾ#®|ÚlïøüüýyšhÞxËâÄrl VqÇa«±SXà(’³z/^÷@£½=¾<>¿h91SË¥ŽMœ¼™‰6äàuÇ;9ýÇñëÞÙéÛÓËÞñ?^¿>~ÝrT&°’8òBa°!L9ë""Ed¹.Œúæè¬í ˆÆ0Z©˜Åf%Ó1Á¨DàE9}ßr CdìdHÕŒs„#Æu¨Õ’ ê|¾qaŒÞé»ÓË–qá2àziêL«XFŒE‰dFÇZÏtöþÕ¿µ(´È†&4Ì„QˆˆÕ3¹HIŠ2óT뵕¥;±füÇ„Q.¥ÔTE° “Ïtq|~ztÖ»øpÜZè”OÌüV'‘²ÔE˜8*“þT©…?~øðþü$>ºå "æˆG°ç+ç¤@\;!1 „*Ò¯ôãÅ˶’¢±æ±áœ0á0ÆEaNµW}~Ä^]· cÁc$ ±”þ0¿âu2ÉÂP/{¯ÎŽNß¶Uœ "ˆ"´/q”cBÒX’½<ÚñQ¢AÚ®ºØ†:”.2‚Q…œ QdãHk(Š“ËCžœ¾k+Ÿ ø¨¢ –„ÓF)°•,RšóÐÒX†‹Kü×ÿgïZ€ôªê{:XÐuD4ÀTš’a¤èy?xIž¸%ìn³áCˆç™¬Ùì.»›@Hi##‚ ¶*v¦‹ MA¤Ô‰ %AžáÔRË @ÁB,Ðßù²%{ïw“EéŒCBöËæÿ¿÷œÿù=Î=çÜyî·è]öš ãLb12o¥&ƒqœæ”‰1™æv̘7}Þ‚ &âQG¼Gãe‹2ÔÌq¯4î‚>&Qg×â“fŸÔ5áTPÒrCÆræwfNã‚Dz±Î¼)Õü7FÚDÁXb%Ñ™#™tÑ%š£h;Êæwœ4Žn¢%(šNსB:*Õ ìä‰ÒŒ“;Oìì:µsq¹±ÝØç6Ž7QxÌúXîÇp_Oídæ9ûóöêè:qì¾™ÝÝ´ó†x4Y©H¤WŽ1hÌÊ 0F€g½9v>ÊÅû÷v=>Ð) ÈIÌš3ª½KP:¡<óΫ߈ßò–»ºApœ.LlÉ#Ižh4 5ŒZ¤¤1HªM+ÍÎî¢ÝÞ£ßÅ‘•im›3É$E,X ¼ATÑÉyí¸‘[³Û§"·Ryš…˜ö v#’éÌ m¤åÙ¥ßPª6S­5«ºÞÙ¢ôÿ¿ÿg鑟þíœÿ,$÷þO®ßÙÿó¶üXé^_Ó÷¦Ù³t걓¶†ÆÂ©‡ì`ËCŸú­þáSûWôõM]tøÎ¡wræ™=}¦*OÞ˜¯Ñó×烖n ßhîëÃwt5Gorõí¢·xcŠFSß6EñÞ)í|ÛÅu7¦h4òmSŒõÛ©­|ûT;9íætMF~ÓÁ¯5æjôïmsmw×ÍÕÐdÙÛ'Ùá«ó4úõ]ȳÃQ7£Z“]oLV¼tcšF‹Þ6MËE7æhtæõ9Fýssk5Yòú¯;çÆ$v¼]’1ž¹1Q£¯O4ê–›A É€×§ë“›ë«ÉWåéjf€F—=.nÝCªf&hzî¸#ÕäEGÿŽíÿOg÷æ·$øwKÿ3¦$ÝIÿs!Å;úÿíÒÿ£ý=Vð·>,;ç‡ÊHÙ~|HëÃÑO·{çÊ¿:dÌð›ÏËžË7¾sÇ';xýÇþãÓ:æ,ž>˜†Ê6ÍSÊÌòý;ªs”u’)dïE¦\3K"Hé(+TÔö¨C#eGå¸pcž–S~,õZJ¹‘\©ðQU¢¢n†IC«ZÿŒJrP.$f˜±š¸”ÉÔ”ÓÑ€ÚÖ]ãŒÞ‘áî4Ôã–öUÜ9WYj®•§Ðu¸@LÒÎfš¹b¾J—lÚZŒÕŸ†‡kZÔc¦ÎIWÌ9˜¤ŠNÁ¹ô5qgΙÞÝj…þа4K¨5fÄ®J"šâè( FÒ®>ä¼4˜ÜÈhàY½ËÇÇ–Ô˜ÀR ƺ;( 5чÞXHœìj/w o`¨gÐ…ªšæ)†¶…«d4ÊC*Y-=«½ÜåƒýeÖqfkCàŠ¡Ö³õŠæ€YQIJ“Œä Á5ªLàfÕ.þPY G+£»÷ìªrKœÒ Q‡2(ïQ“Â&j$ ™CIP'ÂW^²óÂÃäš—Í)¬ü§ õó„ׯ]ü7>b¤’[æ²0:d†B6Á!>Ϊ&"0"Íï]^Õk”eAZUi 4¼ÊÉhS°¢!à¬Þ%½#½«S¬¸y§à ,œŒÓöV¨e8f³u ‘»Ð½ý®¢§tPÙAóÌQ”\F`±¢Ì¼ûÚ6]<ÕéªÚ×E<Ð&ï Ìræ0Î9Fî %]Ô5A w,wKÒÜÔ¿ddéø¸&Fˆ4 ªg&Pµ… N<¡é‰hŠ{jo¬ «êÞKk"ÜG¤([’G±)™T²MØ®œ‡SEiåh<óèsCQ£†h6ž>Ðæ£krô5ºhë 8³¶ÚZi#"Ór`©¢åTCe­980 öšÑëêðZŸÊd¸p8Ù2!=*šrh^jˆÜQf²ÇG¦ô&™xΜwŒE ¤êÄ3¡¢v ,rUpë¸MLkÉhT™“Ì8ŠjŒ,®Ž[=tM \P0„5Nš Î0“Н9H£&hÙëÝÓÚ!]¡þYBÉ[ÉM" œh´*Ô˜®Ù×UöWÝ9èE笩àåÃÌ#Ô‰Ï쌯+Ô9}n¸¢ìe å J ®Bés*Lœ¦+RƒfÝ.Úìþ4´dÕø˜6‘lR‚ŽFg¬b²œCq—g‚§¤]LpImíG» Zp­c¡Èx(™¨¼ ®®Bçtn?âd<ÿ•ù'r@ka ì:ºŠÀG]‰×Å®¯ Ö¤Nè“M€Ke[ó9ç¾]Ìî>ןæ¥á¾…°Oîï­Ç 7„[&·b Þ‘–ñJâvœöF† Èତ:i„ϼsÜ ˜vß}AÛèÃ}&ÞjFP¨Ó@ïX×8't÷tôç …"L[È=É¢ö‰ÄìQ½Ù ¼­+´ ŒÙ:0>°JD¡\ J ¨"…€†‡n±”€¼ ³í×UÓiP¡öÑÛøæÚPÚ¬½ÐIÑv1k8KBj‹ÒŽ†Ð jMÒ`€‚‡ S²|О€×rnK ¬(ÆBð:óìu¼à2Ah œZšiE€Sr¾·¯wdU )$)˜–* ƒ„zI¤ÆPdŠÃ†øT;HvŽ^Ç»Šp뤌@u jÙøçËtOH‘v1|=£82È¡œT0*‡ñ4‡:îèž?sqçôé㢜F+bR&ÚòV‡ˆZ¨ ERÛ=]=ƒ0˜ó ïû— W/*Ão¨Ž'°›‡OKQ`„8|Ÿýy÷ìZ–ºþ%iNëÀøŠêË9IB¸— \Ì£ÁKF@‡Ú­èuƒFfŒÌB5rédòp€°^³HL­2-9PÛ¡¢ôrö¬ v”‡s Œ—‹×^»\pn1u_5dˆá`M@Bf„-Õ@b­S=É-« ‘$k…@¡qŒk›1²¹“LØZ|/Á†:F* Ied“áp,üÊ’œ’N>±zgz’;»aÎ#iàA”² ôY"‹î7šW{© ‚=i VÈ>@ÃQÜo„p–p62xØ1@§¬$%X…³¤€x‰³^«`añ_ˆ*U§­25Ñ:ÓY=+|Ñu­Ç…ED¨ÚzÐ,G“B, ¸Zme]uÍž9§ÂyÐÈ Ä(cp@Ài(¬.„®«qعËæ+F¾†¡±œ%‘¸f¢œ¬á£°#c3×õyw™]žF†zCkˆÂˆ×f>¦âë[ ŸB &å1—µb¬ˆ7Ô01È!C-h„ hbZÄ*¶,3uìÓ=Ô[‡š¹th ¼á"ÀG§ T,.×3Œ5—Ly4Ñ lŠ±Ì¸ÕáÖë‹äfô¹°ìÔ¥½Uc£Mi u£àù¹·óƒtµ±[G˵¸¾T]ä:Œƒ”ÒÜX•!ú¥E[[TxnMeïBø:¤ L‘•Qð•@׈à°)œYBdærBר:*Ï{(uÈìÄ‹›Œ Ì¡Wáãk#· JŒPM|²Š¡36•·&ÄlpÙuóŽóÎjÍf¢Æ+øÆ¡®Ê‘ð4àwTþc@Ú”U®S”ÛçFÛÌ…qØ^ŽÖQ8õ¨¬M΢iIZ×*Õžúk È!"Ì9”.@CQæ‘èCƬTR¸ºRèIýe‡0xé@Å“I5hI¦£€.‹^ˆ™˜"q(»Tl=KW”™Ñ–©! G ¿00ú€îèF"Õ(èa‹X"íØ"X!šP©°˜„xˆ2Ã@Ãetž¡­ë–Óu]ßœ¡tæŠr¦Êlp ¸Š7QµÜŽ€É .Ö‘Ê£C(ªÚ™A4Br}­–é] %Ya‘Ê.3ø,¼AshØphÕ§’’:ôlUíŒU#iæÀŠr>ÜøFf'J€êËÔ¤•Γ2_H2ƒlw»œ®cªÌ¬Hø €w&KìCA×40h9`tVïðˆë¯ÒMpm(T n*Ë‚$$/-KàÈQíãÎÝŸ]¡Kè…ä‰eF„gj…Àúò²U·'…ê™!X‰ 1f…æ4àÞ½gâ'$”…WÙ4†l3­‹K‰²¤=ãj€D½¨<ŸrÜ…Ë­ŸØ ÊÉ›(sèj²ò,ÊŒ,Qu°Ó:_l·c›l…fÉÌ¥JgmQÅùXq¸Ú†ÀóŠò¯ˆJ¬5¬FŒ0‚1’#äd@åëxÿäábg——©èŠâ…2!ÞB¡•ô84(ب¨•j-~ï.ï½©É ]@ÅÄ–œÁA Ûd¤!µSÅm'^$À ÄôÖF3ôC€6¼¬Ë’uZzÁL?÷W¹“*!Wj¥Érð+`¼%ÑZÿb ,Ñí"wl?,}t¡ÂÎüh:I$œ)  ø C„zðÕ±]àR¼…3+G)%KzUÒÄ%ÆqH”â ÂLÙšZ¸]ûaŽ:âp¡¨v®Ûic3jÎT”Aù÷otãÁ`ЍuTe\2#bÐU›ozÏÌŽŽ $DG &= O•3È‹ÙH’£Ú¨6aÏÇF×íöB{–µ~U ¬$MQΨ Gµ ÿï²pžëh±qY,Ê\ô۰ưqÿOyqéåøùrõëG2ÿ×ÿQÅ)ëÿ¨¤å]jr8ŠþÎú¿·ãÇEÝ'ì;ù ²3mߎ͚‡?¿_›ß½'~ÿÛ3Þ¿ìéOè‡ç¿vì%WÿãQ‰¬_¹~ÅÏN¹ã:À´s_yñáÍ7-¿êâŒõì Üs×ÇöT™vàæµ—Äu/˜6mÚŸºiÊ¥_ï™<ÿÔSŸÜtþ«Ãßüéç·m~ä¼¼è_âE·~ã_÷øÎó>¸ê裎Z·dÓÁß»ýößøðnZþX÷âÅÏ¿bÛ÷ùšk.{úþkÿçK{.Úó®ÍlYûìw~yiù—ûî»ï)OmùÖÀõ?þí >úÊÓ]fõ ‡sÌ1놟êÜëºûïøâC˾Þýâ¿î<_y[¹R/ÛtÍ—/žògþéû¾ö™Ï}îö­[nùÁC]¸qcç¹Ûž¾ö‹zààýöÛoðéûýëŸløÉÝW>ÿë¾vð 7ܰyý’÷>úØcŸ~aï)GN=î¸òÑKø«#>°lÙÌÕ«úïM×\öû{pê±Ç~è™gž9íæ‘?™ô‰Wÿ÷å¯_w»jʤëϸõ³/½tö¬Y³Žÿ‡îO¼øÓ¿ý©Wn>ù<ýµÇN?çòË/ÇWGýç“O~úÌ{ÜöËMݰaÃ[·ní×uo}àŸ{^znÃ{oXöð‘ûà?þæù¯|ãó+öÐðg~ËÍ+6ßvþmë^{éù';âˆÛŸ¸õœË¯¸âÂûî›wµ9sÆaçl{¡÷]{íuÕ={O:ú¬­ß[»`ýšÕO|碋Þÿá?¸¸çæ{nÜkÒ‡»¾ò½[žý·‹‡ŸÚxàÒ[Ï}™±úéC' þô†õk6Üó嫯¾äÞ{»¿>ÿO×.üÖ¬ZµÊœÿê1Oœóì±kÖ¬ù?öþ*«oïGÁ¤$¥SºE.éé.ié–éé.éi 锆;îýƹûœ÷=wŒ{þãŽ{ž±÷O…ç™kÎïü~?1ç\ëÑÿõ=Z£Æ2^¨žÓjr3¾ñÝaÖÇ„ÄDWWׂ KNÎ'WŽŽŽÑ …ÑÁûŸñò>­¯¯wþÜOHDÄøÃ0_>½Û÷!|¹ÃštÑ¥•t• ƒz©¨±1%ÿË—([ß@Wòd“á`ä^º$°¸ÕOè‚6Ò;ÚÛÔÕáaðyrÊõΪ €Sk¯΄ùnÌÖÄVSSwº•€{ÖAÍ-ø#¨ºšãÑ£G‰ûçfAfqj¥‹g ™™ÑxzyÁòó2,™= *ÆÁÁißB#.T!gaAo¿%õ>o3¬7è|2÷¾0@8SÝÖÄ$W—×êx}cc5;J@XZ­e¹ìïÚœ‰‰óoö§[ª¯?³‰M»¬ßDZÁvQ îÓ§ÕÛ›+h¶³²²Ðqp@·TTT2¾|A|úô)ÜÚè訂®n$<‰þÙÞü»µxuÆZZÆùF<Е‚ââN0¿§}œÜÜÚ?dDÁÄ ‚äDóññá÷}¿’`‰Evrê ×啯Oj­g²ð4MP NL1häµÏ¨ÐãÀŒ-[u‡Ã>H)iÔµjŸ _’HËe»n–î¥FËn6Hôã3{eIÂI"[¸FÅŸ0îܶ$®·ësV%%¥ò·ó|×Ûzwívçì}Ç(ê ±dpIÕL}™2°°ìóG´ÎhgºâáHæƒóC#~÷‚qfõ3u=/¼yÃò¹³33¿O–­ÿ ßmOš1wš³t58oLK‹ƒ çàÀ3ÃQx+/PáÞ]‹‡b—gÇEgÏvƒKÈ’Ø1ƒµªPEMMÝÞÓoÛtŠ»à¶A|~q!Å•"+­•ŠÔ]åîîž++%eo|ì"ýØòádjý#˜þqBöÄ…‘ÉõÈH²ƒÃ‹ú–\dÉ/EE²yOûâè4¾½cm©xTRRúÕQÂ7Ëjé7w8"ÒÃƒó ø¼×õ“°ˆ¹²úúÏL‡Òl8–qÒ®¯1;»v{vç|„_½¯+¨ÔznÐî?`nnÞ•ð¼ÌhâK›[ú爃ùÃÂB ÿäd¢Û[ݬ~ï»4ð–Ç0ÆÆžƒriš]­¦8½ò‚œÏX†ñ˜˜V:–ooö ¿6<=JJOyá:&üD«HÒÒ’€ÀPrŸ÷±,YCCZqƒ1Û³O½yæ£l¤dUJÁãdÍ| Á½È’$‹¨~6ë„Ü]o´üIج.×SÒ™GÈUú¦ywœÎV]ã¼µ ÈCH.ˆX úôÄ ¾ÀOu§z0¨¯õ½§œÌí÷~Êò{j˜1»É¡€·ÔÔD(Ðv&srŸ1ññ!õ7|ýº´9âé!éè>]Lna=Þ:5%¢ò9/ëg³Íõg•ÔTï?¾ùw‹GŒ8­ã·lîŒgeg#¥¥‰ˆÆ_í5*-3¾gå‹Nõª©;J!á*BÐÒNçìé—IÑ<>C™,j0¯ÑÚYL*ej–ÔG…Þ •–816&«Rÿó§°““SÒkš_¾lÙ®œ5nìœôÍæö1³5N˜p|õi!`bb3¯¹”­˜)òry? õ•Þùy°6Ô'®¢ÄÏ==Ĥ^Õè"ß1З"ÞÃØ‚¸céy»a©—½µSÉ÷ ÿ°gò>‘³(, 9$„ù÷n£KÉi¯ÃðÇïÀ¯ô&‹WPËÝW¶¶Ú1Ô¹À|úŠÁ »¾ŸÀªÿùXëy²*£µ†é³L’‚°7ƒìEÏÁ” ÛŒ.0q¯9à ä[>´V#ÜÜ•ÿZÄ< u,MÓ#Gíï?íìÝØÞ4q2 ×¶ö›&‹=#'îàm, ¸o*‘—=µa O.3m50;;KƇhPÚ®k¥ýúÝ×FAV³xFmƒªY¸dÕGÍÍòÂ=<Ë4müÀP2EÒ¿ VÖ™ÚØ¬}þÛÔÈÚž}¦8hàÝ "Ï>5f‚7lTÁÞõ5µ_]Ý ‚wO‡IÁ˜V¶·G¶M^ÉFØ õáïØ<'Ê7þPV–À¼ÆÿË÷¸ø‰ÌÒÒ'¬¬CˆQUÕ¢66ÎTie㚘Լ;ÈÀ½»±}þ¥ˆÐþ—¤Àè˜ãÈÌEÿêû£cn¡\Äê/ƒI\Pð¸Å4*õVéè¬ÙÙÃÎΡ¤«sefv©*,Dyþ|u‰³è)µ<ª_K ÌS¾á80in¦þT00ɤ’ü‰UImssĽ½Šv¬ìÒ XÝ'œÕÔ¹a`<ôr/|{ÐfZÓ:g+/Êd:vP®½j(²²¡T(E•kvµ›Ö¼old˜,‹úðÃ_»Fëyš‡\¸f2:ú’Í!›pûébµƒImf¡Âv¾FÔ§+¡¬FÚ:Sò‚7Öc±UO¹ŠTAÙEÇzº¤²´]ú1À@È–`Ø¡³n5­‰é Ë'§¤|eëâìèØ•#eµEÇPTséɘ 2Dú—ÞõþøÃó®wfÐOA¨Ÿ1†›©iëW…ê/|Û`u?aiò¨è$z£ªÎ•)äw`—¦iã;@ÿ¤(©'‹Ä×øÙŽÙñ6Õ3–î(4—`³ ú˜)]TyÁ’G0üǯY~9l ¦J‡]ÄmÖY°Ë³*¨©¯pÛ›¡&°²’¾´1嫜/§©³w}ax~P¡íÃ&‰×¯‘ùùðIûQþîÐðA«øíõµn&™ˆx(=El}ô›½¹ýYø­E ¡¸]~p½¨rqv6ÉvŠëS„{Äkj³üßܳ0ßLM(ýG˜gÑÿaIÿ¨ŒÙíü€lÁûjWw‚ýr„ôD¬>\ÓF,³ü–ÏC[›p²XÓO1[¼mq‘ôðð° ´wÔÑÁpá3n…™ ‘/¾W¤ð‘iIQQŸ-žGGGccý€¼oíïG"{”ùÍ×÷´ß«ƒ_^-#tn:⯶3iUã>×2f #>æäöjì`¹ƒŽœüÃ` ¯Hƒ,L°#£ÀGHe* oMÖÔ¨Jöÿø‘ô¿-¶Óæ0Yæ¤Æ Ø?~¬èàÀVS[«ôîì³\%©³ýEîäOÁ’¹J#ËAîÛ[[߇†¢‚ƒ---i™˜äŽn6CxKÖga^€M@@ŸR=5aVL¬|S oÂ$S«3Ðàuå’Äj´¸¢”Ô11±§ž½@‹f5ºî+ Á6´#UJfDÓøÏŸ¯`ûµ¿Ï7÷ͽpÂ’ž‰)oeÅP©h".)‰>n¬ëͰC–Gë¿~)89q``ó:øG¿ ¾ð>éLQ“q°ÿûWoìøô´yÆÆ‹¼K¯·“ÁÁ nÇyå: úT‹_íE¦›]v "ˆ_¨I203Óg•–259ÐÇ÷eèÎ;4$öÏÉzx¼ØoüDNN^‘ñ>8—QãUÉËOAwC¹"ª— “‰*-%™C[ËË™g¤‹££†TÛyÜÜܱAAAó&,O\V÷öÞ*”½åÕù±FEÞ×ߟ}¸Ú£,,ü@UUCQYk õ…úÑ ¨ÁƒØ—Î[*aZÏ[ØÚrÏ¢%n×qj©5’èøû/ÃÐîbaQ(”b²ìh`@&ŽOfÌwÃj؉Ðä.#-}Ò§™ÌMCòýû÷W¦¦Ô>|€ÙJ—prªþuUD :F0¢×YªPd_ëCWUNvž«µá0êF†Ââš'Ÿ.à\jŸ3½ÍL¥˜äöEúä0t’%jÊ`^ããâ>j•L2¨ëéÙ²–©åØ]ž¯Fý¶ÝÝçÉ“'*ŠŠdÞøÐü¸Ofí/µùQ_YXÏann›¼ÏÎ<ÝžŠḬ̂_íV”“C½8?ß|Âç´‰® ~œ“CÙ”=”¶Òhaa‘ þ¡DŸ£B©µº²ò}nN{ŸvVcÔçzÄØ|vg¦*5‹´›%"%-íôtܬ7åáB±Ù`Jfe%›AcyùGúø´gtKŒ7Ïb"Õ¬~XNqZy{ ÄÄÄ(èèDôõI[O—g.–"œÂ™ýª2P¯ÊËËk%Œ‘Èa‰øXIY9ÀIBϤopí•–Ös²«;ºiZ{{{˜VWDT êX2™ƒ 9)®÷Où!Ìh òoZ1Ñëíû7L=½±4ð»%µÏ>]µõÌZ úlÌʬÿpCu¨ÿm×o¢PÔ³\˜ÿíJ!Þ±Ýt—ª¹™$8œM]}UDÊx~§_#pÀøhÿR¦ÕžÂÒR‡oG}j¿RÊ5w[wfqûÝ€Jw:¡ˆ¸‰T…—ÔZíÅÒÞ^hb¢^Û„ji]K‘LØÅ1Íi,ý†ß€%Íú@²ÿ \É‚33Ú”‹×‚tÓÅ.†ÝáöÇWkMÙoß:üH>ãÿùó—©4«¡~Õìuu¼—Ž.NN€¯4ã£SØ~;äçãk€é¼ÐßRQdp`Í÷ÅÙ=z| ³²¢[¾ÂÆH7âËhbb2ýÕž¢¡¡(Wj”ÿ v||óùi™ÕÒêØÂ¢%ÙtÕ§iÕ‡šÐ¢U,|ès.s|Ö¬§™™Ö*XqŸ>íÍsÅ;×ÔŒììXk‡±ù%‚?;{zæT¦ŠÃõÿã \µ¦Iå­ üÅÁ²È·›?sM_Œžt<Å6­Á 6p^¨­å*Ö¬‚ËøÐÒ"¸²ºª¨£óoOªþrÙŸVº-uu3ç…¸8ì_kkdˆ\÷~ú~ú„§Vú†.G﫬¢¢bäG ?Á#fx’”ñ)ó4Ö6ÝÝ^qxžÛ…gÓ¸ÿÊl(- %„ À¤*[Y}LøüY*333Gvs8SD¸>!W«Ñå9]¼4""bÖ¯_Æ–66ü>þÉ ¼¥B€3^@/Y·|SÅ’ÒÒÂÎΜô Þäã„)¹¤JÝ˦²²² ,Pa±¥¤ÅFÌÉËCüÙÜgÈ Þñ¾ºz‹ü’¤xOÒ6º îUÙu–iÎÃä‰ÈD¤Çã²ì§3Š6/¬Õ¦ßv¢àž9OׯÒjÕ5°{á²SþµeHd2p,I•:v¹Ÿ¹¥Óÿ :>~0§Õä«ì-mmhi8#ãÙ#xøÕ¦³¬Qc¶§·C>†'›#íòV è$üï``Î/·Ë¯‡:ÆÆ°èãÓ}nëu¡U¸DV#¨AÕ"µÌÜ\±‚©89…Bw*šU4Ÿs¿e……Otuu¡ù^Ò.ÈÙQâúúÏPIÝÀñ{½Sª“÷õk_úàçg1Si‡POi~~š»tÙÀSvS¹ÏlçKÉd¹Ós‡=QP¹Âùøø‚ƒ7Tæ°_mzŸ˜vÉÈóX½ü‰‡yh˜ññqQ­’&cÖ×,üü?3H¬\]\”À¸ÖÖ×11ÛØ®è°ö‘ C¥„;Á)n^ªð†õ5uGµÅ˜ÿ ¨åö'XÔYY`45C*Œz-€'«þ3Äot Û &Rã«™®÷…‰çŸ3¸ß/犿|©,”w¨'UÑó{,_Q[;, ye€{‘CÛô×÷h<¼üs-»PÝSüŸ£¹2¦žW»uÓu¶éBîC\Q$6Úù0ŒZÕzž‡+«ªX½.üýýöwòËRÚ‹ó ÜRTÄx»Ø€‰},†J¦ÜeWëg£+à‡ÊÍít\©‰‰¶‰ œ’’’ég˜ŒŠ EI½ï—&í€D,ÖªA‚/‹c»ö4yñ.55Úð@Ùbå*zñÒëëú¦òRËW ‰ÈárƒóñŸèh¡ŠŠ ›YŽLk®ˆ§ì@d™Ïf-˜73"sÀäæî®$"â't×i†í^eê<; óù5×§V iE` ±häNê°‡“§ÛvëåÁ÷#õ>‡ B#åâùôBÃ~–³H¥c©¡Þa ‘Z>-ܤ?Á`ýÇç›çf¯–ªÙ·}Â_j —)M¼;ÙTôéÇWàÙýÑÇCúÅß¼zÆÛ1˜·ab˜-VÎ{ݶÒv‘k.NÀ‰ÈÜ|ž%k"¦×f˜èýaÿ­IÎ’H>:ZXØCû”Rbr¢¥Âú`þïëÿØþÿ?¾©çß¿‹ÙƘóÿ ÏÿdaáøûÿìÐó?¹¹Xÿïþÿÿ‰‹±! +;t ƒ+øÓ˜Ã”›ƒË„ÅÀÀ”‹‡›“óÿVÈÿÿÕÿß'2éé‰ؘ8üÛ÷ýýü<°ÿ¢þÙ99¸ÿÇçÿrsþßúÿ?öü¯ÿÉ|ÿÇçÚ:;ýûÓºþßsãŸ7GqpC7dCwÅ›˜šðr±pñ°qssÿ‹rFvЮÿ¦ y¸y8 G…p²³òòppðp²A`aûW»úGÓzv÷cÿ¯/ÁÆeÂjÄÆbddbÄmÀÉËÃnÄbÄÉÅnÊiÀÆjÂÂÉþ/Ϫÿw¢ÂÍbÂÉeúkÄf =µ˜•Հ͘ÕÔ˜ƒÃzz׿87hâ¤gt¯æÝ:/7¯1/;/!;«‘1 + ‡1ôÈvNžqƒ—Á[gëÿºevv#c6.#nÐmhn6vnSžõ0g;[G'=è±÷ÿ`óp°qñr°š²‚ÈðšB7spòpAnòýƒ¹üïµÍcÀildÂÃÃÆmjÈÅiÄÂk`hBÍÁcÀËihô¯}–ƒ‹É}†þ›ðò²ó°s˜B÷¤q™€41fáâ5261`çæáaýŸ7Îö_7ÎÊÊÉ …׈ƒº{œÅÐØÛ”•——͘åÞ8ûݸ©‡)—±!ô -NN6V.#^VœÐÝO,<&\ÿóÆ9þëÆYLŒ¡ë@§AŽC7˜°ó²òp¶¹Œÿ1çüo4ÎiÂjbÄŠÑÀ„‹ÍÀÈÐÈØ€›úÂ4^ Mÿaáú¯çäå4ÊÇÀÔ”ÝÀ”“…—×”…zx ô˜Q–õ¸·6Îý_7n ÆÇ ÝšÏÁehÊcÄÃÁ Z7…N_³ðúŸ7Îóßè9+t“¾¡ ;·‘1§) ¨C.nVnSöõ8WÇÿ `1`7áâb31äåå5âæ56æa1414äfg¨Âcú¯î st¶nÿo4Í’à·1¯‡)»»‘!»! /;7Ë¿zÌ¢“ƒ…™™‰ƒÞŸ/ X¹@Œ¡çrA€ËbÈÉfÊabÒþ_=®ÌÕÀ€—­ƒô}¡ÿ X`7ýeåPËihA%/‡·1+ÏÿO º;[£ µ•¥ä÷˜\q¢º¦†ÕuïM¡:Z!Ô·µVÞðà¼háqÿ»Gü=_,ðÇÙ «»{eJÏç¦øMzöWµ ¥Ih°t/îß%à«BÃȈLüÂåÌÉöT™ä &b²¬æœ˜¨¨hÎÎýp/¡^¦˜ã”®¨%Úup0ß¼oþÕs¡³ÖEꃃ¨µµµµÖOGÇÆÖ®˜uüG²%@+$v..ÝÑ¿®@B‡‡¾~ýÚ:9‰ JÔšð\[ßÌ,¨Ù늜‡‡gʪYð%å£ÁÁÁòŠŠ¶ý–»ÈêjŽ‹‰‚’—îúKm<Н9¡ ™ú>1£™™™Á´¾‡}xð«Ë­q²Xó!<<üÉÞ<¡€€ÀÑ1.µëT© I¤AG`[w7\óàˆàÅ©²AUãBüâK h0ílˆŠ‹ÎTšœ_l¤ÛoÓñؽjöYøæf>œËe3ëA!®ßCÅ«ë³ÚíËu¢t´ aàá½NÄ‹Y¤^Ƥ¸´¤Ï¨QÓró‡0++«Ü æý§Ox—'¿ýZ[_ñ¼xÑ17§}›tp`Wm»HSîvl ÓIüB__Qøõkäf½È\™OäôôˆEj%—9?…„„Îç§ÌÙ¶±±)y7¹z§ßOÊiéõ/”b]  xÚÚÑñŽ…•µ-…×Q¡HíùÅí¢÷JZZZZ 22òGðZ= B @Ä®2“‡i=XîPÌ~ìy<À-ùú5£œ¼¼üx©¡¸¸x"=9è!ÌÇ^ã ¸Å%%k”K²]?~ìdoülñ¤~øž¹ùüøþ ÆÁtÁ;©úùùyÇ_HOž\,¹ƒè ýçèÿ-+C##ssÚE.VÖÞ A*ªÇŽƒbJJ˜–S¥7mÛœœœ°0–––õoñD’8×ô¦J´ñ }RRÒG·õö>¡¦¦Æç²Æ'à0?>®bljš¥”+íVÛ?9ÉճϠŽ*,¼á-¸Xe6$ÀCÝâM/Y‡ký ýÛgÆ{·yGÐ#ÑÐP¨B•&¾¨vŒå˯u½GÂcZ:\íÙËG{Ï-ÓA˜ÚØØ»834Ëûææ}b"¾J™.1ÌÁÑšÌë4þ§X4r!X4KkkÎÛ“däälf«{ëtÂpŸÇàQÇÄÄ\_„ɨ—hÕ EÒ½ôbœ«w܈«ÔÙ7ëßO½ WR!Š•Îö8Ûƒ ,ßíC2·íÊÙ¢ÏPÅ¥ª§'¿ŠªjtZZ$¸,LLll‡_Y3 ÿ»÷››æ×ælË++À@É„JÜÞÿ‰ùp¥ )'/ïŒ\*_*1Ÿ§]ZNåÅTBBÂÁñqG,¼ÝÝ­×^¬¹:Û»O™Æ6?x4»³=ëÛ«ýòêêë¥ÄëËÂg3q5:0å¶‹öÿ9r~p(©|ÎK{{‘¿Çò³U‹Ô윜âöI¹ß}ûöÅø;:>A–QOd"—V´éæ\³éDßÞXšŽÎNQï5ògÏ`äää Óù¦ƒ)!?~¼þæyÙÐÐÀ;8’+ƒ7=3Ó«¾ã`o/tº5±¼¼ ëê꺹½Ý10°{tº3ƒ&®'G*vø«½ÀO»×º7*­$©õ¹4 üÙó_ûgŸ¥©ä°¡ ì{çáÑÑÓïëë«$¡ˆ¨Óè/ß^ò:.S‡„„¤¼¶vP1*±˜héÿ#CÐSÄ9“›šØà⋎ûǨåÓý 3‹wï?†‰$.úWÜÃÿÆßý’ÆajÅ$%AÈYh‡øû÷ƒµ¾ÞœH²ÏáȰÎÎkÖwÂs#_ýÛGU,Ÿ¬œnOöæF’Ó9Ÿ2gäN<À¡Ç'ãr!®¬RF:´|J¯R5>>וPæyá.)ïCƶK£JÕ÷©,b|ü…¤L˜¸Ö¬ÌL—û@ŒJ•©ì_zêíõGÞB‡.§ìRÛM1µ¼ïó€F^w& ŠQœU~â{]z¢ÈôShTx†˜A©ô ’+ñÕ;Ö¾ÊùoÛïÝÞ^4_W¢í#¼hœ,Pº‰bðoÝ™ynGàí |Ë|5‚2Þ‹c×å ÁTB£µ>²˜A†“1LTâ†Ð&f Æ\ãÍÙSÜ(H¦õ@¬¤(%%?Ô¹7×:uF›••Ö>^MÂÏÏ8ÜÔøÄ¸rHÉ{á›þùE€áÅ‘ÐæT™å-ƈ½fÄÛùfÿ²ý%%֧Ξžl¨¤ÍÐU8N¨Ùžò¹¾í4°‚¢XoÔ®Uðõ¥GÂ{B9ƒùJê¼LÛÅ2Ö·o¸9ÞZ+O% úªó„æÊè ·øô“¿ØÏçscC ºìèÛb8¿DýðåË È”#z’ÓÍìx†*è¦4Q’ûüëZëŽèѨcBž«KJPsC&šÆ--]/Ðm’ŽÖݘÒ;3š©DgÔ\AÖž›sß²_¥ D= Š•9?GöíÛS×à‡¢ß‡sߤØsrr‚æf Lbçí-ÃóƒH;{V¿@ñæÓfóXFÝknï› ?¸†£cŸÒáád|O”Ë3ÛǶ¶=JšîÛEÆ–VûƒnÆFc@2‡®]A̪"ý7±å«ÖX~»Èù¾AÓ7Š#±¼Vƒw¼1gðýãŸ.‡ˆ,»“M”pü \—’ óh‘ŠS EwmþÙ¦+Rÿ€yá‹#ËòÊKD.®çù2Fq ùÔ΢ô­tB³:²&Ó™ðÜ @&³.e–^ ®ãv(sK±bñÔé1R—¼à®ï§OÏQ¶ЧèáQßtMWl³KÂ__;ú®b÷©÷ž_íswLF’4Á>/9*¯´ü àÕ,þ‰)"³´”þï岺ï/—ÿÕãìéd)JÇú€YFié+.|îRdäê°›YŸk{"ÁërÂãõÓžƒåõ.怜JÛE“¯õ6@Ù¬ŸJ®zÆä˯V¸î›<‚×k¿8>°×àÊíÛÔDÇçd®ñ%è'¤™qÜOOÀáÞµ¨ó–JG0Æz— âÛÉb^ßý–ÅÍ*÷Žùù,ÑRÍ8PÝmó^â‘;þõŽWRÄUüžç˜ðhº]v7ì×úâã›g«—™ùÀûZv›®sø4ž(}(]iŸ>Õœ®Ù&W+AìŠ Œ2°ÔB+-M.R¯ÂÔaò>^gIhúc3àpµñÓ´s˜‡×IØÁF†v”zè0¹ßò·íÍãU˜ Qýl<#:ÝúÝÖ÷ØÚZ+Ë cK©‚zÆ¿`ýt[Åz×7ž!jùâø‘†6wW"«Îp¥I*æP¥I¿æëÔœ±¼ÓNÿ' TÞ7YµÎVò^Ï|èõÐ?úE.¦twEÁLòÒ‹ ÊtÀÒ õ½Zy…Ess¥3”ÖYîGµéu¶÷²'‰“¦ÂíøiAaak[&ÊÏŸ Yâ+éé´Ü}Zokɧ¯*«¦·„--õOW¬>XYù¢ª3=—ÜÞGE¯ÆÈüw⣠î›, 6/ÖtÄ\!4ćÏQ@ ‡¶÷¾/žA2Áb(ÍgiäýHö‹Õ«ý+é„ì¯Ö³Ø@|øa{'êxޱÛ_¿£¬µŒòƒ/ƒc(*Ó7›Jb(pÉâ>‘ãmÀL@h}}-l¸âÅa¥†D!‘”ís§¦ ÌPâýKtCl„戩P(C€ÓÏU ³|š’;K9iú©A—Gï>S©„P­„/$Á‡ÃÕçà Î/ ³a"©6‘V£#WƒH]Œ¾Ýâ ü|³ÅCµ~¸ª>]ü Ö:¤5õEE¦2üÍe•£öxQ>Í}”é!‰‘U¹v{Ãóè‘¿ ©ïƒ¸vNÖa¬F ¦²Ä…Ù½ÄsNÁ<d…Bï²ßüõ+eõ[3ŸX“ºWñôI÷y“Up?ÂÒ7n0>wXP¢‚JµëLò“¨$ñó l [ýÎàšò*«±0¢¾Ÿ98 ‘íýVÌëCuÉvs#)€€³NáÁi¹åSp'¦¦ÆU\ÒòÔ\ƒ“²ªªE4&˜‰Ï­÷ö¥ 0…D)@S ŸÛ·…I g23¹Y=Ï Nö"é´»²êpŸó½ï »ë.k™5ÎpQê‰V±´„ƒXìÁƒv \$=OÅ'M>¾ç2€F)\…Ú‘!”Pqò††µÖ¼a@Lž2ÉÐ:Qƒõc "7ò"œ¨á¦‚ÏôtµÔP+›6£ûöÆwP 8 ƒ®Øèè‘Wg«úÖÅhW“vl"_´þÖÜZûý`¢èwŽ! H˜šâäfÉû†9'2!¿Ê,{ye%ho^viûE¢Hä­Ùíµ—FÅ m“³ÐÝís0o–ÆfH@®àdëLÅ‹ŽŽ´Û’Íýµ}ú½O踿X³ëÍ-U$?øºžïÑ©%:—4ˆ‘ÁÁaý–N»³ø jÈËhWûŸ¹™ñ½½35š=Ñ/O­ÈœS”6ŒD&SRfÛ;sÇ!dÏ¡¿w¯Eooi쎌±›/ûгÅ›I—½Å‹df&è´5ŽP¤†bRA‹'Œð#­ 6yƒ{rR67RŲIиD³J J؇Zöß xÅ…à5G#&f´ÜqC ÐþÊÞ¼"+@X¦7_ÑhòãY¸¹»¿¨Šàä}§zLöÈtà)™+µÔÙ/~B]I‚~€‡\zs„Í9ð 8ÆffÆÚÙ[¹ìn}ª?ƒ0#¶ü~d\\°„Üií¢SR"›½ZºÏçGÊ œ ³qf'ŠÐ–—Ê1ŸkOv78S(–¦$GK¿×üÙÚZupFŠ t“’„BHˆê-<Ô‘®°3ãx33vžjßÒ·b÷©¥øûÞÇ¿½»½B(R2<ÛóÉ() ”\'‚ãæ&í:z²ÕIÛ‚÷cH Þ9‰]1ââÄ¡?ˇ'£Ý$š,~ŠŠ„„UHA§]wÛQk³ŽÿîðÎ|±Å2H·)É>ËL¹;é½ä¿ü&("…‚L8‰ô7¢Ž~=PÕ;»êcI-i]YòÑññ!X+ZO³  ÇÓ©±L‘»>š¾RÝ&6km£ÍaT7[æQá»]®„»;µËþ-|ÿ'RH¢oNW½Ñy‘éáŠîºögWcz–)(:š„ˆà!Ð Lšš3'?ýAwuGd7{=£)ÞÜ4C@æ+ÑZé £tÚFšFd(m€çÉ ¹™{z—ÚŸ©zd=m‡h5HFG‡âuåâêŠÄa™Ãì\Mn¿1˜l¨˜Ê×0ýÍ ¹ººO†XjÙÄĤ£ƒbÉG¦/*𳦸Rux8#ÿ;ÕÛñ<=•©©tphoƒfkФˆ!5*}¯å(S·§HW‡;бPŸm¤ýµÁEøt+>7RÍ8+;½mr¯ÆRµk}ÀH¡‚¬ “âÅ‹²ý(dB®¯ííí9ÆFfªF4šø°ƒPoÂ’8‹Ú‚Cµ Å©o €66~u˜#À|L¹6­\ nä ±š›D ² „íùUzë‡ÇWåÀŠm›®ÐÑ7/ ¸·îð÷+p=4FK¯ß´ÜÒN¨YZ~aáš ŠŠ¢ÌJ%Ô> 5â´³P\üón[EY9ýÁCøÚ¶_½/õõ¸7ã©™õ¨ vgc5jè±-,>»áþqÙÿã_hÑ„ùZb_ZR²k²C£þ€Úûgåð§cHˆæƒŒ½$øïK½ŸMW׎GßÈb{Ñ .Ÿpë~ø-ýÉb¬Ö”!éIlÒl2MènèÉi‘$FÔBôÇ¡ÐÅá zNn.;û†§8(ÍÍñBŒÄeâ>.ô}ÿÞÞæ§^lû›lej5MJrr¥ûí¥x“(’¦Î÷°ý‡'ži]ä0 êê±±OqË2rû«Ìž˜Ï_Â_û, éèà€Ø"Œ“àè6Uú?¡ã*F£EY&Áÿ'§Ù²$uìò÷h óŸÓ¯ÚýOJË:¿$“üî<^¨ŒB!žØÑÕ…L@`b–Æí^AÆ&«rk0âýž0<)R~¯CÖµ¾Âåtï÷‘‘j¬ù ^ëH鋬Æ&O€÷{%+‹- ([•­?—"#””9†ó ,Åöz{m%èéé7§Ê{zÁ†^p<Ûc/Ö! ”MnÏÌU%SPTÄûE}cÌ`•ÿ}6/O{Ê«´#9êÈJS{°ÿ¦ŽBˆ^ý-x‹hÛl¡cOuv錨U{ ÛÛû{x\¥gsD‡ÕR%ŸM“GÙIJ Dá;YðƒzYLæúŽßcUŠEjª…ÙŠL†FXéÐ]‚Bµ_mÈ|«£S˜ýoûi0ϸ¸p§Êô>ñ‰‡Ø;¾>?縨 ENJÚ*Ш ú¢BOLŒ²¹¥&¼Úí¬Xc)¶ù[U´Æ'³HûÉéö¶õÕ·‰ì’ÛywXÛýªòÊ/ðVVæ8ø888‰IIÂ""Ù’ƒgÍ­­¯ 8ff{|(fŒîÏ,œAÖÒz~xyÊš“·À§ôy¼ÙË#…Ï™~qUIi´ÂfŽRÔm~x›cVᤶ¾ÐjÌ:ˆŠ(I9 ±Ð1âá,,,@êUTTŒ+Jw†âðIÊ}¨­…srâÈÌÎþltw¼1=鄽ʰ¾9ëÔ5–ú}D„[t;ÅCEEÅïß¿ÓÖ~É–ˆR2©X£"Kc°ŒŸ1Uú1<üêùáêc>5‘l¢@ÔÝ÷m~s«ß£·y!…‰AÒþä÷K`öçWPd€l€ƒ¼Æ‰à—/_†ÇÆbA<7g9÷]òòòÈš5Øãroe---CÞH(+cýùó‡ÊáyVûWŸ;o_$qÛ‚ïú3Ð*.dRp™øß x%´þÛÚb¯™ ¬H[»¥ûUOžõõnÔ´÷:Ý"ÚÚX%¾ññh> ’1„u°€ àý]…Ï)Ÿ­fm¿<-åñ|‡Ø|= Kcë[á 7޻ǒÐN)ú?ÞyÄÁÚ X‚ÇÍšÏÅ:x¿y.òÏî´¤ª¤Ìž)Þc÷½ä\źR&\&§Vo zÊ×GýºÕÇXžž¨+§ÛØ÷>‚Ê0i [[ÛÍ­­•Ém˜ƒÞØ:‡Ñ©”ÐlÁéÞøÀÛඃåÁm¢ÜLâ}wæi‹ï?&€?+¼HK+©OÊûÂßòç·W©Á²!¨X-È*Òõ3·<#'€BÈõºq“F ¹¡¡ÁmÏL0A÷Âk!>!ÎÕÕuü‹*Òì쬓“¨µu±ç]©N£¾‘‘2ë±jÜî9þBOº¸zyÞëŠî™ª*VÓ×x;Óö°Ä|ï–óÓ]VgØq#¡µ'ˆ]³”~­õbac‹±eÖ(ÕÎJÁÄÄ4t³Ó3Êвï3¶úϳóÐ}"F=‘S¥:_]v 889YMà_Üv¡uôõ}á1\/¢;dý%(OŸ”È_ONÞÜ3^89]LþãÇúr©Ëa$wÞ@Væä ‹Q72>A{k+LZZš¤¬lü¾¼””o~>ÍÉ驾þû'XÔßÏúÙ€@ àü–F¢ÃÂų¹½íÃBùä¿r¾œØéÖÄH"ÅÎLÍâò3Bî·¢©|ÎùùA5VS¸n¤qÕ@ÙU›< 0/Àø³¿ˆsô ¹¹Y`o¡ iI¶…ø¥;¶óÖ¸†Æ4¼ˆ›Ã¶Ïû[¯g±½å®ûº‰‰‰¯äåÑöööx÷®¢N{zÐê½öÜ÷¡ŽåÉŠ©•è››#’’½pA†9¸¾p4·°Éœ‹þt¶ß#›Ì•é}s *Ê/9™0&6v­§Éã.(00ˤ?axxø}t4ƃ‡SŽw+žk×v~¦X»ÂÄÂÊ,, ñ¹½ØÈþŒ}ø2 °Q·“h'Ñõy6ÊŸz.ïv ½N,¾Ý¯H£ ‰Š’SS‹ûáŸ_o 1ñóöŽ1ÿ²²2Ï»bÍ*ÑÁT1•¸àÐPÌÔ®¸Žë?0„`_…“ ê~­øM½Òæææw½³[Á~Ûº¦oßDóåREs¾:o'”WV^.MŸéq[ŽÓFÇÅQÖ¾§¯®©AúÉE†¸HpJ·ÁÍÁ =ºA>Ãj²#00ðÈ«þ4¹¦¦fºÒ$LRRò{ÅÑÞ¨WJL ´—M½²ºŠtÚЮQm] Óèâ5T†üv¾!Lgpÿ'f$eeeè˜ÆEsÔ©„÷~ëšó躨ƒCåõ4øÄ+++2ôíÉ,ð •s—oû7?÷½ç •iÜg«-(L$’-žíÝØêë?ƒž@"àIûàÁsîÝŠ«?»X_T±ž>}*Œ@~,K-+êâòG¢ÊkÐ#£üÌ̘tlBî4ÜçÚ·Ï,§ÒÈódçèÓøÝ¨œ”ºUĦDÔk鉫^¦oöñ#úE-ôØ<‡µPÏ«£µþ,!?8á`nAã®ÎN2Iyù»M4ÿý·„„„>vÍסOÑHøÑ…¢ããã7*êé"g'qZ…‚B ûõˈÖ瘘˜¿®¶ë\¯¶oKîd¢dŒÚh[`ž1é4P. €E^]ÝD/^-ë¸_©¹»7h48BýúĬ‡+Œ``eÅ ûí]æÁî;=ÝÇÙgs eº//š]˼V»Q¢i+«ªº~å ò ͱ³³477ó8ü FÖmryŒ„û+i{×Jp㥂¢¸íšûõyîxÈÀœ•2 QÑôgÔÔp(m“?nkon¾ÙÉ&º"ä²B#í«CAA…ÙÚÚJwjª‹5ÜXÛåɸš~ âõ¦ÉÔ³ÈÝí=˜þ(ÛŸ_%ÎÖ&ïvV?œ¶ÍeÆÂèÆl{Ýxûü:ó¦ýQ‘™™i¾ðw0õEÐjOT¶f•)t+Ÿ»;Ÿ““vñíííÇ^cð?vöþÓon5˽±4G»®ûw¢Ó33™"A¨ggwKü¶Qªªª]ïa–õ òûÜ‘‘‘ÙÙÛ÷²û±5ÁO¨B%…—pa!’Ç ÑÔô˜¸~·#éûu*¹Ã;Wò˜÷¾¾°{ó4‹¨Ožø¦§§{6ŠGð"Ô½@ök.àfù‹é@ï +(CO=åÙOß˜Š§§5 û£H^~¨ªbÑ‹Û8tÃY½Ç¢¶ËgôôÒ·§ÉÜŽ?§H·£®Ð¿tpŒÏfŒp}} køð;ÍGPcíu8ÂÀ¬ÿøüf(Ypk¼bÑûìÖÕÅ%°±ñ…\*ßc=½E´Áã½ @ãÀ>ÒÔÚÌ‚JÌ=s3U¨=ƒ9ȳ3z ‹Æ´}nÃÀ Nß” ---Zg¹çÆx|ˆ€ÉCâùà °n_ëë—»ÂðŽnäääð½ù¡û)çêl;ÆÆØÇ7L–ÚZK´ëЉ‰oÚŽfë_rfX¢‡žnO­¶ÜÝvøÜÝåää]­® ÚVjAP dspxx'ø}˜ýj7ÎfóàþÍÁÞÙžQ"‹Û‘ñ;wwa€Òܶ qw3MÜ—§Ûù»´ÅR±Ôdll˜ "ö¡‘¤lÛƒ—‚²²ˆ´4âú`* #/UGGGcSÓ•ütïË%O“å—¥uÙ«=f­`ìC‹"ƒH<Ð:¼È,™½¨h®ˆÁƸ””õkô‰"u<Õ"5À‘8@ÌÝôööÈQ)ÓÕþ:‡MÖÙ³A×g¥üQ"‡EÌ0˜#˜.»˜8 j?ΜIçå-R:6[}ftfy^e¹¯¯wä…ŠŠ*,###*!D†%³J$þø·§Õdpƒó6¢ŽŽÎòò²bÆ_ÙYÇÕbcñÕÉoeØgS‚/ÝOB]~­1Á@'«[¼½2‹ŠÀ”‰)Wj£Q÷6µ@­$©@µ:w‚ÅÅÅÕþãã”QºáÎtо"€.³5+SÓG¹‚¡]œ®ZŒ,F·,—]:Ãës{à  /<ÛÏèÂØz¼¡Á’¬üï`@FÓ#S‚ž]™ÄmËDê€ùôi@óéñ|Ú½[Úˆ@II¡ìfƒ€ ÞÔ;T¼é˜›#„xsu†ääé Ñq)a\.±ÒgN+\PaA€Xq¶=|p¡½»æ¢Æ'm±4eÀ' Êí&IÅbЂr€˜{_^ÎòîÝ;È/€nµ×-z#ä-4¢ÃùSqtâ[Y“ ´.ÕTiWbvN¤²eaQQ{o/2|óçÕÍŸ_°p§£ÉÉÕ{/ᢡ]1IØŸÙá28+AFQQ¯ãº$±LayÔñ¾«Q·dbéè=Õ.Ð)æó œ€„|fKç{¸:ì¬õÃ/__x€Ö£~Õ-·ÜéÊ@«¤›U…RÄÔ+ Ŭ~UÜ—ŽðJñ!hñåј'Ÿ‰…„ÔöÏzÇÈÞ«B}h³ h7XæóÝ:‘óí2$;.¿|3W`{bøÈ10Fh–±þžnI—¾Ô®¦c¦jqµ‡Ôèm¶îìç) RÉ¡-®,áûeàà‚àoωR^bÑh‘?{FàoiÕýÉ“Âû•,z–† MÌ3åýÚ¨½t}Ákçº(xËãë²»Þ6u†ðOÇüÏ÷†$¨¹AïýñyZ7M`BJæ„Þ;:Ê– ½÷D1å$)xÓHF»ÝYNèð ]—ࢸæþþÎÎfý pGËKK äSô(ll*SŠ#éUGs"…/`Äñ ‡ŒNNvÆÑMâ ü$bP'ñ‹"+ÖÆ Á*a±Ó×.(<<û ŒOCÁíAš $ñ‡`IK`ƒ¿_B÷­Ÿ˜P,Ñâ4·²Â뿘Y|ÿšZ$W:>£¬ '~åB¨B8ñÝŸÍŠ”ÆêÞÁ„å‘léàðâPÿ#Iú#+JʸŽ0<…B¥™f×°ÐÒR&÷³=€4…Ùq´(›ã½ø¨¨yïNé‡á‘vƒ¦ ¢–EÎÌ"…f Æ¿:èƒ}?Yä/´õ›û¹™ñííC ñ¤¥Í+*·LöÅ÷”»ìJ¥¼àÎÿ>$k¢þú5‘÷Õ.úíåöŽóÊùZЦÌÇ^ÃÈ¥.fÔ!&I#/ÞÖ×G¸·G8RïH‘ÂljTezÊ”`ˆ¡h_¨ÓH€Ëì"n¾Ygþsƨ»¸‡{‘Q\C#*©‚ð¿iÝ·Ö¶´Tþ 2’„JŒˆ /Ãý´OI‚âÒøtÛÇ7ž!hé{ôo€/ôDDjí#öTLzÞÏœ9@Òdÿµb›#2¯Ó›Q=_@;QFAðµo;>éHG|ç°ÌAlÉ„Ìbx8ãÉÎ!±úJw ¸yÛýj!9ý„n“t H]§s$hC \W!„…½ˆÙ™#Ëpì‹ªŽ›âIW¥†S{"ë6Í}/(þž|K­ëù .,Àgæå}(T.auw»ßc‹(èLL&\Τ›®Ûg[Z„w<¾°s²öû=æ!¤^—)ðœWÍíkdH铌Aj»ÆN.–‘E.’. ×1Û@Wû6â}ÝìÎO7ŒŽ@ç_~  PîÍ«Še ÿÓ€tïY?Bn£Ö÷j‰œEh4UÔ—¤ÎΪÈã¨áªÛœi*¬5<j(aØ wX;I n܇²w¾+¬ÍO½„ù‹ÚDû¢<´jʈ‹±&¬\Eôsþ9:‰¡œœéÁ`Tbo¡W¯x*++ïkí§Ÿb~ô’JäÜfvÚ½d04ÂúzôT‘lsÓÜ`²xÇÙ·ÁÅ&øjT¤01ÔfJ(„JîO0)†ôÿø!ZäsÖz?ßx×–Â{SîsGYê)~òÄr|¸»=áÉçÀËÓS—¸“ýdÀ­ñÐ:Ý_ü(Måú˜ÁöGÒ)žµµ9¿'×Bªñ¤2ÁA“ÅO}—–žZl–auø¥õ³‹á¾¯®¡@R‘ó]>í×D“艇’.’4Ý7Ýgo'-8T£?ÁûWd‰ö<:ÖñÆÛÐC[ _°þNE±n‹\×ÏúÆáší²¯Ž4¸BB{- 8ÎÛ[ $ ?ÿÍhA{µ‡b$ÓïÛ·?äddª[梢90_ÿPCLˆDöèÇÁŽ~ü™™ººµv–ý™f¢T’bb^Í5ÎÊÿH6 üwÐúõ¿%[40stÞ†c&wÝ¥˜žfìøÕë»ù³Œßl…†(%È‹¯ .íŸÙ«–ÃÙîûmΞª?‚×û (RÄCeB¨#Ÿ§Ê”nÎ^ØÜîÆ âÇùÔa©úZEƒ±±‘ý‘4Ah`°˜éugç8­ÛH~q_]J«ëÒÚ60=U¤'²E¿')ñEéŸÝdÜç–PÜ Ì üˆËm)ÍÍ @ò®Ù9½ IæN—„¢*ýä~n7«®¯ö)N¶ëc©gÉ|êF@J~¢>%§  í]|s{~j °­¼ò¨8[tÂä{˜ˆÁ¿Ÿ•©•ÕXV#qôâ/PQËÊN…HNN<×á’#Pu,áLÌÖ¥÷àL@›=¥1÷G‡jz_Ÿ¯¾ýnܺÒ5X^cóøs¸<6]eÃçý·j¬ä g*ÑÁ¥µu†¨ásSŒŸ7š±ç·…ÒÚw¾…ÞÌL0œ´åIê îö £ÅöÁRÎ01QiQ‘ì¿Euk*Vãvüaá ´‡Úmë`¬1PP@[úèw7xQó=ŽçO£cÆFFÚ‹5›0 5jn®V€EË›_1§Ê Rˆ‡¹­< j(Ì-;ÉÚêDüx®=ÙVª³Zá°†.*úSìêîÁÑlXg'”ЬK9SPÔAµÉ@hPPðýàj_®¼Ž;ž#þÛLrHEII²áÍ¥2“÷»sCF}q$ Ë‘TUo’‚%5ôœ <ñ8? JIQk°yØ|‘Ç+—’Økˆáõ ˆÒÒT€bïq]´ è"'zé.•‘Šè_n@ +÷¾¡sÚþÃ@"è0ßø’Õ§™˜^}ò#U¼!ŸÖùÅÆ-û‰6 ‰(!?5øÞ.x’C‰sùúïÁJ{VV{û-‹¾™"/V@ž˜O|)žUÒ—Ãüàñõu áwgU;ˆäX¾mG•Ù“ûì—¿?‘¤ø”Êÿ€5FF\è°ÖÎ ;,àIñ‹£”•Á²=‘Ý<žïè==áVö[Ê2½<˜ÏωDµ´òî™òãßSÈ~{ó¨W8ç{»PŠ¡’¤„—µ”>wfèIOÏ6=—¼2^¨™È3‚éí¹9܆$$´ñÌÿ~™çïò¦‰¤ËŸäüÐW=ÿO̱ Ø º]ë;,ík%%­-í½õž%C$(0‘ƒÝ늩«+ìì>%·þÆÓ l¯KÆî™K¿-BD‚ò Ó J=ääTfúT2)°ãòCè_ŸË¾;úƒí>–tõ;Ö°‚- ÚW¯Žuå·ŽU½õÂú>XZ®Ê´æ`Jäüx(Ú åsIAc.k~<Jì5ajž‰€'-ºº©õ~½‚"=ÁbdµÏÂQQÕ¤íƒiU'jgûÜÖ ŠGî¨<( Ž“Ç,  C}%SÄO-¿kfÆò1™íùFt "j³?“î3jjÔ¶6,V“PP srUQgg“óÕºìZv¥J^„…öÓÚ;ÌV“m“ŒÖìnÎ{°¦6Þ“È%©·%´ÅÃV¦—oxybƒÿÂå¡ûÙÛH?øü ·c-¥%Z¶ÏÈ@µ8þŠÃŒ*.TòB¥äKà™¨‡ðÔÀ3sqõ³˜þpç÷e¥¥ˆÊ¥›¢*á ƒ¶Õ íT 2"½oxZ #Ê÷GÃ$a©¨r¡3ÔrÈþUUO]vð£ôåFæ:9!†ë,@‹lblÜÖØ1,-<–ÇY´£Z Á™O†Ã¹ýu=ñ ŸBŬdù7ƒµënEö “ˆˆ¯n¤_9®¬›M]ú¹…o–5³ÅÑÏšB@ºBe7õô‹gˆÊ ÒCÇvsBv±1Aô&'[„€-—ˆ|-2Uúf´éëéî•s¤³3'(jé¸Àk-#!Xì‡TÔ²ˆþÐþüÏwŒP¾åÞˆ~ );Ð:^¨½&2 ú8ÝR͉T¥†2*’˜PXõt '/<ü5ªEŒÆéV|…]æCˆ~««_kh¹wŒ9b­¬`BežÃñlÖÞ.FŠA'–ÚŠ¦¿ÚceHµNÖrVV-2nÛ*=wǤ!'‡1_ø†ûgç°s¿åÅrgˆ¤Ó) «ñ§ËƧ‚yþ§¡m`ÆÅ+Òð¨¯ÅëÞêI¾®¬}KÏ<ÊËcGÅ—5*JÛ¶°€/?XTÄ»>€Þ…›vÒk²T!Ð÷A€‚ƒ¯Ø¯6,ÏÙzÉ>ß_<þæ~ŠHFF¶ä³Ûe´;+ù¦3(ÝÛ2¢/¾_ŠX‚îéÓ§™ªEjJ=Ï»ží±ÿHmD"#›™þèxåU‰–jn¤˜h޹çß±›Éº´Õ€-_îyñ º'ax—Y7\*–DZ¡RFç)ŽY>$äM|áWü§O—S_€¶©ì¡£uwÞ4††+Ðþëó'ÏKŽ hT°T¢yäØÝÙ~K‹ç9@á´'æã’-­e?~@÷ÚßÝÞ¾–TáÿÖÔTa=ÃVhô“•›»hð®ËÓ|hÚŽa7=ùªcõݘ ZF‹wO逄ot¤óòT;4¥hµÕW*€ðÐø„êòÖì¹þ]Ÿ Tÿó‡ÁnµÛâèx÷û ’bd` ÔÕõ`}ûS|z¶¶=%[!74Z’ÿ_¥‹Šå}ÉSfª—Å,¯TÜÞöT¼«`Çerúîê`Àc yª}o>íàKçájôæ¸,×[þˆk¹miÑor*€EßS_Tlι>ÉÊJ3Ü<´³cBô¨²b´ÁRk-T@/_zÀ7_¬»^ˇCi!s¯r(í6‡[6g޹UJ´0‚PeÛ¦ô¦ø”2㟂P ñIX˜UêëÅdª>XÜ Ê–È‡¶ ›<˜ó7¨ù} ,EEaîa‡jpˆ›B¢T¬Åû96*ÀªœHC'gg$Ok--‚ŸóóŠEjϧïÁ¨¨¨8ºitÙý!kßùC]±Ö/8Gµå™èžî||î°¾÷õAò,:çoš‘ijÎ$rZÁ{_Z QËV¶g‰¡*¨«Çó©…„†…1TÄÒÈwWõ”[M1½itAIJJÂg7 ÷¼[î201Qý»c÷,k´m´ò õ°êêŽ?’ñÂÓ^út\»BMùô>BÒ¯øÄÃ5Âd“Û+ »ô_6|îL } €ªÝ&>NKÿ—~á«Qþ[V÷ûj‹_í)À[¾|ù²X§QíöŒŽŽîàäÄ¿¹Y™Å ýQN^^û÷ï0eeQ®ûënŒ0ÿÝ­ÃÛ3£îð§,þ¾¾°ü/_:þBFAëOxž™™ KAAñnÝÜHA€ÃæáÇЗî á1ùgf’}Q-‚l!šúüÒ£ö:$ŸÕ¨û•˜wZ¶DT–\*RÿqRý…†&"`D¶.‰(¹ Ò·TÀA„wŒì`Þ[µÛ«ýšòÚ?ÔÔU3U®¡»|a¸Ï1k@Üuuu³”óåÈÙØ”~68Ëhhj†¸ À Ï78cq¿ý‰íˆäååîý¬?òÊÀ”’’2Üž,ÖÖÖ¾mЬ2 ØVP@‹ƒCÅçºÇ¸þã3…Ï|ãßð r^^MïRFÿšštá`çíÉBnzÏ œ>·ždYÙÙbïÞ}-PÎ<8=ßçfa¹(©6,,¬°„aþëÏä˜XX] &`XíWD¡]µbèl$\FôÚÚZhWïM½ƒXµå„ôׯÆþ!#›çÐÓ=111¾­_mõ Ý¹‘QÁD%½U¯~{“m>nžw¾µJÎÎ.³% Ê¢+"¬,C§ãu,ËËló©·iÀÚÖj”©N“~ˆˆèŠgPÿ5"r›1ìð{”êâO½ã†¨ʯ+þwÏüÑÉz¶ÃÃÃxöË<Ôu{šãÓÒ˜˜tèÃÁÇ×ú?  OÏΆâ1ëÒ‚˜X[3–ê6Ñ/¢¢¡át?Ú…öò:;E¡,¹t!ÂÕÕÕµ©^›«ùm~·#Ñf¯“MEð)Á¡ÆÝïÛIûýEÌHSЗÄÄŽù×Á*檌4]A+c ȳb–JÔ0åY!Ž30P´s¾Áêî¾Ô¨{û„’Ö9‡ÈÐÐp8Cèá…KG Š O÷ô´ÆmMHÈhïo‘‹ƒãLAÁ/¢åÛÍ‘l´Á«½mDGkssZè–&K´¡ƒÃSSJJ˜£cc™ÙÙÙûgg=ŠÙ006sµ7Ħ¦¦¼¥`²^¼xÑÙÓ³ÚÏÜrýLd­/þ~w«þm H{?"õLáÇd00 =˜8Ï*š)•Œ l Qð‡«ÌößG °AØ}¶xö\9 ]q¦ãn $88´m²ºõj0•ŒÖüM!.ì«$Nû«?6R_¸ ðPÿssH1[åâOO‚bø[äñBƒ3˜/Dw(C¡[=Ï/. @À˜àLåžYmߥ?”Vœ[ÞÚB${äÎã¸àzjí¯°°°Ã—¿vv] ·¹™ÿyÀÕ5…ϱ¹¹¹~6àΈӑU `o0çqgóÚu¼¤r·&Æ:òd6Ò)ì×Ü•å%|î–äý{3”¿?ºFõ& µü  &¾Ñê5; ¿xw ÿîÝ;¨áàÈÈîºEï«6Öÿ¼ûÓÖÕEµxÌÇËkp}~øÕëŠëíb3мüQYXTÔЙÙ#jù4dyyùÍß¿—×’¦‰·xß`7ï;ÚÛC‡ @]‚¬åææþöîP¸Y‰ ÕÒÒRRJªígý]Ï‚W§³·=Ì5²":<ÅwÄg"DÁ}•Î*ÚE5–6:ªBEb%¡µ{µ³–%jÚ%EZu+C¸6VóHð˜Tþ,(ÿés÷ñÑWRÈ{$Ü~ÁåÿÓÃñí7îÕŸÇi®T0à5yS°eJ'41úò±Î`ŒéJ™øþÉ“D³½’3#¬,ÄœªÂDV«Éëƒ.²gÏÄG 0„ƒ¯éÞò‘ù£giù ³j—/á³sëuFÛõ”Ù¢%ŽŽ*Õê·=È++ÚÙÙI,+c‰žG½.JSCƒÅËËk}m­KZZÚøLUåÐÅÞžõøèÈŸ$êð?@®÷Õž(³ÙÙYFjê¼n“±ÑQü÷ô>¨Ä_0¯¿ÄÄ`þYû¤ÇFÕÃç²ó½ù|IMMºñ®Õ÷ákyù¨ÏŸ?WÌ7ºBgjع¹ë´ÎV'樨¨vŠÊš ÅÅŹü˜ŸO]ÛØP¯OûFRÅT„¡(^QñÙúè×üéw°É¼ÇÏd¤z$è0ò†7•Ë!ùä¦F^Z[‹(R9ì!U>ÜkÔIæ5e8WkU6v´1˜*2”ö²mãfyy_Àó«µ$^P‡/›çk…øóß[ט£)oš¯‰ÔR„\\ÈL‡Hü/Žƒ€¾•…¢+)bEfá.,ùpmãÓÒ˜¼kÛ3fO”OæGã‘d(ݾ}ûö1:Ú÷×/cFíZè jN§yôWBŠº"N„ý,žY/zãøÁß}ЮkÇ!Æ%óç@  ‡÷ý;mk"ë tÂäv³õö™¥²‰™³EŸ¨?»s““¸^—'¾€œ›ïn=fnªL”ôœóïÛ;:3^ª§‡„ôÒóò7ÓëÔ<:ºúPÔtá) Ðíaa.'¼ñ‰z—¤ÄD's~Žœ Zv>ï/õž¼ÍW{òÆ&8Ã,œÂÁlû=Uä öp©ŽÕõÅMè,³*Šr£[l`!†püßþ»7xp#®vïŠ~bJµ;úEªŒ–RlàcBB ubRn®µ#i^BJJöæ0Ðþjq,äÐ6Ær{@~"¿÷åiU[4ûHmIB–øÍèMÍՃ姕»Ÿš{Þ^¼×údVìù]C¸‰’Ò¸E,.&F»Pøûâìbé‚ë³Hv†ó$Ôü½ŽGGûµ>œ‚-íFÚ¶Ž Í¯ÜÄööYØ,ý2Aa6Ö5ÿ$¡`¯Â¶šäïR›…»L›ýøÃ2µbÿÒRjµÒgç ϬʃÓ 8á'Dħ#eéŒÏçúL®Ê¤¥é…õõ©11£ãT|_=@Aaz-ë¬oš‡âèHœ˜¼Ý:\ιe¯1syò{Œ‡&ç)ÃsÞȢéÚ]zkëwçö›óÉe›ådÏ ÿÄ–îrË ÍÅý BýöGx3^| Ýâ¿øå´HH˜e|cË­E$)ƒøÛ/Çze¥Òî¤@`¶„] Ê6¬ëYóæÔPžî“š×=ÖõÁ—‚ƒÍ絪ä¶ß4<@‹jZrð(ì>ù}³F ¬ùáÓËŽ…¦:t||$++‘׉Kzc¯²@9x1ÒUh|((@~OCÎÃó¤­-äÝ%Ç“Ü\as«:á©ÒnàÑüüü興~è[õÇ^Ý=&{®hmMÝ|; ïº'º+©ºE¸ËO²õo¸Åk0¶}s»ëXôüÔ3·9­Hxx¨YÙ©àîÞl­)ÒQËÂ=Ÿ^v$ú‘ƒ®sµFyI—–;ÄøkÉy$õRÿÖa<£>ƒËïÍñB¯ì—{—§wKíf_í@ŽÎ|» ¯}ÛôÀ÷U8*±­¹Ij¬ì)Q ‚í¾Ð'°†OÄ#:ß>É²Èæ×#~42+)ŸF)ü ]H]ÉÅ%•ž*zg'œà%µ° †²€€Ðùaã’¯F³'ew„#Àkÿ A˜â”´¨3Âãâ~N}ñ“‚›€œYþÍV¦‹>3tBȳ™¤¸93{LºÍ#Kktìxy+Ø~ÿ''žm‹ÍC0içKáëQN¿„õOØD¿àßú6Gça¿«…@‰ çìÌÔ|aêÿÆ]g"'#ÛlH Ý÷aAÒxxö¯g]4é'BÉ\±Å_BhÅ_¿¦~ðÐÝoi‰RT,W„Ü`éЉê#ñ€þ0OÇoE1Ó_ÉQ‰ü’µÍŠõQ''CQÃÐGîç*xëKi½ ˜‡g¸Ÿhfk¬ ´xk˜›ÓœÔÿ=jp~ Ò3E Û ]ËëêÚn¹]¹Úb ÌNÛ˜#̹guDÇ€ µ¬CÇõÅþ„[êÞ|KG^@å\Cƒ¢Ö„q¯¨ÅDt”<:ç‹¥ óëäIÒ?R“~ꩪ¨n Åš¨J¶µI‡¿†7*£‰¾<©xÕ9‹‹n‚A”lÒ/GFIù˜Ý¬Ù¯+,(S•!i' }t“Ö@L´^5M^äÝ;ú£ã~³ø/…ÒßÛÛaÀ¥ié0–Ž‡Ð––;Þ½óz›ûáìõ) ê•ŸõÓuû¸ícƪl`B22Ù½«ˆ]å•Z¡Ä/~²Zª”ñ•ÄF+ÂHôì3ÜÈÊF„‰…®•-؆³ÅRWÎÿPn»ø¼³ÇŒáú¢˜V°ÛÀ€.>FÃF.ä׊a€€cRµt(ºÉ3L)»ƒ%›ë£~·Ííº.yÁˆ¶ûNŠ µÐ'Äïq@ONÃШ "úÄÄ×3ûšß‡˜aaª-sQedjhlvôõÁ$$\X70ÈŒ’KРRQ"o/ô8¼vCŒ$½Ë’ºl«6 MË'}%á7’í±Z5t™i¥nЃ÷) nA+ìx¯udä@ k”ó÷*\¬ÆÕÖRø –¥Ó˜g«Æ°{÷k× íî–V5«÷7¤ŸóW\n]j² ©õ¨£ú°$£Hiž±WÁXZ¾qÚ³¦-޹-ÚÌÁ#rw'™,½!U„¨t²Œt®Àk Á=úq ]\P‡õ»ÛœkˆŠ&÷:©Æ ×ÖŠ—×pº¯f+‚œ“KKAñðè¢~®¢ pkcðe{ÚKîÃM6€¨ï°h„µÝN|ÜØ‰°höÚ7¬†3Eæ¥lf`µët}hKO\A-­x É$xãgN~ÎòžPww×Í¥•Åóë¶N*CQŸ¥„„£¹åh9Ñ(›Î?tž®.+.ó-ÌXÞiöò˜?º[¶?@î­¤ÏYZå÷JòU"srÒj[Xø:ªÀ¥­¦´ƒGfKOM¥ç³ë×èJÁjCØ|õ{¶vB ª­5‰ûÚ²¥f.Öü„B,)b¸‚$I¹fû%k›]++«œaoJhŸ+áA ó¸9 68eGóçä®-Ÿü~¶³èCøû·[å²|GÐ Ú.…¤(ŠçÏÑùžë©vl«[˜@_ªo<.GBÖ§êÒ‚5÷v-ZòÃæfŸT<&zpFQÑãr*\\ÄCQ?£×†·õÐ ©§û5ðá-z¿x°ÚÍËÀÇ(ìð7õ¶žvv“ÓÓŒ¬Ý‰‹™<ãã{øøñûÇ«)¸ÉI¸òÚõ¶ÙYôÔ„í³Iðzh–ˆ ~S8xHKˇðYYlú¾\™~UÆ¥±Øxµ»^k¼ÎÀrö[_S_Ç*æúý RÎZÍ S8öHîv¼M}èÿñ2 šžjJ(/Œ.ì*«§ä´µ¾ÇÕÖòOÏ2¾~>$Xûü É“eùè ¥»ä׳f´ ÿ@…À¬u|ÏéÍUKþì¬Òû4QšÕ~…)'çW{AØÄ1Jt´´]3UQvK­6þy­mmÈ{{^‡½4^*[ýìé-øÉÜ>¡¬F)[Õžn+«ÂôM'ÕTM¬®8½Ï 8¨åœ¬~($ûÜÝy# ÈªÎÜÝ…þ;ûtQ0¡ÿGö)–eƒ*õjÿ®ˆÎ¶ïÑ‘.¯«›¢ÑGwî/.¾úwõ‰Ä¬6-//|«Ï„ðÝ)›?€MP5µ3Ê¡¡}º¨"¾Ï‰sÆyú9²#håüð =¤óÝÝÍÞÁ Œ™™ «+Ðǚϻ2EÒÓÍÚö̸q ÜyÂ4Ÿ¯_<ž /pд]¦W%{ü¸‹Œ&ak놦ªùéV—úlægQgˆoú?¥‹{{Óá2“ZŒ]Òuù?òGȄҊÃõñã\Y@ÖÎAÇUK{&-?ôfs˲­;ï›p@hMÃï?^—IååÛJK÷™‰ ¡ÉûE ½!Tƒ®YÀ¯îìåù…X+Ѐ8 G)¹ã÷6ÈSw†7Ú&&¶"êŽ÷ YœÌ]u.}‰²­¼s^kÚ'ÐVsæx›Â®UcÉë¥DOýàáá’QhØãJÿ¦°0ª”ÔçËKúp„„iÒjv˜kJ@Š ¦N•;oãLÏ®n¤÷dšÉ³‹‰!X¤Ýë´'qÒß''kRY3Å8WH3³GK mmŠ\K¾ù8aÖ<Ù¹ ž(¬¥Uö:1•W¢ à"IN{*ŒniA>•¼\Ú[À»¹œ©^exsUÖÏ 3\StHh»+_Û¸af(þ`ÌT¦Ww”«o„ðkt|ߨipeÐqâÉ@Æ Z10` IäãììF0 ˜TÕ¬Õ‡q’‘ÑiÔî`§ñKµßPñî¥úmI’Èë'd¶áP=ŒŽo%ãÇüÁË*s¦Á]þís¶ß³ô«wÆÎ.£(_5Ú{f±ñ ·ôÍßÌL¦îHçöj‹}럺#Ëœ…``,žçegz#¢=fé»"sµZÓµ6•DÙʨCŸ´·ù¹~LJ «[¬õmôÐó<ð +uÁ¡ Ž,Mu¿æÎͼj[….D´Š;&<š…è¥;šÕÔmÄŸÝ9ýù† |Ž‚°¬rRˆì?v“c‡FÇÄ0È å“‡72ò=ŒjxXÁ¯ÂÞcz– ­­M%¿²–+'íÊ3lP–ÝBçWËç‡3vNêN’rââ°r©ˆ­™"®c„õv`[‡˜`Q_G~üXc¾x;•ξ âÏ^*uÏf\°óŠqÁž'íBúúŒ wЉR(ÍìM¹€™9ÙêʇëÊQ41ÆÖHr„Fþ‘lþàxhbOhi ;ê>Þ À³õöòÆcŠŒ¦‰˜˜9Br(=fPÎÔlªPìôÒè]Ý…¯ž¼‘$©º_hŸ=ƒ»ús-"[Œø´2*× ÜN›ª†¢o½—ú —HÄÔö[“Y+ßñÖ»ës¯_ë¸Fú@˜³Šogÿ+j ŸW§íž(";_'$ÕTÞù=v¥lÂþ§ŸSŠo$ùÚÓwxXÅDƒCŒK§I60‰o}Ý}s4—ŸÕØvñ ׎‡¶Ü*VÕùQÿÝò¢OúÊ÷è§ güõŸ­Ê@HO¤sVa+ÃùvYO"ç6zL,77môánpN=…ÊŽkø©GEÓ¯oþìJË`4J©þ:e30’˜îP1õúZÉ? ÷{Œ$`ñà¨!8ML©YFW`æD^šKvÄÅ!”»SíÌ:ƒñ¯}:,¯X¦ƒ„ˆá½Wü¢¤¡xp âïŸóݰ·¢‚"jÐCöªHæ"ÿpã a..þ/øJè!þmŒ >ò8S/x'Ljþ’O÷†áäDÚ‹ØžÊü²„ã›wD‡‡„„Õ©¤ÞDÉ£¿]¼Uð­aMÓ†G=§:éhõ#QÀ|>éò˜Ã_ƒQHE%pçeÅõ¢h\|H˜ô?ºAAÏͰòþ:ZÛ€Ÿó ’!ö«)8Ęd9örÈú TUV6û0¡i‚òÝUfk‚¼¼b00@gÏ7&gis9m›~(Õ‰€ ©MËÇ®Aí:Äy»Û°/®›X.VJ~ÈtóÏ~KÄÉ ÿ·›ZઠÏíà íqˆÓF/W£’§k¶ùHÞLdì*´Kzç¨JäË=ÎRepþ‡2”øÄ”ŠMœÔ‡Ò·(Â@M"(÷@Ji)îÎ_oŒ$“G6¹·÷.ë¯ïÂ_³¼+é}iÁøZö·#}(„¨kdØ¡X±š¿ýJª;› Óá,ÖÒp9®"CùÜØÐ‘ðH:ê#[Sxýpˆå²c%ñ÷~†øq}eËÂç2ÞýÕž)‘míy"~Nïè…tqÄ[n\žÒÈí Kã÷Ê(•KC~>ÑÙcÖd_ºÏi¶ÄYž.Ä+Zl ŽÇ°°eª›ÒAoeŠ>ºŸ®ˆè¥Óhg]•;ý–¢¤ZÓ_n?;ìÂóÛÌzLöå>ë×逃“O§ì%¥ö+öI…ƇZ›šá+·.¦› MüR¢zDZÇ~à³AkŸDÊÍGX@&…Úo© ÿÙmÓ‹#œYhª+7êQåw?ñ«­r²Ÿ®ûLŸ”AvZ¡Îâ .<&!ñ2x+ÏQø¯À|1/±ë|5Š”ÓkëwÓåüDÄ÷NÇ<ŠßRRÈ5 @ÆP<¤µojìíÿõ‘®Á•6½L G« ™»ƒÕyKZÜKâL§åK§ ]ýkBÇNØÌ•.®N Ì¢R…':™¯ÿ „Imð¨ êùôAyÓõBË˱51éXXjG=êüüž¾yìRÉË×…ðñˆa•&ùKû¤…ÊWËÛeAÊz’Â*!²’elyd`PèÜ mae%zƒüxúƒƒó‡FÝ<‡ôŸ8ýÊöEˆøß‘TiÚ’î9 o3;ŒWÒ]ëÓBê}µË–Æoñ®}@6A̤((™½…ˆvl»5i`.X]бòd·áVÿ„¢–uEþ öòñ9¡%ÑÔ PP^Ír4™¹jôó£sÿÃ!Q¤¶œñ÷'÷ ²5[ŒÀÒ·78±š+àÝKJ|\ä½bD^z$u —R ¥ Áç~ ¿àUÇà²s Pø;‚bÌþü@šbòhüý–Eâ´´‡K;Ö…›ÃZqá߯‡½»<é³1[íF:ßH§ùêíõ9…œÂZ/Ë–¸±ßI<:’†J‰ÿ%|†ž a¼ C¬z¬¤ý÷^º/ã —nêÌ(uªOŸ>Ö¨Z'òôü —b²”XÄ«AQÒaß%€Ñ!dJ×Y;\}Äï\]Í󾾞Äý„%ÀÏïw¿Ï@ÁSΪéé×á$M(: NíÑì……×ê9`0ézÂÙî{‡½ÏÍ…¥–uèÊ‘z;~%"t{&ès}СéTf5ìâ}ùÛöç·§‘axx½tlJz©z@øxȳ“É’?~ÔI”ÑPUvŽ(´„”zÇÌŒR‚deÅrá¸Ø‡„•¾xtÏ«´£cHý¾N_H¿%}¢(`\O*|¶?F$Š”†œ‰ )œ51Ñé}v6/H| äA®4{нŽSÑÚ¹qûçY-ñˆK”ÀÀ{ÃÚÑ3Ñj¯þ±è£;ž"@ì-§xŠ´Œg&áîÐóñ¢Êÿ.)òW=”–~„ÏWýÀf–¶X8=P±Á¡}H–€ ;X<öðXU,>ÞäT~‚¿¼‘>´Úê;gç\ÓÎÜï )ãqb(í9‹¶D~‚”AGž˜øªC£i$£>5ÈQþ} Oìü|ÕdæÊ§Ì¹²üj)3¿ÿ®Ëå’0 Þñ·…?…NüZ(¤,¬çM™YÈãØ-ãÝ ÌÅ2$ÛQ¥½” sµç´8[£<8…«Jƒ)…N¬sqܳÚó H¼€ObûÄD¨iŸU7D11T4в?s™+«Ï-:»d°CP-9•[}sÕ#¢uo©¢¾«ŠŠüÙ©Øo&|¢3?YÙò)Å ²âK?ë™ãÙ*b¢ß+ç?°Û&ÎÉf”˜‚õà`Úos3#yl¥‹æc\œßjOËG#'Ñ´œ*ô4Þc˜7Lð²»Ç m³µ¹±@¨-!Ö Húðþ½†&9==1fïv†ÇéŠò~Š©(eŒþÙÞötõor>W®Îw´¯SgÑ=ÉIK‹=¡ÖBÌspÀÁÿýŒM;ª ™¥»uc;ÓÕVÚ´J[ß\˜÷Ïk Š`zшÞä^òA’2°¡âÎ £ªr“~ ”àHÓë7G:TF &¥œõøªÿ˜ÕAá|p`À/>ý¡µu¨‰åˆºÕåCø“'ðAJ^q mê­2#Ít¶BùOÒ€ÀíáßÕžh*È­GüˆSIó׫dÑQ!$ãÿ…ÔúQ ZkºAMä7úsȃúU…6Fzcø~L\ÎD»§Á…3ÁKÃÁqùáí¢I “%êå- ö``œ™88ÆÛÖì~}GþZïüvô%&\·Fýosó°­à^ÑoÁå­ * ½Ww=OFÔ@¦/÷ &9å›âï CÄë€D¤KÇFúYÏæHSáFhL,jý'5²—îØQÅÅÂ@%ÔWe#ö¶µaÈ ¨¢þr{­_~TeøÓ1xÁk–$úV ]@¾Áô¹‘‘Ãã©‚sÖ¦=›ú[ô >:¶­ItSJª:ÅË—¤8‹_ß0}}ƒê²wÒŒñ2™1íǯӾššWØê ˆ„`ùêôû)ôÖV mBÃöGx–iE¿*«F²{\y¼f‘¼®šÝ*–ôÚà_–÷Â;„GrÔ„lÝÝpã¿°4úɃ÷úóî|ô|üä4eÔÑ>¬|ŒU~BX\LO½y¬¼ ·HxþâqˆèN«nŽßW‚d9âÐÌ<]û…MFK‹z¶ßóŒ…EëÔúêÍp>i“ûáH#7i“‡ö+uu™‘eÌ£¤0¼tƒÙê]¤;Ô ¿to‚0 æ-O4 ÙX ÚåròÖaaöïJûȤXY?C.âlÜÃér;×ý0ïë‚‹FDMKÇxFw·¿ñ¹Š{m{zÃRëÄÓûFѲ,œ›¿-\ãþ×Ò"á,W·Ÿ½%ÛÝ×ðÆ(å66êxøI¦ìîh0žÛö‘ìÛwûM¥Ð¶8 ›%´Êhñš+6'žš/±!óÐþ},Sv.L¤~‹`ljjp']ñ´‡«®+ Mæ3vÕ_ìxˆµ¹ˆŽ7Z¦ÌíùÝãÞKźd`“G?ÚÚ²L|áÊ’ðœ5ƒ?Äîßw(Àƒ¤bßΘÝdäKTíXm›h4º S¿¶ƒ…~Ÿ‚¹,G¥w§¹­/žÔ`”²®1–6Xƒ±­Æ*sºñ ÷íb䣨ü0V£/wA§­OvÞ˜Œ{ú¨J§í)÷wIÉN“·Á•™ÌÅ+2èèFoìü楨=°¤#ÀÌÆd¶?{ó´¬Õ*×V C@ØÍS¸¥Á¤l.ú[º_ÑÝÙ}?ø3ÇÅãæ —Ýiÿ{”ýGŠ'f¯OHQ$ñÜÒJ—ØÁ©×‰–XÛÁ2*‡vFhïÆWžž¸††•2¨ð ¶²@dghu´oXmq8ji~FHH±ÛüHˆü{òÑ–Xˆw·®¤=‘ÙïéQµ ,Þ‡JåôDa=ÃÍü»iФ¨çÇ€EÂKZ: ýãuÈ´x©°_}¤¡ù”–QX‹ˆ³,ó€“w@ÞÁ²" ‹éë3JË OM •ézBl×Õ… Ëøûèÿx/ûƒ%„€ú}u Eàmu.a©åœlâ ®žU÷†|Š(eXìY¶Γe0·²ÒÍiNäŸ)ª2^ÿ½5ƒNE% ó©ßà­¿°}®q^m-.9¹÷eÌg¬‡ßèøt Þ1¾*Ó]À}a!ðè_‰ªÎ·›ÓÑL[Õ”€{23é*‘¼¡}éPé Ñvcö*©Z–/*VÇÀâ2ñ`ÔâÀÖód fšE­†¦XYF¦¿c¾Qñ« ˆ@p°$< €ŽöÞ^%®)²/9¢ïÓ^¶HÌXY˜Ûeæ© PZïýt%4ásïÆç²ix\ñ›¬OýBS¥Ý@›>_R Ï3ÎH'‹ó{}kö©Ùà’1.RÀ¯ß£µÑñÏ_R=ÕÎøþÝ)…ÿ)tš¥Íá=PÕ2cuú`RžH•ŽkhóÑõIQš™õó©²Õr€Áú\Û?$äzó¨hqh¹¢7zcEÁu·9¾Â’ îƒ6<"žå¨uQàöv$8j(00¨ö @4otJ–~ uôK†Ùl6}bϼ>›ÌÎÌ„ ñ_“ש°ž9oܢǔ*·ž¡Ká±oé¦ô?Ýî×73§­ø¸ÞÖßO¸1ø2PRŹ&9/Ïô~ðZ¿Ä¸…×Éï+ ÂF_zaíòöv¶óKÎå׃ÿqo8ð(bÂ_Côž¦×´NV~æà]ƒ}E çäÞH$èyVÖɸ¸° "Ùi:@àO%(¤|Ü25³b ‡ú&ê×/¢ë?s”á„Å­æOŸBX¼°²Z…® à13¼,ùÚ 8 I¡»ÛZæXÑT‹?l£ä($×Hää£Ï¢Y ŠÉpÙ‘I÷SI´¶ ·ŒÔ|IKƒ·»r¡ì4d}Ÿ„ga^`ðSjÜZ¯E1±ô–Jê&Õæ´Ì¾5a–Y¶ˆKÈ-תm«ù¦ùnõ\ˆÑtx\¥£åŽÉ¿É‹æ±ÄëàQHסণ¶ @r@¥Î";äíüë¥Ã؇օwèd0>²ZŽ«ÙñÀüîÍ“r»—} ð:åü9û—ÊBéd®’ƒ“ß– E+¸Ì¾@¬>ÃVKå8:ÓSܬٞºóëÿ”¾º5‘{„]ðþúZ)åÅÂÕÙ##*ª)DW@È©\@V¾Xïíätn¥3dæd­.À3?ìçOChÝØD•7d¼¯E %SN~:¸4š»@%[ü´;?}/N­èŒBe7õ•þLØ£,`Æs€\HmoòXëè‡tÕ'ud ¶§øÀðçO>h™ckk*¯ZµººúH@‡_—•'%Ïm#䫤äðc#dKË÷ øo˜ü@$’b©sZ>-ª;ç†ðQpsãFÜj一”ð­;›—f?³çyµØÌupøYyc™ô–áÍÆ ˉÍn„Ø‚D ä ¾§Ø####L88!zoÐá¾ÔÁò:µíÕ…Õ§~XÀж-²í4é'ŠÖK93èÿÎèÉÁ•lÿ8r „Ù;™p&Þ ®m´5Þ=šò“j[ ¯_²ìÚõÖÄF¹ÙÐ}®c=Qñ› €\ï¿#(>)ôKu´ˆÛÛã«Ësl:ºúáÉ· Mø,­¸7WsYhÊ Z™rž@_Õ60 ;²ŒN^e¿*n=W)> êî.¸ËÿÕ³˜YeebèEÝâdÉ2'ŒÓvíƒ0<´®j‹BŠ×YY SKuº¢)\íwµh‘‘g³Œ$ˆEÅóÔ¿x2ÜM·µµìd †}â°„F| tšç-¶ÈßãpІžÌׯ¾=c%ÎÉ„\×a»seÂà ²HÙ.uo<ʬ°vO!«Zn\´+‡&ÿÂËéÍ›â$6a•î¼õhjQßÊJDû}ݸâ´„ZZÀô`“úü„7Ý>PÂ®ŠŽ!ºrètx±qSa6$,º¦Ç/JÎJDôcë[¨ö_¿°'ê1È”,-ß ?E tQRBõ¾»!@%ùæ§^ö;aÑxúÛyLŒC…AÇ;‚[9]ˆo^¼ ˜žyÚkŠÈÀ„»4SE©ù wˆù„fOÉ©’î ¥é®ÍHîŒmâ íÂÂØ°/® Ÿÿ+Òd)ñC–ßzg¢äOÖŽÅm¦lŸ>䉶ryš[¶‹G–ã¦õ¹œ¢âSðžíµ'Yùò±­kÃ%ÉOÄÃír¨'üÑG ¤^1n>¿R¢ŒfªgÒíæà@æ}I‰âsL¥—Êc¨Ã6(ÎΨþí_àaYÔ©^4Â4ºÊçv_ç¨ÙÌšôE)^ÖÛ»·+[Z6¢yPn1&ó> @„i¸*ÿ)ñÀá¹½aêú“m |}âõ!4]Ý}ÎßfGpG5L4Ñ’?©‡ÏT¡­žÎ8lo‹JÊ-‡ôa!vUÒíÙÎ#öT™õê‡g˲mæ—+#øà[u6ŸŠ0âhE6Ä’6s¥¯^IHéè¤ Êû–¾µJLr1ï¤ ùÚâqø¥[SõGJŠÚÉ®[ÙaÎ(“ÇÊñvrÖÎÖÔí3\i{{Óµ·+WUÞö ää« Ú;}ÿeÛ¢Ó h½Â°KRSUÙÈѾ¢S‚ôôCº¥î7Zh«‡5¿ï ²¿0+´ÀXÖ¢›³œâ?ŽE,ÒÛ9lðÕž‚Èu_<-.îå» â?’ÏHÜû vçêýÑ…“¢™›ßÁ{üù)ª¨¨Ùä1àO™m¥n´e+Að«= ZØ«$ Ð_àZ=…Ÿ—4AD¬èÜРU)M)? ó¾#h)ÙV®…K¼WòÃÎŽ°çÅk ÆûÓíž¶ÙÙrE#g'ŽžýyX!ÙW¯}ØZÒŽŽe½÷FyvQ’ܤ/¦ûYmk†'—°Êh,QÙ~ó2é¸vv♉cy]j,•êÿø–ãõ{Ž/wyVê)þþŠßÔc£½[µáº)(J2,y§çÜ2eæÑGKIùh(]PÝ _ÚléÉ`ºüûH9:¹T>ÕÓ·‹ÞpŽŽ©î%"}Ëh‚>ÍñܼcÒý|}½UD™ëßцLlß§³>½O”1w¤BD )©šZ=öo@25¶ÿL¡ˆû| Ú"Eóàïéìx÷–!f"4NÎW”_ÜxWüÞ'ò›4úŽ®üí®™n|<‰)do¥= L†ÛØ$žœž-:úmHLÈý <æ¿ü ]Ï›ŠÙºüèÇBF-·±@v(JV€1Ñt€j®{+‰PðƒùÆdÃñÝñ‚$Z///c“ ‹™ÊJ6Æ7_Ñ¡»<„„`¡ÇÆÙÌÕ¶ —_Ó§••1‹G©ýpZ8ú‰æ¦Qk­Yâãù¾5©¨Æn6Ø™ú›8ptÙŽÃ@)‹¦vå`ÙŸ¯,¿Ð"4#ƒ-…'z&x¤°úJH^Þ^¯F:::|®×n…5°Am@‘•™õOX€œÙ¦¢¿Í̦Üfð–mœžDGc¨køjV™. Þ=‚yÓà$e0ršo¯ y4BîóöîBbD² iII˜ô¡ ‚Ú£nÊù½&³¥õõIÚ(¡`~kPøsµ6VÕ»a¢ä‰ÉÉ̓ے”ȵµzÙ_5`˜>=dú„T¡A^¤4::ú:†0} ob# GêÙLrîùZWìžìž%Îz@pušþ~ÂûÿÅÚ[FÕ±µÛºÄq‡à×àÜÝÝ!¸»%w‚{ðàîî!¸»»;Ü1×þöþö9g_ùq[[­¥-Bæ¬ã}{ú¨QUQÆäèë#©ä7ëìðXeˆááËëÉÖ²ššþ͹SÅÖ'7§fKÜë=ì ŸdɻֺCÚ×O!/-µßQÚéXµ9¹^öÎ2Ÿ.¡§§o[¨·—SW§l|î‹"Y9¿…üèéñÞÈ›Ž‚¢ýáö\ÏÐÐôËê ]« ©)EQÑ€ ##¿……EØàË60Še†ý¨»ãïÈÈÈfªLÑJtèZ“RbcßXZZVY-ªç_¯+±Z-|9^jkp4WUS[)7ˆ=â4Îá|ÿêÕ«¡4nÜîîî Ï¢à‹c¥nM[ü Ù@ *å¶¡!x X½Ej•²òòÄ!ù*¥Ú‡ÁØ<=ÜR†@îs1寬üvg19Âv=¥\·ý~¦eßûñÃ燷 ä]ç½Û ;dgd®¤+Ü«wsíüé0r(Šz‚I±EEü¨…*6çÆXgçz––D «yé=À~P“’f~ös}ûúíÛŽÑQ$MÚ÷`,=-u¼1LFR¾ùð-/ïÓT©N„R¡ò ¨‡‡dœàÖç'ÜJãá0:/ Àp ÙØÐƒ¿‚‚b2jkpÜGFC{…ð£ªê9ׯØj–ÐëæE<ŽpžtªáàÝím†õr Ô7ȇˆ„+Þ=ºLf‹EŸ´¿#\)m}êÃe¥w>Ò”La“sz&ô~øîýtûîå÷>;‚÷ r­R}qpAp}æp2+ 55¼óñ’•m®T²?©DœîýÕ¡³so0½ÛÅ×^oÐú‚òòòÅbÐD¾ähÌš UªczÈüèA(™ºzzù÷WT7©CCDLL}Âawa–Ë^~B‚Ù\™]këëØPN`ª9h¬ÍÍ}~ü0ªMçrí l‘|©AÈ·ˆo855Uyf/¶AhP÷šø¾ššZsÍbð¾’âx…üËïß,bgçæ*>ɤÑ÷`á2ûŸ®ùý=î-äPÓÓ#Šýxp´ØX}“³i~:±y­b=þÁÄ„âì!h ,ƒÜÜ\pÀ‡Euu À‹•eee˜gËô^1±²–^»]®îí `Ò¨OüŽà˜¼vl¨·LGv5=¸öËuY&ÊæÙ¹T£°È–Gø»!.þ6¸3Gbôô¸µ]T¬ß/- ñ-ž>'×ɧÖÈÝYidùù_ÕZZXhkôLM)_¹O—hQ)Å%$İúy8ælllL×hh ‰[.ÕÙ¾²ßúfµÔCBB‚ŽÁ÷ù—@¢x3!€áîPl&(¨’’’“ëkpâ=áø!MM\3óóÓ „ùùùJ= :000±¿¾%raÔÙmÂz=^ª¨ª«w #*ûdeeiăF!òÜòqÊ"ƒ,‹[»'p8ÒÆ¬uiAÇv÷^/=æzý®´gª8šÁ.›„4$°#!) X“¸ScA¢811±ak€Ÿ_ûÌŒªScC {OOOl .6¶šisíþþ~…B®îõÑ"›Ç }hh(TÌõë6¸ÈŠ£ÐXº¡íËË„_n#«êí·×FR9ˆß·oŸ†æµ„†…¡`cS„|)‰çu@'Ÿ°ð[§Ã9¿ CɤÏ0GGGv®’FÊ‹ ã1¨¨¨ô–sUo-³Øz“Óõ,Ñy.m³s!¸@ä÷îî.04ôõ·i·3æ÷ØB戣~”ipR<÷ ¨ééq¨ÂÙc¾yzã¹pX,L Sº“”:PmIÌé+í?bëlôˆâè_¼OåÖN4ì𮩩 ;(!!2OíúìŒßÅ…-ÛÝŸÝ~K÷l£¿ÚÊïVk‚ÌÌLd ¿Ûómu::ºÒ)#lÕ:¢­Ñt$ x¾~~ý^#iÜ!¾!…¼• J!Oº;C 2--üâ”Òä>C¿÷Ååå~“…šöÖH*•¹ ^ÇkCCþ£ëËËî±,\’!õ~{Þ%A¥í:®I“gÑÇ1WÙsדq^¢¾(ÓÌÏôrÊáq¼ß8Oû@w1'%‹DBÌËŸ‘p{+T¶9(Ãô)P5OZ‡Ád›pÆy9U¯ÖZ„r3"²œÂrùXNNŽE»ÏItp– :::¹YY$„PóµÖ„•eeº`¢†CbcbúŽ ¯®­éCn¸uá"X?u±:_qÙA8ZU]­&))6˜›“Ã¥ôÏ¡Hz•E ÀO×ÍÍmhh(ôp©99Œ€;©¾¾¾_ŸÓõìãþB=Óøô´Éùö¨ 8ŽÒn­ÅãÒÍÓÈ]¹“*:  å¦J´8·ŽŽFÎÎÏ=Þ·õôøW›M_ÌF/6¹V̘gšq‡.]¬ zN%ƒðYY[kÂÇÇGMAäy5kbq±3VqÏûp" ¬©ù lÛ$ÆeÝ my?†…sg[Zs‰[á©´§7N¨Ä…d6geG9þGU1?@ΞÍ_ñTó+줧qå,+whLGÏÖ9¥DŒ¼XÐ7­†‹P5;v6^Ç»`¼º´bµó÷Þ¼I@Ï„DÕËîZPR¹Ýã€{ö[Öd ¢¢š=ܺh¯"+¨ ,(b' }ýò…FÕW¦ÏŸ kjjf+K=möK[š›¹!ƒ(?æ+èY ‹&`6,–[<+.ƒCBf›\ϱ"z „……+62rrH_µ¹piç( 2*/‰z>?=V›˜T‚.eèÁ2\ïP¹{üÝ7<f¹Ô¤VÐõè,H<Õâé~°cp͸¨IFµdËPç——FPfžÚƒmñ`gbf6:œ«6†dNMéh¹ÐÌmÉl|UxÀãá÷š«®ɼ•  /uKð½ÜésIACO‰Në>~b\feuµÑóÃ9’Ah¹ëùV9è¡Á9YÙ6õZ«aÕu7%Ó>×6Õs ,Šs†ìàmŸÏi…*¥Œööö[ÛÛ×½Mœ¥Vד˸÷Õé âX0âXQwƒýúÛ#Üúç[®L¸ÉFC]†/p9ÐæëNu0±KvN £òqÇ~’JÌ¢¨º¹qHˆ‹ëz^ D+¾SýϽu6^FbU¿¼~Wl%Ы7:ÑàÒëBÁ!!™DEE<‚q:Ø"¤öõ+¹ûÙŒ½““1•JIÌ"«A¼²¢b—t [û\­5†õíÙ¦ÅJÛwjbb!AÁ²ï¯ÞU·>k×h 1Óàâãkíš•ØÇe±À2(jB=”'ÞJˆQ¬Ýœäy³Z~ö±¬¤„v±‘ŒÕ¯_@{uSr?…†¤Nï'. ))#€&ÆNNNð_ŠG8Ï&0¨»ƒCD4ö¼»Ð@Tl÷¬­4~®œ¼G/¿µ.‚1ú£X]Çï\ƒ™®.ßǧûcjfæXÈõ‰ ÀÚ]ÏÉÆÇÇ ø3"zjkY÷§Š“|L÷•Þo'§½ enõb$(ð …Çe ÅçõJÁ@GocÐQòpÌ(¡MóÇ;¡—‡ìïsáƒÏn/•X˜L§ïñ¤Ïâõ ]c2*W&'_Þs96¡±‘P>ЗƒóQ^“úúgüejfE²›âJW±Ì½¾QÅÅ4àÔâ½€°›âòzQ7âcaõAìýš”ŒŒ±g P“²ÄÄÈèrΉªDENjPæõËÇ}ec€>i€z° ,†ºCÞC†üÍ›7 øøødÈÐ3~p³µË^ƒŸ?V•–FœH‚Ëãá’ã©ZN«ÕÐÄ"x6U¬ép`ðc[œq@QÿÏC¼ø~.)\OAA¡ÆóÞ ˆÐÐGT*rrÝÐX•}llìrHeâñ`Óhõj¶À,VÑJ±v# Ÿz€t|þY½¬-§µÝ †Žª0û…^6:¹ž`A|ÂÏáŒm,nMãÞFeå}ÒpšgB*÷} z äNm3!kÁìz³pšbqöûÕÓ§ÌLbPL¤¥kÈÁû@Q÷ª•5K3“âŒŠšº–––Ò\]\úx>¾ÇĬˆ"¡|ôâðbó±ISK+Q•Ú˜‹ b±Þ>€ÁÛÛ{km­xæ ?áˆÓÁÌ©zJ±F­×!œ%ȶ¯d÷Ï3Áw¹{ìF€î|èx÷Wvñ_ã4µ.¢ôïqZ-+£g1Ÿ¢îY?!ôì"àvû¨a=’Ânq´POÍÄmjf6ÐÅÔc¦y¬„ÀŽ„eîCbÄí¯ø¨‰ ý:öêP*ü6ø´ùGgÙWN Üõ.¥å/µiöω ͇Ó^©P¼ú7%%¼ú÷W…;SïŸï—©¹<Þr:»éN‹ììTÉ;üöEæß蛘@—““«˜+¥ACA!ºç˜¨ªb~rØÉÔÂBÓ´èAìTá~EKKK£,`ë0È›D  ²YíxÚBr÷ºs|-”¾gåø‰6>dµ3` e`` $u1¸œèj¶x`×Z-v€Œ1·®®®¾6–%û„‰‡§™·Ý=3ƒ¾¦ËÎÞþôdµ“cT¿€²2•rÿ4«`›ÏsÂÞÄÐP¨µ¨´tˆ +GG´Ö u¶7 ylÏ6Ä.ö§‘kWÜ›©—RØ@ ¸ÃçßÕÿÊÈ3mUõê›èÇ—PII•°íµòÿ2ÈÃø¤¤§p` yTž›Y,y ÄŽes9±çr­À\‚ágntý7àgA——")+k|~aa%³ù}Ï@€øW3³Š‰xeì<ÐÕó5–Z z€ßõ¤¥¥®ç!J'à÷~¯°4aìy¶ñø[ÊôsÄú(™Ñ1M‡eLìÛ€ÆAJlOvã–)ö«rï+6¶ÄU6F¸(µD"J*ÆŸo3‰sr\—[yCK×»`&·[ŽKzu¶©8:GLo7,©SC%'|€Ó¬—§ÎÑõ³N¦…Æ_Å˧¬‘Öw:ç§ÞÞ»<k]0WÀ ûÁbȶZ¸!¬lÃÉù3>~r¼|ÿ·wsëø;†ä_ò(Fz½o¹äiu=7Úý›ƒ„nàj¢ăr äÒq%ß=ÅÈ®ÞçÒÚž?3‡)‚ù~Ô__+|ü”'†/ƒl—êB|ç¼,ô0ßر³La çps¢'äârðÜêýÜÒñçÏIçsáÀ¨’VKøÂ•õòû|r ½lÚkBÇ[޳AÑ_½…üü£CxÏŽP>¾T?hz—’oˆ^Þ™‚b·®þ ½Í ág³Ï¦ãšc““Æ‹">>˜½6‡Ã¦§c9 >@£Þ»PÍ‚pöu®Š0õD±F<ºWgš}鯀ƒ»?Øž«·ÿôöíÛ*•pËùšMK"Í&—¨rƒ^é ?ŽçJef”ï½3Û;sÜ`9õìÇv¼åÉœŽš–WP€A@05ŠÅÀ¿Ç&.¤u$~ ÚGQP/ÛÃî OûßkZg¶˜;Fã˽ -Íßh4¼º¦j`ÜÜ2?¢¾&rgcgGÁÄì©2Çb·û•‘‘š]8ù¨WSDˆ¢w— ž‹PªÝü“Ã_^>þ>²ÁßçFy‡hwwoÞÊÚšD¹é¸1E£³N÷À´õ1E 'kƒG`…(òë•Ã]LÈ ¾~ý˜žîIÃÚÚÚj¹Ej8‰yw²pz9üÇp¥RÔ¯|Š4ã×|Èÿü‡„!LIÎÍ}¾M¸²…ÙÖ];ö÷/–@|NÿñOϪª.ÜÏ|ÈO¦7'«ð„<\"Ï,ddþRÉ,@¨Üñؾ²w>Zè?µôäBCþ×çN’À’`dÈ’Ÿ\#uN2C!E$ƒ.Ë•ÒR.%øO‹@¡©*²èóáwTûwLÎGšEEEáádìì·ÖÞÏw—æâ1ä/š´êcƉÅÿë3?À’üóÚ<‚Ú™šá€ûët’h%Ã…:Ä™ùd…†f#—Åb¦íætÝÖÎ.S»Ùí`¦|½sùòp>œºÇL‹~´ŒÏhÈI(~Q¨òäèš ÈïßëH§Ô…¥¥ÑzÞ%Tx5“\î«Äq¤}€6Ì5¼_Nåt&ccc›˜­µ^6á‘~ÒùÏ#ÛüŽìlMˆøþú¾Ü|££Sçïo9fLš=ã¥ÿh<ð9 R ù¶ÞŽBùÁsãÔ¡ši”Žð±¹Å©¬tbËÞK˜4êýÛϘII~&‹}J¬”(Qq÷ßöoÔÀbˆ £ÛÝ&?iâàÌíìÄ€lûÖ˜ª—0/G ÝX¡b9ŠßÏL6[TA^A@LŽ„ŠŠï'»Þׯ &éɽ„!Ø?PÇ'&*¡érÂ3?Ÿíêôá¯å‘0Ô?xI§5a@¬©‘²u"àÿñVŸ9 ý‰%‹õ’¤¬läÃDZ€ÈëööÒÄÏùQrŠÊ«~ ýÑ£ZõvFÒi\bü>¤íɬ‰\n1m¥00b±ÿü’'å6›¦å›.á\Œ.„ÇŽÊ÷õ+ñãýtGG想÷H`àGåbXÃ+ ´8š”õÚ#ÄÄDØžP~Ög$c8‰•…úí…VkQ33ÌXÊ]CEXƒõ¿XXèB ®°1MÔ¡^§"ÊÅ”Êâ}QÐiã­Þ–’’ ¿í\ooè6å°Ä>’‘¡¨¨ðjjzb©ôÕœüÅ÷ çó׎ðÕ&ºÈâ£iû¿UJß à*Çr„G†I§rlî’’æØ® ¿~Oûz}m(•S&j +&Ãr^XU}àëlbŽÄûþËyDÏö £^v· D2²IvzLÌzþƒYû7ÜÍ÷@Ù¼”úõ§Â ¸§ì6ú¨45…3³²b©\[z&ò#cI·çªmššŽÖv]ßYÏÇPçGä䄆ããþÉfèÙßt¯y¯0“.·r¹Gj2[±^¤ãTTÄH­>!òs†¯Bk“Ŀݮýárš´©É‡\YÉÝ]á-¢_*Fvø'H+t¨0²²f[-×ÕÝTX$6Oؾ†ñÈÿPQÃ`,yÏE¸ä~I™†;ZázÎn6A>˜+õ£¬Üôga­í³:ÈC{ìÌf1›¥­Âº&µiéÞKà Ž:*l›˜44RCà ¬¬†[CG‚‚]k›¾ñ*ÈÑŸŽ Öºš°t--}Á™ ‡lº ó=šš›3Ú;‡†R2™þåáç׿Yh¡ú„È„MzÆ'.ÎaeõÂbÑí{R–éX&¦ù|¶ù´0:åG¯×¶þ5N2ò‰Üóq™Bpbø"}ìêÕùò®*ÈÍñ?Ž\òiíKEû©VýFz¼×ø•{¯Ñz´è.ÝìÛ²k€ËZÒsuØiã° Ùÿ3ü’3mÞ½ÛÛ·FXÿ BCÃævûÔìþ<²Öí‰Eÿ«~¢üõªµ ^Ì»—¯ÒW<^8_ïÇÐjùfh0¥Ñ aþ#‘8 \ÇŠ5H@« ée¿Õ7ˆ®óâ~ÉÛJŸC¸¤@ŽŽÇíB*Ž‚ðã»BžSŽÅl¦«[cy¹X“GâÅ0UèÒþX…­-ÅPŠë·¿9!++ºi0ö ’abú«ªb1šÇ!Dö®zƃ¢w*‚SWOª²ÒЧÕÂÑ·´¤Ö^†[Î1ó »ßÁ$Ñ &¦}ØëœÌ ä¬3{!0Ÿd–ŒÏ·Î51¥³„'±X†~¦qKuÑ5}Ý$Œ……õ§ÅÓ} †â|8ý»Z@]]‡bIŠon®—!Ù'ó¬Òt?»ÛþŒŒ˜ú% É >¾ÕŽÄŸF.'+/NOOEãøú´¼¼¬tÒ9˜Åà[•f1mO(ØŸ'ý(«Š‘«ÈnÉfõ²Cµ¬í‡ùtÇîT1“±CoÛÊ|ú|KOwHûÅac”FíÖö@QlwHD…íºZÅmÔH*îÇÃ)0É´4k‚TÏøª*IPv Wùk­Â~+ægO ¼ÁØ5[gK;Q¤†h²M¤˜//¾'êS&.¼¼»9øñê°q Æò}PØ/Ïû;xÂ% ‰Ä‰±×m22&;c:ž)vÊqd§§~!TC…*~¢2Óü**áå§—Lgä–#äè8\^š¡}}ú%ø2·gý?·njn’k°ÄR*¡æ„Ÿ©9Ç­Nv Ó¥ w[“+½¡)~ð¦´ø› Ãd<Ôw=q&Ýè4HÏÊŠÞY»0/¶PwÚê³su˜÷ÕŒRÔ¾ :•JZGç:Y\£ñhM÷Lx‹±SKÛÞdÚB}%½ O:†îÙÆ#‡C˜çýSH¢Ú°æmÓ-3ó+Ât]..+ ®¾¾Š†Á33Ÿ{¦jòÙþßedÐaq8à‚ò³˜ûœGc./F>#¨wQLÀ¨?ž[ >/ËêÎŒ¡·…Pw0iv8t+ˆãݽŸ°èJ?Œ¤{16ÆìéQZFh²ø–o*%&íx«*+û‘÷¹)àÏŸ÷’)_‡Ëž–í^«–­@I»¹–›Ëx²«÷ÈÊÞÞèXV-TYcÇXù›bõI>¹ôÊ_ )©te³¶V ŸŒSÈ£RЋ5ÉåøÙa3¯Ó¸CL.Íd®êƒËm1ŒGª2” 9~&‚z'ecmžÎD%=ŽèáI¸zÄ#7$É>]°¾j ‡ÛÕõQ_WÖ?? ÔLh¢šÔéñ†ª¼<8n\™QNÉä©X€œ¢`DêÀˆTƒÎ/3{Ÿ'½˜! Š5æ¿Ôœ¼¹ÉLJl§cfööéIO³y(_¡&(ÃPìI%®¸(ô·lFÝÃ÷Z5•®î\)æâö¥Çßj•)å—8p!o¨µÌDžŸxëˆV„wuwÇ·µ}õ :ëóλ%*G.¾î›2LÇŸ žÒôã¢|µ[$;¦Y_…yxìäAV¢g* ªw•Ê¡\ ‰Ñ{¼cbãLÏÓ¬×%´îþöb˜´ùëXãõqŸ!†jÃgg•Ñœ\ã?­ÏdÄÄúìvŸ ”•iØÀÌ|ûF<Ùî`†Pž|µ‡£Y`u5 ú„°†F=íô€H†l™^'v5»ðhÙùÎÅ…CN8):W&ýo«ìT)ïÚk­½éRßh ·k«\•ë7|7M×…>ìö[ýý¦àHÊ+3ͱ‡“§å ^¼Ð“L©‹ßÙy+¹Ûñ'#îg©Ã+Ùч)çÛÞrwE„î'`Yk¡®ŽšÅ55!ï3‰9ZÄ yoÊFØ,“ÝV?sB6ô=j½ÝfԦ౑¡!Èv¤ÊElA@R³Dj ºYvöÄ[Õ+m×ÙCñç¿£ÌmÜmK‹Šæ8;Ø:æ}Öxaÿƒ?ceªø/A_Z­ë¹ÿÙfÐz ‹$]+«ßò£ÑüOœàŒ zêdÁpÕXáó_îÝ2ÕJ"/¡øµžžÃm(Üܼ60VŽ.7àüSnðª¼HY±ížtM[Ûùô†Œþæî®¡ÊBí ‡ÃïÒªW”ËMb&“”2,V\É,Ž·—*ï(U”GŠÒaA•YÎçX,rÄH§†æ„ŸO22V°9ñ€KaC lñ"²°LÖ51 ®¯Ï˜8}MúÉ_g»4‘åÜDŽ‹-w~ÖV fÉÊL¹µæŸ…ª€¿*£•¦ðDjÇÏ+‡õn—Æeæñh‡s“ƒÑóá^aŇê±T=OYcÓ*£?ŸÚ‡"u]º>æÍÓïFu8^J àNÒ××ÿ°¤= ‹äÝ_¦7,®»Þóü§ÁQ+ŸæMyhEˆLW-ƒùª;ÅbªL’Lü›¨\ÜõÁœOÖ‰Nû£ÝÑ‚gSó1äT4Þ!”²ù%Áô»M”h²C– µJ Åæbšï8Ñp“»Æ²x%ð7E>­¬ÚFs»—@ÞW ¼ùäµݨí^U¸ øÖ-† Íæž7c½ YéÛÛå.öMÚ³ÅRc9/ܧKEþ4ß›•h&Ææâ‚ò×7oô'“*¨´œ§¯^®ÁÀÃó è• Ç«ïï S,Ñü ¼7(Q„¿F^)e8öÇ»ÒÓA:-lî†æºè[>taÂèAŒàQTÒvÛÒñ9YV¶Ó‹M窀ÛðÝ„Q³óñEA¸dÓ1~¾6]¾® 17—Hb¦D¼?¥=µ)??%Ü{½é*‡ƒ™oFƒJN‘O“…{ÕˆÎ×¶f•”Ÿ@ñÐÒ¶Ô5êl'Ã{Ýd°„‡Óì,ÔgüäBí,m•Ít¯|¹­=A(„«Îƒýµ„öùÖe¶v³¸|ïÀÔÓã“drMzd¤‘+OðêÖpï̼õ/ûmÿ"-Î_mMD-îר@žVú¢’}Z³…Ã*fæX2TJåÉí¹ø ÚÚžm ½ª²ÖI¯6'_”°ÇƒK FàÄéþ{a!oë³WRžŒÎXVÌzã24¤?>¿B!œ¸ ÷QQ—ßù‘: æ«ò Ñ™[z™®! ³»›8”fÒÜœ8Õ’ ŠQ<ž¶#Ý1šC¼D\b°kü €fÓM¤Ýf°¾ÁxÌÓ#Í×?¿* ÅÿÁ_Ç;õúMT„ ½———VX\Ü[Åö¿òþ@-©©Íò€Ó~Ý‹£á~DÏÀ ;EKMÓ¨¨S±µ´Ä—ÂÃͬc5 |O¤w8o6.‘©q{Ð’2Z£6 ”€B.ẅ(9 uÂ¥Úd”î(b}Z@ø;úMß‘Šï”;îËÆòèÉʺ½i¤ÿ9ˆæÊ¤;8ZP¸guEw$Ÿž¹³ë5_bß&ìÑ‚k08Ø´4¾×¯}³ ýê뉀ý>Pžý4èëË ºö{H ‹”jS’ÑÀï^å¼èOÖL3N#)‰5*¢éÜ!Û2Ìv×{Ë?›)"pr*HNšÙž\v솄K·Ò]𡃚®©ÉU 2ÁPO˜ÉlÓ-È9Fg#€¢8”Ãá [ð¥¤X¬Ÿ–­Îÿdì‡ânwÌÖ°±W×Î+‘ËhœŸÔù5Þ;®­ý4*z mg±dÄ(ŽÌÛ£ëØ<œDD EjL߉ã‹Éʼ©¥?;…1~z Yh¼µZÄaòtƒ¼_šÊ‘šy)(Dbk­;àX<“øµ|±:è™ü¢œ÷ ”‘@ÉäJÙ ÑÆWº”ãk5²üä/‘'G¯2¯ÅCC{¥\¼÷É1…ëòɯ9Yꢦm¼¥ehj*ÅáüôûOf˜_ôo.Ÿ7²?˜-5Å©[‹Š‰™Ü;N•\æŠFñK¦ÌRÜcÈÐj4r8Zˆ4oØÚ?´Z>ê,R ¸9¬}º8,¼+´jqs#3YX_i7MüâOyJ³;k–Aï[} ‡±iiý»ïf¯)ã˜Ü]X­MpÕb4u€ö¼§ÖpJ-ÿ·ÙÝ€LæˆÿpnX(ôKk¤Ó+ĵ?]O¨¯sPææ$Ô4F`¥Ö|ë×¾nò†‚ó‚T@ÃD¸|ÎĹøêÑ¢JÏ"‚β¥ýÀüµ¸¨èf_n]ÃÝú1¡pŽ8é.˜  ]°S/s!¶†UO×Qý`a0ì2/°FHð”–¶ÄfÊ}å·/ŠXhhÔŸ¯åŽÓú´÷-5Õ´eù©ÃÀbÖ.íp>`¬ÅóÑ£ÕÓ(&2r°»Û¦ÉèÚ'WXÂ-œjS…øeogÅþWP¯s”l`³~ýŤ>Yéð{⃥º ƒ9?òǸ””+=Ì(€ ™™Ú 5rs5Å×V˜QfHÌÃá@jseœDD’ê•Õ(7l· ƒñÆÄ„ÛÏî4žÅÿ´Ìí5 Äë`ùXXÙpÒdÛÒR(´üÃò±Žgô˜Õégeäj+šÎ¡¢ÜXÒeþ Y›‹À.Wz íùZJWŠÝªêUª}ÀH ôõ#kKeÉØlé€â.·È%$M ]ÃÜž»,,¼œi]N‰Ðÿ­ÓŠŠˆˆyq´(itlßQ{zd°ÑÇ;6M×5U,ãØòËn¢•Þí‰+mÙëÜp4­ð³…jìl¥%Èóq Uf´z:gª!™à§UÑ5T|CUøŒÎX™žR5)YÔëâ«w,&#)foÏ BZmÞ  ¡[êfdÔ_²´—Ö$µÚÁá°gÚÜŒ `Znð¾éWKg)/m ­&ôÖéúÌK dOêBßÀqÕ9Ѥ@ZÎ@Ø9VGig-ôG§ðÑ‚ùìP ð$ᇠtò££õî‘o£Ðð>…æPï´IˆVÃØú+¡‚ä„ßÛ—ýç^ˆÊÕZqëMxQ2}’’5ÛÓÀ"ý˜}v¼ÄÆ©ó‹ßoM2} 7™lM¨þÃF%«õ_hèÞq&È&x×+ê4wÿTás8Y| I*þûÚF)"Y2yKütÍ­HuõK¡²cvxL)@¦äÞ:[|P£?&l?¾'Lïš=S¾Ž |t¢D‹àÝ;ûƒÃa –„‰S_Í\ÄÎR{yäÄd\ùß‘f©Ò‰>?²TëÏÐ XË«bÜkh@€É¥r:<3Zjê|ýŽ.ö³ zDD\׻ψHé°C˜ÛÖQIIíÿfkG#BÞÿ P“'’úÑ"£â/4{|"diÊbÆÆ?C€&‘³öÝÜ\“”,Çž :,(Õº??..¨{Â-GOV-aB°ø"ù©yxÚrØ>=¼bdª¤g)¹;š¹ *ŽYà6'Ì` Æ #“îû­‘C¾(â7Jcy˜´m““„¼­ìk§7$kÁew ݫӄï·GyWú£Uvv¾ÊµzÉ!{nÌVº(—z5/ÎÔÁ2™Ìý^|óT"|õÐ3~(\­N£ ”ßÜú­^e| ÔT ðG(Ô·²"‡Í”éêÍ+ózÄNIU(Ñd艨Õoû¶eæJ´Ñúü21_cMH戾rhT|ˆC©H>Òâ™ÕM]‡|Z³á⤳æ+77> ê³õˆâ.If'rþ–$ dVž#'}ΧuüÈwù[D?µm öÓló=,4úí>Ú¥t¯‰è¸½ðýàÚÁDÚo qÿŒì§Ô72ÜŸbLb-Uú "*(ØÅh4ÀS¢é 'ðê%Ãf&½‚—/;ؽŸÞW{Äj‘´_ùÕè¤EÄõ@ʨ&tp(µ»ÜZoÈ$è{œeñO¯¤6ŽŽçÙîìîê[h ¡ êDFEu‡ãÇ«–¯}TWO %X IçWaaËrðŒñ"5„­á} Ç$Ð;³öøÆÆÌ³ Ž¿g¬Îcµ›D 38{ÝãAÂË÷WºæóÙmÃøTÐÀê±™÷èøÕ& ]¿@¨. ÈÇ|­ŽáíÙz ¥’/»½ÅîTq9<>#ãz/n<ºÒF0hX7¯==µÔkŠ~ÄÆ¢àsLäÉçøp*|¡U)s¿ÆØ攼ÜËQ«¯H¯ûy‰5W£ †›ÃÙŠÜ/ük zˆø Ò˜©Ø&&âN—ÝÉ1ˆ/OöAÚÁÄô7Óòð@ª×l/7¨…´ßÌÌGørÃ…ºp3ç`'–”áQ^  Uóü¬‡áË}”‹ÃÆï%Z¸åÆÃP Y¸äè°´Ú€^E"–øUTàÜÝí…Ã-ªÍrrÂ?md‚3•ˆoI5ÿl£kI³§ðnvYÐ. $xÉÔ½f÷Q,ΚW€wÑ‹ë>lT€8ÊbÚÒ’3ä  |È’ºIQqìe¦Œ_@«áZW³f#æH_”e"GuÈM‹GÏJûH“Gb_¹Zvx¦ÕÕ Ž{Š‘¹užoÙSëxù€Ù,7Sâ=}¼‡,PÏ”¦°3)™–ª&A^c|R×=’©ÿÍÉAßÏánjXÒ³â¼=ˆ¦cy{²ÐÅŠkpkxû·\uô'瞞ܠ‰ò›ß!´¯ùÁ1Æ›ÙzI¯Æò\¯7|µÊRCfÍŒ”–6q±±ôd;=þŸuKá+:i[X?Ü‘2Ã~ézÎ6=»]Þqè`A–œ)®HâÕ*ºÒhµº~)òݨÛÚöƒ†<ÑsHH,P¢’ c¬DË3‡­^döÍ!F çüüú ŸóѲ„«$$à žÔÁ÷8ÆW™:zÝ·NØNŒüx'F³ ø/$NÍV :9å:/aqsÛ¾®Ž±ãx¸[÷Ùù›ƒœÆûþœ¶Øÿ”\º 8éMFˆJt"VvÆÒsÂÏJÑaß }:Úœ)ר«ËË2“‘ç´«÷Ï;>›·N[hº…,Æ@ÖÁÂñq1Š)‡€.ô6èêÊúkcväÅÔÒ»=rø%2!Ù¬0ß]1,5¥ÅgÐÄ&‹D ¸zˆß±¹;¨?Uù/€r¨ªt…ä—FÆÅõc|š­Ú¥„® 8 '.š#N|xåx^ãê>gÈ@,ÜÑ®›+Å¿/Õ¡}ßÙß1UF@ß+Æ·׋6ó!8Z‹§W‘ª­OLŒCJÊ£±ä;[¿G’Îk h©ä·ø¤"ŒŒXŒ†T¬Ö<['«§JÚ{¢fƒ£t1—û£ ¼µµ3“(ÕîÚM¥¤¤>xtpˆ‹%Ž`¡2#0´v¸,*«Z REªcñˆø8¢øbÈ1Ú +ÅÓrw RA[7 5çZÌf‚ª:^¤Ît{³½²€‰ŒÜ¤2(\Zw †ß,(7·îçUóßq¦ò2UÑtžaЙ é8,yÆ–•½‡¬ŠÖ²v··ûT…ˆã—~qå}¸ËK/‚FðlÏ‘@r½¤L$‚ÕÓ×ÿèahÈìoUþwòÀ³oü`®5 ×ÔúúØðð†€Þp÷ù‡ ›IJšÑ[kËägmÌ$³î²±Y“‘}ï è}Ÿ€v˜m·?…ÆbÁÖyºþ]±X=˜Á€ceE—– QQÖÎì`u£þßKⲈJXÀÈÕ*{¢' ›Ë*õ7Å߉ǢV¿^µÀ¸œú³+–*"r [©} à…²²0ˆ>JÔhOÂùùØEš®ÁRÉ#ú¦ëÓ:÷Áhkv³w—yàãB¾}«G§+¹ý%É­h}¢¡‰®±Ü×î¾=‚ÐòÀuæYË9 ð Ù6ò!'|óÚ·\÷û»é¿ñb ã¡ðï|Øù4L•·ð؃Dzæ%ð7 ›Üb%GÓÌÇÆÆÖVÚËõøy ‘¼û!K  cPÅ­€Q.«eE‹0¥ÜzÔÌÊ‘ˆ00÷¥ÂïRvâs…Íú$£ÍàTWkÍkÔz¤¯ÞøÁp}8ÙÚéüZWЗ4î< ÛUj ‹t--?jcmúª$‚0Y^.6”dÔÙö}Xè4îÝ¿“Lw,5 ð ÈEp@48DoϺw–ša^½U•mmÁ2¾ã®  äÑæƒà% ¶z×ó}¸e26¶àX*™ÕU[4 ìJ“yïí©ŠKeÈÊfõ +óäÊ÷Þš¦÷T¾}õƒñ`‰;˜ß¯+èûí*È@1CB +»€7°?ï¼³ÕÏ ®w ð•Ër’Íà·­±Â§ ¾ô‘b‡%‘å %lMˆ•¨ðzôá÷çDÔk>Ó&ïõU`{€Þû††:fêö ŽqÃ+XD ÂÈûá¼ç×åžÁ¸Y…üŸ ¥Ññÿ-½¼iöMû¿Y¬+æÏóкµî€®nO×5épÞÛÿ$š+H¢ÆÂUÑÛ’Ä…¢#uìÉ™jÎpϤ#<ÆTÇ«ëɇà4îi==½@€Ž :Ÿ…„{ÊMÇÙŽš$Á(cñ.ƒ¼Ò5úÅOP¸‡ÁãÆ ðlÙ*ïÚE»Ä\9“ÂH¦Å’Gß/] v™ß1a›@fxx쬳!JPȳBCEèÿy„n)VPX_Æ‹€ÍýŠG!ïèEX"SãúùR×fÀïßÓªªÔº»òœw×Ö´ ÆehUlvÿ hj=²;Q#×k†k §ù:Y®jÚ;<Ö0vsðXüR½ Y*¹…&šÆœñ£~búâ‰9‘óÏ5 ó¬…¯Þ~~ÿ^¥…_Vö£²2ÕÉibÉßάR­¶v½ÎƒN¿‡Ë~*0rÃÃé”Jâ û78[S;RüýËx»ù^åêøÚäbç „u)®pL®¿Ât:d n:à@ —ÐïÔDQc:ÀDiÖ\í]$2]‹JK ˆ/ÖìÚes%'ZE€{ï¶²¶&…†Iw$Ȩcê•D¯‡ôâÅj ïsˆ Q¦ *ª<»ÝÆÛ’’'ðérùòbÀgý³ B^Vs=Žûôõ~J¸¹‰)¥ ä¹ôº¹ÌWˆþ:SfFàõæ äÕàœNšúÝÁÑ_MMÝ8…C¿’Ð {ý€xYú³›Kþ€uòŬþL™åÃE4F4™c‡ôwt”ÁÒÖ´•?û ‰“†G Ÿ-ÕµöTùëëní·^ÌÕ÷68†¯!§ú%uô«@!yÊV-ï`ãDÊÐæ.#E® l@³• <~d xŸ–ZÈU¨@Dü½bÙÛ¶Aª@ÓqÍþŸ•.¶„ Žh*ÍÙÈ Jæk$ Û€Žå„“®¯v~…Œ÷rË?ºTiÌ ¤'ËùØxg¿púËÈDD õÚÈFyZF ɸ‰ž´9t vozÃõWù‘ô ¢±»~Ú®s³2/ë]Q ¥îtHä„ÿ¤ZXxy³›·8”¾­×Ù•¢˜ÿú-ÞRS§f=ªøõQX"{%çdáû8䂃½IÙ”pš Ü ß}$•åöDùŸúž;ú&'Ó茗hqO•à‹–ë¯õk’cL¸±Pïâ¾¼ þøH–ûŸ×RkXP ÏÆãņҽ±Xk¡,,’ÊòSÙ¢äôyŸêbAúas²ð™ó¥ëx}k $>…ˤk€€çuþ•'sl²>«÷ù Æü³©<· \¦ ;§ŽîlÅúB‘¿Ž7aº.$ÚØ ƒb¤7•7)·ä|_¤î,P²¾Î¤µG^o<ŒC²Äk\VÄÚÂ~¦+ý°5âø‰‘1œï‡:£‘ø{¹“‚o %C±ÊSß!eª6»Aý³†ü3òú¬”^žò‰@\!Ù’Žk Íh¨$¤ee7€ÀÛÝ_)À¾ŸjŸ¨z ÌÍa÷¯,Þ8í ¤ˆä¡[(KK©8Úê<…O ¬ÝÃïÙ††!s¾ñER’X$|A÷x©p¡ù>t®zp}EWz¹e+†JErÏ%ýÒ”Ïa•Ÿ¾T'O6WR ;=ki¢É›±¼®“}kçõL𳕳Md CÉÓ Eª£B­kY" u áQâ%IœÓ©¼ÏM}#©$_JÀ©W…†R×X·öíM¦íì|eðö¢s»øJéH½ª“gjžÏ鸅x þV+';› ø›ÉÈ‚ÁíYËÅ¡yÜ4+ôÏÀ0©5ð¥MM>'ðÄ ¹ß¾5â/´Ï-IÈùp×xÈf½+ho&e¶Ò²V„ÔÀ¼1N>çb¶Ü Lx):ˆë*ÓPˆMÂü¸ÿíÕÕ§åøk//=BDôÈ‚áX^Žü:ËÿáÍ~AA/*guõˆÄ·®Ö#4(€¶>‘;ÆhæÈ’ßÜnsC*ˆµ–Aß+50BFït- ²œtu¸‹[©0®``r¾Âõx…þT©s¶ ŒmfAÒÀ}9€ÿç8”r‹EAMv̉`Í’•‘Ô¼››×ë»Ø‚_¾°54¨ƒæûÛP onn°7‘ÿÁqèåhç:wár}?µòLºbõü­)lGç³ K„ù‘D&…| •ƒ0!SÓD·¥öašoL&GrU_õ,,p˜\l$BC 6$üeà2çFFžøÎû[µû ›éPHÙo­ã8Òô\ŒÑ×#Øûk„ÄFoŠÀ\˜Û·HN[W‡yx<\vò"¨PÞÏô¹’³£ÑŸJØÆ’䲿2rr(À„ý|•No1ãäàP5ÓàH~¹¢”fFn —µ³3 uò¸õÁ,“xNÄ&ºï5Hõ.§«?w‚ •“X,÷³ei5Þécúýai¸ÊÔÊÅõ ƒî¿V&×L²Š@Ì8œ£É3ß{¸ÒðÎ_‡^Þ½=wóÞS¢¥h+HRÅÝ]x ôîßzV&ÉIØÌƒÀÕéôÿu¿Z[9$n³þt-R«t Å›}û)¯F^¤Íz){¼öø­v‹äÚÉj:¹Ž¶kíæGll5`Òá:ÞÜà ¾cPá}ø4QîK©]È2.+A¥¯…¥PT©ñY =äº÷³:…| ·{JWŒ8dcõñZMèžiÖ×ßr¥€¤uIJŠ åÏÐ.¡¢Vµñe4 ®Ð÷{Åû «qŽƒY{?/ÛÎigÌXªmÇñTÐÐÐLJqÕC’ìÿ^š›zj`}Ú“Eö‡o}ÊswuxnÐŒ–½¾1øZ¶®,|b Ö7‰9¯ÌÃUçàpÒ9´«P¥ÿb§SKËD‰Ó570ÉK²Úl¿?e+}ر3v¨´uÚôa`(¦tˆöaYp˜4{чNî×i……4˜Q¿ãš(B­–½Ä[½’k5ry?2k˜¢+Jÿ?E™µÏï‚ {ö§).Ž—¹æ[½Øâú£¯í7Å¡¼«Õï µÚÙÍŸ._Þ£ææFƒ ñ»Ø—¤©åGwulðÚætM€R‘\À(D p˜Œï펖ºz?añ¶Ò—h{ òóSn`d¹ž«kîZhÊÇLGí,}ù¯ë5††xˆˆ[’©s±ÿ$£â6Q©á¶?6”œNð½¢{l®{§ëªnªÅ꛳ÍóbC‰ŠÄ ã'VöËÕ,Òâ¤WQɃ­? ™ÖÑVxÚKøãÙ JXP`¹?aúnæƒ ~½ík…q˜ j,ºq™ùŒ»Z8ǨA*$Ч¢g,ð‰UzUTªx7ØPgÿé§Õ¢—m¼ýZ×ÇаgV´ÍÇ‚L×sD…buS’G“M’JRy^îËT‡½ñ¾C‡ùjGþèhz¶q:„7ðu„à€"£œÊÃýÓ!È Mú¼¼lLºÖ*,‘!‹Èpv¸Ò ˜¯ž®g6.ccæœðèmÈÏã¥ÖñL!š‹[9 gEFÈýÄo|3*l×?0lh÷CÖ#€€l dã‘ Éø´Æh~LÞâ‚lÿ]G WAÞåýÀÄg°^p±7 OU¹¨ƒ.óE|ç‘¡NN†0Í‚Ÿ?S­q*•ôBµb‹Ù$ Ö{øvöCR©~+æ×Õ…öÿ4J?æãç‡õÖÉÌ„¬ ³Ûêû¨Žå½´3òϳ™)jÿSFÍéŽÞÚÄŸ6S;±;¾Ww±áûÅ®Á])atRÒ÷Vo¬÷´¯í÷&,ùùõÉÕä Á„ÆÅ1ý³Î…'û}K¯?‚‰jÓ ¹Ýí2aIUÕgrEÑätßr‡-n.%¿š23µ ôÊ¿‘J`ѯxŸdféœï)³5(ùAöy—ýöËÙœWdTókå‡,Vma¶¥q«hÈ0䘙MÔ7´¤7b}Pš³?…|ÚSP£ûº€´æö“ÍõŒE ÀŠ„XßonaÛn »;pF¥žµ?bu d;½ùt6£!U,U¼~oøêšcêù5 üež×?33'ð¶Æßp+x-·’ÒððøpOeæäfd°æïs<=¥€ÈÚ§—/þLLdkÔöXÌ}&Ÿ÷~¾±¥þ×îüÿ=‚}]jRþîþ"{ D .ÏdÔq–gö«¹9q´ÒÆD¾Ø¬οs\FÝLÙ*<È`ŠŠ/A —ïEãY‘»ÃOD\0M‹·€¼È÷¦Š²FãÓÒúAÚ·±‡[é úrq §g>ÿZ¤ÓÌ™³·³´¸8l¶u90¨ Pë‘¹ê¨ ”V‰ÿ1´Õ S%zÞ?$°ŸC f‡v.Å Ð=Óýºçù椆g–!•>oilVdÜÜÑ÷"!j&âäßÃñãÑÞ_¿­H/]}qqáB/‘t·’Õ² VNŽÑÚJYÔ'íÕÕÓè=¸ú£¿9ÈÂO!uuèŒL•<®c™~õÎÖ(êêI†ÿ/W¦Hm—…@kyd\[“¯  ]9ÄÆfj`rs¸÷þ´Q½²B^T¬¢«/ÿ£PE`ljê# °ìŽNïXŽ´i«÷‚:¨ø8 àWûýiKÓß ü~¢€¬¿xõôHjÈ WCCü ?b©îWWti»¬‰ã©Øœ0A²FÆMîŠ$Š Å–Ka)Èf±ä¨_{sc1 ^ÆÝß¼f²^Òƒ\÷œõ‹æ¡ù(n²æ?÷ p í‘ÿŒÄx¸nõ¶=ZðDÄà )·ÅP.áê/PJƒJH±¹9‘AÍCGE]¢×m#ärÇ"á•«6£Ú6’ŸÈ2Œ!%u3´–‰&t¦É•~±áÑž9ýzK3½:P~PíÖËÞ¦ c­Þ¡Á–EFb ‡Ý…Ü_§?»74Ì%$`É6Õàs4Ñ(¢È îBnÑØ~œ½o˃2ØÇ%MºQM"bUá°ËÐÑi0ë` î}®B£Ó­‡´ }N®12ÖÍF'[>l&Ýæùlª÷„ò- ÎÖß^ +éOÅVž¿áúAYÎ xK"W=“A¯¸·™®º:Y¡rªþŽì &ïÿp]MæÖ›àåPª°Íg++ÐÈù’o~ éü©0¢YX´>9ÏÏË“mõ2‚Aƒ…‚É¿8j„|t´;Qædt¹%ÅQRò ù HSõ÷—8ýùóç—Ã.±fÃgMhEée'ñ9PMwû0[£ÇÀ€Uêî˜÷¼6ìºß‡ø€ï¾ÆæbcÁ“‹v6¸;î ,6dtrV]Ýú]–±¼À)ºÖÖq0~Mf“ÄÄú/„j¨à–C‚Äýänk}¾¶û,©ªÄ ®vpÌÌ|nïÉ…‰Š²…l²,m¥­tÜó/Js»ú|[ÍŒûĽ[FÍFõê¿}›°èÁ£:þ“¾ÅÄ\pžYWTl°±?å™ ¦÷V:¶y?$ÿùó²,KÄZO_¿-C`½¬Œ>æCñI1P˜®d«%Ìêd„\Úe6›c£¨š²ùšÛ“ýRDT2t¨à÷tC%Z$»Kž$Â&ÇKÏÁõq¨ãããF~BöCö nFÄoèN–Y C»]îFñãoO­}Ðþ7çͺ¯¬Òù$U(1Éú΄)©åÜ„ÑãÝó†mÆ7ÈE´«•MÇëÅô‡ûEyûÓÛòüAMŸ6 ¤r8ÜÄfgO å¬ÎòB¨¨¨ ×ÖDbªLúlýäd$Ðé¯4ùTwèó‘‘7yrËlq`RÎÃS# ·{Ò†=Çå˜ðZkÞÇ5ØÌ©b#ÅÒ¼7rÒ`èhµÜ ×Ü{ÃßÇ–×°ôüÇÍ·Ó½¡Åte·b5Ø’ûSŽç\Ç ³ÕêNúL$ì€ØúÛv/ÔsŸq ÆK&VDp»?Dn~53[ÙdÞì¤,Q)ý9[wJÌšž%V!™¶€›Lös £eøÛ oÙz;1å"ò#ȽJ?ÞYoîMŠÌ–8MNNnm »fj*@ö9·$˜Fïjg¢í,$Ï6Þ;.,¼„Fðü^R²»km‚gúõëÊ"   <§ŽcïÌÚÓäç'âqß¡¹¹5<ß18/‘’“ï4ÊÃîÑ|þü½Xƒ02&æT‰0/?¿?Ãswzt-ÙZc7VB9ÎgÙ n£?zÉ;·´4LRÙg®ZB6OÚ–RñBÏo©d–::å†Ü²²÷3s%¤Ì`Oõ@Y*° &àvˆo10]ì×~‰ÐŽŒŠzT–³´”2©jïÏ·|òGã1ß”L?êiÿaÀÀJ§J…»¾¾~zu5â4ÏèvE¸?mpzíÍçáb¤ñÝE.¡*ôíàŸ?‘ÆÃIžw½:*XŪ¶?ÃpG×vÙƒÔ«í®Þæ+*k68ìRe¾‘Š"&C§™ƒÿ#¤ €Û÷ÄÇ/!&%%µäü[Ía÷/²É6ѲÇüÚS¾ægæÙ\IBF&1 w~·;F&1üý\éÔ £7ç;«M Îq»­^îWyLJ'\JR«´ø(ÿüóç_Õ¦™øœ´¯NÎG•%ÿ’ŠÞ×ûôµý‚ù #ðÝÅBeºÖ×9Èxx~…æP÷WZ›“…†IÌ…ß››±›ÝYtž…Êö§Iv–PPÐÈX]/§p¹&'2UÒ…€üB¡(Š q ¥’ ¿¶Ë9‰H#ôÄl~ï3=Hy:lùJ|††\ o½oo“dnšºCîÿ”,ÚAö:ܜ⃰oÍÈÄ”¯ÝÌ‚‚"/r+Í™ƒ(û¡XµÜÇqÊèÞ™2ˆäBäšdûï¾IŸ“|b!X¹lQ"JEòð+T *³À,Ì7P:­ŒïZhÂäÆyàÛAq¹_©¯9¸ÒÅ‚!¬4UúÌü쬟Ÿ±²5ü);×X¶® ‘‚bW³‘ 6³4—œxÝÆÆ`€·-5«ØÚžæÈ¥z[ðÄciF¨×¹E£6pV€©ÙöÛJ‚"Ÿ,s¢ÐýÆr$ˆBñê×+ ©e‚h½±Ö ¯…ãzN†ÏÝìÓ,?ÔÞŽtÛbù¨ÓºÕõgZZì!…¿º:ŽÅ¬6º°x¶Û%#dò÷µñJÛV …‚➨ϯ¿vU5n ¥syá þ$ugæD~Í'k-,¬4Ó8 £¥uØJsO¯´ÄéyGbëx)’!û`°bflŒ‰FvÐÝcÌ|¹'Õ x5iù—pسÉñȺÙÈï·Ö£Ãq89ŠL¢žHKX!UÜÁÎ>T5b‰ŠR5,Á¸ÄŸj†ôN°ùŸ¯ÈùÆZ–¸[yïL³—jGµ–F{³z³æ=F\½¶ÜGoSº_ã²À÷¶>Óö^îs¢ŽŒàçWþÆËÍ}›À˜ƒ[¢©8[é.@NM~Yçó7ÓD†PP0«‚†©Ú|ßàùIìÏØµòVeEAm'9˳¦æfÈ f(.y m­~w9ã´+ÑÀ'NNC¬ßÒÒ0s¥ÃûúrØNÝ¡_ãæ² êûô®÷G_ã ‰‰3¹ž!ý™žn¶[臜£¢06_kªÚúŸ+µŸA¯±ƒÊ-Gx8ÇÜõýUtF~þ žÖ* Šë¿7Hhhpí·^Lüæ==50N ³‘’Bäêa]VÕ'3Yh¨~©RBÝ•Ä,@o£«[Ñ~£`u®ú¹9>÷/›.GeeZÄÅ`€Ì L‘õÇr÷k_ýý+#ã­šV:n÷« xb»ºvÈ¿_}JQÕd£`hÞ­:¯òëŠ$”G¥PZ{iºÄ5ÓûyjåÔåÏÄC) )ò ºà¾%*>¾”dòÔ«FgΤDÍ@ù²ίë=•ô,S1‹$üÐDÙ¯9…gêÇ«¿n‡ qÅâŽÙ\x:55ü&ÉlòwãûŽ…€3ÑaÝŠÐþí…¥l­Õð¬‚Q³G¢O`à'äAõÒìHÕ¡¨Ò“:_ýð)c'[š™=¯ràù£2|ýê°ÊŸ(*1Ø[¨¢ÖׇLÌÍMˆÍoh•’êah ¯Ò„4ºÍGýV8"ÍO»™:g„éógôx:¸IÒ˜½ÍÁøéRBáši ÒOy6q²}‘ÀÍG†1¾3øû¼dðåWvHñÒHHŒÑ }1;Ë?ñ›h™&SˆØ¿ˆšþ«CP^Þ'í~G¬É#…€¨/nŸUJµ3”‹Õg*ŒBš:ä]Þ¼ÑGG§ßÙ Ýà@•Ÿtûjl8’š¼²ÒN>g«öB6YXlþs<5Ü=B^ã8Ç@Á¹ZëQãÑ4šÓÓÛÛ[‹«ƒÙ"«ÅÈ“9ñ9B= È 0qpZžîÌõõ;r%;ììì‚Óæ«Íß›ÿùõ‚‰AïÅ‹BÛF&&•¦ã¹ `È{¸¸¸ Ü3ŸøòªMRJJŸŸ¿¾—±'¡ºšy¾Ü@D®×Ë0W(CÏÏŸ?gþdÄ>q´(jmn¾ø–ÊëÆüõÏ· ›ïò›D–·Q˜±2›átùv·Oì¯ÚJtZik¹íú†1*âé¢Õ.˜®FygK´T#FMŽ—Ås¶‡!ÏY'‰v~ü ˜6QýÀã™Ô54lRÆé¬-ê!íØ”Ž|ù1ÄÍåD÷ceER'#£z¬þÏJ{osŸ+¬Çc¼¦bgõ66ªb¥RêÖ$ˆ-…tªÍ0öÿæÀ¹_ì „DD˜4»]Ržf:ïO…uCž*WkÍÄÉÉYc1[‘¹M&™Ð²§ª =##%Çèøx´ãá\lwwwy]Ð,•€ï™ç<*Kå2i\z³³³B½þ¾¾ô"""=Xß¿·¸>Z÷Æ×¡¤› ^³up0„<‹›t-Ú7Ó‹â|_|Sávà“#Šk" ÿ@^É&+Ï>kz;— é)û„žà†æ%=)iÈd)oˆŸÿÒO9Å`±9·ßC–/ÌÆûZ¤HäÔÕÍÿè²Üï—&Ë›\‘šR5„…!4ÚoK­ƒSŠw³^¼+í*ï Ã}Ï}½&´Š%ªxÀen¾ºëåµ´=Àyýðà±µ¿?haa1s8_ yØëÃù(5;»ÚnéºÄf·ºW:o^ ‚eú€3¾Žü晾° öïÎÀȳ|óÛ°0ÏaȉD,‰z BN)J‰¾-~8¥^ç- ­é~c-M’{)W|áZ7|‚wå µÆ9Ü4*AAA_êlÇÖÿN–•—SÜ5»žouoÕ¨«ªBAÝ<¬Å_íM¢îÆ1ªÉ4 Ójð=DDI :Ö¿¸˜ÌUdz:’AN ¢·÷s¦Ð‡Ãެ^ÆæX‘Úe<‘«üÔtì€É®ëoõÛ¾Èüü)5é¤&§éH÷r zK‘±Û±`…Ôæ_NäRp#¹Ö˜ŠÒ78R¡„áNûed¤-0Ò†ääðzi^ÜôG"  ¡º{\í ø zzÌ€ ôâD“BêÅ››ým17 QQh !a`< ¦K´è™˜^A¥ðxℇ‡ƒÂ())Ñ RkPLN %5,o  Ž7 Ï‘»?«¦*n‰ŠÚÓíô']ûüV(“Òò7¿+£÷òV%‘‰É£º ýG‹YÇVqwOšMÄÆÁa Àâõà—”¤~Ñ”œœ,¹ö“õ?KF+`¿€rº=Á,^ÆT«X½:Øq÷¯·ÛE`woo¥v³F£Æ‹oŽÿø)…“ ËǾìŒ=Xpðð†ÎÇÊwû7ãm½õõôÚk¬–š\;AË'øù å÷ÆÆ«M“Sáée•6RÆ-!®=ñ†}𔞡AçÑB½ÂÅÍÕáõ¬P¥T<ûþÖõ/žûî_Ò*³IX99¹:[F K˨ØX?@:X¸¸T—Ž7÷÷?z׿÷®g æäÞ÷ƒ³´¹>Òúl6ýã-eRÁÇa£Ü¢ÒÆ‚¸eºÒ,ð{;KÍ]® áÁ5wR’’¾õõ®rK`b€÷aÐ32vt¡Ù>?yJ¦qÕ/8ˆg_ .ñH‰QY,TL¡(ïÿ%/m‰ŽÚûUSåêÊ_ÒùAp7FÝ}"?(;;t/\HO¬f#^C^™iÎ-±/škàM,s·®©©ZÑúêÿÀëÚ½n—{¬<<-3®? pQQ}ƲD î¯gô A¡—T®ììü¾˜^ÝÛƒíÁÂ2ÜAμ(QZËùšUÐ/X ú¯]r?I¨nÇ\:ªLž™[YAžŒ‘c{´Àn±Ü¢µæòÑòÃT¡ Òéé©k^n.1Ù[.$PŒm[ÃÉà[‘†Ò¸52/xò g^Uýê¨ñúÍŒ"GA¥ý†Ï…¥9rÙ¿sH¿X•< 0ËiÿQ¢ŸÌ™9w» L¸)o0S=ßß©ƒ¼C&***gI/RÄ‹ŒŒLi 9S]8 ç³³sWo/ QÆÄ5*ø.· h€ÜÀÇèí6ú`Çñy<Ø ¯sé \?]ï4C®®î" ½ùµ‹‹Ë/à  FõÆFË zéuÛ rZMëêê>“C/5wÕ‰ŒU:¸58½¾Ž§´4ÊùZˆ"éèì|ð*04´k£?dKj[®Í[®)ðWú =€ò¶ýx‡ô§T‡×b¦ì…~9ÖzOXg•éx™÷³W §3bFF†Qn-#‡*(¨úú3Ü ÿ£‚ÒokÓ|––/ÎÎáð„ ¿îËÇ²È ŸCïO[7Knuæã0>¥ÚqÖfÚ Fdþb5”!ØäÇP7"ŸÃ®¯¯·ØJêêòe¶œ‹ñÙÄÓó1sûEÙ·oPSezlÈHMZZzÌ>ýþÁÖɉp“InnîÐÄDŒ«‹ z*+€hå,a„¸ÈHÙ#,A‰?î.6ÖŠkŠ˜Êöp çI§êƒð­777W¤T¨|p¶9(4ê‰-á:­8g F¾†# €¶Ðìv¸¿_ob¹N£9>xµa˜š²-x¼mtØÍèÚ½÷Êüg,Ý„N=žÜÕ.«3?‹»SÆb29b°?ǦfU!¾@G(ÖSt5нW"•§qÆ2p¿Ö6ÑñdŽ€ñˤ4)%¬ÓÁÌTÈ“fÀÅÅ…Œ˜ÓÁL;–A‘X4<äM ¶¶¶¡å¬§ÿÎÑÊ­™\<õ.§Äæ‹ ÌãcczÀ¸Ž[ŸC¦~Ëee‚<û5&n«D«QèLàU8hèßs¼>¯&ô>ºý¤(ÝÚÞ®œ­4© Ì¾|m¹Ýò¥Œ"%ñÿO¾3ºTˆÝ—5 žÑ˦EªРÐ{ü.TÉê×tYF1'ü÷€#9#ï§z |aqh(ÈË ppp···CÀ”ÕÔÕXl׺2¡ÍX½Å·Z´´æ¦s¢ÌÆÌ¡Ê*Í}<Z3«ò&—€¡àã#ÐÑ•f²_¦o‘·zÞ×|Ÿ+P*´ÙÁ÷õó[ˆ¥ª6¤\ªM£¤=22bcoß JÁûÉC2…  ð²lŒN–pØ/55|yyùÉùyáăwæÜeÖÒÒR`p0¿ª*ÖÓÓ½õÍí­Rf,ó‘_@@çâ"þñrk/Ð{zðYðxl‘ûeÙ¹”Ó|ÙYÿ À;9™¤$dè»ÔŸ¹” J´²³ DD*¿¦Òfr557—;ªWY-â´>?qðxšO—c`µ^êø"fÑ*½ºTBÅ,@.š,—ž™¹k²ð/ÝRâÖHjH³¹þÃÍ)À3ŠóºÇûk@_ÿfÃ$}6}©££s0_+SÐäÂE HŒ€Ààt š¿M²+º››— ½¼‚BGüï–Š¯²²È,ÖKð`¢?[-`sÆÈ2 s„ yÿå&$$èîþÍm¬¯·ÅJÝ è8^%vÿÞ„††B ¾p¼øñ„º:"<ÂeâÅŽ¹jóÕׇ*Ï”¿Jfµ~¼»«0’pqw‡< ª`É*.¦¡Úu`¡#Ó\7…óú‡ôO fŠ]år#KG1 ºè=y95ªÂPñ ¥ƒøßE¶2::„@…ÍÌ(—Z<á¼½½±ppo[γ fE§€Á /h:*°ÃôÜÝ5%âäÔ±Ú-Ç—%ú~w—žñï&¼|xÅÍp3Õ7pvì„z>"Ó [°2VÒ¼Ñ\œã2Ò6Zn)¶9ßbjò*¾k6N6,3­ ¦±,”©< ®f¤ø³X¿UÐ( òÚ3/fó½ÜÜûôÐQù8zÙ+fµ<¢Y€S#"è8h™™1cÔ$ÃÁÂBAÑé´ɧìMmQTngIÄçþ™žîYö^.qQWªIyô­Ñ&;STÆ.þZ¨JiÒy #ã_uu–i=dbBÃŽ™ŽÐ˜Å¾(ë%®?®´ÿxYId±˜úõàT™‘A:ùûÐä€ÎÍ-¾Ãýµú¿S˜+yésº£iûJ59%˜tÚ¡q4™öÛ#; õLêÕf~B!˜b±=à‡ef“”ª$>@ñññ ‚ð‰B‚ËÝ”n‡/ cX:¤¤vnÏ!ÆãzÑyg<‰L:¢ÿç¿‹PJôÿ‘}ŸŸÿ¹#ðwÜ'™¥õÂÒ=;ü·ù™àkÚ`A†êp^ö ðGÀÕp5`Íêîîn°ÚáyÅœ€$㻉Úü£µÞðÃÐf÷Ràn¯vN”»³mxŽéï+΋š¶ˈ[ÌUåÿueãàÀ®­w¾Óš(N~ì±öe°F˜Í€vî®ÞÖè½$BÝ?vÁ¢§›_ù54 ÕоS¡ža¾JJZ+ø”»a¨„¤Ó,.$-ÍFOœJé¡ËÝ€&ÖôBz€e (ç(ã‘@ %äMã n­x¤ÁÓXW÷ 8ªÝ°€ÜÆ–ÙÊ®‚€ P"1Q;òììæR‰ø/÷ë£ùZºi=›Lñ¤ ’P`þ^wý ÄÝq©4m‡ód.—¹’C˜…5SÊ%ÿÊ;UȤ5½ƒúl%‰/ì+ZØaý™÷qg0ž°óé‘ueu,‹CŸØ×æ`\¹ÜW°RÕ œzô'™€8õˆ%G ®/¼Ÿ© a‚øçîxšIzÂì¿•Û"”dÿ 3ÿ@*t†˜Uc9—ГA»Ô"Õ)Ãk)X¨ü1í%7w1ežëýÜßðÃÍ:t(¾„ÂoC"Ú#³é©¼kc~ÊŒD||)xÂ%‚ïßõØÊ©>SqøA^Ñ&H$¨¯Y‡"•9¤4¢Šñ‰‰Dß:.]EmC†RÝ‘ãi¹ùeÿ¸ÔÓfZ)áR)ÃwÔX¾G!  «õPÔRœPøjfÖ65õs_ZNÕz]ÏÌ êÓ'w‹Lié+y„f¯‹D|Å|¨I-33x„ê6…ñG×èèèÍ´w±2“PNnO5ÈãoF#Ë{úò£ðóë—YΓvõ´ø§j‘XÌ2ÂzÞÍüU§´ÜÙ3koûòþx)Ç?¸C­zïu8^°îŠ‹Ç}ñƒHûìúZwÀÉÉLÜû­~½dŽÀPX ‰½ã0 ¡¸ÔT)Ky 磊söü+ÏTŽjΫãÖï$"™ ªîA#åUU]õmÖº`L+䱤^œDE£Q]Ös¥‘IJ-F¦yaÏÎ:¦ü,«ŠYÆáH—^ ¨³LÐÐ0•ê‰ þ®]õR2=Öäö£¯b!# žÇ«/ônnÐÂÃi™ÈV™‹„d£^‹*ümAÆÂ /Ö [»^ÈШ--¤Y®6ø¥Q[ÀyýáéÁ^²z³Ë€Íûé…?R|ÑbÁ55udJJ(ˆ·vø°ròËž×ZùÞÛ = Ÿa†“‘ßÓvsy &}‡Asâø`9¯™Ís½Pÿ‹ûNFU}Š_°Kÿäv} YŒËãæí|­NÇXÄwÆRWÖþ€ˆ® -' d¥w$U¥ÜùØñ«©©n²»dâÙ«¡á°:Ä0divÎçhhž3ô>û²èü¢¢ð ‹×º§kéô¦¯'Ó¼UUñü‘–Û랬Xr{9^I\þÏ3iŸªá™^EÎ õÈ&Ðá¶Ö&ÌÎÛn[~æz)Ïf8Ëjq€YµT;,Àÿ-!NîJÇ›]r”Lé$f¦Þ»ËNüføèOÏß^½³j[òz³°àHÂÈ…/9tVGÇÚÊÚZ­–W§\¹jÕo§Ggö¦¦·r&(DP8Ì?|}‘42;:×é z¼$“.^}J‚ZYÑ}¥2M«ZwBŸÆ5-$o2²ð#?ŸH½&{lÅW1n_˜ŒìÎÆþþEK‹ITL QD‚¢¸¼ü&gèHz„ŸèGÿ·H5š1¶†¾¿ÉÀÐH¦Îá³ZQ·78J»<Üpß]/{ñÊÇ Ž8*a†F[†€ÜÍj@µÝ\0 šƒv‚ÕU¸Õ½9!š©Ú‚òSSd¢¢.£ŽX)ŽT(½G_Z½ŠWvg#ÆU1iöÞQÎ%ðxzÆGýIdº^ݙᷜö!Ĥ¬öYßèçý%Œ€_¤%1Ï¥¼ñx*îˆåyôI–÷·111Ázûé ÄäØœüüïD×ÌjúúJþ:+96’êí—¾ì &ÇŸ˜(§É;ýaúø×ù«÷y¨©‰«³Ñ#Ç?ÿ2š¶,+à)¯ª1-dg‡)¯PYèÇ4šæÙ¶3æiÐ[Z¦× =²LUUõúäׯÑYGÿ|ë<¥'~©I¬ÀÆŸ,û"Á|¥‚NQ¸Áx¤¶O”:§Ãò"yl ú}ýý"€Trx®÷&]<žê³Á!ÎÓõÓ²ñO673×X;ó©Îð_ìœ"L•ò¾âlÄ€è«v‹ä* ÞBó=*»žI-^£“Vgm* Ú9œ‡§H¦¤t3˜Í _BA–WÙP­šÜãß~Ê+þ­ÓŠYciÿýË/¬Æ,–fþ~p÷½ÛŸõõ¿6xºòó?ù}ÿNËá\³ÊΣž³üèu—àvñQf”V¨"T̨É[§ßÔs.„ªÆ¯T–Òo.Ïi¹/PåÕp“ÚÍ‘!º5òˆ’'³,€¨mc{*úgz…¿@”Úò˜€””šLgkB ŒíJ¼$ŒvÆ£N‚ÅêÌuˆQÈ9º¦jpss/«èÅeFý*ÏÓÿLNv,5[ýW(Ú-()Ñú“#¡P×xÌglL0½J^Ôu:.SœQL3™»âI§˜ß¸-ò̵î,yG,%cÈj$ ‡®S—¶-#T\¢½"c)üº'> #¯ß†‹ˆ‹³€#ë;uÆã@J]ñ%O⺹×áë §bp²€^‚Ç…m2:ò½Ò^ÄŒ™˜”'ý—g6¾p}=]ÝCP!S¹É¨ ö®-¾< ´¨Äà÷øiÛ’N9Ñë£f~‹ó9¹pdìßòr?ÞV—Ûèé@Œ¦ÖŠt€’,´ã‹ïß v¾¶¸D…²ZËKè.î{"7Ц¦§ZÔ±bU–“Ñ¥¼hˆÛ Xgx?#Ø8<àÛÚ¯¬3ÁËÉùí£Q¬M ðÇ$†…aðzEø¼œ\îðNŠfs¡GõòÊÒµ¶vdCÕ¨?ó‘³3û~ç¾ÿ²Çk¨+’è3~²ZdÿÏç­-aÕZ+ò«£°¶(’± QyRC“m±fYx==[#/6¦·\žw/TJþ¼löíSÙ³q: „L6½ T[w7!·{Ig÷´©9ÑäGnîÚ¯ž™ýÑÎÊ4™¦Ùþ3CGB¾¿“âhh"“©ºÖ{ë…JœŽš ­éœw'÷z('^zÜæpÎàŸ-Ul°²t»zx‹€3±¤CÑg¨òv X++-iú£EwÒBÃXu#a¬îž>33§úÞ“[.‹E·rÊ þ]Ûç*·Y€‡2™lý²Ô ¢V;{*YT®Ë5mp91™t2½þŸY_DZ!®öZÚ®÷ ¾~S¿6ok‹O@DY*†ÆôÕÎs‰@T²AïS÷Z·p¤NÿêmŽqÓÉ..7ýîàõÀ0ÏNG¶·“f«Ѷ›SDÍþÀÈ]Ëz ŠŽûo>S@ïî²WHªS™lKpwü¶1?î¸ýŠƒãñÕæW~¾œþÇ(ÑЄäÓ ¢É|!8¸"-Nô¨(‰U@€ÌÛ––à@O>IàU b'B½ïípÔ„º²­ÃÏóô¸upu“3¸š†¨@øÃJïØfË=Éô$ZÚTz#qÖ’ÎüŸ»ãî™Bpà§*ÅÎnÐÐÑd¹;ù0ÓÈ™Œ†sz|™šh©àjccC@EE¡À~h~¬ÆòÕÅÞäKÀ² ŸwÝ!·l§–JábGÇl{}$žÿ~œÌ·O8•ƒ™Á½†D_ß b÷uÎÇ Î:!ÿe÷{¥×_©7·ß¯üÉ wدÁäÂz¾Æ7¬¬ÌÏÆñørø= EÕW½ ÷kEkß1`môNE¼wå~ñÓÏuˆy¯_ò°X;õœo–‹•t® Š‹c…*7ÀÿZnÎo(úaÿ5ˆMeæÓ¯áqª`à0ñü#"¢‹*eqüHB«r8LÚ¾±`Ñÿ’*oÅg³yUSƒ¹3uh®æ/OLCó¾¼3’È)0Tò[úòɤ*8eåj«”W¡;_´ø€Æ~×j,!¦§ÇÃÆ®„ðð«@Ì?Á‚‰Éæõ Cߣ˜‹òt0û.”àñ“zmM‡?B§ÒÖÛ¢X%Ë"UèJ¶ëeVí‘=æ2ð9ssIU3ÌDŒdçˆ$¿N:ÎMB [_…áNwzé#Áõ‹ŽFX¤ÌëÜ>'B»`âGOfpX|zaŠêtÝ»7ém°Ø €Å˜m“ýA*‡hƒ÷ú¸Ä%àH~IÌŽô.ïB ¡˜˜@¤õõÈ5ah¸±v{ñuæï¾MÁAg€d(Þí;jêP,6Duu;SXÛžþ~‚÷t=t´š y,"Æ&Û½áôu «v­¦Ðø>Õ ¹][}7|«»9 ¾‘´Ô]]:üÂ+VXà¯Ë´%‘ÀН¿1ÚÁäJíþtüK ø|ïpòhPç‘Àn¿Æo u7Y*t„šWXii(Øõèàß•Èo&šêÙ_¿l/2ˆ‰Š A!©ùÎàÿëƒJ졪j¥1ôÁÖwŸ#ù¤ñt‰yˆ©ªêIÈjÑûÚUhd~îÎCIŽPŸd–¢L”aó}i:Œ2ùÄô»9Œ$$úƒ«b=)®¬ð4§ ±úE²R÷øöÎì9.×ÀÁA ki)Þí‹sê;¦ÝGØÍÙJ$ÈsAžQVÎ]mìÌ"‚Ð .8°}Sñ¤°XA–ÍC±Çƒöm>žò^—}CJ_~G"ìFSº¾Á©Ð¤yLF†¾·´˜ Ö:î¿ÙØ¡w=Cú§l kP„ÓO\¸¨5X  A|%d¥zŸ¿:J)@N[û…ƒCAµurŠÆü¨Á ¾¾,î;Îׯ}3,çuVVËU(ò^!OB,šµöÏlå5ƒ½1 Ýøé{ÔÄ‚~ž÷–‚"T½ÐYæÓ³?@ú2@ x^„ Û Í;mí^@Éd?2žôÆ38š±baõ «vÆò¬ø*Ç;”4‰ zªý á^\fÔdLÕ‚&‘ƒcµ!2 ‘ ZBŽî•…ˆ M÷@ìs'0ΓN$szÝot#iÍ¥?`üˆ}ý—ø—[ölVȸ¼ŸPZŸyàWWCèÍœ±°vì@¼98ÀY®*u_v÷þízÏá·,‰"õK&›à E FŠÍ~ )ÅÙ$æOzº¿àT¦iÿ¡¡õ¢Nh(ãá½0 áÕ^Z½µ®)ì±Ã‡No+véúûÂÃs቉}É“q˜«VPÞӈ؜‚ì£7”FÒ¿õ#Ö}ùcðúz¯äÍmªÈý•¶óò+‰Auh„Ôïãy&z €¡_§xù}ðUÌ Á/ðèÐ4ÞçÀÕÎÚL# 8‹¶—<û‘èÁàøA1L½‚]>UI»¿Ö!bcC y‡»ç«øj¤õëÏÛwHÒ Ó¡=\DÓi·Jor|LDþ™NW`Ç„~žXpøô–‹m’„@škw^fî)mMºö^¹˜ã;«µâvs´ ŒDžø)äfóOÕ»Ëî™–Å7‡sjæô}uw7÷un~l ø^Ž"!¯±þFßáo­F²—/{$BâìȇÁ4þíj<4“WEOËLñkNgíM¼üT6[\Õ(.>aQGÙ@D(@¯{#܉E7ÜÜšðÆ&è––þ¸¸H¡Ì!B "BþÚGJ”ýú_«FàˆË¬RÑ@ú ðzdÑmƒÒÕë#úq‹C0såìÎfG½ÁQîS^±¨ÔpÏHê: A 2ð©ÊdùlƒÞ@ J±­ó?eÉ;|a¾»œ“a¸_K L­G[­6S"$ àŠÅÐÕӲʴ¹±Ñ9¸ÏötÝêTViÞ1b? ÃPÜ‹ûþ/^ÍéÌà«Vf…©m7Ðýõ#4t2'*™ê5Žž 4Etnî[CÞžŸ#£2"û'0±r8?axymcì rËÁ/›@²ö\ÕíûmÁÁ¸ÿZ?²YñÿϽ £ÿIÕà…GûÖ@RO;¨~<÷OrÈþ`ž& gr•ãcƒ§—wǯùÉ‹îΰ'!/²‚ŒÇZ÷cHÚÕ™²øÂ_ô:M9>YÌÐã}ÿ®‡E¯K¢Ý$ºÅQ$>6=-ll<™›½¹!dÄø;¤NõôàÆ²zY!7*(ë‚årËè̯¤²7 q—Uj„ Öë D¬³5`ø÷ ’/9½Á:Îש!<•Rë ÚèZ}W&òoÎG¾ŽuøìÛÄiëVèòô@2UÄÞïȆ!.*ÚAè­ÙãóÆS×̬2ò~ûôw† ÇS8˜áØÙùÙ8žÂ‚‚›¾W|–ê ðüP©†œ"Ø@æp8ñ áíèXL©HRž°z0{YZÔnž"b¹BP.¾Ãfµ¢þžgÂ{w&¥š'-esiÆ5­§ ÆâÃÀ™!kE%râÿËõ»?XÌ;¡¬®.´æé…êµû@N0KÄy"¼Ã ëÅ«Ø\íÈ@TéÞ{R­Øøý>ù5ìûæ‘¡¢¹˜ª‰ ¨oååiÔüľ¿±_½úïëGvv˜ÿ^?ÊQ<ÎäHLü3œ zßBAùøhÚn YëÈÆEñEÎwÜ›À*/·ŽLIéVƒw¿Ö¨½¦€„‹Ç»ê5jD¥• ïGõöNk¹d1ð±aûÓéCÿóGv'—ŠˆRlÕ<5<œ¬©9²Rs%¤{¢Ë §w>â+ X}¼‡8“€î Ý U.Þ³ÇG$2[å åÁf)â~zrËÈtþ'+€Õé¨I†P2èIdd¤o]]-Ô7R‰ðŽÙ[¤*ëã7T…ì l¶y]¦¤¤F_TTà€ÛÇ!gZA.»2ìè|¯w¢ËysÐ>by¾Càͳf€åî iÈHªw÷j§œ£ãÅ yˆ¶J%%ØU|ñ—‘„„f3N@2kzûü=ºÛʼnðùVˆÍZ—eý–'@H¤ì pn+RkÞLŠç`ø<ÑywÙi»7ÇŽªuPªysóðãú˜i§³õ™LÿlcÑ垥xf™›;â—±>µê‘’[»ÈV8 L?›‡/üÇfg+² a‚ÚAÚ+Ëùþ”r |·Ž÷b˜;¡¬@ Ãù½¼V«xÒ#æª/I¥™((^9îÿÝ!æ<`þ*‹ ’äî6_ß.Ýû+‰™Zº—@ y±3–"œEΖ!ë;žw¼¾o}kؤ¬º‰0]ëóoü×/sê? B˽$ä1\[ëV…úbcóÙǧ„OBâäyÙ6QÒjC»áùèÈ}D|¥‹ë¤å¶Ù[‡]ý:Þõ·‘kxx+{soÒÒDt­­Ãî.͉8î(Ȥæü¦K 7H"EØ zƒ|ÇæDýö=-×·ÒcÑ‹£Å—Ÿ¤zú£Ë¬ÓqÍ&~ánûÚøõ¢;&H¿!àrA‚årJŒ-÷àEÂi³T¦Vµíã3@x›ÑÞkÝŠÐÓ÷±÷PMdïÿ0öÞ"¨ RÒ Uª¢4)* âdf4’ÐDÀ¶VD±€½*,4‘¦«‚XPDD¥©ØADDê{'D…/dõõœß9v7ÉÌÜû´û¹O¹3s7lò´y¢'G^¿®7Çý­Øé‹S¢Go™s8X»3¹óŽ_?zúU=£øé­Ê*3š::‚Ϋ\Fk¬2‰›ùŠâw^9Ö5¸÷êU¸…™Ï²”]^|ùà€Ý@&sÜפ9{ÖákÊnó  ^õ5N#ôõ¹âE ééoÀŒ°µÅ™ï§.¬k¨œ Ì^¤Ár"$ØÙ]ÅNž4Tñáð°0àÀH OËžæj¼Ñtå®ÚZÈ_õµ”Dðxè‹ÝÞ9p°åÊéE(ÂR@mö•qâÀõ¾ÚòpIÜ¿º—UÂÎ:S¶Ó­$^Vk¥Áý€ µ`þÒE¬áOþÝ1-øjIP?,íñ­|0ÓzÝÍü87åóHö‚xnÊPÎW•mKܸqñP ƒôúuD\Q?1‘“lû>ÖðêU&+¶DS]=øåèm[™¡C­î^l9Û{uPí¤ßŠ?Œ1™l¾nûûücÿô{;yóDZø¿7¢ÇÔVn›ÝP;ëùó ãž©×ÒÜ´Hì>æÕ©õî»í—/§ƒÄ[;÷B‡»Í†-rØÝfP)Jî6G_8 :mÝI’²²ÚÛwlGúŽÒ+³“æ}+/šÐÜB[æovÐ~ÖÂIYYÛœg w穽Ò«Ž] ÜÁ0¦W¶õÕóçéÉ/>õq÷ðÛ°îÔÌÂ$¶‚ž©±éœzùå„u'ûDÄ׿,äO|þï?þ‹ÏÑjiRn¬º¶É÷í'Ñh¹‘“›†îœÞo·¿oÔ)P°ãî«þƺ{g^êŒpµ3vê„ œr Æ%i:v¯+Æk•6§øº øš €¿2þèѤ[+µ‹A¥Í+òÛ 2µgW×äOJ`Â!Ï#\±Ú„í™—×6D76öÆ–£>0Ÿ]±ÂÔpI 1^üØK÷ú÷×ɟĘb:sC§07ãÖž¿EX¯Ÿ_Y}ÓŽ_<…›êƒ£ž¢{æjM›6Îì»üõ¦›·Ç„×ï½þæ³WóÊ3Kª ½ß[Çøo6eü‡©á"ß{üøà§ww =iŠ¡ÁÃãJ~ς7˜oµ|ªeÏhî¼[W/ÓR|¯>z“°æÉ®Ziù ùWê>-wpßô‘îG–¦¬·‹ŽØµ«×˜1 X'˜@‰Ý+üôb%v¯$êÀIõ°!¿êkÆšòòÆc°kºåÕ{_9|Ô‰7/N^9jÜ—])ÏÆmÃtgoÃóÊà~rU—êXNw)ß3B™øü¯REá¹ëWÝ‹U³¾så¬ô¶4ƒB&;¼ŽÜ?òö¿c1ii>{+m†së•î…µkù8ÃŒš rLÂ5`Uoɪ"Ö “$ÃŒ!Xmv¹ub¹ÑêorŠ#ü ßÝÝï yO-½éò¼(y@KKÚš‘vÅ]Nìvä–—èjn†½@”ÂJÙÌ­n[Šûßt½îùý‹Sjw-a |+‡kžÝ1ä:1s¹§ç /wï’çZd¯íŸ€Neæ´4 HUFÉ'Ž,N¡a«’‘ÜBTr 2ÃÚlùr¿Ô·›RT´rè„‹ý@Uó’.äÊ‹‹FÌ_<ãͧÁgúü³Ÿ­ ÕÖÎÂ…À|.¶,×à3>žëy}»ndo~åQP0õ¯kÜaŸW·R©¦&~æn-xhsó¢[“¦Êoñª-iç¿ýâݽe½Ê&ÉyXP»óåK½Û j¯¶¼qZ‘Þ»—²³³ââ Ì‘ë‡yj祚²cAòðH,“Û=kHN¹áµ‡Çl™°2ð¢"ñ^á•Ùãwª»2w…ÅYìܹ@uÌÞÌ9§\\Î] ªùµ#'$÷åñ qäWqù¥Ñ .23º\™Â$¬ÅÈÉÁ*äù £DjjjÊ99ÁÏjÞ¥ÜP4ÃXQ¸émž›>–7ˆkH æ6ÄÖ@ªºgÿD/Ê”uY€yabò®ú±¼ž“vOÓÐ~ïp°†oÍæÙGz ¦ä}èöjÚ-ŒmTö)Wx8'Œí11Ð<›êÝH&×ÕÕXŠƒ%KSé©SÞÏCuCäpúúZš÷/>󼚑9x|Þá¡»üKÆL_9bòÁ¾Îd å~Ô¦˜ël½€Ú^ÀhòòñGfL1õÊ=»m/)` Q8£ÿPwû÷ñkl†ì±>”:$•‚‘Ó|AœÄ#7åAyxé!å0 ²ý°ëª>¦?oü–¬`Ú§¢/ÈæVºÀ¢”çYnÍ/8×8œÜè•|géú~½ üôŽøVÊâ²Î)nÅ"e;ƒ9Yáàp£õAÅ'Ì^Üœ¬×(ýÂô¬OÉê#«Ž½z-ÊÂðÙõMÎ'ƪÆé šòÀþÝðÈÒ —ce¯ï Êüöy²/iõêáÇ­>,+ï“Ê—ùTë¹s×D£š19SÖŒØWqcÈJç×ñ½± °ÇQyi‹ïæz©‚¬©Oοuµo/Á-Qû<7’&í®GF-iüXõ¥àËæ@óåõfØ£¢7L“×o~¸IMpóÞµ†-“úÌšå|̨äýØM EU·µû´;W(džsý–ǧwçÏ_7 žB¹âl…¡À£Ï¨cr‰×ÞæF&ZþòÃbyƒ¯1½ÊÞ+ng6yý§²”+WfÐS±oŸb]máz»ƒÊ]ƒ¹Zy{N1]¢Ò¶ë×_ OŒÃ/¬KO¢ê „/ؚ똡m?£¥¿žuú°ØÃUßVöí¿~‘=²$ü€XÕg‘V-ÍÄ$m^t‚È^ר²O¤€•Ê¢û W>´Y^SãÔXí°áÛ²Ö‚¤ñƒ4q«âÞ] M_¾Y?tô’„*ùãM5©w”"´µ×tiïK£1:»+ðƒGl›uù¶æH÷]…&K/¥¯W¸¶Ÿ9‡Ê¯Å¶Ú°©ìgpxðášÓ\«å@%úÏë»ïLvŒ<6 $aÓמBà<ö:t(8Íš{#+ä4ýçzoçšÍ~®yäÈé>ûU×4ËÚ4#èº<÷á4UÕwº!<Óœs¦¾·v“…Õ'R_·œ;For¬ER˜uëuÝ›ÃO0À®ú7tªÒ6µÞ! 0¶%Á:ãQ}{S˜Xp¥$mÌóŠ ‡w7òM©>zq²yY–/(صuˆáÚÊÝÞ„¾½”àQðH[g=H çÌ£¨¨·ñA_A7·kú}™iÆòºtI¼æ‚×°7†žuΨK½sGoêô ¨”™ëFFc™§|ÿè¼\€‹ûF϶··eZõÍTèÝçÚ³çÎ]÷E}Þä Á–° ‚îhÄÅÍ5Y;@S³W||_3_>‰$òúâ±Ò{ý¼SvSY–j+[Ir«Ž}øfúë8UÕñ`<û÷¿¼8}%îØ±ðŸ$ÃÉ)Þaï±ÿ±*ÅsýòRšÂ„wÆSG—•? pLÏýüìªçʺí½äÞæ˜¸$ùâ‘“£ŒÇÙ–ýöÏÃc¦"•³1>žì4Um‘Þ!ù¾½á}6‘)VGŽBr«68@:~h—SЊš âXn©I“W![U”l†P<«èêÊ3½Âï0Œ+ ü:9vYÚ-o…uÛïm4eFE!ª Ƙìl'~2ãÜøUosIòR•DRމñŸksÏÄÙYëbÜÍ´_:¯êœxæö§qßÁ{½˜¸ ÙÒ´ÔÅ¥O}½3ÍѣÇKȲè³gŸâQn ËU›68'ñl™'ãa›¾†íÚåÀýý úX4äíÃìÑZZšÑ:¾ù§NoÜ2ߨ4ÝõhpËôûù»‹™-ëׯwÏ;¾õÎ{sìIþµ.ºDR¦Mï’Xt½©A¹ª¡R9kaäöÒ´úѺ>E™{‰ÁöÆõ+üi¼¡óç¿c‰FÏ|©7<òúuÓÅNNPþ)G÷¦Œ Û7›U6|m¼hѪ} ºÏ‡;PG'^°_cÝúõ/ª_Ýöknd½«^Ü2uúô33?|óù³ÙÍ›7Í*žînyãÎd.›=uôµ›sG˜›_ÆhR5ÕǪhi ç&þ³zu¯ a£¬,-‡w ±X ¹þÓ§O7quàaAÓ¬ÈÞ9ØÍè Ný8eZ<+KÖžžyO?´E~ÊÓ¾»ðSïŽS2•ñ.wàÕ<‡˜Ç½B"¦P6¾bmyàöãÆ£Î“öä^›»:d²æàá1»ŽžµW¤»O÷oƒò}-朶]ÈX'?°œkìwO9<ÿL‘v€Û›ê¦;ø¸‚ Ò/é÷R jŸènó<ø­]š¶Â‘Íf/›œt‚]ñ9I5„Pÿb‹H‘A<žgøÀÖÞþDÊÇêœRóW¯^ 6,¿êùµ4¢’œKlApM_?ížš{Ý£½$·x~©Að†^G¶öîÝ{¬ü#ß y߯ºð‚÷Ÿü.«– \ "^…æ¼:­ ¯d³íÒ‹£³ê^|m>úR«žÄ¹5Mî}ßÓ«DWNò7I]¡—äÇ•ÕkFý|êèù€EAü“'OÞ¿³—¤K1÷]¼Á°&ß»Ï[ÅôÂK¼\]’.#×%9lRa øÆ…g~}Š]¶i(x;¸»»ïojúRp+'çÑý£&ãF>öæP€u„ÖÒ‹…Ÿ««w……=ß‚wyu×»Î8àEŸUµ¸ ¹Ùl›œ¥©~ ²L <ü8OWXöªYxj¹ƒ£cþëô!ò¶AAéÕÕÕâÆ:¯~Ìš5ë6¯ååN2¯ˆîºîÉL~ìµñOÇ(ËÅøÖOî²u€ðãæq³R ¦_^x Î{>òµÚåêÉÄÄ…[ä5íüü.3&Ξ5cS8Ê~“spžµõÂÅ‹÷\Œ‹{õɯ¼öî~Ú,*u!AO/yE6¥V,´¶UQQ;aBŒÿç×ÙeŸÔµ´¬wŒ5êhÞ ›¤Ç‹vøT<^ ¢˜˜˜Í¡¡ y¼ØêÏŸ§YDh»>ZÕ«ÏØ±cFäÚοHÞ€:=sÛÆ„ኄ‚mçfÜ=;Q®öcñé0Õ93ÕÕçnÚ´©¾®lÛ´˜Í) ‰%Á-otKs²ðå\niz1!çä‚H@2êÒ%:·ør>ïôá$ÀÍåN™Õ” ½Þj¦îM j)NðŒzŽ“—?nµŸJa°D7/,=çUí ª{¾aó¶m‹$ŠÊ}µ{Ö¢™::Î&ë‡æ^öþPžž°ÈV>kÒÅ‹_ú¤ì?¸¿l˜ΜŸs€OÝ{ϰ%Õª hÆS ('ØÛÙ1çÍŸ÷’W™e“`êÞš±èÅõAö‹»+ÕAqœ'Ä”ŠèˆeD¯ŸÑTÁ·š;wcZéŽióï<¾ßÍÞ©&ùûý z~EÓ{ϘÊûwÀT¤ûûû³þ]7(Sr"T~IQ™ÔŠò÷Ö s‡ôy¢¨©þ‹ù' ÅFô·Åñô½ SÎ-m«Ú¶yófj°VѨɓ¹%•ú¢æFl31à8)ÿžvezCì¦-[HÊÁÁÍ©ßjòl¬˜ÌcÅjDâƒÔª‡¼.J½.ÈhN˜ çw> ëÿá„a{‹êÑœ×ø¤B.0ùÝüÓ‹ î^Ÿ n:=cÖ,σ’[ÉÃ2Zrê,Iñ¹›úµ$`k5¾Î~X·:9o¢÷Kow?Ž¢RÞ?CÆï{ÿÞ#ΧÂY5;µ±úöñË—Ÿ¦áCËâ™7ïÜ»—=sæLË Â,¬¬(Ož<¹›ódo×2«ä«ÜS$¡t°ù AƒŽŸ99“ø0ðMñOùQŽê%%J¦i¤0BmÙË—ÈA]ßœ’ÐÐÐð©_>¼YbŒ¢h¤×‡Ê‚Cé_?:Λ·yðàÁ˜ÿÔ¯{¶ö²WÙz²_Õ3¥´Ð/ n_Ôp Ž_s¹¡QQQÓaOkчþ«î4Xº}‹^?lâqåæª 3Á_,®˜ìñP=K¤:'4^yÑ¢Ež¢,VÔäÎIjª7o(Íváf— »&W#a¡8{çêÕ«+B7M*Ô/¨LÛÑh9‘Wº`Á‚£7oÎmào3ètS!ïå¥Iü# Õ…Á» Bèˆ(ûÖ”÷¢ê— ^^^Ž;V^ñú£ö¨qã^)$ÅÇ?¼àêÒðúÕ«wßÞ.ó¶æêeuã´¯}÷á!ãm®Ygœâ0‚ù†Ê<Ê£G/Ø•½‚ŒÇÌi-½•àYpêâE;À$¿æ]Þþrç1>ðÓñ¡oÀÄ)Ïç}|‡OÖ‰¢x>"?m±.ñ˜¯Äß8©ÿ‘¤ª…9Ü“¤àÆp@âÉ“ê»Ãß{6~>Üò8±}ú±5\®ºg†L&/™©©é&òN÷Âd;»cpV(¸’}T®óé2ë½D3Ñ›G'§½·nÝÚµsgÙãÊ÷ù§ÏÖR2ݯ®éw+;{ðÌ›·l©.Lâ\ß4& Qg_Þ’3goäÙ6Õí«7l»@¹¥.«>ÿ\Pô–ñÚï_ÜØ‚qd“uWò’úl› cKS|ÞÓ·îÝ+S£"ÈÑÑñ}iFF/)\ÓeºÅå ¦‘ßœo—À–¶7IÈ ¨Ò¿Ðp*˜£ãñ4ž½âKþ"ÇeËbÏ¥×ϳÑÿ²+èÓ×¹/üúè‡&iñ<+õCô”¶í5 N4l¸ïéÚÚ÷†N¢ßçE TÎãå3Z‚@ í±D+Â+¥ØÇ%ðKÌ$p8hÄÚóçϧ«©e•ð«_f³®¬êu<55õFúx­%øûiAuË.„ë9ÿyÒ9h¥æÙ¸˜ŠG‚ªGÞ¼½©?¶¹.Ëpß(Uó=)•é…¸ô{f<ÌÏßë[âŸ5uÚ´½Ïž-'­¨qU=3Ò=ÁyŸ=tñúÐÉ:ϸ$å ²¤¾p©2~Ú¶‚‚'“2õCäêæÍùøêÅÙ.†ãw©6é‡(Fªž3™Ÿu\?+»Âg„kÐSSÓ=Fkûï}—wb¿gAlBÀÄJæ«îI a¿f>ð9uò¤-‡sÆ ¥Q”¥ïµ/„Ûè¨(uVw`P;ä÷oúØ+ϰΉ*¬WÜÖ‰:4æ÷/9º•oAÆÑ<¼ßìY9‡ôOPPµêæ{ú;W68³ ÒüÉ×`99>]ørcÿaŠQϯmhЛñnÐaÝ¥GµÓ†§Vö:œý¥p{À¥]·_¸áàäscËøYªª×\Ÿ‹óÈÕ8¾ôÉÎBƸp­¥§¶o9mêTu ÅñèѣΗÅ1Ňvï~uîþÓè¤3&ï.ô^•ž2¤Ué'32¦+ÑG°ˆÄixšà™‚ßúAóÃö ÏÈ=Ó<ûJBX»ºp‚¹4µz{è¥[W?ÐÒ–]D6­:áEÔËÅÂbS†‰Üýá ë5^ʸö– oEåH¹&@nµŸ^óðk|Þ “·Ôú[oÎV<:b´¶qrÿû³üÏ.ÇÒ’ñ®+Ä.ýüh{ 1íù˜öÕsØÄÌ€®x{th»Š:pРÜíSLO¾êÅæAMc•”bb‚7ô>±iãÆû†ÍŸFox¾ÈÈÈH¨›q­*%½æ[€ÛY¹Ô{ÄÀ)[Ä0˜C𠂇å=ˆÓ4y°DŸUS_ G¨J•¤Ûâ{KOöé÷ÿNõàÔâL…²J\ýæÈ9³jJ¾…¾ |ú¡þוó/\0)SÿµòDKs¥^«b‡K„KÊÈP};¿¹²%öCpó÷\33·Š¬^½Â—7mX:N¾•ED”÷Ñ,e›€ØéMõN+^†R$"ËÇ›õ“4yfzõä~ýû»¿¸6xèP÷ ¥Q‘)ê*Òþ™ê ÞBBœ:{Ö3Qwäpfõ?‡ËÉ ÅžØ|dˆªTÁ±åo÷½¬oÄöZ江ÿûsÚŠ„s'Œµw…‡ƒÌñò#]©çž+µºÁ‘å}¥¿ þåÔ†eŽø‹·K§œill\S$º÷xSŸ€eˉĕ£X§S“‡»ºÛ¬”:²`u‹S§NyˆJû ‘W74tqó`k֮ݽ{7š\­¦HãÐþ—³›Vð|HŦRãÛ$ÍRÈôÈ#÷˜Ùà#4ܧüñóK¦ 5«(J¶ÏÎÎ N¯ ¬ ØRÚ÷àÜÇOÜç‰@á˜u°zuk·$W©“♆®,O)mŠuº$€ö7¨MºçØ1•€”óçï?a¿ƒ±¢ædÚR[Ûå/ÊÊ*ãÜî)Â!1§O‹ÊÇ_à^Tß_`Wª Rá;…ü îèÑ£-!è(!sÏ;–"ÀH)#t½óæ„¿÷IÞ/+•|•ŽÕÛøüâC#A#+«°PÕ<Äý¡ÈÙƒ8pdrO wD5˜úÌ™×Ôô4Ï·²$mž…Å#£Õµ…'(¯´õ ­•ÕÖþ#”Š" .¥œÂ§Ý¾àüÈãÌÙ»a»v=D8R@6¼÷é¹g€Ð“ÂÖ=¾y™½³¶ìÅ ¦™™Ù“»MSvÁEØeq+öGDœxs8xÙ‡Ggó§#7´(-ã*Iý Éq¬»;æ™ “ V^Ê_ì²E ?ŸýXjϯùƒÍI¬;Ûo¿²c³cnݾà÷é…y HÖæÍ›'.L¸»—4'︕§wÑ ûãî‹’AM`rW¡P8©a)˜“ùé™ š‹ÏÏf0dAâÞÄo¨­ØG÷bns#Ú·Tñ”²²Ô–ÇWæºT•}ò»Óøí³•»ûI KK2V÷>»²Ú'e*V±ŠZš¾î¿ß¶L˜RX‘XøþtFàç×VàÐÒÏï–EfµA;Õl¨}úÅ¿zõJ³6Mð|MØÃ—ŸÊ²¾nö&GG/vÙ|â¹ß°2Ï!!‰˜á‡hš²I¬…ç–oÖõ)·õ†§YL›6mÅ‹Mjåó/kÜޱͤvsÉÅáÙ¿6I|˜œŽfRáÒ> ·L^J ±!çT¿ À54N^˜ò%Ü[ê;ÓOþ¯+ëíÓØÖKÒ<çƒODT¯/Ÿš%“ïÈmïŒù¤në™ëØÆ›ÏP(_/I=iúÖ5aÿ¬_¿=2¼¤úÔ¤×R_xr¸ò%ôÀ¸Y 㸛±8<̰™ †A·rr³Ê¦&ó^½|‰•QaaaØ>ôÅ,§ðÚò'‘/n žH:hè¼#Þ·rÙVEÊ<Ê$ïÑY—ÉŸyO.š]Û0b¨VX÷ÝOã?-£Ž?1x"ÆkàŸr·h§»=»P 8Ÿ^÷b « õGÆùêÙ_"Þ µÁæ_R¿I+]™WÂÏ?åè *xl‡W‹Ë`ØAµ:ÝbŸŽ÷)óÐI1/Ó>eNúùÜùÖÜPù!r›ÁƒÅ)Þ/oŽÂ.p7'¤¦ ¢,vÆ6ø_öž¿û¤~wtƒ’‡OÈÞìqæ¢A!k| ™uÂ5‡ªãÞ†£ïÞæF‚ù6µé•vp.¶E»³ó)–ÏÒÖ¶¡Wµjj |ïÞ½ Ü:Íœ9ób¡Æm»¦ˆøK—›lîL‚eös”ü¯óø9Ù;ÕNcbY»(äçϘ>ÝÜ%‘³`ŊˇVV[è×>†ï– ɾ¨qP?`!(•/6$öîÝûeY’ñ†š]­n*m.ï°Þ5÷¦ú/5懣345ïtpS;À̧¬ÌOÚª@ø—·TOQ¬7§bcSÔ¼Üæºn}:1Ç¿¹ñÛð³3p¸Ù÷ô>‡$r ߎÐþwÏ /žç\¤¦£ã¼ãá9×Ã+'JÁΪɞwµCåxØÐ¿:ªéÐÔü;¢°‚82ntt´Ïþ© Ý¢ê<Œ±ß}ðàY` öÝ}Œë„‰ /˜Y¬¨}âöeƒa£QFCq%ä 7®_œ‘Ü0U˜ÒÏÚȇì+û¡®® cÜ2·(Yä¸páq€èx¿ÚœüÓ‹*²~*|kÓB§²‚3gÌÈU]Ì“87OPµWlNn^RÚÒüÕûÃ#Í´æú[3Ùï˧K—ê 2ÿAó´Y³@$¾u¸¥Ñm«’¾³vjÕ¥àF¯à R÷¶Ÿƒ¯"Ô뮳ž ës&vIò‹J¼4Th_™Ð£DK+ù7¨ç «®Åîœ6”V-™äG>|K]>v̘HÌÊO“E'°\nܘ1e È“D{ ”e#[ËGª0yè,Ü?oé%_=+ÃÃk7vlafmk¼|Üÿûû¿úÇa3Ýî|1Ÿ¨ ØZîb.G»í„€/k Q‘7GìJw—\ûO<ðàJ&cß/9&HÁ‘D#ˈT"‰@¡ D9½p’/ h!8/„„þ8õï fàŒl-tpßO¸bó¯m2v6)µÜqælгCY¨åÁ¨ž¶”ë`=›ç‰s¢,` ˆ)Ò‚E"œå諈ÄþT䎢bœX­ÕXXLl,d įx@>ô¬ N$„õU<¼¼Q¡¿–‡HÅ@O[z¥gž…1ˆ~îÝA^ä#¢èØ‹½ý"· ƒ@bè¿÷–©§Á`nª:‡½¹Z3´„ùþêl[l‡)€ÎЕ´ñeó¾ï -BÔ¥ÎEÙnîbp½sÓ"R˜öÌ´8̶ڭÉGüÁÂöÁ±Ј/MÑÔÄ!|/ĸ|'vg‹p ‘Ž-ÆŸ0‡/BÓ×Êz NS³# ®P›ãbL7Œr8"³ynú*xɱBÖc`=±TðCˆ“(ü‡Dq…*ðÓ•ØPOŒHX„|:ˆÃvã©´5o%¨ÉAY ^‹‚r¥½pí¢µöÃæ¼ŠÌÓ£4]•@Åëê]x?ôæ2Q¡ŠQ‹¢ÅÃ.KkÎÁµÅ¦œ¶X(ýjµ½¶Ä>ØIC‰õQ‚ÃFâP,5.vaŽÔIImÿ£w’4ê (©ïK–æ@"‘Ô_HmÓóæt8Ëa‹Ä­À%Û@jÅ"ê§%õÕ… ¬ 6Oj[È mUSOÿŽÑ€v¢hØ¡LƒïdD=¡ñ±~?Ð2XJÈ^,ô†ÅÞÂÿE­MiØ[ü*Pº: øÛ¥Ä#‹ÖÐ^]ídèjjj3tŒmúúm¦Si=ݪԋ|…6ãys¹ÀÁaÛ@£Š ,6Õ䢘##`ÁB¾C æóˆdÝm1¾·4oUGÚø'ûÿ ˆ$0ü$b빞%BåN€*¥ÞŽÔ¶yþM?0#ÄäðaOŸ§AÓn-,๠!;NäÎ÷á|ÝÙ°;N29A Èpüq|!¸È¶#6æx#­Ák©Ó&æL:(œÂXë±¹nÒ,£s0¸º"¨ÀÕc¦%๩à˜|!YS ¹ O‡dS’mºÛ‰S4Up¤¼ õjÐjÍÿ= ™ÿ©'†J0Q€é!lFaö•Rãñ¸×V/×ÚÿÇyò Oí—ÛìéªdŠn¬Út™>°°>¨K5x¢× ¥µA×"h?Éð sP¿ø <6†Ù¶@Îhim®…ûE‘HÕ Q€$ øA'v#ÿ³$fdóX|M,¸¸Òá%ú¹þø~¼„óCE"1vBò#(ùÕ‚•›J¥i0€Øt ÈNíNlB§bsønJ`@ª31é4 &&O¦÷DLb§bb“ b‰ÿŸ·ÉNÄ&âi$‰ØD±'b“:»m‚ü‰[çP'ÂT‰°d¾'Â’;öHÙ™hd†tø©Ôž »!wÄÕ• ù£Â_ä2B ˜ j£¹|.[;#(ÁT@†nŒõÃAB!ä­(ø€P b$NÈ÷ƒ8Û™Àc†c€y„9"Þ˜íì\ÂÿÍ_Ô©Â&1&‰Æè”ö„@:ñ?†N[Ò ³yIÆ“¤)db8RÆŒtî°QQç^˘q|Nä-À F¥µÂãbQkÌ%#ˆÚ(X«\§Öޏ¢ÄAw#~šRÆÿÓHm¸–àHÚ¾›QD‰T2©rЖËLz.ÖºÈTàñÉÀ)‘ÒŒÎDù‹d“tèÔCâ%’H„HBø%jv+’£‹ (‰Û@2½'æ ºÊ`z*F—.˜BZƒJÆ÷D_¢œßàÖsIZ;t" •J–ˆB“„¯nEù%rù²7T›HÛwêbÈÒyK Ðz2q ä®fîO9žWÀA±ªg"õ)|&¶„¢0@à<æV 6‡‰Åì˜ù€³åvâfè†Ä#20Ãuë íóP` +¿˜Ì´µø¼E|o!ÈHa>V¦´¶—$¦íb"BÓ„8upL=£3ùèxi¢Š™_÷‰*ò딓,®ýš3cø·I Íš;áO%@Ò":˜ù$<¾;öŒ®€Õƒr¡S¿– t"Y"6F=Ú¥ zîx$:g4 ºi z;¸µAåö}u¢õKÐa}¨óÊRŠŽÖU£9üv¤v ¥íå­–tIð}‰WZÉJ—æH o±°ã˜ Æƒ8ÌÇ–ƒyÀƒƒcwb[7žÚÊp½¶{3?/M`œ·­O¸ $k«Ò•Õü@s6@¹D¡â"ƒ‰àÉDˆNb"¢Ó ‹Äb1a‹Ü*Q{/ ÐËe‰1c³Ý€ŒBlZçÓz(Y&o]/i]–ð »û1ùb1Ÿ+Ñ«µÊùŸ»£ª=P`Ž­«Í|Ì,Ry:~â»´‚Š`Y­ƒõ‘ØÆ  ͱR½ ÌÀDöx~`Æf¾÷} ©|­øBTKKŠ3¦§ÝÅ8‹P$¹s'ûHÛ·uUùUëU Ü¢° ŠâÉ”E@d ÓPL ±˜TÆBÕwh@<Ø“ ó"=á…M‰¿‰ÉîE˜4³³³±ë–š„np)›}eÁ¥ä. Æ™ …|bzˆ-YÇûw°…Px*¡Pú# *J܈€24“Iÿ“Øê¯¿­îEjÖ«±‘©«­‘‘•™ƒ™}P#v5ÙÌ- ÔŒ!»…¢˜D.ðS$B‘CNVüäH ÁÃL&‰g1H”F„HL* f0ƒ@'ýIÈõ€×߆\÷"µCÎÚÆÕÊÌÊÆÎ© ´‘ºA›l––m6Þ’ÕÀ‰’Åž¢LÖ‘ÿ-ÇÆ„XL‘L‡è(AˆL:•@ ³¼!‰@$ÿQÇÖ=¯¿îغ©e–ÆvF]bŒÜG“ÉÎ2%uXÐıy’Úà‡ª±çnMFüàX*5•NfÂt™È†Pé(DÄ#úÍÒzÀëo®{‘Úçh=ßÚf‘µ«­C¨£tƒ:ÙŒ- êyž<¾/×ñ‰ ¯¬UV4üò &OÆÓ)@šE„¨t:S€G%I(ú£9\xýmäu/R‡€êàjïh‹ÏÌ´ èQ»žlÖ–zmO7@ØM:ÉSqíwzŒ;Y±ð;¸£àI,*¨aˆÁ`QðxB§@,"L€It<Bÿ$îzÀëoã®{‘ÚqgaÓØhÝ-™ÈdâÿRšZhÛàP™ÊSY‡ýw F„ñp› fIjb™BdÑ(4„L%Á¬?êÚzÀëoC¬{‘Ú!fn±ØÌärV®f‹MÌÌL»ôpôn@'›Ñe*R½Y,TˆãƒŽÅáûb%{ ¸<œ¨í¹ÊQVpüD*‘AÁÓXx˜N!R „cK4 b!D<åO±¼þ6»©ˆVf6Ž]%v„î‰e3´L5«{¢{2AÌæ¢Žï-î1Ôdþß‚ö*@€X(Ï@H(“@DI4‹Š§2aÄ@Q: O…P % º3˜Lø£è믿¾îEê}ŽöÆ]A¯»Û²Y\¦ZÖÞø·p'+~w0‘ÐM&I…JŘ*DfPHJ#¡TøO⮼þ6#î,¬-º °¤îà&›¡ÿË‚[ [„ÝÕEÑ&+~mda2LÉL2žˆ@T…ÁD™ :‰€âá?Zºö€×ßF[÷"uD›™QW¥©»åaÙ - Ú°Âñb(ÃÞué1Ìdúß¡’$ ¢ Ì`€žQ©d„Ä¢“!èO¬¼þ6̺©#ÌÙY8˜u…³î„e³ôÄ™¯ k&ëàÿШ¢¢ &¦R‰J 03‰x•ÁTÚ-O{Àëo­{‘:ÍÑÖÔ¨k¤u·$'›©ÿ#Ò¼öÄ$ö@¹ôÁWQa'+~«T…XT28üÃb)$˜I€è‰Á$ðD2á–ªÝóúë¥j·"ýP,H TW{[³.WæÈÝ%o²\¦2U€Âl{vWZ°Š(8À _$Âöµèy½*#,~ë>?•ˆ'Òˆ " Å“‰(B#˜4 …F'±h0žöGïówÏë¯ßçïV¤<Ÿ½±«‰¥™‘ë\#Ë.ï½vBÙL.{Ñê±êÕÛ݇ Ûó{þ2â·îù#dˆLG™0BbàQ„Œg",2p½0 Ï$Rþèí‰ðúë÷ü»égð™[Xwåû(Ý=;'›±e‡¯;ÊÉ…þ’—´ø8`ED‚AõaÃ=w~²bâwðG Ш,<&ÑXt:ÁÓ˜4*ãQ ¥³ÈÄ?‰¿ðúÛøë^¤_Ÿ‘…UWìîq:Ù¬ýÛíØ\ÉÃOÿ…²"ã·ŠŠgÀ,< "¡0“Å`Ñ™"Ì ébýÙ*·¼þzñÑ­HQhic2¿«'Oº»I!›¡€ØÎüɈ=Yñð[Ï Ð :…ÈDO¦Á˜Ha (xè4P€ÿQìõ€×_¥[‘Ú±7·Ë›c´n_Ü‘ÉȲ=m'j¯;Є8ž­ b÷üÉÁÐcàµnõÿûëg?îv#AS‡-oºÿŒL„™ Ì€ð(B <@…˜T”ΠÓÉ,2ÿŸf ˜‹qØ6ˆ¸™guº[-ÜÒ=^Z{B"W‘«$Û©³yØ»±Ø•ݯËh1Y!3¸Ã«…bˆ  "ÝG©õ@º?V°0•43ÕnÄ` AA—› LøÉ âˆx<gé-^³òF9TØá•8Ÿsذ§¾ è)y(BKrI ±Õf©qÄ|ìË[ >WÌÞ"| EàCKÄÂ>yà«éS‹½…< âˆP]ÐiÅlé®u­{`!l‘€ùëà¤{_hñø"Ál®VëaØîX²´´déÀCÅßß H¶\jÛx{ÅTˆbľÕÅùó½q0 -DY€*¦·Åv#„xˆ6ðO\>Âfùc'¼yØn;X|£B®HúÊ*Š›c툳DE@©ÖMô88[o&06ÎQžÅA"œ;#r—n¯‡õ2Ç„°ogÎÄ%â‹CÙàº×¶«±O+5 ls(uHŒÉ-Äñ% ™„õÇaï\·÷ÓêJûïJ"mÏÚ»óØæR€&ÐÒ—Íáà˜(¶åË›£-q‹,æÚ8:àŒ¬p‹Œì쌬œtAK±;\E}P)6WÀÁ»/¶5OìInefg2´72¶°´pp„7·p°6³·Ç™ÛØáŒp¶Fv&Ž–Fv8[G;[{3-œ=Šöд,É ±”E2ÁÚÕv£*âqœ;䃂хQ¶8'0ed<»t•¾ ÜjJ]›…-–iHo´½ÒÜÕ°jà,x°–ŽBM ž'˜ÞÛ˜0g³qsŸ/ÔÀóEb¬¹•O$ðš˜ÖŽöF8©fÒɺp ’—÷`IîÉ𴽡up%]ä:ݿߊE§ŽŽ¨5 ©ürV ¾þûF{?Qé™mâa›r~?nÃùsÛÖ 'y¹«÷¿ÔþNñ§M0áÃ@ .¿¾PÜ$k¾¸urH†ü üžt°AàóFqx ÌU`³L0iNñP7H²‹:‡ï‹ g´Ä(¶o:'qEËŸw\•/¥R 2Š©0¦¢L!³`$Ù„áiÝK¢}ŸõØ€iô>‚°˜t ‘LgiL2žLÇAJ3O†©¾}0åe£M€Qšä5…HtOC,B'(D„´Ó†!ö<¨lÔ©xžÂÄÃd”B@YÎQ&"QIxÄ$2¡Ÿ©» „ ºA}eãBf" ÅDP:žN!Xx*ƒJ¦3™4:Œ§2Fß¹ðy,¶›«*£‘(d…D'¡4"“Á,‰“ "ЋF%!?3ÉÊb2`L$°`“Œý1:&¡ aÚ ~lIS™ Œ%éØvK :ƒFE1ÀB ¡¶“f#²…$°8‹QITˆ°Xt˜Ì ÛÀ,O§}—ów2šƒÈD&‹‚‡H$°/”°$:¦“ ò4âyCO&²èt„¤–‹|+O‚Q"“B"²¾c²u·LÙ¨3 *a‘(dlm!ã A¦3`bbXDP z@Ž+VaÈè ¨4 ƒLÀƒÜ˜Á`÷TaA“–B&Xíä%û=ÉNŸ ã)BITž€ÿÿX»Úå8vÝø.É ð ÿäU\$;G–T’}“óöiìÊÖ~ézv”RÙ¥²kÙKht“ŽæI`fä, ú¬ÿñ_‡†÷'ÝßzÈ™­& ”ÆTË“%K4ÅЯ§˽íÏa*†€, “0r aSzÆÕ2:¼ŠýØ;4´f ˜MAœ ÷A–ÊÃÙ 5˜;6î7'þ±ñ®1û}É‚å`µä@i‚ôeİ*FhR?4=x®ß>ŽÖx~¶Gý jk-Ì$fÚºåÞsÖË@<„Õ"å[¨Pv&?>ƒ:ÝçͲhú‹FUÈšÚ(¥'«·PÝ$| 3†à'E£ÖÈÔU*âK$“[˜>¹›ê÷ŸÀã!k{¦¸j OšT#*»Áù¦o.…ÿ &§ s™RŠ<Ê"-ÿ-ž·0ÿ}þ#äB¢§¾TP+ª|^$Š¿>$õ[~Ö¿ ¦·+¿¾óI—ÍÞÕ³wȽ…nVŽ_aê÷ÝѲfë-焸0PHk ãšQ™eÉÐß-ž˜y~rª¸£yS¶´LPDSŽ]kÓÁȵ‚Áj<àñ3wusM'½‡pJk­P²Éª‘xˆž´mÿ G®w´Q/µ…ˆªrÙ îã ‚Y}¤f'mo˜Û·­¡<)Ô0g™Âƒ:¯nýôBb~ÉÞŸ?ž¶Ñ%R[h±šç ¥dN=‚Ò¥œ!mÁÁˆŒ©Aò=èTq§øØX:Ǥ7`¶¨áàƒ~`Æ*AÌÎɘûº ê{<…û“¨ü£Trbáj[êø±.\ØØõãPtÚdTB%Œ€ iÿ ú¡ZƘbçêÿ#Uˆý †ŒÈŸÉ1j.\0†-ßÂ9Ôü=`Q`°ŠX;“„xS •;WiW`~´vÐ Bd€ƒ·KTC 6Ø>â®^?Ñ« %cš`= ‡ ‚n®5Á¬yv”{ï’x .ˆ… Ù€xTXÀDTVje 7*¯ÝÈê••;ÎÖ"xœK&™¡ªýÀÃï» DDn ‡çP¨tS…ržÔßÇßȸo/{à Á»th£:jÍTµÄÙcÌ’oÀ=ÿ<Žè®øŒ <Ye¡rpÖzhK¸ÑE|Ꭿ¨ÙÛ?v „ kí%$B)†Í-®"9Ü(6¯(«@6‹ *áæaÄ8Rè‚ì[:ò8Ÿ[\^åÀ(?¨-t ögˆM“’AY°úRç5ØVŠ>¬ËW*cNåi¾HÁ9G¡ÅÞà—@Ç‘=HAK#¶Ÿ陘l&ÄÊ &zÕ¥?¯|í)Mƒ‚™Œ*ZѰXš‰&Kt‰ôúãéeüe{ ’*¼¯?1(lM…'Ž­i”®àþ¼ñÔ –uï W3)Zm±¢oÔF·S¨?-Ó|X2[WÄ8¿.¤0Œ#âÒÖ†zv¦4÷‰™‚Äl(À¨þq4˜B‚¡/šsæ(5žA ¡=_¾×AÚá‘ÑÝヅ8S^­ŸB¼~:[gj.gã´Ù _oT³q[P+/Áö'QX’ ”! c)#æ Ï*[×5f¼D:läïAƒyGYëAUŒš\èB³£‡©û’éåýxùö×_ òOHj ‰eÖÒj—«ú C"ÙÅÏà~>î U`œÊœÆ!†ª!°?ø¯³ÀøŸñÍ«<ŒÕ¿ìqS2¯eÿÍ yB=J`?€ûJªM½ò×qd†ÃG†þ÷O÷èÀ=~ÿ†_üMD÷ƒ.PúŒ°£ˆˆVÛÊœyNèìhdö èæ%¦s1X,¸ÜR†F –˜–­@e@J­wy°ñx?@qסP¡”Z)©ª)p ðôüÏýí l¼¦Âdy¶¢¢Ó¨%žßÛ?ÚÐÏL‡„p\  —¢ -šà/{° ïX[…Éyû± ªº(Ûhj5Á—F9hç‚õ“óÚã¯Jü2õ‹¿ð~°Rb×û#JÈÒ„«³÷¥y™ƒ}bÔæèTâã÷&³„šfV‹ëß9q?Hm³ÔªmŒÒ}Ç)–ÔÅ2èT@zœÏA<7wtTưe=Ö¨#éˆ_8 ©IGëíãËügo棜*ù:6º6¬×î©6³ ‘Ï'¡°±nŸ72“VÂ@‚W±œ!ÛŒÝÁΚG4?}ÿ²v°Kã"*,´Þ´²¬w„yd¢±nÀßéö²ƒ ¡¢´‚™W·4"Ì:3L§¶L¨ïXO ÊÉiȦ¬n´F+TÆtpôCt1Ä÷ö7V³‹ÆèÄ¬Õ — øÓìÐ 6³_Þ›ÿÚPƒ |ñòíš}t†¡µâÏ~$ˆƒ“ö?Ï-(•0Sk%[µàï¡!’i…@„^«ëìÜ‚ÒZHwh´ÊÈsÂWSf¼ÚÇ-3A©…4uÌVQygU¹åʺV9›šÝÜBä?Òð„交4ß‹¨±¢¤åO¸åõáçËóŽùÏú…¯Ý· N;Ç <è`³ûýÒ˜“•%Tû˜ÖÈ76ï„Úåwìõß§ýøª;×–®àŠŸ_-¾[½rIëi€‰¹§–òÜÖ•+¼`ܪµº Õûá¦]Ê„˜Ó†ï0®ð~~ÞäëÞª2C„ÁþBd4_^O¤¦ã èµq1¹FõÍjô%“?‰ÙÑ…[[½¶z ôk‹vg¯ k2Fl¡,ô$tq‹è‹ª©ž”´S°ÃŠÒ.8P'â}šB.O/x R'B7û¶uÙà ¬³äá; tm6ß7JÐSþ¦5öK°û9¯à B–¬ñ¬Á¯Ú‚dlLÒÛ’ÒÜö%Î+À™à~›Ed›õÝ_)P f¾Œk.ï!Á3 ,1q‹ }`œŒœ3»¦]¿ê‰ãù´]ýœ`´2}át¬V¦uHÄ9Á'¼®#]EÇ=K¨×` i U‰²À'ÀÉÁn i¨od]‚ù^Â~´°€BÅÚÛЕ¦×G[V7JY¯ÑîY®½‚«¾IÍ(Q¥Áu+Š<7üÀQÀ½*Ñ5Ü«ýØÇV†YCN‰ß!0D¤ j¢L%hšë${ýu äñéiƒ80ˆq6DJâl-”FÄ0iÌ›ˆ?e_’ù‘Qc'®£Pkæâµ³ïp¥v m7c!á2kñEbD$I¡jV ôr´òG`Ì㛡®®SŒ ½¡ŶÖP°¤&:vêø =|9;ÝÒ£ó# `YAFMË=û©ßPM N'ûØ;ãœ#ÀG–¾jP¶­Š[ŠPh°›~6dœ ø±îü¶’à9N-…b4Ø¥šç@ ©éÛ3ÃOàl,ûçí/²žiˆÀæ£ò+Äz€Ç†€x[Èú}¬f_Ä–Ä•†1:@‡S^¾Êiñð cŽß|q’ÖàËFÓBÓfKc@¤Í·s ÷—9o> ÌŠްdø t“áújóÍë¤ÏOÏ?·ž¥¸8LFµSª˜Î\s ˆÃ\÷ õñޱQ’_tÁRì ‰h-0¯µ@5»ô %ÈióIù ”¬a.Ê#’L¡g™ ËÐÈñàuw,qFr˔ʣøeË¥Zö÷ûÀ€e¶sŒ±T×H¦%Õd†t£¤‚ª_R”YN@ž^v Ë„JàŒ¡Æbuú>ôTÅ´ÏvL›Ý×åkš}ëí¥^|f CŠ„kóÍÇ¥PÿÄ[Åßzòô-ÀÈíÂeqì¢9ÝM †lõV øw{èLž^m@«s ÷Ò̘´.5Dáö×Û~úá#ëáçë×û¼–—*z0á¹;Œ–¯q+É#­žldØóöS¯*ÈàÕ!óâ‚5´˜aKPÊxoÿÏqŽÁmA¦Rˆþs­Ì ÁÃÍç)o•¿1ž¿=Þq88î'£Ëì°×ÉOV@Ö…X…~áâ×õK;†kX‹9~ˆh08 ŠŸké(ztŽãK8÷Ço¿Z¡EÖD!ïVAÁH²ü&ž[¿R|<ž{Êà‡ ×¹Sg†øê[ÒUó-Èçñãëg a ¡èP®`ð#8Q“?µ€ïQAo7 ·®Á}9 R¢åæŸNBr-™^õ3*O[w‰˜0A‡f¨Ê ®|8øKº|É$”[˜÷¦Ý-\€@o¯C* Rc#(+ü$±q wëQá0sŒ 7@ÿ3u|mp_þêßû¸…¹Qû|8¼Ä, ƒšÿVCñ…°ÖCÙU} ÖßYZB‘#µ"_F,EøáÑ/;øúÿ™…R$Èj.¥øi?%PÌ軯XÚ ÈÏfæÈ¡ã•z‚Cr¢¶ cjƒ’¥ròžÌ<¡€áÏÒŒá‹ï¡øö*†¸S‹6í¤ÐÝ1o§¤FËK£0hõÇ\*jñ§²Þ›ßºãrÞ~Ðnr6õêækA¨ÏË×ZC„~-g·Ûö’pþrïϵñTûÅVô³dƒ-^„Š™¤3B/¾í‘ÿúÔ=4çÂýsÂ?‹–oJ0 \‚qûôÁ A Ö·§DÞ–üþmã²ðLjҠÃbô4¬Ö„¢ïÃ̬5$Þ)â÷¿? ·”ŒK/)µ•¶%‰!ð[ô¶*ôk)úûF¸ó7ÔÿçÓ Ûd’0gŠÌ¡qGhXT©mW¢ß>4T¿È×§q‰4s¦J½-PK©¹@”hÄdÙìÚÎ6¯l^¢ êWÊð ¨Öt5?ÖW€I‰§([û% æÂÈwhE|(ŒÐ×Ó8Å8œNþúíaWg€4³ ߆Æì»DÎÝâ@±Êo u äDñm\‘WŽþÞLT¤Õ’V­ªµö2E?†{Óö j¬šsÊa´Á3kÈ] ®¿6 *l凈[µò%àÊ]‡AªÔæÆÒ÷Ë ˜ ÑB»1u{ÃÝÔ=”Œî­&#§¾\£Ã+^"훲©uÅXõ¥Ò@À-,„ÊXö‘ßÊNQ6j—«´‚º·”¨@!ƒ`›„ꛋ:,ò%ÎF†}‡à÷Z…Ÿf Éb¦K ½·<ê0ɲ-Ò¿-˜³”éjzžÇËÆÃ¶—HHª@©•?Ý’ÁxöJõÇq}Qá*«^Æã_ûb›©ÏŠªÛg1Z=æâÏ•AЮê÷1\¡Œ==>ü³+ºÃFM1ÖY õcDñÐo¸ÂzzÚ5xÈ›fìWº‰¯ÈPh~‡HÏÄÁHßLÆ ÎVwy‰Ó¬Á/û5®µC™ÙJ¨KZ)×D´yqþªC¨yðGÜ!Tœ_)Ç`‹ü’_m:‹ïVö¢N'|mBиª{N±C¯Ô`óâùÅöVZðå@žVØ€%hºûëãkA"QL+—S˜W…Ö¥V‚AÖ@Êå¯s-͉¨D>ƒ8<ÁðÕsgWoPT§®cöƒ·^Y<›–Ÿ¿«b—P{‰´‚@6~’ ‚+ßI‘YJƒÓÉíg/¿±/BßÙ×’ýb¡Ø›MP..qv³N…º•Â@uШÑwvT¡îbe\}‚uš«±¹Ì‡A÷Ç™rDh('Åf¾ÄÚ¥Ä\á ©…ê7Ä”¤­ÈB $ŽÛÿ±÷ìÏmÛH÷çþ¬úÍ5ÎXÁ7Ä3i’¦™ËÓ¸s×ét4 Új(Q%;¾›ûß¿]€”H‰@JM_v;±EØÅ.°`±[³Š•Ç\ÛI>‚ĉE`i„ÕB/rð’§ÉY ¶Ãðë2H§v²…9¦ôÄ.ž¥Àò À vï›[øX®'àŸogé©Dš¬Õ¯yÆÊ•-ò‹iä]üýò‹­3^>4ví‘õ$c¢£ó ËÞ1oäURï|<]TFîi.ÑyÌ'çüã!üYfß³ó3ƒeu™ SKÀ׈(KÏeþ3ñ´,( jw>‹i„©ùš:—×&ä›sxšÆÅ—l-3?éauì í²)Ïe7þ K‘öP¾-²ÂÆg‹kc)ª˜µØuãvyÄóbNAc€ Þ´ ŽaŒ×¸¬ g,Æ LYùйáóG êËÐyžÓ+[ýtP|¹^–+¢É”sgmI×{.7Z§iå–-ªîr0`yB¨|°-|^†1TJ%¶ÜÀ^ vÁ¯öÀ²´|‚ÀG«‚ŸDQµ¼À·OŸ.ž¾úæÅå‹÷:Â;BµåPÛ§pî¤m­ò0º•0ì¨[Âõ€º•Éëè°BB]\d·Ðk«v™)ë‚uu@-Š.¢ñÀ²?@v/öÒXÇÊ](áiœÎ nu2+ DnRÐ8Ô·E^ޤם¾}ÿôýÙÌgf•o&!LCߢvä ‚o¶èí»Ñ›oÞu…+`n¸xAÉI,êØûÅùÒ êr½Òº “NÅá»LA×ÒyÅq\¼XL|Pظ/ÀÜ *@~xûÏ·ïþõv„Ûï0í×›Ê4È"qÕcÒIèÛl<‰ç1Ó†¼ôÊ‘ÁñYv9f2m3XbL¤ÇìܘÍH o÷+ÑøUËTºXÓq¥/žòÅØx>òð`Þ´pÏ 1ƒ,í N#›…‚–½ótdŒ‘iìÓñyPhP€f÷¹ Ê D“Àõ8]xð PœÖ ö¬ŸU§Õ/×+›T“¼‚5%R¯/Äú‘mÊÊ׋Åìl8¼½½°ìÓÝŸ²ùÕp7þýýå›×°°LãrN§¹(E@ÓáðÅÛžQ]Ñ·¶X̗°/‚/ö•7lÁp¯Jü4I§ù“†nVòmÑ4&üšðˆhÛç¿.Ç7OzϤÖè_âÆ\©_dQùò#ÜÌùâÉ—ßõ ü»ÿÃÓþ³lêë¤VúyõâI¸~G‚¹’ÒM–)Ú=—B¨>â ±QTQ†øeȼ?« Ö NŒ§¯ÎŒ •Q.ÆÆE9¸6>ˆ5i|7Nùã¡„ù%ˆäéÇr?™Fù Îóž1ç铞¨¸’_s¾è¸™Y  Òrç­úÍ/ô†Ê§…þå×%È¿ˆâ7ò½ÙÝ´ØrÌ7ß®à º 5õQQÅ5þï€r ¦èþv«7QgýßVìß ÐR¼{€‰ÖÞã pøä‘hs J3»=ˆèm9Âï9V‚ï›I[êN-ÒC¡'å²+ÔfizÉ"kÒp†åÍYQbáøSFj¡]€þªn‰éJç•þe¹íÏS¬ÊƒIù¤göÄçe¬ø äy¼ØàA@Y@èZ üÌp½Ù§G‚†¸ fóì˜t¢¤U¯l^tØOy/™—Oä[Æ µâ=¹ßvcOÅ(sTíp‰ÅÁzçÖÀ„E}#XZ(Fy,QlüïÒd©mþK ™ƒe/Ïp*ö1~Q5ÀŒºl*ÞŠ=ÏnÉÊŠFyQaË´òƒÅׇ4h`–F]Õz>CÇSI€ zÅ‹aÖÍÆ>fÐ.¯õñžã1[w“ëôC§0ñ½Z_ÏaËŽ>,æË³Çíé­t¼œcœHoÝ»¸x\ëånsWÒò¬r¶Nr«Fr«%Í›1‘c| oéÐê*Í"šÖ{y)ŸéŒ¨â¿@¨¯ì|ÌxƹãrÜŸ—Ì(¿]?êm¨’³¤ÉæóÒWÌ×´©6Éï¦ñ °øp¾bBm¥m2&Ÿ¥ãEDç+AÑŸdÿéc}³~T¼8“ÊŒò|®ap}™)ª·E(¥àßû¥§úà俨ÞÒ›KŒrüFÃ>ÿæô›oNý¯® ÊqVÜíÓØòD¸¤Jí±×/Ïš9ð† #û[͘r½­¹ºž£ÍC-æìˬ,ÔŪ'ײ–†ƒ51“¸&™Ó«‰\ו§ 'y¥’c*|”¢¾Ÿâ•vÓ¬wŽì'Å2)ƒå(÷wj9û;µœz§Õfà3Ïbžç`|ž=N@ð&Æhôòâûw—ï,±YVîr޾V«X 1W˜«XQÞëXˆy ļ.lðúúl˜Æé’qãéâÑzƒÏiU7¯6vY†Ííä†Ë?® ÷Vd # ~£îW×Ñ„ŠÑ„&½¯Óõ@Å›Å@sa?à̾€Á¼›¡™%<9bÀÄ¥ÖÜEÛüî6›ƒŒzVJÑÒhn$á%­‰¯Àië¹Ø'û¯‰s?ݳ6Ò2nK¸>xˆJëD|~ ƒy)ÔÅäÃMN: Qí=hb1‹Ï„¦¥@ÓÚƒ&ÞVüLhÚ 4í=h §ïä³ ©P¥Ž³M´°£æi£Õ°peœn=•Ëš`í¡)”±ãîãÀ5?b5“ß®mPm‡¯BG;Þ|Åi•œ1k|›Å¡ˆìÛ'1&¼Â.pü=YΕ#Y D®B[;Aýæ(”¦6¦Ö<Î&ÒX>4.2Q¢)G£[^dÌÆEÊiÎqHù]Eô-£ˆ3C–Vż¼•¾wzÇ5wkØÊ«ÀÊi&No°šÑh~y!Ò‡XjcÆÃa; *Çí⸠áZí8†Ÿà¾ŽiZ2¬õ0ºÀݧ Š$/'K[Û„Ä+¶>fϰ1efl;žPàx¦éÇNŠPˆ‹ñtó(]ÝqhRûiXî1¦‘iq#ß,? -""^óžb×ÚËØU¨$wŸJÊÿ"ÔÒ&–Bɹî^b•yªZ®…¤w*Ëݧ²DЧÂ|è]¡g\¿‹ôP(7h/=~øðmgÑ¡P?n¸ÂëÛòk#&§{ô>¼Zªý1»‚%Ø5›ƒÃËÀàÓe §PPž©7¸U*€N£Üa%á碉fGù2-4›‹+q–jSK¡,=²×£(³Aœ]ˆÄgÚh*Ô¯·Ï?›äW£Ò”í‚æœÿºäùB³µ¸9 ;¹ñ€æT“ }ï5ëû]?š6zt·àºsO:µªÐÇž£`hé&þ‰ªÐ²žû§b¨Bk{ž‚¡ÂƒI(Þã¬U=¬ÚÞóăƒæÓïÎ[…ùâÚ¼-–íç`­ÂÈñÂ{Ö‚û¡°–|SÁZñJ¹d?[}…Áâ“{¶•ö’oi±U®ÖÏÁU…qãÛ÷\*)Œ&ßéà›ú 3ÄwÛù¦ß•¾é8ÿÿÌy¼0^½ëêªú ³Â÷önEðݦo–$9×5o¯ñNŠ6&‡ßeƒÁWhh?èÆÄ7ðñAÖÈ5æôÖøðìÃ+q¯º='úØU›JyœGñ¤*‘M.-2tì5mó@¡ó·°Íalšƒ–¢ÔšîpJ3 ¿Åp€i¹®€m[ I¡áë·kŽH”Äk#Ý… ì‚!P¨Œ`ÿQ,ÁÍTíÑ(ÔJàvBumð?­ôÍØ5‘–Æ ÝÈs|0ÓdXéÒ‰)%·=*¯ôoÇmèŽ@!ýƒ.Ò?PHÿ èõÒ!`êkjzàQ¸&–£ö™…ìâ(I\ßñ)e1&D’´Ã[!â°þÁCC>y-Ù€_€|¿ÉÆL{¦)K¶½œÿuÔ0z÷¤XZ¡ ¯€>¯EœX%D¡|(Czºã :)4;LP¡Br¬©£†jŒ…z¸Éƒõ÷-'I¨P¡Õ…x ‰Úgáǭ̨P!ÐCGçüý¡ñ*1î²¥qKa¦/2C8ð^‰ÈÊÛ§¢Ay0^ÜðùÝâSôð4 †ëyeF~-SfDìèlŽÁ"­Ñ ò ÝzZÈ·3šC…º»¨‹P¡. uñy4AyE¾ÔÇ(TVÒv§Á…2 ÀV[(ôE¨Ö[ÆÞ&òH‹ßOUs¿ª€ïÛO¢ˆº‡ï5¦M'-°IÝlõýq§1-Å­.t³ÚÚñÞà“UÌñ.ç}wxEü솲[@-±Ì2¸‹2*.*Õš)ö¨N z%½¸‹ÒøH#¦5z­Âv¶sÿ- oƽs>]NŒ‘hhÍšb–À2 l6Fͦ&D}-é0¡1tv´ŽÝ‰Ù%èü—⊥Hª——·õVxn <¨Ñùs¼o".—Ÿ=FçFÝgã•Û²”‰íG»!bGÛ2¶ëH*7Bâ3ÜYo3ƒkº³íBÚsg¥ñ®J×Å¥Ž2ë°¸Z…®©——hj¬^Ù1‘e+œÆË45òt‘ŒcÅq‡5·VTíç£Þu½+R,ŵ2ì¾×7Ïð–L«ù[¹æ('‹zÿD~isf÷ì)®ñlÑÞØî¦#:Ë€‘†ý|€”hožï¦`µÝI„$¥Ð>;`²V„Ú™íÔI½¾ú\Þ&ÅûÏ÷™®þ<™®¶îïºÂüÏuÕ”ÿ©Ô ÏDš‹ïVÕÖÛg~ÒÉÿdù>ñëùŸˆïx÷ùŸîó?ýó?m­:Cæ,1Vi)ïó<ÝçyºÏótŸçéï—çiwf¦cä}ú#æy:ò¸V'Zͽ}7æ)»Oþô‡Nþ´×8?nÚ§|9™€Ü«æcúz¶Œút±˜Q|àÌ1ÊICÏ7ɪ›=JÇäéšI zãÆ€¸Æg)Ó“5°Ê.30wk­‘Ð_30Ç)@xƒ—Ç2Ë”(îRÁL¡iŸeiJ£LîÝ€ö¤Ws:þú„³†誙w1Ÿ GT¸‘ÂÙ…øh£ž]K¯ð섆™>¡3àpËò=øºðCëcý ŸTb í SyW8'÷¶Ày‹Áȯ)®Œñ•oM3Æ­ž‚Oø—”seÑžÆ&ÅИbA-?<µ<ïÔ±áwh ãs7,«¶Pq9µ=÷Ô ÜS;´¨Ø»QÁó‡: øÔÀ-®ùDr±² ¶Ib:§! `Ù§Ä" 4œýh<]²± ¬{45(¶”9ܶQ¢œ×œè¸ûѹ˜‹½2 „ŒÙ¼ØVkƈp² œ¼ý8mÏÜf„æüj™Òù.„lß„\3T#ä×Z£Ó€Æ¾‰b;>NÇöVe+~I1µq:ÍÁ^e½óŸ@æ.èüŠ/¤ÏQîס\ÉFå.£ø€²öç••Rö\HŸÍòq`†c@ŽÈ*žDE'kÐ;%Û2ôE¦0ÏáóŽy«³öšEîjZðÚ* ¼ þ±(wF“ˆùaä¹–PâqÏqáA`33p’(âVÓê­WðÖkð`ØàÝëÐ êáÅñQziÍeú4`‰2} »¥:òì¼ùKNQ)‘·= ÷õ1DÙb‘MÄž|B˜ÇXrTM k‡&Àj‚UQv-´%ËAÊ8°B“Q?b`k1‹‚ôs¨% ‡ÀDfì¨ÊX «‰ïÁ1>¸ÑÝ’ m s@׃ÑeG–åøQâ²ÀŒBÇ ó=Ê)1É XMLxÎS¾à²‰NZ2¢-qaDdº$ i€êá ‰ Ð,‹,¬ã|ùe€O;´%Ê! ð`™¦ØXó &¶K\\—Û¦Ñc2@V£‡,ÓØê%Ë^ZzÊmÉsRö­À Ý0'Üvì˜rNÜÀ }æÙiÆGUÊjXÈ ¼ŠÙy3ƒÿôÔnËkyúU5•12z£ 8‘;N©ž‹FœϹ ÿgSq&U»àŸQšÅ¡³6Ñ2¾¡þF.‹mñ½%Æ‹îÖ÷BîŒrÓØJÀz÷i…”ÙžÉc+ŠÚ‰ã&"§F6Mï þi&Â×qzl>¾áó|`lï•‹}r,L ^½ç苯(Œ³%ô3• hŒ×Tq\c™ãµ‘Ž  ŸÂüÇ7c&ãîV=HòÈДëùP©^—LÜÎÀàÉâ>Ð-Í«U _2Ï&õ´‚gâÚÆq­Ã‡ZÔŽ7®6_ âuhWõÎÀ_èâÊÞØ†€£¿oIó¦û¨þÍ„™®ÉѪ]—% !7½ÁÎÀá GŒÏ:;üþ‡ ® ÁûÄ% ëÛĹ¿ÿñYî`´.V¡0ò!¬†Fäö %´õ|o ©ÞçRÍ¡zpÉðV@Ö©k†á)&œê…!xÇ2½„ŸsÓ7\î&‘g'4NüKêà‹UÐ8z{ÀsvʼnˆGLiT¿×&g¹üeÕ¡nÃóžeúî)±ý=ðât™/jäöÁåä‘pDIà†à™Ü!a†8Ø´¹àëv“wŠÿ›0^Ràùâþç¯ø³ûþhdNãëÑH¤-¿äˆÆ=òß´-sãþŸçúî½üÿ?7tn4óÛxòåOÂrùÉè‰ §FoÇÌF½ó„ZÀÚΨg2Ó=°¥ÝÐrt0Åt?Ÿ–ÝÎy¾LÕ󨧱c7‘^ø[&¨ ^-g¶c­:þòçG÷+úðõ_>@g ¬pÌ€æÞh„…`æyý›ŽY±ÿÄý_ß½·ÿ>ËQ0l‹¹àaä“À',‰0´'b÷+äo¸þÓ,¢i.öÿŸ½+„j{ã£$T(z½’š,%I³/d^Y¢,ÉT¤ÂÌ;ŒÝ0vRÒ¦ˆVO´QI%•"‘ŠgK%‰ž¼©xòÚ$ÿ;c†±ÅôÆ[þo3÷œ{¿ïœï|ß9çžs¾ß÷½>ÿ÷$ƒïëÿÏ>r%²‘ÿÿÐÿß¨ËøDNþ"'‘“¿ÈÉÿ¿çä/\ç÷Á!þ9Nþ—¤«Ž]¨‘‚׎;‡ëEµ{hùŽ¢ÿT *Íb—?Q±žÉi·Ìx»sÃQ-hrЋÊj “Á6N¨pæø©¬ì‚ªˆa²C(¡PB>Ðk BîLAȰËß§#˜îß§=˜^Úƒ–ö *œ^Ëà•¤žl*v4~:4šÀtèütè<:té8ðÓqàÑq˜Ž?éxñÓñâÑA…ü£¡BúÙÉwƒð‰±kP’†^ÈЃÖé1EH)æÃø|hæ ÝÌ;ÄÐ5ݲ£P —ú\iíoéFjx‡G0 KÁ€4@8I°:Ñ(, IÁôxàÁ8rhö¯=Õ÷Þîß°ÿÑwEBX[#ßÀFCóƒ>û?$B´ÿ+Úÿù/îÿpФºW6áKÙýšh3H´$Ú m‰ŸEˆÏ"ÄçÿÚ2.ÿt\¸ÏC"3<ù^,fþdONßÂï½ÅMáM»€ÞÐ;›¾2IŸ­—]êÔ7èçÀ*“ ~h‰2i‰À-S&-ø!Se’©À‘•Id²S&ÙõÄÕâ Å\uw¥0nÚp$[ᾎ op>{„µ¡¡ß—IñÐéöÕå‚LÃ}4oG]e"V­vôc;4¢s¼b¡Þ‘çÛß·;šiwËsŠÞUf¸q™õŠùEqäyÜvýÕç¿àÅöâ¹âò É\'bAÊMÉr“+÷ ÎÕßr”ì @L §G {FPžN±W»Øp.„E¹+XjH¶^«¼¨dÀ‹Ñ;þaŸÌoqæù‚ÿ‰ö‚™& œ)¼ÚsÞŠýøbr†à ˆ–#©å€Zþ=­Ó%þż-È^øªÝ©Âi®žqYp¯„ÕÒ‚¸7 Ï®úô¦åôÅçså¢úÚ¤úÚx'ÝØn0p`á5{O þ¨ÆÂá8²Üœ¹Ä9ßGN«,(ÞŽý4‹8RFÙ 0ÝnpÄtá¶Ô·cP ÉŠÀ‘´"ð/VöŒ“= ÂU…ÞM?bj½=z ªeìLá*ÙðKˆQ9ÑT9Ãí¸»gü¶9@–5¤Ï Pßdáj…“áCñõÙA‘z©_†p8‚~ º{s‡×¹r’ºRFr>ßßÈ„ÛbýÕCZÁrc»òöyûøHˆ#}$Í•>Â#„!¤Oì0®”x—ÂïÁ9‹ˆÌ¸Âå8€öË™7q2ÈdtŸM0oDÆ Ó‘TBÓ¿dEfà…áêr!7ÌTo®ýóGh½†¬7ÈZ YO8Ä™P&ñ’9©Þ#½$Ä4P–p׊Asû +]i#¶èfÀðr6`°‹]zë¹EˆcŽÓHš»Ó9¦îKz<›¸Wßi°/üüICÞ=ü2:y€¼-ö×áÊpŠ@S´oô7ï‰N’þ¿ž$ ÿq(ð<þ#Tq!àÿàh|_üG¬ÿç¯ùÙnan4Az[ý&,56°„>ý¡ß8I èïL.ô!A512€u²ÿÉ>¹¯°Ô`ñJ¿CoâM*g\ç¬ zZ8Jú榈ˉQÖ—*öŸ½ÌPg(Z*?“×Û·uŸªÕÉ»~v¦jî:‘† Ç9ÉWþB¾’9©iò¤j“QZù£²W/°T_ý<ü­Â皟òæ–\h¤úú<Ô}µÇô‚ÃËCè'±²h_ú ¹‰k+>*…ªè®Cö(doÀ˜ŠŠŠ×{°Ë5srrŒÍÌÂ>ì=oÖöûÄC——›:ÜMØ÷ðFm§?¡ °PRCÃÛØ¤dwÀªåªGJïܹӸª i6và6¬‹f®Ú°.ž²bôõ'3Þ®™¿¯4sa½¯££¤¡¡¿±éN=SSIœ»mD–o–ªiKËÓ˜‚ú¦œWÞ55Y¾G®^•>i^ïùµÍìs{;P¹Nªü«îBË÷aceÏ;Üm76¶˜5w®˜Õ¹CW´'lÝ¢ñ¶6jÊ»çË)eÇüÕ5ŠoÝ»w$cÝIí k¶F¼|Ví>/¯5,ltUzŠœ”Ô3ëk„Q3ƒÎOÐ×óëðÇÂà³fM¿âÞ‰s];uæ‹Ø˜1†~M™IÛ¶Œ n—9~õj±RÖË´·ÆEFQ3ô‚ƒçkÙÛbî+eÜœi{¼Ñrï÷y+¬¬"î’tÔµ²B²§ýÔùx³þVRASN~ëVÙ™¹¥q2‚2§ÐZ¯ÁÎEÁÙc`÷îßß>8yvìɆÎå‰'lÎ.˜[¯¶ôS¸Éî¶Ê£Mž¬ÝÐ4ûäÉ Â„Š˜mu N£ÅäJ`¯MW¤f^¸°ÿAƒŸçPdùÊm}ujUÖÁÓÍ®ËW›ÝF¬¯1*Ÿ¹a|ù0#u-sýŠŠ-S]kó\Ëê½c´ßª´Þ‰ïÔ;9¥ÄÓ3Â¥!¯À9¯2bÊOáŸ>éP‰ÊT,·  àƒ¶ö¯®mñUn³YÎNáV¶þ?47§gx×?ñk«w8T³ðJmtÌ«»v°ˆ¤UšŸâ0wNYäŠÁ©(+[jÎS _ß%-u©¡Ò·&ÝërS’I€Ë£˜ð j >â7oÞŒŒò‡d;ujœÅºC²m^{E³*ëJÞ sOO’ÍÚµ÷<ØÖòäɬ3ŽÐˆ× VZ¶LÚ>íÒM*#ÿÜúðÕo:^ךHiiR*,¿~;¬è¦ùŒˆÄ01Ýß>.C¯½ìr2ÓkÌŽ¨åGÈ'?*È! œ¦ë\:tì8àØ´n#“ù>ù8`_œÆ¢¶¶£ÅsÊr¥=“k•UõZÜþŒŒguGùná|qإ˗á**“Y,ÙåÕåxû\ü}yí­M£·üm”pnC[²D~~kFà•qJJo ªŠ''3˜ÔwÆEùùI’22‹-c$Rs®*=:jG„I~Ý£G íõ1s”[É»¢ôåNz—¿4«ä§¯ÇáOø¿W¨[k“A“x35Ô„ÓŠê"wþ“9•;h-2Ë"w”A)Ûœ·ßØx}Λ¢=–ɉΕç–6,z¯ØºpB¸^›â«…¾Çø¼xOˆ·¾¢+¾8.i}ÅMI[G§.²nRÆ Ï /NTPØœb•ú¼¡"ERZúæËÒ8vÞçÒæZq ‰çwâu éHÀ_ß0³¬¬ìu}}´Ê “gFï óVŸÉÍ n·ÇÅQpqi:CÎX§é5YkÝPÙ°h•LqqñÝÚ*;Úïs缯ÍV±äL‰Õ(²…E¨kõå4ôÿè‘#0fS*ÈtÆBÎÕÕURJJ,·€–J«+Þ§®¡±é†ý¢à`Ýi̺e™@¦¸–ÿ!÷œV‰ììlët§É¶o°?~|ú{êõý:ûMžN±­Ý¼ukíÇúrfÁnñÔ{¢fèîXpýË}§„2GñQ£Gçû#‘È g›²j3'¤’b˪ªÑŸÞT¯®KKCúÆŒE£ÑJðÒ3k.°õ¬â¤3ÌïYø +«±qÉêöiÖròòµ¿Ù»å¥DÑ`…ÅÅ›RSÿØ[t>¨•™úÃxœˆF—7ü½¶6ìÌMüæO¶ ˆššãmÎúݶ;!AK_£åysŒ˜}ù 3p!5u톯¬ÍááE{‹ƒ³ˆººJË’š³ •oþ²K\öÂöàîéP»íÝ«0¯lYÒ¤?®}ˆÜ™üx¬|¸•õGÎ8˜¤¤dnœ{Î\/åJû£æ§pV"ÄéÃì‡F†ÏTCw&ªÞ&m°m"Üß½WܴãàeAôݵQט°{N¡µbkTãPh×½¿Î(RQ‰j4é´zEß Ó¨“™¥6u*9acìÔ=k¶ ÏJz.<¶¿Ø¾\æ×À7‰¯Ë«=[£×YZ>oÐZ¿ .i^©4mšž­íŒcÇŽÉMš´)ݹòXJŠÉMUSÐëÞß»¾&É$Ã÷„r–ocÕÆÓ§5^7<¾æ/ßÑÑQXZºE5(à|ƒë½eÝ%ãÄä³b¿´=H&'®NY*'ðGvË©ÔÔ¨-[·2^݉Wøá‡%ÓvmlÁ¡¼éfø¸K´¢I“Ä7^v«Y6zôèçäç˜[x{c¤6-ª««£fut„h¨«Ã÷-3|öìÙJkkcè&EE˜q’et>5ö²ÖÄh›³'vìN{ØÒ´ÂÃã<¹ý†mSýñ¡óæÍÕÖþVEcýŒuža¾ÇëÑmÏ´/^Мœœ”Ãn,*Ù?ÿøú,Ÿ²£Çª‰±666…4T™¢û5J¹[sC5+1QµísmT>H$TViÇGêééåùÌ þ8‘‘nƒš¶‹†™¶4¥Â’ÁH6Ó2b•ÒÑÍ--¬æÝ¤ÄDBúÌÆ:Ÿ½óÕÔÂÍ“Ì í‰_¢U„w{,W’žžÎ®$ŠiÓ¦åµJ„Ý d}þ …k×*Nœ¸+2Ò&œRûjî‚®o QýüFN'êA÷—cWÑÍèÑl­ÀçªË*·µµÞ½õåË—3/[ZZt*šÊ.¤¥¥Í­Ä~r‰ ™s9®Ð›µ}ÛéÓ§‹bÔ.1Êg7¼~íAÇ›ÆU¯¸ ÉuîÆ’ªhÍÖvÚñ2õ77·_ †I³¿1 v|(¥_¼åM}ô[õ©ÂB㔳Ù{Vé8üÞÐ@ÁgŸßÕ<Ÿ‹ß¼uKÉõÄ­Ç‘JÆ–Ô³nÿ¨øF‹cuÖÆ°´´ôÁ½{qmo)Ÿs8H¯¨¨]‘ ŽìätÚ,ë€]HìÏqqõÐçѺ’å º.m‡×u¼½% ‰7¦ˆ¦¼§ÈÀæìÃÓ5¥‡JŠŠÇ«ª¬µ½_Ëa±Ø5fwÇf*qïæ1W©¬o»‹V˜2ÅhÜ‚B™5AFæþÓ§p×'9ñâ‹lÞ,~ÿ÷fŒÃé)>Š)ÈËëC·…„äTì;•Í‚ÄG !%¯Ô°L^¹ÚêüÔ©SääìY,ÝU5w“ö}ÿâvÈùW]ö´'ª`$î]H†”ÙèŠ[ͤ¨¢ÒwJ«½kKÒûô˜¹«ˆ¼‚Lûò%È›Å:𭤦¦flb²GEZ¾P9óÒ%…Y³fÝsÄX_õž+¾x¤DãkKò#¦µPo4wÏnÞoôRâD›aÚ!4Ý9û}ò’ÔWe²é‡‰6nCE¡`£˜}çlHK¼"à±No­¢Üd]½ši ~deGóÌ«¢çI\èþ_;^¼EÆJuu"‹¤Bí–;ÇšÔ†S?˜E±_+–šœÓ³ß$Øüúº{t-jóÕø[ø¿H<šÏÿ C Ñ(”ÿûïzÿ—bÿrÞÿŸFKÈAzœ·}±757¤BãÇÜ«•á©:Y¥!2´ËÀw[±M.F8â0ÛAmlƒ`·ÉpÞ¸Ï=€ç•j– Š>°›`€ ­=ð R­š—‘˜ØáÈ`Ù p†»F$Xƒˆ 6oË ”¹IƒO¬ÉZ ߊ†D sD›Aåj†#²|oAJÕ>^ÚŽ³¶Pèñ6H·1«Â ˆu 0L-{/L…*òP€r>¡‚Q+O6§AT ì%"ÈÐëSìÆP”DFHì7<é;Ù'!¡OlâèpPH.øVž kõRAèª\Yx“͉•з?(ß'rÀà‰£!ýÑc£† C¢ã>H|Ÿ„Ä}‡î“€ÄOˆ† “eÑUÔN :Ç®+ç£AßÇÚn”d~‚ úX” }P™¥9üèB£Ù¤WÙÕ|;'šáˆAbŠL´“Vê VÕ¹¡È“ŠP(›RŒýa0DPy´x¨¡H¤ÙjƒÅ‡ôAP`‰Ñî4Áða}× …%U(©Rßéç æx5åñ^_t®z‚³‹’sšò.•ž¦Y€^Wt~µù¬ÒðN¡•ÿ¡MšU, -aæµt®Êõ}]‡‡¥•BS‘ Ãß.º æ×Å^TóªFQ/9Uçô*Á§Ð T8'μ2¨V˜";ºè€ë@ã‰À†si}c0¥ÙUö~ô¹M˜ €N×fê¡©r CPBL$À˜›4Þ`±»Õ\&€â´ƒUyKšÏ§‰C‚ú¹\€di ²ÅÌ«:­áby*N”x6'>D’÷‰9)—†¿¼)ÑfAü¥]ÿÇÒ¾>i‹R…\^ØŠ¸j7÷òªªyàÀmöQ½‰(+”Lð<Žs¸ÈÓ)nÚê|VÔÄÀm° .Ù(W17zJ ƒ¡à”¨È,* 2Êl Å2O:'ã˧ýËV }mÅmž¯lQ¨Â¢cýÆÝû'ÿ¯Š–~£ü?ð‰ *äÿÑ]¿ÿ·>ÿﯘÿçrˆ™óäõúÔ¿úÔ¿úÔ¿úÔ¿ú{`êï©¿毛X…[þÛg¦Ù…î¼ .jZW”ŠKÍS«wsjœ ø[§¹A¡N°ºáá= £qV!e†"DL’ †!eL(ä0 Dør’rª˜"ö¡-ÈAÕ3«¾§÷: *{Ï>ñƒÚ$A‰<lj©P’ˆS‚¨ KK"¥PŒBS¸ Õ%Þ>´Uwxk+%> í/µAãIŒàIJd(Ž‘Hc IPZf9cùº•nïmÕÚoA‡<¡c½ ¸Ÿ0Ôr\!x–æ8TNdTB%™'YýKx]BîC[òšæª0Ûx½HûË}mV‰f8—p‘•‚Ppœ"áÌCà„@“u‰´mÕiÑdóIøËw­ˆˆ± .±Á  Q—Q™ qQPRѺU ÞÛrS 5:;FÙä›qôÚ -3¸ˆ¡<)R"-±$Á‘2ÊJ¨ÌaœDP,V—hûÐVí$:Í"«þ¤äÌþ²^˜ N`‚Rp Y¤¢nè[’¥(eêfÚª̲I2𾉲¿|ûŸeœlé¡K„Y"®YxÚ"œ©Ò"&d¢[nŒb1§ªKÍŠÙh4Oq€sŸºÆ¢^—.ž–³ÔÈ¥â^øÐuMËuÅèO´`èëÕõ {üõ¿*o²o­Ûó0Œ¦Ý×ÿp¯?ÿ÷÷ù™À[êûéð¼:êžG´éÑ.¡ˆ/—Á+( UÎ.Oy”]¯T£ç!ªîv)g2wÑÁ^Çœ£Ãõ"À/•âdõ•â¤{¥®ÅàꆶžkÑÕ }« 1ñýãã’âã“ÄFÇ%õ/´>Dy!ˆò™ @ x¯ÖÑ^¢k{麴ÇJËg¹Õ7=Þiér+ p ˜Ù1ÑlŽsõ¡¾\Ð%ï ¹ÿãsÿ_ÃPðy“Ào¾ë¨³à¿F ˜~ îÁËóÖÌoРE3õFÀì+Sãó‹ï4¾^œÑiG_SÔàÈÖ&Ó¾]´öX˜µRö~”29»wVhCåÿgNìž1_~¹ý•#?ÙÎ/ñU«¼#E4¸ÕtÃÒŒ >f'Û"àµþMÖhvIº˜8 ¹u÷ÿ®ŸK9ðìÜ‹çþýEÆÄq»#Þ+Ôõx7nÆÃúm§Ú4øúFŽ©Á¾3§7ø¬yd¡IçØô毶‰lòÜ£D^oþ@ó¾MÎððõ!ó¸ãÚÏ#ßìûÇò„µ‰!ÇÏ^¾Øá“ˆ{¹œNÇ/ÛpÒ#¯åda;^í,ÍÚÿE`vÏáTQÑ×ÏÊúáÖÝ€M{¬·´Ù%Å.ëÿyvCÑŽ+S»u{!|㉃GŽ„§}ÛÄþäæÍ/´ÿ䣉Áóu뮿ýÔ“¬åûûöuø!ìÅsÙé»y/5Í^»iSÇNkL´î襥*„_G·Œ|ó\vj¯ Ó¯ßkÝþwfÒ¡‡yå³£Ó£¢¢L…+û?ýNî‹Fch```¯^½‚‚‚žyFž4éäáÇæžÉ;Sùx+êöŠ'žø~ÃØv{Òí_Y\ôÊå¶O{(ªý'}3šæ:æ_-X’‹DDìÍÉé³&ßn³=øàƒ’,çæ6´\Ë»x5ªmÛ¬óØ©=’Þ7³Öèg϶hÞ|î»×Jk‰¼`›þèÁó–-£²—.½óíÇÿ·þø®‰× çλxñâwÞyêv˧OŸ>yr(0¾¸eÔ¯7fÎ ÈÜ­ufܲ^_Ιõæ›ã·y£ßãO=µkr±)sÿãmÛ~Ùf~ÿ§óòòš>ÒF\66$(hFfæü«2šu2%'/ιui)›=ÿ܇ώÜt@ÂïMoÔkþƒd¿yJ¿l^LLfñ_vì0åÅíc¦Þ>“‡aoÜÀ’^*Ný®äü¢íKèýÑ1™X>ÿ|uëU[· wÒGÛ>øõÇSk£¶ŒŠ.rÄ´kÙuô¶n?ŸØ[Ø›VN}ˆ½…µnÙõÖ…%ã2𵥤dPnîCíèÏþöúÀâkN„}"PC°‹SŒ»·¾’7+" §añOËŸTb³Ù¡#GŽLJšzîóÙwn/Z° Í£òÆ%‡#F(I£ÇŒI¿ûŸ[%%é¯}ŒôZôÃÍ’#GŽlݺµ÷ä_®wmÜ´}rJJþ図gÏÞ¸qcãfÉ%‡gmÉÉÉ™1£ $ä«E=Ö¬^`íöô¡ŸåYùá/±â†÷Þûþµfº_¯~tíÇv×_~wê++¶n]³Þœš74a뽓[Þz»õ§û3KÜq§pÅËÿ`ˆÚïXºéîç}šÑ)¶û@ë¶»=¦^ >³Ó<~hÓNº¯›pcÅžM›¶äåmÿàçefa ÙôK©윋G“bcc[]ȾÕ_3ñ»´ØÏOnŸÙ{» ñ”)E§˜çöÑBŽ?C?0ãð©+ßy0÷Pð7'Ígw;æÑmmÑ¢EÀßVlÜ8»“!5Õ>¢m«Vû›ýróæ)ãÐÓ çÍ›÷ Ñdad»¦L:wî\ÌœŽÃƒž`í÷ÿ›}%±MömQwyå•ÓíDcI´xnÈ+í)DæG8?sõjú•~ï›AmÛîo¶cgñìY'ïÞ:šyþ‡ãe•þz¦à£sM;,üªUú”ËÆ`y-õá­]i7éЙ©! R_Úk¡ÏZÝôú?7nºž–•¸ë qYÏ]……õ srbŸŒêòpKå_—.µчý}}¾¬×/x»ã½ïççÇEôþjÅàkŸŠí-AbGôÊ—ßß „86þœH& ”m·æí•’ɧV;YX¸'åĦáØ%h÷îÝæ„„M°qij‰…{§žvXùêèÑã· [>¼¡üË‘xdÂø¸ä}?ݹÀ8ºÍ¿qmê½ô£Ë~\°À¶½gÞæøüüü;s¦..šzorf¨¿cY³–.½2¹øjÂÚì°˘¡C72âK†\Û½²UȽ;×n 0ÒgöL¹5zô˜yýÏì/*oäÕ}»cÇ=ùó;›×­¶(³_—#R¶Œ m=hܸeýŸžùÆÇ.Ù¦M›y^ÿî”é7ÇÏëÿÞ±ä蘘Ԣ½_?¾£S¯IË%Gª?Œéž´vÄúE=’Lô’­}ì±Ãw:[N¾ñéÒÓqBÑ>QwÚôa·^öu!]"÷XV=;(œMnÛþIqã Á3gÎä¬Ñ;_v,wüxRQrì¿ì] X”Õú7É+j^½.¡e:JŠÑ |û2ØåºŠš ¸<€âù6˜†E5ͬD¼¹s5­LÍÜ2ÓMC%-ÛÜRYÔ4—WpAï9³À03ÀŒö÷¹ÿ'Fy€á|ç}ϻߜ÷w.-z9İsuÇN2Ïõx¼s‡ô²£ÑÏmáú©ÿ^ðíO× piúôß4ev“ÐU3CrJz®®¸öö‚ãlñƒ }²úaã·MÎXþ®ö·›¥)_}ünPÄyz-IÓtøêá=àû²BEAè6mø·o\žT¢6ùmý篥åù>ô„cþ{÷ÊYø‚‚Fú~ñãÞ-þ~¾bÚÑs‚ EFï;kpëÎ&íÝ7׬é17”ìÕëTQQldäÂ… ûþÇ'›óÆû«ɸ÷GYñ¸‡÷®útï! ‹ÙÜwtLL§ví>ÚóÌ™3ýº ›8.½þù'‡6lß¾8Yº|tcbé7mÛ=ûlð­È¡¹gV/93cfȬYs®Ÿ_–˜Ù3ïþ§ ·tÙÔƒO_:ÿjŒÐ;¯õ¾î½¼^ö÷_3oÉ’%;¶ÎÝýùä'6ûÎëõI?èÄŸ92éÖ‘“n_n³âÞ ïâîžçcÛŸ¿¬¾u÷î]<#lþe}ÑŠðÓÕœÏì²E£Ú?¼?oÁ‚Vc‚6ÔQ9Ai¥“Ïç¤_ U¶L\µ6Í{Þáü®gÞò‹–¹cÂ…oX‰Ì}~åéíƒCN{7‚eÂGV&Ôùg)kKAAÁ…Ѿ÷㉎±™·š¬3Ý9<õvLXØó@,n™ûÊë0¸ŽGÛ— 0j¤Ý8¿òÁ­Íc¢·çÞ\»sðñÎé^†VïçwŒ<$X³¥‹>¡rYèÖQþ-otrÝd¯À’3CŠÇš¦Vì]›Ý饸¬Ê’Vûg}½bÅ”¬-Ó*'|¸æü©­‡ÿ9äh§ô¦p&²mÛ¶Iw³ÏnŠùòÕÓ-Ô §j/e­\Y´{÷Ìò …+W† w½ß÷ J[“•ujÊõ‚.®Q:Ì}÷—?v·™ÝZk,/-ëRY¨g2oþx•Õ¿¹*±ébîõ^[œxôá9¿ç£¢6M«(iv)uÜ[7û(QQÏÌ;êJXÀØÜ²ïØ÷·÷kÃBÛÒùÛO»±5úžWàyM× 6pÏÿTR ƒã±_–¯_wÇWÔ {¾BŒááZÝÌ⹿™nÞ:¶ £xö¬xÿ»ñÛ²çÍ»q2///ø!Ÿ÷\çé½Û¶ÛnNßN…2,A®Í¡Ør/UÙâÖw+*>:b¨¸¸lê¨þýã32fÜ‹n\ÄcÃnyíÎ |=hÃÈõe«víz˜ýBÎë•0C I¿üº-¼¤ùã·õè¾Nݸl¼zx™‘‘ÑQì´?áTÅ•›ëû5bo|Õ:±hÅø­ƒ‰}™™ÉN>U–×:üEp8xWÎÙ/ }øbû” F…>}ö-ª|ã;ådîµó2>{¦Q³V“½ÊÝVâå•vj{Ðμ®Üñ¦­*¿qc‡±$¼Ïž9‰Ç}Ô¡Ûíyíµ ˜#š5+MozâÀo·ùÔÐŽÛ¢2ËKß{>õé9 ›Îú7¾]÷sEÍéŠÇä^ûOëÝ«TäÛ¿éûæáÏ›þü›¾\Z·wâÏÏØ²eËòåËËÊÊÞ{ï=›JJ@9õ·ûp¿îœBúœ»p¥¨ßM_eggOŸ>}Ã5úsá™ïzGš¡ÿþƒ û Ùgaй1Šæù‹—/Ëþw_õ;ôïåËjÞjÖÞÆÖ‰;öÁµý]`‘»9v×Ô€ýùO,XTñS‹ÀwrÖÝž5bÄw¾¾s®æ”Ýþãä°a±ª¼ðB´%Öë꩜»Þë"¿ípãÚ«ïÜ./?yXù}”ñÖ¥«‡ë°›Æì`ö?ÝøÐøk³ŒG>ÑcÁ[E¥/nÙ“FôýPHuôè»^©ÜܰçX€ôùíPí»¾¾g+®];dåâþe?ž.& À/^¼øÜÜ5;vœÔ3>íÛŸ(Zýc>å{Z¾Ø£G^åí“°TØ3&''góÎÛ¿ ÜÕ©K—‡°,×.Ey™×“ŸÊk¢†wG¥¬!^úý挒’’ÂÂÂ3f<Ürö™M ŸTŒ]ºnݺaþ‹ˆœ,Xw?ãæÃïÙ«ùØ¥×üÇ^Û3("bA誎;—^½èïþA©wñu^ëg}|š6iòR»·¿ø‚{§dLÌ¡yg5êOúO:ê³çPȸqãBBòo^»~=©œõ*«x¶ˆìº»ÍÌGN4‡föùýÂ…%óçïÑðYxlQ~ùʵ_'ôú½ËþY-F½1{öG;Œ¯téR4jì€K÷ZÒtÖµ$äÒ³¼Ó¸ØszZ×³ê §ù]¹zu‡ñýÉ]£žÝÆänÝö\(Ú~çÀÁƒÑK¿jqvnnî¤üoûîú¹Õî)Åÿy¤¤ù Õ”ûûxvÙ¹+è‰Ê€Wûmê3nÆÿÿþ/ èô:“NN®ú0Äîˉþ“úÑæ»ç¨ÿ'0ºáùß“x ‚L(2M’K€'hE ‘C €”(¶¡Cò¯Ûÿ™¦“âd‹ß{êòçÿ8C3dƒÿ?‰—È Y"¥à8$L€jà(VÆeAhðÿ¿°ÿ£í@ŽYÿtÿ'YÆþó? õ“xCÿ÷“éÿFG‰Û퀱)¿‡/E™{hâ»ÙŸkáÞâ/Ö4¬:·|ÑWÓ¨í”q’Qãnn®²ŠƒñF9®jƒ ÊèïhÅ´Ws¬š$q5´Ñz¨QÔĺ©9¯ ÇI5βj‚$ÕFÖCŽv)ÞäIÉNë¬î@¿æ­#ړڱͧ©!¬\`}#@åÄIÓH 4A»!ÜIïN õEÇ<%ê毭‡m̱wÁ”@!%àð†­‡¦vÑxb|ðZ"hV3¼šä85´zXaX±ô;Éd@‚Q/›wJYÐVTõ «Ðl9¾Ë€­û˜L@DßZ{á,êu!9 'Ì6E#nëµ)®VnÝ•›e¼ ±‘иIhØE©I–®‡Þ‰Û^U'[B'Y÷ Z­É…h®ŸæÕ, Wyœr¢_U×$ï*8Z†º 'ô # xNLØŽï…"²ôÎZ³7‡£*g³ÚVOø+äñ%W^­ Å'ÊúÃN×j]îÊÊjb.rmQÁU«-æzÇýmnà¿ÙŽˆ z}ll\0Æÿß=ÿ!ÑóŠ%ê¿'ñ’xRæY†ú Ô,#2E@GŒ"b´Øp‡ô×»ÿ«éÿ½mÉeÏÁÝð’r<ÿ¥I¼ÁÿŸÄËÿ±†¾íÁ«ªgHÀš6bÅ8'(Œ+ d‚°4ÇÂ/É‚À;Ã Š†”D“{“K4+“” ‘œÀ“‚(…@}hc4´©lð1üß~ëOsºŸÿ`þO²TCþ"/_žŽ*@Œ×é¥$916E¯š}2$Å鵂³¢ei)czPóÌæÍ«/³F÷!3bާªñÏ –c7º¾z:Ìi:½Î<]Z¼Î$kš/ VœžL`Ô§$×Xƒó ˜¬ûÑ0ˆÐ?‰’F—âd­*%IßÓÏ„X€ºüÌxkv£àݸ LZË7™X’´*_EQЯÛGË~ɦUAú*Üú•'€ž˜Zeù`/9°†º\¦Ô½ZÈ ,óå$Ûo©›GzãL«JÐI’^v˜˜g5ó%É¢Áò˜GkSÃü5‰Cm¢^qëàš‚ÔAÖ×ϰbH4iU8%à7(EÔI@–%ÙO:ƒRº¿¬O•Ñ2Ô½“t@¯N‰Éšd9I§¸&iY Q‡Šë^¹Eq½Õœ 6¨×þî¿GWدÄl-65W›œÍ¾B{áA*«L5ôO‹SVEAKPôÐä@ŠÉ`¡aßJ7ÅyˆJ%é’áÍî$­ 7ˆê5Mš,LЙ4¶i4Éb¼-D´*“!EŒRú«tC"TôË*ÿ@36°¯ëÄT Z¨ ³#b[·3O |¨V„dƒ>ÅdV¼Ïr ¼6ÅkUmo@ À±]f~h9^¨‘B„ņ*œ0sÓÙK*K$PY„¡2Ø уÔg ÙŒœÙÜR’’¡"e ó2¬Ð…8†uG¿š¯¶Ä]“ÁhùÁ²8ÆÕÊ\­ÅfÛÕ‚àV#´IÒ^“5æn;-^Ó.«@ÖìÙ¢¶ê/¦ìOÍá‰w7œº²|Z~ßG6B,œÅ]II›¶HÉ¢ÂêV6ñ`A5g²…jB«4M‚B&Ghã›ãxó¸%È’¨ŒIºDSs4ÀNŒUº´äPU¦Y½©®Uï8¸Ú]ÌOúu©æ E·>ÿ³àÿÅšƒëäowê?öŒ;Ô4N5ôÿ=™ÏÿðŸÿ·ðŸ«À7pœpœpœpœpœpœ=_Ýcâ:;­|¬ºâ¦·^ï@u,i©)#Û璞̒ ‹³ŒI:äŒÉ!äêBÙ6+*G$Yñˆ5†““„À7l»s<š(ÖX®&2$y2 âß!À›¬G³ª†õZ¯9(ÅŠ6FÄGÑ•u’8Û$q ðæÿÓðæŽ®õˆxævb´Ôæðf‚¬åôÌj;ƒF¡Q‰* ¬šà`ÛÉ–Ï£škUuÁ%ÕÜ×…NõRpŽOÈ’Äð¤@J$ŽÄ(–à¡MɺgÊ ¥ÔÜzŽdÕŸ‚ÕÂS㎠¹‘”EAR€„Ñ$¦`†q<Éð Ã*¼Œ{Íja)$]gBQØCˆ$ÅQ“ƒAá8Z` …! Lá07‚r$‚ˆ«‡ºÃfH_ ±4Ž×•p\d^¬,)Î*œ„œ`«ÉÛöþÕM¿wФó˜ @°2Î ,Aà„ qNa<ÉrÐ0HŠì)è»§<(¢ˆá¤¬’Bbœ€Ä+Ïa¼Ì’8Îsžò04É §æ)+s’Âà,C`Ë28ó +Bep´%È6,Û=å¼"H(‚°@x ‘ &‹„ Rns`«H ‚ãFäpè‹2¦à¢ b¬Å"(´»>9ÈrU«ÜàÄa?§/`%™§ iŒeY…æQ¤ pŽy…âdLªfŶQ°N^H„ 4!Ð,µ@c Ã$…ö¦‰§dg³¦Ñ»Ã8@±‚0Ž!y†‡ÎÃñ¨Î‚o+dMM'¡YIÆ&Ë&´Ý?Ù#Ú!P¼í…’ ‡% ó9¬°§€$±õÐj~¦ž^ß‚E˨jº°¶T$˜@ž%œ†å¥È*à%‚xÂÎa,—ÖN:T–%7 ʼnNIâ<Îp8GÊ É¸®P¬Dc‚}Ôª…Arª¬÷Hà< p°˜æäŒ2Eš!Xž'pª^2¸ ÌX«zCœ¦E@B3ƒ¤az ÌÕ$/±<' $AÒ¤à€Ó ¯uA|¨.Ñ£ÕÒ 8Œ%Ba%Ï0`à}ƒa¬H‰öUc-«ê©3‰NL»2 z Mð<Ž1 CsÿVþ/{ײ+I’T÷óˆÙÖÂÜÌÍH,@Ý 6¢!!þÔm©k@ñóˆ[éy3<"û"¤¡Ò­*UEÙãs÷Hß/µø×ï.Móc"1r†N%¥Ž`,­WL¿± ¥<~ÖQ6þ¹/? ;ßò7å§÷û× ø`C@ÎE³N_ƒÚËàëàìcD²º4?ü’ EÐmӋ솩7üÁš@œ11R_kùçñ¿Ô\s$fütƘ›ʪLšL\¿Ôþßÿð—/5­]4=‚gu3¤jM a<@Ô}á×ÿZ¿ûñë¿|÷£ÝyÑó¦oZ­3wïr“Þ|…‚hIvóÕnüоþøRF0†œ`~4÷ò9…&T·óp÷Æå?¬ÿ‘¿¾zsþ÷6ùE'þ_9ÿá=rÕÃùÉÿÿùÿ«óÿ¿ù‹ø»¿ýþû¿úÍwßÿ£üÉŸÿê?uú…ÓM§ ޼&?£ìKJH |{+ýŸþÙ?ñú"ø¡/.üó— äý·VÞîé‡Þ/^þσî‹;zð)ð³çï”~ëÄé³ !» Ž[ªB©uêÄÈ{¯£Np¤yöEÏñ¬„ü22r,ÔVÁ¼¶Â­õPÅxõ‚Ççx§ÔåÏŸãåá¤; ²'fDUíªX´‹d%.xñ€:Áé’C*㌾ú½íAá‘èR]ðäo"# ÅKË4 ›} ¡eˆæŒœÙÜ‚.àeI®øX y•Jå)êÀ†°6ÚêXñvör`çO>òÛoo øf¶¼{î×`"Üh Ê.Ä¢ Ejœ„)è2Û¼Gzæ‘+XuDÛ'Ìdmú­5û†>,8ÈÆÝßÀüŒµKŸ3Ïæ'cY:Ϥ4ü`_°3¬Ú'!ôÀ^¢ø†EnŽ"º«Âqí˜î±„‹´)°žŸZÆhð>–æ4fñë ÷Xžö:1çÚD6s¹Jòìªç1¬|‚Õ÷˜‚' *'‚šáµ­‘(Xβ`,¤Â'KG6R)háŽH Ò¢º`ryc܃Eå˜<鈓Äw¨ü2ÕÙ³Qç€EaÍ!÷<*økÍ9) ú†y ¼‚L?‚Í1Ë„-Ì–¨CìçÔ¡¨Àm“¬N‰‰DЩÔÔ ²£ÙHK +–;ñJøæÊ•úÙ‹30w •žWÛw'ÛìÕl4cñ0YŸgIµ×á¡KëH+ØÉ0[³ÂbølÈ©÷6ÒÄŠ˜ñkôº€ü;©UŒ¶´1Áï&73ô( ÖÉŒ F>VšÖ3K⣖„ÜÝ#VzŽõ!óî¹b'µùBè¤cï½\à¹Çr{¬ËþFÇ.òöª‹ÐqDßiÉqM²Lΰ¿Š¡µšæ(.ÛWfßcÑ R‹²õ,6Ö1È•`ï˜à<ÖùâÏaRä15rXg²œÖ¸´<†/A×I8]žÓæÜ¬ J^Ew‡02KDsnAN{hî“3Uj´m‡èš·r.¼Øû!EjÉ‹:š“O6×'"¤E%†Œv:JkR‰¥\?4w²v—£.Ƕ·Wƒ.3Ž#ê÷qöÛÏg/~ÿ„Ê•ç‘ôYrÎHï2Ú0j×XHƒHÉ÷yB®b†4&ŒÕs鳕î¦Jh‰]X0Ý5Ì2æŒlÏH â¤$ÅÜö©i,˜t ³%ßÔn˜»‰aC‡UP²Ä ™I-˜z3©8¸Â@à›)µac…¼H©„¹`ú‹˜H3"ÚYZ‹ Êð‚Nž'ÃÁÝ‚.b"]EŸ(Kˆ^ÔCùé4•ëây;_Ü ¹Ïì1‹àÊX³1Ç?@”+ëºÇ=æ‘|4ÁŸÆ×ÿ×ß=ñò(ä¸ñ^1y‰¾ÄF¡1ïy2 p/ˆÿÄFá<má„¢Òá á5Xy9a©”¸x §Ì#k "‰ƒudXjI-¶‰ÂNá^ øþ‰ó<´¤:(¥Ø‡&Pq¡ÁH˜pÓµwç+ÛÙ0*çÐ !®ºL®A†vŠ œœÃõÐM/ÄHš&˜²‘ƒÿ䮩,pîî×ô'š‰Æ0)5‰vø =¯1$n44búûdçŸ)ŒG<¶s\=$ÈŸ©³Ä€Ê,Æ›¼s8éÑ; QÒÌâF„ €Ö7Ë)*wí^<Å»ló·î÷Ï#­û†0ß|õÄLBAJÀDÑYè½ï¼{J2ƒq+9ƒ¤’¥h× ¶µ¬pç‹«:çj‘ÜÀbQ‚¦˜2gmsúu´î/ºœÜìxä#ºwªœbø‚'§p!Ê îmûõu晪r³c>ÚÀÎV¸pW@äF®ÚB€‡ðƒ®ÙYNP®¨«­œ6Î:[‹N‘B qÜ0ê\KsyÅ£S¼lû H[ðë.£:4ÍÛiÅËçp@ËJ ÚIKOÍÖú‰’éa¸ð@ü,Zñ !H´ @JçêÚÇ-xénEžRœc«µГ¦˜ä«‘ËÜ9ì  œWtMv0mÊ%UŒô¿‹ÓS¼tÅl§# ¹«•i‘±J QÆ¢wùåýtœf ܃ë̱CV@RÌÞ›]tÈ1k÷Îá‚}ï(Ø’ ,êHð< Ò˜d‚>ÄîÜÕz-³B‰¤’wdÓêœ@ï¢m§ó ܹ¯ h~‹îè)ïF C‹TDf «-Ÿ»Æ‹SL¾¶ä¼ç‹‹È"£0!ÿ­p|¯ûâÓ@†V±Â»'$iÈpÛÖ‡ÕØÒ–øñÿ1~úúãoÿí MÔ³gíÐ-XƒtGf7ÎÈw…”†zè»û:“>™Íw¼ù_Ïž}¡m =IØñÀZÉžG ª4±"€0…¸DM}â/ã& ö܇hpöS4 ij I¸6ø¿Òdp’µî"r ž”ê*,ص‡&é¼É,µ(dbµÀÃÅø*ܪDxÀ:ˆÞÁ~0„'†Žžùuq@R à\ãÐ"ar¤d qÝêORáPj ˆúŒÂ.Ö2ìè¿1éZrÊ+× P«€‹`rcF;’9k!²ü`7y’¼êy4=rϳæÆ4{BÌp;±aÍ\â4Ð>Ø $5¥€,S}À­©¯CÛà 07ÛÜCÈrHò=@¶ ª¡‚/€7¬8; ™fŸsÒ¬`1 -‚l‚ª[Yâ1{,¾W0úL„ÉE€N""*u nr3âÒ3 (˜!À¦ãH0T8[™k6fÄeرÊP]m%–‘c°S@êèš”°öh³ú µ†l?a×V#ä >@­€üfõ…àü±Õ¤¾çLà rVÍ·/°Y€6zAㇱìNÜKÊp¨g˜hÍø)Ýõ®Ž[¤uÍd30dâÌ£Xå¿ ‡œà0KWü#m€ 9<ô¡SÛ?Ñím—l4 ®SÍÇ@j¸ÇTçJ¦¿»†Td r!¼1Gí z˜'‘ÞËè’úÈTª3ŒöC6C I<"uJmú‘B…éäÙC.ÚàlúÕÂu™ ~Ãöœ’N®M±S~uÙ,ÿ Õ“ðe3²ˆR6 ¾íç‹‘YqNèÉÖ)r›!à±:µXUµräÎæØAùeÄÚ´ŽlT°êZ dÈgµÓå`ÆÉç öÆjF¼‰!±»àš“œò˜%P‘žƒ’¬‹Æq ß§ ðR$"Hpˆd˜‚kÐZyuXÝõhHªÁ…ÐFÉ1Õ$6p0^Ímìy´!) ÄA 7F ’šs„]´hÓ#DA;^:«·=šÜ»Ž%œâ” r×£Sœ Þò˜S$È:‡˜CÊC]çh³üÅ"ý°û±*º’)¹×ì$CcóCÂüªõÖ#ÆŒ ÑR[€ ¦uŠ6aÌ.z&mˆe’Œ´Û~?FfGëÚ!·á|ÍG$‡ "úhvàgæDÓî'¹ÕŒÜÆg›b µ;q0œRÉNì¥[RD$PïuÑv=J0m \†«ø7ÍÍ!ôÁs>„#·‰/ì_6#ëମÔT}€Ê²xÝ&Á?&Ò‘¸~-›‘ X!'® ÊSQ°¿F zäuõec×ÈîæaS¤:ÂAep¤Z¢OD}C§‡d) Ó \ âk€ë#hƒ»kôCÛö,6Éð©R<òÏÒÆ.©€3­=Úö¬Œˆ Ìg¯ /B8&çzºÕßW{ä'CûPÒGϼ RiÛ€nw=•ôŽŒÉÓtœ·Ÿ«o­@é—á×2A…X¥3Û&X5üê¦!=†‡–žÙõå¶ìì^CFD ÂÛ.B|!ք੕ǶÜ'Úê£x±Véâ` Y×ßÞ±=ü‡¶hÓÖÕ’A…ÐÕ’©ß]-Ð’y{Uêßz´1ØË BÑåëE˺m&û²Ô¿ m×£«RŸDÚÛ«RÿÖ£ Ðéý¯{ ·YµÓÛ± ÐÆ=B²kA1CÝD@IäL9Rµs”Ë.éSéðöªÖ§ƒŠÑÛ«Zÿ6× åÂ) ,χ <4äˆþ±Fb·1£ËE:(<¾½Z4¸ Mv@'—W—¡mNîâ->»1£ËÕ:à×—oh.CK; “K¦ ÐÆŽ.×1耽½ZǸÍÑ&ö_®cÐAûòýþeŽ6«–,qˆj˜=˜§ù8`?VÉ"‚X¤ÛÌÑå èýË·Ù—m&ûrâ¶jaTÆ$HÆØzeW‚W5Û]BW2?ðšOÖ ‘Òt»@‰;¤óá´s“‡–vlí´­î«†!!S÷âá"¡»›Ã£©mmŒèr‰†´ÌÛ«%:Ø+x{µDCÅÙ·W++t ß^­¬ÐAëíÕÊ l½¥68z³Ës`#)â/2ÀÚb5{[€6‹V²LU#ô z˜zp3â7+(¸•«ïpG´$ëhòÕS€+0.¶uª9þr âê´—‚ |N„*hš vž=‡†Åyhé‹ÿD[œyºÛ~Pä”)ysJ¬Z]sٵǶÜ'Úh#ü+ìrrûŒ–I”c¯,q>¶ÅŸh æcǧK@a¸ÕHiæÕMÊÒÕǶämÁ,çEfWí]¨»lçãBÐëEŸh«ƒA“+ÍaLàö"4hšñ!Ç/ºkëb¥¶?Þ^­ÒÁ¾Þå7™,¹Õï€.–é`ÏêíÕ’#ìž½Zr¤ƒ‹o§¦ >=©uÐÆ¾û‚ЦcŠ—˜  í3ß |ññtôfmk¶ãf†PTí _øÑ8n—µ&C7+ü)­«Êþ-áŽÖJÊÈévÜW(@ІHö—µ%ýDKƒ:Í¢âíÀ_ëvBÂ.Ú:²c®kK›å<}ÕÇ´YÎËåQ:Øcy{µªIåÑ£c:KJ|zñàñ¾ô/¼#`0kl|º¸§}’ÐÅ­èÛAn '-Â[{il¨¡Ã¾P½ù½Ñ A³RT+±¥_U×›º˜îøÐR”~x±À‡ñH)ˆê’SnÖl„Ùvää*íÊóõ¸;”Öǧ‘•X„Ff&Xxóh0Æ;çv@P¬Qy «›@¯CûŒ]î€x‹Ó;ˆ9{UÛïÈUìRg2ìÝNÞáx«ÖÔ!uì=å0•*d»=ú<¼W 'lqbsÎ.«whjèWÃ¥V9d•ûqm dÆŽ\jÒ^ È­¸“gEF*%¼³™ÛDoW .°{@%t¤Za-Q÷¶·ËïÛ:¤[«É@m€7ŒÙK€/‚ì$;À?¡«ÒŽßáØ‹;ªm- —0ÝŠäœ ² lߥù^(0œ´Ãé­¶ åRñЇZ„H( 2c¨Ëmqw+†8¶°â³d$ £¯w8²Ã¹èηþ<·è'ÑøÁ«ÿû퇃ñî)Ø$,‰­Æ uQ< Â#INVGî½ÃYÇøÉ’ætv§FF&sWgÙ;ô 9Þëé7¤ÿbïJàš:¶~Ô§´(øÚ*àRˆD¸ûMqƒ*ÅkãÍͽ€ˆI©ˆh¿Z[·Š ÁÀw|Zm«ÖED[\j­X\ê›ÉÆšègÛgÒ_ IîüçÌ™sfιsî9„Y$8ç`ù`eNqÀ: ÃÂÇ&P°W³Æ@z-f©Ž'²Z$´V¤j ©ØÌEuf&€©º’Öª#/! ²k˜*Ô׎Á»ÖS=¬–WCêÒ{7¼ÜKê¿(IT¯ÿ`–úo–úoocý·jZ'Ô9ús<§â"XÎRÎRÎRÎRîí+ gº¶Óë(÷w, ÷šÇe(Obí£0N!W[ÊbýËb™1ÍX K·´TÌ‚yQáá`Õƒ+¨)£d=F(7BƒÈ0^Õ™Z]»TëWÿÝË͈Z‹äé¢W³Ü—µ§R«¸Â°ŠÚBµAc\…`*C3ÃÖÎr`ú…)âàHÐÌÕU§J]žl¤œóêÁ*¢äœ°«BãQ·âU¼ÙÚ+xt `nÚ´ýU'0³Œ×?R¡`d‘ºôö`gfBTL¸6Ñuµñ¸˜XÈDá4mñz ?0kµÖÒ©IR) ú—JA§ÊP] k@  L»³ g”@vj4Óµ?êS^W…M›þZG1¸No~›‚’næw(Ë@½„êPê!LÀ®kxŒ9š•m•/Ýl µ¢Û˱†pEòB`0ðJ!œIW¡~lÐS<\%áÃÉ$<Óšµ¦ÉÁÍ“£¯µU‚„J•>Ùyí¡bø€;NÔ&ÂŒÕo³:|õªróà N‡A[ÞÛÑA £µ0Äx‹WE†kiâ9 v>-°{¥2iZùr{mæï?½p Àžcxe]®àˆ‡£†OTÍkJÓX^ÑùŸOTs"Ö!0/ æ å.—Tí¿ÚxkºÍ”6vFŒ‡¥ÂMýŸ8ÿ‰`¥‘<Wý×¥fô%1²Òù?*Ð>Åf©ÿõF^_ 2Àƺ-”[ßÞþàÝþÿN3ðïÕè^eA“ö¾Þ}GLnt÷²_èˆQû￸ŽúvÅ‹¯ñMY<Ó× /p˜›%sjÊ6óEÑì÷zvaÿ(;û¤«sÓw5fø­>8wõ¬–ÿ—¹_9NѽL‘å8:qu(äØˆ'SwªC~+Ìy7[>EÜ»øXZÎc’Â{©[£îLë0νSöGë[ÍMïwýëÞ¹›ZÙ t‹ØÍõ:•¦hÒf䦽iÏžuÓ^:»wüœÛ­–··{/~tw»Ž_¹Ÿ-柣V›Ïw˜ø¤u‡ˆžÜ/™ešÝ‚ð_Ž´8Ó i7U¶¤¼Ëάíùs6öZf…XmÛÚûkTý¯e³‘ø´MâŽûxH?°ÎÛeLÛåŸ:Øl—ÜÜëæ¬½ŠˆÌÆÊVY®Ìá)Í{h<šem…ËRÞß´d>EnN_•äží-˜·ÔkèÉmW£E„¯J?Öd\þ†FŸ®5¾œ×‚vvç¿k†¸ülÝqÊ”¶YóùËä ï,ÎMúõâžoÇ //éÕ—Ú¶7÷УÌïEÁÒŽÚ³¸CTö’´àÙ³èŒMa¥¡ñËwìXŸöÓù(ÔZñ Mò鞃îxtïìçŸ?Ê­ù)¾<òÚ÷÷Ë÷ »ìüçéíݽŽí^ÔÖ½èø˜ƒìµŸ&—…úo9zóËá§}W:fd ç¯]ÎËw?ó$ú½¸”ÄwØ%§{¹Î|Kâ–|kí;ån/†¶(d®–N-ß{ÙCW² %¼wꋹË6Îûä¶¾ó.¹ònq÷•Óz³—ž4ÝÓiï]]”<¯ôBV»Âïh[ùY?÷å§ÞoóÕ¯=Žâ3 ?\|õØÕàxQöÀøí.Ê]êàk;nç &¡ý霳͸ãÖËòÓ–}«)̶~0Ði,ÖE p½ÍpÍN^î“ØøØtû¼¦±¹…¿þöÕeúz󩻞{?úÙ­8Ûß§}ØÊÊÉš+öÇv~&ØÔÇ>?ùü—A-ÛOÈYäÛ8¥»íaçøË9òÚÁn¹_¾_¶î‚èvîÓôàÄn-ß·)ûäŒÔ>¢tÅ¡Ø&ž7wc3ø¥v¿ …Êäë3Ä{c¿q3þáëˆ"RÆ(ÔRèåHÕ ûªcü‚#Õë?’†ZÖKü×[ÿ5@§|–0/K˜—%ÌËæõö…y½Þð'ÓAcŸ0¯Ú)ÑqhÕÑém¸*¨Æ­¥#Ä_i„µQÓW¡x…iÓª<3„·ÕE´ (“€qP%Q…Aå¬ \n« @sDÎñõáÀrRÄ|Áéâaê4 ØXµEªê鯶°ªÈ†IQEzð†IOÅ”wÖ®RRÖ@[Ÿqi½ye¹G^o¾2oÀáëR'Ä€Roee¥GùªŠ¦÷õ¸j®%Xôo,ZË 60H´#uÛ’5pÉpQ BÄ¢§P-ì lOp±á¤xcRxt­¥«{kwam'¤.\ †Êéqa1‚%Ä4/&ÄFqr ~ËЬÇ%Ž^†6®¬. Bw‚ »k°:Ô-‰“˜„Ed(IËå2MJH†“p8Êáb^fªÛìÁµåXù-?ÿ5ST*…¡Îu=ø­ãùN‘•Î)xþKc”åþß_zþkâÀ·kg‚ô€_ÿÐ ‡+k꨸Hu Cvª5muµäݹ†Ö‹Pá¸X„b’—„ASµöo®ÔíËH£¨ÁƒšDâ8"BÅ„ˆ a•Lò%DÒµY-›J Óµª…&ÅERD’´&«4OY;IpOî ÿúRjÿ€k›U Ó2 G(#Ãþ™‡ôÉóÿÀnà6T*…wL¥RMÕ=ÂåäëZÿaz¯Jë?ÖÇ-çÿoäÅc8Ì\IŠ9V 3P‹Åb9ó½s2±LŒ  y{í?ݢ̺ŽWÿ¿ÆÿàÀÚ«~þ‹¸EÿßÄk£¬3ý| {YiÝ· ¡£x¥ªG‘б¬ýB·OWÿÖQ,26ÔÅ0ÃÛו¯«ø¶D¥•qúxK†Žôïï/®.šuLŠ$FD)•`ûôéï'õ÷ 9h„iÜ—–—¬¢Ôq‘Q*áƒi&‘%2žÅTÆáœÀ–£i Æ3´L.£1ÅM#³‘Q3¬`1J"Ãd0Ç$G2–“ËYŠ¡äbX‘ALóÀ}—Êb¤Úc2“ø¬„'$<ÌaÍÂ’á<‘()' ‰g%c†pÞ©3‰K…¢œ„ Äàh„"Ëå ÎÈpš`Mã†pš—ÐÌSœ<`YçaR| (D&!Y1LjÌ<ö$FeŽ!´„€•LŽTS„ ¢y”Cµ…ï)Óà\´iX„g8 ÆŠÅ0­'‚È8D,s¼Eh°M3fDO©Œ‚w£Lcã¬ã£$>Æ#€;<+§€Dƒ9¤y3$óÝ4,G‘b1B@äd8‰#Ça8 ’úëå˜1çFþyøþãä‡3]3EŽ_ ?.˜0~Ð[ÎnK ;å´ͶC]Zgˆv¦:®*t:d•š§Ð[ý—h8‘ëOôï3¬UtyÎþ¦¿Ýk™áá蘹Ÿ‹éÕ±åí8IÉÓ^÷îmoúݲ)'ÐõëFVP¯’\¨l€œµkõI#ã§å3ºonlüÔ§éðqM+ZZ§ï¯tÿ·µ÷ôÖú?"‘Ež111=:uZQpˆh±²àÉŸ×ØEAâÏÛóÇžÙüŸVíÛáØÉ11Iâ¥â‰²¤¹>"•Ùþé†G¶*ÈŒÃÚÛ2Ï¡€‘™žÇ $Ä»„^ùn¯SÞ¥K—vxÿ~ãÇÇc?S8̤" 3¿ùæßddÑ¿d×$§Ñ"»Á)„o\\\éýûÃGŒH,--uò>}ú4aáB¿à3 ÊÅÙù㢢"ðû©]¯)J‘K| X7!£J­8pÖùMRiÖ=àa›¦z²vÍ(+›ì{:+ Ãy÷ïOÞiýÁ+ã!㟕ÝOXUþ Ä¥k×.íŒÌY6uMÔóay ]V­ZåtÉ!üÒŽžQ{Goå{PTà¥ág¢¯L͘úôÑ­‡ùÒ}·''ò#ÿžë€öËËËKOLŸÙ²cÜÔHÀÁî_t™¡çÊòÉnW¦lg ‰ ŽÓ¦MãÌÙµëÈøíÎNNÞëFm:œ¾"ò-ÈQg¨T*Í•©“¦Ÿt· ìnÁöÛg³:Á®›XÙŽèׯßâk¾ ûöíë:8es`fžëÑ­Û›vÔú¢­ñO>¯4mãs‡®;çleõåûMϧ§;JÄâÄ›wŠ‹×Ì™Óbñ 5:;wî‘àêÚ¦p[XÀâãÅØá…«úi{k.]t²`û„s‚è½¥G]nŸ^íÇ}Ì ³A¢÷Zè»È_¾yó° à¡ø>;·×®­ì<`Þ…ytxÁªÇW¦íëÇ–?y⌢§&¥~óP*½²n^7ß©§Ò}f'¦¤¬5ë›6ت~× âKâo]úÇgºø%¦¥m¸¸5dÔÍÔ#GúøøôèÑÃ÷?“îžÎ¾2qéÒ±éCy¾¸õO6-[æ_Èf“¾ý6óàAox†m)D—Å–úö Ú1(cè²ó·Îd$-\°b=˜‹X£Ê,ŸQ|"m]ÞÂnë€ðí~ñçSÍ ?·½«Nžu¯(øùÓÇ£îí%ãžMzzõûÏo””d\¿~Ý¿dHšûÈ4÷¨ÓiÑEY÷ö¤yDŸOìpôÃ{Y?zk+‡ÌÜÙö.náZïó”#ý¾²òlXñ)SØmŠ•AKSö'­Jo¼N$ñq>æ²(ë«……)îÉ_üp?–[mw$ïxßy'f¦²Ui&~3ûË•cÚIY•@0,ͨù™jQŽÏ;_ל½;û"îÓ)ÉK¬þä‹â_üïîœ{dòŠ"niÇÅ©zzóSv–eÈgc—Žßúkßea·ùa™ƒ/|®_úlHTJW[©“b<‡Ž>l#’ŽÎ*?ÚkÂp&.;"æÐ€óJ{¡×Ô Y\ÅŠŸžôÂ"ªPͳNîÆŽs‘d÷ûV]·šRZuÈRx©8-q?ºÕÑ>óå+ví²”š üz¦Œƒ§¥ÝÓÐß—Ò;8t!-“ Ó38_Àb6»ÞÁûƒOž§O1?Äõ}Ç~ç†ÝDñÚ7O®™m¯Ñãý0o×ÿ¦·úÜÏ –‰—·O£øXˆÒYHvpÄg <‹ÇËø01=+Ôme¦›T˜YŒlT²ZqᲬæâdšÌ•Q¢¼XFåÖ BUýß7+ÔVš­Mõ+Hg&Y~„ ~£s÷zEMÇÅÉ‚Æ7¤A¶¥ç:}xPYš²ã™BPb]æôË&J2ºû÷J’?6ç!Ý ¿ñêQÚÊ 7ŒÀˆ‹ÄµÊÏwÎ4ÔÖÖ> µî&"BsðÌN÷<•s3J ‘½Â3= ½ã/ÕEøgs›ˆ.y⨟ädöe/4ñÔÙY3csVTîàÏf ¦Ðዬ×:˜?E¤…ö’ã‡4#,y'íoL{?%z™ ‘_ffÛŒÜFú×—döz˜sõÛ+ÎÎz*–  U%žK¿qìé;ÙUqý®œ§nÚàé9=Ѧ_´ÖëuS|³æ•YQ¡Æs½ÒCÑþD,(4tä°—¯@Çó\˜——7–ÕükcS¥ÖÓTÏý¼XF=ŸžDžœßûæ7WçÈhhJ¶¶?ÔËÞfs9f¹•ŽœEBÒÇn¾Ö—¢^ç^éy99kvq´¾+æÇظ¸ßÙgÝ€t¾E€ƒÉbÈþÝf~$z•|EUÕèÊU7Ѭ¨XÜóœôœ `xËà#¥¢'Y?Û"Ÿàä¨ú£Ÿ‡#ÇÉ~+&*Xõƒ¨GÉ,‘åMÏàúRWG#£X·26 d0ø®d!±Æ—ôjmüMRä l²½nob™ RÓÒX·TÓ32$ªTñp;Þ©ÞÍNNæïå>üHâ<)(•g™Úž@óñ™‘‘è*ŽÁ{–<ãqªµ=S«aU³ГÄW"˜­Qnéºšà”½ŸK¾Iþw»<ŸZŽÿh™‘“½+$*j[õ–þÿ¡Å–vw¡YÅí©J…éj§çrøàÏN§§bA>È9;W×NEÓ Vg‰ëñ†üìáÞ^æ}×52›óղ޽=:B”ÂûÔ¾]C'£ò%×ÇÈ—yDZª&X0Ùê±$R½Ú1ïÎÝ»Ç ÁÏ'êð01“ŽìóÔK³EðTãØ,Ôóµ*¬Sš÷÷æ›rÜó°(DƸBææL2W‡`ˉŲšð°!ñ«Y”?×­dü#‡µnÖ.ßùRDì Óðmg`1xÝ+vêo=……„LWºËÊ´k]i99ÕA(‚ïNf{;–,Ãw­è‹€6°ëuëæ@´¬Îßß_½Æ¹ƒ$î.‚ @ÒŽÞÞr­ÕŒ$Oy€'»`s™:íÎ4F‘œn K@Æé¡ w X'UB¶·…F—s¾/Lú£qÈZÕ_—!##?àÿ&Jê¡H-“øÔ¡ûêʽöúdÒõ¨_T"AcĹ¾®Àëj‘ÔáöútóubónBËê%&Ÿk)†ˆ–f¦ÆgháføGçɦ‡’ðdäiD]ÔÅÅÅïÔãò<VÁÁÆþ¶Üe>V¨çº™W.~t»¥S⼯Ïs<¤Ëò&t``àh¿•ts=#iä>©»îf¹Ù0]ú·okÀwõ7ú£à’꤃6`®žÎI²x\sasÔÇXø d„+¸JÖ·cŒ×Ç^‘ö6^“¯Ý.ŸéŠa9Á?”Lâ‡'¦Ý±¬ûû´µa|7ª¤#àÕG4¬ÖÁÆö9WžX­ØxÝ©þ2A9W5ØVÀM§0ü#’Åqðð:?Ú^>S-ä—““3É ö%2R)õº:éK»¡éNâÓÉQΓä$ (A†–†&³q¬pòãúx­_ðöj•O‡¬þ|…Pí)nŒ$•^¢çÙ|àñɤզŒ×Å CØh®‹Àý‰FÁeoÇSŸ×_É“ºï½³ÀÝN‡o#$.ÎÌ|.ŽÍéå®V ¢`0K!ãm+ÀlÚ"¯­agZVÖaÇøØØlãîX-n±Ž¶¶>HÙx]oêlLW—ƒ/+¥ìÃÜ q5J-”ƒ€Áh˜‘ƒÁhþã=³ r¤¤.¨=‰õ¼9CIIi:þÃH½Ø8$ÑuƒV£¾«Kò%''¤~—À–WV´=.Žú/wë "¨e6ÖúÓb¹]~Ü€(Ö*Ú ù8žüê®ÅXá+ãâñ2/3×Ó¼òYO °Šššñ3΋hZ²?>ýÞ »ÝÚSígš²YYYâRRà °‡”±mÚ¦îæÂÜÈІ‡GËÅŧC}öÿҬ̫k¢=Ö‹ôðÕKÍ"ëCa–.eÖÿ‚÷bãn@Í»:*³kk&Ó¶Ï ÕÕMY"·À9ëy™wçÎûÎgåk MËJÞ¼éËw}¤^ǧÔˆ <ÅÄ‘~¸ônõA=@É1ÂŽ–ššºr†Ø—vß=NÔ<@BDzYÄîTm2hÔ¿IòPï?@z³wÐÛz×îPðó:çîEa‘l@H,ÆEÂHžYYY…°nyXv}¦Ýy×ÇÒ˱À** Q888×*Éèd «Z%==½²·JQqD–H¸l~(CÃÈ(kÐ:Jl@(÷!µôÀz÷–ÉPá0RE»¿P¯Éþ`I¬¥µusXEgø›XD~Ž Ë*Çíìæf¡îø— @é0Ø$TÚ­B‹í óø|5)ª¸¿Ðƒ«$^ùÎ)àÑ€ÖóR圣ÝUôÍ+,^L`8]P7#ÙÞÿuµ¥¶Ëâ€1”œoå†,úûûcy=.pNcò:¯®¯YMž ²IREˆc6V˜òí¶çGÍÒuÅÑ#ª‘±q6PA?TŸÚÚØÐ:¸óx,þii“06¦ê°1$&,,l6œùõ¹N¾Ûn­ ¤q]O¶²><¤V^tjB> .2Jè”JN®¥€ƒé6ý[Ѩèb¯ÄëÖ³ÔbR9Œûàýƒ‡ ÆvÅýWEBÄÂã œÁe˜ ‚R#¹¬M Ã^…/­­eBÔe>’Û– €Ôwänû|ÓxMâ¡7¯’㧉Km¦ôÔlƒ·€Œþ[vãß.5hER)½ëÄrº *ìüâ_æ°[ùˆûLýš*ÈþD&h?¬°›ž^J||( rVYZ:4¯{pPAâëS9)ƽ‰ZÏ\I.--=)Ï]ÌÞhi~^.{WËiè2îh¦´‰¥È^† –‚<ô<‰ˆÒ6º¦†B§'0˜*9þßegže×t$W uh¡%¸ôí8³Æ$gφëÂ@)z•.ÅðyÕA‘NÌ™©Uíè Àv¸Üj–þäÚ!fÁdîç»áðºÒ­)Yž[¢Ç÷ßåÀ¼c Gʧ×ÿ¨k¥?þ ŸEì·Oü­ýFiÌò£´]ÅDC‰ú–;·‰áaÞœÿU?mëìATbØþ Oµ¨qÆxÄ]ÿÆ{RϳWõçÝV/ßOÛõò@~‚?áßB«¦œ½}I-E2ÐàµsS§Óâ22åP1cãÅ?‹OÓÐÚ**-- ²£ª6m9$A#Óª“º„óøŽÊ6q†øÙùù8—@ WîîD .Ç-YkëÂÚÅ!‚GÝtm Ê=h[àòe{ñ•3þX¾†²Ù»GÙ„$³,Äý"'¢! ´•$%?Âß&NW>?I7L˜ŠÈå[§)ÿÞEy¦HzòOéÂÒ;0)Ø“e@…ÏÃ^|ýƒ±[ë«g_>~esÌ9õ2«”H Õƒ‹RmD –ñ‚Î!Lõ <³´L^‹ ˬø$ £¥Pwu ‚2Ûåp‚¼ƒƒƒ·qºÄãÒêÀ$p*ÝÜܘMU‰|Ä'+>ß>=Ùž”¯©­üôI·zgùƒG­Í¢ˆ¿Ÿ_&xõ*û¬'íúE&ßÄ)D„……¥¦¦¾}¹I‡‡!:}ꪑ0—wÝÙ;Æ…K&ù×ÝL=nzµq¾:BW¦iWõsÆF¶"¯<µb‘8v«`F€{zû' ßôAaˆ‚ûTpÜÍaÒ­ ÒÅo´Ý÷[r´¹xyµÃí7†²wë«<¯]~2YéŠ!àó¬yb ¤10¼ýàŽu7¶¸³v‡›íþ«ïU~aú3\ ¨¶0þR= °x²ù“eë #¤Ô¦%#¸îT®–è6Üqk…*yX¹-xÁy™\¨M}3µnÕvoÄäÁF665ÕyÜĈýÇO‹… ”8l*»¸¹I„Cêâž¾ÁåP›uƒ‰b€”/_°Ï//;õ‹ÚZZ„•s”ÈÈÈÔk]K-ëÎÅz¸"#"Ò.wª f>t¨?õ8ouVëjq=Û%³µfîàfŒª0~1_îˆDFA숤ÉÃÚå º—ºàb ø,-󧦦žˆUVVB²´Ëúâ«Wï¢RŠYZZ¦]f‘ìèî~Vºµ»lðEI¶T=ÏÖÚšFN÷]¸¯¯à‡:ðm@ÿ|j7Ì®‰+f[1—j~¾qe(1Í<Õ ¥¤C|D-ðïÞ‹E­$ÅN÷†ìýpº¥p ºIãÂ_--í£££#'æ6JáîÇléih^‡‰‰ÉT©YZ¡þ ¢õ³ýÅô ÏgùÚ +4È¢?Æk`¾)U¿ù½9I5ÛªõðôàÝ¡’„¸Ú4Ëp¸Oÿ¢†w>«¾Ý½m” —p.o›5ú!‰‹‹4øÞgÕý «=_‰åNÌÈÈ躵µõà²V[ÊÐðˆâ/_¾|Pg:”)à¢~¥È¼øçŒÔP…Åu| ,Sûßjö]:q6PÔY*ÚUÛe“/Œ:¾ÐŸÄ1ÔJÅ€zJ%ý5.‡ù.5¯,µo ¤ëwƒœpø­þMl+ ¶lð'.uNu—[4-÷æ›Iro.Ã,)ˆïGÿ‹qÚ¥Š×:ç÷;¸c­vi oy]¤·VüK;¨ 8SŽâxk\A£ÜòY+ãÇ:ÚÚÚ̆ïägõ†²‡ [–µÇÊÀ@ɖϸæwE“·È›hb41nqòBã7f[ßìŠÊêl…Fô_ˆPˆ|¬H9¬D¾¾\ó,®·¸8H÷l”d·AˆWÏ^KƒÝU/Ò÷‡ ,u—PÁ¤²Ì‡: a‡€ÞrXhFò¸>åtÚ‰O:Ì|GA\`ú“µ§õ·yXŒ×€ÑìQ €hP4]U¾ Ådó‡‡9¿ŸÜ¦Iz_TÐIÆ*ÍΦòâ|°ø$Ôw³Ð¤?•Óë§7Üõ<#Oóå¨È/Ø*úíÏ”oü búݬëPw+dFnÖã4÷r«øA1ckaFñìÍ“âfz7"dx?Û/׆Ê+(8@:\ÎŽÝ3†úÛ •ßæ£Ê!È…·³ÏŸ>UìM„ì­ŒéÙÞü(wÏqæ7¾ß¶‹¿åêl^lûrÒ”§*5[£z‚ ]ÖÊ}ß¾†Àµ:s4—í$ô,S0º´ìi 4¡šÄWõ…`šGüæ»æ§¥¥œŸ6þVYQñ @k¨k³ø‹öùs™–Ôeàr¼½a$@SRSK„C2MEÛ%]ä"¸Â@l<Ó©›rL€|RJJŠÙLM%ЄMܸc©²ø+¤bL÷Šü¢ÕlÐ’UË_5–VV¾ÿüÉÈY _•n2}WÇå´â²Äv ° ÛJJ‘úÁ}\ÌW7waÿh%ï—…Ô­ÝØŒ©lTW» Ørñׯ?5+“G]ÖS«ÓíoÚ&±AíÍéµ82/OwULL2·ÇÞ²ÑsqiäççCu€~vð÷ñññŽŽyw÷ ÓÜÕTHúÏ]üòÒÞ.»•.9eå¯OÖ‡²Ì&ËòžÐ20HƒÔ¯]ð°WlccS¶È>ã,©Ë•î¸R·SKH ´<ªÿvÑëu“hÃl°ë~ žDÈlºž°P&ðSâ’’CÀ³º™ˆÉƒ¬·Qt»$£:ÑÑøÔ_l +÷ðjûDFÀ¤ïÁj³Ðl ‘ì,Áƹ­wÏM|Ž/½]C¥;}ØÆÉ„yéh¾2:úWhP*ZòªX¼VˆV›Ð`ÞâMêjFÖ Yƒ-‹ŒŽ6qÃì/ÐáƒòªìD§µò*b,ׯ`Fîsí\ s+dª·K·Õ!%ÑØ»»÷éÈÈ^èѰ±Œ8ž3×€= ®^Œ°[íÉvˆÓí$÷?2aò§O˜ÿ©¢œµÿýþ§fìöÀâÁpÊ@{ü1E «»»bT¦c…zÌ€ÚÛåšÐ:¯Y®p$î¢ÑŒã –ÞXõJT:SaïO¨ÄpxW[~PxzVúJD>qÄï6êµ vo߇ÉÞßS ‚‚¦¡¡a¢Þ«~Û,ÌŸâ°{VrÎðIdTTÆóº³FeŽ<“¤¡¡¡,¾¾¾Wg6“6€{:º&Rï_ ʨ¼½~V¼ËÒb¶®vÛD ÅGˆËÏÎÚQ¤@Þ‡––¶,ðqThÒŸy–hÉÅZZXG—CåÁNo¯LøÒÖ–æB Цï¡#qY¢¤¢Rv–„Ы:_ÆmóTbBA3ï]~™‡ˆÚ¤§¦)}X›ÿ5$c¡±~Qv}vì„ieµ+/qOã)ní^#ŠÙøtHƒOãZínÁÁɽ‘>½û-ûquÛo¾†ñµf0;×rÝ%×èXK•v纺:Jä@$$¤ƒããRbmûE`9´]–qppq¿žyaŒÚwආNjÏΜ'7+*8&ñÁŒ-Äy×›ÄW@êuÕb½8°OANþ„>äÞ]O§è·Iˆ‰ò¯  bP‰I?yú÷ïtä䂨Y{ÑrDï (gçBÈŸ3›|ó¥t[ÔEÃEÓì?ê¸y×®¿ïý“B†ôøWÄ›a ¡äÉ(¥ãq<Ìzí)‡wmü¥ Wx`&=ã·8¿ÿ»Ä;Ì@G'îòîPKÜTpF¦Æ¬èÐÕ?0Ð|k¬$¯¢¾>©Ø©ßvuINnÒÙÐð jBŒ€4Ž=O§^›ÇíD¨·ý£ÿ©ëá® rRà¢5&Ã)%Ž€Ël›ÕSÀ w³ÏjG1heC2°Jå–ÓG jéž”ÁeÐÌ”á=o¹¬ÒÑÔ$(Ãw]ÂÌÌÜAl5þÃjG Õy¸ÁÃÛîLUŽ~)Ï·±XÊÌoªÜSªB>ÿˆ³6€Ê Þf£É¯îBY < ŠÂîLíñbßFœUœ‰‰Iz»Ã†"/N3.;5‡Ò;Sj ß%+õgëìíí-«‰Šˆˆ€Š—@˜ÒÙ˜ª,Övž‡?ÞžTXúŒ‰˜ý”Ñ‚$×ãôIËên¶__h°11“Ix\3ÝNwÌ¿‡„vjÙ_íM*  È D7ÍO ñ<Ó/s4žJòüøÿxÞ¶½šÛHͱH’›)#Åù.¯¯ê.wЉuvÁ‰wåË­t³š‰¾¬2–ï4÷¬u–ö  X~£Å4Îìríß4²X¶ÉúO³U–æõ3|ÍeLº¢™@RËÊˇSIÇ;Oº¦üÝUÜè|^_ò,Î!½î.—~äÙ±Â*†¶HJènEr­„Ìz’Ø…¥kTå !ú¯èkº(ëë§hiY\~̱¸´)Íãf8þ4¹zãýöd¹9ØN»•@zÁ Äsµ×t ãOøí a£yr¯$¦ìKê%}KºqϺ­L®9ôÇ#Ì“—{U”Û’þ†—«âuÈd…²ÝD•È„ á2‹É# §Mgë<\T°Ø†zÓàßÒ nüéÎ4Ôbú?¤Š)ï”v9TG:Œ“«3ëP›íæèo(U”šdX U0í0@i×ͼƒƒƒ7šyÌîÚUù{Pý•zø+UÉñ‰¨fsoó„ëUâWhñp”æó´–ÿ¯ƒÉ“vœøÈâ‹WŠlŒèadLxA“Z¯Òcó¢¡y¹çÓÇò›f5-££*>|({”û—üK[ÿñíã=ñ/Ó„ƒq×A| o ç°¶asX'_XAã¦ëeýuœ'×ðq’׸eÅNDCÌz…}¬P……×\:‹OóÓ¬á8´®_6t8\n—oî·’ªÈÉ}®MK¨\ å:3MD¯zYã/@r0ÐùæxQ”ZIS÷™’‰ƒ=ö¿Âúö|axe-Ž¯Ô¢Q9ÏKÔ3HµkôäØ˜G”:F¾ñÎá¾–‘X9°“G…ògBô¸_”T,ü‘›š“Šæ½X£P{ŠËì]Yu’»üàw)…$^û‹#Ó奥1J>°qiÁ¾P˜0+lÃgâÕpVå [šö^RÓΣûÈÕd˜Qp.O9 ¯rs•s‚Pžß¬­ÿúÖ#XpY%Zn¼±W?éòBOþ@é“]ÑÙîÒÊãÞ‘üªåG¤¥•å6éS‚R†lq¬z÷òÔKÅá—ú«åç j™QƒñžCmËH &[I½4ø†:ˆ¿B‘¤éé°Ö÷ È_n»³C®ÿi—n-oÆ©‘ùt¡3ÚÙcUÞr×ß8Üß+ïMe÷+5‰—3«¢Ôô®N_NÑEJnÉæêwµ›ê!ëD†oKôs;¿ÌÆ+_Å\‡<÷Ù"w)ck/.͉ŸÊç5(c›O!P: ®Ž^%h©=*Wj»I½éMÖ°ªM¯©á®FBŠ'P?»—ï¶Æó|èdˆx10ʵÞÁDÀn?08UùЈ9‡F×{í“9IyâÖðꄼþ”œâiuœ ùßË7‹ˆŒ-¨ –¦ßî\²i„®E…ÑØä¶àya[ö Œ+¿µšPÚ¾`SòÅ-µ«Ô#É»¤ø¬‰ñ…畳T¯ЧE"¡DY|×ë2¿Û+§õ·ZÐ4„ˆHÀ“v×—§£±`ç´ÒñðL;&€¿˜K‡f’¾KÆÈ§æåÞ1w]zÓ°i·u‰2ÁÁ ç{3.'5Qù;Ê~O[y»féû/ž—ÅÄÐÞ^_ö»kaf®°GòÜeÛuO‘L”N?ù”‡] H/ {Á²&á)UjþL‹á¼9þl®©u} 9$p9e±SÆöÏTù­üªVÞOõV—)·„ÜÏk‡fQDñfs0o‚–¿ãnÖÖlCyb!“±O\´+7ˆåG>Üa5™OÉÓú–[ÂÒÞÔ«¢^ÙÖ4:lÙ¢” /È¥‰„?yóf•žä–l_4ycã[ªœÀ¨pïÊGáIvVSåG•®As¥÷X ìð6·7ö í¡¾uÙ, .Ö~þm)‡±^5üÅRÜm„†o'" F§¢löŽûJs‹8m¦zbk 3l²Üªà¿õV¦¦¦è^H 3¢‚êƒ ¥Í¦«Ž´‚EK¼ø=’ž)œ`Ö¿þƒÒ/Oþdý¯á…ìRÕ 69O@ÉOzÙ¨XѳR‚QéÐјæ5¯OÜ\0¡]½u9“7Ì{öû*6ÇÜ<<¥†í I“­ñH[)ù.¿«20E Ë"GŽü®4N¯'2+GbáiÁd½°ˆXÿŠõÄu‹­X ‡¸nåyKÿ%íj-g2…RWWñõQ®×åäìQ#Êó¶éi-àe†Ðí7†h·ÇгW=Îæ¡yð*´$)$Uùæ@qgÿ1-L»B.Ó7_ù쎃‹½ºŸ×±eÕþld}ì-”´M­þ`‡(LmKO0‡¶Ï•«hs+íA#ý¿«˜ÞêKC3o=öíkž´·¿J´Ð\¿X`n2ôbLJj"f+þ¸ÍH/ž¬±0™Í~âåñ‰aÈIÂ6(÷PøŸEx¥¼VË:¯ú[ð±É…3éKJÖ9øD]oI²QœPK.šN^ÓpxU†$<­8eö™åó¦wËO½³?9¶å>¬.2}â& âÿsYœ©}t–Ÿ5 _FŽS¯Ç¡nk8ª‡LF=é³ßßÝ–<س‹ô}ˆaËDc?8R3Œ·$Ü–Ø¿ŸI.Ç|´½D¬áñ;°îÃd›¾\/Áÿžk_˜3Ô,­ #ñÌ?¸ ì¡^¥µ´ˆý!³Ò©î¾¯ !óËþ@*I}€ƒý<6y`"?ú¦&ÒyvFN½‰±ùêëD–TÁ/[«o¬«ö“ª:n­à²ÿzÙ(j¼Ò7"i<_r7z7üÃNðÜÉJÑø¶Ä¹8è x¸"DŒ$t8Ø“¬ ;9QQQ@}ªd6G^ŸÍ‹]_õ©ÎŠ…2äžÜ‘þéQѽݤŹŽ}Ò>Ý©2yc3ÿËBò`c!*[¬×·lÚBfú²‹¥ïj%©·pDZÃ"ïrñ8'¹½¢r9«ü­ýþ _&OliÙŠgœ.ÓPŒçæ>„W²e~™i£[f7hu»D­ðú÷ ‚ÌB`Æ¡~H`.§E –%°ÁŸ9`_%Âõõõ¡ICÿœ,wƒ”‰……¥^¨ûŽÄ}ïÕòêªy{8%åÄâ⢋êâÂpï×ÿ‡ôLPQU¥f‹pµäjiòïÀZWÇ{CFï Ñ҆γë²C':Hù8² Ð]ä-ºó…Â×[‹us ñùÄá ’›h–ʺéàw1Ôßn÷òœÆC•@öæC™r® ¨ŸˆÍÏÏp9æ=*Ê̤ÿ‹ýFoÞ˜ìOÿÕÕÕ•Àl¨Ñï¶!H«Ø—Ó©G~Ü8†8Y»¿ŒN:;ŸeñŒ›lQað©|•¹³IJ<•1×tr°3Ð7c³á_½må:ï·h=K!à H"_·ÆÈšKl—Å¡‰Í˜˜˜ ÷ïûâ_Ú-mlÐ{@zHe2œ­þ­°ñzù¹×g I=3ÛÉÿÿ^l×5²Iù==½‹œ‚¿Vc$±Æ_+ü›7øk­·øðŽŽ+„Ô‚)©Ùï³"½ÈR+¬Ž½3ô¢MJj²ºèŠàS±8aÚ2V0Ï9i*^9î²ãJ>·2Ž7Gÿ™#Ÿ´¬–²˜()rB‚51*~&]\íŽË/~cÞJŒŒŽž`ȪSÔ’ÝõÅ=á’RåQ»±QÏ`¥oe‡T13¿Â4Km4š>]í4ÉEgöÈÊÊjÚaTë$þ-ž7+3ùFjØÃ§þ{½„h‚¿T£Ø8Èdÿø÷¤6½ò‚åOh´¦ot9–Í";:AY0{âÙi¼p nÁE 7·f’çEV-EÊW[Ûð}pé°Â—5L‚³ÒRÊõå>K³iŸÿ¼m.”ÙZzz)O”LHèFûŠy©y_ñ ’Ga«Ð·MwŽŸTef¾†&â•ó5M[…2¥Àç,°Mn­0ïÇæ©½›sÙÅØªïısAgð¹`-u†y!Ýý}r?@náø¤®tÇ™¯¤‡ƒúðUoM|ž´ÿïÃ_¢¢T®!íŸÝ¢¥ ‘Ó«Éû^ñ;Ë}[l`K õ+dùKÒåÿ«ENû·}N;y“SlÜ Õ”Ê,&¿ïÖ]JÐÜ,¨·,ŸHhVùÂú‹o±œ§èÙáJwØúmA‡(O|ŒÈ‹]*q.à s¡VU!Åß·:ý_Å­òÿXzüFq,0¶¶¶#ñíß§oI³ã8lRµ‡êêMiÎB¸Ùß­÷¿¸ÈvžŸŸÿ šxþ?}vx1Tsr055u$棠|÷îVÙ$®£¤Âé#ô€;®®t1àU†ÌÇO‚õJ×#žÃ.¨É•&2TüFÆbºªTˆ´‰QÜÝÅŪyP’¼WüÖRñu¹ŠAg…&ØW°Å3÷ôøXI_?u›ƒŒìU]]JT¦ÔmHÕÈæ¤Á£ÆÃÕ^ó?ó©áÕÕÕœN;¹ 2Ý@ Në©B‚/Ó¨ó+Ô «rؼIªu ®ê¸½saMÌïá—DÛfþú‚ª¯±Æ™q_’«'ƒ>蛥æÄ˜g=Ž5]^¡¤¬1$·¤£qÛGøÞöxÆ s‰yНžïì\ > sóܹ‹‚×®g5þôÜ¥)¾×%‰`×fyyYµÆ™é­……ž™Y·7Œ&RÜT°±ñNVVÚI‘nÃU ¦`mihi?wDŠSÞÐÕÓƒ“èŠe• Ã»ˆAŒÒÕÝ]d1Éó...º õ!$xÈS›((õÙ¡Q8Æ(Ýÿýû~s…„„†V”u»¢™hèèAÚìL½üˆÏt‡B4´ÙÏlHJFFÔÕ•sgº:|í1añ›^K{b‰ªBjSqµW”=8&/Ì€ÿˆ~iGñ9>þcròcÉx¹A½R7‹mÖì¢mva‚Æ_5Ê_##õæ~¾ˆþ3”˜ /°þöz×y5Á  k¿«K®›€ ìB :q#È@ó/LLX2I"’’¨ šÞ.‡+d””ðüÇu§'''t—ªÅÆh ˜„„Á€I,ŒU9ä(BuöæÖVèŨe›#éUö ÆÑòçÏŸß7,w29íhÂøååÃÁzy±¿xAåê:âµÊ#h1Ô3jO#$ô̇&(õ»ïcròÔP# 'öŽ…‰IŒ/WIj¶@óä}ï¢Ríˆ_‚2«û³hJõ2_i#Å»’øHÝN¶à`gú€m>µ>Ã÷ØÌØ©èPz<šùÆôÖtQÖhºÊÃíä©ãö„Òâ9X›ù…–`` íü2åê °°X3¶šõŸ¸'ù«ð–ù&·  «¨¨ÐÝ©]ÌÀ€=æå%ÙÙÙ0¯A$χ‚‚ãWTÄþ.@Èn™yÍ»²°àãqyXR‹çqÃÆg{‹KV)Ð>;_M2oÞѰzÅ%ˆyylb"µ¦†ÈÕÕ͓䭉äÑÛÐçâ¦ڔڳkcÖFääfN>‘ïß¿Ÿ¨ik{ÝÇ^ \•C)ñU÷æêœ®wxdDD-f£DZfÄ”Æat±UïÍê–4:-Uy¬rZE¥  » , ƒ…fÈR£¦Omì_Ña Gä„ud98_IQ×?VP2ÖÕõîå»%$ÑÖÖöóM’ǯöaܾ¯:if·ûlúéŽ@É¿´[y},.!ÑŸ.GÄiÃ$&©ó¸lüù†ŽŽ./>[%O?€ó¼X§ù—£ k ÚƒWQ:šY[3ŸÙçÖœqgï)FöOÑ>–ùª¡®.nzÂÙ_ ?³½ƒúŸQ×ûE%²âìБ!ªÓîLdh^^¬ªªJŠ™Ê•í.oaÃ+:šÊòTÇó–òÉ“ŸÀp*ÓEÒ<}êWWçò–\XˆéïïOCC¢ùÁŒ×­*)oœø4H©á•´ädÎ ñ£zmjòB!r±¸'@ŒI3577 ÕxÝÖÙ_KÿûÖJÆwŸhtO4Œä™±±1[v¨¯¯/>)ésbJ[a{{û/=^5[í6#¹²4BrØ-@°ªïóJ+Õo@gè8ôï1±«Ñþòp¹jàzu%3‹²ð•OûvðÔ§Ctf;\äXxH™çÂi@ñÏb ‹ÈÉ}614|’Èå$-,ç~¹]ÞÀVü8_§ž7HIIia}0C©næ%WðúúúÀ>~á7oÞÈa @[ð½±Q1Àʺ™¹!C,u]'"44•M'̤o^q™Ç×|..8H÷T£L’ˆÛ¹0úË—'35. G''ùû7^×Dì–ñ·+Rûa|7˜÷Ñž@'ê±[6N#kjj.!q¸ŸYïÙ³°[ËÀÉÉÔP$yð€¼îê 3U“oÙ¶òì óyðíÅhý7^’Œ £~AhÍ32Ê@¬ =ëlon ŸÙ6·7ßó¾ºrŽɤÏþܘ“‰–¾“mnI·ñýÂ,SÇ!úëØÜùåÌØ¦Ú„ëºÎìVuµ™=‡—]ñªfS¶kP¶tXóŠQaòžnÞCi.Ç_Ýgc{½”Õˆ'ào˜5õõaZÕì#œìL£°³³ƒë}^a¿®¨­ªú,&i­Û©òøMÚ‹a톘ÂX–––ŽÛàö;$ñy‘ fȈÚÛ¿øøñ#±âñht¤˜…2|ÍÌ–Û%ÁB]E \±Å âð_ð÷ïS<Ž”ÓÚD)½ržºµŒø2™j…5Ĉéò˜ ~=~ú•ÿøf{ddäõëײ1•Æý©Âª…ºpà]eµµÑIIIi}Ñ`Oµkðÿµ&¿ò…Á€œADB2-cî­Ðý.X^³Ã÷C)?ÿáXlë9þâ£QÙ ‡S!W¡iE´c ¡< ¯l ‹³ós=€ñÎ{/Ž7U ؽ¼¼î! , e)ŒUؤuœ(¥ë]mêܱš U%ÎzÝòìÓZš²ã`Tn;DÎI 5ÚÜ7‡Ïp^[óÝ÷¦þ tGrÕ*¼nyI‰d9]%¶Ìƒj>š/ TÃÁÁÁÞ´ÓlÃØ>ld`ja¡ìòÒFÛHžFàǨÀÎu>¯÷KLLT´ü?ÐŒ#‰|‚&F:ª2Ò Xbm)•³œú!XÖ`MšFGUò”ä7€xñÉÈ ¾8ÙŽay“ Þýl×ë6تþwŸ†žþ. ѧO7icH­Ä Ĺwû]ØŒÛ.* 7>©×•MÞ!ü+~mmIIÉ·:ÃûFÙJQaa0ÝÁŒYòåµ»Oˆ»^é‰<*qðGP)ºØò"¡â9Þ ÎÌs=Ú5‚@j@[Ã3Dž: 5¬³£’f,,,OÕKA |ÝpØžÀárÜú 4IÑÛqæ\íZ R^¿¢"›<ޝOÕ|rT ÈAhPRR"""zÇÅtóûñƒÙÙÙ9Ùj¶.š×ƒ¸Q?HÖ¤…ñ6.Ú[‰³b»øoùîyɱûu!/¡öº»NûÕù¡Íõ…ÃÛñð@a"¢¢ h×wHž M,B+ªŽ’¯K ’•­·­ ñMo¢ÿ»wpîûÀ¨.õp¶]>;·²2²tý ¤ÇÅQHF“¾ÇÕÕ£qU›rU…CCC¸ÛådZ®í}Ï>ð ÔþY±«ÕùÌ®M2Û)¬o`ççl.«oè< è€hF½;ƒƒLžWgFæ#¹ ÀÎÈÑ®uÕÛ+ÂgÒJ°ñóóûÙÓƒ~÷>º_T° ´ézCƒƒ‚@ö2?|³? ñ|þç»»cµnå/*'Æ6“³ùÈSOvž»Í•:Ôr-ÑÉz‡deÑW \EÇÄ赇S†˜Q“ßñyMU,ƒ4ÀPcc£®±1B¥fþºìk©2í›Ó#A©ÀWà¥Þÿ¹!%B× fщEl¹·†¹ëŒïÕ)ëDÀ5~æìêêú”§< œß=kkk“•Ì̬±š¡G*NF)gž/Q»X‰Ñ±°Ja¿ÃätBeÔcoŽZe¿óvó1ϳ©ë„ðžœÈÒ…°þ~|þv¤ßcU˜“þ ó¸l ZÐVVV pC‚ñg)’ÓÐ Ú+,)iÎU+þöcmÍÄÙÕÒZ ï?~¼3ý1ôÇ Ñ]:::~ÝàÇzŠ(wFr{èÄÚÆæ]eåK`–`4ÏŸ·úÀ£èZX ­p^ÌF~p°TÀ)LºÂ-OÄðÔÐÚüùx-«óϳ«Ñ_j=]Ø`$_+8Éó©5”¸éüpµÈvYö3‡“”4,:?žÛåJ¾fCF’'2,ú…éƒ;wî|Š vW2ö)<ü à—wmmm‡gDxø·*iii³‚G>TTp@Énµî,ùû–›ëK›½¹WoÍÝÇó2^4úX™ó‚ ,ü½W“õóñ©zåq¢$s+¨ñª®„|·Ï°fÑBD¯œbbÑÃÞ¿~–`q̤[†–ïñÎmåq¨ˆ_``Óð0Îóº3òº³cwa…v«Òî7ç«Ö¶¶>G tÂH=ÏàøÍ::Ä£££u;¾Ð¾–”|ûYuµ;î¾ÁÕ"éíO :`°É2‹&à‘u­¬Âàî"èŽækå7ýìÌI7%)®ónkSø·ÃT÷ý~÷ñ߈‘'Už›O_š¥miâJ§ ]ÅÝ-¼Ž¤§¡Ï¼C¼“œNÏŸ{(~þcß÷™!Öƒ¨¦õx]ןՔæ°q9å`‘¦oÀÙOÕºáÁ>}ýŠ **šÕÕÞ.FÇô Ø:z)3Ï£~Q 1M*„Š'ŒÍÍÍaÞùùùGñ)™X«Þpwc_ gçI<tóbAË0_°‰ ´ÌrÁƒýY7¶"˜÷xÕÏŠÞô’˜€?c÷Îtù•Èãöâf72läååì'Û“ô ›³õõß› ó^)Ôœ¯ÄÅ¢ûªgu\ºÒܔދ<5Ä|Ì/jr&¡ˆ5L¯þ²áâ-Év ª²rÀ錽J¾Ÿ$UÄ >ÀŽæI«z4É$^­Áù¥( ¥û$g"Ìáä¶sÜU9ß͘XŒ»~ )§­ $­ÁBóŒ¯+þåÃ8v+”¢F€" ¤K0½ihlœš™iœ=IÄè蜸>Ésss3 ]ˆÃaCîãã³7¬¢CÆÅE”)ïŒÇé´È©©›«Ä1ÿ$ŒÜ´Ðãå±»ñÚxéçË™Ù&gØi–U΋„*øo&~f!ÞaЩCurr‚ñkj]]]%§§ûÿ{MÕDiæä©Ð|=¾w½ìÒ&9qëŠö ³Ð¨JiผˆÇ" @š=€½‰<0˜ŽŽN®z)2D¤"²²˜ØÈðšZZEž×®@y¨f;­õ‘=Nnf¦®á†ô¶ãd³ þÀ¯>`Ì{aAß~[½6|§Á÷þ§vÃXÔ°Ì霧?ÛTbŽx1ØÓ<[h“€Þ†Úæ·o‡DÙ£%zq×aâ)žKLÜÇÊÃOG°úœ²áŸr‡|ö¨ÅÿÐÒV§ýñj’3“…®­eÑéIl°°`Ê]és d$ „ä„€àk§¸Ëù’{÷î™0k’›-r4ˆƒ­E3½}Éó´c?‹axÔÔõc•ˬ,upÑÔé mxét©(½_»Ñ§V=Éóä–×Öôÿ¶Ñ®A’­¢Kgש·§Ù*ý\sÔó}*mØ+r3Ûn— ÷~}|¤`už)—§ÿí5rƒsÈÿ,(•¼œºÿ™‹‹9BsöF»âÏÙ°jÁúâ…òêÅÒ{Š49}-EÆ®z nîåQñÓ+Íz¾‡U´>þ…¥ÿ…àEGÌñHõ¾­‡zCR7õu{’ÛF”ØÃ¯Ÿ_=N¿§„C~ÄiÚÔ5ŒY`eí÷Õòrº-róÃûXt…8£pµ·9au·%CPAjH2š<úÏrd~pø1Ô´×§]§âl¤ÔDý"Yƒ”Â~Óà ±ÊW%2•|¡Jä %™ü ošTÁ\{Jr3qàvÛzzFìñ¥88TÉJÜÔ«î x>Ÿ»G%Çõ '÷LÚV•PµˆhÇìçb%h¿Né›å‹:ÈnÆ’£!PPw!>¨‡Ù¿(4·‘ÿt Í¿ÈáR²³;2ñ¨@fµÀ»vê©”¼V®ø÷ï'(êªþYR‘i{&Ý|´D»p2–Ì ÁÝ…(¯'z—Ÿè9ÎvÐ4¯É$ÉØÞGäåɹàXµ½ª·LÉ–/ŽøÕLmÊÍËÓ35ýœüøË—/¯—ûûû¡Š**êÜÜœw—“¸‘Ïc@Bw€·cdgÕÕ},..þ +,,ä73ËV<µ #Eññ^l k𳍍’ (õÌÍQ@‰ÂÆñõbÁT’Ô 5´%þ¥Ý76‰‹C™ÊSÇ¥ ÕÛž(…yOMiš˜šÎ7að݃)*+˜„™½1Šyé…mΉ È*þ1eÖjøÓšØ<àŠ›îVy¾3õ/b«›>Bí÷ýÃ㘚ñÂB2‚2(‚|E¢ÒúL VÝ}&Oj~ðJßÀ ÈëÖ¸{LrËÈŽëÿ]†aíÑ©v|¨ˆ¸QW{“Z;"é?ÿ7¢nã ¼1 ø’ßÙ™˜8›‹#Óæææ¹F”hv«Dõí!ƒ‹½ÃÃ&à8¾ —‹†½KI!ÓvÛ.U÷ ÌJÌ…BÆ¿¨ˆ)55‹z®#”tFuÄ™“ÜÀœßaTð¢Eà·Èíþ#rÇ­¶ŠW›ÀÁ¼fô1[®gÁÂKÑ»&ë%!GBC5ù;»ó¦øµã¦u^˜ùÏý¿Šƒ–••1¾xÑ<^üf~y™RŠÙÇ»3êyÓô41 ï>`œ¶åuZ%b°×ggÎG냢AëÍ‚0€Á„„…õ&JL+l:Š^`‡qzhVÙ#MW9**b_œîb€Ÿ›œ\ŒáÍÂqò°€lἩò)..—Ÿ*‚ìÅ l55µ±°>¥p­xé©/ê€Tþ“¯¨ö/ˆauq©¶–šœuêøhðg¢˜àƒ:“uäµ C UÖ®¿>êÒDc%¦Â2mC©›þäX“ VØ_é™éc°ÜÇBD|Ëþ:ÙE° ÈŸÏ“ûàð°¿ÚiW}•‹‹K‚¯º²r~gºíDm4GEe”€IM]}„& ªs)gÏÿjN“&ï ¦ÐiW»|”ŽgCºDÔÆVN77·®¡¡ßájïâR{ÄX¡ÞÝPž @ÓättÈi"!ò/î<åæšŸzcš™’Þ2›ð;"Õ_ÔtU;Ùö‹â-iˆ~ÖíÞx÷áIÕü2¥cáÞ–ß•%MwÁý{¡obwÅ0‚Z›-‡øé‚L±,Ö*FÒò]*î›Áÿ¨TäBŠ: =##%+˜ìê“\HßGFâ,Ù¾’ó£ jëìlj Æ#Œ×´ !q¸„Âw¦Ö RÙG›£@;œ(éNLLìœüzw÷þ§/_ü@|ë¯õ¥@Ž×ú`ILº0»a øa³xòœeÌwA2òTã9–\>8>z¢sníš¡«¨a­ AïúAäjó•Æ»ÒÙ_¥Ó§Ÿ#eý‚²qƒ¾¾Wj°«rvQ“yr¬ÑïòlæÄ6¶ß—/Øñ\N膱µ³K?ˆ'Z[[p£¿>óöñ¹“åÈ „%B¾vmÐ_ý$¯æéYwTüáR™åtð€—©#xƒÀíƒäö1Í×;ZëW-·LP_”à «ò€ú9$Ü?ÀÚß©ÞåUŠŸ™™9[~¾·Êwû¨ªª J¢ºó±ññ†žé¼"{C-"TÆ—¿ˆ©/~kùX¸-Sæ8¾ÚZ*c-êj}EàÝÝ©Ÿ'õš ¼³›ûýWE›¼Á/çŇHÆ\~™oº¦´>ŽÀÝuëO¶¶³óf^ÛëÚ¡æb#'šË)_±Î¸›@2öØ¿µá<¨òŽE!òzYá»dCÛg &Ã6Ì£ÝYR222 (U VV&A? ^cSÓ]èѺoÞ‚lììDáq;RUV_Ìzžøë(%##é!Õcbñ^Ù@ˆ…†‡?¨¹:è„Áž?þ%2Òæ8»ê#+# =ª÷øü™o¨™dæ™°£>Ó>ÛeÊ=®#î’cç[v,ӀLj;Ù´yÏH@@dþ×ú(eË*“ûß1"kÅì}~>ÈÚ{U¡¡Ð’2¤î\ ¨à õ·T} §— ¤öÙ•¯‚}w8'7$æOëlùíìˆÄ¢G¼Ÿ(ôööÆÝ¤LfðëcV¹ûP¦Ü3è•xxþµæ©ÊÀ³ïèÜê¸Îom¶8÷ôà ¬ì‡ìMþÜLƒõ?’íýÄ· pºµ¶ÙúãRá §:Lpµº#“˜ 1mÁ¿¿%‘øöÇ_÷–Ê&6¼D2o¿uç’¦ãé]¾ÆºØº·+aã• ÅšÓJb¾P7-KbŒ òþÂl•9ç—Œƒ·Ô½åŽH;`WããcɘÍè;‚s>E(¢¢„Iÿ‰¬OõBÿ˜ñ šÖÑ$_¯%”h¢íP&ø}/öµ¶’OWæ ž 1¨.B¡ßŸ˜XEÍö$¿ïµ§‘¡âåb¼«Krû÷|é!H¨ün™|6ã.År7ø³åÚ'_pÍ~¯€$–äß­%–ó„¿÷JÐ~¿O19d¨Ýöt/RW›EËm.…H~yÌþqE_Íb5fÝÌw·°˜èäx‘Å‘AÄ%òä祵êm»êà<&–ÜC½ ]°Lè–@ó¿ ûÞ”ìØóëÂüü<ðVïß¿&g1=£ÿLxigMωÓ5ɧOÇõüb<–IH­õaˆ‰¦÷¥˜8‘F´SœVrõ ·¤çµGÜÝÝÝNÞ.­¬4vu¡Ú­t½RUŧ£§×36˜ApXÀÞþÅJWŒïæhÔ¦WÎõNJ"õ¾•bääà€Áž>} uÔuN–+²SQ!ü“¥‹DDGÿ˜ ð6…fÃtm†Ìˆ>Þ@àèó?Vdp@ÑjÒYeo•Y͆<‚€¢ú‚£˜ê’l\\ÜüM®ÞŸ?a>çFu¼ZrÕŠ!fÎQ1¯BÀ2Ü[˜Ãð±jüR Ê” ¬ßL±1w²5îËò¦Ç„Õ¬ugªÒ·Ô|ÔŒ¬¥aÝ/¸ˆ´i¦ zê£ý]-ÁgP5î¶§ò©¶ ÿLÞ©À×CT&›¦zcânK³t-»›;e¯“´q8nMÀƆûëׯ÷AAw`šuî())·~ÎÎ’&&&¾––þu°Ü‰…¯šS `Æ/""âû0DLLL~Z”ÖG%WõP üWa»Œ ™åõø¾>Y¨tKBBB7‰Ž!ª¯O.įYa w¸Òí –xmê<6žÿê‘eqï~nk{ÝÜÒ¢w~°  Ï2­U2ÛÁM(_3k€“0#°÷Wï ªfEʉٟ6³‘ˆ]öŽ ºÏª¨(2ˆt–Z*ÍKiÏïâk”NÉ’¢].¿ÏQöGðë©_Ú©]÷Ä(Ƚú‚ÇììxÀ7zKR š˜Ðüøñ£ÐåÐÈù¾A˜ws³ÐØÄDc_&TûŠŠ:?ÞÇ®ì '¯øÛÐíÏ!…ñ»»sϸn>k[¶Eü­ž²$qðððâ9lî€Í‡ygfÒHƱ¡E1h ”[Ncâàøß\_6õöbœœœœ-EÈ(&:-þBCôù Àihh|‰Š”‘ÙÍú%yÌu{Î3ÚÞz6]ËJŒ ,Ö¿‚Üì……ê‰BÂJÀÇ.jxýHĘ¡_”Ï䂿Ëj0(ûmñgàE!c.óp îÞy6½"³µ¾ŽDAAÏçEµûЭÖä Êœœ>«ÙÅòÂBL@¢žž¼®§–‰H…%%/889Å[AjT¸zå¸hii ›‰¦ÈþøñËØ÷ÿ¬•¸wû—²JKYaü*QY½q‚xÔê{…”*ÇrëOæÚþkÒ€K[wi࢞ÞÍëÙ‹7ƒ»ËB Ýz‘ÖØñhÎYûn@·÷pÅŒÆÅÅ2̦¦¦ ““„÷щ f.ÔÝH \(Ÿõlj 6—,¼¸¼¤`dÄÌN€$â(IþVZm+‰”••ŠªÆÏŸ:—1…±RiÈŸ?ÇÀ{®í÷ñ "q™©>þããÔ•Áávp¡ ±J)4ûîßÔjZÒ7]û°ªÚ)<1‡&K8B#xºÞgô™~Ìåw¨xŽàS…$T¼åN¿ªQ®oo‡Ð*|ŸKÒöÉÏg{`³ø ¨ tGGGùÚÿ:ã?Œ~ |ÂQí¬Ä¤$Œ‡#DZVWcXÞ胄‚yÿ™#)êßbE* P˜8LLL¨øv¢‰Bä#Tœ,´_—=fûgà©zÉëíC‚ƒƒï·LE)«˜ ¿+cRïË©þ©P—bÇàV՛ܛ|—MMo™ÔÖºÃ~û“Ý·`n®ZŒã¡+ÞÁ{Mî µ;EÙþ>”f‹ÿW< «Ö"Ãþs'#ï`«®…EÈÐÐHëç}}`;îû" 5&¿òÛÙ ýôé“HùÃîÑŽJÄ µÇ‹©¦ƒýÏf‰si¯Â²Ú/ÉÛ´t ]çè»ÀŠ÷ývB÷>WvÚÁ„——æ=]íÄ®Œ"RÃg ÑO`EÁp„šúw½¿m|ÎתÖ_jû|¶UÜÛWj®RºÉÜØ(à~µß ¨ ƒ™™Y×Àà.ð;O5+0zo #šô„©K×Wí³9j“PP`U¬`úäûIb€Üh“~*rr¬¿4£˜š­é—ŸÂv!]ú3Øk3ñ·4â|ò;µS©”ääÞ1üúÙÐÇå´ãóèdg:\,9Àìë‹ãˆïwaBr͵n§…&ýä]‰<„³ž—i™€ÇÇÇö»bXäde½ïÞG)ú ½½j³]¤× R~ºu3Ò Þ~|r+ÖMüìt–Œ†Œ÷ùa£×Œ¬k~¶¦¥íñ·œ¬ZÉåót úóoðÏ,Vð~ƒ™ÙïØj`=FÙÛ³†°ãòt· èŽÃß~§çÙü}˜C¤„„àlÇ瘘,Ç„_Î?j´ªÓÒ"­¬¬ Ø9íδü|w׿òd[¤|tŠ^9é(wŸïÙo½fvŠ;-ÐÑŸq=£x&` iªqÂ5Þ>}D4÷N3–:gÞí)Ë×{` MX·¡2õà"Éï!oäLV35êëQOÕ|ÎWs¸U44ŒŒB²Óé€Ç¸‡‚‚¢ª®®®›†–N–ËùêÌ(}±}UUÕ×—÷cbc!F§¡£ Ÿ(.*Êbz©¦­ ÜSÓÈî÷ïß¡v¤|–Ÿ¯¯`ÈI"·çÐ- ùÿÑt¡*½$Mu;Ý_k€(GLŒ&##ƒÿ³¥þóçÏòãÅÍ·KÇBBò†­À‚ééê>Ρ¬é0 ÷¬3•¤ðŠÏ€»F!èpgþw¨SÅZ÷m©#2ýsfÀš×tcL_u,ºà³4Ѱš cÞDÇ%•Pûò{ëoof&„„ŒFDh¤8%2 JJA†¨h+X9UÕ÷gžPRÎ_ŸÎ¶‚; TzÓ„ó>,LTRU:‘û½JþÜ  _d‡  `‘ë±666 %„•l¬Ô”UBB¢fÿ!°Ä¾_ÂÏ>ƒèxBEµòúý‡ €t¡_äñíÛ·!“ÝöÅ*!rôΨç­S•vég=I|P )"d·Ìµé˜pÌ{hHñÞýûCYjo/Ó&±¾ž›‡š¥[îŒP_ØÃô»»h8¡€°ZïØòSWãÊ!…*É"P&“ÏϪjuïÛe;…<ȉvñQÿÚ´ÇPQ¶Ëûàô »f ÔîjúMH™¾æØ `w ÓˆÀa»ô^ñf-­5‚^óøø*ÆC­c ÕÒÚµ{‡½|i2Ie€¨9Ñ€ˆåÜþþ¾¼šV–ENv6€3H@Îg$y6VÚ­´¢KF3ÂÁ ÊÍCjéŸw`:0ü> í;¢ç•êÿTÅÀÀ0?>›žžN?|ka @Ö\îTj7q*/öéÍE¾ P_Ð̤‰Éûâ7½ÀúåüRý}{Цë%ç±{&·msÉ÷®ß;·I:˜}ÃcÛ´@$¾^©U¹ÉÓ€ðhé¸Ò¤²®¤zšZ³‡ †J]{s¦”táÞÚÐD8Ò xp‹‰IyÝñóiòtë Vä—/s@|¦’΋øúUÙÀ(7"âáÎ̵Ž“ŠÊ¨«Áõ~+)YùÔô4Ó›¢æ_¿ b‹fyªøGb<ðyÌy•˜Ù!«îuiYlmccÄä¶ýŒÔ ¨—?=’Å_!‚¶¶¶¿tfiŸ>m>Û_d²žã;SSÙo@ àx»?Dñ˜øþýûå†Ã$­êJ”ú?‰¡–®ÿ#£Š=#W×ù•½ˆ[‡æ\YX÷‹ ÷©—[¥9.V÷ÿUàŸÿDf»Ë¹¨jM‡Ì¢hE,0„k¤I'4Ð@ô‡Bùxñ!k(âzØÍŽ…‹=Âæòä^@u€Èúª¬×±l«ª¦&¶&cÌ»î‹Áë]\ÌB:}Uä#¾…~d$N(ÑKr)Ÿ•ÕÕE IJ•G³%rNj- Y°…ߣ`¹¹O݇UÆ*l( 6–XÕüÆpŽ®—Çh+ó`뀪×(rØ ‹F²(ŒÈVÐoÛ­_dó„*Ihx/nö6ì¯f'a¾s¦ýQ€GÁU„OyŽÃ¿È‡Ì*®`¤bjEb„`Zpï™îZÍÞô¢Ä˜õ–ï‹Ê¾7‘›1¯ã!Û,ê¢ÇßN( ¦`bõ³, ÿW¯^d€dU–BƧèè÷Ç›£€Ê訹’¾G`Üf8£ ¡A©[î q‡²æED˜ñ@Åní)ÉÕÕÕ7NðMÍÿ§¤£•°=ì0õ :ªÍd€°dûR^^Þ,Ï'†Û…rhÀÿéŸeŠ-ÈHK£ÛÛÛ'+ÒaûtRE''0@ŒŒŒÞÁÁ(€@ÒØBóFP ••U˜ŸöEœ’ˆˆâþµ”TžêäásÄ;üÙg0Yf!IêyFVå´‹¾͘ýrÉÖWþ¿=þLYAÅÙÙÈ·ç½^{W‡½MmmˆàX-‰ÌƒŠÊ\ïèêg„iSTÏõ’ª..§;ÒåÌÖ+¬åµÑ_ÿ]Rb.ÀNPh×È0Ï ù¼I,§¬úÁEANi¼GÞZ!Ðx@Ô==óé¢99–\5Ä‘lz÷lý¤&Œ¥¥CÏz¸vߌŒ¤–––r¸2±³«Ø;9Emd2 %p¶´´,||ÄÒ q0ÐPx¾>>Béòj«ç@U¥þŠ'J¥QVRúÂ-500Ð0p¯ ¨èè_{ð„åé"?VVZZ¾è÷L5E~xŸ©ôPhŸ– “`cSkë}Ø`¡ió;;è\Õ‘Ù-§¼ËËò,ÆÓ¯ÆÄ„†.¿è7øÀ;ŸN;‘E´Ë**úI'pÂÁ455­š‘€‚ÁRSS-&^LUØÜõy<䬥âðñ62<`9mmtž÷©ˆ Ô·¦«UÄ#HII1œœœÖ¹•вÈÿO#ùqT'!‘‚– ¶„qls ¾é¼úúúŒÎ{ºïSÇžXì"ïD’Q៟¦y8IqF–W†=ÞO” й³¬1kk-{' JýžÂá¹ûÇ$©vE3Ý:ÿ5 ÖÖŒÐñ»õÂLbyv£8q51¡Þ­µþ´×¯_{×Öòª è“%ùȆÊ17/nhêR#Eöµ›ß]o†E¬Íããjã ‹†ý½Å.—'GÛ“å"—a»^3Øà>æõÙeÒ^ÜW×[Z =–΀UêÄy¡Î¸ñ=[øÃïšù›æßºL^CHÈïÈßP+¬?MÔœ³™íM{8%ÀÀ žîCƒrj?„õ与–nê„„`Ÿ"#ý ê.Þ;=mÉôùÿNó‡à««—Ö{BÂÕôÂðA©ˆõ -­ØÅË¿S$`&&'Ò%XƒÃ Êw3ѳR©9q+,-^íI`Ïa“*’@Í7£7ðM¬­½ÝT‘˜<5 z¬ý“WŽâ ÞoÈ¿G™ Èxá<àö^ëÇ f)P»ƒèjëìA`³šA}øð¡Tà0âå”'ƒz%„Ð }{D¡!d©DîG“åV¢ÆÆTÌ,,rŠŠO"¥þš[qqdàÐÀBå%ïx"¤,‘Û²möæ„Út`îiiiK-ïÉáhwE¿Jrð!4"H%Ÿ9½a¾™à4Ó0ß|ɇÌLššÛ›K)Ne3^|cÔ   hê=@Ö¹í3…Í|£?ÃàààçÄÄP äçÁ×Úzz~mj‰jÄ’áa0‹·5•i`–$¹}üÙ+1›àüÓÞþü+O…|Qž,§Kàh@ãÌfŠÄ/ò‰tÅ÷õ¾ ÿßXÇ{C‰­5Œ40!š¢7Ïå ùc`@ÔlMU·´ å5á鸿áW†<¤FÙÛ Ò|ú„ | t´dïà@ 7‘È„dW 'ssóoß¿¸ä†ÎÍéB `³¡Î _ó­¢lº²ÉfxèÈË'2Á¾z//??¿ß/îÝ»§ >šÇ Ð!£×»û~ žYkjjÖy®N=Éׯ_Ï€õù=YU¥¿¿ÐÍé@¬–BZ¾¿?üÓ§O¡Ž–çõ…^ç×g@^¿NÛÌ ¦×IÒVr™œò=Iº½z“šåaë\Š¢9»„†+$d‘ð˜·{…R›–ggg0˜ãîLÞüëÌÚ‰Z7vwôëídºÏ ªš×Ú»üô±Ó£°ážiÁa¾ËÚ¨Jpk›«ž•Š˜7 AÃ}®ý±È •œ™ùÄ×§ŸOh–šá@ˆ<¨õY¼áîê5! úx¾ÅM¦\šîÛ·O¯ù ühÜ,¨ ã»Áïïö‡ §(Óu sÜ é>‰_u5×ÖÖ öuOY2z-B ºYGNÖÚ{Ñz7†UtZ~u2ZÏý$è]]ZšëIàÚÛۃɞîJjǯj$™žyÁ$–ƒ,g,º÷ï†{‘ÀOóiêÅòsÚŠ$Ù©¹Ì°áˆ,}ÊÇÊ×»(­*ˆ˜}-Ú# ûel>“üx¨;šÙ(È^á :Lì vpAt`u9G¥@$‰×ìÔ2Òª§€û¢…„žÑ²±áêx]³–½÷™º­±¢Xô5ûoEel¿íéål·ºxúƒÈÈȾÑÑÀ´4ƒ* ÀH>¢Žl(ÿ[‚†ej>[ÏHúS,ûS‚V¯:§¥ H[¿?ÝãP6"ªòæ®t”Á²ÛXmã6+Tn\þ]RÆÂb¥/R%œÁÝ])â6µÅÉL”ôp·=Swõ6•¹þŠX¤ÍÎ=xðšè³YüEöò¥ vaI‰ßcDàïÑýR>)—‚7ÖÓ#ûFöîî}Û‚çäÑ”_ a÷ôô¬vuu¶?ˆ\üºÀÅG$Œ$j]¼»H4ÎzTºœš-q!;ú¯_¿mÂ7§*Y´Ý÷…u›ÐB²‹ÿã|â+:ZWV1äLÖ‘Y‡à¤Ó›¬å­ç;í•§pj…†8¬6€ã÷Ævɶ‘ë_×{+ˉ¸0©@í¡–7{ËRÕ/á£ê¤E…+åBž7Ü{W+bÿnpmUw@0@úkf ç iÓY§ÎOG‡øÖd9Ð^LùÚµÈ0¨u ™˜¼Ÿí½½­µn§}PÞ•”ÏÑÑQÄÙ™C$„À`@ÿµQS)ˆP"©„;å^·7ªàŽPÉ/žÿ9Á¶q-“ÀɃŠAÂíýîœ÷Nq/Ï)ÀÆ{¯øÕÔÙ;8 [îŠIbi–òœî_N¼ˆ>ú¢÷“È\õ:ɦ‰è^}c〭­·ëÎ@ï@¿â"‰Ú`О+›ûtÊî}p°¯¯¯`ñ‰àÐWÆ?=‡7¾Ð™ý×\âCCoß¾»‘vªø¸t¶Ëlã ŠÛÜz¢ž¬J)€¶Ô4ìæk¶‰´ö6#‚„9zl½)»žé-‚½e™I×R{ä4@øÅÄÄ@¥@HïÏW)þ÷hû·ÝÿÖ€ÅiQP‘Íò–ÈÈÍòœY³6»Ùg…TUñµ]–# r¾¢qô=½Z MñþçQzFF”‘|±šéßçÙˆ”¯ClØ®ÐáÛú²)/àUÍ8Ÿ’› ŸlFTþµ])Ùñm¬¥h$€kÛÈ5¤ß=À¡ÿÀ@AlaÞ3“‘V0³ñ•éwVwŒXyyWJ:¿DÆRÖCOÛ¦Ù4ífÂÙŠ¹çÁ[}‡8 &¦(n+dÌ ¸ÙWÓ ô™B.6éœ ÿ_9iD7î?—‹íÐ}ßgÊR$ùãà‡àáá_1DA­” é}}r(€¹dï4ÌøúJψ־þè“/zK®¢Ð”ÜÉýXJFuïÙÓ§Ÿbc‘“ƒt_a¾é%áàäl¢ë"BÏÂ"È‘ ›Òš" ±òòžIJIaabÂÒå‘’95^ÉÊbþ%6µbã`[•½ÂHGqâèEìù¨²óÑ#5+.´–‡XXpìììÀ3R02ÊÒå„A‡R[Ó°ŽC6û{ÿç‰ÕuÕB0i{„dee}=–ÿmÙ(X F•>^çGOö'Èò-=¾Wã6ñй#÷'[úâ‚×@ʬᯑ‹µ…Ç‚x÷ïâO®¥—òJöõ¯^ å}Î~±:TÇ*Š<55¥Ù•À…W}B›ƒj¢Ô6€…üƒéˆÊt‘Ñ|^¼€ûïÂöŽ[þp‘YÂîæf0€C1·¼_hЉ@tø ò+LF§ͧe¨ÐÁè¬$ïìöæ´~»|–üÉ“{ —a0h šÁo©WÀhºÀÄA“5KAï~}< óöº9Lr>_Ž*z;þáRåôxê×/°¿ÆŠ °=úàv˜T‡²AYnp)-@ÛËýÎ…¦:ÖÒÂ/8GXó¡îIKÔÇ€º±À´-Op¼&$ Ëg= ¡FGëƒÃUByh&^/’L).\ØO…¶û~-óÎFÆú~Â,9¶y2dk •L΃p+~!¿u¤=À¡¤é »«yÑ‹ð¼f:/+€:Ö éÆÏÑÑïIx\u·'JØB­ Òü5VçÁ…ŒŒ<VÒasdþ|5IÔÌŒî/¯ë‚å` ÝÞÞ6÷øp ”TµnëînÉdÔý%*ÊèÔ³ê]]3³ @„P%v˜Ó´¯Qßš»›*+w¨¾o»SF £% ÁÙøDfzTÜŠb=ðêhйL)qC“º·²ºšf·ÚCóüy`b¢vÞ¢¨ƒÖv‚µ®Ç½|·OÓÃÂÂZ5¬já+5g æÕ MB¿:®Í'E!Cú÷¦D=× ¢s@*t eT†:„Hï52RöËÁÞÆ¦:½ÓˆòëIä NM%G%d“Ì3çš°Æø=b4PÁP‹Ê¨ŸwwçVÎovtVÐU®ŠŸ[!NdÚ^o¨ûž·XÈjgpÎÞž4jU¶4Šó|Ž=÷k¥Ææ2×^•‡Õ·’gX±ï_kEPIeMèo e ˜ÿW­z@üÓß³Ó>SPÜ…™R•hccEÌJOB0ÐÇ/^`ƒ…Êã%%%˜øø™Žoƒ“*Cã?þëF}L˜º×«§ÒÏ{D'váù#a<ÏÔPDĈýÉ©HÁ7X?šÄ™píÒˆUŠWxלT¼?ÈÖÇ4·›Få°£y=sDcqÑFƒ¬ª>2µ¨Fñ [ø[zzC¿œëL{{VO/v¯­]0CEŽÛêc““ g  Ÿ›Ÿ—{3°àòåò9ñüPFkñGY‚ì!'v >ã\ÌåÀ‹:WhÚT.Gï¦KÄʶQ§œ3Í+Ù¨‰š^K𙽓_JÌ’² ‹î 3ÃIÇ2B!A˜U`óâÏ%Â6é§–_Ï€˜|ø SVM ø:È/|øðA~|$O£¨g¨|-“Ä‹ˆ†)_Á6RãrôGè—tÉÓÕ×ldµ£c@Z…€ àphÁs¹ ÁœÝ¹¶ûìE£«œuç8î\KÈžõ¡·=µ6/(%Zm?Zt¬h´ÖäD¦³Þ`ùog—PC&>ÔhPžyh8†œßEâú!›’;`ÿzèÝ#‡œ%9Gb³ëÜÜÜÇQdAäBrBÚÚ$ Ú5ˆ¯0uŒü¡r@¾&C ¡öšrrp°ÞŸcþ—ç¾mIdWJ÷‚ÝÎ<‘ŠxaZõÊIüT¸Þ!@KXØo!ìQÊ]lQ=EÜô6Y\8¹ûOãš}Þú$?Æ–£ÿUJ–3E1yú”íÒÑÓK‘9a½Zy~/Ì+0¢ýÀk.ãœrÿ¼ÄÇÝF2Ï?€”¨6 8žõÈfæÙ*‘Å^‡ÁôzU¥¬X ³ÈñYäѳ 0åIÉ ë^{øç 0òòÞÔÑ©´=|¥aî'­ç×þ3Y…@o(F·qmøxÓ¾T$ú#ªk:B’HR×½#÷q<éðËâúß^7Š·ïï÷XѶ¬‡!Û8*0U…mŒþœðØ~ž‹“Û6Éfýé=M§ý§û/¹8bC ¾G°­¬Y÷c™«ÿëã#Õ*{ÚhT’ÑÞÑÑø¹ZÕ¸i¢aУw =¯]¡G¼Ÿ¤Jf•ú¥ZÔîãD™ÇvT¦!ŒäMõ«O­«Í7‘ýÿÌÀÐa­pDwYîtµ1[±W8£ìJZDïð>œ·™ffü…yìôü(wn­°íÚŽðò*Î žìíûã@•¶éËV¾›wÐRˆVö$Nnì`Œ»cýAz æ)ê‚ļ!ó£!3V¨,Teì¦ûíõ)Ùƒ…–Óœ@¤AãÈQÏË£1nNÆÞžƒ&Oò‡æ—;"ñuùÓ–Ç‚9ÞŽÂíÖ¢c#ÃCöÐ>ÿ“<Ü·Û­¿F<Õ¸B BÚÛÛ!6=råîmoööO€Ìãù瓪H AM)9Ó±XGK2»GS/bXÏytÍ Ì?Ÿi9Å>{ä€êNvìJéWbEFF¶2ƒ›••¥Zçþ2_³ò,šÝŠlá6R£ QvNN7†åÕL£?ŠÍÜO8¨úáÎK fjݺM-ZF°ð¨ì ²R_ßOh|?é´,V[ü9å¥Ê†[âÍ~ö®Çꇨ‡nG’˜¬…'-¡ clÛÎkåg­'>ÊYNû ãÑ?ö1´G¦øQŸï]Öó>ª¤çÛOµØC•*5ñP`*˜7ÝJÔ²Þ’Üoê%yôßP$·ŸOSøx/AÿIwÇ›!¦·n¸úpS‚Ÿιš†gY’‘;û=>´Ëß?a1På3X|h4”Ž9ŽÝŠÍ*ŽÇ ÚQ@ϱn>Oµª°aŸ>}‚yyyÙÉ|œŒÚf²[‘TTQz @è6_îÖ‡AWÏ› ˆHœïÓPI9K{¥¤´¿Zã)€Çk×ãl[>¼‹ñF…áöyî~È·í9ü:u_ÖÙosü8&æ›÷,‘e~’Ñžºaê^’9è·|#øjG!Á_¶Ÿ(¥†òoȘÀO ¿("PÔL¾ÈFV)ɬüþNZï dþ±û}Q1po“£:^!@QÞƒ‡‡ƒýøñƒñ´oø<.ª`ÀÈþ•.È!“¾/e´þºa?—OÏΤGé=ü§ $²C‡€¡Œ:êìbóËp× ÇÍý~EBë³¼œ ›šžüÅãr ¹½ ³AoÚÃFhKZ ›ÚTÛ= \ÝMß9Õ…Îùñ]\5O86Öd ZV‹LúÉí·'†ûSì±@§©†·pVWW‚ž[œ«VüKïøáÀgÙ»ô¿Ã–lÛ/[ lƒž`mããÚEEܰ}‡<3½?wÛ£ƒÇXS¾Â˜•ƒs¬~Ÿ.;?>b±Þ_†’ŵ– Wè|µh ñpÃKÙ˜´µaE:/ùÖïÅ$aúò"ú¿ž)ê]e'Ĭ?[@  "æó$¢WÎ=+~ 3)a£/ Ç£2X,??@‡«Õº(¹ïC)ø8ÕenÛˆ™ñ-¡= 7\`_Ãbة߿±~½Ï\_>}‚N‘¤9í΄¢§wOVÚQ;n½óó»'…œ|kõïüv÷³3ç«…õ!CN©H8ÿŒ k¦Ò.wß™q%˜Ë'–)á=·×{Îa#èQ˜DÐ/€ŽšaøøÁè *ÐnÓU1^)}Õ’óèŒã‘#Ý2?äfÈÍoÈ„‘=$ê¬Óݾ½¹‰òŽŸŸýÈxï3»ww«BvPwUiÞ,¶b4dìýà+ƒñHÒ5 ÉJ ~6F°/Í 7ñ—¼Œõ­{ÝÎ=™Ÿó»I¢dN:8?êèZÏ-Ò­1°ÈÎÄœ„x7‘² úúÉÂ7¦«Ùyšõî‡nr¬"Ä:õ<ɹ@X$$;kÖˆ¦ ™÷ÿî/qô¡ÀœcAT­þä•XÜò#OŠŸf$¾÷B1öü‡ªý1b[òSö‰¿Pz±ÙîûÇ»dÎÔ±Tó“,mÍш‰¦+ØM»/]ËÂO¹–‡ÝMÃ6Ck/íhƒä± ×ç³ÕyÕ½ø§|ï Úžª(e‹&=­ $ƹ¨y⢫$Xé÷ ™ï†=·+ß•>;UµÈÛù¿²dÑÙŽ)š&:ð‡Èp«x7¨0#úÈà‚<æÎ~Žq½¼¯‘ÔñÓj3˜˜˜œÌ¯$(‚¹ð8ëplhõ©#¯Ü¥vgKû-îã[4{q I„És{”‰·ÐwUñ^sÊ-ÒUž¦Þìø×[ûtÕ{®Mx× „äÀãiÖ º“a4ÈT°ŽW¸š‡9 ¼Þ¬hm½¯’¯ §ûrŠ©Õf ¤Ncc#d¥âØ ›rssA.0ÏݦǮJÉ â1EÂk3„Œ—ç›õ¾ƒO×iIf¢Ñ•þK²gM<Šë½HBX6ƒ0¹ûòÖQÙ°o¿{wõ>b˜‘ê½+CÀy4¢ôå:ßÏ)åêvù¶¾cÇ¢–š›ligiyùÝ"6ž†ÍÑR{‡Ótt$çâñ¨Ž¨£#T¯žà÷´N¡û¹-tü‰ïöŠP?“å‡d/1Ô퇞˜ahh8·ÖŸóŽÒñ|Œû¬qÒªÞC¥hÚlk¬(šË‰‘¬u;]ˆTÑn!d'xö¦+šÉy%æÍ^7û,49æ|<¬ÂäzdrxTÍc°¹P…Y’ª˜>`kk˸ævºÓ²>˜•„ ƒÏnIôõ™FH¼EàNihi¡4GÔA=©Å@f…†%‰øGòÈeðÑ DáÈ*­ÁÁ¤LUÍájÞ"/¡Çðu¿zhêò†g±­…1Sꘞƒa ÐöBWIÔW·ävo?ù•°èÔ~òÿBgOL#z*dåÌ·¶°öi"rbS}ŠC-Øgц[é~Â" “›ZM¬¾NœWw võ$ÕEÍQ±4µ´BÀZ~ËÈH+,ÄœŸŸ--]f2eÆ9€ÙPÎ`GKPQU%P0*HƒÍ¦Zì7t²zÜÈ\_Š`4‡ 9àmèœ ÛI2X˜÷ǨPýjJþðt‹3¼s÷.4öPðɃWYŠt‘lê=À=ŸŽøAš·JB×ÁØÐ0Ú 6ŽÌ'n¢HÍ{êDmm¯¿}ÿžªQn óßÉŸ¥¸ð:±A`‚n£AüŸÅÄ9hjЏJÎcM…ô† PÃÉt2!:_›._Ѳ>ÈÕ§B0ʪ«;5MYæÎÔ"¢06¤Îq¹&ùújkÞpǃîK¾ žÌÉtìQó¥jÛûÇOíwv|v>$ô;$:»_\š™'³èßá"3¢Þ)}5’†C;Úìsuùƒ[nìÍ5Ìv­¾u{èp'Ô3²˜,{E¡7[çá¼ß‚GÑhqw SŒ:@ “––a˜ý’”„¡££ì@þñ#66öã§O»jx¹¹‰Ø-§LdG§¬$ddZ¡‡;}„ê° >ðÍ_ä ¤ü|E! ¼ÉÚÚÂdZjêº9Á$ôäØ×Vf>¾ÙÕc ![ Èš±2ßý1D˜tñZç{ž}éãnïwÈô+üßÏaÑùtõÆP}ó­>2zé©nOLepÆU÷ÉwH1Ë꺳EÄÅku‡am*Áuk ÜYšH ÉQtmp‡æeÆO@¼—tš5 }5b—×0'ÑH’|eâ±ymä¹_´ã¹F"¹§¦õøu±r7R² bµªWÕ׎7GãF[š›¡ÃÞ@ëTX¨¢<Ì¿U ¦¿Ÿ’5dÐk-8D~uuUèuëi·¨+%…†Œ‚Ò`M4|Š‹3ßÁ‰ˆ€Fƒí´}`ïøûLÒrj¡±+ãn¨¼ >—ãSÈ7HqwáCçP¡ÜVÎÊ”ÏÊfgœÝÙßn†µšö”V)Ðfe?øž‘±x°Ü¹’dZ@à9ñF›ß‘'ûÉäbgÞcEßr:È`´AçO»³•ô·&f¨¡èŸ1õ}_(%"Œze·´h-s× ÅÛÁë„õ6~À)³b¾8ù2_äTµ0.õùõÔ,ñ¢×Î;¿ç¤?? Ïãï)cú ¨&ñEb\Ô¤;3SÞ»{è›VùJAj¶Ý©ILÿrä­XÀ·›™‹¤–&¼ýE®Qk½7ÄY"M¤NiÄõ;w¦«™6†61 ƒØ! ƒ”÷c"›ÀS\ î%yÝTºþÿÃi+¶è$Üï““q9v'<{•ñ‚ü´ZüjϘ¤ŒÛ}¥R:_ iÔK¹”ìFþ  óþ(xT„jÑ0F€¶Pɪ²²²­»[ø ü@°/´ïr”ái;Ã#ÞOV¤Ëûª '÷Ž"×óÃÕ»°Ü¯­Yæ’úúäáá២¢u<Ïá#¨¤ŒŒ–‰‡e^k åúýñel”ä3k3î붉Îã_ :q{ͽjö" ¤¾lÊèMÌö;g°˜}´OiÔÚò†uf‹ÇXîÔIt´d)ÁWxÖ „ %èkÎ]'{ ’"ðÔ—(%¹ š˜z×úGÞûÀ¦ íì71Wä¯5‹§2„³fm¦DVçJ†w™Ô$œÏÅ)Hw©…”ÖS„Ö÷\û­ýšR–bƒVUtTëÇG¾$<®Ð©È}k{+A§H qV݆;IùH„……¡Ñ ‚ÌÛU-wFAÓ%Ði›£5¹«‹Í‚h^*—ËpJ‰Oáá>T›5'Ô)lè>óò`h$uýLy9j½ýí#'#‚±þÑìÒ_¯©Yi»œß¼¨O_¹•tf@«Ú±¼ÌnµGøtgz¦4ÉPTT'x_œêäªAO³”áóh-ÊÓ®%€F  îþÛ™šq³—_Ÿ5AmÀœ}}²P›Îͬdªú%oÙIwìK»•ÇTTÐSžXz¹}©“ÜXÕì‹oR}Ë››F½#ý‡È,ÞW xçÉÁ`ßxœý>lê`ó-k%˜ÖqÄ&g1'ç¯õVÊl®ò È}ó’yÿªS oEI…@66˯«ÀóµN Ê-‰x¹S8„!\9O9ø”aÞÚùÊÊ˦²*Éþ5Á,†ž=ÄfÒÈäEµüø›£D—­…þôÌÇ|ÿ–}‡òɬîl!÷CSSÓ]k;»â˜°Lˆ¨¨~Bä R÷eÈ^Eµ¦|ÿŽŸŸß·yŒ‰ìöÕê{ÈÇÍŸ)Dçn­›R542: œèÀÜR¥ ŽÐ¦Pb®½­äúÅ‹"uÍ›ºìÒ#pT0¢ŸC¢(ÃQö®îoçcNÿOQ s@ï=Ï=üc)vÅå,¹˜£P‚ÑБÇæH’åùä%Clì£ýJÔpÔ̶Hì°`?÷a¢~«ëùtŽŒ5¦‚ÆXÔ}¥‡¶('{û³ÅÿyGŸ…äŽê&Ügw5ïÆÏÌM˜ó)/Ý"oïÃð¬È4¯7;îø!nQ¾ù¶}èªñ¦/Úš²–Àå2§Áé΋ rÃO\UGQ³îúúúÖóð °Zõ¯³2] ‰xÝñdi°ñ™ôï™™™aO'©Œ^ÄÎÔ¹+xzòº{x<ù Dn×´žWk—]LË3E¨o+ûn8æÛÎÁAŒV¼ñáÖýćw°0Ü©Ñï-º•=x-‘Jò¦¨9BÍG6‰?ˆõÊFf¼+ëÕ)ÒJÑp¨¡„YCþie]³(LîÀH"2v‚œîœ—OÃ˵´&IïTU•[º«âUSçŠÄ$~Ó#¤Ì“iºe6èý†4ÆR\¹°vò|t6¬uWpa^ú°WQ»ú>ÿf×Qû]呜›VðÄ&'n‚ÁU„êàoX—2¤Ba{?bËŸ"9ø“èËP¿æ†Ç¬äb}iµU+ï!ì›@ÁðBµwŸƒ‘Ñú£`†å?ÞíоŒi²“L«Ì·ë$¹´´´.O·'àC/y6¡iÿGŽ)r„„„tÏ–ñ9íiJÔŸ5ë cŒhô[< п½¹FDA¹+ËX¤¦¥.ƒ|pç&$£¦•í2±™(cºë¡µ³½'fc€³j·—žÊ£ iÚ¹'@ßÛ`ŠŸÍÝ;^>€ç¾wâà/Zq|ÿ®"Ž+>+Gå^ž­uxI÷}îÆ·cŒ9“èÄA%%%è¤wɶëRB&VMW÷±åTÅüãëûd˜ˆÖÐù°ÝÙÙþÌ;‰ߨ`„½ÅñTw'FÈC" ó9ÊÝØr\ÀÈT“Ji½~õFæ§•ãÛ“øVTõ‡ j¡Å„A)ùÌ0Ôµã]Xp¯˜ózL·ˆLíÀûí&f8pò:PQ½í*aþ²5ÿ¦Ì)ÞeÏ­ùBÑSÿùm}#Ý6œ¡%}‹aÐçkø‹.D!~«MÁ‰ð¯«Oæ›Xäïô¾+>\ÙÉköO0Âݼ×ÃÍQôxÿÁ\ÊOÄ-ƒëkůkzÌ̈éî{ /ã5òmF&œæ»I¾¢¢ÕÓË9¾úð°¹oIà~uÓøcåd“"èŒzsK Ôœlv‰,R|9JG¹#òµ”kFNf¦7ÿcoõ¼_Ð`™99¾’#5»SÍÍBÐ|žDðž ~H1>„ÆéÙ^»•;ì½~¹ZèàÁ‚>Ÿg*ë.ý«ùº—m”´v¿TµÒ¾©£H¶'n˜¡ÄŸÁün‘ÉÎ`-oʧ¿2ç\ðA9¶ðgôX³»%"ÑGTkÃTk‘TøÇTk8T÷xè5 ÛÌn’¢4Eoú¡"h½ã4ÛèÖÏÛ{à¾sÎYøè…×wÅ9Äά¿î“}Ú›{ŠÃO³,H³œ¦à„ô$Ñ>Däµ(ÿ ÆT}MJ#°ƒà‘¨–LjAú«ÄtÐz}€Ò~}ø€ŸŸÈ»Ö¡r€ËáJJY.4úèóñçõ¢Mׯ3^4~3À¬¼}‰‰éÑÃUökFÇwÂO­còBßdó£nù´ý"Çܾ“/gÅ>¡P9~òuÝd~ì|ŽèUœñZð+$™P¢{óUEùR'ë±!‘mËÌœ*q”Ñj÷3àÿàìêŸÿ¤üýé° Ò÷@i=¿W>ýº>ù#ˆi‰ Él)›‹–Ÿî«‘ªÍ_ÈITaS-Èci4dL] ˜$hÚ‡1zïv Ö ª-UÞ~ìÖñtϨv˜-tL0бÞn%0ôPzûÜYáÚðÆ#Ú†Y¾àªÚ ÇÎÌË´ÏÊz~Òz>]2ˆ)]®#‡rîÊpµª³¯s˜_edÞN'³Îg¥“­]T“”d¨à¥^¥"K{½hã¬>è)îa†s'ý: hïW‚õBˆñoq³ dô+½ôÔPAÍKÕkÚŠ÷ ?DH±äT}n†TҦ͙VU¯V¨KÔG÷žÉ=c»""ó+¡$óêÏŠCy1Œ (°Õ#íÄjèyZ”g98BP¸¼wîâŽÞÕ<‡³è“y{(´¦‹ñ¤î,‰+4phÅÑe€˜L¦JP.WÐQþG]. Ùû¡wψßÞ8Ö}ºþûðAð¯ u¬*u L³âwÇ]­Â™í£j=Å9°[^!¯+{GœŸ<ŠB£@ašý&¨>Ï.’†ìÈâ¯ó½æóŽHz,¥[¡ól¥ Š¡PûiÏmè©ÄBŠ'XðâçP›¬ó×Gø ^*Pt¾ˆÁb X¾y @Ùs–˜©1yÔY=–H dÙKLRߊ •ߘ/µ‰; b¢÷ýˆ†{EÉ\_ìjbeº­`ý_݉ âÈi¹×~kçáÏ]o:ñZÞà´ÝTÝ‘¿¸,똘j(òìAéïuQ“ékvþÆMî‰DN\RŠ`bþ±oˆ`ƒÐ ôÙÀÜÞ¦¸K-Ê#ä‡Í‰wÞO5ôøóçxdl8b%ñµÒ_Ù:Í»=iû„Æ”7†QPpŸòkjÆ»¸ ùŸFGãcãàL«"™Z%W)iÙèèž^µPÝõÕx/ȇœ¡çŽ5ÃñnΉ;÷7&ãϤ¹ýPmE‡n]©¥' e¾7·¶N^_{Í.Â’HäÏŽ>qr†‡|èu˜âHÝT¢21GÃtÛQòÚQ¸ž.9¯”ÈÔ›zî±íCݽFg‘ ¼•QÚŒ¦ÇKžüÿؼA_¸;ï~êŸéÀhž=k‰e5‡ž(ñíûwý­±¢¶®®V½=="oß>…ÍAò¹*Ãæá@¢P; Ëì×χֺTÞ1±uýÙOûé õr¾ƒNÔúî]—rPæ¼6¢g#Ú¢±¤Ê°—bÎÖá/¦«Ï@jÂ6H †%d1ók™zW‰cHEÂ1ð–šÔ“$ùÇš«¿ç·^ZrF»ýThôåL‚õ┪¯shÁ¥J<¯õƒ\wU•þOo8è¤0AèâSmðÕ2èèèb#W,i°‘!johhÀ nAÄÀh­q9LVÎÑøæj>·5ÒQïQËsérYt²·Ç|1=½†éëöeÛ·SXÈþw‚ñž—4¢<×=\馡¥}Löñô–@½dôô(ÐhØ7±èxÔlgŸØÃµµ‚ÒÞ¸“ Ŷيõ!%Š®é:U \½ìz,ó“u"˜_)ÛÜöŒ J¢Êšš·¨„®¤Wz4"ÓhM#¢¹g| TL_qÃ݈µ½ÛT=_ž> ûUªÕÔm¾ ’R?KÎ4;'1ÿx+úLJÖoJÕµˆ ×ý&p¨þ”£RÀf¥Që*åÊDþÏ,kxx8£^ã=¨ëv×…Z*ÖXÀTà ~}lˆ³ªs)h¢Vîs)ÞN`‡ƒq#˜ »¢”ÍÌ#ÎIÃS Ô®ßÁ¥;ļwFCHK|¥•ne‹í„—>ÕãË8d!ÔCX«9!ÆD ë³ãdEQ¬¾Îá~2LËEbz§­„U¾òÊ{¥£¥+rg$ß Ù?àûÝ\a÷È]£}JЈÒÞ-AŰƒû¡‹ÐQÚ'OžL9¨Ag‰ÃønÞH¥ÊR€æÿzy/»4W·£(àáá¡'ˆ‹‹oI•G­îì„nm½µßj¯ÙùBP¡Ï­‚àrVµœ]é“Á‰¢‘<ÂìììX⨼ވïÞ5GtKî€BsvG§¢ðu{ÿÿcì/òì¶îqø"énA A@é”’¥»CB’‘ié.)é.é–îw-ôÞ{?ϳÇÿåÃÞÇpqž+æcƘd7êBl5ô^`&ò-zôéï×Õ3ÞRϧ`XŒ¤+ x Ö¦é5ùæd|ÉÚÏ–…^» ΔW}ïÿvs`{9'ðl§“ö-¶··ÃVá§o%nHµð# R58PÁR†ó“M©›€‰S Ø#`Ë+ žˆ†±1ʶ(ZY{û€ƒÏÞUG‰ç-¤¯Ë  œ®ZàÄ<—xœ \@V.2ÚÌ/]”cW¶w}›FÌ j sÁè²Çvê×ÃØÅÅea(ÏeRWSG§ãË—/Ã[3Í#´'Ä,w­W–öéÈÈÈm!¡‘ã¥tëÉ…Ót\Ó±r;3ð»kû )„L “D¼¸â[“¼÷ï×_œE“h| ^ßk£rQ œ¹Žoß qEvñ¼ö4;ç§Ú¹|OÛ‰4À_…3k66ºÈLÖj&MPЮ>~üø6S06Ï7úäúz±“¥ô(-ü±B#”ƒƒríäÒ½ýµÅõ¶ãßóÖ¿¾E¯EðOš—àèØú$Â\íùñ=õ§@›%— ïñk:ß Öæ’"ê]#kzÖª0ˆíʺw>Õjÿ>¸É8y®#¿»ÖÇ„S6ø§1¢°Ø¬û}œR¢`KSS™Ixà‹…áá×vÊœ»âË‘ ‡ï•;nN†ßw‰Il+\Æ_MÊÔzÇó6Õga×´ö™´ÞˆNor‘½E”Pû~bËsë¶_„k+3–Ÿ†È¨ÏñùD<5ey¼Q'ïjª‡/$¼É¢9úõÞ•‡n‡Sĵ£›¬¼¼¥fAŒ—Ѥ_ AããºîHèÎNÊ‹u<'ÚGFÈ•Döˆø¬‡ýÀæŽ%2òðyí¯IlL !ÀÉs»ð*&%rîUt´Ñäà°òƘ«ÐO>GA‡Žt.³¡¼IuòO8o!༄rssƒ«jj™4Àf"£ ¤­Òa6’Á\®ëúèS|_këÜ»††×_ÇÄ@‘pð˜cåå2TsNœ2¡;G[Iî§@\QQ1À¦ µÚ¹ù4:§½ÃH-¡aûnµgvÕ±Ð\ôM±œ1!±iäì‚=¦Ç>šiùß<•DÛ•Žt¸ÄþZKºã^?¾n•¿ÑS6:|+—05¶~¥ÍA9[ € "VþŠ’’RÖ€%x 5uõøòìKwwwñ<€9p9îÞïHÕ©t3ë+VöÒ `?›_ìÁFªÕ£³·|YéÅê°+vd‹?ÚB÷ê¨ô¢Ûܤ=kË©ÝåÍY>ªÁ·_r˜ø¿‰WÙ×ð.¯s´gö™(­]íÞ¥z§ÈNu—àÖ­[Ø^ƒøXÎzJA¥Ý¸0͇A÷5—C€Öã>°_ÓÛm´åZ¡ðóó‡Q.>ЋŽY°µU„òâ€@"’/u=`ć»N?š_¶›ó¼Gsù¬Æ²å^cÊKDqoË]8ÌÆ¸ˆ,66–d[á&S]nîí\­"dxà ÃFä¯--ñwâI°Y‹ÐFŠ“ËÛòÕX¶»„6ažTÀã÷Ç΃iW»{¹2×¢Mç‘©á¸z‰½+ûm“/·ÜW¥Z©“|‰ïZľIþ=sêîܸoÒ$NKDM$o>—°iŠ˜+­ðüH‘0Ž?|p.ŒsдŽkúAÔ›¬ZT›llpYEC8Ì¢¾‘gHrŸ½*4¶Ðë"RI9(*ÖIyáw™é|xÿ>l6n\êMßîS›I«Ò‘Ž-ÜÀx [è`5>??„Èròò’ÆÆi»¼¼¼ SóÄ^gcë#à}Ì£ï¹ÌN#2ú‘“ŸÛôjg¥ºCdñvhØñQ’ï¹GÍþ¨ø«àßÛ´(:ƒ%ÂP©]UÕˆ°Ö.Ø‹I•€ÔÆ9Ù¬‡‚w­Q´v*A"'Wûù_?Ó«{F¾Yw’”\µp‡“‰b7yìJ7­'ž®ÌR߯4Ö]{a¿9·ÓÌZ€Òí&«wé~«¨¨Ì,áQ¨««ËDä<À«Ä»p8ìœêM- q˜k5Úšnt?ÝnÛþv# vá"ü*¡Èl3<Þ[ ÖÚ)ƒc°¦¦h5óu+ãRË\Ëú¡rÃDáêþÃöÆL¥'Ó=r˜T†X¶e„+œIfítÒ7ÇZÕx!ÐvFÕN”~o¨’¤~·<ùu@EFZúoTh(,\y•œlçã‡ðÜ[OøBà¥^12!Ä$u¿õá¢ô–öœ¬,C8Wxw³óóó5°€†ÀšÝæãL{è5kù`•‚Ú}Šý}ÓÉÉÉÛ·n…f¬ÜÛaºyó))éÛ¸¸62“O¸Šæ;âŠ+*IÂåëüˆçî<"7QÌÓ(2ðM<:<¼S©ÛÕIÝaieEɶ¹?¯³Z/ò6¡ƒ""èA_Øù"péÊ̺icå;—÷×ÇÚšš›ã‹‹¹Ã""žÊFRqÚõ-;_"###Å›—?þä;Á§¡U¶€*‘ê¦ 3Ž÷Azyñ¾ÇÏAr­}~bëÍœ»ÖÍf+¸‰FV^çí¢G¬cwK¯ÒUYª,Õrù Ïø»9Ï—R«¡/ïÞ‘1FËiéêR›EmêföÝuZ(ôóC0ÆuŒ°Ô4©±›üø=nȦgo¥¡¦¶¶s‘Tçé¨ãRÝ`º,.#A¨ø—“µâîc։ń44¶‘¬BBÕ½ÏÊã*í¦DIðñqœ¦ó„ËiAqaq±íÙ³gÃon=ºÝÕüq=E§MV=Õ$xÑà©úÓÂ(ðìe‘Լç7rž¼§Ho¾ÁOv²ûÝɺcnQë8\Ø•³4|€Ø‚šZ½Ù/QÄk°ætµ ¶ñ‘PQý`ׯ1׿hÆ+äµ ÿ꘿ú}¢pÿ(•Î25ã{RŸºþ£ú6+YÈ`÷ŠgG_nT;í?KR#öüu¦ø¡DþR ÿýÉÅm•¤‹<}¯ZèÑzïâ¿e×{‰+vŠ'â¹+njʨïµÎ 3“œAÀºÒBµ?€Ø•õô"À-I…2[͸lAKùõYØlïì4Ãì-°u³¿›…uuq­.†Î?AHí¬Î֤צÑX™ L² Kß$¦T>Ò‰T1k:âhÞ4"Gö¬nâVEŽl5·ö"SŽÏi ,­p¨Ái©¿eØ?MÃâo‡KþÌS_px¢W¥Ìb0ˆÄ,|æ×÷8„±½££3]³ó=otOlÞzÿ¥&Êöޤ–Žã*bzy9´1} pa‘¼…Ê¡)›íaí“S *"ÜËÀjeK‘I¬£ÿ[ìËmÖõ¼ 5µFNŒ»`êXV×ßgîÌ’ogù˜’¤uéÍô/JPV=b^E>™o.± D»F†@Àær`–tÀ‰?1 ¡Aüöã/¨€X+GÖ.¿OØ×@Ç¥‘Èð&ÁUIIIeuuR¯ÉgÀç+26ןïq@ÝbD¡EãÇOŸ`çzccãp÷‰7?•g/ù•Zg$¥ž²Ì¤wwŒüÓ¥ÌI—ïf9KÁ:ljÕyp$I”‹Sßm:‡ˆ²çnjqßò°#+a$JVI™~B-ßuKÙQÿ>v®kÅÝ’ ÉÔàò4311ÁòsÀåää(íjf¦å69q¼Oöe6'kaÍÜ·'\°?Z¦'\ä³ssÔÔiê222D+&” ‚jXðœ­÷Ž_ýSð:[VK­ó·ú‹Û+yIAA¡¹Ð¨9×–VЙùçÏŸÚ‚58R• ~¼¸`÷·²xv»úåî‚O¼= Ë›%nŠ qJK5Ër³5÷9%µã¤é%,,n}TÍöH”LõSdD1¹ÀED+}”ÜMù ä¨6n_Í‘„üì’òƒµŠå¾ÌíA;˜·¸ª§×j褡³šü ·œ3ä¡hœÛ¾ý K–%nð>6ý˜Íe86½ƒ÷ý åÊóžÌ‰bg­äÍÉwç(;>|ÞÔçÂ,RàÎy!6þVh Ÿž879ù®<á½åç݃­Š…#;ZêŸd÷x±¦~x¾–¦xSšû¶&ÿb:v ZOÕMŸí.÷9,ü §°ŸÎ_5ÇŽðþ„‰‰ÙSl¦ôæÍ›ñ>Ï<‹œ¶ÁÑÅÅsa!|è6ò¿¶µpšîÉD v2ÅÊo’VUEÑÒÒ¢Uïã]m«Ë—ÃD_;4ïåáQê¿~5‘_‡&‘ÿªÅ…@Àö˜]ýã\ÀEî\l,.ø@µSùüºpÝ=x–vU ŸjÞqšlÁÉ]Pí³zΆqA7Ù5„8é<îÅ{uuuž{Ÿ=P[ åÛÄÒGW#.W¤Ï; 5æl=eX#;z˜Ç"-S6Ú;ƒOé3¥Ô¯BZtÔ{m-ñCÀšËõ§{wõ`'M0OþçöÝCWIœz—½¤!o1KK­ÅU±Ù±«wŸ4Ü]£ð@ ž¬z¹3&¯²›ƒ,˜±=‰z?„¸Úm pPæ&‹ùŠòÙŒ>Ñý?%¹ 6/v%b`apÀ‘hoÞžœ4÷õõÍžè ™lŒWÂj„JFÅwˆRmöÅéÆE¹°!MÆM|h†?”7?Q#J!úLàülÓ7¡Ï¢T»¢ºz¬jie_‘½Ué8/sb²Y¤ž3`–Tî3ooN—µçòÍ€¼ã ’?(ûÞÏ®Ûú5±**½³OÁ÷,¦ ®9œ ƒý©ÊDIãÄ×_ñû›^ºÂ~ÜÇíFtZæÌlgá:Ùw\‰‰‰ñ0P•s`Ó1"%?ÃÖuÊ_—½ ø¶Teæµsš‡ŠŠÒªªpž^G=¼€ F›¤ª´t4I¿‚U Üš·Ø¢1<Õ"?رyíÊœ–,Uç¦!ê±uvMé6æ½Y· Ε[wg ¼¦9‘éY¶šÅm¢¤üæ¸Ð¸”üþ¹è¡Ó ³©ßf’ÈŠË…’´¨ÂSÚÆSòø¦Ç™Zä¼(hE‚‹“‰„¿jÈJ…•ë‘rèK«©©ì©féU9srD‘s£AekË“[PädY)I8Ôi± VVÂ!/_¾|•˜á6åMúýû÷gÌÌPˆƒÊ‚s°7yoÈ€ÓûØù_•Á³•™S”™•55ƒ×Ö¬¡ÙUÙ{#ó^§£Úbw©¦ä¤'ê}Å€©Nò9¶H8y‡Ž`fg¿goo¹ŸÞ›µ¯¢£Ÿ\>ÛFë{YÌeÞ›vï 5{ÎM“ ú—o´ˆBj!WÁk?%Æ•’3Ç8rìôD—ð (¢ȰЮþl~b0O籜ÆÎï߯À_<‘ÏxMq¯Ìu]›„°<ü@a9ãÆ>ü&¿„wü“î-­­_À—i,®µ€½ŸËòÏ@jÏ7Ë΂|À“àá5ür¼ë5«ù€FÁÄÈÎwcŽŽŽ8iiiaÌé“F¹Iøttnı±„ùùùÒ~#;ÂÌI`_{ÍŸ\œL]h©©ÅÈÝ\› ¦5m‹¤æöÅͰÜ?^-àŸÑ×p‘Éc6€¾ªÛ5ª^¼@]˜5>?/Š| °$§’’ Ù·Á|½Ž \Ú.~®“xÙ•N$mÌE‰™ÒÐÐÜæáyã½7 É×Q³w¨˜(ëáåÅ‹‹Ëç0+ýiÀrýs½7§†£~c;Ç-jêïÞRóMŽÚ>ĻȬð³;鼤¦~í­ž8¡öcPäY÷EëÓOyÜ‚ô?QeŠ"õDt;YÕøúô& ¾ûèé|ûÒÇ¢µ="øévßD:Æ}×C{¹Ÿ?þî NáÌ@ÿxEÆ}p†øm ²³Â9?õ-SèÕÝ¢§÷w+>—Fø==ýù'Ož ë-æq˜™™‘ÐÒvËËËßþ9®=Ùy v±²¢¢ÐÀç(³uøÚáÜÇÅkùeûm“&”Æø‹àÔh¯ôÃQ¯Ç'§=T2ìé• r UÉ¢Je *X ã•NP;sm¢štg¡“÷¬Í ?%3ûf`,µá9 œ[Ì`Y½çîÒó?/Y{»åYËGó ŠŒÐj,//Ë))gf2ÁcuÇ¢N:nkG]HªT0-à²B“†++–á”ü8µž{’â∟}}E,WdØŸ¥ƒîŒJIãKœ+Ìÿ:3Ëìk,*Í=•ÕX5i-ÓX)b^º}ô«9Žjzƒ) WÔãi×wÜ‚4KÈQ&ðKªÒK<²iH­ÔTÙµ¢>ý+Ê6]HHðæOŸ1åp`R™6eå\оàøÕÈ+Ž‹3O;Ы«ä™V0]˜‡±ŸýzåìøEÈ@Aè`u÷Ö­[K}™Q-Ç2ýþõ]ø]]ݵ¤úÚìùO í?‹‘tfsRµ=~ãf•Ì*hš¬ñ€ZNànmmm™YYùlÚ ‡Jg}þì¯uMYìIap0z¿¥K€w¡ºÁ£GÒ㞺[®µ?øSÒXyƒª­ÑœG’=Îd¼Â›ýà“4Èf`y¡† RÐ÷ ¡ !²’ žLT¹,Ì/¼Iþð!/zVV¬¤¤¤Áu6Z„ªªjO­—¢˜n‡_ßð¯ß¹ƒ§ðövã×PB$Dvv60LwÊì¦p2T=2ƒópš?ȪÊ}þE+8e‚Šç2¿&®‰æþ9%›ËizšüÖ½E[ö­¼fn]än9NwäÛWÁ@|É[S+®6yHüûE´^l˜6sË#0_ý —·h¡pÍ’Ð5ª5ɯ¹˜òÆ 1›ƒ³ÜÇÀ½Ã8\¸)?ÔÄêmmž“¸\ÑîŸèI-ÇŠ´;±;9 ~Ú£Fq}Ÿ¨¡E#4ÁžˆçÑ`EÏa¡ç1¥9wAì7‡( »*™ä(»%Îÿí4qóñµnѓ۰Mc²ÖK‡§Çf¢ŠX;„}/âæÔàuç%eóRmëñŠíÈ•ÀSÎÏN.%º|V` °Ó?%Îç.`×€/€naÁL">_¹¾´ä{;;R¶¶ùG¢2✞žSÍž z›¯N`ÿ©& „é@¢#q^¹®î3I¤PdÜ‚‰ŠŽž¸’V¡áó]¨þ½0ebl¬¬¦†91[˜#¸„½æÞb}Wúo ï›vûžÀјûõQÞêtCNtù¿%eaÒôwZ\"Ä ôksß™r¦ä+‡½¤âeqÈjïM¡—]Õ¾C Ü*Ûcâh/Üáûu©æ>ÝºŽ¶6E6¥©ËIOªTôÛ· …¿åV—„Xñ¼Í®¤í‘ÀÖ‡Nµ´57â/uù~6Mïj'¨¸h—j ¹î¨ô¦ä‹WI²­`:g±¦#}GB˜ —ßµ<ïšÐÛ:è¦èŠÒÇø*¼{î†8½` P¥üž8ãîVN¨[“8=öÈÒ­<Ñ©*ºK%  Á2ƸL×´ñ_>ä¤\p‘¿ñák Úÿ«ê6Bûi,2ìkóõ9Ê>÷#bh‰ؤ_ôHl,WP 7}Í£h†a§;ï„=¸>ªÞª;ý­«[IÎú‚sy×ÔùeÖ(¹^1†7§.a§˜=Š4BFEqEÅkÀÕŒ]·Qy'€–úù3&T%ùp×齺݃Ø¿=.]8p–<Ÿãý÷V‡P°ìüÝ»aóñλ>2R¨0,óumêâ¼ÜÃ\Erƒ$¹»-M& ª›Ëÿ\ˆ Ð/¿§‘C«ë$µÚ›.Û[ïëKqÖ(Ì4Â…E!¯ýÛÆ&&HªÉlXÜ­ °R·­[ì"ð;>²¦òìßĘWlÇ+ž–™V”عû4RuG½·@rOOϽäs*@™ö7&¬lÃ()µÍwÄq5½¸×aCVxÔëÔs+6 ²j#(ã´l½|ÛÀ6\Ùø€VPôy„ãIʉ˜":k]2Aiy°†×~¸W;&¼JiSÿ¡ýòjh—}Á¨YJ·d—¤z~°þSÿ ƒÜ)EÍ·K[#¯ŽWeB㟜K~;ýÐ)6Q%Ø,4xÞÊ,)ȕޅ l{;—ˆZ†gVûìß+ Þ›±p‹ª|ñò6ñ½#X§âHØð˜ÝOŽÝ¯˜’7rÏvp«ì—isóöS~C.žÓ©×LÓà\V8»Jn‰»¡ŠÍ£%kÝj(=í§~êÅ7ÓÓß¾ÉýxÏ‹uC6’'óèWŒœ],ImÐ;LŒ¾ s8=Ü6ÅÆÏí5¿c5x,jËRŠæ l(JDóâ—ÕÃÄ –ü«Ý“‰m2×}? ±nû[Ó#yòÞ°œ«s€¡6¶Â/ã\õã5n¬ÞšÇ üN+]¶ÒÜÛ% Ù·k:5ÞŒýÑð†Ä‚-îŸZ€ÊD¨Ò$FïŒÊÐïj¾"GC5mè>Ù›Uï^¼»xr'ÞláäÃfhøW8Ž@¥uËŸ ­)Þ†áá×Wji¥|˹â¯A…0ðf×ËJ-gVY¹}-uµž–ñÏ„ Wéé7à|ð«„Œ†]îÿÒópéìôt °‚éx³$ ôIˆNNÆMñy}þ•Piœl~"Ì+—³“Á°wu½§«KÁ‹  Y€7àôÉè¤$ä’Ês»2 {ººóc«Óí6ÚÃÝ>%ìúíà˜+X$Ók#Åå"g#鲸pxà…Ò“757Cy‰BšcJOŸfìgD¦©`eUiÿÖ%owz²D;‰BÀ4øŒ…ý›á¢Ñ,Êæ{Òý±€»µ¼$\F\Üo²þd4ÍwE›ÇɬŒ$½LñªE6AéЊï“yy Іª/nµI¹0jñ²>X¡@ÍàÒy[†ì4©¼k›X•·Ž:ùj¬"öÓ<4–ÊOX”ÜŠòä);ž(júoÒu”6Dúqä¹?î](e)KègKêÅbþf!^ax¥ùy«_Þ`¸rUŸîbýÅΫ·,FF&h9¶¦……øÍM­×HÊö.žMcw›Šõ™«ùeè±hcép‡ü@(ŒuÕ 9i’ûaîŽMç2@+•ôÖEE§½zšìôóäé‹ß“·1–¬Wn©W8W`J]ôv §âáÇCaç7±±äý®#_žÊ)(À96x>m(æÎ³­ðBïØn³)°êG~2¤þJ“y/_¿¶ò÷ç*e¤éý›N÷•œBÉj~!cépþÈk),ä ÈÐóþÝ2:‚<8±ç;ÏJ€òЇ Ö&$kÏs·Ü¦.š&õbéq%|6ÚKK^¢Ò=ÖþXUì_Ä.¢¨%¾ WúuÕy<ÞDkõžR²ó?¨/ÞIy“mW‹©Qþ¦†`5ï€{ Û—XÂG*cç4ÀΣésÂÆ*n­/þÌŒ}­žþMll„‹ºeÿÏSÞšÝ@17Ýæêç´RÞ±±ÁY6W.wß…}ñWúM)L&±«PrgÆ3ÏÛ¾+!É,N¡d*b?Ìç¼ï‰í)¶ÒFz°`©CŸV_òd>»®Ì¦È¿ôÑ›V¦•&"U^ÌG93'%éERt+ö¼-˜Y«<ʃ–)*W/N2±#äÅ7Û¨ŒlóN¸¿.GHz®¿EÍÔöS=®ý-µà!5kèî_RÄt¾Œee61”¬¥‰¨61ÍËêÅ-®V|þs†%qhò¦?Þ@Á“õ³ÂI]Ú ™„)×+¬*™ŸìÿypXŸf}‹IÖ j¾»áÑB|Þ}w¹f!ôi-ßêih+Ëï_µË,¿qÔlü¨ïù`(oDܓ֬ñ2}gU»bƒ3¥Ulú æÄrB¸®Rµb‚8tÏT44˱O?ŽkÐjÈgÀ`pâa@ºÈ¤ Î’(,ÔÛnxuNwóÊ£:-(Bé.¦!B÷|;ÊwP¿{éÐÏÂZA¹›ºr»÷n“ã´.HÜêKY4ôÒv>ÿ’%Í–jçò™íaµw ‚pQɵÞEϘ¾`·ž°n6£§­F&âªÿ=Ùd£®Wïn8-ß h¥á4F¥}EÀùwŠ ãÜlªü‡1ìùJÇoí«Éže+¦hL¾VG †«¦©ÇùouóniL÷ÑëQMXo5Éz÷8)ó›ËH÷oÀÁà€dhTËÁ‚ûÉÄõß¿¯„*ëêŽ[OŒŒ •GDEAMßHZ±ÈövyÅ$arØ„Åg=ÜÃx6õð…’èۊͺ[¡Z"@32fþv5W8ÌÁNTþI÷æiŸÐ ¾»^ÖHº'£ÓߟÖ)æ¸pš’”Ô' P¸œ÷­MÝ$ÓtÆ]£Ò©W^l%hü3­‡H5.lk]g¦ûÔyM7bí—9ù¡>ô,tHV[oowzz¸œ(üBÑQªÇœ4D û]È2}4„>~H(,‡óvtt|¯wut” ±êø*&f ˜olà\ÖX|RJŽÌÍÍÕ8˜êw¿rå  aAªÙ/22 T¥²2@i0 ‹h(¨?ÇÌV{™™äÙžâu³*!k…GNÏåJ|uG5®0O–ñNþÞ45>’Læç";Oi„´1>*¢6ÈYªgJoúLŽ?w|…e[þ ÆÛ?ã¡ÒpTܤ"^Ö¿®ãÇ\Uvˆ|)|÷sØÊôA a’vjµuzw:ΖG*J:¯M—w.§íA-¢žöfZõN®jl«ƒ}ve|ÔE¦)))lù›þˆè,— '[[Ž‚cÇ’ ¯¬,ðÞÇ»½4¸ÙîŒGý‹Iä˜bÚ¡£åR‘@¾ÓüÈì„æ`ÄøðBàXÞ°ïlƒmÝŠ9BUÜE…šêÙÍVœÀoa€"ßìúWJ»šç[[ö¿€ØLÑ €åzšêêWЃËtjIhh"mœN‚=î÷É>ò©Ý¯ää°J!$(Hñ@ý½§íoÇÑTâö‡›&/¾y§WÏÿ»:ñxÀŸ!†%àûŒ¹Ç9ªé½N?þŒŒ‡(ªÄ˜ðÔN•õÕ.ëi6rõ¤ˆõûP;èÝ¡þîñKNÆì‚")zz.rpÐaUÄkØã ³Í{+¯änÂaex””XLLLÀµ›ôg©Œ¾®†` ÿWÑÑHóKv‘Fßhr+©`/¦±1L²Àj/P‡ÇÆÊ³|½V_Ê€Wäã# …£ö°°šƒi}0|Š ö( ‰r¶5×Û<~ÅýÇá›pÔ“¦èLTOäå›8jû§yÿÁ‹þhY·4&ƒ×Ù¼à ÄÕ°ßm(*G¬#p^µhQG²ïA‰i^_O§W#½5}ñp#jׯ6.¶HêxáÂHxÝè®ÔFÍýîºäº¨¦–ˆÚUnM™¶ðûëí?~\x;@úgáo"Â?³ŸõÂï1ˆk§‰©#öàRû5w¤þÇ}ýBk4ž\èGõK¾¢÷öÄ.[¾]WQ2=Sø s¤¥#.ÍnÏLsðe±ÎéÑÎÖÖA ë¬L‚]†TXy˜Ïõ0‡|ø KæÍVª‡‡ÿ ÄTåÖ¹?s°cÔ q¬&}õ`c+ZîãŽÙ×|Æ 1|^5'õç´fzâ6ñ?Ú!ï„ÍY/ÇÇuaÚÏ®îèS‘T+EÊíb’eƒ7ÓÁüNÛGsËr>7Ð[ê‡È„x¸þNC{2kù’8«ê¦¬L8z×ÜØÝÉÉ´2|j‡PÖÛ‡ˆ¾±ªeåh4§’Æ|†¿Ä" x‹½q´¹;{ÅÒy¬÷‹òr~kkë-¨t¹5ݘ»ßÉ~¡¸3õ6õÐ{Å6‹Î+xeéH™ßûKp¢ÐSÃø?ë$5â•?÷{›2‹%KJ]Âû±8¿æ^MdXŠ}ýª‚2ó!‰èש7.¼Øž#…*ít¨~}ÉDsš½‹WÌ„¹ÊIä= ÜÐçåå…•ÕÕ½6*Û†gœ=¾`KÓã£ÝólXEò8zŒòÌ5žbæÏ`ô4œ4•«Y칉äÖU:KÖc­9ÌÝÑm˜ž{e¡i»©ØÏ!ïw­aü¥Á)>~<—Ô[DXX3p¢¯Þ¿éçç§5¤q†7ñàÉ< Õûä¨Ù© ÷;£„g­w\å¤ï‘’‘…ºC(íâ EÙæ ÆçqRúÙþ^Ì´ŠŸ„šíÌÿL}W£Ëgöñ<@^€Eë'º•¢‚EÆ“Ãt,»tž¶t¾LCMÆ6q5B¾!ðŒøÐ[álååó¾ÃI€žxþ…€êE+öüçÏŸÓ‹‹nL©¥Å¤ÝÂÒJ,O…èo¯·yà´AM}–¾þèì$Î*Cˆ»¸ð®­¯GPÅ[v{¬¢À„Pva@‡È ^èã¸k¬Cÿ²ÞÉ£—1«X*o4PðÝèkœÖs‰q3Õ–ÿž5`U¹ÐŽ^áìÑßdyä‘IQšR~íŽËC–x4p¥_{\ýË‚¾ù¼À«a0b“¿7˜JØjWw8‹% (“Ãi|w„2bÖceذ"i0O'Øk³–ôèèÈÞÉ Z=óöÞ‹t²jzt“@NŸ8N_?R=G†“á š‡qÆÇÇaC¾ŸâÛ.ðèpþœÜMI--2|Ý«¡ÒiN¹ŸŽ->ØóÞ¤ÉP …ú°,=¥×üŽé²\íRùÍahEy‘ä"ꑇ¼¬§ùpöõß¶F†T]ÿƒLÒæÐ+EN{³\çËñ=VC(;doD³ ªG˜t`*ëiü$EX{i5¤Æ¡FÖ2,Ñ|¬W#?_¯rUê’t1¢Þð!>cÚ7$H ÉŠ€ÓF¡ô³¼<æWcÎÉg;h‹sssPÁj}ùBÃ¤Ô Ö"¸¦F8Dšžˆ”´Ür–Zddì¯Ã"F¥¤ðµµµ±cÝ*ç[?ûú.gÀÃIo9 òÙú†ß€w~ ¥µµ) Üþë×0•ÐØØg^j»tƒ—NT–ŸX 3R©­+¤Æôv7("'²Û„~zfDDˆO¼jõ/qäÕ$¨­$©.@1Wæÿðó¥tï¹Ô;ŧßiŸæUù\Y1ø®y±˜è¼oà’CêÃRÀ±~¢yß‹òí.C  ]T^ 酪è-M$$$.±çg'(0©ÁiØ€X_邪wQ766~RÁ8FÇ»Ë0s¢B>ÙÊz sz};Cõª‚BÚ¢ízßÔmµëº%ÞTG}ø‡TmVZšÂàÃa9]½ÏQ~ÌúQõV’çÊ­€xÅGººT0«'³¡Ž{ÌÓ§åÚ’æ}ùP}n´Rû Xˆ l⯦ôÇ÷§£°Áýó«eÒüôzûÎG‘T¢ºÛ-oϾLáwLPW5~ðž’hÀrœ9Kjžá®eÁ-$„±~ ÍJÐâЉ›Üx¥„­¬¬Uj­ª“¡ÈÁwdncƒ]©;9M*í?:ªÒ2«Á¤5`ÉûÕØ!¼Ü#ú耘$žuuu½úþ-jèP ïZÑê˶ÑQ bbâÛWÇ[„„n°±aûøø´âd4ßú¢ ÌNOz=ò=AJ!*zK³ rÕ_çÊ‘¿uï²8>}¥™@ðM°M÷Ë"óŒóÄä<™Õ‚㾡zŸ¬—C1òj´èÞJí½¯èk~ZÈH樼?¤;™êÀ@\‰LÝ›ðü¹ºP[ûßf†ôô&#Åf¸°’–Ü# ’ lJWlôü4ÿ±1J¨ Ãõó&ÁU`ÏÖÖ/¤ R¥zƒþ¸SéörD®7€Vý’¥Co`°¨ª‡˜ôWÖ·¸ÔY*‘ã±ÙøŠê‚þ»½ž©]NQQ|?¬ˆÊä{?àW\ ’­n~ó^®ö›§i»Ölùfƒ’*éAñÛhŸ1µbUðœççD éË÷eÀÇ—H¯š›,¤)t1¹ Ÿ]Èu vÖÃÁ’òN ?`Õs5‰Jð]ûiÄ`¾–Á5  ,Rvi9¹¢æªOãK}äùt7K £+® ¨09­+ݪó¡´”93§$ÅuzéÆóîôHûʶÖoø䤚p.Qüõ|CËDMOꉕqΣ~:>RºÝ‹ñjÕê•¥fÖÖ¹'-ñ\7ÄÓ MoA; ½÷þ=’}²Y,Mß‚£Ü.’õœ*·Mýpª»ª‹G€Ù˜lNÖÚàç«´¦çgl ³ÿmŠÒ맪JÛ ŠÍº)8›„˜Ìýr'žb<+újzûªâëߘĶºÙÍ.ºÜ»5ý¼\Ø¥¬ :õ00ÇÚ²È BÅ8áo¿í^ò¨'þïà[\Öæûm é=•¹mïħmá®în\Úg[HI ä7èDEi*ºþ*DPH&‚â––ýœ£·ªºJ:"„Mziáé•Eq+áRÝ‹Éyé”´#—ñ..È—·fš1°±KKyýýý_}ø0ž²¾¿>6³¹‰«©© $µ¬LcÓl8c[¿û£§¥§ÓÅu`S8|ø”U¥üœpÓaÏ9¢HŠ~¬–¤$ò[v=L111¸åce6àä1Î$ºM>—»9«DzXTX(./ÿ²è"fe0å·ÃNbN\²'ËHøŒÍÕ…/L£ÐÓkïܦCÌÕmßj“ºÃ˜Í“#íâ·x‚A^AÓnRøôp.*ëógI99Œ··û·Ñx)Ž}røýÑë`ÃýühqûïZ´òJB@v`Ÿ[ÝÑ%LéÀQÁX×BW"–•ÕªÐF}­æéòJ=ÃÜŠÕØáÁæÜ\€,­7HÏsr¬ÂÚV¿e¹€·ƒ¡ÂiD(¾ÿþŽÏ†x«4‘ àáL¦ê¼•™‰.xùޏÕÛÎ÷¼r ÍE&m°6 Ú ³«Ù’˜‹§—¸‘2=ŒýáB‰<ÿ£Fcë2¸…B·Á¾¢s L²ûúŸ™ñ€í1ú·­g}™Û¾RÝbÂ_Š‹#ˆ"–«ç1a£ƒÛ¤GÛpj5&Vó@Žfõ½L'c=ºÏì*zY⢑1-ÎX JÅ{˜Iµ†yj#Þ$™‰ð¡&gïÕ „SÛÒªýä3 ÆÌâbpAý9;;û%[Lö¥i‹¤n>;˜*°ñÚA‰ºŽÁÌÂÒå›Îìt‹Ù©PJUVT¤äæ*zÂ"N`âád'p\œ 8Œ7a³mlo¸ë¤M•ž]yt¢™­Ç=,t&À©¦Ožf•Å~ÿNÒÝ›Œ’´¶=α ÉZ/ 2þ'bpFÚg#2e1.¦b¦®§<ÊE<ŽV2Õl399IÆmªX½§Ô¯˜ØOUKy¢¬ÊÏ~%ÒÏëLôŒ,r¼ìúVÒß)|]Ú AYa3Ú|zU—uØKKÒº±[Xºõ« ï(*ël6RÐÒFÁÊ´êÍ:«B8“±Âu¢îx…ñ@,Â@K+ä9 zÚÇ_§ùØz+Ę˜˜ž˜™ñkÑyÌ·_#çBc׳tð¥®M½¡QÈçbÛôâ*FCšLØèÍÉ}²œ¼ÙŸ™Åž«g˜þˆ"­\‘®öö¦ÑR«"«!öÿ°´ûU\®¯l€ÿuÞœ¤æŠW\tÌÊÊò“¦·àz»ÐÊ…ûÅ‘¡ŽÆ‡d€µn)ÜKß10 *¶¨ óâ\›=7u«9›°dÛö ‘·k^МYo7‰®sÝ3Kœê[—¦Çw]6ÚBùÀOûiíì Õ³÷çk?É?æ×ùÿËȺ¥‘R¦xõt¯Þ§(£LäöVSB`wv‘,­ëï…¿\õö¤×æ„Æo(ÙÚë• &xeÀ윂Jë7¾»ëôÉ5J6ZîE²ï9¹¨¨è¨ûøÄL­"ì¿V¹¬Räf­‡ðë³j6œ·:ˆƒ¬¬¬ô½{’Œ1šˆñ5pB;·íB¥‡ë}Å€Y„C{”ÄÎÔÆ.À†añóó£^¹bÔ$‚oe«¤(Uâjð@jÊxŸìóV”¿ýÊŠq™üƒ3åªW¤¦´ÊëêÁíé;Ò_C/É>X·MQÍFL—9ÖdddÀ·°D6§KKóøZݪîððp©¶«¹…”C¿_ßiºÉz´äûô¶b`iñ•¤ÐÙè³;æJ0&ˆq/Nl;˜ôâø;·l¢Úͪ{õ=?é’n!ƒ÷$Ë;Êcp<,bâäU¹æEP×ã½õœ‡ýú<–Hõ6U//êГe©·©4ÝêŽYJS8\ ,8*üuVþs˜N‚¡/…Ë 2íÑÀ·ÍHîdâ¹Ã•ŽÃÍ5aµ…Õ‹‹ü§üÜ»Kfa'ŒU3ËÄ>d{ñšÚ.2‚ŒÇ“|`&ÃXñÏVdƒñëEŠŒR`çææöd*53EXYZÂÐìÊŠ%8ì7XX0»…wÃFaÅ,‰»¿±7]ØZ_¨¨5º“£YÐúY=GYOV~p ®srâŸl«%ô±)ùÆË”ž=æâæv8=t€}Œåý׊þ©˜òiþC¤kÐÎxEmå¹~þü ç™ýHÑ¡œ‚³}_¿ö;“%jiÿ@Z•þÆ pœ¢î:-Ž–XtÖ ”[åG%œXÒ»ãe*%·¾fPØÝ‡1,pËJ,oKàAQ¨tÜÙéÆ{‹=­†‹É©W¯ð7òNü|&܆¾+³ÀD ÕÚéEü§@’«U”ÖX9¤ï… ܨÔ‘F ágD±i§$À`)¡(n(!ÓJ-»°0Uoo/‚üÃÿ~ÿv hãf˜”ªjüñšÖ"$DêP©P5pªBϽ´ 7—NJ ngöá×¢v.;3³³³¦²6›çv––]ŸíDeúõ?2ȯ%¾صapw®Ã¥1§\ èj[¹Ú0o`khðçuk¢ìî|OjH§Ì+ͬQ›á*J–¬ϱÓÃý+ÏŽ¿‘?Ûi¿»–ðÆW_ÒT`âöëeDéƒÓçr¸Â§¶J»¸›HS™Ô½€·Xë²!4VNQ!¤¸ 0$Þèï ttô`ÆF瓼Š{½G›?¦@4¶·Ë“q¿nög`¼’žžUû‡àJàï.§×ž:=˜ÈÔÎ#éúp÷Fîãâ{d\OB ŒèÖÆ+y‰‚«+ä÷›#AFAIXSšâD¤¦¤ˆã¡J¯>êôüùóòßU¯}ؽ|½p“"â^V~þ —؃ÚI]Z³®½4É‚.òÀû ŒùzxTN/- ÿrïŒ &$¼ÀûòåËn«õ7­ˆ)½MuCÔWÑÑ©Þ"¼¼êÀï›ðCÉä¦wœ&Ú.yœÞ§ÛmþÅÅÅÓ››k“µÕg[͸’ââ~†OŸ2\#»#UKö©°RÞ¿¾¾~zv–˜@,ÇJÝM`Æ¡œ^X`ÂêËT"]YY¹FSp£ŸˆõÅT¹>ñ—ýÍWÛ!!Y&¨èèü‡^2x¨3“c/ýØÖæ"íÒH^Xxµ>âûhnù}ñJ‚~iiS ÿ ޤ‡¤®§gJ3žm‚ÃG/8 !š"©…(j>}îÙ2€ÿœ»µÝ0õB‰F€Íšâ0ak»3¹þŒñT˜ã"²µÖ¹DU V™™êñ3•a1nÍC[ãO…gÎF)}Mm(¾„¿ÏuRŽÓJ(›2Òc%kä){éyÈá© 5ýÛ}7 à|Vw‡j 5úêêW€ý^°)½ˆ•¦—‘ t5‹WD333®vxajiiñŒLAiÇvÖ‚``OFÁnGÂöª84„–ŽÎ”ƹ"}tJYYYãdìƒ=ßÕ"¹›þÚyAZ·mí»FG)æçç±gË‹Š8Ý•#îõ¥ä&ô˜+=:î)-ø”?u.!¬q¢gc[/;±¶ÍeJrGö¿ÞÐÖ†žì½ß5•HgÂëãëR«y9uRuQ4ÅmŒ&Ü‘ ÷,‚»Sqé[¿°µFLžðó÷v§âã«@f›hÖÖÖJ úûáL!tî'‘C¯+SêʪÚÏ‘;»é°C3JÏø“„VŠWÆ4³Ø²Wx†9W”ÜE £Rw<Ç«L4òÊ\} ?Ö‚2221ˆ[[ßn¢¢1*ËfPxkçÖ=»klbBùÛÙ×\ï"óý¾ë*MîGâ.o'l³zHcƒäÎ3Ûü^Âõ“´_¸ˆ- Xé84ShëË*Ë¡È"jÔs×צ¿ŽJê>¬E|m¸âÔìM¹?ŒæŒ#7$ø^ ¼/ïÓ#TÑl=ƆQÖçqúžWʽí«\ºsÊ~-/‡Žë®;ü‰•¶ñÇØ=ðøSù49]j–ì]ÖHS””ôíû÷ç×1F¥'–û2÷|B3::9>Û6†¶ÍÏœcÕ®_ëÉ;LHˆèJrÓÉÜÈÉî¦õ ¤Žß#¿²¨îâÜ ÷„†† 8/½štxO‰e~x¾âYþðÞм[Ô—R9=ï+õö$ÁWý¯Oázšœâž½Óe _1~æí½ 1¿ûú GrªSÍÛWÆ'‡ß”­ ù¬‰÷9 .ì«3Y*,hŸžu }t fÐÔQHU†bÊÙjp´ ð>°ŸÇøçÇûÃÕnEÍ} x¨7Ó4 ô‡‹LdÃòkKUåQÚ¡§¯¾ßOc/•lÃÚÚ+¼öaDûšL)EÏÒÃ|dq²kÉ8¢_I»»Ý>å9A~è­‚%¦žBo€«˜çö#ØÔc&6ñÀPK’V¸®‚­s%ô_ïÎ8¹>®‹‰clˆvgÉßM€òøð©©#>| ‚B¸õ§¿±€/-ò9óÌ5¨×·ûR\úOXë¯Ò°³3OSs3à¶Ÿ?ÿØ~©‡pc‹n~þ6î’‰<' ©ë¼²ƒ)ŸµãV[[à3ßZ뎞›xÉÉɉ_œŸyì˜ ïöHA1Ó¥%ó\½êÁá™åØèèç;‹Ý&p^°ÓÂÜÍ•ôÕ êò:Ÿ³c—€| ܹål~®zÖí[âé\öó¹r ÅVgœ–:xŒ7šßô+×xš#ZO39î=£ÂؤÃY§Àf·Ñqxsd’Àb²`øÛƒƒ3®ýãââ¦çç`ë$ðSw 6”R­<ØØäAÆÎÎöNN„€ç_‰Wüµgdd䟗—¶ƒ Ãÿº9¨¨>ÆÕ«ø¹yy“µ^Xà¹{õ90ö¼äêÎöÇü«««§§§¯ƒu׿Է¶õùæµÿôŽ×ê-tWB_­v]'€–m}w]%[™ùE†B¦÷ñ.þM‚P<"¢›pæ­2 åÆÀÏQoÞ^sÜqp‡¯âããK‚ss`üM«ü\%Wô0eÀ„÷+¶QVÆ‹¤º‹ìææ†h€×`‘Ÿ<}*q“€ND„úìäÀÎõ!ÓÃéhY N8$ÎØ8?Ù”½wíxo53bõG<7ÙCÀØØ`I Õs¨9u'[ûûPÏï“bHëÝVÑTTŽj\„aî¨ÇŠíO)„§¢Šûƽðiù!>S3³`ŽºÃ¦a#<ÌŸ ®áù: ¼Y”4:ÓúQw~¾e¨ ùÆSzp¿ã´¢H¤Ê«JBzýbQþEÝFäóG"×W~)8ÂÛ€ý áŠÞ‘N»Èûz®¡Š¦&ºŽŽ¢ÈÐÒF<”žŸ£Snk3àþ_òw%&Sï_ ð~ÒÎkhþàÈ–c¾[èpŽ( ‡~î:‡Nµ?/7÷£êÒÎÄŸn´ã°|¬Á—Xž-{bd¤/EÝc•…‚V‹‚AÑøDCâsÌ…ËýËb¤Ö'«¦Ï™Î—ÃB’W’y6¹ÄW§§·ÔÐÕ¥†ðULLŸõ˜áͼ»SªåûCƒÞ(lÕniûÎ"9$S¾}èp7’¢§9ŠÉA@!³¹Ó£8hkîî:ßÖ.ÁX*hk Ä*]Ï7¨Çqrr„j¦ üe"‰"ýï0EGÏäÓÇ)%%D„÷Ã):wïÞ<¼ †D¡¾#99yÈË—M_C uˆìÔÕÕÃ6çJ‡ô›aá콕u–éȆ_,øñŸÙ·4/ zKã(ãV•ݤòÊ#6E–˜©Æ†„\+·áú ìA€„„ÔŠ#Sp×i¬¿«¥¥eZT¨£öÑ«höµj¦§“›KXÁkÔª E%%Òòò0''G¨Kû¯üÝþ©Àa1–øƒ88AõõbPp¢é–9X€.** 2Tï×ô;{þ÷²ªVEEů”DiDÀr“—D__Ø'qgç]›zzoÉ‹î³‚× Ÿ ¡çzºÐŠs™Ã gݬ=ôЭB×¾±Ô²±tö¥ }„ fVÒ¾Ó]V2çzÛ,ÿÌSR’Ça¸Ò9’„Mû£M±E#ÌC4ac`c·ïÍ ðáúÑá¡ûSÓÙÃí¹¬Üܯ¿¾_ÆfáO!ür4aÙ7!êãà€Áwxºà¨©>lÍ|] }ýI›ƒ¾×^vÿ†Û¼O\$‰P²–÷¼V¯Þ¾ 2i‹„3K¡¤½ýI÷¹ ÊË rM•?> +Tô¥¨ùúÊ›ÖJ˜¯6rfa‰Gdu­öv5&LQÄ}ß;8hË׫î©÷õEˆ{z êû=ýõë—ùؤS·T ¡ñÞUYw¹uë–ûn¯,²¿¿¿ý¯oøÕÕ(jA¹n€M±¼¼è{ðÝa5ãf&ÃAþ¦ÖM‚Ô”Äää¤2KlaIIÿ¤•ª*ð®èØïÕåû)‘¡¨˜54ꡃWRÑl&þ“F.4‚Jê»Pp… ×ðƒ>? ȱ`–Ïi”êÕ÷‹Ä´_4†ÁßoY˜XXÐ@¯;ˆ‹#òu+¦t}Ç~º­ 0(Èò¢ö²Ø™»Ká&Í.ÃHcáÿ“yµÞ³ÔÒ{/ÿÓêöݾ}»¤€˜ˆˆçЛ‚'ëÁ\J¾„J^PFmuõÏ>ÔTT….«˜À*j4=Bà{K„¾\0àI ZNkf¾L4]8]ÁSÜí×­¬Ö^Û^uóoùp ÙÛ¡a+É}oñd뇥jÄ¥&£8.»Éb´¶Ýˆö—¥ñ@¿¡Æc‡¢$4<ü+€°ïðèˆ<üÕ«WGw,ˆŠÂ ºFîØ7u f“:/«‚5Ôu¸Ì&a_÷ßVÖG³@?¢Òi‘þæMÔn‘ƒC5.Aú Ý œ;¤$vƨðÄlQ¶Uö- ÃÍë'ë•‘LqGÆK'µ†¦Ù&QÐ\ß OÍ´hßžôO(K©äù_V9Ãt3=¡ó²9qä3û«|ì î–´No¶âd?xHÇËK  Na‘TªÐn'ÿ”!0¼XXÜ0Ýoã™W†„LâÆ´çÛkLŸUÜ£åŸk lÊVÍŒðžÃX ¡¸Ïõñ´ј®»e¯¨ôNÇ%1-Ф5œÓ£ÿ4<è´Ïz2Ã/%ÿë`¸^Rð:î¿k¥¬x¯ò4b?éíE?¶í Z7úºá@D·,Ì…„Özÿú-ØûG:žwä<ô==«fÚÖÞcáMë5eXN¡ø÷a2¥QXC^6Ó{†üî"Op㼬éIðÿ~ñ6¡þiYC¥™e8oˆôÒÆͳ›ðïDoo¯R^R×”\õô-iÞ‡ç9xS2Of;ÌúDª56yóÁ+刖{¢\]Q!PQQq‰i1²Õ*ÇçrJþý©PÞ}Ì¢âümþîÞ÷þç|[§ "Â4…‹SkFìF$½d±ýÉ ÿH)+**Ò*2–)^ÿ˜ýö-š˜X½Ð˼¼c:–óZ4XBü©:ð϶þ­¨ë7}˜Ë&}ž*ÞÔàb'E$· `ãÛðò>66¯~Ò2Gtì_UFC¼MË!Û ‹df•É´®Ée †a¨!|Wú€~ýGi¿Ótí‚'÷›*Dà ƒ#1pB ›ýá–Ñ‹  ¦ÑQ Xøðá`Ò#–Xè¹jjkg––B¾}“Àp½]ðª_‹‹üB­y þ2ôøP>1%åzEUÕlŸ’Øl”:©y<ªÉC'(H±±±Kà¡¢‹[M&åP=èkº •äààpww¿.(X5n€rÖöÔ;áÓ·öľ^Í„(fŽ`ñ¾©ý³/0|U»(Ó«Ôéç_÷¹íg›%ÏHÉËò gäˆý­û²•úŽÍ(Ïzå¿ý4LŸAÁ¨ñ ìÂovÖXß2÷ G¿¿f€…£ˆë»™W‚0ü7*€15±óC”Ž8Ž¡1·Gg%ŒI¼Vƒ ª·)ï``a[æŠn~bNK9a×Üh²jøáM c¥C>ôO$/kÌBB–8~\ñÑÓ ™íãÍb{Ô4.mȇo‹Ì÷@YgwÉ‹R4]¼3 X~Èìo=ú$N leSWˆèÅ ÙȆ‰ j4·pRåãÇÙXš½¬t¢å^øû#»{yIe«5ýüù¥±Rçd÷¿¸ÿõv5©ÖÿŠPÁäv[Ÿ;¶0J› ¼šGãOà݈§økiÏÓ^}ÞÞ³§5ÇŠRªØ/ öW¸#"0;zÕ®F=)Zöt’’’Äàà`ylK¬Üͬ¼¼@­Û¶.þêyR·Iø=6E®²°°ÚØ`§Ô=¼‚û W|ã¯( jªÄZÕlŠ22Wn„JÈ%ŽíY“»Ö¾=Éô¸þä‹f|2fQ¥Ë6}—häJ±77\öˆÍû«êýJKx›wVÏð¹¾SÛ¢¬Á€5ýŠøÿI?›w{ ¼³ÿuqWü5p¦¥%%‘×Ö×9]×.Uƒ„éD¡ :®†ã®ïO¸¾~ý:`W‡„§"aÕÌ·.³¶›óÕu_[[›¾¿º½½MÆk©V¼ýmÞ| ~²|‘‘T 4²°YÛ|sÙ8þw/ˆ€ãs°¶@ú\ÀrÝüœŸÁûÜÀ{Z¤B'fˆÙНùöz§ó¾×º.Ûm›Îéi“Î< ~©âÒ°Ê)¼¨<Çt<пIÂ+—ÿþqˆ²k¾F‚a{®Ôö¦ê›Ä‚–ÒÒ ×‡/Áiíß¼Ÿ`eàZ~éˆÛG4q–y¯H2.'õCmaâÙð%ø€^±úº )>b‹˜Ï匚HâéȘ>ÙÒ*Ú¼í]’têͺôA …ØãÇciS¨šÁ£ä7žAìǰ|‹¾á’H–ÀþÆÄ˜E[z—’z¦ÄÊgÖoãzA'ŒU{¬ÔýS  Êß½^ßøÙËrúe–˲ƒ¯ÿxL{4>õ`.Ò~Ý.€æÌz†Ê»(>ËùÒÛ[¢«_q K^aż¦×ƒå£$D.t”¿ Dë ­±‚T.äq¾•HÑdx<éY*sÏÉ“ JÍ/—¶dt$£Y] f‹¾Êãñ̦Á•t%V“àË®ËÚ,öµÙ–0Ø,Ñ¿búöA)Jù{Ã]V|ã$²·ºµË£•ڇ =£á–hÞ íÁ—µìÝž-4nÁ„ª…ׯ§PÓß|”¦rU ¨ ÏŒP¡×-œ­¶ÐômîI`r‰C"¨á®–&ÃëÀÉÙ;lÔ£'oë€Ò²ï›Ö¾ÂòÆô Ú"=o¿2JÚXý;"×ü²ô&øÂ–Pò³d¥êiÇ[Yó'¤ñ-å‰Üã9‚¾z^âèþ@eN»0ÛœœKû¼sñ¼‡¿“……Îü£bÃDgÏ@¾iÐÓ„Æ8y=|nÂ]…·Èô:/{¯8u¨ßáŽèç#&®ùèÞ¬ñ\B‰µò×Ń`13ò|œkqC;ÛïÚLDDÏ<’o„7×t= ñ,úúU8<×ï§Ò6Ù9*)iÓ4ú-þ^YÌÁ¿k(ÞèåÉÈD_ó?¬·º:¡âh½6d\}oŒóuîèhò%ºFŸü³«z’ÝÊè(A”Ná×ÜQõéÊÜ-O_Ó4#È}n™` ¿¨¦Nr· )ëc€[xÙumIVVVî&õd 9XiØ–“"€GJ𹿀`IMß¾aàààL­ãžÆ<€+êW]-d;U‡xÕ1¯UfMnmcnõsÀÈ¥cxGÊé%ŸsÔ"G‰ì“)**NÏÌ<Ÿ¨vËù5±u”*lhf ˆ‰‰  "77÷z¬|ÂW ö󳓙ÙYìá<ƒö¹«XXØ7 ®;ŒdßÊ6ì<‹6-j¸|éQ¦¬Þj¬U±wOW®Ë ?(M¼$PÑS>'Ø¤ìº í±¬œ€@‘@‘$(mÚÔÔôæ ŽÎ´¶fý"8Ød²ÆƒÅAZEZNÎ; @Ç®šGM~J̇ ÎÔsZ¸F¡?nùÐÁÁA«Ú•---Í~¾XúÞ½2A6û'Oà‘›ÞØ˜4NÎͽWQ‰}„º9QMjaa¶¤É„!“HikS¨>zkß`N˜HË–ðævNÁöéZ²LŒOIMmmè gÉÁ÷W„P%Ä=<îlâVêâ  0®£'?åæâ2´²Â211±8}}ývÿë×½ ðíǵI6L;;»€ã/ °Â¬å6ÃáâæÖùaõ5ݯ[ññ£! “x2*O?Hà½JJŠŒ¾!ûÙ¥[,¡| ´ÂÒRõ»¤àãàY˜B4|aRQW\LòÊïÜÎvú–³šj—›³ÎeÖ²…ý߯•jøäˆž¡!»²3ñ§Oà –ß¿ÃÉ8Óî€ñþåÌäÖËéTuG÷Ž<˜BÞ@JJêijÉÝ¡|½€ÌÌÌv+àÓÙh`ýëXÿÀ¸L4B­[ü85uì:§I«ðîp?g²ÀÉS:.׉֒¯øKCÉ¥Àˆï¸{£ó P«FÈÀi3/‹Wäi%ðÔhÞ¾} û´îß¿_},ÞÞ.ÿâÅ‹†ÉIš{÷îÙ;:6ýžïÓµSÐcó&ϼÅÖb×]‘··þc§od1|ô1£¯¯ï~\ˆAK°¾ïµu´˜lr²¿P¼F-€RÙj˜*Dt/éÛÛÛí÷×F4ÄŠ‡ÇÆæÆ+X`Ä¡|¸Þ³Bdee8::zP¶¼Äs¶ò>zze §}ÿ9 ºÚàçŒ|•GÁg#[ðï= mše6–¶ò ì¼ü|œGŸ%ÔÕ‰!±‡rf0…ÍcAÐõánúÏòÂB¼ÀÀÀ ‡94Ÿ£yÒñ:oJnq£uÑ2Y}~´³xà©j·Í{`aÏ÷ |a)ŽM~ù€jMëúààôÊUšýÓ’O™É¶­$Á1½™™èñŠA¿ /¾{.<¸Å……w`‡///ÂÏÏÖ7ô8v=ÿòr~cccmjVff nÓ `#TtuÃô‡ 0smOlm#W€Ï¸ó=¯å:!žßô´á¯_¿¦û³A§#¯ À›DYš»¤Ëà³UþeœÂÝw&¼íŒ¦×†þ– 4°*Ÿ–yµÒÓÓáTܵÑR…ù—Pƒ ®Ãƒú ì”emU„²²2BII‰ˆ”4g"S„¢òŽ!âË—/wÜ· ç­ÀÀþ8¯fýs~,^›¢@Ä£dðÀ¨;ê“6t„uÙ"V¯}v:ù§p ­­Ã¿cÁaEr(!“Úñ@?TÀÛÚÙiæB=XÛÎÄ«ïO`›„±‰‰‘©é ±>f ”Vø÷ïßÓ AïÞ‘…Sòçðj ­upÔKki‘A!¿¥%s¨nÉÖêÝ“Ÿ-¾ ÅÜ€q ¥¥=ÝI¾xñüùsí»=Rxϧʧ¾Úq^qïÏKÒç½vvì´®:Ä røèQ€EÂZÂHùãÚýž‡aR==½þÁÁ²œ(EFî„ö9ZC˜OÄð¿Ç2ðhÁäéÓÀñq]„_`à°ÊêêáKéQŸ‰pçï¾eÓAÓÑÑÑÒÒ‚ÚéàUííí•C‡*Î OÑQ%þ—¥?„ A×È‘IIIU”}Zߌ ‡ê«çàÐ%ÝDÄ:-X[ÁÞAmÃk4Âd°_ÇÅ¥T{Q–=îÆíÛ×€Ax%w¸*¤“²ÖùKkú1¿5ðûà(}zàèýû;SlK'T‚× Z8Lù÷ìÜ\‘Q3Úðè( vÁ¹-0XŸêTì¾mü.>~¦À÷Œ,8 bøËS,>ëa„™™™€  =—êSà'” pœœ~|¸KÑ:MyY²Ïñ-˜ùJ¨d8×!''‡èÙ?©ñà‡ÁÐÎ. 8'øà(÷šo\"—×oÞ Jài?s÷òr {×_«åñÎø3¡M¦ø× Čݭ´ðÔ¢­Ò^ÂèTæRñ¨­©¡"!!Y×–O ªpZÄ GŒ×›¸N7<÷ ©´´z[>}À߀³EÓ›¸x0LùÔú„©EÄð2ñûûïzz{U¼D Ñ[îQGj®3›ú÷©áa­Jp; ¢h}Oñ¡Š"°`3ùá©ÊÌjŸÆˆeŠîëÛ´dåçkDBu‰4 ƘRðHö‹]Ôd|'v}ƒëgñs$ y~´…K;TÇ Î“JËÈðÞJZŸ¬­~ÔZ\VvÏÕµì [¬¼‘Mžµs>ßbíÁ¤”§gU»!ÓCµÇs££ªÙDiÌ’D2obcgÀÁ¢Ö–Ú•p(M•¥õVc¸L4˺Þc‡QôâÔ‰ˆˆŽg±ÝÎUÔÐx+¡ÇΟVQJ†P3†M]]8âc‹²ݬ :{8:Ü"áYYÌZÚÚ’,±ÈÊzsz„«µV‚ú&;L-N^¹|`(?ªÞ:==……<à3§û”ÄZ2“}F-‹ŠÓÁ·a«,$¢lllÄÀÀ0/‚e¹¿` ?0Û0 Ü#¬Iðdfq1s º½W¯ð Ûû™¡ë”.Þ~oU>ßÉ?% ,ø‹àæâQP|þâ}¼» Ïë˰0èK½š/ƒupàÅÜ·®;:9m'_œ¢#!!Á’§QN„áÑÁ¯ÀúÃ~8iÖ218jTtt Ì?€%*ÚÚŸ÷+à®áÎÍE‰µf?Ê× ñ@TÖâuUÛ@䈀ïÊÝ|ê[ÁYÓ/|áþ¢Eƒ+î™÷âªJßÅDÜ›7!ÀãÙX[KSRR:€'5¶°È°ìg~JëÒª–©¬8ÑMr.i*®'!dTT·ÛŸ|1=8ØÞÆhâë‡T*D2*©Ê!½½½iÕÕÕæoãPò)^ÃÆVßàx™ÆóýëÁ¤—RÉ—/-ÀPm3ÒÙj5n+à3§KSbeiù5‹ô%Àxiaaa‡à]^#Ñî®%aâ‡_}ÎŽCÓïEDQÝM×ÐÑaÍׯÕvvv&ÂÆÆ–n‰ܘ7ó,&¥$(~ïÞ½cÆ¡Õ-))! hyÿž¢´ øKBÒÛZ×/_CÀ>EÀ¬‹jx.˨1}ØguØJiWâ%qS¢ö‰pjhw9uho’÷a¬N÷‚|Ò˜¸Å—á¢7’o¹ Âuìü1ôû¬ UO O¨ú°#!>>àoþx–w—@ÿ,ª¸˜œ˜yó†HàîÝìÜíÉ­J]ö¶Ïê9…O;HÔÔÔ ]ääälç]Òù©Z‡¼Á#ðí[ðè0K›Ïƒ P¯è¤ìjdìà+aºXh*·£…#Ù~þT…aì…ñ€÷žL]D¼'À-àõÐÀ{š›oÇ(t²Ôk ÐUfÕ1´õ͸R[å¯Ã8OVÂÜ¥S–N¼ÉËK,!!Q.)&&&TBeBlðJÙ®7Rü–‘‘±yXDù_)ØL §×¾õ¯…z¢ÍºvÀ–²ñ¬Zö.À¢G¿}´µe‹*phÃÇŒ ˜ž?IÄ –vªW*äÉ&kK~õ% ŒwÇy¬a0üþ‘„†S1¯þm¡­„ZhÌ>*,,„R¼÷¢h°nÔéŽY@¹G<pK(€s:þ’¤pvÈÀwÝ^ø» ŠeOÃH9`ŸöùñPýlW¢¯3&çö÷÷ɸM¯A(GJÇþ=“#«€Øž‹ö{G¾ñáÇçî “WLùÐF†ÁÛ…!bÃ$}E€Ó™ƒw=zô ˜ŽÑ‡p©‡Ú;:¤éU<:{zð€­Ä{áÚ&Ó¬·-óu+ 666ÞË“"ÞŸý°11AüL³îm\º¬¬ìS¯ï8):Ó :Æ(‹ÅM2£_ój•[ô[·YèOÀþÙ/eeAj,Ì/ñdðŸ>} Ü¿uðË„ýΨ ÏÌÌìW_/†Œ‚ÂûÖJOq]L¬þ;uâ'ƒÞû7 tk=ÕGDÁsÍÎÎò¼U2àŸåàd3B½ÜŠ~ºÛ2M0†EôßÌað܃dQj2kX?m@¡_à|O)`ðii£¨‚=yÞÈÈÈPÜ Ø’‚.˜<cÜšù •ºá F&Œ®¦E=ýûf!ž3â`ˆ€¾À¸8R8L*++ §-,"¢ø‰™éi?Ø•þ¸ŠíÎööóˆl`fǨù¹¸ÞÞ~^]-kœJ÷¶šqgÐ888à€CØ ZdÞ›æõ^†÷L!ºÖpËä_p idØvÿ›ÿ_~¥m(*]…«¿8Vd\öèºåÀÞê ±(wHVœr˜@q6Þ /O@gŒéèÃ`øä—‡Ù“3TYDDd~â¹ôÄÈ#%‘Œu"ø;¤ròòMon=Ò?ÿÝÁqãÖ­ì±ÖÌ`MoH)'‡ÕËkö<ýL–ÃKCúQzbÌnµéžŸ9=üƒNVÔw¾ÈÁ†`ޝÿ>!Yf„ϱt^:xÎaG𷽈u½s§oÀU~žÂ²ù¿Ci]ô’ Þiii†W³ÕFŸÐºìÛÙ=û™ûþ‹àZBrDI·Ýt6.M Ö*•L¤=l¹åÿ¯38D€Šdã}Æk?-®9p¯HXæÍk5˜Uë«CÑÆÔù:¶}{5Jxï9š˜iîº3ü5\ÃÿØl6Ìy{½ÒÏÕ 9/?ôÄü€"w³þBô÷ÎŽÐ Ò•9X•!-+k%„ýÏ*6/”™…RLÉÏr4òšõQVQÅv_¿~møö Î<‡Í©qŽÈ`€djTt…3®*<÷X>$&9η󵹺º¢!´?¦c`¸òðáC6éyG0ÅÓ  ¼B»)ÑÛZ…ˆŒŒ X~™ÌëØl–zÊç„óʤûl^hèé)É|_…'eª >š¡ƒÍpÝ,ÜjŸ3Ahþœ(¿¦@ãØ>$777XIpã œt HFׇ»!  þOÈ áWQ!«WM¢¢¢Rá8 ?‚bt¡âñãÇ?ÀB€*-/­áÁ¿x+îÙØ°Á'h•˜ã#`fÒ KK×õÑ@¯ý뢢úyîð:||¼žD¯…‡zóæÍ†¶¶ÌbÇ4QfNNüºººìÁ7løòò2Ù]Ç›ˆ†––+²‘TÏcc‰×ïÞ%wZø!@+×ÿótã^8ÀuT­Q´á ¯_ûoϵ•{½œnu{#ê>©­O15îþ'بËüü9’´Ê‹°0,×ñÐ6Z_*„ýï_÷ÕÔÕg*“¬\Ö&?>üä—¤R½I SÄ?+\•þDë/_Â"??¿}|`¤,cBн„3™9mFy`çñ×üöõ"[¢444E¥5¨KÊ?^ÖÃÈÂÛÛ;¶ˆúodËÙ¼&IN_/*}Æ£BS#ø{B5Œgeqo¿æøçý¬ j‘¶²²’ËP IÃP!‚‚ÅfÝ’x¨°öl™€ëŸíxÖxÛä$ÍbWâ£Ðø¤¤ü^*ŽœÚÿrjÿÏ)éІƒ×û/ãkIÑ¡”™¬[_u¤Jq ]FüÛ$\ÅÀ—“ØÔ~ù'pœÐ­!”UU¡ñùö„ WD€»ñ<%å:T,ÕdÀnÃá—nãì9"?þ‡Ñ^/à*:&&F±%¼Äæ`X$”'›¨zò‡xý¹§»÷†ð±š¯M&\vT¿K4þçvšÂ¶!!!˜œ‚ôù¬É€ùƒ54¼ø $(& ^ñ€«"ûÉÛºxa\½*amm7?@­õåÉÕñ‰‰mÀr?—vC!=~~~pRf2âô›í’ #)õZKJ©ÓxþfÀC æ7‹®Aé׎d¡F÷BŸ1!èÃ\ð%¬mSƒ]ÿ9Ù²7®öBwûö5()AÉYlaáã#‹›>fæ£qÞ'û°EU¢Òç^ó¢M‹ÚA2Ì Z æ6†2Mÿú8YEïTݳ»0ëö"00»TIæ×hÒ‡±×ïÞañ'¸ l’,éöÜî55’öí]±µ;»Ý £áæe]±ÁÑ×Ñ +2i›ÍÎLjÌÓ125 ‚¿5œü77Àå|}VêFFF1C—C¬0°±×û‹ÄÎMþ˜\‰¼ó4fc¦É™ hªŽÅÍh™þIÏí± #Óø¢¦w²pö\zéΟ+DPOÜdØoKâáœã4™0談³â.å…×FFýúBééà ¤»:#ØõkB€I[-¨o=ÚYŒŽÍˆ<øç<Òh¨ª J˜oo’º¹žÖ}ñÂû,ò,JŽ›qÅ`‹Ù}ƒ"ã+|v“¹Ö°2)) cØõj3öiœñÿ#GÂ×Qd=Â5<:ÚÔÔ„ ®["ã£Ö»ÎKxkkk¯Þ¿]ygca93ØjÇÞúï¨kw0’~'Wô³Õ0€¶ÃÊW`Ân\…@ð‰§¹ëcå&M/®B¸0³²òòÅ‹;Þ=ÌD—á–a“¨Æ¯_Qí®õr+>)Eù§¨†µÐÞ¿BPô2%"¦ÍV¨_÷ŒØ¥úü¼¼-ôÇÚøúú¢@Jaÿ¿]’üÅÿ3uÝî\;za†3ØOn³.ØSѾîXo¿êj¯ ÏÂý·Ëx}Là˜OmmЦæf(Ÿ†PžôÖVSû¨ëëò_£XH[õËÏis-NŽW øo–ÝdgDZÊ—QS#xÕüa’Ì+¶lèôÿñ•6)‰'£b=„ãïØæáá¡ðî4 :ÔZ»}û¶öz\t4’ŽŽ%åܯï1[¿7”\ù¿éo=]]Xb Ü.š#@Ýž˜šÓù13Óä×·hˈ-qqDÝɆÐü~÷uýŒXàuŒodçåÙÄÌ™»nÍÀêôØJ`Óçö† ‚ÕXZ` ’—•…›F`Ū箹n;~”ع{ñ6M‰l8ÙsàHÃiÅô+ـǟk‹ f~ÉrRú6@€pfu5Ìõ\àìò¾u*¾äæ¿mÀÒ¯n/>Í:»½Äç¨9Ý›yl%D|)ØÛ·0mkk §x<¬¦/æ}Ìs¾_^?³5Ó|‡“SâgbàX*²¾?Yš?9˜v«   vÜvìÍO6V?"‰Ç(ê9))L£Ò‹üý‘YÆBùÖÝnïë9]U%¨¥­ýy-æÕ«”Û…|ýwâÀî5öõ=zZ,[ítýïžy6üüIPn75èJaiaÁXÐ*ú/+2“ÚÚ§öa#÷s zܯه®ØÏÜÄК‘´Ï<_CC%U"(³ÅZPãï²:È{ëlV¯pÛ¤D1žLïþo7<³›—G+keø7HÔ.¤JIÂÅËkêÕj§(+[ëK|å33Ö1Õl"¨3QP +)‰œ–žMê3X(''§|wÓÅÅ‘¢JTZ^ÞVé´¨Ö*¯¤d§‰ó«ÇŽ}óÆ\èJi$>ÀõÊ©¨=r¨Ê~²õ!ïÓ½w›?`ŽO ܺƒI¯ŠgG\°)2[d´J-‰áøã\ÝJÕ‘‚Q===Yü¥éþ©öв# ÌÚÄÜTT˜ç»{÷îåÞÖÖâöY<ˆéÝkîîÆÝYì–uuåûR\ŒŒ¨ŸFz:000ü²³³C9lµ—àÇPÿv¸±bTþþþ°ãnmªž¶¥¥EîáÃÖñJ§±–=€d¡†Jxx8ÌðT‡ì÷ÅÝüŸDÀÿÎô÷÷#*Äd6ÿ•òU£úß faæäΓox†ÝI",¤%óŽ·uÊ®•••ÊÝ6.æû¨pdçÿI `tvžSD‹%»ÔÄò¾“…Á›‚‡¢Ž•TÀWCý\š^ÂÞÞ>ÁÄO…nVQ—nÿüfSçÖ¨[>Ù’ùÇ—®âåðCÄW`a÷7ÓÆÊíÂ|ÏV dxèÖÚÝÚÂ#$$T?æÿ1ù+s++ÖÖ––P€JˆÛÂÉÓd:ø°•>åŠ?œôÚ 0­²²’ŒŒŒy²Ö«|äl”ÛÔ»ÜÍùtp4¢\]S3LBBböÔW:© pèÓ ͺ“Ø~(ºïƒ( V©‚Œ‚‚åe³Ïv élÃs”–™æà°j·MÖ‚‚R±“5îÞu>>’‹­`±°«íëØ;æ·Ð]nÞ,ñÐý‡%Àç·½IBBòÒÀ÷¬ÔÜÄ$}|ðpóWìTùÃ#ÿw±± ¦OŸ†2*âÅqä¯ Yü¼é¹±ŒL s´Ü×ÇŦ¡κMy3áÝ'’Q¬½TÀçÔ“›ûÑùŒÙ¯¡„ê­àç"é¨×ØÓ³JX:p#mhdç6Mº“9ÀrhŽ—XÄ8®íÓÄTÍ•ØÞJV=’~¶Q¹c|ÛàsÒ+€ÉäkÛ¸ýEµòpG7ûpïÓl‹/©.4¤‹¼ÃB1ÿeñuŸÆe=ÿ[Oan£óþÓ‡Ú#€‚çjìéÁSWW¿ÃË{Åþ¢:#È÷¸ðrŽnŸ>ÿ- ˆ¼àGÕ[¨âàÉuîÝCƒ% ÖÖá1LJMXiÌM€gLù^Ôʇ«¤ß»ÕæààÐ}CÖðéÓ+xQ>Üuz?²âÀóCõ×ü|ãà 8…hhh,cý"Œ.mV9ª¢ÿ¯ú@‘PG*.àÜõî>y(h•[ùêð%¨+zþPýpî¼Ï™'Ô¥ðŽh°4a]GY£6cß¿_;Õ^–““óÛãØwI˜W×!ÞŸŸ— Îª157!A±yŒ‚’’áWWç“s6*ø)Ò|#mwá·Å3v€üv”çDo´”õô’¦å _ÒÉì¾AÃòòþ×1Ø`Eª•ù¿HZ¿Ý,@IJH°’ŒlØØàšÙv׿ÙÔúz1`‚MÚ"æZ#Ú‡¼P‰%ƒ3¯¸þw0©úe"%=}RÓ†ú‘WÿÀ’xñ•Ñ…ßÑr7¡LÆï餯--.æÖî”ô˜8@Jï™øµÐÓË‹U¬„ï@N^~%7õP(EãÙtÊ è,0rYŸ?«Ž€¥É§ZÂô7C###pH–¸¸x±ƒÂÿÉp_ê*03c€÷6aõŽë×tttp†v†BÜôúzÄ»wdØ´{%‹ï´MþÿIg‰ð]V±åöaæJLB×ì(;øüøŸà ¸è9šAÀh±*Ö#_d*;ÛÚÐSüÖÙyå ÙȯàæÜ±§àÅTˆc·áÛ¨rYÅ##ÃÐÔÔ„úÅÀ`µ€;yzÓe›Á¹†M.Õ›u9º;ĈÿÊ—×Çœó`5þk…éHRƒg*yÞ¢§[R••à3àts8Ïû¶vIÖ„ ,ÈSé@-ª¼B¥=&÷êÕ+-mrW{èqÊŸ;ÊW$gÇ„,­"­¥õnT3ý/¸é½øàöOL¤F\çæ&gË¥~ÇBßFFäaë¯9\§<#ë‘ãÑèwk¯lfج|¢’Yd¡+ÈreI|Ù¢þwÅ"ï?x £¬Œg;Y  Ê‹  ã•þìч9CÕ‰*´È\ögÃzjo¬„¨á³7#³º`½dш÷¤wr»úÐ×¥>è—a[‰Bˆï ÕùÙO™Ó]W®àêdÀÜt_!ÌMÛÛ7/öfŒBiï$%O™y«…Ô`º¨& 4ôª°°p!@À¦1ÿÞ¿(Êò-³øo‘åšïׯ__Ç Ãµ³³‹X˜sá³P½åó>öÊ#V”šýDV´jr+!†ËÇïK½å@{Hf’ççbÇ4}EYZ—!l_YÚYj”þ‰Á`­OèE>y=Ä)9)úù~ÃKA÷“ï6 æÔ“|±m¥€ûx9Žmó§éÔ®} ¦xYYÌpò1 ‡gSøDD/~üP IËú2õåiTÒæ¨?%@lu mÖ úímüö–©@ãúÓ=^Ý£yœ{hýÅºŠƒRn”ÔÞ¸ þÜ@ÎÉËcƒ‘6VÚ•ùI§qŒòs‚žoÔÐeº@©ÁS  Âø˜+™Ùì’€5 E•vuŽúe´L8+*+ïs[%G˜ýöjz:V níq]¯x­í#Ý+~°!<U2Ncé°3 í½j4%%¥Øu°Pšÿ6Í¡¤|x šÆwù`Pî_8f¿ «ã[`f°?5L cš*n¤œªn\À5E R#’%%ðz|ÍÅtÏÏùlÏÊ)öJ׫–«ýÏ Îð/]Ï"’Y__wØ¿ë€egkùÿ̨†öÿc¥¹F‰ ¬].-æq͆“Âõ½[ R'F?Ñd‰N5ž÷xd1çf™×ÙNw«¿ãµÒ‡Ü¯1 %«Ô .{C«ŠÜd Ãþ_J:¾ón•mmÔë×KËËŒ1·†dò²²üâãÉÿÀK\À3a<§R \IÓïžGPòRˆÇ®×äµY;dýLLLìG²­÷1⺀R¢¯¡ô|õv-h”ÿhˆNœëxÓr·­x*^B"ßaË»²c3'µ©×sƒó–ãçQ³Xênå8¾ç'ÊK×¾|¨?Z „}´wøøZÁa…1T"bâ` aë? H(h×) êŽY¤U^H¦B)°ª!55ÂÀÊÁî#৬¾ åŒ+'‡Cˆ­½½–ÑR+#sóá§mrÿù¬Šä'îí±Ýõ9)AŒœÈ§¦ßW¹¨§íô;»a$¬Uÿ]4 ™¹^¥ù¹ç»£ µ¦âØ¥!R’ý žÞõ*!½6Éóõ±6¾ §_Jó¦üoí&`§„ÍXÖb„Ç+µQ˜ý|Îö¶4~â;-^èÝËVC‘¢¾æÈÙ4ÏXHet­¿µ°p³MŒâŸ ]wsVKc!Õ5j;œn·›òYcÆÏc«BþÝ5&°7‚­U™`ø33—XI…#ív&Z9ûD²öá`†åù§YêâSZèå‹d8Ó¯¿þ³Aüóoæ¶~[Ý¡ø¼xƒêNÃó¢KŸöâŠÆÊ %ë* xZ^¦Ù.brù/O쓸²êæ= mÇp§#òÿ~Tí ŒŒ—Où謻ڥd‘:läÐ8ùŒÉýµ"C*Õ,+}½ä²ü•—D+tTYE9l½àå‘Þ|IS€,YóÏN²3ÚõÌõݼ¾@vÍí£–Îêüó%7IËÙÕ›Y©TÔ™f_&'CUõ¬g¢˜(ˆ€þ»2rXðã$1+CÀÇTìyñÚž—c–û4-Ý$;ŸEØdÞû»·«êDãRžÄ¿úS~ßccÁ´â\Nn62ü46+:UkÿEÕ£xÌõðL˜àÊcsøÐ+ ðÓØ}})«ÎP¯ùü@%i¾Fgÿ˜èïË”êÉ×úO±ØïVøÕÓKhhd‡Ám…òîþqã5+™v‰þõ¼êLñ3|ãZ ‘K¢¬:6Ù½uA:„ÿÃŽU„žˆÚwZÅRÇr«Ô,˜–œÃmPSv¥Ó݃Z…?Îw–=Ÿ¶>ìXûÊ5Eg£eÓpÙ{“Éúî[s­wÊú‡\_þ=t÷ß^£—¦Ù çz>a²´g55Ðáyæœ2´yîÔŒtPÿð‘Yer{š6ÕµŽÀ¬kgÅw?èӠޥ¦9Jh<²=× H­¼C‘œ}áxEÐWîƒh€[!ÁX® Urð#ô+Nµ±¥ñÝW{˜wW§~«Ýû'o Rª¾Wá™uíçGU¢¤<¿ï7жÜÇ0»¡¹h§òÎ 8Pà>.ö$ Gû=k}IˆÀÝÍ þœ—+ n?+nÉI¦¸}ð¶á9Œ´wÂuŒiÙË#ñ³ì%eiEaF|µ‚¡àW¡ÆHc{í|ýê˜ÂŸÜÂ7e´¨ò¼é£È Ø—ñ&dp'<‹^+’ûlÕ_3QðvÁ8ää,ûÇTÁã”ÀuD&©––”|]+/MD»ÌÕª¸–¢eв6ô]¡¡Ä$qW?j‰ÐþØ2éwr›õšý~¹à#q^,¤”}¡éΧAK`:±ºÉ~Ù2؂̪¡á¦ôXqæ:åЄeu懒6OEv#\¶¾Í1Ú¿@ä<¶z@Ÿöpèf®ƒÒ%HN9”dðñà@>læHýðO73;Õþ0¹gëõwbv›¹iq¶Sê¼Ø/-2ÓUº•–Ýãå†%Ó­g²þ ÍæýRy÷VÙ„D3Föšò#ýÌu¢Ðª×1þÑÅ”À{o­Éßõ¿JmÙëxËpÌíÛ·áX¼oO¸ ¢Vi! Òœ¨®NLEE…@hhh@qúž^Fö2Ä ‹]`æ ?ØúMúлª!X…ÌhçÜôëAäíüË,ög«òɥРtÔòx7™ü%¤“Pw`«KYï`î0­€×?Ô6(ÔØUÁ÷}ÏŸÁ1:å¶-?3T´µ1°„ýa²hÄÞêPznî5n³®¯pšQ3l`ó¿n¸>ZJÆkI´¿6 v¶¬´N‘ýG@C¸>äKv&~÷“¯R]š%ÇÛ…*a]_‰ggÝøN­¤ ªHhho&ÒØøýµÈ9¾‚´ˆÔ²•§§  Ý#OtœÖþ“)·Ÿéþ×8lxBHož£lÇÕŸ^aÕÈ5?€ƒ0¤½G¾ï½:×}ij o—ÛjO·bé•Kgô"€õÒ]Ÿ—ÖÕÑ >˜%#'Oýôé^F}j*Ýçœ: dÕ¶`¯p@‰þ-Wì·HåïS—Ã…úK²" L ®šò³:iœà‰¾…чQðð‡0Z~úøQÜÀ€ÖÿúV£l¹ÇÒêê Êú‰ì<.‚'íKɉÿ•G“»îí;3ã«xÄ5×á;ÈíRÔ+ki…TU Þdd´¼A›fztx˜RX¨GWZ[[Ý·[HÂTÿÇ0Á"d„_¿Ú»øxº»wÉöç§P`)Þ,iÙ¿XBºŸ›·&ýóö„úfÍ޼¼ü«ÄÄM}™õꊫa>ž¯Ç{«*àlùÂKªîpsKâÒ•,Vð!Í}¥?vO\fA¡œÞÓ§ a9Òý7Æ+dë^åV¸?ô“*}š¾ XxïIÔ) ½ìŸï0—1 p¡ŠfŽ_žŠºnØÇòbû[Û$Igßh”.LÈ.ó“Ò¨b±ø¥°i;??êŠÂÝËÓ)g)—ùW}sHTT[6¥¡•U ¸ô\\°_ލ<ìcFö,÷eJ),cÿbk³/¡W¥n$0¦×™™1H9ôá¸;¨f½VÜÝ4<\ÑÑuõ¦êþ«Ði J˜©eëêêB XYYå2~2žðÒÌmÍ4ommùEGã«]è¶©P&1ÏËÍ}•=w#mòép ™ˆrj©]¡çun)ñžÜcïG؉àÕ5óÄÏ툇|É+4U¢4ëZ¶î£”$0Ã?Ÿ=í-mã¾5€ìKLÌ`ÄÕÅE]´ûOMÛÈPOÞ½{÷Ü÷4·Ï¦X‡F…Ü6t‹MJ‰ ì6##£€÷1Ì,Bƒœ†€ç.3xI!oKCú´:Æ[·î?Õëo…×7\Œúz?`Ïø6ò[{»ÿ¥–¼ªÕ5MMMUƒ!3pK·7ª7éÅÄhïÞ½kÓJGÿû™Ž¿¦¥ýžòc¬@µÔ6­(ݶÚê=?ɽ=J¦#¡.äî¸Iø›Q0íµb{x5" ûñãÇí‹0„QV¦QF«¸°_ÉgàÉà§1C'gÖxo8v±ï.õÚ;:Zºæ¾5^ZY1þýëûp­ÿ—/_¦——C¡€›^µ™?:ÈÃË‹u*,Á«°B^ZD¯9^«ÊøÚÿ.ALäcÇß“D¾cK&@!)[°¬·ï]2·OR÷G)Õˆ—BBâ¹Ñµñ t‰òõÇW.yãªËýç¥à~®{£M^º6™'›(XS¿Öw•AíM]ÑMæßëtS»SAo(jªåüÈfê{Aº›¯Íˆl2W›B2ö¦ÿK‚­—胾Š+vêÅ=¼[^×xñþµ,}/0ýý¨…\á´ ‚PÔ~;pÌP­­­ï˜÷\ÿÚÒrë¤ý¿$Dß8àP ¢ }üô©LÐTGû½caévBX‘ï…L¥nM7¶ï̬­]CŒ¡ú…%æ;Õ5hÁoÀBp4Ø2srÂFGµc‹(h¼<& oÖ_Ô9Ö{l@dpÎB•›'T¡È5¨§A(ú@MMýG—îøØ3Ö7=ÿÞó(n…b”:Lz_C³žŸ\K 1âHÝÜÄõ°»¾ÒAq‘Ï_¹“JÝçÉÄÀÐØÙ‰€ŽÛZã±ó¦ÞíýñÅÛ,V™{÷Œ¿¿f°wsk 㨾eòµµNáƒaö!ß62ær€2Z[ï=¶g · ‹9ßõEõï:ë¶ó¿¾ÿî–¿UΊÓyÞ§ËK«ä»\¬àP”;œžŒùNK³·/ žØõ kŸ9¯ž¼{ÿÞx©'µ½¬¾^LXX‚­-û üJ°|‹”J€¾ãµ"ÁÄÂŠŽ Œ=Æ÷»Ýçÿÿjí’ÿ[ ''!R²²äîb/­ äD'%E¾yCD%âIËo˜’Ÿý¼9ô·ý«!Ó‹ðŸZ€¿­`j­–îklóË‹‹Á‰Bn,|óq†ÖÖãk¤l—®þËïæÿ ‚˜3ÙkãE¾½á1òÿcï?à±îßÿqXKC¤Tdd”–uîa–QIˆ"dtN{ï]Q¨¤¢D¡”$%++»RTЬ$$ Ivøoêºr}®K>ßë{ÿîûÿ¸®ÇNçy¼Öq<çóµÞ:ß»"ØÉ°‘ÍbB5§8׈€hØt°á²œgëu-%ˆ£È!Ví×_\Ç)Èà+|ÿ²9#]¯‰\&úì̵ IÛ @ܵ–¦Á½ÞQ®Èm‚Ÿ?[å~}"fÑ<ÒœebIÛ‰[ ©!÷#ýÈóWÛ3üý‘ =ˆ»[…E<¾Êñ½ùþbõdHžgȩە‚ ÒØbÔS;î°SWµ·d5”ª¹4~ÿ>nß«ŽãÚÚÚ .XúZ·§|êš,Ze¡¬¢ò:ë [H÷Ë8¶®Ú×Òè‹Ëò†ÞªyxxëåååewgLÝZ«:6ØmÔ!3YßTšmÛ,_Ÿi[U“t(ûC¤%²»F#{ÏÙók†Þz†\¶yTT¤ˆ¬kÄ#«WÈŽ'Ú+ÂÓœ»jNE_ãêºüè©'wë0™åÔã£ì¬^îËN¿x­/²%+qÅÑ(g›!n&ÏÖ‰Rï¯w$ÒMRíäM——ó&)§æpã–JJªA‡_D _‘Ì6>h^1Z9R­©ð"ñ Ë`OSÅ£sŒz÷ùˆ!Ý)üÉ49õ®Ï·•{0‰»ù›¢»b>~ì<û)lÜhkLpËâ[¹«?¯]<ÊÉnÄÊÊå¨&ÔÍå­éµmê£þfË#oö U àxêÄ"¤·.- |½çië† Šg‹””é›TJXXØóë»Bx;ú††C"L¬évÄ`±KW¤Dï«îtJæ»ÙQu)1¥JMS[;y\dÃ˼3l SÓêt˃µ.††üñQnéU¸¸Ú‰WT? ^Œl›J³mÎ7¨êèáWUUåYÎ:ø¹9iˆ¬(g–Ÿ†pa‡ëk¾®ã'TäÏŒ\\æÂbUs"=q[z_sBZ°}ìšb34™›ó¶òÂàöcŸB®‘? ¾9%šÂþ¬¿^ÈÿVrFD¿]_U—£hNሇËDòÝfÛãœE\›ÆGF®Mí.“Wwø½É²§awnô7ãèªI¢5=pŽæhý(PhÏ‹œL×Oõ<_œ°¿ùNŠTOyv¶Ë3{âz˜GG‘Í…ƒœéÏ€œìí¨Œ’89ÕÏ»pîÇ€3'¾|IQÿ4E'QÙ¼Px˜å c;·¸ÞC(øÖíÛTHqá¯L }™xõk8PÔÐ8“ØÛº&øuGé7_á ·)J\DD;힪jjnyKÏí:éØöèÜÞhÙˆ76ú å4gï9W³v¿uǾÄ×îQVoRíy‘ãjk“ݾÙ1êòùMáË85©m6GF:WôÛ|Ú¬¬³éÜÝNË T®¨FÕó(æñŒ3Þ« ¹Vâ¹6d1ß—ŽG²+‹nÚ’Â.Ñ‘¾#0£­h›nâšàŽ/pÁÈ}ˆ,ô@6ýUå”ù¬Q\¢É#ëfw]¿JÑ 1UÞÓ”¯džºÇZ¸ÙÕkñ©';÷}rÞØ&öôÓ²'é¦rOž“ãCë0ôÀzÇØ`â¡ûÊ7oÝ4Ö[^ºÜÄÄÙ¸»V d— w›t2°®à~/ÌèÀwYk®Zãq7n OVkïߎØ{šxüî¢Ä!ÝÖ7eŸúµÇ x@ÏÑß—‰›äóQ ÝéèåFû·>cݫ׬A;~Ø‹ìû3zIîÉí×Ϊ#ïýåë×÷5‡lÎ +ïÚÅ% àý¢¯^À' ÞˆÊåòŽwj{•ÉàŸ¼w–kR¢l¢Ëªfô|R,ã\퉋#õBʇVqr><¹F ¹Ý'€Zä¿)üTi-Dîà{-Oo¦â{2¯ÁDcuÇjÅûüÞ£ßÌïÇQ”»ÚmRS§R>ô¢MLÆ,Ýá\€B¯nik€dKué68Á!ðIÚÜíôz¹Hèïê85îžìŽõ6ョzlG¿uBµ«SLF»ÕÀSUÕÕ“~v–ùT>71>V]àëë1ð ¹hÿòF$Ý ï¡¦r»u«7¢Q­ 6ÅtŒ}k0q>ò §Ì~Ñ ‹óÏ$Šxlg!ð”òth}j&’Ò¯¤µõî¤#³‹1$™K¸ÿ´–U¸þ¼{ÿD;Ÿ +pm´×²†h¯É™=òá2‚½ò½¼­ãºK„ ®Ÿ=Ë© 4 \œŠ†˜RûÂç­é–µjÉ’uçÄ V«h!;á>‰ï?ä^SÔ—r’”q÷ì±ëXüj±tçî®î SŽ=®R"Åœ-ðç,8qH1PLU-ªp[Jœâý½_ó4qa^!«§z·¶ «wÜLrtŸTòú×Ñ×zMKF‡›®·”¬0ïèLõç ¾s-îøÔÒ¥K…åäò‚6¬‚Ï%/?‹œŒ½~½À/xè•ÚÖ¡,ë‚ÇPOpHÈŠ»wïÞÑO»YŸßÖF÷òò éH«’_ šìä6+$ûu7þl¤[CThӻů—uÅúF=ûeöZ߯çvŽO©ò¬ýtnBjïç+¾i·%îìIaݪ%¾£<R•„p_¼½r,ÞüQWm–}«¬ÀMè¸{ÐçÈ‘ÕóçÏó¶{]ß,B&Gœ>½ÜØ­eQYˆ`o=Ñã›à\y×fäxÈÓ,¬ ‰á—.]Ú¤4U9$hDV˜Ëº}9¼µk£²„±G§($¨.Þ¨æçþû,…‘úäa—N¾uëÑÿêØkmjK^Ô?‹’ /))Ù)Ó QˆÜ…™RËÅǧ¦¥uÎ2&vË+Âüùó‘‡o†[¼MR’ ‚ÌêmnÄ•+üïß¿GÕûÍÉÌ&›'ϼz+¿^ÒÓì0Yî©J]¾¡œÊ©þ®¨DC‰KQ1pÔˆ´á{•ÂfyùèçÏ÷!ŠÞžiÓÄbÚYèˆ}¼sCè&uqñÓ@[‘-?¦[L°!­“½Œ3]Þ'áñѯ_@'î,ð×Ë÷rO÷†´ôœÚ€ì»Ä`0’ +„K.TXº£+–x0…Ùû6ï{»”/åé%´UcÖ‹ê–×Fx›üæÕöå±K—ö9-™hë‹rfôtQ—Æ`Ÿt=qøˆˆRýëˆ6ü;¯ß­£®‰ÅC ¼Éq•B„–¦ÜÀjˆ•WâW]X-çI ý¹1;tP*(dv&¤Tq¢cááÓ­_/{˜°?^²rê÷á>¯ñZqý{7êóz)ã³îþì–Öu9oq‹$ü³¨FÂJJ”/J™T:×!»{‘b¡»¨-EÇ£9R4€Æã}róòŽ^Ä>¸zõaµð”gÜ×?xMì¹×ߨ›[ÄOvð·Í9Dûkñ DŽãv]RĦ?Ñè[Ê¥ongÖ¤Ÿ?¶‹`¢N®Üå+ÿ´Àæm•¦m‡‡´2òTÌïß¿w™L$‰·\/¶LÉÛ œÂÞÞ^Üà~ ð±”uÖXŸ{º J¦Ï›7Ä豯_¿ªi¬]½z5òìoÞ`dîæÈ½{–õnïæ½u?ª¨¸kÐP‘Ã"¬|jÒ ÖýkoHÕrµŽ7+²æô­§‰OPPJ£!;4½s(óL²QΪõë+Ÿ\‹q•Érß²ö £âbö™$KδØ-Vu÷Žƒvé®×1ÈÛñ Lm%¦Þ·¶ŽÀP² —Ê e:€gíJ©EhtCTbäšµkË øxÆÙÇå–!=8ªzLgÉ ƒ»ÔE§¸¥6mÛvÆåóËåM¼Û;S•ùhχiã¥bÚÒLí9M¸ð%ådÞ¸{¯WóŸK`Õæñ§=¯öó:ž=trë^¢¶S).y¼LÑñäéÓ -*eïsq!å¸8[——–}µæÝÃ\È{ï/ ­Ú¬*!¼ âÔùò¸gOv@ƒm€]¥!H`r‹J[”ë[ût>y/tOò#œ±ÎÒ^ÃvIq½½½;_%„ZzBÎÚ¸ysè¹s…lR¹‡ûZ&›\›íÙC^ïõe‡FŒü³»´rd†:‚`Ù•5ÊŠ®ºL Évì€ú°iooíÃ{/w·Ñxä:ûÖ2û÷%KojD=_[þ0•R Ö/1ö!Dp`p°èÖ­ •.œ]ñË¡Q©3:yë¶µ ú9.ÈUýùc=ýö*¾BŽ?Ë¿[pb…`Oç>^e­0‹.½¨ï‰o// /U`À ŬìÚZ°Ât¨§ ¼¼úZàε©›ƒ,ýÏ¿úUÛî ?é3»¥Ìp’ÿРuÑG ‡!¯Û¶&VVâ|+äIwG@ÈœX¾®¹+äô‹S÷j­&X×#×qo§ƒlE6ÚU²"J™yg0§yÐÇÀ.¤äžþæ·xŪիK"ñ–È™JÐ3 ‹smÖx~Mi±KïÛî}¢H3/V03hxò>Ï­f^!ª™¼Ýbuе[òsŽpmóófšÒ–“*Mñ+§…U$›`Ö`½åxëégºc^²-U¾ØZcϤøb3§•+Wzã%ë;‹ŠŠ¶µµÝÏjÛö(PÀ“k…Í<© \Goî>ãï£wóMõµ ŠÎÖÒç¢&•+}îð M<¹Gø~@¾¹Ÿ¥ò/ Óîâû=ªª}vbãÈ™7{?½Ntÿ”o¸´¦ßtÁjnn¬Ëg=õÖJ?…A-áÒ”-y‰¬b «ÖDóLçWÑzôlÀk«5ømìݺ§Ûª"ç¥ê’SuÈ Ê‘bV$«w\w„I•åÖc/÷ë\yó½ÁuiÎ3-‰:žÕ]JWgv;únë('j¾Ú³Ð’¹frìÝòm)ŸTÛ8Ö4=lîÍh*ݳ{7²þñ­»!³¾ÕsðsËÝòõ4@@PwO**€=ò@‡~ûøâz™û÷ñ¨Z‡d‹gÇ:èL&€ªq7:J£c´ÂåŒ|y©MuoÎNmß>-:ÎÔ2ڕґݽaëÖ¥ ´ d¡­³.m3$ådÝäZ£œSÝ‚¼ž«§2ë@"ÚOg‰ý¯tbO¯ï¤Ìâë‘ËB#{}wïÞm†¶Œ9p¡þQƒ‰FO¾ƒtÊçk{@0Ÿà0( õî·ã™÷BZ3`+¯êĹ=.²1ª-w÷ð~­|'ØþÌÈÖYI°>פLÊ™5$Ç“°­È2æ‘•v¢L+ù¤GøÖjœŒ=¡zàÀ+•g'¶HJn‚€„à@عߗFrûõ‹œï÷ܳoÝÙó K2sl1;o rùZ¤åL£'uJôNWÞ¸ñÚ¬ÜÆ>¿*ºäc›zÇ¡Æ*^Ù±‚=>z.¼9¯98nmsŒî0Œ½×:àó-æícë±Ð†=Ã_·]Øk»ìÝàˆQcOÕ胰”úüʸ“ó Ò-}½—¾ü^|‚Ôœž¤-æ¶ÎGm-ké0'ñ÷±Œ¯wŽ7Ž·ã×LX»ÜÂio½³cŒ!¼n‹œN{}ÍÇ·Ò ØÃ^ßú²Ôe’\gã|8á~kwŠ‹çéÍW.¿ÑÃꤨpmö.ôѳê«{à,ÑÌâÔU¼ˆm-25{ûöí/}}æÏM'Ø2sœ:µ»„>¬—óxeæŠö6~Ô„„ys¶ãfb£ÝÂåàùÑÀŽßh¹ù•κûµµ‘õ2$D|'ÇLš8§ç *OeOŒftmÀNkÆš×— ·ù›ÉWÇkvÔ™ÆÄ™øðOu5ðv9‹®“¤Ò‹†U<¸.Ò¯6¼sqúØ®¶[uwúNá¦åú¯£NW-aÚ¬­Ù&ãbÙm’ªÃ»ˆ?ÕãݼoÂÆþßžs½TÒÔ;/%à±îùÇH› Þþ‚o&n ®&{ËËË#OäBþW_{9ëkö¡êÌä:–£GÊ~ÿRü4¯Vób­¢apzñJ¼ m®ãŸèðfÜ~ºÌ¥£Õ%gAŒÕÆ9æ¬ãÕcMýš”LiÃT¸~Ô¤Dæ óí,®âN1WeSI­Ÿ”(LèÓ½6è²)õ~¾…Hò@"¶ðö­Ü7v&9çwNØaïSÙÿU«µù…·û¡#ª¬=î™2'ß2‹ºjð â·¿ÿž«pËôbub—ìMIa¹o_ˆCKß~TÊ Wz.šY;š°4û´…ä¶à—ïÏ'ª·ü)ÆÊNµ¹#ÏW?¹`…,r™„›æcE¯{NðÙ<´Hÿ œ½ÿ‰XÊS£î‡ÊìK–d}ìšbøœá»˜©Ë^쬳æ_CÈo I»õ(íjÍÖóéâ;í×?Ü’s0íñ›±Éò*ìÞÑgDRÓÎ`o#AŸ¥-C­5Ð2_}¬Õ+ËžéÅhñ73—t&(ëê®-˜ïUÕÐØ„Ã…×v“Á“pìŽÙϲ]n¾8“Ýxæ™Õ®$3î^ùyºßÒ‚¼'eƒ‹»>«øÝÆðqä,pÌŽúò6¿qØð~à~sØ×‘’Ó¼!2¡Ìe/Ìϲ¿86¨R®Î?²Q0]·P-egœîóÑÛZ®¼nÛ¡¢wo,½§[·cïþ$Û.Í—Aªß`õ #]†hŽÏui%ååýÀÅš½‡²Ï OtíŒÑ5€HõË„s—/W€Ü—²ø÷˜þ|¾}|¨Ù•jüÀi«¾Þho ·Ñ/=yBaò»ã&õHä·¦WÓ±*ËyP+&áúÖyŒ®…êÛõÁÀ2&¿w(ð“ì‹{N=ð‰(œš?´wßX¸M™’p_Ëîéî·škÚ&ÚÄG|Aú¿©ƒ|¸öó·öÏ^}úÌσŸl¹‹k…n© ,´ÐwYcÊqÀáÃáEª+\n¥‰GrJ¨#/8ù‚*Én=#“ÕWÆ·NÁGÔ5r·Rò×È“±û ?Gêùs¾'~XÆ'º9^—z >•·[o[÷¥Š¨†ÑAãËÙœ& \/yôõú—;Ne•…ì°-ɶ6±{õ(Ä6Ú¥òÍ7k·VçúF•vvÇ ÕÂe«ìîëÖ¡?úò2Q«RíÌ2{QË“ Í.ŒwÛ~ÿZ!uÇ8¯¾úîçdTÍãû8aƒ»_«™ƒIDm}•n>MúÌÉÙ­ l’|™_ÕÍvhÃûã,Kz»+RÓ—ÞHzÒ É¶5Õ¯éýöÖ$Nžýiî›Ü ÓrZ§§™_lÅãöÐLàZ‡ôFÞ%Ÿ>ùí1rÝJ–-5RŠS wü¬”ödx87rÔªµ,øºïäÄÂE‹3ø"6¥-"€G¯5 e'-t<ή֞’¶KÌêR…µžX÷BeOÇñОÚçâ²Ì¶æÉÞK–‡’tZÚ¯U ®9¨òQç„ôØŠÀÁ›Í¯¶à<Ö{àym;öî“Ê[–®{Üu{V¦¡tÌ®áû›S9ûÍru†UjŒv\"ü‰†‰xôø1ò\û;úieÕ-Sâ/õüº;Š÷©kLÅ­Ü6~|^üñã1ºáñ,\{63?"´ô±€(`mE“Ø£¯ÙVL…ü  Ö´ Þ.1¤(]ß¿ u,‘Ýi7æùȦ!ËKÁöû¯:ÑévߪçCÔß~r%HKí8¦ü;¹ÅÖFÍ9æÈSíǦ!7¯è\ïÓ‚–U\UìŠ/S‹ß$Tv™nh®Ô/aæÕM¿z3ÚE&X>ޮ׺¼Ãõ.ȇ§’ÒëŒ*XŽ.¬º|òËàÁëÕïºSÊ2ýÖ&ÅðÚ*°ŸH}P«¸âóÚpùAü céI"Τhdv£… ¾7þ£)ø¼¿èº^Ž !ÉøoâÙg)š¸Ñ ~tÏÂh¹“ëôß)e¾Ã™$@úùûƒ.ܦòÝ\%v“šˆÕ7 *µÇÙu‰õÔšdèÔÕˆ¬èÝŽ;Q¹0ArŸŸoñí„ÅòîtçÁ^îkíù!«xÇîýœˆ[¢µ†½EØå²_ìr®Ñ}ìò…=¦Ü©µÞ·¸="â¶•ïf.z1rsû×Àµí‹ÜÍ×ðO|÷ ÿpõÖêä(þU/dnšµX1/Úå;Î'½o‡Ö‰s÷ø±.‰~‹]7_Ïz\-VÀÁ’zˆ?ŒqpÞaÉLHù¥î^pài4 ½²¶`ÿ¹5´s‹hG±ªÛîQ“î…~?8d)fý}lR`ÁCH)Ü÷žõXlö|‘Êé–'k‚ü«SaR\|4æÅ7¸±[¬?<=º¬ò{ ’+h½¦Ç7§iMA¨¤Aíi­eöíûÜ·VF$±&¯o÷º#R¥hl-k«Åï2üù®Ó×ÁpVÆ0í*Ífi‘”ö)Û¬µvïl–Á8Ùuña_~ÚïSÿ´#ÔwÓW^êçn½ó)O]ÖÄž«Kªô7×I¸pURÞ&$-òóÝ,÷J/m°Èè,«’§uÔRݨ‚Pñ‹Ìö™·‰ÿ¬ýý5ÈäR€‘ÉÃhQ2(×[¯–í0rò7¶¾ÚÐÔmæ›ýGuáÒzËró$n½mEbiOÚígÛÔô¤L=>.ý$RU𡍵ã›ú<'¾Æ3ƒA¬ócó.gû¿•?qe4#̯7¦PJQ­VƯ»ÿ¶ÎF1ôn¬´îÀ‡C¨‡H–…zf…è‹®T ø„ŸŽ½-7’ð"ác¿Ó.§£¼šgY½o¶\PZý<3´#‰3Öùñ“'Ô©…¤é©ÓÀµêö$~ÍÅÂÊ–Ãuw»S0œ/BÊvÕœX]TíS§»·rˆÑÖrÕØôááó·Ùg,5MÞO¾ªLϸɩžðÑtCçäÖ´ýÂ7©bMþgq„åÞ·6Z)7hëXă?‰­\•·f„yzDw›x#NŒ7½f¼#>x…@±ZJY|«Ò­µF©ð/÷ƒÃ¦/qWC+­ÛBí^Ë´…Šf=¯¦ŠÙyy P£]1{4‡ Rù¢ à<%*vo®m¬FæR9‘r;™ø0ÓoðÞ•e²÷÷‰º›··Å‘ÕÜV˜Ä©ZZ#‘Ýè¢"ú¸{íâ]„¶þꓲ£ |*ñ|óeÎs>c>{çCÈÉxm°f”“}tŸ”×±<àf8ƒ±Ž|눦OWÅË÷nÿÄ)2å ÊŽ¡ 9 Hê&5$GÀ…­J´Í!ÆŸKV®«1©·óÙU=[v´&‰´÷+ëÓŒ§=Øâ`Ñ.aÙíÝqv¶d€A§ì —ž/”+4òÞçþ8SE¸>pÁ³ùQ¡!S©õzì¸kÑyïγô«JšJŵÝ\Á•”©+[ÓGe«ûNª%Ï?o¸FâÔh³ñWf¹Mµošä»¸alVÙúâG÷IäS ¾ËxpMȘxɘõqÜs¾Û¯ŽÙ§¾D8—=öäq½ÎžšžUËά{a¦ã?ù6¼YwÇ_Õäé™1]MfêɵÝáI¥n¯•;jouHT C}o ¹úÆA‡±"I ›ú’‡9dVOR.®y{pGÏ„„ݾËìýü²í™÷㕬BóÜN*YV9²àî–Vö[ÍŸtÕ¤¬o³¦=þYÁx[äÝÆìûbçj³}5t®Ü… ³ózèq㜱IÃï¢'[R•Úœ}  »˜ø®3Û2å õab¶f\˰§½Æ÷¬…-UÎån4T!mò¡rU%ÿ­wŸSTuöß]£ÇÉs}Ãý€õjÇl}G0[üÍxTí¸+}ŒêìT°yá‘'^lî :Wϯ \.;ÍAb•]ÿ©(Ñìm%îoÈÕq¾Ø4n®²~³kØ;¾ž+ÞŸ¸{ÔÝl¼ŠÓ‡UÌ̹{÷› ž4È@¢¼'Ú·´µ[*3lÚ_D±z*§ <[d~ƒË! OœoÕl;=.½TŹSõ”fùú8ðñÝ+äÜ(:òòZü¼à§÷A¤ ½ö©AÛT¿Å8ßð¹Úã¾ z¦´žk¯p½‰õ»uQ[+¡ãF[›z,joûdrä`³¥JŽoûút5?V;ÒH¥nkZAÁDƒ£ãĺ¨òK¬=_HÆùs<ýêÕc÷ö5.½oÕ £Ê·T4Ê”ýÔÐ\K÷Þ¿§¦6N¹™g{íÑÂhÕ¦v‚ïäÚBJHä:96èÑ€¦£Å=¦X™-òZ*û¸Ò FÖ~]qÐð Ê–ã†q(MŒUªw“è‘ãf¢«UZ@lIÑÊÏ0>½ÖKÒöúªÊ!(¿×Í”fZÅl{tYÑl)è/áÒܧ§·{÷î%ÈÎÅ„„„7VEEEdw¸+»EÍ0{wú‹ã÷}£ õ.—RùøÚô(=^Šò8ß­Sô…=ZÃFìšxüIа×híuV–Å÷»’7ãvôv~á-ÍdÓ¤Hf¢ßMÞøîtˆžIúÄ/n÷e<íÆ¸ØŠ˜Ãì@Y†wyT|Øþ}C^ß©o›HBu„•O­]µJÑÇ'ßr,.ܘÚû6¯¤¬Ìu»¦â TLTß$üì€óÖE»Ä@mÎ{£(t:‘9Ÿ[w§¨AO#)Sm»’%‹¹'vlÛv<¿ô{î–guÅ@†“7Nî&}õˆï.Ûdߨ /ˆ¬n}„•ûµW?º`1†ù”‡•W9Ó¦i¸UpòQ•BU†u²óóøñã¹_ŠØ¼†š\­³Îi*Œ‡!Z=Ù(gjþG¡´lÙ²ç]ráGe-…]'m»²>&´UŠ:§8oñiM-î|²Û“²¿ùÂѦyËHV•ã®)wçG³ß;Çoày±wâܳ2\Ó}rÀ*ncÚÉó{¹â"tÂè:äÉËú¥:¾í‘}+mt/ÔïóÜz~ËÅû{¸+1y—ôã1~¯órÇÛ½FJì÷Šê~¹¯<À~•¦à+’Ò:Ä5Íy·ËãÙBžf¦LúPÆìÚBb–h©9¬Ù®¥4jzÜK~«-fíÕš[YŸªº³ûHëßÔŸZÙ•r¾í6§õÓÆlÇuhêÂüü|d=FåòdµVVâ***,S"šóN• v7D (ósð_Íʺ”t(Ó¡B"Ó —½ìꊑÁ;¾¹ßÜ ¤ëlú-\n©Ú`bšºþ™ñ†³ ÿ|ÜÆq½MîG&eÏk º2Hw*Ÿ,î8ŸøN\ Ñà¾&î0¾n«ŒN{ç>e.Òw-ùÞ·‘eñ´{–.› ¬$Êl\8í“kVª†ËûdÕÛrñr DÖ.­ÕVuŠNN8äÂU3Æü寢¢¢%+V˜~m{|iï&–̱ÊgÚìll­%A\N]5ÏÒ£¢£Múëº]‹q’|Ú¶œuÁãÇ­Þ¤¦7Sï"ÓÄÆÆ.Y¾œÞ˜eÏ\fr=}ÉÇ;×ký²z‹N|ïMì²ZýbÁü¶qåŸJnUal]]G’LÅÛRò›;.vGŠ?LlÊjzÿâü%ÙN4²ITûÐþcx¡z¾#/÷ë,T®5êÑq»÷r§*sMœ~e]<øÜ°ŠEç¸]V!jṯãeòð®Î/ìÕO r !›´žFɄ߸±‘Y­n`À+ãÚ³ðݵ€õïÛÃM˜5wôm†~Ì«?[ôîÍ]Ú댣ÒUž•÷»ÕÕ}ïK7nÞìøåÝŽM{/½«/8\8ÿ ?¹ˆØì¥dok0¦À»ðÉ­{oË8ßï½ÁÑËEÜXØåv¹š½}øcÍ\…7IùKe”L¢÷㕱„šPùÞ+OÄí{Vº·ð¥["Oš˜ª i™°E˜CWMÛZñÃϯî@®Mlmm­Ÿ|ç·b/ï>ÛÜ>>ò¾“cÍ[¥¤:º3›?¼+ôSÞe¢ß¥/ýyŸÝýó1O%ƒo.ξ7oèè:â ëõrÈsn°.·KoÈvÜŒ<¦²ÅŽSP° bo)Ûäqs²_mà—ó¸_æ|_™C¿®Ë«î¹\€ì±è¤AKþ ®/½»;¿üèÇ ¼ÖÒï$2½¶°¾S¤ûéÚ¥ðìM[æ›:èìHr¾èx¿Ö1´Ñ€«Ø˜æâωÿc189bƒÁ±ïˆrŸ|ÖýÖéÎùÖC D¿°´ô(¨¶l[Òymó€èÄ]Ò‚br:í{³z¯Þ aWûÊxØ,sw<;ÔùÌkûû±!¢7;JÝÆäøU(þ*’cÛèkÖ†'/ðkZßÕ² ¥»ë[ðÑ…Êž\Ïó,±=`|Ï8™3ÖZ¦àÓî_Ö]í?½Jðz/l­-« ù$Qîâ•+ŸG]™ÌM--¯'t:IúÞe¦z/k{G9=g5íÚ¥ÅR±£¬Ï-÷.Ié/V“ŠáûÑMÛ‚/N7HBö/”Ͻ«±ÕàZºeí×ðsijÞ[b΋‡&z÷-åÝœxk›óÛíº«÷™ }æ8ø?™ªµêŽb ˜ª/®ÿ˜eü±ÚÕ”ãêØ`IÁD suó‡2Ó²U..Î?0!××ûQ=³°û“\Æ07×HÀ¶¥“QR'8ê™ÉˆäŠuâZüVÆ¯ØØóâkf:Ññ€úæŽ N~Û1ª·¬ÀžD:¾^uòÎÙ÷\›:LÏ‹s7$ùŒsY üêØëç;Ô&Meðûï+ê xTU5äÄS¤”››k8y&0PhÆb<NNyTÂtgÒ¨Ô7™¶‚ÄF;¿®»÷ïß·è@.4 ª?~•ƒƒÃ¾ÕqàtÉÍáZÑ–›Ðq ´Æ¿/=ZµtZrâ¸õŸkãr¶yŠ‚\0ã6鯈É.Úi~Ñ1ïÞy“ÉCN»õ3êºëÑŠíEOie§‘MÉÝ‚>oza_{ÊòPJí~צ{Í&[ßE9Æ•%6öï¸DeëBRßæû –*|z"&èÚݶû¤úü¸µ~ð€îš8ç¤BƒH}•’Þqƒ¦Ó»s^ž é'ö*²Jö“¼$)Ífš¬×¤bÓÕPâQ´t‘¯ âö0ŽÉ-V‚Cîh •ÄmÛ²å‹Ó’ØãÈFV®Íô‘¯í,{#qAaaaCG±-ë8÷yÖMŽÖÏß{ uM+K¥?^u>4¹…1Da"ËÒwÏžeûoîþuáìpÝ=Fð[ÖBgÉPǦÖsϸOO3›ØÈ‡üt´VGnû”îÒm°ó4Ö† ÙbÝõÔ]*ùï¼û¶¢½mB¯2bÁ½ÄÏ•ò>Ž9­Fû.ùæÈ]ªmNßµõYr‘ ÙÖ›p¡èHD/.mh–ŽEqCÁ@ØèC Ýœïñ¿ÿ[eœQPnåä½JóLé[°û‡Ó‚Þ·nÚ“–¸e´N™òàÜ “M{bzl9YtSý2r‚ h’îÒÊ羫÷?_LWß»÷t@Ê>\<[í–Å-06R=rs{¬íïÉÓ^U”¶±p[ädþý“ôŽtþû ŠAè]yÿŠCz¶Â…þûÎä{·+ÆÄËœ·3¹°«#,†fªÊ±.†;VûhÓ`ƒüƒk MÝY”Î{Å*õ®tÅNPE>\ÜþíZOíC™ÁÞù8é5G£œ*wí³fåýn¤‰õúÛ¬s=-y]Äîk¾âz-uä–Ï„I#ˆšäd­Íaµ„WßTG÷µµqrs—ß7¯†ˆ½¯ä¨¦e1ÉzÿÇN·îŠJ¶8çìA3U[Zù6ðçÄGDÇÏÍ ¯‚-|Á!'9äØýEÇV½mvõÊ êÇrµ¯í ßÈwݰÌ{VsŸµëÂÓTÑnw~=粑#×=Ö<´q´ó0Y§¥ö8hÛIK[FJý³‹Ü¯fœxGŠ‘æº*S®ýêñ/7íîˆølm"çAi©¼ÈnaÜŽLßSyr¦SÔ-•SßÚ.wÖ¦z~£€„ä|š[vz_LŒ „â S M”¼÷ƒ2ÚŽ;XöFI§«ŽùtÆ…#ûáîÞ½Ë.ý6ô.ÐG2q·2ë)ÃüËLgÖ«m7‚ª.†æ¤\¹ÞÅ6Ü\mæýº± nó¶ôŽ›‡œrŽwîœÈü Îqùz}äØýÄÏßmŸéûúðæÔmÒš ¹'Ž ¨mçz£¿+ šõ}¯Í®Ã§då‡f> ¹Rf›N·CDDI'ëÓÅX¦7Š\ݲL___Ü8÷’Â÷–²¯öçŽõä<[wSB›râܵN¯ý,ó^Hg–;çN|­äþ±ásç©ÜCéö@¨ôó½²»îúû/tptÔϲ£œÒH‹Ð¹|ÐØ=NuLrÛ6 ;‡5²|‰ŸˆëH/ÝæÇF‰êU%Ù\¤ÝæÝšØa8ä¶Q¥<øJ½Ñ&¬ž\ %àÛäê/ã–u.èÝ=ÄWS Ã<ôÄmywS•öE7¿ùwµ&…‹‘Í+§¢ìØwtÊ®¿ÆÉ)ÔµûdÍ3mó c9 $¢]]ÚÛ¾>ýx ·pb4[õÇ„ó·ä‹&ÈE¥›4£ [û"°¦÷Ú÷Ô‚XýØ”C”——á|ùŒ·V^EK/ÓF‘¨¬ì• b1®=†"6˜×& T\”p°ØFÓXµ´´²²bëÚv^ï’=”aÄ->öºÎÔ»ñB{Râd}%rKPPÓÌìV×Ћ¤Cć8uMÍÅÿSSÝdžÒP\µŽ¤mtàÀꓱ¸'!¾7ˆQ£‹põ#’»âtÑß‚é÷¶UG ÚW†”W¯õí9Í_1Ø¡AO¥¦663^ØìVVÃ{:Å^¿>åÍcƒqŽ•7nÞ¼cZ-Wñ*aÿÒeËÞC¯š‚ [½fÍ<Ôô Ùþ½@ÊöÀ›çÒ2Oƒ˜¬,°Q¥õ‡µ®^}9íÒØŸâ¶Ó·.ôãeºÝÑË*çÞ›Ýð: ÌN¬|©?hf¶¥üŒ€ã…DçÍ""Ç&úBd'¿÷[5dqmÖÖÓûx²#!>š AyÇ ý$²Íª\Ð÷ ·‰×9d#âÞù¦8ßÊ+dö€ãlÜÚ††OA eOŒvé纡OÆ¢ìÞm‡ ,¾ºÃï#¨¸(ï‹.èœÒºþâju§á˜å¡ÚûùU“&7¶,CxÆàçº;Æy‘Õñ»&¿ÓLŸ^*L6ÊAÎy²¸}¼€ÐƼ¥nhI=§em2£$p¥öÍýK´â­2úÚB5†¿PŠŠ‹#ä<3,Ù{ê¹8»äDµW„÷‡ø~÷3ñ9nÓô9Ãj_%7ôjËJ+o„´ó6äÒc­Õ'VBC SŽZÝ"ÛWÂõc[žnE›"góÐE÷T÷îY[þvÞŽú¬m‹O.û¬{œ-À!¿¬vïÉ踼ÍEk¡«%w V¿jÉkwºå)<¸ºVËÞžýÈ€~ O"]j-áâáÑë°ßu†_2EžqUf³Zs¾w¢è"µ={¾ •Sï^}mai#C—înÈÌÙóÁ毻Ý6nÚD¸UÅwãFªÅëmµõç/ øRD„±ØÐ[·nñÖÚ·Ü5zà„úO~SýòeÖÐ[OUMMÛóz|ŠY?qË–EÝziM­‰o䇵RÆ{0‹W¬§ù/EÔÕÎcéÉó¶X«ÐòmÙ´Õâ¢Þsí\V­¾Z€øµå^ÕÇ•/ùrëïU‰Óµ{#P2¹ÕŸo"%4àúèŸýî5Çä<©e›N[·-Ï)‰q­Z…Üí2µ¯o8ZÎÓíóÝò7Ö|¬~GgLܲ_ïëëË‚l*h’ß ùòå‹E¨™Úàឦœœõ)Èù!þšO\îoÌ`¹Zµ¿uøÝñYcg®­fðlEèâ‰sÍcî$mdCvTú·škè¾&O[‹†uDŒT\4¾•þÕûàô¸÷]^q80=BÁW’VÂÅû‡Ò-Öèèèð,¯¼ìˆl±.<¶h9/.ðöímºwôìUÇU”•‘ë ³ÎŸ›ÎY£ò çêô¼÷Nrk'ðf8Ù(+/\·n]òº;ÊÊÊ8Ë;ŠKì·~â{êP9²@E㇠ìÖÔÐHN7ò^°ÏŸó™÷Uáï®>þ“«‘=ëñ ;õ›ÃIÇxß-åÌ»\«R6¨Ù;ºèêËGCFÓ#§ìÌ^ñ Ÿ†Ä~qÀ ÇÉñ¡þgÄæ³/–ÝÑOC1ñt¥+ëØ±ù8^ö×Ï\Ï¥wð¾°¶¶6rFyˆ`ðàåëe/eN¯¡ñ%V©uOROó“ÏМ?wnÇάȾzQÑ8•2à%|x‹Õ#])ÌÇçEñƒ‡’tX¨¾¸t‰g°»á`w¨2ƒ*_–'ä`4‹ÊôˆŒªÑãrjûÌWÊWŸÓšT¥?úÔó}âîéo˜«÷Élþ±¢©iq΄뾄Œkr|5r²4}1xrOR‡³ÑwÂkgÈzõ¡ž¦Î—qlCŽ+ >ÇT†ˆ×5V´÷„q“Óë°Ì³—.ížœïl.PÈó ‚e Œ®°?ÉÄÈOþüùÈÕÒíííȉÍdצ½‡Aû!îikoGn1Yïýí…AUójd¸€£‹ãñΞå|Y]Ý%—‘ÿ §·ó>!3UÅ‚OûòD£ò¸…J‹õu~¬;Kí·²Ù׸ˆ¨´ø­?<ü¥%Ø^úÅž$£œ‹+7ì4|9šª³™êŒÙ™R‹¥•-'X×+ÛØHæ¸ö~HÊ|‹ì“]¸hÑÝÃ…ó'¾Å+7Kmè7z&ªvÙœ¨¨8¹·o|lÈ5‰Ë»'Ćñd5Àû⇠`§ÞJGU††7ÝáóÎÉʺd^}ó®{?tsà©S4°Ã~O«²yu£èdËòã ÇŸ]™ì­) ­•Šá;næSXXø¹)'üÍ›7!I½äf^.•.¶<®DÖ7 _õJe×°ðÏ¥…%/NÞ„GvÚÜ·þ‹˜Xïÿ?J÷îaMÙ‡œÑz­>»²[argjHÈ äbøß`¿ó‡KϘ£]»bä½õ@¦øøø ”û®££ü]¡Ÿœ@ì¡x͘ä>½}û8YöÇkX÷ØY¬™šÐ÷ ½2¶'ËGX¹u ­}:bú ò³/~JÖv¼HÁ×-=Ó/¼%£{y,×I‚¦ÔÊ\ûÖ«UìǪÏÛ!+g±7ãÔÂÏ_ºôèk{Evσ.„Q! øå Õ©Ö–×[ÅÅï”…df·§¯z}`ß¾çôŽüUÉ&KìG8w±’bú;ö,ä Þ‰ìÔÒÓãiiiAž3úø@RT“MDmÛíÄä¢Ã¨³W®<7“XˆœßÚ¶íäÇÛË‚ù^˜-¼’f˜ùÇ|2µ!ÃzãæÍ­­­J^^²1ÞƒúX£<3¶=i·‘Ť·cBÍROv´Ç=ïè"Áu7ÒYË}¿£C7k&÷ ?Àêg;ÄYzþÎOä½áí½’³êó@¯äQäV.äY_*µŒÏ§˜BJuÎ!6ˆ‹‹Ÿ–û8Ê7êiu²‹[ñþ^äD rL)+‹ÄòçÃGM£ÝËÒ}ÿœ7ôx¤˜dÿ~!¸J’n”b`ããUÑÑ›,¬y+ËM2¾µe¼Ò{°â\úãÓ M=¾ŽëÎÔ$œ²¬Ðc)ÛÓÕ¥Ṵ̀á?^™t÷æ!íJÓ÷Îo…Ãè7ó32e§¤òú3,7zÊ>>:*.%•2èØò9©þÕ난…EÓGè&®9ÂÎGàäãS˜Žê>#¨ÀA A£Ñì&NL¬¿ü~ô8çÁ3xËš/õ–)+¹¹wAb=µVâ=äÇD—§±*§±}¿· .eck]á;¼À6oà¢åäÉ5bÈQ\àÛÀM0¶oe‘s£µÙŽÈÉ;/oo­Õ‹.?Û¹}; ¢ø¡Ÿ¹$½ÂÌ$=šÈ_~¹nüAERQ:׆ ¬²v/ðÿ±“#½õL?w\ή­Ëç×B&²=]¤kÑ]ŸŽLÆìMƒÐ²âí÷–™•`õ.>»ïp`|é¶®ÚŸ{~Ÿ)'ܘ¼ukËMõËe€¸ñ×cc盘˜Xød\è N*$Ô>okóX¶¥+¥™=ûGóí‘'.{ñ]ÒKâE§rKjkë’r  ÇkTþiÀXi«‡ÜüއËø9ƒöÁ³2‘S bbZ ³rs¯`—„¬—{RtœM¿ÀG¸œ’‘-Ïqro«Â‡BvG’|¿÷º‹{d\ÇÓø(ªùĵÓ@ȼÚçÄ2µ?âÁÖ´,¯¥K—òK;"ë=½ª¢ådßÐÇ¿ú"ò€,yýÆ dã5)zðHóû_öâNzLXÕŽæ†0ÚœëŽeã–g¸i0G’.2×(;ÁÏ?<»œx¡Ë¹¶‡:pbé¦ kÖ*Þ—]¹r%NÏb½q#>žkåJ­îKÓ‰¿œØøÎC\B"©žœ?üžíK÷²íÀÉdrrí±~Wè­b>ÛÜÂó¢jï‡ðÈyà€ÌZÝëâ:ý½øÂ÷@´¿¥­ 9ùÈr<ËÆaWìèH+_ò€SàvÐ""z BÒPKQQÑ@E0éq“kó³ï#ý–»t“ TttÖ°úͳ»¸d½‚¬‰ï8^í¢xvÛ¨úÝšš®IÍÆ ‚B&ôºØÇË>¥]Q¢›šbd$t[¸6{õ=Þƒ»êÕ°1ûdáz·¶ù•lSg¬ýßÒ¢zôßr­Ú‰°°Õ7÷Fõµ–#3°~‹W|x}Ð$)½`ñz·#Óse¿~ý bÀìeרdw“»Ûö¦É¾¡ÇÑË4Ö* ùKðªîã¼zQ×@ÿÛBa½ã~|ŠIGõï÷º½fÉaoÎgŽú·Ö*‹ ÔqWÖ?&®rJH‘…±”³èüÙÇEC#È Ï·Î[5cÄF/ãZ<·cev¯£o%y/¦9» '@\kÿ®_±~p õ]£Æ÷žSë—_©ê)6Øš=}-7û™UwDD^Þjëè ¡#Ï/åÚ”ê9dÓ“Ó+µP»$ï-’ûuâ×9F>>òo¬ÑŽXNž:%å™[1²½ £ìNçðkQNÈâÅ-Èå{ùc=‰N•j¢ëïèv­1ò5úòmXD[¢u'„ÁÙ6çûøÂ/a¼®E(PÚ’ ®’½ÈÝ»w‘9ï‘þŽœÍ(é àçCCA›®v’“m}£ÃmìvôÍ=äÄw߇˶5ª­¡¤›C>nãÑæš{'Q¹ãßJ¦)ðð©ÁûÖVÚ|öBB4­ó>+ßX9ïéÓ§{Ó I0Ýܲ²w9‚ffÒé7êbUØúAû»f¦7tÀVÉÒ2,k+—³±a=> ÷CÚDn;Pˆ\ •í;éSSw|‰gjkŸ_ÇÉyØåó›È…jêðz|µ9X¼(w³”Šæââz¶B~øáÂÛÝ®dŽy$Û©ó¥L3tÂӿɉ!æÞ½§Íïê=…4†ÅbÓ´/ƒ¸”8”»~ýú3HAý•2½8ÏOíg:¾߮Ϩ³úà¿”ëé—/vXqñ§ˆlÔ?pÀé…O8öÃH¥œquŸÂHWpå›u×w­plzà|¡’lÓH¢PÏ›&6¿PSUEû;Ö˜R^‘=ñ)£ëý¨åí _p TÔã”ïð‡†ý&‹Ÿj–ûövÚM_àjL‰LOã4ÒÕ]ëîîžn¿Íü}Qq±XRëF‘ZÖb”Û×Ç›#Àq kQ³ì‘å …É‘ªÜšC{aH«ã5 ëÜÞ7f;"çæ ¾¾}z}ʽÿƒQê :}#ä ™*…IYËÚäö¾rÁø«WÔ{ûæصK[{ð…6ä´奛úŒ‚jÒcžà B™!45ÔÝ?D˜">Å-5è´e}\mLàîê6‡È+ÃaÅ|'I¹/öLóÉû+7òì› ”¬°íîäT™n¢J’¨üx›ÆÃª›xáùó}ÈéµþþœÃcñ™7€ݳi’†FÏC®dl- F*½Q!---èÌ™2êÝT ÞÈ‚¥y¤SïÛ(;Àœ^›Ë.¨€FA«§=ñQ(5EóbE³>Ô×_— l/þx•MÞ€®f@›–ǸQ6´9®(…ŽÊ(±ñ\éIÓðÀÝÞ£Tú#=! K­;4¶¼xLQn\}:¤@wóÔ¥ïçn––WÏ |”¾‡[ÍbbÒ|Êfì#·`ï5$IÚ²u+‰^’î×Þž·¾Ÿ CnÐO°ÖÖ~):fô´ý¾µ…üèÇ '8 Úû ý÷¿Ø%øš¦\}QâPVWrŽÛpK@ÊHÛmÃ(df YˆdÙ¤ý¹%ðÆÖ»á$tîÃÚ÷FŒËŸ‡4í¿™”/бnån OÙq˜MP\ÂÛ<”SÙÎßÄû¸8{`ˢǡ×Ík„¤òøjL?ÍM;ç§£¬ü©t›x»¡çUW¢n’ˆ¤$Kâë= œšr\ ®š„K!âø&dd`Ó{«Ût%#§J9pÞ ÆN‹d^—\{ÈÙšOì™ÐjÍçkc:§¹Ûð•Ü´ïõ3í×ËuÐ\‚[ZKÎhŸéÝÒr`pÝIÇî7§¢¾ÒdVi7¨sî á7°{š‹Åó.WxqÉÅÞ‡.Žåïo¨îNÖpÕÖ´ZÄqÆJ¸ÕŸåü®7Òß]Ñ(ù.û´ZØCzéHZW)ƒa´OdØpÍš5{c䣈Í^¡ïßSwžæ)DîB9|X™á{_™³:ßÛóCeTÅÕ~ŸÆJ”î…ÇP+ÄvÝå–é[ú%Ö9÷ø­CŠˆûÙù7‹†šõ˜©†Ë»Ô‰AG½)è¶u?¬ØØýliÐKñòOœ"®|ï9í)ñzé—¯èø»QHîA¾¶B6bþ*a?rHFUC£ šlúhÞnUU`‘'‘‡ a<­ ™—R) g‘­AËùIg‘'2ÄW?†òøñcayùhHÕ™¶&G¶Y×ßO(£œ|š©zÃU¹¿2¡É””*£F¾`]¬õa¾Ô—Á"ýâ 3]çΗ7mzßæñœØalüV´¡2ðù³dÃÝŠ0¨ÜD‚Ú8½^®~<ískˆÂdw ðé»E/9ïw¯, n1óTBIä°¾o·~UŸÍ.Õzû´[T#ÒtžI^´šet"ãFÿÕµn#5Æü퓇[//*'ßKÄ$ú½[¢ª¤ê:v+æø;.7öpÎéG*ö,<hèw@DO6Áq·È$Þƒã™Xý¹ïË.³³H™H]q9˜î½Ë÷âöÃlÍ 8Æë †ÜÁkô3m@–²ÜÑOCÖv×´j}ìõëÆ2ТBBÈc¯ùùuMRÛ"öž±ÚFíݵˆßàP`Ü)Õ;Ÿ»ï>e >ü¤]lømÙ‡º]fµ›Ã>¶¡"ËYݤ7N?ðU‹@¦ò cv3¹ó_}ñBV ÉW·¬#è›b)íAFf#oÝG%SCV%!;ÅA øïˆö¹MÄöÐÒëòêBB{›Ó×NU=›w4qRuœýû’My¨V;L¤×¾ßý†0xÿ{cuË#÷—¿z÷•ÈV]`r…YQ±k«œM9î趯wNÌ“ÜlåÖ—êy3Qó*÷µîÊM‡”®«òW¯Ü7îÁv62òÉ ÕP ÍñwÔèñ£Gï&Æz‘Ó—í 6­Ã}­a/zH&,roKµø¾â~~¥bmsàY¸„xYsµ0n]» ÇÉMjb»k)bvœ¯ÊÂ?ÊCµ N©ÑZ3Ý‹H$º¢ûMU[Óœ%'(o }mùr½øl"ö’+ÚQ#-ÕÕVÞøð—û]²vǶUðëÚ•Þb¢¢å{,vCûjI…±ÞáɆu&j¯ã¤Bl¶n"5†ŸÝ=¹sìÁ­Îå5÷îa¢}FÍ‘ #@ý)p0&¾øûûéŒÁø|w§ûX“ćðXíCvw§®ßF+]àøq]‘”ɧ7f&ÍÚ2òž d}ÝúM¬QFjéš<9 =¤§Ÿírn“ÊR]øÖXõ~]ò²Ð<±þ:i…ð¯"›oö_QŽ ßÑœðÂ)'ñõšÏ1¶(£M'Âwì;dR;¾tÄžÕJツ€Ï‹åaáçw–µãôûräxÞ²*5<ÃÜlÜu2¤¾oE™TÖ'©+ÓÏ^xôZëâ¼²{ROº]¼þ´4ùi¨ÕØ¡õ—ÙjC‚j ×Eånm;Ye)å¬íuãJlñ ó¡ô£ÆÌÑÛÆ"%·H¹˜5)šÛh¿¯ˆX—‹>»[Á!ÿ>Õ¼Sí²¿fÀ¦ôÇþßó¶÷ßs·©{í±Ôܵq ŽÔ«k/«(—´./~W­©á¾MS$PÑ!uV„²AM77t ²XváBö˜w_)wII r­úòbdÇ  ü½tqÙq“––Ö}«ºóÀ¦€H ˜ÒÒåË7EÕ.¾s®¸Æ-cfrãÌÜRùyÆ_r2N¶yxȯ>Òþ9ååÅÁÌ×MÎ%r >'2¿¹]•ŸH”óÃJc¿ÆÔ†Žš+¦{Ÿ ¹Ø2OÆ­¿¦;WAúrUŒüÚƒŽui"14“p»JuJ79Äåyû˜í³WÇÂÉávdÈ&.vt¦Z'•úæÄ³ž"eﲩfrHxmó„DÅ®nfGÃfrhJ q:aEßLyw*p·ß`¦ý úîºõQ‘MÑ ¹z(ö¹2V匋8¢0!çLñã 2óÁ²3˜·´;³™yC.º‘Ý‚\¦óðBE»]½ºKçykÛ6ûâÞú—­G\T?M)½|cqq¶²å׌pÎW5)•e_¿&äR¾ý>”›vsp¨9TUé#áøâvÎñœµÎ‰iÃÊ•žV¾½0òfÿêõâÅ µõí]22c;½æµû =ï ¶{Ô;+^)/?V=T¡ÓŽË]êêÀ>“èxb8ýh‡yû‚¯\ÙG*F=‚d,-yòä²ïß¿7ŠzÈ8*Y,èµ]±¨®Ž!ãòù]´g¥9ß›çD!ôWcùòâ‡é«xy?ÉW4(Ded.üh&¾–í2Ñö¦fŒ|mÛÊÆ/—$‡[ªçç{HpÊ÷ëÚ™±©ï¨ÝwÅûùWÜÞF„®y£v×ųq™†ìèîPòÏ«zrí…i­{Ð×òÍu\Ù¸ðâ¶±¶GÆçª‚ºEyäY“O²5§ˆØ,£ìÞiºBYol¢7Dá×ÇÒ#ÜÒÒa£´¢p,W4ÏÞ½œ6qOç–#ßÂ#qKÀ·Y†GGuë}¿}Ôzÿþ}cC”Œë`=Ý6MÛªxØØÙ“œ¢û3}µµµ‘ÀTƒ$Ðy“?½(µéÒZ6u­õȇ¶(ŠtÙlºþ¨ýÞýÁÒ—õ™õ„Ö^A|ÇÞ»,¬' »·ø>ñâ}Þ]©ûírMþúØ eŸ¿œ©QWð§©XØ*òX‡¥ú…SþÆÕ¼ÝU}¶{äv&I+­ÛÑ’?¼H§OTxÁùxåZÛ}Ó^ì vx $튮÷ÇvíÜùu|¨9Ç4¡§!3äÑ£ÝC}ý\ñx¼Å«-à´Åï ý¶JI!×tZŸp(qsoÇÃOŠTöVnß3ñîV¯± Uxï=7óõçÑ2)þPä‘uåý†öaê Hs‚½¸kÝ>WF[Åß<\;êdëëW¯åmÿ˜©òH.--…d`87Xò¶æŠ¿–µYÆ7Õ×_IÇl—’~ƒþ7=“›\7鿵R¢Ü\áòö~¶¯›nD),½^0ŸËò²³±æòT,bìwºÿ=¶ýè5sQ½ŠeËjmÉn‡v,š–w1v§f’j+Ji8¶Uˆœ±+tмÿÉæZÅó‹ÊCìqÎ^û$vŠOÀ€ºeêÉÀÀò¨‚Ù „ËÁª¡›Ç,³ |üô:ì’%Kne4ÇeLN ôÇ+Œ/=UZtß¼z¸-TóQE­ú¦º0^\õ¢¸òîÕ[ã?Ú‘Uv= Ê%û»ä)%~v®9r‘ëkëò7@*s½x‡î<´Ô·OŽj¿îB“r>ÖUÔ*ñ@/ËT5“mNÑÀ®ok’*?—ñ_Ä—¦—¡Vî#[T}—lî:(Ï‹®ËV÷æoÖ,õù|\É´X¾Ñ·ÉVðCИ…dN³œJÄëyGÂ3wìˤ¼0UcwÍÉô–å3<“k-ê–±¢_$Mç²ë2º³ÕÄDÖ7$*Õß@ÌyùaôATŸû¦‚cΓ½B»2ÃGn.í0ÔpÐg8ˆ” *÷› ët^¾¹[ôÔ¡dÓSW¼r†IM=*vY1ñÅ+Í_Úxl<y}P‰ñg§”1ƒo­­ß|øÚK+-ÆbÞèŸlap®í1Ù=~ÑòÂ)6Íe7«öw;”QHRåwoXÒè϶^WWä´NNlhûtN]åN„ §gPµQaìáöCG¯¿”.?ƒá.Ï—Üdª´²F‰±<²9û‰£ÇØÖ»ÓSk/ö"ÄGdà‰ñû¶†ÒÍoF—ææ²×.Ñ=¦s#zø¸[µô[Å®áŠËIÜ+µRç = x.hš"£3®>fp¼øË ÷éù¥+lÕ åù<åIÇ»®ð»ï×÷Ãf|(™¸M~¥•üR«‡ÚeâXá>߯ÿâbÔ»D LKZ‚u9l·¼S+J3¼ÿ™*,M^^| Ázºß,æ¤Äî¼[¤VêÁªó`ôwós1I=aª h;<56LøR‡? ùÕ±ö}.„ýÖ½‚¤‡;¶c—§x,åmq¸ôݱQ^ÃëÐÉ ûAÍœwK|wú8El°|³,?³o¤m0¸3ÅúІ‡ ¯7t.û®˜kåÅãk÷»¸NÆ]¨ÑþAk¦ûÌù‰9qÄ¥Ï>¼|©¡F¨ÿ+‚¡ÂíàU‰"êþÒc¶Î«K F.:$ú}ôkÜÖÇkýÕ¶.-R©^t‚©†î;‡È…é´W嵞ÒwN<öê½r¸¿ñ:kÏo¥ÃÞ}]“Ê ÃŒßF&üxBáäµU…0lôueîí%r½Þ½ã>î”—(*׳âà:­s›nn zÑÀ,Õv.×OÙõ„Üg´µ9eÛÕÏ÷,ç ½¨ysçà…W͹/ƒVô4øuâ.ï zW¯ëÑXÙ±…ÕséM÷—éÜva9 8µt¦LòêÂDÈ$ú¡›5–Ìç1fuÍTYóœë܉ÄW“|c 4ï¼e !ûÓý·Ž3½K‚¥M?t‘±‡Ç•6³oï×8ºÜíñÎÅûŽ Ì_¬Ë}¯gD‰Taôê[ÎAã|cþ‘{DÃáú5?FÿòÔèÃøûµoq¼;–·µ9g"qÀŽ,Zþ¹çe2=qC|²Ê㺾¾þrK@qKÂY¹ODkÁ«¦iór³:\£9â w/éªhšXv¤Âé}ÑÒ#·–`¢Žï‚GmÝ‹£›åb}æ/B¶Ÿ^!;~²–~2X6fôAf` ›?…çŽaöy<û¯mªÈ~9O¼yó€ tÄøV^BÓŬÌF6äR˜gÄæYY—VnØùåk…Ö¡m7•FkT¾ε~ý’u³‹[U¸fÍn¹ò#óìVU¥¼/ Z½zõóÛ:bÃå 磣ÏTwÞÐIÔíé\za}¦ã–Š=ßSk¢9T”#…bX¤ žú‡È0þ´ýN7®œÔ>ˆèR⻳ú1)°¡ÖW²šòŽt6@ÿÃqó¡"ñ¡ù9ÜÉ÷Òªža¤žbzÓªº+'Níp2P ?ª5Ô¬5åØu†?¡ß~zÀÛ>Myùz¬káE)“3M6Èν¶¸pã÷ÙÑ g<½BEnŽ{¡äâBà#ÚÜHM=‹¦•}yµ_ ­ß¤Yò¹. ½ÜšC¹«7<âë]¨§E{~u²P±÷ é²È¸jUQ$Þ’eøÃeÛ-bb­ÜÃ*Þo/î¼þåðº†fÙÊ¡˜ÕœoŠÂ52óÖY™Àmü¶¬SØý=Ñ ë5üÅãôîHÏ .)Û1/bä2*.¾®ø1Ÿå0p@DOYY¶µ<äŸÇ·ó4ñ.êS—i+x‚’J+çXµj ²Ý²«&iƒ¬,ÿ¼e òàÖ ë†— ÖÈÌ)±Ù ÄöôtîðûS=hˉŸøm Æ È9E‹!ŒøÈæ³ÈÒ ®Ín­ÁDäsÈM']cƒ8³O+÷›}"Aà$çdâ›zÍgš¼¶Ür2ðUøÓ§{!™xz®l“¨è¢w‘1ÞÓøÌcÆ qç¶7\Ò¨±ªµµUìB)Tóò˜»†8ê…QÖ… 9yxÙúŽzë=d*Y?ÛA´!Ã:ç#ô4²ÍüêU!d{t +‚h»¹Lr|tydÜÑ*d2nbà‰Ö™‰ÄK5µúïOŸ)i¬_®ä®óóAÇ+³O|Ü \ùRžçЃSSS®uë:ß 8+„œ>Mj|éfyäêµk¿öúNò£ƒ½ùc’‚>ÃÂÄ·n€jæ#u)nh˜ºƒZºl°§ ÑWÈ6«ïÁu]µ) ðŸùšÖÅÏá‘„h æXf¸ægÎY†È¯…ßByÆ7i¦+yõs»Ö ãñ±ÝÚû÷GàÌW õš‚p[¾ãnâ³îÈÑ‹‘5od¨ìŒÀ¡v½×SŽ÷4F!æMö"=_‡ &£.]â¡R©“E| _J³æÕDÜŠ9î&½úNX2%te™O/¡¿ ´€.B¼b¼FžYNÂþøU\\JïÑo×@Ú߈_€ì ùÒRLvùÌS|‚=ÑáΧJûëL-]ݲ*ß Gd޽ɦö3tõ¼«9ö­e+¹¹J©×v…¬׿WRMÑ©@>%<~¨Ï±€0¡6Ùúã ÏßÖÝ4ŒæPž)w‚r5óê <=5TIòŽŽB‰À¼¤ìx¥U+³©§yб5oiŸ]dTUU¿õ4]Fö#³7Ç œ?xëÙ+wbù:m±ÖW„bÉåó›Ec iÎ(쿹·âÞ!sà•§C¢n Þž3¤]ë›ÿº)äÁ“­[·>¬«MžÀYÉGsl‘-6þL¯:é•_!«joC~‘§´Ô¢ D¬²2oØHGèÙ³ùls[Þr j¯w쨴N]ª{äË—/ÛBÆÃ îƒ"“–qu®•úÌøé`‘xV-l˜v‡Üné쟹ػ¢v]yàQJDß÷¾ïÍ<•ÎÆs­4߇Ü6Ê¥)k_8aã}™Èœ¡í3´—RŠQÈi2{{øRíZ™•WTX-q(cㆠÅM±±ÇÌ«o®Pm¼[M­˜™–]Õ_ÊmÂÉÅ…ì »-Я}{›ã¡¦aËÚdÑ­[ƒ>¬KNdaY‰ìØþÀ¥ûI¹ ïräJÊ‘ñ^ß^ù]ªªKמ:nÝ¡Ó E ¬%]^"g÷n{prÁÍ¡>m+_kyÈfYÙ+K¢ÝÞ/}òäɶtûlÃsRµF®;vìØ(* t’·)±2åÇó ͧ}Ù<ä´¤öÆW‘Ž7?¿ÿ²SŒ(Çûø–fJ|3¶Û|=ß»Îç07šr\«“e² .^¼™E¼¥u}÷ž=ïÇz : &Ç Ü¿½Ø%–Þ|ÁÖi‹\“Gûüæ.¿ŒËi@‚¯ “[÷ßÌjxöçܳ®îZdÅ[Sn ll9ëΟvãÆ—­ß¾/=@œøøâºªšZëã ËÅÖ{,9B)>À?Çb1Ý;BÂÅ’’‹±îæÁ#¹¹²Ò.Ÿõ®w¥tzç¾(øRĆœ½sG¼&Å9ñA<¡à»s'+²UIN. Ùo£ŸÆD»m-Xõƒ‚«L©CÚס+×TLÙNä3EEÔ÷Y§ÖǪ° ö6kÂèÞ¶ŠRwrÂÁè<»L„¤.èºüåpºÁRvö¸ØØù l¾ é–k’uHÚæ0Ÿñ"×GËy¢–û ȸœ={vßutUxdäHøåUÖ‡Bû®ÿͶ½t²M©ô7öðCÖë÷NNŒ7=~t{4JÁE}Új›öoF® Êk¼K[Œì3ìv,•çéŠÁ`>6ŒñùAÎüT㤺&ooºä „3µ^Ãë©(ßP•òk˜¹@'ÇÑqÿ³EŸÓ‘à^^²9.ݱš1òml N·¬]µzµ2¸)8x±EúKq¶J.^ÞeGRRzU2}χ†*ËÅyêºçhZmlñTLs8ñéu"² ºâÆÁcY¨óÆM›Þww?CöI ;×ZNðéåy8Ç9äé ä4ö]û€4ô¯ê‘]&ЫºõáaaZõ¤ýúÓ~É*ª§r£’Á`œ ïèDEæ^¶Íàv“>ÍÚѨí#•?,bâ=pÁóYæÍ2[Wò?p=/ ‚ͱ z$«õŒ Bä QÉ81‡±*aÀÐV;¹tÒº¾ÙÎ…Œ†»;™m­xVlŸÈ† úédFLÓ ?{æâm#rwj/Áf+SG^4iÏzKûöñÅçÆl®#-Å¡‘‘{ g‘-F9.=Žºµ½)Ê?ç/.MÏ_<Úc Îý9¸P›ãÙ|F@Æ‚¿«ô|þ„Ç!«NÎ6ÌëÁgßèiôì͛Π8’TÞ·óc#Õñ— Òs=ž¨ÒHëáo6Þ³ÏÄ&+%)¾xÕJș½—¶S©"CM®‚!²_—æNNŒ!Ls‡Þzö¸ŒŒŒ N«›šþû1 Qã–€ìpÏøÔÛ /Ÿÿòôóúõi7[›}'ÇeÇ>§5º4Xó+ø\‡v-ðm±#¹­ËšÿzÐ/-èqjjjEþD"B×û~·G‰Ä‚ÌÌZXXÄBäyVÈ~aAö‹BNú\Ÿ~j)צW§Ÿì»»úæëZå•d~Ž‹’F'Í#=^½  i!EihN¬M8yr²O‚õY$~ƒ„ûåge‚>»ºã5cX?>/êÔù²t¼¥[3m÷§ÎùÛÝÜH=ýOU^­ª^DÖוñ:RZ0qñ™ãÎUUÝ)eè¯1µŽã[ž¯Y™ áããCg0Vrr>\DΕ Єņæôæ74Ù ~®Cn÷izðb¹ÌŸ•ƒß­®UýowƒX[Z><£à;á…ìÏY0‚\7 ~ÛÙ3´?â]l¬Hà랎;É&{ö,ÓÒÒâ'Ù½»—2i±÷2!Øß!r±>0­Î×#Û_m’@a`ìß+ƒ1„ýôwT¥¼Èû vÏP)tÊú•ç*ó°ª…KŠŠŠ–V_Ãé+45Õ\±KÛˆ rr‰ÔãÇŸ^‡=aœç¶}+ÛS0é³¼øpÙéuȾä¹1ãŸM··ãõª¼ß^ŠÔÃÐ7•ðú(›µ(jqæC…*[••ß}öl \¹!²¤j¬ìC„itË»B?qãÜ7PæžÚ¢^ÇioV?.¼få¹”Âc‹m›_¾Ø!k{x˵­eÁ Þ¥øŽ‹-]ºY+E¶çFZß^.Å3a#›¿vM,çÊ•UbbbˆÄðElkͲçÿ §›>†ê¯\i¾zzÅî!j9Ô¢¥­­ípä&pŒVdÙF¬µ%@pÐéÖÁ¤Ã1ÁǼ3,¶dou€ì{Rº^éÄò>§Àà"dÓ@çÍËÈ|70ûÄøâü/Áqj…(X‘Nß8syÿÅnø ¹>;Åg@ ™`Ÿè ñu#ÕWÐì=c+ÕþÜ@lqíZmk6®é±Í÷‘ÙÁª|zàž¥µÇb@$€t“^þƒëz\ï”y)´fíZä<€bªž8r»maø•D‹ÁŠøŸOò>6‡²e„èøØPše­$rÝs…TÁéŠv*äGd²ÂÿuâÁ4‡ö=šžª9¯9ëÖ(øª,(`´ûy’Ãq­R—íË‹’¿yî|ü'å?wb7 ¶ðnC÷ÆÍ›«s\m‘“»w/‰ñúº Yaaaö†Íwiå’ojsÝ‘í†Í-¸­àœíñ1›ÈäuŽÏ¯)©jjšN|¹"ë~ydWWráº/ £só؉GÆïߥ)ŒoOã˜W²ÂV}ï$ÊÀ9ÓíÇzÖô/,> .¾2bÍ©4¸¶Å« äš…þÏrû+e. * ¼Úÿ}¬yòC•BÊ)TJ$…/‰u#[[¾÷¼ ªØ²#ìÁA¦3'çÍ^é ÀW7§åÖµ—/?~"O7¹LIô4Y?ß‹¬)ÛW²h Ù˼VÒðã[ã 9ÏÁ(ÔÙ7oÞìõgŸuõȵáoéƒ|·‰×޽{—ó¬n¹a!¡«õ]y¯†_Ú]à&?»éŸë~63ÉNÕ;‡HdÚž†2K0¡”`Þ¾üÜ jõMuP Õ”}g¿¥œø*»Bbeãì|‹¼½•jäâ„¶–Öј˜æE éÝÿ)Ï‘‡!Sx* ‹7Ø=9 $aбÑyÚdÿ¶­ëøL>ä¸j¬ZÕ®ùJBØhɦ÷e‡mø.+øß(%;þ­É("uÈ!/lr'¦ëlxŒ™zr·— `U²QÎG¨]Üø¡L›vž¨ÐÂE‹´~].?Ö•žÿ®«ËóEw rìvåJ-s“íÛÈÌó豪W vmÖO°ù~ûÉ2‰ø¦¶7µ¥ü÷%•½¼gy8êtµ^Ý2þ¶^9?Û«DkÏ…:u’}Gí<äW_Ó.aßÀ! ™è_ðã±÷Ú_n.Çh´/x-wùmžçÁ=(Iõ¯_ޫܔ‹,Î]!;òȺ¡ÚÛÛÅõRß,;ŠýÇö€Ã°ÅŒŒ²Ü+}–j¯ [ØUø >:'uÊ.,›eIз&×F¼@›µØµ/ûÖÕ(µ¯^/;fë~nÁ@³Û„B óîCíè?ÃÕ<2ìðšs¬¦EþK÷!7Ëö=ÚÂÉÏÿdE•XJnp˜›ð˜˜„ËÁ&ì34xyÄÿûUÿ¬«ÖÖÁîq­&Éﯻp$Iµ½‹Tüš¿uQøÒG;¥eªk*n~Þu»ÜïôòF@Ï:’Ðe‚õƒ;}Ȫ5Ô0ФkJ磣}^d¤ã?\8ã»õ&ˆŽ–çb‹ó·´}"äæ²ï­%·ŸªÚJ³z°×k>¯í±×ÆïÛ¾œ±:¾&l}âÕ6ÿ¨—­kÂÚ.Ðdگ긲x§Y^ß`»¬å({Ðð0ñ­§ÐŸ•¨€d_¸ý?’ýPöbÖ÷˜êÂÝ%Æm% UÍSêB†˜å/[j˜Îü-¥änIèÄRû2•®òuÜí*üî5„ÍùGß6Û)_g[q±¯çKÓBÂPá˲ð«ùþþc\¯j¯|ü3†âsãÖ§ìþ«”#¥Ÿ^³Ò|þw1E³ýõër*`xŠm´«×¸}’÷™4ïæþ“yâ*!¹÷uµ ÞUWn~í/ØØ0¸ª£®îžFèI¬„gÖXwÏëo®_úŠÇX¾|ÅaÿV$U²ØäwþQcÿûý)„ÁÔÁy²YøÎóµ[~ÄCaS¥Ÿœænrñäj½—‹„Ìã»)j_¾ìÈ’r§F=qñ:Îu:DËj,—L—O )àÖÊün:®ß¼Ý6×kùr©/lƒeåÚÞ“ïìL|2o.†2ÝFjp¢ßOl;øók·Ü~PÛ7‚ìÖiP}__yc‚GÖµÆä%åÄo‘1šg|XZêmJõõ÷?óº©ÐF»õ§•_O&1‹+*¼;9vê[¯ˆÈ.ÎÈ«ÏÍ|möžºÚ!Xô¸É (™±™|¿ædxÈÑ´"„$Í#7žüå3aÈÎ4õK- Ngµ%Z™þû¼^UF¯‰3>±õ‰¦ÌCÊèæÏ½kS_á;–ê®{Wa1,‰…*ÑÉhdä)<ƒ¥¡ñD2vFWÍî X‘I¥18–F C¥CÄ“¡QÄÍ#Ín‰Bc2©t, C§A?“±4DapsFGáf7ECcuèh"2<Áf:†Ì @cÿœéæÍ>|T‘Bƒ8F£i‰]FÂBSqh&ŒÁ¯¦p³× ‡¡HÑñL‡Å8b™h:K`â‰x$;ϨÕoLhX ’ ´ˆI"±XðJÀfôÕ쮀£CÌâ˜8èn DÆP0tˆ ™6ÃÕS+ŽA!áq@°4ž@Ã`,!/#0±3ú ?«)<@ H2  ™O!B!Ò 4E:0ÃÔìQ½ƒb€ è‰@‹x,šiÆ qŸÑW³»( ¼…€'S£`Q8&ƒ@ÂFcÈXô ÅÌ7€M2 M%Q¨à«X …#ÑŠˆ("RÕ œÝÎ –Ad¢°8@4$D•I'ãDH»38{· tà—h:À…Š…À#ãd`~€^"š1cgHTL žLÅàaÔÀǬ1ð $“Œ'ÍÀÌì½Nd0Ð `…F&ÓP 2Ž1ÄQé Š&Ïè*Ì즘t&†g¢OÓF ˜DàŒL@t ¢DôLgŸÝ K%Q@ó!í ^x†J%‘p´™n5û’‰4,M£’Éd€OM¦c°ò?™ÊœÙ@ììµ¢hÐ+$šŠB#XÎÃL ƒj66£V˜Ù}è–L¡Ð™ OfPñ@ºèXh*N"àh3ûjö¤b0D‰™ ‚ŽÂ‘14²x;‘Aœ‰|³×Š ¾í¢1ñ@0È(&¤}2ŠJ5ÜûWS³3€tCeÐIxF*ˆt ŽDˆ"Ž ¼u†‡bg§ t ŽBÿAK¤Ò™€Zt†ÁÄPAöáé(â _˜}¡‡Sé(P!àD Ð8ƒØƒªÍÄÐÙ-(8 ûTMÅ€xÀN#R@ÚH*¨JœA=°³Ã“L Å€Zc€ž`B‚´ )•Ž¡OM”Í0õ÷,Æl¦¸ÁÍò¦9Ë0óO¾göß©–)K„Ù-ÑÅ1°X`ßD ŠJÁ@÷2IÀÍ`_¥þbéÃì¿Ó,SuÂÏj Ü ²#MC¢‹Ê$)T*€ƒ€•†ûµN¨Y-a(&ô2À=“r€ÄÄI?ÄÒÈàÕ¿Ìáþ‰[ÎÕ41‰„ÖŠ%1ÈSaH¢Â_Ñ÷ÀK±´Eýƒ¨™sahà$ šèD˜)T>ää &È;*Ž:³0Ì¿, °„Œ%˜™ Ë`˜$&‰€Â‚Ô¢ ˆ3 Cÿ»Â$ ÈP&tK¤Ð“”†¡Ï,löÑŸ£ Cláf÷È9ª0Ä~ö¡£›ªÓï,AÊ€1QX:虑-]Løµ§þ!½šýwl*rS§¹)°©~š=Þæ(À¦,Íî€I4 •ˆx‘.LÀ@î  2“HÄ~;ôìuš£üšê§ÙcŽ’Åd’¨Là¦D  B€#Ï )쿲DLK„tÃÀ(d*¸–Æ@Ü4 ‹¦Ð3Šÿ·…QPh2Ä5ä:ü  K$ѨHR”™…áþ]aˆ* @â– 9ò'Ò…‚ŒŠ¢ã1Ì™…¡ÿ]a0Î^KC2#©LZÅ$“™(ô~fa„WEC“1t Í~à £€Ÿ0Ðh"èO}fa¨Y”E§ çÐÀÅÈt& ™` ä…ýKËHÿ²0€0p(’Ì$c@ é…–ð ¤pDêÌÂþ]Y%±(H9D$Ü1ÀJˆxŽL¥ÒðDÄí̈ÿ²0‹BV2ð@Z<™N`tbpT4å/Ý8{º™ãäÌøÍÞGDàÝL< Ð&@‡àˆ2H{2Ô‚›A9ѳGÈ'T¦Àoö®$‚§¢È .P€*ÐMPÂÈZ Ñ¿¦ôï,ÍiffªŸ~Óº¹MÌLµnvKàL¤U0ˆ8`Lxát,²CÙC¥Ì€ößX"‘Q°H²n !I P°À—ð(Ư)7;è¡·maPÀq4"œ•ަR‰Ì_ 5ÿ¯,QÀ·(€XXÀfÃ#ƒ¦cЖ4£(ñWm  8 ™±Ç3ûÐЀ”ð&:³]¿Éà6ÀßÑŽ ™HA$›ÄÇ¡‘þÕ+ÓGs›N›·ßÔ‰DÀ‚k“h8,“À€´>Á ¡É€AеØ_-¡gÏÜ ëÞ©D ÈZ*DBãPHZEÏ$"Sl¿Xš=ä(xPQt2Ê?§â˜àé8:È>¢Q‘K v$ÿ+K$w2¼ƒiÜ,†J%ái4aƬ†ü›Àümah4É|›€ÆF^ʆKt‡#Í, óï # ™X2ÚD4‡,V0ÈXŒ •€Ã“ñ4ÌÌÂPÿ®0Ž*H¡!­(P/x4’Âñ8Bçg†ýw…ÑÐS™†Â`¢)T E£@š’IT…ÂΈG(lvïŸãÜöTDÎîjt"V° ±hD*™9ŸÎ¤¢‰LFók:tÏqæw*´g‡À9NüNYšÝÛ L Œ‘)h$H<žÁÓ`P€ÕfLtaHÿÊ2¯G'°T†x Q,È ‘˜3Äé79à·…áqDàQ¤k’〣𠲎>³0ü¿, R7”‚ã˜tø†E¡©8 –Ä•N#fFøw…NÁ’ˆKT 3GF¦sIÀK°h‚eÌ, ûï íŽLZ€»3¨T$ñ4 d&†Ñ„aü¥Ñÿ²0,²'DŠ%ÑD ÈÆ a@ýÎ,ì_z#ä:¸à D+‡,†3‘ÔHÁQf:¾ø¿ " B±ÐF§ÒhG©4* YÑ¢aL4Žø—1Cý»Â4Ë„ÄÏ@æ@ð!PT mdãFúKœÍŽ¢  Á{<žF¤‘Id ºxph4aÆ”2ñ_Y¢ è x™B€¼ DƒDEÓ™D:q2È  efõ;Wû]aXƒØ€Gvt7 •¡ABÃO&Ñ!dg†ùw…ÑÐXD­3hd …`þND6_ÐÉÀ£@ÄÏ, ûï c2À?™SÉGcb‰àTMc6áÿRØo\mn+ySiæ7á„Ã``é$dÚ¬a€iC/àQTd«ð ió|dRD"¢×qL&|™hâHTKÖ0ƒýü;K,ƒ#R]EH]X"ì]M¸ž „ßyäï #ñPpV,„(H…ÌÈcQDÚÌÂPÿ®0&Cïc"{òðÀH(8"Š‚¡Q1X@à™…Íîþs\Xr’Ù‰ÖC§,Í>´L …Æ2˜X:²ÙœÂŒÌ$‘I(2ƒˆE£É¿òñÙýd ;ÌÀ“!Ü@Wã€l †^Ÿ˜‰¥ÿ0&»uêZ™S(îÿ¹u¶wmMÆ à) Áõ1ÎÐdǤAA¢]gÿË*ÕX"Ç¡ñ$ c$4‡!“ÈD±N4¦~µ„žÕ“€c»"ÒQZ¶S±T:àö@XéWK˜¿µô—ålü,ošs€™™°ú†æØˆ!ܬ†ˆt9Uñ@$³ C2áÚÄÄ!³Q¿BÍj´*ƒ(2KKñ 5ÄÒFÑ¿Ö=«!:‹ÈÅÓ€zƒ@¥’Áø2‹Æ‘h˜_¦ð³ŽŒ-‰Ê˜ÚkDÀ‚ò£3!ÇàÈYX“"5ô£ö·¡ð—÷::ýgüã[6PPL t6‰„¡)(²ެG";uHTÊ/Û:ðY©Ÿiô) Ñ äP‹("°¨û@¦º~µƒýg3X ¸MDƒÐ€ŸPà‰L Ï‰LÂŒê g±ÃÀ É 6&ÙQŒ¢ƒÀãÈ(î×-©ø¿Ì»Í´銎¢2 ©¤-Œ=*™Eÿ1fÓvpÿlÃÐhGY• ¢ 4˜ÛX puÜŒúg1ä`Ðê<Ù=À‹ÝJ†a¤hTÜŒêþÙKùƒ,¢PpˆÐb€‹3°X0‚űDÆ ;³x‘ê]AAÔÐx0F¥WÁcñX*iæpÍÒ.ÐD4àETă "ä!ˆ‰bØ_íÌÒË4"‡A31ÀPÀDÚÁw&YàÔ<£:äYÌÖ%R€òò@²Ç£ñ±ÈtpB 5¿š™¥“ç¾ï?c†9dð_*‘€epTƒN§!§€h“˜Ô¯ff*d}Ž„Âááã0^XŠÁ„0¥0 iLL™1T³T‡I€˜„âi4–É@ä&Š6µw’F‚¥`~µCúO3IO„z Ù^…à-†„!RIL €8 ¹Mùs#A5‹•¹áb…øÏVæKˆÒ,VæJˆô,Mš#&M™Aÿ³™9Bb7‹•¹!ÒTe°ÿlfŽ€4e3‹™¹áÑ”™Y5G8š2óÏVæˆFˆ•YÂ`Ž`„X™¥ç"ˆ•YºwŽ‚X!ÿ³•9"båoðìïIÐŒ´³up’0·aÚþ»Q¿÷œO]MÙ›Kù`ODC3É@‰dd‘MfR±t"Å RHHïi‹Ø¹XDNm0ñdŽNÅàñdè-Œ rpŠòÇ€L[œ¹=òM’i€'2w…ˆ&ÑbÐT4 gšDÏ©ÝXM…Ð$áqth7 âuL"…&’ÿÀˆ&ç48 Bé*L¦‚öGSQt“HeB€â餿43'“s;Ðö£–s²H cÉzcê\‰ˆÂðþ) Kè3=hnu¤cðQ ¡AAeaÐÊðPm4K!Í´Hœ‹IžIGŽ Phx< ‹AaQL<Eî‚!ÑÐØ¿TrNƒƒ#`ÐÈ D‡ì‚Á¦C'@IfhÜ_j‰Ÿ‹É9žÀú18sdÕЀAAö7 ›ÎÀ2ÔCcüÅÑÉs1ID1 xT•‚'£+èL –1µm ãL“s Ç9žÌš69§J’ÐT:4- œŒ‘ Úr&ÔÒ$¸é ‹sœ9žcš¶Hš“E<‚„ŽM‰G¶ T.dyÙ#úKGÎÍ$Pp a0ù¨8< 2hdàï_Æ3'ô%!ÂÉD]2` ,]@gâÿXÿQ˹™„ʈA²'“†!¶14&2+DbbþbrN˜ðKÂû ›Æ€’ ‰p( …J'%&ü¥ást*26 K Ûé0T…‚aÒ¨±Á¥ýcVïG-çCq#S8äZ$‰a©D&“Ž!Ðit,ƒLé•è9¹åTM›œS%éd žF @°i¡’0t †FÀ0Hä?ÓÑ1sB¡9ž‹š69+b˜Íd9¨ÙYÎúˆ€Ì—ƒJ¢‚c`PQ4*“‰'âˆ@¡i¿+êw9j®à#YŸJ%0ÑL&ƒ@cqL$ÓR2ÈcÊÌ"g§Vs.6OƒœD"£8 œ M…qÃb±È棿Šû_)(1†‰CQP@Ü! odø è°¿?6ý,ôeÀ(t4(äVd¥‰BC K±•‰#ÐU’¿Šýß)tj›šŠ†Æ tð`i$ÔÐØ¿v/þ§P:h,–ŠÅ`!Ø1CtdA:‡¬ZþRèÿŽ÷2 ÷Bú`™D GX2G`P¨À%ûÐ)=—BçLãQ¿ÅÓ?L’1T¨‰LEîgAÓži$À\L ‘<³ofg7fÿ­2@ý.Í›ý·,õ[¾dößÒYÔo¨ÙKgQ¿%#ν lüd…c2p$<€‰„8Ãäœ`aÎlõ[‚ü‡I “IÓA§#'&ÈLÈÊX*Ä7ü@ž™æ#sæÇ¨ßIj³ÿ–(¢~+-Íþ[¢ˆú-1ûo‰"êw”Ûì¿å‰¨¹Ñ†ÿ‚Ó¡~'4þ\#0X@4Œ&0PˆÏ“@ÈP™”™9‹s&‰¨ß1:³ÿ–Ñ¡~Káÿ¼Ì OÆ#ƒÂ¡Èt …¤"ãˆx:r¼53A Œ–yË,û¿—,þ¿ìþG ;†)BâÿýÍs¹ÿ…Ãá1¹ÿ ÉèÿÞÿøêþÇã-$·ìÐ2!ø:$$¢´[EIÍD[e¿ÎÞ"âB"?]âçi$ ‹bÐ@l€|h‚øÀÆÐxšF¡À'lœ­¬„Q~Ø£Ù:Û8Ù2ÿÓ‹&Òˆ@¤ÑL*èäÜ6š€§ÐHX4p%í?M!¿ÚÙšÛ81(T€©ÿ´IÂãÁ((4dwX°*A£3­TäßÛt±5§ÿ]³ñÈŠ™Žp¦“ ÀAì!Ug"ÒýŸvMíÌM¦l7¡™9ÛXþ§U2“†Å˜$<‘ŽB–—TŠN†œGÀ ¿±jMq°d8ü§Y²ø…È$ž¹EÄ †Â€DJ"Íbvª¢&t†£“ƒ­ûZ±‰¬‡ÐÈZ!ä2p1ð™F#3’¿³lÃpýO«h<‘‚,àh4 •Ì RÐh ʃ†Ã1˜Æ\¬š0Í­¬3r Ö¨X H]ƒŽËÀ#+ŒL¤4ˆtâoÛ9€süM'-%3 d™„¡á©D ŽÆ@¡‘m×h"‘9‹Ýì^ ¤& …fbé44” ¼ƒL!QqXÇ Ïb“inC§ÐœÌ]ÿä(,øÂ,pXà žÀQx*†E£pdý7Æ™Á ƒîdLl‚È%@)@3ÑTä~6G3cPèWK&•Ád’H4¢ILh™²‘@bé˜Å¤5Å’abïL±q2÷ 8™ÛÚü§uÃÀÐpÀƒéÈa. ‹§ãÉÀŠÏ0DãwÖ÷kîTú;#‚$£ ¢h$À1„¸"°·Òpôï¬::QþËht F˜Dd. $š £bžLf~cv¿ã~ƳVÿiAd8?4 H¡€uB:ÐOuVÈsÙP¬ƒf`‘€Œ§Q144ŠŒ¥àñ4r‡ ŠŸÅìßÂEÆ`It!0È~i9ºÉ$P°:7‹=;ŠƒãßÔJ¦I LñÐ4H4™Ž¬73‘Ù|s¶˜ý€ÀÇÐ(…ÊÄb€#7®2(€F*h*æwgø«‰…jõ7Õ†¤@§£ ‹°XHTä`"Æ¢é!èÙ¼öWó˜0ÂA„€0À@2™T<‰É àf@@ÏbÞÕÁ܉ñw€¦VÈÈ…=Å /D®?€ÈþO‹{ö©ì2Qß¡­¦¢­±C]eÿÚ¤£1$,–H@3‘ t‘ÅVb ’5‰³Úü{@bpà\ ,„“FÇ€ôW @ÿao™‘ÌÿÿðHLÎ4'%ˆpʪ¹•¹“9Ãq/(Á©7üïò4dþ¿Üÿ²’øùÿÿ‘/YaeM¥úûT„‘Ú§£¸WUIHDBJê VIJJù€²Þîê{…Ð’(¡GsF(VRR*"B"fNNvÒRR®®®’®XI[S©ÚRnˆ-4òá?J8ýòIIº]D~™ìTnÖV6ŽrcM&“§?=õ^` ðÍšáDBÞ+Á°w6w‘Q²Înã$qÀÝŽ!"D›þMNĉáæ4ýaš’œätì” ‰Hý= J¶Öv€8þiGUEŽüçgŒ''bʰ¨p²uøå}ʶnîð:tIšú„“¹“CþÏðšú&D›Š)¡Ûž…¶üù†­B;ö©J ý]Ô íŸŠH!m“áÀ°¡1d¥¦Í/“µ2·±2s`0¡Ñª£$ÍÑQDÈa%'âèänÅp4c0œD„œ {~ô ò¤~Ž4s;§_ÿbAq¡L¿*"äè@“±°wf8¸KZ8ŠÈËJMÿen¤»Û82hÈh;þõÓ¿Ô÷Çc&þW«ìÀp4÷`üªü£2tŠåþéÿê“ò¢6n¡ÛÒœ­Á‡¶J:€‹»o1·1wÒF¤é­2SïqæmëºUÒÊ–Bß2ÝÂÝ sS3'øûßw-}ÚçÖµBHßJýˆ0ª-ݾÑÍ]„Ìéð&[;h‘°„„ÝVÈÆÖ ŒYÛº0„œÌÌ…àMâBæNBð#ÍÊÖ‘A¢º ý(ZXHBâW;ˆ»R ‰H0OQ!ÃÊÊÑŽB3·1•A‰LýnŠöÇïÐ=²NÓµ„¦@1Õpi!<ÁÎMfªeèSEØ9ØZ€ÓQ¬ÌMmD~¾ý‡A +>„’Ä3¬§?%ôGÕ~|nŠÎþ×ñŠXÚ´M@ÉÈB[lft¶¦‚¸‘ÇHâ%É0Lðçé‚¥ ä©ŠK9Ñ‘ÆI99LûÑ÷RSýƒü0õÆ©ÞgØÐ…¦Õ’ÐZ§éÎEþ°k¦û~& M½é—†‚“:غ¢¡§­(ŽŽÓx1ÝB²ÎV¿¼ŠLùþøüÉÊ\^–òï¦ 3½/?Õ`yuйÍt죘2~4SVŠÿÃÿΆ¼Ïq† m†Ò‚?Í8þ³ŸÕ¤9;B5ÿ°K±ÿDḭ̀­ =mxCf³þ§µ©#Z3,íD^ùÛÊJ9[MèÏ‘Ùå˜]Žù/ûü¹]Î6?€ùï­í4gXÑçÔÌéoSN(13ÜÍé hü w6—pø‰jB?ÿúçK"í5 NvÔ__—ø‘wÿì°_ßâènCû£à©_äÿ™á÷×Ñr´ƒ”K¥8üÖ¶ÎŽ  G†„´´­ CFDèG©×8 3Š ýgƒ~í¨ßfƒÿÌ?ÇjËVO$-hP\@ë·lþ?ß,¾yóVï™Ùág#¡Ÿý'òãåÍø1óG—üìAgküîÈ›:Ñ;gªÅÉÉÁAÄy„~ú Eþ¯=;ÃúTøK¹?^›#ñALÿN›ÿà ¢ÄŸŽòëËÀOþh¬’­•2ç;¥Ž!¥QL(ÖBL[‡¿ebÒ? žiíï;”Æ@&”ÁûÌ­M§yÂ,#gbBƒš˜˜@ñvf’v6¦"BP+¨ãTr'´¦ØAÏÿýg§? ï¢X9!´ø×FM™õ³îð¾\ö·ÖùÝ›LJr4£ ží2ýA[:°oÚg¦›þKÓ $4åÀ¢ˆ·RŽ@/BFí‡_m™B`ÞŽA3gšÓ~¤dI¡mEh8tô7šŒœwÄ"·[NñE)¨|›†i¤û94V È“ BO;QLNÓ\çGe§zÌdúM?€rúÄÁþ@ÇŸ–ôë^3]‚5IÿtÍjÊû€Áü@IÀ-€¸@/"¶äD +Èša~¾ÇÔÁÖÙî§‹ÊþT3¢©É²¡g†‘Ÿ¢Ó„â—¡*æN kiäJd„ŽE&¦¨4:…‰¡âˆ Âã±hú:ýñ)UøÔ^`NHO«‚±EÈ—ˆË_§Ù!åç'(643D!c?—²˜Û8ýàOSUÿâµg–Hµur²µ†ÏRå§–”d¥¨ÿÐhG%D¦ý÷ÍÞÿó£"3Æç×zþcc)h•IÇ!·+P ƒÊ ñ$"¥3¨TòÿfÏ¡,¤‹ÿü4ÃjÑ(ÿ—W§0}Ûÿp(Z™Ã@ý·7çúƒR›9HÉpù™j§Aû)E3Ý-B®G!Ó?ˆ5ÓÁÖz ‘˜y¶ ÆL…v(-‹Ð!„\ý© ¤þ®¯ÿ˜_ûÙ3OîÈÿýß%i²¯iæõ áú™×¦Yן¯ÿ’Üÿ”S+ Py[§êáWÊdGq2ûƒ2Á S¿O›4§#úΤ1ÒHGq1g¸ ý¤'Â?…Æ4=œAÓÁ0'ë_]ø¯NøÏ<æï9Á_HéŸeM·PDþWI4ýžŸ¼å—Y¦Ÿ ™júUÕLIØ3­þ˜Øøñ©©ô<•}~¼2•]!N~(¯ŸõûuààÛO‡%¿ìÿg群ÖÙ qTsšÒêÿìÿÀà0Ø©ù_äÚAgA¡ D þÿÎÿþŸø Ú§±‹}/âŒìª»•µYXæ™ÃÏo–°Â¿[#Wmƒo¬Tµ]Ê,“ÈWóâCY`dT•wp»ÒÝäi¨Þ9±øKUO,ßþPí­±èãLŽMeÌuïç~ôh÷Ó(n&“ ”°ôŽ~Úm‰Žîn‰ôÆãlÜYî¡›Ô8Ájem}.<¼\n²Á¶ °¶vêÝX¬_JŠ”ÏXw&o×íĤ  ¥®7¼>¿A[5d°³þÜ¢ÂúMê|ôh ËÙ‹Y}}}ùeÝ8·»?¤tvË ¬Û—ÃþǾ~}¡W{wõU¶Í\‚‚!ì|„wÏ.ÝúÞ/RTRrÏñKA¯ŽƒvîÛê3_eiþbÅŠ§—Ð Ý#ê$ŸîV.®P‹þ~ò±€‚ÔÖ²àá–A»ö'kÐ×—¶,0:¶Ë­£½}ËìiÖ¹æútËø‰ÚôÀ™åÉbâùÝŸ¿xqôúõ ¬ì¼¯n8j­mö”Û»wïa*õXœZxì­[·TMüΞˆ=»Iâ÷ÎêÆ¶™6M©ŒŠµ,ÛËÏdêêêììíÏ$ë$ê>-¼eË’–––K(Êü®½g¶î¿yU-\òµq‡Ñ.é[ҧ͇zššÍåüq¢ËÌ_Rwžæ9ºrÃΞÆêݽMàCziLvî‹à¨È+‹¬4.ð ^ĶöðÛ\÷áñÿ‡½/¤jkû×\Ф’È\4 ³ÏÙgJ(C„2eŒØ{Ÿ}d–±dh)ê&¡’$E¦DEs*”•!*C*Dý×&Ýn—‹÷ö¿÷û¾7÷:Gçìý¬g­õ[ϰ×Z¿õ±v?àã—›Á—ÑcÇß_š% îRe³%?Æ]Àh{ýrvjDkðíÕ3WÎ]溠„Yç?wO3fLçßÏã8êÓûÞèœO¯@Ɔ½Ëf'$&î̲ºsäÔ©p¹f17Jü+xGoí—Ï\eÕª‰¼¼¼§|z=Ï øµ†*EO.( yúâÅ8GGG~AAÅMTÇ'Ëç1œ8fJjÍÍÃÃsA†îR¯eW[$t÷èš}uç#ÊKN¾=ÖsU À4*&¦¤¦FÐÇÇçÔéÓÏü­ø-…×¥ŽÝ” äŸ 1››Ë@c²˜Ò*±5“ÅÆóš»kIàÖoŸ´½x™½;Ø5>õàÒ‚^Ëi WøGŽ©Mæ™°R,øŠ«7›ùøŽ?kÃÌÏy&…)xŽ‘/D74ql3Ê€Ã÷ xR˜µ9m džó÷UPt}c󜗆ܲŠÅ¶åD}¼y˜ñv){ÌÛ;që§Žšê³”8ÙLÍ[z}}ˆ˜r§ôöRPMÓeéaùõwl…8xfî |y3LbÑ¢©qÅwÓ¦™¾3ç‹Ð~¬xSú ­%_.4UZ‰òQ¤Mžû-Ò/Ú-Ðk˜¹´èÔ¥|‹gå_ÄI­óׯæíaºø[VÃë7n,S …§½’6ÈZ¬½”‰ÏØÜ±P ð«GTKZŸlö:°ÀxñbñÁ“$Vu\¸Ÿ®;™³{öÖfÛãjI!B5‚â-¼A±ñÊ¢z)uuvZÑ3=Ê9¢<ÉÛìlÕ§'¸Ê[Ûæï Ís~)8MøÑìw ";öÝø(¯-ª¥"06>\’êÙ»L¤ÖçÓÔׯ?ïyýÚlž\ýέ) úRãŠ4÷iJJzVÏNѾ£–fh‰sç>ˆSß/¨Mž±˜= ÍËU§_xt4çŽMYûøb˜bèåWwßµ>´i5Vj,O*ôîâaù/)ü$ËE½æÔÕW8.Ú]δ.fú~Ž”Ù½ÂÐûóûŒ1Qr Msï?-Þ»£Näj >uªÙ8» öéz)Y++EñÒ^›Ž¢a¾œs¬‰"ãR Ÿ«¦ÍYÚµ=˜UvKËÜ|¶°p/ÏÌw\’ZÓ–Æúz|~Óçù"M‰±Jbé—23Ÿßi™ì?Ý"ìȽyŠ “ö•'ìT¨M^4[^Þ^zÃr^]]ŸÆûéò’ÚOÆÐsÓ7·> *<&>ÜPIU5¹ê\}ÿ)pÑtà 7Ç.£N/ÜêQ_'³$°¬ìúäé¯4?èâ_æ*ãåí{å]C¾×U›UÄÒUø1Æ–vš½ÒÛíÒÚ.à·Äˆ{”§àúøä¶Ž–Ú SO»5Ï7+ø0¹·;}…ŽÎüàÝë?ð¹ˆO›U¡ñüÛu!Ù3²Øo”k‹øò<ݦðɺ&É=¯¡ª:^*åpžë+ÛÒ8ǰ²²Ý=ïVøÔrì©‹7A­Ùª+‚ÝŸCfHìHHHðwi(RR”µÄÃ:IøÌÓ‹5['ËZp_{|Êò"Â?#Dñ³ú³¸B ܾnåÊ);vˆ—Ÿÿ–·åÝR»ÚµÐÒUß¾é’Ýsnœ„„ù‰ o‚)VõÊj)³W…= ¼¾ÏãiÆùF6¿ªšXºå|^ÿÖVA Òl€2Ðy…ë‘ØXÏvsë±"¾vþ­NŽ~»n)Ù4iN›gìCÑZ»V¬69‚­$5öµýK®-;]„mÙÓYÔúQ$4ÇÞ:PK¶\Ñ¥¾Aœö|?wž|·Åæ­5È••:FF/ –Wø5ª›ŽYîÓ3oÆ­Ã#vcsóÓGù§<³—L8³#-on}ûK޼‚%ÑÔˆSYë÷ì“r|ÔQšUáüúMÍØñ?½˜Ööô"åu­¢‚d•e§MJñ%¥­÷¡”î_Ro” Ì„ˆ™yîÓ'…®^k¶)™rïß¿Úéé é‰ÓŒƒvNÊ@®óJ©¨v½ûܼÐÏâèщù—„¤´o«êêÎ7oÇÓæO”ÌLçNÙ=ðØ]gbó½˜3>|°=½¹M—!绣ªjAÍ^”ë†2#Î }qµÁ²ùþêÎa³:ZD/\пv§¡…¾ðzA¢vNlüÅ«•U*è%¯k<&Œ›xâÒöq§yv/ð: &Ôzº±Õ»‚?:º©õƒ0!˜:2iìØÏ; f~ l©P—×UŸ:‹«H;zoQ7a>Žé);i.˜—g·#¦Æp¾$tWÄv%Óm·ãÎOZ_c`œß/—ÿô´ãæÍ;/.4OÚ¤ÐS6ùÓ‡ý:ž«Êús›OUÖŽãá!ýôÑââ…í®”i" “bæ‚–¬;xöìâ£k‰öffJuÕ+‚– ¤„­áâ|ÅV•Rmÿüé%½DEíSÉü‡¿Tž5> ˜ÏâÄp‡‰F'ç—\›™ez/fd?ÎùüyÑÕO-Í­:sS›nÅŒµ{ÒóQäÁùÞšÓ„löœÿì4fœá‘Z¥Ù½mWOG‘“Ã*95»àm•iwÄç×»`¾fÍýŸí. oÅääædYM¿rÂĽì¾Ãe,9)36VÉ«£©–®ãR3Ê@Å攉pMx]ëü©å!cÂ9:?Ù¯>f¡Âï·ïÙÃt¤rªäéùZ……®Ýgqk zš_|ÆÂø ¥—/­~ÅíæfPU³þݺ©aÚ ¯&K ÒaÆoo¿†ž/,\ÓVw}ªç,žd®W~~ÓJ£NT»åìß©ÁÃç.´i“µŒ¿5PøÑÛkÒRS/”·aG¼l,ÉóU,¬™±$ð2o]Ü‹•n»+¾|>¢çß‘eåHrxÄ7köþëçhúnqL¸¡®l½ñRu*,áèQÎøž’7Ïу$Y0ì&O[t\­Ìx”ðýïù€nºÆÆäËSÂ+v¹®];ãJXmplìØƒ/ž>ºïù¦ZâQÁ'¼/#ÌÝt#1YS[‚F3±y:G&ÝðT¦M€ÃãÄú!wd䛲äÝb0õ‹Â‡Ç ÒØ‚ãž·¿¼y­´Ô.ÒmÉ>ßåét°ìÁÕÍ›µ/¯*xwÇ맬½•éÀÅ5»ªÆc{¡÷œ·ù w\"b{ˆøAŒÙÅ^~ Õ ]CIÿ`Î ü§°« ÎØ¦L Ó/Ÿ³II`Yeeú¯lÍÖʾ¡ #É6Fd¬ßÕÇ,\‚5>2™#´ì\@¨P­rMŽ)ùÀÌ •SÙÙö‘Ñ÷*+u W•ÈÑ"£Mן±¾;'Ã"nB|¬Åζ›ËØ&{?}Œ8tH&ëqiøÁƒgΘ%-Rµ±á––î ±C ²î]Î5u>Ú½póìƒòËâë3Žï*ÔŒËÌÊÚôÅç]ï:~?mjª¶ËX©®œwö¬’4ßM‡ÎP~ŒÃ~ÙTsI“„“±ºgçñ*.OÿúHàÛëL;õ ó¾‰'ªkhŒÝæñ¹î>”í¬TÅ z=j™›Mâ}1?Ÿ3gü;Lææj{ßË6oʺu¼¾¼àÄ ó)´$ßž65³ó>B">bjkã‚Û·}e¯ï½ø¼<þ'Ož€zŽëèèxZ_/é–j ¢2~Õžç l¿£¯'Å TLÇËyk’l„³ç_ôïh~ ÈÅ5¦ÙÁWm~3Rv°3=e9æHbâŒ3¶ƒf_¹~½à† õ¸4ܾøäIóÆo©‹>]”R-,?™¢1ën%FÞk —•‘¹üÀ—K__?**êƒsTU}¿Dš ˆ˜—·7bg7mæÌ™¥‡äÄ,å â™;wÊ’%KøPÈsphjjrl;}zSö]¡äääΦ´ Kk<¸"–±I©Þhè°’GæùûûWeÛa¥‚&Þs‚TnM³Îz´p+++oÞºU³pN¶}@õ“ÄàCUUüÀêÌ’á97Z~D$ÆÛSSíØ±ƒGHˆ‹ƒx,àêꟜ¼àAï1ù¼b‹sÖ××­´¶^)mR,´kë–-ÄC,§¶çªM•SMMMOefƒ”<é¾¾[¡Aå½°è…7>o0±¯9ÙD‹PŸ_Uä-w"=x °¡ÐóYg[û˜Š¦èIñ÷?ž<ºüøê,{CUCC¾Ý¡¡'»]Ó Oš]÷Ÿ6·XOOÏØÎNšB§[ÅÐëë—n8õ°º:óÒ%•Ȩ¨kvöö+’5~yëÊr©/E˜L¦]óýô×½k"ÓLM/»ZZŠ 2œD·v¶Šijh >|¨¬64wèîx%­¨·k×.H^¾ÐóãžÓþŽaþc/ä6UÖŽ!ÉÉÉ}xzqœ{Ãm¡û)Ú"9vÉìkVÞߺÎÄÜ^DÞó''g^Biyyt¥êíょŸ{?½,1cúºõY‰4~ €'?/ïÔ½{ëøæÌ¹jgg•›KÇB €†·fÃȈˆ‹îo]×Z³&™hºLá†ÚØ+Äcíyà×lç´Œ–LðKÛx°Û¡@f}iêÔ©îõ¥s‰»oÇ)Þ9qâÿ¶e Е&¯–è­"(jB‘‘‘Ò ‡cB÷ìÁçÈš==*#-mlf6îMT+YsÎã-Wõôõçb!ûûí^>ÅPk½©©áú¸ák55Ž’|»q‡×ÇýfUdvso{\äS´é…ÿ½œ“ör×<ç¥ÙïÚ»———·XZFæá!9~,„¨­QƆëÞŠÇÇŠf Z®QSU…ÀßWø16›mw÷èšññÛVÏ猉Y’}øxóþ÷y9žYç)’¥á'[r𫳗¸¾Ú{/óü—Ïrãt–_iò!êF·U·µ±É]eÚ`»q£ºÐþY³fŸ¼†¨Ì%¢g(ˆ¥§¦šØ{göûÞÙ &ýú¯°ñññ)úNw,DUM-ËáñYH[[Û!àÎÍ›ØÚµkkÃâ|ºƒ¼,yîç:Z8.X°@Ï;m£~›¶¾þ>Bãðð çÎ‹Šˆ˜áâîÎÎux|ü´ÈÞvˆikwjcéçÛQ$å³E5  5_˜‹0sÌEs;ïq«ðq3ç«UqûhtqŸ”vÞ«©sdEaø·‡Ú"ù½ûöå¿JJšÆñËÇSq‹s-¹XZªeã&,¿7?äˆY亸")IIç°™¼¼I9nýx¬%P[ó*)+Ÿv¬Uà·Pñjscã½ 5àÇ,Cž,úQfSS“^ó çÕ…[ÞMôýÜ%¥">ØîÓö5´¤”ìù¥ ÖÖÖðã©h|zŠvÜ}cïE`0Â/ߊ#!cëKcÍ—’*VïíÛ·-=ž‡nmk[©§Ç F÷qóè\ìj¨Ç†Ü²ëMrOŸ•ämý(˾sØ<Ã^¦YÞóÓ‡ôÒœHÚøGQQp"*JJc?¶ŸåäîùÉç^@A\OOOøÞ½;>}lÁê®ELææžÈ¡uxù\`¤ ³’™™wG&%-m·y»ØÒ¥ÚõûµöJ¸öi+îf/÷´Åþù‹;é%“yMLLCCA™Åº=€î¸Mù›'ÛJÞ ÌæãËÌwi KHHÍȸþ{=x÷îü® &”^½0wî\|UßÜ|ópjwû±¶æ—]uugÄ(ú*PH$KCCCiqñÙMë³×ÜOº+ôþÕ§Û‡äLRÖŠÚ¾}Ì»¶¶Ô9'›åÝÜðeË–I/X|;çàÁƒ•E‹ {\œœt}î%5½–Ëîɹ-¥UUQ¯ššÈÓ§OÜ·¯„{ýúaÖë’éŠ,jaÂz j¹Žµ·;Þ¿8IÄëB¨ˆâ†f«ÅhO_+­¨¹¦j÷ý¹AÆÒl`hX eðêêê-O¤%%ýå²MkúÀÙC1$+ßµg“…}bå·´ûŬUW·äãã»õÁS‰ÓÚÄÛ÷Àôù"³’E‚5ÅÒ£ßǺjî Ùñt€®ˆÃ‡¹}}}Ÿ¼Em­ƒ+Ò±3ÍsïÞ=àû'Òé¹ì­\xüñê‰MMW.>î}ÎBÏ÷ÅÕ0Ç7£Li®DzNl*_…}Mήìl·¬9óµM³m*íšCƒƒ•€ËJ·0ytö=ïÖË/ùsŽ3Vj¼›¢•^S\<xã[9>[ ÖßäÇNì²Kº~ˆ±Ibõör–Us—ì®ð£³Ö6 ¡òÿ®W•èŠÇ ?xÝÃ7Ã’ÈzÜñ*§óm®ŒÎ ±[ⱡIAfMÉB R'›•%kð¥„×+‰­©«¨:]ˆçèÌFê® Ëèp‰Ý Pо–Mìrį8³T@P¾z"Žó¦6œÉ¦BuŒ/O²ÖUŸ™OsŠŸíêFÍ·[ˆpï”{•ÍÆÁ<]+Aõ¢££ƒ×-< Dg¹¨vï<ìšù[dð¬UµE|ËTú¿h¹«-WRe<‡ãiSuŠpîî™âŠ·-`‚DoæøñãWHóˆ‰ÊûôWÜ­‰·ºÓ°ññY¿çñ×KK§˜çEÁ´ |aï¹<ŸÞeÜ" ¥swTy+,s/MÞvRÕÔTà~†Å¹uBLj•Qj¡­æc#”ÕBçm‰¬ÅÃ=V#IÜrÖ ¯I_šC@ȹ5Ýë_9tzaÒê}‰tÌ£æùsD™‰ÊÜÄ€òÀ¨Ïïn‰Ÿ'nÃð¿§V'² ¶&/µ(:áQ3a*Ÿè²eàš<á3ÙÙÏ^¾¼Ü7½ÿúÍ›˜D­ƒÑ™"·ÄÞÏèRK×ÐÔl«4²¸xíÚd`D›žûÝ{à¡î©`ã‰ÌDUÁÁÁy]Àäç3§qq¶} û¶«¸X©³»»„½’’’Qr²à*KDWaƒÿéÓ°¢™Õzø]:¢ºÛÃÆ:ŽŸ0A ¨ÆÑúüòÔÆÆÆÀŸü¤k`ž}ÿ½ÈñuuuItzC÷†|…#Où#¦‚ᄘ£ÑŸCM½›ã,ÝÝÝ__Ü9é5°ñ'´ãìfâνº›’ÕÓãìç‰ä½ä[º¡IJ&(*®©¥ÅÊÉɱ¶ñ‘óþÊÊå‰jD d+8cÆÅyBB T{ó¤0æMíy‹·}:Ý8~ B ^Q/ëëi••õL¾2ÃóAв"‹eeCcŠ\Öf;x¢Ñ½_\á"‚?‡  ÈÛÔ6Ùù´´ôñôÜv¢Ì¥Õ«§L27ŠƒnffV•f”Q¢ÛJƒ´ž‹ï$†.žUÑ~$A„ b¯T‰s °yf¸ÄX wïÝ««RjÎl†ÄFBW@êdÂ¥¨”©›×®Y†@‘\r{;fŽ»ÀqªÈûÓ†ò è¢~H,Z˜ôòþŒeRéñ¥¥¥á±±¥k=;Ž™Æ€àí&Tç:ÞYóÀ½ËôÓ‡7É÷c~ûm~¶™wÍ*ËŠ¤ÕÄ´:g ¬øžy‰‰‰>bÕg¬-C¶Cþ¶N^'Êijªôu:°p§õ„—¯^M™¿`Ø‚>þ\YýÇ€„ËÃÃã`ó¡#›|àdoØÝä/Ù1aêÓææ© ëš?¾Óào¹­¬¬ò[ÔìmÒ@a'Ã2|ÂêV{S;šm ¢c¦o{ó(hAsùùI@#Ccãk·ÒN´»®\IDȪU«J¯] ìêîv¾™ö,YHH(rï^=«,¾]·¢Ò—›››³<,úž­ùûuæ•ÝM;×z\K—€ÏÇã·É,r|4Sª,Q˜Ç!¬àjé’2UE\·ðÁe)à¢/8¦s=ö ´,‹ÿ¼XRr¢‚‚µ۷Wyz.ëéíXàwn h·l×Wz¯^]¬¨à¥ÑhÄ ”åwÝò62Ó×ý͇£Ý`É îeŤ›[O«ö­ã;ôVÔGŒX!¦YÑzTe#0³z ˆBÐ9` 5vùwÍo÷WŠn=ÞNŠ… h!È ÷.ÐÌ[ÙQx±ñd޼Ímâžï›&ÈÈÈ›˜<+=HÑkN=û一ÿÉl.GÉ"À?µÜ?a²³2Í(ÑêÎaã\!^^^§÷MfE^séŽOˆ!ÏÁ!,,ÜÚÞ^ <ÿ³––°¹6Üè"Su5>ÊwI#kQ2iº°å»ú[ÆyNÏ ¬Ö@…±É áTˆÂ†Ød& BØT”Ae1ð¡E3†P Ñ0à:Ê@Pf2Pà'§Ñ؃S¹8áø°Vƒ8ÜœM'¡d ‡Äq×Í¢RéTØ;Ö`\€.®ˆ«Û°#Ae“(T™‚°Éd„à‚F1”Ñ™0 B˜ƒ1–¹¹ };¢†m ™I¥àı^0X6 ÁUGpËáÀÚÁdÆà¢œY@äpÂYTE#¤QÙ ÅAs3è›DÃØC wuć·y˜8:°ñdð[dÁ¸†R`?h‚ ƒKwqCGÔ08…BfÓaèJC)l€ ¼“‡ïÈ¢aÜq–£óp²)8Šct‡p•8§” áT6ÆB™ ‚ž” Íc6Xü÷G.œÿïü¿À›Ð~ˆÿ`úÿýcñßÚ•†ëôTU¿F|ý¡Ç¨Xpx~·‰RZô[䨂;9ãXßfLbï&q!ëÛGWÿû¾Mí¿³š÷üÀ2PÀˆ/ÿý –›“ø@a¿ßß¿‡ž¸ò‚”ß‹ê»x¥Ý }_…¯—"ÎÖÄ®ã?Jµ þÃ]_o2ÿú—ùwMÑÇ9óõÂ?Tšøâ[‹~ÇU3ð¯?VQÍÎEìú±êÿó¯*÷Ã%ÿþ¡åúÕ¨Ö÷×uýÓÍćâÕBþ¹}þpAô"¦?ÜBä%q‹ªƒ›ý÷¡éÀm8ø|·õ[ßo7¹#vqÓsvüC)„²Ãõ7gÿ«¹'çwãqõZUã¾A)naáâÊ"˜B8!ò;Æþþ!úmWù§ÍwÌB&Âx:ç™á#HT:Ç铈‰à8ATàäi4˜Ê€S£“ïd© 2ÅHÌïe¸ãÎ.­éwÄL" ĽBE!à ˜ÀæS€/‡i âæ?î ï[\\qûG Êá—Y$ H*™lP>Œ²il –Äb"܈R-Ôtt@%ôqWWk«oA7•EœYJ!2RŒAÁYY3b‚(ŽFCa¦ø·®Ð7Y«¬½v¾š¨¼¨fgÙŠsȲvé£úpBp;Q‚bh£³£øÀ˜”Üïw®Zõã­¸Ã_Ýù?ãùËÚÙ‚Äf‘¨$ñ@ŒJeP ‚¦~Ü¢t”Í è0üŸ Ÿüÿ¢Ó¨¿öÿâÿüoäÿ€Ï\–kçDÐ≪XŒJŽàâ_ôŸ¿è?Ñþ¢ÿü/¦ÿüH÷ù‹óßâÁqœús 1‡e²ük×ý³ ,/„…;CJÙÒOùØO×õU™¿É\9’¶¹®ÓÐÌ•„„áE2¾Rký Ê`9©}½=òëÿ’× 11¿Ñ\~«Ïü•dº4•,ÍdJC¤þr´šDñ0™2_ˆŽã$:‰ECHe£4 ÁØx…þXüWÿ5XéÌè+žIû‹âq–õÁÕA'sëk‡¾|®ÿüÇRÿ\ ”G&KÓ ÊNú_”‡Ù¹¹¸þ¡¹éd”†£tŽ0P6ƒÊdc(‰˜b LqÙKþ £?³…Ò¤‰ÿI ¾ô=_è?ÄæÙÿœ®Ÿ¢ñ«³–Ás: ì?"’$Êý¨¡ïûN™¯žsà“îÂ!ªÂÂ]°¡«B|ÛW…!%.èWSAå«§ñOÿc1Ð,ü›Íë3€È@Çr¶vÔÂ~@,’]Ž:‹.–•òï“Nþ_ãmùTø:ø¾P£)bdVõè~ñBþìóÔtú¯lþ›XÉŸ:ÿG"Qéßñ?Ò‰ó(¿Îÿù‡žÿ¡TË÷·Þ ÿý“oÎñׂÉÿºó¿ô«IùjàDìûæ)F{Øpü¯tˆôÃù_D¡ýÿ¿žÿÿ÷žÿõçQ÷ë°_³¿f~ÍüšøuدCÀ~6’ ýõI`# þÓÙÎåN _ µþ®„þfuÃeEA«æˆ[‚‚DkâñGg\VV¶ä8õ¶œx2© A¤áÆÂE%í\åþê°vÿš·ü)üð½ìF¢I+ li_}åýÏ?‰ "1˜$ Æi„Ž3AÞ#, ™ÊÀ&±Ïãg“4‚²†:&éϽ1°˜¡‚„•EC0&1ÈB¥âd*ÆÂPœD¦aðÀ)JßAå÷qñ³À •#¨?û›jýÌ~”Ý6š'ùJÖ®öˆ‹-qÔÛ×C˜úaKœ‡¸Š‚¨qà8àGøä~Ô(û;‘2‚1)L˜ÎB!¦£ÂÄéd&ƒ“p ù™ˆAY¢‰Ô÷ÆÚðš¡È¬ûüÃz2•f> äF×®£‚\¿&_'Ïðˆ3¾\úk&+jdmg'Šâ¢âKA£³EmÜ\\E¡¯E§ ®8Šp„x-Fþq “¨(ÊbA,ƒL‚I,FQ6“Aa@ ü§ZØ”õ/áqxÍú&±GŒÆÑµêhШEèñ'ê[Û[Û!ÎÄÊqm}Ñ>eG ·ÑBàïÀ bAL2ÎÀAid Ž» á$bW!“M"ãðOuè×õ/ÁmxÍXxî1èF×¶£š?ÿ]›?Ao¤>v”ÿw@FÇ!ŒÅ"C,!±`"!4‹BEȯŸêcGPÖ¨£FŒÌ$³`”Î$Ñq˜bƒŠ“@Ј2qÐzÐQ#ñPû_ˆ‡¯¹ëWņÁíèºk4¸UGœYDLHhòŸ"w´hú;Èe L Aé0‘Y$ (‰N"³Œ’Hdôg"we>ßÁHl*D§R Rq5 "ÓØfÁDÃ~@îï;¶þ% ßl—¢xt]7*[ƒ*8c·üÆìßw»É£E×ßC2‹N£PÁ•F¡(TÆ ‚RAbC?ÉÖ5z$³ÎÀÌf#TDbQ)$ÊÀ)(„ ä¼Ãp— ÅÃÕéSoD(M·Åý-$ê„;Û[»¸ô=U9nG‡¥¿ƒ[˜Æ R!œL¢3‰…±$ÊǤә 6B!±&nGP[7kWláú£jxí0„˜’sÝb‹nqÅG‚®Ñ5îhеÎѱPHÔÚA´_©cl´ýþw0F"Ñi$&…Á @ˆMG˜$Ó Œ S©8•Nù™AYÿ"Ɔ׎íŒã#Æ×èv4øZÔ%f ñÿ[£íᅢ-*̢РCØTàÕQ˜É„p*ÆbàtLÿ©~weý‹Ø^;[ÖöýsÈÃbkt ûŸc«_!Ñ…VnÀ]öOÕ÷?>ñJôQc`ôKÕ&x¦²ú' æµúZsˆ¹!•¾‹@½T¾±‘üà ¾ÙµsÄl°á&àú§²œÖËL\&¸û]!Ö.}Áò÷w‚ø˜$ÀÖl|K µì¶ôÝ20¯€¸ü>£@tñÝrÜþÛdøóëµ}³€YJõÏ3nt^ ”ÃE¦lûÕè[kÿ»Ê¢  «o 4ØÎŽöýa¾££‡µƒU_À¿¬o>1Iÿ5p]úÓ&ûçî¿_qþh+ˆLÆ_Ì(ÿ×olýï÷{þþ/ Fý‘ÿ‹B¡üZÿûOñ}×ßß³¾Z4F?nò’@(d„‚±),&‹Å„`6Áq x&2ƒ¨t&þ3¡×Ú!$Ñ©d:&Qq:›DYd³$”ÍbÂ4:•=ãW’#d€þnp¹ŒÓ¨Œ³È4ŒŒÑpˆ‰Qa6†3)d* Bà¿ëèæ:¸L‹2¨d˜Á&ÓQ˜3Hdä,œc4„4¤LºnkM1œàe°!ŽPtP² ж ¢’!„5œT 'ç>C:¸t‰N¢¢$ ÆAĆ ‚£0B¡QHt%£ÈÐÒØÖVVø£,2Bì4%1Mza‚:‘‘h(¨Äp‚]†L…™T:Ð’‚ÓÉDžÆ¦PØ 1É  teèöÀ7[!A™…“!6ÆD V[eR4Œ‚C xH‘ýœ¾ƒ´*ÊÄA÷0˜,˜Ü3L:Á·KE&›ÙGp:„@‡¡td3PЖl&B£Ð&‹Íf`0“j±qƒ>´Žöˆƒb7DÅÉ(ÎBÙTB¡0AÛ¡8‘ª ƒÂZ³†:°Ìkˆ±Ef3,:è)Î@Øt‹L%Q0œŒR)dö ˜bï $ vvý$pƒŠE!& (Æbl½ 6Ì‚I‹Î„LŒ… ƒ!ê«Ø>r³¡å²€!a é?Ã(Ï}††!ötÔ}tg¡-F¢" §ÐØÄóC J£–Nc f¢Ô!9¨‡‘KBÔI‚ÖšDÒideᔎ㊳i\0D‡kÁY 3@#‰AÐ/3) ¨0Â\(Xÿ…P¥’@a ÛÁø¶‹EÇX8Æ€i Œ†A(œÝ†Õô ÌC)L “ACa ¥‘€úc1aHu^SŒJ#Á@0Ì ³  È4àˆO:Æ#c0 ݾ(q8ÁT •ÌÄH(ðz,0~T&¢ÃT‚ó§0؃°Å²]iC8-&D¦cÄózøTÁ@[`8Êv'‘!úЮ?}ÿ×·ÜìWú?Ì‚X¾(kÏ¢þÜýŸ0é»ýŸÄþ/bدøïŸøÁ £S(,¦‘X` 0(Àâ°©d2§‚Ð þµCò¿wÿçû¿A¾ú3ó?„©ä÷ä_ùß?ò¤³V‹S€x~ÀµZ]E¼¿¿‡&¯/\S'€·‰¨¦š Çâ¿øÂ”}‚-Ä™›cßÚj¦5窕„’ά©åc¶Os9R¼º{q ½vº³BÅ‘Íã{Öå÷jpä/îTš.¢¨À}$Ùç˜z~¶üû1/ÍÞªªÛZÎylçüpîY ‹ÃVŒõcÕ*Ö»Ö>f5¬T¿–ø®×6êÄÁ½'´ Ù_Œw>cpóL¦\..ãåñ™^»²mÉJÇK¢tî¬ÚÉ./Ó•ôIÓôÛ6zz.;´¶¡msb}˜¤åF_ž1þ£‹M_¿y“vü¸±ôýg“øÀ kt…j‹Pg-T„ìçó^ÿð¦æ ÖÑ}ûô½¼¼|}_Ÿßô‚8·ÔÎÎÜ¢ø¥K»*©Ú¿Äè\a¡”öáØ¸¸ 4OEüaáÖÜ´´æ¤ÕûP½„ž¶¡WÙÑ8.”—Ϩ—ªÓòßhëãf¾CBëàÎIÓ‹>½-ðRøòöqƒƒÃÁƒOÕ^¿¾hÙ²³ÉÉ/;^ÝÍ(ü ðz<ǥ˗ßwtÄ26u_,èÓX–pêiû õëyxx§¤µúõ,Ä׿Kkæ™U{”+æÖÉ´´o ;vD\Ãu}v”M]%~@µmOÿ{WДmHU¾KÃryùC±±íïÞÝ­¨ˆÒ:ºsç¸MÊ1z·=_\áòõõµ¹y`©²&~È5 RÉtk6œ¸óÙ›7ÞÏŠ'<¯?çÖDbïͦžÐJ 9v+jjbââ¨:·ÅÅÑÑÑÐð>Àgü˜äØý×Y‡›Ž¤§Ë,]v¥¤yc­*ôæsï§qãÆr¶,bñ¹}ŽøÚ…K“J­*íI‹MfÕJrpÄ~17ÑpP§ÁLÛ½ûfÛ‹«ªâZ’39wµêBdÓÓw…Ý¿wïXQ89Î ÷â1Pg¯Lu-ª‘XÎ"›€ŽÖÒš¶ó¢q‘Wñ p+¹wfý­˜9BB\ ~;Œ;©Ï×ó»åyUש‘Ì'°G’ow¶wı•möcíqäÛ­™¥°¥}üÕ¶övçyW@ïÅ2_47OI~ÝÑÞ~vsÛ-É]pè‹Ã‡_ê672JéVŠî”ŽPwš7gòøùn””$ 0+ô¤ÊÉ­Ï: 6»ñc2sÅ"«Þº}Úœœœ ³Áϧîn dÊ‘(÷[ÑÔyÜW_´uõÔÕ±*çèí{™)ñ%P´ƒK'×Gÿ†‰¦†Æ¹sçN¤§÷öô8<97Ef‘ÜìËgz{{ƒ‚‚\—=®©)ÈË«ºßðò®{Ýv+òOèÚ鉇ì™:G¶³«+?? ‡€ àYóêGì6¦œóRj2§Ãã³—Ÿ9-[¶Ìtýú}ûöÖãz  ¦sÊêÎáÕû$O?|½mDzCEVw„5(/Ü<Ò‡Å÷‚Èæ)šJ3]I³Ñµ{÷œ¥®äýŸ/ù/,šazDyW<ñ§"ÄÏïo~ÖÕúJÈÜ}RÚ¡{öìrfN+9iqþm}½{ó}™ÓÆóDDZëê~ /«­Íк¯&LU’[é”îæêÚóò€GðÉÅ[w7Ù1Úe\ýÜ98ø–n0³°°Ð×§XÝŽ-Üú±øöÍH¯=”œœ4_¹r¥™ì›/'N˜ðæa–ÚÁaËmüL•4Ê\¿˜Øx%y“g¶¹Á‡ñû g¯Y±þ´X°ãÎ1¢°'0†°—;77wñZ[[ÛÌÀ°U‰‹½/ØþP`_yíí†ææ·ÐÓ­ŠEw………ëT#.£à–ë2Éå¼zJÖ©Õ¸¶ÎCÍ•Í:v>¼Üw«ª:Ë×ÄÐTW­º!Öó}S^^ÞѾŸÎÎÎk×ÔñL²Ä=^½#¥™ë¦E/_©á*M[×–ªÚ8›cņ ‡ ä€Çrb´ÖDö„ªˆs”X’ø§­òò:g,m(Ù,&Ϋq³µµŒ½w]^FûåWâK'”ßO¯âyãûÿØûË :»oí\H‡àA,Kp'Á Ü=¸»KîÜÝÝÝÝÝݽçâ¿÷Ûûœóžêêê]ÕÕóËÃC÷´1®ñ»î{®µˆPèÙ<¤$&ŒPBO°å[Ì¿z¤=+‰Í<÷š°ç¦LpSïc5µ1FqÊrã' ÄûoV¾œßWˆ>ðüúgátì¿b†®?u>úêoR4Îß•W¥ò¥Oòwñٯߨ½–D3ØìÀÞQM–ó¢5’tAJf§Ïåûxl¡ô–›=ƒ&âFî3KÀá0¿‘AÆ_‰×c©{sWÍÍÍÅú°÷(ä3,„ù¥¥£Ï!d¸Aûûûíz¦½±VyÀëß>²ÑþM ’ QNÝßÛ›ƒŸå!œžVøˆýk-ÞÅ ùŠÖOñQ.&KÑî×øÅ/5*_ügc‰Dè ;Vë(oa\GKvàþz6ø›Dö/~5þgšÿI‘•°G盳íbîrÙ)ul• 4ªm×? ºéúýËÌ$å²ßµZKK«&áýº{ºÔH9_­ÜxøÍ¼V+óÝÕqªpÐ@"¯™±è/]œPE³<þþüt=<!ä×¢¦¦9)šïßh5¸g ® Hó"õÈ>Xà÷e;ç­Ÿ-LNò-~ã:>—z5AÙ¢°‹¬}wèuêÂŸÕøì~Ú( G³Ö1¿¤$¬ªÑãêh¹¬¬Œ}ÑÝîñá¾¼¼üãúú:+++: û•µ°p;:ÿÝï˜ñÄ@|‡³­a???n§Д•­f+P!௰±O{)¨© µIÐRöþ ‡ nÂAù½–—a ?þ<º¼´25©´Ò67Ï‹WþòWŸ¶eÝ6åÛÎÚíÉz¯¢¢â-¨æ%È¥®?äà+-çon5ª¬0ôȾ¼vRU ì½3—’Jàq)Ñ{àe!3Ë=°¨=Í«SŸâÒÑE²¦9Òd5X`ÃÃ)ÕÅ¿8Zäçç‡|TTßÏuá!ñÓ³,l|à‚èÌ”™´··iÂÅ5ÔÕµy¸sIíDÔ,ýurqÑàrš‘–FIÎË3oõC .((˜­´ É6PQQôHCæ]‹ŸßseåI@v÷g£2§›ƒÊgŸ÷リbu[ ´ÂÃ~ËÍÍzS\RÒb3»¨Èz£/âäy“]Xx8ï´¨O¿¨öÆœØø­«lMÄ£ƒuDUF§‘vòU°IÎÕæ× ÁÒ%Dh«ïÃ@g'Pp^^^ÝÙÞÞÜôta2Œßn]ò˜i Ãðpì:¼Rçc½¬VzúüÜÜÓ££«­´PÄf2jJSz777å<•bf Òr®éͤHTáHb3"'¹œ4z–žÿmd,Ï ¶6//oow÷ôììWHˆß.6„Œƒ#ú}‡ÍŠºU=»ÍŠÐÔ(€ƒ¸8uMÍû“u ªpLÌ”>ÍV&¶Šs£”äº8¯|ù³¸¶¬ÖôG"ëíÇF´<ê¬P+†(dí$°€Âï^¶œ£*.üIR]b¾&ËÿpEî¾Z[[ëu®ŒÒ j1fff@‰i©©$¼®ðdnùBBmÃi¢QôêlïßÀöK/¥„$61ÉØÀõôý,!G³K¹m~j?·ãÞÖᡌ¸8§ÍJÛÞtixX˜Žé3:hãñz¸[nõ} Øÿl]K™¯uÚ\[s?jF°¦µ¯B£ÓnÐ@®d%]'K ¼c9>¡ZX-m ð ‡nÇú$CkgˆòcK¬Ô±Jûê.õë_ã©êýù+µYY]Íͺ—ó oƲå'óT±±°”öŸñ«WSæŽrr# ÀéxÙØ|jŸ©°˜??7×ÒÚÚÚÒ€’]ÁÕÕµÌZýTVSßÓÂs?2ø;e“äúÎ/‰OížÍ×GÔ“¶½‘µ¼‚pLÂ¥ òª–Ppp8¢ ü×íeC€])II‹àšà`a7“í·GÎw'å ûÀëìíìÔ‹tšï®OçççGGGa ªªª·—‡FÅ*...Ïž= + *Ö z*…B^qbY]e¶˜)úâlý‚ ¤X ”¯N¿3HÍéwt¾/ºf“̆}Iü­èüî‡õ—K¡ÒÂö·¶½‘ô»ù߯ù€Rf¦¥Áy*?G@Ïô8ß§Nr·=^†|h¹9ß) Ú®Wüåm<“Á ˆŽŽ;{e^Jk‘pn{[›Šªê3„ÇUÒÇ«• F_]IÉ>RO|LÌ቉‹³BCC.NNTTTœ—/ï®VCßüy âºuH)¯+ ?¿W‹/@‹Û܆»“Þ­-ã“·ã2 <§óªÍù5V3³9n*zrH烪I\Ý_ñK«6á"Y3!êI_jnWćšö‚: ‘¸Ô¯ÝùÜ·a €‹õŠ÷¦ŠØa„èpƒÚõþˆŒœ‰îOä%ºàw»0ßË^Ë6QÇ"ÄÀüÁ ÿc]uõ5ô‹{ïùï줥¥ííϰ©!EÏ[zHrV¢ß6 xØfPÑC‰¹;ÖmKKK7“H10€’OOOÓTm6Éø—ý3ö{ä%\c¼°V4Æø÷«ÝúyÌQ2Œ7þq’êæ¿»~ëâDU"¶]gñ§/z–sî]%Ïûgßaa%gNˆpW›%½©iiér&°{Q³é=8 4kqï­@)©×þ ëT£éxJzÍš¿L³µî×¶`CÿÒÈ;ì‡J”““ØØØ\..Ö8ì‚Ú z5JÑÙ‰‹ZÃr8þ1«I]£éúf)5ÃOÀo'óö¾ž÷¶M(s/”µ‹òåðôC@PrÒàåå%ä_z: äææ¦«€VÂmnn.‘×Md@†é©³Ì”ýÉC~=kÕØ|±Ö‰Œ{p²·÷ýñÓ«…X^]}ö÷ïß>>>ä¢!¿ÖbŠ ù;6õkœÞÞ/:ÕzÍÛÊüÔÅghÍ7ßKújd„~© „¶×}yEbÎk ¡ÅÏÛ²U¾o@,ºl&†ýÔ´?[ÉJP¥Ó [ýM¹P+BŒ¢(’ meañã>?? íQV‘îA@ðÍ”‰Š€6ÀÖ4ììx–á÷—000 [=sšéšÆ~8’ºüÀ»¾)ˆÝÛ²2cÕºH~ør±Òä9ÎHL™¡(þk`…›Ž.¯¼Üa±Á#”„ ^XXøÇ=ÊL´Jyˆðh¯ƒ|Hd|ûöí»wjµŽôîöÇ+í!ÄfÐÆë¸7u{ØX¨÷Nïrçþrq°»ÛÄÌÌíboÏ@誳šÚL'©W|X˜œ¦¦Çæq»,y§eÎy]>ƒo÷s/””OUj¯³À0šYÞ±X8´¹Z'™Í•qÙFÇRiÃ%%%ÀïÈËËWšOF² ÿ®¨¬ŒÇq/:"b¼Áã–ÍbÆPɆÓî£aV³‰"•¼ª§f2š‘¥[d<œŠC«TV^yCNN€òÜ¿5 8ø‹¹*}` ^* –Œþí|¶%].º±MöF»¡½_w)¼ûc«Ã'9v„¢Á’1vœ»S-™ß#©áÓ ¶@ƒ!bäé^¿¯‚z pØšù8ýÏÝÒ…swÝ’$¬ BTu-'¤K͉ï-b¬dÊŠ'×çõpšúEc$OÖºAßmfš³Ýz=º¿ Ym›ø'ô\—þí[Œ?r•ò{ºº¼ËóÖtJ§yHB›uq9»¸ÐŒúÿýû—‚‚¢Îõü=½Å|V%åúna#0¶´Ê’Ìb÷9²®íýßcˆ½î“–§*ŠÚv¼„‰rõÝ[¶°5ó¨«G÷2F:TP¹§Çq899···;CIA¶xmaú·þa&kóÓÔÔR< ÊМÍeÛj|?^¯óõä†C¨þ8 zh»¹Ý.>\°“’&£²½WmÒw4qXëtønÁÒ—À}¹ÔüÝÕfÈX P›!;³C' ²Ä{Ç9|o˜šAAnaT ¥L™¤DÀ+øøˆÜ´ïÞÁÂÁuï²§O}i÷}7£¶{{Ö.èrºqSE’ë¸1‹²ÿ#ƒäDžj[’õn$ÊK",¯–ÓeÖEM‚È«è†]”¡¬ê<<<$<ÎïTÕÕi’óð3Õ~ÕePb7DöoU­uÜ Uv¼·§‡Írî­Ñû<½xxª/òáðV¥”TTT  ø4JJJš…ñÔ—D9•7|ß/X…§3_ÿ"\Œb·œÃw`—ô A{ëú)kM¯0tìœìãhXttVmϘÂßUÚói&ÁÚ Þ¬ª–øOŒ˜(V¾ø–¸ëÔ~3z‘­ï‚³ WùƒHÚ+«?äéÉÞ4D6º@J^—à„ëÑ‹$Œ\` .ÝB­vùŽO IuÚ€ ²TaI*lǰEyjêLàª###T´¦-¯2ûwT.ÕñÎVé–¬{Ü{°ÇxBL1’o_¶HÛÆON^^\ô|eºzt|þעDŽf˜¢Õ —·GF?ŸVûOøˆq¿„UN cu`胛§6¯¬­­ú»»‘À¸ âaÖaNÀ\BHWy‚¦.1þñ>Á~r¡)ÏÃù‚HÖ©ížçÿ×Í\mcÙ,¥MàFñ!\ |\x×àwY_Cb‹póýš}’”©Ü#Nµ©Â×76@á!å_X\$]X‡!4¶§ñ˜ p­wóýò¢tL 8&»¾éZ'Æ=’¯ÝN‹Ô/_8íϬh[·­Ö°üòeÔœ‹ÃER|ü©©©®Õã%÷6…¶,A4 ¾Hð>333ÞÞÞSS* ¾oT„KKJ@A\ïš™)ЪßÙßG 7…öŽó¶²µHSUd.·™™™.uPû›0”ÄÄDs¶¸9A4ÖÔ¤~ÃÊòòæ €sÓælB‡\˜y©|||kq×`‡TòE¢FŒ4¿­Ì¾‡@„Þ`š_žŸ7ÏäC¼››?M™XXHáÿzC,’6ÜÅ»¦òZ¤{üwæ°1SL^JÊk**¿fÂwÍßÊÇäÁ vÊo4£^ÛÁ–kp„(+)1¨–|]¨sþ{,µ}Z¤%©8°kú¦­ˆ¬Ðk||œùqµ˜ÄOZùªt‘™™ÔÃòÊÊ¢´€‰4°.ºÃ©«°êw‹„Šþ¶(s>õEÃlú6¶[£²ÔüåÛ}ñrÑRd½ ü—_MMMå¢'7%å3pÅ»Íäd2’ÐÎÕcP´å@“—Ð6ÃÎŽ™Gåot ~DXØÉ°()+;;¿çórËÝÉÂN›¹ÖÖU€{>öÕµµ‚ÀàíííÙÚÚú ¼æñþóøþ‘†Æåáî,ê¢ó*ª±¹••6öÉɨ¿á![ÛÛßZkkj®òh¿¸=ÿ?Ü…Ñ+ÆÔÿøº sœˆ¤ä¿Ñí……àI6€Ðx[¬Rçrj(**ÊÍ LÃ[|É¿®ÊýÂE=¾…¶é#Œ W-F –• 68ìâ²(å§Ÿ©*'ß[µêìly "Î<² ]Ÿªyƒ ޾?\YaH®ª?ÿ6„VæIyÿãsÌÌ· +xHÆyî/îàW ÷¿—}@î(ôŒ¡¤“Kâ}¤L}Sù-…ÖÀÔßÅ“öµ_ÐvâûB—‹ˆ¿m,!«¸¸¸BîérΈì,EÅÅÛ{{å ˆÞ>Š|Ñ îË…¦ yþßlâç=·˜Ï8±~•Êe8þÏ›Üغ#Låpÿ3MWø·r^eÈŠ[Ⱥ?f¿ž¬–”–žèŽxRåt˜%mHôúíãƒ|ºjxÕðá‡'(®1ÌF Î'ÔÓÓÓß'$•˜ªÈO«ž¦óÂDðEb¥…Ïžl` èK'òtë{^-ûƒE‘#%%=ºoöEž¨ë¡Z·nIäˆàS"øk·òŒÉ›¥°DœS£¸ŒZÚ!¬Ž‰%àP–û/n“äcöp®›ÚõH § ë~’§-©¼¼\H]¶wgoO²@ÅåñÁã¿®ºº:ù›7©©© ½ÓÓÕÙÙH.<‰À›÷në³¶É©¿\ÌhÔ~ã~ø¶<Lˆb²šÂ6ò¢-Âh<ð7)kÕØÄÏŠw˜­-Y1Á¸ÿu?,#P—V#6p ×£óu³ÿõíÖux‰;2ÀÇû1†„Ë~XÈDÁ ¼,¸´¨hé(°Ô°ßÔÞÍãyWóçÏp’׃ªŠJ×DVV666–¸VHÞŒµí€Òäö4YËñÅWZÅYYY×0À!»]Ô;§þüùTu¸¶ŽŽæ ý(cÓ|¿©{Cˆ3:txÞãL(èèÚE:ߺ‹õ;ßÑÒæææòòð&Z˜˜\¯u‡×ðÆ”ˆ„~1'À-EEœr^–±¹¹¹¶6 Žè9UU—•¶N€ÒÀ5w£¨¨ˆŒKG†¨7ÏY]]ŒF†ø†ŠªcnNCUUU@@¯?–µP«Þ”ʽ•"x ;-ítgœÖÎÎnGsìùÕñª?vQÑûËFU$ùieUut€EÐÔÐXhôòº>1°²:t:\Hà°Y¿ohhp]¨²Ñ¿<˜V©»»Ûëñž½Œ÷ød½×l²€×açey{o/-=}?hãã¬ôôûÀÎŒ-©WZŠKH°sy“!ßlêçëë =¼Z7Ld“q„O®r!ÀRéyXl*I2ÄTù:08²§å/óûþý{|||jêÊL¹(ú `¿"&6íëWssó²òò|bi‹²’,\܉‰ @¢)sµNƒ×• m¢¹yy¡Þí\ÉÜÞ»¬ŒÅi"_Øk€7–Tv­Rô¦ùiiäïÞ©9]»h³Ú ?L³@`À¿þ !oéJJ‘®)ÉÉ_¾|ùˆáûëJyú…pëíFÏt- 11 xê¦þë››“ )Ž_ƒàVVV€CâûÚ…¡¬< º¯db.w“·ëéðÈÜh0þÓÚúºÍcÜ3vßjäÜÜq®bbh ›&&<\Ðâúl[^žüöl[°¾@}ç …©QWww6ñô7ˆL8´<0ŒÙ z%nÔp–ò,ï÷‹mmÆÆÆ_ ¹ÛŸ®ÍçfUµµFé™™µUU’ \;cÙÀ{‚XÉA Ëðiy_q;Jjk7f#988ÌÏÍÙ>5˜¦¢ÀM³±zStËgJ÷Ç0‹jhðœzÅvϽ—š~}Vâ4›>ad äÛ€$X½‰hÁ`Õ%$$ÎÏÎúúû‘|ÞÒЗ–bcc—VTH‹‰esZÌ”õDZˆÝÝÙaШ*ÊF¢§§çååÝßßGòNhê|Óæ`RTd¤%G2evö˳m`î“ ¨fSR™Ø×dA¼îÏ'/³ŸKøÑÑÑU=BGó ÈÝöTÍ^£<ן,Ðh¹É#“È#+'öñ -­Yo$ý˜™ƒ½}Õ?Øí&йGC³í­-€q11ÃÄðo’­>xäÊ$ ,p«×××`ù€†ØSë¥1œàbµ ¹ci¯ßB¯V&&&f '1£‚ˆˆÈŽIÄÞþì°ñqÁú¶Êf•ë=R4ò1¹˜a ÉÈÛY’KÒ o´„˜ÿè]ÝTÙ ¸Tb.û­LG4ºòøŽ»uÝ@w O²x¨·˜ fØ;~¡ w¹»²aff&'Oã¼Bø›y k3šü:…ÀxÐï(29¹¢£³½}¾ör¥=èÍ›7ñªxúS¿D÷WÇ‚BBB**U553­­ú{Ó ÀâeïëŒ „„h•|kÒ}¼Ú™›““µŸ’’²±±AEEÕÜÜ<ÙÓÓƒM-ݬÈÁ\5µt|VNŽZ‘Ì'  nÝýýö`€²€¿¯ÄÂÂ2›Ès9ßQ¬÷ ~nlÿŽ˜8A¹P+&.N~Ùl2?S×(?Ê“¾›¿$&æÕm÷!««¯_¬wsŠùýææf‚Ønµ#x¾Ö „;5µ<ú jÄ7ÿiÊôûiò˜ð6÷7çã¹Ê‹Õv™5ç,’ ÅƒV#ïàÔ´´Î`"Q !1±Ÿiiiyyy¿~ý –šÿ$Ø Ð9*:z&›šª*2²™™°É_Ôæk7—–Èh¡mwiÉúp¡ÞÕŒ•룚Z,—óîD>ˆs`~žÆ o¦ª®¾»µõ30í4’ˆ Ôè§JÝÄ€ƒƒ3>>ÎëvAø†‘QFDÄoFëÖĵD=¯«›sÚs52Äçße¹éøùPÊÉÕ_aàáUêµ®­}UVVnŸ­´×-Oµ4#"%EIM=¹Rký „ ÷S1æ¡¥¢üîJÿ$UiYYbm wÐz”ää@:13—Ê$ñuøÿñõÚGáää,'#ÅÀÁqXiC¢¦ÎüC.*×jØ âð×Ky¤÷Ç^~Îä8Ð*PÔ»Ú ÂE¬>‘Ë!'7×ÌÑÑÑÒ² 3Óh^d¨{!Ä£““V¦l`³ØÙ+ã¡íøaæð»R¨dâ'cÙò Î0ñðï’ü˜ÙQ†ÆÔÆ Ün/ö“ŒÁ¾¡ZC™Ã›ôÐèõ(]Nƒ¯«« dAÏȈšŠÊÐÂ"á÷ï/ܶ3e&qìV ŒŒ“ããšUÖºòØjjj®®®3³³Øð)ii‚Áñ<.'u.§IüŒôôóÖÁe,-žTŠO“[dP} éüš·³­aWj8À<¸ÿiÚ¸ùßHÓ< &ÂHõx!7o´ii«ûû††"Nˆk236˜666XddäÓÓS ¡¬¬¬ÛÒ@±êž?%2µŠªêùÖ°þpªp®R>ˆøIïÙûgÏÓxÁ ì_j8Ac ÈBããƒ[ëþîdá¦;~_‰Ÿmþ/{Ú H(í»1ñëøØØ¨?õ=/À´´Qsq±]ß!A¼Ÿ:>úy0¯È¨áìuàãFÊß#!AûÄEâ>ÆkhË>ÄË Bš”žXÏ[ÔþНÁ›ì…³Š¶~í)€NüDèÐ4¿7ã³™«,6x¨7"µ‹†ýŠ%ôôYÒ/ƧÃå—{æm×KìÛŽ&EEôt½Æ»°ÅØfŠn2DŸfã}'Ç0ŠÏn‡Zc7šU_×ìppüçæJ&P¤Å¦È_Ÿÿâ :ÕddÕJKMuf"ž×#¼ôùxAíÆ®ˆÝ:_) ~)¿¥9vRèò2¢˜›#!åü€¿¶ÔŒ"Âüéš»Öȳ!+ð³–ÙslxYÅöÇFmÏl|®3"RRÆ—Î" z»-$TæäšÅм{÷–Šª¥X*(vOøúó§s¥uŠQPëÕþóçäsóôÂBðÜÖç—‡ü…š·Nlâa;¡ŒÆ6Q…ÚA¬¬—…Zù¥–ócJ-zà,õ˜ÌDB^YßߘÚ[îKô 7x1ªW 130”fø»£<ÿþEᯜìŸñ¡/ ʤÎE/Iµw{ô ËPMKƤÃÍθèŒbîÑ£Sg3¹´ GË{‘“«š˜ˆéö,œBU¾õ bÇxn®½½§…¨hg#)¿tÀ¯9ªwïÆnÖYX/33½p0–äöÜV;Å»÷»4]ëô;ówL•Zùð€ã¾\;¬ªªŠïþz¾Gs²[8BHHH'&:J±yŠ ÂÍÛË«ã"¢;|0øO{ÓÌFÛrýhÇýq2hhÊ‹õ·}z÷ê¿íw©î.öù>5ãÎðac•dÈðo,ë˜çÝÈÓ2¨;ò±œ± ¿@<:ß§u<ÍÈ÷ñ"µK¯«[ùÌf»cŽ¢AK?¿ûp_©«+ŽNRGŽ(ðéSª›SJjjϯ_…âŸÅ‚_q~ÔO®¹iúCŽ`¿W j8Û'¨U]]å0‡«œ7Êžœž"!%p– i{9‹æ+ªªzœ|D®‹ò<­"ñå˵8^õüö É0 £A>ñ°II¹ƒ¹úd2ƒþ’†¬Ÿ0`aïê]®®¦ÐˆßÍW85'ˆ…ýœjäϺèîì“ণ»;œGð¼{ TÅCEENLLOUu|(åÞëVJD£N]mf2Š‘÷åß/›l¢!w•þòªª;FüF v4iBï9=|oCÊû¹Á~ÛÆùŠèÇᰰžšÌÃ,¬­Å]èôÆ‹‹ ÀÛÙ6LŽÝeúÿî¦0x5¾rðxwºr}ú‹Ûi¢·ö³ËñÊ ‹ý×Ñ¿ãÞ?Þ²319L¨ö'9ågëWøšn¯?‰€@ÛÀÀëÃû«þ>I­¡°j>l#!MÓÐhïœ[çduçÁ@8PždñÏïßëë8÷ƒüŒW×TTiQ ã¯¸Êø?a°²æ §=^Ý”G“!zz6ëã &i/È:0Òdp›Ù´Ö„!ÂÀþáîmjQ‘¤”Tó”ÊxÛWûzê·ïcX··µ‰.¬å. 8åpyã!MhYO5D·¸«3T~ Ñã%ɃÈçÏæË-6‘ÆÎ"é5±”dM ÇǪ¸¸$””Ї‘&zL5×}ÞÞÊllÊîî’ñY¼¹@î/ùë²”ÕOŽ?ˆ…½âQÙ£ÉÕm½©4òÔRTT¼iRÃÚZOø™Ý™±‹¼ü¹j©Èù޴ت%È ww*ÅílÈ4îì‘\\ÚÙ-Û4ê®8Ø+­WÚšƒpƒ“ø<(øù‰Ì*&$ĺ˜Ø#"öïõfÔ eeT\4ÓÈûsêM ŒÏϵhj()*>ZÁ} Ýš­Ü¼9÷ÃÅÕ¯^#_1LOp:l¸¸ô:_jæá»=*:TøA·eÉ0Ñf±È_^RØcPÝžì v¸çÆW1±Ô¬¬ßÙÙ7=jcôª„TU#¾}³[là-ÔTßÊßàÿ)0ðE½K©ŒXV÷@}œÇÁ‚ÇýÖð„V}M9óÇ/_êÊÏ…w:a``ø@s¹^ÐÕ‹U%&TTQÁ}ùòpŸøt¥ÝÎ5.Æ$:ά«§ÂÚM‘ªtcVæ1÷l¨ ²ï-|Îò66?sO7Éë{‰9m›R…W7û‰Èß¼s*¸™(l$yï|¸ñpߎ䃈,QR~˶Ϯavp@·Zà™ïñÏ?t0QY8ÕÔ;]óYˆ¨Õ¡ LaOoÌÍMk?«½ƒÅu«ƒGÿãÑ=·+Ì“!·7TÀÞèüá{%%Åš—O]éŒÌ`fê{¥U¡…Çä[ñ°LäŸ&œ–ljpp#Ëœ§—–Îß½ƒ›ªù‚§  Âóf¦—–ëÝ»t«ÅÄÓlFÍqM‡i€”¸_"H@o5LO¢v]¤²Vïf•‚k-ñìÕvl<†W“7Ì:eA¡ƒ±œ£·Ž«´åêQ•N}Á 00!i"6©º¶7gúÀ¸ryy LìÄò¹w]ž6xÞ«ÚØ´—™4B÷å}Šf(CÞ¸zfNΫƒ€MáÐ=üh$§ p°Š½»}MÆ^ùEÆj*G-6ö;·ò­ª‰Iú·o¥ñI¹ÊÊå|.––)!Ë×§¬W­¾ùǦ?ü´jÎî¸w­oBòsrr<ö×qˆÁÐeeGZôöZ~¬¶·ÏÞ&Õö¬®–‚úˆF<“”ÍÃ&‰§Þ7ÿýk·=²êõàòúm—‘iN±iÄ…7Lý6Ú8îî„f­Óa½[%¥[…-^=ýãÍU19y'ÉÎǰ))Ay{Œ›ËgÄÔÿþ¹W»_wŸï"úDóºiôôÜO9å×ïx{w‚ Ö™‹ºÎMã*t'ó“^÷çGÛ£eÚ^Zæ#sÕ¦ YH¥$;Žø<¾î^žœ.Ôœwä«;ò»ñß;ÖØQëŽçabª?G\Y«ÑT²YyYŠŒ—ÊÄŒ Y³X@]B"ƃz̵Áë1† ¨ ½ÖSRKDD*¹ºuÆóÞ¾e.Õéù»¬€M5Ÿ2“ž•¥!ºyÔð}n·Â³”¯šÿHºá»{'ò ³—âa\\þ“¹û|Z%œlèp¯¯lz¦KC[Zß¾£ÓÌ©Öi®RâC¯çã]]eÎþÌÈÆ–VT„%zóh‰ @|N %yy¦’Šn·4u6] ¦ c·?Òç7æRt?Cæá÷x‡‚:/Ö›ÖW éVã°ÛO-ÿõ+Wg¿˜K_{ˆÍµÝ[…®Ó–5ÛŠŠ”Êû ëŽv¦V=½T÷Ð .’<—{®Í¾„‡‡Â¶öZ‡*æXƒwWø„7®Ýav›ƒŒÌ,wùçnšUÕfQÚ½É5Ñq˜Ì¨$§Œ¾þ+1›¤Sƒ…|¸¾¦„æ¿õë’ª*½""baaq4#ã2y­ôss(¾X#Aw÷cc >[Þce,0Oeñ9zᇋöhÛ;hv61‹7õ`³ÎÎBòÔÒëMFYÀo¢‡ †Ïw3G8RÝÛ?|Üi 8:;+tumÝÛ?ïøE ¦Œíƒú©Ì‘‘ÏÚ‹QFx·>íYf½GœÛ²À¿PóB­TÀ~‘ cµìƒZ³•#ÝáèÒql'C¯G'#bct–Ì2;)3{Aicaq<œÒ­³ß¦¨)mòªs‹rÛóë÷üL«TÄéá®ÖÝÞÿ&”Q; «$v{ù“/}è9ÜVìSÏ›BÂéÎÎs^Gdªªª¦ç¦ œvc[ûœkÞŠ¹ ¾ÓEÑ—•Z¾Nàãa,^:­%&%Ä? ¡{^c_ ù¨Y­ª]¬õ¼)+»Ë‰]uQ2îÇïq{¡ û'í¯Ãù·üÆ4:‹/”¦BjLsͦz£HÇÇf¦·mZ#^aàãWºžXŽÇÆöä/š]Z>öF%ùúY®å(‡’"SIÏ9ݜ鑓ãÔ”~\’Ëïr²LTìqÈÉ!ÃïEõxñ¯d@6m­úŽbMô$>"cšš­àõ“£DKï…¥¤¾|y%§¡‘’ïñEÙik8m#qw8m d£¦]_ߨtT¾E$çåªhLa!ïü§dNNÎÅùùCÍú›2/¯c‡]”ÅÕÍÃW™ê» Û¾Þ]ÉNäÇ -3)¤û“H{O<ÝA4—ýòÅöXoìúT³Q×-Íy:÷KQ‹iÛÕ‹ý+ÑЊò‡œ«ÅÏçgh¹¹èWÉ„›kg4á™§´žÞÅBý·?3¥‰—×¾²8½œà â'$„s;_ _†£A‰¥ŒøINây\ùø$$Ì~Ößÿ À®¾¬Ã6r¿ú]˜ëæ¼*Ò $&Ž›4‰Õ"ùÓ{້yMÈšØõ;l>}òôòB88d˜­e?JòÒjkÛ[zÈúòuív¾n¡ážÅ($6<üáƒTT¤åú—-pCC~þ¤09íœAtê£ÿX4\ WI‹½áÔ‡ééëÛÛ¨vöc¤¼j‰_4šçæÈù9(¾ 2ó:˜'ºšÔî3…ñ$ °©ÙÜ’Bôm-U”Œ…’ûööêØm~¯?ž3ð€n—×åÖñ®Áã“v#.£:[w³îçÁÄ7öþzQ Óñp"Òü±‰ apÅ9&ˆBŒÜß}Íg6ñ–››×ÀàÎùŒ‘4iê|·ðú–›åq Áá|$Tö$' q5U©¹J+ê7Ž¾ë½ƒ^÷jXKAìÕ¾ØEW:g¦¢¿kÌ^’º~ùóîøþò¯à~±Ï=ÙÙº@DŸÂÏ8?,¬gw2©ºvñö¡Þ|Crü|5¶¦ Ïìæ"_Ab·)O5í?Îî¿ÏìÇö=–L´“!Ú.·ß^î¿äÕ%ÍŒ­ñ÷·"dËãŸWMÖlð åµ¥˜ê¥u]›®wÛ)êôfàXvЧegÚYv0™‹Ž -/Ûvz[PjÐ\TôϽ’mqSi6RÕŠ›Ÿ±H÷~0AŠö™[ßFA-=ÇoÐS4_k룩éÂ@B:)AöÞ k®——M öpò5‰4*ª°Ë5Ÿ½¼1ÁÓt¥/œd vx J ª•”é"õ.§ÝMMX‚ªí:YøK,Õ onÈ4Õ†·¹ãÔ«27¿+>``a%s#ÛÿC$æv?= ²0·ßÛÏ´_/4¯'˜,,U¥þhˆúlÛ»˜ÔÓsJJCý4}ÝÒBB¿¾Ì™-ð\ö|6üè­ŠÇHIeH„ÏÁ~Aòü{<‹øô´KÃ/”ʤZrÄ•ÓMÒZ¨ƒPHýFŸœäÈgÔÖ..jß-}’—êo¶§^yµ¼ƒ=7~$ÒKjO~¿áï_Æ‚]4kë·[ƒ‰¼„üU,Œïß[žïô~ûB¿Àa¿ØÌlDò>†Õýâ2ÒÝqgÞäN‡TnuµÄìì×^;ûC4_¼‹W•Œ¡øYëØ¿3š‰0P%an$)ÙFÙÓ›[ã„G6_q;˜8÷-5P›dÔ§ÈöêîNEàú¦AAnÇÌ,w¶ôóÂ爈q55„Ž`y[Í¡•%W‹wwÜ ¡ñûó-ÙSÏ{®éô_P©æp¼=J<ç•BVöIE%,|”_X‡ˆA- ´pôná[¸ÚÞò+n%YIÉ¿ÑC?žNøý¬´²ãå9¸½ixÅ£ÒÓ!b4ðŠÕÓsÌ!ßöÎ9«öö>+Ë‚~Á$CK=Ãâ5˜Ø‚€KHäÔ³!BU*"µJ)Á2YȶºHØÅ%"H"+Ó¨-KöÄ=nyØšÞ´Á_^P Ô-Ž2Xu轃­…ºëµB`îw ï• 'b¸P<Å]U‹fÙö®¿‰àOC¶ÐÈß5z ®ÚÚÙ©SÜEÀ¬€FÊv¿u𪫛ÊëaÛkSZÀþÌñ.aY7 `:Žý¶Dæ„’Õ¾Ú}{eDÒ°ÁOº¥©,'§îüåËÝPÊHHȈȻ„­TF]+/V6¶ÕåÖü–úÇ.‰r°µ—Û£÷WÇÏff9~ÿΗ“?-+C»ºš26}h*+Ãϸ8Ktü¡Ùvƒ†SYTˆ°FJÉp¬<ŸW3x!ºÃö ô À,(¶7‡^§—ðrl4Q'Œ¥x8W7·Â…F¯…ö ÙçϬì3F‡!u¨ÐBÍèv{^~N©¯?YRòŽ”4ŽˆÝœ•åå6Ú³ºŽ.1V–ì¼¼À²&Î1ñºÛËÊŸANqV§@ý±þü›š‹KR‡ ëjêÚ±LëÆÒ—QJðϹV üš¨@À**Žƒù¥s#ZLJÌn5c9g\e$Óäó,Q»áåpbr® @Â&39¹¦u1Ó¨ÑÌ|X8âa$sJši»9Žöd2#GaP+*\.`mí’ÒtzãÍð4î>º©ºiQåKk=½ Eç+*}}EKg_M ??ÆNÝÌð˜˜jû푤™tù:Uròñ¢"v㽑ÐHt¤éäìì:çãiþ‡#}&õ*t8„>µrIwª|hNxãA\_Þî±Ôh›á´:³ ר7’þ•–¬€@ê5LDDDEEÜs <Îãmù×¥x_½'"y_»dtR 9{Ë$>œƒ©åÜìêÇåÖµûÛMÀnÓc IIè‡è$kGÏž=ëGWiôôòMJÒ–““«´œÏËÏŸ&$ca±ßËþ¯Cg ì³™2¡6«ÏS8±7ú‰°±JÊÊLwÆÒÐIêÒ¸¥7ýà [á ñî$=q£•€Å¸7K¶@±†¢¢”2–<´âú{Öfß HHìîÏVªƒ5®´JŠŒT²µµýüùÅyïÌÌŸššš11‡sÍZGY"å U5µý}zé`{[Û‘‰ ÏÇ0èÃòòr§ƒ9U§öŒçÿ€ÿ‰ˆ…»»»CAEsÁ{:]•’²|¾;´û¼Êz¹%‚VY,lí]Âd}2JîË&&WþƨüWè<‡À!ØÚIJÍ7zÒgp#+]\Xö.pèÈ™¢CçW$ؚƪ´÷À¿œ`Ù©ï+<¶†eQ SÙeÜrj«ª8vÌÍ÷š¾ÁÁ`caeуYJ¿b1Æ(ÿ@KDÑ;ó'00ÐÁ(‹X•(mæoNÎ;åëWWW† ÂÐCnjµÅ–Þ@#=o/‚)ļJÿ&刅±°_ªTŸìv º¯´FðÊÉ}Œ‰Ž–r½)ϬÙíAL¼–œ‚깑¢|ë DgVÇ=áö~·ËçW²"NoÂ̵”o{FFä0¡íÏ ½Aÿ¯l%*y®v/‘ŸÎÄYüAøMA€‰ùÁ~ë‹„DïÜÜÜÆâ†¦¨¨È¨%.P\üá<öv‘nÝ(·P *aYzIØô¦÷&Î˿ѱ‰rr3¯^¾uÂýCKY–Íe„@±C, Ybd’_Ïh3==ýn- <<üOt´q¯›mååá¢<ãB½5###-m\lìg qà}L¿‚}ÏžD=Dœiôzœ!)j*ÊÆß488ØÓÓ3:zz²Þ ²ÀÌÃÐô2çå˼J+1±Ÿ))¯Ïkäë¦Ù¢¹„LLÖG3MèÑ0¤9L¨ª«üR/ßæƒ" ÷h&•–ô½:³—ѵ$ÇÓcå _îü7Å”¨„çGË­þýÿþµm¡˜ÈWŠƒÖ××7yjFFQaaa‰‰Z‡‰“ŽŽŽÝÝÝ…ÚZ¥†ý-?ãb‡ZZZøX¡m¼¹9Åq-””?–Ê›ó]âW¯(()ïe˜cˆ¨LL¡'ãÀŸ¦VزÏ>gbjD!~GŒë·ù¦Éëèôtšùvèõ( Ò©) ÆN;L/5e>“£¤W|nˆHþÙθ¨ü¨üȈYŸ´Í>%íþvßÙñ1ô”ÊïßÖÖÖYOM¥Ò2Á×·í÷kA=®g[²Ü'sÕv/^¼ÀÂÂsÚ°æ¥n`ª1==-þÔ898¾÷÷õÕ8&&&.ly&ñW>p막j–P(x¯­}…ƒû> „„†6FäÝý'ý΃ëlÍä]ç‹+kj{ràÒ¶¾_Ø:®ÃQ ºSí ½í'³ñ|ñîý—±Ảˆߵl®ÂB› %•[6¼¯¯ÑçèøØäQè#`ž““øOÔÔ2I| ¦ùºï«ÖÕ¨–¡‰Þ:y j{GG&¦ºJJ£ RÕ×eÚÜÆžÞ--Z´üÅëŽYww÷¾þ~îµEŽKRAŽ$ß[~lGcç¿"FT^w÷uƒå<+q‚`v¶ #:ŠFoºf'Hã’ÒÒ^к»§K ‚æ¦~ú/îþ ãmm ßBƒÕø,+{r±_ˆUj”ô+¤ƒ2Ö¢­µó7[«‘ôðAÎg Ú„A*). œÛ¥¦º¡!Ô››Öm´vYn§ƒ—xxÊJJJòòá¿OUÛQ—ÏÏÌĆ%?øÓN…Ɖáô·ÐД´SZ†úï†`Ï÷•eïr´o{{sÔ¬ÚÖ°EYîƒ)¨ZcN!fLʆ‡l½Œî#´:Œ&õ‰é#TWŸ -ÿá ÂZx*I#ËB{q¶rU¹°áic-H•½îguÞÝóµp‰eV‹´¹Hö˾h{}ðÉ,<ŸbIÉ g¹¯k·šµw##'}ý¬– ß’ü¾ä¿£ÞôþÖj³ŸHÐ wIëéÜ”*o…EmLÄyw÷Ï!Hz~òìgè`,÷åÚÝu&z¤ë™ñìr«¡fJYo_ŸFý¶ÌþÈÑ¡áÓîPÞw¯_ÿ ;‘—/ß]:2šª¯=º:þ\u†¦Ö:¡tØ…Y:šI^aY߬·ü×Í!›ü}ËÍ7¡Ñ«j¨Y*“IzÁnuóaUÅÀ ¼°0!sSjƒýW0r\hn3¼~=|çÝÓóY]}îùÏ  ¸¸¸Íõõb‡yWt# H>|øŽ€þ]›TÚ.ã­vî/*T§Ïdv?Úê@¢¦ë½kŸê¤ì’Cžk§/ƒüÆš9jh_¹:‡—Š4 8Çò婤ç.¯lrsé$§ùù½™Oáx÷ô0­KNN¾†Ù, ýù$¿ÄçÏ;@~D5MÇj¿˜.6Ò¾{8Sn¼æT¿ƒç0ìù«ÛÞŽóá=·æ&¶ö Þû{íé­ìÃab§1n*{°"ÔFfÎ_ æ[®[™ .TZ‡É¬®.µ3tÑí@c­#Ø3.8X±V­SÂÓÓóò`^XX8Fr£#˜(ýß??, Œ/•”oßOéí솃ƒ3vA«\ÐÕÛ Æ™Èï•8#§¥u°´4T¨ÍDRTä΋¹ÉBm‘48DD$¤é2“pPýúUZj=y÷ŸÃ¤Ï¿Û<>x¸¸¸¼s߯97ÌõÀÄÂbúÚ…!.ތǀŸ’—'¹/ì`ÈV#”fºé~´Ôœ%›&$,ìB`»9@ìC¶ã{Îr‡2ýYº`°é[X( ¥ýj8õ£ërËI­“öì´KJ“YÖ½h&ƒ3¼å¦9: >¯kPÆÔÔ•r³IS£×ó0µÿþK©ª «R•§t®,-¹_ÛîÈ€iÖ8ì^ìŒçÖÔ¾éËW¯ìéê“4²:_ y\YkƒÔd MbSí…‡ÏyÜæ“ò÷l…Œþ‘”‚6uÎ+P"ì¼·]lðPSSµƒ††fŒ1,þÓÖÎôcøø´45=& 4Ç:ÌDFFCðFž¾¬¼|”Ň{7 ‹ýn'9r0tûàJªÓIIII))ºO‹jJ/(Ø B öyÙÁmIe%#Ñ££«õ(í{y Vœs‘ŽÖVrvöKP7¢næUºµ±zîìªVX°£ &ÌV0Ú«gn¡Z¾ó&\UÐ)2ds~#©~ÖË~ÇGtÉq€Šž¾Þ|ºdoÏ R¿%==½©*j0X¦°`âT¢ç«#Ý$>hI*ñ0--­Vt£b8Rë22Œ¼¼¼\\jZZ óóõ׊2ÿ1›+€ ¾˜‚ûÛÂÒòú°„ûàâÃLÏ›$ ›•V‹ba JJÒbbÉl“÷ øxx¢õ!ÁÁÄÿ74V«”÷॥%  nçXl„ÉÙå¦ì5@{þEZ^Ñ7^—¡f¦juõô$ò¸”Zo×ÃÁëŒþ·l4E¸Ÿ}àóûë× €@eN[%Y°Vë=ÈÀºÙmëìç̸ü׊@?ú1, 7è|­;<ƒ/ýBX~îANnîíù®Óáoô£&A0»~ƒ¢$6vöäðððòòrpC¡+ÔÑXwmþˆcséíÊcfâÂ%Š“vzåhr/óHIIÙÑÑ1f…»Å%9 ú132ÓʨÈÈÀŸ?¿™y5«rË©¨TA›E™ÙCÄà ú£•—•H)~RØøÊ¥ÚB<«à1‘ZTβy9p;¨–|Ìò²P83²° §¤d5›ÈS.Ôb/-áo0–qPVP` ®|M¶¤8ëè_°w¼ú’2½¿¢BÙÔT…>ô€gFu¾|skŒ5´i?&˜¢{jJãñj'£zE^»LöÂA0ÉÎdžª¾™X åׯ_çH ý««‹¿G ¾ß(ùû‡V£A¾X–í&PTB‰KQ4¸ û>Ö3RP´ ýv¥ÿ8ÖKKHärï»0öüp1Éuþ(̈ÉßaarÜ%×0@Ø@ Ũ}0YHú ƒV)/¹˜Ïã¦,"•ÔMÅjدt|eÕì€È²•26&0,*Êéælðß3d\:µ²¬˜nšøÆ®R#™?È„D6jšà¨$ñíW““¯ögS¸‘ñL‡³ÍH¾Í2}ÂWT^îqwU\[ë&ŸVWçÞJ§–ywwwu5-;›†–VýPð1¿ûÕÇz4tô˳3óû>‡§ibÀMª©AßQlaÁ{}¬O-/ïPƒmƒìåõ¨Zj([Òlo@òÈèèî¼ØÌÀ''ô}ß`ËT¡Ç¡KUUT¦fg3Ÿ>’‹ƒc,äîxUTN,L£Ñ³þû÷ïÀ`Ö>špص‚5PTÞ¯±¥ÜQö>]"ªÁýàvÔÈȈŸø@"ïl¢±€º[W«Uñ‹²K£™ù|ŽtèæRyE3 \ ê l6,,,€ÊZÇý7ˆ>5ïBÉ~:ìNPRSSSQÍ€pPSc;§a·ù'>>>У Vy¿hõ`r···A¹eccif³Ñq¿·Í+|î‰z†,}yØh9žÄã ™¦6]­¬¨h £óåú±q»ù€ ð™¾þÞ€CÖ>ü§xn'éOŸ> ´ „ìÈfßæç\8¨ªÆ$$$ü}j߿ñŽôõåO :F»º»¶ Z„'BÚRs¸Ì¯µ¬ŸÞ©76ÕO“`áW´¶éúýÇŠ $|îSïÅÓ‚Â^íõQˆŸL—²˜l—hÏòÀÙÛD1òGFjÝNj£o£|˜™Ž™ÞH“öw’¶Ò®µ³íQ£&oTTT«ÁiÏo¯®ÞÒЈ‹‰}qª ˆ³èÊó:ß>cTþñ“[QQQšl–…Zõ5%%%Ç/ÇJ'S=ƒx³Ý§ím ×F1£Q• š;œ3Œù›Š`ø††Êìã``$§¦ °–ýFï é½7~(rƒXŽVZåï˜N-KKKw()as±àÙ¿.(Ð Oâ2à´Ûx[SZZ]í2‹ÆDìl¿óFTgfQ: $Ÿû•5jHlѲ,!”î,”5ûON'Æx0^¾¬ôz¬›­œtÌ)è³ÙÛÛ,–¢Â|ZOOOÀé2 LƒÍêߣ1nctQÑûõÞò½ýBáeÂoäïéýƒèæ£Ñvýsôáor0 ¿4ë{kGۛζ¯gi¢³¸ô„ƒƒ¡ßMs÷æªå54 ï¿W@@os aÌÑÌÌÌõû0‰÷¥± ¨púØØÒòØ£×݇Þ.1ƒöÀ {#ÝÂäd2}'\G[cÂ!Me ®‰¼nl†}ѽ‘R‰<1ùÈ6«4ôYjó÷J«w>“°“DÞÒˆˆÛᄟlû{sp “…VŸ{ð,ö¿Cì‡>p÷ŒɫªòZ%ºyzïÏîº^H;ų™ÊQ}LŠA‚ 1¬¯+ ¼Æ¦>p»>Y ¥­¯·¨±5AJmþžþ/½}8iŸ‚ŽÎúá®ìS @ûšUˆ5#ôîwþúæ¥m‹ï½×ýyWw7ǽ Ä…÷5Ø0ö°ØÔh!Òf.¯>–RPºiÕUñ¼~m¶;go³ôtÀE †‘á†.pè™ìgÝØ™8´eðÏ®·Ñž qþ"Ê<»»Fˆ·úvAħ±Ñ ¼°0È ñ3•=ã5ø"£Ôîgâ«ÅÏww{¡$¬‡uQî!½;çô““__ºšïÆh¶ýJ©¸Œý™u"œ'\ˆ%ÅÓûø ç®ôý­À¢dHùMLpÁÂ^«ƒÐ¶œ«úäô‡ìgKËgLLLL¶D¥ü=Lø×c¼°_¼xçz‰køŸ˜‰ˆû«*þûä„p”Woi(Çi¹¸ÀΧ |RÞ\zOICÓ9pðYeŠJ¼;ѾóÚDö ~Ð`ha&ñ?N5òomôo;f5_²»¨ ¤ñYIéÐïo-ǯæ%<Œ-r2²×oßÒPŒE%i‡…ÊdåÑw†ºí©ŸEibÂß×zÝf®lâíÎ:)jÉþQ“ý£¤!67UËáywu!Ãd¯goŸ“ u› «óŸ×ÏoÀlB£Ás>›7P0ÜÇÞ‘pTGE®¢&<˜0%þè¾X‰(R.{Q¹’͇{;j™‡ˆ¡£ÂBí Åºk ^§ý™mmy¿~Ýí˜â’’ JõÇJâã=X˜oj«+*Ú«\tÄ€ÇOÐÞœáö¶qes37ûµ°üÙ™ŸTÜE\âÂô¤¦—míõI8¯ìBÃ|(öÒìÊj©á€½fãBÓ°lÒDúŒm{û™ÃÆEPÔš&”&<c …¹]ÐÍOs®õÇÅ[-ö ú€Ô×)V)—é4,î |AF§¢²ts>nÎÛKˆ!Zø"°²$vè ˜)8Dºñ5bIªVþ«ø¾99se&Rqlr²²%÷¹ÖßW#€Ön+›Æ|„ˆ3[It¸@œœ‘‘œÍ}À™ƒm€ƒ!útõÒ:ZWqY%ÖÆk$! W˜Oéü ‘p¿QÀ!áÿé}Ìxyº&ýóïW»…é­þ½E¬ÝÁDÅt¸ÝzØ­:»|õôR--‘Í܌ՌÝjð8Coiû"Ý^î#ˆî³}~ñ{ëøÌ„kþ“wfžJJz!ÿÜðñ!ȇíØ&zÀq•;õ 'ÔÔnÓRåBH+«ìM~ÄkÖ6?2 8Ÿµbê·?û€ÿ‹×mcgÍÀì0¬Ú wbaâaŒZî} ¯GMMPcø½ò¼›¼àÃ(›=¯ŽÎûb¨¨¨54»líußãëw¾Í!†w~ñ½ÙÚ&f°³S¥ò€p^Rõ ðôÖvipp(7ç½¾i&Auÿ˜BÂÐÒïÍS^ZRR«Ô…WWøŽŽ®‘’_Pø£ÜÝ=G×67‘Q~ífÅ<Þ É•P“j¯: |e2B‘!C:-Û;lòÝhp„0Ñé™1ºÍ±%µ CÓa0±qr)ô±…¦‚‹ËxƒÇ§ÑLRlLLÔù*£Á½ƒù@j‚ååå‡F‰&ŽNîîîF3CçJ ¸˜æêzõîÝdzc •ÞN§ùm*I•kÉQù£í/þW¿O‡ãm·Ñ`ë ÷TÚÓ%¨÷§lvO7IÆ%“BgØÒF%Åe½?3ªßI÷pÝiÙõÛÓžÚ‡ÊãV©Æb¶ß}q|–ámWf×9©„óÙÙ.‡ ôMbaî— —÷·ƒÄ¬57M 8:&½@<"Âÿµõûjž ú¿ÏpW Yva˜€É›Ø#ÀœÝ2¡/6@N$G€¾7¾&úî Á?7/IQ^ÞùÊz·ÎEK^JïÉŽ——¡ùúR̲Ovˆd^4+ÁºËÉÕ3hi0ÐõÄ-^Ý4d9™Ä'“yíÓ³p·]ì‹ØÚz\]?záìô£‘2ŒN[e ,¯êgå¢ÿ îOæF<"“•MIíom]¼ºm„jv?4ñ°ðñÙ]Nš»ºþžnF¹¸2<=½Nÿóçðü<”‹óžÙ­bæ?ÕÊŠ_XCão³ÎÑ)³ëFƒMk¤¾vs{’²òã¦ìª¤ap¥“$„¦€, ‰üqRø½23;B”òœ,ò°qþh|§&\l*”’²W‡kg2žžH · u¼Æ·¯9h”-*S†”äÐ{ ö§p9¹:5û޹9A­™¯k¼n†—{4B—-³•ƒ 1’’{{Õ´+Ù‚ƒzûzn&¬Ý¤.}}÷Ð4¶*¿îïeÉ;º»ÿZôb¿9• ÷†tîíYÉg¼òo2RcéòÔmºØ,_Û*ù…8†odäÉÎx8’ÏYë˃çRRë?÷¦–{¿N”½†'¯±äöð*óЛ¬7Ÿ³ubãc.µÌÑêV ~Ýp?:d(«ÒŠßbnëþÆa G1œÝ¢®§/\z7Mô»°ðvó÷*E:¯"Fép³SKJ““µ êk;; ê ‹ë<âjÝ*»ÃƒvΪ0kvûSÓyyòž£lÍ£µ ûöítª8°Öi0ÄD/su5?((CÅïa¸ïê ªªû{¯ôŒ·Þ5‘âV ww#¦O¾@–™à«òòú¾ÞÖÕe„¼6Bösjê— ßë×ß\Á4o/òÏ®OщkW†RF& ò-ÅS²³]­j7˜Œj€œår” !`6\ Â#Ý’†©3L䤡Ñ.Ðtƒ¾¹ÒuɈ²ôi01Ýjfí~]b8„˜9Š>®7v,<ìd=”ÿîÍ›…í]ôË‹Šåy¹ž¹ÝI"%%ùG¼(qh}yužÔÒ þáÊèážÃíÅ3zU[Ëéqn§ó+” 솿|¢&ÃONÞÉʾ®)…XÉ}ù­R"t:”ÂÍl”0BŒà= 8žô¬¬•®?KÈxoüIxŒg9@ZÙ,6FÕTùjÕá³êùö%yÅ¿IÈRÌËgÄ„_Þ®Ž^Àÿô阈]KùËo™ÏŸ>ù,¼ç§d.Õ™«ªoh¸Ðït )ä°^ǦÚcf–_¬¶Ãéà @»‰»¥uÑØŒÅÝáæl¥7J9µlUZÒ°º4´#tÑíÖñîÜ©å¢Ö¤êgîݯÿl7\qƒ t–æ–ui9«ùääôŒà+°°±ç«lfªíþlokC — €Co¼—xÊæSKç“ÿÄ{ÐI-Y™äR¸1YBjÚš¾ÍFFbggN¥XUX¼Ä¡üî3c25ãÊÉ¡AÏX˜Ê-kLB¿¸ŒG ;Vj<ì,,Ü-è0D ï= •¡L<ìpK¥W¸7{Óé Îºïˆ8½1nÛä´ÛLÔ(Y›³jìæs.jšaL âˆ0tŽVN÷¯^ÁÁ®ŒŒœlà‘|š—·PÉØÕÖ&%] #Ô¶!Ô1š€Hˆ‰ù/Ýa ìðlää•1±9ÌøUm!šY|e»“zúÌgç¡ÀÅÿ9’ÂÂÄTP:åU‡õÎÿ¬ˆ€i뀚Ôn3¹Î[únfÃWµî×Ç f ´4)郉ômÚÚö8í¤@^€a‚p°eÚY Žš²ñþ¿¨HêógÍ>N—‹=ò­?99À{áÎÓx_0·pððÐ^Ùˆrxê"­&výÀsph(ÝÍi¹Ö‰N…dÓ§ª?ŠQ8ŽýV2É3¯$lûÐêp»ZEé¯FÐ ‹Œ¤Ü£ö8‘F"*‘‘Ž.[–\A¡­ÓHQ¹t H÷`Û×2@SšÐÝxÎOD@ìäØPërÊ¢­};p¿Yà]Ó&-±ÛTïf¥©±ð,Ÿ˜ùyÔÔð÷f€lë»fšiDõôF¶¥’À,\\MwðÀ®nn¦I/®oF %<óƆV†Jýâ®R#R|ä'?~X”•·bTI©¨Œü‡Þ«©7¸Xíl\Åâ¶|ïZæ4m¹Õ`£ßÎÉM·¸*KâtR;½Ö;0TԎʺ%žÓt¾I³ñú9<ñPP¨šñG¿.5¬>˜'ªsàçG LoÀò(&ÖË{ÛF¹© ð‡Ö炘˜ŸI6z^§ß¶õ:įoàòy5@ßlO}ƒ÷t^©ªø…µßÏŸÉÙÙ7é¡f¦C((uБ°†ž©Ì–URRZ¬¯Õí'Ôôô|URÕÅÈŸ%±ü‡7Af°‰ ÕîÍØoßB¦§' Õ¥q7Ї¹¿'¶îIMâñ\ô‚\4‡~†4Ñ_ îÔ?çnþehæµàÍp⃶ð³Ñùû°R‹^n{ÑÂ:Éi±±°ó)Éœä¢hˆ¨óÀQ§ 9î0™mI eåôÔ{Üf—”Ä Q¾}+&Ïqu²Þ ²E‡û鳯.w3ò÷#ÂÂnmƒ°F»Ûq±_ùâÅgssû½½ DäÕ[±Í¡4ÿ¢ÚÚõµîFËYÇÓõ^t.€£ŒûÒr¸¼»óÄ?÷ðª%và9Ðiñ4ÏÜÈÂÔ{ÂL¡çãô…ýK ‰< nR:±r@è ÓÎbûíêb}œ$žéÝï¯?×JwŽ)ðr8{?³ÛKûö͆…JöËï­ñ\"Ë<ØWú:Gê‹ zÊ…|é õžÞigy¼-J·\DãcEdV7æ`ARôEÛäedt,.÷[è.6ðX¶`q.KàÞ•’bU*l¨öY‡·þÊsý¶Ÿââœeyhš¿½!‹€-ïî´Â(ðæùq“[¡`¼Š‡ê°@­WbæÒêêzæï#'£¦žÁsäd§„ŒbãâN•]Ä0YÍýdes¼?z‰HbéXN;¥‰Ê*Žøϵü@¬+É6Ï·:]ŸœÊg  #M¿×óE™ðŒ¢»©©ª;˜×ô?w/yÚC:û¢S°p+dÅ~zå©´¬_r÷ÖmýºÐпî§^÷ï(“MßÂ>}²¿ €+‚N–·=Ù$`™¯Â\]Ö]ߨ(‚ž¿Ã†ù„!¤¡‘ÐD× Â³èv‚$ëþ~!¨B´¹+k;ä"] ŠŠ™éë6¶²[+¿~)ÜÝk§pb;ãC¯Œ f4ÈÇtÅqÀÃqÿw3òYØOüD$Ñô޲p$n>E˜©BÉ|AMÔ®mÝŸÀ0ܲdáŸlnˆâb¹j e’R½}×÷6 Õvfjc}ñ1Û÷îW«›§±Ûv¦| ƒ×¯ù úúxs•e:¹1?bÀg瘒…3æi¸¸O½ÉWç^ÆåþFM'yrÁ††l'&3ÈÎtÒ;øØWžA-ù›”M‘ÊÖ’éCÌÅõ)»óÄ ÷Ð'›ÉÓ |kMß„Ø+Û?| q¦†}¬m·löiUU¥ì µúdÃC`؆Óyÿ;v‡ÕôïZ N§€ÀM¦¬®nXFÆÝlå‘ ìQ+z!aš®-¸øèsH“ÅåNUµ&6.©Œ%—3L`jww5:•ÇýL‰Å¬ÌÑËÚqqq.†õ¶€ÙƇأ+›îá´Hr‘Ÿ65ÃÝáÚ~fNÞ¹JyÑ®ë=§÷·ÊÍÁmɚ˹!Ë!c{þÆ—´¹KÕv¬ròõ:ÆÈ¶¶= -¶÷^¥d²? “[Uµ[¾ÅÆzs0gò»ôþú´„RâÁóá.SÝw˜x©Á ×óêlÛÌæÃÜ<ö¯DCNyÒÜÌíb­ûLÛ‹¥ŒˆOãå¡ ¦Á:;ÓµOñ± &æÈþ¬ÖÃÄ­­uñÇþQ1‰YV]Ÿ»XÖOO{.„ɤhÕë]åÏŠŠp›±ä lyEt<«"üC2ˆ5<´Ÿ9èDÃ(i×ïìle…:ŧ”—Ï2,Ôñ'òÒ"¿( ²žPjá~¹ô:MD\DØâüXuÿ0©ÂD~k²ð%+‹K Ö·Þ½NÞq¾¾?Krù]|×rÀŠ8A -eEˆcòRRç±à õWÜþ”îÏ™8o`‡›8ûÃÖýüHÆÁµCMñùEN$Ýõfw¸œt“žotÎŽ˜ ¶õô\56 ÝÆ–ƒ ä6 ,>‚Çýçâr^·#ÆÆhßœbâ« Æb½Ý4Úå=‹ÓœzñÇ—‡‡v6ª<æøsz®Ì7ѳ•õžw6{7ç0`¥Xö¥$óà{ aâø½ZÀœ,ùÆ|[Ü…@¤]ÎwÒÒôñ}ÈŽ-­»Ñ´#"ÑH#k®¦|´écïÄÅÞÃý111K…·K S`êá‚bI:äF\Æê®ÔÈÀ9â}¯cHñNÈÉ!¬0G¢}›Åe×á¹þ™¸nE“QËýèzm4þΪnõN¢ÕÎPçÌ%‰ËÃEí2cY##ê…O®ïr0‰5ñ0Š~H[[S¶úÑ #‡RaðLãÿÒnšþFnaQeŒMãïrÚ26ö(n÷5+sœþéÔ—ª ©©-­­úñœ]lðÃÆoÊ^¾|üá°7õ¡Nþ(·§§g```jJ¥îû™Ÿ´h€6ø-%÷Qz~¾ýî„Y<¤É*Î(sqìIl/p°ÞPR×^z±e$&&ÆÄˆ~‡Yø–úvóŠ$žÑçÅš»‰m_ÂðÄÍØ$ÿoKÞ·`ppöû3½Š¹w¡¤§sƈw£d쿱iqF†‚{ð ™›œeYÈÈ ;„É0Þ½kX!†‡8úÐC¼Ggfv#7tM8‰9 ŸqôñçOÄ^w¨@办Ôtq¹7*#˜HÏ=+(h-”ä9xáäË—ÿ@ìIÃ@¸›û$!½""Æccó 3)¨Â\¾OÞŽâM¥ÖÕ¹fH-: âÉ¡’Aô.ƒùBŸñ$-ÎÁ(t9]û>ã“ ó&Æx]«³ÞÓMƒŽŽNƒ¯m…šv¤üž, 6 qyyæ‡Ïfff€£<==žŽÎÔÔ´è )##£.Òr±7=:J²?Ã×roEÊ~kí‹Ø‡„\%(+[S‚ehû *yÃÂí& Ñ£yÕïO ð  ½Š"¤©©yøŒ‡——™™ k¡Î…œá`mÍw¿Ñãö¢Ä ×™~òŠÓö_&o߇<8wßÛE>Ë‹åxŒhl\kJZ8Øg@±½ù|}çf+èç: ¦Kã„„pÎkˆŠúGEEÕÕÕEF*ÉÉaJ–®­}µ°°àääÄÃÃ{¸ €D^><<œÛéàUE&=I*Ú§oµ8˜*þþ9='7—159ùèáÞ-ò<¨·Óåf“}1Ì÷wwLÌ̘ðÙùù¿c`c¯f+ôÌU3ëw |øðÁÁá\"ŠáÃ…v•µîÝÕ±­­-ˆ\zzzÄÜm£©D†øí\\\ž×ëx{ï|ÃÃåÍÌh'æÎ¶GÛÛÚÊÊÊ,çª>,2-alÚFñ5•zDsº_RÐíR` €m˜ÊÕ_ºÇÆ="¦©rD€G}ðníýÛ_ ÎM]! t Õtxƒˆ…=*ñMÐm{wïåË—88º^ß^U§ÞÝÝÍÍi€MÐÖÖ6ߌ¤Wûò³¤ä¯²2¥‘ÙÙÙ¦¦ä"hjjjêìD í6ö1ø‰›÷Q@ÀçÏÌÀT]]Ý?þÔEƤ¦¦~ÿ.(,,¬ ð÷×/òˆ†¾HÓ‰º¤úge½ó»Á±Ú;QQѽÎK°{˜ðÅ%%¶66.WGº?~”Éû}˜ù‚‚oùùþl%£¢olllrr²LŸªªêôÔJ²Z«æ äðlÙÓ°í0[Vw¹àrº„ìüÊ‘™3bæ@éçP¡y¼º*öì GEÍGBZEµš´ibbb|¼<++ dnïÉAAAÁ³gÏ µvRÎ!»¢ ú) ååã““xŸ0öØ(à?ñðð€IŸœœÄƒÝ²°psë|$úÞ<3ãzy0ÄÙj±•ÏóŽÃ‡ lÄòòòøS{ù"}Ð&¤æ &q¿µl“¬¡ ¤C¦°YÄ)?º9GÕ_!K‗¢w[~x))z¬~ÁÓffÎVÈñ÷÷ÏËË ²þß?ŠÕ¦¡¡¡býNPŠkjj***Ry%iÌMLl"¢ :¼[EÜÎÎ )`dD.òYNNNÍ£3 ËZ³‚æBÐÙ4‘윜ç w¶·uƒ;::BHùµ””"%©ä³Ê&‘bú>às«««ÏÏÏ〢÷¹9!‘ìËz—Ó _$láööö õ³»•7^ðæ¤ý}{ +ЙÙÇx‘zEbh›aâµÿWVeåìÄ€ÍL HÄ·Ndˆ c~Eå¼Ü6©*Ñ«?1S=Hß“Áþ~ú áºLX¨ÇââšúÚâããƒC«¤ƒ‹Ïã¥ulø®ƒˆÈLW÷õûðpy°îÍÍs&!Á‡$‡—ºlTË÷xA˜E¥ßIYYÊ$c׈±Wët¾Q-¨BtУc À„º\Mµ¼ù¢ì4÷Y:žhæ¼ó;:Pd3SSè±(£AyyùW­ï ßAn¬ÄΗ_Ÿë5ëü DÙD¦eÂ## 3SðŒêlœ¾Dƒ´‡ ¡¡¡ 326@‘200ðpw/º—––þýÂfõ_||¼¤NûÔTt°¸óZ;ì»9>Ò7Àt΀p–èh¶ÓãÔÿþhÏ#íûÙV€Üi“ôïßWÐ.ï?}ú4‡ÞÚ— Ùâ'Ùn[¦ý³‹œ÷ˆÏ¼Z!š Tc±Z×óê\³Áýñük)ÄzyY &ç‡\¯ Ž4ŒŒ‹e&£NÄ-÷E·H]?&[­ð ½›·Ð¼Sh™N0w›,§î.鿨µWõ¬G9Z@ #¨! »yÀ¾[J]Y^^]U••“óYBB]Eä¸uæü‚ÌGÃðŒÎÏÈnEN‡èè‚VVúu¥ˆAé9;¯©á‚^hÈ@½zGJÏí^÷Æi±Z¨ÃÄÃ3šDµò¨˜½EB„@`ÑA¾£w†Ì?{ÔxoXc—ùzAuõÝV·S†LUFzºÃj*ü§±ñqLxÙ/_œ<.áÈÉÉÇÇÆÖÖÖ¸;û›>’OL|ûà`oïìâÒÝÛkfbBIIùAFúµ‘ááv66)rÙS÷EÿqÜîžG&C¸Äl² †Ùè-ííõµ¡¡£x¤7^@DÄ/6–·!“ù§,½þmËd ‰QàºŽŽ–&&º;Íßœæb>èûEGG×ÔܤKDáûë?3ì‹.v9547²³+­ªrÑr¹±Tö rôªŽ¤ ÒÔËÿ8§ tñ󗻯Į˜¶ ó¦¼Xe§8---ÂóçJJJ~~~`4Nצ—­•æÓ)_ôôôþ¥§WcD›Áï¹ô×]³œ´´´¼!'—}Ék¿õ»¡Á“¬,¦# :­7YWªpÐÉé)P Pu=<<†InR*++¿}û¤ m)ß¾} E¿YLì+ù’QBY‰ìõëæ®®, HWÓÞ®®·\\5ÙÙÙQÌY·~<”óTK/ægÓß"E-00T2@N²*ß '¼ YsÒÒà„‡fw‡SnŸ£”á€t•¡ÕŒjc)Rñ-‰‚Bÿxg'/Þ½zwàü Ÿ+'B>Sº¼¬lhû €0ƒö¾çð ²/Ó‡a/LdšøOz·,ÿà o¬5¸ž¿˜À1'«Ýà`adddflœÌ{&øßœaQüäŒý°ßÞ‰3z{wÃÄv÷«Á»rŠÿƒ70OÁD¤Ÿ=ûqvfÿRX9OÅf­ 3òÍä">Й&Œ“A~ÑÐ>wçúú{žºÒ£z«{œš®®®tÈ`›Ö×׃‰Ø-ûcYÛÛÛ=”²òò~‘!þAälÖ‘}û÷âÂ,ü§žÞ^V–¢{l*I†Œìì c33eÙùÛåL™$(nì•6¼²\RZ Š8·ÃÎØA¦ä%„W‘Õf¥!øÂÖ1»±¤¤DB`؆$v+-11D0¬€2Çý™\åB §TÕÕKÍa¥Õ!ÂoI¢¯GÓ©âYôÂÊÒ¸ 'ÜOK[[?ïÿì¯vÒ!€÷îñÿï³ÏžyÜœuƒÕÑ‘1øBwZ®‰††FDDdª"0ðÅj(2H¼¾öÈÈÅÁN‡ àŸtÁ,R¤ù¥¦¾é^@¦  ˜šž~†€ *$²,O:愚„ŠJ•DšG¢·æŽ²¼ü®ôëö‚‚z[ýÑá`a£Cõ^¾gf œÀïÕúê¥zJ$Büy˜÷wç“ýØÔr¡$å¾)Ä“S³³ ²*?5@oAÍÓzqà S”>ØœïŒOUäçççæš°311‰Ê|VUSƒûòeç½ëíÅ>¯fœÆ×V?TKKËö§ö•)F6l8¼ï£ìØèh¸$Uowwý­×¼ÙIrfEô‡™ýpQzZZ‰¥¥¥ùùQ…\€ø•WTÜÜܼAô™ë4oöy–€€öJ‡÷iZ øÞB¼ãîNýJJD%ûäë¾'o}©9<Øèñ€‰9<<\ívÉP1 …€@jYÙËûCb!^ dLméÏËÃZ3++v–¯wQŸÓ]»zzLúQPˆ}þ¬w‹ „ŠJÌí #Ì¡Aþÿ Pl$ÎÕTTTLJbWy®3{ZÜ·ï˜+bn¾wu¼ J]÷W¦ˆÏûrŠ**SY²iÀ³~ÿþ]JJêüìlÈÒh±Âb¶­­ D-ûX¯ã#ÒÔts&´Œê°µ=B„4M“zQ <7$á551Ì!ÿ ö°uú––!NM”ÅÅŸ¸¸°§µÝ4¯>ý^Òq;`a¿rb¤¡Eˆ‹Rùò¥H¯ý…¹'Õ7ïSÈÜ™e¥ÌÈx €AÜ?‹w“¿íòÏ12/ôf”OßàáÄö(§gSÄzúÃuØÇï" Ÿ¬ ì%½zÅRÂ3¤î×CÅh`Ž×õl‚Ô+Ý?…"ø÷ÿ†®ž·ò~ô{fá!û2 Þç¨ë3Wƒõ[L,ŸEV8ßz79d¤à—8Šx˜‹#a³37hrrA˜¾B)<û{w~ú¿`¼Ká MZGÌÏ ÊJJf&,9Ÿ¿üNøQ¨ý{Ô¬œ=e‹Å†rQ\†•eöeŽ#ÛžbððŸ¶í_Îòôˆ!ø‹½ùCNú—ßË’ÓåÄAB"3t°06V®¯ ?„çJo¥­ßíb …HdEˆ$159ÙÛ Þ³\¯=V¹`Ș¥îû²ðŸ’’Œºº›øø™›6øOˆð-‰¼½!Ä!ú9¹Ê‹‹õê44Ù¼ú~y));[Ãz~× ÖŽÈ2àž£JèÀpâàÄõ·ú7Ôë4òM(iÎ[/5Á/ÜKØs}ÎL›bûöQ¥Òrc8ˆƒåÆãþfôáFáê' ¢8VSÓ4WÆÇ~jxYåÉÈpÁ«MRfi!XŸO öû3åΙ€ƒMÌvÝoÊÎ&òÙ‘wwiZýÊ+Þ P`ihâΔc-:Ÿnzűî’‹ôößßܹ$t³ ‡¨©½·†… pº©b@†Â µi"#?­¬´¦¦V|û¹DŒ€pr"GE5Z =¸¿µu¼òüXQy‚ÛÖšf¹ÛùNZÌôöÄ„#1%ÒçÏ#$#ss~dˆ©xŒ|““å¦\Ô>0ïµåh/4ÜS‘¯ÒG̼¦j`57¦¦zÅlø×ßÿõÂLaám‡]ÃŽÎÆ¦•ùºë™ò¨ \©™ò^ãźQäò膂òQFM}v_0..[VVÝà+ÅQÈw"£Íõ(ûˆð>¥§©­þ“vÆÆ—{Ó·åf2€2œG0áÿDD¼Ä=pË ü1rñxŒ!3Xßõ¼IGA‘5OkDŒ'z¨D¥åzy…còÛ‘u AY Ž)-!_ê¹½ xnTLøí­ä”·®—–ßþ Ë2—zÇÇÛº—‚qM6m¡AƆ?ÍÖqîÝß2ôô09w6þ¥y½ýÆáÞD„ x¢å(mɺú`α³pêt\Üo ¿²Sô;Î>Pc ¦”éö~]oï½j¶µ¥p¼Á@´Zpï0ä`‘êû)ä5¼ÖÝ37Ø1ruœü+éþv3b@šÐ‡L&±N»údªÆf0É«‰‘$=Hú%~Âù~úëÓ’ ¼‘Ubv{®ØØ›Ž>º¥ó]ž;JsãËËÅdÎ1W%¥n?ÔOûû,M¿„Þääöžoª¼Hþðj+¹Þ]õà0©#%‚ò«îî'65ÛÙ™âë×+m³•Œ+†ÿøö§Šá‰†?´^ðx¨™êÙε¬°°1B ð8ÐÁ0¿ <˜w»¾Øgßä–ŽIõqzå^VîÐÑnÀ¨qµÙœ"ôæøîº¿§gä—ð*<ì1”²Ò’‘Õ/Þ}}NDlð•NLÚvä~æäßÚqüéà‘ÿ+’FÊ{²7ívðLC©`¬¸4®Ó–þ (>:³I.]s@Cv檱Užg o ½I)*ŠÍÄ%úWñ}˜â¾Ê_ *ÊÏéÐc8ìlÔüIJ*ƒØÔ×Åá¬Æ¤‹²Û 0É­] ¤ ú7:20YÈL4YXΣS;7:0€Ùß?†ŒWñp6ÚÈÿx¥ïáxq FÌY©‚Y‹Ï^IIBåë+öîùêê¼H( Ÿ{¾ã²Çùζ3<‚}àXwÐê_#'¢Ås¹Ê¤‚”uø¬ŸG†mš7úoFFêªà[òTw::äë®ylR¡Ú¤kbÕ3 Þ ŽŒõDGÓPÙŠ¤Sûgñõ¬µå¶î8‚7òKaAÁCRžh·‹«pêüõuÑ÷^ЬQEïG‰yúÆì;þORRh9„GDa´ÍÎV•—'H6½{gn|·hMzÛG&·0SE–¦þÙôåi êèðÙY%µL¿Û…gÏK~~ ùQ‚ºŠ)®ÒŠŠooÚ\ÕÆÓ›-Ùcm¯yPníçªøÜв-~Óš}e¡ä¼^oðè0›è[RÑ‚Ü|Ñ–±qjtÞ¨%æŽtuÆ/©Ë—ð½m~.¢m_Óy´œú«o*^î¥p¥%¯×Å^‡A¯Ž7Cpœ·“l61»ròJkÝ× ±±Y>È ÆWŸ^ŸV¶•ëëÅãÑ µq+,¦¦’xÜn&‰às*ð™-5:Äyyã0JìCrãàÐ/)Ù¡täv{qz¾[ ®îÜÝóÎÆ&€âÏOå‚*[KÙ7 ò_~ï”ø${ÅU"-ZiÎIŠUb²=Ò]„@w™'PZTS3íógÓ°°. TÇ!­ž¤|cÂÂÂ"|©£ÛÌêY¤ìq>žÃšîz¼\´ìÙi¤'?úˆ²&)iïy½n*ípe-[‘ŸLŠ_úq‚Ïu,ŒZ óÛGwgÞ„..¿~\tª©ÁNo f€½MiîØ#£‹m¡¤‹‹×žw+Û£#CC·ì–urJ‘6vêæúÌþ,A=zUúAë½™³Nœää¤n9õÙ½ ܈ůǜþ8¼£vT‡ï¢d!¯>¤ÉqWXò’b.sxñ‘Jœö~€†º·ïߟÎUßR˨ Ʀ‡8áVHÿ·–Ài·y}Š.Ÿ™¬Nµa¿dCm F­µ‘wåm]! §œÞÁÒdA=ôœGìí%òü\*¥p¡¶SOÌ÷AÌåOBo–§ŠQí¹L­H I8¼àë°¬ÎBA"Ñn¦Wпàú¦@«Ö‘jAu*­ø!Ñ-ËÛ·¥99ºÇzûÿ(Nœúõ×hð¾ŽO²[-6ü¬oY“lbMH8æ¶$åvtÛŸ‰¿™V.7õSèM"‡®p¦vQ%zÀ¯9&§‚ç `мW{…Ä: ÝkÈ@ +,Y›¸‘‰þFŒ,’òëû.z-j4¸ï„Sß¶¶_;O.,¸ì(ø£r3Îé*åEN],©TƒÔ\mïÖ8dÂÂ2yÞ-.º£í¿§À:^ß5襚Nèïy×Ì!@9àµAyHˆîÍì‘qm¦ŒDB| G|âƒãáB'g#1O•ˆªêóCï¶Ë-«55†xxlÚU‚B""z uеýêÖyÿï߽ꉌ àn0 ˆuÀ\¤Bg—•ZEG'.úe9w‚…eó†ngjAÁtÏ;E‡¯:ÉÄm…›†¢ô nÇ+’R2JЬñ|n|¢¢0Ω‚àß¿oí0D›ÓuÞàë3ÉQy¹X¡Ã%kËm¹ý8v^*i…6nÌB \ªÎR›w)·ÛRNÎuhÏÞÍ+“2¿!ˆÑÁD‚_^ÿ\šŸ`C€ÿ7˜è1ÔK+"(ÈÇ9Íûá¹S°—hަFÕQUFF6ÞÁûÞ(™”Ñá¿yÐÆÑýòÂÂõWW‹‹eààöïîóÛÛ®N¨Q6‘Ãç9€*¢Áj7øÂ@¼‘º2 W„Á"N¶/iskíMâòò(lÔM¶£îoWú¹¬O¾ÎôDp…’>b½2ÛM¸P=•öÝñƾ¦üü•pû_É[w—VžÇõ 3tUUæäii@´Õ+[Róx1q©~øšÇ²JÌ0½e¿$_°¹ºØÏ[úãæï©§›Ä!íܽNeÏîÜn?CF3úºöxWúÁÑŽx³ƒŸ£ÆùØW.m&Ün_Ÿ=)ÝÍÝ5‘¨:Œ |ÄL±›S^í-¥Dï´¸8÷Õn'ò¥®g¦eg[ÑÑÁ¢¢Þ/ÔçòØχSóq;¢®§Ò²DKÛX]e½Âm¨¤äJ@`EK»Üì”, è c{ËëŽ_LL´Þ—­þÆ$oKM« ~ESìéÑ} •J>hõ; a(˜® ×ë)(à@ÁW1µ´DFªf78Œcûø¢³c±aß@ŸYTèk–öÔáVrOŒ¥I÷>²S4pH=]buWÑ·Rp Gëáåç1ò™#Êþ~\O§Å~‹‹h×mQÐИêbª(Ž{?í2*´*…jC·¨¼ìåÃÃì«C:D²õu4Ê]°Õ§ƒDÏŸ«9ì¡¢;i}Ä>Ô¨{ÃÀP[r„¬|X¥Ô_U¥Šê[ÉËX£·Ë‘t×·£™…“…n\;«ÄFb‡™Økþ>}|ü}䈊6¨ÄÄ,þvö\®ñ­EºÚ¸nç;ä1îºwü ÚŽö¿öO'µ7 ÓŽ¥Ú幸Œª‚[ŽÙˆÜn]ÊËûÁæ½€81¢†.wÏ»©¦´”íòêê@¾æå}Õˆfi¾Æ{gG*!3(hy>\÷ÌV&dâ1ýK¡EP·+))O@LO—wqZÚ7p1_=*¦F¸aïàpm{±9¸x”ð17îtTF D§uÄù³pû$«™ôógóœ6-=‹‹jð Óh§sŽXUž¥¤°¡ÕÁûtº6›ƒüuÎÇÅIIëmUðÆ¦©~¾sq¼·KÀ¬’‹~nkãÈüç³ý©Y‚kÌr“-O°±á¬UÕ ¨²Ö«±¨ì ¹á„±Ê…Ùj{Ä+6.»»û`wâþ§S|Š„´¥3lÂàÏûlFm(S/qM£A\/öê ­ê¢¢þ£]ªƒÂ8ßÈïyc¿ØøP£û•eýxõÞÚN3 øNÚw;ósGÚ׆Çz881Yo«ÜÙÿý§î‡Z.Qn5w44"×Ä=ü%3ë­Çu‰„(BÿÓÖ®ò è4—ø¡EÁãᮿyy.U8|n>ʶzûÿI:±7­úÓ¥F è²²–mQÓ†e%Ù™GÛï[ˆŸn´úMG1ðZXXtr#7‰ÚØô÷Dt®¬$>6}}«€Úút[V.¬Á}ú‡€ 3;úSõÏ„&’´‰Ù®½=Jxäÿƒº¿Œ‹ªmÛÆáQ@JB¤A¤»‘”F¤»»»[E@@@J¤»;éî–înxÁó¼úºÏûyÞçËýЙY³b?öØöm[s¬ìÓÓ* t„iÓr€Û“’€BdfRò{ds» ´ø'kj`‡=!nO„\í,ca[YIî¡ð+)Ù«©MFDÚï£Þ·Alj±4øÅnÛ_ ®•§$ÝÁz†fh×£‰‡¯NKs¿ÉÓüŽß]¡A+ésƒûÒlSQhÕT8_Ì-¾‚ø ]ÎŒ°J¨ª®LVØØÏœ¦ ¬,.Ð.ÊË|ûŽ»{mà[ }2á ú.‘OÞ—ø©éiºê:íÉbzÆðnn y¹ðÀ@ÛÂËÊb èh)ÃcÃ4 8ƒÀ¦ øÆ²ƒ:`¯œÎ;-mÁaïÞ•%$âP?·¯•óu8?(@KBZ5Oð‹ŸÍzT»aò( Õ²áýÞûÕ Ç›²22 !!ááêØ´_Þ:?í¢¸HÃVµŽ­¹}e+CrŠŒ\—X黀Ï]_¾ó¾²í™š2éÊvtdšÓàùãê<Ð㩪ƒ¶à9TB ¡:ߺ鸸õP|ÊçèÛþ‚Ó¥°%™äÞïÜóïAçWÌ“¡z.ž‘áÚÒJÿŸÒy9HRD¤!JÑÆÞšWBÀ½:eaÏ6I¢dYL`|1±ÞýÜ¥UF/?9×X4íLSS߀œ¶ÆS%'Õ/”“¼Ï^w K:­nÕ3°KëêbÍ @àYÙÞTY"Ÿ}t²U}L°MCOÿΙ¤_{cÃ.†¾îs̘š:¼<¥æÓ)Æ|7Xi«ÿ!-­¼© ‹RéMN%*‚X2ï¥3}Ñ”óÍ1^ ÌN Š!12ŽøåÛÝêËð1Ðy¢x÷÷?ñ\éÖ¬÷‡Ètv>gg¹¢ä®£¡³ºìMµ=LÜ_z¥Ý¸¥¦¤d®oŸ™‡]™àå if£ ª­ÓÎÍ1EBžê>y×uxÈ¿;KÀm>ꛒ½9v{v¶OßÒrØ„®õ ¡Ñ‘¼¾®Ÿf®Æ9Ýt„ýÒÓo–»úróðA\ÇŠ €~š™yóå hCnnKû2°Ä„ôŽ*[[7¤ãs†Q¡Àøž ŠQl¾¾qUVËpðSeû%vTA³MÚ&ÖÏJ :ùÑžaöº?”uÙЂ…µ°ÂU™:°vscº9Ú£ ¼Ú†ìü9XupPOW÷ÏxУ'[ ›D÷01a¸PÞ÷g2xc‘¸9fki¾ùÔ•+ó=°´à°§5;Û–P¹¦Nma½+%ÕˆðƒŠ&p„Àùæj…\²¼ædºž˜œïFDUuûü0~u0^÷Û[6«„gO=ÆFÇF—ƒï–%õ«Å™ºp¿ØxmcIË"í®Ê Äë=¡ëHÊUÚ¾’ Ø8è‚RŠá»nmföÇD­Ô 8„g̓HAA!”7È r†¥Qãƒ\ª©ICWï˜×2ož—czp(Çw=¦Y§¨yçñÄX1­Z¦‡Û¾¢éÉáµNÛÝ ÈK‰høì½»[_5kbÍiÛÛÚ m 8lõ®¿oåZ^qqDD\yÆ+))a«‹Þš##ŸÊ’-òMiö¸:Û/чNFƒ~†ö /Ý¿ÒqÓU\|“òAÝÝà“¶·¢=£Û˜gðÊ„#}Õ*EÛ+!6ïbcjj ÂàxŠžFjQ&Ý~¥;0$dYFÝG6.>¾,zÍšˆm´µõþîcÈ#ô³g•ÆÆ}ë9¯F¯Ï3›ß‘—YéëëÖB‚;3MÚÙ{ó“Ǜޱ°Œ¬eú œ¬z¾àÖ{/ –9æ ÿf>¦U¨É¹Ks÷‘'t’ÍëÅ%í·üHH¥Cà OšK¨{\3ï|ŽöŠc·t©&Öè äÜ{ÿn¿d,cº”´ñS^7ó‘ÜuAA† Bèñnï¥7Ðñ7 v½hŸpM ì,ßå­¬­e¤Þ3Y»uÂŒ4%&ŽÀÆ #š>ö¬ÉÒì';ЗIIï ªœNÓMϘ玵™%"ïŸÿi÷sLÌåÅÅûwïZÜ[9÷f™^zÃ@àÓ¹›'=/ÓÒÓ¡f|¶Å·;\ùr󌄄ITÃúÝAZéÁa$eBpû£èèè:ÍVn8ú˱“9ËíÁ¤æÓè[ò®Ž—L­¬ÔòT\ô&ñºWO§åç[€~M÷ÍÃËñåË—‡((²I<œn,܇š÷ÉÈÈb¿|aÂyâ·‹8ö°åû’"k#ϧ"šJ05Ř/£¡á¢5õ ÿ𘶹ùå÷T±}##»½( ¡¬t6  /u€tfr××77øEZïÕNúªzZï¿L ÿ>©²žÓª´À=L">K²éA÷°Nmº¹¸›ˆÿ zÝ©µ•š½ŠÜ—Ãõü(ÔÃSYs+«oÜ]M±1î 6 ­gûKË¿~%$&ÅÌÅÅU__ÿky¹¢¼<""â 9"¬ ]ieeeBBBp0r”DÛÉ+QÑÜ@Î:¹Q§†&'%("±îæQ;o d¼ùû¬/Þ®ûwSR·&+ÌWºã@šxyy‡4¼ÝMzk˜{Ÿ˜”THZÅë#¤¢¢COOïþaÒG£×Ý88àv%ïû¼»\h&»ÐC¯v”Uf;+𠯰еõ-/ ¶…^^s¸M±ìGÇLJw3§Œ{¾T8ïÎþÓDoeü'ä8´jo£†GFŽÛœ¬&Jß ¦~ÿþ]LRRŸ¼¡¡åáC$dèžxxxĪoåüË «å^qÙ<\\‘W¯ØYYᑃ?~|üõôkòøñá½ ü#öÇ"úzzÕWë r¼ŒŒñ´÷›å@æ#f¹2¸ø ?ÃÀÔ¦záþkÕ»ÿ)§¦¤¹¶rÀƳî¬ízm½©‰‰‰¥ö?çfS²³WeEàáá÷†=ãO£ êooÌ-,ìÕ€I'#}Ðu?öäÄÉÛÛ[ZºgzzZKK䔌—õçxçSß“®üŽ’Ž0é?îœí4¼»Å„ Øß º?ôlÍá"MÄÛj ;ÔýÄÄÄd`pòôtŽSáV‡Ï’ùFM6õµ°tÁu‡Îºx¸ýuh]sãñ£Gº…¾rü ï=éI)ýÅÀÜ\]Uuâò÷<î©©©ºï 娹è:t8ïÒU%Rë#àw¹‰a˜{ØL¼¼¼ÏfyQ(Tý)ˆeÇk[ÍJ@+®þñ.Ñ£ÞÛØ¼ÍÅ””îÜÜõeŠ**,ëÝOe¤¥¥ED2ª«ŸLÉ´‘'''·¨sÇQ|óFoøµ‚Âwª wß·oa¹¹ëæçç?|@€ƒ{wcüç„fɨ̻ ÓÇM^^®²gpüUýsHÀ‰½¡¡;}ÿèèÊâbZn.5-­¥®®œüa“1†ƒ6þœ7лfÖ1sÚÛ‡(¤ß|çFžâà¼fq;úð- h‰àë 4´0??¿úzcccõ»EYy,--mpp.¸²î'.ŽŽò*Vë~{¢¼]ô˜âº©&úûûåWyyy; J¦ënÇ$WvÄÝÌ>ãbýžåwš´‡ìõ»ê9î½ðq.ñ¤ÐºåVO&ÐÀg:øÕ¸/IQAÁbºz`xøñô+ËÚÐgÅÛâO§q>ÆÅ‰‹sþüIh=‡ÔJàÜa÷ù3 žÍ'_à™å騨œ@w.--5`Š“Èx“£€††¦ªªJK[œ C´ó_§>ßn'ÜŽŽÆVVVv½[˜â>F±°³Ç|úDEKk¨š’››{Ût¬B¡;AeO®âãçw_HH¨Å]ö"ÇÈè`Æùº€’¤ÆN“!È çiN·#Ýß¿ ¯hSjƳ˜FäçolOá6Q“´Ä%}ñ/( :SÊÞ>2&Fùõëf/Ìøì¨èÀ’ö¢ :¸×••ùwž* ij&~þü8(M»Ñƒ‘}µB¡{w€þg°òñcPFÅB¯÷tw'ðyÖfg¯UÛ.ÑiÕÿøt­¤ôú50)Ùû&çëW»_? ßÓf9;;KMMýæÍõ*«¶ör}YYa¸Ì+7×—4y†íïN!¢Î\žiM ½KoIGó9M-<l“Öï_&ÅÆª()½·ly­©I0µ’ÈÏdǸÛDyý}y@Ó{ïæ·s×ø¤cDñ¤ºéö†››ûúµ’EÚh:7ƒ Ð9óIII‰‰=.Õ×—§aîßw򪆾tXëÏS.Ú™kòÞmCü€M‚ðFQñJv-ÎKt2VÖ‘ÁÁ¹ÕN{tXqP¸  t÷çìÍ \|óci_¹¡,Yz::>—½ÐÒ¯")eíìí½¯•áá@N´¶¶Îyßz‚s+‡ò^ìÌÔ½ #œiò¾=?\­sÚÖóxus±Yd:”y¬@[¶C¯Q¬Ùt³1S÷“€öWh‡§òê/j§mòY·£ùPB ÿÊ&ómO”ØGfŸ#ÔS&ÀìZ:ï%Aæyëayrù½…–s–£pÍ…¨WN©ééѦzþ”¼œcþypx¿îp‘þ*,6…E§ÂqÂh¸]Å•4#yyÌëÝ܉?Âå7W43°~Ô|;Y«È@?­ËÛž%{ji–VZ"Ãæ5ÿå‹……hp c²[Ï^mO±[4EFbªoìf™–\)Vƒj££p]áÅå!¬wê …ß=sgÈC  û̯Ïi»¸»^0¡ôpçÂ|M’Ìë^™M¥ÏFQ¶µeAJšÎi¿ÂÁÁÁðÊð±N -5õÏ+…Ï2Y¤RyFeùѸ]8³È^ÏfÈ)›Þ¸\ž`Î p¬m*ÿüÕ9ÛtÝÜÎu~}‰ZíÿÊÙÇ»årãâtæ]Œ] W*R])£ÒÓI¾ðz]©ÈÉ•äç?ä&£¥¥åàx2Uù·ûFbÄ¿Bï?ÉÝJ} .‡¾X¹E…µŽ51€$…Êmk|;êE–Ì—ácõçb_3ÚNw4q1ìv·§ú óéÀ§ãÿ Ô9ZÙH ÿ‹óÆ1SKKiŠHIIÉd>Ï­- mí°í¢¼<ÀnÌ,-AÃAÿ ýÉöë[ó©wgSÓõ©*ëÐýf3 ]fB‚‚ò5ó5®Ìô€&Ïxâ‚Q÷þ”}eÜÝè#÷¸ÙýaN€ÊIÒ(Óð¨(຋Âܳәy¡Ü`$²­,rYŸ—-ËAÄóž×qÄßþ‡Ø¹<ÈÜN?ººÂ@ožªÐrüæßoÓ8þäZWQ123£) !][RR"Ùé«8…|“È(’5„‚rý”àÛj+¹«+5u½QIÛŽ÷Ü«¼¶«9LJ229¡›[­ÍA%gjGÐÆËWVV“š‹úå>5Sf,KÿªóÇLGeˆíñý0×,_ŒP—é~h$ÅMÌÎæd¯%EDtT`ß›g¹OMå½·eheJ$r”:uÑÁÁaxxö9•J‰fÄËæ2í}#j¯±ä›æx«Ùn{‡‡’Òǃ£Ø¿LãºQŸŠÕ»ìÛ­Šˆ¬ (µ]ïºÇsÐÑÉHIY4³>Ìü,iddd`ðÕϯ•¾éê`{ªêììì†×£õÞ³‘¾Ö­‹œ…^­8üÆ)ÁvjùïÞÁÝ///77Ù ü8]êRÂæ¬ë3E3ŽY ­8vù{)T»ÉµçŸS™Ë…Ð Nw°ÒEQæÊ(QçžÊÈÉ© Z©ŒLo[Û;‰ „Áf ¾Û¿!ð#+èö§»s¤oÔÕ_SPŒ ,,/“ÓÓedD}þüg»ØÁOøORËHÈ;Ø  ƒ^©ò@òßïmœ¸Á«nÚ€dd$`ŠBèÂ6¸‘âã:K“‘ÇÛÿýVˆÚz˜‡î§;Š4-Iò›)ÚeæGw¡©©ðš[Ô˜E]WcV¢ólG›Ö#•ŸÙÀÅÞÕpVªm÷L¯]Á™Ýºñ (ðCÑO1? žs×)¨NòÝœmâvŸ| Æ^^]]]YÙØØ¸¸¸H£ÚØÞ¶ÔÑy­]Lttæ—–ü£X˜˜‚BCÛ­Ð ‡Ñ±±±qqÓÖR…iFFB ЦUÏP@7Õ€+Pù7.”DðVt™CowÄhߨFDDµðÑ4Ó·¨®©aec{ðàÁÏ?ÎÍd¥°*SóóŸ>y¢¢ªŠ‹‡—›Ÿ?Ý ó´z­úêòr–/$¥¥i‰ˆ| ÕŒ<¸˜1kלî9|ô]8èîžœ¤9…G ª%$<L /Ùë üÓÖ¬k@¿ûZˆï>>¯c—QŸªËÌ´eˆzhç0vÉË+Qy.OÆÿ=‚¶¨DÒòcÈÁÝQ“lÍ–ñ䎢.>À¯,™D3SÓÔ¡u@ÈÖ׿çnœÿ0`­ð÷MQ‘”× 9XYxfæ{¿õÑ‚±"-ÅO’û¨~hÖÖ˜ˆºî§‹œü˜ñ²ˆ>TV:‰ˆÀù,ìïov’‰e¸7Hôã{ fÝSÉÔדSS† òèéùrO)Ðaå””DÑߊ]âhÈnŸ¨Î÷&rñ8?,‰\Žfbb¾/‰ÐÜÜÜü½CfÌõ›µî/áRzfngPK®¥5 øÈh¾ê7—dÉîÝʤ¤ÙŶ`÷çÝ»)Á'7xqˆfk[_IHÈ`™™}ç¡—¿dHä739ó ¥ž؃ÞÉðµg{Ê(íÊïwdc·Öu#fëoÑ»ZšÚw*¼wv Ý1Þ0FDBº8Zµ"Muzd#ã «Y~:öC dð+øigxXèÇ.ûk'Ûc55Ïœ·ž¤áì0”çqs^—{{{ˆ‹£ÐÝ«å×-Í gúFHÓy‰VòôÊüiñ ËÀ»†OGèÂúNp=éí>OwaïóO`@"púÍÜD>Õ¼X÷ùúl掖»Â¬¦Ÿø9#]UT9Ói{ ÷÷54ØCÐëÀˆ ÎÄWæ„ÇýÉA‚»ÜGû{„¨Ôišm– ÉDKiôijSJÅ‘¤¥§ÛŸîÌìˆ?!wwã0¦?;mä^Kóth¹K Ogë9/%zj½¾ôû÷æáö`šñ´yœlP¼†‡ÙONˆÙ­\¤âÙìÒœ½ Îecâª5 ¾™mxÑt:Þâ17qöƒ&ÉóùÎ=Ød¾]ÔZ*ëŃÃê‡(ׄ¼„ÜJÑÜ@)šBï<ƒÎÓ¹‰Ý‡òÑ»·¢ˆ!xÏÉX$TTBÅç4§³Û}ŒÅ§’IýU|•ûõWXbâ\öðì(áÚÂKMÆ’çÛÛ»9çÛÛXT“ç ¬{4 ÝÖ“•èWÅÐ^Þ{ùËû²Çaw¶Zµlzi<Á×eo¾e¢Ìr’óÄÑ>ð8ËÚ––~>4¯êq¤°ÃŒ¢>ã«wÚV«—/~™žÊÊZ ¨H;2RUÌ/¿±‘Í‚D««+hLI ˆ™‘˜ øAxTh(33´ºzP¹hãøk´pf¬á¥®®ÐËæ©gÞŸ+*û¯ó^¼0ç²%‘{¥áøöã3~½ŸŸÃ''™JKÓæ®ß¸~,,¤›}tAÎzÜÓ³ >Oð6`|¼Ûõd«!Xr¸@=I¿ý£ž~s Š™Ó"šÁÎÎ@ÍИ8¸¹ÍÍÌÎááã_žé\NŒož'„!ÖR5ÞsÑÖ'Å@o¼%@ÀÜj– a&†ÖÖiw÷ziËÉɦ§ÂÞP‰N0eá²g$&ލ¬\ɳZ\ü¦2ùåÂètGEWwp =úpÕ܉¾X˜•CCq¤ZÇ×Hêã!$×msm@Ý+ˆ!\ ”7 ž¦œœÙ¾Þ62 p?11“™†«”’“‹K5鬀 rÔ¤®žÞ8Ãú©bÝëë:Bïžp. Cqq>ì¶®FFo%W?„=»v»f€xÀvÃ^ù¾|YZ636dr[×Y×ÐPvÙ/£ªz±ØfIàRPçÜ19Ðý%#éËF›Iч0YAKKf?"íÆ#¶’2n'šD6ˇ•õL‰¡zÄ@Zéé%qq¾“Mº ŽRÜ;?DëêÚ| Ä¿&¢69•`‡fè¿À™–ÖjÜ;Žƒ3vu¢Ž1« ø(³°Ë““‹è˜ÀÃBç/{ƒaóñ幟« ŽÀ™á³û*|Z”™Õt½žÅªŒ€pçÉS zròÞÒ÷S$=ýd½MÒ±1v4ê@á‡Ë1±)kL¹g˸»¯6¸Ã]žj'rŸödz'?…]ëéM—øÐyº„Å*azÎ[=ÿ–ˆbåù5”,ìU-oñˆt!=k?X–7ê~òí •E˜DNAŠ¢]UÑÑ †ÞóZÂÖ¾NÇÜ]I[ûp¶ÁS2Ff'禽]Iy ù#±ªÐ¦OznnèÕ¡,3¬îuÕK.rôO‘Qåá§a×èx¯-edjê¸5ª7r‡¦§±wg .÷œ‹žÀB ~Y9\Óð°HÀ#üççÆúx!¡D·5o_¡‹‘ *|ެ¬|s .Nï}±Þšaë7‚°gUxŒ‚ù1?Ow¦ûûýfèˆÄÔÕ)£&ç³7G¯«ÍFXˆ‰±³žø¾l.Ü-¹¢~R¬ßaE¯šÆëÉìèIâ}MŸ\ë¸y^ZªV_Hy/Õã'3÷`Ìîßø¤­-wõ¡>k,üJ¦©93>!®ïøò¥Lre"¯zb‡´tdÕi>»V:ûa³/ëà`~–Ótí1##¼Èz7ÎôÆæs ‰A˜Þ«ÕäÙ¤Ï^çƒÃË7/aPŸiÒ±ÏpÆÅ=§×ò¨ö"ˆþ¹ãû’ÃËãÛdEÖÖV/eÝé %¬@iiiqdM\IiÐqE¬£*⥎°i T#£û-01¨g.ç¥Ç‘„„1Ъå–1娄ev¨‡IæcZtgÆZZ"GlÞÞ›|NÇÇeû$aï§viü¼pû©£ö„ï±ÁyÁ'tq ‰Ë=¾: 2 bšõ.ÀShrr ýý€!(PfÙl9õ'ÅÆÅ•lÊs£ëدt323ã{ðöÏAüˆrss §/¹ º»aýà gî%)©žoï-l*ò$³Ë.XÒ[ì,¿Gqåâ6…½ßÒÕe2” ÷ñ`yÙ”¯ËkÃŒÕͺÚdïOSe”…99!2»nï,›‘ó@aî¬TþúÕÉÒƒ!ú}h,¹Øtˆ“»®Ï÷ï*ü5÷…?¥éÞŽ¹UæÏŸ¨Üp-رHPZ§‡’qì»aûŠ"ãi¥*û,â@á—èß{­Põ·Ý¹B‚~ªÕŸí~ùÒþõ+÷µál_ª¦ÇU0ÈFÙãïèo´ê.oËEå3³uªÆS©w­/Êgâ˜O9ß¿÷ÂÇßú~Gx­ÉÀW\æa †d3eQí¥dz¯¯OÍï4¢Gs·ÔÝ·ú¸ ¥6 ñÛHOäFafvŽ•Ò§#¢ç×»½Ú-µ ã¤ÞóÒu$svV¹ÒRÝes´÷ÆûgQ¡Õteè²#2FàèÄOè•>Hˆê•OhÔX>E½pÜ™žÈËå²[þ©ïåõ|ƺæÚyµ:eÑyK%Èý†Ù:©=S©¥ÅÙÏoçî¾2›þþþÉÕm|ÈNl¢‹$(í0Y™Þ€ s㋳üè¨(Õî–ï2FuµÉë«7½I yéÌ+£‰˜”^sÌîߌϡÉÊ(Ùœ$ð#Òïøys&baqÒÇ_d°õ”×ÍEax´¿ÿ²éÖk{g¦U>+¿ã#n[ôÊû/Kò8t Ùyܨ»D¦ÇëÚM•.îÚ¸œoZ§5p _•Ó¬¨ÝxõÌý”`T¸²ýž F-‘ß`<•¦º…OJIê ¢?M9’ªŠª4=¡’b¶ 8ü´’–û1³ïúy-wž•Å>zDÌð|îrËþ™UB÷Uš~wŒ}¯³™¡áÔí×{0¿ T›`%É­ï­††ÌëZÂ…"OwÛô¦åáýC/ž[3uåkk[))Ò —èvE‡ÐRe7Îhki™Ms@?Ê}I¯[2>2‚òzæ àæ7ÅûUŒú¡7Þ3µÚÑN Ô=罃|µµA Ü 4u¯'‰ҲǷ'÷½¼6‡nílã‚ÒÖ>S ÂÂ3Äm!õ~œq”RVfäoëíµÊä6=4ќф$rš]¹h2—ù6ñ=¾šžm`6î#l´[>Ž} EÑ—ô9…V:%ãüñä°ÀQ%Ü>”8uúI¬lL•–eZf Å{ô;âlø î§C ßd/Ž#«Ý{ÎökŸŠ R cáŒ=|VHø¸<§²r}(+ÿÇ#-ó"zA.—Þ¯âê•Ó‰,ë_cÆÒئN}ä¨Öåäl:î8*©‰«1ˆòñ9Ö…ò>ćPYK+€á#pI.¤‚Žn·Ù÷Õþ>Üáj˜ƒ}ÙzwŒqg§ˆ•Õ=qqÉè3æµÕ”U˜O8ŠròòXáûÎë~vmjh^ÏÖ‹kÖ9ùÅO±0©"t0L[ïL’|u?]$x+Ëð$ëE¡çyÄí|‹(Ü]€ú.öˆígë‘tÏP÷0AÉØì]»W”&Æ1÷Ö{ÔôÌÌÜÄX磠¥¿JVUO¦ˆ/Ò²äöpA5–¬›ž>ðó“°··DM*Cþõ‹ÌÓ3Q&9É{éAÛ艆Œ n£kµªÁE–¬ªz¥T 7Â-Qä»B-ÍÂôtkoÆy¡uÑ_ðAØïããnX¸\îþ¼br'ýÂ`sU½ÓMº˜ÔÔÎ¥ökÇË“x#~qÒt¤GÖ[5Ju¿$&®ãÐIQ¸~•çã{äÒ±ð&K¶©´|Ø÷y~9µD£ë¸ªj{ËÂèÄ [$^Qa¸ó‡bK€n³òüû °"Íͱ 95êD'êœW¦ª¸'·ôÆ #"¾(æYÑinè[äˤnmØ~Öú(õŒW-ØÝH•ævk"úx“ò)Ï“_¿Ï`¿¨ÛûôãÇGÙäRµ“Rø§ÃYak‰Üy_¿?}J'—Ãz7Ù.éª*|ðäÖwõèý¯_$êêô88üøñ©Ïø¶TkbGvžì—ó$%hüZ­r7í“6.@{Æd›=ñ ޿׆ÙöjÕNWÌ"¦L½kd3 Ýâúù`« þƒ·? ¿lv{ôhpºGB":Û-ëà€KÅþ MÁ9ÅxÀ$äò„·´’O:‹9™gÂck¼¾ÑÓ›·…—±Äf¥›9_µvøj{Š :š·^ùÍ]CÆ rgEç' ¬çvžp;í-¶)Ÿn» g1ï˼m:Ýeæ÷zë[—DNI‰‹^¬¥¢²ÆÿûÄAHOê`<@hå‹sbWV:ù>òÚ蜮ªs—µ@BFË­çHññeŠ‹·ÝOºÑ­ï{rS}vàäלÑ.‚|÷ùóÚ;ä`zm-Œ'O˜s_™m8×c.l­£ÛÛoË¥—ƒ^µ R†]ŽPj²—<8¨ÆYíð-¥†—äyŽÉ‰½²2¿ù&qxx¢&=ÞÝÖ@x4¾gü|»-þ(þð]§‚ °TŸ‚¬¾ŸúJéÈögwÜ7A¡*qÉà©q­ê½/=Øý R|?®Î»Úà€³a»@ |'×îQ¥vÚÐoqÓ˜‡š—c:^µ;Pnš%N¶ØS¸³sÂÄ„Ñä¡$#3á7Û­‰Ï¯uú-€7;d§B-XƸýû/•‡;‰]޹fM—§ì»lØÎ°˜2ÚÞ¹Ñk¹oÝrUîyq…d›1s0æëë1ÌÀ·®‡t­¥!929ê¨Ìl„‚yv`H¨nYINlG2ï¥ÛÅÑ<ÛÚúóëUPÑKɲ±ó2£<Õß¾¥2#rPqqe•„÷ZÒ*z½&±g`¤úÁÉߤª«H‹|!1[¹íû/³O5Ž› õþÑ÷`.¦›šÂ…Izã–¢’µ}¡S:ç}o}àŸ‘MýVʇ¹Ü͸ˆˆpeÆÉŽŽÇe¬¡Æ 'ãZªúûí/݇L7Îp‘}ÇŠÁþ¾Ž‡g—›{ív;¨ÉæQ=™§<•)_j1Áj¼Ê‚âPyŒá|:_¢BˆãÜ`ÙìÃ' À:–÷RCM ñ®Èë‚‚óÁú–p7{ƒØÏ(jÎø <¦hp«ÄÓóâÃÍ*'§!2޽º“å0-’áé{ÌýIóPAñÕ^«8‚ÈÏm«šÜUUT‚**^ééϺiHIõ^žÆÑѺÀ?z=8¸xºS (·nlìLL.Ò¯~ ¸hÚÚ¢ø¾ôùãÜš§·ÀýI¼Á§GõÞÞBÆ“2l,ý¼<‚R6ô´(H“;Ó­7×¶›*"é¬d~–w?“N¶zLØ(¯X1w´žDHHLƒ¿+Ì»ö«G¿½¹™ éë×ïW×cëÔ×û磌yî}ÌóV Tßsšé%Ïš{k†¯g|é..X½Û?2OUž÷Åé ¦^µ+tÛ.ÝÔº±êíÎÆÓef~i@¯€Ù3N£â2ê&òÐwèð¹çi5§Õà}kA_4f¿’Ð×µÔg(—Ì¿*,jT]ÝÄŒ|yQø”Oòů ˆ;`££¦+ô5ó¡p„÷R75-d}¨OL"èí{+Ð2B¿~ýAŸ¥¸±æâ:QjžþÊ\DtÇÉ®ô1FëíIðG)v…õ±Ý1MÞ\ß—6v¥msЬ“¸Ž‡¿”¸P.ò8Ÿ¢ËËK'~;»×ÿ¢§§‚€€>à=Åô¦€Ú´êj¼LÃûoo;Ì›…b¥*Ãdßf,—Df6~ sÔÜüÅÕ긂ԋ§?^PÊ&ô%ªSQRN ›rû ŠWϘÆY®mP?€·®(cž*_ïýÂÚÈ¢F:ȱr¸šðã‡;;~½¿7rd}CLo<»^[Цó®WëÝ ÌÊÅEŒ®uËj,xàSÕÌÿm>ËÎîçJ_S½ãfƒéÐ{üÏ·Ï©.úÑžµr0\žh¨"Š×RçNìðþ߯zÐøøô‡,ììãK¡y=ñì‹ÇX²É^šµGfžžÌwsqŠoñðJ¡ß”À¶‰•‘žú ¼®¥33ÌøŸ))°{“¶—76Œ-yɘìb"#ÉÃ4 •IJH˜y ›ìéœ÷Uækó/Ì·Qfá+*»P^ðfÉèÂ8_i¼= Ä:±¸hv¯~’“ ÖdtàCžÂŽ˜l.uäwFÊjÕŸ9]:mÆÐk†„ŒxŸþùÓ½ÊÇtH&²ó{ }UMÝT×›ê:6ÐxŸ?g$%U¬÷?â`Rý122Ùg=C:†Ë!Ö®p"~üéŽæäÉ6`¸øGGŸ ùŒT†²’ÅÅÏC¡Mà,§¾ÉÑñI5Ìb.÷^h ¿W4û‡·ž=*±ÿö>°É¶S§¸PÕݨ{ ¿ÿ1}‘Èé®uÿüVbùŒpªÁGîyn.'T¿û³z—ýÏKÂu©zÌë/¯>>˜³P%FPP¼äõ¬UÚ ã§ó¸Š}5Á¨Jõï÷šía—ÓiמTjYµ¾Å|,ñ¾êô¶vV/KDÚëÁ,)NÇ£5y‘>$Ú¯<9”èࡈ¼^—ÏLé9ŒÀh°ÑÝ_î’¼£Ÿ)s,&½¼15>^¿·g Fnÿ5£mwFÝÜ4g{Íå| ã.Ü:[¨{ŒÙ;ˆDM#kï‘ëÞ§˜H†cqE›<$ŒŒÖq„0'§ó U곤¡¸w®Ó¤||É¢æÝ©qÌïÞ[EFcW•ì×Û,°Æ‡,&f{fÉÄÆš¨¨m€ŠºbÌ.CRR©°|¼zÿDÛ›wuÒý!„¨øà€:E—b^¹˜Ô凉™žFõÞÅt ƒ¦f¥,þÉæM4À BBzOOÒãã¨g¼“ßÓã _ }A%††ÇÙ%:{­¸í|{óÀz·jg‡žêóÇ2c‚ååŒ}Ôãg …/,˜:ï&¿FB^l=—O,¤PiÕ“ á°¿ˆ1{qÒÜ‘›‡of†õÁ‹'u˜áḑ‰õnÇ3že~þU7¥åú * ’ÒE \OhnÆK\[ZÔ]ËË…ÐÉ@å¾A‡ßQû$öŸâçꪲÔ‡‘<2ñ€ºKd}ý Û%ùЪ‰I¼¹¦&bâÔ~ 6È¡u@'c¯z*€œßä·!ƒ=ÊÅ=WRÕ”Á:ßO #ÝdA'˜úU6Écc¼Ä8',õµ­Ë—xgî5}R^66Ù~l ´Îl*”‹*¥ãÙ @§êíuÆÃ[s¡D‡£r¹<‰Ï{‘_½OAZ¨SçäÅQZÜÝ düM~Â$N™MH= ¼-­Fé¾¾ŒK·X‰ö—'fÚÚ”äüä¤þµ&Xð’¥@ŸlÅ?>Èmêþ#KvÂ+r×¹v“L\ü‘³óežrÌ»w*êîdØ‹‰œ®ïJJ&0“š=~ºð-tSN.­“Ã`h+zÙoh•“}DùnõþË0Ÿ Ÿ¯_=’9»+-oãôºíù)Q´´”—»8¼á²––ÖéÚ0•Õ+¶7®°  %¥YóEÏ«g­œË™Œâˆ×P–»›ËÛb‹ú2²Çõ®‡=P |T]½7’×5=YS{QWÇW=£|ŠRär)æ™}Y{Þ¯(BÔ¿ÞÍl,H¯ábiðõä #¯°ÄˆÛýòÄ'œž‹#¶‚3©Eçü¢‘ßqã]lìý¥Clš'mu‡ Þ…ÓÅÎ0q³é¼LžªRÖ®å´ûµ^ç¼®¥…l«i³¡ðã1õRÇ· n/!"t6‹Øì\ê:€ò­­¹]11bâ H¢LÌ’¡o‘ nHgö›–?—ç©oø63ÉëVþèÅ6:ìD i½Ùîì+VV”‚0ëŠïV4Eô%—rŠŠž@w #ÇFO Þ÷ÿe€‹±øF{ŽÇq#'Mßó¥žÞÂæXޕՋá’ð^QÞɯ@{ÑŽ“,}ùùo ð‹”¦ªš¡¦v’á~öΙª>éõÚ€qe¥–„„ç\ÃTî·ïÑ;ÏAýíÌ ¢¿•1NàÆyÏ. Yݯ®wº3#ç¢wJŠDž(FöN{òúsa¡žÍž7w™tüN¾êÒTæÙ®ÜxóÌ[ÄâÅÐdÜ'Tüî•5ÖÚ%@Ø‹ŠfBÙ‘JP°ùÆf<œ“$BJí’z2Ÿ¡4¨µÑ´Ž°¾:{㊠ŸM ©77—ß&ÊR©‚HZïÐ:æÓkÚ’¼ü|4¤É_››_s'Ñš¶x?v20½‰Œð+¨â"ù}Md¦Î<-½ŒR– +jGZŠæ!²äDã H˜¤úú#xüŽ!Õâæ©)î§îô÷!>ZŸâÄEÐaÛw Ïü7BÑ€Hµ²ºç}e«ÛŸr”6-ÞÌÅÒAWŒxóœõµmÐË— V°ð” œKOžÖtTv.Ù|ˆ$ÒJ§ÞvÉ¡µµrsýyO¼óðïÃy¯èP¦¯K'ÐæÑÒÒ~ãàìNs×gå)ÍäX¶r?‚¼$20Œ:Ù~A÷âE ô§¢œ¯(ÈÈ\LLJÃúì@ß`K$æ÷ø¡ÑpaŸÅ·•–M°«ý„B¶çTÙÝ}E>‰;\²JJ€»¬­Ÿ³[½¶°ì[þõù¸ÿ]DDPkë›JK_î{‚Dè£EUH§ÑñãÍ-=¹X¹¡w^Ñ3—=Ä3ºó`„à6¨HÀBƒ°Æ(¥úÝO­VËM…&Ÿ~ú¢VoˆÜfT6ÕëOþÐÂ#¥7Óõî1zi¡Îè„úÆÆ‹ï#;“XÖ?‡É Ëj,ç ªˆ©;/3ÿñ)'E]PÐÇÕ™ºdèÝóöqqÃþ€±\ÕÆ÷ˆð¦ççÙ»§¥v YÙŽgê!«ËŠãš)C¸üÑN~ O¶~ü8úð¡\ 18<“K€„üM”¨Éò?p—§<®oÞÈ™˜0=œF¤QUí¬s³˜æè¡mž8—Ñ'%€ÞgÚ§š›1òl÷1äˆ({ÇEËÒ22^½¹õ²èÇ~—K§Žáœ÷ü„òZZ@oùŠšoé`êÞ÷µYëL’ b~,2×Ô÷Ö4NS”¹¦Víò¼àò€Üûê Ózö«ÝF7PQïßÿ”Ú~ã­Ï*â#MÍëi\¼/Lî'5ÓÓvÐ/8{­©i/.ŽÒÝ {…’Ë=+šúU]µ&à-™VCm÷”{ÎÇßÃ:†GXû’½ã$2*žoöŒyª+TŒŒŠZÿ Õñ+2Jï¢ìlÿhê+¾³í)‚•úÆZë9R®Ä‰L Jœ78gЯ  ü‹‹-É"ú‡sû’; ¥Ùl=8(ñúñÈ€\37„÷CsbAöóÇâ∳ϫgüá9K†Ëñs×ùFDür Ó-é—ŒyÃÄd†KŒH”B%A†a`ð6*Š « ëñ÷_ËmàOœŒî ºŽ®nË„½VíÑÉÕùX``€í\/;;;ѹ‡3€´_ì醿ç¯mŒ¸y^"9ŸóÈ&ýÊÈP´žbS@Ïå–——GAA©—·©[1Z '•-ÒÎä»Äû–†IA>ÛÕÞøgYYÏpÞzÛú4/n„JQ0ÇÍ`λGDdÒ`””¤·Ù‘E|ÌÏ'×ìÐù̇%eD©Úi DúC6ËÄ#ð»‡{ï;ä†Ë£Gu®ˆÆ²Sp¡¡¡^^^.Yóbâu>OÑÑáz«kKr ‘ _“üÞ7Wî§; ‰~ì°Ú·¦]ç~ˆf¼¶æ=ÿ÷gí«üžµp»D Áè,é[ ˜®¯¯···ïnµCGŸŸŸož°gz’Ÿ½%`Áé>Y¨[¢âäätïÞ=Ðl~ÎÎ&µmLðœ&&æ46æ*²ðÖ×c·©B^žfdz,¯ŠP2¶ƒŠð¡/Ùo {ïÞ#H’®NÊSŒE3#6››«®W¡<† )l ]UÖännA@®¥é +h`P›kÆÏʪZïÔœÿçÏÙ€°ÊʾҞ;e6Nêé¥ûÊGY.‡”Um-ô ;ü:£GëKíëЯÿìÇrrÊ,Ò¶¦Œ|G!͵¾„ywaFVBšV`K#Ø~ÞÛѱºb+xÈlF&ÅåÚ@& ~>*áC;»Z9Íèׄ‰KÓFÇÄDDE}‡¦¢$QnÖš{|rr“ÇùÁœÒ©ÃÒµ*† ù÷ë(¯³O-¥Ðæjý1 ÆÙ¥«Âë*‡É >PØÁ±âäP'†Ýt°S6¹tO2O>׈µ¹. ‰Õ| ›V»ÉÃÉYŠfbe5[¬ëŸ›k6×èIðô©„¤dI‡¿ŸŸ…¥{î3ýyÇÁPîÚðí¦î@$òoÍ/ …`çQW‡{VGלÏo ½ÏîŽwÖk|ÕoéÏÉ™KÍ@B‡}=sýJDD¤¾ºººÞó’ŠŠŠ“SUCãç ëøR‘VÃ&C¤ªŒ¯M7yøë7Ç] .©¯SÕ)ÞïîÚÈÌtûÄoRÚþFC÷S¾‰É¤®Zè&øL1Æm}|˜Šªàìs»oæØ¡ÃPi9EAO_”ž~ø«3rt¨$‰×=³¨h®ÉûŸ…õºLä @½jxdäòt×ûúÂq+¼½]ÔØØND¤ Kv@?žr   ÃÁ½KHHpB{‰NFFfpy² PþçÏŸ„„„Ös"è_ëë5¥¤>潩xXLV¥QTT”0‰íT¥%‚_± .nÜj_2ém²N»QY‘FžŽ11£ÇÙ^GØ3ç½Ën†@7B2òUË S#¥{Ù¼<2ÞKd¼vµ Pž‘Ôð ¨u«ü•Èí\^^~ý=õ™Ú÷ïl)ÏÕ»¦âââZYXÐPP°ÙÌ7G´«£2°±iÕØ‘Ÿèhj&VWŸÅÐk{Õ? eg+.cöÜo}'c,¸a{{c åFÕj¢¢âöÌö?б@ê÷¾.|Kô¡©Éþ)¯Ûðà ---)) þ×´¨(E333úœœu_øbxå5EmíÝÝݹ*kí­¼î'ñÙéx¡‹çtµ-prG¨Ep¼¡!+ ‹<,œªºz:•ÛR{ˆz••­z.¶÷ÍùêÑúÜcÏ«³’ÏŸ?—”0¥%ó{ccaYsÞ¶ãÀ£>}òô©††ÆS<¼Üôt¢}ZÚÞ×Çϼ­®R’‘ÅÆÆZŒ§záoD=»¼´ßë}øð£œ¼}A‘õÊ0b]_/t)\Ò¯ÞÐZ<à®?ÆU»Õ15 abfžª±§FFFÿ(­„4TT/å>·éU<å‘56á,]ÆØ&ôIZ_íM{‚^É…ñßdççÿªT åó¾¡yþ\9év´6ðB)ßä:?f´H»I÷ÛûÒR&]]Ýü ó%gk‹ì·Ç!£ÕžuMi‹Ñ#yÖ­D„õ){@¨¡†}o£úmÐÝÝR[«ùù·Gm2Ò¼ÎN¶ã#ù ¬½·4 ¿~¶{ÿñãÇhRn>"**“ÎòÙÙYïÛë*?¿û~=ˆGGG§£vv"^ÂÜ­c†‹•—”¸^Ùº¹Õjbb",üT”z²ª¼|ÙñÏ´·oߢj…GD¼}ั± 8´îÛÒ7sYyuõä`Dö ñ´½í-Aè•ð¦Øf¼Ï€ ÷R·ÅŸÍÂåöæú2ŽÞ2„›z›,ll||^vy“ ›È<¡çŇں©¹š2“Æ­o1ï>¹@€4Ó¾~,-}me’ýJíaŠ”œƒqèg«mõEEEA‹'\Ãg·’’”””Pkòºn}‡ìíôàÕ«éx6C#èÂÅÍ]õ ä° æõcG[[['§¹¦Ûª[÷«³ý­‰²ZÅø¡ÉñqzÛ_? ˜\¿‚üVPV¶>¯ŸŠ°™(5nS †þœÃæhÁæ<­FuO-7779¹aûG\ãÞÓÈ¡ŽŽUã¢v9*Óˆ¡€ÜE‚_U¶ 0]ê*­f¾DGGÇÆVô©Xu>„„8<>î2ß|V ¸ec”††&Vj%Ùûfâ¢FÃNß?9ŽA€Ç£ãóó÷]ÑšêeíU™Øx ¬©YfQ‹L%.W¸ç—:ö ™î|¤»;33´&Ùõµ5“â•<û“æxxxvvvÀK·ܦ¹Ë«ïß¿ÁgÿÙ]À(ô_MNMIЉW¹¿ï kò•Ï’YnU°ôªËÍË'•òú1€Sll'{{s{Gìàåå匼¼tt|zß?üø!+àuûWe1‘–’BDKÛ`2@‚2Ja\W„º}×£­^;@šµ˜ÒÛÝ¿”äH¹cóµ!.ð455µß¿X#--mI2Sm+¤¤¤¤¨82555:ê4œ-·†vº Óöý{ñT]Ï9÷Ù¹±Ž‘‘5Š4!ÛVs±î¥vƒD+ôkÞyËÉÙššÌ§Ý˜AŽžÞJK̇qÇô}¹wzZUUu;qO6‰‡‘‰©U4ypp8¥ØUö~RÑnyÇŽ>-¹0$›µ›Ý'Áml,ÓU–SÃQ/h91>Êãs¥øëWj-ö*ð÷%ñÖÔÔ8ïL/ü˜à:\EåÈÎÌÔÝ}…ö¬NƒÃìöf¤tæÀüÒx‰±®îsëÙêXŸÙæ å²%.R`c].‚U·T´!a}²bTg{Ä/ØØbdŒ#Ä„‹¨Ð°ùQ±°3w;:ªÖGÐZÈÖeipº8;»j&"CÖ>VWóèë£@{;T×?gbúÖ*¿û؇¿Dzíbzú !á ¾þ ?¿´[*7$d ‰—™ËEÉ“—“\Äi¼øö¾ EäšÅ Gd§•=™ïË×JÑë9GïßßžnÅéšs{\žøˆGÊjñz]:™ëêžÁ?‚x e1GFEÓ³wáÐÃã‘›Ë÷<Ǧ+ºH)ž°,l%=E ''WSQQS[[V¥DÄGïÞ~xøSÁÑQš YB%v$ -Q‡2üm†f]¬Ttq1zbï[·ôWÐëZ®¥ç+=?0)ý´›d8][¾ 쾆@d$¤hÒ†âÚÛ÷”ñÐé¶ãÄ)"ãºCù®÷¸lmaÄ;åeq?¾©/³!½›µWGÆ}‹c—ÜÏ׋ËË9àåmƒÒÓÓ““ŸÍ>÷ ûLþõÝÛ‹1Ïwo¿vþòÖ{†·­©¯oÓ÷œœ•P6±í»CÆ×|ô·-Fì¥*!N0ñ3oÓ¤-œHÁãõéííTßFû›7+*§Ïb"Pù!\ÿRq’îÙ|ÿþW¨,°B<}‰ÈîW¡bd@‡††Å@oÑŒ)\ðús.€¢r ÃK  ii%MM%!! $¥eÛ7^^m¡¾@"ã„NVY+%ó¥A³Øæ}˜ìÛ¬Õ¼¯_¿ÁÞÏ/†óó“ÌãFz÷æÍ?ç B9…ÝÕ˜¨díWd¡O£>ùì®L¥Þ]'XÎÚÆý¬p´5*º˜2==û¤^þ*¸G4/÷Ë ê/]?¿üìÂÿg·çæ=ð!Bðõù$&ŒlX&÷ü¹®òX*ô:¶ E­¹òc?¢Wa_oó¥.PXð®§k~•–ŠnÝb üžgàWªrëjMŠŽ.ÝÃÏŽv^pÅ:S)/ItuQ0ØÓ#¦ªš¶¤/jœ…¶³¯hïÀm{õtݘu6‘;/>>îÝ;E8¸¨wï¢DDFÀÿQQÇãE ó²P½èÊÎ=‘— oñR’[§¤¤Zl%|£¬¨Ø¾´<<¼ÚÑòA¸õh]tvV²Î&°¿ß€½Êçà€+_¼NŒl1†>ÀÀл¨šš&¿Öƒój´àÁ¯¼W–䑽 bÅLÉ{clœ±_«Ê¿–_ç°*PÓÒ‘ð7¥#uQÐH½Qø¬$}LL{ûõð°AT”¡ÙøíÊ5õÆÍÕaçõerGȧ›ƒ•óŽÂþ„uãCCCNp—T5Ù$OMí,,¼QT<`¸ï;¿Tæ1Y>‡/I”SQ14:1Ö™_¢¿øŽ]£þl4+‹Ù9¤€ûí-uôÖÖÍÔôŒµžËL£ÒƒN¬ÝN”¯í©Ýx5€G  àÇã^™Ñ%I‡¿ŽCßÈéÎöP ÿY|  µ„•™Þ.I‚\.‡ìŸý©¹¤¢&?~\éQ¡É+(8®¿9ÛžÚ°x !-…ˆÇ¹øpÿÉC%CCMÉ’˜eŒÁl5#ŠŠTßP‚!¦NÌøÙçôôäôô¬/¿â` ËÉMÔ9óÿèþJ§Êä´*ƒF{ßçUTÌ AíîlCÅR»@ +ÑKà Û‰ Cn'ØFïdq""Ú¦©ˆˆ4qñ€TCAÙjçÝ¡´7òa-+l‰@·MЗ›{á4‡òAØïÂy‹?Ê·÷9Ž«Ô,jé© |ùn0H((w¦bôóHp޾G©òóÇœ, NKJ4Y;±Ò"g¯òèK‚·žóúö~N2òÝJþ¼Nô§×±Ÿ^£cFFÆ(û‰mêõ +”-IfŒ‚œì6ñƒN½‚z``Ï>D‚à—fbú¼ ¸8÷î¯4;)~CUàÊiŸ °«ës,,\¬(/jêkÅÛkYaᔹÄX©“žøð,™tœ‰ óÚÄÄçP‚д=’÷u¹«(ëëÓ…^‘3ȺïÍi]VÅEã3›‚-t&Õ½V°Ÿxß v>a•@–¨ëÅÄ"·ž`:ŸoIyÌMþ’q¦±¡6>ƒÀ¨/©­JA˜*¨Þ%|~#7~ÕB€Y³¶Ü #´Ùý4Í+_Nî3¯#5|{'+˯iUL¼/õî§×j]¯‰ãCBŸ¤ê±õw[ D©ù+º!"¾«²ò=TäF{+.ÎôË3 Ù?ߟ§Õ×¥ UƳI×Ú‘{Ì¿ì•B CG88x–^9µµ©À=ÙÙ¹))—»3uÖppŠ€F߃yp$§xõË\ó QläÉ£Äã<¯_?"iÕwà´?å½€·†‡Xw᳘@>;½ìo×”ED‘ž-!MÉÏ¿®àš‰#{Àå“¶¶·¯TDØäÕ€5«ê".%ջئlRn{~Šâûò%(š¢¢È¨(­SúýŽg«ééeª4ÐIÂMŒØö¾¡Ìð[šS¹¹¼uq{_骎ùˆ˜ùýC9ÕšÁÁQ'—Ó&S+#­Ú£•­ ¶ø‚÷c³øÔÔƒ¾PkÍ-Ïóe--J2ááA<”MPOL‚bUpÜGl”ì™Ë¾þJÎð,Xq}òåã4årpúP66VZÕ”O³´¾þ*¤°œ:tŠ£iÑdIÑ?9­æätz]”Wú#ú ïbR&=D´ÅåRÀÚ¥©'&_®«» Èfiùîè(bÔA˜da0ƒœÙØ.å1J‚™‘sü¢Æ÷å‡^Àýg®#«–0mç!l¨$‚$ˆ5µ2‰ c”‹ûKôƒƒz¨¨¤Êù Ê [S=ÈXXŠÅÜ™`Hq,ÁÁŒ”לéÏÇg“ ¹TÞ4 ·klmͽº º½ÕOgÕ…d].ôïX^>RQq;+“"/›êz‰}š‚šÚýtç2..:ºÑóËçÇž¨öZ÷Ó¡›ë°FOî^^ë]ÈjöŽô'49¶\7Ïã„IZ†–H=Êö_PD5¹ïΪÎàŠ-X‹ˆ(÷½¿8yþ¼úAÖ€­Á&Ú…{wl:`ðh“…Z=%r€`—è‡U\*Þ\ï$M½¡abòœª„hkS¼sBûÚÛèr°(â—Ÿÿ+M$]9¿xí჆œŒñàÐÞÀK“”ÈNÁ/_®Õƒ¾pó?ìL«¨íåE®t¬ûÍSZú!¬(ÁNù²Òɹ¹ù_ÔšæfÄŠ³ã,ø›¨œOu°‘gj,¯Lk¾OdRiyØ×ùÜ}O‡tV(¯×3Ç)ÖsA«}MÂ鬌Oh,¢)ÂÅööbwçuÞ;³Ü<ÆŠâ5 @s×i Σ×òpß ¸sÁÁ-›ÄïmP§m,*bhlô‡î×x6ò¤¤"^í›jé§q4å†]Ÿ Ô³löÔ4?Å(Û^žtLUñ³± ȬôjPd¯:Þä¤Áæf.{Œ?*)F§™ÅUÕ833¾‰Y.§I?D+ŸÅÌ o²{»»¯ˆŠ:·Õ*>ZsRÝz"+g¢IöOGx·7ÙÛþxƒÛÑqÂÞ’Rª¿ñ!$åÅ‹Ó@Ìc R ¿é†¯àÌ›Q[ÛÒÞ^æ}Ë€Ö§Úx¥æêJàß‚MANNþùW%OË7Òïsü\\nü³Õ’""3 'Ç EŽ6)Kœ¶ß’K¶ÔóÙêOL,ÔÙV¾V޹> ÁõpdŒßíñêfx’–žYîú/S}æÏ]]d‘‰IZ =?Óþôéõ§„«Dc ±Oð¨ñqsPñ3 ¾NÚ ¥7¤Ïä^>°ƒ½=9‰Ô0IÁ]·õ=p>K¶I&ÉÂfí­G,„=;Ï|thj{»a¸ÝˆjVõwøWؤ:[Y¹Ú'$Ã–Çø¡­`mt±eœ]?ÝšX}€qºgÓÌPÔX“Wââ6‰ VS}äPõ¬uoxÄçà×H‚§èØ•šÚÚ9c{Dçšúöö%å”c4«m†Ûô¿~ý¾×;òüáƒÍ©*½üñà0ú³“‚ØqÉ`4üÌ ,w@nŽ…#g_e1OUÚuöК«en|óz­¸=fßMB:„öÁ¯ÍbøáCùù!½÷¹˜–rÙ@)~/Ô<Ý»½úX–4ËÿL°¢¶`ëLiü´‚™ ¢~iGÇžÜ{“4uÌÍ?:c_Œ°^^ˆº¹¾ Ü•V©Ä(B…NÀt?áiVR$Fx£¡!D†ñ9ÊðíÛž0Þ&r[VÛT“G·‡üp?å{«®¾ÄjÞnnŠÒÌ=¼«Ë 8""##çÀg\œ~›“BÇè.~žý”[¥Un~~__Ѿ"ªìæÑãåUel kÝ1‚>|YV=ÈÉëÊÍëÿWN(5vé0B¦aðåÂ>NCçGÛ@FVgêϽ¯‹¡£c †Áç+ƒ„"­U¹5 ÿƒ‡kþÎØ< ½æêq]o®ðïßí]ïxcÿ¬PÚL¿OV ¾!f‘à«<'>>k/”[›¼‹¹Š##—¿Š_¨xË%ÉkÏ%$h †0“ú¥Ý>?éîfÉÈhÛítµ`›,5†ýNÎß„1•Æ­ÓìÃgff‡‡WJ{œT[«3'ªFßÎm£SE¸ª…I)[éÞijÙxܽ|Ï!—58ègeUSµãægZu›,bÔ§A»]®Ý¸gl†ÆÅšìW5U‚ñœ`:”ާ°[ø,8›»Ã`Ávqá& û.¢0ƒUg}°HW Ì¥n4-0ë¹Fýonûûç‚‚´´³ãa¤OŽžîŽXf:½ÁÇ[û!{Qýf®“ÿ4!¡´éÉëâ(ïÝ»_˜²ãFˆ_JM\N^Ýæ/ñ×CQèbO_:vˆ‰ÈÆ–Dú µÞÍ7Ì«¥¯.?ª}ltØ€ÑÍ:ÅW×é¼<‚fæñO ^YÎòàNÕÇ#ïë9Ž‘0–ì ùú2º¸¦Ñ8­!žC?›Ê‘¾D0ÒÓÍ‚òð3œA’n§ÆÁu±öµ­Hreekö‰°ðWÎÖŠñÞ^‡K's¾uȼÝ3>ƒÞxgb.·¦  ‡ ¢›ï)8?•Wã1U%&^ª)AíÇ=®œü|§ñbïÛmÛ4¾YU7,¥±D¾ëÒ´´Þ–‹©JS >ƨ¬ï›¾,Qxxf屜ƒž~Ôp´\î‡þ-HˆâõväXƾ¾Ÿ'È…×-àÐ׳KK/ÃÄ@ò¶h3ÕKk™k‚iRÐÒÂ3)F9<^=)Yü?Pˆìëó©Sðý{ê¥öu3Óã±þOCß#íÍ1B8>´è¬¯oóy¸„¦/QÕ—A|Ð_*2»ñ<øzí·§äNŠ65øp·XŸ  Í2è •gɲOÖ ½_=É]iÚ@Ên¼ÞŸd•õ7š¯ Ñdå]@ˬ¯WSA̼ °èù å±°ŽŸáრi7Çêéµ–ìì~Ê=V”$àÓ°<³qÔ×gÂ’“cšetßTGE5¢£“ÇzÌ5r¿ªgÇÃÔ”ÜÔ´E›üÛtV«°_Ú^ÁÙ™ŸéL@À.H¤fndHµïFap}}ëôŒöÙ—ªêúB¢HŠçõký¥ó•øÂB’YURÖãË8æTÙd/FÁ¡Ë/5ç:õ˜¶%ç'løž×\m”~‚âÏ8ŠoK W@ïós"¥ç|%Ùãöï¿<®bUµ´ÆJkã&^ÊË÷´ø/Ÿ{+-pŸl]žnìXhŸ/½ßZ_'W F1-úõ­ý6ëÓƒ«ž)îé®4Œû þ`qœ5÷W¤73øP' Ut}±œA>ç)Ïy^»}@›ý94(!“ìu¾¥zµ·`Ï.›ýTE8²xD3ø×/í¹ÓÓ]ollìÒ2fuÀKKΦV£F©E~zý„ “ ‘ÖÄž÷at“wyÀ+1KË!€Šøìj¶+aä@­ˆÁ”F†!§ªšÙó]F¥ ÞeTÀÃøøºöQïC’Rj/-qq‡ã˜û¤âÙ†‡†hkS=Üä|¸Š³@ðU‰)[KK7Œ°ÍÔ¼Ëz‚ɰý!)•ÒÈ…úúÞ9þ‹c1ê £EaOJJIddËz!Ûœèíá;H¶ŸÜ*66b³ùŽ€rƒDÕ\µ@ÍJÉæ˜¬JI«  àÛ%åÔ/vö] _ÊʺJK% ÿ—u™”‹ÂB?í€GÝšÛhº§¦v}y‚õ}å¥r •™IµõæèsÐa¡7Ç˾ž¹NÚØx€ßws} û 0 q¶ÚÜÊh`¹—G’¿?î¬jmvJÊ`׋­Ù*Ú‚{……òçÕ…ß@)àýÑ—5-,v>Sã„•”1c=òe-ß*øp]^ töMiÀÞPPÏŒúsÏWzÄè‹0ÄMÎíóÚ%ÅOŽDÔEχ$‡r ØM?Ec[WÉj½z% iþRös"ÄAÀlH#Ù÷ï­˜æz!Ïœ›|[thUl8êsŒÃÄ-?_?9‰IK;ÉÉ=ùÆÝeý‚:—Ëm¸^B\Üh©=04”.µ…@Áy[BŒ ª‚"ÃË«ØííJ?Åì*È£øô,H‰Q‘{~ÅYUNGLœVTô6d+/PyTKÅw÷í&™GتÌ^çvÈâ³tÙÙÃxùƒæ¦“qQŠ“¥XÜJë»Ø>E›cÐiÑ‘a­ü™HnÝ\±½ñ¼?|‰lÇæúó…D8"¿§©ÏÏ~ü˜q?çýavvo÷âtwi‹0èp¿Cq„Ü:Ô×9å@Šj4ªjϦU\aN¹¶ùM½Çúlù© &&Š­­Vâ7UÍ›mµï#y¿c½èV.À Ø•áºTß­ußëA7bíÍYÚñF3³R3³ë3w½ûÍ3¥† µÆ  S89ü7 ˬ¦?L×.dHJõà½wÆÞCÃÇ—%%YêX¹]Fýb“^ÓÍ}[M¸É Ã|LF¥ÔàcJÏ5‡•¥m:M·Ëmõ’œœL@ëËM…à²nVS´{X^¯Ôìžmn|ñô$íKöþfTCƒ[g:$\8i%jÞÝCkÝ ô­Êºm<Ó£µ• …3P^9fd4zlDqã]`æË— qBßx¹{U*:ÕÂø¡æÖÉþæô¿Õ;`ÍWþ¢æ, ãîçëC!{½把ÇcEò…®”4Rjw ’£EC nDsU䕱v("ªÌk¥hÕz—£Öwé©Y"Î<ö¿~ø?¹oåGã…µéÑjšõæ4~á}+QÐù“º«—üµy1¥Ã ‚à÷£SÜ È0µJ³“Ž›)ìVn¦yÞdþÕî/ŽtLv§Í¾ÅpŒè êÔ2BBV„Ãii>À”¬~ecÓú…µ100 æŠ”þ„óáfp±ÕÌ[¬4gEMÚ«ާu Òw§Ï6G᱃yCK"#É·§<ï.F°§Bð'$%¨-xì% '…·‰U©Xð,ùCž2éëÇš?í–%$é¼™-Z JƒƒrÕ¬;b’´Þ¼~Ýit[Ç Ã–!¯©©ôêU‰ùåÍ=ßÅ…ýÁ>zj #~(Y†VÛëä÷õu:þôÛ³ž·›c~óó qŸçgŸZ#À,Käuœ®“® }J©ÝüR[»’’Âa½»·µÅdذ'’bý[Œt›;•ªKDÄç±BeÒ7N‡ìŸ{ Ü)Â鬚uضÇÜ‘.û±àˆ]]’ ¹/ðð×ÇÛââfðÍÏ™üˆìì"TÊ¢ümU”ÁúRDäÁŽwÿ—‚‚˜èQ|½?ć?{‡«Õ(½+Fûò‚õp~@À]:îÝêZyu·­íÌ0¶‹^$r'÷&£åeÑ«õZšëÛÀŽh:O¬]žâòñ=ÒÕ}އg×O¯Â€Ôè¸XýlÕ&(ÿ •~Þ±há÷w¼‘€<íÎ׺ìK‹ˆÌlM|«²ˆk}v8¤ææ¨× ^¼ÀwÇÿ¥{nÆ©ùòõWSöœtÃŲÅélµöØï½¹þû·¬å¹ºÛd5LE[_æsKõ<‡‘om·)têÄLjAåæf€ÞÜŸàNøÅ!ó#,™*&~îuhô À ÆÀì¬EÏ—}jj& «d¥(¸i 8ØØèéèØéèè_ä=‘…@D_ßÓÑÓÓpgÝõ›N1P ½I(==´É|3?Ú sCQ›z–,M§ý,;ÆÜ¬¸º>·´|-š89‰ÄÃõÑKÙÄä`I£ïp¿Ô"€¼d÷½ùÃLig™D;•bdzª/ÕÁÜÎ23 1±È——Ÿ¯R£…Å´µjSX8º×²øêõŒík‘ÄdíáüprrVLÊ nNU»©‚«¬ÊÊç¬ÇÜ•K­«}5 ¨ J?%%EääPœZu¥÷%w$ó]3ñ&r™F4–€áÔ YX?°Ø'dûóå¢PÓóÛ“ÍñyÂÊhëþ”{àE£PRSsß½Äg'17Ï/È×âMj2^¶¥ýób%qê44 H´ÂB¿|‡îE¤Þ^g ³û÷G—`!V÷Ff¼¸qœ~!kkS¾xÁ à'Y­v8@ û`_uö2&óõàíÅæy ý9Ðh—'=L, ;×y@´° =·ñÈ98d ûÒDÒ•ò‹?…‡7sNéêÊC îê›<ãC§Á *1 — ˆê¥1|Ý-P–“sàu¼~|ÜSf„2UïZ=êCØ@"k®Ú°ýóS´’†šZ0чòrŽÑ¢åÛtâM.¾!htÚV¡—(jxç[·C Çõ7ÉþðÆE¦€ÆÈKQL5ëôj2GÓâOÅ…vÚ:£yÝò µ ºŸîà±ÛàêØxo„€xÔjîÆåò¤#“â¢;î›EìïW}R^ 0Í¢)xª´„`fúèNq_]žšáǧnŽJ7Ûr[›ÊïfdzÑÓ yeŸ:8êò‡IJ¾ˆcX€m|Á ™g<€”ÔŸË~%Îtè½›P™dÆ'[öááuî–E³ 'íW…„"¥¥YwøÜX,¼Æ_Ï,drRQí1‰‹«`pâ~Ž ¼ò©·CÝDJ[¸x¹è°½Zá=¢Ð¹Fîl,tthûNªñnôäËî""ÜÇIII[>?U• ë¹íWõu]^À¤À)8#øŒ °±%]_ž">Ô §ù¨cÞ›%ÛTïy©¯1Ý¢U­jÙX@-—ÞÛÌøøŠN ŠQM`[è¿\€/im°%sx»*èèØóü¹Èø¬ÛÀ'6 ’‹ ##˜œ‹¬ÕùåÙ¦¾z·cM•Ò ‰¦¨´+}Ï&²Â¨àûèMÔÆÜá ªæÍ5w×7_´\4ìÄòß–~üx(êd8¾¨º *ÈØ½]y¨N¾ô#ÕsÓ5«##†înXi ~­Çô%µ¡=+¬t…Þã€âvdç“˽ž¨é´$úk¦.YŒ,­¡abcd©Z—ÒªŸ;81Nõ˧×>XîÀÍEÀ¡@ JÂy--]ïûÂ|s«©YvÞñ¨uÜ䙜Ä+Re&Œþe‹¥6d¶¯%.ñóôâÂ{“×¢ï!ØôTqñ³Ê y<¼µ‹ w™¤òª2æ6 Ì5`s¹ V{›}|bSR¤…Z%¨­¢’ùx½w4" k…ŒÖkìSŽD!¤irÜüŒËü‘ã Q'¥v‰EMþåËò*g[Ûãï€\­¬ø/$­ÚedT””Ô02N””¸îïÃ9pÉËÈ ~†1ïa²ˆUc§Le;¿|¥]ƒ¤¿ó»wpÝó E@cPj(/øøÐLÓÿ%Qvö)ók›/ÖרŽÒ 7ƒ°Æš<8a7ñï™lóhZYíjÖ©Ð`‡úº©ZØ zkÎH¨NˆÖ—]$BMvYŒ'ÐåG8†Ÿ(¦ŒD>£5Í4©³©a†‰Yn~ì!é ʱï9CHˆˆü^BBéñ«¶¶¶Ïih~ “L{\Ž¢  ƒãÖû;ý\ÊÚ—i_|ñ,‰|¦ù¥ëú`ÉáJˆÏu¿ËýÄ^))š+€1”ll1ˆÈ‘ïQä¿Eo\sø–ÞÒ¥P¥¦ æg‹¥U*©¥‹Šdkùú\ìÏÁ±á÷ô™äœQ T|O“ªÉžŽ+ Œ¡§'9ø_HȰWæç²& 1dÀ[·Ý4½ üðò¥¿¿Ði0Òìà¸6¦þ|â"?Ÿ×‡ÛÑšURÇì,!7Ö«7¶ˆÉÑxYç»0©_ˆâsr;çÃUY—ý¶@xw$‚âÐøø®jÛŸ¶KŸ³d¶1¸°›qOïÉɵÈÉySì¬ß^ö>óž®vÙ/BƱښ>¾-8..®Á¡!r q ‰ ¥<‘Õ9÷݆´4’é4&8òº²bÇ©M_ÔejêèLd$$‹™v·öš Ÿ‘;ÄËPŸr4ßúôqâÄ´`ˆ×g­š¤Â¬ã¬tÇé_¢v#ó¼jd¡<ô[ÖÐ÷NÝýµÁõýÛ’7Y„·x†}bÃÜ‘_[1s7Ë¿¨ø$J{{Ï•"+óï`›™™éÑ7¡ßa¡ -¬¼œÅá&à™—ËJœ±M0{*›è;¬5iüô sMMMXœ»\Ø I*¤KìgT‘ÎÎ{rÄÎV°#üàyòéîÜ3<¼ÍÍ<¥¼©ÉI.nî±|UÒÈÎÖÖVTB±¨ÇÂsž§3‘zxz2317öŸ7¸Ÿ¾ûöìâbey9•y{{[UUÕ®fº¯Ïº-‹€€@"#‚¡Fà 4»öû°Oyݶ'+ôÛ?"" ¸¬&:KHJ"úUÛ¯†feeã”ät¸†Ã¹» …»aBR›Åî“"Bš{ŸÜ¼i™äfFA£þâ°>˜a¿ÚÛÖÞ^¨Ýt3w{súU<¸occ£w0;tºl)©îLéøþΠɘÊÊJìÇ]ÜÝÓ#ðAð¸ÚA2Âr°v«i1>7L8}ßÊ…å©÷EDDÉÄWVWwgêbÈÄóÓôn·C‰œNä0§ã&^5tŽ$ÆiŒÀ\ Æâ<µ [0Ó*~zK{ŸTC³ R¼dáxz¹Û”¾ÄlÜKõ)JBQQñ]o·s¯BgªP@ZäX‘6¥8Æu o®5ŠyŠÄ]ì—Gn×`¯¢79½‰Ü¯"~mM”íÎ6HF)É•4ëb V°QŸ8«ŒeVÈ•øŒ Ãv#£²E4o>ó!˜‡7ÎãÞPV*((Ð+BÞxrrRE"-’——WÔ±¶¦wôeÔ×V𗦦¦..g~pÈxøøâÃë}|—4nÉÙã ÁBjXXÜ-ÊÎýñJ"m¨JÎ/Ñè9ÆÅîçÕy!(9û×ÐÂ¥0~º( A™§¦¦:_Y»¤„‚£3dŠ“¢èúùS\þÍ^ÞÍÍM\ä–DÑL©8AÅPY…­]Tçù—vã©oûA[ÛÇŸ¸S4pæÝår¤®Å/k5*ÝëǾ tëH½§•zùü¬EçÑÑÑÞÞÞÏŸ?‘"ÁØää䩇ÃX!Š &Á÷î{9...š¦.ml˜e¼9wv÷óêƒíË^sIj£õ]U0Vpð(Ü¡ñ]½|ÿûé‘›'À䦦& :΋ÏâwI ü©B£Dõ8Ùó—KÜó,ºkÙÕÕÕºñ<³©év¾Åú+vX)϶¦ªds€Ë »¢+*+Ó~¾ #¤ÅV¤åõºsªÊ:ëë×Od9¯©ü>u¬éjÍëÂüœ¿:袗~QØHÕ›^Þ™5{¶ëÕAª›G_¶•œèU€í 3ëÇ#yÊh¸LÂo°ppðQŒù–ÄëîçïŸñÆÔÊŠŽzbt´ÒãÜÄ ¦k vlm0‡HüMŽ ñ¾|ùB†hj#¢5p)nL¿á¿0s¬rÚž4Ê4­˜NÅe6206¾IJùö"In@—#xé|t‹À*›gŽ'=mÉÞñ´ßú{GÇØØX2Ÿ'™ÁT¥åZ}ròÜb[0>ÞÉö»I?‘CÑ`ð¦C-·:l‰Ý²D¢L•祓Y²sûHâá)™øXX£W!!!555÷îÝË&«˜á97 ³˜(5<ÙšÀ ÉÌÍ5ëŽeÄÅÅÅm­fç½ÌÓ·yÝãô‚;g‹‹šë¡²³ yd3œ¾ú–Ž#üÙ€r^]tt4¨BI2Œ8©JƒÎˆ•#>ZÚÈ ‚ç`c[ž9.0’o–ŽËê°ËÀ>Ð’ýûª¸4eeûúøo-ÎTW¤"ß8vK×Ï…\7›„¹GžÍµ÷ :PÝÑÑØGTPãײH¢$D,Ñ\¿#FIê’}t*kâ:fôž\»•!ü¡Ÿæ+‘€… Ô<Œ³¬j‹¿…ÞÂwÕÂwjuܯo$Q…ƨÞr·;ŽtL )•zÆ¥ ¿ýØ}ŸÆWŽŽŽjj_¤(âõÛ'ÊŒ;_UųçjÐ`c>ø®g++Fΰ#m½—Î>98èçúv¸òòëúÝéý[ld™ëÄl[Ʊ¹«/ üS̘€œU]]]Í÷>øú3`¡«½‰ñááûC²ü–S•=íOª)G Ô¹¶ªm—Ú§kìWû’eyjgêy{ßÖÖr±$²°³ßžLYcï`ô‚ˆéŒ à_ß\î2†õËÉÏ ùï‰SèÒ?§#z~¿9òº`GJSÒ&ä^3>>sÖ=äžxvú/òÓÒ ”æÜq­ÍÌìlmM†*7Å@§¥¥m°j!ð#¦Ó8[ÏJ6«P+P$þvÁé¡‚õªÞõ €×{± dwÃåNveW){CŽr´¶0`KÜO­6@@>úû¿ÓÿƒüðµR elås:@E ù¸7Ä}t;Ýݺ<Ö–¿]Óx;D9ú^ˆc:1nxYT3ì @cá°·ûääë…ÒƒÒxzõÊ­…ok^^aa²¯_÷ƒ&ÑöLöä¤W*wG<‚Çî×bÝoÓÓÓ¢!xŽ¿Ä´¬«¡ù3ºˆ `Ÿ»–1 n®ÎÑyŠ0¢Öqµ $Ó¥¥¥c_™ gçX7Þ_êãô\Ké}ÒÛ›iäaoTôêSÌUت‘ú÷ß#éF%Øš—Çøò¾ª¸˜•udï#Á£@a%+KW¾Œ¯_ÑaåTT>ü–cÙ))GxÔãñP¯óyÛà<ÛÁÂuü…Û!?Ý·'ÜôÅMqž\±**QD3=·.V•mþðh¡x¬H3©šòò‘±±vÞ>>±kfÎõ•5ôy6>Ç©Ûú¶@½ ÖötG“’2‹Õ|v`f†×¤?E(õÑí´öÀÐPÀì@ÉegS}¾ŸQVfßó…•)ކ†f  ípâ“ÄÄÄ¢Æ ³×¯?UU9fêî^÷&‡ A.F»Ám¤ø¸··÷xs öìüص›õ<€±0vi $$äéé9bÆz±S7Á—†$üê½j)l" ,„„„Æ}I¬\ WqxA¸ððé«iÌ¢eÌ]<¡_‚ƒ‚ìœÑ‘¹=Î$ux²šWïI€nbd´+‚LUCƒÇf¾ymÍ$‚ìÅ‹mzŒ?˃I¦=x<Îlôõ—Jô;9FðcˆzܦÐHê¶Ù )ôó²& Õ2‰Nž7öÓ§½6íòòr%s¶'³è¡îÆ™ ÷xí¿@Çò”ËáGGGVYY$Y§ç剈°ð“F1½þÀÇ|»Ý ÕÛÒ²ºoéck»Áà6ääáßw|,ƒè[‰ qá&“üX½wÓa_F»'u¿/Û ~§öªÙÊQYUu}y9cl³¬¬LÛuKYyÌýt§áúd*000ds¶·@)›ô5IñîwŽr¾Re ¨ïjâ‘ôN´Ñô†Nñhfº}Ú°‚Fâ[¼Wimº± óÔ+ßÂB:@å¯Îl#È011«,&ô†ÓæÅ|}«ÙœIgßÞâë6<ì»À¸DÓ?€Þ Óž…pà ù6B°f^\ sÕ¼ØÛ=Sç,L.Ƥ ÊŸ£¢¤“ùx©©s*/wØÎy/{~ØÇŸžžžs+*"òÐÂ÷¨A½ñÙ>º)¤@sŽ0<ÓE-Ëox ÚÁÒ·ýÂÑâýµÉ4KúxO§1eytË÷‡›}aýlY¹D¥Žç÷¾Mäe$¡Î˜‘~ëeUÍx“êÿˆT”…-M¿Ìó-7wßÖÍÍ¢¦FûUqqDÏSæ5aƒ Óïxä1ôÞl`±2Õc0aîÉx‚œ5Y]ÓGíO!>¼­zާƒ’ô©+ôMW‹¿~}ŽUÑÐÐPWDzP™’ÒR¦ô‘DÁT†+5EE,]®çAËç¡D(á´/ÃGAí^©2òŒ7ÔÆ÷Iœ!Å)aÙ÷;;;—ÖÕ]ˆ”åÃ}òÄDÓò„ WJs@«âã{nV¢e¤X×Ï3›ca Åò*ù;É((¬æ¡_ŒRXX¸¿¿Ÿìq .&öaÀpæ“´ôWaf s½©P“Ž• Ò£ž{µñu.“xƒ{ze)¾$¨DmM)i€9 —iê“Rfkcc²ÞµlÁ>ó^1)ÿI‹oè—Äç IyÙÓU3“î'ÃC ¡ßöؤ¥á§§·.6‹"É&€¾ÔiöqÜ• KC¨««ã?›÷îîâò‘€»²¾>A^\î‰<n&Wª–ãî ºm/]£v 49˜•J”_¸Ta\/¹;u›FŸ>*µ˜`rvvn=Fž ||6û·ŒŒnñõÒ1sÊì»/Zƒ»¾ßÿÂØ#ˆ(þìYß~œÀ-Ør>`éW©¥H ÷Iüƒ]½‡³§Á·÷(c…šSMÞMý¾Å¾¿EГ‡‡3¾”ŸÍ÷߳ɩ¯¿ļ·§g{këíW*Èx8 ïM7/èéÃ’ ûåjª«Ñ¥T› †½ œ‚­Øà`I3è’Ûï{dnƒCÈ1¼aµÔúiÆ›À¶EÐ8-§«åÖ>@ ØçÇcÚÆ½ 9JyÉnÏSõÄõô}aàkëêÞ¡ÂŽ‡ÄÆ>I‚8m}Äd·ž}ÌtƒZ¨×  6`n{¦Ny QŠ‚×{ªü% 6ÈgIèªë6°Ç;Ô{fø§§Ý°ß‹­Ê̽ßO}Hºüc5ÇýX­3®g—аs´>ÈÑ|.õÚëW¥ ˆ GH¬Q]TlŽ!܇°ùº‚]žÆš5ˆ^w Éç:i¶ÀÁÁ‘SR¾×-Ì¢vœŠ‰Én¡õÝìì,Ûèá| ŒXG 0“áÏÏÏå3 °‡÷Q«¿à@ ÍFíþ°j2ïîüçs@Bÿx Qú«ço!S1êŸÜÃP¡Ä â"2Â…‚:~ÿÝbaªglcbí`ÍD«kcJgâ`iAoï`ç¨ï ­-¤kih§«lj`lèp÷äÿna  ô‘‘•áî5ãï×`afedb02±113²²112AÙXÁfDÿ/-¿Ãð·Çÿ,<IJB ª¯Eˆ &z­((%.DDBKO¯Ì,DO/¬ L¤"¦ -EÄHÇ@¤`§keoê`jm¥kAO/"CBDbâà`ÃEOŠÎ™™ÎÚΘ^á ½ ôXŒÐÿxJëð{Ò8ð!ñÜÐÅÒÂÊž÷?†‘““ó÷ÞwÛê€KC]"è¶´†¶Ž¦N¼$BÖV†V´ ®6†$Dú¿_ñ’8º8üÞ™[ßD×ÎÞÐWQA”–ƒ„þ?D…VQ€VÈÚÒF×ÁTÏâ#.ÂËù÷}¬@=ð’Zªp°¶û‡í„­]\Ázà$:F†»=L, ùþ^^DwDúw5EÖÛéÚ¹Qý}ƒçD¯Å¹ˆþ©êˆäïJ‘è¡‘¡¡•¾!ýïã"ñX˜Z™™ØÑêêÙÓéÛÛ“ÙZð’Ø;¸ZÚ›:9¿üáèPÃìõíLmþñ3]'ÝßkIˆìíôyIÌl í\éÌìIøxè¿ó¿ÛÑÀÕÊÞPfûÝûìµÒur°34üj²¡½©›áÿ…Éc ë û¿÷ÿÑž|HDDdTÖúŽ– yžÓÙÜv¥2µ2ux„.HÁçÜwÛ8›ZX;?§³°Ö5 ú=B1CScðþv­ÁïDüß¹–ê[ú?JKÏÚÀ<˜:™€¬mÀˆˆii‰ ¬‰¬¬ÀÁ,­ ‰LLí‰ÀF4D¦D੾…µ½¡‘ž+ѧ&&¢¥ýÇã@ÓU ZÅбéZXØÛèê›Zó’0ܽ¶Ñ50øã5pÃokÀ;¢»„¸8+› ÷y îNacgm’N×ÂÔØŠäÏÍÿ8 ­…¡؉ŽÕÐò÷^D3íý UMò\¨Ð#Q2²1pó€±XýÓ-õ íHø˜èXé8A˜ÀÛ¿OLÎ|g8½ƒtpôv¿þð=ý Oî6¼ó¾¡•4B†vD6ºv¿ }ãÕoúíûÆŸ»þa  Ií¬§-tííãÅo_ñ8ZüÃZ S{‡?ÞoY˜òñèþ‘W  ]è~£ñÝ€ù¤uM­~;൮±áÃä¡×ÿÀŽÿé6`;û:ÆC èþ~ûÿ~œ?ÍÔw´HÌüÛqu­@~BóOÇýûÀ¿1ÔÑî:úßfdjñ/VŠB×üÇ]yè-~ôÏÈþ³Ë™þÉåLÿ‡>ÿ<.G«?€ù?MÔÔÐÂà5ÌßwIPâŸËÝÞÔÀ þow4¥µûÕˆþ|÷ï«HþÕk´P8ýÓQÿºžö†kÿw‡ýã&ö®Vú;ñÝ ¾¿EæŸÊï_£eocaê §k÷7ô µ´v£u´7´£µ7´%ÍeemeÈMBôÇYÿÓàhMt­ þÐ?:ê/»Á¿÷‚?cEõÜÚdtÀè©(ÿ+1§¤¡¤|ÎíùÏmáÏÑ£ÿé8’?Vÿaÿo`ù{ þt£¥%À<èÆf©£­®ƒƒ): YCôgÂèòý«Kÿéèw à_ÎûǺ¿¢:Ðcþ‡¬û}Ü¿¥ÝŸ¸ð÷ÔøÇÕ€‘üm”BÖºzÖ5oAÓ5¶Óµ$2²¶ûgÒÅõçÿù0ÿÙ…ú`ôà<¦–Æ¿)Á ’¶¶>8·¶68¡ •1 °Xu×A¢YêÚ'ÿËN¿÷o‘éZ8@Éî?Úw,@þ´l÷CýÃ}nDö&ºÐDµyÿ{+kCe¿3ះ÷Lˆî ý{åæBù1$p# ; #3 # # Ëo†üßOÆø_ÎöÚÎÔ ¢µá<ñ?¼ÿï6°±1Ò02²Ñ0r0°C˜ÿ¦ÿbƒè?ãèŸ(éÚ™Z;ÚÿIìm õMLõ‰þ»DÿÉ$v&FvNNVÖ¿0‰ù_-zõúµµÃ?¢`bHôêõ…±oÙÿÙ%þ“ŒœÀŒœ4@}³Ÿü•,ÿÙ€ÿqhmÅGdó{ ¢¿“(í;ãîX7‘”SþÍÎ;UÈ…ýßöú½Õ¿YÏÁÂDÃÊFÃÉÁLÃñWÑdýÏ–ËÚþ®&ûwâÖßàß `eb¥a¥acc afú‹ó³ýçó‹[YÿK&ÿý? +tÀl, =`ö?Oèh¬ÿó|ò†€ÿËh¡›Yý‘0nó<Î J˜•†“#ã_Z+¯ooú¿±Sj§üvÚé:É É‹ÿw§B;+' ; Ç_šù/ù²ôL¿35ü—´6„R%=C{ jA¹ÛAkº´þÁ#úBOflhE00Òppþ•i,ÿ¥Ÿ@Õ…«½ƒ¡å¿CéŸøùGW1úÛ¶ëlL4̬ڙeÌŒeë_™}ö;î?oòJ‚™†ØÀ4º¿j¹Œi‡µ MeÉÝFÿ^­Y‚2200а°ÿb3²ýwcþ¶¡kA¸@Ž[þfgÿS|˜Ø8h˜Y ‘a§afû+¯0²ÿφ8˜þ•5ÐŒ¶"Ò…ny—Dÿ1›i˜8C Í Nù6qüÏ6½¶3t25tþ_XêînÓÿfë§Ùÿ7žâüŸ­ú÷,þÏ&Ù;ZèÚýWOqÒ0s2ÝA= ã_•=ÃB¤ÿbÉÿ˜4€æ°@©; ÇïÑÚ~kߊþO]bahlhe@§$œƒ®`ú¿¯éýaÌxÐþ½Ñ~¿€ê9Í¿]øóÈHŒ?®ßý>ƒ¥!ô2—¡¾Åær°ûGÝh"`>ôZŸ°¼6aúsc;kG›?…ÏŸ—ÖÿIdB-Aú'¥iÂÄwwéì÷…³8#0Å>—.»#£ž¾ž!' ƒ‹»¾>»3'‹“›ã6ým/q°—”¡‘ÔÛ¦ÆÀJ;èEF"§?^þ¾ ªûçºVú&ÐëþÐàþoÎÁß÷6´ø›÷ÿøÄÍù·ã0¹ ©.‡>»!»>«‹''“§.£.ƒ³§>3 ß?J7ègÐSüqòÎ3ÿ6º7ÿ< =kkK`šŸÃÝîzÿÅ¥ö†6ºwŸrüŸ;UþÏ]Iþ)úÿhæ +'§!3£!ƒ!€`=C]v=N##Cf}&#£ÿ—ü_œ @èHÿ—.jÝÐêc"u&V6Í¿ôôÿéèÿÿñ´¾.'ëÿ½ë‹âêÚ#ŠAÄ/Al1‹  Ùi;  ˆ±X@\§a)¢`O@£@PÁcoÁÐ v *‚Ø"6Ô¨X°F(þwvYŠ Ÿ».Ož/}–e˜9gî{ïyϹ{Ϲ‹Â0"£90¡ d0Es2AÊÈ`FFˆTÚ„Hk¡KO¤EWÀRìÝHëÚz}æ8Ç` t$%%†’ Ë€ ¡œà¸&EZ ]z"-2µCZׯëG2ГŒ}‹Ã Q¢s,…’ÌM;¤µÐ¥+û³GKÁ„–'‚E¦i”ECJiŽmÈþª^íÞ³ÆÀ³kÅþº‚ªOR0б<Š‚‰@€¢,‹ðˆ€ ³Ž6ej¡Kc)ï 38ÉËATÂ!­ÀÖ}À†Q))Ã@…˜ e °- ‚r Šá Ó”`k¡KÌwõB:PË1­kÓõ‚Yàhá8†–Œ`<󨌖ñR©Ce Þ¤0¿[—³ ¥õZ%A;¨ul¾>PÓ<†Ó˜èÈaEó4 N̵QNÉ Ášj-tÕÑÇûòÐÈj¤ëÚv}p&Š“!$Ç KQɱ(B£‚I1“òM¤k¡K?æPc,gC#µ$][¯Ò8Ep˜cѼ¡XB@@W22Œ&X #YoJ¤µÐ¥/y†h±®ÍÖkÄáRyq8L¡2AÀÀü‹gXÇ( –ÒM;ãÔB—ÞÓQZA¬k³õ˜ÇP3-© L°`ZÊ 'F*ÑdSB¬….}! aÃù`mãg]¯Ð$Ë=$  ‚ ÃGÏ ”%MÒi¡ë¿k Tp`¤]ꈫ>}ˆÂ,°L˜¢¦X)‚ <'ãi˜g€LØ”}¨….}«eÜ«®í׋ûQ%p‘I GXÑŸ /…1†FÀÌ I‰I ]úbM‡øóœvì¯cÃõ‹Êžã`††Ãã(GÁJQ4ÇH`CxGåïÔ¥Èb~^hˆ"Z˘\·–ë…2†24‰Ñ$-¥yœ¤QÓ<Ëð %å†mR”ß­K_”CצëÅÎ,‹ ,G£(Ï#Œ`0ƒÀga4Ð)£¥MÊÎïÖ¥ÌÚ‘…®mÖ_’`R “(^ÆK+‘,ÇqÐÆ Àù6é0ÖB—® &8ŠaˆÀ‘Ï(LSÉa"•Â)CF0ƒh…‚¡Ù =ñØZZt¤®àjÝ‘µ… š…\ŽWÒŠ5К_ÔY嬻©.â9‰:+'L\W­ø6L棔Œ"” œÞJÚ—ÂÜêçͨRyÄäž&B5KöµÙ9u©‹a žŽàÅ„^•ZšeùˆˆÐp1±éϱ+ n}‰dJ`„Xw&Q†Jjª¯Ä;4RÂÒ!ê ÔrD‘Á@v`ˆ¿Jzmj©˜»4%S—‚ÔJP¢Îšï§F“h®Nv3²”u¹—’©t„Ä¿¶¬D Vë U(B§ŠZÅ„‡þb1€XZP—ÌÙO|Ùš<ƒ†çû²uµê:ƒzåšœnuAÝùzíu1J±>F U6¨•©_ F+j À Õïj‘œXÍÂó"Œ*`ÂùšÄ”˜-5e5êbˆE)@¯àƒëSMfí¿•ÿVÑEtu›z8Õ/ùQ_£IϯW>©©k(ëWí¨o³ÔJ­)Ü«¹K•š®Ê<©9£J0ƒµ¦²Hó|õ» üÐ0‰ªœŒ¡æãs4^ÿýy¨¿˜ëÞ÷ˈ¦(n¼þ†Ù¾Uÿ‘Òæúï¿å˜B‡Kô·d€ñWLôï{|*éÑp@¨Ý$EI1Ž”a4Œa¨ §aaTÆÐE³€ûB" ‰ß§i"‘6&hCiŒàb’&H˜¥ §gdÄŸ¥rÉ‚ …! æ’g9‚ä)AŠà0 <;É–¥à}7ÚPŽ…¥$JR‹q°æ)©Œ 1æ !`¼Vœ±Ÿãÿ'ûW»¦± âÒ—Þeÿ޾eÿ8†àÍöÿ÷Ú]×§1⮳ŒzcBmJ€É! Ëh`©8GQ˜‚tö?Û8þ¥þß_ʀɓ\ÐgÓ­íL=¥äÛþƒ›ýóþ/ÿÆý_†¨¯y£—æ^š7ziÞèåß·ÑKÓn€Òø¶1ÿ;½üõ“¨Ûø9¸ë}ZWÃ5ZëZÞ£…è{´P·§sQ(´µÁ©f†^‹™æãp]¤€éOç÷qS')"Ý6"†#/è$„tÒ@È`pB³û€N‚¦hÊêß®‹ñùß"6<ôýFÖ`ô :ÚGýÑb¥"(¹\óPr]šÄÔÁhD0ºˆ`ë‹`5"X€­/‚Óˆàô°òš™ZHA#RÐå©üë‹ð׈ð×ED@}ºˆ«/"L#"L ÆI„FDóÎVÿÓ;[5Èï¹U#[@Õ[4ʇób0+†{JUµ·BQ»**®üiœÈ§’)Oð©Pa`ˆøFähðà¡j³H‘’©Ê‰™Gˆ ¸Ê·WY5»I9,ÚH&BÙ‚Ái/$ö XkZ?s3V>v؈Á_Œkìð_³Åm44K­V4M±˜À#M“ Žp…Á¸”c(¥H—âu‹±â}ê¥XãšµXð"Æ%r(•³µí݈n%&†wuzÆiÍ£„#0‡2‡$‰Ñ@/G‰Eš{þ¬SµyÃ{i…i„’Â(K X tRšáx”!Y”EÀ¼ï¿iuEh­ŠB¤$+“20† 8!Ð,Æ2¬˜oÄP<,EÈÆTýc¸›— ÿMŸÿÖœPÀ(‘OäòÀV!vMÓþ‹‰¹5â翎 ‚ã¸ ÑæÏÿŽcÁ¨‘CÚw ¦Ý°¡n£!ÈàxÁȼοØüh͸qƒÞˆÿÖíOI†@ψßÕµê~‰¿¯™w1ôp%4Ú­Õfã¡?7u8ø£C­¿6¼·?ÃxßíLÞ/òçÊ}Ïââ~~f`7X1G²N²ßhô¦˜§#· »ùvŠÞþ´½49¬ú“WsO¬^–ráá·:Ï£T÷çlqSotïÔÂÛPµgËm*ãkÍuTm…oⲡ%½ú&E&<*ß*?8q—b8ß¹ßÞööö·ŠÖʳ£%õt/\ë|íÒ¥}áåÃcOLJ£ýœâââ|ÀóæÍÛ±ãi¢…ãÒRS×;wöèÑ#77wSh…7lÜ z•WTôàÅ£R¥Ãëà Ìv‡”´73swwwœ]Ý®+qÓdú°/¾(’Ïúð_ôƒ«û¿[l›”œZ²¯£©éäÇe'¢ŸÜ´Œ­¼²7yéÒÈÊ+Tì©k³ßÌ|^Y2ýy¥··÷€èÇ­® ^ÍMMý’ç{ºõð0•çN;ÅEGSÕ>>>]-ÝÖÄÎÎîÂìW±±±@kÀ—_®0}ʹ-J‡™‡ç›­ß¶Mšä6Èm-Ê]˜›ëújð¬YV­Z•ð9| ìäò~~K» ˜†Uÿz¥¹½}Á%Wð‡4î¹an^ÞB Ç]þEkb>øð†üª‡‡G¯^½¢Çn†Ðuþ×?éÜoâ§¶¶Ç "ï,Éû·û·mÛt|IIÉEwðH»Ö­“ØØÜzZq– ¿à°óéÞ· W÷±‡©•ÝÒ¬¿ýìn*4^Þ×Ï';*kÓ&®úM6€ùÒŽÀve RCm:C§Ú>lÕ ªÎ û-·åÿ9€ÝåO.³ŒíÚµ«¯¯¯µµõ®àËË–,9lG…^ÍžYõ Çñ‚ïñ _SÇ•à]eeeff¦‘eŸ>}²7mÞ\~f³{è•=ë×­;•5pĈ“'?ZÚtÉÞÜK‰YYHµ¤¥åæˆq’[ÇnÝ®33n·0̃7°€.œýýo=~žøKluõëªÉ¥GOœ8akllüìÁµÙ®ˆ]´tiǯä[ÊR­€•ƒ!åàèhfae·Z3ÊÙ lњƌãáñ[e¥ST©Ï³6ÔF(¬•È ;ƒŠãâã·NÜ?íîù «!‰¾»C,\¹zµûȤu”´7ìa£.Fàí@ç~Ám‰“Âÿ“iI,A7AÝΖ*˺ù¶…º®€l8[áµu¢ß>eïªV7¶Ä/8’‘ž¾aÃÐ1yßoÌ.Q–)Jòòò.^¼XXXYv"Xøƒkåû”3gpµµµ €‚Qvÿü¤ ­p<ùâÎéC***¼ù½X~mÿôonÏfm÷/x¾dÿôÎòêßò>˜:õù·æäÄ3>¶ŒýPø½ì„°ˆØE))þ³fUÏmÛ¹pµãòÅ‹'—çwŒˆˆ°²Ú(ÆÓËKd—Së¾h¨óH|ç¾}ûì†$vóðô<º|*þäÅ6þäáÇo­]èå¼ãÉ«?ž”ü<õd~~jZÚì'$‚ F–^^Å{öìyp ªðÐ!w÷´OAÐq“›-ZLúäùó7Ušº^ºté^Ä’»·oÿ”¯Ä³ö$$˜¸õÓ“ËC½½/²?û?æ„I½¶â˜c¡GaÈÓÛ§mF®ÊA[výÖÓÃÃeý¨üüü5N3¿ä8ñ»]?™õb}Õ¯ŽíDÙ¢-<üõÞÅíEkå¾¾«–-›òòi gqB¦ÐýA‡ ‡psssô7²³³ñN‹Ž¦»<+–϶Ÿ˜ýâáoyYYY CìYvðàìçªvƒÑ“ã•æµ(¾¸7âÖ™U ÷ž3u :Ÿîáå55R<,È_2bIéÙÅ¥û)Ï ŸžÀ®oÜØqkdtô€§OŸ^|î\úø,°OHHHÊÈÕ¹æÜO[ç:'Vô{íP ´¨í/-]ÛÃA¯¡ÈGÑz4Ü=(9ÉüOJ2.½Á-]zrA"på/Å¡m4jôè•ß_´hÑZðúÝøQ~#Ì:lùdëÖ­éëÆK‚ î†ÀÓ^åU¼d™çª%c»X¬6ë¸ÔÏÇ盀É:;æjV^þ…ñÁg¬{zœ¦,ýoٔ׺>Bì*Û;wW:Ï|™;-sñ ï8ºËšÏÒ'ÿ’ÒŸK]r.lC^+ù5pé… ňáv9k¬{u*»é9©Ëë$?nÝšpšk“õòe~RãöMŠ1þrÁ¡I³ª}çy ¶îÙÑÚºl÷NÄÚÚ ÇËý ΈÇJ‡ÈUé÷ŒTâ+¿J7˜ãdkŸñmüÉ…ñ'ã¹· 0íhA&%-^œ³ S²Mš­Ýðv3úõîÝDOrvÚøm§ìäèƒ2ƒ<ÛÃW.eº,u¥Ÿ±G–uZLçù¼Üm$Ž·KýqnnA·+½ AG(S²²~/=æêùd~BBûØEqù,»x³ŠŠÞwI° ’×ZÙØ¤´ùê„[y93x°UWsÃv&ùGŽL Úwq4Ô¦MøãÇíŒwÈœ0Ûí{8g]шшɑ£ùmŒÖ=*M’pý‚Ëæ3SÛ›v N^²lYHW§ìvâ—̆›™™¼o8ÇÒàèùV×ff~µ{Û¹³cΜCžVÁOæ=z~úó%%ƒââƒÒ3"ŸU®Þ˜BښͯzyôÁ•hYÔ›¶Íô#í3¢žÝ3+ÞúãÔÑòb{Û-/««†üöÛÇ}¼¾ï>àMò/jßÝ9±  c”gw>ÈñôÕ‰×.ŒÏ¨ª8 A€Orf·^—ÿcFp3óÒÒŽç[cxù‚ĬÆÛ1»ºÍÏ“­V}ä½çÔ¤¢5TjꙘýLò„¢j@åÕg6ã¯/çžÿ?öÞžªí?©$ THÉÔD$gŸùy¢Ì”áŒ(Cæ)Q¡ ’$ ‰2…! ÒhÈ”!D™e™ýס{ou»Wº®ÏïûúßóRéœ}ö~¯g½‡çY{­µ§@_³±‹×\M¶”¸ïµxY޼?3Þæ¡Ë“•“%;vç:÷oÝÅ{@Ié`Ñ¥³F°¾³Úž‘q1Þ´˜9ÂÖ¯ ZǦk` È#—**ÙKéŸâã#pùr?]ᮯ?‘~Èzj„OUÒ³£Ë¢©‰(ÄÇŹ |V¯Ë¤š4~®©aœ¨•vuõM4ÖMJHK+ëi`{þ¼ƒ‰Óu|Üåõùmò÷ÇSO5§+8»ö ˜ptÌŠŠ*¯Ë¢#H3&êúuŒˆƒ?;nÞN à²"_?H¾.â’ꑚ‰3½U–µ{÷á£-]CÝŸÏŸ:TyÉºš¸ƒ—ñF´nQŸS& ýömÕ*²híÝeÁÕŒ5U÷;HJ>Ïs`2Þ|&æSk窭IíÞgÔÇ[‹)¤'ŠEa±¦ÖÉ¿ɇôžg@Ç ³…½|.ð¨0õ1‡#ÃÞ€ Š2M´‹Ñ)+9Û\z5BIiiUòIq÷± »6?ÙŒY±Âîæ‡Áx]n¬UÎæÞðÀ¢KÇ,øDïÕ½îùϹiå²Ôðìì G?ݳã{X_ßxFâ¢?—øÙD‡ÅêÂGÜ×!*¬,[Ó--ìî,]ê­¶öûÞàþþQ/¯ñë×ÇÅ]ik»ÒÒ’±f‹ìÊ•O._Šv).`“ÒkŸ‹¹,¬Áî}Mažž”‚.`¬3ôrÞœz¡~°¥X"ñüõ#Rs>öC‡+V\\xëûüüû—Nœ(êv+/)±m;û¶£‚ºøL"‡³ë»ÖKçö!–÷ê§Ýéî^Å“ ƒ-Ó_Úh™°‹£´¿o~8ÿs±zŽ4ñá¼x\‘ríZ¹f¬Ñ¶ílìñY™zµoÚl%üóóËÓ%ç:§(_]l¨bk'¸sg`¸x.ñÙù‹ 45;oj& %Qb[¯îX}$ìí‹ñ+û>©œ ,:w~£•e¢¥µµ‰ùÍm[·ÂßÜ£÷¼ôDNl^ž——Û#©ïŒ£¡aPfæíŒ!öuëÖ­C#>w¬ÔÉŠ\äâÂZY)be•AOOòe|òàÝ•ë×ß¼ çKaïŽq‹“Oúp½/gš¸æºq_¸Xé>5‘Àaz˜/òeqò‘‰¯WÀ˜A.îeÌñ~|’© P]ý…‘2e‹6‰Tñ,H{$Z:*|t´å$Sô.£•·’¬d–4ÖZ[VTPüù¶nµü ìäá•‘ ŒA/]ª];ÕWe\ôâ¢EÎÍ‹l£Þ+޵-ݸñÖ•ÝYu™âgâJ­ÁaÉFîßgœx û! NEáü½‹õ—òì é#´´ŠN2é{XYWEE=Ú®Îuˆ58;…¶fï32ò謼w¨ªžÈn눱± ÝÆ‡=ßv­$J®õ$Óú<;SASìØ['¦Gy4véZìsã"“/t½m ³NȬ½~û6iäݹgÏ2§§ [É JØÚ' ŸìWl<ƒÑ³Ú£Z«¦ÝÚõæÍV/'¶\»Ö\ akÒ[ög¼¼p–y›¿3#SñaǼ®îîƒÄ¨¢j¡õ¬ÚaaSG»Þ¼܃¿G oÿÈu¤éñ‹åëÞ«…ˆ›Ÿ_kz·CN®BØèÈaÕRÒ+Òïb/á5ƒz’Ép2T}¥ÌÜW׳ƒÊûj#‡µ™91 ¯µg'»âÏpŸN2Zå2ŠRɯlû +G¶î€m*»–/wî}eb1ž¿¨øÚ5õžîþWû³²XÝ>‹¬ßfWôõ´®t˜ü òêS«ÒÑ£ËSR²€š)‹U¿Vf|[ÒXÕ‚·Wž¸„VBýž?õØÎ·^ãæ›frŸÏÅ7š/+¬áäÑM9ÝÑ!`õV$h,\Î…3¼¹ñðÇgëÖk–ÙœH™xýÚ™Öà1ú̦ÛàÓƒ7â>§ùÉñ´3çÏ—? zÁ§®³Á?w@ÃÆfÏÞ’XÖêÒÒÇ]!<®ØÔ"O=ÐVùcM‹5ädɬ¬Ú+–/7;tæàVêË’ÆX#Ž\Ð#bv-GŽˆ<ªAø@bbN«ëw­ætíwÑ}Ì»fM¤TMÏ+ÕJkP}@,ƒâuâ„ÄrFÆ——" ¦±Ö\Å}Œ0ѧù&æ¼:í÷<Ðï¹oÀ«˜Rƒ­Û ü*n¨ic¡}eUÜ¢äýIééPNnsQøŠ—ÏvÜͨÚ¿õЭÆÌ7o¸¥EDˆÆîápvÛ!”ˆDŽu÷ÆVqPWÖ•˜#**î€ÜŒ‘~½dI(ô ]¿q£òýû‡ RKJü™¸S÷ïoï Øº]M«éþäU÷×%%ýNª„Ôké`p8ö5”²3¡³,>(öña3n0<‘­ëîÞ¼eóÑM9Œu&Åàb]íKƒ•Sn—ÜI+»*êôúÔšâ¹+`Wèô—²óoLÜJÓæÍ‚à‚î'D&í"Q1õ/-®„Vã–zKq7åÓÒBÕål8ÚmÀôì@†EGQxÚû¾=;k¢33w‹ÞC2q!"ñoÆã± ±ùÇF@dlêrçMz ®F,Z´£ûõi¼ÝvÂF¨\ w@@"p»á²U9jÇÑŠ11ÏŸg)]t^ÑÈèÃ`g$ð“S§W$ïÇZ~¢®àÚhNê®9TQ’¸o•vÏØcÐ}·}s“¾}Vþ5/É:ûk‡G«ŽKGª†ß²"Eßr­#l5¸Úþ®PY2Yg?lj`%=}óÒÛK@2Ô=ž›ÛüÄÿ\MN5qð`Úƒ¤ÚÖY-/ñ.­E:‚‚B»RnùQŽÆ‡Õ^é®MÌLSxü6ôÙhbRR{Eü™âˆmyîaE&pàÉ)w±‡í¯ìZÕ¾”gýSI'ž 6îœ43“[3,/žfÛÐ×äu‘ã̲¾*ÏùÝ“W¼2“ÃÍÕ¹nçÎ;™U­sn 4Ð!gçW‚زß{ø0ü¹ Röf0ž%úKÛâÊT‰OV®Ó¼lûÙ\NZ[uÚ"gÓÒê4g{–äòra Ưí»>;%&ݽ<ÙÒ!R[Pp9lLn -š N¿oiÁìÎÕË,Ù«Ãöz…äV p¥JÍ„À¹"#7$,ÚÅÔ¶œ~äÓ1P@¹çX;a ¾üu¾eu¿µ‘QA¼®[ÖUÖ‰ÁªÓaØ9ùɧyLKh>þê•%°ÁÙµ´¼$샠ÄY[óðñf˜ðO ¶4TP0=éCõ:i R "ô’Ï•¬g8¨Ôæw.–ÂÀŽÏ=™Gð™QQõ”T8 y-·•]†ÞÛÞ¾­²ÒÃð~ácR]ƒ›¡aYùÍû–µ˜O &eÝw’ñDYØ(OÕÊ‚³~”|éòꕜgµW ©n¥EOOÞÌLÞÞ^ÍÎ.,;ÛßÛÛ'kd 2ͦävŽº€ Çä¶îÑ–„Ä€”##圢 Ã78º± uªêÂËkÊ5=ƒøŒî±¾{tFv0„÷¸Zåki¦U{>RqìØPyPµ'Œ *XH;³9u{'Vǵot°0;›ºj•‹›ÛÄ6•q·”×qnlÜV»7ñ–@Í=§PçtÙ£GcâÚnïÐÔÚ‰é“]dÝ1ÛºXuã]Æ«‡†5÷ž­K¥´ÜÒ¾Q·AÿX˜ãÇœðóý^q<8lZ”“g» ‡è‡§lภ.y·Rg´ön;la£­º:˜Æö‚¦ùƒ²'é‡W‘YÄde­âݹ³è"Fï¨øxÉÇÇÛûIùÍŽÝŸUNké…Ë¥ßy䉟‚èé!~@~6½™¡’¾^ò‡ ô„嫟ÜÇZÖp,ßÜ@ëP8‰d71¾ÖýH“€@Þõ  nÆË¸.¢×DšÀ55üzE|ãâº.²‰Ô»/öÈçååU¶÷ÌYõè6H·v­tàë.¹ifÖ]õîÂÛ·cQ° —ù2™ù$¿?³Õ¼Oæ!î€`£áÑ'!!UÍíÞÑÍ䈶!:š¨7*8(°fãå}ûkù· –Û×ùoØDZÆ6†Ë*ª/â–?xaÇAङ½~~e±º;õÞmzÌÒq)) ã>¼ˆì=ÁYšrD®æË•F B‚Ý÷³íB½?‘¤êÉ ºì¼ŸŸÏ©SÅ ~xyͽ½+ˆÄGþþ×n.i}.—|`ù.ád§Ãðº¬2@1#Ú®eŠ#–;§¹ì٧íý{ÊËsm×Ö5EÐ*€êv¶uAÍ­!Ã]úÒææœFoj9ÌÌVúžæ>ÌHf%+Ä"55OÓÑi€Ÿ  K—ð‹ˆ‡)_º¸níZÉ< m¹±Ö«·9°÷Ôè$À'Z8^DjöijiYZMŽ{à…÷S¥íwN%Çx[­m*bâ6RoHMÒÚ(”«¸S(Q{ß1·Œ¤ÜÜ<__‘ÒÈE\0ý¥JZt–,‹õöºžëRýæÍ-P}(1–æ7ÍŠ:í÷;§O ¤ßs{ 2dT”4Fµ!ÓÆ‡6€p¢é–û—·7ÅË{B2Â±Ž¦á†›õi¸é•/ßLP¼ë¹ª§¡!êØeÆÁ¡(,ÉÄÏs”ØK—ê@}lhõÊÅ«÷×úöúÛõ^a5ÎxRÈg¤¦FìÔyˆ[ÁãáÄ4³3yGnB ¬½I‰"x-§ŠÈÊvŸº»<&«Ïµé‰.v”˜êú4`nA~OX³†7ŠÔþøî2&WooÎM¢Ž¨Ò”ÿ*Óí »s{?©¼|Ê¿}p8A¿fhˆ^G§†Üi´„~1™õŠ×Ï£Ê&&ååŸõ¾{ÈÆ¶ÔÞ4ªù£Mëtut<Ɔ¾’=)>Ï#oÝ2ӌ̶nÈÚONZ\SÃŽ4åÂb¹§>7¼ÍÔ&QS)‚¶RÕeBð¾“ÁFzûCXƒ|D"€ôZ†BÝñòº¾tÉõ%Kct´Kµ´c,-®ç‚‹‹àô1'ä,³á½Ê#/ØT–/_ ŽªÿÓ€ ÿø9]ª‘;@å^Wž»›çI꣦0à;›%î÷v²HÜ÷jkÛ´ãæ»ÊÊ\eaÄlåèôÌ{É'ï^’ê7)(pkõjµ Š.c˜p5SÕ+qdR4‰»Œ©kyЕÎÝ5µ±ê4åaY‡#½ÚhGxÇ«õ©.÷–€È·n¡&MЖåÆoëZ,¬ä,LrAUšº‚hg^»ò‘¸»@e¥K­äÑË¡<ŒŒ·ŒrGÛZC˜×‰Ú^oëª1ŒY'=½|¥’²ŸÑý¼Ò—›xÈ;žU¬çà AY›7O‹¥”Òôôp~ÁbÒ¾^Lâk˜Ï"l¢š. !× cŽcˆÝ] =.­j/uzsÐ|Ç&‰c޲Zå„úÑÁña›—wê™–WKX]é Ã^ äþ<5œÒÖGZßïÑÙ êÝâ}zzýD„‘¢â©š7wÔ…­Þºz´•èOøJ,±±Ks° [Ì$û”)ÕÏÈÜ<ò¤ÏûGÃײ_Ò00ˆ½¾ÕÛt- Q>Z[v®%N_”Åóm}/cZúQÈе}bLuÑ¢EÛƒ–‰ë6„檲X¿þPTsý ü¡Jãþþ-—×­ûÔW×W,®ˆ0‹¶þÃ/pëh_Ó!Wˆèu*1dó/C/¿¹§ GBïGÆiùÅÄTœŽWÜôºš}DJ§4<;»k­aœ£xôS‹&‰ìXjb·,‡!g8èBž#›˜†€ƒÂW¯*óMv–J»ìûLT¾áCRR‹DÂ!‡ŽÌh…õý•.@–‰ÎG %ÊJz>7¯‘~ä³Üª–êÒÛH%Ó™XÿRUçÀ™šc²Ë”@í¸ïÑr²ÍHSÓf”R0&ùò} kïÛ‚"y… SdW »µtiŒ¸ÛÅá!K‘®ìÖ/¨¯Ï/Rãµ9»¤^e¬¶öªÕ«}î9ÕöNà|Ÿ$\º\ó91qå÷ñãZô‹Óî”NŽe½/"m9ݸÖô…«7ò³ø…‡çÝ¡#už´¢n¶å 7•F¯p‰²^]è>¢ñéS±øä¤’êö´·ûéè´X9Å»n»¤-åM9ÆÕç¢sŒ çêê{ñ¢´5có«S ®,ô™AÛÅ‹…+oñ³<âÛõäÉAÙ“J0¾X•5kô9Ó7ygBˆØ< ÕݵjÇøí;wJ {†Çørdņ½ë~³ßXYñ”žÙˈD$Ðõ¡=·ÇŸ×ŠU ®>qìèD…MÙ©q¶g/âsŽŠ …Þ"*ȾC×®’-xvº©ùÓú¸·6øz‡&š3ŠŸs’‘yqKûc_Ÿ‹½+_ª©éᆠ…Yܬ wÂB»†m¦€¬k·ß¬|îË*ƉòQmݲÕHö·îØåŒÁÁ 4it©8Ôb—`¡—;j ¬Ìë©ÿ2Û¸&Ià~F=ç®Ó+«‚KÐy»ÕËXëó7ÛqìüÎÊÇ$”‚/r­YgÇb½*â¼Æû\ýæW@=¾±‡-^7윋âÚþÁ=oò&tî‹FhŒ÷žwè¼±†E—…NO2îY³¦/«ìñf¡n¦ú=¨°°ÚÉɱñ¼AÛwlÛÆšÚAòòZ²r•vNŽãêð1 +«Þ+&?÷˜¿•¼Fxw¨ê êÅŽ›„ሔ””[·:Õ'_ ØÚ ^ºw@C£¶ò‰$ƒ¯ï*µIÖdÁ/âú|?÷ùŽ Üt~É®´l™Œ›ÛbPÏ;9¶ºùþæÞgÞ΃×5v˜%€2ÅR¯¯¥«kÓ©Ó¶S„'dWîHgòúÄDû!o-å7Y‹ŠžÈÊUèZZú[ÖZÑ/¹nduG…‘ÑU›-ââÖ®g:nt«ÙÊ#ù6ïmÇIî.†•þa: z}MrY—Þ\·znÂîlf¥–˜¸ªEÙìšÝ‹áûSâêâ]¬8ÃÓ¨¯*KËÈH¾ú²¥%cSÀb·X´¾Lòø@Póóu×>#7Ôår¤X7D;Žt[ˆ¤ší>’éÎfããrrSË¥"5JC‘‚!»Â¥õTÝù¶n=Ü]3úö^‹[aŠóµ½ü..Á9Ú^>T-ÌÎá|8 ñ$¸ã){ œ=ÍôŒ¸K¿‚³÷qùÀqƒ©­[·òo§OäW,¬®}0lÍq8JzÃÖ3\r=oÇ`¼ o‘YÍ…;XPÖaaÝíebEÎÓrvï5Ý{Ž?{¼‘£öèdµYÆ1î•##Ú »Ã¤¥XEÜ?œß–sA£qÉ’8Óâ¤Ç[oçyz{-éÿ$è»ÊÂ35õ¹Z¸kõ®“êôΈÀ"öÊ̸ñå--g:|ÉŽÉÛx×ûg!VVŸ7øíXä[Q…usɺ"žûðµÆ ÆþÃNLxç’ø²ÂÃtt ϲ¸×ÞþJHA†aßM`×ÁW#ÕàÓrÍØ‹ÖoàáƒkÝÎÙÍU$pIõeÅ •î™hhå!˘dãžÒºº'o3amHñ‘£––1÷2ëÄÜGÑ>À•9yyŪ¿ô;°ËÐõÓ á<Ãô.ü’’ÒÒ}ûªú³®¯Úì§Åè-åê –¬«ÉÁØÃp¼û.ÆÙ¨´òÉÓç|"q“ñ·¢(ä %íªà|jaÎ¥íþ ýcbY\aî˜ôåöì‰*ÛfÜ0œ$À´Fxâ=§-5híÅKDÜG{îKtæ¥À½¥ñN»ÎâíKÉξñ䉎s°r® ©9Çå-Ú»™·ÁCº8ï §¦¶¡ôÝÀÕ;wœ jRB„?wÕb‹Ÿ+ïWUeç}.39%tù‰³‹\ýõJ.Áü[Óü®\±Ý_”’’ð())ið›²K³?W «]q.Ýüv-;FÕ37dY°Ÿ€ G&'÷Ãelk×fºØ!¯¾ Juê©“9ÙÅ,M¡8„á>°‚R"&ö!\4±§®úòÅ¡Â4Ó†  ¯5ÖqãöîõTŽ!²‹8—â³Î¶™¸,_?úùCk«õ›Û‘êñ½6ɦîT&$&îQTlLÌ»áö™žu½ÓdÁ–;ùùùyxy¥c4ü™7`To{,Þß]Ö:ЮæÃD7±esÔ®mé½UꊠjÉØ*,gGm_7â3µ_ïÿ…\YŸÚ Xì]ÍXµU‡·\•ðصóýë*ôÛ·#Äž°(+)*>ƒÝݾs§S›†s¾[Z™dœìÔc¤,™Ï±oßÇtÉÖ§.’†ÆËED´898øÞ·VÅÄh߸~!6Fûµ™¥¨Sýð‡õ¯t_ÝL“â17o÷óó³b¼sçNWuZaUÕݼ¼£EWð­ÅWC‚ƒå\ÜÜDEDÎ ÝzPo­;ùi¹…¹ù¸ªnHÈÑçrø÷ë+­[¿ž……yÆâ’ç©S×âÚn?yâóð¡´ŠÊ‹c=Q·o—”—ÛGˆ-n`‘dH¿OMíx\à½uÛIßÓ+ú´Öƒ¶Úlå037?wöì^®á®×ãO·c[E?ÔÔ¨qŠ/ëÁdgg'%}ʪfÓl]4ؤ| µ\HÏ“YšÝ‡bª‹}ãµ±©{¸×‚9.5õ$ý}·¡®å«W ] ™ê+ä¾kY;4ЮéUÒY•,&¶,þ™Êýè]ŽËIš7mòï[ºšëtíµN³t›tò ·ÄQÀkß!ÔÜS'¬=vP6)ü0fyèPg}®…BA£PGŽÑ3&3ðJHHXZZD9A£ß­°~›vìÒ377gbbÊ!Óv|ü•+WrrÆ“ ï]¾|¹¼¼œYÚÖÖ¶ºº:œ-®jh8ñ$€c˜M@PÐ:_‚ž‹KVZ²:ŠXe ·bäeaaA9vUùÒëu—M­/¾O›ˆyý Îf³ˆˆÈÎ/¦š NwY‡‹»> â“’’*---<ã¾8MàÒë…êî}îl.oð˜Û±cÇÎ;Q(õ½I!3"ÏŸ_;~:‡´Èk¯¤d~ÿ‡úµ¯ïvzY_a±/½ òTÃzs{Lhç5äÔ!牪Ţqñ°K:®%ÑÈö›jêŸÐ‘‘Ù²cÇrðK—N½9¸´÷‰»œ‚€•ËX„]|ÉÖɤìl‘16½mú÷ÚîÀ’ÒÓë²ì6nÜèëëËî#¤ŸzýÖ-?‹})(Ϥ¡ƒ7»ÄÚ˵i³/,GFFš Ï«_‚›Z=F›órÙ•_@`³×›{íl¬¬)Ö‘¤è³IŒ^^^m ÷ÝÇtÔÕÏÈG§gd(+)¸B“Ÿ…Ñ›xð`6ÌÐRYEeŪ•Ós-}ÏŸ "¡¯J__¿ËšB&7 ¿~ýú‰ÿ†÷?¾ °{y J"S©©ÊŽÆùµµnÝ5é?~¼kõö|HˆCî‘ÛuYäÓ?µ¼rN—"“ɺ‹ìÓ…y#1ì‘ÔéûÜà¡¢¢bJ¥Få Tˆ­Ï-ñ¸¬5Ü•ß÷hÃå«;ËßõŠæµ•˃òñŽTë¥QNŸV¡R©ŽŽC“cÕ ¶66JêêSÃ}Íœ¢:‰l ø¿ëèùŒ–è©I?­š‘‘OÇîC›àV•dˆ@ ̧šÁ«±Q2#NÄ*‹3ì>Íyè¾û£Iœ—¨ºHÌõë©©©½UcŸ{z>Ä9;ë=­KŠú\ˆphû¸…Åö¼I‘QR2ÿô\QQQLLÌpši±«›[€Z;ä)žXQ¥rze·@6~ñð»³SAè³ÝÎà 'ˆá'¹˜‚òE_šXž{&"×?fig—rÏ7îÞ½›™‰ËÛÄûþÝ»HÀ³„„ºÝì¨Ê787˜’RZPêxV,~X]í2Üû.¡ž­›ñÂ{DÉ‹+x;Eví{e L>žv7šjŸ:확\uhª²éLBTáyQÇ®’ÊÊ@__àó¦ç†nÉ;òàøÒ€€òi?MœÛò>¢Néž—îb›Œ^ ¸îW³N˜¨§Æ*ž×èIËï{e;r´³¹9(,ìô}5M]ÝBc¦×ÕmÛlåÑo¾–NÝ¿¿öØâe,¬¬¬,,ŽÝ5uuþÂÖÀ­Ò…äää?þðãÛ{}X?|x¢tÆÔø'¦Qã°5...C|< {4¸à‘œl­l}׺Agß¾sçÎeÙ4Ë?â²0ä¤ó–vê ô÷Y.ªßœb¿ûXGG¯‹ËøºÚ /£¼##Ÿ86lØ! ±ÛñójíÛ>¼oß> ¹‚£Iô¶ËÓWЦêr{héè\¼p¡.Ãr¿¦fPrrrTÑÁ-Ý| „#jcâ[ƒî³#¯—/‡P(ÐÆŠòò#“ãøÑž &ˆPÝd£ŠŠ Nñ#™‘‘¼õ*\)&N®:µïî?2%Ü­ËusªË´í­½kmmaÑ•)Œ¸º¬¼ì¦$Ã>þ Xëú¸¸8¯“'Ó<ÞÔºn<ÊÁÅõ±©ICGGGKëŽÇÔ䎪Tõ§X½Ñô¯VÈ™–‘¼/ðÔ©½ûöe9÷mÎ/‰”Aš½|J{]ÂÛµœÛ¢_)Õ]YQa˜wD_Y™QØW¤|||r¬‡­½½=44DG\ÚcFÞ;”l†zß×~ƵŽWkZÚ¬2Aÿª¸»²ª* ƒwà¯,H±w £¥*I¶xµ‡ êAŒ³ûL|*–}µ}¿ÖÎ+¹^ÜyägçÇÇǯ_ߺeKt¸¨‘=¸„Cgeð… OŸ=sîl6èu5·ÉJ’Þ·¯dÚ‚‚...Pއ¥+SdÛ+rB¼½hÑ"à/m÷%*EÅâ»N’mEï>2´4dm ´pcþ1GÑͽ«\ä!æô±nWã‰U·Ù2Æ–ô=˜ÈU}°£b‹Bà…  Ú;æš´éØGj3,7ùFz<ÝPa²,ÿèçgÏž wž:u*?_rÜA7ÜøÓ§O4:jÙ=Œ7Íýx+¬Çƒ®;ÁÉ{m ª’„î¦/P>üNŸî«²®Ï)-)ɇ'dg()ÔÔ{õ(1¸k{|[YLÁ‡i%¥ö‡Þ+@¸ž—ÇeüÔOSE¥³»önÂÃÈÈÈî<{#LDK¿³ê:Âw‘ùz:.ëjjº»…®¾)kíí]ômÃË›NŒ ñ0­&³nÞ¼Ù9-ÐÑËÛ[_BƒƒCNV–ÖỲ[‡H<óš5ã» Ü>#;ÖIëf vr``à­´ÝðDDˆóLLüº§5r±Ká+W¬^]YYi”F]5ù¡¦¤ÄÄÚZ=#ÔgŸª€=á"Ái!gObp{þ>Êr¼ÿ´§'ÌM¦Ô*ÕOÜÐà@‘¨–µÛùøZ™¹¹Ï“ @Ä==þî?¸%}lJÊQÖ=Õ5+|×ÑÏU»EgšÓ[E›v|ÑiœÖ=lg—-«Ñüñ}KKSòâŋ߾}ÛWeèp”ÂÝ-øÖþE¡¥Hí}ûMÕÉÉ2à_ …†úZçܸ±}×®@éHÀ d& uU'D¾§Ð¢ŸÐõ2-<ú*>.Î~§dË'OWÖLµefŸ§A^Þç¤[/Þn§“r°â–á=GŠ©©‚œœeC^î­[ŒÆõaEɆíÀ;«Æ6rí{Z¦:>‹·]žB§—~°"Ï},5-MSS³»« ÐÉGdÖª®­£Ãujrø–„ÄýÀC}%1éVo³Ã°Ö§_¯ÍP•¶ãz¨L6žêÿ 2^Ø4Ô][›Xß®Ï)r²¸èÕ+!111<Þel¨ûPe‚Ôn®½ê±QŸAÊX¡Û…M×Û³gÏ=§ž‹AAèƒå؆#'ÔMý£> vŒ.Wľ="šx.U>p·Xð³ׯf7øFÃѱD@ÊžžÛB›a¬«ë49îâîîž#0Ü^ËÈÈè,¸n(ÞÖÜfdùÓÓë…·«^âÙ¹3!9¹ø L¾ý p¼¥ìм2Yô”8]Û„~AæØ³ŽŽôÎÃ]Â\b®(«:à‚9­kä?yÚ´)çû¼ž¸èåjw‘ÞÚî1Ç/0»£E”¹Äcã–CZ9+›µ™O¿Î.Rzß¶L<³á<³Wƒ•O_UÑú®k¡o© ’éúæVyïw/±•_ ãa®c£×.Üðä^(o¸!í–©~ ì••š™±oØ ¤¢Â·õj;5š/ó&Ã’C|‹‰vîꉱπ6Hz-_·ýЍÓGÀpArÎ9üî¸ÏÀ3Ô¯àJ+ü3]³nÝþl{sD°‹[pRQ‹%xmlú@v_ÇYàiïÀ|îÝQøÎ÷þŒ0IÚÉ?¹kQ}œù²ˆƒÀ¡ƒ{Ë V6¾:[”Ôü¸m·_+Óô„ÚÔÀ´€f‘¡\ ]xã§'ˆG“Œ?FV¯Ÿž'î‰<:ÞW¨´}HÊ£í£££ã½@… ¥ðÕ+Àzî;têØØØäl„yOÑVÂÀ`+€d^±o_)`E!h¯+bn:²²ï+âu«ìVWQ){ýú|p°å]el²Ë>¾D´¦†F&÷²Âô;w>´fÍPm6Õñ´i™ß¼”é\ÛûÎRvÙëpHd Å­¤¤ÀVq«+侺wi‡‡v÷6禙ž(¾`|ÏñÕ£Gщ‰–üö&ÔuxÁKPðE§ïZ5===%%ß-a@4=u”ü ÷×Ðã/-ß ?âæ¯~nÃÃÛ®‰¨Ô'çTŽyß=ÜTÐéıºžàLS"Òxn§º9®Zµ Ø)**š×ó\åÝ[ut£Š’ÒÒˆH\܆•u•«ës•5Ú¼ !5û0˜Uþ!on1WY{žkº"“R÷%wƒîOfó‹O¶ždº{ÈìéÄH«Ì£è ‡üo”^»X±bK´É¢’@O˜Ã“•¨Ëaµtt99ļ±ï&'"0˜lp¥”;åki75åAtKé,RÜ#+û´¾>¿¾þÚ}Õi²êÅmƒbò,éieÆÙö~))Vr.†ÁŽÀRó9¶n+ÐIÆìÏ­Iˆ‹-8ýþ$SôÇ:ß½´[bN¯û?lÏÎö“]F[2>ă±Îx“S½Y,÷}uÚõbv¦3{§ïÑ»óñ5§ÖqòÀL$A(ïËÖ9$Hzw†?·\ºtéóçÏ»T®114Zþ~ûvÀÜbÏžèsçnåæ>h*–_Å'‚‚I^‘óe¹Âê‘ §OÅö;ÈÀøüb° ÏãM9o$cëêêÔÂE F×›ø ö·[7ÜÙ¶Û#B6p“ò;¿Ïù*\Ã%¤s±_}¯d±w¯€ôÓÓ>â–ýµ¾Ç—¤œ39« ;ª©[5Þ¡ øµïƒW?ö©®Q»s{;õµOí*XÎêŽíϘÀ•î*«š_ ~ P¶uu twFÖ2ÀrNU HÜ_k­ð¡Ë"*a·_[¦¤8ñ¤îÞ½:9³:ÙÕeKù°oÅúIz¶¡¡O[& &f28¢¬´ã¸¸ñîE©Œp¯ë±!Î.ήòÁÁÀ)Dñ{llç‚9¥€yN™¨¯[´¢¹¬—í©@þÙ—ûýúú|cK üýµÂ¯øsnZ©àÏÌ ôAUêeóòšÓÑi±«„¬^á“t‘ÍÕÌ,;D÷å‹gZ¥íÚ_ï°kU;¾ŸV÷ØÞpª«}ÃD“œ­]XÖÈpŒJìË«ÉØ#™ðÒÈcâ'è`ZºU ÂÉ—œz@%XX:€«Æî “Œ‘v„`háo‘­îò;}h|"h||mT´ ËÖÖ⪴»UXhŸÈ.Ø0c}ds_ó›º:Æ™ÂóÛ4µ´c|W†ÑfoÞý¸˜é£+ì°FaÂÛgæ~¶Å‡èêi‹äÞÛh£ËÈèìdFôöª._¾ƒƒ8^{ŸäÉÕyKÀab'*ɰÖ;>\—yâaט®µrÀÞ’à—RR²ŒŒ úz›={,ƒøâqø ¢"jlëO²QôL óœôÜç 3[&º˜6-ŸžAž…^fÓØ©áæÂ"8ö]F×oÐoibÚG[M·ÓTÂÖÁE»ýi³ί—öYN¡õ鳀Ǧ='¬Þ€Há–SÒ'&%TÄ¿Ÿ™›çë»*vÝÚ„#į¸M%É8½´`.1Mè¬nð}0ì*V[Ý~ÚïáàÊIÚ¢úõã‹sVtÔKÓ–»„ÜŽ)|üþùså|;3Iª³h¤Â™¨Œ·z¥‹Š¶?}*pÅYN€òa·0—¯œ‘³æåâ&VVm7·B±#ìƒ#v¡QQ¢›ßS^¨>9²MdW>’¶ ^rŸûìÿût¸¥´>ÙCáù­& zù6 q’lpkºÆÕ—ªèWrÑDÒ&Të&‹»ºä¸…ìØµ‹x(¾ó=y·eÍÖ[Ñ<ó7å˜Ü¦5Æ…u}Õðß»Gëø‹®&/{+/)ÑÈ)23A?_Ô~§>BN[û2#nÚ² ®³çö5µ.k`¼fÝ›PþBpûŽ›°båð+7ÚÚw¬ã\ßhJë7•kôç@ùKi‡¹]Kçlc0£CÐÖhrÑ‹-^tâÀ+Z¸ :x0l·~Á³goJmR3q×/yÂh_b2a‰æeß·x+Í ÄüžL54ü@Öl) ¿s$Ë7)i3ð˜À‘ñ¬—…|Ÿe^¹Òß×LÈ­ÆhhžXÓ°h­˜z<]çêúä}«nÓ[ù+WüÛcàÚU½´²Oóªn‡ái@IœMp144ü¯û¬8bý2µë8¨´Õ õùÏ•÷ï=«lo³§=æã53ÃéèÑåÅWùJÛ_†"ÑÝ]ëw–¬_Ç!oovm]”°ÇÔVúæÎ©ðð¼8þqE ð=#—;¿¡\h‘Ñ2Ð6–N¼»ªjRB’ݱ|lõ«[J£ÛŽÈáôOKóMíçj¦»f <Æ$N?®0à¾Ç”Œ£cVjœ÷ŠUº —n%­vgÌŒŒ‹«©ýøîQ\ñÕ¡Mœ|Âû©ˆ£9;B%êÓ+ÑŽ÷1ÑŸz`ÂÈ0Ð!µÖ_˜n˜¸¯çT>w·›KÁððã23!yù[jjOV¯öÙ"Ê>­2…4™žp<Õì \*É[Yà waWíç¶¢pK*µ9[`1)’.ÖŠkv¹Wu£RRšs‡…µ»ºúa­­.q()æËF–…ÞŸhqë6à—6k׈N3ÕM„}ÊðŒ¤E$SGÇeÚö¬Ÿ>ÞÈÌ<•˜hu¿*`çûˆL<~œîÑÉnÎp,·ºÅËš†{jS?4<}ºsû:_?F÷ñaŽø)¾—Ð Ÿ´õw¹Ú4÷\õbꉻƃ÷È㪷$x.H „®¤_Ç+£ÁÏ2P¦†Ñgæì¹¦²g"Õ±;=5ÕU$ü˜p¤ÆŽ]‰å<†v¾û>«°ÁvÑ\¸ÄÔܼ@=Ⱬ[!+›¨,JpóŽ¥+¼ë$ÀÅ-vpßeï hÈã /"K8.Ztëúu3ʶ=JJÏKmúAa60`\B¿Bó¸6¾•@^§Ý^ôÊäÎý F >5­ÑÖ«{lm×zyaÙW¶ô5 ºžØËç´W ØöSK‹~ÚH™eìÇMPb0I‰}ü,ëÖ ^¼˜¡æVÒþò ÷é„DõÇOZlÄîHii–e ‚_„4˜èµJ<çgQVRºÎbbF ôoï _ߥ@Ú–9µÛË[Z6Gɵö4œyokrb«`¼E}Žæ¹sÕε/ÕìCmûX°Ñtž»7‚øR´X#wy„ ÙUEÂûÞ:YÍéZWù¤‘j±©µçªé“ÓÑ£¬áj=7؃| ¿wÑx”žã9Ã+b´ æ¹åøq þvKW>šá˹uË¢a¹KÍÞfßÈY<Â>Øk¿øÑíòraÒE[^8Lq©Á!:Ø(m¢”ÄýÔæþ }@åqæ[‰‰B;wjéèÈ3´w öÛ¿xÕÑ!¿1DÚ÷E+œy²>pÓŽš”¥K½¥ƒÏ¶YñkÀ†Yi£±£êr”;~ÏÛ¬/ÇÜ ^¼8wôö_)ÍPQɶc‡ÒóçŽNå°•ú%I½¸|zEÍïrNjnÑ}Èp v˜¶â vþüE%ñE-ôo¥¦ƒÃ`dzp OgÀ¥}||¢¢¢._¾ ´‹ÃÍøø-^ï?|°³µ½¤Ú¾ƒƒÃI&n+3³¶ææG‡úß?Gwtt|îi(\¯ñÛèÓ’eË<>¿uDœ(//ÏP¬+Ó},ÃÏÏ‹l¦m¬½£ßÜáÇÏH2qÃ`‹Uhs XXY…ó€píz÷$SÂä·×vf_OJšùÔÔÔäéI“™ãB9p666¶ú,;ee¿ôʺ,;îÝ·{¥V¬8=00ðò¥êþýµjÖN ‘Bû3JÌîë•••‡ZN?qBEEÅMs­'Hè]ô°•Q©©©ååZ**/>žÞ!(È;lÒü$`óæÍ¨{ØÄ+y$WÊüС{÷îí×;Ây ¹sçˇéݾsE¡P€Z}úTÑÎÎ.î-­¤¬|e~þÆ!!Uו‚˜¥•””€¾â´vbaŒ¹vM•gdF†–£ìkŠÞ"(XÛj·(Ÿ¦. ƒ=^±r¥ªššŽ¦æþ;f¥@ˆÕ憅„`]úÉ•WA ŸÅY†éììú„³ô—üÕKðÈxCAÚ°}œVæºüE½Rt0æä¿Ãx'¬“t Ë®µÈ©§Þ0Çù\nÎÙ³ÌÒŠÀÎàkd Å!ýPÛFØ2Zjà©Ïvè´ªÏÑ7 ½”£Kõ^:thô®]»:«’=Fú·Õ+“Ɔº‡ï?~t•Â.9†Šªª4k»W—ÑàÀÐÐÐêêê±Ï=¦BÖº)‹`<4_}|ϾýuÏý©¤¤¤ïÞÙ|jÙs$2---*Ѝ¦V”aY[7ý*¯¨øÜ]ëÔþz[N>m }²QbL Úª§  £´ýÅ÷6'‘^ÚìÅE¡ºÝ€3³ÐV™²ËæZ$âÙ¸»jki1K···=ÛÓ‚Wì‘:´–½ˆ¶(u’åÛ‘Ó£àQ[è<§h(4ªå~îÂ…ò’8qþâEqÛ÷ ¥kåO-ñ]MÛôÂ;3s¸»ö®o ­´vÐ"2-êhÊ›gZÃLg45¬È³ò2ÌS*äüyÚö0+ÏlFX>Ïù³gÓEø·mÝz*vþx zÑôyöβ¿Ä“©ERON¼ßÖ¶d;±ÍèxôN‡ß !1ÓûUÿµÉÈš<†þÀ,„¤†Äa7LtëOí‚õwñ?½/­‹-úí¬lI”_|À߯?‰E!á_íÿÑöBaÿÅÿûÿÿÿpÿÿß©÷]î2ãÑœŽAÚÞÐÿ=à¿§ü÷t€ÿžðßÓþ{:ÀöÆþÕ§ü·/öÿl_쿥⿸OöoÏ\þ oÞžÎÔßï =óÞŸ(ÉLsà&3§úÝO~°?7ừÿhà'U°þávÚ3Ot‡ö…]Ó^ûÕ¨¶SË™@þê]P)Ó¡ýE¦Në/£žÎÚ_ge½YœÖßЗ¸øía×3 üû“"áR$üÛ“~}Øa[ ¨3‹Þ,¾Åœ 2-•ÇØXa¯¢º–:ÂX^IUNS_ÓXÑø'ü”M³4 ý´M3» Ï‡MˆYlBü øÈYNŠüyð­Hd Ïv {Q{sKkÛMíEçÖDÔ,Ö ~É;{ÀfìÅô,ö rÌ,'ÅüR#ÿØ‚dM¦|¿Ãýï›R›}û<ñïw­¦e'‚øÜÂÎÒ&ì¿Ð¦™1¬¿jÐô`Ô/¶7KkpÿBk¦ð—­™ÎÛ¿Øü,­Áÿ‚£fIÚ¨¹$활M:lá`Gû3§Ö¡fÉÔ¨¿ÉÔ‡(.NÖ¶äÍâÀñ)¶V_äùæ;{[ „ízôËvk{Q™™~û‚ÛOš:KG!~3 lÌ©<¿õõ$kË™R.,ð5¦<Â?:úÛÓÎ øY* ù n…þ»„ûGüLóï©Ð†BÐD*N¥âˆT, ‡EP $‡¥@޶ž¡ð³ºÈ——üÐGþð# ^çèh̵˜€…“ <‚LÁ’ D¥É<œ@CXœB!Ï@‚ù$_Ø<Ïìl¾íQØ;Í—Œ•ÔäÕÕÔÕ䦟iñÕKŒ¾ó7ë~pìŽ@ã) ‘‚ÂáP2‹ ž'¡!8 ÎŽ]0Àg·çÀi#Üš®f´?ÓØÿ$츅ôs*œDB žŒ§âTG€ŸaÐ88…%ÎÀŽ[8?ŸÕžo`×T2ø{Ø?;~a‡#ÈX,EA`x" ‰D’($4Ž€CHHˆŒf`Ç/ì³Ûó ìºJ²ZŠßáþ ìÈŸ†_HØ p§À1|ˆDaÉp<‰Å‘ˆ8C˜†_8ØgµçØå”µ¾ÅýØQ?;´€°ã)d$…# Ñ$C@ãÉ OY"Bô ìЂÁ>»=ßÀ¾WNc’¦¦’ºšæïØ;úçaG, ì IBáX2x‘JBÏ¢âñT8ƒÇ`¾ÀŽX0Øg·çÛÜ®%¥¥­ù7ÞŽùyØ‘ éí, GPàX ƒA@x<MAá‰D‹ÂÀá3°#ÎÛgµçØ÷Ðøw¹ûó°£’É‚L&aGƒpžL…#°d*DÅhz|Š;já˜Ì¬ö|»”ªê÷D†ÆØååçÀØ1³ŒÂa¾…sŸïFo—™¾I»¤dEµ–7§Xíhý¤ªÅÌ2â‡Áü‚TÆÎcÒaD¥ÀñŠJ…GEàà ‡ªwÚJ,â,•±È…k1‚#ÁiÏÿÄb¨x –!1d"Š€ƒãqd‚‚˜‘ÊØyËwó`ÏoG+ìßKå¯Tò‹Z@ÀAJ¡ Ip<¡‚fBAÅQq ºD—á,jÁŸÝžoד’ýðïTò\`G/$ìX M ±pš€¥Ð8"„Âñh*žŠ!¢f¤2½p°ÏjÏ7°ËÊ©ÊiÉý˜ÀBs„³€°ÃA}Á!ñGÁƒæ¢A;Á§¤Òž¼;;fÁ`ŸÝžo`ÿ®®UÒçø,7°ØV×g¯jÔõ½[Ks;;ÚÜ»9vì,7а¸_(ì¸y̺xˆŒA hMGáÈ8. ‹"‘ ‰X*jÚJê\Øqè…k1G¨"§à(pgæ)à{ˆ@¡Ýú£A2o oìù-òf¤#(íZƲêºjªêR²rÓ5ç§¥ ³€@£1$8Ð M%"q$ˆ‚§ PPÉ(øâ{˜zv{¾ú[ç”Úp³¤6Ü?Lm³Çõ©MÓž`ï0—¬†›%«á~%«áçãvÓS¿W_”/7É-øy½7sÅßï«þ°OfµêŸLûÏO&CmÕÂ7`Í•dãñóŽˆf"áH¨dð‹%Rˆh"Â’ˆ˜/éäoîóý ùÒòófqÚ²£ßSô¯a:»q´KÑlÛAþ*®þ/àJ"¡ÉàÔ,Š@!AdA ðI™™-.ü·îˆDüº;Î~}'s²½Ùýñ'aƒæ6*îT †LyA€C,DEáð$œŠ„(¸Ø  ¶Ù¯?³ü懸ý$lˆù‡ CEQ 8… ¡ !0XŠJÊG`@b¢Rf`C,ÔÄߨñ_í˜Ù[xøWd?GÎoP€Ó(X2ˆÁ X2•x8Ž€° 'ÎôÆ_7Óf\ÿº Ï~uKÚþ¢ý¬ÿýìnðù?ET !)T$™Š„ãHOÅáqp<‹„ ø13ÿÙ^GÏbþ/LN9O®´×–âhNqú]3ÿ¿¡Œ¾5ìÇÎAAò_@ Ô>,‚Š"CšH“À$ð „ÄQ‘4”y&þ äÿ1‰4×6þŠJ‚ Ô¿Ò#p…ˆ"ãÑH2‚„§¢¨X ŽDA£$‘ˆ£ð3=‚ú?$”æÚ¾_ÕJ„þWzO@±p,O&S (2”<…'R("5Ó#èù•Ks5áŸ*&Âü+à¡Ú8ŽÁààh‰'ÁI$èo‚LÆÎ€‡Y@Ñ4WûæE7A¸]AÆ×Ñ4A@ Hd4ÂgA“1˜™9àÚó«æjÂ?VOþ_t§# x8KB`1d*ž€„ƒj4þßovþ±†Büý’%ðù?£ŸDÀÉT  Ì %a±@ Bx –G#inAß—ô¯¸ÏO’E4K ~aù-„˜¯€”r ›[ÿÁ?¸ÿ7øç×fý裹pO~Þ±Úü 8<  ðd,‘‚E£ˆ$2ŠŠÂâfRÿŒyέ…¿Ä;‘ð¡7 <œÊ†LÀ቙ þ¦  †PäL.DÂÿ±Î¹µî—9'úzHI"©T8™D"R1’„¤¢@ÀãI3 Í/㜛?à›? â_ KS¨XšŠÂc"BS‘Dˆ„†ˆž ±€,snÖÍ ÇœeSè»M æ\é ,q ~h¡à´å-pˆ@ÅO¡|ŸB¯3?Y’gÙú~„Ÿ:)j¾âó‚þß(ñ?®îs)ì³,͆¾[šý÷ÉþgÆÁþzìðÌï?Û«³¸úw«°Åð¯¦6üÅÌð¢ÅÈÏš<‹w£PÿØä¯9ß_Q>í÷Ÿ5z–Á_Ô?\ƒ@Æ¢Ñd`GDÂñ$–B¦!,G†€²ü+›C6Aaf1ýV@èyœ‹*,Ä3„'@8D@£)4‰L"Rà ifX üßNR„Ш…k1ð3 Ž!¢ÉD Ðs"‰GQHF`¨ ;so=ocŸó`Â^cM-u )¹é…?ÒRšr?XùÃý6;¾cN³³¡ù\¶?ks p‚‚À‚¤‰p‡&á‰T<%€â?³O4ËöçÁžïàW•’–Sýóò?à‡æÿ|.hžµ¹$ H~h ޤ¢ñ(Ðh2ŠDÁ©´aêË8óü-hž{¾ƒ_VNSFCi¯–’ºÚð5üˆ¹Â- ü4‰Ã’x"‰@$bPx$•ŒÅaŠ„(r&ùÌßÂæy°ç;ø¥ddä45ÿ´Úóø‘s…±€ðSH$,’JÅЇ £ÉHœzhtð¸™Y@ó·Àyìùþ/¿»yÈ×ð£æ ÿ’éibX*D$≴Õv(G@øˆh 5“ûço¡ó<Øóü_öÔ’ÛóU| ?z®ð/$óAðh‰% ÐpæQ$ŽJÁaH´ÉÑ4øŽùÌnÏwðï‘Ò“‘Ú+%£¤¥ÿcïÇÌ~ôÂÀÂÉ’ˆÁh†Š$àx<…Ä`)$õKòA/ü³Ûó½÷kÈÉiøåT¤õµä¾¯áÇÎ~ÌBO$@ÍG""±X ‡£iCôp ‰‚C`03£ÏÌÂÏYíù+ø•ö€·~?nÇÜÆò0¿’|þÏ„÷ìâsFxkÚ[ÛLiý?„ÁÍÒ†_XPÍç*aÀ­d‹‡c)(8{d »"žBF §7n‚°ÿã­ò ù\ ;[‹ ˆŠÄñx<B¡çÁRðHŠ‚üGÏ,™æoî<Øó'f¬­¦¢¦®«öƒ}~pìÇSi‰ˆ»¡"q$œB$‰@ë’€›™€‡Å.à³ÛógÀå•ôäd5Ô÷|½ }.€ãp"Ãqí.§b)d,AB°(ägÇ-à³ÛógÀ5äö¨ëHI«ÊýºØôæx? 8~ÇÑf£“ KÀaqCEO?³ =}7ñ‹‡ã ðÙíùK—úÚÑs_@ÀI‘6fI P!§ œQ!2GD¡h[VÏh |ÁŸÝž¿õp©ß<5þ„›eÎúgüivêð Òúr÷'In–ûr¸_ØóÂÍcÐS¨ –6m’„¢R h8mU$GÄQDÐÉ34‡ÿ3'<|áZL MòÁ’@ñ„cáh$ OAQÉ( NB¢àH8vzk`Ѽi˜nÏŸ†§wóÑÕPÒúÑ=Œ¹0(<´€À# (6 Ï€jmÆ€BŠB¢P$$†Hø2lއ øÙíù1ðêjªúÂ}ŽL X@à©(†ŒGƒÃÈd4 ã@HPX8A""@=ÏX0àg·ç¯7ÖUÒRüf[%À¨æPoð³LHÀÿù7³'Üoꉶ¹ý«~– ø_˜ƒ€Ïg* ÁiT &aIx@*p´•§*-2 ‚0Ó)‡þ·UG,\‹ T O!Ri‹šˆ( ÄšB$¡ N%£)3Ì_ þs{¾9›ì²ròJjßl83÷ªƒ€#x8™ÞU–Ї8"S±d2í®4m uxä‚?»=?^ANMNCIF^UêÏQÏxÔÄQ0€e£q(* "E!á†À“82ffn,ŽZ0àg·ç¯WT’ÓÒÿÈH©þ^uæ‡ ¹ˆ¼‚õ/ÌÛB€€ÁɃ$`) D(ùÿ#ïÊ{Û8²üWi$ÿ$Fà©ûð (±ìkÙ†•̱ƒP§ÍµD <œxóÝ·ªy˜¤H¾>IIcÃ2Åî®®zçェzE Ï[nÖs³‰6Ãyp~©¨³øµÅˆ×·ßTäè‹?ÄA¦šIo±eÒ:£ƒ$Z)†‚3sþ´Ý'{àO+Zý·fü`\nr \”»*Ò\öEóà-CÜZï±W*ä1³6êäȱ ÷”æpï¯ ×¯LsÕ›òXçs€R¿ Ò&ÅYgrE$°9ÍÕ=¥9Ü{ægë. ÿœò‰®û"º ØyO°7)N`^â(O¹!.$³¼0.G›‚Ù“ï’Qðˆ—[®þ\wŸ!¨/>)«…7V2I1ñ&WmµH"’ÔÛ¦—Se„ cAle¶ç<â8¹Ë©Š|ÂýñÉK‘KoæÂ›Q.œé‡C!m†ç|:ZÊù`ò¯}‚GlÊ·6âé‹OL(ÎqHaŒŽÆE„¬NÝÔRj Eó$ !ð>Ú>| Ü9gnL¿|²_¦¡N%´/’æ¦JQLq”F£äûv„%„Ï%“”ž†¤pçâ8„urÖRÖI9óT¨d†MäÉêY¦5)VRA"Aäš°Óî\&éà&=\Ÿ¤‡w¦ë-7,ó|RòÚÛ˜¼šeÑÁ‰\HåÃŽ t-f¯ˆÚ " öÚaF½Ix(á²h£&á° ‹˜;ßgH(;ýžæ9¶¸»«yþ}­Míj©* ¥¼ s‰¡äÃ<âIz¸4Á^™ ©R4#E4&\®¤æžè XRŽOb¿Š+Š] »´ÓŸï:ãAñäIœ|_•h@¦’ÊÞ‰†’_q/¥ñ.…}ÂÅ©K*îC 4¶‰– ã‚j]­Í@3ÕDz5ШÞψõSÚ/Ìpf®‹àÓÁðÃÚAí•zÁWµJ×ë‹Ã&÷Ìímú57Ú-Øc:Ýh8™²®w“OâèÚ‡ñ)‡Êá ã`J¥»‘$:å®þXú—ï~ §áé‚Ê«ßçäuó_ªê Pƒl•Áèö°À‚Qœ)!©s)°b‚‡À˜ô^ã’oÛ–I˜^ ^¹ŽF·}˜æ$¡‰GâÑSÊÓ\3úЊÔauX}êÔ/³£BLž#k€¥¶j‰ô¡e2’ KPXë|Ú”ðDiάDØœ½«eù×{ efܪfòŸ¦e8d²#-[—¬µ˜:Rª­T2Ê(‘Ä âSp@$§^èuî¯ÒryÔU‡à8¦:5"_;{GvR›>Ùv “éÞm‡.Y %°EØa.Ct>î}f2Ï»6m‡×a¶ÌÇ#Á@ßýÇaHÀjŽ{—P.£´QÅ”Æ{n¤J½p1(/îHè8$ÿ¶=ñvšH•œ7ØðB8€L9­©®å‹q˜Žás \k¬‚œõ~b2XGìÒ'Ã,Š2r7”:‰Ý¶|¸Ñl¸!Åz@”óZÖë¨V€¼ÿÔ¡%D20‹)fõˆå£¼!8žœ¢DwR‡æfsò±H€9y=ÌY‰U¥k›ÝØnÁv]´Í8ÊÕýÕGr}„,2 &—òŠR³(|@Ú••€ fIhȶþ|È1h)˜½ä’Oµ E Ô‘mIû2Z=¢Ü ŠþÑaÔÎ*K0å! `”8%X žx.¾#ws;³f¹‰ÝÔ¤µÔ=¤¸E YÐÈ[`W°jÈûõ`’'‡&uÁ¶žàõgº“æß=ÙçÜó¡ûþ4iAàAQ?-ØWn°u217è’¿˜Sä:}ªJ˜ ÙMæþ<øÕ€½™š#«0€Ç¶ëlõà\´tÔ`— 5‰`ÅÚJPþ§m¼›XÏìœÿ¾r0ŽSèšÒ×…âU%ë$ê]ƒÀ(Ÿà%Š\[Ž8áFù d^óÄínq,Ù<¹ÿ(»Ž8JxJüèÅÀ{²IjQ¨IVL-fI)§b—ùÅš@G@K²®€Îe˜–›ôN‡u$ê$oæ×û€;G 7)îÈêõ@_R6S— j€¹ŠP˜T= ¼cs à©»²(/OnQ€Tzh({G~x(†G9±EyÒ—IQÊPôA˜€ÕÿÔ§ãeE¢àQX̨1FJá%³\æ2*w“îƒ%UúS(JÕEQÇO€ÖÓËŠd ˜ÆI+€¹Tÿ{#hŒ6Ȭgc'” ÞkE…– G•[Þ½~ù*€•z4 VG¿X©ô=Ö/ àD¤4Õ4®žB¨=A¢L¥I‡(?ÿ2Gù§Z= Tç$º9:ÖÊuÍîÉ êÁ} Í[ ë-ëÖæÐ¢û‘Ö[áÝyD£¤¢e_CîÜ'n^«®,èû`ü=0¡€×úá™PŠ;ötý!šPŠ00,üHL(E)i3ÒUaQŒ)`©Ú' ô©s°±Cbì,Ví.ºË:!á“Éà+s•]âýP°¡W£@5XŠÄñj¨K‘ìÊ«=/·G}õk§pj)`¸ê!:5 J?H§†_ѱŒÂQ5¾÷¿rXZ ×–p%=é³ œh'•Šš«Éó¸ %Snbn`ros{§ÁgÀB˜v˜ö»û–)Àîê+xνN?„ 9ÇULáœÁROÊ㈶w…¿©¾EyT‰k¢ÊG¯»ªÅ5Qív4U'”iG`ÍâšÙ¦£Zšâþu3a‘yÆVÞ)M ñFj¢‰È¨xÐS­”“™Rc}ïçôº•N€qÒ`FŒê’ª3bó…Ü5çÄ(ÀélNìÝlcNì$¡/i“¥:‘šmv?ÆT/ðªäRÒ&vŸPI—Ñù@ë`";–Áv©KÀ ¢z¢yç pÑDw›¹<»¾>aâ’þ—¢ûd½{[ `ŠˆÜRuÐÎPÇóÁx5…|*ÔAÔA ê ê ÷u,‚„î5€'”?MàmPÈŸeË)ílBmý$½:&OÐþðp>ãÁãŸ<©:>fPÝ ¼[Kâ<ŽGq2ÆÚÎѪ  §S†Ž„OªÛ@ÑsºUô¼b£€ë>BÙp¥t^qn‘°t“½ôdßi7åÅGÞ¬7º·Íªdl{èîne¨Š§ ¾ÿW‘€ãg»ÿ¾zQËëe†m^~$}[‘1@ùeº§ü2Ø—2ê©ßÀ·r\©7kIñòúílQ{¿NWÌI¥®ldxÒõÅÄ–¹¾®ÕÀÅqZ©3kÛäËëË­©µºx6Î*uår«+“&]ÜÕžâ»{’+Ÿuc>…+?×ê à{¸hÔ•q¸}®ßÀgí)'{`»ÕJZjkÃí©ïzhßœ.‹…%µú˜]®khô×Þ$®Ý \)Õ¬îVœ^,_mEJŠRÑ$¤ŠcÒ=Å1÷NÅ&4[\›i³IxZ¼/U£ C1ˆÅ—Ѭ0Þ©á÷"½A $ °¤‚Ö X%=B±Ê€³IR¹‰ŠÙ •¤ÖzÌ,UÔrg=ó‰>”Ê€§[ª¿¤µŠ_giÂC[Q TפG¨®)¬ˆNpmlPÂ`IX B ä1&šâ¸g]` ŸÑH¨¬IkUÖ<ªOá´Kb—žGÇ¥>…Â{JEä’»rŠbS‚–ÑÝ£ªÍJ"¢TÖÉw>Q|L‰€±ì—DäÜ#Å‘L8ÖøH,"‡x”Jêïî’Xùʦ¡D­«Z"È@6™–J£R)«®o>ØÙ‡õΦ@™R*ûÇß(HŃ⑬uJúè¥@Ìxå¿sŽºŸÝÜöx‚Te™ÀíveÔJ%H©:çnÇávÝXþšfìo¶‡­h œß¡ê˜ IôòÝ/o}K®^¼z}~ùË«_®®Zk:uß¿¯„\þÿ*ká•Iî”bÆ"Ò%çŠ)cZYC UŸ)¼Ñn&TI±C%êVÚ·Úßñì³gyWÙ|N2m³ >¸Á7?®v ÍoÝqÛÈ}óãeºXŒb1ýʹ½§ÅîSôûãóÃAÎz>ûËŸìÅ–É|úñY.#T>€æw í‚ÖŽh♕ÉÀ²yõÉî"ï¬Õ!ÇØ(0rØi”T†è„À±d’p&„Ñ`Æþr«í_üòÝÕå¯oߟ½<õæÅÛô9IëßÏŸ_½?»ØË§Ì€³Dö?‚/Ò}ËÔúÓâ»ðôÃÓâòyúòû– ÁÙÌ7æHp(”s'Æ)-01 ©g ×”àp»Ëc¾:Áe2d¿Ü|p¾ÞV|¤§Çîã—2Ý2i«$×.jL~X0Š3%$uŽ Ç1齯‰\MÉ·»»úéê`èýäÏ‹=<üÝ6ª™Ç%Ê.2ˆþšÜønµkpÓ.ªã¯ÀóWà¼ßâ%É+{·q˜Å`X~ÿy0žÎÌu[rß=#密ªì/2,x_‘³‹GˆqýÛ§×øÔÆªd•¥(YÁ„~• RÚ`¹5œIgË ¸Vn§œ‚† ”œ|Û?û×^q¸xuq^ÞÕ©Ôu Ÿ×¶TaüÞƒk®6O®iÒÿRlܳ¼Ú¬™ÔœÍü`´£‰¦Œ)4§žiŸ¸*9³Î³È’ m$6å –çÛƒ/Øõð³gq®ý¤Šù*pù‰bùàAúi0½1“OÙlMM¢o u³8%ëWÜ„|4ek_‚IWŽT4" î¥4Þd…M1-u„¼1M} Üî¦;ˆãêºüÌNϱßÌ¿H_›(æÕÖ ‹\W½9šJ”’R9åXŒ†#Œ<§HY¨ÅÆC aÒÐE ‰<•Nˆ$T䨰e퓆p«ý‹·ðíÙÏWïÏÏž¿}óúá퇃I‘××|)Þ¯¿´VÝTÁ塚¹MÙ©:ʰ|®C(•Áñbzñë—ËÙÂ:àêe²v%¬ÊSìEnV>u‘Ûj©€XPܨ‰HŠ„79î0 i\dJ;†"ÅAµ5pû;AÍÇ0øðq Çõ”¤¸~yóVümà§»55¦ü»qø<¿/ˆORÈŠ)r6yé’÷Q—+‹××'þâ úïØýx·,ø¥¼¼äÁí¢‡mÙ€u ϾpAzc… Fú˜bp%Ée¶A¶­ÀíïT€›éà0ˆùŽDúÅûPýÈâÀÍú|g·Š@»QFÍ^Ù#!âÄR+žB¨"ÞË~Å>Eè-ÀêLZA1É > £6Xl8„;ïl@D8f¸ÑÜ * ã(úôEØ2CU J¸²~3(ÖþÅ[Pìâìï?Ÿ½;ûùÕ¯‡¡Ø…ùcp3»)œ¹5n0ý’ÓŸì—iû$Î+AûËú ©ÎG5Ë„I=%2hêXàV0®¹#½e}áßÍúþöæ¿Þ¼ýÛ›ƒœømøi8ú}¸Ì÷–ÚÑš²:ˆ0OðŨl”LI05Jl’»”FÆd5˜5X{5‰$¨€‰‚'/ËdãÌ{/N<ÈCWs¼úïóƒ´ÿu GóÄGŠJR|Þ–ô\õiˆ¼I~3ï—õ6yTL­³ˆÅpˆˆ˜ÉЛ!‚_¼%ý?]´·f’¢ƒÁ8¸$ü)üm23××_Š?åöÿ3Ka ^éEb™Nû|kõà¬ÔÄåXD°£‘53,e½¡¹Ö¹P¸ý¨éᦴt£EŠiâXô( ‰BXqDV<õ!yQ£ÕDQtYXVÙtKN£t´ñìU/^­wçï/®Î^¿>¨7¯RÔ=šë¶Ônå"¢vVY‚iÒ`¢ÄI.‹ÉSz.nì…áv7ÓÃY–¼ºI“ùS­S&us!Y]CþÈà×,gœŠÉmêfR>¿ØÃÚ:+R.wi’´8ö…ÅûΡò%­aB7[.tÞ@u¸,haBÄÆ*„œQ{­,c˵yýTøÅwêûó‹·=û)ÙxiB¹jÔØÄžÍå fø¥ø”ä:sÊ™qò$aêZ¯TP¨‹‰'š¬§Îø©œ"$‹Kc¹PC;Ýzâ ~Á>–ì˜Üt7*BÛäÔp^%’½0n7j"%E 0IDrç)–æik—L Ô[Ü¿x#n¼øõÕ¼ÜÜI+vA ÚF÷H´²’$°d½R˜!MeB¤ L%#Õ8@„ÛÝaæ+Ü¢<Ê.ûXìl¬b•]ÉÝBL«õ/^Š–å Œæ* N‰ôáS¸–?ÙSííÛ oÙÛ³g9Õ>™ÔXwV>PÎú-ŸÝ‡ÊËÅmß &“\æ©õŠ8ÒÆÑXB’²Ì" Ì#–ƒ0ïCŽ'ï ۸ݭxÂÜÔž¸ÍÏÔp(¹Ò‘”¡Ëæ= =ÌëÑèÓìvåBr Õ)ƒ”dÍú}0ý˜<é,:É55³>ª½ËÛßdýã=Xú˜"Òu«iìh6]„¥í—: Òc´¯,çŽ:›/*gÓv<-ƒY£~¼6ÚO½pÚ+| ž"¦ åŽDa¸ö"(8‰„ÙDÌþàøâ ø–Óh¯./_½}s ‚8sÇ¥f:q¸Ï‰€x•ÇÎR)±DˆgÊ!á‚"B Þ&àoe^¼??¿|wöóù«‹ôÕaŽ”ëô&·Æ•‰±ÁMÒ’æ#E{L B•Ä2i”ÿßÞµö¶q£ë|>¿b6û¥lÞ/Å¢€k;±i\$Þ“S,¯®°ŠeÈrÜüûór4’%[J3œ`‹‹Æ¶4$%ÎïíyŸ7ð`Ã.¢èy*)b‡‰߈: yrúæìýéI&$éÓ²‚0™VwM|2nH‹èŸAS"‡5ñA:Lp ÖÀ^ KP¥ƒ.N™xíÀzþ¾ÝÜ|?i¢3E"”¢˜9„=|Í ‚µD¾´yuVèæ6+cågi1‡|¸uÓÑÍ‚,;`Y¹úŸ„‹µ¸g–.ÜoKhÏ=ûD%<špRS¸†gM O”æÌzA„ź3ž5;î’¬®Ž·µÎÿ‰ÈÖ£:=·ê‹á+Ì& <¯ÄrJ¨ÑX÷±•4†›ÃRD’)O–9)@òØZ;«ÑùqV÷ãÌÌîvŽF/®Þ²ì¿L@EKˆÛúºê‹ßõW+w‚˜F^° (ìÍa™Œ§ .£ÖºÐy˜¥å<ŒÝ š]p6¾½Ç£™ÍõêÅþèJòbw"¨ÓT3é-¶LZ&‡$Z)†‚3eîZ~––»–€2 ]KF‚5W¶K¯çÍa7Oä×§Ñx\ÙP=ý|g2:¸ú³ö¿}”s-5`ˆh­E°Šb è”ð¿¶±»°Ë».¯æ¤Óéï}%ÝCÏ=ÄÜCr_õ" Ð ‰z¦[_Ï^ôði¦Ë ¢µ¡V")µwÊÃ<'ÈjÊ´ AXà ¢óSlCDÀ-†æCºˆᣨÂ%ƃ†ÑÚ3P̓S1æzÈO¼Íõð÷½ØËõP ͇LL¹®ÒE 'âðÌ= %:Ф,A0?ñæÁOÎ.N÷ɬ^WŸ¦£Y<ƒÞMò°ÝwAe˜6Û#—ó!î¦;…)·ÇE&R¥,E4Z”ÔÜ‹\tvCåÇ}Öjwm‹„…û ¯5Ÿ÷xL ޏn0aeózù ç§àŠ*éˆÐZÁ4^*°¡(ÂÐá0Üù‰ŸlÛãÓíÇfù0¸˜fÏ™§BIÎMäÄ"Ë´Æ–D‰‘…ÂõùYÚì1;sG÷ŽÚÄj‡=ÜèÕwW`+ƒÚ_Ù¯òþ—þÑû^©>¼ö]¯¸ˆÂbF1R /™å X:%³ã>M¡îʽ(”ûbÿXîOc¹µQWÔ!…ßÃaß|ì=Ylz="²q ŠÌÖi±hÎŒÇÖ¸W8›škS¤á¶—¤Í@v¤ÎèH,¹¢úìIq]æÿÝtJ¸¡êýÉæ]å‘°åEÔAL…·Ì(¤•w$?XÂG~ⵄ]¢?嫤%€ÕÒц‚LÏ«„XyóÀql±Õ¼7°:?Áf`õ`™Ê%ÑÕ½À1£”6%Š\[Ž8áFy8/P»¸sòe~ÜM®«Z°ut{Íû~3ÇWݤBu{g›¹WÀmÓ¹¡^^˜èÂ4Dê#˜Þί£Òp†€†±îŒsËû4§° Œ·6m7 µWÚÏ4\Ýá (Œâ•;ï öÆ Ï¼ÄÈá)7Ä0™ 9üó³´˜³ý¨-—‘Ííô#fêïSfõL+²ÖýeJO‰±YìŸjv]ò 'jÀð­áÂ!®ÀÎAòh©r8è„“‹žaM‹ïî0ñBÁùxqtñ—'çŸÞ¿;?:iÁí®”Ú€p„°)Š7—ÄŠu@ v ÏI 2”Ÿx 2tñë/ù •¦·ì±ô\Fie¢ W:﹑ þóÂÅ ¼èœ–÷qñ X‰}–ºÓž–Óñ8$E³h†V³­R0€U‚¸µÞc¯A ¥2b6jEV¡X!?K‹Æ;hóõuí!ïwé’'rïãèó()³Iurþq>NiØg›ä« udyîQµhŸ²è×Ñ+¶Ë2°Të‹§¬ì”ŒÜÝQÇ| iªE´\bŒHTQ D-Ü4$sTä'^sT¤^«Ì©Cv%]åYL(Îq Hêh\DÈj㜖R«h(Še»ü,-‡Ý‚Šk{Þ1ð¸Ó6m`’rˆË“}Ò À­Å×QÙêUã¯CŠ8ôÜã¼ë’>?uJ†(¥JPÃ;Ç=‚#D2öÑÁñ`SHìM Ÿ#Ò}b>Ý‘Á³¹v'Ï2Ü‘{Ê•=C)«eFâ(õ'o¢Y¸ÆÍàkzͱÎËXJ¿J6·ÅašL¤à4·Ž(ïKx¤×\P°œKªÉO¼!©æäøMëjžŸ%¾”¯ãr4$°h(ÜÐÖ¼óNÉêY Q“Ú÷yâ ¹T¶}}$Gìà7Ã,Š2r7”:‰;µòã®K+7¹»ÞÛô­; $ÝŽÓØ`[Òš,ɱ ‘š î¯îŽÉÍ>ÉýÜ‘O‘a]Ÿ^† 2`há•LRL¼I^@‹$"`Û[„ˆ-Å€‘›¥ Rs;ëSªZôߦ¬…ZÕJ<°I§Fƒf#B‘Ñâ`m" ãNÛ¨#‘Æ€Éè‡ËÎNüH¶¾;úñ´ qÍ©³zà`{Кo')‘Á”sîà^>Ð<ß3“p–ckµMøF"ã&ò`,’ wsò?V|æå/Nκ¢W¤Frã^IfÅÜDÅlÐJRk“K’*ê éŒ:Ë».VoîºüXôûOL‹üÇÍxbü‚Ú²Nˆ\ÈôyÒ_F®(cQýÊ Ñ` 6JÍ¢ðiW#L f„KÒ½ RnÜ U\ê•êTÿ¥î¹Ë±¼ù â :ÛÇ„ßí­sûRà¤Å]¾„ë%£PïÌ{±u‚BB^{Á̳,Z#˜W<©¦|w:´ì¸ÛÔ“}ÀO{Wۇ݃l¦Q,;@*ž®nªñZMëËME­[š£†û¸0?…þ÷V–Ý÷„ J¢#ÖÞ ¬V‚h‘>â¨@ ˆG¢“Ÿx-Àœ£¡>«›E>ö*9E)~jQ‚£ *%ÑÛH¢#A#G$&H1¨¯S2?þæ‚Ͳâ«Ûöäøæª’…+e; bª–">Б0ã‘ÅôØa¤ÊRfï@~üw`%Jµëmøe…#j­û6¶‚•ë‹:I™ôZ8!"óX0­J9SiBælôÚüÛÒkÿÀ…9ñ ò„5 HâáMʤG:Q±:Kf0ù‘ŸxM~¼==ûéíEV¢Ï‹¦•bÎÔqœ“4F‘’åˆçžÂ×FFiGP$pÔ f›ç'~Bì^ÿž5Ì×0¡ýÍò!iõ‡bÍ߀£Ýv›_ÝÕÊNýÉ»+íoî®Ýmͽ`›ú^¿ÙàIYÔläÜ#Å‘ôZ‰EÄãÔ^ÚÙƒ–÷1bðóäK'ÕCÏo†¡úPO¹†¡ª©æK©f©†ÂImQ;èûª%µíA×,Ã+‡ä\Jýجíí¯æÉ«®«ûäÑjLÚ† vQkáQªn±çetz zÆ\"šul5]ù,á­ôã¯Õ—ÉÈW/ÒÎi¯›´LÇ™< pWS:NC0UÝLj¤Âm¾-¬‡ÜkTa­æŠEE•SœÇDBå…ÓƒíµüÄÛ÷ÚÛ³ÓGàÇñÑ»öÜ,™$k–°!I]##°U8\æ=g<)k†Idˆ³„rå#uÍO¼™Ôõüý»_A ¿x á»Óýø]¿Vç×㯭ì]½§&÷·Õ<á­?áë …e„@Ô¤W^I§RE­#R`}‹á@<ù‰×Œ£¹‚˜µŽšr só¨úÎOî¯3øÞÒhߘàJmG)ÕÖG*e”HâÀ|'1ûõBwHûóƒ®ël»ú—[ã€i…™uó [Šš1¹ô{UÑ”!ÉbÐë²RÂIµqšü¼¸³¥Ÿw¿êð-lSM×jË€ýKÍ÷u–pöµ¸òv;sÛ ¹.öp˜.Í™}–dÙi±Ëºº Q÷=UƒÒ:È8Ø­ C¹‘Áp0)˜¥'ê(,³ÃÑ:d'^£uØAl×$ìE™x J¬A=ñ^x£´QÉÀb#ðÝA˜Šz“Pæ'ØLB9<¾sã)Õ™²#yX A³¥Ry§453REHD“[óãn¤bèâòYéÚÛéÓ…Üaî°©}5å8k0Že0öìyIˆÀÌ8®£„%j$Åu(¼Ö?ÙòóùÿýÞ‡óŸÛQíU¾1 Ô×–Ê×ÇR•‰ï#,+zâtdðÝ• œB­Må¿ Ä÷óSl-‰ó­N½þ¡~6äÞ@:¦²4V€é#‹ëaõ¸sN;ØÞÈOüto¼9û¿Ó“öE¥ŠðE÷DŸLZ/9‡¯O=ÆNZí@ÏñÑb•‡3‚tÆ!åÇÝ1£¿ÅZ©Ñ Yºùzù„ˆ¹úœhÚ_¾üaåå¦Håmzyõr˜ç墀eýVz¶ätrh2 Ó:¦0+}ÀtO®Í——7föÛóÅÇ…ê¿çCŽ|r$\‡àk‚¢ií~›ë*{ôOõxUõ·»qú¿ŒG+cPü\ߪæ¥0~ÞÜ5?š^2‚Ä\ÅEù;€G+h¢ÛÂð/^'»™ßžñè‡]§Øò`¬³çÔðrèÇ_a¾pû±ö Û¯ókOßo³ÙÍ÷¯_ßßß¿ò“ß¿^…ëW“éÕëѵ¿7ÓÍ;Œ>_=µº:Xˆ¦×ÍõÕóÊŒgËWž¿þ!}® ¿R¯0ªŸïo¯ÓR/Ÿ;ñ_ÓÏ4Õÿó쿤GvqÍͨ^ç×ëñÈŽÆpf…ÛD~yé&ãñååÕÔÜüöê³ç»Ì  ÆÒO,9ªÿÆó¿ç¡g4"sú Ðcè³êµÍWYþüƒ4iõ1²@­Al;¯¥ŠÊº€à,‘Ïí¿nÿ/^€÷¦fúõR¹ËËѵïºßûíò a!©<ìÿoÑ@µ£8‚éHFRH­•ŽKé2*ÄÃ9´C;´C;´C;´C;´C;´C;´C;´C;´Cûã¶ÿKÃ8Cèllibgphoto2-2.5.9/doc/camlib_devel-portmon.eps0000644000175000001440000003445412557123324016113 00000000000000%!PS-Adobe-2.0 EPSF-2.0 %%Title: Untitled-1 %%Creator: Dia v0.83 %%CreationDate: Thu Apr 13 18:39:05 2000 %%For: a user %%Magnification: 1.0000 %%Orientation: Portrait %%BoundingBox: 0 0 320 208 %%Pages: 1 %%BeginSetup %%EndSetup %%EndComments [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def /Times-Roman-latin1 /Times-Roman findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Times-Italic-latin1 /Times-Italic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Times-Bold-latin1 /Times-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Times-BoldItalic-latin1 /Times-BoldItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-Book-latin1 /AvantGarde-Book findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-BookOblique-latin1 /AvantGarde-BookOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-Demi-latin1 /AvantGarde-Demi findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /AvantGarde-DemiOblique-latin1 /AvantGarde-DemiOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-Light-latin1 /Bookman-Light findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-LightItalic-latin1 /Bookman-LightItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-Demi-latin1 /Bookman-Demi findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Bookman-DemiItalic-latin1 /Bookman-DemiItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-latin1 /Courier findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-Oblique-latin1 /Courier-Oblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-Bold-latin1 /Courier-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Courier-BoldOblique-latin1 /Courier-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-latin1 /Helvetica findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Oblique-latin1 /Helvetica-Oblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Bold-latin1 /Helvetica-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-BoldOblique-latin1 /Helvetica-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-latin1 /Helvetica-Narrow findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-Oblique-latin1 /Helvetica-Narrow-Oblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-Bold-latin1 /Helvetica-Narrow-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Helvetica-Narrow-BoldOblique-latin1 /Helvetica-Narrow-BoldOblique findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-Roman-latin1 /NewCenturySchoolbook-Roman findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-Italic-latin1 /NewCenturySchoolbook-Italic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-Bold-latin1 /NewCenturySchoolbook-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /NewCenturySchoolbook-BoldItalic-latin1 /NewCenturySchoolbook-BoldItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-Roman-latin1 /Palatino-Roman findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-Italic-latin1 /Palatino-Italic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-Bold-latin1 /Palatino-Bold findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Palatino-BoldItalic-latin1 /Palatino-BoldItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /Symbol-latin1 /Symbol findfont definefont pop /ZapfChancery-MediumItalic-latin1 /ZapfChancery-MediumItalic findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /ZapfDingbats-latin1 /ZapfDingbats findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding isolatin1encoding def currentdict end definefont pop /cp {closepath} bind def /c {curveto} bind def /f {fill} bind def /a {arc} bind def /ef {eofill} bind def /ex {exch} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth pop} bind def /tr {translate} bind def /ellipsedict 8 dict def ellipsedict /mtrx matrix put /ellipse { ellipsedict begin /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc savematrix setmatrix end } def /colortogray { /rgbdata exch store rgbdata length 3 idiv /npixls exch store /rgbindx 0 store 0 1 npixls 1 sub { grays exch rgbdata rgbindx get 20 mul rgbdata rgbindx 1 add get 32 mul rgbdata rgbindx 2 add get 12 mul add add 64 idiv put /rgbindx rgbindx 3 add store } for grays 0 npixls getinterval } bind def /mergeprocs { dup length 3 -1 roll dup length dup 5 1 roll 3 -1 roll add array cvx dup 3 -1 roll 0 exch putinterval dup 4 2 roll putinterval } bind def /colorimage { pop pop {colortogray} mergeprocs image } bind def 28.346000 -28.346000 scale -5.950000 -11.256637 translate %%EndProlog 1.000000 1.000000 1.000000 srgb n 6.000000 4.000000 m 6.000000 6.000000 l 10.000000 6.000000 l 10.000000 4.000000 l f 0.100000 slw [] 0 sd [] 0 sd 0 slj 0.000000 0.000000 0.000000 srgb n 6.000000 4.000000 m 6.000000 6.000000 l 10.000000 6.000000 l 10.000000 4.000000 l cp s /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 6.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb (Camera) dup sw 2 div 8.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 8.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 7.000000 ex sub 5.000000 m gs 1 -1 sc sh gr /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb () dup sw 2 div 10.000000 ex sub 7.000000 m gs 1 -1 sc sh gr 0.100000 slw [] 0 sd [] 0 sd 0 slc 0.000000 0.000000 0.000000 srgb n 10.000000 5.000000 m 14.000000 5.000000 l s 0 slj 0.000000 0.000000 0.000000 srgb n 10.800000 4.600000 m 10.000000 5.000000 l 10.800000 5.400000 l f 0 slj 0.000000 0.000000 0.000000 srgb n 13.200000 5.400000 m 14.000000 5.000000 l 13.200000 4.600000 l f 0.080000 slw 0 slj [] 0 sd 0.700000 0.700000 0.700000 srgb n 14.250000 4.200000 m 14.250000 7.700000 l 15.750000 7.700000 l 15.750000 4.200000 l f 0.000000 0.000000 0.000000 srgb n 14.250000 4.200000 m 14.250000 7.700000 l 15.750000 7.700000 l 15.750000 4.200000 l cp s 0.010000 slw 0.000000 0.000000 0.000000 srgb n 14.400000 4.410000 m 14.400000 4.810000 l 15.600000 4.810000 l 15.600000 4.410000 l cp s 0.000000 0.000000 0.000000 srgb n 14.400000 4.810000 m 14.400000 5.210000 l 15.600000 5.210000 l 15.600000 4.810000 l cp s 0.000000 0.000000 0.000000 srgb n 14.400000 5.210000 m 14.400000 5.610000 l 15.600000 5.610000 l 15.600000 5.210000 l cp s 0.000000 0.000000 0.000000 srgb n 14.400000 5.610000 m 14.400000 6.010000 l 15.600000 6.010000 l 15.600000 5.610000 l cp s 0.000000 0.000000 0.000000 srgb n 14.400000 6.090000 m 14.400000 6.330000 l 15.150000 6.330000 l 15.150000 6.090000 l cp s 0.000000 1.000000 0.000000 srgb n 15.525000 6.130000 0.052500 0.052500 0 360 ellipse f 0.000000 0.000000 0.000000 srgb n 15.525000 6.130000 0.052500 0.052500 0 360 ellipse cp s 1.000000 1.000000 0.000000 srgb n 15.525000 6.290000 0.052500 0.052500 0 360 ellipse f 0.000000 0.000000 0.000000 srgb n 15.525000 6.290000 0.052500 0.052500 0 360 ellipse cp s 1.000000 1.000000 1.000000 srgb n 15.225000 6.170000 m 15.225000 6.330000 l 15.405000 6.330000 l 15.405000 6.170000 l f 0.000000 0.000000 0.000000 srgb n 15.225000 6.170000 m 15.225000 6.330000 l 15.405000 6.330000 l 15.405000 6.170000 l cp s 0.080000 slw 0 slc 0.000000 0.000000 0.000000 srgb n 14.500000 6.650000 m 14.500000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 14.750000 6.650000 m 14.750000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 15.000000 6.650000 m 15.000000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 15.250000 6.650000 m 15.250000 7.525000 l s 0.000000 0.000000 0.000000 srgb n 15.500000 6.650000 m 15.500000 7.525000 l s 0.600000 0.600000 0.600000 srgb n 13.950000 8.000000 m 14.250000 7.400000 l 14.250000 7.700000 l 15.750000 7.700000 l 15.750000 7.400000 l 16.050000 8.000000 l f 0.000000 0.000000 0.000000 srgb n 13.950000 8.000000 m 14.250000 7.400000 l 14.250000 7.700000 l 15.750000 7.700000 l 15.750000 7.400000 l 16.050000 8.000000 l cp s /Courier-latin1 ff 1.000000 scf sf 0.000000 0.000000 0.000000 srgb (Host) dup sw 2 div 15.000000 ex sub 9.000000 m gs 1 -1 sc sh gr 0.000000 0.000000 0.000000 srgb (running) dup sw 2 div 15.000000 ex sub 10.000000 m gs 1 -1 sc sh gr 0.000000 0.000000 0.000000 srgb (PortMon) dup sw 2 div 15.000000 ex sub 11.000000 m gs 1 -1 sc sh gr showpage libgphoto2-2.5.9/doc/README.apidocs0000644000175000001440000000036612557123324013574 00000000000000Rules for the API docs: 1. DO NOT DOCUMENT ANYTHING YET 2. If you know a method to keep API docs and internal docs apart, with doxygen, please tell us. 3. If this has been solved, start documenting the external interface. Thank you. libgphoto2-2.5.9/doc/libgphoto2.30000644000175000001440000000415612561423352013430 00000000000000.\" ** You probably do not want to edit this file directly ** .\" It was generated using the DocBook XSL Stylesheets (version 1.69.1). .\" Instead of manually editing it, you probably should edit the DocBook XML .\" source for it and then use the DocBook XSL Stylesheets to regenerate it. .TH "LIBGPHOTO2" "3" "08/16/2006" "" "The gPhoto2 Reference (the man" .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .SH "NAME" libgphoto2 \- cross\-platform digital camera library .SH "SYNOPSIS" .sp .nf #include .fi .SH "DESCRIPTION" .PP The gphoto2 library provides applications with access to a variety of cameras. .PP This man page will be extended with autogenerated documentation of the interface types and methods used for communication between the gphoto2 library and a frontend. .SH "FILES" .TP \fI~/.gphoto/settings\fR Here gphoto2 applications may store their configuration used to access gphoto2. .PP To track down errors, you can add the \fB\-\-debug\fR parameter to the \fBgphoto2\fR command line and, if dealing with USB problems, setting the environment variable \fBUSB_DEBUG\fR\fI=1\fR. .SH "ENVIRONMENT VARIABLES" .TP \fBCAMLIBS\fR If set, defines the directory where the libgphoto2 library looks for its camera drivers (camlibs). You only need to set this on OS/2 systems and broken/test installations. .TP \fBIOLIBS\fR If set, defines the directory where the libgphoto2_port library looks for its I/O drivers (iolibs). You only need to set this on OS/2 systems and broken/test installations. .TP \fBLD_DEBUG\fR Set this to \fIall\fR to receive lots of debug information regarding library loading on \fBld\fR based systems. .TP \fBUSB_DEBUG\fR If set, defines the numeric debug level with which the libusb library will print messages. In order to get some debug output, set it to \fI1\fR. .SH "SEE ALSO" .PP gphoto2(1), libgphoto2_port(3), The gPhoto2 Manual, automatically generated API docs, [1]\&\fIgphoto website\fR . .SH "AUTHOR" The gPhoto2 Team. .br Hans Ulrich Niedermann . (man page) .SH "REFERENCES" .TP 3 1.\ gphoto website \%http://www.gphoto.org/ libgphoto2-2.5.9/doc/libgphoto2_port.30000644000175000001440000000347212561423352014474 00000000000000.\" ** You probably do not want to edit this file directly ** .\" It was generated using the DocBook XSL Stylesheets (version 1.69.1). .\" Instead of manually editing it, you probably should edit the DocBook XML .\" source for it and then use the DocBook XSL Stylesheets to regenerate it. .TH "LIBGPHOTO2_PORT" "3" "08/16/2006" "" "The gPhoto2 Reference (the man" .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .SH "NAME" libgphoto2_port \- cross\-platform port access library .SH "SYNOPSIS" .sp .nf #include .fi .SH "DESCRIPTION" .PP The libgphoto2_port library was written to provide libgphoto2(3) with a generic way of accessing ports. In this function, libgphoto2_port is the successor of the libgpio library. .PP Currently, libgphoto2_port supports serial (RS\-232) and USB connections, the latter requiring libusb to be installed. .PP The autogenerated API docs will be added here in the future. .SH "ENVIRONMENT VARIABLES" .TP \fBIOLIBS\fR If set, defines the directory where the libgphoto2_port library looks for its I/O drivers (iolibs). You only need to set this on OS/2 systems and broken/test installations. .TP \fBLD_DEBUG\fR Set this to \fIall\fR to receive lots of debug information regarding library loading on \fBld\fR based systems. .TP \fBUSB_DEBUG\fR If set, defines the numeric debug level with which the libusb library will print messages. In order to get some debug output, set it to \fI1\fR. .SH "SEE ALSO" .PP libgphoto2(3), The gPhoto2 Manual, [1]\&\fIgphoto website\fR, automatically generated API docs, [2]\&\fIlibusb website\fR . .SH "AUTHOR" The gPhoto2 Team. .br Hans Ulrich Niedermann . (man page) .SH "REFERENCES" .TP 3 1.\ gphoto website \%http://www.gphoto.org/ .TP 3 2.\ libusb website \%http://libusb.sourceforge.net/ libgphoto2-2.5.9/doc/Doxyfile-internals.in0000644000175000001440000014231212610415510015370 00000000000000# Doxyfile 1.4.2 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = "@PACKAGE_NAME@ (@PACKAGE_TARNAME@) Internals" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = "@PACKAGE_VERSION@" # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIR@ # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, # Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, # Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, # Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, # Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = @top_srcdir@ # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explicit @brief command for a brief description. JAVADOC_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = YES # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = YES # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. SHOW_DIRECTORIES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from the # version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the progam writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = @top_srcdir@/libgphoto2 @top_srcdir@/gphoto2 @top_srcdir@/libgphoto2_port/gphoto2 @top_srcdir@/libgphoto2_port/libgphoto2_port @top_srcdir@/camlibs/template # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm FILE_PATTERNS = *.h *.c # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = YES # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = @HTML_APIDOC_INTERNALS_DIR@ # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = YES # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = @HAVE_DOT@ # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = YES # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that a graph may be further truncated if the graph's # image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH # and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), # the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, which results in a white background. # Warning: Depending on the platform used, enabling this option may lead to # badly anti-aliased labels on the edges of a graph (i.e. they become hard to # read). DOT_TRANSPARENT = YES # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = YES # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO libgphoto2-2.5.9/camlibs/0000755000175000001440000000000012623156267012221 500000000000000libgphoto2-2.5.9/camlibs/agfa-cl20/0000755000175000001440000000000012623156267013655 500000000000000libgphoto2-2.5.9/camlibs/agfa-cl20/agfa_cl20.c0000644000175000001440000004310712610415524015452 00000000000000/* agfa-cl20.c * * Copyright (C) 2002-2003 by Philipp Poeml and Dennis Noordsij, * http://cl20.poeml.de/ * * 16-Mar-2004 - Dennis - Modified as follows: * - fix compactflash detection * - fix number of picturs detection * - get rid of the heavy stack usage and use the heap instead * - fix USB download size * * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE static const struct { char *model; int usb_vendor; int usb_product; } models[] = { { "Agfa ePhoto CL20", 0x06bd, 0x0404 }, { NULL, 0, 0 } }; /* Convert from 123 to 0x123 (dec:123 to hex:123 * Limited to 4 digits, i.e. max 9999 to 0x9999 */ static unsigned short to_camera(unsigned short a) { unsigned short ret = 0; ret = ret + (a / 1000) * 0x1000; a = a % 1000; ret = ret + ((a / 100) * 0x100); a = a % 100; ret = ret + ((a / 10) * 0x10); a = a % 10; ret = ret + a; return ret; } /* Convert from 0x123 to 123 (hex:123 to dec:123 * Limited to 4 digits, i.e. max 0x9999 to 9999 */ static unsigned short from_camera(unsigned short a) { unsigned short ret = 0; ret = ret + ((a / 0x1000) * 1000); a = a % 0x1000; ret = ret + ((a / 0x100) * 100); a = a % 0x100; ret = ret + ((a / 0x10) * 10); a = a % 0x10; ret = ret + a; return ret; } int camera_id (CameraText *id) { strcpy(id->text, "agfa_cl20"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; char *ptr; int x = 0; /* GP_DEBUG(" * camera_abilities()"); */ ptr = models[x].model; while (ptr) { memset(&a, 0, sizeof(a)); strcpy(a.model, ptr); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB; /* a.speed[0] = 0; */ a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; a.usb_vendor = models[x].usb_vendor; a.usb_product = models[x].usb_product; gp_abilities_list_append(list, a); ptr = models[++x].model; } return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG(" * camera_exit()"); return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *privdata, GPContext *context) { Camera *camera = privdata; int n = -1; int size = -1; unsigned char hb, lb; unsigned long j; unsigned int app1len = -1; unsigned char resolution; unsigned char indata[ 0x100 ]; unsigned char * result; unsigned char * ptr; /* unsigned char last, next; */ GP_DEBUG(" * get_file_func()"); /* * Get the file from the camera. Use gp_file_set_mime_type, * gp_file_set_data_and_size, etc. */ n = gp_filesystem_number(camera->fs, folder, filename, context) + 1; switch(type) { case GP_FILE_TYPE_PREVIEW: GP_DEBUG(" * REQUEST FOR A PREVIEW"); gp_port_usb_msg_write(camera->port,0x0A,to_camera(n),0x0008,NULL,0x0); gp_port_read(camera->port, (char*)indata, 0x100); size = indata[ 5 ] + (indata[ 6 ] * 0xFF) + 3; resolution = (unsigned char)indata[ 17 ]; if (resolution == 1) { char dummy; result = calloc(size, 0x100); ptr = result; gp_port_usb_msg_read(camera->port,0x00,0x0000,0x0521,&dummy,0x0001); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x8000,&dummy,0x0001); gp_port_usb_msg_write(camera->port,0x0A,to_camera(n),0x000A,NULL,0x0); for (j = 0; j < size; j++) { gp_port_read(camera->port, (char*)ptr, 0x100); ptr += 0x100; } gp_port_usb_msg_read(camera->port,0x00,0x0000,0x0521,&dummy,0x0001); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x8000,&dummy,0x0001); size = size * 0x100; lb = (unsigned char)*(result + 0x05); hb = (unsigned char)*(result + 0x04); app1len = (unsigned int)(hb * 256) + (unsigned int)(lb); result[3] = 0xe0; result[4] = 0x00; result[5] = 0x10; result[6] = 'J'; result[7] = 'F'; result[8] = 'I'; result[9] = 'F'; result[10] = 0x00; result[11] = 0x01; result[12] = 0x01; result[13] = 0x00; result[14] = 0x00; result[15] = 0x01; result[16] = 0x00; result[17] = 0x01; result[18] = 0x00; result[19] = 0x00; memmove(&result[20], &result[app1len + 4], (unsigned int)(size - app1len - 2)); size = size - app1len + 24; gp_file_set_mime_type(file, GP_MIME_JPEG); gp_file_append(file, (char*)result, size); free(result); break; } else { unsigned char * data; char dummy; gp_port_usb_msg_read(camera->port,0x00,0x0000,0x0521,&dummy,0x0001); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x8000,&dummy,0x0001); data = (unsigned char *)calloc(size, 0x100); ptr = data; gp_port_usb_msg_write(camera->port,0x0A,to_camera(n),0x000B,NULL,0x0); if (size < 100) { for (j = 0; j < size; j++) { gp_port_read(camera->port, (char*)ptr, 0x100); ptr += 0x100; } } else { for (j = 0; j < 100; j++) { gp_port_read(camera->port, (char*)ptr, 0x100); ptr += 0x100; } } gp_port_usb_msg_read(camera->port,0x00,0x0000,0x0521,&dummy,0x0001); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x8000,&dummy,0x0001); size = size * 0x100; { unsigned int thumb_start = 9 + 0x1a0; unsigned char temp1, temp2, temp3, temp4; unsigned char Y, Cb, Cr; signed int R, G, B; unsigned int pixel_count = 0; unsigned int offset = 0; result = calloc(1, 128 * 96 * 4 * 4 + 100 ); memcpy(result, "P3\n128 96\n255\n", 14); offset = offset + 14; temp1 = data[ thumb_start + pixel_count ]; while (pixel_count < (128*96*2)) { temp1 = data[ thumb_start + pixel_count ]; temp2 = data[ thumb_start + pixel_count + 1 ]; temp3 = data[ thumb_start + pixel_count + 2 ]; temp4 = data[ thumb_start + pixel_count + 3 ]; pixel_count = pixel_count + 4; Y = temp1 + 128; Cb = temp3 + 128; Cr = temp4 + 128; R = Y + (1.402 * (Cr-128)); G = Y - (0.34414 * (Cb-128)) - (0.71414 * (Cr-128)); B = Y + (1.772 * (Cb-128)); if (R > 255) R = 255; if (R < 0) R = 0; if (G > 255) G = 255; if (G < 0) G = 0; if (B > 255) B = 255; if (B < 0) B = 0; sprintf((char*)(result + offset), "%03d %03d %03d\n", R, G, B); offset = offset + 4 + 4 + 4; Y = temp2 + 128; R = Y + (1.402 * (Cr-128)); G = Y - (0.34414 * (Cb-128)) - (0.71414 * (Cr-128)); B = Y + (1.772 * (Cb-128)); if (R > 255) R = 255; if (R < 0) R = 0; if (G > 255) G = 255; if (G < 0) G = 0; if (B > 255) B = 255; if (B < 0) B = 0; sprintf((char*)(result + offset), "%03d %03d %03d\n", R,G,B); offset = offset + 4 + 4 + 4; } size = offset; gp_file_set_mime_type(file, GP_MIME_PPM); gp_file_append(file, (char*)result, size); free( result ); free( data ); } break; } case GP_FILE_TYPE_RAW: { char dummy; GP_DEBUG(" * REQUEST FOR RAW IMAGE"); gp_port_usb_msg_write(camera->port,0x0A,to_camera(n),0x0008,NULL,0x0); gp_port_read(camera->port, (char*)indata, 0x100); size = indata[ 5 ] + (indata[ 6 ] * 0xFF) + 3; result = calloc(size, 0x100); ptr = result; gp_port_usb_msg_read(camera->port,0x00,0x0000,0x0521,&dummy,0x0001); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x8000,&dummy,0x0001); gp_port_usb_msg_write(camera->port,0x0A,to_camera(n),0x000A,NULL,0x0); for (j = 0; j < size; j++) { gp_port_read(camera->port, (char*)ptr, 0x100); ptr += 100; } GP_DEBUG(" *DONE READING IMAGE!"); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x0521,&dummy,0x0001); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x8000,&dummy,0x0001); size = size * 0x100; gp_file_set_mime_type(file, GP_MIME_RAW); gp_file_append(file, (char*)result, size); free( result ); break; } case GP_FILE_TYPE_NORMAL: { char dummy; GP_DEBUG(" * REQUEST FOR NORMAL IMAGE"); gp_port_usb_msg_write(camera->port,0x0A,to_camera(n),0x0008,NULL,0x0); gp_port_read(camera->port, (char*)indata, 0x100); size = indata[ 5 ] + (indata[ 6 ] * 0xFF) + 3; result = calloc(size, 0x100); ptr = result; gp_port_usb_msg_read(camera->port,0x00,0x0000,0x0521,&dummy,0x0001); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x8000,&dummy,0x0001); gp_port_usb_msg_write(camera->port,0x0A,to_camera(n),0x000A,NULL,0x0); for (j = 0; j < size; j++) { gp_port_read(camera->port, (char*)ptr, 0x100); ptr += 0x100; } gp_port_usb_msg_read(camera->port,0x00,0x0000,0x0521,&dummy,0x0001); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x8000,&dummy,0x0001); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x0521,&dummy,0x0001); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x8000,&dummy,0x0001); size = size * 0x100; lb = *(result + 0x05); hb = *(result + 0x04); app1len = (unsigned int)(hb * 256) + (unsigned int)(lb); result[3] = 0xe0; result[4] = 0x00; result[5] = 0x10; result[6] = 'J'; result[7] = 'F'; result[8] = 'I'; result[9] = 'F'; result[10] = 0x00; result[11] = 0x01; result[12] = 0x01; result[13] = 0x00; result[14] = 0x00; result[15] = 0x01; result[16] = 0x00; result[17] = 0x01; result[18] = 0x00; result[19] = 0x00; memmove(&result[20], &result[app1len + 4], (unsigned int)(size - app1len - 2)); size = size - app1len + 24; gp_file_set_mime_type(file, GP_MIME_JPEG); gp_file_append(file, (char*)result, size); free(result); break; } default: GP_DEBUG(" * NOT SUPPORTED"); return GP_ERROR_NOT_SUPPORTED; } return (GP_OK); } #if 0 static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; GP_DEBUG(" * delete_file_func()"); /* Delete the file from the camera. */ return (GP_OK); } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; GP_DEBUG(" * delete_all_func()"); /* * Delete all files in the given folder. If your camera doesn't have * such a functionality, just don't implement this function. */ return (GP_OK); } static int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { /* * Capture a preview and return the data in the given file (again, * use gp_file_set_data_and_size, gp_file_set_mime_type, etc.). * libgphoto2 assumes that previews are NOT stored on the camera's * disk. If your camera does, please delete it from the camera. */ return (GP_OK); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { /* * Capture an image and tell libgphoto2 where to find it by filling * out the path. */ return (GP_OK); } #endif static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { /* * Fill out the summary with some information about the current * state of the camera (like pictures taken, etc.). */ unsigned char indata[0x100]; unsigned short count = 0; int has_compact_flash = 0; gp_port_usb_msg_write(camera->port,0x02, 0x0000, 0x0007, NULL, 0x0000 ); gp_port_usb_msg_write(camera->port,0x0A, 0x0000, 0x0000, NULL, 0x0000 ); gp_port_usb_msg_write(camera->port,0x02, 0x0000, 0x0007, NULL, 0x0000 ); gp_port_usb_msg_write(camera->port,0x0A, 0x0000, 0x0001, NULL, 0x0000 ); gp_port_read( camera->port, (char*)indata, 0x100 ); count = from_camera( indata[22] + (indata[23]*0x100) ); if (count > 0) { count--; has_compact_flash = 1; } else { has_compact_flash = 0; } if (has_compact_flash == 0) { sprintf( summary->text, _("Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n")); } else { sprintf( summary->text, _("Camera has taken %d pictures, and is using CompactFlash storage.\n"), count); } return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de ")); return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int n; unsigned char resolution; char sbr; unsigned char indata[ 0x100 ]; GP_DEBUG(" * get_info_func()"); /* Get the file info here and write it into */ n = gp_filesystem_number( camera->fs, folder, filename, context) + 1; info->file.fields = GP_FILE_INFO_TYPE; strcpy( info->file.type, GP_MIME_JPEG ); gp_port_usb_msg_write(camera->port,0x0A, to_camera( n ) ,0x0008,NULL,0x0); gp_port_read(camera->port, (char*)indata, 0x100); resolution = indata[ 17 ]; gp_port_usb_msg_read(camera->port,0x00,0x0000,0x0521,&sbr,1); gp_port_usb_msg_read(camera->port,0x00,0x0000,0x8000,&sbr,1); if (resolution == 1) { info->file.width = 512; info->file.height = 384; info->preview.fields = GP_FILE_INFO_TYPE; strcpy( info->preview.type, GP_MIME_JPEG); info->preview.width = 512; info->preview.height = 384; } else if (resolution == 3) { info->file.width = 1024; info->file.height = 768; info->preview.fields = GP_FILE_INFO_TYPE; strcpy( info->preview.type, GP_MIME_PPM); info->preview.width = 128; info->preview.height = 96; } else if (resolution == 5) { /* In case you are wondering why this resolution is also 1024x768, it is * because that really IS the resolution. If you were using the official * (windows) software, it would be automagically scaled to appear as if * you took a higher resolution image. * However, high resolution pictures are taken with a lower compression * ratio, which is why the high resolution pictures are roughly twice the * size of the medium resolution ones, despite also being 1024x768 * Nevertheless, this is a 0.80 Megapixel camera, no more !!! No matter * what the marketing says! */ info->preview.fields = GP_FILE_INFO_TYPE; strcpy( info->preview.type, GP_MIME_PPM); info->preview.width = 128; info->preview.height = 96; info->file.width = 1024; info->file.height = 768; } else { printf("Invalid resolution found, this should never happen.\n" "Please try resetting the camera, then try again.\n"); return GP_ERROR; } return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera * camera = data; unsigned char indata[ 0x100 ]; unsigned short count = 0; gp_port_usb_msg_write(camera->port,0x02, 0x0000, 0x0007, NULL, 0x0000 ); gp_port_usb_msg_write(camera->port,0x0A, 0x0000, 0x0000, NULL, 0x0000 ); gp_port_usb_msg_write(camera->port,0x02, 0x0000, 0x0007, NULL, 0x0000 ); gp_port_usb_msg_write(camera->port,0x0A, 0x0000, 0x0001, NULL, 0x0000 ); gp_port_read( camera->port, (char*)indata, 0x100 ); count = from_camera( indata[22] + (indata[23]*0x100) ); if (count > 0) count--; return gp_list_populate( list, "pic_%04i.jpg", count); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; char single_byte_return = 'X'; GP_DEBUG(" * camera_init()"); /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->about = camera_about; /* Now, tell the filesystem where to get lists, files and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* * The port is already provided with camera->port (and * already open). You just have to use functions like * gp_port_timeout_set, gp_port_settings_get, gp_port_settings_set. */ gp_port_get_settings( camera->port, &settings ); switch (camera->port->type) { case GP_PORT_SERIAL: return ( GP_ERROR ); case GP_PORT_USB: settings.usb.config = 1; settings.usb.interface = 1; settings.usb.inep = 2; break; default: return ( GP_ERROR ); } gp_port_set_settings(camera->port, settings ); /* Camera should return either 0x00 or 0x08, depending on * wether the PRINT button is depressed. Either way, it * should NOT stay 'X' */ gp_port_usb_msg_read( camera->port, 0x00, 0x0000, 0x8985, &single_byte_return, 1 ); if ((single_byte_return == 0) || (single_byte_return == 8)) return (GP_OK); else return (GP_ERROR_MODEL_NOT_FOUND); } libgphoto2-2.5.9/camlibs/agfa-cl20/STATUS0000644000175000001440000000036312557123324014537 00000000000000Thumbnail and full image support for all resolutions. Deleting files not yet supported. Need to experiment more what happens with huge number of pictures. Send me a corrupted image if you find any! Use gphoto2 to extract the raw data also libgphoto2-2.5.9/camlibs/agfa-cl20/protocol.txt0000644000175000001440000003112612557123324016174 00000000000000Okay, let's tell something about the protocoll: Everything can be looked up in the USB 1.1 secification! http://www.usb.org/developers/data/usbspec.zip That's where I have everything from. All the communication consists of three usb command types: It seems that all the packages have a little endian byte order (least significant byte first?) I always confuse that. Well, If I have 0x0001 then it sends 01 00, so turned around. 1. control packages with direction "in" 2. control packages with direction "out" 3. bulk transfers with direction "in" 1. These control packages are always 8 Bytes long. The first Byte is the reqest Type. this is always 0xc1 for direction "in". The c1 is a Bitmap: 7 1 means that the direction is device to host 6 1 Bits 6 and 5 mean that the "Type" is "Vendor" 5 0 4 0 the first 5 Bits (0-4) define the recipient. In this case an "Interface" 3 0 2 0 1 0 0 1 the last two Bytes are always 01 00 the length of the camera reply, so 0x0001 - one Byte. The camera always replys with 0x00. 2. Similar to 1. just the direction is "out". The first byte is always 0x41 (just changing the last bit to 0 - direction "out") The last two bytes are 00 00, because we don't await an answer of the camera. 3. these semm to be standard bulk transfers. you just open one, and the camera sends data. The direction of this transfer is "in". The trnsfer buffer length is always 0x100. ----------------- So, what happens now on the bus: First we send a standard USB Device request, to get the device descriptor: direction is "in" (80) length of answer is 0x0012 (12 00) SetupPacket : 80 06 00 01 00 00 12 00 We get as an answer the device descriptor: 0000: 12 01 00 01 00 00 00 08 bd 06 04 04 90 00 00 00 0010: 00 01 What this means is in the USB specs. Then we want the "configuration descriptor" from the device. I think this is done by sending: SetupPacket : 80 06 00 02 00 00 09 02 As answer we should get: 0000: 09 02 27 00 01 01 00 80 fa 09 04 01 00 03 ff 00 0010: 00 00 07 05 82 02 40 00 00 07 05 03 02 40 00 00 0020: 07 05 84 03 01 00 08 Now it's time to choose a configuration. I believe the camera just has one, but without setting it exlicitly, the camera does nothing! So we choose configuration 0x01. I think this is done by sending: SetupPacket : 00 09 01 00 00 00 00 00 Note, that the direction is "out" now (00) and the length 0x0000 (00 00). That was the setup process. Now the camera should talk to us. *************** * Here I had one picture on the camera. I plugged the camera in, * got the thumbnail and deleted it. Then I switched the camera * off. * * In further experiemnts we have to try out, where our magic numbers * are: Like: How many pictures are on the camera, which one is going * to be downloaded... ***************************** SetupPacket : c1 00 00 00 21 05 01 00 answer: 00 SetupPacket : 41 02 00 00 07 00 00 00 SetupPacket : 41 0a 00 00 00 00 00 00 SetupPacket : 41 02 00 00 07 00 00 00 SetupPacket : 41 0a 00 00 01 00 00 00 Bulk Transfer "in": 0000: 1 . 1 6 I think this is something 01 00 00 10 00 00 00 00 00 31 2e 31 36 00 00 00 like a directory... No idea, what 0010: the 1.16 means. Could be either a 00 00 00 00 00 00 02 00 00 02 00 00 00 00 06 0a protocol or firmware version. 0020: 1e 79 01 69 02 28 06 50 01 e0 00 60 00 c0 0f 00 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 SetupPacket : c1 00 00 00 21 05 01 00 answer: 00 SetupPacket : c1 00 00 00 00 80 01 00 answer: 00 SetupPacket : 41 0a 01 00 08 00 00 00 Bulk Transfer "in": 0000: 1 . 1 6 01 00 00 10 00 14 00 00 00 31 2e 31 36 00 00 00 The 14 is new. No idea, what it means... 0010: 00 01 00 00 00 00 02 00 00 02 00 00 00 00 06 0a The 01 could be one of the magic 0020: numbers, since there was ONE pic 1e 79 01 69 02 28 06 50 01 e0 00 60 00 c0 0f 00 on the camera... 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ************************** * I just got an idea: The camera has internal AND a flash card as memory. * When we have a flash card, the internal memory is not going to * be used. Maybe the first "directory" is the internal one, with zero pics. * Maybe the second one is the flash card directory with the one pic. * Maybe I'm completely wrong... ;-) *************************** SetupPacket : c1 00 00 00 85 89 01 00 answer: 00 SetupPacket : c1 00 00 00 21 05 01 00 answer: 00 SetupPacket : c1 00 00 00 00 80 01 00 answer: 00 SetupPacket : c1 00 00 00 21 05 01 00 answer: 00 SetupPacket : c1 00 00 00 00 80 01 00 answer: 00 SetupPacket : 41 0a 01 00 0a 00 00 00 Bulk Transfer "in": 0000: E x i f M M * ff d8 ff e1 01 a5 45 78 69 66 00 00 4d 4d 00 2a 0010: 00 00 00 08 00 07 01 1a 00 05 00 00 00 01 00 00 0020: ( 01 0e 01 1b 00 05 00 00 00 01 00 00 01 16 01 28 0030: 00 03 00 00 00 01 00 02 00 00 02 13 00 03 00 00 0040: P I C T 0 0 0 1 J P G 50 49 43 54 30 30 30 31 4a 50 47 20 00 00 00 00 0050: 00 00 00 00 00 00 00 00 00 00 02 00 00 14 00 00 0060: D 0 ^ @ c 00 04 00 00 00 01 00 00 00 44 00 00 30 5e 40 63 0070: @ , A f 40 00 01 2c 41 66 00 00 00 00 00 00 00 00 00 00 0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Bulk transfer "in": 0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0060: 0 2 1 0 0b 90 00 00 07 00 00 00 04 30 32 31 30 91 01 00 0070: 07 00 00 00 04 01 02 03 00 a0 00 00 07 00 00 00 0080: 04 00 00 00 00 a0 01 00 03 00 00 00 01 00 01 00 0090: 00 a0 02 00 04 00 00 00 01 00 00 02 00 a0 03 00 00a0: 04 00 00 00 01 00 00 01 80 ff db 00 84 00 10 0b 00b0: ( 0c 0e 0c 0a 10 0e 0d 0e 12 11 10 13 18 28 1a 18 00c0: 1 # % ( : 3 = < 9 3 8 7 16 16 18 31 23 25 1d 28 3a 33 3d 3c 39 33 38 37 00d0: @ H \ N @ D W E 7 8 P m Q W _ b 40 48 5c 4e 40 44 57 45 37 38 50 6d 51 57 5f 62 00e0: 67 68 67 3e 4d 71 79 70 64 78 5c 65 67 63 01 11 00f0: 12 12 18 15 18 2f 1a 1a 2f 63 42 38 42 63 63 63 Then 18 further bulk "in" transfers, probably containing the data of the picture/thumbnail. SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 plenty of these more for wuite a while. SetupPacket : c1 00 00 00 21 05 01 00 SetupPacket : c1 00 00 00 00 80 01 00 SetupPacket : c1 00 00 00 21 05 01 00 SetupPacket : c1 00 00 00 00 80 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 and so on... SetupPacket : c1 00 00 00 21 05 01 00 SetupPacket : c1 00 00 00 00 80 01 00 SetupPacket : 41 0a 01 00 0d 00 00 00 SetupPacket : c1 00 00 00 20 05 01 00 Somewhere here I deleted SetupPacket : 41 02 00 00 07 00 00 00 a thumbnail... SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : 41 0a 01 00 00 00 00 00 SetupPacket : c1 00 00 00 21 05 01 00 SetupPacket : 41 02 00 00 07 00 00 00 SetupPacket : 41 0a 00 00 00 00 00 00 SetupPacket : 41 02 00 00 07 00 00 00 SetupPacket : 41 0a 00 00 01 00 00 00 Bult transfer "in": 0000: 1 . 1 6 Maybe this is something like 01 00 00 10 00 00 00 00 00 31 2e 31 36 00 00 00 the directory... So, after deleting 0010: a thumbnail, it re-reads the directory 00 00 00 00 00 00 01 00 00 02 00 00 00 00 06 0a 0020: 1e 79 01 69 02 28 06 50 01 e0 00 60 00 c0 0f 00 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 SetupPacket : c1 00 00 00 85 89 01 00 etc. pp. SetupPacket : 41 0a 01 00 00 00 00 00 Somewhere here I just switched off SetupPacket : c1 00 00 00 21 05 01 00 the camera... It just dies then SetupPacket : c1 00 00 00 21 05 01 00 We don't have to do something special... libgphoto2-2.5.9/camlibs/agfa-cl20/RANDOM0000644000175000001440000000420112557123324014467 00000000000000Just some random ramblings :-) ------------------- Why does the damn windows software poll the camera so often? Answer: Because of the stupid "print" button on the camera! It does not use an interrupt or anything, but you have to send: usb_control_msg( cl20_dev, 0xC1, 0x00, 0x0000, 0x8985, data, 1, 5000); which is: C1 00 00 00 85 89 00 01 If *data now contains "0", nothing happend. If *data is now "8", the user is PRESSING the button. Notice I say "PRESSING" :-) it has no memory, if you miss the moment the user presses the button, you do not see it! ------------------- If you have a low quality picture on the camera, downloading the thumbnail is the same transaction as downloading the whole picture. Even worse, it's only 16k! So it's quite low resolution :-) ------------------- If you are using the compactflash card, data download is a proper JPEG file, ready to use. If you are NOT using the compactflash card, data download is a so far meaningless heap of garbage !! You can get the picture, no problem, but you have to know how to process it for it to be useful! ------------------- There are only a few different USB commands used, with slightly different parameters. I have good hopes for this camera :-) ------------------- For the first time (for me) USB snoopy actually saw the USB transactions used when using the CL20 as a webcam (in streaming mode). ------------------- Camera has 1 configuration, which is set as 1 (so do not start counting at 0!) Camera has 2 interfaces, "dmesg" should show you all info you could ever need , and it shows interface 1 (which is 0) only has Iso endpoints, whereas interface 2 (which is 1) has a bulk endpoint. Iso's are used for streaming video, and bulk is used for downloading picture data. It should be possible (the latest Agfa windows driver claims this) to use interface 1 and 2 at the same time, i.e. downloading pictures while also streaming video. #TODO verify this, it was late when I read it, could be wrong :-) ------------------- When the camera erases all pictures, my guess is it is actually just sending the command to delete the last picture until there are no pictures left :) libgphoto2-2.5.9/camlibs/agfa-cl20/README.agfa-cl200000644000175000001440000000051212561423351016076 00000000000000How to install this camlib: Copy the agfa-cl20 directory to ...../libgphoto2/camlibs Then, edit the file configure.in (in the libgphoto2 directory) on lines: 148, and 160 to include "agfa-cl20" in the list of driver names. THEN you can run "sh autoconf.sh" ./configure --prefix=/usr --with-drivers=agfa-cl20 make make install libgphoto2-2.5.9/camlibs/agfa-cl20/Makefile-files0000644000175000001440000000071712561423351016332 00000000000000EXTRA_DIST += \ agfa-cl20/README.agfa-cl20 \ agfa-cl20/STATUS agfa-cl20/ChangeLog \ agfa-cl20/protocol.txt agfa-cl20/protocol2.txt \ agfa-cl20/commands.txt \ agfa-cl20/pic-header.txt agfa-cl20/RANDOM camlibdoc_DATA += agfa-cl20/README.agfa-cl20 EXTRA_LTLIBRARIES += agfa_cl20.la agfa_cl20_la_SOURCES = agfa-cl20/agfa_cl20.c agfa_cl20_la_LDFLAGS = $(camlib_ldflags) agfa_cl20_la_DEPENDENCIES = $(camlib_dependencies) agfa_cl20_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/agfa-cl20/ChangeLog0000644000175000001440000000120412557123324015336 000000000000002004-10-28 Hubert Figuiere * agfa_cl20.c (get_file_func): Fix build for gcc 2.95 (bug #1055868) 2004-03-16 Dennis Noordsij - fix compactflash detection - fix number of picturs detection - get rid of the heavy stack usage and use the heap instead - fix USB download size 2003-05-12 Marcus Meissner * agfa-cl20.c: Made it compile without warnings. 2003-05-12 Marcus Meissner * Makefile.am, README, STATUS, *.txt, agfa-cl20.c: Imported from http://cl20.poeml.de Written by Philipp Poeml (poml_at_poeml.de), Dennis Noordsij (dennis.noordsij_at_wiral.com) libgphoto2-2.5.9/camlibs/agfa-cl20/pic-header.txt0000644000175000001440000000105012557123324016325 0000000000000000000000 01 00 00 10 00 04 02 00 00 31 2e 31 36 00 00 00 |.........1.16...| ----- 0x0204 is the number of bulk transfers to be read. 00000010 00 05 00 00 00 08 05 00 00 02 00 00 00 00 00 00 |................| -- -- I 0x05 is the number of pictures on the camera plus 1. I so 4 in this case. -- is the resolution. 01 lowest 03 medium 05 highest 00000020 02 78 01 67 02 23 06 50 01 e0 00 60 00 6c 05 00 |.x.g.#.P.à.`.l..| -- -- this sometimes changes, but I don't know why... libgphoto2-2.5.9/camlibs/agfa-cl20/protocol2.txt0000644000175000001440000002253312557123324016260 00000000000000Okay, this is the second approach for the Protocol. What I believe the "commands" are, I have put in a list in the file "commands.txt". There seem to be fundamental differecs in the data and command set, when using a flash card or no flash card. When the pictures are saved on the internal camera memory, they come over in a strange format, from which I have no idea, what it is. Additionally the commands used to retrieve pictures are different. I will now try to specify the commands used for the basic operation of the camera. When using a Flash Card, the pictures are coming over in EXIF Format. EXIF is a JPEG format developed for DSC (digital still cameras). --------------- Digital Still Camera Image File Format Standard (Exchangeable image file format for Digital Still Cameras: Exif) Version 2.1 ---------------- The specs can be found here: http://www.pima.net/standards/it10/PIMA15740/Exif_2-1.PDF This is a special format which INCLUDES THUMBNAILS. This means, that the picture and the thmbnail are ONE file. So what basicallly happens in the windows driver: It retrieves the EXIF File complete, for example 173kb. I calcualted it. It fits. I had 685 Bulk Transfers, 256Bytes each, which makes a total of 175360 Bytes --> my picture (Exif=Thumbnail+picture). The Windows driver then extracts the Thumbnail out of the Exif, saves i as JFIF (JPEG) and displays it in the thumbnail overview. So, if you have the Exif you automatically have the Thumbnail AND the picture. So there is only one transfer for both. Interesting is also, that the actual picture, the Exif File, comes in BIG ENDIAN Format. you can see this from the 4d 4d (MM) in the EXIF header. Okay, let's tell something about the protocoll: Everything can be looked up in the USB 1.1 secification! That's where I have everything from. All the communication consists of three usb command types: It seems that all the packages have a little endian byte order (least significant byte first?) I always cofuse that. Well, If I have 0x0001 then it sends 01 00, so turned around. 1. control packages with direction "in" 2. control packages with direction "out" 3. bulk transfers with direction "in" 1. These control packages are always 8 Bytes long. The first Byte is the reqest Type. this is always 0xc1 for direction "in". The c1 is a Bitmap: 7 1 means that the direction is device to host 6 1 Bits 6 and 5 mean that the "Type" is "Vendor" 5 0 4 0 the first 5 Bits (0-4) define the recipient. In this case an "Interface" 3 0 2 0 1 0 0 1 the last two Bytes are always 01 00 the length of the camera reply, so 0x0001 - one Byte. The camera always replys with 0x00. 2. Similar to 1. just the direction is "out". The first byte is always 0x41 (just changing the last bit to 0 - direction "out") The last two bytes are 00 00, because we don't await an answer of the camera. 3. these semm to be standard bulk transfers. you just open one, and the camera sends data. The direction of this transfer is "in". The trnsfer buffer length is always 0x100. ----------------- So, what happens now on the bus: First we send a standard USB Device request, to get the device descriptor: direction is "in" (80) length of answer is 0x0012 (12 00) SetupPacket : 80 06 00 01 00 00 12 00 We get as an answer the device descriptor: 0000: 12 01 00 01 00 00 00 08 bd 06 04 04 90 00 00 00 0010: 00 01 What this means is in the USB specs. Then we want the "configuration descriptor" from the device. I think this is done by sending: SetupPacket : 80 06 00 02 00 00 09 02 As answer we should get: 0000: 09 02 27 00 01 01 00 80 fa 09 04 01 00 03 ff 00 0010: 00 00 07 05 82 02 40 00 00 07 05 03 02 40 00 00 0020: 07 05 84 03 01 00 08 Now it's time to choose a configuration. I believe the camera just has one, but without setting it exlicitly, the camera does not hing! So we choose configuration 0x01. I think this is done by sending: SetupPacket : 00 09 01 00 00 00 00 00 Note, that the direction is "out" now (00) and the length 0x0000 (00 00). That was the setup process. Now the camera should talk to us. SetupPacket : c1 00 00 00 21 05 01 00 answer: 00 SetupPacket : 41 02 00 00 07 00 00 00 SetupPacket : 41 0a 00 00 00 00 00 00 SetupPacket : 41 02 00 00 07 00 00 00 SetupPacket : 41 0a 00 00 01 00 00 00 This is the command for getting a basic directory Bulk Transfer "in": ***********************************************************************8 this output is very different if you use a flash card or not. These are the first rows with a flash card: 0000: 1 . 1 6 01 00 00 10 00 00 00 00 00 31 2e 31 36 00 00 00 0010: 00 00 00 00 00 00 02 00 00 02 00 00 00 00 06 0a The first 02 is the number of 0020: pictures plus one. In this case 1e 79 01 69 02 28 06 50 01 e0 00 60 00 c0 0f 00 one piture. 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 These are the first rows without a flash card: 0000: 00 00 00 10 00 ff ff ff ff 31 2e 31 36 ff ff ff 0010: ff ff ff ff 00 03 00 00 00 02 00 00 ff ff 05 09 Maybe the 03 is the nubmer of pictures, but I don't 0020: think so.. 1b 00 00 00 00 00 00 50 01 e0 00 60 00 17 0f 00 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 UPDATE: dennis, 09.09.02 The 03 IS the number of pictures. I have tried it several times and it always represents the number of pictures. Funny how you don't have to subtract 1 here! Next thing that happens is to get information on the picture. This is done for EACH picture. So, if I have 5 pictures I will get 5 commands: flash-card no flash card SetupPacket : 41 0a 01 00 08 00 00 00 41 03 ff 0f 00 00 00 00 SetupPacket : 41 0a 02 00 08 00 00 00 41 03 fe 0f 00 00 00 00 SetupPacket : 41 0a 03 00 08 00 00 00 41 03 fd 0f 00 00 00 00 SetupPacket : 41 0a 04 00 08 00 00 00 41 03 fc 0f 00 00 00 00 SetupPacket : 41 0a 05 00 08 00 00 00 41 03 fb 0f 00 00 00 00 Each time I get back a picture information package, looing like (for pic 4 for ex) 0000: 01 00 00 10 00 90 01 01 05 31 2e 31 36 01 08 01 01 74 00 ff ff 35 00 02 20 18 90 78 34 00 00 00 0010: 09 05 0a 01 00 03 06 00 00 02 00 00 0f 01 05 09 1b 01 00 00 17 0f 00 5c 66 40 3c ff ff ff ff ff 0020: 1b 74 01 62 02 11 06 50 01 e0 00 60 00 17 0f 01 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 0030: 19 01 1a 01 1b 01 1c 01 1d 01 1e 01 1f 01 20 01 and mor ffs... 0040: 21 01 22 01 23 01 24 01 25 01 26 01 27 01 28 01 0050: 29 01 2a 01 2b 01 2c 01 2d 01 2e 01 2f 01 30 01 0060: 31 01 32 01 33 01 34 01 35 01 36 01 37 01 38 01 0070: 39 01 3a 01 3b 01 3c 01 3d 01 3e 01 3f 01 40 01 0080: 41 01 42 01 43 01 44 01 45 01 46 01 47 01 48 01 0090: 49 01 ff ff 4b 01 4c 01 4d 01 4e 01 4f 01 50 01 00a0: 51 01 52 01 53 01 54 01 55 01 56 01 57 01 58 01 00b0: 59 01 5a 01 5b 01 5c 01 5d 01 5e 01 5f 01 60 01 00c0: 61 01 62 01 63 01 64 01 65 01 66 01 67 01 68 01 00d0: 69 01 6a 01 6b 01 6c 01 6d 01 6e 01 6f 01 70 01 00e0: 71 01 72 01 73 01 74 01 75 01 76 01 77 01 78 01 00f0: 79 01 7a 01 7b 01 7c 01 7d 01 7e 01 7f 01 80 01 I don't know yet, what information is in there, and what it is used for. Also a clear difference between the flash card and the non flash card. Then, the Exif files (in case of the flash card - in non flash card mode I don't know, what is going to be transferred) are transferred, one after the other. In order. flash card non flash card SetupPacket : 41 0a 01 00 0a 00 00 00 41 03 ff 0f 08 00 00 00 0000: ff d8 ff e1 61 a5 45 78 69 66 00 00 4d 4d 00 2a ef a8 a2 8a 00 28 a2 8a 00 28 a2 8a 00 28 a2 8a 0010: 00 00 00 08 00 07 01 1a 00 05 00 00 00 01 00 00 00 28 a2 8a 00 28 a2 8a 00 28 a2 8a 00 28 a2 8a 0020: 01 0e 01 1b 00 05 00 00 00 01 00 00 01 16 01 28 00 28 a2 8a 00 28 a2 8a 00 28 a2 8a 00 28 a4 a5 0030: 00 03 00 00 00 01 00 02 00 00 02 13 00 03 00 00 a0 02 8a 28 a0 02 8a 28 a0 02 8a 28 a0 02 8a 28 0040: 50 49 43 54 30 30 30 31 4a 50 47 20 00 00 00 00 and so on.... 0050: 00 00 00 00 00 00 00 00 00 00 02 00 00 ac 02 00 0060: 50 49 43 54 30 30 30 32 4a 50 47 20 00 00 00 00 0070: 00 00 00 00 00 00 00 00 00 00 ad 00 00 74 02 00 0080: 50 49 43 54 30 30 30 33 4a 50 47 20 00 00 00 00 0090: 00 00 00 00 00 00 00 00 00 00 4a 01 00 60 03 00 00a0: 50 49 43 54 30 30 30 34 4a 50 47 20 00 00 00 00 00b0: 00 00 00 00 00 00 00 00 00 00 22 02 00 90 01 00 00c0: 50 49 43 54 30 30 30 35 4a 50 47 20 00 00 00 00 00d0: 00 00 00 00 00 00 00 00 00 00 86 02 00 c0 02 00 00e0: 02 00 04 00 00 00 01 00 00 04 00 a0 03 00 04 00 00f0: 00 00 01 00 00 03 00 00 00 00 00 00 0e 01 00 00 This is an exif File. It has a clear header, This I don't know what it is. I cannot and conforms to the spec. I reckon, you can just find a header nor other readable characters. save it and use it. Maybe it is just compressed jpg data. I don't know. ---------------------------------------------------------------------- libgphoto2-2.5.9/camlibs/agfa-cl20/commands.txt0000644000175000001440000000435512557123324016140 00000000000000general commands, same for flash card or NON flash card, I don't know what they do exactly. c1 00 00 00 21 05 01 00 c1 00 00 00 20 05 01 00 This one appeares only right after issuing any delete command 41 0a 01 00 0d 00 00 00 (for pic 01). It appears after every delete comand. I dont't know what it does. The camera answers as usual with a "00" Byte. 41 02 00 00 07 00 00 00 This appears after the 41 0a 0x 00 0d 00 00 00 c1 00 00 00 20 05 01 00 sequence. It also appears before these two basic commands: 41 0a 00 00 00 00 00 00 41 0a 00 00 01 00 00 00 41 0a 00 00 00 00 00 00 This I believe to be a reset command. It is issued in the very beginning and for example after dleting all the pictures, just before the directory is reread with the 41 0a 00 00 01 00 00 00 command. c1 00 00 00 00 80 01 00 This appears before every 41 0a command. And usually after a c1 00 00 00 21 05 01 00. But not always. c1 00 00 00 85 89 01 00 After a long transfer and after al the picture info transfers this is sent until something else happens. To me it looks like a "keepalive" Every other minute (?) this is interuppted by a combination of: c1 00 00 00 21 05 01 00 c1 00 00 00 00 80 01 00 c1 00 00 00 21 05 01 00 c1 00 00 00 00 80 01 00 Then it continues. UPDATE: dennis 09.09.02 The command "c1 00 00 00 85 89 01 00" is a polling command to query the status of the "print" button on the camera. It appears whenever nothing else is happening, and is needed to catch the user pressing the print button. Keepalive is not necessary with USB. Using a compact flash card: 41 0a 00 00 01 00 00 00 Send the basic directory info 41 0a 03 00 08 00 00 00 send infos for picture number 03 41 0a 03 00 00 0a 00 00 Send picture number 03 41 0a 03 00 00 0d 00 00 Delete picture number 03 WITHOUT a compact flash card: 41 0a 00 00 01 00 00 00 Send the basic directory info 41 03 ff 0f 00 00 00 00 send infos for the first picture 41 03 fe 0f 00 00 00 00 send infos for the second picture 41 03 fd 0f 00 00 00 00 guess what? :)) 41 03 ff 0f 08 00 00 00 send the first picture 41 03 fe 0f 08 00 00 00 send the second picture 41 03 fd 0f 08 00 00 00 you know what... libgphoto2-2.5.9/camlibs/enigma13/0000755000175000001440000000000012623156267013625 500000000000000libgphoto2-2.5.9/camlibs/enigma13/STATUS0000644000175000001440000000054312557123324014507 00000000000000Todo ---- - Download thrumbnails images - Delete last image / all images - Get image informations ( Size in pixel) - Clean the code - Find all over commands (if there are) Already working --------------- - Get camera directory (TOC) - Get camera storage capabilities - Get image size (in bytes) - Download an image from Flash and Cards libgphoto2-2.5.9/camlibs/enigma13/protocol.txt0000644000175000001440000000643112557123324016145 00000000000000# Olivier Fauchon # # Digital Dream Enigma 1.3 protocol # # 30/07/04 Camera storage medias --------------------- Query: c1 28 00 00 01 00 01 00 | +----------> 01 : Flash Ram 0x02: SmartMedia Card Answer: 0x01 -> storage type present, 0x00h -> No storage of this type Get number of pictures ---------------------- Query: 04 00 Answer: c1 54 00 00 00 00 02 00 NB: The camera returns a number of photo x 2, because for each picture you take, the camera holds both the picture and its thrumbnail. On the example above, i took only 2 snapshots. Download the Table of Contents (or file directory) -------------------------------------------------- This camera provides you a directory containing the name of the picture, the size of the picture (maybe the size, i 'll have a look) Each entry (so each photo) is composed of 16 bytes for its name, and 16 bytes for 41 54 08 00 01 00 00 00 (USB_WRITE COMMAND TO REQUEST THE TOC) <- 41 -> c1 21 00 00 00 00 01 00 (SETUP PACKET READ. don't know what for) <- 01 ->c1 21 00 00 02 00 01 00a (SETUP PACKET READ. don't know what for) Then you can read (32* number_of_images) 00000000: 53 55 4e 50 30 30 30 31 4a 50 47 20 00 00 00 00 00000010: 00 00 c3 0b 00 00 7d 1a c3 0b 04 00 8e 75 03 00 00000020: 53 55 4e 50 30 30 30 31 54 48 4d 20 00 00 00 00 00000030: 00 00 c3 0b 00 00 7d 1a c3 0b 20 00 00 a0 00 00 00000040: 53 55 4e 50 30 30 30 32 4a 50 47 20 00 00 00 00 00000050: 00 00 c3 0b 00 00 7d 1a c3 0b 25 00 c5 85 03 00 00000060: 53 55 4e 50 30 30 30 32 54 48 4d 20 00 00 00 00 00000070: 00 00 c3 0b 00 00 7d 1a c3 0b 42 00 00 a0 00 00 00000080: 53 55 4e 50 30 30 30 33 4a 50 47 20 00 00 00 00 00000090: 00 00 c3 0b 00 00 7d 1a c3 0b 47 00 03 d9 00 00 000000a0: 53 55 4e 50 30 30 30 33 54 48 4d 20 00 00 00 00 000000b0: 00 00 c3 0b 00 00 7d 1a c3 0b 4e 00 80 25 00 00 000000c0: 53 55 4e 50 30 30 30 34 4a 50 47 20 00 00 00 00 000000d0: 00 00 c3 0b 00 00 7d 1a c3 0b 50 00 22 3c 03 00 000000e0: 53 55 4e 50 30 30 30 34 54 48 4d 20 00 00 00 00 000000f0: 00 00 c3 0b 00 00 7d 1a c3 0b 6a 00 00 a0 00 00 Toc entry description: This is the 1st picture : 00000000: 53 55 4e 50 30 30 30 31 4a 50 47 20 00 00 00 00 00000010: 00 00 c3 0b 00 00 7d 1a c3 0b 04 00 8e 75 03 00 the name is SUNP0001JPG ( 53 55 4e 50 30 30 30 31 4a 50 47 20 ) in ASCII the size is 0x03<<10000 + 0x75<<100 + 08e =0x03758e == 226702 bytes Download image -------------- USB_WRITE :41 54 01 00 03 00 00 00 | | | +----------------> 0x03 for thrumbnail, 0x02 for the real photo +----------------------> Image number (01 is the first, NO zero index) HERE, YOU CAN SLEEP 300 MILISECOND There follows 3 packets with the cam (don't know what they are used for) but i play them. <- 41 -> c1 21 00 00 00 00 01 00 <- 01 -> c1 21 00 00 02 00 01 00 <- 01 -> c1 21 00 00 02 00 01 00 AH, it's TIME to download Size to read is the size you extracted from the table of content .... BUT, you need to align this size to the media block size : SIZE_TO_READ_ = (REAL_SIZE_FROM_TOC / ALIGNEMENT) * ALIGNEMENT - If the image is on FLASH, alignement is 0x2000 - If the image is on SmartMedia card, alignement is 0x4000 libgphoto2-2.5.9/camlibs/enigma13/Makefile-files0000644000175000001440000000053112561423351016274 00000000000000EXTRA_DIST += enigma13/STATUS enigma13/protocol.txt enigma13/README.enigma13 enigma13/ChangeLog camlibdoc_DATA += enigma13/README.enigma13 EXTRA_LTLIBRARIES += enigma13.la enigma13_la_SOURCES = enigma13/enigma13.c enigma13_la_LDFLAGS = $(camlib_ldflags) enigma13_la_DEPENDENCIES = $(camlib_dependencies) enigma13_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/enigma13/enigma13.c0000644000175000001440000002565312610415536015321 00000000000000/* blink2.c * * Copyright 2004 Olivier Fauchon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * */ #include "config.h" #include #include #include #include #include #include #include #include "gphoto2-endian.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define ENIGMA13_BLK_FLASH_ALIGN 0x2000 #define ENIGMA13_BLK_CARD_ALIGN 0x4000 #define ENIGMA13_USB_TIMEOUT_MS 5000 #define ENIGMA13_WAIT_FOR_READY_TIMEOUT_S 5 #define ENIGMA13_WAIT_TOC_DELAY_MS 500 #define ENIGMA13_WAIT_IMAGE_READY_MS 300 #define GP_MODULE "enigma13" #define CHECK(result) {int res; res = result; if (res < 0) return (res);} #define CHECK_AND_FREE(result, buf) {int res; res = result; if (res < 0) { free(buf); return (res); }} /* the table of content of the camera it's filled in enigma_get_toc, and used in enigma_download_img */ static char* enigma13_static_toc=NULL; static int enigma13_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Download program for Digital Dream Enigma 1.3. " "by , and adapted from spca50x driver." "Thanks you, spca50x team, it was easy to port your driver on this cam! ")); return (GP_OK); } #if 0 /* * This function probes the camera to get all the storages media * supported (sdram, flash, card) * * Status: Working but not used */ static int enigma13_detect_storage_type (Camera *camera) { int i; char buf[3]; for (i=0;i<3;i++) { CHECK (gp_port_usb_msg_read (camera->port, 0x28, 0x0000, i, &buf[i], 0x01)); } gp_log(GP_LOG_DEBUG, "enigma13","Camera storage information sdram: 0x%x flash 0x%x card: 0x%x\n" , buf[0], buf[1], buf[2]); return GP_OK; } #endif /* * This function deletes all the images * supported (sdram, flash, card) * * Status: not verified */ static int enigma13_flash_delete_all(CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *cam; gp_log(GP_LOG_DEBUG, "enigma13","Delete all files"); cam = data; CHECK (gp_port_usb_msg_write (cam->port, 0x52, 0x0, 0x0, NULL, 0x0) ); return GP_OK; } /* * This function waits camera is ready * * Status: Not sure what it realy does, but the camera replies * Can this be some kind of ping for keepalive, or realy a ready status ? */ static int enigma13_wait_for_ready(Camera *camera) { int timeout = ENIGMA13_WAIT_FOR_READY_TIMEOUT_S; char ready = 1; while (timeout--) { sleep(1); CHECK (gp_port_usb_msg_read (camera->port, 0x21, 0x0000, 0x0000, (char*)&ready, 0x01)); if (ready==0) return GP_OK; } return GP_ERROR; } #if 0 /* * Get the number of images in cam * * Status: Should work, but not used as enigma13_get_TOC does all. * */ static int enigma13_get_filecount (Camera *camera, int *filecount) { uint16_t response = 0; CHECK(enigma13_wait_for_ready(camera)); CHECK (gp_port_usb_msg_read (camera->port, 0x54, 0x0000, 0x0000, (char*)&response, 0x02)); LE16TOH (response); *filecount = response; return GP_OK; } #endif /* * Get the table of contents (directory) from the cam * * Verified: Yes */ static int enigma13_get_toc(Camera *camera, int *filecount, char** toc) { char* flash_toc=NULL; int toc_size = 0; char buf[10]; uint16_t response = 0; int ret=1; CHECK(enigma13_wait_for_ready(camera)); CHECK (gp_port_usb_msg_read (camera->port, 0x54, 0x0000, 0x0000, (char*)&response, 0x02)); LE16TOH (response); *filecount = response; /* Calc toc size */ toc_size = (response) * 0x20; if (toc_size % 0x200 != 0) toc_size = ((toc_size / 0x200) + 1) * 0x200; CHECK(enigma13_wait_for_ready(camera)); CHECK (gp_port_usb_msg_write (camera->port, 0x54, response, 0x0001, NULL, 0x0000)); /* Wait until cam is ready to send the T.O.C */ usleep(ENIGMA13_WAIT_TOC_DELAY_MS * 1000); CHECK (gp_port_usb_msg_read (camera->port, 0x21, 0x0000, 0x0000, buf, 0x01)); if (buf[0]!=0x41) return GP_ERROR; CHECK (gp_port_usb_msg_read (camera->port, 0x21, 0x0000, 0x0002, buf, 0x01)); if (buf[0]!=0x01) return GP_ERROR; flash_toc = (char*)malloc(toc_size); if (!flash_toc) return GP_ERROR_NO_MEMORY; ret=gp_port_read (camera->port, flash_toc, toc_size); *toc= flash_toc; gp_log(GP_LOG_DEBUG, "enigma13","Byte transferred :%d ", ret); return ret; } /* * Function that downloads image * * Camera camera : camera structure * int index : image index ( in gphoto point of view) -1 for real index * char* toc : pointer to toc * char** img_buf : returned image data * int* img_size : returned image data size * */ static int enigma13_download_img(Camera *camera, char *toc, int index, char **img_data, int *img_size) { uint8_t *p; uint32_t file_size = 0, aligned_size = 0; char* buf=NULL; int align=0; char retbuf[2]; gp_log(GP_LOG_DEBUG, "enigma13","DOWNLOADING IMAGE NO %d",index); /* Offset for image informations . Each image has 16 bytes for name and 16 for size, and others*/ p = (uint8_t *)toc + (index*2)*32; /* real size from toc*/ aligned_size = file_size = (p[0x1c] & 0xff) + (p[0x1d] & 0xff) * 0x100 + (p[0x1e] & 0xff) * 0x10000; CHECK (gp_port_usb_msg_read (camera->port, 0x23, 0x0000, 0x64, retbuf, 0x01)); if (retbuf[0]==0x20){ align=ENIGMA13_BLK_CARD_ALIGN; gp_log(GP_LOG_DEBUG, "enigma13"," Image from card, alignement is set to %d bytes ",align); } else if (retbuf[0]==0x10){ align=ENIGMA13_BLK_FLASH_ALIGN; gp_log(GP_LOG_DEBUG, "enigma13"," Image from flash, alignement is set to %d bytes",align); } else { return GP_ERROR; } if (file_size % align != 0) aligned_size = ((file_size / align) + 1) * align; buf = (char*) malloc (aligned_size); if (!buf) return GP_ERROR_NO_MEMORY; CHECK_AND_FREE (gp_port_usb_msg_write (camera->port, 0x54, index+1, 2, NULL, 0x00), buf); usleep(ENIGMA13_WAIT_IMAGE_READY_MS * 1000); CHECK_AND_FREE (gp_port_usb_msg_read (camera->port, 0x21, 0x0000, 0x0000, buf, 0x01), buf); if (buf[0]!=0x41) { free (buf); return GP_ERROR; } CHECK_AND_FREE (gp_port_usb_msg_read (camera->port, 0x21, 0x0000, 0x0002, buf, 0x01), buf); if (buf[0]!=0x01) { free (buf); return GP_ERROR; } CHECK_AND_FREE (gp_port_usb_msg_read (camera->port, 0x21, 0x0000, 0x0002, buf, 0x01), buf); if (buf[0]!=0x01) { free (buf); return GP_ERROR; } gp_log(GP_LOG_DEBUG, "enigma13","READY FOR TRANSFER"); CHECK_AND_FREE (gp_port_read (camera->port, buf, aligned_size), buf); *img_data=buf; *img_size=file_size; return GP_OK; } /* * GPHOTO list files */ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i, numpics; char tmp[20]; CHECK(enigma13_get_toc(camera,&numpics,&enigma13_static_toc)); for ( i=0; i < numpics; i=i+2 ) { sprintf(tmp,"sunp%04d.jpg",(i/2)); gp_list_append( list, tmp, NULL); } return (GP_OK); } /* * File operations */ static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int image_no, result; char* img_data=NULL; int img_size=-1; image_no = gp_filesystem_number(fs, folder, filename, context); gp_log(GP_LOG_DEBUG, "enigma13","Index of image %d is %s",image_no, filename); switch (type) { case GP_FILE_TYPE_NORMAL: { gp_log(GP_LOG_DEBUG, "enigma13","Downloading raw image"); CHECK(enigma13_download_img(camera, enigma13_static_toc, image_no, &img_data, &img_size)); result = gp_file_append( file, img_data, img_size); break; } default: result = GP_ERROR_NOT_SUPPORTED; break; } if (result < 0) return result; return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); strcpy(a.model, "DigitalDream:Enigma1.3"); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = 0x05da; a.usb_product = 0x1018; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; gp_abilities_list_append(list, a); return (GP_OK); } int camera_id (CameraText *id) { strcpy(id->text, "Digital Dream Enigma 1.3"); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .delete_all_func = enigma13_flash_delete_all }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; camera->functions->about = enigma13_about; CHECK(gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera)); CHECK(gp_port_get_settings( camera->port, &settings)); settings.usb.inep = 0x82; settings.usb.outep = 0x03; settings.usb.config = 1; settings.usb.interface = 0; settings.usb.altsetting = 0; CHECK(gp_port_set_timeout (camera->port, ENIGMA13_USB_TIMEOUT_MS)); CHECK(gp_port_set_settings( camera->port, settings)); return GP_OK; } libgphoto2-2.5.9/camlibs/enigma13/ChangeLog0000644000175000001440000000046412557123324015315 000000000000002004-12-22 Hubert Figuiere * enigma13.c (enigma13_detect_storage_type): Comment out dead code. (enigma13_get_filecount): Comment out dead code. 2004-10-28 Hubert Figuiere * enigma13.c (enigma13_flash_delete_all): Fix build for gcc 2.9 (bug #1055868) libgphoto2-2.5.9/camlibs/enigma13/README.enigma130000644000175000001440000000051612561423351016022 00000000000000Olivier Fauchon Digital Dream Enigma 1.3 Driver ------------------------------- Compatible hardware ------------------- - Digital Dream Enigma 1.3 Thanks ------ - spca50x & blink2 developpers for their code. It inspired me a lot. - Benoit Papillault for snoopy - Irc & mailing list people. libgphoto2-2.5.9/camlibs/Makefile.in0000644000175000001440000060445712623156011014211 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ ######################################################################## # Usage instructions ######################################################################## # If you only want to build a single camlib (say agfa_cl20), run # gmake -C camlibs agfa_cl20.la # or # ( cd camlibs && make agfa_cl20.la ) # # If you only want to install a single camlib or two, run # make DRIVERS="canon.la agfa_cl20.la" install # in the camlibs/ subdir or in the libgphoto2 top-level directory. ######################################################################## # SUBDIRS = dc120 dc210 dc240 dc3200 ez200 # If you use this as pentax for a real camlib (say 'foobar.la'), # make sure to change the "noinst_" at the beginning of the following # lines: # * "noinst_DATA" into "camlibdoc_DATA" # * "noinst_LTLIBRARIES" into "EXTRA_LTLIBRARIES" # # Additionally, you must add add an include line to the Makefile-files # of the new camlib to camlibs/Makefile.am: # * "include my-new-camlib/Makefile-files" # # And as the last step, you need to add it to configure.ac: # * GP_CAMLIB([foobar])dnl # If you use this as template for a real camlib (say 'foobar.la'), # make sure to change the "noinst_" at the beginning of the following # lines: # * "noinst_DATA" into "camlibdoc_DATA" # * "noinst_LTLIBRARIES" into "EXTRA_LTLIBRARIES" # # Additionally, you must add add an include line to the Makefile-files # of the new camlib to camlibs/Makefile.am: # * "include my-new-camlib/Makefile-files" # # And as the last step, you need to add it to configure.ac: # * GP_CAMLIB([foobar])dnl VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = camlibs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(camlibdir)" "$(DESTDIR)$(camlibdocdir)" \ "$(DESTDIR)$(localizationdir)" LTLIBRARIES = $(camlib_LTLIBRARIES) $(noinst_LTLIBRARIES) am__dirstamp = $(am__leading_dot)dirstamp am_adc65_la_OBJECTS = adc65/adc65.lo adc65_la_OBJECTS = $(am_adc65_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = adc65_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(adc65_la_LDFLAGS) $(LDFLAGS) -o $@ am_agfa_cl20_la_OBJECTS = agfa-cl20/agfa_cl20.lo agfa_cl20_la_OBJECTS = $(am_agfa_cl20_la_OBJECTS) agfa_cl20_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(agfa_cl20_la_LDFLAGS) $(LDFLAGS) -o $@ am_aox_la_OBJECTS = aox/library.lo aox/aox.lo aox_la_OBJECTS = $(am_aox_la_OBJECTS) aox_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(aox_la_LDFLAGS) $(LDFLAGS) -o $@ am_ax203_la_OBJECTS = ax203/ax203_la-library.lo \ ax203/ax203_la-ax203.lo ax203/ax203_la-ax203_decode_yuv.lo \ ax203/ax203_la-ax203_decode_yuv_delta.lo \ ax203/ax203_la-ax203_compress_jpeg.lo \ ax203/ax203_la-jpeg_memsrcdest.lo ax203/ax203_la-tinyjpeg.lo \ ax203/ax203_la-jidctflt.lo ax203_la_OBJECTS = $(am_ax203_la_OBJECTS) ax203_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ax203_la_CFLAGS) \ $(CFLAGS) $(ax203_la_LDFLAGS) $(LDFLAGS) -o $@ am_barbie_la_OBJECTS = barbie/barbie.lo barbie_la_OBJECTS = $(am_barbie_la_OBJECTS) barbie_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(barbie_la_LDFLAGS) $(LDFLAGS) -o $@ am__DEPENDENCIES_1 = am_canon_la_OBJECTS = canon/canon_la-canon.lo \ canon/canon_la-library.lo canon/canon_la-serial.lo \ canon/canon_la-usb.lo canon/canon_la-crc.lo \ canon/canon_la-util.lo canon_la_OBJECTS = $(am_canon_la_OBJECTS) canon_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(canon_la_LDFLAGS) $(LDFLAGS) -o $@ am_casio_qv_la_OBJECTS = casio/casio-qv.lo casio/casio-qv-commands.lo \ casio/camtojpeg.lo casio/ycctoppm.lo casio_qv_la_OBJECTS = $(am_casio_qv_la_OBJECTS) casio_qv_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(casio_qv_la_LDFLAGS) $(LDFLAGS) -o $@ clicksmart310_la_DEPENDENCIES = $(camlib_libadd) am_clicksmart310_la_OBJECTS = clicksmart310/library.lo \ clicksmart310/clicksmart.lo clicksmart310_la_OBJECTS = $(am_clicksmart310_la_OBJECTS) clicksmart310_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(clicksmart310_la_LDFLAGS) $(LDFLAGS) \ -o $@ am_digigr8_la_OBJECTS = digigr8/library.lo digigr8/digigr8.lo \ digigr8/digi_postprocess.lo digigr8_la_OBJECTS = $(am_digigr8_la_OBJECTS) digigr8_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(digigr8_la_LDFLAGS) $(LDFLAGS) -o $@ am_digita_la_OBJECTS = digita/digita.lo digita/serial.lo digita/usb.lo \ digita/commands.lo digita_la_OBJECTS = $(am_digita_la_OBJECTS) digita_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(digita_la_LDFLAGS) $(LDFLAGS) -o $@ am_dimagev_la_OBJECTS = minolta/dimagev/capture.lo \ minolta/dimagev/data.lo minolta/dimagev/delete.lo \ minolta/dimagev/dimagev.lo minolta/dimagev/download.lo \ minolta/dimagev/info.lo minolta/dimagev/packet.lo \ minolta/dimagev/status.lo minolta/dimagev/upload.lo \ minolta/dimagev/util.lo dimagev_la_OBJECTS = $(am_dimagev_la_OBJECTS) dimagev_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(dimagev_la_LDFLAGS) $(LDFLAGS) -o $@ am_dimera3500_la_OBJECTS = dimera/dimera3500.lo dimera/mesalib.lo dimera3500_la_OBJECTS = $(am_dimera3500_la_OBJECTS) dimera3500_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(dimera3500_la_LDFLAGS) $(LDFLAGS) -o $@ am_directory_la_OBJECTS = directory/directory_la-directory.lo directory_la_OBJECTS = $(am_directory_la_OBJECTS) directory_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(directory_la_LDFLAGS) $(LDFLAGS) -o $@ am_enigma13_la_OBJECTS = enigma13/enigma13.lo enigma13_la_OBJECTS = $(am_enigma13_la_OBJECTS) enigma13_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(enigma13_la_LDFLAGS) $(LDFLAGS) -o $@ am_fuji_la_OBJECTS = fuji/library.lo fuji/fuji.lo fuji_la_OBJECTS = $(am_fuji_la_OBJECTS) fuji_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(fuji_la_LDFLAGS) $(LDFLAGS) -o $@ am_gsmart300_la_OBJECTS = gsmart300/gsmart300.lo gsmart300/library.lo gsmart300_la_OBJECTS = $(am_gsmart300_la_OBJECTS) gsmart300_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(gsmart300_la_LDFLAGS) $(LDFLAGS) -o $@ am_hp215_la_OBJECTS = hp215/hp215.lo hp215_la_OBJECTS = $(am_hp215_la_OBJECTS) hp215_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(hp215_la_LDFLAGS) $(LDFLAGS) -o $@ am_iclick_la_OBJECTS = iclick/library.lo iclick/iclick.lo iclick_la_OBJECTS = $(am_iclick_la_OBJECTS) iclick_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(iclick_la_LDFLAGS) $(LDFLAGS) -o $@ am_jamcam_la_OBJECTS = jamcam/jamcam.lo jamcam/library.lo jamcam_la_OBJECTS = $(am_jamcam_la_OBJECTS) jamcam_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(jamcam_la_LDFLAGS) $(LDFLAGS) -o $@ am_jd11_la_OBJECTS = jd11/jd11.lo jd11/serial.lo jd11/decomp.lo jd11_la_OBJECTS = $(am_jd11_la_OBJECTS) jd11_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(jd11_la_LDFLAGS) $(LDFLAGS) -o $@ am_jl2005a_la_OBJECTS = jl2005a/library.lo jl2005a/jl2005a.lo jl2005a_la_OBJECTS = $(am_jl2005a_la_OBJECTS) jl2005a_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(jl2005a_la_LDFLAGS) $(LDFLAGS) -o $@ am_jl2005c_la_OBJECTS = jl2005c/library.lo jl2005c/jl2005c.lo \ jl2005c/jpeg_memsrcdest.lo jl2005c/jl2005bcd_decompress.lo \ jl2005c/img_enhance.lo jl2005c_la_OBJECTS = $(am_jl2005c_la_OBJECTS) jl2005c_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(jl2005c_la_LDFLAGS) $(LDFLAGS) -o $@ am_kodak_dc120_la_OBJECTS = kodak/dc120/dc120.lo \ kodak/dc120/library.lo kodak_dc120_la_OBJECTS = $(am_kodak_dc120_la_OBJECTS) kodak_dc120_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(kodak_dc120_la_LDFLAGS) $(LDFLAGS) -o \ $@ am_kodak_dc210_la_OBJECTS = kodak/dc210/dc210.lo \ kodak/dc210/library.lo kodak_dc210_la_OBJECTS = $(am_kodak_dc210_la_OBJECTS) kodak_dc210_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(kodak_dc210_la_LDFLAGS) $(LDFLAGS) -o \ $@ am_kodak_dc240_la_OBJECTS = kodak/dc240/dc240.lo \ kodak/dc240/library.lo kodak_dc240_la_OBJECTS = $(am_kodak_dc240_la_OBJECTS) kodak_dc240_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(kodak_dc240_la_LDFLAGS) $(LDFLAGS) -o \ $@ am_kodak_dc3200_la_OBJECTS = kodak/dc3200/dc3200.lo \ kodak/dc3200/library.lo kodak_dc3200_la_OBJECTS = $(am_kodak_dc3200_la_OBJECTS) kodak_dc3200_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(kodak_dc3200_la_LDFLAGS) $(LDFLAGS) \ -o $@ am_kodak_ez200_la_OBJECTS = kodak/ez200/ez200.lo kodak_ez200_la_OBJECTS = $(am_kodak_ez200_la_OBJECTS) kodak_ez200_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(kodak_ez200_la_LDFLAGS) $(LDFLAGS) -o \ $@ am_konica_la_OBJECTS = konica/konica_la-lowlevel.lo \ konica/konica_la-konica.lo konica/konica_la-library.lo konica_la_OBJECTS = $(am_konica_la_OBJECTS) konica_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(konica_la_LDFLAGS) $(LDFLAGS) -o $@ am_konica_qm150_la_OBJECTS = konica/konica_qm150_la-qm150.lo konica_qm150_la_OBJECTS = $(am_konica_qm150_la_OBJECTS) konica_qm150_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(konica_qm150_la_LDFLAGS) $(LDFLAGS) \ -o $@ am_largan_la_OBJECTS = largan/lmini/largan.lo largan/lmini/lmini.lo \ largan/lmini/lmini_ccd.lo largan_la_OBJECTS = $(am_largan_la_OBJECTS) largan_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(largan_la_LDFLAGS) $(LDFLAGS) -o $@ am_lg_gsm_la_OBJECTS = lg_gsm/library.lo lg_gsm/lg_gsm.lo lg_gsm_la_OBJECTS = $(am_lg_gsm_la_OBJECTS) lg_gsm_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(lg_gsm_la_LDFLAGS) $(LDFLAGS) -o $@ am_mars_la_OBJECTS = mars/library.lo mars/mars.lo mars_la_OBJECTS = $(am_mars_la_OBJECTS) mars_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(mars_la_LDFLAGS) $(LDFLAGS) -o $@ am_mustek_la_OBJECTS = mustek/mdc800.lo mustek/core.lo mustek/image.lo \ mustek/io.lo mustek/rs232.lo mustek/usb.lo mustek_la_OBJECTS = $(am_mustek_la_OBJECTS) mustek_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(mustek_la_LDFLAGS) $(LDFLAGS) -o $@ am_panasonic_coolshot_la_OBJECTS = panasonic/coolshot/coolshot.lo \ panasonic/coolshot/library.lo panasonic_coolshot_la_OBJECTS = $(am_panasonic_coolshot_la_OBJECTS) panasonic_coolshot_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(panasonic_coolshot_la_LDFLAGS) \ $(LDFLAGS) -o $@ am_panasonic_dc1000_la_OBJECTS = panasonic/dc1000.lo panasonic/dc.lo panasonic_dc1000_la_OBJECTS = $(am_panasonic_dc1000_la_OBJECTS) panasonic_dc1000_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(panasonic_dc1000_la_LDFLAGS) \ $(LDFLAGS) -o $@ am_panasonic_dc1580_la_OBJECTS = panasonic/dc1580.lo panasonic/dc.lo panasonic_dc1580_la_OBJECTS = $(am_panasonic_dc1580_la_OBJECTS) panasonic_dc1580_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(panasonic_dc1580_la_LDFLAGS) \ $(LDFLAGS) -o $@ am_panasonic_l859_la_OBJECTS = panasonic/l859/l859.lo panasonic_l859_la_OBJECTS = $(am_panasonic_l859_la_OBJECTS) panasonic_l859_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(panasonic_l859_la_LDFLAGS) $(LDFLAGS) \ -o $@ am_pccam300_la_OBJECTS = pccam300/pccam300.lo pccam300/library.lo pccam300_la_OBJECTS = $(am_pccam300_la_OBJECTS) pccam300_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(pccam300_la_LDFLAGS) $(LDFLAGS) -o $@ am_pccam600_la_OBJECTS = pccam600/pccam600.lo pccam600/library.lo pccam600_la_OBJECTS = $(am_pccam600_la_OBJECTS) pccam600_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(pccam600_la_LDFLAGS) $(LDFLAGS) -o $@ am_pentax_la_OBJECTS = pentax/pentax_la-pslr.lo \ pentax/pentax_la-library.lo pentax_la_OBJECTS = $(am_pentax_la_OBJECTS) pentax_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(pentax_la_CFLAGS) \ $(CFLAGS) $(pentax_la_LDFLAGS) $(LDFLAGS) -o $@ am_polaroid_pdc320_la_OBJECTS = polaroid/pdc320.lo polaroid_pdc320_la_OBJECTS = $(am_polaroid_pdc320_la_OBJECTS) polaroid_pdc320_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(polaroid_pdc320_la_LDFLAGS) \ $(LDFLAGS) -o $@ am_polaroid_pdc640_la_OBJECTS = polaroid/pdc640.lo polaroid/jd350e.lo \ polaroid/dlink350f.lo polaroid_pdc640_la_OBJECTS = $(am_polaroid_pdc640_la_OBJECTS) polaroid_pdc640_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(polaroid_pdc640_la_LDFLAGS) \ $(LDFLAGS) -o $@ am_polaroid_pdc700_la_OBJECTS = polaroid/pdc700.lo polaroid_pdc700_la_OBJECTS = $(am_polaroid_pdc700_la_OBJECTS) polaroid_pdc700_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(polaroid_pdc700_la_LDFLAGS) \ $(LDFLAGS) -o $@ am_ptp2_la_OBJECTS = ptp2/ptp2_la-ptp.lo ptp2/ptp2_la-library.lo \ ptp2/ptp2_la-usb.lo ptp2/ptp2_la-ptpip.lo \ ptp2/ptp2_la-config.lo ptp2/ptp2_la-olympus-wrap.lo \ ptp2/ptp2_la-chdk.lo ptp2_la_OBJECTS = $(am_ptp2_la_OBJECTS) ptp2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ptp2_la_CFLAGS) \ $(CFLAGS) $(ptp2_la_LDFLAGS) $(LDFLAGS) -o $@ am_ricoh_la_OBJECTS = ricoh/library.lo ricoh/ricoh.lo ricoh_la_OBJECTS = $(am_ricoh_la_OBJECTS) ricoh_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(ricoh_la_LDFLAGS) $(LDFLAGS) -o $@ am_ricoh_g3_la_OBJECTS = ricoh/g3.lo ricoh_g3_la_OBJECTS = $(am_ricoh_g3_la_OBJECTS) ricoh_g3_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(ricoh_g3_la_LDFLAGS) $(LDFLAGS) -o $@ am_samsung_la_OBJECTS = samsung/samsung.lo samsung_la_OBJECTS = $(am_samsung_la_OBJECTS) samsung_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(samsung_la_LDFLAGS) $(LDFLAGS) -o $@ am_sierra_la_OBJECTS = sierra/sierra_la-sierra.lo \ sierra/sierra_la-library.lo sierra/sierra_la-sierra-usbwrap.lo \ sierra/sierra_la-sierra-desc.lo sierra/sierra_la-nikon-desc.lo \ sierra/sierra_la-olympus-desc.lo \ sierra/sierra_la-epson-desc.lo sierra_la_OBJECTS = $(am_sierra_la_OBJECTS) sierra_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(sierra_la_LDFLAGS) $(LDFLAGS) -o $@ am_sipix_blink_la_OBJECTS = sipix/blink.lo sipix_blink_la_OBJECTS = $(am_sipix_blink_la_OBJECTS) sipix_blink_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(sipix_blink_la_LDFLAGS) $(LDFLAGS) -o \ $@ am_sipix_blink2_la_OBJECTS = sipix/blink2.lo sipix_blink2_la_OBJECTS = $(am_sipix_blink2_la_OBJECTS) sipix_blink2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(sipix_blink2_la_LDFLAGS) $(LDFLAGS) \ -o $@ am_sipix_web2_la_OBJECTS = sipix/web2.lo sipix_web2_la_OBJECTS = $(am_sipix_web2_la_OBJECTS) sipix_web2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(sipix_web2_la_LDFLAGS) $(LDFLAGS) -o $@ am_smal_la_OBJECTS = smal/smal.lo smal/ultrapocket.lo smal_la_OBJECTS = $(am_smal_la_OBJECTS) smal_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(smal_la_LDFLAGS) $(LDFLAGS) -o $@ am_sonix_la_OBJECTS = sonix/library.lo sonix/sonix.lo sonix_la_OBJECTS = $(am_sonix_la_OBJECTS) sonix_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(sonix_la_LDFLAGS) $(LDFLAGS) -o $@ am_sony_dscf1_la_OBJECTS = sonydscf1/command.lo sonydscf1/sonydscf1.lo sony_dscf1_la_OBJECTS = $(am_sony_dscf1_la_OBJECTS) sony_dscf1_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(sony_dscf1_la_LDFLAGS) $(LDFLAGS) -o $@ am_sony_dscf55_la_OBJECTS = sonydscf55/sony.lo sonydscf55/camera.lo sony_dscf55_la_OBJECTS = $(am_sony_dscf55_la_OBJECTS) sony_dscf55_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(sony_dscf55_la_LDFLAGS) $(LDFLAGS) -o \ $@ am_soundvision_la_OBJECTS = soundvision/soundvision.lo \ soundvision/agfa_cl18.lo soundvision/tiger_fastflicks.lo \ soundvision/commands.lo soundvision_la_OBJECTS = $(am_soundvision_la_OBJECTS) soundvision_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(soundvision_la_LDFLAGS) $(LDFLAGS) -o \ $@ am_spca50x_la_OBJECTS = spca50x/spca50x.lo spca50x/spca50x-flash.lo \ spca50x/spca50x-sdram.lo spca50x/library.lo spca50x_la_OBJECTS = $(am_spca50x_la_OBJECTS) spca50x_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(spca50x_la_LDFLAGS) $(LDFLAGS) -o $@ am_sq905_la_OBJECTS = sq905/library.lo sq905/sq905.lo \ sq905/postprocess.lo sq905_la_OBJECTS = $(am_sq905_la_OBJECTS) sq905_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(sq905_la_LDFLAGS) $(LDFLAGS) -o $@ am_st2205_la_OBJECTS = st2205/st2205_la-library.lo \ st2205/st2205_la-st2205.lo st2205/st2205_la-st2205_decode.lo \ st2205/st2205_la-st2205_tables.lo st2205_la_OBJECTS = $(am_st2205_la_OBJECTS) st2205_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(st2205_la_CFLAGS) \ $(CFLAGS) $(st2205_la_LDFLAGS) $(LDFLAGS) -o $@ am_stv0674_la_OBJECTS = stv0674/stv0674.lo stv0674/library.lo stv0674_la_OBJECTS = $(am_stv0674_la_OBJECTS) stv0674_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(stv0674_la_LDFLAGS) $(LDFLAGS) -o $@ am_stv0680_la_OBJECTS = stv0680/stv0680.lo stv0680/library.lo \ stv0680/bayer.lo stv0680/sharpen.lo stv0680/saturate.lo \ stv0680/demosaic_sharpen.lo stv0680_la_OBJECTS = $(am_stv0680_la_OBJECTS) stv0680_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(stv0680_la_LDFLAGS) $(LDFLAGS) -o $@ am_sx330z_la_OBJECTS = sx330z/library.lo sx330z/sx330z.lo sx330z_la_OBJECTS = $(am_sx330z_la_OBJECTS) sx330z_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(sx330z_la_LDFLAGS) $(LDFLAGS) -o $@ am_template_la_OBJECTS = template/template_la-template.lo template_la_OBJECTS = $(am_template_la_OBJECTS) template_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(template_la_CFLAGS) \ $(CFLAGS) $(template_la_LDFLAGS) $(LDFLAGS) -o $@ am_topfield_la_OBJECTS = topfield/crc16.lo topfield/tf_bytes.lo \ topfield/mjd.lo topfield/puppy.lo topfield/usb_io.lo topfield_la_OBJECTS = $(am_topfield_la_OBJECTS) topfield_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(topfield_la_LDFLAGS) $(LDFLAGS) -o $@ am_toshiba_pdrm11_la_OBJECTS = toshiba/pdrm11/library.lo \ toshiba/pdrm11/pdrm11.lo toshiba_pdrm11_la_OBJECTS = $(am_toshiba_pdrm11_la_OBJECTS) toshiba_pdrm11_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(toshiba_pdrm11_la_LDFLAGS) $(LDFLAGS) \ -o $@ am_tp6801_la_OBJECTS = tp6801/tp6801_la-library.lo \ tp6801/tp6801_la-tp6801.lo tp6801_la_OBJECTS = $(am_tp6801_la_OBJECTS) tp6801_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(tp6801_la_CFLAGS) \ $(CFLAGS) $(tp6801_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/auto-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(adc65_la_SOURCES) $(agfa_cl20_la_SOURCES) \ $(aox_la_SOURCES) $(ax203_la_SOURCES) $(barbie_la_SOURCES) \ $(canon_la_SOURCES) $(casio_qv_la_SOURCES) \ $(clicksmart310_la_SOURCES) $(digigr8_la_SOURCES) \ $(digita_la_SOURCES) $(dimagev_la_SOURCES) \ $(dimera3500_la_SOURCES) $(directory_la_SOURCES) \ $(enigma13_la_SOURCES) $(fuji_la_SOURCES) \ $(gsmart300_la_SOURCES) $(hp215_la_SOURCES) \ $(iclick_la_SOURCES) $(jamcam_la_SOURCES) $(jd11_la_SOURCES) \ $(jl2005a_la_SOURCES) $(jl2005c_la_SOURCES) \ $(kodak_dc120_la_SOURCES) $(kodak_dc210_la_SOURCES) \ $(kodak_dc240_la_SOURCES) $(kodak_dc3200_la_SOURCES) \ $(kodak_ez200_la_SOURCES) $(konica_la_SOURCES) \ $(konica_qm150_la_SOURCES) $(largan_la_SOURCES) \ $(lg_gsm_la_SOURCES) $(mars_la_SOURCES) $(mustek_la_SOURCES) \ $(panasonic_coolshot_la_SOURCES) \ $(panasonic_dc1000_la_SOURCES) $(panasonic_dc1580_la_SOURCES) \ $(panasonic_l859_la_SOURCES) $(pccam300_la_SOURCES) \ $(pccam600_la_SOURCES) $(pentax_la_SOURCES) \ $(polaroid_pdc320_la_SOURCES) $(polaroid_pdc640_la_SOURCES) \ $(polaroid_pdc700_la_SOURCES) $(ptp2_la_SOURCES) \ $(ricoh_la_SOURCES) $(ricoh_g3_la_SOURCES) \ $(samsung_la_SOURCES) $(sierra_la_SOURCES) \ $(sipix_blink_la_SOURCES) $(sipix_blink2_la_SOURCES) \ $(sipix_web2_la_SOURCES) $(smal_la_SOURCES) \ $(sonix_la_SOURCES) $(sony_dscf1_la_SOURCES) \ $(sony_dscf55_la_SOURCES) $(soundvision_la_SOURCES) \ $(spca50x_la_SOURCES) $(sq905_la_SOURCES) $(st2205_la_SOURCES) \ $(stv0674_la_SOURCES) $(stv0680_la_SOURCES) \ $(sx330z_la_SOURCES) $(template_la_SOURCES) \ $(topfield_la_SOURCES) $(toshiba_pdrm11_la_SOURCES) \ $(tp6801_la_SOURCES) DIST_SOURCES = $(adc65_la_SOURCES) $(agfa_cl20_la_SOURCES) \ $(aox_la_SOURCES) $(ax203_la_SOURCES) $(barbie_la_SOURCES) \ $(canon_la_SOURCES) $(casio_qv_la_SOURCES) \ $(clicksmart310_la_SOURCES) $(digigr8_la_SOURCES) \ $(digita_la_SOURCES) $(dimagev_la_SOURCES) \ $(dimera3500_la_SOURCES) $(directory_la_SOURCES) \ $(enigma13_la_SOURCES) $(fuji_la_SOURCES) \ $(gsmart300_la_SOURCES) $(hp215_la_SOURCES) \ $(iclick_la_SOURCES) $(jamcam_la_SOURCES) $(jd11_la_SOURCES) \ $(jl2005a_la_SOURCES) $(jl2005c_la_SOURCES) \ $(kodak_dc120_la_SOURCES) $(kodak_dc210_la_SOURCES) \ $(kodak_dc240_la_SOURCES) $(kodak_dc3200_la_SOURCES) \ $(kodak_ez200_la_SOURCES) $(konica_la_SOURCES) \ $(konica_qm150_la_SOURCES) $(largan_la_SOURCES) \ $(lg_gsm_la_SOURCES) $(mars_la_SOURCES) $(mustek_la_SOURCES) \ $(panasonic_coolshot_la_SOURCES) \ $(panasonic_dc1000_la_SOURCES) $(panasonic_dc1580_la_SOURCES) \ $(panasonic_l859_la_SOURCES) $(pccam300_la_SOURCES) \ $(pccam600_la_SOURCES) $(pentax_la_SOURCES) \ $(polaroid_pdc320_la_SOURCES) $(polaroid_pdc640_la_SOURCES) \ $(polaroid_pdc700_la_SOURCES) $(ptp2_la_SOURCES) \ $(ricoh_la_SOURCES) $(ricoh_g3_la_SOURCES) \ $(samsung_la_SOURCES) $(sierra_la_SOURCES) \ $(sipix_blink_la_SOURCES) $(sipix_blink2_la_SOURCES) \ $(sipix_web2_la_SOURCES) $(smal_la_SOURCES) \ $(sonix_la_SOURCES) $(sony_dscf1_la_SOURCES) \ $(sony_dscf55_la_SOURCES) $(soundvision_la_SOURCES) \ $(spca50x_la_SOURCES) $(sq905_la_SOURCES) $(st2205_la_SOURCES) \ $(stv0674_la_SOURCES) $(stv0680_la_SOURCES) \ $(sx330z_la_SOURCES) $(template_la_SOURCES) \ $(topfield_la_SOURCES) $(toshiba_pdrm11_la_SOURCES) \ $(tp6801_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-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 \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(camlibdoc_DATA) $(localization_DATA) $(noinst_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/adc65/Makefile-files \ $(srcdir)/agfa-cl20/Makefile-files \ $(srcdir)/aox/Makefile-files $(srcdir)/ax203/Makefile-files \ $(srcdir)/barbie/Makefile-files $(srcdir)/canon/Makefile-files \ $(srcdir)/casio/Makefile-files \ $(srcdir)/clicksmart310/Makefile-files \ $(srcdir)/digigr8/Makefile-files \ $(srcdir)/digita/Makefile-files \ $(srcdir)/dimera/Makefile-files \ $(srcdir)/directory/Makefile-files \ $(srcdir)/enigma13/Makefile-files \ $(srcdir)/fuji/Makefile-files \ $(srcdir)/gsmart300/Makefile-files \ $(srcdir)/hp215/Makefile-files $(srcdir)/iclick/Makefile-files \ $(srcdir)/jamcam/Makefile-files $(srcdir)/jd11/Makefile-files \ $(srcdir)/jl2005a/Makefile-files \ $(srcdir)/jl2005c/Makefile-files \ $(srcdir)/kodak/Makefile-files \ $(srcdir)/kodak/dc120/Makefile-files \ $(srcdir)/kodak/dc210/Makefile-files \ $(srcdir)/kodak/dc240/Makefile-files \ $(srcdir)/kodak/dc3200/Makefile-files \ $(srcdir)/kodak/ez200/Makefile-files \ $(srcdir)/konica/Makefile-files \ $(srcdir)/largan/lmini/Makefile-files \ $(srcdir)/lg_gsm/Makefile-files $(srcdir)/mars/Makefile-files \ $(srcdir)/minolta/Makefile-files \ $(srcdir)/minolta/dimagev/Makefile-files \ $(srcdir)/mustek/Makefile-files \ $(srcdir)/panasonic/Makefile-files \ $(srcdir)/panasonic/coolshot/Makefile-files \ $(srcdir)/panasonic/l859/Makefile-files \ $(srcdir)/pccam300/Makefile-files \ $(srcdir)/pccam600/Makefile-files \ $(srcdir)/pentax/Makefile-files \ $(srcdir)/polaroid/Makefile-files \ $(srcdir)/ptp2/Makefile-files $(srcdir)/ricoh/Makefile-files \ $(srcdir)/samsung/Makefile-files \ $(srcdir)/sierra/Makefile-files $(srcdir)/sipix/Makefile-files \ $(srcdir)/smal/Makefile-files $(srcdir)/sonix/Makefile-files \ $(srcdir)/sonydscf1/Makefile-files \ $(srcdir)/sonydscf55/Makefile-files \ $(srcdir)/soundvision/Makefile-files \ $(srcdir)/spca50x/Makefile-files \ $(srcdir)/sq905/Makefile-files $(srcdir)/st2205/Makefile-files \ $(srcdir)/stv0674/Makefile-files \ $(srcdir)/stv0680/Makefile-files \ $(srcdir)/sx330z/Makefile-files \ $(srcdir)/template/Makefile-files \ $(srcdir)/topfield/Makefile-files \ $(srcdir)/toshiba/pdrm11/Makefile-files \ $(srcdir)/tp6801/Makefile-files $(top_srcdir)/auto-aux/depcomp \ $(top_srcdir)/auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir) -I$(top_builddir) \ -I$(top_srcdir)/libgphoto2_port -I$(top_srcdir)/libgphoto2 \ -I$(top_builddir)/libgphoto2 AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ ######################################################################## # The only SUBDIRS here are "." (to run all-local checking the # definition of the camlibs) and the special ones for building docs # and stuff. # # Building the camlibs itself is defined in the Makefile-files # included below. SUBDIRS = . canon/doc konica/localization ######################################################################## # Define the common variables added to in the included Makefile-files ######################################################################## # Make sure that the list of camlibs defined in configure.ac using # GP_CAMLIB(...) and the list of camlibs defined in */Makefile-files # match. CLEANFILES = all-src-camlibs all-def-camlibs # SUBDIRS = coolshot l859 EXTRA_DIST = camlib.sym adc65/README.adc65 adc65/TODO adc65/Changelog \ agfa-cl20/README.agfa-cl20 agfa-cl20/STATUS \ agfa-cl20/ChangeLog agfa-cl20/protocol.txt \ agfa-cl20/protocol2.txt agfa-cl20/commands.txt \ agfa-cl20/pic-header.txt agfa-cl20/RANDOM aox/README.aox \ aox/ChangeLog ax203/README.ax203-compression \ ax203/README.ax203 barbie/Protocol.txt barbie/ChangeLog \ canon/.indent.pro canon/ChangeLog canon/urb-interpret \ canon/README.canon canon/TODO casio/PROTOCOL.txt \ casio/ChangeLog clicksmart310/README.clicksmart310 \ digigr8/README.905C digigr8/README.9050 digigr8/README.9051 \ digigr8/README.9052 digigr8/README.913D digigr8/ChangeLog \ digita/ChangeLog dimera/CREDITS dimera/Protocol.txt \ dimera/ChangeLog dimera/TODO directory/ChangeLog \ enigma13/STATUS enigma13/protocol.txt enigma13/README.enigma13 \ enigma13/ChangeLog fuji/PROTOCOL fuji/ChangeLog \ gsmart300/README.gsmart300 gsmart300/ChangeLog hp215/ChangeLog \ hp215/PROTOCOL iclick/README.iclick iclick/ChangeLog \ jamcam/README.jamcam jamcam/ChangeLog jd11/jd11.html \ jd11/ChangeLog jl2005a/README.jl2005a jl2005a/ChangeLog \ jl2005c/README.jl2005c jl2005c/README.jl2005bcd-compression \ jl2005c/ChangeLog kodak/dc120/ChangeLog kodak/dc210/ChangeLog \ kodak/dc210/TODO kodak/dc240/ChangeLog kodak/dc3200/ChangeLog \ kodak/ez200/Protocol.txt kodak/ez200/ez200-lsusb.txt \ kodak/ez200/ChangeLog kodak/CAMERAS konica/EXPERTS \ konica/qm150.txt konica/README.konica konica/ChangeLog \ konica/COPYING konica/TODO largan/lmini/README.largan-lmini \ largan/lmini/ChangeLog lg_gsm/README.lg_gsm lg_gsm/ChangeLog \ mars/protocol.txt mars/README.mars mars/ChangeLog \ minolta/dimagev/README.minolta-dimagev minolta/dimagev/COPYING \ minolta/NEWER_MINOLTAS mustek/AUTHOR mustek/README.mustek \ mustek/ChangeLog mustek/STATUS \ panasonic/coolshot/README.panasonic-coolshot \ panasonic/coolshot/ChangeLog \ panasonic/l859/README.panasonic-l859 panasonic/l859/ChangeLog \ panasonic/l859/TODO panasonic/README.panasonic \ panasonic/ChangeLog pccam300/README.pccam300 \ pccam300/pccam300-lsusb.txt pccam300/ChangeLog \ pccam600/README.pccam600 pccam600/ChangeLog \ pentax/README.pentax pentax/ChangeLog polaroid/jpeg.txt \ polaroid/jpeghead.h polaroid/pdc320.html polaroid/gt98x.html \ polaroid/ChangeLog ptp2/ptp-pack.c ptp2/PTPIP.TXT \ ptp2/README.ptp2 ptp2/TODO ptp2/ChangeLog ptp2/ptpip.html \ ptp2/TESTPLAN.ptp2 ricoh/g3.txt ricoh/ChangeLog \ samsung/ChangeLog sierra/PROTOCOL sierra/ChangeLog \ sierra/MC-EU1-Protocol.txt sipix/web2.html sipix/blink.c \ sipix/blink.txt sipix/xjpeg.c sipix/blink2.txt sipix/ChangeLog \ smal/README.smal smal/ChangeLog sonix/README.sonix \ sonix/ChangeLog sonydscf1/README.sonydscf1 sonydscf1/ChangeLog \ sonydscf55/ChangeLog sonydscf55/TODO \ soundvision/README.soundvision soundvision/BUGS \ soundvision/ChangeLog spca50x/ChangeLog.benq \ spca50x/ChangeLog.gsmart spca50x/ChangeLog.spca504_flash \ spca50x/lsusb-v spca50x/README.spca50x spca50x/ChangeLog \ sq905/README.913C sq905/README.sq905 sq905/ChangeLog \ sq905/TODO st2205/README.st2205-compression \ st2205/README.st2205 stv0674/Protocol stv0674/Changelog \ stv0680/CREDITS stv0680/ChangeLog stv0680/LICENCE \ stv0680/README.pdf \ stv0680/680_commands_and_communication_sdk.pdf.gz \ sx330z/ChangeLog template/README.template template/ChangeLog \ topfield/ChangeLog toshiba/pdrm11/README.toshiba-pdrm11 \ tp6801/README.tp6801 tp6801/tp6801-dump.c camlibdoc_DATA = adc65/README.adc65 agfa-cl20/README.agfa-cl20 \ aox/README.aox ax203/README.ax203-compression \ ax203/README.ax203 canon/README.canon \ clicksmart310/README.clicksmart310 digigr8/README.905C \ digigr8/README.9050 digigr8/README.9051 digigr8/README.9052 \ digigr8/README.913D enigma13/README.enigma13 \ gsmart300/README.gsmart300 iclick/README.iclick \ jamcam/README.jamcam jl2005a/README.jl2005a jl2005a/ChangeLog \ jl2005c/README.jl2005c jl2005c/README.jl2005bcd-compression \ konica/README.konica largan/lmini/README.largan-lmini \ lg_gsm/README.lg_gsm mars/README.mars \ minolta/dimagev/README.minolta-dimagev mustek/README.mustek \ panasonic/coolshot/README.panasonic-coolshot \ panasonic/l859/README.panasonic-l859 \ panasonic/README.panasonic pccam300/README.pccam300 \ pccam600/README.pccam600 pentax/README.pentax ptp2/README.ptp2 \ smal/README.smal sonix/README.sonix sonydscf1/README.sonydscf1 \ soundvision/README.soundvision spca50x/README.spca50x \ sq905/README.913C sq905/README.sq905 \ st2205/README.st2205-compression st2205/README.st2205 \ toshiba/pdrm11/README.toshiba-pdrm11 tp6801/README.tp6801 localization_DATA = localizationdir = noinst_DATA = template/README.template noinst_LTLIBRARIES = template.la # Seems to be obsolete EXTRA_LTLIBRARIES = adc65.la agfa_cl20.la aox.la ax203.la barbie.la \ canon.la casio_qv.la clicksmart310.la digigr8.la digita.la \ dimera3500.la directory.la enigma13.la fuji.la gsmart300.la \ hp215.la iclick.la jamcam.la jd11.la jl2005a.la jl2005c.la \ kodak_dc120.la kodak_dc210.la kodak_dc240.la kodak_dc3200.la \ kodak_ez200.la konica.la konica_qm150.la largan.la lg_gsm.la \ mars.la dimagev.la mustek.la panasonic_coolshot.la \ panasonic_l859.la panasonic_dc1000.la panasonic_dc1580.la \ pccam300.la pccam600.la pentax.la polaroid_pdc320.la \ polaroid_pdc640.la polaroid_pdc700.la ptp2.la ricoh.la \ ricoh_g3.la samsung.la sierra.la sipix_blink.la \ sipix_blink2.la sipix_web2.la smal.la sonix.la sony_dscf1.la \ sony_dscf55.la soundvision.la spca50x.la sq905.la st2205.la \ stv0674.la stv0680.la sx330z.la topfield.la toshiba_pdrm11.la \ tp6801.la ######################################################################## # All camlibs are defined as EXTRA_LTLIBRARIES. This requires that # all camlibs have -rpath set explicitly in foobar_la_LDFLAGS. # You're probably best off by using the camlib_* variables defined # below. camlib_LTLIBRARIES = $(BUILD_THESE_CAMLIBS) ######################################################################## # Define the compile/link/etc. flags common to all camlibs in one place, # i.e. here. camlib_dependencies = $(top_srcdir)/camlibs/camlib.sym camlib_ldflags = -module -no-undefined -avoid-version -export-dynamic \ -export-symbols '$(top_srcdir)/camlibs/camlib.sym' \ -rpath '$(camlibdir)' camlib_libadd = $(top_builddir)/libgphoto2/libgphoto2.la $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la adc65_la_SOURCES = adc65/adc65.c adc65_la_LDFLAGS = $(camlib_ldflags) adc65_la_DEPENDENCIES = $(camlib_dependencies) adc65_la_LIBADD = $(camlib_libadd) agfa_cl20_la_SOURCES = agfa-cl20/agfa_cl20.c agfa_cl20_la_LDFLAGS = $(camlib_ldflags) agfa_cl20_la_DEPENDENCIES = $(camlib_dependencies) agfa_cl20_la_LIBADD = $(camlib_libadd) aox_la_SOURCES = aox/library.c aox/aox.c aox/aox.h aox_la_LDFLAGS = $(camlib_ldflags) aox_la_DEPENDENCIES = $(camlib_dependencies) aox_la_LIBADD = $(camlib_libadd) ax203_la_SOURCES = ax203/library.c ax203/ax203.c ax203/ax203.h ax203/ax203_decode_yuv.c ax203/ax203_decode_yuv_delta.c ax203/ax203_compress_jpeg.c ax203/jpeg_memsrcdest.h ax203/jpeg_memsrcdest.c ax203/tinyjpeg.c ax203/tinyjpeg.h ax203/tinyjpeg-internal.h ax203/jidctflt.c ax203_la_LDFLAGS = $(camlib_ldflags) ax203_la_DEPENDENCIES = $(camlib_dependencies) ax203_la_LIBADD = $(camlib_libadd) @LIBGD_LIBS@ @LIBJPEG@ ax203_la_CFLAGS = @LIBGD_CFLAGS@ barbie_la_SOURCES = barbie/barbie.c barbie_la_LDFLAGS = $(camlib_ldflags) barbie_la_DEPENDENCIES = $(camlib_dependencies) barbie_la_LIBADD = $(camlib_libadd) # "ideal" version: # + only export the 3 symbols # + -no-undefined, (i.e. Win32 support) # - needs lengthy definition in every camlib's Makefile.am # + nice short name # + makes renaming the exported symbols to canon_LTX_ realistic # without ## macros # + makes it possible to have the same name the module filename and # the camlib name returned by camera_id() canon_la_SOURCES = \ canon/canon.c canon/canon.h \ canon/library.c canon/library.h \ canon/serial.c canon/serial.h \ canon/usb.c canon/usb.h \ canon/crc.c canon/crc.h \ canon/util.c canon/util.h canon_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) $(LIBEXIF_CFLAGS) canon_la_LDFLAGS = $(camlib_ldflags) canon_la_DEPENDENCIES = $(camlib_dependencies) canon_la_LIBADD = $(camlib_libadd) $(LIBEXIF_LIBS) casio_qv_la_SOURCES = \ casio/casio-qv.c \ casio/casio-qv-commands.c casio/casio-qv-commands.h \ casio/camtojpeg.c casio/camtojpeg.h \ casio/cam2jpgtab.h casio/jpegtab_f.h \ casio/ycctoppm.c casio/ycctoppm.h casio_qv_la_LDFLAGS = $(camlib_ldflags) casio_qv_la_DEPENDENCIES = $(camlib_dependencies) casio_qv_la_LIBADD = $(camlib_libadd) clicksmart310_la_SOURCES = \ clicksmart310/library.c \ clicksmart310/clicksmart.c clicksmart310/clicksmart.h \ clicksmart310/spca50x-jpeg-header.h clicksmart310_la_LDFLAGS = $(camlib_ldflags) clicksmart310_la_LIBADD = $(camlib_libadd) digigr8_la_SOURCES = \ digigr8/library.c \ digigr8/digigr8.c digigr8/digigr8.h \ digigr8/digi_postprocess.c digigr8_la_LDFLAGS = $(camlib_ldflags) digigr8_la_DEPENDENCIES = $(camlib_dependencies) digigr8_la_LIBADD = $(camlib_libadd) digita_la_SOURCES = \ digita/digita.c \ digita/serial.c \ digita/usb.c \ digita/commands.c \ digita/digita.h digita_la_LDFLAGS = $(camlib_ldflags) digita_la_DEPENDENCIES = $(camlib_dependencies) digita_la_LIBADD = $(camlib_libadd) dimera3500_la_SOURCES = \ dimera/dimera3500.c \ dimera/mesalib.c dimera/mesalib.h\ dimera/dimeratab.h dimera3500_la_LDFLAGS = $(camlib_ldflags) dimera3500_la_DEPENDENCIES = $(camlib_dependencies) dimera3500_la_LIBADD = $(camlib_libadd) directory_la_SOURCES = directory/directory.c directory_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) $(LIBEXIF_CFLAGS) directory_la_LDFLAGS = $(camlib_ldflags) directory_la_DEPENDENCIES = $(camlib_dependencies) directory_la_LIBADD = $(camlib_libadd) $(LIBEXIF_LIBS) enigma13_la_SOURCES = enigma13/enigma13.c enigma13_la_LDFLAGS = $(camlib_ldflags) enigma13_la_DEPENDENCIES = $(camlib_dependencies) enigma13_la_LIBADD = $(camlib_libadd) fuji_la_SOURCES = fuji/library.c fuji/fuji.c fuji/fuji.h fuji_la_LDFLAGS = $(camlib_ldflags) fuji_la_DEPENDENCIES = $(camlib_dependencies) fuji_la_LIBADD = $(camlib_libadd) gsmart300_la_SOURCES = \ gsmart300/gsmart300.c gsmart300/gsmart300.h \ gsmart300/library.c \ gsmart300/gsmart300-jpeg-header.h gsmart300_la_LDFLAGS = $(camlib_ldflags) gsmart300_la_DEPENDENCIES = $(camlib_dependencies) gsmart300_la_LIBADD = $(camlib_libadd) hp215_la_SOURCES = hp215/hp215.c hp215/hp215.h hp215/crctab.h hp215_la_LDFLAGS = $(camlib_ldflags) hp215_la_DEPENDENCIES = $(camlib_dependencies) hp215_la_LIBADD = $(camlib_libadd) iclick_la_SOURCES = iclick/library.c iclick/iclick.c iclick/iclick.h iclick_la_LDFLAGS = $(camlib_ldflags) iclick_la_DEPENDENCIES = $(camlib_dependencies) iclick_la_LIBADD = $(camlib_libadd) jamcam_la_SOURCES = jamcam/jamcam.c jamcam/library.c jamcam/library.h jamcam_la_LDFLAGS = $(camlib_ldflags) jamcam_la_DEPENDENCIES = $(camlib_dependencies) jamcam_la_LIBADD = $(camlib_libadd) jd11_la_SOURCES = \ jd11/jd11.c \ jd11/serial.h jd11/serial.c \ jd11/decomp.h jd11/decomp.c jd11_la_LDFLAGS = $(camlib_ldflags) jd11_la_DEPENDENCIES = $(camlib_dependencies) jd11_la_LIBADD = $(camlib_libadd) jl2005a_la_SOURCES = jl2005a/library.c\ jl2005a/jl2005a.c\ jl2005a/jl2005a.h jl2005a_la_LDFLAGS = $(camlib_ldflags) jl2005a_la_DEPENDENCIES = $(camlib_dependencies) jl2005a_la_LIBADD = $(camlib_libadd) jl2005c_la_SOURCES = jl2005c/library.c\ jl2005c/jl2005c.c\ jl2005c/jpeg_memsrcdest.c \ jl2005c/jpeg_memsrcdest.h \ jl2005c/jl2005bcd_decompress.c\ jl2005c/jl2005bcd_decompress.h\ jl2005c/jl2005c.h\ jl2005c/img_enhance.c\ jl2005c/img_enhance.h jl2005c_la_LDFLAGS = $(camlib_ldflags) jl2005c_la_DEPENDENCIES = $(camlib_dependencies) jl2005c_la_LIBADD = $(camlib_libadd) @LIBJPEG@ kodak_dc120_la_SOURCES = \ kodak/dc120/dc120.c kodak/dc120/dc120.h \ kodak/dc120/library.c kodak/dc120/library.h kodak_dc120_la_LDFLAGS = $(camlib_ldflags) kodak_dc120_la_DEPENDENCIES = $(camlib_dependencies) kodak_dc120_la_LIBADD = $(camlib_libadd) kodak_dc210_la_SOURCES = \ kodak/dc210/dc210.c kodak/dc210/dc210.h \ kodak/dc210/library.c kodak/dc210/library.h kodak_dc210_la_LDFLAGS = $(camlib_ldflags) kodak_dc210_la_DEPENDENCIES = $(camlib_dependencies) kodak_dc210_la_LIBADD = $(camlib_libadd) kodak_dc240_la_SOURCES = \ kodak/dc240/dc240.c kodak/dc240/dc240.h \ kodak/dc240/library.c kodak/dc240/library.h kodak_dc240_la_LDFLAGS = $(camlib_ldflags) kodak_dc240_la_DEPENDENCIES = $(camlib_dependencies) kodak_dc240_la_LIBADD = $(camlib_libadd) kodak_dc3200_la_SOURCES = \ kodak/dc3200/dc3200.c kodak/dc3200/dc3200.h \ kodak/dc3200/library.c kodak/dc3200/library.h kodak_dc3200_la_LDFLAGS = $(camlib_ldflags) kodak_dc3200_la_DEPENDENCIES = $(camlib_dependencies) kodak_dc3200_la_LIBADD = $(camlib_libadd) kodak_ez200_la_SOURCES = kodak/ez200/ez200.c kodak_ez200_la_LDFLAGS = $(camlib_ldflags) kodak_ez200_la_DEPENDENCIES = $(camlib_dependencies) kodak_ez200_la_LIBADD = $(camlib_libadd) konica_defs = \ -DLOCALIZATION=\"$(datadir)/$(PACKAGE)/$(VERSION)/konica\" konica_la_SOURCES = \ konica/lowlevel.c konica/lowlevel.h \ konica/konica.c konica/konica.h \ konica/library.c konica_la_CPPFLAGS = $(AM_CPPFLAGS) $(konica_defs) $(CPPFLAGS) konica_la_LDFLAGS = $(camlib_ldflags) konica_la_DEPENDENCIES = $(camlib_dependencies) konica_la_LIBADD = $(camlib_libadd) konica_qm150_la_SOURCES = konica/qm150.c konica_qm150_la_CPPFLAGS = $(AM_CPPFLAGS) $(konica_defs) $(CPPFLAGS) konica_qm150_la_LDFLAGS = $(camlib_ldflags) konica_qm150_la_DEPENDENCIES = $(camlib_dependencies) konica_qm150_la_LIBADD = $(camlib_libadd) largan_la_SOURCES = \ largan/lmini/largan.c \ largan/lmini/lmini.c largan/lmini/lmini.h \ largan/lmini/lmini_ccd.c largan/lmini/lmini_ccd.h largan_la_LDFLAGS = $(camlib_ldflags) largan_la_DEPENDENCIES = $(camlib_dependencies) largan_la_LIBADD = $(camlib_libadd) lg_gsm_la_SOURCES = lg_gsm/library.c lg_gsm/lg_gsm.c lg_gsm/lg_gsm.h lg_gsm_la_LDFLAGS = $(camlib_ldflags) lg_gsm_la_DEPENDENCIES = $(camlib_dependencies) lg_gsm_la_LIBADD = $(camlib_libadd) mars_la_SOURCES = mars/library.c mars/mars.c mars/mars.h mars_la_LDFLAGS = $(camlib_ldflags) mars_la_DEPENDENCIES = $(camlib_dependencies) mars_la_LIBADD = $(camlib_libadd) dimagev_la_SOURCES = \ minolta/dimagev/capture.c \ minolta/dimagev/data.c \ minolta/dimagev/delete.c \ minolta/dimagev/dimagev.c \ minolta/dimagev/dimagev.h \ minolta/dimagev/download.c \ minolta/dimagev/info.c \ minolta/dimagev/packet.c \ minolta/dimagev/status.c \ minolta/dimagev/upload.c \ minolta/dimagev/util.c dimagev_la_LDFLAGS = $(camlib_ldflags) dimagev_la_DEPENDENCIES = $(camlib_dependencies) dimagev_la_LIBADD = $(camlib_libadd) mustek_la_SOURCES = \ mustek/mdc800.c mustek/core.c mustek/image.c \ mustek/io.c mustek/rs232.c mustek/usb.c mustek/core.h mustek/image.h \ mustek/io.h mustek/mdc800_spec.h mustek/print.h mustek/rs232.h mustek/usb.h mustek_la_LDFLAGS = $(camlib_ldflags) mustek_la_DEPENDENCIES = $(camlib_dependencies) mustek_la_LIBADD = $(camlib_libadd) panasonic_coolshot_la_SOURCES = \ panasonic/coolshot/coolshot.c \ panasonic/coolshot/library.c panasonic/coolshot/library.h panasonic_coolshot_la_LDFLAGS = $(camlib_ldflags) panasonic_coolshot_la_DEPENDENCIES = $(camlib_dependencies) panasonic_coolshot_la_LIBADD = $(camlib_libadd) panasonic_l859_la_SOURCES = panasonic/l859/l859.c panasonic/l859/l859.h panasonic_l859_la_LDFLAGS = $(camlib_ldflags) panasonic_l859_la_DEPENDENCIES = $(camlib_dependencies) panasonic_l859_la_LIBADD = $(camlib_libadd) panasonic_dc1000_la_SOURCES = \ panasonic/dc1000.c panasonic/dc1000.h \ panasonic/dc.c panasonic/dc.h panasonic_dc1000_la_LDFLAGS = $(camlib_ldflags) panasonic_dc1000_la_DEPENDENCIES = $(camlib_dependencies) panasonic_dc1000_la_LIBADD = $(camlib_libadd) panasonic_dc1580_la_SOURCES = \ panasonic/dc1580.c panasonic/dc1580.h \ panasonic/dc.c panasonic/dc.h \ panasonic/dc1000.h panasonic_dc1580_la_LDFLAGS = $(camlib_ldflags) panasonic_dc1580_la_DEPENDENCIES = $(camlib_dependencies) panasonic_dc1580_la_LIBADD = $(camlib_libadd) pccam300_la_SOURCES = pccam300/pccam300.c pccam300/pccam300.h pccam300/library.c pccam300_la_LDFLAGS = $(camlib_ldflags) pccam300_la_DEPENDENCIES = $(camlib_dependencies) pccam300_la_LIBADD = $(camlib_libadd) pccam600_la_SOURCES = pccam600/pccam600.c pccam600/pccam600.h pccam600/library.c pccam600_la_LDFLAGS = $(camlib_ldflags) pccam600_la_DEPENDENCIES = $(camlib_dependencies) pccam600_la_LIBADD = $(camlib_libadd) pentax_la_SOURCES = pentax/pslr.c pentax/pslr.h pentax/library.c pentax_la_CFLAGS = $(AM_CFLAGS) $(NO_UNUSED_CFLAGS) $(CFLAGS) -DLIBGPHOTO2 pentax_la_LDFLAGS = $(camlib_ldflags) pentax_la_DEPENDENCIES = $(camlib_dependencies) pentax_la_LIBADD = $(camlib_libadd) polaroid_pdc320_la_SOURCES = polaroid/pdc320.c polaroid/pdc320.h polaroid_pdc320_la_LDFLAGS = $(camlib_ldflags) polaroid_pdc320_la_DEPENDENCIES = $(camlib_dependencies) polaroid_pdc320_la_LIBADD = $(camlib_libadd) polaroid_pdc640_la_SOURCES = polaroid/pdc640.c \ polaroid/jd350e.h polaroid/jd350e.c \ polaroid/jd350e_red.h polaroid/jd350e_blue.h \ polaroid/dlink350f.c polaroid/dlink350f.h polaroid_pdc640_la_LDFLAGS = $(camlib_ldflags) polaroid_pdc640_la_DEPENDENCIES = $(camlib_dependencies) polaroid_pdc640_la_LIBADD = $(camlib_libadd) polaroid_pdc700_la_SOURCES = polaroid/pdc700.c polaroid_pdc700_la_LDFLAGS = $(camlib_ldflags) polaroid_pdc700_la_DEPENDENCIES = $(camlib_dependencies) polaroid_pdc700_la_LIBADD = $(camlib_libadd) ptp2_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) $(LIBXML2_CFLAGS) ptp2_la_CFLAGS = $(AM_CFLAGS) $(CFLAGS) $(LIBXML2_CFLAGS) -Wshadow ptp2_la_SOURCES = \ ptp2/ptp.c ptp2/ptp.h ptp2/chdk_ptp.h ptp2/chdk_live_view.h \ ptp2/library.c ptp2/usb.c ptp2/ptp-bugs.h \ ptp2/ptp-private.h ptp2/ptpip.c ptp2/config.c \ ptp2/music-players.h ptp2/device-flags.h \ ptp2/olympus-wrap.c ptp2/olympus-wrap.h \ ptp2/chdk.c ptp2_la_LDFLAGS = $(camlib_ldflags) ptp2_la_DEPENDENCIES = $(camlib_dependencies) ptp2_la_LIBADD = $(camlib_libadd) $(LTLIBICONV) $(LIBXML2_LIBS) ricoh_la_SOURCES = ricoh/library.c ricoh/ricoh.c ricoh/ricoh.h ricoh/crctab.h ricoh_la_LDFLAGS = $(camlib_ldflags) ricoh_la_DEPENDENCIES = $(camlib_dependencies) ricoh_la_LIBADD = $(camlib_libadd) ricoh_g3_la_SOURCES = ricoh/g3.c ricoh_g3_la_LDFLAGS = $(camlib_ldflags) ricoh_g3_la_DEPENDENCIES = $(camlib_dependencies) ricoh_g3_la_LIBADD = $(camlib_libadd) samsung_la_SOURCES = samsung/samsung.c samsung_la_LDFLAGS = $(camlib_ldflags) samsung_la_DEPENDENCIES = $(camlib_dependencies) samsung_la_LIBADD = $(camlib_libadd) sierra_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) $(LIBEXIF_CFLAGS) sierra_la_SOURCES = \ sierra/sierra.c sierra/sierra.h \ sierra/library.c sierra/library.h \ sierra/sierra-usbwrap.c sierra/sierra-usbwrap.h \ sierra/sierra-desc.h sierra/sierra-desc.c \ sierra/nikon-desc.c sierra/olympus-desc.c sierra/epson-desc.c sierra_la_LDFLAGS = $(camlib_ldflags) sierra_la_DEPENDENCIES = $(camlib_dependencies) sierra_la_LIBADD = $(camlib_libadd) $(LIBEXIF_LIBS) sipix_blink_la_SOURCES = sipix/blink.c sipix_blink_la_LDFLAGS = $(camlib_ldflags) sipix_blink_la_DEPENDENCIES = $(camlib_dependencies) sipix_blink_la_LIBADD = $(camlib_libadd) sipix_blink2_la_SOURCES = sipix/blink2.c sipix_blink2_la_LDFLAGS = $(camlib_ldflags) sipix_blink2_la_DEPENDENCIES = $(camlib_dependencies) sipix_blink2_la_LIBADD = $(camlib_libadd) @LIBJPEG@ sipix_web2_la_SOURCES = sipix/web2.c sipix_web2_la_LDFLAGS = $(camlib_ldflags) sipix_web2_la_DEPENDENCIES = $(camlib_dependencies) sipix_web2_la_LIBADD = $(camlib_libadd) smal_la_SOURCES = \ smal/smal.c smal/ultrapocket.c \ smal/smal.h smal/ultrapocket.h smal_la_LDFLAGS = $(camlib_ldflags) smal_la_DEPENDENCIES = $(camlib_dependencies) smal_la_LIBADD = $(camlib_libadd) sonix_la_SOURCES = \ sonix/library.c \ sonix/sonix.c sonix/sonix.h \ sonix/sakar-avi-header.h sonix_la_LDFLAGS = $(camlib_ldflags) sonix_la_DEPENDENCIES = $(camlib_dependencies) sonix_la_LIBADD = $(camlib_libadd) sony_dscf1_la_SOURCES = \ sonydscf1/command.c sonydscf1/command.h \ sonydscf1/sonydscf1.c sonydscf1/pmp.h sony_dscf1_la_LDFLAGS = $(camlib_ldflags) sony_dscf1_la_DEPENDENCIES = $(camlib_dependencies) sony_dscf1_la_LIBADD = $(camlib_libadd) sony_dscf55_la_SOURCES = \ sonydscf55/sony.c sonydscf55/sony.h \ sonydscf55/camera.c sonydscf55/nls.h sony_dscf55_la_LDFLAGS = $(camlib_ldflags) sony_dscf55_la_DEPENDENCIES = $(camlib_dependencies) sony_dscf55_la_LIBADD = $(camlib_libadd) soundvision_la_SOURCES = \ soundvision/soundvision.c soundvision/agfa_cl18.c \ soundvision/tiger_fastflicks.c \ soundvision/commands.c soundvision/commands.h \ soundvision/soundvision.h soundvision_la_LDFLAGS = $(camlib_ldflags) soundvision_la_DEPENDENCIES = $(camlib_dependencies) soundvision_la_LIBADD = $(camlib_libadd) spca50x_la_SOURCES = \ spca50x/spca50x.c spca50x/spca50x.h \ spca50x/spca50x-flash.c spca50x/spca50x-flash.h \ spca50x/spca50x-sdram.c spca50x/spca50x-sdram.h \ spca50x/library.c \ spca50x/spca50x-jpeg-header.h spca50x/spca50x-registers.h \ spca50x/spca50x-avi-header.h spca50x_la_LDFLAGS = $(camlib_ldflags) spca50x_la_DEPENDENCIES = $(camlib_dependencies) spca50x_la_LIBADD = $(camlib_libadd) sq905_la_SOURCES = sq905/library.c sq905/sq905.c sq905/sq905.h sq905/postprocess.c sq905_la_LDFLAGS = $(camlib_ldflags) sq905_la_DEPENDENCIES = $(camlib_dependencies) sq905_la_LIBADD = $(camlib_libadd) st2205_la_SOURCES = st2205/library.c st2205/st2205.c st2205/st2205.h st2205/st2205_decode.c st2205/st2205_tables.c st2205_la_LDFLAGS = $(camlib_ldflags) st2205_la_DEPENDENCIES = $(camlib_dependencies) st2205_la_LIBADD = $(camlib_libadd) @LIBGD_LIBS@ $(LTLIBICONV) st2205_la_CFLAGS = @LIBGD_CFLAGS@ stv0674_la_SOURCES = \ stv0674/stv0674.c stv0674/stv0674.h \ stv0674/library.c stv0674/library.h stv0674_la_LDFLAGS = $(camlib_ldflags) stv0674_la_DEPENDENCIES = $(camlib_dependencies) stv0674_la_LIBADD = $(camlib_libadd) stv0680_la_SOURCES = \ stv0680/stv0680.c stv0680/stv0680.h \ stv0680/library.c stv0680/library.h \ stv0680/bayer.c stv0680/bayer.h \ stv0680/sharpen.c stv0680/sharpen.h \ stv0680/saturate.c stv0680/saturate.h \ stv0680/demosaic_sharpen.h stv0680/demosaic_sharpen.c stv0680_la_LDFLAGS = $(camlib_ldflags) stv0680_la_DEPENDENCIES = $(camlib_dependencies) stv0680_la_LIBADD = $(camlib_libadd) sx330z_la_SOURCES = sx330z/library.c sx330z/sx330z.c sx330z/sx330z.h sx330z_la_LDFLAGS = $(camlib_ldflags) sx330z_la_DEPENDENCIES = $(camlib_dependencies) sx330z_la_LIBADD = $(camlib_libadd) template_la_SOURCES = template/template.c template_la_CFLAGS = $(AM_CFLAGS) $(NO_UNUSED_CFLAGS) $(CFLAGS) template_la_LDFLAGS = $(camlib_ldflags) template_la_DEPENDENCIES = $(camlib_dependencies) template_la_LIBADD = $(camlib_libadd) topfield_la_SOURCES = topfield/crc16.c topfield/crc16.h topfield/tf_bytes.c topfield/tf_bytes.h topfield/mjd.c topfield/mjd.h \ topfield/puppy.c topfield/usb_io.h topfield/usb_io.c topfield_la_LDFLAGS = $(camlib_ldflags) topfield_la_DEPENDENCIES = $(camlib_dependencies) topfield_la_LIBADD = $(camlib_libadd) $(LTLIBICONV) toshiba_pdrm11_la_SOURCES = \ toshiba/pdrm11/library.c \ toshiba/pdrm11/pdrm11.c toshiba/pdrm11/pdrm11.h toshiba_pdrm11_la_LDFLAGS = $(camlib_ldflags) toshiba_pdrm11_la_DEPENDENCIES = $(camlib_dependencies) toshiba_pdrm11_la_LIBADD = $(camlib_libadd) tp6801_la_SOURCES = tp6801/library.c tp6801/tp6801.c tp6801/tp6801.h tp6801_la_LDFLAGS = $(camlib_ldflags) tp6801_la_DEPENDENCIES = $(camlib_dependencies) tp6801_la_LIBADD = $(camlib_libadd) @LIBGD_LIBS@ tp6801_la_CFLAGS = @LIBGD_CFLAGS@ all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/adc65/Makefile-files $(srcdir)/agfa-cl20/Makefile-files $(srcdir)/aox/Makefile-files $(srcdir)/ax203/Makefile-files $(srcdir)/barbie/Makefile-files $(srcdir)/canon/Makefile-files $(srcdir)/casio/Makefile-files $(srcdir)/clicksmart310/Makefile-files $(srcdir)/digigr8/Makefile-files $(srcdir)/digita/Makefile-files $(srcdir)/dimera/Makefile-files $(srcdir)/directory/Makefile-files $(srcdir)/enigma13/Makefile-files $(srcdir)/fuji/Makefile-files $(srcdir)/gsmart300/Makefile-files $(srcdir)/hp215/Makefile-files $(srcdir)/iclick/Makefile-files $(srcdir)/jamcam/Makefile-files $(srcdir)/jd11/Makefile-files $(srcdir)/jl2005a/Makefile-files $(srcdir)/jl2005c/Makefile-files $(srcdir)/kodak/dc120/Makefile-files $(srcdir)/kodak/dc210/Makefile-files $(srcdir)/kodak/dc240/Makefile-files $(srcdir)/kodak/dc3200/Makefile-files $(srcdir)/kodak/ez200/Makefile-files $(srcdir)/kodak/Makefile-files $(srcdir)/konica/Makefile-files $(srcdir)/largan/lmini/Makefile-files $(srcdir)/lg_gsm/Makefile-files $(srcdir)/mars/Makefile-files $(srcdir)/minolta/dimagev/Makefile-files $(srcdir)/minolta/Makefile-files $(srcdir)/mustek/Makefile-files $(srcdir)/panasonic/coolshot/Makefile-files $(srcdir)/panasonic/l859/Makefile-files $(srcdir)/panasonic/Makefile-files $(srcdir)/pccam300/Makefile-files $(srcdir)/pccam600/Makefile-files $(srcdir)/pentax/Makefile-files $(srcdir)/polaroid/Makefile-files $(srcdir)/ptp2/Makefile-files $(srcdir)/ricoh/Makefile-files $(srcdir)/samsung/Makefile-files $(srcdir)/sierra/Makefile-files $(srcdir)/sipix/Makefile-files $(srcdir)/smal/Makefile-files $(srcdir)/sonix/Makefile-files $(srcdir)/sonydscf1/Makefile-files $(srcdir)/sonydscf55/Makefile-files $(srcdir)/soundvision/Makefile-files $(srcdir)/spca50x/Makefile-files $(srcdir)/sq905/Makefile-files $(srcdir)/st2205/Makefile-files $(srcdir)/stv0674/Makefile-files $(srcdir)/stv0680/Makefile-files $(srcdir)/sx330z/Makefile-files $(srcdir)/template/Makefile-files $(srcdir)/topfield/Makefile-files $(srcdir)/toshiba/pdrm11/Makefile-files $(srcdir)/tp6801/Makefile-files $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign camlibs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign camlibs/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(srcdir)/adc65/Makefile-files $(srcdir)/agfa-cl20/Makefile-files $(srcdir)/aox/Makefile-files $(srcdir)/ax203/Makefile-files $(srcdir)/barbie/Makefile-files $(srcdir)/canon/Makefile-files $(srcdir)/casio/Makefile-files $(srcdir)/clicksmart310/Makefile-files $(srcdir)/digigr8/Makefile-files $(srcdir)/digita/Makefile-files $(srcdir)/dimera/Makefile-files $(srcdir)/directory/Makefile-files $(srcdir)/enigma13/Makefile-files $(srcdir)/fuji/Makefile-files $(srcdir)/gsmart300/Makefile-files $(srcdir)/hp215/Makefile-files $(srcdir)/iclick/Makefile-files $(srcdir)/jamcam/Makefile-files $(srcdir)/jd11/Makefile-files $(srcdir)/jl2005a/Makefile-files $(srcdir)/jl2005c/Makefile-files $(srcdir)/kodak/dc120/Makefile-files $(srcdir)/kodak/dc210/Makefile-files $(srcdir)/kodak/dc240/Makefile-files $(srcdir)/kodak/dc3200/Makefile-files $(srcdir)/kodak/ez200/Makefile-files $(srcdir)/kodak/Makefile-files $(srcdir)/konica/Makefile-files $(srcdir)/largan/lmini/Makefile-files $(srcdir)/lg_gsm/Makefile-files $(srcdir)/mars/Makefile-files $(srcdir)/minolta/dimagev/Makefile-files $(srcdir)/minolta/Makefile-files $(srcdir)/mustek/Makefile-files $(srcdir)/panasonic/coolshot/Makefile-files $(srcdir)/panasonic/l859/Makefile-files $(srcdir)/panasonic/Makefile-files $(srcdir)/pccam300/Makefile-files $(srcdir)/pccam600/Makefile-files $(srcdir)/pentax/Makefile-files $(srcdir)/polaroid/Makefile-files $(srcdir)/ptp2/Makefile-files $(srcdir)/ricoh/Makefile-files $(srcdir)/samsung/Makefile-files $(srcdir)/sierra/Makefile-files $(srcdir)/sipix/Makefile-files $(srcdir)/smal/Makefile-files $(srcdir)/sonix/Makefile-files $(srcdir)/sonydscf1/Makefile-files $(srcdir)/sonydscf55/Makefile-files $(srcdir)/soundvision/Makefile-files $(srcdir)/spca50x/Makefile-files $(srcdir)/sq905/Makefile-files $(srcdir)/st2205/Makefile-files $(srcdir)/stv0674/Makefile-files $(srcdir)/stv0680/Makefile-files $(srcdir)/sx330z/Makefile-files $(srcdir)/template/Makefile-files $(srcdir)/topfield/Makefile-files $(srcdir)/toshiba/pdrm11/Makefile-files $(srcdir)/tp6801/Makefile-files $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-camlibLTLIBRARIES: $(camlib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(camlib_LTLIBRARIES)'; test -n "$(camlibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(camlibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(camlibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(camlibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(camlibdir)"; \ } uninstall-camlibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(camlib_LTLIBRARIES)'; test -n "$(camlibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(camlibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(camlibdir)/$$f"; \ done clean-camlibLTLIBRARIES: -test -z "$(camlib_LTLIBRARIES)" || rm -f $(camlib_LTLIBRARIES) @list='$(camlib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } adc65/$(am__dirstamp): @$(MKDIR_P) adc65 @: > adc65/$(am__dirstamp) adc65/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) adc65/$(DEPDIR) @: > adc65/$(DEPDIR)/$(am__dirstamp) adc65/adc65.lo: adc65/$(am__dirstamp) adc65/$(DEPDIR)/$(am__dirstamp) adc65.la: $(adc65_la_OBJECTS) $(adc65_la_DEPENDENCIES) $(EXTRA_adc65_la_DEPENDENCIES) $(AM_V_CCLD)$(adc65_la_LINK) $(adc65_la_OBJECTS) $(adc65_la_LIBADD) $(LIBS) agfa-cl20/$(am__dirstamp): @$(MKDIR_P) agfa-cl20 @: > agfa-cl20/$(am__dirstamp) agfa-cl20/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) agfa-cl20/$(DEPDIR) @: > agfa-cl20/$(DEPDIR)/$(am__dirstamp) agfa-cl20/agfa_cl20.lo: agfa-cl20/$(am__dirstamp) \ agfa-cl20/$(DEPDIR)/$(am__dirstamp) agfa_cl20.la: $(agfa_cl20_la_OBJECTS) $(agfa_cl20_la_DEPENDENCIES) $(EXTRA_agfa_cl20_la_DEPENDENCIES) $(AM_V_CCLD)$(agfa_cl20_la_LINK) $(agfa_cl20_la_OBJECTS) $(agfa_cl20_la_LIBADD) $(LIBS) aox/$(am__dirstamp): @$(MKDIR_P) aox @: > aox/$(am__dirstamp) aox/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) aox/$(DEPDIR) @: > aox/$(DEPDIR)/$(am__dirstamp) aox/library.lo: aox/$(am__dirstamp) aox/$(DEPDIR)/$(am__dirstamp) aox/aox.lo: aox/$(am__dirstamp) aox/$(DEPDIR)/$(am__dirstamp) aox.la: $(aox_la_OBJECTS) $(aox_la_DEPENDENCIES) $(EXTRA_aox_la_DEPENDENCIES) $(AM_V_CCLD)$(aox_la_LINK) $(aox_la_OBJECTS) $(aox_la_LIBADD) $(LIBS) ax203/$(am__dirstamp): @$(MKDIR_P) ax203 @: > ax203/$(am__dirstamp) ax203/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ax203/$(DEPDIR) @: > ax203/$(DEPDIR)/$(am__dirstamp) ax203/ax203_la-library.lo: ax203/$(am__dirstamp) \ ax203/$(DEPDIR)/$(am__dirstamp) ax203/ax203_la-ax203.lo: ax203/$(am__dirstamp) \ ax203/$(DEPDIR)/$(am__dirstamp) ax203/ax203_la-ax203_decode_yuv.lo: ax203/$(am__dirstamp) \ ax203/$(DEPDIR)/$(am__dirstamp) ax203/ax203_la-ax203_decode_yuv_delta.lo: ax203/$(am__dirstamp) \ ax203/$(DEPDIR)/$(am__dirstamp) ax203/ax203_la-ax203_compress_jpeg.lo: ax203/$(am__dirstamp) \ ax203/$(DEPDIR)/$(am__dirstamp) ax203/ax203_la-jpeg_memsrcdest.lo: ax203/$(am__dirstamp) \ ax203/$(DEPDIR)/$(am__dirstamp) ax203/ax203_la-tinyjpeg.lo: ax203/$(am__dirstamp) \ ax203/$(DEPDIR)/$(am__dirstamp) ax203/ax203_la-jidctflt.lo: ax203/$(am__dirstamp) \ ax203/$(DEPDIR)/$(am__dirstamp) ax203.la: $(ax203_la_OBJECTS) $(ax203_la_DEPENDENCIES) $(EXTRA_ax203_la_DEPENDENCIES) $(AM_V_CCLD)$(ax203_la_LINK) $(ax203_la_OBJECTS) $(ax203_la_LIBADD) $(LIBS) barbie/$(am__dirstamp): @$(MKDIR_P) barbie @: > barbie/$(am__dirstamp) barbie/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) barbie/$(DEPDIR) @: > barbie/$(DEPDIR)/$(am__dirstamp) barbie/barbie.lo: barbie/$(am__dirstamp) \ barbie/$(DEPDIR)/$(am__dirstamp) barbie.la: $(barbie_la_OBJECTS) $(barbie_la_DEPENDENCIES) $(EXTRA_barbie_la_DEPENDENCIES) $(AM_V_CCLD)$(barbie_la_LINK) $(barbie_la_OBJECTS) $(barbie_la_LIBADD) $(LIBS) canon/$(am__dirstamp): @$(MKDIR_P) canon @: > canon/$(am__dirstamp) canon/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) canon/$(DEPDIR) @: > canon/$(DEPDIR)/$(am__dirstamp) canon/canon_la-canon.lo: canon/$(am__dirstamp) \ canon/$(DEPDIR)/$(am__dirstamp) canon/canon_la-library.lo: canon/$(am__dirstamp) \ canon/$(DEPDIR)/$(am__dirstamp) canon/canon_la-serial.lo: canon/$(am__dirstamp) \ canon/$(DEPDIR)/$(am__dirstamp) canon/canon_la-usb.lo: canon/$(am__dirstamp) \ canon/$(DEPDIR)/$(am__dirstamp) canon/canon_la-crc.lo: canon/$(am__dirstamp) \ canon/$(DEPDIR)/$(am__dirstamp) canon/canon_la-util.lo: canon/$(am__dirstamp) \ canon/$(DEPDIR)/$(am__dirstamp) canon.la: $(canon_la_OBJECTS) $(canon_la_DEPENDENCIES) $(EXTRA_canon_la_DEPENDENCIES) $(AM_V_CCLD)$(canon_la_LINK) $(canon_la_OBJECTS) $(canon_la_LIBADD) $(LIBS) casio/$(am__dirstamp): @$(MKDIR_P) casio @: > casio/$(am__dirstamp) casio/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) casio/$(DEPDIR) @: > casio/$(DEPDIR)/$(am__dirstamp) casio/casio-qv.lo: casio/$(am__dirstamp) \ casio/$(DEPDIR)/$(am__dirstamp) casio/casio-qv-commands.lo: casio/$(am__dirstamp) \ casio/$(DEPDIR)/$(am__dirstamp) casio/camtojpeg.lo: casio/$(am__dirstamp) \ casio/$(DEPDIR)/$(am__dirstamp) casio/ycctoppm.lo: casio/$(am__dirstamp) \ casio/$(DEPDIR)/$(am__dirstamp) casio_qv.la: $(casio_qv_la_OBJECTS) $(casio_qv_la_DEPENDENCIES) $(EXTRA_casio_qv_la_DEPENDENCIES) $(AM_V_CCLD)$(casio_qv_la_LINK) $(casio_qv_la_OBJECTS) $(casio_qv_la_LIBADD) $(LIBS) clicksmart310/$(am__dirstamp): @$(MKDIR_P) clicksmart310 @: > clicksmart310/$(am__dirstamp) clicksmart310/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) clicksmart310/$(DEPDIR) @: > clicksmart310/$(DEPDIR)/$(am__dirstamp) clicksmart310/library.lo: clicksmart310/$(am__dirstamp) \ clicksmart310/$(DEPDIR)/$(am__dirstamp) clicksmart310/clicksmart.lo: clicksmart310/$(am__dirstamp) \ clicksmart310/$(DEPDIR)/$(am__dirstamp) clicksmart310.la: $(clicksmart310_la_OBJECTS) $(clicksmart310_la_DEPENDENCIES) $(EXTRA_clicksmart310_la_DEPENDENCIES) $(AM_V_CCLD)$(clicksmart310_la_LINK) $(clicksmart310_la_OBJECTS) $(clicksmart310_la_LIBADD) $(LIBS) digigr8/$(am__dirstamp): @$(MKDIR_P) digigr8 @: > digigr8/$(am__dirstamp) digigr8/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) digigr8/$(DEPDIR) @: > digigr8/$(DEPDIR)/$(am__dirstamp) digigr8/library.lo: digigr8/$(am__dirstamp) \ digigr8/$(DEPDIR)/$(am__dirstamp) digigr8/digigr8.lo: digigr8/$(am__dirstamp) \ digigr8/$(DEPDIR)/$(am__dirstamp) digigr8/digi_postprocess.lo: digigr8/$(am__dirstamp) \ digigr8/$(DEPDIR)/$(am__dirstamp) digigr8.la: $(digigr8_la_OBJECTS) $(digigr8_la_DEPENDENCIES) $(EXTRA_digigr8_la_DEPENDENCIES) $(AM_V_CCLD)$(digigr8_la_LINK) $(digigr8_la_OBJECTS) $(digigr8_la_LIBADD) $(LIBS) digita/$(am__dirstamp): @$(MKDIR_P) digita @: > digita/$(am__dirstamp) digita/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) digita/$(DEPDIR) @: > digita/$(DEPDIR)/$(am__dirstamp) digita/digita.lo: digita/$(am__dirstamp) \ digita/$(DEPDIR)/$(am__dirstamp) digita/serial.lo: digita/$(am__dirstamp) \ digita/$(DEPDIR)/$(am__dirstamp) digita/usb.lo: digita/$(am__dirstamp) digita/$(DEPDIR)/$(am__dirstamp) digita/commands.lo: digita/$(am__dirstamp) \ digita/$(DEPDIR)/$(am__dirstamp) digita.la: $(digita_la_OBJECTS) $(digita_la_DEPENDENCIES) $(EXTRA_digita_la_DEPENDENCIES) $(AM_V_CCLD)$(digita_la_LINK) $(digita_la_OBJECTS) $(digita_la_LIBADD) $(LIBS) minolta/dimagev/$(am__dirstamp): @$(MKDIR_P) minolta/dimagev @: > minolta/dimagev/$(am__dirstamp) minolta/dimagev/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) minolta/dimagev/$(DEPDIR) @: > minolta/dimagev/$(DEPDIR)/$(am__dirstamp) minolta/dimagev/capture.lo: minolta/dimagev/$(am__dirstamp) \ minolta/dimagev/$(DEPDIR)/$(am__dirstamp) minolta/dimagev/data.lo: minolta/dimagev/$(am__dirstamp) \ minolta/dimagev/$(DEPDIR)/$(am__dirstamp) minolta/dimagev/delete.lo: minolta/dimagev/$(am__dirstamp) \ minolta/dimagev/$(DEPDIR)/$(am__dirstamp) minolta/dimagev/dimagev.lo: minolta/dimagev/$(am__dirstamp) \ minolta/dimagev/$(DEPDIR)/$(am__dirstamp) minolta/dimagev/download.lo: minolta/dimagev/$(am__dirstamp) \ minolta/dimagev/$(DEPDIR)/$(am__dirstamp) minolta/dimagev/info.lo: minolta/dimagev/$(am__dirstamp) \ minolta/dimagev/$(DEPDIR)/$(am__dirstamp) minolta/dimagev/packet.lo: minolta/dimagev/$(am__dirstamp) \ minolta/dimagev/$(DEPDIR)/$(am__dirstamp) minolta/dimagev/status.lo: minolta/dimagev/$(am__dirstamp) \ minolta/dimagev/$(DEPDIR)/$(am__dirstamp) minolta/dimagev/upload.lo: minolta/dimagev/$(am__dirstamp) \ minolta/dimagev/$(DEPDIR)/$(am__dirstamp) minolta/dimagev/util.lo: minolta/dimagev/$(am__dirstamp) \ minolta/dimagev/$(DEPDIR)/$(am__dirstamp) dimagev.la: $(dimagev_la_OBJECTS) $(dimagev_la_DEPENDENCIES) $(EXTRA_dimagev_la_DEPENDENCIES) $(AM_V_CCLD)$(dimagev_la_LINK) $(dimagev_la_OBJECTS) $(dimagev_la_LIBADD) $(LIBS) dimera/$(am__dirstamp): @$(MKDIR_P) dimera @: > dimera/$(am__dirstamp) dimera/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) dimera/$(DEPDIR) @: > dimera/$(DEPDIR)/$(am__dirstamp) dimera/dimera3500.lo: dimera/$(am__dirstamp) \ dimera/$(DEPDIR)/$(am__dirstamp) dimera/mesalib.lo: dimera/$(am__dirstamp) \ dimera/$(DEPDIR)/$(am__dirstamp) dimera3500.la: $(dimera3500_la_OBJECTS) $(dimera3500_la_DEPENDENCIES) $(EXTRA_dimera3500_la_DEPENDENCIES) $(AM_V_CCLD)$(dimera3500_la_LINK) $(dimera3500_la_OBJECTS) $(dimera3500_la_LIBADD) $(LIBS) directory/$(am__dirstamp): @$(MKDIR_P) directory @: > directory/$(am__dirstamp) directory/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) directory/$(DEPDIR) @: > directory/$(DEPDIR)/$(am__dirstamp) directory/directory_la-directory.lo: directory/$(am__dirstamp) \ directory/$(DEPDIR)/$(am__dirstamp) directory.la: $(directory_la_OBJECTS) $(directory_la_DEPENDENCIES) $(EXTRA_directory_la_DEPENDENCIES) $(AM_V_CCLD)$(directory_la_LINK) $(directory_la_OBJECTS) $(directory_la_LIBADD) $(LIBS) enigma13/$(am__dirstamp): @$(MKDIR_P) enigma13 @: > enigma13/$(am__dirstamp) enigma13/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) enigma13/$(DEPDIR) @: > enigma13/$(DEPDIR)/$(am__dirstamp) enigma13/enigma13.lo: enigma13/$(am__dirstamp) \ enigma13/$(DEPDIR)/$(am__dirstamp) enigma13.la: $(enigma13_la_OBJECTS) $(enigma13_la_DEPENDENCIES) $(EXTRA_enigma13_la_DEPENDENCIES) $(AM_V_CCLD)$(enigma13_la_LINK) $(enigma13_la_OBJECTS) $(enigma13_la_LIBADD) $(LIBS) fuji/$(am__dirstamp): @$(MKDIR_P) fuji @: > fuji/$(am__dirstamp) fuji/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) fuji/$(DEPDIR) @: > fuji/$(DEPDIR)/$(am__dirstamp) fuji/library.lo: fuji/$(am__dirstamp) fuji/$(DEPDIR)/$(am__dirstamp) fuji/fuji.lo: fuji/$(am__dirstamp) fuji/$(DEPDIR)/$(am__dirstamp) fuji.la: $(fuji_la_OBJECTS) $(fuji_la_DEPENDENCIES) $(EXTRA_fuji_la_DEPENDENCIES) $(AM_V_CCLD)$(fuji_la_LINK) $(fuji_la_OBJECTS) $(fuji_la_LIBADD) $(LIBS) gsmart300/$(am__dirstamp): @$(MKDIR_P) gsmart300 @: > gsmart300/$(am__dirstamp) gsmart300/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) gsmart300/$(DEPDIR) @: > gsmart300/$(DEPDIR)/$(am__dirstamp) gsmart300/gsmart300.lo: gsmart300/$(am__dirstamp) \ gsmart300/$(DEPDIR)/$(am__dirstamp) gsmart300/library.lo: gsmart300/$(am__dirstamp) \ gsmart300/$(DEPDIR)/$(am__dirstamp) gsmart300.la: $(gsmart300_la_OBJECTS) $(gsmart300_la_DEPENDENCIES) $(EXTRA_gsmart300_la_DEPENDENCIES) $(AM_V_CCLD)$(gsmart300_la_LINK) $(gsmart300_la_OBJECTS) $(gsmart300_la_LIBADD) $(LIBS) hp215/$(am__dirstamp): @$(MKDIR_P) hp215 @: > hp215/$(am__dirstamp) hp215/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) hp215/$(DEPDIR) @: > hp215/$(DEPDIR)/$(am__dirstamp) hp215/hp215.lo: hp215/$(am__dirstamp) hp215/$(DEPDIR)/$(am__dirstamp) hp215.la: $(hp215_la_OBJECTS) $(hp215_la_DEPENDENCIES) $(EXTRA_hp215_la_DEPENDENCIES) $(AM_V_CCLD)$(hp215_la_LINK) $(hp215_la_OBJECTS) $(hp215_la_LIBADD) $(LIBS) iclick/$(am__dirstamp): @$(MKDIR_P) iclick @: > iclick/$(am__dirstamp) iclick/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) iclick/$(DEPDIR) @: > iclick/$(DEPDIR)/$(am__dirstamp) iclick/library.lo: iclick/$(am__dirstamp) \ iclick/$(DEPDIR)/$(am__dirstamp) iclick/iclick.lo: iclick/$(am__dirstamp) \ iclick/$(DEPDIR)/$(am__dirstamp) iclick.la: $(iclick_la_OBJECTS) $(iclick_la_DEPENDENCIES) $(EXTRA_iclick_la_DEPENDENCIES) $(AM_V_CCLD)$(iclick_la_LINK) $(iclick_la_OBJECTS) $(iclick_la_LIBADD) $(LIBS) jamcam/$(am__dirstamp): @$(MKDIR_P) jamcam @: > jamcam/$(am__dirstamp) jamcam/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) jamcam/$(DEPDIR) @: > jamcam/$(DEPDIR)/$(am__dirstamp) jamcam/jamcam.lo: jamcam/$(am__dirstamp) \ jamcam/$(DEPDIR)/$(am__dirstamp) jamcam/library.lo: jamcam/$(am__dirstamp) \ jamcam/$(DEPDIR)/$(am__dirstamp) jamcam.la: $(jamcam_la_OBJECTS) $(jamcam_la_DEPENDENCIES) $(EXTRA_jamcam_la_DEPENDENCIES) $(AM_V_CCLD)$(jamcam_la_LINK) $(jamcam_la_OBJECTS) $(jamcam_la_LIBADD) $(LIBS) jd11/$(am__dirstamp): @$(MKDIR_P) jd11 @: > jd11/$(am__dirstamp) jd11/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) jd11/$(DEPDIR) @: > jd11/$(DEPDIR)/$(am__dirstamp) jd11/jd11.lo: jd11/$(am__dirstamp) jd11/$(DEPDIR)/$(am__dirstamp) jd11/serial.lo: jd11/$(am__dirstamp) jd11/$(DEPDIR)/$(am__dirstamp) jd11/decomp.lo: jd11/$(am__dirstamp) jd11/$(DEPDIR)/$(am__dirstamp) jd11.la: $(jd11_la_OBJECTS) $(jd11_la_DEPENDENCIES) $(EXTRA_jd11_la_DEPENDENCIES) $(AM_V_CCLD)$(jd11_la_LINK) $(jd11_la_OBJECTS) $(jd11_la_LIBADD) $(LIBS) jl2005a/$(am__dirstamp): @$(MKDIR_P) jl2005a @: > jl2005a/$(am__dirstamp) jl2005a/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) jl2005a/$(DEPDIR) @: > jl2005a/$(DEPDIR)/$(am__dirstamp) jl2005a/library.lo: jl2005a/$(am__dirstamp) \ jl2005a/$(DEPDIR)/$(am__dirstamp) jl2005a/jl2005a.lo: jl2005a/$(am__dirstamp) \ jl2005a/$(DEPDIR)/$(am__dirstamp) jl2005a.la: $(jl2005a_la_OBJECTS) $(jl2005a_la_DEPENDENCIES) $(EXTRA_jl2005a_la_DEPENDENCIES) $(AM_V_CCLD)$(jl2005a_la_LINK) $(jl2005a_la_OBJECTS) $(jl2005a_la_LIBADD) $(LIBS) jl2005c/$(am__dirstamp): @$(MKDIR_P) jl2005c @: > jl2005c/$(am__dirstamp) jl2005c/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) jl2005c/$(DEPDIR) @: > jl2005c/$(DEPDIR)/$(am__dirstamp) jl2005c/library.lo: jl2005c/$(am__dirstamp) \ jl2005c/$(DEPDIR)/$(am__dirstamp) jl2005c/jl2005c.lo: jl2005c/$(am__dirstamp) \ jl2005c/$(DEPDIR)/$(am__dirstamp) jl2005c/jpeg_memsrcdest.lo: jl2005c/$(am__dirstamp) \ jl2005c/$(DEPDIR)/$(am__dirstamp) jl2005c/jl2005bcd_decompress.lo: jl2005c/$(am__dirstamp) \ jl2005c/$(DEPDIR)/$(am__dirstamp) jl2005c/img_enhance.lo: jl2005c/$(am__dirstamp) \ jl2005c/$(DEPDIR)/$(am__dirstamp) jl2005c.la: $(jl2005c_la_OBJECTS) $(jl2005c_la_DEPENDENCIES) $(EXTRA_jl2005c_la_DEPENDENCIES) $(AM_V_CCLD)$(jl2005c_la_LINK) $(jl2005c_la_OBJECTS) $(jl2005c_la_LIBADD) $(LIBS) kodak/dc120/$(am__dirstamp): @$(MKDIR_P) kodak/dc120 @: > kodak/dc120/$(am__dirstamp) kodak/dc120/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) kodak/dc120/$(DEPDIR) @: > kodak/dc120/$(DEPDIR)/$(am__dirstamp) kodak/dc120/dc120.lo: kodak/dc120/$(am__dirstamp) \ kodak/dc120/$(DEPDIR)/$(am__dirstamp) kodak/dc120/library.lo: kodak/dc120/$(am__dirstamp) \ kodak/dc120/$(DEPDIR)/$(am__dirstamp) kodak_dc120.la: $(kodak_dc120_la_OBJECTS) $(kodak_dc120_la_DEPENDENCIES) $(EXTRA_kodak_dc120_la_DEPENDENCIES) $(AM_V_CCLD)$(kodak_dc120_la_LINK) $(kodak_dc120_la_OBJECTS) $(kodak_dc120_la_LIBADD) $(LIBS) kodak/dc210/$(am__dirstamp): @$(MKDIR_P) kodak/dc210 @: > kodak/dc210/$(am__dirstamp) kodak/dc210/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) kodak/dc210/$(DEPDIR) @: > kodak/dc210/$(DEPDIR)/$(am__dirstamp) kodak/dc210/dc210.lo: kodak/dc210/$(am__dirstamp) \ kodak/dc210/$(DEPDIR)/$(am__dirstamp) kodak/dc210/library.lo: kodak/dc210/$(am__dirstamp) \ kodak/dc210/$(DEPDIR)/$(am__dirstamp) kodak_dc210.la: $(kodak_dc210_la_OBJECTS) $(kodak_dc210_la_DEPENDENCIES) $(EXTRA_kodak_dc210_la_DEPENDENCIES) $(AM_V_CCLD)$(kodak_dc210_la_LINK) $(kodak_dc210_la_OBJECTS) $(kodak_dc210_la_LIBADD) $(LIBS) kodak/dc240/$(am__dirstamp): @$(MKDIR_P) kodak/dc240 @: > kodak/dc240/$(am__dirstamp) kodak/dc240/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) kodak/dc240/$(DEPDIR) @: > kodak/dc240/$(DEPDIR)/$(am__dirstamp) kodak/dc240/dc240.lo: kodak/dc240/$(am__dirstamp) \ kodak/dc240/$(DEPDIR)/$(am__dirstamp) kodak/dc240/library.lo: kodak/dc240/$(am__dirstamp) \ kodak/dc240/$(DEPDIR)/$(am__dirstamp) kodak_dc240.la: $(kodak_dc240_la_OBJECTS) $(kodak_dc240_la_DEPENDENCIES) $(EXTRA_kodak_dc240_la_DEPENDENCIES) $(AM_V_CCLD)$(kodak_dc240_la_LINK) $(kodak_dc240_la_OBJECTS) $(kodak_dc240_la_LIBADD) $(LIBS) kodak/dc3200/$(am__dirstamp): @$(MKDIR_P) kodak/dc3200 @: > kodak/dc3200/$(am__dirstamp) kodak/dc3200/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) kodak/dc3200/$(DEPDIR) @: > kodak/dc3200/$(DEPDIR)/$(am__dirstamp) kodak/dc3200/dc3200.lo: kodak/dc3200/$(am__dirstamp) \ kodak/dc3200/$(DEPDIR)/$(am__dirstamp) kodak/dc3200/library.lo: kodak/dc3200/$(am__dirstamp) \ kodak/dc3200/$(DEPDIR)/$(am__dirstamp) kodak_dc3200.la: $(kodak_dc3200_la_OBJECTS) $(kodak_dc3200_la_DEPENDENCIES) $(EXTRA_kodak_dc3200_la_DEPENDENCIES) $(AM_V_CCLD)$(kodak_dc3200_la_LINK) $(kodak_dc3200_la_OBJECTS) $(kodak_dc3200_la_LIBADD) $(LIBS) kodak/ez200/$(am__dirstamp): @$(MKDIR_P) kodak/ez200 @: > kodak/ez200/$(am__dirstamp) kodak/ez200/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) kodak/ez200/$(DEPDIR) @: > kodak/ez200/$(DEPDIR)/$(am__dirstamp) kodak/ez200/ez200.lo: kodak/ez200/$(am__dirstamp) \ kodak/ez200/$(DEPDIR)/$(am__dirstamp) kodak_ez200.la: $(kodak_ez200_la_OBJECTS) $(kodak_ez200_la_DEPENDENCIES) $(EXTRA_kodak_ez200_la_DEPENDENCIES) $(AM_V_CCLD)$(kodak_ez200_la_LINK) $(kodak_ez200_la_OBJECTS) $(kodak_ez200_la_LIBADD) $(LIBS) konica/$(am__dirstamp): @$(MKDIR_P) konica @: > konica/$(am__dirstamp) konica/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) konica/$(DEPDIR) @: > konica/$(DEPDIR)/$(am__dirstamp) konica/konica_la-lowlevel.lo: konica/$(am__dirstamp) \ konica/$(DEPDIR)/$(am__dirstamp) konica/konica_la-konica.lo: konica/$(am__dirstamp) \ konica/$(DEPDIR)/$(am__dirstamp) konica/konica_la-library.lo: konica/$(am__dirstamp) \ konica/$(DEPDIR)/$(am__dirstamp) konica.la: $(konica_la_OBJECTS) $(konica_la_DEPENDENCIES) $(EXTRA_konica_la_DEPENDENCIES) $(AM_V_CCLD)$(konica_la_LINK) $(konica_la_OBJECTS) $(konica_la_LIBADD) $(LIBS) konica/konica_qm150_la-qm150.lo: konica/$(am__dirstamp) \ konica/$(DEPDIR)/$(am__dirstamp) konica_qm150.la: $(konica_qm150_la_OBJECTS) $(konica_qm150_la_DEPENDENCIES) $(EXTRA_konica_qm150_la_DEPENDENCIES) $(AM_V_CCLD)$(konica_qm150_la_LINK) $(konica_qm150_la_OBJECTS) $(konica_qm150_la_LIBADD) $(LIBS) largan/lmini/$(am__dirstamp): @$(MKDIR_P) largan/lmini @: > largan/lmini/$(am__dirstamp) largan/lmini/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) largan/lmini/$(DEPDIR) @: > largan/lmini/$(DEPDIR)/$(am__dirstamp) largan/lmini/largan.lo: largan/lmini/$(am__dirstamp) \ largan/lmini/$(DEPDIR)/$(am__dirstamp) largan/lmini/lmini.lo: largan/lmini/$(am__dirstamp) \ largan/lmini/$(DEPDIR)/$(am__dirstamp) largan/lmini/lmini_ccd.lo: largan/lmini/$(am__dirstamp) \ largan/lmini/$(DEPDIR)/$(am__dirstamp) largan.la: $(largan_la_OBJECTS) $(largan_la_DEPENDENCIES) $(EXTRA_largan_la_DEPENDENCIES) $(AM_V_CCLD)$(largan_la_LINK) $(largan_la_OBJECTS) $(largan_la_LIBADD) $(LIBS) lg_gsm/$(am__dirstamp): @$(MKDIR_P) lg_gsm @: > lg_gsm/$(am__dirstamp) lg_gsm/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) lg_gsm/$(DEPDIR) @: > lg_gsm/$(DEPDIR)/$(am__dirstamp) lg_gsm/library.lo: lg_gsm/$(am__dirstamp) \ lg_gsm/$(DEPDIR)/$(am__dirstamp) lg_gsm/lg_gsm.lo: lg_gsm/$(am__dirstamp) \ lg_gsm/$(DEPDIR)/$(am__dirstamp) lg_gsm.la: $(lg_gsm_la_OBJECTS) $(lg_gsm_la_DEPENDENCIES) $(EXTRA_lg_gsm_la_DEPENDENCIES) $(AM_V_CCLD)$(lg_gsm_la_LINK) $(lg_gsm_la_OBJECTS) $(lg_gsm_la_LIBADD) $(LIBS) mars/$(am__dirstamp): @$(MKDIR_P) mars @: > mars/$(am__dirstamp) mars/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) mars/$(DEPDIR) @: > mars/$(DEPDIR)/$(am__dirstamp) mars/library.lo: mars/$(am__dirstamp) mars/$(DEPDIR)/$(am__dirstamp) mars/mars.lo: mars/$(am__dirstamp) mars/$(DEPDIR)/$(am__dirstamp) mars.la: $(mars_la_OBJECTS) $(mars_la_DEPENDENCIES) $(EXTRA_mars_la_DEPENDENCIES) $(AM_V_CCLD)$(mars_la_LINK) $(mars_la_OBJECTS) $(mars_la_LIBADD) $(LIBS) mustek/$(am__dirstamp): @$(MKDIR_P) mustek @: > mustek/$(am__dirstamp) mustek/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) mustek/$(DEPDIR) @: > mustek/$(DEPDIR)/$(am__dirstamp) mustek/mdc800.lo: mustek/$(am__dirstamp) \ mustek/$(DEPDIR)/$(am__dirstamp) mustek/core.lo: mustek/$(am__dirstamp) \ mustek/$(DEPDIR)/$(am__dirstamp) mustek/image.lo: mustek/$(am__dirstamp) \ mustek/$(DEPDIR)/$(am__dirstamp) mustek/io.lo: mustek/$(am__dirstamp) mustek/$(DEPDIR)/$(am__dirstamp) mustek/rs232.lo: mustek/$(am__dirstamp) \ mustek/$(DEPDIR)/$(am__dirstamp) mustek/usb.lo: mustek/$(am__dirstamp) mustek/$(DEPDIR)/$(am__dirstamp) mustek.la: $(mustek_la_OBJECTS) $(mustek_la_DEPENDENCIES) $(EXTRA_mustek_la_DEPENDENCIES) $(AM_V_CCLD)$(mustek_la_LINK) $(mustek_la_OBJECTS) $(mustek_la_LIBADD) $(LIBS) panasonic/coolshot/$(am__dirstamp): @$(MKDIR_P) panasonic/coolshot @: > panasonic/coolshot/$(am__dirstamp) panasonic/coolshot/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) panasonic/coolshot/$(DEPDIR) @: > panasonic/coolshot/$(DEPDIR)/$(am__dirstamp) panasonic/coolshot/coolshot.lo: panasonic/coolshot/$(am__dirstamp) \ panasonic/coolshot/$(DEPDIR)/$(am__dirstamp) panasonic/coolshot/library.lo: panasonic/coolshot/$(am__dirstamp) \ panasonic/coolshot/$(DEPDIR)/$(am__dirstamp) panasonic_coolshot.la: $(panasonic_coolshot_la_OBJECTS) $(panasonic_coolshot_la_DEPENDENCIES) $(EXTRA_panasonic_coolshot_la_DEPENDENCIES) $(AM_V_CCLD)$(panasonic_coolshot_la_LINK) $(panasonic_coolshot_la_OBJECTS) $(panasonic_coolshot_la_LIBADD) $(LIBS) panasonic/$(am__dirstamp): @$(MKDIR_P) panasonic @: > panasonic/$(am__dirstamp) panasonic/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) panasonic/$(DEPDIR) @: > panasonic/$(DEPDIR)/$(am__dirstamp) panasonic/dc1000.lo: panasonic/$(am__dirstamp) \ panasonic/$(DEPDIR)/$(am__dirstamp) panasonic/dc.lo: panasonic/$(am__dirstamp) \ panasonic/$(DEPDIR)/$(am__dirstamp) panasonic_dc1000.la: $(panasonic_dc1000_la_OBJECTS) $(panasonic_dc1000_la_DEPENDENCIES) $(EXTRA_panasonic_dc1000_la_DEPENDENCIES) $(AM_V_CCLD)$(panasonic_dc1000_la_LINK) $(panasonic_dc1000_la_OBJECTS) $(panasonic_dc1000_la_LIBADD) $(LIBS) panasonic/dc1580.lo: panasonic/$(am__dirstamp) \ panasonic/$(DEPDIR)/$(am__dirstamp) panasonic_dc1580.la: $(panasonic_dc1580_la_OBJECTS) $(panasonic_dc1580_la_DEPENDENCIES) $(EXTRA_panasonic_dc1580_la_DEPENDENCIES) $(AM_V_CCLD)$(panasonic_dc1580_la_LINK) $(panasonic_dc1580_la_OBJECTS) $(panasonic_dc1580_la_LIBADD) $(LIBS) panasonic/l859/$(am__dirstamp): @$(MKDIR_P) panasonic/l859 @: > panasonic/l859/$(am__dirstamp) panasonic/l859/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) panasonic/l859/$(DEPDIR) @: > panasonic/l859/$(DEPDIR)/$(am__dirstamp) panasonic/l859/l859.lo: panasonic/l859/$(am__dirstamp) \ panasonic/l859/$(DEPDIR)/$(am__dirstamp) panasonic_l859.la: $(panasonic_l859_la_OBJECTS) $(panasonic_l859_la_DEPENDENCIES) $(EXTRA_panasonic_l859_la_DEPENDENCIES) $(AM_V_CCLD)$(panasonic_l859_la_LINK) $(panasonic_l859_la_OBJECTS) $(panasonic_l859_la_LIBADD) $(LIBS) pccam300/$(am__dirstamp): @$(MKDIR_P) pccam300 @: > pccam300/$(am__dirstamp) pccam300/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pccam300/$(DEPDIR) @: > pccam300/$(DEPDIR)/$(am__dirstamp) pccam300/pccam300.lo: pccam300/$(am__dirstamp) \ pccam300/$(DEPDIR)/$(am__dirstamp) pccam300/library.lo: pccam300/$(am__dirstamp) \ pccam300/$(DEPDIR)/$(am__dirstamp) pccam300.la: $(pccam300_la_OBJECTS) $(pccam300_la_DEPENDENCIES) $(EXTRA_pccam300_la_DEPENDENCIES) $(AM_V_CCLD)$(pccam300_la_LINK) $(pccam300_la_OBJECTS) $(pccam300_la_LIBADD) $(LIBS) pccam600/$(am__dirstamp): @$(MKDIR_P) pccam600 @: > pccam600/$(am__dirstamp) pccam600/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pccam600/$(DEPDIR) @: > pccam600/$(DEPDIR)/$(am__dirstamp) pccam600/pccam600.lo: pccam600/$(am__dirstamp) \ pccam600/$(DEPDIR)/$(am__dirstamp) pccam600/library.lo: pccam600/$(am__dirstamp) \ pccam600/$(DEPDIR)/$(am__dirstamp) pccam600.la: $(pccam600_la_OBJECTS) $(pccam600_la_DEPENDENCIES) $(EXTRA_pccam600_la_DEPENDENCIES) $(AM_V_CCLD)$(pccam600_la_LINK) $(pccam600_la_OBJECTS) $(pccam600_la_LIBADD) $(LIBS) pentax/$(am__dirstamp): @$(MKDIR_P) pentax @: > pentax/$(am__dirstamp) pentax/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) pentax/$(DEPDIR) @: > pentax/$(DEPDIR)/$(am__dirstamp) pentax/pentax_la-pslr.lo: pentax/$(am__dirstamp) \ pentax/$(DEPDIR)/$(am__dirstamp) pentax/pentax_la-library.lo: pentax/$(am__dirstamp) \ pentax/$(DEPDIR)/$(am__dirstamp) pentax.la: $(pentax_la_OBJECTS) $(pentax_la_DEPENDENCIES) $(EXTRA_pentax_la_DEPENDENCIES) $(AM_V_CCLD)$(pentax_la_LINK) $(pentax_la_OBJECTS) $(pentax_la_LIBADD) $(LIBS) polaroid/$(am__dirstamp): @$(MKDIR_P) polaroid @: > polaroid/$(am__dirstamp) polaroid/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) polaroid/$(DEPDIR) @: > polaroid/$(DEPDIR)/$(am__dirstamp) polaroid/pdc320.lo: polaroid/$(am__dirstamp) \ polaroid/$(DEPDIR)/$(am__dirstamp) polaroid_pdc320.la: $(polaroid_pdc320_la_OBJECTS) $(polaroid_pdc320_la_DEPENDENCIES) $(EXTRA_polaroid_pdc320_la_DEPENDENCIES) $(AM_V_CCLD)$(polaroid_pdc320_la_LINK) $(polaroid_pdc320_la_OBJECTS) $(polaroid_pdc320_la_LIBADD) $(LIBS) polaroid/pdc640.lo: polaroid/$(am__dirstamp) \ polaroid/$(DEPDIR)/$(am__dirstamp) polaroid/jd350e.lo: polaroid/$(am__dirstamp) \ polaroid/$(DEPDIR)/$(am__dirstamp) polaroid/dlink350f.lo: polaroid/$(am__dirstamp) \ polaroid/$(DEPDIR)/$(am__dirstamp) polaroid_pdc640.la: $(polaroid_pdc640_la_OBJECTS) $(polaroid_pdc640_la_DEPENDENCIES) $(EXTRA_polaroid_pdc640_la_DEPENDENCIES) $(AM_V_CCLD)$(polaroid_pdc640_la_LINK) $(polaroid_pdc640_la_OBJECTS) $(polaroid_pdc640_la_LIBADD) $(LIBS) polaroid/pdc700.lo: polaroid/$(am__dirstamp) \ polaroid/$(DEPDIR)/$(am__dirstamp) polaroid_pdc700.la: $(polaroid_pdc700_la_OBJECTS) $(polaroid_pdc700_la_DEPENDENCIES) $(EXTRA_polaroid_pdc700_la_DEPENDENCIES) $(AM_V_CCLD)$(polaroid_pdc700_la_LINK) $(polaroid_pdc700_la_OBJECTS) $(polaroid_pdc700_la_LIBADD) $(LIBS) ptp2/$(am__dirstamp): @$(MKDIR_P) ptp2 @: > ptp2/$(am__dirstamp) ptp2/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ptp2/$(DEPDIR) @: > ptp2/$(DEPDIR)/$(am__dirstamp) ptp2/ptp2_la-ptp.lo: ptp2/$(am__dirstamp) \ ptp2/$(DEPDIR)/$(am__dirstamp) ptp2/ptp2_la-library.lo: ptp2/$(am__dirstamp) \ ptp2/$(DEPDIR)/$(am__dirstamp) ptp2/ptp2_la-usb.lo: ptp2/$(am__dirstamp) \ ptp2/$(DEPDIR)/$(am__dirstamp) ptp2/ptp2_la-ptpip.lo: ptp2/$(am__dirstamp) \ ptp2/$(DEPDIR)/$(am__dirstamp) ptp2/ptp2_la-config.lo: ptp2/$(am__dirstamp) \ ptp2/$(DEPDIR)/$(am__dirstamp) ptp2/ptp2_la-olympus-wrap.lo: ptp2/$(am__dirstamp) \ ptp2/$(DEPDIR)/$(am__dirstamp) ptp2/ptp2_la-chdk.lo: ptp2/$(am__dirstamp) \ ptp2/$(DEPDIR)/$(am__dirstamp) ptp2.la: $(ptp2_la_OBJECTS) $(ptp2_la_DEPENDENCIES) $(EXTRA_ptp2_la_DEPENDENCIES) $(AM_V_CCLD)$(ptp2_la_LINK) $(ptp2_la_OBJECTS) $(ptp2_la_LIBADD) $(LIBS) ricoh/$(am__dirstamp): @$(MKDIR_P) ricoh @: > ricoh/$(am__dirstamp) ricoh/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ricoh/$(DEPDIR) @: > ricoh/$(DEPDIR)/$(am__dirstamp) ricoh/library.lo: ricoh/$(am__dirstamp) \ ricoh/$(DEPDIR)/$(am__dirstamp) ricoh/ricoh.lo: ricoh/$(am__dirstamp) ricoh/$(DEPDIR)/$(am__dirstamp) ricoh.la: $(ricoh_la_OBJECTS) $(ricoh_la_DEPENDENCIES) $(EXTRA_ricoh_la_DEPENDENCIES) $(AM_V_CCLD)$(ricoh_la_LINK) $(ricoh_la_OBJECTS) $(ricoh_la_LIBADD) $(LIBS) ricoh/g3.lo: ricoh/$(am__dirstamp) ricoh/$(DEPDIR)/$(am__dirstamp) ricoh_g3.la: $(ricoh_g3_la_OBJECTS) $(ricoh_g3_la_DEPENDENCIES) $(EXTRA_ricoh_g3_la_DEPENDENCIES) $(AM_V_CCLD)$(ricoh_g3_la_LINK) $(ricoh_g3_la_OBJECTS) $(ricoh_g3_la_LIBADD) $(LIBS) samsung/$(am__dirstamp): @$(MKDIR_P) samsung @: > samsung/$(am__dirstamp) samsung/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) samsung/$(DEPDIR) @: > samsung/$(DEPDIR)/$(am__dirstamp) samsung/samsung.lo: samsung/$(am__dirstamp) \ samsung/$(DEPDIR)/$(am__dirstamp) samsung.la: $(samsung_la_OBJECTS) $(samsung_la_DEPENDENCIES) $(EXTRA_samsung_la_DEPENDENCIES) $(AM_V_CCLD)$(samsung_la_LINK) $(samsung_la_OBJECTS) $(samsung_la_LIBADD) $(LIBS) sierra/$(am__dirstamp): @$(MKDIR_P) sierra @: > sierra/$(am__dirstamp) sierra/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) sierra/$(DEPDIR) @: > sierra/$(DEPDIR)/$(am__dirstamp) sierra/sierra_la-sierra.lo: sierra/$(am__dirstamp) \ sierra/$(DEPDIR)/$(am__dirstamp) sierra/sierra_la-library.lo: sierra/$(am__dirstamp) \ sierra/$(DEPDIR)/$(am__dirstamp) sierra/sierra_la-sierra-usbwrap.lo: sierra/$(am__dirstamp) \ sierra/$(DEPDIR)/$(am__dirstamp) sierra/sierra_la-sierra-desc.lo: sierra/$(am__dirstamp) \ sierra/$(DEPDIR)/$(am__dirstamp) sierra/sierra_la-nikon-desc.lo: sierra/$(am__dirstamp) \ sierra/$(DEPDIR)/$(am__dirstamp) sierra/sierra_la-olympus-desc.lo: sierra/$(am__dirstamp) \ sierra/$(DEPDIR)/$(am__dirstamp) sierra/sierra_la-epson-desc.lo: sierra/$(am__dirstamp) \ sierra/$(DEPDIR)/$(am__dirstamp) sierra.la: $(sierra_la_OBJECTS) $(sierra_la_DEPENDENCIES) $(EXTRA_sierra_la_DEPENDENCIES) $(AM_V_CCLD)$(sierra_la_LINK) $(sierra_la_OBJECTS) $(sierra_la_LIBADD) $(LIBS) sipix/$(am__dirstamp): @$(MKDIR_P) sipix @: > sipix/$(am__dirstamp) sipix/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) sipix/$(DEPDIR) @: > sipix/$(DEPDIR)/$(am__dirstamp) sipix/blink.lo: sipix/$(am__dirstamp) sipix/$(DEPDIR)/$(am__dirstamp) sipix_blink.la: $(sipix_blink_la_OBJECTS) $(sipix_blink_la_DEPENDENCIES) $(EXTRA_sipix_blink_la_DEPENDENCIES) $(AM_V_CCLD)$(sipix_blink_la_LINK) $(sipix_blink_la_OBJECTS) $(sipix_blink_la_LIBADD) $(LIBS) sipix/blink2.lo: sipix/$(am__dirstamp) sipix/$(DEPDIR)/$(am__dirstamp) sipix_blink2.la: $(sipix_blink2_la_OBJECTS) $(sipix_blink2_la_DEPENDENCIES) $(EXTRA_sipix_blink2_la_DEPENDENCIES) $(AM_V_CCLD)$(sipix_blink2_la_LINK) $(sipix_blink2_la_OBJECTS) $(sipix_blink2_la_LIBADD) $(LIBS) sipix/web2.lo: sipix/$(am__dirstamp) sipix/$(DEPDIR)/$(am__dirstamp) sipix_web2.la: $(sipix_web2_la_OBJECTS) $(sipix_web2_la_DEPENDENCIES) $(EXTRA_sipix_web2_la_DEPENDENCIES) $(AM_V_CCLD)$(sipix_web2_la_LINK) $(sipix_web2_la_OBJECTS) $(sipix_web2_la_LIBADD) $(LIBS) smal/$(am__dirstamp): @$(MKDIR_P) smal @: > smal/$(am__dirstamp) smal/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) smal/$(DEPDIR) @: > smal/$(DEPDIR)/$(am__dirstamp) smal/smal.lo: smal/$(am__dirstamp) smal/$(DEPDIR)/$(am__dirstamp) smal/ultrapocket.lo: smal/$(am__dirstamp) \ smal/$(DEPDIR)/$(am__dirstamp) smal.la: $(smal_la_OBJECTS) $(smal_la_DEPENDENCIES) $(EXTRA_smal_la_DEPENDENCIES) $(AM_V_CCLD)$(smal_la_LINK) $(smal_la_OBJECTS) $(smal_la_LIBADD) $(LIBS) sonix/$(am__dirstamp): @$(MKDIR_P) sonix @: > sonix/$(am__dirstamp) sonix/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) sonix/$(DEPDIR) @: > sonix/$(DEPDIR)/$(am__dirstamp) sonix/library.lo: sonix/$(am__dirstamp) \ sonix/$(DEPDIR)/$(am__dirstamp) sonix/sonix.lo: sonix/$(am__dirstamp) sonix/$(DEPDIR)/$(am__dirstamp) sonix.la: $(sonix_la_OBJECTS) $(sonix_la_DEPENDENCIES) $(EXTRA_sonix_la_DEPENDENCIES) $(AM_V_CCLD)$(sonix_la_LINK) $(sonix_la_OBJECTS) $(sonix_la_LIBADD) $(LIBS) sonydscf1/$(am__dirstamp): @$(MKDIR_P) sonydscf1 @: > sonydscf1/$(am__dirstamp) sonydscf1/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) sonydscf1/$(DEPDIR) @: > sonydscf1/$(DEPDIR)/$(am__dirstamp) sonydscf1/command.lo: sonydscf1/$(am__dirstamp) \ sonydscf1/$(DEPDIR)/$(am__dirstamp) sonydscf1/sonydscf1.lo: sonydscf1/$(am__dirstamp) \ sonydscf1/$(DEPDIR)/$(am__dirstamp) sony_dscf1.la: $(sony_dscf1_la_OBJECTS) $(sony_dscf1_la_DEPENDENCIES) $(EXTRA_sony_dscf1_la_DEPENDENCIES) $(AM_V_CCLD)$(sony_dscf1_la_LINK) $(sony_dscf1_la_OBJECTS) $(sony_dscf1_la_LIBADD) $(LIBS) sonydscf55/$(am__dirstamp): @$(MKDIR_P) sonydscf55 @: > sonydscf55/$(am__dirstamp) sonydscf55/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) sonydscf55/$(DEPDIR) @: > sonydscf55/$(DEPDIR)/$(am__dirstamp) sonydscf55/sony.lo: sonydscf55/$(am__dirstamp) \ sonydscf55/$(DEPDIR)/$(am__dirstamp) sonydscf55/camera.lo: sonydscf55/$(am__dirstamp) \ sonydscf55/$(DEPDIR)/$(am__dirstamp) sony_dscf55.la: $(sony_dscf55_la_OBJECTS) $(sony_dscf55_la_DEPENDENCIES) $(EXTRA_sony_dscf55_la_DEPENDENCIES) $(AM_V_CCLD)$(sony_dscf55_la_LINK) $(sony_dscf55_la_OBJECTS) $(sony_dscf55_la_LIBADD) $(LIBS) soundvision/$(am__dirstamp): @$(MKDIR_P) soundvision @: > soundvision/$(am__dirstamp) soundvision/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) soundvision/$(DEPDIR) @: > soundvision/$(DEPDIR)/$(am__dirstamp) soundvision/soundvision.lo: soundvision/$(am__dirstamp) \ soundvision/$(DEPDIR)/$(am__dirstamp) soundvision/agfa_cl18.lo: soundvision/$(am__dirstamp) \ soundvision/$(DEPDIR)/$(am__dirstamp) soundvision/tiger_fastflicks.lo: soundvision/$(am__dirstamp) \ soundvision/$(DEPDIR)/$(am__dirstamp) soundvision/commands.lo: soundvision/$(am__dirstamp) \ soundvision/$(DEPDIR)/$(am__dirstamp) soundvision.la: $(soundvision_la_OBJECTS) $(soundvision_la_DEPENDENCIES) $(EXTRA_soundvision_la_DEPENDENCIES) $(AM_V_CCLD)$(soundvision_la_LINK) $(soundvision_la_OBJECTS) $(soundvision_la_LIBADD) $(LIBS) spca50x/$(am__dirstamp): @$(MKDIR_P) spca50x @: > spca50x/$(am__dirstamp) spca50x/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) spca50x/$(DEPDIR) @: > spca50x/$(DEPDIR)/$(am__dirstamp) spca50x/spca50x.lo: spca50x/$(am__dirstamp) \ spca50x/$(DEPDIR)/$(am__dirstamp) spca50x/spca50x-flash.lo: spca50x/$(am__dirstamp) \ spca50x/$(DEPDIR)/$(am__dirstamp) spca50x/spca50x-sdram.lo: spca50x/$(am__dirstamp) \ spca50x/$(DEPDIR)/$(am__dirstamp) spca50x/library.lo: spca50x/$(am__dirstamp) \ spca50x/$(DEPDIR)/$(am__dirstamp) spca50x.la: $(spca50x_la_OBJECTS) $(spca50x_la_DEPENDENCIES) $(EXTRA_spca50x_la_DEPENDENCIES) $(AM_V_CCLD)$(spca50x_la_LINK) $(spca50x_la_OBJECTS) $(spca50x_la_LIBADD) $(LIBS) sq905/$(am__dirstamp): @$(MKDIR_P) sq905 @: > sq905/$(am__dirstamp) sq905/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) sq905/$(DEPDIR) @: > sq905/$(DEPDIR)/$(am__dirstamp) sq905/library.lo: sq905/$(am__dirstamp) \ sq905/$(DEPDIR)/$(am__dirstamp) sq905/sq905.lo: sq905/$(am__dirstamp) sq905/$(DEPDIR)/$(am__dirstamp) sq905/postprocess.lo: sq905/$(am__dirstamp) \ sq905/$(DEPDIR)/$(am__dirstamp) sq905.la: $(sq905_la_OBJECTS) $(sq905_la_DEPENDENCIES) $(EXTRA_sq905_la_DEPENDENCIES) $(AM_V_CCLD)$(sq905_la_LINK) $(sq905_la_OBJECTS) $(sq905_la_LIBADD) $(LIBS) st2205/$(am__dirstamp): @$(MKDIR_P) st2205 @: > st2205/$(am__dirstamp) st2205/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) st2205/$(DEPDIR) @: > st2205/$(DEPDIR)/$(am__dirstamp) st2205/st2205_la-library.lo: st2205/$(am__dirstamp) \ st2205/$(DEPDIR)/$(am__dirstamp) st2205/st2205_la-st2205.lo: st2205/$(am__dirstamp) \ st2205/$(DEPDIR)/$(am__dirstamp) st2205/st2205_la-st2205_decode.lo: st2205/$(am__dirstamp) \ st2205/$(DEPDIR)/$(am__dirstamp) st2205/st2205_la-st2205_tables.lo: st2205/$(am__dirstamp) \ st2205/$(DEPDIR)/$(am__dirstamp) st2205.la: $(st2205_la_OBJECTS) $(st2205_la_DEPENDENCIES) $(EXTRA_st2205_la_DEPENDENCIES) $(AM_V_CCLD)$(st2205_la_LINK) $(st2205_la_OBJECTS) $(st2205_la_LIBADD) $(LIBS) stv0674/$(am__dirstamp): @$(MKDIR_P) stv0674 @: > stv0674/$(am__dirstamp) stv0674/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) stv0674/$(DEPDIR) @: > stv0674/$(DEPDIR)/$(am__dirstamp) stv0674/stv0674.lo: stv0674/$(am__dirstamp) \ stv0674/$(DEPDIR)/$(am__dirstamp) stv0674/library.lo: stv0674/$(am__dirstamp) \ stv0674/$(DEPDIR)/$(am__dirstamp) stv0674.la: $(stv0674_la_OBJECTS) $(stv0674_la_DEPENDENCIES) $(EXTRA_stv0674_la_DEPENDENCIES) $(AM_V_CCLD)$(stv0674_la_LINK) $(stv0674_la_OBJECTS) $(stv0674_la_LIBADD) $(LIBS) stv0680/$(am__dirstamp): @$(MKDIR_P) stv0680 @: > stv0680/$(am__dirstamp) stv0680/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) stv0680/$(DEPDIR) @: > stv0680/$(DEPDIR)/$(am__dirstamp) stv0680/stv0680.lo: stv0680/$(am__dirstamp) \ stv0680/$(DEPDIR)/$(am__dirstamp) stv0680/library.lo: stv0680/$(am__dirstamp) \ stv0680/$(DEPDIR)/$(am__dirstamp) stv0680/bayer.lo: stv0680/$(am__dirstamp) \ stv0680/$(DEPDIR)/$(am__dirstamp) stv0680/sharpen.lo: stv0680/$(am__dirstamp) \ stv0680/$(DEPDIR)/$(am__dirstamp) stv0680/saturate.lo: stv0680/$(am__dirstamp) \ stv0680/$(DEPDIR)/$(am__dirstamp) stv0680/demosaic_sharpen.lo: stv0680/$(am__dirstamp) \ stv0680/$(DEPDIR)/$(am__dirstamp) stv0680.la: $(stv0680_la_OBJECTS) $(stv0680_la_DEPENDENCIES) $(EXTRA_stv0680_la_DEPENDENCIES) $(AM_V_CCLD)$(stv0680_la_LINK) $(stv0680_la_OBJECTS) $(stv0680_la_LIBADD) $(LIBS) sx330z/$(am__dirstamp): @$(MKDIR_P) sx330z @: > sx330z/$(am__dirstamp) sx330z/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) sx330z/$(DEPDIR) @: > sx330z/$(DEPDIR)/$(am__dirstamp) sx330z/library.lo: sx330z/$(am__dirstamp) \ sx330z/$(DEPDIR)/$(am__dirstamp) sx330z/sx330z.lo: sx330z/$(am__dirstamp) \ sx330z/$(DEPDIR)/$(am__dirstamp) sx330z.la: $(sx330z_la_OBJECTS) $(sx330z_la_DEPENDENCIES) $(EXTRA_sx330z_la_DEPENDENCIES) $(AM_V_CCLD)$(sx330z_la_LINK) $(sx330z_la_OBJECTS) $(sx330z_la_LIBADD) $(LIBS) template/$(am__dirstamp): @$(MKDIR_P) template @: > template/$(am__dirstamp) template/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) template/$(DEPDIR) @: > template/$(DEPDIR)/$(am__dirstamp) template/template_la-template.lo: template/$(am__dirstamp) \ template/$(DEPDIR)/$(am__dirstamp) template.la: $(template_la_OBJECTS) $(template_la_DEPENDENCIES) $(EXTRA_template_la_DEPENDENCIES) $(AM_V_CCLD)$(template_la_LINK) $(template_la_OBJECTS) $(template_la_LIBADD) $(LIBS) topfield/$(am__dirstamp): @$(MKDIR_P) topfield @: > topfield/$(am__dirstamp) topfield/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) topfield/$(DEPDIR) @: > topfield/$(DEPDIR)/$(am__dirstamp) topfield/crc16.lo: topfield/$(am__dirstamp) \ topfield/$(DEPDIR)/$(am__dirstamp) topfield/tf_bytes.lo: topfield/$(am__dirstamp) \ topfield/$(DEPDIR)/$(am__dirstamp) topfield/mjd.lo: topfield/$(am__dirstamp) \ topfield/$(DEPDIR)/$(am__dirstamp) topfield/puppy.lo: topfield/$(am__dirstamp) \ topfield/$(DEPDIR)/$(am__dirstamp) topfield/usb_io.lo: topfield/$(am__dirstamp) \ topfield/$(DEPDIR)/$(am__dirstamp) topfield.la: $(topfield_la_OBJECTS) $(topfield_la_DEPENDENCIES) $(EXTRA_topfield_la_DEPENDENCIES) $(AM_V_CCLD)$(topfield_la_LINK) $(topfield_la_OBJECTS) $(topfield_la_LIBADD) $(LIBS) toshiba/pdrm11/$(am__dirstamp): @$(MKDIR_P) toshiba/pdrm11 @: > toshiba/pdrm11/$(am__dirstamp) toshiba/pdrm11/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) toshiba/pdrm11/$(DEPDIR) @: > toshiba/pdrm11/$(DEPDIR)/$(am__dirstamp) toshiba/pdrm11/library.lo: toshiba/pdrm11/$(am__dirstamp) \ toshiba/pdrm11/$(DEPDIR)/$(am__dirstamp) toshiba/pdrm11/pdrm11.lo: toshiba/pdrm11/$(am__dirstamp) \ toshiba/pdrm11/$(DEPDIR)/$(am__dirstamp) toshiba_pdrm11.la: $(toshiba_pdrm11_la_OBJECTS) $(toshiba_pdrm11_la_DEPENDENCIES) $(EXTRA_toshiba_pdrm11_la_DEPENDENCIES) $(AM_V_CCLD)$(toshiba_pdrm11_la_LINK) $(toshiba_pdrm11_la_OBJECTS) $(toshiba_pdrm11_la_LIBADD) $(LIBS) tp6801/$(am__dirstamp): @$(MKDIR_P) tp6801 @: > tp6801/$(am__dirstamp) tp6801/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) tp6801/$(DEPDIR) @: > tp6801/$(DEPDIR)/$(am__dirstamp) tp6801/tp6801_la-library.lo: tp6801/$(am__dirstamp) \ tp6801/$(DEPDIR)/$(am__dirstamp) tp6801/tp6801_la-tp6801.lo: tp6801/$(am__dirstamp) \ tp6801/$(DEPDIR)/$(am__dirstamp) tp6801.la: $(tp6801_la_OBJECTS) $(tp6801_la_DEPENDENCIES) $(EXTRA_tp6801_la_DEPENDENCIES) $(AM_V_CCLD)$(tp6801_la_LINK) $(tp6801_la_OBJECTS) $(tp6801_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f adc65/*.$(OBJEXT) -rm -f adc65/*.lo -rm -f agfa-cl20/*.$(OBJEXT) -rm -f agfa-cl20/*.lo -rm -f aox/*.$(OBJEXT) -rm -f aox/*.lo -rm -f ax203/*.$(OBJEXT) -rm -f ax203/*.lo -rm -f barbie/*.$(OBJEXT) -rm -f barbie/*.lo -rm -f canon/*.$(OBJEXT) -rm -f canon/*.lo -rm -f casio/*.$(OBJEXT) -rm -f casio/*.lo -rm -f clicksmart310/*.$(OBJEXT) -rm -f clicksmart310/*.lo -rm -f digigr8/*.$(OBJEXT) -rm -f digigr8/*.lo -rm -f digita/*.$(OBJEXT) -rm -f digita/*.lo -rm -f dimera/*.$(OBJEXT) -rm -f dimera/*.lo -rm -f directory/*.$(OBJEXT) -rm -f directory/*.lo -rm -f enigma13/*.$(OBJEXT) -rm -f enigma13/*.lo -rm -f fuji/*.$(OBJEXT) -rm -f fuji/*.lo -rm -f gsmart300/*.$(OBJEXT) -rm -f gsmart300/*.lo -rm -f hp215/*.$(OBJEXT) -rm -f hp215/*.lo -rm -f iclick/*.$(OBJEXT) -rm -f iclick/*.lo -rm -f jamcam/*.$(OBJEXT) -rm -f jamcam/*.lo -rm -f jd11/*.$(OBJEXT) -rm -f jd11/*.lo -rm -f jl2005a/*.$(OBJEXT) -rm -f jl2005a/*.lo -rm -f jl2005c/*.$(OBJEXT) -rm -f jl2005c/*.lo -rm -f kodak/dc120/*.$(OBJEXT) -rm -f kodak/dc120/*.lo -rm -f kodak/dc210/*.$(OBJEXT) -rm -f kodak/dc210/*.lo -rm -f kodak/dc240/*.$(OBJEXT) -rm -f kodak/dc240/*.lo -rm -f kodak/dc3200/*.$(OBJEXT) -rm -f kodak/dc3200/*.lo -rm -f kodak/ez200/*.$(OBJEXT) -rm -f kodak/ez200/*.lo -rm -f konica/*.$(OBJEXT) -rm -f konica/*.lo -rm -f largan/lmini/*.$(OBJEXT) -rm -f largan/lmini/*.lo -rm -f lg_gsm/*.$(OBJEXT) -rm -f lg_gsm/*.lo -rm -f mars/*.$(OBJEXT) -rm -f mars/*.lo -rm -f minolta/dimagev/*.$(OBJEXT) -rm -f minolta/dimagev/*.lo -rm -f mustek/*.$(OBJEXT) -rm -f mustek/*.lo -rm -f panasonic/*.$(OBJEXT) -rm -f panasonic/*.lo -rm -f panasonic/coolshot/*.$(OBJEXT) -rm -f panasonic/coolshot/*.lo -rm -f panasonic/l859/*.$(OBJEXT) -rm -f panasonic/l859/*.lo -rm -f pccam300/*.$(OBJEXT) -rm -f pccam300/*.lo -rm -f pccam600/*.$(OBJEXT) -rm -f pccam600/*.lo -rm -f pentax/*.$(OBJEXT) -rm -f pentax/*.lo -rm -f polaroid/*.$(OBJEXT) -rm -f polaroid/*.lo -rm -f ptp2/*.$(OBJEXT) -rm -f ptp2/*.lo -rm -f ricoh/*.$(OBJEXT) -rm -f ricoh/*.lo -rm -f samsung/*.$(OBJEXT) -rm -f samsung/*.lo -rm -f sierra/*.$(OBJEXT) -rm -f sierra/*.lo -rm -f sipix/*.$(OBJEXT) -rm -f sipix/*.lo -rm -f smal/*.$(OBJEXT) -rm -f smal/*.lo -rm -f sonix/*.$(OBJEXT) -rm -f sonix/*.lo -rm -f sonydscf1/*.$(OBJEXT) -rm -f sonydscf1/*.lo -rm -f sonydscf55/*.$(OBJEXT) -rm -f sonydscf55/*.lo -rm -f soundvision/*.$(OBJEXT) -rm -f soundvision/*.lo -rm -f spca50x/*.$(OBJEXT) -rm -f spca50x/*.lo -rm -f sq905/*.$(OBJEXT) -rm -f sq905/*.lo -rm -f st2205/*.$(OBJEXT) -rm -f st2205/*.lo -rm -f stv0674/*.$(OBJEXT) -rm -f stv0674/*.lo -rm -f stv0680/*.$(OBJEXT) -rm -f stv0680/*.lo -rm -f sx330z/*.$(OBJEXT) -rm -f sx330z/*.lo -rm -f template/*.$(OBJEXT) -rm -f template/*.lo -rm -f topfield/*.$(OBJEXT) -rm -f topfield/*.lo -rm -f toshiba/pdrm11/*.$(OBJEXT) -rm -f toshiba/pdrm11/*.lo -rm -f tp6801/*.$(OBJEXT) -rm -f tp6801/*.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@adc65/$(DEPDIR)/adc65.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@agfa-cl20/$(DEPDIR)/agfa_cl20.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aox/$(DEPDIR)/aox.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@aox/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ax203/$(DEPDIR)/ax203_la-ax203.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ax203/$(DEPDIR)/ax203_la-ax203_compress_jpeg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ax203/$(DEPDIR)/ax203_la-ax203_decode_yuv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ax203/$(DEPDIR)/ax203_la-ax203_decode_yuv_delta.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ax203/$(DEPDIR)/ax203_la-jidctflt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ax203/$(DEPDIR)/ax203_la-jpeg_memsrcdest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ax203/$(DEPDIR)/ax203_la-library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ax203/$(DEPDIR)/ax203_la-tinyjpeg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@barbie/$(DEPDIR)/barbie.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@canon/$(DEPDIR)/canon_la-canon.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@canon/$(DEPDIR)/canon_la-crc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@canon/$(DEPDIR)/canon_la-library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@canon/$(DEPDIR)/canon_la-serial.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@canon/$(DEPDIR)/canon_la-usb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@canon/$(DEPDIR)/canon_la-util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@casio/$(DEPDIR)/camtojpeg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@casio/$(DEPDIR)/casio-qv-commands.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@casio/$(DEPDIR)/casio-qv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@casio/$(DEPDIR)/ycctoppm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@clicksmart310/$(DEPDIR)/clicksmart.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@clicksmart310/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@digigr8/$(DEPDIR)/digi_postprocess.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@digigr8/$(DEPDIR)/digigr8.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@digigr8/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@digita/$(DEPDIR)/commands.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@digita/$(DEPDIR)/digita.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@digita/$(DEPDIR)/serial.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@digita/$(DEPDIR)/usb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@dimera/$(DEPDIR)/dimera3500.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@dimera/$(DEPDIR)/mesalib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@directory/$(DEPDIR)/directory_la-directory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@enigma13/$(DEPDIR)/enigma13.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@fuji/$(DEPDIR)/fuji.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@fuji/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gsmart300/$(DEPDIR)/gsmart300.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gsmart300/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@hp215/$(DEPDIR)/hp215.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@iclick/$(DEPDIR)/iclick.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@iclick/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jamcam/$(DEPDIR)/jamcam.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jamcam/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jd11/$(DEPDIR)/decomp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jd11/$(DEPDIR)/jd11.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jd11/$(DEPDIR)/serial.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jl2005a/$(DEPDIR)/jl2005a.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jl2005a/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jl2005c/$(DEPDIR)/img_enhance.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jl2005c/$(DEPDIR)/jl2005bcd_decompress.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jl2005c/$(DEPDIR)/jl2005c.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jl2005c/$(DEPDIR)/jpeg_memsrcdest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@jl2005c/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@kodak/dc120/$(DEPDIR)/dc120.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@kodak/dc120/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@kodak/dc210/$(DEPDIR)/dc210.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@kodak/dc210/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@kodak/dc240/$(DEPDIR)/dc240.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@kodak/dc240/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@kodak/dc3200/$(DEPDIR)/dc3200.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@kodak/dc3200/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@kodak/ez200/$(DEPDIR)/ez200.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@konica/$(DEPDIR)/konica_la-konica.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@konica/$(DEPDIR)/konica_la-library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@konica/$(DEPDIR)/konica_la-lowlevel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@konica/$(DEPDIR)/konica_qm150_la-qm150.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@largan/lmini/$(DEPDIR)/largan.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@largan/lmini/$(DEPDIR)/lmini.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@largan/lmini/$(DEPDIR)/lmini_ccd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lg_gsm/$(DEPDIR)/lg_gsm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lg_gsm/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mars/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mars/$(DEPDIR)/mars.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@minolta/dimagev/$(DEPDIR)/capture.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@minolta/dimagev/$(DEPDIR)/data.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@minolta/dimagev/$(DEPDIR)/delete.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@minolta/dimagev/$(DEPDIR)/dimagev.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@minolta/dimagev/$(DEPDIR)/download.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@minolta/dimagev/$(DEPDIR)/info.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@minolta/dimagev/$(DEPDIR)/packet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@minolta/dimagev/$(DEPDIR)/status.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@minolta/dimagev/$(DEPDIR)/upload.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@minolta/dimagev/$(DEPDIR)/util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mustek/$(DEPDIR)/core.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mustek/$(DEPDIR)/image.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mustek/$(DEPDIR)/io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mustek/$(DEPDIR)/mdc800.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mustek/$(DEPDIR)/rs232.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@mustek/$(DEPDIR)/usb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@panasonic/$(DEPDIR)/dc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@panasonic/$(DEPDIR)/dc1000.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@panasonic/$(DEPDIR)/dc1580.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@panasonic/coolshot/$(DEPDIR)/coolshot.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@panasonic/coolshot/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@panasonic/l859/$(DEPDIR)/l859.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pccam300/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pccam300/$(DEPDIR)/pccam300.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pccam600/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pccam600/$(DEPDIR)/pccam600.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pentax/$(DEPDIR)/pentax_la-library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@pentax/$(DEPDIR)/pentax_la-pslr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@polaroid/$(DEPDIR)/dlink350f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@polaroid/$(DEPDIR)/jd350e.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@polaroid/$(DEPDIR)/pdc320.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@polaroid/$(DEPDIR)/pdc640.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@polaroid/$(DEPDIR)/pdc700.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ptp2/$(DEPDIR)/ptp2_la-chdk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ptp2/$(DEPDIR)/ptp2_la-config.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ptp2/$(DEPDIR)/ptp2_la-library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ptp2/$(DEPDIR)/ptp2_la-olympus-wrap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ptp2/$(DEPDIR)/ptp2_la-ptp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ptp2/$(DEPDIR)/ptp2_la-ptpip.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ptp2/$(DEPDIR)/ptp2_la-usb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ricoh/$(DEPDIR)/g3.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ricoh/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ricoh/$(DEPDIR)/ricoh.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@samsung/$(DEPDIR)/samsung.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sierra/$(DEPDIR)/sierra_la-epson-desc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sierra/$(DEPDIR)/sierra_la-library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sierra/$(DEPDIR)/sierra_la-nikon-desc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sierra/$(DEPDIR)/sierra_la-olympus-desc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sierra/$(DEPDIR)/sierra_la-sierra-desc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sierra/$(DEPDIR)/sierra_la-sierra-usbwrap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sierra/$(DEPDIR)/sierra_la-sierra.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sipix/$(DEPDIR)/blink.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sipix/$(DEPDIR)/blink2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sipix/$(DEPDIR)/web2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@smal/$(DEPDIR)/smal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@smal/$(DEPDIR)/ultrapocket.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sonix/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sonix/$(DEPDIR)/sonix.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sonydscf1/$(DEPDIR)/command.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sonydscf1/$(DEPDIR)/sonydscf1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sonydscf55/$(DEPDIR)/camera.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sonydscf55/$(DEPDIR)/sony.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@soundvision/$(DEPDIR)/agfa_cl18.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@soundvision/$(DEPDIR)/commands.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@soundvision/$(DEPDIR)/soundvision.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@soundvision/$(DEPDIR)/tiger_fastflicks.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@spca50x/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@spca50x/$(DEPDIR)/spca50x-flash.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@spca50x/$(DEPDIR)/spca50x-sdram.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@spca50x/$(DEPDIR)/spca50x.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sq905/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sq905/$(DEPDIR)/postprocess.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sq905/$(DEPDIR)/sq905.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@st2205/$(DEPDIR)/st2205_la-library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@st2205/$(DEPDIR)/st2205_la-st2205.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@st2205/$(DEPDIR)/st2205_la-st2205_decode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@st2205/$(DEPDIR)/st2205_la-st2205_tables.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@stv0674/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@stv0674/$(DEPDIR)/stv0674.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@stv0680/$(DEPDIR)/bayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@stv0680/$(DEPDIR)/demosaic_sharpen.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@stv0680/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@stv0680/$(DEPDIR)/saturate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@stv0680/$(DEPDIR)/sharpen.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@stv0680/$(DEPDIR)/stv0680.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sx330z/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@sx330z/$(DEPDIR)/sx330z.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@template/$(DEPDIR)/template_la-template.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@topfield/$(DEPDIR)/crc16.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@topfield/$(DEPDIR)/mjd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@topfield/$(DEPDIR)/puppy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@topfield/$(DEPDIR)/tf_bytes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@topfield/$(DEPDIR)/usb_io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@toshiba/pdrm11/$(DEPDIR)/library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@toshiba/pdrm11/$(DEPDIR)/pdrm11.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tp6801/$(DEPDIR)/tp6801_la-library.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tp6801/$(DEPDIR)/tp6801_la-tp6801.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< ax203/ax203_la-library.lo: ax203/library.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -MT ax203/ax203_la-library.lo -MD -MP -MF ax203/$(DEPDIR)/ax203_la-library.Tpo -c -o ax203/ax203_la-library.lo `test -f 'ax203/library.c' || echo '$(srcdir)/'`ax203/library.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ax203/$(DEPDIR)/ax203_la-library.Tpo ax203/$(DEPDIR)/ax203_la-library.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ax203/library.c' object='ax203/ax203_la-library.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -c -o ax203/ax203_la-library.lo `test -f 'ax203/library.c' || echo '$(srcdir)/'`ax203/library.c ax203/ax203_la-ax203.lo: ax203/ax203.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -MT ax203/ax203_la-ax203.lo -MD -MP -MF ax203/$(DEPDIR)/ax203_la-ax203.Tpo -c -o ax203/ax203_la-ax203.lo `test -f 'ax203/ax203.c' || echo '$(srcdir)/'`ax203/ax203.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ax203/$(DEPDIR)/ax203_la-ax203.Tpo ax203/$(DEPDIR)/ax203_la-ax203.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ax203/ax203.c' object='ax203/ax203_la-ax203.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -c -o ax203/ax203_la-ax203.lo `test -f 'ax203/ax203.c' || echo '$(srcdir)/'`ax203/ax203.c ax203/ax203_la-ax203_decode_yuv.lo: ax203/ax203_decode_yuv.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -MT ax203/ax203_la-ax203_decode_yuv.lo -MD -MP -MF ax203/$(DEPDIR)/ax203_la-ax203_decode_yuv.Tpo -c -o ax203/ax203_la-ax203_decode_yuv.lo `test -f 'ax203/ax203_decode_yuv.c' || echo '$(srcdir)/'`ax203/ax203_decode_yuv.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ax203/$(DEPDIR)/ax203_la-ax203_decode_yuv.Tpo ax203/$(DEPDIR)/ax203_la-ax203_decode_yuv.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ax203/ax203_decode_yuv.c' object='ax203/ax203_la-ax203_decode_yuv.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -c -o ax203/ax203_la-ax203_decode_yuv.lo `test -f 'ax203/ax203_decode_yuv.c' || echo '$(srcdir)/'`ax203/ax203_decode_yuv.c ax203/ax203_la-ax203_decode_yuv_delta.lo: ax203/ax203_decode_yuv_delta.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -MT ax203/ax203_la-ax203_decode_yuv_delta.lo -MD -MP -MF ax203/$(DEPDIR)/ax203_la-ax203_decode_yuv_delta.Tpo -c -o ax203/ax203_la-ax203_decode_yuv_delta.lo `test -f 'ax203/ax203_decode_yuv_delta.c' || echo '$(srcdir)/'`ax203/ax203_decode_yuv_delta.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ax203/$(DEPDIR)/ax203_la-ax203_decode_yuv_delta.Tpo ax203/$(DEPDIR)/ax203_la-ax203_decode_yuv_delta.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ax203/ax203_decode_yuv_delta.c' object='ax203/ax203_la-ax203_decode_yuv_delta.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -c -o ax203/ax203_la-ax203_decode_yuv_delta.lo `test -f 'ax203/ax203_decode_yuv_delta.c' || echo '$(srcdir)/'`ax203/ax203_decode_yuv_delta.c ax203/ax203_la-ax203_compress_jpeg.lo: ax203/ax203_compress_jpeg.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -MT ax203/ax203_la-ax203_compress_jpeg.lo -MD -MP -MF ax203/$(DEPDIR)/ax203_la-ax203_compress_jpeg.Tpo -c -o ax203/ax203_la-ax203_compress_jpeg.lo `test -f 'ax203/ax203_compress_jpeg.c' || echo '$(srcdir)/'`ax203/ax203_compress_jpeg.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ax203/$(DEPDIR)/ax203_la-ax203_compress_jpeg.Tpo ax203/$(DEPDIR)/ax203_la-ax203_compress_jpeg.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ax203/ax203_compress_jpeg.c' object='ax203/ax203_la-ax203_compress_jpeg.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -c -o ax203/ax203_la-ax203_compress_jpeg.lo `test -f 'ax203/ax203_compress_jpeg.c' || echo '$(srcdir)/'`ax203/ax203_compress_jpeg.c ax203/ax203_la-jpeg_memsrcdest.lo: ax203/jpeg_memsrcdest.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -MT ax203/ax203_la-jpeg_memsrcdest.lo -MD -MP -MF ax203/$(DEPDIR)/ax203_la-jpeg_memsrcdest.Tpo -c -o ax203/ax203_la-jpeg_memsrcdest.lo `test -f 'ax203/jpeg_memsrcdest.c' || echo '$(srcdir)/'`ax203/jpeg_memsrcdest.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ax203/$(DEPDIR)/ax203_la-jpeg_memsrcdest.Tpo ax203/$(DEPDIR)/ax203_la-jpeg_memsrcdest.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ax203/jpeg_memsrcdest.c' object='ax203/ax203_la-jpeg_memsrcdest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -c -o ax203/ax203_la-jpeg_memsrcdest.lo `test -f 'ax203/jpeg_memsrcdest.c' || echo '$(srcdir)/'`ax203/jpeg_memsrcdest.c ax203/ax203_la-tinyjpeg.lo: ax203/tinyjpeg.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -MT ax203/ax203_la-tinyjpeg.lo -MD -MP -MF ax203/$(DEPDIR)/ax203_la-tinyjpeg.Tpo -c -o ax203/ax203_la-tinyjpeg.lo `test -f 'ax203/tinyjpeg.c' || echo '$(srcdir)/'`ax203/tinyjpeg.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ax203/$(DEPDIR)/ax203_la-tinyjpeg.Tpo ax203/$(DEPDIR)/ax203_la-tinyjpeg.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ax203/tinyjpeg.c' object='ax203/ax203_la-tinyjpeg.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -c -o ax203/ax203_la-tinyjpeg.lo `test -f 'ax203/tinyjpeg.c' || echo '$(srcdir)/'`ax203/tinyjpeg.c ax203/ax203_la-jidctflt.lo: ax203/jidctflt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -MT ax203/ax203_la-jidctflt.lo -MD -MP -MF ax203/$(DEPDIR)/ax203_la-jidctflt.Tpo -c -o ax203/ax203_la-jidctflt.lo `test -f 'ax203/jidctflt.c' || echo '$(srcdir)/'`ax203/jidctflt.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ax203/$(DEPDIR)/ax203_la-jidctflt.Tpo ax203/$(DEPDIR)/ax203_la-jidctflt.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ax203/jidctflt.c' object='ax203/ax203_la-jidctflt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ax203_la_CFLAGS) $(CFLAGS) -c -o ax203/ax203_la-jidctflt.lo `test -f 'ax203/jidctflt.c' || echo '$(srcdir)/'`ax203/jidctflt.c canon/canon_la-canon.lo: canon/canon.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT canon/canon_la-canon.lo -MD -MP -MF canon/$(DEPDIR)/canon_la-canon.Tpo -c -o canon/canon_la-canon.lo `test -f 'canon/canon.c' || echo '$(srcdir)/'`canon/canon.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) canon/$(DEPDIR)/canon_la-canon.Tpo canon/$(DEPDIR)/canon_la-canon.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon/canon.c' object='canon/canon_la-canon.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o canon/canon_la-canon.lo `test -f 'canon/canon.c' || echo '$(srcdir)/'`canon/canon.c canon/canon_la-library.lo: canon/library.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT canon/canon_la-library.lo -MD -MP -MF canon/$(DEPDIR)/canon_la-library.Tpo -c -o canon/canon_la-library.lo `test -f 'canon/library.c' || echo '$(srcdir)/'`canon/library.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) canon/$(DEPDIR)/canon_la-library.Tpo canon/$(DEPDIR)/canon_la-library.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon/library.c' object='canon/canon_la-library.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o canon/canon_la-library.lo `test -f 'canon/library.c' || echo '$(srcdir)/'`canon/library.c canon/canon_la-serial.lo: canon/serial.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT canon/canon_la-serial.lo -MD -MP -MF canon/$(DEPDIR)/canon_la-serial.Tpo -c -o canon/canon_la-serial.lo `test -f 'canon/serial.c' || echo '$(srcdir)/'`canon/serial.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) canon/$(DEPDIR)/canon_la-serial.Tpo canon/$(DEPDIR)/canon_la-serial.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon/serial.c' object='canon/canon_la-serial.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o canon/canon_la-serial.lo `test -f 'canon/serial.c' || echo '$(srcdir)/'`canon/serial.c canon/canon_la-usb.lo: canon/usb.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT canon/canon_la-usb.lo -MD -MP -MF canon/$(DEPDIR)/canon_la-usb.Tpo -c -o canon/canon_la-usb.lo `test -f 'canon/usb.c' || echo '$(srcdir)/'`canon/usb.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) canon/$(DEPDIR)/canon_la-usb.Tpo canon/$(DEPDIR)/canon_la-usb.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon/usb.c' object='canon/canon_la-usb.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o canon/canon_la-usb.lo `test -f 'canon/usb.c' || echo '$(srcdir)/'`canon/usb.c canon/canon_la-crc.lo: canon/crc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT canon/canon_la-crc.lo -MD -MP -MF canon/$(DEPDIR)/canon_la-crc.Tpo -c -o canon/canon_la-crc.lo `test -f 'canon/crc.c' || echo '$(srcdir)/'`canon/crc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) canon/$(DEPDIR)/canon_la-crc.Tpo canon/$(DEPDIR)/canon_la-crc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon/crc.c' object='canon/canon_la-crc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o canon/canon_la-crc.lo `test -f 'canon/crc.c' || echo '$(srcdir)/'`canon/crc.c canon/canon_la-util.lo: canon/util.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT canon/canon_la-util.lo -MD -MP -MF canon/$(DEPDIR)/canon_la-util.Tpo -c -o canon/canon_la-util.lo `test -f 'canon/util.c' || echo '$(srcdir)/'`canon/util.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) canon/$(DEPDIR)/canon_la-util.Tpo canon/$(DEPDIR)/canon_la-util.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='canon/util.c' object='canon/canon_la-util.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(canon_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o canon/canon_la-util.lo `test -f 'canon/util.c' || echo '$(srcdir)/'`canon/util.c directory/directory_la-directory.lo: directory/directory.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(directory_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT directory/directory_la-directory.lo -MD -MP -MF directory/$(DEPDIR)/directory_la-directory.Tpo -c -o directory/directory_la-directory.lo `test -f 'directory/directory.c' || echo '$(srcdir)/'`directory/directory.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) directory/$(DEPDIR)/directory_la-directory.Tpo directory/$(DEPDIR)/directory_la-directory.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='directory/directory.c' object='directory/directory_la-directory.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(directory_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o directory/directory_la-directory.lo `test -f 'directory/directory.c' || echo '$(srcdir)/'`directory/directory.c konica/konica_la-lowlevel.lo: konica/lowlevel.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(konica_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT konica/konica_la-lowlevel.lo -MD -MP -MF konica/$(DEPDIR)/konica_la-lowlevel.Tpo -c -o konica/konica_la-lowlevel.lo `test -f 'konica/lowlevel.c' || echo '$(srcdir)/'`konica/lowlevel.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) konica/$(DEPDIR)/konica_la-lowlevel.Tpo konica/$(DEPDIR)/konica_la-lowlevel.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='konica/lowlevel.c' object='konica/konica_la-lowlevel.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(konica_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o konica/konica_la-lowlevel.lo `test -f 'konica/lowlevel.c' || echo '$(srcdir)/'`konica/lowlevel.c konica/konica_la-konica.lo: konica/konica.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(konica_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT konica/konica_la-konica.lo -MD -MP -MF konica/$(DEPDIR)/konica_la-konica.Tpo -c -o konica/konica_la-konica.lo `test -f 'konica/konica.c' || echo '$(srcdir)/'`konica/konica.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) konica/$(DEPDIR)/konica_la-konica.Tpo konica/$(DEPDIR)/konica_la-konica.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='konica/konica.c' object='konica/konica_la-konica.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(konica_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o konica/konica_la-konica.lo `test -f 'konica/konica.c' || echo '$(srcdir)/'`konica/konica.c konica/konica_la-library.lo: konica/library.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(konica_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT konica/konica_la-library.lo -MD -MP -MF konica/$(DEPDIR)/konica_la-library.Tpo -c -o konica/konica_la-library.lo `test -f 'konica/library.c' || echo '$(srcdir)/'`konica/library.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) konica/$(DEPDIR)/konica_la-library.Tpo konica/$(DEPDIR)/konica_la-library.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='konica/library.c' object='konica/konica_la-library.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(konica_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o konica/konica_la-library.lo `test -f 'konica/library.c' || echo '$(srcdir)/'`konica/library.c konica/konica_qm150_la-qm150.lo: konica/qm150.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(konica_qm150_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT konica/konica_qm150_la-qm150.lo -MD -MP -MF konica/$(DEPDIR)/konica_qm150_la-qm150.Tpo -c -o konica/konica_qm150_la-qm150.lo `test -f 'konica/qm150.c' || echo '$(srcdir)/'`konica/qm150.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) konica/$(DEPDIR)/konica_qm150_la-qm150.Tpo konica/$(DEPDIR)/konica_qm150_la-qm150.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='konica/qm150.c' object='konica/konica_qm150_la-qm150.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(konica_qm150_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o konica/konica_qm150_la-qm150.lo `test -f 'konica/qm150.c' || echo '$(srcdir)/'`konica/qm150.c pentax/pentax_la-pslr.lo: pentax/pslr.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pentax_la_CFLAGS) $(CFLAGS) -MT pentax/pentax_la-pslr.lo -MD -MP -MF pentax/$(DEPDIR)/pentax_la-pslr.Tpo -c -o pentax/pentax_la-pslr.lo `test -f 'pentax/pslr.c' || echo '$(srcdir)/'`pentax/pslr.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pentax/$(DEPDIR)/pentax_la-pslr.Tpo pentax/$(DEPDIR)/pentax_la-pslr.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pentax/pslr.c' object='pentax/pentax_la-pslr.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pentax_la_CFLAGS) $(CFLAGS) -c -o pentax/pentax_la-pslr.lo `test -f 'pentax/pslr.c' || echo '$(srcdir)/'`pentax/pslr.c pentax/pentax_la-library.lo: pentax/library.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pentax_la_CFLAGS) $(CFLAGS) -MT pentax/pentax_la-library.lo -MD -MP -MF pentax/$(DEPDIR)/pentax_la-library.Tpo -c -o pentax/pentax_la-library.lo `test -f 'pentax/library.c' || echo '$(srcdir)/'`pentax/library.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pentax/$(DEPDIR)/pentax_la-library.Tpo pentax/$(DEPDIR)/pentax_la-library.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pentax/library.c' object='pentax/pentax_la-library.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pentax_la_CFLAGS) $(CFLAGS) -c -o pentax/pentax_la-library.lo `test -f 'pentax/library.c' || echo '$(srcdir)/'`pentax/library.c ptp2/ptp2_la-ptp.lo: ptp2/ptp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -MT ptp2/ptp2_la-ptp.lo -MD -MP -MF ptp2/$(DEPDIR)/ptp2_la-ptp.Tpo -c -o ptp2/ptp2_la-ptp.lo `test -f 'ptp2/ptp.c' || echo '$(srcdir)/'`ptp2/ptp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ptp2/$(DEPDIR)/ptp2_la-ptp.Tpo ptp2/$(DEPDIR)/ptp2_la-ptp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ptp2/ptp.c' object='ptp2/ptp2_la-ptp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -c -o ptp2/ptp2_la-ptp.lo `test -f 'ptp2/ptp.c' || echo '$(srcdir)/'`ptp2/ptp.c ptp2/ptp2_la-library.lo: ptp2/library.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -MT ptp2/ptp2_la-library.lo -MD -MP -MF ptp2/$(DEPDIR)/ptp2_la-library.Tpo -c -o ptp2/ptp2_la-library.lo `test -f 'ptp2/library.c' || echo '$(srcdir)/'`ptp2/library.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ptp2/$(DEPDIR)/ptp2_la-library.Tpo ptp2/$(DEPDIR)/ptp2_la-library.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ptp2/library.c' object='ptp2/ptp2_la-library.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -c -o ptp2/ptp2_la-library.lo `test -f 'ptp2/library.c' || echo '$(srcdir)/'`ptp2/library.c ptp2/ptp2_la-usb.lo: ptp2/usb.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -MT ptp2/ptp2_la-usb.lo -MD -MP -MF ptp2/$(DEPDIR)/ptp2_la-usb.Tpo -c -o ptp2/ptp2_la-usb.lo `test -f 'ptp2/usb.c' || echo '$(srcdir)/'`ptp2/usb.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ptp2/$(DEPDIR)/ptp2_la-usb.Tpo ptp2/$(DEPDIR)/ptp2_la-usb.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ptp2/usb.c' object='ptp2/ptp2_la-usb.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -c -o ptp2/ptp2_la-usb.lo `test -f 'ptp2/usb.c' || echo '$(srcdir)/'`ptp2/usb.c ptp2/ptp2_la-ptpip.lo: ptp2/ptpip.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -MT ptp2/ptp2_la-ptpip.lo -MD -MP -MF ptp2/$(DEPDIR)/ptp2_la-ptpip.Tpo -c -o ptp2/ptp2_la-ptpip.lo `test -f 'ptp2/ptpip.c' || echo '$(srcdir)/'`ptp2/ptpip.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ptp2/$(DEPDIR)/ptp2_la-ptpip.Tpo ptp2/$(DEPDIR)/ptp2_la-ptpip.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ptp2/ptpip.c' object='ptp2/ptp2_la-ptpip.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -c -o ptp2/ptp2_la-ptpip.lo `test -f 'ptp2/ptpip.c' || echo '$(srcdir)/'`ptp2/ptpip.c ptp2/ptp2_la-config.lo: ptp2/config.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -MT ptp2/ptp2_la-config.lo -MD -MP -MF ptp2/$(DEPDIR)/ptp2_la-config.Tpo -c -o ptp2/ptp2_la-config.lo `test -f 'ptp2/config.c' || echo '$(srcdir)/'`ptp2/config.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ptp2/$(DEPDIR)/ptp2_la-config.Tpo ptp2/$(DEPDIR)/ptp2_la-config.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ptp2/config.c' object='ptp2/ptp2_la-config.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -c -o ptp2/ptp2_la-config.lo `test -f 'ptp2/config.c' || echo '$(srcdir)/'`ptp2/config.c ptp2/ptp2_la-olympus-wrap.lo: ptp2/olympus-wrap.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -MT ptp2/ptp2_la-olympus-wrap.lo -MD -MP -MF ptp2/$(DEPDIR)/ptp2_la-olympus-wrap.Tpo -c -o ptp2/ptp2_la-olympus-wrap.lo `test -f 'ptp2/olympus-wrap.c' || echo '$(srcdir)/'`ptp2/olympus-wrap.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ptp2/$(DEPDIR)/ptp2_la-olympus-wrap.Tpo ptp2/$(DEPDIR)/ptp2_la-olympus-wrap.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ptp2/olympus-wrap.c' object='ptp2/ptp2_la-olympus-wrap.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -c -o ptp2/ptp2_la-olympus-wrap.lo `test -f 'ptp2/olympus-wrap.c' || echo '$(srcdir)/'`ptp2/olympus-wrap.c ptp2/ptp2_la-chdk.lo: ptp2/chdk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -MT ptp2/ptp2_la-chdk.lo -MD -MP -MF ptp2/$(DEPDIR)/ptp2_la-chdk.Tpo -c -o ptp2/ptp2_la-chdk.lo `test -f 'ptp2/chdk.c' || echo '$(srcdir)/'`ptp2/chdk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ptp2/$(DEPDIR)/ptp2_la-chdk.Tpo ptp2/$(DEPDIR)/ptp2_la-chdk.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ptp2/chdk.c' object='ptp2/ptp2_la-chdk.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptp2_la_CPPFLAGS) $(CPPFLAGS) $(ptp2_la_CFLAGS) $(CFLAGS) -c -o ptp2/ptp2_la-chdk.lo `test -f 'ptp2/chdk.c' || echo '$(srcdir)/'`ptp2/chdk.c sierra/sierra_la-sierra.lo: sierra/sierra.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sierra/sierra_la-sierra.lo -MD -MP -MF sierra/$(DEPDIR)/sierra_la-sierra.Tpo -c -o sierra/sierra_la-sierra.lo `test -f 'sierra/sierra.c' || echo '$(srcdir)/'`sierra/sierra.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sierra/$(DEPDIR)/sierra_la-sierra.Tpo sierra/$(DEPDIR)/sierra_la-sierra.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sierra/sierra.c' object='sierra/sierra_la-sierra.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sierra/sierra_la-sierra.lo `test -f 'sierra/sierra.c' || echo '$(srcdir)/'`sierra/sierra.c sierra/sierra_la-library.lo: sierra/library.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sierra/sierra_la-library.lo -MD -MP -MF sierra/$(DEPDIR)/sierra_la-library.Tpo -c -o sierra/sierra_la-library.lo `test -f 'sierra/library.c' || echo '$(srcdir)/'`sierra/library.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sierra/$(DEPDIR)/sierra_la-library.Tpo sierra/$(DEPDIR)/sierra_la-library.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sierra/library.c' object='sierra/sierra_la-library.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sierra/sierra_la-library.lo `test -f 'sierra/library.c' || echo '$(srcdir)/'`sierra/library.c sierra/sierra_la-sierra-usbwrap.lo: sierra/sierra-usbwrap.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sierra/sierra_la-sierra-usbwrap.lo -MD -MP -MF sierra/$(DEPDIR)/sierra_la-sierra-usbwrap.Tpo -c -o sierra/sierra_la-sierra-usbwrap.lo `test -f 'sierra/sierra-usbwrap.c' || echo '$(srcdir)/'`sierra/sierra-usbwrap.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sierra/$(DEPDIR)/sierra_la-sierra-usbwrap.Tpo sierra/$(DEPDIR)/sierra_la-sierra-usbwrap.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sierra/sierra-usbwrap.c' object='sierra/sierra_la-sierra-usbwrap.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sierra/sierra_la-sierra-usbwrap.lo `test -f 'sierra/sierra-usbwrap.c' || echo '$(srcdir)/'`sierra/sierra-usbwrap.c sierra/sierra_la-sierra-desc.lo: sierra/sierra-desc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sierra/sierra_la-sierra-desc.lo -MD -MP -MF sierra/$(DEPDIR)/sierra_la-sierra-desc.Tpo -c -o sierra/sierra_la-sierra-desc.lo `test -f 'sierra/sierra-desc.c' || echo '$(srcdir)/'`sierra/sierra-desc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sierra/$(DEPDIR)/sierra_la-sierra-desc.Tpo sierra/$(DEPDIR)/sierra_la-sierra-desc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sierra/sierra-desc.c' object='sierra/sierra_la-sierra-desc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sierra/sierra_la-sierra-desc.lo `test -f 'sierra/sierra-desc.c' || echo '$(srcdir)/'`sierra/sierra-desc.c sierra/sierra_la-nikon-desc.lo: sierra/nikon-desc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sierra/sierra_la-nikon-desc.lo -MD -MP -MF sierra/$(DEPDIR)/sierra_la-nikon-desc.Tpo -c -o sierra/sierra_la-nikon-desc.lo `test -f 'sierra/nikon-desc.c' || echo '$(srcdir)/'`sierra/nikon-desc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sierra/$(DEPDIR)/sierra_la-nikon-desc.Tpo sierra/$(DEPDIR)/sierra_la-nikon-desc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sierra/nikon-desc.c' object='sierra/sierra_la-nikon-desc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sierra/sierra_la-nikon-desc.lo `test -f 'sierra/nikon-desc.c' || echo '$(srcdir)/'`sierra/nikon-desc.c sierra/sierra_la-olympus-desc.lo: sierra/olympus-desc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sierra/sierra_la-olympus-desc.lo -MD -MP -MF sierra/$(DEPDIR)/sierra_la-olympus-desc.Tpo -c -o sierra/sierra_la-olympus-desc.lo `test -f 'sierra/olympus-desc.c' || echo '$(srcdir)/'`sierra/olympus-desc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sierra/$(DEPDIR)/sierra_la-olympus-desc.Tpo sierra/$(DEPDIR)/sierra_la-olympus-desc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sierra/olympus-desc.c' object='sierra/sierra_la-olympus-desc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sierra/sierra_la-olympus-desc.lo `test -f 'sierra/olympus-desc.c' || echo '$(srcdir)/'`sierra/olympus-desc.c sierra/sierra_la-epson-desc.lo: sierra/epson-desc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sierra/sierra_la-epson-desc.lo -MD -MP -MF sierra/$(DEPDIR)/sierra_la-epson-desc.Tpo -c -o sierra/sierra_la-epson-desc.lo `test -f 'sierra/epson-desc.c' || echo '$(srcdir)/'`sierra/epson-desc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) sierra/$(DEPDIR)/sierra_la-epson-desc.Tpo sierra/$(DEPDIR)/sierra_la-epson-desc.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sierra/epson-desc.c' object='sierra/sierra_la-epson-desc.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(sierra_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sierra/sierra_la-epson-desc.lo `test -f 'sierra/epson-desc.c' || echo '$(srcdir)/'`sierra/epson-desc.c st2205/st2205_la-library.lo: st2205/library.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(st2205_la_CFLAGS) $(CFLAGS) -MT st2205/st2205_la-library.lo -MD -MP -MF st2205/$(DEPDIR)/st2205_la-library.Tpo -c -o st2205/st2205_la-library.lo `test -f 'st2205/library.c' || echo '$(srcdir)/'`st2205/library.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) st2205/$(DEPDIR)/st2205_la-library.Tpo st2205/$(DEPDIR)/st2205_la-library.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='st2205/library.c' object='st2205/st2205_la-library.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(st2205_la_CFLAGS) $(CFLAGS) -c -o st2205/st2205_la-library.lo `test -f 'st2205/library.c' || echo '$(srcdir)/'`st2205/library.c st2205/st2205_la-st2205.lo: st2205/st2205.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(st2205_la_CFLAGS) $(CFLAGS) -MT st2205/st2205_la-st2205.lo -MD -MP -MF st2205/$(DEPDIR)/st2205_la-st2205.Tpo -c -o st2205/st2205_la-st2205.lo `test -f 'st2205/st2205.c' || echo '$(srcdir)/'`st2205/st2205.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) st2205/$(DEPDIR)/st2205_la-st2205.Tpo st2205/$(DEPDIR)/st2205_la-st2205.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='st2205/st2205.c' object='st2205/st2205_la-st2205.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(st2205_la_CFLAGS) $(CFLAGS) -c -o st2205/st2205_la-st2205.lo `test -f 'st2205/st2205.c' || echo '$(srcdir)/'`st2205/st2205.c st2205/st2205_la-st2205_decode.lo: st2205/st2205_decode.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(st2205_la_CFLAGS) $(CFLAGS) -MT st2205/st2205_la-st2205_decode.lo -MD -MP -MF st2205/$(DEPDIR)/st2205_la-st2205_decode.Tpo -c -o st2205/st2205_la-st2205_decode.lo `test -f 'st2205/st2205_decode.c' || echo '$(srcdir)/'`st2205/st2205_decode.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) st2205/$(DEPDIR)/st2205_la-st2205_decode.Tpo st2205/$(DEPDIR)/st2205_la-st2205_decode.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='st2205/st2205_decode.c' object='st2205/st2205_la-st2205_decode.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(st2205_la_CFLAGS) $(CFLAGS) -c -o st2205/st2205_la-st2205_decode.lo `test -f 'st2205/st2205_decode.c' || echo '$(srcdir)/'`st2205/st2205_decode.c st2205/st2205_la-st2205_tables.lo: st2205/st2205_tables.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(st2205_la_CFLAGS) $(CFLAGS) -MT st2205/st2205_la-st2205_tables.lo -MD -MP -MF st2205/$(DEPDIR)/st2205_la-st2205_tables.Tpo -c -o st2205/st2205_la-st2205_tables.lo `test -f 'st2205/st2205_tables.c' || echo '$(srcdir)/'`st2205/st2205_tables.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) st2205/$(DEPDIR)/st2205_la-st2205_tables.Tpo st2205/$(DEPDIR)/st2205_la-st2205_tables.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='st2205/st2205_tables.c' object='st2205/st2205_la-st2205_tables.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(st2205_la_CFLAGS) $(CFLAGS) -c -o st2205/st2205_la-st2205_tables.lo `test -f 'st2205/st2205_tables.c' || echo '$(srcdir)/'`st2205/st2205_tables.c template/template_la-template.lo: template/template.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(template_la_CFLAGS) $(CFLAGS) -MT template/template_la-template.lo -MD -MP -MF template/$(DEPDIR)/template_la-template.Tpo -c -o template/template_la-template.lo `test -f 'template/template.c' || echo '$(srcdir)/'`template/template.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) template/$(DEPDIR)/template_la-template.Tpo template/$(DEPDIR)/template_la-template.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='template/template.c' object='template/template_la-template.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(template_la_CFLAGS) $(CFLAGS) -c -o template/template_la-template.lo `test -f 'template/template.c' || echo '$(srcdir)/'`template/template.c tp6801/tp6801_la-library.lo: tp6801/library.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tp6801_la_CFLAGS) $(CFLAGS) -MT tp6801/tp6801_la-library.lo -MD -MP -MF tp6801/$(DEPDIR)/tp6801_la-library.Tpo -c -o tp6801/tp6801_la-library.lo `test -f 'tp6801/library.c' || echo '$(srcdir)/'`tp6801/library.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tp6801/$(DEPDIR)/tp6801_la-library.Tpo tp6801/$(DEPDIR)/tp6801_la-library.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tp6801/library.c' object='tp6801/tp6801_la-library.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tp6801_la_CFLAGS) $(CFLAGS) -c -o tp6801/tp6801_la-library.lo `test -f 'tp6801/library.c' || echo '$(srcdir)/'`tp6801/library.c tp6801/tp6801_la-tp6801.lo: tp6801/tp6801.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tp6801_la_CFLAGS) $(CFLAGS) -MT tp6801/tp6801_la-tp6801.lo -MD -MP -MF tp6801/$(DEPDIR)/tp6801_la-tp6801.Tpo -c -o tp6801/tp6801_la-tp6801.lo `test -f 'tp6801/tp6801.c' || echo '$(srcdir)/'`tp6801/tp6801.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tp6801/$(DEPDIR)/tp6801_la-tp6801.Tpo tp6801/$(DEPDIR)/tp6801_la-tp6801.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tp6801/tp6801.c' object='tp6801/tp6801_la-tp6801.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tp6801_la_CFLAGS) $(CFLAGS) -c -o tp6801/tp6801_la-tp6801.lo `test -f 'tp6801/tp6801.c' || echo '$(srcdir)/'`tp6801/tp6801.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf adc65/.libs adc65/_libs -rm -rf agfa-cl20/.libs agfa-cl20/_libs -rm -rf aox/.libs aox/_libs -rm -rf ax203/.libs ax203/_libs -rm -rf barbie/.libs barbie/_libs -rm -rf canon/.libs canon/_libs -rm -rf casio/.libs casio/_libs -rm -rf clicksmart310/.libs clicksmart310/_libs -rm -rf digigr8/.libs digigr8/_libs -rm -rf digita/.libs digita/_libs -rm -rf dimera/.libs dimera/_libs -rm -rf directory/.libs directory/_libs -rm -rf enigma13/.libs enigma13/_libs -rm -rf fuji/.libs fuji/_libs -rm -rf gsmart300/.libs gsmart300/_libs -rm -rf hp215/.libs hp215/_libs -rm -rf iclick/.libs iclick/_libs -rm -rf jamcam/.libs jamcam/_libs -rm -rf jd11/.libs jd11/_libs -rm -rf jl2005a/.libs jl2005a/_libs -rm -rf jl2005c/.libs jl2005c/_libs -rm -rf kodak/dc120/.libs kodak/dc120/_libs -rm -rf kodak/dc210/.libs kodak/dc210/_libs -rm -rf kodak/dc240/.libs kodak/dc240/_libs -rm -rf kodak/dc3200/.libs kodak/dc3200/_libs -rm -rf kodak/ez200/.libs kodak/ez200/_libs -rm -rf konica/.libs konica/_libs -rm -rf largan/lmini/.libs largan/lmini/_libs -rm -rf lg_gsm/.libs lg_gsm/_libs -rm -rf mars/.libs mars/_libs -rm -rf minolta/dimagev/.libs minolta/dimagev/_libs -rm -rf mustek/.libs mustek/_libs -rm -rf panasonic/.libs panasonic/_libs -rm -rf panasonic/coolshot/.libs panasonic/coolshot/_libs -rm -rf panasonic/l859/.libs panasonic/l859/_libs -rm -rf pccam300/.libs pccam300/_libs -rm -rf pccam600/.libs pccam600/_libs -rm -rf pentax/.libs pentax/_libs -rm -rf polaroid/.libs polaroid/_libs -rm -rf ptp2/.libs ptp2/_libs -rm -rf ricoh/.libs ricoh/_libs -rm -rf samsung/.libs samsung/_libs -rm -rf sierra/.libs sierra/_libs -rm -rf sipix/.libs sipix/_libs -rm -rf smal/.libs smal/_libs -rm -rf sonix/.libs sonix/_libs -rm -rf sonydscf1/.libs sonydscf1/_libs -rm -rf sonydscf55/.libs sonydscf55/_libs -rm -rf soundvision/.libs soundvision/_libs -rm -rf spca50x/.libs spca50x/_libs -rm -rf sq905/.libs sq905/_libs -rm -rf st2205/.libs st2205/_libs -rm -rf stv0674/.libs stv0674/_libs -rm -rf stv0680/.libs stv0680/_libs -rm -rf sx330z/.libs sx330z/_libs -rm -rf template/.libs template/_libs -rm -rf topfield/.libs topfield/_libs -rm -rf toshiba/pdrm11/.libs toshiba/pdrm11/_libs -rm -rf tp6801/.libs tp6801/_libs install-camlibdocDATA: $(camlibdoc_DATA) @$(NORMAL_INSTALL) @list='$(camlibdoc_DATA)'; test -n "$(camlibdocdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(camlibdocdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(camlibdocdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(camlibdocdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(camlibdocdir)" || exit $$?; \ done uninstall-camlibdocDATA: @$(NORMAL_UNINSTALL) @list='$(camlibdoc_DATA)'; test -n "$(camlibdocdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(camlibdocdir)'; $(am__uninstall_files_from_dir) install-localizationDATA: $(localization_DATA) @$(NORMAL_INSTALL) @list='$(localization_DATA)'; test -n "$(localizationdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(localizationdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(localizationdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(localizationdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(localizationdir)" || exit $$?; \ done uninstall-localizationDATA: @$(NORMAL_UNINSTALL) @list='$(localization_DATA)'; test -n "$(localizationdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(localizationdir)'; $(am__uninstall_files_from_dir) # 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, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) $(DATA) all-local installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(camlibdir)" "$(DESTDIR)$(camlibdocdir)" "$(DESTDIR)$(localizationdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f adc65/$(DEPDIR)/$(am__dirstamp) -rm -f adc65/$(am__dirstamp) -rm -f agfa-cl20/$(DEPDIR)/$(am__dirstamp) -rm -f agfa-cl20/$(am__dirstamp) -rm -f aox/$(DEPDIR)/$(am__dirstamp) -rm -f aox/$(am__dirstamp) -rm -f ax203/$(DEPDIR)/$(am__dirstamp) -rm -f ax203/$(am__dirstamp) -rm -f barbie/$(DEPDIR)/$(am__dirstamp) -rm -f barbie/$(am__dirstamp) -rm -f canon/$(DEPDIR)/$(am__dirstamp) -rm -f canon/$(am__dirstamp) -rm -f casio/$(DEPDIR)/$(am__dirstamp) -rm -f casio/$(am__dirstamp) -rm -f clicksmart310/$(DEPDIR)/$(am__dirstamp) -rm -f clicksmart310/$(am__dirstamp) -rm -f digigr8/$(DEPDIR)/$(am__dirstamp) -rm -f digigr8/$(am__dirstamp) -rm -f digita/$(DEPDIR)/$(am__dirstamp) -rm -f digita/$(am__dirstamp) -rm -f dimera/$(DEPDIR)/$(am__dirstamp) -rm -f dimera/$(am__dirstamp) -rm -f directory/$(DEPDIR)/$(am__dirstamp) -rm -f directory/$(am__dirstamp) -rm -f enigma13/$(DEPDIR)/$(am__dirstamp) -rm -f enigma13/$(am__dirstamp) -rm -f fuji/$(DEPDIR)/$(am__dirstamp) -rm -f fuji/$(am__dirstamp) -rm -f gsmart300/$(DEPDIR)/$(am__dirstamp) -rm -f gsmart300/$(am__dirstamp) -rm -f hp215/$(DEPDIR)/$(am__dirstamp) -rm -f hp215/$(am__dirstamp) -rm -f iclick/$(DEPDIR)/$(am__dirstamp) -rm -f iclick/$(am__dirstamp) -rm -f jamcam/$(DEPDIR)/$(am__dirstamp) -rm -f jamcam/$(am__dirstamp) -rm -f jd11/$(DEPDIR)/$(am__dirstamp) -rm -f jd11/$(am__dirstamp) -rm -f jl2005a/$(DEPDIR)/$(am__dirstamp) -rm -f jl2005a/$(am__dirstamp) -rm -f jl2005c/$(DEPDIR)/$(am__dirstamp) -rm -f jl2005c/$(am__dirstamp) -rm -f kodak/dc120/$(DEPDIR)/$(am__dirstamp) -rm -f kodak/dc120/$(am__dirstamp) -rm -f kodak/dc210/$(DEPDIR)/$(am__dirstamp) -rm -f kodak/dc210/$(am__dirstamp) -rm -f kodak/dc240/$(DEPDIR)/$(am__dirstamp) -rm -f kodak/dc240/$(am__dirstamp) -rm -f kodak/dc3200/$(DEPDIR)/$(am__dirstamp) -rm -f kodak/dc3200/$(am__dirstamp) -rm -f kodak/ez200/$(DEPDIR)/$(am__dirstamp) -rm -f kodak/ez200/$(am__dirstamp) -rm -f konica/$(DEPDIR)/$(am__dirstamp) -rm -f konica/$(am__dirstamp) -rm -f largan/lmini/$(DEPDIR)/$(am__dirstamp) -rm -f largan/lmini/$(am__dirstamp) -rm -f lg_gsm/$(DEPDIR)/$(am__dirstamp) -rm -f lg_gsm/$(am__dirstamp) -rm -f mars/$(DEPDIR)/$(am__dirstamp) -rm -f mars/$(am__dirstamp) -rm -f minolta/dimagev/$(DEPDIR)/$(am__dirstamp) -rm -f minolta/dimagev/$(am__dirstamp) -rm -f mustek/$(DEPDIR)/$(am__dirstamp) -rm -f mustek/$(am__dirstamp) -rm -f panasonic/$(DEPDIR)/$(am__dirstamp) -rm -f panasonic/$(am__dirstamp) -rm -f panasonic/coolshot/$(DEPDIR)/$(am__dirstamp) -rm -f panasonic/coolshot/$(am__dirstamp) -rm -f panasonic/l859/$(DEPDIR)/$(am__dirstamp) -rm -f panasonic/l859/$(am__dirstamp) -rm -f pccam300/$(DEPDIR)/$(am__dirstamp) -rm -f pccam300/$(am__dirstamp) -rm -f pccam600/$(DEPDIR)/$(am__dirstamp) -rm -f pccam600/$(am__dirstamp) -rm -f pentax/$(DEPDIR)/$(am__dirstamp) -rm -f pentax/$(am__dirstamp) -rm -f polaroid/$(DEPDIR)/$(am__dirstamp) -rm -f polaroid/$(am__dirstamp) -rm -f ptp2/$(DEPDIR)/$(am__dirstamp) -rm -f ptp2/$(am__dirstamp) -rm -f ricoh/$(DEPDIR)/$(am__dirstamp) -rm -f ricoh/$(am__dirstamp) -rm -f samsung/$(DEPDIR)/$(am__dirstamp) -rm -f samsung/$(am__dirstamp) -rm -f sierra/$(DEPDIR)/$(am__dirstamp) -rm -f sierra/$(am__dirstamp) -rm -f sipix/$(DEPDIR)/$(am__dirstamp) -rm -f sipix/$(am__dirstamp) -rm -f smal/$(DEPDIR)/$(am__dirstamp) -rm -f smal/$(am__dirstamp) -rm -f sonix/$(DEPDIR)/$(am__dirstamp) -rm -f sonix/$(am__dirstamp) -rm -f sonydscf1/$(DEPDIR)/$(am__dirstamp) -rm -f sonydscf1/$(am__dirstamp) -rm -f sonydscf55/$(DEPDIR)/$(am__dirstamp) -rm -f sonydscf55/$(am__dirstamp) -rm -f soundvision/$(DEPDIR)/$(am__dirstamp) -rm -f soundvision/$(am__dirstamp) -rm -f spca50x/$(DEPDIR)/$(am__dirstamp) -rm -f spca50x/$(am__dirstamp) -rm -f sq905/$(DEPDIR)/$(am__dirstamp) -rm -f sq905/$(am__dirstamp) -rm -f st2205/$(DEPDIR)/$(am__dirstamp) -rm -f st2205/$(am__dirstamp) -rm -f stv0674/$(DEPDIR)/$(am__dirstamp) -rm -f stv0674/$(am__dirstamp) -rm -f stv0680/$(DEPDIR)/$(am__dirstamp) -rm -f stv0680/$(am__dirstamp) -rm -f sx330z/$(DEPDIR)/$(am__dirstamp) -rm -f sx330z/$(am__dirstamp) -rm -f template/$(DEPDIR)/$(am__dirstamp) -rm -f template/$(am__dirstamp) -rm -f topfield/$(DEPDIR)/$(am__dirstamp) -rm -f topfield/$(am__dirstamp) -rm -f toshiba/pdrm11/$(DEPDIR)/$(am__dirstamp) -rm -f toshiba/pdrm11/$(am__dirstamp) -rm -f tp6801/$(DEPDIR)/$(am__dirstamp) -rm -f tp6801/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-camlibLTLIBRARIES clean-generic clean-libtool \ clean-noinstLTLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -rf adc65/$(DEPDIR) agfa-cl20/$(DEPDIR) aox/$(DEPDIR) ax203/$(DEPDIR) barbie/$(DEPDIR) canon/$(DEPDIR) casio/$(DEPDIR) clicksmart310/$(DEPDIR) digigr8/$(DEPDIR) digita/$(DEPDIR) dimera/$(DEPDIR) directory/$(DEPDIR) enigma13/$(DEPDIR) fuji/$(DEPDIR) gsmart300/$(DEPDIR) hp215/$(DEPDIR) iclick/$(DEPDIR) jamcam/$(DEPDIR) jd11/$(DEPDIR) jl2005a/$(DEPDIR) jl2005c/$(DEPDIR) kodak/dc120/$(DEPDIR) kodak/dc210/$(DEPDIR) kodak/dc240/$(DEPDIR) kodak/dc3200/$(DEPDIR) kodak/ez200/$(DEPDIR) konica/$(DEPDIR) largan/lmini/$(DEPDIR) lg_gsm/$(DEPDIR) mars/$(DEPDIR) minolta/dimagev/$(DEPDIR) mustek/$(DEPDIR) panasonic/$(DEPDIR) panasonic/coolshot/$(DEPDIR) panasonic/l859/$(DEPDIR) pccam300/$(DEPDIR) pccam600/$(DEPDIR) pentax/$(DEPDIR) polaroid/$(DEPDIR) ptp2/$(DEPDIR) ricoh/$(DEPDIR) samsung/$(DEPDIR) sierra/$(DEPDIR) sipix/$(DEPDIR) smal/$(DEPDIR) sonix/$(DEPDIR) sonydscf1/$(DEPDIR) sonydscf55/$(DEPDIR) soundvision/$(DEPDIR) spca50x/$(DEPDIR) sq905/$(DEPDIR) st2205/$(DEPDIR) stv0674/$(DEPDIR) stv0680/$(DEPDIR) sx330z/$(DEPDIR) template/$(DEPDIR) topfield/$(DEPDIR) toshiba/pdrm11/$(DEPDIR) tp6801/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-camlibLTLIBRARIES install-camlibdocDATA \ install-localizationDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf adc65/$(DEPDIR) agfa-cl20/$(DEPDIR) aox/$(DEPDIR) ax203/$(DEPDIR) barbie/$(DEPDIR) canon/$(DEPDIR) casio/$(DEPDIR) clicksmart310/$(DEPDIR) digigr8/$(DEPDIR) digita/$(DEPDIR) dimera/$(DEPDIR) directory/$(DEPDIR) enigma13/$(DEPDIR) fuji/$(DEPDIR) gsmart300/$(DEPDIR) hp215/$(DEPDIR) iclick/$(DEPDIR) jamcam/$(DEPDIR) jd11/$(DEPDIR) jl2005a/$(DEPDIR) jl2005c/$(DEPDIR) kodak/dc120/$(DEPDIR) kodak/dc210/$(DEPDIR) kodak/dc240/$(DEPDIR) kodak/dc3200/$(DEPDIR) kodak/ez200/$(DEPDIR) konica/$(DEPDIR) largan/lmini/$(DEPDIR) lg_gsm/$(DEPDIR) mars/$(DEPDIR) minolta/dimagev/$(DEPDIR) mustek/$(DEPDIR) panasonic/$(DEPDIR) panasonic/coolshot/$(DEPDIR) panasonic/l859/$(DEPDIR) pccam300/$(DEPDIR) pccam600/$(DEPDIR) pentax/$(DEPDIR) polaroid/$(DEPDIR) ptp2/$(DEPDIR) ricoh/$(DEPDIR) samsung/$(DEPDIR) sierra/$(DEPDIR) sipix/$(DEPDIR) smal/$(DEPDIR) sonix/$(DEPDIR) sonydscf1/$(DEPDIR) sonydscf55/$(DEPDIR) soundvision/$(DEPDIR) spca50x/$(DEPDIR) sq905/$(DEPDIR) st2205/$(DEPDIR) stv0674/$(DEPDIR) stv0680/$(DEPDIR) sx330z/$(DEPDIR) template/$(DEPDIR) topfield/$(DEPDIR) toshiba/pdrm11/$(DEPDIR) tp6801/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-camlibLTLIBRARIES uninstall-camlibdocDATA \ uninstall-localizationDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ check check-am clean clean-camlibLTLIBRARIES clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am \ install-camlibLTLIBRARIES install-camlibdocDATA 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-localizationDATA 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-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-camlibLTLIBRARIES \ uninstall-camlibdocDATA uninstall-localizationDATA .PRECIOUS: Makefile ######################################################################## # You can generate this Makefile-files include list by running # find . -name Makefile-files -exec echo include {} \; | sort | sed 's| ./| |g' # End of list of Makefile-files ######################################################################## # Print list of GP_CAMLIB() definitions suitable for adding to # configure.ac print-camlibs: Makefile @for x in $(EXTRA_LTLIBRARIES); do \ y="$$(basename "$$x" ".la")"; \ echo "GP_CAMLIB([$$y])dnl"; \ done all-local: Makefile @:; \ (for x in $(EXTRA_LTLIBRARIES) template.la; do echo "$$(basename "$$x" ".la")"; done) \ | sort > all-src-camlibs; \ (for x in $(ALL_DEFINED_CAMLIBS); do echo "$$x"; done) \ | sort > all-def-camlibs; \ if cmp all-def-camlibs all-src-camlibs; then :; else \ diff -u all-def-camlibs all-src-camlibs; \ echo "List of camlibs in configure.ac is out of date."; \ echo "Have a developer update it using \"make -C camlibs print-camlibs\"."; \ exit 1; \ fi ######################################################################## # Shortcut for installation of a subset of camlibs # Usage: make CAMLIBS="canon.la ptp2.la" install-camlibs install-camlibs: $(MAKE) BUILD_THESE_CAMLIBS="$(CAMLIBS)" install-camlibLTLIBRARIES ######################################################################## # End of camlibs/Makefile.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. .NOEXPORT: libgphoto2-2.5.9/camlibs/fuji/0000755000175000001440000000000012623156267013156 500000000000000libgphoto2-2.5.9/camlibs/fuji/PROTOCOL0000644000175000001440000000036712557123324014262 00000000000000 These are just some quick notes. fuji_get_cmds: -------------- ESC STX 00 4d 1b 00 00 02 07 09 0a 0b 0c 0e 0f 11 13 17 19 1b 29 4c 51 80 82 84 86 c0 20 22 2a 2b 2e ESC ETX 9b fuji_pic_count: --------------- ESC STX 00 06 02 00 02 00 ESC ETX 05 libgphoto2-2.5.9/camlibs/fuji/library.c0000644000175000001440000003313312610415536014702 00000000000000/* library.c: * * Copyright 2002 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #include "fuji.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "fuji" #define CR(result) {int __r = (result); if (__r < 0) return (__r);} static const struct { const char *model; } models[] = { {"Apple:QuickTake 200"}, {"Fuji:DS-7"}, {"Fuji:DX-5"}, {"Fuji:DX-7"}, {"Fuji:DX-10"}, {"Fuji:MX-500"}, {"Fuji:MX-600"}, {"Fuji:MX-700"}, {"Fuji:MX-1200"}, {"Fuji:MX-1700"}, {"Fuji:MX-2700"}, {"Fuji:MX-2900"}, {"Leica:Digilux Zoom"}, {"Samsung:Kenox SSC-350N"}, {"Toshiba:PDR-M1"}, {NULL} }; struct _CameraPrivateLibrary { unsigned long speed; unsigned char cmds[0xff]; }; static const struct { FujiCmd command; const char *name; } Commands[] = { {FUJI_CMD_PIC_GET, "get picture"}, {FUJI_CMD_PIC_GET_THUMB, "get thumbnail"}, {FUJI_CMD_SPEED, "change speed"}, {FUJI_CMD_VERSION, "get version"}, {FUJI_CMD_PIC_NAME, "get name of picture"}, {FUJI_CMD_PIC_COUNT, "get number of pictures"}, {FUJI_CMD_PIC_SIZE, "get size of picture"}, {FUJI_CMD_PIC_DEL, "delete picture"}, {FUJI_CMD_TAKE, "capture picture"}, {FUJI_CMD_FLASH_GET, "get flash mode"}, {FUJI_CMD_FLASH_SET, "set flash mode"}, {FUJI_CMD_FLASH_CHARGE, "charge flash"}, {FUJI_CMD_CMDS_VALID, "list valid commands"}, {FUJI_CMD_PREVIEW, "capture preview"}, {FUJI_CMD_DATE_GET, "get date"}, {0, NULL}}; static const char * cmd_get_name (FujiCmd command) { unsigned int i; for (i = 0; Commands[i].name; i++) if (Commands[i].command == command) break; return (Commands[i].name); } int camera_id (CameraText *id) { strcpy (id->text, "Fuji"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; int i; memset (&a, 0, sizeof (a)); for (i = 0; models[i].model; i++) { strcpy (a.model, models[i].model); a.port = GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 56700; a.speed[4] = 115200; a.speed[5] = 0; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE; a.file_operations = GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_DELETE; a.operations = GP_OPERATION_CONFIG; CR (gp_abilities_list_append (list, a)); } return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch " "\n")); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i; unsigned int n; const char *name; /* * Count the pictures on the camera. If we don't have any, we * are done. */ CR (fuji_pic_count (camera, &n, context)); if (!n) return (GP_OK); /* * Try to get the name of the first file. If we can't, just come * up with some dummy names. */ if (fuji_pic_name (camera, 1, &name, context) < 0) { CR (gp_list_populate (list, "DSCF%04i.JPG", n)); return (GP_OK); } CR (gp_list_append (list, name, NULL)); /* Get the names of the remaining files. */ for (i = 2; i <= n; i++) { CR (fuji_pic_name (camera, i, &name, context)); CR (gp_list_append (list, name, NULL)); } return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int n; unsigned char *d; unsigned int size; /* We need file numbers starting with 1 */ CR (n = gp_filesystem_number (camera->fs, folder, filename, context)); n++; switch (type) { case GP_FILE_TYPE_NORMAL: CR (fuji_pic_get (camera, n, &d, &size, context)); break; case GP_FILE_TYPE_PREVIEW: CR (fuji_pic_get_thumb (camera, n, &d, &size, context)); break; default: return (GP_ERROR_NOT_SUPPORTED); } CR (gp_file_set_data_and_size (file, (char *)d, size)); CR (gp_file_set_mime_type (file, GP_MIME_JPEG)); return (GP_OK); } static int put_file_func (CameraFilesystem *fs, const char *folder, const char *name, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; const char *d; unsigned long int d_len; if (type != GP_FILE_TYPE_NORMAL) return GP_ERROR_BAD_PARAMETERS; CR (gp_file_get_data_and_size (file, &d, &d_len)); CR (fuji_upload_init (camera, name, context)); return fuji_upload (camera, (unsigned char *)d, d_len, context); } static int del_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int n; /* We need file numbers starting with 1 */ CR (n = gp_filesystem_number (camera->fs, folder, filename, context)); n++; CR (fuji_pic_del (camera, n, context)); return (GP_OK); } static const struct { FujiSpeed speed; unsigned int bit_rate; } Speeds[] = { {FUJI_SPEED_115200, 115200}, {FUJI_SPEED_57600, 57600}, {FUJI_SPEED_38400, 38400}, {FUJI_SPEED_19200, 19200}, {FUJI_SPEED_9600, 9600}, {FUJI_SPEED_9600, 0} }; static int camera_exit (Camera *camera, GPContext *context) { if (camera->pl) { free (camera->pl); camera->pl = NULL; } return (GP_OK); } static int pre_func (Camera *camera, GPContext *context) { int r; unsigned int i; GPPortSettings settings; GP_DEBUG ("Initializing connection..."); CR (gp_port_get_settings (camera->port, &settings)); CR (fuji_ping (camera, context)); if (!camera->pl->speed) { /* Set to the highest possible speed. */ for (i = 0; Speeds[i].bit_rate; i++) { r = fuji_set_speed (camera, Speeds[i].speed, NULL); if (r >= 0) break; } /* * Change the port's speed and check if the camera is * still there. */ settings.serial.speed = Speeds[i].bit_rate; CR (gp_port_set_settings (camera->port, settings)); GP_DEBUG("Pinging to check new speed %i.", Speeds[i].bit_rate); CR (fuji_ping (camera, context)); } else { /* User specified a speed. Check if the speed is possible */ for (i = 0; Speeds[i].bit_rate; i++) if (Speeds[i].bit_rate == camera->pl->speed) break; if (!Speeds[i].bit_rate) { gp_context_error (context, _("Bit rate %ld is not " "supported."), camera->pl->speed); return (GP_ERROR_NOT_SUPPORTED); } /* Change the speed if necessary. */ if (camera->pl->speed != Speeds[i].bit_rate) { CR (fuji_set_speed (camera, Speeds[i].speed, context)); /* * Change the port's speed and check if the camera is * still there. */ settings.serial.speed = Speeds[i].bit_rate; CR (gp_port_set_settings (camera->port, settings)); CR (fuji_ping (camera, context)); } } return (GP_OK); } static int post_func (Camera *camera, GPContext *context) { GPPortSettings settings; GP_DEBUG ("Terminating connection..."); /* Put the camera back to 9600 bps if necessary. */ CR (gp_port_get_settings (camera->port, &settings)); if (settings.serial.speed != 9600) { CR (fuji_set_speed (camera, FUJI_SPEED_9600, context)); settings.serial.speed = 9600; CR (gp_port_set_settings (camera->port, settings)); } return (GP_OK); } static int camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *widget; struct tm tm; time_t t; FujiDate date; const char *id; CR (gp_widget_new (GP_WIDGET_WINDOW, _("Configuration for " "your FUJI camera"), window)); /* Date & Time */ if (fuji_date_get (camera, &date, context) >= 0) { CR (gp_widget_new (GP_WIDGET_DATE, _("Date & Time"), &widget)); CR (gp_widget_append (*window, widget)); memset (&tm, 0, sizeof (struct tm)); tm.tm_year = date.year; tm.tm_mon = date.month; tm.tm_mday = date.day; tm.tm_hour = date.hour; tm.tm_min = date.min; tm.tm_sec = date.sec; t = mktime (&tm); CR (gp_widget_set_value (widget, &t)); } /* ID */ if (fuji_id_get (camera, &id, context) >= 0) { CR (gp_widget_new (GP_WIDGET_TEXT, _("ID"), &widget)); CR (gp_widget_append (*window, widget)); CR (gp_widget_set_value (widget, (void *) id)); } return (GP_OK); } static int camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *widget; FujiDate date; time_t t; struct tm *tm; const char *id; /* Date & Time */ if ((gp_widget_get_child_by_label (window, _("Date & Time"), &widget) >= 0) && gp_widget_changed (widget)) { CR (gp_widget_get_value (widget, &t)); tm = localtime (&t); date.year = tm->tm_year; date.month = tm->tm_mon; date.day = tm->tm_mday; date.hour = tm->tm_hour; date.min = tm->tm_min; date.sec = tm->tm_sec; CR (fuji_date_set (camera, date, context)); } /* ID */ if ((gp_widget_get_child_by_label (window, _("ID"), &widget) >= 0) && gp_widget_changed (widget)) { CR (gp_widget_get_value (widget, &id)); CR (fuji_id_set (camera, id, context)); } return (GP_OK); } static int camera_summary (Camera *camera, CameraText *text, GPContext *context) { const char *string; char buf[1024]; unsigned int avail_mem; memset (text->text, 0, sizeof (text->text)); if (fuji_version (camera, &string, context) >= 0) { strcat (text->text, _("Version: ")); strcat (text->text, string); strcat (text->text, "\n"); } if (fuji_model (camera, &string, context) >= 0) { strcat (text->text, _("Model: ")); strcat (text->text, string); strcat (text->text, "\n"); } if (fuji_avail_mem (camera, &avail_mem, context) >= 0) { snprintf (buf, sizeof (buf), "%d", avail_mem); strcat (text->text, _("Available memory: ")); strcat (text->text, buf); strcat (text->text, "\n"); } return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int n; unsigned int size; info->file.fields = GP_FILE_INFO_NONE; info->preview.fields = GP_FILE_INFO_NONE; info->audio.fields = GP_FILE_INFO_NONE; /* We need file numbers starting with 1 */ CR (n = gp_filesystem_number (camera->fs, folder, filename, context)); n++; /* Size */ if (fuji_pic_size (camera, n, &size, context) >= 0) { info->file.fields |= GP_FILE_INFO_SIZE; info->file.size = size; } return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = del_file_func, .put_file_func = put_file_func, .get_info_func = get_info_func }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; unsigned int i; /* Setup all function pointers */ camera->functions->pre_func = pre_func; camera->functions->post_func = post_func; camera->functions->about = camera_about; camera->functions->exit = camera_exit; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; camera->functions->summary = camera_summary; /* We need to store some data */ camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); /* Set up the port, but remember the current speed. */ CR (gp_port_set_timeout (camera->port, 1000)); CR (gp_port_get_settings (camera->port, &settings)); camera->pl->speed = settings.serial.speed; settings.serial.speed = 9600; settings.serial.bits = 8; settings.serial.parity = GP_PORT_SERIAL_PARITY_EVEN; settings.serial.stopbits = 1; CR (gp_port_set_settings (camera->port, settings)); /* Set up the filesystem. */ CR (gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera)); /* Initialize the connection */ CR (pre_func (camera, context)); /* * What commands does this camera support? The question is not * easy to answer, as "One issue the DS7 has is that the * supported command list command is not supported" * (Matt Martin ). */ if (fuji_get_cmds (camera, camera->pl->cmds, context) >= 0) { GP_DEBUG ("Your camera supports the following command(s):"); for (i = 0; i < 0xff; i++) if (camera->pl->cmds[i]) GP_DEBUG (" - 0x%02x: '%s'", i, cmd_get_name (i)); } return (GP_OK); } libgphoto2-2.5.9/camlibs/fuji/fuji.c0000644000175000001440000005722512610415536014203 00000000000000/* fuji.c: * * Fuji Camera library for the gphoto project. * * © 2001 Matthew G. Martin * 2002 Lutz Mueller * * This routine works for Fuji DS-7 and DX-5,7,10 and * MX-500,600,700,1200,1700,2700,2900, Apple QuickTake 200, * Samsung Kenox SSC-350N,Leica Digilux Zoom cameras and possibly others. * * Preview and take_picture fixes and preview conversion integrated * by Michael Smith . * * This driver was reworked from the "fujiplay" package: * * A program to control Fujifilm digital cameras, like * * the DS-7 and MX-700, and their clones. * * Written by Thierry Bousch * * and released in the public domain. * * Portions of this code were adapted from * GDS7 v0.1 interactive digital image transfer software for DS-7 camera * Copyright 1998 Matthew G. Martin * Some of which was derived from get_ds7 , a Perl Language library * Copyright 1997 Mamoru Ohno * * 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 */ #include "config.h" #include "fuji.h" #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #ifndef MIN #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif #ifndef MAX #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #endif #define GP_MODULE "fuji" #define CR(result) {int __r = (result); if (__r < 0) return (__r);} #define CRF(result,d) {int __r = (result); if (__r < 0) {free (d); return (__r);}} #define CLEN(buf_len,required) \ { \ if (buf_len < required) { \ gp_context_error (context, _("The camera sent " \ "only %i byte(s), but we need at " \ "least %i."), buf_len, required); \ return (GP_ERROR); \ } \ } #define STX 0x02 /* Start of data */ #define ETX 0x03 /* End of data */ #define EOT 0x04 /* End of session */ #define ENQ 0x05 /* Enquiry */ #define ACK 0x06 #define ESC 0x10 #define ETB 0x17 /* End of transmission block */ #define NAK 0x15 #define FUJI_ACK 0x00 #define FUJI_NAK 0x01 static int fuji_reset (Camera *camera, GPContext *context); int fuji_ping (Camera *camera, GPContext *context) { unsigned char b; unsigned int i; int r; GP_DEBUG ("Pinging camera..."); /* Drain input */ while (gp_port_read (camera->port, (char *)&b, 1) >= 0); i = 0; while (1) { b = ENQ; CR (gp_port_write (camera->port, (char *)&b, 1)); r = gp_port_read (camera->port, (char *)&b, 1); if ((r >= 0) && (b == ACK)) return (GP_OK); i++; if (i >= 3) { gp_context_error (context, _("Could not contact " "camera.")); return (GP_ERROR); } } } static int fuji_send (Camera *camera, unsigned char *cmd, unsigned int cmd_len, unsigned char last, GPContext *context) { unsigned char b[1024], check; unsigned int i; /* Send header */ b[0] = ESC; b[1] = STX; CR (gp_port_write (camera->port, (char *)b, 2)); /* * Escape the data we are going to send. * Calculate the checksum. */ check = (last ? ETX : ETB); memcpy (b, cmd, cmd_len); for (i = 0; i < cmd_len; i++) { check ^= b[i]; if (b[i] == ESC) { memmove (b + i + 1, b + i, cmd_len - i); b[i] = ESC; i++; cmd_len++; } } /* Send data */ CR (gp_port_write (camera->port, (char *)b, cmd_len)); /* Send footer */ b[0] = ESC; b[1] = (last ? ETX : ETB); b[2] = check; CR (gp_port_write (camera->port, (char *)b, 3)); return (GP_OK); } static int fuji_recv (Camera *camera, unsigned char *buf, unsigned int *buf_len, unsigned char *last, GPContext *context) { unsigned char b[1024], check = 0; int i; /* * Read the header. The checksum covers all bytes between * ESC STX and ESC ET[X,B]. */ CR (gp_port_read (camera->port, (char *)b, 6)); /* Verify the header */ if ((b[0] != ESC) || (b[1] != STX)) { gp_context_error (context, _("Received unexpected data " "(0x%02x, 0x%02x)."), b[0], b[1]); return (GP_ERROR_CORRUPTED_DATA); } /* * We don't know the meaning of b[2] and b[3]. * We have seen 0x00 0x4d and 0x00 0x06. */ check ^= b[2]; check ^= b[3]; /* Determine the length of the packet. */ *buf_len = ((b[5] << 8) | b[4]); check ^= b[4]; check ^= b[5]; GP_DEBUG ("We are expecting %i byte(s) data (excluding ESC quotes). " "Let's read them...", *buf_len); /* Read the data. Unescape it. Calculate the checksum. */ for (i = 0; i < *buf_len; i++) { CR (gp_port_read (camera->port, (char *)buf + i, 1)); if (buf[i] == ESC) { CR (gp_port_read (camera->port, (char *)buf + i, 1)); if (buf[i] != ESC) { gp_context_error (context, _("Wrong escape sequence: " "expected 0x%02x, got 0x%02x."), ESC, buf[i]); /* Dump the remaining data */ while (gp_port_read (camera->port, (char *)b, 1) >= 0); return (GP_ERROR_CORRUPTED_DATA); } } check ^= buf[i]; } /* Read the footer */ CR (gp_port_read (camera->port, (char *)b, 3)); if (b[0] != ESC) { gp_context_error (context, _("Bad data - got 0x%02x, expected 0x%02x."), b[0], ESC); return (GP_ERROR_CORRUPTED_DATA); } switch (b[1]) { case ETX: *last = 1; break; case ETB: *last = 0; break; default: gp_context_error (context, _("Bad data - got 0x%02x, expected 0x%02x or " "0x%02x."), b[1], ETX, ETB); return (GP_ERROR_CORRUPTED_DATA); } check ^= b[1]; if (check != b[2]) { gp_context_error (context, _("Bad checksum - got 0x%02x, expected 0x%02x."), b[2], check); return (GP_ERROR_CORRUPTED_DATA); } return (GP_OK); } static int fuji_transmit (Camera *camera, unsigned char *cmd, unsigned int cmd_len, unsigned char *buf, unsigned int *buf_len, GPContext *context) { unsigned char last = 0, c, p; unsigned int b_len = 1024; int r, retries = 0, id = 0; /* * Send the command. If we fail the first time, we only try once more. * After the third time, the camera would reset itself automatically. */ retries = 0; while (1) { /* Give the user the possibility to cancel. */ if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); CR (fuji_send (camera, cmd, cmd_len, 1, context)); /* Receive ACK (hopefully) */ CR (gp_port_read (camera->port, (char *)&c, 1)); switch (c) { case ACK: break; case NAK: /* Camera didn't like the command */ if (++retries > 1) { gp_context_error (context, _("Camera rejected " "the command.")); return (GP_ERROR); } continue; case EOT: /* Camera got fed up and reset itself. */ gp_context_error (context, _("Camera reset itself.")); return (GP_ERROR); default: gp_context_error (context, _("Camera sent unexpected " "byte 0x%02x."), c); return (GP_ERROR_CORRUPTED_DATA); } break; } /* * Read the response. If we expect more than 1024 bytes, show * progress information. */ p = ((*buf_len > 1024) ? 1 : 0); if (p) id = gp_context_progress_start (context, *buf_len, _("Downloading...")); *buf_len = 0; retries = 0; while (!last) { r = fuji_recv (camera, buf + *buf_len, &b_len, &last, context); if (r < 0) { retries++; while (gp_port_read (camera->port, (char *)&c, 1) >= 0); if (++retries > 2) return (r); GP_DEBUG ("Retrying..."); c = NAK; CR (gp_port_write (camera->port, (char *)&c, 1)); continue; } /* Give the user the possibility to cancel. */ if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { CR (fuji_reset (camera, context)); return (GP_ERROR_CANCEL); } /* Acknowledge this packet. */ c = ACK; CR (gp_port_write (camera->port, (char *)&c, 1)); *buf_len += b_len; if (p) gp_context_progress_update (context, id, *buf_len); } if (p) gp_context_progress_stop (context, id); return (GP_OK); } int fuji_get_cmds (Camera *camera, unsigned char *cmds, GPContext *context) { unsigned char cmd[4], buf[1024]; unsigned int i, buf_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_CMDS_VALID; cmd[2] = 0; cmd[3] = 0; CR (fuji_transmit (camera, cmd, 4, buf, &buf_len, context)); memset (cmds, 0, 0xff); for (i = 0; i < buf_len; i++) cmds[buf[i]] = 1; return (GP_OK); } int fuji_pic_count (Camera *camera, unsigned int *n, GPContext *context) { unsigned char cmd[4], buf[1024]; unsigned int buf_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_PIC_COUNT; cmd[2] = 0; cmd[3] = 0; CR (fuji_transmit (camera, cmd, 4, buf, &buf_len, context)); CLEN (buf_len, 2); *n = (buf[1] << 8) | buf[0]; return (GP_OK); } int fuji_pic_name (Camera *camera, unsigned int i, const char **name, GPContext *context) { static unsigned char buf[1025]; unsigned char cmd[6]; unsigned int buf_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_PIC_NAME; cmd[2] = 2; cmd[3] = 0; cmd[4] = i; cmd[5] = (i >> 8); memset (buf, 0, sizeof (buf)); CR (fuji_transmit (camera, cmd, 6, buf, &buf_len, context)); *name = (char *)buf; return (GP_OK); } int fuji_version (Camera *camera, const char **version, GPContext *context) { static unsigned char buf[1025]; unsigned char cmd[4]; unsigned int buf_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_VERSION; cmd[2] = 0; cmd[3] = 0; memset (buf, 0, sizeof (buf)); CR (fuji_transmit (camera, cmd, 4, buf, &buf_len, context)); *version = (char *)buf; return (GP_OK); } int fuji_model (Camera *camera, const char **model, GPContext *context) { static unsigned char buf[1025]; unsigned char cmd[4]; unsigned int buf_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_MODEL; cmd[2] = 0; cmd[3] = 0; memset (buf, 0, sizeof (buf)); CR (fuji_transmit (camera, cmd, 4, buf, &buf_len, context)); *model = (char *)buf; return (GP_OK); } int fuji_id_get (Camera *camera, const char **id, GPContext *context) { static unsigned char buf[1025]; unsigned char cmd[4]; unsigned int buf_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_ID_GET; cmd[2] = 0; cmd[3] = 0; memset (buf, 0, sizeof (buf)); CR (fuji_transmit (camera, cmd, 4, buf, &buf_len, context)); *id = (char *)buf; return (GP_OK); } int fuji_id_set (Camera *camera, const char *id, GPContext *context) { unsigned char cmd[14], buf[1025]; unsigned int buf_len = 0; /* It seems that the ID must be 10 chars or less */ cmd[0] = 0; cmd[1] = FUJI_CMD_ID_SET; cmd[2] = 0x0a; cmd[3] = 0x00; memcpy (cmd + 4, id, MIN (strlen (id) + 1, 10)); CR (fuji_transmit (camera, cmd, 14, buf, &buf_len, context)); return (GP_OK); } int fuji_pic_del (Camera *camera, unsigned int i, GPContext *context) { unsigned char cmd[6], buf[1024]; unsigned int buf_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_PIC_NAME; cmd[2] = 2; cmd[3] = 0; cmd[4] = i; cmd[5] = (i >> 8); CR (fuji_transmit (camera, cmd, 6, buf, &buf_len, context)); return (GP_OK); } int fuji_pic_size (Camera *camera, unsigned int i, unsigned int *size, GPContext *context) { unsigned char cmd[6], buf[1024]; unsigned int buf_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_PIC_SIZE; cmd[2] = 2; cmd[3] = 0; cmd[4] = i; cmd[5] = (i >> 8); CR (fuji_transmit (camera, cmd, 6, buf, &buf_len, context)); CLEN (buf_len, 4); *size = buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24); return (GP_OK); } int fuji_pic_get_thumb (Camera *camera, unsigned int i, unsigned char **data, unsigned int *size, GPContext *context) { unsigned char cmd[6]; /* It seems that all thumbnails have the size of 60 x 175. */ *size = 60 * 175; *data = malloc (sizeof (char) * *size); if (!*data) { gp_context_error (context, _("Could not allocate " "%i byte(s) for downloading the thumbnail."), *size); return (GP_ERROR_NO_MEMORY); } cmd[0] = 0; cmd[1] = FUJI_CMD_PIC_GET_THUMB; cmd[2] = 2; cmd[3] = 0; cmd[4] = i; cmd[5] = (i >> 8); CRF (fuji_transmit (camera, cmd, 6, *data, size, context), *data); GP_DEBUG ("Download of thumbnail completed."); return (GP_OK); } int fuji_pic_get (Camera *camera, unsigned int i, unsigned char **data, unsigned int *size, GPContext *context) { unsigned char cmd[6]; /* * First, get the size of the picture and allocate the necessary * memory. Some cameras don't support the FUJI_CMD_PIC_SIZE command. * We will then assume 66000 bytes. */ if (fuji_pic_size (camera, i, size, context) < 0) *size = 66000; *data = malloc (sizeof (char) * *size); if (!*data) { gp_context_error (context, _("Could not allocate " "%i byte(s) for downloading the picture."), *size); return (GP_ERROR_NO_MEMORY); } cmd[0] = 0; cmd[1] = FUJI_CMD_PIC_GET; cmd[2] = 2; cmd[3] = 0; cmd[4] = i; cmd[5] = (i >> 8); CRF (fuji_transmit (camera, cmd, 6, *data, size, context), *data); GP_DEBUG ("Download of picture completed (%i byte(s)).", *size); return (GP_OK); } int fuji_date_get (Camera *camera, FujiDate *date, GPContext *context) { unsigned char cmd[4], buf[1024]; unsigned int buf_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_DATE_GET; cmd[2] = 0; cmd[3] = 0; CR (fuji_transmit (camera, cmd, 4, buf, &buf_len, context)); CLEN (buf_len, 14); date->year = buf[0] * 1000 + buf[1] * 100 + buf[ 2] * 10 + buf[ 3]; date->month = buf[ 4] * 10 + buf[ 5]; date->day = buf[ 6] * 10 + buf[ 7]; date->hour = buf[ 8] * 10 + buf[ 9]; date->min = buf[10] * 10 + buf[11]; date->sec = buf[12] * 10 + buf[13]; return (GP_OK); } int fuji_avail_mem (Camera *camera, unsigned int *avail_mem, GPContext *context) { unsigned char cmd[4], buf[1024]; unsigned int buf_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_AVAIL_MEM; cmd[2] = 0; cmd[3] = 0; CR (fuji_transmit (camera, cmd, 4, buf, &buf_len, context)); CLEN (buf_len, 4); *avail_mem = buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24); return (GP_OK); } int fuji_date_set (Camera *camera, FujiDate date, GPContext *context) { unsigned char cmd[1024], buf[1024]; unsigned int buf_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_DATE_SET; cmd[2] = 14; cmd[3] = 0; sprintf ((char*)cmd + 4, "%04d%02d%02d%02d%02d%02d", date.year, date.month, date.day, date.hour, date.min, date.sec); CR (fuji_transmit (camera, cmd, 4, buf, &buf_len, context)); return (GP_OK); } int fuji_upload_init (Camera *camera, const char *name, GPContext *context) { unsigned char cmd[1024], buf[1024]; unsigned int buf_len = 0, cmd_len = 0; cmd[0] = 0; cmd[1] = FUJI_CMD_UPLOAD_INIT; cmd[2] = strlen (name); cmd[3] = 0; memcpy (cmd + 4, name, strlen (name)); cmd_len = strlen (name) + 4; CR (fuji_transmit (camera, cmd, cmd_len, buf, &buf_len, context)); CLEN (buf_len, 1); /* Check the response */ switch (buf[0]) { case FUJI_ACK: break; case FUJI_NAK: gp_context_error (context, _("The camera does not " "accept '%s' as filename."), name); return (GP_ERROR); default: gp_context_error (context, _("Could not initialize upload " "(camera responded with 0x%02x)."), buf[0]); return (GP_ERROR); } return (GP_OK); } #define CHUNK_SIZE 512 int fuji_upload (Camera *camera, const unsigned char *data, unsigned int size, GPContext *context) { unsigned char cmd[1024], c; unsigned int cmd_len, chunk_size, retries, i; /* * The old driver did upload in chunks of 512 bytes. I don't know * if this is optimal. */ cmd[0] = 0; cmd[1] = FUJI_CMD_UPLOAD; for (i = 0; i < size; i+= CHUNK_SIZE) { chunk_size = MIN (CHUNK_SIZE, size - i); cmd[2] = chunk_size; cmd[3] = (chunk_size >> 8); memcpy (cmd + 4, data + i, chunk_size); cmd_len = chunk_size + 4; retries = 0; while (1) { /* Give the user the possibility to cancel. */ if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { CR (fuji_reset (camera, context)); return (GP_ERROR_CANCEL); } CR (fuji_send (camera, cmd, cmd_len, (i + CHUNK_SIZE < size) ? 0 : 1, context)); /* Receive ACK (hopefully) */ CR (gp_port_read (camera->port, (char *)&c, 1)); switch (c) { case ACK: break; case NAK: /* Camera didn't like the command */ if (++retries > 1) { gp_context_error (context, _("Camera rejected " "the command.")); return (GP_ERROR); } continue; case EOT: /* Camera got fed up and reset itself. */ gp_context_error (context, _("Camera reset " "itself.")); return (GP_ERROR); default: gp_context_error (context, _("Camera sent " "unexpected byte 0x%02x."), c); return (GP_ERROR_CORRUPTED_DATA); } break; } } return (GP_OK); } int fuji_set_speed (Camera *camera, FujiSpeed speed, GPContext *context) { unsigned char cmd[5], buf[1024]; unsigned int buf_len = 0; GP_DEBUG("Attempting to set speed to %i",speed); cmd[0] = 1; cmd[1] = FUJI_CMD_SPEED; cmd[2] = 1; cmd[3] = 0; cmd[4] = speed; CR (fuji_transmit (camera, cmd, 5, buf, &buf_len, context)); CLEN (buf_len, 1); /* Check the response */ switch (buf[0]) { case FUJI_ACK: break; case FUJI_NAK: gp_context_error (context, _("The camera does not " "support speed %i."), speed); return (GP_ERROR_NOT_SUPPORTED); default: gp_context_error (context, _("Could not set speed to " "%i (camera responded with %i)."), speed, buf[0]); return (GP_ERROR); } GP_DEBUG("Success with speed %i.",speed); /* Reset the connection */ CR (fuji_reset (camera, context)); return (GP_OK); } static int fuji_reset (Camera *camera, GPContext *context) { unsigned char c = EOT; CR (gp_port_write (camera->port, (char *)&c, 1)); return (GP_OK); } #if 0 static int fuji_get_flash_mode (void) { cmd0 (0, 0x30); return answer[4]; } static int fuji_set_flash_mode (int mode) { cmd1 (0, 0x32, mode); return answer[4]; } static int fuji_picture_size (int i) { cmd2 (0, FUJI_SIZE, i); return answer[4] + (answer[5] << 8) + (answer[6] << 16) + (answer[7] << 24); } static int charge_flash (void) { cmd2 (0, FUJI_CHARGE_FLASH, 200); return answer[4]; } static int take_picture (void) { cmd0 (0, FUJI_CMD_TAKE); return answer[4] + (answer[5] << 8) + (answer[6] << 16) + (answer[7] << 24); } static int del_frame (int i) { cmd2 (0, FUJI_CMD_DELETE, i); return answer[4]; } int fuji_get_cmds (Camera *camera, unsigned char *cmds, GPContext *context) { unsigned char answer[0xff]; unsigned int answer_len = 0xff; memset (cmds, 0, 0xff); CR (fuji_cmd0 (camera, 0, FUJI_CMD_CMDS_VALID, answer, &answer_len, context)); int i; DBG("Get command list"); memset(fjd->has_cmd, 0, 256); if (cmd0 (0, FUJI_CMDS_VALID)) return ; for (i = 4; i < answer_len; i++) fjd->has_cmd[answer[i]] = 1; } static int get_picture_info(int num,char *name,CameraPrivateLibrary *camdata){ DBG("Getting name..."); strncpy(name,fuji_picture_name(num),100); DBG2("%s\n",name); /* * To find the picture number, go to the first digit. According to * recent Exif specs, n_off can be either 3 or 4. */ if (camdata->has_cmd[FUJI_SIZE]) fuji_size=fuji_picture_size(num); else { fuji_size=70000; /* this is an overestimation for DS7 */ DBG2("Image size not obtained, guessing %d",fuji_size); }; return (fuji_size); }; static void get_picture_list (FujiData *fjd) { int i, n_off; char *name; struct stat st; pictures = fuji_nb_pictures(); maxnum = 100; free(pinfo); pinfo = calloc(pictures+1, sizeof(struct pict_info)); if (pinfo==NULL) { DBG("Allocation error"); }; for (i = 1; i <= pictures; i++) { DBG("Getting name..."); name = strdup(fuji_picture_name(i)); pinfo[i].name = name; DBG2("%s\n",name); /* * To find the picture number, go to the first digit. According to * recent Exif specs, n_off can be either 3 or 4. */ n_off = strcspn(name, "0123456789"); if ((pinfo[i].number = atoi(name+n_off)) > maxnum) maxnum = pinfo[i].number; if (fjd->has_cmd[FUJI_SIZE]) pinfo[i].size = fuji_picture_size(i); else pinfo[i].size=65000; pinfo[i].ondisk = !stat(name, &st); } } static int download_picture(int n,int thumb,CameraFile *file,CameraPrivateLibrary *fjd) { clock_t t1, t2; char name[100]; long int file_size; char *data; DBG3("download_picture: %d,%s",n,thumb?"thumb":"pic"); if (!thumb) { fuji_size=get_picture_info(n,name,fjd); DBG3("Info %3d %12s ", n, name); } else fuji_size=10500; /* Probly not same for all cams, better way ? */ DBG2("calling download for %d bytes",fuji_size); t1 = times(0); if (cmd2(0, (thumb?0:0x02), n)==-1) return(GP_ERROR); DBG3("Download :%4d actual bytes vs expected %4d bytes\n", fuji_count ,fuji_size); /* file->bytes_read=fuji_count; */ /* add room for thumb-decode */ /* file->size=fuji_count+(thumb?128:0); */ file_size=fuji_count+(thumb?128:0); data=malloc(file_size); if (data==NULL) return(GP_ERROR); memcpy(data,fuji_buffer,fuji_count); gp_file_set_data_and_size(file,data,file_size); t2 = times(0); DBG2("%3d seconds, ", (int)(t2-t1) / CLK_TCK); DBG2("%4d bytes/s\n", fuji_count * CLK_TCK / (int)(t2-t1)); if (fjd->has_cmd[17]&&!thumb){ if (!thumb&&(fuji_count != fuji_size)){ /* gp_frontend_status(NULL,"Short picture file--disk full or quota exceeded\n"); */ return(GP_ERROR); }; }; return(GP_OK); } static int fuji_free_memory (void) { cmd0 (0, FUJI_CMD_FREE_MEM); return answer[5] + (answer[6]<<8) + (answer[7]<<16) + (answer[8]<<24); } static int upload_pic (const char *picname) { unsigned char buffer[516]; const char *p; struct stat st; FILE *fd; int c, last, len, free_space; fd = fopen(picname, "r"); if (fd == NULL) { /* update_status("Cannot open file for upload"); */ return 0; } if (fstat(fileno(fd), &st) < 0) { DBG("fstat"); return 0; } free_space = fuji_free_memory(); fprintf(stderr, "Uploading %s (size %d, available %d bytes)\n", picname, (int) st.st_size, free_space); if (st.st_size > free_space) { fprintf(stderr, " not enough space\n"); return 0; } if ((p = strrchr(picname, '/')) != NULL) picname = p+1; if (strlen(picname) != 12 || memcmp(picname,"DSC",3) || memcmp(picname+8,".JPG",4)) { picname = auto_rename(); fprintf(stderr, " file renamed %s\n", picname); } buffer[0] = 0; buffer[1] = 0x0F; buffer[2] = 12; buffer[3] = 0; memcpy(buffer+4, picname, 12); cmd(16, buffer); if (answer[4] != 0) { fprintf(stderr, " rejected by the camera\n"); return 0; } buffer[1] = 0x0E; while(1) { len = fread(buffer+4, 1, 512, fd); if (!len) break; buffer[2] = len; buffer[3] = (len>>8); last = 1; if ((c = getc(fd)) != EOF) { last = 0; ungetc(c, fd); } if (!last && interrupted) { fprintf(stderr, "Interrupted!\n"); exit(1); } again: send_packet(4+len, buffer, last); /*wait_for_input(1);*/ if (get_byte() == 0x15) goto again; } fclose(fd); fprintf(stderr, " looks ok\n"); return 1; } #endif libgphoto2-2.5.9/camlibs/fuji/Makefile-files0000644000175000001440000000036712561423351015634 00000000000000EXTRA_DIST += fuji/PROTOCOL fuji/ChangeLog EXTRA_LTLIBRARIES += fuji.la fuji_la_SOURCES = fuji/library.c fuji/fuji.c fuji/fuji.h fuji_la_LDFLAGS = $(camlib_ldflags) fuji_la_DEPENDENCIES = $(camlib_dependencies) fuji_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/fuji/ChangeLog0000644000175000001440000000542112557123324014644 000000000000002002-04-22 Lutz Müller * library.c (post_func): Only put the camera back to 9600 bps if this is needed. And don't reset the camera before the speed change. 2002-04-21 Matt Martin * library.c In post_func: Bring serial port speed back down immediately after resetting the camera (kills the high speed at least on the DS7). Note that this doesn't seem to be a problem immediately following the speed change command. Needs to be tested on all cams in light of Lutz's earlier comment that the speed isn't getting reset ! 2002-04-21 Matt Martin * fuji.c Remove 0xff escaping code now done by libgphoto2_port 2002-04-21 Lutz Müller * fuji.c: Formatting. 2002-04-21 Lutz Müller * library.c: * fuji.[c,h]: Implement upload and summary. 2002-04-21 Lutz Müller * library.c: A fuji_reset doesn't seem to reset the speed to 9600. 2002-04-21 Matt Martin * fuji.c: Fixed some pointer errors in CFR macro calls. Added escaping of 0xff codes in downloads. Made provisions for DS-7 which does not support file-length query. # fuji.h: Fixed FUJI_CMD_PIC_GET vs PIC_GET_THUMB swap. 2002-04-19 Lutz Müller * library.c: Don't make the check for supported commands fatal. 2002-04-19 Lutz Müller * library.c: If we tell the camera to switch to another speed, we need to change the port's speed, too. 2002-04-18 Lutz Müller * library.c * fuji.[c,h]: Basic configuration support. Progress information. 2002-04-18 Lutz Müller * PROTOCOL: Some notes. * fuji.c: Fix calculation of packet length. 2002-04-18 Lutz Müller * library.c: * fuji.[c,h]: Use the [pre,post]_func-tions. 2002-04-18 Lutz Müller * library.c: * fuji.[c,h]: Check for supported commands. 2002-04-18 Lutz Müller * fuji.c: Fix calculation of checksum. 2002-04-18 Lutz Müller * fuji.c: For now, don't check the checksum. 2002-04-18 Lutz Müller * fuji.c: Fix calculation of packet length. 2002-04-18 Lutz Müller * library.c: * fuji.[c,h]: Implement fetching of previews. 2002-04-17 Lutz Müller * fuji.c: Fix logic. 2002-04-17 Lutz Müller * fuji.[c,h]: * library.c: More functions. Needs testing. 2002-04-16 Lutz Müller * library.c: New. * fuji.[c,h]: Rewrite. * exif.[c,h]: * fuji_exif.c: Removed. * Makefile.am: Updated. libgphoto2-2.5.9/camlibs/fuji/fuji.h0000644000175000001440000001006312610415536014175 00000000000000/* fuji.h * * Copyright 2002 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __FUJI_H__ #define __FUJI_H__ #include #include enum _FujiCmd { FUJI_CMD_PIC_GET = 0x02, FUJI_CMD_PIC_GET_THUMB = 0x00, FUJI_CMD_SPEED = 0x07, FUJI_CMD_VERSION = 0x09, FUJI_CMD_PIC_NAME = 0x0a, FUJI_CMD_PIC_COUNT = 0x0b, FUJI_CMD_UNKNOWN1 = 0x0c, /* Figure this out! */ FUJI_CMD_UPLOAD = 0x0e, FUJI_CMD_UPLOAD_INIT = 0x0f, FUJI_CMD_UNKNOWN4 = 0x11, /* Figure this out! */ FUJI_CMD_UNKNOWN5 = 0x13, /* Figure this out! */ FUJI_CMD_PIC_SIZE = 0x17, FUJI_CMD_PIC_DEL = 0x19, FUJI_CMD_AVAIL_MEM = 0x1b, FUJI_CMD_UNKNOWN10 = 0x20, /* Figure this out! */ FUJI_CMD_UNKNOWN11 = 0x22, /* Figure this out! */ FUJI_CMD_TAKE = 0x27, FUJI_CMD_MODEL = 0x29, FUJI_CMD_UNKNOWN13 = 0x2a, /* Figure this out! */ FUJI_CMD_UNKNOWN14 = 0x2b, /* Figure this out! */ FUJI_CMD_UNKNOWN15 = 0x2e, /* Figure this out! */ /* Flash related commands */ FUJI_CMD_FLASH_GET = 0x30, FUJI_CMD_FLASH_SET = 0x32, FUJI_CMD_FLASH_CHARGE = 0x34, FUJI_CMD_CMDS_VALID = 0x4c, FUJI_CMD_UNKNOWN16 = 0x51, /* Figure this out! */ FUJI_CMD_PREVIEW = 0x64, /* Configurable settings */ FUJI_CMD_ID_GET = 0x80, FUJI_CMD_ID_SET = 0x82, FUJI_CMD_DATE_GET = 0x84, FUJI_CMD_DATE_SET = 0x86, FUJI_CMD_UNKNOWN8 = 0xc0 /* Figure this out! */ }; typedef enum _FujiCmd FujiCmd; int fuji_get_cmds (Camera *camera, unsigned char *cmds, GPContext *context); int fuji_ping (Camera *, GPContext *context); int fuji_pic_count (Camera *, unsigned int *n, GPContext *); int fuji_version (Camera *, const char **version, GPContext *); int fuji_model (Camera *, const char **model, GPContext *); int fuji_avail_mem (Camera *, unsigned int *avail_mem, GPContext *); int fuji_upload_init (Camera *, const char *name, GPContext *); int fuji_upload (Camera *, const unsigned char *data, unsigned int size, GPContext *context); int fuji_id_get (Camera *camera, const char **id, GPContext *context); int fuji_id_set (Camera *camera, const char *id, GPContext *context); typedef struct _FujiDate FujiDate; struct _FujiDate { unsigned int year; unsigned int month; unsigned int day; unsigned int hour; unsigned int min; unsigned int sec; }; int fuji_date_get (Camera *camera, FujiDate *date, GPContext *context); int fuji_date_set (Camera *camera, FujiDate date, GPContext *context); /* Operations on pictures */ int fuji_pic_name (Camera *camera, unsigned int i, const char **name, GPContext *context); int fuji_pic_size (Camera *camera, unsigned int i, unsigned int *size, GPContext *context); int fuji_pic_del (Camera *camera, unsigned int i, GPContext *context); int fuji_pic_get (Camera *camera, unsigned int i, unsigned char **data, unsigned int *size, GPContext *context); int fuji_pic_get_thumb (Camera *camera, unsigned int i, unsigned char **data, unsigned int *size, GPContext *context); enum _FujiSpeed { FUJI_SPEED_9600 = 0, FUJI_SPEED_19200 = 5, FUJI_SPEED_38400 = 6, FUJI_SPEED_57600 = 7, FUJI_SPEED_115200 = 8 }; typedef enum _FujiSpeed FujiSpeed; int fuji_set_speed (Camera *camera, FujiSpeed speed, GPContext *context); #endif /* __FUJI_H__ */ libgphoto2-2.5.9/camlibs/largan/0000755000175000001440000000000012623156266013464 500000000000000libgphoto2-2.5.9/camlibs/largan/lmini/0000755000175000001440000000000012623156267014575 500000000000000libgphoto2-2.5.9/camlibs/largan/lmini/README.largan-lmini0000644000175000001440000000014412561423351017735 00000000000000This is the driver for largan lmini camera. It is still untested because I don't have the camera. libgphoto2-2.5.9/camlibs/largan/lmini/lmini.c0000644000175000001440000003333412610415536015770 00000000000000/* library.c (for Largan) * * Copyright 2002 Hubert Figuiere * Code largely borrowed to lmini-0.1 by Steve O Connor * With the help of specifications for lmini camera by Largan * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include "gphoto2-endian.h" #include "lmini.h" #include "lmini_ccd.h" #define GP_MODULE "largan" static const char BMPheader[54]={ 0x42, 0x4d, 0x36, 0x10, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x28, 0x0, 0x0, 0x0, 0x54, 0x0, 0x0, 0x0,0x40, 0x0, 0x0, 0x0, 0x1, 0x0,0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,0x10, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, }; #if 0 /* * baud rate enumerations */ static struct largan_baud_rate { int baud; char value; /* value to be sent in the protocol */ } bauds [] = { {19200, 0x02 }, /* default */ {38400, 0x03 }, { 9600, 0x01 }, { 4800, 0x00 }, { 0, 0x00 } }; #endif enum { LARGAN_NUM_PICT_CMD = 0xfa, LARGAN_GET_PICT_CMD = 0xfb, LARGAN_BAUD_ERASE_CMD = 0xfc, /* set baud rate and erase use the same command */ LARGAN_CAPTURE_CMD = 0xfd }; static int purge_camera (Camera * camera); static int wakeup_camera (Camera * camera); static int largan_send_command (Camera * camera, uint8_t cmd, uint8_t param1, uint8_t param2); static int largan_recv_reply (Camera * camera, uint8_t *reply, uint8_t *code, uint8_t * code2); static int set_serial_speed (Camera * camera, int speed); largan_pict_info * largan_pict_new (void) { largan_pict_info * ptr = (largan_pict_info *)malloc (sizeof (largan_pict_info)); memset (ptr, 0, sizeof (largan_pict_info)); ptr->quality = 0xff; /* something invalid */ return ptr; } void largan_pict_free (largan_pict_info * ptr) { if (ptr->data) { free (ptr->data); } free (ptr); } static void largan_pict_alloc_data (largan_pict_info * ptr, uint32_t size) { ptr->data = realloc (ptr->data, size); ptr->data_size = size; } /* * Open the camera */ int largan_open (Camera * camera) { int ret; ret = largan_get_num_pict (camera); if (ret < 0){ ret = purge_camera (camera); if (ret == GP_ERROR) { return ret; } ret = wakeup_camera (camera); } return ret; /* here: number of pictures */ } /* * Return the number of pictures in the camera, -1 if error. */ int largan_get_num_pict (Camera * camera) { int ret; unsigned char reply, code; ret = largan_send_command (camera, LARGAN_NUM_PICT_CMD, 0, 0); if (ret < 0) { GP_DEBUG ("largan_send_command() failed: %d\n", ret); return -1; } ret = largan_recv_reply (camera, &reply, &code, NULL); if (ret < 0) { GP_DEBUG ("largan_recv_reply() failed: %d\n", ret); return -1; } if (reply != LARGAN_NUM_PICT_CMD) { GP_DEBUG ("Reply incorrect\n"); return -1; } return code; } /* * get image index and return it in largan_pict_info * * return GP_OK if OK. Otherwise < 0 */ int largan_get_pict (Camera * camera, largan_pict_type type, uint8_t index, largan_pict_info * pict) { int ret; uint8_t reply,code; uint8_t param; uint8_t buf[5]; uint32_t pict_size; /* size of the picture as returned by the camera */ switch (type) { case LARGAN_PICT: param = 0x01; break; case LARGAN_THUMBNAIL: param = 0x00; break; default: GP_DEBUG ("largan_get_pict(): wrong picture type requested !\n"); return GP_ERROR; } ret = largan_send_command (camera, LARGAN_GET_PICT_CMD, param, index); if (ret < 0) { return ret; } ret = largan_recv_reply (camera, &reply, &code, NULL); /* here we have to receive 7 bytes back the 2nd contains 00 for thumbnail or 01 for original picture the 3rd contains the picturenumber for an original picture or 00 for an thumbnail for an lowres picture or 01 for an thumbnail for an hires picture bytes 4 5 6 7 contain the number of byte coming in the datastream */ /* the 1st and the 2nd byte are read here */ if (ret < 0) { /* clean up and give it a 2nd chance */ wakeup_camera (camera); largan_send_command (camera, LARGAN_GET_PICT_CMD, param, index); GP_DEBUG ("largan_get_pict(): command sent 2nd time\n"); ret = largan_recv_reply (camera, &reply, &code, NULL); if (ret < 0) { /* clean up and give it even a 3rd chance */ wakeup_camera (camera); sleep (5); largan_send_command (camera, LARGAN_GET_PICT_CMD, param, index); GP_DEBUG ("largan_get_pict(): command sent 3rd time\n"); ret = largan_recv_reply (camera, &reply, &code, NULL); if (ret < 0) { GP_DEBUG ("largan_get_pict(): timeout after command sent 3rd time\n"); return ret; /* timeout after 3rd trial */ } } } if ((reply != LARGAN_GET_PICT_CMD) || ((code != 0x01) && (code != 0x00))) { GP_DEBUG ("largan_get_pict(): code != 0x01 && 0x00\n"); return GP_ERROR; } /* the remaining 5 bytes are read here */ ret = gp_port_read (camera->port, (char *)buf, sizeof(buf)); if (ret < GP_OK) { return ret; } if (ret < 5) { GP_DEBUG ("largan_get_pict(): unexpected short read\n"); return GP_ERROR; } if (type == LARGAN_PICT) { if (buf[0] != index) { GP_DEBUG ("largan_get_pict(): picture index inconsistent\n"); return GP_ERROR; } } else { if (buf[0] > 1) { GP_DEBUG ("largan_get_pict(): thumb size inconsistent\n"); return GP_ERROR; } } pict->type = type; pict_size = be32atoh (&buf[1]); switch (type) { case LARGAN_PICT: largan_pict_alloc_data (pict, pict_size); ret = gp_port_read (camera->port, pict->data, pict->data_size); if (ret < GP_OK) { return ret; } if (ret < pict->data_size) { GP_DEBUG ("largan_get_pict(): picture data short read\n"); return GP_ERROR; } pict->quality = 0xff; /* this is not a thumbnail */ break; case LARGAN_THUMBNAIL: { char * buffer = (char*)malloc(pict_size); if (!buffer) return GP_ERROR_NO_MEMORY; ret = gp_port_read (camera->port, buffer, pict_size); if (ret < GP_OK) { free (buffer); return ret; } largan_pict_alloc_data (pict, 19200 + sizeof(BMPheader)); memcpy (pict->data, BMPheader, sizeof(BMPheader)); /*this is the segfaulty function */ largan_ccd2dib (buffer, pict->data + sizeof(BMPheader), 240, 1); free (buffer); pict->quality = buf[0]; break; } default: GP_DEBUG ("largan_get_pict(): type not LARGAN_PICT nor LARGAN_THUMBNAIL\n"); return GP_ERROR; } return GP_OK; } /* * erase a pictures * if all > 0 then all pictures are erased, otherwise the last one is * * return GP_OK if OK. */ int largan_erase (Camera *camera, int pict_num) { int ret; int num_pix; uint8_t erase_code; uint8_t reply,code; if (pict_num == 0xff) { erase_code = 0x11; GP_DEBUG ("largan_erase() all sheets \n"); } else { num_pix = largan_get_num_pict (camera); if (pict_num == num_pix) { erase_code = 0x10; GP_DEBUG ("largan_erase() last sheet \n"); } else { GP_DEBUG ("Only the last sheet can be erased!\n"); return GP_ERROR; } } ret = largan_send_command (camera, LARGAN_BAUD_ERASE_CMD, erase_code, 0); if (ret < 0) { return ret; } ret = largan_recv_reply (camera, &reply, &code, NULL); if (ret < 0) { return ret; } if ((reply != LARGAN_BAUD_ERASE_CMD) || (code != erase_code)) { GP_DEBUG ("largan_erase() wrong error code\n"); return GP_ERROR; } return GP_OK; } /* * Take a picture with the camera * * return GP_OK if OK */ int largan_capture (Camera *camera) { int ret; uint8_t reply, code, code2; ret = largan_send_command (camera, LARGAN_CAPTURE_CMD, 0, 0); if (ret < 0) { return ret; } ret = largan_recv_reply (camera, &reply, &code, &code2); if (ret < 0) { GP_DEBUG ("return ret\n"); return ret; } if (reply != LARGAN_CAPTURE_CMD) { GP_DEBUG ("largan_capture(): inconsisten reply code\n"); return GP_ERROR; } if (code != code2) { GP_DEBUG ("code != code2\n"); return GP_ERROR; } if (code == 0xee) { GP_DEBUG ("Memory full\n"); return GP_ERROR; } if (code != 0xff) { GP_DEBUG ("largan_capture(): inconsistent reply\n"); return GP_ERROR; } return GP_OK; } #if 0 /* * Tell the camera to change the speed * Then set the serial port speed */ static int largan_set_serial_speed (Camera * camera, int speed) { int ret; int i; uint8_t reply, code; if (camera->port->type != GP_PORT_SERIAL) { GP_DEBUG ("largan_set_serial_speed() called on non serial port\n"); return GP_ERROR; } for (i = 0; bauds[i].baud; i++) { if (bauds[i].baud == speed) { ret = largan_send_command (camera, LARGAN_BAUD_ERASE_CMD, bauds[i].value, 0); if (ret < 0) { return ret; } ret = largan_recv_reply (camera, &reply, &code, NULL); if (ret < 0) { return ret; } if (reply != LARGAN_BAUD_ERASE_CMD) { return ret; } if (code != bauds[i].baud) { return ret; } return set_serial_speed (camera, bauds[i].baud); } } GP_DEBUG ("largan_set_serial_speed(): baud rate not found\n"); return GP_ERROR; } #endif /* * received a reply from the camera. * can accept NULL on input. * TODO: check how much we need to read. */ static int largan_recv_reply (Camera * camera, uint8_t *reply, uint8_t *code, uint8_t *code2) { int ret; uint8_t packet [4]; uint8_t packet_size = 0; memset (packet, 0, sizeof (packet)); ret = gp_port_read (camera->port, (char *)packet, 1); if (ret < GP_OK) { return ret; } switch (packet[0]) { case LARGAN_NUM_PICT_CMD: packet_size = 2; break; case LARGAN_GET_PICT_CMD: packet_size = 2; break; case LARGAN_BAUD_ERASE_CMD: packet_size = 2; break; case LARGAN_CAPTURE_CMD: packet_size = 3; break; default: packet_size = 0; GP_DEBUG("largan_receive_reply: Unknown reply.\n"); break; } if (reply) { *reply = packet[0]; } if (packet_size >= 2) { ret = gp_port_read (camera->port, (char *)&packet[1], 1); if (ret < GP_OK) { return ret; } if (code) { *code = packet[1]; } } if (packet_size >= 3) { ret = gp_port_read (camera->port, (char *)&packet[2], 1); if (ret < GP_OK) { return ret; } if (code2) { *code2 = packet[2]; } } return ret; } /* * Send a command packet */ static int largan_send_command (Camera * camera, uint8_t cmd, uint8_t param1, uint8_t param2) { uint8_t packet_size = 0; uint8_t packet [3]; memset (&packet, 0, sizeof (packet)); packet [0] = cmd; switch (cmd) { case LARGAN_NUM_PICT_CMD: packet_size = 1; break; case LARGAN_GET_PICT_CMD: if ((param1 != 0) && (param1 != 1)) { GP_DEBUG ("wrong parameter for get picture\n"); return GP_ERROR; /* wrong parameter */ } packet[1] = param1; packet[2] = param2; packet_size = 3; break; case LARGAN_BAUD_ERASE_CMD: if ((param1 > 0x11) || ((param1 > 0x03) && (param1 < 0x10))) { GP_DEBUG ("wrong parameter for baud/erase\n"); return GP_ERROR; /* wrong parameter */ } packet[1] = param1; packet_size = 2; break; case LARGAN_CAPTURE_CMD: packet_size = 1; break; default: GP_DEBUG ("unknown command\n"); return GP_ERROR; /* unknown command */ } return gp_port_write (camera->port, (char *)packet, packet_size); } /* * set the baud speed for serial port */ static int set_serial_speed (Camera * camera, int speed) { int ret; GPPortSettings settings; GP_DEBUG ("set_serial_speed() called ***************\n"); if (camera->port->type != GP_PORT_SERIAL) { GP_DEBUG ("set_serial_speed() called on non serial port\n"); return GP_ERROR; } ret = gp_port_get_settings (camera->port, &settings); if (ret < 0) { return ret; } settings.serial.speed = speed; ret = gp_port_set_settings (camera->port, settings); return ret; } /* * purge the camera internal buffers */ static int purge_camera (Camera * camera) { int count; long t1, t2; uint8_t buffer[1]; t1 = time (NULL); while (1) { count = gp_port_read (camera->port, (char *)buffer, 1); if (count < GP_OK) return count; if (count) { t1 = time(NULL); } else { t2 = time(NULL); if ((t2 - t1) > 1) { GP_DEBUG ("Camera purged\n"); return GP_OK; } } } GP_DEBUG ("Could not purge camera\n"); return GP_ERROR; } /* * Try to initiate something with the camera just to make sure it * answer. Will check all the speed in case the camera has not been reset * Perhaps is there a smarter way. This is the way it is done in lmini. */ static int wakeup_camera (Camera * camera) { int num_pix; /* int i;*/ if (camera->port->type == GP_PORT_SERIAL) { set_serial_speed (camera, 4800); /*wakes camera best*/ num_pix = largan_get_num_pict (camera); /*this wakes*/ set_serial_speed (camera, 19200); /*back to normal*/ sleep (1); num_pix = largan_get_num_pict (camera); /*this wakes*/ if (num_pix >= 0){ return GP_OK; } } purge_camera (camera); return GP_ERROR; } libgphoto2-2.5.9/camlibs/largan/lmini/lmini_ccd.c0000644000175000001440000001426212561423351016577 00000000000000/* * This file convert raw CCD bitmaps to BMP. Used for thumbnails. * Code probably grafted from Largan Lmini SDK. */ #include #include "lmini_ccd.h" static void fetchstr(int, int, int); static void dhuf(int); static void YCbCr2RGB(int *YY, int Cb, int Cr, int w, int h); static int _nCcdFactor = 1; static char *data; static long out_index; static long count; static int in_bit; static unsigned char BUFF11[14400]; static unsigned long in_string; static int pre_y, pre_cb, pre_cr; static int y[7446]; static const int y_max[10]= { 0x0, 0x0, 0x0, 0x6, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe, }; static const int y_min[10]= { 0x0, 0x0, 0x0, 0x2, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe, }; static const int uv_max[12]= { 0x0, 0x0, 0x2, 0x6, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe, 0x3fe, 0x7fe }; static const int uv_min[12]= { 0x0, 0x0, 0x0, 0x6, 0xe, 0x1e, 0x3e, 0x7e, 0xfe, 0x1fe, 0x3fe, 0x7fe }; /* --------------------------------------------------------------------------- */ void largan_ccd2dib(char *pData, char *pDib, long dwDibRowBytes, int nCcdFactor) { int i, j, w, h; int YY[4], Cb, Cr; _nCcdFactor = nCcdFactor; data = pData; /************************************************/ Cb = 0; Cr = 0; pre_y = 0; pre_cb = 0; pre_cr = 0; in_string = (*data << 8) | *(data + 1); in_bit = 16; count = 2; out_index = 0; /******************************************************/ for (j = 0; j < 1200; j++) { for (i = 0; i < 4; i++) dhuf(0); dhuf(1); dhuf(2); } /* printf("Now process the DC term to R G B transfer !\n"); */ for (h = 0; h < 30; h++) /* mini size height = 30 x 2 */ { for (w = 0; w < 40; w++) { for (i = 0; i < 6; i++) { int k = i + w * 6 + h * 240; if (i < 4) YY[i] = y[k] * _nCcdFactor; else if (i == 4) Cb = y[k] * _nCcdFactor; else if (i == 5) Cr = y[k] * _nCcdFactor; } YCbCr2RGB(YY, Cb, Cr, w, h); } } for (i = 0, j = 0; i < 60; i++, j += 240) { memcpy (pDib, &BUFF11[j], 240); pDib -= dwDibRowBytes; } } /* --------------------------------------------------------------------------- */ static void YCbCr2RGB(int *YY, int Cb, int Cr, int w, int h) { int i; double B,G,R; double c2 = 1.7753, c3 = -0.0015; double c5 = -0.3443, c6 = -0.7137; double c8 = -0.0009, c9 = 1.4017; for (i = 0; i < 2; i++) { int k = 3 * i + w * 6 + h * 480; B = ((double) YY[i] + 128.0 + c2 * Cb + c3 * Cr) + 0.5; if (B > 255) B = 255; else if (B < 0) B = 0; BUFF11[k] = (unsigned char) B; G = ((double) YY[i] + 128.0 + c5 * Cb + c6 * Cr) + 0.5; if (G > 255) G = 255; else if (G < 0) G = 0; BUFF11[k + 1] = (unsigned char) G; R = ((double) YY[i] + 128.0 + c8 * Cb + c9 * Cr) + 0.5; if (R > 255) R = 255; else if (R < 0) R = 0; BUFF11[k + 2] = (unsigned char) R; } for (i = 0; i < 2; i++) { int k = 3 * i + w * 6 + h * 480 + 240; B = ((double) YY[i + 2] + 128.0 + c2 * Cb + c3 * Cr) + 0.5; if (B > 255) B = 255; else if (B < 0) B = 0; BUFF11[k] = (unsigned char) B; G = ((double) YY[i + 2] + 128.0 + c5 * Cb + c6 * Cr) + 0.5; if (G > 255) G = 255; else if (G < 0) G = 0; BUFF11[k + 1] = (unsigned char) G; R = ((double) YY[i + 2] + 128.0 + c8 * Cb + c9 * Cr) + 0.5; if (R > 255) R = 255; else if (R < 0) R = 0; BUFF11[k + 2] = (unsigned char) R; } } /* --------------------------------------------------------------------------- */ static void dhuf(int flag) { int code_leng, val_leng; int temp_s; int temp; int temp1; code_leng = 2; val_leng = 0; temp_s = (int) in_string; temp_s >>= 14; if (flag == 0) { while (((int)temp_s > y_max[code_leng]) || ((int)temp_s < y_min[code_leng])) { code_leng++; temp_s = (int) in_string; temp_s >>= (16 - code_leng); } } else { while (((int)temp_s > uv_max[code_leng]) || ((int)temp_s < uv_min[code_leng])) { code_leng++; temp_s = (int) in_string; temp_s >>= (16 - code_leng); } } temp = (int) in_string; temp >>= (16 - code_leng); temp1 = (int) temp; fetchstr(code_leng, 0, flag); if (flag == 0) { if (code_leng == 3) { switch (temp1) { case 2 : val_leng = 1; break; case 3 : val_leng = 2; break; case 4 : val_leng = 3; break; case 5 : val_leng = 4; break; case 6 : val_leng = 5; break; default: break; } } else if (code_leng == 2) val_leng = 0; else val_leng = code_leng + 2; } else { if (code_leng == 2) { switch (temp1) { case 0 : val_leng = 0; break; case 1 : val_leng = 1; break; case 2 : val_leng = 2; break; default: break; } } else val_leng = code_leng; } fetchstr(val_leng, 1, flag); } /* --------------------------------------------------------------------------- */ static void fetchstr(int shift_bit, int val_flag, int flag) { int temp_val; int value1, value2; int temp = 0; temp_val = (int) in_string; temp_val >>= (16 - shift_bit); in_string <<= shift_bit; in_bit -= shift_bit; if ((val_flag == 1) && (shift_bit == 0)) { if (flag == 0) temp = pre_y; else if (flag == 1) temp = pre_cb; else if (flag == 2) temp = pre_cr; y[out_index] = temp; out_index++; } if ((val_flag == 1) && (shift_bit != 0)) { value1 = (int) temp_val; value2 = value1; value2 &= (1 << (shift_bit - 1)); if (value2 != 0) { if (flag == 0) { pre_y += value1; temp = pre_y; } else if (flag == 1) { pre_cb += value1; temp = pre_cb; } else if (flag == 2) { pre_cr += value1; temp=pre_cr; } y[out_index] = temp; out_index++; } else { value1++; value1 = -value1; value1 &= ((1 << shift_bit) - 1); value1 = -value1; if (flag == 0) { pre_y += value1; temp = pre_y; } else if (flag == 1) { pre_cb += value1; temp = pre_cb; } else if (flag == 2) { pre_cr +=value1; temp = pre_cr; } y[out_index] = temp; out_index++; } } while (in_bit <= 8) { in_string = in_string | (*(data + count) << (8 - in_bit)); in_bit += 8; count++; } } libgphoto2-2.5.9/camlibs/largan/lmini/Makefile-files0000644000175000001440000000064312561423351017250 00000000000000EXTRA_DIST += largan/lmini/README.largan-lmini largan/lmini/ChangeLog camlibdoc_DATA += largan/lmini/README.largan-lmini EXTRA_LTLIBRARIES += largan.la largan_la_SOURCES = \ largan/lmini/largan.c \ largan/lmini/lmini.c largan/lmini/lmini.h \ largan/lmini/lmini_ccd.c largan/lmini/lmini_ccd.h largan_la_LDFLAGS = $(camlib_ldflags) largan_la_DEPENDENCIES = $(camlib_dependencies) largan_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/largan/lmini/lmini.h0000644000175000001440000000315312610415536015771 00000000000000/* library.h (for Largan) * * Copyright 2002 Hubert Figuiere * Code largely inspired by lmini-0.1 by Steve O Connor * With the help of specifications for lmini camera by Largan * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef _LARGAN_LIBRARY_H_ #define _LARGAN_LIBRARY_H_ #include #include "gphoto2-endian.h" typedef enum { LARGAN_NONPICT = 0, LARGAN_PICT, LARGAN_THUMBNAIL } largan_pict_type; typedef struct { largan_pict_type type; uint8_t quality; uint32_t data_size; char * data; } largan_pict_info; largan_pict_info * largan_pict_new (void); void largan_pict_free (largan_pict_info *); int largan_open (Camera * camera); int largan_get_num_pict (Camera * camera); int largan_get_pict (Camera * camera, largan_pict_type type, uint8_t index, largan_pict_info * pict); int largan_erase (Camera *camera, int all); int largan_capture (Camera *camera); #endif libgphoto2-2.5.9/camlibs/largan/lmini/ChangeLog0000644000175000001440000000172712557123324016270 000000000000002004-04-13 Hubert Figuiere * lmini.c (largan_get_pict): get the reply (patch by Lee Olsen ) 2003-05-01 matthschulz * lmini.c: more fixing * largan.c: more fixing 2003-03-04 matthschulz * lmini.c (wakeup_camera): rewrote to make it work (largan_recv_reply): fixed reply reading (largan_erase): now works (largan_get_pict): now works * largan.c (camera_init): delete_file_func (delete_all_func): parameter change (delete_file_func): implemented file deletion 2003-01-29 Hubert Figuiere * lmini.c: changed packet handling. More debug. Better return code checking. (still untested). * largan.c (camera_id): changed camlib ID. 2002-10-31 Marcus Meissner * fixed compiler warnings, got rid of unnecessary global variables 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 libgphoto2-2.5.9/camlibs/largan/lmini/lmini_ccd.h0000644000175000001440000000021612561423351016576 00000000000000#ifndef __LARGAN_CCD_H__ #define __LARGAN_CCD_H__ void largan_ccd2dib(char *pData, char *pDib, long dwDibRowBytes, int nCcdFactor); #endif libgphoto2-2.5.9/camlibs/largan/lmini/largan.c0000644000175000001440000001674612610415536016134 00000000000000/* largan.c * * Copyright 2001 Lutz Mueller * Copyright 2002 Hubert Figuiere * Code largely borrowed to lmini-0.1 by Steve O Connor * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* * Currently only largan lmini is supported */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include "lmini.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define TIMEOUT 1500 /* internal functions prototypes */ static uint8_t convert_name_to_index (const char * name); int camera_id (CameraText *id) { strcpy(id->text, "largan-lmini"); return (GP_OK); } static const struct largan_cameras { char * name; unsigned short idVendor; unsigned short idProduct; char hasSerial; } largan_cameras [] = { { "Largan:Lmini", 0, 0, 1 }, /* these are other largan camera. I'm not sure they use the same * protocol */ /* { "Largan:Chameleon Slim", 0, 0, 0 }, { "Largan:Chameleon Mega", 0, 0, 0 }, { "Largan:Chameleon", 0, 0, 0 }, { "Largan:Easy 800", 0, 0, 1 }, */ { NULL, 0, 0, 0 } }; int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; int i; for (i = 0; largan_cameras[i].name; i++) { memset(&a, 0, sizeof(a)); strcpy(a.model, largan_cameras[i].name); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; if (largan_cameras[i].hasSerial) { a.port |= GP_PORT_SERIAL; } if (largan_cameras[i].idVendor && largan_cameras[i].idProduct) { a.port |= GP_PORT_USB; } if (largan_cameras[i].hasSerial) { a.speed[0] = 4800; a.speed[1] = 9600; a.speed[2] = 19200; a.speed[3] = 38400; a.speed[4] = 0; } a.operations = GP_OPERATION_CAPTURE_IMAGE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; if (a.port) { /* only append if port is defined.*/ gp_abilities_list_append(list, a); } } return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; /* * Get the file from the camera. Use gp_file_set_mime_type, * gp_file_set_data_and_size, etc. */ int ret; largan_pict_info *pict; uint8_t index; /* the index of the file to fetch */ largan_pict_type pict_type; index = convert_name_to_index (filename); switch (type) { case GP_FILE_TYPE_NORMAL: pict_type = LARGAN_PICT; break; case GP_FILE_TYPE_PREVIEW: pict_type = LARGAN_THUMBNAIL; break; default: return GP_ERROR_NOT_SUPPORTED; } pict = largan_pict_new (); ret = largan_get_pict (camera, pict_type, (uint8_t)index, pict); if (ret == GP_OK) { gp_file_append (file, pict->data , pict->data_size); if (pict->type == LARGAN_THUMBNAIL) { gp_file_set_mime_type (file, GP_MIME_BMP); } else { gp_file_set_mime_type (file, GP_MIME_JPEG); } } largan_pict_free (pict); return ret; } static uint8_t convert_name_to_index (const char * name) { long index; /* extract the index from the file name */ char * myFile = strdup (name); *strstr (myFile, ".jpg") = 0; /* strip the extension */ index = strtol(myFile, (char **)NULL, 10); /* TODO check index bounds */ free (myFile); return (uint8_t)index; } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int index; /* Delete one file from the camera. (only the last file can be deleted)*/ index = convert_name_to_index (filename); return largan_erase (camera, index); } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; /* * Delete all files in the given folder. If your camera doesn't have * such a functionality, just don't implement this function. */ return largan_erase (camera, 0xff); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { return largan_capture (camera); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Largan driver\n" "Hubert Figuiere \n")); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int num, i; char name[32]; num = largan_get_num_pict (camera); if (num < 0) { /* error */ return num; } /* List your files here */ for (i = 1; i <= num; i++) { snprintf (name, sizeof(name), "%08d.jpg", i); gp_list_append (list, name, NULL); } return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .delete_all_func = delete_all_func, }; int camera_init (Camera *camera, GPContext *context) { int ret; GPPortSettings settings; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->capture = camera_capture; camera->functions->about = camera_about; /* Now, tell the filesystem where to get lists, files and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* * The port is already provided with camera->port (and * already open). You just have to use functions like * gp_port_timeout_set, gp_port_settings_get, gp_port_settings_set. */ ret = gp_port_get_settings (camera->port, &settings); if (ret < 0) return (ret); switch (camera->port->type) { case GP_PORT_SERIAL: /* Remember the selected speed */ settings.serial.speed = 19200;/* initial speed is 19200 */ settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; ret = gp_port_set_timeout (camera->port, TIMEOUT); if (ret < 0) { return (ret); } break; case GP_PORT_USB: /* TODO check with a USB camera.... */ settings.usb.inep = 0x82; settings.usb.outep = 0x01; settings.usb.config = 1; settings.usb.interface = 0; settings.usb.altsetting = 0; break; default: return (GP_ERROR_UNKNOWN_PORT); } ret = gp_port_set_settings (camera->port, settings); if (ret < 0) return (ret); /* * Once you have configured the port, you should check if a * connection to the camera can be established. */ return largan_open (camera); } libgphoto2-2.5.9/camlibs/stv0674/0000755000175000001440000000000012623156270013350 500000000000000libgphoto2-2.5.9/camlibs/stv0674/library.c0000644000175000001440000001114312610415536015077 00000000000000/* * STV0674 Vision Camera Chipset Driver * Copyright 2000 Adam Harrison * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include "stv0674.h" #include "library.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif int stv0674_ping(GPPort *port) { int ret; unsigned char reply[4]; ret = gp_port_usb_msg_read (port, CMDID_PING, 0, 0, (char *)reply, 1); if (ret < GP_OK) return ret; if(reply[0] != 0) { printf("CMDID_PING successful, but returned bad values?\n"); return GP_ERROR_IO; } return GP_OK; } int stv0674_file_count(GPPort *port, int *count) { int ret; unsigned char reply[4]; ret = gp_port_usb_msg_read (port, CMDID_ENUMERATE_IMAGES, 0, 0, (char *)reply, 4); if (ret < GP_OK) return ret; *count= ((reply[3]) | (reply[2]<<8) | (reply[1]<<16) | (reply[0]<<24)); return GP_OK; } /** * Get image */ int stv0674_get_image_raw(GPPort *port, int image_no, CameraFile *file) { return GP_OK; } static int setval(unsigned char* where,unsigned long val) { where[3]=(val & 0xff); where[2]=((val >> 8) & 0xff); where[1]=((val >> 16) & 0xff); where[0]=((val >> 24) & 0xff); return 0; } int stv0674_get_image(GPPort *port, int image_no, CameraFile *file) { unsigned char header[0x200];/*block for header */ int size; int whole,remain; int current; int ret; unsigned char imagno[8]; unsigned char reply[4]; unsigned char * data; memset(imagno,0,8); image_no+=2; setval(imagno,image_no); ret = gp_port_usb_msg_write (port, CMDID_SET_IMAGE, 0, 0, (char *)imagno, 4); if (ret < GP_OK) return ret; ret = gp_port_usb_msg_read (port, CMDID_IHAVENOIDEA, 0, 0, (char *)reply, 2); if (ret < GP_OK) return ret; setval(&imagno[4],0x200);/* we want 512 bytes */ ret = gp_port_usb_msg_write (port, CMDID_READ_IMAGE, READ_IMAGE_VALUE_RESET, 0, (char *)imagno, 8); if (ret < GP_OK) return ret; gp_port_read(port, (char *)header, 0x200); size=(header[0x47]<<8) | header[0x48]; /*create data block */ data=malloc(size); if (!data) return GP_ERROR_NO_MEMORY; setval(&imagno[4],0x1000);/* we want 4096 bytes */ whole=size / 0x1000; remain=size % 0x1000; for(current=0;current * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef LIBRARY_H #define LIBRARY_H #include int stv0674_ping (GPPort *); int stv0674_summary (GPPort *, char*); int stv0674_file_count (GPPort *, int *count); int stv0674_get_image (GPPort *, int image_no, CameraFile *file); int stv0674_get_image_raw (GPPort *, int image_no, CameraFile *file); int stv0674_get_image_preview (GPPort *, int image_no, CameraFile *file); int stv0674_capture_preview (GPPort *device, char **data, int *size); int stv0674_capture (GPPort *port); int stv0674_delete_all (GPPort *port); #endif libgphoto2-2.5.9/camlibs/stv0674/stv0674.h0000644000175000001440000000216412610415536014600 00000000000000/* * STV0674 Camera Chipset Driver * Copyright 2000 Vince Sanders * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef STV0674_H #define STV0674_H #define CMDID_SET_IMAGE 0x3 #define CMDID_READ_IMAGE 0x5 #define READ_IMAGE_VALUE_RESET 0xff #define READ_IMAGE_VALUE_READ 0x08 #define CMDID_FINISH_READ 0x9 #define CMDID_PING 0x80 #define CMDID_ENUMERATE_IMAGES 0x83 #define CMDID_IHAVENOIDEA 0x86 #endif libgphoto2-2.5.9/camlibs/stv0674/Protocol0000644000175000001440000001006012557123324015011 00000000000000This is a quick and dirty reverse engineer of the ST microelectronics STV0674 *NOTE* this is *not* the STV0680 that is a completely separate device! the current web page for this device is http://www.vvl.co.uk/products/co-processors/674/674.htm As is becoming increasingly more common the chip vendors are being right pains in the bum and forcing me to reverse engineer their protocols from snoops rather than giving me the data sheet. If your in a position to get the datasheet for this product please please do improve this driver! So far this driver has only been tested on a l'espion xtra other cameras may need more tweaks. The device has a single interface with several alternate configs, alternate 1 has 3 endpoints :bulk in, bulk out and an interrupt. The driver selects alternate one and uses the bulk in endpoint for data. Several control transactions are used to control the data available on the bulk in pipe. Most transactions are associated with an image number this is a 4 byte MSB value which appears to start at *2* ie the first image is 00 00 00 02. The image "header" is a block of data which is not associated with the jpeg data at all but contains several pieces of information, some important bits are: - image length (bytes 0x47(MSB) and 0x48) - x size (0x49 (MSB) 0x4a) - y size (0x4b (MSB) 0x4c Control transactions -------------------- Ping ---- I assume this transaction is a "ping" as the windows driver seems to perform this transaction like a nervous twitch, its done all over for no good reason I can see, always with the same result The host reads a control transaction with 1 byte URB bRequest = 0x80 wValue=0x0000 wIndex=0x0000 wLength=0x0001 the returned URB: byte 0 is always 0x00 Get header ---------- This obtains a block of data which contains the image "header" The host writes a control transaction with 6 byte buffer bRequest = 0x0A wValue=0x0000 wIndex=0x0000 wLength=0x0006 the data buffer has: bytes 0-3 are image number bytes 4-5 are length (MSB) this is always 0x56 in the doze driver the client may then read the "length" bytes from the bulk in pipe Set Image Number ---------------- I believe this is used to select the image for some transactions that don't explicitly set the image number themselves This and the following are done immediately before each image download The host writes a control transaction with 4 byte buffer bRequest = 0x03 wValue=0x0000 wIndex=0x0000 wLength=0x0004 the data buffer has: bytes 0-3 are image number Unknown ------- This *always* follows the above The host reads a control transaction with 2 byte buffer bRequest = 0x86 wValue=0x0000 wIndex=0x0000 wLength=0x0004 the data buffer has: byte 0 is always 0x03 byte 0 is always 0x01 Image header read ----------------- This is performed before each image is read, its just a repeat of the header obtained with the other request but its useful here for getting the image size, the doze driver always does it here and if you don't it breaks ;-) The host writes a control transaction with 8 byte buffer bRequest = 0x05 wValue=0x00ff wIndex=0x0000 wLength=0x0008 the written URB contains: bytes 0-3 are image number bytes 4-7 are the length of data to read (always 0x200 for the header read) 0x200 bytes are then read from the bulk in pipe, this seems to be an extended header? Image read ---------- This is identical to the image header read above except the wValue has changed from 0xff to 0x08. The windows driver writes a series of these commands asking for 0x1000 bytes of data a time, larger seems to fail... so reading blocks of 0x1000 and a fragment of smaller seems to be the best way to go. The host writes a control transaction with 8 byte buffer bRequest = 0x05 wValue=0x0008 wIndex=0x0000 wLength=0x0008 the written URB contains: bytes 0-3 are image number bytes 4-7 are the length of data to read (0x1000 or less) read close ---------- This transaction is performed at the end of the image read. The host writes a control transaction with 4 byte buffer bRequest = 0x09 wValue=0x0000 wIndex=0x0000 wLength=0x0004 the data buffer has: bytes 0-3 are image number libgphoto2-2.5.9/camlibs/stv0674/Makefile-files0000644000175000001440000000046312561423351016031 00000000000000EXTRA_DIST += stv0674/Protocol stv0674/Changelog EXTRA_LTLIBRARIES += stv0674.la stv0674_la_SOURCES = \ stv0674/stv0674.c stv0674/stv0674.h \ stv0674/library.c stv0674/library.h stv0674_la_LDFLAGS = $(camlib_ldflags) stv0674_la_DEPENDENCIES = $(camlib_dependencies) stv0674_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/stv0674/stv0674.c0000644000175000001440000001506712610415536014601 00000000000000/* * STV0674 Camera Chipset Driver * Copyright 2002 Vincent Sanders * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "stv0674.h" #include "library.h" #define GP_MODULE "stv0674" static const struct camera_to_usb { char *name; unsigned short idVendor; unsigned short idProduct; } camera_to_usb[] = { /* http://www.digitaldreamco.com/shop/xtra.htm, SVGA */ { "DigitalDream:l'espion xtra", 0x05DA, 0x1020 }, { "Che-ez!:Splash", 0x0553, 0x1002 } }; int camera_id (CameraText *id) { strcpy(id->text, "STV0674"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; unsigned int i; for(i = 0; i < (sizeof(camera_to_usb) / sizeof(struct camera_to_usb)); i++) { memset(&a, 0, sizeof(a)); strcpy(a.model, camera_to_usb[i].name); a.port = GP_PORT_USB; a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.operations = GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CAPTURE_PREVIEW; a.file_operations = GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; a.usb_vendor = camera_to_usb[i].idVendor; a.usb_product = camera_to_usb[i].idProduct; gp_abilities_list_append(list, a); } return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int count, result; result = stv0674_file_count(camera->port, &count); if (result < GP_OK) { GP_DEBUG("file count returnd %d\n",result); return result; } GP_DEBUG("count is %x\n",count); gp_list_populate(list, "image%03i.jpg", count); return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int image_no, result; image_no = gp_filesystem_number(camera->fs, folder, filename, context); if(image_no < 0) return image_no; gp_file_set_mime_type (file, GP_MIME_JPEG); switch (type) { case GP_FILE_TYPE_NORMAL: result = stv0674_get_image (camera->port, image_no, file); break; case GP_FILE_TYPE_RAW: result = stv0674_get_image_raw (camera->port, image_no, file); break; case GP_FILE_TYPE_PREVIEW: result = stv0674_get_image_preview (camera->port, image_no, file); break; default: return (GP_ERROR_NOT_SUPPORTED); } return result; } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { int result; int count,oldcount; if (type != GP_CAPTURE_IMAGE) return (GP_ERROR_NOT_SUPPORTED); result = stv0674_file_count(camera->port,&oldcount); result = stv0674_capture(camera->port); if (result < 0) return result; /* Just added a new picture... */ result = stv0674_file_count(camera->port,&count); if (count == oldcount) return GP_ERROR; /* unclear what went wrong ... hmm */ strcpy(path->folder,"/"); sprintf(path->name,"image%03i.jpg",count); /* Tell the filesystem about it */ result = gp_filesystem_append (camera->fs, path->folder, path->name, context); if (result < 0) return (result); return (GP_OK); } static int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { char *data; int size, result; result = stv0674_capture_preview (camera->port, &data, &size); if (result < 0) return result; gp_file_set_mime_type (file, GP_MIME_JPEG); return gp_file_set_data_and_size (file, data, size); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { stv0674_summary(camera->port,summary->text); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n")); return (GP_OK); } static int delete_all_func (CameraFilesystem *fs, const char* folder, void *data, GPContext *context) { Camera *camera = data; if (strcmp (folder, "/")) return (GP_ERROR_DIRECTORY_NOT_FOUND); return stv0674_delete_all(camera->port); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .delete_all_func = delete_all_func }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; int ret; /* First, set up all the function pointers */ camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->capture_preview = camera_capture_preview; camera->functions->capture = camera_capture; gp_port_get_settings(camera->port, &settings); switch(camera->port->type) { case GP_PORT_USB: /* Modify the default settings the core parsed */ settings.usb.altsetting=1;/* we need to use interface 0 setting 1 */ settings.usb.inep=2; settings.usb.intep=3; settings.usb.outep=5; /* Use the defaults the core parsed */ break; default: return (GP_ERROR_UNKNOWN_PORT); break; } ret = gp_port_set_settings (camera->port, settings); if (ret != GP_OK) { gp_context_error (context, _("Could not apply USB settings")); return ret; } /* Set up the filesystem */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* test camera */ return stv0674_ping(camera->port); } libgphoto2-2.5.9/camlibs/stv0674/Changelog0000644000175000001440000000052212557123324015101 000000000000002004-01-21 Marcus Meissner * stv0674.c: Added che-ez! snap 2002-12-03 Marcus Meissner * License changed to LGPL v2 (with Vincents agreement) 2002-12-03 Marcus Meissner * Initial import of camlib driver written by Vincent Sanders libgphoto2-2.5.9/camlibs/Makefile.am0000644000175000001440000001316712610415517014175 00000000000000######################################################################## # Usage instructions ######################################################################## # If you only want to build a single camlib (say agfa_cl20), run # gmake -C camlibs agfa_cl20.la # or # ( cd camlibs && make agfa_cl20.la ) # # If you only want to install a single camlib or two, run # make DRIVERS="canon.la agfa_cl20.la" install # in the camlibs/ subdir or in the libgphoto2 top-level directory. ######################################################################## ######################################################################## # The only SUBDIRS here are "." (to run all-local checking the # definition of the camlibs) and the special ones for building docs # and stuff. # # Building the camlibs itself is defined in the Makefile-files # included below. SUBDIRS = . canon/doc konica/localization ######################################################################## # Define the common variables added to in the included Makefile-files CLEANFILES = EXTRA_DIST = camlib.sym camlibdoc_DATA = localization_DATA = localizationdir = noinst_DATA = noinst_LTLIBRARIES = EXTRA_LTLIBRARIES = ######################################################################## # All camlibs are defined as EXTRA_LTLIBRARIES. This requires that # all camlibs have -rpath set explicitly in foobar_la_LDFLAGS. # You're probably best off by using the camlib_* variables defined # below. camlib_LTLIBRARIES = $(BUILD_THESE_CAMLIBS) ######################################################################## # Define the compile/link/etc. flags common to all camlibs in one place, # i.e. here. camlib_dependencies = $(top_srcdir)/camlibs/camlib.sym camlib_ldflags = -module -no-undefined -avoid-version -export-dynamic \ -export-symbols '$(top_srcdir)/camlibs/camlib.sym' \ -rpath '$(camlibdir)' camlib_libadd = $(top_builddir)/libgphoto2/libgphoto2.la $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la AM_CPPFLAGS += -I$(top_srcdir) -I$(top_builddir) -I$(top_srcdir)/libgphoto2_port -I$(top_srcdir)/libgphoto2 -I$(top_builddir)/libgphoto2 ######################################################################## # You can generate this Makefile-files include list by running # find . -name Makefile-files -exec echo include {} \; | sort | sed 's| ./| |g' include adc65/Makefile-files include agfa-cl20/Makefile-files include aox/Makefile-files include ax203/Makefile-files include barbie/Makefile-files include canon/Makefile-files include casio/Makefile-files include clicksmart310/Makefile-files include digigr8/Makefile-files include digita/Makefile-files include dimera/Makefile-files include directory/Makefile-files include enigma13/Makefile-files include fuji/Makefile-files include gsmart300/Makefile-files include hp215/Makefile-files include iclick/Makefile-files include jamcam/Makefile-files include jd11/Makefile-files include jl2005a/Makefile-files include jl2005c/Makefile-files include kodak/dc120/Makefile-files include kodak/dc210/Makefile-files include kodak/dc240/Makefile-files include kodak/dc3200/Makefile-files include kodak/ez200/Makefile-files include kodak/Makefile-files include konica/Makefile-files include largan/lmini/Makefile-files include lg_gsm/Makefile-files include mars/Makefile-files include minolta/dimagev/Makefile-files include minolta/Makefile-files include mustek/Makefile-files include panasonic/coolshot/Makefile-files include panasonic/l859/Makefile-files include panasonic/Makefile-files include pccam300/Makefile-files include pccam600/Makefile-files include pentax/Makefile-files include polaroid/Makefile-files include ptp2/Makefile-files include ricoh/Makefile-files include samsung/Makefile-files include sierra/Makefile-files include sipix/Makefile-files include smal/Makefile-files include sonix/Makefile-files include sonydscf1/Makefile-files include sonydscf55/Makefile-files include soundvision/Makefile-files include spca50x/Makefile-files include sq905/Makefile-files include st2205/Makefile-files include stv0674/Makefile-files include stv0680/Makefile-files include sx330z/Makefile-files include template/Makefile-files include topfield/Makefile-files include toshiba/pdrm11/Makefile-files include tp6801/Makefile-files # End of list of Makefile-files ######################################################################## # Print list of GP_CAMLIB() definitions suitable for adding to # configure.ac print-camlibs: Makefile @for x in $(EXTRA_LTLIBRARIES); do \ y="$$(basename "$$x" ".la")"; \ echo "GP_CAMLIB([$$y])dnl"; \ done ######################################################################## # Make sure that the list of camlibs defined in configure.ac using # GP_CAMLIB(...) and the list of camlibs defined in */Makefile-files # match. CLEANFILES += all-src-camlibs all-def-camlibs all-local: Makefile @:; \ (for x in $(EXTRA_LTLIBRARIES) template.la; do echo "$$(basename "$$x" ".la")"; done) \ | sort > all-src-camlibs; \ (for x in $(ALL_DEFINED_CAMLIBS); do echo "$$x"; done) \ | sort > all-def-camlibs; \ if cmp all-def-camlibs all-src-camlibs; then :; else \ diff -u all-def-camlibs all-src-camlibs; \ echo "List of camlibs in configure.ac is out of date."; \ echo "Have a developer update it using \"make -C camlibs print-camlibs\"."; \ exit 1; \ fi ######################################################################## # Shortcut for installation of a subset of camlibs # Usage: make CAMLIBS="canon.la ptp2.la" install-camlibs install-camlibs: $(MAKE) BUILD_THESE_CAMLIBS="$(CAMLIBS)" install-camlibLTLIBRARIES ######################################################################## # End of camlibs/Makefile.am libgphoto2-2.5.9/camlibs/sonix/0000755000175000001440000000000012623156267013361 500000000000000libgphoto2-2.5.9/camlibs/sonix/sonix.c0000644000175000001440000003616112610415536014605 00000000000000/* sonix.c * * Copyright (C) 2005 Theodore Kilgore * * A previous version of the white_balance() function intended for use in * libgphoto2/camlibs/aox is copyright (c) 2008 Amauri Magagna. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include #include #include "sonix.h" #define GP_MODULE "sonix" /* Three often-used generic commands */ /* This reads a one-byte "status" response */ static int SONIX_READ (GPPort *port, char *data) { gp_port_usb_msg_interface_read(port, 0, 1, 0, data, 1); return GP_OK; } /* This reads a 4-byte response to a command */ static int SONIX_READ4 (GPPort *port, char *data) { gp_port_usb_msg_interface_read(port, 0, 4, 0, data, 4); return GP_OK; } /* A command to the camera is a 6-byte string, and this sends it. */ static int SONIX_COMMAND (GPPort *port, char *command) { gp_port_usb_msg_interface_write(port, 8, 2, 0, command ,6); return GP_OK; } int sonix_init (GPPort *port, CameraPrivateLibrary *priv) { int i; char c[6]; char status; unsigned char reading[4]; memset(c,0,sizeof(c)); c[0] = 0x0c; GP_DEBUG("Running sonix_init\n"); SONIX_READ(port, &status); if (status == 0x02) goto skip_a_step; /* If status is 2 we can skip several steps. Otherwise, status * needs to be reset to 0 and massaged until it is 2. */ if ((unsigned)status) { i = 0; while ((unsigned)status > 0) { SONIX_READ(port, &status); i++; if (i==1000) break; } } SONIX_COMMAND ( port, c); while (status !=2) SONIX_READ(port, &status); SONIX_READ(port, &status); skip_a_step: /* * We are supposed to get c[0]=0x8c here; in general the reply * string ought to start with the command byte c[0], plus 0x80 */ memset(reading, 0, 4); SONIX_READ4 (port, (char *)reading); SONIX_READ(port, &status); memset (c, 0, 6); while (!reading[1]&&!reading[2]&&!reading[3]) { c[0]=0x16; SONIX_COMMAND ( port, c ); /* * For the Vivicam 3350b this always gives * 96 0a 76 07. This is apparently the firmware version. * The webcam-osx comments that the 0x0a gives the sensor * type, which is OV7630. For the Sakar Digital Keychain * 11199 the string is 96 03 31 08, instead. For the * Mini-Shotz ms350 it is 96 08 26 09. For the Genius * Smart 300 it is 96 00 67 09 and for the Digital * Spy Camera 70137 it is 96 01 31 09. Since the cameras * have different abilities, we ought to distinguish. */ SONIX_READ4 (port, (char *)reading); } GP_DEBUG("%02x %02x %02x %02x\n", reading[0], reading[1], reading[2], reading[3]); GP_DEBUG("Above is the 4-byte ID string of your camera. "); GP_DEBUG("Please report if it is anything other than\n"); GP_DEBUG("96 0a 76 07 or 96 03 31 08 or 96 08 26 09\n"); GP_DEBUG("or 96 00 67 09 or 96 01 31 09\n"); GP_DEBUG("Thanks!\n" ); for(i=0;i<4;i++) priv->fwversion[i] = reading[i]; GP_DEBUG("fwversion[1] is %#02x\n", reading[1]); SONIX_READ(port, &status); /* case 0x03: uses the default settings, above. */ switch(priv->fwversion[1]) { case 0x08: priv->offset=0; priv->avi_offset=0; priv->can_do_capture=1; priv->post = DECOMP; break; case 0x0a: priv->offset=8; priv->avi_offset=8; priv->can_do_capture=0; priv->post = DECOMP|REVERSE; break; case 0x00: priv->offset=0; priv->avi_offset=0; priv->can_do_capture=0; priv->post=0; break; case 0x01: priv->offset=8; priv->avi_offset=8; priv->can_do_capture=0; priv->post=0; break; case 0x03: default: priv->offset=8; priv->avi_offset=8; priv->can_do_capture=1; priv->post=0; } /* * This sequence gives the photos in the camera and sets a flag * in reading[3] if the camera is full. Alas, clip frames are * not counted; the AVI constructor will need to count them */ memset (c,0,6); c[0]=0x18; SONIX_READ(port, &status); SONIX_COMMAND ( port, c ); SONIX_READ(port, &status); SONIX_READ4 (port, (char *)reading); if (reading[0] != 0x98) return GP_ERROR_CAMERA_ERROR; GP_DEBUG ("number of photos is %d\n", reading[1]+ 256*reading[2]); /* * If reading[3] = 0x01, it means the camera is full of data. * The capture_image() function must then be disabled. */ if (!(reading[3])) priv->full = 0; SONIX_READ(port, &status); priv->num_pics = (reading[1] + 256*reading[2]); memset(c,0,sizeof(c)); for (i = 0; i < priv->num_pics; i++) { GP_DEBUG("getting size_code for picture %i\n", i+1); /* Gets the resolution setting, also flags a multi-frame entry. */ c[0] = 0x19; c[1] = (i+1)%256; c[2] = (i+1)/256; SONIX_COMMAND ( port, c ); SONIX_READ(port, &status); SONIX_READ4 (port, (char *)reading); if (reading[0] != 0x99) return GP_ERROR_CAMERA_ERROR; SONIX_READ(port, &status); /* For the code meanings, see get_file_func() in library.c */ priv->size_code[i] = (reading[1]&0x0f); } priv->sonix_init_done = 1; GP_DEBUG("Leaving sonix_init\n"); return GP_OK; } int sonix_read_data_size (GPPort *port, int n) { char status; unsigned char c[6]; unsigned char reading[4]; GP_DEBUG("running sonix_read_data_size for picture %i\n", n+1); memset (c, 0, 6); c[0] = 0x1a; c[1] = (n+1)%256; c[2] = (n+1)/256; SONIX_COMMAND ( port, (char *)c ); SONIX_READ(port, &status); SONIX_READ4 (port, (char *)reading); if (reading[0] != 0x9a) return GP_ERROR_CAMERA_ERROR; return (reading[1] + reading[2]*0x100 + reading[3] *0x10000); } int sonix_delete_all_pics (GPPort *port) { char status; char c[6]; unsigned char reading[4]; memset (c,0,6); c[0]=0x05; SONIX_READ(port, &status); SONIX_COMMAND ( port, c ); SONIX_READ(port, &status); SONIX_READ4 (port, (char *)reading); if (reading[0] != 0x85) return GP_ERROR_CAMERA_ERROR; return GP_OK; } int sonix_delete_last (GPPort *port) { char status; char c[6]; unsigned char reading[4]; memset (c,0,6); c[0]= 0x05; c[1] = 0x01; SONIX_READ(port, &status); SONIX_COMMAND ( port, c ); SONIX_READ(port, &status); SONIX_READ4 (port, (char *)reading); if (reading[0] != 0x85) return GP_ERROR_CAMERA_ERROR; return GP_OK; } int sonix_capture_image (GPPort *port) { char status; char c[6]; unsigned char reading[4]; GP_DEBUG("Running sonix_capture_image\n"); memset (c,0,6); c[0]=0x0e; SONIX_READ(port, &status); SONIX_COMMAND ( port, c ); SONIX_READ(port, &status); SONIX_READ4 (port, (char *)reading); if (reading[0] != 0x8e) return GP_ERROR_CAMERA_ERROR; return GP_OK; } int sonix_exit (GPPort *port) { char status; char c[6]; memset (c,0,6); c[0]=0x14; SONIX_READ(port, &status); SONIX_COMMAND ( port, c ); /* No READ4 after exit! */ return GP_OK; } /* * The decoding algorithm originates with Bertrik Sikken. This version adapted * from the webcam-osx (macam) project. See README for details. */ /* Four defines for bitstream operations, for the decode function */ #define PEEK_BITS(num,to) {\ if (bitBufCount>(bitBufCount-num);\ } /* * PEEK_BITS puts the next bits into the low bits of . * when the buffer is empty, it is completely refilled. * This strategy tries to reduce memory access. Note that the high bits * are NOT set to zero! */ #define EAT_BITS(num) { bitBufCount-=num; } /* * EAT_BITS consumes bits (PEEK_BITS does not consume anything, * it just peeks) */ #define PARSE_PIXEL(val) {\ PEEK_BITS(10,bits);\ if ((bits&0x200)==0) { \ EAT_BITS(1); \ } \ else if ((bits&0x380)==0x280) { \ EAT_BITS(3); \ val+=3; \ if (val>255) val=255; \ }\ else if ((bits&0x380)==0x300) { \ EAT_BITS(3); \ val-=3; \ if (val<0) val=0; \ }\ else if ((bits&0x3c0)==0x200) { \ EAT_BITS(4); \ val+=8; \ if (val>255) val=255;\ }\ else if ((bits&0x3c0)==0x240) { \ EAT_BITS(4); \ val-=8; \ if (val<0) val=0;\ }\ else if ((bits&0x3c0)==0x3c0) { \ EAT_BITS(4); \ val-=20; \ if (val<0) val=0;\ }\ else if ((bits&0x3e0)==0x380) { \ EAT_BITS(5); \ val+=20; \ if (val>255) val=255;\ }\ else { \ EAT_BITS(10); \ val=8*(bits&0x1f)+0; \ }\ } #define PUT_PIXEL_PAIR {\ long pp;\ pp=(c1val<<8)+c2val;\ *((unsigned short *) (dst+dst_index))=pp;\ dst_index+=2; } /* Now the decode function itself */ int sonix_decode(unsigned char * dst, unsigned char * src, int width, int height) { long dst_index = 0; int starting_row = 0; unsigned short bits; short c1val, c2val; int x, y; unsigned long bitBuf = 0; unsigned long bitBufCount = 0; /* Columns were reversed during compression ! */ for (y = starting_row; y < height; y++) { PEEK_BITS(8, bits); EAT_BITS(8); c2val = bits & 0xff; PEEK_BITS(8, bits); EAT_BITS(8); c1val = bits & 0xff; PUT_PIXEL_PAIR; for (x = 2; x < width ; x += 2) { PARSE_PIXEL(c2val); PARSE_PIXEL(c1val); PUT_PIXEL_PAIR; } } return GP_OK; } int sonix_byte_reverse (unsigned char *imagedata, int datasize) { int i; unsigned char temp; for (i=0; i< datasize/2 ; ++i) { temp = imagedata[i]; imagedata[i] = imagedata[datasize - 1 - i]; imagedata[datasize - 1 - i] = temp; } return GP_OK; } int sonix_rows_reverse (unsigned char *imagedata, int width, int height) { int col, row; unsigned char temp; for (col = 0; col < width; col++) for (row=0; row< height /2 ; row++) { temp = imagedata[row*width+col]; imagedata[row*width+col] = imagedata[(height-row-1)*width +col]; imagedata[(height-row-1)*width + col] = temp; } return GP_OK; } int sonix_cols_reverse (unsigned char *imagedata, int width, int height) { int col, row; unsigned char temp; for (row=0; row < height ; row++) { for (col =0; col< width/2 ; col++) { temp = imagedata[row*width + col]; imagedata[row*width + col] = imagedata[row*width + width - 1 - col]; imagedata[row*width + width - 1 - col] = temp; } } return GP_OK; } /* * === White Balance / Color Enhance / Gamma adjust === * * Get histogram for each color plane * Expand to reach 0.5% of white dots in image * * Get new histogram for each color plane * Expand to reach 0.5% of black dots in image * * Get new histogram * Calculate and apply gamma correction * * if not a dark image: * For each dot, increases color separation */ static int histogram (unsigned char *data, unsigned int size, int *htable_r, int *htable_g, int *htable_b) { int x; /* Initializations */ for (x = 0; x < 256; x++) { htable_r[x] = 0; htable_g[x] = 0; htable_b[x] = 0; } /* Building the histograms */ for (x = 0; x < (size * 3); x += 3) { htable_r[data[x+0]]++; /* red histogram */ htable_g[data[x+1]]++; /* green histogram */ htable_b[data[x+2]]++; /* blue histogram */ } return 0; } int white_balance (unsigned char *data, unsigned int size, float saturation) { int x, r, g, b, max, d; double r_factor, g_factor, b_factor, max_factor, MAX_FACTOR=1.6; int htable_r[256], htable_g[256], htable_b[256]; unsigned char gtable[256]; double new_gamma, gamma; /* ------------------- GAMMA CORRECTION ------------------- */ histogram(data, size, htable_r, htable_g, htable_b); x = 1; for (r = 64; r < 192; r++) { x += htable_r[r]; x += htable_g[r]; x += htable_b[r]; } gamma = sqrt((double) (x ) / (double) (size * 2)); GP_DEBUG("Provisional gamma correction = %1.2f\n", gamma); if(gamma < .1) { new_gamma = .50; MAX_FACTOR=1.2; } else if (gamma < 0.60) new_gamma = 0.60; else new_gamma = gamma; if (new_gamma > 1.2) new_gamma = 1.2; GP_DEBUG("Gamma correction = %1.2f\n", new_gamma); gp_gamma_fill_table(gtable, new_gamma); gp_gamma_correct_single(gtable,data,size); /* ---------------- BRIGHT DOTS ------------------- */ max = size / 200; histogram(data, size, htable_r, htable_g, htable_b); for (r=254, x=0; (r > 64) && (x < max); r--) x += htable_r[r]; for (g=254, x=0; (g > 64) && (x < max); g--) x += htable_g[g]; for (b=254, x=0; (b > 64) && (x < max); b--) x += htable_b[b]; r_factor = (double) 254 / r; g_factor = (double) 254 / g; b_factor = (double) 254 / b; max_factor = r_factor; if (g_factor > max_factor) max_factor = g_factor; if (b_factor > max_factor) max_factor = b_factor; if (max_factor > MAX_FACTOR) { r_factor = (r_factor / max_factor) * MAX_FACTOR; g_factor = (g_factor / max_factor) * MAX_FACTOR; b_factor = (b_factor / max_factor) * MAX_FACTOR; } GP_DEBUG("White balance (bright): r=%1d, g=%1d, b=%1d, fr=%1.3f, fg=%1.3f, fb=%1.3f\n", r, g, b, r_factor, g_factor, b_factor); for (x = 0; x < (size * 3); x += 3) { d = (int) data[x+0] * r_factor; if (d > 255) { d = 255; } data[x+0] = d; d = (int) data[x+1] * g_factor; if (d > 255) { d = 255; } data[x+1] = d; d = (int) data[x+2] * b_factor; if (d > 255) { d = 255; } data[x+2] = d; } /* ---------------- DARK DOTS ------------------- */ max = size / 200; /* 1/200 = 0.5% */ histogram(data, size, htable_r, htable_g, htable_b); for (r=0, x=0; (r < 64) && (x < max); r++) x += htable_r[r]; for (g=0, x=0; (g < 64) && (x < max); g++) x += htable_g[g]; for (b=0, x=0; (b < 64) && (x < max); b++) x += htable_b[b]; r_factor = (double) 254 / (255-r); g_factor = (double) 254 / (255-g); b_factor = (double) 254 / (255-b); GP_DEBUG("White balance (dark): r=%1d, g=%1d, b=%1d, fr=%1.3f, fg=%1.3f, fb=%1.3f\n", r, g, b, r_factor, g_factor, b_factor); for (x = 0; x < (size * 3); x += 3) { d = (int) 255-((255-data[x+0]) * r_factor); if (d < 0) { d = 0; } data[x+0] = d; d = (int) 255-((255-data[x+1]) * g_factor); if (d < 0) { d = 0; } data[x+1] = d; d = (int) 255-((255-data[x+2]) * b_factor); if (d < 0) { d = 0; } data[x+2] = d; } /* ------------------ COLOR ENHANCE ------------------ */ for (x = 0; x < (size * 3); x += 3) { r = data[x+0]; g = data[x+1]; b = data[x+2]; d = (int) (r + 2*g + b) / 4.; if ( r > d ) r = r + (int) ((r - d) * (255-r)/(256-d) * saturation); else r = r + (int) ((r - d) * (255-d)/(256-r) * saturation); if (g > d) g = g + (int) ((g - d) * (255-g)/(256-d) * saturation); else g = g + (int) ((g - d) * (255-d)/(256-g) * saturation); if (b > d) b = b + (int) ((b - d) * (255-b)/(256-d) * saturation); else b = b + (int) ((b - d) * (255-d)/(256-b) * saturation); if (r < 0) { r = 0; } if (r > 255) { r = 255; } data[x+0] = r; if (g < 0) { g = 0; } if (g > 255) { g = 255; } data[x+1] = g; if (b < 0) { b = 0; } if (b > 255) { b = 255; } data[x+2] = b; } return 0; } libgphoto2-2.5.9/camlibs/sonix/library.c0000644000175000001440000004302412610415524015102 00000000000000/* library.c * * Copyright (C) 2005 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) # define ngettext(String1,String2,Count) ((Count==1)?String1:String2) #endif #include #include "sonix.h" #include "sakar-avi-header.h" #define GP_MODULE "sonix" static const struct { char *name; CameraDriverStatus status; unsigned short idVendor; unsigned short idProduct; } models[] = { {"DC31VC", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0c45, 0x8000}, {"Wild Planet Digital Spy Camera 70137", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0c45, 0x8001}, {"Sakar Digital Keychain 11199", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0c45, 0x8003}, {"Sakar Digital no, 6637x", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0c45, 0x8003}, {"Sakar Digital no, 67480", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0c45, 0x8003}, {"Mini Shotz ms-350", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0c45, 0x8008}, {"Vivitar Vivicam3350B", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0c45, 0x800a}, {"Genius Smart 300, version 2", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0458, 0x7005}, {NULL,0,0,0} }; int camera_id (CameraText *id) { strcpy (id->text, "Vivitar ViviCam3350B"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].name); a.status = models[i].status; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; if (a.status == GP_DRIVER_STATUS_EXPERIMENTAL) a.operations = GP_OPERATION_NONE; else a.operations = GP_OPERATION_CAPTURE_IMAGE; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; a.file_operations = GP_FILE_OPERATION_DELETE| GP_FILE_OPERATION_PREVIEW; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int ret = 0; if(!camera->pl->sonix_init_done) ret = sonix_init(camera->port, camera->pl); if ( ret != GP_OK) { free(camera->pl); return ret; } if (!camera->pl->num_pics) sonix_exit(camera->port); sprintf (summary->text,ngettext( "Sonix camera.\nThere is %i photo in it.\n", "Sonix camera.\nThere are %i photos in it.\n", camera->pl->num_pics ), camera->pl->num_pics); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera ( ditto )\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" )); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Sonix camera library\n" "Theodore Kilgore \n")); return GP_OK; } /*************** File and Downloading Functions *******************/ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i = 0; char name[16]; int(avitype); int ret = 0; if(!camera->pl->sonix_init_done) ret = sonix_init(camera->port, camera->pl); if ( ret != GP_OK) { free(camera->pl); return ret; } if(!camera->pl->num_pics) { sonix_exit(camera->port); return GP_OK; } for (i=0; ipl->num_pics; i++) { avitype = (camera->pl->size_code[i])&8; if (avitype) { snprintf (name, 16, "sonix%03i.avi", i+1); avitype = 0; } else snprintf (name, 16, "sonix%03i.ppm", i+1); gp_list_append (list, name, NULL); } return GP_OK;} static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int w, h = 0, buffersize = 0, i, k, rawsize = 0; unsigned char *data = NULL; unsigned char *ppm, *ptr, *avi=NULL, *frame_data = NULL; unsigned char *p_data = NULL, *p_buf = NULL; unsigned int numframes = 0; unsigned int endpoint, bytes_used = 0; unsigned int framestart[1024]; unsigned int size = 0, frame_size = 0; unsigned int avitype = 0; unsigned int offset=0; unsigned int CAM_OFFSET; unsigned char POST_CODE; unsigned char compressed=0; int ret = 0; GP_DEBUG ("Downloading pictures!\n"); if(!camera->pl->sonix_init_done) ret = sonix_init(camera->port, camera->pl); if ( ret != GP_OK) { free(camera->pl); return ret; } if(!camera->pl->num_pics) { sonix_exit(camera->port); return GP_OK; } CAM_OFFSET = camera->pl->offset; POST_CODE = camera->pl->post; /* Get the number of the photo on the camera */ k = gp_filesystem_number (camera->fs, "/", filename, context); if (k < GP_OK) return k; /* Cheap camera. No EXIF data. Quick! Kill this before it multiplies! */ if(type == GP_FILE_TYPE_EXIF) return GP_ERROR_FILE_EXISTS; i = camera->pl->size_code[k]; switch (i) { case 0: w=352; h = 288; break; case 9: avitype = 1; /* multiframe */ case 1: w=176; h = 144; break; case 0x0a: avitype = 1; /* multiframe */ case 2: w=640; h = 480; break; case 0x0b: avitype = 1; /* multiframe */ case 3: w=320; h = 240; break; default: GP_DEBUG ("Size code unknown\n"); return (GP_ERROR_NOT_SUPPORTED); } GP_DEBUG( "avitype is %d\n", avitype); GP_DEBUG ("height of picture %i is %i\n", k+1,h); rawsize = sonix_read_data_size (camera->port, k); if (rawsize < GP_OK) return rawsize; GP_DEBUG("rawsize = 0x%x = %i\n", rawsize, rawsize); if(rawsize%0x40) buffersize = rawsize - (rawsize%0x40) + 0x40; else buffersize = rawsize; data = calloc (buffersize+64, 1); if (!data) return GP_ERROR_NO_MEMORY; gp_port_read(camera->port, (char *)data, buffersize); switch(type) { case GP_FILE_TYPE_NORMAL: /* count end of frame markers to know the number of *frames and the size and starting offset of each */ endpoint = 0; numframes = 0; framestart[0] = 0; p_buf = data; while (p_buf < data + buffersize+64) { endpoint = 12; while ( !((p_buf[endpoint-12]==0xff) && (p_buf[endpoint-11]==0xff) && (p_buf[endpoint-10]==0x00) && (p_buf[endpoint-9]==0xc4) && (p_buf[endpoint-8]==0xc4) ) && (endpoint < buffersize +64 - bytes_used)) endpoint ++ ; if ( !((p_buf[endpoint-12]==0xff) && (p_buf[endpoint-11]==0xff) && (p_buf[endpoint-10]==0x00) && (p_buf[endpoint-9]==0xc4) && (p_buf[endpoint-8]==0xc4) ) ) { GP_DEBUG("Finished counting frames!\n"); break; } if(!numframes) { GP_DEBUG("compression byte is %#02x\n", p_buf[endpoint-5]); compressed=p_buf[endpoint-5]&1; } framestart[numframes+1] = framestart[numframes] + endpoint; p_buf += endpoint; bytes_used += endpoint; numframes ++; } GP_DEBUG("number of frames is %i\n",numframes); GP_DEBUG("compressed %i\n",compressed); POST_CODE|=compressed; GP_DEBUG("POST_CODE is %i\n", POST_CODE); /* AVI files need separate treatment */ if (avitype) { CAM_OFFSET = camera->pl->avi_offset; GP_DEBUG("CAM_OFFSET=%i\n",CAM_OFFSET); frame_size = w*h; gp_file_set_mime_type (file, GP_MIME_AVI); frame_data = malloc(frame_size); if (!frame_data) { return -1; } size = (numframes)*(3*frame_size+ 8) + 224; GP_DEBUG("size = %i\n", size); avi = malloc(224); if (!avi) { free(frame_data); return -1; } GP_DEBUG("avi malloc'ed\n"); memset(avi, 0, SAKAR_AVI_HEADER_LENGTH); memcpy (avi,SakarAviHeader,SAKAR_AVI_HEADER_LENGTH); GP_DEBUG("avi standard hdr copied\n"); avi[0x04] = (size -4)&0xff; avi[0x05] = ((size -4)&0xff00) >> 8; avi[0x06] = ((size -4)&0xff0000) >> 16; avi[0x07] = ((size -4)&0xff000000) >> 24; avi[0x40] = w&0xff; avi[0x41] = (w>>8)&0xff; avi[0x44] = h&0xff; avi[0x45] = (h>>8)&0xff; avi[0xb0] = w&0xff; avi[0xb1] = (w>>8)&0xff; avi[0xb4] = h&0xff; avi[0xb5] = (h>>8)&0xff; avi[0x30] = numframes&0xff; avi[0x8c] = numframes&0xff; ptr=malloc(3*frame_size+8); if(!ptr) { free(frame_data); free(avi); return GP_ERROR_NO_MEMORY; } GP_DEBUG("avi hdr written\n"); gp_file_append(file, (char *)avi, SAKAR_AVI_HEADER_LENGTH); free(avi); GP_DEBUG("avi hdr put away\n"); for (i=0; i < numframes; i++) { memset(ptr, 0, 3*frame_size+ SAKAR_AVI_FRAME_HEADER_LENGTH); memcpy(ptr,SakarAviFrameHeader, SAKAR_AVI_FRAME_HEADER_LENGTH); ptr[4] = (3*frame_size)&0xff; ptr[5] = ((3*frame_size)&0xff00) >> 8; ptr[6] = ((3*frame_size)&0xff0000) >> 16; GP_DEBUG("Doing frame number %i\n",i+1); memset (frame_data, 0, frame_size); offset = 0x40*(framestart[i]/0x40)+0x40; if (offset == framestart[i] + 0x40) offset -= 0x40; GP_DEBUG("framestart[%i] = 0x%x\n", i, framestart[i]); GP_DEBUG("offset = 0x%x\n", offset); switch (POST_CODE) { case DECOMP|REVERSE: sonix_decode (frame_data, data+offset+CAM_OFFSET, w, h); sonix_cols_reverse(frame_data, w, h); gp_ahd_decode(frame_data, w, h, ptr+ SAKAR_AVI_FRAME_HEADER_LENGTH, BAYER_TILE_GBRG); break; case DECOMP: sonix_decode (frame_data, data+offset+CAM_OFFSET, w, h); sonix_rows_reverse(frame_data, w, h); gp_ahd_decode(frame_data, w, h, ptr+ SAKAR_AVI_FRAME_HEADER_LENGTH, BAYER_TILE_GRBG); break; default: memcpy(frame_data, data + offset +CAM_OFFSET, frame_size); sonix_rows_reverse(frame_data, w, h); gp_ahd_decode(frame_data, w, h, ptr+ SAKAR_AVI_FRAME_HEADER_LENGTH, BAYER_TILE_GRBG); } white_balance(ptr+SAKAR_AVI_FRAME_HEADER_LENGTH, w * h, 1.2); gp_file_append(file, (char *)ptr, 3*frame_size+ SAKAR_AVI_FRAME_HEADER_LENGTH); GP_DEBUG("Done with frame number %i\n",i+1); } avitype = 0; free(ptr); free(frame_data); free(data); return GP_OK; } case GP_FILE_TYPE_PREVIEW: if (k == camera->pl->num_pics - 1) { camera->pl->sonix_init_done = 1; sonix_exit(camera->port); } /* For an AVI file, we make a PPM thumbnail of the * first frame. Otherwise, still photos are processed * here, and also the thumbnails for them. */ p_data = malloc (w * h); if (!p_data) {free (data); return GP_ERROR_NO_MEMORY;} memset (p_data, 0, w * h); ppm = malloc (w * h * 3 + 256); /* room for data + header */ if (!ppm) { free (data); free (p_data); return GP_ERROR_NO_MEMORY; } snprintf ((char *)ppm, 50, "P6\n" "# CREATOR: gphoto2, SONIX library\n" "%d %d\n" "255\n", w, h); ptr = ppm + strlen ((char *)ppm); size = strlen ((char *)ppm) + (w * h * 3); switch (POST_CODE) case DECOMP|REVERSE: /* Images for Vivicam 3350b are upside down. */ if (camera->pl->post&REVERSE) { sonix_decode (p_data, data+CAM_OFFSET, w, h); sonix_byte_reverse(p_data, w*h); gp_ahd_decode(p_data, w, h, ptr, BAYER_TILE_BGGR); break; case DECOMP: sonix_decode (p_data, data+CAM_OFFSET, w, h); gp_ahd_decode(p_data, w, h, ptr, BAYER_TILE_RGGB); break; default: memcpy (p_data, data+CAM_OFFSET, w*h); gp_ahd_decode(p_data, w, h, ptr, BAYER_TILE_RGGB); } free (p_data); white_balance(ptr, w * h, 1.2); GP_DEBUG("white_balance run on photo number %03d \n", k+1); gp_file_set_mime_type (file, GP_MIME_PPM); gp_file_set_data_and_size (file, (char *)ppm, size); free (data); return GP_OK; case GP_FILE_TYPE_RAW: gp_file_set_mime_type(file, GP_MIME_RAW); gp_file_append( file, (char *)data, rawsize); free(data); GP_DEBUG("rawsize= 0x%x = %i\n", rawsize, rawsize); return GP_OK; default: free(data); return GP_ERROR_NOT_SUPPORTED; } return GP_OK; } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; int ret = 0; if(!camera->pl->sonix_init_done) ret = sonix_init(camera->port, camera->pl); if ( ret != GP_OK) { free(camera->pl); return ret; } sonix_delete_all_pics (camera->port); return GP_OK; } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int k; int ret = 0; if(!camera->pl->sonix_init_done) ret = sonix_init(camera->port, camera->pl); if ( ret != GP_OK) { free(camera->pl); return ret; } if ((camera->pl->fwversion[1] == 0x0a)) return GP_ERROR_NOT_SUPPORTED; k = gp_filesystem_number (camera->fs, "/", filename, context); if (k+1 != camera->pl->num_pics) { GP_DEBUG("Only the last photo can be deleted!\n"); return GP_ERROR_NOT_SUPPORTED; } sonix_delete_last (camera->port); camera->pl->num_pics -= 1; return GP_OK; } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { int ret = 0, n; char name[16]; if(!camera->pl->sonix_init_done) ret = sonix_init(camera->port, camera->pl); if ( ret != GP_OK) { free(camera->pl); return ret; } if (!(camera->pl->can_do_capture)) { GP_DEBUG("This camera does not do capture-image\n"); return GP_ERROR_NOT_SUPPORTED; } if (camera->pl->full) return GP_ERROR_NO_MEMORY; n=camera->pl->num_pics; sonix_capture_image(camera->port); snprintf(name, 16, "sonix%03i.ppm",n+1); snprintf(path->folder,1,"/"); snprintf(path->name,16,"sonix%03i.ppm",n+1); gp_filesystem_append(camera->fs, "/", name, context); return GP_OK; } /*************** Exit and Initialization Functions ******************/ static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("Sonix camera_exit"); sonix_exit(camera->port); if (camera->pl) { free (camera->pl); camera->pl = NULL; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .delete_all_func = delete_all_func, }; int camera_init(Camera *camera, GPContext *context) { GPPortSettings settings; CameraAbilities abilities; int ret = 0; ret = gp_camera_get_abilities(camera,&abilities); if (ret < 0) return ret; GP_DEBUG("product number is 0x%x\n", abilities.usb_product); /* First, set up all the function pointers */ camera->functions->capture = camera_capture; camera->functions->manual = camera_manual; camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->exit = camera_exit; GP_DEBUG ("Initializing the camera\n"); ret = gp_port_get_settings(camera->port,&settings); if (ret < 0) return ret; switch (camera->port->type) { case GP_PORT_SERIAL: return ( GP_ERROR ); case GP_PORT_USB: settings.usb.config = 1; settings.usb.altsetting = 0; settings.usb.interface = 0; settings.usb.inep = 0x82; settings.usb.outep = 0x05; break; default: return ( GP_ERROR ); } ret = gp_port_set_settings(camera->port,settings); if (ret < 0) return ret; GP_DEBUG("interface = %i\n", settings.usb.interface); GP_DEBUG("inep = %x\n", settings.usb.inep); GP_DEBUG("outep = %x\n", settings.usb.outep); /* Now, tell the filesystem where to get lists, files and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); camera->pl->num_pics = 0; camera->pl->full = 1; camera->pl->avitype = 0; camera->pl->sonix_init_done = 0; camera->pl->post = 0; GP_DEBUG("post code is 0x%x\n", camera->pl->post); /* Connect to the camera only if something is actually being done, * because otherwise the Sakar Digital Keychain camera is put into * some kind of excited mode when gtkam is run, and will not leave * this mode even after gtkam is exited. */ return GP_OK; } libgphoto2-2.5.9/camlibs/sonix/sonix.h0000644000175000001440000000376312610415524014611 00000000000000/* sonix.h * * Copyright (C) 2005 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __SONIX_H__ #define __SONIX_H__ #include #define DECOMP 1 #define REVERSE 2 struct _CameraPrivateLibrary { /* Model model; */ /* "model" and "fwversion" functionally equal */ int num_pics; unsigned char size_code[512]; unsigned char fwversion[4]; unsigned char full; unsigned char avitype; unsigned char post; unsigned char offset; unsigned char avi_offset; unsigned char can_do_capture; int sonix_init_done; }; int sonix_init (GPPort *port, CameraPrivateLibrary *priv); int sonix_get_picture_size (GPPort *port, int n); int sonix_read_data_size (GPPort *port, int n); int sonix_delete_all_pics (GPPort *port); int sonix_delete_last (GPPort *port); int sonix_capture_image (GPPort *port); int sonix_exit (GPPort *port); int sonix_decode (unsigned char * dst, unsigned char * src, int width, int height); int sonix_byte_reverse (unsigned char *imagedata, int datasize); int sonix_rows_reverse (unsigned char *imagedata, int width, int height); int sonix_cols_reverse (unsigned char *imagedata, int width, int height); int white_balance (unsigned char *data, unsigned int size, float saturation); #endif libgphoto2-2.5.9/camlibs/sonix/sakar-avi-header.h0000644000175000001440000000666612561423351016564 00000000000000#ifndef __SAKAR_AVI_HEADER_H #define __SAKAR_AVI_HEADER_H #define SAKAR_AVI_FRAME_HEADER_LENGTH 8 static const unsigned char SakarAviFrameHeader[SAKAR_AVI_FRAME_HEADER_LENGTH] = { 0x30, 0x30, 0x64, 0x63, /* 00dc */ 0x00, 0x00, 0x00, 0x00 /* size of frame */ }; #define SAKAR_AVI_HEADER_LENGTH 224 static const unsigned char SakarAviHeader[SAKAR_AVI_HEADER_LENGTH] = { /* -- RIFF HEADER -- */ 0x52, 0x49, 0x46, 0x46, /* 0x00; RIFF */ 0x00, 0x00, 0x00, 0x00, /* 0x04; number of bytes following */ 0x41, 0x56, 0x49, 0x20, /* 0x08; AVI */ 0x4C, 0x49, 0x53, 0x54, /* 0x0c; LIST */ 0xC0, 0x00, 0x00, 0x00, /* 0x10; length of list in bytes */ 0x68, 0x64, 0x72, 0x6C, /* 0x14; hdrl */ 0x61, 0x76, 0x69, 0x68, /* 0x18; avih */ 0x38, 0x00, 0x00, 0x00, /* 0x1c; number of bytes to follow */ 0x15, 0x16, 0x05, 0x00, /* 0x20; microseconds per frame */ 0x00, 0x7b, 0x03, 0x00, /* 0x24; max bytes per second */ 0x00, 0x00, 0x00, 0x00, /* 0x28; PaddingGranularity (whatever that might be) */ /* Other sources call it 'reserved' */ 0x00, 0x00, 0x00, 0x00, /* 0x2c; flags, ( I have no idea what goes here! ) */ 0x00, 0x00, 0x00, 0x00, /* 0x30; total frames */ 0x00, 0x00, 0x00, 0x00, /* 0x34: initial frames */ 0x01, 0x00, 0x00, 0x00, /* 0x38: number of streams */ 0x00, 0x01, 0x29, 0x00, /* 0x3c: suggested buffer size */ 0xb0, 0x01, 0x00, 0x00, /* 0x40: width */ 0x90, 0x00, 0x00, 0x00, /* 0x44: height */ 0x00, 0x00, 0x00, 0x00, /* 0x48: some reserved long values */ 0x00, 0x00, 0x00, 0x00, /* 0x4c: */ 0x00, 0x00, 0x00, 0x00, /* 0x50: */ 0x00, 0x00, 0x00, 0x00, /* 0x54: */ /* -- video stream list -- */ 0x4C, 0x49, 0x53, 0x54, /* 0x58: LIST */ 0x74, 0x00, 0x00, 0x00, /* 0x5c: length of list in bytes */ 0x73, 0x74, 0x72, 0x6C, /* 0x60: strl */ /* -- video stream header -- */ 0x73, 0x74, 0x72, 0x68, /* 0x64: strh */ 0x38, 0x00, 0x00, 0x00, /* 0x68: # of bytes to follow */ 0x76, 0x69, 0x64, 0x73, /* 0x6c: vids */ 0x0, 0x0, 0x0, 0x0, /* 0x70: (nothing) */ 0x00, 0x00, 0x00, 0x00, /* 0x74: some more reserved longs */ 0x00, 0x00, 0x00, 0x00, /* 0x78: */ 0x00, 0x00, 0x00, 0x00, /* 0x7c: */ 0xa, 0x00, 0x00, 0x00, /* 0x80: ms_per_frame scale */ 0x51, 0x00, 0x00, 0x00, /* 0x84: Rate: Rate/Scale == samples/second */ 0x00, 0x00, 0x00, 0x00, /* 0x88: start */ 0x00, 0x00, 0x00, 0x00, /* 0x8c: length (video_frames) */ 0x00, 0x29, 0x01, 0x00, /* 0x90: suggested buffer size */ 0x00, 0x00, 0x00, 0x00, /* 0x94: quality */ 0x00, 0x00, 0x00, 0x00, /* 0x98: sample size */ 0x00, 0x00, 0x00, 0x00, /* 0x9c: frame */ 0x00, 0x00, 0x00, 0x00, /* 0xa0: frame (why b0? I don't know!)*/ /* -- video stream format -- */ 0x73, 0x74, 0x72, 0x66, /* 0xa4: strf */ 0x28, 0x00, 0x00, 0x00, /* 0xa8: number of bytes to follow (40) */ 0x28, 0x00, 0x00, 0x00, /* 0xac: size (ditto) */ 0xb0, 0x00, 0x00, 0x00, /* 0xb0: width */ 0xf0, 0x00, 0x00, 0x00, /* 0xb4: height */ 0x01, 0x00, 0x18, 0x00, /* 0xb8: planes(1) : count(24) */ 0x00, 0x00, 0x00, 0x00, /* 0xbc: encoder none? */ 0x00, 0xC2, 0x01, 0x00, /* 0xc0: Size image */ 0x01, 0x00, 0x00, 0x00, /* 0xc4: XPelsPerMeter */ 0x01, 0x00, 0x00, 0x00, /* 0xc8: YPelsPerMeter */ 0x00, 0x00, 0x00, 0x00, /* 0xcc: Number of colors used */ 0x00, 0x00, 0x00, 0x00, /* 0xd0: Number of colors important */ /* do we have to pad with JUNK here ? */ 0x4C, 0x49, 0x53, 0x54, /* 0xd4: LIST */ 0x00, 0x00, 0x00, 0x00, /* 0xd8: size of list */ 0x6D, 0x6F, 0x76, 0x69 /* 0xda: movi */ }; #endif /* __SAKAR_AVI_HEADER_H */ libgphoto2-2.5.9/camlibs/sonix/Makefile-files0000644000175000001440000000051612561423351016033 00000000000000EXTRA_DIST += sonix/README.sonix sonix/ChangeLog camlibdoc_DATA += sonix/README.sonix EXTRA_LTLIBRARIES += sonix.la sonix_la_SOURCES = \ sonix/library.c \ sonix/sonix.c sonix/sonix.h \ sonix/sakar-avi-header.h sonix_la_LDFLAGS = $(camlib_ldflags) sonix_la_DEPENDENCIES = $(camlib_dependencies) sonix_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/sonix/README.sonix0000644000175000001440000001371712610415524015317 00000000000000/* README for libgphoto2/camlibs/sonix camera library * * Copyright (C) 2005 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ This library supports fully the still-camera functions of several cameras which use the sn9c2028 chip from Sonix (Vendor ID 0x0c45). Differences in the functions and features of the known cameras can be distinguished through the USB Product number, and also by a four-digit hexadecimal string passed by the camera during initialization -- apparently a firmware version number and/or an identification number for the video sensor. If you have a Sonix sn9c2028 camera which returns a number not listed in sonix.c, then your camera may or may not work with this code. How would I know? Please inform if you get a different ID number! Here we give a brief description both of currently-supported cameras and of the supported gphoto2 functions for each. Vivicam 3350b: Uses an OV7630 sensor. Produces a maximum resolution of 640x480 and an option to use 320x240. The photos are all compressed. The compression scheme is lossy. The decompression algorithm originates, I understand, in the work of Bertrik Sikkens for the sn9c102 cameras. In the macam project for MacOS-X camera support(webcam-osx project on Sourceforge), the decompression algorithm for the sn9c2028 cameras was developed by Mattias Krauss and adapted for use with the Vivitar Vivicam 3350B in particular by Harald Ruda . Harald brought to my attention the work already done in the macam project, pointed out that it is GPL code, and invited me to have a look. Thanks, Harald. The decompression algorithm used here is similar to what is used in the macam driver, but is considerably streamlined and improved. It seems to work perfectly. Brightness and/or gamma do sometimes need to be adjusted with a photo editor such as Gimp, ImageMagick, or xv, especially for photos taken in dim light. Features of the camera include the ability to delete all photos. The "delete last" function and the "capture-image" function, which will work for some other Sonix sn9c2028 cameras and are thus supported in this library, do not seem to work with the my Vivicam 3350B and are therefore disabled for this camera. These cameras can all shoot "movie clips" which are saved as AVI files. Webcam functionality uses isochronous transfer; thus it lies outside the scope of libgphoto2 and is therefore not supported here. DC31VC: Yet another camera which the macam driver also supports has been listed here as a supported camera. It apparently uses 352x288 and 176x144 resolution settings. I know of it only second hand, have not personally tested it, and would appreciate any reports about it (I suspect it is similar to the Sakar Digital Keychain camera). Sakar Digital Keychain #11199: This camera does not use data compression. It will hold 18 photos at 352x288 resolution, and 70 photos (or a clip containing at most 70 frames) at 176x144 resolution, or any combination of these which does not fill up the camera. Clips are processed as AVI files. This camera also supports gphoto2 --capture-image, which will cause a photo to be taken and stored among the photos on the camera for later download (the capture dimensions are always 352x288). The photo which one has just shot can of course be downloaded immediately using gphoto2 -p (its number, which will be the last taken) and, if desired, can be deleted immediately afterwards using gphoto2 -d (its number) which this camera also permits (unlike the Vivicam 3350b). Mini-Shotz ms350: This camera has 640x480 and 320x240 resolution settings. Its features are otherwise quite similar to those of the Sakar Digital Keychain #11199, except that it exclusively uses the compressed mode. Genius Smart 300: This camera has 640x480 and 320x240 resolution settings. Its features are otherwise quite similar to those of the Sakar Digital Keychain #11199 and the Mini-Shotz ms350, except that it uses compressed mode for multiframe shooting, but offers both compressed and uncompressed modes as options for still photos. It does not support gphoto2 --capture-image. It does support deletion of the last entry on the camera. GUI frontends: Libgphoto2 , of course, permits the use of a GUI frontend as well as the gphoto2 command-line utility. I have tested my two cameras with gtkam and with flphoto. Both of them work, with the following provisos: -- There is an unresolved problem with gtkam, when the Sakar Digital Keychain camera is hooked up and gtkam is started. The LED display starts to move immediately and keeps on. The LED activity does not stop when gtkam is exited, but only on camera disconnect from the computer. This phenomenon may be quite harmless, but who knows? It obviously means that some kind of background activity is taking place inside the camera. This LED activity does not occur if the gphoto2 command line or the gphoto2 shell or flphoto are used. (UPDATE: A workaround patch has been applied, which seems to fix this, as of 08/17/06) -- flphoto will give a message when asked to save an AVI file, that it cannot put the AVI file into an "album." Well, perhaps not. But not to worry. It will save the AVI file anyway, even while protesting. (Most recent revision of this file is on 12/18/2007) libgphoto2-2.5.9/camlibs/sonix/ChangeLog0000644000175000001440000000606312561423351015050 000000000000002008-04-20 Theodore Kilgore * library.c: AHD Bayer and white_balance() in use. * sonix.[c,h]: white_balance() and related stuff added. 2008-03-24 Theodore Kilgore * library.c: Previous change reverted. Bad idea. 2008-02-16 Theodore Kilgore * library.c: Camera ID byte saved in rawfile footers. 2007-12-27 Theodore Kilgore * library.c: added Wild Planet Digital Spy Camera, contributed by Jorma Laaksonen * sonix.c: Features of new camera listed. 2007-12-18 Theodore Kilgore * library.c: Processing of AVI output changed, so that output is written to file one frame at a time, to reduce memory footprint. 2007-12-09 Theodore Kilgore * library.c: Added Genius Smart 300. Thanks to Norayr Chilingaryan for reporting the camera and for testing. New camera uses optional compression and uses an offset in the still photos, but not in frames for AVI output. Also changed from using the USB Product number to distinguish between camera models and will use the firmware version code reported during sonix_init() instead. So the ID-ing of cameras is moved from camera_init() to sonix_init() Also cleaned up the camera_capture function. * sonix.c: Incorporated above changes in sonix_init(). * sonix.h: Changed fwversion variable from 1 byte to the 4 actually reported. 2007-10-16 Theodore Kilgore * library.c: Several Sakar cameras added 2007-06-25 Theodore Kilgore * library.c: Clean up signedness warnings * sonix.c: ditto 2007-05-05 Theodore Kilgore * library.c: Added Mini Shotz ms-350. Thanks to Gines Carrascal de las Heras for reporting the camera, and for testing the needed code changes to support the camera. * sonix.c: functions added for reversing byte strings, rows, and columns. * sonix.h: the new functions declared. * README.sonix: Updated. 2006-11-19 Marcus Meissner * sonix.c: made 3 functions static 2006-08-17 Theodore Kilgore * library.c: Workaround for gtkam problem if camera empty. * sonix.c: indentation inside for() statement. 2006-08-17 Theodore Kilgore * library.c: Workaround for gtkam problems with Sakar 11199. * sonix.c: Workaround for gtkam problems with Sakar 11199. * sonix.h: Workaround for gtkam problems with Sakar 11199. * README: Revisions. * sakar-avi-header.h: Forgot to commit this. Here it is! 2006-08-14 Theodore Kilgore * library.c: Added Sakar Digital Keychain 11199. New functionality to support new camera. * sonix.c: Rewritten to support new camera. * sonix.h: Rewritten to support new camera. * README: Revised. 2005-06-09 Theodore Kilgore First check-in. libgphoto2-2.5.9/camlibs/adc65/0000755000175000001440000000000012623156267013123 500000000000000libgphoto2-2.5.9/camlibs/adc65/Makefile-files0000644000175000001440000000043112561423351015571 00000000000000EXTRA_DIST += adc65/README.adc65 adc65/TODO adc65/Changelog camlibdoc_DATA += adc65/README.adc65 EXTRA_LTLIBRARIES += adc65.la adc65_la_SOURCES = adc65/adc65.c adc65_la_LDFLAGS = $(camlib_ldflags) adc65_la_DEPENDENCIES = $(camlib_dependencies) adc65_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/adc65/README.adc650000644000175000001440000000544112561423351014620 00000000000000/* ADC-65(s) camera driver * Released under the GPL version 2 * * Copyright 2001 * Benjamin Moos * * http://www.psnw.com/~smokeserpent/code/ */ This driver is for the serial version of the Achiever Digital Camera ADC-65. This camera is sold under various brand names, such as the "Easy Shot digit". These cameras take 15 photos at 256x256x24. They have an 8Mbit memory. They are very cheap, less than $30 at WalMart. The ADC-65 has a very simple syntax. The driver only sends one-byte commands. Commands -------- 0x30 : Ping the camera 0x00 - 0x15 : Get a picture Responses --------- 0x15 0x30 0x00 : Ping response 0x15 [n] [data]: Picture response. n = number of photos in memory + 1 data = 64k of data (format not determined yet) The windows software is extremely basic, and only uses these 17 command bytes. If any other commands are available, they will have to be found through experimentation. Note that there is a "picture zero" which always exists whether or not any actual photos have been snapped. This seems most likely to be calibration data for the CMOS sensor. I haven't incorporated this data in my driver yet for two reasons; 1) I haven't decided on a good way to retain this data between picture downloads, and downloading it for each picture is too wasteful 2) We're talking about really minor adjustments, compared to the resolution loss we already get from converting 256x256x8 R1G2B1 data to 256x256x24 RGB. I have included the beginnings of some colorspace stuff in the colorspace.h and colorspace.c files. Right now all I'm using is the colorspaceRGB data structure, but will work on using this do some image enhancement in the future. The hardest part of this project was figuring out the image format and I was often led astray by typos and small logic errors while reprogramming that portion of the code again and again (and again) due to the number of possible pertubations. Two packages were very helpful, netpbm and the Gimp. By using rawtopgm (from netpbm) I was able to visually analyze the data. Much better than trying to understand hexdumps :) I am inspired to write some kind of tool to help with analyzing this sort of data, perhaps interactively testing different possible encoding schemes. I have based the skeleton of this driver on the "barbie" camera driver. I have also grabbed a lot of ideas from the dimera driver as well. So I am indebted to: The Barbie Team --------------- Scott Fritzinger Andreas Meyer Pete Zaitcev Jeff Laing The Dimera3500 Team ------------------- Brian Beattie http://www.beattie-home.net Chuck Homic Dan Fandrich Gregg Berg libgphoto2-2.5.9/camlibs/adc65/TODO0000644000175000001440000000047612557123324013534 0000000000000004/19/2001 - Benjamin Moos * Not much, it works finally! * The images are less than perfect, but I like them better than the overprocessed ones that the Windows driver puts out. I need to analyze the response curves for each color of CMOS cell for one, and we could definitely use some judicious smoothing. libgphoto2-2.5.9/camlibs/adc65/adc65.c0000644000175000001440000001420212610415510014071 00000000000000/* ADC-65(s) camera driver * Released under the GPL version 2 * * Copyright 2001 * Benjamin Moos * * http://www.psnw.com/~smokeserpent/code/ */ #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define _(String) (String) # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "adc65" #define ACK 0x15 #define ADC65_DATA_FIRMWARE 0 #define ADC65_DATA_THUMBNAIL 1 #define ADC65_DATA_PICTURE 2 /* colorspace structure */ typedef struct { unsigned char R; unsigned char G; unsigned char B; } colorspaceRGB; static int adc65_exchange (Camera *camera, const unsigned char *cmd, int cmd_size, unsigned char *resp, int resp_size) { int ret; ret = gp_port_write (camera->port, (char*)cmd, cmd_size); if (ret < 0) return ret; return gp_port_read (camera->port, (char*)resp, resp_size); } static int adc65_ping(Camera *camera) { unsigned char cmd, resp[3]; int ret; GP_DEBUG("Pinging the camera."); cmd = 0x30; ret = adc65_exchange (camera, &cmd, 1, resp, 3); if ( ret < GP_OK) return ret; if (resp[1] != 0x30) return GP_ERROR; GP_DEBUG("Ping answered!"); return GP_OK; } static int adc65_file_count (Camera *camera) { unsigned char cmd, resp[65538]; int ret; GP_DEBUG("Getting the number of pictures."); cmd = 0x00; ret = adc65_exchange(camera, &cmd, 1, resp, 65538); if (ret < 2) /* must have at least a 2 byte reply */ return ret; return resp[1] - 1; } static char * adc65_read_data (Camera *camera, unsigned char *cmd, int cmd_size, int data_type, int *size) { unsigned char resp[2], temp; int x, y, x1, y1, z; unsigned char ul, ur, bl, br, ret; colorspaceRGB rgb; unsigned char *us = NULL; char *s = NULL; char *ppmhead = "P6\n# test.ppm\n256 256\n255\n"; switch (data_type) { case ADC65_DATA_PICTURE: GP_DEBUG("Getting Picture"); /* get the picture */ ret = adc65_exchange (camera, cmd, cmd_size, resp, 2); if (ret < 2) return NULL; us = malloc (65536); if (!us) return NULL; if (gp_port_read (camera->port, (char*)us, 65536) < 0) { free(us); return NULL; } /* Turn right-side-up and invert*/ for (x=0; x<32768; x++) { temp = us[x]; us[x] = 255 - us[65535-x]; us[65535-x] = 255 - temp; } s = (char *)malloc (sizeof(char)*65536*3+strlen(ppmhead)); /* Camera uses this color array (upside-down): * bgbgb * grgrg * bgbgb */ strcpy(s, ppmhead); z = strlen(s); for (y=0; y<256; y++) { if (y == 255) { y1 = y - 1; }else{ y1 = y + 1; } for (x=0; x<256; x++) { if (x == 255) { x1 = x - 1; }else{ x1 = x + 1; } ul = (unsigned char)us[y * 256 + x]; bl = (unsigned char)us[y1 * 256 + x]; ur = (unsigned char)us[y * 256 + x1]; br = (unsigned char)us[y1 * 256 + x1]; switch ( ((y & 1) << 1) | (x & 1) ) { case 0: /* even row, even col, B */ rgb.R = br; rgb.G = (ur + bl) / 2; rgb.B = ul; break; case 1: /* even row, odd col, G */ rgb.R = bl; rgb.G = ul; rgb.B = ur; break; case 2: /* odd row, even col, G */ rgb.R = ur; rgb.G = ul; rgb.B = bl; break; case 3: /* odd row, odd col, R */ default: rgb.R = ul; rgb.G = (ur + bl) / 2; rgb.B = br; break; } s[z++] = rgb.R; s[z++] = rgb.G; s[z++] = rgb.B; } } *size = z; GP_DEBUG("size=%i", *size); break; default: break; } free(us); return(s); } static char * adc65_read_picture(Camera *camera, int picture_number, int *size) { unsigned char cmd = picture_number + 1; return (adc65_read_data(camera, &cmd, 1, ADC65_DATA_PICTURE, size)); } int camera_id (CameraText *id) { strcpy(id->text, "adc65"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); /* Fill in the appropriate flags/data */ strcpy(a.model, "Achiever Digital:Adc65"); a.port = GP_PORT_SERIAL; a.speed[0] = 115200; a.speed[1] = 230400; a.speed[2] = 0; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_NONE; return gp_abilities_list_append(list, a); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { return gp_list_populate (list, "adc65%02i.ppm", adc65_file_count((Camera*)data)); } static int get_file_func ( CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int size, num; char *data; gp_file_set_mime_type (file, GP_MIME_PPM); num = gp_filesystem_number (fs, folder, filename, context); if (num < 0) return num; data = adc65_read_picture (camera, num, &size); if (!data) return GP_ERROR; return gp_file_append (file,data,size); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Adc65\nBenjamin Moos ")); return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func }; int camera_init(Camera *camera, GPContext *context) { int ret; gp_port_settings settings; camera->functions->about = camera_about; gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); ret = gp_port_set_timeout (camera->port, 5000); if (ret < GP_OK) return ret; ret = gp_port_get_settings (camera->port, &settings); if (ret < GP_OK) return ret; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits= 1; ret = gp_port_set_settings (camera->port, settings); if (ret < GP_OK) return ret; return adc65_ping(camera); } libgphoto2-2.5.9/camlibs/adc65/Changelog0000644000175000001440000000124312561423351014645 000000000000002007-02-04 Marcus Meissner * library.c, adc65.c, adc65.h: Merged library.c into adc65.c. 2005-03-11 Marcus Meissner * *: imported to libgphoto2 CVS, cleaned up. 04/19/2001 - Benjamin Moos * Forgot to document any individual changes for 11 days :) * Now outputs RGB ppm's, good enough for guv'mnt work 04/08/2001 - Benjamin Moos * Finished changing all "barbie" references to "adc65" * Rewrote all the functions to use what I know about the adc65 interface * Returns images as raw bytes 04/07/2001 - Benjamin Moos * Copied the Barbie directory and changed all the files to say adc65 instead of barbie :) libgphoto2-2.5.9/camlibs/sq905/0000755000175000001440000000000012623156270013074 500000000000000libgphoto2-2.5.9/camlibs/sq905/sq905.c0000644000175000001440000001402112610415524014033 00000000000000/* * sq905.c * * Here, the functions which are needed to get data from the camera. * * Copyright (c) 2003 Theodore Kilgore * Camera library support under libgphoto2.1.1 for camera(s) * with chipset from Service & Quality Technologies, Taiwan. * The chip supported by this driver is presumed to be the SQ905, * * Licensed under GNU Lesser General Public License, as part of Gphoto * camera support project. For a copy of the license, see the file * COPYING in the main source tree of libgphoto2. */ #include #include #include #include #include #include #include #ifdef OS2 #include #endif #include #include #include "sq905.h" #define GP_MODULE "sq905" #define SQWRITE gp_port_usb_msg_write #define SQREAD gp_port_usb_msg_read #define zero "\x0" static int sq_read_data (GPPort *port, unsigned char *data, int size) { SQWRITE (port, 0x0c, 0x03, size, zero, 1); gp_port_read (port, (char *)data, size); return GP_OK; } int sq_access_reg (GPPort *port, int reg) { char c; SQWRITE (port, 0x0c, 0x06, reg, zero, 1); /* Access a register */ SQREAD (port, 0x0c, 0x07, 0x00, &c, 1); return GP_OK; } int sq_init (GPPort *port, CameraPrivateLibrary *priv) { unsigned char c[0x4]; int i; unsigned char *catalog = malloc(0x4000); unsigned char *catalog_tmp; if (!catalog) return GP_ERROR_NO_MEMORY; sq_reset (port); sq_access_reg(port, ID); /* Access model or chip id */ sq_read_data (port, c, 4); sq_reset (port); if (!memcmp (c, "\x09\x05\x01\x19", 4)) { priv->model = SQ_MODEL_POCK_CAM; } else if (!memcmp (c, "\x09\x05\x01\x32", 4)) { priv->model = SQ_MODEL_MAGPIX; /* } else if (!memcmp (c, "\x09\x13\x06\x67", 4)) { priv->model = SQ_MODEL_913c; */ /* } else if (!memcmp (c, "\x50\x05\x00\x26", 4)) { priv->model = SQ_MODEL_PRECISION; */ } else { priv->model = SQ_MODEL_DEFAULT; } sq_access_reg(port, CONFIG); /* Access config */ sq_read_data(port, catalog, 0x4000); /* We need 16 bytes for each photo. */ sq_reset (port); /* The first occurence of a zero denotes end of files entries (here clips count as 1 entry) */ for (i=0; i<0x4000 && catalog[i]; i+=16) ; priv->nb_entries = i>>4; if (i) { catalog_tmp = realloc(catalog, i); if (catalog_tmp) priv->catalog = catalog_tmp; else priv->catalog = catalog; } else { free (catalog); priv->catalog = NULL; /* We just have freed catalog_tmp */ } sq_reset (port); priv->last_fetched_entry = -1; free(priv->last_fetched_data); priv->last_fetched_data = NULL; return GP_OK; } int sq_get_num_frames (CameraPrivateLibrary *priv, int entry) { if (sq_is_clip(priv, entry)) { GP_DEBUG(" Number of frames in clip %i is %i\n", entry, priv->catalog[16*entry+7]); return priv->catalog[16*entry+7]; } else { return 1; } } int sq_get_comp_ratio (CameraPrivateLibrary *priv, int entry) { switch (priv->catalog[16*entry]) { case 0x61: case 0x62: case 0x63: case 0x76: return 2; case 0x41: case 0x42: case 0x43: case 0x52: case 0x53: case 0x56: case 0x72: return 1; default: GP_DEBUG ("Your camera has unknown resolution settings.\n"); return 0; } } int sq_get_picture_width (CameraPrivateLibrary *priv, int entry) { switch (priv->catalog[16*entry]) { case 0x41: case 0x52: case 0x61: return 352; case 0x42: case 0x62: case 0x72: return 176; case 0x43: case 0x53: case 0x63: return 320; case 0x56: case 0x76: return 640; default: GP_DEBUG ("Your pictures have unknown width.\n"); return 0; } } int sq_is_clip (CameraPrivateLibrary *priv, int entry) { switch (priv->catalog[16*entry]) { case 0x52: case 0x53: case 0x72: return 1; default: return 0; } } int sq_rewind (GPPort *port, CameraPrivateLibrary *priv) { static unsigned char dummy_buf[0x4000]; GP_DEBUG("REWIND cam's data pointer"); /* One has to read the catalog to rewind the data stream... * I don't know if it's by design. There ought to be something better to do... :-/ */ sq_access_reg(port, CONFIG); /* Access config */ sq_read_data(port, dummy_buf, 0x4000); sq_reset (port); sq_access_reg(port, DATA); /* Access photo data */ priv->last_fetched_entry = -1; free(priv->last_fetched_data); priv->last_fetched_data = NULL; return GP_OK; } int sq_reset (GPPort *port) { sq_access_reg(port, CLEAR); /* Release current register */ return GP_OK; } int sq_read_picture_data (GPPort *port, unsigned char *data, int size ) { int remainder = size % 0x8000; int offset = 0; char c; while ((offset + 0x8000 < size)) { sq_read_data (port, data + offset, 0x8000); offset = offset + 0x8000; } sq_read_data (port, data + offset, remainder); SQWRITE (port, 0x0c, 0xc0, 0x00, &c, 1); return GP_OK; } int sq_delete_all (GPPort *port, CameraPrivateLibrary *priv) { /* This will work on the Argus DC-1510, perhaps some others. * Will not successfully delete on all SQ905 cameras! */ switch (priv->catalog[2]) { case 0xd0: /* Searches for DC-1510 */ sq_access_reg(port, CAPTURE); /* used here to delete */ sq_reset(port); break; default: return (GP_ERROR_NOT_SUPPORTED); } return GP_OK; } int sq_preprocess (SQModel model, int comp_ratio, unsigned char is_in_clip, unsigned char *data, int w, int h) { int i, m, b; unsigned char temp; b=w*h/comp_ratio; GP_DEBUG("Running sq_preprocess\n"); if (!is_in_clip) { /* Turning the picture right-side up. */ for (i = 0; i < b/2; ++i) { temp = data[i]; data[i] = data[b -1 -i]; data[b - 1 - i] = temp; } /* But clip frames are already right-side-up */ } /* * POCK_CAM needs de-mirror-imaging, too. But if a photo is * compressed we de-mirror after decompression, so not here. */ if ((model == SQ_MODEL_POCK_CAM) && (comp_ratio == 1)) { for (i = 0; i < h; i++) { for (m = 0 ; m < w/2; m++) { temp = data[w*i +m]; data[w*i + m] = data[w*i + w -1 -m]; data[w*i + w - 1 - m] = temp; } } } return GP_OK; } libgphoto2-2.5.9/camlibs/sq905/library.c0000644000175000001440000003726112610415524014631 00000000000000/* library.c * * Copyright (C) 2003 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "sq905.h" #include #define GP_MODULE "sq905" static const struct { char *name; CameraDriverStatus status; unsigned short idVendor; unsigned short idProduct; } models[] = { {"SQ chip camera", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Argus DC-1510", GP_DRIVER_STATUS_PRODUCTION, 0x2770, 0x9120}, {"Gear to go", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Mitek CD10" , GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Mitek CD30P", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"GTW Electronics", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Concord Eye-Q Easy",GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Concord Eye-Q Duo", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Che-ez Snap", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"PockCam", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Magpix B350", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Jenoptik JDC 350", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Precision Mini Digital Camera", GP_DRIVER_STATUS_PRODUCTION , 0x2770 , 0x9120}, {"iConcepts digital camera" , GP_DRIVER_STATUS_PRODUCTION , 0x2770 , 0x9120}, {"Sakar Kidz Cam 86379", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"ViviCam3350", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"ViviCam5B", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"DC-N130ta", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"SY-2107C", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Shark SDC-513", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Shark SDC-519", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Shark 2-in-1 Mini", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Argus DC-1730", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x913c}, {"Request Ultra Slim", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {"Global Point Splash Mini (underwater camera)", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9120}, {NULL,0,0} }; int camera_id (CameraText *id) { strcpy (id->text, "SQ chipset camera"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].name); a.status = models[i].status; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; if (a.status == GP_DRIVER_STATUS_EXPERIMENTAL) a.operations = GP_OPERATION_NONE; else a.operations = GP_OPERATION_CAPTURE_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; a.file_operations = GP_FILE_OPERATION_PREVIEW + GP_FILE_OPERATION_RAW; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { sprintf (summary->text,_("Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n"), camera->pl->nb_entries); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" )); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("sq905 generic driver\n" "Theodore Kilgore \n")); return GP_OK; } /*************** File and Downloading Functions *******************/ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i,n; GP_DEBUG ("List files in %s\n", folder); if (0==strcmp(folder, "/")) { for (i=0, n=0; ipl->nb_entries; i++) { if (!sq_is_clip(camera->pl, i)) n++; } gp_list_populate(list, "pict%03i.ppm", n); } else { char format[16]; n = atoi(folder+1+4); /* '/' + 'clip' */ snprintf(format, sizeof(format), "%03i_%%03i.ppm", n); for (i=0; ipl->nb_entries && n>0; i++) { if (sq_is_clip(camera->pl, i)) n--; } i--; if (!sq_is_clip(camera->pl, i)) return GP_ERROR_DIRECTORY_NOT_FOUND; gp_list_populate(list, format, sq_get_num_frames(camera->pl, i)); } return GP_OK; } static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i,n; GP_DEBUG ("List folders in %s\n", folder); if (0==strcmp(folder, "/")) { for (i=0, n=0; ipl->nb_entries; i++) { if (sq_is_clip(camera->pl, i)) n++; } gp_list_populate (list, "clip%03i", n); } return GP_OK; } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo *info, void *data, GPContext *context) { memset (info, 0, sizeof(CameraFileInfo)); /* FIXME: fill in some stuff? */ return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int i, w, h, b, entry, frame, is_in_clip; int nb_frames, to_fetch; int do_preprocess; unsigned char comp_ratio; unsigned char *frame_data, *rawdata; unsigned char *ppm, *ptr; unsigned char gtable[256]; int size; int this_cam_tile; if (GP_FILE_TYPE_EXIF ==type) return GP_ERROR_FILE_EXISTS; if (GP_FILE_TYPE_RAW!=type && GP_FILE_TYPE_NORMAL !=type && GP_FILE_TYPE_PREVIEW!=type) { return GP_ERROR_NOT_SUPPORTED; } /* Get the entry number of the photo on the camera */ entry = -1; if (0==strcmp(folder, "/")) { i = atoi(filename+4); do { do entry++; while (sq_is_clip(camera->pl, entry) && entrypl->nb_entries); i--; } while (i>0); if (entry == camera->pl->nb_entries) return GP_ERROR_FILE_NOT_FOUND; frame = 0; is_in_clip = 0; } else { i = atoi(folder+1+4); do { do entry++; while (!sq_is_clip(camera->pl, entry) && entrypl->nb_entries); i--; } while (i>0); if (entry == camera->pl->nb_entries) return GP_ERROR_DIRECTORY_NOT_FOUND; frame = atoi(filename+4)-1; if (frame >= sq_get_num_frames(camera->pl, entry)) return GP_ERROR_FILE_NOT_FOUND; is_in_clip = 1; } GP_DEBUG ("Download file %s from %s, entry = %d, frame = %d\n", filename, folder, entry, frame); /* Fetch entries until the one we need, and toss all before * the one we need. * TODO: Either find out how to use the location info in the catalog * to download just the entry needed, or show it is as impossible as * it seems to be. */ GP_DEBUG ("last entry was %d\n", camera->pl->last_fetched_entry); /* Change register to DATA, but only if necessary */ if ((camera->pl->last_fetched_entry == -1) || ((is_in_clip) && (frame == 0)) ) sq_access_reg(camera->port, DATA); if (camera->pl->last_fetched_entry > entry) { sq_rewind(camera->port, camera->pl); } do_preprocess = 0; do { to_fetch = camera->pl->last_fetched_entry; if (to_fetch < entry) { to_fetch++; free(camera->pl->last_fetched_data); camera->pl->last_fetched_data = NULL; } nb_frames = sq_get_num_frames(camera->pl, to_fetch); comp_ratio = sq_get_comp_ratio (camera->pl, to_fetch); w = sq_get_picture_width (camera->pl, to_fetch); switch (w) { case 176: h = 144; break; case 640: h = 480; break; case 320: h = 240; break; default: h = 288; break; } b = nb_frames * w * h / comp_ratio; do_preprocess = 1; if (camera->pl->last_fetched_data) break; camera->pl->last_fetched_data = malloc (nb_frames*w*h); if (!camera->pl->last_fetched_data) { sq_rewind(camera->port, camera->pl); return GP_ERROR_NO_MEMORY; } GP_DEBUG("Fetch entry %i\n", to_fetch); sq_read_picture_data (camera->port, camera->pl->last_fetched_data, b); camera->pl->last_fetched_entry = to_fetch; } while (camera->pl->last_fetched_entrypl->last_fetched_data+(w*h)*frame/comp_ratio; /* sq_preprocess ( ) turns the photo right-side-up and for some * models must also de-mirror the photo */ if (GP_FILE_TYPE_RAW!=type) { if (do_preprocess) { sq_preprocess(camera->pl->model, comp_ratio, is_in_clip, frame_data, w, h); } /* * Now put the data into a PPM image file. */ ppm = malloc (w * h * 3 + 256); /* room for data + header */ if (!ppm) { return GP_ERROR_NO_MEMORY; } sprintf ((char *)ppm, "P6\n" "# CREATOR: gphoto2, SQ905 library\n" "%d %d\n" "255\n", w, h); size = strlen ((char *)ppm); ptr = ppm + size; switch (camera->pl->model) { case SQ_MODEL_POCK_CAM: case SQ_MODEL_MAGPIX: this_cam_tile = BAYER_TILE_GBRG; break; default: this_cam_tile = BAYER_TILE_BGGR; break; } size = size + (w * h * 3); GP_DEBUG ("size = %i\n", size); if (comp_ratio>1) { rawdata = malloc (w*h); if (!rawdata) { free (ppm); return GP_ERROR_NO_MEMORY; } sq_decompress (camera->pl->model, rawdata, frame_data, w, h); gp_gamma_fill_table (gtable, .65); } else { rawdata = frame_data; gp_gamma_fill_table (gtable, .55); } gp_ahd_decode (rawdata, w , h , ptr, this_cam_tile); gp_gamma_correct_single (gtable, ptr, w * h); gp_file_set_mime_type (file, GP_MIME_PPM); gp_file_set_data_and_size (file, (char *)ppm, size); if (rawdata != frame_data) free (rawdata); } else { /* type is GP_FILE_TYPE_RAW */ size = w*h/comp_ratio; rawdata = malloc (size+16); if (!rawdata) return GP_ERROR_NO_MEMORY; memcpy (rawdata, frame_data, size); memcpy (rawdata+size,camera->pl->catalog+16*entry,16); gp_file_set_mime_type (file, GP_MIME_RAW); gp_file_set_data_and_size (file, (char *)rawdata, size+16); } /* Reset camera when done, for more graceful exit. */ if ((!(is_in_clip)&&(entry +1 == camera->pl->nb_entries)) || ((is_in_clip)&& (frame +1 == nb_frames ))) sq_reset (camera->port); return GP_OK; } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; GP_DEBUG(" * delete_all_func()"); sq_delete_all(camera->port, camera->pl); return (GP_OK); } static int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { unsigned char *frame_data; unsigned char *ppm, *ptr; unsigned char gtable[256]; int size; int w = 320; int h = 240; int b=0x12c40; camera->pl->last_fetched_data = malloc (b); if (!camera->pl->last_fetched_data) { sq_rewind(camera->port, camera->pl); return GP_ERROR_NO_MEMORY; } sq_access_reg(camera->port, CAPTURE); sq_read_picture_data (camera->port, camera->pl->last_fetched_data, b); frame_data = camera->pl->last_fetched_data + 0x40; sq_preprocess(camera->pl->model, 1, 0, frame_data, w, h); /* Now put the data into a PPM image file. */ ppm = malloc (w * h * 3 + 256); if (!ppm) return GP_ERROR_NO_MEMORY; sprintf ((char *)ppm, "P6\n" "# CREATOR: gphoto2, SQ905 library\n" "%d %d\n" "255\n", w, h); ptr = ppm + strlen ((char*)ppm); size = strlen ((char*)ppm) + (w * h * 3); GP_DEBUG ("size = %i\n", size); switch (camera->pl->model) { case SQ_MODEL_POCK_CAM: gp_bayer_decode (frame_data, w , h , ptr, BAYER_TILE_GBRG); break; default: gp_bayer_decode (frame_data, w , h , ptr, BAYER_TILE_BGGR); break; } /* TO DO: * Adapt some postprocessing routine to work here, because results * can vary greatly, depending both on lighting conditions and on * camera model. */ gp_gamma_fill_table (gtable, .5); gp_gamma_correct_single (gtable, ptr, w * h); gp_file_set_mime_type (file, GP_MIME_PPM); gp_file_set_data_and_size (file, (char *)ppm, size); sq_reset(camera->port); sq_access_reg(camera->port, CAPTURE); sq_reset(camera->port); return (GP_OK); } /*************** Exit and Initialization Functions ******************/ static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("SQ camera_exit"); sq_reset (camera->port); if (camera->pl) { free (camera->pl->catalog); free (camera->pl->last_fetched_data); free (camera->pl); camera->pl = NULL; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func, .delete_all_func = delete_all_func, }; int camera_init(Camera *camera, GPContext *context) { GPPortSettings settings; int ret = 0; /* First, set up all the function pointers */ camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; camera->functions->capture_preview = camera_capture_preview; camera->functions->exit = camera_exit; GP_DEBUG ("Initializing the camera\n"); ret = gp_port_get_settings(camera->port,&settings); if (ret < 0) return ret; ret = gp_port_set_settings(camera->port,settings); if (ret < 0) return ret; /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; camera->pl->model = 0; camera->pl->catalog = NULL; camera->pl->nb_entries = 0; camera->pl->last_fetched_entry = -1; camera->pl->last_fetched_data = NULL; /* Connect to the camera */ ret = sq_init (camera->port, camera->pl); if (ret != GP_OK) { free(camera->pl); return ret; }; return GP_OK; } libgphoto2-2.5.9/camlibs/sq905/README.sq9050000644000175000001440000003421012610415510014543 00000000000000/* This is the README.sq905 file for libgphoto2/camlibs/sq905. * * This README is part of the libgphoto2/camlibs/sq905 library source and is * distributed with that source under the LGPL license. a copy of which * license may be seen in any of the source files in libgphoto2/camlibs/sq905, * or in the head directory of libgphoto2. * * Copyright (C) 2003 - 2010 Theodore Kilgore */ INTRODUCTION: Cameras with chip from S&Q Technologies are often called DSC(2770) cameras. They have USB Vendor:Product number 0x2770:0x9120, and are classified as USB Class:Subclass:Protocol ff:ff:ff (proprietary:proprietary:proprietary). These cameras are cheap, basic, and come in many brands and models -- all with the same USB Vendor:Product number and identical /proc/bus/devices entry. In this broad set of cameras, differences can include such things as different resolution capabilities, mirror-imaging of data which requires line reversal, and different sensitivity under various lighting conditions, apparently due to different video sensor chips. Further complicating matters, neither S&Q Technologies nor the associated camera "manufacturers" seem responsive to requests for information about their chips or cameras. I have several different SQ905 cameras for testing. For other cameras, I am totally dependent on reports from users and testers. If you have another 0x2770:0x9120 camera and want it to work and it currently does not, then I will be very glad to hear from you. Saying this a different way: further progress with your camera will depend upon your input. Moreover, the Gphoto project tries very hard to keep a complete list of all supported cameras, by name and/or by any other distinguishing features, such as a model number if any is printed on the camera or on the packaging. If your camera is not on the list of supported cameras, then even if it works please report it, so that it can be explicitly added by name in the listing found in the source file camlibs/sq905/library.c. Please do this to help others. A camera is not sold with the USB vendor:product number printed on the package. Also even if it works perfectly in Linux with Gphoto software it will usually not say that on the package, either. For these reasons, again, please remember to report your camera if it is previously unlisted, even if it works. One would reasonably suspect that all of these cameras have the same chip in them, or similar chips from SQ. The cameras do distinguish themselves from one another to some extent, reporting a number which can be thought of as a "chip id" or "model" ID (for more discussion and a list of known IDs skip down to "THE MODEL OR CHIP ID NUMBER"). If your camera reports an unknown chip id, then please let me know about that. Your camera may well work anyway, but it may require a different color tiling scheme, or it might mirror-image the photos. The only way to cure such a problem is for us to know about the camera's chip ID and to know precisely what the non-conforming behavior is. WHAT CHIP IS ACTUALLY IN THESE CAMERAS? The brief answer is that I do not know. The website of SQ Technologies lists several camera controller chips in addition to the SQ905, which is now (2007) discontinued. All of the SQ cameras which have the same USB ID do use the same control sequences, however. The lower-resolution cameras all seem to use the same Hynix video sensor chip. The video chips in higher-resolution cameras do not all behave the same way and thus probably come from several sources. Fortunately, it seems that the "chip id" is a sufficiently reliable indicator of how to process data from the camera. THE MODEL OR CHIP ID NUMBER Very early during initialization, the camera reports a four-byte string. Apparently, this string identifies the model, the precise chip in the camera, or perhaps the controller and video imaging chip combination. The string may be associated with special behavior. For example, the camera may produce photos which are mirror-imaged unless line reversal is done, or perhaps the color tiling is different. Fortunately, most of the time one may assume that the model is "SQ_MODEL_DEFAULT," but not always. To help in those cases where it does make a difference, the model number is recorded during camera initialization. You can see what number your camera has, by doing any gphoto2 operation in debug mode and saving the debug output into a file. For example, to do "gphoto2 --summary --debug 2>debug" will create a text logfile called "debug." In that file, look for the place where the computer and the camera actually start to talk to each other, and you will see the number. A list of known numbers follows: Brand name/model Number Credits to Argus DC-1510 and many other cameras 09 05 00 26 T. K. PockCam, Che-Ez Snap, some others 09 05 01 19 Paolo Tribolet Abreu, Christian Bulow Magpix B350 Binocular Camera 09 05 01 32 T. K. Precision Mini 50 05 00 26 Fabien Devaux Vivicam 3350 09 05 02 19 T. K. DC-N130t 09 05 02 25 Cedric Cellier Global Point Splash Mini (waterproof) 09 05 02 19 T. K. Of these models, most actually use the "default" settings for photo processing. WHAT FEATURES DO THESE CAMERAS HAVE, AND WHAT DOES THIS DRIVER SUPPORT? FEATURE LIST SUPPORTED (Y/N/Part) -- USB connection to computer Y -- High resolution 352x288 or 640x480, uncompressed Y -- Low resolution 176x144 or 320x240, uncompressed Y -- High resolution 352x288 or 640x480, compressed Y -- Low resolution 176x144 or 320x240, compressed Y -- Ability to "switch" resolution between pictures Y -- Ability to download all pictures on camera Y -- Ability to download the first k pictures, where k is less than the number on the camera Y -- Ability to download individual photos Y -- "Video clip" capability. Clips are saved as directories. Y -- Capture and immediate download of a 320x240 snapshot Y -- Webcam mode: Not supported here. But see notes below. N ------------------------------------------------------------------------- The following things can be done with button-pushes on the camera: ------------------------------------------------------------------------- -- Frequency filter for use in artificial light. Can be set to cancel 60hz or 50hz interference. -- Delete all, delete last, resolution setting, compression mode setting. Unfortunately, it does not seem possible to do any of these things with commands sent from the computer even if the camera is tethered, except for the fact that for some of the cameras the command which triggers capture also has the effect of deleting everything stored on the camera. Thus, deletion of all photos may work for your camera, but it may not. Notes: All known sq905 cameras have either a 640x480 high-resolution setting and a 320x240 low-resolution setting, or a 352x288 and a 176x144 setting. If your sq905 camera uses a new resolution setting, then you will be unable to download photos until that new resolution setting is listed in sq905.c in sq_get_picture_width () and in library.c where the picture height is chosen. If you encounter new resolution settings, then please report them so they can be put into the camlib. All known sq905 cameras use only 320x240 in capture mode. Also, capture never uses high compression, even if it is otherwise turned on. Please report any behavior different from this. "Video clip capability" is implemented for all known SQ cameras. "Video clip" output is always uncompressed, ignoring the "compression" setting. Also, it is possible to create more than one clip or to intersperse clips and ordinary still photos on the camera. The pictures obtained on the uncompressed settings can often be superior to those obtained using the software which came with the camera, but not always. Generally, considering that they are cheap, low resolution cameras, these cameras give relatively good pictures, Video capture of one photo is done with "gphoto2 --capture-preview". The related command "gphoto2 --capture" is not implemented. It would be used to take a photo which can be downloaded later on, through normal photo download procedures. But the hardware seems unable to support "gphoto2 --capture". The sq905 cameras can function as webcams. Support for the webcam mode of these cameras is available through the module gspca_sq905, included as part of the regular kernel since kernel version 2.6.29. This means it is part of the kernel source, of course. It is then up to your distro to include the webcam support for these cameas, or not. The webcam mode for any of these cameras can do streaming at any of the resolutions 160x240, 176x144, 320x240, 352x288, and in addition at 640x480 provided that the camera's hardware will do this (What is the max resolution for still photos? The same applies in webcam mode). However, do not expect a high frame rate in webcam mode. The camera is a USB 1.1 device, and it is streaming uncompressed frames, using bulk transport, not isochronous transport. Thanks is hereby given to the authors and maintainers of the old "sq" module, which for several years provided an out-of-kernel module to support streaming with these cameras. HARDWARE LIMITATIONS AND CONSTRAINTS 1. The downloading of "thumbnails" as special files is totally unsupported by the hardware. The manufacturer's driver downloads a consecutive list of photos and creates thumbnails, then "saves" only the photos which the user selects. Gphoto2 prefers ability to do random access. 2. The camera's data storage provides only sequential access, not random access. In other words, it acts as though it were a tape drive instead of a disk. The constraints which this places are obvious. 3. Considering the way the communication protocols of these cameras seem to work, it would seem nearly impossible to copy any data to the camera for storage and transport. The camera clearly does not have files on it, only data addresses. And the camera does not keep time. For similar reasons, it would also seem impossible to delete a photo from the camera by action of software on the computer. The camera supports two choices for deletion: delete the last photo taken, or delete all. Each action is performed by an appropriate sequence of button pushes on the camera. (Addendum: Deletion of all photos is supported on the Argus DC-1510 and certain cameras similar to it (Precision Mini?). The routine for starting webcam mode will delete all photos on the DC-1510. But not on the Argus DC-1512 and apparently not on most other SQ cameras. A "Delete all" function is included, for those who have cameras which can use it. If your camera's literature warns that using the camera as a webcam or PCcam will cause data loss, then "Delete all" will probably work.) To find a way around the listed constraints would indeed be most interesting. Who knows? Maybe these things can be done. Could be that these chips have undocumented capabilities. But maybe not. I have especially hunted for undocumented commands which would support things that the camera will only do with button presses, but I have not found any. WHAT GUI FRONTENDS DOES THIS CAMERA LIBRARY SUOPPORT? Gtkam seems to work quite well for me with this library. Note, however, that gtkam will require you to download the contents of video clips separately from ordinary photos. Clips are put into subdirectories, and you must enter a subdirectory to see and download the frames in it. Digikam does not work quite so well for me. But it may work nicely for you, and you are hereby encouraged to try it. If you want to use either gtkam or digikam, you are encouraged to read the camera's manual. NOTES 1. The program is set up to put out pictures in PPM or raw format. 2. The gamma setting (actually seems to be one over gamma) used for the construction of PPM image files has been obtained by trial and error. It seems to work very well for outdoor pictures, but the setting is a compromise between what happens with outdoor photos and what happens with indoor photos. Conceivably, the program could support a choice between two or more gamma settings, optimizing for different conditions. 4. Please get back to me with reports about other SQ cameras, with their specifications (what it says in the manual about resolution and number of pictures, as well as make and model, ID reported, and whether it works or not would be enough), and with a log file if there are problems. ACKNOWLEDGMENTS: -- to several members of East Alabama Linux Users group, for help and encouragement: Bruce Gray, Darrel Hankerson, Thomas Kilgore (my son, the Perl hacker) Kelley Price, for some basic help with C. Wade "Bear" Tinney, for help in discovering how to subscribe to the gphoto-devel mailing list -- to Prof. Stan Reeves, Department of Electrical Engineering, Auburn University, for a very informative discussion of how a Bayer array is constructed. -- to my colleagues Darrel Hankerson, who knows clever ways to pass a character string from one function to another Steve Stuckwisch, who could explain to me Darrel's explanation -- to Christophe Barbe, for encouragement -- to Lutz Miller, for making me do it right. -- to Cedric Cellier, for devising the sq_rewind ( ) function, for implementing the directory structure for video clips, and in general for his continued interest in these cameras. WARRANTY? Absolutely not. No warranty. Never. Not responsible for any actual or potential damage or consequences to anyone or to the equipment of anyone for using this program, whether the alleged damage or alleged consequences are claimed to be real, imaginary, direct, collateral, for pain and suffering, or are claimed to be inflicted upon any "third party" who is not the user or installer of the program. The program has been written for my pleasure and to broaden and deepen my knowledge of computer hardware and software. The program has not been written with the immediate expectation of financial gain or profit on my part, nor has it been commissioned for pay. It is presumed that any end-user of this program will have access to the source code of the program and can judge for himself or herself whether he/she wishes to use it or not, or can consult someone with appropriate expertise to make such a judgment. Theodore Kilgore 07/07/03 (revised 03/09/07 and 02/18/10)libgphoto2-2.5.9/camlibs/sq905/postprocess.c0000644000175000001440000001505712561423351015552 00000000000000/* * postprocess.c * * Here are the decompression function for the compressed photos and the * postprocessing for uncompressed photos. * * Copyright (c) 2003 Theodore Kilgore * Camera library support under libgphoto2.1.1 for camera(s) * with chipset from Service & Quality Technologies, Taiwan. * The chip supported by this driver is presumed to be the SQ905, * * Licensed under GNU Lesser General Public License, as part of Gphoto * camera support project. For a copy of the license, see the file * COPYING in the main source tree of libgphoto2. */ #include #include #include #include #include #include #include #ifdef OS2 #include #endif #include #include #include "sq905.h" #define GP_MODULE "sq905" #define RED 0 #define GREEN 1 #define BLUE 2 #ifndef MAX # define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif static int decode_panel (unsigned char *panel_out, unsigned char *panel, int panelwidth, int height, int color); int sq_decompress (SQModel model, unsigned char *output, unsigned char *data, int w, int h) { /* * Data arranged in planar form. We decompress the raw data first, * one colorplane at a time, and put the results into a standard * Bayer pattern. The byte-reversal routine having been done already, * the planes are in the order RBG. The R and B planes each have * dimensions (w/4)*(h/2), and the G is (w/4)*h. */ unsigned char *red, *green, *blue, *red_out, *green_out, *blue_out; int i, m; unsigned char temp; red = data; blue = data + w*h/8; green = data + w*h/4; red_out = malloc(w*h/4); if (!red_out) return -1; blue_out = malloc(w*h/4); if (!blue_out) { free (red_out); return -1; } green_out = malloc(w*h/2); if (!green_out) { free (red_out); free (blue_out); return -1; } decode_panel (red_out, red, w/2, h/2, RED); decode_panel (blue_out, blue, w/2, h/2, BLUE); decode_panel (green_out, green, w/2, h, GREEN); /* Now, put things in their proper places */ for ( m = 0; m < h/2 ; m++ ) { for ( i = 0; i < w/2; i++ ) { /* Reds in even rows, even columns */ output[(2*m)*w+2*i ] = red_out[m*w/2+i ]; /* Blues in odd rows, odd columns */ output[(2*m+1)*w+2*i +1] = blue_out[m*w/2+i]; /* For the greens (note m*w = (2*m)*w/2) we * get first the even rows, odd columns */ output[(2*m)*w+ 2*i+1] = green_out[m*w +i]; /* and then, the greens on odd rows, even columns. */ output[(2*m+1)*w+ 2*i] = green_out[(2*m+1)*w/2 +i]; } } /* De-mirroring for some models */ switch(model) { case(SQ_MODEL_MAGPIX): case(SQ_MODEL_POCK_CAM): for (i = 0; i < h; i++) { for (m = 0 ; m < w/2; m++) { temp = output[w*i +m]; output[w*i + m] = output[w*i + w -1 -m]; output[w*i + w - 1 - m] = temp; } } break; default: ; /* default is "do nothing" */ } free (red_out); free (green_out); free (blue_out); return(GP_OK); } static int decode_panel (unsigned char *panel_out, unsigned char *panel, int panelwidth, int height, int color) { /* Here, "panelwidth" signifies width of panel_out * which is w/2, and height equals h */ int diff = 0; int tempval = 0; int i, m; unsigned char delta_left = 0; unsigned char delta_right = 0; int input_counter = 0; int delta_table[] = {-144,-110,-77,-53,-35,-21,-11,-3, 2,10,20,34,52,76,110,144}; unsigned char *temp_line; temp_line = malloc(panelwidth); if (!temp_line) return -1; for(i=0; i < panelwidth; i++){ temp_line[i] = 0x80; } if (color != GREEN) { for (m=0; m < height; m++) { for (i=0; i< panelwidth/2; i++) { delta_left = panel[input_counter] &0x0f; delta_right = (panel[input_counter]>>4)&0xff; input_counter ++; /* left pixel */ diff = delta_table[delta_left]; if (!i) tempval = (temp_line[2*i]) + diff; else tempval = (temp_line[2*i] + panel_out[m*panelwidth+2*i-1])/2 + diff; tempval = MIN(tempval, 0xff); tempval = MAX(tempval, 0); panel_out[m*panelwidth+2*i] = tempval; temp_line[2*i] = panel_out[m*panelwidth + 2*i]; /* right pixel */ diff = delta_table[delta_right]; tempval = (temp_line[2*i+1] + panel_out[m*panelwidth+2*i])/2 + diff; tempval = MIN(tempval, 0xff); tempval = MAX(tempval, 0); panel_out[m*panelwidth+2*i+1] = tempval; temp_line[2*i+1] = panel_out[m*panelwidth + 2*i+1]; } } free (temp_line); return 0; } else { /* greens */ for (m=0; m < height/2; m++) { /* First we do an even line */ for (i=0; i< panelwidth/2; i++) { delta_left = panel[input_counter] &0x0f; delta_right = (panel[input_counter]>>4)&0xff; input_counter ++; /* left pixel */ diff = delta_table[delta_left]; if (!i) tempval = (temp_line[0]+temp_line[1])/2 + diff; else tempval = (temp_line[2*i+1] + panel_out[2*m*panelwidth+2*i-1])/2 + diff; tempval = MIN(tempval, 0xff); tempval = MAX(tempval, 0); panel_out[2*m*panelwidth+2*i] = tempval; temp_line[2*i] = tempval; /* right pixel */ diff = delta_table[delta_right]; if (2*i == panelwidth - 2 ) tempval = (temp_line[2*i+1] + panel_out [2*m*panelwidth+2*i])/2 + diff; else tempval = (temp_line[2*i+2] + panel_out [2*m*panelwidth+2*i])/2 + diff; tempval = MIN(tempval, 0xff); tempval = MAX(tempval, 0); panel_out[2*m*panelwidth+2*i+1] = tempval; temp_line[2*i+1] = tempval; } /* then an odd line */ for (i=0; i< panelwidth/2; i++) { delta_left = panel[input_counter] &0x0f; delta_right = (panel[input_counter]>>4)&0xff; input_counter ++; /* left pixel */ diff = delta_table[delta_left]; if (!i) tempval = (temp_line[2*i]) + diff; else tempval = (temp_line[2*i] + panel_out [(2*m+1)*panelwidth+2*i-1])/2 + diff; tempval = MIN(tempval, 0xff); tempval = MAX(tempval, 0); panel_out[(2*m+1)*panelwidth+2*i] = tempval; temp_line[2*i] = tempval; /* right pixel */ diff = delta_table[delta_right]; tempval = (temp_line[2*i+1] + panel_out[(2*m+1)*panelwidth+2*i])/2 + diff; tempval = MIN(tempval, 0xff); tempval = MAX(tempval, 0); panel_out[(2*m+1)*panelwidth+2*i+1] = tempval; temp_line[2*i+1] = tempval; } } free (temp_line); return GP_OK; } } libgphoto2-2.5.9/camlibs/sq905/Makefile-files0000644000175000001440000000056012561423351015553 00000000000000EXTRA_DIST += sq905/README.913C sq905/README.sq905 sq905/ChangeLog sq905/TODO camlibdoc_DATA += sq905/README.913C sq905/README.sq905 EXTRA_LTLIBRARIES += sq905.la sq905_la_SOURCES = sq905/library.c sq905/sq905.c sq905/sq905.h sq905/postprocess.c sq905_la_LDFLAGS = $(camlib_ldflags) sq905_la_DEPENDENCIES = $(camlib_dependencies) sq905_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/sq905/TODO0000644000175000001440000000033112561423351013477 00000000000000Here is a short list of things which might still need work. It is envisioned that this list might change from time to time. Not much left on the list of unsupported functionality, AFAIK. Theodore Kilgore (03/09/07)libgphoto2-2.5.9/camlibs/sq905/sq905.h0000644000175000001440000000347412561423351014054 00000000000000#ifndef __SQ905_H__ #define __SQ905_H__ #include /* A 'picture' is a single standalone picture. * A 'clip' is an autoshoot clip. * A 'frame' is a single a picture out of a clip. * An 'entry' corresponds to a line listed in the camera's configuration data, * part of which is a rudimentary allocation table (the 'catalog'). * An entry, therefore, may be either a picture or a clip. * We reserve the word 'file' for the user fetchable file, * that is, a picture or a frame. */ typedef enum { SQ_MODEL_POCK_CAM, SQ_MODEL_PRECISION, SQ_MODEL_MAGPIX, /* SQ_MODEL_913c, */ SQ_MODEL_DEFAULT } SQModel; struct _CameraPrivateLibrary { SQModel model; unsigned char *catalog; int nb_entries; int last_fetched_entry; unsigned char *last_fetched_data; }; #define ID 0xf0 #define CONFIG 0x20 #define DATA 0x30 #define CLEAR 0xa0 #define CAPTURE 0x61 int sq_access_reg (GPPort *, int reg); int sq_reset (GPPort *); int sq_rewind (GPPort *, CameraPrivateLibrary *); int sq_init (GPPort *, CameraPrivateLibrary *); int sq_read_picture_data (GPPort *, unsigned char *data, int size); int sq_delete_all (GPPort *, CameraPrivateLibrary *); /* Those functions don't need data transfer with the camera */ int sq_get_num_frames (CameraPrivateLibrary *, int entry); int sq_get_comp_ratio (CameraPrivateLibrary *, int entry); int sq_get_picture_width (CameraPrivateLibrary *, int entry); int sq_is_clip (CameraPrivateLibrary *, int entry); int sq_preprocess (SQModel model, int comp_ratio, unsigned char is_in_clip, unsigned char *data, int w, int h); int sq_decompress (SQModel model, unsigned char *output, unsigned char *data, int w, int h); #endif libgphoto2-2.5.9/camlibs/sq905/ChangeLog0000644000175000001440000001616212610415510014563 000000000000002008-05-29 Theodore Kilgore * library.c: New camera. Global Point Splash Mini added. 2008-05-29 Theodore Kilgore * library.c: raw files now each have the corresponding catalog entry added as a 16-byte footer. 2008-05-27 Theodore Kilgore * library.c: gp_bayer_decode() -> gp_ahd_decode(). 2007-06-24 Theodore Kilgore * library.c: Several Sakar cameras added. 2007-06-24 Theodore Kilgore * library.c: * sq905.c: * sq905.h: fixed compile warnings about signedness. 2007-05-10 Marcus Meissner * postprocess.c: Fixed some free() calls and some memory leaks. 2007-03-09 Theodore Kilgore * library.c: Decompression support re-done. * postprocess.c: Decompression support re-done. * sq905.c: Decompression support re-done. * sq905.h: Decompression support re-done. 2006-01-03 Hubert Figuiere * library.c: Shark 2-in-1 Mini Request Ultra Slim 2005-05-18 Theodore Kilgore * library.c: raw photo download routine segfault fixed. 2005-05-18 Theodore Kilgore * library.c: Several improvements for SQ_MODEL_POCK_CAM * postprocess.c: Several improvements for SQ_MODEL_POCK_CAM * sq905.c: Several improvements for SQ_MODEL_POCK_CAM, thanks to Julius Schwartzenberg for exhaustive testing! 2005-05-18 Theodore Kilgore * library.c: bug in compressed photo routine fixed, found by Cedric Cellier. 2005-04-17 Theodore Kilgore * ChangeLog: Fixed some typos. 2005-04-16 Theodore Kilgore * library.c: fix sq_decompress() to handle Magpix B350 * postprocess.c: fix sq_decompress() to handle Magpix B350 * sq905.h: fix sq_decompress() to handle Magpix B350 * sq905.h: fix sq_decompress() to handle Magpix B350 2005-04-12 Theodore Kilgore * postprocess.c: small oops repaired in sq_decompress() 2005-04-03 Theodore Kilgore * library.c: improvements for compressed mode * postprocess.c: improvements for compressed mode * sq905.h: improvements for compressed mode 2005-01-17 Theodore Kilgore * library.c: added Shark SDC-513 and SDC-519 * postprocess.c: Code cleanup 2004-12-15 Theodore Kilgore * library.c: added Concord Eye-Q Duo, Sakar Kidz Cam (get_file_func): Conditionnalize pre-processing 2004-11-11 Theodore Kilgore * postprocess.c: bugfix for release. 2004-11-11 Theodore Kilgore * library.c: added ViviCam 5B and SY-2107C cameras. 2004-10-28 Hubert Figuiere * sq905.c (sq_read_picture_data): Fix build for gcc 2.95 (bug #1055868) 2004-08-25 Theodore Kilgore * README.913C: Description of Argus DC-1730 0x2770:0x913c camera. * library.c: Argus DC-1730 0x2770:0x913c added. * sq905.c: data type corrected in sq_access_reg ( ) * sq905.h: In sq_access_reg ( ) the "index" is an int. Oops. 2004-06-29 Theodore Kilgore * sq905.c: Major rewrite. Credit to Cedric Cellier for several improvements, in particular sq_rewind ( ), which permits random access to photos on camera. * sq905.h: needed changes declared. * postprocess.c: Anything special done to a photo after download goes here, especially things which are experimental or still not complete. * library.c: Big changes. Video clips and capture-preview supported; delete-all-photos supported for those SQ cameras which will do it; thumbnails supported for GUI compatibility. * README: Updated to describe new capabilities of camlib. * TODO: list of things which still need work. * Makefile.am: postprocess.c added as source file. 2003-11-21 Theodore Kilgore * sq905.h: SQ_MODEL_MAGPIX added; ID number found by T. K. 2003-11-21 Theodore Kilgore * sq905.c: The following changes are introduced: -- In sq_init the initialization sequence is not repeated; experience has shown this to be unnecessary. -- In accordance with general policy, individual credits for reporting model ID numbers are placed here. Credit to Fabien Devaux for the ID of SQ_MODEL_PRECISION. 2003-10-30 Lutz Mueller * sq905.c: Give credit to individual people (here Paulo Tribolet Abreu who reported a special model) in the ChangeLog, not all over the code to keep the code readable. 2003-10-29 Lutz Mueller * library.c: Reduce memory requirements by first freeing one variable before allocating memory for another. 2003-10-29 Lutz Mueller * library.c: Substitute memcpy by for (...) { (...) } on request of Theodore Kilgore . 2003-10-29 Lutz Mueller * sq905.[c.h]: Patch by Thodore Kilgore : Introduce new SQ_MODEL_PRECISION. 2003-10-29 Lutz Mueller * library.c: Patch by Theodore Kilgore : Fix postprocessing of files where comp_ration != 2. 2003-10-10 Lutz Mueller * library.c: Patch by Theodore Kilgore : Allocate enough bytes for image data _and_ header. 2003-10-07 Lutz Mueller * sq905.c: Patch by Theodore Kilgore , without ChangeLog entry, unfortunately not against latest cvs, and not in 'cvs diff -u3 -p' format. Hence no guaranty that I figured out the right lines and the right changes. No idea if the code now works better than before. But it compiles :-) 2003-08-01 Lutz Mueller * sq905.c: Additional information by Paulo Tribolet Abreu . 2003-08-01 Lutz Mueller * sq905.c: Additional information by Paulo Tribolet Abreu . 2003-07-30 Lutz Mueller * library.c: Move some variables around to make non-gcc-compilers happy. 2003-07-15 Lutz Mueller * sq905.[c]: Some indentation fixes. (sq_read_data): Theodore Kilgore tells me that the gp_port_write and gp_port_set_timeout is not needed here. 2003-07-12 Lutz Mueller * library.c * sq905.[c,h]: New code by Theodore Kilgore 2003-07-07 Lutz Mueller * library.c * sq905.c: Got some more feedback from Theodore Kilgore 2003-06-30 Lutz Mueller * library.c: Implement downloading of pictures. 2003-06-30 Lutz Mueller * sq905.[c,h]: Updates by the author. 2003-06-26 Lutz Mueller * *.[c,h]: First check-in. Not functional yet. libgphoto2-2.5.9/camlibs/sq905/README.913C0000644000175000001440000001027412557123324014316 00000000000000/* This is a supplemental README file for libgphoto2/camlibs/sq905, dealing * specifically with support for sq913 cameras. This file is an * integral part of the libgphoto2/camlibs/sq905 library source and is * distributed with that source under the LGPL license. a copy of which * license may be seen in any of the source files in libgphoto2/camlibs/sq905, * or in the head directory of libgphoto2. */ INTRODUCTION The Argus DC-1730 apparently uses the sq913 chip and has Vendor:Product number 0x2770:0x913c. It provides 640x480 or 320x240 resolution, optional compression setting, and capture mode. The camera also has an LED thumbnail display and a flash, which the user can turn off to save power. Even with these new features, the camera still retails for under $50 (US). This new camera (presumably along with any other 0x2770:0x913c cameras which may exist) uses the same command set as the existing sq905 cameras, and thus it is supported simply by adding its ID to the models list in sq905/library.c. It also has the new chip or model ID 09 13 06 67, but it seems to be supported well enough under the options used for SQ_MODEL_DEFAULT. DIFFERENCES BETWEEN SQ913 AND SQ905 CAMERAS As already mentioned, these new cameras have an LED display on the rear and also have a flash. Two other differences are not so readily visible. First, the sq905 cameras have a "video clip" feature. If this feature is set, the camera will shoot frames repeatedly, until its memory is full. The Argus DC-1730 does not have this feature; on similar button setting it will shoot three frames only, and then stop. This functional difference also is reflected in a slightly different format for the configuration data presented by the camera. The most major consequence of this change in the configuration data is that sq_postprocess ( ) must be completely rewritten before it can be used with these cameras; the meaning of entries 7 through 15 in each line of config data is now wrong. For this reason, sq_postprocess ( ) is turned off in CVS for now. Repeating myself: If you are running an existing version of camlibs/sq905 and want to just add the new ID number 0x2770:0x913c instead of upgrading, then be sure to comment out the call to sq_postprocess ( ) in the download routine, or rewrite it. Otherwise you will get very funny-looking photos from your Argus DC-1730. HARDWARE COMPATIBILITY ISSUES AND PROBLEMS WITH THE ARGUS DC-1730 The addition of support for 0x2770:0x913c cameras has been delayed somewhat by some rather strange hardware problems which seem to be related to the USB controller chipset on the computer and/or to the length of the cable used to connect the camera. Here, then, are my experiences. The first computer on which I tested my new Argus DC-1730 is an old Dell, which has in it a Pentium III (Coppermine) 1Ghz and a board with Intel USB controller. I had no problems at all. Everything was quite routine, and I was about to commit the code to CVS. Then, I checked my work on machines and got mixed results: On an Athlon 1Ghz on an FIC AZ-11 board, with VIA KT166 chipset, the camera misbehaved. It dropped data blocks while downloading and got jammed, requiring battery removal to clear the jam. However, removal of an extension cable seemed to clear up the problem. An old Micron "barebones" system, again with a VIA chipset, seems completely unusable with this camera. I have also tested the camera with a Dell Inspiron 7500 laptop. No problems, even with the extension cable. Finally, the camera was tested again on the first machine. the Dell Pentium III, using the extension cable which had caused problems previously. Again no problems. Gphoto2-libgphoto2 is installed on all of these computers. No such problems have ever been noticed with any other camera on any of the machines. If you are similarly unlucky with an 0x2770:0x913c camera, it would seem that the only possible cure might be to install another USB controller on an addon card, to use an external USB hub, to take extra precautions about cabling, or in the most extreme circumstances to buy a new computer. You may have no problems. It could be that I just got one bad camera or one bad USB cable to go with it. But in case you do, you are hereby warned. libgphoto2-2.5.9/camlibs/jl2005a/0000755000175000001440000000000012623156267013276 500000000000000libgphoto2-2.5.9/camlibs/jl2005a/jl2005a.h0000644000175000001440000000340612610415524014435 00000000000000/* jl2005a.h * * Copyright (C) 2006 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __jl2005a_H__ #define __jl2005a_H__ #include #include struct _CameraPrivateLibrary { unsigned char *catalog; int nb_entries; int last_fetched_entry; int data_reg_accessed; unsigned long data_to_read; unsigned char *data_cache; int data_used_from_block; }; int jl2005a_init (Camera *camera, GPPort *port, CameraPrivateLibrary *priv); int jl2005a_get_pic_data_size (GPPort *port, int n); int jl2005a_get_pic_width (GPPort *port); int jl2005a_get_pic_height (GPPort *port); int set_usb_in_endpoint (Camera *camera, int inep); int jl2005a_read_picture_data ( Camera *camera, GPPort *port, unsigned char *data, unsigned int size); int jl2005a_reset (Camera *camera, GPPort *port); int jl2005a_read_info_byte(GPPort *port, int n); int jl2005a_shortquery(GPPort *port, int n); int jl2005a_decompress (unsigned char *inp, unsigned char *outp, int width, int height); #endif libgphoto2-2.5.9/camlibs/jl2005a/library.c0000644000175000001440000002156312610415524015023 00000000000000/* library.c * * Copyright (C) 2006 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "jl2005a.h" #include #define GP_MODULE "jl2005a" struct { char *name; CameraDriverStatus status; unsigned short idVendor; unsigned short idProduct; } models[] = { {"American Idol Keychain Camera", GP_DRIVER_STATUS_TESTING, 0x0979, 0x0224}, {"NogaNet TDC-15", GP_DRIVER_STATUS_TESTING, 0x0979, 0x0224}, {"Cobra DC125", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0224}, {NULL,0,0,0} }; int camera_id (CameraText *id) { strcpy (id->text, "JL2005A camera"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].name); a.status = models[i].status; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; if (a.status == GP_DRIVER_STATUS_EXPERIMENTAL) a.operations = GP_OPERATION_NONE; else a.operations = GP_OPERATION_CAPTURE_IMAGE; a.folder_operations = GP_FOLDER_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_PREVIEW + GP_FILE_OPERATION_RAW; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int num_pics; num_pics = camera->pl->nb_entries; GP_DEBUG("camera->pl->nb_entries = %i\n",camera->pl->nb_entries); sprintf (summary->text,_("This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n"), num_pics); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" )); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("jl2005a camera library\n" "Theodore Kilgore \n")); return GP_OK; } /*************** File and Downloading Functions *******************/ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int n; n = camera->pl->nb_entries; gp_list_populate (list, "jl_%03i.ppm", n); return GP_OK; } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { info->file.fields = GP_FILE_INFO_TYPE; strcpy (info->file.type, GP_MIME_PPM); return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int status = GP_OK; int w, h = 0, k; int i,j; int b = 0; int compressed = 0; unsigned char header[5] = "\xff\xff\xff\xff\x55"; unsigned int size; unsigned char *data; unsigned char *image_start; unsigned char *p_data=NULL; unsigned char *ppm=NULL, *ptr=NULL; unsigned char gtable[256]; unsigned char temp; GP_DEBUG ("Downloading pictures!\n"); /* These are cheap cameras. There ain't no EXIF data. So kill this. */ if (GP_FILE_TYPE_EXIF == type) return GP_ERROR_FILE_EXISTS; /* Get the number of the photo on the camera */ k = gp_filesystem_number (camera->fs, "/", filename, context); GP_DEBUG ("Filesystem number is %i\n",k); b = jl2005a_get_pic_data_size(camera->port, k); GP_DEBUG("b = %i = 0x%x bytes\n", b,b); w = jl2005a_get_pic_width(camera->port); GP_DEBUG ("width is %i\n", w); h = jl2005a_get_pic_height(camera->port); GP_DEBUG ("height is %i\n", h); /* Image data to be downloaded contains header and footer bytes */ data = malloc (b+14); if (!data) return GP_ERROR_NO_MEMORY; jl2005a_read_picture_data (camera, camera->port, data, b+14); if (memcmp(header,data,5) != 0) /* Image data is corrupted! Repeat the operation. */ jl2005a_read_picture_data (camera, camera->port, data, b+14); if (GP_FILE_TYPE_RAW == type) { gp_file_set_mime_type(file, GP_MIME_RAW); gp_file_set_data_and_size(file, (char *)data , b+14 ); return GP_OK; } /* Now get ready to put the data into a PPM image file. */ p_data = malloc( w*h ); if (!p_data) { status = GP_ERROR_NO_MEMORY; goto end; } image_start=data+5; if (w == 176) { for (i=1; i < h; i +=4){ for (j=1; j< w; j ++){ temp=image_start[i*w+j]; image_start[i*w+j] = image_start[(i+1)*w+j]; image_start[(i+1)*w+j] = temp; } } if (h == 72) { compressed = 1; h = 144; } } else if (h == 144) { compressed = 1; h = 288; } p_data = malloc( w*h ); if (!p_data) { status = GP_ERROR_NO_MEMORY; goto end; } if (compressed) jl2005a_decompress (image_start, p_data, w, h); else memcpy(p_data, image_start, w*h); ppm = malloc (w * h * 3 + 256); /* room for data and header */ if (!ppm) { free(p_data); status = GP_ERROR_NO_MEMORY; goto end; } sprintf ((char *)ppm, "P6\n" "# CREATOR: gphoto2, JL2005A library\n" "%d %d\n" "255\n", w, h); size = strlen ((char *)ppm); ptr = ppm + size; size = size + (w * h * 3); GP_DEBUG ("size = %i\n", size); gp_ahd_decode (p_data, w , h, ptr, BAYER_TILE_BGGR); free(p_data); gp_gamma_fill_table (gtable, .65); gp_gamma_correct_single (gtable, ptr, w * h); gp_file_set_mime_type (file, GP_MIME_PPM); gp_file_set_data_and_size (file, (char *)ppm, size); end: free(data); return status; } /*************** Exit and Initialization Functions ******************/ static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("jl2005a camera_exit"); jl2005a_reset(camera, camera->port); gp_port_close(camera->port); if (camera->pl) { free (camera->pl); camera->pl = NULL; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func }; int camera_init(Camera *camera, GPContext *context) { GPPortSettings settings; int ret = 0; /* First, set up all the function pointers */ camera->functions->manual = camera_manual; camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->exit = camera_exit; GP_DEBUG ("Initializing the camera\n"); ret = gp_port_get_settings(camera->port,&settings); if (ret < 0) return ret; switch (camera->port->type) { case GP_PORT_SERIAL: return ( GP_ERROR ); case GP_PORT_USB: settings.usb.config = 1; settings.usb.altsetting = 0; settings.usb.interface = 0; /* inep 0x84 used for commands, 0x81 for data. */ settings.usb.inep = 0x84; settings.usb.outep = 0x03; break; default: return ( GP_ERROR ); } ret = gp_port_set_settings(camera->port,settings); if (ret < 0) return ret; GP_DEBUG("interface = %i\n", settings.usb.interface); GP_DEBUG("inep = %x\n", settings.usb.inep); GP_DEBUG("outep = %x\n", settings.usb.outep); /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); /* Connect to the camera */ camera->pl->data_reg_accessed = 0; camera->pl->data_to_read = 0; camera->pl->data_used_from_block = 0; camera->pl->data_cache = NULL; jl2005a_init (camera,camera->port, camera->pl); return GP_OK; } libgphoto2-2.5.9/camlibs/jl2005a/README.jl2005a0000644000175000001440000001444012561423351015145 00000000000000JEILIN JL2005A STILLCAM DRIVER Copyright Theodore Kilgore September 16, 2007. (Everything in libgphoto2/camlibs/jl2005a is LGPL-licensed, including this README. See any of the source files for a more complete statement of the license.) INTRODUCTION This driver is intended to support cameras containing the JL2005A chip from Jeilin Technologies. The interface is proprietary, and these cameras are supported commercially only in Windows. Jeilin Technologies also manufactures chips which go into mass storage cameras. Those cameras can be accessed directly using mass storage support. The company also manufactures some other chips with proprietary interface, but with very different protocols. Some of the cameras may be supported in the future in libgphoto2. The USB Vendor and Product number for the JL2005A cameras is 0x0979:0x0224. At least, I do not know at this time about any other USB id for these cameras, and I also am not aware of any other JL2005A cameras which have different functionality from what is done here. RECOMMENDATIONS FOR REPORTING CAMERAS Right now, I only own one of these for testing. It is the so-called American Idol keychain camera, which I found at a local KB Toys. I am aware that several others exist. If people will be so kind as to send me the needed details I would be happy to add them explicitly to the list in library.c. Please understand that I need to have whatever information you can find, so please do not throw away the manual, the driver CD, or the plastic package the camera was sold in until we get this information! It happens quite often that the camera itself has no name at all, or just some embossed letters on the plastic which say "DIGITAL CAMERA" -- hardly a unique identifier. Quite often, the only way to identify uniquely an entry-level consumer digital camera is by something appearing in fine print on the packing materials, which, alas, the purchaser can easily overlook and may have simply thrown in the trash. The computer, of course, uses the Vendor:Product ID, but that is of course never printed on the outside of packages. The point is, others should be able to find the camera in the store by the name and description which is given to it in libgphoto2, and moreover it is quite inappropriate if we add support for some dozens of distinct devices, each of which has the name string calling it "DIGITAL CAMERA". WHAT DOES THIS CAMERA LIBRARY CURRENTLY DO? There is support for all of the basic gphoto2 still camera operations which my JL2005A camera is known to support through hardware. This includes support for downloading photos in each of the two available resolution sizes 352*288 and 176*144. The data in neither case is compressed, though the raw data for 176*144 size is obfuscated and thus not in a completely standard format. Both of these formats are supported in the driver. Support for the option gphoto2 -p (for downloading selected photos or frames) seems to work "out of the box" unlike what happens with some other low-priced cameras. Thus, it ought not to be a problem to use one of these cameras with any of the GUI frontends which are based upon libgphoto2. The camera will not shoot snapshots, neither for immediate download (gphoto2 --capture-preview option nor to be stored on the camera for later downloading (--capture-image option). These operations can be done but are implemented through the pccam or webcam interface, which uses isochronous data transmission and is therefore outside the boundaries of the stillcam operations which libgphoto2 supports. The camera also does not support the deletion of individual photos, even with a button press, but only the deletion of all. It does seem that to put the camera into pccam mode will delete all photos, but it is not clear at which stage in that process the photos get deleted. Pccam mode involves a different altsetting, which would involve a reset, and then the isochronous inep must be accessed. As my impression by watching the camera being put into pccam mode while photos are already in it is that said photos do not get deleted until the camera actually starts sending data, I have made no attempt at this time to try to use the pccam function to delete all photos. The camera will shoot clips in "continuous" mode, meaning it will shoot frames until the camera is full. The resolution setting for these frames is whatever was the resolution setting before one started to shoot frames. Moreover, this function will not delete any previous photos already in the camera. The resulting frames are downloaded and treated as ordinary photos. If you want to use this function, then, and get an animation, that can easily be done using the "animate" function from the ImageMagick toolkit, or with a similar tool from a similar image processing suite. ANOTHER JL2005A CAMERA, WHICH IN ADDITION TO THE ABOVE, USES COMPRESSION has been discovered by Jeronimo Barraco . That camera is the TDC-15, sold by NogaNet in Argentina. The compressed mode is optional on this camera; one is not forced to use it. On closer investigation, the compression is not actual compression at all, but data truncation. What has been done is that every four lines of data have been "compressed" to two lines. by the simple expedient of suppressing two of them. The same photo still comes out if nothing at all is done to it, but the vertical dimension is divided by two. As an inevitable result, the "decompression" is necessarily some kind of interpolation of the missing lines of data. I have used simple linear interpolation. If someone comes up with a better way which gives nicer-looking images from these cameras, then please let me know. Actually, from the samples which I have on hand the results do not look too bad most of the time. However, the user is advised that occasional raggedness is inevitable from data which has been thus truncated. Another camera which seems to be functionally similar to the TDC-15 is the Cobra DC-125, reported by Tim Johnson . WARRANTY? Absolutely none. Remember, I did not sell you this software. I have written this driver for my own edification and in the sincere hope that it might help you to use of your camera. Please see also the warranty clauses in the LGPL license. Updated 12/02/2007, 02/21/2009libgphoto2-2.5.9/camlibs/jl2005a/Makefile-files0000644000175000001440000000055212610415510015741 00000000000000EXTRA_DIST += jl2005a/README.jl2005a jl2005a/ChangeLog camlibdoc_DATA += jl2005a/README.jl2005a jl2005a/ChangeLog EXTRA_LTLIBRARIES += jl2005a.la jl2005a_la_SOURCES = jl2005a/library.c\ jl2005a/jl2005a.c\ jl2005a/jl2005a.h jl2005a_la_LDFLAGS = $(camlib_ldflags) jl2005a_la_DEPENDENCIES = $(camlib_dependencies) jl2005a_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/jl2005a/ChangeLog0000644000175000001440000000213612561423351014762 000000000000002009-12-24 Theodore Kilgore library.c: Some cameras can hold more than 100 photos. Numbering field in filenames increased to 3 digits. Some code cleanup. gp_bayer_decode() replaced by gp_ahd_decode() 2009-02-21 Theodore Kilgore library,c: Cobra DC-125 added, reported by Tim Johnson . 2008-01-03 Theodore Kilgore jl2005a.c: Improvements in jl2005a_read_picture_data(). 2007-12-04 Theodore Kilgore README.jl2005a: Updated jl2005a.c: A decompression function has been added, to accommodate the needs of the Noganet TDC-15, based upon raw files sent by J. Barraco. library.c: Decompression function hooked up. 2007-10-15 Theodore Kilgore library.c: NogaNet TDC-15 added, reported by Jeronimo Barraco README.jl2005a: Updated jl2005a.c: Size of 176x144 compressed photos was incorrectly reported. Patch applied. Will need testing by J. Barraco 2007-09-16 Theodore Kilgore * *.[c,h]: First check-in. libgphoto2-2.5.9/camlibs/jl2005a/jl2005a.c0000644000175000001440000001510312610415536014430 00000000000000/* jl2005a.c * * Copyright (C) 2006 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include #include "gphoto2-endian.h" #include "jl2005a.h" #define GP_MODULE "jl2005a" int jl2005a_init (Camera *camera, GPPort *port, CameraPrivateLibrary *priv) { GP_DEBUG("Running jl2005a_init\n"); jl2005a_shortquery(port, 0x0d); /* Supposed to get 0x08 */ jl2005a_shortquery(port, 0x1c); /* Supposed to get 0x01 */ jl2005a_shortquery(port, 0x20); /* Supposed to get 0x04 */ gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa1\x02", 2); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa2\x02", 2); jl2005a_shortquery(port, 0x1d); /* 1 if camera is full, else 0 */ gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa1\x00", 2); priv->nb_entries = jl2005a_shortquery(port, 0x0a)&0xff; /* Number of pix returned here */ GP_DEBUG("%d entries in the camera\n", priv->nb_entries); return jl2005a_shortquery(port, 0x1d); /* Should get 0, same as GP_OK */ } int jl2005a_get_pic_data_size (GPPort *port, int n) { unsigned int size = 0; char command[2]; char response=0; command[0] = 0xa1; command[1] = (char)(n&0xff); GP_DEBUG("Getting photo data size\n"); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, command, 2); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa2\x0b", 2); jl2005a_shortquery(port, 0x1d); size = response&0xff; GP_DEBUG("size = 0x%x\n", size); response = (jl2005a_read_info_byte(port, 1) )&0xff; size = ((response&0xff) << 8)| size; GP_DEBUG("size = 0x%x\n", size); response = (jl2005a_read_info_byte(port, 2 ))&0xff; size = ((response&0xff)<<16)|size; if (size == 0x3100) size += 0x80; GP_DEBUG("size = 0x%x\n", size); return (size); } int jl2005a_get_pic_width (GPPort *port) { int width; char response; response = (jl2005a_read_info_byte(port, 3))&0xff; width = (response&0xff); response = (jl2005a_read_info_byte(port, 4) )&0xff; width = ((response&0xff) << 8)|width; return (width); } int jl2005a_get_pic_height (GPPort *port) { int height; char response; response = (jl2005a_read_info_byte(port, 5) )&0xff; height = (response&0xff); response = (jl2005a_read_info_byte(port, 6) )&0xff; height = ((response&0xff)<< 8)|height; return (height); } int set_usb_in_endpoint (Camera *camera, int inep) { GPPortSettings settings; gp_port_get_settings ( camera ->port, &settings); settings.usb.inep = inep; GP_DEBUG("inep reset to %02X\n", inep); return gp_port_set_settings ( camera ->port, settings); } int jl2005a_read_picture_data (Camera *camera, GPPort *port, unsigned char *data, unsigned int size) { unsigned char *to_read; int maxdl = 0xfa00; to_read=data; jl2005a_read_info_byte(port, 7); /* Always 0x80. Purpose unknown */ jl2005a_read_info_byte(port, 0x0a); /* Previous byte is 0x11 if what is to be downloaded is the first * frame in a clip, is 0x01 if it is any clip frame after the initial * one, and is zero if what is to be downloaded is a standalone photo. * If clips will in the future be processed as AVI files, then there is * not any information to know how many frames are present, prior to * downloading them. There is only a starting point and an indicator * for each frame. */ gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa1\x04", 2); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa2\x08", 2); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa1\x05", 2); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa2\x08", 2); /* Switch the inep over to 0x81. */ set_usb_in_endpoint (camera, 0x81); while (size > maxdl) { gp_port_read(port, (char *)to_read, maxdl); to_read += maxdl; size -= maxdl; } gp_port_read(port, (char *)to_read, size); /* Switch the inep back to 0x84. */ set_usb_in_endpoint (camera, 0x84); return GP_OK; } int jl2005a_reset (Camera *camera, GPPort *port) { int i; gp_port_write (port,"\xab\x00" , 2); gp_port_write (port, "\xa1\x00", 2); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa2\x02", 2); for (i=0; i < 4; i++) jl2005a_shortquery(port, 0x1d); /* Supposed to get something like 0x01, 0x01, 0x01, 0x00 */ return GP_OK; } int jl2005a_read_info_byte(GPPort *port, int n) { char response; char command[2]; command[0] = 0xa1; command[1] = (char)(n&0xff); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, command , 2); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa2\x0c", 2); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa3\xa1", 2); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xab\x00", 2); gp_port_read (port,&response, 1); return response&0xff; } int jl2005a_shortquery(GPPort *port, int n) { char response; char command[2]; command[0] = 0xa2; command[1] = (char)(n&0xff); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, command, 2); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xa3\xa1", 2); gp_port_write (port, "\xab\x00", 2); gp_port_write (port, "\xab\x00", 2); gp_port_read (port, &response, 1); return response&0xff; } int jl2005a_decompress (unsigned char *inp, unsigned char *outp, int width, int height) { int i,j; for (i=0; i < height/2; i+=2) { memcpy(outp+2*i*width,inp+i*width, 2*width); } memcpy(outp+(height-2)*width,outp+(height-4)*width, 2*width); for (i=0; i < height/4-1; i++) { for (j=0; j < width; j++) { outp[(4*i+2)*width+j]=(inp[(2*i)*width+j]+ inp[(2*i+2)*width+j])/2; outp[(4*i+3)*width+j]=(outp[(4*i+1)*width+j]+ outp[(4*i+5)*width+j])/2; } } if (width == 176) memmove(outp+6*width, outp, (height-6)*width); return 0; } libgphoto2-2.5.9/camlibs/jd11/0000755000175000001440000000000012623156267012760 500000000000000libgphoto2-2.5.9/camlibs/jd11/jd11.c0000644000175000001440000002155212610415536013601 00000000000000/* * Jenoptik JD11 Camera Driver * Copyright 1999-2001 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "serial.h" int camera_id (CameraText *id) { strcpy(id->text, "JD11"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a,0,sizeof(a)); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 115200; a.speed[1] = 0; a.operations = GP_OPERATION_CONFIG; a.file_operations = GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; strcpy(a.model, "Jenoptik:JD11"); gp_abilities_list_append(list, a); /* http://www.digitalkamera.de/Kameras/PrakticaQD500-de.htm (german) */ strcpy(a.model, "Praktica:QD500"); gp_abilities_list_append(list, a); /* Reported to be just a rebranded version by Russ Burdick * */ /* from Gallantcom, http://www.gallantcom.com/prodfaq-probe99.htm */ strcpy(a.model, "Quark:Probe 99"); gp_abilities_list_append(list, a); /* 'Argus DC-100' looks the same, see: * http://www.aaadigitalcameras.com/argus_digital_vga_compact_camera.html * but not reported yet. */ strcpy(a.model, "Argus:DC-100"); gp_abilities_list_append(list, a); /* 'Argus DC-2000' is the same (or uses the same software), check * http://www.arguscamera.com/tech_supp/camoper.htm */ strcpy(a.model, "Argus:DC-2000"); gp_abilities_list_append(list, a); /* http://www.digitaldreamco.com/shop/digital2000.html */ strcpy(a.model, "Digitaldream:DIGITAL 2000"); gp_abilities_list_append(list, a); /* The I/O Magic MagicImage 420 has a black cover, but otherwise * appears to be the same. (Not 100% sure.) * http://www.iomagic.com/support/digitalcameras/magicimage420/magicimage420main.htm */ strcpy(a.model, "IOMagic:MagicImage 420"); gp_abilities_list_append(list, a); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = (Camera*)data; if (strcmp(folder,"/")) return GP_ERROR_BAD_PARAMETERS; return jd11_index_reader(camera->port, fs, context); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int image_no, result; image_no = gp_filesystem_number(fs, folder, filename, context); if(image_no < 0) return image_no; gp_file_set_mime_type (file, GP_MIME_PNM); switch (type) { case GP_FILE_TYPE_RAW: result = jd11_get_image_full(camera,file,image_no,1,context); break; case GP_FILE_TYPE_NORMAL: result = jd11_get_image_full(camera,file,image_no,0,context); break; case GP_FILE_TYPE_PREVIEW: /* We should never get here, we store the thumbs in the fs... */ return (GP_ERROR_NOT_SUPPORTED); default: return (GP_ERROR_NOT_SUPPORTED); } if (result < 0) return result; return (GP_OK); } static int delete_all_func (CameraFilesystem *fs, const char* folder, void *data, GPContext *context) { Camera *camera = data; if (strcmp (folder, "/")) return (GP_ERROR_DIRECTORY_NOT_FOUND); return jd11_erase_all(camera->port); } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" )); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA.")); return (GP_OK); } static int camera_config_get (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *widget,*section; float value_float,red,green,blue; int ret; gp_widget_new (GP_WIDGET_WINDOW, _("JD11 Configuration"), window); gp_widget_set_name (*window, "config"); gp_widget_new (GP_WIDGET_SECTION, _("Other Settings"), §ion); gp_widget_set_name (section, "othersettings"); gp_widget_append (*window, section); /* Bulb Exposure Time */ gp_widget_new (GP_WIDGET_RANGE, _("Bulb Exposure Time"), &widget); gp_widget_set_name (widget, "exposuretime"); gp_widget_append (section, widget); gp_widget_set_range (widget, 1, 9, 1); /* this is a write only capability */ value_float = 1; gp_widget_set_value (widget, &value_float); gp_widget_changed(widget); gp_widget_new (GP_WIDGET_SECTION, _("Color Settings"), §ion); gp_widget_append (*window, section); gp_widget_set_name (section, "colorsettings"); ret = jd11_get_rgb(camera->port,&red,&green,&blue); if (ret < GP_OK) return ret; gp_widget_new (GP_WIDGET_RANGE, _("Red"), &widget); gp_widget_append (section, widget); gp_widget_set_name (widget, "red"); gp_widget_set_range (widget, 50, 150, 1); red*=100.0; gp_widget_set_value (widget, &red); gp_widget_changed(widget); gp_widget_new (GP_WIDGET_RANGE, _("Green"), &widget); gp_widget_set_name (widget, "green"); gp_widget_append (section, widget); gp_widget_set_range (widget, 50, 150, 1); green*=100.0; gp_widget_set_value (widget, &green); gp_widget_changed(widget); gp_widget_new (GP_WIDGET_RANGE, _("Blue"), &widget); gp_widget_set_name (widget, "blue"); gp_widget_append (section, widget); gp_widget_set_range (widget, 50, 150, 1); blue*=100.0; gp_widget_set_value (widget, &blue); gp_widget_changed(widget); return (GP_OK); } static int camera_config_set (Camera *camera, CameraWidget *window, GPContext *context) { float f,red,green,blue; CameraWidget *widget,*section; int ret,changed = 0; /* * Check if the widgets' values have changed. If yes, tell the camera. */ gp_widget_get_child_by_label (window, _("Other Settings"), §ion); gp_widget_get_child_by_label (section,_("Bulb Exposure Time"), &widget); if (gp_widget_changed (widget)) { gp_widget_get_value (widget, &f); ret = jd11_set_bulb_exposure(camera->port,(int)f); if (ret < GP_OK) return ret; } gp_widget_get_child_by_label (window, _("Color Settings"), §ion); gp_widget_get_child_by_label (section,_("Red"), &widget); changed|=gp_widget_changed (widget); gp_widget_get_value (widget, &red); red/=100.0; gp_widget_get_child_by_label (section,_("Green"), &widget); changed|=gp_widget_changed (widget); gp_widget_get_value (widget, &green); green/=100.0; gp_widget_get_child_by_label (section,_("Blue"), &widget); changed|=gp_widget_changed (widget); gp_widget_get_value (widget, &blue); blue/=100.0; ret = GP_OK; if (changed) ret =jd11_set_rgb(camera->port,red,green,blue); return ret; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .delete_all_func = delete_all_func, }; int camera_init (Camera *camera, GPContext *context) { gp_port_settings settings; /* First, set up all the function pointers */ camera->functions->manual = camera_manual; camera->functions->about = camera_about; camera->functions->get_config = camera_config_get; camera->functions->set_config = camera_config_set; /* Configure port */ gp_port_set_timeout(camera->port, 1000); gp_port_get_settings(camera->port, &settings); settings.serial.speed = 115200; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits= 1; gp_port_set_settings(camera->port, settings); /* Set up the filesystem */ gp_filesystem_set_funcs(camera->fs, &fsfuncs, camera); /* test camera */ return jd11_ping(camera->port); } libgphoto2-2.5.9/camlibs/jd11/decomp.c0000644000175000001440000001066312610415536014312 00000000000000/* * Jenoptik JD11 Camera Driver * Copyright 1999-2001 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include "decomp.h" struct chain { int left,val,right; }; struct compstate { unsigned char curmask; unsigned char bytebuf; unsigned char *byteptr; struct chain cl[200]; int stackstart; }; /* FLOAT_QUERY: 0.860000 1.030000 1.150000. */ /********************************************************/ /* The bit stage */ /********************************************************/ static inline int jd11_getbit(struct compstate *cs) { int ret; if (cs->curmask == 0x80) cs->bytebuf = *cs->byteptr++; ret = cs->curmask & cs->bytebuf; cs->curmask >>=1; if (!cs->curmask) cs->curmask = 0x80; return !!ret; } /********************************************************/ /* The huffman compressor stage */ /********************************************************/ static int decomp_1byte(struct compstate *cs) { int xcs = cs->stackstart; int xbit; while ((cs->cl[xcs].left>=0) && (cs->cl[xcs].right>=0)) { xbit = jd11_getbit(cs); if (xbit) xcs = cs->cl[xcs].left; else xcs = cs->cl[xcs].right; } return cs->cl[xcs].val; } static void build_huffmann_tree(struct compstate *cs) { int xstack[200]; int i,curcl=0,curstack=0; const int df[] = { -180,180,1000,-90,1000,90,1000,-45,1000,45,1000,-20,1000, 20,1000,-11,1000,11,1000,-6,1000,2,1000,6,-2,1000,1000 }; for (i=0;icl[curcl].left = -1; cs->cl[curcl].right = -1; cs->cl[curcl].val = df[i]; } else { cs->cl[curcl].right = xstack[--curstack]; cs->cl[curcl].left = xstack[--curstack]; } xstack[curstack++] = curcl++; } cs->stackstart = xstack[0]; } #define F1 0.5 #define F2 0.0 #define F3 0.5 #define F4 0.0 void picture_decomp_v1(unsigned char *compressed,unsigned char *uncompressed,int width,int height) { struct compstate cs; unsigned char xbyte; int i=0,curbyte=0,diff,lastval; int *line,*lastline; cs.curmask = 0x80; cs.bytebuf = 0; cs.byteptr = compressed; build_huffmann_tree(&cs); line = (int*)malloc(sizeof(int)*width); lastline= (int*)malloc(sizeof(int)*width); curbyte=0; memset(line,0,sizeof(int)*width); memset(lastline,0,sizeof(int)*width); for (i=0;i255) xbyte = 255; if (curbyte<0) xbyte = 0; *uncompressed++=xbyte; line[i] = curbyte; } height--; while (height--) { lastval = line[0]; /* just before the copy */ memcpy(lastline,line,width*sizeof(int)); memset(line,0,width*sizeof(int)); for (i=0;i255) xbyte = 255; if (line[i]<0) xbyte = 0; *uncompressed++=xbyte; } } free (lastline); free (line); } /* Just blow up the picture from 6 bit uncompressed to 8 bit uncompressed */ void picture_decomp_v2(unsigned char *compressed,unsigned char *uncompressed,int width,int height) { struct compstate cs; int i,j; unsigned char xbyte; cs.curmask = 0x80; cs.bytebuf = 0; cs.byteptr = compressed; for (i=width*height;i--;) { unsigned char xmask = 0x80; xbyte = 0; for (j=6;j--;) { if (jd11_getbit(&cs)) xbyte|=xmask; xmask>>=1; } *uncompressed++=xbyte; } } libgphoto2-2.5.9/camlibs/jd11/decomp.h0000644000175000001440000000213512610415536014312 00000000000000/* * Jenopt JD11 Camera Driver * Copyright 1999-2001 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef _JD11_DECOMP_H #define _JD11_DECOMP_H extern void picture_decomp_v1(unsigned char *compressed,unsigned char *uncompressed,int width,int height); extern void picture_decomp_v2(unsigned char *compressed,unsigned char *uncompressed,int width,int height); #endif libgphoto2-2.5.9/camlibs/jd11/Makefile-files0000644000175000001440000000043612561423351015433 00000000000000EXTRA_DIST += jd11/jd11.html jd11/ChangeLog EXTRA_LTLIBRARIES += jd11.la jd11_la_SOURCES = \ jd11/jd11.c \ jd11/serial.h jd11/serial.c \ jd11/decomp.h jd11/decomp.c jd11_la_LDFLAGS = $(camlib_ldflags) jd11_la_DEPENDENCIES = $(camlib_dependencies) jd11_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/jd11/jd11.html0000644000175000001440000002360012557123324014320 00000000000000 Reverse Engineering the JD11 (JenCam 11)

Reverse Engineering the JD11 - A drama in n chapters


What is the JD11?

The JD11 is a cheap digital camera produced by JenOptik (apparenly a subsidary of Zeiss Jena). It was at the time of writing this available for around 250 DM.

There is software available, a windows program called FotoBee which is a huge heap of MFC dung. It can be made to run with a small hack under the free Windows Emulator WINE.

WINE was crucial in reverse engineering the camera at all stages of the project.

Chapter 1:The lowlevel serial protocol

The JD11 comes with a serial cable with a DB9 connector on the computerside and a small klinkenstecker at the camera end. So just 2 lines (RX, TX) and GND.

There is no documenation on the serial protocol in the inlaying documentation.

The FotoBee.exe program uses the Windows serial communications interface, which is fortunately implemented in WINE. By snooping the setup calls, the serial parameters are:

        115200 Baud, no parity, 1 stopbit, 8 bit data, no flow control
        (neither crtscts, nor XON/XOFF)
It also setting some large timeouts, since the camera sometimes needs like 2 seconds to think about something.

That was rather trivial.

Chapter 2: The serial data transfer protocol

The next step was to find out how the FotoBee software talks to the camera.

 Luckily the program still uses the standard Win32 serial communication functions for that, so I added some code to the ReadFile and WriteFile functions, which dumps the read/written buffer if it is writing to a serial device.

In general, the program sends a command down the serial line (with optional arguments) and receives data back. Every command starts with a 0xFF character.
CommandArgumentsReturnsDescription
0xff 0x08 None 0xff 0xf1 Ping!s the camera.
0xff 0xa7 None A packet with between 10 and 20 bytes is returned. 3 float factors are returned, they are calculated:
f1=r[1]+r[2]*0.1+r[3]*0.01;
f2=r[4]+r[5]*0.1+r[6]*0.01;
f3=r[7]+r[8]*0.1+r[9]*0.01;

Their use is still unknown to me.
Twain calls it 'LoadGRB'
0xff 0xa4 None 0xff 0x01 Select Index Picture to transfer, is followed by packetreading
0xff 0xa1 0xff picturenr 0xff 0x01 Selects Image picturenr to transfer. 3 Bytestreams follow (packetreading has to be called 3 times)
0xff 0xa8 10 bytes of data ... Set floats 0xff 0x01 Sets the 3 floats. Sends 10 bytes to the camera.
The bytestream looks: 0xFF A B C D E F G H I
The floats are: A.BC D.EF G.HI
A...I are binary values between 0 and 9.
Twain calls it 'SaveGRB'.
0xff 0xa6 None No return expected. Deletes all images.
0xff 0xf0 None Returns an ASCII hexnumber (starting with two 0x66 ('f')) Returns the size (in bytes) of the image to transfer next. This command is issued after "select index" or "select image" and is followed by (multiple) packet reads.
0xff 0xf1 None Returns 201 or less bytes The packetreader. It is called in a loop after querying the imagesize. If 201 bytes are read, the 201th byte is the checksum (sum of 0-199)&0xff, otherwise there is no checksum.
Returns the 200 bytes read.
0xff 0xf3 None Returns 201 or less bytes The packet resend command. Works exactly like the 0xff 0xf1 packetread command, but the last packet is retransmitted. This is useful for corrupted transmissions.
0xff 0x72 None 0xff 0x71 The TestDRAM command according to the Twain drivers. Gets a bool reply.
0xff 0x73 None 0xff 0x70/0x71 The TestFLASH command according to the Twain drivers. Gets a bool reply.
0xff 0x75 None 0xff70 or 0xff71 or something else. The TestADC command according to the Twain drivers. Gets a bool reply.
0xff 0x78 None. Some data. Appears to take a snapshot and then it should read N packets of data. Strange. There is some text generated and printed into a dialog. I only get back 0xff.
TWAIN calls it DSC_TestAE.
0xff 0x79 None 0xff 0xXX Function unknown, seems to open/close the shutter in rapid succession.
TWAIN calls it DSC_AjustAGC.
Reads reply.
0xff 0x7a None. Some data. Unclear. GUI enables wait cursor before call and disabled it after.
0xff 0x7b 0xff value. 0xff 0xf1 Unclear.
0xff 0xa9 0xff value. 0xff 0xf1 Set Bulb Mode. Apparently values between 1 and 9.

Following commands can be used on toplevel:

  • PING
  • FLOAT FACTORS
  • SELECT INDEX
  • SELECT IMAGE
  • ...
For reading the INDEX picture following sequence appears:
  • SELECT INDEX
  • IMAGE SIZE
  • READ PACKET until packets exhausted.
For reading the IMAGE picture following sequence appears:
  • SELECT IMAGE n
  • Do 3 times:
    • IMAGE SIZE
    • READ PACKET until packets exhausted.
Thats all we needed to know about the serial commands.

Chapter 3: The image compression, stage 1

Judging from other cameras it is easy to suspect the camera uses the JPEG format. It does not unfortunately.

Chapter 3.1: The format of the index picture

Casting a closer look at the raw data of the index picture shows a a stream of 8 bit values. Some experimentation later it turns out to a stream of 64x48 grayscale pictures, upside down. Using:
	rawtopgm <index 64 (sizeof_index/64) |pnmflip -tb > index.ppm
we can convert it into a .PPM and convert it further using standard UNIX tools.

The size of the index picture also tells us the number of pictures that are currently stored in the camera. Just divide the size of the indeximage by 64*48.

Chapter 3.2: The low quality compressed image format

The camera has two modes to store pictures, either in low or high quality. This is marked by the letters "L" and "H" on the cameras LCD. Default is the low quality format.

It is still unclear to me how to detect high/low quality formats, except with the size of the returned image.

At first look the data returned from the camera looks like junknoise. So I had to peek into the diassembly, which shows a slightly inefficient huffman decompressor, with following bitpatterns:
BitsValue
00 -2
01 6
10 2
110 6
1110 11
1111 0 -11
1111 10 20
1111 110 -20
1111 1110 45
1111 1111 0 -45
1111 1111 10 90
1111 1111 110 -90
1111 1111 1110 180
1111 1111 1111 0 -180
The result of this decompression run is 320*480 bytes for the first image, and 320*240 for the second and third image. But these are not the pixel values, these are differences!
So I had another look. Pixels are 8bit unsigned values and computed like this:

  • In the first row of the image: pixel[i] = lastpixel+decompressed_diff;
    The first pixel is based on 0.
  • In all other rows (starting lastvalue is pixel[0] of the previous line):
    • newpixelvalue = lastvalue + decompressed_diff;
    • lastvalue = newpixelvalue*0.5 + pixel_lastline[i+1]*0.5;
          		0 X 0
      		X N 0
          
      The 'X' pixels influence the 'N' pixel (together with the uncompressed diff)
Tada. We now have 3 uncompressed images. To view each of them we can use:
	rawtopgm 320 480 <image0 | pnmflip -tb > image0.ppm
	rawtopgm 320 240 <image1 | pnmflip -tb > image1.ppm
	rawtopgm 320 240 <image2 | pnmflip -tb > image2.ppm
where image0 is the first image read, and image1,image2 the next two images.

Both give pretty grayscale pictures, but are not yet in color.

Chapter 3.2: The high quality compressed image format

The high quality format uses a very different compression.

It just compacts all 8bit values to 6bit by shortening out the 2 least significant bits. So we just restore them (AAAA AABB BBBB CCCC CCDD DDDD -> AAAAAA00, BBBBBB00, CCCCCC00, DDDDDD00) and get the same grayscale images as with the lowquality compression.

Chapter 3.3: Getting colors

Now we have the green, the red and the blue components, with the green having twice as much rows as the others.
We can apply the bayer algorithm now and get the final 640x480 image. libgphoto2-2.5.9/camlibs/jd11/ChangeLog0000644000175000001440000000234312557123324014446 000000000000002005-01-02 Marcus Meissner * jd11.c: Added names to the properties. 2002-08-01 Marcus Meissner * jd11.c, serial.c: Fixed gp_port_write() retvalue checking. 2002-04-12 Marcus Meissner * jd11.c, serial.c: Changed image/pnm to correct GP_MIME_PNM, so konqueror displays it again. 2002-04-06 Marcus Meissner * jd11.c, serial.[ch]: Use the _noop filesystem functions to store the thumbnail data we retrieve on getting the number of pictures in the camera, major speedup for downloading thumbnails. Provide file info for frontends who use them. 2002-01-04 Marcus Meissner * jd11.c: Cleaned up comments, say it is ready for production use. jd11.html: Added final note on colors. 2001-12-29 Marcus Meissner * serial.[ch], jd11.c: Use new gp_file_progress. * jd11.c: Initialize CameraAbilities struct with zeroes. * serial.c: Made serial transfers much more robust, with retries and draining of old data. Also use gp_file_progress correctly (hopefully). 2001-12-05 Lutz Müller * serial.c: Include , not "libgphoto2/bayer.h" libgphoto2-2.5.9/camlibs/jd11/serial.h0000644000175000001440000000327312610415536014326 00000000000000/* * Jenopt JD11 Camera Driver * Copyright 1999-2001 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef _JD11_SERIAL_H #define _JD11_SERIAL_H #include #include extern int jd11_index_reader(GPPort *port, CameraFilesystem *fs, GPContext *context); extern int jd11_get_image_full(Camera *camera,CameraFile *file,int nr,int raw, GPContext *context); extern int jd11_erase_all(GPPort *port); extern int jd11_ping(GPPort *port); extern int jd11_float_query(GPPort *port); extern int jd11_select_index(GPPort *port); extern int jd11_select_image(GPPort *port, int nr); extern int jd11_set_bulb_exposure(GPPort *port, int nr); extern int jd11_set_rgb(GPPort *port, float red, float green, float blue); extern int jd11_get_rgb(GPPort *port, float *red, float *green, float *blue); #define IMGHEADER "P6\n# gPhoto2 JD11 thumbnail image\n640 480 255\n" #define THUMBHEADER "P5\n# gPhoto2 JD11 thumbnail image\n64 48 255\n" #endif libgphoto2-2.5.9/camlibs/jd11/serial.c0000644000175000001440000003344512610415536014325 00000000000000/* * Jenopt JD11 Camera Driver * Copyright 1999-2001 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #include #include "serial.h" #include "decomp.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #if 0 static int dread(GPPort *port, caddr_t buf, int xsize) { int i; int ret = gp_port_read(port,buf,xsize); if (ret == -1) { perror("dread"); return -1; } fprintf(stderr,"dread[%d]:",ret); for (i=0;i>8; buf[1] = cmd&0xff; return WRITE(port,buf,2); } static int _read_cmd(GPPort *port,unsigned short *xcmd) { unsigned char buf[2]; int i = 0,ret; *xcmd = 0x4242; do { if (1==(ret=READ(port,buf,1))) { if (buf[0]==0xff) { if (1==READ(port,buf+1,1)) { *xcmd = (buf[0] << 8)| buf[1]; return GP_OK; } } } else { return ret; } } while (i++<10); return GP_ERROR_IO; } #if 0 static void _dump_buf(unsigned char *buf,int size) { int i; fprintf(stderr,"["); for (i=0;i>8; buf[1] = cmd&0xff; ret = WRITE(port,buf,2); do { if (1==(ret=READ(port,buf,1))) { if (buf[0]==0xff) { if (1==READ(port,buf+1,1)) { *xcmd = (buf[0] << 8)| buf[1]; return GP_OK; } } } else { return ret; } } while (i++<3); } return GP_ERROR_IO; } int jd11_ping(GPPort *port) { unsigned short xcmd; char buf[1]; int ret,tries = 3; while (tries--) { ret = GP_ERROR_IO; while (1==READ(port,buf,1)) /* drain input queue before PING */; ret=_send_cmd_2(port,0xff08,&xcmd); if ((ret>=GP_OK) && (xcmd==0xfff1)) return GP_OK; } return ret; } int jd11_get_rgb(GPPort *port,float *red, float *green, float *blue) { char buf[10]; int ret=GP_OK,tries=0,curread=0; _send_cmd(port,0xffa7); while ((curread<10) && (tries++<30)) { ret=READ(port,buf+curread,sizeof(buf)-curread); if (ret < 0) continue; if (ret == 0) break; curread+=ret; } if(curread<10) { fprintf(stderr,"%d returned bytes on float query.\n",ret); return GP_ERROR_IO; } /*_dump_buf(buf,10);*/ *green = buf[1]+buf[2]*0.1+buf[3]*0.01; *red = buf[4]+buf[5]*0.1+buf[6]*0.01; *blue = buf[7]+buf[8]*0.1+buf[9]*0.01; return GP_OK; } int jd11_set_rgb(GPPort *port,float red, float green, float blue) { unsigned char buf[20]; _send_cmd(port,0xffa7); buf[0] = 0xff; buf[1] = (int)green; buf[2] = ((int)(green*10))%10; buf[3] = ((int)(green*100))%10; buf[4] = (int)red; buf[5] = ((int)(red*10))%10; buf[6] = ((int)(red*100))%10; buf[7] = (int)blue; buf[8] = ((int)(blue*10))%10; buf[9] = ((int)(blue*100))%10; /*_dump_buf(buf,10);*/ return WRITE(port,buf,10); } int jd11_select_index(GPPort *port) { /* select index */ unsigned short xcmd; int ret; ret = _send_cmd_2(port,0xffa4,&xcmd); if (ret < GP_OK) return ret; if (xcmd!=0xff01) return GP_ERROR_IO; return GP_OK; } int jd11_select_image(GPPort *port,int nr) { /* select image */ unsigned short xcmd; _send_cmd(port,0xffa1); _send_cmd(port,0xff00|nr); _read_cmd(port,&xcmd); if (xcmd != 0xff01) return GP_ERROR_IO; return GP_OK; } int jd11_set_bulb_exposure(GPPort *port,int i) { unsigned short xcmd; if ((i<1) || (i>9)) return GP_ERROR_BAD_PARAMETERS; _send_cmd(port,0xffa9); _send_cmd(port,0xff00|i); _read_cmd(port,&xcmd); return GP_OK; } #if 0 static void jd11_TestADC(GPPort *port) { unsigned short xcmd; _send_cmd(port,0xff75); _read_cmd(port,&xcmd); fprintf(stderr,"TestADC: done, xcmd=%x\n",xcmd); } static void cmd_TestDRAM(GPPort *port) { unsigned short xcmd; _send_cmd(port,0xff72); _read_cmd(port,&xcmd); fprintf(stderr,"TestDRAM: done.\n"); } /* doesn't actually flash */ static void cmd_TestFLASH(GPPort *port) { unsigned short xcmd; _send_cmd(port,0xff73); _read_cmd(port,&xcmd); fprintf(stderr,"TestFLASH: xcmd = %x.\n",xcmd); } /* some kind of selftest ... shuts the shutters, beeps... only stops by * powercycle. */ static void cmd_79(GPPort *port) { unsigned short xcmd; _send_cmd(port,0xff79); _read_cmd(port,&xcmd); fprintf(stderr,"79: done, xcmd =%x\n",xcmd); } #endif static int jd11_imgsize(GPPort *port) { char buf[20]; int ret; int i=0,curread=0; _send_cmd(port,0xfff0); do { ret=READ(port,&buf[curread],10-curread); if (ret>0) curread+=ret; usleep(1000); } while ((i++<20) && (curread<10)); /*_dump_buf(buf,curread);*/ if (!curread) /* We get 0 bytes return for 0 images. */ return 0; ret=strtol(&buf[2],NULL,16); return ret; } static int getpacket(GPPort *port,unsigned char *buf, int expect) { int curread = 0, csum = 0; int tries = 0; if (expect == 200) expect++; while (tries++<5) { int i=0,ret; do { ret=READ(port,buf+curread,expect-curread); if (ret>0) { curread+=ret; i=0; continue; } usleep(100); } while ((i++<2) && (curread200) readsize = 200; ret=getpacket(port,indexbuf+curread,readsize); if (ret==0) break; curread+=ret; if (ret<200) break; gp_context_progress_update (context, id, curread); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { /* What to do...Just free the stuff we allocated for now.*/ free(indexbuf); return GP_ERROR_CANCEL; } _send_cmd(port,0xfff1); } gp_context_progress_stop (context, id); for (i=0;iport; unsigned int id; jd11_select_image(port,nr); *imagebufs = (unsigned char**)malloc(3*sizeof(unsigned char*)); for (picnum=0;picnum<3;picnum++) { curread=0; sizes[picnum] = jd11_imgsize(port); (*imagebufs)[picnum]=(unsigned char*)malloc(sizes[picnum]+400); _send_cmd(port,0xfff1); id = gp_context_progress_start (context, sizes[picnum], _("Downloading data...")); while (curread 200) readsize = 200; ret=getpacket(port,(*imagebufs)[picnum]+curread,readsize); if (ret==0) break; curread+=ret; if (ret<200) break; gp_context_progress_update (context, id, curread); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { int j; /* What to do ... Just free the stuff we allocated for now. */ for (j=0;jright mirrored */ for (h=480;h--;) { int w; for (w=320;w--;) { if (h&1) { /* G B G B G B G B G */ *s++ = uncomp[0][h*320+w]; *s++ = uncomp[2][(h/2)*320+w]; } else { /* R G R G R G R G R */ *s++ = uncomp[1][(h/2)*320+w]; *s++ = uncomp[0][h*320+w]; } } } /*gp_bayer_decode(bayerpre,640,480,data,BAYER_TILE_GRBG);*/ gp_ahd_decode(bayerpre,640,480,data,BAYER_TILE_GRBG); free(bayerpre); } else { s=data; for (h=480;h--;) { /* upside down */ int w; for (w=640;w--;) { /* right to left */ /* and images are in green red blue */ *s++=uncomp[1][(h/2)*320+(w/2)]; *s++=uncomp[0][h*320+(w/2)]; *s++=uncomp[2][(h/2)*320+(w/2)]; } } } free(uncomp[0]);free(uncomp[1]);free(uncomp[2]); free(imagebufs[0]);free(imagebufs[1]);free(imagebufs[2]);free(imagebufs); gp_file_append(file, (char*)data, 640*480*3); free(data); return GP_OK; } libgphoto2-2.5.9/camlibs/lg_gsm/0000755000175000001440000000000012623156267013471 500000000000000libgphoto2-2.5.9/camlibs/lg_gsm/lg_gsm.h0000644000175000001440000000234012610415524015017 00000000000000/* lg_gsm.h * * Copyright (C) 2005 Guillaume Bedot * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __LG_GSM_H__ #define __LG_GSM_H__ #include typedef unsigned char Info; typedef enum { MODEL_LG_T5100 } Model; int lg_gsm_init (GPPort *port, Model *model, Info *info); unsigned int lg_gsm_get_picture_size (GPPort *port, int pic); int lg_gsm_read_picture_data (GPPort *port, char *data, int size, int n); int lg_gsm_list_files (GPPort *port, CameraList *list); #endif libgphoto2-2.5.9/camlibs/lg_gsm/lg_gsm.c0000644000175000001440000001576712610415524015033 00000000000000/* lg_gsm.c * * Copyright (C) 2005 Guillaume Bedot * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include "lg_gsm.h" #define GP_MODULE "lg_gsm" #define MSGWRITE gp_port_usb_msg_write #define WRITE gp_port_write #define READ gp_port_read static char sync_start[] = "\x2\x0\x0\x0\x0\x0"; static char sync_stop[] = "\x3\x0\x0\x0\x0\x0"; static char get_firmware[] = "\x1\x0\x0\x0\x0\x0"; static char list_all_photo[]= "\x04\x0\x08\x0\x0\x0\x40\x0\x0\x0\xff\xff\xff\xff"; static char get_photo_cmd[]="\x0b\x0\x8a\x0\x0\x0\x40\x0\x0\x0"; int lg_gsm_init (GPPort *port, Model *model, Info *info) { char firmware[54]; char oknok[6]; memset (oknok,0,6); memset (firmware,0,54); GP_DEBUG("Running lg_gsm_init\n"); port->timeout=20000; /* syncstart */ MSGWRITE(port, 0x13, 0x6, 0x0, "", 0); WRITE(port, sync_start, 6); READ(port, oknok, 6); /* getfirmware : write 0x010000000000 */ MSGWRITE(port, 0x13, 0x6, 0x0, "", 0); WRITE(port, get_firmware, 0x6); READ(port, firmware, 54); /* syncstop */ MSGWRITE(port, 0x13, 0x6, 0x0, "", 0); WRITE(port, sync_stop, 6); READ(port, oknok, 6); /* This information, too. */ memcpy (info, &firmware[6], 40); GP_DEBUG("info = %s\n", info); /*GP_DEBUG("info[20] = 0x%x\n", firmware[26]);*/ GP_DEBUG("Leaving lg_gsm_init\n"); return GP_OK; } unsigned int lg_gsm_get_picture_size (GPPort *port, int pic) { unsigned int size; /* example : list photos 2 & 3: 0x04000800000040000000 + 0100 : from + 0200 : to */ char listphotos[] = "\x04\x0\x08\x0\x0\x0\x40\x0\x0\x0\x0\x0\x0\x0"; char photonumber[22]; char photodesc[142]; /* 1 * 142 */ char oknok[6]; memset (oknok,0,6); memset (photonumber,0,22); memset (photodesc,0,142); /*listphotos[11]=listphotos[13]=pic / 256;*/ /*listphotos[10]=listphotos[12]=pic % 256;*/ listphotos[10] = listphotos[12] = pic; GP_DEBUG("Running lg_gsm_get_picture_size\n"); MSGWRITE(port, 0x13, 0x6, 0x0, "", 0); WRITE(port, sync_start, 6); READ(port, oknok, 6); MSGWRITE(port, 0x13, 0xe, 0x0, "", 0); WRITE(port, listphotos, 0xe); /* read 22 */ READ(port, photonumber, 0x16); /* then read 142 */ READ(port, photodesc, 0x8e); size = (unsigned int)photodesc[138] + (unsigned int)photodesc[139]*0x100 + (unsigned int)photodesc[140]*0x10000+(unsigned int)photodesc[141]*0x1000000; GP_DEBUG(" size of picture %i is 0x%x\n", pic, size); /* max. 1280x960x24bits ? */ if ( (size >= 0x384000 ) ) {return GP_ERROR;} MSGWRITE(port, 0x13, 0x6, 0x0, "", 0); WRITE(port, sync_stop, 6); READ(port, oknok, 6); GP_DEBUG("Leaving lg_gsm_get_picture_size\n"); return size; } int lg_gsm_read_picture_data (GPPort *port, char *data, int size, int n) { char listphotos[] = "\x04\x0\x08\x0\x0\x0\x40\x0\x0\x0\x0\x0\x0\x0"; char photonumber[22]; char photodesc[142]; /* 1 * 142 */ char getphoto[144]; char getphotorespheader[150]; char block[50000]; char oknok[6]; int pos=0; int block_size=50000; int header_size=8; int nb_blocks; int i; int remain; memset (oknok,0,6); memset (photonumber,0,22); memset (photodesc,0,142); memset (getphoto,0,144); memset (getphotorespheader,0,150); memset (block,0,50000); /*listphotos[11]=listphotos[13]=n / 256;*/ /*listphotos[10]=listphotos[12]=n % 256;*/ listphotos[10]=listphotos[12]=n; /* port->timeout=20000;*/ GP_DEBUG("Running lg_gsm_read_picture_data\n"); /* syncstart */ MSGWRITE(port, 0x13, 0x6, 0x0, "", 0); WRITE(port, sync_start, 6); READ(port, oknok, 6); MSGWRITE(port, 0x13, 0x0e, 0x0, "", 0); WRITE(port, listphotos, 0xe); /* read 22 */ READ(port, photonumber, 0x16); /* then read 142 */ READ(port, photodesc, 142); size = (int)photodesc[138] + (int)photodesc[139]*0x100 + (int)photodesc[140]*0x10000+(int)photodesc[141]*0x1000000; GP_DEBUG(" size of picture %i is 0x%x\n", n, size); /* max. 1280x960x24bits ? */ if ( (size >= 0x384000 ) ) { return GP_ERROR; } memcpy(getphoto, &get_photo_cmd[0], 10); memcpy(getphoto +10, &n, 1); /*TODO: fix this*/ /*memcpy(getphoto +11, 0, 1);*/ memcpy(getphoto +12, &photodesc[6],44); memcpy(getphoto +56, &photodesc[50],88); /* send getphoto cmd */ MSGWRITE(port, 0x13, 0x90, 0x0, "", 0); WRITE(port, getphoto, 0x90); /* read */ READ(port, getphotorespheader, 0x96); nb_blocks=size/block_size+1; /*port->timeout=15000;*/ for (i = 1 ; i <= nb_blocks ; i++) { remain = size - pos; if (remain >= block_size - header_size) { READ(port, block, block_size); memcpy(data+pos,&block[header_size],block_size - header_size); pos=pos+block_size-header_size; } else { READ(port,block, remain+header_size); memcpy(data+pos,&block[header_size],remain); pos=pos+remain; } } /*port->timeout=5000;*/ /* syncstop */ MSGWRITE(port, 0x13, 0x6, 0x0, "", 0); WRITE(port, sync_stop, 6); READ(port, oknok, 6); GP_DEBUG("Leaving lg_gsm_read_picture_data\n"); return GP_OK; } int lg_gsm_list_files (GPPort *port, CameraList *list) { int num_pics; int i; char oknok[6]; char photonumber[22]; char photolist[142000]; /* max_photos * 142 */ char name[44]; char value[88]; memset (oknok,0,6); memset (photonumber,0,22); memset (photolist,0,142000); memset (name,0,44); memset (value,0,88); GP_DEBUG("Running lg_gsm_list_files\n"); /* set timeout to 3s */ /*port->timeout=20000;*/ /* syncstart */ MSGWRITE(port, 0x13, 0x6, 0x0, "", 0); WRITE(port, sync_start, 6); READ(port, oknok, 6); /* lsphoto : write 0x04000800000040000000ffffffff */ MSGWRITE(port, 0x13, 0xe, 0x0, "", 0); WRITE(port, list_all_photo, 0xe); READ(port, photonumber, 0x16); num_pics=photonumber[20]+256*photonumber[21]; /* increase timeout to 20s */ /*port->timeout=20000;*/ /* read 142 * nb_photos */ READ(port, photolist, 142*num_pics); for (i = 0; i < num_pics; i++){ /* sprintf( name, "lg_gsm_pic%03i.jpg", i ); */ memcpy(name,&photolist[6+142*i],44); memcpy(value,&photolist[50+142*i],80); gp_list_append(list, name, value); } /* restore timeout to 5s */ /*port->timeout=5000; */ /* syncstop */ MSGWRITE(port, 0x13, 0x6, 0x0, "", 0); WRITE(port, sync_stop, 6); READ(port, oknok, 6); /*port->timeout=5000;*/ GP_DEBUG("Number of pics : %03i\n", num_pics); GP_DEBUG("Leaving lg_gsm_list_files\n"); return GP_OK; } libgphoto2-2.5.9/camlibs/lg_gsm/library.c0000644000175000001440000001274212610415524015215 00000000000000/* library.c * * Copyright (C) 2003 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "lg_gsm.h" #include #define GP_MODULE "lg_gsm" struct _CameraPrivateLibrary { Model model; Info info[40]; }; static struct { char *name; CameraDriverStatus status; unsigned short idVendor; unsigned short idProduct; } models[] = { {"LG T5100", GP_DRIVER_STATUS_EXPERIMENTAL, 0x1004, 0x6005}, {NULL,0,0} }; int camera_id (CameraText *id) { strcpy (id->text, "LG GSM camera"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].name); a.status = models[i].status; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; a.operations = GP_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_NONE; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { char firmware[20]; char firmware_version[20]; memcpy(firmware,&camera->pl->info[0],20); memcpy(firmware_version,&camera->pl->info[20],20); sprintf (summary->text,_("Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" ), firmware, firmware_version); return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("LG GSM generic driver\n" "Guillaume Bedot \n")); return GP_OK; } /*************** File and Downloading Functions *******************/ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; lg_gsm_list_files (camera->port, list); return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int k; char *data; int len; k = gp_filesystem_number(camera->fs, "/", filename, context); switch (type) { case GP_FILE_TYPE_PREVIEW: return GP_ERROR_NOT_SUPPORTED; case GP_FILE_TYPE_NORMAL: len = lg_gsm_get_picture_size (camera->port, k); GP_DEBUG("len = %i\n", len); data = malloc(len); if (!data) { GP_DEBUG("malloc failed\n"); return GP_ERROR_NO_MEMORY; } lg_gsm_read_picture_data (camera->port, data, len, k); gp_file_append (file, data, len); free (data); break; default: return GP_ERROR_NOT_SUPPORTED; } return GP_OK; } /*************** Exit and Initialization Functions ******************/ static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("LG GSM camera_exit"); if (camera->pl) { free (camera->pl); camera->pl = NULL; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func }; int camera_init(Camera *camera, GPContext *context) { GPPortSettings settings; int ret = 0; /* First, set up all the function pointers */ camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->exit = camera_exit; GP_DEBUG ("Initializing the camera\n"); ret = gp_port_get_settings(camera->port,&settings); if (ret < 0) return ret; switch (camera->port->type) { case GP_PORT_SERIAL: return GP_ERROR; case GP_PORT_USB: settings.usb.config = 1; settings.usb.altsetting = 0; settings.usb.interface = 1; settings.usb.inep = 0x81; settings.usb.outep =0x02; break; default: return GP_ERROR; } ret = gp_port_set_settings(camera->port,settings); if (ret < 0) return ret; GP_DEBUG("interface = %i\n", settings.usb.interface); GP_DEBUG("inep = %x\n", settings.usb.inep); GP_DEBUG("outep = %x\n", settings.usb.outep); /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); /* Connect to the camera */ lg_gsm_init (camera->port, &camera->pl->model, camera->pl->info); return GP_OK; } libgphoto2-2.5.9/camlibs/lg_gsm/README.lg_gsm0000644000175000001440000000141312561423351015527 00000000000000This driver will download pictures from the LG T5100. This GSM/camera has Vendor:Product number 0x1004:0x6005. Other LG phones may have a similar behaviour (?). Here are only addressed camera features. For mp3 or videos, you may have a look at http://sf.net/projects/t5100-utils Some things which work for me, with various gphoto2 options: (TODO: check assumptions made here !!!) gphoto2 --summary : will report the total number of pictures. gphoto2 -P : is functional. gphoto2 -p x-y : is functional, too, assuming there are at least y pictures in the camera and x <= y. gphoto2 --get-all-raw-data ??? License: LGPL (see the head of the libgphoto2 source tree; this camera library is a part of the libgphoto2 project). Warranty: None. Copyright by Guillaume Bedot, 2005. libgphoto2-2.5.9/camlibs/lg_gsm/Makefile-files0000644000175000001440000000047312561423351016145 00000000000000EXTRA_DIST += lg_gsm/README.lg_gsm lg_gsm/ChangeLog camlibdoc_DATA += lg_gsm/README.lg_gsm EXTRA_LTLIBRARIES += lg_gsm.la lg_gsm_la_SOURCES = lg_gsm/library.c lg_gsm/lg_gsm.c lg_gsm/lg_gsm.h lg_gsm_la_LDFLAGS = $(camlib_ldflags) lg_gsm_la_DEPENDENCIES = $(camlib_dependencies) lg_gsm_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/lg_gsm/ChangeLog0000644000175000001440000000033512557123324015156 000000000000002005-12-25 Hubert Figuiere * library.c, lg_gsm.c: cleanup the code and warning removal 2005-12-16 Guillaume Bedot * First attempt to make a gphoto2 driver for the LG T5100 libgphoto2-2.5.9/camlibs/casio/0000755000175000001440000000000012623156267013317 500000000000000libgphoto2-2.5.9/camlibs/casio/jpegtab_f.h0000644000175000001440000000716712561423351015334 00000000000000/* This file is taken from qvplay version 0.95, written by: Ken-ichi HAYASHI Jun-ichiro "itojun" Itoh Notes from qvplay: You can use the entire source code of this archive in your software, but I assume no resuponsibilitiy for the results of the usage of the source code. Use at your own risk. If you want to need some kind of 'license', you can choice 'BSD style license' or 'LGPL'. It is great presure you describe at README file of your software, "This software has QVplay's source code.". */ static unsigned char app_f[] ={ 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, 0x01, 0x01, 0x01, 0x2c, 0x01, 0x2c, 0x00, 0x00 }; static unsigned char dqt_f[] ={ 0xff, 0xdb, 0x00, 0x84, 0x00 }; static unsigned char sof_f[]={ 0xff, 0xc0, 0x00, 0x11, 0x08, 0x01, 0xe0, 0x02, 0x80, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01 }; static unsigned char dht_f[] ={ 0xff, 0xc4, 0x01, 0xa2, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x01, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7d, 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0x11, 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa }; static unsigned char sos_f[] ={ 0xff, 0xda, 0x00, 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00 }; libgphoto2-2.5.9/camlibs/casio/casio-qv-commands.h0000644000175000001440000000332312610415536016723 00000000000000/* casio-qv-commands.h * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __CASIO_QV_COMMANDS_H__ #define __CASIO_QV_COMMANDS_H__ #include int QVping (Camera *camera); /* Battery level in volts */ int QVbattery (Camera *camera, float *battery); int QVrevision (Camera *camera, long int *revision); int QVnumpic (Camera *camera); int QVstatus (Camera *camera, char *status); int QVdelete (Camera *camera, int n); int QVprotect (Camera *camera, int n, int on); int QVpicattr (Camera *camera, int n, unsigned char *attr); int QVshowpic (Camera *camera, int n); int QVsetpic (Camera *camera); int QVsize (Camera *camera, long int *size); int QVgetYCCpic(Camera *camera, unsigned char **data, unsigned long int *size); int QVgetCAMpic(Camera *camera, unsigned char **data, unsigned long int *size, int fine); int QVcapture (Camera *camera); int QVreset (Camera *camera); int QVsetspeed (Camera *camera, int speed); #endif /* __CASIO_QV_COMMANDS_H__ */ libgphoto2-2.5.9/camlibs/casio/ycctoppm.h0000644000175000001440000000176412610415524015244 00000000000000/* ycctoppm.h * * Copyright (c) 2004 Michael Haardt * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __CASIO_QV_YCCTOPPM_H__ #define __CASIO_QV_YCCTOPPM_H__ int QVycctoppm(const unsigned char *ycc, long int yccSize, int width, int height, int ratew, unsigned char **ppm, long int *ppmSize); #endif libgphoto2-2.5.9/camlibs/casio/camtojpeg.h0000644000175000001440000000210212610415524015342 00000000000000/* camtojpeg.h * * Copyright (c) 2004 Michael Haardt * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __CASIO_QV_CAMTOJPEG_H__ #define __CASIO_QV_CAMTOJPEG_H__ int QVcamtojpeg(const unsigned char *cam, long int camSize, unsigned char **jpeg, long int *jpegSize); int QVfinecamtojpeg(const unsigned char *cam, long int camSize, unsigned char **jpeg, long int *jpegSize); #endif libgphoto2-2.5.9/camlibs/casio/ycctoppm.c0000644000175000001440000000442612610415524015235 00000000000000/* ycctoppm.c * * Copyright (c) 2004 Michael Haardt * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include "ycctoppm.h" #define THUMBNAIL_WIDTH 52 #define THUMBNAIL_HEIGHT 36 #define RATE_H 2 int QVycctoppm(const unsigned char *ycc, long int yccSize, int width, int height, int ratew, unsigned char **ppm, long int *ppmSize) { char header[64]; size_t headerSize; unsigned char *dst; int x, y; long cr, cb; long L; long r,g,b; const unsigned char *Y; const unsigned char *Cr; const unsigned char *Cb; snprintf(header,sizeof(header),"P6\n%d %d\n255\n",width,height); headerSize=strlen(header); *ppm=malloc(*ppmSize=(headerSize+3*width*height)); dst=*ppm; memcpy(dst,header,headerSize); dst+=headerSize; Y = ycc; Cb = Y + (height * width); Cr = Cb + (height / RATE_H) * (width / ratew); for (y=0; y 127) cb = cb - 256; cr = Cr[(y/RATE_H) * width/ratew + x/ratew]; if (cr > 127) cr = cr - 256; r = L + 140200 * cr; g = L - 34414 * cb - 71414 * cr; b = L + 177200 * cb; r = r / 100000; g = g / 100000; b = b / 100000; if (r<0) r=0; else if (r>255) r=255; if (g<0) g=0; else if (g>255) g=255; if (b<0) b=0; else if (b>255) b=255; *dst++ = r; *dst++ = g; *dst++ = b; } } return GP_OK; } libgphoto2-2.5.9/camlibs/casio/Makefile-files0000644000175000001440000000066112561423351015772 00000000000000EXTRA_DIST += casio/PROTOCOL.txt casio/ChangeLog EXTRA_LTLIBRARIES += casio_qv.la casio_qv_la_SOURCES = \ casio/casio-qv.c \ casio/casio-qv-commands.c casio/casio-qv-commands.h \ casio/camtojpeg.c casio/camtojpeg.h \ casio/cam2jpgtab.h casio/jpegtab_f.h \ casio/ycctoppm.c casio/ycctoppm.h casio_qv_la_LDFLAGS = $(camlib_ldflags) casio_qv_la_DEPENDENCIES = $(camlib_dependencies) casio_qv_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/casio/casio-qv-commands.c0000644000175000001440000002111412610415536016714 00000000000000/* casio-qv-commands.c * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include "casio-qv-commands.h" #include #define STX 0x02 #define ETX 0x03 #define ENQ 0x05 #define ACK 0x06 #define DC2 0x12 #define NAK 0x15 #define ETB 0x17 #define UNKNOWN1 0xfe #define UNKNOWN2 0xe0 #define CASIO_QV_RETRIES 5 #define CR(result) {int r = (result); if (r < 0) return (r);} int QVping (Camera *camera) { unsigned char c; int result = GP_OK, i = 0; /* Send ENQ and wait for ACK */ while (1) { c = ENQ; CR (gp_port_write (camera->port, (char *)&c, 1)); result = gp_port_read (camera->port, (char *)&c, 1); /* If we got ACK, everything is fine. */ if (result >= 0) { switch (c) { case ACK: case ENQ: /* * According to gphoto, we need to wait * for ACK. But the camera of * David Wolfskill * seems to return ENQ after some NAK. */ return (GP_OK); case NAK: /* The camera is not yet ready. */ break; case UNKNOWN1: case UNKNOWN2: /* * David Wolfskill * has seen those two bytes if one sends * only ENQs to the camera. The camera first * answers with some NAKs, then with some * ACKs, and finally with UNKNOWN1 and * UNKNOWN2. */ while (gp_port_read (camera->port, (char *)&c, 1) >= 0); break; default: while (gp_port_read (camera->port, (char *)&c, 1) >= 0); break; } } if (++i < CASIO_QV_RETRIES) continue; /* If we got an error from libgphoto2_port, pass it along */ CR (result); /* Return some error code */ return (GP_ERROR_CORRUPTED_DATA); } } static int QVsend (Camera *camera, unsigned char *cmd, int cmd_len, unsigned char *buf, int buf_len) { unsigned char c; int checksum; const unsigned char *cmd_end; /* The camera does not insist on a ping each command, but */ /* sometimes it hangs up without one. */ CR (QVping (camera)); /* Write the request and calculate the checksum */ CR (gp_port_write (camera->port, (char *)cmd, cmd_len)); for (cmd_end = cmd+cmd_len, checksum = 0; cmd < cmd_end; ++cmd) checksum += *cmd; /* Read the checksum */ CR (gp_port_read (camera->port, (char *)&c, 1)); if (c != (unsigned char)(~checksum)) return (GP_ERROR_CORRUPTED_DATA); /* Send ACK */ c = ACK; CR (gp_port_write (camera->port, (char *)&c, 1)); /* Receive the answer */ if (buf_len) CR (gp_port_read (camera->port, (char *)buf, buf_len)); return (GP_OK); } static int QVblockrecv (Camera *camera, unsigned char **buf, unsigned long int *buf_len) { /* XXX - does the caller know to free *buf in case of an error? */ unsigned char c; int retries, pos; retries = 0; *buf = NULL; *buf_len = 0; pos = 0; /* Send DC2 */ c = DC2; CR (gp_port_write (camera->port, (char *)&c, 1)); while (1) { unsigned char buffer[2]; int size, i; int sum; unsigned char *new; /* Read STX */ CR (gp_port_read (camera->port, (char *)&c, 1)); if (c != STX) { retries++; c = NAK; CR (gp_port_write (camera->port, (char *)&c, 1)); if (retries > CASIO_QV_RETRIES) return (GP_ERROR_CORRUPTED_DATA); else continue; } /* Read sector size */ CR (gp_port_read (camera->port, (char *)buffer, 2)); size = (buffer[0] << 8) | buffer[1]; sum = buffer[0] + buffer[1]; /* Allocate the memory */ new = (unsigned char*)realloc (*buf, sizeof (char) * (*buf_len + size)); if (new == (unsigned char*)0) { if (*buf != (unsigned char*)0) free(*buf); return (GP_ERROR_NO_MEMORY); } *buf = new; *buf_len += size; /* Get the sector */ CR (gp_port_read (camera->port, (char *)*buf + pos, size)); for (i = 0; i < size; i++) sum += (*buf)[i + pos]; /* Get EOT or ETX and the checksum */ CR (gp_port_read (camera->port, (char *)buffer, 2)); sum += buffer[0]; /* Verify the checksum */ if ((unsigned char)(~sum) != buffer[1]) { retries++; c = NAK; CR (gp_port_write (camera->port, (char *)&c, 1)); if (retries > CASIO_QV_RETRIES) return (GP_ERROR_CORRUPTED_DATA); else continue; } /* Acknowledge and prepare for next packet */ c = ACK; CR (gp_port_write (camera->port, (char *)&c, 1)); pos += size; /* Are we done? */ if (buffer[0] == ETX) break; /* Yes */ else if (buffer[0] == ETB) continue; /* No */ else return (GP_ERROR_CORRUPTED_DATA); } return (GP_OK); } int QVbattery (Camera *camera, float *battery) { unsigned char cmd[6]; unsigned char b; cmd[0] = 'R'; cmd[1] = 'B'; cmd[2] = ENQ; cmd[3] = 0xff; cmd[4] = 0xfe; cmd[5] = 0xe6; CR (QVsend (camera, cmd, 6, &b, 1)); *battery = b / 16.; return (GP_OK); } int QVrevision (Camera *camera, long int *revision) { unsigned char cmd[2]; unsigned char buf[4]; cmd[0] = 'S'; cmd[1] = 'U'; CR (QVsend (camera, cmd, 2, buf, 4)); *revision = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; return (GP_OK); } int QVnumpic (Camera *camera) { unsigned char cmd[2]; unsigned char b; cmd[0] = 'M'; cmd[1] = 'P'; CR (QVsend (camera, cmd, 2, &b, 1)); return (b); } int QVpicattr (Camera *camera, int n, unsigned char *picattr) { unsigned char cmd[4]; unsigned char b; cmd[0] = 'D'; cmd[1] = 'Y'; cmd[2] = STX; cmd[3] = n+1; CR (QVsend (camera, cmd, 4, &b, 1)); *picattr = b; return (GP_OK); } int QVshowpic (Camera *camera, int n) { unsigned char cmd[3]; cmd[0] = 'D'; cmd[1] = 'A'; cmd[2] = n+1; CR (QVsend (camera, cmd, 3, NULL, 0)); return (GP_OK); } int QVsetpic (Camera *camera) { unsigned char cmd[2]; cmd[0] = 'D'; cmd[1] = 'L'; CR (QVsend (camera, cmd, 2, NULL, 0)); return (GP_OK); } int QVgetCAMpic (Camera *camera, unsigned char **data, unsigned long int *size, int fine) { unsigned char cmd[2]; cmd[0] = 'M'; cmd[1] = fine ? 'g' : 'G'; CR (QVsend (camera, cmd, 2, NULL, 0)); CR (QVblockrecv (camera, data, size)); return (GP_OK); } int QVgetYCCpic (Camera *camera, unsigned char **data, unsigned long int *size) { unsigned char cmd[2]; cmd[0] = 'M'; cmd[1] = 'K'; CR (QVsend (camera, cmd, 2, NULL, 0)); CR (QVblockrecv (camera, data, size)); return (GP_OK); } int QVdelete (Camera *camera, int n) { unsigned char cmd[4]; cmd[0] = 'D'; cmd[1] = 'F'; cmd[2] = n+1; cmd[3] = 0xff; CR (QVsend (camera, cmd, 4, NULL, 0)); return (GP_OK); } int QVprotect (Camera *camera, int n, int on) { unsigned char cmd[4]; cmd[0] = 'D'; cmd[1] = 'Y'; cmd[2] = on ? 1 : 0; cmd[3] = n+1; CR (QVsend (camera, cmd, 4, NULL, 0)); return (GP_OK); } int QVsize (Camera *camera, long int *size) { unsigned char cmd[2]; unsigned char buf[4]; cmd[0] = 'E'; cmd[1] = 'M'; CR (QVsend (camera, cmd, 2, buf, 4)); *size = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; return (GP_OK); } int QVcapture (Camera *camera) { unsigned char cmd[2]; unsigned char b; cmd[0] = 'D'; cmd[1] = 'R'; CR (QVsend (camera, cmd, 2, &b, 1)); return (GP_OK); } int QVstatus (Camera *camera, char *status) { unsigned char cmd[3]; cmd[0] = 'D'; cmd[1] = 'S'; cmd[2] = STX; CR (QVsend (camera, cmd, 3, (unsigned char *)status, 2)); return (GP_OK); } int QVreset (Camera *camera) { unsigned char cmd[2]; cmd[0] = 'Q'; cmd[1] = 'R'; CR (QVsend (camera, cmd, 2, NULL, 0)); return (GP_OK); } int QVsetspeed (Camera *camera, int speed) { unsigned char cmd[3]; gp_port_settings settings; cmd[0] = 'C'; cmd[1] = 'B'; switch (speed) { case 9600: cmd[2] = 46; break; case 19200: cmd[2] = 22; break; case 38400: cmd[2] = 11; break; case 57600: cmd[2] = 7; break; case 115200: cmd[2] = 3; break; default: return (GP_ERROR_NOT_SUPPORTED); } CR (QVsend (camera, cmd, 3, NULL, 0)); CR (gp_port_get_settings (camera->port, &settings)); settings.serial.speed = speed; CR (gp_port_set_settings (camera->port, settings)); CR (QVping (camera)); return (GP_OK); } libgphoto2-2.5.9/camlibs/casio/camtojpeg.c0000644000175000001440000000715112610415536015351 00000000000000/* camtojpeg.c * * Copyright (c) 2004 Michael Haardt * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include "cam2jpgtab.h" #include "jpegtab_f.h" #include "camtojpeg.h" static unsigned int u16(const unsigned char *buf) { return ((unsigned int)(*buf)<<8) | ((unsigned int)*(buf+1)); } static unsigned int u32(const unsigned char *buf) { return ((unsigned int)(*buf)<<24) | ((unsigned int)*(buf+1)<<16) |((unsigned int)*(buf+2)<<8) | ((unsigned int)*(buf+3)); } int QVcamtojpeg(const unsigned char *cam, long int camSize, unsigned char **jpeg, long int *jpegSize) { int ysize; int usize; int vsize; unsigned char *dst; ysize = u16(cam + 2); usize = u16(cam + 4); vsize = u16(cam + 6); *jpeg=malloc(*jpegSize= ( sizeof(soi)+sizeof(app0) +sizeof(dqt0)+64 +sizeof(dqt1)+64 +sizeof(sof)+sizeof(dht) +sizeof(sos_y)+ysize +sizeof(sos_u)+usize +sizeof(sos_v)+vsize +sizeof(eoi) )); dst=*jpeg; memcpy(dst,soi,sizeof(soi)); dst+=sizeof(soi); memcpy(dst,app0,sizeof(app0)); dst+=sizeof(app0); cam+=8; memcpy(dst,dqt0,sizeof(dqt0)); dst+=sizeof(dqt0); memcpy(dst,cam,64); dst+=64; cam+=64; memcpy(dst,dqt1,sizeof(dqt1)); dst+=sizeof(dqt1); memcpy(dst,cam,64); dst+=64; cam+=64; memcpy(dst,sof,sizeof(sof)); dst+=sizeof(sof); memcpy(dst,dht,sizeof(dht)); dst+=sizeof(dht); memcpy(dst,sos_y,sizeof(sos_y)); dst+=sizeof(sos_y); memcpy(dst,cam,ysize); dst+=ysize; cam+=ysize; memcpy(dst,sos_u,sizeof(sos_u)); dst+=sizeof(sos_u); memcpy(dst,cam,usize); dst+=usize; cam+=usize; memcpy(dst,sos_v,sizeof(sos_v)); dst+=sizeof(sos_v); memcpy(dst,cam,vsize); dst+=vsize; cam+=vsize; memcpy(dst,eoi,sizeof(eoi)); return GP_OK; } int QVfinecamtojpeg(const unsigned char *cam, long int camSize, unsigned char **jpeg, long int *jpegSize) { int size; static const unsigned char c[1] = { 1 }; unsigned char *dst; size = u32(cam + 4); *jpeg=malloc(*jpegSize= ( sizeof(soi)+sizeof(app_f) +sizeof(dqt_f)+64+1+64 +sizeof(sof_f)+sizeof(dht_f) +sizeof(sos_f)+size +sizeof(eoi) )); dst=*jpeg; memcpy(dst,soi,sizeof(soi)); dst+=sizeof(soi); memcpy(dst,app_f,sizeof(app_f)); dst+=sizeof(app_f); cam+=8; memcpy(dst,dqt_f,sizeof(dqt_f)); dst+=sizeof(dqt_f); memcpy(dst,cam,64); dst+=64; cam+=64; memcpy(dst,c,sizeof(c)); dst+=sizeof(c); memcpy(dst,cam,64); dst+=64; cam+=64; memcpy(dst,sof_f,sizeof(sof_f)); dst+=sizeof(sof_f); memcpy(dst,dht_f,sizeof(dht_f)); dst+=sizeof(dht_f); memcpy(dst,sos_f,sizeof(sos_f)); dst+=sizeof(sos_f); memcpy(dst,cam,size); dst+=size; cam+=size; memcpy(dst,eoi,sizeof(eoi)); return GP_OK; } libgphoto2-2.5.9/camlibs/casio/cam2jpgtab.h0000644000175000001440000000714412561423351015420 00000000000000/* This file is taken from qvplay version 0.95, written by: Ken-ichi HAYASHI Jun-ichiro "itojun" Itoh Notes from qvplay: You can use the entire source code of this archive in your software, but I assume no resuponsibilitiy for the results of the usage of the source code. Use at your own risk. If you want to need some kind of 'license', you can choice 'BSD style license' or 'LGPL'. It is great presure you describe at README file of your software, "This software has QVplay's source code.". Original copyright notice of this file: Casio QV-10 cam file converter. Jun-ichiro "itojun" Itoh. Freely redistributable. $Id$ */ static unsigned char soi[] = { 0xff,0xd8 }; static unsigned char app0[] = { 0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x01,0x2c,0x01,0x2c, 0x00,0x00 }; static unsigned char dqt0[] = { 0xff,0xdb,0x00,0x43,0x00 }; static unsigned char dqt1[] = { 0xff,0xdb,0x00,0x43,0x01 }; static unsigned char sof[] = { 0xff,0xc0,0x00,0x11,0x08,0x00,0xf0,0x01,0xe0,0x03,0x01,0x32,0x00,0x02,0x11,0x01, 0x03,0x11,0x01 }; static unsigned char dht[] = { 0xff,0xc4,0x00,0x1f,0x00, 0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, 0xff,0xc4,0x00,0xb5,0x10, 0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7d, 0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07, 0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0, 0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28, 0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49, 0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69, 0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89, 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, 0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5, 0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2, 0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8, 0xf9,0xfa, 0xff,0xc4,0x00,0x1f,0x01, 0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b, 0xff,0xc4,0x00,0xb5,0x11, 0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77, 0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71, 0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0, 0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26, 0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48, 0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68, 0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87, 0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5, 0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3, 0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda, 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8, 0xf9,0xfa }; static unsigned char sos_y[] = { 0xff,0xda,0x00,0x08,0x01,0x01,0x00,0x00,0x3f,0x00 }; static unsigned char sos_u[] = { 0xff,0xda,0x00,0x08,0x01,0x02,0x11,0x00,0x3f,0x00 }; static unsigned char sos_v[] = { 0xff,0xda,0x00,0x08,0x01,0x03,0x11,0x00,0x3f,0x00 }; static unsigned char eoi[] = { 0xff,0xd9 }; libgphoto2-2.5.9/camlibs/casio/PROTOCOL.txt0000644000175000001440000004257612557123324015251 00000000000000[ PREAMBLE: this file comes from qvplay-0.95 that is available at http://www.asahi-net.or.jp/~XG2K-HYS/qvplay-0.95.tar.gz This copy is here for convenience to gphoto2 developers. ] 1998.07.20 ken-ichi HAYASHI ============================================================================= QV-10 SERIAL COMMUNICATIONS PROTOCOL ============================================================================= This document describes the serial communication protocol used by QV-10's "DIGITAL" connecter. This information is not official. Rather, it is the result of individual analysis. Please. Do *not* contact CASIO to ask questions about this information. You should read source code of 'qvplay' too. ============================= S E R I A L P R O T O C O L ============================= * 9600baud 8 bit stop bit 1 Non parity * No flow control * RTS off * CTS,DTR on CASIO's QV-10 serial cable is a level converter. It converts RS-232C voltage levels to QV-10's voltage levels. This voltage converter circuit uses the electrical power supplied by the host computer's RS-232C connector. (V+ is CTS, V- is RTS.) To recieve digital data from QV-10, set the CTS terminal to ON, RTS terminal to OFF. On power-up, QV-10 serial communication speed defaults to 9600baud. This speed may be changed with the'CB' command, described below. This change remains in effect until power off or another 'CB' command. ----- =========================== C O M M A N D F O R M A T =========================== Commands generally follow this format: 0x05 0xXX 0xXX ... 0x06 (hex) That is, a command flag (0x05, or ENQ) followed by command parameters, followed by an ACK. (0x06). ====================== C O M M A N D L I S T ====================== above the line: data sent to QV-10 --------------------------------------- below the line: data recieved from QV-10 ASCII code values are quoted. All other values are hex. RESET CAMERA ============ * Reset Camera #1 05 'QR' 06 ------------ Reset QV10. 06 5c Comment: This command is acceptable, in all states. The meaning of 0x5c is checksum. Checksum value is reverse bits of all sum of command bytes and palameter bytes . ~('Q(51)' + 'R(52)') = 5c * Reset Camera #2 05 'QE' 06 ------------ Reset QV10. 06 69 Comment: This command does not clear the QV10's LCD. The meaning of 0x69 is checksum. QUERY PICTURE NUMBER ==================== 05 'MP' 06 -------------- Fetch number of pictures in QV10 06 62 XX Comment: Number of pictures in QV10 returned at XX. The meaning of 0x62 is checksum. SHOW PICTURE #XX ON LCD ====================== 05 'DA' XX 06 ---------------- Show picture on QV10's LCD. 06 YY Comment: Picture number is specified by XX. The return byte YY is checksum. (0x7a - XX ) GET PICTURE DATA IN JPEG FORMAT =================================== 05 'DA' XX 06 05 'DL' 06 05 'MG' 06 12 06 -------------------------------------------------------------------- 06 YY 06 6f 06 6b [Picture Data] [Picture Data] 06 06 06 -----------------------------......---------------- [Picture Data] [Picture Data] 02 00 00 03 FC Comment: XX is the picture number. The return byte YY is checksum. (0x7a - XX). Return byte 6f is checksum. Return byte 6b is checksum. 02 00 00 03 FC should be end marker. If you want to get 'fine mode(640x480)' picture data in QV100, you must use 'Mg' instead of 'MG'. FORMAT OF [Picture Data] ======================== 02 WW WW JJ JJ JJ JJ JJ ........ 17 SS Comment: WW WW: Data Block Size (2 bytes): (Normally 0x00 0x80, 128 bytes) The data preceeding the endmark(02 00 00 03 FC) is its block size(under 0x00 0x80). JJ: Picture data. (Image Area of CAM format) (Please refer to the CAM format information below). SS: Check sum. Reverse bits of all sum of second byte (after 0x02) of data block to before SS (0x17). SEND JPEG FORMAT PICTURE DATA TO QV-10 ====================================== 05 'MH' 06 [Picture Data] [Picture Data] ------------------------------------------ 06 6a 12 06 06 [Picture Data] [Picture Data] 02 00 00 03 FC ----------------------------......---------------- 06 06 06 05 'DJ' 06 -------------- 06 ZZ Comment: The return byte 6a is checksum. The return byte ZZ(normaly 06 ?) is unknown. [Picture Data] format is the same as above. The procedure of send a 'fine mode(640x480)' picture for QV100 is unknown. GET THUMBNAIL IMAGE AS "YCC" FORMAT =================================== 05 'DA' XX 06 05 'DL' 06 05 'MK' 06 12 06 -------------------------------------------------------------------- 06 YY 06 6f 06 67 [Picture Data] [Picture Data] 06 06 06 ----------------------------......---------------- [Picture Data] [Picture Data] 02 00 00 03 FC Comment: XX: Picture Number YY: checksum. (0x7a - XX) The return byte 6f is checksum. The return byte 67 is checksum. FORMAT OF [PICTURE DATA] ======================== 02 WW WW TT TT TT TT TT ........ 17 SS Comment: WW WW: Data block size. (2byte). Normally 0x00 0x80 (128 bytes) The data preceeding the endmark(02 00 00 03 FC) is its block size(under 0x00 0x80). TT: Picture data. (YCC format) SS: Check sum. Reverse bits of all sum of second byte (after 0x02) of data block to before SS (0x17). Thumbnail image size is 52(W)x36(H). In 2808 bytes, the first 1872 bytes contain Y element data(0 to 255), the second 468 bytes contain Cb element data(-128 to 127), the third 468 bytes contain Cr element data(-128 to 127). The Y element is represented by an unsigned char. Cb and Cr elements are represented by signed char. The formula to convert YCC to RGB, is described in "ppm.c". (qvplay's source file) GET PICTURE DATA IN YCC FORMAT ================================== 05 'DA' XX 06 05 'DL' 06 05 'ML' 06 12 06 -------------------------------------------------------------------- 06 YY 06 6f 06 66 [Picture Data] [Picture Data] 06 06 06 ----------------------------......---------------- [Picture Data] [Picture Data] 02 00 00 03 FC Comment: XX: Picture Number. YY: checksum. (0x7a - XX) The return byte 6f is checksum. The return byte 66 is checksum. FORMAT OF [PICTURE DATA] ======================== 02 WW WW JJ JJ JJ JJ JJ ........ 17 SS Comment: WW WW: Data block size. (2bytes). Normaly 0x00 0x80, 128 bytes. The data preceeding the endmark(02 00 00 03 FC) is its block size(under 0x00 0x80). TT: Picture Data. (YCC format) SS: Check sum. Reverse bits of all sum of second byte (after 0x02) of data block to before SS(0x17). - When picture is 'normal mode(420x240)' picture Picture size is 480(W)x240(H). All Picture Data size is 153600 byte. In 153600 bytes, the first 115200 bytes contain Y element data(0 to 255), the second 19200 bytes contain Cb element data(-128 to 127), the third 19200 bytes contain Cr element data(-128 to 127). - When picture is 'fine mode' picture Picture size is 640(W)x480(H). All Picture Data size is 460800 byte. In 460800 bytes, the first 307200 bytes contain Y element data(0 to 255), the second 76800 bytes contain Cb element data(-128 to 127), the third 76800 bytes contain Cr element data(-128 to 127). The Y element is represented by an unsigned char. Cb and Cr elements are represented by signed char. The formula to convert YCC to RGB, is described in "ppm.c". (qvplay's source file) SEND A YCC FORMAT PICTURE TO QV-10 ================================== 05 'MM' 06 [Picture Data] [Picture Data] ----------------------------------------- 06 65 12 06 [Picture Data] [Picture Data] 02 00 00 03 FC ----------------------------......---------------- 06 06 06 05 'DN' 06 05 'DJ' 06 ----------------------------- 06 6d 06 ZZ Comment: The return byte 65 is checksum. The return byte 6d is checksum. The return byte ZZ is unknown. [Picture Data] format is as described above. The procedure of send a 'fine mode(640x480)' picture for QV100 is unknown. DELETE A PICTURE FROM QV-10 MEMORY =================================== 05 'DF' XX ff 06 ------------------- 06 YY Comment: XX: Picture Number. YY: checksum (0x76 - XX) TAKE A PICTURE ============== 05 'DR' 06 ------------- 06 69 ZZ Comment: You must set QV10 to REC mode. The return byte 69 is checksum. ZZ: When QV10's function SW is PLAY mode, it is 15, in REC mode, it is 06. (at QV-700/770 this command not work.) CHANGE SERIAL COMMUNICATION SPEED ================================= 05 'CB' XX 06 ---------------- 06 YY Comment: XX: Select XX from the table below YY: checksum XX(decimal(hex)): baud -------------------- 46(0x2e) : 9600 22(0x16) : 19200 11(0x0b) : 38400 7(0x07) : 57600 3(0x03) : 115200 -------------------- CHANGE PICTURE ORDER ==================== 05 'DI' XX 06 05 'DY' 02 XX 06 05 'DF' XX ff 06 05 'Dj' VV 06 ------------------------------------------------------------------------ 06 YY 06 ZZ 06 WW 06 UU Comment: XX: source picture number YY: checksum (0x72 - XX) ZZ: unknown WW: checksum (0x76 - XX) VV: destination picture number UU: checksum (0x51 - XX) FOR EXAMPLE: XX = 5 VV =2 picture order before: 1 2 3 4 5 6 ... picture order after: 1 5 2 3 4 6 ... POWER OFF QV-10 ==================== 05 'QX' 06 -------------- 06 56 Comment: Power off QV-10. The return byte 56 is checksum. DISABLE AUTO POWER OFF FUNCTION =============================== 05 'DU' 06 05 'QE' 06 ---------------------------- 06 66 06 69 Comment: Disable auto power off function. The return byte 66, 69 is checksum. REPORT BATTERY VOLTAGE ====================== 05 'RB' 05 FF FE E6 06 -------------------------------- 06 83 XX Comment: Fetch battery boltage. XX: battery voltage. XX/0x10 (devide by 0x10) is an approximate voltage value. The return byte 83 is checksum. (at QV-700/770 this function report another value.) SHOW TEST COLOR PATTERN ======================= 05 'DP' 06 ------------- 06 XX Comment: Show 'test color patten' on LCD. The return byte XX is checksum. REPORT SWITCH AND CCD LENS UNIT STATUS ======================================= 05 'DS' 06 ---------------- 06 XX YY ZZ Comment: Report REC/PLAY switch status and CCD lens unit status. The return byte XX is checksum. YY: MSB 7 0x80 Too brighter warning mark(filled circle)) is shown on LCD. 6 0x40 Too darker warning mark(hollow circle)) is shown on LCD. 5 0x20 unknown 4 0x10 unknown 3 0x08 [-]button is pressed. 2 0x04 [+]button is pressed. 1 0x02 unknown 0 0x01 unknown LSB ZZ: MSB 7 0x80 CCD lens unit is reverse position. 6 0x40 REC/PLAY SW. is PLAY position. 5 0x20 PROTECT button is pressed. 4 0x10 DEL button is pressed. 3 0x08 DISP button is pressed. 2 0x04 MODE button is pressed. 1 0x02 ZOOM button is pressed. 0 0x01 Shutter button is pressed. LSB (at QV-700/770 status YY ZZ is always 00 44.) PROTECT PICTURE or UNPROTECT PICTURE ==================================== 05 'DY' XX YY 06 ----------------------- 06 ZZ Comment: Protect picture or unprotect picture. Picture number is specified by XX. YY: 0x00 unprotect picture YY: 0x0 protect picture The return byte ZZ is checksum. REPORT PICTURE ATTRIBUTE ======================== 05 'DY' 02 XX 06 ----------------------- 06 YY ZZ Comment: Get information(protected or not, normal(480x240) or fine(640x480)) about a picture. Picture number is specified by XX. YY: checksum ZZ: picture attribute. protect, resolution, value of ZZ off 480x240 0x00 on 480x240 0x01 off 640x480 0x02 on 640x480 0x03 CHANGE IMAGE TRANSFER BLOCK SIZE ================================ 05 'PP' XX YY 06 ----------------------- 06 ZZ Comment: Change block size to XX YY. Block size(default 0x00 0x80) is specified by XX YY. XX: higher byte YY: lower byte ZZ: checksum SET DEFAULT PICTURE =================== 05 'DV' XX 06 --------------- 06 YY Comment: Set default picture shown on LCD when power on or reset. XX: Picture number YY: checksum HIDE PICTURE NUMBER =================== 05 'DM' XX 06 --------------- 06 YY Comment: Hide picture number shown on LCD. XX: Picture number YY: checksum REPORT HARDWARE REVISION ========================= 05 'SU' 06 ------------------------ 06 XX YY ZZ WW VV Comment: Get hardware revison number. XX: checksum YY: model ID1 ZZ: model ID2 WW: revision num1 VV: revision num2 sample model YYZZWWVV QV10 0x00531719 QV10 0x00538b8f QV10A 0x00800003 QV70 0x00835321 QV100 0x0103ba90 QV300 0x01048dc0 QV700 0x01a0e081 QV770 0x01a10000 ----- =========================== NEW COMMANDS FOR QV-700/770 =========================== Those commands are works on QV-700/770 only. ENABLE NEW COMMANDS FOR QV-700/770? =================================== 05 'NP' 01 06 ------------------ 06 60 Comment: Enable new commands. The return byte 60 is checksum. GET PICTURE DATA IN JPEG FORMAT =================================== 05 'DA' XX 06 05 'DL' 06 05 'EM' 06 ------------------------------------------------- 06 YY 06 6f 06 6d ZZ ZZ ZZ ZZ 05 'EG' 06 12 06 ------------------------------------------------- 06 73 [Picture Data] [Picture Data] 06 06 06 -----------------------------......---------------- [Picture Data] [Picture Data] 02 00 00 03 FC Comment: XX is the picture number. The return byte YY is checksum. (0x7a - XX). Return byte 6f is checksum. Return byte 6d is checksum. Return byte 73 is checksum. Return bytes ZZ ZZ ZZ ZZ are picture data size. 02 00 00 03 FC should be end marker. FORMAT OF [Picture Data] ======================== 02 WW WW JJ JJ JJ JJ JJ ........ 17 SS Comment: WW WW: Data Block Size (2 bytes): (Normally 0x00 0x80, 128 bytes) The data preceeding the endmark(02 00 00 03 FC) is its block size(under 0x00 0x80). JJ: Picture data. (JFIF format) SS: Check sum. Reverse bits of all sum of second byte (after 0x02) of data block to before SS (0x17). GET PICTURE INFORMATION ======================= 05 'DA' XX 06 05 'DL' 06 ------------------------- 06 YY 06 6f 05 'CV' 06 12 06 ------------------------------------------------------------- 06 66 02 00 0b [11bytes data] 17 SS 02 00 00 03 FC Comment: XX is the picture number. The return byte YY is checksum. (0x7a - XX). Return byte 6f is checksum. Return byte 66 is checksum. SS: Check sum. Reverse bits of all sum of second byte (after 0x02) of data block to before SS (0x17). 11bytes data 1st byte Compression 01:economy 02:normal 03:fine 2nd byte unknown 00 3rd byte taked mode 01:one shot 02:continuous shot 07:panorama 08:movie 4th byte macro mode 01:normal 02:macro mode 5th byte unknown 01 6th byte unknown 0a,09,0c,0e,0b shutter speed? WB? 7th byte iris(meybe) 07:(F8) 03:(F2) 8th byte unknown 0d 9th byte unknown 04 10th byte unknown 0d 11th byte unknown 01 ----- ================ UNKNOWN COMMANDS ================ 'DI' 'DK' 'DQ' 'EB' 'Eb' remain memory size (in picture unit)(QV100 only)? 'MQ' 'Mq' picture bytesize (QV100 only)? 'cb' change baud rate (QV-700/770 only)? 'CX' 'CF' 'EC' 'DY' 'FT' 'CZ' 'ES' 'BC' battery check ? (QV-700/770 only) 'MW' write JPEG format data to QV-700/770 ============== SPECIAL THANKS ============== Itojun-san, Brahma-san, Goto-san, Mario-san (Thanks for their research and report about the serial protocol) Dr. Sadun (Thanks for fixup of early version of this document which written in my poor English.) Kuwata-san (Thanks for the report about battery voltage.) libgphoto2-2.5.9/camlibs/casio/ChangeLog0000644000175000001440000000453112557123324015006 000000000000002005-07-22 Lutz Mueller Patch by Michael Haardt : * casio-qv.c: Fix capture function and name of captured picture. List all authors in about. Fix camera abilities. 2005-01-21 Marcus Meissner * casio-qv.c: marked up strings for translation. 2005-01-10 Michael Haardt * casio-qv.c: corrected preview type to PPM do not explictly append filename of captured image to filesystem reset line speed and power down interface on exit * casio-qv-commands.c: capture works now ping camera after changing line speed 2004-12-22 Hubert Figuiere * ycctoppm.c (QVycctoppm): C syntax cleanup 2004-05-03 Lutz Mueller * casio-qv.c * casio-qv-commands.[c,h]: New patch by Michael Haardt . Default speed now 115200. 2004-05-02 Lutz Mueller * casio-qv.c (and others): Patch that enables deletion of pictures. Provided by Michael Haardt. 2004-05-02 Lutz Mueller * ycctoppm.[c,h]: New files on request of Michael Haardt. * Makefile.am 2004-04-06 Lutz Mueller * cam2jpgtab.h: New. * casio-qv.c: According to Michael Haardt , the driver now downloads images. 2004-04-06 Lutz Mueller * camtojpeg.[c,h] * jpegtab_f.h: New file submitted by Michael Haardt . 2004-03-23 Lutz Mueller * casio-qv.c (camera_init): Patch by Michael Haardt . 2003-12-03 Hubert Figuiere * casio-qv.c (camera_init): hardcode speed to 9600 bauds 2003-09-05 Hubert Figuiere * PROTOCOL.txt: added protocol description 2003-01-08 Lutz Müller * casio-qv.c (camera_init): Cosmetic change. 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 2002-09-19 Lutz Müller * casio-qv.c (camera_init): Fix initialization. * casio-qv-commands.[c,h] (QVgetthumb): New. 2002-09-17 Lutz Müller * casio-qv-commands.[c,h] (QVsetspeed): New. 2002-09-16 Lutz Müller * casio-qv-commands.c (QVping): Fix. libgphoto2-2.5.9/camlibs/casio/casio-qv.c0000644000175000001440000002443612610415536015127 00000000000000/* casio-qv.c * * Copyright © 2001 Lutz Müller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include "casio-qv-commands.h" #include "camtojpeg.h" #include "ycctoppm.h" #define THUMBNAIL_WIDTH 52 #define THUMBNAIL_HEIGHT 36 #define CHECK_RESULT(result) {int r = (result); if (r < 0) return (r);} #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif static int get_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo *info, void *data, GPContext *context); int camera_id (CameraText *id) { strcpy (id->text, "Casio QV"); return (GP_OK); } static struct { const char *model; int public; unsigned long int revision; } models[] = { {"Casio:QV10", 1, 0x00538b8f}, {"Casio:QV10", 0, 0x00531719}, {"Casio:QV10A", 1, 0x00800003}, {"Casio:QV70", 1, 0x00835321}, {"Casio:QV100", 1, 0x0103ba90}, {"Casio:QV300", 1, 0x01048dc0}, {"Casio:QV700", 1, 0x01a0e081}, {"Casio:QV770", 1, 0x01a10000}, {NULL} }; int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].model; i++) { if (!models[i].public) continue; memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].model); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 57600; a.speed[4] = 115200; a.operations = GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CONFIG; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; CHECK_RESULT (gp_abilities_list_append (list, a)); } return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int n; unsigned char attr; unsigned char *data = NULL; long int size = 0; unsigned char *cam = NULL; long int camSize = 0; /* Get the number of the picture from the filesystem */ CHECK_RESULT (n = gp_filesystem_number (camera->fs, folder, filename, context)); /* Prepare the transaction */ CHECK_RESULT (QVpicattr (camera, n, &attr)); CHECK_RESULT (QVshowpic (camera, n)); CHECK_RESULT (QVsetpic (camera)); switch (type) { case GP_FILE_TYPE_RAW: CHECK_RESULT (QVgetCAMpic (camera, &data, (long unsigned *)&size, attr&2)); CHECK_RESULT (gp_file_set_mime_type(file, GP_MIME_RAW)); break; case GP_FILE_TYPE_PREVIEW: CHECK_RESULT (QVgetYCCpic (camera, &cam, (long unsigned *)&camSize)); CHECK_RESULT (QVycctoppm(cam, camSize, THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, 2, &data, &size)); free(cam); CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_PPM)); break; case GP_FILE_TYPE_NORMAL: CHECK_RESULT (QVgetCAMpic (camera, &cam, (long unsigned *)&camSize, attr&2)); CHECK_RESULT ((attr&2 ? QVfinecamtojpeg : QVcamtojpeg)(cam, camSize, &data, &size)); free(cam); CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_JPEG)); break; default: gp_context_error(context, _("Image type %d not supported"), type); return (GP_ERROR_NOT_SUPPORTED); } CHECK_RESULT (gp_file_set_data_and_size (file, (char*)data, size)); return (GP_OK); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int nr ; CameraFileInfo info; nr = gp_filesystem_number(fs, folder, filename, context); if (nr < 0) return nr; CHECK_RESULT (get_info_func(fs, folder, filename, &info, data, context)); if (info.file.permissions == GP_FILE_PERM_READ) { gp_context_error(context, _("Image %s is delete protected."), filename); return (GP_ERROR); } CHECK_RESULT (QVdelete (camera, nr)); return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Driver framework written by Lutz Mueller " ".\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI " " and Jun-ichiro \"itojun\" Itoh " ".\n" "Integration of QVplay by Michael Haardt .")); return (GP_OK); } static int camera_summary (Camera *camera, CameraText *about, GPContext *context) { float battery; long int revision; CHECK_RESULT (QVbattery (camera, &battery)); CHECK_RESULT (QVrevision (camera, &revision)); sprintf (about->text, _("Battery level: %.1f Volts. " "Revision: %08x."), battery, (int) revision); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { int num; Camera *camera = data; /* Fill the list */ CHECK_RESULT (num = QVnumpic (camera)); gp_list_populate (list, "CASIO_QV_%03i.jpg", num); return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo *info, void *data, GPContext *context) { int n, size_thumb, size_pic; unsigned char attr; Camera *camera = data; /* Get the picture number from the CameraFilesystem */ CHECK_RESULT (n = gp_filesystem_number (fs, folder, file, context)); /* Get some information */ size_thumb = size_pic = 0; info->file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE | GP_FILE_INFO_PERMISSIONS; info->preview.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE; strcpy (info->file.type, GP_MIME_JPEG); strcpy (info->preview.type, GP_MIME_PPM); info->file.size = size_pic; info->preview.size = size_thumb; CHECK_RESULT (QVpicattr (camera, n, &attr)); if (attr&1) info->file.permissions = GP_FILE_PERM_READ; else info->file.permissions = GP_FILE_PERM_ALL; return (GP_OK); } static int camera_config_get (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *child; float battery; char status[2]; char t[1024]; gp_widget_new (GP_WIDGET_WINDOW, _("Camera Configuration"), window); CHECK_RESULT (QVbattery (camera, &battery)); gp_widget_new (GP_WIDGET_TEXT, _("Battery"), &child); gp_widget_set_name (child, "battery"); snprintf(t,sizeof(t),"%.1f V",battery); gp_widget_set_value (child, t); gp_widget_append (*window, child); CHECK_RESULT (QVstatus (camera, status)); gp_widget_new (GP_WIDGET_RADIO, _("Brightness"), &child); gp_widget_set_name (child, "brightness"); gp_widget_add_choice (child, _("Too bright")); gp_widget_add_choice (child, _("Too dark")); gp_widget_add_choice (child, _("OK")); if (status[0]&0x80) strcpy (t, _("Too bright")); else if (status[0]&0x40) strcpy (t, _("Too dark")); else strcpy (t, _("OK")); gp_widget_set_value (child, t); gp_widget_append (*window, child); return (GP_OK); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { if (type != GP_CAPTURE_IMAGE) return (GP_ERROR_NOT_SUPPORTED); CHECK_RESULT (QVcapture (camera)); strcpy (path->folder, "/"); sprintf (path->name, "CASIO_QV_%03i.jpg", QVnumpic (camera)); CHECK_RESULT (gp_filesystem_append (camera->fs, "/", path->name, context)); return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { CHECK_RESULT (QVsetspeed (camera,9600)); CHECK_RESULT (QVreset (camera)); /* power down interface */ gp_port_set_pin (camera->port, GP_PIN_RTS, GP_LEVEL_LOW); gp_port_set_pin (camera->port, GP_PIN_DTR, GP_LEVEL_LOW); gp_port_set_pin (camera->port, GP_PIN_CTS, GP_LEVEL_LOW); sleep(1); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .del_file_func = delete_file_func }; int camera_init (Camera *camera, GPContext *context) { gp_port_settings settings; int selected_speed; /* First, set up all the function pointers */ camera->functions->get_config = camera_config_get; camera->functions->capture = camera_capture; camera->functions->summary = camera_summary; camera->functions->exit = camera_exit; camera->functions->about = camera_about; /* Now, tell the filesystem where to get lists and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); CHECK_RESULT (gp_port_get_settings (camera->port, &settings)); /* Taking pictures takes over 5 seconds, so use 7 seconds to be safe */ CHECK_RESULT (gp_port_set_timeout (camera->port, 7000)); selected_speed = settings.serial.speed; if (!selected_speed) selected_speed = 115200; /* Protocol always starts with 9600 */ settings.serial.speed = 9600; CHECK_RESULT (gp_port_set_settings (camera->port, settings)); /* Power up interface */ gp_port_set_pin (camera->port, GP_PIN_RTS, GP_LEVEL_HIGH); gp_port_set_pin (camera->port, GP_PIN_DTR, GP_LEVEL_LOW); gp_port_set_pin (camera->port, GP_PIN_CTS, GP_LEVEL_LOW); /* * There may be one junk character at this point, but QVping * takes care of that. */ CHECK_RESULT (QVping (camera)); CHECK_RESULT (QVsetspeed (camera,selected_speed)); return (GP_OK); } libgphoto2-2.5.9/camlibs/template/0000755000175000001440000000000012623156270014026 500000000000000libgphoto2-2.5.9/camlibs/template/template.c0000644000175000001440000003472212610415536015734 00000000000000/** \file template.c * \brief Documented source code template for a camera driver (camlib). * * \author Copyright 2001 Lutz Mueller * \author Copyright 2005 Hans Ulrich Niedermann * * \par * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * \section intro Introduction to camera drivers (camlibs) * * Every camlib must implement the following three function groups: * * - Camera object member functions * - CameraFilesystem object member functions * - camlib API functions * * We implement the camlib API functions last in this file because * camera_init() must reference all the object member functions and by * making camera_init() the last function in this file, we can avoid * the need for forward declarations of the object member functions. * * \section linknote Note about "static" functions and exporting symbols * * The build system uses libtool to explicitly specify the list of * exported symbols. Only the three functions of the camlib API * (camera_init(), camera_id(), and camera_abilities()) are exported. * * Therefore it doesn't matter whether you declare your other * functions static or not - regardless of whether they are object * member functions or internal camlib functions. * * We do not define the object member functions as static in this * template in order to have autogenerated documentation about them. * */ #include "config.h" #include #include #include #ifdef ENABLE_NLS # include # undef _ /** * This define is the string translation macro used in * libgphoto2. It will resolve to a dcgettext() function call and * does both the translation itself and also marks up the string * for the collector (xgettext). */ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop /** * This is the noop translation macro, which does not translate the * string, but marks it up for the extraction of translatable strings. */ # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif /**********************************************************************/ /** * @name Camera object member functions * * The prototypes for these functions are defined in gphoto2-camera.h * * @{ */ /**********************************************************************/ /** * Finish up the camera communication and free * private data. You do not need to close the port. * * This function is a method of the Camera object. */ int camera_exit (Camera *camera, GPContext *context); int camera_exit (Camera *camera, GPContext *context) { return GP_OK; } /** * Get the full configuration tree of the camera. * * This function is a method of the Camera object. */ int camera_config_get (Camera *camera, CameraWidget **window, GPContext *context); int camera_config_get (Camera *camera, CameraWidget **window, GPContext *context) { gp_widget_new (GP_WIDGET_WINDOW, "Camera Configuration", window); /* Append your sections and widgets here. */ return GP_OK; } /** * Set parts of the configuration tree. Note that you get * back the whole tree, but should only set the modified * values. * * This function is a method of the Camera object. */ int camera_config_set (Camera *camera, CameraWidget *window, GPContext *context); int camera_config_set (Camera *camera, CameraWidget *window, GPContext *context) { /* * Check if the widgets' values have changed. If yes, tell the camera. */ return GP_OK; } /** * Capture a preview and return the data in the given file (again, * use gp_file_set_data_and_size, gp_file_set_mime_type, etc.). * libgphoto2 assumes that previews are NOT stored on the camera's * disk. If your camera does, please delete it from the camera. * * This function is a method of the Camera object. */ int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context); int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { return GP_OK; } /** * Capture an image and tell libgphoto2 where to find it by filling * out the path. * * This function is a method of the Camera object. */ int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context); int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { return GP_OK; } /** * Fill out the summary with textual information about the current * state of the camera (like pictures taken, etc.). * * This function is a method of the Camera object. */ int camera_summary (Camera *camera, CameraText *summary, GPContext *context); int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { return GP_OK; } /** * Return the camera drivers manual. * If you would like to tell the user some information about how * to use the camera or the driver, this is the place to do. * * This function is a method of the Camera object. */ int camera_manual (Camera *camera, CameraText *manual, GPContext *context); int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { return GP_OK; } /** * Return "About" content as textual description. * Will be translated. * * This function is a method of the Camera object. */ int camera_about (Camera *camera, CameraText *about, GPContext *context); int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Library Name\n" "YOUR NAME \n" "Quick description of the library.\n" "No more than 5 lines if possible.")); return GP_OK; } /*@}*/ /**********************************************************************/ /** * @name CameraFilesystem member functions * * @{ */ /**********************************************************************/ /** * Get the file from the camera. * * This function is a CameraFilesystem method. */ int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context); int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { /*Camera *camera = data;*/ /* * Get the file from the camera. Use gp_file_set_mime_type, * gp_file_set_data_and_size, etc. */ return GP_OK; } /** * Put a file onto the camera. * * This function is a CameraFilesystem method. */ int put_file_func (CameraFilesystem *fs, const char *folder, const char *name, CameraFileType type, CameraFile *file, void *data, GPContext *context); int put_file_func (CameraFilesystem *fs, const char *folder, const char *name, CameraFileType type, CameraFile *file, void *data, GPContext *context) { /*Camera *camera = data;*/ /* * Upload the file to the camera. Use gp_file_get_data_and_size, etc */ return GP_OK; } /** * Delete a file from the camera. * * This function is a CameraFilesystem method. */ int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context); int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { /*Camera *camera = data;*/ /* Delete the file from the camera. */ return GP_OK; } /** * Delete all files from the camera. * * This function is a CameraFilesystem method. */ int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context); int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { /*Camera *camera = data;*/ /* * Delete all files in the given folder. If your camera doesn't have * such a functionality, just don't implement this function. */ return GP_OK; } /** * Get the file info here and write it to space provided by caller. * * \param info Space provided by caller in which file info is written. * * This function is a CameraFilesystem method. */ int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context); int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { /*Camera *camera = data;*/ return GP_OK; } /** * FIXME. * * This function is a CameraFilesystem method. */ int set_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo info, void *data, GPContext *context); int set_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo info, void *data, GPContext *context) { /*Camera *camera = data;*/ /* Set the file info here from */ return GP_OK; } /** * List available folders in the specified folder. * * This function is a CameraFilesystem method. */ int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context); int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { /*Camera *camera = data;*/ /* List your folders here */ return GP_OK; } /** * List available files in the specified folder. * * This function is a CameraFilesystem method. */ int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context); int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { /*Camera *camera = data;*/ /* List your files here */ return GP_OK; } /** * Get information on all available storages in the camera. * * This function is a CameraFilesystem method. */ int storage_info_func (CameraFilesystem *fs, CameraStorageInformation **storageinformations, int *nrofstorageinformations, void *data, GPContext *context); int storage_info_func (CameraFilesystem *fs, CameraStorageInformation **storageinformations, int *nrofstorageinformations, void *data, GPContext *context) { /*Camera *camera = data;*/ /* List your storages here */ return GP_ERROR_NOT_SUPPORTED; } /*@}*/ /**********************************************************************/ /** * @name camlib API functions * * @{ */ /**********************************************************************/ /** * Set library ID string. * * Probably redundant and to be removed shortly, being replaced * by the libtool module name defined in the build system. * * This is a camlib API function. */ int camera_id (CameraText *id) { strcpy(id->text, "REPLACE WITH UNIQUE LIBRARY ID"); return GP_OK; } /** * Fill list with abilities of the cameras supported by this camlib. * * For each camera, fill a CameraAbilities structure with data about * that camera and append it to the list. * * The job of this function is basically to extract data from a * camlib specific database and insert it into the libgphoto2 camera * database. Due to redundant data and other issues, we may decide to * revise that database mechanism and replace it by something more * flexible and efficient. * * This is a camlib API function. */ int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); strcpy(a.model, "CAMERA VENDOR:CAMERA MODEL"); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL | GP_PORT_USB; a.speed[0] = 0; a.operations = GP_OPERATION_CAPTURE_PREVIEW | GP_CAPTURE_IMAGE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; gp_abilities_list_append(list, a); return GP_OK; } /** * All filesystem accessor functions. * * This should contain all filesystem accessor functions * available in the camera library. Non-present fields * are NULL. * */ CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .get_info_func = get_info_func, .set_info_func = set_info_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .put_file_func = put_file_func, .delete_all_func = delete_all_func, .storage_info_func = storage_info_func }; /** * Initialize a Camera object. * * Sets up all the proper object function pointers, initialize camlib * internal data structures, and probably establish a connection to * the camera. * * This is a camlib API function. */ int camera_init (Camera *camera, GPContext *context) { /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->get_config = camera_config_get; camera->functions->set_config = camera_config_set; camera->functions->capture = camera_capture; camera->functions->capture_preview = camera_capture_preview; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; /* Now, tell the filesystem where to get lists, files and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* * The port is already provided with camera->port (and * already open). You just have to use functions like * gp_port_timeout_set, gp_port_settings_get, gp_port_settings_set. */ /* * Once you have configured the port, you should check if a * connection to the camera can be established. */ return GP_OK; } /*@}*/ /********************************************************************* * End of camlib template. *********************************************************************/ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/template/Makefile-files0000644000175000001440000000153612561423352016512 00000000000000# If you use this as template for a real camlib (say 'foobar.la'), # make sure to change the "noinst_" at the beginning of the following # lines: # * "noinst_DATA" into "camlibdoc_DATA" # * "noinst_LTLIBRARIES" into "EXTRA_LTLIBRARIES" # # Additionally, you must add add an include line to the Makefile-files # of the new camlib to camlibs/Makefile.am: # * "include my-new-camlib/Makefile-files" # # And as the last step, you need to add it to configure.ac: # * GP_CAMLIB([foobar])dnl EXTRA_DIST += template/README.template template/ChangeLog noinst_DATA += template/README.template noinst_LTLIBRARIES += template.la template_la_SOURCES = template/template.c template_la_CFLAGS = $(AM_CFLAGS) $(NO_UNUSED_CFLAGS) $(CFLAGS) template_la_LDFLAGS = $(camlib_ldflags) template_la_DEPENDENCIES = $(camlib_dependencies) template_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/template/README.template0000644000175000001440000000005112561423352016433 00000000000000This is a template for a camera library. libgphoto2-2.5.9/camlibs/template/ChangeLog0000644000175000001440000000014112557123324015514 000000000000002005-12-25 Hubert Figuiere * template.c: cleanup and some warning fixed. libgphoto2-2.5.9/camlibs/digita/0000755000175000001440000000000012623156267013462 500000000000000libgphoto2-2.5.9/camlibs/digita/digita.c0000644000175000001440000002666012610415530015004 00000000000000/* * digita.c * * Copyright 1999-2001 Johannes Erdfelt * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #ifdef HAVE_LIMITS_H #include #endif #ifdef OS2 #include #endif #define GP_MODULE "digita" #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "gphoto2-endian.h" #include "digita.h" #ifndef MAX # define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif static const struct { char *model; int usb_vendor; int usb_product; } models[] = { {"Kodak:DC220", 0x040A, 0x0100 }, {"Kodak:DC260", 0x040A, 0x0110 }, {"Kodak:DC265", 0x040A, 0x0111 }, {"Kodak:DC290", 0x040A, 0x0112 }, {"HP:PhotoSmart C500", 0x03F0, 0x4102 }, {"HP:PhotoSmart 618", 0x03F0, 0x4102 }, {"HP:PhotoSmart 912", 0x03F0, 0x4102 }, {"HP:PhotoSmart C500 2",0xf003, 0x6002 }, }; int camera_abilities(CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; i < sizeof(models) / sizeof(models[0]); i++) { memset(&a, 0, sizeof(a)); strcpy(a.model, models[i].model); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL | GP_PORT_USB; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 57600; a.speed[4] = 115200; a.speed[5] = 0; a.operations = GP_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_DELETE; a.usb_vendor = models[i].usb_vendor; a.usb_product = models[i].usb_product; gp_abilities_list_append(list, a); } return GP_OK; } int camera_id(CameraText *id) { strcpy(id->text, "digita"); return GP_OK; } static int camera_exit(Camera *camera, GPContext *context) { if (camera->pl) { free(camera->pl); camera->pl = NULL; } return GP_OK; } static int folder_list_func(CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i, i1; if (digita_get_file_list(camera->pl) < 0) return GP_ERROR; if (folder[0] == '/') folder++; /* Walk through all of the pictures building a list of folders */ for (i = 0; i < camera->pl->num_pictures; i++) { int found; char *path,*newfolder; /* Check to make sure the path matches the folder we're */ /* looking through */ if (strlen(folder) && strncmp(camera->pl->file_list[i].fn.path, folder, strlen(folder))) continue; /* If it's not the root, then we skip the / as well */ if (strlen(folder)) path = camera->pl->file_list[i].fn.path + strlen(folder) + 1; else path = camera->pl->file_list[i].fn.path; if (!strlen(path)) continue; if (strchr(path, '/') != path + strlen(path) - 1) continue; newfolder = strdup(path); *strchr(newfolder,'/') = 0; found = 0; for (i1 = 0; i1 < gp_list_count(list); i1++) { const char *name; gp_list_get_name(list, i1, &name); if (!strcmp(name, newfolder)) { found = 1; break; } } if (!found) gp_list_append(list, newfolder, NULL); free (newfolder); } return GP_OK; } static int file_list_func(CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i; /* We should probably check to see if we have a list already and */ /* get the changes since */ if (digita_get_file_list(camera->pl) < 0) return GP_ERROR; if (folder[0] == '/') folder++; /* Walk through all of the pictures building a list of folders */ for (i = 0; i < camera->pl->num_pictures; i++) { if (strncmp(camera->pl->file_list[i].fn.path, folder, strlen(folder)) || camera->pl->file_list[i].fn.path[strlen(folder)] != '/') continue; gp_list_append(list, camera->pl->file_list[i].fn.dosname, NULL); } return GP_OK; } #define GFD_BUFSIZE 19432 static unsigned char *digita_file_get(Camera *camera, const char *folder, const char *filename, int thumbnail, int *size, GPContext *context) { struct filename fn; struct partial_tag tag; unsigned char *data; int pos, len, buflen; unsigned int id; GP_DEBUG ("Getting %s from folder %s...", filename, folder); /* Setup the filename */ /* FIXME: This is kinda lame, but it's a quick hack */ fn.driveno = camera->pl->file_list[0].fn.driveno; strcpy(fn.path, folder); strcat(fn.path, "/"); strcpy(fn.dosname, filename); /* How much data we're willing to accept */ tag.offset = htobe32(0); tag.length = htobe32(GFD_BUFSIZE); tag.filesize = htobe32(0); buflen = GFD_BUFSIZE; data = malloc(buflen); if (!data) { GP_DEBUG( "digita_file_get: allocating memory"); return NULL; } memset(data, 0, buflen); if (digita_get_file_data(camera->pl, thumbnail, &fn, &tag, data) < 0) { GP_DEBUG( "digita_get_picture: digita_get_file_data failed"); free (data); return NULL; } buflen = be32toh(tag.filesize); if (thumbnail) buflen += 16; data = realloc(data, buflen); if (!data) { GP_DEBUG( "digita_file_get: couldn't reallocate memory"); return NULL; } len = be32toh(tag.filesize); pos = be32toh(tag.length); id = gp_context_progress_start (context, len, _("Getting file...")); while (pos < len) { gp_context_progress_update (context, id, pos); tag.offset = htobe32(pos); if ((len - pos) > GFD_BUFSIZE) tag.length = htobe32(GFD_BUFSIZE); else tag.length = htobe32(len - pos); if (digita_get_file_data(camera->pl, thumbnail, &fn, &tag, data + pos) < 0) { GP_DEBUG ("digita_get_file_data failed."); free (data); return NULL; } pos += be32toh(tag.length); } gp_context_progress_stop (context, id); *size = buflen; return data; } /* Colorspace conversion is voodoo-magic to me --jerdfelt */ static void decode_ycc422(unsigned char *input, int width, int height, unsigned char *output) { int x, y; for (y = 0; y < height; y++) { for (x = 0; x < width / 2; x++) { int _y, u, y1, v, r, g, b; #define LIMIT(_x) ((((_x)>0xffffff)?0xff0000:(((_x)<=0xffff)?0:(_x)&0xff0000))>>16) u = *input++ - 128; _y = *input++ - 16; v = *input++ - 128; y1 = *input++ - 16; r = 104635 * v; g = -25690 * u + -53294 * v; b = 132278 * u; _y *= 76310; y1 *= 76310; *output++ = LIMIT(r + _y); *output++ = LIMIT(g + _y); *output++ = LIMIT(b + _y); *output++ = LIMIT(r + y1); *output++ = LIMIT(g + y1); *output++ = LIMIT(b + y1); } } } static int get_file_func(CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data; unsigned int width, height; char ppmhead[64]; int buflen; if (folder[0] == '/') folder++; switch (type) { case GP_FILE_TYPE_NORMAL: GP_DEBUG("digita/get_file_func: Getting picture"); data = digita_file_get(camera, folder, filename, 0, &buflen, context); break; case GP_FILE_TYPE_PREVIEW: GP_DEBUG("digita/get_file_func: Getting thumbnail"); data = digita_file_get(camera, folder, filename, 1, &buflen, context); break; default: gp_context_error(context, _("Image type is not supported")); return GP_ERROR_NOT_SUPPORTED; } if (!data) return GP_ERROR; switch (type) { case GP_FILE_TYPE_NORMAL: gp_file_set_data_and_size(file, (char*)data, buflen); gp_file_set_mime_type(file, GP_MIME_JPEG); break; case GP_FILE_TYPE_PREVIEW: { char *ppm; memcpy((void *)&height, data + 4, 4); height = be32toh(height); memcpy((void *)&width, data + 8, 4); width = be32toh(width); GP_DEBUG( "picture size %dx%d", width, height); GP_DEBUG( "data size %d", buflen - 16); sprintf(ppmhead, "P6\n" "# CREATOR: gphoto2, digita library\n" "%i %i\n" "255\n", width, height); ppm = malloc(strlen(ppmhead) + (width * height * 3)); if (!ppm) return -1; strcpy(ppm, ppmhead); decode_ycc422(data + 16, width, height, (unsigned char*)(ppm + strlen(ppmhead))); free(data); gp_file_set_mime_type(file, GP_MIME_PPM); gp_file_set_data_and_size(file, ppm, strlen(ppmhead) + (width * height * 3)); break; } default: return GP_ERROR_NOT_SUPPORTED; } return GP_OK; } static int camera_summary(Camera *camera, CameraText *summary, GPContext *context) { int taken; if (digita_get_storage_status(camera->pl, &taken, NULL, NULL) < 0) return 0; sprintf(summary->text, _("Number of pictures: %d"), taken); return GP_OK; } static int camera_about(Camera *camera, CameraText *about, GPContext *context) { strcpy(about->text, _("Digita\n" \ "Johannes Erdfelt ")); return GP_OK; } static int digita_file_delete(Camera *camera, const char *folder, const char *filename, GPContext *context) { struct filename fn; /* Setup the filename */ /* FIXME: This is kinda lame, but it's a quick hack */ fn.driveno = camera->pl->file_list[0].fn.driveno; strcpy(fn.path, folder); strcat(fn.path, "/"); strcpy(fn.dosname, filename); if (digita_delete_picture(camera->pl, &fn) < 0) return 0; if (digita_get_file_list(camera->pl) < 0) return 0; return GP_OK; } static int delete_file_func(CameraFilesystem *fs, const char *folder, const char *filename, void *user_data, GPContext *context) { Camera *camera = user_data; if (folder[0] == '/') folder++; return digita_file_delete(camera, folder, filename, context); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func }; int camera_init(Camera *camera, GPContext *context) { int ret = 0; if (!camera) return GP_ERROR; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->about = camera_about; /* Set up the CameraFilesystem */ gp_filesystem_set_funcs(camera->fs, &fsfuncs, camera); GP_DEBUG( "Initializing the camera"); camera->pl = malloc(sizeof(CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; memset(camera->pl, 0, sizeof(CameraPrivateLibrary)); camera->pl->gpdev = camera->port; switch (camera->port->type) { case GP_PORT_USB: ret = digita_usb_open(camera->pl, camera); break; case GP_PORT_SERIAL: ret = digita_serial_open(camera->pl, camera); break; default: free(camera->pl); camera->pl = NULL; return GP_ERROR_UNKNOWN_PORT; } if (ret < 0) { GP_DEBUG( "camera_init: couldn't open digita device"); free(camera->pl); camera->pl = NULL; return ret; } return GP_OK; } libgphoto2-2.5.9/camlibs/digita/commands.c0000644000175000001440000001257012610415530015337 00000000000000/* * commands.c * * Command set for the digita cameras * * Copyright 1999-2001 Johannes Erdfelt * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #ifdef OS2 #include #endif #include "digita.h" #include "gphoto2-endian.h" #define GP_MODULE "digita" #include static void build_command(struct digita_command *cmd, int length, short command) { memset(cmd, 0, sizeof(*cmd)); /* Length is the sizeof the digita_command minus the length */ /* parameter, plus whatever other data we send */ cmd->length = htobe32(sizeof(struct digita_command) - sizeof(unsigned int) + length); cmd->command = htobe16(command); } struct storage_status { struct digita_command cmd; unsigned int takencount; unsigned int availablecount; int rawcount; }; int digita_get_storage_status(CameraPrivateLibrary *dev, int *taken, int *available, int *rawcount) { struct digita_command cmd; struct storage_status ss; int ret; build_command(&cmd, 0, DIGITA_GET_STORAGE_STATUS); ret = dev->send(dev, &cmd, sizeof(cmd)); if (ret < 0) { GP_DEBUG("digita_get_storage_status: error sending command (ret = %d)", ret); return -1; } ret = dev->read(dev, (unsigned char *)&ss, sizeof(ss)); if (ret < 0) { GP_DEBUG("digita_get_storage_status: error getting count (ret = %d)", ret); return -1; } if (taken) *taken = be32toh(ss.takencount); if (available) *available = be32toh(ss.availablecount); if (rawcount) *rawcount = be32toh(ss.rawcount); return 0; } int digita_get_file_list(CameraPrivateLibrary *dev) { struct digita_command cmd; struct get_file_list gfl; char *buffer; int ret, taken, buflen; int err; if (digita_get_storage_status(dev, &taken, NULL, NULL) < 0) return -1; dev->num_pictures = taken; buflen = (taken * sizeof(struct file_item)) + sizeof(cmd) + 4; buffer = malloc(buflen); if (!buffer) { GP_DEBUG("digita_get_file_list: error allocating %d bytes", buflen); return -1; } build_command(&gfl.cmd, sizeof(gfl) - sizeof(gfl.cmd), DIGITA_GET_FILE_LIST); gfl.listorder = htobe32(1); ret = dev->send(dev, (void *)&gfl, sizeof(gfl)); if (ret < 0) { GP_DEBUG("digita_get_file_list: error sending command (ret = %d)", ret); err = -1; goto end; } ret = dev->read(dev, (void *)buffer, buflen); if (ret < 0) { GP_DEBUG("digita_get_file_list: error receiving data (ret = %d)", ret); err = -1; goto end; } if (dev->file_list) free(dev->file_list); dev->file_list = malloc(taken * sizeof(struct file_item)); if (!dev->file_list) { GP_DEBUG("digita_get_file_list: error allocating file_list memory (ret = %d)", ret); err = -1; goto end; } memcpy(dev->file_list, buffer + sizeof(cmd) + 4, taken * sizeof(struct file_item)); err = 0; end: free(buffer); return err; } #define GFD_BUFSIZE 19432 int digita_get_file_data(CameraPrivateLibrary *dev, int thumbnail, struct filename *filename, struct partial_tag *tag, void *buffer) { struct get_file_data_send gfds; struct get_file_data_receive *gfdr; int ret; char *tbuf; build_command(&gfds.cmd, sizeof(gfds) - sizeof(gfds.cmd), DIGITA_GET_FILE_DATA); memcpy(&gfds.fn, filename, sizeof(gfds.fn)); memcpy(&gfds.tag, tag, sizeof(gfds.tag)); gfds.dataselector = htobe32(thumbnail); tbuf = malloc(GFD_BUFSIZE + sizeof(*gfdr)); if (!tbuf) { GP_DEBUG("digita_get_file_data: unable to allocate %ud bytes", (unsigned int)(GFD_BUFSIZE + sizeof(*gfdr))); return -1; } gfdr = (struct get_file_data_receive *)tbuf; ret = dev->send(dev, &gfds, sizeof(gfds)); if (ret < 0) { GP_DEBUG("digita_get_file_data: error sending command (ret = %d)", ret); free(tbuf); return -1; } ret = dev->read(dev, gfdr, GFD_BUFSIZE + sizeof(*gfdr)); if (ret < 0) { GP_DEBUG("digita_get_file_data: error reading data (ret = %d)", ret); return -1; } if (gfdr->cmd.result) { GP_DEBUG("digita_get_file_data: bad result (%d)", gfdr->cmd.result); return gfdr->cmd.result; } memcpy(buffer, tbuf + sizeof(*gfdr), be32toh(gfdr->tag.length) + (thumbnail ? 16 : 0)); memcpy(tag, &gfdr->tag, sizeof(*tag)); free(tbuf); return 0; } int digita_delete_picture(CameraPrivateLibrary *dev, struct filename *filename) { struct erase_file ef; struct digita_command response; int ret; build_command(&ef.cmd, sizeof(ef.fn), DIGITA_ERASE_FILE); memcpy(&ef.fn, filename, sizeof(ef.fn)); ef.zero = 0; ret = dev->send(dev, (unsigned char *)&ef, sizeof(ef)); if (ret < 0) { GP_DEBUG("error sending command (ret = %d)", ret); return -1; } ret = dev->read(dev, (unsigned char *)&response, sizeof(response)); if (ret < 0) { GP_DEBUG("error reading reply (ret = %d)", ret); return -1; } return 0; } libgphoto2-2.5.9/camlibs/digita/digita.h0000644000175000001440000001050112610415530014774 00000000000000/* * digita.h * * Copyright 1999-2001 Johannes Erdfelt * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef DIGITA_H #define DIGITA_H #include #include #include #define DIGITA_GET_PRODUCT_INFO 0x01 #define DIGITA_GET_IMAGE_SPECS 0x02 #define DIGITA_GET_CAMERA_STATUS 0x03 #define DIGITA_SET_PRODUCT_INFO 0x05 #define DIGITA_GET_CAMERA_CAPABILITIES 0x10 #define DIGITA_GET_CAMERA_STATE 0x11 #define DIGITA_SET_CAMERA_STATE 0x12 #define DIGITA_GET_CAMERA_DEFAULTS 0x13 #define DIGITA_SET_CAMERA_DEFAULTS 0x14 #define DIGITA_RESTORE_CAMERA_STATES 0x15 #define DIGITA_GET_SCENE_ANALYSIS 0x18 #define DIGITA_GET_POWER_MODE 0x19 #define DIGITA_SET_POWER_MODE 0x1A #define DIGITA_GET_S1_MODE 0x1D #define DIGITA_SET_S1_MODE 0x1E #define DIGITA_START_CAPTURE 0x1F #define DIGITA_GET_FILE_LIST 0x40 #define DIGITA_GET_NEW_FILE_LIST 0x41 #define DIGITA_GET_FILE_DATA 0x42 #define DIGITA_ERASE_FILE 0x43 #define DIGITA_GET_STORAGE_STATUS 0x44 #define DIGITA_SET_FILE_DATA 0x47 #define DIGITA_GET_FILE_TAG 0x48 #define DIGITA_SET_USER_FILE_TAG 0x49 #define DIGITA_GET_CLOCK 0x70 #define DIGITA_SET_CLOCK 0x71 #define DIGITA_GET_ERROR 0x78 #define DIGITA_GET_INTERFACE_TIMEOUT 0x90 #define DIGITA_SET_INTERFACE_TIMEOUT 0x91 /* Digita protocol primitives */ struct digita_command { unsigned int length; unsigned char version; unsigned char reserved[3]; unsigned short command; unsigned short result; }; struct partial_tag { unsigned int offset; unsigned int length; unsigned int filesize; }; struct filename { unsigned int driveno; char path[32]; char dosname[16]; }; struct file_item { struct filename fn; int length; unsigned int filestatus; }; /* Digita protocol commands */ /* DIGITA_GET_FILE_DATA */ /* * sent - digita_command * get_file_data_send */ /* * received - get_file_data_receive * data */ struct get_file_data_send { struct digita_command cmd; struct filename fn; unsigned int dataselector; struct partial_tag tag; }; struct get_file_data_receive { struct digita_command cmd; struct partial_tag tag; }; /* DIGITA_GET_FILE_LIST */ /* sent - get_file_list */ /* * received - digita_command * data */ struct get_file_list { struct digita_command cmd; unsigned int listorder; }; /* DIGITA_ERASE_FILE */ /* sent - erase_file */ /* received - nothing */ struct erase_file { struct digita_command cmd; struct filename fn; unsigned int zero; }; /* gphoto2 header magic. this is also CameraPrivateLibrary */ struct _CameraPrivateLibrary { GPPort *gpdev; int num_pictures; struct file_item *file_list; /* These parameters are only significant for serial support */ int portspeed; int deviceframesize; int (*send)(CameraPrivateLibrary *dev, void *buffer, int buflen); int (*read)(CameraPrivateLibrary *dev, void *buffer, int buflen); }; /* commands.c */ int digita_get_storage_status(CameraPrivateLibrary *dev, int *taken, int *available, int *rawcount); int digita_get_file_list(CameraPrivateLibrary *dev); int digita_get_file_data(CameraPrivateLibrary *dev, int thumbnail, struct filename *filename, struct partial_tag *tag, void *buffer); int digita_delete_picture(CameraPrivateLibrary *dev, struct filename *filename); /* serial.c */ int digita_serial_open(CameraPrivateLibrary *dev, Camera *camera); /* usb.c */ int digita_usb_open(CameraPrivateLibrary *dev, Camera *camera); #endif libgphoto2-2.5.9/camlibs/digita/Makefile-files0000644000175000001440000000045312561423351016134 00000000000000EXTRA_LTLIBRARIES += digita.la EXTRA_DIST += digita/ChangeLog digita_la_SOURCES = \ digita/digita.c \ digita/serial.c \ digita/usb.c \ digita/commands.c \ digita/digita.h digita_la_LDFLAGS = $(camlib_ldflags) digita_la_DEPENDENCIES = $(camlib_dependencies) digita_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/digita/ChangeLog0000644000175000001440000000016612557123324015151 000000000000002002-01-15 Lutz Müller * digita.c: Replace gp_camera_progress by gp_context_progress_*. libgphoto2-2.5.9/camlibs/digita/usb.c0000644000175000001440000000362612610415536014337 00000000000000/* * usb.c * * USB digita support * * Copyright 1999-2001 Johannes Erdfelt * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include "digita.h" static int digita_usb_read(CameraPrivateLibrary *dev, void *buffer, int len) { return gp_port_read(dev->gpdev, buffer, len); } static int digita_usb_send(CameraPrivateLibrary *dev, void *buffer, int len) { return gp_port_write(dev->gpdev, buffer, len); } int digita_usb_open(CameraPrivateLibrary *dev, Camera *camera) { GPPortSettings settings; char buffer[128]; int ret; ret = gp_port_get_settings(camera->port, &settings); if (ret < 0) return ret; /* We'll take the defaults. The core should have the done what's */ /* necessary to find the config, interface, altsetting and endpoints */ ret = gp_port_set_settings(dev->gpdev, settings); if (ret < 0) return ret; dev->send = digita_usb_send; dev->read = digita_usb_read; gp_port_set_timeout(camera->port, 100); /* Mop up anything still pending */ while (gp_port_read(dev->gpdev, buffer, sizeof(buffer)) > 0) ; gp_port_set_timeout(camera->port, 10000); return GP_OK; } libgphoto2-2.5.9/camlibs/digita/serial.c0000644000175000001440000001725312610415530015020 00000000000000/* * serial.c * * Serial digita support * * Copyright 1999-2001 Johannes Erdfelt * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #ifdef OS2 #include #endif #include "gphoto2-endian.h" #include "digita.h" #define GP_MODULE "digita" #include #define MAX_BEACON_RETRIES 5 #define MAX_BEACON_TIMEOUTS 2 /* * u8 0xA5 * u8 0x5A * u16 vendorid * u16 deviceid * u8 checksum */ #define BEACON_LEN 7 /* * u8 0x5A * u8 0xA5 * u8 0x55 (iftype) * u8 commflag * u4 reserved * u2 pod_receive_mode * u2 host_receive_mode * u32 dataspeed * u16 deviceframesize * u16 hostframesize * u8 checksum */ #define BEACON_ACK_LENGTH 13 /* * s8 result * u8 commflag * u4 reserved * u2 pod_receive_mode * u2 host_receive_mode * u32 dataspeed * u16 deviceframesize * u16 hostframesize */ #define BEACON_COMP_LENGTH 10 #define POLL_LENGTH_MASK 0x03FF #define POLL_BOB 0x0400 #define POLL_EOB 0x0800 #define POLL_CMD 0x1000 #define POLL_POLL_MASK 0xE000 #define POLL_POLL (1 << 13) #define POLL_ACK 0x01 #define POLL_NAK 0x02 static unsigned int checksum(const unsigned char *buffer, int len) { int i; int limit = len - 1; unsigned int sum = 0; for (i = 0; i < limit; i++) sum += *(buffer++); return sum & 0xff; } static int poll_and_wait(gp_port *dev, int length, int bob, int eob) { unsigned short s, poll, poll_reply; poll = POLL_POLL | POLL_CMD | (length & POLL_LENGTH_MASK) | (bob ? POLL_BOB : 0) | (eob ? POLL_EOB : 0); do { s = htobe16(poll); if (gp_port_write(dev, (void *)&s, sizeof(s)) < 0) return -1; if (gp_port_read(dev, (void *)&s, sizeof(s)) < 0) return -1; poll_reply = be16toh(s); } while (poll_reply & POLL_NAK); return 0; } static int digita_serial_send(CameraPrivateLibrary *dev, void *_buffer, int len) { char *buffer = _buffer; unsigned short s; int sent = 0, size; while (sent < len) { if ((len - sent) > dev->deviceframesize) size = dev->deviceframesize; else size = len - sent; if (poll_and_wait(dev->gpdev, size, sent == 0, (size + sent) == len) < 0) return -1; if (gp_port_write(dev->gpdev, buffer + sent, size) < 0) return -1; sent += size; } s = 0; if (gp_port_write(dev->gpdev, (void *)&s, sizeof(s)) < 0) return -1; return len; } static int poll_and_reply(gp_port *dev, int *length, int *eob, int nak) { unsigned short s, poll; if (gp_port_read(dev, (void *)&s, sizeof(s)) < 0) return -1; poll = be16toh(s); if (length) *length = poll & POLL_LENGTH_MASK; if (eob) *eob = poll & POLL_EOB; s = htobe16(nak ? POLL_NAK : POLL_ACK); if (gp_port_write(dev, (void *)&s, sizeof(s)) < 0) return -1; return 0; } static int digita_serial_read(CameraPrivateLibrary *dev, void *_buffer, int len) { char *buffer = _buffer; unsigned short s; int received = 0, size, eob; while (received < len) { if (poll_and_reply(dev->gpdev, &size, &eob, 0) < 0) return -1; if (gp_port_read(dev->gpdev, buffer + received, size) < 0) return -1; received += size; if (eob) break; } if (gp_port_read(dev->gpdev, (void *)&s, sizeof(s)) < 0) return -1; return received; } int digita_serial_open(CameraPrivateLibrary *dev, Camera *camera) { GPPortSettings settings; int selected_speed; int ret, retries, negotiated = 0; unsigned char buffer[20]; unsigned short s; unsigned int l; /* Get the settings */ ret = gp_port_get_settings(camera->port, &settings); if (ret < 0) return ret; /* Remember the selected speed */ selected_speed = settings.serial.speed; if (!selected_speed) selected_speed = 115200; /* Try the maximum speed */ /* Set the settings */ settings.serial.speed = 9600; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; ret = gp_port_set_settings(camera->port, settings); if (ret < 0) return ret; dev->send = digita_serial_send; dev->read = digita_serial_read; gp_port_send_break(dev->gpdev, 4); usleep(10000); /* FIXME: In some situations we may want to try a slower speed */ for (retries = 0; !negotiated && retries < MAX_BEACON_RETRIES; retries++) { unsigned char csum; int i, timeouts = 0; /* * Read the beacon */ memset(buffer, 0, sizeof(buffer)); for (i = 0; (i < BEACON_LEN * 2) && (timeouts < MAX_BEACON_TIMEOUTS); i++) { /* We specifically eat as much as we can to catch any */ /* garbage before or after */ ret = gp_port_read(dev->gpdev, (void *)buffer, 1); if (ret < 0) { GP_DEBUG("couldn't read beacon (ret = %d)", ret); timeouts++; continue; } if (buffer[0] == 0xA5) break; } if (timeouts >= MAX_BEACON_TIMEOUTS) continue; ret = gp_port_read(dev->gpdev, (void *)(buffer + 1), BEACON_LEN - 1); if (ret < 0) { GP_DEBUG("couldn't read beacon (ret = %d)", ret); continue; } if (buffer[0] != 0xA5 || buffer[1] != 0x5A) { GP_DEBUG("Invalid header for beacon 0x%02x 0x%02x", buffer[0], buffer[1]); continue; } csum = buffer[6]; buffer[6] = 0; if (checksum(buffer, BEACON_LEN) != csum) { GP_DEBUG("Beacon checksum failed (calculated 0x%02x, received 0x%02x)", checksum(buffer, BEACON_LEN), csum); continue; } memcpy((void *)&s, &buffer[2], 2); GP_DEBUG("Vendor: 0x%04x", be16toh(s)); memcpy((void *)&s, &buffer[4], 2); GP_DEBUG("Product: 0x%04x", be16toh(s)); /* * Send the beacon acknowledgement */ buffer[0] = 0x5A; /* Magic */ buffer[1] = 0xA5; buffer[2] = 0x55; /* I/F Type */ buffer[3] = 0; /* Comm Flag */ l = htobe32(selected_speed); memcpy(&buffer[4], (void *)&l, 4); /* Data speed */ s = htobe16(1023); memcpy(&buffer[8], (void *)&s, 2); /* Device Frame Size */ s = htobe16(1023); memcpy(&buffer[10], (void *)&s, 2); /* Host Frame Size */ buffer[12] = 0; buffer[12] = checksum(buffer, BEACON_ACK_LENGTH); ret = gp_port_write(dev->gpdev, (void *)buffer, BEACON_ACK_LENGTH); if (ret < 0) { GP_DEBUG("couldn't write beacon (ret = %d)", ret); return -1; } /* * Read the beacon completion */ ret = gp_port_read(dev->gpdev, (void *)buffer, BEACON_COMP_LENGTH); if (ret < 0) { GP_DEBUG("couldn't read beacon_comp (ret = %d)", ret); continue; } if ((signed char)buffer[0] < 0) { GP_DEBUG("Bad status %d during beacon completion", (signed int)buffer[0]); continue; } memcpy((void *)&s, &buffer[6], sizeof(s)); dev->deviceframesize = be16toh(s); memcpy((void *)&l, &buffer[2], sizeof(l)); GP_DEBUG("negotiated %d", be32toh(l)); settings.serial.speed = be32toh(l); usleep(100000); /* Wait before */ ret = gp_port_set_settings(dev->gpdev, settings); if (ret < 0) return ret; usleep(100000); /* Wait after */ /* * The host interface spec mentions kTestSerialData, but * doesn't elaborate anywhere else on it. So, I guess we * assume everything is working here */ negotiated = 1; } return negotiated ? 0 : -1; } libgphoto2-2.5.9/camlibs/aox/0000755000175000001440000000000012623156267013010 500000000000000libgphoto2-2.5.9/camlibs/aox/library.c0000644000175000001440000002275012610415524014534 00000000000000/* library.c * * Copyright (C) 2003 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "aox.h" #include #define GP_MODULE "aox" struct _CameraPrivateLibrary { Model model; Info info[2]; }; static struct { char *name; CameraDriverStatus status; unsigned short idVendor; unsigned short idProduct; } models[] = { {"Concord EyeQMini_1", GP_DRIVER_STATUS_EXPERIMENTAL, 0x03e8, 0x2182}, {"Concord EyeQMini_2", GP_DRIVER_STATUS_EXPERIMENTAL, 0x03e8, 0x2180}, {"D-MAX DM3588", GP_DRIVER_STATUS_EXPERIMENTAL, 0x03e8, 0x2130}, {NULL,0,0,0} }; int camera_id (CameraText *id) { strcpy (id->text, "Aox chipset camera"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].name); a.status = models[i].status; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; if (a.status == GP_DRIVER_STATUS_EXPERIMENTAL) a.operations = GP_OPERATION_NONE; else a.operations = GP_OPERATION_CAPTURE_IMAGE; a.folder_operations = GP_FOLDER_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_PREVIEW; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int num_lo_pics =aox_get_num_lo_pics(camera->pl->info); int num_hi_pics =aox_get_num_hi_pics(camera->pl->info); sprintf (summary->text,_("Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" ), num_lo_pics, num_hi_pics, num_lo_pics+num_hi_pics); return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Aox generic driver\n" "Theodore Kilgore \n")); return GP_OK; } /*************** File and Downloading Functions *******************/ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int num_lo_pics = aox_get_num_lo_pics (camera->pl->info); int num_hi_pics = aox_get_num_hi_pics (camera->pl->info); int n = num_hi_pics + num_lo_pics; char name[20]; int i; /* Low-resolution pictures are always downloaded first. We do not know * yet how to process them, so they will remain in RAW format. */ for (i=0; i< num_lo_pics; i++){ snprintf( name, sizeof(name), "aox_pic%03i.raw", i+1 ); gp_list_append(list, name, NULL); } for (i = num_lo_pics; i < n; i++){ snprintf( name, sizeof(name), "aox_pic%03i.ppm", i+1 ); gp_list_append(list, name, NULL); } return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; /* The camera will always download the low-resolution pictures first, if any. * As those are compressed, they are not of fixed size. Unfortunately, the * compression method is not known. * For a high-resolution picture, the size is always the same. * Every picture file has a header, which is of length 0x98. The high- * resolution pictures are just Bayer data; their headers will be discarded. */ int i, j, k, n, num_lo_pics, num_hi_pics, w = 0, h = 0; unsigned char temp; unsigned char *data; unsigned char *p_data = NULL; unsigned char *output = NULL; int len; int header_len; char header[128]; unsigned char gtable[256]; k = gp_filesystem_number(camera->fs, "/", filename, context); num_lo_pics = aox_get_num_lo_pics(camera->pl->info); num_hi_pics = aox_get_num_hi_pics(camera->pl->info); GP_DEBUG("There are %i compressed photos\n", num_lo_pics); GP_DEBUG("There are %i hi-res photos\n", num_hi_pics); if ( (k < num_lo_pics) ) { n = k; w = 320; h = 240; } else { n = k - num_lo_pics; w = 640; h = 480; } len = aox_get_picture_size (camera->port, num_lo_pics, num_hi_pics, n, k); GP_DEBUG("len = %i\n", len); data = malloc(len); if (!data) { printf("Malloc failed\n"); return 0;} aox_read_picture_data (camera->port, (char *)data, len, n); switch (type) { case GP_FILE_TYPE_EXIF: return (GP_ERROR_FILE_EXISTS); case GP_FILE_TYPE_PREVIEW: case GP_FILE_TYPE_NORMAL: if ((w == 320)) { gp_file_detect_mime_type (file); /* Detected as "raw"*/ gp_file_set_data_and_size (file, (char *)data, len); gp_file_adjust_name_for_mime_type (file); } if ((w == 640)){ /* Stripping useless header */ p_data = data + 0x98; /* Picture is mirror-imaged.*/ for (i = 0; i < h; ++i) { for (j = 0 ; j < w/2; j++) { temp = p_data[w*i +j]; p_data[w*i +j] = p_data[w*i+ w -1 -j]; p_data[w*i + w - 1 - j] = temp; } } /* Not only this, but some columns are * interchanged, too. */ for (i = 0; i < w*h/4; i++) { temp = p_data[4*i +1]; p_data[4*i + 1] = p_data[4*i+2]; p_data[4*i+2] = temp; } /* And now create a ppm file, with our own header */ header_len = snprintf(header, 127, "P6\n" "# CREATOR: gphoto2, aox library\n" "%d %d\n" "255\n", w, h); output = malloc(3*w*h); if(!output) { free(output); return GP_ERROR_NO_MEMORY; } if (camera->pl->model == AOX_MODEL_DMAX) gp_bayer_decode (p_data, w, h, output, BAYER_TILE_RGGB); else gp_bayer_decode (p_data, w, h, output, BAYER_TILE_GRBG); /* gamma correction of .70 may not be optimal. */ gp_gamma_fill_table (gtable, .65); gp_gamma_correct_single (gtable, output, w * h); gp_file_set_mime_type (file, GP_MIME_PPM); gp_file_append (file, header, header_len); gp_file_append (file, (char *)output, 3*w*h); } free (output); return GP_OK; case GP_FILE_TYPE_RAW: gp_file_set_data_and_size (file, (char *)data, len); gp_file_set_mime_type (file, GP_MIME_RAW); gp_file_adjust_name_for_mime_type(file); break; default: return (GP_ERROR_NOT_SUPPORTED); } return GP_OK; } /*************** Exit and Initialization Functions ******************/ static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("Aox camera_exit"); if (camera->pl) { free (camera->pl); camera->pl = NULL; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func }; int camera_init(Camera *camera, GPContext *context) { GPPortSettings settings; CameraAbilities abilities; int ret = 0; /* First, set up all the function pointers */ camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->exit = camera_exit; GP_DEBUG ("Initializing the camera\n"); ret = gp_port_get_settings(camera->port,&settings); if (ret < 0) return ret; ret = gp_camera_get_abilities(camera,&abilities); if (ret < 0) return ret; GP_DEBUG("product number is 0x%x\n", abilities.usb_product); switch (camera->port->type) { case GP_PORT_SERIAL: return ( GP_ERROR ); case GP_PORT_USB: settings.usb.config = 1; settings.usb.altsetting = 0; settings.usb.interface = 1; settings.usb.inep = 0x84; settings.usb.outep =0x05; break; default: return ( GP_ERROR ); } ret = gp_port_set_settings(camera->port,settings); if (ret < 0) return ret; GP_DEBUG("interface = %i\n", settings.usb.interface); GP_DEBUG("inep = %x\n", settings.usb.inep); GP_DEBUG("outep = %x\n", settings.usb.outep); /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); switch(abilities.usb_product) { case 0x2130: camera->pl->model = AOX_MODEL_DMAX; break; default: camera->pl->model = AOX_MODEL_MINI; } /* Connect to the camera */ aox_init (camera->port, &camera->pl->model, camera->pl->info); return GP_OK; } libgphoto2-2.5.9/camlibs/aox/Makefile-files0000644000175000001440000000041712561423351015462 00000000000000EXTRA_LTLIBRARIES += aox.la camlibdoc_DATA += aox/README.aox EXTRA_DIST += aox/README.aox aox/ChangeLog aox_la_SOURCES = aox/library.c aox/aox.c aox/aox.h aox_la_LDFLAGS = $(camlib_ldflags) aox_la_DEPENDENCIES = $(camlib_dependencies) aox_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/aox/aox.c0000644000175000001440000000715512610415524013661 00000000000000/* aox.c * * Copyright (C) 2003 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include "aox.h" #define GP_MODULE "aox" #define WRITE gp_port_usb_msg_write #define READ gp_port_usb_msg_read int aox_init (GPPort *port, Model *model, Info *info) { char c[16]; unsigned char hi[2]; unsigned char lo[2]; memset(c,0,sizeof(c)); memset (hi,0,2); memset (lo,0,2); GP_DEBUG("Running aox_init\n"); READ(port, 1, 0, 0, c,0x10); WRITE(port, 8, 1, 0, c, 0x10); READ(port, 0xff, 0x07, 0xfffc, c, 4); /* Returns version number, apparently */ READ(port, 0x06, 0x0, 0x0, c, 2); READ(port, 0x04, 0x1, 0x1, (char *)lo, 2); GP_DEBUG("%02x %02x number of lo-res pics\n", lo[0],lo[1]); /* We need to keep this information. We presume that * more than 255 pictures is impossible with this camera. */ memcpy (info, &lo[0], 1); READ(port, 0x04, 0x2, 0x1, c, 2); READ(port, 0x04, 0x3, 0x1, c, 2); READ(port, 0x04, 0x4, 0x1, c, 2); READ(port, 0x04, 0x5, 0x1, (char *)hi, 2); GP_DEBUG("%02i %02i number of hi-res pics\n", hi[0], hi[1]); /* This information, too. */ memcpy (info +1, &hi[0], 1); READ(port, 0x04, 0x6, 0x1, c, 2); /* "Completion" flag.*/ GP_DEBUG("info[0] = 0x%x\n", info[0]); GP_DEBUG("info[1] = 0x%x\n", info[1]); GP_DEBUG("Leaving aox_init\n"); return GP_OK; } int aox_get_num_lo_pics (Info *info) { GP_DEBUG("Running aox_get_num_lo_pics\n"); return info[0]; } int aox_get_num_hi_pics (Info *info) { GP_DEBUG("Running aox_get_num_hi_pics\n"); return info[1]; } int aox_get_picture_size (GPPort *port, int lo, int hi, int n, int k) { unsigned char c[4]; unsigned int size; memset (c,0,4); GP_DEBUG("Running aox_get_picture_size for aox_pic%03i\n", k+1); if ( ( (lo) && ( n ==k ) && (k ==0)) ) { READ(port, 0x04, 0x1, 0x1, (char *)c, 2); } if ( ( (hi) && ( n < k ) && (n == 0)) ) { READ(port, 0x04, 0x5, 0x1, (char *)c, 2); } READ(port, 0x05, n+1, 0x1, (char *)c, 4); size = (int)c[0] + (int)c[1]*0x100 + (int)c[2]*0x10000; GP_DEBUG(" size of picture %i is 0x%x\n", k, size); if ( (size >= 0xfffff ) ) {return GP_ERROR;} GP_DEBUG("Leaving aox_get_picture_size\n"); return size; } static int aox_read_data (GPPort *port, char *data, int size) { int MAX_BULK = 0x1000; while(size > 0) { int len = (size>MAX_BULK)?MAX_BULK:size; gp_port_read (port, data, len); /* 0x84 = EP IN NEEDED HERE.*/ data += len; size -= len; } return 1; } int aox_read_picture_data (GPPort *port, char *data, int size, int n) { char c[4]; memset(c,0,4); READ(port, 0x06, n+1, 0x1, c, 4); aox_read_data (port, data , size); return GP_OK; } libgphoto2-2.5.9/camlibs/aox/aox.h0000644000175000001440000000240512610415524013657 00000000000000/* aox.h * * Copyright (C) 2003 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __AOX_H__ #define __AOX_H__ #include typedef unsigned char Info; typedef enum { AOX_MODEL_MINI, AOX_MODEL_DMAX } Model; int aox_init (GPPort *port, Model *model, Info *info); int aox_get_num_lo_pics (Info *info); int aox_get_num_hi_pics (Info *info); int aox_get_picture_size (GPPort *port, int lo, int hi, int n, int k); int aox_read_picture_data (GPPort *port, char *data, int size, int n); #endif libgphoto2-2.5.9/camlibs/aox/ChangeLog0000644000175000001440000000260012561423351014470 000000000000002009-07-30 Dan Fandrich * library.c: Fixed a buffer overflow in the AOX driver that would occur when fewer than 15 pictures were on the camera. 2007-06-24 Theodore Kilgore * library.c: compile warnings about signed variables fixed. * aox.c: ditto 2007-06-17 Theodore Kilgore * library.c: D-MAX DM3588 camera added, found by Amauri Magagna . * aox.c: Minor changes. * aox.h: Model entry added for new camera. * README.aox: updated. 2004-06-27 Theodore Kilgore * library.c: Support for PREVIEW added. * README: Updated to reflect recent changes. 2004-04-05 Hubert Figuiere * aox.c (aox_get_picture_size): Declare variables first for C89 compliance. 2004-03-05 Theodore Kilgore * library.c: Different names needed for two USB ids. 2004-02-25 Theodore Kilgore * aox.c: Yet another portability fix. 2004-02-24 Theodore Kilgore * aox.c: Portability improvements, credits to Mika Kousa, 2004-02-24 Theodore Kilgore * library.c: Second USB id, discovered by Jonathan Kozol Portability improvements, credits to Mika Kousa, libgphoto2-2.5.9/camlibs/aox/README.aox0000644000175000001440000001376312561423351014400 00000000000000This driver will download pictures from the Concord EyeQ Mini. This camera has Vendor:Product number 0x3e8:0x2182 and is one of several cameras occupying the entry level in the digital camera market, as do the SQ905 cameras. I mention the SQ905 cameras because the Concord EyeQ Easy has been reported to me as an SQ905 camera. So that is how I obtained this creature, by accident. I went to WalMart hoping to find an SQ905 camera which would do 640x480. I found a Concord EyeQ Mini, thought it was probably the same thing as a Concord EyeQ Easy, bought it, brought it home, and found out it was something altogether different. Well, then, I just had to make it work... The chip inside the camera is unknown, but the .inf file provided with the camera calls it an "Aox." Apparently, Aox is the same company as Endpoints, Inc. The chip may be an Endpoints SE401 or SE402. According to its manual, the camera can be used as a webcam, or to shoot a short video sequence. AFAIK both of these features require kernel module support in order to be used properly, and those features are not addressed here. This camera library provides a driver for the Concord EyeQ Mini as a still camera. For those interested in the webcam features, there do exist Linux kernel drivers for webcams with SE401 (module "se401") and SE402 module "epcam"). Those drivers do indeed support cameras with Vendor number 0x3e8, but Product number 0x2182 is not listed in their source files. Furthermore, the mere act of adding the number and re-compiling the kernel module does not seem all by itself to make this camera work as a webcam. The author of these two kernel modules has stated to me in e-mail that Endpoints was willing to share some information with him about how to access the SE401 and SE402 chips in webcam mode. However, my own request for similar information about the still camera functionality has not been answered, as of 11/04/03. This camlib, therefore, has been constructed by means of observation, combined with guesswork. Features and quirks of the camera: The camera has two sizes of pictures. The high-resolution pictures are 640x480 pixels. Their data format is a Bayer array, from which it is possible to create a PPM image. The camera holds a maximum of 23 pictures in high-resolution mode. The manufacturer's driver creates JPEG compressed images from the downloaded data, and the user is certainly free to do same. Here, high-resolution pictures will be saved in PPM format. The low-resolution pictures are 320x240. According to the manual, these pictures are compressed in the camera and are downloaded as JPEG images. However, the compression used is unknown. Thus, it is currently not possible to make pictures from the resulting files. You can just download them. Or, better yet, figure out what the format is and let me know. The low-compression data download is not of fixed size, but may vary from one picture to the next. All low-resolution photos will be saved as RAW files, until such time as they are better understood. If you have a random mixture of low-resolution and high-resolution photos on the camera, then the camera will always download the low-resolution pictures first and the high-resolution photos only after that. In other words, in that situation the pictures will not be downloaded in the order in which you shot them. The camera also supports "video clip" mode, in which the camera keeps taking frames so long as one holds down the shutter button. Unfortunately, there is not much point in implementing that until the low-resolution non-standard encoded format is better understood, because that is what it uses. Some things which work for me, with various gphoto2 options: gphoto2 --summary will report the number of low-resolution pictures and the number of high-resolution pictures separately, as well as the total number of pictures. gphoto2 -P is functional, but see previous remarks about high and low resolution photos. gphoto2 -p x-y is functional, too, assuming there are at least y pictures in the camera and x <= y. gphoto2 --get-all-raw-data License: LGPL (see the head of the libgphoto2 source tree; this camera library is a part of the libgphoto2 project). Warranty: None, neither expressed nor implied. This camera driver has been written for the sake of the challenge, and in order to learn more about both hardware and software support for the hardware from the actual experience of writing a device driver. Those intending to use the Aox camera library should keep these facts in mind, in order to keep an appropriate sense of perspective. Nevertheless, the Aox camera library driver works for me and carries out for me the functions which are described here. I seriously hope and intend that it should work for others, too. Please report any problems or bugs to me or to the gphoto-devel mailing list. Copyright by Theodore Kilgore, November 11, 2003. kilgota at auburn.edu Additional remarks, June 27, 2004: First the good news: Thumbnail capability has been added, and the library should be fully functional now with a GUI frontend. I have tested both gtkam and digikam. Gtkam works very nicely for me, but for unknown reasons my digikam somehow fails to display the thumbnails. That is probably the fault of my digikam setup, because it fails for all of my cameras. It may work for you and if you want to use digikam then certainly you should try it. The bad news: The camera has "video clip" capability, meaning that with a certain camera setting it is possible to hold down the shutter button and keep shooting frames (the only limitation being the amount of free memory in the camera). Unfortunately, the clip mode uses the non-standard compression, and thus there is no point in trying to implement clip mode until the compression is understood. June 17, 2006: New camera D-MAX DM3588 - 0x03e8:0x2130 found by Amauri Magagna . The new camera seems to differ only in minor details from the previously known cameras, but requires a separate model entry. libgphoto2-2.5.9/camlibs/mars/0000755000175000001440000000000012623156267013163 500000000000000libgphoto2-2.5.9/camlibs/mars/README.mars0000644000175000001440000003241312561423351014717 00000000000000MARS MR97310 STILLCAM DRIVER Copyright Theodore Kilgore April, 2004. Latest revision of this README March 15, 2008. (Everything in libgphoto2/camlibs/mars is LGPL-licensed, including this README; see any of the source files for a more complete statement of the license.) INTRODUCTION This driver is for cameras which use the Mars MR97310 chip, frequently found in budget cameras. FEATURES OF THE CAMERAS The first MR97310 camera which I encountered was the Aiptek PenCam VGA+, a "budget" camera with resolution settings of 640x480 and 320x240. This camera and the other MR97310 cameras can also be used as webcams (not supportable by gphoto2; would require a kernel module) or to make a "video clip." Some of the other cameras automatically will run in compressed mode when shooting clips, but on the Aiptek it is optional to compress clips. Clips download nicely on all these cameras as a succession of PPM files. The compression method (optional for the Aiptek camera) is proprietary and not obvious. With recent progress, it ought to be usable. However, the adventurous and persistent are hereby encouraged to play with it some more. 09/12/05: Decompression sort of works, now. Thanks to Bertrik Sikkens for the basic algorithm, and to Michel Xhaard for testing my additional tweaks. With some of the cameras it is possible now to get decent photos in compressed mode, at least some of the time. For this, the camera seems to function best at outdoor use. Update 08/28/06: Decompression algorithm much improved, after much trial and error. I would say it is somewhere between 90% to 100% good now. Seems to work almost perfectly outdoors and in strong light. Works even better at low resolution settings, that is, 352x288 or lower. Update 08/21/07: Decompression issues essentially resolved, for the "0x50" compression algorithm. However, another, different compression algorithm is also used in some of the cameras. The camera uses a configuration "block," as do the sq905 cameras. However, here the information can be used to run options such as gphoto2 -p 3 and gphoto2 -p 3-5. The OEM software provided with the various cameras does not take advantage even of the mentioned abilities. With the OEM driver, one has the choice either to download all photos, or none. If all are downloaded, then thumbnails are created from temporry image files in C:\TEMP. Thereby, the user can decide what to "save" in some more permanent place. STATUS NOTES ON SUPPORTED CAMERAS (7 Feb. 2006, revised 28 Aug. 2006) First, a special note: On many of these cameras, the LED will read "PC" when the camera is hooked to a live USB connector. It seems locked in this position. But all of the cameras which do this, which I have tested, will permit this lock to be cleared if one runs any gphoto2 option (for example, gphoto2 -n or gphoto2 --summary will clear the "PC" lock very nicely), and after this everything on the camera can be made to work, just as if the camera were not tethered. Consequently, one can use the camera thus tethered, without any battery in it, to shoot and download photos. The photos will die soon if the camera is unhooked without a good battery in it, though, because the camera uses volatile memory for its data storage. The only problem with using any of these cameras is the compression codec. Bertrik's decompression algorithm seems basically correct, but it has a problem with leaving diagonal color artifacts, a problem which can be severe in bad lighting conditions, especially if there are lots of dark colors in the photo. Those cameras with 352x288 max resolution instead of 640x480 do better, and the Argus DC-1620 does better in poor light than does the Aiptek Pencam VGA+. I have recently been able to alleviate these problems to a great extent, but not completely. Also, not all of the cameras seem to perform equally well in compressed mode when used to shoot similar photos under similar lighting conditions. After the tweaks I have added as of August 2006, though, the situation with compression mode is improved quite a bit. Here is a report on the cameras which I own. I can not say anything about the others unless their performance is reported to me. This especially applies in case that the camera uses compressed mode, since there are two compression algorithms in use and we can handle only one of them to any extent at all. Aiptek Pencam VGA+: Compressed mode is very sensitive to bad lighting, especially when there are dark colors in the image (08/27/06: better now). The camera also will refuse to shoot both in compressed and in uncompressed mode if the light is very bad (indoors, in the evening) and that is probably all for the best. Argus DC-1620: Compressed mode only. No uncompressed photos. The compressed mode works pretty well, though. Outdoor photos are pretty good, and if you are willing to put up with a cheap, compressed-mode-only camera it might even be worth your money. The camera does have some problems in bad light, but not so severe as with the Aiptek Pencam VGA+. Camera does have a flash-light which can be turned on in bad light. The camera will then decide if it wants to use it. Sakar Digital #77379: Also compressed mode only. Seems to work pretty well. Has a very high cutoff threshold and will not take photos in the evening, even if one points it at a bright monitor screen. Color mapping is cruddy, though, even running in uncompressed mode. 640x480 and 320x240 resolution. Philips Keychain, INNOVAGE Mini Digital Vivitar Mini Digital: These seem to be clones, even having very similar cases. They will do max resolution 352x488. But for what they are they work very well. It seems that these shoot clips in compressed mode (no matter if you otherwise turned compression on, or not), but at the resolution settings these cameras use the decompression works nicely, too. Probably the CD302N and the Pixart Gemini are the same, too, but I do not have direct experience. Trust SpyC@m 100: Reported as working, seems from manufacturer's description to be another camera similar to the Philips KeyChain. Furthermore, www.trust.com (the manufacturer) says that the Trust SpyC@m 100s is the same camera inside, too, so it is also presumed to work. Sakar Digital 56379 "Spy Shot": Another keychain camera, but also contains a microphone and will capture sound. There is a toggle switch on the camera, which is labelled "photo" on one side and "voice" on the other. If the "voice" toggle is chosen, then actual recording is turned on and off with a press of the shutter button. The output is kept in the camera. This feature is supported as of 04/07/07; the audio output may be downloaded as a WAVE file with the usual options gphoto2 -P or gphoto2 -p (number). Note: the option --capture-sound and the various "audio" options are _not_ supported. In any event, the usual options do make sound files accessible in a GUI environment. ION digital camera: Compression optional. High cutoff threshold for what the camera considers bad light; will not take photos indoors, sometimes, even on a bright day. Color mapping is unspectacular. Camera case looks like there is a microphone on it, but there isn't. Sakar no. 1638x CyberPix: Usable in uncompressed mode. Compression algorithm appears to be the same as that for the Argus QuickClix (see next listing) and is unknown. WARNING! When turned on the camera comes up in compressed mode !!! The user can change this by hand by choosing "nP" in the camera's LCD. Do this before you shoot photos, else the photos will be useless !!! Argus QuickClix: Compressed mode only. The compression algorithm is different from the compression algorithm in the other known Mars cameras, too. I have no idea how the compression algorithm works, either. Thus, this camera is a paperweight unless someone figures out how to decompress the data. Don't buy one unless you are adventurous, patient, and want to help out. That's why it is listed as DEPRECATED. SPECIFIC WARNING REGARDING ARGUS QUICKCLIX For the Mars cameras, all data for raw photos begins with a signature. The uncompressed photos begin with FF FF 00 FF 96 64 00, and raw photos using the compression which is solved begin with FF FF 00 FF 96 64 50. If you get a camera in which the raw data begins with the signature FF FF 00 FF 96 64 20 then your camera uses the same compression algorithm as the Argus QuickClix. That compression method is as yet unknown; a camera using it is a paperweight. Finally, one can not distinguish an Argus QuickClix from an Argus DC-1620 by appearance. From the outside they are identical. Also they and several other cameras use the same USB Vendor:Product number and do not give any identification string after they are connected, either. So, unless the new compression algorithm is unlocked, there is a real problem here. The Sakar CyberPix also uses this unknown compression, which is turned on by default. The user must turn it off in order to get usable photos. See notes about this camera, above. USABILITY OF DRIVER WITH GUI FRONTENDS The camera library presented here seems to work with gtkam as a frontend. To use gtkam for the first time with any camera, you must choose the camera. For this purpose, after starting gtkam click on "Camera." Then choose "Add Camera." Then "Detect." Click on the name of the camera to get photos. Gtkam creates its own thumbnails for cameras which do not offer them. These cameras do not offer thumbnails. Sound files are "seen" by name, with no thumbnail, and can otherwise be selected, deleted, or saved, just like image files. The default option in gtkam is to save to $PWD. I like that. You can change that behavior if you want, I understand. Digikam as a frontend works, too. But for some reason digikam seems unable to display thumbnails from this camera. Anyone who knows what the problem is here, please let me know. Flphoto works well, too, with no obvious glitches. Flphoto is also willing to create thumbnails and does so without any tweaking. Sound files are handled pretty much as in gtkam. You will get a whine on saving, that the file cannot be put into the "album" but it will be saved to the chosen directory nevertheless. Flphoto will not automatically save in $PWD but instead will open the directory it used last time. I hate that. Someone out there must love that behavior, though. Or it wouldn't be set up that way. Otherwise, flphoto is really slick. SAVING RAW PHOTO FILES AND USING THEM LATER (09-23-06) All raw photos downloaded from the camera come with a signature and a header which is 12 bytes in length. This header has always been retained if the photo is saved in raw format. The last few of the bytes in this header seem to pertain to things like brightness and color balance (not usable information, at this time, but may be in the future). The first bytes are always FF FF 00 FF 96 64 and the next byte (as received from the camera) is either 00 (if the image is uncompressed) or is 50 if the image has been subjected to the "standard" MR97310 compression or is 20 if the image has been subjected to the totally unknown Argus QuickClix compression. Thus the header of any given image as it comes from the camera tells us in byte 6 of the header whether the image is compressed or if compressed then which algorithm has been used. That information uses the most significant nibble of the "compression" byte. But if we do not do something, the pixel dimension of the photo to be obtained from the raw file is not recorded. As the camera also codes this information in one nibble, we place that nibble here, thus: Original raw signature pixel dim. Saved as Comp. FF FF 00 FF 96 64 00 176x144 FF FF 00 FF 96 64 00 no 352x288 FF FF 00 FF 96 64 02 no 320x240 FF FF 00 FF 96 64 06 no 640x480 FF FF 00 FF 96 64 08 no FF FF 00 FF 96 64 50 176x144 FF FF 00 FF 96 64 50 yes 352x288 FF FF 00 FF 96 64 52 yes 320x240 FF FF 00 FF 96 64 56 yes 640x480 FF FF 00 FF 96 64 58 yes (similar will happen if compression code is the bad 0x20, as well) With this small change, the raw file now contains all information within itself that is needed for processing it. FURTHER DETAILS Further details are given in "protocol.txt". These details have been obtained through trial and error and are intended solely to meet the problems of compatibility in other than a Microsoft Windows (trademark) environment. If you would like to see this file and it is not included for some reason in a "released" version of libgphoto2, then it can be found in the SVN source repository. THE mars_white_balance() FUNCTION This function first of all does what its name implies. It also re-computes a better gamma factor for the individual image, based upon internal characteristics detected in the image, and does color enhancement. If you do not like what it is doing, then you can turn it off by commenting out the line in library.c where it is called, but I expect that the user will not want to do that, because it seems to me that the image quality is much, much better. WARRANTY? Absolutely none. Remember, I did not sell you this software. I have written this driver for my own edification and in the sincere hope that it might help you to use of your camera. Please see also the warranty clauses in the LGPL license, which do not appear to me to conflict with my own statement here. libgphoto2-2.5.9/camlibs/mars/library.c0000644000175000001440000003022112610415524014677 00000000000000/* library.c * * Copyright (C) 2004 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) # define ngettext(String1,String2,Count) ((Count==1)?String1:String2) #endif #include "mars.h" #include #define GP_MODULE "mars" struct _CameraPrivateLibrary { Info info[0x2000]; }; static const struct { char *name; CameraDriverStatus status; unsigned short idVendor; unsigned short idProduct; } models[] = { {"Aiptek PenCam VGA+", GP_DRIVER_STATUS_TESTING, 0x08ca, 0x0111}, {"Trust Spyc@m 100", GP_DRIVER_STATUS_TESTING, 0x08ca, 0x0110}, {"Emprex PCD3600", GP_DRIVER_STATUS_EXPERIMENTAL, 0x093a, 0x010f}, {"Vivitar Vivicam 55", GP_DRIVER_STATUS_EXPERIMENTAL, 0x093a, 0x010f}, {"Haimei Electronics HE-501A", GP_DRIVER_STATUS_EXPERIMENTAL, 0x093a, 0x010e}, {"Elta Medi@ digi-cam", GP_DRIVER_STATUS_EXPERIMENTAL, 0x093a, 0x010e}, {"Precision Mini, Model HA513A", GP_DRIVER_STATUS_EXPERIMENTAL, 0x093a, 0x010f}, {"Digital camera, CD302N", GP_DRIVER_STATUS_EXPERIMENTAL, 0x093a, 0x010e}, {"INNOVAGE Mini Digital, CD302N", GP_DRIVER_STATUS_TESTING, 0x093a, 0x010e}, {"Argus DC-1610", GP_DRIVER_STATUS_EXPERIMENTAL, 0x093a, 0x010f}, {"Argus DC-1620", GP_DRIVER_STATUS_TESTING, 0x093a, 0x010f}, {"Philips P44417B keychain camera", GP_DRIVER_STATUS_TESTING, 0x093a, 0x010e}, {"Sakar Digital no. 77379", GP_DRIVER_STATUS_EXPERIMENTAL, 0x093a, 0x010f}, {"ION digital camera", GP_DRIVER_STATUS_TESTING, 0x093a, 0x010f}, {"Argus QuickClix", GP_DRIVER_STATUS_DEPRECATED, 0x093a, 0x010f}, {"Pixart Gemini Keychain Camera", GP_DRIVER_STATUS_TESTING, 0x093a, 0x010e}, {"Sakar Digital no. 56379 Spyshot", GP_DRIVER_STATUS_TESTING, 0x093a, 0x010e}, {"Sakar no. 1638x CyberPix", GP_DRIVER_STATUS_EXPERIMENTAL, 0x093a, 0x010f}, {"Shift3", GP_DRIVER_STATUS_EXPERIMENTAL, 0x093a, 0x010e}, {"Vivitar Mini Digital Camera", GP_DRIVER_STATUS_TESTING, 0x093a, 0x010e}, {NULL,0,0,0} }; int camera_id (CameraText *id) { strcpy (id->text, "Aiptek PenCam VGA+"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].name); a.status = models[i].status; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; if (a.status == GP_DRIVER_STATUS_EXPERIMENTAL) a.operations = GP_OPERATION_NONE; else a.operations = GP_OPERATION_CAPTURE_IMAGE; a.folder_operations = GP_FOLDER_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_RAW; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int num_pics = mars_get_num_pics(camera->pl->info); sprintf (summary->text,ngettext( "Mars MR97310 camera.\nThere is %i photo in it.\n", "Mars MR97310 camera.\nThere are %i photos in it.\n", num_pics), num_pics ); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07?\?).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" )); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Mars MR97310 camera library\n" "Theodore Kilgore \n")); return GP_OK; } /*************** File and Downloading Functions *******************/ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i = 0, n; char name[16]; n = mars_get_num_pics(camera->pl->info); for (i=0; i < n; i++) { if ((camera->pl->info[8*i]&0x0f) == 1) { sprintf (name, "mr%03isnd.wav", i+1); } else sprintf (name, "mr%03ipic.ppm", i+1); gp_list_append (list, name, NULL); } return GP_OK; } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { info->file.fields = GP_FILE_INFO_TYPE; strcpy (info->file.type, GP_MIME_PPM); return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int w=0, h = 0, b = 0, k; unsigned char *data; unsigned char *ppm; unsigned char *p_data = NULL; unsigned char gtable[256], photo_code, res_code, compressed; unsigned char audio = 0; unsigned char *ptr; int size = 0, raw_size = 0; float gamma_factor; GP_DEBUG ("Downloading pictures!\n"); /* These are cheap cameras. There ain't no EXIF data. */ if (GP_FILE_TYPE_EXIF == type) return GP_ERROR_FILE_EXISTS; /* Get the number of the photo on the camera */ k = gp_filesystem_number (camera->fs, "/", filename, context); /* Determine the resolution setting from the PAT table */ photo_code = camera->pl->info[8*k]; res_code = photo_code & 0x0f; /* Compression presence or absence is seen here, and is given again * by the camera, in the header of raw data for each photo. */ compressed = (photo_code >> 4) & 2; switch (res_code) { case 0: w = 176; h = 144; break; case 1: audio = 1; break; case 2: w = 352; h = 288; break; case 6: w = 320; h = 240; break; case 8: w = 640; h = 480; break; default: w = 640; h = 480; } GP_DEBUG ("height is %i\n", h); b = mars_get_pic_data_size(camera->pl->info, k); raw_size = b; /* Now increase b from "actual size" to _downloaded_ size. */ b = ((b+ 0x1b0)/0x2000 + 1) * 0x2000; data = malloc (b); if (!data) return GP_ERROR_NO_MEMORY; memset (data, 0, b); GP_DEBUG ("buffersize= %i = 0x%x butes\n", b,b); mars_read_picture_data (camera, camera->pl->info, camera->port, (char *)data, b, k); /* The first 128 bytes are junk, so we toss them.*/ memmove(data, data+128, b - 128); if (audio) { p_data = malloc (raw_size+256); if (!p_data) {free (data); return GP_ERROR_NO_MEMORY;} memset (p_data, 0, raw_size+256); sprintf ((char *)p_data, "RIFF"); p_data[4] = (raw_size+36)&0xff; p_data[5] = ((raw_size+36)>>8)&0xff; p_data[6] = ((raw_size+36)>>16)&0xff; p_data[7] = ((raw_size+36)>>24)&0xff; sprintf ((char *)p_data+8, "WAVE");\ sprintf ((char *)p_data+12, "fmt "); p_data[16] = 0x10; p_data[20] = 1; p_data[22] = 1; p_data[24] = 0x40; p_data[25] = 0x1F; p_data[28] = 0x40; p_data[29] = 0x1F; p_data[32] = 1; p_data[34] = 8; sprintf ((char *)p_data+36, "data"); p_data[40] = (raw_size)&0xff; p_data[41] = ((raw_size)>>8)&0xff; p_data[42] = ((raw_size)>>16)&0xff; p_data[43] = ((raw_size)>>24)&0xff; memcpy (p_data+44, data, raw_size); gp_file_set_mime_type(file, GP_MIME_WAV); gp_file_set_data_and_size(file, (char *)p_data , raw_size+44); return GP_OK; } if (GP_FILE_TYPE_RAW == type) { /* We keep the SOF marker. Actual data starts at byte 12. * Byte 6, upper nibble, is a code for compression mode. We * use the lower nibble to store the resolution code. * Then it is possible to know "everything" from a raw file. * Purpose of the info in bytes 7 thru 11 is currently unknown. * A "raw" audio file will also have the WAV header prepended. * So do nothing to an audio file. */ if (!audio) data[6] = (data[6] | res_code); gp_file_set_mime_type(file, GP_MIME_RAW); gp_file_set_data_and_size(file, (char *)data , raw_size ); return GP_OK; } p_data = malloc (w * h); if (!p_data) {free (data); return GP_ERROR_NO_MEMORY;} memset (p_data, 0, w * h); if (compressed) { mars_decompress (data + 12, p_data, w, h); } else memcpy (p_data, data + 12, w*h); gamma_factor = sqrt((float)data[7]/100.); if (gamma_factor <= .60) gamma_factor = .60; free(data); /* Now put the data into a PPM image file. */ ppm = malloc (w * h * 3 + 256); /* Data + header */ if (!ppm) {free (p_data); return GP_ERROR_NO_MEMORY;} memset (ppm, 0, w * h * 3 + 256); sprintf ((char *)ppm, "P6\n" "# CREATOR: gphoto2, Mars library\n" "%d %d\n" "255\n", w, h); ptr = ppm + strlen ((char *)ppm); size = strlen ((char *)ppm) + (w * h * 3); GP_DEBUG ("size = %i\n", size); gp_ahd_decode (p_data, w , h , ptr, BAYER_TILE_RGGB); gp_gamma_fill_table (gtable, gamma_factor ); gp_gamma_correct_single (gtable, ptr, w * h); mars_white_balance (ptr, w*h, 1.4, gamma_factor); gp_file_set_mime_type (file, GP_MIME_PPM); gp_file_set_data_and_size (file, (char *)ppm, size); free (p_data); return GP_OK; } /*************** Exit and Initialization Functions ******************/ static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("Mars camera_exit"); mars_reset(camera->port); gp_port_close(camera->port); if (camera->pl) { free (camera->pl); camera->pl = NULL; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func }; int camera_init(Camera *camera, GPContext *context) { GPPortSettings settings; int ret = 0; /* First, set up all the function pointers */ camera->functions->manual = camera_manual; camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->exit = camera_exit; GP_DEBUG ("Initializing the camera\n"); ret = gp_port_get_settings(camera->port,&settings); if (ret < 0) return ret; switch (camera->port->type) { case GP_PORT_SERIAL: return ( GP_ERROR ); case GP_PORT_USB: settings.usb.config = 1; settings.usb.altsetting = 0; settings.usb.interface = 0; /* settings.usb.inep = 0x82; */ /* inep 0x83 used for commands. Switch to 0x82 for data! */ settings.usb.inep = 0x83; settings.usb.outep = 0x04; break; default: return ( GP_ERROR ); } ret = gp_port_set_settings(camera->port,settings); if (ret < 0) return ret; GP_DEBUG("interface = %i\n", settings.usb.interface); GP_DEBUG("inep = %x\n", settings.usb.inep); GP_DEBUG("outep = %x\n", settings.usb.outep); /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); /* Connect to the camera */ mars_init (camera,camera->port, camera->pl->info); return GP_OK; } libgphoto2-2.5.9/camlibs/mars/protocol.txt0000644000175000001440000003007712561423351015504 00000000000000CONNECTION AND COMMAND PROTOCOLS OF THE MARS MR97310 Theodore Kilgore April, 2004. (This camera library and all files in it carry the LGPL license; see any of the source files for a more complete statement.) Peculiarly, the MR97310 camera uses bulk endpoint 0x04 (out) to receive commands, sending back its responses over bulk endpoint 0x83 (in). Then, it uses bulk endpoint 0x82 (in) to send data to the computer. The driver has to switch the pipe appropriately. A command is a bulk write operation of one or two bytes, with the first byte being 0x19. All requests to read a block or blocks of data are performed by sending only the single byte 0x19. Otherwise, the second byte can apparently be either a command, or part of a sequence giving information. A command is usually followed by a read request for confirmation. The read request is of a bulk write of the one byte 0x21. The camera responds by sending 16 bytes, in which only the first byte seems significant. When the single byte 0x19 is sent with no second byte, immediate intention to download data is signalled. The 0x19 which is sent must be followed by an 0x21 read request for confirmation. If the response is correct (must begin with 0xa8), then the pipe must be switched to 0x82 and the download may be carried out by repetition of gp_port_read(port,data,size); (where maximum size is 0x2000), until the intended amount of data has been read. After the data has been successfully read, the pipe must be switched back to 0x83 for the next command sequence. To summarize: bulk inep 0x83 is for receiving responses to commands; bulk inep 0x82 is for receiving data, and bulk outep 0x04 is for sending commands. The camera also has bulk pipe 0x07, which one would reasonably expect could be used to write data to the camera. However, it is not obvious how to do that. It may not be possible. The observed command sequences sent to the camera are: 19 51 (starts the initialization sequence, any data download initialization sequence, and the exit sequence) 19 b5 (appears during initialization; could also be part of a memory address) 19 0f (flag instructing to move to a memory location which will be sent to the camera in immediately subsequent communications) 19 54 (computer's acknowledgement to camera that a data download has just been successfully completed; causes much beeping; mostly not used here) 19 ba (flag indicating that memory location should be reset, on exit; followed by instructions to reset memory pointer to 00 00). Other things are instructions to go to a memory location. For example, to download the first photo in the camera, which begins at memory block 0x400, the sequence is send 19 0f send 21, read response send 19 00 send 21, read response send 19 04 send 21, read response; do this repeatedly until first byte of response is 0x0a, then proceed with next command. My conjecture is that this sequence of read requests is causing the memory pointer to move to the right place, which is registered as done when the 0x0a comes up. After the memory pointer has been successfully moved, the camera must be told several other things, by sending one byte at a time, ending with an indication of how big is the photo to be downloaded. For example, if a photo is 640x480 pixels, equal to 4b000 bytes, then the sequence 19 b0 21, read response 19 04 21, read response must be sent. Where this comes from is presented in the next section. THE CONFIGURATION DATA The MR973120 camera uses a block of configuration data of size 0x2000, which is downloaded during the initialization of the camera. Here is a sample of the first few, relevant lines from the configuration data. We have 9 photos in the camera. 0000 ff 00 ff 00 ff 00 ff 01-00 00 00 00 00 00 00 00 0010 08 00 04 00 0c b0 04 cc-86 13 9a 00 0c 2c 01 6c 0020 06 a6 bf 00 0c 2c 01 a4-88 39 e5 00 0c b0 04 66 0030 06 4c 7b 01 0c 2c 01 07-86 df a0 01 0c 2c 01 3f 0040 08 72 c6 01 0c b0 04 01-88 85 5c 02 0c b0 04 2b 0050 08 98 f2 02 0c b0 04 54-ff ff ff ff ff ff ff ff 0060 ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff Line 0000 is always the same (or should be -- see next section). The first block of 8 bytes seems to be a marker signifying the configuration block. The second eight-byte block may, it will become later apparent, refer to some data about the block itself -- its type and its memory location, perhaps. This would seem paradoxical since one can not know the configuration data before downloading it, but not all in life is logical. Lines 0010 through 0050 give data about the photos. There are nine photos in the camera in this sample. When we reach byte 0x58 and begin repeating 0xff, we finished reading about these nine photos. Thus, each block of 8 bytes says something about a photo, until the repetition of 0xff begins. After this the rest of the configuration data is simply junk. Let's rearrange the sample, throwing away the unhelpful line 0000 and also terminating after byte 0x57: photo 1 08 00 04 00 0c b0 04 cc 2 86 13 9a 00 0c 2c 01 6c 3 06 a6 bf 00 0c 2c 01 a4 4 88 39 e5 00 0c b0 04 66 5 06 4c 7b 01 0c 2c 01 07 6 86 df a0 01 0c 2c 01 3f 7 08 72 c6 01 0c b0 04 01 8 88 85 5c 02 0c b0 04 2b 9 08 98 f2 02 0c b0 04 54 (the columns in this table are numbered from 0 to 7 in what follows) In this pattern, the entry in the zeroeth column is a code which gives the size of the photo and indicates if there is compression, or not. In this particular example, none of the photos are compressed. The second digit of this byte indicates the size: 0 -> 176x144 2 -> 352x288 6 -> 320x240 8 -> 640x480 The first digit of this byte indicates presence or absence of compression. If it is 2, 3, 6, 7, a, b, d, or f there is compression; otherwise the photo is not compressed. For a photo of given size and compression status, the first digit is also dependent upon the location in the line of config data. If in the first position on the line, then that digit is less than 8, and if in the second position then 8 is added. This is seen in our example, where 08 and 88 both signify 640x480 uncompressed, and 06 and 86 both signify 320x240 uncompressed. The entries in columns 1, 2, and 3 of our rearranged data seem to indicate the storage location, in (hexadecimal) little endian format. Comparison of these numbers to the sizes of photos and to the size of the configuration data and to the advertised 8 Meg size of the RAM in the camera would seem to imply that the memory is addressed as storage blocks, or words, of size 8 bytes. For example, the configuration data, of size 0x2000, would require 0x2000/8 = 0x400 storage blocks, and the beginning point for the first photo is listed as location 0x400. The entries in columns 4 through 6 indicate, again in little endian form, the data size for the given photo, in bytes. The actual data size to be requested and downloaded from the camera needs to be tne next integer multiple of 0x2000. Finally, for the seventh column there is at this time no obvious interpretation. A DATA-SHIFTING PROBLEM An example of what the same config data can look like if gphoto2 (or the OEM camera software, too) is run twice without replugging the camera in between, is as follows: 0000 5c 73 60 73 5c 71 5d 6e-5c 72 5d 6c 5c 70 5b 6e 0010 5d 71 5b 71 5e 71 5c 71-5c 72 5d 6e 5c 72 5e 71 0020 5c 6f 59 6f 58 67 49 4c-38 43 3a 4c 43 59 49 5b 0030 4b 5d 51 64 54 66 54 6b-58 6b 56 66 52 64 53 64 0040 56 6d 55 66 57 6a 56 6a-59 6d 57 6b 58 6a 59 6d 0050 59 6c 59 67 58 6b 56 6b-57 6a 56 6a 54 63 44 49 0060 31 3a 2c 38 2c 39 2c 39-2e 38 30 39 2a 36 2a 37 0070 2a 32 2a 34 26 30 29 31-1f 2d 21 29 1e 26 1c 25 0080 ff 00 ff 00 ff 00 ff 01-00 00 00 00 00 00 00 00 0090 08 00 04 00 0c b0 04 cc-86 13 9a 00 0c 2c 01 6c 00a0 06 a6 bf 00 0c 2c 01 a4-88 39 e5 00 0c b0 04 66 00b0 06 4c 7b 01 0c 2c 01 07-86 df a0 01 0c 2c 01 3f 00c0 08 72 c6 01 0c b0 04 01-88 85 5c 02 0c b0 04 2b 00d0 08 98 f2 02 0c b0 04 54-ff ff ff ff ff ff ff ff 00e0 ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff For some unknown reason, this data shift occurs if the camera is not replugged, but the data is always offset either not at all or by exactly 128 bytes. Thus the problem can apparently be overcome by checking whether ff 00 ff 00 occurs on line 0000 or on line 0080. For similarly unknown reasons, the same offset seems to occur at the beginning of every download of a photo. One gets 128 bytes of pure junk, followed by 12 bytes which include a signature, and only then comes the data. UPDATES and REVISIONS: This section is intended to give further explanations of some things which are otherwise mentioned briefly, in the ChangeLog. 1. 2004-05-18 ID number of Emprex PDC3800 contributed by Hisham Muhammad . 2. 2004-06-09 Compatibility with gtkam ensured; method of adjusting the gamma setting of a photo introduced, based upon photo's config data. 3. 2004-09-04 The Vivitar Vivicam 55 has the same USB ID as the Emprex PDC3800 and presumably is therefore the same camera. Turned out that the camera is very finicky about initialization. Extensive efforts to make this camera actually to work resulted in major revisions to the init sequence. Special credit to Sebastien Soilen for sustained, patient, and thorough testing. 4. 2004-10-26 Support for two new cameras with new ID of 0x093a:0x10e, which use two new resolution settings, of 352x288 and 176x144. The new codes for these resolution settings are: 352x288, uncompressed 0x02 or 0x82 352x288, compressed 0x22 or 0xa2 176x144, uncompressed 0x0 or 0x80 176x144, compressed 0x20 or 0xa0 Credits to Scott MacKenzie for reporting his camera and for submitting the patch which makes it work. Nils Naumann for reporting his camera 24 hours after Scott, and for testing Scott's patch. 5. 2005-06-12 Code streamlined considerably. There are several more cameras out there which I call the "new generation." Some of these cameras are compressed-mode only, and some of them have a flashlamp. the flashlamp seems to need new codes for the photos sizes, starting with 1 or 9 (uncompressed), or 3 or b (compressed). The "routine" function needed to be rewritten, and it is also discovered that the proper data size for the download of a photo is always an integer multiple of 0x2000. Anything else, some of the new cameras will freeze. The old Aiptek Pencam VGA+ seems to work better this way, too. Some new cameras such as the Argus DC-1620 have the same Vendor:Product IDs as older cameras. 6. 2005-09-12 Some minor changes to the init routine make it more reliable across the various different cameras. The big change is the support for the compression mode. I got lucky by noticing that the camlibs/sonix routine almost works here. After this, credit to Bertrik Sikkens for figuring out the rest of the codec, which still needed a lot of tweaking and smoothing after that. The camera uses a quite lossy differential Huffman encoding, and apparently due to the data loss the decompression can get unstable. Michel Xhaard for testing. 7. 2006-02-08 "Tweaking and smoothing" of decompression carried out, for the most part successfully. Several new cameras added. One of them is the Argus QuickClix, which uses a *different* compression algorithm! I hope nobody else buys one, unless the purchaser is a decompression expert. 8. 2006-09-23 A freeze-up using a Vivitar Vivicam 55 has been reported by conon , apparently due to a timing issue while switching the USB inep from 0x83 to 0x82. Conon also proposed a fix, in the form of a usleep() command. He reports that this works with his camera, and after extensive testing it does not seem to impair the functioning of other MR97310 cameras. Patch adopted. Conon has also submitted some simplifications of the decompression algorithm, which seem to work well. These changes also incorporated in current version. NOTE: Vivitar in fact has discontinued this camera. They now offer a Vivicam 55 which uses the SQ905C chip instead (see camlibs/digigr8)!libgphoto2-2.5.9/camlibs/mars/mars.c0000644000175000001440000003244012610415617014205 00000000000000/* mars.c * * Copyright (C) 2004 Theodore Kilgore * * white_balance() Copyright (C) 2008 Theodore Kilgore and Amauri Magagna. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include "gphoto2-endian.h" #include "mars.h" #define GP_MODULE "mars" #define INIT 0xb5 #define GET_DATA 0x0f static int m_read (GPPort *port, char *data, int size) { gp_port_write(port, "\x21", 1); gp_port_read(port, data, 16); return GP_OK; } static int m_command (GPPort *port, char *command, int size, char *response) { gp_port_write(port, command, size); m_read(port, response, 16); return GP_OK; } static int mars_routine (Info *info, GPPort *port, char param, int n); int mars_init (Camera *camera, GPPort *port, Info *info) { char c[16]; unsigned char status = 0; memset(info,0, sizeof(*info)); memset(c,0,sizeof(c)); GP_DEBUG("Running mars_init\n"); /* Init routine done twice, usually. First time is a dry run. But if * camera reports 0x02 it is "jammed" and we must clear it. */ m_read(port, c, 16); if ( (c[0] == 0x02 ) ) { gp_port_write(port, "\x19", 1); gp_port_read(port, c, 16); } else { status = mars_routine (info, port, INIT, 0); GP_DEBUG("status = 0x%x\n", status); } /* Not a typo. This _will_ download the config data ;) */ mars_read_picture_data (camera, info, port, (char *)info, 0x2000, 0); /* Removing extraneous line(s) of data. See "protocol.txt" */ if ((info[0] == 0xff)&& (info[1] == 0)&&(info[2]==0xff)) memmove(info, info + 16, 0x1ff0); /* Saving config */ else memmove(info, info + 144, 0x1f70); /* Saving config */ GP_DEBUG("Leaving mars_init\n"); return GP_OK; } int mars_get_num_pics (Info *info) { unsigned int i = 0; for (i = 0; i < 0x3fe; i++) if ( !(0xff - info[8*i]) ) { GP_DEBUG ( "i is %i\n", i); memcpy(info+0x1ff0, "i", 1); return i; } memcpy(info+0x1ff0, "0", 1); return 0; } int mars_get_pic_data_size (Info *info, int n) { return (info[8*n+6]*0x100 + info[8*n+5])*0x100 + info[8*n+4]; } static int set_usb_in_endpoint (Camera *camera, int inep) { GPPortSettings settings; gp_port_get_settings ( camera ->port, &settings); settings.usb.inep = inep; GP_DEBUG("inep reset to %02X\n", inep); return gp_port_set_settings ( camera ->port, settings); } static int mars_read_data (GPPort *port, char *data, int size) { int MAX_BULK = 0x2000; int len = 0; while(size > 0) { len = (size>MAX_BULK)?MAX_BULK:size; gp_port_read (port, data, len); data += len; size -= len; } return 1; } int mars_read_picture_data (Camera *camera, Info *info, GPPort *port, char *data, int size, int n) { unsigned char c[16]; memset(c,0,sizeof(c)); /*Initialization routine for download. */ mars_routine (info, port, GET_DATA, n); /*Data transfer begins*/ set_usb_in_endpoint (camera, 0x82); mars_read_data (port, data, size); set_usb_in_endpoint (camera, 0x83); return GP_OK; } int mars_reset (GPPort *port) { gp_port_write(port, "\x19\x54", 2); return GP_OK; } static void precalc_table(code_table_t *table) { int i; int is_abs, val, len; for (i = 0; i < 256; i++) { is_abs = 0; val = 0; len = 0; if ((i & 0x80) == 0) { /* code 0 */ val = 0; len = 1; }else if ((i & 0xE0) == 0xC0) { /* code 110 */ val = -3; len = 3; }else if ((i & 0xE0) == 0xA0) { /* code 101 */ val = +3; len = 3; }else if ((i & 0xF0) == 0x80) { /* code 1000 */ val = +8; len = 4; }else if ((i & 0xF0) == 0x90) { /* code 1001 */ val = -8; len = 4; }else if ((i & 0xF0) == 0xF0) { /* code 1111 */ val = -20; len = 4; }else if ((i & 0xF8) == 0xE0) { /* code 11100 */ val = +20; len = 5; }else if ((i & 0xF8) == 0xE8) { /* code 11101xxxxx */ is_abs = 1; val = 0; /* value is calculated later */ len = 5; } table[i].is_abs = is_abs; table[i].val = val; table[i].len = len; } } #define CLAMP(x) ((x)<0?0:((x)>255)?255:(x)) #define GET_CODE addr = inp + (bitpos >> 3); \ code = (addr[0] << (bitpos & 7)) | (addr[1] >> (8 - (bitpos & 7))) int mars_decompress (unsigned char *inp, unsigned char *outp, int width, int height) { int row, col; unsigned char code; int val; code_table_t table[256]; unsigned char *addr; int bitpos; unsigned char lp=0,tp=0,tlp=0,trp=0; /* First calculate the Huffman table */ precalc_table(table); bitpos = 0; /* main decoding loop */ for (row = 0; row < height; row++) { col = 0; /* first two pixels in first two rows are stored as raw 8-bit */ if (row < 2) { GET_CODE; bitpos += 8; *outp++ = code; GET_CODE; bitpos += 8; *outp++ = code; col += 2; } while (col < width) { /* get bitcode */ GET_CODE; /* update bit position */ bitpos += table[code].len; /* calculate pixel value */ if (table[code].is_abs) { /* get 5 more bits and use them as absolute value */ GET_CODE; val = (code & 0xF8); bitpos += 5; }else { /* value is relative to top or left pixel */ val = table[code].val; lp = outp[-2]; if (row > 1) { tlp = outp[-2*width-2]; tp = outp[-2*width]; if (col < width-2) trp = outp[-2*width+2]; } if (row < 2) { /* top row: relative to left pixel */ val += lp; }else if (col < 2) { /* left column: relative to top pixel */ /* initial estimate */ val += (tp + trp)/2; }else if (col > width - 3) { /* left column: relative to top pixel */ val += (tp + lp + tlp +1)/3; /* main area: average of left and top pixel */ }else { /* initial estimate for predictor */ tlp>>=1; trp>>=1; val += (lp + tp + tlp + trp +1)/3; } } /* store pixel */ *outp++ = CLAMP(val); col++; } } return GP_OK; } static int mars_routine (Info *info, GPPort *port, char param, int n) { char c[16]; char start[2] = {0x19, 0x51}; char do_something[2]; char address1[2]; char address2[2]; char address3[2]; char address4[2]; char address5[2]; char address6[2]; do_something[0]= 0x19; do_something[1]=param; /* See protocol.txt for my theories about what these mean. */ address1[0] = 0x19; address1[1] = info[8*n+1]; address2[0] = 0x19; address2[1] = info[8*n+2]; address3[0] = 0x19; address3[1] = info[8*n+3]; address4[0] = 0x19; address4[1] = info[8*n+4]; address5[0] = 0x19; address5[1] = info[8*n+5]; address6[0] = 0x19; address6[1] = info[8*n+6]; memset(c,0,sizeof(c)); /*Routine used in initialization, photo download, and reset. */ m_read(port, c, 16); m_command(port, start, 2, c); m_command(port, do_something, 2, c); m_command(port, address1, 2, c); c[0] = 0; gp_port_write(port, address2, 2); /* Moving the memory cursor to the given address? */ while (( c[0] != 0xa) ) { m_read(port, c, 16); } m_command(port, address3, 2, c); m_command(port, address4, 2, c); m_command(port, address5, 2, c); m_command(port, address6, 2, c); gp_port_write(port, "\x19", 1); gp_port_read(port, c , 16); /* Next thing is to switch the inep. Some cameras need a pause here */ usleep (MARS_SLEEP); return(c[0]); } /* * ========= White Balance / Color Enhance / Gamma adjust =============== * * Get histogram for each color plane * Expand to reach 0.5% of white dots in image * * Get new histogram for each color plane * Expand to reach 0.5% of black dots in image * * Get new histogram * Calculate and apply gamma correction * * if not a dark image: * For each dot, increases color separation * * ====================================================================== */ int histogram (unsigned char *data, unsigned int size, int *htable_r, int *htable_g, int *htable_b) { int x; /* Initializations */ for (x = 0; x < 0x100; x++) { htable_r[x] = 0; htable_g[x] = 0; htable_b[x] = 0; } /* Building the histograms */ for (x = 0; x < (size * 3); x += 3) { htable_r[data[x+0]]++; /* red histogram */ htable_g[data[x+1]]++; /* green histogram */ htable_b[data[x+2]]++; /* blue histogram */ } return 0; } int mars_white_balance (unsigned char *data, unsigned int size, float saturation, float image_gamma) { int x, r, g, b, max, d; double r_factor, g_factor, b_factor, max_factor; int htable_r[0x100], htable_g[0x100], htable_b[0x100]; unsigned char gtable[0x100]; double new_gamma, gamma=1.0; /* ------------------- GAMMA CORRECTION ------------------- */ histogram(data, size, htable_r, htable_g, htable_b); x = 1; for (r = 48; r < 208; r++) { x += htable_r[r]; x += htable_g[r]; x += htable_r[r]; } new_gamma = sqrt((double) (x * 1.5) / (double) (size * 3)); x=0; GP_DEBUG("Provisional gamma correction = %1.2f\n", new_gamma); /* Recalculate saturation factor for later use. */ saturation=saturation*new_gamma*new_gamma; GP_DEBUG("saturation = %1.2f\n", saturation); if(new_gamma >= 1.0) gamma = new_gamma; else gamma = image_gamma; GP_DEBUG("Gamma correction = %1.2f\n", gamma); gp_gamma_fill_table(gtable, gamma); /* ---------------- BRIGHT DOTS ------------------- */ max = size / 200; histogram(data, size, htable_r, htable_g, htable_b); for (r=0xfe, x=0; (r > 32) && (x < max); r--) x += htable_r[r]; for (g=0xfe, x=0; (g > 32) && (x < max); g--) x += htable_g[g]; for (b=0xfe, x=0; (b > 32) && (x < max); b--) x += htable_b[b]; r_factor = (double) 0xfd / r; g_factor = (double) 0xfd / g; b_factor = (double) 0xfd / b; max_factor = r_factor; if (g_factor > max_factor) max_factor = g_factor; if (b_factor > max_factor) max_factor = b_factor; if (max_factor >= 2.5) { r_factor = (r_factor / max_factor) * 2.5; g_factor = (g_factor / max_factor) * 2.5; b_factor = (b_factor / max_factor) * 2.5; } GP_DEBUG("White balance (bright): r=%1d, g=%1d, b=%1d, fr=%1.3f, fg=%1.3f, fb=%1.3f\n", r, g, b, r_factor, g_factor, b_factor); if (max_factor <= 2.5) { for (x = 0; x < (size * 3); x += 3) { d = (data[x+0]<<8) * r_factor; d >>=8; if (d > 0xff) { d = 0xff; } data[x+0] = d; d = (data[x+1]<<8) * g_factor; d >>=8; if (d > 0xff) { d = 0xff; } data[x+1] = d; d = (data[x+2]<<8) * b_factor; d >>=8; if (d > 0xff) { d = 0xff; } data[x+2] = d; } } /* ---------------- DARK DOTS ------------------- */ max = size / 200; /* 1/200 = 0.5% */ histogram(data, size, htable_r, htable_g, htable_b); for (r=0, x=0; (r < 96) && (x < max); r++) x += htable_r[r]; for (g=0, x=0; (g < 96) && (x < max); g++) x += htable_g[g]; for (b=0, x=0; (b < 96) && (x < max); b++) x += htable_b[b]; r_factor = (double) 0xfe / (0xff-r); g_factor = (double) 0xfe / (0xff-g); b_factor = (double) 0xfe / (0xff-b); max_factor = r_factor; if (g_factor > max_factor) max_factor = g_factor; if (b_factor > max_factor) max_factor = b_factor; if (max_factor >= 1.15) { r_factor = (r_factor / max_factor) * 1.15; g_factor = (g_factor / max_factor) * 1.15; b_factor = (b_factor / max_factor) * 1.15; } GP_DEBUG( "White balance (dark): r=%1d, g=%1d, b=%1d, fr=%1.3f, fg=%1.3f, fb=%1.3f\n", r, g, b, r_factor, g_factor, b_factor); for (x = 0; x < (size * 3); x += 3) { d = (int) 0xff08-(((0xff-data[x+0])<<8) * r_factor); d >>= 8; if (d < 0) { d = 0; } data[x+0] = d; d = (int) 0xff08-(((0xff-data[x+1])<<8) * g_factor); d >>= 8; if (d < 0) { d = 0; } data[x+1] = d; d = (int) 0xff08-(((0xff-data[x+2])<<8) * b_factor); d >>= 8; if (d < 0) { d = 0; } data[x+2] = d; } /* ------------------ COLOR ENHANCE ------------------ */ if(saturation > 0.0) { for (x = 0; x < (size * 3); x += 3) { r = data[x+0]; g = data[x+1]; b = data[x+2]; d = (int) (r + g + b) /3.; if ( r > d ) r = r + (int) ((r - d) * (0xff-r)/(0x100-d) * saturation); else r = r + (int) ((r - d) * (0xff-d)/(0x100-r) * saturation); if (g > d) g = g + (int) ((g - d) * (0xff-g)/(0x100-d) * saturation); else g = g + (int) ((g - d) * (0xff-d)/(0x100-g) * saturation); if (b > d) b = b + (int) ((b - d) * (0xff-b)/(0x100-d) * saturation); else b = b + (int) ((b - d) * (0xff-d)/(0x100-b) * saturation); data[x+0] = CLAMP(r); data[x+1] = CLAMP(g); data[x+2] = CLAMP(b); } } return 0; } libgphoto2-2.5.9/camlibs/mars/Makefile-files0000644000175000001440000000045712561423351015641 00000000000000EXTRA_DIST += mars/protocol.txt mars/README.mars mars/ChangeLog camlibdoc_DATA += mars/README.mars EXTRA_LTLIBRARIES += mars.la mars_la_SOURCES = mars/library.c mars/mars.c mars/mars.h mars_la_LDFLAGS = $(camlib_ldflags) mars_la_DEPENDENCIES = $(camlib_dependencies) mars_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/mars/ChangeLog0000644000175000001440000001501712610415510014642 000000000000002008-04-28 Theodore Kilgore * library.c: MerchSource "Shift3" discovered at CVS pharmacy, added. 2008-04-28 Theodore Kilgore * library.c: gp_ahd_decode() replaces gp_bayer_decode() 2008-03-15 Theodore Kilgore * mars.[c,h]: mars_white_balance() postprocessing function, based upon work with Amauri Magagna done for an Aox camera. * library.c: Added line to use mars_white_balance() * README.mars: Description of what mars_white_balance() does. 2007-11-15 Theodore Kilgore * library.c: Added Sakar no. 1638x Cyberpix * README.mars: Description of new camera added. 2007-10-12 Theodore Kilgore * mars.c: "0x50" decompression issues resolved. 2007-10-21 Theodore Kilgore * library.c: Added Vivitar Mini Digital Camera * README.mars: Description of new camera added. 2007-08-14 Theodore Kilgore * library.c: Added Trust Spycam 100, reported by Aurelien Jacobs 2007-04-07 Theodore Kilgore * library.c: Clean up signedness errors * mars.c: ditto 2007-04-07 Theodore Kilgore * library.c: Added support for downloading audio files, as some of the Mars cameras have such abilities. * README.mars: revisions. 2007-01-24 Theodore Kilgore * library.c: Added "Sakar 56399 Spyshot" Added "Pixart Gemini Keychain Camera" reported by R P Herrold * README.mars: Added these cameras there, too. 2006-12-23 Theodore Kilgore * library.c: Added "ION digital camera" * README.mars: Added "ION digital camera" 2006-11-19 Marcus Meissner * mars.c,mars.h: Made some functions static to mars.c 2006-09-23 Theodore Kilgore * library.c: RAW files saved now with pixelsize information, so that the info in them is "self-contained". * mars.c: usleep() added to mars_routine() to fix a USB timing problem reported by conon . Changes to decompression algorithm proposed by conon also adopted. Changes to way of handling RAW files imply elimination of mars_get_picture_width(). * mars.h: now-extraneous functions de-listed. * README: updated; changes to RAW file header explained. * protocol.txt: updated. 2006-08-28 Theodore Kilgore * library.c: Added INNOVAGE Digital Mini. Corrected USB Product number for Philips Keychain camera (worked anyway, but number was wrong). Minor tweak to gamma setting. Improvements to camera_manual(). * mars.c: More improvements in mars_decompress(). * README: updated. 2006-02-08 Theodore Kilgore * library.c: Added two new cameras. One is the Argus QuickClix, which uses a new, still unsolved compression codec and is therefore marked as DEPRECATED. The other cameras I personally own are upgraded to TESTING, because of improvements in decompression. Minor code changes in get_file_func(). Improvements to camera_manual(). * mars.c: Improvements in mars_decompress(). mars_postprocess() eliminated. * mars.h: mars_postprocess() eliminated. * README: updated. * protocol.txt: updated. 2005-09-21 Theodore Kilgore * mars.c: Removal of two overlooked "//" comment symbols. 2005-09-19 Theodore Kilgore * library.c: Added Argus DC-1610 and Philips P44417B keychain camera. * mars.c: More improvement for decompression, based upon some ideas of Michel Xhaard . 2005-09-12 Theodore Kilgore * library.c: Added Argus DC-1620 to list of experimentally supported. 2005-09-12 Theodore Kilgore * library.c: Changes to get_file_func() include new computation for gamma factor. * mars.c: Support for compressed mode. Thanks to Bertrik Sikkens for help with the algorithm and to Michel Xhaard for testing. Minor changes to mars_init(); mars_postprocess() distinguishes between compressed and uncompressed; mars_get_gamma() eliminated. * mars.h: Changes to accommodate changes in mars.c. * README: Updated. * protocol.txt: Updated. 2005-06-12 Theodore Kilgore * library.c: Added CD302N, reported by Pedro de Oliveira Code cleanup. * mars.c: Code cleanup. Argus DC-1620 will download raw files now. * mars.h: Code cleanup. 2005-01-24 Theodore Kilgore * library.c: Added Precision Mini Model HA513A, reported by Alexander Bostrom. get_info_func() added, patch from Alexander Bostrom 2005-01-17 Theodore Kilgore * library.c: Argus DC-1610/20 do not currently work; commented out. 2005-01-14 Theodore Kilgore * library.c: Added Argus DC-1610 and DC-1620. 2004-12-22 Hubert Figuiere * library.c (camera_manual): fixed some trigraph issues. 2004-10-26 Theodore Kilgore * library.c: ID for Haimei HE-501A, reported by Scott MacKenzie ID for Elta Medi@ digicam, reported by Nils Naumann, Support patch submitted by Scott, tested by Nils. * mars.c: Scott's patch applied. * protocol.txt: byte codes for new 352x288 and 176x144 resolution settings recorded; section "UPDATES and REVISIONS" added. 2004-09-04 Theodore Kilgore * library.c: Vivitar Vivicam 55 added. Credits to Sebastien Soilen * mars.c: init sequence improved; thanks to Sebastien for intensive testing. 2004-06-09 Theodore Kilgore * library.c: support for thumbnails; gtkam works now * mars.c: choice routine for gamma factor * mars.h: choice routine for gamma factor * README: support for gtkam described 2004-05-18 Theodore Kilgore * library.c: Model Emprex PCD3800 added. Credits to Hisham Muhammad 2004-05-02 Theodore Kilgore * mars.c: Minor changes to lessen memory footprint. * library.c: Minor changes to lessen memory footprint. 2004-05-01 Theodore Kilgore * *.[c,h]: First check-in. libgphoto2-2.5.9/camlibs/mars/mars.h0000644000175000001440000000335012610415524014205 00000000000000/* mars.h * * Copyright (C) 2003 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __mars_H__ #define __mars_H__ #include #include typedef unsigned char Info; /* Huffman table for decompressing the compressed mode */ typedef struct { int is_abs; int len; int val; } code_table_t; #define MARS_SLEEP 10000 int mars_init (Camera *camera, GPPort *port, Info *info); int mars_reset (GPPort *port); int mars_get_num_pics (Info *info); int mars_get_pic_data_size (Info *info, int n); int mars_read_picture_data (Camera *camera, Info *info, GPPort *port, char *data, int size, int n); int mars_decompress (unsigned char *inp ,unsigned char *outp, int w, int h); int histogram (unsigned char *data, unsigned int size, int *htable_r, int *htable_g, int *htable_b); int mars_white_balance (unsigned char *data, unsigned int size, float saturation, float image_gamma); #endif libgphoto2-2.5.9/camlibs/directory/0000755000175000001440000000000012623156267014225 500000000000000libgphoto2-2.5.9/camlibs/directory/directory.c0000644000175000001440000005005712610415536016315 00000000000000/* directory.c * * Copyright (c) 2001 Lutz Mueller * Copyright (c) 2005 Marcus Meissner * Copyright (c) 2007 Hubert Figuiere * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #ifdef HAVE_SYS_STATVFS_H # include #endif #ifdef HAVE_SYS_PARAM_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_STATFS_H # include #endif #include /* will happen only on Win32 */ #ifndef HAVE_LSTAT #define lstat stat #endif #ifdef HAVE_LIBEXIF #include #endif #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif static const struct { const char *extension; const char *mime_type; } mime_table[] = { {"jpeg", GP_MIME_JPEG}, {"jpg", GP_MIME_JPEG}, {"thm", GP_MIME_JPEG}, {"tif", GP_MIME_TIFF}, {"ppm", GP_MIME_PPM}, {"pgm", GP_MIME_PGM}, {"avi", GP_MIME_AVI}, {"mov", GP_MIME_QUICKTIME}, {"moov", GP_MIME_QUICKTIME}, {"qt", GP_MIME_QUICKTIME}, {"qtvr", GP_MIME_QUICKTIME}, {"mp2", GP_MIME_MPEG}, {"mp3", GP_MIME_MPEG}, {"mp4", GP_MIME_MPEG}, {"mpg", GP_MIME_MPEG}, {"mpeg", GP_MIME_MPEG}, {"mpe", GP_MIME_MPEG}, {"ogg", GP_MIME_OGG}, {"mts", GP_MIME_AVCHD}, {"m2ts", GP_MIME_AVCHD}, {"pbm", "image/x-portable-bitmap"}, {"crw", GP_MIME_CRW}, {"rw2", GP_MIME_RW2}, {"cr2", GP_MIME_RAW}, {"nef", GP_MIME_RAW}, {"mrw", GP_MIME_RAW}, {"dng", GP_MIME_RAW}, {"sr2", GP_MIME_RAW}, {"raf", GP_MIME_RAW}, {"erf", GP_MIME_RAW}, {"orf", GP_MIME_RAW}, {"arw", GP_MIME_RAW}, {"pef", GP_MIME_RAW}, {"raw", GP_MIME_RAW}, {"dcr", GP_MIME_RAW}, {"x3f", GP_MIME_RAW}, {"srw", GP_MIME_RAW}, {"gf1", GP_MIME_RAW}, {"srw", GP_MIME_RAW}, {"nrw", GP_MIME_RAW}, {"png", GP_MIME_PNG}, {"wav", GP_MIME_WAV}, {"3gp", "video/3gpp"}, {"3g2", "video/x-3gpp2"}, {"dif", "video/dv"}, {NULL, NULL} }; /* #define DEBUG */ /* #define FOLLOW_LINKS */ #define GP_MODULE "directory" static const char * get_mime_type (const char *filename) { char *dot; int x=0; dot = strrchr(filename, '.'); if (dot) { for (x = 0; mime_table[x].extension; x++) { #ifdef OS2 if (!stricmp(mime_table[x].extension, dot+1)) #else if (!strcasecmp (mime_table[x].extension, dot+1)) #endif return (mime_table[x].mime_type); } } return (NULL); } int camera_id (CameraText *id) { strcpy(id->text, "directory"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); strcpy(a.model, "Directory Browse"); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_DISK; a.speed[0] = 0; a.operations = GP_OPERATION_NONE; #ifdef DEBUG a.file_operations = GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_EXIF; #else a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_EXIF; #endif a.folder_operations = GP_FOLDER_OPERATION_MAKE_DIR | GP_FOLDER_OPERATION_REMOVE_DIR | GP_FOLDER_OPERATION_PUT_FILE; gp_abilities_list_append(list, a); /* Since "Directory Browse" is hardcoded in clients, * better also add a new name here. */ strcpy(a.model, "Mass Storage Camera"); gp_abilities_list_append(list, a); return (GP_OK); } static int _get_mountpoint(GPPort *port, char **path) { GPPortInfo info; int ret; char *p; ret = gp_port_get_info (port, &info); if (ret < GP_OK) return ret; ret = gp_port_info_get_path (info, path); if (ret < GP_OK) return ret; p = strchr (*path, ':'); if (p) *path = p+1; return GP_OK; } static int _get_path (GPPort *port, const char *folder, const char *file, char *path, unsigned int size) { if (port->type == GP_PORT_DISK) { int ret; char *xpath; ret = _get_mountpoint (port, &xpath); if (ret < GP_OK) return ret; snprintf (path, size, "%s/%s/%s", xpath, folder, file); } else { /* old style access */ snprintf (path, size, "%s/%s", folder, file); } return GP_OK; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { gp_system_dir dir; gp_system_dirent de; char buf[1024], f[1024]; unsigned int id, n; int ret; Camera *camera = (Camera*)data; if (camera->port->type == GP_PORT_DISK) { char *path; ret = _get_mountpoint (camera->port, &path); if (ret < GP_OK) return ret; snprintf (f, sizeof(f), "%s/%s/", path, folder); /* UNIX / is empty, or we recurse through the whole fs */ if ( (!strcmp(path, "") || !strcmp(path, "/")) && !strcmp(folder,"/") ) return GP_OK; } else { /* old style access */ if (folder[strlen(folder)-1] != '/') { snprintf (f, sizeof(f), "%s%c", folder, '/'); } else { strncpy (f, folder, sizeof(f)); } } dir = gp_system_opendir ((char*) f); if (!dir) return (GP_ERROR); /* Make sure we have 1 delimiter */ /* Count the files */ n = 0; while (gp_system_readdir (dir)) n++; gp_system_closedir (dir); dir = gp_system_opendir (f); if (!dir) return (GP_ERROR); id = gp_context_progress_start (context, n, _("Listing files in " "'%s'..."), f); n = 0; while ((de = gp_system_readdir(dir))) { const char * filename = NULL; /* Give some feedback */ gp_context_progress_update (context, id, n + 1); gp_context_idle (context); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { gp_system_closedir (dir); return (GP_ERROR_CANCEL); } filename = gp_system_filename(de); if (*filename != '.') { snprintf (buf, sizeof(buf), "%s%s", f, filename); if (gp_system_is_file (buf) && (get_mime_type (buf))) { gp_list_append (list, filename, NULL); } } n++; } gp_system_closedir (dir); gp_context_progress_stop (context, id); return (GP_OK); } static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { gp_system_dir dir; gp_system_dirent de; char buf[1024], f[1024]; unsigned int id, n; struct stat st; Camera *camera = (Camera*)data; if (camera->port->type == GP_PORT_DISK) { char *path; int ret; ret = _get_mountpoint (camera->port, &path); if (ret < GP_OK) return ret; snprintf (f, sizeof(f), "%s/%s/", path, folder); /* UNIX / is empty, or we recurse through the whole fs */ if ( (!strcmp(path, "") || !strcmp(path, "/")) && !strcmp(folder,"/") ) return GP_OK; } else { /* old style access */ /* Make sure we have 1 delimiter */ if (folder[strlen(folder)-1] != '/') { snprintf (f, sizeof(f), "%s%c", folder, '/'); } else { strncpy (f, folder, sizeof(f)); } } dir = gp_system_opendir ((char*) f); if (!dir) return GP_ERROR; /* Count the files */ n = 0; while (gp_system_readdir (dir)) n++; gp_system_closedir (dir); dir = gp_system_opendir (f); if (!dir) return GP_ERROR; id = gp_context_progress_start (context, n, _("Listing folders in " "'%s'..."), folder); n = 0; while ((de = gp_system_readdir (dir))) { const char * filename = NULL; /* Give some feedback */ gp_context_progress_update (context, id, n + 1); gp_context_idle (context); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { gp_system_closedir (dir); return GP_ERROR_CANCEL; } filename = gp_system_filename (de); if (*filename != '.') { snprintf (buf, sizeof(buf), "%s%s", f, filename); /* lstat ... do not follow symlinks */ if (lstat (buf, &st) != 0) { int saved_errno = errno; gp_context_error (context, _("Could not get information " "about '%s' (%s)."), buf, strerror(saved_errno)); gp_system_closedir (dir); return GP_ERROR; } if (S_ISDIR (st.st_mode)) { gp_list_append(list, filename, NULL); } } n++; } gp_system_closedir (dir); gp_context_progress_stop (context, id); return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo *info, void *data, GPContext *context) { char path[1024]; const char *mime_type; struct stat st; Camera *camera = (Camera*)data; int result; result = _get_path (camera->port, folder, file, path, sizeof(path)); if (result < GP_OK) return result; if (lstat (path, &st) != 0) { int saved_errno = errno; gp_context_error (context, _("Could not get information " "about '%s' in '%s' (%s)."), file, folder, strerror(saved_errno)); return (GP_ERROR); } info->preview.fields = GP_FILE_INFO_NONE; info->file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE | GP_FILE_INFO_PERMISSIONS | GP_FILE_INFO_MTIME; info->file.mtime = st.st_mtime; info->file.permissions = GP_FILE_PERM_NONE; if (st.st_mode & S_IRUSR) info->file.permissions |= GP_FILE_PERM_READ; if (st.st_mode & S_IWUSR) info->file.permissions |= GP_FILE_PERM_DELETE; info->file.size = st.st_size; mime_type = get_mime_type (file); if (!mime_type) mime_type = GP_MIME_UNKNOWN; strcpy (info->file.type, mime_type); return (GP_OK); } static int set_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo info, void *data, GPContext *context) { int retval; char path[1024]; Camera *camera = (Camera*)data; retval = _get_path (camera->port, folder, file, path, sizeof(path)); if (retval < GP_OK) return retval; /* We don't support updating permissions (yet) */ if (info.file.fields & GP_FILE_INFO_PERMISSIONS) return (GP_ERROR_NOT_SUPPORTED); if (info.file.fields & GP_FILE_INFO_MTIME) { struct utimbuf utimbuf; utimbuf.actime = info.file.mtime; utimbuf.modtime = info.file.mtime; if (utime (path, &utimbuf) != 0) { int saved_errno = errno; gp_context_error (context, _("Could not change " "time of file '%s' in '%s' (%s)."), file, folder, strerror(saved_errno)); return (GP_ERROR); } } #if 0 /* implement this using new api -Marcus */ if (info.file.fields & GP_FILE_INFO_NAME) { if (!strcasecmp (info.file.name, file)) return (GP_OK); /* We really have to rename the poor file... */ if (strlen (folder) == 1) { snprintf (path_old, sizeof (path_old), "/%s", file); snprintf (path_new, sizeof (path_new), "/%s", info.file.name); } else { snprintf (path_old, sizeof (path_old), "%s/%s", folder, file); snprintf (path_new, sizeof (path_new), "%s/%s", folder, info.file.name); } retval = rename (path_old, path_new); if (retval != 0) { switch (errno) { case EISDIR: return (GP_ERROR_DIRECTORY_EXISTS); case EEXIST: return (GP_ERROR_FILE_EXISTS); case EINVAL: return (GP_ERROR_BAD_PARAMETERS); case EIO: return (GP_ERROR_IO); case ENOMEM: return (GP_ERROR_NO_MEMORY); case ENOENT: return (GP_ERROR_FILE_NOT_FOUND); default: return (GP_ERROR); } } } #endif return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { char path[1024]; int result = GP_OK; struct stat stbuf; int fd, id; unsigned int curread, toread; unsigned char *buf; #ifdef HAVE_LIBEXIF ExifData *data; unsigned int buf_len; #endif /* HAVE_LIBEXIF */ Camera *camera = (Camera*)user_data; result = _get_path (camera->port, folder, filename, path, sizeof(path)); if (result < GP_OK) return result; if (-1 == lstat(path,&stbuf)) return GP_ERROR_IO_READ; gp_file_set_mtime (file, stbuf.st_mtime); switch (type) { case GP_FILE_TYPE_NORMAL: #ifdef DEBUG case GP_FILE_TYPE_PREVIEW: #endif fd = open (path,O_RDONLY); if (fd == -1) return GP_ERROR_IO_READ; break; #ifdef HAVE_LIBEXIF case GP_FILE_TYPE_EXIF: data = exif_data_new_from_file (path); if (!data) { gp_context_error (context, _("Could not open '%s'."), path); return (GP_ERROR); } exif_data_save_data (data, &buf, &buf_len); exif_data_unref (data); gp_file_set_data_and_size (file, (char *)buf, buf_len); return (GP_OK); #endif /* HAVE_LIBEXIF */ default: return (GP_ERROR_NOT_SUPPORTED); } #define BLOCKSIZE 65536 /* do it in 64kb blocks */ buf = malloc(BLOCKSIZE); if (!buf) { close (fd); return GP_ERROR_NO_MEMORY; } if (-1 == fstat(fd,&stbuf)) { free (buf); close (fd); return GP_ERROR_IO_READ; } curread = 0; id = gp_context_progress_start (context, (1.0*stbuf.st_size/BLOCKSIZE), _("Getting file...")); GP_DEBUG ("Progress id: %i", id); result = GP_OK; while (curread < stbuf.st_size) { int ret; toread = stbuf.st_size-curread; if (toread>BLOCKSIZE) toread = BLOCKSIZE; ret = read(fd,buf,toread); if (ret == -1) { result = GP_ERROR_IO_READ; break; } curread += ret; gp_file_append (file, (char *)buf, ret); gp_context_progress_update (context, id, (1.0*curread/BLOCKSIZE)); gp_context_idle (context); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { result = GP_ERROR_CANCEL; break; } #if 0 /* We could take 2 seconds to download this image. everytime. */ /* But actually this driver is used in production by some frontends, * so do not delay at all */ usleep(2000000/(stbuf.st_size/BLOCKSIZE)); #endif } gp_context_progress_stop (context, id); free (buf); close (fd); return (GP_OK); } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy (manual->text, _("The Directory Browse \"camera\" lets " "you index photos on your hard drive.")); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Directory Browse Mode - written " "by Scott Fritzinger .")); return (GP_OK); } static int make_dir_func (CameraFilesystem *fs, const char *folder, const char *name, void *data, GPContext *context) { char path[2048]; Camera *camera = (Camera*)data; int result; result = _get_path (camera->port, folder, name, path, sizeof(path)); if (result < GP_OK) return result; return gp_system_mkdir (path); } static int remove_dir_func (CameraFilesystem *fs, const char *folder, const char *name, void *data, GPContext *context) { char path[2048]; Camera *camera = (Camera*)data; int result; result = _get_path (camera->port, folder, name, path, sizeof(path)); if (result < GP_OK) return result; return gp_system_rmdir (path); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *file, void *data, GPContext *context) { char path[2048]; int result; Camera *camera = (Camera*)data; result = _get_path (camera->port, folder, file, path, sizeof(path)); if (result < GP_OK) return result; result = unlink (path); if (result) { int saved_errno = errno; gp_context_error (context, _("Could not delete file '%s' " "in folder '%s' (error code %i: %s)."), file, folder, result, strerror(saved_errno)); return (GP_ERROR); } return (GP_OK); } static int put_file_func (CameraFilesystem *fs, const char *folder, const char *name, CameraFileType type, CameraFile *file, void *data, GPContext *context) { char path[2048]; int result; #ifdef DEBUG unsigned int i, id; #endif Camera *camera = (Camera*)data; result = _get_path (camera->port, folder, name, path, sizeof(path)); if (result < GP_OK) return result; result = gp_file_save (file, path); if (result < 0) return (result); #ifdef DEBUG id = gp_context_progress_start (context, 500., "Uploading file..."); for (i = 0; i < 500; i++) { gp_context_progress_update (context, id, i + 1); gp_context_idle (context); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (result); usleep (10); } gp_context_progress_stop (context, id); #endif return (GP_OK); } #ifdef DEBUG static int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { int r; r = gp_file_open (file, "/usr/share/pixmaps/gnome-logo-large.png"); if (r < 0) return (r); return (GP_OK); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { if (path) { strcpy (path->folder, "/usr/share/pixmaps"); strcpy (path->name, "gnome-logo-large.png"); } return (GP_OK); } #endif static int storage_info_func (CameraFilesystem *fs, CameraStorageInformation **sinfos, int *nrofsinfos, void *data, GPContext *context ) { Camera *camera = data; CameraStorageInformation *sfs; #if defined(linux) && defined(HAVE_STATFS) struct statfs stfs; char *xpath; int ret; ret = _get_mountpoint (camera->port, &xpath); if (ret < GP_OK) return ret; if (-1 == statfs (xpath, &stfs)) return GP_ERROR_NOT_SUPPORTED; sfs = malloc (sizeof (CameraStorageInformation)); if (!sfs) return GP_ERROR_NO_MEMORY; *sinfos = sfs; *nrofsinfos = 1; sfs->fields = GP_STORAGEINFO_BASE | GP_STORAGEINFO_DESCRIPTION | GP_STORAGEINFO_STORAGETYPE | GP_STORAGEINFO_FILESYSTEMTYPE | GP_STORAGEINFO_ACCESS | GP_STORAGEINFO_MAXCAPACITY | GP_STORAGEINFO_FREESPACEKBYTES; ; strcpy (sfs->basedir, "/"); strcpy (sfs->description, "Directory Driver"); sfs->type = GP_STORAGEINFO_ST_REMOVABLE_RAM; sfs->fstype = GP_STORAGEINFO_FST_GENERICHIERARCHICAL; sfs->access = GP_STORAGEINFO_AC_READWRITE; if (stfs.f_bsize >= 1024) { sfs->capacitykbytes = stfs.f_blocks*(stfs.f_bsize/1024); sfs->freekbytes = stfs.f_bavail*(stfs.f_bsize/1024); } else { sfs->capacitykbytes = stfs.f_blocks/(1024/stfs.f_bsize); sfs->freekbytes = stfs.f_bavail/(1024/stfs.f_bsize); } return GP_OK; #endif return GP_ERROR_NOT_SUPPORTED; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .set_info_func = set_info_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .put_file_func = put_file_func, .del_file_func = delete_file_func, .make_dir_func = make_dir_func, .remove_dir_func = remove_dir_func, .storage_info_func = storage_info_func, }; int camera_init (Camera *camera, GPContext *context) { /* First, set up all the function pointers */ camera->functions->manual = camera_manual; camera->functions->about = camera_about; return gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); } libgphoto2-2.5.9/camlibs/directory/Makefile-files0000644000175000001440000000051212610415517016673 00000000000000EXTRA_LTLIBRARIES += directory.la EXTRA_DIST += directory/ChangeLog directory_la_SOURCES = directory/directory.c directory_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) $(LIBEXIF_CFLAGS) directory_la_LDFLAGS = $(camlib_ldflags) directory_la_DEPENDENCIES = $(camlib_dependencies) directory_la_LIBADD = $(camlib_libadd) $(LIBEXIF_LIBS) libgphoto2-2.5.9/camlibs/directory/ChangeLog0000644000175000001440000000416312610415510015704 000000000000002008-03-15 Marcus Meissner * rewritten for new GPPortInfo handling, factored out common functionality. 2007-10-27 Marcus Meissner * directory.c: Do not use gp_file_open(), but do direct UNIX I/O, also to show stepwise and progress. 2007-01-17 Marcus Meissner * directory.c: Added getting of Storage Information. 2006-06-03 Hubert Figuiere * directory.c: Added more extensions as file types. 2005-08-17 Marcus Meissner * directory.c: Use "Mass Storage Camera" to avoid hardcoded client hacks for "Directory Browse". 2005-08-14 Marcus Meissner * directory.c: Support GP_PORT_DISK style ports with offset directories. 2003-02-27 Marcus Meissner * directory.c: We support EXIF download. 2003-01-29 Hubert Figuiere * directory.c (file_list_func): call GP_SYSTEM_CLOSEDIR() where appropriate to not leak. (folder_list_func): same as above. 2002-11-20 Lutz Müller * directory.c: Additional debugging stuff. 2002-11-04 Lutz Müller * directory.c: Don't follow links. 2002-07-17 Lutz Müller * directory.c: Improve user feedback by calling gp_context_idle. 2002-02-26 Lutz Müller * directory.c (delete_file_func): In case of error, tell the user what went wrong. 2002-02-13 Dan Fandrich * directory.c: Now using MIME type macros. Replaced // comment. 2002-02-07 Lutz Müller * directory.c: Detect *.jpeg files, too. 2002-02-07 Lutz Müller * Makefile.am: * directory.c: Support GP_FILE_TYPE_EXIF ifdef HAVE_EXIF 2001-12-29 Lutz Müller * directory.c: Even more debugging. 2001-12-28 Lutz Müller * directory.c: Debugging stuff, file deletion. 2001-11-27 Lutz Müller * directory.c: Support GP_FILE_TYPE_PREVIEW, too. libgphoto2-2.5.9/camlibs/sonydscf1/0000755000175000001440000000000012623156267014132 500000000000000libgphoto2-2.5.9/camlibs/sonydscf1/pmp.h0000644000175000001440000000265112610415617015014 00000000000000/* pmp.h * * Copyright (C) M. Adam Kendall * Copyright (C) 2002 Bart van Leeuwen * * Based on the chotplay CLI interface from Ken-ichi Hayashi 1996,1997 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define PMP_RESOLUTION 0x1d #define PMP_FIN 0x33 #define PMP_STD 0x17 #define PMP_ECM 0x08 #define PMP_COMMENT 0x34 #define PMP_TAKE_YEAR 0x4c #define PMP_TAKE_MONTH 0x4d #define PMP_TAKE_DATE 0x4e #define PMP_TAKE_HOUR 0x4f #define PMP_TAKE_MINUTE 0x50 #define PMP_TAKE_SECOND 0x51 #define PMP_EDIT_YEAR 0x54 #define PMP_EDIT_MONTH 0x55 #define PMP_EDIT_DATE 0x56 #define PMP_EDIT_HOUR 0x57 #define PMP_EDIT_MINUTE 0x58 #define PMP_EDIT_SECOND 0x59 #define PMP_SPEED 0x66 #define PMP_FLASH 0x76 libgphoto2-2.5.9/camlibs/sonydscf1/command.h0000644000175000001440000000271312610415617015635 00000000000000/* command.h * * Copyright (C) M. Adam Kendall * Copyright (C) 2002 Bart van Leeuwen * * Based on the chotplay CLI interface from Ken-ichi Hayashi 1996,1997 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __COMMAND_H__ #define __COMMAND_H__ int F1ok (GPPort*); long F1getdata (GPPort*,char *, unsigned char *); int F1status (GPPort*); char F1newstatus (GPPort *port, int, char *); int F1howmany (GPPort *); int F1fopen (GPPort *,char *); long F1fread(GPPort *,unsigned char *data, long len); long F1fwrite(GPPort *,unsigned char *data, long len, unsigned char b); long F1fseek (GPPort *,long, int); unsigned long F1finfo (GPPort *,char *); int F1fclose (GPPort *); int F1deletepicture (GPPort*,int); #endif /* __COMMAND_H__ */ libgphoto2-2.5.9/camlibs/sonydscf1/Makefile-files0000644000175000001440000000060312610415517016601 00000000000000EXTRA_DIST += sonydscf1/README.sonydscf1 sonydscf1/ChangeLog camlibdoc_DATA += sonydscf1/README.sonydscf1 EXTRA_LTLIBRARIES += sony_dscf1.la sony_dscf1_la_SOURCES = \ sonydscf1/command.c sonydscf1/command.h \ sonydscf1/sonydscf1.c sonydscf1/pmp.h sony_dscf1_la_LDFLAGS = $(camlib_ldflags) sony_dscf1_la_DEPENDENCIES = $(camlib_dependencies) sony_dscf1_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/sonydscf1/command.c0000644000175000001440000003101412610415617015624 00000000000000/* command.c * * Copyright (C) M. Adam Kendall * Copyright (C) 2002 Bart van Leeuwen * * Based on the chotplay CLI interface from Ken-ichi Hayashi 1996,1997 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include "command.h" static unsigned char address = 0; static const unsigned char sendaddr[8] = { 0x00, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee }; static const unsigned char recvaddr[8] = { 0x0e, 0x20, 0x42, 0x64, 0x86, 0xa8, 0xca, 0xec }; static int sw_mode = 0; static int pic_num = 0; static int pic_num2 = 0; static int year, month, date; static int hour, minutes; static const unsigned char BOFRAME = 0xC0; static const unsigned char EOFRAME = 0xC1; #define CESCAPE 0x7D static int F1reset(GPPort *port); static int wbyte(GPPort *port,unsigned char c) { unsigned char temp = c; return gp_port_write(port, (char*)&temp, 1); } static unsigned char checksum(unsigned char addr, unsigned char *cp, int len) { int ret = addr; while(len --) ret = ret + (*cp++); return(0x100 -(ret & 0xff) ); } static void sendcommand(GPPort *port,unsigned char *p, int len) { wbyte(port,BOFRAME); wbyte(port,sendaddr[address]); gp_port_write (port, (char*)p, len); wbyte(port,checksum(sendaddr[address], p, len)); wbyte(port,EOFRAME); address ++; if(address >7 ) address = 0; } static void Abort(GPPort *port) { unsigned char buf[4]; buf[0] = BOFRAME; buf[1] = 0x85; buf[2] = 0x7B; buf[3] = EOFRAME; gp_port_write (port, (char*)buf, 4); } static int recvdata(GPPort *port, unsigned char *p, int len) { unsigned char s, t; int sum; int i; gp_log (GP_LOG_DEBUG, "recvdata", "reading %d bytes", len); gp_port_read(port, (char *)&s, 1); /* BOFL */ gp_port_read(port, (char *)&t, 1); /* recvaddr */ if(t != recvaddr[address]){ gp_log (GP_LOG_ERROR, "recvdata", "address %02x does not match %02x, draining 3 bytes", t, recvaddr[address]); gp_port_read(port, (char *)&s, 1); /* drain */ gp_port_read(port, (char *)&s, 1); /* drain */ gp_port_read(port, (char *)&s, 1); /* drain */ Abort(port); return(-1); } i = len; sum = (int) t; while ((GP_OK <= gp_port_read(port, (char *)&s, 1)) && (s != EOFRAME)) { sum = sum + s; if(i > 0) { if(s == CESCAPE){ gp_port_read(port, (char *)&s, 1); if(0x20 & s) s = 0xDF & s; else s = 0x20 | s; } *p = s; p++; i--; } t = s; } gp_log (GP_LOG_DEBUG, "recvdata", "checksum expected %02x (have %02x)", t, sum ); gp_log (GP_LOG_DEBUG, "recvdata", "EOFL %02x (%d)", s, len - i); if(sum & 0xff){ gp_log (GP_LOG_ERROR, "recvdata" ,"Checksum error.(%02x)\n", sum); return(-1); } return(len - i); } /*------------------------------------------------------------*/ char F1newstatus(GPPort *port, int verbose, char *return_buf) { unsigned char buf[34]; char status_buf[1000]=""; char tmp_buf[150]=""; buf[0] = 0x03; buf[1] = 0x02; sendcommand(port,buf, 2); recvdata(port, buf, 33); #ifdef DEBUG fprintf(stderr,"Status: %02x%02x:%02x(len = %d)\n", buf[0], buf[1], buf[2], i); #endif if((buf[0] != 0x03) || (buf[1] != 0x02) ||(buf[2] != 0)){ Abort(port); return(-1); } sw_mode = buf[3]; pic_num = buf[4] * 0x100 + buf[5]; pic_num2 = buf[6] * 0x100 + buf[7]; year = (buf[10] >> 4 ) * 10 + (buf[10] & 0x0f); month = (buf[11] >> 4 ) * 10 + (buf[11] & 0x0f); date = (buf[12] >> 4 ) * 10 + (buf[12] & 0x0f); hour = (buf[13] >> 4 ) * 10 + (buf[13] & 0x0f); minutes = (buf[14] >> 4 ) * 10 + (buf[14] & 0x0f); if(verbose){ strcat(status_buf, "Current camera statistics\n\n"); strcat(status_buf, "Mode: "); switch (sw_mode){ case 1: strcat(status_buf, "Playback\n"); break; case 2: strcat(status_buf, "Record[Auto]\n"); break; case 3: strcat(status_buf, "Record[Manual]\n"); break; default: strcat(status_buf, "Huh?\n"); break; } sprintf(tmp_buf, "Total Pictures: %02d\n", pic_num); strncat(status_buf, tmp_buf, sizeof(tmp_buf)); sprintf(tmp_buf, "Date: %02d/%02d/%02d\n", month, date, year); strncat(status_buf, tmp_buf, sizeof(tmp_buf)); sprintf(tmp_buf, "Time: %02d:%02d\n",hour, minutes); strncat(status_buf, tmp_buf, sizeof(tmp_buf)); } strcpy(return_buf, status_buf); return (buf[2]); /*ok*/ } int F1status(GPPort *port) { unsigned char buf[34]; buf[0] = 0x03; buf[1] = 0x02; sendcommand(port,buf, 2); recvdata(port, buf, 33); #ifdef DEBUG fprintf(stderr,"Status: %02x%02x:%02x(len = %d)\n", buf[0], buf[1], buf[2], i); #endif if((buf[0] != 0x03) || (buf[1] != 0x02) ||(buf[2] != 0)){ Abort(port); return(-1); } sw_mode = buf[3]; pic_num = buf[4] * 0x100 + buf[5]; pic_num2 = buf[6] * 0x100 + buf[7]; year = (buf[10] >> 4 ) * 10 + (buf[10] & 0x0f); month = (buf[11] >> 4 ) * 10 + (buf[11] & 0x0f); date = (buf[12] >> 4 ) * 10 + (buf[12] & 0x0f); hour = (buf[13] >> 4 ) * 10 + (buf[13] & 0x0f); minutes = (buf[14] >> 4 ) * 10 + (buf[14] & 0x0f); if(0){ fprintf(stdout, "FnDial: "); switch (sw_mode){ case 1: fprintf(stdout, "play\n"); break; case 2: fprintf(stdout, "rec[A]\n"); break; case 3: fprintf(stdout, "rec[M]\n"); break; default: fprintf(stdout, "unknown?\n"); break; } fprintf(stdout, "Picture: %3d\n", pic_num); fprintf(stdout,"Date: %02d/%02d/%02d\nTime: %02d:%02d\n", year,month,date, hour, minutes); } return (buf[2]); /*ok*/ } int F1howmany(GPPort *port) { F1status(port); return(pic_num); } int F1fopen(GPPort *port, char *name) { unsigned char buf[64]; int len; buf[0] = 0x02; buf[1] = 0x0A; buf[2] = 0x00; buf[3] = 0x00; snprintf((char*)&buf[4], sizeof(buf)-4, "%s", name); len = strlen(name) + 5; sendcommand(port,buf, len); recvdata(port, buf, 6); if((buf[0] != 0x02) || (buf[1] != 0x0A) || (buf[2] != 0x00)){ Abort(port); fprintf(stderr,"F1fopen fail\n"); return(-1); } return(buf[3]); } int F1fclose(GPPort*port) { unsigned char buf[4]; buf[0] = 0x02; buf[1] = 0x0B; buf[2] = 0x00; buf[3] = 0x00; sendcommand(port,buf, 4); recvdata(port, buf, 3); #ifdef DEBUG fprintf(stderr,"Fclose: %02x%02x:%02x\n", buf[0], buf[1], buf[2]); #endif if((buf[0] != 0x02) || (buf[1] != 0x0B) || (buf[2] != 0x00)){ fprintf(stderr,"F1fclose fail\n"); Abort(port); return(-1); } return (buf[2]); /* ok == 0 */ } long F1fread(GPPort *port, unsigned char *data, long len) { long len2; long i = 0; unsigned char s; unsigned char buf[10]; buf[0] = 0x02; buf[1] = 0x0C; buf[2] = 0x00; buf[3] = 0x00; buf[4] = 0; /* data block size */ buf[5] = 0; buf[6] = (len >> 8) & 0xff; buf[7] = 0xff & len; sendcommand(port,buf, 8); gp_port_read(port, (char *)buf, 9); if((buf[2] != 0x02) || (buf[3] != 0x0C) || (buf[4] != 0x00)){ Abort(port); fprintf(stderr,"F1fread fail\n"); return(-1); } len2 = buf[7] * 0x100 + buf[8]; /* data size */ if(len2 == 0) { gp_port_read(port, (char *)&s, 1); /* last block checksum */ gp_port_read(port, (char *)&s, 1); /* last block EOFL */ return(0); } while((GP_OK <= gp_port_read(port, (char *)&s, 1)) && (s != EOFRAME)){ if(s == CESCAPE){ gp_port_read(port, (char *)&s, 1); if(0x20 & s) s = 0xDF & s; else s = 0x20 | s; } if(i < len) data[i] = s; i++; } i--; /* checksum */ return(i); } long F1fseek(GPPort *port,long offset, int base) { unsigned char buf[10]; buf[0] = 0x02; buf[1] = 0x0E; buf[2] = 0x00; buf[3] = 0x00; buf[4] = (offset >> 24) & 0xff; buf[5] = (offset >> 16) & 0xff; buf[6] = (offset >> 8) & 0xff; buf[7] = 0xff & offset; buf[8] = (base >> 8) & 0xff; buf[9] = 0xff & base; sendcommand(port,buf, 10); recvdata(port, buf, 3); if((buf[0] != 0x02) || (buf[1] != 0x0E) || (buf[2] != 0x00)){ Abort(port); return(-1); } return(buf[2]); } long F1fwrite(GPPort *port,unsigned char *data, long len, unsigned char b) /* this function not work well */ { long i = 0; unsigned char *p; unsigned char s; unsigned char buf[10]; int checksum; p = data; wbyte(port,BOFRAME); wbyte(port,sendaddr[address]); wbyte(port,0x02); wbyte(port,0x14); wbyte(port,b); wbyte(port,0x00); wbyte(port,0x00); wbyte(port,(len >> 8) & 0xff); wbyte(port,0xff & len); checksum = sendaddr[address] + 0x02 + 0x14 + b + ((len >> 8) & 0xff) + (0xff & len); while(i < len){ s = *p; if((s == 0x7D) || (s == 0xC1) || (s == 0xC0)){ wbyte(port,CESCAPE); if(0x20 & s) s = 0xDF & s; else s = 0x20 | s; checksum = checksum + CESCAPE; i++; } wbyte(port,s); checksum = checksum + s; i++; p++; } wbyte(port,0x100 -(checksum & 0xff) ); wbyte(port,EOFRAME); address ++; if(address >7 ) address = 0; gp_port_read(port, (char *)buf, 7); if((buf[2] != 0x02) || (buf[3] != 0x14) || (buf[4] != 0x00)){ Abort(port); fprintf(stderr,"F1fwrite fail\n"); return(-1); } return(i); } unsigned long F1finfo(GPPort *port,char *name) { unsigned char buf[64]; int len; unsigned long flen; buf[0] = 0x02; buf[1] = 0x0F; snprintf((char*)&buf[2], sizeof(buf)-2, "%s", name); len = strlen(name) + 3; sendcommand(port,buf, len); len = recvdata(port, buf, 37); if((buf[0] != 0x02) || (buf[1] != 0x0F) || (buf[2] != 00)){ Abort(port); return(0); } #ifdef DEBUG fprintf(stderr,"info:"); for(i = 0; i < len ; i++) fprintf(stderr,"%02x ", buf[i]); fprintf(stderr,"len = %d\n", len); #endif flen = buf[33] * 0x1000000 + buf[34] * 0x10000 + buf[35] * 0x100 + buf[36]; #ifdef DEBUG fprintf(stderr,"inf len = %ld %02x %02x %02x %02x\n", flen, buf[33], buf[34], buf[35], buf[36]); #endif if(buf[2] != 0) return(0); return(flen); } long F1getdata(GPPort*port,char *name, unsigned char *data) { long filelen; long total = 0; long len; unsigned char *p; F1status(port); p = data; filelen = F1finfo(port,name); if(filelen < 0) return(0); if(F1fopen(port,name) != 0) return(0); while((len = F1fread(port, p, 0x0400)) != 0){ if(len < 0){ F1fclose(port); return(0); } p = p + len; total = total + len; } F1fclose(port); return(total); } int F1deletepicture(GPPort *port,int n) { unsigned char buf[4]; gp_log (GP_LOG_DEBUG, "F1deletepicture", "Deleting picture %d...", n); buf[0] = 0x02; buf[1] = 0x15; buf[2] = 0x00; buf[3] = 0xff & n; sendcommand(port,buf, 4); recvdata(port, buf, 3); if((buf[0] != 0x02) || (buf[1] != 0x15) || (buf[2] != 0)){ Abort(port); return GP_ERROR; } return GP_OK; } int F1ok(GPPort*port) { int retrycount = 100; unsigned char buf[64]; gp_log (GP_LOG_DEBUG, "F1ok", "Asking for OK..."); buf[0] = 0x01; buf[1] = 0x01; sprintf((char*)&buf[2],"SONY MKY-1001 1.00"); while(retrycount--){ sendcommand(port,buf, 32); recvdata(port, buf, 32); #ifdef DEBUG fprintf(stderr,"OK:%02x%02x:%c%c%c%c\n", buf[0], buf[1], buf[3],buf[4],buf[5],buf[6]); #endif if((buf[0] != 0x01) || (buf[1] != 0x01) || (buf[2] != 0x00) ){ Abort(port); F1reset(port); } else return 1; } return 0; /*ng*/ } static int F1reset(GPPort *port) { unsigned char buf[3]; gp_log (GP_LOG_DEBUG, "F1reset", "Resetting camera..."); retryreset: buf[0] = 0x01; buf[1] = 0x02; sendcommand(port,buf, 2); recvdata(port, buf, 3); #ifdef DEBUG fprintf(stderr,"Reset: %02x%02x:%02x\n", buf[0], buf[1], buf[2]); #endif if(!((buf[0] == 0x01 ) && (buf[1] == 0x02) && buf[2] == 0x00)) goto retryreset; return (int) buf[2]; /*ok*/ } libgphoto2-2.5.9/camlibs/sonydscf1/ChangeLog0000644000175000001440000000103212561423351015610 000000000000002008-05-15 Marcus Meissner * *.[ch]: u_char -> unsigned char 2007-11-16 Marcus Meissner * *.[ch]: Major cleanup, make it work. 2006-11-19 Marcus Meissner * *.[ch]: Pass GPPort*port around to avoid global variables. 2002-03-24 Dan Fandrich * Removed config.h as it clearly should not have been here. 2002-02-13 Lutz Müller * sonydsc1.c: Mark driver as EXPERIMENTAL - it is currently broken. libgphoto2-2.5.9/camlibs/sonydscf1/README.sonydscf10000644000175000001440000000011512561423351016627 00000000000000Camera is freshly updated and new. - Image download works - --summary works libgphoto2-2.5.9/camlibs/sonydscf1/sonydscf1.c0000644000175000001440000003725212610415617016131 00000000000000/* sonydscf1.c * * Copyright (C) M. Adam Kendall * Copyright (C) 2002 Bart van Leeuwen * * Based on the chotplay CLI interface from Ken-ichi Hayashi 1996,1997 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "command.h" #include "pmp.h" #define JPEG 0 #define JPEG_T 1 #define PMP 2 #define PMX 3 #define PMF_MAXSIZ 3*1024 #define MAX_PICTURE_NUM 200 static unsigned char picture_index[MAX_PICTURE_NUM]; static unsigned short picture_thumbnail_index[MAX_PICTURE_NUM]; static unsigned char picture_protect[MAX_PICTURE_NUM]; static unsigned char picture_rotate[MAX_PICTURE_NUM]; static int make_jpeg_comment(unsigned char *buf, unsigned char *jpeg_comment) { int i, cur = 0; int reso, shutter; struct resolution { int reso_val; char *reso_conv; } reso_tab[] = { {PMP_FIN, "fine"}, {PMP_STD, "standard"}, {PMP_ECM, "economy"}, {0, "unknown"}, }; struct sh_speed { int spd_val; char *spd_conv; } sh_speed_tab[] = { {0x0123, "1/7.5"}, {0x0187, "1/15"}, {0x01eb, "1/30"}, {0x024f, "1/60"}, {0x0298, "1/100"}, {0x031d, "1/250"}, {0x0381, "1/500"}, {0x03e5, "1/1000"}, {0, "unknown"}, }; jpeg_comment[0] = 0xff; jpeg_comment[1] = 0xd8; jpeg_comment[2] = 0xff; jpeg_comment[3] = 0xfe; /* resolution */ reso = *(buf+PMP_RESOLUTION); i = 0; while (1) { if ((reso == reso_tab[i].reso_val) || (reso_tab[i].reso_val == 0)) { cur = 6 + sprintf((char*)&jpeg_comment[6], "Resolution: %s\n", reso_tab[i].reso_conv); break; } i++; } /* shutter speed */ shutter = (buf[PMP_SPEED]<<8)|buf[PMP_SPEED+1]; i = 0; while (1) { if ((shutter == sh_speed_tab[i].spd_val) || (sh_speed_tab[i].spd_val == 0)) { cur = cur + sprintf((char*)&jpeg_comment[cur], "Shutter-speed: %s\n", sh_speed_tab[i].spd_conv); break; } i++; } /* PMP comment */ if (*(buf+PMP_COMMENT)) { cur = cur + sprintf((char*)&jpeg_comment[cur], "Comment: %s\n", (char *)(buf+PMP_COMMENT)); } /* taken date */ if (*(buf+PMP_TAKE_YEAR) == 0xff) { cur = cur + sprintf((char*)&jpeg_comment[cur], "Date-Taken: ----/--/-- --:--:--\n"); } else { cur = cur + sprintf((char*)&jpeg_comment[cur], "Date-Taken: %d/%02d/%02d %02d:%02d:%02d\n", 2000+(*(buf+PMP_TAKE_YEAR)), *(buf+PMP_TAKE_MONTH), *(buf+PMP_TAKE_DATE), *(buf+PMP_TAKE_HOUR), *(buf+PMP_TAKE_MINUTE), *(buf+PMP_TAKE_SECOND)); } /* edited date */ if (*(buf+PMP_EDIT_YEAR) == 0xff) { cur = cur + sprintf((char*)&jpeg_comment[cur], "Date-Edited: ----/--/-- --:--:--\n"); } else { cur = cur + sprintf((char*)&jpeg_comment[cur], "Date-Edited: %d/%02d/%02d %02d:%02d:%02d\n", 2000+(*(buf+PMP_EDIT_YEAR)), *(buf+PMP_EDIT_MONTH), *(buf+PMP_EDIT_DATE), *(buf+PMP_EDIT_HOUR), *(buf+PMP_EDIT_MINUTE), *(buf+PMP_EDIT_SECOND)); } /* use flash? */ if (*(buf+PMP_FLASH) != 0) { cur = cur + sprintf((char*)&jpeg_comment[cur], "Flash: on\n"); } /* insert total jpeg comment length */ jpeg_comment[4] = (unsigned char)((cur - 4) >> 8); jpeg_comment[5] = (unsigned char)(cur - 4); return cur; } static int get_picture_information(GPPort *port,int *pmx_num, int outit) { unsigned char buforg[PMF_MAXSIZ]; char name[64]; int i, n; int j, k; char *buf = (char *) &buforg; strcpy(name, "/PIC_CAM/PIC00000/PIC_INF.PMF"); F1ok(port); F1getdata(port, name, (unsigned char *)buf); n = buf[26] * 256 + buf[27]; /* how many files */ *pmx_num = buf[31]; /* ??? */ if(n ==10) buf++; k = 0; for(i = 0 ; i < (int) *pmx_num ; i++){ for(j = 0 ; j < buforg[0x20 + 4 * i + 3]; j++){ picture_thumbnail_index[k] = (j << 8) | buforg[0x20 + 4 * i] ; k++; } } for(i = 0 ; i < n ; i++){ picture_index[i] = buf[0x420 + 0x10 * i + 3]; picture_rotate[i] = buf[0x420 + 0x10 * i + 5]; picture_protect[i] = buf[0x420 + 0x10 * i + 14]; } if(outit == 2){ fprintf(stdout," No:Internal name:Thumbnail name(Nth):Rotate:Protect\n"); for(i = 0 ; i < n ; i++){ fprintf(stdout,"%03d:", i + 1); fprintf(stdout," PSN%05d.PMP:", picture_index[i]); fprintf(stdout,"PIDX%03d.PMX(%02d) :", 0xff & picture_thumbnail_index[i], 0xff & (picture_thumbnail_index[i] >> 8)); switch(picture_rotate[i]){ case 0x00: fprintf(stdout," 0:"); break; case 0x04: fprintf(stdout," 270:"); break; case 0x08: fprintf(stdout," 180:"); break; case 0x0c: fprintf(stdout," 90:"); break; default: fprintf(stdout," ???:"); break; } if(picture_protect[i]) fprintf(stdout,"on"); else fprintf(stdout,"off"); fprintf(stdout,"\n"); } } return(n); } static int get_file(GPPort *port, char *name, CameraFile *file, int format, GPContext *context) { unsigned long filelen; unsigned long total = 0; long len,jpegcommentlen; unsigned char buf[0x400]; unsigned char jpeg_comment[256]; int ret, id; F1ok(port); F1status(port); filelen = F1finfo(port,name); if(filelen == 0) return GP_ERROR; if(F1fopen(port,name) != 0) return GP_ERROR_IO; if(format != JPEG) return GP_ERROR; len = F1fread(port, buf, 126); if( len < 126){ F1fclose(port); return GP_ERROR_IO_READ; } jpegcommentlen = make_jpeg_comment(buf, jpeg_comment); ret = gp_file_append (file, (char *)jpeg_comment, jpegcommentlen); if (ret < GP_OK) return ret; total = 126; id = gp_context_progress_start (context, filelen, _("Downloading data...")); ret = GP_OK; while((len = F1fread(port, buf, 0x0400)) != 0){ if(len < 0) return GP_ERROR_IO_READ; total = total + len; gp_file_append (file, (char *)buf, len); gp_context_progress_update (context, id, total); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { ret = GP_ERROR_CANCEL; break; } } gp_context_progress_stop (context, id); F1fclose(port); return ret; } static long get_thumbnail(GPPort *port,char *name, CameraFile *file, int format, int n) { unsigned long filelen; unsigned long total = 0; long len; int i; unsigned char buf[0x1000]; unsigned char *p; p = buf; F1ok(port); F1status(port); filelen = F1finfo(port,name); if(filelen == 0) return GP_ERROR_IO; if(F1fopen(port,name) != 0) return GP_ERROR_IO; for( i = 0 ; i < n ; i++) len = F1fseek(port, 0x1000, 1); while((len = F1fread(port, p, 0x0400)) != 0){ if(len < 0){ F1fclose(port); return GP_ERROR_IO_READ; } total = total + len; p = p + len; if(total >= 0x1000) break; } F1fclose(port); filelen = buf[12] * 0x1000000 + buf[13] * 0x10000 + buf[14] * 0x100 + buf[15]; return gp_file_append (file, (char *)&buf[256], filelen); } #if 0 static void get_date_info(GPPort *port, char *name, char *outfilename ,char *newfilename) { char *p, *q; int year = 0; int month = 0; int date = 0; int hour = 0; int minute = 0; int second = 0; unsigned char buf[128]; F1ok(port); F1status(port); (void) F1finfo(port, name); if(F1fopen(port, name) ==0){ if(F1fread(port, buf, 126) == 126){ if(*(buf+PMP_TAKE_YEAR) != 0xff){ year = (int) *(buf+PMP_TAKE_YEAR); month = (int) *(buf+PMP_TAKE_MONTH); date = (int) *(buf+PMP_TAKE_DATE); hour = (int) *(buf+PMP_TAKE_HOUR); minute = (int) *(buf+PMP_TAKE_MINUTE); second = (int) *(buf+PMP_TAKE_SECOND); } } F1fclose(port); } p = outfilename; q = newfilename; while(*p){ if(*p == '%'){ p++; switch(*p){ case '%': *q = '%'; break; case 'H': q = q + sprintf(q, "%02d", hour); break; case 'M': q = q + sprintf(q, "%02d", minute); break; case 'S': q = q + sprintf(q, "%02d", second); break; case 'T': #ifdef BINARYFILEMODE q = q + sprintf(q, "%02d%02d%02d", hour, minute, date); #else q = q + sprintf(q, "%02d:%02d:%02d", hour, minute, date); #endif break; case 'y': q = q + sprintf(q, "%02d", year); break; case 'm': q = q + sprintf(q, "%02d", month); break; case 'd': q = q + sprintf(q, "%02d", date); break; case 'D': #ifdef BINARYFILEMODE q = q + sprintf(q, "%02d%02d%02d", year, month, date); #else q = q + sprintf(q, "%02d_%02d_%02d", year, month, date); #endif break; default: q = q + sprintf(q, "%%%c", *p); break; } p++; }else *q++ = *p++; } *q = 0; } #endif static int get_picture(GPPort *port, int n, CameraFile *file, int format, int ignore, int all_pic_num, GPContext *context) { long len; char name[64]; char name2[64]; int i; fprintf(stderr,"all_pic_num 1 %d\n", all_pic_num); all_pic_num = get_picture_information(port,&i,0); fprintf(stderr,"all_pic_num 2 %d\n", all_pic_num); retry: if (all_pic_num < n) { fprintf(stderr, "picture number %d is too large. %d\n",all_pic_num,n); return(GP_ERROR); } switch(format){ case PMX: sprintf(name, "/PIC_CAM/PIC00000/PIDX%03d.PMX", n - 1); break; case JPEG_T: sprintf(name, "/PIC_CAM/PIC00000/PIDX%03d.PMX", (picture_thumbnail_index[n] & 0xff)); break; case JPEG: case PMP: default: if(ignore) sprintf(name, "/PIC_CAM/PIC00000/PSN%05d.PMP", n); else sprintf(name, "/PIC_CAM/PIC00000/PSN%05d.PMP", picture_index[n]); break; } if(ignore) sprintf(name2, "/PIC_CAM/PIC00000/PSN%05d.PMP", n ); else sprintf(name2, "/PIC_CAM/PIC00000/PSN%05d.PMP", picture_index[n]); /* printf("name %s, name2 %s, %d\n",name,name2,n); */ if(0) switch(format){ case PMX: fprintf(stdout, "pidx%03d.pmx: ", n -1 ); break; case JPEG_T: fprintf(stderr, "Thumbnail %03d: ", n); break; case PMP: case JPEG: default: fprintf(stdout, "Picture %03d: ", n); break; } if(format == JPEG_T) len = get_thumbnail(port, name, file, format, 0xff & (picture_thumbnail_index[n] >> 8)); else len = get_file(port, name, file, format, context); if(len < GP_OK ) goto retry; return(len); } int camera_id (CameraText *id) { strcpy(id->text, "sonydscf1-bvl"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset (&a, 0, sizeof(a)); strcpy(a.model, "Sony:DSC-F1"); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_NONE; return gp_abilities_list_append(list, a); } static int camera_exit (Camera *camera, GPContext *context) { if(F1ok(camera->port)) return(GP_ERROR); return (F1fclose(camera->port)); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int num; gp_log (GP_LOG_DEBUG, "sonyf1/get_file_func","folder: %s, file: %s", folder, filename); if(!F1ok(camera->port)) return (GP_ERROR); gp_file_set_mime_type (file, GP_MIME_JPEG); /* Retrieve the number of the photo on the camera */ num = gp_filesystem_number(camera->fs, "/", filename, context); if (num < GP_OK) return num; switch (type) { case GP_FILE_TYPE_NORMAL: return get_picture (camera->port, num, file, JPEG, 0, F1howmany(camera->port), context); case GP_FILE_TYPE_PREVIEW: return get_picture (camera->port, num, file, JPEG_T, TRUE, F1howmany(camera->port), context); default: return (GP_ERROR_NOT_SUPPORTED); } return GP_OK; } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int max, num; gp_log (GP_LOG_DEBUG, "sonydscf1/delete_file_func", "%s / %s", folder, filename); num = gp_filesystem_number(camera->fs, "/", filename, context); if (numfs,folder, context); if (maxport)) return GP_ERROR; if(picture_protect[num] != 0x00){ gp_log (GP_LOG_ERROR, "sonydscf1/delete_file_func", "picture %d is protected.", num); return GP_ERROR; } return F1deletepicture(camera->port, picture_index[num]); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int i; if(!F1ok(camera->port)) return (GP_ERROR); get_picture_information(camera->port,&i,2); return (F1newstatus(camera->port, 1, summary->text)); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy(about->text, _("Sony DSC-F1 Digital Camera Support\nM. Adam Kendall \nBased on the chotplay CLI interface from\nKen-ichi Hayashi\nGphoto2 port by Bart van Leeuwen ")); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; F1ok(camera->port); /*if(F1ok(camera->port)) return(GP_ERROR);*/ /* Populate the list */ return gp_list_populate(list, "PSN%05i.jpg", F1howmany(camera->port)); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->about = camera_about; /* Configure the port */ gp_port_set_timeout (camera->port, 5000); gp_port_get_settings (camera->port, &settings); settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits= 1; gp_port_set_settings (camera->port, settings); /* Set up the filesystem */ return gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); } libgphoto2-2.5.9/camlibs/pccam300/0000755000175000001440000000000012623156267013527 500000000000000libgphoto2-2.5.9/camlibs/pccam300/pccam300-lsusb.txt0000644000175000001440000001767112561423351016650 00000000000000Bus 002 Device 005: ID 041e:400a Creative Technology, Ltd PC-Cam 300 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 255 Vendor Specific Subclass bDeviceProtocol 255 Vendor Specific Protocol bMaxPacketSize0 8 idVendor 0x041e Creative Technology, Ltd idProduct 0x400a PC-Cam 300 bcdDevice 1.00 iManufacturer 1 Creative Tech. Ltd iProduct 2 Creative PC-CAM 300 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 167 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0080 1x 128 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 2 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0180 1x 384 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 3 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 4 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0280 1x 640 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 5 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0300 1x 768 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 6 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0380 1x 896 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 7 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x03ff 1x 1023 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 8 libgphoto2-2.5.9/camlibs/pccam300/library.c0000644000175000001440000002052312610415536015252 00000000000000/****************************************************************/ /* library.c - Gphoto2 library for the Creative PC-CAM 300 */ /* */ /* */ /* Authors: Till Adam */ /* Miah Gregory */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #include #include "pccam300.h" #include #include #include #include #include #include #include #define GP_MODULE "pccam300" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "pccam300" static const struct models { char *name; unsigned short idVendor; unsigned short idProduct; } models[] = { { "Creative PC-CAM 300", 0x041e, 0x400a}, { "Intel Pocket PC Camera", 0x8086, 0x0630}, { NULL, 0, 0} }; static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context); int camera_id (CameraText *id) { strcpy (id->text, "Creative PC-CAM 300"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof (CameraAbilities)); strcpy (a.model, models[i].name); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB; a.usb_vendor = models[i].idVendor; a.usb_product = models[i].idProduct; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; gp_abilities_list_append (list, a); } return GP_OK; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; unsigned int i, id, size, type; int filecount; CameraFile *file; CameraFileInfo info; unsigned char *buffer = NULL; int ret, n_img=0, n_avi=0, n_wav=0; char fn[100]; CHECK (pccam300_get_filecount (camera->port, &filecount)); id = gp_context_progress_start (context, filecount, _("Getting file list...")); for (i = 0; i < filecount; i++) { /* Get information */ gp_file_new (&file); ret = pccam300_get_file (camera->port, context, i, &buffer, &size, &type); if (ret < GP_OK) { gp_file_free (file); return ret; } info.audio.fields = GP_FILE_INFO_NONE; info.preview.fields = GP_FILE_INFO_NONE; info.file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE; info.file.size = size; switch (type) { case PCCAM300_MIME_JPEG: strcpy (info.file.type, GP_MIME_JPEG); sprintf (fn, "Image%03i.jpeg", n_img++); break; case PCCAM300_MIME_AVI: strcpy (info.file.type, GP_MIME_AVI); sprintf (fn, "Movie%03i.UNUSABLE", n_avi++); break; case PCCAM300_MIME_WAV: strcpy (info.file.type, GP_MIME_WAV); sprintf (fn, "Audio%03i.UNUSABLE", n_wav++); break; default: break; } if (file) gp_file_set_data_and_size (file, (char *)buffer, size); else free (buffer); /* * Append directly to the filesystem instead of to the list, * because we have additional information. * */ gp_filesystem_append (camera->fs, folder, fn, context); gp_filesystem_set_info_noop (camera->fs, folder, fn, info, context); gp_filesystem_set_file_noop (camera->fs, folder, fn, GP_FILE_TYPE_NORMAL, file, context); gp_file_unref (file); gp_context_idle (context); gp_context_progress_update (context, id, i + 1); if (gp_context_cancel(context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); } gp_context_progress_stop (context, id); return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL; unsigned int size, mimetype; int index; size = 0; index = gp_filesystem_number (fs, folder, filename, context); if (index < 0) return index; switch (type) { case GP_FILE_TYPE_NORMAL: CHECK (pccam300_get_file (camera->port, context, index, &data, &size, &mimetype)); break; default: return GP_ERROR_NOT_SUPPORTED; } return gp_file_set_data_and_size (file, (char *)data, size); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int totalmem; int freemem; int filecount; char summary_text[256]; CHECK (pccam300_get_mem_info (camera->port, context, &totalmem, &freemem)); CHECK (pccam300_get_filecount (camera->port, &filecount)); snprintf (summary_text, sizeof (summary_text), _(" Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d"), totalmem, freemem, filecount); strcat (summary->text, summary_text); return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Creative PC-CAM 300\n Authors: Till Adam\n" "\n" "and: Miah Gregory\n ")); return GP_OK; } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { return GP_OK; } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { int index; Camera *camera = data; index = gp_filesystem_number (fs, folder, filename, context); gp_log (GP_LOG_DEBUG, "pccam", "deleting '%s' in '%s'.. index:%d", filename, folder, index); CHECK (pccam300_delete_file (camera->port, context, index)); return GP_OK; } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; CHECK (pccam300_delete_all (camera->port, context)); return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .delete_all_func = delete_all_func, }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; int ret = 0; camera->functions->summary = camera_summary; camera->functions->about = camera_about; gp_log (GP_LOG_DEBUG, "pccam 300", "Initializing the camera\n"); switch (camera->port->type) { case GP_PORT_USB: ret = gp_port_get_settings (camera->port, &settings); if (ret < 0) return ret; settings.usb.inep = 0x82; settings.usb.outep = 0x03; settings.usb.config = 1; settings.usb.interface = 0; settings.usb.altsetting = 0; ret = gp_port_set_settings (camera->port, settings); if (ret < 0) return ret; break; case GP_PORT_SERIAL: return GP_ERROR_IO_SUPPORTED_SERIAL; default: return GP_ERROR_NOT_SUPPORTED; } CHECK (pccam300_init (camera->port, context)); return gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); } libgphoto2-2.5.9/camlibs/pccam300/pccam300.c0000644000175000001440000001432212610415536015114 00000000000000/****************************************************************/ /* pccam300.c - Gphoto2 library for the Creative PC-CAM 300 */ /* */ /* Authors: Till Adam */ /* Miah Gregory */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #include #include #include #include #include <_stdint.h> #include "pccam300.h" #include #include #include #define GP_MODULE "pccam300" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif /* * waits until the status value is 0 or 8. * if status == 0xb0 or 0x40 we will wait some more */ static int pccam300_wait_for_status (GPPort *port) { int retries = 20; unsigned char status = 1; while (status != 0x00 && retries--) { gp_port_set_timeout (port, 3000); CHECK(gp_port_usb_msg_read (port, 0x06, 0x00, 0x00, (char *)&status, 1)); if (status == 0 || status == 8) return GP_OK; if (status == 0xb0) { gp_port_set_timeout (port, 200000); CHECK(gp_port_usb_msg_read (port, 0x06, 0x00, 0x00, (char *)&status, 1)); } if (status == 0x40) { gp_port_set_timeout (port, 400000); CHECK(gp_port_usb_msg_read (port, 0x06, 0x00, 0x00, (char *)&status, 1)); } } return GP_ERROR; } /* * FIXME */ int pccam300_delete_file (GPPort *port, GPContext *context, int index) { return GP_ERROR_NOT_SUPPORTED; } int pccam300_delete_all (GPPort *port, GPContext *context) { CHECK (gp_port_usb_msg_write (port, 0x4, 0x0, 0x0, NULL, 0)); CHECK (pccam300_wait_for_status (port)); CHECK (gp_port_usb_msg_write (port, 0x9, 0x0, 0x1, NULL, 0)); CHECK (pccam300_wait_for_status (port)); return GP_OK; } int pccam300_get_filecount (GPPort *port, int *filecount) { uint8_t response; gp_port_set_timeout (port, 400000); CHECK (gp_port_usb_msg_read (port, 0x08, 0x00, 0x00, (char *)&response, 0x01)); *filecount = response; return GP_OK; } int pccam300_get_filesize (GPPort *port, unsigned int index, unsigned int *filesize) { uint8_t response[3]; uint16_t i = index; gp_port_set_timeout (port, 400000); CHECK (gp_port_usb_msg_read (port, 0x08, i, 0x0001, (char *)response, 0x03)); *filesize = (response[0] & 0xff) + (response[1] & 0xff) * 0x100 + (response[2] & 0xff) * 0x10000; return GP_OK; } int pccam300_get_mem_info (GPPort *port, GPContext *context, int *totalmem, int *freemem) { unsigned char response[4]; gp_port_set_timeout (port, 400000); CHECK (gp_port_usb_msg_read (port, 0x60, 0x00, 0x02, (char *)response, 0x04)); *totalmem = response[2] * 65536 + response[1] * 256 + response[0]; CHECK (pccam300_wait_for_status (port)); CHECK (gp_port_usb_msg_read (port, 0x60, 0x00, 0x03, (char *)response, 0x04)); *freemem = response[2] * 65536 + response[1] * 256 + response[0]; CHECK (pccam300_wait_for_status (port)); return GP_OK; } int pccam300_get_file (GPPort *port, GPContext *context, int index, unsigned char **data, unsigned int *size, unsigned int *type) { unsigned int data_size; int r; uint8_t *buf = NULL; /* This is somewhat strange, but works, and the win driver does the * same. Apparently requesting the file size twice triggers the * download of the file. */ CHECK (pccam300_get_filesize (port, index, &data_size)); CHECK (pccam300_get_filesize (port, index, &data_size)); /* The jpeg header we will download after the data itself is 623 * bytes long. The first 0x200 bytes of the data appear to be * garbage, they are overwritten by the header. */ *size = data_size + 623 - 0x200; if (!(buf = malloc (*size))) return GP_ERROR_NO_MEMORY; /* Read the data into the buffer overlapping the header area by * 0x200 bytes. */ r = gp_port_read (port, (char *)buf + 623 - 0x200, data_size); if (r < GP_OK) { free (buf); return r; } /* FIXME: if we find a RIFF marker in the data stream, assume that * this is an avi, for now * NWG: Sat 18th January 2003. */ if (buf[0x243] == 'R' && buf[0x244] == 'I' && buf[0x245] == 'F' && buf[0x246] == 'F') { /* maybe an avi, but could be a wav too */ *type = PCCAM300_MIME_AVI; memmove(buf, buf + 623 - 0x200, data_size); *size = data_size; } else { /* offset 0x8 in the downloaded data contains the identifier * we need to request the correct header. */ r = gp_port_usb_msg_read(port, 0x0b, buf[623 - 0x200 + 8], 0x3, (char *)buf, 623); if (r < GP_OK) { free (buf); return r; } *type = PCCAM300_MIME_JPEG; } *data = buf; return GP_OK; } int pccam300_init (GPPort *port, GPContext *context) { CHECK (gp_port_usb_msg_write (port, 0xe0, 0x00, 0x1, NULL, 0x00)); CHECK (pccam300_wait_for_status (port)); return GP_OK; } libgphoto2-2.5.9/camlibs/pccam300/Makefile-files0000644000175000001440000000056612561423351016206 00000000000000EXTRA_DIST += pccam300/README.pccam300 pccam300/pccam300-lsusb.txt pccam300/ChangeLog camlibdoc_DATA += pccam300/README.pccam300 EXTRA_LTLIBRARIES += pccam300.la pccam300_la_SOURCES = pccam300/pccam300.c pccam300/pccam300.h pccam300/library.c pccam300_la_LDFLAGS = $(camlib_ldflags) pccam300_la_DEPENDENCIES = $(camlib_dependencies) pccam300_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/pccam300/pccam300.h0000644000175000001440000000501512610415524015115 00000000000000/****************************************************************/ /* pccam300.h - Gphoto2 library for the Creative PC-CAM 300 */ /* */ /* */ /* Authors: Till Adam */ /* Miah Gregory */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #ifndef __PCCAM300_H__ #define __PCCAM300_H__ #include #include #define CHECK(result) {int res; res = result; if (res < 0) return (res);} int pccam300_init (GPPort *port, GPContext *context); int pccam300_close (GPPort *port, GPContext *context); int pccam300_get_file_list (GPPort *port, GPContext *context); int pccam300_delete_file (GPPort *port, GPContext *context, int index); int pccam300_delete_all (GPPort *port, GPContext *context); int pccam300_get_file (GPPort *port, GPContext *context, int index, unsigned char **data, unsigned int *size, unsigned int *type); int pccam300_get_mem_info (GPPort *port, GPContext *context, int *totalmem, int *freemem); int pccam300_get_filecount (GPPort *port, int *filecount); int pccam300_get_filesize (GPPort *port, unsigned int index, unsigned int *filesize); enum { PCCAM300_MIME_JPEG, PCCAM300_MIME_WAV, PCCAM300_MIME_AVI }; #endif /* __PCCAM300_H__ */ libgphoto2-2.5.9/camlibs/pccam300/ChangeLog0000644000175000001440000000074012561423351015212 000000000000002007-05-02 Marcus Meissner * library.c: Change interface to be 0 instead of 1. Newer kernels seem to be more picky here. Cross checked with lsusb output from a user. 2004-08-04 Marcus Meissner * library.c: added Intel Pocket PC Camera as reported. 2003-06-26 Lutz Mueller * pccam300.c: Fix includes so that the thing compiles. 2003-01-20 Till Adam * initial import libgphoto2-2.5.9/camlibs/pccam300/README.pccam3000000644000175000001440000000134712561423351015631 00000000000000What is it? ----------- This is a camlib supporting the Intel PC Cam 300 camera and possibly others based on the same chip, namely the SunPlus spca500a. It was implemented using information obtained by sniffing the usb bus on Windows, disassembling the windows driver dll's and some guesswork. It is losely based on the pccam600 camlib and contains some code from that. Features -------- It currently supports downloading of images and deleting all files on the camera. TODO ____ - Figure out the avi and wav formats and support them. - Thumbnails? Can the cam do them? Authors ------- Till Adam Miah Gregory Thanks ------ Pedro de Oliviera - Testing and feedback libgphoto2-2.5.9/camlibs/sipix/0000755000175000001440000000000012623156267013355 500000000000000libgphoto2-2.5.9/camlibs/sipix/blink.c0000644000175000001440000005001612610415536014533 00000000000000/* sipixblink.c * * Copyright 2002 Vincent Sanders * Copyright 2002 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2 of the License * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* * This library is unfinished! -Marcus * */ #include "config.h" #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif int camera_id (CameraText *id) { strcpy(id->text, "SiPix Blink"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); strcpy(a.model, "SiPix:Blink"); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB; a.usb_vendor = 0x0851; a.usb_product = 0x1542; a.operations = GP_OPERATION_NONE; a.file_operations = 0; a.folder_operations = GP_FOLDER_OPERATION_NONE; gp_abilities_list_append(list, a); return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { return (GP_OK); } static int _get_number_images(Camera *camera) { int ret; unsigned char reply[8]; ret = gp_port_usb_msg_read (camera->port, 0, 0, 0, reply, 2); if (ret < GP_OK) return ret; return reply[0] | (reply[1]<<8); } #if 0 static void _mult_64words(short *result, short *in, short *mult) { int i; for (i=0;i<64;i++) result[i] = in[i] * mult[i]; } #endif static int decomp_dct( unsigned short *outtable, unsigned char *input, unsigned short *table ) { int inpos = 1, outpos = 0; int xinp = input[0]; int curinflags = (input[0] & 0x30) << 2; if (!input[inpos]) return inpos; while (1) { if (outpos >= 64) return inpos; if (inpos >= 128) return inpos; switch (curinflags) { case 0x00: /* Set position into the 8x8 DCT */ xinp = input[inpos]; curinflags = xinp & 0xc0; outpos = xinp & 0x3f; fprintf(stderr,"00:set outpos to %d\n", outpos); inpos++; break; case 0x40: /* Set 2 DCT values from 2x 3 bit data */ xinp = input[inpos]; curinflags = xinp & 0xc0; outtable[outpos+1] = (table+0)[xinp]; outtable[outpos ] = (table+256)[xinp]; outpos += 2; inpos += 1; fprintf(stderr,"40:input was %02x values are %x, %x\n", xinp, table[xinp], (table+256)[xinp]); break; case 0x80: /* Set 1 DCT value from 6bit compressed data */ xinp = input[inpos]; curinflags = xinp & 0xc0; outtable[outpos] = (table+512)[xinp]; inpos++; outpos++; fprintf(stderr,"80:input was %02x, value is %x\n", xinp, (table+512)[xinp]); break; case 0xc0: /* Set 1 value in DCT, 9 bit */ xinp=((input[inpos+0]&0x1f)<<7)|(input[inpos+1]&0x7f); if (xinp & 0x0800) xinp |= 0xff00; curinflags = input[inpos+1] & 0xc0; outtable[outpos] = xinp; outpos++; inpos += 2; fprintf(stderr,"80:input was %04x\n", xinp); break; default: break; } if (!input[inpos]) return inpos; } } static void init_dct_uncomp_table(unsigned short *tables) { unsigned short *table1 = tables; unsigned short *table2 = tables + 256; unsigned short *table3 = tables + 512; int i; for (i=0;i<256;i++) { unsigned short x; if (i & 4) { /* negative */ x = i | 0xfff8; } else { x = i & 0x007; } table1[i] = x; if (i & 0x20) { x = (i >> 3) | 0xfff8; } else { x = (i >> 3) & 0x0007; } table2[i] = x; if (i & 0x20) { x = i | 0xffc0; } else { x = i & 0x003f; } table3[i] = x; } } static void db(unsigned char *b, int howmuch) { int i; for (i=0;idstptr; edx = arg4->dstptr; eax = arg0->srcptr; esi = arg4->srcptr; dest = lineoffsets[off]; if (off) source = lineoffsets[off-1] else source = lineoffsets[0]; esi -= eax; for (i = 8; i--; ) { edi = source + (word)[esi+eax]; ebx = dest + (word)[eax]; eax+= 0x10; [ebx+ecx-7] = [edi+edx-7]; [ebx+ecx-3] = [edi+edx-3]; } } 10001dcf(arg0, short *ecx, arg8, argc) { /* 10011af0 */ int i,j; eax = arg0; edx = argC; ecx = (word)arg8; edx = [edx + ecx*4]; esi = [eax]; edi = [eax+4]; /* copy out a 8x8 matrix */ for (ebp=8;ebp--;) { eax = (word)[edi] + edx; edi += 0x10; ecx += 8; /* 16 bytes */ for (j=0;j<8;j++) esi[eax+j] = (byte)100cf224( *(ecx+(8-j)) ); } } static int _decompressor( ) { char *buf; int cur; ebx = arg0; edx = [ebx+0x19c]; eax = [ebx+0x138]; cx = [ebx+0x134]; di = [ebx+0x136]; var148 = edx; edx = [ebx+0x7ba]; var14c = edi; ebp = 0; edi--; buf = eax; var150 = ecx; cur = 6; var158 = ebp; if (edx == ebp) goto 100112af; if (cx <= bp) goto 10011262; 1001114e: ecx = (buf[cur] & 0x3f) << 7) | (buf[cur+1] & 0x7f); edx = var158; /* word -> dword zero ext. */ if (edx != ecx) return 0; cur += 3; var154 = 0; if (var14c <= 0) goto 10011242; var15c = ebx+16c; 1001118e: al = [cur + buf]; if ((al & 0xc0 ) == 0xc0) { call 10011c80([var15c],[ebx+di*4+0x16c],ebp,var148); cur += 2; } else { memset(dct1,0,2*8*8); cur = cur + decomp_dct( dct1, cur + buf, ebx) + 1; _mult_64words(&dct, dct1, [var15c - 0x6c]); IDCT_AAN(&dct); 10001dcf([15c], &dct, ebp, var148); } 1001121c: var15c += 4; ebp++; edi = var154; var154++; if (var154 < var14c) goto 1001118e; 10011242: if (cur > [ebx+7bc]) goto 100113c9; var158++; if (var158 < var150) goto 1001114e; 10011262: al = [ebx+0x7c0]; if (al != 9) goto 1001145e; eax = [ebx+0x144]; cdq; eax -= edx; esi = eax; eax = [ebx+0x148]; cdq; eax -= edx; edi = eax; edi >>= 1; esi >>= 1; var150 = malloc(edi * esi); if (!var150) return 0; goto 100113f3; 100112af: if (cx <= bp) goto 10011262; 100112b4: cl = [cur+buf]; dl = [cur+buf+1]; ecx & = 0x3f; edx & = 0x7f; ecx <<= 7; ecx |= edx; edx = var158; if (ecx != edx) return 0; cur+=3; var154 = 0; if (var14c <= 0) goto 100113a8; var15c = ebx+0x16c; 100112f4: edx = buf+cur; al = buf+cur; if (al & 0xc0 != 0xc0) goto 10011325; 100020b8([var15c], [ebx+di*4+0x16c], ebp, var148); cur += 2; goto 10011382; 10011325: memset(xtable128, 0, 32*4); / 8x8 16bit words */ decomp_dct(xtable128, edx, ebx); esi = cur+buf+1; _mult_64words(&var140, xtable128, [var15c - 0x6c]); IDCT_AAN(&var140); 1000123f([edi], &var140, var148); 10011382: eax = var154; edx = var15c; ebp++; edi = eax; eax++; edx += 4; var154 = eax; var15c = edx; if (var154 < var14c) goto 100112f4; 100113a8: if (cur > [ebx+0x7bc]) goto 100113c9; ecx = var158; ecx++; var158 = cx; if (cx < var150) goto 100112b4; goto 10011262; 100113c9: sprintf(&var40,"rlidx %d > pDecmpExt->CompressedDataLen %d !", cur, [ebx+0x7bc] ); return 0; 100113f3: ebp = malloc(edi * esi); if (!ebp) return 0; 1001140f: 100021e9(var150, [ebx+0x15c], esi, edi); 100021e9(ebp, [ebx+0x164], esi ,edi); eax = [ebx+0x15c] [ebx+0x15c] = var150; free(eax); eax = [ebx+0x164] [ebx+0x164] = ebp; free(eax); goto 10011489; 1001145e: if (al != 8) goto 10011489; if (! [ebx+0x7c4] ) goto 10011489; 1000202c([ebx+0x154], [ebx+0x144], [ebx+0x148]); 10011489: if ([ebx + 0x7a8] == 1) { 100014ce(ebx); } else { 1000150a(ebx); } eax = [ebx + 0x7a8]; eax--; switch (eax) { case 1: 10001889(ebx); return 1; case 2: 10001f28(ebx); return 1; case 3: case 5: 10001271(ebx); return 1; case 4: 100012c1(ebx); return 1; case 6: 10001712(ebx); return 1; case 7: 100011c2(ebx); return 1; default: return 1; } } _10001889(this) { ecx = [this + 0x7a4]; var4 = ecx; var70 = 3168; var94 = ecx + 0x835; var7c = ecx + 0x18b4; var74 = ecx + 0x1491; var80 = ecx + 0x106f; var84 = ecx + 0x0412; var78 = 0x0030; 10012f90: var90 = var84; var8c = var94; var9c = ecx - 6; var44 = -6; edx = ecx - 3; var3c = -3; ebx = ecx - 5; var2c = -5; var88 = ecx+1; var34 = 1; vara0 = ecx-2; var24 = -2; var98 = ecx - 4; var14 = -4; vara4 = ecx + 2; var1c = 2; vara8 = ecx - 1; var0c = -1; var20 = var9c - edx; var68 = ebx - edx; ecx = var88; var38 = var88 - edx; var64 = vara0 - edx; var54 = var98 - edx; var5c = vara4 - edx; var4c = vara8 - edx; var50 = var9c - ebx; var28 = vara0 - ebx; var08 = var98 - ebx; var48 = vara4 - ebx; var40 = vara8 - ebx; var18 = ebx - ecx ebp = edx; vara0 = 0x20; var10 = edx - ecx; var30 = var98 - ecx; var60 = vara4 - ecx; var58 = vara8 - ecx; ecx = ebx - edx; var9c = var98 - edx; ebp = var8c; vara4 = vara4 - edx; vara8 = vara8 - edx; edx = var90; var88 = ecx; goto 1001311b; 10013117: ecx = var88; 1001311b: ebx = 0; bl = [edx + ecx]; ecx = 0; cl = [eax - 0x14a0]; ebx += ecx; ecx = 0; ebx = ebx >> 1; [esi - 0x1080] = bl; cl = [ebp - 0x420]; ebx = 0; ebp = vara4; bl = [edi - 0xc60]; ecx += ebx; ebx = var9c; ecx = ecx >> 1; [edx] = cl; ecx = 0; cl = [edx + ebx]; ebx = 0; bl = [edx + ebp]; ebp = var8c; ecx += ebx; ebx = vara8; ecx = ecx >> 1; [ebx + edx] = cl; ecx = var18; edx = 0; ebx = var30; dl = [ecx + ebp]; ecx = 0; cl = [eax - 0x1080]; edx += ecx; ecx = 0; edx = edx >> 1; [esi - 0xc60] = dl; cl = [ebp]; edx = 0; dl = [edi-0x840]; edx += ecx; edx >>= 1; [ecx + ebp] = dl; ecx = var10; 1001319d ... oder so; } _10001f28(this) { int pitch; var0c = 0; arg0 = [this + 0x14c]; var14 = [this + 0x7a4]; var10 = [this + 0x7ac]; pitch = [this + 0x144] * 3; var4 = [this + 0x150]; var18 = 0; esi = 0; while (var0c < var4) { switch (var18 % 5) { case 0: case 2: case 4: var0c++; ebx = 0; edi = 0; ecx = var14; while (ebx < arg0 ) { switch (edi % 25) { case 0: case 2: case 3: case 5: case 7: case 9: case 11: case 13: case 15: case 17: case 19: case 21: case 23: case 24: ebx++; memcpy(esi + var10, ecx, 3); esi+=3; break; } ecx += 3; edi++; } default: /* nothing */ break; } var14 += pitch; var18++; } } _xdecomp(arg0, arg4, arg8, argc, arg10, arg14) { eax = argc; esi = arg10; ebx = eax - 8; edx = 0; ecx = [esi + 0x138]; edi = 0; arg10 = ecx; eax = arg8; while (edx <= ebx) { if (!(dword)[eax] && !(byte)[eax+7]) break; memcpy(ecx,eax,8); edi+=8; ecx+=8; edx+=8; eax+=8; } /*10010f6e:*/ ecx = arg10; edi++; [edi + ecx - 1] ] = 0; [esi + 0x7bc] = edi; eax = _decompressor(esi); if (!eax) goto 1001104d; eax = arg14; if (!eax) goto 1001101f; eax = [esi + 0x14c]; switch (eax) { case 800: 10014140(esi); break; case 640: 10013dd0(esi); break; case 352: 10013eb0(esi); break; case 160: 10014360(esi); break; case 176: 10013fd0(esi); break; case 320: 10014220(esi); break; } } /* shrinks image from CIF (352x288) -> VGA/4 (160x120) */ 10013eb0(arg0) { int pitch; int xcnt, xpixels; int outoffset; char *outdata, *indata; outdata = [arg0 + 0x7b4]; /* target image data */ pitch = 3*[arg0 + 0x14c]; /* width in real pixels */ indata = [arg0 + 0x7a4]; /* origin image data */ xpixels = 0; xcnt = 0; while (xpixels < 120) { switch (xcnt % 12) { case 1: case 3: case 6: case 8: case 10: { char *tmpdata = indata; int ycnt = 0, ypixels = 0; xpixels++; while (ypixels < 160) { switch (ycnt % 11) { case 1: case 3: case 5: case 7: case 9: ypixels++; memcpy(outdata, tmpdata, 3); outdata += 3; break; default: break; } tmpdata+=3; ycnt++; } break; default /* 10013f67 */: break; } xcnt++; data += pitch; } } #endif static int _check_image_header(unsigned char *d, int size) { int width, height; if (d[0] != 0) return FALSE; if (d[1] > 0x3f) return FALSE; if ((d[2] & 0xc0) != 0x80) return FALSE; width = ((d[2] & 0x3f) << 4) | ((d[3] >> 3) & 0xf); height = ((d[3] & 0x07) << 7) | (d[4] & 0x7f); fprintf(stderr,"picture is %d x %d\n",width,height); return TRUE; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; unsigned char reply[8]; int image_no, picsize; unsigned char *xdata, *ydata; if (strcmp(folder,"/")) return GP_ERROR_BAD_PARAMETERS; image_no = gp_filesystem_number(fs, folder, filename, context); /* size */ do { gp_port_usb_msg_read (camera->port, 1, image_no , 1, reply, 8); } while(reply[0]!=0); picsize = reply[1] | (reply[2] << 8) | ( reply[3] << 16); /* Setup bulk transfer */ do { gp_port_usb_msg_read (camera->port, 2, image_no , 0, reply, 6); } while(reply[0]!=0); /* bulk read */ xdata = malloc(picsize); gp_port_read(camera->port, xdata, picsize); ydata = malloc(640*480*3); _check_image_header(xdata, picsize); if (0) { /* disabled. replace 0 by 1 to enable */ int cur; cur = 6; while (cur < picsize) cur += decompressor(xdata+cur); } gp_file_append(file, xdata, picsize); free(xdata); gp_file_set_mime_type (file, GP_MIME_UNKNOWN); return (GP_OK); } static int camera_config_get (Camera *camera, CameraWidget **window, GPContext *context) { gp_widget_new (GP_WIDGET_WINDOW, "Camera Configuration", window); /* Append your sections and widgets here. */ return (GP_OK); } static int camera_config_set (Camera *camera, CameraWidget *window, GPContext *context) { /* * Check if the widgets' values have changed. If yes, tell the camera. */ return (GP_OK); } static int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { /* * Capture a preview and return the data in the given file (again, * use gp_file_set_data_and_size, gp_file_set_mime_type, etc.). * libgphoto2 assumes that previews are NOT stored on the camera's * disk. If your camera does, please delete it from the camera. */ return (GP_OK); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { char reply[6]; int oldimgno, newimgno, ret; oldimgno = _get_number_images(camera); if (oldimgno < GP_OK) return oldimgno; do { /* FIXME: this will loop until a picture is taken. */ ret = gp_port_usb_msg_read (camera->port, 4, 0, 0, reply, 6); } while ((ret >= GP_OK) && (reply[0]!=0)); if (ret < GP_OK) return ret; newimgno = _get_number_images(camera); if (newimgno < GP_OK) return newimgno; if (newimgno == oldimgno) return GP_ERROR; strcpy(path->folder,"/"); sprintf(path->name,"blink%03i.raw",newimgno); return (GP_OK); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { /* * Fill out the summary with some information about the current * state of the camera (like pictures taken, etc.). */ return (GP_OK); } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { /* * If you would like to tell the user some information about how * to use the camera or the driver, this is the place to do. */ return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" )); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; CameraFileInfo info; unsigned char reply[6]; int i, numpics, ret; char fn[20]; numpics = _get_number_images(camera); if (numpics < GP_OK) return numpics; /* gp_list_populate (list, "blink%03i.raw", numpics); */ #if 1 for (i=0;iport,1,i,8,reply,6); if (ret < GP_OK) return ret; } while (reply[0]!=0); switch (reply[5] >> 5) { case 0: /* VGA */ info.file.width = 640; info.file.height = 480; break; case 1: /* CIF */ info.file.width = 352; info.file.height = 288; break; case 2: /* QCIF */ info.file.width = 176; info.file.height = 144; break; case 3: /* QVGA */ info.file.width = 320; info.file.height = 240; break; case 4: /* ? */ info.file.width = 800; info.file.height = 592; break; case 5: /* VGA/4 */ info.file.width = 160; info.file.height = 120; break; default: return GP_ERROR; } info.file.size = (reply[1]) | (reply[2] << 8) | (reply[3] << 16)| (reply[4] << 24); ret = gp_filesystem_set_info_noop(fs, "/", info, context); if (ret != GP_OK) return ret; } #endif return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, }; int camera_init (Camera *camera, GPContext *context) { int res; char reply[8]; GPPortSettings settings; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->get_config = camera_config_get; camera->functions->set_config = camera_config_set; camera->functions->capture = camera_capture; camera->functions->capture_preview = camera_capture_preview; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; /* Now, tell the filesystem where to get lists, files and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* * The port is already provided with camera->port (and * already open). You just have to use functions like * gp_port_timeout_set, gp_port_settings_get, gp_port_settings_set. */ /* Get the current settings */ gp_port_get_settings (camera->port, &settings); /* Modify the default settings the core parsed */ settings.usb.interface=1;/* we need to use interface 1 */ settings.usb.inep=4; /* Set the new settings */ res = gp_port_set_settings (camera->port, settings); if (res != GP_OK) { gp_context_error (context, _("Could not apply USB settings")); return res; } /* * Once you have configured the port, you should check if a * connection to the camera can be established. */ gp_port_usb_msg_read (camera->port, 5, 1, 0, reply, 2); if(reply[0]!=1) return (GP_ERROR_IO); gp_port_usb_msg_read (camera->port, 5, 0, 0, reply, 8); if(reply[0]!=1) return (GP_ERROR_IO); return (GP_OK); } libgphoto2-2.5.9/camlibs/sipix/blink.txt0000644000175000001440000000440312557123324015130 00000000000000Sipix blink usb "toy" camera Stuff you need to know to control the *still* part of the camera These are probably incomplete! but they do appear to work usb vendor id = 0x0851 usb product id = 0x1542 device has 8megs ram and can take images at 640x480 and 320x240(ish) usb requests (snooped from doze driver - there listed in the order they appear) all control requests are on the control pipe bulk is only used to read data and is on interface 1 Request ------- no idea what this is for probably camera init? bmRequestType=c0 Vendor,device to host bRequest = 5 wValue = 1 Index = 0 Length = 2 Result:2bytes contains: 01 00 Request ------- again no idea - possibly camera id? - only first 6 bytes used bmRequestType=c0 Vendor,device to host bRequest = 5 wValue = 0 Index = 0 Length = 8 Result:8bytes contains:01 06 79 10 3e 1e 00 00 Request ------- Get picture count bmRequestType=c0 Vendor,device to host bRequest = 0 wValue = 0 Index = 0 Length = 8 Result:2bytes contains:04 00 (there were 4 pics in device) Request ------- Gets size of specified image, odd in that request is repeated untill first byte in returned data changes to 0 The returned size is in "blocks" these are 0x100 bytes long eithr that or ive cocked up where the size field is by a byte ;-) bmRequestType=c0 Vendor,device to host bRequest = 1 wValue = 0 (image index from 0) Index = 1 Length = 8 Result:8bytes contains:01 00 00 00 00 00 00 00 untill value changes Result:8bytes contains:00 00 10 01 00 00 00 00 8 bytes break down into byte 00:ready 0 - yes 1 -no byte 01: size 0 02: size 1 03: size 2 04: size 3 05: format flags Image Size: Upper 3 bits: (x >> 5) 0 - 640x480 1 - 352x288 2 - 176x144 3 - 320x240 4 - 800x592 5 - 160x120 Unknown: Lower 2 bits ( x & 0x03) 0 -> 2 2 -> 1 3 -> 0 1 -> ? Unknown: Mid 3 bits ( (x >> 2) & 0x07) 06 07 request ------- Positions bulk pipe ready to download image Again request is repeated untill returned data byte 0 is set to 0 bmRequestType=c0 Vendor,device to host bRequest = 2 wValue = 0 (image index) Index = 0 Length = 6 Result:6bytes contains:01 00 00 00 00 00 untill data changes to: contains:00 00 00 00 00 00 opens bulk pipe and starts reading data in 0x100(256) byte chunks closes bulk pipe libgphoto2-2.5.9/camlibs/sipix/xjpeg.c0000644000175000001440000001212212610415536014545 00000000000000/* Simple JPEG tag extractor and viewer * * Copyright 2003 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #define APP0 0xe0 #define APP1 0xe1 #define APP2 0xe2 #define DHT 0xc4 #define SOI 0xd8 #define DQT 0xdb #define SOF0 0xc0 #define SOS 0xda #define COM 0xfe static int rb(int suppress) { unsigned char c; if (1!=read(fileno(stdin),&c,1)) return -1; if (!suppress) fprintf(stderr,"%02x",c); return c; } static int rd(int len, char *data) { unsigned int c,i; for (i=0;i>4),td&0xf); } ss = rb(1); if (ss == -1) break; se = rb(1); if (se == -1) break; ahl = rb(1); if (ahl == -1) break; fprintf(stderr,"ss=%d, se=%d, h=%d,l=%d\n",ss,se,(ahl>>4),ahl&0xf); break; } case SOF0: { int bitcnt,x,y,nf,i,c,hv,tq; m = rb(1); if (m == -1) break; bitcnt = m; y = rb(1); if (y == -1) break; m = rb(1); if (m == -1) break; y = (y<<8) | m; x = rb(1); if (x == -1) break; m = rb(1); if (m == -1) break; x = (x<<8) | m; nf = rb(1); if (nf == -1) break; fprintf(stderr,":SOF0,bitcnt=%d,x=%d,y=%d:\n",bitcnt,x,y); for (i=0;i>4),hv&0xf,tq); } break; } case DHT: { m = rb(1); if (m == -1) break; fprintf(stderr,":DHT(0x%02x)\n",m); skipdata(len - 2 - 1,1); break; } case DQT: { fprintf(stderr,":DQT\n"); skipdata(len-2,1); break; } case APP1: case APP2: case APP0: { char name[5]; fprintf(stderr,":APP0("); if (-1==rd(4,name)) break; name[4] = '\0'; fprintf(stderr,"%s):", name); if (!strcmp(name,"JFIF")) { print_jfif(); } else { if (-1==skipdata(len - 2 - 4,0)) { break; } fprintf(stderr,"\n"); } break; } default: fprintf(stderr,":Unknown marker\n"); if (len) { if (-1==skipdata(len - 2,0)) { break; } fprintf(stderr,"\n"); } break; } } return 0; } libgphoto2-2.5.9/camlibs/sipix/blink2.c0000644000175000001440000002746512610415617014631 00000000000000/* blink2.c * * Copyright 2003 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #ifdef HAVE_LIBJPEG # include #endif #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define BLINK2_GET_NUMPICS 0x08 #define BLINK2_GET_MEMORY 0x0a #define BLINK2_GET_DIR 0x0d #define BLINK2_INIT_CAPTURE 0x0e #define BLINK2_DELETE_ALL 0x12 #define BLINK2_CHECK_CAPTURE_FINISH 0x16 #define BLINK2_SET_EXPOSURE_COUNT 0x17 #define BLINK2_GET_FIRMWARE_ID 0x18 static int blink2_getnumpics( GPPort *port, GPContext *context,int *numpics ) { char buf[6]; int ret; ret = gp_port_usb_msg_read(port, BLINK2_GET_NUMPICS, 0x03, 0, buf, 2); if (retport, context, &numpics ); if (ret < GP_OK) return ret; bytes = ((8*(1+numpics))+0x3f) & ~0x3f; xbuf = malloc(bytes); ret = gp_port_usb_msg_read( camera->port,BLINK2_GET_DIR,0x03,0,(char*)buf,1 ); if (ret < GP_OK) { free(xbuf); return ret; } ret = gp_port_read( camera->port, (char*)xbuf, bytes); if (ret < GP_OK) { free(xbuf); return ret; } for ( i=0; i < numpics; i++) { char name[20]; if (xbuf[8*(i+1)]) sprintf( name, "image%04d.avi", i); else sprintf( name, "image%04d.pnm", i); gp_list_append( list, name, NULL); } free(xbuf); return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int image_no, result; int i, ret, numpics, bytes; unsigned char *xbuf, buf[8]; struct xaddr { unsigned int type, start,len; } *addrs; ret = blink2_getnumpics( camera->port, context, &numpics ); if (ret < GP_OK) return ret; gp_log(GP_LOG_DEBUG, "blink2","numpics is %d", numpics); bytes = ((8*(1+numpics))+0x3f) & ~0x3f; xbuf = malloc(bytes); if (!xbuf) return GP_ERROR_NO_MEMORY; addrs = (struct xaddr*)malloc(sizeof(struct xaddr)*numpics); if (!addrs) { free(xbuf); return GP_ERROR_NO_MEMORY; } ret = gp_port_usb_msg_read( camera->port,BLINK2_GET_DIR,0x03,0,(char*)buf,1 ); if (ret < GP_OK) { free(addrs); free(xbuf); return ret; } ret = gp_port_read (camera->port, (char*)xbuf, bytes); if (ret < GP_OK) { free(addrs); free(xbuf); return ret; } for ( i=0; i < numpics; i++) { int end, start; start = (xbuf[8*i+ 5] << 16) | (xbuf[8*i+ 6] << 8) | (xbuf[8*i+ 7]); end = (xbuf[8*i+13] << 16) | (xbuf[8*i+14] << 8) | (xbuf[8*i+15]); addrs[i].start = start; addrs[i].len = (end-start)/4; addrs[i].type = xbuf[8*(i+1)]; gp_log(GP_LOG_DEBUG, "blink2","%d - %d", start, (end-start)/4); } free(xbuf); image_no = gp_filesystem_number(fs, folder, filename, context); if(image_no < 0) { free(addrs); return image_no; } switch (type) { case GP_FILE_TYPE_NORMAL: #ifdef HAVE_LIBJPEG { char *convline,*convline2,*rawline; unsigned char *jpegdata; unsigned int start, len, pitch; int curread; struct jpeg_decompress_struct dinfo; struct jpeg_source_mgr xjsm; struct jpeg_error_mgr jerr; memset( buf, 0, sizeof(buf)); if (addrs[image_no].type) gp_file_set_mime_type (file, GP_MIME_AVI); else gp_file_set_mime_type (file, GP_MIME_JPEG); start = addrs[image_no].start; len = addrs[image_no].len; jpegdata = (unsigned char*)malloc (len*8); if (!jpegdata) { result = GP_ERROR_NO_MEMORY; break; } buf[0] = (start >> 24) & 0xff; buf[1] = (start >> 16) & 0xff; buf[2] = (start >> 8) & 0xff; buf[3] = start & 0xff; buf[4] = (len >> 24) & 0xff; buf[5] = (len >> 16) & 0xff; buf[6] = (len >> 8) & 0xff; buf[7] = len & 0xff; result = gp_port_usb_msg_write (camera->port,BLINK2_GET_MEMORY,0x03,0,(char*)buf,8); if (result < GP_OK) { free (jpegdata); break; } len *= 8; curread = 0; do { int res; res = gp_port_read (camera->port, (char*)(jpegdata+curread), len ); if (res < GP_OK) { result = GP_OK; break; } curread += res; } while (curread<=len); memset( &dinfo, 0, sizeof(dinfo)); xjsm.next_input_byte = jpegdata; xjsm.bytes_in_buffer = len; xjsm.init_source = _jpeg_init_source; xjsm.fill_input_buffer = _jpeg_fill_input_buffer; xjsm.skip_input_data = _jpeg_skip_input_data; xjsm.resync_to_restart = _jpeg_resync_to_restart; xjsm.term_source = _jpeg_term_source; dinfo.err = jpeg_std_error(&jerr); jpeg_create_decompress(&dinfo); dinfo.src = &xjsm; ret = jpeg_read_header(&dinfo,TRUE); if (ret != JPEG_HEADER_OK) { jpeg_destroy_decompress(&dinfo); free (jpegdata); break; } dinfo.out_color_space = JCS_RGB; jpeg_start_decompress(&dinfo); pitch = (dinfo.output_width*dinfo.output_components+3)&~3; rawline = malloc(pitch); convline = malloc(dinfo.output_width*2*3); convline2 = malloc(dinfo.output_width*2*2*3); { char foo[30]; sprintf(foo,"P6\n%d %d 255\n",dinfo.output_width, dinfo.output_height*2); gp_file_append (file, foo, strlen(foo)); } for (i = 0; i < dinfo.output_height ; i++ ) { int j; JSAMPROW row[1]; JSAMPARRAY arr = row; row[0] = (JSAMPROW)rawline; jpeg_read_scanlines(&dinfo,arr,1); memcpy(convline+((dinfo.output_width/16-1)*16+8)*3, rawline+((dinfo.output_width/16-1)*16+8)*3, 8*3); memcpy(convline+pitch/2, rawline, 8*3); for (j=0;j<(dinfo.output_width/16-1);j++) { if ((j&1) == 0) memcpy(convline+((j/2)*16)*3,rawline+(j*16+8)*3,16*3); else memcpy(convline+pitch/2+((j/2)*16+8)*3,rawline+(j*16+8)*3,16*3); } for (j=0;j> 24) & 0xff; buf[1] = (start >> 16) & 0xff; buf[2] = (start >> 8) & 0xff; buf[3] = start & 0xff; buf[4] = (len >> 24) & 0xff; buf[5] = (len >> 16) & 0xff; buf[6] = (len >> 8) & 0xff; buf[7] = len & 0xff; result = gp_port_usb_msg_write(camera->port,BLINK2_GET_MEMORY,0x03,0,(char*)buf,8); if (result < GP_OK) break; len = len*8; do { curread = 4096; if (curread > len) curread = len; curread = gp_port_read( camera->port, buf2, curread); if (curread < GP_OK) { result = GP_OK; break; } len -= curread; result = gp_file_append( file, buf2, curread); if (result < GP_OK) break; } while (len>0); break; } default: result = GP_ERROR_NOT_SUPPORTED; break; } free(addrs); if (result < 0) return result; return (GP_OK); } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; int ret; char buf[1]; ret = gp_port_usb_msg_read( camera->port, BLINK2_DELETE_ALL, 0x03, 0, buf, 1); if (ret < GP_OK) return ret; return (GP_OK); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { int oldnumpics, numpics, ret; char buf[1]; ret = blink2_getnumpics (camera->port, context, &oldnumpics); if (ret < GP_OK) return ret; ret = gp_port_usb_msg_read( camera->port, BLINK2_INIT_CAPTURE, 0x03, 0, buf, 1); if (ret < GP_OK) return ret; do { ret = gp_port_usb_msg_read( camera->port, BLINK2_CHECK_CAPTURE_FINISH, 0x03, 0, buf, 1); if (ret < GP_OK) return ret; sleep(1); } while (buf[0] == 0x00); ret = blink2_getnumpics (camera->port, context, &numpics); if (ret < GP_OK) return ret; if (numpics == oldnumpics) return (GP_ERROR); strcpy (path->folder,"/"); sprintf (path->name,"image%04d.pnm",numpics-1); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); strcpy(a.model, "SiPix:Blink 2"); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = 0x0c77; a.usb_product = 0x1011; a.operations = GP_OPERATION_CAPTURE_IMAGE; a.file_operations = GP_FILE_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; gp_abilities_list_append(list, a); a.usb_product = 0x1010; strcpy(a.model, "SiPix:Snap"); gp_abilities_list_append(list, a); a.usb_product = 0x1015; strcpy(a.model, "SiPix:CAMeleon"); gp_abilities_list_append(list, a); return (GP_OK); } int camera_id (CameraText *id) { strcpy(id->text, "SiPix Blink2"); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .delete_all_func = delete_all_func }; int camera_init (Camera *camera, GPContext *context) { char buf[6]; int ret; GPPortSettings settings; camera->functions->capture = camera_capture; gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); gp_port_get_settings( camera->port, &settings); settings.usb.config = 1; settings.usb.interface = 0; settings.usb.altsetting = 0; ret = gp_port_set_settings (camera->port, settings); if (ret < GP_OK) return ret; ret = gp_port_usb_msg_read( camera->port, BLINK2_GET_FIRMWARE_ID, 0x03, 0, buf, 6); if (ret < GP_OK) return ret; ret = gp_port_usb_msg_read( camera->port, 0x04, 0x03, 0, buf, 1); if (ret < GP_OK) return ret; return GP_OK; } libgphoto2-2.5.9/camlibs/sipix/blink2.txt0000644000175000001440000000452012557123324015212 00000000000000Blink2 Protocol Mostly control messages... (control bRequest, wValue, wIndex -> buf[wLength]) Get Firmware ID: control read 0x18, 0x03, 0x00 -> buf[6] Gets the firmware id. Number of Pictures: control read 0x8, 0x03, 0x00 -> buf[2] (high, low byte) Gets number of pictures. Get Directory: control read 0x0d, 0x03, 0x00 -> buf[1] bulk read (((8*(1+numpics))+0x3f) & ~0x3f) bytes. Buffer has now: i = 0 .. numpics: buf[8*(i+1)] - movie flag buf[8*(i+1)+5 ... 7] - 3 bytes start, MSB first buf[8*(i+1)+13 ... 15] - 3 bytes end, MSB first Gets the directory entries. Get Memory: Prepare buffer as: buf[0..4] start (MSB first) buf[5..7] length (MSB first) control write 0x0a, 0x03, 0x00, buf[8] bulk read (length) Gets the memory (imagedata) as specified. Capture Picture: control read 0x0e, 0x03, 0x00 -> buf[1] do control read 0x16, 0x03, 0x00 -> buf[1] while buf[0] == 0 Afterwards the image is in the camera memory. Delete All Images: control read 0x12, 0x03, 0x00 -> buf[1] All images on the camera are deleted. Delete Last Image: control read 0x11, 0x03, 0x00 -> buf[1] Last image on camera is deleted. Start Video: control read 0x4, 0x01, 0x00 -> buf[1] This starts the ISO transfers I suspect? Current Video Position (??): control read 0x7, 0x00, 0x00 -> buf[2] Unclear, I think it returns amount of data read in buf[2]. Initialize Still Mode: control read 0x4, 0x03, 0x00 -> buf[1] Hmm (?) / Resync Routine: control read 0x13, 0x0, 0x00 -> buf[1] Bandwith Allocate(type): 320x240: control read 0x14, 0x0, 0x00 -> buf[1] 640x480: control read 0x15, 0x0, 0x00 -> buf[1] I think this is for ISO transfers, started by 0x04,0x01. You need to change the interface accordingly. Set Exposure Count(value): control read 0x17, 0x03, value -> buf[1] Unclear. Set Compression(value): control read 0x1b, 0x03, value -> buf[1] Unclear. Set Whitebalance(value): control read 0x1d, 0x03, value -> buf[1] Unclear. Set Still Quality(value): control read 0x1a, 0x03, value -> buf[1] Unclear. Set Flare(value) control read 0x19, 0x03, value -> buf[1] Unclear. Internal Driver Properties: ID Name Range Default 0x01 Brightness 0-50 43 0x03 Sharpness 0-255 20 0x08 Saturation 0-128 128 0x0b Whitebalance 0-7 7 0x0c Gamma 0-11 9 0x0d Backlight 0-1 0 0x0e Contrast ? 0-14 7 libgphoto2-2.5.9/camlibs/sipix/Makefile-files0000644000175000001440000000142312561423351016025 00000000000000EXTRA_DIST += sipix/web2.html sipix/blink.c sipix/blink.txt \ sipix/xjpeg.c sipix/blink2.txt sipix/ChangeLog # Seems to be obsolete EXTRA_LTLIBRARIES += sipix_blink.la sipix_blink_la_SOURCES = sipix/blink.c sipix_blink_la_LDFLAGS = $(camlib_ldflags) sipix_blink_la_DEPENDENCIES = $(camlib_dependencies) sipix_blink_la_LIBADD = $(camlib_libadd) EXTRA_LTLIBRARIES += sipix_blink2.la sipix_blink2_la_SOURCES = sipix/blink2.c sipix_blink2_la_LDFLAGS = $(camlib_ldflags) sipix_blink2_la_DEPENDENCIES = $(camlib_dependencies) sipix_blink2_la_LIBADD = $(camlib_libadd) @LIBJPEG@ EXTRA_LTLIBRARIES += sipix_web2.la sipix_web2_la_SOURCES = sipix/web2.c sipix_web2_la_LDFLAGS = $(camlib_ldflags) sipix_web2_la_DEPENDENCIES = $(camlib_dependencies) sipix_web2_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/sipix/web2.html0000644000175000001440000000501512557123324015015 00000000000000 USB control messages:
  • Command : (cmd << 8) | param
  • Index : only set for read
  • Buffer : arguments, usually in WORDs
Commandname R/W Code Param Ind. Data Description
Init Camera W 0xD7 1 - - Send for opening the camera.
Exit Camera W 0xD8 0 - - Send for closing the camera.
Select Picture W 0xB2 0 - WORD picnum Select picnum picture (first is 1).
Download Image W 0x93 Flags, 0x10,0x01. 0x00 works just fine. - - Download selected picture by doing bulk reads (until no more data).
Download Thumbnail W 0x9B 0x00 ? - - Download selected thumbnail by doing bulk reads (until no more data).
Download Exif W 0xE5 0x00 - - Download EXIF data for selected picture by doing bulk reads (until no more data).
Get Picture Info R 0xAD 0x00 picnum 4 words: percentage, index number (in camera?), flags, unknown Apparently gets image information about images in camera.
Get Picture Fileentry R 0xB9 0x00 - WORD check;
CHAR filename[14] (byteflipped) from 2..16
DWORD filesize (32bit?), unknown(32bit?)
Gets the directory entry of the file.
Delete Picture R 0xBA WORD flag; - WORD result; Deletes the selected picture. Parameter might be 0x40 (delete?) or 0x00 (?).
Get Number of Pictures? R 0xB6 0x00 - WORD unknown
WORD numpics
WORD unknown
DWORD freemem?
Gets several global parameters, like the number of pictures.The last 32bit appear to be free memory?
libgphoto2-2.5.9/camlibs/sipix/ChangeLog0000644000175000001440000000332212561423351015037 000000000000002006-11-19 Marcus Meissner * Makefile.am: do not build blink driver anymore, not working anyway. 2005-03-23 Marcus Meissner * blink2.c: added delete all and capture image. * blink2.txt: started documenting. 2004-04-01 Marcus Meissner * merged patch for Snap from Thomas Coffy , changes some usb lowlevel stuff. 2004-01-19 Marcus Meissner * blink2.c: Some alignment issues, set altsetting. * xjpeg.c: Added APP1, APP2. 2003-06-22 Marcus Meissner * blink2.c: SiPix Blink2 now downloads viewable images. * xjpeg.c: Small tool to view jpeg tags with contents, not compiled. 2003-05-20 Marcus Meissner * blink2.[ch]: New SiPix Blink2 driver. Downloads unprocessed JPEG for now (needs a bit work). * blink2.c: SiPix Snap should also work, according to old snoopy trace. * Makefile.am: reorganized file layout. 2002-12-04 Marcus Meissner * Intermediate checkin of my current work. - Can read bitstream to some degree and extract the DCT tables. Still apparently does not find the endmarker correctly. 2002-09-21 Marcus Meissner * Imported SiPix StyleCam Blink driver from Vincent Sanders * Cleaned it up and made it work, still dumps compressed images. 2002-04-12 Marcus Meissner * *: First version of SiPix Web2 driver: The Camera is a 640x480 JPEG camera. The driver currently supports: - Picture, Thumbnail, EXIF download. - Delete Single Picture libgphoto2-2.5.9/camlibs/sipix/web2.c0000644000175000001440000004175312610415536014303 00000000000000/* web2.c * * Copyright 2002 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define WEB2_SELECT_PICTURE 0xb2 #define WEB2_GET_NUMPICS 0xb6 #define WEB2_OPEN_CAMERA 0xd7 #define WEB2_CLOSE_CAMERA 0xd8 #define WEB2_GET_EXIF 0xe5 #define WEB2_GET_IMAGE 0x93 #define WEB2_GET_THUMBNAIL 0x9b #define WEB2_GET_DIRENTRY 0xb9 #define WEB2_GET_PICINFO 0xad static int web2_command( GPPort *port, int iswrite, int cmd, int param, int index, char *data, int datasize ) { int ret; if (iswrite) ret = gp_port_usb_msg_write(port,0,(cmd<<8)|param,index,data,datasize); else ret = gp_port_usb_msg_read(port,0,(cmd<<8)|param,index,data,datasize); #if 0 fprintf(stderr,"cmd %x, param %d, ret is %d\n",cmd, param, ret); if ((ret > 0) && data) { for (i=0;i=GP_OK) ret=GP_OK; return ret; } static int web2_init(GPPort *port, GPContext *context) { return web2_command(port, 1, WEB2_OPEN_CAMERA, 1, 0, NULL, 0); } static int web2_exit(GPPort *port, GPContext *context) { return web2_command(port, 1, WEB2_CLOSE_CAMERA, 0, 0, NULL, 0); } static int web2_select_picture(GPPort *port, GPContext *context, int picnum) { char cmdbuf[2]; picnum++; cmdbuf[0] = picnum & 0xff; cmdbuf[1] = (picnum>>8) & 0xff; return web2_command(port, 1, WEB2_SELECT_PICTURE, 0, 0, cmdbuf, 2); } static const unsigned char ExifHeader[] = {0x45, 0x78, 0x69, 0x66, 0x00, 0x00}; static int web2_getexif(GPPort *port, GPContext *context, CameraFile *file) { int ret, i; char xbuf[16384]; ret = web2_command(port, 1, WEB2_GET_EXIF, 0x00, 0, NULL, 0); if (ret!=GP_OK) return ret; gp_file_append(file, (char*)ExifHeader, sizeof(ExifHeader)); ret = gp_port_read(port, xbuf, sizeof(xbuf)); if (ret < GP_OK) { gp_file_clean(file); return ret; } for (i=0;i sizeof(xbuf)) toread = sizeof(xbuf); ret = gp_port_read(port, xbuf, toread); if (ret < GP_OK) return ret; gp_file_append(file,xbuf,ret); curread+=ret; gp_context_progress_update(context, id, curread); if (toread!=ret) break; if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { /* We need to read the rest too or the communication is in * an undefined state. */ wascanceled = 1; } } gp_context_progress_stop(context, id); if (wascanceled) return GP_ERROR_CANCEL; return GP_OK; } static int web2_get_picture_info( GPPort *port, GPContext *context, int picnum, int *perc, int *incamera, int *flags, int *unk ) { char cmdbuf[8]; int ret; /* picnum is not in param, but in the control message index! */ ret = web2_command(port, 0, WEB2_GET_PICINFO, 0, picnum+1, cmdbuf, 8); if (ret != GP_OK) return ret; *perc = cmdbuf[0] | (cmdbuf[1] << 8); *incamera = cmdbuf[2] | (cmdbuf[3] << 8); *flags = cmdbuf[4] | (cmdbuf[5] << 8); *unk = cmdbuf[6] | (cmdbuf[7] << 8); return GP_OK; } /********************** Unknown and/or incomplete ******************/ /* Called after 0xad and 0xb2 , with 0, 1, 2, or similar x values * Seems to global, not picture based. (Select storage? Select camera access * mode?) Not clear. You need to set it correctly before download or delete * thought */ static int web2_set_xx_mode(GPPort *port, GPContext *context, int mode) { char cmdbuf[2]; cmdbuf[0] = mode & 0xff; cmdbuf[1] = (mode>>8) & 0xff; return web2_command(port, 1, 0xae, 0, 0, cmdbuf, 2); } static int web2_getnumpics( GPPort *port, GPContext *context, int *x1, int *numpics, int *x3, int *freemem ) { char cmdbuf[10]; int ret; ret = web2_command(port, 0, WEB2_GET_NUMPICS, 0x00, 0, cmdbuf, 10); if (ret!=GP_OK) return ret; *x1 = cmdbuf[0] | (cmdbuf[1] << 8); /* unclear */ *numpics = cmdbuf[2] | (cmdbuf[3] << 8); *x3 = cmdbuf[4] | (cmdbuf[5] << 8); /* unclear */ /* sometimes looks like mem, sometimes it doesn't */ *freemem = cmdbuf[6] | (cmdbuf[7] << 8) | (cmdbuf[8] << 16) | (cmdbuf[9] << 24); return GP_OK; } /* called with 0x00, 0x20, or 0x40 */ /* 0x40 is 'delete selected picture' */ /* the others are unknown */ static int web2_set_picture_attribute(GPPort *port, GPContext *context, int x, int *y) { char cmdbuf[2]; int ret; ret = web2_command(port, 0, 0xba, x, 0, cmdbuf, 2); if (ret!=GP_OK) return ret; *y = cmdbuf[0] | (cmdbuf[1] << 8); return GP_OK; } #if 0 /* gets 7 shorts */ static int _cmd_e6(GPPort *port, GPContext *context, short *arr) { char cmdbuf[14]; int i; int ret; ret = web2_command(port, 0, 0xe6, 0, 0, cmdbuf, 14); if (ret!=GP_OK) return ret; for (i=0;i<7;i++) arr[i] = cmdbuf[2*i+0] | (cmdbuf[2*i+1]<<8); return GP_OK; } int _cmd_d0(GPPort *port, GPContext *context, int flag, short *retval) { char buf[4]; int ret; ret = web2_command(port, 0, 0xd0, 0, 0, buf, 4); if (ret < 0) return GP_ERROR_IO; *retval = buf[flag*2] | (buf[flag*2+1]<<8); return GP_OK; } int /* change mode? args are 30,40,50 ... they will appear in d0 later */ _cmd_1f(GPPort *port, GPContext *context, int x) { return web2_command(port, 1, 0x1f, x, 0, NULL, 0); } int _cmd_07(GPPort *port, GPContext *context, int *x) { char cmdbuf[2]; int ret; ret = web2_command(port, 0, 0x07, 0, 0, cmdbuf, 2); if (ret < 0) return GP_ERROR_IO; *x = cmdbuf[0] | (cmdbuf[1]<<8); return GP_OK; } int _cmd_0a(GPPort *port, GPContext *context, int x1, int x2) { char buf[80], cmdbuf[2]; int ret, i; cmdbuf[0] = x2&0xff; cmdbuf[1] = (x2>>8)&0xff; ret = web2_command(port, 1, 0x0a, x1, 0, cmdbuf, 2); if (ret < 0) { fprintf(stderr,"0a failed\n"); return GP_ERROR_IO; } ret = gp_port_read(port, buf, 80); if (ret<80) return ret; for (i=0;i>8)&0xff; ret = web2_command(port, 1, 0x0b, x1, 0, cmdbuf, 2); if (ret < 0) return GP_ERROR_IO; /* Bulk writes stuff */ return GP_OK; } int _cmd_eb(GPPort *port, GPContext *context, int x) { char cmdbuf[2]; cmdbuf[0] = x & 0xff; cmdbuf[1] = (x>>8) & 0xff; /* Only 1 is passed as param, and x appears to be a BOOL */ return web2_command(port, 1, 0xeb, 1, 0, cmdbuf, 2); } int _cmd_11(GPPort *port, GPContext *context, int x) { return web2_command(port, 1, 0x11, x|0x20, 0, NULL, 0); } /* gets 1 shorts */ int _cmd_bf(GPPort *port, GPContext *context, int x, short *val) { char cmdbuf[2]; int ret; ret = web2_command(port, 0, 0xbf, x, 0, cmdbuf, 2); if (ret!=GP_OK) return ret; *val = cmdbuf[0] | (cmdbuf[1]<<8); return GP_OK; } int _cmd_20(GPPort *port, GPContext *context, int x) { return web2_command(port, 1, 0x20, x, 0, NULL, 0); } int _cmd_60(GPPort *port, GPContext *context, int x) { return web2_command(port, 1, 0x60, x, 0, NULL, 0); } int _cmd_20_0(GPPort *port, GPContext *context) { return _cmd_20(port,context,0); } int _cmd_e1(GPPort *port, GPContext *context, int x) { switch (x) { case 0: /* keep 0 */ break; case 1: x = 0xe; break; default: x = 0xe + 0x19; break; } return web2_command(port, 1, 0xe1, x, 0, NULL, 0); } static short xshort[3]; int _cmd_26(GPPort *port, GPContext *context, int x) { char cmdbuf[6]; int i; switch (x) { case 0: for (i=0;i<3;i++) { cmdbuf[2*i+0] = xshort[i] & 0xff; cmdbuf[2*i+1] = (xshort[i] >> 8) & 0xff; } return web2_command(port, 1, 0x26, 0x10, 0, cmdbuf, 6); case 1: xshort[0] = 364; /* 16c */ xshort[1] = 256; /* 100 */ xshort[2] = 596; /* 254 */ break; case 2: xshort[0] = 998; /* 3e6 */ xshort[1] = 256; /* 100 */ xshort[2] = 259; /* 103 */ break; default: xshort[0] = 625; /* 271 */ xshort[1] = 256; /* 100 */ xshort[2] = 607; /* 25f */ break; } for (i=0;i<3;i++) { cmdbuf[2*i+0] = xshort[i] & 0xff; cmdbuf[2*i+1] = (xshort[i] >> 8) & 0xff; } return web2_command(port, 1, 0x26, 0x00, 0, cmdbuf, 6); } int _cmd_75(GPPort *port, GPContext *context, int x) { switch (x) { case 0: x = 1;break; case 1: x = 2;break; case 2: x = 0;break; default:x = 1;break; } return web2_command(port, 1, 0x75, x, 0, NULL, 0); } int _cmd_fb(GPPort *port, GPContext *context, int *y) { char cmdbuf[2]; int ret; ret = web2_command(port, 0, 0xfb, 0, 0xa2b8, cmdbuf, 2); if (ret != GP_OK) return ret; *y = cmdbuf[0] | (cmdbuf[1] << 8); return GP_OK; } #endif int camera_id (CameraText *id) { strcpy(id->text, "SiPix Web2"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); strcpy(a.model, "SiPix:Web2"); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = 0x0c77; a.usb_product = 0x1001; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_EXIF; a.folder_operations = GP_FOLDER_OPERATION_NONE; gp_abilities_list_append(list, a); /* reported by Terry Lewis */ strcpy(a.model, "SiPix:SC2100"); a.usb_product = 0x1002; gp_abilities_list_append(list, a); return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { return web2_exit(camera->port, context); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int image_no, result, flags, aeflag, junk; if (strcmp(folder,"/")) return GP_ERROR_BAD_PARAMETERS; image_no = gp_filesystem_number(fs, folder, filename, context); if (image_no < GP_OK) return image_no; result = web2_get_picture_info(camera->port, context, image_no, &junk, &junk, &flags, &junk); if (result != GP_OK) return result; if (flags & 1) { aeflag = 1; } else { if (flags & 2) { aeflag = 2; } else { fprintf(stderr,"Oops , 0xAD returned flags %x?!\n",flags); return GP_ERROR; } } result = web2_select_picture(camera->port, context, image_no); if (result != GP_OK) return result; result = web2_set_xx_mode(camera->port, context, aeflag); if (result != GP_OK) return result; /* result = _cmd_e6(camera->port, context, fupp); if (result != GP_OK) return result; for (i=0;i<7;i++) fprintf(stderr,"%d (%x)",fupp[i],fupp[i]); fprintf(stderr,"\n"); */ gp_file_set_mime_type (file, GP_MIME_JPEG); switch (type) { case GP_FILE_TYPE_NORMAL: /*result = _cmd_ae(camera->port, context, 1); if (result != GP_OK) fprintf(stderr,"ae 1 failed with %d\n",result); */ result = web2_getpicture(camera->port,context,file); break; case GP_FILE_TYPE_PREVIEW: result = web2_getthumb (camera->port,context,file); break; case GP_FILE_TYPE_EXIF: result = web2_getexif(camera->port,context,file); break; default: return (GP_ERROR_NOT_SUPPORTED); } if (result < 0) return result; return (GP_OK); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int aeflag, flags, junk, result, image_no; image_no = gp_filesystem_number(fs, folder, filename, context); if (image_no < GP_OK) return image_no; result = web2_get_picture_info(camera->port, context, image_no, &junk, &junk, &flags, &junk); if (result != GP_OK) return result; if (flags & 1) { aeflag = 1; } else { if (flags & 2) { aeflag = 2; } else { fprintf(stderr,"Oops , 0xAD returned flags %x?!\n",flags); return GP_ERROR; } } result = web2_select_picture(camera->port, context, image_no); if (result != GP_OK) return result; result = web2_set_xx_mode(camera->port, context, aeflag); if (result != GP_OK) return result; /* Delete the file from the camera. */ result = web2_set_picture_attribute(camera->port, context, 0x40, &junk); if (result!= GP_OK) return result; /* fprintf(stderr,"ba 0x40 returns %d\n",junk);*/ return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera.")); return (GP_OK); } /* * This function makes sure that the is . Even delete should keep that relation. */ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i, count, result, junk, flags, aeflag; result = web2_getnumpics(camera->port, context, &junk, &count, &junk, &junk); if (result != GP_OK) return result; for (i=0;iport, context, i, &junk, &junk, &flags, &junk); if (result != GP_OK) return result; if (flags & 1) { aeflag = 1; } else { if (flags & 2) { aeflag = 2; } else { fprintf(stderr,"Oops , 0xAD returned flags %x?!\n",flags); return GP_ERROR; } } result = web2_select_picture(camera->port, context, i); if (result != GP_OK) return result; result = web2_set_xx_mode(camera->port, context, aeflag); if (result != GP_OK) return result; result = web2_get_file_info(camera->port, context, fn, &size); if (result != GP_OK) return result; gp_list_append(list, fn, NULL); } return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func }; int camera_init (Camera *camera, GPContext *context) { camera->functions->exit = camera_exit; camera->functions->about = camera_about; gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); return web2_init(camera->port, context); } libgphoto2-2.5.9/camlibs/camlib.sym0000644000175000001440000000004712557123324014115 00000000000000camera_abilities camera_id camera_init libgphoto2-2.5.9/camlibs/iclick/0000755000175000001440000000000012623156267013457 500000000000000libgphoto2-2.5.9/camlibs/iclick/library.c0000644000175000001440000002310312610415536015177 00000000000000/* library.c * * Copyright (C) 2004 Theodore Kilgore , * Stephen Pollei . * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "iclick.h" #include #define GP_MODULE "iclick" static struct { char *name; CameraDriverStatus status; unsigned short idVendor; unsigned short idProduct; } models[] = { {"iClick 5X", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9153}, {NULL,0,0} }; int camera_id (CameraText *id) { strcpy (id->text, "iClick 5X"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].name); a.status = models[i].status; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; if (a.status == GP_DRIVER_STATUS_EXPERIMENTAL) a.operations = GP_OPERATION_NONE; else a.operations = GP_OPERATION_CAPTURE_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; a.file_operations = GP_FILE_OPERATION_PREVIEW + GP_FILE_OPERATION_RAW; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { sprintf (summary->text,_("Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n"), camera->pl->nb_entries); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "Information regarding cameras with ID 0x2770:0x9153.\n\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n") ); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("iClick 5X driver\n" "Theodore Kilgore \n")); return GP_OK; } /*************** File and Downloading Functions *******************/ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i; unsigned char buf[1024]; GP_DEBUG ("List files in %s\n", folder); gp_list_reset (list); for (i = 0; i < camera->pl->nb_entries; i++) { snprintf((char *)buf, sizeof(buf), "img%03i.ppm", i + 1); gp_list_append (list, (char *)buf, NULL); } return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int entry, w, h; /* frame; */ unsigned char *frame_data, *frame_ptr; unsigned char *ppm, *ptr; unsigned char gtable[256]; int start; int datasize, hdrsize, ppmsize; int nb_frames=1; unsigned char buf[0x8000]; #if 0 /* libgphoto2 likes to search in vain for EXIF data, which isn't there. It's a waste of time, and there should be a way to disable it explicitly. But there isn't. Un-if this if you don't like it, and you can still retrieve the first frame of a video via the frame filename instead. */ if (GP_FILE_TYPE_PREVIEW==type) return GP_ERROR_NOT_SUPPORTED; #endif if (GP_FILE_TYPE_RAW!=type && GP_FILE_TYPE_NORMAL!=type && GP_FILE_TYPE_PREVIEW!=type) { return GP_ERROR_NOT_SUPPORTED; } /* Get the entry number of the photo on the camera */ entry = gp_filesystem_number (camera->fs, folder, filename, context); if (entry < GP_OK) return GP_ERROR_FILE_NOT_FOUND; GP_DEBUG ("Download file %s, entry = %d\n", filename, entry); if (entry >= camera->pl->nb_entries) return GP_ERROR_FILE_NOT_FOUND; /* Fetch entries until the one we need, and toss all but the one we need. * TODO: Either find out how to use the location info in the catalog to * download just the entry needed, or show it is as impossible as it seems. */ /* Change register to DATA, but only if necessary */ if (camera->pl->data_offset == -1) { icl_access_reg(camera->port, DATA); /* Camera starts at the first picture.. */ camera->pl->data_offset = icl_get_start (camera->pl, 0); } start = icl_get_start (camera->pl, entry); datasize = icl_get_size (camera->pl, entry); /* datasize exceeds the actual datasize by 0x100 bytes, which seems to be * 0x100 bytes of filler at the beginning. For now we will treat this extra * 0x100 bytes as junk and just ditch it. */ GP_DEBUG ("data offset at %d, picture at %d\n", camera->pl->data_offset, start); /* Rewind if we're past the requested picture */ if (camera->pl->data_offset > start) { icl_rewind(camera->port, camera->pl); } /* Seek to the requested picture */ while ((camera->pl->data_offset + 0x8000) < start) { icl_read_picture_data(camera->port, buf, 0x8000); camera->pl->data_offset += 0x8000; } if (camera->pl->data_offset < start) { icl_read_picture_data(camera->port, buf, start - camera->pl->data_offset); camera->pl->data_offset = start; } frame_data = malloc(datasize); if (!frame_data) return GP_ERROR_NO_MEMORY; icl_read_picture_data(camera->port, frame_data, datasize); camera->pl->data_offset += datasize; switch (type) { case GP_FILE_TYPE_PREVIEW: if (icl_get_width_height (camera->pl, entry, &w, &h) >= GP_OK) break; /* Known format, process image */ /* No previewing of raw data */ free (frame_data); return GP_ERROR_NOT_SUPPORTED; case GP_FILE_TYPE_NORMAL: if (icl_get_width_height (camera->pl, entry, &w, &h) >= GP_OK) break; /* Known format, process image */ /* Unsupported format, fallthrough to raw */ case GP_FILE_TYPE_RAW: gp_file_set_mime_type (file, GP_MIME_RAW); gp_file_adjust_name_for_mime_type (file); gp_file_set_data_and_size (file, (char *)frame_data, datasize); return (GP_OK); default: return GP_ERROR_NOT_SUPPORTED; } /* Write the frame(s) */ snprintf((char *)buf, sizeof(buf), "P6\n" "# CREATOR: gphoto2, iClick library\n" "%d %d\n" "255\n", w, h); hdrsize = strlen((char *)buf); ppmsize = (hdrsize + w*h*3) * nb_frames; GP_DEBUG ("ppmsize = %i\n", ppmsize); ptr = ppm = malloc(ppmsize); frame_ptr = frame_data + 0x100; /* Here, we just threw away the "superfluous" first 0x100 bytes */ memcpy(ptr, buf, hdrsize); ptr += hdrsize; gp_bayer_decode (frame_ptr, w , h , ptr, BAYER_TILE_GBRG); gp_gamma_fill_table (gtable, .5); /* The gamma factor is pure guesswork; shooting in the dark. This * is the kind of thing which might be hidden in those 0x100 bytes. */ gp_gamma_correct_single (gtable, ptr, w * h); ptr += w*h*3; gp_file_set_mime_type (file, GP_MIME_PPM); gp_file_set_data_and_size (file, (char *)ppm, ppmsize); free (frame_data); return GP_OK; } /*************** Exit and Initialization Functions ******************/ static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("iClick camera_exit"); if (camera->pl->data_offset != -1) icl_rewind (camera->port, camera->pl); icl_reset (camera->port); if (camera->pl) { free (camera->pl->catalog); free (camera->pl); camera->pl = NULL; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func }; int camera_init(Camera *camera, GPContext *context) { GPPortSettings settings; int ret = 0; /* First, set up all the function pointers */ camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; camera->functions->exit = camera_exit; GP_DEBUG ("Initializing the camera\n"); ret = gp_port_get_settings(camera->port,&settings); if (ret < 0) return ret; ret = gp_port_set_settings(camera->port,settings); if (ret < 0) return ret; /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; camera->pl->model = 0; camera->pl->catalog = NULL; camera->pl->nb_entries = 0; camera->pl->data_offset = -1; /* Connect to the camera */ ret = icl_init (camera->port, camera->pl); if (ret != GP_OK) { free(camera->pl); return ret; } return GP_OK; } libgphoto2-2.5.9/camlibs/iclick/README.iclick0000644000175000001440000001041112561423351015501 00000000000000/* This is a supplemental README file for libgphoto2/camlibs/iclick, * another camera fro S&Q Technologies. * Integral part of the libgphoto2/camlibs/iclick library source and is * distributed with that source under the LGPL license. a copy of which * license may be seen in any of the source files in libgphoto2/camlibs/iclick, * or in the head directory of libgphoto2. This README and the rest of the * library are copyright Stephen Pollei and * Theodore Kilgore . */ ************************************************************************** BIG FAT WARNING This library is in the process of being written, and at present is of limited functionality. As far as we know, it will do what we say it will do, and it will also not do what we say it will not do. Therefore, please read the following discussion of the features which are supported at present and the features which are not supported! We hope to be able to do more, and if you have one of these cameras we hope that you will look for anticipated updates at the CVS tree of libgphoto2, found at . *************************************************************************** This library has been written specifically to support the iClick Pro 5X, a simple and inexpensive camera. A brief description of the camera may be found at . The camera has the USB Vendor:Product ID of 0x2770:0x9153, which would seem to indicate that it contains a chip from S&Q Technologies, Taiwan. The same company makes the sq905 chipset which is in many entry-level cameras; the chip in this camera is probably an sq915 chip, and it uses a different communication protocol. Probably, any other cameras with this chip inside will also work with this camera library, but we do not know that at this time. The camera has a flash, takes 640x480 pictures, and has a slot for a memory card. Without the memory card, it will hold 16 still photos, and with a memory card (maximum size is advertised as 128MB) it will clearly hold many more. A memory card has been tested with the camera and seems to work without any problems. The 640x480 photos can be blown up to a larger size by the OEM driver which comes with the camera. It is stated in the documentation that this is done by "interpolation" meaning that the actual amount of data is 640x480. The format of the data from the camera is a standard Bayer format, and this driver should download such photos. The photos look fairly sharp for 640x480; the color mapping could however be improved by postprocessing. For now, we recommend the use of GIMP or the old xview ("xv") program to do that after you download the photos. It is important to note that the construction of the hardware itself will not easily support downloading of random photos, which may present severe incompatibility with a GUI program such as gtkam, digikam, or similar. Thus, the user is advised to use the command "gphoto2 -P" to dump all photos on the camera into a directory. After this, the user can inspect at leisure the photos on the hard drive and can decide which ones to keep and which ones to delete. We repeat: We do not advise the use of a GUI frontend at this time, because we cannot guarantee that it will work. The camera also has two other modes of operation, which this driver does not support. There is a "video clip" feature which will shoot a number of frames. Apparently, these frames are then saved in some kind of JPEG format, and the size is given in the JPEG headers in the data as 320x240. This feature is at present NOT SUPPORTED. So please do not try to use it and especially do not try to mix clips with still photos on the camera. The fact that the clips are not of a fixed, given size will mess up your download. There is also a webcam feature. Gphoto2-libgphoto2 is in general not designed to support streaming video, which in general requires a kernel module. Abstractly speaking, the command "gphoto2 --capture-preview" can use the webcam mode to cause a tethered camera to snap a photo. This also we do not support at present. So if you make it work be sure to let us know. Taking the above caveats fully into consideration, we hope that you enjoy your experience with this camera. Stephen Pollei and Theodore Kilgore November 25, 2004.libgphoto2-2.5.9/camlibs/iclick/Makefile-files0000644000175000001440000000047612561423351016136 00000000000000EXTRA_DIST += iclick/README.iclick iclick/ChangeLog camlibdoc_DATA += iclick/README.iclick EXTRA_LTLIBRARIES += iclick.la iclick_la_SOURCES = iclick/library.c iclick/iclick.c iclick/iclick.h iclick_la_LDFLAGS = $(camlib_ldflags) iclick_la_DEPENDENCIES = $(camlib_dependencies) iclick_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/iclick/iclick.c0000644000175000001440000000745712610415524015004 00000000000000/* * iclick.c * * Here, the functions which are needed to get data from the camera. * * Copyright (c) 2004 Theodore Kilgore , * Stephen Pollei . * Camera library support under libgphoto2.1.1 for camera(s) * with chipset from Service & Quality Technologies, Taiwan. * The chip supported by this driver is presumed to be the SQ915. * * This library 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 * Lesser General Public License for more details. * * Licensed under GNU Lesser General Public License, as part of Gphoto * camera support project. For a copy of the license, see the file * COPYING in the main source tree of libgphoto2. */ #include #include #include #include #include #include #include #ifdef OS2 #include #endif #include #include #include "iclick.h" #define GP_MODULE "iclick" #define SQWRITE gp_port_usb_msg_write #define SQREAD gp_port_usb_msg_read #define zero "\x0" /* static unsigned char * icl_read_data (GPPort *port, unsigned char *data, int size) { gp_port_read (port, data, size); return GP_OK; } */ int icl_access_reg (GPPort *port, enum icl_cmnd_type reg) { SQWRITE (port, 0x0c, reg, (CONFIG == reg) ? CONFIG_I : 0, NULL, 0); /* Access a register */ return GP_OK; } int icl_init (GPPort *port, CameraPrivateLibrary *priv) { int i; static unsigned char dummy_buf[0x28000]; unsigned char *catalog = malloc(0x8000); unsigned char *catalog_tmp; priv->model=SQ_MODEL_ICLICK; if (!catalog) return GP_ERROR_NO_MEMORY; icl_reset (port); icl_access_reg(port, CONFIG); /* Access config */ gp_port_read(port, (char *)catalog, 0x8000); /* Config data is in lines of 16 bytes. Each photo uses two lines. */ icl_read_picture_data(port, dummy_buf, 0x28000); icl_reset (port); /* Photo list starts with line 0040. List terminates when we * the first entry of an even-numbered line is zero. */ for (i=0; i< (0x8000 - 64) && catalog[i+64] ; i+=32) ; priv->nb_entries = i>>5; if (i) { catalog_tmp = realloc(catalog, i); if (catalog_tmp) priv->catalog = catalog_tmp; else priv->catalog = catalog; } else { free(catalog); priv->catalog = NULL; /* We just have freed catalog_tmp */ } icl_reset (port); priv->data_offset = -1; return GP_OK; } int icl_get_start (CameraPrivateLibrary *priv, int entry) { int start = 0x4b100 * entry; return start; } int icl_get_size (CameraPrivateLibrary *priv, int entry) { return 0x4b100; } int icl_get_width_height (CameraPrivateLibrary *priv, int entry, int *w, int *h) { *w = 640; *h = 480; return GP_OK; } int icl_rewind (GPPort *port, CameraPrivateLibrary *priv) { static unsigned char dummy_buf[0x30000]; GP_DEBUG("REWIND cam's data pointer"); /* One has to read the catalog to rewind the data stream... * I don't know if it's by design. * There ought to be something better to do... :-/ */ icl_access_reg(port, CONFIG); /* Access model */ icl_read_picture_data(port, dummy_buf, 0x30000); icl_reset (port); icl_access_reg(port, DATA); /* Access photo data */ priv->data_offset = icl_get_start (priv, 0); return GP_OK; } int icl_reset (GPPort *port) { icl_access_reg(port, CLEAR); /* Release current register */ return GP_OK; } int icl_read_picture_data (GPPort *port, unsigned char *data, int size ) { int remainder = size % 0x8000; int offset = 0; while ((offset + 0x8000) <= size) { gp_port_read (port, (char *)data + offset, 0x8000); offset += 0x8000; } if (remainder) gp_port_read (port, (char *)data + offset, remainder); return GP_OK; } libgphoto2-2.5.9/camlibs/iclick/ChangeLog0000644000175000001440000000056512561423351015147 000000000000002004-11-26 Theodore Kilgore * library.c: Fixed signedness errors * iclick.c: ditto * iclick.h: changed a return type from char* to int 2004-11-29 Marcus Meissner * .cvsignore: ignore stuff * library.c: Fixed C99ism (by Dan Fandrich) 2004-11-26 Theodore Kilgore * *.[c,h]: First check-in. libgphoto2-2.5.9/camlibs/iclick/iclick.h0000644000175000001440000000503112561423351014775 00000000000000/* * iclick.c * * Here, the functions which are needed to get data from the camera. * * Copyright (c) 2004 Theodore Kilgore , * Stephen Pollei . * Camera library support under libgphoto2.1.1 for camera(s) * with chipset from Service & Quality Technologies, Taiwan. * The chip supported by this driver is presumed to be the SQ915. * * This library 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 * Lesser General Public License for more details. * * Licensed under GNU Lesser General Public License, as part of Gphoto * camera support project. For a copy of the license, see the file * COPYING in the main source tree of libgphoto2. */ #ifndef __ICLICK_H__ #define __ICLICK_H__ #include /* A 'picture' is a single standalone picture. * A 'clip' is an autoshoot clip. * A 'frame' is a single a picture out of a clip. * An 'entry' corresponds to a line listed in the camera's configuration data, * part of which is a rudimentary allocation table (the 'catalog'). * An entry, therefore, may be either a picture or a clip. * We reserve the word 'file' for the user fetchable file, * that is, a picture or a frame. */ typedef enum { SQ_MODEL_POCK_CAM, SQ_MODEL_PRECISION, SQ_MODEL_MAGPIX, SQ_MODEL_ICLICK, SQ_MODEL_DEFAULT } SQModel; struct _CameraPrivateLibrary { SQModel model; unsigned char *catalog; int nb_entries; int data_offset; }; /* #define ID 0xf0 */ enum icl_cmnd_type { CONFIG =0x20, DATA =0x30, CLEAR =0xa0, CAPTURE=0x61, }; enum icl_index_type { CONFIG_I =0x300, DATA_I =0x000, CLEAR_I =0x000, CAPTURE_I=0x000, }; int icl_access_reg (GPPort *, enum icl_cmnd_type); #if 0 #define icl_access_reg(iar_port, iar_kind) do { \ SQWRITE (iar_port, 0x0c, iar_kind, iar_kind##_I, NULL, 0); \ } while (0) #endif int icl_reset (GPPort *); int icl_rewind (GPPort *, CameraPrivateLibrary *); int icl_init (GPPort *, CameraPrivateLibrary *); int icl_read_picture_data (GPPort *, unsigned char *data, int size); /* Those functions don't need data transfer with the camera */ int icl_get_start (CameraPrivateLibrary *, int entry); int icl_get_size (CameraPrivateLibrary *, int entry); int icl_get_width_height (CameraPrivateLibrary *, int entry, int *w, int *h); #endif libgphoto2-2.5.9/camlibs/kodak/0000755000175000001440000000000012623156267013312 500000000000000libgphoto2-2.5.9/camlibs/kodak/dc240/0000755000175000001440000000000012623156267014126 500000000000000libgphoto2-2.5.9/camlibs/kodak/dc240/library.c0000644000175000001440000005467112610415617015664 00000000000000/* library.c * * Copyright (C) 2001,2002 Hubert Figuiere * Copyright (C) 2000,2001,2002 Scott Fritzinger * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* Kodak DC 240/280/3400/5000 driver. Maintainer: Hubert Figuiere */ #include "config.h" #include #include #include #include #include #include #include "gphoto2-endian.h" #include "dc240.h" #include "library.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "dc240" /* legacy from dc240.h */ /* #define COMM1 0x00 #define READY 0x10 #define ACK 0xd1 #define PACK1 0xd2 */ /* nice. errors all have upper nibble of 'e' */ /* #define NAK 0xe1 #define COMM0 0xe2 #define PACK0 0xe3 #define CANCL 0xe4 */ /* system codes */ enum { DC240_SC_COMPLETE = 0x0, DC240_SC_ACK = 0xd1, DC240_SC_CORRECT = 0xd2, DC240_SC_FIRST_ERROR = 0xe0, /* not really an real code */ DC240_SC_NAK = 0xe1, DC240_SC_ERROR = 0xe2, DC240_SC_ILLEGAL = 0xe3, DC240_SC_CANCEL = 0xe4, DC240_SC_BUSY = 0xf0 }; static unsigned char *dc240_packet_new (int command_byte); static int dc240_packet_write (Camera *camera, unsigned char *packet, int size, int read_response); static int dc240_packet_read (Camera *camera, unsigned char *packet, int size); static unsigned char * dc240_packet_new (int command_byte) { unsigned char *p = malloc(8); memset (p, 0, 8); p[0] = command_byte; p[7] = 0x1a; return p; } static unsigned char * dc240_packet_new_path (const char *folder, const char *filename) { unsigned char *p; char buf[1024]; int x; unsigned char cs = 0; p = malloc(sizeof(char)*60); if (!p) return NULL; strcpy(buf, folder); if (buf[strlen(buf)-1] != '/') strcat(buf, "/"); if (filename) strcat(buf, filename); else strcat(buf, "*.*"); for (x=0; x 0) { usleep(SLEEP_TIMEOUT * 1000); } /* Return error if too many retries */ x++; if (x > RETRIES) { return (GP_ERROR_TIMEOUT); } if (gp_port_write(camera->port, (char*)packet, size) < GP_OK) { goto write_again; } /* Read in the response from the camera if requested */ while (read_response) { if (gp_port_read(camera->port, in, 1) >= GP_OK) { /* On error, read again */ read_response = 0; } } return GP_OK; } static int dc240_packet_read (Camera *camera, unsigned char *packet, int size) { int retval = gp_port_read(camera->port, (char*)packet, size); /* * If we try to read data about a non-picture file, we get back * a single DC240_SC_ERROR byte. So, if we're trying to read a packet with * size greater than one, but we only get one byte, and it is a * DC240_SC_ERROR error, return failure */ if ((size > 1) && (retval == 1) && (packet[0] == DC240_SC_ERROR)) return GP_ERROR_NOT_SUPPORTED; if (retval < GP_OK) return retval; else return GP_OK; } static int dc240_packet_write_ack (Camera *camera) { int retval; unsigned char c; c = DC240_SC_CORRECT; retval = gp_port_write(camera->port, (char*)&c, 1); if (retval < GP_OK) return retval; return GP_OK; } static int dc240_packet_write_nak (Camera *camera) { int retval; unsigned char c; c = DC240_SC_ILLEGAL; retval = gp_port_write(camera->port, (char*)&c, 1); if (retval < GP_OK) return retval; return GP_OK; } static int dc240_wait_for_completion (Camera *camera) { unsigned char p[8]; int retval = GP_OK; int x=0, done=0; /* Wait for command completion */ while ((x++ < 25)&&(!done)) { retval = dc240_packet_read(camera, p, 1); switch (retval) { case GP_ERROR: GP_DEBUG ("GP_ERROR\n"); return (GP_ERROR); break; case GP_ERROR_TIMEOUT: GP_DEBUG ("GP_ERROR_TIMEOUT\n"); /* in busy state, GP_ERROR_IO_READ can happend */ break; default: done = 1; } } if (x==25) { return (GP_ERROR_TIMEOUT); } return GP_OK; } /* Implement the wait state aka busy case See 2.7.2 in the DC240 Host interface Specification */ static int dc240_wait_for_busy_completion (Camera *camera) { enum { BUSY_RETRIES = 100 }; unsigned char p[8]; int retval = 0; int x=0, done=0; /* Wait for command completion */ while ((x++ < BUSY_RETRIES)&&(!done)) { retval = dc240_packet_read(camera, p, 1); switch (retval) { case GP_ERROR: return retval; break; case GP_ERROR_IO_READ: case GP_ERROR_TIMEOUT: /* in busy state, GP_ERROR_IO_READ can happend */ break; default: if (*p != DC240_SC_BUSY) { done = 1; } } } if (x == BUSY_RETRIES) return (GP_ERROR); return retval; } static int dc240_packet_exchange (Camera *camera, CameraFile *file, unsigned char *cmd_packet, unsigned char *path_packet, int *size, int block_size, GPContext *context) { /* Reads in multi-packet data, appending it to the "file". */ unsigned char check_sum; int i; int num_packets=1, num_bytes, retval = GP_OK; int x=0, retries=0; float t; unsigned char packet[HPBS+2]; unsigned int id; if (*size > 0) { /* Known size to begin with */ t = (float)*size / (float)(block_size); num_packets = (int)t; if (t - (float)num_packets > 0) { num_packets++; } } else { /* Calculate size in 1st packet */ num_packets = 2; } read_data_write_again: /* Write command/path packets */ if (cmd_packet) { retval = dc240_packet_write(camera, cmd_packet, 8, 1); if (retval < GP_OK) return retval; } if (path_packet) { retval = dc240_packet_write(camera, path_packet, 60, 1); if (retval < GP_OK) return retval; } id = gp_context_progress_start (context, num_packets, _("Getting data...")); while (x < num_packets) { read_data_read_again: gp_context_progress_update (context, id, x); /* Read the response/data */ retval = dc240_packet_read(camera, packet, block_size+2); if (retval == GP_ERROR_NOT_SUPPORTED) return retval; if ((retval == GP_ERROR) || (retval == GP_ERROR_TIMEOUT)) { /* ERROR reading response/data */ if (retries++ > RETRIES) { gp_context_progress_stop (context, id); return (GP_ERROR_TIMEOUT); } if (x==0) { /* If first packet didn't come, write command again */ goto read_data_write_again; } else { /* Didn't get data packet. Send NAK for retry */ dc240_packet_write_nak(camera); goto read_data_read_again; } } /* Validate checksum */ check_sum = 0; for (i = 1; i < block_size + 1; i++) { check_sum ^= packet [i]; } if ( block_size > 1 && check_sum != packet [i]) { dc240_packet_write_nak (camera); goto read_data_read_again; } /* Check for error in command/path */ if (packet[0] > DC240_SC_FIRST_ERROR) { gp_context_progress_stop (context, id); return GP_ERROR; } /* Check for end of data */ if (packet[0] == DC240_SC_COMPLETE) { gp_context_progress_stop (context, id); return GP_OK; } /* Write packet was OK */ if (dc240_packet_write_ack(camera) < GP_OK) goto read_data_read_again; /* Set size for folder/file list command from 1st packet */ if (cmd_packet && (cmd_packet[0]==0x99) && (x==0)) { *size = (packet[1] * 256 + packet[2])* 20 + 2; t = (float)*size / (float)(block_size); num_packets = (int)t; if (t - (float)num_packets > 0) num_packets++; } /* Copy in data */ if (x == num_packets) num_bytes = *size - ((num_packets-1) * block_size); else num_bytes = block_size; gp_file_append(file, (char*)&packet[1], num_bytes); /* Increment packet count, reset retries */ x++; retries = 0; } gp_context_progress_stop (context, id); /* Read in command completed */ return dc240_wait_for_completion(camera); } /* See 5.1.37 */ int dc240_open (Camera *camera) { int retval = GP_OK; unsigned char *p = dc240_packet_new(0x96); GP_DEBUG ("dc240_open\n"); retval = dc240_packet_write(camera, p, 8, 1); if (retval != GP_OK) { GP_DEBUG ("dc240_open: write returned %d\n", retval); goto fail; } retval = dc240_wait_for_completion(camera); if (retval < GP_OK) { GP_DEBUG ("dc240_open: wait returned %d\n", retval); goto fail; } fail: free(p); return retval; } int dc240_close (Camera *camera, GPContext *context) { unsigned char *p = dc240_packet_new(0x97); int retval, size = -1; retval = dc240_packet_exchange(camera, NULL, p, NULL, &size, -1, context); free(p); return retval; } static int dc240_get_file_size (Camera *camera, const char *folder, const char *filename, int thumb, GPContext *context) { CameraFile *f; unsigned char *p1, *p2; int size = 256, offset; unsigned long int fsize; const unsigned char *fdata; offset = (thumb? 92:104); gp_file_new(&f); p1 = dc240_packet_new(0x91); p2 = dc240_packet_new_path(folder, filename); if (dc240_packet_exchange(camera, f, p1, p2, &size, 256, context) < 0) size = 0; else { gp_file_get_data_and_size (f, (const char**)&fdata, &fsize); size = (fdata[offset] << 24) | (fdata[offset+1] << 16) | (fdata[offset+2] << 8 ) | (fdata[offset+3]); } gp_file_free(f); free(p1); free(p2); return (size); } int dc240_set_speed (Camera *camera, int speed) { int retval; unsigned char *p = dc240_packet_new(0x41); gp_port_settings settings; GP_DEBUG ("dc240_set_speed\n"); gp_port_get_settings(camera->port, &settings); switch (speed) { case 9600: p[2] = 0x96; p[3] = 0x00; settings.serial.speed = 9600; break; case 19200: p[2] = 0x19; p[3] = 0x20; settings.serial.speed = 19200; break; case 38400: p[2] = 0x38; p[3] = 0x40; settings.serial.speed = 38400; break; case 57600: p[2] = 0x57; p[3] = 0x60; settings.serial.speed = 57600; break; case 0: /* Default */ case 115200: p[2] = 0x11; p[3] = 0x52; settings.serial.speed = 115200; break; /* how well supported is 230.4? case 230400: p[2] = 0x23; p[3] = 0x04; settings.serial.speed = 230400; break; */ default: retval = GP_ERROR; goto fail; } retval = dc240_packet_write(camera, p, 8, 1); if (retval != GP_OK) goto fail; retval = gp_port_set_settings (camera->port, settings); if (retval != GP_OK) goto fail; usleep(300 * 1000); retval = dc240_wait_for_completion(camera); if (retval != GP_OK) goto fail; /* Speed change went OK. */ fail: free (p); return retval; } static struct _type_to_camera { uint16_t status_type; char * name; } type_to_camera [] = { { 4, "DC210" }, { 5, "DC240" }, { 6, "DC280" }, { 7, "DC5000" }, { 8, "DC3400" }, { 0, "Unknown" } /* unknown type. MUST be last */ }; const char *dc240_convert_type_to_camera (uint16_t type) { int i = 0; while (type_to_camera[i].status_type != 0) { if (type_to_camera[i].status_type == type) return type_to_camera[i].name; i++; } /* not found */ return type_to_camera[i].name; } const char *dc240_get_battery_status_str (uint8_t status) { switch (status) { case 0: return _("OK"); break; case 1: return _("Weak"); break; case 2: return _("Empty"); break; default: break; } return _("Invalid"); } const char *dc240_get_ac_status_str (uint8_t status) { switch (status) { case 0: return _("Not used"); break; case 1: return _("In use"); break; default: break; } return _("Invalid"); } const char * dc240_get_memcard_status_str(uint8_t status) { if (status & 0x80) { if ((status & 0x10) == 0) { if (status & 0x08) return _("Card is open"); return _("Card is not open"); } return _("Card is not formatted"); } return _("No card"); } /* Feed manually the stucture from data. */ static int dc240_load_status_data_to_table (const unsigned char *fdata, DC240StatusTable *table) { if (fdata [0] != 0x01) return GP_ERROR; GP_DEBUG ("Camera Type = %d, %s\n", fdata[1], dc240_convert_type_to_camera (fdata[1])); table->cameraType = fdata[1]; table->fwVersInt = fdata[2]; table->fwVersDec = fdata[3]; GP_DEBUG ("Firmware version = %d, %d\n", fdata[2], fdata[3]); table->romVers32Int = fdata[4]; table->romVers32Dec = fdata[5]; table->romVers8Int = fdata[6]; table->romVers8Dec = fdata[7]; table->battStatus = fdata[8]; table->acAdapter = fdata[9]; table->strobeStatus = fdata[10]; table->memCardStatus = fdata[11]; table->videoFormat = fdata[12]; table->quickViewMode = fdata[13]; /* DC280 */ table->numPict = be16atoh(&fdata[14]); strncpy (table->volumeID, (char*)&fdata[16], 11); table->powerSave = fdata[27]; /* DC280 */ strncpy (table->cameraID, (char*)&fdata[28], 32); table->remPictLow = be16atoh(&fdata[60]); table->remPictMed = be16atoh(&fdata[62]); table->remPictHigh = be16atoh(&fdata[64]); table->totalPictTaken = be16atoh(&fdata[66]); table->totalStrobeFired = be16atoh(&fdata[68]); table->langType = fdata[70]; /* DC 280 */ table->beep = fdata[71]; table->fileType = fdata[78]; table->pictSize = fdata[79]; table->imgQuality = fdata[80]; table->ipChainDisable = fdata[81]; /* reserved on DC280. WTF is it ? */ table->imageIncomplete = fdata[82]; table->timerMode = fdata[83]; table->year = be16atoh(&fdata[88]); table->month = fdata[90]; table->day = fdata[91]; table->hour = fdata[92]; table->minute = fdata[93]; table->second = fdata[94]; table->tenmSec = fdata[95]; table->strobeMode = fdata[97]; table->exposureComp = (fdata[98] * 100) + (fdata[99]); table->aeMode = fdata[100]; table->focusMode = fdata[101]; table->afMode = fdata[102]; table->awbMode = fdata[103]; /* table->zoomMag = ????? */ table->exposureMode = fdata[129]; table->sharpControl = fdata[131]; /* table->expTime = */ table->fValue = (fdata[136] * 100) + (fdata[137]); table->imageEffect = fdata[138]; table->dateTimeStamp = fdata[139]; strncpy (table->borderFileName, (char*)&fdata[140], 11); table->exposureLock = fdata[152]; table->isoMode = fdata[153]; /* DC280 */ return GP_OK; } /* Return the camera status table. See 5.1.29 */ int dc240_get_status (Camera *camera, DC240StatusTable *table, GPContext *context) { CameraFile *file; unsigned char *p = dc240_packet_new(0x7F); int retval; const char *fdata; unsigned long int fsize; int size = 256; gp_file_new (&file); GP_DEBUG ("enter dc240_get_status() \n"); retval = dc240_packet_exchange(camera, file, p, NULL, &size, 256, context); if (retval == GP_OK) { gp_file_get_data_and_size (file, &fdata, &fsize); if (fsize != 256) { GP_DEBUG ("wrong status packet size ! Size is %ld", fsize); } if (fdata [0] != 0x01) { /* see 2.6 for why 0x01 */ GP_DEBUG ("not a status table. Is %d", fdata [0]); } dc240_load_status_data_to_table ((uint8_t *)fdata, table); } gp_file_free(file); free (p); return (retval); } int dc240_get_directory_list (Camera *camera, CameraList *list, const char *folder, unsigned char attrib, GPContext *context) { CameraFile *file; int x, y=0, z, size=256; char buf[64]; unsigned char *p1 = dc240_packet_new(0x99); unsigned char *p2 = dc240_packet_new_path(folder, NULL); const char *fdata; unsigned long int fsize; int ret; int num_of_entries = 0; /* number of entries in the listing */ int total_size = 0; /* total useful size of the listing */ gp_file_new(&file); ret = dc240_packet_exchange(camera, file, p1, p2, &size, 256, context); if (ret < 0) { gp_file_free (file); return ret; } free(p1); free(p2); /* Don't expect to have a fully useful buffer. */ gp_file_get_data_and_size (file, &fdata, &fsize); /* numbers in DC 240 are Big-Endian. */ /* Conversion below should be endian neutral. */ num_of_entries = be16atoh(&fdata [0]) + 1; total_size = 2 + (num_of_entries * 20); GP_DEBUG ("number of file entries : %d, size = %ld", num_of_entries, fsize); for (x = 2; x < total_size; x += 20) { if ((fdata[x] != '.') && (attrib == (unsigned char)fdata[x+11])) { /* Files have attrib 0x00, Folders have attrib 0x10 */ if (attrib == 0x00) { strncpy(buf, &fdata[x], 8); /* Copy over filename */ buf[8] = 0; /* NULL terminate */ strcat(buf, "."); /* Append dot */ strcat(buf, &fdata[x+8]); /* Append extension */ GP_DEBUG ("found file: %s", buf); } else { strncpy(buf, &fdata[x], 8); /* Copy over folder name */ z=0; while ((buf[z] != 0x20)&&(z<8)) /* Chop trailing spaces */ z++; buf[z] = 0; /* NULL terminate */ GP_DEBUG ("found folder: %s", buf); } gp_list_append(list, buf, NULL); y++; } } gp_file_free(file); return (GP_OK); } int dc240_file_action (Camera *camera, int action, CameraFile *file, const char *folder, const char *filename, GPContext *context) { int size=0, thumb=0, retval=GP_OK; unsigned char *cmd_packet, *path_packet; cmd_packet = dc240_packet_new(action); path_packet = dc240_packet_new_path(folder, filename); switch (action) { case DC240_ACTION_PREVIEW: cmd_packet[4] = 0x02; thumb = 1; /* no break on purpose */ case DC240_ACTION_IMAGE: if ((size = dc240_get_file_size(camera, folder, filename, thumb, context)) < 0) { retval = GP_ERROR; break; } retval = dc240_packet_exchange(camera, file, cmd_packet, path_packet, &size, HPBS, context); break; case DC240_ACTION_DELETE: size = -1; retval = dc240_packet_exchange(camera, file, cmd_packet, path_packet, &size, -1, context); break; default: free(cmd_packet); free(path_packet); return (GP_ERROR); } free(cmd_packet); free(path_packet); if (file) gp_file_set_mime_type (file, GP_MIME_JPEG); return (retval); } /* See 5.1.27 in the DC240 Host Spec. Capture a picture on the flash card and retrieve its full name. See also 5.1.19 */ int dc240_capture (Camera *camera, CameraFilePath *path, GPContext *context) { CameraFile *file; int size = 256; int ret = GP_OK; unsigned char *p = dc240_packet_new(0x7C); const char *fdata; unsigned long int fsize; /* Take the picture to Flash memory */ ret = dc240_packet_write(camera, p, 8, 1); free (p); if (ret != GP_OK) { return ret; } gp_context_status (context, "Waiting for completion..."); ret = dc240_wait_for_completion(camera); if (ret != GP_OK) { return ret; } ret = dc240_wait_for_busy_completion(camera); if (ret != GP_OK) { return ret; } /* get the last picture taken location (good firmware developers) */ gp_file_new(&file); p = dc240_packet_new(0x4C); /* 5.1.19 Send last taken image name */ ret = dc240_packet_exchange(camera, file, p, NULL, &size, 256, context); free(p); if (ret != GP_OK) { path->name[0] = 0; path->folder[0] = 0; gp_file_unref (file); return ret; } /* this part assumes that the response is of fixed size */ /* according to the specs, this is the case since only the */ /* numbering changes */ gp_file_get_data_and_size (file, &fdata, &fsize); strncpy (path->folder, fdata, 14); path->folder [14] = 0; path->folder [0] = '/'; path->folder [5] = '/'; strncpy (path->name, &(fdata[15]), 13); path->name[13] = 0; gp_file_unref (file); return GP_OK; } int dc240_packet_set_size (Camera *camera, short int size) { unsigned char *p = dc240_packet_new(0x2A); p[2] = (size >> 8) & 0xFF; p[3] = (size ) & 0xFF; if (dc240_packet_write(camera, p, 8, 1) == GP_ERROR) return (GP_ERROR); if (dc240_wait_for_completion(camera)==GP_ERROR) return (GP_ERROR); free(p); return (GP_OK); } libgphoto2-2.5.9/camlibs/kodak/dc240/library.h0000644000175000001440000001005012610415617015650 00000000000000/* library.h * * Copyright (C) 2001,2002 Hubert Figuiere * Copyright (C) 2000,2001,2002 Scott Fritzinger * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* Kodak DC 240/280/3400/5000 driver. */ #ifndef __DC240_LIBRARY_H__ #define __DC240_LIBRARY_H__ #define DC240_ACTION_PREVIEW (uint8_t)0x93 #define DC240_ACTION_IMAGE (uint8_t)0x9A #define DC240_ACTION_DELETE (uint8_t)0x9D #include "gphoto2-endian.h" const char *dc240_convert_type_to_camera (uint16_t type); const char *dc240_get_battery_status_str (uint8_t status); const char *dc240_get_ac_status_str (uint8_t status); const char *dc240_get_memcard_status_str(uint8_t status); /* Define the status table for DC240 and DC280. */ typedef struct { uint8_t cameraType; /* 1 */ uint8_t fwVersInt; /* 2 */ uint8_t fwVersDec; /* 3 */ uint8_t romVers32Int; /* 4 */ uint8_t romVers32Dec; /* 5 */ uint8_t romVers8Int; /* 6 */ uint8_t romVers8Dec; /* 7 */ uint8_t battStatus; /* 8 */ uint8_t acAdapter; /* 9 */ uint8_t strobeStatus; /* 10 */ uint8_t memCardStatus; /* 11 */ uint8_t videoFormat; /* 12 */ uint8_t quickViewMode; /* 13 DC280 */ uint16_t numPict; /* 14-15 BigEndian */ char volumeID[11]; /* 16-26 */ uint8_t powerSave; /* 27 DC280 */ char cameraID[32]; /* 28-59 */ uint16_t remPictLow; /* 60-61 BE */ uint16_t remPictMed; /* 62-63 BE */ uint16_t remPictHigh; /* 64-65 BE */ uint16_t totalPictTaken; /* 66-67 BE */ uint16_t totalStrobeFired; /* 68-69 BE */ uint8_t langType; /* 70 DC280 */ uint8_t beep; /* 71 */ uint8_t fileType; /* 78 */ uint8_t pictSize; /* 79 */ uint8_t imgQuality; /* 80 */ uint8_t ipChainDisable; /* 81 */ /* ????? what does that mean reserved on DC280 */ uint8_t imageIncomplete; /* 82 */ uint8_t timerMode; /* 83 */ uint16_t year; /* 88-89 BE */ uint8_t month; /* 90 */ uint8_t day; /* 91 */ uint8_t hour; /* 92 */ uint8_t minute; /* 93 */ uint8_t second; /* 94 */ uint8_t tenmSec; /* 95 */ uint8_t strobeMode; /* 97 */ uint16_t exposureComp; /* 98-99 BE see note */ uint8_t aeMode; /* 100 */ uint8_t focusMode; /* 101 */ uint8_t afMode; /* 102 */ uint8_t awbMode; /* 103 */ uint32_t zoomMag; /* 104-107 BE see doc */ uint8_t exposureMode; /* 129 */ uint8_t sharpControl; /* 131 */ uint32_t expTime; /* 132-135 BE */ uint16_t fValue; /* 136-137 BE */ uint8_t imageEffect; /* 138 */ uint8_t dateTimeStamp; /* 139 */ char borderFileName [11]; /* 140-151 */ uint8_t exposureLock; /* 152 */ uint8_t isoMode; /* 153 DC280 */ } DC240StatusTable; int dc240_open (Camera *camera); int dc240_close (Camera *camera, GPContext *context); int dc240_set_speed (Camera *camera, int speed); int dc240_get_status (Camera *camera, DC240StatusTable *table, GPContext *context); int dc240_get_directory_list (Camera *camera, CameraList *list, const char *folder, unsigned char attrib, GPContext *context); int dc240_file_action (Camera *camera, int action, CameraFile *file, const char *folder, const char *filename, GPContext *context); int dc240_capture (Camera *camera, CameraFilePath *path, GPContext *context); int dc240_packet_set_size (Camera *camera, short int size); #endif /*__DC240_LIBRARY_H__*/ libgphoto2-2.5.9/camlibs/kodak/dc240/Makefile-files0000644000175000001440000000050512561423351016576 00000000000000EXTRA_LTLIBRARIES += kodak_dc240.la EXTRA_DIST += kodak/dc240/ChangeLog kodak_dc240_la_SOURCES = \ kodak/dc240/dc240.c kodak/dc240/dc240.h \ kodak/dc240/library.c kodak/dc240/library.h kodak_dc240_la_LDFLAGS = $(camlib_ldflags) kodak_dc240_la_DEPENDENCIES = $(camlib_dependencies) kodak_dc240_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/kodak/dc240/ChangeLog0000644000175000001440000000422512610415510015604 000000000000002004-06-16 Hubert Figuiere * dc240.h (TIMEOUT): fix bug 920532 http://www.gphoto.org/bugs/?id=920532 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 2002-08-23 Hubert Figuiere * library.c: use GP_MIME_JPEG constant instead of a string literal. 2002-03-21 Marcus Meissner * library.c: Fixed 2 assignments to signed chars (was using values > 127) Do gp_context_progress_stop at the right places (reported by Andrea Suatoni). 2002-02-21 Hubert Figuiere * library.c: removed COMM0 and other strange code and replaced them with the new DC240_SC_* codes. (dc240_load_status_data_to_table): fixed a signedess issue 2002-02-21 Peter Fales * library.c (dc240_packet_read): handle COMM0 error packet (dc240_packet_exchange): handle a GP_ERROR_NOT_SUPPORTED returned by dc240_packet_read Fix bug #499404 2002-01-19 Lutz Müller * library.c (dc240_capture): free (file) -> gp_file_unref (file) 2002-01-15 Lutz Müller * library.[c,h]: * dc240.c: gp_camera_status -> gp_context_status 2001-12-26 Hubert Figuiere * library.c (dc240_set_speed): fixed a memory leak in case of error, fixed spurious warning caused by API change. * dc240.c (camera_abilities): memset to 0 the ability struct. See bug 496471. (camera_summary): implemented memory card status * library.[ch]: use _byteorder.h inside the driver. Better error codes. 2001-12-21 Lutz Müller * dc240.c: (camera_init): Kill some warnings. (camera_capture): Tell the filesystem about the new file. 2001-12-20 Hubert Figuiere * library.c (dc240_load_status_data_to_table, dc240_get_status): changed fdata from char * to unsigned char * 2001-12-19 Hubert Figuiere * library.h: * library.c: * dc240.c (camera_summary): Implemented summary. 2001-12-06 Hubert Figuiere * library.c: Definitive fix for bug 438155. libgphoto2-2.5.9/camlibs/kodak/dc240/dc240.c0000644000175000001440000002122012610415617015014 00000000000000/* dc240.c * * Copyright (C) 2001,2002 Hubert Figuiere * Copyright (C) 2000,2001,2002 Scott Fritzinger * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* Kodak DC 240/280/3400/5000 driver. Maintainer: Hubert Figuiere */ #include "config.h" #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #include "dc240.h" #include "library.h" int camera_id (CameraText *id) { strcpy(id->text, "kodak-dc240"); return (GP_OK); } static const struct camera_to_usb { char *name; unsigned short idVendor; unsigned short idProduct; } camera_to_usb[] = { { "Kodak:DC240", 0x040A, 0x0120 }, { "Kodak:DC280", 0x040A, 0x0130 }, { "Kodak:DC3400", 0x040A, 0x0132 }, { "Kodak:DC5000", 0x040A, 0x0131 }, { NULL, 0, 0 } }; /* Abilities are based upon what we can do with a DC240. Later cameras have a superset of the DC240 feature and are not currently supported. */ int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; int i; for (i = 0; camera_to_usb[i].name; i++) { memset (&a, 0, sizeof (a)); strcpy(a.model, camera_to_usb[i].name); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL | GP_PORT_USB; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 57600; a.speed[4] = 115200; a.speed[5] = 0; a.usb_vendor = camera_to_usb[i].idVendor; a.usb_product = camera_to_usb[i].idProduct; a.operations = GP_OPERATION_CAPTURE_IMAGE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; gp_abilities_list_append(list, a); } return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { dc240_close (camera, context); return (GP_OK); } static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; return dc240_get_directory_list(camera, list, folder, 0x10, context); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; return dc240_get_directory_list(camera, list, folder, 0x00, context); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; switch (type) { case GP_FILE_TYPE_NORMAL: case GP_FILE_TYPE_RAW: return dc240_file_action (camera, DC240_ACTION_IMAGE, file, folder, filename, context); case GP_FILE_TYPE_PREVIEW: return dc240_file_action (camera, DC240_ACTION_PREVIEW, file, folder, (char*) filename, context); default: return GP_ERROR_NOT_SUPPORTED; } } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; return (dc240_file_action (camera, DC240_ACTION_DELETE, NULL, folder, filename, context)); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { int result; if (type != GP_CAPTURE_IMAGE) return (GP_ERROR_NOT_SUPPORTED); /* Capture the image */ result = dc240_capture (camera, path, context); if (result < 0) return (result); /* Tell the filesystem about it */ result = gp_filesystem_append (camera->fs, path->folder, path->name, context); if (result < 0) return (result); return (GP_OK); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { char buf [32 * 1024]; char temp [1024]; int retval; DC240StatusTable table; retval = dc240_get_status (camera, &table, context); if (retval == GP_OK) { sprintf (buf, _("Model: Kodak %s\n"), dc240_convert_type_to_camera(table.cameraType)); sprintf (temp, _("Firmware version: %d.%02d\n"), table.fwVersInt, table.fwVersDec); strcat (buf, temp); sprintf (temp, _("Battery status: %s, AC Adapter: %s\n"), dc240_get_battery_status_str(table.battStatus), dc240_get_ac_status_str(table.acAdapter)); strcat (buf, temp); sprintf (temp, _("Number of pictures: %d\n"), table.numPict); strcat (buf, temp); sprintf (temp, _("Space remaining: High: %d, Medium: %d, Low: %d\n"), table.remPictHigh, table.remPictMed, table.remPictLow); strcat (buf, temp); sprintf (temp, _("Memory card status (%d): %s\n"), table.memCardStatus, dc240_get_memcard_status_str(table.memCardStatus)); strcat (buf, temp); sprintf (temp, _("Total pictures captured: %d, Flashes fired: %d\n"), table.totalPictTaken, table.totalStrobeFired); strcat (buf, temp); strcpy(summary->text, buf); } return retval; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2.")); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func }; int camera_init (Camera *camera, GPContext *context) { int ret, selected_speed = 0; GPPortSettings settings; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->capture = camera_capture; camera->functions->summary = camera_summary; camera->functions->about = camera_about; /* Set up the CameraFilesystem */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); ret = gp_port_get_settings (camera->port, &settings); if (ret < 0) return (ret); switch (camera->port->type) { case GP_PORT_SERIAL: /* Remember the selected speed */ selected_speed = settings.serial.speed; settings.serial.speed = 9600; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; break; case GP_PORT_USB: settings.usb.inep = 0x82; settings.usb.outep = 0x01; settings.usb.config = 1; settings.usb.interface = 0; settings.usb.altsetting = 0; break; default: return (GP_ERROR_UNKNOWN_PORT); } ret = gp_port_set_settings (camera->port, settings); if (ret < 0) return (ret); ret = gp_port_set_timeout (camera->port, TIMEOUT); if (ret < 0) return (ret); if (camera->port->type == GP_PORT_SERIAL) { char buf[8]; /* Reset the camera to 9600 */ gp_port_send_break(camera->port, 1); /* Used to have a 1500 msec pause here to give * the camera time to reset - but, since * the serial port sometimes returns a garbage * character or two after the break, we do * a couple of TIMEOUT (750 msec) pauses here * force the delay as well as flush the port */ gp_port_read(camera->port, buf, 8); gp_port_read(camera->port, buf, 8); ret = dc240_set_speed (camera, selected_speed); if (ret < 0) return (ret); } /* Open the CF card */ ret = dc240_open (camera); if (ret < 0) return (ret); ret = dc240_packet_set_size (camera, HPBS+2); if (ret < 0) return (ret); return (GP_OK); } libgphoto2-2.5.9/camlibs/kodak/dc240/dc240.h0000644000175000001440000000203112610415617015020 00000000000000/* dc240.h * * Copyright (C) 2001,2002 Hubert Figuiere * Copyright (C) 2000,2001,2002 Scott Fritzinger * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define TIMEOUT 2000 /* 2000 seems to be better than 750 for big CF cards */ #define SLEEP_TIMEOUT 50 #define RETRIES 8 #define HPBS 1024*1 libgphoto2-2.5.9/camlibs/kodak/Makefile-files0000644000175000001440000000011012561423351015752 00000000000000# SUBDIRS = dc120 dc210 dc240 dc3200 ez200 EXTRA_DIST += kodak/CAMERAS libgphoto2-2.5.9/camlibs/kodak/CAMERAS0000644000175000001440000000102612561423351014217 00000000000000This file describe which driver must be used for a Kodak camera. digita DC-220, DC-260, DC-265, DC-290 kodak/dc240 DC-240, DC-280, DC-3400, DC-5000 kodak/dc120 DC-120 kodak/dc210 DC-200 DC-210 DC-215 kodak/dc3200 DC-3200 ptp [*] DC-4800, DX-3215, DX-3500, DX-3600, DX-3700, DX-3900 none DC-3800 [**] dc20 [***] DC-20, DC-25 [*] PTP is a new standardized protocol, implemented by the ptp2 driver. [**] DC-3800 can't be connected to a computer. Use CompactFlash reader instead. [***] dc20 no longer exists in gphoto2. libgphoto2-2.5.9/camlibs/kodak/ez200/0000755000175000001440000000000012623156267014152 500000000000000libgphoto2-2.5.9/camlibs/kodak/ez200/Makefile-files0000644000175000001440000000046612561423351016630 00000000000000EXTRA_DIST += kodak/ez200/Protocol.txt kodak/ez200/ez200-lsusb.txt kodak/ez200/ChangeLog EXTRA_LTLIBRARIES += kodak_ez200.la kodak_ez200_la_SOURCES = kodak/ez200/ez200.c kodak_ez200_la_LDFLAGS = $(camlib_ldflags) kodak_ez200_la_DEPENDENCIES = $(camlib_dependencies) kodak_ez200_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/kodak/ez200/Protocol.txt0000644000175000001440000000133512561423351016426 00000000000000--------------------------------------------------------- Request | Meaning | Reply ----------------+---------------+------------------------ 0 | | c0 00 00 00 51 81 01 00 -- - - - - - - -+ - - - - - - - + - - - - - - - - - - - - 5 | ping | c0 05 00 00 01 00 01 00 -- - - - - - - -+ - - - - - - - + - - - - - - - - - - - - 6 | wait | c0 06 00 00 00 00 01 00 -- - - - - - - -+ - - - - - - - + - - - - - - - - - - - - 8 | ask pic NN | c1 08 NN 00 01 00 03 00 -- - - - - - - -+ - - - - - - - + - - - - - - - - - - - - 9 | erase | c1 09 00 00 01 00 03 00 -- - - - - - - -+ - - - - - - - + - - - - - - - - - - - - b | get jpg Header| c1 0b 03 00 03 00 6f 02 -- - - - - - - -+ - - - - - - - + - - - - - - - - - - - - libgphoto2-2.5.9/camlibs/kodak/ez200/ChangeLog0000644000175000001440000000031212561423351015630 000000000000002007-06-04 Marcus Meissner * ez200.c, ez200.h, library.c: Collapsed the driver into 1 file, ez200.c * ez200.c: Cleaned up, tightened code. * ez200.c: Added delete-all. libgphoto2-2.5.9/camlibs/kodak/ez200/ez200.c0000644000175000001440000002121712610415536015072 00000000000000/* ez200.c * * Copyright (C) 2004 Bucas Jean-Francois * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #define PING 0x05 #define STATUS 0x06 #define PICTURE 0x08 #define ERASE 0x09 #define PICTURE_HEAD 0x0b #define ACTIVE 0xe0 #define JPG_HEADER_SIZE 0x24D /* 589 */ #define HEADER_SIZE 0x26F #define DATA_HEADER_SIZE 0x200 typedef unsigned char Info; typedef enum { MODEL_MINI } Model; #define GP_MODULE "ez200" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define WRITE gp_port_usb_msg_write #define READ gp_port_usb_msg_read static int ez200_wait_status_ok(GPPort *port) { char c = 0; do READ(port, STATUS, 0, 0, &c, 1); while (c != 0); /* Wait */ return GP_OK; } /* enter photo mode */ static int ez200_init (GPPort *port, Model *model, Info *info) { char c = 0; GP_DEBUG("Running ez200_init"); WRITE(port, ACTIVE, 0, 1, NULL, 0); /* index = 1; */ ez200_wait_status_ok(port); /* get number of pictures */ READ(port, PICTURE, 0, 0, &c, 1); memcpy (info, &c, 1); GP_DEBUG("number of pics : %i", c); return GP_OK; } /* quit photo mode */ static int ez200_exit (GPPort *port) { WRITE(port, ACTIVE, 0, 0, NULL, 0); /* index = 0; */ ez200_wait_status_ok(port); return GP_OK; } #define ez200_get_num_pics(info) info[0] static int ez200_get_picture_size (GPPort *port, int n) { unsigned char c[4]; unsigned int size = 0; memset (c,0,sizeof(c)); GP_DEBUG("Running ez200_get_picture_size"); READ(port, PICTURE, n, 1, (char *)c, 3); size = (int)c[0] + (int)c[1]*0x100 + (int)c[2]*0x10000; GP_DEBUG(" size of picture %i is 0x%x = %i byte(s)", n, size, size); if ( (size >= 0xfffff ) ) { return GP_ERROR; } return size; } static int ez200_read_data (GPPort *port, char *data, int size) { int MAX_BULK = 0x1000; /* Read Data by blocks */ while(size > 0) { int len = (size>MAX_BULK)?MAX_BULK:size; gp_port_read (port, data, len); data += len; size -= len; } return 1; } static int ez200_read_picture_data (GPPort *port, char *data, int size, int n) { char c[4]; memset(c,0,sizeof(c)); /* ask picture n transfert */ READ(port, PICTURE, n, 1, c, 3); ez200_read_data (port, data, size); return GP_OK; } /* after read_picture_data, we can retrieve the header by : */ static int ez200_read_picture_header(GPPort *port, char *data) { /* lecture de l'entete :: read header of picture */ READ(port, PICTURE_HEAD, 3, 3, data, HEADER_SIZE); return GP_OK; } struct _CameraPrivateLibrary { Model model; Info info[2]; }; static const struct { char *name; CameraDriverStatus status; unsigned short idVendor; unsigned short idProduct; } models[] = { {"Kodak EZ200", GP_DRIVER_STATUS_PRODUCTION, 0x040a, 0x0300}, {NULL,0,0} }; int camera_id (CameraText *id) { strcpy (id->text, "Kodak EZ200 camera"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].name); a.status = models[i].status; a.port = GP_PORT_USB; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; a.operations = GP_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; a.file_operations = GP_FILE_OPERATION_NONE; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { sprintf (summary->text,_("Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" ), ez200_get_num_pics(camera->pl->info)); return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Kodak EZ200 driver\nBucas Jean-Francois \n")); return GP_OK; } /* * doesnt work, just creates a empty file. static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { unsigned char c[3]; int size; char *data; WRITE(camera->port,0,0x8003,0,NULL,0); WRITE(camera->port,5,0x0000,0,NULL,0); return GP_OK; } */ static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; WRITE (camera->port, ERASE, 0, 1, NULL, 0); ez200_wait_status_ok(camera->port); return GP_OK; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; return gp_list_populate (list, "ez200_pic%03i.jpg", ez200_get_num_pics (camera->pl->info)); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int n, len; char *data, *data_start; n = gp_filesystem_number(camera->fs, "/", filename, context); if (nport, n); GP_DEBUG("len = %i", len); if (len < GP_OK) return len; data = (char *)malloc(len + HEADER_SIZE + 1); if (!data) return GP_ERROR_NO_MEMORY; data_start = data + (HEADER_SIZE - DATA_HEADER_SIZE); GP_DEBUG("data - data_start : %p %p : %lx",data, data_start, (long) (data_start - data)); ez200_read_picture_data (camera->port, data_start, len, n); ez200_read_picture_header (camera->port, data); switch (type) { case GP_FILE_TYPE_PREVIEW: case GP_FILE_TYPE_NORMAL: gp_file_set_mime_type (file, GP_MIME_JPEG); gp_file_set_data_and_size (file, data, len + HEADER_SIZE + 1); break; case GP_FILE_TYPE_RAW: gp_file_set_data_and_size (file, data, len); gp_file_set_mime_type (file, GP_MIME_RAW); gp_file_adjust_name_for_mime_type(file); break; default: return (GP_ERROR_NOT_SUPPORTED); } return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("Kodak EZ200 camera_exit"); ez200_exit (camera->port); if (camera->pl) { free (camera->pl); camera->pl = NULL; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .delete_all_func = delete_all_func, }; int camera_init(Camera *camera, GPContext *context) { GPPortSettings settings; int ret = 0; /* First, set up all the function pointers */ camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->exit = camera_exit; /*camera->functions->capture = camera_capture;*/ GP_DEBUG ("Initializing Kodak EZ200"); ret = gp_port_get_settings(camera->port, &settings); if (ret < 0) return ret; switch (camera->port->type) { case GP_PORT_USB: settings.usb.config = 0; settings.usb.altsetting = 0; settings.usb.interface = 1; settings.usb.inep = 0x82; settings.usb.outep = 0x03; break; default: return ( GP_ERROR ); } ret = gp_port_set_settings(camera->port,settings); if (ret < 0) return ret; GP_DEBUG("interface = %i", settings.usb.interface); GP_DEBUG("inep = %x", settings.usb.inep); GP_DEBUG("outep = %x", settings.usb.outep); /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); /* Connect to the camera */ ez200_init (camera->port, &camera->pl->model, camera->pl->info); GP_DEBUG("fin_camera_init"); return GP_OK; } libgphoto2-2.5.9/camlibs/kodak/ez200/ez200-lsusb.txt0000644000175000001440000002007412561423351016614 00000000000000------------------------------------------------- Bus 002 Device 002: ID 040a:0300 Kodak Co. EZ-200 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 255 Vendor Specific Subclass bDeviceProtocol 255 Vendor Specific Protocol bMaxPacketSize0 8 idVendor 0x040a Kodak Co. idProduct 0x0300 EZ-200 bcdDevice 1.00 iManufacturer 1 EASTMAN KODAK COMPANY iProduct 2 Kodak EZ200 DIGITAL CAMERA iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 167 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0080 1x 128 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 2 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0180 1x 384 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 3 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 4 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0280 1x 640 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 5 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0300 1x 768 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 6 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0380 1x 896 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 7 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x03ff 1x 1023 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 8 Device Status: 0x0001 Self Powered ---------------------------------------------------------------------------- libgphoto2-2.5.9/camlibs/kodak/dc210/0000755000175000001440000000000012623156267014123 500000000000000libgphoto2-2.5.9/camlibs/kodak/dc210/dc210.h0000644000175000001440000002110112610415617015011 00000000000000/* dc210.h * * Copyright (C) 2002 Michel Koltan * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef _DC210_H_ #define _DC210_H_ typedef enum { DC210_TOGGLE_OFF = 0, DC210_TOGGLE_ON = 1 } dc210_toggle_type; typedef enum { DC210_FULL_PICTURE = 0, DC210_CFA_THUMB = 1, DC210_RGB_THUMB = 2 } dc210_picture_type; typedef enum { DC210_FILE_TYPE_JPEG = 3, DC210_FILE_TYPE_FPX = 4 } dc210_file_type_type; typedef enum { DC210_FLASH_AUTO = 0, DC210_FLASH_FORCE = 1, DC210_FLASH_NONE = 2 } dc210_flash_type; typedef enum { DC210_FILE_640 = 0, DC210_FILE_1152 = 1 } dc210_resolution_type; typedef enum { DC210_LOW_COMPRESSION = 1, DC210_MEDIUM_COMPRESSION = 2, DC210_HIGH_COMPRESSION = 3 } dc210_compression_type; typedef enum { DC210_ZOOM_58 = 0, DC210_ZOOM_51 = 1, DC210_ZOOM_41 = 2, DC210_ZOOM_34 = 3, DC210_ZOOM_29 = 4, DC210_ZOOM_MACRO = 37 } dc210_zoom_type; typedef struct { unsigned char open; int program; int space; } dc210_card_status; typedef struct { char camera_type_id; char firmwareMajor; char firmwareMinor; char battery; char acstatus; long int time; dc210_zoom_type zoom; char flash_charged; dc210_compression_type compression_type; signed char exp_compensation; dc210_flash_type flash; char preflash; dc210_resolution_type resolution; dc210_file_type_type file_type; int totalPicturesTaken; int totalFlashesFired; int numPicturesInCamera; dc210_card_status card_status; int remainingLow; int remainingMedium; int remainingHigh; int card_space; char album_name[12]; } dc210_status; typedef struct { char camera_type; dc210_file_type_type file_type; dc210_resolution_type resolution; dc210_compression_type compression; int picture_number; int picture_size; int preview_size; int picture_time; char flash_used; dc210_flash_type flash; char preflash; dc210_zoom_type zoom; char f_number; char battery; int exposure_time; char image_name[13]; } dc210_picture_info ; #undef DEBUG #define TIMEOUT 500 #define RETRIES 5 #define GP_MODULE "kodak-dc210" #ifdef DEBUG #define DC210_DEBUG(msg, params...) fprintf(stderr, msg, ##params) #else #define DC210_DEBUG GP_DEBUG #endif /* I really don't get it, why I have a shift of seven hours in each direction to get/set the camara time correctly. I'm afraid it's dependent on the timezone (and an outdated clib)*/ /* #define CAMERA_EPOC 852094800*/ #define CAMERA_GET_EPOC 852094800 - 25200 #define CAMERA_SET_EPOC 852094800 + 25200 /* Packet sizes */ #define DC210_CMD_DATA_SIZE 58 #define DC210_STATUS_SIZE 256 #define DC210_PICINFO_SIZE 256 #define DC210_CARD_BLOCK_SIZE 512 #define DC210_DIRLIST_SIZE 256 #define DC210_DOWNLOAD_BLOCKSIZE 1024 /* Commands */ #define DC210_SET_RESOLUTION 0x36 /* implemented */ #define DC210_SET_FILE_TYPE 0x37 /* implemented */ #define DC210_SET_SPEED 0x41 /* implemented */ #define DC210_GET_ALBUM_FILENAMES 0x4A /* returns information on all files in packets of size 256 */ #define DC210_GET_PICTURE 0x64 /* implemented */ #define DC210_GET_PICINFO 0x65 /* implemented */ #define DC210_GET_THUMB 0x66 /* implemented */ #define DC210_SET_QUALITY 0x71 /* implemented */ #define DC210_SET_FLASH 0x72 /* implemented */ #define DC210_SET_FOCUS 0x73 /* not acknowledged */ #define DC210_SET_DELAY 0x74 /* implemented, but effect unknown */ #define DC210_SET_TIME 0x75 /* implemented, but probably with timezone bug */ #define DC210_SET_ZOOM 0x78 /* implemented */ #define DC210_DELETE_PICTURE 0x7B /* implemented */ #define DC210_TAKE_PICTURE 0x7C /* implemented */ #define DC210_CHECK_BATTERY 0x7E /* implemented */ #define DC210_GET_STATUS 0x7F /* implemented */ #define DC210_SET_EXPOSURE 0x80 /* implemented */ #define DC210_RESET 0x8A /* working, but not yet implemented */ #define DC210_FIRMWARE_MODE_SET 0x8D /* working, but not yet implemented */ /* Filename commands */ #define DC210_CARD_GET_PICINFO 0x91 /* implemented */ #define DC210_CARD_GET_SUMMARY 0x92 /* not implemented */ #define DC210_CARD_READ_THUMB 0x93 /* implemented */ #define DC210_CARD_FORMAT 0x95 /* implemented */ #define DC210_OPEN_CARD 0x96 /* implemented */ #define DC210_CLOSE_CARD 0x97 /* implemented */ #define DC210_CARD_STATUS 0x98 /* is working, returns packet of size 16 */ #define DC210_CARD_GET_DIRECTORY 0x99 /* not implemented */ #define DC210_CARD_READ_FILE 0x9A /* implemented */ #define DC210_CARD_UNKNOWN_COMMAND1 0x9C /* not implemented */ #define DC210_CARD_FILE_DEL 0x9D /* implemented */ #define DC210_CARD_UNKNOWN_COMMAND2 0x9E /* not implemented */ /* Responses */ #define DC210_COMMAND_COMPLETE 0x00 #define DC210_PACKET_FOLLOWING 0x01 #define DC210_CMD_PACKET_FOLLOWING 0x80 #define DC210_CAMERA_READY 0x08 #define DC210_COMMAND_ACK 0xD1 #define DC210_CORRECT_PACKET 0xD2 #define DC210_COMMAND_NAK 0xE1 #define DC210_EXECUTION_ERROR 0xE2 #define DC210_ILLEGAL_PACKET 0xE3 #define DC210_CANCEL 0xE4 #define DC210_BUSY 0xF0 /* initialization */ int dc210_init_port (Camera *camera); /* set procedures */ int dc210_set_compression (Camera * camera, dc210_compression_type compression); int dc210_set_flash (Camera * camera, dc210_flash_type flash, char preflash); int dc210_set_zoom (Camera * camera, dc210_zoom_type zoom); int dc210_set_file_type (Camera * camera, dc210_file_type_type file_type); int dc210_set_resolution (Camera * camera, dc210_resolution_type res); int dc210_set_speed (Camera *camera, int speed); int dc210_set_delay (Camera * camera); int dc210_set_exp_compensation (Camera * camera, signed int compensation); /* information */ int dc210_get_status (Camera *camera, dc210_status *status); int dc210_get_picture_info (Camera *camera, dc210_picture_info *picinfo, unsigned int picno); int dc210_get_picture_info_by_name (Camera *camera, dc210_picture_info *picinfo, const char * filename); int dc210_get_filenames (Camera *camera, CameraList *list, GPContext *context); int dc210_get_picture_number (Camera *camera, const char * filename); /* picture actions */ int dc210_take_picture (Camera * camera, GPContext *context); int dc210_capture (Camera *camera, CameraFilePath *path, GPContext *context); int dc210_download_last_picture (Camera * camera, CameraFile *file, dc210_picture_type type, GPContext *context); int dc210_download_picture_by_name (Camera * camera, CameraFile *file, const char *filename, dc210_picture_type type, GPContext *context); int dc210_delete_picture (Camera * camera, unsigned int picno); int dc210_delete_last_picture (Camera * camera ); int dc210_delete_picture_by_name (Camera * camera, const char * filename ); /* other actions */ int dc210_open_card (Camera * camera); /* callbacks */ int dc210_system_time_callback (Camera * camera, CameraWidget * widget, GPContext * context); int dc210_format_callback(Camera * camera, CameraWidget * widget, GPContext * context); #ifdef DEBUG int dc210_debug_callback(Camera * camera, CameraWidget * widget, GPContext * context); #endif #endif /* _DC210_H_ */ libgphoto2-2.5.9/camlibs/kodak/dc210/library.c0000644000175000001440000011163412610415617015652 00000000000000/* library.c * * Copyright (C) 2002 Michel Koltan * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include "dc210.h" #include "library.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif static int dc210_cmd_error = 0; static const char ppmheader[] = "P6\n96 72\n255\n"; #ifdef DEBUG static int firststatus = 1; static char oldstatus[DC210_STATUS_SIZE]; #endif /*************************************************************************** Global in- and output procedures ****************************************************************************/ static void cfa2ppm (CameraFile * file) { /* this is a very quick and dirty hack to convert cfa into ppm */ unsigned char buf[THUMBHEIGHT][THUMBWIDTH]; unsigned char rgb[THUMBHEIGHT][THUMBWIDTH][3]; unsigned char val; unsigned int addval; const char * data; unsigned long datasize; int i, x, y; /* get data */ DC210_DEBUG("Converting CFA to PPM\n"); gp_file_get_data_and_size(file, &data, &datasize); /* split 8 bit values into to 4 bit values and blow up again to 8 bit*/ i = 0; for(y = 0; y < THUMBHEIGHT; y++ ) for(x = 0; x < THUMBWIDTH; x+=2 ){ val = (unsigned char) data[i] >> 4; buf[y][x] = (val << 4) | val; val = (unsigned char) data[i++] & 0x0F; buf[y][x+1] = (val << 4) | val; }; /* fill in the exact values */ for( y = 0; y < THUMBHEIGHT; y += 2 ) for( x = 0; x < THUMBWIDTH; x += 2 ) { rgb[y][x][GREEN] = buf[y][x]; rgb[y][x+1][GREEN] = buf[y][x]; rgb[y+1][x][GREEN] = buf[y+1][x+1]; rgb[y+1][x+1][GREEN] = buf[y+1][x+1]; rgb[y][x][RED] = buf[y][x+1]; rgb[y][x+1][RED] = buf[y][x+1]; rgb[y+1][x][RED] = buf[y][x+1]; rgb[y+1][x+1][RED] = buf[y][x+1]; rgb[y][x][BLUE] = buf[y+1][x]; rgb[y][x+1][BLUE] = buf[y+1][x]; rgb[y+1][x][BLUE] = buf[y+1][x]; rgb[y+1][x+1][BLUE] = buf[y+1][x]; }; /* fill in the interpolated values, don't care about borders */ for ( y = 1; y < THUMBHEIGHT - 2; y+= 2) for ( x = 0; x < THUMBWIDTH - 2; x +=2){ /* 2 missing green values */ addval = rgb[y][x][GREEN] + rgb[y][x+2][GREEN] + rgb[y-1][x+1][GREEN] + rgb[y+1][x+1][GREEN]; rgb[y][x+1][GREEN] = addval / 4; addval = rgb[y+1][x-1][GREEN] + rgb[y+1][x+1][GREEN] + rgb[y][x][GREEN] + rgb[y+2][x][GREEN]; rgb[y+1][x][GREEN] = addval / 4; /* 3 missing red values */ addval = rgb[y-1][x][RED] + rgb[y+1][x][RED]; rgb[y][x][RED] = addval / 2; addval = rgb[y-1][x][RED] + rgb[y-1][x+2][RED] + rgb[y+1][x][RED] + rgb[y+1][x+2][RED]; rgb[y][x+1][RED] = addval / 4; addval = rgb[y+1][x][RED] + rgb[y+1][x+2][RED]; rgb[y+1][x+1][RED] = addval / 2; /* 3 missing blue values */ addval = rgb[y][x-1][BLUE] + rgb[y][x+1][BLUE]; rgb[y][x][BLUE] = addval / 2; addval = rgb[y][x-1][BLUE] + rgb[y][x+1][BLUE] + rgb[y+2][x-1][BLUE] + rgb[y+2][x+1][BLUE]; rgb[y+1][x][BLUE] = addval / 4; addval = rgb[y][x+1][BLUE] + rgb[y+2][x+1][BLUE]; rgb[y+1][x+1][BLUE] = addval / 2; }; gp_file_clean(file); gp_file_append(file, ppmheader, sizeof(ppmheader) - 1); gp_file_append(file, (char *) rgb, THUMBWIDTH * THUMBHEIGHT * 3); gp_file_set_mime_type(file, GP_MIME_PPM); }; /* Utility procedures for command execution */ static void dc210_cmd_init (char * cmd, unsigned char command_byte) { /* utility procedure to initalize a command string */ memset (cmd, 0, 8); cmd[0] = command_byte; cmd[7] = 0x1a; }; static void dc210_cmd_packet_init (char * cmd_packet, const char * filename) { /* prepare command packet */ memset (cmd_packet, 0x00, DC210_CMD_DATA_SIZE); memset (cmd_packet + 48, 0xFF, 8); strcpy(cmd_packet, "\\PCCARD\\DCIMAGES\\"); strcpy(cmd_packet + 17, filename); DC210_DEBUG("Complete filename is %s\n", cmd_packet); }; static int dc210_write_single_char (Camera *camera, unsigned char response) { /* utility procedure to write a single character */ int i; for (i=0; i< RETRIES; i++){ if (gp_port_write(camera->port, (char *)&response, 1) >= 0) return (GP_OK); }; return GP_ERROR; }; static int dc210_read_single_char (Camera *camera, unsigned char * response) { /* utility procedure to read a single character */ int i; signed char error; for (i = 0; i < RETRIES; i++){ error = gp_port_read(camera->port, (char *)response, 1); if (error < 0){ if (error == GP_ERROR_TIMEOUT) continue; else{ DC210_DEBUG("Real bad error reading single character. Errornumber: %d\n", error); return GP_ERROR; }; }; return GP_OK; }; return GP_ERROR_TIMEOUT; }; /* Command execution */ static int dc210_execute_command (Camera *camera, char *cmd) { /* This procedure sends a command to the camera and waits for acknowledgement. Calling procedures have to check the returncode; if the command succeeded there are three possible follow ups: - Read a DC210_COMMAND_COMPLETE in case of simple commands - Send an additional command package in case of sophisticated commands - Read data from the camera But all this depends on the command and should not be mixed in this procedure. */ int i,k ; unsigned char response; signed char error; dc210_cmd_error = DC210_CMD_OKAY; for (i = 0; i < RETRIES; i++){ /* write command */ if (gp_port_write(camera->port, cmd, 8) < 0){ DC210_DEBUG("Could not write to port.\n"); dc210_cmd_error = DC210_WRITE_ERROR; continue; /* try again */ }; for (k = 0; k < RETRIES; k++){ error = gp_port_read(camera->port, (char *)&response, 1); if (error != 1){ if (error == GP_ERROR_TIMEOUT){ dc210_cmd_error = DC210_TIMEOUT_ERROR; continue; /* wait a little bit longer */ } else{ DC210_DEBUG("Real bad error reading answer. Errornumber: %d\n", error); dc210_cmd_error = DC210_READ_ERROR; return error; }; }; switch (response){ case DC210_COMMAND_ACK: DC210_DEBUG("Command 0x%02X acknowledged.\n", (unsigned char) cmd[0]); return GP_OK; break; /* that's fine, just what we expected */ case DC210_COMMAND_NAK: DC210_DEBUG("Sorry, but the camera seems not to understand the command 0x%02X\n", (unsigned char) cmd[0]); dc210_cmd_error = DC210_NAK_ERROR; break; /* anyway, send the command again */ default: DC210_DEBUG("Strange. Unexpected response for command 0x%02X: 0x%02X\n", (unsigned char) cmd[0], response); dc210_cmd_error = DC210_GARBAGE_ERROR; return GP_ERROR; break; }; break; }; }; /* command does definitely not work */ DC210_DEBUG("Command definitely didn't work.\n"); return GP_ERROR; }; /* appropriate actions to a command */ static int dc210_write_command_packet (Camera * camera, char * data) { unsigned char checksum; int i, error; unsigned char answer; /* calculating checksum */ checksum = 0; for (i = 0; i < DC210_CMD_DATA_SIZE; i ++){ checksum ^= data[i]; }; for (i = 0; i < RETRIES; i++){ /* write the startbyte */ dc210_write_single_char(camera, DC210_CMD_PACKET_FOLLOWING); /* write packet */ gp_port_write(camera->port, data, DC210_CMD_DATA_SIZE); /* write checksum */ dc210_write_single_char(camera, checksum); /* read answer */ error = gp_port_read(camera->port, (char *)&answer, 1); if (error < 0) return GP_ERROR; if (answer == DC210_CORRECT_PACKET) return GP_OK; if (answer != DC210_ILLEGAL_PACKET) { DC210_DEBUG("Strange answer to command packet: 0x%02X.\n", answer); return GP_ERROR; }; }; DC210_DEBUG("Could not send command packet.\n"); return GP_ERROR; }; static int dc210_wait_for_response (Camera *camera, int expect_busy, GPContext *context) { /* Waits for a command to finish. Expects either a timeout, a DC210_BUSY, a DC210_COMMAND_COMPLETE or a DC210_PACKET_FOLLOWING; all other answers are considered errors */ unsigned char response; int error = 0; int counter = 0; int progress_id = 0; if (context) progress_id = gp_context_progress_start (context, expect_busy, _("Waiting...")); while (1){ error = dc210_read_single_char(camera, &response); if (error < 0){ if (context) gp_context_progress_stop (context, progress_id); return error; }; switch (response){ case DC210_BUSY: /* wait a little bit longer */ if (context && counter <= expect_busy) gp_context_progress_update (context, progress_id, counter++); break; case DC210_COMMAND_COMPLETE: case DC210_PACKET_FOLLOWING: if (context) gp_context_progress_stop (context, progress_id); return response; break; default: if (context) gp_context_progress_stop (context, progress_id); DC210_DEBUG("Command terminated with errorcode 0x%02X.\n", response); return GP_ERROR; }; }; }; static int dc210_read_single_block (Camera *camera, unsigned char * b, int blocksize) { int i, k, error; char cs_read, cs_computed; for (i = 0; i < RETRIES; i++){ if (dc210_wait_for_response(camera, 0, NULL) != DC210_PACKET_FOLLOWING) return GP_ERROR; error = 1; for (k = 0; k < RETRIES; k++){ if (gp_port_read(camera->port, (char *)b, blocksize) < 0){ continue; }; error = 0; break; }; if (error) return GP_ERROR; if (dc210_read_single_char(camera, (unsigned char *)&cs_read) < 0) return GP_ERROR; cs_computed = 0; for (k = 0 ; k < blocksize; k++) cs_computed ^= b[k]; if (cs_computed == cs_read){ dc210_write_single_char(camera, DC210_CORRECT_PACKET); return GP_OK; }; dc210_write_single_char(camera, DC210_ILLEGAL_PACKET); }; return GP_ERROR; }; static int dc210_read_to_file (Camera *camera, CameraFile * f, int blocksize, long int expectsize, GPContext *context) { int packets, k, l, fatal_error, packet_following; unsigned int progress_id = 0; unsigned char cs_read, cs_computed; unsigned char * b; int blocks = expectsize / blocksize; int remaining = expectsize % blocksize; if (NULL == (b = malloc(blocksize))) return GP_ERROR; if (remaining) blocks++; if (context) progress_id = gp_context_progress_start (context, blocks, _("Getting data...")); fatal_error = 0; packets = 0; packet_following = dc210_wait_for_response(camera, 0, NULL); while (DC210_PACKET_FOLLOWING == packet_following){ fatal_error = 1; for (k = 0; k < RETRIES; k++){ /* read packet */ if (gp_port_read(camera->port, (char *)b, blocksize) < 0){ dc210_write_single_char(camera, DC210_ILLEGAL_PACKET); packet_following = dc210_wait_for_response(camera, 0, NULL); continue; }; /* read checksum */ if (dc210_read_single_char(camera, &cs_read) == GP_ERROR){ free(b); return GP_ERROR; }; /* test checksum */ cs_computed = 0; for (l = 0 ; l < blocksize; l++) cs_computed ^= b[l]; if (cs_computed != cs_read){ dc210_write_single_char(camera, DC210_ILLEGAL_PACKET); packet_following = dc210_wait_for_response(camera, 0, NULL); continue; }; /* append to file */ if (packets == blocks - 1 && remaining) gp_file_append(f, (char *)b, remaining); else gp_file_append(f, (char *)b, blocksize); /* request next packet */ dc210_write_single_char(camera, DC210_CORRECT_PACKET); packet_following = dc210_wait_for_response(camera, 0, NULL); fatal_error = 0; if (context) gp_context_progress_update (context, progress_id, packets); packets++; break; }; if (fatal_error) break; }; if (packet_following < 0) fatal_error = 1; if (context) gp_context_progress_stop (context, progress_id); free(b); if (fatal_error) return GP_ERROR; return GP_OK; }; /*************************************************************************** Working procedures ****************************************************************************/ /***** Set procedures *****/ static int dc210_set_option (Camera * camera, char command, unsigned int value, int valuesize){ char cmd[8]; dc210_cmd_init(cmd, command); switch(valuesize){ case 0: break; case 1: cmd[2] = value & 0xFF; break; case 2: cmd[3] = value & 0xFF; cmd[2] = (value >> 8) & 0xFF; break; case 4: cmd[5] = value & 0xFF; cmd[4] = (value >> 8) & 0xFF; cmd[3] = (value >> 16) & 0xFF; cmd[2] = (value >> 24) & 0xFF; break; default: return GP_ERROR; }; if (dc210_execute_command(camera, cmd) == GP_ERROR) return GP_ERROR; if (dc210_wait_for_response(camera, 0, NULL) != DC210_COMMAND_COMPLETE) return GP_ERROR; return GP_OK; }; int dc210_set_compression (Camera * camera, dc210_compression_type compression){ return dc210_set_option(camera, DC210_SET_QUALITY, compression, 1); }; int dc210_set_flash (Camera * camera, dc210_flash_type flash, char preflash){ if (flash != DC210_FLASH_NONE && preflash){ return dc210_set_option(camera, DC210_SET_FLASH, flash + 3, 1); } else return dc210_set_option(camera, DC210_SET_FLASH, flash, 1); }; int dc210_set_zoom (Camera * camera, dc210_zoom_type zoom){ return dc210_set_option(camera, DC210_SET_ZOOM, zoom, 1); }; int dc210_set_file_type (Camera * camera, dc210_file_type_type file_type){ return dc210_set_option(camera, DC210_SET_FILE_TYPE, file_type, 1); }; int dc210_set_resolution (Camera * camera, dc210_resolution_type res){ return dc210_set_option(camera, DC210_SET_RESOLUTION, res, 1); }; int dc210_set_delay (Camera * camera){ /* This function works, but I do no have the slightest idea, what the effect is / should be. There is *no* delay, when you execute this function before capturing. */ return dc210_set_option(camera, DC210_SET_DELAY, 10, 4); }; int dc210_set_exp_compensation (Camera * camera, signed int compensation){ unsigned char param = abs(compensation); if (compensation < 0) param |= 0x80; return dc210_set_option(camera, DC210_SET_EXPOSURE, param, 1); }; int dc210_system_time_callback (Camera * camera, CameraWidget * widget, GPContext * context){ return dc210_set_option(camera, DC210_SET_TIME, (time(NULL) - CAMERA_SET_EPOC) << 1, 4); }; static int dc210_format_card (Camera * camera, char * album_name, GPContext * context){ char data[DC210_CMD_DATA_SIZE]; char cmd[8]; char * subst; unsigned char answer[16]; unsigned char checksum_read, checksum; int i; memset (data, 0, DC210_CMD_DATA_SIZE); /* Make the album name acceptable - we need at least 8 characters which are not blank and there are no blanks allowed before the last character. */ if (album_name != NULL && strlen(album_name) > 0){ strncpy(data, album_name, 11); /* substitute blanks in the first 8 characters*/ while (NULL != (subst = strchr(data, ' '))) *subst = '_'; if (strlen(data) < 8) strncat(data, "________", 8 - strlen(data)); }; DC210_DEBUG("Album name is '%s'\n", data); dc210_cmd_init(cmd, DC210_CARD_FORMAT); dc210_execute_command(camera, cmd); dc210_write_command_packet(camera, data); if (dc210_wait_for_response(camera, 3, context) != DC210_PACKET_FOLLOWING) return GP_ERROR; gp_port_read(camera->port, (char *)answer, 16); gp_port_read(camera->port, (char *)&checksum_read, 1); checksum = 0; for (i = 0; i < 16; i++) checksum ^= answer[i]; if (checksum_read != checksum) return GP_ERROR; DC210_DEBUG("Flash card formated.\n"); if (dc210_write_single_char(camera, DC210_CORRECT_PACKET) == GP_ERROR) return GP_ERROR; if (dc210_wait_for_response(camera, 0, NULL) != DC210_COMMAND_COMPLETE) return GP_ERROR; gp_filesystem_reset(camera->fs); return GP_OK; }; static int dc210_get_card_status (Camera * camera, dc210_card_status * card_status){ char cmd[8]; unsigned char answer[16]; unsigned char checksum_read, checksum; int i; card_status->open = 0; card_status->program = 0; card_status->space = 0; dc210_cmd_init(cmd, DC210_CARD_STATUS); dc210_execute_command(camera, cmd); if (dc210_wait_for_response(camera, 0, NULL) != DC210_PACKET_FOLLOWING) return GP_ERROR; gp_port_read(camera->port, (char *)answer, 16); gp_port_read(camera->port, (char *)&checksum_read, 1); checksum = 0; for (i = 0; i < 16; i++) checksum ^= answer[i]; if (checksum_read != checksum) DC210_DEBUG("Error reading card status.\n"); else DC210_DEBUG("Card status correctly read.\n"); if (answer[0] & 0x08) card_status->open = 1; DC210_DEBUG("Card status open is %d\n", card_status->open); card_status->program = answer[1] * 0x100 + answer[2]; /* set the space in kb */ card_status->space = (answer[3] * 0x1000000 + answer[4] * 0x10000 + answer[5] * 0x100 + answer[6]) / 1024; if (dc210_write_single_char(camera, DC210_CORRECT_PACKET) == GP_ERROR) return GP_ERROR; if (dc210_wait_for_response(camera, 0, NULL) != DC210_COMMAND_COMPLETE) return GP_ERROR; return GP_OK; }; int dc210_format_callback(Camera * camera, CameraWidget * widget, GPContext * context){ CameraWidget * window; char * album_name; gp_widget_get_root(widget, &window); gp_widget_get_child_by_label (window, _("Album name"), &widget); gp_widget_get_value (widget, &album_name); return dc210_format_card(camera, album_name, context); }; static int dc210_check_battery (Camera *camera){ char cmd[8]; dc210_cmd_init(cmd, DC210_CHECK_BATTERY); if (dc210_execute_command(camera, cmd) == GP_ERROR) return GP_ERROR; if (dc210_wait_for_response(camera, 0, NULL) != DC210_COMMAND_COMPLETE) return GP_ERROR; return GP_OK; }; int dc210_init_port (Camera *camera){ /* sending a break command resets the speed to 9600 */ int camera_speeds[] = {115200, 19200, 38400, 57600}; int i, desired_speed; GPPortSettings settings; gp_port_get_settings (camera->port, &settings); gp_port_set_timeout (camera->port, TIMEOUT); settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; desired_speed = settings.serial.speed; if (! desired_speed) desired_speed = 115200; DC210_DEBUG("Desired port speed is %d.\n", desired_speed); /* only set the speed if nothing was specified on the command line */ if (! settings.serial.speed) settings.serial.speed = 9600; gp_port_set_settings (camera->port, settings); /* ok, run a dummy command; if the camera was off, this will activate it and set the speed to 9600; but the command will return an error; It makes no sense to shorten the timout time, because the camera may need up to 10 seconds (information of the manual) to startup */ if (dc210_check_battery(camera) == GP_OK) return GP_OK; /* Fine, the last command didn't work, but we are now sure, the camera is working, if it is connected and has enough power. This is the time to send a break to reset the speed to 9600 */ gp_camera_set_port_speed(camera, 9600); gp_port_send_break(camera->port, 300); usleep(300 * 1000); /* Excellent. Now our dummy command should work */ if (dc210_check_battery(camera) == GP_OK){ return dc210_set_speed(camera, desired_speed); }; /* My, my, this is not nice. We change the timeout and try other speeds as last resort */ gp_port_set_timeout (camera->port, 100); for (i = 0; i < 4; i++){ settings.serial.speed = camera_speeds[i]; gp_port_set_settings (camera->port, settings); if (dc210_check_battery(camera) == GP_OK){ gp_port_set_timeout (camera->port, TIMEOUT); return dc210_set_speed(camera, desired_speed); }; DC210_DEBUG("What a pity. Speed %d does not work.\n", camera_speeds[i]); }; /* reset the timeout */ gp_port_set_timeout (camera->port, TIMEOUT); return GP_ERROR; }; int dc210_set_speed (Camera *camera, int speed) { unsigned char cmd[8]; GPPortSettings settings; dc210_cmd_init((char*)cmd, DC210_SET_SPEED); switch (speed) { case 9600: cmd[2] = 0x96; cmd[3] = 0x00; break; case 19200: cmd[2] = 0x19; cmd[3] = 0x20; break; case 38400: cmd[2] = 0x38; cmd[3] = 0x40; break; case 57600: cmd[2] = 0x57; cmd[3] = 0x60; break; case 115200: cmd[2] = 0x11; cmd[3] = 0x52; break; default: return (GP_ERROR); }; if (dc210_execute_command(camera, (char*)cmd) == GP_ERROR) return GP_ERROR; gp_port_get_settings (camera->port, &settings); settings.serial.speed = speed; gp_port_set_settings (camera->port, settings); DC210_DEBUG("Port speed set to %d.\n", speed); return GP_OK; }; /****** Picture actions *****/ int dc210_take_picture (Camera * camera, GPContext * context) { char cmd[8]; dc210_cmd_init(cmd, DC210_TAKE_PICTURE); if (dc210_execute_command(camera, cmd) == GP_ERROR) return GP_ERROR; switch (dc210_wait_for_response(camera, 5, context)){ /* we allow a timeout error here and check the result via status */ case DC210_COMMAND_COMPLETE: case GP_ERROR_TIMEOUT: return GP_OK; break; default: return GP_ERROR; break; }; return GP_ERROR; }; int dc210_delete_picture (Camera * camera, unsigned int picno) { char cmd[8]; unsigned int pic_offset = picno - 1; dc210_cmd_init(cmd, DC210_DELETE_PICTURE); cmd[3] = pic_offset & 0xFF; cmd[2] = (pic_offset >> 8) & 0xFF; if (dc210_execute_command(camera, cmd) == GP_ERROR) return GP_ERROR; if (dc210_wait_for_response(camera, 0, NULL) != DC210_COMMAND_COMPLETE) return GP_ERROR; return GP_OK; }; int dc210_delete_last_picture (Camera * camera ) { dc210_status status; if (dc210_get_status(camera, &status) == GP_ERROR) return GP_ERROR; if (0 == status.numPicturesInCamera) return GP_ERROR; return dc210_delete_picture(camera, status.numPicturesInCamera); }; int dc210_delete_picture_by_name (Camera * camera, const char * filename ) { char cmd[8]; char cmd_packet[DC210_CMD_DATA_SIZE]; dc210_cmd_init(cmd, DC210_CARD_FILE_DEL); dc210_cmd_packet_init(cmd_packet, filename); if (dc210_execute_command(camera, cmd) == GP_ERROR) return GP_ERROR; if (dc210_write_command_packet(camera, cmd_packet) == GP_ERROR) return GP_ERROR; if (dc210_wait_for_response(camera, 0, NULL) != DC210_COMMAND_COMPLETE) return GP_ERROR; return GP_OK; }; int dc210_download_last_picture (Camera * camera, CameraFile *file, dc210_picture_type type, GPContext *context) { dc210_status status; dc210_picture_info picinfo; if (dc210_get_status(camera, &status) == GP_ERROR) return GP_ERROR; if (status.numPicturesInCamera == 0) return GP_ERROR; if (dc210_get_picture_info(camera, &picinfo, status.numPicturesInCamera) == GP_ERROR) return GP_ERROR; if (dc210_get_picture_info(camera, &picinfo, status.numPicturesInCamera) == GP_ERROR) return GP_ERROR; return dc210_download_picture_by_name(camera, file, picinfo.image_name, type, context); }; int dc210_open_card (Camera * camera) { char cmd[8]; dc210_card_status card_status; /* check if card is already opened */ dc210_get_card_status(camera, &card_status); if (card_status.open) return GP_OK; dc210_cmd_init(cmd, DC210_OPEN_CARD); if (dc210_execute_command(camera, cmd) == GP_ERROR) return GP_ERROR; if (dc210_wait_for_response(camera, 0, NULL) != DC210_COMMAND_COMPLETE) return GP_ERROR; return GP_OK; }; #if 0 /* This function is not used by anybody */ static int dc210_close_card (Camera * camera) { char cmd[8]; dc210_cmd_init(cmd, DC210_CLOSE_CARD); if (dc210_execute_command(camera, cmd) == GP_ERROR) return GP_ERROR; if (dc210_wait_for_response(camera, 0, NULL) != DC210_COMMAND_COMPLETE) return GP_ERROR; return GP_OK; }; #endif int dc210_download_picture_by_name (Camera * camera, CameraFile *file, const char *filename, dc210_picture_type type, GPContext *context) { char cmd[8]; char cmd_packet[DC210_CMD_DATA_SIZE]; dc210_picture_info picinfo; /* prepare command */ if (type == DC210_FULL_PICTURE){ /* we need the file size for the progress bar */ if (dc210_get_picture_info_by_name(camera, &picinfo, filename) == GP_ERROR) return GP_ERROR; DC210_DEBUG("Picture size is %d\n", picinfo.picture_size); dc210_cmd_init(cmd, DC210_CARD_READ_FILE); } else dc210_cmd_init(cmd, DC210_CARD_READ_THUMB); if (type == DC210_RGB_THUMB) cmd[4] = 1; dc210_cmd_packet_init(cmd_packet, filename); if (dc210_execute_command(camera, cmd) == GP_ERROR) return GP_ERROR; if (dc210_write_command_packet(camera, cmd_packet) == GP_ERROR) return GP_ERROR; switch (type){ case DC210_FULL_PICTURE: if (picinfo.file_type == DC210_FILE_TYPE_JPEG) gp_file_set_mime_type(file, GP_MIME_JPEG); if (dc210_read_to_file(camera, file, DC210_CARD_BLOCK_SIZE, picinfo.picture_size, context) == GP_ERROR) return GP_ERROR; break; case DC210_CFA_THUMB: /* this thumb type is much faster to download, because it has just a 6th of the size of rgb data */ if (dc210_read_to_file(camera, file, DC210_DOWNLOAD_BLOCKSIZE, 48 * 72, NULL) == GP_ERROR) return GP_ERROR; /* convert cfa data to rgb: */ cfa2ppm(file); break; break; case DC210_RGB_THUMB: /* if you really need nice thumbs, you can use this, but I don't think it's worth the 6 times longer download time */ gp_file_set_mime_type(file, GP_MIME_PPM); gp_file_append(file, ppmheader, sizeof(ppmheader) - 1); if (dc210_read_to_file(camera, file, DC210_DOWNLOAD_BLOCKSIZE, 96 * 72 * 3, NULL) == GP_ERROR) return GP_ERROR; break; }; return GP_OK; }; int dc210_capture (Camera *camera, CameraFilePath *path, GPContext *context) { dc210_status status; dc210_picture_info picinfo; int pictures_in_camera; /* dc210_take_picture no longer returns an error on timeout; check the working of the command via status */ if (dc210_get_status(camera, &status) == GP_ERROR) return GP_ERROR; pictures_in_camera = status.numPicturesInCamera; if (dc210_take_picture(camera, context) == GP_ERROR) return GP_ERROR; if (dc210_get_status(camera, &status) == GP_ERROR) return GP_ERROR; if (pictures_in_camera == status.numPicturesInCamera) return GP_ERROR; if (dc210_get_picture_info(camera, &picinfo, status.numPicturesInCamera) == GP_ERROR) return GP_ERROR; strcpy(path->folder, "/"); strcpy(path->name, picinfo.image_name); return GP_OK; }; /***** Retrieve information *****/ int dc210_get_picture_number (Camera *camera, const char * filename){ /* This function is terrible slow if you have a lot of pictures in the camera; therefor it should not be used */ dc210_status status; dc210_picture_info picinfo; int i; if (dc210_get_status(camera, &status) == GP_ERROR) return -1; for (i = 1; i <= status.numPicturesInCamera; i++){ if (dc210_get_picture_info(camera, &picinfo, i) == GP_ERROR) return -1; if (strcmp(picinfo.image_name, filename) == 0){ return i; }; }; return -1; }; int dc210_get_filenames (Camera *camera, CameraList *list, GPContext *context) { char cmd[8]; CameraFile *file; char filename[13]; const char * data; unsigned long datasize; int pictures, i; gp_file_new(&file); dc210_cmd_init(cmd, DC210_GET_ALBUM_FILENAMES); dc210_execute_command(camera, cmd); dc210_read_to_file(camera, file, DC210_DIRLIST_SIZE, 0, NULL); gp_file_get_data_and_size(file, &data, &datasize); pictures = (unsigned char) data[0] * 0x100 + (unsigned char) data[1]; DC210_DEBUG("There are %d pictures in the camera\n", pictures); filename[8] = '.'; filename[12] = '\0'; for (i = 0; i < pictures; i++){ strncpy(filename, data + 2 + i*20, 8); strncpy(filename + 9, data + 10 + i*20, 3); DC210_DEBUG("Adding filename %s to list\n", filename); gp_list_append(list, filename, NULL); }; gp_file_free(file); return GP_OK; }; static void dc210_picinfo_from_block (dc210_picture_info * picinfo, unsigned char * data){ picinfo->camera_type = data[1]; picinfo->file_type = data[2]; picinfo->resolution = data[3]; picinfo->compression = data[4]; picinfo->picture_number = data[6] * 0x100 + data[7]; picinfo->picture_size = data[8] * 0x1000000 + data[9] * 0x10000 + data[10] * 0x100 + data[11]; picinfo->preview_size = 96 * 72 * 3 + sizeof(ppmheader); picinfo->picture_time = CAMERA_GET_EPOC + ((data[12] * 0x1000000 + data[13] * 0x10000 + data[14] * 0x100 + data[15]) >> 1); picinfo->flash_used = data[16]; picinfo->flash = data[17]; picinfo->preflash = (data[17] > 2); if (picinfo->preflash) picinfo->flash -= 3; picinfo->zoom = data[21]; picinfo->f_number = data[26]; picinfo->battery = data[27]; picinfo->exposure_time = data[28] * 0x1000000 + data[29] * 0x10000 + data[30] * 0x100 + data[31]; strncpy(picinfo->image_name, (char *)&data[32], 12); picinfo->image_name[12] = 0; } int dc210_get_picture_info (Camera *camera, dc210_picture_info *picinfo, unsigned int picno) { char cmd[8]; unsigned char data[DC210_PICINFO_SIZE]; unsigned int pic_offset = picno - 1; dc210_cmd_init(cmd, DC210_GET_PICINFO); cmd[3] = pic_offset & 0xFF; cmd[2] = (pic_offset >> 8) & 0xFF; if (dc210_execute_command(camera, cmd) == GP_ERROR) return GP_ERROR; if (dc210_read_single_block(camera, data, DC210_PICINFO_SIZE) == GP_ERROR) return GP_ERROR; if (dc210_wait_for_response(camera, 0, NULL) != DC210_COMMAND_COMPLETE) return GP_ERROR; dc210_picinfo_from_block(picinfo, data); return GP_OK; }; int dc210_get_picture_info_by_name (Camera *camera, dc210_picture_info *picinfo, const char * filename) { char cmd[8]; char cmd_packet[DC210_CMD_DATA_SIZE]; unsigned char data[DC210_CARD_BLOCK_SIZE]; dc210_cmd_init(cmd, DC210_CARD_GET_PICINFO); dc210_cmd_packet_init(cmd_packet, filename); if (dc210_execute_command(camera, cmd) == GP_ERROR) return GP_ERROR; if (dc210_write_command_packet(camera, cmd_packet) == GP_ERROR) return GP_ERROR; if (dc210_read_single_block(camera, data, DC210_CARD_BLOCK_SIZE) == GP_ERROR) return GP_ERROR; if (dc210_wait_for_response(camera, 0, NULL) != DC210_COMMAND_COMPLETE) return GP_ERROR; dc210_picinfo_from_block(picinfo, data); return GP_OK; }; int dc210_get_status (Camera *camera, dc210_status *status) { #ifdef DEBUG int i; #endif char data[DC210_STATUS_SIZE]; char cmd[8]; /* you have to check the battery status explicitely before reading the status table*/ dc210_check_battery(camera); /* check the card */ dc210_get_card_status(camera, &(status->card_status)); dc210_cmd_init(cmd, DC210_GET_STATUS); if (dc210_execute_command(camera, cmd) == GP_ERROR) return GP_ERROR; if (dc210_read_single_block(camera, (unsigned char *)data, DC210_STATUS_SIZE) == GP_ERROR) return GP_ERROR; if (dc210_wait_for_response(camera, 0, NULL) != DC210_COMMAND_COMPLETE) return GP_ERROR; #ifdef DEBUG if (firststatus){ firststatus = 0; } else{ for (i = 0; i < DC210_STATUS_SIZE; i++){ if (oldstatus[i] != data[i] && (i < 12 || i > 15)){ DC210_DEBUG("Statusdata differs at offset %03d (old: 0x%02X, new: 0x%02X)\n", i, (unsigned char) oldstatus[i], (unsigned char) data[i]); }; }; }; memcpy(oldstatus, data, DC210_STATUS_SIZE); #endif status->firmwareMajor = data[2]; status->firmwareMinor = data[3]; status->battery = data[8]; status->acstatus = data[9]; /* seconds since unix epoc */ status->time = CAMERA_GET_EPOC + ((unsigned char) data[12] * 0x1000000 + (unsigned char) data[13] * 0x10000 + (unsigned char) data[14] * 0x100 + (unsigned char) data[15]) / 2; status->zoom = data[16]; status->compression_type = data[19]; status->flash = data[20]; status->exp_compensation = data[21] & 0x7F; if (data[21] & 0x80) status->exp_compensation *= -1; status->preflash = (data[20] > 2); if (status->preflash) status->flash -= 3; status->resolution = data[22]; status->file_type = data[23]; status->totalPicturesTaken = (unsigned char) data[25] * 0x100 + (unsigned char) data[26]; status->totalFlashesFired = (unsigned char) data[27] * 0x100 + (unsigned char) data[28]; status->numPicturesInCamera = (unsigned char) data[56] * 0x100 + (unsigned char) data[57]; status->remainingLow = (unsigned char) data[68] * 0x100 + (unsigned char) data[69]; status->remainingMedium = (unsigned char) data[70] * 0x100 + (unsigned char) data[71]; status->remainingHigh = (unsigned char) data[72] * 0x100 + (unsigned char) data[73]; strncpy(status->album_name, &data[77], 11); status->album_name[11] = 0; return GP_OK; } /* Debugging stuff, not really needed in the driver */ #ifdef DEBUG static int dc210_read_dummy_packet(Camera * camera){ int i; signed char error; unsigned char answer, lastanswer, checksum; checksum = 0; lastanswer = 0; for ( i = 0; i < 2048; i++){ error = gp_port_read(camera->port, &answer, 1); if (error < 0){ DC210_DEBUG("Packet read exhausted. Packet size: %d\n", i-1); if (checksum == lastanswer) DC210_DEBUG("Checksum is okay. Sending okay.\n"); else DC210_DEBUG("Checksum is not okay. Sending correct packet anyway.\n"); answer = DC210_CORRECT_PACKET; gp_port_write(camera->port, &answer, 1); return GP_OK; }; DC210_DEBUG(" Byte %03d: 0x%02X", i, answer); if (answer > 32) DC210_DEBUG(" (%c)", answer); DC210_DEBUG("\n"); checksum ^= lastanswer; lastanswer = answer; }; DC210_DEBUG("Packet too long. Sending cancel.\n"); answer = DC210_CANCEL; gp_port_write(camera->port, &answer, 1); return GP_OK; }; static int dc210_test_command (Camera * camera, unsigned char cmdbyte, unsigned char *databytes){ /* this is a debug command to test the behaviour of certain camera commands */ unsigned char cmd[8]; unsigned char answer; signed char error; int packetcount = 0; char dummy_cmd_packet[DC210_CMD_DATA_SIZE]; memset (dummy_cmd_packet, 0, DC210_CMD_DATA_SIZE); dc210_cmd_init(cmd, cmdbyte); memcpy(cmd + 2, databytes, 4); /* okay, write the command and wait for acknowledge */ gp_port_write(camera->port, cmd, 8); error = gp_port_read(camera->port, &answer, 1); if (error < 0){ DC210_DEBUG("Command 0x%02X produced port read error %d", cmdbyte, error); return GP_OK; }; switch (answer){ case DC210_COMMAND_ACK: DC210_DEBUG("Okay, command 0x%02X acknowledged.\n", cmdbyte); break; case DC210_COMMAND_NAK: DC210_DEBUG("Sorry, command 0x%02X not acknowledged.\n", cmdbyte); return GP_OK; default: DC210_DEBUG("Unexpected response 0x%02X to command 0x%02X.\n", answer, cmdbyte); return GP_OK; }; wait_finish: error = gp_port_read(camera->port, &answer, 1); if (error < 0){ DC210_DEBUG("Command 0x%02X produced port read error %d\n", cmdbyte, error); DC210_DEBUG("Probably the command expects a command package.\n"); DC210_DEBUG("Sending one...\n"); dc210_write_command_packet(camera, dummy_cmd_packet); goto wait_finish; }; switch(answer){ case DC210_COMMAND_COMPLETE: DC210_DEBUG("Okay. Command has been accepted and executed.\n"); return GP_OK; case DC210_EXECUTION_ERROR: DC210_DEBUG("Sorry. An error occurred while executing command.\n"); return GP_OK; case DC210_CORRECT_PACKET: DC210_DEBUG("Okay. Packet successfully received.\n"); goto wait_finish; case DC210_PACKET_FOLLOWING: DC210_DEBUG("My, my, you got more than you bargained for. "); DC210_DEBUG("Awaiting packet...\n"); dc210_read_dummy_packet(camera); DC210_DEBUG("Read %d packets.\n", ++packetcount); goto wait_finish; case DC210_BUSY: DC210_DEBUG("Camera is busy.\n"); goto wait_finish; default: DC210_DEBUG("Unexpected response 0x%02X to command 0x%02X.\n", answer, cmdbyte); return GP_OK; }; }; int dc210_debug_callback(Camera * camera, CameraWidget * widget, GPContext * context){ /*CameraFile *file;*/ CameraWidget * window; char * s_param1, *s_param2, *s_param3; int param1, param2, param3; int value; unsigned char params[4]; dc210_status status; memset(params, 0, 4); gp_widget_get_root(widget, &window); gp_widget_get_child_by_label (window, _("Parameter 1"), &widget); gp_widget_get_value (widget, &s_param1); param1 = atoi(s_param1); gp_widget_get_child_by_label (window, _("Parameter 2"), &widget); gp_widget_get_value (widget, &s_param2); param2 = atoi(s_param2); gp_widget_get_child_by_label (window, _("Parameter 3"), &widget); gp_widget_get_value (widget, &s_param3); param3 = atoi(s_param3); /* Put the stuff you want to test here */ dc210_get_status(camera, &status); dc210_test_command(camera, 0x85, params); dc210_get_status(camera, &status); return GP_OK; }; #endif libgphoto2-2.5.9/camlibs/kodak/dc210/library.h0000644000175000001440000000462312610415617015656 00000000000000/* library.h * * Copyright (C) 2002 Michel Koltan * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef _DC210_LIBRARY_H_ #define _DC210_LIBRARY_H_ #define DC210_CMD_OKAY 0 #define DC210_WRITE_ERROR -1 #define DC210_READ_ERROR -2 #define DC210_TIMEOUT_ERROR -3 #define DC210_NAK_ERROR -4 #define DC210_GARBAGE_ERROR -5 #define THUMBHEIGHT 72 #define THUMBWIDTH 96 #define RED 0 #define GREEN 1 #define BLUE 2 static void cfa2ppm (CameraFile * file); static void dc210_cmd_init (char *cmd, unsigned char command_byte); static void dc210_cmd_packet_init (char * cmd_packet, const char * filename); static int dc210_write_single_char (Camera *camera, unsigned char response); static int dc210_write_command_packet(Camera * camera, char * data); static int dc210_execute_command (Camera *camera, char *cmd); static int dc210_read_single_char (Camera *camera, unsigned char * p); static int dc210_wait_for_response (Camera *camera, int expect_busy, GPContext *context); static int dc210_read_to_file (Camera *camera, CameraFile * f, int blocksize, long int expectsize, GPContext *context); static int dc210_read_single_block (Camera *camera, unsigned char * b, int blocksize); static int dc210_set_option (Camera * camera, char command, unsigned int value, int valuesize); static int dc210_check_battery (Camera *camera); static int dc210_get_card_status (Camera * camera, dc210_card_status * card_status); static void dc210_picinfo_from_block (dc210_picture_info * picinfo, unsigned char * data); #ifdef DEBUG static int dc210_read_dummy_packet(Camera * camera); static int dc210_test_command(Camera * camera, unsigned char cmdbyte, unsigned char *databytes); #endif #endif /* _DC210_LIBRARY_H_ */ libgphoto2-2.5.9/camlibs/kodak/dc210/Makefile-files0000644000175000001440000000052612561423351016576 00000000000000EXTRA_LTLIBRARIES += kodak_dc210.la EXTRA_DIST += kodak/dc210/ChangeLog kodak/dc210/TODO kodak_dc210_la_SOURCES = \ kodak/dc210/dc210.c kodak/dc210/dc210.h \ kodak/dc210/library.c kodak/dc210/library.h kodak_dc210_la_LDFLAGS = $(camlib_ldflags) kodak_dc210_la_DEPENDENCIES = $(camlib_dependencies) kodak_dc210_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/kodak/dc210/TODO0000644000175000001440000000045312557123324014527 00000000000000There are still some minor problems/issues: - Check the epoch problem that occurs when setting/reading the camera or file time - Internationalization - Allow switching the thumbnail type in preferences - Clean up the code and add some more comments - Find the error in reading the battery status libgphoto2-2.5.9/camlibs/kodak/dc210/dc210.c0000644000175000001440000005154412610415617015022 00000000000000/* dc210.c * * Copyright (C) 2002 Michel Koltan * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # ifdef gettext_noop # define _(String) dgettext (PACKAGE, String) # define N_(String) gettext_noop (String) # else # define _(String) (String) # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "dc210.h" static char * exp_comp[] = {"-2.0 EV", "-1.5 EV", "-1.0 EV", "-0.5 EV", "AUTO", "+0.5 EV", "+1.0 EV", "+1.5 EV", "+2.0 EV"}; int camera_id (CameraText *id) { strcpy(id->text, GP_MODULE); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset (&a, 0, sizeof(a)); strcpy(a.model, "Kodak:DC210"); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 57600; a.speed[4] = 115200; a.speed[5] = 0; a.operations = GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CONFIG; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; gp_abilities_list_append(list, a); /* Mark Longridge */ strcpy(a.model, "Kodak:DC215"); gp_abilities_list_append(list, a); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; return dc210_get_filenames(camera, list, context); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; switch (type) { case GP_FILE_TYPE_NORMAL: return dc210_download_picture_by_name(camera, file, filename, DC210_FULL_PICTURE, context); case GP_FILE_TYPE_PREVIEW: return dc210_download_picture_by_name(camera, file, filename, DC210_CFA_THUMB, context); default: return (GP_ERROR_NOT_SUPPORTED); }; return GP_OK; } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; return dc210_delete_picture_by_name(camera, filename); }; static int get_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; dc210_picture_info picinfo; if (dc210_get_picture_info_by_name(camera, &picinfo, file) == GP_ERROR) return GP_ERROR; info->preview.fields = 0; info->preview.fields |= GP_FILE_INFO_TYPE; info->preview.fields |= GP_FILE_INFO_SIZE; info->preview.fields |= GP_FILE_INFO_WIDTH; info->preview.fields |= GP_FILE_INFO_HEIGHT; strcpy(info->preview.type, GP_MIME_PPM); info->preview.width = 96; info->preview.height = 72; info->preview.size = picinfo.preview_size; info->file.fields = 0; info->file.fields |= GP_FILE_INFO_TYPE; info->file.fields |= GP_FILE_INFO_SIZE; info->file.fields |= GP_FILE_INFO_WIDTH; info->file.fields |= GP_FILE_INFO_HEIGHT; info->file.fields |= GP_FILE_INFO_MTIME; info->file.size = picinfo.picture_size; switch(picinfo.file_type){ case DC210_FILE_TYPE_JPEG: strcpy(info->file.type, GP_MIME_JPEG); break; case DC210_FILE_TYPE_FPX: strcpy(info->file.type, GP_MIME_UNKNOWN); break; }; switch(picinfo.resolution){ case DC210_FILE_640: info->file.width = 640; info->file.height = 480; break; case DC210_FILE_1152: info->file.width = 1152; info->file.height = 864; break; }; info->file.mtime = picinfo.picture_time; return GP_OK; } static int camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *section, *widget; CameraAbilities abilities; GPPortSettings settings; int i; char * wvalue; char stringbuffer[12]; dc210_status status; if (dc210_get_status(camera, &status) == GP_ERROR) return GP_ERROR; gp_widget_new (GP_WIDGET_WINDOW, _("Camera Configuration"), window); gp_widget_new (GP_WIDGET_SECTION, _("File"), §ion); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_RADIO, _("File type"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("JPEG")); gp_widget_add_choice (widget, _("FlashPix")); switch (status.file_type){ case DC210_FILE_TYPE_JPEG: gp_widget_set_value (widget, _("JPEG")); break; case DC210_FILE_TYPE_FPX: gp_widget_set_value (widget, _("FlashPix")); break; }; gp_widget_get_value (widget, &wvalue); gp_widget_new (GP_WIDGET_RADIO, _("File resolution"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("640 x 480")); gp_widget_add_choice (widget, _("1152 x 864")); switch (status.resolution){ case DC210_FILE_640: gp_widget_set_value (widget, _("640 x 480")); break; case DC210_FILE_1152: gp_widget_set_value (widget, _("1152 x 864")); break; default: DC210_DEBUG("Undefined value for file resolution.\n"); break; }; gp_widget_get_value (widget, &wvalue); gp_widget_new (GP_WIDGET_MENU, _("File compression"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("Low (best quality)")); gp_widget_add_choice (widget, _("Medium (better quality)")); gp_widget_add_choice (widget, _("High (good quality)")); switch (status.compression_type){ case DC210_LOW_COMPRESSION: gp_widget_set_value (widget, _("Low (best quality)")); break; case DC210_MEDIUM_COMPRESSION: gp_widget_set_value (widget, _("Medium (better quality)")); break; case DC210_HIGH_COMPRESSION: gp_widget_set_value (widget, _("High (good quality)")); break; }; gp_widget_get_value (widget, &wvalue); gp_widget_new (GP_WIDGET_SECTION, _("Capture"), §ion); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_MENU, _("Zoom"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, "58 mm"); /* no need to translate strings with SI units! */ gp_widget_add_choice (widget, "51 mm"); gp_widget_add_choice (widget, "41 mm"); gp_widget_add_choice (widget, "34 mm"); gp_widget_add_choice (widget, "29 mm"); gp_widget_add_choice (widget, _("Macro")); switch (status.zoom){ case DC210_ZOOM_58: gp_widget_set_value (widget, _("58 mm")); break; case DC210_ZOOM_51: gp_widget_set_value (widget, _("51 mm")); break; case DC210_ZOOM_41: gp_widget_set_value (widget, _("41 mm")); break; case DC210_ZOOM_34: gp_widget_set_value (widget, _("34 mm")); break; case DC210_ZOOM_29: gp_widget_set_value (widget, _("29 mm")); break; case DC210_ZOOM_MACRO: gp_widget_set_value (widget, _("Macro")); break; }; gp_widget_get_value (widget, &wvalue); gp_widget_new (GP_WIDGET_MENU, _("Exposure compensation"), &widget); gp_widget_append (section, widget); for (i = 0; i < sizeof(exp_comp)/sizeof(*exp_comp); i++){ gp_widget_add_choice (widget, exp_comp[i]); if (status.exp_compensation + 4 == i) gp_widget_set_value (widget, exp_comp[i]); }; gp_widget_new (GP_WIDGET_RADIO, _("Flash"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("Auto")); gp_widget_add_choice (widget, _("Force")); gp_widget_add_choice (widget, _("None")); switch (status.flash){ case DC210_FLASH_AUTO: gp_widget_set_value (widget, _("Auto")); break; case DC210_FLASH_FORCE: gp_widget_set_value (widget, _("Force")); break; case DC210_FLASH_NONE: gp_widget_set_value (widget, _("None")); break; }; gp_widget_get_value (widget, &wvalue); gp_widget_new (GP_WIDGET_RADIO, _("Red eye flash"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("On")); gp_widget_add_choice (widget, _("Off")); if (status.preflash) gp_widget_set_value (widget, _("On")); else gp_widget_set_value (widget, _("Off")); gp_widget_get_value (widget, &wvalue); gp_widget_new (GP_WIDGET_SECTION, _("Other"), §ion); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_BUTTON, "Set time to system time", &widget); gp_widget_append (section, widget); gp_widget_set_value (widget, dc210_system_time_callback); gp_widget_set_info (widget, _("Set clock in camera")); gp_camera_get_abilities(camera, &abilities); gp_port_get_settings (camera->port, &settings); gp_widget_new (GP_WIDGET_MENU, _("Port speed"), &widget); gp_widget_append (section, widget); for (i = 0; i < sizeof(abilities.speed); i++){ if (abilities.speed[i] == 0) break; snprintf(stringbuffer, 12, "%d", abilities.speed[i]); gp_widget_add_choice (widget, stringbuffer); if (settings.serial.speed == abilities.speed[i]) gp_widget_set_value (widget, stringbuffer); }; gp_widget_new (GP_WIDGET_TEXT, _("Album name"), &widget); gp_widget_append (section, widget); gp_widget_set_value (widget, status.album_name); gp_widget_set_info (widget, _("Name to set on card when formatting.")); gp_widget_new (GP_WIDGET_BUTTON, _("Format compact flash"), &widget); gp_widget_append (section, widget); gp_widget_set_value (widget, dc210_format_callback); gp_widget_set_info (widget, _("Format card and set album name.")); #ifdef DEBUG gp_widget_new (GP_WIDGET_SECTION, _("Debug"), §ion); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_TEXT, "Parameter 1", &widget); gp_widget_append (section, widget); gp_widget_set_value (widget, "0"); gp_widget_new (GP_WIDGET_TEXT, "Parameter 2", &widget); gp_widget_append (section, widget); gp_widget_set_value (widget, "0"); gp_widget_new (GP_WIDGET_TEXT, "Parameter 3", &widget); gp_widget_append (section, widget); gp_widget_set_value (widget, "0"); gp_widget_new (GP_WIDGET_BUTTON, "Execute debug command", &widget); gp_widget_append (section, widget); gp_widget_set_value (widget, dc210_debug_callback); gp_widget_set_info (widget, _("Execute predefined command\nwith parameter values.")); #endif return GP_OK; } static int camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *w, *w2; char *wvalue, *w2value; int i; gp_widget_get_child_by_label (window, _("File type"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (wvalue[0] == 'J') dc210_set_file_type(camera, DC210_FILE_TYPE_JPEG); else dc210_set_file_type(camera, DC210_FILE_TYPE_FPX); }; gp_widget_get_child_by_label (window, _("File resolution"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); switch(wvalue[0]){ case '6': dc210_set_resolution(camera, DC210_FILE_640); break; case '1': dc210_set_resolution(camera, DC210_FILE_1152); break; }; }; gp_widget_get_child_by_label (window, _("File compression"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); switch(wvalue[0]){ case 'L': dc210_set_compression(camera, DC210_LOW_COMPRESSION); break; case 'M': dc210_set_compression(camera, DC210_MEDIUM_COMPRESSION); break; case 'H': dc210_set_compression(camera, DC210_HIGH_COMPRESSION); }; }; gp_widget_get_child_by_label (window, _("Zoom"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); switch(wvalue[0]){ case '5': if (wvalue[1] == '8') dc210_set_zoom(camera, DC210_ZOOM_58); else dc210_set_zoom(camera, DC210_ZOOM_51); break; case '4': dc210_set_zoom(camera, DC210_ZOOM_41); break; case '3': dc210_set_zoom(camera, DC210_ZOOM_34); break; case '2': dc210_set_zoom(camera, DC210_ZOOM_29); break; case 'M': dc210_set_zoom(camera, DC210_ZOOM_MACRO); break; }; }; gp_widget_get_child_by_label (window, _("Exposure compensation"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); for (i = 0; i < sizeof(exp_comp)/sizeof(*exp_comp); i++){ if (strncmp(wvalue, exp_comp[i], 4) == 0){ dc210_set_exp_compensation(camera, i - 4); break; }; }; }; gp_widget_get_child_by_label (window, _("Port speed"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); dc210_set_speed(camera, atoi(wvalue)); }; gp_widget_get_child_by_label (window, _("Flash"), &w); gp_widget_get_child_by_label (window, _("Red eye flash"), &w2); if (gp_widget_changed (w) || gp_widget_changed(w2)) { gp_widget_get_value (w, &wvalue); gp_widget_get_value (w2, &w2value); switch(wvalue[0]){ case 'A': dc210_set_flash(camera, DC210_FLASH_AUTO, w2value[1] == 'n' ? 1 : 0); break; case 'F': dc210_set_flash(camera, DC210_FLASH_FORCE, w2value[1] == 'n' ? 1 : 0); break; case 'N': dc210_set_flash(camera, DC210_FLASH_NONE, 0); gp_widget_set_value(w2, _("Off")); break; }; }; return GP_OK; } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { if (type && type != GP_CAPTURE_IMAGE){ DC210_DEBUG("Unsupported action 0x%.2X\n", type); return (GP_ERROR_NOT_SUPPORTED); }; if (dc210_capture(camera, path, context) == GP_ERROR) return GP_ERROR; return gp_filesystem_append (camera->fs, path->folder, path->name, context); } static int camera_capture_preview (Camera* camera, CameraFile* file, GPContext *context){ /* this function is to slow; don't export it */ int fatal_error = 0; if (dc210_take_picture(camera, context) == GP_ERROR) return GP_ERROR; if (dc210_download_last_picture(camera, file, DC210_FULL_PICTURE, context) == GP_ERROR) fatal_error = 1; if (dc210_delete_last_picture(camera) == GP_ERROR) fatal_error = 1; if (fatal_error) return GP_ERROR; return GP_OK; }; static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { static char summary_string[2048] = ""; char buff[1024]; dc210_status status; if (GP_OK == dc210_get_status (camera, &status)) { strcpy(summary_string,"Kodak DC210\n"); snprintf(buff,1024,_("Pictures in camera: %d\n"), status.numPicturesInCamera); strcat(summary_string,buff); snprintf(buff,1024,_("There is space for another\n %d low compressed\n %d medium compressed or\n %d high compressed pictures\n"), status.remainingLow, status.remainingMedium, status.remainingHigh); strcat(summary_string,buff); snprintf(buff,1024,_("Total pictures taken: %d\n"), status.totalPicturesTaken); strcat(summary_string,buff); snprintf(buff,1024,_("Total flashes fired: %d\n"), status.totalFlashesFired); strcat(summary_string,buff); snprintf(buff,1024,_("Firmware: %d.%d\n"),status.firmwareMajor,status.firmwareMinor); strcat(summary_string,buff); switch (status.file_type){ case DC210_FILE_TYPE_JPEG: snprintf(buff, 1024, _("Filetype: JPEG (")); break; case DC210_FILE_TYPE_FPX: snprintf(buff, 1024, _("Filetype: FlashPix (")); break; }; strcat(summary_string, buff); switch (status.compression_type){ case DC210_LOW_COMPRESSION: snprintf(buff, 1024, _("low compression, ")); break; case DC210_MEDIUM_COMPRESSION: snprintf(buff, 1024, _("medium compression, ")); break; case DC210_HIGH_COMPRESSION: snprintf(buff, 1024, _("high compression, ")); break; default: snprintf(buff, 1024, _("unknown compression %d, "), status.compression_type); break; }; strcat(summary_string, buff); switch (status.resolution){ case DC210_FILE_640: snprintf(buff, 1024, "640x480 pixel)\n"); break; case DC210_FILE_1152: snprintf(buff, 1024, "1152x864 pixel)\n"); break; default: snprintf(buff, 1024, _("unknown resolution %d)\n"), status.resolution); break; }; strcat(summary_string, buff); /* battery check still doesn't work */ /* switch (status.battery){ case 0: snprintf(buff,1024,"Battery charge is good\n"); break; case 1: snprintf(buff,1024,"Battery charge is low\n"); break; case 2: snprintf(buff,1024,"Battery is not charged\n"); break; }; strcat(summary_string,buff);*/ if (status.acstatus) snprintf(buff,1024,_("AC adapter is connected.\n")); else snprintf(buff,1024,_("AC adapter is not connected.\n")); strcat(summary_string,buff); /* time string, do not change the % escapes */ strftime(buff,1024,_("Time: %a, %d %b %Y %T\n"), localtime((time_t *)&status.time)); strcat(summary_string,buff); switch (status.zoom){ case DC210_ZOOM_58: snprintf(buff, 1024, _("Zoom: 58 mm\n")); break; case DC210_ZOOM_51: snprintf(buff, 1024, _("Zoom: 51 mm\n")); break; case DC210_ZOOM_41: snprintf(buff, 1024, _("Zoom: 41 mm\n")); break; case DC210_ZOOM_34: snprintf(buff, 1024, _("Zoom: 34 mm\n")); break; case DC210_ZOOM_29: snprintf(buff, 1024, _("Zoom: 29 mm\n")); break; case DC210_ZOOM_MACRO: snprintf(buff, 1024, _("Zoom: macro\n")); break; default: snprintf(buff, 1024, _("Unknown zoom mode %d\n"), status.zoom); break; }; strcat(summary_string,buff); if (status.exp_compensation > -5 && status.exp_compensation < 4) snprintf(buff, 1024, _("Exposure compensation: %s\n"), exp_comp[status.exp_compensation + 4]); else snprintf(buff, 1024, _("Exposure compensation: %d\n"), status.exp_compensation); strcat(summary_string,buff); switch (status.flash){ case DC210_FLASH_AUTO: snprintf(buff, 1024, _("Flash mode: auto, ")); break; case DC210_FLASH_FORCE: snprintf(buff, 1024, _("Flash mode: force, ")); break; case DC210_FLASH_NONE: snprintf(buff, 1024, _("Flash mode: off\n")); break; default: snprintf(buff, 1024, _("Unknown flash mode %d, "), status.flash); break; }; strcat(summary_string,buff); if (status.flash != DC210_FLASH_NONE){ if (status.preflash) /* trans: continuation of "Flash mode:" line */ snprintf(buff,1024,_("red eye flash on.\n")); else /* trans: continuation of "Flash mode:" line */ snprintf(buff,1024,_("red eye flash off.\n")); strcat(summary_string,buff); }; if (status.card_status.open == 0) snprintf(buff, 1024, _("No card in camera.\n")); else snprintf(buff,1024, _("Card name: %s\nFree space on card: %d kB\n"), status.album_name, status.card_status.space); strcat(summary_string,buff); } else{ DC210_DEBUG("Couldn't get summary for camera\n"); }; strcpy(summary->text, summary_string); return (GP_OK); } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy (manual->text, _("This library has been tested with a Kodak DC 215 Zoom camera. " "It might work also with DC 200 and DC 210 cameras. " "If you happen to have such a camera, please send a " "message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay.")); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy(about->text, _("Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n")); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func, .del_file_func = delete_file_func, }; int camera_init (Camera *camera, GPContext *context) { DC210_DEBUG("Initialising camera.\n"); /* First, set up all the function pointers */ camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; camera->functions->capture = camera_capture; camera->functions->capture_preview = camera_capture_preview; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); if (dc210_init_port (camera) == GP_ERROR) return GP_ERROR; if (dc210_open_card (camera) == GP_ERROR) return GP_ERROR; return (GP_OK); } /****************************************************************************/ libgphoto2-2.5.9/camlibs/kodak/dc210/ChangeLog0000644000175000001440000000416112610415510015600 000000000000002009-01-24 Marcus Meissner * dc210.c: Remove info.file.name usage. 2005-12-04 Marcus Meissner * dc210.c: Mark Longridge reports DC215 working. 2003-12-11 Hubert Figuiere * dc210.c: status = TESTING 2003-10-12 Marcus Meissner From Joe R * dc210.c: GP_OPERATION_CAPTURE_IMAGE -> GP_CAPTURE_IMAGE typo. 2002-10-25 Michael Koltan * Rewrote the initialization procedure again to use the speed parameter set by gphoto2 * Allowed timeout errors when capturing a picture; that's for Koen, who has strange communication drops in his setup 2002-10-20 Michael Koltan * Improved error recovery on package read timeout when downloading file from camera + Corrected error in battery status / ac adaptor connection. Reading of battery status still doesn't work, so took the unreliable display from summary 2002-09-10 Marcus Meissner * Made exp_compensation a signed char, removed exposure_compensation (unused). 2002-09-11 Michael Koltan * Removed the pseudo capture preview. It's too slow for applications like gtkam 2002-09-10 Marcus Meissner * "xx mm" strings do not need to be translated. 2002-09-08 Michael Koltan * Separated port initialization and speed setting code * Corrected the reading of the card status * Improved card opening code * Added a pseudo capture preview (capture to card, then download the data and delete the picture on card) 2002-09-08 Michael Koltan * Implemented reliable code for speed setting * Added battery check 2002-09-06 Michael Koltan * Implemeted the named commands for displaying, downloading and deleting of files * Added conversion for cfa bayer thumnails * Minor cleanups * Added TODO list 2002-09-01 Michel Koltan * Added PREVIEW to file_operations 2002-08-24 Michael Koltan * first version submitted for testing libgphoto2-2.5.9/camlibs/kodak/dc120/0000755000175000001440000000000012623156267014123 500000000000000libgphoto2-2.5.9/camlibs/kodak/dc120/dc120.h0000644000175000001440000000573512610415617015030 00000000000000/* dc120.h * * Copyright (C) Scott Fritzinger * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* Packet Structure -------------------------------------------------------------- Command Packet: CMD 00 [4 byte field] 00 1A Camera Response: [variable width field] CHECKSUM Responses -------------------------------------------------------------- 00 Command completed 10 Command ready d1 Command received (ACK) d2 Correct packet e1 Command incorrect (NAK) e2 Command execution error e3 Illegal packet e4 Cancel Commands & Byte field descriptions -------------------------------------------------------------- These are ones relavent to gPhoto * Album #0 is the root folder (directory/album/etc...) List albums (folders) Packet: 44 00 00 00 00 00 00 1A Response: ALBUMNAME1\0\0\0\0\0ALBUMNAME2\0\0\0\0\0ALBUMNAME3\0\0\0\0\0 [...] CS (258 bytes, 15 byte fixed-with fields in multiple packets) CS (checksum) Picture count in album Packet: 45 LOC 00 00 AN 00 00 1A LOC (location): 00 (memory), 01 (card) AN (album #) Response: NP4 NP3 NP2 NP1 [11 reserved bytes] CS NP4 - NP1 (number of pictures): MSB to LSB number of pictures CS (checksum) Set Active album for next taken picture Packet: 49 00 AN 00 00 00 00 1A AN (album #) Set Image Quality Packet: 71 00 QQ 00 00 00 00 1A QQ (quality): 00 (no comp), 01 (best), 02 (better), 03 (good) Take picture Packet: CMD 00 00 00 00 00 00 1A CMD: 77 Take a picture to FLASH 7C Take a picture to card Picture Transfer/Deletion Packet: CMD AA PU PL AL 00 00 1A CMD: 4A Send filename in album 51 Send picture in memory 52 Send TIFF info in memory 54 Send TIFF in memory 55 Send picture info in memory 64 Send TIFF on card 76 Copy image from memory to card 7B Erase picture from card AA (access mode): 00 (sequential), 01 (album) PU (picture # upper) PL (picture # lower) AL (album #) */ #define COMM1 (unsigned char)0x00 #define READY (unsigned char)0x10 #define ACK (unsigned char)0xd1 #define PACK1 (unsigned char)0xd2 /* nice. errors all have upper nibble of 'e' */ #define NAK (unsigned char)0xe1 #define COMM0 (unsigned char)0xe2 #define PACK0 (unsigned char)0xe3 #define CANCL (unsigned char)0xe4 #define TIMEOUT 5000 #define SLEEP_TIMEOUT 50 #define RETRIES 5 libgphoto2-2.5.9/camlibs/kodak/dc120/library.c0000644000175000001440000003742412610415617015656 00000000000000/* dc120.c * * Copyright (C) Scott Fritzinger * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #define _POSIX_C_SOURCE 199309L #include "config.h" #include #include #include #include #include #include #include "dc120.h" #include "library.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif static char * dc120_packet_new (int command_byte) { char *p = (char *)malloc(sizeof(char) * 8); memset (p, 0, 8); p[0] = command_byte; p[7] = 0x1a; return p; } /** Checks if a response is ok. * Checks if the response is ok (completed, ready, received) or not ok. * @returns GP_OK if command is ok, GP_ERROR otherwise. */ static int dc120_response_ok (unsigned char response) { /* This is stupid. how do you get a constant of type signed char?? (Ralf) */ if( response == 0x00 || /* Command completed */ response == 0x10 || /* Command ready */ response == 0xd1 || /* Command received (ACK) */ response == 0xd2 ) /* Correct packet */ return (GP_OK); else return (GP_ERROR); } /** Writes a packet to the port. * This function writes a packet to a port determined by camera->port. * When read_response != FALSE it also reads the response. */ static int dc120_packet_write (Camera *camera, char *packet, int size, int read_response) { /* Writes the packet and returns the result */ int x=0; unsigned char in[2]; write_again: /* If retry, give camera some recup time */ if (x > 0) usleep(SLEEP_TIMEOUT * 1000); /* Return error if too many retries */ if (x++ > RETRIES) return (GP_ERROR); if (gp_port_write(camera->port, packet, size) < GP_OK) goto write_again; /* Read in the response from the camera if requested */ if (read_response) { if (gp_port_read(camera->port, (char *)in, 1) < GP_OK) /* On error, write again */ goto write_again; if ( dc120_response_ok(in[0]) != (GP_OK) ) { /* If a single byte response, don't rewrite */ if (size == 1) return (GP_ERROR); /* Got error response. Go again. */ goto write_again; } } return (GP_OK); } static int dc120_packet_read (Camera *camera, char *packet, int size) { return (gp_port_read(camera->port, packet, size)); } static int dc120_packet_read_data (Camera *camera, CameraFile *file, char *cmd_packet, int *size, int block_size, GPContext *context) { /* Reads in multi-packet data, appending it to the "file". */ int num_packets, retval; int packets_received; int bytes_received; int retries=0; char packet[2048], p[8]; unsigned int id; /* Determine number of packets needed on-the-fly */ if (*size > 0) { num_packets = (*size + block_size-1) / block_size; } else { num_packets = 5; } id = gp_context_progress_start (context, num_packets, _("Getting data...")); read_data_write_again: if (dc120_packet_write(camera, cmd_packet, 8, 1) < GP_OK) return (GP_ERROR); packets_received = 0; while( packets_received < num_packets ) { gp_context_progress_update (context, id, packets_received); retval = dc120_packet_read(camera, packet, block_size+1); switch (retval) { case GP_ERROR: case GP_ERROR_TIMEOUT: /* Write that packet was bad and resend */ if (retries++ > RETRIES) return (GP_ERROR); if (packets_received==0) { /* If first packet didn't come, write command again */ goto read_data_write_again; } else { /* Didn't get data packet. Send retry */ p[0] = PACK0; if (dc120_packet_write(camera, p, 1, 0)== GP_ERROR) return (GP_ERROR); } break; default: packets_received++; /* Default is packet was OK */ p[0] = PACK1; /* Do some command-specific stuff */ switch (cmd_packet[0]) { case 0x4A: /* Set size and num_packets for camera filenames*/ if (packets_received==1) *size = ((unsigned char)packet[0] * 256 + (unsigned char)packet[1])* 20 + 2; num_packets = (*size + block_size-1) / block_size; break; case 0x64: case 0x54: /* If thumbnail, cancel rest of image transfer */ if ((num_packets == 16)&&(packets_received==16)) p[0] = CANCL; /* No break on purpose */ break; default: /* Nada */ break; } /* Write response */ if (dc120_packet_write(camera, p, 1, FALSE)== GP_ERROR) return (GP_ERROR); /* Copy in data */ if (packets_received == num_packets) bytes_received = *size - ((num_packets-1) * block_size); else bytes_received = block_size; gp_file_append(file, packet, bytes_received ); } } gp_context_progress_stop (context, id); if ((unsigned char)p[0] != CANCL) /* Read in command completed. (Shouldn't we check for command completed (Ralf)) */ dc120_packet_read(camera, p, 1); return (GP_OK); } int dc120_set_speed (Camera *camera, int speed) { int error = GP_OK; GPPortSettings settings; char *p = dc120_packet_new(0x41); if(p == NULL) { /* unlikely to happen, FFS */ return GP_ERROR; } gp_port_get_settings(camera->port, &settings); switch (speed) { case 9600: p[2] = (unsigned char)0x96; p[3] = (unsigned char)0x00; settings.serial.speed = 9600; break; case 19200: p[2] = (unsigned char)0x19; p[3] = (unsigned char)0x20; settings.serial.speed = 19200; break; case 38400: p[2] = (unsigned char)0x38; p[3] = (unsigned char)0x40; settings.serial.speed = 38400; break; case 57600: p[2] = (unsigned char)0x57; p[3] = (unsigned char)0x60; settings.serial.speed = 57600; break; case 0: /* Default */ case 115200: p[2] = (unsigned char)0x11; p[3] = (unsigned char)0x52; settings.serial.speed = 115200; break; /* how well supported is 230.4? case 230400: p[2] = 0x23; p[3] = 0x04; settings.serial.speed = 230400; break; */ default: error = GP_ERROR; goto fail; break; } if (dc120_packet_write(camera, p, 8, 1) == GP_ERROR) { error = GP_ERROR; goto fail; } gp_port_set_settings (camera->port, settings); usleep(300 * 1000); /* Speed change went OK. */ error = GP_OK; fail: free (p); return error; } int dc120_get_status (Camera *camera, Kodak_dc120_status *status, GPContext *context) { CameraFile *file; char *p = dc120_packet_new(0x7F); int i; int retval; int size; gp_file_new (&file); size = 256; retval = dc120_packet_read_data(camera, file, p, &size, 256, context); if( retval == (GP_OK) && status != NULL ) { const char *data; long unsigned int lsize; gp_file_get_data_and_size( file, &data, &lsize ); if( lsize<122 ) { gp_file_free (file); free (p); return (GP_ERROR); } memset((char*)status,0,sizeof(*status)); status->camera_type_id = data[1]; status->firmware_major = data[2]; status->firmware_minor = data[3]; status->batteryStatusId = data[8]; status->acStatusId = data[9]; /* seconds since unix epoc */ status->time = CAMERA_EPOC + ( data[12] * 0x1000000 + data[13] * 0x10000 + data[14] * 0x100 + data[15]) / 2; status->af_mode = data[16] & 0x0f; status->zoom_mode = (data[16] & 0x30)>>4; status->flash_charged = data[18]; status->compression_mode_id = data[19]; status->flash_mode = data[20]; status->exposure_compensation = (data[2]&0x40?-1:1) * (data[21] & 0x3f); status->light_value = data[22]; status->manual_exposure = data[23]; status->exposure_time = (data[24] * 0x1000000 + data[25] * 0x10000 + data[26] * 0x100 + data[27]) / 2; status->shutter_delay = data[29]; status->memory_card = data[30]; status->front_cover = data[31]; status->date_format = data[32]; status->time_format = data[33]; status->distance_format = data[34]; status->taken_pict_mem = data[36] * 0x100 + data[37]; for( i=0; i<4; i++ ) { status->remaining_pic_mem[i] = data[46+i*2] * 0x100 + data[47+i*2]; } status->taken_pict_card = data[56] * 0x100 + data[57]; for( i=0; i<4; i++ ) { status->remaining_pic_card[i] = data[66+i*2] * 0x100 + data[67+i*2]; } strncpy( status->card_id, data + 77, 32 ); strncpy( status->camera_id, data + 90, 32 ); } gp_file_free(file); free (p); return (retval); } int dc120_get_albums (Camera *camera, int from_card, CameraList *list, GPContext *context) { CameraFile *file; int x; int size; char *f; char *p = dc120_packet_new(0x44); const char *file_data; long unsigned int file_size; if (from_card) p[1] = 0x01; gp_file_new(&file); size = 256; if (dc120_packet_read_data(camera, file, p, &size, 256, context)==GP_ERROR) { gp_file_free(file); free (p); return GP_ERROR; } gp_file_get_data_and_size (file, &file_data, &file_size); for (x=0; x<8; x++) { f = (char*)&file_data[x*15]; if (strlen(f)>0) gp_list_append(list, f, NULL); } gp_file_free(file); free (p); return (GP_OK); } int dc120_get_filenames (Camera *camera, int from_card, int album_number, CameraList *list, GPContext *context) { CameraFile *file; int x; int size; char *p; char buf[16]; const char *file_data; long unsigned int file_size; /* --- now read the files --- */ p = dc120_packet_new(0x4A); if (from_card) p[1] = 0x01; /* Set the album number */ p[4] = album_number; gp_file_new(&file); size = 256; /* packet_read_data has special handling for size */ if (dc120_packet_read_data(camera, file, p, &size, size, context)==GP_ERROR) { gp_file_free(file); free (p); return (GP_ERROR); } /* extract the filenames from the packet data */ gp_file_get_data_and_size (file, &file_data, &file_size); x=2; while (x < size) { if( file_data[x] != '\0' ) { strncpy(buf, (char*) &file_data[x], 11); buf[7] = '.'; buf[11] = '\0'; gp_list_append(list, buf, NULL); } x += 20; } /* be a good boy and free up our stuff */ gp_file_free(file); free (p); return (GP_OK); } static int dc120_get_file_preview (Camera *camera, CameraFile *file, int file_number, char *cmd_packet, int *size, GPContext *context) { CameraFile *f; int x; char buf[16]; const char *f_data; long unsigned int f_size; *size = 15680; /* Create a file for KDC data */ gp_file_new(&f); if (dc120_packet_read_data(camera, f, cmd_packet, size, 1024, context)==GP_ERROR) { gp_file_free(f); return (GP_ERROR); } /* Convert to PPM file for now */ gp_file_append(file, "P3\n80 60\n255\n", 13); gp_file_get_data_and_size (f, &f_data, &f_size); for (x=0; x<14400; x+=3) { sprintf(buf, "%i %i %i\n", (unsigned char)f_data[x+1280], (unsigned char)f_data[x+1281], (unsigned char)f_data[x+1282]); gp_file_append(file, buf, strlen(buf)); } sleep(1); /* FIXME: why? */ return (GP_OK); } static int dc120_get_file (Camera *camera, CameraFile *file, int file_number, char *cmd_packet, int *size, GPContext *context) { CameraFile *size_file; /* file used to determine the filesize */ char *p; const char *file_data; long unsigned int file_size; int offset; /* --- first read the file size --- */ p = dc120_packet_new(0x4A); /* Copy over location and album number */ p[1] = cmd_packet[1]; p[4] = cmd_packet[4]; gp_file_new(&size_file); *size = 256; /* packet_read_data has special handling for size */ if (dc120_packet_read_data(camera, size_file, p, size, *size, context)==GP_ERROR) { gp_file_free(size_file); free (p); return (GP_ERROR); } /* extract the filesize from the packet data */ gp_file_get_data_and_size (size_file, &file_data, &file_size); offset = 2 + (file_number-1) * 20; if( file_size < offset+19 ) { gp_file_free(size_file); free (p); return (GP_ERROR); } *size = (unsigned char)file_data[offset + 16] * 256*256*256 + (unsigned char)file_data[offset + 17] * 256*256 + (unsigned char)file_data[offset + 18] * 256 + (unsigned char)file_data[offset + 19]; /* be a good boy and free up our stuff */ gp_file_free(size_file); free (p); if (dc120_packet_read_data(camera, file, cmd_packet, size, 1024, context)==GP_ERROR) return (GP_ERROR); return (GP_OK); } static int dc120_wait_for_completion (Camera *camera, GPContext *context) { char p[8]; int retval; int x=0, done=0; unsigned int id; /* Wait for command completion */ id = gp_context_progress_start (context, 25, _("Waiting for completion...")); while ((x++ < 25)&&(!done)) { retval = dc120_packet_read(camera, p, 1); switch (retval) { case GP_ERROR: return (GP_ERROR); break; case GP_ERROR_TIMEOUT: break; default: done = 1; } gp_context_progress_update (context, id, x); } gp_context_progress_stop (context, id); if (x==25) return (GP_ERROR); return (GP_OK); } static int dc120_delete_file (Camera *camera, char *cmd_packet, GPContext *context) { char p[8]; if (dc120_packet_write(camera, cmd_packet, 8, 1) == GP_ERROR) return (GP_ERROR); if (dc120_packet_read(camera, p, 1)==GP_ERROR) return (GP_ERROR); if (dc120_wait_for_completion(camera, context)==GP_ERROR) return (GP_ERROR); return (GP_OK); } int dc120_file_action (Camera *camera, int action, int from_card, int album_number, int file_number, CameraFile *file, GPContext *context) { int retval; int size=0; char *p = dc120_packet_new(0x00); if (from_card) p[1] = 0x01; /* Set the picture number */ p[2] = (file_number >> 8) & 0xFF; p[3] = file_number & 0xFF; /* Set the album number */ p[4] = album_number; switch (action) { case DC120_ACTION_PREVIEW: p[0] = (from_card? 0x64 : 0x54); retval = dc120_get_file_preview(camera, file, file_number, p, &size, context); break; case DC120_ACTION_IMAGE: p[0] = (from_card? 0x64 : 0x54); retval = dc120_get_file(camera, file, file_number, p, &size, context); break; case DC120_ACTION_DELETE: p[0] = (from_card? 0x7B : 0x7A); retval = dc120_delete_file(camera, p, context); break; default: retval = GP_ERROR; } free(p); return (retval); } int dc120_capture (Camera *camera, CameraFilePath *path, GPContext *context) { int retval; char *p = dc120_packet_new(0x77); /* Take the picture to Flash memory */ if (dc120_packet_write(camera, p, 8, 1) == GP_ERROR) { retval = (GP_ERROR); } else if ( dc120_wait_for_completion(camera, context) == GP_ERROR ) { retval = (GP_ERROR); } else { retval = (GP_OK); } free( p ); return retval; } libgphoto2-2.5.9/camlibs/kodak/dc120/library.h0000644000175000001440000000611112610415617015650 00000000000000/* library.h * * Copyright (C) Scott Fritzinger * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef _DC120_LIBRARY_H_ #define _DC120_LIBRARY_H_ #define CAMERA_EPOC 852094800 #define DC120_ACTION_IMAGE 0 #define DC120_ACTION_PREVIEW 1 #define DC120_ACTION_DELETE 2 /* Status structure. Copied from dc210, thus may not fit. */ typedef struct { char camera_type_id; /* 1 */ char firmware_major; /* 2 */ char firmware_minor; /* 3 */ char batteryStatusId; /* 8 battery status */ char acStatusId; /* 9 */ unsigned long time; /* 12-15 */ char af_mode; /* 16 */ char zoom_mode; /* 16 */ char flash_charged; /* 18 */ char compression_mode_id; /* 19 */ char flash_mode; /* 20 */ char exposure_compensation; /* 21 */ char light_value; /* 22 measured light */ char manual_exposure; /* 23 */ unsigned long exposure_time; /* 24-27*/ char shutter_delay; /* 29 */ char memory_card; /* 30 */ char front_cover; /* 31 */ char date_format; /* 32 */ char time_format; /* 33 */ char distance_format; /* 34 */ unsigned short taken_pict_mem; /* 36-37 */ unsigned short remaining_pic_mem[4]; /* 46-53 */ unsigned short taken_pict_card; /* 56-57 */ unsigned short remaining_pic_card[4]; /* 66-73 */ unsigned long album_count; /* 122-125 */ char card_id[32]; /* 77-88 */ char camera_id[32]; /* 90-122 */ } Kodak_dc120_status; int dc120_set_speed (Camera *camera, int speed); int dc120_get_status (Camera *camera, Kodak_dc120_status *status, GPContext *context); int dc120_get_albums (Camera *camera, int from_card, CameraList *list, GPContext *context); int dc120_get_filenames(Camera *camera, int from_card, int album_number, CameraList *list, GPContext *context); int dc120_file_action (Camera *camera, int action, int from_card, int album_number, int file_number, CameraFile *file, GPContext *context); int dc120_capture (Camera *camera, CameraFilePath *path, GPContext *context); #endif /* _DC120_LIBRARY_H_ */ libgphoto2-2.5.9/camlibs/kodak/dc120/dc120.c0000644000175000001440000002670112610415617015017 00000000000000/* dc120.c * * Copyright (C) Scott Fritzinger * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #define _POSIX_C_SOURCE 199309L #include "config.h" #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # ifdef gettext_noop # define _(String) dgettext (GETTEXT_PACKAGE, String) # define N_(String) gettext_noop (String) # else # define _(String) (String) # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "dc120.h" #include "library.h" #define CHECK_RESULT(result) {int r = (result); if (r < 0) return (r);} int camera_id (CameraText *id) { strcpy(id->text, "kodak-dc120"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset (&a, 0, sizeof(a)); strcpy(a.model, "Kodak:DC120"); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 57600; a.speed[4] = 115200; a.speed[5] = 0; a.operations = GP_OPERATION_CAPTURE_IMAGE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; gp_abilities_list_append(list, a); return (GP_OK); } /** Parses a path for a folder and returns folder number and card */ static int find_folder( Camera *camera, const char *folder, int *from_card, int *folder_nr, GPContext *context) { CameraList *albums = NULL; const char* album_name; int folder_len; int i; char *dc120_folder_card = _("CompactFlash Card"); if( folder[0] != '/' ) { return (GP_ERROR); } folder++; if( folder[0] == '\0') { /* From memory */ *from_card = FALSE; *folder_nr = 0; return (GP_OK); } else if( strncmp(folder, dc120_folder_card, strlen(dc120_folder_card) )==0) { /* From card */ *from_card = TRUE; folder += strlen(dc120_folder_card); } else { /* Subfolder in memory */ *from_card = FALSE; folder--; /* step back to slash */ } if ( (folder[0] == 0) || (folder[0] == '/' && folder[1] == 0) ) { /* ok, finished */ *folder_nr = 0; return (GP_OK); } else if( folder[0] != '/' ) return (GP_ERROR); folder++; /* remove slash */ /* Have trailing slash */ folder_len = strlen(folder); if (folder[folder_len-1] == '/') { folder_len--; } /* ok, now we have a album. first get all albums */ if( gp_list_new( &albums ) != (GP_OK) ) { return (GP_ERROR); } if( dc120_get_albums(camera, *from_card, albums, context) != (GP_OK) ) { gp_list_free( albums ); return (GP_ERROR); } /* no check if such a album exist */ for( i = 0; ifs, folder, filename, context); if (picnum < 0) return picnum; if (action == DC120_ACTION_PREVIEW) { /* FIXME: marcus, fix type */ dot = strrchr(filename, '.'); if( dot && strlen( dot )>3 ) { strcpy( dot+1, "ppm"); } } return (dc120_file_action(camera, action, from_card, folder_nr, picnum+1, file, context)); /* yes, after that it is to handle failures. */ fail: if (files) gp_list_free( files ); return result; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; switch (type) { case GP_FILE_TYPE_NORMAL: return (camera_file_action (camera, DC120_ACTION_IMAGE, file, folder, filename, context)); case GP_FILE_TYPE_PREVIEW: return (camera_file_action (camera, DC120_ACTION_PREVIEW, file, folder, filename, context)); default: return (GP_ERROR_NOT_SUPPORTED); } } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int retval; retval = camera_file_action (camera, DC120_ACTION_DELETE, NULL, folder, filename, context); return (retval); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { CameraList *list; int count; const char* name; if (type != GP_CAPTURE_IMAGE) return (GP_ERROR_NOT_SUPPORTED); /* capture a image to flash (note: we do not check if full */ CHECK_RESULT (dc120_capture(camera, path, context)); /* Get the last picture in the Flash memory */ gp_list_new(&list); dc120_get_filenames (camera, 0, 0, list, context); count = gp_list_count(list); gp_list_get_name (list, count - 1, &name); gp_list_free(list); /* Set the filename */ strcpy(path->folder, "/"); CHECK_RESULT (gp_filesystem_append (camera->fs, path->folder, path->name, context)); return (GP_OK); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { static char summary_string[2048] = ""; char buff[1024]; Kodak_dc120_status status; if (dc120_get_status (camera, &status, context)) { strcpy(summary_string,"Kodak DC120\n"); snprintf(buff,1024,"Camera Identification: %s\n",status.camera_id); strcat(summary_string,buff); snprintf(buff,1024,"Camera Type: %d\n",status.camera_type_id); strcat(summary_string,buff); snprintf(buff,1024,"Firmware: %d.%d\n",status.firmware_major,status.firmware_minor); strcat(summary_string,buff); snprintf(buff,1024,"Battery Status: %d\n",status.batteryStatusId); strcat(summary_string,buff); snprintf(buff,1024,"AC Status: %d\n",status.acStatusId); strcat(summary_string,buff); strftime(buff,1024,"Time: %a, %d %b %Y %T\n",localtime((time_t *)&status.time)); strcat(summary_string,buff); snprintf(buff,1024,"Total Pictures Taken: %d\n", status.taken_pict_mem + status.taken_pict_card ); strcat(summary_string,buff); } strcpy(summary->text, summary_string); return (GP_OK); } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy (manual->text, _("The Kodak DC120 camera uses the KDC file format " "for storing images. If you want to view the images you " "download from your camera, you will need to download " "the \"kdc2tiff\" program. " "It is available from http://kdc2tiff.sourceforge.net")); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy(about->text, _("Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand).")); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; int speed; /* First, set up all the function pointers */ camera->functions->capture = camera_capture; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* Configure the port (remember the speed) */ gp_port_get_settings (camera->port, &settings); speed = settings.serial.speed; settings.serial.speed = 9600; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; gp_port_set_settings (camera->port, settings); gp_port_set_timeout (camera->port, TIMEOUT); /* Reset the camera to 9600 */ gp_port_send_break (camera->port, 2); /* Wait for it to update */ usleep(1500 * 1000); if (dc120_set_speed (camera, speed) == GP_ERROR) { return (GP_ERROR); } /* Try to talk after speed change */ if (dc120_get_status(camera, NULL, context) == GP_ERROR) { return (GP_ERROR); } return (GP_OK); } libgphoto2-2.5.9/camlibs/kodak/dc120/Makefile-files0000644000175000001440000000050512561423351016573 00000000000000EXTRA_LTLIBRARIES += kodak_dc120.la EXTRA_DIST += kodak/dc120/ChangeLog kodak_dc120_la_SOURCES = \ kodak/dc120/dc120.c kodak/dc120/dc120.h \ kodak/dc120/library.c kodak/dc120/library.h kodak_dc120_la_LDFLAGS = $(camlib_ldflags) kodak_dc120_la_DEPENDENCIES = $(camlib_dependencies) kodak_dc120_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/kodak/dc120/ChangeLog0000644000175000001440000000072612561423351015612 000000000000002006-11-23 Marcus Meissner * dc120.h: Set TIMEOUT to 5000. 1000 was not sufficient for a bugreporter. * *.[ch]: Some cleanups. 2002-01-15 Lutz Müller * dc120.c * library.[c,h]: gp_camera_progress -> gp_context_progress 2001-12-20 Hubert Figuiere * dc120.c, library.h, library.c: cleaned it up a lot and improved error handling. Patch by Ralf Engels libgphoto2-2.5.9/camlibs/kodak/dc3200/0000755000175000001440000000000012623156267014205 500000000000000libgphoto2-2.5.9/camlibs/kodak/dc3200/library.c0000644000175000001440000005630112610415617015733 00000000000000/* library.c * * Copyright (C) 2000,2001,2002 donn morrison - dmorriso@gulf.uvic.ca * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /**************************************************** * kodak dc3200 digital camera driver library * * for gphoto2 * * * * author: donn morrison - dmorriso@gulf.uvic.ca * * date: dec 2000 - jan 2002 * * license: gpl * * version: 1.6 * * * ****************************************************/ #include "config.h" #include "library.h" #include #include #include #include #include #include #include #include #include #include "dc3200.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif /* * FIXME: Use properly sized integer types. The dc3200 code used lots * of u_char, u_long, u_int, which may be wrong on non-32bit systems. */ /* #define DEBUG */ /* * dc3200_set_speed * * handshakes a baud rate with the camera * */ int dc3200_set_speed(Camera *camera, int baudrate) { int baudcode = C9600; unsigned char resp[INI_PACKET_LEN], msg[INI_PACKET_LEN]; int resp_len = INI_PACKET_LEN, msg_len = INI_PACKET_LEN; msg[0] = 0xAF; msg[1] = 0x00; switch(baudrate) { case 9600: baudcode = C9600; break; case 19200: baudcode = C19200; break; case 38400: baudcode = C38400; break; case 57600: baudcode = C57600; break; case 115200: baudcode = C115200; break; default: printf("unsupported baudrate: %d.\n", baudrate); return GP_ERROR; } msg[2] = baudcode; /* send our preferred baud rate */ if(dc3200_send_command(camera, msg, msg_len, resp, &resp_len) == GP_ERROR) return GP_ERROR; /* the camera responds with our preferred baud rate or its * maximum baud rate, whichever is lowest */ /* compile a confirmation packet */ msg[0] = 0x9F; msg[1] = 0x00; if(resp_len == 2) { msg_len = 2; } else { /* calculate reply baud handshake */ msg[2] = (resp[2] + 1) / 2; msg_len = INI_PACKET_LEN; } if(dc3200_send_command(camera, msg, msg_len, resp, &resp_len) == GP_ERROR) return GP_ERROR; if(resp_len == 2) { /* set the handshaked baudrate * supports only 9600 */ return C9600; } else if(resp[1] == 0x01) { /* set the handshaked baudrate */ return (resp[2]*2) - 1; } else { /* unknown baud */ return GP_ERROR; } return GP_ERROR; } /* * dc3200_setup * * sends two commands essential for survival * */ int dc3200_setup(Camera *camera) { /* * some strange commands that must be * completed after initialization and * before any camera access * * version info? ... * */ unsigned char cmd1[5] = {0x01, 0, 0x01, 0x00, 0x0F}; unsigned char cmd2[8] = {0x01, 0, 0x80, 0x00, 0x01, 0x81, 0x00, 0x03}; unsigned char ack[ACK_PACKET_LEN], resp[DEF_PACKET_LEN]; int ack_len = ACK_PACKET_LEN, resp_len = DEF_PACKET_LEN; cmd1[1] = dc3200_calc_seqnum(camera); cmd2[1] = dc3200_calc_seqnum(camera); if(dc3200_send_command(camera, cmd1, sizeof(cmd1), ack, &ack_len) == GP_ERROR) return GP_ERROR; if(dc3200_check_ack(camera, ack, ack_len) == GP_ERROR) return GP_ERROR; if(dc3200_recv_response(camera, resp, &resp_len) == GP_ERROR) return GP_ERROR; if(dc3200_send_ack(camera, resp[1]) == GP_ERROR) return GP_ERROR; if(dc3200_send_command(camera, cmd2, sizeof(cmd2), ack, &ack_len) == GP_ERROR) return GP_ERROR; if(dc3200_check_ack(camera, ack, ack_len) == GP_ERROR) return GP_ERROR; if(dc3200_recv_response(camera, resp, &resp_len) == GP_ERROR) return GP_ERROR; if(dc3200_send_ack(camera, resp[1]) == GP_ERROR) return GP_ERROR; /* set the cmd sequence number */ camera->pl->cmd_seqnum = 0; camera->pl->rec_seqnum = 0; return GP_OK; } /* * dc3200_get_data * * retrieves data from the camera as either file * data or file/folder list data * */ /* command to retrieve directory listing unsigned char list_pkt[DEF_PACKET_LEN] = {0x01, dc3200_calc_seqnum(camera), 0x80, 0x00, 0x20, 0x03, 26 + strlen(filename), 0xc1, 0x50, 0x00, 0x00, 0x00, 0x00, 19 + strlen(filename), 0x04, 0x01, 0x00, 0x01, 0x00, 0x01, 0x60, 0x01, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 2 + strlen(filename), 0x01}; */ /* command to get the picture unsigned char get_pkt[DEF_PACKET_LEN] = {0x01, calc_seqnum(), 0x80, 0x00, 0x20, 0x03, 26 + strlen(filename), 0xC1, 0x50, 0x00, 0x00, 0x00, 0x00, 19 + strlen(filename), 0x04, 0x01, 0x00, 0x01, 0x01, 0x04, 0x60, 0x10, 0x00, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 2 + strlen(filename), 0x01}; */ int dc3200_get_data(Camera *camera, unsigned char **data, unsigned long *data_len, int command, const char *folder, const char *filename) { unsigned char ack[ACK_PACKET_LEN], resp[DEF_PACKET_LEN]; int ack_len = ACK_PACKET_LEN, resp_len = DEF_PACKET_LEN; unsigned long num_left = 0; int data_start_pos = 0; unsigned char *ptr_data = NULL; unsigned int pid = 0; /* command bytes */ unsigned char cb1=0x00,cb2=0x00,cb3=0x00; /* packet parts */ unsigned char pkt_hdr[7]; unsigned char pkt_typ[7]; unsigned char pkt_cmd[12]; unsigned char pkt_len[5]; unsigned char *packet; int packet_len; char *file = NULL; char *ptr = NULL; if(folder) { if(filename) { file = malloc(strlen(folder) + strlen(filename) + 2); if(!file) return GP_ERROR; /* concatenate the folder + filename */ strncpy(file, folder, strlen(folder)); file[strlen(folder)] = 0; /* append the filename */ if(folder[strlen(folder)-1] != '\\') strcat(file, "\\"); strncat(file, filename, strlen(filename)); } else { file = malloc(strlen(folder) + 2); if(!file) return GP_ERROR; strncpy(file, folder, strlen(folder)); file[strlen(folder)] = 0; } } else { return GP_ERROR; } /* change all /'s to \'s */ while((ptr = strchr(file, '/'))) { ptr[0] = '\\'; } /* there should not be a trailing '\', except for root folder */ if(strlen(file) > 1 && file[strlen(file)-1] == '\\') file[strlen(file)-1] = 0; switch (command) { case CMD_GET_PREVIEW: cb1 = 0x02; cb2 = 0x70; cb3 = 0x11; break; case CMD_GET_FILE: cb1 = 0x01; cb2 = 0x60; cb3 = 0x10; break; case CMD_LIST_FILES: cb1 = 0x01; cb2 = 0x60; cb3 = 0x01; break; } camera->pl->cmd_seqnum++; pkt_hdr[0] = 0x01; pkt_hdr[1] = dc3200_calc_seqnum(camera); pkt_hdr[2] = 0x80; pkt_hdr[3] = 0x00; pkt_hdr[4] = 0x20; pkt_hdr[5] = 0x03; pkt_hdr[6] = 26 + strlen(file); pkt_typ[0] = 0xC1; pkt_typ[1] = 0x50; pkt_typ[2] = 0x00; pkt_typ[3] = 0x00; pkt_typ[4] = 0x00; pkt_typ[5] = 0x00; pkt_typ[6] = 19 + strlen(file); pkt_cmd[0] = 0x04; pkt_cmd[1] = cb1; /* cmd */ pkt_cmd[2] = 0x00; pkt_cmd[3] = 0x01; /* ??? */ pkt_cmd[4] = (camera->pl->cmd_seqnum >> 8) & 0xff; pkt_cmd[5] = camera->pl->cmd_seqnum & 0xff; /* SEQ */ pkt_cmd[6] = cb2; pkt_cmd[7] = cb3; /* cmd */ pkt_cmd[8] = 0x00; pkt_cmd[9] = 0x01; /* ??? */ pkt_cmd[10] = 0x00; pkt_cmd[11] = 0x05; /* ??? */ pkt_len[0] = 0x00; pkt_len[1] = 0x00; pkt_len[2] = 0x00; pkt_len[3] = strlen(file) + 2; pkt_len[4] = 0x01; packet_len = sizeof(pkt_hdr) + sizeof(pkt_typ) + sizeof(pkt_cmd) + sizeof(pkt_len) + strlen(file) + 2; packet = malloc(packet_len); if(!packet) { free(file); return GP_ERROR; } /* clear packet */ memset(packet, 0, packet_len); /* copy pkt parts into packet */ memcpy(packet, pkt_hdr, sizeof(pkt_hdr)); memcpy(packet + sizeof(pkt_hdr), pkt_typ, sizeof(pkt_typ)); memcpy(packet + sizeof(pkt_hdr) + sizeof(pkt_typ), pkt_cmd, sizeof(pkt_cmd)); memcpy(packet + sizeof(pkt_hdr) + sizeof(pkt_typ) + sizeof(pkt_cmd), pkt_len, sizeof(pkt_len)); memcpy(packet + sizeof(pkt_hdr) + sizeof(pkt_typ) + sizeof(pkt_cmd) + sizeof(pkt_len), file, strlen(file)); free(file); /* send the command to list files */ if(dc3200_send_command(camera, packet, packet_len, ack, &ack_len) == GP_ERROR){ free(packet); return GP_ERROR; } free(packet); do { resp_len = DEF_PACKET_LEN; if(dc3200_recv_response(camera, resp, &resp_len) == GP_ERROR) { return GP_ERROR; } if(dc3200_send_ack(camera, resp[1]) == GP_ERROR) { return GP_ERROR; } if(resp[1] == camera->pl->rec_seqnum) continue; camera->pl->rec_seqnum = resp[1]; /* * we decide what action to take based on * the number of packets we are expecting * * resp[7] holds this info * */ switch(resp[7]) { case 0xC1: /* * SINGLE PACKET */ /* get the total list length from the data header */ *data_len = bytes_to_l(resp[26], resp[27], resp[28], resp[29]); num_left = 0; data_start_pos = 31; *data_len -= 1; /* allocate a buffer to store all this data */ *data = malloc(*data_len); if(*data == NULL) { return GP_ERROR; } ptr_data = *data; /* copy this portion of the data */ memcpy(ptr_data, resp + data_start_pos, resp_len - data_start_pos); /* incr the buff ptr */ ptr_data += resp_len - data_start_pos; break; case 0x41: /* * MULTIPACKET, START */ /* get the total list length from the data header */ *data_len = bytes_to_l(resp[34], resp[35], resp[36], resp[37]); num_left = bytes_to_l(resp[12], resp[13], resp[14], resp[15]); data_start_pos = 39; *data_len -= 1; /* allocate a buffer to store all this data */ *data = malloc(*data_len); if(*data == NULL) { return GP_ERROR; } ptr_data = *data; /* copy this portion of the data */ memcpy(ptr_data, resp + data_start_pos, resp_len - data_start_pos); /* incr the data ptr */ ptr_data += resp_len - data_start_pos; /* update gphoto2 frontend */ if(command == CMD_GET_FILE || command == CMD_GET_PREVIEW) { pid = gp_context_progress_start(camera->pl->context,(int)*data_len,"%s", filename); gp_context_progress_update(camera->pl->context, pid, ptr_data - *data); if(gp_context_cancel(camera->pl->context) == GP_CONTEXT_FEEDBACK_CANCEL) { free(*data); dc3200_cancel_get_data(camera); return GP_ERROR_CANCEL; } } break; case 0x01: /* * MULTIPACKET, MIDDLE */ /* calculate the number of packets remaining */ num_left = bytes_to_l(resp[12], resp[13], resp[14], resp[15]); data_start_pos = 16; if(*data == NULL) { return GP_ERROR; } /* copy this portion of the data */ memcpy(ptr_data, resp + data_start_pos, resp_len - data_start_pos); /* incr the buff ptr */ ptr_data += resp_len - data_start_pos; /* update gphoto2 frontend */ if(command == CMD_GET_FILE || command == CMD_GET_PREVIEW) { gp_context_progress_update(camera->pl->context, pid, ptr_data - *data); if(gp_context_cancel(camera->pl->context) == GP_CONTEXT_FEEDBACK_CANCEL) { free(*data); dc3200_cancel_get_data(camera); return GP_ERROR_CANCEL; } } break; case 0x81: /* * MULTIPACKET, END */ /* calculate the number of packets remaining */ num_left = bytes_to_l(resp[12], resp[13], resp[14], resp[15]); data_start_pos = 16; if(*data == NULL) { return GP_ERROR; } /* copy this portion of the data */ memcpy(ptr_data, resp + data_start_pos, resp_len - data_start_pos); /* incr the buff ptr */ ptr_data += resp_len - data_start_pos; /* update gphoto2 frontend */ if(command == CMD_GET_FILE || command == CMD_GET_PREVIEW) { gp_context_progress_update(camera->pl->context, pid, ptr_data - *data); if(gp_context_cancel(camera->pl->context) == GP_CONTEXT_FEEDBACK_CANCEL) { free(*data); dc3200_cancel_get_data(camera); return GP_ERROR_CANCEL; } } break; default: return GP_ERROR; } } while(num_left > 1); if(pid != 0 && (command == CMD_GET_FILE || command == CMD_GET_PREVIEW)) gp_context_progress_stop(camera->pl->context, pid); return GP_OK; } /* * dc3200_cancel_get_data * * stops a get data command * */ int dc3200_cancel_get_data(Camera *camera) { unsigned char pkt[20] = {0x01, 0, 0x80, 0x00, 0x20, 0x03, 0x0d, 0xc1, 0x50, 0xc0, 0x00, 0x00, 0x00, 0x06, 0x04, 0x01, 0x00, 0x01, 0, 0}; unsigned char ack[ACK_PACKET_LEN], resp[DEF_PACKET_LEN]; int ack_len = ACK_PACKET_LEN, resp_len = DEF_PACKET_LEN; pkt[1] = dc3200_calc_seqnum(camera); pkt[18] = (camera->pl->cmd_seqnum >> 8) & 0xff; pkt[19] = camera->pl->cmd_seqnum & 0xff; /* wait a bit ... */ sleep(1); /* clear the buffer */ dc3200_clear_read_buffer(camera); if(dc3200_send_command(camera, (unsigned char *)pkt, 20, ack, &ack_len) == GP_ERROR) return GP_ERROR; if(dc3200_recv_response(camera, resp, &resp_len) == GP_ERROR) return GP_ERROR; else dc3200_send_ack(camera, resp[1]); resp_len = DEF_PACKET_LEN; if(dc3200_recv_response(camera, resp, &resp_len) == GP_ERROR) return GP_ERROR; else dc3200_send_ack(camera, resp[1]); return GP_OK; } /* * dc3200_send_command * * if cmd == NULL || cmd_len == 0, send_command waits for a response * otherwise, it sends a command and waits for an acknowledgement * */ int dc3200_send_command(Camera *camera, unsigned char *cmd, int cmd_len, unsigned char *ack, int *ack_len) { int sends, reads; int buff_len = *ack_len; int received = 0; unsigned char *buff = NULL; buff = malloc(sizeof(unsigned char) * *ack_len); if(buff == NULL) { return GP_ERROR; } sends = SEND_RETRIES; while(sends > 0) { reads = READ_RETRIES; /* check that we are acutally sending a command * and not just waiting for data */ if(cmd != NULL && cmd_len > 0) { /* clear the read buffer */ dc3200_clear_read_buffer(camera); /* send the command */ dc3200_send_packet(camera, cmd, cmd_len); } /* wait for response */ while(reads > 0) { if(dc3200_recv_packet(camera, buff, &buff_len) != GP_ERROR) { received = 1; break; } reads--; } if(received) { if(buff_len > *ack_len) { /* buffer size too small */ free(buff); return GP_ERROR; } /* sukksess */ *ack_len = buff_len; memcpy(ack, buff, buff_len); free(buff); return GP_OK; } else { sends--; } } /* send failed */ free(buff); return GP_ERROR; } /* * dc3200_recv_response * * receives a response from a previous command * */ int dc3200_recv_response(Camera *camera, unsigned char *resp, int *resp_len) { return dc3200_send_command(camera, NULL, 0, resp, resp_len); } /* * dc3200_send_ack * * sends an ack packet * */ int dc3200_send_ack(Camera *camera, int seqnum) { unsigned char ack[ACK_PACKET_LEN]; ack[0] = 0x01; ack[1] = seqnum + 16; return dc3200_send_packet(camera, ack, sizeof(ack)); } /* * dc3200_check_ack * * checks an ack packet (well ok not really) * */ int dc3200_check_ack(Camera *camera, unsigned char *ack, int ack_len) { return GP_OK; } /* * dc3200_send_packet * * compiles a packet from data and sends it * */ int dc3200_send_packet(Camera *camera, unsigned char *data, int data_len) { int res; int buff_len = data_len; unsigned char *buff = NULL; buff = malloc(sizeof(unsigned char) * buff_len); if(!buff) return GP_ERROR; memcpy(buff, data, buff_len); /* compile this into a packet */ res = dc3200_compile_packet(camera, &buff, &buff_len); if(res == GP_ERROR) return res; #ifdef DEBUG dump_buffer(buff, buff_len, "s", 16); #endif res = gp_port_write(camera->port, (char *)buff, data_len + 3); free(buff); return res; } /* * dc3200_recv_packet * * waits for a packet to arrive, checks it, and returns it * */ int dc3200_recv_packet(Camera *camera, unsigned char *data, int *data_len) { int complete = 0; int num_read = 0, res = 0, fails = 0; /* allocate storage for size, checksum, and EOP */ unsigned char *buff = NULL; buff = malloc(sizeof(unsigned char) * (*data_len + 3)); if(buff == NULL) { return GP_ERROR; } memset(buff, 0, *data_len + 3); /* * - read data until we get an 0xFF * - process packet * */ res = gp_port_read(camera->port, (char *)&buff[num_read], 1); while(res >= 0 && fails < READ_RETRIES) { if(res == 0) { /* read nothing */ fails++; } else { /* reset # of fails */ fails = 0; num_read++; if(buff[num_read-1] == 0xFF) { complete = 1; break; } if(num_read == *data_len + 3) { /* we've reached the buffer limit */ complete = 0; break; } } res = gp_port_read(camera->port, (char *)&buff[num_read], 1); } if(!complete) { /* packet incomplete */ return GP_ERROR; } #ifdef DEBUG dump_buffer(buff, num_read, "r", 16); #endif if(dc3200_process_packet(camera, buff, &num_read) == GP_ERROR) { free(buff); return GP_ERROR; } /* save the last successful packet received time */ time(&(camera->pl->last)); memcpy(data, buff, *data_len); /* return with new packet size */ *data_len = num_read; free(buff); return GP_OK; } /* * dc3200_compile_packet * * changes 0xFF -> 0xFE 0x01 * 0xFE -> 0xFE 0x00 * adds packet length, checksum, and EOP (0xFF) * */ int dc3200_compile_packet(Camera *camera, unsigned char **data, int *data_len) { int count, i, j; unsigned char *new_data = NULL; unsigned char *tmp_ptr = NULL; /* realloc + 2 for len and checksum */ *data_len += 2; tmp_ptr = (unsigned char*)realloc(*data, *data_len); if(tmp_ptr == NULL) return GP_ERROR; *data = tmp_ptr; /* add length, checksum */ (*data)[*data_len - 2] = *data_len - 2; (*data)[*data_len - 1] = dc3200_calc_checksum(camera, *data, *data_len - 1); /* this is a hack to fix the 0xFF/0xFE problem. * we adjust a "don't care" byte so the checksum * is not 0xFF or 0xFE */ if((*data)[*data_len - 1] >= 0xFE) { if(*data_len > 19) { (*data)[19] += 2; (*data)[*data_len - 1] = dc3200_calc_checksum(camera, *data, *data_len - 1); printf("adjusting checksum to %02x\n", (*data)[*data_len - 1]); } } /* count number of 0xfe's and 0xff's */ count = 0; for(i=0;i<*data_len; i++) { if((*data)[i] == 0xFE || (*data)[i] == 0xFF) count++; } new_data = (unsigned char*)malloc(*data_len + count + 3); /* 3 for length, checksum, EOP */ if(!new_data) return GP_ERROR; j = 0; for(i=0;i<*data_len; i++) { if((*data)[i] == 0xFE || (*data)[i] == 0xFF) { printf("(*data)[i] == %02x\n", (*data)[i]); printf("(*data)[i] - 0xFE == %02x\n", (*data)[i] - 0xFE); new_data[j++] = 0xFE; new_data[j++] = (*data)[i] - 0xFE; } else { new_data[j++] = (*data)[i]; } } /* adjust the new packet count */ *data_len += count + 1; new_data[*data_len - 1] = 0xFF; /* free the old packet data */ free(*data); /* set the ptr */ *data = new_data; return GP_OK; } /* * dc3200_process_packet * * changes 0xFE 0x01 -> 0xFF * 0xFE 0x00 -> 0xFE * checks & removes packet length, checksum, EOP (0xFF) * */ int dc3200_process_packet(Camera *camera, unsigned char *data, int *data_len) { int count = 0, i; int length, checksum; unsigned char *buff; if(data == NULL || *data_len < 1) { return GP_ERROR; } /* allocate a new buffer */ buff = (unsigned char*)malloc(sizeof(unsigned char) * *data_len); if(!buff) return GP_ERROR; /* change 0xFE 0x00 | 0x01 -> 0xFF | 0xFE */ for(i=0; i<*data_len; i++) { if(data[i] == 0xFE) { if(i<*data_len-1) { /* so we don't run out of array bounds */ if(data[i+1] == 0x00) { buff[count] = 0xFE; /* advance i so we don't pick up the trailing byte */ i++; /* incr count */ count++; } else if(data[i+1] == 0x01) { buff[count] = 0xFF; i++; count++; } } else { /* we've found an 0xFE but there is no trailing byte */ free(buff); return GP_ERROR; } } else { buff[count] = data[i]; count++; } } /* copy over the old buffer */ memcpy(data, buff, count); length = data[count - 3]; checksum = data[count - 2]; /* make sure its a valid packet */ if(length != count - 3 || checksum != dc3200_calc_checksum(camera, data, count - 2)) { printf("%02x=%02x %02x=%02x\n", length, count - 3, checksum, dc3200_calc_checksum(camera, data, count - 2)); free(buff); return GP_ERROR; } /* adjust packet size, strip length, checksum, EOP */ *data_len = count - 3; free(buff); return GP_OK; } /* * dc3200_calc_checksum * * calculates the checksum for a byte array * */ int dc3200_calc_checksum(Camera *camera, unsigned char * buffer, int len) { int sum = 0, i; for(i=0; ipl->pkt_seqnum >= 0x1F || camera->pl->pkt_seqnum < 0x10) { camera->pl->pkt_seqnum = 0x10; return camera->pl->pkt_seqnum; } else { camera->pl->pkt_seqnum++; return camera->pl->pkt_seqnum; } } /* * dc3200_keep_alive * * sends and receives a ping packet to keep the * camera awake * */ int dc3200_keep_alive(Camera *camera) { unsigned char ka[ACK_PACKET_LEN]; /* keepalive */ unsigned char ak[ACK_PACKET_LEN]; /* keepalive ack */ int ak_len = ACK_PACKET_LEN; ka[0] = 0xCF; ka[1] = 0x01; /* send keep alive packet */ if(dc3200_send_command(camera, ka, sizeof(ka), ak, &ak_len) == GP_ERROR) { return GP_ERROR; } /* check the ack (should be same packet) */ if(memcmp(ak,ka,ak_len) == 0) { return GP_OK; } return GP_ERROR; } /* * dc3200_clear_read_buffer * * clears data in the read buffer by reading it out * * there is definitely a better way to accomplish this... * */ int dc3200_clear_read_buffer(Camera *camera) { unsigned char byte; int count = 0; gp_port_set_timeout(camera->port, 0); while(gp_port_read(camera->port, (char *)&byte, 1) > 0) count++; if(count > 0) printf("cleared %d bytes from read buffer\n", count); gp_port_set_timeout(camera->port, TIMEOUT); return GP_OK; } /* * dump_buffer * * displays a byte array nicely formatted in hex format * */ int dump_buffer(unsigned char * buffer, int len, char * title, int bytesperline) { char spacer[80]; int i; memset(spacer, 0, sizeof(spacer)); memset(spacer, ' ', strlen(title)+2); printf("%s: ", title); for(i=0; i 0) { printf("\n%s", spacer); } printf("%02x ", buffer[i]); } printf("\n"); printf("%s: ", title); for(i=0; i 0) { printf("\n%s", spacer); } if(buffer[i] >= 0x20 && buffer[i] < 0x7F) { printf("%c", buffer[i]); } else { printf("."); } } printf("\n"); return GP_OK; } unsigned long bytes_to_l(int a, int b, int c, int d) { unsigned long res = a; res = res << 24 | b << 16 | c << 8 | d; return res; } libgphoto2-2.5.9/camlibs/kodak/dc3200/library.h0000644000175000001440000000652112610415617015737 00000000000000/* library.h * * Copyright (C) 2000,2001,2002 donn morrison - dmorriso@gulf.uvic.ca * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /**************************************************** * kodak dc3200 digital camera driver library * * for gphoto2 * * * * author: donn morrison - dmorriso@gulf.uvic.ca * * date: dec 2000 - jan 2002 * * license: gpl * * version: 1.6 * * * ****************************************************/ #ifndef __LIBRARY_H__ #define __LIBRARY_H__ #include /* retries */ #define READ_RETRIES 2 #define ACK_RETRIES 2 #define SEND_RETRIES 4 /* packet sizes */ #define DEF_PACKET_LEN 256 #define ACK_PACKET_LEN 2 #define INI_PACKET_LEN 3 /* command types */ #define SETBAUD1 0xAF #define SETBAUD2 0x9F #define PING 0xCF #define COMMAND 0x01 /* dc3200 baud rate values * * baud baudcode(ask) baudcode2(confirm) * 9600 0x00 -- * 19200 0x01 0x01 * 38400 0x03 0x02 * 57600 0x07 0x04 * 115200 0x0F 0x08 * * except for 9600, baudcode = (baudcode2 + 1) / 2 * */ #define C9600 0x00 #define C19200 0x01 #define C38400 0x03 #define C57600 0x07 #define C115200 0x0F int dc3200_set_speed(Camera *camera, int baudrate); int dc3200_setup(Camera *camera); int dc3200_get_data(Camera *camera, unsigned char **data, unsigned long *data_len, int command, const char *folder, const char *filename); int dc3200_cancel_get_data(Camera *camera); int dc3200_send_command(Camera *camera, unsigned char *cmd, int cmd_len, unsigned char *ack, int *ack_len); int dc3200_recv_response(Camera *camera, unsigned char *resp, int *resp_len); int dc3200_send_packet(Camera *camera, unsigned char *data, int data_len); int dc3200_recv_packet(Camera *camera, unsigned char *data, int *data_len); int dc3200_compile_packet(Camera *camera, unsigned char **data, int *data_len); int dc3200_process_packet(Camera *camera, unsigned char *data, int *data_len); int dc3200_send_ack(Camera *camera, int seqnum); int dc3200_check_ack(Camera *camera, unsigned char *ack, int ack_len); int dc3200_calc_checksum(Camera *camera, unsigned char *data, int data_len); int dc3200_calc_seqnum(Camera *camera); int dc3200_keep_alive(Camera *camera); int dc3200_clear_read_buffer(Camera *camera); int dump_buffer(unsigned char * buffer, int len, char *title, int bytesperline); unsigned long bytes_to_l(int a, int b, int c, int d); #endif libgphoto2-2.5.9/camlibs/kodak/dc3200/dc3200.h0000644000175000001440000000353112610415617015164 00000000000000/* dc3200.h * * Copyright (C) 2000,2001,2002 donn morrison - dmorriso@gulf.uvic.ca * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /**************************************************** * kodak dc3200 digital camera driver library * * for gphoto2 * * * * author: donn morrison - dmorriso@gulf.uvic.ca * * date: dec 2000 - jan 2002 * * license: gpl * * version: 1.6 * * * ****************************************************/ #ifndef __DC3200_H__ #define __DC3200_H__ #include #define CMD_LIST_FILES 0 #define CMD_GET_PREVIEW 1 #define CMD_GET_FILE 2 #define TIMEOUT 750 struct _CameraPrivateLibrary { int pkt_seqnum; /* sequence number */ int cmd_seqnum; /* command seqnum */ int rec_seqnum; /* last received seqnum */ int debug; time_t last; /* remember last recv time */ GPContext *context; /* for progress updates */ }; int check_last_use(Camera *camera); #endif libgphoto2-2.5.9/camlibs/kodak/dc3200/dc3200.c0000644000175000001440000002645612610415617015172 00000000000000/* dc3200.c * * Copyright (C) 2000,2001,2002 donn morrison - dmorriso@gulf.uvic.ca * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /**************************************************** * kodak dc3200 digital camera driver library * * for gphoto2 * * * * author: donn morrison - dmorriso@gulf.uvic.ca * * date: dec 2000 - jan 2002 * * license: gpl * * version: 1.6 * * * ****************************************************/ #include "config.h" #include "dc3200.h" #include #include #include #include #include #include #include "library.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif /* * FIXME: Use properly sized integer types. The dc3200 code used lots * of u_char, u_long, u_int, which may be wrong on non-32bit systems. */ #define CONTEXT_EXISTS _("There is currently an operation in progress. \ This camera only supports one operation \ at a time. Please wait until the current \ operation has finished.") int camera_id (CameraText *id) { strcpy(id->text, "kodak-dc3200"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset (&a, 0, sizeof(a)); strcpy(a.model, "Kodak:DC3200"); a.port = GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 57600; a.speed[4] = 115200; a.speed[5] = 0; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; gp_abilities_list_append(list, a); return (GP_OK); } static int init(Camera *camera) { GPPortSettings settings; int ret, selected_speed; ret = gp_port_get_settings (camera->port, &settings); if (ret < 0) return (ret); /* Remember the selected speed 0 == fastest */ selected_speed = settings.serial.speed == 0 ? 115200 : settings.serial.speed; settings.serial.speed = 9600; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; ret = gp_port_set_settings (camera->port, settings); if (ret < 0) return (ret); gp_port_set_timeout (camera->port, TIMEOUT); if (dc3200_set_speed (camera, selected_speed) == GP_ERROR) return GP_ERROR; /* Set the new speed */ settings.serial.speed = selected_speed; ret = gp_port_set_settings (camera->port, settings); if (ret < 0) return (ret); /* Wait for it to update */ sleep(1); /* Try to talk after speed change */ if (dc3200_keep_alive(camera) == GP_ERROR) return GP_ERROR; /* setup the camera */ if (dc3200_setup(camera) == GP_ERROR) return GP_ERROR; return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { if (camera->pl) { if(camera->pl->context) { gp_context_error(context, CONTEXT_EXISTS); return GP_ERROR; } free (camera->pl); camera->pl = NULL; } return GP_OK; } int check_last_use(Camera *camera) { time_t t; time(&t); if(t - camera->pl->last > 9) { /* we have to re-init the camera */ printf(_("camera inactive for > 9 seconds, re-initing.\n")); return init(camera); } return GP_OK; } static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL; long unsigned data_len = 0; unsigned char *ptr_data_buff; char filename[13], *ptr; int res, i; if(camera->pl->context) { gp_context_error(context, CONTEXT_EXISTS); return GP_ERROR; } if(check_last_use(camera) == GP_ERROR) { return GP_ERROR; } /* get file list data */ res = dc3200_get_data (camera, &data, &data_len, CMD_LIST_FILES, folder, NULL); if (res == GP_ERROR) { return GP_ERROR; } /* check the data length, each record is 20 bytes */ if(data_len%20 != 0 || data_len < 1) { return GP_ERROR; } if (data == NULL) { return GP_ERROR; } /* add directories to the list */ ptr_data_buff = data; i = 0; while(i < data_len) { /* directories have 0x10 in their attribute */ if(!(ptr_data_buff[11] & 0x10)) { ptr_data_buff += 20; i += 20; continue; } /* skip directories starting with . */ if(ptr_data_buff[0] == '.') { ptr_data_buff += 20; i += 20; continue; } /* copy the filename */ strncpy(filename, (char *)ptr_data_buff, sizeof(filename)); /* chop off the trailing spaces and null terminate */ ptr = strchr(filename, 0x20); if(ptr) ptr[0] = 0; /* in case of long directory */ filename[12] = 0; /* append dir to the list */ gp_list_append(list, filename, NULL); ptr_data_buff += 20; i += 20; } free (data); return (dc3200_keep_alive (camera)); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL; long unsigned data_len = 0; unsigned char *ptr_data_buff; char filename[13]; int res, i; if(camera->pl->context) { gp_context_error(context, CONTEXT_EXISTS); return GP_ERROR; } if(check_last_use(camera) == GP_ERROR) { return GP_ERROR; } /* get file list data */ res = dc3200_get_data (camera, &data, &data_len, CMD_LIST_FILES, folder, NULL); if (res == GP_ERROR) { return GP_ERROR; } /* check the data length */ if(data_len%20 != 0 || data_len < 1) { return GP_ERROR; } if(data == NULL) { return GP_ERROR; } /* add files to the list */ ptr_data_buff = data; i = 0; while(i < data_len) { /* files don't have 0x10 in their attribute */ if(ptr_data_buff[11] & 0x10) { ptr_data_buff += 20; i += 20; continue; } /* copy the first 8 bytes of filename */ strncpy(filename, (char *)ptr_data_buff, 8); filename[8] = 0; /* add dot */ strcat(filename, "."); /* copy extension, last 3 bytes*/ strncat(filename, (char *)ptr_data_buff+8, 3); if(!strstr(filename, ".JPG") && !strstr(filename, ".jpg")) { ptr_data_buff += 20; i += 20; continue; } /* append file to the list */ gp_list_append(list, filename, NULL); ptr_data_buff += 20; i += 20; } free(data); return (dc3200_keep_alive(camera)); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL; long unsigned data_len = 0; int res; if(camera->pl->context) { gp_context_error(context, CONTEXT_EXISTS); return GP_ERROR; } camera->pl->context = context; if(check_last_use(camera) == GP_ERROR) { camera->pl->context = NULL; return GP_ERROR; } switch (type) { case GP_FILE_TYPE_PREVIEW: res = dc3200_get_data (camera, &data, &data_len, CMD_GET_PREVIEW, folder, filename); break; case GP_FILE_TYPE_NORMAL: res = dc3200_get_data (camera, &data, &data_len, CMD_GET_FILE, folder, filename); break; default: camera->pl->context = NULL; return (GP_ERROR_NOT_SUPPORTED); } if (res < 0) { camera->pl->context = NULL; return (res); } if (data == NULL || data_len < 1) { camera->pl->context = NULL; return GP_ERROR; } gp_file_append (file, (char *)data, data_len); free(data); camera->pl->context = NULL; return (dc3200_keep_alive(camera)); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL; long unsigned data_len = 0; int res; char file[1024]; if(camera->pl->context) { gp_context_error(context, CONTEXT_EXISTS); return GP_ERROR; } if(check_last_use(camera) == GP_ERROR) { return GP_ERROR; } if(!folder) { return GP_ERROR; } strcpy(file, folder); if(folder[strlen(folder)-1] != '\\' || folder[strlen(folder)-1] != '/') strcat(file, "\\"); strcat(file, filename); /* get file list data */ res = dc3200_get_data (camera, &data, &data_len, CMD_LIST_FILES, file, NULL); if (res == GP_ERROR) { return GP_ERROR; } /* check the data length */ if(data_len%20 != 0 || data_len < 1) { /* there is a problem */ return GP_ERROR; } if(data == NULL) { return GP_ERROR; } /* get the file length && type and stuff */ info->file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE; info->file.size = bytes_to_l(data[19], data[18], data[17], data[16]); strcpy (info->file.type, GP_MIME_JPEG); info->preview.fields = GP_FILE_INFO_TYPE; strcpy (info->preview.type, GP_MIME_JPEG); free(data); return (dc3200_keep_alive(camera)); } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy (manual->text, _("Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least " "every 10 seconds, it will time out, and will have to be " "re-initialized. If you notice the camera does not respond, " "simply re-select the camera. This will cause it to " "reinitialize.")); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated.")); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func, .folder_list_func = folder_list_func }; int camera_init (Camera *camera, GPContext *context) { int ret; camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->manual = camera_manual; camera->functions->about = camera_about; /* Set up the CameraFilesystem */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* initialize the camera */ ret = init (camera); if (ret < 0) { free (camera->pl); camera->pl = NULL; return (ret); } ret = dc3200_keep_alive (camera); if (ret < 0) { free (camera->pl); camera->pl = NULL; return (ret); } camera->pl->context = NULL; return (GP_OK); } libgphoto2-2.5.9/camlibs/kodak/dc3200/Makefile-files0000644000175000001440000000052112561423351016653 00000000000000EXTRA_LTLIBRARIES += kodak_dc3200.la EXTRA_DIST += kodak/dc3200/ChangeLog kodak_dc3200_la_SOURCES = \ kodak/dc3200/dc3200.c kodak/dc3200/dc3200.h \ kodak/dc3200/library.c kodak/dc3200/library.h kodak_dc3200_la_LDFLAGS = $(camlib_ldflags) kodak_dc3200_la_DEPENDENCIES = $(camlib_dependencies) kodak_dc3200_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/kodak/dc3200/ChangeLog0000644000175000001440000000033212557123324015667 000000000000002002-01-20 Marcus Meissner * library.c: Added missing to make it compile. 2002-01-19 Lutz Müller * library.[c,h] * dc3200.[c,h]: Fix includes. libgphoto2-2.5.9/camlibs/ricoh/0000755000175000001440000000000012623156267013325 500000000000000libgphoto2-2.5.9/camlibs/ricoh/crctab.h0000644000175000001440000002104612610415536014650 00000000000000/* * Crc calculation stuff */ /* crctab calculated by Mark G. Mendel, Network Systems Corporation */ static unsigned short crctab[256] = { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 }; /* * updcrc macro derived from article Copyright 1986 Stephen Satchell. * NOTE: First srgument must be in range 0 to 255. * Second argument is referenced twice. * * Programmers may incorporate any or all code into their programs, * giving proper credit within the source. Publication of the * source routines is permitted so long as proper credit is given * to Stephen Satchell, Satchell Evaluations and Chuck Forsberg, * Omen Technology. */ #define updcrc(cp, crc) ( crctab[((crc >> 8) & 255)] ^ (crc << 8) ^ cp) /* * Copyright 1986 Gary S. Brown. You may use this program, or * code or tables extracted from it, as desired without restriction. */ /* First, the polynomial itself and its table of feedback terms. The */ /* polynomial is */ /* X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 */ /* Note that we take it "backwards" and put the highest-order term in */ /* the lowest-order bit. The X^32 term is "implied"; the LSB is the */ /* X^31 term, etc. The X^0 term (usually shown as "+1") results in */ /* the MSB being 1. */ /* Note that the usual hardware shift register implementation, which */ /* is what we're using (we're merely optimizing it by doing eight-bit */ /* chunks at a time) shifts bits into the lowest-order term. In our */ /* implementation, that means shifting towards the right. Why do we */ /* do it this way? Because the calculated CRC must be transmitted in */ /* order from highest-order term to lowest-order term. UARTs transmit */ /* characters in order from LSB to MSB. By storing the CRC this way, */ /* we hand it to the UART in the order low-byte to high-byte; the UART */ /* sends each low-bit to hight-bit; and the result is transmission bit */ /* by bit from highest- to lowest-order term without requiring any bit */ /* shuffling on our part. Reception works similarly. */ /* The feedback terms table consists of 256, 32-bit entries. Notes: */ /* */ /* The table can be generated at runtime if desired; code to do so */ /* is shown later. It might not be obvious, but the feedback */ /* terms simply represent the results of eight shift/xor opera- */ /* tions for all combinations of data and CRC register values. */ /* */ /* The values must be right-shifted by eight bits by the "updcrc" */ /* logic; the shift must be unsigned (bring in zeroes). On some */ /* hardware you could probably optimize the shift in assembler by */ /* using byte-swap instructions. */ #if 0 static long cr3tab[] = { /* CRC polynomial 0xedb88320 */ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; #endif #ifdef NFGM long UPDC32(b, c) long c; { return (cr3tab[((int)c ^ b) & 0xff] ^ ((c >> 8) & 0x00FFFFFF)); } #else #define UPDC32(b, c) (cr3tab[((int)c ^ b) & 0xff] ^ ((c >> 8) & 0x00FFFFFF)) #endif /* End of crctab.c */ libgphoto2-2.5.9/camlibs/ricoh/library.c0000644000175000001440000004041312610415536015050 00000000000000/* library.c * * Copyright 2002 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include "ricoh.h" #define GP_MODULE "ricoh" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define CR(result) {int r=(result); if (r<0) return r;} #define CRW(result,widget) {int r=(result); if (r<0) { gp_widget_free (widget); return r; } } static struct { RicohModel id; const char *model; } models[] = { {RICOH_MODEL_1, "Ricoh:RDC-1"}, {RICOH_MODEL_2, "Ricoh:RDC-2"}, {RICOH_MODEL_2E, "Ricoh:RDC-2E"}, {RICOH_MODEL_100G, "Ricoh:RDC-100G"}, {RICOH_MODEL_300, "Ricoh:RDC-300"}, {RICOH_MODEL_300Z, "Ricoh:RDC-300Z"}, {RICOH_MODEL_4200, "Ricoh:RDC-4200"}, {RICOH_MODEL_4300, "Ricoh:RDC-4300"}, {RICOH_MODEL_5000, "Ricoh:RDC-5000"}, {RICOH_MODEL_ESP2, "Philips:ESP2"}, {RICOH_MODEL_ESP50, "Philips:ESP50"}, {RICOH_MODEL_ESP60, "Philips:ESP60"}, {RICOH_MODEL_ESP70, "Philips:ESP70"}, {RICOH_MODEL_ESP80, "Philips:ESP80"}, {RICOH_MODEL_ESP80SXG, "Philips:ESP80SXG"}, {0, NULL} }; struct _CameraPrivateLibrary { RicohModel model; }; int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; memset (&a, 0, sizeof (CameraAbilities)); for (i = 0; models[i].model; i++) { strcpy (a.model, models[i].model); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_SERIAL; a.operations = GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CONFIG; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE; CR (gp_abilities_list_append (list, a)); } return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { if (camera->pl) { free (camera->pl); camera->pl = NULL; } ricoh_disconnect (camera, context); return GP_OK; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; unsigned int n, i; const char *name; CR (ricoh_get_num (camera, context, &n)); for (i = 0; i < n; i++) { CR (ricoh_get_pic_name (camera, context, i + 1, &name)); CR (gp_list_append (list, name, NULL)); } return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int n; const char *name; CR (n = gp_filesystem_number (fs, folder, filename, context)); n++; info->audio.fields = GP_FILE_INFO_NONE; /* no info anbout audio files */ info->preview.width = 80; info->preview.height = 60; info->preview.fields = GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT; CR (ricoh_get_pic_name (camera, context, n, &name)); CR (ricoh_get_pic_date (camera, context, n, &info->file.mtime)); CR (ricoh_get_pic_size (camera, context, n, &info->file.size)); strcpy (info->file.type, GP_MIME_EXIF); info->file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_MTIME | GP_FILE_INFO_TYPE; return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int n; unsigned int size; unsigned char *data; CR (n = gp_filesystem_number (fs, folder, filename, context)); n++; switch (type) { case GP_FILE_TYPE_NORMAL: CR (ricoh_get_pic (camera, context, n, RICOH_FILE_TYPE_NORMAL, &data, &size)); gp_file_set_mime_type (file, GP_MIME_EXIF); break; case GP_FILE_TYPE_PREVIEW: CR (ricoh_get_pic (camera, context, n, RICOH_FILE_TYPE_PREVIEW, &data, &size)); gp_file_set_mime_type (file, GP_MIME_TIFF); break; default: return (GP_ERROR_NOT_SUPPORTED); } gp_file_set_data_and_size (file, (char*)data, size); return (GP_OK); } static int del_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *user_data, GPContext *context) { Camera *camera = user_data; int n; CR (n = gp_filesystem_number (fs, folder, filename, context)); n++; CR (ricoh_del_pic (camera, context, n)); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { GP_DEBUG ("camera_about()"); strcpy (about->text, _("Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" ) ); return GP_OK; } int camera_id (CameraText *id) { strcpy (id->text, "Ricoh"); return (GP_OK); } static int camera_summary (Camera *camera, CameraText *about, GPContext *context) { int avail_mem, total_mem; char model[128]; unsigned int i; CR (ricoh_get_cam_amem (camera, context, &avail_mem)); CR (ricoh_get_cam_mem (camera, context, &total_mem)); memset (model, 0, sizeof (model)); for (i = 0; models[i].model; i++) if (models[i].id == camera->pl->model) break; if (models[i].model) strncpy (model, models[i].model, sizeof (model) - 1); else snprintf (model, sizeof (model) - 1, _("unknown (0x%02x)"), camera->pl->model); sprintf (about->text, _("Model: %s\n" "Memory: %d byte(s) of %d available"), model, avail_mem, total_mem); return (GP_OK); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { unsigned int n; if (type != GP_CAPTURE_IMAGE) return (GP_ERROR_NOT_SUPPORTED); CR (ricoh_get_num (camera, context, &n)); CR (ricoh_take_pic (camera, context)); sprintf (path->name, "rdc%04i.jpg", n + 1); strcpy (path->folder, "/"); CR (gp_filesystem_append (camera->fs, path->folder, path->name, context)); return (GP_OK); } static int put_file_func (CameraFilesystem *fs, const char *folder, const char *name, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { const char *data; unsigned long int size; Camera *camera = user_data; if (type != GP_FILE_TYPE_NORMAL) return GP_ERROR_BAD_PARAMETERS; CR (gp_file_get_data_and_size (file, &data, &size)); return ricoh_put_file (camera, context, name, (const unsigned char *)data, size); } #undef N_ELEMENTS #define N_ELEMENTS(v) (sizeof(v)/sizeof(v[0])) static struct { RicohExposure exposure; const char *name; } ricoh_exposures[] = { {RICOH_EXPOSURE_M20, N_("-2.0")}, {RICOH_EXPOSURE_M15, N_("-1.5")}, {RICOH_EXPOSURE_M10, N_("-1.0")}, {RICOH_EXPOSURE_M05, N_("-0.5")}, {RICOH_EXPOSURE_00, N_("0.0")}, {RICOH_EXPOSURE_05, N_("0.5")}, {RICOH_EXPOSURE_10, N_("1.0")}, {RICOH_EXPOSURE_15, N_("1.5")}, {RICOH_EXPOSURE_20, N_("2.0")}, {RICOH_EXPOSURE_AUTO, N_("Auto")} }; static struct { RicohResolution resolution; const char *name; } ricoh_resolutions[] = { {RICOH_RESOLUTION_640_480, N_("640 x 480")}, {RICOH_RESOLUTION_1280_960, N_("1280 x 960")} }; static struct { RicohWhiteLevel white_level; const char *name; } ricoh_white_levels[] = { {RICOH_WHITE_LEVEL_AUTO, N_("Auto")}, {RICOH_WHITE_LEVEL_OUTDOOR, N_("Outdoor")}, {RICOH_WHITE_LEVEL_FLUORESCENT, N_("Fluorescent")}, {RICOH_WHITE_LEVEL_INCANDESCENT, N_("Incandescent")}, {RICOH_WHITE_LEVEL_BLACK_WHITE, N_("Black & White")}, {RICOH_WHITE_LEVEL_SEPIA, N_("Sepia")} }; static struct { RicohMacro macro; const char *name; } ricoh_macros[] = { {RICOH_MACRO_ON, N_("On")}, {RICOH_MACRO_OFF, N_("Off")} }; static struct { RicohCompression compression; const char *name; } ricoh_compressions[] = { {RICOH_COMPRESSION_NONE, N_("None")}, {RICOH_COMPRESSION_MAX, N_("Maximal")}, {RICOH_COMPRESSION_NORM, N_("Normal")}, {RICOH_COMPRESSION_MIN, N_("Minimal")} }; static struct { RicohRecMode rec_mode; const char *name; } ricoh_rec_modes[] = { {RICOH_REC_MODE_IMAGE, N_("Image")}, {RICOH_REC_MODE_CHARACTER, N_("Character")}, {RICOH_REC_MODE_SOUND, N_("Sound")}, {RICOH_REC_MODE_IMAGE_SOUND, N_("Image & Sound")}, {RICOH_REC_MODE_CHARACTER_SOUND, N_("Character & Sound")} }; static struct { RicohFlash flash; const char *name; } ricoh_flashs[] = { {RICOH_FLASH_AUTO, N_("Auto")}, {RICOH_FLASH_OFF, N_("Off")}, {RICOH_FLASH_ON, N_("On")} }; static struct { RicohZoom zoom; const char *name; } ricoh_zooms[] = { {RICOH_ZOOM_OFF, N_("Off")}, {RICOH_ZOOM_1, N_("2x")}, {RICOH_ZOOM_2, N_("3x")}, {RICOH_ZOOM_3, N_("4x")}, {RICOH_ZOOM_4, N_("5x")}, {RICOH_ZOOM_5, N_("6x")}, {RICOH_ZOOM_6, N_("7x")}, {RICOH_ZOOM_7, N_("8x")}, {RICOH_ZOOM_8, N_("9x")} }; #undef R_ADD_RADIO #define R_ADD_RADIO(ca,co,s,type,n,Name) \ { \ CameraWidget *__w = NULL; \ type __v; \ unsigned int __i; \ \ CR (gp_widget_new (GP_WIDGET_RADIO, _(Name), &__w)); \ CR (gp_widget_set_name (__w, (Name))); \ CR (gp_widget_append ((s), __w)); \ CR (ricoh_get_##n ((ca), (co), &__v)); \ for (__i = 0; __i < N_ELEMENTS (ricoh_##n##s); __i++) { \ CR (gp_widget_add_choice (__w, _(ricoh_##n##s[__i].name))); \ if (__v == ricoh_##n##s[__i].n) \ CR (gp_widget_set_value (__w, \ _(ricoh_##n##s[__i].name))); \ } \ } #undef R_CHECK_RADIO #define R_CHECK_RADIO(c,co,wi,n,Name) \ { \ CameraWidget *__w = NULL; \ const char *__v = NULL; \ unsigned int __i; \ \ CR (gp_widget_get_child_by_name (wi, Name, &__w)); \ if (gp_widget_changed (__w)) { \ CR (gp_widget_get_value (__w, &__v)); \ for (__i = 0; __i < N_ELEMENTS (ricoh_##n##s); __i++) \ if (!strcmp (__v, _(ricoh_##n##s[__i].name))) { \ CR (ricoh_set_##n (c, co, ricoh_##n##s[__i].n)); \ break; \ } \ } \ } static int camera_get_config (Camera *c, CameraWidget **window, GPContext *co) { CameraWidget *s, *w; const char *copyright; time_t time; CR (gp_widget_new (GP_WIDGET_WINDOW, _("Configuration"), window)); /* General settings */ CR (gp_widget_new (GP_WIDGET_SECTION, _("General"), &s)); CR (gp_widget_append (*window, s)); /* Copyright */ CR (gp_widget_new (GP_WIDGET_TEXT, _("Copyright"), &w)); CR (gp_widget_set_name (w, "copyright")); CR (gp_widget_set_info (w, _("Copyright (max. 20 characters)"))); CR (gp_widget_append (s, w)); CR (ricoh_get_copyright (c, co, ©right)); CR (gp_widget_set_value (w, (void *) copyright)); /* Date */ CR (gp_widget_new (GP_WIDGET_DATE, _("Date & Time"), &w)); CRW (gp_widget_set_name (w, "date"), w); CRW (gp_widget_set_info (w, _("Date & Time")), w); CRW (gp_widget_append (s, w), w); CR (ricoh_get_date (c, co, &time)); CR (gp_widget_set_value (w, &time)); /* Picture related settings */ CR (gp_widget_new (GP_WIDGET_SECTION, _("Pictures"), &s)); CRW (gp_widget_append (*window, s), w); R_ADD_RADIO (c, co, s, RicohResolution, resolution, "Resolution") R_ADD_RADIO (c, co, s, RicohExposure, exposure, "Exposure") R_ADD_RADIO (c, co, s, RicohMacro, macro, "Macro") R_ADD_RADIO (c, co, s, RicohFlash, flash, "Flash") R_ADD_RADIO (c, co, s, RicohZoom, zoom, "Zoom") R_ADD_RADIO (c, co, s, RicohCompression, compression, "Compression") R_ADD_RADIO (c, co, s, RicohWhiteLevel, white_level, "White Level") R_ADD_RADIO (c, co, s, RicohRecMode, rec_mode, "Record Mode") return (GP_OK); } static int camera_set_config (Camera *c, CameraWidget *window, GPContext *co) { CameraWidget *w; const char *v_char; time_t time; RicohMode mode; /* We need to be in record mode to set settings. */ CR (ricoh_get_mode (c, co, &mode)); if (mode != RICOH_MODE_RECORD) CR (ricoh_set_mode (c, co, RICOH_MODE_RECORD)); /* Copyright */ CR (gp_widget_get_child_by_name (window, "copyright", &w)); if (gp_widget_changed (w)) { CR (gp_widget_get_value (w, &v_char)); CR (ricoh_set_copyright (c, co, v_char)); } /* Date */ CR (gp_widget_get_child_by_name (window, "date", &w)); if (gp_widget_changed (w)) { CR (gp_widget_get_value (w, &time)); CR (ricoh_set_date (c, co, time)); } R_CHECK_RADIO (c, co, window, resolution, N_("Resolution")) R_CHECK_RADIO (c, co, window, exposure, N_("Exposure")) R_CHECK_RADIO (c, co, window, white_level, N_("White level")) R_CHECK_RADIO (c, co, window, macro, N_("Macro")) R_CHECK_RADIO (c, co, window, zoom, N_("Zoom")) R_CHECK_RADIO (c, co, window, flash, N_("Flash")) R_CHECK_RADIO (c, co, window, rec_mode, N_("Record Mode")) R_CHECK_RADIO (c, co, window, compression, N_("Compression")) return (GP_OK); } static struct { unsigned int speed; RicohSpeed rspeed; } speeds[] = { { 2400, RICOH_SPEED_2400}, {115200, RICOH_SPEED_115200}, { 4800, RICOH_SPEED_4800}, { 19200, RICOH_SPEED_19200}, { 38400, RICOH_SPEED_38400}, { 57600, RICOH_SPEED_57600}, { 0, 0} }; static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = del_file_func, .put_file_func = put_file_func, .get_info_func = get_info_func }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; unsigned int speed, i; int result; RicohModel model = 0; /* Try to contact the camera. */ CR (gp_port_set_timeout (camera->port, 5000)); CR (gp_port_get_settings (camera->port, &settings)); speed = (settings.serial.speed ? settings.serial.speed : 115200); for (i = 0; speeds[i].speed; i++) { GP_DEBUG ("Trying speed %i...", speeds[i].speed); settings.serial.speed = speeds[i].speed; CR (gp_port_set_settings (camera->port, settings)); /* * Note that ricoh_connect can only be called to * initialize the connection at 2400 bps. At other * speeds, a different function needs to be used. */ result = (speeds[i].rspeed == RICOH_SPEED_2400) ? ricoh_connect (camera, NULL, &model) : ricoh_get_mode (camera, NULL, NULL); if (result == GP_OK) break; } /* Contact made? If not, report error. */ if (!speeds[i].speed) { gp_context_error (context, _("Could not contact camera.")); return (GP_ERROR); } /* Contact made. Do we need to change the speed? */ if (settings.serial.speed != speed) { for (i = 0; speeds[i].speed; i++) if (speeds[i].speed == speed) break; if (!speeds[i].speed) { gp_context_error (context, _("Speed %i is not " "supported!"), speed); return (GP_ERROR); } CR (ricoh_set_speed (camera, context, speeds[i].rspeed)); settings.serial.speed = speed; CR (gp_port_set_settings (camera->port, settings)); /* Check if the camera is still there. */ CR (ricoh_get_mode (camera, context, NULL)); } /* setup the function calls */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->capture = camera_capture; camera->functions->about = camera_about; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; CR (gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera)); /* * Remember the model. It could be that there hasn't been the * need to call ricoh_connect. Then we don't have a model. Should * we disconnect and reconnect in this case? */ camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); camera->pl->model = model; return (GP_OK); } libgphoto2-2.5.9/camlibs/ricoh/ricoh.h0000644000175000001440000001473412610415536014524 00000000000000/* ricoh.h * * Copyright 2002 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __RICOH_H__ #define __RICOH_H__ #include #include #include enum _RicohSpeed { RICOH_SPEED_2400 = 0x00, RICOH_SPEED_4800 = 0x01, RICOH_SPEED_9600 = 0x02, RICOH_SPEED_19200 = 0x03, RICOH_SPEED_38400 = 0x04, RICOH_SPEED_57600 = 0x05, RICOH_SPEED_115200 = 0x07 }; typedef enum _RicohSpeed RicohSpeed; int ricoh_set_speed (Camera *camera, GPContext *context, RicohSpeed speed); /* We don't know the numbers for the models marked as 'dummy'. */ enum _RicohModel { RICOH_MODEL_1 = 0x001, /* dummy */ RICOH_MODEL_2 = 0x002, /* dummy */ RICOH_MODEL_2E = 0x003, /* dummy */ RICOH_MODEL_100G = 0x005, /* dummy */ RICOH_MODEL_300 = 0x300, RICOH_MODEL_300Z = 0x301, RICOH_MODEL_4200 = 0x402, RICOH_MODEL_4300 = 0x403, RICOH_MODEL_5000 = 0x004, /* dummy */ RICOH_MODEL_ESP2 = 0x006, /* dummy */ RICOH_MODEL_ESP50 = 0x007, /* dummy */ RICOH_MODEL_ESP60 = 0x008, /* dummy */ RICOH_MODEL_ESP70 = 0x009, /* dummy */ RICOH_MODEL_ESP80 = 0x010, /* dummy */ RICOH_MODEL_ESP80SXG = 0x400 }; typedef enum _RicohModel RicohModel; int ricoh_connect (Camera *camera, GPContext *context, RicohModel *model); int ricoh_disconnect (Camera *camera, GPContext *context); enum _RicohMode { RICOH_MODE_PLAY = 0x00, RICOH_MODE_RECORD = 0x01 }; typedef enum _RicohMode RicohMode; int ricoh_get_mode (Camera *camera, GPContext *context, RicohMode *mode); int ricoh_set_mode (Camera *camera, GPContext *context, RicohMode mode); int ricoh_get_num (Camera *camera, GPContext *context, unsigned int *n); int ricoh_get_pic_size (Camera *, GPContext *, unsigned int, uint64_t *); int ricoh_get_pic_date (Camera *, GPContext *, unsigned int, time_t *); int ricoh_get_pic_name (Camera *, GPContext *, unsigned int, const char **); int ricoh_get_pic_memo (Camera *, GPContext *, unsigned int, const char **); int ricoh_del_pic (Camera *, GPContext *, unsigned int); enum _RicohFileType { RICOH_FILE_TYPE_NORMAL = 0xa0, RICOH_FILE_TYPE_PREVIEW = 0xa4 }; typedef enum _RicohFileType RicohFileType; int ricoh_get_pic (Camera *camera, GPContext *context, unsigned int n, RicohFileType type, unsigned char **data, unsigned int *size); int ricoh_take_pic (Camera *, GPContext *); int ricoh_put_file (Camera *, GPContext *, const char *name, const unsigned char *data, unsigned int size); int ricoh_get_date (Camera *camera, GPContext *context, time_t *time); int ricoh_set_date (Camera *camera, GPContext *context, time_t time); int ricoh_get_cam_mem (Camera *camera, GPContext *context, int *mem); int ricoh_get_cam_amem (Camera *camera, GPContext *context, int *mem); int ricoh_get_copyright (Camera *camera, GPContext *context, const char **copyright); int ricoh_set_copyright (Camera *camera, GPContext *context, const char *copyright); enum _RicohResolution { RICOH_RESOLUTION_640_480 = 0x01, RICOH_RESOLUTION_1280_960 = 0x04 }; typedef enum _RicohResolution RicohResolution; int ricoh_get_resolution (Camera *, GPContext *, RicohResolution *); int ricoh_set_resolution (Camera *, GPContext *, RicohResolution); enum _RicohExposure { RICOH_EXPOSURE_M20 = 0x01, /* -2.0 */ RICOH_EXPOSURE_M15 = 0x02, RICOH_EXPOSURE_M10 = 0x03, RICOH_EXPOSURE_M05 = 0x04, RICOH_EXPOSURE_00 = 0x05, RICOH_EXPOSURE_05 = 0x06, RICOH_EXPOSURE_10 = 0x07, RICOH_EXPOSURE_15 = 0x08, RICOH_EXPOSURE_20 = 0x09, /* +2.0 */ RICOH_EXPOSURE_AUTO = 0xff }; typedef enum _RicohExposure RicohExposure; int ricoh_get_exposure (Camera *, GPContext *, RicohExposure *); int ricoh_set_exposure (Camera *, GPContext *, RicohExposure); enum _RicohWhiteLevel { RICOH_WHITE_LEVEL_AUTO = 0x00, RICOH_WHITE_LEVEL_OUTDOOR = 0x01, RICOH_WHITE_LEVEL_FLUORESCENT = 0x02, RICOH_WHITE_LEVEL_INCANDESCENT = 0x03, RICOH_WHITE_LEVEL_BLACK_WHITE = 0x04, RICOH_WHITE_LEVEL_SEPIA = 0x05 }; typedef enum _RicohWhiteLevel RicohWhiteLevel; int ricoh_get_white_level (Camera *, GPContext *, RicohWhiteLevel *); int ricoh_set_white_level (Camera *, GPContext *, RicohWhiteLevel); enum _RicohMacro { RICOH_MACRO_OFF = 0x00, RICOH_MACRO_ON = 0x01 }; typedef enum _RicohMacro RicohMacro; int ricoh_get_macro (Camera *, GPContext *, RicohMacro *); int ricoh_set_macro (Camera *, GPContext *, RicohMacro); enum _RicohZoom { RICOH_ZOOM_OFF = 0x00, RICOH_ZOOM_1 = 0x01, RICOH_ZOOM_2 = 0x02, RICOH_ZOOM_3 = 0x03, RICOH_ZOOM_4 = 0x04, RICOH_ZOOM_5 = 0x05, RICOH_ZOOM_6 = 0x06, RICOH_ZOOM_7 = 0x07, RICOH_ZOOM_8 = 0x08 }; typedef enum _RicohZoom RicohZoom; int ricoh_get_zoom (Camera *, GPContext *, RicohZoom *); int ricoh_set_zoom (Camera *, GPContext *, RicohZoom); enum _RicohFlash { RICOH_FLASH_AUTO = 0x00, RICOH_FLASH_OFF = 0x01, RICOH_FLASH_ON = 0x02 }; typedef enum _RicohFlash RicohFlash; int ricoh_get_flash (Camera *, GPContext *, RicohFlash *); int ricoh_set_flash (Camera *, GPContext *, RicohFlash); enum _RicohRecMode { RICOH_REC_MODE_IMAGE = 0x00, RICOH_REC_MODE_CHARACTER = 0x01, RICOH_REC_MODE_SOUND = 0x03, RICOH_REC_MODE_IMAGE_SOUND = 0x04, RICOH_REC_MODE_CHARACTER_SOUND = 0x06 }; typedef enum _RicohRecMode RicohRecMode; int ricoh_get_rec_mode (Camera *, GPContext *, RicohRecMode *); int ricoh_set_rec_mode (Camera *, GPContext *, RicohRecMode); enum _RicohCompression { RICOH_COMPRESSION_NONE = 0x00, RICOH_COMPRESSION_MAX = 0x01, RICOH_COMPRESSION_NORM = 0x02, RICOH_COMPRESSION_MIN = 0x03 }; typedef enum _RicohCompression RicohCompression; int ricoh_get_compression (Camera *, GPContext *, RicohCompression *); int ricoh_set_compression (Camera *, GPContext *, RicohCompression); #endif /* __RICOH_H__ */ libgphoto2-2.5.9/camlibs/ricoh/g3.txt0000644000175000001440000000326112557123324014313 00000000000000-SPWD -PRET - partial retrieve I think, %s %d. -CCTL - control? -SINF -FMT - format card? -ATTR -PWOF - power off? -SDIS - set distinction ? what is a distinction? -GDIS - get distinction ? -ABOR - abort for data transfer? QUIT -FUPL - upload? -FDWL -GFCI -GFGI -SGID Internal ftp style commands: "-VER" - 200 9.2 01.06 "-FDAT folder/file" - 200 date=2003:10:08 16:57:06 for -FDAT. - 200 date=%s for -FDAT. "-INFO folder/file" - 200 %d byte W=%d H=%d K=%d for -INFO "-GSID" - 200 SD ID=%02x%02x%02x%02x%02x%02x%02x%02x for -GSID. "-GCID" - 451 -GCID command failure - 200 CameraID=%s for -GCID. "-TIME" - 200 %02d%02d/%02d/%02d %02d:%02d:%02d for -TIME. - 200 2003/10/11 19:47:23 for -TIME. "-NLST" - 150 data connection for -NLST. ... data blocks ... 250 -NLST command success. "-GTPN" - 200 TotalPhotoNo=%d for -GTPN. "-RTST" - 200 RTC status=%d for -RTST. "-DCAP /EXT0" - 200 /EXT0 capacity 63520768 byte,free 39043072 byte. "-SRET filename" - 150 %d byte Seek=%d W=%d H=%d S=%d for -SRET. ... bytes+seek image data ... 250 -SRET command success. => Downloads exif data, at seek position is the thumbnail. "-STOR size filename" - 150 ... ... data transfer ... 200 done Generic ftp style commands: "CWD folder" - 501 CWD command failure - 250 CWD command success. "RETR file" - 150 data connection for RETR.(%d) ... data , %d bytes ... 250 RETR command success. "DELE file" - 250 DELE command success. - 500 DELE command failure "RMD dir" - 250 RMD command success. - 500 RMD command failure "MKD dir" - 257 "%s" directory created. - 500 MKD command failure "RNFR name" "RNTO name" libgphoto2-2.5.9/camlibs/ricoh/g3.c0000644000175000001440000006135412610415617013724 00000000000000/* g3.c * * Copyright 2003 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif /* channel header: * * channel host/client length data checksum padding * 01 01 00 00 07 00 00 00 <7 byte> <1 byte> * */ static int g3_channel_read(GPPort *port, int *channel, char **buffer, int *len) { unsigned char xbuf[0x800]; int tocopy, ret, curlen; ret = gp_port_read(port, (char *)xbuf, 0x800); if (ret < GP_OK) { gp_log(GP_LOG_ERROR, "g3", "read error in g3_channel_read\n"); return ret; } if ((xbuf[2] != 0xff) && (xbuf[3] != 0xff)) { gp_log(GP_LOG_ERROR, "g3" ,"first bytes do not match.\n"); return GP_ERROR_IO; } *channel = xbuf[1]; *len = xbuf[4] + (xbuf[5]<<8) + (xbuf[6]<<16) + (xbuf[7]<<24); /* Safety buffer of 0x800 ... we can only read in 0x800 chunks, * otherwise the communication gets hickups. However *len might be * less. */ if (!*buffer) *buffer = malloc(*len + 1 + 0x800); else *buffer = realloc(*buffer, *len + 1 + 0x800); tocopy = *len; if (tocopy > 0x800-8) tocopy = 0x800-8; memcpy(*buffer, xbuf+8, tocopy); curlen = tocopy; while (curlen < *len) { ret = gp_port_read(port, *buffer + curlen, 0x800); if (ret < GP_OK) { gp_log(GP_LOG_ERROR, "g3", "read error in g3_channel_read\n"); return ret; } curlen += ret; } (*buffer)[*len] = 0x00; return GP_OK; } static int g3_channel_read_bytes( GPPort *port, int *channel, char **buffer, int expected, GPContext *context, const char *msg ) { unsigned char *xbuf; int id, ret, len, xlen = 0; if (!*buffer) *buffer = malloc (expected); else *buffer = realloc (*buffer, expected); xbuf = malloc(65536 + 12); id = gp_context_progress_start (context, expected, "%s", msg); /* The camera lets us read in packets of at least max 64kb size. */ while (expected > 0) { int rest = expected; if (rest > 65536) rest = 65536; rest = (rest + 9 + 3) & ~3; if (rest < 0x800) rest = 0x800; ret = gp_port_read(port, (char *)xbuf, rest); if (ret < GP_OK) { gp_log(GP_LOG_ERROR, "g3", "read error in g3_channel_read\n"); gp_context_progress_stop (context, id); free(xbuf); return ret; } if (ret != rest) { gp_log(GP_LOG_ERROR, "g3", "read error in g3_channel_read\n"); gp_context_progress_stop (context, id); free(xbuf); return ret; } if ((xbuf[2] != 0xff) || (xbuf[3] != 0xff)) { gp_log(GP_LOG_ERROR, "g3", "first bytes do not match.\n"); gp_context_progress_stop (context, id); free(xbuf); return GP_ERROR_IO; } len = xbuf[4] + (xbuf[5]<<8) + (xbuf[6]<<16) + (xbuf[7]<<24); *channel = xbuf[1]; if (len > expected) gp_log(GP_LOG_ERROR,"g3","len %d is > rest expected %d\n", len, expected); memcpy(*buffer+xlen, xbuf+8, len); expected -= len; xlen += len; gp_context_progress_update (context, id, xlen); } gp_context_progress_stop (context, id); free(xbuf); return GP_OK; } static int g3_channel_write(GPPort *port, int channel, char *buffer, int len) { unsigned char *xbuf; int ret = GP_OK, nlen, curlen = 0; while (len > 0) { int sendlen = len; if (sendlen>65536) sendlen = 65536; nlen = (4 + 4 + sendlen + 1 + 3) & ~3; xbuf = calloc(nlen,1); xbuf[0] = 1; xbuf[1] = channel; xbuf[2] = 0; xbuf[3] = 0; xbuf[4] = sendlen & 0xff; xbuf[5] = (sendlen>>8) & 0xff; xbuf[6] = (sendlen>>16) & 0xff; xbuf[7] = (sendlen>>24) & 0xff; memcpy(xbuf+8, buffer + curlen, sendlen); curlen += sendlen; xbuf[8+sendlen] = 0x03; ret = gp_port_write( port, (char*)xbuf, nlen); free(xbuf); if (ret < GP_OK) break; len -= sendlen; } return ret; } static int g3_ftp_command_and_reply(GPPort *port, char *cmd, char **reply) { int ret, channel, len; char *realcmd, *s; realcmd = malloc(strlen(cmd)+2+1);strcpy(realcmd, cmd);strcat(realcmd, "\r\n"); gp_log(GP_LOG_DEBUG, "g3" , "sending %s", cmd); ret = g3_channel_write(port, 1, realcmd, strlen(realcmd)); free(realcmd); if (ret < GP_OK) { gp_log (GP_LOG_ERROR, "g3", "ftp command write failed? %d\n", ret); return ret; } ret = g3_channel_read(port, &channel, reply, &len); if (ret < GP_OK) { gp_log (GP_LOG_ERROR, "g3", "ftp reply read failed? %d\n", ret); return ret; } s = strchr(*reply, '\r'); if (s) *s='\0'; gp_log(GP_LOG_DEBUG, "g3" , "reply %s", *reply); return GP_OK; } int camera_id (CameraText *id) { strcpy(id->text, "ricoh_g3"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); strcpy(a.model, "Ricoh:Caplio G3"); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_USB; a.usb_vendor = 0x5ca; a.usb_product = 0x2204; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_EXIF; a.folder_operations = GP_FOLDER_OPERATION_MAKE_DIR | GP_FOLDER_OPERATION_REMOVE_DIR ; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Caplio RR30"); a.usb_vendor = 0x5ca; a.usb_product = 0x2202; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Caplio 300G"); a.usb_vendor = 0x5ca; a.usb_product = 0x2203; gp_abilities_list_append(list, a); strcpy(a.model, "Medion:MD 6126"); a.usb_vendor = 0x5ca; a.usb_product = 0x2205; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Caplio G4"); a.usb_vendor = 0x5ca; a.usb_product = 0x2208; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Capilo RX"); a.usb_vendor = 0x5ca; a.usb_product = 0x220b; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Caplio GX"); a.usb_vendor = 0x5ca; a.usb_product = 0x220c; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Caplio R1"); a.usb_vendor = 0x5ca; a.usb_product = 0x220d; gp_abilities_list_append(list, a); /* same id as above */ strcpy(a.model, "Ricoh:Caplio RZ1"); a.usb_vendor = 0x5ca; a.usb_product = 0x220d; gp_abilities_list_append(list, a); strcpy(a.model, "Sea & Sea:5000G"); a.usb_vendor = 0x5ca; a.usb_product = 0x220e; gp_abilities_list_append(list, a); strcpy(a.model, "Rollei:dr5"); a.usb_vendor = 0x5ca; a.usb_product = 0x220f; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Caplio R1v"); a.usb_vendor = 0x5ca; a.usb_product = 0x2212; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Caplio R2"); a.usb_vendor = 0x5ca; a.usb_product = 0x2213; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Caplio GX 8"); a.usb_vendor = 0x5ca; a.usb_product = 0x2214; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Caplio R3"); a.usb_vendor = 0x5ca; a.usb_product = 0x2216; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Caplio R4"); a.usb_vendor = 0x5ca; a.usb_product = 0x2217; gp_abilities_list_append(list, a); strcpy(a.model, "Ricoh:Caplio R5"); a.usb_vendor = 0x5ca; a.usb_product = 0x221a; gp_abilities_list_append(list, a); return (GP_OK); } static int g3_cwd_command( GPPort *port, const char *folder) { char *cmd, *reply = NULL; int ret; cmd = malloc(strlen("CWD ") + strlen(folder) + 2 + 1); sprintf(cmd,"CWD %s", folder); ret = g3_ftp_command_and_reply(port, cmd, &reply); free(cmd); if (ret < GP_OK) { if (reply) free(reply); return ret; } if (reply[0]=='5') /* Failed, most likely no such directory */ ret = GP_ERROR_DIRECTORY_NOT_FOUND; free(reply); return ret; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; char *buf = NULL, *reply = NULL, *cmd =NULL, *msg = NULL; int ret, channel, bytes, seek, len; ret = g3_cwd_command (camera->port, folder); if (ret < GP_OK) goto out; switch (type) { case GP_FILE_TYPE_NORMAL: msg = _("Downloading..."); if (strstr(filename,"AVI") || strstr(filename,"avi")) msg = _("Downloading movie..."); if (strstr(filename,"jpg") || strstr(filename,"JPG") || strstr(filename,"tif") || strstr(filename,"TIF") ) msg = _("Downloading image..."); if (strstr(filename,"wav") || strstr(filename,"WAV")) msg = _("Downloading audio..."); cmd = malloc(strlen("RETR ") + strlen(filename) + 2 + 1); sprintf(cmd,"RETR %s", filename); ret = g3_ftp_command_and_reply(camera->port, cmd, &buf); free(cmd); if (ret < GP_OK) goto out; if (buf[0] != '1') { /* error, most likely file not found */ ret = GP_ERROR_FILE_NOT_FOUND; goto out; } bytes = 0; sscanf(buf, "150 data connection for RETR.(%d)", &bytes); break; case GP_FILE_TYPE_EXIF: msg = _("Downloading EXIF data..."); if (!strstr(filename,".JPG") && !strstr(filename,".jpg")) { gp_context_error (context,_("No EXIF data available for %s."), filename); ret = GP_ERROR_FILE_NOT_FOUND; goto out; } cmd = malloc(strlen("-SRET ") + strlen(filename) + 2 + 1); sprintf(cmd,"-SRET %s", filename); ret = g3_ftp_command_and_reply(camera->port, cmd, &buf); free(cmd); if (ret < GP_OK) goto out; if (buf[0] != '1') { /* error, most likely file not found */ ret = GP_ERROR_FILE_NOT_FOUND; goto out; } bytes = seek = 0; sscanf(buf, "150 %d byte Seek=%d", &bytes, &seek); if (seek == -2) { /* FIXME: pretty bad, the camera has some time out problems * if this happens */ gp_context_error (context,_("No EXIF data available for %s."), filename); ret = GP_ERROR_FILE_NOT_FOUND; g3_channel_read(camera->port, &channel, &reply, &len); /* reply */ goto out; } bytes += seek; break; default: return GP_ERROR_NOT_SUPPORTED; } ret = g3_channel_read_bytes(camera->port, &channel, &buf, bytes, context, msg); if (ret < GP_OK) goto out; ret = g3_channel_read(camera->port, &channel, &reply, &len); /* reply */ if (ret < GP_OK) goto out; gp_log(GP_LOG_DEBUG, "g3" , "reply %s", reply); gp_file_set_data_and_size (file, buf, bytes); buf = NULL; /* now owned by libgphoto2 filesystem */ out: if (buf) free(buf); if (reply) free(reply); return (GP_OK); } #if 0 /* Works to some degree, but the firmware on the camera is not really happy * with it and sometimes refuses to send data the correct way */ static int put_file_func (CameraFilesystem *fs, const char *folder, const char *fn, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; char *buf = NULL, *reply = NULL, *cmd =NULL; const char *imgdata = NULL; int ret, channel, len; long size; ret = g3_cwd_command (camera->port, folder); if (ret < GP_OK) goto out; ret = gp_file_get_data_and_size (file, &imgdata, &size); if (ret < GP_OK) goto out; cmd = malloc(strlen("-STOR ") + 20 + strlen(fn) + 2 + 1); sprintf(cmd,"-STOR %ld %s", size, fn); ret = g3_ftp_command_and_reply(camera->port, cmd, &buf); free(cmd); if (ret < GP_OK) goto out; if (buf[0] != '1') { /* error, most likely file not found */ ret = GP_ERROR; goto out; } ret = g3_channel_write(camera->port, 2, (char*)imgdata, size); /* data */ if (ret < GP_OK) goto out; ret = g3_channel_read(camera->port, &channel, &reply, &len); /* reply */ if (ret < GP_OK) goto out; out: if (buf) free(buf); if (reply) free(reply); return (GP_OK); } #endif static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; char *reply = NULL, *cmd = NULL; int ret; ret = g3_cwd_command (camera->port, folder); if (ret < GP_OK) return ret; cmd = malloc(strlen("DELE ")+strlen(filename)+1); if (!cmd) return GP_ERROR_NO_MEMORY; sprintf(cmd,"DELE %s",filename); ret = g3_ftp_command_and_reply(camera->port, cmd, &reply); if (ret < GP_OK) goto out; if (reply[0] == '5') { gp_context_error (context, _("Could not delete file.")); ret = GP_ERROR; } out: free(cmd); free(reply); return (GP_OK); } static int rmdir_func (CameraFilesystem *fs, const char *folder, const char *name, void *data, GPContext *context) { Camera *camera = data; char *reply = NULL, *cmd = NULL; int ret; ret = g3_cwd_command (camera->port, folder); if (retport, cmd, &reply); if (ret < GP_OK) goto out; if (reply[0] == '5') { gp_context_error (context, _("Could not remove directory.")); ret = GP_ERROR; } out: free(cmd); free(reply); return (GP_OK); } static int mkdir_func (CameraFilesystem *fs, const char *folder, const char *name, void *data, GPContext *context) { Camera *camera = data; char *reply = NULL, *cmd = NULL; int ret; ret = g3_cwd_command (camera->port, folder); if (retport, cmd, &reply); if (ret < GP_OK) goto out; if (reply[0] == '5') { gp_context_error (context, _("Could not create directory.")); ret = GP_ERROR; } out: free(cmd); free(reply); return (GP_OK); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { char *t = summary->text; int ret; char *buf = NULL; t[0]='\0'; ret = g3_ftp_command_and_reply (camera->port, "-VER", &buf); if (ret == GP_OK) sprintf(t+strlen(t), _("Version: %s\n"), buf+4); /* skip "200 " */ ret = g3_ftp_command_and_reply(camera->port, "-RTST", &buf); /* RTC test */ if (ret == GP_OK) { int rtcstat; if (sscanf(buf, "200 RTC status=%d", &rtcstat)) sprintf(t+strlen(t), _("RTC Status: %d\n"), rtcstat); } ret = g3_ftp_command_and_reply(camera->port, "-TIME", &buf); if (ret == GP_OK) { char day[20], time[20]; if (sscanf(buf, "200 %s %s for -TIME", day, time)) sprintf(t+strlen(t), _("Camera time: %s %s\n"), day, time); } ret = g3_ftp_command_and_reply(camera->port, "-GCID", &buf); if (ret == GP_OK) { char camid[40]; if (sscanf(buf, "200 CameraID=%s for -GCID", camid)) sprintf(t+strlen(t), _("Camera ID: %s\n"), camid); } ret = g3_ftp_command_and_reply(camera->port, "-GSID", &buf); if (ret == GP_OK) { char cardid[40]; if (strstr(buf, "200 SD ID= for -GSID")) { sprintf(t+strlen(t), _("No SD Card inserted.\n")); } else { if (sscanf(buf, "200 SD ID=%s for -GSID", cardid)) { sprintf(t+strlen(t), _("SD Card ID: %s\n"), cardid); } } } ret = g3_ftp_command_and_reply(camera->port, "-GTPN", &buf); if (ret == GP_OK) { int total; if (sscanf (buf, "200 TotalPhotoNo=%d for -GTPN", &total)) sprintf(t+strlen(t), _("Photos on camera: %d\n"), total); } ret = g3_ftp_command_and_reply(camera->port, "-DCAP /EXT0", &buf); if (ret == GP_OK) { int space, sfree; if (sscanf (buf, "200 /EXT0 capacity %d byte,free %d byte.", &space, &sfree)) { sprintf(t+strlen(t), _("SD memory: %d MB total, %d MB free.\n"), space/1024/1024, sfree/1024/1024); } } ret = g3_ftp_command_and_reply(camera->port, "-DCAP /IROM", &buf); if (ret == GP_OK) { int space, sfree; if (sscanf (buf, "200 /IROM capacity %d byte,free %d byte.", &space, &sfree)) { sprintf(t+strlen(t), _("Internal memory: %d MB total, %d MB free.\n"), space/1024/1024, sfree/1024/1024); } } free (buf); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" )); return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int ret, bytes, width, height, k; struct tm xtm; char *cmd = NULL, *reply = NULL; info->file.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE; strcpy(info->file.type,GP_MIME_UNKNOWN); if (!strcmp(filename+9,"JPG") || !strcmp(filename+9,"jpg")) strcpy(info->file.type,GP_MIME_JPEG); if (!strcmp(filename+9,"AVI") || !strcmp(filename+9,"avi")) strcpy(info->file.type,GP_MIME_AVI); if (!strcmp(filename+9,"WAV") || !strcmp(filename+9,"wav")) strcpy(info->file.type,GP_MIME_WAV); if (!strcmp(filename+9,"MTA") || !strcmp(filename+9,"mta")) strcpy(info->file.type,"text/plain"); cmd = malloc(strlen("-FDAT ")+strlen(folder)+1+strlen(filename)+1); if (!cmd) return GP_ERROR_NO_MEMORY; sprintf(cmd, "-FDAT %s/%s", folder,filename); ret = g3_ftp_command_and_reply(camera->port, cmd, &reply); if (ret < GP_OK) goto out; if (sscanf(reply, "200 date=%d:%d:%d %d:%d:%d", &xtm.tm_year, &xtm.tm_mon, &xtm.tm_mday, &xtm.tm_hour, &xtm.tm_min, &xtm.tm_sec )) { xtm.tm_mon--; /* range 0 - 11 */ xtm.tm_year -= 1900; /* number of years since 1900 */ info->file.mtime = mktime(&xtm); info->file.fields |= GP_FILE_INFO_MTIME; } /* -INFO command only sometimes work on non jpeg/avi files */ if ( !strcmp(info->file.type,GP_MIME_JPEG) || !strcmp(info->file.type,GP_MIME_AVI) ) { sprintf(cmd, "-INFO %s/%s", folder,filename); ret = g3_ftp_command_and_reply(camera->port, cmd, &reply); if (ret < GP_OK) goto out; /* 200 1330313 byte W=2048 H=1536 K=0 for -INFO */ if (sscanf(reply, "200 %d byte W=%d H=%d K=%d for -INFO", &bytes, &width, &height , &k)) { if (width != 0 && height != 0) { info->file.fields |= GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT; info->file.height = height; info->file.width = width; } info->file.fields |= GP_FILE_INFO_SIZE; info->file.size = bytes; if (k != 0) gp_log(GP_LOG_ERROR, "g3", "k is %d for %s/%s\n", k, folder,filename); } } out: free(reply); free(cmd); return (GP_OK); } static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; char *buf = NULL, *reply = NULL; char *cmd = NULL; int ret = GP_OK, channel, len, rlen; if (!strcmp("/",folder)) { /* Lets hope they dont invent other names. */ /* We check the folder we get, since we should * not add EXT0 without SD card. */ ret = g3_ftp_command_and_reply(camera->port, "-NLST /", &buf); if (ret < GP_OK) goto out; if (buf[0] == '4') { /* seen with R3: 450 Open Error... likely OK. */ goto out; } if (buf[0] != '1') { ret = GP_ERROR_IO; goto out; } ret = g3_channel_read(camera->port, &channel, &buf, &len); /* data. */ if (ret < GP_OK) goto out; ret = g3_channel_read(camera->port, &channel, &reply, &rlen); /* next reply */ if (ret < GP_OK) goto out; gp_log(GP_LOG_DEBUG, "g3" , "reply %s", reply); if (!strcmp("/EXT0",buf)) gp_list_append (list, "EXT0", NULL); /* always add internal memory */ gp_list_append (list, "IROM", NULL); return GP_OK; } cmd = malloc(6 + strlen(folder) + 1); strcpy(cmd, "-NLST "); strcat(cmd, folder); ret = g3_ftp_command_and_reply(camera->port, cmd, &buf); free(cmd);cmd = NULL; if (ret < GP_OK) goto out; if (buf[0] == '1') { /* 1xx means another reply follows */ int n = 0; ret = g3_channel_read(camera->port, &channel, &buf, &len); /* data. */ if (ret < GP_OK) goto out; g3_channel_read(camera->port, &channel, &reply, &rlen); /* next reply */ if (ret < GP_OK) goto out; gp_log(GP_LOG_DEBUG, "g3" , "reply %s", reply); for (n=0;n UNIX time conversion */ static int day_n[] = { 0,31,59,90,120,151,181,212,243,273,304,334,0,0,0,0 }; static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; char *buf = NULL, *reply = NULL, *cmd; int ret = GP_OK; unsigned char *ubuf; cmd = malloc(6 + strlen(folder) + 1); strcpy(cmd, "-NLST "); strcat(cmd, folder); ret = g3_ftp_command_and_reply(camera->port, cmd, (char**)&buf); free(cmd); cmd = NULL; if (ret < GP_OK) goto out; if (buf[0] == '1') { /* 1xx means another reply follows */ int n = 0, channel, len, rlen; ret = g3_channel_read(camera->port, &channel, &buf, &len); /* data. */ if (ret < GP_OK) goto out; ret = g3_channel_read(camera->port, &channel, &reply, &rlen); /* next reply */ if (ret < GP_OK) goto out; gp_log(GP_LOG_DEBUG, "g3" , "reply %s", reply); ubuf = (unsigned char*)buf; for (n=0;n < len/32;n++) { if (buf[n*32+11] == 0x20) { CameraFileInfo info; char xfn[13]; int date, time, month, year; strncpy (xfn, buf+n*32, 8); xfn[8] = '.'; strncpy (xfn+9, buf+n*32+8, 3); xfn[8+1+3] = '\0'; ret = gp_filesystem_append (fs, folder, xfn, context); if (ret < GP_OK) goto out; /* we also get parts of fs info for free, so just set it */ info.file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_MTIME; info.file.size =(ubuf[n*32+28]<<24)| (ubuf[n*32+29]<<16)| (ubuf[n*32+30]<< 8)| (ubuf[n*32+31] ); if (!strcmp(xfn+9,"JPG") || !strcmp(xfn+9,"jpg")) { strcpy(info.file.type,GP_MIME_JPEG); info.file.fields |= GP_FILE_INFO_TYPE; } if (!strcmp(xfn+9,"AVI") || !strcmp(xfn+9,"avi")) { strcpy(info.file.type,GP_MIME_AVI); info.file.fields |= GP_FILE_INFO_TYPE; } if (!strcmp(xfn+9,"WAV") || !strcmp(xfn+9,"wav")) { strcpy(info.file.type,GP_MIME_WAV); info.file.fields |= GP_FILE_INFO_TYPE; } if (!strcmp(xfn+9,"MTA") || !strcmp(xfn+9,"mta")) { strcpy(info.file.type,"text/plain"); info.file.fields |= GP_FILE_INFO_TYPE; } info.preview.fields = 0; date = (ubuf[n*32+16]) | (ubuf[n*32+17]<<8); time = (ubuf[n*32+14]) | (ubuf[n*32+15]<<8); /* from kernel fs/fat/, time_dos2unix. */ month = ((date >> 5) - 1) & 15; year = date >> 9; info.file.mtime = (time & 31)*2+60*((time >> 5) & 63)+ (time >> 11)*3600+86400*((date & 31)-1+ day_n[month]+(year/4)+year*365- ((year & 3) == 0 && month < 2 ? 1 : 0)+ 3653); ret = gp_filesystem_set_info_noop(fs, folder, xfn, info, context); } } } else { if (buf[0] == '4') /* 450 Open Error ... like dir not there */ ret = GP_OK; else ret = GP_ERROR_IO; } out: if (buf) free(buf); if (reply) free(reply); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .get_info_func = get_info_func, .folder_list_func = folder_list_func, .make_dir_func = mkdir_func, .remove_dir_func = rmdir_func, }; int camera_init (Camera *camera, GPContext *context) { /*char *buf;*/ GPPortSettings settings; /* First, set up all the needed function pointers */ camera->functions->summary = camera_summary; camera->functions->about = camera_about; /* Now, tell the filesystem where to get lists, files and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); gp_port_get_settings(camera->port, &settings); settings.usb.inep = 0x81; settings.usb.outep = 0x02; settings.usb.intep = 0x83; gp_port_set_settings(camera->port, settings); /* * The port is already provided with camera->port (and * already open). You just have to use functions like * gp_port_timeout_set, gp_port_settings_get, gp_port_settings_set. */ /* * Once you have configured the port, you should check if a * connection to the camera can be established. */ /* testing code ... buf = NULL; g3_ftp_command_and_reply(camera->port, "-PWOF STDBY", &buf); */ return (GP_OK); } libgphoto2-2.5.9/camlibs/ricoh/Makefile-files0000644000175000001440000000072612561423351016002 00000000000000EXTRA_DIST += ricoh/g3.txt ricoh/ChangeLog EXTRA_LTLIBRARIES += ricoh.la ricoh_la_SOURCES = ricoh/library.c ricoh/ricoh.c ricoh/ricoh.h ricoh/crctab.h ricoh_la_LDFLAGS = $(camlib_ldflags) ricoh_la_DEPENDENCIES = $(camlib_dependencies) ricoh_la_LIBADD = $(camlib_libadd) EXTRA_LTLIBRARIES += ricoh_g3.la ricoh_g3_la_SOURCES = ricoh/g3.c ricoh_g3_la_LDFLAGS = $(camlib_ldflags) ricoh_g3_la_DEPENDENCIES = $(camlib_dependencies) ricoh_g3_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/ricoh/ChangeLog0000644000175000001440000001361012561423351015010 000000000000002007-07-11 Marcus Meissner * g3.c: Added Ricoh Caplio R5 id. 2006-08-29 Marcus Meissner * g3.c: Added Ricoh Caplio R4 id. 2005-12-16 Marcus Meissner * g3.c: Added Ricoh Caplio R3. Adjusted directory handling with 450 returned for -NLST /IROM/. 2005-07-14 Marcus Meissner * g3.c: Added Ricoh Caplio GX 8. 2005-07-11 Marcus Meissner * g3.c: Added Ricoh R2 as reported. Added some casts to supress warnings. 2005-03-21 Marcus Meissner * g3.c: Added Ricoh 5000G (sea&sea edition). 2005-03-01 Marcus Meissner * g3.c: Split RZ1 and R1 entries to avoid slashes. 2005-02-13 Marcus Meissner * g3.c: Added Ricoh Caplio R1v as reported by Johannes Guenther. 2005-01-27 Marcus Meissner * g3.c: Added Ricoh Caplio R1 / RZ1 as reported. 2004-09-12 Marcus Meissner * g3.c: Added Ricoh Caplio RX as reported by Christoph Bauer. 2004-08-11 Marcus Meissner * g3.c: Get the mtime out of NLST, so we get the correct time without EXIF download. (might be off some hours). 2004-08-09 Marcus Meissner * g3.c: fixed buffer handling, we were overwriting unallocated memory with newer libusb. 2004-05-19 Hubert Figuiere * g3.c (camera_abilities): Camera is Medion MD 6126 2004-05-19 Marcus Meissner * g3.c: Martin Leopold reported the "Medion MD 6162" as working too. 2004-01-30 Marcus Meissner * g3.c: Added Caplio 300G model as reported. 2003-11-17 Marcus Meissner * g3.c: - Fixed camera access with removed SD card. - Handle more than 62 files in one directory. - Do not call -INFO for textfiles. - Try to read at least 0x800 byte to avoid confusing the remote USB stack. 2003-10-10 Marcus Meissner * g3.txt, g3.c, Makefile.am: Added new Ricoh Caplio G3 driver. Lots of thanks to Klaus Singvogel for lending me his camera over the weekend. Status: Directory Listing, download of images, exif data and audio, deleting files, creating and removing directories, summary report works. put file is possibly working too, but confuses the firmware and this driver a bit. 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 2002-07-20 Lutz Müller * library.c: * ricoh.[c,h]: Implement upload. 2002-07-16 Lutz Müller * ricoh.c: Simplify by using macros. 2002-07-16 Lutz Müller Patch by Martin Fischer : * ricoh.c (ricoh_set_date): Fix. 2002-07-16 Lutz Müller * library.c: The camera needs to be in record mode to set settings. 2002-07-16 Lutz Müller Patch from Martin Fischer : * ricoh.c: Bug Fixes. 2002-07-11 Lutz Müller * library.c: Initialize some variables to NULL. 2002-07-11 Lutz Müller * ricoh.c: Remove 3 direct calls to ricoh_send and ricoh_recv. 2002-07-10 Lutz Müller * library.c (camera_set_config): Fix bug (again). 2002-07-10 Lutz Müller * library.c (camera_set_config): Fix bug. 2002-07-10 Lutz Müller Patch by Martin Fischer : * ricoh.c (ricoh_get_pic_date): Corrected. * library.c (get_info_func): Implemented. 2002-07-05 Lutz Müller * ricoh.[c,h]: * library.c: More settings. 2002-07-02 LUtz Müller * ricoh.[c,h]: * library.c: Exposure setting. 2002-07-02 Lutz Müller Patch by Martin Fischer : * ricoh.c: * library.c: Some bug fixes. 2002-06-21 Lutz Müller * ricoh.[c,h]: * library.c: More settings. 2002-06-20 Lutz Müller * ricoh.[c,h] * library.c: First step towards support of settings. 2002-06-20 Lutz Müller * ricoh.h: * library.c: Support a couple of other models. 2002-06-20 Lutz Müller Lots of infos from Martin Fischer : * ricoh.[c,h] * library.c: Correct syntax and name of ricoh_connect and ricoh_bye. Fix typo in ricoh_get_pic_name. Remember the model that we get on ricoh_connect. 2002-06-19 Lutz Müller * ricoh.c: Flesh out ricoh_get_pic_date. 2002-06-19 Lutz Müller * ricoh.c: Simplify code by introducing ricoh_transmit. As a side effect, this should improve error recovery, too. 2002-06-18 Martin Fischer Patch adapted by Lutz Müller . * ricoh.[c,h] * library.c: The driver supports GP_FILE_OPERATION_PREVIEW. Support for Philips ESP80 was added. camera_about was added. 2002-03-14 Lutz Müller * ricoh.[c,h] * library.c: This driver supports GP_FILE_OPERATION_DELETE and GP_OPERATION_CAPTURE_IMAGE. Support for configuration is still missing. Awaiting patches... 2002-03-14 Lutz Müller * ricoh.[c,h] * library.c: Remove CameraPrivateLibrary. Sure, that introduces some communication overhead, but the code is cleaner this way. 2002-03-14 Lutz Müller Submitted by . I fixed indentation. * ricoh.[c,h] * library.c: Make the driver functional. 2002-01-31 Lutz Müller * ricoh.[c,h]: More functions ported. libgphoto2-2.5.9/camlibs/ricoh/ricoh.c0000644000175000001440000005362512610415536014521 00000000000000/* ricoh.c * * Copyright 2002 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include "ricoh.h" #include #include #include #include #include "crctab.h" #define GP_MODULE "ricoh" #define STX 0x02 /* start of text */ #define ETX 0x03 /* end of text */ #define ACK 0x06 /* acknowledge */ #define NAK 0x15 /* negative acknowledge */ #define ETB 0x17 /* end of transmission block */ #define DLE 0x10 /* datalink escape */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define CR(result) {int r_mac=(result); if (r_mac<0) return r_mac;} #define CRF(result,data) {int r_mac=(result); \ if (r_mac<0) {free (data); return r_mac;}} #define C_CMD(context,cmd,target) \ { \ if (cmd != target) { \ gp_context_error (context, _("Expected %i, got %i. Please "\ "report this error to %s."),\ cmd, target, MAIL_GPHOTO_DEVEL); \ return (GP_ERROR_CORRUPTED_DATA); \ } \ } #define C_LEN(context,len,target) \ { \ if (len != target) { \ gp_context_error (context, _("Expected "\ "%i bytes, got %i. " \ "Please report this error to " \ "%s."), \ target, len, MAIL_GPHOTO_DEVEL); \ return (GP_ERROR_CORRUPTED_DATA); \ } \ } #ifndef HAVE_TM_GMTOFF /* required for time conversions in canon_int_set_time() */ extern long int timezone; #endif static int ricoh_send (Camera *camera, GPContext *context, unsigned char cmd, unsigned char number, const unsigned char *data, unsigned char len) { unsigned char buf[6]; unsigned int i, w, crc = 0; int timeout; /* First, make sure there is no data coming from the camera. */ CR (gp_port_get_timeout (camera->port, &timeout)); CR (gp_port_set_timeout (camera->port, 20)); while (gp_port_read (camera->port, (char *)buf, 1) >= 0); CR (gp_port_set_timeout (camera->port, timeout)); /* Write header */ buf[0] = DLE; buf[1] = STX; buf[2] = cmd; buf[3] = len; CR (gp_port_write (camera->port, (char *)buf, 4)); crc = updcrc (cmd, crc); crc = updcrc (len, crc); /* * Write data (escape DLE). * * w ... bytes written */ w = 0; while (w < len) { for (i = w; i < len; i++) { crc = updcrc (data[i], crc); if (data[i] == 0x10) { i++; break; } } CR (gp_port_write (camera->port, (char *)data + w, i - w)); if (data[i - 1] == 0x10) CR (gp_port_write (camera->port, "\x10", 1)); w = i; } /* Write footer */ buf[0] = DLE; buf[1] = ETX; buf[2] = crc >> 0; buf[3] = crc >> 8; buf[4] = len + 2; buf[5] = number; CR (gp_port_write (camera->port, (char *)buf, 6)); return (GP_OK); } static int ricoh_send_ack (Camera *camera, GPContext *context) { CR (gp_port_write (camera->port, "\x10\x06", 2)); return (GP_OK); } static int ricoh_send_nack (Camera *camera, GPContext *context) { CR (gp_port_write (camera->port, "\x10\x15", 2)); return (GP_OK); } static int ricoh_recv (Camera *camera, GPContext *context, unsigned char *cmd, unsigned char *number, unsigned char *data, unsigned char *len) { unsigned char buf[6]; unsigned char r, i, ii, last_dle; unsigned int crc = 0; for (ii = 0; ; ii++) { crc = 0; /* * Get header (DLE,STX). If we receive (DLE,ACK), just * drop that and read on. */ for (i = 0, buf[1] = ACK; i < 4; i++) { CR (gp_port_read (camera->port, (char *)buf, 2)); if (buf[0] != DLE) { gp_context_error (context, _("We expected " "0x%x but received 0x%x. Please " "contact %s."), DLE, buf[0], MAIL_GPHOTO_DEVEL); return (GP_ERROR_CORRUPTED_DATA); } if (buf[1] != ACK) break; } switch (buf[1]) { case STX: break; case NAK: default: gp_context_error (context, _("We expected " "0x%x but received 0x%x. Please " "contact %s."), STX, buf[1], MAIL_GPHOTO_DEVEL); return GP_ERROR_CORRUPTED_DATA; } CR (gp_port_read (camera->port, (char *)cmd, 1)); CR (gp_port_read (camera->port, (char *)len, 1)); crc = updcrc (*cmd, crc); crc = updcrc (*len, crc); /* * Get data (check for DLEs). * r ... number of bytes received */ r = 0; last_dle = 0; while (r < *len) { CR (gp_port_read (camera->port, (char *)data + r, *len - r)); if (last_dle) { r++; last_dle = 0; } for (i = r; i < *len; i++) { if (data[r] == DLE) { if (i + 1 != *len && data[r + 1] != DLE) { gp_context_error (context, _("Bad characters " "(0x%x, 0x%x). Please " "contact %s."), data[r], data[r + 1], MAIL_GPHOTO_DEVEL); return (GP_ERROR_CORRUPTED_DATA); } memmove (&data[r], &data[r +1], *len - i - 1); i++; } crc = updcrc (data[r], crc); if (i != *len) r++; else last_dle = 1; } } /* Get footer */ CR (gp_port_read (camera->port, (char *)buf, 6)); if ((buf[0] != DLE) || (buf[1] != ETX && buf[1] != ETB)) return (GP_ERROR_CORRUPTED_DATA); /* CRC correct? If not, retry. */ if ((buf[2] != (crc & 0xff)) || (buf[3] != (crc >> 8 & 0xff)) || (buf[4] != *len + 2)) { GP_DEBUG ("CRC error. Retrying..."); CR (ricoh_send_nack (camera, context)); continue; } /* Acknowledge the packet. */ CR (ricoh_send_ack (camera, context)); /* If camera is busy, try again (but at most 4 times). */ if ((*len == 3) && (data[0] == 0x00) && (data[1] == 0x04) && (data[2] == 0xff)) { if (ii >= 4) { gp_context_error (context, _("Camera busy. " "If the problem persists, please " "contact %s."), MAIL_GPHOTO_DEVEL); return (GP_ERROR); } continue; } /* Everything is ok. Break out of loop. */ break; } /* Sequence number */ if (number) *number = buf[5]; return (GP_OK); } static int ricoh_transmit (Camera *camera, GPContext *context, unsigned char cmd, const unsigned char *data, unsigned char len, unsigned char *ret_data, unsigned char *ret_len) { unsigned char ret_cmd; unsigned int r = 0; int result; while (1) { CR (ricoh_send (camera, context, cmd, 0, data, len)); result = ricoh_recv (camera, context, &ret_cmd, NULL, ret_data, ret_len); switch (result) { case GP_ERROR_TIMEOUT: if (++r > 2) { gp_context_error (context, _("Timeout " "even after 2 retries. Please " "contact %s."), MAIL_GPHOTO_DEVEL); return (GP_ERROR_TIMEOUT); } GP_DEBUG ("Timeout! Retrying..."); continue; default: CR (result); } /* Check if the answer is for our command. */ if (cmd != ret_cmd) { GP_DEBUG ("Commands differ (expected 0x%02x, " "got 0x%02x)!", cmd, ret_cmd); if (++r > 2) { gp_context_error (context, _("Communication " "error even after 2 retries. Please " "contact %s."), MAIL_GPHOTO_DEVEL); return (GP_ERROR); } continue; } /* Check if the camera reported success. */ if ((*ret_len >= 2) && (ret_data[0] == 0x00) && (ret_data[1] == 0x00)) break; /* Check if the camera reported success, 2nd version. */ if ((*ret_len == 3) && (ret_data[0] == 0x00) && (ret_data[1] == 0x06) && (ret_data[2] == 0xff)) break; /* If camera is busy, try again (but at most 4 times). */ if ((*ret_len == 3) && (ret_data[0] == 0x00) && (ret_data[1] == 0x04) && (ret_data[2] == 0xff)) { if (++r >= 4) { gp_context_error (context, _("Camera busy. " "If the problem persists, please " "contact %s."), MAIL_GPHOTO_DEVEL); return (GP_ERROR); } continue; } /* * It could be that the camera is in the wrong mode to * execute this command. */ if ((*ret_len == 2) && (ret_data[0] == 0x06) && (ret_data[1] == 0x00)) { gp_context_error (context, _("Camera is in wrong " "mode. Please contact " "%s."), MAIL_GPHOTO_DEVEL); return (GP_ERROR); } /* Invalid parameters? */ if ((*ret_len == 2) && (ret_data[0] == 0x04) && (ret_data[1] == 0x00)) { gp_context_error (context, _("Camera did not " "accept the parameters. Please contact " "%s."), MAIL_GPHOTO_DEVEL); return (GP_ERROR); } gp_context_error (context, _("An unknown error occurred. " "Please contact %s."), MAIL_GPHOTO_DEVEL); return (GP_ERROR); } /* Success! We don't need the first two bytes any more. */ *ret_len -= 2; if (*ret_len > 0) memmove (ret_data, ret_data + 2, *ret_len); return (GP_OK); } int ricoh_get_pic_size (Camera *camera, GPContext *context, unsigned int n, uint64_t *size) { unsigned char p[3], buf[0xff], len; GP_DEBUG ("Getting size of picture %i...", n); p[0] = 0x04; p[1] = n >> 0; p[2] = n >> 8; CR (ricoh_transmit (camera, context, 0x95, p, 3, buf, &len)); C_LEN (context, len, 4); if (size) *size = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0] << 0; return (GP_OK); } #define B2H( bcd ) ((bcd>>4)*10+(bcd&0xF)) int ricoh_get_pic_date (Camera *camera, GPContext *context, unsigned int n, time_t *date) { unsigned char p[3], buf[0xff], len; struct tm time; GP_DEBUG ("Getting date of picture %i...", n); p[0] = 0x03; p[1] = n >> 0; p[2] = n >> 8; CR (ricoh_transmit (camera, context, 0x95, p, 3, buf, &len)); C_LEN (context, len, 7); if (date) { time.tm_year = B2H (buf[1]); /* correct for Y2K in case older images are read */ if (time.tm_year < 90) time.tm_year += 100; time.tm_mon = B2H (buf[2]) - 1; time.tm_mday = B2H (buf[3]); time.tm_hour = B2H (buf[4]); time.tm_min = B2H (buf[5]); time.tm_sec = B2H (buf[6]); time.tm_isdst = -1; *date = mktime (&time); } return (GP_OK); } int ricoh_get_pic_name (Camera *camera, GPContext *context, unsigned int n, const char **name) { unsigned char p[3], len; static unsigned char buf[0xff]; GP_DEBUG ("Getting name of picture %i...", n); p[0] = 0x00; p[1] = n >> 0; p[2] = n >> 8; CR (ricoh_transmit (camera, context, 0x95, p, 3, buf, &len)); if (name && *name) { *name = (char *)buf; buf[len] = '\0'; } return (GP_OK); } int ricoh_get_pic_memo (Camera *camera, GPContext *context, unsigned int n, const char **memo) { unsigned char p[3], len; static unsigned char buf[0xff]; GP_DEBUG ("Getting memo of picture %i...", n); p[0] = 0x02; p[1] = n >> 0; p[2] = n >> 8; CR (ricoh_transmit (camera, context, 0x95, p, 3, buf, &len)); if (memo && *memo) { *memo = (char *)buf; buf[len] = '\0'; } return (GP_OK); } int ricoh_del_pic (Camera *camera, GPContext *context, unsigned int n) { unsigned char p[2], buf[0xff], len; GP_DEBUG ("Deleting picture %i...", n); /* Put camera in delete mode */ CR (ricoh_transmit (camera, context, 0x97, NULL, 0, buf, &len)); C_LEN (context, len, 0); /* Find and send picture to delete */ p[0] = n >> 0; p[1] = n >> 8; CR (ricoh_transmit (camera, context, 0x93, p, 2, buf, &len)); C_LEN (context, len, 0); CR (ricoh_transmit (camera, context, 0x92, p, 2, buf, &len)); C_LEN (context, len, 0); return (GP_OK); } int ricoh_get_num (Camera *camera, GPContext *context, unsigned int *n) { unsigned char p[2], buf[0xff], len; GP_DEBUG ("Getting number of pictures..."); p[0] = 0x00; p[1] = 0x01; CR (ricoh_transmit (camera, context, 0x51, p, 2, buf, &len)); C_LEN (context, len, 2); if (n) *n = (buf[1] << 8) | buf[0]; return (GP_OK); } int ricoh_set_speed (Camera *camera, GPContext *context, RicohSpeed speed) { unsigned char p[1], buf[0xff], len; p[0] = speed; CR (ricoh_transmit (camera, context, 0x32, p, 1, buf, &len)); C_LEN (context, len, 0); /* Wait for camera to switch speed. */ sleep (1); return (GP_OK); } int ricoh_connect (Camera *camera, GPContext *context, RicohModel *model) { unsigned char p[3], buf[0xff], len; p[0] = 0x00; p[1] = 0x00; p[2] = 0x00; CR (ricoh_transmit (camera, context, 0x31, p, 3, buf, &len)); C_LEN (context, len, 4); /* Model */ if (model) *model = (buf[0] << 8) | buf[1]; /* No idea what buf[2] and buf[3] contain. */ return (GP_OK); } int ricoh_disconnect (Camera *camera, GPContext *context) { unsigned char buf[0xff], len; CR (ricoh_transmit (camera, context, 0x37, NULL, 0, buf, &len)); C_LEN (context, len, 2); return (GP_OK); } static unsigned char header[236] = { 0x49,0x49,0x2a,0x00,0x08,0x00,0x00,0x00,0x0c,0x00,0x00,0x01,0x03,0x00, 0x01,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x01,0x01,0x03,0x00,0x01,0x00, 0x00,0x00,0x3c,0x00,0x00,0x00,0x02,0x01,0x03,0x00,0x03,0x00,0x00,0x00, 0x9e,0x00,0x00,0x00,0x03,0x01,0x03,0x00,0x01,0x00,0x00,0x00,0x01,0x00, 0x00,0x00,0x06,0x01,0x03,0x00,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00, 0x11,0x01,0x04,0x00,0x01,0x00,0x00,0x00,0xec,0x00,0x00,0x00,0x15,0x01, 0x03,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x17,0x01,0x04,0x00, 0x01,0x00,0x00,0x00,0x80,0x25,0x00,0x00,0x1c,0x01,0x03,0x00,0x01,0x00, 0x00,0x00,0x01,0x00,0x00,0x00,0x11,0x02,0x05,0x00,0x03,0x00,0x00,0x00, 0xa4,0x00,0x00,0x00,0x12,0x02,0x03,0x00,0x02,0x00,0x00,0x00,0x02,0x00, 0x01,0x00,0x14,0x02,0x05,0x00,0x06,0x00,0x00,0x00,0xbc,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0xe0,0xd0,0x22,0x13, 0x00,0x00,0x00,0x40,0x80,0x68,0x91,0x25,0x00,0x00,0x00,0x40,0xa8,0xc6, 0x4b,0x07,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, 0x00,0x00,0xe0,0x1f,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x10,0x00,0x00, 0x20,0x00,0x00,0x00,0xe0,0x1f,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x10, 0x00,0x00,0x20,0x00,0x00,0x00,0xe0,0x1f,0x00,0x00,0x20,0x00 }; int ricoh_get_pic (Camera *camera, GPContext *context, unsigned int n, RicohFileType type, unsigned char **data, unsigned int *size) { unsigned char p[2], cmd, buf[0xff], len; unsigned int r, header_len; RicohMode mode; GP_DEBUG ("Getting image %i as %s...", n, (type==RICOH_FILE_TYPE_PREVIEW ? "thumbnail":"image")); /* Put camera into play mode, if not already */ CR (ricoh_get_mode (camera, context, &mode)); if (mode != RICOH_MODE_PLAY) CR (ricoh_set_mode (camera, context, RICOH_MODE_PLAY)); /* Send picture number */ p[0] = n >> 0; p[1] = n >> 8; CR (ricoh_transmit (camera, context, (unsigned char) type, p, 2, buf, &len)); C_LEN (context, len, 16); /* * Allocate the necessary memory. Note that previews are 80x60 pixels * raw TIFF data, we therefore need to allocate some extra memory * for the TIFF header. */ header_len = (type == RICOH_FILE_TYPE_PREVIEW) ? sizeof (header) : 0; *size = buf[15] << 24 | buf[14] << 16 | buf[13] << 8 | buf[12]; *size += header_len; *data = malloc (*size); if (!*data) return (GP_ERROR_NO_MEMORY); /* * Receive data. * r ... number of bytes received */ for (r = 0; r < (*size) - header_len; r += len) { CRF (ricoh_recv (camera, context, &cmd, NULL, *data + header_len + r, &len), *data); C_CMD (context, cmd, 0xa2); } /* In case of previews, copy over the TIFF header. */ if (type == RICOH_FILE_TYPE_PREVIEW) memcpy (*data, header, header_len); return (GP_OK); } int ricoh_get_date (Camera *camera, GPContext *context, time_t *date) { unsigned char p[1], buf[0xff], len; struct tm time; p[0] = 0x0a; CR (ricoh_transmit (camera, context, 0x51, p, 1, buf, &len)); /* the camera only supplies 2 digits for year, so I will * make the assumption that if less than 90, then it is * year 2000 or greater */ time.tm_year = ((buf[1] & 0xf0) >> 4) * 10 + (buf[1] & 0xf); if(time.tm_year < 90) time.tm_year += 100; time.tm_mon = ((buf[2] & 0xf0) >> 4) * 10 + (buf[2] & 0xf) - 1; time.tm_mday = ((buf[3] & 0xf0) >> 4) * 10 + (buf[3] & 0xf); time.tm_hour = ((buf[4] & 0xf0) >> 4) * 10 + (buf[4] & 0xf); time.tm_min = ((buf[5] & 0xf0) >> 4) * 10 + (buf[5] & 0xf); time.tm_sec = ((buf[6] & 0xf0) >> 4) * 10 + (buf[6] & 0xf); time.tm_isdst = -1; *date = mktime (&time); return (GP_OK); } #ifdef HEX # undef HEX #endif #define HEX(x) (((x)/10)<<4)+((x)%10) int ricoh_set_date (Camera *camera, GPContext *context, time_t time) { unsigned char p[8], buf[0xff], len; struct tm *t; p[0] = 0x0a; /* Call localtime() to get 'extern long timezone' */ t = localtime (&time); #ifdef HAVE_TM_GMTOFF time += t->tm_gmtoff; #else time += timezone; #endif t = localtime (&time); GP_DEBUG ("ricoh_set_date: converted time to localtime %s " "(timezone is %ld)", asctime (t), timezone); p[1] = HEX (t->tm_year / 100 + 19); p[2] = HEX (t->tm_year % 100); p[3] = HEX (t->tm_mon + 1); p[4] = HEX (t->tm_mday); p[5] = HEX (t->tm_hour); p[6] = HEX (t->tm_min); p[7] = HEX (t->tm_sec); CR (ricoh_transmit (camera, context, 0x50, p, 8, buf, &len)); return (GP_OK); } /* get the cameras memory size */ int ricoh_get_cam_mem (Camera *camera, GPContext *context, int *size) { unsigned char p[2], buf[0xff], len; p[0] = 0x00; p[1] = 0x05; CR (ricoh_transmit (camera, context, 0x51, p, 2, buf, &len)); C_LEN (context, len, 4); if (size) *size = buf[3] << 24 | buf[2] << 16 | buf[1] << 8 | buf[0]; return (GP_OK); } /* get the cameras available memory size */ int ricoh_get_cam_amem (Camera *camera, GPContext *context, int *size) { unsigned char p[2], buf[0xff], len; p[0] = 0x00; p[1] = 0x06; CR (ricoh_transmit (camera, context, 0x51, p, 2, buf, &len)); C_LEN (context, len, 4); if (size) *size = buf[3] << 24 | buf[2] << 16 | buf[1] << 8 | buf[0]; return (GP_OK); } #define RICOH_GET_SET_VALUE(name,type,code) \ int \ ricoh_get_##name (Camera *camera, GPContext *context, \ type *value) \ { \ unsigned char p[1], buf[0xff], len; \ \ p[0] = (code); \ CR (ricoh_transmit (camera, context, 0x51, p, 1, buf, &len)); \ C_LEN (context, len, 1); \ if (value) \ *value = buf[0]; \ return (GP_OK); \ } \ \ int \ ricoh_set_##name (Camera *camera, GPContext *context, \ type value) \ { \ unsigned char p[2], buf[0xff], len; \ \ p[0] = (code); \ p[1] = (unsigned char) value; \ CR (ricoh_transmit (camera, context, 0x50, p, 2, buf, &len)); \ C_LEN (context, len, 0); \ \ return (GP_OK); \ } RICOH_GET_SET_VALUE(exposure, RicohExposure, 0x03) RICOH_GET_SET_VALUE(white_level,RicohWhiteLevel, 0x04) RICOH_GET_SET_VALUE(zoom, RicohZoom, 0x05) RICOH_GET_SET_VALUE(flash, RicohFlash, 0x06) RICOH_GET_SET_VALUE(rec_mode, RicohRecMode, 0x07) RICOH_GET_SET_VALUE(compression,RicohCompression,0x08) RICOH_GET_SET_VALUE(resolution, RicohResolution, 0x09) RICOH_GET_SET_VALUE(mode, RicohMode, 0x12) RICOH_GET_SET_VALUE(macro, RicohMacro, 0x16) int ricoh_get_copyright (Camera *camera, GPContext *context, const char **copyright) { unsigned char p[1], len; static char buf[1024]; p[0] = 0x0f; CR (ricoh_transmit (camera, context, 0x51, p, 1, (unsigned char *)buf, &len)); if (copyright && *copyright) { *copyright = (char *)buf; buf[len] = '\0'; } return (GP_OK); } int ricoh_set_copyright (Camera *camera, GPContext *context, const char *copyright) { unsigned char p[21], len, buf[0xff]; p[0] = 0x0f; strncpy ((char *)p + 1, copyright, 20); CR (ricoh_transmit (camera, context, 0x50, p, 21, buf, &len)); return (GP_OK); } int ricoh_take_pic (Camera *camera, GPContext *context) { unsigned char p[1]; RicohMode mode; /* Put camera into record mode, if not already */ CR (ricoh_get_mode (camera, context, &mode)); if (mode != RICOH_MODE_RECORD) CR (ricoh_set_mode (camera, context, RICOH_MODE_RECORD)); p[0] = 0x01; CR (ricoh_send (camera, context, 0x60, 0x00, p, 1)); return (GP_OK); } #undef MIN #define MIN(x,y) (((x) < (y)) ? (x) : (y)) int ricoh_put_file (Camera *camera, GPContext *context, const char *name, const unsigned char *data, unsigned int size) { RicohMode mode; unsigned char p[16], len, buf[0xff], block[0xff]; unsigned int i, pr; CR (ricoh_get_mode (camera, context, &mode)); if (mode != RICOH_MODE_PLAY) CR (ricoh_set_mode (camera, context, RICOH_MODE_PLAY)); /* Filename ok? */ if (strlen (name) > 12) { gp_context_error (context, _("The filename's length must not " "exceed 12 characters ('%s' has %i characters)."), name, (int)strlen (name)); return (GP_ERROR); } strncpy ((char *)p, name, 12); p[12] = size << 24; p[13] = size << 16; p[14] = size << 8; p[15] = size; CR (ricoh_transmit (camera, context, 0xa1, p, 16, buf, &len)); C_LEN (context, len, 2); /* * We just received the picture number of the new file. We don't * need it. */ /* Now send the data */ pr = gp_context_progress_start (context, size, _("Uploading...")); for (i = 0; i < size; i += 128) { memset (block, 0, sizeof (buf)); memcpy (block, data + i, MIN (128, size - i)); CR (ricoh_transmit (camera, context, 0xa2, block, 128, buf, &len)); C_LEN (context, len, 0); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); gp_context_progress_update (context, pr, MIN (i + 128, size)); } gp_context_progress_stop (context, pr); /* Finish upload */ p[0] = 0x12; p[1] = 0x00; CR (ricoh_transmit (camera, context, 0x50, p, 2, buf, &len)); C_LEN (context, len, 0); return (GP_OK); } libgphoto2-2.5.9/camlibs/stv0680/0000755000175000001440000000000012623156270013345 500000000000000libgphoto2-2.5.9/camlibs/stv0680/LICENCE0000644000175000001440000003544712557123324014267 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright © 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS libgphoto2-2.5.9/camlibs/stv0680/bayer.c0000644000175000001440000001513612610415536014540 00000000000000/* * STV0680 Vision Camera Chipset Driver * Copyright 2000 Adam Harrison * * 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 */ #include #include #include #include "bayer.h" /* Enhanced by Kurt Garloff to do scaling and debayering at the same time. */ void bayer_unshuffle_preview(int w, int h, int scale, unsigned char *raw, unsigned char *output) { int x, y, nx, ny; int colour; int rgb[3]; int nw = w >> scale; int nh = h >> scale; int incr = 1<>1) + ((x&1)? 0: (w>>1))]; } } output[0] = rgb[0]>>(2*scale-2); output[1] = rgb[1]>>(2*scale-1); output[2] = rgb[2]>>(2*scale-2); } } } /****** gamma correction from trans[], plus hardcoded white balance */ /* Thanks to Alexander Schwartx for this code. Gamma correction (trans[] values generated by (pow((i-17)/239, GAMMA)*254) where GAMMA=0.5x, 11) multiple colours to max, * which would be a loss of information. * - The gamma mainly determines how fast values increase after ZERO1. * Influence on the highlights is small; therefore the description * with amplifiaction and gamma seems not very appropriate; a better * correction function would allow to influence the slope for small * and for large values indepentently without incurring loss of * accuracy/information. It should not be hard to construct such a * thing. (Splines or Bézier or Triginometric/Hyperbolic functions * could be used, e.g.) * - The below parameters have been found by lots of experiments with * pictures taken at different light levels. They're optimized for * my PenCam (and my screens), of course. No theory behind this; * I don't have insight into the physics of the imaging sensor. * CCDs are linear, basically; but higher order effects may play * a role as well as the electronics that controls the shutter * and the one doing the readout. */ static const rgbgamma gampar[6][3] = { { { 1.02, 0.56 }, { 1.00, 0.61 }, { 0.99, 0.65 } }, /* cold */ { { 1.01, 0.56 }, { 1.00, 0.58 }, { 1.00, 0.61 } }, /* coldish */ { { 1.00, 0.55 }, { 1.00, 0.57 }, { 1.00, 0.59 } }, /* mid */ { { 1.00, 0.55 }, { 1.00, 0.56 }, { 1.01, 0.55 } }, /* warmish */ { { 1.01, 0.56 }, { 0.99, 0.57 }, { 1.03, 0.50 } }, /* warm */ { { 1.03, 0.52 }, { 0.97, 0.57 }, { 1.04, 0.49 } } /* warm bright */ }; void light_enhance(int vw, int vh, int coarse, int fine, unsigned char avg_pix, unsigned char *output) { unsigned long int i; int lt=3; /* 3 is auto */ /* float wb[3][3]; */ unsigned char trans[3][256]; unsigned char col; /* int tmp1, tmp2, tmp3, whitex=20, whitey=20, j, k; */ double brightness = 1.00; /* FIXME: configurable? */ /* fprintf(stderr, "(FineExp=%i CoarseExp=%i => filter=", fine, coarse); */ #if 0 if (fine >= (coarse<<1)) { lt = 0; /* fprintf(stderr, "natural)\n"); */ } else if (((fine<<1) < coarse) && (coarse < 400)) { lt = 2; /* fprintf(stderr, "incandescent)\n"); */ } else { lt = 1; /* fprintf(stderr, "fluorescent)\n"); */ } wb[0][0] = 1.08 * x; wb[0][1] = 1.00 * x; wb[0][2] = 0.95 * x; /* natural */ wb[1][0] = 1.00 * x; wb[1][1] = 1.00 * x; wb[1][2] = 1.00 * x; /* fluorescent */ wb[2][0] = 0.90 * x; wb[2][1] = 1.00 * x; wb[2][2] = 1.11 * x; /* incandescent */ #else if (fine > coarse) { lt = 0; /* fprintf (stderr, "cold)\n"); */ } else if (coarse < 100) { lt = 1; /* fprintf (stderr, "coldish)\n"); */ } else if (coarse < 200) { lt = 2; /* fprintf (stderr, "mid)\n"); */ } else if (coarse < 400) { lt = 3; /* fprintf (stderr, "warmish)\n"); */ } else if (avg_pix < 94) { lt = 4; /* fprintf (stderr, "warm)\n"); */ } else { lt = 5; /* fprintf (stderr, "warm, bright)\n"); */ } #endif #if 0 /* find white pixel */ for (j=0;j=160)) { whitex = k; whitey = j; break; } } } #endif for (col = 0; col < 3; col++) { double y; const rgbgamma *gp = gampar[lt] + col; for(i=0; i<256; ++i) { if (i < ZERO0) y = 0; else if (i < ZERO1) y = 1; else y = brightness * gp->ampl * (2 + pow((i-ZERO1)/((double)254-ZERO1),gp->gamma) * 253.5); if (y > 255.0) y = 255.0; trans[col][i] = (unsigned char) y; } } for (i=0;i<(vw*vh*3);i+=3) { int r,g,b; r = *(output+i); g = *(output+i+1); b = *(output+i+2); /* this (adjusting white) isn't quite right yet, so I turned it off */ if ( 0 && (abs(r-g) < 8) && (abs(r-b) < 8) && (abs(b-g) < 8)) { int v = trans[1][(r+b+g+1)/3]; *(output+i) = (unsigned char) (v); *(output+i+1) = (unsigned char) (v); *(output+i+2) = (unsigned char) (v); fprintf(stderr,"Adjusting white\n"); } else { /* this is OK */ *(output+i) = trans[0][r]; *(output+i+1) = trans[1][g]; *(output+i+2) = trans[2][b]; } } /* for */ } /* light_enhance */ libgphoto2-2.5.9/camlibs/stv0680/library.c0000644000175000001440000004415612610415536015106 00000000000000/* * STV0680 Vision Camera Chipset Driver * Copyright 2000 Adam Harrison * * 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 */ #include "config.h" #include #include #include #include #include #include "stv0680.h" #include "library.h" #include "sharpen.h" #include "bayer.h" #include "saturate.h" #include "../../libgphoto2/bayer.h" #include "demosaic_sharpen.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define CMD_RETRIES 0x03 #define STV0680_QCIF_WIDTH 178 #define STV0680_QCIF_HEIGHT 146 #define STV0680_CIF_WIDTH 356 #define STV0680_CIF_HEIGHT 292 #define STV0680_QVGA_WIDTH 324 #define STV0680_QVGA_HEIGHT 244 #define STV0680_VGA_WIDTH 644 #define STV0680_VGA_HEIGHT 484 static unsigned char stv0680_checksum(const unsigned char *data, int start, int end) { unsigned char sum = 0; int i; for(i = start; i <= end; ++i) { sum += data[i]; sum &= 0xff; } return sum; } static int stv0680_cmd(GPPort *port, unsigned char cmd, unsigned char data1, unsigned char data2, unsigned char data3, unsigned char *response, unsigned char response_len) { unsigned char packet[] = { 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x03 }; unsigned char rhdr[6]; int ret; /* build command packet */ packet[1] = cmd; packet[2] = response_len; packet[3] = data1; packet[4] = data2; packet[5] = data3; packet[6] = stv0680_checksum(packet, 1, 5); /* write to port */ printf("Writing packet to port\n"); if((ret = gp_port_write(port, (char *)packet, 8)) < GP_OK) return ret; printf("Reading response header\n"); /* read response header */ if((ret = gp_port_read(port, (char *)rhdr, 6)) != 6) return ret; printf("Read response\n"); /* read response */ if((ret = gp_port_read(port, (char *)response, response_len)) != response_len) return ret; printf("Validating packet [0x%X,0x%X,0x%X,0x%X,0x%X,0x%X]\n", rhdr[0], rhdr[1], rhdr[2], rhdr[3], rhdr[4], rhdr[5]); /* validate response */ if(rhdr[0] != 0x02 || rhdr[1] != cmd || rhdr[2] != response_len || rhdr[3] != stv0680_checksum(response, 0, response_len - 1) || rhdr[4] != stv0680_checksum(rhdr, 1, 3) || rhdr[5] != 0x03) return GP_ERROR_BAD_PARAMETERS; printf("Packet OK\n"); return GP_OK; } int stv0680_try_cmd(GPPort *port, unsigned char cmd, unsigned short data, unsigned char *response, unsigned char response_len ) { int ret; switch (port->type) { case GP_PORT_USB: /* Most significant bit set, data flows from camera->host */ if (cmd & 0x80) ret=gp_port_usb_msg_read(port,cmd,data,0,(char *)response,response_len); else ret=gp_port_usb_msg_write(port,cmd,data,0,(char *)response,response_len); if (ret == response_len) return GP_OK; return ret; break; case GP_PORT_SERIAL: { int retries = CMD_RETRIES; while(retries--) { /* data3 was always 0 */ switch(ret=stv0680_cmd(port,cmd,(data>>8)&0xff,data&0xff,0,response,response_len)) { case GP_ERROR_TIMEOUT: case GP_ERROR_BAD_PARAMETERS: break; default: return ret; } } } default: return GP_ERROR_NOT_SUPPORTED; } return GP_ERROR_IO; } static int stv0680_last_error(GPPort *port, struct stv680_error_info *errinf) { int ret; ret = stv0680_try_cmd(port, CMDID_CLEAR_COMMS_ERROR, 0, (void*)errinf, sizeof(*errinf)); if (ret != GP_OK) return ret; return GP_OK; } int stv0680_ping(GPPort *port) { unsigned char pong[2]; int ret; ret=stv0680_try_cmd(port, CMDID_PING, 0x55AA, pong, sizeof(pong)); if (ret != GP_OK) return ret; if ((pong[0]!=0x55) || (pong[1]!=0xAA)) { printf("CMDID_PING successful, but returned bad values?\n"); return GP_ERROR_IO; } return GP_OK; } int stv0680_file_count(GPPort *port, int *count) { struct stv680_image_info imginfo; int ret; ret = stv0680_try_cmd(port,CMDID_GET_IMAGE_INFO,0, (void*)&imginfo,sizeof(imginfo)); if (ret != GP_OK) return ret; *count = (imginfo.index[0]<<8)|imginfo.index[1]; return GP_OK; } /** * Get image, with just bayer applied. */ int stv0680_get_image_raw(GPPort *port, int image_no, CameraFile *file) { struct stv680_image_header imghdr; char header[80]; unsigned char *raw, *data; int h,w,ret,size; ret = stv0680_try_cmd(port, CMDID_UPLOAD_IMAGE, image_no, (void*)&imghdr, sizeof(imghdr)); if(ret != GP_OK) return ret; w = (imghdr.width[0] << 8) | imghdr.width[1]; h = (imghdr.height[0] << 8) | imghdr.height[1]; size = (imghdr.size[0] << 24) | (imghdr.size[1] << 16) | (imghdr.size[2]<<8) | imghdr.size[3]; raw = malloc(size); if (!raw) return GP_ERROR_NO_MEMORY; if ((ret=gp_port_read(port, (char *)raw, size))<0) { free (raw); return ret; } sprintf(header, "P6\n# gPhoto2 stv0680 image\n%d %d\n255\n", w, h); gp_file_append(file, header, strlen(header)); data = malloc(size * 3); if (!data) { free (raw); return GP_ERROR_NO_MEMORY; } gp_bayer_decode(raw,w,h,data,BAYER_TILE_GBRG_INTERLACED); free(raw); gp_file_append(file, (char *)data, size*3); free(data); return GP_OK; } int stv0680_get_image(GPPort *port, int image_no, CameraFile *file) { struct stv680_image_header imghdr; char header[200]; unsigned char buf[16]; unsigned char *raw, *tmpdata1, *tmpdata2, *data; int h,w,ret,coarse,fine,size; /* Despite the documentation saying so, CMDID_UPLOAD_IMAGE does not * return an image_header. The first 8 byte are correct, but the * next 8 appear strange. So we call CMDID_GET_IMAGE_HEADER before. */ ret = stv0680_try_cmd(port, CMDID_GET_IMAGE_HEADER, image_no, (void*)&imghdr, sizeof(imghdr)); if(ret != GP_OK) return ret; ret = stv0680_try_cmd(port, CMDID_UPLOAD_IMAGE, image_no, (void*)buf, sizeof(buf)); if(ret != GP_OK) return ret; w = (imghdr.width[0] << 8) | imghdr.width[1]; h = (imghdr.height[0] << 8) | imghdr.height[1]; size = (imghdr.size[0] << 24) | (imghdr.size[1] << 16) | (imghdr.size[2]<<8) | imghdr.size[3]; fine = (imghdr.fine_exposure[0]<<8)|imghdr.fine_exposure[1]; coarse = (imghdr.coarse_exposure[0]<<8)|imghdr.coarse_exposure[1]; raw = malloc(size); if (!raw) return GP_ERROR_NO_MEMORY; sprintf(header, "P6\n# gPhoto2 stv0680 image\n#flags %x sgain %d sclkdiv %d avgpix %d fine %d coarse %d\n%d %d\n255\n", imghdr.flags, imghdr.sensor_gain, imghdr.sensor_clkdiv, imghdr.avg_pixel_value, fine, coarse , w, h); gp_file_append(file, header, strlen(header)); if ((ret=gp_port_read(port, (char *)raw, size))<0) { free (raw); return ret; } data = malloc(size * 3); if (!data) { free (raw); return GP_ERROR_NO_MEMORY; } tmpdata1 = malloc(size * 3); if (!tmpdata1) { free (raw); free (data); return GP_ERROR_NO_MEMORY; } tmpdata2 = malloc(size * 3); if (!tmpdata2) { free (raw); free (data); free (tmpdata1); return GP_ERROR_NO_MEMORY; } gp_bayer_expand (raw, w, h, tmpdata1, BAYER_TILE_GBRG_INTERLACED); light_enhance(w,h,coarse,imghdr.avg_pixel_value,fine,tmpdata1); /* gp_bayer_interpolate (tmpdata1, w, h, BAYER_TILE_GBRG_INTERLACED); */ stv680_hue_saturation (w, h, tmpdata1, tmpdata2 ); demosaic_sharpen (w, h, tmpdata2, tmpdata1, 2, BAYER_TILE_GBRG_INTERLACED); sharpen (w, h, tmpdata1, data, 16); free(tmpdata2); free(tmpdata1); free(raw); gp_file_append(file, (char *)data, 3*size); free(data); return GP_OK; } int stv0680_get_image_preview(GPPort *port, int image_no, CameraFile *file) { struct stv680_image_header imghdr; char header[64]; unsigned char *raw, *data; int h,w,rh,rw,scale,rsize,size; int ret; switch (port->type) { case GP_PORT_USB: if ((ret = stv0680_try_cmd(port, CMDID_UPLOAD_IMAGE, image_no, (void*)&imghdr, sizeof(imghdr)) < 0)) { return ret; } rw = (imghdr.width[0] << 8) | imghdr.width[1]; rh = (imghdr.height[0] << 8) | imghdr.height[1]; rsize = (imghdr.size[0] << 24) | (imghdr.size[1] << 16) | (imghdr.size[2]<<8) | imghdr.size[3]; scale = (rw>>8)+1; break; default: case GP_PORT_SERIAL: ret = stv0680_try_cmd(port, CMDID_UPLOAD_THUMBNAIL, image_no, (void*)&imghdr, sizeof(imghdr)); if(ret != GP_OK) return ret; rw = (imghdr.width[0] << 8) | imghdr.width[1]; rh = (imghdr.height[0] << 8) | imghdr.height[1]; rsize = (imghdr.size[0] << 24) | (imghdr.size[1] << 16) | (imghdr.size[2]<<8) | imghdr.size[3]; scale = 0; break; } raw = calloc(1, rsize); if (!raw) return GP_ERROR_NO_MEMORY; if ((ret=gp_port_read(port, (char *)raw, rsize))<0) { free(raw); return ret; } w = rw >> scale; h = rh >> scale; size = w * h; sprintf(header, "P6\n# gPhoto2 stv0680 image\n%d %d\n255\n", w, h); gp_file_append(file, header, strlen(header)); data = calloc(1,size * 3); if (!scale) gp_bayer_decode(raw, rw, rh, data, BAYER_TILE_GBRG_INTERLACED); else bayer_unshuffle_preview(rw, rh, scale, raw, data); free(raw); gp_file_append(file, (char *)data, size*3); free(data); return GP_OK; } int stv0680_capture(GPPort *port) { int ret; struct stv680_error_info errinf; ret = stv0680_try_cmd(port, CMDID_GRAB_IMAGE, GRAB_UPDATE_INDEX|GRAB_USE_CAMERA_INDEX, NULL, 0); if (ret!=GP_OK) return ret; /* wait until it is done */ do { ret = stv0680_last_error(port, &errinf); if (ret != GP_OK) return ret; if (errinf.error == CAMERR_BAD_EXPOSURE) { gp_port_set_error(port,_("Bad exposure (not enough light probably)")); return GP_ERROR; } if (errinf.error != CAMERR_BUSY) fprintf(stderr,"stv680_capture: error was %d.%d\n",errinf.error,errinf.info); } while (errinf.error == CAMERR_BUSY); return GP_OK; } #if 0 /* this somehow terminates after some images. timeouts due to low exposure? * I haven't found out yet. But this would be the right way to do it. */ int stv0680_capture_preview(GPPort *port, char **data, int *size) { struct stv680_image_header imghdr; struct stv680_image_info imginfo; struct stv680_error_info errinf; char header[64]; unsigned char *raw, *bayerpre; int fine,coarse,h,w,ret; ret = stv0680_last_error(port, &errinf); if (ret != GP_OK) return ret; ret = stv0680_try_cmd(port, CMDID_GRAB_IMAGE, GRAB_USE_CAMERA_INDEX, NULL,0); if(ret != GP_OK) return ret; do { ret = stv0680_try_cmd(port, CMDID_CLEAR_COMMS_ERROR, 0, (void*)&errinf, sizeof(errinf)); if (ret != GP_OK) return ret; if (errinf.error == CAMERR_BAD_EXPOSURE) { gp_port_set_error(port,_("Bad exposure (not enough light probably)")); return GP_ERROR; } if (errinf.error != CAMERR_BUSY) fprintf(stderr,"stv680_capture: error was %d.%d\n",errinf.error,errinf.info); } while (errinf.error == CAMERR_BUSY); #if 0 fprintf(stderr,"image flag %x\n",imghdr.flags); fprintf(stderr,"sensor gain %d\n",imghdr.sensor_gain); fprintf(stderr,"sensor clkdiv %d\n",imghdr.sensor_clkdiv); fprintf(stderr,"avg pixel value %d\n",imghdr.avg_pixel_value); #endif ret = stv0680_try_cmd(port, CMDID_GET_IMAGE_INFO, 0, (void*)&imginfo, sizeof(imginfo)); if (ret!=GP_OK) return ret; ret = stv0680_try_cmd(port, CMDID_UPLOAD_IMAGE, (imginfo.index[0]<<8)|imginfo.index[1], (void*)&imghdr, sizeof(imghdr)); if(ret != GP_OK) return ret; fine = (imghdr.fine_exposure[0]<<8)|imghdr.fine_exposure[1]; coarse = (imghdr.coarse_exposure[0]<<8)|imghdr.coarse_exposure[1]; w = (imghdr.width[0] << 8) | imghdr.width[1]; h = (imghdr.height[0] << 8) | imghdr.height[1]; *size = (imghdr.size[0] << 24) | (imghdr.size[1] << 16) | (imghdr.size[2]<<8) | imghdr.size[3]; raw = malloc(*size); if ((ret=gp_port_read(port, raw, *size))<0) return ret; sprintf(header, "P6\n# gPhoto2 stv0680 image\n%d %d\n255\n", w, h); *data = malloc(((*size) * 3) + strlen(header)); strcpy(*data, header); bayerpre = malloc(((*size)*3)); gp_bayer_expand (raw, w, h, bayerpre, BAYER_TILE_GBRG_INTERLACED); light_enhance(w,h,coarse,fine,imghdr.avg_pixel_value,bayerpre); /* gp_bayer_interpolate (bayerpre, w, h, BAYER_TILE_GBRG_INTERLACED); */ demosaic_sharpen (w, h, bayerpre, *data + strlen(header), 2, BAYER_TILE_GBRG_INTERLACED); /* sharpen (w, h, bayerpre,*data + strlen(header), 20); */ free(bayerpre); free(raw); *size *= 3; *size += strlen(header); return GP_OK; } #endif int stv0680_capture_preview(GPPort *port, char **data, int *size) { char header[64]; struct stv680_camera_info caminfo; unsigned char *raw,*bayerpre; int xsize,h,w,i; int ret; struct capmode { int mask,w,h,mode; } capmodes[4] = { { 1, STV0680_CIF_WIDTH, STV0680_CIF_HEIGHT, 0x000 }, { 2, STV0680_VGA_WIDTH, STV0680_VGA_HEIGHT, 0x100 }, { 4, STV0680_QCIF_WIDTH, STV0680_QCIF_HEIGHT, 0x200 }, { 8, STV0680_QVGA_WIDTH, STV0680_QVGA_HEIGHT, 0x300 }, }; /* Get Camera Information */ if ((ret = stv0680_try_cmd(port, CMDID_GET_CAMERA_INFO, 0, (void*)&caminfo, sizeof(caminfo)) < 0)) return ret; /* serial cameras don't have video... Too slow. */ if (!(caminfo.hardware_config & HWCONFIG_HAS_VIDEO)) return GP_ERROR_NOT_SUPPORTED; /* Look for the first supported mode, with decreasing size */ for (i=0;i<4;i++) if (caminfo.capabilities & capmodes[i].mask) break; if (i==4) { fprintf(stderr,"Neither CIF, QCIF, QVGA nor VGA supported?\n"); return GP_ERROR; } w = capmodes[i].w; h = capmodes[i].h; xsize = (w+2)*(h+2); /* Send parameter according to mode */ ret = stv0680_try_cmd(port,CMDID_START_VIDEO,capmodes[i].mode,NULL,0x0); if (ret!=GP_OK) return ret; *size= xsize; raw = malloc(*size); switch(gp_port_read(port, (char *)raw, *size)) { case GP_ERROR_TIMEOUT: printf("read timeout\n"); break; case GP_ERROR: printf("IO error\n"); break; default:break; } if ((ret = stv0680_try_cmd(port, CMDID_STOP_VIDEO, 0, NULL, 0)!=GP_OK)) { free (raw); return ret; } sprintf(header, "P6\n# gPhoto2 stv0680 image\n%d %d\n255\n", w, h); *data = malloc((*size * 3) + strlen(header)); strcpy(*data, header); bayerpre = malloc(((*size)*3)); /* no light enhancement here, we do not get the exposure values? */ gp_bayer_decode (raw, w, h, bayerpre, BAYER_TILE_GBRG_INTERLACED); demosaic_sharpen (w, h, bayerpre, (unsigned char *)*data + strlen(header), 2, BAYER_TILE_GBRG_INTERLACED); /* sharpen (w, h, bayerpre,*data + strlen(header), 20); */ free(raw); free(bayerpre); *size *= 3; *size += strlen(header); return GP_OK; } int stv0680_delete_all(GPPort *port) { return stv0680_try_cmd(port,CMDID_SET_IMAGE_INDEX,0,NULL,0); } int stv0680_summary(GPPort *port, char *txt) { struct stv680_camera_info caminfo; struct stv680_image_info imginfo; int ret; strcpy(txt,_("Information on STV0680-based camera:\n")); /* Get Camera Information */ if ((ret = stv0680_try_cmd(port, CMDID_GET_CAMERA_INFO, 0, (void*)&caminfo, sizeof(caminfo)) < 0)) return ret; sprintf(txt+strlen(txt),_("Firmware Revision: %d.%d\n"), caminfo.firmware_revision[0], caminfo.firmware_revision[1] ); sprintf(txt+strlen(txt),_("ASIC Revision: %d.%d\n"), caminfo.asic_revision[0], caminfo.asic_revision[1] ); sprintf(txt+strlen(txt),_("Sensor ID: %d.%d\n"), caminfo.sensor_id[0], caminfo.sensor_id[1] ); /* HWCONFIG_COMMSLINK_MASK ... not really needed, the user knows, he * plugged it in. */ sprintf(txt+strlen(txt),_("Camera is configured for lights flickering by %dHz.\n"), (caminfo.hardware_config & HWCONFIG_FLICKERFREQ_60HZ)?60:50 ); sprintf(txt+strlen(txt),_("Memory in camera: %d Mbit.\n"), (caminfo.hardware_config & HWCONFIG_MEMSIZE_16MBIT)?16:64 ); if (caminfo.hardware_config & HWCONFIG_HAS_THUMBNAILS) strcat(txt,_("Camera supports Thumbnails.\n")); if (caminfo.hardware_config & HWCONFIG_HAS_VIDEO) strcat(txt,_("Camera supports Video.\n")); /* HWCONFIG_STARTUP_COMPLETED ... Would the camera even answer if not ? */ if (caminfo.hardware_config & HWCONFIG_IS_MONOCHROME) strcat(txt,_("Camera pictures are monochrome.\n")); if (caminfo.hardware_config & HWCONFIG_MEM_FITTED) /* Is this useful? */ strcat(txt,_("Camera has memory.\n")); strcat(txt,_("Camera supports videoformats: ")); if (caminfo.capabilities & CAP_CIF) strcat(txt,"CIF "); if (caminfo.capabilities & CAP_VGA) strcat(txt,"VGA "); if (caminfo.capabilities & CAP_QCIF) strcat(txt,"QCIF "); if (caminfo.capabilities & CAP_QVGA) strcat(txt,"QVGA "); strcat(txt,"\n"); sprintf(txt+strlen(txt),_("Vendor ID: %02x%02x\n"), caminfo.vendor_id[0], caminfo.vendor_id[1] ); sprintf(txt+strlen(txt),_("Product ID: %02x%02x\n"), caminfo.product_id[0], caminfo.product_id[1] ); if ((ret = stv0680_try_cmd(port, CMDID_GET_IMAGE_INFO, 0, (void*)&imginfo, sizeof(imginfo))!=GP_OK)) return ret; sprintf(txt+strlen(txt),_("Number of Images: %d\n"), (imginfo.index[0]<<8)|imginfo.index[1] ); sprintf(txt+strlen(txt),_("Maximum number of Images: %d\n"), (imginfo.maximages[0]<<8)|imginfo.maximages[1] ); sprintf(txt+strlen(txt),_("Image width: %d\n"), (imginfo.width[0]<<8)|imginfo.width[1] ); sprintf(txt+strlen(txt),_("Image height: %d\n"), (imginfo.height[0]<<8)|imginfo.height[1] ); sprintf(txt+strlen(txt),_("Image size: %d\n"), (imginfo.size[0]<<24)|(imginfo.size[1]<<16)|(imginfo.size[2]<<8)| imginfo.size[3] ); sprintf(txt+strlen(txt),_("Thumbnail width: %d\n"),imginfo.thumb_width); sprintf(txt+strlen(txt),_("Thumbnail height: %d\n"),imginfo.thumb_height); sprintf(txt+strlen(txt),_("Thumbnail size: %d\n"), (imginfo.thumb_size[0]<<8)|imginfo.thumb_size[1] ); return GP_OK; } libgphoto2-2.5.9/camlibs/stv0680/library.h0000644000175000001440000000263312610415536015105 00000000000000/* * STV0680 Vision Camera Chipset Driver * Copyright 2000 Adam Harrison * * 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 */ #ifndef LIBRARY_H #define LIBRARY_H #include int stv0680_ping (GPPort *); int stv0680_summary (GPPort *, char*); int stv0680_file_count (GPPort *, int *count); int stv0680_get_image (GPPort *, int image_no, CameraFile *file); int stv0680_get_image_raw (GPPort *, int image_no, CameraFile *file); int stv0680_get_image_preview (GPPort *, int image_no, CameraFile *file); int stv0680_capture_preview (GPPort *device, char **data, int *size); int stv0680_capture (GPPort *port); int stv0680_delete_all (GPPort *port); #endif libgphoto2-2.5.9/camlibs/stv0680/README.pdf0000644000175000001440000000042012557123324014711 00000000000000The documentation found in the PDF file is part of the STV 0680 SDK. It was provided by STM without NDA for 'use by interested developers' and contains the important parts of the USB command set. It was provided 'as is' and does not imply any official support from STM. libgphoto2-2.5.9/camlibs/stv0680/demosaic_sharpen.h0000644000175000001440000000121412561423351016736 00000000000000/** Decl of demosaic_sharpen */ #ifndef __STV680_DEMOSAIC_SHARPEN_H #define __STV680_DEMOSAIC_SHARPEN_H #ifndef __BAYER_H__ typedef enum _BayerTile{ BAYER_TILE_RGGB = 0, BAYER_TILE_GRBG = 1, BAYER_TILE_BGGR = 2, BAYER_TILE_GBRG = 3, BAYER_TILE_RGGB_INTERLACED = 4, /* scanline order: R1,G1,R2,G2,...,G1,B1,G2,B2,... */ BAYER_TILE_GRBG_INTERLACED = 5, BAYER_TILE_BGGR_INTERLACED = 6, BAYER_TILE_GBRG_INTERLACED = 7 } BayerTile; #endif void demosaic_sharpen (const int width, const int height, const unsigned char * const src_region, unsigned char * const dest_region, const int alpha, const BayerTile bt); #endif libgphoto2-2.5.9/camlibs/stv0680/stv0680.h0000644000175000001440000001151712610415536014574 00000000000000/* * STV0680 Vision Camera Chipset Driver * Copyright 2000 Adam Harrison * * 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 */ #ifndef STV0680_H #define STV0680_H #define CMDID_CLEAR_COMMS_ERROR 0x80 struct stv680_error_info { unsigned char error; #define CAMERR_OK 0 #define CAMERR_BUSY 1 #define CAMERR_TIMEOUT 2 #define CAMERR_V2W_ERROR 3 #define CAMERR_COMMS_ERROR 4 #define CAMERR_BAD_EXPOSURE 5 #define CAMERR_BAD_INDEX 6 #define CAMERR_CAMERA_FULL 7 #define CAMERR_BAD_COMMAND 8 #define CAMERR_BAD_PARAM 9 #define CAMERR_BAD_DATALEN 10 #define CAMERR_TASK_FAILED 11 #define CAMERR_FLASH_PROGRAM_FAILED 12 #define CAMERR_BAD_ADDRESS 13 #define CAMERR_BAD_PAGE 14 #define CAMERR_EXISTING_IMAGE_SMALLER 15 #define CAMERR_COMMAND_NOT_ALLOWED 16 #define CAMERR_NO_SENSOR_DETECTED 17 #define CAMERR_COLOUR_MATRIX_UNAVAILABLE 18 unsigned char info; }; #define CMDID_PING 0x88 #define CMDID_GET_CAMERA_INFO 0x85 struct stv680_camera_info { unsigned char firmware_revision[2]; unsigned char asic_revision[2]; unsigned char sensor_id[2]; unsigned char hardware_config; #define HWCONFIG_COMMSLINK_MASK 0x01 #define HWCONFIG_COMMSLINK_USB 0x00 #define HWCONFIG_COMMSLINK_SERIAL 0x01 #define HWCONFIG_FLICKERFREQ_MASK 0x02 #define HWCONFIG_FLICKERFREQ_50HZ 0x00 #define HWCONFIG_FLICKERFREQ_60HZ 0x02 #define HWCONFIG_MEMSIZE_MASK 0x04 #define HWCONFIG_MEMSIZE_64MBIT 0x00 #define HWCONFIG_MEMSIZE_16MBIT 0x04 #define HWCONFIG_HAS_THUMBNAILS 0x08 #define HWCONFIG_HAS_VIDEO 0x10 #define HWCONFIG_STARTUP_COMPLETED 0x20 #define HWCONFIG_IS_MONOCHROME 0x40 #define HWCONFIG_MEM_FITTED 0x80 unsigned char capabilities; #define CAP_CIF 1 #define CAP_VGA 2 #define CAP_QCIF 4 #define CAP_QVGA 8 unsigned char vendor_id[2]; unsigned char product_id[2]; unsigned char reserved[4]; }; #define CMDID_GET_CAMERA_MODE 0x87 struct stv680_camera_mode { unsigned char format; #define FORMAT_CIF 0 #define FORMAT_VGA 1 #define FORMAT_QCIF 2 #define FORMAT_QVGA 3 unsigned char reserved[7]; }; #define CMDID_GET_IMAGE_INFO 0x86 struct stv680_image_info { unsigned char index[2]; unsigned char maximages[2]; unsigned char width[2]; unsigned char height[2]; unsigned char size[4]; unsigned char thumb_width; unsigned char thumb_height; unsigned char thumb_size[2]; }; #define CMDID_UPLOAD_IMAGE 0x83 #define CMDID_UPLOAD_THUMBNAIL 0x84 #define CMDID_GET_IMAGE_HEADER 0x8f struct stv680_image_header { /* For all upload and get image header */ unsigned char size[4]; unsigned char width[2]; unsigned char height[2]; unsigned char fine_exposure[2]; unsigned char coarse_exposure[2]; unsigned char sensor_gain; unsigned char sensor_clkdiv; unsigned char avg_pixel_value; unsigned char flags; #define IMAGE_IS_VALID 0x01 #define IMAGE_FROM_STREAM 0x04 #define IMAGE_FIRST_OF_MOVIE 0x10 }; #define CMDID_GRAB_UPLOAD 0x89 struct stv680_image_header_small { unsigned char size[4]; unsigned char width[2]; unsigned char height[2]; }; #define CMDID_GRAB_IMAGE 0x05 #define GRAB_UPDATE_INDEX 0x1000 #define GRAB_TO_LAST_LOCATION 0x2000 #define GRAB_SUPPRESS_BEEP 0x4000 #define GRAB_USE_CAMERA_INDEX 0x8000 #define CMDID_SET_IMAGE_INDEX 0x06 #define CMDID_START_VIDEO 0x09 #define CMDID_STOP_VIDEO 0x0a #define CMDID_GET_USER_INFO 0x8d struct stv680_user_info { unsigned char buttonmask; unsigned char camera_mode; #define CAMERA_MODE_START 1 #define CAMERA_MODE_VIDEO 2 #define CAMERA_MODE_BUSY 4 #define CAMERA_MODE_IDLE 8 unsigned char index[2]; unsigned char maximages[2]; unsigned char current_format; unsigned char reserved; }; #define STV0680_QCIF_WIDTH 178 #define STV0680_QCIF_HEIGHT 146 #define STV0680_CIF_WIDTH 356 #define STV0680_CIF_HEIGHT 292 #define STV0680_QVGA_WIDTH 324 #define STV0680_QVGA_HEIGHT 244 #define STV0680_VGA_WIDTH 644 #define STV0680_VGA_HEIGHT 484 int stv0680_try_cmd(GPPort *port, unsigned char cmd, unsigned short data, unsigned char *response, unsigned char response_len); #endif libgphoto2-2.5.9/camlibs/stv0680/saturate.h0000644000175000001440000000333112610415536015265 00000000000000#ifndef _SATURATE_H #define _SATURATE_H /* The GIMP -- an image manipulation program * Copyright 1995 Spencer Kimball and Peter Mattis * * 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 */ #define RED_PIX 0 #define GREEN_PIX 1 #define BLUE_PIX 2 #define CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) #ifndef MAX # define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif typedef enum { ALL_HUES, RED_HUES, YELLOW_HUES, GREEN_HUES, CYAN_HUES, BLUE_HUES, MAGENTA_HUES } HueRange; typedef struct _HueSaturationDialog HueSaturationDialog; struct _HueSaturationDialog { int hue_data; int lightness_data; int saturation_data; double hue[7]; double lightness[7]; double saturation[7]; HueRange hue_partition; int hue_transfer[6][256]; int lightness_transfer[6][256]; int saturation_transfer[6][256]; }; extern void stv680_hue_saturation( int width, int height, unsigned char *srcPR, unsigned char *destPR); #endif libgphoto2-2.5.9/camlibs/stv0680/sharpen.c0000644000175000001440000001337612610415524015077 00000000000000/* * GIMP CVS: "|Id: sharpen.c,v 1.23.2.1 2001/01/12 13:15:10 neo Exp |" * * Sharpen filters for The GIMP -- an image manipulation program * * Copyright 1997-1998 Michael Sweet (mike@easysw.com) * * 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 * * Contents: * * sharpen() - Sharpen an image using a median filter. * rgb_filter() - Sharpen RGB pixels. * * Revision History: * * See GIMP ChangeLog */ #include #include #include "sharpen.h" #define new(ctype, ccount) calloc(ccount, sizeof(ctype)) static void compute_luts (int sharpen_percent, int *pos_lut, int *neg_lut ) { int i; /* Looping var */ int fact; /* 1 - sharpness */ fact = 100 - sharpen_percent; if (fact < 1) fact = 1; for (i = 0; i < 256; i ++) { pos_lut[i] = (800 * i) / fact; neg_lut[i] = (4 + pos_lut[i] - (i << 3)) >> 3; }; } /** 'rgb_filter()' - Sharpen RGB pixels. **/ static void rgb_filter (int width, /* I - Width of line in pixels */ int *pos_lut, int *neg_lut, unsigned char *src, /* I - Source line */ unsigned char *dst, /* O - Destination line */ long int *neg0, /* I - Top negative coefficient line */ long int *neg1, /* I - Middle negative coefficient line */ long int *neg2) /* I - Bottom negative coefficient line */ { long int pixel; /* New pixel value */ *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; width -= 2; while (width > 0) { pixel = (pos_lut[*src++] - neg0[-3] - neg0[0] - neg0[3] - neg1[-3] - neg1[3] - neg2[-3] - neg2[0] - neg2[3]); pixel = (pixel + 4) >> 3; if (pixel < 0) *dst++ = 0; else if (pixel < 255) *dst++ = pixel; else *dst++ = 255; pixel = (pos_lut[*src++] - neg0[-2] - neg0[1] - neg0[4] - neg1[-2] - neg1[4] - neg2[-2] - neg2[1] - neg2[4]); pixel = (pixel + 4) >> 3; if (pixel < 0) *dst++ = 0; else if (pixel < 255) *dst++ = pixel; else *dst++ = 255; pixel = (pos_lut[*src++] - neg0[-1] - neg0[2] - neg0[5] - neg1[-1] - neg1[5] - neg2[-1] - neg2[2] - neg2[5]); pixel = (pixel + 4) >> 3; if (pixel < 0) *dst++ = 0; else if (pixel < 255) *dst++ = pixel; else *dst++ = 255; neg0 += 3; neg1 += 3; neg2 += 3; width --; }; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; } /** 'sharpen()' - Sharpen an image using a convolution filter. **/ void sharpen(int width, int height, unsigned char *src_region, unsigned char *dest_region, int sharpen_percent ) { unsigned char *src_rows[4], /* Source pixel rows */ *src_ptr, /* Current source pixel */ *dst_row; /* Destination pixel row */ long int *neg_rows[4], /* Negative coefficient rows */ *neg_ptr; /* Current negative coefficient */ int i, /* Looping vars */ y, /* Current location in image */ row, /* Current row in src_rows */ count, /* Current number of filled src_rows */ pitch; /* Byte width of the image */ int img_bpp=3; /* Bytes-per-pixel in image */ int neg_lut[256]; /* Negative coefficient LUT */ int pos_lut[256]; /* Positive coefficient LUT */ compute_luts (sharpen_percent,pos_lut,neg_lut); pitch = width * img_bpp; for (row = 0; row < 4; row ++) { src_rows[row] = new (unsigned char, pitch); neg_rows[row] = new (long int, pitch); } dst_row = new (unsigned char, pitch); /** Pre-load the first row for the filter... **/ memcpy(src_rows[0], src_region, pitch); for (i = pitch, src_ptr = src_rows[0], neg_ptr = neg_rows[0]; i > 0; i --, src_ptr ++, neg_ptr ++) *neg_ptr = neg_lut[*src_ptr]; row = 1; count = 1; /** Sharpen... **/ for (y = 0; y < height; y ++) { /** Load the next pixel row... **/ if ((y + 1) < height) { /** Check to see if our src_rows[] array is overflowing yet... **/ if (count >= 3) count --; /** Grab the next row... **/ memcpy(src_rows[row], (src_region + pitch*(y+1)), pitch); for (i = pitch, src_ptr = src_rows[row], neg_ptr = neg_rows[row]; i > 0; i --, src_ptr ++, neg_ptr ++) *neg_ptr = neg_lut[*src_ptr]; count ++; row = (row + 1) & 3; } else { /** No more pixels at the bottom... Drop the oldest samples... **/ count --; } /** Now sharpen pixels and save the results... **/ if (count == 3) { rgb_filter(width, pos_lut, neg_lut, src_rows[(row + 2) & 3], dst_row, neg_rows[(row + 1) & 3] + img_bpp, neg_rows[(row + 2) & 3] + img_bpp, neg_rows[(row + 3) & 3] + img_bpp); /** Set the row... **/ memcpy((dest_region + pitch*y), dst_row, pitch); } else if (count == 2) { if (y == 0) /* first row */ memcpy((dest_region), src_rows[0], pitch); else /* last row */ memcpy((dest_region + pitch*(y)), src_rows[(height-1)&3], pitch); } } /* for */ /** OK, we're done. Free all memory used... **/ for (row = 0; row < 4; row ++) { free (src_rows[row]); free (neg_rows[row]); } free (dst_row); } libgphoto2-2.5.9/camlibs/stv0680/680_commands_and_communication_sdk.pdf.gz0000644000175000001440000027071012610415510023203 00000000000000‹UÐ<680_commands_and_communication_sdk.pdf´šy@ÇÛÇ[/ŒV‹âÍVA1Ù½-¢œ‚FnÄAbC‚IP,xÕ£àQD±ˆbë]QÁ«žñ@«õE+D<ñ¶þvÃa²»’¾¼ùƒì>™Ìç™gžï33Yì¤^ƒ1ÙUÝ9wIÔ!H‚!uÌD‘³3$’ø)Tr™Fñ½<B˜ÛQBP0sá E@0m1…¢Ø†ÀB’Ì¥'Ó¥ æ*lã`æÂqæ3H$WűÝCÿ÷WŠF/Ò{Èú7¾Ò¿C*QûF ã\@0˜o#Qž  €g#ųÑ$ÂƳ!8ͳáÙ0’o#¾K¼ñ¢Áó¥)’kÃ’×/.JñÆá0¿?åùŒ‘8ßFñc…Ñ4Ï<hÞá(Í‹ Ž#¼qàÊ‹Nâ|ÅÁ„gCøã%ÎoÇLφñ}&„‚üþ(”7Í·‘0?wIð¸$<ÿH”Ï%Eól8Âï@x1%I„7ç$…ð4ÂcP0ÌcP?ÿ(óÊŸ7 ƒù ù pšÏ h>ƒäç$Ec¼¹¤a¾~i€!|ÁK´ñ4 Šól|cã÷ÇÔDÁc Œ’ø6’æÙ(‚ߎ¢xí0~ clüv8Á«ŒW7Á~ç×@æ‹N#S(åfI‚˜BHI|Tñjfc«1È,^jµŽ½'ï¥ùdýz†áÌG„s `ôI¡²8„ ±˜X¹މgBÆÔV †ã Ó-¢˜•Q¤ÕÉ4:ý‹ììzCn°=Þ"·S`ñU×9›fÍŸu¡¤•wªEõUÛª‘Ýü:YjÊ[´zo÷{ÏD »kv׺]ûbAA×Éë½ ýkÍ»,ìÛù¨¸~hÎX¢&Ųë7Vcr&v?B=qnç­>–7c&½°øE«;#]®´+u‚Èš5Ë·o©YÌt[©ƒEî®Vu%E¯Ÿ8 Ÿin ›ïËÎQcH?ÍÖ8[(³ø4ßút䈀ÍA}*jä*½HA“håZu²&–Íom2º«U:¦–ÍnmÐ3sA5^`HÓÚt7]MtãÞ(,V îu’›:…é–ugÖ Šé‹ýÄMjL_Öà/Sȸmþ£@µŽÉ=Æhœæz7Û]Ì ”ÝZ{)4ZvÈTÓèüd ÷¨€Vô>Å®A`%†FÈUrL ¹«eª8HªQëÔ±j¥cƒ¢ ‡³tPq4ˆrsQ §°÷4%„DCAƒÙ-¶Ob’RžÈt(Óu|Ë> $À}Зcæòòˆ!w¦ôid Q¯˜¬ip¡‘¯5䢊#-rqãX4…ÿÓüœù!›³‘ÊÁ(×g\ÈgDÌŒMöYŒ’¤TËâ 6Z>ª8yŠ ïÅ>ZôæøŽq|§acßiÄØwŠë;!o ’뚂ήÆ!ÆHØÈMŒã–`z‘Â( Ò©“ PEœ\mH€9ÕRš‚!H¡„)€¡0k5Ãæ Ù"†à ŽÂÒBX¸9oÙ-Š&±!kÙÑ)” ÝÔÏe0Ùb4©·Ù#œ›´Q0lœÌþÝØ}NaDŸ½ ‰lì"³6r‘#*Z(H4"L¡šÔäèêoÄ!™3¬ §)Bû sH¦xê `Y sï©Òi¦£šj…r†ˆ¡Qa4Ñ4Äà„äij5Ò=F-“#0áacÂl¼‰Í›F Ý"—;­BKý™ú‡éÃÝP½™­¬\coæ|´ÈæèŽZ/hB˜êëW[_o* ãx‹h’ƒÆ…Ф04hF¯òÏÄÀ4§´q€9B•:„7/ËAÉÌ»q–3‡;¤åpj m\[HÄx…!Î ¸^~¦2"úìÐwâ©Ñ¨r!pš0òÒxÝ#aZàÌß!!LVÅÊ•P°F¦ÒÊôç%#M´ ®!($ŒáÏà`È])—iôÓ åŽ9ÒT‹4À¬Ð ÂtZVæ|§Ñ¯9ÜbŠ´F9`Áa£Â`JvKÖé˜%ŽF9;.ã F7Ôuwµ’9@@Ì)›ƒ-O.ÎA£Bh\MpÑû»„1P E>ÁácB|B˜ÔXnÐYTˉFrȸ™&7T÷Ïìƒ[4ÅABhJ¢y£¦‰,çÖRý™ª ©B5¡‘ÍÙƒ–°ŸödMXÝkCq(éHsMwg"m|fÀ0Ìh–9»Ãæm B„AàÓ™N®IThµL©4ÞœâÇqáE„ªb\­ O¿,I¤Ÿ~·bNÔÌ)›€!@@8AC$FèÏÙ¡l·Íµ‰½’bT˜¤ŽtÊôÈvŠâF¢ˆa§Me×Ð=cfL@LšûÔp“Ü€™ f Lciz¸!€4 9!ú3K(“ŠC@M4$Ð& 4‡@˜e@°)€9ÚôhCb’€09†f·õ“b€C0-7`(7€š$p (Óc0ÔÀL8‚FM+Ö!`RÑ€£hÔ´¤¡¤IIޤQÓš†š&5 8šÆLkj˜Ô4àh3­i`¨i`RÓ€£iÌ´¦¡¦Q“šF9šÆLkj5©i”£iÜ´¦QCM#&‡kZ£ŽeOÑDêáI‚ÙýÛ³—šYùÙ3^€e4ŒBâ…±7hós‰gŠnDþr¶íˆ „ý|úœÝ5k‚’d± ܵ8ÛÁ§7Æ®¡üg z?D’ äþžµ²ÿò⩊UDZÛ4I˜BåªÒ*š "‰›L+×Oâ-WN–ë±²Ánje‡}z &q—)G¸é KPèäRµBņ…9máÌž™—f¶{QÌ eÌæ‰o1`^ï]ÿ@A¦Ó(ôÄŠ] V/bfëÊ RŒâìÃC1³ò²5Ÿ9½²?öˆŠÝ‹a}‰kàFé£dðlŽD›ª Í,Hfƒa⹊ <7Sûf^'¾:ò.쉷¾|½Ã’!{–ZˆÚ;'iŒÞÜí ±óg‹S3n©©Ëâ%Vóœûß«?û¼nºâ¸¬³×ˆ[gôzzk¨Óg+ïü5ÿNá¤\Unºyÿô½CÒíïß?¶š<·,Çïü kÕ3øö×Úëãu#=÷Ozß±R|¨æ@ØÝQÔ‘¯?Œ®ß÷án]®uhíZ2#²ûûÓÅ©}¥;ÖÄ™)f\ wæ·»àEp€ý—÷¾ñ­{i³P“_çíµyóáþç&æür- âñúÚ²ò‰î)¬úfFþIëÒü¢ÅR•¼ïok¤â‡[kWþqdú’´«Ž–u%ïFÍO˶ÜyP›m¶NÓ’7ß–º÷áq¯‡#ó ›ÔHåá—v#ƒ(ßEgGgG i}Ræ²Õ,µGAÑÀÅ_ç¾[þl`]ÙÞK>sΜúÓóZÛŠÌ4›9^oÖ+}‡œÉÙòZêÐ5zv,½Új¤O¿gç[_·Zqày·jݺ©s¿K ¿]a"sJ£àϤ;]®XX*>8øÔÅE_T÷ù&o´ƒ…CT¶$úqbVòW^Åÿ®œ=ðÜâÒe›ZY–;ÔÝÜÿñ¡SG{¨pâLzqøîËåoCzÛcs×ï°i3iã/÷Kͧ“5Ù^w]ß.¢æ<+Í:´¦ò·,V_.ª?wé01´µì Xä;¯Ï„¢h«-é+7h÷G•EÇû.˜4)D|»Gü”Ô™o¥U‰‡T]Bâ½»-·=úâbåîË3: Ùp21Rú>ð§±ËZYo¹¹=òç3s{R—‚Cž»¹Wl›û(s¿ËýJÒó¯lôœ÷ÝôEŠ«N^Ìúù°Ç¸Îæ ìüÐK~„¦ÿò5Ë3– í9»jÜÖ)i·Ý½~+è?°ºÃžÞa\³£ª«‡Íùª8÷íÓ3:oýG{ÇЈÎ‡œ%IK7Ûö(Y9)jÔå„ìÛnñ„czøþñ3^a}Ÿ½4è×™NiG‹ºEì÷zrôñ´ŒdqBæ ìüWW"lžÝŠÞÐyçK›ë«Z÷xý2v»'¼kÕÝë“—Û[ª­{Š*ºwÈÛzaÃ/›·ïï¹áäΑGJ.ìh=ìã€"³Ž÷r =†E›jöŸ5 ÌÔ—?) ]öPíu¸Ã¼)ÛÿôOÔ[»Ñ6•«â}6Ž{¤S‡Ÿ#îQ®í-þxDbvq’&ß:>ÒÖ¥¨fúí¨UïŒÍWYgøç?—_þ~ ñ:mÌûË9ÿzžµ?µõòƒ¾…Ú,¥Ö~?ô©ÏÊMeúetY"Îìœr<}Lˆï1Û÷9Ø•^ó·–i©#=×–¯ ݯÜ[*&ý¹tGEžÍ¢ƒW½“ÓÇß¾^Ó½ð‹¹³ë¬þq)½^Ÿ ¶ønO¶°öÇ!Ï[W‡+}¸{]ÍU…å˜_^8¸ääüƒ·ÿVå.=]¹Á²|ȃ£"ÊËû‹zfü-ûàeå–¥—þ‚dëÈ^ëûÕ'<é²²®Ó.pdx~Ô·û&Ö^Á[¤ì#bŸ¾º×=3Á)ÛQûÅ5ÿçzû]é72Š†Ù¥Ù$ûET(QÜêäýePfzn[ùÀ6™¡Kã‚æµS<]½úÁ¡¶Ëlá®sÁ†¡gcSWü>jjV¨gÖaó„ïTÙ‹î/š8;lóƒ›Y»œêçžÛAÇk6ÌImög Ù¯¿çÄi·]fzgŽnS–²kUÛt¨óùŽSÞ¤Ÿv¬úêê×ÞñóN<,]?¶Í«jø/ ¾u×Qm~̸óÊúµEPô‘ÊiK"ö«w9x÷Ô†÷£êT|{æÀ”î]¦—…º§Þ·šä&)z.}ª,îo»>céÓCk<'õmg~&/Æï~×âˆMÄãÝ×][sñɯ©ÒVï«‘ù¬Ê„Ë·í<è–Ý‹À´¯Áéô¥‘÷úqðÓ5ŽíÞÎïUZÕ\*ñ žSØq×-¹SвæÿzÉõØœv º­¡ÙêïV»>lUêt|o{ßãäŠTýÝCÏv7}Yý®ºrâ[›.›:9=JòÚ‚,ªÍO |þ²ðœÛ³OÈw¯xÙÚâiý½õ˜w]‡¶›}.mÚBo¯ú'é¥ÈÉVÓ.î y=úÛAê©Î/¾ìyæ‡}#Ïm|¬òŸÝ¥´§vôù2[§;½½vÄøö ^“ߦäí‹°™æf§ª–ÊŒþÛŠpv!XÓž’¤ ×s ùÏ‚nÜ« :;ØW3œ]Ïk'íkŸ>·:Ùÿ—‘[¬·[ÕÞ6»ÓÌöTÖó‡ßJ6ŸZ˜öÄeÅÊÇ9êø c÷}Ü»àhiEð£‡Q;•·¦ü±{ÉÚvóá+£ìÿJ–ÿàäTž<ý¥mšÏi¸¬<ÜÒrÕ/Õ \". ?×Úbì£k¯¸•jñÞ­öõoÈìÒüSOÎñë(«ûm—Ú ±hÛ)Îm_Ý^´ÈmÀÝ+Hþ‡‹?ŒòËËyp}Wgø}Û˜c¿{,ž3âîܾŽÊõÖ^[f‡¿ê°Xb&^Ú¾6bGݼ¿ÆÏËmWÕ6&$¯«Ó´VáâV[;u/{ÚjÛ7–V‰=ÍÖL®uânRý½Ú²Û`W>éPSÙ½Û’;e'²Áà##^H Þ_½,|Ï•7ïa`œâÎŒ2ò=g=wåÓM³ µ®ßf‚ëÔGûzÏÑ$VYí¹ÿ?æþ1Hú(ëöE˶mÛ¶mÛ¶mÛ¶mÛ¶m»ê)W=U·ß{ÎÞgïÝq::îx¿ddfdFdä?GÎñs͵ø;qG>—[wèšrÈ÷) ßE§IÛÅØZ+h3£ìîkÑï×âÉâ@(ƒíg× · x­[Z Ó«K錭p_A[µ3ÙeüdÝ R³ùÑÊÅõ½Ï|½þÀ—|¨ÐIûJä§ÉçMƒ²âpn±.3C;QwåUr¤-â¯ãr<±«˜ '´D$3Œ¢#Õj•°”¡•¼ð¾LW"Uá•ìàNå.GS:Ö,˜Ê—‹Éýr Æ2É\à­[õŠã1 %ÑÐf€÷®ÂX HÎá¶-¤Ó)HR¨:_Á†z>(1"ñá0_ˆíT¢ÛBÜEàB1/,`é@bQì`¯…jÞ9¢lfE¦êD1ÐêzíJIpÏ¥!{¯=l’t°7þHvSPa”­°‹±²=G@!|v¼êÀ1g|Æ?=pÐþ¥~Ìtøt¼øËv&CZ²åª+Ê\[‚(oy$š¹q£IG¹Vå£Ó9‡ä#,4öŽò};’ÀРöh x×AÛ1¨œ“òóä1! `AtSlyæ‘%‹ƒÝÍZý¦&`e¶N”RŠ´dúA=0ŠVú¯Ïò?°ˆƒý•!ó¿/C¦!C•I»m„Þsê3 TB¥¯VX(@ ÇÚÉÀ¶Ì QÐ$¤õÏ92óîˆílö?f‹WŸE6ºXðœ5tôÍ…óGñ—á˜e+ö†¶×XÀ¯v®¾‰´ï3ÝEO š¦Ó¾›µÓ»PƒÍE¡’lЭÕ3f›7…n{=$”ó÷ £_K È®¹Çì …‚5 ¸uƒ«ödélÖ#Aó!Ô¸ó¸\ר1ß`öÚ&›ÔW«f¦·Z&“ˆÕtpP^jçÉy溆µkæûÉïr÷>þ1Ò _Ôûã¬ä"c3äÛV›ø|¦=IVÎþ!€ŒÕˆÙdË%}7õ eß7ìX§9y.¡~ÐÊÀ'içìâUØ@¥#%2’§¬šUC“Ó°¬£#ä“â3@žA³¤P0Ë7\èHl¶¨žÿk¬·ÌÁÑý{¬‹{Õ´tªz9„m›ÁóVtïŽC© ›FÏ‚DÙXŒÃ7wÒvVå)CÄ—Z’ ¤ }$»ÚøáD=ZdÂgGèÓ£>²Ã›êÙRÊ EõhDéòÅB:¥dé¥i6¥OjY3ۭݧ|?{(@*ó Ò“ÈàÞè/WgS‘ð˜È MÓí‚D3va™F!DZðè£ ùTÈpv>N[ƒüZfaÈ6~•n#Q¥sÚˆ'úæúTéôðçxƒÞóˉÒâœ͈|»Âú¹s±ØGñG(‚­ºS…¢ž8·‚; N›z75Úè8$rôñÚ¡XÖã÷!Ã$œw Kß|­}Õ¦a\N|Ó¥(7æ)ÌŸ!8NôL_«Eˬ¡FuÏ*ý€ÉÉ‚ö2½lxiç¦ò ”çâ•4Q OX>X˜8*ôçà2v-rÕì“î-¨9R?B}¸G»¥’8òM@9ǘpVä9Ž­¨òžÃu„ûêr̮֡#ôî®? ÀéJÌοÔãÿ€óÿêXý/O³þûzüWËC]Tºþ¡Ç›TŠ@™@>oUº¥Ýœ ¤Âf¤RBÊí§õs½”ZG% q ðÞÞ^ÐìòXåÈvÂ7AÖíØæ¹/)Vo':ÕÙë³t»ÏÁ÷%4/¶m«£¥°],seß“^k•`I«lA´[ªä¸±u¶õ¦·1ïFeð¹—L²d.DâÅ’S\¿ýê8B¢pàul1€Í|ùr·”¹[ÙÛ"/ó Š‘*Z|³™ÐÉjEˆ‰¦‚q ƒ@© FW$&âñÌaÀæ(Ôì „­ÇWÙ«ÕTf‘N@;­% j·Np>dn2j¢›Œ¹ÔQHÇ&øJ~Œƒž¡†g‹'÷?-“½µÓE qcÒɧ…¯·EixL¼ H¨¹’kÂ717w1Xó䨤Å6Û œ i .°:~K=Á~â¶ÌY`œDÔ é›Þ*¥ 'uIÝÓkì|LÇ™Pxh6µ ¾*ä µ/{%s“)kÉ×Ìð Ää~{[£‘ãåsJÊ·vJû¦óð߆,ŸˆÁCNÈHœÝ3áóM4®†+"WÝ*ì’y€õhe`>ðuiIõ½ùo£þ_,ï¦Ø¡êspÎU}Í·”à0öÖÖB›žý‚Þ L´˜¸þ0µº™˜³îOðÕ=T'/Iå€ÌLPYHÒ°Ì„Àæá˜žR!ÂàBô'¿Q Bü•…¾8Ó„> Ú~@4k šÁIÓ¿SYs$Oé‹Ï\?9‰IX{½»š*g3)LáC/…ÃG'uðö¶ ýKf£á‚ƒ²;€suòàLxäÄÅáÏh ªË„PûÌÏ<ʶPÉ*hZàßQY~ÿ<>ˆiíTš›è&úsÚ,~ æäÖÿs¹êK*ø /t´ >¢ÞV#‚–§~]~^ Çm#û/•Âö? äÿ¦ö_)lÿ*R•u.f€é=W·˜§Á³‰ <ž»³œïlåm±Ì$Mjùõ{1L.iN‡ØlzÞk®±Ñ;©åÇS5£º-Q°ßæÇ.ö5µJŒ¾½—M»æyS³é†õ;•³±ÏFç\ Ôº+Ö-‚ ¾×…×+¦Þ¬CoRͤuõŒWÌ\G³êÄQÓ~ k‰8'âº=-¡‘yÜ‘¨¾1NQœÞíŠûܤxºD'3iuOƒ„6æy4¤úËᦘȟy dðü.¨™cwµÅ;¡´&‰ö]¤sð @, lílB±j€^íoÒØÌ´>—ªf"†^êH=fµÚsrRÄZe!1Å‚d!£•Cȉ†/v°ÀP &Ð 1%DªŸ,s|Åæ×ÄÒ„?âtPsHùd¼mÈG°v¤«€F×äàX¡:mü…ºD–륚#¼«c"w^ÊL=¯:²Ã0¯,©úòtªÐ=äPß­‰³emïXâ˜ÌáùzŖwï6yðUÄíœñÑgÙÃ^nAh–uþÎ÷y9!¿(ZƒJÑã=äm7iríjPÔñMú†È'ì>¨ìQ™ŒxÏ–åÚüÛ†oØÃAáañ~01imµ1Zýr~F¾‘íçpÍ'¦pœ#lEéS†ú Za2¿4'i!³Å ³ gÓ¹!ˆ)ìLp…úuäÿ7Ÿ—Ml=/¥=4q»š4¼R»Ì.ÓK¥;áë‘)ò§Œ­•úÅg¾Æ×IJ¹È±®“ßáx*dp œï¨~6¡Oúþ\m°øA·RÖxÖ÷B£)ʇoþØ'3ˆÃP ƒ•uo·!¸S-Ø+:(Øžøu²®ì;3¼·NêDyÙwË&R¸ÃùÏÄøþ‡ùÊð¬OIHm¬œÔ%+޶ˆÂð'ç§¥ÿP «lT–AKÂà¹ìäyŠO þº1Ž{u…3RW»? '{¼ø¿Ô Çÿt,ÿ«9ÿ} rüËP¶ó¿ªÕí ª6P&a8ûåR$V·²lÖ¨¨Pæ „ Ê_ß×"³%†ñí7·FO=QOÜrÓ\¡”1ÏL´Íú$ÉËzmÑwmLºjü2ì=[Tu±¾Ú{Á²h³LÈbYü£•€X¦˶93ÕoožyYïËX·.˜#WG^›gö1ú[Ö=Aö\Û´ƒßM±VG+ö£°™ðäåkµx¸¤Aé°vSAžg8¼þºÇ†‰£§ßNG¿¹ãŸ’$"øæÒdÞ&Äþo¶aŒÞ(háH>¦ Cóf ÚžšŸ»$ºãYúá“Ö­:U|Sg…, õÙ?V$Mj%ÖD@P8ËHz£7Y+"’›$ZÑ“D°"3,fâž z[PÊD͇4‰3âˆ,7‚×6È]Ĉˆgv@zX N¹º>%=¬ ©iE·Äê¼9ÃiuuÎW³ŒÃ/¿Û>òTdèÇFíe~Òñéðú`rþK)pØÑGùi 8`™äÑ–*Œ{FŠXÇüyE´«ÉßrþºcŸ’¨@Ÿ>iÁÛ‘5èÃùa5 @²…?BjÑÁ>ÅÔv”š£,cvŽJnN•ª» ÁM r²bB}²«.kC àHæËù$cæ¸+Öy^ý”<Y&P::0ƒjZÐ^ø¬ óã4¡®CƒÃ“¨rþÍ?uJšÎ%Ù4œÀv…À§ØõˈÓ(×6À²§IŽÌF¾D3~ B1±޹9=cŒ·ÏXqã‘Øà ‡P^ç|„FRO¼1/Ú©à6#¼-ÌiŽº"ùN¨&¯6l–YPžZt!¢2ÚIŽJE„•¾ b‘&T„å^iÇK,…/¶hûÜIi!ÂÔúD’¸½vn‰\`­(O0Ò·Ž·[Þ÷l K œZ‰^#5*½‚Æ“]Ã6º•oD4 ÐᘠÈÓ–$$„…t°ˆœãMôW\òáç\‚š®»Rœ8¡Ž}y}ÐJWb–kT jªÔì5Ô©Yq·HTb—µÛŽ…¦cˆñ$~2èKç4xêXÚÃv„´D²´à6‘1åÔÍûí:ì©w2º »QApþRêeɈså‹þËËÊôÏ‘ÜÿÓ~„¥W$03´qþÿÞ•ý¯6Ó½L‰€^ÒÄÔÎå¿âÿoÁÛ4¶ôO3Kÿ£Ýúÿ:lÄòýwí×þ¯ÉÈÿ­f†”±©­ÿ]J=êšÊØ›¨~çêÏÇ·*’}_OÒLÇ«I¸äÌ”¨lO0‘(oœÚí+±¤7&T ¥w}×ss¯F^øUño©xäøì$ï´l*oøñz8ô²/×i ªQ«f8Ôèâ’kïØÄóMØ®9Öò̚É}Î6^8Ì·nhâ‡÷º{Û²}šÜ¹¡ßàÚûtp{=N©•kùpM{„†ù{9†R–9¬,]}M¨¾ÁE¼j`o Ðk[?½ž›µêö.3¬±Ç/­<µ·Y^¯”y‡Æ…m§8*ë_&‚\®‚Òwm«6Ïö³ç['<¿ê¯¹âc·v&® ÞÈ^΢Îñ–-Bˆý§1齇ãõ­8veDå«÷žHß^$â‹·vVÁª±Øóõv|:”ù×ýõÿ~LhÁÁŸ+xS¾7’/d‘´¸Ex…4Äo,oi$@`yèè3Àˆ½÷N[ib£ü•–µö´?ݽ§ ^j y>Ê„cÁ$Òƒ8Љf7ÅÞU£An7BE›NÁºQ_éÀü|oûªÞ¾Þž%Y• ´´S€«¦l+PZYBÿÜÐõ¿§1&täïÙ|iñ®bX–2Ó Åì@ Lç h÷ðÔQ]ÞÞj ¢·3(î|è¶"§³tξ—,@¯¿aÿNÍLÜjºÓRE´‡nþ´Uö5*Û]Ãz7HhxH¬Wÿöûcý2pMgð ü´=Ð¥(è¦ÚtÕo 4õùuUäo/@7<>RSo€CBþ«·£3Ex¦èûÞûö‘uÉ\«ÍÙ ‡Œ¨èO«1o¥ÑSIÇît!þZÄø9|ÖÔÕUYgï0 ¯ÇVF©«±Ê‡,÷Ù(;@:7Ìø…M¿ÿP<>Ê ¾…Æ·ï× äºgÿžÏó ®»Û¾|Œ‹ˆï >"àç8€RA`”¢ÄõÇ Îªv„”LNH Е¥âo8Ý)rå¨}:Oc¥8aºâ¥ÞJGqÑ?¶Ìç˜dd޽Äsß’/º'Ma‹mÜ)6·˜ûStQÈÈŒÆ-ƒ<Ì34}‘„Òé©#nÄ.+ÖüöÄÔ]áo °3žÇüô|$j$ƒ¡Š‹«TV}Bˆ¼†#Í+Ï¡”n¸iˆ¢g4µ‚Ê6úðMÃ`Ä_’(͸QáÚ5„õkÏeš¬¿™ËpZ1Èñ‰ ˜³§Äbg‰=¨šÒ=N]Ô79!—7ƒ*–þ-•g ¤²ÿ׿€Ñ‚„H?4Qµ D)È ‚¨†p®O‹lÁm©2î65¦¼/áHe/À-9Ÿúâ€ù–·ÕÂðCÌ”šÍIg±F•Hí5ÚÈÒy’wfÛô¬îÅ_2Ž]òÃæÐ8—N[WçצOØtÜl‡1ßè)¬ˆ«‚YrUœ7#"UÇ%-‘Ær^Æ,CëÇXг«òörúy²˜µ*`ÖNÌg àŠŸ_p× ç>~­À+Š…D2(E£S¯×+M;°Þqów6¹yc%7ÇS–a²cï!ba‰« Ç’[/Â;eug„A?âq~¸Œ¿loí³¥LlÊÊ c~,ÁeG’pûS€ý3€f j%ã#mR6Ô4s›ÅI\Ü @3õ­¨j§4dÚ¥ÒÆ’@}÷PD4ñ ¡×ÁwÌ4y±áã±>òzk3bp¸_†°ÚQMÐÐ6 j†¨MÑr,Q(‚¶ ©¸~ ,%ËÉeƒoRä­¨%—/޼EE‘QÕ®,`¬C9t&w&l•ÆpÆ€œ‡­=V“øNûfR9ìXÍY~3³B][OpÛ,Ô¬EÈ{ŽÂ{„…™î–ÝQ­Ya†xõáQ´Õr¦‚áø^.U”ð0ß}åÜš޲W.NªO“m?î4q¡nv —|Q>ÒÑïx§¯ÙjæôK,v sɹ žÏzŸÃÑókzs«æ#Õ«åÏGá"Àñm§9³o¬ÿò¨ýQ ‰ƒšý h0‰ònu?W‡Õœ$¿f9òWÛWòÓ®ÍbRoc(qóë‘au $ÜGíVcö¾±+¦Ò_³©~v1Ú±v9$à,|J‹—Sä¸jêµ<‹5wéëíȯäv:Á¸mí:6ÜÈ¡i,r·‚—¥HzUx&½-Ìgj¿ß‘1Ÿ]us³r?ÓfCaÁë>o jŽOSAk·±ˆ¨ýÝŠ_4Ûb6¾Ke‚6…‹Ñ³QÉÖü¿qÆÆpšŽå¤0)ƒ"«*T ¡¢T(€†RaT%þÏ•0?“×.¨b8–ÿˆ¹XÿOæbûw™‹õ?f.Öÿ¦ÌÅö/˜‹•™íßa®õm§m$ß7õƒÄš( ‡}ŸDÞ½GRÒIæä)›NŒh¹li<]£óû7öŠlÞfÕæføJÚtQ$öO§Ï‚ÇWÃÕ]¡Ë"§qÚÔØdç™k¦$.'Ü€¸ˆS^°ZBP4™ìíµF³ªð0žé¿ŒOÏGžizùØ­?…,M¡IoNxð¥`s·Æk+êÊðÉ’¿9$)»¦Ï,—ѱŸi¶³É‹#ZìŽÛ£ˆ&ÓêpH—Ü9#vA›ü •¡3µÄV°ÑA«/•~­4ÁïžÔa›¿´ˆÒÜ–Aç,&œÉÎÎQÚTèBÎlyÖKâO¤öž Íü½Óx¨šL 5¿ªó´8éS 6׫}°no„9ÕM²†ë+›ŒëSoõ\Ã%Ap¹­Bw²$’ÆPr„­ ˉ¢,²&ªÎøÇïFI.dÈJWIÓÑñ#n æ‚]A Ê09854”>Ì!äÊ}ÍFìÓ–6¬Û<¤LÁ€¾I¦×:Y,ÚaRÍÒ(‘„¼í…†õcÔŸ úvÑYmlŽ÷A½Ë÷ ¾'`@Ôf’åªùì=ÓnÕôhö‚0ªÌÄ“êKŒqEê$½ íêÒ9›ÅÇnYÈ¢ $zs¸!Äd’aD§øÎìúVáH~rоI›IÊ×FÕ9üÈ6^’Ã7N“ð™`qâ`W·½W†¼uYž 2ÓʶG«$²¤`[øð戔ÊЖ`èÊ[©ÑHýÈ…Œê\åÃ._ó¡1ú={÷4{¢<Â÷š)Íw<ŠÝnEÜ`Š}"&¢pî]¼ÙîNÆü@iªtXPuænK|M>þ´ð±éÑŠš&6ÃÅ…'a¿ˆ}ݦæâ4¾óâô(“!…„×!sê:w^-žZ¶½¯vû,G¶-”»ÏÌdrxtÒ ^H‚Éœø­VVÖäÕÖœŸ”Áß4Yk‘í OÄ«9å¼·×çkÒŸ”ž¾ 'âæ$—8ú熸¤]Þ°j1¿àzÆîwŸ3:y¸'AFÌ“{DÁª„ù Kï8ñÑkVÜlàÁOæECS?­Àþ1£Â#æ¾ð¢úT4eŠ¿dyÍž¿ºn­ ɤY¾MÝ:›º‘ó(w¦U¼ÉEÍ£¥˜_}òªí’3©µ\æ”u–»\òð''^²| APpó¹ì&ƒ ÏÎC.ö$¤,ÓÍÝ*6w@VõmcLóMHäš)CÄ;ZÜ‹x;ûðÏ[ûJ@îŸÇá²*¬H,OÈì ߈&«©-ÄIø$¡&N,«ìcjÇ …ɺ;×€K”‡¼¹Ø=³}r»nà)p ö\y'Šfyݦ ü¼<=8s–Í>%xJoSÝM6Ö0–zbN#Éø©‚ó¿Àô7t;¾©=SŽ"é€[Ò%ó€b¨¸'¬G>—xO2{‡lè»iînÛÝ"UKã¦WppóŸíü·?ßÓ.SvH_‘Ù»Ïq oáqƒL68Ðn·Ó„òfó=65@è$ñ.}ˆ—`ø¼éiÁÞ•-UµSTÈØ!¬Ø+C`‰›LØ ·ÞØRˉ2zµÝ»=zˆýª’Nø÷•-!‹(Z.Ö@æè2Q± à9Å–Lç&Z9eN«ÖþíIïAäÊ™Å9Y¨Cwf¹ª"‚øMÑâj6ùȼ­ª¥L¡"u[ÞÇ Õ”vËÝ‚Ô2A²•¤uÑöéÒ@š×YÇ@¡D#£¤m¸ži»ýɈÿ‘lQ¯ÉE-;®^UŠð‹¼j9Z]˜5P¯e¼ôÛö÷ËQÏ©}¿‰¿¼‡ƒ…²!þXuÇsiǦ˺óSûøÁøŽþå²°oalm’¤ÅŽ)ª›ê — ²¶‰35_ëB~L'Ç0{7>)ŽÈe]‘CÄŠ¾’'£ ’)¢ÞÔ/43*ò0mñ)Ñ>Óö'öÔ{û£šyí.@²b›Lý°PŽo&ž"•Ðjâ&D\Ÿ’|G!ÕrxN_ÏÞÂÁ/ ïnƒqë »[ S Øwm^:çõê(!o#¼€}jš¶TWœceWÁqÆæEtfcd؉†z (¶JdÞ®‹ãódË[ªØÑ‚ÊGÙû鎷‘µƒWiñ¡¿dx`cWó¦8ÒI/_×ÚûÑî£È}ïó©]"§u»_ô›‡ƒüÚ¼Ï zEuæ*W­ÆxñMêà%pÒÔœ&”:¾ÂV›©™ÔúãÌ%²ÉUï÷N]ùð^ì¹>VáÜH$ªxe; 7ï†ðáLÿîà yá“HFõJßþ‚cd}}‡Åþ·Õ)9y 8tå—ý1èÆ¯çªn—Húýg$N÷ Ô·Aèй¹äb2^/¢fÅ2!;uAåMŠ?ÜCò“ÞhŒyÝh–<ÐWí‘ý#vÎÉ5JÕÝ'>+xûó‹{Ý;1ÿK®CþTÝU|-3Äxp ¿â9çûNª+N´å–)Æ%ó@ÐÜï¤éß(mÁRpc‡ÂJçC©‰ó*>¢Â§|ž¾â”r’™Óèky§2ì³uîa©ƒ„7W/÷‰’ÍõE DóÅH–äW‹9¼‹Äi¦ý7îÞ;ÄÕ‡8}¬dSj‡.ª>'E­N2&}È#©9 Eòxè eêÁþªº¬Ý#lï‹Ú'þ–æjØÍ^»ªÆ"x¯™ô5ÑE‚Í€ßÿ>±)›­mn›Ôéy„<Šˆòi$eæ×¡äëûQdza úÈPÆß‡ŒÅV3ÿ%ºÛðȬ‚H黾F5$ýòçt¹­¸Ý›Ç+ÏÏ]õÂ糞ST×|±f§|02 ^<íSü†˜ŒUAy•ú\ü¦ÿ­žx© £Aêe•Ñj{ê§Ù‚ƒ»è«†§í!£BÃÜ%zjqº¥M…?êBcÓùS4¹«¬ËKéÖ–®z¦AÙ¦¶_uVºs¶ {×#Ý¿µ>üÛ0§»gŸ_ñ&"á¾Å}ž¼AzUH™…Ÿ×Ý®1­]×oNÍ£^— ÕÕ&<, z{Þõ§¢EòÆËÕ¨WxÃ5WM'íŽÿŠâŠW'‹-o¬nYÌVæ“©¬zôI¾÷», ÔU»ß1õª§c”âWÙHõæ<ïÍk…ÎïÔ±æ—ĽÞ8„¥3¨góÓĆd‘ÞgC­÷K×81‚öÉ—"ý™¡Ü«Š¨GÆBH+¹Tï‚Ì¡ZMïF}ÛýXسƫXÍ%Hü„Û½¦†Gù2ï‹Ç.óº ©0Á!ùÖûRä“Pvd ɉ˜×¼ÚûÅÐç ó­îñê«kÆú`C‡Ô5"Ë/dó-IžþR'y¥÷¯îÖƒ ‰Ò3Í|$õ©o.|™ôSCï±YùûÖ›º%—es[@É»14|×I¹¡<ÛÕeªÔ¯-˜ÖŸ¿HcÁÁüÐLÒʸ}9­‰jÑáÎ|0Ûhz­û9¼yx{Üß³Yé€W1“8WþpW_AH·8(Øê1ˆŠŒÞܦ×È\aT-’ž±… E*Q/\L™ÚpåLåiR¹Hرåm¬+Äð³Ó]@Ž7Ò#´ˆÙ˜ò+O—†Ò¹/€§º ¡У"{1CÝL Z~X(Ši˜ õŽXÏ/,âׯ‚L,¡¼Â Ñœk œ¬C$‰ŠÙœk”ó™ó6ØYbôµéѯ‰Jàhñ¬#;~1¢ßyFSW¢¨\¦ª*ŸDYQô…uòËåŒ-´SaDWRê@Ç,ïÿ5²p”™ýÏlÍþ±5ÇÿÉÖœÿ.[³ýÇlÍñß”­9ÿ™­™Yÿ=¶ÖV>žBô{«_(>4ºÃ:5&œ®m(pšÖ”‰B £íÉ™îŸ_ç%ÖdkJjÞT! T×\zžqycßÕ»Á­ÑyõL,j‰ûÑü•ê¶yñlqgQßÜW#ÖE•3/6Ÿ«2C/ÓC+þ"]B_jbѰ1Ná¢Fðh\tı¦Þ¯[­}˜ÝjEñjO¿[/îή¬éÃU"|®VPU<ëh sý°Íymš(‹ÎG…Èï§¥PéójfÖÒ>ËÇ+ú¦öÅÂzÙ8*÷á‹]æ—ÊÆ–`ò»ú¦¢ÒŒl¤ñéó@Ä Î,-o—¯ow\LÿŒ'.Ýtä‰!|–2‡ž–“F#)/%¬?icZ¼.d© ꆊ?MŠatX8þ¥„Û3u.œxVt>J‰Í¤ïoÄôçÂÀï×5<¢ÖÄ'£ÙÄ@Ç2nqžÅ„¨xëÄ ¥ ŸpO5_W®Pü±€¶E°¾¬*šš÷Èè«-μ¶§…¬Ã7wæjR²›¡¥¡7qdŸap˹ÅHˆSQ-^¢QM¥óv?Uð¯›Ãâ €¨)_œ¦õâè>1Ι1Ǥ AäWcù"ã')Põ#B¹åÍüHFû¢™ýH„iJrÔ:ÆÀÉ.Ä&póK<†Ãžˆ(±õ…ÇÝw}ÚmëûZsß/Xñ$‡FÜԀ⟠»<¾%ëï1ó` ĪÄ|â`CÄÊ’Ãf)˜#gYÛðµÐ9ú¨sŒÜOÛj$³p“7§œ%ÆÙmžnB–*?!áU0¨i‚L óÉ^¨˜¢|2Þ­æêúË¿‡•ÛˆÞ:Ë‚‰ I*1ž*â¯+$’îÌZó7&ð1wìÔZ™ZöâøÖZñÇUE~©õÙÁÁ3LœýqAde¢ª±%ˆ&N)Ït.›Y)‹óÿº€}´yÛ–Z}²Â<h°RW³€·Û0Šî JÐèkýC&‰ÃÇW¬Ì˜”œ.nÖhÄR4~,ÀŸm¯Ö¬ªº¡Ý\Mç`òñ“µ¼9wÛL.?»µÜZ¬ò½¹¸À1õ,1ìGa=C¥Ê®WQ ®k—!bÅ‘=†š±­·´ t£C!¼¸€®AJA£½Þ⎭GÔ—ž~^dÒCô•Æ‘Qƒ¼©™.»÷4÷V¨ï@qkv(ëü”l‰Ì¾ b'\XåŠ=IêVG/Og.>b~‘ÞÛØËðì´Ä]¹2lQÍ´ÓVvG¥ÓH¦/WÁ»þqyã,V#‰ C+-Û×U 7wJ®’8±Ùê‚Zõˆ±b‹g ÈzGäê#%PMV™‚|z™æ–µw÷ ÍD0bꮸÞûØ©‹Bk³'§Dî²ô ÒÅ„ ó=Ñ{I¹®2 ý ¢}a‰þ—lŠ 4ÑMZú C—Ó#¡jß²ÆV½|±6{ lîbÉÈ&w¬õœ­±}þ³Îõ>iCyr*ôZÊbÚ•4¦O•E F+[§Ôg¤ŽYñ0'k®¸œ‰l©ýMø-p©ƒÁ·5Nd½ %¢1ñz$í¶#’ßz(£Þº—1òì»Îûó8àúXÖ7ƒýC´¨¦OмÇuæž¾ÞE·=S\`Ä">wȤ¿Ô±EÀ^ëÙ_ú¨’‰õï}ÙÌökdƒÕ¤$+¦3]Ì‘VYd`ÙbMdŠ>D* bçY‚”:À*ö +“… 9¬Ù/çY6‰‘peäg=ño㻵ÃÝáKæ×f˜,Eü9Pù÷3n+Y¥á€:>p˜£ê$d‡¹¾Â…Îâ,²ÛúËG&†znk ·ÕŽ€ùaO! ¿Ÿc—Jª¥mƒýäštþЉ¦×é‹ÝDZ©Ã‚ÿŠø=°Ž2XÖ÷â–€÷GPD8éWÐgø:ªfåÓ>]⤪_lÈþ’‹MIC»¯q¡,W@‰Ö˜J&œÁOêœÔi;}IûT¿’´N­=ކ”98²‹t·ŽØŸjzîÖ‹XÝQ.æ­YòzËnó+_›>;vSím*Ô£¢Ízý<õz!äÒ…X2#‡¿ÞR)RyH¸šŽÒP*¯^_’Õ6çi˜½ÞÅÍ ]¹¨@àQ;•ÈŠÙ¶1”¸pø’‚Ý©ì}ÖŒA‰ÞØLé9ÜÝ(Æ\î5$tþG$œrG«pcrøÅxÒ‹ÀõÅqu£1‰÷±kn*{ƒYE†q­ è=µìE‚ê“åUŸ|Êš³ 'ëAÇCÎ>”chVÓŸ ï[\-¢ö/EUéÈzªöà+ï2Ò —„ÞBÊc %hqM0äÇ_õ×{F±c"fm 8ùDlÿ ¸fèçtŽ*ë8÷di|“°¢Qi¡Rß2Ü< ·ñßÌ‚Š. kôšwÒYÿˆ*õêg¤7©Oµ›‡š²l8òä±PI³êyâ<7ŠÅ´¤M«æôÑ ¿–|OÝ€µ$œäº¸gh`ãMú¬Î.kíOBw[ë•©cp-MT¯ô0°B} ©¡bý‹•ˆÜQécÊ<›P\—œ•T)Ýw]¡x«ïJ÷`%^×Õ‚{wÉÛx“á¥k°R/ «*ÁJü”,ÂJ¼©/ÁK -8ZÕÓ‚›0ãªýu¶1dó¶sŒÿá¶ÚŒÿ§¡ûŸ»Sý¿::öÿ|;lÆÿ®[Š0ý³§cdfàüw<ÝŒº´<1'BßÍ?à/mœšßÇŠldŠ`‘ŒÜâE¡BF ÌÍôï×Û¸K zoG¥¸uëÜ×O­jw;Ó÷͇Úýù¾'þÑ~2úñmpe`;ªÿØKŽŒ'èa•E`cI96qP®” ë–‘…#Ò¡RÁwIV2kSyÜ¥§¨÷ЯXèžëZ†m{Íe(êÆ$Q+|œ†>Ï:‘i”Ä"s]DüïZ k’*'è–漛k%Úoa"¡U±ÉÁÙ߯0L’Ÿj‰MäG™¢fe—ä¤~%û]9Å;rüemNOÖ=ߺwïŸl ¾Ú;·rlþ8QD¼ÐOõWd÷î»Jý^üËÇ‚;:<(BâÅӔΥ|pšËÜÆÑ^f3ÌK®&W^³%ä1ð[c£­Ôè¡ö!ÃÙäôô¨¾Ö×*Ozd;‡âç™(,TÝ2ÛÆ’%4hfL‘i43(IÌ-yì0¦9lp"¡ß‘ŸF«èckS-I“µ1Ú›Ã_”ÓOôð`¡ =v<ÓÆ¡ –Û‘‚…@e±¤ÀÉR{þ w`«!=͘ìÈ8”ÕS¨ZÅŠø°'¢+áÝJvÀQ¿ia ,~ào¡(8@?3‡ £âÃ# &×öö¤|ã,$é§JÕ>žOÀà!·_,2‘Ÿ.žyq?wkßÈÊÑó;Ê©ÌÄTj£å"ÍÉÃ}øôð4ÍèlÜX ìoµhF…¡ðÛжÖì5±Šx¢ÎêÂàöU0`¨’ Ž^£¶PúÝ‚4¿hɇ J‹û‘(²,¯70o𑱱®ö‚“Å]G„¢QÞArú*:]Q_Mc@IiŸð7)eH ÂfÜ¡5½u*ÈnÙ¿ª ¹+£E¿ŽA7–vª+Ì2'£2–áF.õ4Î7‘Ýe[9R v2xóù‚†Ï­Ôiœ5b“äÏ b»W+Ù )`Á4©ËÙÒE,éKw‡ PKhŸS¢ÇEVê®µÆ ð³BæÈ:\ìÓdw2%wG€Ö9uìw¨o,aAêy”–§v¼p <šW~lÛm¢ÂdHßd‰Æ ¿ê5Z4´¬vÏ!œBç]Âf(i‹…²f·Âî>ð€2 5yLY‘ñ×G¤53ÀþV¯ M¬œ™l cC¬ßΰ*}¾¡’@*¦CPŠ®“;q.½ñÑИŒÃøš—ÔOjžì×-iŠ ¢j5 ók¸ íñ_m5„ÓyÈj— D«¬ÚñÉò!—€ÌPe8=˜H ú ÐÌ–½šêÊ„'íïŒ*…÷÷ÓÊšä½ö~¸ñVŠ  jåzÐõ:ÀÂZ¾ÜXwޏDÄÑftI£‰&Î>a¼É»«†ã=,7ˆtä1¥{µ2Ü[a~µ¢*gè‹zgãûù›\aøT´0 ˆ¾«¤ïXr†0­CÄ'á5©YdÊ«¨Ìrœ´Ñã*© Ó-ןóÍÕ©ä)îÉ(üëí"/¾úh"gµ—Ùæñb8¸–Ί &™° Ò{^-s*áɶJáŽA˜¨ÀïÞÅǽ `KàT>®}2«‚ïÖG¶U«ëb“ëýc×OÞ^¸ô=±A¸`;¸±l•y[‹bƒ&Ceéâ>ûƒ4ëÈþ:=¾*ÕæØ„}â&IìS°?pÕò÷ˆ³GüÁ&éÿEµbþϪË?U+Ö·ZqüçÕŠå¿kµbýÝ}ö|oÿFµºQ·µßž@ü¹ÓoÄO½¡ëô¹lÏÉ…ÞÑIJ«§ p¡É!é*ÂYÿ‹ùw4×Ü,- éM¡@t|˜¨“›™»~~¦¿X3fìÔóÛúÓV˜åøèfôÚÚž/Þ¼pÖ˜ÁU4~jdè<•²ªÎl=÷Êî¸j'µg;…¤ÈÆ„]ÎËŒ.¨Ù^[¶Çpë;ì­AúÜoös÷ûfô­ôÑÌÏ{íBÜÿ[é]kM6—=N%Ë~®g_óÄé<2X?§zæûñ†Ü›÷wQU­ŠG˼.œfÅÓÒ¾ïk¦ÝÓ¿Y“àֆܤ{OçYÿÓõ { çŽ]3Ù{Û>u+ ½Í^­©ÜWB×Ü?ï÷gœ-Oð~µqFšmë1 ãV(µæµTÃwΈª{Ò vsÓœY>^÷Œ²Ç„Ì?sÚö ú³÷¤ù(VéV]3 ˜†úV zÐí³E,ùÃÂþµú%JGä°QþL§SeãìäDùNQ†–‚qTËš¨\”Z­Ï ùOÛs e!Ùr¯½áç ÇÑ )ßì%Ó‡õ|3Úà®É`ôøÇfæôŒpº@Ë? ügÔ´—Ú³=½5"¼öRäÝÍÒNÃfKÏ8?Ò%Ôg„ÈÙ™È9z'²¬]ãyœÞÈc•ÅÓ¡îl1´+ŠîÕ4Ô5“8ÙWrò¸Yó¨¶÷îí \®Án'[ýÁ©h÷Loûñ’¾~~-³B½¢™à‡Üýò]L®ó«tÒª˜ -ÒfbNó|ÂbÏ#!7j”g}făü«—¦öP(Þp3#10v!SOô2á¡[b³A…øjNjŸ^µU^^ÈÜãK.”,giÇÈšTŠâ—Lx•Ïm<íôJ”ÊÜL…At7!™nDœÃjTÿl ñö>2Ö@ ^±/Ù»¡UŒlšay#ß›ù&ôŽ/âa߀°ûa;râÖé»ö#°`dLIu‡¢ÅKŽDü©)ꚢ7]˜_nJQKq%¬wSæ™@jP*dwj=9jo¿±!oÎÀ–ÛÓæÀ8Å<ëÛ—¥ú6O樾ö†êVKŽxFe˜¨ô>ÎdèÅ4q½gàðÆÚ‘™TpΑµœ“O§™ ¾õX€Ñc¥²ÎçZt$G÷hÒ–™iš9ìHr’ñ˜ÓŰWÎ~Eâÿ²AXšsÓùÈ䑊Páiü…¥¡¡G…jÆ ¼«•¢Äó2URÓÃÆ™hÜŒˆ¶ŠypÔÒBñ+k”¸€p¹‚°Æ6‚¢.‚d–ú梇 Òùíè%ÂÚàP#œ¤*¶ûz:Tu:oâ†þµ Ïÿ¸ü¯áéëâëëêöôù\áhÍßDŸË_ž’{5kÐ`¡1K[›6¤ãjÞyè ”—ÃÔ5Y `¤]ôŸ³çsÅ®±Oñ;ÎוNµ„Hѽ+e3Zž7Ý1s˜àjSÔÔŠ³ž^À©3T·ñ F³ Wÿ”cïø£Ú[¨DÅí*…´SS…ý&F…Ot–ÉJˆcÎäõ^0ÉðІì‚zö&‘½°+e3QÁbsHçËG3 VÈ©Zˆ 7‹6ìóFòv-ʃÍYŠƒÔW ŠKV²q:/È«è¸F¸U’ïI†ã…Œ%|[î™'Æy7•‚.Ntè2ÅV Ý«é¾õ„*k»o­Ê¥*AlbŒœ“ânlFá½0 úHèc¸Ü¶iO3=Xx¼:î||0Flà*”¦B¶5L˺Þ@Ÿ¬7õ‡·äqE"VÈ eĆEË·:‰½h±ae >QLÑÁs L°gQœŸ¸M!b±.(ëÓ¥ë|ÇšÕ®ÊMÙ™:%› @f€TŠÚ¢#¬\»ônHÞKï¼1ÙÉ3}€ }Ø0µÏV¬8äôûH‡#`–&–ïWSqº¿q`ó ø, ÿã󕟸ZècfTê‹Gû»lH‹P!ÙÃ0Å*£o+ ¥¢…;'Fv#p¹d´vúSÅ!@ín¯y¬JaX .,³W¢Ì!™M>a~I&NÒ-’›aÊ©Ê\Ÿ7h‰ž$îÝ´'•Ä 2³êjbÏrƒìÞñ¢Ê˜k—TòÌßÎBÜ’UK éÓÔ#5‡­Xlv\*‡,;íË·,H~%Óû©¦³{=VYÛaç¹ú…EN’Ñ6nñ-§«@9is/ã‘Ù™‹þû>_êdÀdëV­ûñív†ùhrÖ¤>+àˆ“o‚¤X§E¸ƒò B_Ð']\…(dQ‹rËv¯Áƒ‹$ÄJæd©ÇNKðuzÙe<µŒœÜ¡oBÄa -èây6q6+¥ÁÑ6…‹Ý ´zÈÀ±&@;«‰³ãpȃKfˆœ¾)ËzÜäöcÈðѲ6 Œ°à,º,×,¼ãL ØZ)KOtœ/“²4µjöZê"-]–`$” Á¿¯bçÚÙ®q~C„¤®ß9¼u"óâ¾áš¥`†R‹Àl6¯îî)×à–škò3™`É&Ö0›Ÿc]óqZ¶«þo™·¼#qKÅ[òWOÀÅù±Ô‰k‹Zy´ ½C`¶†SnÍ6èígôš½%ê·ÐE?ŠtKÇ»ÝÖ÷Ä^m+صËI\šs-b'¼áìâýˆÞ,«¨‚þÎå¶„%"o)ül`Ýr?q† e Ý´Š#RŒØ²“u&ÌŠó^6_·,Ί‡ÞGc“¸5= ´H¢þ æØpŽÉ±ŠGîPWßd×”f9ü-^S&™ÖW¸+€@C:µkš7ׯŸó÷ïÿ¸ïTv™¢"ñ•tyÒº½®fn¹!€œSLß´ŸD "Áº¾À5kãýé¥â`ÐìÖx ¸Hç}äbØ’ ô‰tXÅQõvû9ý˦Ø„$«à+ž×᤽$Xb–aZU;ÊKil]ƒt#YHÌŽUa[ožú«®ÉÕÔ€]-?¦÷eØ}$:øh¬ò@‰W;KÒJWA#®Vàð ¦BDQ‚ÊÀ)®ekÒ1Ñ–áågSyyQCNêr4£ÄôèÚµ¾ÂºWNT¯ýkׯRŸ´¯2vs(fãŒî}wG¹ý”7íšf OátœÖ]ÑÛ2·Öfñ¼&ð$uÝíTš¾ÞmB ¸ÊEŠÑ¹RUÙzóS¼Ò«Ð®L+¥>ήøZÁºQ²œ”_¥¯­¼´íåo#üÙÓ"þu.ýÂfîU?Ÿ‰%}ó ç³3ɦ”¶…£âùp”en™’ ´r5’kSJ¬¥Ècg>"ŽqU1»ž52‡‰Ìú,·Yì{øP¦™í7˜b„»\H‰#qS«¸™§VÉüq.Hú÷åuXm àú}Ä]€4V›¶‡¯>ºâ±\.ÝegÝí+bÐLÊ}C~½fv~GN.ÕJî±)8^bá<Ýèbç\îJÈk±;¼SädÔŒiiÖçøI*]—§“o›P·‰’“ûN ÊëmuÛ;Oko©:=ìÀ¼Ð±4= igz—j‚ÿ“ÝÝó¾z×`v‰è_„ lÿቒÿ&pü»aç&°ÿÿ(L c%`åøÿO®Àñ/rö'Wˆù¦w¢0€HžslØâÈM©µ•S3¥‘\0¥SÔSrLúü¾À®È3•Rv°Þ/ƒÓÓs•“åL-59¾ÝI¿××*휟fsÿÜ ­U6W=+xœ:%{¥~µ´XaÓ™-i›òÍB]ÕB1(ªì\û¤©¡ÊÎѶïl½9ÛîìîÓ×x󽬾^ a²æéªtˆ€ñRD­ WÕLµLH¿„*¾#›Zš5Dö5MU?¦GËÚ}ïÓ4ÒÕ¶Ö3¥¦XÞ³5›(\ê]­\ÐCf¬È21T®n¯RðLžC 5zê ›” SÿQ1šnY¹OÛÁ×þ]øvLǸÀíý"l]§³A†þ{ì®Q·Ëî˜È?þÛÉ%j7Ц^J½$—©ŸÏĬÊSêì35m–‹79pÄÙ±æ Ûk›,‰ß<‚²Ðs˜£EʺH ÞzJƈVŤÈJ»^®ôÛa¬<½êôk$üIJžnäëkõ×ÅOü¼é¡^°m­lÌŒÏ+@¼Fš‹&™,§7;ðêÁ –µÆîœƒÊ mÈpвãjˆ5²£®+“µ…Ýðt›õ‚¡©%‰üùxN¯¯m¾P¾-#5`eFAÀ¥l wɬñ ò0¯ 7¯À^›e-'¦‹ Þj©f¸M1Y6ˆ\£žÛáJ¨]8­cµƒû3/:µˆTa:®¶.…PÎz´ø2ÊAŽ[œ\El n¼x¹üöW sÀ—[§òqðÜ%RŒ‚>húfŒ;Tér³™Ò<4Õû8›ì·¡Íht"õ·b›-6ÙIÒŽM€Á·JÉNÅÄÁüò”Z§“ªUlû¢ÚÙW·ÔTø½¡5XŽ#h{õZ{{>òõ k}Xñ¼=ãAi¦îß:/½aU^ø¡ì‹ëžKöÈQê]¡_PîªgŒ¢"t@H Fƒ…ãCï6#›ñ/!dO’º–?rªZ&u ÈÌÍ?¹%²Iƒ>sÔ™ÑNוÍÒh®-¨®õу$¼Pê^,î8·3”Y°˜cb-ÀÀD¡–‡A”Kø°™¿¿±Ü_Ư­GÞºdÀ<æÔ&‚Ø!¶ôàµÙê2ø *! âÁÅ2ªÜ„)Üo¼áW$‘ÛzÄœýç];€ß —L÷A[µ%ÄuÈß[ɼ«7¡“C,¼ó ŽœÀ P•iMÓbìpJ×2·ZY\C°²èoqÉ4 šÍF]›ì\-Ê.„êû+ÃøÝ’V<Ú6Êa}M{2ýóºR*«ùÏšDs[éü¥uðßb c;1_kái{ÄùºOŒn(ü˜÷œÚ° Û¨jŒÅ uZQÅ» ™GÄ8“IJ¢&#kÅñ–!¯Â$ " Dô ‘6¾Ÿ*ÅÇM–ï°ˆ$B0[Û$rø‹[õÚLÓrÅÞ«IM12ÿJ¦i_m°CÙðÙSÞÐ ¥„Csë=bÜXº [¶ r4˜¬ÀãÉ•™ß*m·4‘UH½¡¸Õ8ñ °Èk»ÆXÄË HÎ2îHñÚ’$²Ç´ætÖF`_(Q;eêAƒˆÅaVµ~b¦xm“oüÐå! E€Xá^ATà'Qwk/É¢.+ÉPR¶/°Ê—¤\[±‘/$±=—@‚vxÂï$j+Ü up¡Tg‚Ü{ÿ ajÆ­n[Z tÎ9´aÐŨ¾Ï6Ô4±‚<$ζö ö¬yR`ŸÖØn¢>:/YÌŒeaçYî9༮¶Ùt$?£U?ZP$†f]/]bbæ»=syÄm§Ûðàµv”r{M*ü;‚NÕrå4Œk­òæxŸˆG¤+òi`ꢓºŽ$≧µ0°Ó}täÒì»G£‹Ÿ&±À¶GZ Y VÐ-ýbc«§X%¨Éây@ÿ‚Qb?vÌžWy°}0ÇC 5ú ðu+•zòN”•PoøéEëm‹¬”¹œ\|zG!=PùðØäö„ @‰é„Nî“,d¬Ñ$åÔÆðWôç‘_ó¾åE¼zý KÏY\5¶çÌÙ–IŠŸÕýEàx“úˆ}ÏH©ÎTÙžíÆˆVZÌ'F¹ùî"R»w¨½B9#WËwÌ-ðˆ¬Ê(«r&2j'„+â‘ÀõOPv| ëáA1A<³É*'Ö/!}¡"„Ñð¢-$+D ?ÝPR!‘PR +Hu„üåF<%?bêÞ<Ø)sT¶CŽ4œïà«–¾Kj´…†#Ò$g9ggnô*:c%4G$hnòñ™(ê>ösNCZ),QÔµ2^±Q¹Ñ´²ÁæÎŸnÈÂ}AöžO‰¤M-´0À±S~é M╌ÏöY.‡×ÑSþƒpì[úYh?K*:7šˆ¿ÁÑyá]óçei_ÂxÔ”kœÑkG,¹ÒQãèô§Fhé ÎäÂ¥ _l¯vfOŒ§ya6·Fh IW¶˜êd4 #¤V%¦Ñï‘Þ¦7)Oy<~õœqïà©÷[~±özAP5âÞŒZUË òoÐ[rc¢kŽ#\¤ÍqľW¢;½ÉaëKà V¾³ºêÄ„DŲJk F•ÇT;øË‰ëßûËŠ»ËŠuáWx«@@w†}¦ÒÙ¼1$m jFÛàreÃ- Ê"¥‘ÂÛòñ=骣îXüåÎpM¹ƒëëÃÝþþ?_ÛÙÚÁš_²3µÑmî™;‡/µa,JëGÁQ}°¡ËÅ…=àRœÍµ>uVÿj9÷~Ž)I‰_dÄaSnrþ5õ~v¨):‰dÖJEÙñ¡Èe±uβ# ¤ùЪxV6]Ð 0ÂLT í 8;ããA˜ Í*sʪ+ó÷#ïM¿â…ì[³,Çì®í ‰ ýSîþŠz'~ãù×­W‚óË©ªÁНÄÊÓMõÕ× ç¼˜F–…-dÞŒ„±$¯vJyg†UÐó’£ {žzuu°Ö…žA –òâ•ú>/û¤qÐô2ò±¬ç[K"¨e~’™KÎÅîF‚걡äøî±qKÿ‘p–¼Æu(/éÎK"[RqËjħâÊy’}"Zw—ÈÃâK°UnÑ0 ¹EÖ# ÁÓ69®ÈݪõKÛaEÝ bm=ES-èiKh $Eâ¼þƒÕÙ/%åca$®½zÔ¨+Ç6½zµcÐ.ЮmùÃ'‹ëÕž’1%!N]1 álêÑÜ{fÓy†3tϹo\nF•DÝž‰#U ÄÀB‘Ž šs92š¨,TŸ9V9iØ ÙDž¬êäȨkíj>L7¹Åb÷«£ô¬æøž§ø`þÑŶŸ <ì'“¨†RÖÕ¬"ƒ?±Zܽ÷òGg‚‚ðñ Õúµ˜Ë f@ JàeçÍK}òGݱ½ÄËì\5kù¤ÐI—~0O±ñ¸fo¥Éø†„ˆIã.ú3„N|±ô(Nl€ ¿øïoð0B €4Î&¯’ŸHºê409)¸ú„ÿÖò!Ä’9ûkQÌIN\)o9ÁºzX ‚»8QÃÞ3}#V¿ÈÈüø;¦+õc5‰_Ö©áàɆêÕò°£,/¸Ï‡y©R•|¶¿F«6ÅR~ZKkàýeiåÙe=-—9iGÐêËúg®x&Tï²Òño¡™ýÎq1îÛ|{¨/‡h‚l<ìòYV¤çÈL„V1®áš'z6DañBÂ&›EÊ”ϲnö†7tGm¯?,‡Sí¹®‘&4îŒ1¦Ž~æ,¥}Ìý­RÎf}h«"Û¢‰Œ7”%aòÚjsr”±•£1Ì= tvŒïÄã»,´‹.äÙE‰ïÁ™EfEýT"ÃÀñj·ÜD9iÈÎsá%°XC€®˜ò±ipø_½¡O³AQH€ïÃÛ¼O ¯ Ò7"ËÏ[gGª¡°[ýÊŠ·"áY°ËØQ†ú^qÛg“Ÿ¢õsù¿ü¦ ½‚N¹Ï˜gÝ*”ÐšŽ¿È4”>l…£¥-ì ®{¦ÓíÀ6Ë[£—S#›Ý˜e­{'¸ÛÒl¤„€Ïa©9LΩ„?Â.ód`i¯™Ü0XIoþBcÁûðæƒî½'|/ ¥( •U²£´N]„¸©7rÝò[#Ù“P¹ ó-f9ÉäádÃË“€ÎŽçÑ·aþÄŽ¥¨oIð?ù¨›‚ºŠR‘QÂð&0øYLAÕõlMÇjýà8´Û8ü‹(ƒó?ÛeŽáÿŒ2þç©zÿoQÆÿýÖÿhŸ9†ÿ¦ë"þ×sÿçd'ç¿•_Œ¨K:c£öýQnäÅ|e¢®ö(P4Ãájx4*U6""d`A[ZšŸ ŸÛö®D!ç+QÍÓÛ»n÷±¿LŽ–­»cŸ*3M;ö×ò¿uníäçòdv¼:>›X·¼SÕP¨àéhQ(”®_»]Ôq£Ö.a+Þ¥FÓíö4\®"::ðĵ¸.*ù{¦Þ2L·ã-ñiååâ”JY^ö§ª¾á¡8þÀ)¡¡fª¥‰`ÉÅóåG€8[ åÙж°Œ^¼ÿjòy -õQ4˺š,÷Ñ4ë²SÒaK½¼Ô1üÒex|­¶Ë&[ü˜jã&/­L*×NÝI‹Ð¶Ò_çá­PÚàQOžîc#ž§‡}€g ®hñÚÝgrŒ„Ö¥› ”†*x„}Öja]üOü¥~|ù¨!`­ú™fVâR›†åutEë´Æ5´‘òE©$ÕB3kd°¡-NúJIf—&ºß½‡ÎŸÃÒœ-ºqDîšej¼”G=v¦LÆB&ºõû¶èqÐ ˆbþjèB$³éÅYã+ØJ-d®q|Bq”VYaC`ªœ/Wʨ.!”2HVq s˜›4°ä•ºTö†£Á–Ú›€üƒ+è÷ŠÃO1¶´Œu|fŽˆ$?üÛøŸLèè8¾Î§}Šh½3³ëIu‚züͦ“epÈ7›Ü·±s;è ,Ô_öêL­âI ‰ˆl©{‹&1zU囕°·6[ Q¸#üceYúÍ8OÑ¥¯îu³ÏˉR¾y+>‘D‘¶²ãµÆ‰hTP;aÁš ´›5 &ò t!Mú®T«»®]5[|­…Jé£NÒä6Í?%‚È'0ãoXÆ• ÐhÜÒ¶¢i±FÂJHoëG?-²¨zú×Þ9õ:,s„VÀ B骟ijnÏðm%6mMIqmêÏõ Š)-¡æêN(0øÖ˜é‰™3ày¤yq' B`Wý<0êËð6‚×piŸeåæ™H"n&k°êHµ]É¡nAa!;gBÞuµ`ë^l'ÂÍŸs+»æ*Ú-î,3Ñð<-Žð™d˜"AÕÖ °œg¹Ó¾Ìë»e¨FX"å0ò¤ˆ$”?Úƒ÷L1¨àü’YãT>ø_mXÆüÀðÖЃ™€p´Ew²Ó×yQExPpX,ÅC' ÖœMi¦®Âe!ù­¿œc¸i-VŽl×~=¶•\'(Uy‚ùÊ^ªQ¿BeÎ,2r‹ñàƒ¬Ò ”¶4 ~!¥Gà¹êNÄu‚Un¿}ad¿GÛÛjwî=”êµ…=”ê:%L猰t‹h%"UsY¶þ”N>qÐ2ú€Î"Ê»6š3gÄñµWgVdû<<ÍFLÞ'…ÅÓ¹~G—It(ŒjŠY¸þÚi‰u½..ÃÙ6—ã?¯9väkù¦¾SmCY"V¦$_kÁ°Ú÷ÆÐ²0õöEë2œbR‡¯ÈZè4ñÝ·EÇ{F£ÂV6ø¶|£%éÂÙ igͪ^o»IÕiWl &ƒ™1‚F©ülu é7]/‹ ƒ£ÙÓ× ˆÀ¯9¾J8xÁ†¯+5~ùtrö{ü¼ãDÄëäŒ?¨‚¥Ø$}ÝiVH=f ÷†“¯¿j/‘ñ³‡Ý ‚ & ì´‘ß<8ŸÅwšg.÷.õ9fJ ¾eb±Uï’Œw”®ÿB¹©Ámtï=ǘT°¦ÂÕ@‰Àö=ALgq„Âê4ŽK[‘Dtk§˜^ígniM¸á#ÎüòƒÓÃ^®H6u‰Rj+QÃ矌ô| éÔHÀÍÑ÷àsóŸY›IÓH~õ !=WÏßÈl"˜Øx(¦4ÆD‡t[?èSжͫ¯lÚæÂÕ@ûòâ$TKòv¦ACtÈLªÐ³°Œé"5‚¿E*Þý@—X…lêÔñB? 'D²{¥Bì—ÛW-(ð’ ÊoÙàY&šjôVAԗ礄ØËÄøît< «sMåõáÐïi¹pQÂë…Ón'¦C^† J¥ðT\¾âoL—¬¨‚ïözs˜Û¤ 5Ð_ÛÐ÷m `&fUhNÿýeZt£æì×ÏÈÜROL¢¡ WY %yÓˆ”ð)'$ºT×TþȼЋRwxþøAiQ*8t”?ž8Ž©Æîñ$«‡ë ÁœÊ= Vˆ™=NHšäp*Ñ,êN…¯_ÒápðŠAÊ ’9Qä$)V%°šci¼ñëFÓs£içÿ>”Bbw1Jë`<Ÿ.l|sŃ•lõI`/ý r*z\fW‚›€gH ¢¿eÌi9u3æ3zÕaŸ-Á 33ý®ÏÅ#.ïvóØ­Jl>2«bÀä{±—/·Ñyî8Üè<ÿ^Ùéíu%¶—†½½IÁ%¸Ó@n‡™ÍÈHcVþä8½þÎp²×Æ}v`Æå v´(‰OàwaZ®ØÄªOdè}‘¨ónYçæ]çF¬îý OsVþÄX8Ö<öPzìdð’‰_ßS Gsl¥ædcºyé.œ—+Ò± ‡?šÆ¾8·0é긙¨Oõ·s7†“F'œWvH"94tôH…Ï®„Åõ{CÛõ Þš¬d%€UEe¨' K !è±Ùþm¢¦;Ïù1ŽÁŒm·*8…)ò 2…n2GÑ.1£®ôæ|´*%T¹•³bÒŽ”ÿÌ¢ìL" ¾çí#aÿq@fܵ¦&gPÃñ°ÜÓ<Œ§øéØsæÂùï4ù2­ÔúÔ¦GuJô)×,3æð­zÜÐyä¥=)ˆ Øì¼ò¢ç8‹;•>³•qtüõ,Î3¾Z[\­—ò<¨äJ©ß›6U1â,Ñâm$Éà„Ô4†g,ÜvFï±ÉPNØÃ ªA£½Àjº$ŒìAÞcÝ<ƒl»øÏ/lò@r¿Â±ºáû°qíÒºº?™„0Ì’~Eb+^L,=s8äÇu–(Ò×pR¨ vŒNÄÓ`‹˜.ªªŒ`¶ZÙ¼.èÛ9ç7?ÝɶÜá¶À”€ £Èø/ÀÍäÝ/Ý]uɹR$æ7gÑ,/GÐMV£›¤àâ°÷Úœgï&oagÇJ{ÐalÌÂiææ¾mÞŸXÁ•Æpø¼ÞWzŸö¿Î;ÇšxHʇij‡Ãc¨Ùù¥7fÝ_ˆÀ£ñ=×Ó}»ƒ] R^"¬›ër^£âv¸íVL½­¢¦Š°I»À4×EJi&äŠF·µà·eùqIG Ú}ëŒÛë+O¶§“—>G om˜jáí¶>åOm-óMÈâ«Õñ¨ÒìŽpó›õ·XóÓB}ùª¸¼FÓLë÷걸ti†0{/;.ùÈ'5b(¼åàƒJì~éú¢\qB /æÔMnT€ÙÕÀ‰o/WnÁ\„v´.«èþ~òËEkíº!ÅoÀyº}+ Ÿš],X±]<°] U ˆ)ýU$}ôeÎïväÀXx‘ϲD%ý»^Ö]­®Z5õ<‰uVMBúý¶šò§Ä”©ü^fcÚ‹/®ŽF–×W$É!+³ß5(íKsJÐÎ’Þtl ø"“öÔ ]×MpgK(Y„lú°t±+r$"Zk\wì-¹Ëg¢²¿Dó¯sÖ_Äß—Øa¨B1ÚÜò¡c‚‰€.µåëŠØøýÎwJè0@Qä²OÚÄ"ÔsÆ#‹)®8CàÂ-]Ù ‡ygÚ3+GfŠÂ’™-!6a3k…„Ö·Úâ¶D×ø,(-ùdY•Þ¾vꡦ(&¦ÿŒ¢˜ÿ‰¢Xþ]ŠbüÏ)Šù¿+E±ü‹.03翹_·óN¢ßzýq“%ä]6ífT©ysÖ‹tŽ“"sJ*l%–“É&?q?‡¯!ܶõ9%«*ðÑò®>»^ž¼ -¹iTÌ;¾Õ»½ŽÂòÓÍéi¬êÛr¦uÔŠî Bå­"¥>j«òöÝœ[q%”ò’M (¦'»JYDbDï±kmoí¶½Ÿ°÷h§~rŸ^N¯6U5š»9¢(Æû¢¸&šjå•úb€Tôl¦ê;p´Œ! Ýbzdª–×WyŸf{&´hqµ…Šziæ}Ïg³¬áK9Ì?ŒÙ´íásÛqóU‘wÒ<8ôð{àQA·à…ÊÙUÑZÿkO¾¿ÅOÇ$ÍÞ÷'¡°æU|å¶Ük}³ûÍɉ~t®¦xØÐíC îT 5ìmCêØ˜‰)„Í©g÷$NØ]ÓN!.µgY]Mýá1]3)Mô»lå»ògäÍm‰x>ª®ƒ…c©ãI‹†"mço–´XWƒT`r,ÇQ3êŽt§˜ÀUé V@ÜÛ¹+(R¶ ñи~ðyõ³t¶0š«îÄgÏ5_ú3‘Æ. ZEp¥™-*] ªh¯¿{³MkÜ0°Ð? ‰BÀ¯C¬Æ3'¼\5%±Ü1hðìFK²a¿·3ØN.8+2‰“g]ÊÓióî#0o‰b¿á“d0Ìg§qí"#hr.‘¸–<Ç´ªøÐ¤¢[_ræH¤±ØdÖȘ—Š‘b§ ×llr´tG8œŒAEå•Ï´ðÌL£ —‚oÂ\«ðx,u‚>¢îlÔŠlgÆüLÁŸV[SïŽ mD+{ôÑydzMÓ?uúTvñiv#ècê¬Ê;+û ä\¶ì†XFAÔX„”uÌØ‚—ÑÕÐÙbþ39}>Í£ñ˜B«¬·=]>ëíõt{ ©ýçyŒ¡ÆÞÉC²¤Þ˜k`k¨°¨{²˜ÕÓòMoÔªÂk¡paºyo:_‹/:O±ÑÑI}F¡“Êð‘~¢ÕÈI´gÞ´üÏ0ÇÊ´LQA áÛdô‚zÌ@K×o•ËíºíürÜ!†3j¤›â›ÀF­­%£daîmæì¶4cÿd¥wµ Jã,ÔxîÂQÒ=ŽƒlÙ.kžl1Žã(ã</f-‹z²^y œU„Þ˜Äʪioìc’¥f·gˆ TP+´E6xIº[ßÅØEüp"€vpD§ÀG¬©fÝzl è´8S­À–ûÍ õ¹ðƒó 7hrì®5Láæ™@ÃЇX£ðx V—„Ëó¦GÓ㎱"NLØñÿiìÌ^˜oó'¦ »µ¡ð´2ê5»Ä…wҔ΋ÕñÃË»Ó8Hë¬[àiwÊjg3ˆÄÀzîÏTjÄt®sôh@-E¶g*3o2ßóN”"mâ(>? ”Ÿ:êå`L´‡Ö"»¾z‚h¸þYARþÓôžPJ3"f¶wù)F"Ç£=é`ÖùÎ4|Ñ0Çgé( <¦ zÎ.´o»”ûy%'É®œÒçÞÒ"^ªC5Øx 1E ›9A€=8CL»¿ìyé&ÀÊBç Qœ¤opEùÂxT™Æ)““§hL¤í)ý˜nÇݧÁ·òg£‹DøÒ†¼dDJâ æjìfïÔԪvÜÒÌ@öçûçÕ)‡¤`BœBÞàíñ1zËœur1º¡¥Ý©@¹Zî¡{w2+§0¿ÕDm–ó@«bnOù…Zît¿-9Gk±-HÏøªÄª?1 ÅòaÍüì-ÓÿÃFüdãÞ¨ø%5ŽØb¢\˜ÔÇSQîÆ¢É”-åÆTÝö) >^¹5UµLµ(_ÔŒ~e±DÞÛIeFùKkÒ ÑµK¥ÁË&YS™µvÜ…ºÂf)LA€ögÈêßïl%ƒûêts.‚´'·#µ£*¬bF“©Ö­<›gû¶ÛïÄiÝv•"Ÿ¼ü~Q7ƒÎzåðÒ4 T•GÂm¸Vˆ­@~Ø¢–$4Rö*Š0t²,;())fiDAÙÞËGp%£ AU—óàÖºþ€Róüµž;;c^c»’6Ñá€Õ•d„4æ·Ôï÷§˜=OÈuâ:°}#;¡¦rgy&yzñMÎtŸÔÏ™}­¹NÚcÍiΩÉÊ‹Z¨A½-ƒçng«ršÝõ¸ÊFà¹ÐûÔjlBQrG Uâ—,QÌ2?3+ã·ÙÆàtÔÝ_ÝQ,ÂÓÈVp‰: ‚Ê俉0º5â-b¤â£¶OÅÏMÞí'˜]¼˜Þ€Æ '˜1T“’ÃøœniÌM ã„’–¶J–à…/wQ€\åJ›„Ϩš@`çQl¤²yþˆûör>1äyOºyhø.Nɇ 2=}óV»|ÕùÙ0ó·Zqvÿxq&);bm,A!IüN`kHDfÔë%®×È/œ°Û†—É|S=(”5ùºÃXl†£ø‡xòÖKñ{ +»/o=mg†b)# eî U[ ¦Hí€ù´yXRÔ·õÅ@‚ݸù¾¡dÏ~Åýé1þKÚ®j•ãIa–J‰ü\Œ(Äkx1ç4îÐhuÈn‹d~ýláoÕËMI{õŒ½úÅ|&D©› J‹éJ}úËÔ£†õ’º%ô*°‚€CÀ}ò4Fá‘B¾´¾/pL#ì§·Ôµ1(8Ï]Ï+†ž _}¼4V4ô/,’ºÑ¢!Æ#¡ŠÏCv™+W'€é›êÊ+†W3kì¾ã§›{˜J¥¼[X ÐѯqéÓ¼í¬ K´<& ŽC¿\©Á…-€…£Ùð2KÌe90¥dÀ¨žËÉ:x‡þÒ„Ñø§`Íð%9 54¬ÃÕN2äl„„ç‰r¹2V&ÛX1öE²þþÑnUÂ|_WÉ\xœµ™(àÊs!ľ‚³´‡‰5xØtǰáµù£¿WË…ñöF­³‡ùÑÚKê"¥´X€G‘ G ÚŸg§§o@Ë•µzç÷s~˜i?õóÙ[Ûi9pÞn­ w©Ì ÇöñLxo·ç2£ç:Ùë—Q#¯1Oú¶vå¢áPêØÊ»Ú…Tу„ˆæ TÞ±ò5PR BBøpâ«í»°KÿºZ/"»ªãÚøõ™‰ 58‚ÇÏÛ4,±ÅaM«Ä¾4“tŸ¢ˆKÒ<à#GÿJÔ‹ ©ÿ ›4GÆ„v{˃€#üej­²ßH~Áô;¯øÿX¹kYéf„áÀ/§³·ûw«01N#=ÎÄÇö[“E*ŸRˆÓg¬ÝLç—ºP]ð6ë) Ä3XÉ$]r ñú˯£³8¥4¸€¿¼Í_—µƒ~?^¾ç8ß®*˦é<Ü*I_KGf30ò÷3Zæ¬Ê¶ùÌ.-_[b„ͤÕ»#«ƒ€­!×ÝçÎB–¶¢<õ– ñ\0ie3HKækeǶð@ÇIˆö㣚ÃI®Õ±/hüä@.|·]WäH5€Â¡3°C LÍ7@åri=QGMs!ÜÉ5ò»«ß8B%r;ƒrgé {)Qs™¡Øõ©é$¬ˆw¡“x…3Ò¬Õ?}XÌ,kÊ=àMħ)^O´¤dKˆ­¿É›™LIÓƸ߈ «âó'Èš@è Òù_p#ëÆlÿÄìÿ.72ýçÜÈöß•ÙÿE÷éßÛCãÿZ=¼®~¸ƒÅpÒCº6rš+Û„Jý…d_jýd1N¤ÛCâÈgÜçñ%&ÕDk^Ŷ©jš ¾°ËáÛõxSâ|U¥l™¤þ« ÷+}¬âÎêíæU·êÊÎlz3Å £×)C®gÊ7k5lCÛ,z•¼²dch©ýPóÇR ¥$ó®«4ße–åCÀúkOÝ·1‡×Û2Umú¥f€Vé}Q¸ W#ÝS©Ä`ɉ{Êÿ@1«‹å‚P¶WË/«7~.ýWÊ;¿ƒBõ\ÖæiDìÚ#Nÿši²Xþq'ÀUqÔÈV!úqg¤+`òÌ =2Nˆv ÊõÏÅ:ìüÛ{Ö¡:¼´ŽÈ94ÚWjx4ڼآE‘{$úüòˆxa,¯ #UÕUᑪý‘?ý/ßrN8á4ƒWgs$i¹r–A¹ò±x}«i½¼&¾í±' _˜G¡…1ì8´ÝR6WµqîàW×a£éa­ÄKöFA$¬—Yq8*6²êS“‘(ª5zï5;;6"޼K¹œˆ4Ú6ÞOÅnb5i!°ßs'x™,³ûìâÀ8œ uSlºZUå°Bc­!¿ÜMKMµ;Ñÿä¹ãà_X}n Œò‘3ÔÞÇ´Äw I! EB'Þ>%«á…}' m%Ë$m<­µýDGr¦Ê^l`¨ocDSܘÁ¶+ñ¯*/V>·þG(!àCd‹AOx–ª4h!½CˆÊ!ú.ÍÑéß™³b£v )‡]RT3¬¡& ¨ sd€ƒ žú*eZŽM¦®ãͼþ°aI?l “Ùêáj,Ož„¾± "–s‰qüqP屨wBAè Ü~[w!¤À7 #ŽôvCì¶t#øZšP(LšcÅ;!°M*šªÞ‹îJ»8—’ºÀÌ®*Ô<ŠE¢Ù¦ Fƒ­\!Âär¾6þ l +†ÊÄ n¾—§…üž÷ÇáRžYjóŽ^×ç2†8D°´ˆ³¤„,ä¯'±l[ ”$‚4RÌŒó’3¾±18ç=y› À=p¸Æ@¾ØÆ#R`lcF®P¢pÈç^/F‚¢>{‡ )‰Ø_´yÜQˆ2Ê>©A8(ÉÏ€ I¦¿æÇ,7Õ~ƒ¨p 9Ðh®°°Í¨Œ˜M¨¨h›NW`‘O¨P£OÊ;Tx%Úp›ó¹B§|‹.²»„ñö˽LÌJ¶Ë®ÙÒÙÝÁ­mdxŸ¹áf(Ñ#V²";x=—ª—µMgì±ÕªÅ¥†“D´Îr8/E˜ï‹ û#ïeÞ\2‘–¶™ ÄLùÌ ©ï5!å ñ¤!jÆ*ò•Ù@ü¦m1Å{‰åÚF68¡@(;æ„ï™çai½üLË@£#ŒRL½ÒŒ ãqE5‡_5†Û­¼nW\8ÐVžUWtÒˆ÷Ø7<ÇQWâ+¯š0½jª¸H1Ê*«´ÛgÑ4;¶™{ĺ[§€ÂÓ\×MÄ\IÙp,öŸ´‡Ý’¬Ö®ˆë[{ò|‡FXVn„ª»ùõõ·g¶VÖ¯œ.<%1 ìí´í*…س¤< T&t û«Ä?aG@knþx£”¼„Ó’Ód;6kˆ ñ ÉŸ ¡8º„½ÓÞ”T óx’*E;^ SEø Þ /2Éüìx=‰ý4zôñåÈ€mK•¯îTÒå^Y_UÖôÄ£ecÐZ £Ž!'Â5®q^a± .ñ,›‚=ú@ËOÜáj|÷,úM÷#ÂÄâVô6ìò?ŽHù€ðåÑkï¨*[N6áÐãÚ2i ²m”…fd&£Á¯#!3cŽ.½„÷R¯]“UÄŠWz"ê.® ÒXH²Wˆ·¦–$ÞwϦghFr:drþ\h.¼¥ Û4‚If”éä¦;áÌt~XÃCôÚõOI2kº1AqeP Â^‹yj‚¹çTiH@õ¥pcÛ¡9ú$|-=ì²…ß².; þ(£oè¡႞à¨O1~b…Ñj²Ê>¾4Œ… ›„Ü/0sä  W~3ÐÜüMŠPdžõT…ƒÝÀPãÔ†8*d¦“ X;òEõÑQõeå[xÛ° »+-ËÀ”à&%ð‚Ðl“æg/Ë/}Þ&Í??ù“¢—D­÷PîT‹NôH6¦wÎ*ï‹@l1¹N/ú0«ŸQü Íõò&^^²ŸÉü• NåÚö#Õ"ƒ}|ñÊ5©Ç@Ná[Á»$_±mmÝ‹3‰G|L  j¥~ßHt/eUW "\oÄ|ŒX¥l† ›X$…¡‘èâ„• XZm‰¾?iµÓ‚—~g_Š]Ûv:Bî,XM:#V§¼s3¤ð°œßɬÀ"í}²’¦ì÷žŒ]tÓZa¤Xn©Ym˜«õª8Ÿ˜%‘O¸O[B¡v¨V²-0[–£ ùüùÍù`´Ý1` E~üè&Øx2bºkȲ ãÙjŸ¼O¶dg+ Îp¨F4^+ÝR¢0 w%2Iå°×duºÝ6¡2ØŸ?!¼Ì|øy´7žh¾¬Owð3{!¡¸¯„ÀÌò‡yß§&6`9cHRH?©Ð¼Eˆ¹ÊT#º?$räL¹H,&óª¡{¿É¨tשº9uÎRѹÊèÁ²&sSƒv]§ÔJ«.+ÍÊHNuYô~î#[¦wɲÞ\]ñ¢¾2j¿Éû‹E½ôCc‹àñ—LiUw–%@«*¸ö»t)akNà£ö¼ `IuN¸I3“µEæqܼ¦ø¼8z™­¯àæÞ^Ïe´"t~üìg¹ svÜ×ÙîTÁßÌ:8\.6r8\ÝŒ¶VÓŸEïÂÍ÷‰š][넯×ÝFîèXÂÛÉlb壙DQKáã?$ìã3‹?”Æ•ý¶ÆY¹\S®†þ…íçø7l?Ë?Û~Î:Û•áßµýÌÿ¹íçüïzº+ÿh1²3þ;¶?D]Ûþx Õï­>C¼IÑ}è„°1gH–nmK4ÚÆpɶ2Q$8eÍÑß·ßSjo— ¡àp&‡ó|¦Óïϫ͌‹§ZhÐO4Ôo,õLGÇ׺¶5Þ8ôºI(³jd!Kh»¦¥O¦êÌîhðÝšgæi û5ZaÚnÑLs×ÙðÞ$×Û©Ëšl¶~.ï­Ð]º¸¿ŽNÏ_J k4xtÖȉÇãx„&¦Œªº&®p©èÝPÖçáØ'šö–}OݬÑ?£ö“·GÆy]DÖIMs²Z¦„·øKš¹8JÛ&lžrƒL–Ë™³:L.BÖg»æw‚Є[†‰._½æJꦪNÎcoÆWå#}vÊкÿäó—’Lû`tºnø§£‘;~c‡~[?¶C_¿aô€Þ/©ˆNí3ãvšÚ]{L%hëµu¯ aJ¦Ïáì ›ÕÎ̼ð媾{HØ8Ñ3“n•2¿µ$Hªe¢fØ~®pɼX¾1é_~ jضeGç„úœ%KŸöyÏþ}ùH¼ÿz%£ÅOÿÖ÷ŒZÝy¼mÞ9Í£ã5ÞWó²>’«1´š žàçÁ4™ÅYF_A7É”€¡¿Ë(Òw c¡I–½â]æêÐßÔì#EsF³¹• ? /ô¾ w3>Y¨…ÉäaÈÏOrVÂdÌOÂ¥ÀÁû¼móÇ£´ñyÒå">5ó)krÕĈJ IZö4.þ¢Dˆ%ÔfdÝÏÞ…¿GhÊ$vÞ/9IúXÍ^I»!Ò¦Lïè"t~êýðˆu˜9LûXÝíΦŸÞøy?|Íï"-ñêÛkU˜G|$ü8šùåjö´… bXà-ÂTT:êkp Ô×ÜûœÊ¥©cxÉÂâK¯{9&¤#Á…Ô5&áwãJ²n²q×x8 „s¢ÂænÞüÂò?£Ts aªI7Qão8ˆâN‡~Úi[ÎU<†ÏµÁk”…‹«)sTq6NÕÍaué+¿iÌø±Ä¤®¥K´¦î1ê%üB¡‰®i-‘;à?Æ]*Xüu›W­,ƒ®Pî&ÿ‹e:ì |3âi—))¾ºhŠ1¡º©' öD*‚‚¿xرOê*-¨+± À¿ÂŒ Ž,õH ó%X¡O›r3sEÓÁÃ>¨·ñáF=¾èì„Ķ۠¬8d5¿Õj”*Ü“0¢YNO/4ÖN(®èñåÍV) ü`oê*_mÊ•®yÆüÂöÅ‘é8í#ôÓ\#Ž™¢ÏçÄÁÌî],–.m,ÈM[KÖeòêM¥Fj‹eÆÄáEÙïô(„]vÆlXR…ȾTh6ùzŒ¬QÌ¢šÌ¼"ZiÌ´*]¾=xI¤þ§æ-Î;³UúJdVd ®©] +¾¦Í¦2Izäw<ˆ•rÕp6¹×•an.5ŒB™º·" 5ₘV~éÞtEŒÊ߿ąãWÖÆâRu€Z¸$ÕäF3Á5׆½h…ª"Äô4ã²ÄXQ¦îf»G¨^R-µzÁ“ŸBºW³™§wÞk¼~áÇHÕaõ4GR¿Š­ê‡;™íqÜ£ûsT©ìDôŽjö³ƒA¾>]ùœÒ5­Ä"IuwpI µ'CÔ¸È ;KOv_sô©ÉÁrëÊjʘJmw¸Kɾ—bsÑÆ*5ó³eU“PxkX§õ×Fõ¦1 é¬wû‘¶D‘ ûþ(Ú½|nø²£žÀ¡ëg~¡¿¸Ä IN¬"Ÿu¡äþÒ…×ï_ù:«^R8½5ÕäÀcßb-Z°/+u›™Á§¹žÎ 0ôr’=tiÖa*r)9ò$R¡‚gÅè,P‡Ù zŽ*w²Hã¥wíA£ì9N—$®îÓùð¢ ^…D¬È[ŠýÍÈ”8æRícrn‹™Ø {‰c!Cg8ázY#|bñ㵞õúÓÁ&?,–Ç1AÑâ™3¸,n…9zД¾ª«åÀKQòfvî{5™Oå0ubK_“Kržœ€ÀW žÊ&>€¦^gæMø¬±MWÝQCÐU:÷µ·ÄV>¢Ÿ¯—éî­À'! ÀA†™Â®×ºN,ÀœÌ–öWŠO*yÉ`°ê#_0PÍ,¬(¹ýH7F ¥‰dË¡‰ñ¾™Ž7@saý·ÏÁRÍüNÜÝöñfÊâþ·hPá 6é¿Z¹˜aóqzT Å̃šŒ Vå’P ˆ0ý{ªâ’U;i¼»¶Òxpx€7ðo Œ}ºý´Cú«Ü›P yºœjËJê :ÈkÔ÷„ ïEÕKJøÝ6Ãt,Âìþß‹øqã;C{`7Ý!qÇ9<*P+׿'v¿S!%eªÓ´”Ðë‡Nø ’‘gŠä/ äþp°*ÔjX3Ê×Ç Í€ÿs~'˜Àrä¯Q+;ö»’4^öe5‚ŧ{ׇEɇ]«˜x—koSl‘-!©ØÉNvœ?|Uˆ$vÅ™h1ò»:`ds“t¥„bb‰m¡&@ðdІÆzÔ^Rœ¤–••‚îbôS:U×ïop®õôƒ°Ê噪éYÌKTi¦ •p› ‰TV¼®¨ÅLS‹k †ù¨Ú~Ù|¬+Ôv>Ãó¶W/"×FH®3Ór•zä5ì…sÔ¹Îxè‘í /Ö®ô‰?ÚÝgfÍ0D÷iÀZ­ZC4jå÷TQÝ’MÛÏ ž»W/—/“{™,ìàÄÑ mˆÐ<Äáey:—’ Ê£éz¥Ú»r*&ÆÿùÏŒabúWýcæ`¡ÿOô/럟úŒ!z¯¨NÅ!éOÁÔ¼- _LÈsÒ'A÷KJ!Ò4x‰ô°oz{ð+´4*S¨ öIÉêÊêM+çfªÛÎM9|ü|­Õ¶y]Ît…_¦~ƒV%kg2ˆ8Ø" ¾Vàl´¤CëÐ,N0iÐ4"¬¬ËD7WPvXåªZXëø6Ó¡ßÙ8ªðözR›ÉÖš^oÒÐV¦&$Áç~ËJ;Y!U‘¤”Á­­6È×@.­ Iv@" ÍäÞóBä‘ö›ˆ¦bU·ø(?R;ÝhŽ÷Öo“¢ðØí@¬³ p­†eårÅy=‚µ“NÖ>yµl“²y·ÑøaóÍóã¡K!RvneÌgp_QjŠçò›{Ç QÐÃ-¹tDÙæ0(MFü6˺ pMæKnb¯ŽYÈ ç“Nº©8©Hi`¡"”MÝÏþ3û lHwƒâ»2õ‘ƒfn‹éNm+žZ©zsÞ©[\ã‡U'5›£¯øùu4,Ç*,Ÿ¤9·ÊíËÈö„{™Cžò8•cž¨[žU"[^t9î»Êr&I5»àP{¢–ñrûåú™a¢LQV—ƒ§ -}j ±"~ik#[qÏ”EëÃÈß¹ŠcãÀøégW$Ãý^„ÑÇ ÝÌ^ ƺ`©ö÷%fôQ’u”Ѵƒï+¦ÒeJG¿\¤±µ^…Š…ú†aÛóÀw4ƒþ6`*@êíÚäGLí·^à5¬ToñÆz„ò1¿é¶ÓDÖ©ë˜Xg' (I¦=–JËc¥ÐX4_h‘ u¢jaôÂ}è‚1w£ø@¹÷A­ *•`¡öž˜–1RbdÙ`Àî ó^•EÒ?ÚNç²$#T®jÛþP-ùPåpDÛ4˜'eYñ x¯|G+ `üªXæË†M}zÙ”£×Y_rm ¾ÓhRc~¿-Aéâ™BÒA•Öø*íÄ‚§ri²ž<°4½HSN¿RZÇý_ a¹Pë´j•Ïá<Úxù\O‡NŠÞC’šÇÚ˜ißte†±³P>ºôþZÅ-ÆÀ¥Vä+wí÷y:Kä›?ÒGŠPºäCÁ}`(iènÂS9HT´Ì޳DNþÌcsmv½§Ã܈ˆó‚éQ¡€Dì”áדùú—VêÓÊÉ™wNÏ<†ñ¶:Þ+ ™”¦d9Q•/âî[ãR’r‹4?èp<‰ÔƒYµÍØ9Kâgdf¤ã¸¤Qº® ¢Á1N­ˆüÂÓ°ùåZž^H‚«¸wô—A´¨c²I?¤†‚´ ùt°MfBàZØÇŒcB¥ ÎÑ@uQ4㲡`54Hœ)Ÿv£ÀÞ‡Œ÷–µâæ忯ùp0PšK2XB8<ƧêªÔ\y’áfjÔÿ k%öz/*ÅÖ×…4Ïæ ¯ß&ÏhÛ‰KZ â¾§J'õF‰›„ȹ¤†Ð¿í—VìÜÁddU”Ñ)ãùaak‡h%QȦg†YãÉS`U†ú3±Ò {|i@ÍòºM+ÿë8´ÉFöá¼Ò5€Cu`óOx¢ÞýÓÍ`ä¤ß:¥:"GÅïÑÃ眞¦Ø>VM¾¼æÇÎ3®¥'Ígº,¡=— ß|”æÎçö|gPDBAp€§Vn‰ˆ~ ÖFÉ+ô,:Ø?/Þ¥BZGPÛ”+ä l¹¾-_¨Nç|عÁ¢ xì-o‡s•ýPvzºžÝsK„±ö¹—®Ó½5¢Î+íh‡§Š îÆ×hKªEŸÊà>{ÕØ´ÞDÞIíœM.¾–ºmƒ‘vWÂõ\ÑáÚëEg®(ð67ݱ_-—?·ôÈbø´áàoœQÝ4Ãs„ʼ„#Ö·¶S ;_öVòÇ*G Uã‡A{_uˆKªŠó£vgeh¹²éƒz(d=ÿÊí¼žšu…TÇܰƒfÜ^šhhµ9Úêì»Ê“3ö^ÃO{óÆ9ôµí>3„ÜÈ ¥#ñÛ½ Ø44ö±Å¨pU»¼Ë–R3øÎ <¡oÓhGnr!{ü#£dy§`´Zü§=ê ¨ ØjPh¯z–0?*c=€. * âÃï©99õÊyÍùyƒóxb˜ï–~D>(Y[TMö¡Ç¸ëø+Vr«Ðô^¿9öVL>ê—„~`=*b§ƒó¨ˆz.WlÆ¡óCªÆF}ç0cUJ€ÙŽAk/ð}šÿnDŒœìBr:îE¡Lïݹgï—ãJxçCº´ªÌ¦´éhØÛë–Ê»µ±í"/ô YÛñð&£,g, ŒÊª3Ç$©ÔMÍ(ÑañdÊ=ÔJMŸd<›<}›ïákÑ‹«>ï¶Û¡ócÚCÁÕgBƒÃœØ,Q , (&mr@†®ß1xôÀÙÛŠ!¶†x¼úÀ ýMK¡4aQßmº~ÑïÊñ¢Ô'¢}Oˆ~Õ~éÈ]êiü§‡ç„~ E©m»öøÅPbùÍõ!§ ümLý®4\5V2ºNAõO´op’ÓÇô E!é Eü¹Ö% ‰¾·¸á3óÜÐÓcGùí o×A³ª}© ¥Õ¼¿röÚ±l黨:z°MÖâKb<;é•©"9HÏÑàMÊS/iš“Õ¶^º˜<˜Ö…a h¼]æ/# #mOs<[ìQ ÜI $«çKÍáÞ|lSw1%Åå…#gcìÚ51C5$²`«í׳tï¿%NÛ9¨vë—¸*á á^µÑÃrD»HªÈj*àýFÆDf'è/YÒûžOº%dSÅ8Úm“¤ÿû‘÷PÀtŠÝ‘ûÍùôôÊqz“ÞMžŽûîÖ•Ñøåäã²öÇìªL(™9e+L‡(9Ѥ¼Ù"ë#¬tÍë>ûp‹oOßCjüÁ€Áœ~=kjTbá@Ô¾>¹ªvFöŽ­úŽÀw°è•Q S˜æ™{O6‡•¹Ò„ÕÔZ’ú}`¿7’Ñ Cï6e²x•ÐðÆ#|-Üþ™‡TéÖöô&Âbø[ ©BûŽÃ˜¹Z¶­sJ7rø-ì¥Tœ"v!.p©µ•“¡jRÅï9’a_ŽÚ ÜVk|µ;s`ªEeµ[% h«‚~Mü~G„“ +eª4olw‘\L¶b’- @<§Svì^×°¼w„ˆ$™’ú²‚2wƒpPQcÇJSH^ÛIóz7ß7¥I;wËõÙŽo¯ô]ô<ûsí“J Éí«ð8õ43ñÕÆÇqÀ5nºoäžÍU’Prü59,ð`² h¨\A Áö«ë+„X°é±ÌAJ(eN©Ï†™ö<ÂtôþPä Ô?a¶¼5@Wƒ„Ù†Oîp-GŸÑù5m^È`OTš#ŠÜ1v€O‚á«3=yõ óšý¤F7=Ør ‚Þ­~)SB¯]Ë Ûg0Xçíí~,÷ašÑFŠFGò“Ö .Y^—‡ÎW‚XDæ¨Þ–°iïñ;¥¥¾·|H¤¿ÏYŒ˜Kséxk‡GÇÁ… ¥îÃ\›ý ~¨›Ý4©ÍßÁµL*uT2÷å¦+åý~Ç›ºÖtQÈQkϰ„5‡ ä¶ º~î墅Ø7¬CÖèi 5úéDÑ0¯Qû'Áx±;£­¿¾ë¡‹N;0E˜b;òvo$2o WNïÊnbIȼÁ˜Ocgn[èPÅ„nÖÞö¯TbÌ„úŒ:Mì€:.-ã:> É܈<µ¼\Ýœô'‹NX’ÀJ‡mQÞK müDK¼£)z†²<Ü4‹­„=…¼GcL±DD¢ˆtù9¨?q0¨ÇÛDó¾åÎ ¾ñö£!Rbªø0ŒR pár¨uñ¬¼† Ö:*–¬[ô‚%{âI,õlõê\ BWî;1š¤îK¦BA+÷ÊEùoÿdäbÑíg„#G+\e±UÇkÞö£S¿ë`AV1ЇR•¯6³¡¶DC Ò_Š! Ã’²iE#Ê´M“ŠË8uoÞÇmÎ$÷HãÍe_¹MïÑ6Ï ¦÷á¢ÿùK¨˜i¬äHt[EÃöŒ20Þ7- ¦hÅAì»ÃãÀzAE„«hr™O¯Ih+6WÈéªíÌà„¼½¾æ´´‚È1|«¡l;ÝI‚·.”dvÊ^;›jS·zß3#XÉ 1ÿýþÎÜtPùh­0º¶ü‹àq ¤«í;WrÑ9þº¥£ó›ךU$–l§€Ÿs[ˆ½0 ›úT ºt-ÚO={Wåù6ÔΠ**)MD³åDO[;=Lð’Ýe#@fP[ÎbD çÅŽ;‡ñ„*ìM¥Ý„jêàÅ£ãí{ Öº#ÍŠª¹÷µ"$m È\}Zíe)ZK|´[o¶¥•(^bUhMñ‚'n¿S[WøüA4‚Dcí‹%'Z)݆¤Lfõv¸p)!A–÷_º™µL<ø¿°àc«ÁVñ°¸Uƒ(dß%MÉ×SÜ~ÿÚ/³­o‰ò–ì+iOó\ÝÎîX[_á„é™mŒù`þà¶'§èô¬ÑÕ7b+µôöaÝü径ë_†ÊPU]‡™U¼‚È?æÒâ&V)¢É$ûØG8NrîYt¼jPR£iØå\³Ø´ Y7ħ4·{ë“•G!”üž›0Œ“ ? ­X?F,.JÃ?(¿"WW2™í_Û ´…cXÁ]S êm±B.ü<ѵ¦DïhZJ¡–ìð+Õ‹qØx¬C*4£do¬·—9òOýV ß5­¾¨@´ÕŽ:²NŒU^’fMœ¾3FöÃïÒ”´ö":®…„¨ôF"üzÝ£í;a•ß7•lÌ]î¢ßRÝY‘ (©²ï56°ðf.AÊE§÷%—㉠¡=EwI;Þx ¤¬,~ɦæ /ࣔæ·S%<ˆ4Ê‘›Ë¥‹ß¯+ZÕäÕÄŸ\~ãç¶ GY`}b Z¹TH7g"ÌžyçˆË~@*OÔ-CL„ŸèÝб”©/AÿfáÇÐGL3ÜÖ£YãÝçXÈìX0~F‹rÏB° ÐΣ§²[_½b ~vLÉòÓoZšŠœgƒR)R¡F‡_¿©àîM0·Š‘؈M¯©ïOqÊìKÁÀB°¸‘‡–þ|”J¡F{!Ðåöê&Ƭ¦ŸÅï öß߇Ɨ¡¸'oˆàÕ:®u T‰Ï~:u.YÐáD³V¾x:Û¨êS»•«ÍR}ß±†WÅÒÐd6¬’F0oÓTP]†Jc#ª¥R['8AÆ„d)·h!œãPÆ}Ô‚”âm·Ŭ£´/zra…bÅБºZTv ÌÝ{Ã<éÍÈÓ/µQS‰Jnu©ú} ûS©zs®Ãa¸6™öO±aŽ©Â™¤Qˆe†\…9b´b |ô$gF#þ7€1:Èú"™”6ö)ÐÍÒ{åe‡(P<[¤ú¤pr©l?þäElt'‚õE¼yß6+—•ꑟâ"±fRÃlqsû…¹âVÈwp­4t „qlÉø1*ø®Vq\·`H/e”pÁ“S6B ?vT"³›ýÉcB›c´J”¹Ú÷JFÉ*i€+Ñsî˜Êt£Ej»§PSõûí¨öÉ1Ü‹±´Á§‡B° 65(Y ˜æ8.3ˆ³OJH| @ãUæ[®„ë:ôäþŒ£Š+cæäU+±¹h2e1´›ÿD'§Y°,Õgµƒî,Û[}â²ôÈ6^n]°Pyƒ¿ã¥p¸ÐÐvÔx+á§ÜLì©zÀhfûIuVAnr¾•ä´aUÖe3ºXºˆfe;h¹q‚]¾\5y t;i‹âsXïuP…r”My]jPó±`lªž|x´ÚCd.¯)X¸Æø¬Ÿ¤ÅÕqñfÈ›¨»ÍBmÃ4¿ân®{ã'…]qš9ç ÐAú—‰'ó7ñdù—‰'ë:ñdùï'ž,ÿ/˜x²þeâÉüŸí¾U¤ªi»¾úÏý¿Ùcäޱ· °l\…ëU@3 ēЗIA#.ß1Þþ±šÜÆVPjØ T«ûÜ>17û¬.NïƒÇiî鱂oß<9ÿ #w^-‚þÑú¸œp—O⥘+§qO1*(NF63o hÖš•½VšÎ ]-–z©a¹ÆÝð`­\ehäÃÚSÅÛ@¿Ø|žë=‰ËqV³2;ŒdÙþÞÊŠ*-æ?j•.(¥È¹F™XåÞØÒå#ZŠÒ7g˜Õ¨­Z—¸ýý¢~#Ìqz4ÐkØšC|*R$ü<KŽì—äO««$~ª»^ó^T79bÁwå¡v¤Û#ìÔ“ÛØË>Çøø¼±mËeØÐHÓœ¢02ÙdâÜ¥°vÂüÕùýí¶¦¬',vœ+ÃQñž¤è&Ï î¡*ðÀ;öJ¬°2+žERKÔ.>»6 Öì­è8Épâ8e7:uñ®œYØ×ŠoÄíóÖ‡ žê…‰…zƒò…óV…|É#é°àÞ÷Tå¾"tDJÕ…Eí…]!\TΦò•\ÂEß‹(¢á¼ÙÂþ(ÈàÖs©`Qpxv«Ÿ_+ÕPªÅÓP(5xΔóç¢ÈÆuúý‘è¦ R.ë@£¬™X°‘ÚÆ(nmƒÆV%K>Û6éV¼Ò^93 pÍ¢™Ê ä–ûæz/)WÇáÿFŒ(ïn¡³è•*¢ñlÃ<Úú}» lüDãiÿ‹ À—~˜¡KŒÖ'®ëGå|~ÙJo×Ûé£kïÉ™`RäJ Æø£w€u"9œà+ZÞ¯(æfÿz ¿4Y¿»"q¯„¤*á{sµ­(2#VU†ýLðøñu.?µ63ˆTôòRî­)øœ?ßÚ¹»+»‰Љ@4YV¬=4„m&¾Q¦@Œ@ÒPÓ`D Æ l÷ µOPPZD s$=Çr•VßѯTx‡ Š]œ4 ½­¢7¹7¬¼|›[}#¾_d^ëSgµHþ^>íÃ>”“»ÁFÇÀc‡˜lÔB@Bí©mïf°<—¯½o†}du8’3oþ@ƒš¦ù×atØÌIrÞSÊD—QiSyÚ-Ù_*h’íOV4®ÔXÉúìq¿“¨ \%NeJ=$Ö]±ÛØ-ò„etd­} |ÇÙßM[²šíàÄûÆÉÝuÀ¬(ÖÞW¥& LÇç(¶ÄŸftŽÖ6F„¨¨5­%axƒ íD‘¦«ö,!ì†à2;aXÄ0a¾– †Ç4VJôt2uôFÊÏŒëLøÉ=ù-duæßxÐÎÔJˆ HÄgTÔäÀöý¤cY¡ M•¾XM‰ÁBs¯r8É ÜèÕ Ä¢V°Å‹“CUç!‰øˆ·'ÇUyò+D°¯|Û!®†èiF§,‡qŠæÁÈå×í.’C‹CÌ÷˜Š B-GÅ…Ôeˆ²®~¡_PŽÓ§ãaêÞ ‚„­vÏ»â¾0¯Æ¾š.qëc §`  —嚢EúqèžÝ?Ï—dz§´5rv¿gÖÒ±?c ,?'î” Š‘$BJ¹,þ8Ò¥hIIiœQÒ8E¹M a¿c$FáßãE91îï!´7?Ñ:R«ðæˆ-úEO y*]‹¨Ñj®‰;(Êúüb'w¤ |NÒÉU¥¹¹µÿæ¿3gß(Sç·‡ýfØ JΫÐm5AÖ_’¾bP“èœ##±nýâpò;ã.ʲ€Z% ~ßF·C„懭,v@¼TtH 'ª_ ì·-Tsi…‰ÜÉ-{lAk•÷Ô‚m¨Ljf‘º¢ïÂC8Dj2šº˜´NŒv °²¯yîVƒ}!×àrÜ3 r½‹!Q%ýV |ê„LÍ»FpèZÓÈO£?³Áé¦9=¬óa¿òKã!wÌ自µU<™^UüˆX‚õ$OðŸ÷A†hà€–3òÉ”|¨wwA{jpq­0¢Î°N÷Ÿ.‡)w=2ÍÅ× BF–D©Ñ³rŽD>¸yƒZ"a!qÄ¡Ê@û}])6§ø;—Ò‘ã)½à@÷ÛGäI-¶hóK¤³ÇÛëûåóâ6;«UÁíYBÔIzÂ÷ê†Ç×~Rp­²¬'Ó–”¼ÇtóT2uåÓúCý‡$dò®Âo3ì¬nSV*äIaØP7ßï£N )>œÕÄYÊ\ ĸ/+üe´IIvÒé‡ÉaŒÄã(BLçy.†pˆQBqÎlBÌ«ÜJ ¶v–-„i¶‡Äâï͉£ƒZºp…µ@æ`OUgåØAM éÌ™ƒCBy°¡ºûˆúGªt¦¶3E<Çô¤#üðD¹PÁ팸q±®²³ŒºÁsuìK• JU¨ºû••áÕèä’XÆÚ…¶.”0‹dÁ™WæLy».¨Q²;ËÔGuyA#×ÀÅsZœ.ýÂÃQ+Ý•7*j))<32…q^”¶SæKUAÖMÑY^‡œ”¨GPTö.cûå÷xÍ&÷&¶…œß¦ß=iî⤅võ꬯3YZ‰W£ÈM. _®Ú^}rÙåÇRS”>Œ«¦;k °¢ßBß3( ñ7… ÈDF?|»:/Ðç¹à™¸ ùÂg_rrLc ‰CýíS,*öÖ(NbðrŽu¯8H æáÝĻٮp>"†³@¿V¨ëXv¦¨^QË#IæiãÙØØwŠEŽ©]2Ú,á?X,³hÞlãœ#þuóåtg¦É4wF@)æ¥×5Ø0jXvME¦é×ÐM4¥˜nAº-d8nŠ:³˜sSÒ€ˆfx¶ƒuÖ?®Ö>ƒÞÃ͈ý“ò¤3ás=U3ü~L›@¿×–S2„( FÑèwN¸ndl]Η¥ô~L³Ä$Çõîï§Cr¢nè–IA­fFæ­4)XÉ?&ógÙ )ÔRhÔujÌYÙ_†‰VE¦Q(×_¸PrZÀ›ÏYTko(ÊkϦYÑ6ÒÌÍê\Åå·Û®×4›ÅW› MV2ÕýtEÃäfÞev(7ŠWR>ê]“Ù‘®Þ²Ó¨Õ|ìÛ/MãOo/·œýA×F’ês‹ò*v°üÝ’7SŒ@·Ø‚z±<¡½ º~+´GŒ€éS~:RÝ\uò'"›¦O´Ëp;M ÄÆ4i1ÙÙ/•ˆÛ¼Hr»A£ƒ8ÚPɹÓ‰;K(Ž o£ü™»ô ƒ¨gÎ}"«O­µlɇóˆÀöŸÑúq¤×ÒhÄ%`y{(; ¶«wpt«üŒ[^+²ñ²yF%²¥L`ÞqCë M‡3å©¡æ (¾mB«9˜@IáQÜ•ñU¨Ë&«FÖw›‚¥ï­ 7›nñ…ÆÛË÷$ óhfož}·b‡Œó}‡þæH´GÛ!rÈçc\Å,i”cy'³&ôcÞ½Ç7†¬Øì8í>ßÀâäî+%ŠtEè÷ëŽâ‰ \2 ¤I–…«~ r›ŠrÑ^‡ÞχhØßi|_u,“ÿ†cC¦Ø¼ï3PçÆóüH:`±^KÎʤÉG¥–„R1Ù‰‚gQ…<Ë4Š$픃¶›4;˜¶©zèùI3ŠÒ?S­x„×a!ÆÖŽlÏCràP¤“†'‚…)Ë›ÝiOç›#.MŸ^U÷9uˆ_ßA'R=Òܽ&’äòþ¶2JÕ°ØŒ3U;Š3Í’ÔÂŒD²P×嗛¾qb-UŠVžY…ÆH‚]!ê.j¥Â'ºòÜ}¦„žš“eø‘XRÖÂf‰R8?:‹«»ÌyÓ׳‚ Ñ>ªÊ:?óçM"°ˆÆ>3œñu{g¨:ä{Å3nVoóÅÅm’_ÆÃÆ÷U ¡¥–Éxô]tYQe„Ð^)è ©G#% çãaúEÛ;i?4@»kK¨Ðxq¡pn³éŸÛã)HÏrc-›o¬ÊÍz<Ì¿ u ,Î]?ΣYîLž|˜c•¼¥)lü…ZÔ¹1.líýd$ù‹›Ïí±¯_‹døNÚÒ˸_+ÓÍ? '¾«ØØå]¦|1KÓÈ+!òÊÒ#…õ»’ÛoªÄÛÂè÷¤nLŠd 'À&h¿Pp7'¨µ™•wÖ–t«Ò!y›ÖdÕÃÚÖ)·-£Þ×RXÚ"eÁ°G z^+¶ UxyiêMÒÙ„dªõ|…ÂXríß1’ð*ç³_ýÓT­œEùÉê°¾ÛE#xÕ1VBÔ ƒÉ[öO#à žJKCØ$²5Üí†ðB¬ò³[MÿÁ ˆÜßBׇp é1ÜQ-ŸÝf>îFPtÖ8Â5ÎA{<ˆÔä¨H¼Kòû–`s|-qÝXAE–œª¼kmL¤4d*ûÞùæšü Cˆ²yE¨¼MP“ô¡:’×£NçÌÒžÇhF’îPü¨‹?ÍWsk;)ØDaè„èÜâ$t UÂ}· œ/ât4ÞqÛ¿ë5ŒÃx76S£·üé@„ú×_fblÿÝLŒý_fbÿéLŒõ¿Ÿ‰±ÿOýŸ_„1q°þgÛÅ©;®³#ù<×òO#·¡Îô1ÙÆÔº™f§G'»§[µ›A60SÅSÆ7Pÿy½„n**riU"APÝ~wÞÿÝ0¹X¤(®U„ña ú[•Uqóàâ÷SÙñՔн‰rü`\åT:»*m,t%ë‡i§q¨¸D§1ñ|‚k#wød-×ä¹]ëDh§ËêïÝ«7ÚžîWs/ŸDÊ‘ÆF$uâ›BxSƸ:òÈ6)þ¢Û³)òßþ"âYßÚðÄ*o¯.dßé?ˆÆ'ÇŽìKgEZÂy"EØâË÷¾_ăž:M²êhÿB̼ô@M®Ÿë‰_€ºF{]½~fwnË¿~݈}Ÿ|†ãZ•gÖxNwš#w¼d“‡‹¤˜|vn¬N?c|]y¹6IØ£g]¦j`–? bU;ÉÂjj©zÔ6¢¡WÏ—K¯É%ªÓ(éîØÙ@®õ’Û&䮡€™LI=/Ò$¾YºIZA… î±4ºÒ]"ÙLõ°%‘ÂÔÉv)šúý^.Èê¾W»ËQB*1Ïmœ=âX‹6WTY=¦õØ(j‹ÉL³úÓü£9ýue̤ 0ÆÙ¨;Û*“$w³’¬–S¶†„lž!½E¾`I’F´µGQòh›±Ç-¶«Æ#&œ£vA± ².U2)txÈ;¿NÀ±Áè:¡ëfSêšæþ/íÂ2rFßdO—]6´öl…ð™î„ƒM¬Ù²uÇÁàœ²0Ú…å:œVQí,çæ(Vf§øEmîáÏû hUaùDr¹>ã‘ò[Ô`7yv9r¨à €“c| Ã=y„jFÝý¡tW9s¥ ¡Jæ¹_‘Ï‘Ì4áÙ“¾›RêA8§J I¬0ÒkMبРæ$¦™…Ê?ÇŒ.öAá«ÜÉ6j2y& 5"Ø ‡¯ð¯þ˜wÆÛ_²±l_“îLvѧmé¡Héîå†#þh†í›3r,ŒðQø®´²àÍL‰a¬T|€Ày‡„Õ'•Èu %Áè=ð°’ùıWäpæ„8wŠ «x»¡ßL=N”(+Ý—£b-'‰D@ ”´JB Ä(}¦œd?õ‘'»Æ=Ä>]QË£ëwÅ,Å7Ü8Í41€ ¸>§E<¹Þ.²Uשó[4fŠç HvŸ®ýH¯“ïO¸‡7©c[Ó¶M‡Ãø‡(ÈZÑåÛåŠpÛ¸5½¼{4k|E¬æêú¡c'GU —Å^ªJO»¢xQOmˇáÈM²Œ£é†ýk³¬ˆ@³“NPú9zh›¯:›»PÆ j‹"! Þ!–丯`Íb¹ d¡bÕ0âì‡æ°ï-¤ib—8(Ã1t†uÂÛò†. åôR·Ürßä6…¸Ó›õ“Ëȯ°=HÁ«ßƒ i_¶¢@ÕÜx¥© @±ÖgLU¿=ç8ŠËÜú9 Sbþqf…:ëz¶Á©ø(æAsAŸ)>næ1€¸>†QâÝQ¾2Hеžf¬~Ó˜%¥„Q%ªÝßÇ"J:6¶éGçì§¢eåùV¾V“ó[¤¹‹a¿“’’Á=ç)@X®¢ÆüZ¨eØŽªlR hqaŒxÉ¥Ûê¼<÷»»ßÊu¸éºßRÑD/8Ëœ²C,0ºJ;ßµ§­ ¶¦—ì7®ë|Nš"fVFƒâúéü@¼¼X.ÿžèëe-óbaó¶W¦j”÷±d½íœgÄöŸK~Ù  › q™`´5 âïÁ#ðy¦Cc(BjN4>@Fæ'Ô×ò%n5ƒr:üd&>Ï*ߟÑ\êªVÙü„m©)WÁ1““×ÇÍ)•P0^aè8y’’±5ê6%ÝÇ­Ÿ7|̼?-Å÷Aü¡ò¨ƒx£´£×Mñx?²ÒmªÎú½(×ÐT”7øªŒ™ïUiÃÏ ½BR¸8›qs@T@`ž]KNPhPj b·ºŽÈtH<£Çs##¿À ¸ óò*[ *å[E‚^ÙÓ}W,ƒ”¸!5õl¾\`JèQA¶~ :­¤±ÃË~Õê3yB;Íeg;8tñêûsÖ¨#¬WYª8ůƒö80¼ùd™åí€ i/êpõ>4Îüœ%95eEØQ—ÕñjzoÄFX;ùQ¥^Ú–8ÅL~ŒÎ'¡¯jäé»™ÁôvÏW„½¡äQœ³BK“ÚÝ×uÏOµEª©®ldžzùlèVï÷ÚCá2+$n ¾L;æi†ŵçÚåJl.Ýê´-JqÓëV¸¸4Eׯë7œ‚)Î:pA¾Ö¢‹Ý-Ñ¡–dø[€T²8žœÏNgÜŸ‡?„‰Ån’<€Có.AÃrûC·ä( òÿ™l†LÔµ)Ú§q¡šgž‚Kb¼å×ïÖ¹ÎÁ¸¥tü&³¥‹kPŸ(åéÅ߬ b¬]E;ó&îÆîŸ5ß\Î}¡> -1êî0ÕÆ5úÙn#HÈw†×ÆÔoàshQæT¸Vªý3«Ã2mÅð£[/z†+vuWÈ6êÌ™mò3}õ´YP²©X‰G¾aá#êcooWŸB"†+ÛÅQ˜ ZÏ<–Ý8J1däˆY÷j]²*@¾ÕÔÄVLÅ“¶:{Ë’¿G°–^ß{ɼV¢GÎÞ²³…Û9]ÆJ‘æ-ž¨áÌŽÆ Œg[¬ÝÝSND&#e÷Ä&¯³¸£s'ÌðgÛNðö©6!ÓÐfÔÕò™ búÙ†Ûæ‘¿¤å>û”Í ©iíÏ ½œ.J}@”Ÿm8‹Î{Ñ5 óØ(/40À39XoúÔ::•ï+ñú¡²qýùÃqñž’e­Ë†zíÖWR4•GœË/E"aŒjž†žr¥Ö&rx@¤™jñMÝ ~èU¡îw…]& ¿~&‰ÅkìÄô¬>‰®ã. 5ȘŠ7ªE¡ðêxÏÀT¦ëpŒAZB˜m®p¤IàQX¶$VŹ(DºR\œ’s?œ8…w¾š‡hxüÚ=òhz©g›®«V df±&&&Oc„dñ ÿ(›?„¡ûÆÈP´=ÜRÄö{&ùDá´áˆØ üíØØ‘Á%œYªPÁÎIŸHÝÜ&4•››~+Œ®6Føáì~€Ra±&—,TF3/R†á±Õm™š3Á·|EÁJÇ ¦,”_u€5Ûbžg¯* •81¨VóyÑ ¾Úé\¨BƧ¥-Él~!€¾£BQ² Ç8¾©9ÄØÀÛÆÊwAÙI²…æVÍ^v™vwŠ_YljÒØ6ÙcÀ³/”Z>Ý"–ÐuÙgÖ;1&ú,|ƒGZÊÿ†‡«Ý«-Ûÿ±šM 7 Rj}sõwª…fjsѱëx03‰ðÔÚ@“ï‹ì„!ö7ÔC÷M™Ç*s½ó©€Æ§òv©×#~$z ½MdÔ´“9iµ¦gtdÇÞcF‰Âæ¡„öü§k™ 즷k†å¾Êâóºxk¯£{¢Vˆ}$²j¾°¾¨·…1âóƒMëË»wØ ÉÓ µ­N »…,VÈßP‚*Q²ã/‹a²yt˜ÙØ+oF„˜©Yöâ,´DM[5 9f…Qéu¡6¦¿…wäîH­‘vÀóªU&ÐqNÇœT½,)º)ÛEð¦€7­ß]Ö «„Pã!3¼0LÖ\OP†¾ê¤§¥¬éX¶÷JÌ Þ&_B=$÷ÖbÄnZ:s‰ÆVi|µì lÔoÁüÏ“û†19(ßÖ[Èé¹p¾å¯ãÝs~SÕ°ì(µ’-ǯ?äa(Ÿ­¢1à™²J±ÜŒL¤²¤¬ÿží¬$Mâ’àO¾V³—¡A5ž߈ݷҡ[>øBæ)Œx›±  øúV-ñ\sþ|EßDÞR—óTÇ_åF5ÊM!ˆ­=ÝÕïsð3ï¸þªÂ}z†aÝͬS;3Ž4gñKÂ籎IžèÖèÁ¥(Ó=è>Ƕ›Öœ@•äúH@7BfÜÆª…aešÏvð—Ì9Ì…ßíòc1‹“üñš9$»êÿx©ÉÙ™‚œAXª–WÈ5ß°gd .l0”ÞÓ°{”âe©‹”1ù†„ $h·z¹HÚ"‡‚Š ü÷ˆ’Ÿ Â-àä ŽÏ¢Û:‡ZMŒXÁbör8Ò¿rÌo/2Pÿxï=‹Ü™slG' pŒÍ*<1ÝX«IT×£=žêÓà5ð„bY`,éÞ‘?Ø­ÆÝBÏ */Úä‹3°ª·×, _<-d¶÷?8¿Ò9–‚S1Dî9¥‹ºÕŸõšÎ?Vgé¼-ŠoS;ÔûªõˆÛ=Ò>—oÄx='OJôÇ»v>Mw·Q¶’TΣW¶ih¯ éhß ôvU¨ÀÓ gIL§CWU½\E¯ô…øË.ÌôÿÕðŠ™áÿ>¼bfüO‡WlÿõðŠ™áèðŠ™ñ/Ã+z&Æÿì±Eã ëcˆÝϪ‹ˆveJú|â)dÌàl‡‘‡r~BñCÌNy'˶«x©Ð}ÂÈ*ôÁ?©ZSÓk·aÓÕaIc"˜ ÿTõù22U]éøz5™0m´SNdQ8À´#a’ޤöjžÛ`ËgÝÙ¤iLؤŒÊ«ßs^©üòZ™ÎäÛ乸¾\jì\ÁS0œ6ðVEŠüÆ÷!¶@.+-&±/ùžÍò(d¢©±WÛ65½çôücÇþ6–ÝI] Ô#³.l~§^7ôÙ˜>¤%ÂÊJ€±lЫ}gç°ÊýfûÑ1´ñÛë1­©ÿõC¤6"j¿mõ…l¥.ð/7<Ÿ7L$º{ã›ÐYý?ŽiÙkΣwµÃÛWU† ÄyòýÔê˜ÅÔÆS\„ÆYGć<¼ÙÊ |—‚™»Ñlxð»ÞpçÆfákTÀ6Ê7$S î)ÍÚºlwÁÒZçFózGw; Ìà´¥B·ny»F›UYvýƒÝÞûßÓw>èúVÃÅŒ(=|ô¢ Ñ}³¬uêkwFñ1©ý³ü7Så|%DyÔ<’ ûKÃGg{Ï•køZÎ-ñdLÕè Þ´!ä &ñG÷ ‹8 T-a\®+Ò"Qhé„¡[ÅwÙäáFRtüî¥ûÂi ANF`r–=zôQùÐ^ë“ß ev»ûȰ¨Û3m™V\žÏ=ˆ¥¡‰ªãgü1ÑiÅ׺ÂÕhŽèõ4ßxÜá~± @÷õÇGd/‚ƒXöwA‚h0JIă LÍ3¶û…ýžâX¢¶7;×ó‰^¤cŸcZŠ‘• %'-tåúÞ¬4¥G<‰²AÏeKŽÚ±tZ/ :ÎDáþ°)ãªSÆJ&Y¤§à|[º=“ª† "”Ll*×d=·Ï¤ùËÍöVèd&Š2tÞCýúâõªëÕ,ûPÏQA_‡†aÔž^iQ¨ê ùI² Üx‡Že±¬gªLÇ«]óävP•>‘¨1C~"[Ú\,rä~Ž#‹UÁØsuŽdòPN53#€TË s•àᦙ#^+¾¿Ú‰qEê(Ù2w|®BVQ=Þºòû¯Ã¹<¹-<‚'”e_$(%Í68Yöj’æ[,ƒU|ÅIê 6~­U™Œ$Ê„ì6ÒÃ`8B®zù§½gx‚¡âï(¶ ^5¹EvÁÍä¤sߢµ|3(Zäë-¨1DÏ^aþ•‹©gx÷]­SA§Ž˜ 0¤ÈFÿ!EÊÈÃö2ãLÈ5ЇÊóÞ8 LÝ'Îk¡²sÍ£âš÷ hRyå™n#m¢3£Zýœãþ#kéÂ|y%\¡"Yž®‹âw—õ¾ Hr–5"((2X'„JЪ1†¶v «ÇÆ N!ÑôT,w EUô1ðé«!û, ®mT™±"ä©A㔞ԃŸfwgÇl oV Ù+]¯ʼn_¢b~6 g„{\uí™õ»osEƒ£šÊsõ¿»LSÍ•³×&ªÃ­îŸ–¶¦Ga˜ú\Gn^‡Ù!¨.Û§´ó(‹~pf]®Jù½WpÏ"¯rΙI#‰íg¬é1œ¨©»*±„wU2s'´®Ý Ã÷×1Iñ8Ò0+„xå w³ŬÉ5éP-ó„xÕÐÑ\™è6ç¡ÍœÎ‡Û˜5y“A¬T±hI³,Ö:ê%ÅFðM9L‹ ‡tÎ-!K«»v7£˜wÈW–7¥ÔV4K)Ï=t¶:¨<l¥a/椫8°eRóB¹ ÍÀx[!áïÎ[ºŠ'ú¶k†z]hÀÇ× {?®m[¤Ó¤VÌó ÂFE¾A_0)^W” ©—¿ÓlæµYyåX¢Ç ïCJ¼‡[†´ã4ánŠØž‹DPÿ‰ œÒ–Ÿº%B¨ê'IhP+TskK¼Ÿw—Ö}èS°n{xtð»û×åÓÝÅ»¹Ïõ™½oVÛî?^Á«tí/{‹ntFÿ„¢l-éÂ8OK®¢ê•3쯟¡":ëSç*¹å7œ¯¾‹¦>-³ÓIo¥_ lNfz´×ãbã§”FÕPýxˆ†Vo\![g»rì½Ô°åÃXÖÙ4Ø ä)î³ÃV ˜$gp­pK8~(üý\sïÁ˜=fûÃé½s¿J.ä—bóáF°™YÅ<öðN qô¨ÓÐSPŠ$Ùm&;b˜•÷SHˆP:>:¦š‹9d½cë>×S§´ð–ˆ€ówåÕ$\”x¾{îDôœª\èCµSÚÕŽ Šœ¦™žבNkïß<ž»U¾ ©mÆ.æ5·ÙÞ„ûÈ Ýßgùz‘Øá)øB¥‡R0r^1ïEÌ3ÊBo†ØÆ¬í×?I²ßMŸxïÛçLçÙè$¶ÿ~+uLüaO¤áÍëpCrôí–U†1ʹ> go ¥H TóÞ`O]Óë}ÖÀ X–Û‰ž/cSqØ"g–nå—ÝŸ /»k…èŽÃ3A›EØ ØÐßìM1Øœ¹°r׫ÛE´Ø-¬¸hû¤VäÅæl8Þ}ùw†?§Gzš³¢ºCïi J.óÝ®wrf^Èvþ2Paúï*Ìÿ2PaùO*ìÿý@…ùê@…å/Û¿0±°ÿgÛ†þŸ;þçƒÀ ô§@[G““7XZ¥;é,—ÓÈ–âsÝ­g]ŠkVNó)Pzö¥Ÿz>Ÿæ°Ù†lÀ’þ¨»ùS0ðÏAÛ±yÞd¼éeTÙ•PÖ'•ܰREÓ5N¤²­-pÒ5r™ãô.zh$¹«¬|¿È¾ l¡mºrz xò‚jßNС1µíÉ84QQŠáûuÓ⢬mì —œÒ™Îò;PØ=ESnL4'Õä—û“dƒÚÝùb²zü‰½˜vr°QâL{T¹u寬œ&In—‹)ççrO1ëèÁÁ}Új¦L§7·õ¸ Ÿ‹G¯Ù›HԼđ–ÝO…´x ôÏì ÝPóî9Éâ®R’VIC­—åÊ5ð§|©¾Ùêd!†·9[•q  œ©À,œ¢vd•ÙÞ‰œà\”ÊÄ—ÞPµ¨â¦>ì%ËŽ¦Å\¾¬×Š[nRÇ€“ƒ­ëÍþt^—zÕo!’Éû×WÛGÕ³¢ä¶èÁή Ý…³i`iÏW£ÇòTáLŒ ¬Ï”÷Ó¦V£Ž€p€Äø®ÌµWÑH½ #<[E]¢òx¾6|:Ã鮩“9Hò †`ίuüñ4¶Ç¢Jk¨¥%q‘äpi`§iµsa…ÒûŽòº·†f• ÈšÀ•oü¡€%ýÄs×íÍÿ¿`éôõ?âI¦jèÊõ×¢íðjÚÞñ‘èõá¯.Äk’`%øj„P)ãŠ&ïi‰ñÒ3ìA¢ELœ`ñ·ÏŠ-‰÷K¸2ÉŒ7¤WèØ­¸ð“‚ ½“ƒå—&´µŒÀ´i<¬‰ÏIL«Š$­ýÙíßü.¾û-o– ëŸÀòA‡.šÊ«_BBGÄ€Ÿý’ñ¥¸Ÿ‰uá«[q3°¤8¤à2ežwÏråw7ËMN3¿r+EjÊfJW‰rgsÄHŽÞEJðÁªÆÍ7ò|Ç ‚¿â-ÓI}£Q£×Åuò7zi‰ª ˜ö:¤ Lºe¸E¾ŒæÔ£ùmѤQ¿0ϰlØŠý\8Pü+ÎÎUï·ül6"sT¨fq$ñѦLèjPO’çù ÒšòBÛvHõÁ•ùJ}G|«ëñ KŽ+BS=Nz7Ú ¾"?i?êo±Æ€&êT¶þ©9A,;Ê> PÎ(L‘iR“Å4«õýÅ÷)ØRI›Í˜j´êðø³ÞÙèá¡BC`˜ƒT:EXѰòÈ^ÇžÙHr…2ÑÈ¡E1£L”…2b5¥ŒJ=¾°üL™tæÛ›üµðÛa®ŒÁµL…è˜x©P©k!V_WÛ\µÊ&e,èœ&ª§zXíkZÕþUÙŠr¨ÖbÜt"—Œ÷¸¶[a#" $ôMÈŽ\ß3œ„x¤9ûC4 2VìbÄkpU\)¸1º5WYÚÙE±iu þ;:OTô½à+%=¸¯h¶URFý®¥MDhóñ¨.‹¸ Çá‘Umv×0ˆÃ3P[ÌŒ™†º[Óþf€E²v-ÃIçñN±ÊIDÅ tä$Ìs:ѵ²ü9l™FKŸ_0“¨ÊÄ?ÀŽû~N ÍømœPÝc¶¯+W÷UÜ?Ñz]Dw]Þ²¯\"l•%›—û^ðæø,ÝÙ§«mäüù`!Ð8‹-ß$ƒ{¾Nü¿agFï[ýao‚1ŒZ^4ÕÈlH»Í? ùLNº™6IZÔn±nä_ê‘«ô=šÕ‚ƒtY8ÓÓÌqN{òT@&—Û_ ®Ó&©SÕìÔ˜ýã}ìhG„Ÿ4~fðYˆÿƒr5¤) }¹1Î<[=êwx]zäÀOü*àz¤3ÇpÿÅ FàÓŒžM6‡U—•Po&×}?ím¶Aö²5ÐÛýXþm·—Ò[ºd­Tÿšêø²u¤w˜eiš`2£Ë`¢ÇÖ]“ Áæ!Q]è“qwî0?Ï*„Ì«n7Ô^ÏXš€ï±Z§sMTHûKšÏ³ä|]sd¯ÌËhòž¤"B\‰»’i ÜÈã á}pÒ•ËÒ¹(RÓ~|¦v?wîk‡R¬¤Úh `} ÊêEõÊCpˆLDmfcQ¨Ð næ¡~1ûÖ1qÌ+i‰}/Ë6>¤j愧ųª Ì4±Qú‘¿ÿðýBþ )죂õ4ÿGΜ’5(Äœm!+¤fq²±¤MƹMøeÑ•íAcbfs\‡<‡Í7èÊz,gzxv`H,Ø’ÍV Ü%eèÇ1ãNñຂá~¢ŸZRvÜÝg9WÓáì…^¶²Bµøì‘ݶm£Ô…ôàƒ\ ÂDÓ LÔí=iš/BÒû‰™uX{é¤®ææØPê#u¶áú=g&­Š¨Çþ„t„ÌZ#Ç(=Ç{I,<¿¿wÅYÍ”ÇvûwU",%x¿Ø)$yÒ0¢üBë´FH¢ž½rjëF}ÁQŸtKù]µYö$CûS &‰:a›Qƒe» ><ñ÷ˆd#|í"¾ [è-`ÔÝ©Rµ È þ$ñu2uã ØfùJÀn FÍ.Éw×ù¡´ã¦ÈXuö³·Ü5~/7£ð°û7_¼@âp ùž7²ŸQÙHhSð†ÃAÆÖ”õlÂÂÚÜJ—k®c½Ìk~ŒšÂ";É4g…‚BN{'dì‚yÞŽÞÀ.Ùìè.’Ýëå‘$Ð GF'4§¤¦8\Õ ©% ‘¹‡H:{kçöÀÒ£OAüDë}‚ƒ'‹Køù«¬wé¤ISKÕfœWáEy'ãKP·ì Ì¢Z¶Hn$¿î~¸ðAíÐY  ÝÐæsO¬ŒLúé,mC—Ç0k[íJd¦wÃy@jàk¾PÒX&öF¸tZ¯8rh@Éœ û¨ð{G*e`ªšÎ%Í,æÛt ÅC jæ{© ã$pš«a/õÚ•ñ’õ Eð´‹wíNæíÿ¡ éiè/üÎ@[-„:)NÖž:‰)¡"ö˜Àö&'z’‹2RKë ¡˜"zxº>5Ôûúœ.IS>Àýx³ÚU(Y.üƒÐ¥x6°ÈjB&¬ÁžÌäŠõ2ŒzÌåñ¦Çm  ;ógAÀlÏZ='jÄ Âv9UµïÁ¯°ÈžUŸºFz%+èA@/•× ÚÅ ©m²+äX Ex-o@'šÎMý…x-·¦<”,G?†ŒÌxFJ}p0 qc&¡©wcÁoë.‚h…&ƒÈ}ÉY¼bÕjË xi<ýý6ß·Ó(ŽÕ†^ÕÇöƒ€I‚\¹Î$ÈipŸÉ†w|iérRYñÖ4±Õ`…fì5ôxÏÛT„øˆž9î\ˆè8”†b·ByDn˜ ¯ˆ*p¦hiÅ8æsìôòm9ÛqöM×;ëL] »‰µõã¥>ÅëéýÀ°ñHÄXª8|»w=Þ¦UÅãõy£þ±Ý»ûÁ¶€Ô ’ýFŽ}…|Ê(ÖYœ2:¹‚>ÉöçwËëÃëÞÝ£j±Q<ºAÔÒöæåý‹Fì"‹X‰/&Ò`2/‘ù¶üÉ)‚Fƒ„ä¥ÙTÒbŒI£o““{H é•Xü¾ÿéõh+E3?]@rïI·FBAQ–KæhÜ¡rpÍÙÍ…UÅU[î ˜1}¾ßÉÀ”a%7_øõèw¬‡EÅÄzœr5“ ¢>I¤A&è›ä½AÎ@B”F´dÿIÇ„øªØµ™C‰·\AɈÛyvÇÆ¹†a¶Ý‡T»‘ ·Þ0ép²\µ{%åY¥¡ãwûææ-ñœýüògtÀKG‡õ¤9û[wËÉÌîïꌆ”ë¿ ʱ÷ÏÂåŵa¼Ï \geèÄ‚UöVΊ‡lhê'™onÜa+nËǶí|Û?Lsv_™`ZímÒ{äÔûfVN”„ l"ÀÀ¶Éß(Оj‚¢ˆÿee,tìýr ðåcºte›øû6‰Ùñãð:ü‰ð+/+bkåyXD' ÕAá Ï ¶sÝ! Eàjù ¦K7˜â´<™5y.Èañ?ÓvT™ÝRuÑ}Tí\c›BÙxîTÎÚªˆ+ì0Öüì™Q®Õ]pmJDq¾ZP)s2 ²d¶'× Ò¹F„™¹!ôâ4*êröÓm@t¼gí"‡J…n1°ûÔIR¾ú¡iÃäƒ6$n¹äÂ\J è(í\œÅ|CJ e6q>¹OÈh¶¾ßÍ ÇÜ÷ÒoÏŽ1TÅ›µ†( „3¢È™5À¢Ø}’´¡lT´³Ä¼¿mà·rÉXk=ÙØ®`çPBÎqȘdžéÙ­rÎèzáÈÁ‡š ‡ß ‘Ê–ÃèÀ“©aÒF2ºGQÆT1FùľѯDéÐ:•7]kD|«ÊÙÐb/…ròuÏý©°LöÑXÄ/øHðè&nÃ{$%ˆh^î“-è|º£!™ƒŠÐ£ÅÀ¸1û‘ÉÝãsòŒ'Aâ¼RL6©áÄ(ºàÀð^ðƒãrу®9~fÅòj˜]^ã®%Þ ™ñ€×™ LX¨­³Î‰šŽñXn?Xþ÷š}S¢à-(cʈؘHEÜœM¾˜/á3"vͨe֣—ƒ¶íÁ´0´S:McH7#"WDW„ÎýG¼+šbŶ oqeO¢€Ü0y»y!„suJ}—“oáäÒ‘D˜ç10ÛKk¤l6‘¹L‚Uü³P°-¾°Br¼frë/>‚$¿B sË”OŠŽ¶œ¿›åE¡ö“é˜ñ Ên(aœŽ×)êÂoWSÒØË‘ÜË4HZhІû…@GÃÿH>Ó†ƒãMo¦þ°»aÁ¤ *XúÃ&v é3^°hÚO¡\ÂkàC¤/%án,\‹ÅœŒ„È71ÔàE)¿MŽçÙÅÛsv£>ÛÊÈõ}á#ô‡íÁfQ¨TáÃAC —j2—g 3¥P ¡Áµžš´‘ªÿíÈòŠ¡ýj¶+’ØÂ…é+C‚UÎGVQ¯Ê¼®^ ¡[•¯…*eÊ>ãîãcã.„‚ÒØ™†Ã÷Eðô ± ¹´+±‡î8Ó~ä@ô‡Ãï<ŵX§ç¤Ýø«Hc=œ>](/ zÞ`A¢(%1²¦Õì#lH•ãXo§=4¸t+Õ‹‡|Ü^LÔ=¤΄¯äßÃs8Ä\gizÜÄ„’/òÒÍÇæ_ÈW%úØU)öÿT&¦?ž:˜8ê7„$S&Ý»Øç?Í+¬õœoM¦Y &àóWº¶ÔÞÅ ÛZø˜áTmû‡CètÔÔáüù}¥“³KZEh±O˜COë"§ëYãÄ.ú:K§©Ë<3ûézø‰¾‘”lKkÀZ~ø‘¾tæZŸçÂÑ~)¶õ rªúLú(ïtuô§Ç:ñ†Ç²†§ãº. Y!NÉ_—ã¿r\úÿ»ã²0ü‡ŽûÿÙÛó¿q\úÿ¡ŽËÂð¯ŽËÀÌAÿ~Tc³ÎŽàý¬z¯ÕeÛq¹n“…¶iCÖínŽîo1)¡FI\*üöÈÃ$H!ž ôÖD¯=3•ž>˜ïäÀydÁE™™ÌPú§kÈ÷Ò‘ÅìÇŠŒv4´®i»ª±¾œ»zþ÷ødØKƒÜ¢dF,u á´°d±ûåá‰þIN§sƒåÇÆ²MOŠße¯Ç&öwÔ”¥¬o´Ô>¿´à‚Œ•M’A‹¦õwQÞâ§«ÁøÔ4˦S‡¹º·´V {Ƭ—:Øz¦ ¶2I`E÷Ϫu§æ³mŒÖg+”ßÚ»Yjêþ8Ñ+9­oF8I¾ß‰ˆf€iÐèíuëÔ­Kbla}ƒ#ÇíþÍŠ21oüÞHQWCÑkÑÑ)Rµ•áËæK“uÜÇÄ¿FuŸ& ÷³@€Žc•=XZê Å%ŽÜ›^òÁÜ2En ø;™ì¢¹-¶ÿÉTÃQ{ìÚt²Ôµ;1´øiëcCy¢4ÔÖƒ¹W]â`Õ(Bl6 Q¨*ÑÍ~hAÀtW³ÀÁêY{‘1M½{# ªBØœ°)4ýy¹%Ê`ò q?Qmn{³ :[gÓÌa ´ |l}‹uìŸùò£:;䘔h"‚#S8 &ƒ€2˜õ%A¾@‰kD™H@{âã‡àÙãRöwÕ[¨c7÷’!$íµoDé”mFaöÌ^>>¹NÞ&ÞéÌŠÖ[ˆˆã?€F¯XW€J¼;x‘ ‰<ã†ÎM”²Ížu(Æ|è^/ŸÈQååÎLIã̧V*¯À7ä@5z݈(´ g~+­€0E’¨Ñ'lX&–ñ[]K§š\Á[’e&`@’ÀÌÓ^Áç ‘¾Ý3*9¨áJ1Ÿôv8…éàFä rAu.Ç4c}èAŸžS,r? _£,ädŒ÷ŸtX'£`bÀ,ÄN&^-–OɱÍmà¹ÌÖ‚<~)üñMˆ}.ÝwZvTÝ„ß9XxHÚŽ½`‘Ûâ¼ðôÌg½6öíGÜ™§ÿU@fS¹¥ëÈY;^Bz­”2%Wîö±WaÒ+ Qóê´ñüo.ȱ€Ç&‚q:2Öƒz¸p8§+ºZ^.>GZáž0$µA»ú×ì̺¨l+PCŠ­Þ®Kpg‚’0YÃ1ükqôíÍr7@å‡g°Ç~6â<'¨cçMÔÕ3' ”ˆ¡!pB®ÅO åy´¢PÀ€Å#ƒ‘+ó±óò•·¸üàä}ø›Í>–'¬mE“ìgÐ9Rì0Íé !/Aà"DØ/ %lq.¼4ò®ÀÿYÃÁª¤!ºH ‘¹½³cM„ŽÈ²p–RšJ ¾@›P눂Y"j "lkPuÇ!M¦êäR~È4þ®‘„+}¨99Wd4øŒlÃÚóóšúß@]|õY¹Ð­<Y´NqÕÆqy·È)!n"pÚO:*ëÃ(>e_Mž®Õhµƒ•]‹y:¹³ãa‹ePvXìºX¥Ç ^-þå˜ÇÀ®NˆÙ+ˆôÉ+f§ €J…×(.v¨pPE;Ò,âû廉–êSî§©!kÖá¶ä¡fÇð©àó@¥a½ ¤£|â½ðh«“ÿÚbYÿ»Ëô/-–ù?m± ÿ}‹eúŸÚb™ÿµÅ²0Ósü'-ÖéŸÏFCô9®M•’òïÏ®ðŽ#¡*®ºt¦9½älŒ‡„¤0ª¾;_Ðu…/¤P±§Å[]á¹®¨IRÖÙé-;鵯PmtõÕ,:òÉj'¥Í*—À”P42×Ê¨Š¢2ã[?±ÉN²O¸·ÉFŽìJÙ,Úë0Ù›çœc= _ÎfÝžÍq¿²œž\ëÌÜ(2iO_BˆŸå»ã¦uT\RÖ"+š¿£—„õq*$–Q ¾UUH5ùÅþÆ£Aý'^MuHZi9¼^9K4ÒÇðØ™y­)|ádi²¬ùžÙenç°ªýiûÑQÖÔü$œ–p›"»¾&¢òä8û"tÉ6Þ‹ÚJ¢s…Ï·1θ'Ƨ.æ‰omºÆÓ,0Ηö¯$ŽnØ ³½rFÅØ~–múMÌ#Áõ,ÍñÃéX½×´.ÍòwGÌ#ZÇeãcñ¬H8—œag§&séFžÚ_Ò’QN©³¢– —yñ‘¯3XŽÂ ±…:äð .ŒºX\®ÆYºB7øëïEǪS +ëÆ(ž”kù¨êõä Qtlîý;^k%p´Ò5´MÌâªóK»¡Ã%³\Vœ æðËsŒÚ85d¦hE5©L ʼn3¤|©h`Žú-È2ôáÔVjEú™º¡}Ñ¡)¿œm¥û“^^&ù]Ô$¥î®FÞÉdž犑Ÿ¾›ÿy¾§•ràÀŒ0 z‰Â ¥§¯&ø‰Ý"‚Cƒküó~Ü~C`‰²c}ò„¡/¯˜ Ö ½?WdÔN¤$šXi×CÍÀô§Gãž#á)>ç鬋¥BP9ظ<ðr/[g#ù´ëÏý9¢F£ ²p.ÛÕb”al:©VôÙ l†ôKĺª"ÆßÊ2tB|qsÀLyiäæóúäbLhN(§ïø{d©—)ï™ÈÎ Di©+‚Cõ/çãðõ#3Óƒýí…Y5/ÌØÚà¢ÇÅk$晦Äz þ™h¿¦q à%ìYoñ–ÄAavv`¿“+Ôá ˜ðÔ@‘Mãì­xµ3JNUƒü@†« 0œæg·£¯®ƒHÐLxϧ‹ÜœP”êR:¸'X˜«Ò¡°O:Å'…E_¨ï$ƒ¬üX[:d¶—ÝM¨¶]ñAx;:x©°‚ÏbWv™É×’’Ħ•ò-’sa‰x‚½ÙjöÔÞÖäß@ÖÅÐ>é©Gtn²)E«SºEji0+m©ƒ~Ùs`™úÍþƒQl=þ \Ù²P ª¹ODÄ:þ%‚¯qüÍÈ` t=RUfM„S°ÂÉÌõ›hú0uåîž߇Üoñ±,Zy#8åãç“xÚ½oìàtÝŒ”7Î8³‘§*“¾sÇ•t@dæavøãiÀ’‡0ºˆÂ-U\¢VQD$ü‹[ž÷c€ñ㇧X2Ô=¸ gó†o ˜ßxŸ{SLߘùëPÌ®8"ŠÛJãmÀâóxŸ6OrqÜ‹•<hS¦iIvÈQ«î"$‹Þƒ >’9èò{Q>°öª³{ž'ç³%B¬6ÈÍ€1`‚±‚U{òaöØÐEP¤»Ñ¹#ë•Fdš ?úâvÁ%:ÀQ%~ƒE¸>aë½K(è¼vàÇOIÜ* è®ÎŠQ`épCpkGoÇå¢8´±lÂG=1t}OÜEƒ6í]pƸ”v7Nê×+4(u8%_*\êEU%gÊC*ŒÓÝVìÞ×§OÜ ª¤u‡ã«1x¾‹Úð”#Ó"~>1JÆ(v°ðÓv)GáÈ'W&—¸äls¸Ê㸽EØRÊÅv«Yé ÿ…ªÄ&3| k÷bníÉ`>\Ì Ý®½C" ZðH¡;Áe QpL¢¼mJNüÛÒ†€QºIƒPC ;ÿZæ{«1'k+Cp[ÝA9ìÔá!¢±ôà׸»pߌ›Àú?nN‡Ó9É»h-}½ÝîdÂÇ߯aO1C5U»I'‡¼XæÀöfFg[Øëù`<ÏÛN¥:sã á~g_È](äe°•ð ‡pБ¯˜ßàñ·#\4œ^í~à<Ÿ[CpÙ~\Xöú}³Ö”­ÖËîJ#Uk¤Öµê¹qùü£Æ=4(MÈ0„ù¬éð£ü±*¯©ìÏ£ ž%ó•‚}è¹÷é6úømöeJ?/ÂnŽßkå¿4Ò“:w?Úá‹îîƒ!Wl¥Õ5æp–϶º³Ã-“W'•¼'àÆÝk=b¾1‹Ê`£1X¯ç‚”þc1èc6\UÆh·¼?´7`Ò—Z ï§ÆÞÅZ¦‚·soÈÿ`%À:÷ÛȆ–VÎŒ/lï¤éGÆx{bx|ϼ¦©Ñ¯JE‘ÓÂÈéJ} §JÚfh cØX•Ž?Yoé¦!X2®Bp1ˆï¹*„Í®å!#þ–ª3¸ó>á·Ä ¾ta0t©ãRÝâøÕáI"'G"§â©@P>‘5¼ÚÛ:ì'É~ pÀì“°ûö|Â~Ð’ÜÚð5à’& AÀSlÄÌ™s:˜ËRÔ–”Y´8|É‘V§ ]}=yk|Ùƒ9ÓÈ>ubw} p‹$>0yÒ­Ö׿#³B~œ9@.'Äwxà‰,~ 0à¾À«Î7 È-{c,óuç®:¿ûŒeî‚ëèÛO×D,7¦ÌÐDf D¼ØÜ7HŠï¶è&oú‰Ç„ÂY ü\‰rxVÿXXMmÑ…7"ÏÐ馳¼#£æ%Š’¢ç5ð®ˆ\<«ZT™OÇíGÄï¦ãuO•Uî&Íý‡N³.¶l<´–à'û6ƾwC¹v ÇÅÓm̸Ò³‡Ú¤ÞÌ…¡‚ƒÝç2³W5“Ãry%틳¥ÚÜSÛ$O °9~!Їɒ@lý[ï5†K®\{½=ˇ%=FPu‘™‚VÇî7ÞýRÃz›ƒÐó=jw€$Aæõ°6q 0 =Æ·ot´qVä‘ ±â‚EGö|DºYŠÎ¸`®îÝôÃ55&Î<2Ù7U ?”&üºåÂ0SVpÌâÐVívNᛚÅ*ßfõœ ñ6ãcåɈÃ؇‰ýÖ鶉vóm²Ù^$kõéïo´><êPMKÜgw^DJÇ·¼õ–׊ž…Ž€5…왫˜íd„÷yµ=jçµÈ¸yt~oé%PˆEŒàdülÂÊf×ãbŠ ‹qH`T¶<÷ÖµÂe鯻 Fâ3è9¶~¹H‰äãØƒSÝ·Äc¾Lð œÖ¶YžÇ_*W›´0ë<¶éÚá¢h/ý•Ä{nå0€¦…€‡ÅeNÄ) ibýk9Hx=¬áÊ´Æv´_éþ…%̲^7šàú>X¹Åß ŸÚo“j¯^[êºÐQ’ÃiäÕe]uá1´c”{±éÅ"ABÆ6ôu ±ÈEV»¸ättûÙ©Fö13RHSõ)„!ÐUù´qrÝpÇÀVhö»ŽŠ¸Î9kË““eñ¼ÚEpéú›úŸÚË3å1º@õ"qVÀ’zåae÷h©¼þmÌ;@Ýò'&¸¤øÃ%ƒö(7‚¶kKe>˜×5 (ÌK+µÍ÷(èìRhçÊB§#»7ö€Z3Ѽ-›K^Ù· „¡úRfzÁ"ÅôþÞ•ß\”Qd ~•°6›Ï‚ ˜Z}ðÈ ]róRœãAwáÑLjß|‰~÷#g€Š˜Ý ódŒ~¸í<öww³é †òÞ=y›åëäUÁ^±©b©øFÍVòô¯ßóÿ`‡Syrqä¾óèà }9±†CM£¡¡q0i”’HLÉCÊi®æ+·X=„{Õè•w¨¦qÒ×í^Ç Ýo£”°–{ ~Ò]oØSnkgý¬eb{î6”=`㎇¬fA|µ5¹)qÊ nŸ0È’M÷²m™©[Z¦„,Ü6zs´r¨N¯bä©÷¤å˜>¾GÍ+6G®’àwµ‹¯ŒäoÙ«/3z¿ÔÿîAz›³†#÷VT†ÈÃçgËJ‘¥áBŽÈ‚sÓQŸ÷nݦCØ1Uí6u1â°–V¸£ýT jßூ»m­µhnÌz­wÆË­.Y÷Ž ZÔe€=p¼üybµPü`^ÍY¶CpUÂÆ‹6rGþ&ñ÷7Í¡Ä?VÝA!N\& '#ë v±c %·Ž¾GwóÅÒåUÀŠäøª1é²ÜŒõ4ï8²§.Y™¢b~»N.öÀÀ¶ Þ} Ù[ÀÈÙ™e+!›&²/SmAéZøì¨„Ï;»Aµ—tºÝÔV5ky:pòP¢&æ&D'(:ü¼œ‡žÓ„ʱ}x† Uz>µ9 òRñú1úøöâH™¾Ò͸çJ°ÂttGdt~UË߆ÄÄå'‡p”b‹µ¸#y)áäœ2¦°[g†.¬C: RêíwjÑÿgÂd,Æ¢XX]~º­>í¤ìÜ)ínBÖÉ[šE*G°èôW³†§ïÌ–/|ž$)ÈÙ£Ð`þJâ%.àY"„"V8¦™NFÉRP z)p=‚l¤W j/æ|C’Íoú1·¤† 4pWFNáorG„w¶IlQ, ý 8£G"#|ïâ¿1Úl…¿QŠ”Q:«(AŽl÷ȵ8Ⱪd[h8yŸí|š¾É-ÞBI"™H„¾¸¶!ßÅeÃgCB24ÆW±JÄ£®3ã2㜧qö:¯Å}L¤ÁÊS2WïqteAK}œ©îË[l¯Aèÿy.'‚è«'µÉ6²Ïœ;ßGÚ‡²ÔºùqÖì¤yö›x{Do¢PW×úcµzÎÉD­:©æB~ÎôÙHë^±ƒ(N”Àünµß |Q!ȬßtÚa¸A_™‘ÉpøÄ;#ËÁ\Z&ö`qD®ž!ê-ÏËÛňR¬OÒ^×g­Ù: |†Kƨں±s~vÓæ8¼mëÝš¾€EüÛ‚ç”Õ ÑºæodS†ÁàfKà"öÊ?1†€óý"ì!#™Ìüêzó¥›Á>°úÊu#µ*“ôkI> º {ûŒ?Šðvå˜s£ió Ðþñž/ÙŒOMQ®³ZÖK¬u‰ˆk 2óó°Þi¨ ­vä÷enùàÒ3’ìJ”²†¹ÎoÏzK©àéæS·³¢srÉ}ùá ÝYeßg¿f‰!ËÚ¥m>Ÿ±9rÅÔÀ›Ñ4¡óÓ¨b.¼'¼=òäC­ss…Dʪ è¸8umº +••R³û‡’¬DÒ0cÖÊL#œéó±<ý³x¬Ã¬Êy˜^Ó`Ô¸™â4 æ± ›m7L<«E¿„¾—.Ïœ¦?tçÈ:ÜÌ};‘Œ¡F¥Ã;8T;.‚ùµø—ÌøÿúWӫɸ4L ÷…ì¸dI˜{‘©—zÈÝoeýŽI=ÊïÛñ€'™X³üwkÖ™X³ý‡k¦ÿ~bÍúÿãÄúÿÉ!5Û_¾ëüŸ} l$/m»NÓ}®zCŽ[u¢y×,®éÔï§ïâiîI¯PJ7$œEãë›dæÔX04úƒÜ­«õú1ú©°í[ÎÖ­¶éN?{-LKÃ\íaG:DA–̽ˆìß0¯ò¡·)fVw¸ñâ• ‡égYÀ⬴YâC¬4$:sµÄ]DtñéAŸñ1"ëþõ­)2»7.Ñè‚lpæÁSà­d{GB4ñ-a'lª5G~8×÷<*¼öñ¨hùÓ¨$êƒëÁÓ•¾ p¯Ë^HÃJ{¨™äÉ~*]és¨:ól/ûM”?4á4kç³rÝVÔ ¦t§èu?ÈðègßÃH^¸×Ç„E­´ÒÏ•ŽòÐ1iÍN]Di2R˜¥Äô÷ßóëbdýkžì_×#Ë߯Ð×5ÄÀñ×êcÿº†Øþ~¶_×ã߯пÖÐØ‘8èÿ ùõÛß[ÿ¡˜™?k ŒÿîhŒŸ5¦’Ÿtæ/0†¿*Ë¿ÇXÿž;ë¿Áþq‚¬/Q¶ƒ12|αÿ;îËV¶¿– ÇWÜ?þü…c ÿ·•òKùÉèÿ]±0ýc•ñ)ÈøøÙ©2ýÛ(X>?â¿«æç§ Ëá3qücý*ýÏ@¶¯bü dÿ*ÆÏ@Ž¯Òød ÿ*Ï@†¯Òø dü" ö¿sL_¥ÁðÉ™¿Jã3å«4>Y¿Jã3í«4>Ù¿Jã3ãß§ÁÂñ÷4é¿Hƒ…ãïddø"OAÆ/Òødú"OAæ/Òødù"OÁ/Ú Û'ÜW}êSð«Fõ)ÈñUŸ€Lô_¥ñÈðUŸŒ_¥ñÈôE,¿7˜˜¿Jƒå“²|•Æg ëWi|²}•Æg ûWi|r|•Æ' 3ýi0ý= f†¯Òø¤Q13~•Æg ÓWi|2•Æg ËWi|²~•Æg Ûi|Òo˜Ù¿Jã3ð«¥ñg ËWKãOÁ¯–ÆŸ‚Œ_¥ñÈôUŸÿ¾Sá3ÒÅYX¾Hƒù“FÅÂúEŸ‚l_¤ñ)ÈþEŸ‚_¤ñÈJÿEŸ‚ _¤Áö÷4X¿Jã“FÅÊôUŸÌ_¥ñÈòUŸ¬_¥ñÈöUŸì_¤ñI¿aåø*O@6ú¯Òø dø*ÏÀ¯\üSð+ÿüÊÅ?¿pqæOº8ÛW.ÎüI£bûÊÅ?¿rñOÁ¯\ü3ý+ÿüÊÅ?¿pqæO\œý+gþ¤Q±å⟂_¹ø§àW.þ)ø•‹ ~å⟂_¸8Ó'ý†ã+ÿüÊÅ?¿rñOÁ¯\üSð+ÿüÊÅ?¿pq¦OúÍ—3ãOÁ¯\üSð+ÿd¤ÿÊÅ?¿rñOÁ¯\üSð gbù„ûÊÅ?¿rñOÁ¯\üSð+ÿüÊÅ?¿rñÏÀ/¦ÆøLLŸp_¹ø§àW.þ)ø•‹ ~å⟂_¹ø§àW.þ)ø…‹31|Â}å⟂_¹øg ãW.þ)ø•‹ ~å⟂_¹ø§à.ÎÈñ ÷•‹ ~å⟂_¹ø§àW.þ)ø•‹2}å⟂_¸8ã'ý†é+ÿüÊÅ?¿rñOÁ¯\üSð+ÿüÊÅ?¿pqÆ¿OÔ™¾rqÆOóW.þ)ø•‹ ~å⟂_¹ø§àW.þ)ø…‹3þÝÅ™¿rqÆOóW.þ)ø•‹ ~åâŸ,_¹ø§àW.þ)ø…‹3þÝÅY¾rqÆOËW.þ)ø•‹ ~å⟂_¹ø§àW.þ)ø…‹3ü}¢ÎÈú•‹3|Ò¨X¿rñOÁ¯\üSðÿ¨ìÝzeÍ‘ì°wû?Ô‹ N¨þx‰ ) ¦=Â@»1#Æjº«í²»ª„êjèòëÅÅÌ<›‘‹‘q4=§bç"ƒüâÆ`ŒÖâ.0Z‹»Àh-xjÎ׈ÖâN±_Öh-¸lÑZÜFkq­Å]`°OŽoÑZ<9ŽªEkq­Å]`´wÑZÜFkqd¿IŽïÑZ<9ŽªGkq­Å]`´wÑZÜFkq¬Å“ãÅ{´OŽ£êÑZÜŽh-¸ ŒÖâ.0Z‹»À`-î8ñ-Å75¢•¸‡‹â.Z‡{¸h~Æ•+Z…{¸`ÞX´÷pÑÜÃE+p-À=\´þöpÑòÛÃõ÷µóâÀHZêWž_(œ'®ö¤O)g\ pIθüWϧ g‰_pMϸàô:ã$À½Dáñ†›á•‡Ïö‡‚ ìï€ÓNºÀwBSªºÀüNdÊü~.ðÌÔÚ}à;¡A ,Á×p¤&×èkx@‰¾†ÔèkxÀ} Ø£¯áGô5`¹‚¯q>§WJо†ÌÑ×ð€%ú°F_Cœ¹‘èkx@¾†lÁ×(Î{ô5<àˆ¾†¬Wô5<`оF9ÏMÍÑ×ð€%ú°_Ãñ§U¢¯á5ú°E_Ãöèk$gnFô5 \Ñ×ð€éý×ÇßH¾† ,Á×p5ø.P‚¯á5ø.°_Ãöàk8þFFô5 ^Ñ×ð€)ú0G_ÖèkxÀ} ø62Öu•Ì÷Nnp"þ“HºÀ·ž*¿¾E¹ÞÙĵ·žj.Î]à[Á‘7=¾õTWöïçMo§_w‚ƒs.P‰›²|ĵW\$ÕëpD@9û‰¸ÓcOÐë1GºáõX" ×c”ÊëQ" ×£FÚèõØ" ×cÔØëqD@§ÇqEúïô8RôzÌ‘áðz -Ž×chq¼%z=jdª¼[ôzì­Ên¸tÄÕëŠLUv€¡Åñ€¡Åñ€%ÒX#5ö€i£ÔH©<`‹tÃöHÄ=àˆ$վϣÎÏÁ¥@â\`$ÎF®ÊF®ÊJ q.P‰s-8؉s#8ø6o ‰s)8up9’8X"‰ó€5’8Å8.0Šq\`‹$ÎöHâ<àˆ$ξÍ/‰ó€)’8˜‰+®8Ǧ¾M/Iõ:”HR= F’ê[$©°G’ê£ØØÖ(6v)’T˜#Iõ€%’TXßK\rlêÛ¼1$Îj q.°ç{ q.pçßæ!q.0ZT¹ÀhQåK q.°çƒüNžqQþÏFù?åÿ\`”ÿó€åÿ\`”ÿsQþÏF«q­Æ]`”ÿsAþ/U×"‰ó€=’88"‰s€oÇKâ<`Š$ÎæHâ<`‰$ÎÖHâ<`”ÆqQÇ™ãädUZÅÁ ™G\”8ö: Ç.0E’ês$©°D’êk$©P"Iõ€Iªl‘¤zÀIª òý QúÏÃEÙ?%ÿ<\”ûópQêÏÃE™?%þ<\”÷ópQÚÏÃEY¿3N® é'ŒÄ¥}eaªpº¸ÙÛ§¯ëŒ+op¸L×ÖwÀ¹–pòˆ—%< ¾âì· lï€(/ö€ýݤ¦7=Žw@õÇÈÙâ¶+Æà;ÑÁbÒ¾˜vXÞK.“?âj q.P‰sHœ lĹÀHœ ÄyÀ|çS q.0çK q.°'N"‰ó€Iœl‘ÄyÀIœ‘Ä9ÀrEçS$q0GçK$q°Fç%¸ìà4’8Ø"‰ó€=’88"‰s€õŠ$ΦHâ<`Ž$ΖHâ<`$ÎJ$qPßKœ ׉s=88‰ó€rçS q.0çK q.°ç%8¨Ä¹ÀH\sp=À©ƒ‘¤:êIªL‘¤zÀIª,‘¤zÀIª”HR= F’ê[$©°G’êG qõŒkW$q0Eçs$q°Dçk$qP"‰ó€Iœl‘ÄyÀIœ‘Ä9À~çxñžœ³¦î9’T¯ÃIª¬‘¤z@‰$Õj$©°E’ê{$©pD’êÇIªL‘¤zÀ ÿW5õˆò.0Êÿ¹À(ÿç£üŸ Œò.0Êÿ¹À(ÿçõŠò.0Êÿ¹À(ÿçƒü_u¾‚,N­.Êâ¸FYeq\`”ÅqQǦ(‹ã£,Ž Œ²8.0Êâ¸À(‹ãƒ,NÍ.Êâ¸À(‹ã£,Ž Œ²80GYeq\`”ÅqQÇFYeq\`ÅqŽîi޲8.0Êâ¸À(‹ãK”ÅqQÇFYeq\`”ÅqQÇFYdqŠ:¸Iœ‘Ä9À·yã%q0Eçs$q°Dçk$qP"‰ó€Iœl‘ÄyÀ ÿWŠƒ ²8ű©eq¼%Êâ¸À(‹ã£,Ž Œ²8.0Êâ¸À(‹ã£,Ž Œ²8.0Êâx@ ²8Ù±©ïóÆéò98X‰s58(Ĺ@ $ζ@â\`$ÎŽ@â<àÛÄ1$Îù¿ìØÔdq²³ÂiQÇí0Êâ¸À(‹ã£,Ž Œ²8.0Êâ¸À(‹ã{”ÅqQÇFYdq²ã{TÅå£*.Uq¹À¨ŠËFU\.0ªâò€#ªârQ— Œª¸\`TÅåƒü_¾\”ÿsQþÏFù?åÿ\`”ÿs€íŠò.0Êÿ¹À(ÿç£üŸ Œò.0Èÿ¥æà‚,NReqÜ£,Ž Œ²80EYeq\`”ÅqQÇFYeq\`”ÅqA'¬ÅSvpQ-Ž×aŽjq\`T‹ã£ZÕâ¸À¨ÇFµ8.0ªÅqQ-Ž Œjq\`ÅIŽ-.ÁZ|8°h)îö-Å]`´wÑRÜFKq-Å]`´wÑRÜFKqX£¥¸ ä§®¯™"ás‘9>Y"ás‘5>)‘ð¹H„O` …ÏCöPø<ä…ÏA¶+>™Báó9>YBáó5>)¡ðyH …ÏC¶Hø’ì¡ðyÈ ŸƒìW(|2…Âç!s(|²„Âç!k(|RBáó Ÿ‡l¡ðyÈŸt8"áó㊄ÏE¦Hø\dŽ„ÏE–Hø\d„ÏEJ$|.R#ás‘->Ù#ás‘,Cå+—GýðzÞ†Ñd;›Û~x>ï+ù×\Ìé=K£(ȹ¾×1ë"kˆt™*Ñ0Ý>£@(Ÿ_Îëµ…ÌzÈ2ë!GÀl:_×%  ‹Œ(9 &¡¹È2ë!Y€ôkW(‡Ä´š}˜,çxæ—~–³¸ÒÒ/ÀóŠý•¶Àvî𓶸ó]ƒý‘~éïü”u?$¤7`.oå/,»È0«ç}ã®1ë"5bÖEF²£çwÉ»öY9Bfd‹ÄÇyó³·2ë!sȬ‡,¡¬;£¬³.R"f]dd{¼åxk³.²G̺ÈÈúàô°GòƒKþÀP~Ü.Cùq‘‘üTǪ÷P~\d(?.2”ŸäŒ2–ˇŒä§8ááˆä§œ÷ ûåÇí2”ÉOq„}Dþ ¯}¡ÿr» ý—‹ŒüWÉ0ô_.2ô_r\‘üäá£ø'·q†ñÛeÿ¸È·ò“*^J‘3ò½¥â#ß Pž&ÑE¶ÛócÉãê!·r„Ü:Èt…ÜJ;#SÈ­‡Ì!·²„Ü–~FÖ[)!·RCnÏû.#µ[ÙCn=ä¹=WN|…ÜzÈrë!Y†ÆW®‹Ç!=ìvØÙC.úèØéC*z|Íõã‰/ûhõ l0ÉÙ òÐ/Àê°:ÞïLg‹yHC× &™Þ!ïL2‡Üž«[G)!·²†ÜzH ¹½¤†ÜzÈrë!{Ä-.¥;"GÄ­‡¬WÄ­‹L!·z65‡ÜzÈrë!kÈí¹z`T ¹õrë![Èm9[ÌÚCn=ä¹ur…Üž€CRÈ­‡Ì!·²DÜâAœ#²FܺH‰¸u‘¡ áå®#2´CÕ‰¥‡HÇÑK(CÕñôÚ!ô­!åCkÈðù5Î •aª!Ã.´…г›ÐAª€ !´õ34]!ô\¡=¡¡4é¹4rBCiò¡¡4ùÐPšðHÊJ“ ¥É‡¶ásnB{Ȱ ¥É…æ+d8;Ò”SȰ Í!Ã.´„ _Ž4å2ìB%dØ…jÄ0">C[İ m“!Ãê@Ë2ìBSȰ Í!ÃâØáRB†]h v¡2|ÎÉM¨† »ÐÐÓùÐ2œ'YFȰ­¡§ó¡¡§+É`jèé|hèé|hèéJsLx = = =]z:z:*¡§+Åñ9z:z:zº|9QBOçCCOçCCO—<Ÿ#¡§ó¡¡§ó¡¡§KžÏÑÐÓùÐÐÓùÐÐÓ¥êACOçCCOçCCO—² = = =]òÄ_COçB[èé|hèé<éo¡£s‘¡Ÿs‘,Jò•¹© –wàuàÛ ¸8ÍýŠÌ΂ŽÓÜ/HgÎiîWdqV œæ~Ef'Nã4÷ ²x«Ns¿ jĉÌï+3Ú½NË[(r£.ô­ ­ì¨ •aõ 2ìB[Ȱ í!Ã^¥a:®ašB†³Í!Ã.´„ »Ð2ì)Îaª!Ã.´E ‹'þ£G ûÐ1ìAÓuE ×sñ„¦ˆaš#†}h n´† »P v¡2,´… »Ð2ìBGÈpq é v¡)dØ…†ž®&z:z:zºâ‰ = = ¥©œ·éSJ¡m*íÁ¤zºâìÏ¥JSqœdÊ¡m*ž æÐ6eõ ¡mò¡¡mò¡¡mÊÕƒ†¶É‡†ÒäCCÛ”³-¡mò¡¡4ùÐÐ6å˃†¶É‡†¶É‡†¶)uÚ&Ú&FáÉÿFá.´†¶É‡†QxòÄ¿†Q¸ £pFáÉÿFá>4ŒÂ}h…'Oük…ûÐÐÓ¹P £pOú% Â]dèç\dèæ<Ñ—Ð˹ÈÐɹH–£þµ©­tÈ÷— 8œäþ~Af9"drB—Còûy©ƒLR½Ððú~A¶ê K„tRxéø¶ÈêÔ÷¤CÞû餸“j„'ÖH†òð¾ç[ZuAÉëô­­º ÚÞJѪ r¡)bX†# -G ûÐ1ìCkȰ·®o2ìB5dØ…¶aqt¼õa:B†=h¿B†|{ê)dØ…æaZB†“c#z v¡2ìB5b¸fÇö1ìC{İ!דWȰ M!Ã.4G ;—‘Lh‰ö¡5b؇JȰ:&|hȰ m!Ã.4ôtÅ[ŒÐÓyÐ|…žÎ‡†ž®dz:z:JÒ´²_gNï`ÿJï‰Ô阵ÌÉ鷺}öéX¦Ì©ïWäù²â”9óý‚tÎOd ÎuN™dvrœ™ÓÞ;rmS9«“œÞÊÑÚ¦r¡o¥èÍ=¾)' NÞü¶aÚC†]èˆ®ÎÆ}ÎWİMÃ>4‡Ðæ|œJSUgšr(M>4”&JSõlK¥É‡†ÒäC#»TœýÝ\Þ ®>v¡ï…é-4²LÎIï‰,!¿.´†üºÐÈ¿•â!5ä×…¶_y¸’ºƒ!¿´^!¿.4òqÎ…»ùV’ÚõHR{}o•j}•÷ö!½F¡RròD¹¶`’|d&ɇŽh’\¨\Ñ$ùP–¤úÕa,§¼w0Ž{:Ç'3§¼_‘Ή‡Ì)ïdŽ´‡ 7:B†=h¹B†]h ¡N©a)¡4Iu„¿„ÒäCCiò¡±4eošbir¡±4¹ÐXšœ8­”Xš´† ;çuJ•aª!Ã.´… ‹í!Ã.t„ {P¹B†ìK‘2ìBsȰ -!ÃNö¥H v¡2ìB5b¸8¡EZİíÃ>t„ ;¡E¯az:zºâl1 = =Âï\¼¡ÂTß@ß;º·ÐB½ŽŽê¦ÚB½°©E1¸»Fo9š`ZB~]h´’s—èMB~]¨†üºÐh-çÝDSZùu¡±(yЭæœ#¥§ˆ]™#n]d‰­°F̺H‰˜u‘$D+>ýºç¾wð›M…S߯H§ú£pæûéÜä[8ñý‚”âxTÎ{¿ ëðúÌÒ‹D9ëýŠt®\(œô~Afg¥pÎûé$ÚËЙ4”&ªðgh‹ö¡=b؇Ža§V«æ+dØ…¦ašC†ð£æ2ìBkȰ ¥ Ùœ34–¦ìMS,M.4–&K“sì –Xš\h,M.4”&ï–ÂZBiò¡¡4ùP‰NÎKµhİmÃ>´‡ W:B†=h½B†]h Î4‡ »Ð2ìBCiJN‰o­¡4  “‹ eÉE†¢ÔVNx¿"#„•óݯHg™\9Ýýм4G ûÐ2ìT¹Ô^C†]¨„ »P ®´… »Ð2ìBGȰó–VWȰ M!Ã.4ôtÕ —Fèé|hèé|hèé°iq††žÎ‡†žÎ‡†ž®x)ìz:*Wèé|(K“~mô-‡ü·Úm'B”CúûéT~È!û­/÷Ø5)èŒÔ©ÝA¶™½>{„t®š”CâÛ"‹³²‘CÞÛ"½×f$¥éì+HŠd(y’"r.4”‰S!)’ ñ¦ç­­æÈAz+AkÄ…¾¡ûS§t„ ;u8’¯ašB†]hv¶½%—aZC†]¨„ 'ª!Ã.´… »Ð2ìì§I!ô\!Ã.4E {ûiRrİ-Ã>4”&ñÜx‘êiNÑêÀRBiò®[J“8Ù)¡4¹ÐJ“ ¥É;R*5”&J“­!ÃÙƒJȰ ¥É‡¶a§ÒEjv¡#d؃J(MÙY'ˆ„ž.;g%EruNn‰„Ò”ô‡H(MÙ9Ð$J“ ¥É‡†Ò”†÷]Ciò¡¡4¹P½B†½¸TSȰ ¥É‡²4¯^:Òßã«^”Cö{|Õ‹‚rH~—-¯Ï!B9¤¾_ÕãvDHÏUßãeàrÜò!ñ=^ö\h~]û.´D k÷ÆZ#†}¨D ûP v²œÒZȰ í!Ã.t„ ;'¥_!Ã.4… »Ð2ìœ ”^B†]h v¡2ìÒK×aÚB†](I“ä¯6ßœúÞÁ³éæìd g¾¿™Þ!ße9ïýŠô½œö~E^^Ÿ5@ª³q#œô~E:¯ƒç¼_ÅËFpÊû™½qöéÝa'cDH§J@¯+B:¹Q½"JÎ…§zE2”ŠÇm$C)yÜF2Ô¼.Cª^—oEÏzúз2„W¼|è[!Âó>ô­ååÙhz+F¸#Ô‡¾•£¼œ¢}+H¸E㾕¤"ïz}+J8qäCß j”}è[iBm’}/M³WqךÞJnßö¡#ìÕIÁi¾Â^]h {uœ¢æöêBKØ«³/«¹†½ºP‰zõ..ЬQ¯>4”¦*4”&JSu*ĵ„ÒäCCiª— ¥É‡F^.;G¡´ÔÈåøP‰\ŽÕÈåøÐ¹Ú#—ãCGär\h½"—ãCSär|hŽ\Žea’¯]›('¾ÿgÀF¢þÃ?þðë_f ¿ùûÛoþ]º’Nûu›˜ßþïßýøýãz/t^O=§›ª!ÔÛcò •mß!÷?}óq§Íèéöøž?k³«Çªç ©\7m†PnÍþdÜ´ï©7;Aû­ÉNh×lDwJO·V !ßša®Ë­™nÆä¤oSQúuÝZ3„tëÙú­ïô”ncïxÈu뢆’o#o”Zk¿¹ª]oÏÅÛ“Ö[¾=ÖOÒÐ9çeÿ4r]z{T•??Ô n™”n(ã6zÚ)k(ûp'©ÌC‘I©†Ò&E e !ÝISÈF7e4m8Ê“Ç> ¥Ï†Æµ“¦µÓÂÞž/d~ÒVf}µoÐÑþÃ==Ùèè ›  › ´ßÍœ ¹=ß‚ü¤­¶L÷·æ±î¤©4·ÖžlLZ¹=Þ%ûò34v©áIšr}{\üI‚ˆæ]+&­Þw’ôö¸Ãø“Ôo»‰¿°‘Òê`g#Mx\&üIª·Ç%ÁŸ¤éV÷ð~¡AÞËe8Ë iؘÂý¸Ôö“ w1³1ÿóö¸…ö“Î’acZ²çµ±sØ|s8 T¹›Ã)…ÍáúûãEµúB’Û㥴O>Únû'iÜžO›}¡AGònþ'iµß iµ?ö©ÉБ¼{€I·Ç›`_Hßq7Þ“´%›tJ6è”lÐ!(þdc¬ÌF¾=^¿z’j_ß6R»=ïzþBƒv•ÝŠw3µ Áqéf6äµ±nK^wË>I:#Õ-Á¤V#Ö 6»±nájÐ`²«1©“Vo+9>†ÒË«}Ãì”ê矴ÕáÑW5Âß`ÙëCøŸl úªÉp‹è«©mˆ¾ªÚ µ©Fl›¬¸Øô ©­æ;ͨüö¸Èá ]û8».6º!-6†!-6ŒpwEF¸»¢}#ÜS8n+ >Ù@¬_pwèX5ÂÝ¡c5›1µv{^ ðI·Çaÿ/¤ŽÙÈfpC÷ÃùŸlÀÕ² `$;û7y†#cçkèòrº è¤!ZØtÜ•bÿpÓ|Íp«ì‚±,Z/ŽQì¾QœÀ±Œb¾æt°Q\ï{È4°hì{À4)uR ‡ªá°ƒÃf~„¦÷IjMC™6­ï±Ò$ÍÞª™¢¹@è{ 4)s}P ×c ¡íµN­b(3´­j(s µJCCÝæ@êÎ6¸].C™MK2¬F$Òœ#)†2›Ãõ\2t5 e¬FÔ4„%ƒš†ë«mh6­fø¹šñ#ØW3~Äúj†X_Íð &»™ñÏ`¿7ÃvM7Ã5\k²½-ך,›+ü´l®P³[ÒŠÔöø|,OÝ0ßW(h¸_¡æ0Ü÷ ÃÿŠ5‡À 5‡™÷j>º'+ÖfLf+Ôf6ÆšÝõµ@J»ë›¤j^†„@ã26cÀ²äÝõMÍuOÈüL{TÊœŒ²9!úmÓ&nãÚL H ¤Í½ƒ¶2{óÈq mcH’LøõðKdò†kò}˜¼Ž^MÞýïˆõ÷ÞÐ_©Òbs¤äÊf4ƒÎÉÐ~Þç¯V´¿{7ÐÐA6óP1ÙÌC]í«!ņ€¬Ìdµo h÷n ¡ƒb @1P´_Š!°QÌtu` «}3]í7ÃF[˜À×_Å vàªæ,_U3Ø«šÀ\Õ vàªÕ°ÑWf°W5è«}óFZl˜ŒÕìÀ%f°—$ÃÆ@²@.d@ÔPfÈ1v&äž¼µ¤é)Û>ì‘LJ5”<)û˜GŷͲãÖÚ>o¾*Oau¶´î$!N̲-§"àΛ ë–̓€„uËæB@š4oNdÒ°ŒÌûˆÒZFæ}H ËÈÇhŸl”ÕšŸaa´%"& ªš›aö>Ýp UÍÝp UÍÝ0[ao{1l@Us7ÜBUó–uiµo˜•v{>ŠÅ&ÑV±[“8¡“˜1 d×ßof}éM›fÖz˜iP¹=¯ú¤a†™h|ûGCF¯7Ýgf$Èa3?š±`ë†2cAóuÝ|‰ߺùcŠ`7³9¦ön:C’®ï“0},v}¶•HØõÙÍÍ$ÛãxÈs,Óó!=¹Û›I*·ÇyŽOö†vs3IøÊ²Û›I[´”Wû†Ù¼Ú†µù$¦ÏŒˆéQÄt‰XñQ~ÿICbú,«}3Aðˆ¢—a.QÔLôL¶¨$ìíìÁœéíYfþICŸj€i‰iɰ!è ™>_¸™ï„ÐFšéR`ˆ¤™>uu`&MWûfÎtµß º:0“†±t3¬ˆ¥›9kÈI7hè ›4´ßÍÚj_ }u`€õ©ìZ1-:¾Óî±ò=c)’ mÉF6$p¶ûXô©tFB‘ŠìÃ4¦¥%²É´´ö®$·Mì¹k sª×Ý6D5d ×ßš¿ô†0VT i‰´™*½ó´O|B\#{hÛÖ·N»ä·¼6C÷y™¤zå2?ÒII†Ò'Å44…òcìqÚ$Ͷ÷(mRд šVCÁ.ã¶žŸ¤)cÐ&MC™MWÃõÆQ Û ½†í)Š£®§$Žj¸î ¶ûd»¶;š6\4m¸FÎaTÃö˜l‹a{̦Åp½«]À[¹0Ù»€OÒd{7·“‚¦ÅPdRÔP0G»­¤6Ô ýC·¡;×s!7Úíì$Í(ÑÛ\ÚMŠázêàPÃ5²«C ÛÓÏ5l'ôo¸žŽw¨á; C ÛÓfØÆ¶w3\O¿5šá ÂÑ ÛÓmfØž^k4ÃuAÓ†k¬âF3lO—5ša» iÃuÅfýÎ5¶²Ÿ⟴r{Ôí~’Ö¦žÒªÙ@m-ºt_P/óô¨Œ=˜¸ì›¸V[!S°æJ‚LÜúû£pö³3°¹¯ñÛZºén[]ùÝMq[K7MfÚjßLC[í«3Öiº¯ÄÛZ§i2ÓÐWcÃvj6À:M³ÖišÍ¯Q³ok¦Ù ë4Ífcµo¾ãÊ×辿ïK뾟¤Õþ0$´oVⓆŒD–j,üÚä–!†´bµ}q8Í´_—!LO;†!ïl½íva`ß7 ›ü›Q˜¶m­³6;UVÆâù¤áš¬>ÝH¨x<_øIÂ.Ò¾[6 ¶Ov–¶m°IB°W¶/‚”’Åа” ²Úo†´Úï† ]ŒýgöÊæ¡A¶/$µ3€U°T̰@*Å jUŠ6ÚêÀ zUŠ@[훩mãö|Zí ªVªT­T3dDʾ¸ T3¨Z©fcµo>GÄ>i«3€±Ú7«ý‡l1,®1œŽtjäúW…›5†÷¿?ûú§/$̃$C›’ iIºCŸ²ÏCK«}1¤Õ¾î“ÚÒê ™ŸaŒvµ´Úß¿cƒ‹}¼/õICj€¥`Q3ÄÕE‹akÁ¢fkç>ïí÷µç?öö±Mð|[㓆M7#üØ(xÜ&ýIZ›nug£c‘W6ß:Cl‹µÐ± ´v3¶fÖ [^ì\Â\m$Ch·6l#ý¶Å" ŒÛÀø˜Ùª¡`cåÚy©÷õùMöHö«XÜöͺƒ‚ ©Í¸ƒ4æ2ÊÀ$MJ5”Ùt7 -§™w#6iÈÕìœOr5»«49—lF§™‹ašœ‹áb•ÀÃÆršy7bu-2ónÄêZPæÝˆÕ´69ÊþmjZ›»«÷²˜´ -ζHfÚ‚TWŠÓÐV6C÷ Zë5„+7C@¨Ü eºZÛÒ¹;y¬ CÉ+«oH(Ù,çð¯ú¯bñrÿW‚Ioý=]Õt…}šý3aq“.5Ôåµ}ö±¸IW7?BÓÃP°ÜÝ¿V)É| ¬I’ù>X“¤T e6ª¡ -“ ÛyÕÆ šn†‚¦ ׫>/¶Që‘ Û+ól¸^‰gÃõ*_ʆí•v6l¯¬³á)‡l¸®«ØÇ°]k¶ëª 3”UwµSÖ*ŨsYјa{F†ë®W̨rYQ‘a{E†k$ÀŒ—•&)†íUbØ^õ †ë{5ˆ¡¬jÃ6R_Õ°ÌW5\#ïU ׫²ª¶QXU Û(…ª†k”U‰áz¬%¡aEUÆÊ¨µ®¡b¸+ḳ]¡¢†²Ò†²’†r¯¡7$žîl×U8› …*ÙPꪤ5$Ô¦VCAÓ†ëU2k¸Î«$×ÙÅ7f­N½½ÿK¦P³Y««ðÖŒaŠ±ç¨žß `'j½ç‰Aš£ofôXç43x¨u3ƒ/øfÍŒzÝÌè‘ãnæ›A­›áºâ›5Ã6ôº¶±äéæ›A­»áZðÍL P¡×&P¨Xî˜@¡B­»áZñͺazÝ ÛHkwÃ5Ôz®qFe¯³i²= ÛHi›¨¨B­‡áºa²M T¡×ÆWW¤³³®Pkã¬ë:dbÜuz»®S¯³q×uªu6ÞºNµþØk+@Ò[6~¶4½s}Ýlü¬ ½ž¯fHuþ¨ š†2›6~©‚¡ÞÆA¨†ÏÆÏ¢>?‹Zølü,Já³ñ³¨„ÏÆÏ¢>?»êà³ñ³(ƒÏÆÏÊTÈlü¬L}ÌÆÏ ül6~•òÙøY)hÚp]Ñ´á~6?+S!³ñ³RÑ´ázê£ ›a’>ža3™5}cÖdêíý_:…šÍþž»–©×6ô–©Ö6ò‡{ö`ªþ½q×¢hÚ ^Ñ´<Üu6îz.bn6æ–©×Ù¸k™j»¸ëlܵL½ÎÆ]KCÓæ›u4m¸†»ÎÆ]ËÔëlܵt4m¸†Zw-p×Ù¸k^w-S¯³q×8°”»F•ÅG6îeÙ¸k”Ydã®jmÜ5Òv³¡aH“mã®uêu6îZ¡ÖÆ]+Üu6îZ¡×Æ]kBÓ†k¨µq×XÚΆ ÛÐkãg5£iÃ5ÔÚøYE¥ô^ßÒdÛøYä ³ñ³ µ6~Vág³ñ³ ½6~V+š6\C­ŸEnñ#?‹Üb6~©Ålü,2‹ÙøYä?²ñ³È+fãg‘VÌÆÏ"©˜ŸENñ#?«PHãgUÑ´áúhü¬ÂÏfãg iü¬N…ÌÆÏ*ôÑøY˜¤çá2kíYÓ~ßf« ‘ƒYÃß³qרŽÎÆ]+ÔÚ¸kœ }oùx’ú­w­S¯‹q×:Õºw­pןkz]Œ»Æ!†bÜu»Ð´JFCÍêÍd»'e6ìoPR¹ G!>ŠqŽ8 ao'!ŠqŽ8aäÇ >L‚¼â„ÉWœ‚0ÙñŠ3&9^qâÃ$Ç+Ž@ã‘4™ñŠó&1^qüáÃ$Æ+Ž?˜´xÅᓯ8û`’âG>ŠY„âèƒI‰O š6\£~Õxµwmòá“4Ù6^ g®M6|RfÓÆ«5,‹M.|«“mãÕš¢iõ¢iÃ5ü¬ÉƒWñ6iðŠ3ÞÅxµ6ÕÚ$¯'eI¶AEŒ£iPãgPŠo’ȵ-1Ž¥ø&‡\QŠ_ŒŸÁq“@ž|5ãg;TÄøÙÛ¸6 -1~¶CEŒŸíP‘ÝÏ j)Êã.“ôñjú…†;UÌP\Õ0‹ý¼jö·' ¨ávíR«™íµK­†ÙUŠ\Õp[W†ÛºÚ7ÌÂÛÔv6àGj3ÓÚ±ÚÌP;V›™íu  63Y˜èjß @WûͰ¡«3T§Ôf KDMcm͆ÖúÚ{3cÂöé0ÍcÿÔ,àZ^'l^šZ`Ì ×–©˜A®r’K c÷6æ+ÝOØ.îl e]EòpȯfQýã@>Êíü5™Åõ÷Ùò>1(¤lH`s¡V…ç ‘VtN’Òj_ iµo>vI«ƒn~†y0ÒŠŠÍtí©›UŸ9Ù0ÒZÖ™=#­(Ñœ$3€¼®2¢_Öù;#­e¿3ÒZÖ}EÝ´¿¯¨›Ö}EÝLк¯¨›ö×}E¦4¤­íÔkϵ´µŸzu3Aë £n&hí¨^ÃÌö^®a&{ª×0X‡&‡±GefعŒGXûª—ÑÀ²ÎÚ_à @WfºÚ7Xçï¬!Xû­—1eÝùr™a®s¸—æ:g & çd/óÖ9ÜË sýŒ“(ëÎãË:‡{™a®s¸—av¿3•“†’À:‡›ÌÖ9Ü” 0¦ú Õuwi'iµ/†´ïñ⤭š!¡&b®KÉÄ‹míËš"„†ûÈ’©Bhõ^;‘ é®°ÃÐÐg6cZÅÙŒiUKdóQÖ¾ê³< czc±X¹ÿKN9Àõ÷dªÚÚ 5emíК:‡†åÌG2•míÑšJ‡¶6iM©C[œ=kž„Å0ÕmíÓšj‡¶6jM¹C»ïÔš‚‡¶¶jMÅêO¦â¡­ÍÚgÉÓ X SôÐÖv­©zhk¿ÖT=4,e&&Öm2…mmٚʇ¶ölŸ•O6Öù‚­•‘)~hkÛÖ”1´ûbÉ2´µX2… 'v§òšabýô,ex²±ŒˆñÚkMeŠîõ⦚¡ÝâšÂŒ{‰·)̸—x›ÊŒ{íöÕÍG‘w›1­âíjÜùªÝ®f˜X«<Ÿ|ÿBƒöÖ}a’•™ÙøîÚEøîj\ßZrTãúÖò¢×'Ëw×nØXq·q}²ânãú$¯öE’w×'+î6®oÝcVë“UZ‡ÀŠ»ë“w×'«:tß-+î6®OVÜm\Ÿ¬¸Û¸>‘U*oœöWS5£¬PÜÈö\Sµ£¬ðÜ‹ý5Ot»ÿ ë…WÃxÿ{ÙbĸbÜ&Æãâ°}? 4m¸Æ}mb|(ÎàŠñ¡¸4lßK›”©Öb\(¯ˆñ¡8¼.Ƈâ캊­U1.×?ÄøPœ8ãCqà\Œ Åys1.t7ãCqÚ\ŒÅas1.gÍŸÐuK˜Šü‚Š\‚Š£çb\è:y.Ƈâ๊sçb\(rb\(2b|(2b|(Μ‹q¡8r.Æ…Â$}äj|( ÈÕ¸P«q¡( ÿPãCQA®Æ‡¢€\ E¹Šò5>äj|( ÈÕ¸P«q¡0IÏK9Ȭ鳆Bóû¿P­Éf WãŠQ‡®Æ£]'Fºf“[C!ºWŒ:t5žuèj<1êÐ?Ô¸b¢«qŨCWã‰Q‡®Æ¯.Ô¸b¢«qŨCWã‰Q‡®Æ£ýC+F!ºWŒ:t5žuèj<1êÐ?Ô¸b¢«qŨCWã‰Q‡®Æ£ýC+F!º¿‹r5~äjü. È?Ô8^T«ñ»( WãwQ@®Æï¢€üCãE¹šµ+ ÈÕ8L«q˜( ÿPã1QA®fíŠr5äj& È?ÔxLT«q˜( Wã0Q@®Æa®›ôÕxLT«q˜( Wã0Q@®Æ=¢€üC{D¹÷ˆr5îñþ–á~V{D¹÷ˆr5îäjª( ÿPã1QA®Æa¢€\ÃD¹‡‰òÙa i& ÈÕ8Ìõh—q˜0I:œ-ƒöƬ¡Ðüþ¯ÞëÁ¬áïjü.êÐÕø]Ô¡«ñ»¨C×ýújæèßEº¿‹:t5~uès`fôÐkãwŠ£ßmS­›ñ» îºÇ»ž-3~WÒ7³šmM®á®›q¼¨zoÆï¢ê½¿‹ª÷fü.ŠÞ?šq¼¨zoÆï®gÒŒßEÕ{3~Eï³!1¤É¶ñ»¨zoÆï¢ê½/‹¢÷f¼,ªÞ›ñ²}êu3^¶'\dbx„»nf¥Ú§^7ãñö]3î׿4ã;Üu3+Õ>õº÷ا^7ã ûTëf|aG‘O3ΰO½nÆö©×Í8Ã^Ñ´á~¶gا^7ã {EӆǩÖÍøÂ?ÛŒWëS¯›ñjxF£¯†G4šñjxCc6dúW<ÈgúŸ ÙŒŸÃÍø9¼ŸñÑŒ£ÃûÍø9¼žÑŒŸë M®ág›qt iü\ïhÚp }4~&é£y;¡ýYëý^"‚;8N‹Pü½wÙ§^7ã.;Ôڸ˵VcÖ:ôzw—åÂ’o·FW¶Ý–õ,RÛ=hÁ«Hm÷ \·ÝÜoÝši9ã¶{Ђë­Û¾ä,¸Üºí>µànë¶»Ô²^Hj»O-¸ µ5Ã6¤®¡ Íp½¤¶¡ ݰ é†k(H7\/é†m(H7lCAºá Ò ×KAºa¯\vÃ6$½®!éÃpJ”6 Ûp=ð I†kHú0\ã¨q†m¸ža؆ˆÃ5Dt®WŽÖNäZ;šÞFºi5CÃjÒŠòFí2ý/ez2ÍÚ>#Øm{ø^Pþ±?<Ò¸Ý?”Œ =w÷Pî‡n’i{=>´ßXÚºFÌ´Ž’gSÂPVÉsÙ«TAÃ…1F¿V´©b(yÝOc4,ß/¨1*–× 5fóýŠ3ÊuGM«† ]˜¬2èæÔÁùç&&rÊìo~ÿí8¸õ·d " ö“©ˆ(ØLL¦$¢¬›u“©‰(ØOL¦(¢¬ªlSQ°¡˜Ê~-=hëžó©×ã_FgW©ö~þ¤5íFkWù¶©(«Ûì$ÔQõa>>꨺Qœïè{YPD5ŒÙF ÕÇØCÆ‚ª±‡ŒÅ:ÝLr^}Xʺk­W=üé[¼²džh‘¦œ(^,}Þ"³ˆ¸Œi=üèá?ÜÒ—µñ?Žoñ¢|ûÏßÿá×~þéÛœ¿ý§Î%û?þç?ÿã÷?ýúÝ¢ÿü§oÿîçüî§?~ûû_~þõç?üüçuøøÒŽânÄ/í¤ñíßMñúå»oÿá§?ýüË÷Vÿ?ýáÏ?üúßÐÜw?þôÇ¿à8Úõ¥•>t²ðle|ûï¾ÿi6ògîüéŠÿ-ÊVžAÀï¿RÖ?ÿ#ݾ<þ7ÿ+O7û6ç®ÕÏÿZ†úó§ó=#”ù_8Ø•¿ünU+_þ eÍ_Tvþ÷ªÔçŸ×ëvOã:ÿ‡åK¯c]Gú¥­û­”ý¼J½>[á>°NOé'rÝûFÆzÖó|k[3§þý„HÏüHz¦EÒ3’ž9ôt é™IÏÔGzf<ž÷`.R}þãÙ´<›–gÓòlZžM?~¦g~"=Óé™HÏ$Dz¦Ò3㞉†ôÌ/<Íâa"LÕð®?þõßÿòÍoþí~ùù_¾ûõ›ßýð—)®ž¤úí\ÔMIþæÿúa‚ÿËÛßþÛ¿þúÿNÂoþ¿¿þù‡ïçÿÇ~ýó÷ßüæ!ªùfþÏ7ø¿þôÖüóÏ¿û÷ßþéÇùÓüù¿ûî×ùãßý›|]x6U¡å’ÿõJÿúºþõüÉßýòý=—Ƙ‹4\g/o3Ü€þÿþ—©iÿøÝÿ?¹ÔogäbGhÊÿþãûÏßóÛß÷ÿLÿ}ø‡9ºOö}^SøøÃsÒïÿï>—xÖhãüÝÏýéW€æ\~÷Ë÷ø÷35óÂUù ®Úó›·/Ù×GsÅùÒ^ Û{¬ ˾Ç2î±,{¬³Úòþ‡¤?¤Zþç‡ù_ùþOþ&ß|\_þ sÍø§ÿeý'.휮¿üô…¶Êç^hkOÐÒÆRåÚzÇî…¶á6´\֮ m­^h+ð²4]‡^hë‘ÚªW²´¶^~~¡ /2 ¯ØPÒïf ô»¼.p°4]ׇ¼ÐVõÌ mmXÚXÙªÚzÂÎÐêµ^겴¼ œ lYÐÒr€+]øw+ÁbicÐØ¦÷¨‰hëfK“uoÆ mr¼Ð–­5´)U©mÅe/4!9N%%¢­{â^hë^ K«~í…¶vŽ^ht¦åLcà M%Ú*y°4]/ƽÐÖ•t/´Bs?W½$sÝÛ¨¾.Þ2´^V¾î…¶^5±´ze¦U’ç^•ä W%ïueÜ^i±ëeÌÚ ˜_iò:W].ún“Ö¨I¤[“6Ñ2Ù’.벜Wšr5s«í…&…ûX›Â/´ ½ÐZâ>V–æ…Öù[JïÜÇz ÄÒô"Ÿ4¥>4‘ ›´F}èºÖí•Ær¥ëƕڪ˜~¥)cåÀ˪|x¡)Ï‹jçß5þFºR-/´õªê uuÒ”ô²±À“Ó„mÙmëšÊÚºZä…Vø[¶ukÎ ­²µÊó×V•Ö+lXoÊrÕÖ¾É+uºõÄØÞxþË6(¶˜kh¶/}0}¡­åØ -³¾õL~a.°ÙÖõÂrÕ+ÙöIcÝï«Òê…¦‰±J¾ÏP Ó:Í_ï,ã½Æ®W„,m\¬—ãb0Ûı.†}¡eòÓ“Æ6bÖ·QÙ>U6ýBŠ×&­Ñü e{5”}Åh•±}ãè¬ûc°îAº?§™t\ùîq­c’/4ŽU&t\…t\…t\•t\µ3V*cõb¬’î«‘îOéþ¸Ø¿«wÆ®w»^i¤ûã~)à ×.“Fº?EœtÜÑ|¡•ÊØ2[I÷Çýå¸Wéþ¸¿ôJëŒ]ÛŠ¯´ÁØNº?%÷âù¤û#_¤û“F1ëÈëŒò+m06“îO³Aº?i¤û#WÒý‘kcì*'~¥ Æ*éþÈtäFº?æ‚•ç 7ÆŽÂØÁº_.Öý’X÷KbÝ/™u¿¬ M_h¼Î›4ÖýÂk+˜ìÄ4Öý¢¬ûEc×¶ý+uºßÌ4Öý2X÷ëź_/ZOš2cë~ͬû5³î׺_+ë~­ÊXÉŒÖýª¬ûUY÷kcݯu¿veìÈŒ¬ûr±îËź/‰u_2ë¾de캑ô•ƺ/•u_*ë¾p~mJ뾨2ví{¾ÒX÷¥³î ¯Ù‡ ÖýÃúmÒ(g„Õ›X÷5³îkfÝ׺¯•u_בºš$Æ ë¾*ë¾*ë¾6Ö}m¬ûÚ…±ëºÀWë~»X÷Ûźßë~K¬ûmÝÚýB+‰±…u¿UÖýƹ‡Ñ„u¿ ë~SaìªD{¥±îÏ¥Ffë~¬ûm°î÷‹õ­¯«y^iìßzfï™ãÉ^X®ë·Ñ9O=zåùëÂóוíUW¶W½q|Ð6¢wÖË~°s×O‚Æ1×O‚F1HæúIÐ(É\?9iT? š2–ê'A#ÝÏ\? Å ùÊgç‹Î`Fk¡M&ÕOâ1ÏÌØÞ;H÷óý}¤WÅ ùþúÌ+òÙÓBÐZhÒh-”S¡µ^`,ÕOb‡/q¿œ{È\? Zç~é|hƒàŠ{ž¿‘xþ­?ò¶Ê4ÒýÌõ“ Ñú#sýä¤Qý$hÊýRý$hƒà2taÅ ¸Æœæ/·‹ÇAõ“Ö7ÜC´Áú6×oÄs¹Xß ç&õ­pî!sýdÊ\? ù}\‚Í4¡xhÒ(ÂåÔ<6e›X86ÃmÏ<^Λå2.îƒjçÒþ »õb=ª¼/„Ë©Êë \c\˜Æö¥V¶uµòÜ׃ݭÊ> òž&nùå>Zã>:ëGí<÷uðÜ ç|q-ͽð~<.¢¥>$óÜ çs ÒÜGeÛ.¼_«\ÓxîEyî…kIp*ͽtžûÙ÷Á{m“Ævò°Và ¤ƒi<÷s­V™Æs¯…ç^¾L9ž¹V4ž{U¶9ªlÿ´qì£\》(y®¸Æ!+×8LÓÎ6§qn{$þ×8àžFoã‡ÜÊΑ¡ÌƒÆÖ„å ñîä>x «¹^¹Îïæ68¾êtž4ö=÷/q³õÑ3ûžÎµe¸ñŽû8Ľ6îC ÷Á{ï¹sîfºxŽ›zã®wž{v#Úà¹ïƒç~\¬ƒãÛ®É#³ŽÌöo¶£²ý•íßöûCØïÖeù°.˃kžöfž;ljƒêþA£˜µà ¦Ñ:¾\‰bùreŠå'M[híi¬ƒ•óã“FñA©œŸSżT®=ŸËZбÔeþ¤pÂ:X9>(•ãƒIS-®å¾–{áÜ®¤>$±ÜKb¹Þ—œ4–{),÷RYî…ó¶SLYî…k¢ç*å^xO½Hc¹Ÿk0îƒkÆŠ –{á=”SÊ9™I£|ì”>–ûi긮w,‡ý²¢U¸¹¸:‹²¶Ï¹Î'NÁñr­nÑ.ÜïõNûý¹»˜Æ~¿q.|š+Öóì´ÂzÞ¸Na½tÍ4ÖóÆux¥)ëùa †+ʸ½Æ¾¶ñ>Τњ¤4ÞÇ™Þ#hÿõÄ6§Ó9a\{ÊrÐ3ûýÎ56ÓUp,Ú+ë`çœLéÂrй>¬ôCÌÕé ®Rå¹?¬ÁJ?ØX>›ëù û‡@cY;ìMÛ5J'ç¹P®Bã|fjÒ8ŽʶdpM¤±ßÂÁE¦±í|¢^\O3i´Ž¯H‘3téÝ‹i´N™+Xòõâ½òz¨c¬ï%LÚàq¨ð8ZâqÐ=Y“Fg(Aë<ŽAþ·¢”iä**ؘFñFEöšh…|^=¬·¦”’Ý4ZãÔÄg&mð8Txt7 hÇÁu_'y\ׂmb.‹%Ÿyœ4žÓÆ5³“ƱE;Èiã½íIãØ¢ä´ñÞvmý0ރßï\7ilOû!–:¬£¦—fÕ>ª|T?ø¨~ðQýà£{Y¸‰¾G?ø¨~ðQýà£úÁGõƒ:œ›4žÓqðQãà£ÆÁGƒ5>j|Ô8ø¨qðQãà£ÆÁGƒ5r:ØGÉÅ>J.öQr±š4òQr±’Ãy0\“%DcÝŸ4Ò}¹X÷åÒ‹y¦ûñþIâ>8æÇ‘oîƒåT.–SI,§’XN%±œJb9Eù ñwØ·’Är*‰åTË©$–ÓI<–SI‡9M,§3¤)<Žùå°Ž’Ã:jÒÈÈáìפ‘O–|˜Ó|˜Ó|˜ÓÌkS„f4™×¦’ù\‡d¶§’ÙžJf{*™íé¤uæ…Ï$ÍБõ²ð™[9¬£&å´ðz×é'¦‘’Â9”Ic*¼¿:i¬—…÷W¥´‹ûà³2ó«eî—÷S¦Æ°:ÜÓm â¯r®oÒ(VÆìi,C•s}R9×7i+Ïè”m]å\ŸTÎõIå\Ÿö¨æRƒõ²r®O*çúD8×7i+‹p®oÒ(V–C Êúh¹>‘ƒœ çúD8×7iƒÇÁ¹>Îõ ߉Ӻ…ÇqÐ}á\ß\Ò±.(çPD9>4Ö=è¾r®oÒ(=ØS=ØS=ØSå\ß\š ƒóR“Æ~_9柴Ác;ø¨Æ1ÿ¤±ßo‡9móKã˜ÒXN÷oÈáüÖ¤±œ¶ƒœ¶ƒœ¶ƒœ¶ƒœ¶ƒœ¶ƒœ¶ƒœ¶ƒœöƒœöƒœÖQ“ÆrÚrÚrÚrÚrz¨ ”~Ó~Ó~Ó~Ó~ÓÎ9i¨>ã §ãK ÎIËàœô¤QNZç¤epNzÒ('=%rÒ0W4ŽÁ9i‡˜ð¢9ó‰ÇÁëýíß_"sõʳ^¼o ›ˆÆµjzqmŠÖQzXGéa¥Ïé¤uæç×ê2/¼ŽÒ«%æåTë(=¬£ôâøTqK#ÓÈïkâøTçù5±ß×Äç4ñùMKiâóšø<¬&Þ‹ÖÄwMjâ»J&í0^º4Šs!™Æß7s½â`ÓÈh¦·p@#Á“94ŽéÞ2ÓXgòaN3ßß©|‡=Ž•_<Žùq¤ÇÁ1¿f>?8ÃòZøn-|wѤ‘ÿÐÂ÷Jjáš §q¾wkÒX/ë(-|®m†kÂãິISGÏ<z³ GúYêA÷ç:ŠÆQù<ñ¤±îWŽ¥´rþT+¯MµrþT+çOõP맇Z?=Ôúé¡ÖOë(=Ôúé¡ÖO먹z£ü®I y^›ª$¯t_è<ŠÊ2$|ÿé¤)÷Á÷çLWø~8ÁwfÚa¼õòp·áŒ,X/§»$ž•ÏW¨ò½œ“Æz9 eaë¥æt þÅ4ÖËù‘:ÓX/õࣴ±^*ר£$ÇÑY/•ϬÌ.X/ÛÅzÙø®œIc9m™õ²ñ=½Ú¸Mç:ª0ý>¿#Ç9Ï +ßCëB;è~;ØÓvÐý~Ðý~Ðý~Ðý~˜Ó~Ðý~Ðý~Ó~Ðý~Ðý~ÐýÎwgá·Çu¾Ú›p{ãºÎ÷v#ÀýÊ‘é¸(G¦ƒÏR(1"½»åÈôp¶jªÇŽ£rì8¸v[Â<åØq(ÇŽƒïkÑÁçÙ'cÇÁçW'üeÃîDK;b;Ï«MÅŽ8ÎÙ‰Fï°F±c»XN'­ó8ØGÍèôâq°š"ó8ØGµ‹}T»ØG5~lÒØGµÄ>ª%öQ-±B¹#±By6ã°Žj‡uT;¬£Úa5iÊüæãÏQ5~9áX/Í_æs•-Ó›4“Æç&&ìKËô^ ®y"ûÒw¢,£1­ó8øìzˇ9ͼ6m™×¦“Öy¼6m…÷N&ü~+¼64Ú+jå §å0§8 E´ƒîãÑø~~¤c¹öQ ‡ˆÆ>ª¾¿xÒØÖ>‹Ò ŸEi•ï™aßÊwo·Êw·M·ò}“Fþ£îlUøûV>ÿÛ*½k ûÊwfâ)!ÇaN+¿×Ñ*ß÷Úäbÿ!‰eHøŽ…&™ýÇ ÑiÂwñ·¹ŽÊLcÿ!|×Õ¤±ÿ~G¢ÎL59È©p,…«à˜gŽ¥&õR9–j‡{+&mòû“Fñxk|÷Dëô&\ê¸æ÷•–ø.†¡“œöÂï ÌЖ¾Þ|~«Þ}£>øä¸2ÕeŒÄg * * 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 */ #include "config.h" #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "stv0680.h" #include "library.h" #define GP_MODULE "stv0680" static const struct camera_to_usb { char *name; unsigned short idVendor; unsigned short idProduct; int serial; } camera_to_usb[] = { /* http://www.vvl.co.uk/products/co-processors/680/680.htm */ { "STM:USB Dual-mode camera", 0x0553, 0x0202, 1 }, { "STV0680", 0x0553, 0x0202, 1 }, /* You can search in google for them, using either: * AAA 80 CIF * or * AAA 26 VGA * It has been rebranded and rereleased dozens of times. */ /* According to: http://www.bazelet.com/generic74.html */ { "SpyPen:Axys", 0x0553, 0x0202, 0 }, { "SpyPen:Cleo", 0x0553, 0x0202, 0 }, { "SpyPen:Xion", 0x0553, 0x0202, 0 }, { "SpyPen:Memo", 0x0553, 0x0202, 0 }, /* Tested by Priit Laes */ { "SpyPen:Luxo", 0x0553, 0x0202, 0 }, /* http://www.iomagic.com/support/digitalcameras/magicimage400/magicimage400manual.htm */ { "IOMagic:MagicImage 400", 0x0553, 0x0202, 0 }, /* http://www.pctekonline.com/phoebsmardig.html */ { "Phoebe:Smartcam", 0x0553, 0x0202, 0 }, { "QuickPix:QP1", 0x0553, 0x0202, 0 }, { "Hawking:DC120 Pocketcam", 0x0553, 0x0202, 0 }, { "Aiptek:PenCam Trio", 0x0553, 0x0202, 0 }, /* reported by Klaus-M. Klingsporn */ { "Aiptek:PalmCam Trio", 0x0553, 0x0202, 0 }, /* Made by Medion (ALDI hw reseller). Their homepage is broken, so * no URL. This is the camera I have -Marcus. CIF */ { "Micromaxx:Digital Camera", 0x0553, 0x0202, 0 }, /* http://www.digitaldreamco.com/shop/elegante.htm, VGA */ { "DigitalDream:l'elegante", 0x0553, 0x0202, 0 }, /* http://www.digitaldreamco.com/shop/espion.htm, CIF */ { "DigitalDream:l'espion", 0x0553, 0x0202, 0 }, /* http://www.digitaldreamco.com/shop/lesprit.html, CIF */ { "DigitalDream:l'esprit", 0x0553, 0x0202, 0 }, /* http://www.digitaldreamco.com/shop/laronde.htm, VGA */ { "DigitalDream:la ronde", 0x0553, 0x0202, 0 }, /* https://sf.net/tracker/index.php?func=detail&aid=1000498&group_id=8874&atid=358874 */ { "DigitalDream:l'espion XS", 0x1183, 0x0001, 0 }, /* reported by jerry white */ { "Argus:DC-1500", 0x0553, 0x0202, 1 }, /* reported by Philippe Libat , * serial only. */ { "Yahoo!Cam", 0x0 , 0x0 , 1 }, { "AEG:Snap 300", 0x0553, 0x0202, 0 }, /* ALDI (german discounter) version */ { "Pencam:TEVION MD 9456", 0x0553, 0x0202, 0 }, /* http://www.umax.de/digicam/AstraPen_SL.htm. * There is an additional 100K (CIF), 300K (VGA) tag after the name. */ { "UMAX:AstraPen", 0x0553, 0x0202, 0 }, /* SV and SL */ { "Fuji:IX-1", 0x0553, 0x0202, 0 }, /* Unconfirmed */ /* Added for the konica e-mini by Roland Marcus Rutschmann*/ { "Konica:e-mini", 0x04c8, 0x0722, 0 }, { "Che-ez!:Babe", 0x0553, 0x0202, 0 }, { "Che-ez!:SPYZ", 0x0553, 0x0202, 0 }, /* According to Sonic Tsunami */ /* http://www.timlex.com/cif.html */ { "Timlex:CP075", 0x0553, 0x0202, 1 }, { "Creative:Go Mini", 0x041e, 0x4007, 1 } }; int camera_id (CameraText *id) { strcpy(id->text, "STV0680"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; unsigned int i; /* 10/11/01/cw rewritten to add cameras via array */ for (i = 0; i < sizeof(camera_to_usb) / sizeof(struct camera_to_usb); i++) { memset(&a, 0, sizeof(a)); strcpy(a.model, camera_to_usb[i].name); a.port = 0; /* serial status is experimental, usb status is testing */ a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.operations = GP_OPERATION_CAPTURE_IMAGE; a.file_operations = GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; if (camera_to_usb[i].idVendor) { a.status = GP_DRIVER_STATUS_PRODUCTION; a.port |= GP_PORT_USB; a.operations |= GP_OPERATION_CAPTURE_PREVIEW; a.usb_vendor = camera_to_usb[i].idVendor; a.usb_product = camera_to_usb[i].idProduct; } if (camera_to_usb[i].serial) { a.port |= GP_PORT_SERIAL; a.speed[0] = 115200; a.speed[1] = 0; } gp_abilities_list_append(list, a); } return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int count, result; result = stv0680_file_count(camera->port, &count); if (result != GP_OK) return result; gp_list_populate(list, "image%03i.pnm", count); return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int image_no, result; image_no = gp_filesystem_number(camera->fs, folder, filename, context); if(image_no < 0) return image_no; gp_file_set_mime_type (file, GP_MIME_PNM); switch (type) { case GP_FILE_TYPE_NORMAL: result = stv0680_get_image (camera->port, image_no, file); break; case GP_FILE_TYPE_RAW: result = stv0680_get_image_raw (camera->port, image_no, file); break; case GP_FILE_TYPE_PREVIEW: result = stv0680_get_image_preview (camera->port, image_no, file); break; default: return (GP_ERROR_NOT_SUPPORTED); } return result; } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { int result; int count,oldcount; if (type != GP_CAPTURE_IMAGE) return (GP_ERROR_NOT_SUPPORTED); result = stv0680_file_count(camera->port,&oldcount); result = stv0680_capture(camera->port); if (result < 0) return result; /* Just added a new picture... */ result = stv0680_file_count(camera->port,&count); if (count == oldcount) return GP_ERROR; /* unclear what went wrong ... hmm */ strcpy(path->folder,"/"); sprintf(path->name,"image%03i.pnm",count); /* Tell the filesystem about it */ result = gp_filesystem_append (camera->fs, path->folder, path->name, context); if (result < 0) return (result); return (GP_OK); } static int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { char *data; int size, result; result = stv0680_capture_preview (camera->port, &data, &size); if (result < 0) return result; gp_file_set_mime_type (file, GP_MIME_PNM); gp_file_set_data_and_size (file, data, size); return (GP_OK); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { stv0680_summary(camera->port,summary->text); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras.")); return (GP_OK); } static int delete_all_func (CameraFilesystem *fs, const char* folder, void *data, GPContext *context) { Camera *camera = data; if (strcmp (folder, "/")) return (GP_ERROR_DIRECTORY_NOT_FOUND); return stv0680_delete_all(camera->port); } static int storage_info_func (CameraFilesystem *fs, CameraStorageInformation **sinfos, int *nrofsinfos, void *data, GPContext *context ) { Camera *camera = (Camera*)data; GPPort *port = camera->port; struct stv680_camera_info caminfo; struct stv680_image_info imginfo; int ret; CameraStorageInformation *sinfo; /* Get Camera Information */ if ((ret = stv0680_try_cmd(port, CMDID_GET_CAMERA_INFO, 0, (void*)&caminfo, sizeof(caminfo)) < 0)) return ret; sinfo = malloc(sizeof(CameraStorageInformation)); if (!sinfo) return GP_ERROR_NO_MEMORY; *sinfos = sinfo; *nrofsinfos = 1; sinfo->fields = GP_STORAGEINFO_BASE; strcpy(sinfo->basedir, "/"); sinfo->fields |= GP_STORAGEINFO_ACCESS; sinfo->access = GP_STORAGEINFO_AC_READONLY_WITH_DELETE; sinfo->fields |= GP_STORAGEINFO_STORAGETYPE; sinfo->type = GP_STORAGEINFO_ST_FIXED_RAM; sinfo->fields |= GP_STORAGEINFO_FILESYSTEMTYPE; sinfo->fstype = GP_STORAGEINFO_FST_GENERICFLAT; sinfo->fields |= GP_STORAGEINFO_MAXCAPACITY; if (caminfo.hardware_config & HWCONFIG_MEMSIZE_16MBIT) sinfo->capacitykbytes = 16*1024/8; else sinfo->capacitykbytes = 64*1024/8; if ((ret = stv0680_try_cmd(port, CMDID_GET_IMAGE_INFO, 0, (void*)&imginfo, sizeof(imginfo))!=GP_OK)) return ret; sinfo->fields |= GP_STORAGEINFO_FREESPACEIMAGES; sinfo->freeimages = ((imginfo.maximages[0]<<8)|imginfo.maximages[1]) - ((imginfo.index[0]<<8)|imginfo.index[1]); return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .delete_all_func = delete_all_func, .storage_info_func = storage_info_func }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; /* First, set up all the function pointers */ camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->capture_preview = camera_capture_preview; camera->functions->capture = camera_capture; gp_port_get_settings(camera->port, &settings); switch(camera->port->type) { case GP_PORT_SERIAL: gp_port_set_timeout(camera->port, 1000); settings.serial.speed = 115200; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; break; case GP_PORT_USB: /* Use the defaults the core parsed */ break; default: return (GP_ERROR_UNKNOWN_PORT); break; } gp_port_set_settings(camera->port, settings); /* Set up the filesystem */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* test camera */ return stv0680_ping(camera->port); } libgphoto2-2.5.9/camlibs/stv0680/Makefile-files0000644000175000001440000000107412561423351016025 00000000000000EXTRA_DIST += \ stv0680/CREDITS stv0680/ChangeLog stv0680/LICENCE \ stv0680/README.pdf \ stv0680/680_commands_and_communication_sdk.pdf.gz EXTRA_LTLIBRARIES += stv0680.la stv0680_la_SOURCES = \ stv0680/stv0680.c stv0680/stv0680.h \ stv0680/library.c stv0680/library.h \ stv0680/bayer.c stv0680/bayer.h \ stv0680/sharpen.c stv0680/sharpen.h \ stv0680/saturate.c stv0680/saturate.h \ stv0680/demosaic_sharpen.h stv0680/demosaic_sharpen.c stv0680_la_LDFLAGS = $(camlib_ldflags) stv0680_la_DEPENDENCIES = $(camlib_dependencies) stv0680_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/stv0680/bayer.h0000644000175000001440000000210412610415536014534 00000000000000/* * STV0680 Vision Camera Chipset Driver * Copyright 2000 Adam Harrison * * 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 */ #ifndef BAYER_H #define BAYER_H void bayer_unshuffle_preview(int w, int h, int scale, unsigned char *raw, unsigned char *output); void light_enhance(int vw, int vh, int coarse, int fine, unsigned char avg_pix_val, unsigned char *output); #endif libgphoto2-2.5.9/camlibs/stv0680/ChangeLog0000644000175000001440000000711512561423351015041 000000000000002008-09-20 Marcus Meissner * stv0680.c: Added storage information function. 2005-02-01 Marcus Meissner * stv0680.c: Added Creative Go Mini as reported. 2004-09-03 Hubert Figuiere * stv0680.c: Added DigitalDream l'espion XS 2004-01-21 Marcus Meissner * stv0680.c: Added Che-ez! BABE and SPYZ as reported by shoota oohara - a4door at sourceforge. 2003-02-28 Marcus Meissner * stv0680.c: For USB consider this driver production ready. For serial still experimental, since no testresults appeared :/ 2002-11-17 Marcus Meissner * stv0680.c: Fixed long*/int* cast and some warnings. 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 2002-09-06 Marcus Meissner * stv680.c: Added Yahoo!Cam. 2002-08-27 Christophe Barbe * stv680: Added "Aiptek Palm Cam Trio" IDs reported by Klaus-M. Klingsporn 2002-08-02 Marcus Meissner * stv680.c: Added Konica e-Mini id. 2002-07-30 Lutz Müller * library.c: Change "!= GP_OK" to "< GP_OK". 2001-07-08 Marcus Meissner * stv680.c: Added SpyPen Cleo, Axys, Xion, Memo, as reported by Andrei Boros . 2001-04-12 Marcus Meissner * stv0680.c: Use GP_MIME_PNM instead of (wrong) image/pnm. 2001-04-10 Marcus Meissner * stv0680.c: Some of those cameras (especially the generic ones and the Argus DC-1500) are USB and serial at the same time. 2001-04-10 Marcus Meissner * stv0680.c: Set the speed on camera_init for serial cameras. 2001-04-05 Marcus Meissner * library.[ch], stv680.c: Store image data directly in CameraFile, instead of passing it around unnecessary. (we should add progress for serial too). 2001-01-23 Kurt Garloff * library.c, bayer.c: Enhanced the light processing even more. 2001-01-23 Kurt Garloff * sharpen.c: Fixed off by one error. 2001-01-15 Kurt Garloff * demosaic_sharpen.c: Add demosaicing which uses adaptive weighted interpolation rather than the simplistic bilinear one. Results in sharper and less noisy pictures. Further reduce traditional sharpening. 2001-01-09 Dan Fandrich * sharpen.c: Added include of string.h to get memcpy prototype 2001-01-08 Marcus Meissner * bayer.c, saturate.c, library.c: From Kurt Garloff: * The sharpening seems to be overdone a bit -- for darker images, the noise gets amplified too much and the picutre gets too snowy/grainy. * The colour correction sometimes also seems to go too far and a compormise between the original and the processed image would seem best. 2001-01-06 Marcus Meissner * bayer.c, library.c: Integrated a speedup of the preview debayer/scaler routine from Kurt Garloff. 2001-12-29 Marcus Meissner * saturate.[ch]: Merged from pencam-0.50, which got it from GIMP. Adapted to not use global variables. * library.c: Use saturation filter. (Done by Kevin, merged by me) 2001-12-21 Lutz Müller * stv0680.c (camera_capture): Tell the filesystem about the new file. 2001-12-05 Lutz Müller * library.c: Fix includes libgphoto2-2.5.9/camlibs/stv0680/demosaic_sharpen.c0000644000175000001440000002544612610415536016747 00000000000000/** demosaic_sharpen.c * when demosaicing the unbayered image, * don't just use bilinear interpolation, but weigh * the to be guessed values according to the differences * of the known value. * Of course, smaller differences mean higher weights. * * Copyright Kurt Garloff , 2002/01/15 * License: GNU GPL * * Note: Interpolation techniques more intelligent than * bilinear inerpolation have been subject to investigations. * Those two links came from Jérôme Fenal: * http://ise.stanford.edu/class/psych221/99/dixiedog/vision.htm * http://www-ise.stanford.edu/~tingchen/main.htm * * From the evaluation, it seems that we should strive to do something like * "Linear Interpolation with Laplacian 2nd order color correction terms I". * * Here; I went my own way. * The reason for this is twofold: * - Avoid all possible patent issues * (If I would be American, I would probably want to patent this algo) * - Be conservative: By using an interpolation method (with weights bound * below 1), we avoid the risk to get artefacts, like e.g. seen in the * smooth hue algorithms, as our interpolated values are always in between * those from the neighbours, just a little closer to the ones we think * fits better. * * Our algorithm: * Trying to predict the known value based on the next neighbours with * the same colour component will yield weights. To achieve this: * - Measure the difference |dv| of the known colour component * - Choose a function f(|dv|) which prefers points with smaller |dv| * - Function should be monotonic and ]0;1[ * - Sum of weights must be 1, of course * * We choose f(|dv|) = N / (ALPHA + |dv|) * and scale with the reciprocal total sum, so we fulfill the conditions. * The algorithm is integer only (unless you enable DEBUG) * and therefore suitable for FPU-less machines and/or the kernel. * * I've chosen ALPHA = 2 and the results look really good. * * ToDo: * - A similar algorithm in HSI space might be slightly better. * - Different weighing functions might do better * - Do rigorous performance analysis (quality and computation cost) * in comparison to other algos as in papers cited above. * - There's the bilinear interpolation included for reference * (debugging purposes). Use it or get rid of it for slightly better * performance. * * I've implemented this algo here as a testbed. It's only tested for * BAYER_TILE_GBRG_INTERLACED, though it's been designed to be general * for all BAYERs in gphoto2. (Hence all those tables ...) * It should be moved to the gphoto2 infrastructure to help all * cameras, not just mine. It includes the demosaicing, so it should * be merged with the gp_bayer_decode (or the bilinear demosaicing * could be removed from the latter) to avoid double work. * * History: * 2001-01-15, 0.90, KG, * working for inner points (2,2)-(width-3,height-3) * 2001-01-15, 1.00, KG, * handle boundary points * */ #include "config.h" #include #include "demosaic_sharpen.h" /* we define bayer as * +---> x * | 0 1 * v 2 3 * y */ typedef enum { RED = 0, GREEN = 1, BLUE = 2 } col; /* Don't get confused reading this code; there's lots of * indirection through the tables to avoid branches in the code; * maybe I love long pipelines too much. * If I look at the code long enough, I get confused myself. * The boundary special cases unfortunately do introduce some extra * branching. (KG) */ /* relative postition */ typedef struct _off { signed char dx, dy; } off; typedef enum { NB_DIAG = 0, NB_TLRB, NB_LR, NB_TB, NB_TLRB2 } nb_pat; /* locations of neighbour points with the same colour */ typedef struct _neighbours { unsigned char num; off nb_pts[4]; } neighbours; /* possible locations */ static const neighbours n_pos[8] = { { /* NB_DIAG */ 4, { {-1,-1}, { 1,-1}, {-1, 1}, { 1, 1} } },{ /* NB_TLRB */ 4, { { 0,-1}, {-1, 0}, { 1, 0}, { 0, 1} } },{ /* NB_LR */ 2, { {-1, 0}, { 1, 0}, { 0, 0}, { 0, 0} } },{ /* NB_TB */ 2, { { 0,-1}, { 0, 1}, { 0, 0}, { 0, 0} } },{ /* NB_TLRB2 */ 4, { { 0,-2}, {-2, 0}, { 2, 0}, { 0, 2}, } } }; typedef struct _t_coeff { unsigned char cf[4][4]; unsigned char num; } t_coeff; typedef enum { DIAG_TO_LR = 0, DIAG_TO_TB, TLRB2_TO_DIAG, TLRB2_TO_TLRB, PATCONV_NONE } patconv; /* Transfer matrix pattern to pattern */ static const t_coeff pat_to_pat[4] = { { /* DIAG_TO_LR */ { {2, 0, 2, 0}, {0, 2, 0, 2}, {0, 0, 0, 0}, {0, 0, 0, 0} }, 2 },{ /* DIAG_TO_TB */ { { 2, 2, 0, 0}, { 0, 0, 2, 2}, { 0, 0, 0, 0}, { 0, 0, 0, 0}, }, 2 },{ /* TLRB2_TO_DIAG */ { {1, 1, 0, 0}, {1, 0, 1, 0}, {0, 1, 0, 1}, {0, 0, 1, 1} }, 4 },{ /* TLRB2_TO_TLRB (trivial) */ { {2, 0, 0, 0}, {0, 2, 0, 0}, {0, 0, 2, 0}, {0, 0, 0, 2} }, 4 } }; static const patconv pconvmap[5][5] = { { PATCONV_NONE, PATCONV_NONE, DIAG_TO_LR, DIAG_TO_TB, PATCONV_NONE }, { PATCONV_NONE, PATCONV_NONE, PATCONV_NONE, PATCONV_NONE, PATCONV_NONE }, { PATCONV_NONE, PATCONV_NONE, PATCONV_NONE, PATCONV_NONE, PATCONV_NONE }, { PATCONV_NONE, PATCONV_NONE, PATCONV_NONE, PATCONV_NONE, PATCONV_NONE }, { TLRB2_TO_DIAG, TLRB2_TO_TLRB, PATCONV_NONE, PATCONV_NONE, PATCONV_NONE } }; /* Next mapping: col of pixel (0,1,2 = RGB & * index into n_pos for own, own+1, own+2 */ typedef struct _bayer_desc { col colour; nb_pat idx_pts[3]; } bayer_desc; /* T = Bayer Tile, P = Bayer point no * T P */ static const bayer_desc bayers[4][4] = { { /* TILE_RGGB */ { RED, {NB_TLRB2, NB_TLRB, NB_DIAG} }, { GREEN, {NB_DIAG, NB_TB, NB_LR} }, { GREEN, {NB_DIAG, NB_LR, NB_TB} }, { BLUE, {NB_TLRB2, NB_DIAG, NB_TLRB} }, },{ /* TILE_GRBG */ { GREEN, {NB_DIAG, NB_TB, NB_LR} }, { RED, {NB_TLRB2, NB_TLRB, NB_DIAG} }, { BLUE, {NB_TLRB2, NB_DIAG, NB_TLRB} }, { GREEN, {NB_DIAG, NB_LR, NB_TB} }, },{ /* TILE_BGGR */ { BLUE, {NB_TLRB2, NB_DIAG, NB_TLRB} }, { GREEN, {NB_DIAG, NB_LR, NB_TB} }, { GREEN, {NB_DIAG, NB_TB, NB_LR} }, { RED, {NB_TLRB2, NB_TLRB, NB_DIAG} }, },{ /* TILE_GBRG */ { GREEN, {NB_DIAG, NB_LR, NB_TB} }, { BLUE, {NB_TLRB2, NB_DIAG, NB_TLRB} }, { RED, {NB_TLRB2, NB_TLRB, NB_DIAG} }, { GREEN, {NB_DIAG, NB_TB, NB_LR} } } }; /* Use integer arithmetic. Accuracy is 10^-6, which is good enough */ #define SHIFT 20 static inline int weight (const unsigned char dx, const int alpha) { return (1<= 0 && nx < width && ny >= 0 && ny < height) { thisval = src_ptr[addr_off+colour]; coeff = weight (abs ((int)colval - thisval), myalpha); } else if (nbpts[0] == NB_TLRB2 && x > 0 && x < width-1 && y > 0 && y < height-1) { coeff = weight (128, myalpha); /* assign some small weight */ } /*DPRINTF(" (%i,%i)(%p): val %i, diff %i, weight %i\n", nx, ny, src_ptr+addr_off, thisval, abs ((int)colval - thisval), coeff);*/ predcol += thisval * coeff; weights[nbs] = coeff; sum_weights += coeff; }; #ifdef DEBUG printf(" Coeffs:"); for (nbs = 0; nbs < 4; nbs++) printf (" %6.4f", (double)weights[nbs]/sum_weights); printf (" -> pred %i\n", predcol/sum_weights); #endif /* Now calculate other colours */ ncol = (colour+1)%3; pconv = pconvmap[nbpts[0]][nbpts[1]]; if (pconv == PATCONV_NONE) abort (); othcol = 0; predcol = 0; nsumw = 0; skno = 0; /*DPRINTF(" Col %i: pat %i pconv %i\n", ncol, nbpts[1], pconv);*/ for (nbs = 0; nbs < n_pos[nbpts[1]].num; nbs++) { off offset = n_pos[nbpts[1]].nb_pts[nbs]; const int nx = x + offset.dx; const int ny = y + offset.dy; const signed long addr_off = 3 * (offset.dx + width * offset.dy); int eff_weight = 0; unsigned char thisval; for (i = 0; i < 4; i++) eff_weight += pat_to_pat[pconv].cf[nbs][i] * weights[i]; if (nx >= 0 && nx < width && ny >= 0 && ny < height) { thisval = src_ptr[addr_off+ncol]; nsumw += eff_weight; /*DPRINTF(" (%i,%i): val %i, eff_w %6.4f\n", nx, ny, thisval, (double)(eff_weight>>1)/sum_weights);*/ othcol += thisval * eff_weight; predcol += thisval; } else { skno++; } }; dst_ptr[ncol] = othcol/nsumw; /*DPRINTF( " -> val %i (bilin: %i)\n", dst_ptr[ncol], predcol/(n_pos[nbpts[1]].num-skno));*/ /* Third colour */ ncol = (colour+2)%3; pconv = pconvmap[nbpts[0]][nbpts[2]]; if (pconv == PATCONV_NONE) abort (); othcol = 0; predcol = 0; nsumw = 0; skno = 0; /*DPRINTF(" Col %i: pat %i pconv %i\n", ncol, nbpts[2], pconv);*/ for (nbs = 0; nbs < n_pos[nbpts[2]].num; nbs++) { off offset = n_pos[nbpts[2]].nb_pts[nbs]; const int nx = x + offset.dx; const int ny = y + offset.dy; const signed long addr_off = 3 * (offset.dx + width * offset.dy); int eff_weight = 0; unsigned char thisval; for (i = 0; i < 4; i++) eff_weight += pat_to_pat[pconv].cf[nbs][i] * weights[i]; if (nx >= 0 && nx < width && ny >= 0 && ny < height) { thisval = src_ptr[addr_off+ncol]; nsumw += eff_weight; /*DPRINTF(" (%i,%i): val %i, eff_w %6.4f\n", nx, ny, thisval, (double)(eff_weight>>1)/sum_weights);*/ othcol += thisval * eff_weight; predcol += thisval; } else { skno++; } }; dst_ptr[ncol] = othcol/nsumw; /*DPRINTF( " -> val %i (bilin: %i)\n", dst_ptr[ncol], predcol/(n_pos[nbpts[1]].num-skno));*/ } } } libgphoto2-2.5.9/camlibs/stv0680/sharpen.h0000644000175000001440000000026312557123324015077 00000000000000#ifndef __STV680_SHARPEN_H #define __STV680_SHARPEN_H void sharpen(int width, int height, unsigned char *src_region, unsigned char *dest_region, int sharpen_percent ); #endif libgphoto2-2.5.9/camlibs/stv0680/saturate.c0000644000175000001440000001475312610415536015272 00000000000000/* The GIMP -- an image manipulation program * Copyright 1995 Spencer Kimball and Peter Mattis * * 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 * * Simplified and modified by Kevin Sisson for use * in the pencam program, December, 2001 * * Integrated into gphoto2 by Marcus Meissner , Dec 2001 */ #include #include "saturate.h" /* FIXME: should be variable, and user configurable. Which is problematic in * gphoto2 :/ */ #define HUE_DATA 40 #define LIGHTNESS_DATA 40 #define SATURATION_DATA 40 static const int default_colors[6][3] = { { 255, 0, 0 }, { 255, 255, 0 }, { 0, 255, 0 }, { 0, 255, 255 }, { 0, 0, 255 }, { 255, 0, 255 } }; /********************************* * color conversion routines * *********************************/ static void gimp_rgb_to_hls (int *red, int *green, int *blue) { int r, g, b; double h, l, s; int min, max; int delta; r = *red; g = *green; b = *blue; if (r > g) { max = MAX (r, b); min = MIN (g, b); } else { max = MAX (g, b); min = MIN (r, b); } l = (max + min) / 2.0; if (max == min) { s = 0.0; h = 0.0; } else { delta = (max - min); if (l < 128) s = 255 * (double) delta / (double) (max + min); else s = 255 * (double) delta / (double) (511 - max - min); if (r == max) h = (g - b) / (double) delta; else if (g == max) h = 2 + (b - r) / (double) delta; else h = 4 + (r - g) / (double) delta; h = h * 42.5; if (h < 0) h += 255; else if (h > 255) h -= 255; } *red = h; *green = l; *blue = s; } static int gimp_hls_value (double n1, double n2, double hue) { double value; if (hue > 255) hue -= 255; else if (hue < 0) hue += 255; if (hue < 42.5) value = n1 + (n2 - n1) * (hue / 42.5); else if (hue < 127.5) value = n2; else if (hue < 170) value = n1 + (n2 - n1) * ((170 - hue) / 42.5); else value = n1; return (int) (value * 255); } static void gimp_hls_to_rgb (int *hue, int *lightness, int *saturation) { double h, l, s; double m1, m2; h = *hue; l = *lightness; s = *saturation; if (s == 0) { /* achromatic case */ *hue = l; *lightness = l; *saturation = l; } else { if (l < 128) m2 = (l * (255 + s)) / 65025.0; else m2 = (l + s - (l * s) / 255.0) / 255.0; m1 = (l / 127.5) - m2; /* chromatic case */ *hue = gimp_hls_value (m1, m2, h + 85); *lightness = gimp_hls_value (m1, m2, h); *saturation = gimp_hls_value (m1, m2, h - 85); } } /* hue saturation machinery */ static void hue_saturation_initialize (HueSaturationDialog *hsd) { int i; for (i = 0; i < 7; i++) { hsd->hue[i] = 0.0; hsd->lightness[i] = 0.0; hsd->saturation[i] = (double) (hsd->saturation_data)/2; } } static void hue_saturation_calculate_transfers (HueSaturationDialog *hsd) { int value; int hue; int i; /* Calculate transfers */ for (hue = 0; hue < 6; hue++) for (i = 0; i < 256; i++) { value = (hsd->hue[0] + hsd->hue[hue + 1]) * 255.0 / 360.0; if ((i + value) < 0) hsd->hue_transfer[hue][i] = 255 + (i + value); else if ((i + value) > 255) hsd->hue_transfer[hue][i] = i + value - 255; else hsd->hue_transfer[hue][i] = i + value; /* Lightness */ value = (hsd->lightness[0] + hsd->lightness[hue + 1]) * 127.0 / 100.0; value = CLAMP (value, -255, 255); if (value < 0) hsd->lightness_transfer[hue][i] = (unsigned char) ((i * (255 + value)) / 255); else hsd->lightness_transfer[hue][i] = (unsigned char) (i + ((255 - i) * value) / 255); /* Saturation */ value = (hsd->saturation[0] + hsd->saturation[hue + 1]) * 255.0 / 100.0; value = CLAMP (value, -255, 255); hsd->saturation_transfer[hue][i] = CLAMP ((i * (255 + value)) / 255, 0, 255); } } static void hue_saturation_update (HueSaturationDialog *hsd) { int i; int rgb[3]; hue_saturation_calculate_transfers (hsd); for (i = 0; i < 6; i++) { rgb[RED_PIX] = default_colors[i][RED_PIX]; rgb[GREEN_PIX] = default_colors[i][GREEN_PIX]; rgb[BLUE_PIX] = default_colors[i][BLUE_PIX]; gimp_rgb_to_hls (rgb, rgb + 1, rgb + 2); rgb[RED_PIX] = hsd->hue_transfer[i][rgb[RED_PIX]]; rgb[GREEN_PIX] = hsd->lightness_transfer[i][rgb[GREEN_PIX]]; rgb[BLUE_PIX] = hsd->saturation_transfer[i][rgb[BLUE_PIX]]; gimp_hls_to_rgb (rgb, rgb + 1, rgb + 2); } } /******************************** */ void stv680_hue_saturation( int width, int height, unsigned char *srcPR, unsigned char *destPR ) { unsigned char *src, *s; unsigned char *dest, *d; int w, h; int r, g, b; int hue; /* the hue-saturation tool dialog */ HueSaturationDialog hsd; memset(&hsd, 0, sizeof(hsd)); hsd.saturation_data = SATURATION_DATA; hsd.lightness_data = LIGHTNESS_DATA; hsd.hue_data = HUE_DATA; hue_saturation_initialize(&hsd); hue_saturation_update(&hsd); /* Set the transfer arrays (for speed) */ h = height; src = srcPR; dest = destPR; while (h--) { w = width; s = src; d = dest; while (w--) { r = s[RED_PIX]; g = s[GREEN_PIX]; b = s[BLUE_PIX]; gimp_rgb_to_hls (&r, &g, &b); if (r < 43) hue = 0; else if (r < 85) hue = 1; else if (r < 128) hue = 2; else if (r < 171) hue = 3; else if (r < 213) hue = 4; else hue = 5; r = hsd.hue_transfer[hue][r]; g = hsd.lightness_transfer[hue][g]; b = hsd.saturation_transfer[hue][b]; gimp_hls_to_rgb (&r, &g, &b); d[RED_PIX] = r; d[GREEN_PIX] = g; d[BLUE_PIX] = b; s += 3; /* bytes/pixel = 3 */ d += 3; } src += 3*width; dest += 3*width; } } libgphoto2-2.5.9/camlibs/stv0680/CREDITS0000644000175000001440000000115712557123324014311 00000000000000Adam Harrison Protocol reverse engineering Driver implementation Eric Brombaugh Pattern recognition based bayer->RGB demosaic routine Thanks to: Realtime Control, Inc for making their CommLite serial port analysis software freely available. Eric Brombaugh, for his kind permission to redistribute his bayer->RGB implementation under the GPL. The authors of the barbiecam camlib, whose code was relied on heavily in writing this driver. Steve Miller (of STM) for providing the usb command information. Kevin Sisson for his pencam/pensnap work, especially for the image filters. libgphoto2-2.5.9/camlibs/smal/0000755000175000001440000000000012623156267013155 500000000000000libgphoto2-2.5.9/camlibs/smal/ultrapocket.c0000644000175000001440000004553012610415536015576 00000000000000/* ultrapocket.c * * Copyright (C) 2003 Lee Benfield * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include "ultrapocket.h" #include "smal.h" #define GP_MODULE "Smal Ultrapocket" #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif static const char *BayerTileNames[8] = { "RGGB", "GRBG", "BGGR", "GBRG", "RGGB_INTERLACED", "GRBG_INTERLACED", "BGGR_INTERLACED", "GBRG_INTERLACED" }; static int ultrapocket_command(GPPort *port, int iswrite, unsigned char *data, int datasize) { int ret; if (iswrite) ret = gp_port_write(port, (char *)data, datasize); else ret = gp_port_read(port, (char *)data, datasize); return ret; } int ultrapocket_exit(GPPort *port, GPContext *context) { return GP_OK; } /* A generic slimshot-alike camera */ /* we have to determine from the header what the RAW image is, QVGA or VGA */ static int getpicture_generic(Camera *camera, GPContext *context, unsigned char **rd,int *retwidth, int *retheight, int *retimgstart, const char *filename) { GPPort *port = camera->port; unsigned char command[0x10] = { 0x11, 0x01, 0x00, 0x49, 0x4d, 0x47, 0,0,0,0, 0x2e, 0x52, 0x41, 0x57, 0x00, 0x00 }; unsigned char retdata[0x1000]; unsigned char header[42]; unsigned char *rawdata; int width, height, imgstart; smal_img_type styp; int ptc,pc,id; memcpy(command+6, filename+3, 4); /* the id of the image to transfer */ CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); /* the first packet has the header in it, plus the start of the data */ CHECK_RESULT(ultrapocket_command(port, 0, retdata, 0x1000)); memcpy(header, retdata, 41); styp = header[3]; switch (styp) { case TYPE_QVGA: /* 24 packets, including one already got */ ptc = 24; width = 320; height = 240; imgstart = 0x29; break; case TYPE_VGA: /* 80 including one already got. */ ptc = 80; width = 640; height = 480; imgstart = 0x29; break; case TYPE_QVGA_BH: ptc = 24; width = 320; height = 240; imgstart = 0x100; break; case TYPE_VGA_BH: ptc = 80; width = 640; height = 480; imgstart = 0x100; break; default: return GP_ERROR; } rawdata = malloc(0x1000 * ptc * sizeof(char)); if (!rawdata) return (GP_ERROR_NO_MEMORY); /* show how far we've got on the current image */ id = gp_context_progress_start(context, ptc-1, _("Downloading image...")); memcpy(rawdata, retdata, 0x1000 * sizeof(char)); for (pc=1;pcport; unsigned char command[0x10] = { 0x11, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; unsigned char retdata[0x8000]; unsigned char *rawdata; int ptc,pc,id; memcpy(command+3, filename, 11); /* the id of the image to transfer */ CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); /* the first packet has the header in it, plus the start of the data */ CHECK_RESULT(ultrapocket_command(port, 0, retdata, 0x8000)); /* 640 x 480 =ish 10 * 0x8000 */ ptc = 10; rawdata = malloc(0x8000 * ptc * sizeof(char)); if (!rawdata) return (GP_ERROR_NO_MEMORY); /* show how far we've got on the current image */ id = gp_context_progress_start(context, ptc-1, _("Downloading image...")); memcpy(rawdata, retdata, 0x8000 * sizeof(char)); for (pc=1;pcpl->up_type) { case BADGE_CARDCAM: case BADGE_FLATFOTO: case BADGE_GENERIC: case BADGE_ULTRAPOCKET: case BADGE_AXIA: CHECK_RESULT(getpicture_generic(camera, context, &rawdata, &width, &height, &imgstart, filename)); break; case BADGE_LOGITECH_PD: CHECK_RESULT(getpicture_logitech_pd(camera, context, &rawdata, filename)); width = 640; height = 480; imgstart = 0x29; break; default: return GP_ERROR; } tile = BAYER_TILE_BGGR; snprintf (ppmheader, sizeof(ppmheader), "P6\n" "# CREATOR: gphoto2, ultrapocket library, raw," " assuming Bayer tile %s\n" "%d %d\n" "255\n", BayerTileNames[tile], width, height); /* Allocate memory for Interpolated ppm image */ pmmhdr_len = strlen(ppmheader); outsize = ((long)width + 4) * height * 3 + pmmhdr_len; outdata = malloc(outsize); if (!outdata) { free(rawdata); return (GP_ERROR_NO_MEMORY); } /* Set header */ strcpy((char *)outdata, ppmheader); /* Expand the Bayer tiles */ result = gp_bayer_expand((rawdata+imgstart), width + 4, height, &outdata[pmmhdr_len], tile); /* and chop the spare 4 pixels off the RHS */ for (pc = 1; pc < height; pc++) { memmove(outdata + pmmhdr_len + ((long)width * pc * 3), outdata + pmmhdr_len + (((long)width + 4) * pc * 3), ((long)width) * 3); } /* modify outsize to reflect trim */ outsize = ((long)width) * height * 3 + pmmhdr_len; free(rawdata); if (result < 0) { free (outdata); return (result); } *pdata = outdata; *size = outsize; return GP_OK; } /* Different camera types (pocket digital/generic) * use a different protocol - have to differetiate. */ int ultrapocket_getpicture(Camera *camera, GPContext *context, unsigned char **pdata, int *size, const char *filename) { char *savelocale; char ppmheader[200]; unsigned char *rawdata,*outdata; int width, height, result; size_t outsize; int imgstart = 0; int pc, pmmhdr_len; BayerTile tile; #if DO_GAMMA unsigned char gtable[256]; #endif switch (camera->pl->up_type) { case BADGE_CARDCAM: case BADGE_FLATFOTO: case BADGE_GENERIC: case BADGE_ULTRAPOCKET: case BADGE_AXIA: CHECK_RESULT(getpicture_generic(camera, context, &rawdata, &width, &height, &imgstart, filename)); break; case BADGE_LOGITECH_PD: CHECK_RESULT(getpicture_logitech_pd(camera, context, &rawdata, filename)); width = 640; height = 480; imgstart = 0x29; break; default: return GP_ERROR; } tile = BAYER_TILE_BGGR; savelocale = setlocale (LC_ALL, "C"); snprintf (ppmheader, sizeof(ppmheader), "P6\n" "# CREATOR: gphoto2, ultrapocket library," " assuming Bayer tile %s, interpolated" #if DO_GAMMA ", gamma %.2f" #endif "\n%d %d\n" "255\n", BayerTileNames[tile], #if DO_GAMMA GAMMA_NUMBER, #endif width, height); setlocale (LC_ALL, savelocale); /* Allocate memory for Interpolated ppm image */ pmmhdr_len = strlen(ppmheader); outsize = ((long)width + 4) * height * 3 + pmmhdr_len; outdata = malloc(outsize); if (!outdata) { free (rawdata); return (GP_ERROR_NO_MEMORY); } /* Set header */ strcpy((char *)outdata, ppmheader); /* Decode and interpolate the Bayer tiles */ result = gp_bayer_decode((rawdata+imgstart), width+4, height, &outdata[pmmhdr_len], tile); /* and chop the spare 4 pixels off the RHS */ for (pc = 1; pc < height; pc++) { memmove(outdata + pmmhdr_len + ((long)width * pc * 3), outdata + pmmhdr_len + (((long)width + 4) * pc * 3), ((long)width) * 3); } /* modify outsize to reflect trim */ outsize = ((long)width) * height * 3 + pmmhdr_len; free(rawdata); if (result < 0) { free (outdata); return (result); } #if DO_GAMMA gp_gamma_fill_table(gtable, GAMMA_NUMBER); gp_gamma_correct_single(gtable, &outdata[pmmhdr_len], height * width); #endif *pdata = outdata; *size = outsize; return GP_OK; } /* * Only need to reset the generic camera type, AFAICT - * the pocket digital never seems to need it. */ static int ultrapocket_reset(Camera *camera) { GPPortInfo oldpi; GPPort *port = camera->port; CameraAbilities cab; unsigned char cmdbuf[0x10]; gp_camera_get_abilities(camera, &cab); GP_DEBUG ("First connect since camera was used - need to reset cam"); /* * this resets the ultrapocket. Messy, but it's what the windows * software does. We only reset if it's been plugged in since * last reset. */ memset(cmdbuf, 0, 16); cmdbuf[0] = 0x28; cmdbuf[1] = 0x01; CHECK_RESULT(ultrapocket_command(port, 1, cmdbuf, 0x10)); /* -------------- */ sleep(4); /* This should do - _might_ need increasing */ CHECK_RESULT(gp_port_get_info(port, &oldpi)); CHECK_RESULT(gp_port_free(port)); CHECK_RESULT(gp_port_new(&port)); CHECK_RESULT(gp_port_set_info(port, oldpi)); CHECK_RESULT(gp_port_usb_find_device(port, cab.usb_vendor, cab.usb_product)); CHECK_RESULT(gp_port_open(port)); camera->port = port; return GP_OK; } static int ultrapocket_skip(GPPort *port, int npackets) { int old_timeout = 200; unsigned char retbuf[0x1000]; gp_port_get_timeout(port, &old_timeout); gp_port_set_timeout(port, 100); for (; (npackets > 0) && gp_port_read(port, (char *)retbuf, 0x1000); npackets--); gp_port_set_timeout(port, old_timeout); return GP_OK; } static int ultrapocket_sync(Camera *camera) { GPPort *port = camera->port; unsigned char command[0x10]; /* Who knows what's in all these packets? ... only SmAL! */ if (camera->pl->up_type == BADGE_CARDCAM) { #if 0 memset(command, 0, 16); command[0] = 0x12; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); ultrapocket_skip(port, 8); /* -------------- */ #endif memset(command, 0, 16); command[0] = 0x31; command[1] = 0x01; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); ultrapocket_skip(port, 8); /* -------------- */ memset(command, 0, 16); command[0] = 0x12; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); ultrapocket_skip(port, 8); /* -------------- */ memset(command, 0, 16); command[0] = 0x31; command[1] = 0x01; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); ultrapocket_skip(port, 8); } #if 0 /* -------------- */ memset(command, 0, 16); command[0] = 0x30; command[1] = 0x01; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); ultrapocket_skip(port, 16); /* -------------- */ memset(command, 0, 16); command[0] = 0x29; command[1] = 0x01; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); ultrapocket_skip(port, 8); /* -------------- */ #endif return GP_OK; } /* * For most ultrapocket compatibles, call this. */ static int getpicsoverview_generic( Camera *camera, GPContext *context, int *numpics, CameraList *list ) { GPPort **pport = &camera->port; GPPort *port = *pport; unsigned char command[0x10]; unsigned char retbuf[0x1000]; int y; int np = 0; char fn[20]; int picid; int reset_needed; CHECK_RESULT(ultrapocket_sync(camera)); memset(command, 0, 16); command[0] = 0x12; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); CHECK_RESULT(ultrapocket_command(port, 0, retbuf, 0x1000)); np = *(unsigned char*)(retbuf + 0x104); for (y=0;yport; unsigned char command[0x10]; unsigned char retbuf[0x8000]; int y; int np = 0; char fn[20]; memset(command, 0, 16); command[0] = 0x12; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); CHECK_RESULT(ultrapocket_command(port, 0, retbuf, 0x8000)); np = *(unsigned char*)(retbuf + 0x105); for (y=0;ypl->up_type) { case BADGE_CARDCAM: case BADGE_FLATFOTO: case BADGE_GENERIC: case BADGE_ULTRAPOCKET: case BADGE_AXIA: return getpicsoverview_generic(camera, context, numpics, list); break; case BADGE_LOGITECH_PD: return getpicsoverview_logitech_pd(camera, context, numpics, list); break; default: break; } return GP_ERROR; } static int deletefile_generic(Camera *camera, const char *filename) { unsigned char command[0x10] = { 0x22, 0x01, 0x00, 0x49, 0x4d, 0x47, 0,0,0,0, 0x2e, 0x52, 0x41, 0x57, 0x00, 0x00 }; memcpy(command+6, filename+3, 4); /* the id of the image to delete */ CHECK_RESULT(ultrapocket_command(camera->port, 1, command, 0x10)); ultrapocket_skip(camera->port, 8); return GP_OK; } static int deletefile_logitech_pd(GPPort *port, const char *filename) { unsigned char command[0x10] = { 0x11, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; memcpy(command+3, filename, 11); /* the id of the image to delete */ CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); return GP_OK; } /* The windows software doesn't allow one to delete a file without deleting previous * ones. * * Careful! * * This appears to be the same for Logitech pocket digital and the generic * camera. */ int ultrapocket_deletefile(Camera *camera, const char *filename) { GPPort *port = camera->port; switch (camera->pl->up_type) { case BADGE_CARDCAM: case BADGE_FLATFOTO: case BADGE_GENERIC: case BADGE_ULTRAPOCKET: case BADGE_AXIA: return deletefile_generic(camera, filename); break; case BADGE_LOGITECH_PD: return deletefile_logitech_pd(port, filename); break; default: break; } return GP_ERROR; } static int deleteall_logitech_pd(GPPort **pport) { unsigned char command[0x10]; unsigned char retbuf[0x8000]; GPPort *port = *pport; memset(command, 0, 16); command[0] = 0x12; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); CHECK_RESULT(ultrapocket_command(port, 0, retbuf, 0x8000)); CHECK_RESULT(ultrapocket_command(port, 0, retbuf, 0x8000)); /* as far as I can tell, the logitech pocket digital doesn't need a * reset - if it did, it would go here. */ memset(command, 0, 0x10); command[0] = 0x18; command[1] = 0x01; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); return GP_OK; } static int deleteall_generic(Camera *camera) { unsigned char command[0x10]; unsigned char retbuf[0x1000]; int reset_needed = 0; GPPort *port = camera->port; memset(command, 0, 16); command[0] = 0x12; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); CHECK_RESULT(ultrapocket_command(port, 0, retbuf, 0x1000)); reset_needed = (*(retbuf + 2) & UP_FLAG_NEEDS_RESET); ultrapocket_skip(camera->port, 7); if (reset_needed) { CHECK_RESULT(ultrapocket_reset(camera)); port = camera->port; } memset(command, 0, 0x10); command[0] = 0x18; command[1] = 0x01; CHECK_RESULT(ultrapocket_command(port, 1, command, 0x10)); ultrapocket_skip(camera->port, 8); return GP_OK; } int ultrapocket_deleteall(Camera *camera) { GPPort **pport = &camera->port; switch (camera->pl->up_type) { case BADGE_CARDCAM: case BADGE_FLATFOTO: case BADGE_GENERIC: case BADGE_ULTRAPOCKET: case BADGE_AXIA: return deleteall_generic(camera); break; case BADGE_LOGITECH_PD: return deleteall_logitech_pd(pport); break; default: break; } return GP_ERROR; } libgphoto2-2.5.9/camlibs/smal/smal.c0000644000175000001440000001501412610415536014167 00000000000000/* smal.c * * Copyright (C) 2003 Lee Benfield * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include "smal.h" #include "ultrapocket.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif int camera_id (CameraText *id) { strcpy(id->text, "smal"); return (GP_OK); } static const struct smal_cameras { char * name; unsigned short idVendor; unsigned short idProduct; } smal_cameras [] = { { "Fuji:Axia Slimshot", USB_VENDOR_ID_SMAL, USB_DEVICE_ID_ULTRAPOCKET }, { "Fuji:Axia Eyeplate", USB_VENDOR_ID_SMAL, USB_DEVICE_ID_ULTRAPOCKET }, { "Logitech:Pocket Digital", USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_POCKETDIGITAL }, { "SMaL:Ultra-Pocket", USB_VENDOR_ID_SMAL, USB_DEVICE_ID_ULTRAPOCKET }, { "Radioshack:Flatfoto", USB_VENDOR_ID_SMAL, USB_DEVICE_ID_FLATFOTO }, { "Creative:CardCam", USB_VENDOR_ID_CREATIVE, USB_DEVICE_ID_CARDCAM }, { NULL, 0, 0 } }; int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; int i; memset(&a, 0, sizeof(a)); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; /* highly! */ a.port = GP_PORT_USB; a.speed[0] = 0; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; for (i = 0; smal_cameras[i].name; i++) { strcpy(a.model, smal_cameras[i].name); a.usb_vendor = smal_cameras[i].idVendor; a.usb_product = smal_cameras[i].idProduct; gp_abilities_list_append(list, a); } return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { if (camera->pl) { free(camera->pl); camera->pl = NULL; } return ultrapocket_exit(camera->port, context); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int size,image_no,result; unsigned char *data; image_no = gp_filesystem_number(fs, folder, filename, context); if (image_no < GP_OK) return image_no; switch (type) { case GP_FILE_TYPE_NORMAL: result = ultrapocket_getpicture(camera,context,&data,&size,filename); gp_file_set_mime_type (file, GP_MIME_PPM); break; case GP_FILE_TYPE_RAW: result = ultrapocket_getrawpicture(camera, context, &data, &size, filename); gp_file_set_mime_type (file, GP_MIME_PPM); break; case GP_FILE_TYPE_PREVIEW: default: return (GP_ERROR_NOT_SUPPORTED); } if (result < 0) return result; CHECK_RESULT(gp_file_set_data_and_size (file, (char *)data, size)); return (GP_OK); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int image_no; image_no = gp_filesystem_number(fs, folder, filename, context); if (image_no < GP_OK) return image_no; CHECK_RESULT(ultrapocket_deletefile(camera, filename)); return (GP_OK); } static int delete_all_func (CameraFilesystem *fs, const char* folder, void *data, GPContext *context) { Camera *camera = data; if (strcmp (folder, "/")) return (GP_ERROR_DIRECTORY_NOT_FOUND); return ultrapocket_deleteall(camera); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)")); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int count, result; result = ultrapocket_getpicsoverview(camera, context, &count, list); if (result != GP_OK) return result; return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .delete_all_func = delete_all_func, }; int camera_init (Camera *camera, GPContext *context) { CameraAbilities cab; up_badge_type badge; camera->functions->exit = camera_exit; camera->functions->about = camera_about; gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); badge = BADGE_UNKNOWN; gp_camera_get_abilities(camera, &cab); switch (cab.usb_vendor) { case USB_VENDOR_ID_SMAL: case USB_VENDOR_ID_CREATIVE: switch (cab.usb_product) { case USB_DEVICE_ID_ULTRAPOCKET: /* could be an axia eyeplate or a slimshot * figure it out later, when we get the image * catalogue. */ badge = BADGE_GENERIC; break; case USB_DEVICE_ID_FLATFOTO: badge = BADGE_FLATFOTO; break; case USB_DEVICE_ID_CARDCAM: badge = BADGE_CARDCAM; break; default: break; } break; case USB_VENDOR_ID_LOGITECH: switch (cab.usb_product) { case USB_DEVICE_ID_POCKETDIGITAL: badge = BADGE_LOGITECH_PD; break; default: break; } break; default: break; } if (badge == BADGE_UNKNOWN) { /* can't happen. Otherwise, how'd we get to camera_init, neh? */ return GP_ERROR; } camera->pl = malloc (sizeof (CameraPrivateLibrary)); camera->pl->up_type = badge; /* don't need to do any exciting init stuff until we get pic numbers */ return GP_OK; } libgphoto2-2.5.9/camlibs/smal/smal.h0000644000175000001440000000267512610415524014202 00000000000000/* smal.h * * Copyright (C) 2003 Lee Benfield * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __SMAL_H__ #define __SMAL_H__ 1 #define USB_VENDOR_ID_SMAL 0x0dca #define USB_DEVICE_ID_ULTRAPOCKET 0x0002 #define USB_DEVICE_ID_FLATFOTO 0x0004 #define USB_VENDOR_ID_LOGITECH 0x046d #define USB_DEVICE_ID_POCKETDIGITAL 0x0950 #define USB_VENDOR_ID_CREATIVE 0x041e #define USB_DEVICE_ID_CARDCAM 0x4016 typedef enum ultrapocket_BADGE_TYPE { BADGE_UNKNOWN = 0, BADGE_GENERIC, /* could be axia/ultrapocket */ BADGE_ULTRAPOCKET, BADGE_AXIA, BADGE_FLATFOTO, BADGE_LOGITECH_PD, /* pocket digital */ BADGE_CARDCAM } up_badge_type; struct _CameraPrivateLibrary { up_badge_type up_type; }; #endif libgphoto2-2.5.9/camlibs/smal/README.smal0000644000175000001440000000227412561423351014705 00000000000000Smal Ultrapocket (fuji @xia slimshot) ___________________________________________________________________ This driver is based on packet sniffs of protocol observed under Windows 2000, and is known to be incomplete. Minimal functionality is implemented as of the Experimental version. RAW images as retrieved from the camera require a not insignificant amount of post processing. Enabling #DO_GAMMA in ultrapocket.h helps, but more work is required. ___________________________________________________________________ The author takes no responsibility for damage to your camera from using this driver. Use at your own risk. ___________________________________________________________________ TODO: - Battery status - Firmware information - Current resolution information - Determine what (if anything) the camera passes as image modification parameters (Gamma, etc). - At the moment, the Logitech driver stores images as .VGA and .XGA not .PPM ___________________________________________________________________ Author: Lee Benfield (lee@benf.org) Thanks: Vasileios Zografos, Dave Scott, Matthias Scherrer This code borrows heavily from the sipix web2 driver available with gphoto. Thanks, guys ;) libgphoto2-2.5.9/camlibs/smal/Makefile-files0000644000175000001440000000047212561423351015630 00000000000000EXTRA_DIST += smal/README.smal smal/ChangeLog camlibdoc_DATA += smal/README.smal EXTRA_LTLIBRARIES += smal.la smal_la_SOURCES = \ smal/smal.c smal/ultrapocket.c \ smal/smal.h smal/ultrapocket.h smal_la_LDFLAGS = $(camlib_ldflags) smal_la_DEPENDENCIES = $(camlib_dependencies) smal_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/smal/ChangeLog0000644000175000001440000000157012561423351014642 000000000000002008-10-18 Marcus Meissner * merged 1.3M Creative CardCam patch from Sourceforge. https://sourceforge.net/tracker/index.php?func=detail&aid=947064&group_id=8874&atid=308874 2003-01-06 Lee Benfield * Version 0.01 2003-01-13 LB * Version 0.02 * Added support for different header types in returned image as observed by Vasileios Zografos, on @xia (different faceplate from mine). 2003-08-25 LB * Version 0.03 * Logitech pocket digital - previously someone had marked this as a compatible camera, whereas it wasn't really (different USB id and everything!) * Anyway - the logitech has a fairly different protocol, so I've added support for that, with the caveat that logitech's imaginary 1024x768 images are downloaded as 640x480 (the size they're stored on the camera). If you want to double the size, use the gimp! libgphoto2-2.5.9/camlibs/smal/ultrapocket.h0000644000175000001440000000337112610415524015575 00000000000000/* ultrapocket.h * * Copyright (C) 2003 Lee Benfield * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __ULTRAPOCKET_H__ #define __ULTRAPOCKET_H__ 1 #include #include #ifndef CHECK_RESULT #define CHECK_RESULT(result) {int r = (result); if (r < 0) return (r);} #endif #define UP_FLAG_NEEDS_RESET 0x80 #define DO_GAMMA 1 #define GAMMA_NUMBER 0.5 typedef enum ultrapocket_IMG_TYPE { TYPE_QVGA = 0, TYPE_VGA = 1, TYPE_QVGA_BH = 2, TYPE_VGA_BH = 3 } smal_img_type; int ultrapocket_getpicsoverview(Camera *camera, GPContext *context,int *numpics, CameraList *list); int ultrapocket_exit(GPPort *port, GPContext *context); int ultrapocket_getrawpicture(Camera *camera, GPContext *context, unsigned char **pdata, int *size, const char *filename); int ultrapocket_getpicture(Camera *camera, GPContext *context, unsigned char **pdata, int *size, const char *filename); int ultrapocket_deletefile(Camera *camera, const char *filename); int ultrapocket_deleteall(Camera *camera); #endif libgphoto2-2.5.9/camlibs/dimera/0000755000175000001440000000000012623156267013462 500000000000000libgphoto2-2.5.9/camlibs/dimera/Makefile-files0000644000175000001440000000054112561423351016132 00000000000000EXTRA_DIST += dimera/CREDITS dimera/Protocol.txt dimera/ChangeLog dimera/TODO EXTRA_LTLIBRARIES += dimera3500.la dimera3500_la_SOURCES =\ dimera/dimera3500.c \ dimera/mesalib.c dimera/mesalib.h\ dimera/dimeratab.h dimera3500_la_LDFLAGS = $(camlib_ldflags) dimera3500_la_DEPENDENCIES = $(camlib_dependencies) dimera3500_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/dimera/TODO0000644000175000001440000000077012557123324014070 00000000000000$Id$ Outstanding items in the gphoto2 dimera driver: - make sure multiple, simultaneous requests are handled properly and disallowed where necessary (e.g. downloading image) - add delete file function Bugs: - flash capacity in --summary shows 0 for newer flash cards - image quality is lower than it could be due to suboptimal Bayer CCD conversion routine - some serial port speed settings don't work - figure out how to tell if a valid image is in RAM and only put temp.ppm into the file list then libgphoto2-2.5.9/camlibs/dimera/mesalib.c0000644000175000001440000005431312610415536015161 00000000000000/* * Copyright 2000-2001, Brian Beattie , et. al. * * This software was created with the help of proprietary * information belonging to StarDot Technologies * * Permission to copy and use and modify this file is granted * provided the above notices are retained, intact. * * Revision History: * See CVS log for later revisions * * 2001/03/10 - Port to gphoto2 Dan * * 2000/09/06 - Modified by Gregg Berg GDB * * Rewrite mesa_read_row() to use mesa_image_arg GDB * * Add checksum to mesa_read_row() GDB * * Add return with number of bytes to mesa_read_image() GDB * GDB * $Id$ */ #include "config.h" #include "mesalib.h" #include #include #include #include #include #include #include "gphoto2-endian.h" #define GP_MODULE "dimera" #define debuglog(e) GP_DEBUG( "%s", (e)) #ifdef CONVERT_PIXELS static const uint16_t pixelTable[256] = { 0x000, 0x001, 0x002, 0x003, 0x004, 0x005, 0x006, 0x007, 0x008, 0x009, 0x00A, 0x00B, 0x00C, 0x00D, 0x00E, 0x00F, 0x010, 0x011, 0x012, 0x013, 0x014, 0x015, 0x016, 0x017, 0x018, 0x019, 0x01A, 0x01B, 0x01C, 0x01D, 0x01E, 0x01F, 0x020, 0x021, 0x022, 0x023, 0x024, 0x025, 0x026, 0x027, 0x028, 0x029, 0x02A, 0x02B, 0x02C, 0x02D, 0x02E, 0x02F, 0x030, 0x031, 0x032, 0x033, 0x034, 0x035, 0x036, 0x037, 0x038, 0x039, 0x03A, 0x03B, 0x03C, 0x03D, 0x03E, 0x03F, 0x040, 0x041, 0x042, 0x043, 0x044, 0x045, 0x046, 0x047, 0x048, 0x049, 0x04A, 0x04B, 0x04C, 0x04E, 0x04F, 0x050, 0x051, 0x052, 0x053, 0x054, 0x055, 0x056, 0x057, 0x058, 0x059, 0x05A, 0x05B, 0x05C, 0x05D, 0x05E, 0x05F, 0x060, 0x061, 0x062, 0x063, 0x064, 0x066, 0x067, 0x068, 0x069, 0x06A, 0x06C, 0x06D, 0x06E, 0x06F, 0x070, 0x072, 0x073, 0x074, 0x075, 0x076, 0x077, 0x078, 0x079, 0x07A, 0x07B, 0x07C, 0x07E, 0x07F, 0x081, 0x082, 0x084, 0x085, 0x087, 0x088, 0x08A, 0x08B, 0x08C, 0x08E, 0x08F, 0x090, 0x092, 0x093, 0x094, 0x096, 0x098, 0x09A, 0x09C, 0x09E, 0x0A0, 0x0A2, 0x0A3, 0x0A5, 0x0A6, 0x0A8, 0x0A9, 0x0AB, 0x0AC, 0x0AE, 0x0B0, 0x0B2, 0x0B4, 0x0B6, 0x0B8, 0x0BA, 0x0BC, 0x0BE, 0x0C0, 0x0C2, 0x0C4, 0x0C6, 0x0C8, 0x0CA, 0x0CD, 0x0CF, 0x0D2, 0x0D5, 0x0D8, 0x0DB, 0x0DE, 0x0E0, 0x0E2, 0x0E5, 0x0E7, 0x0EA, 0x0EC, 0x0EE, 0x0F1, 0x0F3, 0x0F6, 0x0FC, 0x102, 0x106, 0x10A, 0x10E, 0x111, 0x114, 0x117, 0x11A, 0x11D, 0x120, 0x123, 0x126, 0x12C, 0x132, 0x138, 0x13E, 0x142, 0x146, 0x14A, 0x150, 0x156, 0x15A, 0x15E, 0x162, 0x166, 0x16A, 0x16E, 0x17A, 0x180, 0x186, 0x18C, 0x192, 0x19E, 0x1AA, 0x1B0, 0x1B6, 0x1BA, 0x1BE, 0x1C2, 0x1C8, 0x1CE, 0x1DA, 0x1E6, 0x1F2, 0x1FE, 0x204, 0x20A, 0x216, 0x222, 0x22E, 0x23A, 0x240, 0x246, 0x24C, 0x252, 0x25E, 0x26A, 0x276, 0x282, 0x28E, 0x2A6, 0x2B2, 0x2BE, 0x2D6, 0x2EE, 0x2FA, 0x312, 0x336, 0x34E, 0x35e, 0x366 }; #endif /* * return the difference in tenths of seconds, between t1 and t2. */ static long timediff( struct timeval *t1, struct timeval *t2 ) { long t; t = (t1->tv_sec - t2->tv_sec) * 10; t += (t1->tv_usec - t2->tv_usec) / 100000; return t; } /* flush input. Wait for timeout deci-seconds to pass without input */ void mesa_flush( GPPort *port, int timeout ) { uint8_t b[256]; struct timeval start, now; gettimeofday( &start, NULL ); /* Clear any pending input bytes */ gp_port_flush(port, 0); /* Wait for silence */ do { if ( gp_port_read( port, (char *)b, sizeof( b ) ) > 0 ) /* reset timer */ gettimeofday( &start, NULL ); gettimeofday( &now, NULL ); } while ( timeout > timediff( &now, &start ) ); return; } /* Read exactly this number of bytes from the port within the given timeouts */ int mesa_read( GPPort *port, uint8_t *b, int s, int timeout2, int timeout1 ) { int n = 0; int r, t; struct timeval start, now; t = timeout1 ? timeout1 : timeout2; /* set first byte timeout */ gettimeofday( &start, NULL ); do { /* limit reads to 1k segment */ r = gp_port_read( port, (char *)&b[n], s>1024?1024:s ); if ( r > 0 ) { n += r; s -= r; gettimeofday( &start, NULL ); t = timeout2; } gettimeofday( &now, NULL ); } while ( s > 0 && t > timediff( &now, &start ) ); return n; } /* Send a command to the camera and read the acknowledgement byte */ int mesa_send_command( GPPort *port, uint8_t *cmd, int n, int ackTimeout ) { uint8_t c; CHECK (gp_port_write( port, (char *)cmd, n )); if ( mesa_read( port, &c, 1, ackTimeout, 0 ) != 1 ) { debuglog("mesa_send_command: timeout"); return GP_ERROR_TIMEOUT; } if ( c != CMD_ACK ) { debuglog("mesa_send_command: error response"); return GP_ERROR_CORRUPTED_DATA; } return GP_OK; } /* Open the serial port and configure it */ int mesa_port_open( GPPort *port ) { GPPortSettings settings; debuglog("mesa_port_open()"); gp_port_set_timeout(port, 5000); gp_port_get_settings(port, &settings); settings.serial.speed = 115200; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits= 1; return gp_port_set_settings(port, settings); } /* Close the serial port (now done by gphoto2 itself) */ int mesa_port_close( GPPort *port ) { return GP_OK; } /* reset camera */ int mesa_reset( GPPort *port ) { return gp_port_send_break( port, 1 ); } /* set camera serial port speed, then our local port speed */ int mesa_set_speed( GPPort *port, int speed ) { uint8_t b[2]; gp_port_settings settings; if (speed == 0) speed = 115200; /* use default speed */ GP_DEBUG( "mesa_set_speed: speed %d", speed); b[0] = SET_SPEED; switch( speed ) { case 9600: b[1] = 1; break; case 14400: b[1] = 2; break; case 19200: b[1] = 3; break; case 38400: b[1] = 4; break; case 57600: b[1] = 5; break; case 76800: b[1] = 6; break; case 115200: b[1] = 7; break; case 230400: b[1] = 8; break; case 460800: b[1] = 9; break; default: return GP_ERROR_BAD_PARAMETERS; } CHECK (mesa_send_command( port, b, sizeof( b ), 10 )); gp_port_get_settings(port, &settings); settings.serial.speed = speed; return gp_port_set_settings(port, settings); } /* get camera version number */ int mesa_version( GPPort *port, char *version_string) { uint8_t b; uint8_t r[3]; int i; char *v = version_string; b = MESA_VERSION; CHECK (mesa_send_command( port, &b, 1, 10 )); if ( ( i = mesa_read( port, r, sizeof( r ), 10, 0 ) ) != sizeof( r ) ) { return GP_ERROR_TIMEOUT; } GP_DEBUG( "mesa_version: %02x:%02x:%02x\n", r[0], r[1], r[2] ); sprintf(v, "%2x.%02x%c", r[1], r[0], r[2]); /* highest byte must be < MESA_VERSION_SZ */ return GP_OK; } /* test camera serial port transmit */ int mesa_transmit_test( GPPort *port ) { uint8_t b; uint8_t r[256]; unsigned int i; b = XMIT_TEST; CHECK (mesa_send_command( port, &b, 1, 10 )); if ( mesa_read( port, r, sizeof( r ), 10, 0 ) != sizeof( r ) ) { return GP_ERROR_TIMEOUT; } for ( i = 0; i < 256; i++ ) { if ( r[i] != i ) return GP_ERROR_CORRUPTED_DATA; } return GP_OK; } /* test camera ram */ int mesa_ram_test( GPPort *port ) { uint8_t b; uint8_t r; b = RAM_TEST; CHECK (mesa_send_command( port, &b, 1, 100 )); if ( mesa_read( port, &r, 1, 10, 0 ) != 1 ) { return GP_ERROR_TIMEOUT; } return (int)r; } /* * Read image row from camera. * ******************************************************************** GDB * * The following contradicted by traces from my Win98 twain driver* GDB * ******************************************************************** GDB * The image is stored in the camera as 504 row (0 - 503), the first 8 and the * last 2 are blank. * The rows are 18 dummy pixels, 2 blanks, 646 pixels, 13 bytes garbage, * 2 bytes blanks * * start - offset into row; * send - bytes to send; * skip - bytes to skip; * repeat - # repeats of send skip * 640 bytes start = 28, send = 2, skip = 0, repeat = 320 * 320 bytes start = 28, send = 2, skip = 2, repeat = 160 * * return number of bytes read, or < 0 if an error was detected. * GDB * ******************************************************************** GDB * GDB * 640 bytes start = 30, send = 4, skip = 0, repeat = 160 GDB * 320 bytes start = 30, send = 4, skip = 0, repeat = 80 GDB * GDB * return value >0 number of bytes read GDB * GP_ERROR_TIMEOUT read time-out * GP_ERROR_BAD_PARAMETERS bad values * GP_ERROR command failure * GP_ERROR_CORRUPTED_DATA checksum failure */ int /*GDB*/ mesa_read_row( GPPort *port, uint8_t *r, struct mesa_image_arg *s ) /*GDB*/ { uint8_t b[9]; unsigned int bytes, i; /*GDB*/ uint8_t checksum = 0; /*GDB*/ if ( (bytes = s->send * s->repeat) > 680 ) /*GDB*/ { return GP_ERROR_BAD_PARAMETERS; } b[0] = SEND_RAM; htole16a(&b[1], s->row); htole16a(&b[3], s->start); b[5] = s->send; b[6] = s->skip; htole16a(&b[7], s->repeat); CHECK (mesa_send_command( port, b, sizeof( b ), 10 )); /* return ( mesa_read( port, r, n, 10, 0 )); GDB*/ if ( mesa_read( port, r, bytes, 10, 0 ) != bytes ) /*GDB*/ { /*GDB*/ return GP_ERROR_TIMEOUT; } /*GDB*/ /*GDB*/ if ( mesa_read( port, b, 1, 10, 0 ) != 1) /*GDB*/ { /*GDB*/ return GP_ERROR_TIMEOUT; } /*GDB*/ /*GDB*/ for (i = 0; i < bytes; i++ ) /*GDB*/ { /*GDB*/ checksum += r[i]; /*GDB*/ } /*GDB*/ /*GDB*/ if ( checksum != b[0] ) /*GDB*/ { /*GDB*/ return GP_ERROR_CORRUPTED_DATA; } /*GDB*/ /*GDB*/ return bytes; /*GDB*/ } /* * Snaps a full resolution image, with no flash, or shutter click * * exposure is in units of 1/50000 seconds */ int mesa_snap_image( GPPort *port, uint16_t exposure ) { uint8_t b[3]; int timeout; if ( exposure ) timeout = (exposure/50000) + 10; else timeout = 10; b[0] = SNAP_IMAGE; htole16a(&b[1], exposure); return mesa_send_command( port, b, sizeof( b ), timeout ); } /* return black levels, overwrites image memory */ int mesa_black_levels( GPPort *port, uint8_t r[2] ) { uint8_t b; b = SND_BLACK; CHECK (mesa_send_command( port, &b, 1, 10 )); return mesa_read( port, r, 2, 10, 0 ); } /* * snap a view finder image, optionally return image in buffer. * * if hi_res is true, image is 128x96 packed 4 bits per pixel (6144 bytes). * else image is 64x48 packed 4 bits per pixel (1536 bytes). * * the image can be full scale, 0, zoom 2x 1, zoom 4x, 2, and for * low res images, 8x, 3. * * row and column may be offset 0-197 and 0-223 for zoom. * * exposure is * 1/50000 seconds. * * download specifies how, of if thge image is downloaded. * 0-47 returns one 32 byte (64 pixel) row. * 128-223 returns on 64 byte row. * 249 returns all odd rows of a hi-res image 1536 bytes. * 250 returns all even rows of a hi-res image 1536 bytes. * 251 returns complete hi res image 6144 bytes. * 252 returns nothing. * 253 returns all odd rows of low res image 768 bytes. * 254 returns all even rows of low res image 768 bytes. * 255 returns entire image of 1536 bytes. * */ int mesa_snap_view( GPPort *port, uint8_t *r, unsigned int hi_res, unsigned int zoom, unsigned int row, unsigned int col, uint16_t exposure, uint8_t download ) { unsigned int timeout, i; unsigned int bytes = 0; uint8_t b[7], cksum; if ( download <= 47 ) bytes = 32; else if ( download >= 48 && download <= 127 ) return GP_ERROR_BAD_PARAMETERS; else if ( download >= 128 && download <= 223 ) bytes = 64; else if ( download >= 224 && download <= 248 ) return GP_ERROR_BAD_PARAMETERS; else if ( download == 249 || download == 250 ) bytes = 1536; else if ( download == 251 ) bytes = 6144; else if ( download == 252 ) bytes = 0; else if ( download == 253 || download == 254 ) bytes = 768; else /* if ( download == 255 ) */ bytes = 1536; if ( bytes != 0 && r == NULL ) { return GP_ERROR_BAD_PARAMETERS; } if ( exposure ) timeout = (exposure/50000) + 10; else timeout = 10; b[0] = SNAP_VIEW; b[1] = (zoom&3)+(hi_res?0x80:0); b[2] = row; b[3] = col; htole16a(&b[4], exposure); b[6] = download; CHECK (mesa_send_command( port, b, sizeof( b ), timeout )); if ( bytes != 0 ) { if ( mesa_read( port, r, bytes, 10, 0 ) != bytes ) { return GP_ERROR_TIMEOUT; } if ( mesa_read( port, b, 1, 10, 0 ) != 1 ) { return GP_ERROR_TIMEOUT; } for ( i = 0, cksum = 0; i < bytes; i++ ) { cksum += r[i]; } if ( cksum != b[0] ) { return GP_ERROR_CORRUPTED_DATA; } } return bytes; } /* * tell camera to insert extra stop bits between bytes. * slows down transmission without using a slower speed. */ int mesa_set_stopbits( GPPort *port, unsigned int bits ) { uint8_t b[2]; b[0] = XTRA_STP_BIT; b[1] = bits; return mesa_send_command( port, b, sizeof( b ), 10 ); } /* download viewfinder image ( see mesa_snap_view ) */ int mesa_download_view( GPPort *port, uint8_t *r, uint8_t download ) { unsigned int bytes, i; uint8_t b[2], cksum; if ( download <= 47 ) bytes = 32; else if ( download >= 48 && download <= 127 ) return GP_ERROR_BAD_PARAMETERS; else if ( download >= 128 && download <= 223 ) bytes = 64; else if ( download >= 224 && download <= 248 ) return GP_ERROR_BAD_PARAMETERS; else if ( download == 249 ) bytes = 1536; else if ( download == 250 || download == 251 ) bytes = 768; else if ( download == 252 ) bytes = 0; else if ( download == 253 ) bytes = 6144; else /* if ( download == 254 || download == 255 ) */ bytes = 1536; if ( bytes != 0 && r == NULL ) { return GP_ERROR_BAD_PARAMETERS; } b[0] = SND_VIEW; b[1] = download; CHECK (mesa_send_command( port, b, sizeof( b ), 10 )); if ( bytes != 0 ) { if ( mesa_read( port, r, bytes, 10, 0 ) != bytes ) { return GP_ERROR_TIMEOUT; } if ( mesa_read( port, b, 1, 10, 0 ) != 1 ) { return GP_ERROR_TIMEOUT; } for ( i = 0, cksum = 0; i < bytes; i++ ) { cksum += r[i]; } if ( cksum != b[0] ) return GP_ERROR_CORRUPTED_DATA; } return bytes; } /* * take a picture, with flash and shutter click */ int mesa_snap_picture( GPPort *port, uint16_t exposure ) { unsigned int timeout; uint8_t b[3]; if ( exposure ) timeout = (exposure/50000) + 10; else timeout = 10; b[0] = SNAP_PICTURE; htole16a(&b[1], exposure); return mesa_send_command( port, b, sizeof( b ), timeout ); } /* Get the camera chipset identification */ int mesa_send_id( GPPort *port, struct mesa_id *id ) { uint8_t b, r[4]; b = SND_ID; CHECK (mesa_send_command( port, &b, 1, 10 )); if ( mesa_read( port, r, sizeof( r ), 10, 0 ) != sizeof( r ) ) { return GP_ERROR_TIMEOUT; } id->man = r[0] + ((r[1]&15)<<8); id->ver = r[1]>>4; id->year = 1996 + r[2]; id->week = r[3]; return GP_OK; } /* * check for a camera, or a modem, send AT, if the response is 0x21, * it is a camera, if it is "AT" it's a modem. * * returns GP_OK = camera * GP_ERROR_MODEL_NOT_FOUND = modem * other = error */ int mesa_modem_check( GPPort *port ) { uint8_t b[3]; b[0] = 'A'; b[1] = 'T'; b[2] = '\r'; CHECK (gp_port_write( port, (char *)b, sizeof( b ) )); /* Expect at least one byte */ if ( mesa_read( port, b, 1, 5, 0 ) < 1 ) { return GP_ERROR_TIMEOUT; } if ( b[0] == CMD_ACK ) return GP_OK; /* Anything past this point results in an error */ if ( mesa_read( port, b+1, sizeof(b) - 1, 2, 2 ) == sizeof(b) - 1 ) { if ( b[0] == 'A' && b[1] == 'T' ) { mesa_flush( port, 10 ); return GP_ERROR_MODEL_NOT_FOUND; } } mesa_flush( port, 10 ); return GP_ERROR; } /* * mesa_read_image - returns all or part of an image in the supplied buffer * uint8_t *r, buffer to return image in. * struct mesa_image_arg *i, download specifier. * * return value >0 number of bytes read * GP_ERROR_TIMEOUT read time-out * GP_ERROR command failure * GP_ERROR_CORRUPTED_DATA checksum failure */ int mesa_read_image( GPPort *port, uint8_t *r, struct mesa_image_arg *s ) { uint8_t b[14]; unsigned long bytes, i; uint8_t checksum = 0; bytes = s->row_cnt * (s->repeat * s->send); b[0] = SND_IMAGE; htole16a(&b[1], s->row); htole16a(&b[3], s->start); b[5] = s->send; b[6] = s->skip; htole16a(&b[7], s->repeat); b[9] = s->row_cnt; b[10] = s->inc1; b[11] = s->inc2; b[12] = s->inc3; b[13] = s->inc4; CHECK (mesa_send_command( port, b, sizeof( b ), 10 )); if ( mesa_read( port, r, bytes, 10, 0 ) != bytes ) { return GP_ERROR_TIMEOUT; } if ( mesa_read( port, b, 1, 10, 0 ) != 1 ) { return GP_ERROR_TIMEOUT; } for ( i = 0; i < bytes; i++ ) { checksum += r[ i ]; } if ( checksum != b[0] ) { return GP_ERROR_CORRUPTED_DATA; } return bytes; } /* * test serial link, send six bytes * * returns GP_OK - success * GP_ERROR_TIMEOUT - no data received * GP_ERROR - command failed (no or bad ack) * GP_ERROR_CORRUPTED_DATA - returned bytes do not match */ int mesa_recv_test( GPPort *port, uint8_t r[6] ) { uint8_t b[7]; int i; b[0] = RCV_TEST; memcpy( &b[1], r, 6 ); CHECK (mesa_send_command( port, b, sizeof( b ), 10 )); if ( mesa_read( port, r, 6, 10, 0 ) != 6 ) { return GP_ERROR_TIMEOUT; } for ( i = 0; i < 6; i++ ) if ( r[i] != b[i+1] ) return GP_ERROR_CORRUPTED_DATA; return GP_OK; } /* Return the number of images in the EEPROM */ int mesa_get_image_count( GPPort *port ) { uint8_t b; uint8_t r[2]; b = IMAGE_CNT; CHECK (mesa_send_command( port, &b, 1, 10 )); if ( mesa_read( port, r, sizeof( r ), 10, 0 ) != sizeof( r ) ) { return GP_ERROR_TIMEOUT; } return le16atoh(r); } /* load image from eeprom, into ram */ int mesa_load_image( GPPort *port, int image ) { uint8_t b[3]; b[0] = LD_IMAGE; htole16a(&b[1], image); return mesa_send_command( port, b, sizeof( b ), 1000 ); } /* * Read EEPROM information * Bytes 10..16 of info correspond to the Device ID field, bytes 45..51 */ int mesa_eeprom_info( GPPort *port, int long_read, uint8_t info[MESA_EEPROM_SZ] ) { uint8_t b; b = EEPROM_INFO; CHECK (mesa_send_command( port, &b, 1, 10 )); return mesa_read( port, info, long_read ? 49 : 33, 10, 0 ); } /* * */ int32_t mesa_read_thumbnail( GPPort *port, int picture, uint8_t *image ) { uint8_t b[3], checksum = 0; uint32_t bytes; unsigned int standard_res, i; b[0] = SND_THUMB; htole16a(&b[1], picture); CHECK (mesa_send_command( port, b, sizeof( b ), 10 )); if ( mesa_read( port, b, 3, 10, 0 ) != 3 ) { return GP_ERROR_TIMEOUT; } checksum = b[0] + b[1] + b[2]; standard_res = ((b[2] & 128) != 0); bytes = b[0] + (b[1]<<8) + ((b[2] & 127)<<16); if ( mesa_read( port, image, MESA_THUMB_SZ, 10, 0 ) != MESA_THUMB_SZ ) { return GP_ERROR_TIMEOUT; } if ( mesa_read( port, b, 1, 10, 0 ) != 1 ) { return GP_ERROR_TIMEOUT; } for ( i = 0; i < MESA_THUMB_SZ; i++ ) { checksum += image[i]; } if ( checksum != b[0] ) return GP_ERROR_CORRUPTED_DATA; return (bytes + standard_res ? 0x1000000 : 0); } /* Return the camera's feature bits */ int mesa_read_features( GPPort *port, struct mesa_feature *f ) { uint8_t b; b = FEATURES; CHECK (mesa_send_command( port, &b, 1, 10 )); return ( mesa_read( port, (uint8_t *)f, sizeof( *f ), 10, 0 ) ); } /* return percentage battery level */ int mesa_battery_check( GPPort *port ) { struct mesa_feature f; int l, r, rc; if ( (rc = mesa_read_features( port, &f )) != sizeof( f )) { return rc; } if ( (f.feature_bits_hi & BAT_VALID) == 0 ) return GP_ERROR_MODEL_NOT_FOUND; /* (df) Does BAT_DIGITAL need to be checked here? */ if ( ( l = f.battery_level - f.battery_zero ) < 0 ) l = 0; r = f.battery_full - f.battery_zero; return ( (l*100)/r ); } int32_t mesa_read_image_info( GPPort *port, int i, struct mesa_image_info *info ) { uint8_t b[3], r[3]; int32_t bytes; int32_t standard_res; b[0] = SND_IMG_INFO; htole16a(&b[1], i); CHECK (mesa_send_command( port, b, sizeof( b ), 10 )); if ( mesa_read( port, r, sizeof( r ), 10, 0 ) != sizeof( r ) ) { return GP_ERROR_TIMEOUT; } standard_res = ((r[2] & 128) != 0); bytes = r[0] + (r[1]<<8) + ((r[2] & 127)<<16); if ( info != NULL ) { info->standard_res = standard_res; info->num_bytes = bytes; } return standard_res; } #ifdef CONVERT_PIXELS /* * return and image with raw pixels expanded. */ uint16_t * mesa_get_image( GPPort *port, int image ) { static uint8_t buffer[640*480L]; static struct mesa_image_info info; static struct mesa_image_arg ia; uint8_t *b = buffer; uint16_t *rbuffer; int r, res; unsigned long size, i; if ( image != RAM_IMAGE_NUM ) { if ( mesa_load_image( port, image ) != GP_OK ) { mesa_flush( port, 100 ); return NULL; } if ( mesa_read_image_info( port, image, &info ) < 0 ) { mesa_flush( port, 100 ); return NULL; } if ( info.standard_res ) { res = 1; size = 320*240; } else { res = 0; size = 640*480; } } else { res = 0; size = 640*480; } rbuffer = (uint16_t *)malloc( size*(sizeof (uint16_t)) ); if ( rbuffer == NULL ) return NULL; ia.start = 28; ia.send = 4; ia.skip = 0; ia.repeat = (res ? 80 : 160); ia.row_cnt = 40; ia.inc1 = 1; ia.inc2 = 128; ia.inc3 = ia.inc4 = 0; for ( ia.row = 4; ia.row < (res ? 244 : 484) ; ia.row += ia.row_cnt ) { if ( (r = mesa_read_image( port, b, &ia )) < 0 ) { free( rbuffer ); return NULL; } b += r; } for ( i = 0; i < size; i++ ) { *rbuffer++ = pixelTable[*b++]; } return rbuffer; } #else /* * return and raw image retransmit on errors */ uint8_t * mesa_get_image( GPPort *port, int image ) { static struct mesa_image_info info; static struct mesa_image_arg ia; uint8_t *rbuffer, *b; int r, res, retry; unsigned long size; if ( image != RAM_IMAGE_NUM ) { if ( mesa_load_image( port, image ) < 0 ) { mesa_flush( port, 100 ); return NULL; } if ( mesa_read_image_info( port, image, &info ) < 0 ) { mesa_flush( port, 100 ); return NULL; } if ( info.standard_res ) { res = 1; size = 320*240; } else { res = 0; size = 640*480; } } else { res = 0; size = 640*480; } rbuffer = (uint8_t *)malloc( size ); if ( rbuffer == NULL ) return NULL; b = rbuffer; ia.start = 28; ia.send = 4; ia.skip = 0; ia.repeat = (res ? 80 : 160); ia.row_cnt = 40; ia.inc1 = 1; ia.inc2 = 128; ia.inc3 = ia.inc4 = 0; for ( ia.row = 4; ia.row < (res ? 244 : 484) ; ia.row += ia.row_cnt ) { for ( retry = 10;; ) { if ( (r = mesa_read_image( port, b, &ia )) > 0) break; /* if checksum error count retries */ if ( r == -2 && --retry > 0) continue; /* not exceeded, try again */ /* error, exit */ free( rbuffer ); return NULL; } b += r; } return rbuffer; } #endif libgphoto2-2.5.9/camlibs/dimera/Protocol.txt0000644000175000001440000000717512557123324015750 00000000000000The protocol deduced, so far. A break, will reset the protocol, baud rate set to 115200. Commands are acknowledge by a 21 ( all transmitted data in this description is given as bytes of two hex digits) The commands seen so far, in order of discovery. All work so far has been done with high res images, 640 x 480. 69 // set baud rate // 1 = 9600 // 2 = 14400 // 3 = 19200 // 4 = 38400 // 5 = 57600 // 6 = ?? // 7 = 115200 05 // ASCII ENQ no response 41 54 0d // "AT\r" no response 55 // get status, the response to this command // is two bytes, the lsb of which is the // number of images in the camera, unless // that number can exceed 255, it is not // clear what the second byte is. 61 00 // download thumbnail (first image is 0 thes // image number (starts at zero) the // second byte could be the msb of the image // number, if more than 256 images are // possible. The response is 3844 bytes. // The first three bytes are the same as the // response to the 71 command and are // assumed to have something to do with the // image. Bit 7 of the third byte indicates // the image mode, set = std, clear = fine. // (this is the current working hypothesis) // This is followed by 3840 bytes // (64*60) and a byte that is assumed to be // a error detection byte. 71 00 // 71 and 59 are used to download full // images, the response to 71, is three // bytes. These three bytes, are the same // as the first three bytes of the // thumbnail. The ack of the 59 command has // been seen to take more than 10 seconds. // This would indicate that the 71 command // might be some sort of enquiry command and // the 59 command prepares the camera to // download and image (retrieve image from // flash ?) // bit 7 of the third byte of the response // is set for a standard mode image (320x240), // clear for a fine mode image (640x480) 49 1e 00 04 00 a0 00 80 00 00 // the 49 command requests the downloading // of image data. The first two argument // bytes specify the line to start sending, // the ninth byte specifies the number of // lines to send. Each line is 640 bytes, // all work so far has been 640 x 480. The // result to this command is 20481 bytes. // It is assumed that the last byte is an // error detection byte of some sort. The // image bytes work quite well as grey // scale, it is not clear how color is // encoded. // This command will download fine mode // image, for a std mode image, byte 3 is // 1A, byte 7 is 50, as opposed to 1E and A0 21 80 03 00 fb // send real-time image? The response is // 6148 bytes, the TWAIN driver displays // this much larger than the thumbnail. // but tacking a pgm header makes this work // as a greyscale. The exposure control // controls how bright the picture is. the // higher the number, the brighter the // picture. Commands seen but not investigated 35 // the response is 4 bytes 00 10 02 11 5d // the response is 49 bytes, response seems // include Flash memory size. 6d // the response is 5 bytes 2d 65 66 // no response ( take picture? ) The following sequnece is used to down load a full fine mode image, after the baud rate is set. 41 54 0d 05 55 71 59 49 1E 00 04 00 A0 00 01 80 00 00 libgphoto2-2.5.9/camlibs/dimera/ChangeLog0000644000175000001440000000224212561423351015144 000000000000002006-12-16 Marcus Meissner * dimera3500.c: Moved the camera specific bayer conversion out from libgphoto2 to here to clean up the APIs. Untested, but builds. 2003-01-14 Dan Fandrich * dimera3500.c: Made exposure and flash settings configurable. 2002-11-17 Marcus Meissner * dimera3500.c: Fixed 64bit problems. 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 2002-01-21 Dan Fandrich * TODO: changed note about temp.ppm and added one about multiple ops. * mesalib.c: Check for error in mesa_modem_check. * mesalib.h: Added include files. * dimera3500.c: Put temp.ppm file permanently into file list. Fix percentage given to gp_file_progress. Simplified debugging macros. 2002-01-16 Colin Marquardt * dimera3500.c: Fix typo. 2002-01-13 Lutz Müller * dimera3500.c: Remove references to gp_camera_set_error. 2001-12-31 Lutz Müller * dimera3500.c (capture_image): Tell the filesystem about the new (ram) image. libgphoto2-2.5.9/camlibs/dimera/dimeratab.h0000644000175000001440000001176312561423351015503 00000000000000/* dimeratab.h -- Color conversion values for the Dimera 3500 These tables were deduced by analyzing the output of the Windows Dimera driver. Many of the values are probably wrong, but this produces a decent image. My analysis was done using several outdoor pictures in sunlight. In other lighting conditions, your mileage may vary. Comments or suggestions? Email me. -- Chuck Homic $Id$ */ #ifndef DIMERATAB_H #define DIMERATAB_H static const unsigned char red_table[256]={ /* 0 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x04,0x04,0x05,0x06, /* 16 */ 0x06,0x07,0x08,0x09,0x0B,0x0C,0x0E,0x10,0x13,0x15,0x16,0x18,0x19,0x1B,0x1E,0x20, /* 32 */ 0x22,0x25,0x28,0x29,0x2B,0x2C,0x2D,0x2E,0x30,0x31,0x33,0x34,0x37,0x39,0x3B,0x3C, /* 48 */ 0x3D,0x3F,0x40,0x41,0x42,0x43,0x45,0x46,0x49,0x4B,0x4C,0x4E,0x4F,0x51,0x52,0x53, /* 64 */ 0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5A,0x5B,0x5C,0x5D,0x5F,0x60,0x62,0x64,0x65, /* 80 */ 0x67,0x68,0x69,0x6A,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x73,0x74,0x75,0x76, /* 96 */ 0x77,0x78,0x79,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, /* 112 */ 0x88,0x8A,0x8B,0x8C,0x8E,0x8F,0x91,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9C, /* 128 */ 0x9D,0x9E,0xA0,0xA1,0xA3,0xA4,0xA6,0xA7,0xA8,0xA9,0xAB,0xAC,0xAE,0xAF,0xB1,0xB2, /* 144 */ 0xB4,0xB5,0xB7,0xB8,0xB9,0xBA,0xBC,0xBD,0xBF,0xC1,0xC2,0xC4,0xC5,0xC7,0xC8,0xC9, /* 160 */ 0xCA,0xCB,0xCD,0xCE,0xD0,0xD1,0xD3,0xD4,0xD5,0xD7,0xD8,0xDA,0xDB,0xDC,0xDD,0xDE, /* 176 */ 0xDF,0xE0,0xE1,0xE2,0xE2,0xE4,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xEC, /* 192 */ 0xED,0xEE,0xEE,0xEF,0xEF,0xEF,0xF0,0xF0,0xF1,0xF2,0xF2,0xF3,0xF3,0xF4,0xF4,0xF4, /* 208 */ 0xF5,0xF5,0xF5,0xF6,0xF6,0xF6,0xF7,0xF7,0xF7,0xF7,0xF7,0xF8,0xF8,0xF8,0xF9,0xF9, /* 224 */ 0xF9,0xF9,0xF9,0xF9,0xF9,0xF9,0xF9,0xF9,0xFA,0xFA,0xFA,0xFB,0xFB,0xFB,0xFB,0xFB, /* 240 */ 0xFB,0xFB,0xFC,0xFC,0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFE,0xFE, }; static const unsigned char green_table[256]={ /* 0 */ 0x00,0x01,0x01,0x02,0x02,0x03,0x03,0x03,0x04,0x04,0x05,0x05,0x06,0x06,0x07,0x07, /* 16 */ 0x07,0x08,0x09,0x0A,0x0B,0x0B,0x0C,0x0D,0x0E,0x0E,0x0F,0x10,0x11,0x12,0x12,0x13, /* 32 */ 0x14,0x14,0x15,0x16,0x17,0x18,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21, /* 48 */ 0x21,0x22,0x23,0x24,0x24,0x25,0x26,0x27,0x28,0x28,0x29,0x2A,0x2B,0x2C,0x2C,0x2D, /* 64 */ 0x2E,0x2E,0x2F,0x30,0x30,0x31,0x32,0x32,0x33,0x33,0x34,0x35,0x35,0x36,0x37,0x37, /* 80 */ 0x38,0x39,0x39,0x3A,0x3A,0x3B,0x3C,0x3C,0x3D,0x3E,0x3E,0x3E,0x3F,0x40,0x40,0x41, /* 96 */ 0x42,0x42,0x43,0x43,0x44,0x44,0x45,0x45,0x46,0x47,0x47,0x48,0x49,0x49,0x4A,0x4B, /* 112 */ 0x4B,0x4C,0x4D,0x4D,0x4E,0x4E,0x4F,0x4F,0x4F,0x50,0x50,0x51,0x52,0x52,0x53,0x54, /* 128 */ 0x54,0x55,0x55,0x56,0x56,0x57,0x58,0x59,0x5A,0x5A,0x5A,0x5B,0x5C,0x5C,0x5D,0x5E, /* 144 */ 0x5E,0x5F,0x60,0x61,0x61,0x62,0x63,0x63,0x64,0x65,0x65,0x66,0x67,0x67,0x68,0x69, /* 160 */ 0x6A,0x6A,0x6B,0x6C,0x6C,0x6D,0x6F,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77, /* 176 */ 0x78,0x79,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x84,0x85,0x86,0x87, /* 192 */ 0x88,0x89,0x8B,0x8C,0x8E,0x8F,0x91,0x93,0x96,0x97,0x98,0x99,0x9B,0x9C,0x9E,0xA0, /* 208 */ 0xA1,0xA3,0xA5,0xA6,0xA8,0xAA,0xAC,0xAE,0xB1,0xB3,0xB4,0xB6,0xB8,0xBA,0xBB,0xBD, /* 224 */ 0xBF,0xC1,0xC3,0xC5,0xC8,0xCA,0xCC,0xCE,0xD1,0xD3,0xD5,0xD7,0xD9,0xDB,0xDD,0xDF, /* 240 */ 0xE1,0xE2,0xE5,0xE6,0xE8,0xEA,0xEC,0xEE,0xF0,0xF2,0xF3,0xF5,0xF6,0xF8,0xFA,0xFC, }; static const unsigned char blue_table[256]={ /* 0 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01, /* 16 */ 0x02,0x03,0x04,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0C,0x0E,0x11,0x12,0x13,0x14, /* 32 */ 0x15,0x17,0x19,0x1B,0x1C,0x1E,0x1F,0x20,0x21,0x23,0x26,0x28,0x29,0x2B,0x2C,0x2D, /* 48 */ 0x2E,0x30,0x31,0x32,0x33,0x33,0x35,0x36,0x37,0x38,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, /* 64 */ 0x41,0x42,0x42,0x43,0x44,0x45,0x47,0x47,0x49,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, /* 80 */ 0x4F,0x50,0x50,0x51,0x52,0x52,0x53,0x54,0x55,0x55,0x56,0x57,0x58,0x59,0x5A,0x5A, /* 96 */ 0x5B,0x5C,0x5D,0x5D,0x5E,0x5F,0x5F,0x60,0x61,0x62,0x62,0x63,0x64,0x66,0x67,0x67, /* 112 */ 0x68,0x69,0x69,0x6A,0x6B,0x6C,0x6D,0x6D,0x6E,0x6F,0x70,0x71,0x71,0x72,0x72,0x73, /* 128 */ 0x74,0x75,0x76,0x76,0x77,0x78,0x79,0x7A,0x7A,0x7B,0x7C,0x7D,0x7D,0x7E,0x7F,0x7F, /* 144 */ 0x80,0x80,0x81,0x81,0x82,0x82,0x83,0x84,0x85,0x85,0x86,0x88,0x88,0x89,0x8A,0x8B, /* 160 */ 0x8C,0x8D,0x8E,0x8F,0x8F,0x90,0x91,0x92,0x93,0x95,0x96,0x96,0x97,0x99,0x99,0x9A, /* 176 */ 0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA1,0xA2,0xA3,0xA4,0xA6,0xA7,0xA9,0xAB,0xAD,0xAE, /* 192 */ 0xB0,0xB2,0xB3,0xB4,0xB6,0xB7,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xC0,0xC1,0xC3,0xC4, /* 208 */ 0xC6,0xC8,0xCA,0xCB,0xCD,0xD0,0xD3,0xD5,0xD7,0xD9,0xDC,0xDF,0xE1,0xE3,0xE5,0xE7, /* 224 */ 0xE8,0xE9,0xEA,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF2,0xF3,0xF4,0xF5,0xF5,0xF6, /* 240 */ 0xF7,0xF7,0xF7,0xF8,0xF8,0xF8,0xF9,0xF9,0xFA,0xFB,0xFB,0xFC,0xFC,0xFD,0xFD,0xFE, }; #endif /* DIMERATAB_H */ libgphoto2-2.5.9/camlibs/dimera/mesalib.h0000644000175000001440000001327112610415536015164 00000000000000/* * Copyright 2000-2001, Brian Beattie , et. al. * * This software was created with the help of proprietary * information belonging to StarDot Technologies * * Permission to copy and use and modify this file is granted * provided the above notices are retained, intact. * */ #ifndef MESALIB_H #define MESALIB_H #include <_stdint.h> #include #define CHECK(result) {int res = (result); if (res < 0) return (res);} /* MESA commands */ #define NOP 0x01 /* No operation */ #define MESA_VERSION 0x05 /* Send Version command */ #define XMIT_TEST 0x09 /* Send test sequent */ #define RAM_TEST 0x0d /* Test Camera RAM */ #define SEND_RAM 0x15 /* Send Ram contents */ #define SNAP_IMAGE 0x19 /* Snap an Image (no flash or shutter) */ #define SND_BLACK 0x1d /* Send Black level bytes */ #define SNAP_VIEW 0x21 /* Snap (and Send) viewfinder image */ #define XTRA_STP_BIT 0x25 /* Stop bits (extra time between bytes */ #define SND_VIEW 0x29 /* Send viewfinder image */ #define SNAP_PICTURE 0x2d /* Snap a picture */ #define SND_ID 0x35 /* Send Manufacture/year/week of manufacture */ #define AT_COMMAND 0x41 /* Modem Detect command */ #define SND_IMAGE 0x49 /* Send image stored in RAM */ #define RCV_TEST 0x4d /* Echo six bytes */ #define IMAGE_CNT 0x55 /* Send count of images */ #define LD_IMAGE 0x59 /* Load Image from EEPROM into RAM */ #define EEPROM_INFO 0x5d /* Send information about EEPROM */ #define SND_THUMB 0x61 /* Send Thumbnail of image */ #define SET_SPEED 0x69 /* Set serial link speed */ #define FEATURES 0x6d /* Send features */ #define SND_IMG_INFO 0x71 /* Send Image Info */ #define CMD_ACK 0x21 /* Command ACK */ #define RAM_IMAGE_NUM 0x10000 /* image number for image in RAM */ /* RAM Test results */ #define RAM_GOOD 0x2a /* RAM tests good */ #define RAM_ERROR 0x2d /* RAM error detected */ #define EE_ERROR 0x45 /* Failure to restore EEPROM dir */ /* DownLoad ViewFinder */ #define ALL_LOWRES 0xff /* Send all of a LowRES 64x48 viewfinder */ #define EVEN_LOWRES 0xfe /* Send even rows of LowRES */ #define ODD_LOWRES 0xfd /* Send odd rows of LowRES */ #define NONE 0xfc /* Send nothing (for Snap Viewfinder) */ #define ALL_HIRES 0xfb /* Send All of a HighRES 128x96 viewfinder */ #define EVEN_HIRES 0xfa /* Send even rows of HiRES */ #define ODD_HIRES 0xf9 /* Send odd rows of HiRES */ /* Feature bits */ struct mesa_feature { uint8_t feature_bits_lo; #define HAVE_FLASH 0x01 /* Flash present */ #define HAVE_RES_SW 0x02 /* Resolution switch present */ #define FLASH_FILL 0x04 /* Flash is in Fill mode */ #define FLASH_READY 0x08 /* Flash is charged and ready */ #define LOW_RES 0x10 /* Switch is in low res position */ #define DUAL_IRIS 0x20 /* Dual Iris is present */ #define AC_PRESENT 0x40 /* AC Adapter is connected */ #define FLASH_ON 0x80 /* Flash is on */ uint8_t feature_bits_hi; #define IRIS_ADJUST 0x1f #define BAT_VALID 0x20 /* Battery level valid */ #define NO_PWR_LIGHT 0x40 /* No power light */ #define BAT_DIGITAL 0x80 /* Battery level is binary */ uint8_t battery_level; /* Battery level */ uint8_t battery_zero; /* Battery dead level */ uint8_t battery_full; /* Battery full level */ }; /* Send Image */ struct mesa_image_arg { uint16_t row; /* row to start sending */ uint16_t start; /* 0x1e */ uint8_t send; /* 0x04 */ uint8_t skip; /* 0x00 */ uint16_t repeat; /* 0xA0 */ uint8_t row_cnt; /* 0x20 */ uint8_t inc1; /* 0x01 */ uint8_t inc2; /* 0x80 */ uint8_t inc3; /* 0x00 */ uint8_t inc4; /* 0x00 */ }; struct mesa_id { uint16_t man; /* 12bit manufacturer ID */ uint16_t year; /* year of manufacture - 1996 */ uint8_t ver; /* 4bit version */ uint8_t week; /* week of manufacture 0 - 51 */ }; #define MESA_THUMB_SZ (64*60) /* (64x60x4)/8 */ struct mesa_image_info { uint32_t num_bytes; /* size of image in eeprom */ uint8_t standard_res; /* image is standard res */ }; #define MESA_VERSION_SZ 7 /* min. buffer length needed for mesa_version */ #define MESA_EEPROM_SZ 49 /* min. buffer length needed for mesa_eeprom_info */ void mesa_flush( GPPort *port, int timeout ); int mesa_read( GPPort *port, uint8_t *b, int s, int timeout2, int timeout1 ); int mesa_send_command( GPPort *port, uint8_t *cmd, int n, int ackTimeout ); int mesa_port_open( GPPort *port ); int mesa_port_close( GPPort *port ); int mesa_reset( GPPort *port ); int mesa_set_speed( GPPort *port, int speed ); int mesa_version( GPPort *port,char *version_string); int mesa_transmit_test( GPPort *port ); int mesa_ram_test( GPPort *port ); int mesa_read_row( GPPort *port, uint8_t *r, struct mesa_image_arg *s ); int mesa_snap_image( GPPort *port, uint16_t exposure ); int mesa_black_levels( GPPort *port, uint8_t r[2] ); int mesa_snap_view( GPPort *port, uint8_t *r, unsigned int hi_res, unsigned int zoom, unsigned int row, unsigned int col, uint16_t exposure, uint8_t download ); int mesa_set_stopbits( GPPort *port, unsigned int bits ); int mesa_download_view( GPPort *port, uint8_t *r, uint8_t download ); int mesa_snap_picture( GPPort *port, uint16_t exposure ); int mesa_send_id( GPPort *port, struct mesa_id *id ); int mesa_modem_check( GPPort *port ); int mesa_read_image( GPPort *port, uint8_t *r, struct mesa_image_arg *s ); int mesa_recv_test( GPPort *port, uint8_t r[6] ); int mesa_get_image_count( GPPort *port ); int mesa_load_image( GPPort *port, int image); int mesa_eeprom_info( GPPort *port, int long_read, uint8_t info[MESA_EEPROM_SZ] ); int32_t mesa_read_thumbnail( GPPort *port, int picture, uint8_t *image ); int mesa_read_features( GPPort *port, struct mesa_feature *f ); int mesa_battery_check( GPPort *port ); int32_t mesa_read_image_info( GPPort *port, int i, struct mesa_image_info *info ); uint8_t * mesa_get_image( GPPort *port, int image ); #endif /* MESALIB_H */ libgphoto2-2.5.9/camlibs/dimera/CREDITS0000644000175000001440000000047412557123324014421 00000000000000$Id$ Brian Beattie Original gphoto 0.4 driver Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port Gregg Berg Driver patches libgphoto2-2.5.9/camlibs/dimera/dimera3500.c0000644000175000001440000007002112610415536015310 00000000000000/* * Program: gPhoto2 driver for Mustek VDC 3500/Relisys Dimera 3500 * * Note: * This software was created with * the help of proprietary information belonging * to StarDot Technologies. * * Author: * Brian Beattie http://www.beattie-home.net * * Contributors: * Chuck Homic * Converting raw camera images to RGB * Dan Fandrich Dan * Information on protocol, raw image format, gphoto2 port * Gregg Berg GDB * Rewrite of Dimera_Get_Full_Image() GDB * */ #define _BSD_SOURCE #include "config.h" #include "mesalib.h" #include "dimeratab.h" #include #include #include #include <_stdint.h> #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "dimera" #ifndef MAX # define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif #define IMAGE_NAME_TEMPLATE "dimera%02i.ppm" #define RAM_IMAGE_TEMPLATE "temp.ppm" /* actually, sometimes this is a PGM */ /* PNM headers */ #define VIEWFIND_SZ (128*96) #define VIEW_TYPE 251 #define DEFAULT_EXPOSURE (50000/30) /* 1/30 of a second */ #define MAX_EXPOSURE (50000/4) #define MIN_EXPOSURE 1 static const char Dimera_thumbhdr[] = "P5\n# Dimera 3500 Thumbnail written by gphoto2\n64 48\n255\n"; static const char Dimera_viewhdr[] = "P5\n# Dimera 3500 Viewfinder written by gphoto2\n128 96\n15\n"; static const char Dimera_finehdr[] = "P6\n# Dimera 3500 Image written by gphoto2\n640 480\n255\n"; static const char Dimera_stdhdr[] = "P6\n# Dimera 3500 Image written by gphoto2\n320 240\n255\n"; /* Forward references */ static uint8_t * Dimera_Get_Full_Image (int picnum, long *size, int *width, int *height, Camera *camera, GPContext *context); static uint8_t * Dimera_Get_Thumbnail( int picnum, long *size, Camera *camera ); static uint8_t * Dimera_Preview( long *size, Camera *camera, GPContext *context ); /* Gphoto2 */ struct _CameraPrivateLibrary { unsigned exposure; int auto_exposure; int auto_flash; }; static const char *models[] = { "Mustek:VDC-3500", "Relisys:Dimera 3500", "Trust:DC-3500", NULL }; int camera_id (CameraText *id) { strcpy(id->text, "dimera3500"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { int x=0; CameraAbilities a; while (models[x]) { memset (&a, 0, sizeof(a)); strcpy(a.model, models[x]); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 14400; a.speed[2] = 19200; a.speed[3] = 38400; a.speed[4] = 57600; a.speed[5] = 76800; a.speed[6] = 115200; a.speed[7] = 0; a.operations = GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CONFIG; a.file_operations = GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; gp_abilities_list_append(list, a); x++; } return (GP_OK); } static int camera_exit(Camera *camera, GPContext *context) { return mesa_port_close(camera->port); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int count; /* We only support root folder */ if (strcmp (folder, "/")) { gp_context_error (context, _("Only root folder is supported - " "you requested a file listing for folder '%s'."), folder); return (GP_ERROR_DIRECTORY_NOT_FOUND); } count = mesa_get_image_count (camera->port); if (count < 0) { gp_context_error (context, _("Problem getting number of images")); return (count); } /* * Create pseudo file names for each picture in the camera, including * the temporary picture in RAM, which, unfortunately, might not always * be available. * * We don't add anything to the filesystem here - the filesystem does * that for us. */ CHECK (gp_filesystem_append (fs, "/", RAM_IMAGE_TEMPLATE, context)); return (gp_list_populate (list, IMAGE_NAME_TEMPLATE, count)); } static int conversion_chuck (const unsigned int width, const unsigned int height, const unsigned char *src,unsigned char *dst ) { int x, y; int p1, p2, p3, p4; int red, green, blue; /* * Added by Chuck -- 12-May-2000 * Convert the colors based on location, and my wacky color table: * * Convert the 4 cells into a single RGB pixel. * Colors are encoded as follows: * * 000000000000000000........33 * 000000000011111111........11 * 012345678901234567........89 * ---------------------------- * 000 RGRGRGRGRGRGRGRGRG........RG * 001 GBGBGBGBGBGBGBGBGB........GB * 002 RGRGRGRGRGRGRGRGRG........RG * 003 GBGBGBGBGBGBGBGBGB........GB * ... ............................ * 238 RGRGRGRGRGRGRGRGRG........RG * 239 GBGBGBGBGBGBGBGBGB........GB * * NOTE. Above is 320x240 resolution. Just expand for 640x480. * * Use neighboring cells to generate color values for each pixel. * The neighbors are the (x-1, y-1), (x, y-1), (x-1, y), and (x, y). * The exception is when x or y are zero then the neighors used are * the +1 cells. */ for (y = 0;y < height; y++) for (x = 0;x < width; x++) { p1 = ((y==0?y+1:y-1)*width) + (x==0?x+1:x-1); p2 = ((y==0?y+1:y-1)*width) + x; p3 = ( y *width) + (x==0?x+1:x-1); p4 = ( y *width) + x; switch (((y & 1) << 1) + (x & 1)) { case 0: /* even row, even col, red */ blue = blue_table [src[p1]]; green = green_table[src[p2]]; green+= green_table[src[p3]]; red = red_table [src[p4]]; break; case 1: /* even row, odd col, green */ green = green_table[src[p1]]; blue = blue_table [src[p2]]; red = red_table [src[p3]]; green+= green_table[src[p4]]; break; case 2: /* odd row, even col, green */ green = green_table[src[p1]]; red = red_table [src[p2]]; blue = blue_table [src[p3]]; green+= green_table[src[p4]]; break; case 3: /* odd row, odd col, blue */ default: red = red_table [src[p1]]; green = green_table[src[p2]]; green+= green_table[src[p3]]; blue = blue_table [src[p4]]; break; } *dst++ = (unsigned char) red; *dst++ = (unsigned char) (green/2); *dst++ = (unsigned char) blue; } return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context ) { Camera *camera = user_data; int num, width, height; uint8_t *data, *newdata; long int size; /* Retrieve the number of the photo on the camera */ if (strcmp(filename, RAM_IMAGE_TEMPLATE) == 0) /* Magic file name specifies magic image number */ num = RAM_IMAGE_NUM; else num = gp_filesystem_number(camera->fs, "/", filename, context); if (num < 0) return num; switch (type) { case GP_FILE_TYPE_NORMAL: data = Dimera_Get_Full_Image (num, &size, &width, &height, camera, context); if (!data) return GP_ERROR; gp_file_set_mime_type (file, GP_MIME_PPM); if (width == 640) gp_file_append (file, Dimera_finehdr, strlen(Dimera_finehdr)); else gp_file_append (file, Dimera_stdhdr, strlen(Dimera_stdhdr)); newdata = malloc(size*3); if (!newdata) return (GP_ERROR_NO_MEMORY); conversion_chuck (width, height, data, newdata); gp_file_append (file, (char *)newdata, size*3); free (newdata); free (data); break; break; case GP_FILE_TYPE_RAW: data = Dimera_Get_Full_Image (num, &size, &width, &height, camera, context); if (!data) return GP_ERROR; gp_file_set_data_and_size (file, (char *)data, size); /* will take over data ptr ownership */ gp_file_set_mime_type (file, GP_MIME_RAW); gp_file_adjust_name_for_mime_type (file); break; case GP_FILE_TYPE_PREVIEW: data = Dimera_Get_Thumbnail (num, &size, camera); if (!data) return GP_ERROR; gp_file_set_data_and_size (file, (char *)data, size); /* will take over data ptr ownership */ gp_file_set_mime_type (file, GP_MIME_PGM); gp_file_adjust_name_for_mime_type (file); break; default: gp_context_error (context, _("Image type is not supported")); return (GP_ERROR_NOT_SUPPORTED); } return GP_OK; } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int num, std_res; num = gp_filesystem_number (fs, folder, filename, context); if (num < 0) return num; if ( (std_res = mesa_read_image_info( camera->port, num, NULL )) < 0 ) { gp_log(GP_LOG_ERROR, "dimera/dimera3500", "Can't get Image Info"); gp_context_error (context, _("Problem getting image information")); return std_res; } info->preview.fields = GP_FILE_INFO_ALL; strcpy(info->preview.type, GP_MIME_PGM); info->preview.size = MESA_THUMB_SZ + sizeof( Dimera_thumbhdr ) - 1; info->preview.width = 64; info->preview.height = 48; info->file.fields = GP_FILE_INFO_TYPE|GP_FILE_INFO_PERMISSIONS|GP_FILE_INFO_WIDTH|GP_FILE_INFO_HEIGHT|GP_FILE_INFO_SIZE; strcpy(info->file.type, GP_MIME_PPM); info->file.permissions = GP_FILE_PERM_READ; if (std_res) { info->file.width = 320; info->file.height = 240; } else { info->file.width = 640; info->file.height = 480; } info->file.size = info->file.height*info->file.width*3 + sizeof( Dimera_finehdr ) - 1; return GP_OK; } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { if (type != GP_CAPTURE_IMAGE) { gp_context_error (context, _("Capture type is not supported")); return (GP_ERROR_NOT_SUPPORTED); } if (camera->pl->auto_flash) { CHECK (mesa_snap_picture( camera->port, camera->pl->exposure*4 )); } else { CHECK (mesa_snap_image( camera->port, camera->pl->exposure*4 )); } /* * User must download special RAM_IMAGE_TEMPLATE file. */ strncpy (path->folder, "/", sizeof (path->folder)); strncpy (path->name, RAM_IMAGE_TEMPLATE, sizeof (path->name)); return (GP_OK); } static int camera_capture_preview(Camera *camera, CameraFile *file, GPContext *context) { long size; uint8_t *data; gp_file_set_mime_type (file, GP_MIME_PGM); data = Dimera_Preview( &size, camera, context); if (!data) return GP_ERROR; return gp_file_set_data_and_size (file, (char *)data, size); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int num, eeprom_capacity, hi_pics_max, lo_pics_max; struct mesa_id Id; char version_string[MESA_VERSION_SZ]; char battery_string[80]; struct mesa_feature features; uint8_t eeprom_info[MESA_EEPROM_SZ]; /* Table of EEPROM capacities in Mb based on part compatibility ID */ static uint8_t const eeprom_size_table[14] = { /* ID Mb */ /* 00 */ 0, /* 01 */ 8, /* 02 */ 8, /* 03 */ 0, /* 04 */ 0, /* 05 */ 8, /* 06 */ 16, /* 07 */ 0, /* 08 */ 1, /* 09 */ 2, /* 0A */ 4, /* 0B */ 1, /* 0C */ 2, /* 0D */ 4 }; num = mesa_get_image_count(camera->port); if (num < 0) { gp_context_error (context, _("Problem getting number of images")); return num; } mesa_send_id( camera->port, &Id ); mesa_version(camera->port, version_string); mesa_read_features(camera->port, &features); mesa_eeprom_info(camera->port, 1, eeprom_info); eeprom_capacity = 0; if (eeprom_info[4] == 0xc9) { if (eeprom_info[11] < sizeof(eeprom_size_table)) eeprom_capacity = eeprom_size_table[eeprom_info[11]]; } /* Estimate the number of pictures that this size of flash can hold */ hi_pics_max = eeprom_capacity / 2; lo_pics_max = (eeprom_capacity * 13) / 8; if (features.feature_bits_lo & AC_PRESENT) battery_string[0] = '\0'; else snprintf( battery_string, sizeof(battery_string), _(" (battery is %d%% full)"), mesa_battery_check(camera->port)); snprintf( summary->text, sizeof(summary->text), _("Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: " "%s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n"), version_string, Id.year, Id.week, Id.man, Id.ver, num, hi_pics_max, lo_pics_max, (features.feature_bits_lo & HAVE_FLASH) ? _("Flash") : _("No Flash"), (features.feature_bits_lo & DUAL_IRIS) ? _("Dual Iris") : _("No Dual Iris"), (features.feature_bits_lo & HAVE_RES_SW) ? _("Resolution Switch") : _("No Resolution Switch"), (features.feature_bits_hi & NO_PWR_LIGHT) ? _("No Power Light") : "Power Light", (features.feature_bits_lo & FLASH_ON) ? _("ON") : _("OFF"), (features.feature_bits_lo & FLASH_READY) ? _("ready") : _("Not ready"), (features.feature_bits_lo & FLASH_FILL) ? _("in fill mode") : _("Not in fill mode"), (features.feature_bits_lo & LOW_RES) ? _("low (320x240)") : _("high (640x480)"), (features.feature_bits_lo & AC_PRESENT) ? _("externally") : _("internally"), battery_string ); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" )); return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy(about->text, _( "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" )); return GP_OK; } /* Download a thumbnail image from the camera and return it in a malloced buffer with PGM headers */ static uint8_t * Dimera_Get_Thumbnail( int picnum, long *size, Camera *camera ) { int32_t r; uint8_t *image; if ( !(image = (unsigned char *) malloc( MESA_THUMB_SZ + sizeof( Dimera_thumbhdr ) - 1 )) ) { gp_log(GP_LOG_ERROR, "dimera/dimera3500", "Get Thumbnail, allocation failed" ); *size = 0; return NULL; } /* set image size */ *size = MESA_THUMB_SZ + sizeof( Dimera_thumbhdr ) - 1; /* set image header */ memcpy( image, Dimera_thumbhdr, sizeof( Dimera_thumbhdr ) - 1 ); if ( (r = mesa_read_thumbnail( camera->port, picnum, image + sizeof( Dimera_thumbhdr ) - 1 )) < 0 ) { gp_log(GP_LOG_ERROR, "dimera/dimera3500", "Get Thumbnail, read of thumbnail failed" ); free( image ); *size = 0; return NULL; } /*return (0 != (r&0x1000000));*/ return image; } /* Download a raw Bayer image from the camera and return it in a malloced buffer */ static uint8_t * Dimera_Get_Full_Image (int picnum, long *size, int *width, int *height, Camera *camera, GPContext *context) { static struct mesa_image_arg ia; int32_t r; uint8_t *b, *rbuffer = NULL; int hires, s, retry; unsigned int id; *size = 0; *width = 0; *height = 0; if ( picnum != RAM_IMAGE_NUM ) { GP_DEBUG("Getting Image Info"); if ( (r = mesa_read_image_info( camera->port, picnum, NULL )) < 0 ) { gp_log(GP_LOG_ERROR, "dimera/dimera3500", "Can't get Image Info"); gp_context_error (context, _("Problem getting image information")); return NULL; } if ( r ) { hires = FALSE; *height = 240; *width = 320; } else { hires = TRUE; *height = 480; *width = 640; } GP_DEBUG("Loading Image"); if ( mesa_load_image( camera->port, picnum ) != GP_OK ) { gp_log(GP_LOG_ERROR, "dimera/dimera3500", "Image Load failed"); gp_context_error (context, _("Problem reading image from flash")); return NULL; } } else { /* load the snapped image */ hires = TRUE; *height = 480; *width = 640; } *size = *height * *width; /* 8 bits per pixel in raw CCD format */ GP_DEBUG("Downloading Image"); rbuffer = (uint8_t *)malloc( *size ); if ( rbuffer == NULL ) { gp_context_error (context, _("Out of memory")); return NULL; } ia.start = 28; ia.send = 4; ia.skip = 0; ia.repeat = ( hires ? 160 : 80 ); ia.row_cnt = 40; ia.inc1 = 1; ia.inc2 = 128; ia.inc3 = ia.inc4 = 0; /* due to reports of mesa_read_image not working for some cameras */ /* this is changed to use mesa_read_row */ #if 0 id = gp_context_progress_start (context, *height + 4, _("Downloading image...")); for ( ia.row = 4, b = rbuffer; ia.row < (height + 4) ; ia.row += ia.row_cnt, b += s ) { GP_DEBUG("Downloading Image"); for ( retry = 10;; ) { s = mesa_read_image( camera->port, b, &ia ); if( s > 0) break; if ( (s == GP_ERROR_TIMEOUT || s == GP_ERROR_CORRUPTED_DATA) && --retry > 0) { GP_DEBUG( "Dimera_Get_Full_Image: retrans"); continue; } GP_DEBUG( "Dimera_Get_Full_Image: read error %d (retry %d)",s,retry); /* retry count exceeded, or other error */ free( rbuffer ); *size = 0; gp_context_error (context, _("Problem downloading image")); return NULL; } gp_context_progress_update (context, id, ia.row); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { free( rbuffer ); *size = 0; gp_context_error (context, _("User canceled download")); return NULL; } } #else id = gp_context_progress_start (context, *height + 4, _("Downloading image...")); for ( ia.row = 4, b = rbuffer; ia.row < (*height + 4) ; ia.row++, b += s ) { GP_DEBUG("Downloading Image"); for ( retry = 10;; ) { s = mesa_read_row( camera->port, b, &ia ); if( s > 0) break; if ( (s == GP_ERROR_TIMEOUT || s == GP_ERROR_CORRUPTED_DATA) && --retry > 0) { GP_DEBUG("Dimera_Get_Full_Image: retrans"); continue; } GP_DEBUG( "Dimera_Get_Full_Image: read error %d (retry %d)",s,retry); /* retry count exceeded, or other error */ free( rbuffer ); *size = 0; gp_context_error (context, _("Problem downloading image")); return NULL; } gp_context_progress_update (context, id, ia.row); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { free( rbuffer ); *size = 0; return NULL; } } gp_context_progress_stop (context, id); #endif return (rbuffer); } #ifdef TOO_FINICKY_AUTO_EXPOSURE /* Table of exposure curves of the form: y = M*log(x) + b where y is the average brightness of an image [0..15] x is the exposure setting [1..50000] M and b are constants for each curve Each scene is made to fit one of these characteristic curves. The appropriate shutter speed (exposure) value can be calculated once the correct curve is known, using the equation: x = exp((y + b) / M) where y is the desired average brightness (probably 8). We need more, and more accurate, curves here to make this work. You'd need a better way than trial and error to generate a family of characteristic curves. */ static struct { float M; float b; } exposure_tables[] = { {2.6, -11}, {2.8, -15}, {2.9, -19}, {1.5, -9}, {0.82, -5}, {0, 0} }; /* * Calculate a new exposure value for this picture * exposure is 0..50000 and brightness is 0..255 */ static unsigned calc_new_exposure(unsigned exposure, unsigned brightness) { int i; /* Choose the correct curve for this camera scene */ for (i=0; exposure_tables[i].M; ++i) { GP_DEBUG( "brightness %d, %f ", brightness, exp((double)((brightness/16.0) - exposure_tables[i].b) / exposure_tables[i].M)); if (exp((double)((brightness/16.0) - exposure_tables[i].b) / exposure_tables[i].M) > exposure) /* We found the best curve for this scene */ break; } i = MAX(i-1, 0); /* Using this curve, calculate the optimum exposure */ return MAX(MIN_EXPOSURE,MIN(MAX_EXPOSURE,(unsigned) exp((double)(8.0 - exposure_tables[i].b) / exposure_tables[i].M))); } #else /* Use linear interpolation to choose a better exposure level for this scene */ static unsigned calc_new_exposure(unsigned exposure, unsigned brightness) { return MAX(MIN_EXPOSURE,MIN(MAX_EXPOSURE,(exposure * 128L) / brightness)); } #endif /* Download a live image from the camera and return it in a malloced buffer with PGM headers */ static uint8_t * Dimera_Preview( long *size, Camera *camera, GPContext *context ) { uint8_t buffer[VIEWFIND_SZ/2], *p; int i; uint8_t *image; uint32_t exposure_total; unsigned brightness; if ( !(image = (unsigned char *) malloc( VIEWFIND_SZ + sizeof( Dimera_viewhdr ) - 1 )) ) { gp_log(GP_LOG_ERROR, "dimera/dimera3500", "Get Preview, allocation failed" ); gp_context_error (context, _("Out of memory")); return NULL; } /* set image size */ *size = VIEWFIND_SZ + sizeof( Dimera_viewhdr ) - 1; /* set image header */ memcpy( image, Dimera_viewhdr, sizeof( Dimera_viewhdr ) - 1 ); if ( mesa_snap_view( camera->port, buffer, TRUE, 0, 0, 0, camera->pl->exposure, VIEW_TYPE) < 0 ) { gp_log(GP_LOG_ERROR, "dimera/dimera3500", "Get Preview, mesa_snap_view failed" ); free (image); gp_context_error (context, _("Problem taking live image")); return NULL; } /* copy the buffer, splitting the pixels up */ exposure_total = 0; for ( p = image + sizeof( Dimera_viewhdr ) - 1, i = 0; i < (VIEWFIND_SZ/2) ; i++ ) { *p++ = buffer[i] >> 4; *p++ = buffer[i] & 0xf; exposure_total += (buffer[i] >> 4) + (buffer[i] & 0xf); } /* Automatic exposure control */ /* Current picture brightness, where 0 is is dark and 255 is bright */ brightness = exposure_total / (VIEWFIND_SZ / 16); GP_DEBUG( "Average pixel brightness %f, Current exposure value: %d", brightness / 16.0, camera->pl->exposure); if (camera->pl->auto_exposure && (brightness < 96 || brightness > 160)) { /* Picture brightness needs to be corrected for next time */ camera->pl->exposure = calc_new_exposure(camera->pl->exposure, brightness); GP_DEBUG( "New exposure value: %d", camera->pl->exposure); } return image; } static int camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *t, *section; char str[16]; GP_DEBUG ("camera_get_config()"); gp_widget_new (GP_WIDGET_WINDOW, _("Camera Configuration"), window); gp_widget_new (GP_WIDGET_SECTION, _("Exposure"), §ion); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_TOGGLE, _("Automatic exposure adjustment on preview"), &t); gp_widget_set_value (t, &camera->pl->auto_exposure); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_TEXT, _("Exposure level on preview"), &t); sprintf(str, "%d", camera->pl->exposure); gp_widget_set_value (t, str); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_SECTION, _("Flash"), §ion); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_TOGGLE, _("Automatic flash on capture"), &t); gp_widget_set_value (t, &camera->pl->auto_flash); gp_widget_append (section, t); return GP_OK; } static int camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *w; char *wvalue; int val; char str[16]; GP_DEBUG ("camera_set_config()"); gp_widget_get_child_by_label (window, _("Exposure level on preview"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); camera->pl->exposure = MAX(MIN_EXPOSURE,MIN(MAX_EXPOSURE,atoi(wvalue))); gp_setting_set ("dimera3500", "exposure", wvalue); GP_DEBUG ("set exposure"); } gp_widget_get_child_by_label (window, _("Automatic exposure adjustment on preview"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &val); camera->pl->auto_exposure = val; sprintf(str, "%d", val); gp_setting_set ("dimera3500", "auto_exposure", str); GP_DEBUG ("set auto_exposure"); } gp_widget_get_child_by_label (window, _("Automatic flash on capture"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &val); camera->pl->auto_flash = val; sprintf(str, "%d", val); gp_setting_set ("dimera3500", "auto_flash", str); GP_DEBUG ("set auto_flash"); } GP_DEBUG ("done configuring driver."); return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; int ret, selected_speed; char buf[1024]; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->capture = camera_capture; camera->functions->capture_preview = camera_capture_preview; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; /* Get the settings and remember the selected speed */ gp_port_get_settings (camera->port, &settings); selected_speed = settings.serial.speed; /* TODO: camera->pl can probably be allocated at the end to simplify */ camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) { gp_context_error (context, _("Out of memory")); return (GP_ERROR_NO_MEMORY); } /* Set the default exposure */ if (gp_setting_get ("dimera3500", "exposure", buf) == GP_OK) camera->pl->exposure = atoi(buf); else camera->pl->exposure = DEFAULT_EXPOSURE; /* Set automatic exposure enable setting for capture preview mode */ if (gp_setting_get ("dimera3500", "auto_exposure", buf) == GP_OK) camera->pl->auto_exposure = atoi(buf); else camera->pl->auto_exposure = 1; /* Set flag to use flash, if necessary, when capturing picture */ if (gp_setting_get ("dimera3500", "auto_flash", buf) == GP_OK) camera->pl->auto_flash = atoi(buf); else camera->pl->auto_flash = 1; GP_DEBUG("Opening port"); if ( (ret = mesa_port_open(camera->port)) != GP_OK) { gp_log(GP_LOG_ERROR, "dimera/dimera3500", "Camera Open Failed"); free (camera->pl); camera->pl = NULL; gp_context_error (context, _("Problem opening port")); return ret; } GP_DEBUG("Resetting camera"); if ( (ret = mesa_reset(camera->port)) != GP_OK ) { gp_log(GP_LOG_ERROR, "dimera/dimera3500", "Camera Reset Failed"); free (camera->pl); camera->pl = NULL; gp_context_error (context, _("Problem resetting camera")); return ret; } GP_DEBUG("Setting speed"); if ( (ret = mesa_set_speed(camera->port, selected_speed)) != GP_OK ) { gp_log(GP_LOG_ERROR, "dimera/dimera3500", "Camera Speed Setting Failed"); free (camera->pl); camera->pl = NULL; gp_context_error (context, _("Problem setting camera communication speed")); return ret; } GP_DEBUG("Checking for modem"); switch ( ret = mesa_modem_check(camera->port) ) { case GP_ERROR_IO: case GP_ERROR_TIMEOUT: gp_log(GP_LOG_ERROR, "dimera/dimera3500", "No or Unknown Response"); free (camera->pl); camera->pl = NULL; gp_context_error (context, _("No response from camera")); return GP_ERROR_TIMEOUT; case GP_ERROR_MODEL_NOT_FOUND: gp_log(GP_LOG_ERROR, "dimera/dimera3500", "Probably a modem"); free (camera->pl); camera->pl = NULL; gp_context_error (context, _("Looks like a modem, not a camera")); return GP_ERROR_MODEL_NOT_FOUND; case GP_OK: break; default: /* Hopefully, gp_camera_set_error was called for this error */ return ret; } /* Tell the filesystem where to get listings and info from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); return (GP_OK); } libgphoto2-2.5.9/camlibs/toshiba/0000755000175000001440000000000012623156266013651 500000000000000libgphoto2-2.5.9/camlibs/toshiba/pdrm11/0000755000175000001440000000000012623156270014750 500000000000000libgphoto2-2.5.9/camlibs/toshiba/pdrm11/library.c0000644000175000001440000000720712610415536016505 00000000000000/* library.c -- copied from the template * * Copyright 2003 David Hogue * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include "pdrm11.h" #include <_stdint.h> #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "Toshiba" int camera_id (CameraText *id) { strcpy(id->text, "toshiba-pdrm11"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); strcpy(a.model, "Toshiba:PDR-M11"); a.status = GP_DRIVER_STATUS_TESTING; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = 0x1132; a.usb_product = 0x4337; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; gp_abilities_list_append(list, a); return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { int picNum; Camera *camera = data; switch(type){ case GP_FILE_TYPE_PREVIEW: case GP_FILE_TYPE_NORMAL: picNum = gp_filesystem_number(fs, folder, filename, context) + 1; return pdrm11_get_file (fs, filename, type, file, camera->port, picNum); default: return GP_ERROR_NOT_SUPPORTED; } } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { int picNum; Camera *camera = data; picNum = gp_filesystem_number(fs, folder, filename, context) + 1; return pdrm11_delete_file(camera->port, picNum); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n")); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; return pdrm11_get_filenames(camera->port, list); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func }; int camera_init (Camera *camera, GPContext *context) { /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->about = camera_about; /* Now, tell the filesystem where to get lists, files and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); return pdrm11_init(camera->port); } libgphoto2-2.5.9/camlibs/toshiba/pdrm11/pdrm11.c0000644000175000001440000001550512610415536016145 00000000000000/* pdrm11.c -- interfaces directly with the camera * * Copyright 2003 David Hogue * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include "pdrm11.h" #include #include #include #include #include "gphoto2-endian.h" #define GP_MODULE "pdrm11" #define ETIMEDOUT 110 static int pdrm11_select_file(GPPort *port, uint16_t file); int pdrm11_init(GPPort *port) { unsigned char buf[20]; int timeout = 50; gp_port_set_timeout(port,1000); /* exactly what windows driver does */ gp_port_usb_msg_read (port, 0x01, PDRM11_CMD_READY, 0, (char *)buf, 4); gp_port_usb_msg_write(port, 0x01, PDRM11_CMD_PING3, 0, NULL, 0); gp_port_usb_msg_read (port, 0x01, PDRM11_CMD_READY, 0, (char *)buf, 4); gp_port_usb_msg_write(port, 0x01, PDRM11_CMD_INIT1, 0, NULL, 0); gp_port_usb_msg_read (port, 0x01, PDRM11_CMD_READY, 0, (char *)buf, 4); gp_port_usb_msg_write(port, 0x01, PDRM11_CMD_INIT2, 0, NULL, 0); gp_port_usb_msg_read (port, 0x01, PDRM11_CMD_READY, 0, (char *)buf, 4); gp_port_usb_msg_read (port, 0x01, PDRM11_CMD_ZERO, 0, (char *)buf, 2); if(buf[0] || buf[1]) { /* I haven't seen anything other than 00 00 yet * unless the connection is bad */ GP_DEBUG("PDRM11_CMD_ZERO: %x %x", buf[0], buf[1]); return(GP_ERROR); } /* wait til the camera is ready */ do { usleep(200000); GP_DEBUG("waiting..."); timeout--; if( gp_port_usb_msg_read(port, 0x01, PDRM11_CMD_READY, 0, (char *)buf, 4) == -ETIMEDOUT ) timeout = 0; } while( !((buf[3] == 0x25) && (buf[0] == 1)) && timeout ); /* what good is this? */ usleep(400000); if(!timeout) return(GP_ERROR_TIMEOUT); else return(GP_OK); } int pdrm11_get_filenames(GPPort *port, CameraList *list) { int i, j; uint32_t numPics; char name[20]; char buf[30]; gp_port_set_timeout(port, 10000); CHECK(gp_port_usb_msg_read(port, 0x01, PDRM11_CMD_GET_NUMPICS, 0, buf, 10)); /* trying to remain endian friendly */ numPics = le16atoh(&buf[2]) + (le16atoh(&buf[0]) * 1024); GP_DEBUG("found %d pictures", numPics); for(i=1; i 00 00 00 ae00 2 w 01 00 (always follows a b200) b200 2 w <2picNum> (select a picture) b600 10 r 00 00 00 ?? ?? ?? ?? b900 26 r 00 00 <12filename> 20 00 20 00 <4LengthOfPic> 64 46 3f 2e ba40 2 r 00 00 (used in delete) bf01 2 r 00 00 d000 4 r 01 30 00 25 (check if camera is ready? (30 and 00 don't change 01 and 25 signal ready) e600 14 r ?? ?? ?? ?? ?? ?? ?? <2ThumbSize> ?? ?? ?? ?? ?? d700 0 w ping d800 0 w ping (there is a d800 followed by a d701) d701 0 w (ping?) libgphoto2-2.5.9/camlibs/toshiba/pdrm11/pdrm11.h0000644000175000001440000000541412610415536016150 00000000000000/* pdrm11.h -- interfaces directly with the camera * * Copyright 2003 David Hogue * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __PDRM11_H__ #define __PDRM11_H__ #include "config.h" #include #include <_stdint.h> /* once in a while a gp_port command will fail and then work on a * second try this tries to run the command twice and returns the * error code if it fails the second time */ #define CHECK(result) { \ int res; \ res = result; \ if (res < 0) { \ res = result; \ if (res < 0) { \ GP_DEBUG("%s--%d: %s returned 0x%x", __FILE__, __LINE__, #result, res); \ return res; \ } \ } \ } #define CHECK_AND_FREE(result, buf) { \ int res; \ res = result; \ if (res < 0) { \ res = result; \ if (res < 0) { \ GP_DEBUG("%s--%d: %s returned 0x%x", __FILE__, __LINE__, #result, res); \ free (buf); \ return res; \ } \ } \ } #define PDRM11_CMD_INIT1 htole16( 0x1f40 ) #define PDRM11_CMD_INIT2 htole16( 0x1f30 ) #define PDRM11_CMD_GET_PIC htole16( 0x9300 ) #define PDRM11_CMD_GET_THUMB htole16( 0x9b00 ) #define PDRM11_CMD_GET_INFO htole16( 0xad00 ) #define PDRM11_CMD_SELECT_PIC2 htole16( 0xae00 ) #define PDRM11_CMD_SELECT_PIC1 htole16( 0xb200 ) #define PDRM11_CMD_GET_NUMPICS htole16( 0xb600 ) #define PDRM11_CMD_GET_FILENAME htole16( 0xb900 ) #define PDRM11_CMD_GET_FILESIZE htole16( 0xb900 ) #define PDRM11_CMD_DELETE htole16( 0xba40 ) #define PDRM11_CMD_ZERO htole16( 0xbf01 ) /* not sure what this is, but it almost always returns 00 00 */ #define PDRM11_CMD_READY htole16( 0xd000 ) #define PDRM11_CMD_GET_THUMBSIZE htole16( 0xe600 ) #define PDRM11_CMD_PING1 htole16( 0xd700 ) #define PDRM11_CMD_PING2 htole16( 0xd800 ) #define PDRM11_CMD_PING3 htole16( 0xd701 ) #define PDRM11_TYPE_JPEG 1 #define PDRM11_TYPE_TIFF 2 int pdrm11_init(GPPort *port); int pdrm11_get_file(CameraFilesystem *fs, const char *filename, CameraFileType type, CameraFile *file, GPPort *port, uint16_t picNum); int pdrm11_get_filenames(GPPort *port, CameraList *list); int pdrm11_delete_file(GPPort *port, int picNum); #endif /* __PDRM11_H__ */ libgphoto2-2.5.9/camlibs/canon/0000755000175000001440000000000012623156270013311 500000000000000libgphoto2-2.5.9/camlibs/canon/canon.h0000644000175000001440000005461512610415524014507 00000000000000/* * canon.h - Canon "native" operations. * * Written 1999 by Wolfgang G. Reissnegger and Werner Almesberger * */ #ifndef _CANON_H #define _CANON_H #ifdef CANON_EXPERIMENTAL_UPLOAD # ifdef __GCC__ # warning COMPILING WITH EXPERIMENTAL UPLOAD FEATURE # endif #endif /** * canonPowerStatus: * @CAMERA_POWER_BAD: Value returned if power source is bad * (i.e. battery is low). * @CAMERA_POWER_OK: Value returned if power source is OK. * * Battery status values * */ typedef enum { CAMERA_POWER_BAD = 4, CAMERA_POWER_OK = 6 } canonPowerStatus; /* #define CAMERA_ON_AC 16 obsolete; we now just use*/ /* #define CAMERA_ON_BATTERY 48 the bit that makes the difference */ /** * CAMERA_MASK_BATTERY * * Bit mask to use to find battery/AC flag * */ #define CAMERA_MASK_BATTERY 32 /** * canonJpegMarkerCode: * @JPEG_ESC: Byte value to flag possible JPEG code. * @JPEG_BEG: Byte value which, immediately after %JPEG_ESC, marks the start * of JPEG image data in a JFIF file. * @JPEG_SOS: Byte value to flag a JPEG SOS marker. * @JPEG_A50_SOS: Byte value to flag a JPEG SOS marker in a file from * a PowerShot A50 camera. * @JPEG_END: Byte code to mark the end of a JPEG image? * * Flags to find important points in JFIF or EXIF files * */ typedef enum { JPEG_ESC = 0xFF, JPEG_A50_SOS = 0xC4, JPEG_BEG = 0xD8, JPEG_SOI = 0xD8, JPEG_END = 0xD9, JPEG_SOS = 0xDB, JPEG_APP1 = 0xE1, } canonJpegMarkerCode; /** * canonCamClass: * @CANON_CLASS_0: does not support key lock at all. * Only known models: G1, Pro 90is, S100, S110, IXUS * v, IXY DIGITAL, Digital IXUS, S10, S20 * * @CANON_CLASS_1: supports lock, but not unlock. Supports (and * requires) "get picture abilities" before capture. * Examples: A5, A5 Zoom, A50, S30, S40, S200, S300, * S330, G2, A10, A20, A30, A40, A100, A200, * Optura200/MVX2i. * * @CANON_CLASS_2: like class 1, but doesn't support EXIF. Pro 70 * is only known model. * * @CANON_CLASS_3: like class 1, but can't delete image. Only known models: * A5, A5 Zoom. * * @CANON_CLASS_4: supports lock/unlock. EOS D30 was first example; others * include D60, 10D, 300D, S230, S400. Doesn't support * "get picture abilities". * * @CANON_CLASS_5: supports lock, no unlock, but not "get picture abilities". * Examples: S45, G3. * * @CANON_CLASS_6: major protocol revision. Examples: EOS 20D and 350D. * * Enumeration of all camera types currently supported. Simplified so * that all cameras with similar behavior have the same code. * */ typedef enum { CANON_CLASS_NONE, CANON_CLASS_0, CANON_CLASS_1, CANON_CLASS_2, CANON_CLASS_3, CANON_CLASS_4, CANON_CLASS_5, CANON_CLASS_6 } canonCamClass; /** * canonTransferMode: * @REMOTE_CAPTURE_THUMB_TO_PC: Transfer the thumbnail to the host * @REMOTE_CAPTURE_FULL_TO_PC: Transfer the full-size image directly to the host * @REMOTE_CAPTURE_THUMB_TO_DRIVE: Store the thumbnail on the camera storage * @REMOTE_CAPTURE_FULL_TO_DRIVE: Store the full-size image on the camera storage * * Hardware codes to control image transfer in a remote capture * operation. These are bits that may be OR'ed together to get * multiple things to happen at once. For example, * @REMOTE_CAPTURE_THUMB_TO_PC|@REMOTE_CAPTURE_FULL_TO_DRIVE is what * D30Capture uses to store the full image on the camera, but provide * an on-screen thumbnail. * */ typedef enum { REMOTE_CAPTURE_THUMB_TO_PC = 0x0001, REMOTE_CAPTURE_FULL_TO_PC = 0x0002, REMOTE_CAPTURE_THUMB_TO_DRIVE = 0x0004, REMOTE_CAPTURE_FULL_TO_DRIVE = 0x0008 } canonTransferMode; /** * canonDownloadImageType: * @CANON_DOWNLOAD_THUMB: Get just the thumbnail for the image * @CANON_DOWNLOAD_FULL: Get the full image * @CANON_DOWNLOAD_SECONDARY: Get the full secondary image * * Codes for "Download Captured Image" command to tell the camera to * download either the thumbnail or the full image for the most * recently captured image. * */ typedef enum { CANON_DOWNLOAD_THUMB = 1, CANON_DOWNLOAD_FULL = 2, CANON_DOWNLOAD_SECONDARY = 3 } canonDownloadImageType; /** * CON_CHECK_PARAM_NULL * @param: value to check for NULL * * Checks if the given parameter is NULL. If so, reports through * gp_context_error() (assuming that "context" is defined) and returns * %GP_ERROR_BAD_PARAMETERS from the enclosing function. * */ #define CON_CHECK_PARAM_NULL(param) \ if (param == NULL) { \ gp_context_error (context, _("NULL parameter \"%s\" in %s line %i"), #param, __FILE__, __LINE__); \ return GP_ERROR_BAD_PARAMETERS; \ } /** * CHECK_PARAM_NULL * @param: value to check for NULL * * Checks if the given parameter is NULL. If so, returns * %GP_ERROR_BAD_PARAMETERS from the enclosing function. * */ #define CHECK_PARAM_NULL(param) \ if (param == NULL) { \ gp_log (GP_LOG_ERROR, "canon/canon.h", _("NULL parameter \"%s\" in %s line %i"), #param, __FILE__, __LINE__); \ return GP_ERROR_BAD_PARAMETERS; \ } /** * canonCaptureSupport: * @CAP_NON: No support for capture with this camera * @CAP_SUP: Capture is fully supported for this camera * @CAP_EXP: Capture support for this camera is experimental, i.e. it * has known problems * * State of capture support * Non-zero if any support exists, but lets caller know * if support is to be trusted. * */ typedef enum { CAP_NON = 0, /* no support */ CAP_SUP, /* supported */ CAP_EXP /* experimental support */ } canonCaptureSupport; /** * These ISO, shutter speed, aperture, etc. settings are correct for the * EOS 5D and some for the G1; unsure about other cameras. */ typedef enum { ISO_50 = 0x40, ISO_100 = 0x48, ISO_125 = 0x4b, ISO_160 = 0x4d, ISO_200 = 0x50, ISO_250 = 0x53, ISO_320 = 0x55, ISO_400 = 0x58, ISO_500 = 0x5b, ISO_640 = 0x5d, ISO_800 = 0x60, ISO_1000 = 0x63, ISO_1250 = 0x65, ISO_1600 = 0x68, ISO_3200 = 0x70 } canonIsoState; struct canonIsoStateStruct { canonIsoState value; char *label; }; struct canonShootingModeStateStruct { unsigned char value; char *label; }; typedef enum { APERTURE_F1_2 = 0x0d, APERTURE_F1_4 = 0x10, APERTURE_F1_6 = 0x13, APERTURE_F1_8 = 0x15, APERTURE_F2_0 = 0x18, APERTURE_F2_2 = 0x1b, APERTURE_F2_5 = 0x1d, APERTURE_F2_8 = 0x20, APERTURE_F3_2 = 0x23, APERTURE_F3_5 = 0x25, APERTURE_F4_0 = 0x28, APERTURE_F4_5 = 0x2b, APERTURE_F5_0 = 0x2d, APERTURE_F5_6 = 0x30, APERTURE_F6_3 = 0x33, APERTURE_F7_1 = 0x35, APERTURE_F8 = 0x38, APERTURE_F9 = 0x3b, APERTURE_F10 = 0x3d, APERTURE_F11 = 0x40, APERTURE_F13 = 0x43, APERTURE_F14 = 0x45, APERTURE_F16 = 0x48, APERTURE_F18 = 0x4b, APERTURE_F20 = 0x4d, APERTURE_F22 = 0x50, APERTURE_F25 = 0x53, APERTURE_F29 = 0x55, APERTURE_F32 = 0x58, } canonApertureState; struct canonApertureStateStruct { canonApertureState value; char *label; }; typedef enum { SHUTTER_SPEED_BULB = 0x04, SHUTTER_SPEED_30_SEC = 0x10, SHUTTER_SPEED_25_SEC = 0x13, SHUTTER_SPEED_20_SEC = 0x15, SHUTTER_SPEED_15_SEC = 0x18, SHUTTER_SPEED_13_SEC = 0x1b, SHUTTER_SPEED_10_SEC = 0x1d, SHUTTER_SPEED_8_SEC = 0x20, SHUTTER_SPEED_6_SEC = 0x23, SHUTTER_SPEED_5_SEC = 0x25, SHUTTER_SPEED_4_SEC = 0x28, SHUTTER_SPEED_3_2_SEC = 0x2b, SHUTTER_SPEED_2_5_SEC = 0x2d, SHUTTER_SPEED_2_SEC = 0x30, SHUTTER_SPEED_1_6_SEC = 0x32, SHUTTER_SPEED_1_3_SEC = 0x35, SHUTTER_SPEED_1_SEC = 0x38, SHUTTER_SPEED_0_8_SEC = 0x3b, SHUTTER_SPEED_0_6_SEC = 0x3d, SHUTTER_SPEED_0_5_SEC = 0x40, SHUTTER_SPEED_0_4_SEC = 0x43, SHUTTER_SPEED_0_3_SEC = 0x45, SHUTTER_SPEED_1_4 = 0x48, SHUTTER_SPEED_1_5 = 0x4b, SHUTTER_SPEED_1_6 = 0x4d, SHUTTER_SPEED_1_8 = 0x50, SHUTTER_SPEED_1_10 = 0x53, SHUTTER_SPEED_1_13 = 0x55, SHUTTER_SPEED_1_15 = 0x58, SHUTTER_SPEED_1_20 = 0x5b, SHUTTER_SPEED_1_25 = 0x5d, SHUTTER_SPEED_1_30 = 0x60, SHUTTER_SPEED_1_40 = 0x63, SHUTTER_SPEED_1_50 = 0x65, SHUTTER_SPEED_1_60 = 0x68, SHUTTER_SPEED_1_80 = 0x6b, SHUTTER_SPEED_1_100 = 0x6d, SHUTTER_SPEED_1_125 = 0x70, SHUTTER_SPEED_1_160 = 0x73, SHUTTER_SPEED_1_200 = 0x75, SHUTTER_SPEED_1_250 = 0x78, SHUTTER_SPEED_1_320 = 0x7b, SHUTTER_SPEED_1_400 = 0x7d, SHUTTER_SPEED_1_500 = 0x80, SHUTTER_SPEED_1_640 = 0x83, SHUTTER_SPEED_1_800 = 0x85, SHUTTER_SPEED_1_1000 = 0x88, SHUTTER_SPEED_1_1250 = 0x8b, SHUTTER_SPEED_1_1600 = 0x8d, SHUTTER_SPEED_1_2000 = 0x90, SHUTTER_SPEED_1_2500 = 0x93, SHUTTER_SPEED_1_3200 = 0x95, SHUTTER_SPEED_1_4000 = 0x98, SHUTTER_SPEED_1_5000 = 0x9a, SHUTTER_SPEED_1_6400 = 0x9d, SHUTTER_SPEED_1_8000 = 0xA0 } canonShutterSpeedState; struct canonShutterSpeedStateStruct { canonShutterSpeedState value; char *label; }; typedef enum { IMAGE_FORMAT_RAW = 0, IMAGE_FORMAT_RAW_2, IMAGE_FORMAT_RAW_AND_LARGE_FINE_JPEG, IMAGE_FORMAT_RAW_AND_LARGE_NORMAL_JPEG, IMAGE_FORMAT_RAW_AND_MEDIUM_FINE_JPEG, IMAGE_FORMAT_RAW_AND_MEDIUM_NORMAL_JPEG, IMAGE_FORMAT_RAW_AND_SMALL_FINE_JPEG, IMAGE_FORMAT_RAW_AND_SMALL_NORMAL_JPEG, IMAGE_FORMAT_LARGE_FINE_JPEG, IMAGE_FORMAT_LARGE_NORMAL_JPEG, IMAGE_FORMAT_MEDIUM_FINE_JPEG, IMAGE_FORMAT_MEDIUM_NORMAL_JPEG, IMAGE_FORMAT_SMALL_FINE_JPEG, IMAGE_FORMAT_SMALL_NORMAL_JPEG } canonImageFormatState; struct canonImageFormatStateStruct { canonImageFormatState value; char *label; unsigned char res_byte1; unsigned char res_byte2; unsigned char res_byte3; }; typedef enum { AUTO_FOCUS_ONE_SHOT = 0, AUTO_FOCUS_AI_SERVO, AUTO_FOCUS_AI_FOCUS, MANUAL_FOCUS } canonFocusModeState; struct canonFocusModeStateStruct { canonFocusModeState value; char *label; }; /** * canonFlashMode: * @FLASH_MODE_OFF: The flash does not fire * @FLASH_MODE_ON: The flash does fire (compulsory) * @FLASH_MODE_AUTO: The flash fires if necessary */ typedef enum { FLASH_MODE_OFF = 0, FLASH_MODE_ON, FLASH_MODE_AUTO } canonFlashMode; struct canonFlashModeStateStruct { canonFlashMode value; char* label; }; /** * canonBeepMode: * @BEEP_OFF: The camera does not beep after focusing the image * @BEEP_ON: The camera emits an audible beep after focusing the image */ typedef enum { BEEP_OFF = 0x00, BEEP_ON = 0x01 } canonBeepMode; struct canonBeepModeStateStruct { canonBeepMode value; char* label; }; struct canonZoomLevelStateStruct { unsigned char value; char* label; }; struct canonExposureBiasStateStruct { unsigned char value; char* label; }; /* Size of the release parameter block */ #define RELEASE_PARAMS_LEN 0x2f /* These indexes are byte offsets into the release parameter data */ #define IMAGE_FORMAT_1_INDEX 0x01 #define IMAGE_FORMAT_2_INDEX 0x02 #define IMAGE_FORMAT_3_INDEX 0x03 #define SELF_TIMER_1_INDEX 0x04 /* Currently not used */ #define SELF_TIMER_2_INDEX 0x05 /* Currently not used */ #define FLASH_INDEX 0x06 #define BEEP_INDEX 0x07 #define FOCUS_MODE_INDEX 0x12 #define ISO_INDEX 0x1a #define APERTURE_INDEX 0x1c #define SHUTTERSPEED_INDEX 0x1e #define EXPOSUREBIAS_INDEX 0x20 #define SHOOTING_MODE_INDEX 0x08 /** * canonCaptureSizeClass: * @CAPTURE_COMPATIBILITY: operate in the traditional gphoto2 mode * @CAPTURE_THUMB: capture thumbnails * @CAPTURE_FULL_IMAGES: capture full-sized images * * By default (CAPTURE_COMPATIBILITY mode), the driver will capture * thumbnails to the host computer in capture_preview, and full-sized * images to the camera's drive in capture_image. * CAPTURE_FULL_IMAGE will capture a full-sized image to the host * computer in capture_preview, or to the camera's drive in capture_image. * CAPTURE_THUMB is likewise intended to capture thumbnails to either * the host computer or to the camera's drive, although these modes do not * seem to work right now. * */ typedef enum { CAPTURE_COMPATIBILITY = 1, CAPTURE_THUMB, CAPTURE_FULL_IMAGE } canonCaptureSizeClass; struct canonCaptureSizeClassStruct { canonCaptureSizeClass value; char *label; }; struct canonCamModelData { char *id_str; canonCamClass model; unsigned short usb_vendor; unsigned short usb_product; canonCaptureSupport usb_capture_support; /* these three constants aren't used properly */ unsigned int max_movie_size; unsigned int max_thumbnail_size; unsigned int max_picture_size; char *serial_id_string; /* set to NULL if camera doesn't support serial connections */ }; extern const struct canonCamModelData models[]; struct _CameraPrivateLibrary { struct canonCamModelData *md; int speed; /* The speed we're using for this camera */ char ident[32]; /* Model ID string given by the camera */ char owner[32]; /* Owner name */ char firmwrev[4]; /* Firmware revision */ unsigned char psa50_eot[8]; int receive_error; /* status of transfer on serial connection */ int first_init; /* first use of camera 1 = yes 0 = no */ int uploading; /* 1 = yes ; 0 = no */ int slow_send; /* to send data via serial with a usleep(1) * between each byte 1 = yes ; 0 = no */ unsigned char seq_tx; unsigned char seq_rx; /* driver settings * leave these as int, as gp_widget_get_value sets them as int! */ int list_all_files; /* whether to list all files, not just know types */ int upload_keep_filename; /* 0=DCIF compatible filenames (AUT_*), 1=keep original filename */ char *cached_drive; /* usually something like C: */ int cached_ready; /* whether the camera is ready to rock */ unsigned char *directory_state; /* directory content state for wait_for_event */ long image_key, thumb_length, image_length; /* For immediate download of captured image */ long image_b_key, image_b_length; /* For immediate download of secondary captured image */ int capture_step; /* To record progress in interrupt * reads from capture */ int transfer_mode; /* To remember what interrupt messages are expected during capture from newer cameras. */ int keys_locked; /* whether the keys are currently locked out */ unsigned int xfer_length; /* Length of max transfer for download */ int remote_control; /* is the camera currently under USB control? */ canonCaptureSizeClass capture_size; /* Size class for remote- captured images */ unsigned int body_id; /* hardware serial number for some cameras */ unsigned char release_params[RELEASE_PARAMS_LEN]; /* "Release parameters:" ISO, aperture, etc */ int secondary_image; /* Should we attempt to download a secondary image? (e.g., RAW + JPEG) */ /* * Directory access may be rather expensive, so we cached some information. * This is now done by libgphoto2, so we are continuously removing this stuff. * So the following variables are OBSOLETE. */ int cached_disk; int cached_capacity; int cached_available; }; /** * canonDirentOffset: * @CANON_DIRENT_ATTRS: Attribute byte * @CANON_DIRENT_SIZE: 4 byte file size * @CANON_DIRENT_TIME: 4 byte Unix time * @CANON_DIRENT_NAME: Variable length ASCII path name * @CANON_MINIMUM_DIRENT_SIZE: Minimum size of a directory entry, * including a null byte for an empty path name * * Offsets of fields of direntry in bytes. * A minimum directory entry is: * 2 bytes attributes, * 4 bytes file date (UNIX localtime), * 4 bytes file size, * 1 byte empty path '' plus NULL byte. * * Wouldn't this be better as a struct? * */ typedef enum { CANON_DIRENT_ATTRS = 0, CANON_DIRENT_SIZE = 2, CANON_DIRENT_TIME = 6, CANON_DIRENT_NAME = 10, CANON_MINIMUM_DIRENT_SIZE } canonDirentOffset; /** * canonDirentAttributeBits: * @CANON_ATTR_WRITE_PROTECTED: File is write-protected * @CANON_ATTR_UNKNOWN_2: * @CANON_ATTR_UNKNOWN_4: * @CANON_ATTR_UNKNOWN_8: * @CANON_ATTR_NON_RECURS_ENT_DIR: This entry represents a directory * that was not entered in this listing. * @CANON_ATTR_NOT_DOWNLOADED: This file has not yet been downloaded * (the bit is cleared by the host software). * @CANON_ATTR_UNKNOWN_40: * @CANON_ATTR_RECURS_ENT_DIR: This entry represents a directory * that was entered in this listing; look for its contents * later in the listing. * * Attribute bits in the %CANON_DIRENT_ATTRS byte in each directory * entry. * */ typedef enum { CANON_ATTR_WRITE_PROTECTED = 0x01, CANON_ATTR_UNKNOWN_2 = 0x02, CANON_ATTR_UNKNOWN_4 = 0x04, CANON_ATTR_UNKNOWN_8 = 0x08, CANON_ATTR_NON_RECURS_ENT_DIR = 0x10, CANON_ATTR_NOT_DOWNLOADED = 0x20, CANON_ATTR_UNKNOWN_40 = 0x40, CANON_ATTR_RECURS_ENT_DIR = 0x80 } canonDirentAttributeBits; /** * canonDirlistFunctionBits: * @CANON_LIST_FILES: List files * @CANON_LIST_FOLDERS: List folders * * Software bits to pass in "flags" argument to * canon_int_list_directory(), telling what to list. Bits may be ORed * together to list both files and folders. * */ typedef enum { CANON_LIST_FILES = 2, CANON_LIST_FOLDERS = 4 } canonDirlistFunctionBits; /** * canonDirFunctionCode: * @DIR_CREATE: Create the specified directory * @DIR_REMOVE: Remove the specified directory * * Software code to pass to canon_int_directory_operations(). * */ typedef enum { DIR_CREATE = 0, DIR_REMOVE = 1 } canonDirFunctionCode; /* These macros contain the default label for all the * switch (camera->port->type) statements */ /** * GP_PORT_DEFAULT_RETURN_INTERNAL: * @return_statement: Statement to use for return * * Used only by GP_PORT_DEFAULT_RETURN_EMPTY(), * GP_PORT_DEFAULT_RETURN(), and GP_PORT_DEFAULT() * */ #define GP_PORT_DEFAULT_RETURN_INTERNAL(return_statement) \ default: \ gp_context_error (context, _("Don't know how to handle " \ "camera->port->type value %i aka 0x%x " \ "in %s line %i."), camera->port->type, \ camera->port->type, __FILE__, __LINE__); \ return_statement; \ break; /** * GP_PORT_DEFAULT_RETURN_EMPTY: * * Return as a default case in switch (camera->port->type) * statements in functions returning void. * */ #define GP_PORT_DEFAULT_RETURN_EMPTY GP_PORT_DEFAULT_RETURN_INTERNAL(return) /** * GP_PORT_DEFAULT_RETURN * @RETVAL: Value to return from this function * * Return as a default case in switch (camera->port->type) * statements in functions returning a value. * */ #define GP_PORT_DEFAULT_RETURN(RETVAL) GP_PORT_DEFAULT_RETURN_INTERNAL(return RETVAL) /** * GP_PORT_DEFAULT * * Return as a default case in switch (camera->port->type) statements * in functions returning a gphoto2 error code where this value of * camera->port->type is unexpected. * */ #define GP_PORT_DEFAULT GP_PORT_DEFAULT_RETURN(GP_ERROR_BAD_PARAMETERS) /* * All functions returning a pointer have malloc'ed the data. The caller must * free() it when done. */ int canon_int_ready(Camera *camera, GPContext *context); char *canon_int_get_disk_name(Camera *camera, GPContext *context); int canon_int_get_battery(Camera *camera, int *pwr_status, int *pwr_source, GPContext *context); int canon_int_capture_image (Camera *camera, CameraFilePath *path, GPContext *context); int canon_int_capture_preview (Camera *camera, unsigned char **data, unsigned int *length, GPContext *context); int canon_int_get_disk_name_info(Camera *camera, const char *name,int *capacity,int *available, GPContext *context); int canon_int_list_directory (Camera *camera, const char *folder, CameraList *list, const canonDirlistFunctionBits flags, GPContext *context); int canon_int_get_info_func (Camera *camera, const char *folder, const char *filename, CameraFileInfo * info, GPContext *context); int canon_int_get_file(Camera *camera, const char *name, unsigned char **data, unsigned int *length, GPContext *context); int canon_int_get_thumbnail(Camera *camera, const char *name, unsigned char **retdata, unsigned int *length, GPContext *context); int canon_int_put_file(Camera *camera, CameraFile *file, const char *filename, const char *destname, const char *destpath, GPContext *context); int canon_int_wait_for_event (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context); int canon_int_set_file_attributes(Camera *camera, const char *file, const char *dir, canonDirentAttributeBits attrs, GPContext *context); int canon_int_delete_file(Camera *camera, const char *name, const char *dir, GPContext *context); int canon_int_set_shutter_speed(Camera *camera, canonShutterSpeedState shutter_speed, GPContext *context); int canon_int_set_iso(Camera *camera, canonIsoState iso, GPContext *context); int canon_int_set_shooting_mode (Camera *camera, unsigned char shooting_mode, GPContext *context); int canon_int_set_aperture(Camera *camera, canonApertureState aperture, GPContext *context); int canon_int_set_exposurebias(Camera *camera, unsigned char expbias, GPContext *context); int canon_int_set_focus_mode (Camera *camera, canonFocusModeState focus_mode, GPContext *context); int canon_int_set_image_format (Camera *camera, unsigned char res_byte1, unsigned char res_byte2, unsigned char res_byte3, GPContext *context); int canon_serial_off(Camera *camera); int canon_int_get_time(Camera *camera, time_t *camera_time, GPContext *context); int canon_int_set_time(Camera *camera, time_t date, GPContext *context); int canon_int_directory_operations(Camera *camera, const char *path, canonDirFunctionCode action, GPContext *context); int canon_int_identify_camera(Camera *camera, GPContext *context); int canon_int_set_owner_name(Camera *camera, const char *name, GPContext *context); int canon_int_start_remote_control(Camera *camera, GPContext *context); int canon_int_end_remote_control(Camera *camera, GPContext *context); int canon_int_set_beep(Camera *camera, canonBeepMode beep_mode, GPContext *context); int canon_int_set_flash(Camera *camera, canonFlashMode flash_mode, GPContext *context); int canon_int_set_zoom(Camera *camera, unsigned char zoom_level, GPContext *context); int canon_int_get_zoom(Camera *camera, unsigned char *zoom_level, unsigned char *zoom_max, GPContext *context); /* * introduced for capturing */ int canon_int_get_release_params (Camera *camera, GPContext *context); void canon_int_find_new_image ( Camera *camera, unsigned char *initial_state, unsigned char *final_state, CameraFilePath *path ); /* path conversion - needs drive letter, and therefore cannot be moved * to util.c */ const char *gphoto2canonpath(Camera *camera, const char *path, GPContext *context); const char *canon_int_filename2thumbname (Camera *camera, const char *filename); const char *canon_int_filename2audioname (Camera *camera, const char *filename); int canon_int_extract_jpeg_thumb (unsigned char *data, const unsigned int datalen, unsigned char **retdata, unsigned int *retdatalen, GPContext *context); /* for the macros abbreviating gp_log* */ #define GP_MODULE "canon" #endif /* _CANON_H */ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/canon/library.c0000644000175000001440000021640012610415617015043 00000000000000/************************************************************************** * * library.c * * Canon Camera library for the gphoto project, * Copyright 1999 Wolfgang G. Reissnegger * Developed for the Canon PowerShot A50 * Additions for PowerShot A5 by Ole W. Saastad * Copyright 2000: Other additions by Edouard Lafargue, Philippe Marzouk * * This file contains all the "glue code" required to use the canon * driver with libgphoto2. * ****************************************************************************/ /**************************************************************************** * * include files * ****************************************************************************/ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #include #include #ifdef HAVE_LOCALE_H #include #endif #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #include "util.h" #include "library.h" #include "canon.h" #include "serial.h" #include "usb.h" #ifdef __GNUC__ # define __unused__ __attribute__((unused)) #else # define __unused__ #endif #ifndef HAVE_TM_GMTOFF /* required for time conversions in camera_summary() */ extern long int timezone; #endif #define CHECK_RESULT(result) {int r = (result); if (r < 0) return (r);} #ifndef TRUE # define TRUE (0==0) #endif #ifndef FALSE # define FALSE (0!=0) #endif #ifdef CANON_EXPERIMENTAL_UPLOAD #define UPLOAD_BOOL TRUE #else #define UPLOAD_BOOL FALSE #endif static const struct canonCaptureSizeClassStruct captureSizeArray[] = { {CAPTURE_COMPATIBILITY, N_("Compatibility Mode")}, {CAPTURE_THUMB, N_("Thumbnail")}, {CAPTURE_FULL_IMAGE, N_("Full Image")}, {0, NULL} }; static const struct canonIsoStateStruct isoStateArray[] = { {ISO_50, "50"}, {ISO_100, "100"}, {ISO_125, "125"}, {ISO_160, "160"}, {ISO_200, "200"}, {ISO_250, "250"}, {ISO_320, "320"}, {ISO_400, "400"}, {ISO_500, "500"}, {ISO_640, "640"}, {ISO_800, "800"}, {ISO_1000, "1000"}, {ISO_1250, "1250"}, {ISO_1600, "1600"}, {ISO_3200, "3200"}, {0, NULL}, }; static const struct canonShutterSpeedStateStruct shutterSpeedStateArray[] = { {SHUTTER_SPEED_BULB, N_("Bulb")}, {SHUTTER_SPEED_30_SEC,"30"}, {SHUTTER_SPEED_25_SEC,"25"}, {SHUTTER_SPEED_20_SEC,"20"}, {SHUTTER_SPEED_15_SEC,"15"}, {SHUTTER_SPEED_13_SEC,"13"}, {SHUTTER_SPEED_10_SEC,"10"}, {SHUTTER_SPEED_8_SEC,"8"}, {SHUTTER_SPEED_6_SEC,"6"}, {SHUTTER_SPEED_5_SEC,"5"}, {SHUTTER_SPEED_4_SEC,"4"}, {SHUTTER_SPEED_3_2_SEC,"3.2"}, {SHUTTER_SPEED_2_5_SEC,"2.5"}, {SHUTTER_SPEED_2_SEC,"2"}, {SHUTTER_SPEED_1_6_SEC,"1.6"}, {SHUTTER_SPEED_1_3_SEC,"1.3"}, {SHUTTER_SPEED_1_SEC,"1"}, {SHUTTER_SPEED_0_8_SEC,"0.8"}, {SHUTTER_SPEED_0_6_SEC,"0.6"}, {SHUTTER_SPEED_0_5_SEC,"0.5"}, {SHUTTER_SPEED_0_4_SEC,"0.4"}, {SHUTTER_SPEED_0_3_SEC,"0.3"}, {SHUTTER_SPEED_1_4,"1/4"}, {SHUTTER_SPEED_1_5,"1/5"}, {SHUTTER_SPEED_1_6,"1/6"}, {SHUTTER_SPEED_1_8,"1/8"}, {SHUTTER_SPEED_1_10,"1/10"}, {SHUTTER_SPEED_1_13,"1/13"}, {SHUTTER_SPEED_1_15,"1/15"}, {SHUTTER_SPEED_1_20,"1/20"}, {SHUTTER_SPEED_1_25,"1/25"}, {SHUTTER_SPEED_1_30,"1/30"}, {SHUTTER_SPEED_1_40,"1/40"}, {SHUTTER_SPEED_1_50,"1/50"}, {SHUTTER_SPEED_1_60,"1/60"}, {SHUTTER_SPEED_1_80,"1/80"}, {SHUTTER_SPEED_1_100,"1/100"}, {SHUTTER_SPEED_1_125,"1/125"}, {SHUTTER_SPEED_1_160,"1/160"}, {SHUTTER_SPEED_1_200,"1/200"}, {SHUTTER_SPEED_1_250,"1/250"}, {SHUTTER_SPEED_1_320,"1/320"}, {SHUTTER_SPEED_1_400,"1/400"}, {SHUTTER_SPEED_1_500,"1/500"}, {SHUTTER_SPEED_1_640,"1/640"}, {SHUTTER_SPEED_1_800,"1/800"}, {SHUTTER_SPEED_1_1000,"1/1000"}, {SHUTTER_SPEED_1_1250,"1/1250"}, {SHUTTER_SPEED_1_1600,"1/1600"}, {SHUTTER_SPEED_1_2000,"1/2000"}, {SHUTTER_SPEED_1_2500,"1/2500"}, {SHUTTER_SPEED_1_3200,"1/3200"}, {SHUTTER_SPEED_1_4000,"1/4000"}, {SHUTTER_SPEED_1_5000,"1/5000"}, {SHUTTER_SPEED_1_6400,"1/6400"}, {SHUTTER_SPEED_1_8000,"1/8000"}, {0, NULL}, }; static const struct canonApertureStateStruct apertureStateArray[] = { {APERTURE_F1_2, "1.2"}, {APERTURE_F1_4, "1.4"}, {APERTURE_F1_6, "1.6"}, {APERTURE_F1_8, "1.8"}, {APERTURE_F2_0, "2.0"}, {APERTURE_F2_2, "2.2"}, {APERTURE_F2_5, "2.5"}, {APERTURE_F2_8, "2.8"}, {APERTURE_F3_2, "3.2"}, {APERTURE_F3_5, "3.5"}, {APERTURE_F4_0, "4.0"}, {APERTURE_F4_5, "4.5"}, {APERTURE_F5_0, "5.0"}, {APERTURE_F5_6, "5.6"}, {APERTURE_F6_3, "6.3"}, {APERTURE_F7_1, "7.1"}, {APERTURE_F8, "8"}, {APERTURE_F9, "9"}, {APERTURE_F10, "10"}, {APERTURE_F11, "11"}, {APERTURE_F13, "13"}, {APERTURE_F14, "14"}, {APERTURE_F16, "16"}, {APERTURE_F18, "18"}, {APERTURE_F20, "20"}, {APERTURE_F22, "22"}, {APERTURE_F25, "25"}, {APERTURE_F29, "29"}, {APERTURE_F32, "32"}, {0, NULL}, }; static const struct canonFocusModeStateStruct focusModeStateArray[] = { {AUTO_FOCUS_ONE_SHOT, N_("Auto focus: one-shot")}, {AUTO_FOCUS_AI_SERVO, N_("Auto focus: AI servo")}, {AUTO_FOCUS_AI_FOCUS, N_("Auto focus: AI focus")}, {MANUAL_FOCUS, N_("Manual focus")}, {0, NULL}, }; static const struct canonBeepModeStateStruct beepModeStateArray[] = { {BEEP_OFF, N_("Beep off")}, {BEEP_ON, N_("Beep on")}, {0, NULL}, }; static const struct canonFlashModeStateStruct flashModeStateArray[] = { {FLASH_MODE_OFF, N_("Flash off")}, {FLASH_MODE_ON, N_("Flash on")}, {FLASH_MODE_AUTO, N_("Flash auto")}, {0, NULL}, }; static const struct canonExposureBiasStateStruct exposureBiasStateArray[] = { {0x10,"+2"}, {0x0d,"+1 2/3"}, {0x0c,"+1 1/2"}, {0x0b,"+1 1/3"}, {0x08,"+1"}, {0x05,"+2/3"}, {0x04,"+1/2"}, {0x03,"+1/3"}, {0x00,"0"}, {0xfd,"-1/3"}, {0xfc,"-1/2"}, {0xfb,"-2/3"}, {0xf8,"-1"}, {0xf5,"-1 1/3"}, {0xf4,"-1 1/2"}, {0xf3,"-1 2/3"}, {0xf0,"-2"}, {0, NULL}, }; static const struct canonShootingModeStateStruct shootingModeStateArray[] = { {0x00,N_("AUTO")}, {0x01,N_("P")}, {0x02,N_("Tv")}, {0x03,N_("Av")}, {0x04,N_("M")}, {0x05,N_("A-DEP")}, {0x06,N_("M-DEP")}, {0x07,N_("Bulb")}, {0x65,N_("Manual 2")}, {0x66,N_("Far scene")}, {0x67,N_("Fast shutter")}, {0x68,N_("Slow shutter")}, {0x69,N_("Night scene")}, {0x6a,N_("Gray scale")}, {0x6b,N_("Sepia")}, {0x6c,N_("Portrait")}, {0x6d,N_("Spot")}, {0x6e,N_("Macro")}, {0x6f,N_("BW")}, {0x70,N_("PanFocus")}, {0x71,N_("Vivid")}, {0x72,N_("Neutral")}, {0x73,N_("Flash off")}, {0x74,N_("Long shutter")}, {0x75,N_("Super macro")}, {0x76,N_("Foliage")}, {0x77,N_("Indoor")}, {0x78,N_("Fireworks")}, {0x79,N_("Beach")}, {0x7a,N_("Underwater")}, {0x7b,N_("Snow")}, {0x7c,N_("Kids and pets")}, {0x7d,N_("Night snapshot")}, {0x7e,N_("Digital macro")}, {0x7f,N_("MyColors")}, {0x80,N_("Photo in movie")}, {0, NULL} }; static const struct canonImageFormatStateStruct imageFormatStateArray[] = { {IMAGE_FORMAT_RAW, N_("RAW"), 0x04, 0x02, 0x00}, {IMAGE_FORMAT_RAW_2, N_("RAW 2"), 0x03, 0x02, 0x00}, {IMAGE_FORMAT_SMALL_NORMAL_JPEG, N_("Small Normal JPEG"), 0x02, 0x01, 0x02}, {IMAGE_FORMAT_SMALL_FINE_JPEG, N_("Small Fine JPEG"), 0x03, 0x01, 0x02}, {IMAGE_FORMAT_MEDIUM_NORMAL_JPEG, N_("Medium Normal JPEG"), 0x02, 0x01, 0x01}, {IMAGE_FORMAT_MEDIUM_FINE_JPEG, N_("Medium Fine JPEG"), 0x03, 0x01, 0x01}, {IMAGE_FORMAT_LARGE_NORMAL_JPEG, N_("Large Normal JPEG"), 0x02, 0x01, 0x00}, {IMAGE_FORMAT_LARGE_FINE_JPEG, N_("Large Fine JPEG"), 0x03, 0x01, 0x00}, {IMAGE_FORMAT_RAW_AND_SMALL_NORMAL_JPEG, N_("RAW + Small Normal JPEG"), 0x24, 0x12, 0x20}, {IMAGE_FORMAT_RAW_AND_SMALL_FINE_JPEG, N_("RAW + Small Fine JPEG"), 0x34, 0x12, 0x20}, {IMAGE_FORMAT_RAW_AND_MEDIUM_NORMAL_JPEG, N_("RAW + Medium Normal JPEG"), 0x24, 0x12, 0x10}, {IMAGE_FORMAT_RAW_AND_MEDIUM_FINE_JPEG, N_("RAW + Medium Fine JPEG"), 0x34, 0x12, 0x10}, {IMAGE_FORMAT_RAW_AND_LARGE_NORMAL_JPEG, N_("RAW + Large Normal JPEG"), 0x24, 0x12, 0x00}, {IMAGE_FORMAT_RAW_AND_LARGE_FINE_JPEG, N_("RAW + Large Fine JPEG"), 0x34, 0x12, 0x00}, {0, NULL, 0, 0, 0}, }; /** * camera_id: * @id: string buffer to receive text identifying camera type * * Standard gphoto2 camlib interface * * Returns: * string is copied into @id. * */ int camera_id (CameraText *id) { /* GP_DEBUG ("camera_id()"); */ strcpy (id->text, "canon"); return GP_OK; } /** * camera_manual * @camera: Camera for which to get manual text (unused) * @manual: Buffer into which to copy manual text * @context: unused * * Returns the "manual" text for cameras supported by this driver. * * Returns: manual text is copied into @manual->text. * */ static int camera_manual (Camera __unused__ *camera, CameraText *manual, GPContext __unused__ *context) { GP_DEBUG ("camera_manual()"); strncpy (manual->text, _("This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n"), sizeof ( CameraText ) ); return GP_OK; } /** * camera_abilities: * @list: list of abilities * * Returns a list of what any of the cameras supported by this driver * can do. Each entry of the list will represent one camera model. * * Returns: list of abilities in @list * */ int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; /* GP_DEBUG ("camera_abilities()"); */ for (i = 0; models[i].id_str; i++) { memset (&a, 0, sizeof (a)); /* For now, flag EOS 20D as experimental. */ if ((UPLOAD_BOOL || (models[i].usb_capture_support == CAP_EXP) || models[i].model == CANON_CLASS_6) && (models[i].usb_vendor && models[i].usb_product)) { a.status = GP_DRIVER_STATUS_EXPERIMENTAL; } else { a.status = GP_DRIVER_STATUS_PRODUCTION; } strcpy (a.model, models[i].id_str); a.port = 0; if (models[i].usb_vendor && models[i].usb_product) { a.port |= GP_PORT_USB; a.usb_vendor = models[i].usb_vendor; a.usb_product = models[i].usb_product; } if (models[i].serial_id_string != NULL) { a.port |= GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 57600; a.speed[4] = 115200; a.speed[5] = 0; } a.operations = GP_OPERATION_CONFIG; if (models[i].usb_capture_support != CAP_NON) { a.operations |= GP_OPERATION_CAPTURE_IMAGE; a.operations |= GP_OPERATION_CAPTURE_PREVIEW; } a.folder_operations = GP_FOLDER_OPERATION_MAKE_DIR | GP_FOLDER_OPERATION_REMOVE_DIR; if (UPLOAD_BOOL || (models[i].serial_id_string != NULL)) { a.folder_operations |= GP_FOLDER_OPERATION_PUT_FILE; } a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_EXIF; gp_abilities_list_append (list, a); } return GP_OK; } /** * clear_readiness * @camera: the camera to affect * * Clears the cached flag indicating that the camera is ready. * */ void clear_readiness (Camera *camera) { GP_DEBUG ("clear_readiness()"); camera->pl->cached_ready = 0; } /** * check_readiness * @camera: the camera to affect * @context: context for error reporting * * Checks the readiness of the camera. If the cached "ready" flag isn't * set, checks using canon_int_ready(). * * Returns: 1 if ready, 0 if not. * */ static int check_readiness (Camera *camera, GPContext *context) { int status; GP_DEBUG ("check_readiness() cached_ready == %i", camera->pl->cached_ready); if (camera->pl->cached_ready) return 1; status = canon_int_ready (camera, context); if ( status == GP_OK ) { GP_DEBUG ("Camera type: %s (%d)", camera->pl->md->id_str, camera->pl->md->model); camera->pl->cached_ready = 1; return 1; } gp_context_error ( context, _("Camera unavailable: %s"), gp_result_as_string ( status ) ); return 0; } /** * canon_int_switch_camera_off * @camera: the camera to affect * @context: context for error reporting * * Switches a serial camera off. Does nothing to a USB camera. * */ static void canon_int_switch_camera_off (Camera *camera, GPContext *context) { GP_DEBUG ("switch_camera_off()"); switch (camera->port->type) { case GP_PORT_SERIAL: gp_context_status (context, _("Switching Camera Off")); canon_serial_off (camera); break; case GP_PORT_USB: GP_DEBUG ("Not trying to shut down USB camera..."); break; GP_PORT_DEFAULT_RETURN_EMPTY} clear_readiness (camera); } /** * camera_exit * @camera: the camera to affect * @context: context for error reporting * * Ends our use of the camera. For USB cameras, unlock keys. For * serial cameras, switch the camera off and unlock the port. * * Returns: GP_OK * */ static int camera_exit (Camera *camera, GPContext *context) { int res = 0; if (camera->port->type == GP_PORT_USB) canon_usb_unlock_keys (camera, context); /* Turn off remote control if enabled (remote control only * applies to USB cameras, but in case of serial connection * remote_control should never be seen set here) */ if (camera->pl->remote_control) { res = canon_int_end_remote_control (camera, context); if (res != GP_OK) return -1; } if (camera->pl) { canon_int_switch_camera_off (camera, context); free (camera->pl); camera->pl = NULL; } return GP_OK; } /** * camera_capture_preview * @camera: the camera to affect * @context: context for error reporting * * Triggers the camera to capture a new image. Discards the image and * downloads its thumbnail to the host computer without storing it on * the camera. * * Returns: gphoto2 error code * */ static int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { unsigned int size; int code; unsigned char *data; GP_DEBUG ("canon_capture_preview() called"); code = canon_int_capture_preview (camera, &data, &size, context); if ( code != GP_OK) { gp_context_error (context, _("Error capturing image")); return code; } gp_file_set_data_and_size ( file, (char *)data, size ); gp_file_set_mime_type (file, GP_MIME_JPEG); /* always */ return GP_OK; } /** * camera_capture * @camera: the camera to affect * @type: type of capture (only GP_CAPTURE_IMAGE supported) * @path: path on camera to use * @context: context for error reporting * * Captures a single image from the camera. * * Returns: gphoto2 error code * */ static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { int code; GP_DEBUG ("canon_capture() called"); if (type != GP_CAPTURE_IMAGE) { return GP_ERROR_NOT_SUPPORTED; } code = canon_int_capture_image (camera, path, context); if (code != GP_OK) { gp_context_error (context, _("Error capturing image")); return code; } return GP_OK; } /** * canon_get_batt_status * @camera: the camera to affect * @pwr_status: to receive power status from camera * @pwr_source: to receive power source from camera * @context: context for error reporting * * Gets the power status for the camera. * * Returns: -1 if camera isn't ready; status from canon_int_get_battery() otherwise. * @pwr_status will contain @CAMERA_POWER_OK if power is OK (i.e. battery isn't low) * @pwr_source will have bit %CAMERA_MASK_BATTERY set if battery power is used * */ static int canon_get_batt_status (Camera *camera, int *pwr_status, int *pwr_source, GPContext *context) { GP_DEBUG ("canon_get_batt_status() called"); if (!check_readiness (camera, context)) return -1; return canon_int_get_battery (camera, pwr_status, pwr_source, context); } /** * update_disk_cache * @camera: the camera to work on * @context: the context to print on error * * Updates the disk cache for this camera. * * Returns: 1 on success, 0 on failure * */ static int update_disk_cache (Camera *camera, GPContext *context) { char root[10]; /* D:\ or such */ int res; GP_DEBUG ("update_disk_cache()"); if (camera->pl->cached_disk) return 1; if (!check_readiness (camera, context)) return 0; camera->pl->cached_drive = canon_int_get_disk_name (camera, context); if (!camera->pl->cached_drive) { gp_context_error (context, _("Could not get disk name: %s"), _("No reason available")); return 0; } snprintf (root, sizeof (root), "%s\\", camera->pl->cached_drive); res = canon_int_get_disk_name_info (camera, root, &camera->pl->cached_capacity, &camera->pl->cached_available, context); if (res != GP_OK) { gp_context_error (context, _("Could not get disk info: %s"), gp_result_as_string (res)); return 0; } camera->pl->cached_disk = 1; return 1; } /**************************************************************************** * * gphoto library interface calls * ****************************************************************************/ static int file_list_func (CameraFilesystem __unused__ *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; GP_DEBUG ("file_list_func()"); if (!check_readiness (camera, context)) return GP_ERROR; return canon_int_list_directory (camera, folder, list, CANON_LIST_FILES, context); } static int folder_list_func (CameraFilesystem __unused__ *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; GP_DEBUG ("folder_list_func()"); if (!check_readiness (camera, context)) return GP_ERROR; return canon_int_list_directory (camera, folder, list, CANON_LIST_FOLDERS, context); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL, *thumbdata = NULL; const char *thumbname = NULL; const char *audioname = NULL; int ret; unsigned int datalen; char canon_path[300]; /* for debugging */ char *filetype; char buf[32]; /* Assemble complete canon path into canon_path */ ret = snprintf (canon_path, sizeof (canon_path) - 3, "%s\\%s", gphoto2canonpath (camera, folder, context), filename); if (ret < 0) { gp_context_error (context, _("Internal error #1 in get_file_func() (%s line %i)"), __FILE__, __LINE__); return GP_ERROR_BAD_PARAMETERS; } /* for debugging */ switch (type) { case GP_FILE_TYPE_PREVIEW: filetype = "thumbnail"; break; case GP_FILE_TYPE_EXIF: filetype = "exif data"; break; case GP_FILE_TYPE_AUDIO: filetype = "audio annotation"; break; case GP_FILE_TYPE_NORMAL: filetype = "file itself"; break; default: snprintf(buf, sizeof(buf), "unknown type %d", type); filetype = buf; break; } GP_DEBUG ("get_file_func: folder '%s' filename '%s' (i.e. '%s'), getting %s", folder, filename, canon_path, filetype); /* preparation, if it is _AUDIO we convert the file name to * the corresponding audio file name. If the name of the audio * file is supplied, this step will be a no-op. */ if (type == GP_FILE_TYPE_AUDIO) { audioname = canon_int_filename2audioname (camera, canon_path); if (audioname == NULL) { gp_context_error (context, _("No audio file could be found for %s"), canon_path); return(GP_ERROR_FILE_NOT_FOUND); } } /* fetch file/thumbnail/exif/audio/whatever */ switch (type) { case GP_FILE_TYPE_NORMAL: ret = canon_int_get_file (camera, canon_path, &data, &datalen, context); if (ret == GP_OK) { /* 0 also marks image as downloaded */ uint8_t attr = 0; /* This should cover all attribute * bits known of and reflected in * info.file */ CameraFileInfo info; gp_filesystem_get_info (fs, folder, filename, &info, context); if ((info.file.permissions & GP_FILE_PERM_DELETE) == 0) attr |= CANON_ATTR_WRITE_PROTECTED; canon_int_set_file_attributes (camera, filename, gphoto2canonpath (camera, folder, context), attr, context); /* we cannot easily retrieve it except by reading the directory */ if (info.file.fields & GP_FILE_INFO_MTIME) gp_file_set_mtime (file, info.file.mtime); } break; case GP_FILE_TYPE_AUDIO: if (*audioname != '\0') { /* extra audio file */ ret = canon_int_get_file (camera, audioname, &data, &datalen, context); } else { /* internal audio file; not handled yet */ ret = GP_ERROR_NOT_SUPPORTED; } break; case GP_FILE_TYPE_PREVIEW: thumbname = canon_int_filename2thumbname (camera, canon_path); if (thumbname == NULL) { /* no thumbnail available */ GP_DEBUG ("%s is a file type for which no thumbnail is provided",canon_path); return (GP_ERROR_NOT_SUPPORTED); } #ifdef HAVE_LIBEXIF /* Check if we have libexif, it is a jpeg file * and it is not a PowerShot Pro 70 (which * does not support EXIF), return not * supported here so that gPhoto2 query for * GP_FILE_TYPE_EXIF instead */ if (is_jpeg (filename)) { if (camera->pl->md->model != CANON_CLASS_2) { GP_DEBUG ("get_file_func: preview requested where " "EXIF should be possible"); return (GP_ERROR_NOT_SUPPORTED); } } #endif /* HAVE_LIBEXIF */ if (*thumbname == '\0') { /* file internal thumbnail */ ret = canon_int_get_thumbnail (camera, canon_path, &data, &datalen, context); } else { /* extra thumbnail file */ ret = canon_int_get_file (camera, thumbname, &data, &datalen, context); } break; case GP_FILE_TYPE_EXIF: #ifdef HAVE_LIBEXIF /* the PowerShot Pro 70 does not support EXIF */ if (camera->pl->md->model == CANON_CLASS_2) return (GP_ERROR_NOT_SUPPORTED); thumbname = canon_int_filename2thumbname (camera, canon_path); if (thumbname == NULL) { /* no thumbnail available */ GP_DEBUG ("%s is a file type for which no thumbnail is provided", canon_path); return (GP_ERROR_NOT_SUPPORTED); } if (*thumbname == '\0') { /* file internal thumbnail with EXIF data */ ret = canon_int_get_thumbnail (camera, canon_path, &data, &datalen, context); } else { /* extra thumbnail file */ ret = canon_int_get_file (camera, thumbname, &data, &datalen, context); } #else GP_DEBUG ("get_file_func: EXIF file type requested but no libexif"); return (GP_ERROR_NOT_SUPPORTED); #endif /* HAVE_LIBEXIF */ break; default: GP_DEBUG ("get_file_func: unsupported file type %i", type); return (GP_ERROR_NOT_SUPPORTED); } if (ret != GP_OK) { GP_DEBUG ("get_file_func: getting image data failed, returned %i", ret); return ret; } if (data == NULL) { GP_DEBUG ("get_file_func: Fatal error: data == NULL"); return GP_ERROR_CORRUPTED_DATA; } /* 256 is picked out of the blue, I figured no JPEG with EXIF header * (not all canon cameras produces EXIF headers I think, but still) * should be less than 256 bytes long. */ if (datalen < 256) { GP_DEBUG ("get_file_func: datalen < 256 (datalen = %i = 0x%x)", datalen, datalen); return GP_ERROR_CORRUPTED_DATA; } /* do different things with the data fetched above */ switch (type) { case GP_FILE_TYPE_PREVIEW: /* Either this camera model does not support EXIF, * this is not a file known to contain EXIF thumbnails * (movies for example) or we do not have libexif. * Try to extract thumbnail by looking for JPEG start/end * in data. */ ret = canon_int_extract_jpeg_thumb (data, datalen, &thumbdata, &datalen, context); if (thumbdata != NULL) { /* free old data */ free (data); /* make data point to extracted thumbnail data */ data = thumbdata; thumbdata = NULL; } if (ret != GP_OK) { GP_DEBUG ("get_file_func: GP_FILE_TYPE_PREVIEW: couldn't extract JPEG thumbnail data"); if (data) free (data); data = NULL; return ret; } GP_DEBUG ("get_file_func: GP_FILE_TYPE_PREVIEW: extracted thumbnail data (%i bytes)", datalen); gp_file_set_data_and_size (file, (char *)data, datalen); gp_file_set_mime_type (file, GP_MIME_JPEG); /* always */ break; case GP_FILE_TYPE_AUDIO: gp_file_set_mime_type (file, GP_MIME_WAV); gp_file_set_data_and_size (file, (char *)data, datalen); break; case GP_FILE_TYPE_NORMAL: gp_file_set_mime_type (file, filename2mimetype (filename)); gp_file_set_data_and_size (file, (char *)data, datalen); break; #ifdef HAVE_LIBEXIF case GP_FILE_TYPE_EXIF: if ( !is_cr2 ( filename ) ) gp_file_set_mime_type (file, GP_MIME_JPEG); else gp_file_set_mime_type (file, GP_MIME_EXIF); gp_file_set_data_and_size (file, (char *)data, datalen); break; #endif /* HAVE_LIBEXIF */ default: free (data); data = NULL; return (GP_ERROR_NOT_SUPPORTED); } return GP_OK; } /****************************************************************************/ static void pretty_number (int number, char *buffer) { int len, tmp, digits; char *pos; #ifdef HAVE_LOCALE_H /* We should really use ->grouping as well */ char thousands_sep = *localeconv ()->thousands_sep; if (thousands_sep == '\0') thousands_sep = '\''; #else const char thousands_sep = '\''; #endif len = 0; tmp = number; do { len++; tmp /= 10; } while (tmp); len += (len - 1) / 3; pos = buffer + len; *pos = 0; digits = 0; do { *--pos = (number % 10) + '0'; number /= 10; if (++digits == 3) { *--pos = thousands_sep; digits = 0; } } while (number); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { char a[20], b[20]; int pwr_source, pwr_status; int res; char disk_str[128], power_str[128], time_str[128]; time_t camera_time, local_time, tmp_time; struct tm *tm; double time_diff; char formatted_camera_time[20]; GP_DEBUG ("camera_summary()"); if (!check_readiness (camera, context)) return GP_ERROR; /*clear_readiness(); */ if (!update_disk_cache (camera, context)) return GP_ERROR; pretty_number (camera->pl->cached_capacity, a); pretty_number (camera->pl->cached_available, b); snprintf (disk_str, sizeof (disk_str), _(" Drive %s\n %11s bytes total\n %11s bytes available"), camera->pl->cached_drive, a, b); res = canon_get_batt_status (camera, &pwr_status, &pwr_source, context); if (res == GP_OK) { if (pwr_status == CAMERA_POWER_OK || pwr_status == CAMERA_POWER_BAD) snprintf (power_str, sizeof (power_str), "%s (%s)", ((pwr_source & CAMERA_MASK_BATTERY) == 0) ? _("AC adapter") : _("on battery"), pwr_status == CAMERA_POWER_OK ? _("power OK") : _("power bad")); else snprintf (power_str, sizeof (power_str), "%s - %i", ((pwr_source & CAMERA_MASK_BATTERY) == 0) ? _("AC adapter") : _("on battery"), pwr_status); } else { GP_DEBUG ("canon_get_batt_status() returned error: %s (%i), ", gp_result_as_string (res), res); snprintf (power_str, sizeof (power_str), _("not available: %s"), gp_result_as_string (res)); } canon_int_set_time (camera, time (NULL), context); res = canon_int_get_time (camera, &camera_time, context); /* it's hard to get local time with DST portably... */ tmp_time = time (NULL); tm = localtime (&tmp_time); #ifdef HAVE_TM_GMTOFF local_time = tmp_time + tm->tm_gmtoff; GP_DEBUG ("camera_summary: converted %ld to localtime %ld (tm_gmtoff is %ld)", (long)tmp_time, (long)local_time, (long)tm->tm_gmtoff); #else local_time = tmp_time - timezone; GP_DEBUG ("camera_summary: converted %ld to localtime %ld (timezone is %ld)", (long)tmp_time, (long)local_time, (long)timezone); #endif if (res == GP_OK) { time_diff = difftime (camera_time, local_time); strftime (formatted_camera_time, sizeof (formatted_camera_time), "%Y-%m-%d %H:%M:%S", gmtime (&camera_time)); snprintf (time_str, sizeof (time_str), _("%s (host time %s%i seconds)"), formatted_camera_time, time_diff >= 0 ? "+" : "", (int) time_diff); } else { GP_DEBUG ("canon_int_get_time() returned negative result: %s (%i)", gp_result_as_string ((int) camera_time), (int) camera_time); snprintf (time_str, sizeof (time_str), ("not available: %s"), gp_result_as_string ((int) camera_time)); } sprintf (summary->text, _("\nCamera identification:\n Model: %s\n Owner: %s\n\n" "Power status: %s\n\n" "Flash disk information:\n%s\n\n" "Time: %s\n"), camera->pl->md->id_str, camera->pl->owner, power_str, disk_str, time_str); return GP_OK; } static int storage_info_func ( CameraFilesystem *fs, CameraStorageInformation **sinfos, int *nrofsinfos, void *data, GPContext *context ) { char root[10]; Camera *camera = (Camera*)data; if (!check_readiness (camera, context)) return GP_ERROR_IO; camera->pl->cached_drive = canon_int_get_disk_name (camera, context); if (!camera->pl->cached_drive) { gp_context_error (context, _("Could not get disk name: %s"), _("No reason available")); return GP_ERROR_IO; } snprintf (root, sizeof (root), "%s\\", camera->pl->cached_drive); canon_int_get_disk_name_info (camera, root, &camera->pl->cached_capacity, &camera->pl->cached_available, context); *sinfos = (CameraStorageInformation*) calloc (sizeof (CameraStorageInformation), 1); *nrofsinfos = 1; (*sinfos)->fields = GP_STORAGEINFO_BASE; strcpy ((*sinfos)->basedir, "/"); if (camera->pl->cached_drive) { (*sinfos)->fields = GP_STORAGEINFO_LABEL; strcpy ((*sinfos)->basedir, camera->pl->cached_drive); } (*sinfos)->fields |= GP_STORAGEINFO_MAXCAPACITY; (*sinfos)->capacitykbytes = camera->pl->cached_capacity; (*sinfos)->fields |= GP_STORAGEINFO_FREESPACEKBYTES; (*sinfos)->freekbytes = camera->pl->cached_available; (*sinfos)->fields |= GP_STORAGEINFO_ACCESS; (*sinfos)->access = GP_STORAGEINFO_AC_READONLY_WITH_DELETE; return GP_OK; } /****************************************************************************/ static int camera_about (Camera __unused__ *camera, CameraText *about, GPContext __unused__ *context) { GP_DEBUG ("camera_about()"); strcpy (about->text, _("Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin") ); return GP_OK; } /****************************************************************************/ static int delete_file_func (CameraFilesystem __unused__ *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; const char *thumbname; char canonfolder[300]; const char *_canonfolder; GP_DEBUG ("delete_file_func()"); _canonfolder = gphoto2canonpath (camera, folder, context); strncpy (canonfolder, _canonfolder, sizeof (canonfolder) - 1); canonfolder[sizeof (canonfolder) - 1] = 0; if (!check_readiness (camera, context)) return GP_ERROR; if (camera->pl->md->model == CANON_CLASS_3) { GP_DEBUG ("delete_file_func: deleting " "pictures disabled for cameras: PowerShot A5, PowerShot A5 ZOOM"); return GP_ERROR_NOT_SUPPORTED; } GP_DEBUG ("delete_file_func: filename: %s, folder: %s", filename, canonfolder); if (canon_int_delete_file (camera, filename, canonfolder, context) != GP_OK) { gp_context_error (context, _("Error deleting file")); return GP_ERROR; } /* If we have a file with associated thumbnail file that is not * listed, delete its thumbnail as well */ if (!camera->pl->list_all_files) { thumbname = canon_int_filename2thumbname (camera, filename); if ((thumbname != NULL) && (*thumbname != '\0')) { GP_DEBUG ("delete_file_func: thumbname: %s, folder: %s", thumbname, canonfolder); if (canon_int_delete_file (camera, thumbname, canonfolder, context) != GP_OK) { /* XXX should we handle this as an error? * Probably only in case the camera link died, * but not if the file just had already been * deleted before. */ gp_context_error (context, _("Error deleting associated thumbnail file")); return GP_ERROR; } } } return GP_OK; } #ifdef CANON_EXPERIMENTAL_UPLOAD /* * get from the filesystem the name of the highest numbered picture or directory * */ static int get_last_file (Camera *camera, char *directory, char *destname, GPContext* context, char getdirectory, char*result) { CameraFilesystem * fs = camera->fs; CameraList*list; char dir2[300]; int t; GP_DEBUG ("get_last_file()"); if(directory[1] == ':') { /* gp_file_list_folder() needs absolute filenames starting with '/' */ GP_DEBUG ("get_last_file(): replacing '%c:%c' by '/'", directory[0], directory[2]); sprintf(dir2, "/%s", &directory[3]); directory = dir2; } gp_list_new(&list); if(getdirectory) { CHECK_RESULT (gp_filesystem_list_folders (fs, directory, list, context)); GP_DEBUG ("get_last_file(): %d folders", list->count); } else { CHECK_RESULT (gp_filesystem_list_files (fs, directory, list, context)); GP_DEBUG ("get_last_file(): %d files", list->count); } for(t=0;tcount;t++) { char* name = list->entry[t].name; if(getdirectory) GP_DEBUG ("get_last_file(): folder: %s", name); else GP_DEBUG ("get_last_file(): file: %s", name); /* we search only for directories of the form [0-9]{3}CANON... */ if(getdirectory && ((strlen (name)!=8) || (!isdigit(name[0]) || !isdigit(name[1]) || !isdigit(name[2])) || strcmp(&name[3],"CANON"))) continue; /* ...and only for files similar to AUT_[0-9]{4} */ if(!getdirectory && (!isdigit(name[6]) || !isdigit(name[7]))) continue; if(!result[0] || strcmp((list->entry[t].name)+4, result+4) > 0) strcpy(result, list->entry[t].name); } gp_list_free(list); return GP_OK; } static int get_last_picture (Camera *camera, char *directory, char *destname, GPContext* context) { GP_DEBUG ("get_last_picture()"); return get_last_file(camera, directory, destname, context, 0, destname); } static int get_last_dir (Camera *camera, char *directory, char *destname, GPContext* context) { GP_DEBUG ("get_last_dir()"); return get_last_file(camera, directory, destname, context, 1, destname); } /* * convert a filename to 8.3 format by truncating * the basename to 8 and the extension to 3 chars * */ static void convert_filename_to_8_3(const char* filename, char* dest) { char*c; GP_DEBUG ("convert_filename_to_8_3()"); c = strchr(filename, '.'); if(!c) { sprintf(dest, "%.8s", filename); } else { int l = c-filename; if(l>8) l=8; memcpy(dest, filename, l); dest[l]=0; strcat(dest, c); dest[l+4]=0; } } /* XXX This function should be merged with the other one of the same name */ static int put_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; char destpath[300], destname[300], dir[300], dcf_root_dir[10]; int j, dirnum = 0, r, status; char buf[10]; CameraAbilities a; GP_DEBUG ("camera_folder_put_file()"); if (type != GP_FILE_TYPE_NORMAL) return GP_ERROR_BAD_PARAMETERS; if (!check_readiness (camera, context)) return GP_ERROR; gp_camera_get_abilities (camera, &a); /* Special case for A50 and Pro 70 */ if ((camera->pl->speed > 57600) && ((camera->pl->md->model == CANON_CLASS_1) || (camera->pl->md->model == CANON_CLASS_2))) { gp_context_error (context, _("Speeds greater than 57600 are not supported for uploading to this camera")); return GP_ERROR_NOT_SUPPORTED; } if (!check_readiness (camera, context)) { return GP_ERROR; } for (j = 0; j < sizeof (destpath); j++) { destpath[j] = '\0'; dir[j] = '\0'; destname[j] = '\0'; } if (camera->pl->cached_drive == NULL) { camera->pl->cached_drive = canon_int_get_disk_name (camera, context); if (camera->pl->cached_drive == NULL) { gp_context_error (context, _("Could not get flash drive letter")); return GP_ERROR; } } sprintf (dcf_root_dir, "%s\\DCIM", camera->pl->cached_drive); GP_DEBUG ("camera_folder_put_file(): dcf_root_dir=%s",dcf_root_dir); if (get_last_dir (camera, dcf_root_dir, dir, context) != GP_OK) return GP_ERROR; GP_DEBUG ("camera_folder_put_file(): dir=%s", dir?dir:"NULL"); if (strlen (dir) == 0) { sprintf (dir, "100CANON"); sprintf (destname, "AUT_0001.JPG"); sprintf (destpath, "%s\\%s", dcf_root_dir, dir); } else { if(camera->pl->upload_keep_filename) { char filename2[300]; if(!filename) return GP_ERROR; convert_filename_to_8_3(filename, filename2); sprintf(destname, "%s", filename2); } else { char dir2[300]; sprintf(dir2, "%s/%s", dcf_root_dir, dir); status = get_last_picture (camera, dir2, destname, context); if ( status < 0 ) return status; if (strlen (destname) == 0) { sprintf (destname, "AUT_%c%c01.JPG", dir[1], dir[2]); } else { sprintf (buf, "%c%c", destname[6], destname[7]); j = 1; j = atoi (buf); if (j == 99) { j = 1; sprintf (buf, "%c%c%c", dir[0], dir[1], dir[2]); dirnum = atoi (buf); if (dirnum == 999 && !camera->pl->upload_keep_filename) { gp_context_error (context, _("Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it.")); return GP_ERROR; } else { dirnum++; sprintf (dir, "%03iCANON", dirnum); } } else j++; sprintf (destname, "AUT_%c%c%02i.JPG", dir[1], dir[2], j); } } sprintf (destpath, "%s\\%s", dcf_root_dir, dir); GP_DEBUG ("destpath: %s destname: %s", destpath, destname); } GP_DEBUG ("camera_folder_put_file(): destpath=%s", destpath); GP_DEBUG ("camera_folder_put_file(): destname=%s", destname); r = canon_int_directory_operations (camera, dcf_root_dir, DIR_CREATE, context); if (r < 0) { gp_context_error (context, _("Could not create \\DCIM directory.")); return (r); } r = canon_int_directory_operations (camera, destpath, DIR_CREATE, context); if (r < 0) { gp_context_error (context, _("Could not create destination directory.")); return (r); } j = strlen (destpath); destpath[j] = '\\'; destpath[j + 1] = '\0'; clear_readiness (camera); return canon_int_put_file (camera, file, filename, destname, destpath, context); } #else /* not CANON_EXPERIMENTAL_UPLOAD */ static int put_file_func (CameraFilesystem __unused__ *fs, const char __unused__ *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; char destpath[300], destname[300], dir[300], dcf_root_dir[10]; unsigned int j; int dirnum = 0, r; char buf[10]; CameraAbilities a; GP_DEBUG ("camera_folder_put_file()"); if (type != GP_FILE_TYPE_NORMAL) return GP_ERROR_BAD_PARAMETERS; if (camera->port->type == GP_PORT_USB) { gp_context_error (context, "File upload not implemented for USB yet"); return GP_ERROR_NOT_SUPPORTED; } if (!check_readiness (camera, context)) return GP_ERROR; gp_camera_get_abilities (camera, &a); /* Special case for A50 and Pro 70 */ if ((camera->pl->speed > 57600) && ((camera->pl->md->model == CANON_CLASS_1) || (camera->pl->md->model == CANON_CLASS_2))) { gp_context_error (context, _("Speeds greater than 57600 are not " "supported for uploading to this camera")); return GP_ERROR_NOT_SUPPORTED; } if (!check_readiness (camera, context)) { return GP_ERROR; } for (j = 0; j < sizeof (destpath); j++) { destpath[j] = '\0'; dir[j] = '\0'; destname[j] = '\0'; } if (camera->pl->cached_drive == NULL) { camera->pl->cached_drive = canon_int_get_disk_name (camera, context); if (camera->pl->cached_drive == NULL) { gp_context_error (context, _("Could not get flash drive letter")); return GP_ERROR; } } sprintf (dcf_root_dir, "%s\\DCIM", camera->pl->cached_drive); if (strlen (dir) == 0) { sprintf (dir, "\\100CANON"); sprintf (destname, "AUT_0001.JPG"); } else { if (strlen (destname) == 0) { sprintf (destname, "AUT_%c%c01.JPG", dir[2], dir[3]); } else { sprintf (buf, "%c%c", destname[6], destname[7]); j = 1; j = atoi (buf); if (j == 99) { j = 1; sprintf (buf, "%c%c%c", dir[1], dir[2], dir[3]); dirnum = atoi (buf); if (dirnum == 999) { gp_context_error (context, _("Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it.")); return GP_ERROR; } else { dirnum++; sprintf (dir, "\\%03iCANON", dirnum); } } else j++; sprintf (destname, "AUT_%c%c%02i.JPG", dir[2], dir[3], j); } sprintf (destpath, "%s%s", dcf_root_dir, dir); GP_DEBUG ("destpath: %s destname: %s", destpath, destname); } r = canon_int_directory_operations (camera, dcf_root_dir, DIR_CREATE, context); if (r < 0) { gp_context_error (context, _("Could not create \\DCIM directory.")); return (r); } r = canon_int_directory_operations (camera, destpath, DIR_CREATE, context); if (r < 0) { gp_context_error (context, _("Could not create destination directory.")); return (r); } j = strlen (destpath); destpath[j] = '\\'; destpath[j + 1] = '\0'; clear_readiness (camera); return canon_int_put_file (camera, file, filename, destname, destpath, context); } #endif /* CANON_EXPERIMENTAL_UPLOAD */ /****************************************************************************/ /* Wait for an event */ static int camera_wait_for_event (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context) { return canon_int_wait_for_event (camera, timeout, eventtype, eventdata, context); } /* Get configuration into screen widgets for display. */ static int camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *t, *section; char power_str[128], firm[64]; int pwr_status, pwr_source, res, i, menuval; time_t camtime; char formatted_camera_time[30]; float zoom; unsigned char zoomVal, zoomMax; GP_DEBUG ("camera_get_config()"); if (!check_readiness (camera, context)) return -1; gp_widget_new (GP_WIDGET_WINDOW, _("Camera and Driver Configuration"), window); gp_widget_set_name (*window, "main"); gp_widget_new (GP_WIDGET_SECTION, _("Camera Settings"), §ion); gp_widget_set_name (section, "settings"); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_TEXT, _("Owner Name"), &t); gp_widget_set_name (t, "ownername"); gp_widget_set_value (t, camera->pl->owner); gp_widget_append (section, t); /* Capture size class */ gp_widget_new (GP_WIDGET_MENU, _("Capture Size Class"), &t); gp_widget_set_name (t, "capturesizeclass"); /* Map it to the list of choices */ i = 0; menuval = -1; while (captureSizeArray[i].label) { gp_widget_add_choice (t, _(captureSizeArray[i].label)); if (camera->pl->capture_size == captureSizeArray[i].value) { gp_widget_set_value (t, _(captureSizeArray[i].label)); menuval = i; } i++; } /* Set to "Compatibility mode" if not currently set */ if (menuval == -1) gp_widget_set_value (t, _("Compatibility Mode")); gp_widget_append (section, t); /********************* Release params **********************/ /* Necessary for release params: ISO, aperture, etc. */ if (!camera->pl->remote_control) { res = canon_int_start_remote_control (camera, context); if (res != GP_OK) return -1; } res = canon_int_get_release_params(camera, context); if (res != GP_OK) { for (i = 0 ; i < RELEASE_PARAMS_LEN ; i++) camera->pl->release_params[i] = -1; } /* ISO speed */ gp_widget_new (GP_WIDGET_MENU, _("ISO Speed"), &t); gp_widget_set_name (t, "iso"); /* Map ISO speed to the list of choices */ i = 0; menuval = -1; while (isoStateArray[i].label) { gp_widget_add_choice (t, isoStateArray[i].label); if (camera->pl->release_params[ISO_INDEX] == (int)isoStateArray[i].value) { gp_widget_set_value (t, isoStateArray[i].label); menuval = i; } i++; } /* Set an unknown ISO value if the * camera is set to something weird */ if (menuval == -1) { gp_widget_add_choice (t, _("Unknown")); gp_widget_set_value (t, _("Unknown")); }; gp_widget_append (section, t); /* Shooting mode */ gp_widget_new (GP_WIDGET_MENU, _("Shooting mode"), &t); gp_widget_set_name (t, "shootingmode"); /* Map shooting mode to the list of choices */ i = 0; menuval = -1; while (shootingModeStateArray[i].label) { gp_widget_add_choice (t, _(shootingModeStateArray[i].label)); if (camera->pl->release_params[SHOOTING_MODE_INDEX] == (int)shootingModeStateArray[i].value) { gp_widget_set_value (t, _(shootingModeStateArray[i].label)); menuval = i; } i++; } /* Set an unknown shooting mode value if the * camera is set to something weird */ if (menuval == -1) { gp_widget_add_choice (t, _("Unknown")); gp_widget_set_value (t, _("Unknown")); }; gp_widget_append (section, t); /* Shutter speed */ gp_widget_new (GP_WIDGET_MENU, _("Shutter Speed"), &t); gp_widget_set_name (t, "shutterspeed"); /* Map shutter speed to the list of choices */ i = 0; menuval = -1; while (shutterSpeedStateArray[i].label) { gp_widget_add_choice (t, _(shutterSpeedStateArray[i].label)); if (camera->pl->release_params[SHUTTERSPEED_INDEX] == (int)shutterSpeedStateArray[i].value) { gp_widget_set_value (t, _(shutterSpeedStateArray[i].label)); menuval = i; } i++; } /* Set an unknown shutter value if the * camera is set to something weird */ if (menuval == -1) { gp_widget_add_choice (t, _("Unknown")); gp_widget_set_value (t, _("Unknown")); }; gp_widget_append (section, t); /* DSLRs have only "Manual" Zoom */ if ( camera->pl->md->id_str && !strstr(camera->pl->md->id_str,"EOS") && !strstr(camera->pl->md->id_str,"Rebel")) { /* Zoom level */ gp_widget_new (GP_WIDGET_RANGE, _("Zoom"), &t); gp_widget_set_name (t, "zoom"); canon_int_get_zoom(camera, &zoomVal, &zoomMax, context); gp_widget_set_range (t, 0, zoomMax, 1); zoom = zoomVal; gp_widget_set_value (t, &zoom); gp_widget_append (section, t); } /* Aperture */ gp_widget_new (GP_WIDGET_MENU, _("Aperture"), &t); gp_widget_set_name (t, "aperture"); /* Map aperture to the list of choices */ i = 0; menuval = -1; while (apertureStateArray[i].label) { gp_widget_add_choice (t, _(apertureStateArray[i].label)); if (camera->pl->release_params[APERTURE_INDEX] == (int)apertureStateArray[i].value) { gp_widget_set_value (t, _(apertureStateArray[i].label)); menuval = i; } i++; } /* Set an unknown aperture value if the * camera is set to something weird */ if (menuval == -1) { gp_widget_add_choice (t, _("Unknown")); gp_widget_set_value (t, _("Unknown")); }; gp_widget_append (section, t); /* Exposure Compensation */ gp_widget_new (GP_WIDGET_MENU, _("Exposure Compensation"), &t); gp_widget_set_name (t, "exposurecompensation"); /* Map exposure compensation to the list of choices */ i = 0; menuval = -1; while (exposureBiasStateArray[i].label) { gp_widget_add_choice (t, _(exposureBiasStateArray[i].label)); if (camera->pl->release_params[EXPOSUREBIAS_INDEX] == exposureBiasStateArray[i].value) { gp_widget_set_value (t, _(exposureBiasStateArray[i].label)); menuval = i; } i++; } /* Set an unknown exp bias value if the * camera is set to something weird */ if (menuval == -1) { gp_widget_add_choice (t, _("Unknown")); gp_widget_set_value (t, _("Unknown")); }; gp_widget_append (section, t); /* Image Format */ gp_widget_new (GP_WIDGET_MENU, _("Image Format"), &t); gp_widget_set_name (t, "imageformat"); /* Map image format to the list of choices */ i = 0; menuval = -1; while (imageFormatStateArray[i].label) { gp_widget_add_choice (t, _(imageFormatStateArray[i].label)); if ((camera->pl->release_params[IMAGE_FORMAT_1_INDEX] == imageFormatStateArray[i].res_byte1) && (camera->pl->release_params[IMAGE_FORMAT_2_INDEX] == imageFormatStateArray[i].res_byte2) && (camera->pl->release_params[IMAGE_FORMAT_3_INDEX] == imageFormatStateArray[i].res_byte3)) { gp_widget_set_value (t, _(imageFormatStateArray[i].label)); menuval = i; } i++; } /* Set an unknown imageFormat value if the * camera is set to something weird */ if (menuval == -1) { gp_widget_add_choice (t, _("Unknown")); gp_widget_set_value (t, _("Unknown")); }; gp_widget_append (section, t); /* Focus Mode */ gp_widget_new (GP_WIDGET_MENU, _("Focus Mode"), &t); gp_widget_set_name (t, "focusmode"); /* Map focus to the list of choices */ i = 0; menuval = -1; while (focusModeStateArray[i].label) { gp_widget_add_choice (t, _(focusModeStateArray[i].label)); if (camera->pl->release_params[FOCUS_MODE_INDEX] == (int)focusModeStateArray[i].value) { gp_widget_set_value (t, _(focusModeStateArray[i].label)); menuval = i; } i++; } /* Set an unknown focus mode value if the * camera is set to something weird */ if (menuval == -1) { gp_widget_add_choice (t, _("Unknown")); gp_widget_set_value (t, _("Unknown")); }; gp_widget_append (section, t); /* Flash Mode */ gp_widget_new (GP_WIDGET_MENU, _("Flash Mode"), &t); gp_widget_set_name (t, "flashmode"); /* Map flash mode to the list of choices */ i = 0; menuval = -1; while (flashModeStateArray[i].label) { gp_widget_add_choice (t, _(flashModeStateArray[i].label)); if (camera->pl->release_params[FLASH_INDEX] == (int)flashModeStateArray[i].value) { gp_widget_set_value (t, _(flashModeStateArray[i].label)); menuval = i; } i++; } /* Set an unknown flash value if the * camera is set to something weird */ if (menuval == -1) { gp_widget_add_choice (t, _("Unknown")); gp_widget_set_value (t, _("Unknown")); }; gp_widget_append (section, t); /* Beep */ gp_widget_new (GP_WIDGET_MENU, _("Beep"), &t); gp_widget_set_name (t, "beep"); /* Map beep mode to the list of choices */ i = 0; menuval = -1; while (beepModeStateArray[i].label) { gp_widget_add_choice (t, _(beepModeStateArray[i].label)); if (camera->pl->release_params[BEEP_INDEX] == (int)beepModeStateArray[i].value) { gp_widget_set_value (t, _(beepModeStateArray[i].label)); menuval = i; } i++; } /* Set an unknown beep value if the * camera is set to something weird */ if (menuval == -1) { gp_widget_add_choice (t, _("Unknown")); gp_widget_set_value (t, _("Unknown")); }; gp_widget_append (section, t); /************************ end release params ************************/ /* *** Actions */ gp_widget_new (GP_WIDGET_SECTION, _("Camera Actions"), §ion); gp_widget_set_name (section, "actions"); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_TOGGLE, _("Synchronize camera date and time with PC"), &t); gp_widget_set_name (t, "syncdatetime"); gp_widget_append (section, t); /* *** Status */ gp_widget_new (GP_WIDGET_SECTION, _("Camera Status Information"), §ion); gp_widget_set_name (section, "status"); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_TEXT, _("Camera Model"), &t); gp_widget_set_name (t, "model"); gp_widget_set_value (t, camera->pl->ident); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_TEXT, _("Date and Time"), &t); gp_widget_set_name (t, "datetime"); res = canon_int_get_time (camera, &camtime, context); if (res == GP_OK) { strftime (formatted_camera_time, sizeof (formatted_camera_time), "%Y-%m-%d %H:%M:%S", gmtime (&camtime)); gp_widget_set_value (t, formatted_camera_time); } else { gp_widget_set_value (t, _("Error")); } gp_widget_append (section, t); gp_widget_new (GP_WIDGET_TEXT, _("Firmware Version"), &t); gp_widget_set_name (t, "firmwareversion"); sprintf (firm, "%i.%i.%i.%i", camera->pl->firmwrev[3], camera->pl->firmwrev[2], camera->pl->firmwrev[1], camera->pl->firmwrev[0]); gp_widget_set_value (t, firm); gp_widget_append (section, t); canon_get_batt_status (camera, &pwr_status, &pwr_source, context); if (pwr_status == CAMERA_POWER_OK || pwr_status == CAMERA_POWER_BAD) snprintf (power_str, sizeof (power_str), "%s (%s)", ((pwr_source & CAMERA_MASK_BATTERY) == 0) ? _("AC adapter") : _("on battery"), pwr_status == CAMERA_POWER_OK ? _("power OK") : _("power bad")); else snprintf (power_str, sizeof (power_str), "%s - %i", ((pwr_source & CAMERA_MASK_BATTERY) == 0) ? _("AC adapter") : _("on battery"), pwr_status); gp_widget_new (GP_WIDGET_TEXT, _("Power"), &t); gp_widget_set_name (t, "power"); gp_widget_set_value (t, power_str); gp_widget_append (section, t); /* *** Driver */ gp_widget_new (GP_WIDGET_SECTION, _("Driver"), §ion); gp_widget_set_name (t, "driver"); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_TOGGLE, _("List all files"), &t); gp_widget_set_name (t, "list_all_files"); gp_widget_set_value (t, &camera->pl->list_all_files); gp_widget_append (section, t); #ifdef CANON_EXPERIMENTAL_UPLOAD gp_widget_new (GP_WIDGET_TOGGLE, _("Keep filename on upload"), &t); gp_widget_set_name (t, "keep_filename_on_upload"); gp_widget_set_value (t, &camera->pl->upload_keep_filename); gp_widget_append (section, t); #endif /* CANON_EXPERIMENTAL_UPLOAD */ return GP_OK; } /* Set camera configuration from screen widgets. */ static int camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *w; char *wvalue; int i, val; int res; unsigned char iso, shutter_speed, aperture, focus_mode, flash_mode, beep, shooting_mode; char str[16]; GP_DEBUG ("camera_set_config()"); gp_widget_get_child_by_label (window, _("Owner Name"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { if (canon_int_set_owner_name (camera, wvalue, context) == GP_OK) gp_context_status (context, _("Owner name changed")); else gp_context_status (context, _("could not change owner name")); } } gp_widget_get_child_by_label (window, _("Capture Size Class"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); i = 0; while (captureSizeArray[i].label) { if (strcmp (_(captureSizeArray[i].label), wvalue) == 0) { camera->pl->capture_size = captureSizeArray[i].value; gp_context_status (context, _("Capture size class changed")); break; } i++; } if (!captureSizeArray[i].label) gp_context_status (context, _("Invalid capture size class setting")); } /* Enable remote control, if not already enabled */ if (!camera->pl->remote_control) { res = canon_int_start_remote_control (camera, context); if (res != GP_OK) return -1; } gp_widget_get_child_by_label (window, _("ISO Speed"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { /* Map the menu option setting to the camera binary value */ i = 0; while (isoStateArray[i].label) { if (strcmp (isoStateArray[i].label, wvalue) == 0) { iso = isoStateArray[i].value; break; } i++; } if (!isoStateArray[i].label) { gp_context_status (context, _("Invalid ISO speed setting")); } else { if (canon_int_set_iso (camera, iso, context) == GP_OK) gp_context_status (context, _("ISO speed changed")); else gp_context_status (context, _("Could not change ISO speed")); } } } gp_widget_get_child_by_label (window, _("Shooting mode"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { /* Map the menu option setting to the camera binary value */ i = 0; while (shootingModeStateArray[i].label) { if (strcmp (shootingModeStateArray[i].label, wvalue) == 0) { shooting_mode = shootingModeStateArray[i].value; break; } i++; } if (!shootingModeStateArray[i].label) { gp_context_status (context, _("Invalid shooting mode setting")); } else { if (canon_int_set_shooting_mode (camera, shooting_mode, context) == GP_OK) gp_context_status (context, _("Shooting mode changed")); else gp_context_status (context, _("Could not change shooting mode")); } } } gp_widget_get_child_by_label (window, _("Shutter Speed"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { /* Map the menu option setting to the camera binary value */ i = 0; while (shutterSpeedStateArray[i].label) { if (strcmp (_(shutterSpeedStateArray[i].label), wvalue) == 0) { shutter_speed = shutterSpeedStateArray[i].value; break; } i++; } if (!shutterSpeedStateArray[i].label) { gp_context_status (context, _("Invalid shutter speed setting")); } else { if (canon_int_set_shutter_speed (camera, shutter_speed, context) == GP_OK) gp_context_status (context, _("Shutter speed changed")); else gp_context_status (context, _("Could not change shutter speed")); } } } gp_widget_get_child_by_label (window, _("Aperture"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { /* Map the menu option setting to the camera binary value */ i = 0; while (apertureStateArray[i].label) { if (strcmp (apertureStateArray[i].label, wvalue) == 0) { aperture = apertureStateArray[i].value; break; } i++; } if (!apertureStateArray[i].label) { gp_context_status (context, _("Invalid aperture setting")); } else { if (canon_int_set_aperture (camera, aperture, context) == GP_OK) gp_context_status (context, _("Aperture changed")); else gp_context_status (context, _("Could not change aperture")); } } } gp_widget_get_child_by_label (window, _("Exposure Compensation"), &w); if (gp_widget_changed (w)) { unsigned char expbias; gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { /* Map the menu option setting to the camera binary value */ i = 0; while (exposureBiasStateArray[i].label) { if (strcmp (exposureBiasStateArray[i].label, wvalue) == 0) { expbias = exposureBiasStateArray[i].value; break; } i++; } if (!exposureBiasStateArray[i].label) { gp_context_status (context, _("Invalid exposure compensation setting")); } else { if (canon_int_set_exposurebias (camera, expbias, context) == GP_OK) gp_context_status (context, _("Exposure compensation changed")); else gp_context_status (context, _("Could not change exposure compensation")); } } } gp_widget_get_child_by_label (window, _("Image Format"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { /* Map the menu option setting to the camera binary value */ i = 0; while (imageFormatStateArray[i].label) { if (strcmp (imageFormatStateArray[i].label, wvalue) == 0) break; i++; } if (!imageFormatStateArray[i].label) { gp_context_status (context, _("Invalid image format setting")); } else { if (canon_int_set_image_format (camera, imageFormatStateArray[i].res_byte1, imageFormatStateArray[i].res_byte2, imageFormatStateArray[i].res_byte3, context) == GP_OK) gp_context_status (context, _("Image format changed")); else gp_context_status (context, _("Could not change image format")); } } } gp_widget_get_child_by_label (window, _("Focus Mode"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { /* Map the menu option setting to the camera binary value */ i = 0; while (focusModeStateArray[i].label) { if (strcmp (focusModeStateArray[i].label, wvalue) == 0) { focus_mode = focusModeStateArray[i].value; break; } i++; } if (!focusModeStateArray[i].label) { gp_context_status (context, _("Invalid focus mode setting")); } else { if (canon_int_set_focus_mode (camera, focus_mode, context) == GP_OK) gp_context_status (context, _("Focus mode changed")); else gp_context_status (context, _("Could not change focus mode")); } } } /* Beep */ gp_widget_get_child_by_label (window, _("Beep"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { /* Map the menu option setting to the camera binary value */ i = 0; while (beepModeStateArray[i].label) { if (strcmp (_(beepModeStateArray[i].label), wvalue) == 0) { beep = beepModeStateArray[i].value; break; } i++; } if (!beepModeStateArray[i].label) { gp_context_status (context, _("Invalid beep mode setting")); } else { if (canon_int_set_beep (camera, beep, context) == GP_OK) gp_context_status (context, _("Beep mode changed")); else gp_context_status (context, _("Could not change beep mode")); } } } /* DSLRs have only "Manual" Zoom */ if ( camera->pl->md->id_str && !strstr(camera->pl->md->id_str,"EOS") && !strstr(camera->pl->md->id_str,"Rebel")) { /* Zoom */ gp_widget_get_child_by_label (window, _("Zoom"), &w); if (gp_widget_changed (w)) { float zoom; gp_widget_get_value (w, &zoom); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { if (canon_int_set_zoom (camera, zoom, context) == GP_OK) gp_context_status (context, _("Zoom level changed")); else gp_context_status (context, _("Could not change zoom level")); } } } /* Aperture */ gp_widget_get_child_by_label (window, _("Aperture"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { /* Map the menu option setting to the camera binary value */ i = 0; while (apertureStateArray[i].label) { if (strcmp (_(apertureStateArray[i].label), wvalue) == 0) { aperture = apertureStateArray[i].value; break; } i++; } if (!apertureStateArray[i].label) { gp_context_status (context, _("Invalid aperture setting")); } else { if (canon_int_set_aperture (camera, aperture, context) == GP_OK) gp_context_status (context, _("Aperture changed")); else gp_context_status (context, _("Could not change aperture")); } } } /* Flash mode */ gp_widget_get_child_by_label (window, _("Flash Mode"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { /* Map the menu option setting to the camera binary value */ i = 0; while (flashModeStateArray[i].label) { if (strcmp (_(flashModeStateArray[i].label), wvalue) == 0) { flash_mode = flashModeStateArray[i].value; break; } i++; } if (!flashModeStateArray[i].label) { gp_context_status (context, _("Invalid flash mode setting")); } else { if (canon_int_set_flash (camera, flash_mode, context) == GP_OK) gp_context_status (context, _("Flash mode changed")); else gp_context_status (context, _("Could not change flash mode")); } } } gp_widget_get_child_by_label (window, _("Synchronize camera date and time with PC"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &wvalue); if (!check_readiness (camera, context)) { gp_context_status (context, _("Camera unavailable")); } else { if (canon_int_set_time (camera, time (NULL), context) == GP_OK) { gp_context_status (context, _("time set")); } else { gp_context_status (context, _("could not set time")); } } } gp_widget_get_child_by_label (window, _("List all files"), &w); if (gp_widget_changed (w)) { /* XXXXX mark CameraFS as dirty */ gp_widget_get_value (w, &val); camera->pl->list_all_files = val; sprintf (str, "%d", val); gp_setting_set ("canon", "list_all_files", str); gp_widget_get_value (w, &camera->pl->list_all_files); GP_DEBUG ("New config value for \"List all files\" %i", camera->pl->list_all_files); } #ifdef CANON_EXPERIMENTAL_UPLOAD gp_widget_get_child_by_label (window, _("Keep filename on upload"), &w); if (gp_widget_changed (w)) { gp_widget_get_value (w, &camera->pl->upload_keep_filename); GP_DEBUG ("New config value for \"Keep filename on upload\": %i", camera->pl->upload_keep_filename); } #endif /* CANON_EXPERIMENTAL_UPLOAD */ GP_DEBUG ("done configuring camera."); return GP_OK; } static int get_info_func (CameraFilesystem __unused__ *fs, const char *folder, const char *filename, CameraFileInfo * info, void __unused__ *data, GPContext __unused__ *context) { Camera *camera = data; GP_DEBUG ("get_info_func() called for '%s'/'%s'", folder, filename); info->preview.fields = GP_FILE_INFO_TYPE; /* thumbnails are always jpeg on Canon Cameras */ strcpy (info->preview.type, GP_MIME_JPEG); /* FIXME GP_FILE_INFO_PERMISSIONS to add */ info->file.fields = GP_FILE_INFO_TYPE; /* | GP_FILE_INFO_PERMISSIONS | GP_FILE_INFO_SIZE; */ /* info->file.fields.permissions = */ if (is_movie (filename)) strcpy (info->file.type, GP_MIME_AVI); else if (is_image (filename)) strcpy (info->file.type, GP_MIME_JPEG); else if (is_audio (filename)) strcpy (info->file.type, GP_MIME_WAV); else strcpy (info->file.type, GP_MIME_UNKNOWN); /* let it fill driver specific info */ return canon_int_get_info_func (camera, folder, filename, info, context); } static int make_dir_func (CameraFilesystem __unused__ *fs, const char *folder, const char *name, void *data, GPContext *context) { Camera *camera = data; char gppath[2048]; const char *canonpath; int r; GP_DEBUG ("make_dir_func folder '%s' name '%s'", folder, name); if (strlen (folder) > 1) { /* folder is something more than / */ if (strlen (folder) + 1 + strlen (name) > sizeof (gppath) - 1) { GP_DEBUG ("make_dir_func: Arguments too long"); return GP_ERROR_BAD_PARAMETERS; } sprintf (gppath, "%s/%s", folder, name); } else { if (1 + strlen (name) > sizeof (gppath) - 1) { GP_DEBUG ("make_dir_func: Arguments too long"); return GP_ERROR_BAD_PARAMETERS; } sprintf (gppath, "/%s", name); } canonpath = gphoto2canonpath (camera, gppath, context); if (canonpath == NULL) return GP_ERROR_BAD_PARAMETERS; r = canon_int_directory_operations (camera, canonpath, DIR_CREATE, context); if (r != GP_OK) return (r); return (GP_OK); } static int remove_dir_func (CameraFilesystem __unused__ *fs, const char *folder, const char *name, void *data, GPContext *context) { Camera *camera = data; char gppath[2048]; const char *canonpath; int r; GP_DEBUG ("remove_dir_func folder '%s' name '%s'", folder, name); if (strlen (folder) > 1) { /* folder is something more than / */ if (strlen (folder) + 1 + strlen (name) > sizeof (gppath) - 1) { GP_DEBUG ("make_dir_func: Arguments too long"); return GP_ERROR_BAD_PARAMETERS; } sprintf (gppath, "%s/%s", folder, name); } else { if (1 + strlen (name) > sizeof (gppath) - 1) { GP_DEBUG ("make_dir_func: Arguments too long"); return GP_ERROR_BAD_PARAMETERS; } sprintf (gppath, "/%s", name); } canonpath = gphoto2canonpath (camera, gppath, context); if (canonpath == NULL) return GP_ERROR_BAD_PARAMETERS; r = canon_int_directory_operations (camera, canonpath, DIR_REMOVE, context); if (r != GP_OK) return (r); return (GP_OK); } /****************************************************************************/ /** * camera_init: * @camera: the camera to initialize * @context: a #GPContext * * This routine initializes the serial/USB port and also loads the * camera settings. Right now it is only the speed that is * saved. * * Returns: gphoto2 error code * */ static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .put_file_func = put_file_func, .make_dir_func = make_dir_func, .remove_dir_func = remove_dir_func, .storage_info_func = storage_info_func }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; char buf[1024]; GP_DEBUG ("canon camera_init()"); /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->capture = camera_capture; camera->functions->capture_preview = camera_capture_preview; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; camera->functions->wait_for_event = camera_wait_for_event; /* Set up the CameraFilesystem */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); camera->pl->first_init = 1; camera->pl->seq_tx = 1; camera->pl->seq_rx = 1; /* default to false, i.e. list only known file types, use DCIF filenames */ if (gp_setting_get ("canon", "list_all_files", buf) == GP_OK) camera->pl->list_all_files = atoi(buf); else camera->pl->list_all_files = FALSE; #ifdef CANON_EXPERIMENTAL_UPLOAD camera->pl->upload_keep_filename = FALSE; #endif switch (camera->port->type) { case GP_PORT_USB: GP_DEBUG ("GPhoto tells us that we should use a USB link."); return canon_usb_init (camera, context); break; case GP_PORT_SERIAL: GP_DEBUG ("GPhoto tells us that we should use a RS232 link."); /* Figure out the speed (and set to default speed if 0) */ gp_port_get_settings (camera->port, &settings); camera->pl->speed = settings.serial.speed; if (camera->pl->speed == 0) camera->pl->speed = 9600; GP_DEBUG ("Camera transmission speed : %i", camera->pl->speed); return canon_serial_init (camera); break; default: gp_context_error (context, _("Unsupported port type %i = 0x%x given. " "Initialization impossible."), camera->port->type, camera->port->type); return GP_ERROR_NOT_SUPPORTED; break; } /* NOT REACHED */ return GP_ERROR; } /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/canon/library.h0000644000175000001440000000216712561423351015052 00000000000000/**************************************************************************** * * File: library.h * ****************************************************************************/ #ifndef _LIBRARY_H #define _LIBRARY_H /**************************************************************************** * * These are defines for packet command codes collected from several * sources. There's no guarantee, that they are correct... * * The same is true for the ident string offset * ****************************************************************************/ /* #define CANON_CMD_ACK 0x04 */ /* #define CANON_CMD_PING 0x10 */ /* #define CANON_PCK_SOT 0x05 */ /* #define CANON_PCK_EOT 0x04 */ /* #define CANON_PCK_CMD 0x00 */ /* #define CANON_PCK_IDENT 0x06 */ void clear_readiness(Camera *camera); #define GP_MODULE "canon" #endif /* _LIBRARY_H */ /**************************************************************************** * * End of file: library.h * ****************************************************************************/ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/canon/crc.c0000644000175000001440000003051212610415617014144 00000000000000#include "config.h" #include #include #include "crc.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif /* * CRC 0102010 */ static unsigned short crc_table[256] = { 0x0, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x318, 0x77a7, 0x662e, 0x54b5, 0x453c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x420, 0x15a9, 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0xa50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0xb58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0xc60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0xd68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0xe70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0xf78, }; /* * Initial CRC values. Determined by looking at CRCs sent by the camera. */ static int crc_init[1024] = { -1, -1, -1, -1, -1, 0x83a4, 0x5b70, 0x724e, 0x0ee6, 0x5969, 0x7b6c, 0x647f, 0x8e90, 0x07ad, 0x5af0, 0xfa5f, 0x77aa, 0xc2b3, 0x5003, 0x59f5, 0xe76c, 0xad67, 0xe2af, 0x4632, 0xd983, 0xb9a8, 0x8cfb, 0x7c8f, 0xbf08, 0x1c9d, 0xb35b, 0x2f51, 0xec49, 0xd0dc, 0xae31, 0xac9c, 0x11be, 0xf886, 0xbe88, 0x948c, 0xca17, 0xb48b, 0xc726, 0xed56, 0xc7cd, 0x0656, 0xa9e1, 0x44eb, 0x10a1, 0xef97, 0x16ef, 0x91f1, 0x9f42, 0x5cac, 0x9639, 0x6f35, 0x9c2b, 0x2d9f, 0x326b, 0x3f84, 0xb859, 0x75ea, 0x9291, 0xe771, 0xb067, 0x0b62, 0xf53c, 0x6c55, 0xe418, 0xc154, 0xaf30, 0xa58d, 0x4827, 0xbc6d, 0x61ae, 0x77c5, 0xadb3, 0x36af, 0xdbc0, 0xea8a, 0x23ba, 0x6785, 0x6ca3, 0x1218, 0x46b5, 0x5e83, 0xa91b, 0xbeeb, 0xf78c, 0xcc77, 0xe4ed, 0x3454, 0x30e2, 0xa6a6, 0x7b14, 0x1c7f, 0x515b, 0x09e4, 0x631e, 0xd7e7, 0xad46, 0xc3af, 0x4412, 0xe9a1, 0x1089, 0xc797, 0x5c56, 0x6c39, 0x8818, 0xbfcb, 0xdf9d, 0x97ce, 0x9024, 0x4253, 0x98c7, 0xe1db, 0x2a01, 0x941c, 0x5a17, 0x1d5f, 0x794a, 0x525d, 0x17d7, 0xa1e0, 0x0563, 0x84d2, 0x1507, 0x61c2, 0x1bc5, 0xd32c, 0x4602, 0xe983, 0x3289, 0xdd84, 0x9eec, 0xfabd, 0x95aa, 0xe406, 0xdf54, 0x5ece, 0xe41b, 0xc254, 0xb703, 0x5715, 0x7782, 0xeab3, 0x1aba, 0xa43d, 0xf036, 0x4e00, 0xab0b, 0xbec9, 0xd58c, 0xd664, 0x2657, 0xa2d0, 0x2d50, 0xfd6b, 0x7bdd, 0xd57f, 0x2564, 0x89e3, 0x4cda, 0x6129, 0xf0c5, 0xbd00, 0x04bf, 0x50c3, 0x99f5, 0xdbca, 0xe08a, 0x7310, 0x58f7, 0xed7d, 0xeccd, 0x54dc, 0xa6b1, 0x6c14, 0xa518, 0xdd27, 0x3dec, 0xc07b, 0x8821, 0x86cb, 0x1c25, 0x0b5b, 0xcc3c, 0xafed, 0x788d, 0x9d4c, 0x428e, 0x45c7, 0x34b0, 0xd4e2, 0xb075, 0x1962, 0x640e, 0xff90, 0x90ff, 0x9953, 0x7dca, 0xf219, 0x7122, 0x7ad5, 0xd56e, 0x3464, 0x00e2, 0x2d87, 0x2a6b, 0xfe1c, 0x14ee, 0x80d3, 0x3443, 0x27e2, 0x1fc1, 0xf768, 0x2877, 0xf23e, 0x5622, 0x4893, 0x086d, 0xe20f, 0xe632, 0xfb76, 0x56bb, 0xd193, 0xe920, 0x9189, 0xe742, 0x8367, 0x9870, 0x56db, 0xb193, 0xf773, 0x3377, 0x2b95, 0x080d, 0x820f, 0xf861, 0x5988, 0x9a6c, 0x5af9, 0xf35f, 0x3f33, 0x0f59, 0xee78, 0xf1fe, 0x8e11, 0x86ad, 0x7a25, 0x256e, 0x83e3, 0x1c70, 0x5e5b, 0x711b, 0x43d5, 0x16d6, 0xa8f1, 0x5cfa, 0xc039, 0xca21, 0x828b, 0x7c61, 0x5108, 0x5ae4, 0xee5f, 0xd6fe, 0xbc57, 0x5bae, 0xac4e, 0xc3be, 0x5512, 0x60a0, 0x71d4, 0x8cd5, 0x528f, 0xc5d7, 0x0c74, 0xdb4b, 0x618a, 0x53c5, 0x87c6, 0x1934, 0x320e, 0x5a84, 0x8e5f, 0xc8ad, 0x1ea9, 0x9779, 0x2724, 0xd9c1, 0xfba8, 0x88bb, 0x1ccb, 0xe55b, 0x8a45, 0xf2e9, 0x8122, 0xcd52, 0xc9fc, 0x47b8, 0x5b92, 0x904e, 0x2853, 0xd63e, 0x7c57, 0x6708, 0xe1a3, 0x5201, 0x4bd7, 0x545e, 0x24b1, 0x54f2, 0x88b1, 0x16cb, 0xb5f1, 0xb537, 0x7337, 0x7ff7, 0xdf3b, 0x31ce, 0x82b7, 0x4061, 0xbae5, 0xd9c8, 0xf2a8, 0xc022, 0xd121, 0x5b20, 0x224e, 0x9b94, 0xaae8, 0x55d8, 0xaaa0, 0x1dd8, 0xfe4a, 0x42ee, 0x25c7, 0x2ae3, 0x761c, 0x7ca2, 0x9208, 0x7e71, 0x512a, 0x78e4, 0xf44c, 0x1444, 0x2ad3, 0x461c, 0xf783, 0xc377, 0x9c12, 0x149f, 0xf1d3, 0xa311, 0xe441, 0x9854, 0x72db, 0x9be6, 0xd8e8, 0xdab9, 0x9b9b, 0xa5e8, 0x2d27, 0x8a6b, 0xdce9, 0xfbfd, 0xddbb, 0xa1ec, 0x0963, 0xe41e, 0xc754, 0x9f56, 0x48ac, 0x376d, 0x11d1, 0x9786, 0xd824, 0x16b9, 0xc7f1, 0x3a56, 0x420c, 0xc7c7, 0x0c56, 0xf94b, 0x7b99, 0x917f, 0x1142, 0x0486, 0x69c3, 0x5a4d, 0x475f, 0xbc92, 0x9eae, 0xb8bd, 0x91ea, 0x8442, 0x8507, 0xc816, 0xa5a9, 0x6c27, 0x9618, 0x4e35, 0x9e0b, 0x1dbd, 0x9b4a, 0x74e8, 0x9880, 0xa6db, 0x0614, 0xebe1, 0x40ab, 0x70e5, 0xb5c4, 0x8037, 0xd043, 0x3131, 0x7db7, 0x8f19, 0x86bc, 0x6b25, 0xac6f, 0xe2be, 0x5732, 0x5082, 0xd8f5, 0xc7b9, 0x7256, 0x16e6, 0x98f1, 0xd7db, 0x9146, 0x2842, 0xc73e, 0xf556, 0x0655, 0xaae1, 0x5cd8, 0xe239, 0xd032, 0x4031, 0xeae5, 0x4cba, 0x0129, 0xee96, 0x1ffe, 0xc868, 0xdba9, 0x838a, 0x7570, 0x0891, 0x1e0f, 0x3179, 0x35b7, 0xdbf3, 0xd98a, 0xb0a8, 0xc462, 0xb165, 0x0173, 0xb496, 0xda26, 0x049b, 0x74c3, 0xb380, 0xf451, 0x0944, 0xc31e, 0xf512, 0x4255, 0x9ec7, 0xd1bd, 0xc720, 0xeb56, 0xf7ab, 0xeb77, 0xd6ab, 0xe957, 0xe689, 0x4076, 0xade5, 0x60af, 0x7ed4, 0xf42a, 0x7244, 0x04e6, 0x09c3, 0x441e, 0xe5a1, 0x7045, 0x15c4, 0xa2c2, 0x3f50, 0x6c59, 0xe818, 0xa198, 0x7d63, 0x5b19, 0x1b4e, 0x582c, 0x367d, 0x09c0, 0x471e, 0xfd92, 0x82dd, 0x2a61, 0xf41c, 0x4444, 0xbfa1, 0xb59d, 0xd937, 0x0da8, 0x0f5a, 0xed78, 0xe9cd, 0x7c89, 0xb908, 0x2cfb, 0x5e7a, 0x501b, 0x41f5, 0x26f4, 0x01d0, 0x1796, 0xe0e0, 0x1910, 0x160e, 0x70f1, 0xa1c4, 0x2163, 0xaea7, 0x3a9c, 0x880c, 0xabcb, 0x7ec9, 0xe92a, 0x9b89, 0xb7e8, 0xbc15, 0x19ae, 0xa80e, 0xa3fa, 0x0f41, 0xf678, 0x3066, 0x22a6, 0x7394, 0xdcf7, 0xe5fd, 0x2c45, 0xe07a, 0x8310, 0xef70, 0xf1ef, 0x9f11, 0x0fac, 0x1b78, 0x6e2c, 0x8d3a, 0xb59e, 0xda37, 0x159b, 0xfdc2, 0xd2dd, 0xbf13, 0x079d, 0x6af0, 0x717e, 0x26d5, 0x20d0, 0x15b6, 0xd0c2, 0xb031, 0x5d62, 0x5028, 0x72f5, 0xb5e6, 0xa237, 0xca50, 0xf38b, 0xeb33, 0x92ab, 0xdd71, 0x6bec, 0x656f, 0x9681, 0xd735, 0x7f46, 0x6e3b, 0x9a3a, 0x0cf9, 0x564b, 0x2193, 0x5ea7, 0x8d1b, 0x949e, 0xd817, 0x25b9, 0x54e3, 0x99b1, 0x9fca, 0xd4ac, 0xfe75, 0x7dee, 0xd619, 0x5b57, 0x554e, 0x3ca0, 0x846a, 0xad07, 0x82af, 0x5861, 0x7b7d, 0x757f, 0x0791, 0x66f0, 0x11b2, 0xf486, 0xde44, 0x46df, 0x3483, 0xe7e2, 0x2367, 0xba85, 0xb9c8, 0xecfb, 0x62dc, 0x1df6, 0xd04a, 0x3831, 0x352e, 0x42f3, 0x38c7, 0xc32e, 0xc512, 0xc974, 0xcfb8, 0x33de, 0x8295, 0x6261, 0xa0f6, 0x1b72, 0x642c, 0xdd90, 0x8aec, 0x5be9, 0xeb4e, 0xefab, 0x2aef, 0x7a1c, 0x1c6e, 0x405b, 0x80e5, 0x0243, 0x9ca5, 0xa39f, 0x6a41, 0xc07e, 0x8d21, 0xae9e, 0x039c, 0x4bb4, 0x375e, 0x22d1, 0x0494, 0x7bc3, 0xcb7f, 0xd49a, 0xc875, 0xc6a9, 0x6a47, 0xc67e, 0xbd47, 0x43bf, 0x7cd6, 0xe608, 0xc176, 0x8d30, 0xbf9e, 0x8a9d, 0x2ae9, 0x7c1c, 0x2c08, 0xad7a, 0xffaf, 0xafff, 0x6a8d, 0x0c7e, 0xd14b, 0x3120, 0x6cb7, 0x0618, 0xe7e1, 0x2067, 0xa2b6, 0x4b50, 0xd35e, 0x3402, 0x66e2, 0x03b2, 0x65b4, 0x4d81, 0x3238, 0x6c84, 0x3518, 0x74f3, 0x8380, 0x7f70, 0x583b, 0x217d, 0xb0a7, 0xcb62, 0xc99a, 0x21b8, 0x75a7, 0xdf91, 0x9bce, 0xf0e8, 0x9000, 0x6653, 0xb2b2, 0xce40, 0xc3cf, 0x2412, 0xf7f2, 0xb277, 0x0b40, 0xd73c, 0x7646, 0x26a2, 0x57d0, 0xb282, 0xfe40, 0x48ee, 0x756d, 0x1591, 0xf7c2, 0x8277, 0x8061, 0x8643, 0x9425, 0x6317, 0xdee7, 0xe5df, 0x0e45, 0xfa69, 0x41aa, 0x79f4, 0xec5d, 0xc4dc, 0x0f65, 0xd278, 0x1a13, 0x0d3d, 0x9a5a, 0x6cf9, 0x4818, 0x836d, 0x9270, 0x0671, 0x8ee1, 0x76ad, 0xcda2, 0x39fc, 0xf03f, 0x4700, 0xe392, 0x7323, 0x6bf7, 0x7e6f, 0x4f2a, 0x891a, 0xb5da, 0x9e37, 0x21bd, 0x70a7, 0xf7c4, 0x8477, 0xb007, 0x6b62, 0xeb6f, 0xceab, 0x28cf, 0x4a3e, 0xb54f, 0x0b37, 0xa03c, 0xd172, 0x0820, 0xaf0f, 0x9a8d, 0xbbf9, 0xcdd9, 0x42fc, 0x37c7, 0xbbd1, 0xe5d9, 0x0845, 0xca0f, 0xac8b, 0x06be, 0x41e1, 0x32f4, 0xa084, 0x6972, 0xeb4d, 0xecab, 0x32dc, 0x8884, 0x23cb, 0x1685, 0xfbf1, 0xd1bb, 0xc120, 0xdb30, 0x1a8a, 0x943d, 0x7b17, 0x1f7f, 0x4968, 0xfb7c, 0x5cbb, 0x8139, 0xd652, 0x1057, 0x1997, 0x910e, 0x6042, 0x93d4, 0xaa60, 0xddd8, 0xc2ec, 0x0f03, 0xb478, 0x3426, 0x42e2, 0x29c7, 0x4a2f, 0xa44f, 0x8236, 0xc161, 0x9a30, 0x06f9, 0x06e1, 0x1ee1, 0xdf79, 0x73ce, 0x86f7, 0x2025, 0xe0b6, 0x4f10, 0xb31a, 0x6e51, 0xf03a, 0x4200, 0xcbc7, 0x6c9a, 0x2b18, 0x850d, 0xc216, 0xf503, 0x5355, 0x17c6, 0xb0e0, 0x8c62, 0xe58f, 0x5e45, 0x6f1b, 0xb22b, 0x5740, 0x2282, 0x5794, 0xf682, 0xca66, 0xc58b, 0x5074, 0x2ef5, 0x4058, 0x83e5, 0x1a70, 0x6e3d, 0x9c3a, 0x3c9f, 0xbb6a, 0x5ed9, 0xf31b, 0x7b33, 0x3b7f, 0x631d, 0xd4e7, 0xb575, 0x3137, 0x7bb7, 0xbf7f, 0x6b9d, 0x146f, 0x01d3, 0x1496, 0xf8d3, 0xeb88, 0x29ab, 0x262f, 0xdad0, 0xf29b, 0xf322, 0x4233, 0xf8c7, 0xff88, 0x88ff, 0x58cb, 0xd17d, 0x0720, 0xd7f0, 0xba46, 0x7ac8, 0xc86e, 0xdda9, 0xb3ec, 0x9851, 0x77db, 0xb3b3, 0xc751, 0x9a56, 0x60f9, 0x28d4, 0x513e, 0x6ce4, 0x5518, 0x6aa0, 0x217e, 0xb3a7, 0xd351, 0x3b02, 0x1e1d, 0x2379, 0xa485, 0x4836, 0xad6d, 0xe8af, 0x1698, 0xe6f1, 0x3876, 0x722e, 0x6ee6, 0x473a, 0xd992, 0xa8a8, 0x05fa, 0x1dd2, 0xf44a, 0x1244, 0x1ab5, 0xab3d, 0x88c9, 0x6ecb, 0x6a3a, 0xbb7e, 0x4ad9, 0x524f, 0x05d7, 0x30d2, 0x96a6, 0xf035, 0x4d00, 0xb338, 0x4c51, 0xea29, 0x80ba, 0x5d43, 0x7128, 0x70d5, 0x85c4, 0x0b16, 0x813c, 0xd352, 0x3802, 0x062e, 0xd1e1, 0x9b20, 0x1ee8, 0xd679, 0x3b57, 0x4b1d, 0x9e5e, 0x48bd, 0x266d, 0x98d0, 0xf6db, 0x9366, 0x1860, 0x6e1f, 0xbe3a, 0x268c, 0x79d0, 0xc85d, 0xeea9, 0x20fe, 0x3bb6, 0xaa1d, 0xa0d8, 0x3572, 0x1ef3, 0xcd79, 0xe2fc, 0x1532, 0x54c2, 0xb8b1, 0x9dea, 0xe48e, 0x5754, 0x3682, 0xf6c0, 0x8866, 0xc1cb, 0x3030, 0x74a6, 0xd680, 0xc257, 0xb403, 0x4f26, 0x851a, -1, -1, -1 }; static unsigned short chksum (unsigned short init, unsigned n, const unsigned char *s) { unsigned short crc; for (crc = init; n > 0; n--) crc = crc_table[(crc ^ *s++) & 0xff] ^ (crc >> 8); return crc; } static int find_init (int len) { return len < 1024 ? crc_init[len] : -1; } /** * canon_psa50_gen_crc * @pkt: packet data on which to calculate checksum * @len: length of @pkt * * Calculate a CRC on a Canon packet * * Returns: CRC value. On error doesn't return at all but exits * program with a message to stderr. * */ int canon_psa50_gen_crc (const unsigned char *pkt, int len) { int init; init = find_init (len); if (init != -1) return chksum (init, len, pkt); fprintf (stderr, _("FATAL ERROR: initial CRC value for length %d unknown\n"), len); return -1; } static int guess (const unsigned char *m, int len, int crc) { int i; for (i = 0; i < 0x10000; i++) if (chksum (i, len, m) == crc) return i; fprintf (stderr, _("unable to guess initial CRC value\n")); return -1; } /** * canon_psa50_chk_crc: * @pkt: packet * @len: length of @pkt * @crc: presumed checksum * * Calculate a new checksum for the packet and compare it with an existing checksum to detect transmission errors. * * Returns: 1 on success or if checksum calculation would fail * 0 if checksums don't match * */ int canon_psa50_chk_crc (const unsigned char *pkt, int len, unsigned short crc) { unsigned short this; int init; init = find_init (len); if (init != -1) return chksum (init, len, pkt) == crc; this = guess (pkt, len, crc); fprintf (stderr, _("warning: CRC not checked (add len %d, value 0x%04x) #########################\n"), len, this); return 1; } libgphoto2-2.5.9/camlibs/canon/.indent.pro0000644000175000001440000000107712557123324015317 00000000000000--gnu-style --indent-level8 --blank-lines-after-declarations --blank-lines-after-procedures --braces-on-if-line --cuddle-else --space-special-semicolon --no-blank-before-sizeof --no-space-after-parentheses --continue-at-parentheses --line-length95 --comment-line-length80 --honour-newlines --case-indentation8 --space-after-cast --space-after-for --space-after-if --space-after-while -T gp_port -T Camera -T GPPort -T CameraFilesystem -T CameraList -T CameraFileType -T CameraFile -T CameraText -T CameraAbilitiesList -T CameraWidget -T GPContext -T time_t -T CameraFileInfo libgphoto2-2.5.9/camlibs/canon/crc.h0000644000175000001440000000026112610415617014147 00000000000000#ifndef CRC_H #define CRC_H int canon_psa50_gen_crc(const unsigned char *pkt, int len); int canon_psa50_chk_crc(const unsigned char *pkt, int len, unsigned short crc); #endif libgphoto2-2.5.9/camlibs/canon/doc/0000755000175000001440000000000012623156270014056 500000000000000libgphoto2-2.5.9/camlibs/canon/doc/canon-sections.txt0000644000175000001440000000734612557123324017474 00000000000000
power-status Power Status canon.h canon_int_get_battery CAMERA_MASK_BATTERY canonPowerStatus
file-attributes Camera File Attributes library.h canon_int_set_file_attributes canonDirentAttributeBits
serial-communication Serial Communication serial.h canon_serial_change_speed canon_serial_dialogue canon_serial_error_type canon_serial_get_byte canon_serial_get_cts canon_serial_get_dirents canon_serial_get_file canon_serial_get_thumbnail canon_serial_init canon_serial_put_file canon_serial_ready canon_serial_recv_frame canon_serial_recv_msg canon_serial_recv_packet canon_serial_send canon_serial_send_frame canon_serial_send_packet canon_serial_wait_for_ack canon_psa50_chk_crc canon_psa50_gen_crc serial_flush_input serial_flush_output serial_set_timeout MAX_TRIES USLEEP1 USLEEP2 HDR_FIXED_LEN DATA_BLOCK canonSerialErrorCode canonSerialFramingByte canonPacketThirdByte canonPacketType canonPacketOffset MAX_PKT_PAYLOAD canonSerialMsgHeader MAX_MSG_SIZE DIR_REVERSE UPLOAD_DATA_BLOCK SPEED_9600 SPEED_19200 SPEED_38400 SPEED_57600 SPEED_115200
directory-entries Directory Entries canon.h canon_usb_get_dirents canon_usb_list_all_dirs canonDirentOffset
listing-directories Listing Directories canon.h canon_int_directory_operations canonDirFunctionCode canon_int_list_directory canonDirlistFunctionBits
usb-control USB communication usb.h canon_usb_camera_init canon_usb_capture_dialogue canon_usb_dialogue canon_usb_get_file canon_usb_get_thumbnail canon_usb_get_captured_thumbnail canon_usb_get_captured_image canon_usb_set_file_attributes canon_usb_identify canon_usb_init canon_usb_lock_keys canon_usb_long_dialogue canon_usb_poll_interrupt_multiple canon_usb_put_file canon_usb_ready canon_usb_set_file_time canon_usb_unlock_keys canonCommandIndex canonSubcommandIndex canonTransferMode USB_BULK_READ_SIZE USB_BULK_WRITE_SIZE MAX_INTERRUPT_TRIES
macros Utility Macros canon.h IS_EOS CHECK_PARAM_NULL CON_CHECK_PARAM_NULL GP_PORT_DEFAULT GP_PORT_DEFAULT_RETURN GP_PORT_DEFAULT_RETURN_EMPTY GP_PORT_DEFAULT_RETURN_INTERNAL canonJpegMarkerCode canonDownloadImageType GP_MODULE
structures Structures canon.h CameraPrivateLibrary
internal-functions Internal Glue Functions canon.h canon2gphotopath gphoto2canonpath canonCamModel canonCaptureSupport canon_int_ready canon_int_get_disk_name canon_int_get_disk_name_info canon_int_capture_image canon_int_capture_preview canon_int_get_file canon_int_get_thumbnail canon_int_put_file canon_int_delete_file canon_serial_end canon_serial_off canon_int_get_time canon_int_set_time canon_int_identify_camera canon_int_set_owner_name filename2mimetype is_crw is_image is_jpeg is_movie is_thumbnail is_audio canon_int_do_control_command canon_int_extract_jpeg_thumb canon_int_filename2thumbname canon_int_filename2audioname canon_int_get_picture_abilities canon_int_pack_control_subcmd
library-interface Standard gphoto2 camera interface library.h clear_readiness
libgphoto2-2.5.9/camlibs/canon/doc/Makefile.in0000644000175000001440000004334612623156011016046 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = camlibs/canon/doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/auto-aux/mkinstalldirs \ $(top_srcdir)/libgphoto2_port/doc/DocRules.am DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ # The name of the module. DOC_MODULE = canon # The directory containing the source code (if it contains documentation). DOC_SOURCE_DIR = $(top_srcdir)/camlibs/canon # The top-level SGML file. DOC_MAIN_SGML_FILE = $(DOC_MODULE)-api.sgml # include common doc generation rules EXTRA_DIST = $(DOC_MODULE)-api.sgml $(DOC_MODULE)-sections.txt \ Protocol.xml @ENABLE_GTK_DOC_TRUE@TARGET_DIR = $(apidocdir)/$(DOC_MODULE) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/libgphoto2_port/doc/DocRules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign camlibs/canon/doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign camlibs/canon/doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/libgphoto2_port/doc/DocRules.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: @ENABLE_GTK_DOC_FALSE@html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am dist-hook \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local 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 \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am .PRECIOUS: Makefile clean-local: rm -f *~ *.bak *.hierarchy *.signals *.args *-unused.txt maintainer-clean-local: clean rm -rf sgml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @ENABLE_GTK_DOC_TRUE@all-local: templates sgml html @ENABLE_GTK_DOC_TRUE@scan: @ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) @ENABLE_GTK_DOC_TRUE@templates: scan @ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) @ENABLE_GTK_DOC_TRUE@sgml: templates @ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) @ENABLE_GTK_DOC_TRUE@html: sgml @ENABLE_GTK_DOC_TRUE@ if ! test -d html ; then mkdir html ; fi @ENABLE_GTK_DOC_TRUE@ cd html && gtkdoc-mkhtml $(DOC_MODULE) ../$(srcdir)/$(DOC_MAIN_SGML_FILE) @ENABLE_GTK_DOC_TRUE@install-data-local: @ENABLE_GTK_DOC_TRUE@ $(INSTALL) -d -m 0755 $(DESTDIR)$(TARGET_DIR) @ENABLE_GTK_DOC_TRUE@ $(INSTALL_DATA) ./html/*.html $(DESTDIR)$(TARGET_DIR) @ENABLE_GTK_DOC_TRUE@ $(INSTALL_DATA) ./html/index.sgml $(DESTDIR)$(TARGET_DIR) @ENABLE_GTK_DOC_TRUE@ gtkdoc-fixxref --module=$(DOC_MODULE) --html-dir=$(DESTDIR)$(apidocdir) @ENABLE_GTK_DOC_TRUE@dist-hook: @ENABLE_GTK_DOC_TRUE@ (cd $(srcdir) ; tar cvf - html) | (cd $(distdir); tar xf -) @ENABLE_GTK_DOC_TRUE@.PHONY : html sgml templates scan @ENABLE_GTK_DOC_FALSE@all-local: @ENABLE_GTK_DOC_FALSE@ @echo "Dummy target $@." @ENABLE_GTK_DOC_FALSE@dist-hook: @ENABLE_GTK_DOC_FALSE@ @echo "Dummy target $@." @ENABLE_GTK_DOC_FALSE@ @echo "Re-run configure with adequate parameters and run make again to build docs." @ENABLE_GTK_DOC_FALSE@install-data-local: @ENABLE_GTK_DOC_FALSE@ @echo "Dummy target $@" @ENABLE_GTK_DOC_FALSE@ @echo "Re-run configure with adequate parameters and run make again to build docs." # Local Variables: # mode: makefile # End: # 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. .NOEXPORT: libgphoto2-2.5.9/camlibs/canon/doc/Makefile.am0000644000175000001440000000043312557123324016032 00000000000000# The name of the module. DOC_MODULE=canon # The directory containing the source code (if it contains documentation). DOC_SOURCE_DIR=$(top_srcdir)/camlibs/canon # include common doc generation rules include $(top_srcdir)/libgphoto2_port/doc/DocRules.am EXTRA_DIST += Protocol.xml libgphoto2-2.5.9/camlibs/canon/doc/Protocol.xml0000644000175000001440000102671412561423351016332 00000000000000 <phrase role="strong">Canon PowerShot Series Transfer Protocol Description</phrase> $Date$ Introduction
About this document The following document is an overview of the Canon PowerShot serial and USB transfer protocols. It should be a valid reference for models ranging from PowerShot A5 to S20. It has been updated for cameras including the EOS D30, EOS D60, and PowerShot G2. It has not been verified against the EOS 1D or EOS 1Ds, hence there is no section on FireWire communication. No information present in this document was obtained from Canon. Everything is the result of observations and logical analysis. It is by no means guaranteed to be accurate, nor even right. Nevertheless, a lot of people have managed to communicate with their PowerShot cameras using these commands, so they cannot be completely wrong either! An implementation of this communication protocol was made for the GPhoto digital camera software, available at www.gphoto.org.
Camera Models Covered Here is a list of camera models we know about, those we think we understand, and those we're still working on. The introduction dates come from DPReview.com. The list is here to give you some sort of idea of how current this document is. Notice that the PowerShot S and SD series cameras are usually called that only in North America; they are generally "Digital IXUS" something in Europe and most of Asia, and "Digital IXY" something in Japan. I suspect it all has to do with trying to beat gray-market imports. Usually these brothers under the skin will share a USB product ID, but some early cameras (e.g. PowerShot S100 aka IXY Digital aka Digital IXUS) have different ID's. File attributes Camera modelDate of introductionKnown protocol?PowerShot 60013-May-96NOPowerShot 35016-Jul-97NOPowerShot Pro7027-Mar-98yesPowerShot A527-Mar-98yesPowerShot A5 Zoom18-Jan-99yesPowerShot A5030-Mar-99yesPowerShot S1027-Aug-99yesPowerShot S2006-Jan-00yesEOS D3017-May-00yesPowerShot S100 Digital Elph IXY Digital Digital IXUS 17-May-00yesPowerShot G118-Sep-00yesCanon PowerShot Pro90 IS06-Jan-01yesPowerShot A2011-Jan-01yesPowerShot A1011-Jan-01yesPowerShot S30011-Jan-01yesPowerShot S110 Digital IXUS v 10-Apr-01yesPowerShot G217-July-01yesEOS-1D25-Aug-01NOPowerShot S3002-Oct-01yesPowerShot S4002-Oct-01yesPowerShot A3022-Feb-02yesPowerShot A4022-Feb-02yesEOS D6022-Feb-02yesPowerShot A10022-Feb-02yesPowerShot S200 Digital IXUS v2 13-Mar-02yesPowerShot S330 Digital ELPH Digital IXUS 330 13-Mar-02yesPowerShot A20006-May-02yesPowerShot S4516-Aug-02yesPowerShot S230 Digital ELPH Digital IXUS v3 16-Aug-02yesPowerShot G319-Aug-02yesEOS 1Ds24-Aug-02NOPowerShot A7027-Feb-03yesPowerShot A6027-Feb-03yesPowerShot S5027-Feb-03yesPowerShot A30027-Feb-03yesPowerShot S400 Digital IXUS 400 27-Feb-03yesEOS 10D27-Feb-03yesPowerShot SD100 Digital IXUS II 02-Apr-03yesPowerShot G502-May-03yesPowerShot A8020-Aug-03yesEOS Digital Rebel EOS 300D Kiss Digital 20-Aug-03yesPowerShot SD10 Digital ELPH Digital IXUS i 12-Sep-03NOEOS-1D Mark II29-Jan-04NOPowerShot S410 Digital IXUS 430 IXY Digital 430 09-Feb-04yesPowerShot S500 Digital IXUS 500 IXY Digital 500 09-Feb-04yesPowerShot SD110 Digital IXUS IIs 09-Feb-04NOPowerShot A3109-Feb-04yesPowerShot Pro19-Feb-04NOPowerShot S1 IS9-Feb-04yesPowerShot A759-Feb-04yesPowerShot S6010-May-04yesPowerShot A8520-Jul-04yesPowerShot G619-Aug-04NOPowerShot A40019-Aug-04yesEOS 20D19-Aug-04yesPowerShot A9519-Aug-04yesPowerShot S7019-Aug-04yesEOS-1Ds Mark II21-Sep-04NODigital IXUS 40 PowerShot SD300 IXY Digital 50 21-Sep-04NODigital IXUS 30 PowerShot SD200 IXY Digital 40 21-Sep-04yesDigital IXUS i5 PowerShot SD20 IXY Digital L2 21-Sep-04yesPowerShot A51020-Jan-05NOPowerShot A52001-Feb-05NOPowerShot SD400 IXUS 50 IXY Digital 55 17-Feb-05NOPowerShot SD500 IXUS 700 IXY Digital 600 17-Feb-05NODigital Rebel XT EOS 350D EOS Kiss Digital N 17-Feb-05NOPowerShot S2 IS 22-Apr-05NO
Contributors This document was written thanks to the efforts of: Wolfgang G. Reissnegger, Werner Almesberger, Philippe Marzouk, Mikael Nyström, Edouard Lafargue, Stephen H. Westin.
Copyright The Canon Protocol information. Copyright © 2000, 2003, 2004, 2005 by its respective authors. (see the “Contributors” section). 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., 675 Mass Ave, Cambridge, MA 02139, USA.
To Do (send updates to the gphoto-devel mailing-list)
Serial Update get_directory description to match what was discovered in USB. Describe the structure of the initial ID packet. Find out what the real meaning of the “fffb” command is. Describe error recovery protocol. Describe format of low batt condition. Find out the rest of the commands that were discovered in USB: Make directory Delete directory Change attribute etc. Describe File upload. Describe each command in detail.
USB Figure out at least basic functionality for newer protocol Delete file Capture sequence Set file attributes Find out the meaning of more values of the status code returned in the word at 0x50.
General Add cross-reference links. Integrate serial and USB sections; there's really quite a bit of redundancy and overlap.
Changelog 09 May 2000: first version with both USB and serial protocols described in the same document. 05 Dec 2002: import to AbiWord for XML output. 28 Jan 2003: Convert DocBook XML, expand USB information $Log$ Revision 1.22 2005/07/29 20:15:26 swestin Changed "Specificatyions" to "Description" in title; this is more truthful, as we aren't specifying, just trying to describe what's there. Revision 1.21 2005/06/21 16:45:13 swestin More info on PowerShot S1 IS. Revision 1.20 2005/06/10 01:38:26 swestin More info on EOS 20D. Cross-referenced new command codes to old. Some info on various models from which I have now seen debug logs. Started to convert ASCII art in serial section to HTML tables. Revision 1.19 2005/04/28 18:03:36 swestin Added some new info from init packet for certain models. Corrected init packet info for Optura 20, Optura 40 camcorders. Corrected one dangling link. Revision 1.18 2005/04/27 19:28:22 swestin We now know the contents of the init packet from PowerShot SD200. Revision 1.17 2005/04/14 20:31:10 swestin Corrected one erroneous output dump. Revision 1.16 2005/04/04 15:16:37 swestin Added information basically related to newer protocol (EOS 20D), especially remote control subcodes 0x1b/0x1c; also added a bit on D60. Revision 1.15 2005/03/31 17:22:10 swestin More insight into "get picture abilities" response. Content of init packet from EOS 350D, which might be a "new" camera like the 20D. "Delete file" for the new protocol (20D) is now understood. Slight revision of "TODO". Revision 1.14 2005/03/25 18:49:27 swestin Added S30, A510, A40, A200 to table of data in init response. Revision 1.13 2005/03/24 22:03:21 swestin Corrected some XML errors. Added info on command codes (new protocol) found by stupidly sending; these are the ones that got a reply. Revision 1.12 2005/03/21 13:44:07 swestin Updated copyright notice. Added more info on new protocol (EOS 20D). Added note on differing response lengths to "get camera photo abilities" with some newer cameras. Revision 1.11 2005/03/17 18:12:01 swestin Minor fix to "Models Covered" table. Added a model or two to the table of initial responses. Revision 1.9 2005/03/09 17:07:39 swestin Tidied up table of known models. More info on camera initial response message. Corrected length of response from "get photo abilities" in new protocol. Revision 1.8 2005/03/08 20:38:40 swestin Added section with list of known cameras. More info on EOS 20D, in various places. Details on EOS 300D's apparent oddball behavior during remote capture. Added A400 info on initialization response packet. Revision 1.7 2005/03/04 20:46:51 swestin Rewrote a bit on the response packet in initialization. Tightened borders on all tables. Added A400 to list of camera models for which we know the initialization response. Revision 1.6 2005/01/15 21:00:24 swestin Fixed inclusion of CVS log info in document. Added more info on response packet in camera initialization. Revision 1.5 2005/01/04 17:17:11 swestin Fixed various typographical errors. Added info observed from EOS 300D. Regularized structure of USB command descriptions. Added real example of interrupt packet received at camera init. Added formatted example of directory read.
Serial Protocol Description
Introduction We have chosen to describe the Canon Serial Protocol as successive layers. I used OSI-like names but the protocol is not really a network protocol. Data link layer: Responsible for framing, escaping and checksumming messages Transport (packet) layer: Responsible for dividing messages into packets of known length. This layer also handles handshaking, retries, etc. Session (message) layer: Last layer, carrying whole messages, such as download requests, image data, and such information. Currently, all these layers are documented, but we still lack information on how to handle protocol retries, and errors in general.
Data link layer The following figure illustrates the lower layers of the protocol used by some Canon PowerShot cameras: Layers of the serial protocol Example: payload “00 C0 01”[Upper layers]00 C0 01<CRC>00 C0 01 12 34 (fictious CRC)<Escaping>00 7E E0 01 12 34<Framing>C0 00 7E E0 01 12 34 C1[Wire format]
The upper layers are described later in this file.
Serial timing Initialization: PC sends sequences of “U” bytes at 9600 bps until the camera responds by sending its ID. Each sequence has a length of 2-8 bytes. The interval to wait between sequences is 0.9-1.04 sec (measured for 8 bytes). When the camera sends its ID, the computer can ask it to change to a higher speed. The speed can go up to 115200 bps. Afterward, a one/two seconds command timeout should be set. E.g. retrieving a directory with 1200 files takes several seconds. Opening a large capacity flash card takes time as well.
Framing Each message begins with the byte C0 and ends with the byte C1. The length of a message including the framing bytes and any escape bytes (see below) never exceeds 1024 bytes.
Escaping The value 7E is used to XOR the following byte with the value 0x20. This is used for the following three combinations: 7E 5E → 7E 7E E0 → C0 7E E1 → C1
CRC The last two bytes of a message (without framing and escaping) contain a 16-bit “CCITT” CRC in little-endian order. The CRC is calculated over the entire message, without framing and escaping, and without including the CRC bytes. The CRC generator Assuming the use of http://www.cse.fau.edu/~sam/course/dc_htm/src_dir/crc_att.c, generator polynomial 0102010 (octal), the initial value of “crc” is the CRC generator's initial value (in the original code always zero). is initialized to a length-dependent value. The algorithm for the initial value is not known. However, a table of values emitted by the camera has been compiled and is in crc.c:crc_init. It is indexed by the length, i.e. the number of bytes over which the CRC is taken.
Transport layer Communication is done through messages, which may be split into several fragments, which are then sent as individual packets. Packets are framed as described earlier in this file.
Packet level Each packet consists of the following two-byte header: <sequence> <ptype> There are two sequence numbers: the message sequence number <mseq> and the fragment sequence number <fseq>. They are counted independently and start at zero. <mseq> is reset at the beginning of a session, while <fseq> is reset at the beginning of each message. The following packet types are known: 00 Message fragment 03 Speed message from computer 04 EOT 05 ACK 06 Compatibility? A packet with type 03 is sent once, early in the initialization for the computer to ask the camera to switch to a higher speed. Each message ends with an EOT packet, which is then confirmed by an ACK packet. EOT has the following format: xx 04 xx 00 00 00 | | | indication of the message length. Known values: <mseq> 00 empty message (no fragments) 01 short message (one fragment) 03 used when uploading ff maximum length data packet, more to follow else data packet, at end (observed values: 0f, 7f) ACK has the following format: xx 05 xx 00 00 00 | | | error code <mseq> 00 No error, acknowledged 01 Not acknowledged FF retransmit last sequence else other values not known A packet with type 06 is sent once, as the first packet coming from the camera. It contains a length, just like a normal message fragment, but the message structure is different. An empty message can be used to test if the camera is still responding. If yes, it will respond with an ACK. Example: PC→CAM xx 04 00 00 00 00 CAM→PC xx 05 00 00 00 00
Message fragment level Message fragments have the following structure: xx 00 xx xx ... | | | | | | | fragment data | | data length, MSB | data length, LSB <fseq> The data length is the length (in bytes) of the fragment data that follows the length. Fragment data is simply concatenated to form the complete message.
Session (message) Layer All messages (except the one with type 03) have the following structure: 00 02 00 00 xx 00 00 xx xx xx 00 00 ... | | | | | | | | | message payload | | | message length, MSB | | message length, LSB | direction code <dir> message type <mtype> The message length is the length of the entire message, including the header shown above. The first four bytes of the message payload <fffb> seem to depend on the message type. The following combinations have been sighted: Sequence numbers observed in serial streams <mtype><dir><fffb>Operation011214 f7 8a 00 Identify camera request012214 f7 8a 00 Identify camera response01116a 08 79 04 Download image request0111aa 06 79 04 Download “thumbnail” request (see below)01216a 08 79 04 Image data0121aa 06 79 04 “Thumbnail” data0311 Upload file031278 f3 64 01 Get Date041208 d3 9d 00 Set date0512fc d2 9d 00 Change Owner name0911d8 f7 8a 00 Disk info request0921d8 f7 8a 00 Disk info response0a11dc f7 8a 00 Get disk(s) request0a21dc f7 8a 00 Get disk(s) response0a1270 f6 8a 00 Power Supply Status0a2270 f6 8a 00 Power Supply Status response0b1194 f6 8a 00 List without date request0b2194 f6 8a 00 List without date response0b11a8 f6 8a 00 List with date request0b21a8 f6 8a 00 List with date response0d118c f4 7b 00 Delete image request0d218c f4 7b 00 Delete image response0e11— — — — Set file attributes.
Important note: it seems that the “fffb” part can be set to 0 in every case, and the commands will still work. The exact meaning of this part of the packet is unknown. It is probably used as a unique ID for each transaction and can be chosen at random each time.
Identify camera The identify camera request has no data. The identify camera response has the following structure: 00 00 00 00 00 02 00 00 00 00 00 01 <camera_name> 00 (more 00s) On the S10, the response has the following structure: 00 00 00 00 00 04 00 00 00 00 00 01 and then: <firmware rev> (32 bit word) (offset: 0x08) <model name> (C string) (offset: 12 / 0x0c) <owner name> (C string) (offset: 44 / 0x2c) Firmware version: 04 03 02 01 is version 1.2.3.4, 01 00 00 01 is version 1.0.0.1 Example (full packet): for a PowerShot S10 with firmware 1.0.0.0 RECV: (98 bytes) 00000000: 00 00 5C 00 02 00 00 00 01 00 00 22 5C 00 00 00 - ..\........"\... 00000010: 14 F7 8A 00 00 00 00 00 00 04 00 00 00 00 00 01 - ................ 00000020: 43 61 6E 6F 6E 20 50 6F 77 65 72 53 68 6F 74 20 - Canon PowerShot 00000030: 53 31 30 00 00 00 00 00 00 00 00 00 00 00 00 00 - S10............. 00000040: 45 64 6F 75 61 72 64 20 4C 61 66 61 72 67 75 65 - Edouard Lafargue 00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - ................ 00000060: 9C EA - ..
Get Power Status Offsets in the payload: 0x04 contains a byte with power status: 0x6=good, 0x4=bad 0x07 contains a byte with power type: 0x10=ac-adapter, 0x30=battery Example (full packet): RECV: (30 bytes) 00000000: 00 00 18 00 02 00 00 00 0A 00 00 22 18 00 00 00 - ...........".... 00000010: 70 F6 8A 00 00 00 00 00 06 00 00 30 B5 5A - p..........0.Z
Change Owner Name The name (payload) can be 30 characters max.
Set Date The payload of this message is 4 bytes. It must be the same Unix format as in the directory with date request. For example, 01/01/2000 is 80 43 6D 38.
Get disk(s) The get disk(s) request has no data. The get disk response has the following structure: 00 00 00 00 <disk_name> 00 Disk name example: "C:"
Disk info Disk info requests have the following structure: <root_name> 00 Disk info responses have the following structure: 00 00 00 00 xx xx xx xx xx xx xx xx | | | Free space (in bytes) Total capacity (in bytes) Root name example: "C:\" (The trailing slash is required.)
List (show directory contents) Note: It seems that directory listing as described in the USB part is more accurate, when it comes to the meaning of the first byte (“date/without date”). List requests have the following structure: xx <directory_name> 00 00 00 | 00 if with date, 02 if without date Directory name example: "C:\PWRSHOT", "D:", or "D:\.", but not "D:\" (trailing slash), or "D:\.\FOO" (dot not allowed in path ?) List responses have the following structure: Failure: 00 00 00 00 01 00 00 00 00 00 00 00 Success: 00 00 00 00 xx 80 00 00 00 00 00 00 00 00 00 00 | 01 if last message, 00 if more <directory_name> 00 <type> 00 <size> <date> <entry_name> 00 ... <type> 00 <size> <date> <entry_name> 00 (many 00s) <type> is one byte containing the file attributes: File attributes bit0 (0x01)Set if this file is protected from deletionbit4 (0x10)Set if this directory contains an item but was not recursively entered (NOT used with the “set attributes” command)bit5 (0x20)Set if the file has not yet been downloaded (must be manually switched)bit7 (0x80)Set if this directory was entered recursively (NOT used with the “set attributes” command)
<size> is the size in bytes. Directory size is always 0. Entry name example: "AUT_1201.JPG" or "MISC" The date is a four bytes Unix-style date. The list without date responses also contains the four data bytes, but sets them to zero. Note: it's unclear if the list with/without date commands differ in any other way than the inclusion of the date. If the directory is so large that additional messages are needed, they have the following structure: 00 00 00 00 xx <entry> | 1 if last message, 00 if more The boundary between messages is always chosen such that the terminating 00 of an entry is the last byte in the earlier message.
Download and Data Download requests have the following structure: 00 00 00 00 00 xx 00 00 <name> 00 | Length of name (including terminating \0) Data messages have the following structure: 00 00 00 00 xx xx xx xx xx xx xx xx xx xx xx xx xx 00 00 00 ... | | | | | | | | | data | | | 00 if more, 01 at end | | data size in this message | current offset total length All lengths are measured in bytes. The camera only sends the first 10813 bytes from the image for the thumbnail download request. However it is not a valid thumbnail image, the first part is the EXIF header, the second part is the thumbnail itself between a FF D8 and a FF D9, the remaining is the beginning of the picture. The camera always sends 8 messages then waits for an ACK from the computer. If the computer has not received everything, it sends an ACK with an error value asking to retransmit one of the eight packets sent. These error values are not yet known.
Upload file The serial upload protocol description is not done yet. These are just ideas on what it could be. Maybe it's right, maybe it's wrong. This command sends a file to the camera. Request structure: xx 00 00 00 00 xx 00 00 <name> Each data block has the following format: 00 00 00 02 XX XX XX XX - YY YY YY YY filename - datablock XX XX XX XX : offset within the file for this block YY YY YY YY : len2: length of this block filename : 0-terminated string datablock: the data itself.
Switch Camera off In order to switch the camera off, you need to send the following characters (directly, without extra framing): C0 00 02 55 2C C1 C0 00 04 01 00 00 00 24 C6 C1
Low Battery warning If the camera batteries run too low during a transfer and the camera needs to switch itself off, it will send a special packet just before going down. You can see how it is handled in psa50.c
USB Interface Notes When mentioning word, 32bit word little-endian is implied. References to usb11.pdf (Chapter 9.3 page 199): http://www.usb.org/developers/data/usbspec.zip (1.8Mb) bmRequestType is 0xC0 during read and 0x40 during write. bRequest is 0x4 if length of data is >1, 0x0c otherwise (length >1 ? 0x04 : 0x0C) wValue differs between operations. wIndex is always 0x00 wLength is simply the length of data. In Linux sending/receiving commands is using usb_control_msg (in usb.c). usb11.pdf nameusb.c name bmRequestTyperequesttype bRequestrequest wValuevalue wIndexindex wLengthsize
Init of camera Control_transfer_read requesttype=0xC0 value=0x55 length=1 Camera responds with following data (single char): “A” Camera was already active “C” Camera was woken up “I” Unknown (some kind of error; seen with a hotplug problem on Linux) “E” Unknown (some kind of error) Control_transfer_read requesttype=0xC0 value=0x1 length=0x58 The first 0x48 bytes can be trashed, save the last 0x10 bytes and use them as data in next step. Example: 00000000 18 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000040 01 00 02 00 43 30 A9 04-00 08 00 00 FF FF FF FF ....C0.......... 00000050 00 FD 00 00 00 FD 00 00 ........ The bytes 0x40-0x43 seem to vary from camera to camera: the S20 here has 01 00 02 00. These bytes might identify which version of the protocol is used. The following table summarizes our observations to date. Unknown contents of response packet Models0x400x440x480x4C0x500x54G1, Pro90 IS, Digital IXUS00 05 07 00USBid0x800 (2048)-10xfd00 (64768)0xfd00 (64768)S10, S2001 00 02 00USBid0x800 (2048)-10xfd00 (64768)0xfd00 (64768)G2, D30, D60, 300D, S110, A10, A20, S30, S30001 00 05 03USBid0x800 (2048)-10xfd00 (64768)0xfd00 (64768)300D01 00 05 83USBid0x800 (2048)-10xfd00 (64768)0xfd00 (64768)G3, A60, A70, A75, A80, A300, A400, A510, S45, S50, S230, S400, SD20001 06 15 83USBid0x800 (2048)-10xfd00 (64768)0xfd00 (64768)S1 IS01 06 15 8304 a9 30 850x800 (2048)-10xfd00 (64768)0xfd00 (64768)20D01 06 15 830x800001750x800 (2048)0x10000 (65536)0xfd00 (64768)0x10000 (65536)350D01 06 15 830x800001890x800 (2048)0x10000 (65536)0xfd00 (64768)0x10000 (65536)Optura 200 MC camcorder03 05 04 81USBid0x800 (2048)-10xfd00 (64768)0xfd00 (64768)Optura 20, Optura 40 camcorders03 05 04 81USBid0x200 (512)-10x200 (512)0xfd00 (64768)S200, S330, A30, A40, A20003 05 15 81USBid0x800 (2048)-10xfd00 (64768)0xfd00 (64768)
In the older version of the protocol, the USB vendor and product ID are normally contained in bytes 0x44-0x47 of this packet: here 0x04A93043 for vendor 0x04a9, product 0x3043 identifies this as a PowerShot S20. Unfortunately, the meaning of these bytes seems to have changed in the newer protocol; for an EOS 20D, we get 0x80000175, which is identical with bytes 0x56-0x59 of a response to the Get Photo Abilities request. This is interesting, because the same bytes wind up in each JPEG or CR2 file as a LONG value for tag 0x10 within the MakerNote. That may be a model identifier for the camera. Even stranger, there seems to be a group of cameras (apparently using the older protocol) that all report 0x3085 as the product ID, which is correct for the PowerShot G5. The bytes 0x48-0x57 also vary from camera to camera. I think they are 4-byte integers, and suspect that they specify maximum transfer sizes in some way.
If the response to step 1 was 'A', Control_transfer_read requesttype=0x4 value=0x4 length=0x50. Example: 0000 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 00 08 00 00 ff ff ff ff 00 fd 00 00 00 fd 00 00 ................ This looks to me like the payload (here from an EOS D30) duplicates the last 16 bytes of the previous packet. Throw away the data and we are finished with the initializationMany cameras fail the first camera command after this (the command response is returned without the first 0x40 bytes). It seems Canon got the same problem and worked around it in the Windows driver instead of fixing the firmware. The workaround is to retry the first camera command (Identify camera is a suitable command) up to four times.. If the response to step 1 was 'C', Take the packet from step 2, change the byte at offset 0 to 0x10, move the last 0x10 bytes to position 0x40 and Control_transfer_write requesttype=0x40 value=0x11 length=0x50 PC sign should now appear on the LCD. Not all cameras have PC signs though. We should now read a total of 0x44 bytes from bulk_in, but some cameras are picky at this stage and we must first read 0x40 bytes and then 0x4 bytes (the symptoms if not doing this right is that camera initialization only works every second time). Newer Canon USB cameras return 0x54 0x78 0x00 0x00 ('Tx\0\0') under some circumstancesIt seems this was due to an error in the init sequence described in earlier versions of this document. When done as the Windows driver does it, we always get 00 00 00 00 back as the last four bytes of step 5.as the last four bytes in either of these two reads. If we get that from the first read we should not try to read the next 0x4 bytes. Example: 00000000 04 00 00 00 02 03 00 00-00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000040 00 00 00 00 .... Read 16 (0x10) bytes from the interrupt endpoint. Some newer cameras (e.g. the PowerShot S50) return the bytes 8 at a time, so two reads may be needed. The code in bytes 0x44-0x47 is 0x20. Example (EOS 300D): 0000 02 00 00 00 20 00 00 00-10 00 00 00 00 00 00 00 .... ........... Note: The EOS 20D seems to return the 16 bytes (8 at a time) after the “Power supply status” command, rather than here.
USB Command Protocol
Structure of a command block 0000000: xx xx xx xx yy yy yy yy - 00 00 00 00 00 00 00 00 0000010: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 0000020: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 0000030: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 0000040: 02 00 00 00 UU 00 cc VV - xx xx xx xx SS SS SS SS 0000050: ... (payload/arguments) xx xx xx xx : length (word) yy yy yy yy : cmd3 (word) UU : cmd1 (byte) VV : cmd2 (byte) xx xx xx xx : Length (again) SS SS SS SS : sequence number (word) cc : must be zero in old-style protocol. In the new protocol, this byte must contain 0x10 for commands with cmd3=0x201, 0x20 for commands with cmd3=0x202. “length” is the length of the block, excluding the first 0x40 bytes in block, and is never less than 0x10. cmd1 and cmd2 are each a single byte cmd3 is a word Sequence number is a word, sent back in command reply. This may have more meaning than meets the eye; for example, the last byte is nearly always zero, and similar commands tend to have the same last two bytes in this field. USB arguments: value is always 0x10 length is TOTAL length (0x54 in example below) Example command block: Disk info request 0000000: 14 00 00 00 01 02 00 00-00 00 00 00 00 00 00 00 ................ 0000010: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000020: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000030: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000040: 02 00 00 00 09 00 00 11-14 00 00 00 78 56 34 12 ............xV4. 0000050: 44 3A 5C 00 D:\.
Structure of a response block A normal response block will be at least 0x54 bytes long. 0000 00 00 00 00 yy yy 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 UU 00 00 VV xx xx xx xx SS SS SS SS ......."........ 0010 kk kk kk kk .... yyyy will contain an altered copy of cmd3. The high-order byte of cmd3 will be incremented from 2 to 3 (0x201→0x301, 0x202→0x302). UU will contain a copy of cmd1. VV will contain an altered copy of cmd2, incremented by 0x10 (0x11→0x21, 0x12→0x22). The first word of the response block will not contain the length xxxxxxxx will contain the length as a low-endian 32-bit integer at 0x48. This is the length of the useful information, i.e. (total block length)-0x40. SSSSSSSS at 0x4c is just a copy of the word that was sent to the camera in this location; it can be used to match a response to the command that elicited it. kkkkkkkk at 0x50 seems to be a status code; it will be zero if the command succeeded. Here is an example of a successful response of 0x58 bytes; there is a word of information after the status code. 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 0a 00 00 22 18 00 00 00 a4 f4 d6 00 ......."........ 0010 00 00 00 00 06 00 00 20 ....... Responses of variable length (those where cmd3 is 0x202 rather than 0x201) are handled differently. For these, the first response will have length 0x40 and contain only the length of the variable response. Here is an example 00000000 00 00 00 00 02 03 CF 1F-0D 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ Here we must read 0x00001fcf = 8143 bytes, which will come in unformatted blocks, to be read in chunks as described below. When a response is greater than 0x40 in length (i.e. almost all responses), it must be read in multiple operations. First read the largest subset divisible by 0x40, then a short read with the remainder. The longest bulk reads will be to download images and thumbnails, but generally it's not a good idea to read more than 0x1400 bytes. The first read may need to be split into shorter operations. To read a response of “length” bytes, #define MAX_BULK_XFER 0x1400 do { if(length - bytes_read >MAX_BULK_XFER) read_chunk = MAX_BULK_XFER; else if(length - bytes_read >0x40) read_chunk = (length - bytes_read) / 0x40 * 0x40; else read_chunk = length - bytes_read; actually_read = usb_bulk_read(handle, CAMERA_BULK_READ_EP, buffer + bytes_read, read_chunk, USB_TIMEOUT); if(actually_read != read_chunk) error; bytes_read += read_chunk; } while(bytes_read <length);
Status Codes A status code is returned in the word at 0x50 in the response. Here is a list of known status codes. Code Meaning 0x00000000 Success. This is the code most commonly seen. 0x02000022 File not found 0x02000029 File was protected 0x0200002a Compact Flash card full (on “set transfer mode” and “release shutter”) 0x02000081 “EOS lock keys” failed, e.g. shutter release is half-depressed or camera is in review or menu mode. 0x02000082 “EOS unlock keys” failed, e.g. tried to unlock keys when they weren't locked to begin with. 0x02000085 “camera control initialization” failed. Couldn't extend lens (on G2) Camera was left in camera control mode For D60: we just filled the CF card (on next “camera control initialization”; power cycle clears this) 0x02000086 Path not found or invalid parameters. Indicates either that the pathname wasn't found, e.g. for “Get Directory”, or that the command block was in error, e.g. the length wasn't correct, or the command for Set File Attributes had only one string, rather than a pathname followed by a filename. 0x00000086 Returned by camera in newer protocol (e.g. EOS 20D) from “Unlock keys” when keys weren't locked. 0x02000087 No Compact Flash card
Summary of available (known) commands Storage Control Commands (cmd2=0x11) cmd1cmd3Argument(e.g.)Response LengthOperation0x010x202 0x00000000 0x00001400 "DCIM\100CANON\IMG_0100.JPG" <NUL> LGet picture0x050x201 "D:\DCIM" <NUL>0x5 Make directory0x060x201 "D:\DCIM" <NUL>0x54 Delete directory0x090x201 "D:\" <NUL>0x5c Disk info request0x0A0x202 noneL Flash device identification0x0B0x202 0x01 "D:\DCIM"<NUL> <NUL> <NUL>L Get directory0x0D0x201 "D:\DCIM\100CANON" <NUL> "IMG_0002.JPG" <NUL>0x54 Delete file0x0E0x201 0x00000021 "D:\DCIM\100CANON" <NUL> "IMG_0002.JPG" <NUL>0x54 Set file attributes0x0F0x201 0x00000021 "D:\DCIM\158CANON\AUT_0001.JPG" <NUL> <NUL>0x54 Set file time
Camera Control Commands (cmd2=0x12) cmd1cmd3Argument(e.g.)Response LengthOperation0x010x201 none0x9c Identify camera0x030x201 none0x60 Get time0x040x201 0x390873f0 0x000000000x54 Set time0x050x201 "Donald Duck" <NUL>0x54 Change owner0x0A0x201 none0x58 Power supply status0x130x201 variesvaries Remote camera control0x170x202 0, 0x1400, 1, 0x2d011516L Download Captured Image0x1A0x201 44 bytes0x80 Unknown: EOS D30 only0x1B0x201 0x000000060x54 EOS (D30/D60) Lock Keys0x1C0x201 none0x54 EOS (D30/D60) Unlock Keys0x1D0x201 none0x58 Get EOS Body ID0x1F0x201 none0x384 Get camera photo abilities0x200x201 none0x54 Lock keys, turn off LCD
A length of L corresponds to a cmd3 of 0x202 and means that the program reads 0x40 from bulk in, checks for a word at position 0x06 for the length, and then reads the rest in 0x1400 buffers as described above.
Get Picture Downloads a full image or thumbnail from camera storage. requesttype=0x01 Example command: 0x76 bytes. Command length will vary with length of pathname string. 0000 36 00 00 00 02 02 00 00-00 00 00 00 00 00 00 00 6............... 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 01 00 00 11-36 00 00 00 08 00 00 00 ........6....... 0050 00 00 00 00 00 30 00 00-44 3a 5c 44 43 49 4d 5c .....0..D:\DCIM\ 0060 31 35 35 43 41 4e 4f 4e-5c 49 4d 47 5f 35 35 39 155CANON\IMG_559 0070 33 2e 4a 50 47 00 - 3.JPG. Parameters: Flag for download of thumbnail: 0x00000001 to download thumbnail, 0x00000000 to download full image file. Size of bulk transfers to use (Canon ZoomBrowser EX uses 0x1400) Pathname of file to download, terminated by a NUL byte This example requests download of the full image in file “D:\DCIM\155CANON\IMG_5593.JPG”, using transfers of 0x3000 bytes. The response (from a PowerShot G2) was 0x40 bytes: 0000 00 00 00 00 02 03 84 24-19 00 00 00 00 00 00 00 .......$........ 0010 00 00 00 00 00 30 00 00-44 3a 5c 44 43 49 4d 5c .....0..D:\DCIM\ 0020 31 35 35 43 41 4e 4f 4e-5c 49 4d 47 5f 35 35 39 155CANON\IMG_559 0030 33 2e 4a 50 47 00 81 ce-58 39 00 00 f8 95 f1 3b 3.JPG...X9.....; This indicates a total file size of 1647748 bytes (0x00192484 from offset 0x06). After this, a series of messages with length 0x3000 was read. Finally, a read of 0x484 finished download of the image. Example command: 0x76 bytes. Command length will vary depending on the length of the pathname string. 0000 36 00 00 00 02 02 00 00-00 00 00 00 00 00 00 00 6............... 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 01 00 00 11-36 00 00 00 06 00 00 00 ........6....... 0050 01 00 00 00 00 30 00 00-44 3a 5c 44 43 49 4d 5c .....0..D:\DCIM\ 0060 31 35 35 43 41 4e 4f 4e-5c 49 4d 47 5f 35 35 39 155CANON\IMG_559 0070 33 2e 4a 50 47 00 - 3.JPG. This requests the download of just the thumbnail from the file “D:\DCIM\155CANON\IMG_5593.JPG”, in chunks of 0x3000 bytes. Initial response (from a PowerShot G2): 0x40 bytes 0000 00 00 00 00 02 03 9b 18-00 00 00 00 00 00 00 00 ................ 0010 01 00 00 00 00 30 00 00-44 3a 5c 44 43 49 4d 5c .....0..D:\DCIM\ 0020 31 35 35 43 41 4e 4f 4e-5c 49 4d 47 5f 35 35 39 155CANON\IMG_559 0030 33 2e 4a 50 47 00 fe d0-08 5a 00 00 90 12 17 2c 3.JPG....Z....., This indicates a length of 6299 bytes for the thumbnail (0x0000189b at offset 0x06). This is followed by a single read of 6299 bytes, downloading EXIF thumbnail info.
Make directory requesttype=0x05 Command: variable length (here 0x58) 0000 18 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 47 71 cf e1 5a cb 63 28 ab bd 3e f3 9c 9b c5 1a Gq..Z.c(..>..... 0020 6d c6 a1 05 c4 92 dc c5 2d a1 dc 86 18 c3 6f cf m.......-.....o. 0030 50 72 c3 1d 3f 5a ec 74 6f 88 51 cf 73 6d 71 72 Pr..?Z.to.Q.smqr 0040 02 00 00 00 05 00 00 11 18 00 00 00 a4 e7 12 00 ................ 0050 44 3a 5c 44 43 49 4d 00 D:\DCIM. Response: 0x54 bytes 0000 14 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 81 7d 80 80 80 84 80 7c 7e 7f 7f 7e 78 77 79 7e .}.....|~..~xwy~ 0020 82 82 7f 7e 7f 84 80 7b 7f 7f 80 87 85 81 80 7f ...~...{........ 0030 83 84 80 7e 7f 80 83 82 82 83 84 8a 89 83 81 7c ...~...........| 0000 02 00 00 00 05 00 00 21 14 00 00 00 a4 e7 12 00 .......!........ 0010 00 00 00 00 ....
Delete directory requesttype=0x06 Command: 0x54 bytes 00000000 00 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 06 00 00 21-14 00 00 00 78 56 34 12 .......!....xV4. 00000050 00 00 00 00 ....
Disk Info Request requesttype=0x09 Command: variable length (here 0x54) 0000 14 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 09 00 00 11 14 00 00 00 68 f1 12 00 ............h... 0050 43 3a 5c 00 C:\. Argument structure: Null-terminated string containing the name of the disk. Response: 0x5c bytes 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 09 00 00 21 1c 00 00 00 68 f1 12 00 .......!....h... 0010 00 00 00 00 00 a0 a7 07 00 a0 a4 07 ............ 0x54 contains a word with total bytes on flash. 0x58 contains a word with bytes free.
Flash Device Identification requesttype=0x0a Command: 0x50 bytes 0000 10 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0020 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0030 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0040 02 00 00 00 0a 00 00 11 10 00 00 00 20 f6 12 00 ............ ... Response: variable length (here 0x44 bytes) (PowerShot G2) 0000 00 00 00 00 02 03 04 00 00 00 00 00 00 00 00 00 ................ 0010 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0020 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0030 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0000 44 3a 00 00 D:..
Get Directory requesttype=0x0b Command: variable length (here 0x5b bytes) 0000 1b 00 00 00 02 02 00 00-00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 0b 00 00 11-1b 00 00 00 06 00 00 00 ................ 0050 00 44 3a 5c 44 43 49 4d-00 00 00 .D:\DCIM... The byte at offset 0x50 gives the level of recursion allowed, here zero (no recursion). This is followed by the directory pathname, here “D:\DCIM”. Response: 0x40 bytes (PowerShot G2) 0000 00 00 00 00 02 03 56 00-00 00 00 00 00 00 00 00 ......V......... 0010 40 04 fe 15 d3 78 6a fb-54 bf d1 3c ed 63 4a 5d @....xj.T..<.cJ] 0020 2a f7 cf 75 10 db cd e6-a3 47 9f 95 c3 e0 67 23 *..u.....G....g# 0030 a8 20 63 df ad 22 bc 8d-c8 6f 01 8a 56 78 8a 24 . c.."...o..Vx.$ As with all “long” dialogues, the message contains only the length of data to follow, as a word starting at offset 0x06. In this case, the subsequent data will be 0x56 bytes long. The next message from the camera is: 0000 80 00 00 00 00 00 48 e2-48 3e 44 3a 5c 44 43 49 ......H.H>D:\DCI 0010 4d 00 10 00 00 00 00 00-44 e6 43 3e 43 41 4e 4f M.......D.C>CANO 0020 4e 4d 53 43 00 10 00 00-00 00 00 64 f6 48 3e 31 NMSC.......d.H>1 0030 35 35 43 41 4e 4f 4e 00-10 00 00 00 00 00 52 fb 55CANON.......R. 0040 48 3e 31 35 36 43 41 4e-4f 4e 00 00 00 00 00 00 H>156CANON...... 0050 00 00 00 00 00 00 - ...... Error codes: 0x00000000 No errors 0x02000022 File not found 0x02000029 File was protected 0x02000086 Path not found The example shows four entries. Each entry contains 1 byte attribute bits (described in ) 1 zero byte 4 bytes file size in bytes (zero if directory) 4 bytes UNIX time File name (null-terminated string of arbitrary length) “..” in name means “leave directory”. An entry with attribute, date, length, and name all zero indicates the end of the directory listing. Since these are all directory entries, each shows a file size of zero.: “D:\DCIM”, attribute byte 0x80. This is the name of the directory listed. . “CANONMSC”, attribute byte 0x10, time Fri Feb 7 22:00:52 2003 (0x3e43e644). “155CANON”, attribute byte 0x10, time Tue Feb 11 18:11:00 2003 (0x3e48f664). “156CANON”, attribute byte 0x10, time Tue Feb 11 18:32:02 2003 (0x3e48fb52). Here is an example of dealing with multiple levels in the directory hierarchy. The contents of this camera are: Thu May 4 00:11:40 2000 D:\DCIM\100CANON\IMG_0001.JPG 778435 Thu May 4 00:28:32 2000 D:\DCIM\100CANON\IMG_0002.JPG 44409 Thu May 4 00:28:32 2000 D:\DCIM\CANONMSC\100.CTG 2634 Thu May 4 00:28:32 2000 D:\DCIM\CANONMSC\D.CTG 383 Directory contents: "D:" (recurse = 0x0) 00000000 80 00 00 00 00 00 00 00-00 00 44 3A 00 10 00 00 ..........D:.... 00000010 00 00 00 C6 B5 10 39 44-43 49 4D 00 00 00 00 00 ......9DCIM..... 00000020 00 00 00 00 00 00 00 ....... Directory contents: "D:" (recurse = 0x1) 00000000 80 00 00 00 00 00 00 00-00 00 44 3A 00 80 00 00 ..........D:.... 00000010 00 00 00 36 C0 10 39 2E-5C 44 43 49 4D 00 10 00 ...6..9.\DCIM... 00000020 00 00 00 00 36 C0 10 39-31 30 30 43 41 4E 4F 4E ....6..9100CANON 00000030 00 10 00 00 00 00 00 CC-B5 10 39 43 41 4E 4F 4E ..........9CANON 00000040 4D 53 43 00 80 00 00 00-00 00 00 00 00 00 2E 2E MSC............. 00000050 00 00 00 00 00 00 00 00-00 00 00 00 ............ Directory contents: "D:" (recurse = 0x2) 00000000 80 00 00 00 00 00 00 00-00 00 44 3A 00 80 00 00 ..........D:.... 00000010 00 00 00 36 C0 10 39 2E-5C 44 43 49 4D 00 80 00 ...6..9.\DCIM... 00000020 00 00 00 00 3C C0 10 39-2E 5C 31 30 30 43 41 4E ....<..9.\100CAN 00000030 4F 4E 00 20 00 C3 E0 0B-00 3C C0 10 39 49 4D 47 ON. .....<..9IMG 00000040 5F 30 30 30 31 2E 4A 50-47 00 20 00 79 AD 00 00 _0001.JPG. .y... 00000050 30 C4 10 39 49 4D 47 5F-30 30 30 32 2E 4A 50 47 0..9IMG_0002.JPG 00000060 00 80 00 00 00 00 00 00-00 00 00 2E 2E 00 80 00 ................ 00000070 00 00 00 00 30 C4 10 39-2E 5C 43 41 4E 4F 4E 4D ....0..9.\CANONM 00000080 53 43 00 20 00 4A 0A 00-00 30 C4 10 39 31 30 30 SC. .J...0..9100 00000090 2E 43 54 47 00 20 00 7F-01 00 00 30 C4 10 39 44 .CTG. .....0..9D 000000A0 2E 43 54 47 00 80 00 00-00 00 00 00 00 00 00 2E .CTG............ 000000B0 2E 00 80 00 00 00 00 00-00 00 00 00 2E 2E 00 00 ................ 000000C0 00 00 00 00 00 00 00 00-00 00 .......... Here is a formatted listing of the entries: D : 0000: 0080 00000000 00000000 44 3A 00 . \ D C I M 000D: 0080 00000000 3910C036 2E 5C 44 43 49 4D 00 . \ 1 0 0 C A N O N 001E: 0080 00000000 3910C03C 2E 5C 31 30 30 43 41 4E 4F 4E 00 I M G _ 0 0 0 1 . J P G 0033: 0020 000BE0C3 3910C03C 49 4D 47 5F 30 30 30 31 2E 4A 50-47 00 I M G _ 0 0 0 2 . J P G 004A: 0020 0000AD79 3910C430 49 4D 47 5F 30 30 30 32 2E 4A 50 47 00 . . 0061: 0080 00000000 00000000 2E 2E 00 . \ C A N O N M S C 006E: 0080 00000000 3910C430 2E 5C 43 41 4E 4F 4E 4D 53 43 00 1 0 0 . C T G 0083: 0020 00000A4A 3910C430 31 30 30 2E 43 54 47 00 D . C T G 0095: 0020 0000017F 3910C430 44 2E 43 54 47 00 . . 00A6: 0080 00000000 00000000 2E 2E 00 . . 00B2: 0080 00000000 00000000 2E 2E 00 00BF: 0000 00000000 00000000 00
Delete file requesttype=0x0d Command: variable length (here 0x7e) 0000 3c 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 <............... 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 0d 00 00 11 3c 00 00 00 f8 f6 12 00 ........<....... 0050 43 3a 5c 44 43 49 4d 5c 31 33 33 43 41 4e 4f 4e C:\DCIM\133CANON 0060 00 43 52 57 5f 33 33 34 31 2e 43 52 57 00 43 52 .CRW_3341.CRW.CR 0070 57 5f 33 33 34 31 2e 54 48 4d 00 00 W_3341.THM.. Here we delete both a raw image and its corresponding thumbnail file. Response: 0x54 bytes 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 0d 00 00 21 14 00 00 00 f8 f6 12 00 .......!........ 0010 00 00 00 00 .... Status codes: 0x00000000 No errors 0x02000022 File not found 0x02000029 File was protected 0x02000086 Path not found (success on at least G2 and EOS D30/D60) Example command (delete JPEG image): 0000 2f 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 /............... 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 0d 00 00 11 2f 00 00 00 a8 f6 12 00 ......../....... 0050 43 3a 5c 44 43 49 4d 5c 31 33 33 43 41 4e 4f 4e C:\DCIM\133CANON 0060 00 49 4d 47 5f 33 33 34 33 2e 4a 50 47 00 00 .IMG_3343.JPG.. We can specify a series of file names separated by NULs, with a double NUL at the end. Data received via bulk_in after a command block: (Delete file) (file did not exist). 00000000 00 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 0D 00 00 21-14 00 00 00 78 56 34 12 .......!....xV4. 00000050 22 00 00 02 "... Data received via bulk_in after a command block: (Delete file) (file was protected) 00000000 00 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 0D 00 00 21-14 00 00 00 78 56 34 12 .......!....xV4. 00000050 29 00 00 02 )... Data received via bulk_in after a command block: (Delete file) (successful) 00000000 00 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 0D 00 00 21-14 00 00 00 78 56 34 12 .......!....xV4. 00000050 00 00 00 00 .... Data received via bulk_in from a PowerShot G2 after a command block: (Delete file) (successful) 00000000 14 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 00000010 20 00 00 00 00 00 00 00-00 00 00 00 00 00 01 00 ............... 00000020 00 00 c2 00 00 00 00 02-00 00 40 00 00 00 00 00 ..........@..... 00000030 02 00 00 00 00 00 00 00-00 02 20 00 00 00 20 00 .......... ... . 00000040 02 00 00 00 0d 00 00 21-14 00 00 00 07 00 00 00 .......!........ 00000050 86 00 00 02 - ....
Set File Attributes requesttype=0x0e Command: variable length (here 0x73, from a PowerShot G2) 0000 33 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 3............... 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 0e 00 00 11 33 00 00 00 f4 f1 12 00 ........3....... 0050 00 00 00 00 44 3a 5c 44 43 49 4d 5c 31 35 38 43 ....D:\DCIM\158C 0060 41 4e 4f 4e 00 41 55 54 5f 30 30 30 31 2e 4a 50 ANON.AUT_0001.JP 0070 47 00 00 G.. I don't know where the data are put, unless it's the word at 0x50. Response: 0x54 bytes 0000 14 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 31 2e 4a 50 47 00 5e 26 77 98 c7 07 87 6d 3d 5e 1.JPG.^&w....m=^ 0020 c7 76 07 0c eb d4 5d 8f 67 06 cf 47 b2 5b 4b 28 .v....].g..G.[K( 0030 92 35 41 80 14 74 c5 79 77 c4 bf 88 96 da 44 6f .5A..t.yw.....Do 0040 02 00 00 00 0e 00 00 21 14 00 00 00 f4 f1 12 00 .......!........ 0050 00 00 00 00 .... Error codes: 0x00000000 No errors 0x02000022 File not found Data received via bulk_in after a command block: (Set file attributes) (file did not exist). 00000000 00 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 0E 00 00 21-14 00 00 00 78 56 34 12 .......!....xV4. 00000050 22 00 00 02 "... File attributes: see
Set File Time requesttype=0x0f Command: variable length (here 0x73, from a PowerShot G2) 0000 33 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 3............... 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 0f 00 00 11 33 00 00 00 98 e7 12 00 ........3....... 0050 5a 59 63 3e 44 3a 5c 44 43 49 4d 5c 31 35 38 43 ZYc>D:\DCIM\158C 0060 41 4e 4f 4e 5c 41 55 54 5f 30 30 30 31 2e 4a 50 ANON\AUT_0001.JP 0070 47 00 00 G.. Parameters: 32-bit Unix time, full pathname of file. Terminated by two NUL characters, not just one. This command ended the upload of a file to “D:\DCIM\158CANON\AUT_0001.JPG” on a PowerShot G2 camera. Response (0x54 bytes): 0000 14 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 e6 24 e3 a5 31 8c 20 71 90 69 46 40 07 93 40 87 .$..1. q.iF@..@. 0020 29 04 92 4f a7 14 80 73 d3 ad 20 18 aa 03 71 de )..O...s.. ...q. 0030 94 f5 e7 a5 0c 18 84 63 22 b0 34 1f 9f 5c be 94 .......c".4..\.. 0040 02 00 00 00 0f 00 00 21 14 00 00 00 98 e7 12 00 .......!........ 0050 00 00 00 00 .... Error codes: unknown
Identify Camera requesttype=0x01 Command: 0x50 bytes 0000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 43 3a 5c 44 6f 63 75 6d 65 6e 74 73 20 61 6e 64 C:\Documents and 0020 20 53 65 74 74 69 6e 67 73 5c 44 65 66 61 75 6c Settings\Defaul 0030 74 20 55 73 65 72 00 77 69 6e 64 69 72 3d 43 3a t User.windir=C: 0040 02 00 00 00 01 00 00 12 10 00 00 00 00 f5 d6 00 ................ Response: 0x9c bytes (from an EOS D60): 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 01 00 00 22 5c 00 00 00 00 f5 d6 00 ......."\....... 0050 00 00 00 00 00 05 77 00 00 04 00 01 43 61 6e 6f ......w.....Cano 0060 6e 20 45 4f 53 20 44 36 30 00 00 00 00 00 00 00 n EOS D60....... 0070 00 00 00 00 00 00 00 00 00 00 00 00 43 6f 72 6e ............Corn 0080 65 6c 6c 20 50 72 6f 67 2e 20 43 6f 6d 70 75 74 ell Prog. Comput 0090 65 72 20 47 72 61 70 68 69 63 73 00 er Graphics. from a PowerShot S20: 00000000 00 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 01 00 00 22-5C 00 00 00 78 56 34 12 ......."\...xV4. 00000050 00 00 00 00 00 04 00 00-01 00 00 01 43 61 6E 6F ............Cano 00000060 6E 20 50 6F 77 65 72 53-68 6F 74 20 53 32 30 00 n PowerShot S20. 00000070 00 00 00 00 00 00 00 00-00 00 00 00 44 6F 6E 61 ............Dona 00000080 6C 64 20 44 75 63 6B 00-00 00 00 00 00 00 00 00 ld Duck......... 00000090 00 00 00 00 00 00 00 00-00 00 00 00 ............ First 0x40 bytes is throwable (as usual) At 0x5c is a string with camera type. At 0x7c is a string with owner name. 0x58-0x5b is firmware version (04 03 02 01 is version 1.2.3.4; 01 00 00 01 is version 1.0.0.1) Data at 0x54-0x57 (here 0x00000400) has unknown purpose.
Get time requesttype=0x03 Command: 0x50 bytes 0000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 03 00 00 12 10 00 00 00 f0 35 12 00 .............5.. Response: 0x60 bytes 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 03 00 00 22 20 00 00 00 f0 35 12 00 ......." ....5.. 0050 00 00 00 00 44 cf 27 3e 00 00 00 00 00 00 00 00 ....D.'>........ 0x54 contains a 4-byte UNIX time Other bytes are zero
Set Time requesttype=0x04 Command: 0x5c bytes 0x50 contains a UNIX time Other bytes are zero Status codes: 0x02000086 Invalid parameters (e.g. command block wrong length)
Change Owner requesttype=0x05 Command: 0x50 bytes Response: 0x54 bytes (no error codes) 00000000 00 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 05 00 00 22-14 00 00 00 78 56 34 12 ......."....xV4. 00000050 00 00 00 00 ....
Power supply status requesttype=0x0a Command: 0x50 bytes 0000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 43 3a 5c 44 6f 63 75 6d 65 6e 74 73 20 61 6e 64 C:\Documents and 0020 20 53 65 74 74 69 6e 67 73 5c 44 65 66 61 75 6c Settings\Defaul 0030 74 20 55 73 65 72 00 77 69 6e 64 69 72 3d 43 3a t User.windir=C: 0040 02 00 00 00 0a 00 00 12 10 00 00 00 a4 f4 79 00 ..............y. Response: 0x58 bytes (from an EOS D60 on battery power): 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 0a 00 00 22 18 00 00 00 a4 f4 d6 00 ......."........ 0050 00 00 00 00 06 00 00 20 ....... from a PowerShot S20? 00000000 00 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 0A 00 00 22-18 00 00 00 78 56 34 12 ......."....xV4. 00000050 00 00 00 00 06 00 00 10- ........ First 0x50 bytes are throwable. 0x54 contains a byte with power status: 0x6=good, 0x4=bad 0x57 contains a byte with power type in bit 4: ((value &0x20) == 0) running from ac-adapter ((value &0x20) != 0) running from battery The original document claimed that this byte contained “a byte with power type: 0x10=ac-adapter, 0x30=battery”, whereas a PowerShot G2 just toggles one bit.
Remote Camera Control requesttype=0x13 This command actually has 19 subcommands: Remote Camera Control Codes SubcommandSample ParametersReply LengthFunction00none5C Camera control initialization01none5C Exit release control02none5C Start viewfinder03none5C Stop viewfinder04none5C Release shutter07buffer of 0x34 bytes 5CSet release parameters0904 00 00 00 09 00 00 005C Set transfer mode0Anone8C Get release parameters0Bnone60 Get zoom position0C04 00 00 00 01 00 00 005c Set zoom position0Dnone60 Get available shot0E????? Set custom function0F14 bytes66 Get custom function10none60 Get size of extended release parameters11???????? Get version of extended release parameters12nonevaries Get extended release parameters13?????? Set extended parameters1401 00 00 00 00 035C Select camera output15?????? Do auto exposure, focus, and white balance
The subcommand is stored as a little-endian 4-byte number at the start of the message payload (i.e. starting 0x50 bytes from the start of the buffer). Parameters vary by subcommand, as noted below; they follow the subcommand in the message payload. The minimum is <subcommand> 0, so the minimum length of a command packet is 0x58. In the reply, the payload will always start with status, <subcommand>. After that, the minimum is one more zero word, or there may be more information. The minimum length is 0x5c.
Camera control initialization: 00 Takes no parameters. With some models, this command extends the lens to make the camera ready to capture images. With others, there is no visible effect, but Canon software seems to issue it anyway. Command: 0x58 bytes 0000 18 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 05 7f 00 00 02 00 01 43 61 6e 6f ............Cano 0020 6e 20 45 4f 53 20 44 33 30 00 00 00 00 00 00 00 n.EOS.D30....... 0030 00 00 00 00 00 00 00 00 00 00 00 00 43 6f 72 6e ............Corn 0040 02 00 00 00 13 00 00 12 18 00 00 00 00 c5 12 00 ................ 0050 00 00 00 00 00 00 00 00 ........ Response: 0x5c bytes (after ~5 seconds on PowerShot G2) 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 13 00 00 22 1c 00 00 00 00 c5 12 00 ......."........ 0010 00 00 00 00 00 00 00 00 00 00 00 00 ............ If the lens cap is left on a PowerShot G2, the lens can’t extend. The response takes about 10 seconds (as apparently the camera tries more than once to extend the lens), and the response block looks like this. Note that bytes 0x50 and 0x53 are non-zero, which is not the case when the lens extends properly. 0000: 1c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010: 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0020: 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0030: 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0040: 02 00 00 00 13 00 00 22 1c 00 00 00 78 56 34 12 ......."....xV4. 0050: 85 00 00 02 00 00 00 00 00 00 00 00 ............ If there is no CF card in an EOS D30, the response will be only 0x40 bytes long, and will look like this: 0000 00 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ The PowerShot G2 returns normally, even if no CF card is present. The error will be signaled later, at “set transfer mode” and “release shutter”
Exit release control: 01 Takes no parameters Command: 0x58 bytes 0000 18 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 13 00 00 12 18 00 00 00 18 cd 12 00 ................ 0050 01 00 00 00 00 00 00 00 ........ Response: 0x5c bytes 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 13 00 00 22 1c 00 00 00 18 cd 12 00 ......."........ 0010 00 00 00 00 01 00 00 00 00 00 00 00 ............
Start viewfinder: 02 Takes no parameters; returns minimum message of 0x5c bytes.
Stop viewfinder: 03 Takes no parameters; returns minimum message of 0x5c bytes.
Release shutter: 04 Takes no parameters; returns minimum message of 0x5c bytes. The camera does, however, signal through the interrupt pipe. The sequence goes: Issue “release shutter” command, read reply of 0x5c bytes. From a D60, this reply was 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 13 00 00 22 1c 00 00 00 28 f6 12 00 ......."....(... 0010 00 00 00 00 04 00 00 00 00 00 00 00 ............ Read 0x10 bytes from interrupt endpoint, using timeout of 50 milliseconds and retrying until success. The camera will normally respond in about 32 milliseconds (EOS D60, G2). Most responses have a length of zero, but the response after the “release shutter” is complete will be 0x10 bytes in length. The bytes seem always to be “02 00 00 00 0a 00 00 00 10 00 00 00 1c 00 00 00", whether the shot succeeded or failed. For the G2, the 0x10 response takes about 3.6 seconds. I believe that this signals that the capture is complete. The time seems relatively independent of image size or compression. For the D60, it seems to come within about 10ms of the “release shutter” command. For the 300D, response takes about 0.35 seconds. If transfer mode includes THUMB_TO_PC (see “Set transfer mode” below), read 0x17 bytes from interrupt endpoint as above. For a D60, these bytes were 0000: 02 00 00 00 08 00 00 00 17 00 00 00 eb 00 b0 17 0010: 01 00 1e 00 00 00 af For a G2, the bytes were 0000: 02 00 00 00 08 00 00 00 17 00 00 00 01 00 00 00 0010: 01 09 0c 00 00 00 b0 At byte 12 (0x0c) is a 4-byte integer with some sort of “image index”; you must specify this in a “download captured image” command to make it work. Starting at byte 0x11 is a 4-byte integer with the size of the thumbnail image to download. NOTE: This doesn’t arrive if the capture fails. Instead, a reply of 0x10 bytes arrives (for D60): 0000: 02 00 00 00 0a 00 00 00 10 00 00 00 1d 00 00 00 If transfer mode includes FULL_TO_PC, read 0x17 bytes from interrupt endpoint as above. For a D60, these bytes were 0000: 02 00 00 00 0c 00 00 00 17 00 00 00 eb 00 b0 17 0010: 01 c5 80 06 00 00 af For a G2, the bytes were 0000: 02 00 00 00 0c 00 00 00 17 00 00 00 01 00 00 00 0010: 01 5a cb 09 00 00 b0 A 4-byte integer at 0x0c has the image index for the “download captured image” command. A 4-byte integer at 0x11 has the main image size. I don’t know what the other bytes are. I suspect that byte 4 has some sort of flags for the type of image. I also guess that the last byte (at 0x16) may encode the camera model somehow. NOTE: This block doesn’t arrive if the capture fails. Instead, a reply of 0x14 bytes arrives (for D60): 0000 02 00 00 00 0a 00 00 00 14 00 00 00 0a 00 00 00 0010 01 00 00 00 Read 0x10 bytes from interrupt endpoint as above. For EOS cameras, this seems to signify that capture is complete and the image has been written to the storage card. For a D60, this can take from about 1.6 seconds (for small, low-quality JPEG) to about 16.5 seconds (for RAW), plus the shutter open time. For the G2, this returns immediately. For the EOS 20D, this message never comes. This response always seems to be 0000: 02 00 00 00 0a 00 00 00 10 00 00 00 1d 00 00 00 regardless of success or failure. The sequence of messages 0x0a/0x1c; 0x0a/0x1d may be repeated once or twice if the the image captured is the last one that will fit on the camera's storage device. For EOS cameras, only after successful write to camera storage, read another 0x10 bytes from interrupt endpoint as above. This returns immediately. The result is 0000: 02 00 00 00 0e 00 00 00 10 00 00 00 00 00 00 00 for success. If the capture failed, or if neither THUMB_TO_DRIVE or FULL_TO_DRIVE is set in the current transfer mode, this message is skipped and we go on to the final message (below). The code “0e” may signify that the thumbnail is ready for download; at any rate, Chris Breeze’s D30Capture starts to download the thumbnail immediately after this message is received. For EOS cameras, read the final message: 0000: 02 00 00 00 0f 00 00 00 10 00 00 00 00 00 00 00 NOTE: This message seems never to arrive from an EOS 300D. Interrupt reads always have a code in byte 0x04 (actually, it’s probably a 4-byte integer with a small value). This code is Type codes for interrupt read 0x01 Unknown; sometimes seen with PowerShot G2. 0x08 Image descriptor for captured thumbnail (only if THUMB_TO_PC bit is set in the current transfer mode); 0x17 bytes including the length of the thumbnail image and a key that must be supplied in the “get captured image” command. 0x0c Image descriptor for full-size captured image (only if FULL_TO_PC bit is set in the current transfer mode); 0x17 bytes including the length of the full image and a key that must be supplied in the “get captured image” command. The key seems to be identical for thumbnail and full image that correspond to each other. 0x0a Capture status: 0x10 bytes. The byte at offset 0x0c contains a code: 0x1c for start of capture, 0x1d for end of capture (completion for PowerShot cameras, still in progress for EOS cameras), and 0x0a (with a length of 0x14 bytes) if there was a photographic failure. There also is a code of 0x1b that seems to tell us to wait for the flash to fire; it has been seen when using the internal flash on EOS D30 and D60. 0x0e EOS write to flash storage successful: 0x10 bytes. This will never come if the current transfer mode doesn't include either THUMB_TO_DRIVE or FULL_TO_DRIVE 0x0f EOS capture complete: 0x10 bytes. 0x20 Response to camera initialization; not seen during capture dialog.
Set release parameters: 07 Takes a payload of 0x38 bytes: 0x34 after subcommand code. Offset 14 in these bytes (18 from the start of the payload) controls the flash: #define FLASH_OFF 0x00 #define FLASH_ON 0x01 #define FLASH_AUTO 0x02 Response: 0x5c bytes (failure): 0000: 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040: 02 00 00 00 13 00 00 22 1c 00 00 00 2f 00 00 00 ......."..../... 0050: 00 00 00 00 07 01 00 ff 00 00 00 00 ............ (success): 0000: 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040: 02 00 00 00 13 00 00 22 1c 00 00 00 2f 00 00 00 ......."..../... 0050: 00 00 00 00 07 00 00 00 00 00 00 00 ............
Set transfer mode: 09 Takes 2 parameters: 4, <code> where <code> is a combination of the following bits: #define THUMB_TO_PC 0x0001 #define FULL_TO_PC 0x0002 #define THUMB_TO_DRIVE 0x0004 #define FULL_TO_DRIVE 0x0008 These may be combined in any way. Command: 0x5c bytes 0000 1c 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 13 00 00 12 1c 00 00 00 2c c4 12 00 ............,... 0050 09 00 00 00 04 00 00 00 0d 00 00 00 ............ Error codes: 0x00000000 No errors 0x0200002a Camera storage is full Response 0x5c bytes: 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 13 00 00 22 1c 00 00 00 8c c5 12 00 ......."........ 0010 00 00 00 00 09 00 00 00 00 00 00 00 ............ This has just set the camera to send the next captured image to the camera's local storage, with the thumbnail image both to storage and to the PC.
Get release parameters: 0A Takes no parameters. Returns 0x34 bytes after the echo of the subcommand code. First 4-byte integer is 0x00000030, which is the count of remaining bytes. I assume that the 0x34 bytes are the same as is sent down by code 07, “set release parameters”. Command: 0x58 bytes 0000 18 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 13 00 00 12 18 00 00 00 14 c4 12 00 ................ 0050 0a 00 00 00 00 00 00 00 ........ Response 0x8C bytes: 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 13 00 00 22 4c 00 00 00 14 c4 12 00 ......."L....... 0050 00 00 00 00 0a 00 00 00 30 00 00 00 00 04 02 00 ........0....... 0060 00 00 00 00 04 01 01 ff 03 ff 01 30 00 ff 00 ff ...........0.... 0070 00 00 00 7f 10 00 60 00 38 00 7c 00 18 18 18 ff ......`.8.|..... 0000 20 00 50 00 14 00 14 00 14 00 01 00 ..P.........
Get zoom position: 0B No parameters Command: 0x58 bytes 0000 18 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0020 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0030 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0040 02 00 00 00 13 00 00 12 18 00 00 00 a4 f6 12 00 ................ 0050 0b 00 00 00 00 00 00 00 ........ Reply: 0x60 bytes 0000 20 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ............... 0010 82 81 80 7f 7f 80 81 83 84 84 83 81 80 7f 7f 80 ................ 0020 81 83 83 81 80 7f 7d 7d 7e 7f 80 81 80 7f 7e 7c ......}}~.....~| 0030 7c 7d 7f 80 81 81 81 80 7f 7f 80 81 82 84 84 83 |}.............. 0000 02 00 00 00 13 00 00 22 20 00 00 00 a4 f6 12 00 ......." ....... 0010 00 00 00 00 0b 00 00 00 04 00 00 00 00 00 3c 00 ..............<. Response has a 4-byte count (4), and I think two 2-byte integers (0,60). This was for a G2 at full-wide position (7mm).
Set zoom position: 0C Two parameters. Command: 0x5c bytes 0000 1c 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0020 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0030 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0040 02 00 00 00 13 00 00 12 1c 00 00 00 a8 f6 12 00 ................ 0050 0c 00 00 00 04 00 00 00 01 00 00 00 ............ Parameters are (4,1). Reply: 0x5c bytes 0000 1c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 7f 7f 80 80 80 80 7f 7d 7c 7b 7c 7e 7f 80 80 80 .......}|{|~.... 0020 7f 7e 7f 7f 80 82 83 84 83 82 81 80 80 81 82 84 .~.............. 0030 84 83 81 80 7f 7f 7f 80 80 80 80 7f 7e 7c 7b 7b ............~|{{ 0000 02 00 00 00 13 00 00 22 1c 00 00 00 a8 f6 12 00 ......."........ 0010 00 00 00 00 0c 00 00 00 00 00 00 00 ............
Get available shot: 0D No parameters Command: 0x58 bytes 0000 18 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 13 00 00 12 18 00 00 00 ec f4 25 01 ..............%. 0050 0d 00 00 00 00 00 00 00 ........ Reply 0x60 bytes: 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 13 00 00 22 20 00 00 00 ec f4 25 01 ......."......%. 0010 00 00 00 00 0d 00 00 00 04 00 00 00 02 00 00 00 ................ The last word is the estimated number of shots remaining: i.e. the free storage space divided by the estimated size of an image file in the current mode.
0E Set custom function No documentation; not yet seen in USB stream.
Get custom function: 0F 14 bytes of parameters. The first 4 bytes is a 32-bit little-endian count of the number of bytes following. In the example, there are 10 bytes of actual data. But the next 2 bytes seems to be an index for the custom function to read; the value comes back in the reply, which has a payload just as long, but with just the index/value pair repeated and then the setting of that function. A zero value is the default setting for all functions. Command: 0x62 bytes 0000 22 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 "............... 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 13 00 00 12 22 00 00 00 d4 c5 12 00 ........"....... 0050 0f 00 00 00 0a 00 00 00 04 00 e8 77 00 00 13 00 ...........w.... 0060 08 00 .. Reply 0x66 bytes: 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 13 00 00 22 26 00 00 00 d4 c5 12 00 ......."&....... 0010 00 00 00 00 0f 00 00 00 0a 00 00 00 04 00 04 00 ................ 0020 00 00 00 00 00 00 ...... Command: 0x62 bytes. In this case, we read custom function 1 ("Long exposure noise reduction"), which was set to 1. 0000 22 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 "............... 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 13 00 00 12 22 00 00 00 54 f6 12 00 ........"...T... 0050 0f 00 00 00 0a 00 00 00 01 00 ff ff 00 00 00 00 ................ 0060 00 00 .. Reply 0x66 bytes: 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 13 00 00 22 26 00 00 00 54 f6 12 00 ......."&...T... 0050 00 00 00 00 0f 00 00 00 0a 00 00 00 01 00 01 00 ................ 0060 01 00 00 00 00 00 ...... The value of the given custom function is given starting at byte 0x60. I don't know if this is a 2-byte or 4-byte value, or if it's possible to read more than one custom function at a time; Canon RemoteCapture reads them one at a time, even when it reads all the available functions. The custom functions (as seen in Canon RemoteCapture and on the camera menu) are as follows: EOS Custom Functions CodeFunctionValues0x01Long exposure noise reduction 0: Off 1: On (not on D60)0x02Shutter button/AE lock button 0: AF/AE lock 1: AE lock/AF 2: AF/AF lock 3: AE+release/AE+AF0x03Mirror lockup 0: Disable 1: Enable0x04Tv, Av and exposure steps 0: ½ stop 1: 1/3 stop0x05AF-assist beam/ Flash firing 0: Emits/fires 1: Does not emit/Fires 2: Only ext. flash emits/Fires 3: Emits/Does not fire0x06Shutter speed in Av mode 0: Auto 1: 1/200 (fixed)0x07AEB sequence/auto cancellation 0: 0 - + /Enable 1: 0 - + /Disable 2: 0 + - /Enable 3: 0 + - /Disable0x08Shutter curtain sync 0: 1st-curtain sync 1: 2nd-curtain sync0x09Lens AF stop button Fn, switch 0: AF stop 1: AF start 2: AE lock while metering0x0aAuto reduction of fill flash 0: Enable 1: Disable0x0bMenu button return position 0: Top 1: Previous (top if powered off) 2: Previous0x0cSET button func, when shooting 0: Default (no function) 1: Change quality 2: Change ISO speed 3: Change parameters0x0dSensor cleaning 0: Disable 1: Enable0x0eSuperimposed display 0: On 1: Off (not on D30)0x0fShutter release without CF card 0: Possible w/o CF card 1: Not possible (not on D30))
Get size of extended release parameters: 10 No parameters Command: 0x58 bytes 0000 18 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 7f 7f 80 80 80 80 7f 7d 7c 7b 7c 7e 7f 80 80 80 .......}|{|~.... 0020 7f 7e 7f 7f 80 82 83 84 83 82 81 80 80 81 82 84 .~.............. 0030 84 83 81 80 7f 7f 7f 80 80 80 80 7f 7e 7c 7b 7b ............~|{{ 0040 02 00 00 00 13 00 00 12 18 00 00 00 50 f6 12 00 ............P... 0050 10 00 00 00 00 00 00 00 ........ Reply: 0x60 bytes 0000 20 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ............... 0010 87 8b 8d 8a 87 88 89 89 87 88 8b 8b 89 86 87 89 ................ 0020 89 86 84 85 85 83 81 82 85 84 80 7e 7e 7f 7f 7e ...........~~..~ 0030 7f 82 83 80 7b 7b 7e 80 80 82 85 86 82 7e 7d 80 ....{{~......~}. 0000 02 00 00 00 13 00 00 22 20 00 00 00 50 f6 12 00 ......." ...P... 0010 00 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 ................ I think this means to expect 16 (0x10) bytes of “extended release parameters”.
11 Get version of extended release parameters No documentation; not yet seen in USB stream.
Get extended release parameters: 12 Command: 0x5c bytes 0000 1c 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 7f 7f 80 80 80 80 7f 7d 7c 7b 7c 7e 7f 80 80 80 .......}|{|~.... 0020 7f 7e 7f 7f 80 82 83 84 83 82 81 80 80 81 82 84 .~.............. 0030 84 83 81 80 7f 7f 7f 80 80 80 80 7f 7e 7c 7b 7b ............~|{{ 0040 02 00 00 00 13 00 00 12 1c 00 00 00 50 f6 12 00 ............P... 0050 12 00 00 00 04 00 00 00 10 00 00 00 ............ Reply: 0x6c bytes 0000 2c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ,............... 0010 71 72 75 76 79 7e 80 7f 7b 7c 7f 81 82 84 86 87 qruvy~..{|...... 0020 85 81 80 81 83 82 80 7f 80 7c 77 76 78 7a 79 77 .........|wvxzyw 0030 75 76 78 79 79 7b 7f 7f 7e 7d 80 84 84 84 87 8b uvxyy{..~}...... 0000 02 00 00 00 13 00 00 22 2c 00 00 00 50 f6 12 00 .......",...P... 0010 00 00 00 00 12 00 00 00 10 00 00 00 10 00 00 00 ................ 0020 00 00 02 00 00 00 18 00 e0 08 54 aa ..........T.
13 Set extended parameters No documentation; not yet seen in USB stream.
Select camera output: 14 Sends a 9-byte payload: 0x00000014, 0x00000001, and a single byte with the code LCD (0x1), Video out (0x2), or OFF (0x3).
15 Do auto exposure, focus, and white balance No documentation; not yet seen in USB stream.
Download Captured Image requesttype=0x17 Command: 0x60 bytes: 0000 20 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 17 00 00 12 20 00 00 00 22 29 05 01 ............").. 0050 00 00 00 00 00 14 00 00 01 00 00 00 16 15 01 2d ...............- The information is all 4-byte integers. 0x50: zero 0x54: maximum block length to be used for bulk transfer of the image (0x00001400 here) 0x58: code: 1=fetch thumbnail, 2=fetch full image 0x5c: “image index” obtained from an interrupt read just after capture. The G2 seems less finicky about this: it’s an integer that counts up from 1 in each session. The EOS cameras have some inscrutable code that must be gotten from the camera. Response packet of 0x40 bytes: 0000 00 00 00 00 02 03 30 17 00 00 00 00 00 00 00 00 ......0......... 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ Bytes 6-10 of the reply packet contain the 32-bit total length of the image data transfers, here 0x00001730. We must then issue a series of bulk reads as explained above.
Download Captured Preview requesttype=0x18? No documentation; not yet seen in USB stream.
Unknown requesttype=0x1a Not seen with EOS D60 and Canon RemoteCapture. Seen only with D30. If byte 0x50 is some sort of opcode, it may come in sequence: 01, 02, 03 in consecutive commands. Command: 0x7C bytes 0000 3c 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 <............... 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 1a 00 00 12 3c 00 00 00 f8 c4 12 00 ........<....... 0050 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................ 0060 00 00 00 00 b8 c7 12 00 9b 2b 40 00 58 c8 12 00 .........+@.X... 0070 b8 6d 4f 00 02 00 00 00 01 e6 12 00 .mO......... Reply: 0x80 bytes 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 1a 00 00 22 40 00 00 00 f8 c4 12 00 ......."@....... 0050 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 ................ 0060 ac 00 00 00 5e b5 ff ff 55 1b 00 00 10 00 54 1b ....^...U.....T. 0070 0c 00 ef 19 9c 0f 53 02 58 9d 0c 00 ef 19 ee 26 ......S.X......& So the reply message is just the same length as the command, with 4 bytes of status code inserted. I can't see any mapping between what goes out and what comes back, though. Here the first three words of both command payload and response payload are 1,0,1, but then they diverge. 0000 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 ac 00 00 00 0010 00 00 00 00 b8 c7 12 00 9b 2b 40 00 58 c8 12 00 5e b5 ff ff 55 1b 00 00 10 00 54 1b 0c 00 ef 19 0020 b8 6d 4f 00 02 00 00 00 01 e6 12 00 9c 0f 53 02 58 9d 0c 00 ef 19 ee 26
EOS (D30/D60) Lock Keys requesttype=0x1b This command will normally be issued immediately before a "release shutter" command, unlike the non-EOS “lock keys” command, which is issued at camera initialization. This late locking is so that the EOS camera can still be operated directly, even when connected to the USB port. The PowerShot cameras don't have this capability, so they can (should) be locked as soon as the USB connection is made. Command: 0x54 bytes 0000 14 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 0a 00 00 00 30 00 00 00 00 03 01 00 ........0....... 0020 00 00 00 00 01 01 00 ff 03 ff 01 30 06 ff 01 ff ...........0.... 0030 00 00 00 7f 10 00 48 00 ff ff ff ff 18 c8 18 ff ......H......... 0040 02 00 00 00 1b 00 00 12 14 00 00 00 a4 f6 12 00 ................ 0050 06 00 00 00 .... Response: 0x54 bytes 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 1b 00 00 22 14 00 00 00 a4 f6 12 00 ......."........ 0010 00 00 00 00 .... Status codes: 0x00000000 No errors 0x02000086 Unknown
EOS Unlock Keys requesttype=0x1c This command is normally issued during the interrupt sequence after a "release shutter" command, so as to make the camera available as soon as possible. Command: 0x50 bytes 0000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 1c 00 00 12 10 00 00 00 58 f7 12 00 ............X... Response: 0x54 bytes 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 1c 00 00 22 14 00 00 00 58 f7 12 00 ......."....X... 0010 00 00 00 00 ....
Get EOS Body ID requesttype=0x1d Used only with EOS cameras. Canon RemoteCapture issues it immediately before entering remote capture mode. Command: 0x50 bytes 0000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 1d 00 00 12 10 00 00 00 f4 f4 12 00 ................ Response: 0x58 bytes (EOS D30) 0000 00 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 1d 00 00 22 18 00 00 00 f4 f4 12 00 ......."........ 0010 00 00 00 00 ea 01 28 18 ......(. There’s one zero word, then four bytes containing the body ID. With a D30, the upper 16 bits should be used directly as hexadecimal digits, and the lower 16 bits should be converted to decimal. For this camera, it’s 182800490: 0x1828 concatenated with 00490, which is the decimal equivalent of 0x01ea. The following C code fragment will do the trick: char serialnumber[10]; sprintf ( serialnumber, "%04x%05d", (body_id>>16)&0xffff, body_id&0xffff ); For a D60, it’s a simple binary number: convert it to decimal to get the body ID. “1e ab d6 3c” becomes 0x3cd6ab1e; the decimal equivalent is 1020701470, the number on the sticker on the base of the camera. This C code fragment will convert this to ASCII correctly: char serialnumber[10]; sprintf ( serialnumber, "%d", body_id );
Get Camera Photo Abilities requesttype=0x1f Command: 0x50 bytes 0000: 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040: 02 00 00 00 1f 00 00 12 10 00 00 00 78 56 34 12 ............xV4. Reply is 0x384 bytes (PowerShot G2): 0000: 44 03 00 00 01 03 00 00 00 00 00 00 00 00 00 00 D............... 0010: aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 .U.U.U.U.U.U.U.U 0020: aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 .U.U.U.U.U.U.U.U 0030: aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 .U.U.U.U.U.U.U.U 0040: 02 00 00 00 1f 00 00 22 44 03 00 00 78 56 34 12 ......."D...xV4. 0050: 00 00 00 00 30 03 00 00 10 01 50 6f 77 65 72 53 ....0.....PowerS 0060: 68 6f 74 20 47 32 00 00 00 14 00 00 80 28 00 00 hot G2.......(.. 0070: 00 40 00 00 00 00 00 00 00 00 0d 00 00 00 4c 61 .@............La 0080: 72 67 65 3a 53 75 70 65 72 46 69 6e 65 00 00 00 rge:SuperFine... 0090: 00 00 a8 06 00 00 e0 08 00 00 01 00 00 00 4c 61 ..............La 00a0: 72 67 65 3a 46 69 6e 65 00 00 40 00 00 00 00 00 rge:Fine..@..... 00b0: 00 00 a8 06 00 00 e0 08 00 00 02 00 00 00 4c 61 ..............La 00c0: 72 67 65 3a 4e 6f 72 6d 61 6c 00 00 00 20 00 00 rge:Normal... .. 00d0: 00 00 a8 06 00 00 e0 08 00 00 03 00 00 00 4d 65 ..............Me 00e0: 64 69 75 6d 20 31 3a 53 75 70 65 72 46 69 6e 65 dium 1:SuperFine 00f0: 00 00 b0 04 00 00 40 06 00 00 01 00 00 00 4d 65 ......@.......Me 0100: 64 69 75 6d 20 31 3a 46 69 6e 65 00 00 00 00 00 dium 1:Fine..... 0110: 00 00 b0 04 00 00 40 06 00 00 02 00 00 00 4d 65 ......@.......Me 0120: 64 69 75 6d 20 31 3a 4e 6f 72 6d 61 6c 00 00 00 dium 1:Normal... 0130: 00 00 b0 04 00 00 40 06 00 00 03 00 00 00 4d 65 ......@.......Me 0140: 64 69 75 6d 20 32 3a 53 75 70 65 72 46 69 6e 65 dium 2:SuperFine 0150: 00 55 00 03 00 00 00 04 00 00 01 00 00 00 4d 65 .U............Me 0160: 64 69 75 6d 20 32 3a 46 69 6e 65 00 a8 71 aa 55 dium 2:Fine..q.U 0170: aa 55 00 03 00 00 00 04 00 00 02 00 00 00 4d 65 .U............Me 0180: 64 69 75 6d 20 32 3a 4e 6f 72 6d 61 6c 00 aa 55 dium 2:Normal..U 0190: ae 55 00 03 00 00 00 04 00 00 03 00 00 00 53 6d .U............Sm 01a0: 61 6c 6c 3a 53 75 70 65 72 46 69 6e 65 00 aa 55 all:SuperFine..U 01b0: aa 51 e0 01 00 00 80 02 00 00 01 00 00 00 53 6d .Q............Sm 01c0: 61 6c 6c 3a 46 69 6e 65 00 d5 aa 15 ab 55 aa 55 all:Fine.....U.U 01d0: aa 55 e0 01 00 00 80 02 00 00 02 00 00 00 53 6d .U............Sm 01e0: 61 6c 6c 3a 4e 6f 72 6d 61 6c 00 55 aa 55 aa 55 all:Normal.U.U.U 01f0: 2b 55 e0 01 00 00 80 02 00 00 03 00 00 00 43 52 +U............CR 0200: 57 00 aa 75 aa 15 aa 55 a8 54 aa 55 2a 57 aa 55 W..u...U.T.U*W.U 0210: 0a 75 a8 06 00 00 e0 08 00 00 04 00 00 00 aa 55 .u.............U 0220: aa d5 2a 54 aa 55 aa 55 aa c7 aa 55 aa 15 aa 55 ..*T.U.U...U...U 0230: ee 75 a2 55 a8 55 ff ff fe ff ff ff 7d f9 ff ff .u.U.U......}... 0240: ff af ff ff df ff ff ff ff ef ff ff fb ff ff ff ................ 0250: be ff df ff fb fb ff ff ff ff ff ff fd ff ff ff ................ 0260: 7d df bf f7 7f fe ff ff 3f ff be ff ff 57 ff ff }.......?....W.. 0270: bf fb ff f7 ef 9f ff fb af ff ff ff ff ff 78 00 ..............x. 0280: 00 00 00 00 00 00 a0 00 00 00 00 00 00 00 14 00 ................ 0290: 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 ................ 02a0: 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 80 ................ 02b0: 00 00 00 80 03 00 00 80 66 00 00 80 00 00 00 00 ........f....... 02c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 02e0: 28 00 00 50 00 80 00 14 00 c0 00 00 00 80 00 00 (..P............ 02f0: 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 ................ 0300: 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 ................ 0310: 00 c0 00 00 00 80 00 00 00 80 00 00 00 80 00 00 ................ 0320: 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 ................ 0330: 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 ................ 0340: 00 00 00 00 00 00 00 00 00 00 00 00 00 f0 00 00 ................ 0350: 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 50 ...............P 0360: 00 80 00 00 00 80 00 14 00 c0 00 00 00 00 00 00 ................ 0370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0380: 00 00 55 aa ..U. Fields in “camera photo abilities” response offsetbytesvalue0x50:4status code0x54:2size of structure (here 0x330=816 bytes)0x56:4Camera model identifier? (here 0x01100000). This will show up as the value of the image file tag 0x0010 (EXIF) or 0x5834 (CRW)0x5a:32camera identification (ASCII)0x7a:4Count n of number of entries in image-quality table0x7c:n*32Table of image quality levels allowed
The observed values at 0x56 are: 0x00000110 (G2) 0x000125 (A70), 0x00000127 (IXUS 400), 0x00000129 (G5), 0x00000134 (A80), 0x00000145 (A400), 0x00000157 (A510), 0x80000166 (D60), 0x80000170 (300D), 0x8003024a (Optura 20). Each entry in the table seems to be struct { char imageType[20]; /* ASCII name of this image type */ long imageHeight, imageWidth; long compressionType; /* 1: SuperFine 2:Fine 3:Normal 4:RAW */ } tableEntry; So we can see that the PowerShot G2 can produce the following image types: PowerShot G2 image formats reported HeightWidthCompressionName17042272JPEG superfineLarge:17042272JPEG fineLarge:17042272JPEG normalLarge:12001600JPEG superfineMedium 1:12001600JPEG fineMedium 1:12001600JPEG normalMedium 1:7681024JPEG superfineMedium 2:7681024JPEG fineMedium 2:7681024JPEG normalMedium 2:480640JPEG superfineSmall:480640JPEG fineSmall:480640JPEG normalSmall:17042272RawCRW
I suspect that the remaining bytes after 0x21c are garbage. Note: This command doesn't seem to be implemented on the EOS D30/D60 or the PowerShot S45 or G3. I suspect that it's being phased out, and new cameras from now on (February 2003) won't implement it. The new protocol uses a different code for what seems to be the same function. Some recent models return responses of different length, so code must be ready for this and read the length from the first four bytes of the response. Cameras known to give different response lengths are Camera models with unusual response length ModelResponse lengthCommentsPowerShot A400 0x394 No entries in table (count=0). PowerShot A80, G5 0x394 No entries in table (count=0). Camera name is unprintable garbage.
Lock Keys requesttype=0x20 Not used for EOS D30/D60 cameras: use “EOS Lock Keys” instead. This command is normally issued during camera initialization for a non-EOS camera, as those cameras can't share control between the host computer and the on-camera controls. We don't know how to reverse this command, i.e. unlock the keys on a non-EOS camera. To regain control of a non-EOS camera, unplug the USB cable. Command: 0x50 bytes 0000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 20 46 69 6c 65 73 00 43 4f 4d 50 55 54 45 52 4e Files.COMPUTERN 0020 41 4d 45 3d 52 41 4c 50 48 00 43 6f 6d 53 70 65 AME=RALPH.ComSpe 0030 63 3d 43 3a 5c 57 49 4e 4e 54 5c 73 79 73 74 65 c=C:\WINNT\syste 0040 02 00 00 00 20 00 00 12 10 00 00 00 94 f7 e1 00 .... ........... Reply: 0x54 bytes 0000 14 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0020 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0030 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 ................ 0000 02 00 00 00 1f 00 00 22 14 00 00 00 94 f7 e1 00 ......."........ 0010 00 00 00 00 ....
USB Upload (a little bit special) Control_transfer_write requesttype=0x40 value=0x10 length=0x40 data=0x00000000 0x0203 0x40+len1[explained later] [0x00 repeated 0x38] Example: 0000 00 00 00 00 03 02 7a 14 00 00 00 00 00 00 00 00 ......z......... 0010 8e 58 63 3e 44 2e 43 54 47 00 00 00 00 00 00 00 .Xc>D.CTG....... 0020 00 00 00 00 00 83 85 82 87 84 7f 81 7f 7d 7b 77 .............}{w 0030 7e 81 7e 7d 7c 7d 81 80 82 80 7c 80 81 7f 84 83 ~.~}|}....|..... This is identical to the response to “Download Captured Image”, except for the cmd3 halfword at 0x04. The cmd3 halfword is 0x0203 here, 0x0302 there. bulk_in_read [0x40 bytes] Example: 0000 00 00 00 00 03 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 8e 58 63 3e 44 2e 43 54 47 00 00 00 00 00 00 00 .Xc>D.CTG....... 0020 00 00 00 00 00 83 85 82 87 84 7f 81 7f 7d 7b 77 .............}{w 0030 7e 81 7e 7d 7c 7d 81 80 82 80 7c 80 81 7f 84 83 ~.~}|}....|..... The following block obeys the normal command block structure. The exact layout is: 0000000: xx xx xx xx 03 04 00 00 - 00 00 00 00 00 00 00 00 0000010: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 0000020: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 0000030: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 0000040: 02 00 00 00 03 00 00 11 - xx xx xx xx SS SS SS SS 0000050: 00 00 00 00 UU UU UU UU - VV VV VV VV pathname data ... xx xx xx xx : len1, the length of the payload (total block length - 0x40) cmd3 = 0x00000403 cmd1 = 0x03 cmd2 = 0x11 xx xx xx xx : len1 (again) SS SS SS SS : sequence number UU UU UU UU : Offset within file; starts at zero, increments by len2 (below) for next block VV VV VV VV : len2, length of data in this block. Normally 0x1400 or less. pathname : full path name of file on camera, terminated by one NUL. File cannot be created in nonexistent directory. data : image data (len2 bytes) Example of beginning of a block: 0000 3a 14 00 00 03 04 00 00 00 00 00 00 00 00 00 00 :............... 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 03 00 00 11 3a 14 00 00 a2 4c 10 02 ........:....L.. 0050 00 00 00 00 00 00 00 00 00 14 00 00 44 3a 5c 44 ............D:\D 0060 43 49 4d 5c 31 35 38 43 41 4e 4f 4e 5c 41 55 54 CIM\158CANON\AUT 0070 5f 30 30 30 31 2e 4a 50 47 00 ff d8 ff e1 18 ba _0001.JPG....... 0080 45 78 69 66 00 00 49 49 2a 00 08 00 00 00 09 00 Exif..II*....... 0090 0f 01 02 00 06 00 00 00 7a 00 00 00 10 01 02 00 ........z....... 00A0 .... The filename here is “D:\DCIM\158CANON\AUT_0001.JPG”; the offset is zero (i.e. this is the first block of this file) and length is 0x1400. Len1 is 0x143a, which is 0x1400 + 0x10 + 0xc (three full words) + 0x1e (length of pathname+1). Response to this block (0x5c bytes): 0000 00 00 00 00 03 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 78 00 00 00 76 00 00 00 ........x...v... 0020 36 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00 6............... 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 03 00 00 21 1c 00 00 00 a2 4c 10 02 .......!.....L.. 0050 00 00 00 00 00 14 00 00 00 14 00 00 ............ The interesting words are: 0x50 Status 0x54 Count of bytes already transferred in this upload? 0x58 Number of bytes of real data transferred in the latest bulk write. Unfortunately, the number at 0x54 seems to jump too fast; after the second write of 0x1400 bytes, it reads 0x3c00, not 0x2800. And after the next, it's 0x6400, not 0x3c00. In fact, it counts up by multiples of the 0x1400 data length: 1, 3, 5, 7, 9, ... This transaction is repeated until the whole file is transmitted. At the end of the transfer, there will usually be one “short” transfer. Here it is 0x117e bytes: 0000 b8 11 00 00 03 04 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 03 00 00 11 b8 11 00 00 a2 4c 10 02 .............L.. 0050 00 00 00 00 00 4c 04 00 7e 11 00 00 44 3a 5c 44 .....L..~...D:\D 0060 43 49 4d 5c 31 35 38 43 41 4e 4f 4e 5c 41 55 54 CIM\158CANON\AUT 0070 5f 30 30 30 31 2e 4a 50 47 00 02 8a 00 28 a0 02 _0001.JPG....(.. 0080 8a 00 28 a0 02 8a 00 28 a0 02 8a 00 28 a0 02 8a ..(....(....(... 0090 00 28 a0 02 8a 00 28 a0 02 8a 00 28 a0 02 8a 00 .(....(....(.... Here the offset is 0x44c00. The response is 0x5c bytes 0000 00 00 00 00 03 03 00 00 00 00 00 00 00 00 00 00 ................ 0010 7a 8c f2 3e 94 98 6a 3b 19 01 14 ee 3d f2 79 14 z..>..j;....=.y. 0020 a0 07 f9 17 0c ab d4 e7 9a 43 bb ec 3c 6d 7e 4e .........C..<m~N 0030 0a 2f 71 9c d2 ae 1f 32 37 cd 8e 87 1c d1 61 58 ./q....27.....aX 0040 02 00 00 00 03 00 00 21 1c 00 00 00 a2 4c 10 02 .......!.....L.. 0050 00 00 00 00 7e a9 08 00 7e 11 00 00 ....~...~... The “total byte count” (or whatever it is) is now 0x8a97e. After this the caller must set the file time; otherwise it is left at -1.
New USB Interface The EOS 20D introduced a new version of the Canon native protocol. While it still seems to use the same basic format of command and response blocks, some command codes have been abandoned, new ones added, and, worst of all, some codes have changed their meanings. This section describes what we know so far about this revised protocol. I assume that there will be other cameras using this new protocol; the first candidates would be the EOS 1D Mk. II and 1D Mk. II, which share the CR2 raw image format with the 20D.
Summary of available (known) commands in new protocol New Storage Control Commands (cmd2=0x11) cmd1cmd3Argument(e.g.)Response LengthOperationOld code0x010x202 0x00000001 "A:/DCIM/100CANON\IMG_0098.CR2" <NUL> LGet picture0x010x040x201 none0x54 Unknown0x050x201 none0x54 Unknown0x060x201 none0x54 Unknown0x070x201 none0x54 Unknown0x090x201 none0x54 Unknown0x0A0x201 "A:/DCIM/101CANON/IMG_0105.JPG" 0x0007 0x0005 0x0100 0x0008 0x008f7668 0x008f8078 "A:/DCIM/101CANON/" L Delete file0x0D0x0B0x202 0x01 "D:\DCIM"<NUL> <NUL> <NUL>L Get directory0x0B0x0D0x201 "A:" <NUL>0x5c Disk info request0x090x0E0x202 noneL Flash Device Identification0x0A
New Camera Control Commands (cmd2=0x12) cmd1cmd3Argument(e.g.)Response LengthOperationOld code0x010x201 none0x9c Identify camera0x010x030x201 none0x60 Get time0x030x040x201 0x390873f0 0x000000000x54 Set time0x040x050x201 none0x74 Get ownerNA0x060x201 "Cornell University" <NUL>0x54 Set owner0x050x130x201 none0x58 Power supply status0x0A0x1D0x201 0x000000000x94 Get custom function settings0x13/???0x210x201 0x000000000x54 Unknown command0x220x201 0x0000000f0x54 Unknown command0x230x201 none0x58 Get Body ID0x1D0x240x201 none0x458 Get Photo Abilities0x1F0x250x201 9 bytes: 00 00 00 00 00 00 00 00 000x5c Remote Capture Control0x130x260x202 0x10 bytes: 00 00 00 00 00 00 01 00 02 00 00 00 07 00 00 00varies Get captured image0x170x350x201 none0x5c Lock keys0x1B0x360x201 00 00 00 00 00 00 00 000x54 Unknown
Get Picture requesttype=0x01 Downloads a full image or thumbnail from camera storage. Similar with command in old protocol, but parameters differ. Command: variable length (here 0x76 bytes) 00000000 33 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00 3............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 01 00 20 11 33 00 00 00 18 cd 12 00 ...... .3....... 00000050 01 00 00 00 41 3a 2f 44 43 49 4d 2f 31 30 30 43 ....A:/DCIM/100C 00000060 41 4e 4f 4e 2f 49 4d 47 5f 30 30 39 38 2e 43 52 ANON/IMG_0098.CR 00000070 32 00 00 2.. Parameters: 0x50: Flag for download of thumbnail: 0x00000001 for thumbnail, 0x00000000 for full image. 0x54: Pathname of file to download, terminated by a two NUL bytes The example requests download of the full image in file “A:/DCIM/100CANON/IMG_0098.C2R”. Notice the forward slashes in this pathname. Response: 0x40 bytes (EOS 20D) 00000000 00 00 00 00 02 03 d6 3a 0e 00 00 00 00 00 00 00 .......:........ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ This indicates a total file size of 1647748 bytes (0x000e3ad6 from offset 0x06). After this, a series of 14 messages with length 0x10000 was read, then one read of length 0x3ac0. Finally, a read of 0x16 finished download of the image. This example seems to be downloading a CR2 raw image file; notice the TIFF magic II* at the sbeginning. 00000000 49 49 2a 00 10 00 00 00 43 52 02 00 20 ee 07 00 II*.....CR.. ... 00000010 0e 00 00 01 03 00 01 00 00 00 00 06 4c cc 01 01 ............L... 00000020 03 00 01 00 00 00 00 04 33 33 02 01 03 00 03 00 ........33...... 00000030 00 00 be 00 00 00 03 01 03 00 01 00 00 00 06 00 ................ 00000040 cc cc 0f 01 02 00 06 00 00 00 c4 00 00 00 10 01 ................ 00000050 02 00 0e 00 00 00 ca 00 00 00 11 01 04 00 01 00 ................ 00000060 00 00 00 26 00 00 12 01 03 00 01 00 00 00 01 00 ...&............ 00000070 22 33 17 01 04 00 01 00 00 00 28 2a 03 00 1a 01 "3........(*.... 00000080 05 00 01 00 00 00 ea 00 00 00 1b 01 05 00 01 00 ................ 00000090 00 00 f2 00 00 00 28 01 03 00 01 00 00 00 02 00 ......(......... 000000a0 27 33 32 01 02 00 14 00 00 00 fa 00 00 00 69 87 '32...........i. 000000b0 04 00 01 00 00 00 0e 01 00 00 28 50 03 00 08 00 ..........(P.... 000000c0 08 00 08 00 43 61 6e 6f 6e 00 43 61 6e 6f 6e 20 ....Canon.Canon 000000d0 45 4f 53 20 32 30 44 00 dc cc cc cc 8c cc cc de EOS 20D......... 000000e0 33 33 77 b3 13 b6 cf f9 32 33 48 00 00 00 01 00 33w.....23H..... 000000f0 00 00 48 00 00 00 01 00 00 00 32 30 30 34 3a 31 ..H.......2004:1 00000100 31 3a 31 30 20 30 36 3a 34 33 3a 30 36 00 1c 00 1:10 06:43:06... 00000110 9a 82 05 00 01 00 00 00 64 02 00 00 9d 82 05 00 ........d....... 00000120 01 00 00 00 6c 02 00 00 22 88 03 00 01 00 00 00 ....l..."....... ... 00000000 ec ca cc cc ec cc ed ee cc d6 cc cc ef cc cc 48 ...............H 00000010 cc ae 33 33 b3 b7 ..33..
Unknown function requesttype=0x04 When called as for "set file attributes": 0000 33 00 00 00 01 02 00 00-00 00 00 00 00 00 00 00 3............... 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 04 00 10 11-33 00 00 00 0a 00 00 00 ........3....... 0050 00 00 00 00 41 3a 5c 44-43 49 4d 5c 31 37 32 43 ....A:\DCIM\172C 0060 41 4e 4f 4e 00 49 4d 47-5f 37 32 35 32 2e 4a 50 ANON.IMG_7252.JP 0070 47 00 00 - G.. returns 0x58 bytes: 0000 18 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 04 00 10 21-18 00 00 00 0a 00 00 00 .......!........ 0010 87 00 40 82 ff ff ff ff- ..@..... The status code is nonzero, indicating some sort of error.
Unknown function requesttype=0x05 When called as for "set file attributes": 0000 33 00 00 00 01 02 00 00-00 00 00 00 00 00 00 00 3............... 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 05 00 10 11-33 00 00 00 0a 00 00 00 ........3....... 0050 00 00 00 00 41 3a 5c 44-43 49 4d 5c 31 37 32 43 ....A:\DCIM\172C 0060 41 4e 4f 4e 00 49 4d 47-5f 37 32 35 32 2e 4a 50 ANON.IMG_7252.JP 0070 47 00 00 - G.. returns 0x54 bytes: 0000 14 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 05 00 10 21-14 00 00 00 0a 00 00 00 .......!........ 0010 20 00 40 82 - .@. The status code is nonzero, indicating some sort of error.
Unknown function requesttype=0x06 When called as for "set file attributes": 0000 33 00 00 00 01 02 00 00-00 00 00 00 00 00 00 00 3............... 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 06 00 10 11-33 00 00 00 09 00 00 00 ........3....... 0050 00 00 00 00 41 3a 5c 44-43 49 4d 5c 31 37 32 43 ....A:\DCIM\172C 0060 41 4e 4f 4e 00 49 4d 47-5f 37 32 35 32 2e 4a 50 ANON.IMG_7252.JP 0070 47 00 00 - G.. returns 0x54 bytes: 0000 14 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 06 00 10 21-14 00 00 00 09 00 00 00 .......!........ 0010 20 00 40 82 - .@. The status code is nonzero, indicating some sort of error.
Unknown function requesttype=0x07 When called as for "set file attributes": 0000 33 00 00 00 01 02 00 00-00 00 00 00 00 00 00 00 3............... 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 07 00 10 11-33 00 00 00 09 00 00 00 ........3....... 0050 00 00 00 00 41 3a 5c 44-43 49 4d 5c 31 37 32 43 ....A:\DCIM\172C 0060 41 4e 4f 4e 00 49 4d 47-5f 37 32 35 32 2e 4a 50 ANON.IMG_7252.JP 0070 47 00 00 - G.. returns 0x54 bytes: 0000 14 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 07 00 10 21-14 00 00 00 09 00 00 00 .......!........ 0010 00 00 00 00 - .... The status code is zero, indicating success, but success at what? The state of the named file on the storage card doesn't change.
Unknown function requesttype=0x09 When called as for "set file attributes": 0000 33 00 00 00 01 02 00 00-00 00 00 00 00 00 00 00 3............... 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 09 00 10 11-33 00 00 00 0a 00 00 00 ........3....... 0050 20 00 00 00 41 3a 5c 44-43 49 4d 5c 31 37 32 43 ...A:\DCIM\172C 0060 41 4e 4f 4e 00 49 4d 47-5f 37 32 35 32 2e 4a 50 ANON.IMG_7252.JP 0070 47 00 00 - G.. returns 0x54 bytes: 0000 14 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0000 02 00 00 00 09 00 10 21-14 00 00 00 0a 00 00 00 .......!........ 0010 20 00 40 82 - .@. That status code hasn't been seen before.
Delete file requesttype=0x0a This differs from the command 0x0d in the older protocol; instead of separate strings for directory and file name, we have a complete path specification (directory/file), then another copy of the directory name. Each seems to be allowed 48 bytes (0x30). Command: variable length (here 0x91 bytes) 00000000 51 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 Q............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 0a 00 10 11 51 00 00 00 2c d8 12 00 ........Q...,... 00000050 41 3a 2f 44 43 49 4d 2f 31 30 31 43 41 4e 4f 4e A:/DCIM/101CANON 00000060 2f 49 4d 47 5f 30 31 30 35 2e 4a 50 47 00 00 00 /IMG_0105.JPG... 00000070 07 00 05 00 00 01 08 00 68 76 8f 00 78 80 8f 00 ........hv..x... 00000080 41 3a 2f 44 43 49 4d 2f 31 30 31 43 41 4e 4f 4e A:/DCIM/101CANON 00000090 2f / Here we delete a JPEG file. The complete path string is terminated by (at least one) zero byte, followed by garbage. At offset 0x80 of the packet (0x30 of the payload), we have the directory name, with no trailing zero byte. Response: 0x54 bytes 00000000 14 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 0a 00 10 21 14 00 00 00 2c d8 12 00 .......!....,... 00000010 00 00 00 00 .... Status codes: 0x00000000 No errors 0x82200040 ?? 0x82220040 Bad parameters? Directory not found?
Get Directory requesttype=0x0b Error codes: 0x00000000 No errors 0x02000022 File not found 0x02000029 File was protected 0x02000086 Path not found Command: variable length (here 0x64 bytes) 00000000 24 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00 $............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 0b 00 20 11 24 00 00 00 78 80 8f 00 ...... .$...x... 00000050 00 41 3a 5c 44 43 49 4d 5c 31 30 30 43 41 4e 4f .A:\DCIM\100CANO 00000060 4e 00 00 00 N... The byte at offset 0x50 gives the level of recursion allowed, here zero (no recursion). This is followed by the directory pathname, here “A:\DCIM\100CANON”. Response: 0x40 bytes 00000000 00 00 00 00 02 03 78 00 00 00 00 00 00 00 00 00 ......x......... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ As with all “long” dialogues, the message contains only the length of data to follow, as a word starting at offset 0x06. In this case, the subsequent data will be 0x78 bytes long. The next message from the camera is: 00000000 a0 00 00 00 00 00 cc 54 8b 41 41 3a 5c 44 43 49 .......T.AA:\DCI 00000010 4d 5c 31 30 30 43 41 4e 4f 4e 00 20 00 d3 9a 9f M\100CANON. .... 00000020 00 98 0f 90 41 49 4d 47 5f 30 30 39 38 2e 43 52 ....AIMG_0098.CR 00000030 32 00 20 00 52 b0 68 00 7a b8 91 41 49 4d 47 5f 2. .R.h.z..AIMG_ 00000000 30 30 39 39 2e 43 52 32 00 20 00 f3 2e 69 00 8a 0099.CR2. ...i.. 00000010 b8 91 41 49 4d 47 5f 30 31 30 30 2e 43 52 32 00 ..AIMG_0100.CR2. 00000020 80 00 00 00 00 00 00 00 00 00 2e 2e 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 ........ This shows four entries. Each entry contains 1 byte attribute bits (described in ) 1 zero byte 4 bytes file size in bytes (zero if directory) 4 bytes UNIX time File name (null-terminated string of arbitrary length) “..” in name means “leave directory”. An entry with attributes, date, and length all zero indicates the end of the directory listing. It seems that with this camera, Canon has changed to putting the string ".." in this empty entry; formerly, the name contained only a single NUL. The contents of this listing: “A:\DCIM\100CANON”, attribute byte 0xa0. This is the name of the directory listed. “IMG_0098.CR2”, attribute byte 0x20, size 0x009f9ad3 (10,459,869) time 0x41900f98. “IMG_0099.CR2”, attribute byte 0x20, size 0x0068b052 (6,860,882) time 0x4191b87a. “IMG_0100.CR2”, attribute byte 0x20, size 0x00692ef3 (6,893,299) time 0x4191b88a.
Disk Info Request requesttype=0x0d This seems to be similar to the command 0x09 in the older protocol, but note that the device name has no trailing backslash. Command: variable length (here 0x53 bytes) 00000000 13 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 0d 00 10 11 13 00 00 00 a8 d9 12 00 ................ 00000050 41 3a 00 A:. Argument: null-terminated string containing the name of the disk. Response: 0x5c bytes 00000000 1c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 0d 00 10 21 1c 00 00 00 a8 d9 12 00 .......!........ 00000010 00 00 00 00 c0 44 0f 00 80 ac 0e 00 .....D...... 0x54 contains a word with total bytes on flash. 0x58 contains a word with bytes free. So this camera seems to have a card with 1,000,640 bytes, and 961,664 bytes free. I would guess that we need to multiply by, say, 1024, since I think the card was 1GB.
Flash Device Identification requesttype=0x0e Command: 0x50 bytes 00000000 10 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 0e 00 20 11 10 00 00 00 84 d9 12 00 ...... ......... Response: 0x44 bytes 00000000 00 00 00 00 02 03 04 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 41 3a 00 00 A:..
Identify Camera requesttype=0x01 This command is similar to “Identify Camera” from the original protocol, but doesn't return the owner name. To get the owner name, issue the “Get Owner” command. Command: 0x50 bytes 00000000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 01 00 10 12 10 00 00 00 08 e4 d5 00 ................ Response: 0x9c bytes (EOS 20D): 00000000 5c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 \............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 01 00 10 22 5c 00 00 00 08 e4 d5 00 ......."\....... 00000050 00 00 00 00 00 08 77 81 00 05 00 01 43 61 6e 6f ......w.....Cano 00000060 6e 20 45 4f 53 20 32 30 44 00 00 00 00 00 00 00 n EOS 20D....... 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000010 01 00 00 00 00 00 00 00 00 00 00 00 ............ First 0x40 bytes is throwable (as usual) Data at 0x54-0x57 (here 00 08 77 81) have unknown purpose. 0x58-0x5b is firmware version (04 03 02 01 is version 1.2.3.4; 00 05 00 01 here is version 1.0.5.0) At 0x5c is a string with camera type. Bytes starting at 0x7c seem to be either zero or garbage.
Get time requesttype=0x03 No parameters. Identical with previous protocol. Command: 0x50 bytes 00000000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 03 00 10 12 10 00 00 00 30 dc 12 00 ............0... Response (0x60 bytes): 00000000 20 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 03 00 10 22 20 00 00 00 30 dc 12 00 ......." ...0... 00000010 00 00 00 00 de de a1 41 00 00 00 00 00 00 00 00 .......A........ 0x54 contains a 4-byte UNIX time Other bytes are zero
Set Time requesttype=0x04 Command: 0x5c bytes. 00000000 1c 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 04 00 10 12 1c 00 00 00 04 df 12 00 ................ 00000050 f5 de a1 41 00 00 00 00 00 00 00 00 ...A........ 0x50 contains a 4-byte UNIX time Other bytes are zero Response: 0x54 bytes. 00000000 14 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 04 00 10 22 14 00 00 00 04 df 12 00 ......."........ 00000010 00 00 00 00 .... Status codes: 0x02000086 Invalid parameters (e.g. command block wrong length)
Get Owner requesttype=0x05 Command: 0x50 bytes. 00000000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 05 00 10 12 10 00 00 00 58 dc 12 00 ............X... Response: 0x74 bytes. 00000000 34 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 4............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 05 00 10 22 34 00 00 00 58 dc 12 00 ......."4...X... 00000010 00 00 00 00 43 6f 72 6e 65 6c 6c 20 55 6e 69 76 ....Cornell Univ 00000020 65 72 73 69 74 79 20 32 35 35 2d 38 33 36 37 00 ersity 255-8367. 00000030 00 00 00 00 .... Status code is 4 bytes at 0x50, followed by null-terminated string. in a 32-byte field (i.e. maximum text length is 31 bytes, I think.
Set Owner requesttype=0x06 Command is variable in length, here 0x63 bytes. 00000000 23 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 #............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 06 00 10 12 23 00 00 00 58 df 12 00 ........#...X... 00000050 43 6f 72 6e 65 6c 6c 20 55 6e 69 76 65 72 73 69 Cornell Universi 00000060 74 79 00 ty. Response: 0x54 bytes. 00000000 14 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 06 00 10 22 14 00 00 00 58 df 12 00 ......."....X... 00000010 00 00 00 00 .... Status code is 4 bytes at 0x50.
Power supply status requesttype=0x13 Command: 0x50 bytes 00000000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 13 00 10 12 10 00 00 00 28 ed f9 00 ............(... Response: 0x58 bytes (from an EOS 20D on battery power): 00000000 18 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 13 00 10 22 18 00 00 00 28 ed f9 00 ......."....(... 00000010 00 00 00 00 06 00 00 20 ....... First 0x50 bytes are throwable. 0x54 contains a byte with power status. 0x6=good, 0x4=bad 0x57 contains a byte with power type in bit 4: ((value &0x20) == 0) running from ac-adapter ((value &0x20) != 0) running from battery The last two values also form the end of the response to an “Identify camera” request.
Get Custom Functions requesttype=0x1d Command: 0x54 bytes 00000000 14 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 1d 00 10 12 14 00 00 00 a4 e7 12 00 ................ 00000050 00 00 00 00 .... Response: 0x94 bytes 00000000 54 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 T............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 1d 00 10 22 54 00 00 00 a4 e7 12 00 ......."T....... 00000050 00 00 00 00 28 00 00 00 00 01 00 02 00 03 00 04 ....(........... 00000060 00 05 01 06 00 07 01 08 00 09 00 0a 00 0b 00 0c ................ 00000070 00 0d 00 0e 00 0f 00 10 00 11 00 12 7c ae 10 00 ............|... 00000000 40 49 b1 ff 70 af 10 00 28 82 b1 ff 00 00 00 00 @I..p...(....... 00000010 00 00 00 00 .... At 0x50 is a 4-byte status code followed by a 4-byte count of bytes (including the 4 bytes of the count), then apparently the custom function settings for the camera. Then at 0x7c is the same sequence as starting at offset 0x84 of the reply to Identify Camera. I suspect that this is garbage in the buffer. Here are the meanings of all custom functions. Note that this table is not the same as that for the earlier EOS cameras. Custom function values for EOS 20D FunctionIndexValuesSET button func, when shooting10: Default (no function) 1: Change quality 2: Change parameters 3: Menu display 4: Image replayLong exposure noise reduction21: onShutter speed in Av mode30: auto 1: 1/250Shutter button/AE lock button function40: AF/AE lock 1: AE lock/AF 2: AF/AF lock, no AE lock 3: AE/AF, no AE lockDisable AF-assist light5TV,AV and exposure increments60: 1/2 stop 1: 1/3 stopFlash firing70: Fires 1: Does not fireISO expansion80: Off 1: OnAEB sequence/auto cancellation90:0..-..+/enable 1:0..-..+/disable 2:-..0..+/enable 3:-..0..+/disableSuperimposed display100: On 1: OffMenu button return position110: Previous (top if power off) 1: previous 2: TopMirror lockup121: onAf point selection method130: Normal 1: Multi-controler direct 2: Quick Control Dial directE-TTL II140: Evaluative 1: AverageShutter curtain sync150: first 1: secondSafety shift in Av or TV160: Disable 1: EnableLens AF stop button Fn, switch170: AF stop 1: AF start 2: AE lock while metering 3: AF point: M→Auto/Auto→ctr. 4: ONE SHOT ↔ AI SERVO 5: IS startAdd original decision data180: Off 1: On
Unknown Command requesttype=0x21 Issued after Power supply status, Identify Camera, unknown command 2, or Get captured image. Command: 0x54 bytes 00000000 14 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 21 00 10 12 14 00 00 00 a8 e7 12 00 ....!........... 00000050 0f 00 00 00 .... Camera Response: 0x54 bytes (EOS 20D) 00000000 14 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 21 00 10 22 14 00 00 00 a8 e7 12 00 ....!.."........ 00000010 00 00 00 00 ....
Unknown Command requesttype=0x22 One parameter: 0x0000000f. Seems to be issued after a “Remote Capture Control” with subcode of 0x1c (unknown) or 0x04 (release shutter), or at the endo of a file download. Command: 0x54 bytes 00000000 14 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 22 00 10 12 14 00 00 00 b0 e7 12 00 ...."........... 00000050 0f 00 00 00 .... Camera Response: 0x54 bytes (EOS 20D) 00000000 14 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 22 00 10 22 14 00 00 00 b0 e7 12 00 ....".."........ 00000010 00 00 00 00 .... After this, there seems to be an interrupt read of 0x17 (23) bytes: 00000000 02 00 00 00 0c 00 00 00 17 00 00 00 07 00 00 00 ................ 00000010 02 2d a4 81 00 83 ad .-..... This looks a whole lot like the second interrupt message after release on an older Canon camera. 4-byte integer at byte 0 is 2 4-byte integer at byte 4 is 0xc 4-byte integer at byte 8 is total length 4-byte integer at byte 0x0c may be length of payload (i.e. <total length> - 0x10) 4-byte integer at byte 0x0c apparently gives the image handle for download The byte at 0x10 is 2, whereas earlier cameras gave a 1 4-byte integer at byte 0x11 is the size of the image file, just as with older cameras The byte at 0x15 happens to be the endpoint index of the interrupt endpoint of this device, but this may be coincidence The final byte was 0xb0 for the G2, 0xaf for the D60. Could this be some sort of camera model ID? But there seem to be other versions of the command, e.g.: 00000000 14 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 21 00 10 12 14 00 00 00 a8 e7 12 00 ....!........... 00000050 0f 00 00 00 .... with the following response: 00000000 14 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 21 00 10 22 14 00 00 00 a8 e7 12 00 ....!.."........ 00000010 00 00 00 00 ....
Get EOS Body ID requesttype=0x23 Issued after “Identify Camera” Command: 0x50 bytes. 00000000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 23 00 10 12 10 00 00 00 f0 df e4 00 ....#........... Response: 0x58 bytes 00000000 18 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 23 00 10 22 18 00 00 00 f0 df e4 00 ....#.."........ 00000050 00 00 00 00 0e 46 03 1f .....F.. The 4 bytes at 0x50 are presumably a status code (0 for success); the next four bytes are the camera Body ID (hardware serial number) in binary. Printing this number as a 10-digit decimal with leading zeroes gives the “Camera Body No.” seen in the EOS Viewer Utility. This camera has a body ID of 0520308238.
Get Photo Abilities requesttype=0x24 I think this replaces the “Get Camera Photo Abilities” command. The response block for this command is longer, but contains a similar list of image type names, resolutions, and compression types. Command: 0x50 bytes 00000000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 24 00 10 12 10 00 00 00 f0 df e4 00 ....$........... Camera response: 0x474 bytes (EOS 20D) 00000000 34 04 00 00 01 03 00 00 00 00 00 00 00 00 00 00 4............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 24 00 10 22 34 04 00 00 f0 df e4 00 ....$.."4....... 00000050 00 00 00 00 20 04 75 01 00 80 43 61 6e 6f 6e 20 .... .u...Canon 00000060 45 4f 53 20 32 30 44 00 00 00 00 00 00 00 00 00 EOS 20D......... 00000070 00 00 00 00 00 00 00 00 00 00 07 00 00 00 4c 61 ..............La 00000080 72 67 65 3a 46 69 6e 65 00 00 00 00 00 00 00 00 rge:Fine........ 00000090 00 00 20 09 00 00 b0 0d 00 00 02 00 00 00 4c 61 .. ...........La 000000a0 72 67 65 3a 4e 6f 72 6d 61 6c 00 00 00 00 00 00 rge:Normal...... 000000b0 00 00 20 09 00 00 b0 0d 00 00 03 00 00 00 4d 69 .. ...........Mi 000000c0 64 64 6c 65 3a 46 69 6e 65 00 00 00 00 00 00 00 ddle:Fine....... 000000d0 00 00 a0 06 00 00 f0 09 00 00 02 00 00 00 4d 69 ..............Mi 000000e0 64 64 6c 65 3a 4e 6f 72 6d 61 6c 00 00 00 00 00 ddle:Normal..... 000000f0 00 00 a0 06 00 00 f0 09 00 00 03 00 00 00 53 6d ..............Sm 00000100 61 6c 6c 3a 46 69 6e 65 00 00 00 00 00 00 00 00 all:Fine........ 00000110 00 00 80 04 00 00 c0 06 00 00 02 00 00 00 53 6d ..............Sm 00000120 61 6c 6c 3a 4e 6f 72 6d 61 6c 00 00 00 00 00 00 all:Normal...... 00000130 00 00 80 04 00 00 c0 06 00 00 03 00 00 00 43 52 ..............CR 00000140 57 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 W............... 00000150 00 00 20 09 00 00 b0 0d 00 00 04 00 00 00 00 00 .. ............. 00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000270 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70 00 ..............p. 00000280 00 00 00 00 00 00 9f 00 00 00 07 00 00 00 0f 00 ................ 00000290 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 ................ 000002a0 00 00 00 80 0f 00 00 80 00 00 00 80 00 00 00 80 ................ 000002b0 00 00 00 80 03 00 00 80 21 00 00 80 00 00 00 80 ........!....... 000002c0 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 00 ................ 000002d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000002e0 50 00 00 00 01 c0 00 00 01 80 00 00 00 80 0b 00 P............... 000002f0 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 ................ 00000300 00 80 00 00 00 a0 00 00 00 80 00 00 00 80 00 00 ................ 00000310 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 ................ 00000320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000330 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 ................ 00000340 00 80 00 00 00 80 00 00 00 90 00 00 25 a0 00 00 ............%... 00000350 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000360 00 00 00 00 00 00 00 00 00 fc 00 00 00 00 00 00 ................ 00000370 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000380 00 80 00 00 00 00 00 00 00 a0 00 00 00 80 00 00 ................ 00000390 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000003a0 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 ................ 000003b0 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000003c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000003d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000003e0 00 80 00 00 00 80 00 00 00 00 00 00 00 00 13 00 ................ 000003f0 00 80 13 00 00 80 00 00 00 00 00 00 00 00 00 00 ................ 00000400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000450 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000470 00 00 00 00 .... Fields in “photo abilities” response offsetbytesvalue0x50:4status code0x54:2?Length of structure (here 0x420=1056)0x56:2?unknown (here 0x175=373, 2236/6 rounded to nearest integer)0x58:2unknown (here 0x8000=32,768)0x5a:32camera identification (ASCII)0x7a:4Count n-1 where n is the number of entries in image-quality table0x7e:n*32Table of image quality levels allowed
Each entry in the table seems to be struct { char imageType[20]; /* ASCII name of this image type */ long imageHeight, imageWidth; long compressionType; /* 2:Fine 3:Normal 4:RAW */ } tableEntry; So we can see that the EOS 20D can produce the following image types: EOS 20D image formats reported HeightWidthCompressionName22363504JPEG fineLarge:Fine22363504JPEG normalLarge:Normal16962544JPEG fineMiddle:Fine16962544JPEG normalMiddle:Normal11521728JPEG fineSmall:Fine11521728JPEG normalSmall:Normal22363504RawCRW
I suspect that the remaining bytes after 0x15d are garbage.
Remote Capture Control requesttype=0x25 I think this is the new version of Remote Camera Control. Subcommands seen so far: Remote Camera Control Codes SubcommandSample ParametersReply LengthFunction00none5C Camera control initialization01none5C Exit release control04none5C Release shutter07buffer of 0x34 bytes 5CSet release parameters0904 00 00 00 09 00 00 005C Set transfer mode0Anone8C Get release parameters0Dnone60 Get available shot10none60 Get size of extended release parameters12nonevaries Get extended release parameters13<block of parameters>5c Set extended parameters1B0x4 0xb5e Unknown1Cnone67, 6d, 70, 66, 65 Unknown
The following functions haven't been seen yet. Some (e.g. “get custom functions”) have, I think, been superseded by other opcodes; others (e.g. “Start viewfinder”, “Set zoom position”) don't really apply to the EOS cameras that, so far, are the only ones using this protocol. Remote Camera Control Codes SubcommandSample ParametersReply LengthFunction02none5C Start viewfinder03none5C Stop viewfinder0Bnone60 Get zoom position0C04 00 00 00 01 00 00 005c Set zoom position0E????? Set custom function0F14 bytes66 Get custom function11???????? Get version of extended release parameters1401 00 00 00 00 035C Select camera output15?????? Do auto exposure, focus, and white balance
The subcommand is stored as a little-endian 4-byte number at the start of the message payload (i.e. starting 0x50 bytes from the start of the buffer). Parameters vary by subcommand, as noted below; they follow the subcommand in the message payload. The minimum is <subcommand> 0 with another zero byte, so the minimum length of a command packet is 0x59. The extra byte means that the length of this command will always be odd. In the reply, the payload will always start with status, <subcommand>. After that, the minimum is one more zero word (plus an extra zero byte), or there may be more information. The minimum length is 0x5c.
Camera control initialization: 00 Takes no parameters. Command: 0x59 bytes 00000000 19 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 12 19 00 00 00 68 e7 12 00 ....%.......h... 00000050 00 00 00 00 00 00 00 00 00 ......... Camera response: 0x5c bytes 00000000 1c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 1c 00 00 00 68 e7 12 00 ....%.."....h... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 ............
Exit release control: 01 Takes no parameters Command: 0x59 bytes 00000000 19 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 12 19 00 00 00 58 e7 12 00 ....%.......X... 00000050 01 00 00 00 00 00 00 00 00 ......... Response: 0x5c bytes 00000000 1c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 1c 00 00 00 58 e7 12 00 ....%.."....X... 00000010 00 00 00 00 01 00 00 00 00 00 00 00 ............
Release shutter: 04 Takes no parameters. We haven't figured out interrupt communication yet. Command: 0x59 bytes 00000000 19 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 12 19 00 00 00 44 e9 17 01 ....%.......D... 00000050 04 00 00 00 00 00 00 00 00 ......... Response: 0x5c bytes 00000000 1c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 1c 00 00 00 44 e9 17 01 ....%.."....D... 00000010 00 00 00 00 04 00 00 00 00 00 00 00 ............
Set release parameters: 07 Takes a payload of 0x39 bytes: 0x35 after subcommand code. Command: 0x59 bytes 00000000 49 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 I............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 12 49 00 00 00 44 e9 17 01 ....%...I...D... 00000050 07 00 00 00 30 00 00 00 20 02 01 02 00 00 ff 00 ....0... ....... 00000060 03 01 00 ff 03 ff 02 90 08 ff 00 ff 7f 7f 7f 7f ................ 00000070 ff ff 58 00 20 00 70 00 00 00 ff ff 18 00 50 00 ..X. .p.......P. 00000080 ff ff ff ff ff ff 01 00 00 ......... Response: 0x5c bytes (success): 00000000 1c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 1c 00 00 00 44 e9 17 01 ....%.."....D... 00000010 00 00 00 00 07 00 00 00 00 00 00 00 ............
Set transfer mode: 09 Takes 2 parameters: 4, <code> where <code> is a combination of the following bits: #define THUMB_TO_PC 0x0001 #define FULL_TO_PC 0x0002 #define THUMB_TO_DRIVE 0x0004 #define FULL_TO_DRIVE 0x0008 These may be combined in any way. 00000000 1d 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 12 1d 00 00 00 58 e7 12 00 ....%.......X... 00000050 09 00 00 00 04 00 00 00 02 00 00 00 00 ............. Response: 0x5c bytes 00000000 1c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 1c 00 00 00 58 e7 12 00 ....%.."....X... 00000010 00 00 00 00 09 00 00 00 00 00 00 00 ............
Get release parameters: 0A Takes no parameters. Returns 0x34 bytes after the echo of the subcommand code. First 4-byte integer is 0x00000030, which is the count of remaining bytes. I assume that the 0x34 bytes are the same as is sent down by code 07, “set release parameters”. Command: 0x59 bytes 00000000 19 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 12 19 00 00 00 4c e7 12 00 ....%.......L... 00000050 0a 00 00 00 00 00 00 00 00 ......... Response: 8c bytes 00000000 4c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 L............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 22 4c 00 00 00 4c e7 12 00 ....%.."L...L... 00000050 00 00 00 00 0a 00 00 00 30 00 00 00 20 04 02 00 ........0... ... 00000060 00 00 ff 00 01 01 00 ff 03 ff 02 90 02 ff 00 ff ................ 00000070 7f 7f 7f 7f ff ff 58 00 1c 00 74 00 00 00 ff ff ......X...t..... 00000000 18 00 50 00 ff ff ff ff ff ff 01 00 ..P.........
Get available shot: 0D No parameters Command: 0x59 bytes 0000 19 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 13 00 10 12 18 00 00 00 1f 00 00 00 ..............%. 0050 0d 00 00 00 00 00 00 00 00 ........ Reply 0x60 bytes: 0000: 20 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ............... 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040: 02 00 00 00 25 00 10 22 20 00 00 00 1f 00 00 00 ....%.." ....... 0050: 00 00 00 00 0d 00 00 00 04 00 00 00 e8 03 00 00 ................ The last word is the estimated number of shots remaining: i.e. the free storage space divided by the estimated size of an image file in the current mode.
Get size of extended release parameters: 10 No parameters Command: 0x59 bytes 00000000 19 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 12 19 00 00 00 5c e7 12 00 ....%.......\... 00000050 10 00 00 00 00 00 00 00 00 ......... Response: 0x60 bytes 00000000 20 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 20 00 00 00 5c e7 12 00 ....%.." ...\... 00000010 00 00 00 00 10 00 00 00 04 00 00 00 3c 00 00 00 ............<...
Get extended release parameters: 12 Parameters are the 8-byte result from Get size of extended release parameters. Command: 0x5d bytes 00000000 1d 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 12 1d 00 00 00 4c e7 12 00 ....%.......L... 00000050 12 00 00 00 04 00 00 00 3c 00 00 00 00 ........<.... Response: 0x98 bytes 00000000 58 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 X............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 22 58 00 00 00 4c e7 12 00 ....%.."X...L... 00000050 00 00 00 00 12 00 00 00 3c 00 00 00 3c 00 00 00 ........<...<... 00000060 00 00 05 00 00 00 00 00 ff ff ff ff 00 00 00 00 ................ 00000070 ff ff ff ff ff ff ff ff 00 00 ff ff ff ff ff ff ................ 00000000 ff ff 00 00 50 14 ff ff 01 00 ff ff ff ff 00 00 ....P........... 00000010 ff ff 00 00 00 00 00 00 ........ Contents of “extended release parameters” block OffsetContentMeaning0x000x0000003cLength of block0x040x0000??0x060x0005??0x080x00000000??0x0c0xffffffff (-1)??0x100x00000000??0x140xffffffff (-1)??0x180xffffffff (-1)??0x1c0x0000??0x1e0xffff (-1)??0x200xffffffff (-1)??0x240xffff (-1)??0x260x0000??0x280x1450??0x2a0xffff (-1)??0x2c0x0001??0x2e0xffff (-1)??0x300xffff (-1)??0x320x0000??0x340xffff (-1)??0x360x0000??0x380x00000000??
Set extended parameters: 12 Command: 0x95 bytes 00000000 55 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 U............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 12 55 00 00 00 44 e9 17 01 ....%...U...D... 00000050 13 00 00 00 3c 00 00 00 3c 00 00 00 00 00 05 00 ....<...<....... 00000060 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff ff ff ................ 00000070 ff ff ff ff 00 00 ff ff ff ff ff ff ff ff 00 00 ................ 00000080 50 14 ff ff 01 00 ff ff ff ff 00 00 ff ff 00 00 P............... 00000090 00 00 00 00 00 ..... Contents of parameter block for “Set Extended Parameters” OffsetContentMeaning0x000x0000003cLength of block0x040x0000??0x060x0005??0x080x00000000??0x0c0xffffffff (-1)??0x100x00000000??0x140xffffffff (-1)??0x180xffffffff (-1)??0x1c0x0000??0x1e0xffff (-1)??0x200xffffffff (-1)??0x240xffff (-1)??0x260x0000??0x280x1450??0x2a0xffff (-1)??0x2c0x0001??0x2e0xffff (-1)??0x300xffff (-1)??0x320x0000??0x340xffff (-1)??0x360x0000??0x380x00000000??0x3c0x00padding
Response: 0x5c bytes 00000000 1c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 1c 00 00 00 44 e9 17 01 ....%.."....D... 00000010 00 00 00 00 13 00 00 00 00 00 00 00 ............
Unknown command: 1B This command might just set up for command code 0x1c, which has no parameters but seems to give various responses. Two parameters: count of following bytes (4), subcode {0x0b,0x0e,0x17,0x18,0x19,0x1a}. Commands seem to come in that order, and each is immediately followed by a command with subcode 0x1c. 00000000 1d 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 12 1d 00 00 00 4c e7 12 00 ....%.......L... 00000050 1b 00 00 00 04 00 00 00 0b 00 00 00 00 ............. Response: 0x5e bytes 4-byte status code, echo of major code (0x1b), count of remaining bytes (2), 16 bit byte count for the result of the subsequent 0x1c command. This varies with the command subcode: Return values for command 0x1b 0x0b 0x000b 0x0e 0x0011 0x17 0x0014 0x18 0x0026, 0x000a 0x19 0x0052, 0x0009 0x1a 0x0009, 0x0011
Unknown command: 1C Command: 0x59 bytes 00000000 19 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 12 19 00 00 00 4c e7 12 00 ....%.......L... 00000050 1c 00 00 00 00 00 00 00 00 ......... Response after 0x25/0x1b/0x0b: 0x67 bytes 00000000 27 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 '............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 27 00 00 00 4c e7 12 00 ....%.."'...L... 00000010 00 00 00 00 1c 00 00 00 0b 00 00 00 03 00 00 00 ................ 00000020 02 00 00 00 03 04 05 ....... At offset 0x50, there is the customary 4-byte status code, followed by an echo of the 4-byte command code 0x0000001c, followed by a byte count which is identical to the value returned by the previous command with subcode 0x1b. After the byte count comes a count N of entities, then what I think is an entity type. 2 seems to be a single-byte entity; 4 is a 2-byte entity. Then come N data elements. At least sub-subcodes 0x18, 0x19, 0x1a can vary their length. Response after 0x25/0x1b/0x0e: 0x6d bytes 00000000 2d 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 -............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 2d 00 00 00 4c e7 12 00 ....%.."-...L... 00000010 00 00 00 00 1c 00 00 00 11 00 00 00 09 00 00 00 ................ 00000020 02 00 00 00 00 01 02 03 04 05 06 08 09 ............. Response after 0x25/0x1b/0x17: 0x70 bytes 00000000 30 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 0............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 30 00 00 00 4c e7 12 00 ....%.."0...L... 00000010 00 00 00 00 1c 00 00 00 14 00 00 00 06 00 00 00 ................ 00000020 04 00 00 00 48 00 50 00 58 00 60 00 68 00 70 00 ....H.P.X.`.h.p. Response after 0x25/0x1b/0x18: 0x66 bytes 00000000 26 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 &............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 26 00 00 00 4c e7 12 00 ....%.."&...L... 00000010 00 00 00 00 1c 00 00 00 0a 00 00 00 00 00 00 00 ................ 00000020 04 00 00 00 ff ff ...... Response after 0x25/0x1b/0x18: 0x82 bytes 00000000 42 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 B............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 25 00 10 22 42 00 00 00 4c e7 12 00 ....%.."B...L... 00000050 00 00 00 00 1c 00 00 00 26 00 00 00 0f 00 00 00 ........&....... 00000060 04 00 00 00 18 00 1c 00 20 00 24 00 28 00 2c 00 ........ .$.(.,. 00000070 30 00 34 00 38 00 3c 00 40 00 44 00 48 00 4c 00 0.4.8.<.@.D.H.L. 00000000 50 00 P. This has status code, 4-byte count of following bytes, 4-byte 0xf (15), 4-byte 0x4, then 15 2-byte integers that start at 0x18 (24) and count up by 4. Response after 0x25/0x1b/0x19: 0x65 bytes 00000000 25 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 %............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 25 00 00 00 4c e7 12 00 ....%.."%...L... 00000010 00 00 00 00 1c 00 00 00 09 00 00 00 00 00 00 00 ................ 00000020 02 00 00 00 ff ..... Response after 0x25/0x1b/0x1a: 0x6d bytes 00000000 2d 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 -............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 25 00 10 22 2d 00 00 00 4c e7 12 00 ....%.."-...L... 00000010 00 00 00 00 1c 00 00 00 11 00 00 00 09 00 00 00 ................ 00000020 02 00 00 00 f0 f4 f8 fc 00 04 08 0c 10 ............. After the byte count, a 4-byte 0x9, 4-byte 0x2, then single bytes counting up by 4: -16, -12, -8, -4, 0, 4, 8, 12, 16.
Get captured image requesttype=0x26 Similar to the Download Captured Image command in the older protocol. Command: 0x60 bytes 00000000 20 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00 ............... 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 26 00 20 12 20 00 00 00 d0 53 7e 00 ....&. . ....S~. 00000050 00 00 00 00 00 00 01 00 02 00 00 00 07 00 00 00 ................ This is very similar to the old “Download Captured Image” command block. Offset 0x50 presumably has the 4-byte status code, 0x54 has the transfer length (here 0x10000, 65536 bytes), 0x58 has the image type (here 2 for full image), and 0x5c has the image handle of 7. Camera response: variable length 00000000 00 00 00 00 02 03 f8 0e 03 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ As before, bytes 6-10 of the reply packet contain the 32-bit total length of the image data transfers, here 0x00030ef8. We must then issue a series of bulk reads. then many blocks. First is length 0x10000, then 0x10c0, then (0x40, 0xfec0) twice, then 0x38 bytes. Total is 0x00030ef8 (200,440) bytes. I think this is a JPEG image being downloaded; note the JFIF EXIF tag at the start. 00000000 ff d8 ff e1 2d 9a 45 78 69 66 00 00 49 49 2a 00 ....-.Exif..II*. 00000010 08 00 00 00 09 00 0f 01 02 00 06 00 00 00 7a 00 ..............z. 00000020 00 00 10 01 02 00 0e 00 00 00 80 00 00 00 12 01 ................ 00000030 03 00 01 00 00 00 01 00 00 00 1a 01 05 00 01 00 ................ 00000040 00 00 a0 00 00 00 1b 01 05 00 01 00 00 00 a8 00 ................ 00000050 00 00 28 01 03 00 01 00 00 00 02 00 00 00 32 01 ..(...........2. 00000060 02 00 14 00 00 00 b0 00 00 00 13 02 03 00 01 00 ................ 00000070 00 00 02 00 00 00 69 87 04 00 01 00 00 00 c4 00 ......i......... 00000080 00 00 50 24 00 00 43 61 6e 6f 6e 00 43 61 6e 6f ..P$..Canon.Cano 00000090 6e 20 45 4f 53 20 32 30 44 00 00 00 00 00 00 00 n EOS 20D....... 000000a0 00 00 00 00 00 00 00 00 00 00 00 00 48 00 00 00 ............H... 000000b0 01 00 00 00 48 00 00 00 01 00 00 00 32 30 30 34 ....H.......2004 000000c0 3a 31 31 3a 32 32 20 31 32 3a 35 35 3a 31 36 00 :11:22 12:55:16. 000000d0 1c 00 9a 82 05 00 01 00 00 00 1a 02 00 00 9d 82 ................ 000000e0 05 00 01 00 00 00 22 02 00 00 22 88 03 00 01 00 ......"..."..... 000000f0 00 00 01 00 00 10 27 88 03 00 01 00 00 00 64 00 ......'.......d. 00000100 00 00 00 90 07 00 04 00 00 00 30 32 32 31 03 90 ..........0221.. 00000110 02 00 14 00 00 00 2a 02 00 00 04 90 02 00 14 00 ......*......... 00000120 00 00 3e 02 00 00 01 91 07 00 04 00 00 00 01 02 ..>............. ... 00000000 b8 cd 23 64 b6 07 03 d4 50 f5 0d 80 a6 18 12 4f ..#d....P......O 00000010 1e b4 31 2c 71 b7 34 b7 04 ae 01 f0 40 23 93 da ..1,q.4.....@#.. 00000020 80 7e 6c 37 5f 6a 00 45 4c 64 0f cc d2 ee da c0 .~l7_j.ELd...... 00000030 63 83 de 9d c5 73 ff d9 c....s..
Lock Keys requesttype=0x35 Equivalent to Lock Keys But this command is shorter (no parameter “6”), and the response is longer (12 zero bytes, not just 4). Command: 0x50 bytes 00000000 10 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 35 00 10 12 10 00 00 00 a8 eb 12 00 ....5........... Camera response: 0x5c bytes 00000000 1c 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 35 00 10 22 1c 00 00 00 a8 eb 12 00 ....5.."........ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 ............
Unknown command requesttype=0x36 Thought this was equivalent to EOS Unlock Keys, but doesn't work in symmetry with 0x35. Command is longer; response is the same. Command: 0x58 bytes 00000000 18 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000040 02 00 00 00 36 00 10 12 18 00 00 00 98 ed 17 01 ....6........... 00000050 00 00 00 00 00 00 00 00 ........ Response: 0x54 bytes 00000000 14 00 00 00 01 03 00 00 00 00 00 00 00 00 00 00 ................ 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000000 02 00 00 00 36 00 10 22 14 00 00 00 98 ed 17 01 ....6.."........ 00000010 00 00 00 00 .... When issued at the wrong time, the command returns a status code of 0x00000086: 0000 14 00 00 00 01 03 00 00-00 00 00 00 00 00 00 00 ................ 0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0040 02 00 00 00 36 00 10 22-14 00 00 00 43 00 00 00 ....6.."....C... 0050 86 00 00 00 - ....
libgphoto2-2.5.9/camlibs/canon/doc/canon-api.sgml0000644000175000001440000000540512557123324016533 00000000000000 ]> The Canon driver reference 2003 The Free Software Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy of the GNU Free Documentation License from the Free Software Foundation by visiting their Web site or by writing to:
The Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
This manual documents the internals of the Canon camera library for gphoto2.
Standard gphoto2 camera interface &library-interface; Internal Glue Functions &internal-functions; Utility Macros ¯os; Serial Communication &serial-communication; USB communication &usb-control; Handling Camera Directories &listing-directories; &directory-entries; Power Status &power-status; Structures &structures;
libgphoto2-2.5.9/camlibs/canon/Makefile-files0000644000175000001440000000167212561423351015775 00000000000000EXTRA_LTLIBRARIES += canon.la camlibdoc_DATA += canon/README.canon EXTRA_DIST += canon/.indent.pro canon/ChangeLog canon/urb-interpret canon/README.canon canon/TODO # "ideal" version: # + only export the 3 symbols # + -no-undefined, (i.e. Win32 support) # - needs lengthy definition in every camlib's Makefile.am # + nice short name # + makes renaming the exported symbols to canon_LTX_ realistic # without ## macros # + makes it possible to have the same name the module filename and # the camlib name returned by camera_id() canon_la_SOURCES = \ canon/canon.c canon/canon.h \ canon/library.c canon/library.h \ canon/serial.c canon/serial.h \ canon/usb.c canon/usb.h \ canon/crc.c canon/crc.h \ canon/util.c canon/util.h canon_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) $(LIBEXIF_CFLAGS) canon_la_LDFLAGS = $(camlib_ldflags) canon_la_DEPENDENCIES = $(camlib_dependencies) canon_la_LIBADD = $(camlib_libadd) $(LIBEXIF_LIBS) libgphoto2-2.5.9/camlibs/canon/usb.h0000644000175000001440000003147212610415510014171 00000000000000/**************************************************************************** * * File: usb.h * ****************************************************************************/ #ifndef _CANON_USB_H #define _CANON_USB_H /** * USB_BULK_READ_SIZE * * Maximum size to be used for a USB "bulk read" operation * */ #define USB_BULK_READ_SIZE 0x1400 /** * USB_BULK_WRITE_SIZE * * Maximum size to be used for a USB "bulk write" operation * */ /* #define USB_BULK_WRITE_SIZE 0xC000 */ #define USB_BULK_WRITE_SIZE 0x1400 /** * canonCommandIndex: * @CANON_USB_FUNCTION_GET_FILE: Command to download a file from the camera. * @CANON_USB_FUNCTION_IDENTIFY_CAMERA: Command to read the firmware version and * strings with the camera type and owner from the camera. * @CANON_USB_FUNCTION_GET_TIME: Command to get the time in Unix time format from the camera. * @CANON_USB_FUNCTION_SET_TIME: Command to set the camera's internal time. * @CANON_USB_FUNCTION_MKDIR: Command to create a directory on the camera storage device. * @CANON_USB_FUNCTION_CAMERA_CHOWN: Change "owner" string on camera * @CANON_USB_FUNCTION_RMDIR: Command to delete a directory from camera storage. * @CANON_USB_FUNCTION_DISK_INFO: Command to get disk information from * the camera, given a disk designator (e.g. "D:"). Returns total * capacity and free space. * @CANON_USB_FUNCTION_FLASH_DEVICE_IDENT: Command to request the disk specifier * (drive letter) for the storage device being used. * @CANON_USB_FUNCTION_POWER_STATUS: Command to query the camera for its power status: * battery vs. mains, and whether the battery is low. * @CANON_USB_FUNCTION_GET_DIRENT: Get directory entries * @CANON_USB_FUNCTION_DELETE_FILE: Delete file * @CANON_USB_FUNCTION_DISK_INFO_2: get disk info for newer protocol * (capacity and free space) * @CANON_USB_FUNCTION_SET_ATTR: Command to set the attributes of a * file on the camera (e.g. downloaded, protect from delete). * @CANON_USB_FUNCTION_GET_PIC_ABILITIES: Command to "get picture * abilities", which seems to be a list of the different sizes and * quality of images that are available on this camera. Not * implemented (and will cause an error) on the EOS cameras or on * newer PowerShot cameras such as S45, G3, G5. * @CANON_USB_FUNCTION_GENERIC_LOCK_KEYS: Command to lock keys (and * turn on "PC" indicator) on non-EOS cameras. * @CANON_USB_FUNCTION_EOS_LOCK_KEYS: Lock keys (EOS cameras) * @CANON_USB_FUNCTION_EOS_UNLOCK_KEYS: Unlock keys (EOS cameras) * @CANON_USB_FUNCTION_RETRIEVE_CAPTURE: Command to retrieve the last * image captured, depending on the transfer mode set via * %CANON_USB_FUNCTION_CONTROL_CAMERA with subcommand * %CANON_USB_CONTROL_SET_TRANSFER_MODE. * @CANON_USB_FUNCTION_RETRIEVE_PREVIEW: Command to retrieve a preview * image. * @CANON_USB_FUNCTION_CONTROL_CAMERA: Remote camera control (with * many subcodes) * @CANON_USB_FUNCTION_FLASH_DEVICE_IDENT_2: Command to request the * disk specifier (drive letter) for the storage device being * used. Used with the "newer" protocol, e.g. with EOS 20D. * @CANON_USB_FUNCTION_POWER_STATUS_2: Command to query the camera for * its power status: battery vs. mains, and whether the battery is * low. Used in the "newer" protocol, e.g. with EOS 20D. * @CANON_USB_FUNCTION_UNKNOWN_FUNCTION: Don't know what this is for; * it has been sighted in USB trace logs for an EOS D30, but not for * a D60 or for any PowerShot camera. * @CANON_USB_FUNCTION_EOS_GET_BODY_ID: Command to read the body ID (serial number) * from an EOS camera. * @CANON_USB_FUNCTION_SET_FILE_TIME: Set file time * @CANON_USB_FUNCTION_20D_UNKNOWN_1: First seen with EOS 20D, not yet understood. * @CANON_USB_FUNCTION_20D_UNKNOWN_2: First seen with EOS 20D, not yet understood. * @CANON_USB_FUNCTION_EOS_GET_BODY_ID_2: Same function as * %CANON_USB_FUNCTION_EOS_GET_BODY_ID, but first seen on EOS 20D. * @CANON_USB_FUNCTION_GET_PIC_ABILITIES_2: Same function as * %CANON_USB_FUNCTION_GET_PIC_ABILITIES, but first seen on EOS 20D. * @CANON_USB_FUNCTION_CONTROL_CAMERA_2: Replacement for * %CANON_USB_FUNCTION_CONTROL_CAMERA, with many similarities, first * seen with EOS 20D. * @CANON_USB_FUNCTION_RETRIEVE_CAPTURE_2: Same function as * %CANON_USB_FUNCTION_RETRIEVE_CAPTURE, but first seen on EOS 20D. * @CANON_USB_FUNCTION_LOCK_KEYS_2: Same as %CANON_USB_FUNCTION_EOS_LOCK_KEYS, * but for newer protocol. * @CANON_USB_FUNCTION_UNLOCK_KEYS_2: Same as %CANON_USB_FUNCTION_EOS_UNLOCK_KEYS, * but for newer protocol. * @CANON_USB_FUNCTION_SET_ATTR_2: Presumed code to set attribute bits * for a file on an EOS 20D and its ilk. * @CANON_USB_FUNCTION_CAMERA_CHOWN_2: Same as %CANON_USB_FUNCTION_CAMERA_CHOWN, * but for newer protocol. * @CANON_USB_FUNCTION_GET_OWNER: Gets just the owner name, in newer protocol. * * Codes to give to canon_usb_dialogue() or canon_usb_long_dialogue() * to select which command to issue to the camera. See the protocol * document for details. */ typedef enum { CANON_USB_FUNCTION_GET_FILE = 1, CANON_USB_FUNCTION_IDENTIFY_CAMERA, CANON_USB_FUNCTION_GET_TIME, CANON_USB_FUNCTION_SET_TIME, CANON_USB_FUNCTION_MKDIR, CANON_USB_FUNCTION_CAMERA_CHOWN, CANON_USB_FUNCTION_RMDIR, CANON_USB_FUNCTION_DISK_INFO, CANON_USB_FUNCTION_FLASH_DEVICE_IDENT, CANON_USB_FUNCTION_POWER_STATUS, CANON_USB_FUNCTION_GET_DIRENT, CANON_USB_FUNCTION_DELETE_FILE, CANON_USB_FUNCTION_SET_ATTR, CANON_USB_FUNCTION_GET_PIC_ABILITIES, CANON_USB_FUNCTION_GENERIC_LOCK_KEYS, CANON_USB_FUNCTION_EOS_LOCK_KEYS, CANON_USB_FUNCTION_EOS_UNLOCK_KEYS, CANON_USB_FUNCTION_RETRIEVE_CAPTURE, CANON_USB_FUNCTION_RETRIEVE_PREVIEW, CANON_USB_FUNCTION_CONTROL_CAMERA, CANON_USB_FUNCTION_DISK_INFO_2, CANON_USB_FUNCTION_FLASH_DEVICE_IDENT_2, CANON_USB_FUNCTION_POWER_STATUS_2, CANON_USB_FUNCTION_UNKNOWN_FUNCTION, CANON_USB_FUNCTION_EOS_GET_BODY_ID, CANON_USB_FUNCTION_SET_FILE_TIME, CANON_USB_FUNCTION_20D_UNKNOWN_1, CANON_USB_FUNCTION_20D_UNKNOWN_2, CANON_USB_FUNCTION_EOS_GET_BODY_ID_2, CANON_USB_FUNCTION_GET_PIC_ABILITIES_2, CANON_USB_FUNCTION_CONTROL_CAMERA_2, CANON_USB_FUNCTION_RETRIEVE_CAPTURE_2, CANON_USB_FUNCTION_LOCK_KEYS_2, CANON_USB_FUNCTION_UNLOCK_KEYS_2, CANON_USB_FUNCTION_DELETE_FILE_2, CANON_USB_FUNCTION_SET_ATTR_2, CANON_USB_FUNCTION_CAMERA_CHOWN_2, CANON_USB_FUNCTION_GET_OWNER, } canonCommandIndex; /** * canonSubcommandIndex: * @CANON_USB_CONTROL_INIT: Enter camera control mode * @CANON_USB_CONTROL_SHUTTER_RELEASE: Release camera shutter (capture still) * @CANON_USB_CONTROL_SET_PARAMS: Set release parameters (AE mode, beep, etc.) * @CANON_USB_CONTROL_SET_TRANSFER_MODE: Set transfer mode for next image * capture. Either the full image, a thumbnail or both may be either * stored on the camera, downloaded to the host, or both. * @CANON_USB_CONTROL_GET_PARAMS: Read the same parameters set by * @CANON_USB_CONTROL_SET_PARAMS. * @CANON_USB_CONTROL_GET_ZOOM_POS: Get the position of the zoom lens * @CANON_USB_CONTROL_SET_ZOOM_POS: Set the position of the zoom lens * @CANON_USB_CONTROL_GET_EXT_PARAMS_SIZE: Get the size of the "extended * release parameters". * @CANON_USB_CONTROL_GET_EXT_PARAMS: Get the "extended release parameters". * @CANON_USB_CONTROL_EXIT: Leave camera control mode; opposite of * @CANON_USB_CONTROL_INIT. * @CANON_USB_CONTROL_VIEWFINDER_START: Switch video viewfinder on. * @CANON_USB_CONTROL_VIEWFINDER_STOP: Swictch video viewfinder off. * @CANON_USB_CONTROL_GET_AVAILABLE_SHOT: Get estimated number of images * that can be captured in current mode before filling flash card. * @CANON_USB_CONTROL_SET_CUSTOM_FUNC: Not yet seen in USB trace. * @CANON_USB_CONTROL_GET_CUSTOM_FUNC: Read custom functions from an EOS camera * @CANON_USB_CONTROL_GET_EXT_PARAMS_VER: Not yet seen in USB trace. * @CANON_USB_CONTROL_SET_EXT_PARAMS: Not yet seen in USB trace. * @CANON_USB_CONTROL_SELECT_CAM_OUTPUT: Not yet seen in USB trace. * @CANON_USB_CONTROL_DO_AE_AF_AWB: Not yet seen in USB trace. * @CANON_USB_CONTROL_UNKNOWN_1: part of new protocol, function unknown. * @CANON_USB_CONTROL_UNKNOWN_2: part of new protocol, function unknown. * * CANON_USB_FUNCTION_CONTROL_CAMERA commands are used for a wide range * of remote camera control actions. A control_cmdstruct is defined * below for the following remote camera control options. */ typedef enum { CANON_USB_CONTROL_INIT = 1, CANON_USB_CONTROL_SHUTTER_RELEASE, CANON_USB_CONTROL_SET_PARAMS, CANON_USB_CONTROL_SET_TRANSFER_MODE, CANON_USB_CONTROL_GET_PARAMS, CANON_USB_CONTROL_GET_ZOOM_POS, CANON_USB_CONTROL_SET_ZOOM_POS, CANON_USB_CONTROL_GET_EXT_PARAMS_SIZE, CANON_USB_CONTROL_GET_EXT_PARAMS, CANON_USB_CONTROL_EXIT, CANON_USB_CONTROL_VIEWFINDER_START, CANON_USB_CONTROL_VIEWFINDER_STOP, CANON_USB_CONTROL_GET_AVAILABLE_SHOT, CANON_USB_CONTROL_SET_CUSTOM_FUNC, /* Not yet seen in USB trace */ CANON_USB_CONTROL_GET_CUSTOM_FUNC, CANON_USB_CONTROL_GET_EXT_PARAMS_VER, /* Not yet seen in USB trace */ CANON_USB_CONTROL_SET_EXT_PARAMS, /* Not yet seen in USB trace */ CANON_USB_CONTROL_SELECT_CAM_OUTPUT, /* Not yet seen in USB trace */ CANON_USB_CONTROL_DO_AE_AF_AWB, /* Not yet seen in USB trace */ CANON_USB_CONTROL_UNKNOWN_1, CANON_USB_CONTROL_UNKNOWN_2 } canonSubcommandIndex; struct canon_usb_control_cmdstruct { canonSubcommandIndex num; char *description; char subcmd; int cmd_length; int additional_return_length; }; /** * MAX_INTERRUPT_TRIES * * Maximum number of times to try a read from the interrupt pipe. We * will keep reading until an error, a read of non-zero length, or for * a maximum of this many times. */ #define MAX_INTERRUPT_TRIES 12000 struct canon_usb_cmdstruct { canonCommandIndex num; char *description; char cmd1, cmd2; int cmd3; int return_length; }; /* USB command data structures defined in usb.c */ /*extern const struct canon_usb_cmdstruct canon_usb_cmd[];*/ extern const struct canon_usb_control_cmdstruct canon_usb_control_cmd[]; /* For mapping status codes to intelligible messages */ struct canon_usb_status { int code; char *message; }; /**************************************************************************** * * prototypes * ****************************************************************************/ int canon_usb_init (Camera *camera, GPContext *context); int canon_usb_set_file_time ( Camera *camera, char *camera_filename, time_t time, GPContext *context); int canon_usb_put_file (Camera *camera, CameraFile *file, const char *filename, const char *destname, const char *destpath, GPContext *context); unsigned char *canon_usb_capture_dialogue (Camera *camera, unsigned int *return_length, int *photo_status, GPContext *context ); unsigned char *canon_usb_dialogue_full (Camera *camera, canonCommandIndex canon_funct, unsigned int *return_length, const unsigned char *payload, unsigned int payload_length); unsigned char *canon_usb_dialogue (Camera *camera, canonCommandIndex canon_funct, unsigned int *return_length, const unsigned char *payload, unsigned int payload_length); int canon_usb_long_dialogue (Camera *camera, canonCommandIndex canon_funct, unsigned char **data, unsigned int *data_length, unsigned int max_data_size, const unsigned char *payload, unsigned int payload_length, int display_status, GPContext *context); int canon_usb_get_file (Camera *camera, const char *name, unsigned char **data, unsigned int *length, GPContext *context); int canon_usb_get_thumbnail (Camera *camera, const char *name, unsigned char **data, unsigned int *length, GPContext *context); int canon_usb_get_captured_image (Camera *camera, const int key, unsigned char **data, unsigned int *length, GPContext *context); int canon_usb_get_captured_secondary_image (Camera *camera, const int key, unsigned char **data, unsigned int *length, GPContext *context); int canon_usb_get_captured_thumbnail (Camera *camera, const int key, unsigned char **data, unsigned int *length, GPContext *context); int canon_usb_lock_keys(Camera *camera, GPContext *context); int canon_usb_unlock_keys(Camera *camera, GPContext *context); int canon_usb_get_dirents (Camera *camera, unsigned char **dirent_data, unsigned int *dirents_length, const char *path, GPContext *context); int canon_usb_list_all_dirs (Camera *camera, unsigned char **dirent_data, unsigned int *dirents_length, GPContext *context); int canon_usb_set_file_attributes (Camera *camera, unsigned int attr_bits, const char *dir, const char *file, GPContext *context); int canon_usb_ready (Camera *camera, GPContext *context); int canon_usb_wait_for_event (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context); #endif /* _CANON_USB_H */ /**************************************************************************** * * End of file: usb.h * ****************************************************************************/ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/canon/TODO0000644000175000001440000000665012557123324013730 00000000000000======================================================================== List of work that still has to be done on this driver: ======================================================================== - switch the camera on again when application exits - make file upload work with different file types and names - handle thumbnails and sound annotations in a more generic way to reuse the code - extend file attributes from 1 octet to 2 octets - introduce and use capabilities everywhere (how?) - the canon_int* functions often shouldn't use gphoto2 structures the canon_usb* and canon_serial* should even less - handle rotated images correctly (how?) - A5 support is completely broken, with the new filename based API, the directory caching mecanism must be completely revisited. On the other hand, when removing the internal caching layer, we perhaps facilitated the solution to this problem. ======================================================================== List of work that has already been done: ======================================================================== - make misc. models work on A/C adapter (e.g. G1, Pro 90 IS) [done -swestin] - make image capturing work [done -swestin] - make sure thumbnail download work on serial cameras [done according to Philippe -hun] - getting other info on file (resolution and stuff) using the new libexif [done -fredrik] - rework configuration dialog (also wrt i18n) [done -hun] - switch the camera keys and buttons off while connected [done -fredrik] - made file upload work [done -hun (Patch from Matthias Kramm)] - make sure serial cameras work with new CameraFS based code [basically works, according to Philippe -hun] - deleting files [done -hun] - setting attributes in general [done -hun] - set "downloaded" attribute after successful download [done -hun} - make CameraFilesystem distinguish between files and folders [done -hun] - FOLDERS : folders are not supported on the A50 (users have no control on the directory where images are stored on the compact flash) so for the moment the internal directory structure is hidden to gphoto2. [done -hun] - make downloading raw images work [done -hun] ======================================================================== Old stuff that is already done was moved down a bit by hun: ======================================================================== 08/08/2000 - Notes by Philippe Marzouk - The driver must be changed to be able to talk to various cameras via the Camera *camera struct with each function call (08/15/2000 - done). - USB support is broken as libgpio got changed a bit. I can't test it as I don't have USB :-( (08/20/2000 - done). - Uploading : I'm working on it but there are problems. I will soon include the preliminary support I got for people with S10 and S20 to test as it seems easier to get them working (s10sh does it). (08/22/2000 - done for serial but slow) - The configuration dialog has to be made with the new toolkit independent functions provided by gphoto2. It should use gp_config_get and gp_config_set to retrieve and store its configuration information. I think it should include : date, owner, battery status, firmware revision and Compact flash space used/available. I don't know if anything else is needed (08/15/2000 - mostly done). - Starting a Changelog file (done). libgphoto2-2.5.9/camlibs/canon/util.c0000644000175000001440000001302412561423351014350 00000000000000/**************************************************************************** * * File: util.c * * Utility functions for the gphoto2 camlibs/canon driver. * ****************************************************************************/ /**************************************************************************** * * include files * ****************************************************************************/ #include "config.h" #include #include #include #include #include #include #include "canon.h" #include "util.h" #include "library.h" /** * is_thumbnail: * @name: name of file to examine * * Test whether the given @name corresponds to a thumbnail (.THM). * * Returns: * 1 if filename is the name of a thumbnail (i.e. ends with ".THM" ) * 0 if not * */ int is_thumbnail (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = (!strcmp (pos, ".THM")); GP_DEBUG ("is_thumbnail(%s) == %i", name, res); return (res); } /** * is_audio: * @name: name of file to examine * * Test whether the given @name corresponds to an audio file (.WAV). * * Returns: * 1 if filename is the name of an audio file (i.e. ends with ".WAV" ) * 0 if not * */ int is_audio (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = (!strcmp (pos, ".WAV")); GP_DEBUG ("is_audio(%s) == %i", name, res); return (res); } /** * is_image: * @name: name of file to examine * * Tests whether the given @name corresponds to an image (.JPG, .CR2, or .CRW). * * Returns: * 1 if filename is the name of an image * 0 if not * */ int is_image (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) { res |= !strcmp (pos, ".JPG"); res |= !strcmp (pos, ".CRW"); res |= !strcmp (pos, ".CR2"); } GP_DEBUG ("is_image(%s) == %i", name, res); return (res); } /** * is_jpeg: * @name: name of file to examine * * Test whether the given @name corresponds to a JPEG image (.JPG). * Returns: * 1 if filename is the name of a JPEG image (i.e. ends with ".JPG" ) * 0 if not * */ int is_jpeg (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = (!strcmp (pos, ".JPG")); GP_DEBUG ("is_jpeg(%s) == %i", name, res); return (res); } /** * is_crw: * @name: name of file to examine * * Tests whether the name given corresponds to a raw CRW image (.CRW). * * Returns: * 1 if filename is the name of a traditional Canon raw image (i.e. ends with .CRW) * 0 if not * */ int is_crw (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = !strcmp (pos, ".CRW"); GP_DEBUG ("is_crw(%s) == %i", name, res); return (res); } /** * is_cr2: * @name: name of file to examine * * Tests whether the name given corresponds to a raw CR2 image (.CR2). * * Returns: * 1 if filename is the name of a CR2 raw image (i.e. ends with .CR2) * 0 if not * */ int is_cr2 (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = !strcmp (pos, ".CR2"); GP_DEBUG ("is_cr2(%s) == %i", name, res); return (res); } /** * is_movie: * @name: name of file to examine * * Test whether the name given corresponds * to a movie (.AVI) * * Returns: * 1 if filename is the name of a movie (i.e. ends with ".AVI" ) * 0 if not * */ int is_movie (const char *name) { const char *pos; int res = 0; pos = strchr (name, '.'); if (pos) res = (!strcmp (pos, ".AVI")); GP_DEBUG ("is_movie(%s) == %i", name, res); return (res); } /** * filename2mimetype: * @filename: name of file to examine * * Deduces MIME type of file by considering the file name ending. * * Returns: pointer to immutable string with the MIME type */ const char * filename2mimetype (const char *filename) { const char *pos = strchr (filename, '.'); if (pos) { if (!strcmp (pos, ".AVI")) return GP_MIME_AVI; else if (!strcmp (pos, ".JPG")) return GP_MIME_JPEG; else if (!strcmp (pos, ".WAV")) return GP_MIME_WAV; else if (!strcmp (pos, ".THM")) return GP_MIME_JPEG; else if (!strcmp (pos, ".CRW")) return GP_MIME_CRW; else if (!strcmp (pos, ".CR2")) return GP_MIME_CRW; } return GP_MIME_UNKNOWN; } void dump_hex ( FILE *fp, void *buffer, int length ) { unsigned char *data = (unsigned char *)buffer; int i, j, full_lines, remainder; char output_line[17]; /* Dump a buffer in hexadecimal */ full_lines = length / 16; remainder = length % 16; output_line[16] = 0; for ( i=0; i= 32 && data[i+j] < 127 ) output_line[j] = data[i+j]; else output_line[j] = '.'; } fprintf ( fp, " %s\n", output_line ); } if ( remainder > 0 ) { fprintf ( fp, "%04x: ", i ); for ( j=0; j= 32 && data[i+j] < 127 ) output_line[j] = data[i+j]; else output_line[j] = '.'; } output_line[j] = 0; for (; j<16; j++ ) fprintf ( fp, " " ); /* Pad line to same length */ fprintf ( fp, " %s\n", output_line ); } fprintf ( fp, "\n" ); } /**************************************************************************** * * End of file: util.c * ****************************************************************************/ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/canon/ChangeLog0000644000175000001440000011573312610415510015004 000000000000002010-05-05 Sven Killig * canon.c, canon.h, library.c: - added shooting mode - added ISO 50 - converted zoom level to GP_WIDGET_RANGE 2009-07-28 Axel Waggershauser * canon.c,canon.h,library.c,usb.c: Unified all configuration names and values. Added /actions and /status sub configuration for actions and read-only variables. * canon.c,library.c: Fixed integer overflow in storage size detection. 2008-07-10 Marcus Meissner * canon.c: Also handle IXUS 500 in the ptp2 driver only. * canon.c: Review all shared ids and handle them in the PTP driver. 2008-05-16 Moreno Marzolla * canon.c, library.c: Added beep and zoom configurations. * canon.c, library.c: Enable remote mode once in a session and close it in camera_exit. 2008-05-12 Moreno Marzolla * canon.c, canon.h, README.canon: Added some more configuration options. 2008-03-30 Marcus Meissner * canon.c: SL_THUMB_CR2 should be as large as the CR2 image, because the thumbnail getter retrieves the whole image for some reason. * canon.c: Moved strncpy() out of the failure node, making replace_filename_extension() and filename_to_audio() work again. 2007-12-27 Daniel M German * canon.h, library.c: More configuration values for some newer cameras / objectives. 2007-11-06 Marcus Meissner * usb.c: Bumped timeout to 175. 2007-09-02 Marcus Meissner * canon.c: Handle IXUS 30 also in ptp driver. 2007-06-03 Paul Walmsley * usb.c: remove one last CANON_EXPERIMENTAL_SECONDARY_IMAGE ifdef 2007-06-02 Paul Walmsley * usb.c: replace gp_port_usb_check_int_fast() calls with timeout save/change/restore and gp_port_usb_check_int() 2007-05-29 Marcus Meissner * library.c, canon.c, canon.h,Makefile-files: Removed CANON_EXPERIMENTAL_20D define, now default included. Removed CANON_EXPERIMENTAL_SECONDARY_IMAGE and CANON_EXPERIMENTAL_SET_RELEASE_PARAMS ifdefs, now also default included. 2007-05-25 Paul Walmsley * usb.c: fix canon_usb_get_body_id() and caller to handle body IDs > INT32_MAX (as seen in some recent Canon EOS 5D bodies) * canon.h: add body_id field to the CameraPrivateLibrary structure 2007-05-21 Marcus Meissner * canon.c: Handle A70 and A80 in ptp2 driver, since this one has better capture handling. * Makefile-files: Enable -DCANON_EXPERIMENTAL_SET_RELEASE_PARAMS by default. 2007-03-13 Marcus Meissner * canon.c: Handle A95 and S50 in ptp2 driver. http://sourceforge.net/tracker/index.php?func=detail&aid=1629132&group_id=8874&atid=108874 2007-01-02 Marcus Meissner * library.c: Return storage information programmatically. 2006-11-13 Marcus Meissner * library.c: Readded to Optura 20 (alternate id), confirmed by reporter. 2006-06-24 David Selmeczi * library.c,canon.c: Added more 350D parameters. 2006-06-20 Marcus Meissner Karl Tomlinson * library.c: Keep list_all_files setting permanent. * library.c: Also delete thumbnails (but only if list_all_files is not set.) 2006-06-14 Marcus Meissner * library.c: Mark up strings for translation. Compare against translated string. Mark up configuration widgets with symbolic names to avoid spaces or translated strings in commandline modes. 2006-06-12 Paul Walmsley * canon.h: Fix build failure when CANON_EXPERIMENTAL_20D is not defined, by wrapping the release_params array in an '#ifdef CANON_EXPERIMENTAL_20D' 2006-06-11 Paul Walmsley * usb.c: Fix the debug messages in canon_usb_dialogue_full() to report the correct function name. 2006-06-11 Paul Walmsley * canon.[ch], usb.[ch], serial.[ch], library.c: Fix existing compile-time warnings. Most of the fixes fell into one of these categories: (A) Converting length fields from signed int/long to unsigned, unless the meaning of the field is overloaded to pass back a gphoto2 error code (which are negative); (B) Converting fields of binary data used in camera interaction from signed char to unsigned char; (C) Casting unsigned char buffers passed to the gphoto2 port code, etc. to signed char; (D) Reviewing comparisons between signed and unsigned numbers, and ensuring that the comparisons are safely restricted to unsigned numbers when necessary. * Makefile.am: add '-Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers' to CPPFLAGS. 2006-06-09 Paul Walmsley * usb.c: Modify identify camera code to retry quickly, and to double the retry delay with each failure. This seems to work well for at least the Canon EOS 5D, where the first identify often is ignored by the camera, but the second identify camera generates a response, no matter how quickly it is sent after the first. 2006-06-07 Hubert Figuiere * doc/5d-capture: new documentation on capture for changes below. 2006-06-07 Paul Walmsley * canon.c, usb.[ch], library.c: When the camera cannot capture an image due to a 'photographic failure,' return a gphoto2 error code resembling the actual failure code, rather than simply returning a generic error. Tested on the Canon EOS 5D. * canon.[ch], usb.[ch]: Adds support for downloading "secondary images" -- the JPEGs created when the capture resolution is set to the "RAW + JPEG" modes -- for the Canon EOS 5D camera. * canon.[ch], library.c: Adds remote control over "release parameters" -- shutter speed, ISO speed, aperture, resolution, autofocus mode -- for the Canon EOS 5D camera. It might work with other Canon "class 6" cameras * canon.[ch], library.c: Add support for querying the camera's shutter speed, ISO speed, aperture, resolution, and focus mode via gphoto2's configuration interface. Tested on the Canon EOS 5D. * canon.[ch]: Add canon_int_do_control_dialogue() and canon_int_do_control_dialogue_payload(). These functions execute a remote capture command on the camera and return the camera's response. canon_int_do_control_dialogue_payload() gives the caller full control over the payload. We need these to retrieve and set the camera's release parameters. * usb.[ch]: Split canon_usb_dialogue() into two functions: canon_usb_dialogue_full(), which returns the full camera response packet, needed by canon_usb_long_dialogue() (and also by canon_int_get_release_params(), later in this patch series). * canon.c: Add the USB ID for the EOS 5D in PC connection mode. * canon.[ch]: * library.c: gphoto2's Canon driver currently supports two capture modes: canon_int_capture_preview(), which captures a thumbnail to the host computer; and canon_int_capture_image(), which captures a full-sized image to the camera's drive. We'd like to control each parameter -- the capture image size class and the capture destination -- independently, without breaking compatibility with current applications. So, add a configuration option, "Capture size class," by which the user can specify whether to operate in "compatibility mode" (the default -- represents the driver's previous behavior), or whether to capture thumbnails, or full-sized images. capture_preview() then always captures to the host computer, and capture_image() always captures to the camera's drive, no matter what the image's size. Our primary interest is in remote capture of full-sized images to the host computer. We've observed that on the EOS 5D, with these patches applied, it's possible to capture full-sized images to the host computer or to the camera's drive. Capturing thumbnails alone is supported only in name by these patches -- further work will be required to make that function. 2006-06-06 Paul Walmsley * canon.[ch]: Replace the open-coded CANON_USB_CONTROL_INIT and CANON_USB_CONTROL_EXIT commands with functions, and set a flag in the host computer's camera state when the camera is in remote release control. * usb.c: canon_int_usb_poll_interrupt_pipe() can return a negative result to indicate an error. But canon_usb_capture_dialogue() only checks whether the result was equal to 0 to test for an error. 2005-11-02 Marcus Meissner * canon.c: S1 IS and S2 IS in current CVS are not working, comment out for now :( 2005-07-19 Stephen Westin * canon.c: Corrected "IXY Digital 60" to "IXY Digital 600" now that one has been sighted in the wild. Moved SD500/IXUS 700/IXY 600 from class 1 to class 5, since "get picture abilities" fails. 2005-06-21 Stephen Westin * canon.c: Added ID for PowerShot S2 IS. Revised format specifications in error/log messages: I think that all length-related quantities are now coerced to long, as some systems (e.g. MacOS X) have 64-bit length types and 64-bit pointers are coming. 2005-06-10 Stephen Westin * canon.c: The PowerShot SD400/SD500 (aka Digital IXUS 50/60 aka IXY Digital 55/60) don't support capture at all, according to Canon software manuals. Added support for a real "is this awake?" query (implemented in usb.c). 2005-06-10 Stephen Westin * canon.c: Moved PowerShot SD200/IXUS 30/IXY 40 from class 1 to class 6 for experimentation. This camera now needs CFLAGS=-DCANON_EXPERIMENTAL_20D to be included in the list. I kinda suspect that the SD400/IXUS 50/IXY 55 will need to go along with them. The A510 has been demonstrated working with the older protocol. 2005-05-05 Stephen Westin * canon.c: We now set and fetch the owner name correctly in new protocol. Error messages are improved. o more text in place of numeric error codes o "amount of data" -> "length" I think I now have gotten rid of "gp_context_message" (which stops for interactive input) when we are surprised at the length returned by a command. 2005-05-02 Stephen Westin * canon.c: Initial capability to get JPEG thumbnails from CR2 raw files (but not yet EXIF data). 2005-04-28 Stephen Westin Added several camcorders: Elura 50, Optura 10/MVX100i, Optura Xi/MVX 3i/FV M1, Optura Xi/MVX 3i/FV M1, Optura 40/MVX25i based on Web reports and some intelligent (I hope) guesses. Fixed Optura 20/MVX150i ID: 307f is for PTP, but 3080 is for us. Based on reports from psapsa at users.sourceforge.net. We now attempt to exit from remote control mode on any capture error. Fixed one long vs. int warning. Added message for failure of file delete. Learned more about vendor ID's of several cameras. Moved PowerShot SD200/IXUS 30/Digital IXY 40 from class 4 to class 1 for testing. 2005-04-14 Stephen Westin Included new class 6 cameras in all the EOS conditionals (I think). Flag MVX100i as having no capture capability, which seems to be the case. (I suspect other camcorders are in the same boat, but can't test the hypothesis). 2005-04-08 Stephen Westin Backed out 300D changes; we now treat it as a class 4 camera, except for interrupt messages during capture, which are like a class 6. 300D is now in class 6 along with 20D and 350D. Modified canon_int_list_directory so it no longer returns ".." as a directory. Modified canon_int_list_directory and canon_int_find_new_image to handle directory ".." better and avoid memory access violations. Fixed log messages in canon_int_list_directory to give complete function name. Made CR2 a different class of images, since it has no external thumbnail file. use %ld and (long) casts for time_t values in *printf Moved PowerShot SD200 / Digital IXUS 30 / IXY Digital 40 from class 5 to class 4 (EOS-like) as an experiment. Added check for null pointer in directory walk to avoid access error. Corrected one C++-style comment. EOS Digital Rebel XT/EOS 350D/EOS Digital Kiss N is now a Class 6 camera, and needs CFLAGS=-DCANON_EXPERIMENTAL_20D to be included in the code. fix unintended consequences of getting rid of warning messages The capacity and available variables are not NULL as verified above. But cap and ava are only set for the USB case, so we have to check for that. If you know the logic better, feel free to improve the code :) Capture from EOS 20D seems to work. We now print the camera firmware version in the debug log message from "identify camera". 2005-03-31 Stephen Westin "Delete file" now works on EOS 20D. Added conditional CANON_EXPERIMENTAL_20D to enable 20D support, so naive users won't be misled that this is actually trustworthy code. Camera model changes: o MVX100i/Optura 20 is now 0x3082, not 0x3081. o PowerShot A75 moved from class 5 to class 1 as a guess. Allow unexpected length of packet returned from "get picture abilities". Made canon_int_capture_preview() more like canon_int_capture_image(). A bit of housekeeping here and there. Corrected vendor ID for EOS 350D/EOS Digital Rebel N/EOS Digital Kiss XT: 30ee is correct for Canon mode, 30ef is for PTP only. Updated and expanded list of models with USB ID's. Corrected bug in canon_int_set_file_attributes: one byte too short on command (we need two NULs at the end). We now use canon_usb_set_file_attributes in usb.c. Corrected canon_usb_set_file_attributes, which never could have worked. Fixed one type warning long vs. int Fixed sizes reported by get_disk_info for EOS 20D. Added PowerShot A510. 2005-03-14 Stephen Westin Fixes toward EOS 20D support: o "flash device ID", "get disk info", and "delete file" have different command codes. o "get disk info" seems to return values in K rather than bytes. Moved PowerShot A60 & A70 from class 5 to class 1. Casts on various parameters to avoid warnings both on Linux and on Mac OS X, which seem to have different sizes for size_t. Changed to use all 32 bytes, if present, from both camera model and owner name from "identify camera" command. Some realignment. 2005-03-09 Stephen Westin Corrected an infinite loop when checking for filename of a newly captured image, only if that was the only image on the camera. Corrected protocol classes for IXUS v (I think it's the same camera as PowerShot S110, but with different USB ID) and PowerShot S45 (we had reports that it was working with the EOS (class 4) code, but somehow it was in class 5). Corrected one comment. Move PowerShot A300 from class 4 to class 1. Moved PowerShot A80 from class 4 to class 1. Whoops, I wanted the S400/IXUS 400 in class 1, not 3. Moved PowerShot S400 (Digital IXUS 400) from class 4 (EOS-like) to class 3. Moved PowerShot A400 back to class 5. I have my doubts, but don't know any better candidate. Moved PowerShot S400 from class 1 to class 4, which is where it apparently worked before (May 2003). Corrected a couple of gcc warnings on type of format specifiers (long int vs. int). unknown 4 (gleaned from Mac Info.plist file) should be 3080. It had duplicated 3081. Moved PowerShot S400 (aka Digital IXUS 400) from class 4 to class 1. Added info on several camera models: both ones we know and ones we would like to know. Added aliases for several cameras that are sold with different names in different markets. Moved IXUS v from class 0 to class 1. 2005-01-16 Marcus Meissner * canon.c: Added PowerShot SD200. 2005-01-15 Stephen Westin * canon.c: Commented out EOS 20D in table, as it doesn't work at all yet. * canon.c: Added audio files to directory listings. 2005-01-04 Stephen Westing * *.c: Better status reporting on errors Minor formatting cleanup 2004-12-19 Marcus Meissner * canon.[ch]: Added PowerShot S70. 2004-12-16 Stephen H. Westin * canon.[ch]: Added new protocol class 6 for EOS 20D (not yet implemented). Removed macro IS_EOS, which is superseded by CANON_CLASS_4. 2004-12-16 Stephen H. Westin * urb-interpret: Added some interpretation of interrupt read packets. * urb-interpret: Updated to interpret output from SniffUSB v1.8, making it incompatible with (some) older versions. To interpret output of older versions, use an older version of urb-interpret. 2004-11-17 Marcus Meissner * canon.[ch]: Added PowerShot SD20. 2004-11-17 Stephen H. Westin * canon.[ch]: Significant restructuring: there are now only 5 types of camera, so we should be able to add new cameras without modifying canon.h. Cleaned up a few type warnings in log message calls. 2004-10-20 Hubert Figuiere * canon.[ch]: Added EOS 20D 2004-09-11 Marcus Meissner * canon.[ch]: Added PowerShot A95 as reported. * canon.[ch]: Added PowerShot A85 as reported. 2004-08-22 Marcus Meissner * canon.c,usb.c,library.c: Fixed various gp_log / GP_DEBUG problems. 2004-08-12 Hubert Figuiere * canon.[ch]: Added Powershot S60 2004-06-05 Hubert Figuiere * canon.[ch]: Added A310 as reported in patch 966814 http://www.gphoto.org/patches/?id=966814 2004-06-01 Marcus Meissner * canon.[ch]: Added A75 as reported. 2004-05-30 Hubert Figuiere * canon.[ch]: Added PowerShot S410 / IXUS 430 by applying patch 963229 http://www.gphoto.org/patches/?id=963229 2004-05-09 Marcus Meissner * canon.[ch]: Added IXUS 500 as reported. 2004-03-07 Marcus Meissner * canon.c: We check for consecutive 0s, so check for !*temp_ch. 2004-02-03 Hans Ulrich Niedermann * serial.c, usb.c: Use largest file size limit * canon.c, canon.h: Note improper use of file size limits 2004-01-31 Marcus Meissner * canon.c, canon.h: Richard Simpson Support for Canon MV650i. 2004-01-14 Hans Ulrich Niedermann * canon.c, canon.h: Add support for Canon ZR-70MC Thanks for the report by Kevin R. Bulgrien. 2004-01-02 Marcus Meissner * canon.c, usb.c: lock keys and audio support in PowerShot S50, from rcaputo@users.sf.net 2003-11-08 Hans Ulrich Niedermann * canon.c, canon.h: Added support for Optura 20 (reported by Walt H) 2003-10-27 Marcus Meissner * canon.c: PowerShot S50 and A300 got lost somewhere. 2003-09-20 Hans Ulrich Niedermann * canon.c, canon.h, usb.c, usb.h: Added G5 support (patches by Andreas Klemm ) 2003-10-10 Olivier Crete * library.c: Add Canon A80 2003-09-20 Hans Ulrich Niedermann * canon.c, canon.h, usb.c: Added support for EOS 300D/Digital Rebel/KISS Digital, thanks to Johan Herland and T.V. 2003-05-19 Marcus Meissner * canon.c, canon.h: Added 4 patches with support for the A300, S400, A60 and A70. (Might not be 100% correct in specifying subtypes and capture ability.) These seem to parallel support PTP and Canon mode with 1 USB id according to traces sent. Strange. 2003-05-06 Marcus Meissner * library.c,canon.c: 2 bug fixes for audio files from Ben Low . 2003-04-07 Stephen H. Westin * Update README, TODO, ChangeLog * Support for Optura 200 MC/MVX2i camcorder 2003-04-04 Stephen H. Westin * CANON_PS_A70 is now CANON_PS_PRO70, to avoid confusion with new PowerShot A70, a completely different camera. * Added comments with product ID's for A60, A70, which are PTP-only. * Added ID's for EOS 10D; will use same code as EOS D30/D60. * Image key and size (for immediate download from capture) are now in the CameraPrivateLibrary structure, so they aren't passed as explicit parameters. * capture_step moved to CameraPrivateLibrary structure to keep track of interrupt reads during image capture; this was formerly a local variable in canon_usb_capture_dialogue(). * Fixed comment since we now supply a real serial number with each command packet. * New function canon_usb_set_file_time() to be used after file upload. * New function canon_usb_set_file_attributes(). * New functions canon_usb_get_captured_thumbnail(), canon_usb_get_captured_image(), canon_int_capture_preview(), is_audio(), canon_int_filename2audioname(). * Transfer mode bits are now in enum canonTransferMode. * New enum canonDownloadImageType. * Converted #define's in usb.h to enums * Moved prototypes to end of usb.h, since they now use the enums. * Max read size USB_BULK_READ_SIZE is now 0x1400 to match Canon software; was 0x3000. * Moved transfer mode bits to from usb.h to canon.h. * Messed with file upload; now sets file time from host file time. Still doesn't work any better. 2003-02-28 Stephen H. Westin * Removed "capturing" field from CameraPrivateLibrary; it was unused. * EOS capture is no longer flagged as "experimental". * Implemented canon_capture_preview(); it was a no-op. 2003-02-27 Marcus Meissner * library.c: We support EXIF download. 2003-02-27 Stephen H. Westin * Changed all C++-style comments ("//") to C-style "/* ... */". Gcc allows C++ form in C programs, but it's not quite ANSI. * In canon_int_capture_image(), deduce path and file name of captured image and return as specified in the API * Added function canon_usb_list_all_dirs() to support path and file name deduction in canon_int_capture_image(). 2003-02-18 Stephen H. Westin * canon_usb_capture_dialogue() now gets error context * Added extra NUL to end of "delete file" command; this eliminates an error code 0200000086. * canon_usb_unlock_keys() now gets error context and reports errors (non-zero status code in 0x50 of reply). * Better error checking in canon_usb_lock_keys(); now we *do* know what those bytes mean (they are a 32-bit status code). * Change locking code so that older "default" cameras are now explicit; the new default is like S45 and G3, on the assumption that new cameras will probably behave like this. * canon_usb_capture_dialogue() now gets error context to pass to canon_usb_capture_dialogue(). 2003-02-14 Stephen H. Westin * Corrected comment explaining path returned from capture. * Added labels for all values of canonCamModel, for gtk-doc. * Added PowerShot G3 to special-case locking: use non-EOS locking, but no "get photo abilities" command. 2003-02-11 Stephen H. Westin * Tidy comments (esp. for gtk-doc) * Return "*UNKNOWN*" for both path and file names from capture, since I don't know how to get the information after capture. Previously, random garbage was returned. * Flag GP_DEBUG messages with name of originating function. * Clean up better on capture error (exit control mode). * Convert many constant #define's to enum's. * Moved many constant #define's from library.h to canon.h. * Moved macro IS_EOS() to canon.h. * Supply unique serial number in each command. * Alter "already awake" initialization for EOS cameras. This still doesn't work :(. * Alter key locking. EOS cameras are locked just before "release shutter" command and unlocked as soon as possible afterward. PowerShot cameras are unlocked at initialization and can't be unlocked from software. The user must unplug the USB cable to unlock the keys on these cameras. * Unify polling of interrupt pipe in canon_usb_poll_interrupt_pipe(). * Read interrupt pipe to clear it, both before "release shutter" command and after an error (interrupt messages out of sequence) in capture. * Increase timeout for "release shutter" command. EOS cameras sometimes take a long time (>10sec) to complete this command. Is this because of a buffer flush? * Improve handling of interrupt messages in "release shutter". * Check status at 0x50 in response, where appropriate, and report a non-zero status code via GP_DEBUG (in canon_usb_dialogue). * Increase MAX_INTERRUPT_TRIES from 4000 to 12000 to allow worst-case timing: a D60 writing a raw file to CF. 2003-01-27 Stephen H. Westin * Major cleanup of comments to make gtk-doc work. * Moved "defines for error handling" from canon.h to serial.h. * Moved JPEG stream byte #defines from serial.h to canon.h. * Slight update of doc string for screen width (library.c). * Minor improvements to urb-interpret. * Moved MAX_RETRIES from usb.c to usb.h, renamed MAX_INTERRUPT_RETRIES. * Rewrite of interrupt-pipe reads based on new insight into communication structure. * Now seems to work with EOS D30 as well as PowerShot cameras. Not yet working with EOS D60. * Commented prototype for dump_hex in util.h, as it isn't actually defined anywhere. * Created doc/canon-api.sgml, doc/canon-sections.txt with tentative structure for documentation. 2003-01-13 Stephen H. Westin * Improved some debug logging; added interpretation of power status * Re-inserted "get picture abilities" for non-EOS cameras * Created special case for PowerShot S45, which (like EOS) doesn't implement the "get picture abilities" command, but (like PowerShot) uses the base "lock keys" command. 2003-01-10 Hans Ulrich Niedermann * canon.[ch]: removed CANON_EXPERIMENTAL_CAPTURE #ifdefs * usb.[ch]: removed CANON_EXPERIMENTAL_CAPTURE #ifdefs * library.[ch]: removed CANON_EXPERIMENTAL_CAPTURE #ifdefs * canon.[ch], serial.c: new serial detection code (with dedicated ID strings) 2003-01-10 Stephen H. Westin * Corrected capture sequence, including reads from interrupt pipe. Tested on PowerShot G2 and S45; *not* working for EOS D30/D60 cameras. * Added function canon_int_get_picture_abilities (currently unused). * New command "EOS get body ID" returns camera serial number. * Added command and response lengths for "Get available shot" and "Get custom function" * Corrected canon_int_get_battery() when return values are NULL pointers. * Extended timeout for remote control init, as camera must extend lens. * Corrected spelling in various places. * urb-interpret: fixed a few bugs. Improved handling of interrupt pipe reads: we now discard those with zero length, but flag and keep others. 2002-11-20 Hans Ulrich Niedermann * canon.[ch]: support for PowerShot G3 (A. Marinichev) 2002-11-03 Hans Ulrich Niedermann * canon.[ch]: support for PowerShot S230 2002-11-02 Hans Ulrich Niedermann * canon.[ch]: support for PowerShot S45 2002-10-25 Hans Ulrich Niedermann * usb.c: added fix for EOS D60 unlocking by Fredrik (reported to work) 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 2002-08-28 Hans Ulrich Niedermann * library.c: s/EXPERIMENTAL_/CANON_EXPERIMENTAL_/ * canon.[ch], usb.[ch]: s/EXPERIMENTAL_/CANON_EXPERIMENTAL_/ * library.c: only report EXPERIMENTAL on USB cams * Makefile.am: removed EXPERIMENTAL_ CFLAGS stuff * README: Added note about new CANON_EXPERIMENTAL_ stuff 2002-07-29 Hans Ulrich Niedermann * canon.[ch]: support for PowerShot A100, A200 2002-07-29 Lutz Müller * canon.h: Make CVS compile again by adding CANON_PS_A100 to the enumeration. 2002-07-24 Hans Ulrich Niedermann * canon.c: started to add duplicate cams * library.c: report upload cap only if possible * mkpatch: removed, last change from 2000, and not useful for quite some time now 2002-05-01 Hans Ulrich Niedermann * canon.c, canon.h, usb.c: added support for EOS D60 2002-04-19 Fredrik * canon.c, canon.h: Added support for the IXUS 330, reported working by Oliver Herrmann. 2002-04-08 Fredrik * canon.c: better comments, fixed two UTC to localtime typos in debug messages, better debug messages in canon_int_set_time(). * library.c: fixed reporting of camera time difference in camera_summary() which did not handle DST. 2002-03-29 Hans Ulrich Niedermann * library.c: merged in USB upload patch by Matthias Kramm (using #ifdef EXPERIMENTAL_UPLOAD) mark driver as experimental when compiled with any of the EXPERIMENTAL_ flags * canon.h: merged in USB upload patch by Matthias Kramm properly use EXPERIMENTAL_CAPTURE for int capturing; * usb.c: merged in USB upload patch by Matthias Kramm * Makefile.am: define EXPERIMENTAL_UPLOAD if requested 2002-03-23 Hans Ulrich Niedermann * library.c,Makefile.am: made capture stuff a little easier for testing * canon.h: removed last remains from obsolete caching layer * library.c,canon.h,usb.c: accelerate non-capture operations by omitting sleep(2) hack when not capturing * library.c: added G2 to list of supposedly capture-able cams * canon.h: removed last remains from obsolete caching layer 2002-03-22 Fredrik * canon.c, canon.h: Added support for the A40, reported by David Willmore. 2002-03-18 Fredrik * usb.c, usb.h, library.c, canon.c, canon.h: Committed Emile Snyder's USB remote capture code. This is work in progress, but to ease distribution and avoid conflicts it is included here inside #ifdef EXPERIMENTAL_CAPTURE * README: Updated models known to work with the 'new' driver and added a paragraph about the remote capture code included today. 2002-03-08 Fredrik * canon.{c,h}, library.c: Implemented EXIF file type support, re-worked thumbnail handling and got rid of the ../../libgphoto2/exif.* dependency. * usb.c: Don't keylock S10 - it does that by itself when set to PC mode. Reported by Philipp Kolmann. 2002-01-09 Fredrik * *.{c,h}: Re-indented and removed everything #ifdef OBSOLETE to make sources clean before gPhoto2 2.0 is released. 2002-01-08 christophe barbé * usb.c: Change model detection to look at model name instead of USB vendor/product ID since this is required to make the current implementation of overriding camera model work. 2002-01-21 Fredrik * usb.c: Don't key lock Pro 90 IS cameras, they do not support it. Reported by Karl Thaller. * usb.c, Protocol: Fixed a bug in the init sequence code (write 0x50 bytes like the Windows driver - not 0x10 like we used to). This actually made another bug (in the cameras firmware) surface and we had to mimic the Windows drivers workaround which is to call 'Identify camera' multiple times. If you want to read more about this, go read the gphoto-devel archives from around this date. Look for messages about trouble with Canon G1, Pro90IS and EOS D30 cameras. * canon.c, canon.h, library.c, serial.c: Reverted behaviour of canon_int_get_time() to return time in cameras time instead of converted to UTC since it makes more sense to display the same time as the camera does on it's display. Made canon_int_get_time() always return gphoto2 status codes. 2002-01-15 Lutz Müller * *.c: gp_camera_status -> gp_context_status 2002-01-14 Fredrik * canon.c, library.c: More carefull buffer size checking in some places. We should do a real audit of these. * library.c: Fixed mkdir and rmdir functions which did not convert from gphoto paths to canon paths. 2002-01-13 Lutz Müller * *.[c,h]: Replase last call to gp_camera_set_error (I oversaw one hidden in the header file). 2002-01-13 Lutz Müller * *.[c,h]: Replace calls to gp_camera_set_error by gp_context_error. 2002-01-12 Hans Ulrich Niedermann * README: New readme for new driver 2002-01-11 Hans Ulrich Niedermann * *.[ch]: checked in rewritten driver which uses GPFilesystem directly (from the hun branch) 2002-01-08 Dan Fandrich * Makefile.am: Removed redundant CFLAGS and LDFLAGS lines 2002-01-07 Fredrik * canon.c: Small fix to Dan's portable timezone code from yesterday. The wrong time was set. * library.c: Improved camera_summary() with better error-checking and nicer formatted output. 2002-01-06 Dan Fandrich * util.h: added MIN and MAX definitions * library.c: added support for locale-specific thousands separator * canon.c: added support for tm.tm_gmtoff to get time zone offset 2002-01-04 Fredrik * canon.c, canon.h: Changed canon_int_get_time() to convert the time to GMT before returning it to the caller to simplify time operations elsewhere. Changed canon_int_set_time() to accept the time to set as a parameter instead of always setting it to the computers time. Also use correct endian code to convert it to little endian before sending it to the camera and hopefully convert the time to local timezone before setting it since Canon cameras know nothing about timezone. * library.c: Reflect changes to get/set_time. * canon.c, library.c: Improve error checking and debug diagnostics when camera does not return the expected ammount of data. 2002-01-01 Fredrik * usb.c: Don't keylock G1 cameras, they do not support it. Reported by Jarno Elonen. 2001-12-24 Hans Ulrich Niedermann * library.c: stop reporting broken camera abilities 2001-12-23 Fredrik * canon.c, canon.h, serial.c, usb.c, util.c, util.h : Patch from Michel Dänzer , Handle endian issues when communicating with the cameras by using the new _byteorder.h include provided to us by gphoto2 autoconf. * canon.c, canon.h, library.c, serial.c, usb.c : Put all model data in a canonCamModelData structure in canon.h so that there is only one place that has to be changed when adding new models. This is also a start to defining properties/abilities for cameras in a central place instead of checking what model we are talking to everywhere in the code. Output cameras time and the difference between it and the host computers time in --summary. 2001-12-15 Fredrik * library.c, canon.h: Moved models[] from library.c to canon.h and added canonCamModel model to models[]. * usb.c, usb.h: Identify USB cameras based on USB vendor/product ID. This was necessary because we need to know what model it is before initializing since some models do that differently. * usb.c: Add special treatment of EOS D30 cameras to canon_usb_camera_init() when camstat is 'A'. Simplified canon_usb_camera_init() in general. * usb.c: Moved the code from canon_usb_ready() to canon_usb_init() - canon_usb_ready() should send a 'ping' packet to check if the camera is alive instead of doing stuff like identification and key locking. * usb.c: Changed canon_usb_dialogue() to read responses in two passes - one that reads as much as possible that is divideable with 0x40 and then one that reads the expected number of bytes modulus 0x40. This is what the windows driver does and it appears some cameras (EOS D30) likes this better. 2001-12-06 Fredrik * canon.c, library.c: Re-worked file deleting after reports saying it didn't work. Now it works for me at least. 2001-12-05 Fredrik * usb.h: Added EOS D30 (and possibly other models) commands to lock and unlock camera keys. * usb.c, usb.h: Renamed canon_usb_keylock() to canon_usb_lock_keys(). Added canon_usb_unlock_keys(), the only camera known to support this is the EOS D30. This is called from camera_exit(). Corrected comments about how canon_usb_dialogue() works. * canon.c: Improved error checking on return from canon_{usb,serial}_dialogue() calls and changed some functions to return GP_ codes instead of hard coded integer values. * library.c: Call canon_usb_unlock_keys() from camera_exit() if using USB. 2001-12-04 Fredrik * canon.c: Improved debug output in canon_int_get_time(). * canon.c, canon.h, serial.c, serial.h, usb.c, usb.h: Moved canon_int_serial_ready() to serial.c and renamed it to canon_serial_ready(). Moved canon_int_usb_ready() to usb.c and renamed it to canon_usb_ready(). * library.c: Don't say we are switching off camera if USB, since we are not. * usb.c: Make canon_usb_keylock() not try to keylock EOS D30 cameras, they seem to do keylocking different. 2001-12-01 Fredrik * usb.c, usb.h: Added canon_usb_get_dirents(). * serial.c, serial.h: Added canon_serial_get_dirents(). * canon.h: added CANON_MINIMUM_DIRENT_SIZE. * canon.c, canon.h: Exchanged canon_int_list_directorys() with my rewritten version. At least some hypothetical bugs fixed, easier to understand and proper error-checking. This should hopefully not break serial, since this is almost the same code as I used when debugging other serial stuff on Philippes computer/camera from 1600 km distance a few weeks ago. * library.c: Re-wrote _get_file_path() since it was really hard to understand. The first time I tried to understand it I got it all wrong and even added some faulty comments. Also replaced some random gp_debug_printf() with GP_DEBUG() and re-indented *.c. 2001-11-29 Fredrik * usb.c, usb.h: Implemented canon_usb_keylock() which locks the cameras keys and turns off the LCD. * usb.c: Changed a read of 0x44 bytes to two, one of 0x40 and one of 0x4 bytes. This seems to fix the problems we have had with initialization only working every second time for some cameras. Changed canon_usb_dialogue() to return the number of bytes the caller is interested in rather than the total number of bytes read from the camera for "non-long" reads. * canon.c: Move some more code from canon_int_ready() to canon_int_serial_ready(). Don't show init errors with gp_camera_status(), use gp_camera_set_error() for that. Updated canon_int_usb_ready() to call new canon_usb_keylock() and also do things in a slightly different order. 2001-11-27 Hans Ulrich Niedermann * README: added note about CRW (raw) support * canon.c: added support for PowerShot S40 * canon.h: added support for PowerShot S40 * library.c: added support for PowerShot S40 2001-11-27 Hans Ulrich Niedermann * ChangeLog: created new file * Changelog: declared deprecated libgphoto2-2.5.9/camlibs/canon/usb.c0000644000175000001440000032371412610415617014177 00000000000000/**************************************************************************** * * File: usb.c * * USB communication layer. * ****************************************************************************/ #include "config.h" #include #include #include #include #include #include #include #include #ifdef CANON_EXPERIMENTAL_UPLOAD /* For filestat to get file time for upload */ #include #include #include #endif /* CANON_EXPERIMENTAL_UPLOAD */ #ifdef OS2 #include #endif #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #include #include "usb.h" #include "canon.h" #include "util.h" #ifdef __GNUC__ # define __unused__ __attribute__((unused)) #else # define __unused__ #endif #define CHECK_RESULT(result) {int r = (result); if (r < 0) return (r);} /* IDENTIFY_INIT_TIMEOUT: the starting timeout (in milliseconds) * to wait for the camera to respond to an "identify camera" request. * This timeout is doubled for each retry */ /* It was originally 10, but this made the communication fail, so * bump up to 100. */ #define IDENTIFY_INIT_TIMEOUT 100 /* IDENTIFY_MAX_ATTEMPTS: how many "identify camera" requests to send * to the camera, until we give up for lack of response. */ #define IDENTIFY_MAX_ATTEMPTS 5 /* CANON_FAST_TIMEOUT: how long (in milliseconds) we should wait for * an URB to come back on an interrupt endpoint */ #define CANON_FAST_TIMEOUT 500 /* WARNING: This destroys reentrancy of the code. Better to put this * in the camera descriptor somewhere. */ static int serial_code = 0; /* Map camera status codes (from offset 0x50 in reply block) to * messages. */ static struct canon_usb_status canon_usb_status_table[] = { {0x00000000, NULL}, {0x02000022, "File not found"}, {0x02000029, "File was protected"}, {0x0200002a, "Compact Flash card full"}, {0x02000081, "Failed to lock EOS keys"}, {0x02000082, "Failed to unlock EOS keys"}, {0x02000085, "Could not switch to capture mode"}, {0x02000086, "Invalid command parameters"}, {0x00000086, "Can't unlock EOS keys (new)"}, {0x02000087, "No storage card in camera"}, {0x82200040, "Unknown error (new protocol)"}, {0x82220040, "Unknown error (new protocol)"} }; /* * Command codes are structured: * cmd2=11 -> camera control, * cmd2=12 -> storage control. * * cmd3=201 -> fixed length response * cmd3=202 -> variable length response */ static const struct canon_usb_cmdstruct canon_usb_cmd[] = { {CANON_USB_FUNCTION_GET_FILE, "Get file", 0x01, 0x11, 0x202, 0x40}, {CANON_USB_FUNCTION_MKDIR, "Make directory", 0x05, 0x11, 0x201, 0x54}, {CANON_USB_FUNCTION_RMDIR, "Remove directory", 0x06, 0x11, 0x201, 0x54}, {CANON_USB_FUNCTION_DISK_INFO, "Disk info request", 0x09, 0x11, 0x201, 0x5c}, /* 0x0a is overloaded: "flash device ident" and "delete file", * with different responses */ {CANON_USB_FUNCTION_FLASH_DEVICE_IDENT, "Flash device ident", 0x0a, 0x11, 0x202, 0x40}, {CANON_USB_FUNCTION_DELETE_FILE_2, "Delete file", 0x0a, 0x11, 0x201, 0x54}, {CANON_USB_FUNCTION_GET_DIRENT, "Get directory entries", 0x0b, 0x11, 0x202, 0x40}, /* Command code 0x0d is overloaded: delete file (old), * disk info request ID (new). */ {CANON_USB_FUNCTION_DELETE_FILE, "Delete file", 0x0d, 0x11, 0x201, 0x54}, {CANON_USB_FUNCTION_DISK_INFO_2, "Disk info request (new)", 0x0d, 0x11, 0x201, 0x5c}, /* Command code 0x0e is overloaded: set file attribute (old), * flash device ID (new). And the response is different: fixed * length in old, variable length in new. */ {CANON_USB_FUNCTION_SET_ATTR, "Set file attributes", 0x0e, 0x11, 0x201, 0x54}, {CANON_USB_FUNCTION_FLASH_DEVICE_IDENT_2, "Flash device ident (new)", 0x0e, 0x11, 0x202, 0x40}, {CANON_USB_FUNCTION_SET_FILE_TIME, "Set file time", 0x0f, 0x11, 0x201, 0x54}, {CANON_USB_FUNCTION_IDENTIFY_CAMERA, "Identify camera", 0x01, 0x12, 0x201, 0x9c}, {CANON_USB_FUNCTION_GET_TIME, "Get time", 0x03, 0x12, 0x201, 0x60}, {CANON_USB_FUNCTION_SET_TIME, "Set time", 0x04, 0x12, 0x201, 0x54}, /* 0x05 is overloaded: "change owner" and "get owner", with * different responses */ {CANON_USB_FUNCTION_CAMERA_CHOWN, "Change camera owner", 0x05, 0x12, 0x201, 0x54}, {CANON_USB_FUNCTION_GET_OWNER, "Get owner name (new)", 0x05, 0x12, 0x201, 0x74}, {CANON_USB_FUNCTION_CAMERA_CHOWN_2, "Change owner (new)", 0x06, 0x12, 0x201, 0x54}, {CANON_USB_FUNCTION_POWER_STATUS, "Power supply status", 0x0a, 0x12, 0x201, 0x58}, /* 0x13 is overloaded: remote camera control in the original protocol, power status in the new protocol. */ {CANON_USB_FUNCTION_CONTROL_CAMERA, "Remote camera control", 0x13, 0x12, 0x201, 0x40}, {CANON_USB_FUNCTION_POWER_STATUS_2, "Power supply status (new)", 0x13, 0x12, 0x201, 0x58}, {CANON_USB_FUNCTION_RETRIEVE_CAPTURE, "Download a captured image", 0x17, 0x12, 0x202, 0x40}, {CANON_USB_FUNCTION_RETRIEVE_PREVIEW, "Download a captured preview", 0x18, 0x12, 0x202, 0x40}, {CANON_USB_FUNCTION_UNKNOWN_FUNCTION, "Unknown function", 0x1a, 0x12, 0x201, 0x80}, {CANON_USB_FUNCTION_EOS_LOCK_KEYS, "EOS lock keys", 0x1b, 0x12, 0x201, 0x54}, {CANON_USB_FUNCTION_EOS_UNLOCK_KEYS, "EOS unlock keys", 0x1c, 0x12, 0x201, 0x54}, {CANON_USB_FUNCTION_EOS_GET_BODY_ID, "EOS get body ID", 0x1d, 0x12, 0x201, 0x58}, {CANON_USB_FUNCTION_GET_PIC_ABILITIES, "Get picture abilities", 0x1f, 0x12, 0x201, 0x384}, {CANON_USB_FUNCTION_GENERIC_LOCK_KEYS, "Lock keys and turn off LCD", 0x20, 0x12, 0x201, 0x54}, {CANON_USB_FUNCTION_20D_UNKNOWN_1, "Unknown EOS 20D function", 0x21, 0x12, 0x201, 0x54}, {CANON_USB_FUNCTION_20D_UNKNOWN_2, "Unknown EOS 20D function", 0x22, 0x12, 0x201, 0x54}, {CANON_USB_FUNCTION_EOS_GET_BODY_ID_2, "Get body ID (new)", 0x23, 0x12, 0x201, 0x58}, {CANON_USB_FUNCTION_GET_PIC_ABILITIES_2, "Get picture abilities (new)", 0x24, 0x12, 0x201, 0x474}, {CANON_USB_FUNCTION_CONTROL_CAMERA_2, "Remote camera control (new)", 0x25, 0x12, 0x201, 0x40}, {CANON_USB_FUNCTION_RETRIEVE_CAPTURE_2, "Download captured image (new)", 0x26, 0x12, 0x202, 0x40}, {CANON_USB_FUNCTION_LOCK_KEYS_2, "Lock keys (new)", 0x35, 0x12, 0x201, 0x5c}, {CANON_USB_FUNCTION_UNLOCK_KEYS_2, "Unlock keys (new)", 0x36, 0x12, 0x201, 0x54}, /* WARNING: I don't think this is really the right value, but * it gives no error on EOS 20D -- swestin 22-Mar-05 */ {CANON_USB_FUNCTION_SET_ATTR_2, "Set file attributes (new))", 0x07, 0x11, 0x201, 0x54}, { 0, NULL, 0, 0, 0, 0 } }; const struct canon_usb_control_cmdstruct canon_usb_control_cmd[] = { /* COMMAND NAME Description Value CmdLen ReplyLen */ {CANON_USB_CONTROL_INIT, "Camera control init", 0x00, 0x18, 0x1c}, /* load 0x00, 0x00 */ {CANON_USB_CONTROL_SHUTTER_RELEASE, "Release shutter", 0x04, 0x18, 0x1c}, /* load 0x04, 0x00 */ {CANON_USB_CONTROL_SET_PARAMS, "Set release params", 0x07, 0x3c, 0x1c}, /* ?? */ {CANON_USB_CONTROL_SET_TRANSFER_MODE, "Set transfer mode", 0x09, 0x1c, 0x1c}, /* load (0x09, 0x04, 0x03) or (0x09, 0x04, 0x02000003) */ {CANON_USB_CONTROL_GET_PARAMS, "Get release params", 0x0a, 0x18, 0x4c}, /* load 0x0a, 0x00 */ {CANON_USB_CONTROL_GET_ZOOM_POS, "Get zoom position", 0x0b, 0x18, 0x20}, /* load 0x0b, 0x00 */ {CANON_USB_CONTROL_SET_ZOOM_POS, "Set zoom position", 0x0c, 0x1c, 0x1c}, /* load 0x0c, 0x04, 0x01 (or 0x0c, 0x04, 0x0b) (or 0x0c, 0x04, 0x0a) or (0x0c, 0x04, 0x09) or (0x0c, 0x04, 0x08) or (0x0c, 0x04, 0x07) or (0x0c, 0x04, 0x06) or (0x0c, 0x04, 0x00) */ {CANON_USB_CONTROL_GET_AVAILABLE_SHOT, "Get available shot", 0x0d, 0x18, 0x20}, {CANON_USB_CONTROL_GET_CUSTOM_FUNC, "Get custom func.", 0x0f, 0x22, 0x26}, {CANON_USB_CONTROL_GET_EXT_PARAMS_SIZE, "Get ext. release params size", 0x10, 0x1c, 0x20}, /* load 0x10, 0x00 */ {CANON_USB_CONTROL_GET_EXT_PARAMS, "Get ext. release params", 0x12, 0x1c, 0x2c}, /* load 0x12, 0x04, 0x10 */ {CANON_USB_CONTROL_SET_EXT_PARAMS, "Set extended params", 0x13, 0x15, 0x1c}, /* based on EOS 20D */ {CANON_USB_CONTROL_EXIT, "Exit release control", 0x01, 0x18, 0x1c}, /* New subcodes for new version of protocol */ {CANON_USB_CONTROL_UNKNOWN_1, "Unknown remote subcode", 0x1b, 0x08, 0x5e}, {CANON_USB_CONTROL_UNKNOWN_2, "Unknown remote subcode", 0x1c, 0x00, 0x00}, /* unobserved, commands present in canon headers defines, but need more usb snoops to get reply lengths */ {CANON_USB_CONTROL_VIEWFINDER_START, "Start viewfinder", 0x02, 0x00, 0x00}, {CANON_USB_CONTROL_VIEWFINDER_STOP, "Stop viewfinder", 0x03, 0x00, 0x00}, {CANON_USB_CONTROL_SET_CUSTOM_FUNC, "Set custom func.", 0x0e, 0x00, 0x00}, {CANON_USB_CONTROL_GET_EXT_PARAMS_VER, "Get extended params version", 0x11, 0x00, 0x00}, {CANON_USB_CONTROL_SELECT_CAM_OUTPUT, "Select camera output", 0x14, 0x00, 0x00}, /* LCD (0x1), Video out (0x2), or OFF (0x3) */ {CANON_USB_CONTROL_DO_AE_AF_AWB, "Do AE, AF, and AWB", 0x15, 0x00, 0x00}, { 0, NULL, 0, 0, 0 } }; static int canon_usb_identify (Camera *camera, GPContext *context); /** * canon_usb_camera_init: * @camera: camera to initialize * @context: context for error reporting * * Initializes the USB camera through a series of read/writes * * Returns: gphoto2 error code * @GP_OK on success. * @GP_ERROR_OS_FAILURE if it seems to be an OS error * @GP_ERROR_CORRUPTED_DATA if communication was completed, but the * response was other than expected. * */ static int canon_usb_camera_init (Camera *camera, GPContext *context) { unsigned char msg[0x58]; unsigned char buffer[0x44]; int i, read_bytes, timeout; char *camstat_str = _("NOT RECOGNIZED"); unsigned char camstat; GP_DEBUG ("canon_usb_camera_init()"); memset (msg, 0, sizeof (msg)); memset (buffer, 0, sizeof (buffer)); i = canon_usb_identify (camera, context); if (i != GP_OK) return i; /* Read one byte from the control pipe. */ i = gp_port_usb_msg_read (camera->port, 0x0c, 0x55, 0, (char *)msg, 1); if (i != 1) { gp_context_error (context, _("Could not establish initial contact with camera")); if (i < GP_OK) return i; return GP_ERROR_CORRUPTED_DATA; } camstat = msg[0]; switch (camstat) { case 'A': camstat_str = _("Camera was already active"); break; case 'C': camstat_str = _("Camera was woken up"); break; case 'I': case 'E': default: gp_context_error (context, _("Initial camera response '%c' unrecognized"), camstat); return GP_ERROR_CORRUPTED_DATA; } GP_DEBUG ("canon_usb_camera_init() initial camera response: %c/'%s'", camstat, camstat_str); i = gp_port_usb_msg_read (camera->port, 0x04, 0x1, 0, (char *)msg, 0x58); if (i != 0x58) { if ( i < 0 ) { gp_context_error (context, _("Step #2 of initialization failed: (\"%s\" on read of %i). " "Camera not operational"), gp_result_as_string(i), 0x58); return GP_ERROR_OS_FAILURE; } else { gp_context_error (context, _("Step #2 of initialization failed! (returned %i bytes, expected %i). " "Camera not operational"), i, 0x58); return GP_ERROR_CORRUPTED_DATA; } } /* Get maximum download transfer length from camera, if * provided */ camera->pl->xfer_length = le32atoh (msg+0x4c); if ( camera->pl->xfer_length == 0xFFFFFFFF ) camera->pl->xfer_length = USB_BULK_READ_SIZE; /* Use default */ GP_DEBUG ("canon_usb_camera_init() set transfer length to 0x%x", camera->pl->xfer_length ); if (camstat == 'A') { /* read another 0x50 bytes */ i = gp_port_usb_msg_read (camera->port, 0x04, 0x4, 0, (char *)msg, 0x50); if (i != 0x50) { if ( i < 0 ) { gp_context_error (context, _("Step #3 of initialization failed: " "\"%s\" on read of %i. " "Camera not operational"), gp_result_as_string(i), 0x50); return GP_ERROR_OS_FAILURE; } else { gp_context_error (context, _("Step #3 of initialization failed! " "(returned %i, expected %i). " "Camera not operational"), i, 0x50); return GP_ERROR_CORRUPTED_DATA; } } } else { /* set byte 0 in msg to new "canon length" (0x10) (which is total * packet size - 0x40) and then move the last 0x10 bytes of msg to * offset 0x40 and write it back to the camera. */ memset ( msg, 0, 0x40 ); msg[0] = 0x10; memmove (msg + 0x40, msg + 0x48, 0x10); i = gp_port_usb_msg_write (camera->port, 0x04, 0x11, 0, (char *)msg, 0x50); if (i != 0x50) { if ( i < 0 ) { gp_context_error (context, _("Step #3 of initialization failed: " "\"%s\" on write of %i. " "Camera not operational"), gp_result_as_string(i), 0x50); return GP_ERROR_OS_FAILURE; } else { gp_context_error (context, _("Step #3 of initialization failed! " "(returned %i, expected %i). " "Camera not operational"), i, 0x50); return GP_ERROR_CORRUPTED_DATA; } } /* Temp hack for SD500/IXUS 700/IXY 600 for testing */ if ( camera->pl->md->model != CANON_CLASS_6 && camera->pl->md->usb_product != 0x30f2 ) { /* We expect to get 0x44 bytes here, but the camera is picky at this stage and * we must read 0x40 bytes and then read 0x4 bytes more. */ i = gp_port_read (camera->port, (char *)buffer, 0x40); if ((i >= 4) && (buffer[i - 4] == 0x54) && (buffer[i - 3] == 0x78) && (buffer[i - 2] == 0x00) && (buffer[i - 1] == 0x00)) { /* We have some reports that sometimes the camera takes a long * time to respond to the above read request and then comes back with * the 54 78 00 00 packet, instead of telling us to read four more * bytes which is the normal 54 78 00 00 packet. */ GP_DEBUG ("canon_usb_camera_init() " "expected %i bytes, got %i bytes with \"54 78 00 00\" " "at the end, so we just ignore the whole bunch and call it a day", 0x40, i); } else { if (i != 0x40) { if ( i < 0 ) { gp_context_error (context, _("Step #4 failed: " "\"%s\" on read of %i. Camera not operational"), gp_result_as_string(i), 0x40); return GP_ERROR_OS_FAILURE; } else { gp_context_error (context, _("Step #4 failed " "(returned %i, expected %i). Camera not operational"), i, 0x40); return GP_ERROR_CORRUPTED_DATA; } } } /* just check if (int) buffer[0] says 0x4 or not, log a warning if it doesn't. */ read_bytes = le32atoh (buffer); if (read_bytes != 4) GP_DEBUG ("canon_usb_camera_init() camera says to read %i more bytes, " "we would have expected 4 - overriding since some cameras are " "known not to give correct numbers of bytes.", read_bytes); i = gp_port_read (camera->port, (char *)buffer, 4); if (i != 4) { if ( i < 0 ) GP_DEBUG ("canon_usb_camera_init() " "Step #5 of initialization failed: \"%s\" from read of %i. " "Camera might still work though. Continuing.", gp_result_as_string(i), 4); else GP_DEBUG ("canon_usb_camera_init() " "Step #5 of initialization failed! (returned %i, expected %i) " "Camera might still work though. Continuing.", i, 4); } } else { /* Newer cameras can give us all 0x44 bytes at * once; some insist on it. */ i = gp_port_read (camera->port, (char *)buffer, 0x44); if (i != 0x44) { if ( i < 0 ) { gp_context_error (context, _("Step #4 failed: " "\"%s\" on read of %i. Camera not operational"), gp_result_as_string(i), 0x44); return GP_ERROR_OS_FAILURE; } else { gp_context_error (context, _("Step #4 failed " "(returned %i, expected %i). Camera not operational"), i, 0x44); return GP_ERROR_CORRUPTED_DATA; } } } read_bytes = 0; gp_port_get_timeout ( camera->port, &timeout ); gp_port_set_timeout ( camera->port, CANON_FAST_TIMEOUT ); do { GP_DEBUG ( "canon_usb_camera_init() read_bytes=0x%x", read_bytes ); i = gp_port_check_int ( camera->port, (char *)buffer, 0x10 ); if ( i > 0 ) read_bytes += i; } while ( read_bytes < 0x10 && i >= 0 ); gp_port_set_timeout ( camera->port, timeout ); if ( read_bytes < 0x10 ) { GP_DEBUG ( "canon_usb_camera_init() interrupt read returned only %d bytes, status=%d", read_bytes, i ); if ( i < 0 ) return GP_ERROR_OS_FAILURE; else return GP_ERROR_CORRUPTED_DATA; } else if ( i < 0 ) { GP_DEBUG ( "canon_usb_camera_init() interrupt read failed, status=%d", i ); return GP_ERROR_CORRUPTED_DATA; } else if ( i > 0x10 ) GP_DEBUG ( "canon_usb_camera_init() interrupt read %d bytes, expected 16", read_bytes ); else GP_DEBUG ( "canon_usb_camera_init() interrupt read OK" ); } GP_DEBUG ("canon_usb_camera_init() " "PC sign on LCD should be lit now (if your camera has a PC sign)"); read_bytes = 0; return camstat; } /* Forward reference for use within canon_usb_init() */ static int canon_usb_get_body_id (Camera *camera, GPContext *context); /** * canon_usb_init: * @camera: camera to initialize * @context: context for error reporting * * Initializes the given USB device. * * Returns: gphoto2 error code (%GP_OK on success). * */ int canon_usb_init (Camera *camera, GPContext *context) { /* unsigned char buffer[0x44]; */ int res, id_retry, i, camstat; /* int read_bytes; */ int orig_mstimeout = -1; int id_mstimeout = IDENTIFY_INIT_TIMEOUT; /* separate timeout for identify camera */ GP_DEBUG ("Initializing the (USB) camera."); #if 0 /* FIXME: as raspberry user confirmed the need for those... * I am currently not sure why I added them. */ gp_port_usb_clear_halt (camera->port, GP_PORT_USB_ENDPOINT_IN); gp_port_usb_clear_halt (camera->port, GP_PORT_USB_ENDPOINT_OUT); gp_port_usb_clear_halt (camera->port, GP_PORT_USB_ENDPOINT_INT); #endif camstat = canon_usb_camera_init (camera, context); if ( camstat < 0 ) return camstat; /* Save the original timeout value and set up the initial identify camera timeout value */ gp_port_get_timeout (camera->port, &orig_mstimeout); gp_port_set_timeout (camera->port, id_mstimeout); /* We retry the identify camera because sometimes (camstat == 'A' * in canon_usb_camera_init()) this is necessary to get the camera * back in sync, and the windows driver actually executes four of * these in a row before downloading thumbnails. */ res = GP_ERROR; for (id_retry = 1; id_retry <= IDENTIFY_MAX_ATTEMPTS; id_retry++) { res = canon_int_identify_camera (camera, context); if (res != GP_OK) { GP_DEBUG ("Identify camera try %i/%i failed %s", id_retry, IDENTIFY_MAX_ATTEMPTS, id_retry < IDENTIFY_MAX_ATTEMPTS ? "(this is OK)" : "(now it's not OK any more)"); id_mstimeout *= 2; gp_port_set_timeout (camera->port, id_mstimeout); } else break; } /* Restore the original timeout value */ gp_port_set_timeout (camera->port, orig_mstimeout); if (res != GP_OK) { gp_context_error (context, _("Camera not ready, " "multiple 'Identify camera' requests failed: %s"), gp_result_as_string (res)); if ( res < 0 ) return GP_ERROR_OS_FAILURE; else return GP_ERROR_CORRUPTED_DATA; } if ( camera->pl->md->model == CANON_CLASS_6 ) { unsigned char *c_res; unsigned int bytes_read = 0; /* Get body ID here */ GP_DEBUG ( "canon_usb_init: camera uses newer protocol, so we get body ID" ); res = canon_usb_get_body_id ( camera, context ); if ( res < 0 ) { GP_DEBUG ( "canon_usb_init: \"Get body ID\" failed, code %d", res ); return ( res ); } GP_DEBUG ( "canon_usb_init: camera uses newer protocol, so we get camera abilities" ); c_res = canon_usb_dialogue (camera, CANON_USB_FUNCTION_GET_PIC_ABILITIES_2, &bytes_read, NULL, 0); if ( c_res == NULL ) { GP_DEBUG ( "canon_usb_init: \"get picture abilities\" failed; continuing anyway." ); } else if ( bytes_read == 0x424 ) { GP_DEBUG ( "canon_usb_init: Got the expected length back from \"get picture abilities.\"" ); } else { GP_DEBUG ( "canon_usb_init: " "Unexpected return of %i bytes (expected %i) from \"get picture abilities.\" We will continue.", bytes_read, 0x424 ); } res = canon_int_get_battery(camera, NULL, NULL, context); if (res != GP_OK) { gp_context_error (context, _("Camera not ready, get_battery failed: %s"), gp_result_as_string (res)); return res; } } else { if ( camera->pl->md->model != CANON_CLASS_4 ) { i = canon_usb_lock_keys(camera,context); if( i < 0 ) { gp_context_error (context, _("lock keys failed.")); return i; } } res = canon_int_get_battery(camera, NULL, NULL, context); if (res != GP_OK) { gp_context_error (context, _("Camera not ready, get_battery failed: %s"), gp_result_as_string (res)); return res; } } return GP_OK; } /** * canon_usb_lock_keys: * @camera: camera to lock keys on * @context: context for error reporting * * Lock the keys on the camera and turn off the display * * Returns: gphoto2 error code * */ int canon_usb_lock_keys (Camera *camera, GPContext *context) { unsigned char *c_res; unsigned int bytes_read; unsigned char payload[4]; GP_DEBUG ("canon_usb_lock_keys()"); switch (camera->pl->md->model) { case CANON_CLASS_NONE: case CANON_CLASS_0: GP_DEBUG ("canon_usb_lock_keys: Your camera model does not need the keylock."); break; case CANON_CLASS_1: case CANON_CLASS_2: case CANON_CLASS_3: /* Previous default; I doubt that any new * cameras will work this way. */ GP_DEBUG ("canon_usb_lock_keys: Locking camera and turning off LCD using 'normal' locking code..."); c_res = canon_usb_dialogue (camera, CANON_USB_FUNCTION_GET_PIC_ABILITIES, &bytes_read, NULL, 0); if ( c_res == NULL ) return GP_ERROR_OS_FAILURE; if ( bytes_read == 0x334 ) { GP_DEBUG ( "canon_usb_lock_keys: Got the expected length back from \"get picture abilities.\"" ); } else { GP_DEBUG ( "canon_usb_lock_keys: " "Unexpected return of %i bytes (expected %i) from " "\"get picture abilities.\" We will continue.", bytes_read, 0x334 ); } c_res = canon_usb_dialogue (camera, CANON_USB_FUNCTION_GENERIC_LOCK_KEYS, &bytes_read, NULL, 0); if ( c_res == NULL ) return GP_ERROR_OS_FAILURE; if (bytes_read == 0x4) { GP_DEBUG ("canon_usb_lock_keys: Got the expected length back."); } else { gp_context_error (context, _("canon_usb_lock_keys: " "Unexpected length returned from \"lock keys\" function (%i bytes, expected %i)"), bytes_read, 0x4); return GP_ERROR_CORRUPTED_DATA; } camera->pl->keys_locked = TRUE; break; case CANON_CLASS_4: GP_DEBUG ("canon_usb_lock_keys: Locking camera and turning off LCD using 'EOS' locking code..."); memset (payload, 0, sizeof (payload)); payload[0] = 0x06; c_res = canon_usb_dialogue (camera, CANON_USB_FUNCTION_EOS_LOCK_KEYS, &bytes_read, payload, 4); if ( c_res == NULL ) return GP_ERROR_OS_FAILURE; if (bytes_read == 0x4) { GP_DEBUG ("canon_usb_lock_keys: Got the expected length back."); } else { gp_context_error (context, _("canon_usb_lock_keys: " "Unexpected length returned (%i bytes, expected %i)"), bytes_read, 0x4); return GP_ERROR_CORRUPTED_DATA; } camera->pl->keys_locked = TRUE; break; case CANON_CLASS_5: /* Doesn't implement "get picture abilities", but isn't an EOS camera, so we have to use the "normal" key lock command. Since the S45 is a relatively new model (in Jan. 2003), I suspect that we will find more cameras in the future that work this way. */ GP_DEBUG ("canon_usb_lock_keys: Locking camera and turning off LCD using class 5 locking code..."); c_res = canon_usb_dialogue (camera, CANON_USB_FUNCTION_GENERIC_LOCK_KEYS, &bytes_read, NULL, 0); if ( c_res == NULL ) return GP_ERROR_OS_FAILURE; if (bytes_read == 0x4) { GP_DEBUG ("canon_usb_lock_keys: Got the expected length back."); } else { gp_context_error (context, _("canon_usb_lock_keys: " "Unexpected length returned (%i bytes, expected %i)"), bytes_read, 0x4); return GP_ERROR_CORRUPTED_DATA; } camera->pl->keys_locked = TRUE; break; case CANON_CLASS_6: /* Newest variation of protocol, and quite * different. "Get picture abilities" is * implemented, but with a different command * code and a longer buffer returned. */ GP_DEBUG ("Camera uses newer protocol: Locking camera keys and turning off LCD..."); c_res = canon_usb_dialogue (camera, CANON_USB_FUNCTION_GET_PIC_ABILITIES_2, &bytes_read, NULL, 0); if ( c_res == NULL ) { GP_DEBUG ( "canon_usb_lock_keys: \"get picture abilities\" failed; continuing anyway." ); } else if ( bytes_read == 0x424 ) { GP_DEBUG ( "canon_usb_lock_keys: Got the expected length back from \"get picture abilities.\"" ); } else { GP_DEBUG ( "canon_usb_lock_keys: " "Unexpected return of %i bytes (expected %i) from \"get picture abilities.\" We will continue.", bytes_read, 0x424 ); } memset (payload, 0, sizeof (payload)); payload[0] = 0x06; c_res = canon_usb_dialogue (camera, CANON_USB_FUNCTION_LOCK_KEYS_2, &bytes_read, payload, 4); if ( c_res == NULL ) return GP_ERROR_OS_FAILURE; if (bytes_read == 0xc) { GP_DEBUG ("canon_usb_lock_keys: Got the expected length back."); } else { gp_context_error (context, _("canon_usb_lock_keys: " "Unexpected length returned (%i bytes, expected %i)"), bytes_read, 0xc); return GP_ERROR_CORRUPTED_DATA; } camera->pl->keys_locked = TRUE; break; } return GP_OK; } /** * canon_usb_unlock_keys: * @camera: camera to unlock keys on * @context: context for error reporting * * Unlocks the keys on cameras that support this * * Returns: gphoto2 error code * */ int canon_usb_unlock_keys (Camera *camera, GPContext *context) { unsigned char *c_res; unsigned int bytes_read; GP_DEBUG ("canon_usb_unlock_keys()"); if ( !camera->pl->keys_locked ) GP_DEBUG ("canon_usb_unlock_keys: keys aren't locked" ); else if ( camera->pl->md->model == CANON_CLASS_4 ) { c_res = canon_usb_dialogue (camera, CANON_USB_FUNCTION_EOS_UNLOCK_KEYS, &bytes_read, NULL, 0); if ( c_res == NULL ) return GP_ERROR_OS_FAILURE; if (bytes_read == 0x4) { GP_DEBUG ("canon_usb_unlock_keys: Got the expected length back."); } else { gp_context_error (context, _("canon_usb_unlock_keys: " "Unexpected length returned (%i bytes, expected %i)"), bytes_read, 0x4); return GP_ERROR_CORRUPTED_DATA; } camera->pl->keys_locked = FALSE; } else if ( camera->pl->md->model == CANON_CLASS_6 ) { c_res = canon_usb_dialogue (camera, CANON_USB_FUNCTION_UNLOCK_KEYS_2, &bytes_read, NULL, 0); if ( c_res == NULL ) return GP_ERROR_OS_FAILURE; if (bytes_read == 0x4) { GP_DEBUG ("canon_usb_unlock_keys: Got the expected length back."); } else { gp_context_error (context, _("canon_usb_unlock_keys: " "Unexpected length returned (%i bytes, expected %i)"), bytes_read, 0x4); return GP_ERROR_CORRUPTED_DATA; } camera->pl->keys_locked = FALSE; } else { /* Your camera model does not need unlocking, cannot do unlocking or * we don't know how to unlock its keys. */ GP_DEBUG ("canon_usb_unlock_keys: Key unlocking not implemented for this camera model. " "If unlocking works when using the Windows software with your camera, " "please contact %s.", MAIL_GPHOTO_DEVEL); } return GP_OK; } /** * canon_usb_get_body_id: * @camera: camera to query * @context: context for error reporting * * Gets the body ID (hardware serial number) from an EOS camera. * * Returns: body ID (hardware serial number of camera) or gphoto2 * error code. * */ static int canon_usb_get_body_id (Camera *camera, GPContext *context) { unsigned char *c_res; unsigned int bytes_read; GP_DEBUG ("canon_usb_get_body_id()"); switch ( camera->pl->md->model ) { case CANON_CLASS_4: c_res = canon_usb_dialogue (camera, CANON_USB_FUNCTION_EOS_GET_BODY_ID, &bytes_read, NULL, 0); if ( c_res == NULL ) return GP_ERROR_OS_FAILURE; else if (bytes_read == 0x8) { int body_id = le32atoh ( c_res+0x4 ); GP_DEBUG ("canon_usb_get_body_id: Got the expected length back."); if ( camera->pl->md->usb_product == 0x3044 ) /* EOS D30 is a special case */ GP_DEBUG ("canon_usb_get_body_id: body ID is %04x%05d", (body_id>>16)&0xffff, body_id&0xffff ); else GP_DEBUG ("canon_usb_get_body_id: body ID is %u", body_id ); camera->pl->body_id = body_id; return GP_OK; } else { gp_context_error (context, _("canon_usb_get_body_id: " "Unexpected data length returned (%i bytes, expected %i)"), bytes_read, 0x58); return GP_ERROR_CORRUPTED_DATA; } break; case CANON_CLASS_6: c_res = canon_usb_dialogue (camera, CANON_USB_FUNCTION_EOS_GET_BODY_ID_2, &bytes_read, NULL, 0); if ( c_res == NULL ) return GP_ERROR_OS_FAILURE; else if (bytes_read == 0x8) { unsigned int body_id = le32atoh ( c_res+0x4 ); GP_DEBUG ("canon_usb_get_body_id: Got the expected length back."); GP_DEBUG ("canon_usb_get_body_id: body ID is %010u", body_id ); camera->pl->body_id = body_id; return GP_OK; } else { gp_context_error (context, _("canon_usb_get_body_id: " "Unexpected data length returned (%i bytes, expected %i)"), bytes_read, 0x58); return GP_ERROR_CORRUPTED_DATA; } break; default: /* As far as we know, only EOS models implement the "get body ID" function. */ GP_DEBUG ("canon_usb_get_body_id: \"Get body ID\" not implemented for this camera model. " "If the Windows software can read a body ID (hardware serial number) from your camera, " "please contact %s.", MAIL_GPHOTO_DEVEL); break; } return GP_OK; } /** * canon_usb_poll_interrupt_pipe: * @camera: the Camera to work with * @buf: buffer to receive data read from the pipe. * @timeout: time in 1/1000 of a second * * Reads the interrupt pipe repeatedly until either * 1. a non-zero length is returned, * 2. an error code is returned, or * 3. the timeout is reached * * Returns: * length of read, or * zero if the timeout is reached * gphoto2 error code from read that results in an I/O error. * */ static int canon_usb_poll_interrupt_pipe ( Camera *camera, unsigned char *buf, unsigned int timeout ) { int i = 0, status = 0, oldtimeout; struct timeval start, end, cur; double duration; memset ( buf, 0x81, 0x40 ); /* Put weird stuff in buffer */ gp_port_get_timeout ( camera->port, &oldtimeout ); gp_port_set_timeout ( camera->port, CANON_FAST_TIMEOUT ); /* Read repeatedly until we get either an error, a non-zero size or hit the timeout. */ gettimeofday ( &start, NULL ); while (1) { unsigned long curduration; i++; status = gp_port_check_int ( camera->port, (char *)buf, 0x40 ); /* Either some real data, or failure */ if ( status != 0 && status != GP_ERROR_TIMEOUT) break; gettimeofday ( &cur, NULL ); curduration = (cur.tv_sec-start.tv_sec)*1000 + (cur.tv_usec-start.tv_usec)/1000; if (curduration >= timeout) { /* Timeout is not an error */ status = 0; break; } } gettimeofday ( &end, NULL ); gp_port_set_timeout ( camera->port, oldtimeout ); duration = (double)end.tv_sec + end.tv_usec/1e6; duration -= (double)start.tv_sec + start.tv_usec/1e6; if ( status <= 0 ) GP_DEBUG ( "canon_usb_poll_interrupt_pipe:" " interrupt read failed after %i tries, %6.3f sec \"%s\"", i, duration, gp_result_as_string(status) ); else GP_DEBUG ( "canon_usb_poll_interrupt_pipe:" " interrupt packet took %d tries, %6.3f sec", i+1, duration ); return status; } int canon_usb_wait_for_event (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context) { unsigned char buf2[0x40]; /* for reading from interrupt endpoint */ unsigned char *final_state = NULL; /* For comparing * before/after * directories */ unsigned int directory_state_len, final_state_len; int status = GP_OK; if (!camera->pl->directory_state) status = canon_usb_list_all_dirs ( camera, &camera->pl->directory_state, &directory_state_len, context ); if (status < GP_OK) { GP_DEBUG ("canon_usb_wait_for_event: status %d", status); return status; } *eventtype = GP_EVENT_TIMEOUT; *eventdata = NULL; status = canon_usb_poll_interrupt_pipe ( camera, buf2, timeout ); GP_DEBUG ("canon_usb_wait_for_event: status %d", status); if (status <= GP_OK) return status; *eventtype = GP_EVENT_UNKNOWN; GP_DEBUG ("canon_usb_wait_for_event: bytes %x %x %x %x %x", buf2[0],buf2[1],buf2[2],buf2[3],buf2[4]); switch (buf2[4]) { case 0x0e: { CameraFilePath *path; *eventtype = GP_EVENT_FILE_ADDED; *eventdata = path = malloc(sizeof(CameraFilePath)); status = canon_usb_list_all_dirs ( camera, &final_state, &final_state_len, context ); if (status < GP_OK) return status; /* Find new file name in camera directory */ canon_int_find_new_image ( camera, camera->pl->directory_state, final_state, path ); if (path->folder[0] != '/') { free (path); *eventtype = GP_EVENT_UNKNOWN; *eventdata = malloc(strlen("Failed to get added filename?")+1); strcpy (*eventdata, "Failed to get added filename?"); } free ( camera->pl->directory_state ); camera->pl->directory_state = final_state; return GP_OK; } default: *eventtype = GP_EVENT_UNKNOWN; *eventdata = malloc(strlen("Unknown CANON event 0x01 0x02 0x03 0x04 0x05")+1); sprintf (*eventdata,"Unknown CANON event 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x",buf2[0],buf2[1],buf2[2],buf2[3],buf2[4]); return GP_OK; } return GP_OK; } /** * canon_usb_capture_dialogue: * @camera: the Camera to work with * @return_length: number of bytes to read from the camera as response * @photo_status: a pointer to an int that returns a photographic status * error codes from the camera (if any) if this function * returns NULL * @context: context for error reporting * * Handles the "capture image" command, where we must read the * interrupt pipe before getting the normal command response. * * We call canon_usb_dialogue() for the actual "release shutter" * command, then handle the interrupt pipe here. * * Returns: a char * that points to the data read from the camera (or * NULL on failure), and sets what @return_length points to to the number * of bytes read. If this function returns NULL, return any photographic * failure error codes in what @photo_status points to. * */ unsigned char * canon_usb_capture_dialogue (Camera *camera, unsigned int *return_length, int *photo_status, GPContext *context ) { int status; unsigned char payload[9]; /* used for sending data to camera */ static unsigned char *buffer; /* used for receiving data from camera */ unsigned char buf2[0x40]; /* for reading from interrupt endpoint */ int mstimeout = -1; /* To save original timeout after shutter release */ /* clear this to indicate that no data is there if we abort */ if (return_length) *return_length = 0; /* for later wait_event */ if (!camera->pl->directory_state) { unsigned int directory_state_len; status = canon_usb_list_all_dirs ( camera, &camera->pl->directory_state, &directory_state_len, context ); } GP_DEBUG ("canon_usb_capture_dialogue()"); *photo_status = 0; /* This should only be checked by the caller if canon_usb_capture_dialogue() returns null */ /* Build payload for command, which contains subfunction code */ memset (payload, 0x00, sizeof (payload)); payload[0] = 4; /* First, let's try to make sure the interrupt pipe is clean. */ while ( (status = canon_usb_poll_interrupt_pipe ( camera, buf2, CANON_FAST_TIMEOUT )) > 0 ); /* Shutter release can take a long time sometimes on EOS * cameras; perhaps buffer is full and needs to be flushed? */ gp_port_get_timeout (camera->port, &mstimeout); GP_DEBUG("canon_usb_capture_dialogue: usb port timeout starts at %dms", mstimeout); gp_port_set_timeout (camera->port, 15000); /* now send the packet to the camera */ if ( camera->pl->md->model != CANON_CLASS_6 ) buffer = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_CONTROL_CAMERA, return_length, payload, 8 ); else { buffer = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_CONTROL_CAMERA_2, return_length, payload, 9 ); } if ( buffer == NULL ) return NULL; gp_port_set_timeout (camera->port, mstimeout); GP_DEBUG("canon_usb_capture_dialogue:" " set camera port timeout back to %d seconds...", mstimeout / 1000 ); /* Check the status code from the camera. */ if ( le32atoh ( buffer ) != 0 ) { GP_DEBUG ( "canon_usb_capture_dialogue:" " got nonzero camera status code" " %08x in response to capture command", le32atoh ( buffer ) ); goto FAIL; } if ( camera->pl->md->model == CANON_CLASS_6 ) { /* Don't know what this command does, but the Windows * software issues it here. */ htole32a ( payload, 0x0f ); GP_DEBUG ( "canon_usb_capture_dialogue: Issuing unknown command 0x22 for class 6 camera." ); buffer = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_20D_UNKNOWN_2, return_length, payload, 4 ); if ( buffer == NULL ) GP_DEBUG ( "canon_usb_capture_dialogue: Unknown command 0x22 returned null buffer; continuing anyway." ); else if ( *return_length != 0x4 ) GP_DEBUG ( "canon_usb_capture_dialogue: Unknown command 0x22 returned buffer of unexpected size 0x%x; continuing anyway.", *return_length ); else if ( le32atoh ( buffer+0x50 ) != 0 ) GP_DEBUG ( "canon_usb_capture_dialogue: Unknown command 0x22 returned status code 0x%x; continuing anyway.", le32atoh ( buffer+0x50 ) ); } /* Now we need to read from the interrupt pipe. Since we have to use the short timeout (50 ms), we need to try several times. Read until we have completion signaled (0x0a for PowerShot, 0x0f for EOS, 0x0e for newer EOS) */ camera->pl->capture_step = 0; camera->pl->thumb_length = 0; camera->pl->image_length = 0; camera->pl->image_key = 0x81818181; while ( buf2[4] != 0x0f ) { /* Give the camera a long time ... (even covering bulb exposures) */ status = canon_usb_poll_interrupt_pipe ( camera, buf2, MAX_INTERRUPT_TRIES*CANON_FAST_TIMEOUT ); if ( status > 0x17 ) GP_DEBUG ( "canon_usb_capture_dialogue:" " interrupt read too long (length=%i)", status ); else if ( status <= 0 ) goto FAIL; switch ( buf2[4] ) { case 0x08: /* Thumbnail size */ if ( status != 0x17 ) gp_log (GP_LOG_ERROR, "canon/usb.c", "canon_usb_capture_dialogue:" " bogus length 0x%04x" " for thumbnail size packet", status ); camera->pl->thumb_length = le32atoh ( buf2+0x11 ); camera->pl->image_key = le32atoh ( buf2+0x0c ); GP_DEBUG ( "canon_usb_capture_dialogue: thumbnail size %ld, tag=0x%08lx", camera->pl->thumb_length, camera->pl->image_key ); camera->pl->transfer_mode &= ~REMOTE_CAPTURE_THUMB_TO_PC; /* Special case for class 6 (newer protocol) and the EOS 300D */ if ( camera->pl->transfer_mode == 0 && ( camera->pl->md->model == CANON_CLASS_6 || camera->pl->md->usb_product == 0x3084 ) ) goto EXIT; break; case 0x0c: /* Full image size */ if ( status != 0x17 ) gp_log (GP_LOG_ERROR, "canon/usb.c", "canon_usb_capture_dialogue:" " bogus length 0x%04x" " for full image size packet", status ); camera->pl->image_length = le32atoh ( buf2+0x11 ); camera->pl->image_key = le32atoh ( buf2+0x0c ); GP_DEBUG ( "canon_usb_capture_dialogue: full image size: 0x%08lx, tag=0x%08lx", camera->pl->image_length, camera->pl->image_key ); camera->pl->transfer_mode &= ~REMOTE_CAPTURE_FULL_TO_PC; /* Special case for class 6 (newer protocol) and the EOS 300D */ if (!camera->pl->secondary_image && camera->pl->transfer_mode == 0 && ( camera->pl->md->model == CANON_CLASS_6 || camera->pl->md->usb_product == 0x3084 ) ) goto EXIT; break; case 0x10: /* Secondary image size, key */ /* (only for RAW + JPEG modes) */ GP_DEBUG ( "canon_usb_capture_dialogue: " "secondary image descriptor received"); camera->pl->image_b_length = le32atoh ( buf2+0x11 ); camera->pl->image_b_key = le32atoh ( buf2+0x0c ); GP_DEBUG ( "canon_usb_capture_dialogue: secondary image size: 0x%08lx, tag=0x%08lx", camera->pl->image_b_length, camera->pl->image_b_key); camera->pl->transfer_mode &= ~REMOTE_CAPTURE_FULL_TO_PC; /* Special case for class 6 (newer protocol) and the EOS 300D */ if ( camera->pl->transfer_mode == 0 && ( camera->pl->md->model == CANON_CLASS_6 || camera->pl->md->usb_product == 0x3084 ) ) goto EXIT; break; case 0x0a: if ( buf2[12] == 0x1c ) { GP_DEBUG ( "canon_usb_capture_dialogue: first interrupt read" ); if ( camera->pl->capture_step == 0 ) camera->pl->capture_step++; else if ( camera->pl->capture_step == 2 ) { /* I think this may be a signal that this is the last shot that will fit on the CF card. */ GP_DEBUG ( "canon_usb_capture_dialogue: redundant \"1c\" code; full CF card?" ); camera->pl->capture_step = 1; } else { gp_log (GP_LOG_ERROR, "canon/usb.c", "canon_usb_capture_dialogue:" " first interrupt read out of sequence"); goto FAIL; } } else if ( buf2[12] == 0x1d ) { GP_DEBUG ( "canon_usb_capture_dialogue: second interrupt read (after image sizes)" ); if ( camera->pl->capture_step != 1 ) { gp_log (GP_LOG_ERROR, "canon/usb.c", "canon_usb_capture_dialogue:" " second interrupt read out of sequence"); goto FAIL; } camera->pl->capture_step++; /* PowerShot cameras end with this message */ if ( camera->pl->md->model != CANON_CLASS_4 ) goto EXIT; } else if ( buf2[12] == 0x0a ) { gp_log (GP_LOG_ERROR, "canon/usb.c", "canon_usb_capture_dialogue:" " photographic failure signaled, code = 0x%08x", le32atoh ( buf2+16 ) ); *photo_status = le32atoh ( buf2+16 ); goto FAIL2; } else { GP_DEBUG ( "canon_usb_capture_dialogue: unknown subcode 0x%08x in 0x0a interrupt read", le32atoh ( buf2+12 ) ); } break; case 0x0e: /* The image has been written to local * storage. Never seen if the transfer * mode didn't include any local * storage. */ GP_DEBUG ( "canon_usb_capture_dialogue:" " EOS flash write complete from interrupt read" ); if ( camera->pl->capture_step != 2 && camera->pl->md->model != CANON_CLASS_6 ) { gp_log (GP_LOG_ERROR, "canon/usb.c", "canon_usb_capture_dialogue:" " third EOS interrupt read out of sequence"); goto FAIL; } camera->pl->capture_step++; /* Canon SDK unlocks the keys here for EOS cameras. */ if ( canon_usb_unlock_keys ( camera, context ) < 0 ) { GP_DEBUG ( "canon_usb_capture_dialogue: couldn't unlock keys after capture, ignoring." ); /* goto FAIL; ... known to not work on EOS 10D and 20D. -Marcus */ } camera->pl->transfer_mode &= ~(REMOTE_CAPTURE_THUMB_TO_DRIVE|REMOTE_CAPTURE_FULL_TO_DRIVE); /* Special case for class 6 (newer protocol) and the EOS 300D */ if ( camera->pl->md->model == CANON_CLASS_6 || camera->pl->md->usb_product == 0x3083 ||/* EOS 10D */ camera->pl->md->usb_product == 0x3084 /* EOS 300D */ ) { GP_DEBUG ( "canon_usb_capture_dialogue:" " final interrupt read at step %i", camera->pl->capture_step ); goto EXIT; } break; case 0x0f: /* We allow this message as third or * fourth, since we may or may not be * writing to camera storage. */ if ( camera->pl->capture_step == 2 ) { /* Keys were never unlocked, as that message never came. */ if ( canon_usb_unlock_keys ( camera, context ) < 0 ) { GP_DEBUG ( "canon_usb_capture_dialogue: couldn't unlock keys after capture." ); goto FAIL; } } else if ( camera->pl->capture_step == 3 ) { GP_DEBUG ( "canon_usb_capture_dialogue:" " final EOS interrupt read" ); } else { gp_log (GP_LOG_ERROR, "canon/usb.c", "canon_usb_capture_dialogue:" " fourth EOS interrupt read out of sequence"); goto FAIL; } break; default: /* Unknown */ GP_DEBUG ( "canon_usb_capture_dialogue:" " unknown code 0x%02x in interrupt read", buf2[4] ); goto FAIL; } } EXIT: *return_length = 0x1c; return buffer; FAIL: /* Try to purge interrupt pipe, which was left in an unknown state. */ status = canon_usb_poll_interrupt_pipe ( camera, buf2, 1000 ); FAIL2: /* After "photographic error" is signaled, we know pipe is clean. */ canon_usb_unlock_keys ( camera, context ); /* Ignore status code, as we can't fix it anyway. */ return NULL; } /** * canon_usb_decode_status * @code: status code returned in offset 0x50 in the response * * Returns: a string with the error message, or NUL if status is OK. */ static char *canon_usb_decode_status ( int code ) { unsigned int i; static char message[100]; for ( i=0; ipl->md->model != CANON_CLASS_6 && canon_usb_cmd[i].num == CANON_USB_FUNCTION_CONTROL_CAMERA ) || ( camera->pl->md->model == CANON_CLASS_6 && canon_usb_cmd[i].num == CANON_USB_FUNCTION_CONTROL_CAMERA_2 ) ) { canon_subfunc = le32atoh (payload); j = 0; while (canon_usb_control_cmd[j].num != 0) { if (canon_usb_control_cmd[j].subcmd == canon_subfunc) { additional_read_bytes = canon_usb_control_cmd[j].additional_return_length; break; } j++; } if (canon_usb_control_cmd[j].num == 0) { GP_DEBUG("canon_usb_dialogue_full(): CONTROL_CAMERA called for ILLEGAL " "sub function %i! Aborting.", canon_subfunc); return NULL; } read_bytes += additional_read_bytes; GP_DEBUG ("canon_usb_dialogue_full() called with CONTROL_CAMERA, %s", canon_usb_control_cmd[j].description); if ( !strcmp ( "Set transfer mode", canon_usb_control_cmd[j].description ) ) { /* We need to remember the transfer mode, as with * newer cameras it changes capture * completion. */ camera->pl->transfer_mode = payload[8]; GP_DEBUG ( "canon_usb_dialogue_full() setting transfer mode to %d", camera->pl->transfer_mode ); } } if (read_bytes > sizeof (buffer)) { /* If this message is ever printed, chances are that you just added * a new command to canon_usb_cmd with a return_length greater than * all the others and did not update the declaration of 'buffer' in * this function. */ GP_DEBUG ("canon_usb_dialogue_full() " "read_bytes %i won't fit in buffer of size %li!", read_bytes, (long)sizeof (buffer)); return NULL; } if (payload_length) GP_LOG_DATA ((char *)payload, (long)payload_length, "Payload:"); if ((payload_length + 0x50) > sizeof (packet)) { gp_log (GP_LOG_DEBUG, "canon/usb.c", "canon_usb_dialogue:" " payload too big, won't fit into buffer (%i > %i)", (payload_length + 0x50), (int)sizeof (packet)); return NULL; } /* OK, we have now checked for all errors I could think of, * proceed with the actual work. */ /* construct packet to send to camera, including the three * commands, serial number and a payload if one has been supplied */ memset (packet, 0x00, sizeof (packet)); /* zero block */ htole32a (packet, 0x10 + payload_length); packet[0x40] = 0x2; packet[0x44] = cmd1; packet[0x47] = cmd2; htole32a (packet + 0x04, cmd3); if ( camera->pl->md->model == CANON_CLASS_6 ) { /* New style of protocol is picky about this byte. */ if ( cmd3 == 0x202 ) packet[0x46] = 0x20; else packet[0x46] = 0x10; } htole32a (packet + 0x4c, serial_code++); /* serial number */ htole32a (packet + 0x48, 0x10 + payload_length); msgsize = 0x50 + payload_length; /* TOTAL msg size */ if (payload_length > 0) memcpy (packet + 0x50, payload, payload_length); /* now send the packet to the camera */ status = gp_port_usb_msg_write (camera->port, msgsize > 1 ? 0x04 : 0x0c, 0x10, 0, (char *)packet, msgsize); if (status != msgsize) { GP_DEBUG ("canon_usb_dialogue_full: write failed! (returned %i)", status); return NULL; } /* and, if this canon_funct is known to generate a response from the camera, * read this response back. */ /* Even the new cameras use multiple reads sometimes, * e.g. "Get camera abilities". */ if ( camera->pl->md->model != CANON_CLASS_6 && read_bytes <= 0x400 ) { /* * Divide read_bytes into two parts. * * - The first read is for the length rounded down to a length * divisible by 0x40. The 32 bits starting at the beginning * of the buffer may contain the length information; if not, * the 32 bits starting at offset 0x48 will contain the * length information, which we check against the expected * length and log a warning if the two do not agree. We then * read the rest of the data, if any, in a single chunk. * * - The final read is for the remainder of the data. This * can never be longer than 0x37 bytes. * * Read two is optional. If the requested length is only * 0x40, only the first read will be issued. If the length is * divisible by 0x40, the second read will be skipped. * * We read like this because the Windows driver reads in two * operations, and some cameras (EOS D30 for example) seem to * not like it if we were to read read_bytes in a single read * instead. * * We check the size a safety measure: if we are mistaken * about the length of data returned for some command, we can * work around it with just a warning. The "get camera * abilities" command, in particular, seems to vary from * camera to camera. */ read_bytes1 = read_bytes - (read_bytes % 0x40); status = gp_port_read (camera->port, (char *)buffer, read_bytes1); if (status != read_bytes1) { if ( status >= 0 ) GP_DEBUG ("canon_usb_dialogue_full: read 1 of 0x%x bytes failed! (returned %i)", read_bytes1, status); else /* Error code */ GP_DEBUG ("canon_usb_dialogue_full: read 1 of 0x%x bytes failed! (%s)", read_bytes1, gp_result_as_string ( status ) ); return NULL; } if ( cmd3 != 0x202 ) { unsigned int reported_length = le32atoh (buffer); if ( reported_length == 0 ) { /* No length at start of packet. Did we read enough to * see the length later on? */ GP_DEBUG ( "canon_usb_dialogue_full: no length at start of packet." ); if ( read_bytes1 >= 0x50 ) { reported_length = le32atoh (buffer+0x48); GP_DEBUG ( "canon_usb_dialogue_full: got length from offset 0x48." ); } } GP_DEBUG ("canon_usb_dialogue_full: camera reports 0x%x bytes (0x%x total)", reported_length, reported_length+0x40 ); if ( reported_length > 0 && reported_length+0x40 != read_bytes ) { gp_log (GP_LOG_DEBUG, "canon/usb.c", "canon_usb_dialogue:" " expected 0x%x bytes, but camera reports 0x%x", read_bytes, reported_length+0x40 ); read_bytes = reported_length+0x40; } } read_bytes2 = read_bytes - read_bytes1; if ( read_bytes2 > 0 ) { status = gp_port_read (camera->port, (char *)buffer + read_bytes1, read_bytes2); if (status != read_bytes2) { if ( status >= 0 ) GP_DEBUG ("canon_usb_dialogue_full: read 2 of %i bytes failed! (returned %i)", read_bytes2, status); else /* Error code */ GP_DEBUG ("canon_usb_dialogue_full: read 2 of %i bytes failed! (%s)", read_bytes2, gp_result_as_string ( status ) ); return NULL; } } } else { /* Newer protocol: these cameras allow (and some * demand) the host software to read the entire * response in one operation. */ status = gp_port_read (camera->port, (char *)buffer, read_bytes ); if ( status != (int)read_bytes ) { if ( status >= 0 ) GP_DEBUG ("canon_usb_dialogue_full: single read of %i bytes failed! (returned %i)", read_bytes, status); else /* Error code */ GP_DEBUG ("canon_usb_dialogue_full: single read of %i bytes failed! (%s)", read_bytes, gp_result_as_string ( status ) ); return NULL; } } msg = canon_usb_decode_status ( le32atoh ( buffer+0x50 ) ); if ( msg != NULL ) { GP_DEBUG ( "canon_usb_dialogue_full: camera status \"%s\"" " in response to command 0x%x 0x%x 0x%x (%s)", msg, cmd1, cmd2, cmd3, funct_descr ); return NULL; } if (return_length) *return_length = read_bytes; return buffer; } /** * canon_usb_dialogue: * @camera: the Camera to work with * @canon_funct: integer constant that identifies function we are execute * @return_length: number of bytes to read from the camera as response * @payload: data we are to send to the camera * @payload_length: length of #payload * * USB version of the #canon_serial_dialogue function. * * We construct a packet with the known command values (cmd{1,2,3}) of * the function requested (#canon_funct) to the camera. If #return_length * exists for this function, we read #return_length bytes back from the * camera and return this camera response to the caller. * * Example : * * This function gets called with * #canon_funct = %CANON_USB_FUNCTION_SET_TIME * #payload = already constructed payload with the new time * we construct a complete command packet and send this to the camera. * The canon_usb_cmdstruct indicates that command * CANON_USB_FUNCTION_SET_TIME returns four bytes, so we read those * four bytes into our buffer and return a pointer to the buffer to * the caller. * * This should probably be changed so that the caller supplies a * unsigned char ** which can be pointed to our buffer and an int * returned with GP_OK or some error code. * * Returns: a char * that points to the data read from the camera (or * NULL on failure), and sets what @return_length points to to the number * of bytes read. * */ unsigned char * canon_usb_dialogue (Camera *camera, canonCommandIndex canon_funct, unsigned int *return_length, const unsigned char *payload, unsigned int payload_length) { unsigned char *buffer; buffer = canon_usb_dialogue_full (camera, canon_funct, return_length, payload, payload_length); /* Remove the packet header from the response */ if (return_length) *return_length = *return_length - 0x50; if (buffer) return buffer + 0x50; else return NULL; } /** * canon_usb_long_dialogue: * @camera: the Camera to work with * @canon_funct: integer constant that identifies function we are execute * @data: Pointer to pointer to allocated memory holding the data returned from the camera * @data_length: Pointer to where you want the number of bytes read from the camera * @max_data_size: Max realistic data size so that we can abort if something goes wrong * @payload: data we are to send to the camera * @payload_length: length of #payload * @display_status: Whether you want progress bar for this operation or not * @context: context for error reporting * * This function is used to invoke camera commands which return L (long) data. * It calls #canon_usb_dialogue(), if it gets a good response it will malloc() * memory and read the entire returned data into this malloc'd memory and store * a pointer to the malloc'd memory in 'data'. * * Returns: gphoto2 error code * */ int canon_usb_long_dialogue (Camera *camera, canonCommandIndex canon_funct, unsigned char **data, unsigned int *data_length, unsigned int max_data_size, const unsigned char *payload, unsigned int payload_length, int display_status, GPContext *context) { int bytes_read; unsigned int dialogue_len; unsigned int total_data_size = 0, bytes_received = 0, read_bytes = camera->pl->xfer_length; unsigned char *lpacket; /* "length packet" */ unsigned int id = 0; /* indicate there is no data if we bail out somewhere */ *data_length = 0; GP_DEBUG ("canon_usb_long_dialogue() function %i, payload = %i bytes", canon_funct, payload_length); /* Call canon_usb_dialogue_full(), this will not return any data "the usual way" * but after this we read 0x40 bytes from the USB port, the int at pos 6 in * the returned data holds the total number of bytes we are to read. */ lpacket = canon_usb_dialogue_full (camera, canon_funct, &dialogue_len, payload, payload_length); if (lpacket == NULL) { GP_DEBUG ("canon_usb_long_dialogue: canon_usb_dialogue returned error!"); return GP_ERROR_OS_FAILURE; } /* This check should not be needed since we check the return of canon_usb_dialogue() * above, but as the saying goes: better safe than sorry. */ if (dialogue_len != 0x40) { GP_DEBUG ("canon_usb_long_dialogue: canon_usb_dialogue " "returned %i bytes, not the length " "we expected (%i)!. Aborting.", dialogue_len, 0x40); return GP_ERROR_CORRUPTED_DATA; } total_data_size = le32atoh (lpacket + 0x6); if (display_status) id = gp_context_progress_start (context, total_data_size, _("Receiving data...")); if (max_data_size && (total_data_size > max_data_size)) { GP_DEBUG ("canon_usb_long_dialogue: ERROR: Packet of size %i is too big " "(max reasonable size specified is %i)", total_data_size, max_data_size); return GP_ERROR_CORRUPTED_DATA; } *data = malloc (total_data_size); if (!*data) { GP_DEBUG ("canon_usb_long_dialogue: " "ERROR: Could not allocate %i bytes of memory", total_data_size); return GP_ERROR_NO_MEMORY; } bytes_received = 0; while (bytes_received < total_data_size) { if ((total_data_size - bytes_received) > camera->pl->xfer_length ) /* Limit max transfer length */ read_bytes = camera->pl->xfer_length; else if ((total_data_size - bytes_received) > 0x040 && camera->pl->md->model != CANON_CLASS_6 ) /* Round longer transfers down to nearest 0x40 */ read_bytes = (total_data_size - bytes_received) / 0x40 * 0x40; else /* Final transfer; use true length */ read_bytes = (total_data_size - bytes_received); GP_DEBUG ("canon_usb_long_dialogue: total_data_size = %i, " "bytes_received = %i, read_bytes = %i (0x%x)", total_data_size, bytes_received, read_bytes, read_bytes); bytes_read = gp_port_read (camera->port, (char *)*data + bytes_received, read_bytes); if (bytes_read < 1) { GP_DEBUG ("canon_usb_long_dialogue: gp_port_read() returned error (%i) or no data", bytes_read); free (*data); *data = NULL; /* here, it is an error to get 0 bytes from gp_port_read() * too, but 0 is GP_OK so if bytes_read is 0 return GP_ERROR_CORRUPTED_DATA * instead, otherwise return bytes_read since that is the * error code returned by gp_port_read() */ if (bytes_read < 0) return bytes_read; else return GP_ERROR_CORRUPTED_DATA; } else if ((unsigned int)bytes_read < read_bytes) GP_DEBUG ("canon_usb_long_dialogue: WARNING: gp_port_read() resulted in short read " "(returned %i bytes, expected %i)", bytes_read, read_bytes); bytes_received += bytes_read; if (display_status) gp_context_progress_update (context, id, bytes_received); } if (display_status) gp_context_progress_stop (context, id); *data_length = total_data_size; return GP_OK; } /** * canon_usb_get_file: * @camera: camera to use * @name: name of file to fetch * @data: to receive image data * @length: to receive length of image data * @context: context for error reporting * * Get a file from a USB-connected Canon camera. * * Returns: gphoto2 error code, length in @length, and image data in @data. * */ int canon_usb_get_file (Camera *camera, const char *name, unsigned char **data, unsigned int *length, GPContext *context) { char payload[100]; int payload_length, res, offset; GP_DEBUG ("canon_usb_get_file() called for file '%s'", name); /* Construct payload containing file name, buffer size and * function request. See the file Protocol.xml in the doc/ * directory for more information. */ if ( camera->pl->md->model == CANON_CLASS_6 ) { offset = 4; if ( offset + strlen (name) > sizeof (payload) - 2 ) { GP_DEBUG ("canon_usb_get_file: ERROR: " "Supplied file name '%s' does not fit in payload buffer.", name); return GP_ERROR_BAD_PARAMETERS; } htole32a (payload, 0x0); /* get picture */ strncpy ( payload+offset, name, sizeof(payload)-offset-1 ); payload[offset + strlen (payload+offset)] = 0; payload_length = offset + strlen (payload+offset) + 2; GP_DEBUG ( "canon_usb_get_file: payload 0x%08x:%s", le32atoh(payload), payload+offset ); } else { offset = 8; if ( offset + strlen (name) > sizeof (payload) - 1 ) { GP_DEBUG ("canon_usb_get_file: ERROR: " "Supplied file name '%s' does not fit in payload buffer.", name); return GP_ERROR_BAD_PARAMETERS; } htole32a (payload, 0x0); /* get picture */ htole32a (payload + 0x4, camera->pl->xfer_length); strncpy ( payload+offset, name, sizeof(payload)-offset ); payload_length = offset + strlen (payload+offset) + 1; GP_DEBUG ( "canon_usb_get_file: payload 0x%08x:0x%08x:%s", le32atoh(payload), le32atoh(payload+4), payload+offset ); } /* the 1 is to show status */ res = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_GET_FILE, data, length, camera->pl->md->max_movie_size, (unsigned char *)payload, payload_length, 1, context); if (res != GP_OK) { GP_DEBUG ("canon_usb_get_file: canon_usb_long_dialogue() " "returned error (%i).", res); return res; } return GP_OK; } /** * canon_usb_get_thumbnail: * @camera: camera to use * @name: name of thumbnail to fetch * @data: to receive image data * @length: to receive length of image data * @context: context for error reporting * * Gets a thumbnail, including EXIF info, from a USB_connected Canon * camera. * * Returns: gphoto2 error code, length in @length, and image data in * @data. * */ int canon_usb_get_thumbnail (Camera *camera, const char *name, unsigned char **data, unsigned int *length, GPContext *context) { char payload[100]; unsigned int payload_length; int res, offset; GP_DEBUG ("canon_usb_get_thumbnail() called for file '%s'", name); if ( camera->pl->md->model == CANON_CLASS_6 ) { /* Construct payload containing file name and function * request. See the file Protocol.xml in directory * camlibs/canon/doc for more information. */ offset = 4; if ( offset + strlen (name) > sizeof (payload) - 2 ) { GP_DEBUG ("canon_usb_get_thumbnail: ERROR: " "Supplied file name '%s' does not fit in payload buffer.", name); return GP_ERROR_BAD_PARAMETERS; } strncpy ( payload+offset, name, sizeof(payload)-offset-1 ); payload[offset + strlen (payload+offset)] = 0; payload_length = offset + strlen (payload+offset) + 2; htole32a (payload, 0x1); /* get thumbnail */ GP_DEBUG ( "canon_usb_get_thumbnail: payload 0x%08x:%s", le32atoh(payload), payload+offset ); } else { /* Construct payload containing file name, buffer size * and function request. See the file Protocol.xml in * directory camlibs/canon/doc for more information. */ offset = 8; if ( offset + strlen (name) > sizeof (payload) - 1 ) { GP_DEBUG ("canon_usb_get_thumbnail: ERROR: " "Supplied file name '%s' does not fit in payload buffer.", name); return GP_ERROR_BAD_PARAMETERS; } htole32a (payload, 0x1); /* get thumbnail */ htole32a (payload + 0x4, camera->pl->xfer_length); strncpy ( payload+offset, name, sizeof(payload)-offset ); payload_length = offset + strlen (payload+offset) + 1; GP_DEBUG ( "canon_usb_get_thumbnail: payload 0x%08x:0x%08x:%s", le32atoh(payload), le32atoh(payload+4), payload+offset ); } /* 0 is to not show status */ res = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_GET_FILE, data, length, camera->pl->md->max_thumbnail_size, (unsigned char *)payload, payload_length, 0, context); if (res != GP_OK) { GP_DEBUG ("canon_usb_get_thumbnail: canon_usb_long_dialogue() " "returned error (%i).", res); return res; } return GP_OK; } /** * canon_usb_get_captured_image: * @camera: camera to lock keys on * @key: index of image to fetch, returned from canon_usb_capture_dialogue() * @data: to receive image data * @length: to receive length of image data * @context: context for error reporting * * Gets the just-captured image from a USB-connected Canon * camera. This function must be called soon after an image capture, * and needs the image key returned by canon_usb_capture_dialogue(). * * Returns: gphoto2 error code, length in @length, and image data in @data. * */ int canon_usb_get_captured_image (Camera *camera, const int key, unsigned char **data, unsigned int *length, GPContext *context) { unsigned char payload[16]; int payload_length = 16, result; GP_DEBUG ("canon_usb_get_captured_image() called"); /* Construct payload containing buffer size and function request. * See the file Protocol in this directory for more information. */ htole32a (payload, 0x0); /* always zero */ htole32a (payload + 0x4, camera->pl->xfer_length); htole32a (payload + 0x8, CANON_DOWNLOAD_FULL); htole32a (payload + 0xc, key); /* the 1 is to show status */ if ( camera->pl->md->model == CANON_CLASS_6 ) result = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_RETRIEVE_CAPTURE_2, data, length, 0, payload, payload_length, 1, context); else result = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_RETRIEVE_CAPTURE, data, length, 0, payload, payload_length, 1, context); if (result != GP_OK) { GP_DEBUG ("canon_usb_get_captured_image: canon_usb_long_dialogue() " "returned error (%i).", result); return result; } return GP_OK; } /** * canon_usb_get_captured_secondary_image: * @camera: camera to work on * @key: index of image to fetch, returned from canon_usb_capture_dialogue() * @data: to receive image data * @length: to receive length of image data * @context: context for error reporting * * Gets the just-captured image from a USB-connected Canon * camera. This function must be called soon after an image capture, * and needs the image key returned by canon_usb_capture_dialogue(). * This function is only used for "secondary images," e.g., the JPEGs * downloaded when the camera's capture image format mode is set to "RAW + JPEG" * * Returns: gphoto2 error code, length in @length, and image data in @data. * */ int canon_usb_get_captured_secondary_image (Camera *camera, const int key, unsigned char **data, unsigned int *length, GPContext *context) { unsigned char payload[16]; int payload_length = 16, result; GP_DEBUG ("canon_usb_get_captured_secondary_image() called"); /* Construct payload containing buffer size and function request. * See the file Protocol in this directory for more information. */ htole32a (payload, 0x0); /* always zero */ htole32a (payload + 0x4, camera->pl->xfer_length); htole32a (payload + 0x8, CANON_DOWNLOAD_SECONDARY); htole32a (payload + 0xc, key); /* the 1 is to show status */ if ( camera->pl->md->model == CANON_CLASS_6 ) result = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_RETRIEVE_CAPTURE_2, data, length, 0, payload, payload_length, 1, context); else result = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_RETRIEVE_CAPTURE, data, length, 0, payload, payload_length, 1, context); if (result != GP_OK) { GP_DEBUG ("canon_usb_get_captured_secondary_image: canon_usb_long_dialogue() " "returned error (%i).", result); return result; } return GP_OK; } /** * canon_usb_get_captured_thumbnail: * @camera: camera to lock keys on * @key: index of image to fetch, returned from canon_usb_capture_dialog() * @data: to receive thumbnail data * @length: to receive length of thumbnail data * @context: context for error reporting * * Gets the just-captured thumbnail from a USB-connected Canon * camera. This function must be called after a remote image capture, * before leaving remote capture mode, and needs the image key * returned by canon_usb_capture_dialog(). * * Returns: gphoto2 error code, length in @length, and thumbnail data in @data. * */ int canon_usb_get_captured_thumbnail (Camera *camera, const int key, unsigned char **data, unsigned int *length, GPContext *context) { unsigned char payload[16]; int payload_length = 16, result; GP_DEBUG ("canon_usb_get_captured_thumbnail() called"); /* Construct payload containing buffer size and function request. * See the file Protocol in this directory for more information. */ htole32a (payload, 0x0); /* get picture */ htole32a (payload + 0x4, camera->pl->xfer_length); htole32a (payload + 0x8, CANON_DOWNLOAD_THUMB); htole32a (payload + 0xc, key); /* the 1 is to show status */ if ( camera->pl->md->model == CANON_CLASS_6 ) result = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_RETRIEVE_CAPTURE_2, data, length, 0, payload, payload_length, 1, context); else result = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_RETRIEVE_CAPTURE, data, length, 0, payload, payload_length, 1, context); if (result != GP_OK) { GP_DEBUG ("canon_usb_get_captured_thumbnail: canon_usb_long_dialogue() " "returned error (%i).", result); return result; } return GP_OK; } /** * canon_usb_set_file_time: * @camera: camera to unlock keys on * @camera_filename: Full pathname to use on camera * @time: Unix time to store in camera directory * @context: context for error reporting * * Finishes the upload of an image to a Canon camera. Must be called * after the last data transfer completes. * * Returns: gphoto2 error code * */ int canon_usb_set_file_time ( Camera *camera, char *camera_filename, time_t time, GPContext *context) { unsigned char *result_buffer; unsigned int payload_size = 0x4 + strlen(camera_filename) + 2, bytes_read; unsigned char *payload = malloc ( payload_size ); if ( payload == NULL ) { GP_DEBUG ( "canon_usb_set_file_time:" " failed to allocate payload block." ); gp_context_error(context, _("Out of memory: %d bytes needed."), payload_size ); return GP_ERROR_NO_MEMORY; } memset ( payload, 0, payload_size ); strncpy ( (char *)payload + 0x4, camera_filename, strlen(camera_filename) ); htole32a ( payload, time ); /* Load specified time for camera directory. */ result_buffer = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_SET_FILE_TIME, &bytes_read, payload, payload_size ); free ( payload ); if ( result_buffer == NULL ) { GP_DEBUG ( "canon_usb_set_file_time:" " dialogue failed." ); return GP_ERROR_OS_FAILURE; } return GP_OK; } /** * canon_usb_set_file_attributes: * @camera: camera to initialize * @attr_bits: bits to write in the camera directory entry * @pathname: pathname of file whose attributes are to be changed. * @context: context for error reporting * * Changes the attribute bits in a specified directory entry. * * Returns: gphoto2 error code * */ int canon_usb_set_file_attributes (Camera *camera, unsigned int attr_bits, const char *dir, const char *file, GPContext *context) { /* Pathname string plus 32-bit parameter plus two NULs. */ unsigned int payload_length = 4 + strlen (dir) + 1 + strlen (file) + 2; unsigned char *payload = calloc ( payload_length, sizeof ( unsigned char ) ); unsigned int bytes_read; unsigned char *res; GP_DEBUG ( "canon_usb_set_file_attributes()" ); GP_DEBUG ( "canon_usb_set_file_attributes(): payload is %d=0x%x bytes; string length is %d=0x%x", payload_length, payload_length, (int)strlen(dir), (int)strlen(dir) ); /* build payload : * * directory 0x00 file 0x00 0x00 * * The attribute bits will be a 32-bit little-endian integer. */ memset (payload, 0x00, payload_length); memcpy (payload + 4, dir, strlen (dir)); memcpy (payload + 4 + strlen(dir) + 1, file, strlen (file) ); htole32a ( payload, (unsigned long)attr_bits ); if ( camera->pl->md->model == CANON_CLASS_6 ) res = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_SET_ATTR_2, &bytes_read, payload, payload_length ); else res = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_SET_ATTR, &bytes_read, payload, payload_length ); if ( res == NULL ) { gp_context_error (context, _("canon_usb_set_file_attributes: " "canon_usb_dialogue failed")); free ( payload ); return GP_ERROR_OS_FAILURE; } else if ( le32atoh ( res+0x50 ) != 0 ) { gp_context_message (context, _("Warning in canon_usb_set_file_attributes: " "canon_usb_dialogue returned error status 0x%08x from camera"), le32atoh ( res+0x50 ) ); } free ( payload ); return GP_OK; } /** * canon_usb_put_file: * @camera: camera to lock keys on * @file: CameraFile object to upload * @destname: name file should have on camera * @destpath: pathname for directory to put file * @context: context for error reporting * * Uploads file to USB camera * * Bugs: * at the moment, files bigger than 65572-length(filename), while being * correctly uploaded, cause the camera to not accept any more uploads. * Smaller files work fine. * s10sh (http://www.kyuzz.org/antirez/s10sh.html) has the same problem. * The problem only appears when USB deinitialisation and initialisation * is performed between uploads. You can call this function more than * once with big files during one session without encountering the problem * described. * * Returns: gphoto2 error code * */ #ifndef CANON_EXPERIMENTAL_UPLOAD int canon_usb_put_file (Camera __unused__ *camera, CameraFile __unused__ *file, const char __unused__ *filename, const char __unused__ *destname, const char __unused__ *destpath, GPContext __unused__ *context) { return GP_ERROR_NOT_SUPPORTED; } #else /* else ifdef CANON_EXPERIMENTAL_UPLOAD */ int canon_usb_put_file (Camera *camera, CameraFile *file, const char *xfilename, const char *destname, const char *destpath, GPContext *context) { long int packet_size = USB_BULK_WRITE_SIZE; char buffer[0x80]; long int len1,len2; int status; long int offs = 0; char filename[256]; int filename_len; char *data; char *newdata = NULL; long int size; /* Total size of file to upload */ FILE *fi; const char *srcname; char *packet; struct stat filestat; /* To get time from Unix file */ GP_DEBUG ( "canon_put_file_usb()" ); sprintf(filename, "%s%s", destpath, destname); filename_len = strlen(filename); packet = malloc(packet_size + filename_len + 0x5d); if(!packet) { int len = packet_size + filename_len + 0x5d; GP_DEBUG ("canon_put_file_usb: Couldn't reserve %d bytes of memory", len); gp_context_error(context, _("Out of memory: %d bytes needed."), len); return GP_ERROR_NO_MEMORY; } GP_DEBUG ( "canon_put_file_usb: converting file name" ); status = gp_file_get_name (file, &srcname) if (status < GP_OK) { free (packet); return status; } /* Open input file and read all its data into a buffer. */ if(!gp_file_get_data_and_size (file, (const char **)&data, &size)) { fi = fopen(srcname, "rb"); if(!fi) { gp_context_error(context, _("Couldn't read from file \"%s\""), srcname); free(packet); return GP_ERROR_OS_FAILURE; } fstat ( fileno(fi), &filestat ); fseek(fi, 0, SEEK_END); size = ftell(fi); fseek(fi, 0, SEEK_SET); newdata = data = malloc(size); if(!newdata) { gp_context_error(context, _("Out of memory: %ld bytes needed."), size); free(packet); return GP_ERROR_NO_MEMORY; } fread(newdata, size, 1, fi); fclose(fi); } GP_DEBUG ( "canon_put_file_usb:" " finished reading file, %ld bytes (0x%lx)", size, size ); /* Take the buffer and send it to the camera, breaking it into * packets of suitable size. */ while(offs < size) { len2 = packet_size; if(size - offs < len2) len2 = size - offs; len1 = len2 + 0x1c + filename_len + 1; GP_DEBUG ( "canon_put_file_usb: len1=%lx, len2=%lx", len1, len2 ); memset(packet, 0, 0x40); packet[4]=3; packet[5]=2; htole32a ( packet + 0x6, len1 + 0x40 ); htole32a (packet + 0x4c, serial_code++); /* Serial number */ /* now send the packet to the camera */ status = gp_port_usb_msg_write (camera->port, 0x04, 0x10, 0, packet, 0x40); if (status != 0x40) { GP_DEBUG ("canon_put_file_usb: write 1 failed! (returned %i)", status); gp_context_error(context, _("File upload failed.")); if(newdata) free(newdata); free(packet); return GP_ERROR_CORRUPTED_DATA; } status = gp_port_read (camera->port, buffer, 0x40); if (status != 0x40) { GP_DEBUG ("canon_put_file_usb: read 1 failed! " "(returned %i, expected %i)", status, 0x40); gp_context_error(context, _("File upload failed.")); if(newdata) free(newdata); free(packet); return GP_ERROR_CORRUPTED_DATA; } memset(packet, 0, len1 + 0x40); /* Length of this block (minus 0x40) */ htole32a ( packet, len1 ); /* Fill in codes */ packet[0x04] = 3; packet[0x05] = 4; packet[0x40] = 2; packet[0x44] = 3; packet[0x47] = 0x11; /* Copy of bytes 0:3 */ htole32a ( packet+0x48, len1 ); /* Serial number */ htole32a (packet + 0x4c, serial_code++); htole32a ( packet+0x54, offs ); /* Max length of data block */ htole32a ( packet+0x58, len2 ); strcpy(&packet[0x5c], filename); memcpy(&packet[0x5c+filename_len+1], &data[offs], len2); status = gp_port_write (camera->port, packet, len1+0x40); if (status != len1+0x40) { GP_DEBUG ("canon_put_file_usb: write 2 failed! " "(returned %i, expected %li)", status, len1+0x40); gp_context_error(context, _("File upload failed.")); if(newdata) free(newdata); free(packet); if ( status < 0 ) return GP_ERROR_OS_FAILURE; else return GP_ERROR_CORRUPTED_DATA; } status = gp_port_read (camera->port, buffer, 0x40); if (status != 0x40) { GP_DEBUG ("canon_put_file_usb: read 2 failed! " "(returned %i, expected %i)", status, 0x5c); gp_context_error(context, _("File upload failed.")); if(newdata) free(newdata); free(packet); if ( status < 0 ) return GP_ERROR_OS_FAILURE; else return GP_ERROR_CORRUPTED_DATA; } status = gp_port_read (camera->port, buffer, 0x1c); if (status != 0x1c) { GP_DEBUG ("canon_put_file_usb: read 3 failed! " "(returned %i, expected %i)", status, 0x5c); gp_context_error(context, _("File upload failed.")); if(newdata) free(newdata); free(packet); if ( status < 0 ) return GP_ERROR_OS_FAILURE; else return GP_ERROR_CORRUPTED_DATA; } else { char *msg = canon_usb_decode_status ( le32atoh ( buffer+0x50 ) ); if ( msg != NULL ) { GP_DEBUG ( "canon_put_file_usb: camera status \"%s\" during upload", msg ); } } offs += len2; } /* Now we finish the job. */ canon_usb_set_file_time ( camera, filename, filestat.st_mtime, context ); canon_usb_set_file_attributes ( camera, (unsigned int)0, destpath, destname, context ); if(size > 65572-filename_len) { gp_context_message(context, _("File was too big. You may have to turn your camera off and back on before uploading more files.")); } if(newdata) free(newdata); free(packet); return GP_OK; } #endif /* CANON_EXPERIMENTAL_UPLOAD */ /** * canon_usb_get_dirents: * @camera: camera to initialize * @dirent_data: to receive directory data * @dirents_length: to receive length of @dirent_data * @path: pathname of directory to list * @context: context for error reporting * * Lists a directory. * * Returns: gphoto2 error code * */ int canon_usb_get_dirents (Camera *camera, unsigned char **dirent_data, unsigned int *dirents_length, const char *path, GPContext *context) { unsigned char payload[100]; unsigned int payload_length; int res; *dirent_data = NULL; /* build payload : * * 0x00 dirname 0x00 0x00 0x00 * * the 0x00 before dirname means 'no recursion' * NOTE: the first 0x00 after dirname is the NULL byte terminating * the string, so payload_length is strlen(dirname) + 4 */ if (strlen (path) + 4 > sizeof (payload)) { GP_DEBUG ("canon_usb_get_dirents: " "Path '%s' too long (%li), won't fit in payload buffer.", path, (long)strlen (path)); gp_context_error (context, _("canon_usb_get_dirents: " "Couldn't fit payload into buffer, " "'%.96s' (truncated) too long."), path); return GP_ERROR_BAD_PARAMETERS; } memset (payload, 0x00, sizeof (payload)); memcpy (payload + 1, path, strlen (path)); payload_length = strlen (path) + 4; /* 1024 * 1024 is max realistic data size, out of the blue. * 0 is to not show progress status */ res = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_GET_DIRENT, dirent_data, dirents_length, 1024 * 1024, payload, payload_length, 0, context); if (res != GP_OK) { gp_context_error (context, _("canon_usb_get_dirents: " "canon_usb_long_dialogue failed to fetch direntries, " "returned %i"), res); return res; } return GP_OK; } /** * canon_usb_list_all_dirs: * @camera: camera to initialize * @dirent_data: to receive directory data * @dirents_length: to receive length of @dirent_data * @context: context for error reporting * * Lists all directories on camera. This can be executed before and * after a "capture image" operation. By comparing the results, we can * see where the new image went. Unfortunately, this seems to be the * only way to find out, as Canon doesn't return that information from * a capture command. * * Returns: gphoto2 error code * */ int canon_usb_list_all_dirs (Camera *camera, unsigned char **dirent_data, unsigned int *dirents_length, GPContext *context) { unsigned char payload[100]; unsigned int payload_length; char *disk_name = canon_int_get_disk_name (camera, context); int res; *dirent_data = NULL; if (!disk_name) /* should only happen on IO error */ return GP_ERROR_IO; /* build payload : * * 0x0f dirname 0x00 0x00 0x00 * * the 0x0f before dirname means 'recurse to level 15', which * should get all the directories on the camera. * NOTE: the first 0x00 after dirname is the NULL byte terminating * the string, so payload_length is strlen(dirname) + 4 */ if (strlen (disk_name) + 4 > sizeof (payload)) { GP_DEBUG ("canon_usb_list_all_dirs: " "Path '%s' too long (%li), won't fit in payload buffer.", disk_name, (long)strlen (disk_name)); gp_context_error (context, _("canon_usb_list_all_dirs: " "Couldn't fit payload into buffer, " "'%.96s' (truncated) too long."), disk_name); return GP_ERROR_BAD_PARAMETERS; } memset (payload, 0x00, sizeof (payload)); memcpy (payload + 1, disk_name, strlen (disk_name)); payload[0] = 0x0f; /* Recursion depth */ payload_length = strlen (disk_name) + 4; free ( disk_name ); /* Give no max data size. * 0 is to not show progress status */ res = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_GET_DIRENT, (unsigned char **)dirent_data, dirents_length, 0, payload, payload_length, 0, context); if (res != GP_OK) { gp_context_error (context, _("canon_usb_list_all_dirs: " "canon_usb_long_dialogue failed to fetch direntries, " "returned %i"), res); return res; } return GP_OK; } /** * canon_usb_ready: * @camera: camera to check * * Checks whether camera is available for communication. * * Returns: gphoto2 error code * GP_OK if camera is ready * */ int canon_usb_ready (Camera *camera, GPContext __unused__ *context) { unsigned char *msg; unsigned int len; GP_DEBUG ("canon_usb_ready()"); /* "Identify camera" seems to be a command compatible with all * cameras, and one that doesn't change the camera state. */ msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_IDENTIFY_CAMERA, &len, NULL, 0); if ( msg == NULL ) return GP_ERROR_OS_FAILURE; return GP_OK; } /** * canon_usb_identify: * @camera: camera to identify * @context: context for error reporting * GP_ERROR_MODEL_NOT_FOUND if not found in our list; * this is a code inconsistency. * GP_OK otherwise * * Identify a supported camera by looking through our list of models. * * Returns: gphoto2 error code * */ static int canon_usb_identify (Camera *camera, GPContext *context) { CameraAbilities a; int i, res; res = gp_camera_get_abilities (camera, &a); if (res != GP_OK) { GP_DEBUG ("canon_usb_identify: Could not get camera abilities: %s", gp_result_as_string (res)); return res; } /* ahem. isn't this a tautology? */ /* Formerly, we matched strings here. * Now we just match USB Vendor/Product IDs to work around * the colon/space problem. (FIXME) */ for (i = 0; models[i].id_str != NULL; i++) { if (models[i].usb_vendor && models[i].usb_product && (a.usb_vendor == models[i].usb_vendor) && (a.usb_product == models[i].usb_product)) { GP_DEBUG ("canon_usb_identify: USB ID match 0x%04x:0x%04x (model name \"%s\")", models[i].usb_vendor, models[i].usb_product, models[i].id_str); gp_context_status (context, _("Detected a '%s'."), models[i].id_str); camera->pl->md = (struct canonCamModelData *) &models[i]; return GP_OK; } } gp_context_error (context, _("Name \"%s\" from camera does not match any known camera"), a.model); return GP_ERROR_MODEL_NOT_FOUND; } /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/canon/serial.h0000644000175000001440000002002612610415530014652 00000000000000/**************************************************************************** * * File: serial.h * ****************************************************************************/ #ifndef _SERIAL_H #define _SERIAL_H /**************************************************************************** * * prototypes * ****************************************************************************/ int canon_serial_init(Camera *camera); void canon_serial_error_type(Camera *camera); unsigned char * canon_serial_dialogue (Camera *camera, GPContext *context, unsigned char mtype, unsigned char dir, unsigned int *len, ...); unsigned char *canon_serial_get_file (Camera *camera, const char *name, unsigned int *length, GPContext *context); int canon_serial_put_file (Camera *camera, CameraFile *file, const char *filename, const char *destname, const char *destpath, GPContext *context); int canon_serial_get_dirents (Camera *camera, unsigned char **dirent_data, unsigned int *dirents_length, const char *path, GPContext *context); int canon_serial_ready (Camera *camera, GPContext *context); int canon_serial_get_thumbnail (Camera *camera, const char *name, unsigned char **data, unsigned int *length, GPContext *context); /** * MAX_TRIES * * Maximum number of retries for a serial send operation. * */ #define MAX_TRIES 10 /** * USLEEP1 * * Number of microseconds to wait between characters when trying to * contact the camera by sending "U" characters. Currently zero * (i.e. no pause between characters). * */ #define USLEEP1 0 /** * USLEEP2 * * Number of microseconds to wait between characters under all other * circumstances. Currently 1. * */ #define USLEEP2 1 /** * HDR_FIXED_LEN * * Length of fixed part of header for uploading a file. * */ #define HDR_FIXED_LEN 30 /** * DATA_BLOCK * * Maximum length of a data block to upload through the serial port. * */ #define DATA_BLOCK 1536 /* Defines for error handling */ /* #define NOERROR 0 */ /* #define ERROR_RECEIVED 1 */ /* #define ERROR_ADDRESSED 2 */ /* #define FATAL_ERROR 3 */ /* #define ERROR_LOWBATT 4 */ /** * canonSerialErrorCode: * @NOERROR: No error * @ERROR_RECEIVED: Packet length doesn't match received packet * @ERROR_ADDRESSED: Problem receiving EOT * @FATAL_ERROR: Fatal error * @ERROR_LOWBATT: Battery is low * * Used within serial code to signal various error conditions. * */ #undef NOERROR /* happens in windows. is also 0 */ typedef enum { NOERROR = 0, ERROR_RECEIVED = 1, ERROR_ADDRESSED = 2, FATAL_ERROR = 3, ERROR_LOWBATT = 4 } canonSerialErrorCode; /* ------------------------- Frame-level processing ------------------------- */ /* #define CANON_FBEG 0xc0 */ /* #define CANON_FEND 0xc1 */ /* #define CANON_ESC 0x7e */ /* #define CANON_XOR 0x20 */ /** * canonSerialFramingByte: * @CANON_FBEG: Beginning of frame * @CANON_FEND: End of frame * @CANON_ESC: XOR next byte with 0x20 * @CANON_XOR: value to use with %CANON_ESC * * Enumeration of all "special" byte codes on the frame level. * */ typedef enum { CANON_FBEG = 0xc0, /* Beginning of frame */ CANON_FEND = 0xc1, /* End of frame */ CANON_ESC = 0x7e, /* XOR next byte with 0x20 */ CANON_XOR = 0x20 } canonSerialFramingByte; /* ------------------------ Packet-level processing ------------------------- */ /** * MAX_PKT_PAYLOAD * * Maximum size of a packet payload; used to allocate buffers. * */ #define MAX_PKT_PAYLOAD 65535 /* #define MAX_PKT_SIZE (MAX_PKT_PAYLOAD+4) */ /* #define PKT_HDR_LEN 4 */ /* #define PKT_SEQ 0 */ /* #define PKT_TYPE 1 */ /* #define PKT_LEN_LSB 2 */ /* #define PKT_LEN_MSB 3 */ /** * canonPacketOffset: * @PKT_SEQ: Offset in packet to message sequence number * @PKT_TYPE: Offset in packet to type code * @PKT_LEN_LSB: Offset in packet to least-significant byte of packet length. * @PKT_LEN_MSB: Offset in packet to most-significant byte of packet length. * @PKT_HDR_LEN: Length of complete header. * * Offsets to bytes in a serial packet header. * */ typedef enum { PKT_SEQ = 0, PKT_TYPE = 1, PKT_LEN_LSB = 2, PKT_LEN_MSB = 3, PKT_HDR_LEN = 4 } canonPacketOffset; /* #define PKT_MSG 0 */ /* #define PKT_EOT 4 */ /* #define PKT_ACK 5 */ /** * canonPacketType: * @PKT_MSG: Message fragment * @PKT_SPD: Speed message from computer sent once, early in the * initialization for the computer to ask the camera to * switch to a higher speed. * @PKT_EOT: EOT * @PKT_ACK: ACK (or NAK) * * Packet type for byte 2 of packet header. * Unfortunately, these are mixed with %canonPacketThirdByte * codes to tell %canon_serial_send_packet what to do. * */ typedef enum { PKT_MSG = 0, PKT_SPD = 3, PKT_EOT = 4, PKT_ACK = 5 } canonPacketType; /* #define PKT_NACK 255 */ /* #define PKTACK_NACK 0x01 */ /* #define PKT_UPLOAD_EOT 3 */ /** * canonPacketThirdByte: * @PKTACK_NACK: This ACK is a NACK (not acknowledged) message * @PKT_UPLOAD_EOT: This EOT is to end an upload * @PKT_NACK: this ACK is a request to retransmit * * Codes to go in the third byte of an ACK or EOT message. * Unfortunately, these are mixed with %canonPacketType * codes to tell %canon_serial_send_packet what to do. * */ typedef enum { PKTACK_NACK = 0x01, PKT_UPLOAD_EOT = 3, PKT_NACK = 255 } canonPacketThirdByte; /* ----------------------- Message-level processing ------------------------ */ /** * MAX_MSG_SIZE * * Maximum size of a message to fit within a packet. * */ #define MAX_MSG_SIZE (MAX_PKT_PAYLOAD-12) /* #define FRAG_NUM 0 */ /* #define FRAG_LEN_LSB 2 */ /* #define FRAG_LEN_MSB 3 */ /* #define MSG_HDR_LEN 16 */ /* #define MSG_02 0 */ /* #define MSG_MTYPE 4 */ /* #define MSG_DIR 7 */ /* #define MSG_LEN_LSB 8 */ /* #define MSG_LEN_MSB 9 */ /* #define MSG_FFFB 12 */ /** * canonSerialMsgHeader: * @MSG_02: offset to bytes "00 02" in header * @MSG_MTYPE: offset to message type byte in header * @MSG_DIR : offset to message direction byte in header: 0x11 or 0x12 * is output to camera, 0x21 or 0x22 is response from camera * @MSG_LEN_LSB: offset to least-significant byte of 16-but message length * @MSG_LEN_MSB: offset to most-significant byte of 16-but message length * @MSG_HDR_LEN: length of entire message header * * */ typedef enum { MSG_02 = 0, MSG_MTYPE = 4, MSG_DIR = 7, MSG_LEN_LSB = 8, MSG_LEN_MSB = 9, /* MSG_FFFB = 12,*/ MSG_HDR_LEN = 16 } canonSerialMsgHeader; /** * DIR_REVERSE * * Value to XOR with direction byte to reverse direction. * Converts 0x21 -> 0x11, 0x11 -> 0x21. * */ #define DIR_REVERSE 0x30 /** * UPLOAD_DATA_BLOCK * * Size of blocks to upload a file. */ #define UPLOAD_DATA_BLOCK 900 /* ----------------------- Command-level processing ------------------------ */ /** * SPEED_9600 * * String to send to set camera speed to 9600 bits per second. * */ #define SPEED_9600 (unsigned char *)"\x00\x03\x02\x02\x01\x10\x00\x00\x00\x00\xc0\x39" /** * SPEED_19200 * * String to send to set camera speed to 19200 bits per second. * */ #define SPEED_19200 (unsigned char *)"\x00\x03\x08\x02\x01\x10\x00\x00\x00\x00\x13\x1f" /** * SPEED_38400 * * String to send to set camera speed to 38400 bits per second. * */ #define SPEED_38400 (unsigned char *)"\x00\x03\x20\x02\x01\x10\x00\x00\x00\x00\x5f\x84" /** * SPEED_57600 * * String to send to set camera speed to 57600 bits per second. * */ #define SPEED_57600 (unsigned char *)"\x00\x03\x40\x02\x01\x10\x00\x00\x00\x00\x5e\x57" /** * SPEED_115200 * * String to send to set camera speed to 115200 bits per second. * */ #define SPEED_115200 (unsigned char *)"\x00\x03\x80\x02\x01\x10\x00\x00\x00\x00\x4d\xf9" #endif /* _SERIAL_H */ /**************************************************************************** * * End of file: serial.h * ****************************************************************************/ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/canon/README.canon0000644000175000001440000002401412561423351015205 00000000000000NOTE: As of 2006, this file is quite outdated, at least regarding the list of supported cameras. ======================================================================== About this driver ================= This driver was written to work with Canon digital cameras without using any official specs which might exist for the communication protocols. For a disclaimer, see the GNU LESSER GENERAL PUBLIC LICENSE as distributed with the libgphoto2 library. This driver underwent a fairly complete rewrite around 2002-01-01, so there may still be some wrinkles to be ironed out, especially with older cameras. ======================================================================== Cameras supported ================= For up-to-date camera support details, see the canon.c source file. - PowerShot A50 (not tested) - PowerShot Pro70 - PowerShot S10 - PowerShot S20 - PowerShot S30 - PowerShot S40 - PowerShot S100 / Digital IXUS - PowerShot S110 / DIGITAL IXUS v - PowerShot S200 / Digital IXUS v2 - PowerShot IXY Digital (not tested) - PowerShot S300 / Digital IXUS 300 - PowerShot IXY Digital 300 (not tested) - PowerShot G1 - PowerShot G2 - PowerShot A10 (not tested after rewrite) - PowerShot A20 - PowerShot A30 - PowerShot A40 - PowerShot A100 - PowerShot A200 - PowerShot Pro90 IS (not tested) - PowerShot S300 / IXY DIGITAL 300 / Digital IXUS 300 - EOS D30 - EOS D60 - EOS 10D - Digital IXUS 330 - Canon MVX2i / Optura 200 MC - EOS 300D / Digital Rebel / KISS Digital - a few newer ones, see output of "gphoto2 --list-cameras | grep Canon" The following cameras operate either with this driver or in PTP mode with the PTP driver: - PowerShot S45 (normal mode) - PowerShot G3 (normal mode) - PowerShot S230 / Digital IXUS v3 (normal mode) - a few newer ones, see output of "gphoto2 --list-cameras | grep Canon" Support for the following cameras is mostly there as they were supported in gphoto 0.4.x but several API changes and rewrites have probably broken something along the way. If you are interested in fixing it mail gphoto-devel@lists.sourceforge.net: - PowerShot A5 - PowerShot A5 Zoom It doesn't work with the PowerShot 350. However, the PS350 uses a vaguely similar protocol, so some parts of the sources can probably be shared. The following cameras, and probably many cameras to come, operate in either PTP and Canon mode depending on the first data packets sent to the camera, i.e. depending on whether you use this driver or the PTP driver: - PowerShot A60 - PowerShot A70 The rewritten canon driver doesn't cache much information any more. Still, if the camera status changes during a session or if the driver gets stuck for some other reason, the caches could be manually flushed using "Configure camera". ======================================================================== Features supported ================== - RS-232 serial cameras - USB cameras (well tested) - List all folders and image and movie files on the camera Optionally list all other files, too - Download all file types from the camera as they are, i.e. without any transformation. This includes CRW (Canon RaW) files, which are not processed to a standard image file format yet. - Download thumbnail for all file types where thumbnails are available for - Delete files. Handles single files and files which have an associated thumbnail file which is also removed. - Download sound annotations to images (not tested) - Create and Delete folders Note that this does not mean that the camera will use your directories to store the images. - Upload files to camera for serial cameras - Capture images controlled by the computer (code courtesy of Emile Snyder and Stephen H. Westin) The following features are still experimental and not completely working yet. Run configure with CFLAGS set to "-DCANON_EXPERIMENTAL_UPLOAD" (or just one of them, if you want to test only one) to activate them. Beware that this is work in progress, and no guarantees are given at all, i.e. even less than the no guarantees we give for the rest of the driver. NOTE: This may CAUSE DAMAGE TO THE CAMERA! - Upload files to camera for USB cameras (CANON_EXPERIMENTAL_UPLOAD) (code courtesy of Matthias Kramm) We are currently also working on support for the raw file format the Canon cameras use (CRW -Canon RaW files). See http://www.shore.net/~dcoffin/powershot/ or http://www2.primushost.com/~dcoffin/powershot/ for details on the file format. Currently, only download of CRW files is supported without any conversion to common image file formats. Use the programs offered on the website mentioned above for conversion from CRW to something else. ======================================================================== Remote capture on Canon Powershot A40 ===================================== The Canon Powershot A40 supports remote capture with gphoto. However, not all camera configuration parameters can be set via gphoto. Here we summarize the current status: - shutterspeed: can _NOT_ be set; This parameter can not be remotely set, most likely due to a camera limitation rather than a gphoto issue. In fact even Canon RemoteCapture version 2.7.4.23 for MacOSX does not allow setting this parameter. - aperture: can NOT be set; even Canon RemoteCapture for MacOSX does not allow setting this. - ISO: WORKS. Setting the ISO to one of the supported camera values works with gphoto. - Resolution: WORKS. - flashmode: WORKS. gphoto2 is able to denable/disable the flash, or set it to automatic. - beep: WORKS. gphoto2 is able to enable/disable the audible beep which is emitted by the camera after fucosing the scene. - zoom: WORKS. gphoto2 can remotely set the zoom. The range of zoom values needs to be checked; at the moment the range 1 (no zoom at all) to 9 has been observed to work, but it is unclear whether higher values work as well. - macro mode: can _NOT_ be set. Apparently, RemoteCapture 2.7.4.23 is able to enable macro mode; however, macro mode should be automatically enabled by the camera when necessary (need to be checked) - exposure compensation: can _NOT_ be set. Apparently, RemoteCapture 2.7.4.23 is able to set the exposure compensation, while gphoto2 is not. Supporting this would probably require additional reverse engineering work on the Canon protocol to understand the commands to issue. ======================================================================== Known Bugs ========== * Shutting off the camera and rewaking it is not implemented ======================================================================== Change history ============== For detailed changes, see the file ChangeLog. Yes, someone should extract the user releavant information from ChangeLog and collect it here. Version 9 (17-APRIL-2001) --------- - support added for PowerShot S300 / Digital IXUS 300 /PowerShot IXY Digital 300 PowerShot A10 / PowerShot A20 EOS D30 --------- Version 8 (1-APRIL-2001) - This history have not been updated in a while... - support for G1, S100, Ixus and Ixy was added - upload support only on serial Version 7 (25-JULY-2000) --------- - Ported to gphoto2 Version 6 (19-MAY-2000) --------- - Included USB support in the driver - More options in the configuration file - Debug output can be mostly disabled - The driver now sets the "downloaded" bit on downloaded images Version 5 (09-MAY-2000) --------- - Support for full-speed transfers (115200) - Most protocol commands are implemented, or at least discovered (see the 'Protocol' file) - USB protocol description - Get/Set owner name - Get date - Get firmware rev. - Get battery status - Use libgpio for serial transfers - More reliable error recovery - Better configuration dialog - Support for all current powershot models (A5 to S20) - Low battery condition detection Version 4 (3-SEP-1999) --------- - changed uint16_t to unsigned short and removed inclusion of stdint.h, for compatibility :-( Version 3 (1-SEP-1999) --------- - lowered number of tries when initializing from 50 to 10 (50 was for experiments) - increased camera ID buffer to be large enough for PS350 responses - serial input is now flushed before testing or attempting synchronization - directories are now sorted alphabetically, implicitly ordering images by date - fixed a few memory leaks in directory handling - added arbitrary file download to Configure/Configure Camera (experimental; very fragile) Version 2 (29-AUG-1999) --------- - integrated into gphoto-2.3.5 (from CVS) - added support for large directories (listing occupies > 1 message) - receive timeout is now raised from 1 to 10 seconds after first response - renamed a50_select_disk to a50_disk_info. It now returns disk capacity and available space. - completed CRC table - properly integrated into gPhoto - lots of cleanups Version 1 (27-AUG-1999) --------- - a little bit of code cleanup, added a50.h, doc/, full recursive download in canon.c, and fixed a few documentation bugs, adjusted send/receive buffers - a50_send_msg incremented seq_tx when skipping retransissions while waiting for ACK Version 0 (27-AUG-1999) --------- - initial release which demonstrates most functions in a way that's completely useless for gPhoto ======================================================================== To do ===== Quite outdated. See the TODO file for more current information. - code structure is still pretty ugly. Things that absolutely need fixing: - command codes and fffbs are spread all over the place - "ping" (empty message) should probably be merged into normal message handling; perhaps also 03 message -> wait_for_ack can be merged too - psa50.c must not invoke GUI functions - change many fprintf(stderr,... to GUI calls or callbacks - improve error handling: distinguish between severe and harmless errors (e.g. duplicate EOT vs. ten timeouts in a row) - find out how error recovery works (need traces) - get traces for other operations: - idle period/restart (keepalive ?) - upload file, create directory - find out how to avoid blocking gPhoto during transfer libgphoto2-2.5.9/camlibs/canon/serial.c0000644000175000001440000012066412610415617014664 00000000000000/**************************************************************************** * * File: serial.c * * Serial communication layer. * ****************************************************************************/ /**************************************************************************** * * include files * ****************************************************************************/ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #include "library.h" #include "canon.h" #include "serial.h" #include "util.h" #include "crc.h" #ifndef MAX # define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif #ifdef __GNUC__ # define __unused__ __attribute__((unused)) #else # define __unused__ #endif /** * serial_flush_input * @gdev: serial port to use * * Dummy function. * */ static void serial_flush_input (GPPort __unused__ *gdev) { } /** * serial_flush_output * @gdev: serial port to use * * Dummy function. * */ static void serial_flush_output (GPPort __unused__ *gdev) { } /** * canon_serial_change_speed * @gdev: serial port to use * @speed: the new speed * * Changes the speed of the communication. * * Returns: 1 on success. * 0 on any error. * */ static int canon_serial_change_speed (GPPort *gdev, int speed) { gp_port_settings settings; /* set speed */ gp_port_get_settings (gdev, &settings); settings.serial.speed = speed; gp_port_set_settings (gdev, settings); usleep (70000); return 1; } /** * canon_serial_get_cts * @gdev: serial port to use * * Gets the status of the CTS (Clear To Send) line on the serial port. * * CTS is "1" when the camera is ON, and "0" when it is OFF. * * Returns: 1 on CTS high. * 0 on CTS low. * */ #if 0 static int canon_serial_get_cts (GPPort *gdev) { GPLevel level; gp_port_get_pin (gdev, PIN_CTS, &level); return (level); } #endif /** * canon_serial_init * @camera: Camera object to initialize * * Initializes the given serial device by setting speed, parity, etc. * * Returns: %GP_OK * */ int canon_serial_init (Camera *camera) { GPPortSettings settings; GP_DEBUG ("Initializing the (serial) camera."); /* Get the current settings */ gp_port_get_settings (camera->port, &settings); /* Adjust the current settings */ settings.serial.speed = 9600; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; /* Set the new settings */ gp_port_set_settings (camera->port, settings); return GP_OK; } /** * canon_serial_send * @camera: Camera object to work with * @buf: the raw data buffer to send * @len: the length of the buffer * @sleep: time in usec to wait between characters * * Send the given buffer with given length over the serial line. * * Returns: 0 on success, -1 on error. * */ static int canon_serial_send (Camera *camera, const unsigned char *buf, int len, int sleep) { int i; /* the A50 does not like to get too much data in a row at 115200 * The S10 and S20 do not have this problem */ if (sleep > 0 && camera->pl->slow_send == 1) { for (i = 0; i < len; i++) { gp_port_write (camera->port, (char *) buf, 1); buf++; usleep (sleep); } } else { gp_port_write (camera->port, (char *) buf, len); } return 0; } /** * serial_set_timeout * @gdev: serial port to use * @to: timeout in milliseconds * * Sets the timeout, in miliseconds. * */ static void serial_set_timeout (GPPort *gdev, int to) { gp_port_set_timeout (gdev, to); } /** * canon_serial_get_byte * @gdev: serial port to use * * Gets the next byte from the serial line. * Actually the function reads chunks of data and keeps them in a cache. * Only one byte per call will be returned. * * Returns: the byte on success, -1 on error. * */ static int canon_serial_get_byte (GPPort *gdev) { static unsigned char cache[512]; static unsigned char *cachep = cache; static unsigned char *cachee = cache; int recv; /* if still data in cache, get it */ if (cachep < cachee) { return (int) *cachep++; } recv = gp_port_read (gdev, (char *)cache, 1); if (recv < 0) /* An error occurred */ return -1; cachep = cache; cachee = cache + recv; if (recv) { return (int) *cachep++; } return -1; } /* ------------------------- Frame-level processing ------------------------- */ /** * canon_serial_send_frame * @camera: Camera object to work with * @pkt: Data to send to camera * @len: Length of packet * * Sends a frame of data to camera * * Returns: 1 if canon_serial_send() succeeds, 0 if it fails * */ static int canon_serial_send_frame (Camera *camera, const unsigned char *pkt, int len) { static unsigned char buffer[2100]; /* worst case: two maximum-sized packets (~1020 bytes, full of data that needs to be escaped */ unsigned char *p; p = buffer; *p++ = CANON_FBEG; while (len--) { if (p < buffer || (unsigned int)(p - buffer) >= sizeof (buffer) - 1) { GP_DEBUG ("FATAL ERROR: send buffer overflow"); return -1; } if (*pkt != CANON_FBEG && *pkt != CANON_FEND && *pkt != CANON_ESC) *p++ = *pkt++; else { *p++ = CANON_ESC; *p++ = *pkt++ ^ CANON_XOR; } } *p++ = CANON_FEND; return !canon_serial_send (camera, buffer, p - buffer, USLEEP2); } /** * canon_serial_recv_frame * @camera: Camera object to work with * @len: to receive the length of the buffer * * Receive a frame from the camera * * Returns: a buffer containing a frame from the camera, or NULL on error. * On success, @len will contain the length of the buffer. * */ static unsigned char * canon_serial_recv_frame (Camera *camera, int *len) { static unsigned char buffer[5000]; /* more than enough :-) (allow for a few run-together packets) */ unsigned char *p = buffer; int c; while ((c = canon_serial_get_byte (camera->port)) != CANON_FBEG) { if (c == -1) return NULL; } while ((c = canon_serial_get_byte (camera->port)) != CANON_FEND) { if (c < 0) return NULL; if (c == CANON_ESC) c = canon_serial_get_byte (camera->port) ^ CANON_XOR; if (p < buffer || (unsigned int)(p - buffer) >= sizeof (buffer)) { GP_DEBUG ("FATAL ERROR: receive buffer overflow"); return NULL; } *p++ = c; } GP_LOG_DATA ((char *)buffer, p - buffer, "RECV (without CANON_FBEG and CANON_FEND bytes)"); if (len) *len = p - buffer; return buffer; } /* ------------------------ Packet-level processing ------------------------- */ /** * canon_serial_send_packet * @camera: Camera object to work with * @type: * @seq: * @pkt: data to send to camera * @len: length of data * * frames a packet (generates CRC, packs with sequence number and * length) and sends it to the camera through the serial port using * canon_serial_send_frame(). * * Returns: status from canon_serial_send_frame() * */ static int canon_serial_send_packet (Camera *camera, unsigned char type, unsigned char seq, unsigned char *pkt, int len) { unsigned char *hdr = pkt - PKT_HDR_LEN; int crc; hdr[PKT_TYPE] = type; hdr[PKT_SEQ] = seq; hdr[PKT_LEN_LSB] = len & 0xff; hdr[PKT_LEN_MSB] = len >> 8; if (type == PKT_NACK) { hdr[PKT_TYPE] = PKT_ACK; hdr[PKT_TYPE + 1] = '\xff'; /* PKTACK_NACK; */ } if (type == PKT_UPLOAD_EOT) { hdr[PKT_TYPE] = PKT_EOT; hdr[PKT_TYPE + 1] = 0x3; len = 2; } if (type == PKT_EOT || type == PKT_ACK || type == PKT_NACK) len = 2; /* @@@ hack */ crc = canon_psa50_gen_crc (hdr, len + PKT_HDR_LEN); if (crc == -1) return GP_ERROR; pkt[len] = crc & 0xff; pkt[len + 1] = crc >> 8; return canon_serial_send_frame (camera, hdr, len + PKT_HDR_LEN + 2); } /** * canon_serial_recv_packet * @camera: Camera object to work with * @type: Type of packet * @seq: Sequence number of packet * @len: length of data received * * Receives a packet from the serial port using * canon_serial_send_frame(), decodes frame information (type, * sequence number, and length), and returns it stripped of frame * information. * * Returns: packet data (or NULL if failure). Type in @type, sequence * number in @seq, and length in @len. * */ static unsigned char * canon_serial_recv_packet (Camera *camera, unsigned char *type, unsigned char *seq, int *len) { unsigned char *pkt; unsigned short crc; int raw_length, length = 0; pkt = canon_serial_recv_frame (camera, &raw_length); if (!pkt) return NULL; if (raw_length < PKT_HDR_LEN) { GP_DEBUG ("ERROR: packet truncated"); return NULL; } if (pkt[PKT_TYPE] == PKT_MSG) { length = pkt[PKT_LEN_LSB] | (pkt[PKT_LEN_MSB] << 8); if (length + PKT_HDR_LEN > raw_length - 2) { GP_DEBUG ("ERROR: invalid length"); /*fprintf(stderr,"Sending NACK"); canon_serial_send_packet(PKT_NACK,camera->pl->seq_rx++,camera->pl->psa50_eot+PKT_HDR_LEN,0); */ camera->pl->receive_error = ERROR_RECEIVED; return NULL; } } crc = pkt[raw_length - 2] | (pkt[raw_length - 1] << 8); if (!canon_psa50_chk_crc (pkt, raw_length - 2, crc)) { GP_DEBUG ("ERROR: CRC error"); return NULL; } *type = pkt[PKT_TYPE]; if (seq) *seq = pkt[PKT_SEQ]; if (len) *len = length; if (*type == PKT_ACK || *type == PKT_EOT) return pkt; return pkt + PKT_HDR_LEN; } /* ----------------------- Message-level processing ------------------------ */ /** * canon_serial_wait_for_ack * @camera: Camera object to work with * * Waits for an "ACK" from the camera. * * Returns: * 1 : ACK received * 0 : communication error (no reply received for example) * -1 : NACK received. */ static int canon_serial_wait_for_ack (Camera *camera) { unsigned char *pkt; unsigned char type, seq, old_seq; int len; while (1) { pkt = canon_serial_recv_packet (camera, &type, &seq, &len); if (!pkt) return 0; if (seq == camera->pl->seq_tx && type == PKT_ACK) { if (pkt[2] == PKTACK_NACK) { GP_DEBUG ("ERROR: NACK received"); return -1; } camera->pl->seq_tx++; return 1; } old_seq = '\0'; if (type == PKT_EOT) { old_seq = pkt[0]; if (camera->pl->receive_error == NOERROR) { GP_DEBUG ("Old EOT received, sending corresponding ACK"); if (!canon_serial_send_packet (camera, PKT_ACK, old_seq, camera->pl->psa50_eot + PKT_HDR_LEN, 0)) return 0; pkt = canon_serial_recv_packet (camera, &type, &seq, &len); if (!pkt) return 0; if (seq == old_seq && type == PKT_ACK) { if (pkt[2] == PKTACK_NACK) { GP_DEBUG ("Old EOT acknowledged"); return -1; } return 1; } } } /* error already aknowledged, we skip the following ones */ if (camera->pl->receive_error == ERROR_RECEIVED) { if (!canon_serial_send_packet (camera, PKT_NACK, old_seq, camera->pl->psa50_eot + PKT_HDR_LEN, 0)) return 0; return 1; } GP_DEBUG ("ERROR: ACK format or sequence error, retrying"); GP_DEBUG ("Sending NACK"); canon_serial_send_packet (camera, PKT_NACK, camera->pl->seq_rx++, camera->pl->psa50_eot + PKT_HDR_LEN, 0); camera->pl->receive_error = ERROR_RECEIVED; /* * just keep on trying. protocol seems to retransmit EOTs, so we may get * some old EOTs when we're actually expecting ACKs. */ } } /** * canon_serial_send_msg * @camera: Camera object to work with * @mtype: message type. * @dir: direction. * @ap: message payload (list of arguments, see 'man va_start' * * Sends a message to the camera. * * Returns: * -1 on error * 0 if canon_serial_send_packet() fails * 1 on good ACK received */ static int canon_serial_send_msg (Camera *camera, unsigned char mtype, unsigned char dir, va_list * ap) { unsigned char buffer[MAX_PKT_PAYLOAD + 2]; /* allow space for CRC */ unsigned char upload_buffer[MAX_PKT_PAYLOAD + 2]; unsigned char *pkt, *pkt2, *pos; int total, good_ack, try; memset (buffer, 0, PKT_HDR_LEN + MSG_HDR_LEN); pkt = buffer + PKT_HDR_LEN; pkt[MSG_02] = 2; pkt[MSG_MTYPE] = mtype; pkt[MSG_DIR] = dir; pos = pkt + MSG_HDR_LEN; total = 0; while (1) { const unsigned char *str; int len; str = va_arg (*ap, unsigned char *); if (!str) break; len = va_arg (*ap, int); if (pos + len - pkt > MAX_MSG_SIZE && camera->pl->uploading != 1) { GP_DEBUG ("FATAL ERROR: message too big (%i)", (int)(pos + len - pkt)); return -1; } memcpy (pos, str, len); pos += len; } total = pos - pkt; pkt[MSG_LEN_LSB] = total & 0xff; pkt[MSG_LEN_MSB] = total >> 8; if (camera->pl->uploading == 1) { memset (upload_buffer, 0, PKT_HDR_LEN + MSG_HDR_LEN); pkt2 = upload_buffer; memcpy (pkt2, pkt + UPLOAD_DATA_BLOCK, total - UPLOAD_DATA_BLOCK); for (try = 0; try < MAX_TRIES; try++) { canon_serial_send_packet (camera, PKT_MSG, 0, pkt, UPLOAD_DATA_BLOCK); canon_serial_send_packet (camera, PKT_MSG, 0x1, pkt2, total - UPLOAD_DATA_BLOCK); if (!canon_serial_send_packet (camera, PKT_UPLOAD_EOT, camera->pl->seq_tx, camera->pl->psa50_eot + PKT_HDR_LEN, 1)) return 0; if (!canon_serial_send_packet (camera, PKT_UPLOAD_EOT, camera->pl->seq_tx, camera->pl->psa50_eot + PKT_HDR_LEN, 1)) return 0; good_ack = canon_serial_wait_for_ack (camera); if (good_ack == 1) return good_ack; } return -1; } else { pkt[MSG_LEN_LSB] = total & 0xff; pkt[MSG_LEN_MSB] = total >> 8; for (try = 1; try < MAX_TRIES; try++) { if (!canon_serial_send_packet (camera, PKT_MSG, 0, pkt, total)) return 0; if (!canon_serial_send_packet (camera, PKT_EOT, camera->pl->seq_tx, camera->pl->psa50_eot + PKT_HDR_LEN, 1)) return 0; good_ack = canon_serial_wait_for_ack (camera); if (good_ack == -1) { GP_DEBUG ("NACK received, retrying command"); } else if (good_ack == 1) { return good_ack; } else { GP_DEBUG ("No ACK received, retrying command"); if (try == 2) { /* is the camera still there? */ if (!canon_serial_send_packet (camera, PKT_EOT, camera->pl->seq_tx, camera->pl->psa50_eot + PKT_HDR_LEN, 0)) return 0; good_ack = canon_serial_wait_for_ack (camera); if (good_ack == 0) { camera->pl->receive_error = FATAL_ERROR; GP_DEBUG ("ERROR: FATAL ERROR"); clear_readiness (camera); return -1; } } } } return -1; } } /** * canon_serial_recv_msg * @camera: Camera object to work with * @mtype: message type. * @dir: direction. * @total: payload length (set by this function). * @context: context for error reporting * * Receives a message from the camera. * * See the "Protocol" file for an explanation of the various * elements needed to handle a message. * * Returns: * char* pointer to the message payload; NULL on failure. * */ static unsigned char * canon_serial_recv_msg (Camera *camera, unsigned char mtype, unsigned char dir, unsigned int *total, GPContext *context) { static unsigned char *msg = NULL; static int msg_size = 512; /* initial allocation/2 */ unsigned char *frag; unsigned char type, seq; int len, length = 0, msg_pos = 0; while (1) { frag = canon_serial_recv_packet (camera, &type, NULL, &len); if (!frag) return NULL; if (type == PKT_MSG) break; /* uploading is special */ /* if (type == PKT_ACK && mtype == 0x3 && dir == 0x21) break; */ if (type == PKT_EOT) { GP_DEBUG ("Old EOT received sending corresponding ACK"); canon_serial_send_packet (camera, PKT_ACK, frag[0], camera->pl->psa50_eot + PKT_HDR_LEN, 0); } GP_DEBUG ("ERROR: protocol error, retrying"); } /* we keep the fragment only if there was no error */ if (camera->pl->receive_error == NOERROR) { length = frag[MSG_LEN_LSB] | (frag[MSG_LEN_MSB] << 8); /* while uploading we expect 2 ACKs and a message 0x3 0x21 * not always in the same order */ /* if (type == PKT_ACK && mtype == 0x3 && dir == 0x21) { GP_DEBUG("ignoring ACK received while waiting for MSG"); return frag; } */ if (len < MSG_HDR_LEN || frag[MSG_02] != 2) { GP_DEBUG ("ERROR: message format error"); return NULL; } if (frag[MSG_MTYPE] != mtype || frag[MSG_DIR] != dir) { if (frag[MSG_MTYPE] == '\x01' && frag[MSG_DIR] == '\x00' && memcmp (frag + 12, "\x30\x00\x00\x30", 4)) { gp_context_error (context, _("Battery exhausted, camera off.")); camera->pl->receive_error = ERROR_LOWBATT; } else { gp_context_error (context, _("ERROR: unexpected message")); } return NULL; } frag += MSG_HDR_LEN; len -= MSG_HDR_LEN; } while (1) { if (camera->pl->receive_error == NOERROR) { if (msg_pos + len > length) { gp_context_error (context, _("ERROR: message overrun")); return NULL; } if (msg_pos + len > msg_size || !msg) { msg_size *= 2; msg = realloc (msg, msg_size); if (!msg) return NULL; } memcpy (msg + msg_pos, frag, len); msg_pos += len; } frag = canon_serial_recv_packet (camera, &type, &seq, &len); if (!frag) return NULL; if (type == PKT_EOT) { /* in case of error we don't want to stop as the camera will send the 1st packet of the sequence again */ if (camera->pl->receive_error == ERROR_RECEIVED) { camera->pl->seq_rx = seq; canon_serial_send_packet (camera, PKT_NACK, camera->pl->seq_rx, camera->pl->psa50_eot + PKT_HDR_LEN, 0); camera->pl->receive_error = ERROR_ADDRESSED; } else { if (seq == camera->pl->seq_rx) break; gp_context_error (context, _("ERROR: out of sequence.")); return NULL; } } if (type != PKT_MSG && camera->pl->receive_error == NOERROR) { gp_context_error (context, _("ERROR: unexpected packet type.")); return NULL; } if (type == PKT_EOT && camera->pl->receive_error == ERROR_RECEIVED) { camera->pl->receive_error = ERROR_ADDRESSED; } if (type == PKT_MSG && camera->pl->receive_error == ERROR_ADDRESSED) { msg_pos = 0; length = frag[MSG_LEN_LSB] | (frag[MSG_LEN_MSB] << 8); if (len < MSG_HDR_LEN || frag[MSG_02] != 2) { gp_context_error (context, _("ERROR: message format error.")); return NULL; } if (frag[MSG_MTYPE] != mtype || frag[MSG_DIR] != dir) { if (frag[MSG_MTYPE] == '\x01' && frag[MSG_DIR] == '\x00' && memcmp (frag + 12, "\x30\x00\x00\x30", 4)) { gp_context_error (context, _("Battery exhausted, camera off.")); camera->pl->receive_error = ERROR_LOWBATT; } else { gp_context_error (context, _("ERROR: unexpected message2.")); } return NULL; } frag += MSG_HDR_LEN; len -= MSG_HDR_LEN; camera->pl->receive_error = NOERROR; } } if (camera->pl->receive_error == ERROR_ADDRESSED) { camera->pl->receive_error = NOERROR; } if (camera->pl->receive_error == NOERROR) { /*we want to be sure the camera U N D E R S T A N D S our packets */ if (camera->pl->uploading == 1 && camera->pl->md->model == CANON_CLASS_1) camera->pl->slow_send = 1; if (!canon_serial_send_packet (camera, PKT_ACK, camera->pl->seq_rx++, camera->pl->psa50_eot + PKT_HDR_LEN, 0)) { if (camera->pl->uploading == 1 && camera->pl->md->model == CANON_CLASS_1) camera->pl->slow_send = 0; return NULL; } if (camera->pl->uploading == 1 && camera->pl->md->model == CANON_CLASS_1) camera->pl->slow_send = 0; if (total) *total = msg_pos; return msg; } return NULL; } /** * canon_serial_dialogue: * @camera: camera with which to communicate * @context: context for error reporting * @mtype : type * @dir : direction * @len : length of the received payload * @Varargs: The rest of the arguments will be put together to * fill up the payload of the request message. * * Higher level function: sends a message and waits for a * reply from the camera. * * Payload: each argument after "len" goes by 2: the variable itself, * and the next argument has to be its length. You also have to finish * the list by a "NULL". * * Example: To send a string called "name" : * canon_serial_dialogue(0x05,0x12,&len,name,strlen(name)+1,NULL); * * Returns: buffer received from canon_serial_recv_msg(), NULL if failure * */ unsigned char * canon_serial_dialogue (Camera *camera, GPContext *context, unsigned char mtype, unsigned char dir, unsigned int *len, ...) { va_list ap; int okay, try; unsigned char *good_ack; for (try = 1; try < MAX_TRIES; try++) { va_start (ap, len); okay = canon_serial_send_msg (camera, mtype, dir, &ap); va_end (ap); if (!okay) return NULL; /* while uploading we receive 2 ACKs and 1 confirmation message * The first ACK has already been received if we are here */ if (camera->pl->uploading == 1) { camera->pl->seq_tx--; good_ack = canon_serial_recv_msg (camera, mtype, dir ^ DIR_REVERSE, len, context); if (!good_ack) return NULL; if (good_ack[0] == camera->pl->seq_tx && good_ack[1] == 0x5) { GP_DEBUG ("ACK received waiting for the confirmation message"); good_ack = canon_serial_recv_msg (camera, mtype, dir ^ DIR_REVERSE, len, context); } else { okay = canon_serial_wait_for_ack (camera); if (okay == 1) return good_ack; } } else good_ack = canon_serial_recv_msg (camera, mtype, dir ^ DIR_REVERSE, len, context); if (good_ack) return good_ack; if (camera->pl->receive_error == NOERROR) { GP_DEBUG ("Resending message..."); camera->pl->seq_tx--; } if (camera->pl->receive_error == FATAL_ERROR) break; } return NULL; } /* ----------------------- Command-level processing ------------------------ */ /** * canon_serial_end: * @camera: the camera to switch off * * Switches the @camera off * * Returns: %GP_OK * */ #if 0 static int canon_serial_end (Camera *camera) { canon_serial_send (camera, (unsigned char *)"\xC0\x00\x02\x55\x2C\xC1", 6, USLEEP2); canon_serial_send (camera, (unsigned char *)"\xC0\x00\x04\x01\x00\x00\x00\x24\xC6\xC1", 8, USLEEP2); return GP_OK; } #endif /** * canon_serial_off: * @camera: the camera to switch off * * Switches the #camera off, and resets the serial driver to 9600 bauds, * in order to be ready to switch the camera back on again if wanted. * Should better be named psa50_serial_off * * Returns: %GP_OK * */ int canon_serial_off (Camera *camera) { canon_serial_send (camera, (unsigned char *)"\xC0\x00\x02\x55\x2C\xC1", 6, USLEEP2); canon_serial_send (camera, (unsigned char *)"\xC0\x00\x04\x01\x00\x00\x00\x24\xC6\xC1", 8, USLEEP2); canon_serial_change_speed (camera->port, 9600); return GP_OK; } /** * canon_serial_error_type * @camera: Camera object to work with * * logs a debug message corresponding * to the error encountered * */ void canon_serial_error_type (Camera *camera) { switch (camera->pl->receive_error) { case ERROR_LOWBATT: GP_DEBUG ("ERROR: no battery left, Bailing out!"); break; case FATAL_ERROR: GP_DEBUG ("ERROR: camera connection lost!"); break; default: GP_DEBUG ("ERROR: malformed message"); break; } } /** * canon_serial_put_file * @camera: Camera object to work with * @file: CameraFile object to upload * @destname: name file should have on camera * @destpath: pathname for directory to put file * @context: context for error reporting * * Uploads file to @camera via serial port * * Returns: gphoto2 error code * */ int canon_serial_put_file (Camera *camera, CameraFile *file, const char *name, const char *destname, const char *destpath, GPContext *context) { unsigned char *msg; char buf[4096]; int offset = 0; char offset2[4]; int block_len; char block_len2[4]; unsigned int sent = 0; int i, j = 0; unsigned int len; unsigned long int size; const char *data; unsigned int id; camera->pl->uploading = 1; gp_file_get_data_and_size (file, &data, &size); id = gp_context_progress_start (context, size, _("Uploading file...")); while (sent < size) { if (size < DATA_BLOCK) block_len = size; else if ((size - sent < DATA_BLOCK)) block_len = size - sent; else block_len = DATA_BLOCK; offset = sent; for (i = 0; i < 4; i++) { offset2[i] = (offset >> (8 * i)) & 0xff; block_len2[i] = (block_len >> (8 * i)) & 0xff; } for (i = 0; i < DATA_BLOCK; i++) { buf[i] = data[j]; j++; } msg = canon_serial_dialogue (camera, context, 0x3, 0x11, &len, "\x02\x00\x00\x00", 4, offset2, 4, block_len2, 4, destpath, strlen (destpath), destname, strlen (destname) + 1, buf, block_len, NULL); if (!msg) { camera->pl->uploading = 0; return GP_ERROR; } sent += block_len; gp_context_progress_update (context, id, sent); } gp_context_progress_stop (context, id); camera->pl->uploading = 0; return GP_OK; } /** * canon_serial_get_file: * @camera: camera to lock keys on * @name: name of file to fetch * @length: to receive length of image data * @context: context for error reporting * * Get a file from a USB_connected Canon camera. * * Returns: buffer containing file data (or NULL on failure); length * in @length. * */ unsigned char * canon_serial_get_file (Camera *camera, const char *name, unsigned int *length, GPContext *context) { unsigned char *file = NULL; unsigned char *msg; unsigned char name_len; unsigned int total = 0, expect = 0, size, id; unsigned int len; if (camera->pl->receive_error == FATAL_ERROR) { GP_DEBUG ("ERROR: can't continue a fatal error condition detected"); return NULL; } name_len = strlen (name) + 1; msg = canon_serial_dialogue (camera, context, 0x1, 0x11, &len, "\x00\x00\x00\x00", 5, &name_len, 1, "\x00", 2, name, strlen (name) + 1, NULL); if (!msg) { canon_serial_error_type (camera); return NULL; } id = gp_context_progress_start (context, le32atoh (msg + 4), _("Getting file...")); while (msg) { if (len < 20 || le32atoh (msg)) { break; } if (!file) { total = le32atoh (msg + 4); if (total > camera->pl->md->max_picture_size) { GP_DEBUG ("ERROR: %d is too big", total); break; } file = malloc (total); if (!file) { perror ("malloc"); break; } if (length) *length = total; } size = le32atoh (msg + 12); if (le32atoh (msg + 8) != expect || expect + size > total || size > len - 20) { GP_DEBUG ("ERROR: doesn't fit"); break; } memcpy (file + expect, msg + 20, size); expect += size; gp_context_progress_update (context, id, expect); if ((expect == total) != le32atoh (msg + 16)) { GP_DEBUG ("ERROR: end mark != end of data"); break; } if (expect == total) { gp_context_progress_stop (context, id); return file; } msg = canon_serial_recv_msg (camera, 0x1, 0x21, &len, context); } free (file); file = NULL; return NULL; } /** * canon_serial_get_dirents: * @camera: camera to initialize * @dirent_data: to receive directory data * @dirents_length: to receive length of @dirent_data * @path: pathname of directory to list * @context: context for error reporting * * Lists a directory. * * Returns: gphoto2 error code * */ int canon_serial_get_dirents (Camera *camera, unsigned char **dirent_data, unsigned int *dirents_length, const char *path, GPContext *context) { unsigned char *p, *temp_ch, *data = NULL; unsigned int mallocd_bytes, total_size; *dirent_data = NULL; /* fetch all directory entries, the first one is a little special */ p = canon_serial_dialogue (camera, context, 0xb, 0x11, dirents_length, "", 1, path, strlen (path) + 1, "\x00", 2, NULL); if (p == NULL) { gp_context_error (context, _("canon_serial_get_dirents: " "canon_serial_dialogue failed to fetch directory entries")); return GP_ERROR; } /* In the RS232 implementation, we should never get less than 5 bytes */ if (*dirents_length < 5) { gp_context_error (context, _("canon_serial_get_dirents: " "Initial dirent packet too short (only %i bytes)"), *dirents_length); return GP_ERROR; } GP_LOG_DATA ((char *)p, *dirents_length, "canon_serial_get_dirents: " "dirent packet received from canon_serial_dialogue:"); /* the first five bytes is only for the RS232 implementation * of this command, we do not need to copy them so therefore * we don't need to malloc() them either */ mallocd_bytes = MAX (1024, *dirents_length - 5); data = malloc (mallocd_bytes); if (!data) { gp_context_error (context, _("canon_serial_get_dirents: " "Could not allocate %i bytes of memory"), mallocd_bytes); return GP_ERROR_NO_MEMORY; } /* the first five bytes is only for the RS232 implementation * of this command, do not copy them */ memcpy (data, p + 5, (*dirents_length - 5)); total_size = *dirents_length; /* p[4] indicates this is not the last packet, * read additional packets until there are no more * directory entries to read */ while (!p[4]) { GP_DEBUG ("p[4] is %i", (int) p[4]); p = canon_serial_recv_msg (camera, 0xb, 0x21, dirents_length, context); if (p == NULL) { gp_context_error (context, _("canon_serial_get_dirents: " "Failed to read another directory entry")); free (data); data = NULL; return GP_ERROR; } GP_LOG_DATA ((char *)p, *dirents_length, "canon_serial_get_dirents: " "dirent packet received from canon_serial_recv_msg:"); /* the first five bytes is only for the RS232 implementation, * don't count them when checking dirent size */ if (*dirents_length - 5 < CANON_MINIMUM_DIRENT_SIZE) { gp_context_error (context, _("canon_serial_get_dirents: " "Truncated directory entry received")); free (data); data = NULL; return GP_ERROR; } /* check if we need to allocate some more memory, * the first five bytes is only for the RS232 * implementation of this command, don't need to * malloc for them. note that we ensured earlier in this * function that *dirents_length >= 5. */ if (total_size + (unsigned int)(*dirents_length - 5) > mallocd_bytes) { /* we allocate 1024 bytes chunks instead * of the exact number of bytes needed. * this is OK since we will free this * before returning from canon_int_list_directory * (our caller). */ mallocd_bytes += MAX (1024, *dirents_length); /* check if we are reading unrealistic ammounts * of directory entries so that we don't loop * forever. 1024 * 1024 is picked out of the blue. */ if (mallocd_bytes > 1024 * 1024) { gp_context_error (context, _("canon_serial_get_dirents: " "Too many dirents, we must be looping.")); free (data); data = NULL; return GP_ERROR; } temp_ch = realloc (data, mallocd_bytes); if (!temp_ch) { gp_context_error (context, _("canon_serial_get_dirents: " "Could not resize dirent buffer " "to %i bytes"), mallocd_bytes); free (data); data = NULL; return GP_ERROR; } data = temp_ch; } /* the first five bytes is only for the RS232 * implementation of this command, don't copy them. */ memcpy (data + total_size, p + 5, (*dirents_length - 5)); total_size += (*dirents_length - 5); } GP_DEBUG ("OK - this was last dirent"); *dirent_data = data; return GP_OK; } /** * canon_serial_ready: * @camera: camera to get ready * @context: context for error reporting * * serial part of canon_int_ready * * Returns: gphoto2 error code * */ int canon_serial_ready (Camera *camera, GPContext *context) { unsigned char type, seq; int good_ack, speed, try, len, i; unsigned char *pkt; int res; char cam_id_str[2000]; unsigned int id; GP_DEBUG ("canon_int_ready()"); serial_set_timeout (camera->port, 900); /* 1 second is the delay for awakening the camera */ serial_flush_input (camera->port); serial_flush_output (camera->port); camera->pl->receive_error = NOERROR; /* First of all, we must check if the camera is already on */ /* cts=canon_serial_get_cts(); GP_DEBUG("cts : %i",cts); if (cts==32) { CTS == 32 when the camera is connected. */ if (camera->pl->first_init == 0 && camera->pl->cached_ready == 1) { /* First case, the serial speed of the camera is the same as * ours, so let's try to send a ping packet : */ if (!canon_serial_send_packet (camera, PKT_EOT, camera->pl->seq_tx, camera->pl->psa50_eot + PKT_HDR_LEN, 0)) return GP_ERROR; good_ack = canon_serial_wait_for_ack (camera); GP_DEBUG ("good_ack = %i", good_ack); if (good_ack == 0) { /* no answer from the camera, let's try * at the speed saved in the settings... */ speed = camera->pl->speed; if (speed != 9600) { if (!canon_serial_change_speed (camera->port, speed)) { gp_context_error (context, _("Error changing speed.")); } } if (!canon_serial_send_packet (camera, PKT_EOT, camera->pl->seq_tx, camera->pl->psa50_eot + PKT_HDR_LEN, 0)) return GP_ERROR; good_ack = canon_serial_wait_for_ack (camera); if (good_ack == 0) { gp_context_status (context, _("Resetting protocol...")); canon_serial_off (camera); sleep (3); /* The camera takes a while to switch off */ return canon_int_ready (camera, context); } if (good_ack == -1) { GP_DEBUG ("Received a NACK!"); return GP_ERROR; } gp_context_status (context, _("Camera OK.")); return 1; } if (good_ack == -1) { GP_DEBUG ("Received a NACK !\n"); return GP_ERROR; } GP_DEBUG ("Camera replied to ping, proceed.\n"); return GP_OK; } /* Camera was off... */ gp_context_status (context, _("Looking for camera ...")); if (camera->pl->receive_error == FATAL_ERROR) { /* we try to recover from an error we go back to 9600bps */ if (!canon_serial_change_speed (camera->port, 9600)) { GP_DEBUG ("ERROR: Error changing speed"); return GP_ERROR; } camera->pl->receive_error = NOERROR; } id = gp_context_progress_start (context, MAX_TRIES, _("Trying to contact camera...")); for (try = 0; try < MAX_TRIES; try++) { if (canon_serial_send (camera, (unsigned char *)"\x55\x55\x55\x55\x55\x55\x55\x55", 8, USLEEP1) < 0) { gp_context_error (context, _("Communication error 1")); return GP_ERROR; } pkt = canon_serial_recv_frame (camera, &len); gp_context_progress_update (context, id, try + 1); if (pkt) break; } gp_context_progress_stop (context, id); if (try == MAX_TRIES) { gp_context_error (context, _("No response from camera")); return GP_ERROR; } if (!pkt) { gp_context_error (context, _("No response from camera")); return GP_ERROR; } if (len < 40 && strncmp ((char *)pkt + 26, "Canon", 5)) { gp_context_error (context, _("Unrecognized response")); return GP_ERROR; } strncpy (cam_id_str, (char *)pkt + 26, sizeof (cam_id_str) - 1); GP_DEBUG ("cam_id_str : '%s'", cam_id_str); camera->pl->first_init = 0; /* Compare what the camera identified itself as with our list * of known models * * We iterate over the model list testing id_str, even if we * don't actually use id_str, but serial_id_string. */ for (i = 0; models[i].id_str != NULL; i++) { if ((models[i].serial_id_string != NULL) && !strcmp (models[i].serial_id_string, cam_id_str)) { GP_DEBUG ("canon_serial_ready: Serial ID string matches '%s'", models[i].serial_id_string); gp_context_status (context, _("Detected a \"%s\" aka \"%s\""), models[i].id_str, models[i].serial_id_string); camera->pl->md = (struct canonCamModelData *) &models[i]; break; } } if (models[i].id_str == NULL) { gp_context_error (context, _("Unknown model \"%s\""), cam_id_str); return GP_ERROR_MODEL_NOT_FOUND; } /* take care of some model specific things */ switch (camera->pl->md->model) { case CANON_CLASS_3: case CANON_CLASS_1: if (camera->pl->speed > 57600) camera->pl->slow_send = 1; break; default: break; } /* 5 seconds delay should be enough for big flash cards. By * experience, one or two seconds is too little, as a large flash * card needs more access time. */ serial_set_timeout (camera->port, 5000); (void) canon_serial_recv_packet (camera, &type, &seq, NULL); if (type != PKT_EOT || seq) { gp_context_error (context, _("Bad EOT")); return GP_ERROR; } camera->pl->seq_tx = 0; camera->pl->seq_rx = 1; if (!canon_serial_send_frame (camera, (unsigned char *)"\x00\x05\x00\x00\x00\x00\xdb\xd1", 8)) { gp_context_error (context, _("Communication error 2")); return GP_ERROR; } res = 0; switch (camera->pl->speed) { case 9600: res = canon_serial_send_frame (camera, SPEED_9600, 12); break; case 19200: res = canon_serial_send_frame (camera, SPEED_19200, 12); break; case 38400: res = canon_serial_send_frame (camera, SPEED_38400, 12); break; case 57600: res = canon_serial_send_frame (camera, SPEED_57600, 12); break; case 115200: res = canon_serial_send_frame (camera, SPEED_115200, 12); break; } if (!res || !canon_serial_send_frame (camera, (unsigned char *)"\x00\x04\x01\x00\x00\x00\x24\xc6", 8)) { gp_context_error (context, _("Communication error 3")); return GP_ERROR; } speed = camera->pl->speed; gp_context_status (context, _("Changing speed... wait...")); if (!canon_serial_wait_for_ack (camera)) return GP_ERROR; if (speed != 9600) { if (!canon_serial_change_speed (camera->port, speed)) { gp_context_status (context, _("Error changing speed")); } else { GP_DEBUG ("speed changed"); } } for (try = 1; try < MAX_TRIES; try++) { canon_serial_send_packet (camera, PKT_EOT, camera->pl->seq_tx, camera->pl->psa50_eot + PKT_HDR_LEN, 0); if (!canon_serial_wait_for_ack (camera)) { gp_context_status (context, _("Error waiting for ACK during initialization, retrying")); } else break; } if (try == MAX_TRIES) { gp_context_error (context, _("Error waiting ACK during initialization")); return GP_ERROR; } gp_context_status (context, _("Connected to camera")); /* Now is a good time to ask the camera for its owner * name (and Model String as well) */ canon_int_identify_camera (camera, context); canon_int_get_time (camera, NULL, context); return GP_OK; } /** * canon_serial_get_thumbnail: * @camera: camera to work on * @name: file name (complete canon path) of file to get thumbnail for * @data: pointer to data pointer * @length: pointer to data length * @context: context for error reporting * * This is just the serial specific part extracted from the older * canon_get_thumbnail() routine. * * Returns: gphoto2 error code * */ int canon_serial_get_thumbnail (Camera *camera, const char *name, unsigned char **data, unsigned int *length, GPContext *context) { unsigned int expect = 0, size, payload_length, total_file_size; unsigned int total = 0, id; unsigned char *msg; CON_CHECK_PARAM_NULL (length); CON_CHECK_PARAM_NULL (data); *length = 0; *data = NULL; if (camera->pl->receive_error == FATAL_ERROR) { gp_context_error (context, _("ERROR: a fatal error condition was detected, can't continue ")); return GP_ERROR; } payload_length = strlen (name) + 1; msg = canon_serial_dialogue (camera, context, 0x1, 0x11, &total_file_size, "\x01\x00\x00\x00\x00", 5, &payload_length, 1, "\x00", 2, name, strlen (name) + 1, NULL); if (!msg) { canon_serial_error_type (camera); return GP_ERROR; } total = le32atoh (msg + 4); if (total > 2000000) { /* 2 MB thumbnails ? unlikely ... */ gp_context_error (context, _("ERROR: %d is too big"), total); return GP_ERROR; } *data = malloc (total); if (!*data) { perror ("malloc"); return GP_ERROR; } *length = total; id = gp_context_progress_start (context, total, _("Getting thumbnail...")); while (msg) { if (total_file_size < 20 || le32atoh (msg)) { return GP_ERROR; } size = le32atoh (msg + 12); if (le32atoh (msg + 8) != expect || expect + size > total || size > total_file_size - 20) { GP_DEBUG ("ERROR: doesn't fit"); return GP_ERROR; } memcpy (*data + expect, msg + 20, size); expect += size; gp_context_progress_update (context, id, expect); if ((expect == total) != le32atoh (msg + 16)) { GP_DEBUG ("ERROR: end mark != end of data"); return GP_ERROR; } if (expect == total) { /* We finished receiving the file. Parse the header and return just the thumbnail */ break; } msg = canon_serial_recv_msg (camera, 0x1, 0x21, &total_file_size, context); } gp_context_progress_stop (context, id); return GP_OK; } /**************************************************************************** * * End of file: serial.c * ****************************************************************************/ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/canon/util.h0000644000175000001440000000216412561423351014360 00000000000000/**************************************************************************** * * File: util.h * ****************************************************************************/ #ifndef _CANON_UTIL_H #define _CANON_UTIL_H #include "gphoto2-endian.h" #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif /**************************************************************************** * * prototypes * ****************************************************************************/ void dump_hex ( FILE *fp, void *buffer, int length ); int is_thumbnail (const char *name); int is_audio (const char *name); int is_image (const char *name); int is_movie (const char *name); int is_jpeg (const char *name); int is_crw (const char *name); int is_cr2 (const char *name); const char *filename2mimetype(const char *filename); #endif /* _CANON_UTIL_H */ /**************************************************************************** * * End of file: util.h * ****************************************************************************/ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/canon/canon.c0000644000175000001440000053767612615434660014526 00000000000000/* * canon.c - Canon protocol "native" operations. * * Written 1999 by Wolfgang G. Reissnegger and Werner Almesberger * Additions 2000 by Philippe Marzouk and Edouard Lafargue * USB support, 2000, by Mikael Nystroem * * This file includes both USB and serial support for the cameras * manufactured by Canon. These comprise all (or at least almost all) * of the digital models of the IXUS and PowerShot series, and EOS * D30, D60, and 10D. The EOS-1D and EOS-1Ds are not supported; they * use a FireWire (IEEE 1394) interface. * * We are working at moving serial and USB specific stuff to serial.c * and usb.c, keeping the common protocols/busses support in this * file. */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #ifdef TM_IN_SYS_TIME #include #else #include #endif #ifdef OS2 #include #endif #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "usb.h" #include "util.h" #include "library.h" #include "canon.h" #include "serial.h" #ifdef HAVE_LIBEXIF # include # include #endif /************************************************************************ * Camera definitions ************************************************************************/ /** * models: * * Contains list of all camera models currently supported with their * respective USB IDs and a serial ID String for cameras with RS232 * serial support. * * Some cameras are sold under different names in different regions, * but are technically the same. We treat them the same from a * technical point of view. To avoid unnecessary questions from users, * we add the other names to the camera list after the primary name, * such that their camera name occurs in the list of supported * cameras. * * Notes: * - At least some serial cameras require a certain name for correct * detection. * - Newer Canon USB cameras also support a PTP mode. See ptp2 camlib. * - No IEEE1394 cameras supported yet. * - The size limit constants aren't used properly anywhere. We should * probably get rid of them altogether. **/ /* SL_* - size limit constants */ #define KILOBYTE (1024U) #define MEGABYTE (1024U * KILOBYTE) #define SL_THUMB ( 100U * KILOBYTE) #define SL_THUMB_CR2 ( 10U * MEGABYTE) /* same as regular image */ #define SL_PICTURE ( 10U * MEGABYTE) #define SL_MOVIE_SMALL ( 100U * MEGABYTE) #define SL_MOVIE_LARGE (2048U * MEGABYTE) #define NO_USB 0 /* Models with unknown USB ID's: European name North American Japanese Intro date PowerShot A520 January 2005 Digital IXUS 40 PowerShot SD300 IXY Digital 50 September 2004 PowerShot Pro1 February 2004 PowerShot SD30 IXY i zoom August 2005 PowerShot A410 August 2005 PowerShot A610 August 2005 PowerShot A620 August 2005 Digital IXUS 55 PowerShot SD450 August 2005 Digital IXUS 750 PowerShot SD550 August 2005 PowerShot S80 August 2005 Digital IXUS Wireless PowerShot SD430 August 2005 */ const struct canonCamModelData models[] = { /* *INDENT-OFF* */ {"Canon:PowerShot A5", CANON_CLASS_3, NO_USB, NO_USB, CAP_NON, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, "DE300 Canon Inc."}, {"Canon:PowerShot A5 Zoom", CANON_CLASS_3, NO_USB, NO_USB, CAP_NON, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, "Canon PowerShot A5 Zoom"}, {"Canon:PowerShot A50", CANON_CLASS_1, NO_USB, NO_USB, CAP_NON, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, "Canon PowerShot A50"}, {"Canon:PowerShot Pro70", CANON_CLASS_2, NO_USB, NO_USB, CAP_NON, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, "Canon PowerShot Pro70"}, {"Canon:PowerShot S10", CANON_CLASS_0, 0x04A9, 0x3041, CAP_NON, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, "Canon PowerShot S10"}, /* 3042 is a scanner, so it will never be added here. */ {"Canon:PowerShot S20", CANON_CLASS_0, 0x04A9, 0x3043, CAP_NON, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, "Canon PowerShot S20"}, {"Canon:EOS D30", CANON_CLASS_4, 0x04A9, 0x3044, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot S100 (2000)", CANON_CLASS_0, 0x04A9, 0x3045, CAP_NON, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:IXY DIGITAL", CANON_CLASS_0, 0x04A9, 0x3046, CAP_NON, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS", CANON_CLASS_0, 0x04A9, 0x3047, CAP_NON, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot G1", CANON_CLASS_0, 0x04A9, 0x3048, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, "Canon PowerShot G1"}, {"Canon:PowerShot Pro90 IS", CANON_CLASS_0, 0x04A9, 0x3049, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, "Canon PowerShot Pro90 IS"}, {"Canon:IXY DIGITAL 300", CANON_CLASS_1, 0x04A9, 0x304B, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot S300", CANON_CLASS_1, 0x04A9, 0x304C, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS 300", CANON_CLASS_1, 0x04A9, 0x304D, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A20", CANON_CLASS_1, 0x04A9, 0x304E, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A10", CANON_CLASS_1, 0x04A9, 0x304F, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, /* Mac OS includes this as a valid ID; don't know which camera model --swestin */ {"Canon:PowerShot unknown 1", CANON_CLASS_1, 0x04A9, 0x3050, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, /* Canon IXY DIGITAL 200 here? */ {"Canon:PowerShot S110 (2001)", CANON_CLASS_0, 0x04A9, 0x3051, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS v", CANON_CLASS_0, 0x04A9, 0x3052, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot G2", CANON_CLASS_1, 0x04A9, 0x3055, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot S40", CANON_CLASS_1, 0x04A9, 0x3056, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot S30", CANON_CLASS_1, 0x04A9, 0x3057, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A40", CANON_CLASS_1, 0x04A9, 0x3058, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A30", CANON_CLASS_1, 0x04A9, 0x3059, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, /* 305a is the ZR50 Digital Camcorder in USB Mass Storage mode. */ /* 305b is the ZR45MC Digital Camcorder in USB Mass Storage mode. */ /* 305c is in MacOS Info.plist, but I don't know what it is --swestin. */ {"Canon:PowerShot unknown 2", CANON_CLASS_1, 0x04A9, 0x305c, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:EOS D60", CANON_CLASS_4, 0x04A9, 0x3060, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A100", CANON_CLASS_1, 0x04A9, 0x3061, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A200", CANON_CLASS_1, 0x04A9, 0x3062, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot S200", CANON_CLASS_1, 0x04A9, 0x3065, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS v2", CANON_CLASS_1, 0x04A9, 0x3065, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot S330", CANON_CLASS_1, 0x04A9, 0x3066, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS 330", CANON_CLASS_1, 0x04A9, 0x3066, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, /* 3067 MV550i Digital Video Camera */ /* Reported at http://www.linux-usb.org/usb.ids, we have 306E. */ /*{"Canon:PowerShot G3", CANON_CLASS_1, 0x04A9, 0x3069, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL},*/ /* 306a is in MacOS Info.plist, but I don't know what it is --swestin. */ {"Canon:Digital unknown 3", CANON_CLASS_1, 0x04A9, 0x306a, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Optura 200 MC", CANON_CLASS_1, 0x04A9, 0x306B, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:MVX2i", CANON_CLASS_1, 0x04A9, 0x306B, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:IXY DV M", CANON_CLASS_1, 0x04A9, 0x306B, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot S45 (normal mode)", CANON_CLASS_5, 0x04A9, 0x306C, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* 0x306D is S45 in PTP mode */ {"Canon:PowerShot G3 (normal mode)", CANON_CLASS_5, 0x04A9, 0x306E, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* 0x306F is G3 in PTP mode */ {"Canon:PowerShot S230 (normal mode)", CANON_CLASS_4, 0x04A9, 0x3070, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS v3 (normal mode)", CANON_CLASS_4, 0x04A9, 0x3070, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* 0x3071 is S230/IXUS v3 in PTP mode */ /* Following cameras share the ID for PTP and Canon modes */ #if 0 /* served better by ptp2 driver */ {"Canon:PowerShot SD100 (normal mode)", CANON_CLASS_5, 0x04A9, 0x3072, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS II (normal mode)", CANON_CLASS_5, 0x04A9, 0x3072, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A70", CANON_CLASS_1, 0x04A9, 0x3073, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A60", CANON_CLASS_1, 0x04A9, 0x3074, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS 400", CANON_CLASS_1, 0x04A9, 0x3075, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot S400", CANON_CLASS_1, 0x04A9, 0x3075, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* End of shared ID's */ {"Canon:PowerShot A300", CANON_CLASS_1, 0x04A9, 0x3076, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* S50 also shares ID for PTP and Canon modes */ {"Canon:PowerShot S50 (normal mode)", CANON_CLASS_4, 0x04A9, 0x3077, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, #endif {"Canon:ZR70MC (normal mode)", CANON_CLASS_1, 0x04A9, 0x3078, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, /* 3079 is listed for MV650i, probably in PTP mode. */ {"Canon:MV650i (normal mode)", CANON_CLASS_1, 0x04A9, 0x307a, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, /* 307b is listed for MV630i, probably in PTP mode. */ {"Canon:MV630i (normal mode)", CANON_CLASS_1, 0x04A9, 0x307c, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* 307f is Optura 20/MVX150i in PTP mode, someone told, but it seems not correct. Specify it here too. */ {"Canon:Optura 20", CANON_CLASS_1, 0x04A9, 0x307f, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Optura 20 (normal mode)", CANON_CLASS_1, 0x04A9, 0x3080, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:MVX150i (normal mode)", CANON_CLASS_1, 0x04A9, 0x3080, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* Sighted at * . */ {"Canon:MVX100i", CANON_CLASS_1, 0x04A9, 0x3081, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Optura 10", CANON_CLASS_1, 0x04A9, 0x3082, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:EOS 10D", CANON_CLASS_4, 0x04A9, 0x3083, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:EOS 300D (normal mode)", CANON_CLASS_4, 0x04A9, 0x3084, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:EOS Digital Rebel (normal mode)",CANON_CLASS_4, 0x04A9, 0x3084, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:EOS Kiss Digital (normal mode)",CANON_CLASS_4, 0x04A9, 0x3084, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, #if 0 /* PS G5 uses the same ProductID for PTP and Canon, with protocol autodetection */ /* Use PTP driver, as this driver had broken reports - Marcus*/ {"Canon:PowerShot G5 (normal mode)", CANON_CLASS_5, 0x04A9, 0x3085, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, #endif /* Elura 50 camcorder is 0x3087 in PTP mode; 3088 in Canon mode? */ {"Canon:Elura 50 (normal mode)", CANON_CLASS_1, 0x04A9, 0x3088, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* Optura Xi/MVX 3i/FV M1 uses 308d in PTP mode; 308e in Canon mode? */ {"Canon:Optura Xi (normal mode)", CANON_CLASS_1, 0x04A9, 0x308e, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:MVX 3i (normal mode)", CANON_CLASS_1, 0x04A9, 0x308e, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:FV M1 (normal mode)", CANON_CLASS_1, 0x04A9, 0x308e, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* Optura 300/MVX 10i/IXY DV M2 video camera uses 3093 in USB Mass Storage mode. */ /* Optura 300/MVX 10i/IXY DV M2 video camera uses 3095 in PTP mode; 3096 in Canon mode? */ {"Canon:Optura 300 (normal mode)", CANON_CLASS_1, 0x04A9, 0x3096, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:MVX 10i (normal mode)", CANON_CLASS_1, 0x04A9, 0x3096, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:IXY DV M2 (normal mode)", CANON_CLASS_1, 0x04A9, 0x3096, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* 0x3099 is the EOS 300D/Digital Rebel in PTP mode */ /* A80 seems to share the ID for PTP and Canon modes */ #if 0 /* served better by PTP2 driver, especially for capture */ {"Canon:PowerShot A80 (normal mode)", CANON_CLASS_1, 0x04A9, 0x309A, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, #endif /* 0x309b is the SD10 Digital ELPH/Digital IXUS i/IXY Digital L in PTP mode; will it work in Canon mode? */ {"Canon:PowerShot SD10 Digital ELPH (normal mode)", CANON_CLASS_1, 0x04A9, 0x309B, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS i (normal mode)", CANON_CLASS_1, 0x04A9, 0x309B, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot IXY Digital L (normal mode)", CANON_CLASS_1, 0x04A9, 0x309B, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, #if 0 /* reportedly not working ... comment out for now - Marcus */ /* Product ID shared between PTP and Canon mode */ {"Canon:PowerShot S1 IS (normal mode)", CANON_CLASS_5, 0x04A9, 0x309C, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, #endif /* 30a0 is ZR90/MV750i camcorder */ /* 30a8 is Elura 60E/MVX200i camcorder in PTP mode; don't know * if it will respond in native mode at the same product * ID. */ /* 30a9 is Optura 40/MVX25i camcorder, reported working at * . Seems * to share ID with PTP. */ {"Canon:Optura 40 (normal mode)", CANON_CLASS_1, 0x04A9, 0x30A9, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:MVX25i (normal mode)", CANON_CLASS_1, 0x04A9, 0x30A9, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, #if 0 /* Handled in ptp2, better for capture etc. -Marcus */ /* Another block of cameras that share the ID for PTP and Canon modes */ {"Canon:PowerShot S70 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30b1, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot S60 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30b2, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot G6 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30b3, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS 500 (normal mode)",CANON_CLASS_5, 0x04A9, 0x30b4, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot S500 Digital ELPH (normal mode)",CANON_CLASS_5, 0x04A9, 0x30b4, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:IXY Digital 500 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30b4, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A75", CANON_CLASS_1, 0x04A9, 0x30b5, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot SD110 Digital ELPH", CANON_CLASS_1, 0x04A9, 0x30b6, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS IIs", CANON_CLASS_1, 0x04A9, 0x30b6, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A400", CANON_CLASS_5, 0x04A9, 0x30b7, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A310", CANON_CLASS_5, 0x04A9, 0x30b8, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A85 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30b9, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot S410 Digital ELPH (normal mode)", CANON_CLASS_5, 0x04A9, 0x30ba, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS 430 (normal mode)",CANON_CLASS_5, 0x04A9, 0x30ba, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:IXY Digital 430 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30ba, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A95 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30bb, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* 0x30bf is PowerShot SD300/Digital IXUS 40 in PTP mode */ #endif /* Another block of cameras that share the ID for PTP and Canon modes */ /* keep these enabled as the PTP variant does not support capture */ {"Canon:PowerShot SD200 (normal mode)", CANON_CLASS_6, 0x04A9, 0x30c0, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS 30 (normal mode)", CANON_CLASS_6, 0x04A9, 0x30c0, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:IXY Digital 40 (normal mode)", CANON_CLASS_6, 0x04A9, 0x30c0, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, #if 0 {"Canon:PowerShot SD400 (normal mode)", CANON_CLASS_4, 0x04A9, 0x30c1, CAP_NON, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS 50 (normal mode)", CANON_CLASS_4, 0x04A9, 0x30c1, CAP_NON, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:IXY Digital 55 (normal mode)", CANON_CLASS_4, 0x04A9, 0x30c1, CAP_NON, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:PowerShot A510 (normal mode)", CANON_CLASS_1, 0x04A9, 0x30c2, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, /* End of shared ID's */ #endif {"Canon:PowerShot SD20 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30c4, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS i5 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30c4, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, {"Canon:IXY Digital L2 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30c4, CAP_SUP, SL_MOVIE_SMALL, SL_THUMB, SL_PICTURE, NULL}, /* Is 0x30e9 EOS 1D Mark II in Canon mode? */ /* 0x30ea is EOS 1D Mark II in PTP mode */ {"Canon:EOS 20D (normal mode)", CANON_CLASS_6, 0x04A9, 0x30eb, CAP_EXP, SL_MOVIE_LARGE, SL_THUMB_CR2, SL_PICTURE, NULL}, /* 0x30ec is EOS 20D in PTP mode */ {"Canon:EOS 350D (normal mode)", CANON_CLASS_6, 0x04A9, 0x30ee, CAP_EXP, SL_MOVIE_LARGE, SL_THUMB_CR2, SL_PICTURE, NULL}, {"Canon:Digital Rebel XT (normal mode)", CANON_CLASS_6, 0x04A9, 0x30ee, CAP_EXP, SL_MOVIE_LARGE, SL_THUMB_CR2, SL_PICTURE, NULL}, {"Canon:EOS Kiss Digital N (normal mode)", CANON_CLASS_6, 0x04A9, 0x30ee, CAP_EXP, SL_MOVIE_LARGE, SL_THUMB_CR2, SL_PICTURE, NULL}, /* 30ef is EOS 350D/Digital Rebel XT/EOS Kiss Digital N in PTP mode. */ {"Canon:EOS 5D (normal mode)", CANON_CLASS_6, 0x04A9, 0x3101, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, #if 0 /* reportedly not working ... comment out for now - Marcus */ {"Canon:PowerShot S2 IS (normal mode)", CANON_CLASS_1, 0x04A9, 0x30f0, CAP_EXP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, #endif #if 0 /* reportedly not working either. failing with lock keys - Marcus */ {"Canon:PowerShot SD500 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30f2, CAP_NON, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:Digital IXUS 700 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30f2, CAP_NON, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, {"Canon:IXY Digital 600 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30f2, CAP_NON, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, #endif /* I was not able to make A620 work with CLASS 5, 1 and 6. -Marcus */ #if 0 /* also reported as not working. */ {"Canon:PowerShot A610 (normal mode)", CANON_CLASS_5, 0x04A9, 0x30fd, CAP_SUP, SL_MOVIE_LARGE, SL_THUMB, SL_PICTURE, NULL}, #endif {NULL, CANON_CLASS_NONE, 0x0000, 0x0000, CAP_NON, 0U, 0U, 0U, NULL} /* *INDENT-ON* */ }; #undef NO_USB #undef SL_MOVIE_LARGE #undef SL_MOVIE_SMALL #undef SL_PICTURE #undef S1M #undef SL_THUMB #ifndef HAVE_TM_GMTOFF /* required for time conversions in canon_int_set_time() */ extern long int timezone; #endif /************************************************************************ * Methods ************************************************************************/ /* Simulate capabilities * * If you need to change these for a certain camera, it is time to * introduce and use general capabilities as replacement. */ #define extra_file_for_thumb_of_jpeg FALSE #define extra_file_for_thumb_of_crw TRUE #define extra_file_for_thumb_of_cr2 FALSE #ifdef __GNUC__ # define __unused__ __attribute__((unused)) #else # define __unused__ #endif static int canon_int_set_release_params (Camera *camera, GPContext *context); static const char * canon2gphotopath (Camera __unused__ *camera, const char *path); /*! \brief Return filename with extension replaced * * We just replace file ending by .THM and assume this is the * name of the thumbnail file. * * CAUTION! * - This function does not consider the newext parameter. * - This function is NOT threadsafe! */ static const char * replace_filename_extension(const char *filename, const char __unused__ *newext) { char *p; static char buf[1024]; /* We just replace file ending by .THM and assume this is the * name of the thumbnail file. */ if (sizeof(buf) < strlen (filename) + 1) { GP_DEBUG ("replace_filename_extension: Buffer too small in %s line %i.", __FILE__, __LINE__); return NULL; } strncpy (buf, filename, sizeof (buf) - 1); if ((p = strrchr (buf, '.')) == NULL) { GP_DEBUG ("replace_filename_extension: No '.' found in filename '%s' " "in %s line %i.", filename, __FILE__, __LINE__); return NULL; } if ((unsigned int)(p - buf) < sizeof (buf) - 4) { strncpy (p, ".THM", 4); GP_DEBUG ("replace_filename_extension: New name for '%s' is '%s'", filename, buf); return buf; } else { GP_DEBUG ("replace_filename_extension: " "New name for filename '%s' doesnt fit in %s line %i.", filename, __FILE__, __LINE__); return NULL; } } /*! \brief Return filename with extension replaced * * We just replace file ending by .WAV, the first three * letters by SND and assume this is the name of the audio file. * * CAUTION! * - This function does not consider the newext parameter. * - This function is NOT threadsafe! */ static char * filename_to_audio(const char *filename, const char __unused__ *newext) { char *p; static char buf[1024]; if (sizeof(buf) < strlen (filename) + 1) { GP_DEBUG ("filename_to_audio: Buffer too small in %s line %i.", __FILE__, __LINE__); return NULL; } strncpy (buf, filename, sizeof (buf) - 1); if ((p = strrchr (buf, '_')) == NULL) { GP_DEBUG ("filename_to_audio: No '.' found in filename '%s' " "in %s line %i.", filename, __FILE__, __LINE__); return NULL; } if ((p - buf) > 3) { p -= 3; p[0] = 'S'; p[1] = 'N'; p[2] = 'D'; } if ((p = strrchr (buf, '.')) == NULL) { GP_DEBUG ("filename_to_audio: No '.' found in filename '%s' " "in %s line %i.", filename, __FILE__, __LINE__); return NULL; } if ((unsigned int)(p - buf) < sizeof (buf) - 4) { strncpy (p, ".WAV", 4); GP_DEBUG ("filename_to_audio: New name for '%s' is '%s'", filename, buf); return buf; } else { GP_DEBUG ("filename_to_audio: " "New name for filename '%s' doesnt fit in %s line %i.", filename, __FILE__, __LINE__); return NULL; } } /** * canon_int_filename2audioname: * @camera: Camera to work on * @filename: the file for which to get the name of the audio annotation * * The identifier returned is * a) NULL if no audio file exists for this file or an internal error occurred * b) pointer to string with file name of the corresponding thumbnail * c) pointer to filename in case filename is a thumbnail itself * * Returns: identifier for corresponding thumbnail */ const char * canon_int_filename2audioname (Camera __unused__ *camera, const char *filename) { char *result; /* We use the audio file itself as the audio file. In short: * audiofile = audiofile(audiofile) */ if (is_audio (filename)) { GP_DEBUG ("canon_int_filename2audioname: \"%s\" IS an audio file", filename); return filename; } /* There are only audio files for images and movies */ if (!(is_movie (filename) || is_image (filename))) { GP_DEBUG ("canon_int_filename2audioname: " "\"%s\" is neither movie nor image -> no audio file", filename); return NULL; } result = filename_to_audio (filename, ".WAV"); GP_DEBUG ("canon_int_filename2audioname: audio for file \"%s\" is external: \"%s\"", filename, result); return result; } /** * canon_int_filename2thumbname: * @camera: Camera to work on * @filename: the file to get the name of the thumbnail of * * The identifier returned is * a) NULL if no thumbnail exists for this file or an internal error occurred * b) pointer to empty string if thumbnail is contained in the file itself * c) pointer to string with file name of the corresponding thumbnail * d) pointer to filename in case filename is a thumbnail itself * * Returns: identifier for corresponding thumbnail */ const char * canon_int_filename2thumbname (Camera __unused__ *camera, const char *filename) { static char *nullstring = ""; /* First handle cases where we shouldn't try to get extra .THM * file but use the special get_thumbnail_of_xxx function. */ if (!extra_file_for_thumb_of_jpeg && is_jpeg (filename)) { GP_DEBUG ("canon_int_filename2thumbname: thumbnail for JPEG \"%s\" is internal", filename); return nullstring; } if (!extra_file_for_thumb_of_crw && is_crw (filename)) { GP_DEBUG ("canon_int_filename2thumbname: thumbnail for CRW \"%s\" is internal", filename); return nullstring; } if (!extra_file_for_thumb_of_cr2 && is_cr2 (filename)) { GP_DEBUG ("canon_int_filename2thumbname: thumbnail for CR2 \"%s\" is internal", filename); return nullstring; } /* We use the thumbnail file itself as the thumbnail of the * thumbnail file. In short thumbfile = thumbnail(thumbfile) */ if (is_thumbnail (filename)) { GP_DEBUG ("canon_int_filename2thumbname: \"%s\" IS a thumbnail file", filename); return filename; } /* There are only thumbnails for images and movies */ if (!is_movie (filename) && !is_image (filename)) { GP_DEBUG ("canon_int_filename2thumbname: " "\"%s\" is neither movie nor image -> no thumbnail", filename); return NULL; } GP_DEBUG ("canon_int_filename2thumbname: thumbnail for file \"%s\" is external", filename); /* We just replace file ending by .THM and assume this is the * name of the thumbnail file. */ return replace_filename_extension (filename, ".THM"); /* never reached */ return NULL; } /** * canon_int_directory_operations: * @camera: Camera to work on * @path: Path to directory on which to operate * @action: #canonDirFunctionCode (either #DIR_CREATE or #DIR_REMOVE) * @context: context for error reporting * * Creates or removes a directory in camera storage. * * * Returns: gphoto2 status code. %GP_OK on success, otherwise status * from canon_serial_error(), %GP_ERROR if USB operation fails, * %GP_ERROR_CORRUPTED_DATA if the camera response is not the expected * length, %GP_ERROR_BAD_PARAMETERS if @action is invalid. * */ int canon_int_directory_operations (Camera *camera, const char *path, canonDirFunctionCode action, GPContext *context) { unsigned char *msg; unsigned int len; int canon_usb_funct; char type; switch (action) { case DIR_CREATE: type = 0x5; canon_usb_funct = CANON_USB_FUNCTION_MKDIR; break; case DIR_REMOVE: type = 0x6; canon_usb_funct = CANON_USB_FUNCTION_RMDIR; break; default: GP_DEBUG ("canon_int_directory_operations: " "Bad operation specified : %i", action); return GP_ERROR_BAD_PARAMETERS; break; } GP_DEBUG ("canon_int_directory_operations() called to %s the directory '%s'", canon_usb_funct == CANON_USB_FUNCTION_MKDIR ? "create" : "remove", path); switch (camera->port->type) { case GP_PORT_USB: msg = canon_usb_dialogue (camera, canon_usb_funct, &len, (unsigned char *)path, strlen (path) + 1); if ( msg == NULL ) return GP_ERROR_OS_FAILURE; break; case GP_PORT_SERIAL: msg = canon_serial_dialogue (camera, context, type, 0x11, &len, path, strlen (path) + 1, NULL); if ( msg == NULL ) { canon_serial_error_type (camera); return GP_ERROR_OS_FAILURE; } break; GP_PORT_DEFAULT } if (len != 0x4) { GP_DEBUG ("canon_int_directory_operations: Unexpected amount " "of data returned (expected %i got %i)", 0x4, len); return GP_ERROR_CORRUPTED_DATA; } if (msg[0] != 0x00) { if ( action == DIR_CREATE ) gp_context_error (context, _("Could not create directory %s."), path ); else gp_context_error (context, _("Could not remove directory %s."), path); return GP_ERROR_CAMERA_ERROR; } return GP_OK; } /** * canon_int_identify_camera: * @camera: the camera to work with * @context: context for error reporting * * Gets the camera identification string, usually the owner name. * * This information is then stored in the "camera" structure, which * is a global variable for the driver. * * This function also gets the firmware revision in the camera struct. * * Returns: gphoto2 error code * */ int canon_int_identify_camera (Camera *camera, GPContext *context) { unsigned char *msg; unsigned int len; GP_DEBUG ("canon_int_identify_camera() called"); switch (camera->port->type) { case GP_PORT_USB: msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_IDENTIFY_CAMERA, &len, NULL, 0); if ( msg == NULL ) return GP_ERROR_OS_FAILURE; break; case GP_PORT_SERIAL: msg = canon_serial_dialogue (camera, context, 0x01, 0x12, &len, NULL); if ( msg == NULL ) { GP_DEBUG ("canon_int_identify_camera: msg error"); canon_serial_error_type (camera); return GP_ERROR_OS_FAILURE; } break; GP_PORT_DEFAULT } if (len != 0x4c) { GP_DEBUG ("canon_int_identify_camera: Unexpected length returned " "(expected %i got %i); continuing.", 0x4c, len); } /* Store these values in our "camera" structure: */ memcpy (camera->pl->firmwrev, (char *) msg + 8, 4); strncpy (camera->pl->ident, (char *) msg + 12, 32); if ( camera->pl->md->model != CANON_CLASS_6 ) strncpy (camera->pl->owner, (char *) msg + 44, 32); else { /* Need to get owner explicitly. */ msg = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_GET_OWNER, &len, NULL, 0 ); if ( msg == NULL ) return GP_ERROR_OS_FAILURE; strncpy (camera->pl->owner, (char *) msg + 4, 32); } GP_DEBUG ("canon_int_identify_camera: ident '%s' owner '%s', firmware %d.%d.%d.%d", camera->pl->ident, camera->pl->owner, camera->pl->firmwrev[3], camera->pl->firmwrev[2], camera->pl->firmwrev[1], camera->pl->firmwrev[0] ); return GP_OK; } /** * canon_int_get_battery: * @camera: the camera to work on * @pwr_status: pointer to integer determining power status * @pwr_source: pointer to integer determining power source * @context: context for error reporting * * Gets battery status. * * Returns: gphoto2 error code * */ int canon_int_get_battery (Camera *camera, int *pwr_status, int *pwr_source, GPContext *context) { unsigned char *msg; unsigned int len; GP_DEBUG ("canon_int_get_battery()"); switch (camera->port->type) { case GP_PORT_USB: if ( camera->pl->md->model == CANON_CLASS_6 ) /* Newer protocol uses a different code, but with same response. */ msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_POWER_STATUS_2, &len, NULL, 0); else msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_POWER_STATUS, &len, NULL, 0); if ( msg == NULL ) return GP_ERROR_OS_FAILURE; break; case GP_PORT_SERIAL: msg = canon_serial_dialogue (camera, context, 0x0a, 0x12, &len, NULL); if ( msg == NULL ) { canon_serial_error_type (camera); return GP_ERROR_OS_FAILURE; } break; GP_PORT_DEFAULT } if (len != 0x8) { GP_DEBUG ("canon_int_get_battery: Unexpected length returned " "(expected %i got %i)", 0x8, len); return GP_ERROR_CORRUPTED_DATA; } if (pwr_status) *pwr_status = msg[4]; if (pwr_source) *pwr_source = msg[7]; GP_DEBUG ("canon_int_get_battery: Status: %02x (%s) / Source: %02x (%s)", msg[4], (msg[4]==CAMERA_POWER_OK?"OK":"BAD"), msg[7], (msg[7]&CAMERA_MASK_BATTERY?"BATTERY":"AC") ); return GP_OK; } /** * canon_int_get_picture_abilities: * @camera: the camera to work on * @context: the context to print on error * * Reads the camera picture abilities, but ignores them as we don't * know how to interpret the data. * NOTE: Command is not implemented for some cameras * and will cause an error if issued. The cameras for which we know * it won't work are * EOS D30 * EOS D60 * PowerShot S45. * NOTE: The "Protocol" file said that exactly 0x380 (900) bytes would * be returned, but it's actually 904 bytes for the PowerShot G2. * I don't know whether this was an error in the "Protocol" document * or if different models return different lengths. -swestin 2002.01.09 * * Returns: gphoto2 error code * */ #if 0 /* This function is not used by anybody */ static int canon_int_get_picture_abilities (Camera *camera, GPContext *context) { unsigned char *msg; unsigned int len; GP_DEBUG ("canon_int_get_picture_abilities()"); switch (camera->port->type) { case GP_PORT_USB: msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_GET_PIC_ABILITIES, &len, NULL, 0); if ( msg == NULL ) return GP_ERROR_OS_FAILURE; break; case GP_PORT_SERIAL: msg = canon_serial_dialogue (camera, context, 0x1f, 0x12, &len, NULL); if ( msg == NULL ) { canon_serial_error_type (camera); return GP_ERROR_OS_FAILURE; } break; GP_PORT_DEFAULT } if (len != 0x334) { GP_DEBUG ("canon_int_get_picture_abilities: Unexpected length returned " "(expected %i got %i)", 0x334, len); return GP_ERROR_CORRUPTED_DATA; } return GP_OK; } #endif /** * canon_int_pack_control_subcmd * @payload: to receive payload for %CANON_USB_FUNCTION_CONTROL_CAMERA * command * @subcmd: Subcommand for remote capture command * (e.g. %CANON_USB_CONTROL_SHUTTER_RELEASE) * @word0: 32-bit first word of payload (first command parameter) * @word1: 32-bit second word of payload (second command parameter) * @desc: to receive string describing subcommand. * * Builds the payload for a remote capture command. The length varies * by command, so this function a buffer of the correct size with the * proper stuff. * * Returns: size of payload buffer, payload data in @payload, command * description in @desc * */ static int canon_int_pack_control_subcmd (unsigned char *payload, unsigned int subcmd, int word0, int word1, char *desc) { int i, paysize; i = 0; while (canon_usb_control_cmd[i].num != 0) { if (canon_usb_control_cmd[i].num == subcmd) break; i++; } if (canon_usb_control_cmd[i].num == 0) { GP_DEBUG ("canon_int_pack_control_subcmd: unknown subcommand %d", subcmd); sprintf (desc, "unknown subcommand"); return 0; } sprintf (desc, "%s", canon_usb_control_cmd[i].description); paysize = canon_usb_control_cmd[i].cmd_length - 0x10; memset (payload, 0, paysize); if (paysize >= 0x04) htole32a(payload, canon_usb_control_cmd[i].subcmd); if (paysize >= 0x08) htole32a(payload+0x4, word0); if (paysize >= 0x0c) htole32a(payload+0x8, word1); return paysize; } /** * canon_int_do_control_command: * @camera: Camera to work on * @subcmd: Subcommand for remote capture command * (e.g. %CANON_USB_CONTROL_INIT) * @a: 32-bit first word of payload (first command parameter) * @b: 32-bit second word of payload (second command parameter) * * Executes a normal remote capture command (i.e. not * %CANON_USB_CONTROL_SHUTTER_RELEASE, which has its own special * function). * * Returns: gphoto2 status code * */ static int canon_int_do_control_command (Camera *camera, unsigned int subcmd, int a, int b) { unsigned char payload[0x4c]; char desc[128]; int payloadlen; unsigned int datalen = 0; unsigned char *msg = NULL; payloadlen = canon_int_pack_control_subcmd(payload, subcmd, a, b, desc); GP_DEBUG("%s++ with %x, %x", desc, a, b); if ( camera->pl->md->model == CANON_CLASS_6 ) { /* Newer protocol uses a different code, but with same * response. It also needs an extra zero byte at the * end. */ payload[payloadlen++] = 0; msg = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_CONTROL_CAMERA_2, &datalen, payload, payloadlen ); } else msg = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_CONTROL_CAMERA, &datalen, payload, payloadlen ); if ( msg == NULL && datalen != 0x1c) { /* ERROR */ GP_DEBUG("%s datalen=%x", desc, datalen); return GP_ERROR_CORRUPTED_DATA; } msg = NULL; datalen = 0; GP_DEBUG("%s--", desc); return GP_OK; } /** * canon_int_do_control_dialogue_payload: * @camera: Camera to work on * @subcmd: Subcommand for remote capture command * (e.g. %CANON_USB_CONTROL_INIT) * @payload: pointer to the payload data buffer to send to the camera * @payloadlen: length of the payload to send to the camera * @response_handle: pointer to a pointer where the camera response buffer * address should be stored. * @datalen: the length of the response data from the camera * * Executes a command with arbitrary parameter data that returns data * from the camera, e.g., get release parameters, set release parameters. * This function provides the caller full control over payload data. * * Returns: gphoto2 status code, camera response data in @response_handle, * length of the response in @datalen * */ static int canon_int_do_control_dialogue_payload (Camera *camera, unsigned char *payload, unsigned int payloadlen, unsigned char **response_handle, unsigned int *datalen) { unsigned char *msg; GP_DEBUG("canon_int_do_control_dialogue_payload++"); if ( camera->pl->md->model == CANON_CLASS_6 ) { /* Newer protocol uses a different code, but with same * response. It also needs an extra zero byte at the * end. */ payload[payloadlen++] = 0; msg = canon_usb_dialogue_full ( camera, CANON_USB_FUNCTION_CONTROL_CAMERA_2, datalen, payload, payloadlen); } else msg = canon_usb_dialogue_full ( camera, CANON_USB_FUNCTION_CONTROL_CAMERA, datalen, payload, payloadlen); if ( msg == NULL && *datalen != 0x1c) { /* ERROR */ GP_DEBUG("canon_int_do_control_dialogue_payload error: " "datalen=%x", *datalen); return GP_ERROR_CORRUPTED_DATA; } *response_handle = msg; GP_DEBUG("canon_int_do_control_dialogue_payload--"); return GP_OK; } /** * canon_int_do_control_dialogue: * @camera: Camera to work on * @subcmd: Subcommand for remote capture command * (e.g. %CANON_USB_CONTROL_INIT) * @a: 32-bit first word of payload (first command parameter) * @b: 32-bit second word of payload (second command parameter) * @response_handle: pointer to a pointer where the camera response buffer * address should be stored. * @datalen: the length of the response data from the camera * * Executes a remote capture command that returns data from the * camera, e.g., get release parameters. * * Returns: gphoto2 status code, camera response data in @response_handle, * length of the response in @datalen * */ static int canon_int_do_control_dialogue (Camera *camera, unsigned int subcmd, int a, int b, unsigned char **response_handle, unsigned int *datalen) { unsigned char payload[0x4c]; char desc[128]; int payloadlen; int status; payloadlen = canon_int_pack_control_subcmd (payload, subcmd, a, b, desc); GP_DEBUG("%s++ with %x, %x", desc, a, b); status = canon_int_do_control_dialogue_payload (camera, payload, payloadlen, response_handle, datalen); if ( status < 0 ) { /* ERROR */ GP_DEBUG("%s error: datalen=%x", desc, *datalen); return GP_ERROR_CORRUPTED_DATA; } GP_DEBUG("%s--", desc); return GP_OK; } /** * canon_int_start_remote_control: * @camera: Camera to work on * @context: context for error reporting * * Initiate remote control of the shutter release and related photographic * parameters. * * Returns: gphoto2 status code * */ int canon_int_start_remote_control (Camera *camera, GPContext __unused__ *context) { int status; if (camera->pl->remote_control) { GP_DEBUG ("canon_int_start_remote_control: Camera already under remote control"); return GP_ERROR; } /* Init, extends camera lens, puts us in remote capture mode */ status = canon_int_do_control_command (camera, CANON_USB_CONTROL_INIT, 0, 0); if (status == GP_OK) camera->pl->remote_control = 1; return status; } /** * canon_int_end_remote_control: * @camera: Camera to work on * @context: context for error reporting * * Terminate remote control of the shutter release and related photographic * parameters. * * Returns: gphoto2 status code * */ int canon_int_end_remote_control (Camera *camera, GPContext __unused__ *context) { int status; if (!camera->pl->remote_control) { GP_DEBUG ("canon_int_end_remote_control: Camera not currently under remote control"); return GP_ERROR; } /* End release mode */ status = canon_int_do_control_command (camera, CANON_USB_CONTROL_EXIT, 0, 0); if (status == GP_OK) camera->pl->remote_control = 0; return status; } /** * canon_int_capture_preview * @camera: camera to work with * @data: gets thumbnail image data. * @length: gets length of @data. * @context: context for error reporting * * Directs the camera to capture an image without storing it on the * camera. (remote shutter release via USB). The thumbnail will be * returned in @data. See the 'Protocol' file for details. Capture * through serial port is not (yet) supported. * * Returns: gphoto2 error code * */ int canon_int_capture_preview (Camera *camera, unsigned char **data, unsigned int *length, GPContext *context) { canonTransferMode transfermode; int mstimeout = -1; int status; unsigned int return_length; unsigned int b_length_orig = 0; unsigned int *b_length = &b_length_orig; unsigned char *b_data_orig = NULL; unsigned char **b_data = &b_data_orig; int photo_status; /* Should we download the thumbnail, or the full image ? */ if (camera->pl->capture_size == CAPTURE_FULL_IMAGE) transfermode = REMOTE_CAPTURE_FULL_TO_PC; else transfermode = REMOTE_CAPTURE_THUMB_TO_PC; switch (camera->port->type) { case GP_PORT_USB: gp_port_get_timeout (camera->port, &mstimeout); GP_DEBUG("canon_int_capture_preview: usb port timeout starts at %dms", mstimeout); camera->pl->image_b_key = 0x0; camera->pl->image_b_length = 0x0; /* * Send a sequence of CONTROL_CAMERA commands. */ if (!camera->pl->remote_control) { gp_port_set_timeout (camera->port, 15000); status = canon_int_start_remote_control (camera, context); if ( status < 0 ) return status; } /* * Set the captured image transfer mode. We have four options * that we can specify any combo of, captured thumb to PC, * full to PC, thumb to disk, and full to disk. * * The to-PC option will return a length and integer * key from canon_usb_capture_dialogue() to use in the * "Download Captured Image" command. * */ GP_DEBUG ( "canon_int_capture_preview: transfer mode is %x", transfermode ); status = canon_int_do_control_command (camera, CANON_USB_CONTROL_SET_TRANSFER_MODE, 0x04, transfermode); if ( status < 0 ) return status; gp_port_set_timeout (camera->port, mstimeout); GP_DEBUG("canon_int_capture_preview: set camera port timeout back to %d seconds...", mstimeout / 1000 ); /* Get release parameters a couple of times, just to see if that helps. */ status = canon_int_do_control_command (camera, CANON_USB_CONTROL_GET_PARAMS, 0x04, transfermode); if ( status < 0 ) return status; status = canon_int_do_control_command (camera, CANON_USB_CONTROL_GET_PARAMS, 0x04, transfermode); if ( status < 0 ) return status; /* Lock keys here for EOS cameras */ if ( camera->pl->md->model == CANON_CLASS_4 || camera->pl->md->model == CANON_CLASS_6 ) { status = canon_usb_lock_keys(camera,context); if ( status < 0 ) { gp_context_error (context, _("lock keys failed.")); return status; } } /* Shutter Release Can't use normal "canon_int_do_control_command", as we must read the interrupt pipe before the response comes back for this commmand. */ *data = canon_usb_capture_dialogue ( camera, &return_length, &photo_status, context ); if ( *data == NULL ) { /* Try to leave camera in a usable state. */ canon_int_end_remote_control (camera, context); /* XXX It would be nice if we had a way to decode the camera error state for the caller application. For example, photo_status == 0x01 seems to mean "autofocus failure" on the EOS 5D. */ if (photo_status != 0) return GP_ERROR_CAMERA_ERROR; else return GP_ERROR_OS_FAILURE; } if (transfermode == REMOTE_CAPTURE_FULL_TO_PC) { /* Download the image. */ if ( camera->pl->image_length > 0 ) { status = canon_usb_get_captured_image ( camera, camera->pl->image_key, data, length, context ); if ( status < 0 ) { GP_DEBUG ( "canon_int_capture_preview:" " image download failed, status= %i", status ); return status; } } /* Download the secondary image, if one exists */ if ( camera->pl->image_b_length > 0 ) { status = canon_usb_get_captured_secondary_image ( camera, camera->pl->image_b_key, b_data, b_length, context ); if ( status < 0 ) { GP_DEBUG ( "canon_int_capture_preview:" " secondary image download failed, status= %i", status ); return status; } /* Get rid of it */ /* XXX maybe this should be changed in the future * to do something else with it */ free(b_data_orig); } } else if (transfermode == REMOTE_CAPTURE_THUMB_TO_PC) { /* Download the thumbnail image. */ if ( camera->pl->thumb_length > 0 ) { status = canon_usb_get_captured_thumbnail ( camera, camera->pl->image_key, data, length, context ); if ( status < 0 ) { GP_DEBUG ( "canon_int_capture_preview:" " thumbnail download failed, status= %i", status ); return status; } } } break; case GP_PORT_SERIAL: return GP_ERROR_NOT_SUPPORTED; break; GP_PORT_DEFAULT } return GP_OK; } /** * canon_int_find_new_image: * @camera: Camera * to this camera * @initial_state: Camera directory dump before image capture * @final_state: Directory dump after image capture * @path: Will be filled in with the path and filename of the captured * image, in canonical gphoto2 format. * * Compares two complete dumps of the camera directory: before and * after an image capture command. The first new image file is found, * and its pathname is decoded into the given CameraFilePath. * */ void canon_int_find_new_image ( Camera *camera, unsigned char *initial_state, unsigned char *final_state, CameraFilePath *path ) { char *old_entry = (char *)initial_state, *new_entry = (char *)final_state; /* Set default path name */ strncpy ( path->name, _("*UNKNOWN*"), sizeof(path->name) ); strncpy ( path->folder, _("*UNKNOWN*"), sizeof(path->folder) ); path->folder[0] = 0; /* Start with null pathname string. */ GP_DEBUG ( "canon_int_find_new_image: starting directory compare" ); while ( le16atoh ( old_entry+CANON_DIRENT_ATTRS ) != 0 || le32atoh ( old_entry + CANON_DIRENT_SIZE ) != 0 || le32atoh ( old_entry + CANON_DIRENT_TIME ) != 0 ) { char *old_name = old_entry + CANON_DIRENT_NAME, *new_name = new_entry + CANON_DIRENT_NAME; GP_DEBUG ( " old entry \"%s\", attr = 0x%02x, size=%i", old_name, old_entry[CANON_DIRENT_ATTRS], le32atoh ( old_entry + CANON_DIRENT_SIZE ) ); GP_DEBUG ( " new entry \"%s\", attr = 0x%02x, size=%i", new_name, new_entry[CANON_DIRENT_ATTRS], le32atoh ( new_entry + CANON_DIRENT_SIZE ) ); if ( *old_entry != *new_entry || le32atoh ( old_entry + CANON_DIRENT_SIZE ) != le32atoh ( new_entry + CANON_DIRENT_SIZE ) || le32atoh ( old_entry + CANON_DIRENT_TIME ) != le32atoh ( new_entry + CANON_DIRENT_TIME ) || strcmp ( old_name, new_name ) ) { /* Mismatch. Presumably a new file, but is it an image file? */ GP_DEBUG ( "Found mismatch" ); if ( is_image ( new_name ) ) { /* Yup, we'll assume that this is the new image. */ GP_DEBUG ( " Found our new image file" ); strcpy ( path->name, new_name ); strcpy ( path->folder, canon2gphotopath ( camera, path->folder ) ); /* FIXME: Marcus: make it less large effort... */ gp_filesystem_reset (camera->fs); break; } else { /* The mismatch is not an image file. There are three possibilities: 1. This is a new directory with no files. The next entry will be another directory. 2. This is an auxiliary file (sound, thumbnail, catalog). In either of these cases, the thing to do is to skip this entry in the new directory. 3. This is a new directory with new files, and we will enter it. The next entry in the new directory will be a new file, which may well be our new image file. */ if ( le16atoh ( new_entry+CANON_DIRENT_ATTRS ) & CANON_ATTR_RECURS_ENT_DIR ) { if ( !strcmp ( "..", new_name ) ) { /* Pop out of this directory */ char *local_dir = strrchr(path->folder,'\\') + 1; /* The EOS 350D has * ".." entries right * up to the root, so * we need to avoid * dereferencing a * null pointer. */ if ( local_dir != NULL && local_dir > path->folder ) { GP_DEBUG ( "Leaving directory \"%s\"", local_dir ); local_dir[-1] = 0; } else GP_DEBUG ( "Leaving top directory" ); } else { /* New directory, and we need to enter it. */ GP_DEBUG ( "Entering directory \"%s\"", new_name ); if ( new_entry[CANON_DIRENT_NAME] == '.' ) /* Ignore a leading dot */ strncat ( path->folder, new_name + 1, sizeof(path->folder) - strlen(path->folder) - 1 ); else strncat ( path->folder, new_name, sizeof(path->folder) - strlen(path->folder) - 1 ); } } new_entry += CANON_MINIMUM_DIRENT_SIZE + strlen ( new_entry+CANON_DIRENT_NAME ); } } else { if ( le16atoh ( old_entry+CANON_DIRENT_ATTRS ) & CANON_ATTR_RECURS_ENT_DIR ) { /* Entered a new directory; append its name to the current folder path. The end of a directory is signaled by an entry with zero length and time, and name "..". */ if ( !strcmp ( "..", old_name ) ) { /* Pop out of this directory */ char *local_dir = strrchr(path->folder,'\\') + 1; /* The EOS 350D has * ".." entries right * up to the root, so * we need to avoid * dereferencing a * null pointer. */ if ( local_dir != NULL && local_dir > path->folder ) { GP_DEBUG ( "Leaving directory \"%s\"", local_dir ); local_dir[-1] = 0; } else GP_DEBUG ( "Leaving top directory" ); } else { GP_DEBUG ( "Entering directory \"%s\"", old_name ); if ( old_name[0] == '.' ) /* Ignore a leading dot */ strncat ( path->folder, old_name + 1, sizeof(path->folder) - strlen(path->folder) - 1 ); else strncat ( path->folder, old_name, sizeof(path->folder) - strlen(path->folder) - 1 ); } } /* Move to next entry */ new_entry += CANON_MINIMUM_DIRENT_SIZE + strlen ( new_entry+CANON_DIRENT_NAME ); old_entry += CANON_MINIMUM_DIRENT_SIZE + strlen ( old_entry+CANON_DIRENT_NAME ); } } } /** * canon_int_capture_image: * @camera: camera to work with * @path: gets filled in with the path and filename of the captured * image, in canonical gphoto2 format. * @context: context for error reporting * * Directs the camera to capture an image (remote shutter release via * USB). See the 'Protocol' file for details. Capture through serial * port is not (yet) supported. * * Returns: gphoto2 error code * */ int canon_int_capture_image (Camera *camera, CameraFilePath *path, GPContext *context) { canonTransferMode transfermode; int mstimeout = -1; int status; unsigned int return_length; unsigned char *data = NULL; unsigned char *initial_state, *final_state; /* For comparing * before/after * directories */ unsigned int initial_state_len, final_state_len; int photo_status; /* Should we save the thumbnail, or the full image ? */ if (camera->pl->capture_size == CAPTURE_THUMB) transfermode = REMOTE_CAPTURE_THUMB_TO_DRIVE; else transfermode = REMOTE_CAPTURE_FULL_TO_DRIVE; switch (camera->port->type) { case GP_PORT_USB: /* List all directories on the camera to get a baseline to find the new file. */ status = canon_usb_list_all_dirs ( camera, &initial_state, &initial_state_len, context ); if ( status < 0 ) { gp_context_error (context, _("canon_int_capture_image: initial canon_usb_list_all_dirs() failed with status %li"), (long)status ); return status; } gp_port_get_timeout (camera->port, &mstimeout); GP_DEBUG("canon_int_capture_image: usb port timeout starts at %dms", mstimeout); /* * Send a sequence of CONTROL_CAMERA commands. */ gp_port_set_timeout (camera->port, 15000); if (!camera->pl->remote_control) { status = canon_int_start_remote_control (camera, context); if ( status < 0 ) return status; } /* * Set the captured image transfer mode. We have four options * that we can specify any combo of, captured thumb to PC, * full to PC, thumb to disk, and full to disk. * * The to-PC option will return a length and integer * key from canon_usb_capture_dialogue() to use in the * "Download Captured Image" command. * */ GP_DEBUG ( "canon_int_capture_image: transfer mode is %x", transfermode ); status = canon_int_do_control_command (camera, CANON_USB_CONTROL_SET_TRANSFER_MODE, 0x04, transfermode); if ( status < 0 ) { canon_int_end_remote_control (camera, context); return status; } gp_port_set_timeout (camera->port, mstimeout); GP_DEBUG("canon_int_capture_image: set camera port timeout back to %d seconds...", mstimeout / 1000 ); /* Get release parameters a couple of times, just to see if that helps. */ status = canon_int_do_control_command (camera, CANON_USB_CONTROL_GET_PARAMS, 0x00, 0); if ( status < 0 ) { canon_int_end_remote_control (camera, context); return status; } #ifdef DEBUG_TINY_IMAGES { unsigned char *result_block; int result_len, payload_len; unsigned char payload[0x59]; unsigned char *params; unsigned char desc[1024]; payload_len = canon_int_pack_control_subcmd ( payload, CANON_USB_CONTROL_GET_PARAMS, 0x00, 0, desc ); result_block = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_CONTROL_CAMERA, &result_len, payload, payload_len ); if ( result_block == NULL ) return GP_ERROR; memset ( payload, 0, sizeof(payload) ); params = payload+0x08; memcpy ( params, result_block+0x0c, 0x30 ); payload[0] = 0x07; payload[4] = 0x30; params[1] = 2; /* "Normal" compression */ params[2] = 1; /* JPEG */ params[3] = 2; /* small */ params[4] = params[5] = 0; /* Self timer off */ params[6] = 0; /* Flash off */ params[7] = 0; /* Beep off */ result_block = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_CONTROL_CAMERA, &result_len, payload, 0x38 ); if ( result_block == NULL ) return GP_ERROR; } #endif /* DEBUG_TINY_IMAGES */ status = canon_int_do_control_command (camera, CANON_USB_CONTROL_GET_PARAMS, 0x04, transfermode); if ( status < 0 ) { canon_int_end_remote_control (camera, context); return status; } /* Lock keys here for EOS */ if ( camera->pl->md->model == CANON_CLASS_4 || camera->pl->md->model == CANON_CLASS_6 ) { status = canon_usb_lock_keys(camera,context); if ( status < 0 ) { gp_context_error (context, _("lock keys failed.")); canon_int_end_remote_control (camera, context); return status; } } /* Shutter Release Can't use normal "canon_int_do_control_command", as we must read the interrupt pipe before the response comes back for this commmand. */ data = canon_usb_capture_dialogue ( camera, &return_length, &photo_status, context ); if ( data == NULL ) { /* Try to leave camera in a usable state. */ canon_int_end_remote_control (camera, context); /* XXX It would be nice if we had a way to decode the camera error state for the caller application. For example, photo_status == 0x01 seems to mean "autofocus failure" on the EOS 5D. */ if (photo_status != 0) return GP_ERROR_CAMERA_ERROR; else return GP_ERROR_OS_FAILURE; } /* Now list all directories on the camera; this has presumably added an image file. Find the difference and decode to return real path and file names. */ status = canon_usb_list_all_dirs ( camera, &final_state, &final_state_len, context ); if ( status < 0 ) { gp_context_error ( context, _("canon_int_capture_image:" " final canon_usb_list_all_dirs() failed with status %i"), status ); return status; } /* Find new file name in camera directory */ canon_int_find_new_image ( camera, initial_state, final_state, path ); free ( initial_state ); free ( final_state ); break; case GP_PORT_SERIAL: return GP_ERROR_NOT_SUPPORTED; break; GP_PORT_DEFAULT } return GP_OK; } /** * canon_int_set_file_attributes: * @camera: camera to work with * @file: file to work on * @dir: directory to work in * @attrs: #canonDirentAttributeBits with the bits to set * @context: context for error reporting * * Sets a file's attributes. See the 'Protocol' file for details. * * Returns: gphoto2 error code * */ int canon_int_set_file_attributes (Camera *camera, const char *file, const char *dir, canonDirentAttributeBits attrs, GPContext *context) { unsigned char *msg; unsigned char attr[4]; unsigned int len; GP_DEBUG ("canon_int_set_file_attributes() called for '%s' '%s', attributes 0x%x", dir, file, attrs); attr[0] = attr[1] = attr[2] = 0; attr[3] = attrs; switch (camera->port->type) { case GP_PORT_USB: return canon_usb_set_file_attributes ( camera, attrs, dir, file, context ); break; case GP_PORT_SERIAL: msg = canon_serial_dialogue (camera, context, 0xe, 0x11, &len, attr, 4, dir, strlen (dir) + 1, file, strlen (file) + 1, NULL); if ( msg == NULL ) { canon_serial_error_type (camera); return GP_ERROR_OS_FAILURE; } break; GP_PORT_DEFAULT } if (len != 0x4) { GP_DEBUG ("canon_int_set_file_attributes: Unexpected length returned " "(expected %i got %i)", 0x4, len); return GP_ERROR_CORRUPTED_DATA; } GP_LOG_DATA ((char *)msg, 4, "canon_int_set_file_attributes: returned four bytes as expected, " "we should check if they indicate error or not. Returned data:"); return GP_OK; } /** * canon_int_get_release_params * @camera: the camera to work on * @context: the context to print on error * * Reads the camera's release parameters (ISO, aperture, shutter speed, etc) * * Right now this has only been tested on an EOS 5D via USB. * Note that the camera must be under USB control via * canon_int_start_remote_control() before calling this function. * * Returns: gphoto2 error code * */ int canon_int_get_release_params (Camera *camera, GPContext *context) { unsigned char *response = NULL; unsigned int len = 0x8c; unsigned int i; int status; GP_DEBUG ("canon_int_get_release_params()"); /* canon_int_start_remote_control() must be called before this function */ if (!camera->pl->remote_control) { GP_DEBUG ("canon_int_get_release_params: Camera not under USB control"); return GP_ERROR; } switch (camera->port->type) { case GP_PORT_USB: status = canon_int_do_control_dialogue (camera, CANON_USB_CONTROL_GET_PARAMS, 0x00, 0, &response, &len); if ( status != GP_OK ) return status; if ( response == NULL ) return GP_ERROR_OS_FAILURE; break; case GP_PORT_SERIAL: return GP_ERROR_NOT_SUPPORTED; break; GP_PORT_DEFAULT } if (len != 0x8c) { GP_DEBUG ("canon_int_get_release_params: Unexpected length returned " "(expected %i got %i)", 0x8c, len); return GP_ERROR_CORRUPTED_DATA; } /* * 0x5c is the offset to the camera parameters in the * get release params response data */ memcpy(camera->pl->release_params, response + 0x5c, sizeof(camera->pl->release_params)); for (i=0;ipl->release_params);i++) { GP_DEBUG("canon_int_get_release_params: [%d] = 0x%02x", i, camera->pl->release_params[i]); } GP_DEBUG ("canon_int_get_release_params: shutter speed = 0x%02x", camera->pl->release_params[SHUTTERSPEED_INDEX]); GP_DEBUG ("canon_int_get_release_params: aperture = 0x%02x", camera->pl->release_params[APERTURE_INDEX]); GP_DEBUG ("canon_int_get_release_params: iso = 0x%02x", camera->pl->release_params[ISO_INDEX]); GP_DEBUG ("canon_int_get_release_params: focus mode = 0x%02x", camera->pl->release_params[FOCUS_MODE_INDEX]); GP_DEBUG ("canon_int_get_release_params: beep mode = 0x%02x", camera->pl->release_params[BEEP_INDEX]); GP_DEBUG ("canon_int_get_release_params: flash mode = 0x%02x", camera->pl->release_params[FLASH_INDEX]); GP_DEBUG ("canon_int_get_release_params: exposurebias = 0x%02x", camera->pl->release_params[EXPOSUREBIAS_INDEX]); GP_DEBUG ("canon_int_get_release_params: shooting mode = 0x%02x", camera->pl->release_params[SHOOTING_MODE_INDEX]); camera->pl->secondary_image = 0; /* Based on the image format settings in the release params, determine whether we expect one or two images to be returned by the camera. I am not sure if this will work correctly for non-EOS 5D cameras - I would appreciate testing feedback from other Canon camera users. To test try capturing an image to the host computer in a single format (e.g., RAW or Large Fine JPEG). Also try capturing an image when the camera is set to a dual format, e.g., RAW + Large Fine JPEG. Note that currently, we only save the primary image to disk. Thanks - */ if (camera->pl->release_params[IMAGE_FORMAT_2_INDEX] & 0xf0) camera->pl->secondary_image = 1; return GP_OK; } /** * canon_int_set_shutter_speed * @camera: camera to work with * @shutter_speed: shutter speed - use one of the defines such as * SHUTTER_SPEED_1_15 for 1/15th of a second, etc. * @context: context for error reporting * * Sets the camera's shutter speed. Only tested for EOS 5D via USB. * * Returns: gphoto2 error code * */ int canon_int_set_shutter_speed (Camera *camera, canonShutterSpeedState shutter_speed, GPContext *context) { int status; GP_DEBUG ("canon_int_set_shutter_speed() called for speed 0x%02x", shutter_speed); /* Get the current camera settings */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; /* Modify the shutter speed */ /* XXX must test for valid shutter speeds here */ camera->pl->release_params[SHUTTERSPEED_INDEX] = shutter_speed; /* Upload the shutter speed to the camera */ status = canon_int_set_release_params (camera, context); if (status < 0) return status; /* Make sure the camera changed it! */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; if (camera->pl->release_params[SHUTTERSPEED_INDEX] != shutter_speed) { GP_DEBUG ("canon_int_set_shutter_speed: Could not set shutter " "speed to 0x%02x (camera returned 0x%02x)", shutter_speed, camera->pl->release_params[SHUTTERSPEED_INDEX]); return GP_ERROR_NOT_SUPPORTED; } else { GP_DEBUG ("canon_int_set_shutter_speed: shutter speed change verified"); } GP_DEBUG ("canon_int_set_shutter_speed() finished successfully"); return GP_OK; } /** * canon_int_set_beep * @camera: camera to work with * @beep_mode: beep mode - use one of the defines such as * BEEP_ON for turning on the beep when the camera sets the focus. * @context: context for error reporting * * Sets the camera's beep mode. Only tested for A40 via USB. * * Returns: gphoto2 error code * */ int canon_int_set_beep (Camera *camera, canonBeepMode beep_mode, GPContext *context) { int status; GP_DEBUG ("canon_int_set_beep() called for beep 0x%02x", beep_mode); /* Get the current camera settings */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; /* Modify the beep mode */ /* XXX must test for valid shutter speeds here */ camera->pl->release_params[BEEP_INDEX] = beep_mode; /* Upload the beep mode to the camera */ status = canon_int_set_release_params (camera, context); if (status < 0) return status; /* Make sure the camera changed it! */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; if (camera->pl->release_params[BEEP_INDEX] != beep_mode) { GP_DEBUG ("canon_int_set_beep: Could not set beep " "mode to 0x%02x (camera returned 0x%02x)", beep_mode, camera->pl->release_params[BEEP_INDEX]); return GP_ERROR_NOT_SUPPORTED; } else { GP_DEBUG ("canon_int_set_beep: beep mode change verified"); } GP_DEBUG ("canon_int_set_beep() finished successfully"); return GP_OK; } /** * canon_int_set_flash * @camera: camera to work with * @flash_mode: flash mode - use one of the defines such as * FLASH_MODE_OFF for turning off the flash. * @context: context for error reporting * * Sets the camera's flash mode. Only tested for A40 via USB. * * Returns: gphoto2 error code * */ int canon_int_set_flash (Camera *camera, canonFlashMode flash_mode, GPContext *context) { int status; GP_DEBUG ("canon_int_set_flash() called for flash 0x%02x", flash_mode); /* Get the current camera settings */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; /* Modify the beep mode */ /* XXX must test for valid flash mode here */ camera->pl->release_params[FLASH_INDEX] = flash_mode; /* Upload the flash mode to the camera */ status = canon_int_set_release_params (camera, context); if (status < 0) return status; /* Make sure the camera changed it! */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; if (camera->pl->release_params[FLASH_INDEX] != flash_mode) { GP_DEBUG ("canon_int_set_flash: Could not set flash " "mode to 0x%02x (camera returned 0x%02x)", flash_mode, camera->pl->release_params[FLASH_INDEX]); return GP_ERROR_NOT_SUPPORTED; } else { GP_DEBUG ("canon_int_set_flash: flash mode change verified"); } GP_DEBUG ("canon_int_set_flash() finished successfully"); return GP_OK; } /** * canon_int_set_zoom * @camera: camera to work with * @zoom_level: zoom level to set - A40: 1..10; G1: 0..40 (pMaxOpticalZoomPos*4) * @context: context for error reporting * * Sets the camera's zoom. Only tested for A40 and G1 via USB. * * Returns: gphoto2 error code * */ int canon_int_set_zoom (Camera *camera, unsigned char zoom_level, GPContext *context) { int status; GP_DEBUG ("canon_int_set_zoom() called for zoom 0x%02x", zoom_level); status = canon_int_do_control_command( camera, CANON_USB_CONTROL_SET_ZOOM_POS, 0x04, zoom_level ); if (status < 0) return status; GP_DEBUG ("canon_int_set_zoom() finished successfully"); return GP_OK; } /** * canon_int_get_zoom * @camera: camera to work with * @zoom_level: pointer to hold returned zoom level - A40: 1..10; G1: 0..40 (pMaxOpticalZoomPos*4) * @zoom_max: pointer to hold zoom upper bound * @context: context for error reporting * * Gets the camera's zoom. Only tested for G1 via USB. * * Returns: gphoto2 error code * */ int canon_int_get_zoom (Camera *camera, unsigned char *zoom_level, unsigned char *zoom_max, GPContext *context) { unsigned char *msg = NULL; unsigned int datalen = 0; unsigned char payload[0x4c]; int payloadlen; char desc[128]; *zoom_level = 0; *zoom_max = 0; GP_DEBUG ("canon_int_get_zoom() called"); payloadlen = canon_int_pack_control_subcmd( payload, CANON_USB_CONTROL_GET_ZOOM_POS, 0, 0, desc ); if ( camera->pl->md->model == CANON_CLASS_6 ) { /* Newer protocol uses a different code, but with same * response. It also needs an extra zero byte at the * end. */ payload[payloadlen++] = 0; msg = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_CONTROL_CAMERA_2, &datalen, payload, payloadlen ); } else msg = canon_usb_dialogue ( camera, CANON_USB_FUNCTION_CONTROL_CAMERA, &datalen, payload, payloadlen ); if ( msg == NULL || datalen != 0x1c) { /* ERROR */ GP_DEBUG ("%s datalen=%x", desc, datalen); return GP_ERROR_CORRUPTED_DATA; } *zoom_level = msg[12]; *zoom_max = msg[14]; msg = NULL; datalen = 0; GP_DEBUG ("canon_int_get_zoom() finished successfully level=%d", *zoom_level); return GP_OK; } /** * canon_int_set_image_format * @camera: camera to work with * @res_byte1: byte 1 of the 3-byte image format code * @res_byte2: byte 2 of the 3-byte image format code * @res_byte3: byte 3 of the 3-byte image format code * * @context: context for error reporting * * Sets the camera's output image format. Only tested for EOS 5D via USB. * * Returns: gphoto2 error code * */ int canon_int_set_image_format (Camera *camera, unsigned char res_byte1, unsigned char res_byte2, unsigned char res_byte3, GPContext *context) { int status; GP_DEBUG ("canon_int_set_image_format() called"); /* Get the current camera settings */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; /* Modify the image format */ camera->pl->release_params[IMAGE_FORMAT_1_INDEX] = res_byte1; camera->pl->release_params[IMAGE_FORMAT_2_INDEX] = res_byte2; camera->pl->release_params[IMAGE_FORMAT_3_INDEX] = res_byte3; /* Upload the image_format to the camera */ status = canon_int_set_release_params (camera, context); if (status < 0) return status; /* It seems to take the camera body a while to change this parameter when all three res_bytes are changed at once. So, give the camera a chance to catch up. 3750 us was occasionally too short, but 5000 us seems to work well. */ usleep(5000); /* Make sure the camera changed it! */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; if (camera->pl->release_params[IMAGE_FORMAT_1_INDEX] != res_byte1 || camera->pl->release_params[IMAGE_FORMAT_2_INDEX] != res_byte2 || camera->pl->release_params[IMAGE_FORMAT_3_INDEX] != res_byte3) { GP_DEBUG ("canon_int_set_image_format: Could not set image format " "to 0x%02x 0x%02x 0x%02x (camera returned 0x%02x 0x%02x 0x%02x)", res_byte1, res_byte2, res_byte3, camera->pl->release_params[IMAGE_FORMAT_1_INDEX], camera->pl->release_params[IMAGE_FORMAT_2_INDEX], camera->pl->release_params[IMAGE_FORMAT_3_INDEX]); return GP_ERROR_CORRUPTED_DATA; } else { GP_DEBUG ("canon_int_set_image_format: image_format change verified"); } GP_DEBUG ("canon_int_set_image_format() finished successfully"); return GP_OK; } /** * canon_int_set_iso * @camera: camera to work with * @iso: ISO - use one of the defines such as ISO_400, etc. * @context: context for error reporting * * Sets the camera's ISO speed. Only tested for EOS 5D via USB. * * Returns: gphoto2 error code * */ int canon_int_set_iso (Camera *camera, canonIsoState iso, GPContext *context) { int status; GP_DEBUG ("canon_int_set_iso() called for ISO 0x%02x", iso); /* Get the current camera settings */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; /* Modify the ISO */ camera->pl->release_params[ISO_INDEX] = iso; /* Upload the ISO to the camera */ status = canon_int_set_release_params (camera, context); if (status < 0) return status; /* Make sure the camera changed it! */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; if (camera->pl->release_params[ISO_INDEX] != iso) { GP_DEBUG ("canon_int_set_iso: Could not set ISO " "to 0x%02x (camera returned 0x%02x)", iso, camera->pl->release_params[ISO_INDEX]); return GP_ERROR_CORRUPTED_DATA; } else { GP_DEBUG ("canon_int_set_iso: ISO change verified"); } GP_DEBUG ("canon_int_set_iso() finished successfully"); return GP_OK; } /** * canon_int_set_shooting_mode * @camera: camera to work with * @shooting_mode: use the unsigned char 8bit value in the array * @context: context for error reporting * * Sets the camera's shooting mode. * * Returns: gphoto2 error code * */ int canon_int_set_shooting_mode (Camera *camera, unsigned char shooting_mode, GPContext *context) { int status; GP_DEBUG ("canon_int_set_shooting_mode() called for shooting_mode 0x%02x", shooting_mode); /* Get the current camera settings */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; /* Modify the shooting mode */ camera->pl->release_params[SHOOTING_MODE_INDEX] = shooting_mode; /* Upload the shooting mode to the camera */ status = canon_int_set_release_params (camera, context); if (status < 0) return status; /* Make sure the camera changed it! (not all are able to) */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; if (camera->pl->release_params[SHOOTING_MODE_INDEX] != shooting_mode) { GP_DEBUG ("canon_int_set_shooting_mode: Could not set shooting mode " "to 0x%02x (camera returned 0x%02x)", shooting_mode, camera->pl->release_params[SHOOTING_MODE_INDEX]); return GP_ERROR_CORRUPTED_DATA; } else { GP_DEBUG ("canon_int_set_shooting_mode: shooting_mode change verified"); } GP_DEBUG ("canon_int_set_shooting_mode() finished successfully"); return GP_OK; } /** * canon_int_set_aperture * @camera: camera to work with * @aperture: use one of the defines such as APERTURE_F5_6, etc. * @context: context for error reporting * * Sets the camera's aperture. Only tested for EOS 5D via USB. * * Returns: gphoto2 error code * */ int canon_int_set_aperture (Camera *camera, canonApertureState aperture, GPContext *context) { int status; GP_DEBUG ("canon_int_set_aperture() called for aperture 0x%02x", aperture); /* Get the current camera settings */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; /* Modify the aperture */ camera->pl->release_params[APERTURE_INDEX] = aperture; /* Upload the aperture to the camera */ status = canon_int_set_release_params (camera, context); if (status < 0) return status; /* Make sure the camera changed it! */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; if (camera->pl->release_params[APERTURE_INDEX] != aperture) { GP_DEBUG ("canon_int_set_aperture: Could not set aperture " "to 0x%02x (camera returned 0x%02x)", aperture, camera->pl->release_params[APERTURE_INDEX]); return GP_ERROR_CORRUPTED_DATA; } else { GP_DEBUG ("canon_int_set_aperture: aperture change verified"); } GP_DEBUG ("canon_int_set_aperture() finished successfully"); return GP_OK; } /** * canon_int_set_exposurebias * @camera: camera to work with * @aperture: use the unsigned char 8bit value in the array * @context: context for error reporting * * Sets the camera's exposure bias. * * Returns: gphoto2 error code * */ int canon_int_set_exposurebias (Camera *camera, unsigned char expbias, GPContext *context) { int status; GP_DEBUG ("canon_int_set_exposurebias() called for aperture 0x%02x", expbias); /* Get the current camera settings */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; /* Modify the aperture */ camera->pl->release_params[EXPOSUREBIAS_INDEX] = expbias; /* Upload the aperture to the camera */ status = canon_int_set_release_params (camera, context); if (status < 0) return status; /* Make sure the camera changed it! */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; if (camera->pl->release_params[EXPOSUREBIAS_INDEX] != expbias) { GP_DEBUG ("canon_int_set_exposurebias: Could not set exposure bias " "to 0x%02x (camera returned 0x%02x)", expbias, camera->pl->release_params[EXPOSUREBIAS_INDEX]); return GP_ERROR_CORRUPTED_DATA; } else { GP_DEBUG ("canon_int_set_exposurebias: expbias change verified"); } GP_DEBUG ("canon_int_set_exposurebias() finished successfully"); return GP_OK; } /** * canon_int_set_focus_mode * @camera: camera to work with * @focus_mode: use one of the defines such as AUTO_FOCUS_AI_SERVO, etc. * @context: context for error reporting * * Sets the camera's focus mode. Note that the selection of focus modes is * limited by the AF/MF switch on the lens body. In particular, this function * is only useful for switching between the various autofocus modes while the * lens focus switch is set to 'AF'. Only tested for EOS 5D via USB. * * Returns: gphoto2 error code * */ int canon_int_set_focus_mode (Camera *camera, canonFocusModeState focus_mode, GPContext *context) { int status; GP_DEBUG ("canon_int_set_focus_mode() called for focus mode 0x%02x", focus_mode); /* Get the current camera settings */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; /* Modify the focus mode */ camera->pl->release_params[FOCUS_MODE_INDEX] = focus_mode; /* Upload the focus mode to the camera */ status = canon_int_set_release_params (camera, context); if (status < 0) return status; /* Make sure the camera changed it! */ status = canon_int_get_release_params (camera, context); if (status < 0) return status; if (camera->pl->release_params[FOCUS_MODE_INDEX] != focus_mode) { GP_DEBUG ("canon_int_set_focus_mode: Could not set focus_mode " "to 0x%02x (camera returned 0x%02x)", focus_mode, camera->pl->release_params[FOCUS_MODE_INDEX]); return GP_ERROR_CORRUPTED_DATA; } else { GP_DEBUG ("canon_int_set_focus_mode: focus_mode change verified"); } GP_DEBUG ("canon_int_set_focus_mode() finished successfully"); return GP_OK; } /** * canon_int_set_release_params * @camera: camera to work with * @context: context for error reporting * * Sets the camera's release params -- e.g., shutter speed, * aperture, ISO -- based on the current in-memory state for these params. * * Returns: gphoto2 error code * */ static int canon_int_set_release_params (Camera *camera, GPContext *context) { unsigned char payload[0x4c]; unsigned char *msg = NULL, *trash_handle; unsigned int len, payloadlen, trash_int; int status; GP_DEBUG ("canon_int_set_release_params() called"); if (!camera->pl->remote_control) { GP_DEBUG ("canon_int_set_release_params: Camera not under USB control"); return GP_ERROR; } memset(payload, 0, sizeof(payload)); switch (camera->port->type) { case GP_PORT_USB: /* This is what we need for Canon class 6 cameras - not sure what it is for previous protocols */ payload[0x0] = CANON_USB_CONTROL_SET_ZOOM_POS; payload[0x4] = 0x30; /* Copy the release parameter block from the camera state * structure into the payload. The 0x08 is the byte offset * into the payload where the release parameters start. */ memcpy(payload + 0x08, camera->pl->release_params, sizeof(camera->pl->release_params)); payloadlen = RELEASE_PARAMS_LEN + 0x08; status = canon_int_do_control_dialogue_payload (camera, payload, payloadlen, &msg, &len); if ( msg == NULL ) return GP_ERROR_CORRUPTED_DATA; /* Send the camera a get_release_params, then * send the set_release_params op again. * Apparently, there are some parameters which require * two "sets" to take effect on the Canon EOS 5D. */ status = canon_int_do_control_dialogue (camera, CANON_USB_CONTROL_GET_PARAMS, 0x00, 0, &trash_handle, &trash_int); if ( status < 0 ) return GP_ERROR; status = canon_int_do_control_dialogue_payload (camera, payload, payloadlen, &msg, &len); if ( msg == NULL ) return GP_ERROR_CORRUPTED_DATA; break; case GP_PORT_SERIAL: return GP_ERROR_NOT_SUPPORTED; break; GP_PORT_DEFAULT } if (len != 92) { GP_DEBUG ("canon_int_set_release_params: Unexpected length returned " "(expected %i got %i)", 92, len); return GP_ERROR_CORRUPTED_DATA; } GP_DEBUG ("canon_int_set_release_params finished successfully"); return GP_OK; } /** * canon_int_set_owner_name: * @camera: the camera to set the owner name of * @name: owner name to set the camera to * @context: context for error reporting * * Sets the camera owner name. The string should not be more than 30 * characters long. We call #get_owner_name afterwards in order to * check that everything went fine. * * Returns: gphoto2 error code * */ int canon_int_set_owner_name (Camera *camera, const char *name, GPContext *context) { unsigned char *msg; unsigned int len; GP_DEBUG ("canon_int_set_owner_name() called, name = '%s'", name); if (strlen (name) > 30) { gp_context_error (context, _("Name '%s' (%li characters) " "too long, maximum 30 characters are " "allowed."), name, (long)strlen (name)); return GP_ERROR_BAD_PARAMETERS; } switch (camera->port->type) { case GP_PORT_USB: if ( camera->pl->md->model == CANON_CLASS_6 ) { msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_CAMERA_CHOWN_2, &len, (unsigned char *)name, strlen (name) + 1); } else msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_CAMERA_CHOWN, &len, (unsigned char *)name, strlen (name) + 1); if ( msg == NULL ) return GP_ERROR_OS_FAILURE; break; case GP_PORT_SERIAL: msg = canon_serial_dialogue (camera, context, 0x05, 0x12, &len, name, strlen (name) + 1, NULL); if ( msg == NULL ) { canon_serial_error_type (camera); return GP_ERROR_OS_FAILURE; } break; GP_PORT_DEFAULT } if (len != 0x04) { GP_DEBUG ("canon_int_set_owner_name: Unexpected length returned " "(expected %i got %i)", 0x4, len); return GP_ERROR_CORRUPTED_DATA; } return canon_int_identify_camera (camera, context); } /** * canon_int_get_time: * @camera: camera to get the current time of * @camera_time: pointer to where you want the camera time (NOT IN UTC!!!) * @context: context for error reporting * * Get camera's current time. * * The camera gives time in little endian format, therefore we need * to swap the 4 bytes on big-endian machines. * * Note: the time returned from the camera is not UTC but local time. * This means you should only use functions that don't adjust the * timezone, like gmtime(), instead of functions that do, like localtime() * since otherwise you will end up with the wrong time. * * We pass it along to calling functions in local time instead of UTC * since it is more correct to say 'Camera time: 2002-01-01 00:00:00' * if that is what the display says and not to display the cameras time * converted to local timezone (which will of course be wrong if you * are not in the timezone the cameras clock was set in). * * Returns: gphoto2 error code * */ int canon_int_get_time (Camera *camera, time_t *camera_time, GPContext *context) { unsigned char *msg; unsigned int len; GP_DEBUG ("canon_int_get_time()"); switch (camera->port->type) { case GP_PORT_USB: msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_GET_TIME, &len, NULL, 0); if ( msg == NULL ) return GP_ERROR_OS_FAILURE; break; case GP_PORT_SERIAL: msg = canon_serial_dialogue (camera, context, 0x03, 0x12, &len, NULL); if ( msg == NULL ) { canon_serial_error_type (camera); return GP_ERROR_OS_FAILURE; } break; GP_PORT_DEFAULT } if (len != 0x10) { GP_DEBUG ("canon_int_get_time: Unexpected length returned " "(expected %i got %i)", 0x10, len); return GP_ERROR_CORRUPTED_DATA; } if (camera_time != NULL) { *camera_time = (time_t) le32atoh (msg + 4); /* XXX should strip \n at the end of asctime() return data */ GP_DEBUG ("Camera time: %s", asctime (gmtime (camera_time))); } return GP_OK; } /** * canon_int_set_time: * @camera: camera to get the current time of * @date: the date to set (in UTC) * @context: context for error reporting * * Set camera's current time. * * Canon cameras know nothing about time zones so we have to convert it to local * time (but still expressed in UNIX time format (seconds since 1970-01-01). * * Returns: gphoto2 error code * */ int canon_int_set_time (Camera *camera, time_t date, GPContext *context) { unsigned char *msg; unsigned int len; unsigned char payload[12]; time_t new_date; struct tm *tm; GP_DEBUG ("canon_int_set_time: %i=0x%x %s", (unsigned int) date, (unsigned int) date, asctime (localtime (&date))); /* call localtime() just to get 'extern long timezone' / tm->tm_gmtoff set. * * this handles DST too (at least if HAVE_TM_GMTOFF), if you are in UTC+1 * tm_gmtoff is 3600 and if you are in UTC+1+DST tm_gmtoff is 7200 (if your * DST is one hour of course). */ tm = localtime (&date); /* convert to local UNIX time since canon cameras know nothing about timezones */ #ifdef HAVE_TM_GMTOFF new_date = date + tm->tm_gmtoff; GP_DEBUG ("canon_int_set_time: converted %ld to localtime %ld (tm_gmtoff is %ld)", (long)date, (long)new_date, (long)tm->tm_gmtoff); #else new_date = date - timezone; GP_DEBUG ("canon_int_set_time: converted %ld to localtime %ld (timezone is %ld)", (long)date, (long)new_date, (long)timezone); #endif memset (payload, 0, sizeof (payload)); htole32a (payload, (unsigned int) new_date); switch (camera->port->type) { case GP_PORT_USB: msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_SET_TIME, &len, payload, sizeof (payload)); if ( msg == NULL ) return GP_ERROR_OS_FAILURE; break; case GP_PORT_SERIAL: msg = canon_serial_dialogue (camera, context, 0x04, 0x12, &len, payload, sizeof (payload), NULL); if ( msg == NULL ) { canon_serial_error_type (camera); return GP_ERROR_OS_FAILURE; } break; GP_PORT_DEFAULT } if (len != 0x4) { GP_DEBUG ("canon_int_set_time: Unexpected length returned " "(expected %i got %i)", 0x4, len); return GP_ERROR_CORRUPTED_DATA; } return GP_OK; } /** * canon_int_ready: * @camera: camera to get ready * @context: context for error reporting * * Switches the camera on, detects the model and sets its speed. * * Returns: gphoto2 error code * */ int canon_int_ready (Camera *camera, GPContext *context) { int res; GP_DEBUG ("canon_int_ready()"); switch (camera->port->type) { case GP_PORT_USB: res = canon_usb_ready (camera, context); break; case GP_PORT_SERIAL: res = canon_serial_ready (camera, context); break; GP_PORT_DEFAULT } return (res); } /** * canon_int_get_disk_name: * @camera: camera to ask for disk drive * @context: context for error reporting * * Ask the camera for the name of the flash storage * device. Usually "D:" or something like that. * * Returns: name of disk * */ char * canon_int_get_disk_name (Camera *camera, GPContext *context) { unsigned char *msg; unsigned int len; int res; GP_DEBUG ("canon_int_get_disk_name()"); switch (camera->port->type) { case GP_PORT_USB: if ( camera->pl->md->model == CANON_CLASS_6 ) /* Newer protocol uses a different code, but with same response. */ res = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_FLASH_DEVICE_IDENT_2, &msg, &len, 1024, NULL, 0, 0, context); else res = canon_usb_long_dialogue (camera, CANON_USB_FUNCTION_FLASH_DEVICE_IDENT, &msg, &len, 1024, NULL, 0, 0, context); if (res != GP_OK) { GP_DEBUG ("canon_int_get_disk_name: canon_usb_long_dialogue " "failed! returned %i", res); return NULL; } break; case GP_PORT_SERIAL: msg = canon_serial_dialogue (camera, context, 0x0a, 0x11, &len, NULL); if ( msg == NULL ) { canon_serial_error_type (camera); return NULL; } if (len < 5) return NULL; /* should be GP_ERROR_CORRUPTED_DATA */ /* this is correct even though it looks a bit funny. canon_serial_dialogue() * has a static buffer, strdup() part of that buffer and return to our caller. */ msg = (unsigned char *)strdup ((char *)msg + 4); /* @@@ should check length */ if ( msg == NULL ) { GP_DEBUG ("canon_int_get_disk_name: could not allocate " "memory to hold response"); return NULL; } break; GP_PORT_DEFAULT_RETURN (NULL) } if ( msg == NULL ) return NULL; GP_DEBUG ("canon_int_get_disk_name: disk '%s'", msg); return (char *)msg; } /** * canon_int_get_disk_name_info: * @camera: camera to ask about disk * @name: name of the disk * @capacity: returned maximum disk capacity * @available: returned currently available disk capacity * @context: context for error reporting * * Gets available room and max capacity of a disk given by @name. * * Returns: boolean value denoting success (FIXME: ATTENTION!) * */ int canon_int_get_disk_name_info (Camera *camera, const char *name, int *capacity, int *available, GPContext *context) { unsigned char *msg = NULL; char name_local[128]; unsigned int len; /* is set in both USB and SERIAL cases */ int cap=0, ava=0; /* only set in USB case */ GP_DEBUG ("canon_int_get_disk_name_info() name '%s'", name); CON_CHECK_PARAM_NULL (name); CON_CHECK_PARAM_NULL (capacity); CON_CHECK_PARAM_NULL (available); switch (camera->port->type) { case GP_PORT_USB: if ( camera->pl->md->model == CANON_CLASS_6 ) { /* Newer protocol uses a different code, but with same response. */ strncpy ( name_local, name, sizeof(name_local) ); len = strlen(name_local); if ( name_local[len-1] == '\\' ) name_local[len-1] = 0; msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_DISK_INFO_2, &len, (unsigned char *)name_local, len ); if ( msg == NULL ) return GP_ERROR_OS_FAILURE; /* These newer cameras report sizes in * K instead of bytes, so max capacity * is 4TB rather than 4GB. */ cap = le32atoh (msg + 4); ava = le32atoh (msg + 8); } else { msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_DISK_INFO, &len, (unsigned char *)name, strlen (name) + 1); if ( msg == NULL ) return GP_ERROR_OS_FAILURE; cap = le32atoh (msg + 4) / 1024; ava = le32atoh (msg + 8) / 1024; } break; case GP_PORT_SERIAL: msg = canon_serial_dialogue (camera, context, 0x09, 0x11, &len, name, strlen (name) + 1, NULL); if ( msg == NULL ) { canon_serial_error_type (camera); return GP_ERROR_OS_FAILURE; } break; GP_PORT_DEFAULT } if (len < 0x0c) { GP_DEBUG ("canon_int_get_disk_name_info: " "Unexpected length returned " "(expected %i got %i)", 0x0c, len); return GP_ERROR_CORRUPTED_DATA; } /* Capacity and available are not NULL as verified above. * But cap and ava are only set for the USB case, so we have to check for that. * If you know the logic better, feel free to improve it. */ switch (camera->port->type) { case GP_PORT_USB: *capacity = cap; *available = ava; GP_DEBUG ("canon_int_get_disk_name_info: " "capacity %i kb, available %i kb", cap > 0 ? cap : 0, ava > 0 ? ava : 0); break; GP_PORT_DEFAULT } return GP_OK; } /** * gphoto2canonpath: * @camera: camera to use * @path: gphoto2 path * @context: context for error reporting * * convert gphoto2 path (e.g. "/dcim/116CANON/img_1240.jpg") * into canon style path (e.g. "D:\DCIM\116CANON\IMG_1240.JPG") * * Canon cameras use FAT with upper case internally, so we convert * into that. * * Returns: immutable string with converted path name * */ const char * gphoto2canonpath (Camera *camera, const char *path, GPContext *context) { static char tmp[2000]; char *p; if (path[0] != '/') { GP_DEBUG ("Non-absolute gphoto2 path cannot be converted"); return NULL; } if (camera->pl->cached_drive == NULL) { GP_DEBUG ("NULL camera->pl->cached_drive in gphoto2canonpath"); camera->pl->cached_drive = canon_int_get_disk_name (camera, context); if (camera->pl->cached_drive == NULL) { GP_DEBUG ("2nd NULL camera->pl->cached_drive in gphoto2canonpath"); return NULL; } } snprintf (tmp, sizeof (tmp), "%s%s", camera->pl->cached_drive, path); /* Convert to upper case, since FAT file system on camera doesn't do case, and replace all slashes by backslashes */ for (p = tmp; *p != '\0'; p++) { if ( *p != (char)toupper ( *p ) ) /* We don't allow lower-case in path names. */ gp_context_error (context, _("Lower case letters in %s not allowed."), path ); if (*p == '/') *p = '\\'; *p = (char) toupper(*p); } /* remove trailing backslash, making sure buffer ends with \0 */ if ((p > tmp) && (*(p - 1) == '\\')) *(p - 1) = '\0'; gp_log (GP_LOG_DATA, "canon/canon.c", "gphoto2canonpath: converted '%s' to '%s'", path, tmp); return (tmp); } /** * canon2gphotopath: * @camera: camera to use * @path: canon style path * * convert canon style path (e.g. "D:\DCIM\116CANON\IMG_1240.JPG") * into gphoto2 path (e.g. "/DCIM/116CANON/IMG_1240.JPG") * * Assumes @path to start with drive name followed by a colon. * It just drops the drive name. * * Returns: immutable string with gphoto2 path * */ static const char * canon2gphotopath (Camera __unused__ *camera, const char *path) { static char tmp[2000]; char *p; if (!((path[1] == ':') && (path[2] == '\\'))) { GP_DEBUG ("canon2gphotopath called on invalid canon path '%s'", path); return NULL; } /* 3 is D: plus NULL byte */ if (strlen (path) - 3 > sizeof (tmp)) { GP_DEBUG ("canon2gphotopath called on too long canon path (%li bytes): %s", (long)(strlen (path)), path); return NULL; } /* path is something like D:\FOO, we want what is after the colon */ strcpy (tmp, path + 2); /* replace backslashes by slashes */ for (p = tmp; *p != '\0'; p++) { if (*p == '\\') *p = '/'; } gp_log (GP_LOG_DATA, "canon/canon.c", "canon2gphotopath: converted '%s' to '%s'", path, tmp); return (tmp); } /** * debug_fileinfo: * @info: information block * * Writes file info to debug log. Usable only from within "canon.c". * */ static void debug_fileinfo (CameraFileInfo * info) { GP_DEBUG (""); GP_DEBUG (" "); if ((info->file.fields & GP_FILE_INFO_TYPE) != 0) GP_DEBUG (" Type: %s", info->file.type); if ((info->file.fields & GP_FILE_INFO_SIZE) != 0) GP_DEBUG (" Size: %i", (int)info->file.size); if ((info->file.fields & GP_FILE_INFO_WIDTH) != 0) GP_DEBUG (" Width: %i", info->file.width); if ((info->file.fields & GP_FILE_INFO_HEIGHT) != 0) GP_DEBUG (" Height: %i", info->file.height); if ((info->file.fields & GP_FILE_INFO_PERMISSIONS) != 0) GP_DEBUG (" Perms: 0x%x", info->file.permissions); if ((info->file.fields & GP_FILE_INFO_STATUS) != 0) GP_DEBUG (" Status: %i", info->file.status); if ((info->file.fields & GP_FILE_INFO_MTIME) != 0) { char *p, *time = asctime (gmtime (&info->file.mtime)); /* remove trailing \n */ for (p = time; *p != 0; ++p) /* do nothing */ ; *(p - 1) = '\0'; GP_DEBUG (" Time: %s (%ld)", time, (long)info->file.mtime); } GP_DEBUG (" "); GP_DEBUG (""); } /** * canon_int_list_directory: * @camera: Camera to access * @folder: Folder on the camera to list * @list: Returns list of folders in this directory * @flags: #canonDirlistFunctionBits specifying to list files, folders, or both * @context: context for error reporting * * Gets the directory tree of a given flash device, unsorted and with * a few missing features (such as correct sorting of files and * correctly associating files with each other). * * Implicitly assumes that uint8_t[] is a char[] for strings. * * A few notes about listing files and camera->pl->list_all_files: * * If camera->pl->list_all_files is false (intended default), then * we list only "primary files" or ("main" files). Those are files * like image files or movie files which the user explicitly created * on the camera. "Secondary files" such as .thm files which contain * the thumbnail of a movie are not listed here - you can get them using * the --get-thumbnail command in gphoto2 or the analog command of your * frontend. Same story with ,wav files containing audio annotations * to primary files. * * If camera->pl->list_all_files is true (can be changed via the * configuration interface), then we list _all_ files. This means * that we just use the camera like a CF/SD card reader. Use this mode * to read/write your .pdf files, .tgz backup tarballs, or whatever. * Of course, all the "internal" files the camera puts on the storage * medium will be listed in this mode as well. * * Returns: a gphoto2 status code. * @list will contain a list of folders (directories) contained in this folder. * Files will be added to the internal gphoto2 file system only if * they are image or movie files. * */ int canon_int_list_directory (Camera *camera, const char *folder, CameraList *list, const canonDirlistFunctionBits flags, GPContext *context) { CameraFileInfo info; int res; unsigned int dirents_length; unsigned char *dirent_data = NULL; unsigned char *end_of_data, *temp_ch, *pos; const char *canonfolder = gphoto2canonpath (camera, folder, context); int list_files = ((flags & CANON_LIST_FILES) != 0); int list_folders = ((flags & CANON_LIST_FOLDERS) != 0); GP_DEBUG ("BEGIN canon_int_list_directory() folder '%s' aka '%s' (%s, %s)", folder, canonfolder, list_files ? "files" : "no files", list_folders ? "folders" : "no folders"); if ( canonfolder == NULL ) { GP_DEBUG ( "Error: canon_int_list_directory called with null name for camera folder" ); return GP_ERROR; } /* Fetch all directory entries from the camera */ switch (camera->port->type) { case GP_PORT_USB: res = canon_usb_get_dirents (camera, &dirent_data, &dirents_length, canonfolder, context); break; case GP_PORT_SERIAL: res = canon_serial_get_dirents (camera, &dirent_data, &dirents_length, canonfolder, context); break; GP_PORT_DEFAULT } if (res != GP_OK) return res; end_of_data = dirent_data + dirents_length; if (dirents_length < CANON_MINIMUM_DIRENT_SIZE) { gp_context_error (context, _("canon_int_list_directory: ERROR: " "initial message too short (%i < minimum %i)"), dirents_length, CANON_MINIMUM_DIRENT_SIZE); free (dirent_data); dirent_data = NULL; return GP_ERROR_CORRUPTED_DATA; } /* The first data we have got here is the dirent for the * directory we are reading. Skip over 10 bytes * (2 for attributes, 4 date and 4 size) and then go find * the end of the directory name so that we get to the next * dirent which is actually the first one we are interested * in */ GP_DEBUG ("canon_int_list_directory: Camera directory listing for directory '%s'", dirent_data + CANON_DIRENT_NAME); for (pos = dirent_data + CANON_DIRENT_NAME; pos < end_of_data && *pos != 0; pos++) /* do nothing */ ; if (pos == end_of_data || *pos != 0) { gp_context_error (context, _("canon_int_list_directory: Reached end of packet while " "examining the first dirent")); free (dirent_data); dirent_data = NULL; return GP_ERROR_CORRUPTED_DATA; } pos++; /* skip NULL byte terminating directory name */ /* we are now positioned at the first interesting dirent */ /* This is the main loop, for every directory entry returned */ while (pos < end_of_data) { int is_dir, is_file; uint16_t dirent_attrs; /* attributes of dirent */ uint32_t dirent_file_size; /* size of dirent in octets */ uint32_t dirent_time; /* time stamp of dirent (Unix Epoch) */ uint8_t *dirent_name; /* name of dirent */ size_t dirent_name_len; /* length of dirent_name */ size_t dirent_ent_size; /* size of dirent in octets */ uint32_t tmp_time; time_t date; struct tm *tm; dirent_attrs = le16atoh (pos + CANON_DIRENT_ATTRS); dirent_file_size = le32atoh (pos + CANON_DIRENT_SIZE); dirent_name = pos + CANON_DIRENT_NAME; /* see canon_int_set_time() for timezone handling */ tmp_time = le32atoh (pos + CANON_DIRENT_TIME); if (tmp_time != 0) { /* FIXME: I just want the tm_gmtoff/timezone info */ date = time(NULL); tm = localtime (&date); #ifdef HAVE_TM_GMTOFF dirent_time = tmp_time - tm->tm_gmtoff; GP_DEBUG ("canon_int_list_directory: converted %ld to UTC %ld (tm_gmtoff is %ld)", (long)tmp_time, (long)dirent_time, (long)tm->tm_gmtoff); #else dirent_time = tmp_time + timezone; GP_DEBUG ("canon_int_list_directory: converted %ld to UTC %ld (timezone is %ld)", (long)tmp_time, (long)dirent_time, (long)timezone); #endif } else { dirent_time = tmp_time; } is_dir = ((dirent_attrs & CANON_ATTR_NON_RECURS_ENT_DIR) != 0) || ((dirent_attrs & CANON_ATTR_RECURS_ENT_DIR) != 0); is_file = !is_dir; gp_log (GP_LOG_DATA, "canon/canon.c", "canon_int_list_directory: " "reading dirent at position %li of %li (0x%lx of 0x%lx)", (long)(pos - dirent_data), (long)(end_of_data - dirent_data), (long)(pos - dirent_data), (long)(end_of_data - dirent_data) ); if (pos + CANON_MINIMUM_DIRENT_SIZE > end_of_data) { if (camera->port->type == GP_PORT_SERIAL) { /* check to see if it is only NULL bytes left, * that is not an error for serial cameras * (at least the A50 adds five zero bytes at the end) */ for (temp_ch = pos; (temp_ch < end_of_data) && (!*temp_ch); temp_ch++) ; /* do nothing */ if (temp_ch == end_of_data) { GP_DEBUG ("canon_int_list_directory: " "the last %li bytes were all 0 - ignoring.", (long)(temp_ch - pos)); break; } else { GP_DEBUG ("canon_int_list_directory: " "byte[%li=0x%lx] == %i=0x%x", (long)(temp_ch - pos), (long)(temp_ch - pos), *temp_ch, *temp_ch); GP_DEBUG ("canon_int_list_directory: " "pos is %p, end_of_data is %p, temp_ch is %p - diff is 0x%lx", pos, end_of_data, temp_ch, (long)(temp_ch - pos)); } } GP_DEBUG ("canon_int_list_directory: " "dirent at position %li=0x%lx of %li=0x%lx is too small, " "minimum dirent is %i bytes", (long)(pos - dirent_data), (long)(pos - dirent_data), (long)(end_of_data - dirent_data), (long)(end_of_data - dirent_data), CANON_MINIMUM_DIRENT_SIZE); gp_context_error (context, _("canon_int_list_directory: " "truncated directory entry encountered")); free (dirent_data); dirent_data = NULL; return GP_ERROR_CORRUPTED_DATA; } /* Check end of this dirent, 10 is to skip over * 2 attributes + 0x00 * 4 file size * 4 file date (UNIX localtime) * to where the direntry name begins. */ for (temp_ch = dirent_name; temp_ch < end_of_data && *temp_ch != 0; temp_ch++) ; if (temp_ch == end_of_data || *temp_ch != 0) { GP_DEBUG ("canon_int_list_directory: " "dirent at position %li of %li has invalid name in it." "bailing out with what we've got.", (long)(pos - dirent_data), (long)(end_of_data - dirent_data)); break; } dirent_name_len = strlen ((char *)dirent_name); dirent_ent_size = CANON_MINIMUM_DIRENT_SIZE + dirent_name_len; /* check that length of name in this dirent is not of unreasonable size. * 256 was picked out of the blue */ if (dirent_name_len > 256) { GP_DEBUG ("canon_int_list_directory: " "the name in dirent at position %li of %li is too long. (%li bytes)." "bailing out with what we've got.", (long)(pos - dirent_data), (long)(end_of_data - dirent_data), (long)dirent_name_len); break; } /* 10 bytes of attributes, size and date, a name and a NULL terminating byte */ GP_LOG_DATA ((char *)pos, dirent_ent_size, "canon_int_list_directory: dirent determined to be %li=0x%lx bytes :", (long)dirent_ent_size, (long)dirent_ent_size); if (dirent_name_len) { /* OK, this directory entry has a name in it. */ if ((list_folders && is_dir) || (list_files && is_file)) { const char *filename = (char *)dirent_name; /* we're going to fill out the info structure in this block */ memset (&info, 0, sizeof (info)); /* we start with nothing and continously add stuff */ info.file.fields = GP_FILE_INFO_NONE; info.file.mtime = dirent_time; if (info.file.mtime != 0) info.file.fields |= GP_FILE_INFO_MTIME; if (is_file) { /* determine file type based on file name * this stuff only makes sense for files, not for folders */ strncpy (info.file.type, filename2mimetype (filename), sizeof (info.file.type)); info.file.fields |= GP_FILE_INFO_TYPE; if (dirent_attrs & CANON_ATTR_NOT_DOWNLOADED) info.file.status = GP_FILE_STATUS_NOT_DOWNLOADED; else info.file.status = GP_FILE_STATUS_DOWNLOADED; info.file.fields |= GP_FILE_INFO_STATUS; /* the size is located at offset 2 and is 4 * bytes long, re-order little/big endian */ info.file.size = dirent_file_size; info.file.fields |= GP_FILE_INFO_SIZE; /* file access modes */ if ((dirent_attrs & CANON_ATTR_WRITE_PROTECTED) == 0) info.file.permissions = GP_FILE_PERM_READ | GP_FILE_PERM_DELETE; else info.file.permissions = GP_FILE_PERM_READ; info.file.fields |= GP_FILE_INFO_PERMISSIONS; } /* print dirent as text */ GP_DEBUG ("Raw info: name=%s is_dir=%i, is_file=%i, attrs=0x%x", dirent_name, is_dir, is_file, dirent_attrs); debug_fileinfo (&info); if (is_file) { /* * Append directly to the filesystem instead of to the list, * because we have additional information. */ if (!camera->pl->list_all_files && !is_image (filename) && !is_movie (filename) && !is_audio (filename)) { /* FIXME: Find associated main file and add it there */ /* do nothing */ GP_DEBUG ("Ignored %s/%s", folder, filename); } else { const char *thumbname; res = gp_filesystem_append (camera->fs, folder, filename, context); if (res != GP_OK) { GP_DEBUG ("Could not gp_filesystem_append " "%s in folder %s: %s", filename, folder, gp_result_as_string (res)); } else { GP_DEBUG ("Added file %s/%s", folder, filename); thumbname = canon_int_filename2thumbname (camera, filename); if (thumbname == NULL) { /* no thumbnail */ } else { if ( is_cr2 ( filename ) ) { /* We get the first part of the raw file as the thumbnail; this is (almost) a valid EXIF file. */ info.preview.fields = GP_FILE_INFO_TYPE; strncpy (info.preview.type, GP_MIME_EXIF, sizeof (info.preview.type)); } else { /* Older Canon cams have JPEG thumbs */ info.preview.fields = GP_FILE_INFO_TYPE; strncpy (info.preview.type, GP_MIME_JPEG, sizeof (info.preview.type)); } } res = gp_filesystem_set_info_noop (camera->fs, folder, filename, info, context); if (res != GP_OK) { GP_DEBUG ("Could not gp_filesystem_set_info_noop() " "%s in folder %s: %s", filename, folder, gp_result_as_string (res)); } } GP_DEBUG ( "file \"%s\" has preview of MIME type \"%s\"", filename, info.preview.type ); } } /* Some cameras have ".." explicitly * at the end of each directory. We * will silently omit this from the * directory returned. */ if ( is_dir && strcmp ( "..", filename ) ) { res = gp_list_append (list, filename, NULL); if (res != GP_OK) GP_DEBUG ("Could not gp_list_append " "folder %s: %s", folder, gp_result_as_string (res)); } } else { /* this case could mean that this was the last dirent */ GP_DEBUG ("canon_int_list_directory: " "dirent at position %li of %li has NULL name, skipping.", (long)(pos - dirent_data), (long)(end_of_data - dirent_data)); } } /* make 'pos' point to next dirent in packet. * first we skip 10 bytes of attribute, size and date, * then we skip the name plus 1 for the NULL * termination bytes. */ pos += dirent_ent_size; } free (dirent_data); dirent_data = NULL; GP_DEBUG (""); gp_filesystem_dump (camera->fs); GP_DEBUG (""); GP_DEBUG ("END canon_int_list_dir() folder '%s' aka '%s'", folder, canonfolder); return GP_OK; } /** * canon_int_get_file: * @camera: * @name: name of file to fetch * @data: to receive file data * @length: length of @data * @context: context for error reporting * * Gets the directory tree of a given flash device. * * Returns: gphoto2 error code, file contents in @data, * length of file in @length. * */ int canon_int_get_file (Camera *camera, const char *name, unsigned char **data, unsigned int *length, GPContext *context) { switch (camera->port->type) { case GP_PORT_USB: return canon_usb_get_file (camera, name, data, length, context); break; case GP_PORT_SERIAL: *data = canon_serial_get_file (camera, name, length, context); if (*data) return GP_OK; return GP_ERROR_OS_FAILURE; break; GP_PORT_DEFAULT } } /** * canon_int_get_thumbnail: * @camera: camera to work with * @name: image to get thumbnail of * @length: length of data returned * @retdata: The thumbnail data * @context: context for error reporting * * NOTE: Since cameras that do not store the thumbnail in a separate * file does not return just the thumbnail but the first 10813 bytes * of the image (most oftenly the EXIF header with thumbnail data in * it) this must be treated before called a true thumbnail. * * Returns: result from canon_usb_get_thumbnail() * or canon_serial_get_thumbnail() * */ int canon_int_get_thumbnail (Camera *camera, const char *name, unsigned char **retdata, unsigned int *length, GPContext *context) { int res; GP_DEBUG ("canon_int_get_thumbnail() called for file '%s'", name); CON_CHECK_PARAM_NULL (retdata); CON_CHECK_PARAM_NULL (length); switch (camera->port->type) { case GP_PORT_USB: res = canon_usb_get_thumbnail (camera, name, retdata, length, context); break; case GP_PORT_SERIAL: res = canon_serial_get_thumbnail (camera, name, retdata, length, context); break; GP_PORT_DEFAULT } if (res != GP_OK) { GP_DEBUG ("canon_int_get_thumbnail() failed, returned %i", res); return res; } return res; } /** * canon_int_delete_file: * @camera: camera to work with * @name: image to delete * @dir: directory from which to delete the file * @context: context for error reporting * * Deletes a file from the camera storage. * * Returns: result from canon_usb_dialogue() or canon_serial_dialogue() * */ int canon_int_delete_file (Camera *camera, const char *name, const char *dir, GPContext *context) { unsigned char payload[300]; unsigned char *msg; unsigned int len, payload_length; switch (camera->port->type) { case GP_PORT_USB: memcpy (payload, dir, strlen (dir) + 1); if ( camera->pl->md->model == CANON_CLASS_6 ) { char *ptr = (char *)payload + strlen(dir); char last_byte = dir[strlen(dir)-1]; /* Newer protocol uses a different * code and has different parameters: * - full path name together, rather than directory and file * as separate strings * - 8 bytes of other stuff, starting at 0x20 in * payload * - directory name (again) * - 2 null bytes */ if ( last_byte != '\\' && last_byte != '/' ) *ptr++ = '\\'; /* Need path separator between */ memcpy ( ptr, name, 0x30 - strlen(dir) - 1 ); memcpy ( payload + 0x30, dir, 0x30 ); payload_length = 0x30 + strlen(dir); if ( last_byte != '\\' && last_byte != '/' ) payload[payload_length++] = '\\'; /* Need path separator at end of directory name */ msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_DELETE_FILE_2, &len, payload, payload_length); } else { memcpy (payload + strlen (dir) + 1, name, strlen (name) + 1); payload_length = strlen (dir) + strlen (name) + 2; payload[payload_length++] = 0; /* Double NUL to end command */ msg = canon_usb_dialogue (camera, CANON_USB_FUNCTION_DELETE_FILE, &len, payload, payload_length); } if ( msg == NULL ) return GP_ERROR_OS_FAILURE; else if ( le32atoh ( msg ) != 0 ) { GP_DEBUG ( "canon_int_delete_file: " "non-zero return code 0x%x from camera. " "Possibly tried to delete a nonexistent file.", le32atoh ( msg ) ); return GP_ERROR_FILE_NOT_FOUND; } break; case GP_PORT_SERIAL: msg = canon_serial_dialogue (camera, context, 0xd, 0x11, &len, dir, strlen (dir) + 1, name, strlen (name) + 1, NULL); if ( msg == NULL ) { canon_serial_error_type (camera); return GP_ERROR_OS_FAILURE; } break; GP_PORT_DEFAULT } if (len != 4) { /* XXX should mark folder as dirty since we can't be sure if the file * got deleted or not */ return GP_ERROR_CORRUPTED_DATA; } if (msg[0] == 0x29) { gp_context_error (context, _("File protected.")); return GP_ERROR_CAMERA_ERROR; } /* XXX we should mark folder as dirty, re-read it and check if the file * is gone or not. */ return GP_OK; } /** * canon_int_put_file: * @camera: camera to work with * @file: gphoto2 file object to upload * @destname: name for file on camera * @destpath: directory in which to put the file * @context: context for error reporting * * Uploads a file to the camera. * * Returns: result from canon_usb_put_file() or canon_serial_put_file() * */ int canon_int_put_file (Camera *camera, CameraFile *file, const char *filename, const char *destname, const char *destpath, GPContext *context) { switch (camera->port->type) { case GP_PORT_USB: return canon_usb_put_file (camera, file, filename, destname, destpath, context); break; case GP_PORT_SERIAL: return canon_serial_put_file (camera, file, filename, destname, destpath, context); break; GP_PORT_DEFAULT } /* Never reached */ return GP_ERROR; } int canon_int_wait_for_event (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context) { switch (camera->port->type) { case GP_PORT_USB: return canon_usb_wait_for_event (camera, timeout, eventtype, eventdata, context); break; GP_PORT_DEFAULT } /* Never reached */ return GP_ERROR; } /* NOTE: * This function should actually not be necessary, as * canon_int_list_directory preps the filesystem info backing store with * all the CameraFileInfos it needs. * It might never be called. */ int canon_int_get_info_func (Camera *camera, const char *folder, const char *filename, CameraFileInfo *info, GPContext *context) { /* FIXME: big copy and paste mess from canon_int_list_directory */ int res; unsigned int dirents_length; unsigned char *dirent_data = NULL; unsigned char *end_of_data, *temp_ch, *pos; const char *canonfolder = gphoto2canonpath (camera, folder, context); GP_DEBUG ("BEGIN canon_int_get_info_func() folder '%s' aka '%s' filename %s", folder, canonfolder, filename); if ( canonfolder == NULL ) { GP_DEBUG ( "Error: canon_int_get_info_func called with null name for camera folder" ); return GP_ERROR; } /* Fetch all directory entries from the camera */ switch (camera->port->type) { case GP_PORT_USB: res = canon_usb_get_dirents (camera, &dirent_data, &dirents_length, canonfolder, context); break; case GP_PORT_SERIAL: res = canon_serial_get_dirents (camera, &dirent_data, &dirents_length, canonfolder, context); break; GP_PORT_DEFAULT } if (res != GP_OK) return res; end_of_data = dirent_data + dirents_length; if (dirents_length < CANON_MINIMUM_DIRENT_SIZE) { gp_context_error (context, _("canon_int_get_info_func: ERROR: " "initial message too short (%i < minimum %i)"), dirents_length, CANON_MINIMUM_DIRENT_SIZE); free (dirent_data); dirent_data = NULL; return GP_ERROR_CORRUPTED_DATA; } /* The first data we have got here is the dirent for the * directory we are reading. Skip over 10 bytes * (2 for attributes, 4 date and 4 size) and then go find * the end of the directory name so that we get to the next * dirent which is actually the first one we are interested * in */ GP_DEBUG ("canon_int_get_info_func: Camera directory listing for directory '%s'", dirent_data + CANON_DIRENT_NAME); for (pos = dirent_data + CANON_DIRENT_NAME; pos < end_of_data && *pos != 0; pos++) /* do nothing */ ; if (pos == end_of_data || *pos != 0) { gp_log (GP_LOG_ERROR, "canon_int_get_info_func", "Reached end of packet while examining the first dirent"); free (dirent_data); dirent_data = NULL; return GP_ERROR_CORRUPTED_DATA; } pos++; /* skip NULL byte terminating directory name */ /* we are now positioned at the first interesting dirent */ /* This is the main loop, for every directory entry returned */ while (pos < end_of_data) { int is_dir, is_file; uint16_t dirent_attrs; /* attributes of dirent */ uint32_t dirent_file_size; /* size of dirent in octets */ uint32_t dirent_time; /* time stamp of dirent (Unix Epoch) */ uint8_t *dirent_name; /* name of dirent */ size_t dirent_name_len; /* length of dirent_name */ size_t dirent_ent_size; /* size of dirent in octets */ uint32_t tmp_time; time_t date; struct tm *tm; dirent_attrs = le16atoh (pos + CANON_DIRENT_ATTRS); dirent_file_size = le32atoh (pos + CANON_DIRENT_SIZE); dirent_name = pos + CANON_DIRENT_NAME; /* see canon_int_set_time() for timezone handling */ tmp_time = le32atoh (pos + CANON_DIRENT_TIME); if (tmp_time != 0) { /* FIXME: I just want the tm_gmtoff/timezone info */ date = time(NULL); tm = localtime (&date); #ifdef HAVE_TM_GMTOFF dirent_time = tmp_time - tm->tm_gmtoff; GP_DEBUG ("canon_int_get_info_func: converted %ld to UTC %ld (tm_gmtoff is %ld)", (long)tmp_time, (long)dirent_time, (long)tm->tm_gmtoff); #else dirent_time = tmp_time + timezone; GP_DEBUG ("canon_int_get_info_func: converted %ld to UTC %ld (timezone is %ld)", (long)tmp_time, (long)dirent_time, (long)timezone); #endif } else { dirent_time = tmp_time; } is_dir = ((dirent_attrs & CANON_ATTR_NON_RECURS_ENT_DIR) != 0) || ((dirent_attrs & CANON_ATTR_RECURS_ENT_DIR) != 0); is_file = !is_dir; gp_log (GP_LOG_DATA, "canon/canon.c", "canon_int_get_info_func: " "reading dirent at position %li of %li (0x%lx of 0x%lx)", (long)(pos - dirent_data), (long)(end_of_data - dirent_data), (long)(pos - dirent_data), (long)(end_of_data - dirent_data) ); if (pos + CANON_MINIMUM_DIRENT_SIZE > end_of_data) { if (camera->port->type == GP_PORT_SERIAL) { /* check to see if it is only NULL bytes left, * that is not an error for serial cameras * (at least the A50 adds five zero bytes at the end) */ for (temp_ch = pos; (temp_ch < end_of_data) && (!*temp_ch); temp_ch++) ; /* do nothing */ if (temp_ch == end_of_data) { GP_DEBUG ("canon_int_get_info_func: " "the last %li bytes were all 0 - ignoring.", (long)(temp_ch - pos)); break; } else { GP_DEBUG ("canon_int_get_info_func: " "byte[%li=0x%lx] == %i=0x%x", (long)(temp_ch - pos), (long)(temp_ch - pos), *temp_ch, *temp_ch); GP_DEBUG ("canon_int_get_info_func: " "pos is %p, end_of_data is %p, temp_ch is %p - diff is 0x%lx", pos, end_of_data, temp_ch, (long)(temp_ch - pos)); } } GP_DEBUG ("canon_int_get_info_func: " "dirent at position %li=0x%lx of %li=0x%lx is too small, " "minimum dirent is %i bytes", (long)(pos - dirent_data), (long)(pos - dirent_data), (long)(end_of_data - dirent_data), (long)(end_of_data - dirent_data), CANON_MINIMUM_DIRENT_SIZE); gp_log (GP_LOG_ERROR,"canon_int_get_info_func", "truncated directory entry encountered"); free (dirent_data); dirent_data = NULL; return GP_ERROR_CORRUPTED_DATA; } /* Check end of this dirent, 10 is to skip over * 2 attributes + 0x00 * 4 file size * 4 file date (UNIX localtime) * to where the direntry name begins. */ for (temp_ch = dirent_name; temp_ch < end_of_data && *temp_ch != 0; temp_ch++) ; if (temp_ch == end_of_data || *temp_ch != 0) { GP_DEBUG ("canon_int_get_info_func: " "dirent at position %li of %li has invalid name in it." "bailing out with what we've got.", (long)(pos - dirent_data), (long)(end_of_data - dirent_data)); break; } dirent_name_len = strlen ((char *)dirent_name); dirent_ent_size = CANON_MINIMUM_DIRENT_SIZE + dirent_name_len; /* check that length of name in this dirent is not of unreasonable size. * 256 was picked out of the blue */ if (dirent_name_len > 256) { GP_DEBUG ("canon_int_get_info_func: " "the name in dirent at position %li of %li is too long. (%li bytes)." "bailing out with what we've got.", (long)(pos - dirent_data), (long)(end_of_data - dirent_data), (long)dirent_name_len); break; } /* 10 bytes of attributes, size and date, a name and a NULL terminating byte */ GP_LOG_DATA ((char *)pos, dirent_ent_size, "canon_int_get_info_func: dirent determined to be %li=0x%lx bytes:", (long)dirent_ent_size, (long)dirent_ent_size); if (dirent_name_len) { /* OK, this directory entry has a name in it. */ if (!strcmp(filename, (char*)dirent_name)) { /* we're going to fill out the info structure in this block */ /* We start with nothing and continously add stuff */ info->file.fields = GP_FILE_INFO_NONE; info->file.mtime = dirent_time; if (info->file.mtime != 0) info->file.fields |= GP_FILE_INFO_MTIME; if (is_file) { /* determine file type based on file name * this stuff only makes sense for files, not for folders */ strncpy (info->file.type, filename2mimetype (filename), sizeof (info->file.type)); info->file.fields |= GP_FILE_INFO_TYPE; if (dirent_attrs & CANON_ATTR_NOT_DOWNLOADED) info->file.status = GP_FILE_STATUS_NOT_DOWNLOADED; else info->file.status = GP_FILE_STATUS_DOWNLOADED; info->file.fields |= GP_FILE_INFO_STATUS; /* the size is located at offset 2 and is 4 * bytes long, re-order little/big endian */ info->file.size = dirent_file_size; info->file.fields |= GP_FILE_INFO_SIZE; /* file access modes */ if ((dirent_attrs & CANON_ATTR_WRITE_PROTECTED) == 0) info->file.permissions = GP_FILE_PERM_READ | GP_FILE_PERM_DELETE; else info->file.permissions = GP_FILE_PERM_READ; info->file.fields |= GP_FILE_INFO_PERMISSIONS; } /* print dirent as text */ GP_DEBUG ("Raw info: name=%s is_dir=%i, is_file=%i, attrs=0x%x", dirent_name, is_dir, is_file, dirent_attrs); debug_fileinfo (info); if (is_file) { /* * Append directly to the filesystem instead of to the list, * because we have additional information. */ if (!camera->pl->list_all_files && !is_image (filename) && !is_movie (filename) && !is_audio (filename)) { /* FIXME: Find associated main file and add it there */ /* do nothing */ GP_DEBUG ("Ignored %s/%s", folder, filename); } else { const char *thumbname; thumbname = canon_int_filename2thumbname (camera, filename); if (thumbname == NULL) { /* no thumbnail */ } else { if ( is_cr2 ( filename ) ) { /* We get the first part of the raw file as the thumbnail; this is (almost) a valid EXIF file. */ info->preview.fields = GP_FILE_INFO_TYPE; strcpy (info->preview.type, GP_MIME_EXIF); } else { /* Older Canon cams have JPEG thumbs */ info->preview.fields = GP_FILE_INFO_TYPE; strcpy (info->preview.type, GP_MIME_JPEG); } } GP_DEBUG ( "file \"%s\" has preview of MIME type \"%s\"", filename, info->preview.type ); } } /* found ... leave loop */ break; } } /* make 'pos' point to next dirent in packet. * first we skip 10 bytes of attribute, size and date, * then we skip the name plus 1 for the NULL * termination bytes. */ pos += dirent_ent_size; } free (dirent_data); dirent_data = NULL; GP_DEBUG ("END canon_int_get_info_func() folder '%s' aka '%s' fn '%s'", folder, canonfolder, filename); return GP_OK; } /** * canon_int_extract_jpeg_thumb: * @data: raw JFIF from which to extract thumbnail * @datalen: length of @data * @retdata: to receive extracted thumbnail * @retdatalen: length of @retdata * @context: context for error reporting * * Extracts thumbnail from JFIF image (A70) or movie .thm file. * just extracted the code from the old #canon_int_get_thumbnail * * Returns: gphoto2 error code * */ int canon_int_extract_jpeg_thumb (unsigned char *data, const unsigned int datalen, unsigned char **retdata, unsigned int *retdatalen, GPContext *context) { unsigned int i, thumbstart = 0, thumbsize = 0; CHECK_PARAM_NULL (data); CHECK_PARAM_NULL (retdata); *retdata = NULL; *retdatalen = 0; if (data[0] == JPEG_ESC || data[1] == JPEG_BEG) { GP_DEBUG ("canon_int_extract_jpeg_thumb: this is a JFIF file."); /* pictures are JFIF files, we skip the first 2 bytes (0xFF 0xD8) * first go look for start of JPEG, when that is found we set thumbstart * to the current position and never look for JPEG begin bytes again. * when thumbstart is set look for JPEG end. */ for (i = 3; i < datalen; i++) if (data[i] == JPEG_ESC) { if (! thumbstart) { if (i < (datalen - 3) && data[i + 1] == JPEG_BEG && ((data[i + 3] == JPEG_SOS) || (data[i + 3] == JPEG_A50_SOS))) thumbstart = i; } else if (i < (datalen - 1) && (data[i + 1] == JPEG_END)) { thumbsize = i + 2 - thumbstart; break; } } if (! thumbsize) { gp_context_error (context, _("Could not extract JPEG " "thumbnail from data: No beginning/end")); GP_DEBUG ("canon_int_extract_jpeg_thumb: could not find JPEG " "beginning (offset %i) or end (size %i) in %i bytes of data", datalen, thumbstart, thumbsize); return GP_ERROR_CORRUPTED_DATA; } /* now that we know the size of the thumbnail embedded in the JFIF data, malloc() */ *retdata = malloc (thumbsize); if (! *retdata) { GP_DEBUG ("canon_int_extract_jpeg_thumb: could not allocate %i bytes of memory", thumbsize); return GP_ERROR_NO_MEMORY; } /* and copy */ memcpy (*retdata, data + thumbstart, thumbsize); *retdatalen = thumbsize; } else if ( !strcmp ( (char *)data, "II*" ) && data[8] == 'C' && data[9] == 'R' ) { /* This is a valid EXIF file; we need to sort through * to get the JPEG thumbnail. */ #ifdef HAVE_LIBEXIF /* We have to do this ourselves, because libexif * assumes that the EXIF info is encapsulated in an * APP1 marker in a JFIF file. So we parse enough to * get the thumbnail, which is found via IFD 1. */ /* FIXME: We need to extract the EXIF IFD and copy it * into the image we return, as higher levels of * software assume that the EXIF is included in the * JPEG thumbnail and just fetch the thumbnail to get * the EXIF data. */ unsigned int n_tags; int ifd0_offset, ifd1_offset; int jpeg_offset = -1, jpeg_size = -1; GP_DEBUG ( "canon_int_extract_jpeg_thumb: this is from a CR2 file."); dump_hex ( stderr, data, 32 ); ifd0_offset = exif_get_long ( data+4, EXIF_BYTE_ORDER_INTEL ); GP_DEBUG ( "canon_int_extract_jpeg_thumb: IFD 0 at 0x%x", ifd0_offset ); n_tags = exif_get_short ( data+ifd0_offset, EXIF_BYTE_ORDER_INTEL ); GP_DEBUG ( "canon_int_extract_jpeg_thumb: %d tags in IFD 0", n_tags ); ifd1_offset = exif_get_long ( data + ifd0_offset + 2 + 12*n_tags, EXIF_BYTE_ORDER_INTEL ); GP_DEBUG ( "canon_int_extract_jpeg_thumb: IFD 1 at 0x%x", ifd1_offset ); n_tags = exif_get_short ( data+ifd1_offset, EXIF_BYTE_ORDER_INTEL ); GP_DEBUG ( "canon_int_extract_jpeg_thumb: %d tags in IFD 1", n_tags ); /* Now go through IFD 1 and find the two tags we need. */ for ( i=0; i "Get picture/thumbnail", "0x01 0x12 0x201" => "Identify camera", "0x03 0x12 0x201" => "Get time", "0x03 0x11 0x403" => "Upload data block", "0x04 0x12 0x201" => "Set time", "0x05 0x11 0x201" => "Make directory", "0x05 0x12 0x201" => "Change owner (old) or get owner (new)", "0x06 0x11 0x201" => "Remove directory", "0x06 0x12 0x201" => "Change owner (new)", "0x09 0x11 0x201" => "Disk info request", "0x0a 0x11 0x202" => "Flash device ID", "0x0a 0x11 0x201" => "Delete file (new)", "0x0a 0x12 0x201" => "Power supply status", "0x0b 0x11 0x202" => "Get directory", "0x0d 0x11 0x201" => "Delete file (old) or Disk info request (new)", "0x0e 0x11 0x201" => "Set file attribute", "0x0e 0x11 0x202" => "Flash Device ID (new)", "0x0f 0x11 0x201" => "Set file time", "0x13 0x12 0x201" => "Remote Camera control", "0x17 0x12 0x202" => "Download captured image", "0x18 0x12 0x202" => "Download captured preview", "0x1a 0x12 0x201" => "Unknown EOS D30 command", "0x1b 0x12 0x201" => "EOS lock keys", "0x1c 0x12 0x201" => "EOS unlock keys", "0x1d 0x12 0x201" => "EOS get body ID (old) or Get Custom Functions (new)", "0x1f 0x12 0x201" => "Get camera abilities", "0x20 0x12 0x201" => "Lock keys, turn off LCD", "0x21 0x12 0x201" => "Unknown newer command", "0x22 0x12 0x201" => "Unknown newer command", "0x23 0x12 0x201" => "Get EOS Body ID (new)", "0x24 0x12 0x201" => "Get camera abilities (new)", "0x25 0x12 0x201" => "Remote Camera control (new)", "0x26 0x12 0x202" => "Get captured image (new)", "0x35 0x12 0x201" => "Unknown newer command", "0x36 0x12 0x201" => "Unknown newer command" ); my %control_subcmd = ( "0x00" => "Camera control init", "0x01" => "Exit release control", "0x02" => "Start viewfinder", "0x03" => "Stop viewfinder", "0x04" => "Release shutter", "0x07" => "Set release params", "0x09" => "Set transfer mode", "0x0a" => "Get release params", "0x0b" => "Get zoom position", "0x0c" => "Set zoom position", "0x0d" => "Get available shot", "0x0e" => "Set custom func.", "0x0f" => "Get custom func.", "0x10" => "Get extended release params size", "0x11" => "Get extended params version", "0x12" => "Get extended release params", "0x13" => "Set extended params", "0x14" => "Select camera output", "0x15" => "Do AE, AF, and AWB" ); my %intcode = ( "00" => "unknown 00", "01" => "unknown 01", "02" => "unknown 02", "05" => "unknown 05", "08" => "Thumbnail descriptor", "0a" => "Capture status", "0c" => "Image descriptor", "0e" => "EOS flash write success", "0f" => "Capture complete", "20" => "initialization" ); my ($file, %urb, %urbdata, %urbpipe); if ($#ARGV == -1) { warn("Syntax: $0 file [file ...]\n"); exit(1); } foreach $file (@ARGV) { open(FILE, "< $file") or die("Could not open file '$file' for reading: $!\n"); my $line; my $byte_offset; my $dumping_urbdata = 0; my $dumping_setup = 0; my $current_urb = -1; my $current_function_type; my $buffer = 0; my $direction; my $current_lines; my $seq; my $timestamp; warn("FILE: $file\n"); while ($line = ) { chomp($line); $line =~ s/\r//; # Trim possible (from Windows) if ($line =~ />>>\s+URB (\d+) going down/) { $current_urb = $1; #warn("URB $current_urb down...\n"); $direction = "down"; # There may be a previous URB under way that was truncated. $dumping_urbdata = 0; $dumping_setup = 0; } elsif ($line =~ /<<<\s+URB (\d+) coming back/) { $current_urb = $1; #warn("URB $current_urb read\n"); $direction = "back"; # There may be a previous URB under way that was truncated. $dumping_urbdata = 0; $dumping_setup = 0; } elsif ( $line =~ /Diag Driver: Receive/ || $line =~ /isEchoRequest/ || $line =~ /isWakeUpRequest/ || $line =~ /filter/ ) { next; } elsif ( $line =~ /^\[\d+ ms\] UsbSnoop/ ) { $dumping_urbdata = 0; $dumping_setup = 0; next; } elsif ( $line =~ /^\d+\s+\d+\.\d+\s+UrbLink/ ) { $dumping_urbdata = 0; $dumping_setup = 0; next; } else { if ($current_urb > 0) { if ( $line =~ /^(\d+)\s+(\d\d:\d\d:\d\d [AP]M)\s+0000:\s+/ || $line =~ /^(\d+)\s+(\d+\.\d+)\s+0000:\s+/ || $line =~ /^\s+00000000:\s+/ ) { if ( !($dumping_setup) ) { #warn ( "dumping URB data\n" ); $dumping_urbdata = 1; $current_lines = 0; $byte_offset = "0000"; # start of urbdata, decide which buffer this is if ($urbdata{$current_urb}{buffer0} ) { $buffer = "buffer1"; } else { $buffer = "buffer0"; } #warn("URB $current_urb $buffer\n"); # mark that the buffer goes here push(@{$urb{$current_urb}}, "[buffer $buffer]"); } else { $current_lines = 0; $byte_offset = "0000"; $buffer = "setup"; #warn("URB $current_urb setup info\n"); # mark that the buffer goes here push(@{$urb{$current_urb}}, "[buffer setup]"); } } if ($dumping_urbdata) { # Within data buffer my $hex = ""; if ($line =~ /^(\d+)\s+(\d\d:\d\d:\d\d [AP]M)\s+([\da-f]+):((\s[\da-f][\da-f])+)\s+$/ || $line =~ /^(\d+)\s+(\d+\.\d+)\s+([\da-f]+):((\s[\da-f][\da-f])+)\s+$/ || $line =~ /^\s+([\da-f]+):((\s[\da-f][\da-f])+)\s+$/ ) { $seq = $1; $timestamp = $2; $byte_offset = $3; $hex = $4; #warn ( "case 1: row $byte_offset of URB $current_urb: seq $seq time $timestamp data $hex\n" ); } elsif ( $line =~ /^\s+([\da-f]+):((\s[\da-f][\da-f])+)\s*$/ ) { $byte_offset = $1; $hex = $2; #warn ( "case 2: row $byte_offset of URB $current_urb\n" ); } elsif ( $line =~ /^(\d)+\s+(\d+\.\d+)\s+[a-f]:\s+$/ ) { $byte_offset = $3; $hex = $4; #warn ( "case 3: row $byte_offset of URB $current_urb\n" ); } else { #warn ( "case 4: not in data URB $current_urb\n" ); if ($line =~ /^(\d+)\s+(\d\d:\d\d:\d\d [AP]M)\s+([\da-f]+):\s+$/ || $line =~ /^(\d+)\s+(\d+\.\d+)\s+([\da-f]+):\s+$/ ) { # every other line is this kind of line, data offset $byte_offset = $3; next; } elsif ( $line =~ /^\s+([a-f0-9]+):(( [a-f0-9][a-f0-9])+)$/ ) { $hex = $2; } else { if ( $line =~ /UrbLink/ || $line =~ /^(\d+)\s+(\d+\.\d+)\s*$/ ) { # this is not a urbdata line. reset. $dumping_urbdata = 0; next; # unimportant line, just go to next } else { warn("$file:$. Unknown data '$line' when dumping URB data\n"); next; } } } if ($hex) { if ( $urbdata{$current_urb}{op} eq "WRITE" ) { # If this is an OUT transaction, try to decode # Canon command codes. These will be in two lines # of the buffer dump: the first, starting at offset # 0000:; and the fifth, starting at offset 0040: if (hex($byte_offset) == 0x00) { my @h = split(" ", $hex); if ( $#h < 8 ) { warn ( "URB $current_urb has digits missing from cmd3: probable truncated packet\n" ); $urbdata{$current_urb}{cmd3} = "BAD"; } else { $urbdata{$current_urb}{cmd3} = sprintf("0x%02x", hex("$h[7]$h[6]$h[5]$h[4]")); } } elsif (hex($byte_offset) == 0x40) { my @h = split(" ", $hex); if ( defined($h[4]) ) { $urbdata{$current_urb}{cmd1} = "0x$h[4]"; } if ( defined($h[7]) ) { $urbdata{$current_urb}{cmd2} = "0x$h[7]"; } } elsif (hex($byte_offset) == 0x50) { if ( defined ( $urbdata{$current_urb}{cmd1} ) && defined ( $urbdata{$current_urb}{cmd2} ) ) { if ( ( $urbdata{$current_urb}{cmd1} eq "0x13" && $urbdata{$current_urb}{cmd2} eq "0x12") || ( $urbdata{$current_urb}{cmd1} eq "0x25" && $urbdata{$current_urb}{cmd2} eq "0x12") ) { my @h = split(" ", $hex); $urbdata{$current_urb}{subcmd} = "0x$h[0]"; } } } } elsif ($urbdata{$current_urb}{pipe} eq "2" && hex($byte_offset) == 0x00 ) { # An interrupt read; let's save the data for later decoding $urbdata{$current_urb}{intdata} = $hex; } elsif ($urbdata{$current_urb}{op} eq "READ" && hex($byte_offset) == 0x40 ) { my @h = split(" ", $hex); if ( defined($h[0x4]) && defined($h[0x5]) && defined($h[0x6]) && defined($h[0x7]) ) { $urbdata{$current_urb}{usbid} = "(0x$h[0x7]$h[0x6],0x$h[0x5]$h[0x4])"; $urbdata{$current_urb}{magic} = "$h[0x3]$h[0x2]$h[0x1]$h[0x0]"; } } if ( $current_lines < 65 ) { push(@{ $urbdata{$current_urb}{ $buffer } }, hex_format($byte_offset, $hex)); } $current_lines++; $byte_offset = -1; next; } } elsif ( $dumping_setup ) { my $hex = ""; if ($line =~ /^(\d+)\s+(\d\d:\d\d:\d\d [AP]M)\s+([\da-f]+):((\s[\da-f][\da-f])+)\s+$/ || $line =~ /^(\d+)\s+(\d+\.\d+)\s+([\da-f]+):((\s[\da-f][\da-f])+)\s+$/ ) { $byte_offset = $3; $hex = $4; } elsif ( $line =~ /^\s+([\da-f]+):((\s[\da-f][\da-f])+)\s*$/ ) { $byte_offset = $1; $hex = $2; } else { warn("$file:$. Unknown data '$line' when dumping URB setup data\n"); next; } if ($hex) { # Store this for later dumping. if ( $current_lines < 65 ) { push(@{ $urbdata{$current_urb}{setup} }, hex_format($byte_offset, $hex)); } $current_lines++; } next; } else { # Not within data buffer; parse other info if ($line =~ /\sInterface\[0\]: Pipes\[(\d+)\] : PipeHandle\s+= 0x([\da-f]+)/) { # remember URB pipe $urbpipe{$2} = $1; warn("PIPE $2 = $1\n"); print ( "Pipe $2 = $1" ); if ( $1 == 0 ) { print ( " (main)\n" ); } elsif ( $1 == 2 ) { print ( " (interrupt)\n" ); } else { print ( "\n" ); } } elsif ($line =~ /\sPipeHandle\s+= ([\da-f]+)/) { # check if we know this URB pipe if ( defined ( $urbpipe{$1} ) ) { $urbdata{$current_urb}{pipe} = $urbpipe{$1}; } else { if ( $current_function_type =~ "CONTROL_TRANSFER" ) { $urbpipe{control} = $1; $urbdata{$current_urb}{pipe} = ""; } else { #warn ( "Unknown pipe $1 from line $line" ); $urbdata{$current_urb}{pipe} = "UNKNOWN"; } } #warn("URB $current_urb PIPE $1 = $urbdata{$current_urb}{pipe}\n"); } elsif ( $line =~ /SetupPacket\s+=\s*/ ) { #warn ( "found setup packet for URB $current_urb" ); $dumping_urbdata = 0; $dumping_setup = 1; next; } if ( $line =~ /^--\s+URB_FUNCTION_([A-Z_]+):/ || $line =~ /^\d+\s+\d+\.\d+\s+--\s+URB_FUNCTION_([A-Z_]+):/ || $line =~ /^\d+\s+\d\d:\d\d:\d\d [AP]M\s+--\s+URB_FUNCTION_([A-Z_]+):/ ) { # Informing us of transfer type. Seven kinds have been seen. $current_function_type = $1; #warn ( "URB $current_urb is of function type $current_function_type" ); if ( $current_function_type =~ "GET_DESCRIPTOR_FROM_DEVICE" ) { # This is a read request, but lacks the "TransferFlags" # keyword. $urbdata{$current_urb}{op} = "READ"; } } elsif ($line =~ /.*\sTransferFlags.+USBD_TRANSFER_DIRECTION_(OUT|IN)/) { # OP in "coming back" is most reliable, and that one # is always after "going down" so we don't need to # check previous value here, just overwrite if ($1 eq "OUT") { $urbdata{$current_urb}{op} = "WRITE"; } elsif ($1 eq "IN") { $urbdata{$current_urb}{op} = "READ"; } else { warn ( "Invalid transfer direction \"$1\"\n" ); } } if ( $line =~ /\s+TransferBufferLength\s+=\s+([\da-f]+)/ ) { my $t = hex($1); if ( !defined($urbdata{$current_urb}{op}) ) { warn ( "URB $current_urb length=$t, but don't know type\n" ); } elsif ($urbdata{$current_urb}{op} eq "READ") { # ok, this is read operation. info is # always good. $urbdata{$current_urb}{bytes} = $t; #warn ( "URB $current_urb read $t\n" ); } elsif ($urbdata{$current_urb}{op} eq "WRITE") { if ($direction eq "down") { $urbdata{$current_urb}{bytes} = $t; #warn ( "URB $current_urb $urbdata{$current_urb}{op} $urbdata{$current_urb}{bytes}\n" ); } # else, this information is unreliable } } } } } if ($line =~ /^(\d+) ([\w\d:\.]+?) (.+?)\s*$/) { # we want to trim down the line numbers and time my $lineno = $1; my $time = $2; my $rest = $3; $line = sprintf("%.5d %.3f %s", $lineno, $time, $rest); } elsif ( $line =~ /^(\d+)\s+(\d+\.\d+)\s+(.+?)\s*$/ ) { # we want to trim down the line numbers and time my $lineno = $1; my $time = $2; my $rest = $3; $line = sprintf("%.5d %.3f %s", $lineno, $time, $rest); } elsif ( $line =~ /^\[(\d+) ms\] (.+?)\s*$/ ) { my $time = $1; my $rest = $3; } else { # replace tabs with two spaces to make lines shorter $line =~ s/ / /g; } if ($current_urb == -1) { print("$line\n"); } else { push(@{$urb{$current_urb}}, $line); } } close(FILE); warn("\noutputting formatted data\n"); my $n_skipped = 0; foreach $current_urb (sort numerically keys %urb) { # these are declared for readability my $cmd1 = $urbdata{$current_urb}{cmd1}; my $cmd2 = $urbdata{$current_urb}{cmd2}; my $cmd3 = $urbdata{$current_urb}{cmd3}; my $pipe = $urbdata{$current_urb}{pipe}; my $op = $urbdata{$current_urb}{op}; my $length = $urbdata{$current_urb}{bytes}; my $keep_alive = 0; if ( defined($op) ) { if ( !defined($length) ) { warn ( "Missing operation length in URB $current_urb\n" ); } elsif ( defined($pipe) ) { if ( $pipe eq "2" && $length eq "0") { $n_skipped++; next; } } if ( $n_skipped ) { print ( "\n*** Skipped $n_skipped null interrupt reads ***\n" ); $n_skipped = 0; } if ($op eq "READ") { if ( defined($length) ) { if ( $pipe eq "2" ) { my $hex = ""; if ( defined ( $urbdata{$current_urb}{intdata} ) ) { $hex = $urbdata{$current_urb}{intdata}; my @h = split ( " ", $hex ); my $code = $h[4]; if ( defined ( $intcode{$code} ) ) { if ( hex($code) == 0x0a ) { # Capture status: there's a subcode that tells us more. my $subcode = hex($h[0x0c]); if ( $subcode == 0x1c ) { printf ( "\n*** URB $current_urb interrupt read 0x%02x bytes: capture start ***\n\n", $length ); } elsif ( $subcode == 0x1d ) { printf ( "\n*** URB $current_urb interrupt read 0x%02x bytes: capture finish ***\n\n", $length ); } elsif ( $subcode == 0x1b ) { printf ( "\n*** URB $current_urb interrupt read 0x%02x bytes: flash wait ***\n\n", $length ); } elsif ( $subcode == 0x0a ) { printf ( "\n*** URB $current_urb interrupt read 0x%02x bytes: photographic failure ***\n\n", $length ); } } else { printf ( "\n*** URB $current_urb interrupt read 0x%02x bytes: $intcode{$code} ***\n\n", $length ); } } else { printf ( "\n*** URB $current_urb interrupt read 0x%02x bytes: unknown type $code ***\n\n", $length ); } } elsif ($length == 0x40) { print("\n\n\n\n*** URB $current_urb possible CANON RESPONSE 0x%x bytes ***\n", $length); } elsif ($length == 0x01) { print("\n\n\n\n*** URB $current_urb probably CAMERA INIT ***\n\n"); } elsif ($length == 0x58 && defined ($urbdata{$current_urb}{usbid}) ) { print("\n\n\n\n*** URB $current_urb probably camera initial response, USB ID=$urbdata{$current_urb}{usbid}, magic=$urbdata{$current_urb}{magic} ***\n\n"); } else { print ( "\n*** URB $current_urb interrupt read, but data are missing from log file ***\n\n" ); } } elsif ($length == 0x58 && defined ($urbdata{$current_urb}{usbid}) ) { if ( $urbdata{$current_urb}{magic} == 0x00000002 ) { print("\n\n\n\n*** URB $current_urb possible CANON RESPONSE 0x%x bytes ***\n", $length); } else { print("\n\n\n\n*** URB $current_urb probably camera initial response, USB ID=$urbdata{$current_urb}{usbid}, magic=$urbdata{$current_urb}{magic} ***\n\n"); } } elsif ($length == 0x01) { print("\n\n\n\n*** URB $current_urb probably CAMERA INIT ***\n\n"); } elsif ($length >= 0x40) { printf("\n\n\n\n*** URB $current_urb possible CANON RESPONSE 0x%x bytes ***\n", $length); } else { print("\n"); } } else { print("\n"); } } elsif ($op eq "WRITE") { if ( defined($length) ) { my $cmd; if ( defined($urbdata{$current_urb}{cmd1}) ) { $cmd = "$urbdata{$current_urb}{cmd1}"; } else { $cmd = "LOST"; } if ( defined($urbdata{$current_urb}{cmd2}) ) { $cmd = "$cmd $urbdata{$current_urb}{cmd2}"; } else { $cmd = "$cmd LOST"; } if ( defined($urbdata{$current_urb}{cmd3}) ) { $cmd = "$cmd $urbdata{$current_urb}{cmd3}"; } else { $cmd = "$cmd LOST"; } if ( defined ( $length ) ) { if ($length >= 0x50) { if ( $cmd eq "LOST LOST LOST" ) { warn ( "Command string is $cmd at URB $current_urb\n" ); } elsif ($canon_cmd{$cmd}) { if ( $cmd eq "0x13 0x12 0x201" || $cmd eq "0x25 0x12 0x201" ) { if ( defined($urbdata{$current_urb}{subcmd}) ) { printf("\n\n\n\n*** URB $current_urb CANON COMMAND '$canon_cmd{$cmd}' ($cmd) 0x%02x bytes", $length); if ( $control_subcmd{$urbdata{$current_urb}{subcmd}} ) { print ( ": $control_subcmd{$urbdata{$current_urb}{subcmd}} ***\n\n" ); } else { print ( ". Unknown subcommand: $urbdata{$current_urb}{subcmd} ***\n\n" ); } } else { # Special case for newer (e.g. EOS 20D) protocol printf("\n\n\n\n*** URB $current_urb CANON COMMAND 'Get Power Status (newer)' ($cmd) 0x%02x bytes ***\n\n", $length); } } else { printf("\n\n\n\n*** URB $current_urb CANON COMMAND '$canon_cmd{$cmd}' ($cmd) 0x%02x bytes ***\n\n", $length); } } elsif ($cmd3 eq "0x201" or $cmd3 eq "0x202") { printf("\n\n\n\n*** URB $current_urb PROBABLE CANON COMMAND ($cmd) 0x%02x bytes ***\n\n", $length); } else { printf("\n\n\n\n*** URB $current_urb possible CANON COMMAND ($cmd) 0x%02x bytes ***\n\n", $length); } } elsif ($cmd3 eq "0x201" or $cmd3 eq "0x202") { if ($canon_cmd{$cmd}) { printf("\n\n\n\n*** URB $current_urb CANON COMMAND '$canon_cmd{$cmd}' ($cmd) 0x%02x bytes ***\n\n", $length); } else { printf("\n\n\n\n*** URB $current_urb PROBABLE CANON COMMAND ($cmd) 0x%02x bytes ***\n\n", $length); } } else { printf("\n\n\n\n*** URB $current_urb possible CANON COMMAND ($cmd) 0x%02x bytes ***\n\n", $length); } } elsif ($cmd3 eq "0x201" or $cmd3 eq "0x202") { if ($canon_cmd{$cmd}) { printf("\n\n\n\n*** URB $current_urb CANON COMMAND '$canon_cmd{$cmd}' ($cmd) 0x%02x bytes ***\n\n", $length); } else { printf("\n\n\n\n*** URB $current_urb PROBABLE CANON COMMAND ($cmd) 0x%02x bytes ***\n\n", $length); } } } else { warn ( "URB $current_urb write of unknown length" ); print ( "\n\n\n\n*** URB $current_urb write of unknown length ***\n\n" ); } } if ( defined($length) ) { printf("%s 0x%x BYTES\n", $op, $length); } else { printf( "%s *unknown* BYTES\n", $op ); } } else { print ( "*** URB $current_urb has missing type info ***\n" ); } if ($urbdata{$current_urb}{pipe}) { print("*** URB $current_urb PIPE $urbdata{$current_urb}{pipe}\n"); } else { print("*** URB $current_urb\n"); } foreach $line (@{$urb{$current_urb}}) { if ($line =~ /^\[buffer (buffer\d)\]$/) { my $b = $1; if ($b eq "buffer0" and $urbdata{$current_urb}{buffer1}) { # this is buffer 0 but this URB has two buffers, # this one is FOO (buffer contents before read typically) # so we just skip it print("[cut]\n"); next; } print("DATA:\n", join("\n", @{ $urbdata{$current_urb}{$b} }), "\n"); } elsif ( $line =~ /^\[buffer setup\]$/) { print("SETUP:\n", join("\n", @{ $urbdata{$current_urb}{setup} }), "\n"); } else { print("$line\n"); } } } } warn("\nDone\n\n"); exit(0); # SUBROUTINES # ----------- sub numerically { $a <=> $b }; sub hex_format { my $byte_offset = shift; my $hex = shift; $hex =~ s/^\s*(.+?)\s*$/$1/; # trim my @chars = split(" ", $hex); my $out_rad = "$byte_offset $hex "; # if not a full line, add whitespace if ($#chars < 15) { $out_rad .= " " x ((15 - $#chars) * 3); } # add ASCII my $ch; foreach $ch (@chars) { my $i = hex($ch); if ($i >= 32 and $i < 127) { $out_rad .= sprintf("%c", $i); } else { $out_rad .= "."; } } return $out_rad; } libgphoto2-2.5.9/camlibs/pentax/0000755000175000001440000000000012623156267013520 500000000000000libgphoto2-2.5.9/camlibs/pentax/README.pentax0000644000175000001440000000025312610415510015577 00000000000000This driver is imported from the pkremote project. http://sf.net/projects/pkremote/ It uses special SCSI commands tunneled over USB Mass Storage to control the camera. libgphoto2-2.5.9/camlibs/pentax/library.c0000644000175000001440000005455212610415617015254 00000000000000/* Pentax K series library * * Copyright (c) 2011 Marcus Meissner * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #define _BSD_SOURCE #include "config.h" #define GP_MODULE "pentax" #include #include #include #include #include #include #include #include #include #include #include "pslr.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif int camera_id (CameraText *id) { strcpy (id->text, "pentax"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; int ret; memset (&a, 0, sizeof(a)); strcpy (a.model, "Pentax:K20D"); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB_SCSI; a.speed[0] = 0; a.usb_vendor = 0x0a17; a.usb_product = 0x0091; a.operations = GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CONFIG; a.folder_operations = GP_FOLDER_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE; if (GP_OK != (ret = gp_abilities_list_append (list, a))) return ret; strcpy (a.model, "Pentax:K10D"); a.usb_product = 0x006e; if (GP_OK != (ret = gp_abilities_list_append (list, a))) return ret; strcpy (a.model, "Pentax:K100D"); a.usb_product = 0x0070; if (GP_OK != (ret = gp_abilities_list_append (list, a))) return ret; strcpy (a.model, "Pentax:K100DS"); a.usb_product = 0x00a1; if (GP_OK != (ret = gp_abilities_list_append (list, a))) return ret; strcpy (a.model, "Pentax:K200D"); a.usb_product = 0x0093; if (GP_OK != (ret = gp_abilities_list_append (list, a))) return ret; /* weird usb vendor? */ strcpy (a.model, "Pentax:K5D"); a.usb_vendor = 0x25fb; a.usb_product = 0x0102; if (GP_OK != (ret = gp_abilities_list_append (list, a))) return ret; strcpy (a.model, "Pentax:K30"); // same usb vendor like Pentax K5D a.usb_product = 0x0132; if (GP_OK != (ret = gp_abilities_list_append (list, a))) return ret; strcpy (a.model, "Pentax:K3"); // same usb vendor like Pentax K5D a.usb_product = 0x0164; if (GP_OK != (ret = gp_abilities_list_append (list, a))) return ret; return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { sprintf (summary->text, _( "Pentax K DSLR capture driver.\n" "Based on pkremote by Pontus Lidman.\n" )); return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { return GP_ERROR_NOT_SUPPORTED; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { return GP_OK; } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { /* virtual file created by Penta capture */ if (!strncmp (filename, "capt", 4)) return GP_OK; return GP_ERROR_NOT_SUPPORTED; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func }; static int save_buffer(pslr_handle_t camhandle, int bufno, CameraFile *file, pslr_status *status) { int imagetype; int image_resolution; uint8_t buf[65536]; uint32_t current; switch (status->image_format) { case PSLR_IMAGE_FORMAT_JPEG: imagetype = status->jpeg_quality + 1; image_resolution = status->jpeg_resolution; break; case PSLR_IMAGE_FORMAT_RAW: imagetype = 0; image_resolution = 0; break; default: gp_log (GP_LOG_ERROR, "pentax", "Sorry, only JPEG and PEF RAW files are supported\n"); return GP_ERROR; } GP_DEBUG("get buffer %d type %d res %d\n", bufno, imagetype, image_resolution); if ( pslr_buffer_open(camhandle, bufno, imagetype, status->jpeg_resolution) != PSLR_OK) return GP_ERROR; current = 0; while (1) { uint32_t bytes; bytes = pslr_buffer_read(camhandle, buf, sizeof(buf)); if (bytes == 0) break; // PEF file got from K100D Super have broken header, WTF? if (current == 0 && status->image_format == PSLR_IMAGE_FORMAT_RAW && status->raw_format == PSLR_RAW_FORMAT_PEF) { const unsigned char correct_header[92] = { 0x4d, 0x4d, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x13, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0b, 0xe0, 0x01, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xe8, 0x01, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x80, 0x05, 0x00, 0x00, 0x01, 0x06, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x80, 0x23, 0x00, 0x00, 0x01, 0x0f, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xf2, 0x01, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00 }; if (bytes < sizeof(correct_header)) return GP_ERROR; memcpy(buf, correct_header, sizeof(correct_header)); } gp_file_append (file, (char*)buf, bytes); current += bytes; } pslr_buffer_close(camhandle); return current; } static int capcnt = 0; static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { pslr_handle_t p = camera->pl; pslr_status status; int ret, length; CameraFile *file = NULL; CameraFileInfo info; pslr_get_status (p, &status); pslr_shutter (p); strcpy (path->folder, "/"); const char *mime; if (status.image_format == PSLR_IMAGE_FORMAT_JPEG) { sprintf (path->name, "capt%04d.jpg", capcnt++); mime = GP_MIME_JPEG; } else if (status.image_format == PSLR_IMAGE_FORMAT_RAW && status.raw_format == PSLR_RAW_FORMAT_PEF) { sprintf (path->name, "capt%04d.pef", capcnt++); mime = GP_MIME_RAW; } else { return GP_ERROR; } ret = gp_file_new(&file); if (ret!=GP_OK) return ret; gp_file_set_mtime (file, time(NULL)); gp_file_set_mime_type (file, mime); while (1) { length = save_buffer( p, (int)0, file, &status); if (length == GP_ERROR_NOT_SUPPORTED) return length; if (length >= GP_OK) break; usleep(100000); } pslr_delete_buffer(p, (int)0 ); gp_log (GP_LOG_DEBUG, "pentax", "append image to fs"); ret = gp_filesystem_append(camera->fs, path->folder, path->name, context); if (ret != GP_OK) { gp_file_free (file); return ret; } gp_log (GP_LOG_DEBUG, "pentax", "adding filedata to fs"); ret = gp_filesystem_set_file_noop(camera->fs, path->folder, path->name, GP_FILE_TYPE_NORMAL, file, context); if (ret != GP_OK) { gp_file_free (file); return ret; } /* We have now handed over the file, disclaim responsibility by unref. */ gp_file_unref (file); /* we also get the fs info for free, so just set it */ info.file.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_SIZE | GP_FILE_INFO_MTIME; strcpy (info.file.type, GP_MIME_JPEG); info.file.size = length; info.file.mtime = time(NULL); info.preview.fields = 0; gp_log (GP_LOG_DEBUG, "pentax", "setting fileinfo in fs"); ret = gp_filesystem_set_info_noop(camera->fs, path->folder, path->name, info, context); return ret; } static int _timeout_passed(struct timeval *start, int timeout) { struct timeval curtime; gettimeofday (&curtime, NULL); return ((curtime.tv_sec - start->tv_sec)*1000)+((curtime.tv_usec - start->tv_usec)/1000) >= timeout; } static int camera_wait_for_event (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context) { struct timeval event_start; CameraFilePath *path; pslr_handle_t p = camera->pl; int ret, length; CameraFile *file = NULL; CameraFileInfo info; *eventtype = GP_EVENT_TIMEOUT; *eventdata = NULL; gettimeofday (&event_start, 0); while (1) { pslr_status status; int bufno; if (PSLR_OK != pslr_get_status (camera->pl, &status)) break; if (status.bufmask == 0) goto next; /* New image on camera! */ for (bufno=0;bufno<16;bufno++) if (status.bufmask & (1<folder, "/"); if (status.image_format == PSLR_IMAGE_FORMAT_JPEG) { sprintf (path->name, "capt%04d.jpg", capcnt++); mime = GP_MIME_JPEG; } else if (status.image_format == PSLR_IMAGE_FORMAT_RAW && status.raw_format == PSLR_RAW_FORMAT_PEF) { sprintf (path->name, "capt%04d.pef", capcnt++); mime = GP_MIME_RAW; } else { return GP_ERROR; } ret = gp_file_new(&file); if (ret!=GP_OK) return ret; gp_file_set_mtime (file, time(NULL)); gp_file_set_mime_type (file, mime); while (1) { length = save_buffer( p, bufno, file, &status); if (length == GP_ERROR_NOT_SUPPORTED) return length; if (length >= GP_OK) break; usleep(100000); } pslr_delete_buffer(p, bufno ); gp_log (GP_LOG_DEBUG, "pentax", "append image to fs"); ret = gp_filesystem_append(camera->fs, path->folder, path->name, context); if (ret != GP_OK) { gp_file_free (file); return ret; } gp_log (GP_LOG_DEBUG, "pentax", "adding filedata to fs"); ret = gp_filesystem_set_file_noop(camera->fs, path->folder, path->name, GP_FILE_TYPE_NORMAL, file, context); if (ret != GP_OK) { gp_file_free (file); return ret; } /* We have now handed over the file, disclaim responsibility by unref. */ gp_file_unref (file); /* we also get the fs info for free, so just set it */ info.file.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_SIZE | GP_FILE_INFO_MTIME; strcpy (info.file.type, GP_MIME_JPEG); info.file.size = length; info.file.mtime = time(NULL); info.preview.fields = 0; gp_log (GP_LOG_DEBUG, "pentax", "setting fileinfo in fs"); ret = gp_filesystem_set_info_noop(camera->fs, path->folder, path->name, info, context); *eventtype = GP_EVENT_FILE_ADDED; *eventdata = path; return GP_OK; next: if (_timeout_passed (&event_start, timeout)) break; usleep(100*1000); /* 100 ms */ } return GP_OK; } static int camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *t, *section; const char *model; pslr_status status; char buf[20]; const char **available_resolutions; int i; pslr_get_status (camera->pl, &status); model = pslr_camera_name (camera->pl); available_resolutions = pslr_camera_resolution_steps (camera->pl); GP_DEBUG ("*** camera_get_config"); gp_widget_new (GP_WIDGET_WINDOW, _("Camera and Driver Configuration"), window); gp_widget_set_name (*window, "main"); gp_widget_new (GP_WIDGET_SECTION, _("Camera Settings"), §ion); gp_widget_set_name (section, "settings"); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_TEXT, _("Model"), &t); gp_widget_set_name (t, "model"); gp_widget_set_value (t, model); gp_widget_set_readonly (t, 1); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_RADIO, _("Image format"), &t); gp_widget_set_name (t, "img_format"); if (pslr_is_image_format_supported(camera->pl, PSLR_IMAGE_FORMAT_JPEG)) gp_widget_add_choice (t, "JPEG"); if (pslr_is_image_format_supported(camera->pl, PSLR_IMAGE_FORMAT_RAW)) gp_widget_add_choice (t, "RAW"); if (pslr_is_image_format_supported(camera->pl, PSLR_IMAGE_FORMAT_RAW_PLUS)) gp_widget_add_choice (t, "RAW+"); switch (status.image_format) { case PSLR_IMAGE_FORMAT_JPEG: gp_widget_set_value (t, "JPEG"); break; case PSLR_IMAGE_FORMAT_RAW: gp_widget_set_value (t, "RAW"); break; case PSLR_IMAGE_FORMAT_RAW_PLUS: gp_widget_set_value (t, "RAW+"); break; default: sprintf(buf, _("Unknown format %d"), status.image_format); gp_widget_set_value (t, buf); break; } gp_widget_append (section, t); if (pslr_is_image_format_supported(camera->pl, PSLR_IMAGE_FORMAT_JPEG)) { gp_widget_new (GP_WIDGET_RADIO, _("Image Size"), &t); gp_widget_set_name (t, "imgsize"); for (i = 0; i < PSLR_MAX_RESOLUTIONS && available_resolutions[i]; i++) { gp_widget_add_choice (t, available_resolutions[i]); } if (status.jpeg_resolution > 0 && status.jpeg_resolution < PSLR_MAX_RESOLUTIONS) gp_widget_set_value (t, available_resolutions[status.jpeg_resolution]); else gp_widget_set_value (t, _("Unknown")); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_RADIO, _("Image Quality"), &t); gp_widget_set_name (t, "imgquality"); gp_widget_add_choice (t, "4"); gp_widget_add_choice (t, "3"); gp_widget_add_choice (t, "2"); gp_widget_add_choice (t, "1"); sprintf (buf,"%d",status.jpeg_quality); gp_widget_set_value (t, buf); gp_widget_append (section, t); } gp_widget_new (GP_WIDGET_RADIO, _("ISO"), &t); gp_widget_set_name (t, "iso"); gp_widget_add_choice (t, "100"); gp_widget_add_choice (t, "200"); gp_widget_add_choice (t, "400"); gp_widget_add_choice (t, "800"); gp_widget_add_choice (t, "1600"); gp_widget_add_choice (t, "3200"); sprintf(buf,"%d",status.current_iso); gp_widget_set_value (t, buf); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_TEXT, _("Shutter Speed"), &t); gp_widget_set_name (t, "shutterspeed"); sprintf(buf,"%d/%d",status.current_shutter_speed.nom,status.current_shutter_speed.denom); gp_widget_set_value (t, buf); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_TEXT, _("Aperture"), &t); gp_widget_set_name (t, "aperture"); if (status.current_aperture.denom == 1) { sprintf(buf,"%d",status.current_aperture.nom); } else if (status.current_aperture.denom == 10) { if (status.current_aperture.nom % 10 == 0) sprintf(buf,"%d",status.current_aperture.nom/10); else sprintf(buf,"%d.%d",status.current_aperture.nom/10,status.current_aperture.nom%10); } else { sprintf(buf,"%d/%d",status.current_aperture.nom,status.current_aperture.denom); } gp_widget_set_value (t, buf); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_TEXT, _("Aperture at Lens Minimum Focal Length"), &t); gp_widget_set_name (t, "apertureatminfocallength"); if (status.lens_min_aperture.denom == 1) { sprintf(buf,"%d",status.lens_min_aperture.nom); } else if (status.lens_min_aperture.denom == 10) { if (status.lens_min_aperture.nom % 10 == 0) sprintf(buf,"%d",status.lens_min_aperture.nom/10); else sprintf(buf,"%d.%d",status.lens_min_aperture.nom/10,status.lens_min_aperture.nom%10); } else { sprintf(buf,"%d/%d",status.lens_min_aperture.nom,status.lens_min_aperture.denom); } gp_widget_set_value (t, buf); gp_widget_set_readonly (t, 1); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_TEXT, _("Aperture at Lens Maximum Focal Length"), &t); gp_widget_set_name (t, "apertureatmaxfocallength"); if (status.lens_max_aperture.denom == 1) { sprintf(buf,"%d",status.lens_max_aperture.nom); } else if (status.lens_max_aperture.denom == 10) { if (status.lens_max_aperture.nom % 10 == 0) sprintf(buf,"%d",status.lens_max_aperture.nom/10); else sprintf(buf,"%d.%d",status.lens_max_aperture.nom/10,status.lens_max_aperture.nom%10); } else { sprintf(buf,"%d/%d",status.lens_max_aperture.nom,status.lens_max_aperture.denom); } gp_widget_set_value (t, buf); gp_widget_set_readonly (t, 1); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_TEXT, _("Zoom"), &t); gp_widget_set_name (t, "zoom"); sprintf(buf,"%d/%d",status.zoom.nom,status.zoom.denom); gp_widget_set_value (t, buf); gp_widget_set_readonly (t, 1); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_TEXT, _("EC"), &t); gp_widget_set_name (t, "ec"); sprintf(buf,"%d/%d",status.ec.nom,status.ec.denom); gp_widget_set_value (t, buf); gp_widget_set_readonly (t, 1); gp_widget_append (section, t); gp_widget_new (GP_WIDGET_RADIO, _("Shooting Mode"), &t); gp_widget_set_name (t, "shootingmode"); gp_widget_add_choice (t, _("GREEN")); gp_widget_add_choice (t, _("P")); gp_widget_add_choice (t, _("SV")); gp_widget_add_choice (t, _("TV")); gp_widget_add_choice (t, _("AV")); gp_widget_add_choice (t, _("TAV")); gp_widget_add_choice (t, _("M")); gp_widget_add_choice (t, _("B")); gp_widget_add_choice (t, _("X")); switch (status.exposure_mode) { case PSLR_EXPOSURE_MODE_GREEN: gp_widget_set_value (t, _("GREEN"));break; case PSLR_EXPOSURE_MODE_M: gp_widget_set_value (t, _("M"));break; case PSLR_EXPOSURE_MODE_P: gp_widget_set_value (t, _("P"));break; case PSLR_EXPOSURE_MODE_AV: gp_widget_set_value (t, _("AV"));break; case PSLR_EXPOSURE_MODE_TV: gp_widget_set_value (t, _("TV"));break; case PSLR_EXPOSURE_MODE_SV: gp_widget_set_value (t, _("SV"));break; case PSLR_EXPOSURE_MODE_TAV: gp_widget_set_value (t, _("TAV"));break; case PSLR_EXPOSURE_MODE_X: gp_widget_set_value (t, _("X"));break; case PSLR_EXPOSURE_MODE_B: gp_widget_set_value (t, _("B"));break; default: sprintf(buf, _("Unknown mode %d"), status.exposure_mode); gp_widget_set_value (t, buf); break; } gp_widget_append (section, t); return GP_OK; } static int camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *w; char *sval; pslr_status status; pslr_get_status(camera->pl, &status); GP_DEBUG ("*** camera_set_config"); gp_widget_get_child_by_label (window, _("Image Size"), &w); if (gp_widget_changed (w)) { int i, resolution = -1; const char **valid_resolutions; valid_resolutions = pslr_camera_resolution_steps (camera->pl); gp_widget_get_value (w, &sval); for (i = 0; i < PSLR_MAX_RESOLUTIONS; i++) { if (!strcmp(sval,valid_resolutions[i])) resolution = i; } if (resolution == -1) { gp_log (GP_LOG_ERROR, "pentax", "Could not decode image size %s", sval); } else { pslr_set_jpeg_resolution(camera->pl, resolution); pslr_get_status(camera->pl, &status); } } gp_widget_get_child_by_label (window, _("Shooting Mode"), &w); if (gp_widget_changed (w)) { pslr_exposure_mode_t exposuremode; gp_widget_get_value (w, &sval); exposuremode = PSLR_EXPOSURE_MODE_MAX; if (!strcmp(sval,_("GREEN"))) exposuremode = PSLR_EXPOSURE_MODE_GREEN; if (!strcmp(sval,_("M"))) exposuremode = PSLR_EXPOSURE_MODE_M; if (!strcmp(sval,_("B"))) exposuremode = PSLR_EXPOSURE_MODE_B; if (!strcmp(sval,_("P"))) exposuremode = PSLR_EXPOSURE_MODE_P; if (!strcmp(sval,_("SV"))) exposuremode = PSLR_EXPOSURE_MODE_SV; if (!strcmp(sval,_("TV"))) exposuremode = PSLR_EXPOSURE_MODE_TV; if (!strcmp(sval,_("AV"))) exposuremode = PSLR_EXPOSURE_MODE_AV; if (!strcmp(sval,_("TAV"))) exposuremode = PSLR_EXPOSURE_MODE_TAV; if (!strcmp(sval,_("X"))) exposuremode = PSLR_EXPOSURE_MODE_TAV; if (exposuremode != PSLR_EXPOSURE_MODE_MAX) { pslr_set_exposure_mode(camera->pl, exposuremode); pslr_get_status(camera->pl, &status); } else { } gp_log (GP_LOG_ERROR, "pentax", "Could not decode exposuremode %s", sval); } gp_widget_get_child_by_label (window, _("ISO"), &w); if (gp_widget_changed (w)) { int iso; gp_widget_get_value (w, &sval); if (sscanf(sval, "%d", &iso)) { pslr_set_iso(camera->pl, iso); pslr_get_status(camera->pl, &status); // FIXME: K-30 iso doesn't get updated immediately } else gp_log (GP_LOG_ERROR, "pentax", "Could not decode iso %s", sval); } gp_widget_get_child_by_label (window, _("Image Quality"), &w); if (gp_widget_changed (w)) { int qual; /* FIXME: decoding is strange. the UI shows number of stars * on k20d: 4 stars = 3, 3 stars = 0, 2 stars = 1, 1 star = 2 */ gp_widget_get_value (w, &sval); if (sscanf(sval, "%d", &qual)) { pslr_set_jpeg_quality (camera->pl, qual); pslr_get_status (camera->pl, &status); } else gp_log (GP_LOG_ERROR, "pentax", "Could not decode image quality %s", sval); } gp_widget_get_child_by_label (window, _("Shutter Speed"), &w); if (gp_widget_changed (w)) { pslr_rational_t speed; gp_widget_get_value (w, &sval); if (sscanf(sval, "%d/%d", &speed.nom, &speed.denom)) { pslr_set_shutter(camera->pl, speed); pslr_get_status(camera->pl, &status); } else { char c; if (sscanf(sval, "%d%c", &speed.nom, &c) && (c=='s')) { speed.denom = 1; pslr_set_shutter(camera->pl, speed); pslr_get_status(camera->pl, &status); } else { gp_log (GP_LOG_ERROR, "pentax", "Could not decode shutterspeed %s", sval); } } /* parse more? */ } gp_widget_get_child_by_label (window, _("Aperture"), &w); if (gp_widget_changed (w)) { pslr_rational_t aperture; int apt1,apt2; gp_widget_get_value (w, &sval); if (sscanf(sval, "%d.%d", &apt1, &apt2)) { if (apt1<11) { aperture.nom = apt1*10+apt2; aperture.denom = 10; } else { /* apt2 not in use */ aperture.nom = apt1; aperture.denom = 1; } pslr_set_aperture(camera->pl, aperture); pslr_get_status(camera->pl, &status); } else if (sscanf(sval, "%d", &apt1)) { if (apt1<11) { aperture.nom = apt1*10; aperture.denom = 10; } else { aperture.nom = apt1; aperture.denom = 1; } pslr_set_aperture(camera->pl, aperture); pslr_get_status(camera->pl, &status); } else { gp_log (GP_LOG_ERROR, "pentax", "Could not decode aperture %s", sval); } } return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { pslr_disconnect (camera->pl); free (camera->pl); return GP_OK; } int camera_init (Camera *camera, GPContext *context) { const char *model; camera->pl = pslr_init (camera->port); if (camera->pl == NULL) return GP_ERROR_NO_MEMORY; pslr_connect (camera->pl); camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; camera->functions->capture = camera_capture; camera->functions->wait_for_event = camera_wait_for_event; model = pslr_camera_name (camera->pl); gp_log (GP_LOG_DEBUG, "pentax", "reported camera model is %s\n", model); return gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); } libgphoto2-2.5.9/camlibs/pentax/Makefile-files0000644000175000001440000000155612610415510016170 00000000000000# If you use this as pentax for a real camlib (say 'foobar.la'), # make sure to change the "noinst_" at the beginning of the following # lines: # * "noinst_DATA" into "camlibdoc_DATA" # * "noinst_LTLIBRARIES" into "EXTRA_LTLIBRARIES" # # Additionally, you must add add an include line to the Makefile-files # of the new camlib to camlibs/Makefile.am: # * "include my-new-camlib/Makefile-files" # # And as the last step, you need to add it to configure.ac: # * GP_CAMLIB([foobar])dnl EXTRA_DIST += pentax/README.pentax pentax/ChangeLog camlibdoc_DATA += pentax/README.pentax EXTRA_LTLIBRARIES += pentax.la pentax_la_SOURCES = pentax/pslr.c pentax/pslr.h pentax/library.c pentax_la_CFLAGS = $(AM_CFLAGS) $(NO_UNUSED_CFLAGS) $(CFLAGS) -DLIBGPHOTO2 pentax_la_LDFLAGS = $(camlib_ldflags) pentax_la_DEPENDENCIES = $(camlib_dependencies) pentax_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/pentax/ChangeLog0000644000175000001440000000042512610415510015174 000000000000002011-10-01 Marcus Meissner * pslr.c,pslr.h: Imported from pkremote project, adjusted to have more generic port handling * library.c: Interfaced with pslr code: - capture image (to ram) - configuration of base values - capture tethered libgphoto2-2.5.9/camlibs/pentax/pslr.c0000644000175000001440000013220612610415617014561 00000000000000/* PK-Remote Remote control of Pentax DSLR cameras. Copyright (C) 2008 Pontus Lidman 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 3 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, see . */ #define _BSD_SOURCE #include #include #include #include #include #include #include #include #include #include #ifndef LIBGPHOTO2 #include #include #endif #include #include #ifdef LIBGPHOTO2 #include #include #include #include #endif #include "pslr.h" #define MAX_SEGMENTS 20 #define MAX_RESOLUTIONS 4 #define POLL_INTERVAL 100000 /* Number of us to wait when polling */ #define BLKSZ 65536 /* Block size for downloads; if too big, we get * memory allocation error from sg driver */ #define BLOCK_RETRY 3 /* Number of retries, since we can occasionally * get SCSI errors when downloading data */ #ifdef DEBUG #define DPRINT(x...) printf(x) #else #define DPRINT(x...) do { } while (0) #endif #define CHECK(x) do { \ int __r; \ __r = (x); \ if (__r != PSLR_OK) { \ fprintf(stderr, "%s:%d:%s failed: %d\n", __FILE__, __LINE__, #x, __r); \ return __r; \ } \ } while (0) #define CHECK_CLN(x,rval,label) do { \ int __r; \ __r = (x); \ if (__r != PSLR_OK) { \ fprintf(stderr, "%s:%d:%s failed: %d\n", __FILE__, __LINE__, #x, __r); \ rval = __r; \ goto label; \ } \ } while (0) #define PSLR_SUPPORTED_IMAGE_FORMAT_JPEG (1 << PSLR_IMAGE_FORMAT_JPEG) #define PSLR_SUPPORTED_IMAGE_FORMAT_RAW (1 << PSLR_IMAGE_FORMAT_RAW) #define PSLR_SUPPORTED_IMAGE_FORMAT_RAW_PLUS (1 << PSLR_IMAGE_FORMAT_RAW_PLUS) typedef enum { PSLR_BUFFER_SEGMENT_LAST = 2, PSLR_BUFFER_SEGMENT_INNER = 3, PSLR_BUFFER_SEGMENT_OFFS = 4, } pslr_segment_type_t; typedef struct { uint32_t a; uint32_t type; uint32_t addr; uint32_t length; } pslr_buffer_segment_info; typedef struct { uint32_t offset; uint32_t addr; uint32_t length; } ipslr_segment_t; typedef struct { uint32_t id1; uint32_t id2; const char *name; const char *resolution_steps[MAX_RESOLUTIONS]; int supported_formats; } ipslr_model_info_t; typedef struct { #ifdef LIBGPHOTO2 GPPort *port; #else int fd; #endif pslr_status status; uint32_t id1; uint32_t id2; ipslr_model_info_t *model; char devname[256]; ipslr_segment_t segments[MAX_SEGMENTS]; uint32_t buffer_len; uint32_t segment_count; uint32_t offset; } ipslr_handle_t; static int ipslr_set_mode(ipslr_handle_t *p, uint32_t mode); static int ipslr_cmd_00_09(ipslr_handle_t *p, uint32_t mode); static int ipslr_cmd_10_0a(ipslr_handle_t *p, uint32_t mode); static int ipslr_cmd_00_05(ipslr_handle_t *p); static int ipslr_status(ipslr_handle_t *p, uint8_t *buf); static int ipslr_status_full(ipslr_handle_t *p, pslr_status *status); static int ipslr_press_shutter(ipslr_handle_t *p); static int ipslr_select_buffer(ipslr_handle_t *p, int bufno, int buftype, int bufres); static int ipslr_buffer_segment_info(ipslr_handle_t *p, pslr_buffer_segment_info *pInfo); static int ipslr_read_buffer(pslr_handle_t h, int bufno, int buftype, int bufres, uint8_t **ppData, uint32_t *pLen); static int ipslr_next_segment(ipslr_handle_t *p); static int ipslr_download(ipslr_handle_t *p, uint32_t addr, uint32_t length, uint8_t *buf); static int ipslr_identify(ipslr_handle_t *p); static int ipslr_write_args(ipslr_handle_t *p, int n, ...); /*static int ipslr_cmd_00_04(ipslr_handle_t *p, uint32_t mode);*/ static int command(ipslr_handle_t *, int a, int b, int c); static int get_status(ipslr_handle_t *); static int get_result(ipslr_handle_t *); static int read_result(ipslr_handle_t *, uint8_t *buf, uint32_t n); void hexdump(uint8_t *buf, uint32_t bufLen); static int scsi_write(ipslr_handle_t *, uint8_t *cmd, uint32_t cmdLen, uint8_t *buf, uint32_t bufLen); static int scsi_read(ipslr_handle_t *, uint8_t *cmd, uint32_t cmdLen, uint8_t *buf, uint32_t bufLen); static uint32_t get_uint32(uint8_t *buf); static bool is_k10d(ipslr_handle_t *p); static bool is_k20d(ipslr_handle_t *p); static bool is_k30(ipslr_handle_t *p); static bool is_k100ds(ipslr_handle_t *p); static bool is_istds(ipslr_handle_t *p); static pslr_progress_callback_t progress_callback = NULL; static ipslr_model_info_t camera_models[] = { { PSLR_ID1_K30, PSLR_ID2_K30, "K30", { "16", "12", "8", "5" }, PSLR_SUPPORTED_IMAGE_FORMAT_JPEG }, { PSLR_ID1_K20D, PSLR_ID2_K20D, "K20D", { "14", "10", "6", "2" }, PSLR_SUPPORTED_IMAGE_FORMAT_JPEG }, { PSLR_ID1_K10D, PSLR_ID2_K10D, "K10D", { "10", "6", "2" }, PSLR_SUPPORTED_IMAGE_FORMAT_JPEG }, { PSLR_ID1_K110D, PSLR_ID2_K110D, "K110D", { "6", "4", "2" }, PSLR_SUPPORTED_IMAGE_FORMAT_JPEG }, { PSLR_ID1_K100D, PSLR_ID2_K100D, "K100D", { "6", "4", "2" }, PSLR_SUPPORTED_IMAGE_FORMAT_JPEG }, { PSLR_ID1_K100DS, PSLR_ID2_K100DS, "K100DS", {}, PSLR_SUPPORTED_IMAGE_FORMAT_RAW }, { PSLR_ID1_IST_DS2, PSLR_ID2_IST_DS2, "*ist DS2", { "6", "4", "2" }, PSLR_SUPPORTED_IMAGE_FORMAT_JPEG }, { PSLR_ID1_IST_DL, PSLR_ID2_IST_DL, "*ist DL", { "6", "4", "2" }, PSLR_SUPPORTED_IMAGE_FORMAT_JPEG }, { PSLR_ID1_IST_DS, PSLR_ID2_IST_DS, "*ist DS", { "6", "4", "2" }, PSLR_SUPPORTED_IMAGE_FORMAT_JPEG }, { PSLR_ID1_IST_D, PSLR_ID2_IST_D, "*ist D", { "6", "4", "2" }, PSLR_SUPPORTED_IMAGE_FORMAT_JPEG }, { PSLR_ID1_GX10, PSLR_ID2_GX10, "GX10", { "10", "6", "2" }, PSLR_SUPPORTED_IMAGE_FORMAT_JPEG }, { PSLR_ID1_GX20, PSLR_ID2_GX20, "GX20", { "14", "10", "6", "2" }, PSLR_SUPPORTED_IMAGE_FORMAT_JPEG }, }; #ifndef LIBGPHOTO2 static ipslr_handle_t pslr; pslr_handle_t pslr_init() { DIR *d; char nmbuf[256]; char infobuf[64]; struct dirent *ent; int fd; memset(&pslr.devname, 0, sizeof(pslr.devname)); d = opendir("/sys/class/scsi_generic"); if (!d) return NULL; while (1) { ent = readdir(d); if (!ent) break; if (strcmp(ent->d_name, ".")==0 || strcmp(ent->d_name, "..") == 0) continue; snprintf(nmbuf, sizeof(nmbuf), "/sys/class/scsi_generic/%s/device/vendor", ent->d_name); fd = open(nmbuf, O_RDONLY); if (fd == -1) { continue; } read(fd, infobuf, sizeof(infobuf)); close(fd); if ((strncmp(infobuf, "PENTAX", 6) != 0) && (strncmp(infobuf, "SAMSUNG", 7) != 0)) continue; snprintf(nmbuf, sizeof(nmbuf), "/sys/class/scsi_generic/%s/device/model", ent->d_name); fd = open(nmbuf, O_RDONLY); if (fd == -1) { continue; } read(fd, infobuf, sizeof(infobuf)); close(fd); if (!(strncmp(infobuf, "DIGITAL_CAMERA", 14) == 0 || strncmp(infobuf, "DSC_K20D", 8) == 0) || strncmp(infobuf, "DSC_K-30", 8) == 0) { continue; } /* Found PENTAX DIGITAL_CAMERA */ snprintf(pslr.devname, sizeof(pslr.devname), "/dev/%s", ent->d_name); pslr.devname[sizeof(pslr.devname)-1] = '\0'; /* Only support first connected camera at this time. */ break; } closedir(d); if (pslr.devname[0] == '\0') return NULL; pslr.fd = open(pslr.devname, O_RDWR); if (pslr.fd == -1) { return NULL; } return &pslr; } #else pslr_handle_t pslr_init(GPPort *port) { ipslr_handle_t *p = calloc(sizeof(ipslr_handle_t),1); if (p) p->port = port; return p; } #endif int pslr_connect(pslr_handle_t h) { ipslr_handle_t *p = (ipslr_handle_t *) h; uint8_t statusbuf[28]; CHECK(ipslr_status(p, statusbuf)); CHECK(ipslr_set_mode(p, 1)); CHECK(ipslr_status(p, statusbuf)); CHECK(ipslr_identify(p)); CHECK(ipslr_status_full(p, &p->status)); DPRINT("init bufmask=0x%x\n", p->status.bufmask); if (is_k10d(p) || is_k20d(p) || is_k30(p) || is_k100ds(p)) CHECK(ipslr_cmd_00_09(p, 2)); CHECK(ipslr_status_full(p, &p->status)); CHECK(ipslr_cmd_10_0a(p, 1)); if (!is_k30(p) && is_istds(p)) { CHECK(ipslr_cmd_00_05(p)); } CHECK(ipslr_status_full(p, &p->status)); return 0; } int pslr_disconnect(pslr_handle_t h) { ipslr_handle_t *p = (ipslr_handle_t *) h; uint8_t statusbuf[28]; CHECK(ipslr_cmd_10_0a(p, 0)); CHECK(ipslr_set_mode(p, 0)); CHECK(ipslr_status(p, statusbuf)); return PSLR_OK; } int pslr_shutdown(pslr_handle_t h) { ipslr_handle_t *p = (ipslr_handle_t *) h; #ifdef LIBGPHOTO2 /* FIXME: close camera? */ gp_port_close (p->port); #else close(p->fd); #endif return PSLR_OK; } int pslr_shutter(pslr_handle_t h) { ipslr_handle_t *p = (ipslr_handle_t *) h; ipslr_press_shutter(p); return PSLR_OK; } int pslr_focus(pslr_handle_t h) { ipslr_handle_t *p = (ipslr_handle_t *) h; CHECK(ipslr_write_args(p, 1, 1)); CHECK(command(p, 0x10, 0x05, 0x04)); CHECK(get_status(p)); return PSLR_OK; } int pslr_get_status(pslr_handle_t h, pslr_status *ps) { ipslr_handle_t *p = (ipslr_handle_t *) h; CHECK(ipslr_status_full(p, &p->status)); memcpy(ps, &p->status, sizeof(pslr_status)); return PSLR_OK; } int pslr_get_buffer(pslr_handle_t h, int bufno, int type, int resolution, uint8_t **ppData, uint32_t *pLen) { CHECK(ipslr_read_buffer(h, bufno, type, resolution, ppData, pLen)); return PSLR_OK; } int pslr_set_progress_callback(pslr_handle_t h, pslr_progress_callback_t cb, uintptr_t user_data) { progress_callback = cb; return PSLR_OK; } int pslr_set_shutter(pslr_handle_t h, pslr_rational_t value) { ipslr_handle_t *p = (ipslr_handle_t *) h; CHECK(ipslr_write_args(p, 2, value.nom, value.denom)); CHECK(command(p, 0x18, 0x16, 0x08)); CHECK(get_status(p)); return PSLR_OK; } int pslr_set_aperture(pslr_handle_t h, pslr_rational_t value) { ipslr_handle_t *p = (ipslr_handle_t *) h; CHECK(ipslr_write_args(p, 3, value.nom, value.denom, 0)); CHECK(command(p, 0x18, 0x17, 0x0c)); CHECK(get_status(p)); return PSLR_OK; } int pslr_set_iso(pslr_handle_t h, uint32_t value) { ipslr_handle_t *p = (ipslr_handle_t *) h; /* TODO: if cmd 00 09 fails? */ CHECK(ipslr_cmd_00_09(p, 1)); CHECK(ipslr_write_args(p, 3, value, 0, 0)); CHECK(command(p, 0x18, 0x15, 0x0c)); CHECK(get_status(p)); CHECK(ipslr_cmd_00_09(p, 2)); return PSLR_OK; } int pslr_set_ec(pslr_handle_t h, pslr_rational_t value) { ipslr_handle_t *p = (ipslr_handle_t *) h; /* TODO: if cmd 00 09 fails? */ CHECK(ipslr_cmd_00_09(p, 1)); CHECK(ipslr_write_args(p, 3, value.nom, value.denom)); CHECK(command(p, 0x18, 0x18, 0x08)); CHECK(get_status(p)); CHECK(ipslr_cmd_00_09(p, 2)); return PSLR_OK; } int pslr_set_jpeg_quality(pslr_handle_t h, pslr_jpeg_quality_t quality) { int hwqual; ipslr_handle_t *p = (ipslr_handle_t *) h; if (quality >= PSLR_JPEG_QUALITY_MAX) return PSLR_PARAM; if (is_k20d(p)) { hwqual = quality; } else if (is_k30(p)) { // max_qual - hwqual = number of stars (on the lcd) hwqual = abs(quality-3); } else { hwqual = quality-1; } CHECK(ipslr_cmd_00_09(p, 1)); CHECK(ipslr_write_args(p, 2, 1, hwqual)); CHECK(command(p, 0x18, 0x13, 0x08)); CHECK(get_status(p)); CHECK(ipslr_cmd_00_09(p, 2)); return PSLR_OK; } int pslr_set_jpeg_resolution(pslr_handle_t h, int resolution) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (resolution >= PSLR_MAX_RESOLUTIONS) return PSLR_PARAM; CHECK(ipslr_cmd_00_09(p, 1)); CHECK(ipslr_write_args(p, 2, 1, resolution)); CHECK(command(p, 0x18, 0x14, 0x08)); CHECK(get_status(p)); CHECK(ipslr_cmd_00_09(p, 2)); return PSLR_OK; } int pslr_set_jpeg_image_mode(pslr_handle_t h, pslr_jpeg_image_mode_t image_mode) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (image_mode < 0 || image_mode > PSLR_JPEG_IMAGE_MODE_MAX) return PSLR_PARAM; CHECK(ipslr_cmd_00_09(p, 1)); CHECK(ipslr_write_args(p, 1, image_mode)); CHECK(command(p, 0x18, 0x1b, 0x04)); CHECK(get_status(p)); CHECK(ipslr_cmd_00_09(p, 2)); return PSLR_OK; } int pslr_set_jpeg_sharpness(pslr_handle_t h, int32_t sharpness) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (sharpness < 0 || sharpness > 6) return PSLR_PARAM; CHECK(ipslr_write_args(p, 2, 0, sharpness)); CHECK(command(p, 0x18, 0x21, 0x08)); CHECK(get_status(p)); return PSLR_OK; } int pslr_set_jpeg_contrast(pslr_handle_t h, int32_t contrast) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (contrast < 0 || contrast > 6) return PSLR_PARAM; CHECK(ipslr_write_args(p, 2, 0, contrast)); CHECK(command(p, 0x18, 0x22, 0x08)); CHECK(get_status(p)); return PSLR_OK; } int pslr_set_jpeg_saturation(pslr_handle_t h, int32_t saturation) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (saturation < 0 || saturation > 6) return PSLR_PARAM; CHECK(ipslr_write_args(p, 2, 0, saturation)); CHECK(command(p, 0x18, 0x20, 0x08)); CHECK(get_status(p)); return PSLR_OK; } int pslr_set_image_format(pslr_handle_t h, pslr_image_format_t format) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (format < 0 || format > PSLR_IMAGE_FORMAT_MAX) return PSLR_PARAM; CHECK(ipslr_cmd_00_09(p, 1)); CHECK(ipslr_write_args(p, 2, 1, format)); CHECK(command(p, 0x18, 0x12, 0x08)); CHECK(get_status(p)); CHECK(ipslr_cmd_00_09(p, 2)); return PSLR_OK; } int pslr_is_image_format_supported(pslr_handle_t h, pslr_image_format_t format) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (format < 0 || format >= PSLR_IMAGE_FORMAT_MAX || !p->model) return false; return (1 << format) & p->model->supported_formats; } int pslr_set_raw_format(pslr_handle_t h, pslr_raw_format_t format) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (format < 0 || format > PSLR_RAW_FORMAT_MAX) return PSLR_PARAM; CHECK(ipslr_cmd_00_09(p, 1)); CHECK(ipslr_write_args(p, 2, 1, format)); CHECK(command(p, 0x18, 0x1f, 0x08)); CHECK(get_status(p)); CHECK(ipslr_cmd_00_09(p, 2)); return PSLR_OK; } int pslr_delete_buffer(pslr_handle_t h, int bufno) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (bufno < 0 || bufno > 9) return PSLR_PARAM; CHECK(ipslr_write_args(p, 1, bufno)); CHECK(command(p, 0x02, 0x03, 0x04)); CHECK(get_status(p)); return PSLR_OK; } int pslr_green_button(pslr_handle_t h) { ipslr_handle_t *p = (ipslr_handle_t *) h; CHECK(command(p, 0x10, 0x07, 0x00)); CHECK(get_status(p)); return PSLR_OK; } int pslr_ae_lock(pslr_handle_t h, bool lock) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (lock) CHECK(command(p, 0x10, 0x06, 0x00)); else CHECK(command(p, 0x10, 0x08, 0x00)); CHECK(get_status(p)); return PSLR_OK; } int pslr_set_exposure_mode(pslr_handle_t h, pslr_exposure_mode_t mode) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (mode < 0 || mode >= PSLR_EXPOSURE_MODE_MAX) return PSLR_PARAM; CHECK(ipslr_cmd_00_09(p, 1)); CHECK(ipslr_write_args(p, 2, 1, mode)); CHECK(command(p, 0x18, 0x01, 0x08)); CHECK(get_status(p)); CHECK(ipslr_cmd_00_09(p, 2)); return PSLR_OK; } int pslr_buffer_open(pslr_handle_t h, int bufno, int buftype, int bufres) { pslr_buffer_segment_info info; uint16_t bufs; uint32_t buf_total = 0; int i, j; int ret; int retry = 0; int retry2 = 0; ipslr_handle_t *p = (ipslr_handle_t *) h; memset(&info, 0, sizeof(info)); CHECK(ipslr_status_full(p, &p->status)); bufs = p->status.bufmask; if ((bufs & (1<segments[j].offset = info.length; else if (info.type == PSLR_BUFFER_SEGMENT_INNER) { if (j == MAX_SEGMENTS) { DPRINT("Too many segments.\n"); return PSLR_NO_MEMORY; } p->segments[j].addr = info.addr; p->segments[j].length = info.length; j++; } else { DPRINT("Unknown segment type %d\n", info.type); } CHECK(ipslr_next_segment(p)); buf_total += info.length; i++; } while (i < 100 && info.type != PSLR_BUFFER_SEGMENT_LAST); p->segment_count = j; p->buffer_len = buf_total; p->offset = 0; return PSLR_OK; } uint32_t pslr_buffer_read(pslr_handle_t h, uint8_t *buf, uint32_t size) { ipslr_handle_t *p = (ipslr_handle_t *) h; unsigned int i; uint32_t pos = 0; uint32_t seg_offs; uint32_t addr; uint32_t blksz; int ret; /* Find current segment */ for (i=0; isegment_count; i++) { if (p->offset < pos + p->segments[i].length) break; pos += p->segments[i].length; } seg_offs = p->offset - pos; addr = p->segments[i].addr + seg_offs; /* Compute block size */ blksz = size; if (blksz > p->segments[i].length - seg_offs) blksz = p->segments[i].length - seg_offs; if (blksz > BLKSZ) blksz = BLKSZ; /*printf("File offset %d segment: %d offset %d address 0x%x read size %d\n", p->offset, * i, seg_offs, addr, blksz); */ ret = ipslr_download(p, addr, blksz, buf); if (ret != PSLR_OK) return 0; p->offset += blksz; return blksz; } uint32_t pslr_buffer_get_size(pslr_handle_t h) { ipslr_handle_t *p = (ipslr_handle_t *) h; unsigned int i; uint32_t len = 0; for (i=0; isegment_count; i++) { len += p->segments[i].length; } return len; } void pslr_buffer_close(pslr_handle_t h) { ipslr_handle_t *p = (ipslr_handle_t *) h; memset(&p->segments[0], 0, sizeof(p->segments)); p->offset = 0; p->segment_count = 0; } int pslr_select_af_point(pslr_handle_t h, uint32_t point) { ipslr_handle_t *p = (ipslr_handle_t *) h; CHECK(ipslr_cmd_00_09(p, 1)); CHECK(ipslr_write_args(p, 1, point)); CHECK(command(p, 0x18, 0x07, 0x04)); CHECK(get_status(p)); CHECK(ipslr_cmd_00_09(p, 2)); return PSLR_OK; } const char *pslr_camera_name(pslr_handle_t h) { ipslr_handle_t *p = (ipslr_handle_t *) h; int ret; if (p->id1 == 0) { ret = ipslr_identify(p); if (ret != PSLR_OK) return NULL; } if (p->model) return p->model->name; else { static char unk_name[256]; snprintf(unk_name, sizeof(unk_name), "ID#%x:%x", p->id1, p->id2); unk_name[sizeof(unk_name)-1] = '\0'; return unk_name; } } const char **pslr_camera_resolution_steps(pslr_handle_t h) { ipslr_handle_t *p = (ipslr_handle_t *) h; if (p->model) return p->model->resolution_steps; return NULL; } /* ----------------------------------------------------------------------- */ static int ipslr_set_mode(ipslr_handle_t *p, uint32_t mode) { CHECK(ipslr_write_args(p, 1, mode)); CHECK(command(p, 0, 0, 4)); CHECK(get_status(p)); return PSLR_OK; } static int ipslr_cmd_00_09(ipslr_handle_t *p, uint32_t mode) { CHECK(ipslr_write_args(p, 1, mode)); CHECK(command(p, 0, 9, 4)); CHECK(get_status(p)); return PSLR_OK; } static int ipslr_cmd_10_0a(ipslr_handle_t *p, uint32_t mode) { CHECK(ipslr_write_args(p, 1, mode)); CHECK(command(p, 0x10, 0x0a, 4)); CHECK(get_status(p)); return PSLR_OK; } static int ipslr_cmd_00_05(ipslr_handle_t *p) { int n; uint8_t buf[0xb8]; CHECK(command(p, 0x00, 0x05, 0x00)); n = get_result(p); if (n != 0xb8) { DPRINT("only got %d bytes\n", n); return PSLR_READ_ERROR; } CHECK(read_result(p, buf, n)); return PSLR_OK; } static int ipslr_status(ipslr_handle_t *p, uint8_t *buf) { int n; CHECK(command(p, 0, 1, 0)); n = get_result(p); if (n == 16 || n == 28) { return read_result(p, buf, n); } else { return PSLR_READ_ERROR; } } #define MAX_STATUS_BUF_SIZE 452 #ifdef DEBUG static uint8_t lastbuf[MAX_STATUS_BUF_SIZE]; static int first = 1; static void ipslr_status_diff(uint8_t *buf) { int n; int diffs; if (first) { hexdump(buf, MAX_STATUS_BUF_SIZE); memcpy(lastbuf, buf, MAX_STATUS_BUF_SIZE); first = 0; } diffs = 0; for (n = 0; n < MAX_STATUS_BUF_SIZE; n++) { if (lastbuf[n] != buf[n]) { DPRINT("buf[%03X] last %02Xh %3d new %02Xh %3d\n", n, lastbuf[n], lastbuf[n], buf[n], buf[n]); diffs++; } } if (diffs) { DPRINT("---------------------------\n"); memcpy(lastbuf, buf, MAX_STATUS_BUF_SIZE); } } #endif static int ipslr_status_full(ipslr_handle_t *p, pslr_status *status) { int n; uint8_t buf[MAX_STATUS_BUF_SIZE]; CHECK(command(p, 0, 8, 0)); n = get_result(p); if (p->model && is_k10d(p)) { /* K10D status block */ if (n != 392) { DPRINT("only got %d bytes\n", n); return PSLR_READ_ERROR; } CHECK(read_result(p, buf, n)); memset(status, 0, sizeof(*status)); status->bufmask = buf[0x16] << 8 | buf[0x17]; status->current_iso = get_uint32(&buf[0x11c]); status->current_shutter_speed.nom = get_uint32(&buf[0xf4]); status->current_shutter_speed.denom = get_uint32(&buf[0xf8]); status->current_aperture.nom = get_uint32(&buf[0xfc]); status->current_aperture.denom = get_uint32(&buf[0x100]); status->lens_min_aperture.nom = get_uint32(&buf[0x12c]); status->lens_min_aperture.denom = get_uint32(&buf[0x130]); status->lens_max_aperture.nom = get_uint32(&buf[0x134]); status->lens_max_aperture.denom = get_uint32(&buf[0x138]); status->current_zoom.nom = get_uint32(&buf[0x16c]); status->current_zoom.denom = get_uint32(&buf[0x170]); status->set_aperture.nom = get_uint32(&buf[0x34]); status->set_aperture.denom = get_uint32(&buf[0x38]); status->set_shutter_speed.nom = get_uint32(&buf[0x2c]); status->set_shutter_speed.denom = get_uint32(&buf[0x30]); status->set_iso = get_uint32(&buf[0x60]); status->jpeg_resolution = get_uint32(&buf[0x7c]); status->jpeg_contrast = get_uint32(&buf[0x94]); status->jpeg_sharpness = get_uint32(&buf[0x90]); status->jpeg_saturation = get_uint32(&buf[0x8c]); status->jpeg_quality = 1+get_uint32(&buf[0x80]); status->jpeg_image_mode = get_uint32(&buf[0x88]); status->zoom.nom = get_uint32(&buf[0x16c]); status->zoom.denom = get_uint32(&buf[0x170]); status->focus = get_uint32(&buf[0x174]); status->raw_format = get_uint32(&buf[0x84]); status->image_format = get_uint32(&buf[0x78]); status->light_meter_flags = get_uint32(&buf[0x124]); status->ec.nom = get_uint32(&buf[0x3c]); status->ec.denom = get_uint32(&buf[0x40]); status->custom_ev_steps = get_uint32(&buf[0x9c]); status->custom_sensitivity_steps = get_uint32(&buf[0xa0]); status->exposure_mode = get_uint32(&buf[0xe0]); status->user_mode_flag = get_uint32(&buf[0x1c]); status->af_point_select = get_uint32(&buf[0xbc]); status->selected_af_point = get_uint32(&buf[0xc0]); status->focused_af_point = get_uint32(&buf[0x150]); return PSLR_OK; } if (p->model && is_k20d(p)) { /* K20D status block */ if (n != 412) { DPRINT("only got %d bytes\n", n); return PSLR_READ_ERROR; } CHECK(read_result(p, buf, n)); #ifdef DEBUG ipslr_status_diff(buf); #endif memset(status, 0, sizeof(*status)); status->bufmask = buf[0x16] << 8 | buf[0x17]; status->current_iso = get_uint32(&buf[0x130]); /*d*/ status->current_shutter_speed.nom = get_uint32(&buf[0x108]); /*d*/ status->current_shutter_speed.denom = get_uint32(&buf[0x10C]); /*d*/ status->current_aperture.nom = get_uint32(&buf[0x110]); /*d*/ status->current_aperture.denom = get_uint32(&buf[0x114]); /*d*/ status->lens_min_aperture.nom = get_uint32(&buf[0x140]); /*d*/ status->lens_min_aperture.denom = get_uint32(&buf[0x144]); /*d*/ status->lens_max_aperture.nom = get_uint32(&buf[0x148]); /*d*/ status->lens_max_aperture.denom = get_uint32(&buf[0x14B]); /*d*/ status->current_zoom.nom = get_uint32(&buf[0x180]); /*d*/ status->current_zoom.denom = get_uint32(&buf[0x184]); /*d*/ status->set_aperture.nom = get_uint32(&buf[0x34]); /*d*/ status->set_aperture.denom = get_uint32(&buf[0x38]); /*d*/ status->set_shutter_speed.nom = get_uint32(&buf[0x2c]); /*d*/ status->set_shutter_speed.denom = get_uint32(&buf[0x30]); /*d*/ status->set_iso = get_uint32(&buf[0x60]); /*d*/ status->jpeg_resolution = get_uint32(&buf[0x7c]); /*d*/ status->jpeg_contrast = get_uint32(&buf[0x94]); /* commands do now work for it?*/ status->jpeg_sharpness = get_uint32(&buf[0x90]); /* commands do now work for it?*/ status->jpeg_saturation = get_uint32(&buf[0x8c]); /* commands do now work for it?*/ status->jpeg_quality = get_uint32(&buf[0x80]); /*d*/ status->jpeg_image_mode = get_uint32(&buf[0x88]); /*d*/ status->zoom.nom = get_uint32(&buf[0x180]); /*d*/ status->zoom.denom = get_uint32(&buf[0x184]); /*d*/ status->focus = get_uint32(&buf[0x188]); /*d current focus ring position?*/ status->raw_format = get_uint32(&buf[0x84]); /*d*/ status->image_format = get_uint32(&buf[0x78]); /*d*/ status->light_meter_flags = get_uint32(&buf[0x138]); /*d*/ status->ec.nom = get_uint32(&buf[0x3c]); /*d*/ status->ec.denom = get_uint32(&buf[0x40]); /*d*/ status->custom_ev_steps = get_uint32(&buf[0x9c]); status->custom_sensitivity_steps = get_uint32(&buf[0xa0]); status->exposure_mode = get_uint32(&buf[0xe0]); /*d*/ status->user_mode_flag = get_uint32(&buf[0x1c]); /*d*/ status->af_point_select = get_uint32(&buf[0xbc]); /* not sure*/ status->selected_af_point = get_uint32(&buf[0xc0]); /*d*/ status->focused_af_point = get_uint32(&buf[0x160]); /*d, unsure about it, a lot is changing when the camera focuses*/ /* 0x158 current ev? / 0xB8 0 - MF, 1 - AF.S, 2 - AF.C / 0xB4, 0xC4 - metering mode, 0 - matrix, 1 - center weighted, 2 - spot / 0x160 and 0x164 change when AF / 0xC0 changes when selecting focus point manually or from GUI / 0xBC focus point selection 0 - auto, 1 - manual, 2 - center */ return PSLR_OK; } if (p->model && is_k30(p)) { // might work with k01 too if (n != 452) { DPRINT("only got %d bytes\n", n); return PSLR_READ_ERROR; } CHECK(read_result(p, buf, n)); #ifdef DEBUG ipslr_status_diff(buf); #endif memset(status, 0, sizeof(*status)); status->bufmask = get_uint32(&buf[0x1E]); status->current_iso = get_uint32(&buf[0x134]); status->current_shutter_speed.nom = get_uint32(&buf[0x10C]); status->current_shutter_speed.denom = get_uint32(&buf[0x110]); status->current_aperture.nom = get_uint32(&buf[0x114]); status->current_aperture.denom = get_uint32(&buf[0x118]); status->lens_min_aperture.nom = get_uint32(&buf[0x144]); status->lens_min_aperture.denom = get_uint32(&buf[0x148]); status->lens_max_aperture.nom = get_uint32(&buf[0x14C]); status->lens_max_aperture.denom = get_uint32(&buf[0x150]); status->current_zoom.nom = get_uint32(&buf[0x1A0]); status->current_zoom.denom = get_uint32(&buf[0x1A4]); status->set_aperture.nom = get_uint32(&buf[0x3C]); status->set_aperture.denom = get_uint32(&buf[0x40]); status->set_shutter_speed.nom = get_uint32(&buf[0x34]); status->set_shutter_speed.denom = get_uint32(&buf[0x38]); status->set_iso = get_uint32(&buf[0x14]); status->jpeg_resolution = get_uint32(&buf[0x84]); status->jpeg_contrast = get_uint32(&buf[0x9C]); status->jpeg_sharpness = get_uint32(&buf[0x98]); status->jpeg_saturation = get_uint32(&buf[0x94]); status->jpeg_quality = 3-get_uint32(&buf[0x88]); // Maximum quality is 3 status->jpeg_image_mode = get_uint32(&buf[0x80]); status->zoom.nom = get_uint32(&buf[0x1A0]); status->zoom.denom = get_uint32(&buf[0x1A4]); status->focus = get_uint32(&buf[0x1A8]); status->raw_format = get_uint32(&buf[0x8C]); status->image_format = get_uint32(&buf[0x80]); status->light_meter_flags = get_uint32(&buf[0x13C]); status->ec.nom = get_uint32(&buf[0x44]); status->ec.denom = get_uint32(&buf[0x48]); status->custom_ev_steps = get_uint32(&buf[0x15C]); status->custom_sensitivity_steps = get_uint32(&buf[0xa8]); status->exposure_mode = get_uint32(&buf[0xb4]); status->user_mode_flag = get_uint32(&buf[0x24]); status->af_point_select = get_uint32(&buf[0xc4]); status->selected_af_point = get_uint32(&buf[0xc0]); status->focused_af_point = get_uint32(&buf[0x168]); return PSLR_OK; } if (p->model && is_k100ds(p)) { /* K100DS (Super) status block */ if (n != 264) { DPRINT("only got %d bytes\n", n); return PSLR_READ_ERROR; } CHECK(read_result(p, buf, n)); memset(status, 0, sizeof(*status)); status->bufmask = get_uint32(&buf[0x10]); status->image_format = PSLR_IMAGE_FORMAT_RAW; status->raw_format = PSLR_RAW_FORMAT_PEF; return PSLR_OK; } if (p->model && is_istds(p)) { /* *ist DS status block */ if (n != 0x108) { DPRINT("only got %d bytes\n", n); return PSLR_READ_ERROR; } CHECK(read_result(p, buf, n)); #ifdef DEBUG ipslr_status_diff(buf); #endif memset(status, 0, sizeof(*status)); status->bufmask = get_uint32(&buf[0x10]); status->set_shutter_speed.nom = get_uint32(&buf[0x80]); status->set_shutter_speed.denom = get_uint32(&buf[0x84]); status->set_aperture.nom = get_uint32(&buf[0x88]); status->set_aperture.denom = get_uint32(&buf[0x8c]); status->lens_min_aperture.nom = get_uint32(&buf[0xb8]); status->lens_min_aperture.denom = get_uint32(&buf[0xbc]); status->lens_max_aperture.nom = get_uint32(&buf[0xc0]); status->lens_max_aperture.denom = get_uint32(&buf[0xc4]); return PSLR_OK; } /* Unknown camera */ return PSLR_OK; } static int ipslr_press_shutter(ipslr_handle_t *p) { CHECK(ipslr_status_full(p, &p->status)); DPRINT("before: mask=0x%x\n", p->status.bufmask); CHECK(ipslr_write_args(p, 1, 2)); CHECK(command(p, 0x10, 0x05, 0x04)); get_status(p); DPRINT("shutter result code: 0x%x\n", r); return PSLR_OK; } static int ipslr_read_buffer(pslr_handle_t h, int bufno, int buftype, int bufres, uint8_t **ppData, uint32_t *pLen) { uint8_t *buf = 0; uint8_t *buf_ptr; uint32_t bytes; if (!ppData || !pLen) return PSLR_PARAM; ipslr_handle_t *p = (ipslr_handle_t *) h; CHECK(pslr_buffer_open(h, bufno, buftype, bufres)); buf = malloc(p->buffer_len); if (!buf) return PSLR_NO_MEMORY; buf_ptr = buf; do { bytes = pslr_buffer_read(h, buf_ptr, p->buffer_len - (buf_ptr - buf)); buf_ptr += bytes; } while(bytes); pslr_buffer_close(h); *ppData = buf; *pLen = buf_ptr - buf; return PSLR_OK; } static int ipslr_select_buffer(ipslr_handle_t *p, int bufno, int buftype, int bufres) { int r; DPRINT("Select buffer %d,%d,%d,0\n", bufno, buftype,bufres); if (is_k20d(p)) { CHECK(ipslr_write_args(p, 4, bufno, buftype, bufres, 0)); CHECK(command(p, 0x02, 0x01, 0x10)); } else if (is_k10d(p)) { CHECK(ipslr_write_args(p, 4, bufno, buftype, bufres-1, 0)); CHECK(command(p, 0x02, 0x01, 0x10)); } else { /* older cameras: 3-arg select buffer */ CHECK(ipslr_write_args(p, 4, bufno, buftype, bufres)); CHECK(command(p, 0x02, 0x01, 0x0c)); } r = get_status(p); if (r != 0) return PSLR_COMMAND_ERROR; return PSLR_OK; } static int ipslr_next_segment(ipslr_handle_t *p) { int r; CHECK(ipslr_write_args(p, 1, 0)); CHECK(command(p, 0x04, 0x01, 0x04)); usleep(10000); /* needed !! 100 too short, 1000 not short enough for PEF */ r = get_status(p); if (r == 0) return PSLR_OK; return PSLR_COMMAND_ERROR; } static int ipslr_buffer_segment_info(ipslr_handle_t *p, pslr_buffer_segment_info *pInfo) { uint8_t buf[16]; uint32_t n; CHECK(command(p, 0x04, 0x00, 0x00)); n = get_result(p); if (n != 16) return PSLR_READ_ERROR; CHECK(read_result(p, buf, 16)); pInfo->a = get_uint32(&buf[0]); pInfo->type = get_uint32(&buf[4]); pInfo->addr = get_uint32(&buf[8]); pInfo->length = get_uint32(&buf[12]); return PSLR_OK; } static int ipslr_download(ipslr_handle_t *p, uint32_t addr, uint32_t length, uint8_t *buf) { uint8_t downloadCmd[8] = { 0xf0, 0x24, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00 }; uint32_t block; int n; int retry; uint32_t length_start = length; retry = 0; while (length > 0) { if (length > BLKSZ) block = BLKSZ; else block = length; /*DPRINT("Get 0x%x bytes from 0x%x\n", block, addr); */ CHECK(ipslr_write_args(p, 2, addr, block)); CHECK(command(p, 0x06, 0x00, 0x08)); get_status(p); n = scsi_read(p, downloadCmd, sizeof(downloadCmd), buf, block); get_status(p); if (n < 0) { if (retry < BLOCK_RETRY) { retry++; continue; } return PSLR_READ_ERROR; } buf += n; length -= n; addr += n; retry = 0; if (progress_callback) { progress_callback(length_start-length, length_start); } } return PSLR_OK; } static int ipslr_identify(ipslr_handle_t *p) { uint8_t idbuf[8]; int n; unsigned int i; CHECK(command(p, 0, 4, 0)); n = get_result(p); if (n != 8) return PSLR_READ_ERROR; CHECK(read_result(p, idbuf, 8)); p->id1 = get_uint32(&idbuf[0]); p->id2 = get_uint32(&idbuf[4]); p->model = NULL; for (i=0; iid1) { p->model = &camera_models[i]; break; } } return PSLR_OK; } static int ipslr_write_args(ipslr_handle_t *p, int n, ...) { va_list ap; uint8_t cmd[8] = { 0xf0, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; uint8_t buf[4*n]; int res; int i; uint32_t data; va_start(ap, n); if (is_k10d(p) || is_k20d(p)) { /* All at once */ for (i=0; i> 24; buf[4*i+1] = data >> 16; buf[4*i+2] = data >> 8; buf[4*i+3] = data; } cmd[4] = 4*n; res = scsi_write(p, cmd, sizeof(cmd), buf, 4*n); if (res != PSLR_OK) { va_end(ap); return res; } } else { /* Arguments one by one */ for (i=0; i> 24; buf[1] = data >> 16; buf[2] = data >> 8; buf[3] = data; cmd[4] = 4; cmd[2] = i*4; res = scsi_write(p, cmd, sizeof(cmd), buf, 4); if (res != PSLR_OK) { va_end(ap); return res; } } } va_end(ap); return PSLR_OK; } /* ----------------------------------------------------------------------- */ static int command(ipslr_handle_t *p, int a, int b, int c) { uint8_t cmd[8] = { 0xf0, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; cmd[2] = a; cmd[3] = b; cmd[4] = c; CHECK(scsi_write(p, cmd, sizeof(cmd), 0, 0)); return PSLR_OK; } static int read_status(ipslr_handle_t *p, uint8_t *buf) { uint8_t cmd[8] = { 0xf0, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; int n; n = scsi_read(p, cmd, 8, buf, 8); if (n != 8) { DPRINT("Only got %d bytes\n", n); /* The *ist DS doesn't know to return the correct number of read bytes for this command, so return PSLR_OK instead of PSLR_READ_ERROR */ return PSLR_OK; } return PSLR_OK; } static int get_status(ipslr_handle_t *p) { uint8_t statusbuf[8]; while (1) { /*usleep(POLL_INTERVAL); */ CHECK(read_status(p, statusbuf)); /*DPRINT("get_status->\n"); */ /*hexdump(statusbuf, 8); */ if (!(statusbuf[7] & 0x01) || (statusbuf[7] & 0xfe)) break; /*DPRINT("Waiting for ready - "); */ /*hexdump(statusbuf, 8); */ usleep(POLL_INTERVAL); } if ((statusbuf[7] & 0xff) != 0) { DPRINT("ERROR: 0x%x\n", statusbuf[7]); } return statusbuf[7]; } static int get_result(ipslr_handle_t *p) { uint8_t statusbuf[8]; while (1) { /*DPRINT("read out status\n");*/ CHECK(read_status(p, statusbuf)); /*hexdump(statusbuf, 8);*/ if (statusbuf[6] == 0x01) break; /*DPRINT("Waiting for result\n");*/ /*hexdump(statusbuf, 8);*/ usleep(POLL_INTERVAL); } if ((statusbuf[7] & 0xff) != 0) { DPRINT("ERROR: 0x%x\n", statusbuf[7]); return -1; } return statusbuf[0] | statusbuf[1] << 8 | statusbuf[2] << 16 | statusbuf[3]; } static int read_result(ipslr_handle_t *p, uint8_t *buf, uint32_t n) { uint8_t cmd[8] = { 0xf0, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; unsigned int r; cmd[4] = n; cmd[5] = n >> 8; cmd[6] = n >> 16; cmd[7] = n >> 24; r = scsi_read(p, cmd, sizeof(cmd), buf, n); if (r != n) return PSLR_READ_ERROR; return PSLR_OK; } void hexdump(uint8_t *buf, uint32_t bufLen) { unsigned int i; for (i=0; iport, 1, (char*)cmd, cmdLen, sense_buffer, sizeof(sense_buffer), (char*)buf, bufLen); if (ret == GP_OK) return PSLR_OK; return PSLR_SCSI_ERROR; } static int scsi_read(ipslr_handle_t *p, uint8_t *cmd, uint32_t cmdLen, uint8_t *buf, uint32_t bufLen) { int ret; char sense_buffer[32]; ret = gp_port_send_scsi_cmd (p->port, 0, (char*)cmd, cmdLen, sense_buffer, sizeof(sense_buffer), (char*)buf, bufLen); if (ret == GP_OK) return bufLen; return -PSLR_SCSI_ERROR; } #else static void print_scsi_error(sg_io_hdr_t *pIo, uint8_t *sense_buffer) { int k; if (pIo->sb_len_wr > 0) { DPRINT("SCSI error: sense data: "); for (k = 0; k < pIo->sb_len_wr; ++k) { if ((k > 0) && (0 == (k % 10))) DPRINT("\n "); DPRINT("0x%02x ", sense_buffer[k]); } DPRINT("\n"); } if (pIo->masked_status) DPRINT("SCSI status=0x%x\n", pIo->status); if (pIo->host_status) DPRINT("host_status=0x%x\n", pIo->host_status); if (pIo->driver_status) DPRINT("driver_status=0x%x\n", pIo->driver_status); } static int scsi_write(ipslr_handle_t *p, uint8_t *cmd, uint32_t cmdLen, uint8_t *buf, uint32_t bufLen) { sg_io_hdr_t io; int sg_fd = p->fd; uint8_t sense[32]; int r; memset(&io, 0, sizeof(io)); io.interface_id = 'S'; io.cmd_len = cmdLen; /* io.iovec_count = 0; */ /* memset takes care of this */ io.mx_sb_len = sizeof(sense); io.dxfer_direction = SG_DXFER_TO_DEV; io.dxfer_len = bufLen; io.dxferp = buf; io.cmdp = cmd; io.sbp = sense; io.timeout = 20000; /* 20000 millisecs == 20 seconds */ /* io.flags = 0; */ /* take defaults: indirect IO, etc */ /* io.pack_id = 0; */ /* io.usr_ptr = NULL; */ r = ioctl(sg_fd, SG_IO, &io); if (r == -1) { perror("ioctl"); return PSLR_DEVICE_ERROR; } if ((io.info & SG_INFO_OK_MASK) != SG_INFO_OK) { print_scsi_error(&io, sense); return PSLR_SCSI_ERROR; } else { return PSLR_OK; } } static int scsi_read(ipslr_handle_t *p, uint8_t *cmd, uint32_t cmdLen, uint8_t *buf, uint32_t bufLen) { sg_io_hdr_t io; int sg_fd = p->fd; uint8_t sense[32]; int r; memset(&io, 0, sizeof(io)); io.interface_id = 'S'; io.cmd_len = cmdLen; /* io.iovec_count = 0; */ /* memset takes care of this */ io.mx_sb_len = sizeof(sense); io.dxfer_direction = SG_DXFER_FROM_DEV; io.dxfer_len = bufLen; io.dxferp = buf; io.cmdp = cmd; io.sbp = sense; io.timeout = 20000; /* 20000 millisecs == 20 seconds */ /* io.flags = 0; */ /* take defaults: indirect IO, etc */ /* io.pack_id = 0; */ /* io.usr_ptr = NULL; */ r = ioctl(sg_fd, SG_IO, &io); if (r == -1) { perror("ioctl"); return -PSLR_DEVICE_ERROR; } if ((io.info & SG_INFO_OK_MASK) != SG_INFO_OK) { print_scsi_error(&io, sense); return -PSLR_SCSI_ERROR; } else { /* Older Pentax DSLR will report all bytes remaining, so make * a special case for this (treat it as all bytes read). */ if (io.resid == bufLen) return bufLen; else return bufLen - io.resid; } } #endif /* LIBGPHOTO2 */ /* ----------------------------------------------------------------------- */ static uint32_t get_uint32(uint8_t *buf) { uint32_t res; res = buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3]; return res; } /* ----------------------------------------------------------------------- */ static bool is_k10d(ipslr_handle_t *p) { if (p->model && p->model->id1 == PSLR_ID1_K10D && p->model->id2 == PSLR_ID2_K10D) return true; if (p->model && p->model->id1 == PSLR_ID1_GX10 && p->model->id2 == PSLR_ID2_GX10) return true; return false; } static bool is_k20d(ipslr_handle_t *p) { if (p->model && p->model->id1 == PSLR_ID1_K20D && p->model->id2 == PSLR_ID2_K20D) return true; if (p->model && p->model->id1 == PSLR_ID1_GX20 && p->model->id2 == PSLR_ID2_GX20) return true; return false; } static bool is_k30(ipslr_handle_t *p) { if (p->model && p->model->id1 == PSLR_ID1_K30 && p->model->id2 == PSLR_ID2_K30) return true; return false; } static bool is_k100ds(ipslr_handle_t *p) { if (p->model && p->model->id1 == PSLR_ID1_K100DS && p->model->id2 == PSLR_ID2_K100DS) return true; return false; } static bool is_istds(ipslr_handle_t *p) { if (p->model && p->model->id1 == PSLR_ID1_IST_DS && p->model->id2 == PSLR_ID2_IST_DS) return true; return false; } libgphoto2-2.5.9/camlibs/pentax/pslr.h0000644000175000001440000001726112610415617014571 00000000000000/* PK-Remote Remote control of Pentax DSLR cameras. Copyright (C) 2008 Pontus Lidman 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 3 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, see . */ #define PSLR_MAX_RESOLUTIONS 4 #define PSLR_LIGHT_METER_AE_LOCK 0x8 #define PSLR_AF_POINT_TOP_LEFT 0x1 #define PSLR_AF_POINT_TOP_MID 0x2 #define PSLR_AF_POINT_TOP_RIGHT 0x4 #define PSLR_AF_POINT_FAR_LEFT 0x8 #define PSLR_AF_POINT_MID_LEFT 0x10 #define PSLR_AF_POINT_MID_MID 0x20 #define PSLR_AF_POINT_MID_RIGHT 0x40 #define PSLR_AF_POINT_FAR_RIGHT 0x80 #define PSLR_AF_POINT_BOT_LEFT 0x100 #define PSLR_AF_POINT_BOT_MID 0x200 #define PSLR_AF_POINT_BOT_RIGHT 0x400 #define PSLR_ID1_K30 0x12f52 #define PSLR_ID2_K30 0x20c #define PSLR_ID1_K20D 0x12cd2 #define PSLR_ID2_K20D 0x1ba #define PSLR_ID1_K10D 0x12c1e #define PSLR_ID2_K10D 0x1a5 #define PSLR_ID1_K110D 0x12b9d #define PSLR_ID2_K110D 0x1ac #define PSLR_ID1_K100D 0x12b9c #define PSLR_ID2_K100D 0x189 #define PSLR_ID1_K100DS 0x12ba2 #define PSLR_ID2_K100DS 0x189 #define PSLR_ID1_IST_D 0x12994 #define PSLR_ID2_IST_D 0x141 #define PSLR_ID1_IST_DS 0x12aa2 #define PSLR_ID2_IST_DS 0x177 #define PSLR_ID1_IST_DS2 0x12b60 #define PSLR_ID2_IST_DS2 0x19a #define PSLR_ID1_IST_DL 0x12b1a #define PSLR_ID2_IST_DL 0x188 #define PSLR_ID1_GX10 0x12c20 #define PSLR_ID2_GX10 0x1ad #define PSLR_ID1_GX20 0x12cd4 #define PSLR_ID2_GX20 0x1c6 typedef enum { PSLR_OK = 0, PSLR_DEVICE_ERROR, PSLR_SCSI_ERROR, PSLR_COMMAND_ERROR, PSLR_READ_ERROR, PSLR_NO_MEMORY, PSLR_PARAM, /* Invalid parameters to API */ PSLR_ERROR_MAX } pslr_result; typedef enum { PSLR_BUF_THUMBNAIL, PSLR_BUF_PREVIEW, PSLR_BUF_JPEG, PSLR_BUF_PEF } pslr_buffer_type; typedef enum { PSLR_JPEG_QUALITY_4, /* K20D only */ PSLR_JPEG_QUALITY_3, PSLR_JPEG_QUALITY_2, PSLR_JPEG_QUALITY_1, PSLR_JPEG_QUALITY_MAX } pslr_jpeg_quality_t; typedef enum { PSLR_JPEG_IMAGE_MODE_NATURAL, PSLR_JPEG_IMAGE_MODE_BRIGHT, PSLR_JPEG_IMAGE_MODE_MAX } pslr_jpeg_image_mode_t; typedef enum { PSLR_RAW_FORMAT_PEF, PSLR_RAW_FORMAT_DNG, PSLR_RAW_FORMAT_MAX } pslr_raw_format_t; typedef enum { PSLR_IMAGE_FORMAT_JPEG, PSLR_IMAGE_FORMAT_RAW, PSLR_IMAGE_FORMAT_RAW_PLUS, PSLR_IMAGE_FORMAT_MAX } pslr_image_format_t; typedef enum { PSLR_CUSTOM_EV_STEPS_1_2, PSLR_CUSTOM_EV_STEPS_1_3, PSLR_CUSTOM_EV_STEPS_MAX } pslr_custom_ev_steps_t; typedef enum { PSLR_CUSTOM_SENSITIVITY_STEPS_1EV, PSLR_CUSTOM_SENSITIVITY_STEPS_AS_EV, PSLR_CUSTOM_SENSITIVITY_STEPS_MAX } pslr_custom_sensitivity_steps_t; typedef enum { PSLR_EXPOSURE_MODE_GREEN, PSLR_EXPOSURE_MODE_P, PSLR_EXPOSURE_MODE_SV, PSLR_EXPOSURE_MODE_TV, PSLR_EXPOSURE_MODE_AV, PSLR_EXPOSURE_MODE_TAV, PSLR_EXPOSURE_MODE_M, PSLR_EXPOSURE_MODE_B, PSLR_EXPOSURE_MODE_X, PSLR_EXPOSURE_MODE_MAX } pslr_exposure_mode_t; typedef enum { PSLR_AF_POINT_SEL_AUTO, PSLR_AF_POINT_SEL_SEL, PSLR_AF_POINT_SEL_CENTER, PSLR_AF_POINT_SEL_MAX } pslr_af_point_sel_t; typedef struct { int32_t nom; int32_t denom; } pslr_rational_t; typedef void *pslr_handle_t; typedef enum { PSLR_STREAM_RAW, PSLR_STREAM_JPEG } pslr_stream_t; typedef void *pslr_buffer_handle_t; typedef struct { uint16_t power; } pslr_status_brief; typedef struct { pslr_status_brief brief; uint16_t bufmask; /* 0x16 */ uint32_t current_iso; /* 0x11c */ pslr_rational_t current_shutter_speed; /* 0xf4 */ pslr_rational_t current_aperture; /* 0xfc */ pslr_rational_t lens_max_aperture; /* 0x12c */ pslr_rational_t lens_min_aperture; /* 0x134 */ pslr_rational_t current_zoom; /* 0x16c */ pslr_rational_t set_shutter_speed; /* 0x2c */ pslr_rational_t set_aperture; /* 0x34 */ uint32_t set_iso; /* 0x60 */ uint32_t jpeg_resolution; /* 0x7c */ uint32_t jpeg_saturation; /* 0x8c */ uint32_t jpeg_quality; /* 0x80 */ uint32_t jpeg_contrast; /* 0x94 */ uint32_t jpeg_sharpness; /* 0x90 */ uint32_t jpeg_image_mode; /* 0x88 */ pslr_rational_t zoom; /* 0x16c */ uint32_t focus; /* 0x174 */ uint32_t image_format; /* 0x78 */ uint32_t raw_format; /* 0x84 */ uint32_t light_meter_flags; /* 0x124 */ pslr_rational_t ec; /* 0x3c */ uint32_t custom_ev_steps; /* 0x9c */ uint32_t custom_sensitivity_steps; /* 0xa0 */ uint32_t exposure_mode; /* 0xe0 */ uint32_t user_mode_flag; /* 0x1c */ uint32_t af_point_select; /* 0xbc */ uint32_t selected_af_point; /* 0xc0 */ uint32_t focused_af_point; /* 0x150 */ } pslr_status; typedef void (*pslr_progress_callback_t)(uint32_t current, uint32_t total); #ifdef LIBGPHOTO2 pslr_handle_t pslr_init(GPPort *port); #else pslr_handle_t pslr_init(void); #endif int pslr_connect(pslr_handle_t h); int pslr_disconnect(pslr_handle_t h); int pslr_shutdown(pslr_handle_t h); const char *pslr_model(uint32_t id); int pslr_shutter(pslr_handle_t h); int pslr_focus(pslr_handle_t h); int pslr_get_status(pslr_handle_t h, pslr_status *sbuf); int pslr_get_buffer(pslr_handle_t h, int bufno, int type, int resolution, uint8_t **pdata, uint32_t *pdatalen); int pslr_set_progress_callback(pslr_handle_t h, pslr_progress_callback_t cb, uintptr_t user_data); int pslr_set_shutter(pslr_handle_t h, pslr_rational_t value); int pslr_set_aperture(pslr_handle_t h, pslr_rational_t value); int pslr_set_iso(pslr_handle_t h, uint32_t value); int pslr_set_ec(pslr_handle_t h, pslr_rational_t value); int pslr_set_jpeg_quality(pslr_handle_t h, pslr_jpeg_quality_t quality); int pslr_set_jpeg_resolution(pslr_handle_t h, int resolution); int pslr_set_jpeg_image_mode(pslr_handle_t h, pslr_jpeg_image_mode_t image_mode); int pslr_set_jpeg_sharpness(pslr_handle_t h, int32_t sharpness); int pslr_set_jpeg_contrast(pslr_handle_t h, int32_t contrast); int pslr_set_jpeg_saturation(pslr_handle_t h, int32_t saturation); int pslr_set_image_format(pslr_handle_t h, pslr_image_format_t format); int pslr_is_image_format_supported(pslr_handle_t h, pslr_image_format_t format); int pslr_set_raw_format(pslr_handle_t h, pslr_raw_format_t format); int pslr_delete_buffer(pslr_handle_t h, int bufno); int pslr_green_button(pslr_handle_t h); int pslr_ae_lock(pslr_handle_t h, bool lock); int pslr_buffer_open(pslr_handle_t h, int bufno, int type, int resolution); uint32_t pslr_buffer_read(pslr_handle_t h, uint8_t *buf, uint32_t size); void pslr_buffer_close(pslr_buffer_handle_t h); uint32_t pslr_buffer_get_size(pslr_handle_t h); int pslr_set_exposure_mode(pslr_handle_t h, pslr_exposure_mode_t mode); int pslr_select_af_point(pslr_handle_t h, uint32_t point); const char *pslr_camera_name(pslr_handle_t h); const char **pslr_camera_resolution_steps(pslr_handle_t h); libgphoto2-2.5.9/camlibs/ax203/0000755000175000001440000000000012623156267013056 500000000000000libgphoto2-2.5.9/camlibs/ax203/ax203_compress_jpeg.c0000644000175000001440000002463112610415524016713 00000000000000/* Appotech ax203 picframe JPEG-ish compression code * For ax203 picture frames with firmware version 3.5.x * * Copyright (c) 2010 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #include "config.h" #include #include #ifdef HAVE_LIBGD #include #endif #include "ax203.h" #ifdef HAVE_LIBJPEG #include "jpeg_memsrcdest.h" #endif #if defined(HAVE_LIBGD) && defined(HAVE_LIBJPEG) static int locate_tables_n_write(JOCTET *jpeg, int jpeg_size, JOCTET table_type, uint8_t *outbuf, int *outc) { int i, size, found, orig_outc = *outc; /* Reserve space for writing table size */ *outc += 2; /* Locate tables and write them to outbuf */ for (i = 2; i < jpeg_size; i += size) { if (jpeg[i] != 0xff) { gp_log (GP_LOG_ERROR, "ax203", "marker does not start with ff?"); return GP_ERROR_CORRUPTED_DATA; } if (jpeg[i + 1] == 0xda) break; found = jpeg[i + 1] == table_type; i += 2; size = ((jpeg[i] << 8) | jpeg[i + 1]) - 2; i += 2; if (found) { memcpy(outbuf + *outc, jpeg + i, size); *outc += size; } } size = *outc - orig_outc; outbuf[orig_outc ] = size >> 8; outbuf[orig_outc + 1] = size; return GP_OK; } static int copy_huffman(uint8_t *dst, JOCTET *src, int n) { int i, copied = 0; for (i = 0; i < n; i++) { /* Skip 0xff escaping 0x00's (ax203 special) */ if (i && src[i - 1] == 0xff && src[i] == 0x00) continue; dst[copied++] = src[i]; } return copied; } /* Store MCU info needed by the picture frame (probably so that it can start decompression with any block to allow transition effects) */ static void add_mcu_info(uint8_t *outbuf, int block_nr, int last_Y, int last_Cb, int last_Cr, int huffman_addr) { int info_addr = block_nr * 8; /* skip header */ huffman_addr -= 16; info_addr += 16; /* This is crazy, but it is what the pictframe wants */ huffman_addr -= 8 * block_nr; /* Store last DC vals + huffman data address */ outbuf[info_addr + 0] = last_Y; outbuf[info_addr + 1] = last_Y >> 8; outbuf[info_addr + 2] = last_Cb; outbuf[info_addr + 3] = last_Cb >> 8; outbuf[info_addr + 4] = last_Cr; outbuf[info_addr + 5] = last_Cr >> 8; outbuf[info_addr + 6] = huffman_addr; outbuf[info_addr + 7] = huffman_addr >> 8; } int ax206_compress_jpeg(Camera *camera, int **in, uint8_t *outbuf, int out_size, int width, int height) { struct jpeg_compress_struct cinfo; struct jpeg_decompress_struct dinfo; struct jpeg_error_mgr jcerr, jderr; JSAMPROW row_pointer[1]; JOCTET *buf = NULL, *regular_jpeg = NULL; jvirt_barray_ptr *in_coefficients; int i, x, y, stop, size, ret, outc; unsigned long regular_jpeg_size = 0, buf_size = 0; int last_dc_val[3] = { 0, 0, 0 }; /* We have a rgb24bit image in the desired dimensions, first we compress it into a regular jpeg, which we use as a base for creating the ax203 JPEG-ish format */ cinfo.err = jpeg_std_error (&jcerr); jpeg_create_compress (&cinfo); jpeg_mem_dest (&cinfo, ®ular_jpeg, ®ular_jpeg_size); cinfo.image_width = width; cinfo.image_height = height; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; jpeg_set_defaults (&cinfo); cinfo.comp_info[0].h_samp_factor = 2; cinfo.comp_info[0].v_samp_factor = 2; jpeg_start_compress (&cinfo, TRUE); while( cinfo.next_scanline < cinfo.image_height ) { JOCTET row[width * 3]; for (i = 0; i < width; i++) { int p = in[cinfo.next_scanline][i]; row[i * 3 + 0] = gdTrueColorGetRed(p); row[i * 3 + 1] = gdTrueColorGetGreen(p); row[i * 3 + 2] = gdTrueColorGetBlue(p); } row_pointer[0] = row; jpeg_write_scanlines (&cinfo, row_pointer, 1); } jpeg_finish_compress (&cinfo); jpeg_destroy_compress (&cinfo); /* Write image header to outbuf */ outbuf[0] = width >> 8; outbuf[1] = width; outbuf[2] = height >> 8; outbuf[3] = height; outbuf[4] = 3; /* 2x uv sub-sampling */ outbuf[5] = 0; outbuf[6] = 1; outbuf[7] = 1; outbuf[8] = 0; outbuf[9] = 1; outbuf[10] = 1; outbuf[11] = 0; outbuf[12] = 1; outbuf[13] = 1; outbuf[14] = 0; outbuf[15] = 0; /* Make outc point to after the MCU info table, so to the start of the quantisation tables */ outc = 16 + ((width + 15) / 16) * ((height + 15) / 16) * 8; /* Locate quant tables and write them to outbuf */ ret = locate_tables_n_write (regular_jpeg, regular_jpeg_size, 0xdb, outbuf, &outc); if (ret < 0) return ret; /* Locate huffman tables and write them to outbuf */ ret = locate_tables_n_write (regular_jpeg, regular_jpeg_size, 0xc4, outbuf, &outc); if (ret < 0) return ret; /* The ax203 has 2 perculiarities in the huffman data for the JPEG DCT coefficients: 1) It wants the MCU huffman data for each new MCU to start on a byte boundary 2) The component order in an MCU is Cb Cr Y, rather then Y Cb Cr We solve both these issues by decompressing the regular jpeg we've just created into its raw coefficients, following by creating mini JPEGs with the size of one MCU block, using the raw-coefficients from the regular JPEG we first created. This allows us to both shuffle the component order, and to byte align the start of each MCU. */ /* Get the raw coefficients from the regular JPEG */ dinfo.err = jpeg_std_error (&jderr); jpeg_create_decompress (&dinfo); jpeg_mem_src (&dinfo, regular_jpeg, regular_jpeg_size); jpeg_read_header (&dinfo, TRUE); in_coefficients = jpeg_read_coefficients (&dinfo); /* Create a JPEG compression object for our mini JPEGs */ cinfo.err = jpeg_std_error (&jcerr); jpeg_create_compress (&cinfo); cinfo.image_width = 16; cinfo.image_height = 16; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; #if JPEG_LIB_VERSION >= 80 cinfo.min_DCT_h_scaled_size = dinfo.min_DCT_h_scaled_size; cinfo.min_DCT_v_scaled_size = dinfo.min_DCT_h_scaled_size; cinfo.jpeg_width = 16; cinfo.jpeg_height = 16; #endif jpeg_set_defaults (&cinfo); /* We will write Cb values as comp. 0, so give it chroma settings */ cinfo.comp_info[0].h_samp_factor = 1; cinfo.comp_info[0].v_samp_factor = 1; cinfo.comp_info[0].quant_tbl_no = 1; cinfo.comp_info[0].dc_tbl_no = 1; cinfo.comp_info[0].ac_tbl_no = 1; /* We will write Y values as comp. 2, so give it luma settings */ cinfo.comp_info[2].h_samp_factor = 2; cinfo.comp_info[2].v_samp_factor = 2; cinfo.comp_info[2].quant_tbl_no = 0; cinfo.comp_info[2].dc_tbl_no = 0; cinfo.comp_info[2].ac_tbl_no = 0; /* And create a mini JPEG for each MCU with the shuffled component order and extract its huffman data. This fixes our component order problem and gives us the needed byte aligning for free. */ for (y = 0; y < (height + 15) / 16; y++) { JBLOCKARRAY in_row[3], out_row[3]; jvirt_barray_ptr out_barray[3]; /* Notice the shuffling of components happening here !! */ in_row[0] = dinfo.mem->access_virt_barray((j_common_ptr)&dinfo, in_coefficients[1], y, 1, 0); in_row[1] = dinfo.mem->access_virt_barray((j_common_ptr)&dinfo, in_coefficients[2], y, 1, 0); in_row[2] = dinfo.mem->access_virt_barray((j_common_ptr)&dinfo, in_coefficients[0], y * 2, 2, 0); for (x = 0; x < (width + 15) / 16; x++) { /* (Re)init our destination buffer */ jpeg_mem_dest (&cinfo, &buf, &buf_size); /* Add MCU info block to output */ add_mcu_info (outbuf, y * ((width + 15) / 16) + x, last_dc_val[2], last_dc_val[0], last_dc_val[1], outc); /* Allocate virtual arrays to store the coefficients for the mini jpg we are making */ out_barray[0] = cinfo.mem->request_virt_barray( (j_common_ptr)&cinfo, JPOOL_IMAGE, 0, 1, 1, 1); out_barray[1] = cinfo.mem->request_virt_barray( (j_common_ptr)&cinfo, JPOOL_IMAGE, 0, 1, 1, 1); out_barray[2] = cinfo.mem->request_virt_barray( (j_common_ptr)&cinfo, JPOOL_IMAGE, 0, 2, 2, 2); jpeg_write_coefficients (&cinfo, out_barray); /* Copy over our 3 (or 6) coefficient blocks, and apply last_dc_val */ out_row[0] = cinfo.mem->access_virt_barray( (j_common_ptr)&cinfo, out_barray[0], 0, 1, 1); out_row[1] = cinfo.mem->access_virt_barray( (j_common_ptr)&cinfo, out_barray[1], 0, 1, 1); out_row[2] = cinfo.mem->access_virt_barray( (j_common_ptr)&cinfo, out_barray[2], 0, 2, 1); for (i = 0; i < 2; i++) { memcpy (out_row[i][0][0], in_row[i][0][x], sizeof(JBLOCK)); out_row[i][0][0][0] -= last_dc_val[i]; last_dc_val[i] = in_row[i][0][x][0]; } memcpy (out_row[2][0][0], in_row[2][0][x * 2 + 0], sizeof(JBLOCK)); memcpy (out_row[2][0][1], in_row[2][0][x * 2 + 1], sizeof(JBLOCK)); memcpy (out_row[2][1][0], in_row[2][1][x * 2 + 0], sizeof(JBLOCK)); memcpy (out_row[2][1][1], in_row[2][1][x * 2 + 1], sizeof(JBLOCK)); out_row[2][0][0][0] -= last_dc_val[2]; out_row[2][0][1][0] -= last_dc_val[2]; out_row[2][1][0][0] -= last_dc_val[2]; out_row[2][1][1][0] -= last_dc_val[2]; last_dc_val[2] = in_row[2][1][x * 2 + 1][0]; jpeg_finish_compress (&cinfo); stop = 0; for (i = 2; i < buf_size && !stop; i += size) { stop = buf[i] == 0xff && buf[i + 1] == 0xda; i += 2; size = (buf[i] << 8) | buf[i + 1]; } if (i >= buf_size) { gp_log (GP_LOG_ERROR, "ax203", "missing in ff da marker?"); return GP_ERROR_CORRUPTED_DATA; } size = buf_size - i - 2; if ((outc + size) > out_size) { gp_log (GP_LOG_ERROR, "ax203", "jpeg output buffer overflow"); return GP_ERROR_FIXED_LIMIT_EXCEEDED; } outc += copy_huffman(outbuf + outc, buf + i, size); /* Cleanup our memory dest */ free (buf); buf = NULL; buf_size = 0; } } /* We're done with the jpeg decompress (input) and compress (output) objs */ jpeg_destroy_decompress (&dinfo); jpeg_destroy_compress (&cinfo); free(regular_jpeg); return outc; } #endif libgphoto2-2.5.9/camlibs/ax203/README.ax2030000644000175000001440000001207212561423351014504 00000000000000About this driver ================= This driver allows you to upload / download and delete pictures from appotech ax203 and ax206 based picture frames. This are small, cheap picture frames with a 1.1, 1.5, 1.8, 2.4 or 3.5 inch display and an USB id of: 1908:0102 1908:1315 1908:1320 1908:3335 ax203 based frames present themselves as a usb mass storage cdrom, which contains the windows software. Communication with the device happens by issuing special (custom) scsi commands. This driver uses the special "usbscsi" port driver, which allows sending the custom scsi commands. Note that if your ax203 frame has a usb-id of 1908:1315, you need to tell Linux not to touch the HID device this version also presents in its USB descriptor, otherwise the frame gets confused and resets. Here is a kernel patch for this: http://marc.info/?l=linux-usb&m=126985692106903 Alternative one could add the following on the linux kernel cmdline: usbhid.quirks=0x1908:0x1315:0x4 But that does not help as it triggers this bug: http://www.spinics.net/lists/linux-input/msg07870.html Also if you have a 1908:1315 or 1908:1320 frame, these will work better (faster, no reset errors in dmesg), if you do the following as root, before plugging them in: modprobe usb-storage echo 1908:1315:b,1908:1320:b > /sys/module/usb_storage/parameters/quirks A patch for this is on its way upstream (7th april 2010). About the ax203 access protocol =============================== The scsi commands for these devices was reverse engineered by several people, the ax203 camlib builds on top of their work, see: http://picframe.spritesserver.nl/wiki/index.php/Talk:HK_Unbranded_with_AppoTech_chipset The protocol consists of directly sending SPI commands to and from the SPI flash inside these devices, giving very raw access to the flash chip For example you need to do separate erase and program commands, and as an erase block is larger then what you program in a single program command you must make sure to always reprogram the entire range the single erase command cleared (and read the entire range before clearing, so you can write it back). In order to be sure we are sending the right commands the ax203 driver starts by reading the SPI flash's ID string, and if this is unknown it refuses to work. In this case please do "gphoto2 -L --debug 2> log" and mail me the log file. About the ax203 image compression ================================== The ax203 family of picframe controllers actually comes with 4 different flavors of compression, see README.ax203-compression. Random ax203 notes ================== Firmware versions 3.3.x and 3.4.x frames have a 2nd Parameter block at ABFS start + 0x1000, about which the following is known: bytes 4-5: 16 bit rgb 5-6-5 color value for menu background, big endian bytes 6-7: 16 bit rgb 5-6-5 color value for menu text, big endian byte 0xffe: 0x55 this byte and the next one are a magic marker to byte 0xfff: 0xaa indicate the parameter block is valid ax3003 based frames contain 2 blocks with images, 1 with the images to be shown and one with images used inside the menus. The memory map for my ax3003 frame looks like this: 407cc Menu images file table, 2 bytes per file 16 bit big endian start address / 256. 70000 bootsplash 79000 No pictures picture 7f400 Pinguin picture, use unknown 86900 Sync with PC picture 8d200 ?? Not JPEG data 99200 Clock hands a4600 Font + strings + clock hands for calendar display (English) b0400 Font for digital clock b7000 Font + strings + clock hands for calendar display (German) c5000 Font + strings + clock hands for calendar display (French) d2f00 Setup screen (English) db300 Setup screen scrolled (English) e3500 Setup screen (French) eda00 Setup screen scrolled (French) f5f00 Setup screen (German) ff200 Setup screen scrolled (German) 107a00 Setup screen bars 10cb00 Calendar screen (English) 114100 Clock screen 11b800 Calendar screen (French) 124900 Calendar screen (German) 12d500 Wav file 12e400 Wav file 12ed00 Wav file 136f00 Wav file 14e700 ISO start 180000 ABFS 181000 Picture start 1f0000 Picture end, boot loader ? 1f8020 Something 1f9000 Unused As you can see the jpeg data for the menu screens is rather large this is because it contains a ton of JPEG metadata from photoshop, if this were to be removed, a lot more of the memory could be used to actually store pictures. ax206 checksum command ---------------------- While working on support for the ax206's not quite raw flash access mode for eeproms with AAI, like the SST25VF080, I found out that at least the ax206 also has a command to read part of the eeprom and generate a 16 bit checksum for it. The layout of the scsi cmd buffer for this is as follows: byte 0: 0xcd (read from dev) byte 1 - 4: 0 byte 5: 5 byte 6: 5 byte 7 - 8: size of area to checksum, byte 7 == MSB, 0 means 65536 byte 9 - 10: 0 byte 11 - 13: address to start checksum, byte 11 == MSB And then readback 64 bytes of scsi data, where the first 2 are the 16 bit checksum of all the bytes in the area with byte 0 being the MSB. Hans de Goede 16 Sep 2012 libgphoto2-2.5.9/camlibs/ax203/library.c0000644000175000001440000003340612610415530014577 00000000000000/* Appotech ax203 picframe access library * * Copyright (c) 2010 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #define _BSD_SOURCE #include "config.h" #include #include #ifdef HAVE_LIBGD #include #endif #include #include #include #include #include "ax203.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif static const struct ax203_devinfo ax203_devinfo[] = { { 0x1908, 0x1315, AX203_FIRMWARE_3_3_x }, { 0x1908, 0x1320, AX203_FIRMWARE_3_4_x }, { 0x1908, 0x0102, AX206_FIRMWARE_3_5_x }, { 0x1908, 0x3335, AX3003_FIRMWARE_3_5_x }, {} }; int camera_id (CameraText *id) { strcpy (id->text, "AX203 USB picture frame"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; int i; for (i = 0; ax203_devinfo[i].vendor_id; i++) { memset (&a, 0, sizeof(a)); snprintf(a.model, sizeof (a.model), "AX203 USB picture frame firmware ver 3.%d.x", 3 + i); a.status = GP_DRIVER_STATUS_TESTING; a.port = GP_PORT_USB_SCSI; a.speed[0] = 0; a.usb_vendor = ax203_devinfo[i].vendor_id; a.usb_product= ax203_devinfo[i].product_id; a.operations = GP_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE | GP_FOLDER_OPERATION_DELETE_ALL; /* FIXME add support for downloading RAW images */ a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_RAW; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { sprintf (summary->text, _("Your USB picture frame has a AX203 chipset\n")); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." )); return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _( "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." )); return GP_OK; } static int get_file_idx(Camera *camera, const char *folder, const char *filename) { int idx, count, present; char *c; if (strcmp (folder, "/")) return GP_ERROR_DIRECTORY_NOT_FOUND; if (strlen (filename) != 12 || strncmp (filename, "pict", 4) || strcmp (filename + 8, ".png")) return GP_ERROR_FILE_NOT_FOUND; idx = strtoul(filename + 4, &c, 10); if (*c != '.') return GP_ERROR_FILE_NOT_FOUND; idx--; count = ax203_read_filecount (camera); if (count < 0) return count; if (idx < 0 || idx >= count) return GP_ERROR_FILE_NOT_FOUND; present = ax203_file_present (camera, idx); if (present < 0) return present; if (!present) return GP_ERROR_FILE_NOT_FOUND; return idx; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int idx, size; #ifdef HAVE_LIBGD int ret; gdImagePtr im; void *gdpng; #endif idx = get_file_idx(camera, folder, filename); if (idx < 0) return idx; if (type == GP_FILE_TYPE_RAW) { char *raw; size = ax203_read_raw_file (camera, idx, &raw); if (size < 0) return size; gp_file_set_mime_type (file, GP_MIME_RAW); gp_file_set_name (file, filename); gp_file_set_data_and_size (file, raw, size); return GP_OK; } #ifdef HAVE_LIBGD if (type != GP_FILE_TYPE_NORMAL) return GP_ERROR_NOT_SUPPORTED; im = gdImageCreateTrueColor(camera->pl->width, camera->pl->height); if (im == NULL) return GP_ERROR_NO_MEMORY; ret = ax203_read_file(camera, idx, im->tpixels); if (ret < 0) { gdImageDestroy (im); return ret; } gdpng = gdImagePngPtr(im, &size); gdImageDestroy (im); if (gdpng == NULL) return GP_ERROR_NO_MEMORY; ret = gp_file_set_mime_type (file, GP_MIME_PNG); if (ret < 0) { gdFree (gdpng); return ret; } ret = gp_file_set_name (file, filename); if (ret < 0) { gdFree (gdpng); return ret; } ret = gp_file_append (file, gdpng, size); gdFree (gdpng); return ret; #else gp_log(GP_LOG_ERROR,"ax203", "GD decompression not supported - no libGD present during build"); return GP_ERROR_NOT_SUPPORTED; #endif } static int put_file_func (CameraFilesystem *fs, const char *folder, const char *name, CameraFileType type, CameraFile *file, void *data, GPContext *context) { #ifdef HAVE_LIBGD Camera *camera = data; char *filedata = NULL; int ret, in_width, in_height, in_x, in_y; double aspect_in, aspect_out; unsigned long filesize = 0; gdImagePtr im_out, im_in = NULL; if (strcmp (folder, "/")) return GP_ERROR_DIRECTORY_NOT_FOUND; CHECK (gp_file_get_data_and_size (file, (const char **)&filedata, &filesize)) /* Try loading the file using gd, starting with the most often used types first */ /* gdImageCreateFromJpegPtr is chatty on error, don't call it on non JPEG files */ if (filesize > 2 && (uint8_t)filedata[0] == 0xff && (uint8_t)filedata[1] == 0xd8) im_in = gdImageCreateFromJpegPtr(filesize, filedata); if (im_in == NULL) im_in = gdImageCreateFromPngPtr(filesize, filedata); if (im_in == NULL) im_in = gdImageCreateFromGifPtr(filesize, filedata); if (im_in == NULL) im_in = gdImageCreateFromWBMPPtr(filesize, filedata); if (im_in == NULL) { gp_log (GP_LOG_ERROR, "ax203", "Unrecognized file format for file: %s%s", folder, name); return GP_ERROR_BAD_PARAMETERS; } im_out = gdImageCreateTrueColor(camera->pl->width, camera->pl->height); if (im_out == NULL) { gdImageDestroy (im_in); return GP_ERROR_NO_MEMORY; } /* Keep aspect */ aspect_in = (double)im_in->sx / im_in->sy; aspect_out = (double)im_out->sx / im_out->sy; if (aspect_in > aspect_out) { /* Reduce in width (crop left and right) */ in_width = (im_in->sx / aspect_in) * aspect_out; in_x = (im_in->sx - in_width) / 2; in_height = im_in->sy; in_y = 0; } else { /* Reduce in height (crop top and bottom) */ in_width = im_in->sx; in_x = 0; in_height = (im_in->sy * aspect_in) / aspect_out; in_y = (im_in->sy - in_height) / 2; } gdImageCopyResampled (im_out, im_in, 0, 0, in_x, in_y, im_out->sx, im_out->sy, in_width, in_height); if (im_in->sx != im_out->sx || im_in->sy != im_out->sy) gdImageSharpen(im_out, 100); ret = ax203_write_file (camera, im_out->tpixels); if (ret >= 0) { /* Commit the changes to the device */ ret = ax203_commit(camera); } gdImageDestroy (im_in); gdImageDestroy (im_out); return ret; #else gp_log(GP_LOG_ERROR,"ax203", "GD compression not supported - no libGD present during build"); return GP_ERROR_NOT_SUPPORTED; #endif } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int idx; idx = get_file_idx(camera, folder, filename); if (idx < 0) return idx; CHECK (ax203_delete_file(camera, idx)) return ax203_commit(camera); } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; CHECK (ax203_delete_all (camera)) return ax203_commit(camera); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { memset (info, 0, sizeof(CameraFileInfo)); /* FIXME: fill in some stuff? */ return GP_OK; } static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { if (strcmp(folder, "/")) return GP_ERROR_DIRECTORY_NOT_FOUND; /* Subfolders not supported */ return GP_OK; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i, count, present; char buf[16]; count = ax203_read_filecount (camera); if (count < 0) return count; for (i = 0; i < count; i++) { present = ax203_file_present (camera, i); if (present < 0) return present; if (present) { snprintf(buf, sizeof(buf), "pict%04d.png", i + 1); CHECK (gp_list_append (list, buf, NULL)) } } return GP_OK; } static int storage_info_func (CameraFilesystem *fs, CameraStorageInformation **sinfos, int *nrofsinfos, void *data, GPContext *context) { Camera *camera = (Camera*)data; CameraStorageInformation *sinfo; int free, imagesize; free = ax203_get_free_mem_size (camera); if (free < 0) return free; sinfo = malloc(sizeof(CameraStorageInformation)); if (!sinfo) return GP_ERROR_NO_MEMORY; *sinfos = sinfo; *nrofsinfos = 1; sinfo->fields = GP_STORAGEINFO_BASE; strcpy(sinfo->basedir, "/"); sinfo->fields |= GP_STORAGEINFO_ACCESS; sinfo->access = GP_STORAGEINFO_AC_READWRITE; sinfo->fields |= GP_STORAGEINFO_STORAGETYPE; sinfo->type = GP_STORAGEINFO_ST_FIXED_RAM; sinfo->fields |= GP_STORAGEINFO_FILESYSTEMTYPE; sinfo->fstype = GP_STORAGEINFO_FST_GENERICFLAT; sinfo->fields |= GP_STORAGEINFO_MAXCAPACITY; sinfo->capacitykbytes = ax203_get_mem_size (camera) / 1024; sinfo->fields |= GP_STORAGEINFO_FREESPACEKBYTES; sinfo->freekbytes = free / 1024; imagesize = ax203_filesize (camera); if (imagesize) { sinfo->fields |= GP_STORAGEINFO_FREESPACEIMAGES; sinfo->freeimages = free / imagesize; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .put_file_func = put_file_func, .delete_all_func = delete_all_func, .storage_info_func = storage_info_func }; static int camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *child; GP_DEBUG ("*** camera_get_config"); gp_widget_new (GP_WIDGET_WINDOW, _("Picture Frame Configuration"), window); gp_widget_new (GP_WIDGET_TOGGLE, _("Synchronize frame data and time with PC"), &child); gp_widget_set_value (child, &camera->pl->syncdatetime); gp_widget_append (*window, child); return GP_OK; } static int camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *child; int ret; GP_DEBUG ("*** camera_set_config"); ret = gp_widget_get_child_by_label (window, _("Synchronize frame data and time with PC"), &child); if (ret == GP_OK) gp_widget_get_value (child, &camera->pl->syncdatetime); return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { char buf[2]; if (camera->pl != NULL) { buf[0] = '0' + camera->pl->syncdatetime; buf[1] = 0; gp_setting_set("ax203", "syncdatetime", buf); ax203_close (camera); free (camera->pl); camera->pl = NULL; } return GP_OK; } int camera_init (Camera *camera, GPContext *context) { CameraAbilities a; int i, ret; char *dump, buf[256]; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = calloc (1, sizeof(CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; ret = gp_setting_get("ax203", "syncdatetime", buf); if (ret == GP_OK) camera->pl->syncdatetime = buf[0] == '1'; else camera->pl->syncdatetime = 1; CHECK (gp_camera_get_abilities(camera, &a)) for (i = 0; ax203_devinfo[i].vendor_id; i++) { if ((a.usb_vendor == ax203_devinfo[i].vendor_id) && (a.usb_product == ax203_devinfo[i].product_id)) { camera->pl->frame_version = ax203_devinfo[i].frame_version; break; } } if (!ax203_devinfo[i].vendor_id) { gp_log (GP_LOG_ERROR, "ax203", "Unknown USB ID"); camera_exit (camera, context); return GP_ERROR_BAD_PARAMETERS; } dump = getenv("GP_AX203_DUMP"); if (dump) ret = ax203_open_dump (camera, dump); else ret = ax203_open_device (camera); if (ret != GP_OK) { camera_exit (camera, context); return ret; } GP_DEBUG ("ax203 memory size: %d, free: %d", ax203_get_mem_size (camera), ax203_get_free_mem_size (camera)); if (camera->pl->syncdatetime) { struct tm *xtm; #ifdef HAVE_LOCALTIME_R struct tm tm; #endif time_t t; t = time (NULL); #ifdef HAVE_LOCALTIME_R if ((xtm = localtime_r (&t , &tm))) { #else if ((xtm = localtime (&t))) { #endif ret = ax203_set_time_and_date (camera, xtm); if (ret != GP_OK) { camera_exit (camera, context); return ret; } } } return GP_OK; } libgphoto2-2.5.9/camlibs/ax203/ax203_decode_yuv_delta.c0000644000175000001440000002524112610415524017350 00000000000000/* Appotech ax203 picframe decompression and compression code * For ax203 picture frames with firmware version 3.4.x * * Copyright (c) 2010 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 STANDALONE_MAIN #include #include <_stdint.h> #include #include #include #include #else #include "config.h" #ifdef HAVE_LIBGD #include #endif #include #include "ax203.h" #endif #define CLAMP_U8(x) (((x) > 255) ? 255 : (((x) < 0) ? 0 : (x))) static const int corr_tables[4][8] = { /* Table 0 depends on wrap around to get negative corrections!! */ { 0, 32, 64, 96, 128, 160, 192, 224 }, { 0, 16, 32, 48, -64, -48, -32, -16 }, { 0, 8, 16, 24, -32, -24, -16, -8 }, { 0, 4, 8, 12, -16, -12, -8, -4 }, }; #ifdef HAVE_LIBGD /* With in a compressed 4x4 block, the data is stored 4 component values at a time, compressed into 2 bytes, the first 5 bits are a starting value, then 2 bits encoding which correction/delta table to use and then 3x3 bits code deltas from the previous pixel. */ static void ax203_decode_component_values(char *src, char *dest) { int i, table, corr; dest[0] = src[0] & ~0x07; table = (src[0] >> 1) & 3; for (i = 1; i < 4; i++) { switch (i) { case 1: corr = (src[1] >> 5) & 7; break; case 2: corr = (src[1] >> 2) & 7; break; case 3: corr = ((src[1] << 1) & 6) | (src[0] & 1); break; } dest[i] = dest[i - 1] + corr_tables[table][corr]; } } /* The compressed data consists of blocks of 4x4 pixels, each encoded in 12 bytes */ static void ax203_decode_block_yuv_delta(char *src, int **dest, int dest_x, int dest_y) { int x, y, r, g, b; uint8_t Y[16]; int8_t U[4], V[4]; /* The compressed component order is: 4 Pixels U, 4 Pixels V, 16 pixels Y */ ax203_decode_component_values(src, (char *)U); src += 2; ax203_decode_component_values(src, (char *)V); src += 2; /* The Y components are stored 4 at a time in a pattern like this: 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4 */ for (y = 0; y < 4; y += 2) { for (x = 0; x < 4; x += 2) { char buf[4]; ax203_decode_component_values(src, buf); Y[ y * 4 + x ] = buf[0]; Y[ y * 4 + x + 1] = buf[1]; Y[(y + 1) * 4 + x ] = buf[2]; Y[(y + 1) * 4 + x + 1] = buf[3]; src += 2; } } for (y = 0; y < 4; y++) { for (x = 0; x < 4; x++) { r = 1.164 * (Y[y * 4 + x] - 16) + 1.596 * V[(y / 2) * 2 + x / 2]; g = 1.164 * (Y[y * 4 + x] - 16) - 0.391 * U[(y / 2) * 2 + x / 2] - 0.813 * V[(y / 2) * 2 + x / 2]; b = 1.164 * (Y[y * 4 + x] - 16) + 2.018 * U[(y / 2) * 2 + x / 2]; dest[dest_y + y][dest_x + x] = gdTrueColor (CLAMP_U8(r), CLAMP_U8(g), CLAMP_U8(b)); } } } void ax203_decode_yuv_delta(char *src, int **dest, int width, int height) { int x, y; for (y = 0; y < height; y += 4) { for (x = 0; x < width; x += 4) { ax203_decode_block_yuv_delta(src, dest, x, y); src += 12; } } } static int ax203_find_closest_correction_signed(int8_t base, int8_t val, int table) { int closest_delta = 256; int i, delta, closest_idx = 0; int8_t corrected_val; for (i = 0; i < 8; i++) { /* Don't allow wrap around for tables other then table 0 */ if (table && ((base + corr_tables[table][i]) > 127 || (base + corr_tables[table][i]) < -128)) continue; /* We are used for U and V values skip correction vals which would lead to invalid U / V values */ corrected_val = base + corr_tables[table][i]; if (corrected_val < -112 || corrected_val > 111) continue; delta = abs(corrected_val - val); if (delta < closest_delta) { closest_delta = delta; closest_idx = i; } } return closest_idx; } static int ax203_find_closest_correction_unsigned(uint8_t base, uint8_t val, int table) { int closest_delta = 256; int i, delta, closest_idx = 0; uint8_t corrected_val; for (i = 0; i < 8; i++) { /* Don't allow wrap around for tables other then table 0 */ if (table && ((base + corr_tables[table][i]) > 255 || (base + corr_tables[table][i]) < 0)) continue; /* We are used for Y values skip correction vals which would lead to invalid Y values */ corrected_val = base + corr_tables[table][i]; if (corrected_val < 16 || corrected_val > 235) continue; delta = abs(corrected_val - val); if (delta < closest_delta) { closest_delta = delta; closest_idx = i; } } return closest_idx; } static void ax203_encode_signed_component_values(int8_t *src, char *dest) { int i, j, table, corr; int8_t base; /* Select a correction table */ for (i = 3; i > 0; i--) { base = src[0] & ~0x07; for (j = 1; j < 4; j++) { if ((base + corr_tables[i][3] + 4) < src[j] || (base + corr_tables[i][4] - 4) > src[j]) break; corr = ax203_find_closest_correction_signed (base, src[j], i); /* Calculate the base value for the next pixel */ base = base + corr_tables[i][corr]; } /* If we did not break out the above loop the min / max correction in the current table is enough */ if (j == 4) break; } table = i; /* And store the pixels */ base = src[0] & ~0x07; dest[0] = base; dest[0] |= table << 1; dest[1] = 0; for (i = 1; i < 4; i++) { corr = ax203_find_closest_correction_signed (base, src[i], table); switch (i) { case 1: dest[1] |= corr << 5; break; case 2: dest[1] |= corr << 2; break; case 3: dest[0] |= corr & 1; dest[1] |= corr >> 1; break; } /* Calculate the base value for the next pixel */ base = base + corr_tables[table][corr]; } } static void ax203_encode_unsigned_component_values(uint8_t *src, char *dest) { int i, j, table, corr; uint8_t base; /* Select a correction table */ for (i = 3; i > 0; i--) { base = src[0] & ~0x07; for (j = 1; j < 4; j++) { if ((base + corr_tables[i][3] + 4) < src[j] || (base + corr_tables[i][4] - 4) > src[j]) break; corr = ax203_find_closest_correction_unsigned (base, src[j], i); /* Calculate the base value for the next pixel */ base = base + corr_tables[i][corr]; } /* If we did not break out the above loop the min / max correction in the current table is enough */ if (j == 4) break; } table = i; /* And store the pixels */ base = src[0] & ~0x07; dest[0] = base; dest[0] |= table << 1; dest[1] = 0; for (i = 1; i < 4; i++) { corr = ax203_find_closest_correction_unsigned (base, src[i], table); switch (i) { case 1: dest[1] |= corr << 5; break; case 2: dest[1] |= corr << 2; break; case 3: dest[0] |= corr & 1; dest[1] |= corr >> 1; break; } /* Calculate the base value for the next pixel */ base = base + corr_tables[table][corr]; } } static void ax203_encode_block_yuv_delta(int **src, int src_x, int src_y, char *dest) { uint8_t Y[16]; int8_t U[4], V[4]; int x, y; /* Convert to YUV */ for (y = 0; y < 4; y++) { for (x = 0; x < 4; x++) { int p = src[src_y + y][src_x + x]; Y[y * 4 + x] = gdTrueColorGetRed(p) * 0.257 + gdTrueColorGetGreen(p) * 0.504 + gdTrueColorGetBlue(p) * 0.098 + 16; } } for (y = 0; y < 4; y += 2) { for (x = 0; x < 4; x += 2) { int p1 = src[src_y + y ][src_x + x ]; int p2 = src[src_y + y ][src_x + x + 1]; int p3 = src[src_y + y + 1][src_x + x ]; int p4 = src[src_y + y + 1][src_x + x + 1]; int r = (gdTrueColorGetRed(p1) + gdTrueColorGetRed(p2) + gdTrueColorGetRed(p3) + gdTrueColorGetRed(p4)) / 4; int g = (gdTrueColorGetGreen(p1) + gdTrueColorGetGreen(p2) + gdTrueColorGetGreen(p3) + gdTrueColorGetGreen(p4)) / 4; int b = (gdTrueColorGetBlue(p1) + gdTrueColorGetBlue(p2) + gdTrueColorGetBlue(p3) + gdTrueColorGetBlue(p4)) / 4; U[y + x / 2] = 0.439 * b - 0.291 * g - 0.148 * r; V[y + x / 2] = 0.439 * r - 0.368 * g - 0.071 * b; } } /* The compressed component order is: 4 Pixels U, 4 Pixels V, 16 pixels Y */ ax203_encode_signed_component_values(U, dest); dest += 2; ax203_encode_signed_component_values(V, dest); dest += 2; /* The Y components are stored 4 at a time in a pattern like this: 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4 */ for (y = 0; y < 4; y += 2) { for (x = 0; x < 4; x += 2) { uint8_t buf[4]; buf[0] = Y[ y * 4 + x ]; buf[1] = Y[ y * 4 + x + 1]; buf[2] = Y[(y + 1) * 4 + x ]; buf[3] = Y[(y + 1) * 4 + x + 1]; ax203_encode_unsigned_component_values(buf, dest); dest += 2; } } } void ax203_encode_yuv_delta(int **src, char *dest, int width, int height) { int x, y; for (y = 0; y < height; y += 4) { for (x = 0; x < width; x += 4) { ax203_encode_block_yuv_delta(src, x, y, dest); dest += 12; } } } #endif #ifdef STANDALONE_MAIN int main(int argc, char *argv[]) { FILE *fin = NULL; FILE *fout = NULL; gdImagePtr im = NULL; int ret = 0; /* FIXME get these from the cmdline */ int width = 128, height = 128; if (argc != 4) { fprintf (stderr, "Usage: %s <-d|-c> \n", argv[0]); ret = 1; goto exit; } fin = fopen(argv[2], "r"); if (!fin) { fprintf (stderr, "Error opening: %s: %s\n", argv[2], strerror(errno)); ret = 1; goto exit; } fout = fopen(argv[3], "w"); if (!fout) { fprintf (stderr, "Error opening: %s: %s\n", argv[3], strerror(errno)); ret = 1; goto exit; } if (!strcmp(argv[1], "-d")) { const int bufsize = width * height * 3 / 4; char buf[bufsize]; if (fread(buf, 1, bufsize, fin) != bufsize) { fprintf (stderr, "Error reading: %s: %s\n", argv[2], strerror(errno)); ret = 1; goto exit; } im = gdImageCreateTrueColor(width, height); if (!im) { fprintf (stderr, "Error allocating memory\n"); ret = 1; goto exit; } ax203_decode(buf, im->tpixels, width, height); gdImagePng (im, fout); } else { fprintf (stderr, "%s: unkown option: %s\n", argv[0], argv[1]); ret = 1; goto exit; } exit: if (fin) fclose (fin); if (fout) fclose (fout); if (im) gdImageDestroy (im); return ret; } #endif libgphoto2-2.5.9/camlibs/ax203/ax203.c0000644000175000001440000013654212610415530013775 00000000000000/* Appotech ax203 picframe access library * * Copyright (c) 2010-2012 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #include "config.h" #include #include #include #include <_stdint.h> #include #include #include #include #include #ifdef HAVE_LIBGD #include #endif #include #include "ax203.h" #ifdef HAVE_LIBJPEG #include "jpeg_memsrcdest.h" #endif static const struct eeprom_info { const char *name; uint32_t id; int mem_size; int has_4k_sectors; int pp_64k; } ax203_eeprom_info[] = { { "AMIC A25L040", 0x37133037, 524288, 1 }, { "AMIC A25L080", 0x37143037, 1048576, 1 }, { "AMIC A25L40P", 0x1320377f, 524288, 0 }, { "AMIC A25L80P", 0x1420377f, 1048576, 0 }, { "AMIC A25L16P", 0x1520377f, 2097152, 0 }, /* Note the ATmel AT26DF041 id:0x0000441f is fsck-ed up. It doesn't support ERASE_64K, (only 4K) and SPI_EEPROM_PP is 0x11 rather then 0x02 (0x02 only programs a single byte). */ /* I cannot find a datasheet for the ATmel AT26DF081 id:0x0000451f */ { "ATmel AT26DF161", 0x0000461f, 2097152, 1 }, { "ATmel AT26DF081A", 0x0001451f, 1048576, 1 }, { "ATmel AT26DF161A", 0x0001461f, 2097152, 1 }, { "ATmel AT25DF081", 0x0002451f, 1048576, 1 }, { "ATmel AT25DF161", 0x0002461f, 2097152, 1 }, { "EON EN25B16", 0x1c15201c, 2097152, 0 }, { "EON EN25B32", 0x1c16201c, 4194304, 0 }, { "EON EN25F80", 0x1c14311c, 1048576, 1 }, { "EON EN25F16", 0x1c15311c, 2097152, 1 }, { "ESI ES25P80", 0x0014204a, 1048576, 0 }, { "ESI ES25P16", 0x0015204a, 2097152, 0 }, { "ESMT F25L008 (top)", 0x8c14208c, 1048576, 1 }, { "ESMT F25L008 (bottom)", 0x8c14218c, 1048576, 1 }, { "GigaDevice GD25Q40", 0xc81340c8, 524288, 1 }, { "GigaDevice GD25Q80", 0xc81440c8, 1048576, 1 }, { "GigaDevice GD25Q16", 0xc81540c8, 2097152, 1 }, { "MXIC MX25L4005A", 0xc21320c2, 524288, 1 }, { "MXIC MX25L8005A", 0xc21420c2, 1048576, 1 }, { "MXIC MX25L1605A", 0xc21520c2, 2097152, 1 }, { "Nantronics N25S80", 0xd51430d5, 1048576, 1 }, { "PMC Pm25LV010", 0x007e9d7f, 524288, 0 }, { "Spansion S25FL004A", 0x00120201, 524288, 0 }, { "Spansion S25FL008A", 0x00130201, 1048576, 0 }, { "Spansion S25FL016A", 0x00140201, 2097152, 0 }, { "SST25VF080", 0xbf8e25bf, 1048576, 0, 1 }, { "SST25VF016", 0xbf4125bf, 2097152, 0, 1 }, { "ST M25P08", 0x7f142020, 1048576, 0 }, { "ST M25P16", 0x7f152020, 2097152, 0 }, { "ST M25P32", 0x7f162020, 4194304, 0 }, { "ST M25P64", 0x7f172020, 8388608, 0 }, { "Winbond W25P80", 0x001420ef, 1048576, 0 }, { "Winbond W25P16", 0x001520ef, 2097152, 0 }, { "Winbond W25X40", 0x001330ef, 524288, 1 }, { "Winbond W25X80", 0x001430ef, 1048576, 1 }, { "Winbond W25X16", 0x001530ef, 2097152, 1 }, { "Winbond W25X32", 0x001630ef, 4194304, 1 }, { "Winbond W25X64", 0x001730ef, 8388608, 1 }, { "Winbond W25Q80", 0x001440ef, 1048576, 1 }, { "Winbond W25Q16", 0x001540ef, 2097152, 1 }, { "Winbond W25Q32", 0x001640ef, 4194304, 1 }, { } }; static int ax203_send_cmd(Camera *camera, int to_dev, char *cmd, int cmd_size, char *data, int data_size) { char sense_buffer[32]; return gp_port_send_scsi_cmd (camera->port, to_dev, cmd, cmd_size, sense_buffer, sizeof(sense_buffer), data, data_size); } static int ax203_send_eeprom_cmd(Camera *camera, int to_dev, char *eeprom_cmd, int eeprom_cmd_size, char *data, int data_size, char extra_arg) { char cmd_buffer[16]; int i; memset (cmd_buffer, 0, sizeof (cmd_buffer)); if (to_dev) cmd_buffer[0] = AX203_TO_DEV; else cmd_buffer[0] = AX203_FROM_DEV; cmd_buffer[5] = AX203_EEPROM_CMD; cmd_buffer[6] = eeprom_cmd_size; cmd_buffer[7] = (data_size >> 16) & 0xff; cmd_buffer[8] = (data_size >> 8) & 0xff; cmd_buffer[9] = (data_size) & 0xff; for (i = 0; i < eeprom_cmd_size; i++) cmd_buffer[10 + i] = eeprom_cmd[i]; cmd_buffer[15] = extra_arg; return ax203_send_cmd (camera, to_dev, cmd_buffer, sizeof(cmd_buffer), data, data_size); } static int ax203_get_version(Camera *camera, char *buf) { int ret; char cmd_buffer[16]; memset (cmd_buffer, 0, sizeof (cmd_buffer)); cmd_buffer[0] = AX203_FROM_DEV; cmd_buffer[5] = AX203_GET_VERSION; cmd_buffer[6] = 1; cmd_buffer[10] = AX203_GET_VERSION; ret = ax203_send_cmd (camera, 0, cmd_buffer, sizeof(cmd_buffer), buf, 64); buf[63] = 0; /* ensure 0 termination */ return ret; } /* This would be very nice, if only not all devices would answer that they are a 128x128 pixels device */ #if 0 static int ax203_get_lcd_size(Camera *camera) { char cmd_buffer[16]; uint8_t data_buffer[4]; memset (cmd_buffer, 0, sizeof (cmd_buffer)); cmd_buffer[0] = AX203_FROM_DEV; cmd_buffer[5] = AX203_GET_LCD_SIZE; cmd_buffer[6] = 0x01; cmd_buffer[10] = AX203_GET_LCD_SIZE; CHECK (ax203_send_cmd (camera, 0, cmd_buffer, sizeof (cmd_buffer), (char *)data_buffer, sizeof (data_buffer))) camera->pl->width = le16atoh (data_buffer); camera->pl->height = le16atoh (data_buffer + 2); return GP_OK; } #endif static int ax203_get_checksum(Camera *camera, int address, int size) { int ret; char cmd_buffer[16]; uint8_t buf[2]; memset (cmd_buffer, 0, sizeof (cmd_buffer)); cmd_buffer[0] = AX203_FROM_DEV; cmd_buffer[5] = AX203_GET_CHECKSUM; cmd_buffer[6] = AX203_GET_CHECKSUM; cmd_buffer[7] = (size >> 8) & 0xff; cmd_buffer[8] = size & 0xff; cmd_buffer[11] = (address >> 16) & 0xff; cmd_buffer[12] = (address >> 8) & 0xff; cmd_buffer[13] = address & 0xff; ret = ax203_send_cmd (camera, 0, cmd_buffer, sizeof(cmd_buffer), (char *)buf, 2); if (ret < 0) return ret; /*return be16atoh(buf);*/ return (buf[0] << 8) | buf[1]; } static int ax3003_get_frame_id(Camera *camera) { int ret; char cmd_buffer[16]; uint8_t id; memset (cmd_buffer, 0, sizeof (cmd_buffer)); cmd_buffer[0] = AX3003_FRAME_CMD; cmd_buffer[1] = AX3003_GET_FRAME_ID; ret = ax203_send_cmd (camera, 0, cmd_buffer, sizeof(cmd_buffer), (char *)&id, 1); if (ret < 0) return ret; return id; } static int ax3003_get_abfs_start(Camera *camera) { int ret; char cmd_buffer[16]; uint8_t buf[2]; memset (cmd_buffer, 0, sizeof (cmd_buffer)); cmd_buffer[0] = AX3003_FRAME_CMD; cmd_buffer[1] = AX3003_GET_ABFS_START; ret = ax203_send_cmd (camera, 0, cmd_buffer, sizeof(cmd_buffer), (char *)buf, 2); if (ret < 0) return ret; return ((buf[0] << 8) | buf[1]) * 0x100; /*return be16atoh(buf) * 0x100;*/ } int ax203_set_time_and_date(Camera *camera, struct tm *t) { char cmd_buffer[16]; memset (cmd_buffer, 0, sizeof (cmd_buffer)); cmd_buffer[0] = AX203_SET_TIME; cmd_buffer[5] = t->tm_year % 100; switch (camera->pl->frame_version) { case AX3003_FIRMWARE_3_5_x: /* Note this is what the windows software does, with the one AX3003 frame I have this does not do anything */ cmd_buffer[0] = AX3003_FRAME_CMD; cmd_buffer[1] = AX3003_SET_TIME; /* fall through */ case AX203_FIRMWARE_3_3_x: case AX203_FIRMWARE_3_4_x: cmd_buffer[6] = t->tm_mon + 1; cmd_buffer[7] = t->tm_wday; break; case AX206_FIRMWARE_3_5_x: cmd_buffer[6] = 19 + t->tm_year / 100; cmd_buffer[7] = t->tm_mon + 1; break; } cmd_buffer[8] = t->tm_mday; cmd_buffer[9] = t->tm_hour; cmd_buffer[10] = t->tm_min; cmd_buffer[11] = t->tm_sec; return ax203_send_cmd (camera, 0, cmd_buffer, sizeof(cmd_buffer), NULL, 0); } static int ax203_eeprom_device_identification(Camera *camera, char *buf) { char cmd = SPI_EEPROM_RDID; return ax203_send_eeprom_cmd (camera, 0, &cmd, 1, buf, 64, 0); } static int ax203_eeprom_release_from_deep_powerdown(Camera *camera) { char cmd = SPI_EEPROM_RDP; return ax203_send_eeprom_cmd (camera, 1, &cmd, 1, NULL, 0, 0); } static int ax203_eeprom_read(Camera *camera, int address, char *buf, int buf_size) { char cmd[4]; cmd[0] = SPI_EEPROM_READ; cmd[1] = (address >> 16) & 0xff; cmd[2] = (address >> 8) & 0xff; cmd[3] = (address) & 0xff; return ax203_send_eeprom_cmd (camera, 0, cmd, sizeof(cmd), buf, buf_size, 0); } static int ax203_eeprom_program_page(Camera *camera, int address, char *buf, int buf_size, char extra_arg) { char cmd[4]; cmd[0] = SPI_EEPROM_PP; cmd[1] = (address >> 16) & 0xff; cmd[2] = (address >> 8) & 0xff; cmd[3] = (address) & 0xff; return ax203_send_eeprom_cmd (camera, 1, cmd, sizeof(cmd), buf, buf_size, extra_arg); } static int ax203_eeprom_write_enable(Camera *camera) { char cmd = SPI_EEPROM_WREN; return ax203_send_eeprom_cmd (camera, 1, &cmd, 1, NULL, 0, 0); } static int ax203_eeprom_clear_block_protection(Camera *camera) { char cmd[2]; cmd[0] = SPI_EEPROM_WRSR; cmd[1] = 0; return ax203_send_eeprom_cmd (camera, 1, cmd, sizeof(cmd), NULL, 0, 0); } static int ax203_eeprom_erase_4k_sector(Camera *camera, int address) { char cmd[4]; cmd[0] = SPI_EEPROM_ERASE_4K; cmd[1] = (address >> 16) & 0xff; cmd[2] = (address >> 8) & 0xff; cmd[3] = (address) & 0xff; return ax203_send_eeprom_cmd (camera, 1, cmd, sizeof(cmd), NULL, 0, 0); } static int ax203_eeprom_erase_64k_sector(Camera *camera, int address) { char cmd[4]; cmd[0] = SPI_EEPROM_ERASE_64K; cmd[1] = (address >> 16) & 0xff; cmd[2] = (address >> 8) & 0xff; cmd[3] = (address) & 0xff; return ax203_send_eeprom_cmd (camera, 1, cmd, sizeof(cmd), NULL, 0, 0); } static int ax203_eeprom_wait_ready(Camera *camera) { char cmd = SPI_EEPROM_RDSR; /* Read status */ char buf[64]; int count = 0; switch (camera->pl->frame_version) { case AX203_FIRMWARE_3_3_x: case AX203_FIRMWARE_3_4_x: case AX206_FIRMWARE_3_5_x: /* Do as windows does, read the status word 64 times, then check */ count = 64; break; case AX3003_FIRMWARE_3_5_x: /* On the ax3003 contineously reading the status word does not work. */ count = 1; break; } while (1) { CHECK (ax203_send_eeprom_cmd (camera, 0, &cmd, 1, buf, count, 0)) /* We only need to check the last read */ if (!(buf[count - 1] & 0x01)) /* Check write in progress bit */ break; /* No write in progress, done waiting */ } return GP_OK; } static int ax203_read_sector(Camera *camera, int sector, char *buf) { int ret; if (camera->pl->mem_dump) { ret = fseek (camera->pl->mem_dump, sector * SPI_EEPROM_SECTOR_SIZE, SEEK_SET); if (ret) { gp_log (GP_LOG_ERROR, "ax203", "seeking in memdump: %s", strerror(errno)); return GP_ERROR_IO_READ; } ret = fread (buf, 1, SPI_EEPROM_SECTOR_SIZE, camera->pl->mem_dump); if (ret != SPI_EEPROM_SECTOR_SIZE) { if (ret < 0) gp_log (GP_LOG_ERROR, "ax203", "reading memdump: %s", strerror(errno)); else gp_log (GP_LOG_ERROR, "ax203", "short read reading from memdump"); return GP_ERROR_IO_READ; } } else { CHECK (ax203_eeprom_read (camera, sector * SPI_EEPROM_SECTOR_SIZE, buf, SPI_EEPROM_SECTOR_SIZE)) } return GP_OK; } static int ax203_write_sector(Camera *camera, int sector, char *buf) { int ret; if (camera->pl->mem_dump) { ret = fseek (camera->pl->mem_dump, sector * SPI_EEPROM_SECTOR_SIZE, SEEK_SET); if (ret) { gp_log (GP_LOG_ERROR, "ax203", "seeking in memdump: %s", strerror(errno)); return GP_ERROR_IO_WRITE; } ret = fwrite (buf, 1, SPI_EEPROM_SECTOR_SIZE, camera->pl->mem_dump); if (ret != SPI_EEPROM_SECTOR_SIZE) { gp_log (GP_LOG_ERROR, "ax203", "writing memdump: %s", strerror(errno)); return GP_ERROR_IO_WRITE; } } else { int i, base = sector * SPI_EEPROM_SECTOR_SIZE; for (i = 0; i < SPI_EEPROM_SECTOR_SIZE; i += 256) { CHECK (ax203_eeprom_write_enable (camera)) CHECK (ax203_eeprom_program_page (camera, base + i, buf + i, 256, 0)) CHECK (ax203_eeprom_wait_ready (camera)) } } return GP_OK; } static int ax203_erase4k_sector(Camera *camera, int sector) { if (camera->pl->mem_dump) return GP_OK; CHECK (ax203_eeprom_write_enable (camera)) CHECK (ax203_eeprom_erase_4k_sector (camera, sector * SPI_EEPROM_SECTOR_SIZE)) CHECK (ax203_eeprom_wait_ready (camera)) return GP_OK; } static int ax203_erase64k_sector(Camera *camera, int sector) { if (camera->pl->mem_dump) return GP_OK; CHECK (ax203_eeprom_write_enable (camera)) CHECK (ax203_eeprom_erase_64k_sector (camera, sector * SPI_EEPROM_SECTOR_SIZE)) CHECK (ax203_eeprom_wait_ready (camera)) return GP_OK; } static int ax203_check_sector_present(Camera *camera, int sector) { int ret; if ((sector + 1) * SPI_EEPROM_SECTOR_SIZE > camera->pl->mem_size) { gp_log (GP_LOG_ERROR, "ax203", "access beyond end of memory"); return GP_ERROR_CORRUPTED_DATA; } if (camera->pl->sector_is_present[sector]) return GP_OK; ret = ax203_read_sector(camera, sector, camera->pl->mem + sector * SPI_EEPROM_SECTOR_SIZE); if (ret == 0) camera->pl->sector_is_present[sector] = 1; return ret; } static int ax203_read_mem(Camera *camera, int offset, void *buf, int len) { int to_copy, sector = offset / SPI_EEPROM_SECTOR_SIZE; while (len) { CHECK (ax203_check_sector_present (camera, sector)) to_copy = SPI_EEPROM_SECTOR_SIZE - (offset % SPI_EEPROM_SECTOR_SIZE); if (to_copy > len) to_copy = len; memcpy(buf, camera->pl->mem + offset, to_copy); buf += to_copy; len -= to_copy; offset += to_copy; sector++; } return GP_OK; } static int ax203_write_mem(Camera *camera, int offset, void *buf, int len) { int to_copy, sector = offset / SPI_EEPROM_SECTOR_SIZE; while (len) { CHECK (ax203_check_sector_present (camera, sector)) to_copy = SPI_EEPROM_SECTOR_SIZE - (offset % SPI_EEPROM_SECTOR_SIZE); if (to_copy > len) to_copy = len; memcpy(camera->pl->mem + offset, buf, to_copy); camera->pl->sector_dirty[sector] = 1; buf += to_copy; len -= to_copy; offset += to_copy; sector++; } return GP_OK; } /* This function reads the parameter block from the eeprom and: 1) checks some hopefully constant bytes to make sure it is not reading garbage 2) Gets the lcd size from the paramter block (ax203_get_lcd_size seems to result in all frames being detected as being 128x128 pixels). 3) Determines the compression type for v3.4.x frames 4) Determines the start of the ABFS */ static int ax203_read_parameter_block(Camera *camera) { uint8_t buf[32], expect[32]; int i, param_offset = 0, resolution_offset = 0; int compression_offset = -1, abfs_start_offset = 0, expect_size = 0; const int valid_resolutions[][2] = { { 96, 64 }, { 120, 160 }, { 128, 128 }, { 132, 132 }, { 128, 160 }, { 160, 120 }, { 160, 128 }, { 240, 320 }, { 320, 240 }, { } }; const uint8_t expect_33x[] = { 0x13, 0x15, 0, 0, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; const uint8_t expect_34x[] = { 0x13, 0x15, 0, 0, 0, 0, 0, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; const uint8_t expect_35x[] = { 0x00, 0x00, 0, 0, 0, 0, 0, 0xd8 }; switch (camera->pl->frame_version) { case AX203_FIRMWARE_3_3_x: param_offset = 0x50; resolution_offset = 2; abfs_start_offset = 16; memcpy (expect, expect_33x, sizeof(expect_33x)); expect_size = sizeof(expect_33x); /* Byte 4 of the parameter block probably is the compression type like with v3.4.x, but this needs confirmation. */ camera->pl->compression_version = AX203_COMPRESSION_YUV; break; case AX203_FIRMWARE_3_4_x: param_offset = 0x50; resolution_offset = 2; compression_offset = 6; abfs_start_offset = 16; memcpy (expect, expect_34x, sizeof(expect_34x)); expect_size = sizeof(expect_34x); break; case AX206_FIRMWARE_3_5_x: param_offset = 0x20; abfs_start_offset = 2; resolution_offset = 3; memcpy (expect, expect_35x, sizeof(expect_35x)); expect_size = sizeof(expect_35x); /* ax206 + 3.5.x firmware has a fixed compression type */ camera->pl->compression_version = AX206_COMPRESSION_JPEG; break; case AX3003_FIRMWARE_3_5_x: i = ax3003_get_frame_id (camera); if (i < 0) return i; switch (i) { case 0: case 1: camera->pl->width = 320; camera->pl->height = 240; break; default: gp_log (GP_LOG_ERROR, "ax203", "unknown ax3003 frame id: %d", i); return GP_ERROR_MODEL_NOT_FOUND; } i = ax3003_get_abfs_start (camera); if (i < 0) return i; camera->pl->fs_start = i; camera->pl->compression_version = AX3003_COMPRESSION_JPEG; goto verify_parameters; } CHECK (ax203_read_mem (camera, param_offset, buf, sizeof(buf))) switch (camera->pl->frame_version) { case AX203_FIRMWARE_3_3_x: /* 1 byte width / height */ camera->pl->width = buf[resolution_offset ]; camera->pl->height = buf[resolution_offset + 1]; expect[resolution_offset ] = camera->pl->width; expect[resolution_offset + 1] = camera->pl->height; break; case AX203_FIRMWARE_3_4_x: case AX206_FIRMWARE_3_5_x: /* 2 byte little endian width / height */ camera->pl->width = le16atoh (buf + resolution_offset); camera->pl->height = le16atoh (buf + resolution_offset + 2); htole16a(expect + resolution_offset , camera->pl->width); htole16a(expect + resolution_offset + 2, camera->pl->height); break; case AX3003_FIRMWARE_3_5_x: /* Never reached, here to silence a compiler warning */ break; } if (compression_offset != -1) { i = buf[compression_offset]; switch (i) { case 2: camera->pl->compression_version = AX203_COMPRESSION_YUV; break; case 3: camera->pl->compression_version = AX203_COMPRESSION_YUV_DELTA; break; default: gp_log (GP_LOG_ERROR, "ax203", "unknown compression version: %d", i); return GP_ERROR_MODEL_NOT_FOUND; } expect[compression_offset] = i; } i = buf[abfs_start_offset]; camera->pl->fs_start = i * 0x10000; expect[abfs_start_offset] = i; if (memcmp (buf, expect, expect_size)) { gp_log (GP_LOG_ERROR, "ax203", "unexpected contents of parameter block"); return GP_ERROR_MODEL_NOT_FOUND; } verify_parameters: for (i = 0; valid_resolutions[i][0]; i++) if (valid_resolutions[i][0] == camera->pl->width && valid_resolutions[i][1] == camera->pl->height) break; if (!valid_resolutions[i][0]) { gp_log (GP_LOG_ERROR, "ax203", "unknown resolution: %dx%d", camera->pl->width, camera->pl->height); return GP_ERROR_MODEL_NOT_FOUND; } CHECK (ax203_read_mem (camera, camera->pl->fs_start, buf, 4)) if (memcmp (buf, AX203_ABFS_MAGIC, 4)) { gp_log (GP_LOG_ERROR, "ax203", "ABFS magic not found at: %x", camera->pl->fs_start); return GP_ERROR_MODEL_NOT_FOUND; } GP_DEBUG ("lcd size %dx%d, compression ver: %d, fs-start: %x", camera->pl->width, camera->pl->height, camera->pl->compression_version, camera->pl->fs_start); return GP_OK; } static int ax203_check_file_index(Camera *camera, int idx) { int count; if (idx < 0) { gp_log (GP_LOG_ERROR, "ax203", "file index < 0"); return GP_ERROR_BAD_PARAMETERS; } count = ax203_read_filecount (camera); if (count < 0) return count; if (idx >= count) { gp_log (GP_LOG_ERROR, "ax203", "file index beyond end of ABFS"); return GP_ERROR_BAD_PARAMETERS; } return GP_OK; } int ax203_filesize(Camera *camera) { switch (camera->pl->compression_version) { case AX203_COMPRESSION_YUV: return camera->pl->width * camera->pl->height; case AX203_COMPRESSION_YUV_DELTA: return camera->pl->width * camera->pl->height * 3 / 4; case AX206_COMPRESSION_JPEG: case AX3003_COMPRESSION_JPEG: /* Variable size */ return 0; } /* Never reached */ return GP_ERROR_NOT_SUPPORTED; } static int ax203_max_filecount(Camera *camera) { switch (camera->pl->frame_version) { case AX203_FIRMWARE_3_3_x: case AX203_FIRMWARE_3_4_x: return (AX203_ABFS_SIZE - AX203_ABFS_FILE_OFFSET (0)) / 2; case AX206_FIRMWARE_3_5_x: return (AX203_ABFS_SIZE - AX206_ABFS_FILE_OFFSET (0)) / sizeof(struct ax206_v3_5_x_raw_fileinfo); case AX3003_FIRMWARE_3_5_x: return (AX203_ABFS_SIZE - AX3003_ABFS_FILE_OFFSET (0)) / sizeof(struct ax3003_v3_5_x_raw_fileinfo); } /* Never reached */ return GP_ERROR_NOT_SUPPORTED; } static int ax203_read_v3_3_x_v3_4_x_filecount(Camera *camera) { /* The v3.3.x and v3.4.x firmware ABFS keeps a single byte file count at (camera->pl->fs_start + AX203_ABFS_COUNT_OFFSET) However the frame does not seem to care about this. So always return the maximum number of entries the ABFS can contain (and rely on fileinfo.present to figure out how many files there actually are). */ return ax203_max_filecount (camera); } static int ax203_write_v3_3_x_v3_4_x_filecount(Camera *camera, int count) { uint8_t c = count; /* Despite the frame not caring, we do write the filecount just like windows does. */ CHECK (ax203_write_mem (camera, camera->pl->fs_start + AX203_ABFS_COUNT_OFFSET, &c, 1)) return GP_OK; } static int ax203_read_v3_5_x_filecount(Camera *camera) { /* The v3.5.x firmware ABFS does not contain a separate file count, so always return the maximum number of entries it can contain (and rely on fileinfo.present to figure out how many files there actually are). */ return ax203_max_filecount (camera); } static int ax203_write_v3_5_x_filecount(Camera *camera, int count) { /* This is a no-op as the v3.5.x firmware ABFS does not contain a separate file count */ return GP_OK; } static int ax203_read_v3_3_x_v3_4_x_fileinfo(Camera *camera, int idx, struct ax203_fileinfo *fileinfo) { uint8_t buf[2]; CHECK (ax203_read_mem (camera, camera->pl->fs_start + AX203_ABFS_FILE_OFFSET (idx), buf, 2)) /*fileinfo->address = le16atoh (buf) << 8;*/ fileinfo->address = (buf[0] | (buf[1] << 8)) << 8; fileinfo->size = ax203_filesize (camera); fileinfo->present = fileinfo->address? 1 : 0; return GP_OK; } static int ax203_write_v3_3_x_v3_4_x_fileinfo(Camera *camera, int idx, struct ax203_fileinfo *fileinfo) { uint8_t buf[2]; if (fileinfo->address & 0xff) { gp_log (GP_LOG_ERROR, "ax203", "LSB of address is not 0"); return GP_ERROR_BAD_PARAMETERS; } if (!fileinfo->present) fileinfo->address = 0; /*htole16a(buf, fileinfo->address >> 8);*/ buf[0] = (fileinfo->address >> 8) & 0xff; buf[1] = (fileinfo->address >>16) & 0xff; CHECK (ax203_write_mem (camera, camera->pl->fs_start + AX203_ABFS_FILE_OFFSET (idx), buf, 2)) return GP_OK; } static int ax206_read_v3_5_x_fileinfo(Camera *camera, int idx, struct ax203_fileinfo *fileinfo) { struct ax206_v3_5_x_raw_fileinfo raw; CHECK (ax203_read_mem (camera, camera->pl->fs_start + AX206_ABFS_FILE_OFFSET (idx), &raw, sizeof(raw))) fileinfo->present = raw.present == 0x01; fileinfo->address = le32toh (raw.address); fileinfo->size = le16toh (raw.size); return GP_OK; } static int ax206_write_v3_5_x_fileinfo(Camera *camera, int idx, struct ax203_fileinfo *fileinfo) { struct ax206_v3_5_x_raw_fileinfo raw; raw.present = fileinfo->present; raw.address = htole32(fileinfo->address); raw.size = htole16(fileinfo->size); CHECK (ax203_write_mem (camera, camera->pl->fs_start + AX206_ABFS_FILE_OFFSET (idx), &raw, sizeof(raw))) return GP_OK; } static int ax3003_read_v3_5_x_fileinfo(Camera *camera, int idx, struct ax203_fileinfo *fileinfo) { struct ax3003_v3_5_x_raw_fileinfo raw; CHECK (ax203_read_mem (camera, camera->pl->fs_start + AX3003_ABFS_FILE_OFFSET (idx), &raw, sizeof(raw))) if (raw.address == 0xffff || raw.size == 0xffff) { memset(fileinfo, 0, sizeof(*fileinfo)); return GP_OK; } fileinfo->present = raw.address && raw.size; fileinfo->address = be16toh (raw.address) * 0x100; fileinfo->size = be16toh (raw.size) * 0x100; return GP_OK; } static int ax3003_write_v3_5_x_fileinfo(Camera *camera, int idx, struct ax203_fileinfo *fileinfo) { struct ax3003_v3_5_x_raw_fileinfo raw; if (fileinfo->address & 0xff) { gp_log (GP_LOG_ERROR, "ax203", "LSB of address is not 0"); return GP_ERROR_BAD_PARAMETERS; } if (fileinfo->size & 0xff) { gp_log (GP_LOG_ERROR, "ax203", "LSB of size is not 0"); return GP_ERROR_BAD_PARAMETERS; } if (fileinfo->present) { raw.address = htobe16(fileinfo->address / 0x100); raw.size = htobe16(fileinfo->size / 0x100); } else { raw.address = 0; raw.size = 0; } CHECK (ax203_write_mem (camera, camera->pl->fs_start + AX3003_ABFS_FILE_OFFSET (idx), &raw, sizeof(raw))) return GP_OK; } /***************** Begin "public" functions *****************/ int ax203_read_filecount(Camera *camera) { switch (camera->pl->frame_version) { case AX203_FIRMWARE_3_3_x: case AX203_FIRMWARE_3_4_x: return ax203_read_v3_3_x_v3_4_x_filecount (camera); case AX206_FIRMWARE_3_5_x: case AX3003_FIRMWARE_3_5_x: return ax203_read_v3_5_x_filecount (camera);; } /* Never reached */ return GP_ERROR_NOT_SUPPORTED; } static int ax203_update_filecount(Camera *camera) { int i, max, count = 0; /* "Calculate" the real file count */ max = ax203_max_filecount (camera); for (i = 0; i < max; i++) { if (ax203_file_present (camera, i)) count = i + 1; } switch (camera->pl->frame_version) { case AX203_FIRMWARE_3_3_x: case AX203_FIRMWARE_3_4_x: return ax203_write_v3_3_x_v3_4_x_filecount (camera, count); case AX206_FIRMWARE_3_5_x: case AX3003_FIRMWARE_3_5_x: return ax203_write_v3_5_x_filecount (camera, count); } /* Never reached */ return GP_ERROR_NOT_SUPPORTED; } static int ax203_read_fileinfo(Camera *camera, int idx, struct ax203_fileinfo *fileinfo) { CHECK (ax203_check_file_index (camera, idx)) switch (camera->pl->frame_version) { case AX203_FIRMWARE_3_3_x: case AX203_FIRMWARE_3_4_x: return ax203_read_v3_3_x_v3_4_x_fileinfo (camera, idx, fileinfo); case AX206_FIRMWARE_3_5_x: return ax206_read_v3_5_x_fileinfo (camera, idx, fileinfo); case AX3003_FIRMWARE_3_5_x: return ax3003_read_v3_5_x_fileinfo (camera, idx, fileinfo); } /* Never reached */ return GP_ERROR_NOT_SUPPORTED; } static int ax203_write_fileinfo(Camera *camera, int idx, struct ax203_fileinfo *fileinfo) { switch (camera->pl->frame_version) { case AX203_FIRMWARE_3_3_x: case AX203_FIRMWARE_3_4_x: return ax203_write_v3_3_x_v3_4_x_fileinfo (camera, idx, fileinfo); case AX206_FIRMWARE_3_5_x: return ax206_write_v3_5_x_fileinfo (camera, idx, fileinfo); case AX3003_FIRMWARE_3_5_x: return ax3003_write_v3_5_x_fileinfo (camera, idx, fileinfo); } /* Never reached */ return GP_ERROR_NOT_SUPPORTED; } int ax203_file_present(Camera *camera, int idx) { struct ax203_fileinfo fileinfo; CHECK (ax203_read_fileinfo (camera, idx, &fileinfo)) return fileinfo.present; } static int ax203_decode_image(Camera *camera, char *src, int src_size, int **dest) { #ifdef HAVE_LIBGD int ret; unsigned int x, y, width, height, row_skip = 0; unsigned char *components[3]; #ifdef HAVE_LIBJPEG struct jpeg_decompress_struct dinfo; struct jpeg_error_mgr jderr; JSAMPLE row[camera->pl->width * 3]; JSAMPROW row_pointer[1] = { row }; #endif switch (camera->pl->compression_version) { case AX203_COMPRESSION_YUV: ax203_decode_yuv (src, dest, camera->pl->width, camera->pl->height); return GP_OK; case AX203_COMPRESSION_YUV_DELTA: ax203_decode_yuv_delta (src, dest, camera->pl->width, camera->pl->height); return GP_OK; case AX206_COMPRESSION_JPEG: /* Note this uses a modified tinyjpeg which was modified to handle the AX206' custom JPEG format (the AX3003 uses normal JPEG compression). */ if (!camera->pl->jdec) { camera->pl->jdec = tinyjpeg_init (); if (!camera->pl->jdec) return GP_ERROR_NO_MEMORY; } /* Hack for width / heights which are not a multiple of 16 */ if (camera->pl->width % 16 || camera->pl->height % 16) { width = (camera->pl->width + 15) & ~15; height = (camera->pl->height + 15) & ~15; htobe16a(src, width); htobe16a(src + 2, height); row_skip = (width - camera->pl->width) * 3; } ret = tinyjpeg_parse_header (camera->pl->jdec, (unsigned char *)src, src_size); if (ret) { gp_log (GP_LOG_ERROR, "ax203", "Error parsing header: %s", tinyjpeg_get_errorstring (camera->pl->jdec)); return GP_ERROR_CORRUPTED_DATA; } if (!row_skip) { tinyjpeg_get_size (camera->pl->jdec, &width, &height); if ((int)width != camera->pl->width || (int)height != camera->pl->height) { gp_log (GP_LOG_ERROR, "ax203", "Hdr dimensions %ux%u don't match lcd %dx%d", width, height, camera->pl->width, camera->pl->height); return GP_ERROR_CORRUPTED_DATA; } } ret = tinyjpeg_decode (camera->pl->jdec); if (ret) { gp_log (GP_LOG_ERROR, "ax203", "Error decoding JPEG data: %s", tinyjpeg_get_errorstring (camera->pl->jdec)); return GP_ERROR_CORRUPTED_DATA; } tinyjpeg_get_components (camera->pl->jdec, components); for (y = 0; y < camera->pl->height; y++) { for (x = 0; x < camera->pl->width; x++) { dest[y][x] = gdTrueColor (components[0][0], components[0][1], components[0][2]); components[0] += 3; } components[0] += row_skip; } return GP_OK; case AX3003_COMPRESSION_JPEG: #ifdef HAVE_LIBJPEG dinfo.err = jpeg_std_error (&jderr); jpeg_create_decompress (&dinfo); jpeg_mem_src (&dinfo, (unsigned char *)src, src_size); jpeg_read_header (&dinfo, TRUE); jpeg_start_decompress (&dinfo); if (dinfo.output_width != camera->pl->width || dinfo.output_height != camera->pl->height || dinfo.output_components != 3 || dinfo.out_color_space != JCS_RGB) { gp_log (GP_LOG_ERROR, "ax203", "Wrong JPEG header parameters: %dx%d, " "%d components, colorspace: %d", dinfo.output_width, dinfo.output_height, dinfo.output_components, dinfo.out_color_space); return GP_ERROR_CORRUPTED_DATA; } for (y = 0; y < dinfo.output_height; y++) { jpeg_read_scanlines (&dinfo, row_pointer, 1); for (x = 0; x < dinfo.output_width; x++) { dest[y][x] = gdTrueColor (row[x * 3 + 0], row[x * 3 + 1], row[x * 3 + 2]); } } jpeg_finish_decompress (&dinfo); jpeg_destroy_decompress (&dinfo); return GP_OK; #else gp_log(GP_LOG_ERROR,"ax203", "jpeg decompression not supported - no libjpeg during build"); return GP_ERROR_NOT_SUPPORTED; #endif break; } #endif gp_log(GP_LOG_ERROR,"ax203", "GD decompression not supported - no libGD present during build"); /* Never reached */ return GP_ERROR_NOT_SUPPORTED; } /* Returns the number of bytes of dest used or a negative error code */ static int ax203_encode_image(Camera *camera, int **src, char *dest, int dest_size) { #ifdef HAVE_LIBGD int size = ax203_filesize (camera); #ifdef HAVE_LIBJPEG int x, y; struct jpeg_compress_struct cinfo; struct jpeg_error_mgr jcerr; JOCTET *jpeg_dest = NULL; unsigned long jpeg_size = 0; JSAMPLE row[camera->pl->width * 3]; JSAMPROW row_pointer[1] = { row }; #endif if (dest_size < size) return GP_ERROR_FIXED_LIMIT_EXCEEDED; switch (camera->pl->compression_version) { case AX203_COMPRESSION_YUV: ax203_encode_yuv (src, dest, camera->pl->width, camera->pl->height); return size; case AX203_COMPRESSION_YUV_DELTA: ax203_encode_yuv_delta (src, dest, camera->pl->width, camera->pl->height); return size; case AX206_COMPRESSION_JPEG: return ax206_compress_jpeg (camera, src, (uint8_t *)dest, dest_size, camera->pl->width, camera->pl->height); case AX3003_COMPRESSION_JPEG: #ifdef HAVE_LIBJPEG cinfo.err = jpeg_std_error (&jcerr); jpeg_create_compress (&cinfo); jpeg_mem_dest (&cinfo, &jpeg_dest, &jpeg_size); cinfo.image_width = camera->pl->width; cinfo.image_height = camera->pl->height; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; jpeg_set_defaults (&cinfo); jpeg_start_compress (&cinfo, TRUE); for (y = 0; y < cinfo.image_height; y++) { for (x = 0; x < cinfo.image_width; x++) { int p = src[y][x]; row[x * 3 + 0] = gdTrueColorGetRed(p); row[x * 3 + 1] = gdTrueColorGetGreen(p); row[x * 3 + 2] = gdTrueColorGetBlue(p); } jpeg_write_scanlines (&cinfo, row_pointer, 1); } jpeg_finish_compress (&cinfo); jpeg_destroy_compress (&cinfo); if (jpeg_size > dest_size) { free (jpeg_dest); gp_log (GP_LOG_ERROR, "ax203", "JPEG is bigger then buffer"); return GP_ERROR_FIXED_LIMIT_EXCEEDED; } memcpy (dest, jpeg_dest, jpeg_size); free (jpeg_dest); /* Round size up to a multiple of 256 because of ax3003 abfs size granularity. */ return (jpeg_size + 0xff) & ~0xff; #else return GP_ERROR_NOT_SUPPORTED; #endif } /* Never reached */ #endif gp_log(GP_LOG_ERROR,"ax203", "GD decompression not supported - no libGD present during build"); return GP_ERROR_NOT_SUPPORTED; } static int ax203_defrag_memory(Camera *camera) { char **raw_pictures; struct ax203_fileinfo *fileinfo; int i, count, ret = GP_OK; count = ax203_read_filecount (camera); if (count < 0) return count; raw_pictures = calloc (count, sizeof (char *)); fileinfo = calloc (count, sizeof (struct ax203_fileinfo)); if (!raw_pictures || !fileinfo) { free (raw_pictures); free (fileinfo); gp_log (GP_LOG_ERROR, "ax203", "allocating memory"); return GP_ERROR_NO_MEMORY; } /* First read all pictures in raw format */ for (i = 0; i < count; i++) { ret = ax203_read_fileinfo (camera, i, &fileinfo[i]); if (ret < 0) goto cleanup; if (!fileinfo[i].present) continue; ret = ax203_read_raw_file(camera, i, &raw_pictures[i]); if (ret < 0) goto cleanup; } /* Delete all pictures from the frame */ ret = ax203_delete_all (camera); if (ret < 0) goto cleanup; /* An last write them back (in one contineous block) */ for (i = 0; i < count; i++) { if (!fileinfo[i].present) continue; ret = ax203_write_raw_file (camera, i, raw_pictures[i], fileinfo[i].size); if (ret < 0) { gp_log (GP_LOG_ERROR, "ax203", "AAI error writing back images during " "defragmentation some images will be lost!"); break; } } cleanup: for (i = 0; i < count; i++) free (raw_pictures[i]); free (raw_pictures); free (fileinfo); return ret; } int ax203_read_raw_file(Camera *camera, int idx, char **raw) { struct ax203_fileinfo fileinfo; int ret; *raw = NULL; CHECK (ax203_read_fileinfo (camera, idx, &fileinfo)) if (!fileinfo.present) { gp_log (GP_LOG_ERROR, "ax203", "trying to read a deleted file"); return GP_ERROR_BAD_PARAMETERS; } /* Allocate 1 extra byte as tinyjpeg's huffman decoding sometimes reads a few bits more then it needs */ *raw = malloc (fileinfo.size + 1); if (!*raw) { gp_log (GP_LOG_ERROR, "ax203", "allocating memory"); return GP_ERROR_NO_MEMORY; } ret = ax203_read_mem (camera, fileinfo.address, *raw, fileinfo.size); if (ret < 0) { free (*raw); *raw = NULL; return ret; } return fileinfo.size; } int ax203_read_file(Camera *camera, int idx, int **rgb24) { int ret; char *src; ret = ax203_read_raw_file (camera, idx, &src); if (ret < 0) return ret; ret = ax203_decode_image (camera, src, ret + 1, rgb24); free(src); return ret; } /* ax203_write_file() helper functions */ /* The picture table in ABFS does not necessarily lists the pictures in the order they are stored in memory, but when looking for a hole in memory to store a new picture we need a list of used memory blocks in memory order. So we build one here. */ static int ax203_fileinfo_cmp(const void *p1, const void *p2) { const struct ax203_fileinfo *f1 = p1; const struct ax203_fileinfo *f2 = p2; return f1->address - f2->address; } static int ax203_build_used_mem_table(Camera *camera, struct ax203_fileinfo *table) { int i, count, found = 0; struct ax203_fileinfo fileinfo; count = ax203_read_filecount (camera); if (count < 0) return count; /* The beginning of the memory is used by the CD image and stuff */ fileinfo.address = 0; switch (camera->pl->frame_version) { case AX203_FIRMWARE_3_3_x: case AX203_FIRMWARE_3_4_x: fileinfo.size = camera->pl->fs_start + AX203_PICTURE_OFFSET; break; case AX206_FIRMWARE_3_5_x: fileinfo.size = camera->pl->fs_start + AX206_PICTURE_OFFSET; break; case AX3003_FIRMWARE_3_5_x: fileinfo.size = camera->pl->fs_start + AX3003_PICTURE_OFFSET; break; } fileinfo.present = 1; table[found++] = fileinfo; for (i = 0; i < count; i++) { CHECK (ax203_read_fileinfo (camera, i, &fileinfo)) if (!fileinfo.present) continue; table[found++] = fileinfo; } qsort (table, found, sizeof(struct ax203_fileinfo), ax203_fileinfo_cmp); /* Add a last memory used region which starts at the end of memory the size does not matter as this is the last entry. */ switch (camera->pl->frame_version) { case AX203_FIRMWARE_3_3_x: case AX203_FIRMWARE_3_4_x: case AX206_FIRMWARE_3_5_x: fileinfo.address = camera->pl->mem_size; break; case AX3003_FIRMWARE_3_5_x: fileinfo.address = camera->pl->mem_size - AX3003_BL_SIZE; break; } fileinfo.size = 0; fileinfo.present = 1; table[found++] = fileinfo; return found; } /* Find a free slot in the ABFS table to store the fileinfo */ static int ax203_find_free_abfs_slot(Camera *camera) { int i, max; struct ax203_fileinfo fileinfo; max = ax203_max_filecount (camera); for (i = 0; i < max; i++) { CHECK (ax203_read_fileinfo (camera, i, &fileinfo)) if (!fileinfo.present) return i; } gp_log (GP_LOG_ERROR, "ax203", "no free slot in ABFS ??"); return GP_ERROR_NO_SPACE; } int ax203_write_raw_file(Camera *camera, int idx, char *buf, int size) { struct ax203_fileinfo fileinfo; struct ax203_fileinfo used_mem[AX203_ABFS_SIZE / 2]; int i, hole_size, used_mem_count, prev_end, free; retry: used_mem_count = ax203_build_used_mem_table (camera, used_mem); if (used_mem_count < 0) return used_mem_count; /* Try to find a large enough "hole" in the memory */ for (i = 1, free = 0; i < used_mem_count; i++, free += hole_size) { prev_end = used_mem[i - 1].address + used_mem[i - 1].size; hole_size = used_mem[i].address - prev_end; if (hole_size) GP_DEBUG ("found a hole at: %08x, of %d bytes " "(need %d)\n", prev_end, hole_size, size); if (hole_size >= size) { /* bingo we have a large enough hole */ fileinfo.address = prev_end; fileinfo.size = size; fileinfo.present = 1; CHECK (ax203_write_fileinfo (camera, idx, &fileinfo)) CHECK (ax203_update_filecount (camera)) CHECK (ax203_write_mem (camera, fileinfo.address, buf, size)) return GP_OK; } } if (free >= size) { gp_log (GP_LOG_DEBUG, "ax203", "not enough contineous freespace to add file, " "defragmenting memory"); CHECK (ax203_defrag_memory (camera)) goto retry; } gp_log (GP_LOG_ERROR, "ax203", "not enough freespace to add file"); return GP_ERROR_NO_SPACE; } int ax203_write_file(Camera *camera, int **rgb24) { const int buf_size = camera->pl->width * camera->pl->height; char buf[buf_size]; int size, abfs_slot; size = ax203_encode_image (camera, rgb24, buf, buf_size); if (size < 0) return size; abfs_slot = ax203_find_free_abfs_slot (camera); if (abfs_slot < 0) return abfs_slot; CHECK (ax203_write_raw_file (camera, abfs_slot, buf, size)) return GP_OK; } int ax203_delete_file(Camera *camera, int idx) { struct ax203_fileinfo fileinfo; CHECK (ax203_read_fileinfo (camera, idx, &fileinfo)) if (!fileinfo.present) { gp_log (GP_LOG_ERROR, "ax203", "trying to delete an already deleted file"); return GP_ERROR_BAD_PARAMETERS; } fileinfo.present = 0; CHECK (ax203_write_fileinfo (camera, idx, &fileinfo)) CHECK (ax203_update_filecount (camera)) return GP_OK; } int ax203_delete_all(Camera *camera) { char buf[AX203_ABFS_SIZE]; int size, file0_offset = 0; switch (camera->pl->frame_version) { case AX203_FIRMWARE_3_3_x: case AX203_FIRMWARE_3_4_x: file0_offset = AX203_ABFS_FILE_OFFSET (0); break; case AX206_FIRMWARE_3_5_x: file0_offset = AX206_ABFS_FILE_OFFSET (0); break; case AX3003_FIRMWARE_3_5_x: file0_offset = AX3003_ABFS_FILE_OFFSET (0); break; } size = AX203_ABFS_SIZE - file0_offset; memset(buf, 0, size); CHECK (ax203_write_mem (camera, camera->pl->fs_start + file0_offset, buf, size)) CHECK (ax203_update_filecount (camera)) return GP_OK; } /* bss = block start sector */ static int ax203_commit_block_4k(Camera *camera, int bss) { int block_sector_size = SPI_EEPROM_BLOCK_SIZE / SPI_EEPROM_SECTOR_SIZE; int i; for (i = 0; i < block_sector_size; i++) { if (!camera->pl->sector_dirty[bss + i]) continue; CHECK (ax203_erase4k_sector (camera, bss + i)) CHECK (ax203_write_sector (camera, bss + i, camera->pl->mem + (bss + i) * SPI_EEPROM_SECTOR_SIZE)) camera->pl->sector_dirty[bss + i] = 0; } return GP_OK; } static int ax203_commit_block_64k(Camera *camera, int bss) { int block_sector_size = SPI_EEPROM_BLOCK_SIZE / SPI_EEPROM_SECTOR_SIZE; int i; /* Make sure we have read the entire block before erasing it !! */ for (i = 0; i < block_sector_size; i++) CHECK (ax203_check_sector_present (camera, bss + i)) /* Erase the block */ CHECK (ax203_erase64k_sector (camera, bss)) /* And re-program all sectors in the block */ for (i = 0; i < block_sector_size; i++) { CHECK (ax203_write_sector (camera, bss + i, camera->pl->mem + (bss + i) * SPI_EEPROM_SECTOR_SIZE)) camera->pl->sector_dirty[bss + i] = 0; } return GP_OK; } /* The ax3003 and the ax206 with AAI capable eeproms can program 64k at once, this is probably done by special handling inside the firmware. */ static int ax203_commit_block_64k_at_once(Camera *camera, int bss) { int block_sector_size = SPI_EEPROM_BLOCK_SIZE / SPI_EEPROM_SECTOR_SIZE; int i, address = bss * SPI_EEPROM_SECTOR_SIZE; int checksum = 0; char extra_arg = 0; /* The ax206 (and we assume the same applies for ax203, untested!): 1) Needs the last byte of the scsi cmd to be 2 to enable 64k pp 2) Has an extra checksum function, which we might as well use. */ if (camera->pl->frame_version != AX3003_FIRMWARE_3_5_x) { extra_arg = 2; checksum = 1; } /* Make sure we have read the entire block before erasing it !! */ for (i = 0; i < block_sector_size; i++) CHECK (ax203_check_sector_present (camera, bss + i)) if (!camera->pl->block_protection_removed) { CHECK (ax203_eeprom_write_enable (camera)) CHECK (ax203_eeprom_clear_block_protection (camera)) CHECK (ax203_eeprom_wait_ready (camera)) camera->pl->block_protection_removed = 1; } /* Erase the block */ CHECK (ax203_erase64k_sector (camera, bss)) /* program the block in one large 64k page write */ CHECK (ax203_eeprom_write_enable (camera)) CHECK (ax203_eeprom_program_page (camera, address, camera->pl->mem + address, SPI_EEPROM_BLOCK_SIZE, extra_arg)) CHECK (ax203_eeprom_wait_ready (camera)) /* and ask the device to verify the write with a checksum */ if (checksum) { checksum = 0; for (i = address; i < (address + SPI_EEPROM_BLOCK_SIZE); i++) checksum += ((uint8_t *)camera->pl->mem)[i]; checksum &= 0xffff; i = ax203_get_checksum(camera, address, SPI_EEPROM_BLOCK_SIZE); if (i < 0) return i; if (i != checksum) { gp_log (GP_LOG_ERROR, "ax203", "checksum mismatch after programming " "expected %04x, got %04x\n", checksum, i); return GP_ERROR_IO; } } for (i = 0; i < block_sector_size; i++) camera->pl->sector_dirty[bss + i] = 0; return GP_OK; } int ax203_commit(Camera *camera) { int i, j; int mem_sector_size = camera->pl->mem_size / SPI_EEPROM_SECTOR_SIZE; int block_sector_size = SPI_EEPROM_BLOCK_SIZE / SPI_EEPROM_SECTOR_SIZE; int dirty_sectors; /* We first check each 64k block for dirty sectors. If the block contains dirty sectors, decide wether to use 4k sector erase commands (if the eeprom supports it), or to erase and reprogram the entire block */ for (i = 0; i < mem_sector_size; i += block_sector_size) { dirty_sectors = 0; for (j = 0; j < block_sector_size; j++) if (camera->pl->sector_dirty[i + j]) dirty_sectors++; /* If we have no dirty sectors in this block continue */ if (!dirty_sectors) continue; if (camera->pl->pp_64k) CHECK (ax203_commit_block_64k_at_once (camera, i)) /* There are 16 4k sectors per 64k block, when we need to program 12 or more sectors, programming the entire block becomes faster */ else if (dirty_sectors < 12 && camera->pl->has_4k_sectors) CHECK (ax203_commit_block_4k (camera, i)) else CHECK (ax203_commit_block_64k (camera, i)) } return GP_OK; } static int ax203_init(Camera *camera) { GP_DEBUG ("ax203_init called"); camera->pl->mem = malloc(camera->pl->mem_size); if (!camera->pl->mem) return GP_ERROR_NO_MEMORY; CHECK (ax203_read_parameter_block (camera)) if ((camera->pl->width % 4) || (camera->pl->height % 4)) { gp_log (GP_LOG_ERROR, "ax203", "lcd width and height must be a multiple of 4"); return GP_ERROR_IO; } return GP_OK; } static void ax203_exit(Camera *camera) { if (camera->pl->jdec) { tinyjpeg_free (camera->pl->jdec); camera->pl->jdec = NULL; } free (camera->pl->mem); camera->pl->mem = NULL; } int ax203_open_device(Camera *camera) { char buf[64]; uint32_t id; int i; CHECK (ax203_get_version (camera, buf)) GP_DEBUG ("Appotech ax203 picframe firmware version: %s", buf); /* Not sure if this is necessary, but the windows software does it */ CHECK (ax203_eeprom_release_from_deep_powerdown (camera)) CHECK (ax203_eeprom_device_identification (camera, buf)) /*id = le32atoh((uint8_t *)buf);*/ id = (uint8_t)buf[0] | ((uint8_t)buf[1] << 8) | ((uint8_t)buf[2] << 16) | ((uint8_t)buf[3] << 24); for (i = 0; ax203_eeprom_info[i].name; i++) { if (ax203_eeprom_info[i].id == id) break; } if (!ax203_eeprom_info[i].name) { gp_log (GP_LOG_ERROR, "ax203", "unknown eeprom id: %08x", id); return GP_ERROR_MODEL_NOT_FOUND; } camera->pl->mem_size = ax203_eeprom_info[i].mem_size; camera->pl->has_4k_sectors = ax203_eeprom_info[i].has_4k_sectors; camera->pl->pp_64k = ax203_eeprom_info[i].pp_64k; if (camera->pl->frame_version == AX3003_FIRMWARE_3_5_x) camera->pl->pp_64k = 1; GP_DEBUG ( "%s EEPROM found, capacity: %d, has 4k sectors: %d, pp_64k %d", ax203_eeprom_info[i].name, camera->pl->mem_size, camera->pl->has_4k_sectors, camera->pl->pp_64k); return ax203_init (camera); } int ax203_open_dump(Camera *camera, const char *dump) { camera->pl->mem_dump = fopen(dump, "r+"); if (!camera->pl->mem_dump) { gp_log (GP_LOG_ERROR, "ax203", "opening memdump file: %s: %s", dump, strerror(errno)); return GP_ERROR_IO_INIT; } if (fseek (camera->pl->mem_dump, 0, SEEK_END)) { gp_log (GP_LOG_ERROR, "ax203", "seeking memdump file: %s: %s", dump, strerror(errno)); return GP_ERROR_IO_INIT; } camera->pl->mem_size = ftell (camera->pl->mem_dump); camera->pl->has_4k_sectors = 1; return ax203_init (camera); } void ax203_close(Camera *camera) { ax203_exit (camera); if (camera->pl->mem_dump) { fclose (camera->pl->mem_dump); camera->pl->mem_dump = NULL; } } int ax203_get_mem_size(Camera *camera) { return camera->pl->mem_size; } int ax203_get_free_mem_size(Camera *camera) { struct ax203_fileinfo used_mem[AX203_ABFS_SIZE / 2]; int i, used_mem_count, prev_end, free = 0; used_mem_count = ax203_build_used_mem_table (camera, used_mem); if (used_mem_count < 0) return used_mem_count; /* Add the size of all holes in memory together */ for (i = 1; i < used_mem_count; i++) { prev_end = used_mem[i - 1].address + used_mem[i - 1].size; free += used_mem[i].address - prev_end; } return free; } libgphoto2-2.5.9/camlibs/ax203/tinyjpeg.h0000644000175000001440000000511712561423351014774 00000000000000/* * Small jpeg decoder library (header file) * * *** NOTE: This is a modified version to deal with the ax203 "JPEG" fmt * *** This version can not decompress regular JPEG files, see * *** README.ax203-compression for details * * Copyright (c) 2006, Luc Saillard * * ax203 modifications: * Copyright (c) 2010, Hans de Goede * * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * - Neither the name of the author nor the names of its contributors may be * used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * */ #ifndef __JPEGDEC_H__ #define __JPEGDEC_H__ #ifdef __cplusplus extern "C" { #endif struct jdec_private; struct jdec_private *tinyjpeg_init(void); void tinyjpeg_free(struct jdec_private *priv); int tinyjpeg_parse_header(struct jdec_private *priv, const unsigned char *buf, unsigned int size); int tinyjpeg_decode(struct jdec_private *priv); const char *tinyjpeg_get_errorstring(struct jdec_private *priv); void tinyjpeg_get_size(struct jdec_private *priv, unsigned int *width, unsigned int *height); int tinyjpeg_get_components(struct jdec_private *priv, unsigned char **components); int tinyjpeg_set_components(struct jdec_private *priv, unsigned char **components, unsigned int ncomponents); #ifdef __cplusplus } #endif #endif libgphoto2-2.5.9/camlibs/ax203/Makefile-files0000644000175000001440000000114312610415524015523 00000000000000EXTRA_DIST += ax203/README.ax203-compression ax203/README.ax203 camlibdoc_DATA += ax203/README.ax203-compression ax203/README.ax203 EXTRA_LTLIBRARIES += ax203.la ax203_la_SOURCES = ax203/library.c ax203/ax203.c ax203/ax203.h ax203/ax203_decode_yuv.c ax203/ax203_decode_yuv_delta.c ax203/ax203_compress_jpeg.c ax203/jpeg_memsrcdest.h ax203/jpeg_memsrcdest.c ax203/tinyjpeg.c ax203/tinyjpeg.h ax203/tinyjpeg-internal.h ax203/jidctflt.c ax203_la_LDFLAGS = $(camlib_ldflags) ax203_la_DEPENDENCIES = $(camlib_dependencies) ax203_la_LIBADD = $(camlib_libadd) @LIBGD_LIBS@ @LIBJPEG@ ax203_la_CFLAGS = @LIBGD_CFLAGS@ libgphoto2-2.5.9/camlibs/ax203/README.ax203-compression0000644000175000001440000004144212561423351017046 00000000000000History of the reverse engineering of the ax203 compression ----------------------------------------------------------- There are 4 (known) different compression algorithms: YUV This algorithm uses a simple YUV format, with the UV members subsampled at a 2x2 resolution. It uses 5 bits for the Y values and 6 bits for the U and V values, cramming 4 pixels into 4 bytes. This is used with firmware v3.3.x (usb-id 1908:1315) and v3.4.x frames (usb-id 1908:1320) YUV-DELTA This version uses a less simple YUV format, it still subsamples UV at a 2x2 resolution. It then further uses a delta compression to store 4 values into 2 bytes. Data is stored in to 4x4 pixels block, Using 6 x 2 bytes, 4 x 4 Y pixels + 4 U and 4 V pixels. This is used with firmware v3.3.x (usb-id 1908:1315) and v3.4.x frames (usb-id 1908:1320) JPEG (ax3003) Regular JPEG JPEG (ax206) Uses a JPEG derived format reverse engineering this one was a challenge, see below for the full story. This is used with ax206 based firmware v3.5.x frames (usb-id 1908:0102) After some failed attempts by me (Hans de Goede), I asked help from Bertrik Sikken with reverse engineering the JPEG compression. He went the route of disassembling the windows binaries for uploading pictures, and wrote an algorithm description of the decompression on the picframe wiki: http://picframe.spritesserver.nl/wiki/index.php/ImageEncodingAx206 A copy of this page is included below. I used this description to write decompression code. For the decompression code I started with tinyjpeg, which with I'm familiar from my libv4l work. The ax203 camlib contains a modified tinyjpeg copy which was modified to work with ax203's JPEG flavor. Tinyjpeg is: /* * Small jpeg decoder library * * Copyright (c) 2006, Luc Saillard * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * - Neither the name of the author nor the names of its contributors may be * used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * */ Note that tinyjpeg includes jidctflt.c from libjpeg, see below for libjpeg's copyright info. Once I had working decompression code I needed to write compression code, as tinyjpeg does not do compression I turned to libjpeg. I did not want to include a modified libjpeg and luckily with some tricks it was not needed to include libjpeg code other then jpeg_memsrcdest.c, which is not part of the standard libjpeg distribution. This code is: /* * jpeg_memsrcdest.c and jidctflt.c * * Copyright (C) 1994-1998, Thomas G. Lane. * This file is part of the Independent JPEG Group's software. * * The authors make NO WARRANTY or representation, either express or implied, * with respect to this software, its quality, accuracy, merchantability, or * fitness for a particular purpose. This software is provided "AS IS", and you, * its user, assume the entire risk as to its quality and accuracy. * * This software is copyright (C) 1991-1998, Thomas G. Lane. * All Rights Reserved except as specified below. * * Permission is hereby granted to use, copy, modify, and distribute this * software (or portions thereof) for any purpose, without fee, subject to these * conditions: * (1) If any part of the source code for this software is distributed, then this * README file must be included, with this copyright and no-warranty notice * unaltered; and any additions, deletions, or changes to the original files * must be clearly indicated in accompanying documentation. * (2) If only executable code is distributed, then the accompanying * documentation must state that "this software is based in part on the work of * the Independent JPEG Group". * (3) Permission for use of this software is granted only if the user accepts * full responsibility for any undesirable consequences; the authors accept * NO LIABILITY for damages of any kind. * * These conditions apply to any software derived from or based on the IJG code, * not just to the unmodified library. If you use our work, you ought to * acknowledge us. * * Permission is NOT granted for the use of any IJG author's name or company name * in advertising or publicity relating to this software or products derived from * it. This software may be referred to only as "the Independent JPEG Group's * software". * * We specifically permit and encourage the use of this software as the basis of * commercial products, provided that all warranty or liability claims are * assumed by the product vendor. */ Getting the JPEG compression working was not the end of the story, after this I could create .dpf files which the windows software would read. But the files had a "mystery" block in them between the 16 byte header and the quantisation tables, and the picframe does not grok the files without the mystery block containing the proper data. It turns out this mystery block contains an 8 byte info block per MCU which makes it possible to start decoding with a random MCU, rather then needing to do the decode linearly. This way the picture frame can do transition effects. The info in each MCU info block consists of last DC vals for the 3 components and the offset in the huffman bitstream where the data for this block starts. For more info so the dump of the wiki page below. Below is a dump of: http://picframe.spritesserver.nl/wiki/index.php/ImageEncodingAx206 Made on 30 March 2010. Contents • 1 Compressed image format â–¡ 1.1 Introduction â–¡ 1.2 Image format ☆ 1.2.1 Header ☆ 1.2.2 MCU info block ☆ 1.2.3 DQT table ☆ 1.2.4 DHT table ☆ 1.2.5 Entropy coded data Compressed image format This page describes the currently known information about the compression of image files used in pictureframes using the ax206 chip. Introduction The ax206 chip stores images in a JPEG-like format, but with several modifications and/or parts missing. Images also contain some kind of thumbnail image. To understand the information on this page, it is recommended to have a basic understanding of JPEG compression. Image format The image file seems to contain the following parts: • a 16-byte header • a small, low-res version of the image in a kind of raw format (color space is unknown, but likely YCbCr) • a JPEG DQT table (but without the DQT marker) containing two JPEG quantisation tables, one for luma and one for chroma • a JPEG DHT table (but without the DHT marker) containing four huffman tables (combinations of luma/chroma, DC/AC) • the entropy coded JPEG data Although the encoding is very much like JPEG, there are no JPEG chunk markers at all. Header The image header is contained in the first 16 bytes. Some of the fields in the header can be related to values from the JPEG specification. The table below shows all known fields: ┌───────┬─────────┬───────────────────────────────────────────────────────────┠│ │ Related │ │ │ Byte │ JPEG │ Meaning │ │ │ field │ │ ├───────┼─────────┼───────────────────────────────────────────────────────────┤ │0x00/ │SOF: X │Image width, encoded as big-endian │ │0x01 │ │ │ ├───────┼─────────┼───────────────────────────────────────────────────────────┤ │0x02/ │SOF: Y │Image height, encoded as big-endian │ │0x03 │ │ │ ├───────┼─────────┼───────────────────────────────────────────────────────────┤ │ │SOF: Hi/ │"Resolution" byte, 0 for images without sub-sampling of the│ │0x04 │Vi │color components, 3 for images that use sub-sampling of the│ │ │ │color components │ ├───────┼─────────┼───────────────────────────────────────────────────────────┤ │0x05/ │ │Three numbers, each indicating which quantisation table (0 │ │0x06/ │DQT: Tq │or 1) should be used for which component (Y, Cb, Cr) │ │0x07 │ │ │ ├───────┼─────────┼───────────────────────────────────────────────────────────┤ │0x08/ │ │Three numbers, each indicating which DC huffman table (0 or│ │0x09/ │SOS: Tdj │1) should be used for which component (Y, Cb, Cr) │ │0x0A │ │ │ ├───────┼─────────┼───────────────────────────────────────────────────────────┤ │0x08/ │ │Three numbers, each indicating which AC huffman table (0 or│ │0x09/ │SOS: Taj │1) should be used for which component (Y, Cb, Cr) │ │0x0A │ │ │ ├───────┼─────────┼───────────────────────────────────────────────────────────┤ │0x0E/ │Unknown │Unknown │ │0x0F │ │ │ └───────┴─────────┴───────────────────────────────────────────────────────────┘ MCU info block Immediately after the header there is an MCU info block, this block contains 8 bytes per MCU which makes it possible to start decoding with a random MCU, rather then needing to do the decode linearly. This way the picture frame can do transition effects. The size of this block depends on the number of MCU's and thus on the "resolution" byte 0x04 from the header. For a resolution value of 0x00, the size (in bytes) is width * height / 8. For a resolution value of 0x03, the size is width * height / 32. The info in each MCU info block consists of last DC vals for the 3 components and the location in the huffman bitstream where the data for this block starts. The way the location in the huffman bitstream is coded is, erm, rather interesting. The contents of this field of the per MCU info is an offset to add to the start of the MCU info block. An example to make things more clear. Lets say the huffman compressed data for the 4th MCU starts at location 3066 (decimal), the information block for the 4th MCU starts at offset 16 + 3 * 8 = 40 (decimal). So the contents of the field coding were the huffman compressed data for the 4th MCU starts is 3066 - 40 = 3026. So say that the 5th MCU starts 5 bytes later (the 4th one compressed well), then the field coding were the huffman compressed data starts would contain 3071 - 48 = 3023. Yes this is a bit weird, but it is how it is. ┌─────────┬───────────────────────────────────────────────────────────────────┠│ Offset │ Meaning │ ├─────────┼───────────────────────────────────────────────────────────────────┤ │0x00-0x01│Litte Endian 16 bit word storing last DC val for the Y channel │ ├─────────┼───────────────────────────────────────────────────────────────────┤ │0x02-0x03│Litte Endian 16 bit word storing last DC val for the Cb channel │ ├─────────┼───────────────────────────────────────────────────────────────────┤ │0x04-0x05│Litte Endian 16 bit word storing last DC val for the Cr channel │ ├─────────┼───────────────────────────────────────────────────────────────────┤ │ │Litte Endian 16 bit word storing the offset into the image, from │ │0x06-0x07│the start of this info block! Where the huffman data for this MCU │ │ │starts │ └─────────┴───────────────────────────────────────────────────────────────────┘ DQT table This table is basically a standard JPEG DQT table, but it seems to be missing its 0xFFDB marker at the start. DHT table This table is basically a standard JPEG DHT table, but it seems to be missing its 0xFFC4 marker at the start. Entropy coded data This seems to be standard huffman encoded coefficient data, with the following exceptions: • there are no stuffing bytes after 0xFF bytes • after each JPEG MCU (minimum coded unit), the next MCU seems to start at the next byte-aligned position in the stream • there is no end-of-image JPEG marker The order of components (Y, Cb, Cr) coded in the stream depends on the resolution byte from the header. • For resolution value 0x00, they seem to be interleaved in the following order: chroma1, chroma2, luma. • For resolution value 0x03, they seem to be interleaved in the following order: chroma1, chroma2, luma, luma, luma, luma. The two chroma blocks are sub-sampled by a factor 2 in this case (and therefore encode for a 16x16 pixel area), the luma blocks are not sub-sampled (so that's why there are 4 blocks of 8x8 pixels to cover the same 16x16 pixel area). Retrieved from "http://picframe.spritesserver.nl/wiki/index.php/ ImageEncodingAx206" Powered by MediaWiki GNU Free Documentation License 1.2 • This page was last modified 14:09, 30 March 2010. • This page has been accessed 29 times. • Content is available under GNU Free Documentation License 1.2. libgphoto2-2.5.9/camlibs/ax203/jpeg_memsrcdest.c0000644000175000001440000002226412561423351016313 00000000000000/* * memsrc.c * * Copyright (C) 1994-1996, Thomas G. Lane. * This file is part of the Independent JPEG Group's software. * For conditions of distribution and use, see the accompanying README file. * * This file contains decompression data source routines for the case of * reading JPEG data from a memory buffer that is preloaded with the entire * JPEG file. This would not seem especially useful at first sight, but * a number of people have asked for it. * This is really just a stripped-down version of jdatasrc.c. Comparison * of this code with jdatasrc.c may be helpful in seeing how to make * custom source managers for other purposes. */ /* this is not a core library module, so it doesn't define JPEG_INTERNALS */ #include "config.h" #include #include #ifdef HAVE_LIBJPEG #include #include #include "jpeg_memsrcdest.h" /* libjpeg8 and later come with their own (API compatible) memory source and dest */ #if JPEG_LIB_VERSION < 80 /* Expanded data source object for memory input */ typedef struct { struct jpeg_source_mgr pub; /* public fields */ JOCTET eoi_buffer[2]; /* a place to put a dummy EOI */ } my_source_mgr; typedef my_source_mgr * my_src_ptr; /* * Initialize source --- called by jpeg_read_header * before any data is actually read. */ METHODDEF(void) init_source (j_decompress_ptr cinfo) { /* No work, since jpeg_mem_src set up the buffer pointer and count. * Indeed, if we want to read multiple JPEG images from one buffer, * this *must* not do anything to the pointer. */ } /* * Fill the input buffer --- called whenever buffer is emptied. * * In this application, this routine should never be called; if it is called, * the decompressor has overrun the end of the input buffer, implying we * supplied an incomplete or corrupt JPEG datastream. A simple error exit * might be the most appropriate response. * * But what we choose to do in this code is to supply dummy EOI markers * in order to force the decompressor to finish processing and supply * some sort of output image, no matter how corrupted. */ METHODDEF(boolean) fill_input_buffer (j_decompress_ptr cinfo) { my_src_ptr src = (my_src_ptr) cinfo->src; WARNMS(cinfo, JWRN_JPEG_EOF); /* Create a fake EOI marker */ src->eoi_buffer[0] = (JOCTET) 0xFF; src->eoi_buffer[1] = (JOCTET) JPEG_EOI; src->pub.next_input_byte = src->eoi_buffer; src->pub.bytes_in_buffer = 2; return TRUE; } /* * Skip data --- used to skip over a potentially large amount of * uninteresting data (such as an APPn marker). * * If we overrun the end of the buffer, we let fill_input_buffer deal with * it. An extremely large skip could cause some time-wasting here, but * it really isn't supposed to happen ... and the decompressor will never * skip more than 64K anyway. */ METHODDEF(void) skip_input_data (j_decompress_ptr cinfo, long num_bytes) { my_src_ptr src = (my_src_ptr) cinfo->src; if (num_bytes > 0) { while (num_bytes > (long) src->pub.bytes_in_buffer) { num_bytes -= (long) src->pub.bytes_in_buffer; (void) fill_input_buffer(cinfo); /* note we assume that fill_input_buffer will never * return FALSE, so suspension need not be handled. */ } src->pub.next_input_byte += (size_t) num_bytes; src->pub.bytes_in_buffer -= (size_t) num_bytes; } } /* * An additional method that can be provided by data source modules is the * resync_to_restart method for error recovery in the presence of RST markers. * For the moment, this source module just uses the default resync method * provided by the JPEG library. That method assumes that no backtracking * is possible. */ /* * Terminate source --- called by jpeg_finish_decompress * after all data has been read. Often a no-op. * * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding * application must deal with any cleanup that should happen even * for error exit. */ METHODDEF(void) term_source (j_decompress_ptr cinfo) { /* no work necessary here */ } /* * Prepare for input from a memory buffer. */ GLOBAL(void) jpeg_mem_src (j_decompress_ptr cinfo, unsigned char * buffer, unsigned long bufsize) { my_src_ptr src; /* The source object is made permanent so that a series of JPEG images * can be read from a single buffer by calling jpeg_mem_src * only before the first one. * This makes it unsafe to use this manager and a different source * manager serially with the same JPEG object. Caveat programmer. */ if (cinfo->src == NULL) { /* first time for this JPEG object? */ cinfo->src = (struct jpeg_source_mgr *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(my_source_mgr)); } src = (my_src_ptr) cinfo->src; src->pub.init_source = init_source; src->pub.fill_input_buffer = fill_input_buffer; src->pub.skip_input_data = skip_input_data; src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */ src->pub.term_source = term_source; src->pub.next_input_byte = buffer; src->pub.bytes_in_buffer = bufsize; } /* Memory destination source modelled after Thomas G. Lane's memory source support and jdatadst.c Copyright (C) 2010, Hans de Goede This code may be used under the same conditions as Thomas G. Lane's memory source (see the copyright header at the top of this file). */ typedef struct { struct jpeg_destination_mgr pub; /* public fields */ JOCTET **buffer; /* start of buffer */ unsigned long buf_size, *outsize; } my_destination_mgr; typedef my_destination_mgr * my_dest_ptr; #define OUTPUT_BUF_SIZE 32768 /* choose an efficiently fwrite'able size */ /* * Initialize destination --- called by jpeg_start_compress * before any data is actually written. */ METHODDEF(void) init_destination (j_compress_ptr cinfo) { /* No work, since jpeg_mem_dest set up the buffer pointer and count. * Indeed, if we want to write multiple JPEG images to one buffer, * this *must* not do anything to the pointer. */ } /* * Empty the output buffer --- called whenever buffer fills up. * * In typical applications, this should write the entire output buffer * (ignoring the current state of next_output_byte & free_in_buffer), * reset the pointer & count to the start of the buffer, and return TRUE * indicating that the buffer has been dumped. * * In applications that need to be able to suspend compression due to output * overrun, a FALSE return indicates that the buffer cannot be emptied now. * In this situation, the compressor will return to its caller (possibly with * an indication that it has not accepted all the supplied scanlines). The * application should resume compression after it has made more room in the * output buffer. Note that there are substantial restrictions on the use of * suspension --- see the documentation. * * When suspending, the compressor will back up to a convenient restart point * (typically the start of the current MCU). next_output_byte & free_in_buffer * indicate where the restart point will be if the current call returns FALSE. * Data beyond this point will be regenerated after resumption, so do not * write it out when emptying the buffer externally. */ METHODDEF(boolean) empty_output_buffer (j_compress_ptr cinfo) { my_dest_ptr dest = (my_dest_ptr) cinfo->dest; *dest->buffer = realloc (*dest->buffer, dest->buf_size + OUTPUT_BUF_SIZE); if (!*dest->buffer) ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 0); dest->pub.next_output_byte = *dest->buffer + dest->buf_size; dest->pub.free_in_buffer = OUTPUT_BUF_SIZE; dest->buf_size += OUTPUT_BUF_SIZE; return TRUE; } /* * Terminate destination --- called by jpeg_finish_compress * after all data has been written. Usually needs to flush buffer. * * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding * application must deal with any cleanup that should happen even * for error exit. */ METHODDEF(void) term_destination (j_compress_ptr cinfo) { my_dest_ptr dest = (my_dest_ptr) cinfo->dest; *dest->outsize = dest->buf_size - dest->pub.free_in_buffer; } GLOBAL(void) jpeg_mem_dest (j_compress_ptr cinfo, unsigned char ** outbuffer, unsigned long * outsize) { my_dest_ptr dest; /* The destination object is made permanent so that multiple JPEG images * can be written to the same file without re-executing jpeg_stdio_dest. * This makes it dangerous to use this manager and a different destination * manager serially with the same JPEG object, because their private object * sizes may be different. Caveat programmer. */ if (cinfo->dest == NULL) { /* first time for this JPEG object? */ cinfo->dest = (struct jpeg_destination_mgr *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(my_destination_mgr)); } dest = (my_dest_ptr) cinfo->dest; dest->pub.init_destination = init_destination; dest->pub.empty_output_buffer = empty_output_buffer; dest->pub.term_destination = term_destination; dest->buffer = outbuffer; dest->buf_size = *outsize; dest->outsize = outsize; if (*dest->buffer == NULL || dest->buf_size == 0) { /* Allocate initial buffer */ *dest->buffer = malloc(OUTPUT_BUF_SIZE); if (*dest->buffer == NULL) ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 10); dest->buf_size = OUTPUT_BUF_SIZE; } dest->pub.next_output_byte = *dest->buffer; dest->pub.free_in_buffer = dest->buf_size; } #endif #endif libgphoto2-2.5.9/camlibs/ax203/jpeg_memsrcdest.h0000644000175000001440000000032412561423351016311 00000000000000#include void jpeg_mem_src (j_decompress_ptr cinfo, unsigned char * buffer, unsigned long bufsize); void jpeg_mem_dest (j_compress_ptr cinfo, unsigned char ** outbuffer, unsigned long * outsize); libgphoto2-2.5.9/camlibs/ax203/ax203_decode_yuv.c0000644000175000001440000001406312610415524016177 00000000000000/* Appotech ax203 picframe decompression and compression code * For ax203 picture frames with firmware version 3.3.x * * Copyright (c) 2010 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 STANDALONE_MAIN #include #include <_stdint.h> #include #include #include #include #else #include "config.h" #ifdef HAVE_LIBGD #include #endif #include "ax203.h" #endif #define CLAMP_U8(x) (((x) > 255) ? 255 : (((x) < 0) ? 0 : (x))) #ifdef HAVE_LIBGD static void ax203_decode_block_yuv(char *src, int **dest, int dest_x, int dest_y) { int x, y, r, g, b; uint8_t Y[4]; int8_t U, V; /* The compressed data consists of blocks of 2x2 pixels, each encoded in 4 bytes The highest 5 bits of each byte encode an Y value, the lowest 3 bits of the first 2 bytes are combined to form U, and of the last 2 bytes to form V */ for (x = 0; x < 4; x++) Y[x] = src[x] & 0xF8; U = ((src[0] & 7) << 5) | ((src[1] & 7) << 2); V = ((src[2] & 7) << 5) | ((src[3] & 7) << 2); /* The Y components are for a 2x2 pixels block like this: 1 2 3 4 */ for (y = 0; y < 2; y ++) { for (x = 0; x < 2; x ++) { r = 1.164 * (Y[y * 2 + x] - 16) + 1.596 * V; g = 1.164 * (Y[y * 2 + x] - 16) - 0.391 * U - 0.813 * V; b = 1.164 * (Y[y * 2 + x] - 16) + 2.018 * U; dest[dest_y + y][dest_x + x] = gdTrueColor (CLAMP_U8 (r), CLAMP_U8 (g), CLAMP_U8 (b)); } } } void ax203_decode_yuv(char *src, int **dest, int width, int height) { int x, y; for (y = 0; y < height; y += 2) { for (x = 0; x < width; x += 2) { ax203_decode_block_yuv(src, dest, x, y); src += 4; } } } static void ax203_encode_block_yuv(int **src, int src_x, int src_y, char *dest) { uint8_t Y[4]; int8_t U, V; int x, y; /* Step 1 convert to YUV */ for (y = 0; y < 2; y ++) { for (x = 0; x < 2; x ++) { int p = src[src_y + y][src_x + x]; Y[y * 2 + x] = gdTrueColorGetRed(p) * 0.257 + gdTrueColorGetGreen(p) * 0.504 + gdTrueColorGetBlue(p) * 0.098 + 16; } } { int p1 = src[src_y ][src_x ]; int p2 = src[src_y ][src_x + 1]; int p3 = src[src_y + 1][src_x ]; int p4 = src[src_y + 1][src_x + 1]; int r = (gdTrueColorGetRed(p1) + gdTrueColorGetRed(p2) + gdTrueColorGetRed(p3) + gdTrueColorGetRed(p4)) / 4; int g = (gdTrueColorGetGreen(p1) + gdTrueColorGetGreen(p2) + gdTrueColorGetGreen(p3) + gdTrueColorGetGreen(p4)) / 4; int b = (gdTrueColorGetBlue(p1) + gdTrueColorGetBlue(p2) + gdTrueColorGetBlue(p3) + gdTrueColorGetBlue(p4)) / 4; U = 0.439 * b - 0.291 * g - 0.148 * r; V = 0.439 * r - 0.368 * g - 0.071 * b; } for (x = 0; x < 4; x++) dest[x] = Y[x] & 0xf8; dest[0] |= (U & 0xe0) >> 5; dest[1] |= (U & 0x1c) >> 2; dest[2] |= (V & 0xe0) >> 5; dest[3] |= (V & 0x1c) >> 2; } void ax203_encode_yuv(int **src, char *dest, int width, int height) { int x, y; for (y = 0; y < height; y += 2) { for (x = 0; x < width; x += 2) { ax203_encode_block_yuv(src, x, y, dest); dest += 4; } } } #endif #ifdef STANDALONE_MAIN int main(int argc, char *argv[]) { FILE *fin = NULL; FILE *fout = NULL; gdImagePtr im_in = NULL, im = NULL; char *buf = NULL; int bufsize, ret = 0; /* FIXME get these from the cmdline */ int width = 128, height = 128; if (argc != 4) { fprintf (stderr, "Usage: %s <-d|-c> \n", argv[0]); ret = 1; goto exit; } fin = fopen(argv[2], "r"); if (!fin) { fprintf (stderr, "Error opening: %s: %s\n", argv[2], strerror(errno)); ret = 1; goto exit; } fout = fopen(argv[3], "w"); if (!fout) { fprintf (stderr, "Error opening: %s: %s\n", argv[3], strerror(errno)); ret = 1; goto exit; } bufsize = width * height; buf = malloc(bufsize); if (!buf) { fprintf (stderr, "Error allocating memory\n"); ret = 1; goto exit; } im = gdImageCreateTrueColor(width, height); if (!im) { fprintf (stderr, "Error allocating memory\n"); ret = 1; goto exit; } if (!strcmp(argv[1], "-d")) { if (fread(buf, 1, bufsize, fin) != bufsize) { fprintf (stderr, "Error reading: %s: %s\n", argv[2], strerror(errno)); ret = 1; goto exit; } ax203_decode2(buf, im->tpixels, width, height); gdImagePng (im, fout); } else if (!strcmp(argv[1], "-c")) { im_in = gdImageCreateFromPng(fin); if (im_in == NULL) { rewind(fin); im_in = gdImageCreateFromGif(fin); } if (im_in == NULL) { rewind(fin); im_in = gdImageCreateFromWBMP(fin); } /* gdImageCreateFromJpegPtr is chatty on error, so call it last */ if (im_in == NULL) { rewind(fin); im_in = gdImageCreateFromJpeg(fin); } if (im_in == NULL) { fprintf (stderr, "Error unrecognized file format for file: %s\n", argv[2]); ret = 1; goto exit; } gdImageCopyResampled (im, im_in, 0, 0, 0, 0, im->sx, im->sy, im_in->sx, im_in->sy); gdImageSharpen(im, 100); ax203_encode2(im->tpixels, buf, width, height); if (fwrite (buf, 1, bufsize, fout) != bufsize) { fprintf (stderr, "Error writing: %s: %s\n", argv[3], strerror(errno)); ret = 1; goto exit; } } else { fprintf (stderr, "%s: unkown option: %s\n", argv[0], argv[1]); ret = 1; goto exit; } exit: if (fin) fclose (fin); if (fout) fclose (fout); if (buf) free (buf); if (im) gdImageDestroy (im); if (im_in) gdImageDestroy (im_in); return ret; } #endif libgphoto2-2.5.9/camlibs/ax203/jidctflt.c0000644000175000001440000002400512610415510014727 00000000000000/* * jidctflt.c * * Copyright (C) 1994-1998, Thomas G. Lane. * This file is part of the Independent JPEG Group's software. * * The authors make NO WARRANTY or representation, either express or implied, * with respect to this software, its quality, accuracy, merchantability, or * fitness for a particular purpose. This software is provided "AS IS", and you, * its user, assume the entire risk as to its quality and accuracy. * * This software is copyright (C) 1991-1998, Thomas G. Lane. * All Rights Reserved except as specified below. * * Permission is hereby granted to use, copy, modify, and distribute this * software (or portions thereof) for any purpose, without fee, subject to these * conditions: * (1) If any part of the source code for this software is distributed, then this * README file must be included, with this copyright and no-warranty notice * unaltered; and any additions, deletions, or changes to the original files * must be clearly indicated in accompanying documentation. * (2) If only executable code is distributed, then the accompanying * documentation must state that "this software is based in part on the work of * the Independent JPEG Group". * (3) Permission for use of this software is granted only if the user accepts * full responsibility for any undesirable consequences; the authors accept * NO LIABILITY for damages of any kind. * * These conditions apply to any software derived from or based on the IJG code, * not just to the unmodified library. If you use our work, you ought to * acknowledge us. * * Permission is NOT granted for the use of any IJG author's name or company name * in advertising or publicity relating to this software or products derived from * it. This software may be referred to only as "the Independent JPEG Group's * software". * * We specifically permit and encourage the use of this software as the basis of * commercial products, provided that all warranty or liability claims are * assumed by the product vendor. * * * This file contains a floating-point implementation of the * inverse DCT (Discrete Cosine Transform). In the IJG code, this routine * must also perform dequantization of the input coefficients. * * This implementation should be more accurate than either of the integer * IDCT implementations. However, it may not give the same results on all * machines because of differences in roundoff behavior. Speed will depend * on the hardware's floating point capacity. * * A 2-D IDCT can be done by 1-D IDCT on each column followed by 1-D IDCT * on each row (or vice versa, but it's more convenient to emit a row at * a time). Direct algorithms are also available, but they are much more * complex and seem not to be any faster when reduced to code. * * This implementation is based on Arai, Agui, and Nakajima's algorithm for * scaled DCT. Their original paper (Trans. IEICE E-71(11):1095) is in * Japanese, but the algorithm is described in the Pennebaker & Mitchell * JPEG textbook (see REFERENCES section in file README). The following code * is based directly on figure 4-8 in P&M. * While an 8-point DCT cannot be done in less than 11 multiplies, it is * possible to arrange the computation so that many of the multiplies are * simple scalings of the final outputs. These multiplies can then be * folded into the multiplications or divisions by the JPEG quantization * table entries. The AA&N method leaves only 5 multiplies and 29 adds * to be done in the DCT itself. * The primary disadvantage of this method is that with a fixed-point * implementation, accuracy is lost due to imprecise representation of the * scaled quantization values. However, that problem does not arise if * we use floating point arithmetic. */ #include "config.h" #include <_stdint.h> #include "tinyjpeg-internal.h" #define FAST_FLOAT float #define DCTSIZE 8 #define DCTSIZE2 (DCTSIZE*DCTSIZE) #define DEQUANTIZE(coef,quantval) (((FAST_FLOAT) (coef)) * (quantval)) #if defined(__GNUC__) && (defined(__i686__) || defined(__x86_64__)) static inline unsigned char descale_and_clamp(int x, int shift) { __asm__ ( "add %3,%1\n" "\tsar %2,%1\n" "\tsub $-128,%1\n" "\tcmovl %5,%1\n" /* Use the sub to compare to 0 */ "\tcmpl %4,%1\n" "\tcmovg %4,%1\n" : "=r"(x) : "0"(x), "Ic"((unsigned char)shift), "ir"(1U<<(shift-1)), "r" (0xff), "r" (0) ); return x; } #else static inline unsigned char descale_and_clamp(int x, int shift) { x += (1UL<<(shift-1)); if (x<0) x = (x >> shift) | ((~(0UL)) << (32-(shift))); else x >>= shift; x += 128; if (x>255) return 255; else if (x<0) return 0; else return x; } #endif /* * Perform dequantization and inverse DCT on one block of coefficients. */ void tinyjpeg_idct_float (struct component *compptr, uint8_t *output_buf, int stride) { FAST_FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; FAST_FLOAT tmp10, tmp11, tmp12, tmp13; FAST_FLOAT z5, z10, z11, z12, z13; int16_t *inptr; FAST_FLOAT *quantptr; FAST_FLOAT *wsptr; uint8_t *outptr; int ctr; FAST_FLOAT workspace[DCTSIZE2]; /* buffers data between passes */ /* Pass 1: process columns from input, store into work array. */ inptr = compptr->DCT; quantptr = compptr->Q_table; wsptr = workspace; for (ctr = DCTSIZE; ctr > 0; ctr--) { /* Due to quantization, we will usually find that many of the input * coefficients are zero, especially the AC terms. We can exploit this * by short-circuiting the IDCT calculation for any column in which all * the AC terms are zero. In that case each output is equal to the * DC coefficient (with scale factor as needed). * With typical images and quantization tables, half or more of the * column DCT calculations can be simplified this way. */ if (inptr[DCTSIZE*1] == 0 && inptr[DCTSIZE*2] == 0 && inptr[DCTSIZE*3] == 0 && inptr[DCTSIZE*4] == 0 && inptr[DCTSIZE*5] == 0 && inptr[DCTSIZE*6] == 0 && inptr[DCTSIZE*7] == 0) { /* AC terms all zero */ FAST_FLOAT dcval = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]); wsptr[DCTSIZE*0] = dcval; wsptr[DCTSIZE*1] = dcval; wsptr[DCTSIZE*2] = dcval; wsptr[DCTSIZE*3] = dcval; wsptr[DCTSIZE*4] = dcval; wsptr[DCTSIZE*5] = dcval; wsptr[DCTSIZE*6] = dcval; wsptr[DCTSIZE*7] = dcval; inptr++; /* advance pointers to next column */ quantptr++; wsptr++; continue; } /* Even part */ tmp0 = DEQUANTIZE(inptr[DCTSIZE*0], quantptr[DCTSIZE*0]); tmp1 = DEQUANTIZE(inptr[DCTSIZE*2], quantptr[DCTSIZE*2]); tmp2 = DEQUANTIZE(inptr[DCTSIZE*4], quantptr[DCTSIZE*4]); tmp3 = DEQUANTIZE(inptr[DCTSIZE*6], quantptr[DCTSIZE*6]); tmp10 = tmp0 + tmp2; /* phase 3 */ tmp11 = tmp0 - tmp2; tmp13 = tmp1 + tmp3; /* phases 5-3 */ tmp12 = (tmp1 - tmp3) * ((FAST_FLOAT) 1.414213562) - tmp13; /* 2*c4 */ tmp0 = tmp10 + tmp13; /* phase 2 */ tmp3 = tmp10 - tmp13; tmp1 = tmp11 + tmp12; tmp2 = tmp11 - tmp12; /* Odd part */ tmp4 = DEQUANTIZE(inptr[DCTSIZE*1], quantptr[DCTSIZE*1]); tmp5 = DEQUANTIZE(inptr[DCTSIZE*3], quantptr[DCTSIZE*3]); tmp6 = DEQUANTIZE(inptr[DCTSIZE*5], quantptr[DCTSIZE*5]); tmp7 = DEQUANTIZE(inptr[DCTSIZE*7], quantptr[DCTSIZE*7]); z13 = tmp6 + tmp5; /* phase 6 */ z10 = tmp6 - tmp5; z11 = tmp4 + tmp7; z12 = tmp4 - tmp7; tmp7 = z11 + z13; /* phase 5 */ tmp11 = (z11 - z13) * ((FAST_FLOAT) 1.414213562); /* 2*c4 */ z5 = (z10 + z12) * ((FAST_FLOAT) 1.847759065); /* 2*c2 */ tmp10 = ((FAST_FLOAT) 1.082392200) * z12 - z5; /* 2*(c2-c6) */ tmp12 = ((FAST_FLOAT) -2.613125930) * z10 + z5; /* -2*(c2+c6) */ tmp6 = tmp12 - tmp7; /* phase 2 */ tmp5 = tmp11 - tmp6; tmp4 = tmp10 + tmp5; wsptr[DCTSIZE*0] = tmp0 + tmp7; wsptr[DCTSIZE*7] = tmp0 - tmp7; wsptr[DCTSIZE*1] = tmp1 + tmp6; wsptr[DCTSIZE*6] = tmp1 - tmp6; wsptr[DCTSIZE*2] = tmp2 + tmp5; wsptr[DCTSIZE*5] = tmp2 - tmp5; wsptr[DCTSIZE*4] = tmp3 + tmp4; wsptr[DCTSIZE*3] = tmp3 - tmp4; inptr++; /* advance pointers to next column */ quantptr++; wsptr++; } /* Pass 2: process rows from work array, store into output array. */ /* Note that we must descale the results by a factor of 8 == 2**3. */ wsptr = workspace; outptr = output_buf; for (ctr = 0; ctr < DCTSIZE; ctr++) { /* Rows of zeroes can be exploited in the same way as we did with columns. * However, the column calculation has created many nonzero AC terms, so * the simplification applies less often (typically 5% to 10% of the time). * And testing floats for zero is relatively expensive, so we don't bother. */ /* Even part */ tmp10 = wsptr[0] + wsptr[4]; tmp11 = wsptr[0] - wsptr[4]; tmp13 = wsptr[2] + wsptr[6]; tmp12 = (wsptr[2] - wsptr[6]) * ((FAST_FLOAT) 1.414213562) - tmp13; tmp0 = tmp10 + tmp13; tmp3 = tmp10 - tmp13; tmp1 = tmp11 + tmp12; tmp2 = tmp11 - tmp12; /* Odd part */ z13 = wsptr[5] + wsptr[3]; z10 = wsptr[5] - wsptr[3]; z11 = wsptr[1] + wsptr[7]; z12 = wsptr[1] - wsptr[7]; tmp7 = z11 + z13; tmp11 = (z11 - z13) * ((FAST_FLOAT) 1.414213562); z5 = (z10 + z12) * ((FAST_FLOAT) 1.847759065); /* 2*c2 */ tmp10 = ((FAST_FLOAT) 1.082392200) * z12 - z5; /* 2*(c2-c6) */ tmp12 = ((FAST_FLOAT) -2.613125930) * z10 + z5; /* -2*(c2+c6) */ tmp6 = tmp12 - tmp7; tmp5 = tmp11 - tmp6; tmp4 = tmp10 + tmp5; /* Final output stage: scale down by a factor of 8 and range-limit */ outptr[0] = descale_and_clamp((int)(tmp0 + tmp7), 3); outptr[7] = descale_and_clamp((int)(tmp0 - tmp7), 3); outptr[1] = descale_and_clamp((int)(tmp1 + tmp6), 3); outptr[6] = descale_and_clamp((int)(tmp1 - tmp6), 3); outptr[2] = descale_and_clamp((int)(tmp2 + tmp5), 3); outptr[5] = descale_and_clamp((int)(tmp2 - tmp5), 3); outptr[4] = descale_and_clamp((int)(tmp3 + tmp4), 3); outptr[3] = descale_and_clamp((int)(tmp3 - tmp4), 3); wsptr += DCTSIZE; /* advance pointer to next row */ outptr += stride; } } libgphoto2-2.5.9/camlibs/ax203/tinyjpeg.c0000644000175000001440000006466412610415536015004 00000000000000/* * Small jpeg decoder library * * *** NOTE: This is a modified version to deal with the ax203 "JPEG" fmt * *** This version can not decompress regular JPEG files, see * *** README.ax203-compression for details * * Copyright (c) 2006, Luc Saillard * * ax203 modifications: * Copyright (c) 2010, Hans de Goede * * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * - Neither the name of the author nor the names of its contributors may be * used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * */ #define _BSD_SOURCE #include #include #include #include <_stdint.h> #include #include "tinyjpeg.h" #include "tinyjpeg-internal.h" #define cY 0 #define cCb 1 #define cCr 2 #define BLACK_Y 0 #define BLACK_U 127 #define BLACK_V 127 #if 0 #if LOG2FILE #define trace(fmt, args...) do { \ FILE *f = fopen("/tmp/jpeg.log", "a"); \ fprintf(f, fmt, ## args); \ fflush(f); \ fclose(f); \ } while(0) #else #define trace(fmt, args...) do { \ fprintf(stderr, fmt, ## args); \ fflush(stderr); \ } while(0) #endif #else #define trace(fmt, args...) do { } while (0) #endif #define error(fmt, args...) do { \ snprintf(priv->error_string, sizeof(priv->error_string), fmt, ## args); \ return -1; \ } while(0) static const unsigned char zigzag[64] = { 0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63 }; /* * 4 functions to manage the stream * * fill_nbits: put at least nbits in the reservoir of bits. * But convert any 0xff,0x00 into 0xff * get_nbits: read nbits from the stream, and put it in result, * bits is removed from the stream and the reservoir is filled * automaticaly. The result is signed according to the number of * bits. * look_nbits: read nbits from the stream without marking as read. * skip_nbits: read nbits from the stream but do not return the result. * * stream: current pointer in the jpeg data (read bytes per bytes) * nbits_in_reservoir: number of bits filled into the reservoir * reservoir: register that contains bits information. Only nbits_in_reservoir * is valid. * nbits_in_reservoir * <-- 17 bits --> * Ex: 0000 0000 1010 0000 1111 0000 <== reservoir * ^ * bit 1 * To get two bits from this example * result = (reservoir >> 15) & 3 * */ #define fill_nbits(reservoir,nbits_in_reservoir,stream,nbits_wanted) do { \ while (nbits_in_reservoir= priv->stream_end) { \ snprintf(priv->error_string, sizeof(priv->error_string), \ "fill_nbits error: need %u more bits\n", \ nbits_wanted - nbits_in_reservoir); \ longjmp(priv->jump_state, -EIO); \ } \ __c = *stream++; \ reservoir <<= 8; \ reservoir |= __c; \ nbits_in_reservoir+=8; \ } \ } while(0); /* Signed version !!!! */ #define get_nbits(reservoir,nbits_in_reservoir,stream,nbits_wanted,result) do { \ fill_nbits(reservoir,nbits_in_reservoir,stream,(nbits_wanted)); \ result = ((reservoir)>>(nbits_in_reservoir-(nbits_wanted))); \ nbits_in_reservoir -= (nbits_wanted); \ reservoir &= ((1U<>(nbits_in_reservoir-(nbits_wanted))); \ } while(0); /* To speed up the decoding, we assume that the reservoir have enough bit * slow version: * #define skip_nbits(reservoir,nbits_in_reservoir,stream,nbits_wanted) do { \ * fill_nbits(reservoir,nbits_in_reservoir,stream,(nbits_wanted)); \ * nbits_in_reservoir -= (nbits_wanted); \ * reservoir &= ((1U<reservoir, priv->nbits_in_reservoir, priv->stream, HUFFMAN_HASH_NBITS, hcode); value = huffman_table->lookup[hcode]; if (value >= 0) { unsigned int code_size = huffman_table->code_size[value]; skip_nbits(priv->reservoir, priv->nbits_in_reservoir, priv->stream, code_size); return value; } /* Decode more bits each time ... */ for (extra_nbits=0; extra_nbits<16-HUFFMAN_HASH_NBITS; extra_nbits++) { nbits = HUFFMAN_HASH_NBITS + 1 + extra_nbits; look_nbits(priv->reservoir, priv->nbits_in_reservoir, priv->stream, nbits, hcode); slowtable = huffman_table->slowtable[extra_nbits]; /* Search if the code is in this array */ while (slowtable[0]) { if (slowtable[0] == hcode) { skip_nbits(priv->reservoir, priv->nbits_in_reservoir, priv->stream, nbits); return slowtable[1]; } slowtable+=2; } } snprintf(priv->error_string, sizeof(priv->error_string), "unknown huffman code: %08x\n", (unsigned int)hcode); longjmp(priv->jump_state, -EIO); return 0; } /** * * Decode a single block that contains the DCT coefficients. * The table coefficients is already dezigzaged at the end of the operation. * */ static void process_Huffman_data_unit(struct jdec_private *priv, int component, int block_nr) { unsigned char j; unsigned int huff_code; unsigned char size_val, count_0; struct component *c = &priv->component_infos[component]; short int DCT[64]; /* Initialize the DCT coef table */ memset(DCT, 0, sizeof(DCT)); /* DC coefficient decoding */ huff_code = get_next_huffman_code(priv, c->DC_table); if (huff_code) { get_nbits(priv->reservoir, priv->nbits_in_reservoir, priv->stream, huff_code, DCT[0]); DCT[0] += c->previous_DC; c->previous_DC = DCT[0]; } else { DCT[0] = c->previous_DC; } /* AC coefficient decoding */ j = 1; while (j<64) { huff_code = get_next_huffman_code(priv, c->AC_table); size_val = huff_code & 0xF; count_0 = huff_code >> 4; if (size_val == 0) { /* RLE */ if (count_0 == 0) break; /* EOB found, go out */ else if (count_0 == 0xF) j += 16; /* skip 16 zeros */ } else { j += count_0; /* skip count_0 zeroes */ if (j < 64) { get_nbits(priv->reservoir, priv->nbits_in_reservoir, priv->stream, size_val, DCT[j]); j++; } } } for (j = 0; j < 64; j++) c->DCT[j] = DCT[zigzag[j]]; } /* * Takes two array of bits, and build the huffman table for size, and code * * lookup will return the symbol if the code is less or equal than HUFFMAN_HASH_NBITS. * code_size will be used to known how many bits this symbol is encoded. * slowtable will be used when the first lookup didn't give the result. */ static int build_huffman_table(struct jdec_private *priv, const unsigned char *bits, const unsigned char *vals, struct huffman_table *table) { unsigned int i, j, code, code_size, val, nbits; unsigned char huffsize[257], *hz; unsigned int huffcode[257], *hc; int slowtable_used[16-HUFFMAN_HASH_NBITS]; /* * Build a temp array * huffsize[X] => numbers of bits to write vals[X] */ hz = huffsize; for (i=1; i<=16; i++) { for (j=1; j<=bits[i]; j++) *hz++ = i; } *hz = 0; memset(table->lookup, 0xff, sizeof(table->lookup)); for (i=0; i<(16-HUFFMAN_HASH_NBITS); i++) slowtable_used[i] = 0; /* Build a temp array * huffcode[X] => code used to write vals[X] */ code = 0; hc = huffcode; hz = huffsize; nbits = *hz; while (*hz) { while (*hz == nbits) { *hc++ = code++; hz++; } code <<= 1; nbits++; } /* * Build the lookup table, and the slowtable if needed. */ for (i=0; huffsize[i]; i++) { val = vals[i]; code = huffcode[i]; code_size = huffsize[i]; trace("val=%2.2x code=%8.8x codesize=%2.2d\n", i, code, code_size); table->code_size[val] = code_size; if (code_size <= HUFFMAN_HASH_NBITS) { /* * Good: val can be put in the lookup table, so fill all value of this * column with value val */ int repeat = 1UL<<(HUFFMAN_HASH_NBITS - code_size); code <<= HUFFMAN_HASH_NBITS - code_size; while ( repeat-- ) table->lookup[code++] = val; } else { /* Perhaps sorting the array will be an optimization */ int slowtable_index = code_size-HUFFMAN_HASH_NBITS-1; if (slowtable_used[slowtable_index] == 254) error("slow Huffman table overflow\n"); table->slowtable[slowtable_index][slowtable_used[slowtable_index]] = code; table->slowtable[slowtable_index][slowtable_used[slowtable_index] + 1] = val; slowtable_used[slowtable_index] += 2; } } for (i=0; i<(16-HUFFMAN_HASH_NBITS); i++) table->slowtable[i][slowtable_used[i]] = 0; return 0; } /******************************************************************************* * * Colorspace conversion routine * * * Note: * YCbCr is defined per CCIR 601-1, except that Cb and Cr are * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5. * The conversion equations to be implemented are therefore * R = Y + 1.40200 * Cr * G = Y - 0.34414 * Cb - 0.71414 * Cr * B = Y + 1.77200 * Cb * ******************************************************************************/ static unsigned char clamp(int i) { if (i<0) return 0; else if (i>255) return 255; else return i; } /** * YCrCb -> RGB24 (1x1) * .---. * | 1 | * `---' */ static void YCrCB_to_RGB24_1x1(struct jdec_private *priv) { const unsigned char *Y, *Cb, *Cr; unsigned char *p; int i,j; int offset_to_next_row; #define SCALEBITS 10 #define ONE_HALF (1UL << (SCALEBITS-1)) #define FIX(x) ((int)((x) * (1UL<plane[0]; Y = priv->Y; Cb = priv->Cb; Cr = priv->Cr; offset_to_next_row = priv->width*3 - 8*3; for (i=0; i<8; i++) { for (j=0; j<8; j++) { int y, cb, cr; int add_r, add_g, add_b; int r, g , b; y = (*Y++) << SCALEBITS; cb = *Cb++ - 128; cr = *Cr++ - 128; add_r = FIX(1.40200) * cr + ONE_HALF; add_g = - FIX(0.34414) * cb - FIX(0.71414) * cr + ONE_HALF; add_b = FIX(1.77200) * cb + ONE_HALF; r = (y + add_r) >> SCALEBITS; *p++ = clamp(r); g = (y + add_g) >> SCALEBITS; *p++ = clamp(g); b = (y + add_b) >> SCALEBITS; *p++ = clamp(b); } p += offset_to_next_row; } #undef SCALEBITS #undef ONE_HALF #undef FIX } /** * YCrCb -> RGB24 (2x2) * .-------. * | 1 | 2 | * |---+---| * | 3 | 4 | * `-------' */ static void YCrCB_to_RGB24_2x2(struct jdec_private *priv) { const unsigned char *Y, *Cb, *Cr; unsigned char *p, *p2; int i,j; int offset_to_next_row; #define SCALEBITS 10 #define ONE_HALF (1UL << (SCALEBITS-1)) #define FIX(x) ((int)((x) * (1UL<plane[0]; p2 = priv->plane[0] + priv->width*3; Y = priv->Y; Cb = priv->Cb; Cr = priv->Cr; offset_to_next_row = (priv->width*3*2) - 16*3; for (i=0; i<8; i++) { for (j=0; j<8; j++) { int y, cb, cr; int add_r, add_g, add_b; int r, g , b; cb = *Cb++ - 128; cr = *Cr++ - 128; add_r = FIX(1.40200) * cr + ONE_HALF; add_g = - FIX(0.34414) * cb - FIX(0.71414) * cr + ONE_HALF; add_b = FIX(1.77200) * cb + ONE_HALF; y = (*Y++) << SCALEBITS; r = (y + add_r) >> SCALEBITS; *p++ = clamp(r); g = (y + add_g) >> SCALEBITS; *p++ = clamp(g); b = (y + add_b) >> SCALEBITS; *p++ = clamp(b); y = (*Y++) << SCALEBITS; r = (y + add_r) >> SCALEBITS; *p++ = clamp(r); g = (y + add_g) >> SCALEBITS; *p++ = clamp(g); b = (y + add_b) >> SCALEBITS; *p++ = clamp(b); y = (Y[16-2]) << SCALEBITS; r = (y + add_r) >> SCALEBITS; *p2++ = clamp(r); g = (y + add_g) >> SCALEBITS; *p2++ = clamp(g); b = (y + add_b) >> SCALEBITS; *p2++ = clamp(b); y = (Y[16-1]) << SCALEBITS; r = (y + add_r) >> SCALEBITS; *p2++ = clamp(r); g = (y + add_g) >> SCALEBITS; *p2++ = clamp(g); b = (y + add_b) >> SCALEBITS; *p2++ = clamp(b); } Y += 16; p += offset_to_next_row; p2 += offset_to_next_row; } #undef SCALEBITS #undef ONE_HALF #undef FIX } /* * Decode all the 3 components for 1x1 */ static void decode_MCU_1x1_3planes(struct jdec_private *priv, int block_nr) { /* Special ax206 hack, forget remaining bits after each MCU */ priv->stream -= (priv->nbits_in_reservoir/8); priv->nbits_in_reservoir = 0; priv->reservoir = 0; /* Cb */ process_Huffman_data_unit(priv, cCb, block_nr); IDCT(&priv->component_infos[cCb], priv->Cb, 8); /* Cr */ process_Huffman_data_unit(priv, cCr, block_nr); IDCT(&priv->component_infos[cCr], priv->Cr, 8); /* Y */ process_Huffman_data_unit(priv, cY, block_nr); IDCT(&priv->component_infos[cY], priv->Y, 8); } /* * Decode a 2x2 * .-------. * | 1 | 2 | * |---+---| * | 3 | 4 | * `-------' */ static void decode_MCU_2x2_3planes(struct jdec_private *priv, int block_nr) { /* Special ax206 hack, forget remaining bits after each MCU */ priv->stream -= (priv->nbits_in_reservoir/8); priv->nbits_in_reservoir = 0; priv->reservoir = 0; /* Cb */ process_Huffman_data_unit(priv, cCb, 0); IDCT(&priv->component_infos[cCb], priv->Cb, 8); /* Cr */ process_Huffman_data_unit(priv, cCr, 0); IDCT(&priv->component_infos[cCr], priv->Cr, 8); /* Y */ process_Huffman_data_unit(priv, cY, block_nr); IDCT(&priv->component_infos[cY], priv->Y, 16); process_Huffman_data_unit(priv, cY, -1); IDCT(&priv->component_infos[cY], priv->Y+8, 16); process_Huffman_data_unit(priv, cY, -2); IDCT(&priv->component_infos[cY], priv->Y+64*2, 16); process_Huffman_data_unit(priv, cY, -3); IDCT(&priv->component_infos[cY], priv->Y+64*2+8, 16); } static void build_quantization_table(float *qtable, const unsigned char *ref_table) { /* Taken from libjpeg. Copyright Independent JPEG Group's LLM idct. * For float AA&N IDCT method, divisors are equal to quantization * coefficients scaled by scalefactor[row]*scalefactor[col], where * scalefactor[0] = 1 * scalefactor[k] = cos(k*PI/16) * sqrt(2) for k=1..7 * We apply a further scale factor of 8. * What's actually stored is 1/divisor so that the inner loop can * use a multiplication rather than a division. */ int i, j; static const double aanscalefactor[8] = { 1.0, 1.387039845, 1.306562965, 1.175875602, 1.0, 0.785694958, 0.541196100, 0.275899379 }; const unsigned char *zz = zigzag; for (i=0; i<8; i++) { for (j=0; j<8; j++) { *qtable++ = ref_table[*zz++] * aanscalefactor[i] * aanscalefactor[j]; } } } static int parse_DQT(struct jdec_private *priv, const unsigned char *stream) { int qi; float *table; const unsigned char *dqt_block_end; trace("> DQT marker\n"); dqt_block_end = stream + be16_to_cpu(stream); stream += 2; /* Skip length */ while (stream < dqt_block_end) { qi = *stream++; #if SANITY_CHECK if (qi>>4) error("16 bits quantization table is not supported\n"); if (qi >= COMPONENTS) error("No more than %d quantization tables supported (got %d)\n", COMPONENTS, qi + 1); #endif table = priv->Q_tables[qi]; build_quantization_table(table, stream); stream += 64; } trace("< DQT marker\n"); return 0; } static int parse_DHT(struct jdec_private *priv, const unsigned char *stream) { unsigned int count, i; unsigned char huff_bits[17]; int length, index; length = be16_to_cpu(stream) - 2; stream += 2; /* Skip length */ trace("> DHT marker (length=%d)\n", length); while (length>0) { index = *stream++; /* We need to calculate the number of bytes 'vals' will takes */ huff_bits[0] = 0; count = 0; for (i=1; i<17; i++) { huff_bits[i] = *stream++; count += huff_bits[i]; } #if SANITY_CHECK if (count > 1024) error("No more than 1024 bytes is allowed to describe a huffman table\n"); if ( (index &0xf) >= HUFFMAN_TABLES) error("No mode than %d Huffman tables is supported\n", HUFFMAN_TABLES); trace("Huffman table %s n%d\n", (index&0xf0)?"AC":"DC", index&0xf); trace("Length of the table: %d\n", count); #endif if (index & 0xf0 ) { if (build_huffman_table(priv, huff_bits, stream, &priv->HTAC[index&0xf])) return -1; } else { if (build_huffman_table(priv, huff_bits, stream, &priv->HTDC[index&0xf])) return -1; } length -= 1; length -= 16; length -= count; stream += count; } trace("< DHT marker\n"); return 0; } static void resync(struct jdec_private *priv) { int i; /* Init DC coefficients */ for (i=0; icomponent_infos[i].previous_DC = 0; priv->reservoir = 0; priv->nbits_in_reservoir = 0; } /******************************************************************************* * * Functions exported of the library. * * Note: Some applications can access directly to internal pointer of the * structure. It's is not recommended, but if you have many images to * uncompress with the same parameters, some functions can be called to speedup * the decoding. * ******************************************************************************/ /** * Allocate a new tinyjpeg decoder object. * * Before calling any other functions, an object need to be called. */ struct jdec_private *tinyjpeg_init(void) { struct jdec_private *priv; priv = (struct jdec_private *)calloc(1, sizeof(struct jdec_private)); if (priv == NULL) return NULL; return priv; } /** * Free a tinyjpeg object. * * No others function can be called after this one. */ void tinyjpeg_free(struct jdec_private *priv) { int i; for (i=0; icomponents[i]); priv->components[i] = NULL; } free(priv); } /** * Initialize the tinyjpeg object and prepare the decoding of the stream. * * Check if the jpeg can be decoded with this jpeg decoder. * Fill some table used for preprocessing. */ int tinyjpeg_parse_header(struct jdec_private *priv, const unsigned char *buf, unsigned int size) { const unsigned char *stream = buf; struct component *c; int i; priv->width = be16_to_cpu(stream); priv->height = be16_to_cpu(stream + 2); #if SANITY_CHECK if (priv->width>JPEG_MAX_WIDTH || priv->height>JPEG_MAX_HEIGHT) error("Width and Height (%dx%d) seems suspicious\n", priv->width, priv->height); if (priv->height%8) error("Height need to be a multiple of 8 (current height is %d)\n", priv->height); if (priv->width%8) error("Width need to be a multiple of 16 (current width is %d)\n", priv->width); #endif trace("size: %dx%d\n", priv->width, priv->height); switch (stream[4]) { case 0: priv->component_infos[cY].Vfactor = 1; priv->component_infos[cY].Hfactor = 1; break; case 3: priv->component_infos[cY].Vfactor = 2; priv->component_infos[cY].Hfactor = 2; break; default: error("Unknown subsampling identifier: 0x%02x\n", stream[4]); } priv->component_infos[cCb].Vfactor = 1; priv->component_infos[cCb].Hfactor = 1; priv->component_infos[cCr].Vfactor = 1; priv->component_infos[cCr].Hfactor = 1; for (i = 0; i < 3; i++) { c = &priv->component_infos[i]; if (stream[5 + i] != 0 && stream[5 + i] != 1) error("Invalid quant table nr: %d\n", stream[5 + i]); if (stream[8 + i] != 0 && stream[8 + i] != 1) error("Invalid DC huffman table nr: %d\n", stream[8 + i]); if (stream[11 + i] != 0 && stream[11 + i] != 1) error("Invalid AC huffman table nr: %d\n", stream[11 + i]); c->Q_table = priv->Q_tables[stream[5 + i]]; c->DC_table = &priv->HTDC[stream[8 + i]]; c->AC_table = &priv->HTAC[stream[11 + i]]; trace("Component:%d factor:%dx%d QT:%d AC:%d DC:%d\n", i, c->Hfactor, c->Hfactor, stream[5 + i], stream[8 + i], stream[11 + i]); } /* Skip header */ stream += 16; /* Skip MCU info blocks (we don't need them) */ stream += (priv->width / (8 * priv->component_infos[cY].Hfactor)) * (priv->height / (8 * priv->component_infos[cY].Vfactor)) * 8; /* Parse DQT table */ if (parse_DQT(priv, stream)) return -1; stream += be16_to_cpu(stream); /* Parse DHT table */ if (parse_DHT(priv, stream)) return -1; stream += be16_to_cpu(stream); priv->stream = stream; priv->stream_end = buf + size; return 0; } static const decode_MCU_fct decode_mcu_3comp_table[4] = { decode_MCU_1x1_3planes, decode_MCU_2x2_3planes, }; static const convert_colorspace_fct convert_colorspace_rgb24[4] = { YCrCB_to_RGB24_1x1, YCrCB_to_RGB24_2x2, }; /** * Decode and convert the jpeg image into @pixfmt@ image * * Note: components will be automaticaly allocated if no memory is attached. */ int tinyjpeg_decode(struct jdec_private *priv) { unsigned int x, y, xstride_by_mcu, ystride_by_mcu; unsigned int bytes_per_blocklines[3], bytes_per_mcu[3]; decode_MCU_fct decode_MCU; const decode_MCU_fct *decode_mcu_table; const convert_colorspace_fct *colorspace_array_conv; convert_colorspace_fct convert_to_pixfmt; if (setjmp(priv->jump_state)) return -1; /* To keep gcc happy initialize some array */ bytes_per_mcu[1] = 0; bytes_per_mcu[2] = 0; bytes_per_blocklines[1] = 0; bytes_per_blocklines[2] = 0; decode_mcu_table = decode_mcu_3comp_table; colorspace_array_conv = convert_colorspace_rgb24; if (priv->components[0] == NULL) priv->components[0] = (uint8_t *)malloc(priv->width * priv->height * 3); bytes_per_blocklines[0] = priv->width * 3; bytes_per_mcu[0] = 3*8; xstride_by_mcu = ystride_by_mcu = 8; if ((priv->component_infos[cY].Hfactor | priv->component_infos[cY].Vfactor) == 1) { decode_MCU = decode_mcu_table[0]; convert_to_pixfmt = colorspace_array_conv[0]; trace("Use decode 1x1 sampling\n"); } else if (priv->component_infos[cY].Hfactor == 2 && priv->component_infos[cY].Vfactor == 2) { decode_MCU = decode_mcu_table[1]; convert_to_pixfmt = colorspace_array_conv[1]; xstride_by_mcu = 16; ystride_by_mcu = 16; trace("Use decode 2x2 sampling\n"); } else { error("Unknown sub sampling factors: %dx%d\n", priv->component_infos[cY].Hfactor, priv->component_infos[cY].Vfactor); } resync(priv); /* Don't forget to that block can be either 8 or 16 lines */ bytes_per_blocklines[0] *= ystride_by_mcu; bytes_per_blocklines[1] *= ystride_by_mcu; bytes_per_blocklines[2] *= ystride_by_mcu; bytes_per_mcu[0] *= xstride_by_mcu/8; bytes_per_mcu[1] *= xstride_by_mcu/8; bytes_per_mcu[2] *= xstride_by_mcu/8; /* Just the decode the image by macroblock (size is 8x8, 8x16, or 16x16) */ for (y=0; y < priv->height/ystride_by_mcu; y++) { priv->plane[0] = priv->components[0] + (y * bytes_per_blocklines[0]); priv->plane[1] = priv->components[1] + (y * bytes_per_blocklines[1]); priv->plane[2] = priv->components[2] + (y * bytes_per_blocklines[2]); for (x=0; x < priv->width/xstride_by_mcu; x++) { decode_MCU(priv, y * priv->width/xstride_by_mcu + x); convert_to_pixfmt(priv); priv->plane[0] += bytes_per_mcu[0]; priv->plane[1] += bytes_per_mcu[1]; priv->plane[2] += bytes_per_mcu[2]; } } /* Additional sanity check */ if ((priv->stream_end - priv->stream) > 1) error("Data (%d bytes) remaining after decoding\n", (int)(priv->stream_end - priv->stream)); return 0; } const char *tinyjpeg_get_errorstring(struct jdec_private *priv) { return priv->error_string; } void tinyjpeg_get_size(struct jdec_private *priv, unsigned int *width, unsigned int *height) { *width = priv->width; *height = priv->height; } int tinyjpeg_get_components(struct jdec_private *priv, unsigned char **components) { int i; for (i=0; icomponents[i]; i++) components[i] = priv->components[i]; return 0; } int tinyjpeg_set_components(struct jdec_private *priv, unsigned char **components, unsigned int ncomponents) { unsigned int i; if (ncomponents > COMPONENTS) ncomponents = COMPONENTS; for (i=0; icomponents[i] = components[i]; return 0; } libgphoto2-2.5.9/camlibs/ax203/ax203.h0000644000175000001440000001205412610415524013774 00000000000000/* Appotech ax203 picframe access library * * Copyright (c) 2010 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 __AX203_H__ #define __AX203_H__ #include "config.h" #include #include #include #include "tinyjpeg.h" #define GP_MODULE "ax203" #define AX203_ABFS_MAGIC "ABFS" #define AX203_ABFS_COUNT_OFFSET 0x05 #define AX203_ABFS_FILE_OFFSET(idx) (0x20 + 2 * (idx)) #define AX203_ABFS_SIZE 0x1000 #define AX203_PICTURE_OFFSET 0x2000 /* offset from ABFS start */ #define AX206_ABFS_FILE_OFFSET(idx) (0x10 + 8 * (idx)) #define AX206_PICTURE_OFFSET 0x1000 /* offset from ABFS start */ #define AX3003_ABFS_FILE_OFFSET(idx) (0x20 + 4 * (idx)) #define AX3003_PICTURE_OFFSET 0x1000 /* offset from ABFS start */ #define AX3003_BL_SIZE 0x10000 /* Space used by the bootloader at the end of the memory */ #define AX203_SET_TIME 0xCA #define AX203_TO_DEV 0xCB #define AX203_FROM_DEV 0xCD #define AX203_EEPROM_CMD 0x00 #define AX203_GET_VERSION 0x01 #define AX203_GET_LCD_SIZE 0x02 #define AX203_GET_CHECKSUM 0x05 /* Note only seen on 206 sofar */ #define AX3003_FRAME_CMD 0xCA #define AX3003_SET_TIME 0x01 #define AX3003_GET_FRAME_ID 0x02 #define AX3003_GET_ABFS_START 0x03 /* Note not all SPI EEPROM's actually have 4k sectors, some have 64k sectors, ax203_commit() takes care if this. */ #define SPI_EEPROM_SECTOR_SIZE 4096 #define SPI_EEPROM_BLOCK_SIZE 65536 #define SPI_EEPROM_WRSR 0x01 /* WRite Status Register */ #define SPI_EEPROM_PP 0x02 #define SPI_EEPROM_READ 0x03 #define SPI_EEPROM_RDSR 0x05 /* ReaD Status Register */ #define SPI_EEPROM_WREN 0x06 #define SPI_EEPROM_ERASE_4K 0x20 #define SPI_EEPROM_RDID 0x9f /* Read Device ID */ #define SPI_EEPROM_RDP 0xab /* Release from Deep Powerdown */ #define SPI_EEPROM_ERASE_64K 0xd8 #define CHECK(result) {int r=(result); if (r<0) return (r);} enum ax203_version { AX203_FIRMWARE_3_3_x, AX203_FIRMWARE_3_4_x, AX206_FIRMWARE_3_5_x, AX3003_FIRMWARE_3_5_x, }; enum ax203_compression { AX203_COMPRESSION_YUV, AX203_COMPRESSION_YUV_DELTA, AX206_COMPRESSION_JPEG, AX3003_COMPRESSION_JPEG, }; struct _CameraPrivateLibrary { FILE *mem_dump; struct jdec_private *jdec; char *mem; int sector_is_present[4194304 / SPI_EEPROM_SECTOR_SIZE]; int sector_dirty[4194304 / SPI_EEPROM_SECTOR_SIZE]; int fs_start; /* LCD display attributes */ int width; int height; /* USB "bridge" / firmware attributes */ enum ax203_version frame_version; enum ax203_compression compression_version; /* EEPROM attributes */ int mem_size; int has_4k_sectors; int block_protection_removed; int pp_64k; /* Driver configuration settings */ int syncdatetime; }; struct ax203_devinfo { unsigned short vendor_id; unsigned short product_id; int frame_version; }; struct ax203_fileinfo { int address; int present; int size; }; struct ax206_v3_5_x_raw_fileinfo { uint8_t present; uint32_t address; uint16_t size; uint8_t pad; } __attribute__((packed)); struct ax3003_v3_5_x_raw_fileinfo { uint16_t address; /* In blocks of 256 bytes */ uint16_t size; /* In blocks of 256 bytes */ } __attribute__((packed)); /* functions in ax203.c */ int ax203_open_device(Camera *camera); int ax203_open_dump(Camera *camera, const char *dump); void ax203_close(Camera *camera); int ax203_read_filecount(Camera *camera); int ax203_file_present(Camera *camera, int idx); int ax203_read_file(Camera *camera, int idx, int **rgb24); int ax203_write_file(Camera *camera, int **rgb24); int ax203_delete_file(Camera *camera, int idx); int ax203_delete_all(Camera *camera); int ax203_read_raw_file(Camera *camera, int idx, char **raw); int ax203_write_raw_file(Camera *camera, int idx, char *buf, int size); int ax203_commit(Camera *camera); int ax203_get_mem_size(Camera *camera); int ax203_get_free_mem_size(Camera *camera); int ax203_set_time_and_date(Camera *camera, struct tm *t); int ax203_filesize(Camera *camera); /* functions in ax203_decode_*.c */ void ax203_decode_yuv(char *src, int **dest, int width, int height); void ax203_encode_yuv(int **src, char *dest, int width, int height); void ax203_decode_yuv_delta(char *src, int **dest, int width, int height); void ax203_encode_yuv_delta(int **src, char *dest, int width, int height); int ax206_compress_jpeg(Camera *camera, int **in, uint8_t *outbuf, int out_size, int width, int height); #endif libgphoto2-2.5.9/camlibs/ax203/tinyjpeg-internal.h0000644000175000001440000001030612561423351016602 00000000000000/* * Small jpeg decoder library (Internal header) * * *** NOTE: This is a modified version to deal with the ax203 "JPEG" fmt * *** This version can not decompress regular JPEG files, see * *** README.ax203-compression for details * * Copyright (c) 2006, Luc Saillard * * ax203 modifications: * Copyright (c) 2010, Hans de Goede * * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * - Neither the name of the author nor the names of its contributors may be * used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * */ #ifndef __TINYJPEG_INTERNAL_H_ #define __TINYJPEG_INTERNAL_H_ #include #define SANITY_CHECK 1 struct jdec_private; #define HUFFMAN_HASH_NBITS 9 #define HUFFMAN_HASH_SIZE (1UL< * Makefile.am: -I$(top_builddir)/libgphoto2 2002-01-08 Lutz Müller * l859.c: Christopher Worley reported that his "Panasonic PV-L691" works with this driver, too. Fix headers. 2001-12-29 Lutz Müller * l859.c: gp_camera_progress -> gp_file_progress. Kill warning. gp_debug_printf -> gp_log. libgphoto2-2.5.9/camlibs/panasonic/l859/l859.h0000644000175000001440000000274612610415536015471 00000000000000/* $Id$ Copyright 2001 Andrew Selkirk This file is part of the gPhoto project and may only be used, modified, and distributed under the terms of the gPhoto project license, COPYING. By continuing to use, modify, or distribute this file you indicate that you have read the license, understand and accept it fully. THIS SOFTWARE IS PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE. Note: This is the Panasonic PV-L859 camera gPhoto library source code. */ #ifndef __L859_H__ #define __L859_H__ #include #define L859_BLOCKSIZE 0x74 #define L859_BUFSIZE 0x74 struct _CameraPrivateLibrary { char buf[L859_BUFSIZE]; int size; int speed; }; /* L859 Command Codes */ #define L859_CMD_CONNECT 0x2a #define L859_CMD_INIT 0x28 #define L859_CMD_SPEED_DEFAULT 0x00 #define L859_CMD_SPEED_19200 0x22 #define L859_CMD_SPEED_57600 0x24 #define L859_CMD_SPEED_115200 0x26 #define L859_CMD_RESET 0x20 #define L859_CMD_IMAGE 0xd0 #define L859_CMD_PREVIEW 0xe8 #define L859_CMD_PREVIEW_NEXT 0xe5 #define L859_CMD_ACK 0x06 #define L859_CMD_DELETE_1 0xd1 #define L859_CMD_DELETE_2 0xd2 #define L859_CMD_DELETE_3 0xd3 #define L859_CMD_DELETE_ALL 0xef #define L859_CMD_DELETE_ACK 0x15 #endif /* __L859_H__ */ libgphoto2-2.5.9/camlibs/panasonic/l859/l859.c0000644000175000001440000003744112610415536015464 00000000000000/* Copyright 2001 Andrew Selkirk This file is part of the gPhoto project and may only be used, modified, and distributed under the terms of the gPhoto project license, COPYING. By continuing to use, modify, or distribute this file you indicate that you have read the license, understand and accept it fully. THIS SOFTWARE IS PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE. Note: This is the Panasonic PV-L859 camera gPhoto library source code. */ #include "config.h" #include "l859.h" #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "gphoto2-endian.h" #include #include #ifndef __FILE__ # define __FILE__ "l859.c" #endif #define GP_MODULE "l859" /******************************************************************************/ /* Internal utility functions */ /* * l859_sendcmd - Send command to camera */ static int l859_sendcmd(Camera *camera, uint8_t cmd) { GP_DEBUG ("Sending command: 0x%02x.", cmd); memset(camera->pl->buf, 0, 1); camera->pl->buf[0] = cmd; return gp_port_write(camera->port, camera->pl->buf, 1); } /* * l859_retrcmd - Packet received from camera */ static int l859_retrcmd(Camera *camera) { int s; if ((s = gp_port_read(camera->port, camera->pl->buf, 116)) == GP_ERROR) return GP_ERROR; if (s != 116) return GP_ERROR; camera->pl->size = 116; GP_DEBUG ("Retrieved Data"); return GP_OK; } /* * l859_connect - try hand shake with camera and establish connection */ static int l859_connect(Camera *camera) { GPPortSettings settings; uint8_t bps; int ret; GP_DEBUG ("Connecting to a camera."); ret = l859_sendcmd(camera, L859_CMD_CONNECT); if (ret < GP_OK) return ret; if (l859_retrcmd(camera) == GP_ERROR) { if (l859_sendcmd(camera, L859_CMD_RESET) != GP_OK) return GP_ERROR; if (l859_sendcmd(camera, L859_CMD_CONNECT)!= GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; } switch (camera->pl->speed) { case 19200: bps = L859_CMD_SPEED_19200; break; case 57600: bps = L859_CMD_SPEED_57600; break; case 115200: bps = L859_CMD_SPEED_115200; break; default: bps = L859_CMD_SPEED_DEFAULT; break; } if (bps != L859_CMD_SPEED_DEFAULT) { if (l859_sendcmd(camera, bps) != GP_OK) return GP_ERROR; gp_port_get_settings(camera->port, &settings); settings.serial.speed = camera->pl->speed; gp_port_set_settings(camera->port, settings); if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; } if (l859_sendcmd(camera, L859_CMD_INIT) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; GP_DEBUG ("Camera connected successfully."); return GP_OK; } /* * l859_disconnect - reset camera, free buffers and close files */ static int l859_disconnect(Camera *camera) { GP_DEBUG ("Disconnecting the camera."); if (l859_sendcmd(camera, L859_CMD_RESET) != GP_OK) return GP_ERROR; if (gp_port_read(camera->port, camera->pl->buf, 1) == GP_ERROR) return GP_ERROR; GP_DEBUG ("Camera disconnected."); return GP_OK; } /* *l859_delete - delete image #index from camera memory */ static int l859_delete(Camera *camera, uint8_t index) { int value0; int value1; int value2; int value3; GP_DEBUG ("Deleting image: %i.", index); value0 = index; value1 = value0 % 10; value2 = (value0 - value1) % 100; value3 = (value0 - value1 - value2) / 100; value2 = value2 / 10; if (l859_sendcmd(camera, L859_CMD_DELETE_1) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, 0xa0 + value1) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, 0xb0 + value2) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, 0xc0 + value3) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, L859_CMD_DELETE_2) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, L859_CMD_DELETE_3) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, L859_CMD_DELETE_ACK) != GP_OK) return GP_ERROR; GP_DEBUG ("Image %i deleted.", index); return GP_OK; } /* * l859_selectimage - select image to download, return its size */ static int l859_selectimage(Camera *camera, uint8_t index) { int size = 0; uint8_t byte1 = 0; uint8_t byte2 = 0; uint8_t byte3 = 0; int value0; int value1; int value2; int value3; GP_DEBUG ("Selecting image: %i.", index); value0 = index; value1 = value0 % 10; value2 = (value0 - value1) % 100; value3 = (value0 - value1 - value2) / 100; value2 = value2 / 10; if (l859_sendcmd(camera, 0xa0 + value1) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, 0xb0 + value2) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, 0xc0 + value3) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, L859_CMD_IMAGE) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; byte1 = camera->pl->buf[5]; byte2 = camera->pl->buf[6]; byte3 = camera->pl->buf[7]; size = (byte1 * 256 * 256) + (byte2 * 256) + byte3; GP_DEBUG ("Selected image: %i, size: %i.", index, size); return size; } /* * l859_selectimage_preview - select preview image to download, * return its size */ static int l859_selectimage_preview(Camera *camera, uint8_t index) { int size = 0; uint8_t byte1 = 0; uint8_t byte2 = 0; uint8_t byte3 = 0; int value0; int value1; int value2; int value3; GP_DEBUG ("Selected preview image: %i.", index); value0 = index; value1 = value0 % 10; value2 = (value0 - value1) % 100; value3 = (value0 - value1 - value2) / 100; value2 = value2 / 10; if (l859_sendcmd(camera, 0xa0 + value1) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, 0xb0 + value2) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, 0xc0 + value3) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, L859_CMD_PREVIEW) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; byte1 = camera->pl->buf[5]; byte2 = camera->pl->buf[6]; byte3 = camera->pl->buf[7]; size = (byte1 * 256 * 256) + (byte2 * 256) + byte3; GP_DEBUG ("Selected preview image: %i, size: %i.", index, size); return size; } #if 0 /* * l859_readimageblock - read #block block (116 bytes) of an * image into buf */ static int l859_readimageblock(Camera *camera, int block, char *buffer) { int index; GP_DEBUG ("Reading image block: %i.", block); if (l859_sendcmd(camera, L859_CMD_ACK) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; for (index = 3; index < 116; index++) { buffer[index - 3] = camera->pl->buf[index]; } GP_DEBUG ("Block: %i read in.", block); return 112; } #endif /******************************************************************************/ /* Library interface functions */ int camera_id (CameraText *id) { /* GP_DEBUG ("Camera ID"); */ strcpy(id->text, "panasonic-l859"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset (&a, 0, sizeof(a)); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 57600; a.speed[3] = 115200; a.speed[4] = 0; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; strncpy (a.model, "Panasonic:PV-L691", sizeof (a.model)); gp_abilities_list_append (list, a); strncpy (a.model, "Panasonic:PV-L859", sizeof (a.model)); gp_abilities_list_append (list, a); return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("Camera Exit"); if (camera->pl) { l859_disconnect(camera); free(camera->pl); camera->pl = NULL; } return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int num = 0; int width; int year; int size; uint8_t month; uint8_t day; uint8_t hour; uint8_t minute; uint8_t byte1; uint8_t byte2; uint8_t byte3; char *filename; GP_DEBUG ("Camera List Files"); if (l859_sendcmd(camera, 0xa0) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, 0xb0) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, 0xc0) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, L859_CMD_PREVIEW) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; while (camera->pl->buf[13] == num) { byte1 = camera->pl->buf[8]; byte2 = camera->pl->buf[9]; width = (byte1 * 256) + byte2; byte1 = camera->pl->buf[22]; year = byte1 + 1900; month = camera->pl->buf[23]; day = camera->pl->buf[24]; hour = camera->pl->buf[25]; minute = camera->pl->buf[26]; byte1 = camera->pl->buf[5]; byte2 = camera->pl->buf[6]; byte3 = camera->pl->buf[7]; size = (byte1 * 256 * 256) + (byte2 * 256) + byte3; /* Check for no images */ if (size == 0) return GP_OK; if (!(filename = (char*)malloc(30))) { GP_DEBUG ("Unable to allocate memory for filename."); return GP_ERROR_NO_MEMORY; } sprintf(filename, "%.4i%s%i-%i-%i(%i-%i).jpg", num + 1, width == 640 ? "F" : "N", year, month, day, hour, minute); GP_DEBUG ("Filename: %s.", filename); gp_list_append (list, filename, NULL); /* GP_DEBUG ("Num %i Filename %s", num, filename); */ free (filename); num = num + 1; if (l859_sendcmd(camera, L859_CMD_PREVIEW_NEXT) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; } GP_DEBUG ("Camera List Files Done"); return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int index; int size; int i; int s; char buffer[112]; int bufIndex; unsigned int id; GP_DEBUG ("Get File %s", filename); /* index is the 0-based image number on the camera */ index = gp_filesystem_number (camera->fs, folder, filename, context); if (index < 0) return (index); switch (type) { case GP_FILE_TYPE_NORMAL: size = l859_selectimage(camera, index); break; case GP_FILE_TYPE_PREVIEW: size = l859_selectimage_preview(camera, index); default: return (GP_ERROR_NOT_SUPPORTED); } if (size < 0) return (size); id = gp_context_progress_start (context, size, _("Downloading '%s'..."), filename); for (i = 0, s = 0; s < size; i++) { if (l859_sendcmd(camera, L859_CMD_ACK) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; for (bufIndex = 3; bufIndex < 115 && s < size; bufIndex++) { buffer[bufIndex - 3] = camera->pl->buf[bufIndex]; s += 1; } GP_DEBUG ("Packet Size: %i Data Size: %i", bufIndex - 3, s); /* Append data to the file */ gp_file_append (file, buffer, bufIndex - 3); /* Check for cancellation */ gp_context_progress_update (context, id, s); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { l859_disconnect (camera); l859_connect (camera); return (GP_ERROR_CANCEL); } } gp_file_set_mime_type (file, GP_MIME_JPEG); GP_DEBUG ("Camera Get File Done"); return (GP_OK); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int index; int result; GP_DEBUG ("Delete File %s", filename); /* index is the 0-based image number on the camera */ index = gp_filesystem_number (camera->fs, folder, filename, context); if (index < 0) return (index); result = l859_delete (camera, index); if (result < 0) return (result); GP_DEBUG ("Delete File Done"); return GP_OK; } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; GP_DEBUG ("Delete all images"); if (l859_sendcmd(camera, L859_CMD_DELETE_ALL) != GP_OK) return GP_ERROR; if (l859_retrcmd(camera) == GP_ERROR) return GP_ERROR; if (l859_sendcmd(camera, L859_CMD_DELETE_ACK) != GP_OK) return GP_ERROR; GP_DEBUG ("Delete all images done."); return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { strcpy (summary->text, _("Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology " "called PHOTOSHOT for the first time, in this series " "of Palmcorders. Images are stored in JPEG format on " "an internal flashcard and can be transferred to a " "computer through the built-in serial port. Images " "are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which " "captures the images from the lens is only 300K and " "thus produces only low quality pictures.")); return (GP_OK); } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy (manual->text, _("Known problems:\n" "\n" "If communications problems occur, reset the camera " "and restart the application. The driver is not robust " "enough yet to recover from these situations, especially " "if a problem occurs and the camera is not properly shutdown " "at speeds faster than 9600.")); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy(about->text, _("Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk ")); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .delete_all_func = delete_all_func, .del_file_func = delete_file_func }; int camera_init (Camera *camera, GPContext *context) { int ret; GPPortSettings settings; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; /* Allocate memory for a read/write buffer */ camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); gp_port_set_timeout (camera->port, 2000); gp_port_get_settings(camera->port, &settings); camera->pl->speed = settings.serial.speed; settings.serial.speed = 9600; /* hand shake speed */ settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; gp_port_set_settings(camera->port, settings); /* Set up the filesystem */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); ret = l859_connect (camera); if (ret < 0) { free (camera->pl); camera->pl = NULL; } return (ret); } /* End of l859.c */ libgphoto2-2.5.9/camlibs/panasonic/README.panasonic0000644000175000001440000000412412561423351016737 00000000000000 $Id$ Overview -------- This directory contains Panasonic PV-DC1000 and PV-DC1580 gPhoto libraries. In Europe, these models are known as NV-DC1000 and NV-DC1580 respectively. To avoid confusion we simply write DC1000 and DC1580. Both libraries are based on dc1000 utility, written by Fredrik Roubert and Galen Brooks. Despite similarities in the two protocols there are two separate libraries, for DC1000 and DC1580 models respectively. From the source code of Michael McCormack's Nikon CoolPix 600 library for gPhoto1 it follows that DC1580 and Nikon CP 600 use the same protocol. As of 28-th July, there are no reports if this Nikon model works or not with DC1580 library. Copyright --------- Copyright © 2000 Mariusz Zynel (gPhoto port) Copyright © 2000 Fredrik Roubert (idea) Copyright © 1999 Galen Brooks (DC1580 code) Changes ------- * 18 September, 2001 - get rid of gp_port_(new|open|close|free) - adapted to use filesystem provided in core * 5 August, 2000 - filename based communication between library and core - abilities accomodated to the new API * 28 July, 2000 - added library for DC1000 series - debugging messages revised - new debug and error reporting functions - incremental image downloading support added * 21 July, 2000 - image uploading function added - Nikon CoolPix 600 added as it uses the same protocol as DC1580 * 15 July, 2000 - introduction of Panasonic library in gPhoto2 To be done ---------- * Test DC1000 model. * Setting the time and date of camera. * Writing manual. Contact ------- * Mariusz Zynel - mariusz@mizar.org, mariusz@math.uwb.edu.pl * Fredrik Roubert -roubert@df.lth.se * Galen Brooks - galen@nine.com References ---------- * gPhoto web pages: http://www.gphoto.org http://www.gphoto.com http://gphoto.sourceforge.net/ * dc1000 web page: http://www.df.lth.se/~roubert/dc1000/ * Panasonic DC1000 PalmCam communication protocol: http://pelletiernet.com/PalmCam/PalmCam-Protocol.html libgphoto2-2.5.9/camlibs/panasonic/dc1000.h0000644000175000001440000000267712610415536015161 00000000000000/* $Id$ Copyright 2000 Mariusz Zynel (gPhoto port) Copyright 2000 Fredrik Roubert (idea) Copyright 1999 Galen Brooks (DC1580 code) This file is part of the gPhoto project and may only be used, modified, and distributed under the terms of the gPhoto project license, COPYING. By continuing to use, modify, or distribute this file you indicate that you have read the license, understand and accept it fully. THIS SOFTWARE IS PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE. Note: This is a Panasonic DC1000 camera gPhoto library header file. */ /* DC1000 command codes */ #define DSC1_CMD_SEND_DATA 0x00 #define DSC1_CMD_GET_MODEL 0x02 #define DSC1_CMD_SET_BAUD 0x04 #define DSC1_CMD_GET_INDEX 0x07 #define DSC1_CMD_CONNECT 0x10 #define DSC1_CMD_DELETE 0x11 #define DSC1_CMD_PREVIEW 0x14 #define DSC1_CMD_SET_RES 0x15 #define DSC1_CMD_SELECT 0x1a #define DSC1_CMD_GET_DATA 0x1e #define DSC1_CMD_RESET 0x1f /* DC1000 response codes */ #define DSC1_RSP_DATA 0x00 #define DSC1_RSP_OK 0x01 #define DSC1_RSP_MODEL 0x03 #define DSC1_RSP_INDEX 0x08 #define DSC1_RSP_IMGSIZE 0x1d /* DC1000 response buffer offsets, 0 - first byte in buffer */ #define DSC1_BUF_SIZE 12 #define DSC1_BUF_CMD 16 #define DSC1_BUF_DATA 17 /* End of dc1000.h */ libgphoto2-2.5.9/camlibs/panasonic/dc1580.c0000644000175000001440000005105512610415536015163 00000000000000/* Copyright 2000 Mariusz Zynel (gPhoto port) Copyright 2000 Fredrik Roubert (idea) Copyright 1999 Galen Brooks (DC1580 code) This file is part of the gPhoto project and may only be used, modified, and distributed under the terms of the gPhoto project license, COPYING. By continuing to use, modify, or distribute this file you indicate that you have read the license, understand and accept it fully. THIS SOFTWARE IS PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE. Note: This is a Panasonic PV/NV-DC1580 camera gPhoto library source code. An algorithm for checksums borrowed from Michael McCormack's Nikon CoolPix 600 library for gPhoto1. */ #include "config.h" #include #include #include #include #include #ifdef HAVE_MEMORY_H #include #endif #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "dc.h" #include "dc1580.h" #ifndef __FILE__ # define __FILE__ "dc1580.c" #endif #define GP_MODULE "dc1580" /******************************************************************************/ /* Internal utility functions */ /* dsc2_checksum - establish checksum for size bytes in buffer */ static uint8_t dsc2_checksum(char *buffer, int size) { int checksum = 0; int i; for (i = 1; i < size - 2; i++) { checksum += buffer[i]; checksum %= 0x100; } return checksum; } /* dsc2_sendcmd - send command with data to DSC */ static int dsc2_sendcmd(Camera *camera, uint8_t cmd, long int data, uint8_t sequence) { int i; DEBUG_PRINT_MEDIUM(("Sending command: 0x%02x, data: %i, sequence: %i.", cmd, data, sequence)); memset(camera->pl->buf, 0, 16); camera->pl->buf[0] = 0x08; camera->pl->buf[1] = sequence; camera->pl->buf[2] = 0xff - sequence; camera->pl->buf[3] = cmd; for (i = 0; i < sizeof(data); i++) camera->pl->buf[4 + i] = (uint8_t)(data >> 8*i); camera->pl->buf[14] = dsc2_checksum(camera->pl->buf, 16); return gp_port_write(camera->port, camera->pl->buf, 16); } /* dsc2_retrcmd - retrieve command and its data from DSC */ static int dsc2_retrcmd(Camera *camera) { int result = GP_ERROR; int s; if ((s = gp_port_read(camera->port, camera->pl->buf, 16)) == GP_ERROR) return GP_ERROR; /* Make sense in debug only. Done on gp_port level. if (0 < s) dsc_dumpmem(camera->pl->buf, s); */ if (s != 16 || camera->pl->buf[DSC2_BUF_BASE] != 0x08 || camera->pl->buf[DSC2_BUF_SEQ] != 0xff - (uint8_t)camera->pl->buf[DSC2_BUF_SEQC]) { RETURN_ERROR(EDSCBADRSP); /* bad response */ } else result = camera->pl->buf[DSC2_BUF_CMD]; DEBUG_PRINT_MEDIUM(("Retrieved command: %i.", result)); return result; } /* dsc2_connect - try hand shake with camera and establish connection */ static int dsc2_connect(Camera *camera, int speed) { DEBUG_PRINT_MEDIUM(("Connecting camera with speed: %i.", speed)); if (dsc1_setbaudrate(camera, speed) != GP_OK) return GP_ERROR; if (dsc1_getmodel(camera) != DSC2) RETURN_ERROR(EDSCBADDSC); /* bad camera model */ if (dsc2_sendcmd(camera, DSC2_CMD_CONNECT, 0, 0) != GP_OK) return GP_ERROR; if (dsc2_retrcmd(camera) != DSC2_RSP_OK) RETURN_ERROR(EDSCBADRSP); /* bad response */ DEBUG_PRINT_MEDIUM(("Camera connected successfully.")); return GP_OK; } /* dsc2_disconnect - reset camera, free buffers and close files */ static int dsc2_disconnect(Camera *camera) { DEBUG_PRINT_MEDIUM(("Disconnecting the camera.")); if (dsc2_sendcmd(camera, DSC2_CMD_RESET, 0, 0) != GP_OK) return GP_ERROR; if (dsc2_retrcmd(camera) != DSC2_RSP_OK) RETURN_ERROR(EDSCBADRSP) /* bad response */ else sleep(DSC_PAUSE); /* let camera to redraw its screen */ DEBUG_PRINT_MEDIUM(("Camera disconnected.")); return GP_OK; } /* dsc2_getindex - retrieve the number of images stored in camera memory */ static int dsc2_getindex(Camera *camera) { int result = GP_ERROR; DEBUG_PRINT_MEDIUM(("Retrieving the number of images.")); if (dsc2_sendcmd(camera, DSC2_CMD_GET_INDEX, 0, 0) != GP_OK) return GP_ERROR; if (dsc2_retrcmd(camera) == DSC2_RSP_INDEX) result = ((uint32_t)camera->pl->buf[DSC2_BUF_DATA]) | ((uint8_t)camera->pl->buf[DSC2_BUF_DATA + 1] << 8) | ((uint8_t)camera->pl->buf[DSC2_BUF_DATA + 2] << 16) | ((uint8_t)camera->pl->buf[DSC2_BUF_DATA + 3] << 24); else RETURN_ERROR(EDSCBADRSP); /* bad response */ DEBUG_PRINT_MEDIUM(("Number of images: %i", result)); return result; } /* dsc2_delete - delete image #index from camera memory */ static int dsc2_delete(Camera *camera, int index) { DEBUG_PRINT_MEDIUM(("Deleting image: %i.", index)); if (index < 1) RETURN_ERROR(EDSCBADNUM); /* bad image number */ if (dsc2_sendcmd(camera, DSC2_CMD_DELETE, index, 0) != GP_OK) return GP_ERROR; if (dsc2_retrcmd(camera) != DSC2_RSP_OK) RETURN_ERROR(EDSCBADRSP); /* bad response */ DEBUG_PRINT_MEDIUM(("Image: %i deleted.", index)); return GP_OK; } /* dsc2_selectimage - select image to download, return its size */ static int dsc2_selectimage(Camera *camera, int index, int thumbnail) { int size = 0; DEBUG_PRINT_MEDIUM(("Selecting image: %i, thumbnail: %i.", index, thumbnail)); if (index < 1) RETURN_ERROR(EDSCBADNUM); /* bad image number */ if (thumbnail == DSC_THUMBNAIL) { if (dsc2_sendcmd(camera, DSC2_CMD_THUMB, index, 0) != GP_OK) return GP_ERROR; } else { if (dsc2_sendcmd(camera, DSC2_CMD_SELECT, index, 0) != GP_OK) return GP_ERROR; } if (dsc2_retrcmd(camera) != DSC2_RSP_IMGSIZE) RETURN_ERROR(EDSCBADRSP); /* bad response */ size = ((uint32_t)camera->pl->buf[DSC2_BUF_DATA]) | ((uint8_t)camera->pl->buf[DSC2_BUF_DATA + 1] << 8) | ((uint8_t)camera->pl->buf[DSC2_BUF_DATA + 2] << 16) | ((uint8_t)camera->pl->buf[DSC2_BUF_DATA + 3] << 24); DEBUG_PRINT_MEDIUM(("Selected image: %i, thumbnail: %i, size: %i.", index, thumbnail, size)); return size; } /* gp_port_readimageblock - read #block block (1024 bytes) of an image into buf */ static int dsc2_readimageblock(Camera *camera, int block, char *buffer) { DEBUG_PRINT_MEDIUM(("Reading image block: %i.", block)); if (dsc2_sendcmd(camera, DSC2_CMD_GET_DATA, block, block) != GP_OK) return GP_ERROR; if (gp_port_read(camera->port, camera->pl->buf, DSC_BUFSIZE) != DSC_BUFSIZE) RETURN_ERROR(EDSCBADRSP); /* bad response */ if ((uint8_t)camera->pl->buf[0] != 1 || (uint8_t)camera->pl->buf[1] != block || (uint8_t)camera->pl->buf[2] != 0xff - block || (uint8_t)camera->pl->buf[3] != DSC2_RSP_DATA || (uint8_t)camera->pl->buf[DSC_BUFSIZE - 2] != dsc2_checksum(camera->pl->buf, DSC_BUFSIZE)) RETURN_ERROR(EDSCBADRSP); /* bad response */ if (buffer) memcpy(buffer, &camera->pl->buf[4], DSC_BLOCKSIZE); DEBUG_PRINT_MEDIUM(("Block: %i read in.", block)); return DSC_BLOCKSIZE; } /* dsc2_readimage - read #index image or thumbnail and return its contents */ #if 0 static char *dsc2_readimage(Camera *camera, int index, int thumbnail, int *size) { char kind[16]; int blocks, i; char *buffer = NULL; DEBUG_PRINT_MEDIUM(("Reading image: %i, thumbnail: %i.", index, thumbnail)); if ((*size = dsc2_selectimage(camera, index, thumbnail)) < 0) return NULL; if (thumbnail == DSC_THUMBNAIL) strcpy(kind, "thumbnail"); else strcpy(kind, "image"); if (!(buffer = (char*)malloc(*size))) { DEBUG_PRINT_MEDIUM(("Failed to allocate memory for %s data.", kind)); return NULL; } blocks = (*size - 1)/DSC_BLOCKSIZE + 1; for (i = 0; i < blocks; i++) { if (dsc2_readimageblock(camera, i, &buffer[i*DSC_BLOCKSIZE]) == GP_ERROR) { DEBUG_PRINT_MEDIUM(("Error during %s transfer.", kind)); free(buffer); return NULL; } } DEBUG_PRINT_MEDIUM(("Image: %i read in.", index)); return buffer; } #endif /* dsc2_setimagesize - set size of an image to upload to camera */ static int dsc2_setimagesize(Camera *camera, int size) { DEBUG_PRINT_MEDIUM(("Setting image size to: %i.", size)); if (dsc2_sendcmd(camera, DSC2_CMD_SET_SIZE, size, 0) != GP_OK) return GP_ERROR; if (dsc2_retrcmd(camera) != DSC2_RSP_OK) RETURN_ERROR(EDSCBADRSP); /* bad response */ DEBUG_PRINT_MEDIUM(("Image size set to: %i.", size)); return GP_OK; } /* gp_port_writeimageblock - write size bytes from buffer rounded to 1024 bytes to camera */ static int dsc2_writeimageblock(Camera *camera, int block, char *buffer, int size) { DEBUG_PRINT_MEDIUM(("Writing image block: %i.", block)); memset(camera->pl->buf, 0, DSC_BUFSIZE); camera->pl->buf[0] = 0x01; camera->pl->buf[1] = block; camera->pl->buf[2] = 0xff - block; camera->pl->buf[3] = DSC2_CMD_SEND_DATA; if (DSC_BLOCKSIZE < size) size = DSC_BLOCKSIZE; memcpy(&camera->pl->buf[4], buffer, size); camera->pl->buf[DSC_BUFSIZE - 2] = dsc2_checksum(camera->pl->buf, DSC_BUFSIZE); if (gp_port_write(camera->port, camera->pl->buf, DSC_BUFSIZE) != GP_OK) return GP_ERROR; if (dsc2_retrcmd(camera) != DSC2_RSP_OK) RETURN_ERROR(EDSCBADRSP); /* bad response */ DEBUG_PRINT_MEDIUM(("Block: %i of size: %i written.", block, size)); return GP_OK; } /* dsc2_writeimage - write an image to camera memory, size bytes at buffer */ #if 0 static int dsc2_writeimage(Camera *camera, char *buffer, int size) { int blocks, blocksize, i; DEBUG_PRINT_MEDIUM(("Writing an image of size: %i.", size)); if ((dsc2_setimagesize(camera, size)) != GP_OK) return GP_ERROR; blocks = (size - 1)/DSC_BLOCKSIZE + 1; for (i = 0; i < blocks; i++) { blocksize = size - i*DSC_BLOCKSIZE; if (DSC_BLOCKSIZE < blocksize) blocksize = DSC_BLOCKSIZE; if (dsc2_writeimageblock(camera, i, &buffer[i*DSC_BLOCKSIZE], blocksize) != GP_OK) { DEBUG_PRINT_MEDIUM(("Error during image transfer.")); return GP_ERROR; } } DEBUG_PRINT_MEDIUM(("Image written successfully.")); return GP_OK; } #endif /* dsc2_preview - show selected image on camera's LCD */ #if 0 static int dsc2_preview(Camera *camera, int index) { if (index < 1) RETURN_ERROR(EDSCBADNUM); /* bad image number */ if (dsc2_sendcmd(camera, DSC2_CMD_PREVIEW, index, 0) != GP_OK) return GP_ERROR; if (dsc2_retrcmd(camera) != DSC2_RSP_OK) RETURN_ERROR(EDSCBADRSP); /* bad response */ return GP_OK; } #endif /******************************************************************************/ /* Library interface functions */ int camera_id (CameraText *id) { strcpy(id->text, "panasonic-dc1580"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; char *models[] = { "Panasonic:DC1580", "Nikon:CoolPix 600", NULL }; int i = 0, result; while (models[i]) { memset(&a, 0, sizeof(a)); a.status = GP_DRIVER_STATUS_PRODUCTION; strcpy(a.model, models[i]); a.port = GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 57600; a.speed[4] = 115200; a.speed[5] = 0; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE; CHECK (gp_abilities_list_append(list, a)); i++; } return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { gp_context_status(context, _("Disconnecting camera.")); dsc2_disconnect(camera); if (camera->pl->buf) { free (camera->pl->buf); camera->pl->buf = NULL; } free (camera->pl); camera->pl = NULL; return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int count, result; CHECK (count = dsc2_getindex(camera)); CHECK (gp_list_populate(list, DSC_FILENAMEFMT, count)); return GP_OK; } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int index, result; /* index is the 0-based image number on the camera */ CHECK (index = gp_filesystem_number(camera->fs, folder, filename, context)); index++; info->file.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_SIZE; strcpy(info->file.type, GP_MIME_JPEG); info->file.size = dsc2_selectimage(camera, index, DSC_FULLIMAGE); info->preview.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_SIZE; strcpy(info->preview.type, GP_MIME_JPEG); info->preview.size = dsc2_selectimage(camera, index, DSC_THUMBNAIL); return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int index, i, size, blocks, result; unsigned int id; gp_context_status(context, _("Downloading %s."), filename); /* index is the 0-based image number on the camera */ CHECK (index = gp_filesystem_number(camera->fs, folder, filename, context)); index++; switch (type) { case GP_FILE_TYPE_PREVIEW: size = dsc2_selectimage(camera, index, DSC_THUMBNAIL); break; case GP_FILE_TYPE_NORMAL: size = dsc2_selectimage(camera, index, DSC_FULLIMAGE); break; default: return (GP_ERROR_NOT_SUPPORTED); } if (size < 0) return (size); CHECK (gp_file_set_mime_type(file, GP_MIME_JPEG)); blocks = (size - 1)/DSC_BLOCKSIZE + 1; id = gp_context_progress_start (context, blocks, _("Getting data...")); for (i = 0; i < blocks; i++) { CHECK (dsc2_readimageblock(camera, i, NULL)); CHECK (gp_file_append(file, &camera->pl->buf[4], DSC_BLOCKSIZE)); gp_context_progress_update (context, id, i + 1); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); } gp_context_progress_stop (context, id); return GP_OK; } static int put_file_func (CameraFilesystem *fs, const char *folder, const char *name, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int blocks, blocksize, i, result; const char *data; long unsigned int size; unsigned int id; gp_context_status(context, _("Uploading image: %s."), name); /* We can not figure out file type, at least by now. (? curious, mime type -Marcus) if (strcmp(file->type, "image/jpg") != 0) { dsc_print_message(camera, "JPEG image format allowed only."); return GP_ERROR; } */ gp_file_get_data_and_size (file, &data, &size); if (size > DSC_MAXIMAGESIZE) { gp_context_message (context, _("File size is %ld bytes. " "The size of the largest file possible to " "upload is: %i bytes."), size, DSC_MAXIMAGESIZE); return GP_ERROR; } if ((result = dsc2_setimagesize(camera, size)) != GP_OK) return result; blocks = (size - 1)/DSC_BLOCKSIZE + 1; id = gp_context_progress_start (context, blocks, _("Uploading...")); for (i = 0; i < blocks; i++) { blocksize = size - i*DSC_BLOCKSIZE; if (DSC_BLOCKSIZE < blocksize) blocksize = DSC_BLOCKSIZE; result = dsc2_writeimageblock(camera, i, (char*)&data[i*DSC_BLOCKSIZE], blocksize); if (result != GP_OK) return result; gp_context_progress_update (context, id, i + 1); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); } gp_context_progress_stop (context, id); return GP_OK; } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int index, result; gp_context_status(context, _("Deleting image %s."), filename); /* index is the 0-based image number on the camera */ CHECK (index = gp_filesystem_number (camera->fs, folder, filename, context)); index++; return dsc2_delete(camera, index); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy(about->text, _("Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks .")); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .put_file_func = put_file_func, .del_file_func = delete_file_func, }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; int result, selected_speed; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->about = camera_about; camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); camera->pl->buf = malloc (sizeof (char) * DSC_BUFSIZE); if (!camera->pl->buf) { free (camera->pl); camera->pl = NULL; return (GP_ERROR_NO_MEMORY); } CHECK (gp_port_set_timeout (camera->port, 5000)); /* Configure the port (and remember the speed) */ CHECK (gp_port_get_settings (camera->port, &settings)); selected_speed = settings.serial.speed; settings.serial.speed = 9600; /* hand shake speed */ settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; CHECK (gp_port_set_settings (camera->port, settings)); CHECK (gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera)); /* Connect with the selected speed */ return dsc2_connect(camera, selected_speed); } /* End of dc1580.c */ libgphoto2-2.5.9/camlibs/panasonic/coolshot/0000755000175000001440000000000012623156267016026 500000000000000libgphoto2-2.5.9/camlibs/panasonic/coolshot/README.panasonic-coolshot0000644000175000001440000000117512561423351022424 00000000000000Panasonic KXL-600A and KXL-601A a.k.a. "Coolshot" This driver is based upon protocol reverse-engineered using ComLite32 under Windows 95. For questions/comments, email the library author: Chris Pinkham cpinkham@infi.net TODO List --------- - file upload capability - better error checking ("fixme"s) & recovery - modify coolshot_file_count to return GP_ code and take *count as argument Comment by Lutz : Why? Throughout libgphoto2, we say that negative return values are errors. That is, we do CHECK_RESULT (pic_num = count_pictures (camera)); everywhere and let CHECK_RESULT test for a return value < 0. libgphoto2-2.5.9/camlibs/panasonic/coolshot/library.c0000644000175000001440000003664612610415536017566 00000000000000/****************************************************************/ /* library.c - Gphoto2 library for accessing the Panasonic */ /* Coolshot KXL-600A & KXL-601A digital cameras. */ /* */ /* Copyright 2001 Chris Pinkham */ /* */ /* Author: Chris Pinkham */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #define _POSIX_C_SOURCE 199309L #define _BSD_SOURCE #include "config.h" #include #include #include #include #include "library.h" #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "coolshot" #define COOL_SLEEP 10000 #define RETRIES 10 #define COOLSHOT_DONE 0x00 #define COOLSHOT_PKT 0x01 #define COOLSHOT_ENQ 0x05 #define COOLSHOT_ACK 0x06 #define COOLSHOT_NAK 0x15 static int coolshot_ack (Camera *camera); #if 0 static int coolshot_nak (Camera *camera); #endif static int coolshot_sp (Camera *camera); static int coolshot_fs( Camera *camera, int number ); static int coolshot_write_packet (Camera *camera, char *packet); static int coolshot_read_packet (Camera *camera, char *packet); static int coolshot_check_checksum( char *packet, int length ); static int coolshot_download_image( Camera *camera, CameraFile *file, char *buf, int *len, int thumbnail, GPContext *context ); static int packet_size = 500; /* ??set mode?? */ int coolshot_sm( Camera *camera ) { char buf[16]; GP_DEBUG ("* coolshot_sm"); memset( buf, 0, sizeof( buf )); buf[0] = COOLSHOT_PKT; buf[2] = 'S'; buf[3] = 'M'; buf[4] = 0x01; buf[15] = 0x02; coolshot_write_packet( camera, buf ); /* read ACK */ coolshot_read_packet( camera, buf ); /* read data */ coolshot_read_packet( camera, buf ); /* send ACK */ coolshot_ack( camera ); packet_size = 128; return( GP_OK ); } /* ?set baud? */ int coolshot_sb( Camera *camera, int speed ) { char buf[16]; gp_port_settings settings; GP_DEBUG ("* coolshot_sb"); GP_DEBUG ("*** speed: %i", speed); memset( buf, 0, sizeof( buf )); buf[0] = COOLSHOT_PKT; buf[2] = 'S'; buf[3] = 'B'; buf[4] = 0x01; buf[15] = 0x02; gp_port_get_settings (camera->port, &settings); switch (speed) { case 9600: buf[4] = '1'; settings.serial.speed = 9600; break; case -1: case 19200: buf[4] = '2'; settings.serial.speed = 19200; break; case 28800: buf[4] = '3'; settings.serial.speed = 28800; break; case 38400: buf[4] = '4'; settings.serial.speed = 38400; break; case 57600: buf[4] = '5'; settings.serial.speed = 57600; break; case 0: /* Default speed */ case 115200: buf[4] = '6'; settings.serial.speed = 115200; break; default: return (GP_ERROR_IO_SERIAL_SPEED); } coolshot_enq( camera ); /* set speed */ coolshot_write_packet( camera, buf ); /* read ack */ coolshot_read_packet( camera, buf ); /* read OK */ coolshot_read_packet( camera, buf ); /* ack the OK */ coolshot_ack( camera ); CHECK (gp_port_set_settings (camera->port, settings)); usleep(10 * 1000); return (GP_OK); } static int coolshot_fs( Camera *camera, int number ) { char buf[16]; GP_DEBUG ("* coolshot_fs"); memset( buf, 0, sizeof( buf )); buf[0] = COOLSHOT_PKT; buf[2] = 'F'; buf[3] = 'S'; buf[7] = number; buf[15] = 0x02; coolshot_enq( camera ); coolshot_write_packet( camera, buf ); /* read ACK */ coolshot_read_packet( camera, buf ); /* read data */ coolshot_read_packet( camera, buf ); /* send ACK */ coolshot_ack( camera ); return( GP_OK ); } static int coolshot_sp( Camera *camera ) { char buf[16]; GP_DEBUG ("* coolshot_sp"); memset( buf, 0, sizeof( buf )); buf[0] = COOLSHOT_PKT; buf[2] = 'S'; buf[3] = 'P'; buf[4] = 0x02; buf[15] = 0x02; coolshot_enq( camera ); coolshot_write_packet( camera, buf ); /* read ACK */ coolshot_read_packet( camera, buf ); packet_size = 500; return( GP_OK ); } int coolshot_file_count (Camera *camera) { char buf[16]; int count = 0; GP_DEBUG ("* coolshot_file_count"); memset( buf, 0, sizeof( buf )); buf[0] = COOLSHOT_PKT; buf[2] = 'R'; buf[3] = 'N'; buf[5] = 0x01; buf[15] = 0x02; coolshot_enq( camera ); /* request count */ coolshot_write_packet( camera, buf ); /* read ack */ coolshot_read_packet( camera, buf ); /* read data packet */ coolshot_read_packet( camera, buf ); count = buf[7]; usleep( COOL_SLEEP ); coolshot_ack( camera ); return( count ); } int coolshot_request_image( Camera *camera, CameraFile *file, char *buf, int *len, int number, GPContext *context ) { char packet[16]; GP_DEBUG ("* coolshot_request_image"); memset( packet, 0, sizeof( packet )); packet[0] = COOLSHOT_PKT; packet[2] = 'R'; packet[3] = 'D'; packet[7] = number; packet[15] = 0x02; /* fixme */ coolshot_fs( camera, number ); coolshot_sp( camera ); coolshot_enq( camera ); /* request image */ coolshot_write_packet( camera, packet ); /* read ack */ coolshot_read_packet( camera, packet ); /* read OK */ coolshot_read_packet( camera, packet ); /* read data */ coolshot_download_image( camera, file, buf, len, 0, context ); return( GP_OK ); } int coolshot_request_thumbnail( Camera *camera, CameraFile *file, char *buf, int *len, int number, GPContext *context ) { char packet[16]; GP_DEBUG ("* coolshot_request_thumbnail"); memset( packet, 0, sizeof( packet )); packet[0] = COOLSHOT_PKT; packet[2] = 'R'; packet[3] = 'M'; packet[7] = number; packet[15] = 0x02; /* fixme */ coolshot_fs( camera, number ); /* coolshot_sp( camera ); */ coolshot_enq( camera ); /* request image */ coolshot_write_packet( camera, packet ); /* read ack */ coolshot_read_packet( camera, packet ); /* read OK */ coolshot_read_packet( camera, packet ); /* read data */ coolshot_download_image( camera, file, buf, len, 1, context ); return( GP_OK ); } static int coolshot_check_checksum( char *packet, int length ) { int checksum = 0; int p_csum = 0; int x; unsigned char *ptr; ptr = (unsigned char *)packet + 2; for( x = 2; x < (length - 4 ); x++ ) { checksum += *(ptr++); /* checksum += (unsigned char)packet[x]; */ } checksum &= 0xffff; /* 16 bit checksum */ p_csum = (unsigned char)packet[length - 4]; p_csum = p_csum << 8; p_csum += (unsigned char)packet[length - 3]; if ( checksum == p_csum ) { return( GP_OK ); } else { return( GP_ERROR ); } } int coolshot_download_image( Camera *camera, CameraFile *file, char *buf, int *len, int thumbnail, GPContext *context ) { char packet[1024]; int data_len; int bytes_read = 0; int last_good = 0; unsigned int id; GP_DEBUG ("* coolshot_download_image"); memset( packet, 0, sizeof( packet )); packet[2] = '0'; packet[3] = '0'; coolshot_ack( camera ); coolshot_read_packet( camera, packet ); data_len = (unsigned char)packet[6] * 256; data_len += (unsigned char)packet[7]; /* fixme, get rid of hardcoded length */ if ( coolshot_check_checksum( packet, 8 + packet_size + 4 ) == GP_OK ) { coolshot_ack( camera ); last_good = 1; } else { /* coolshot_nak( camera ); */ last_good = 0; } id = gp_context_progress_start (context, thumbnail ? 1800 : 80000, _("Downloading image...")); while( strncmp( packet + 2, "DT", 2 ) == 0 ) { /* process packet */ if ( last_good ) { data_len = (unsigned char)packet[6] * 256; data_len += (unsigned char)packet[7]; memcpy( buf + bytes_read, packet + 8, data_len ); bytes_read += data_len; } gp_context_progress_update (context, id, bytes_read); /* fixme, add ability to cancel download */ coolshot_read_packet( camera, packet ); data_len = (unsigned char)packet[6] * 256; data_len += (unsigned char)packet[7]; /* fixme, get rid of hardcoded length */ if ( coolshot_check_checksum( packet, 8 + packet_size + 4 ) == GP_OK) { coolshot_ack( camera ); last_good = 1; } else { /* coolshot_nak( camera ); */ last_good = 0; } } gp_context_progress_stop (context, id); coolshot_ack( camera ); *len = bytes_read; return( GP_OK ); } static int coolshot_write_packet (Camera *camera, char *packet) { int x, ret, r, checksum=0, length; GP_DEBUG ("* coolshot_write_packet"); if ( packet[0] == COOLSHOT_PKT ) { /* fixme */ length = 16; for ( x = 2 ; x < 12; x++ ) { checksum += (unsigned char)packet[x]; } packet[length - 4] = (checksum >> 8 ) & 0xff; packet[length - 3] = checksum & 0xff; } else if (( packet[0] == COOLSHOT_ENQ ) || ( packet[0] == COOLSHOT_ACK ) || ( packet[0] == COOLSHOT_NAK )) { length = 1; } else { length = 0; /* fixme */ return( -1 ); } for (r = 0; r < RETRIES; r++) { ret = gp_port_write (camera->port, packet, length); if (ret == GP_ERROR_TIMEOUT) continue; return (ret); } return (GP_ERROR_TIMEOUT); } static int coolshot_read_packet (Camera *camera, char *packet) { int r = 0, x = 0, ret, done, length=0; int blocksize, bytes_read; GP_DEBUG ("* coolshot_read_packet"); read_packet_again: packet[0] = 0; if (r > 0) GP_DEBUG ("* reading again..."); done = 0; blocksize = 1; for (r = 0; r < RETRIES; r++) { bytes_read = gp_port_read (camera->port, packet, blocksize); if (bytes_read == GP_ERROR_TIMEOUT) continue; if (bytes_read < 0) return (bytes_read); if ( packet[0] == COOLSHOT_ENQ ) { usleep( COOL_SLEEP ); coolshot_ack( camera ); coolshot_read_packet( camera, packet ); return( GP_OK ); } if (( packet[0] == COOLSHOT_ACK ) || ( packet[0] == COOLSHOT_DONE )) { return( GP_OK ); } if ( packet[0] != COOLSHOT_PKT ) { return( GP_ERROR ); } bytes_read = gp_port_read (camera->port, packet + 1, 3 ); if (bytes_read == GP_ERROR_TIMEOUT) continue; if (bytes_read < 0) return (bytes_read); /* Determine the packet type */ if (( strncmp( packet + 2, "OK", 2 ) == 0 ) || ( strncmp( packet + 2, "DE", 2 ) == 0 ) || ( strncmp( packet + 2, "SB", 2 ) == 0 )) { /* normal 16-byte packet, so read the other 12 bytes */ ret = gp_port_read (camera->port, packet + 4, 12 ); if (ret == GP_ERROR_TIMEOUT) { /* fixme */ /* coolshot_nak (camera); */ goto read_packet_again; } if (ret < 0) return (ret); return( GP_OK ); } else if ( strncmp( packet + 2, "DT", 2 ) == 0 ) { /* read in packet number and length */ ret = gp_port_read (camera->port, packet + 4, 4 ); /* fixme, error detection */ length = (unsigned char)packet[6] * 256; length += (unsigned char)packet[7]; if (( packet_size == 128 ) || ( length == 128 )) { length = 128; } else { length = 500; } length += 4; ret = gp_port_read (camera->port, packet + 8, length ); /* fixme, error detection */ x = 0; while(( ret == GP_ERROR_TIMEOUT ) && ( x < RETRIES )) { x++; ret = gp_port_read (camera->port, packet + 8, length ); } return( GP_OK ); } if (done) break; } return (GP_ERROR_TIMEOUT); } static int coolshot_ack (Camera *camera) { int ret, r = 0; char buf[16]; GP_DEBUG ("* coolshot_ack"); buf[0] = COOLSHOT_ACK; for (r = 0; r < RETRIES; r++) { ret = coolshot_write_packet (camera, buf); if (ret == GP_ERROR_TIMEOUT) continue; if (ret == GP_OK) return (ret); } return (GP_ERROR_TIMEOUT); } #if 0 static int coolshot_nak (Camera *camera) { int ret, r = 0; char buf[16]; GP_DEBUG ("* coolshot_nak"); buf[0] = COOLSHOT_NAK; for (r = 0; r < RETRIES; r++) { ret = coolshot_write_packet (camera, buf); if (ret == GP_ERROR_TIMEOUT) continue; if (ret == GP_OK) return (ret); } return (GP_ERROR_TIMEOUT); } #endif int coolshot_enq (Camera *camera) { int ret, r = 0; char buf[16]; GP_DEBUG ("* coolshot_enq"); buf[0] = COOLSHOT_ENQ; for (r = 0; r < RETRIES; r++) { ret = coolshot_write_packet (camera, buf); if (ret == GP_ERROR_TIMEOUT) continue; if (ret != GP_OK) return (ret); ret = coolshot_read_packet (camera, buf); if (ret == GP_ERROR_TIMEOUT) continue; if (ret != GP_OK) return (ret); if (buf[0] == COOLSHOT_ACK) return (GP_OK); else return (GP_ERROR_CORRUPTED_DATA); } return (GP_ERROR_TIMEOUT); } #define WIDTH 40 #define HEIGHT 30 #define Y_ADJ 25 #define RIND(x, y, w) (((w)*(HEIGHT))+((y/2)*(WIDTH/2))+(x/2)) #define BIND(x, y, w) (((w)*(HEIGHT))+((WIDTH/4)*(HEIGHT))+((y/2)*(WIDTH/2))+(x/2)) int coolshot_build_thumbnail (char *data, int *size) { char thumbnail[32768]; char *ptr; unsigned char *udata = (unsigned char *)data; char *src; int length; int x, y; int loop; int Y, U, V; ptr = thumbnail; src = data; x = y = 0; for( loop = 0; loop < *size; loop++ ) { if ( x == WIDTH ) { x = 0; y++; } if ( y < HEIGHT ) { /* from imagemagick Y = 0.299000*R+0.587000*G+0.114000*B Cb= -0.168736*R-0.331264*G+0.500000*B Cr= 0.500000*R-0.418688*G-0.081316*B R = Y +1.402000*Cr G = Y-0.344136*Cb-0.714136*Cr B = Y+1.772000*Cb */ Y = *src + Y_ADJ; U = udata[RIND(x,y,WIDTH)] - 128; V = udata[BIND(x,y,WIDTH)] - 128; ptr[0] = Y + ( 1.402000 * V ); ptr[1] = Y - ( 0.344136 * U ) - ( 0.714136 * V ); ptr[2] = Y + ( 1.772000 * U ); ptr += 3; x++; src++; } } /* copy the header */ sprintf( data, "P6\n" "# CREATOR: gphoto2, panasonic coolshot library\n" "%d %d\n" "255\n", 80, 60 ); length = strlen( data ); /* copy the image doubling both height and width */ ptr = data + length; for( y = 0; y < HEIGHT; y++ ) { src = thumbnail + (y * WIDTH * 3); for( x = 0; x < WIDTH ; x++, src += 3 ) { ptr[0] = src[0]; ptr[1] = src[1]; ptr[2] = src[2]; ptr += 3; ptr[0] = src[0]; ptr[1] = src[1]; ptr[2] = src[2]; ptr += 3; } src = thumbnail + (y * WIDTH * 3); for( x = 0; x < WIDTH ; x++, src += 3 ) { ptr[0] = src[0]; ptr[1] = src[1]; ptr[2] = src[2]; ptr += 3; ptr[0] = src[0]; ptr[1] = src[1]; ptr[2] = src[2]; ptr += 3; } } length += WIDTH * HEIGHT * 3 * 4; *size = length; return( GP_OK ); } libgphoto2-2.5.9/camlibs/panasonic/coolshot/library.h0000644000175000001440000000422212610415536017554 00000000000000/****************************************************************/ /* library.h - Gphoto2 library for accessing the Panasonic */ /* Coolshot KXL-600A & KXL-601A digital cameras. */ /* */ /* Copyright 2001 Chris Pinkham */ /* */ /* Author: Chris Pinkham */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #define CHECK(result) {int res; res = result; if (res < 0) return (res);} int coolshot_sm (Camera *camera); int coolshot_sb (Camera *camera, int speed); int coolshot_enq (Camera *camera); int coolshot_file_count (Camera *camera); int coolshot_request_image (Camera *camera, CameraFile *file, char *buf, int *len, int number, GPContext *context); int coolshot_request_thumbnail (Camera *camera, CameraFile *file, char *buf, int *len, int number, GPContext *context); int coolshot_build_thumbnail (char *data, int *size); libgphoto2-2.5.9/camlibs/panasonic/coolshot/coolshot.c0000644000175000001440000002022612610415536017737 00000000000000/****************************************************************/ /* coolshot.c - Gphoto2 library for accessing the Panasonic */ /* Coolshot KXL-600A & KXL-601A digital cameras. */ /* */ /* Copyright 2001 Chris Pinkham */ /* */ /* Author: Chris Pinkham */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #include "config.h" #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "library.h" #define GP_MODULE "coolshot" #define TIMEOUT 2000 #define DEFAULT_SPEED 9600 #define COOLSHOT_VERSION "0.4" #define COOLSHOT_LAST_MOD "09/06/2001 02:28 EST" /* define what cameras we support */ static char *coolshot_cameras[] = { "Panasonic:Coolshot KXL-600A", "Panasonic:Coolshot KXL-601A", "" }; struct _CameraPrivateLibrary { int speed; }; int camera_id (CameraText *id) { /* GP_DEBUG ("* camera_id"); */ strcpy (id->text, "coolshot"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { int x = 0; char *ptr; CameraAbilities a; /* GP_DEBUG ("* camera_abilities"); */ ptr = coolshot_cameras[x++]; while (*ptr) { memset(&a, 0, sizeof(a)); strcpy (a.model, ptr ); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 57600; a.speed[4] = 115200; a.speed[5] = 0; /* fixme, need to set these operations lists to correct values */ a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_PREVIEW; /* fixme, believe supports GP_FOLDER_PUT_FILE */ a.folder_operations = GP_FOLDER_OPERATION_NONE; gp_abilities_list_append (list, a); ptr = coolshot_cameras[x++]; } return (GP_OK); } static int camera_start (Camera *camera) { GP_DEBUG ("* camera_start"); /* coolshot_sb sets to default speed if speed == 0 */ CHECK (coolshot_sb (camera, camera->pl->speed)); return( GP_OK ); } static int camera_stop (Camera *camera) { GP_DEBUG ("* camera_stop"); CHECK (coolshot_sb( camera, DEFAULT_SPEED)); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int count; GP_DEBUG ("* file_list_func"); GP_DEBUG ("*** folder: %s", folder); CHECK (camera_start (camera)); CHECK (count = coolshot_file_count (camera)); CHECK (gp_list_populate (list, "pic_%04i.jpg", count)); return (camera_stop (camera)); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int n; GP_DEBUG ("* get_info_func"); GP_DEBUG ("*** folder: %s", folder); GP_DEBUG ("*** filename: %s",filename); CHECK (camera_start (camera)); /* Get the file number from the CameraFileSystem */ CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); /* fixme, get file size also */ info->file.fields = GP_FILE_INFO_TYPE; strcpy (info->file.type, GP_MIME_JPEG ); info->preview.fields = GP_FILE_INFO_TYPE; strcpy (info->preview.type, GP_MIME_JPEG); return (camera_stop (camera)); } static int camera_exit (Camera *camera, GPContext *context) { if (camera->pl) { free (camera->pl); camera->pl = NULL; } return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; char data[128000]; int size, n; GP_DEBUG ("* camera_file_get"); GP_DEBUG ("*** folder: %s", folder); GP_DEBUG ("*** filename: %s",filename); GP_DEBUG ("*** type: %d", type); CHECK (camera_start (camera)); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { camera_stop (camera); return (GP_ERROR_CANCEL); } /* * Get the file number from the CameraFileSystem (and increment * because we need numbers starting with 1) */ CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); n++; switch (type) { case GP_FILE_TYPE_PREVIEW: CHECK (coolshot_request_thumbnail (camera, file, data, &size, n, context)); CHECK (coolshot_build_thumbnail (data, &size)); CHECK (gp_file_set_mime_type (file, GP_MIME_PPM)); break; case GP_FILE_TYPE_NORMAL: CHECK (coolshot_request_image (camera, file, data, &size, n, context)); CHECK (gp_file_set_mime_type (file, GP_MIME_JPEG)); break; default: return (GP_ERROR_NOT_SUPPORTED); } CHECK (gp_file_append (file, data, size)); return (camera_stop (camera)); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int count; char tmp[1024]; GP_DEBUG ("* camera_summary"); CHECK (camera_start (camera)); /* possibly get # pics, mem free, etc. */ count = coolshot_file_count (camera); sprintf (tmp, "Frames Taken : %4d\n", count); strcat (summary->text, tmp ); return (camera_stop (camera)); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { GP_DEBUG ("* camera_about"); strcpy (about->text, _("coolshot library v" COOLSHOT_VERSION " " COOLSHOT_LAST_MOD "\n" "Chris Pinkham \n" "Support for Panasonic Coolshot digital cameras\n" "based on reverse engineering serial protocol.\n" "\n")); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func, }; int camera_init (Camera *camera, GPContext *context) { int count; GPPortSettings settings; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); /* Set up the port and remember the requested speed */ CHECK (gp_port_get_settings (camera->port, &settings)); camera->pl->speed = settings.serial.speed; settings.serial.speed = DEFAULT_SPEED; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; CHECK (gp_port_set_settings (camera->port, settings)); CHECK (gp_port_set_timeout (camera->port, TIMEOUT)); /* check to see if camera is really there */ CHECK (coolshot_enq (camera)); coolshot_sm (camera); /* get number of images */ CHECK (count = coolshot_file_count (camera)); CHECK (camera_start (camera)); CHECK (gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera)); /* coolshot_sb sets to default speed if speed == 0 */ CHECK (coolshot_sb (camera, camera->pl->speed)); return (camera_stop (camera)); } libgphoto2-2.5.9/camlibs/panasonic/coolshot/Makefile-files0000644000175000001440000000074012561423351020477 00000000000000EXTRA_DIST += panasonic/coolshot/README.panasonic-coolshot panasonic/coolshot/ChangeLog camlibdoc_DATA += panasonic/coolshot/README.panasonic-coolshot EXTRA_LTLIBRARIES += panasonic_coolshot.la panasonic_coolshot_la_SOURCES = \ panasonic/coolshot/coolshot.c \ panasonic/coolshot/library.c panasonic/coolshot/library.h panasonic_coolshot_la_LDFLAGS = $(camlib_ldflags) panasonic_coolshot_la_DEPENDENCIES = $(camlib_dependencies) panasonic_coolshot_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/panasonic/coolshot/ChangeLog0000644000175000001440000000100512557123324017506 000000000000002002-01-04 Chris Pinkham * coolshot.c, library.c, library.h: updated code to use new gp_file_progress instead of gp_camera_progress. 2001-11-28 Chris Pinkham * README: took out mention of protocol.txt until file is ready. * coolshot.c, library.c, library.h: fixed bug in code where value passed to gp_camera_progress was always 0.0. Changed license of source code from GPL to LPGL. 2001-11-28 Chris Pinkham * ChangeLog: created file. libgphoto2-2.5.9/camlibs/panasonic/Makefile-files0000644000175000001440000000136012561423351016644 00000000000000# SUBDIRS = coolshot l859 EXTRA_DIST += panasonic/README.panasonic panasonic/ChangeLog camlibdoc_DATA += panasonic/README.panasonic EXTRA_LTLIBRARIES += panasonic_dc1000.la panasonic_dc1000_la_SOURCES = \ panasonic/dc1000.c panasonic/dc1000.h \ panasonic/dc.c panasonic/dc.h panasonic_dc1000_la_LDFLAGS = $(camlib_ldflags) panasonic_dc1000_la_DEPENDENCIES = $(camlib_dependencies) panasonic_dc1000_la_LIBADD = $(camlib_libadd) EXTRA_LTLIBRARIES += panasonic_dc1580.la panasonic_dc1580_la_SOURCES = \ panasonic/dc1580.c panasonic/dc1580.h \ panasonic/dc.c panasonic/dc.h \ panasonic/dc1000.h panasonic_dc1580_la_LDFLAGS = $(camlib_ldflags) panasonic_dc1580_la_DEPENDENCIES = $(camlib_dependencies) panasonic_dc1580_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/panasonic/dc1000.c0000644000175000001440000003372312610415536015150 00000000000000/* Copyright 2000 Mariusz Zynel (gPhoto port) Copyright 2000 Fredrik Roubert (idea) Copyright 1999 Galen Brooks (DC1580 code) This file is part of the gPhoto project and may only be used, modified, and distributed under the terms of the gPhoto project license, COPYING. By continuing to use, modify, or distribute this file you indicate that you have read the license, understand and accept it fully. THIS SOFTWARE IS PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE. Note: This is a Panasonic PV/NV-DC1000 camera gPhoto library source code. */ #include "config.h" #include #include #include #include #ifdef HAVE_MEMORY_H #include #endif #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "dc.h" #include "dc1000.h" #ifndef __FILE__ # define __FILE__ "dc1000.c" #endif #define GP_MODULE "dc1000" /******************************************************************************/ /* Internal utility functions */ /* dsc1_connect - try hand shake with camera and establish connection */ static int dsc1_connect(Camera *camera, int speed) { uint8_t data = 0; DEBUG_PRINT_MEDIUM(("Connecting a camera.")); if (dsc1_setbaudrate(camera, speed) != GP_OK) return GP_ERROR; if (dsc1_getmodel(camera) != DSC1) RETURN_ERROR(EDSCBADDSC); /* bad camera model */ dsc1_sendcmd(camera, DSC1_CMD_CONNECT, &data, 1); if (dsc1_retrcmd(camera) != DSC1_RSP_OK) RETURN_ERROR(EDSCBADRSP); /* bad response */ DEBUG_PRINT_MEDIUM(("Camera connected successfully.")); return GP_OK; } /* dsc1_disconnect - reset camera, free buffers and close files */ static int dsc1_disconnect(Camera *camera) { DEBUG_PRINT_MEDIUM(("Disconnecting the camera.")); if (dsc1_sendcmd(camera, DSC1_CMD_RESET, NULL, 0) != GP_OK) return GP_ERROR; if (dsc1_retrcmd(camera) != DSC1_RSP_OK) RETURN_ERROR(EDSCBADRSP) /* bad response */ else sleep(DSC_PAUSE); /* let camera to redraw its screen */ DEBUG_PRINT_MEDIUM(("Camera disconnected.")); return GP_OK; } /* dsc1_getindex - retrieve the number of images stored in camera memory */ static int dsc1_getindex(Camera *camera) { int result = GP_ERROR; DEBUG_PRINT_MEDIUM(("Retrieving the number of images.")); if (dsc1_sendcmd(camera, DSC1_CMD_GET_INDEX, NULL, 0) != GP_OK) return GP_ERROR; if (dsc1_retrcmd(camera) == DSC1_RSP_INDEX) result = camera->pl->size / 2; else RETURN_ERROR(EDSCBADRSP); /* bad response */ DEBUG_PRINT_MEDIUM(("Number of images: %i", result)); return result; } /* dsc1_delete - delete image #index from camera memory */ static int dsc1_delete(Camera *camera, uint8_t index) { DEBUG_PRINT_MEDIUM(("Deleting image: %i.", index)); if (index < 1) RETURN_ERROR(EDSCBADNUM); /* bad image number */ if (dsc1_sendcmd(camera, DSC1_CMD_DELETE, &index, 1) != GP_OK) return GP_ERROR; if (dsc1_retrcmd(camera) != DSC1_RSP_OK) RETURN_ERROR(EDSCBADRSP); /* bad response */ DEBUG_PRINT_MEDIUM(("Image: %i deleted.", index)); return GP_OK; } /* dsc1_selectimage - select image to download, return its size */ static int dsc1_selectimage(Camera *camera, uint8_t index) { int size = 0; DEBUG_PRINT_MEDIUM(("Selecting image: %i.", index)); if (index < 1) RETURN_ERROR(EDSCBADNUM); /* bad image number */ if (dsc1_sendcmd(camera, DSC1_CMD_SELECT, &index, 1) != GP_OK) return GP_ERROR; if (dsc1_retrcmd(camera) != DSC1_RSP_IMGSIZE) RETURN_ERROR(EDSCBADRSP); /* bad response */ if (camera->pl->size != 4) RETURN_ERROR(EDSCBADRSP); /* bad response */ size = (uint32_t)camera->pl->buf[3] | ((uint8_t)camera->pl->buf[2] << 8) | ((uint8_t)camera->pl->buf[1] << 16) | ((uint8_t)camera->pl->buf[0] << 24); DEBUG_PRINT_MEDIUM(("Selected image: %i, size: %i.", index, size)); return size; } /* gp_port_readimageblock - read #block block (1024 bytes) of an image into buf */ static int dsc1_readimageblock(Camera *camera, int block, char *buffer) { char buf[2]; DEBUG_PRINT_MEDIUM(("Reading image block: %i.", block)); buf[0] = (uint8_t)(block >> 8); buf[1] = (uint8_t)block; if (dsc1_sendcmd(camera, DSC1_CMD_GET_DATA, buf, 2) != GP_OK) return GP_ERROR; if (dsc1_retrcmd(camera) != DSC1_RSP_DATA) RETURN_ERROR(EDSCBADRSP); /* bad response */ if (buffer) memcpy(buffer, camera->pl->buf, camera->pl->size); DEBUG_PRINT_MEDIUM(("Block: %i read in.", block)); return camera->pl->size; } /* dsc1_readimage - read #index image or thumbnail and return its contents */ #if 0 static char *dsc1_readimage(Camera *camera, int index, int *size) { int rsize, i, s; char *buffer = NULL; DEBUG_PRINT_MEDIUM(("Reading image: %i.", index)); if ((*size = dsc1_selectimage(camera, index)) < 0) return NULL; if (!(buffer = (char*)malloc(*size))) { DEBUG_PRINT_MEDIUM(("Failed to allocate memory for image data.")); return NULL; } for (i = 0, s = 0; s < *size; i++) { if ((rsize = dsc1_readimageblock(camera, i, &buffer[s])) == GP_ERROR) { DEBUG_PRINT_MEDIUM(("Error during image transfer.")); free(buffer); return NULL; } s += rsize; } DEBUG_PRINT_MEDIUM(("Image: %i read in.", index)); return buffer; } #endif /* dsc1_setimageres - set image resolution based on its size, used on upload to camera */ static int dsc1_setimageres(Camera *camera, int size) { dsc_quality_t res; DEBUG_PRINT_MEDIUM(("Setting image resolution, image size: %i.", size)); if (size < 65536) res = normal; else if (size < 196608) res = fine; else res = superfine; if (dsc1_sendcmd(camera, DSC1_CMD_SET_RES, &res, 1) != GP_OK) return GP_ERROR; if (dsc1_retrcmd(camera) != DSC1_RSP_OK) RETURN_ERROR(EDSCBADRSP); /* bad response */ DEBUG_PRINT_MEDIUM(("Image resolution set to: %i", res)); return GP_OK; } /* gp_port_writeimageblock - write size bytes from buffer rounded to 1024 bytes to camera */ static int dsc1_writeimageblock(Camera *camera, int block, char *buffer, int size) { DEBUG_PRINT_MEDIUM(("Writing image block: %i", block)); dsc1_sendcmd(camera, DSC1_CMD_SEND_DATA, buffer, size); if (dsc1_retrcmd(camera) != DSC1_RSP_OK) RETURN_ERROR(EDSCBADRSP); /* bad response */ DEBUG_PRINT_MEDIUM(("Block: %i of size: %i written.", block, size)); return GP_OK; } /* gp_port_writeimage - write an image to camera memory, size bytes at buffer */ #if 0 static int dsc1_writeimage(Camera *camera, char *buffer, int size) { int blocks, blocksize, i; DEBUG_PRINT_MEDIUM(("Writing an image of size: %i.", size)); if ((dsc1_setimageres(camera, size)) != GP_OK) return GP_ERROR; blocks = (size - 1)/DSC_BLOCKSIZE + 1; for (i = 0; i < blocks; i++) { blocksize = size - i*DSC_BLOCKSIZE; if (DSC_BLOCKSIZE < blocksize) blocksize = DSC_BLOCKSIZE; if (dsc1_writeimageblock(camera, i, &buffer[i*DSC_BLOCKSIZE], blocksize) != GP_OK) { DEBUG_PRINT_MEDIUM(("Error during image transfer.")); return GP_ERROR; } } DEBUG_PRINT_MEDIUM(("Image written successfully.")); return GP_OK; } #endif /* dsc1_preview - show selected image on camera's LCD - is it supported? */ #if 0 static int dsc1_preview(Camera *camera, int index) { if (index < 1) RETURN_ERROR(EDSCBADNUM); /* bad image number */ if (dsc1_sendcmd(camera, DSC1_CMD_PREVIEW, &index, 1) != GP_OK) return GP_ERROR; if (dsc1_retrcmd(camera) != DSC1_RSP_OK) RETURN_ERROR(EDSCBADRSP); /* bad response */ return GP_OK; } #endif /******************************************************************************/ /* Library interface functions */ int camera_id (CameraText *id) { strcpy(id->text, "panasonic-dc1000"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; int result; memset (&a, 0, sizeof(a)); strcpy(a.model, "Panasonic:DC1000"); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 57600; a.speed[4] = 115200; a.speed[5] = 0; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE; CHECK (gp_abilities_list_append(list, a)); return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { gp_context_status(context, _("Disconnecting camera.")); dsc1_disconnect(camera); if (camera->pl->buf) { free (camera->pl->buf); camera->pl->buf = NULL; } free (camera->pl); camera->pl = NULL; return GP_OK; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int count; if ((count = dsc1_getindex (camera)) == GP_ERROR) return GP_ERROR; gp_list_populate (list, DSC_FILENAMEFMT, count); return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int index, size, rsize, i, s; unsigned int id; if (type != GP_FILE_TYPE_NORMAL) return (GP_ERROR_NOT_SUPPORTED); gp_context_status(context, _("Downloading image %s."), filename); /* index is the 0-based image number on the camera */ index = gp_filesystem_number (camera->fs, folder, filename, context); if (index < 0) return (index); if ((size = dsc1_selectimage(camera, index + 1)) < 0) return (GP_ERROR); gp_file_set_mime_type (file, GP_MIME_JPEG); id = gp_context_progress_start (context, size, _("Getting data...")); for (i = 0, s = 0; s < size; i++) { if ((rsize = dsc1_readimageblock(camera, i, NULL)) == GP_ERROR) return GP_ERROR; s += rsize; gp_file_append (file, camera->pl->buf, camera->pl->size); gp_context_progress_update (context, id, s); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); } gp_context_progress_stop (context, id); return GP_OK; } static int put_file_func (CameraFilesystem *fs, const char *folder, const char *name, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int blocks, blocksize, i; int result; const char *data; unsigned long int size; unsigned int id; gp_context_status(context, _("Uploading image: %s."), name); /* We can not figure out file type, at least by now. if (strcmp(file->type, "image/jpg") != 0) { dsc_print_message(camera, "JPEG image format allowed only."); return GP_ERROR; } */ gp_file_get_data_and_size (file, &data, &size); if (size > DSC_MAXIMAGESIZE) { gp_context_message (context, _("File size is %ld bytes. " "The size of the largest file possible to " "upload is: %i bytes."), size, DSC_MAXIMAGESIZE); return GP_ERROR; } result = dsc1_setimageres (camera, size); if (result != GP_OK) return (result); blocks = (size - 1)/DSC_BLOCKSIZE + 1; id = gp_context_progress_start (context, blocks, _("Uploading...")); for (i = 0; i < blocks; i++) { blocksize = size - i*DSC_BLOCKSIZE; if (DSC_BLOCKSIZE < blocksize) blocksize = DSC_BLOCKSIZE; result = dsc1_writeimageblock (camera, i, (char*)&data[i*DSC_BLOCKSIZE], blocksize); if (result != GP_OK) return (result); gp_context_progress_update (context, id, i + 1); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); } gp_context_progress_stop (context, id); return GP_OK; } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int index, result; gp_context_status(context, _("Deleting image %s."), filename); /* index is the 0-based image number on the camera */ CHECK (index = gp_filesystem_number (camera->fs, folder, filename, context)); index++; return dsc1_delete(camera, index); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy(about->text, _("Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks .")); return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .put_file_func = put_file_func, }; int camera_init (Camera *camera, GPContext *context) { int ret, selected_speed; GPPortSettings settings; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->about = camera_about; camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); camera->pl->buf = malloc (sizeof (char) * DSC_BUFSIZE); if (!camera->pl->buf) { free (camera->pl); camera->pl = NULL; return (GP_ERROR_NO_MEMORY); } /* Configure the port (remember the selected speed) */ gp_port_set_timeout(camera->port, 5000); gp_port_get_settings(camera->port, &settings); selected_speed = settings.serial.speed; settings.serial.speed = 9600; /* hand shake speed */ settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; gp_port_set_settings(camera->port, settings); /* Set up the filesystem */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* Connect with selected speed */ ret = dsc1_connect(camera, selected_speed); if (ret < 0) { free (camera->pl->buf); free (camera->pl); camera->pl = NULL; return (ret); } return (GP_OK); } /* End of dc1000.c */ libgphoto2-2.5.9/camlibs/panasonic/dc.c0000644000175000001440000001535112610415536014644 00000000000000/* $Id$ Copyright 2000 Mariusz Zynel (gPhoto port) Copyright 2000 Fredrik Roubert (idea) Copyright 1999 Galen Brooks (DC1580 code) This file is part of the gPhoto project and may only be used, modified, and distributed under the terms of the gPhoto project license, COPYING. By continuing to use, modify, or distribute this file you indicate that you have read the license, understand and accept it fully. THIS SOFTWARE IS PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE. Note: This is a Panasonic DC series common routines. */ #include "config.h" #include #include #include #include #include #include #include #ifdef HAVE_MEMORY_H #include #endif #include "dc.h" #include "dc1000.h" #ifndef __FILE__ # define __FILE__ "dc.c" #endif #define GP_MODULE "dc" static const char c_prefix[13] = /* generic command prefix */ { 'M', 'K', 'E', ' ', 'D', 'S', 'C', ' ', 'P', 'C', ' ', ' ' }, r_prefix[13] = /* generic response prefix */ { 'M', 'K', 'E', ' ', 'P', 'C', ' ', ' ', 'D', 'S', 'C', ' ' }; int dsc1_sendcmd(Camera *camera, uint8_t cmd, void *data, int size) { int i; DEBUG_PRINT_MEDIUM(("Sending command: 0x%02x, data size: %i.", cmd, size)); memset(camera->pl->buf, 0, DSC_BUFSIZE); memcpy(camera->pl->buf, c_prefix, 12); for (i = 0; i < 4; i++) camera->pl->buf[DSC1_BUF_SIZE + i] = (uint8_t)(size >> 8*(3 - i)); camera->pl->buf[DSC1_BUF_CMD] = cmd; if (DSC_BUFSIZE - DSC1_BUF_DATA <= size) { RETURN_ERROR(EDSCOVERFL) /* overflow */ } if (data && 0 < size) memcpy(&camera->pl->buf[DSC1_BUF_DATA], data, size); return gp_port_write(camera->port, camera->pl->buf, 17 + size); } int dsc1_retrcmd(Camera *camera) { int result = GP_ERROR; int s; if ((s = gp_port_read(camera->port, camera->pl->buf, 17)) == GP_ERROR) return GP_ERROR; /* Make sense in debug only. Done on gp_port level. if (0 < s) dsc_dumpmem(camera->pl->buf, s); */ if (s != 17 || memcmp(camera->pl->buf, r_prefix, 12) != 0 ) RETURN_ERROR(EDSCBADRSP) /* bad response */ else result = camera->pl->buf[DSC1_BUF_CMD]; camera->pl->size = (uint32_t)camera->pl->buf[DSC1_BUF_SIZE + 3] | ((uint8_t)camera->pl->buf[DSC1_BUF_SIZE + 2] << 8) | ((uint8_t)camera->pl->buf[DSC1_BUF_SIZE + 1] << 16) | ((uint8_t)camera->pl->buf[DSC1_BUF_SIZE] << 24); if (DSC_BUFSIZE < camera->pl->size) { RETURN_ERROR(EDSCOVERFL); /* overflow */ } if (gp_port_read(camera->port, camera->pl->buf, camera->pl->size) != camera->pl->size) return GP_ERROR; DEBUG_PRINT_MEDIUM(("Retrieved command: %i.", result)); return result; } int dsc1_setbaudrate(Camera *camera, int speed) { GPPortSettings settings; uint8_t s_bps; int result; DEBUG_PRINT_MEDIUM(("Setting baud rate to: %i.", speed)); switch (speed) { case 9600: s_bps = 0x02; break; case 19200: s_bps = 0x0d; break; case 38400: s_bps = 0x01; break; case 57600: s_bps = 0x03; break; case 115200: s_bps = 0x00; break; default: RETURN_ERROR(EDSCBPSRNG); } if (dsc1_sendcmd(camera, DSC1_CMD_SET_BAUD, &s_bps, 1) != GP_OK) return GP_ERROR; if (dsc1_retrcmd(camera) != DSC1_RSP_OK) RETURN_ERROR(EDSCBADRSP); /* bad response */ sleep(DSC_PAUSE/2); CHECK (gp_port_get_settings(camera->port, &settings)); settings.serial.speed = speed; CHECK (gp_port_set_settings(camera->port, settings)); DEBUG_PRINT_MEDIUM(("Baudrate set to: %i.", speed)); return GP_OK; } int dsc1_getmodel(Camera *camera) { static const char response[3] = { 'D', 'S', 'C' }; DEBUG_PRINT_MEDIUM(("Getting camera model.")); if (dsc1_sendcmd(camera, DSC1_CMD_GET_MODEL, NULL, 0) != GP_OK) return GP_ERROR; if (dsc1_retrcmd(camera) != DSC1_RSP_MODEL || memcmp(camera->pl->buf, response, 3) != 0) RETURN_ERROR(EDSCBADRSP); /* bad response */ DEBUG_PRINT_MEDIUM(("Camera model is: %c.", camera->pl->buf[3])); switch (camera->pl->buf[3]) { case '1': return DSC1; case '2': return DSC2; default: return 0; } return GP_ERROR; } void dsc_dumpmem(void *buf, int size) { int i; fprintf(stderr, "\nMemory dump: size: %i, contents:\n", size); for (i = 0; i < size; i ++) fprintf( stderr, *((char*)buf + i) >= 32 && *((char*)buf + i) < 127 ? "%c" : "\\x%02x", (uint8_t)*((char*)buf + i) ); fprintf(stderr, "\n\n"); } const char *dsc_strerror(int error) { static const char * const errorlist[] = { "Unknown error code", "Baud rate out of range", "Bad image number", "Bad response", "Bad camera model", "Overflow" }; if (error == EDSCSERRNO) return strerror(errno); if (error < 1 || EDSCMAXERR < error) return errorlist[EDSCUNKNWN]; return errorlist[error]; } char *dsc_msgprintf(char *format, ...) { va_list pvar; static char msg[512]; va_start(pvar, format); vsprintf(msg, format, pvar); va_end(pvar); return msg; } void dsc_errorprint(int error, char *file, int line) { GP_DEBUG( "%s:%u: return code: %i, errno: %i, %s", file, line, error, errno, dsc_strerror(error)); } /* End of dc.c */ libgphoto2-2.5.9/camlibs/panasonic/dc1580.h0000644000175000001440000000300612610415536015161 00000000000000/* $Id$ Copyright 2000 Mariusz Zynel (gPhoto port) Copyright 2000 Fredrik Roubert (idea) Copyright 1999 Galen Brooks (DC1580 code) This file is part of the gPhoto project and may only be used, modified, and distributed under the terms of the gPhoto project license, COPYING. By continuing to use, modify, or distribute this file you indicate that you have read the license, understand and accept it fully. THIS SOFTWARE IS PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE. Note: This is a Panasonic DC1580 camera gPhoto library header file. */ /* DC1580 command codes */ #define DSC2_CMD_SET_BAUD 0x04 #define DSC2_CMD_SEND_DATA 0x05 #define DSC2_CMD_GET_INDEX 0x07 #define DSC2_CMD_CONNECT 0x10 #define DSC2_CMD_DELETE 0x11 #define DSC2_CMD_PREVIEW 0x14 #define DSC2_CMD_SET_SIZE 0x15 #define DSC2_CMD_THUMB 0x16 #define DSC2_CMD_SELECT 0x1a #define DSC2_CMD_GET_DATA 0x1e #define DSC2_CMD_RESET 0x1f /* DC1580 response codes */ #define DSC2_RSP_OK 0x01 #define DSC2_RSP_MODEL 0x03 #define DSC2_RSP_DATA 0x05 #define DSC2_RSP_INDEX 0x08 #define DSC2_RSP_IMGSIZE 0x1d /* DC1580 response buffer offsets, 0 - first byte in buffer */ #define DSC2_BUF_BASE 0 #define DSC2_BUF_SEQ 1 #define DSC2_BUF_SEQC 2 #define DSC2_BUF_CMD 3 #define DSC2_BUF_DATA 4 #define DSC2_BUF_CSUM 14 /* End of dc1580.h */ libgphoto2-2.5.9/camlibs/panasonic/ChangeLog0000644000175000001440000000071312557123324015661 000000000000002002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 2002-01-15 Lutz Müller * dc1000.c: * dc1580.c: gp_camera_status -> gp_context_status. 2002-01-15 Lutz Müller * dc1000.c * dc1580.c: Use gp_context_progress_* 2001-12-05 Hubert Figuiere * l859/l859.c: Fixed a typo that failed to initialize camera. See bug 483903. libgphoto2-2.5.9/camlibs/panasonic/dc.h0000644000175000001440000000724212610415536014651 00000000000000/* $Id$ Copyright 2000 Mariusz Zynel (gPhoto port) Copyright 2000 Fredrik Roubert (idea) Copyright 1999 Galen Brooks (DC1580 code) This file is part of the gPhoto project and may only be used, modified, and distributed under the terms of the gPhoto project license, COPYING. By continuing to use, modify, or distribute this file you indicate that you have read the license, understand and accept it fully. THIS SOFTWARE IS PROVIDED AS IS AND COME WITH NO WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. IN NO EVENT WILL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE. Note: This header contains common typedefs, constants and utility functions for Panasonic DC1000 and DC1580 cameras. */ #include #include #include <_stdint.h> #include #define DSC1 1 /* DC1000 */ #define DSC2 2 /* DC1580 */ typedef enum { unavailable = -1, normal = 0, fine = 1, superfine = 2 } dsc_quality_t; struct _CameraPrivateLibrary { char *buf; int size; }; #define DSC_BLOCKSIZE 0x400 /* amount of image data transferred in a single packet */ #define DSC_BUFSIZE 0x406 /* largest possible amount of data transferred in a single packet */ #define DSC_MAXIMAGESIZE 0xfffff /* largest possible file that can be uploaded */ #define DSC_FILENAMEFMT "dsc%04i.jpg" /* format of image file names */ #define DSC_THUMBNAMEFMT "dsc%04i-thumbnail.jpg" /* format of thumbnail file names */ #define DSC_PAUSE 4 /* seconds to wait for camera to redraw screen */ #define DSC_FULLIMAGE 0 #define DSC_THUMBNAIL 1 #define EDSCSERRNO -1 /* see errno value */ #define EDSCUNKNWN 0 /* unknown error code */ #define EDSCBPSRNG 1 /* bps out of range */ #define EDSCBADNUM 2 /* bad image number */ #define EDSCBADRSP 3 /* bad response */ #define EDSCBADDSC 4 /* bad camera model */ #define EDSCOVERFL 5 /* overfolw */ #define EDSCMAXERR 5 /* highest used error code */ int dsc1_sendcmd(Camera *camera, uint8_t cmd, void *data, int size); /* Send command with 'data' of 'size' to DSC */ int dsc1_retrcmd(Camera *camera); /* Retrieve command and its data from DSC */ int dsc1_setbaudrate(Camera *camera, int speed); /* Set baud rate of connection. Part of hand shake procedure */ /* Returns GP_OK if succesful and GP_ERROR otherwise. */ int dsc1_getmodel(Camera *camera); /* Returns camera (sub)model, DSC1: DC1000, DSC2: DC1580, */ /* 0: unknown, or GP_ERROR. Part of hand shake procedure. */ void dsc_dumpmem(void *buf, int size); /* Print size bytes of memory at the buf pointer. */ const char *dsc_strerror(int error); /* Convert error numbers into readable messages. */ char *dsc_msgprintf(char *format, ...); /* Format message string. */ void dsc_errorprint(int error, char *file, int line); /* Print information on error, including file name, function */ /* name and line number. */ /******************************************************************************/ /* Pre-procesor macros for verbose messaging and debugging */ #define DEBUG_PRINT_LOW(ARGS) \ GP_DEBUG( "%s: %s", __FILE__, dsc_msgprintf ARGS ); #define DEBUG_PRINT_MEDIUM(ARGS) \ GP_DEBUG( "%s: %s", __FILE__, dsc_msgprintf ARGS ); #define DEBUG_PRINT_HIGH(ARGS) \ GP_DEBUG( "%s: %s", __FILE__, dsc_msgprintf ARGS ); #define RETURN_ERROR(ERROR) { \ dsc_errorprint(ERROR, __FILE__, __LINE__); \ return GP_ERROR; \ } #define CHECK(OPERATION) \ if ((result = OPERATION) < 0) { \ dsc_errorprint(EDSCSERRNO, __FILE__, __LINE__); \ return result; \ } /* End of dc.h */ libgphoto2-2.5.9/camlibs/hp215/0000755000175000001440000000000012623156267013060 500000000000000libgphoto2-2.5.9/camlibs/hp215/crctab.h0000644000175000001440000000601512610415536014402 00000000000000/* * Crc calculation stuff */ /* crctab calculated by Mark G. Mendel, Network Systems Corporation */ static unsigned short crctab[256] = { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 }; /* * updcrc macro derived from article Copyright 1986 Stephen Satchell. * NOTE: First srgument must be in range 0 to 255. * Second argument is referenced twice. * * Programmers may incorporate any or all code into their programs, * giving proper credit within the source. Publication of the * source routines is permitted so long as proper credit is given * to Stephen Satchell, Satchell Evaluations and Chuck Forsberg, * Omen Technology. */ #define updcrc(cp, crc) ( crctab[cp ^ ((crc >> 8) & 255)] ^ (crc << 8)) libgphoto2-2.5.9/camlibs/hp215/PROTOCOL0000644000175000001440000000663112557123324014164 00000000000000Every blob looks like: 02 AA BB .... CC CC CC CC 03 02 - STX AA - cmd byte BB - 0x80 | argumentlength ... - argumentlength bytes CC CC CC CC 16 bit CRC split into 4 bit pieces, | 0x80 03 - ETX Sent by driver: Sent by camera: ----------------------------------------------- cmd blob 0x06 (ACK) reply blob 0x06 (ACK) Command codes: SET_TIME = 0x86, Argument: 1 uint32 SET_TIME_AS_STR = 0x87, Argument: 15 byte string SET_TIME_MODE = 0x88, Argument: 1 uint8 SET_TIME_PERIOD = 0x89, Argument: 1 uint8 SET_XFER_PROTOCOL = 0x8a, Argument: 1 uint8 SET_AUTO_SHUTDOWN_TIME = 0x8b, Argument: 1 uint16 SET_PHOTO_NO_DISPLAY_MODE = 0x8c, Argument: 1 uint8 DO_CALIBRATION = 0x8d, GET_CALIBRATION_PARAM = 0x8e, SET_SHOOT_AUTO = 0x90, Arguments: 1 uint8 SET_FLASH = 0x91, Arguments: 1 uint8 SET_EXPOSURE = 0x92, Arguments: 1 uint16 SET_FOCUS = 0x93, Arguments: 1 uint8 SET_SHUTTER = 0x94, Arguments: 1 uint8 SET_RESOLUTION = 0x95, Arguments: 1 uint8 SET_COMPRESSION = 0x96, Arguments: 1 uint8 SET_TIMER = 0x97, Arguments: 1 uint8 SET_EXT_FLASH = 0x98, Arguments: 1 uint8 SET_PIC_FORMAT = 0x99, Arguments: 1 uint8 RECORD_FUNC = 0xa2, SET_SHOOTING_DEBUG_MODE = 0xa3, GET_INTERNAL_SHOOT_AUTO_FUNC = 0xa4, No Arguments. Reads data? SET_INTERNAL_SHOOT_PARAM = 0xa6, 66 byte arguments (InternalShootparam table) Data in argument: Offset in passed struct: (uint8 (or 2 uint4) - offset 0,1 uint16, uint16, uint16, uint16, uint32, uint32, uint32, uint32, uint32, uint32) reads data SET_SHOOT_PARAM = 0xa7, SET_REVIEW_MODE = 0xa8, SET_DISPLAY_PICTURE_NO = 0xa9, SET_SHOOT_MODE_BY_INDEX = 0xaa, GET_SHOOT_MODE_TABLE = 0xab, SET_ACTIVE_SHOOTING_MODE = 0xac, TAKE_PHOTO = 0xb0, Either no arguments (stores photo on camera)? DELETE_PHOTO = 0xb1, PROTECT_PHOTO = 0xb2, n* 16bit arguments - pictures to protect. DOWNLOAD_THUMBNAIL = 0xb3, 16 bit arg (picnr) reads data DOWNLOAD_PHOTO = 0xb4, 16 bit arg (picnr) reads data TAKE_PREVIEW = 0xb5, Either no arguments, or a single 16 bit 1. No arguments -> returns data. Returns image date (jpeg) in the large reply blob. Occasionaly causes next command to result in NAK. SELF_TEST = 0xb6, DISPLAY_PATTERN = 0xb7, UPLOAD_PHOTO = 0xb8, argument: string/filename (with \0 ?) writes data to the camera UPLOAD_FIRMWARE = 0xba, UPDATE_FIRMWARE = 0xbb, DOWNLOAD_FILE_BY_NAME = 0xbd, argument: string/filename (with \0?) reads data __UPDATE_FIRMWARE = 0xbc, DOWNLOAD_PHOTO_FROM_ALBUM = 0xbe, GET_CAMERA_CAPS = 0xc0, GET_CAMERA_CURINFO = 0xc1, No arguments. Returns lots of data. 00: 15 byte of date string -> 0 0f: u7 -> 0f 10: u7 -> 10 /* 11 is unused I think */ 12: u16 -> 14 16: u7 -> 11 17: u16 -> 18 1b: u16 -> 1c 1f: u7 -> 13 (percentage full?) 20: u32 -> 24 28: u32 -> 28 30: u32 -> 2c 38: u7 -> 12 39: u32 UNIX time. 41: u32 Number of free images on CF. 49: u32 Number of images on CF. 51: u32 59: u32 Free memory in Byte on CF. GET_PHOTO_INFO = 0xc5, GET_ALBUM_INFO = 0xc6, Sends 1 argument (16bit), fixed 0x384 Returns album info blob. 0x20 byte string albumname 32bit int number of pictures. GET_CAMERA_READY = 0xce, Argument: 1 uint32 GET_INTERNAL_SHOOT_PARAM = 0xcf, No arguments. Reads reply blob. CREATE_ALBUM = 0xd0, RENAME_ALBUM = 0xd2, SET_ACTIVE_ALBUM = 0xd4, libgphoto2-2.5.9/camlibs/hp215/hp215.h0000644000175000001440000000365312610415524014005 00000000000000#ifndef _HP215_H #define _HP215_H /***************************************************************************** * Copyright (C) 2002 Jason Surprise * * 2003 Enno Bartels * * 2005 Marcus Meissner * ***************************************************************************** * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU Library 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 * * Library General Public License for more details. * * * * You should have received a copy of the GNU Library General Public * * License along with this program; see the file COPYING.LIB. If not, * * write to the * * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * * Boston, MA 02110-1301 USA * *****************************************************************************/ #define STX 0x02 #define ETX 0x03 #define EOT 0x04 #define ACK 0x06 #define NAK 0x15 #define HP215_OK 0xe0e0 typedef struct { unsigned int hour; unsigned int min; unsigned int sec; unsigned int day; unsigned int month; unsigned int year; } t_date; #endif libgphoto2-2.5.9/camlibs/hp215/hp215.c0000644000175000001440000006075412610415617014010 00000000000000/***************************************************************************** * Copyright (C) 2002 Jason Surprise * * 2003 Enno Bartels * * 2005 Marcus Meissner * ***************************************************************************** * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU Library 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 * * Library General Public License for more details. * * * * You should have received a copy of the GNU Library General Public * * License along with this program; see the file COPYING.LIB. If not, * * write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * *****************************************************************************/ /* Old Maintainer : Enno Bartels in 2002/2003 Original author : Jason Surprise in 2002. Checksum author: Roberto Ragusa in 2002/2003. Ported to libgphoto2: Marcus Meissner in 2005. Camera commands: Global comands Bytes | 0 1cmd 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -------------------------------+---------------------------------------------------------------------------------- init camera 8 | 0x02 0xce 0x80 0x8a 0x84 0x8d 0x83 0x03 get camera date/time 8 | 0x02 0xc1 0x80 0x8b 0x84 0x8e 0x8d 0x03 Get number of pics 16 | 0x02 0xc6 0x88 0x80 0x80 0x83 0x84 0x38 0x2f 0x30 0x32 0x88 0x84 0x8e 0x8b 0x03 Delete all pics 12 | 0x02 0xb1 0x84 0x8f 0x8f 0x8f 0x8f 0x86 0x80 0x8a 0x86 0x03 Single picture comands: Allways 12 bytes long | 0 1cmd 2 3 4 5 6 7 8 9 10 11 -------------------------------+--------------------------------------------------------------- Request for a preview | 0x02 0xb3 0x84 0x80 ... 0x03 Request for a picture | 0x02 0xb4 0x84 0x80 ... 0x03 Request date/time for preview | 0x02 0xc5 0x84 0x80 ... 0x03 Request for deleting one pic | 0x02 0xb1 0x84 0x80 ... 0x03 0x02 = Startcode for a command 0x03 = Endcode for a command */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #include #include #include "crctab.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "hp215.h" enum hp215_cmd { SET_TIME = 0x86, SET_TIME_AS_STR = 0x87, SET_TIME_MODE = 0x88, SET_TIME_PERIOD = 0x89, SET_XFER_PROTOCOL = 0x8a, SET_AUTO_SHUTDOWN_TIME = 0x8b, SET_PHOTO_NO_DISPLAY_MODE = 0x8c, DO_CALIBRATION = 0x8d, GET_CALIBRATION_PARAM = 0x8e, SET_SHOOT_AUTO = 0x90, SET_FLASH = 0x91, SET_EXPOSURE = 0x92, SET_FOCUS = 0x93, SET_SHUTTER = 0x94, SET_RESOLUTION = 0x95, SET_COMPRESSION = 0x96, SET_TIMER = 0x97, SET_EXT_FLASH = 0x98, SET_PIC_FORMAT = 0x99, RECORD_FUNC = 0xa2, SET_SHOOTING_DEBUG_MODE = 0xa3, GET_INTERNAL_SHOOT_AUTO_FUNC = 0xa4, SET_INTERNAL_SHOOT_PARAM = 0xa6, SET_SHOOT_PARAM = 0xa7, SET_REVIEW_MODE = 0xa8, SET_DISPLAY_PICTURE_NO = 0xa9, SET_SHOOT_MODE_BY_INDEX = 0xaa, GET_SHOOT_MODE_TABLE = 0xab, SET_ACTIVE_SHOOTING_MODE = 0xac, TAKE_PHOTO = 0xb0, DELETE_PHOTO = 0xb1, PROTECT_PHOTO = 0xb2, DOWNLOAD_THUMBNAIL = 0xb3, DOWNLOAD_PHOTO = 0xb4, TAKE_PREVIEW = 0xb5, SELF_TEST = 0xb6, DISPLAY_PATTERN = 0xb7, UPLOAD_PHOTO = 0xb8, UPLOAD_FIRMWARE = 0xba, UPDATE_FIRMWARE = 0xbb, DOWNLOAD_FILE_BY_NAME = 0xbd, __UPDATE_FIRMWARE = 0xbc, DOWNLOAD_PHOTO_FROM_ALBUM = 0xbe, GET_CAMERA_CAPS = 0xc0, GET_CAMERA_CURINFO = 0xc1, GET_SHOOT_MODE_2 = 0xc3, GET_PHOTO_INFO = 0xc5, GET_ALBUM_INFO = 0xc6, GET_CAMERA_READY = 0xce, GET_INTERNAL_SHOOT_PARAM = 0xcf, CREATE_ALBUM = 0xd0, RENAME_ALBUM = 0xd2, SET_ACTIVE_ALBUM = 0xd4, }; /* Every commands looks like: 02 AA BB .... CC CC CC CC 03 02 - STX AA - cmd byte BB - 0x80 | argumentlength ... - argumentlength bytes CC CC CC CC 16 bit CRC split into 4 bit pieces, | 0x80 03 - ETX A generic CRC is done over the buffer, starting with the CMD byte (offset 1). buffer[7] = ((crc>>12) & 0xf) | 0x80; buffer[8] = ((crc>>8 ) & 0xf) | 0x80; buffer[9] = ((crc>>4 ) & 0xf) | 0x80; buffer[10] = ((crc ) & 0xf) | 0x80; buffer[11] = 0x03; */ static int hp_gen_cmd_blob (enum hp215_cmd cmd, int bytes, unsigned char *argdata, unsigned char **buf, int *buflen) { int i, crc = 0; *buflen = 1+1+1+bytes+4+1; /* STX, CMD, ARGLEN, arguments, 4xCRC, ETX */ *buf = malloc(*buflen); if (!*buf) return GP_ERROR_NO_MEMORY; /* store STX */ (*buf)[0] = STX; /* store CMD */ (*buf)[1] = cmd; if (bytes >= 0x7d) { gp_log (GP_LOG_ERROR, "hp215", "Using too large argument buffer %d bytes", bytes); free (*buf); *buf = NULL; return GP_ERROR_BAD_PARAMETERS; } /* store arglen */ (*buf)[2] = 0x80 | bytes; if (bytes) { /* store arguments */ memcpy ((*buf)+3, argdata, bytes); } /* generate CRC over cmd, len, and arguments */ for (i=1;i> 12) & 0xf) | 0x80; (*buf)[bytes+4] = ((crc >> 8) & 0xf) | 0x80; (*buf)[bytes+5] = ((crc >> 4) & 0xf) | 0x80; (*buf)[bytes+6] = ((crc >> 0) & 0xf) | 0x80; /* store ETX */ (*buf)[bytes+7] = ETX; return GP_OK; } static int hp_gen_cmd_1_16 (enum hp215_cmd cmd, unsigned short val, unsigned char **buf, int *buflen) { unsigned char argbuf[4]; argbuf[0] = ((val&0xf000)>>12) | 0x80; argbuf[1] = ((val&0x0f00)>> 8) | 0x80; argbuf[2] = ((val&0x00f0)>> 4) | 0x80; argbuf[3] = ((val&0x000f) ) | 0x80; return hp_gen_cmd_blob (cmd, 4, argbuf, buf, buflen); } static int hp_send_ack (Camera *cam) { char byte = ACK; int ret; gp_log (GP_LOG_DEBUG, "hp215", "Sending ACK ... "); ret = gp_port_write (cam->port, &byte, 1); if (ret < GP_OK) gp_log (GP_LOG_ERROR, "hp215", "ACK sending failed with %d", ret); return ret; } static int hp_rcv_ack (Camera *cam, char *ackval) { int ret; char byte = '\0'; gp_log (GP_LOG_DEBUG, "hp215", "Receiving ACK ... "); ret = gp_port_read (cam->port, &byte, 1); if (ret < GP_OK) return ret; if (ackval) *ackval = byte; if (byte == ACK) return GP_OK; gp_log (GP_LOG_DEBUG, "hp215", "Expected ACK, but read %02x", byte); return GP_ERROR_IO; } static int decode_u32(unsigned char **msg, int *msglen, unsigned int *val) { unsigned int x = 0,i; *val = 0; for (i=0;i<8;i++) { if (!*msglen) return GP_ERROR; x <<= 4; x |= ((**msg) & 0x0f); (*msg)++; (*msglen)--; } *val = x; return GP_OK; } static int decode_u16(unsigned char **msg, int *msglen, unsigned short *val) { unsigned int x = 0,i; *val = 0; for (i=0;i<4;i++) { if (!*msglen) return GP_ERROR; x <<= 4; x |= ((**msg) & 0x0f); (*msg)++; (*msglen)--; } *val = x; return GP_OK; } static int hp_send_command_and_receive_blob( Camera *camera, unsigned char *buf, int buflen, unsigned char **msg, int *msglen, unsigned int *retcode ) { int tries, ackret, ret, replydatalen; unsigned char msgbuf[0x400]; char ackval; tries = 0; *msg = NULL; *msglen = 0; for (tries = 0; tries < 3; tries++ ) { ret = gp_port_write (camera->port, (char*)buf, buflen); if (ret < GP_OK) return ret; ret = hp_rcv_ack (camera, &ackval); if (ret < GP_OK) { if (ackval == NAK) continue; return GP_ERROR_IO; } break; } gp_log( GP_LOG_DEBUG, "hp215", "Expecting reply blob"); ret = gp_port_read (camera->port, (char*)msgbuf, sizeof(msgbuf)); if (ret < GP_OK) return ret; ackret = hp_send_ack (camera); if (ackret < GP_OK) return ackret; if (msgbuf[0] != STX) { gp_log (GP_LOG_ERROR, "hp215", "Expected STX / 02 at begin of buffer, found %02x", msgbuf[0]); return GP_ERROR_IO; } if (msgbuf[ret-1] != ETX) { gp_log (GP_LOG_ERROR, "hp215", "Expected ETX / 03 at end of buffer, found %02x", msgbuf[ret-1]); return GP_ERROR_IO; } replydatalen = msgbuf[2] & 0x7f; if (replydatalen != ret - 8) { gp_log (GP_LOG_ERROR, "hp215", "Reply datablob length says %d, but just %d bytes available?", replydatalen, ret-8); return GP_ERROR_IO; } if (replydatalen < 2) { gp_log (GP_LOG_ERROR, "hp215", "Reply datablob length is smaller than retcode (%d)", replydatalen); return GP_ERROR_IO; } *retcode = (msgbuf[3] << 8) | msgbuf[4]; if (msgbuf[2] == 0xff) { unsigned char *xmsg = msgbuf+5; int xmsglen = 8; unsigned int newlen; char eot; /* ok, overlong reply */ ret = decode_u32(&xmsg, &xmsglen, &newlen); if (ret < GP_OK) return ret; replydatalen = newlen; *msglen = replydatalen; *msg = malloc (replydatalen); ret = gp_port_read (camera->port, (char*)*msg, replydatalen); if (ret < GP_OK) return ret; ret = gp_port_read (camera->port, &eot, 1); if (ret < GP_OK) { free (*msg); *msg = NULL; return ret; } if (ret != 1) { free (*msg); *msg = NULL; return GP_ERROR_IO; } if (eot != EOT) { free (*msg); *msg = NULL; gp_log (GP_LOG_ERROR, "hp215", "read %02x instead of expected 04", eot); return GP_ERROR_IO; } ackret = hp_send_ack (camera); if (ackret < GP_OK) { free (*msg); *msg = NULL; return ackret; } } else { /* short reply - normal mode, do not copy E0 E0 */ *msg = malloc (replydatalen-2); *msglen = replydatalen-2; memcpy (*msg, msgbuf+5, replydatalen-2); } gp_log (GP_LOG_DEBUG, "hp215", "Read Blob: retcode is %04x", *retcode); GP_LOG_DATA ((char*)*msg, *msglen, "Read Blob: argument block is:"); return GP_OK; } static int hp_get_timeDate_cam (Camera *cam, char *txtbuffer, size_t txtbuffersize) { int msglen, buflen, ret; unsigned char *xmsg, *msg, *buf; unsigned int retcode; t_date date; unsigned short val16; unsigned int percent, val32, freespace, unixtime, freeimages, usedimages; char datebuf[15]; gp_log (GP_LOG_DEBUG, "hp215", "Sending date/time command ... "); ret = hp_gen_cmd_blob (GET_CAMERA_CURINFO, 0, NULL, &buf, &buflen); if (ret < GP_OK) return ret; ret = hp_send_command_and_receive_blob (cam, buf, buflen, &msg, &msglen, &retcode); free (buf); if (ret < GP_OK) return ret; xmsg = msg; if (msglen < 0x59) { free (msg); gp_log (GP_LOG_ERROR, "hp215", "too short reply block, %d bytes", msglen); return GP_ERROR_IO; } memcpy (datebuf, msg, 15); gp_log (GP_LOG_DEBUG, "hp215", "0f: %02x", msg[0x0f] & 0x7f); gp_log (GP_LOG_DEBUG, "hp215", "10: %02x", msg[0x10] & 0x7f); xmsg += 0x12; msglen -= 0x12; decode_u16(&xmsg, &msglen, &val16); gp_log (GP_LOG_DEBUG, "hp215", "12: %04x", val16); gp_log (GP_LOG_DEBUG, "hp215", "16: %02x", msg[0x16] & 0x7f); xmsg++;msglen--; decode_u16(&xmsg, &msglen, &val16); gp_log (GP_LOG_DEBUG, "hp215", "17: %04x", val16); decode_u16(&xmsg, &msglen, &val16); gp_log (GP_LOG_DEBUG, "hp215", "1b: %04x", val16); percent = msg[0x1f] & 0x7f; xmsg++;msglen--; decode_u32(&xmsg, &msglen, &val32); gp_log (GP_LOG_DEBUG, "hp215", "20: %08x", val32); decode_u32(&xmsg, &msglen, &val32); gp_log (GP_LOG_DEBUG, "hp215", "28: %08x", val32); decode_u32(&xmsg, &msglen, &val32); gp_log (GP_LOG_DEBUG, "hp215", "30: %08x", val32); gp_log (GP_LOG_DEBUG, "hp215", "38: %02x", msg[0x38] & 0x7f); xmsg++;msglen--; decode_u32(&xmsg, &msglen, &unixtime); decode_u32(&xmsg, &msglen, &freeimages); decode_u32(&xmsg, &msglen, &usedimages); decode_u32(&xmsg, &msglen, &val32); gp_log (GP_LOG_DEBUG, "hp215", "51: %08x", val32); decode_u32(&xmsg, &msglen, &freespace); /* Filter time and date out of the message */ date.day = (msg[3]-48)*10 + (msg[4]-48); date.month = (msg[0]-48)*10 + (msg[1]-48); date.year = 2000 + (msg[6]-48)*10 + (msg[7]-48); date.hour = (msg[9]-48)*10 + (msg[10]-48); date.min = (msg[12]-48)*10 + (msg[13]-48); free (msg); snprintf (txtbuffer, txtbuffersize, _("Current camera time: %04d-%02d-%02d %02d:%02d\nFree card memory: %d\nImages on card: %d\nFree space (Images): %d\nBattery level: %d %%."), date.year, date.month, date.day, date.hour, date.min, freespace, usedimages, freeimages, percent ); /* FIXME: communication hangs here ... perhaps need to reset USB pipe */ return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { char buffer[200]; int ret; ret = hp_get_timeDate_cam (camera, buffer, sizeof(buffer)); if (ret < GP_OK) return ret; strcpy (summary->text, buffer); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" )); return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int ret, buflen, msglen, image_no; unsigned char cmd, *buf, *msg; unsigned int retcode; image_no = gp_filesystem_number(fs, folder, filename, context); if(image_no < 0) return image_no; switch (type) { case GP_FILE_TYPE_NORMAL: cmd = DOWNLOAD_PHOTO; break; case GP_FILE_TYPE_PREVIEW: cmd = DOWNLOAD_THUMBNAIL; break; default: return GP_ERROR_BAD_PARAMETERS; } ret = hp_gen_cmd_1_16 (cmd, image_no+1, &buf, &buflen); if (ret < GP_OK) return ret; ret = hp_send_command_and_receive_blob (camera, buf, buflen, &msg, &msglen, &retcode); free (buf); if (ret < GP_OK) return ret; gp_file_set_mime_type (file, GP_MIME_JPEG); gp_file_set_data_and_size (file, (char*)msg, msglen); /* do not free (msg), we handed it to the lower layer right now */ return GP_OK; } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int image_no, ret, msglen, buflen; unsigned char *msg, *buf; unsigned int retcode; image_no = gp_filesystem_number(fs, folder, filename, context); if(image_no < 0) return image_no; ret = hp_gen_cmd_1_16 (DELETE_PHOTO, image_no+1, &buf, &buflen); if (ret < GP_OK) return ret; ret = hp_send_command_and_receive_blob (camera, buf, buflen, &msg, &msglen, &retcode); free (buf); if (ret < GP_OK) return ret; free (msg); return (GP_OK); } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; unsigned char *buf; unsigned char *msg; unsigned int retcode; int ret, buflen, msglen; ret = hp_gen_cmd_1_16 (DELETE_PHOTO, 0xFFFF, &buf, &buflen); if (ret < GP_OK) return ret; ret = hp_send_command_and_receive_blob (camera, buf, buflen, &msg, &msglen, &retcode); free (buf); if (ret < GP_OK) return ret; free (msg); return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int ret, msglen, buflen, /* offset = 13, */ image_no; unsigned int val, retcode; unsigned char *xmsg, *msg, *buf; gp_log (GP_LOG_DEBUG, "hp215", "folder %s, filename %s", folder, filename); image_no = gp_filesystem_number(fs, folder, filename, context); if(image_no < 0) return image_no; ret = hp_gen_cmd_1_16 (GET_PHOTO_INFO, image_no+1, &buf, &buflen); if (ret < GP_OK) return ret; ret = hp_send_command_and_receive_blob (camera, buf, buflen, &msg, &msglen, &retcode); free (buf); if (ret < GP_OK) return ret; if (msglen < 2) { free (msg); return GP_ERROR_IO; } /* 0000 80 80 80 85 86 85-84 84 30 31 2f 30 32 2f ..........01/02/ 0010 30 30 20 31 34 3a 34 38-00 80 81 80 80 80 80 81 00 14:48........ 0020 88 89 84 81 80 80 80 80-80 81 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 - ...... */ xmsg = msg; ret = decode_u32(&xmsg, &msglen, &val); if (ret < GP_OK) { free (msg); return ret; } memset (info, 0, sizeof(*info)); info->file.fields = GP_FILE_INFO_SIZE; info->file.size = val; xmsg += 0x0f; msglen -= 0x0f; gp_log (GP_LOG_DEBUG, "hp215", "byte0 %02x", xmsg[0]); gp_log (GP_LOG_DEBUG, "hp215", "byte1 %02x", xmsg[1]); xmsg += 2; msglen -= 2; ret = decode_u32(&xmsg, &msglen, &val); if (ret < GP_OK) { free (msg); return ret; } info->preview.fields = GP_FILE_INFO_SIZE; info->preview.size = val; gp_log (GP_LOG_DEBUG, "hp215", "byte2 %02x", xmsg[0]); gp_log (GP_LOG_DEBUG, "hp215", "byte3 %02x", xmsg[1]); free (msg); return GP_OK; #if 0 strcpy ((camera->pic[cnt+1])->date_time, &msg[0x0d]); /* Calculate day,month, year, hour and minute of the photo */ (camera->pic[cnt+1])->date.day = (msg[3+offset]-48)*10 + (msg[4+offset]-48); (camera->pic[cnt+1])->date.month = (msg[0+offset]-48)*10 + (msg[1+offset]-48); (camera->pic[cnt+1])->date.year = 2000 + (msg[6+offset]-48)*10 + (msg[7+offset]-48); (camera->pic[cnt+1])->date.hour = (msg[ 9+offset]-48)*10 + (msg[10+offset]-48); (camera->pic[cnt+1])->date.min = (msg[12+offset]-48)*10 + (msg[13+offset]-48); /* Get the file info here and write it into */ return (GP_OK); #endif } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int ret, msglen, buflen; unsigned int retcode, count; unsigned char *xmsg, *msg, *buf; /* Note: The original windows driver sends 0x348, and 4 bytes junk. * we just send the 0x348 and it works. */ ret = hp_gen_cmd_1_16 (GET_ALBUM_INFO, 0x348, &buf, &buflen); if (ret < GP_OK) return ret; gp_log (GP_LOG_DEBUG, "hp215", "Sending photo album request ... "); ret = hp_send_command_and_receive_blob (camera, buf, buflen, &msg, &msglen, &retcode); free (buf); if (ret < GP_OK) return ret; xmsg = msg + 0x20; /* skip 0x20 byte string */ msglen = msglen - 0x20; ret = decode_u32(&xmsg, &msglen, &count); free (msg); if (ret < GP_OK) return ret; return gp_list_populate(list, "image%i.jpg", count); } #if 0 /* This function is not used by anybody */ static int get_shoot_mode_table (Camera *camera) { unsigned char *buf, *msg, *xmsg; int ret, buflen, msglen; unsigned int i, cnt, val1, val2, val3, retcode; ret = hp_gen_cmd_blob (GET_SHOOT_MODE_TABLE, 0, NULL, &buf, &buflen); if (ret < GP_OK) return ret; ret = hp_send_command_and_receive_blob (camera, buf, buflen, &msg, &msglen, &retcode); gp_port_set_timeout (camera->port, 10000); free (buf); if (ret < GP_OK) return ret; if (retcode != HP215_OK) { free (msg); return GP_ERROR_BAD_PARAMETERS; } xmsg = msg; ret = decode_u32(&xmsg, &msglen, &val1); if (ret < GP_OK) return ret; ret = decode_u32(&xmsg, &msglen, &val2); if (ret < GP_OK) return ret; ret = decode_u32(&xmsg, &msglen, &val3); if (ret < GP_OK) return ret; gp_log (GP_LOG_DEBUG, "hp215", "shootmode table 0x%08x, 0x%08x, 0x%08x", val1, val2, val3); cnt = val1+val2; for (i=0;iport, 10000); ret = hp_send_command_and_receive_blob (camera, buf, buflen, &msg, &msglen, &retcode); free (buf); if (ret < GP_OK) return ret; if (retcode != HP215_OK) { free (msg); return GP_ERROR_BAD_PARAMETERS; } gp_file_set_mime_type (file, GP_MIME_JPEG); gp_file_set_data_and_size (file, (char*)msg, msglen); /* do not free (msg), we handed it to the lower layer right now */ return ret; } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { unsigned char *buf, *msg; int ret, buflen, msglen; unsigned int retcode; /* get_shoot_mode_table (camera); */ /*ret = hp_gen_cmd_1_16 (TAKE_PHOTO, 1, &buf, &buflen);*/ /* download after capture */ gp_port_set_timeout (camera->port, 60000); ret = hp_gen_cmd_blob (TAKE_PHOTO, 0, NULL, &buf, &buflen); /* store on camera */ if (ret < GP_OK) return ret; ret = hp_send_command_and_receive_blob (camera, buf, buflen, &msg, &msglen, &retcode); gp_port_set_timeout (camera->port, 10000); free (buf); if (ret < GP_OK) return ret; free (msg); /* * tell libgphoto2 where to find it by filling out the path. */ return GP_OK; } int camera_id (CameraText *id) { strcpy(id->text, "hp215"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); strcpy(a.model, "HP:PhotoSmart 215"); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB; a.usb_vendor = 0x3f0; /* HP */ a.usb_product = 0x6202; /* Photosmart 215 */ a.operations = GP_OPERATION_CAPTURE_PREVIEW | GP_OPERATION_CAPTURE_IMAGE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; return gp_abilities_list_append(list, a); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .delete_all_func = delete_all_func }; int camera_init (Camera *camera, GPContext *context) { unsigned char *msg,*buf; int ret, msglen, buflen; unsigned int retcode; GPPortSettings settings; camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->capture = camera_capture; camera->functions->capture_preview = camera_capture_preview; gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); gp_port_get_settings (camera->port, &settings); settings.usb.inep = 0x83; settings.usb.outep = 0x04; gp_port_set_settings (camera->port, settings); /* This function does the initialisation sequence. * CMD = 0xce, REPLY = 2 byte, 0xe0 0xe0 ... apparently means ok. */ gp_log (GP_LOG_DEBUG, "hp215", "Sending init sequence ... "); ret = hp_gen_cmd_blob (GET_CAMERA_READY, 0, NULL, &buf, &buflen); if (ret < GP_OK) return ret; ret = hp_send_command_and_receive_blob (camera, buf, buflen, &msg, &msglen, &retcode); free (buf); if (ret < GP_OK) return ret; free (msg); if (retcode != HP215_OK) return GP_ERROR_IO; return ret; } libgphoto2-2.5.9/camlibs/hp215/Makefile-files0000644000175000001440000000040112561423351015523 00000000000000EXTRA_LTLIBRARIES += hp215.la EXTRA_DIST += hp215/ChangeLog hp215/PROTOCOL hp215_la_SOURCES = hp215/hp215.c hp215/hp215.h hp215/crctab.h hp215_la_LDFLAGS = $(camlib_ldflags) hp215_la_DEPENDENCIES = $(camlib_dependencies) hp215_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/hp215/ChangeLog0000644000175000001440000000114612557123324014546 00000000000000Fri Jul 15 08:15:38 CEST 2005 Marcus Meissner * hp215.[ch]: Capture works (slider has to be in "camera" position). More cleanup of the cmd / reply blob handling. Extract shootmode table... unclear what the values mean (yet). Sat Jul 9 17:39:28 CEST 2005 Marcus Meissner * *: Initial import of HP Photosmart 215 driver. Can download images and previews, can delete single images and all images. * hp215.c: Switch to generic CRC handling, generized the command blob generation. Added all command codes from the windows driver. libgphoto2-2.5.9/camlibs/spca50x/0000755000175000001440000000000012623156270013476 500000000000000libgphoto2-2.5.9/camlibs/spca50x/spca50x-flash.c0000644000175000001440000007554512610415536016157 00000000000000/****************************************************************/ /* spca50x_flash.c - Gphoto2 library for cameras with a sunplus */ /* spca50x chip and flash memory */ /* */ /* */ /* Authors: Till Adam */ /* Ian MacArthur */ /* John Maushammer */ /* based on work done by: */ /* Mark A. Zimmerman */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #include "gphoto2-endian.h" #define GP_MODULE "spca50x" #include "spca50x.h" #include "spca50x-flash.h" /* forward declarations... local to this file */ static int spca500_flash_84D_get_file_info (CameraPrivateLibrary * lib, int index, int *w, int *h, int *t, int *sz); /* dsc-350_get_file func. */ static int spca500_flash_84D_get_file (CameraPrivateLibrary * pl, uint8_t ** data, unsigned int *len, int index, int thumbnail); /*****************************************************************************/ static void free_files (CameraPrivateLibrary *pl) { int i; if (pl->files) { for (i = 0; i < pl->num_files_on_flash; i++){ if(pl->files[i].thumb) free (pl->files[i].thumb); } free(pl->files); } } static int spca50x_flash_wait_for_ready(CameraPrivateLibrary *pl) { /* FIXME tweak this. What is reasonable? 30 s seems a bit long */ int timeout = 30; uint8_t ready = 0; while (timeout--) { sleep(1); if (pl->bridge == BRIDGE_SPCA500) { CHECK (gp_port_usb_msg_read (pl->gpdev, 0x00, 0x0000, 0x0101, (char*)&ready, 0x01)); } else { if (pl->fw_rev == 1) { CHECK (gp_port_usb_msg_read (pl->gpdev, 0x0b, 0x0000, 0x0004, (char*)&ready, 0x01)); } else { CHECK (gp_port_usb_msg_read (pl->gpdev, 0x21, 0x0000, 0x0000, (char*)&ready, 0x01)); } } if (ready) return GP_OK; } return GP_ERROR; } static int spca500_flash_84D_wait_while_busy(CameraPrivateLibrary *pl) { int timeout = 30; uint8_t ready = 0; while (timeout--) { sleep(1); CHECK (gp_port_usb_msg_read (pl->gpdev, 0x00, 0x0000, 0x0100, (char*)&ready, 0x01)); if (ready == 0) return GP_OK; } return GP_ERROR; } int spca50x_flash_get_TOC(CameraPrivateLibrary *pl, int *filecount) { uint16_t n_toc_entries; int toc_size = 0; if (pl->dirty_flash == 0){ /* TOC has been read already, and stored in the pl, so let's not read it again unless "dirty" gets set, e.g. by a reset, delete or capture action... */ *filecount = pl->num_files_on_flash; return GP_OK; } pl->num_files_on_flash = 0; if (pl->bridge == BRIDGE_SPCA500) { /* for dsc350 type cams */ /* command mode */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x0080, 0x0100, NULL, 0x00)); /* trigger TOC upload */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x05, 0x0000, 0x000d, NULL, 0x00)); toc_size = 0x100; /* always 256 for the dsc-350 cams */ } else { if (pl->fw_rev == 1) { CHECK (gp_port_usb_msg_read (pl->gpdev, 0x0b, 0x0000, 0x0000, (char*)&n_toc_entries, 0x02)); /* Each file gets two toc entries, one for the image, one for the thumbnail */ LE16TOH (n_toc_entries); *filecount = n_toc_entries/2; } else { CHECK (gp_port_usb_msg_read (pl->gpdev, 0x54, 0x0000, 0x0000, (char*)&n_toc_entries, 0x02)); LE16TOH (n_toc_entries); *filecount = n_toc_entries; } /* If empty, return now */ if (n_toc_entries == 0) return GP_OK; /* Request the TOC */ if (pl->fw_rev == 1) { CHECK (gp_port_usb_msg_read (pl->gpdev, 0x0a, n_toc_entries, 0x000c, NULL, 0x00)); } else { CHECK (gp_port_usb_msg_read (pl->gpdev, 0x54, n_toc_entries, 0x0001, NULL, 0x00)); } /* slurp it in. Supposedly there's 32 bytes in each entry. */ toc_size = n_toc_entries * 32; /* align */ if (toc_size % 512 != 0) toc_size = ((toc_size / 512) + 1) * 512; } if (pl->flash_toc) free (pl->flash_toc); pl->flash_toc = malloc(toc_size); if (!pl->flash_toc) return GP_ERROR_NO_MEMORY; CHECK (spca50x_flash_wait_for_ready(pl)); if (pl->bridge == BRIDGE_SPCA500) { /* For dsc350 type cams */ /* read the TOC from the cam */ CHECK (gp_port_read (pl->gpdev, (char *)pl->flash_toc, toc_size)); /* reset to idle */ CHECK (gp_port_usb_msg_write(pl->gpdev, 0x00, 0x0000, 0x0100, NULL, 0x0)); *filecount = (int)pl->flash_toc[10]; /* Now, create the files info buffer */ free_files(pl); /* NOTE: using calloc to ensure new block is "empty" */ pl->files = calloc (1, *filecount * sizeof (struct SPCA50xFile)); if (!pl->files) return GP_ERROR_NO_MEMORY; } else { /* all other cams with flash... */ /* read the TOC from the cam */ CHECK (gp_port_read (pl->gpdev, (char *)pl->flash_toc, toc_size)); } /* record that TOC has been updated - clear the "dirty" flag */ pl->num_files_on_flash = *filecount; pl->dirty_flash = 0; return GP_OK; } int spca50x_flash_get_filecount (CameraPrivateLibrary *pl, int *filecount) { uint16_t response = 0; if (pl->bridge == BRIDGE_SPCA500) { /* dsc350 cams */ return spca50x_flash_get_TOC (pl, filecount); } else { if (pl->fw_rev == 1) { CHECK (gp_port_usb_msg_read (pl->gpdev, 0x0b, 0x0000, 0x0000, (char*)&response, 0x02)); /* Each file gets two toc entries, one for the image, one for the thumbnail */ LE16TOH (response); *filecount = response/2; } else { CHECK (gp_port_usb_msg_read (pl->gpdev, 0x54, 0x0000, 0x0000, (char*)&response, 0x02)); LE16TOH (response); *filecount = response; } } return GP_OK; } int spca500_flash_delete_file (CameraPrivateLibrary *pl, int index) { if (pl->bridge == BRIDGE_SPCA500) { /* command mode */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x0080, 0x0100, NULL, 0x00)); /* trigger image delete */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x07, (index + 1), 0x000a, NULL, 0x00)); /* reset to idle */ CHECK (gp_port_usb_msg_write(pl->gpdev, 0x00, 0x0000, 0x0100, NULL, 0x0)); /* invalidate TOC/info cache */ pl->dirty_flash = 1; return GP_OK; } else { /* not supported on the 504 style cams */ return GP_ERROR_NOT_SUPPORTED; } } /* spca500_flash_delete_file */ int spca50x_flash_delete_all (CameraPrivateLibrary *pl, GPContext *context) { if (pl->bridge == BRIDGE_SPCA500) { /* dsc350 cams */ /* command mode */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x0080, 0x0100, NULL, 0x00)); /* delete all command */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x07, 0xffff, 0x000a, NULL, 0x00)); /* wait until the camera is not busy any more */ CHECK (spca500_flash_84D_wait_while_busy(pl)); } else { if (pl->fw_rev == 1) { CHECK (gp_port_usb_msg_write (pl->gpdev, 0x1, 0x0, 0x1, NULL, 0x0)); } else { CHECK (gp_port_usb_msg_write (pl->gpdev, 0x52, 0x0, 0x0, NULL, 0x0)); } } /* invalidate TOC/info cache */ pl->dirty_flash = 1; return GP_OK; } int spca500_flash_capture (CameraPrivateLibrary *pl) { if (pl->bridge == BRIDGE_SPCA500) { /* command mode */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x0080, 0x0100, NULL, 0x00)); /* trigger image capture */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x03, 0x0000, 0x0004, NULL, 0x00)); /* wait until the camera is not busy any more */ CHECK (spca500_flash_84D_wait_while_busy(pl)); /* invalidate TOC/info cache */ pl->dirty_flash = 1; return GP_OK; } else if (pl->bridge == BRIDGE_SPCA504B_PD) { /* trigger image capture */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x51, 0x0000, 0x0000, NULL, 0)); /* wait until the camera is not busy any more */ /* spca50x_flash_wait_for_ready doesn't work here */ sleep(3); /* invalidate TOC/info cache */ pl->dirty_flash = 1; return GP_OK; } else { /* not supported on the 504 style cams, but procedure used by * SPCA504_PD will probably work */ return GP_ERROR_NOT_SUPPORTED; } } int spca50x_flash_get_file_name (CameraPrivateLibrary *pl, int index, char *name) { uint8_t *p; if (pl->bridge == BRIDGE_SPCA500) { char p[14]; int w, h, type, size; memset (p, 0, sizeof(p)); /* dsc350 - get the file info, so we can set the file type correctly */ spca500_flash_84D_get_file_info (pl, index, &w, &h, &type, &size); if (type < 3){ /* for single images */ snprintf (p, sizeof(p), "Img%03d.jpg", (index + 1)); } else if (type < 6){ /* for multi-frame images */ snprintf (p, sizeof(p), "Img%03d-4.jpg", (index + 1)); } else if (type < 8){ /* for avi */ snprintf (p, sizeof(p), "Mov%03d.avi", (index + 1)); } else{ snprintf (p, sizeof(p), "Unknown"); } memcpy (name, p, sizeof(p) ); } else { if (pl->fw_rev == 1) { p = pl->flash_toc + index*2*32; } else { p = pl->flash_toc + index*32; } memcpy (name, p, 8); name[8] = '.'; memcpy (name+9, p+8, 3); name[12] = '\0'; } return GP_OK; } /* extract ascii-encoded number from file name */ static int spca50x_flash_get_number_from_file_name (CameraPrivateLibrary *pl, int index, int *file_number) { char name[14]; CHECK (spca50x_flash_get_file_name (pl, index, name)); if(sscanf(&(name[4]), "%d", file_number) != 1) /* skip "DSC_" */ return GP_ERROR; return GP_OK; } static int spca500_flash_84D_get_file_info (CameraPrivateLibrary * pl, int index, int *w, int *h, int *t, int *sz) { char hdr[260]; char waste[260]; int i; unsigned long size; /* First, check if the info. is already buffered in the cam private lib * We DO NOT want to be fetching the entire thumbnail just to get the file size...*/ if ((pl->dirty_flash == 0) && (pl->files[index].type != 0)){ /* This file must have been checked before */ *w = pl->files[index].width ; *h = pl->files[index].height ; *t = pl->files[index].type ; *sz = pl->files[index].size ; return GP_OK; } else if (pl->dirty_flash != 0){ /* should never happen, but just in case... */ CHECK(spca50x_flash_get_TOC (pl, &i)); if ( index >= i){ /* asking for a picture that doesn't exist */ return GP_ERROR; } } /* ...else we must query the cam the hard way... */ /* command mode */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x0080, 0x0100, NULL, 0x00)); /* trigger Thumbnail upload */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x07, (index + 1), 0x0000, NULL, 0x00)); /* NOTE: must use (index + 1) here as the cam indexes images from 1, * whereas libgphoto2 indexes from 0.... */ /* wait for ready */ CHECK (spca50x_flash_wait_for_ready(pl)); /* read the header from the cam */ CHECK (gp_port_read (pl->gpdev, hdr, 256)); /* always 256 for the DSC-350+ */ /* Read the rest of the header... and discard it */ CHECK (gp_port_read (pl->gpdev, waste, 256)); /* Now we have to read in the thumbnail data anyway - so we might as well store it for later */ { int j; uint8_t * buf; if (pl->files[index].thumb){ free (pl->files[index].thumb); /* discard any previous thumbnail data */ pl->files[index].thumb = NULL; } buf = malloc (38 * 256); /* create a new buffer to hold the thumbnail data */ if (buf){ j = 0; for (i = 0; i < 38; i++) { /* Now read in the image data */ /* read a buffer from the cam */ CHECK (gp_port_read (pl->gpdev, (char *)&buf[j], 256)); j += 256; } pl->files[index].thumb = buf; } else { /* couldn't get a buffer - read in the data anyway and discard it */ for (i = 0; i < 38; i++) {/* Thumbnails ALWAYS download 38 blocks...*/ CHECK (gp_port_read (pl->gpdev, waste, 256)); } pl->files[index].thumb = NULL; } } /* end of thumbnail storing loop */ /* reset to idle */ CHECK (gp_port_usb_msg_write(pl->gpdev, 0x00, 0x0000, 0x0100, NULL, 0x0)); /* OK, now we have a hdr we can work with... */ /* try and get the size */ size = ((unsigned long)hdr[15] & 0xff) + (((unsigned long)hdr[16] & 0xff) << 8) + (((unsigned long)hdr[17] & 0xff) << 16); *sz = size; /* Try and determine the file type */ /* Should enumerate the possible types properly, somewhere... */ i = (int)hdr[2]; /* should be the file type */ *t = i; switch (i){ case 0: /* this will be 320 x 240 single-frame */ *w = 320; *h = 240; break; case 1: /* this will be 640 x 480 single-frame */ *w = 640; *h = 480; break; case 2: /* this will be 1024 x 768 single-frame */ /* These are actually 640x480 pics - the win driver just expands them * in the host before it stores them... What should we do here? Continue with that * pretence, or tell the user the truth? */ /* *w = 1024; */ /* *h = 768; */ *w = 640; *h = 480; break; case 3: /* this will be 320 x 240 multi-frame */ *w = 320; *h = 240; break; case 4: /* this will be 640 x 480 multi-frame */ *w = 640; *h = 480; break; case 5: /* this will be 1024 x 768 multi-frame */ /* See notes above! */ /* *w = 1024; */ /* *h = 768; */ *w = 640; *h = 480; break; case 6: /* ??? TAKE A GUESS!!! 160 x 120 avi ??? MUST verify this sometime.... */ *w = 160; *h = 120; break; case 7: /* this is 320 x 240 avi */ *w = 320; *h = 240; break; default: *t = 99; /* or something equally invalid... */ *w = 0; *h = 0; *sz = 0; /* if we don't know what it is, it can't have a size! */ break; } /* now add this new set of data to the info_cache */ if (pl->dirty_flash == 0){ /* Only update the files cache if it exists, i.e. if dirty is zero */ /* We should never get here if dirty is set, however ! */ pl->files[index].type = *t; pl->files[index].width = *w; pl->files[index].height = *h; pl->files[index].size = *sz; } return GP_OK; } /* end of spca500_flash_84D_get_file_info */ static int spca50x_process_thumbnail (CameraPrivateLibrary *lib, /* context */ uint8_t ** data, unsigned int *len, /* return these items */ uint8_t * buf, uint32_t file_size, int index) /* input these items */ { uint32_t alloc_size, true_size, w, h, hdrlen; uint8_t *tmp, *rgb_p, *yuv_p; uint8_t *p2 = lib->flash_toc + index*2*32; if (lib->bridge == BRIDGE_SPCA500) { /* for dsc 350 cams */ w = 80; /* Always seems to be 80 x 60 for the DSC-350 cams */ h = 60; } else { /* thumbnails are generated from dc coefficients and are * therefore w/8 x h/8 * Since the dimensions of the thumbnail in the TOC are * always [0,0], Use the TOC entry for the full image. */ w = ((p2[0x0c] & 0xff) + (p2[0x0d] & 0xff) * 0x100) / 8; h = ((p2[0x0e] & 0xff) + (p2[0x0f] & 0xff) * 0x100) / 8; } /* Allow for a long header; get the true length later. */ hdrlen = 15; alloc_size = w * h * 3 + hdrlen; tmp = malloc (alloc_size); if (!tmp) return GP_ERROR_NO_MEMORY; /* Write the header and get its length. Then, verify that * we allocated enough memory. * This should never fail; it would be nice to have an error * code like GP_ERROR_CAMLIB_INTERNAL for cases like this. */ hdrlen = snprintf((char*)tmp, alloc_size, "P6 %d %d 255\n", w, h); true_size = w * h * 3 + hdrlen; if ( true_size > alloc_size ) { free (tmp); return GP_ERROR; } yuv_p = buf; rgb_p = tmp + hdrlen; while (yuv_p < buf + file_size) { uint32_t u, v, y, y2; uint32_t r, g, b; y = yuv_p[0]; y2 = yuv_p[1]; u = yuv_p[2]; v = yuv_p[3]; CHECK (yuv2rgb (y, u, v, &r, &g, &b)); *rgb_p++ = r; *rgb_p++ = g; *rgb_p++ = b; CHECK (yuv2rgb (y2, u, v, &r, &g, &b)); *rgb_p++ = r; *rgb_p++ = g; *rgb_p++ = b; yuv_p += 4; } free (buf); *data = tmp; *len = true_size; return GP_OK; } /* spca50x_process_thumbnail */ static int spca50x_flash_process_image (CameraPrivateLibrary *pl, /* context */ uint8_t ** data, unsigned int *len, /* return these items */ uint8_t * buf, uint32_t buf_size, int index) /* input these items */ { uint8_t *lp_jpg; uint8_t qIndex = 0, format; int file_size; int w = pl->files[index].width; int h = pl->files[index].height; /* qindex == 2 seems to be right for all the dsc350 images - so far!!! */ qIndex = 2 ; /* FIXME - what to do about Qtable stuff? */ /* decode the image size */ if (w > 320){ format = 0x21; /* for 640 size images */ } else { format = 0x22; /* for 320 x 240 size images */ } file_size = buf_size + SPCA50X_JPG_DEFAULT_HEADER_LENGTH + 1024 * 10; /* now build a jpeg */ lp_jpg = malloc (file_size); if (!lp_jpg) return GP_ERROR_NO_MEMORY; create_jpeg_from_data (lp_jpg, buf, qIndex, w, h, format, buf_size, &file_size, 0, 0); free (buf); lp_jpg = realloc (lp_jpg, file_size); *data = lp_jpg; *len = file_size; return (GP_OK); } static int spca500_flash_84D_get_file (CameraPrivateLibrary * pl, uint8_t ** data, unsigned int *len, int index, int thumbnail) { char tbuf[260]; /* for the file data blocks */ int i, j; /* general loop vars */ int blks; /* number of 256 byte blocks to fetch */ int sz; /* number of bytes in image */ uint8_t *buf; /* buffer for the read data */ int type; /* type of image reported by header */ int w, h; /* width, height of file being read */ int true_len; /* length determined by actually counting the loaded data! */ /* Check the info. first, so we KNOW the file type before we start to download it...! */ /* NOTE: The check should be really easy, as the info ought to be in the files info cache */ spca500_flash_84D_get_file_info (pl, index, &w, &h, &type, &sz); if (type >= 3) { /* for now, only support single frame still images */ return GP_ERROR_NOT_SUPPORTED; /* what to do for multi-frame images? (type 3, 4, 5) or avi's? (6, 7) */ } /* OK, we've decided what type of file it is, now lets upload it... */ if ((thumbnail != 0) && (pl->files[index].thumb != NULL)){ /* We can cheat here - we already have the thumbnail data in a cache, so don't load it again */ blks = 38; buf = pl->files[index].thumb; pl->files[index].thumb = NULL; /* we will release buf, so this pointer must be "emptied" */ } else { /* We need to download this data from the cam... */ /* set command mode */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x0080, 0x0100, NULL, 0x00)); /* trigger image upload */ if (thumbnail){ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x07, (index + 1), 0x0000, /* code 0 gets the thumbnail */ NULL, 0x00)); } else { /* code for different image types...? */ CHECK (gp_port_usb_msg_write (pl->gpdev, 0x07, (index + 1), 0x0001, /* code 1 gets the main image */ NULL, 0x00)); } /* wait for ready */ CHECK (spca50x_flash_wait_for_ready(pl)); /* read the header from the cam */ CHECK (gp_port_read (pl->gpdev, tbuf, 256)); /* always 256 for the DSC-350+ */ /* Read the rest of the header... and discard it */ CHECK (gp_port_read (pl->gpdev, tbuf, 256)); if (thumbnail){ blks = 38 ; /* always 38 blocks in a thumbnail with this setup */ sz = 0; /* unknown, it's NOT recorded in the header or TOC as such... */ /* Note the width/height of the thumbnail is fixed at 80 x 60 I believe. */ } else { /* full image... */ /* find nearest EVEN number of blocks bigger than the size */ blks = (sz / 256) + 1; if ((blks & 1) != 0){ /* block count is odd, not allowed */ blks += 1; } } /* create a buffer to hold all the read in data */ buf = malloc (blks * 256); if (!buf) return GP_ERROR_NO_MEMORY; j = 0; /* k = 0; */ /* Now read in the image data */ for (i = 0; i < blks; i++) { /* read a buffer from the cam */ CHECK (gp_port_read (pl->gpdev, (char *)&buf[j], 256)); j += 256; } /* OK, that's all the data read in, set cam to idle */ CHECK (gp_port_usb_msg_write(pl->gpdev, 0x00, 0x0000, 0x0100, NULL, 0x0)); } /* Count how many bytes file really is! We use this to discard the padding zeros */ sz = (blks * 256) - 1; /* look for the last non-zero byte in the file... * I hope the file never *really* ends with a zero!*/ while (buf[sz] == 0) { sz -= 1; } true_len = sz + 1; if (thumbnail) { /* post processing of thumbnail data */ CHECK(spca50x_process_thumbnail (pl, data, len, buf, true_len, index)); } else { /* post processing of single frame images */ CHECK(spca50x_flash_process_image (pl, data, len, buf, true_len, index)); } return GP_OK; } /* end of spca500_flash_84D_get_file */ int spca50x_flash_get_file_dimensions (CameraPrivateLibrary *pl, int index, int *w, int *h) { uint8_t *p; if (pl->bridge == BRIDGE_SPCA500) { /* for dsc 350 cams */ int type, size; return spca500_flash_84D_get_file_info (pl, index, w, h, &type, &size); } if (pl->fw_rev == 1) { p = pl->flash_toc + index*2*32; } else { p = pl->flash_toc + index*32; } *w = (p[0x0c] & 0xff) + (p[0x0d] & 0xff) * 0x100; *h = (p[0x0e] & 0xff) + (p[0x0f] & 0xff) * 0x100; return GP_OK; } int spca50x_flash_get_file_size (CameraPrivateLibrary *pl, int index, int *size) { uint8_t *p; if (pl->bridge == BRIDGE_SPCA500) { /* for dsc350 cams */ int type, w, h; return spca500_flash_84D_get_file_info (pl, index, &w, &h, &type, size); } if (pl->fw_rev == 1) { p = pl->flash_toc + index*2*32; } else { p = pl->flash_toc + index*32; } *size = (p[0x1c] & 0xff) + (p[0x1d] & 0xff) * 0x100 + (p[0x1e] & 0xff) * 0x10000 + (p[0x1f] & 0xff) * 0x1000000; return GP_OK; } int spca50x_flash_get_file (CameraPrivateLibrary *lib, GPContext *context, uint8_t ** data, unsigned int *len, int index, int thumbnail) { uint32_t file_size = 0, aligned_size = 0; uint8_t *p, *buf; int file_number; int align_to, ret; if (lib->bridge == BRIDGE_SPCA500) { /* for dsc 350 cams */ return spca500_flash_84D_get_file (lib, data, len, index, thumbnail); } if (lib->fw_rev != 1 && thumbnail) return GP_ERROR_NOT_SUPPORTED; if (thumbnail) { p = lib->flash_toc + (index*2+1) * 32; } else { if (lib->fw_rev == 1) { p = lib->flash_toc + index*2*32; } else { p = lib->flash_toc + index*32; } } aligned_size = file_size = (p[0x1c] & 0xff) + (p[0x1d] & 0xff) * 0x100 + (p[0x1e] & 0xff) * 0x10000; /* Trigger upload of image data */ if (thumbnail) { CHECK (gp_port_usb_msg_write (lib->gpdev, 0x0c, index+1, 0x0006, NULL, 0x00)); } else { if (lib->fw_rev == 1) { CHECK (gp_port_usb_msg_write (lib->gpdev, 0x0a, index+1, 0x000d, NULL, 0x00)); } else { if(lib->bridge != BRIDGE_SPCA504B_PD) { CHECK (gp_port_usb_msg_write (lib->gpdev, 0x54, index+1, 0x0002, NULL, 0x00)); } else { CHECK (spca50x_flash_get_number_from_file_name( lib, index, &file_number)); CHECK (gp_port_usb_msg_write (lib->gpdev, 0x54, file_number, 0x0002, NULL, 0x00)); } } } if ((lib->fw_rev == 1) || (lib->bridge == BRIDGE_SPCA504B_PD)) { align_to = 0x4000; } else { align_to = 0x2000; } /* align */ if (file_size % align_to != 0) aligned_size = ((file_size / align_to) + 1) * align_to; buf = malloc (aligned_size); if (!buf) return GP_ERROR_NO_MEMORY; ret = spca50x_flash_wait_for_ready(lib); if (ret < GP_OK) { free (buf); return ret; } ret = gp_port_read (lib->gpdev, (char *)buf, aligned_size); if (ret < GP_OK) { free (buf); return ret; } /* For images, we are done now, thumbnails need to be converted from * yuv to rgb and a pbm header added. */ if (thumbnail) { ret = spca50x_process_thumbnail (lib, data, len, buf, file_size, index); if (ret < GP_OK) { free (buf); return ret; } } else { *data = buf; *len = file_size; } return GP_OK; } /* * Deinit camera */ int spca50x_flash_close (CameraPrivateLibrary *pl, GPContext *context) { if (pl->fw_rev == 1) { CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x01, 0x2306, NULL, 0x00)); CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x00, 0x0d04, NULL, 0x00)); } else { /* Anything we need to do? */ } if (!pl->dirty_flash && pl->bridge == BRIDGE_SPCA500) { /* check if we need to free the file info buffers */ free_files(pl); } pl->dirty_flash = 1; return GP_OK; } /* * Initialize the camera and write the jpeg registers. Read them back in to * check whether the values are set correctly (wtf?) */ int spca50x_flash_init (CameraPrivateLibrary *pl, GPContext *context) { struct JPREG { int reg; int val; }; struct JPREG jpReg[] = { { 0x2800, 0x0005 }, { 0x2840, 0x0005 }, { 0x2801, 0x0003 }, { 0x2841, 0x0005 }, { 0x2802, 0x0003 }, { 0x2842, 0x0007 }, { 0x2803, 0x0005 }, { 0x2843, 0x000e }, { 0x2804, 0x0007 }, { 0x2844, 0x001e }, { 0x2805, 0x000c }, { 0x2845, 0x001e }, { 0x2806, 0x000f }, { 0x2846, 0x001e }, { 0x2807, 0x0012 }, { 0x2847, 0x001e }, { 0x2808, 0x0004 }, { 0x2848, 0x0005 }, { 0x2809, 0x0004 }, { 0x2849, 0x0006 }, { 0x280a, 0x0004 }, { 0x284a, 0x0008 }, { 0x280b, 0x0006 }, { 0x284b, 0x0014 }, { 0x280c, 0x0008 }, { 0x284c, 0x001e }, { 0x280d, 0x0011 }, { 0x284d, 0x001e }, { 0x280e, 0x0012 }, { 0x284e, 0x001e }, { 0x280f, 0x0011 }, { 0x284f, 0x001e }, { 0x2810, 0x0004 }, { 0x2850, 0x0007 }, { 0x2811, 0x0004 }, { 0x2851, 0x0008 }, { 0x2812, 0x0005 }, { 0x2852, 0x0011 }, { 0x2813, 0x0007 }, { 0x2853, 0x001e }, { 0x2814, 0x000c }, { 0x2854, 0x001e }, { 0x2815, 0x0011 }, { 0x2855, 0x001e }, { 0x2816, 0x0015 }, { 0x2856, 0x001e }, { 0x2817, 0x0011 }, { 0x2857, 0x001e }, { 0x2818, 0x0004 }, { 0x2858, 0x000e }, { 0x2819, 0x0005 }, { 0x2859, 0x0014 }, { 0x281a, 0x0007 }, { 0x285a, 0x001e }, { 0x281b, 0x0009 }, { 0x285b, 0x001e }, { 0x281c, 0x000f }, { 0x285c, 0x001e }, { 0x281d, 0x001a }, { 0x285d, 0x001e }, { 0x281e, 0x0018 }, { 0x285e, 0x001e }, { 0x281f, 0x0013 }, { 0x285f, 0x001e }, { 0x2820, 0x0005 }, { 0x2860, 0x001e }, { 0x2821, 0x0007 }, { 0x2861, 0x001e }, { 0x2822, 0x000b }, { 0x2862, 0x001e }, { 0x2823, 0x0011 }, { 0x2863, 0x001e }, { 0x2824, 0x0014 }, { 0x2864, 0x001e }, { 0x2825, 0x0021 }, { 0x2865, 0x001e }, { 0x2826, 0x001f }, { 0x2866, 0x001e }, { 0x2827, 0x0017 }, { 0x2867, 0x001e }, { 0x2828, 0x0007 }, { 0x2868, 0x001e }, { 0x2829, 0x000b }, { 0x2869, 0x001e }, { 0x282a, 0x0011 }, { 0x286a, 0x001e }, { 0x282b, 0x0013 }, { 0x286b, 0x001e }, { 0x282c, 0x0018 }, { 0x286c, 0x001e }, { 0x282d, 0x001f }, { 0x286d, 0x001e }, { 0x282e, 0x0022 }, { 0x286e, 0x001e }, { 0x282f, 0x001c }, { 0x286f, 0x001e }, { 0x2830, 0x000f }, { 0x2870, 0x001e }, { 0x2831, 0x0013 }, { 0x2871, 0x001e }, { 0x2832, 0x0017 }, { 0x2872, 0x001e }, { 0x2833, 0x001a }, { 0x2873, 0x001e }, { 0x2834, 0x001f }, { 0x2874, 0x001e }, { 0x2835, 0x0024 }, { 0x2875, 0x001e }, { 0x2836, 0x0024 }, { 0x2876, 0x001e }, { 0x2837, 0x001e }, { 0x2877, 0x001e }, { 0x2838, 0x0016 }, { 0x2878, 0x001e }, { 0x2839, 0x001c }, { 0x2879, 0x001e }, { 0x283a, 0x001d }, { 0x287a, 0x001e }, { 0x283b, 0x001d }, { 0x287b, 0x001e }, { 0x283c, 0x0022 }, { 0x287c, 0x001e }, { 0x283d, 0x001e }, { 0x287d, 0x001e }, { 0x283e, 0x001f }, { 0x287e, 0x001e }, { 0x283f, 0x001e }, { 0x287f, 0x001e } }; int len = sizeof (jpReg) / sizeof (jpReg[0]); uint8_t bytes[7]; int i; if (pl->fw_rev == 1) { CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x0000, 0x2000, NULL, 0x00)); CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x0013, 0x2301, NULL, 0x00)); CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x0001, 0x2883, NULL, 0x00)); for (i=0 ; igpdev, 0x00, jpReg[i].val, jpReg[i].reg, NULL, 0x00)); CHECK (gp_port_usb_msg_read (pl->gpdev, 0x00, 0x0000, jpReg[i].reg, (char *)bytes, 0x01)); } CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x0001, 0x2501, NULL, 0x00)); CHECK (gp_port_usb_msg_write (pl->gpdev, 0x00, 0x0000, 0x2306, NULL, 0x00)); CHECK (gp_port_usb_msg_write (pl->gpdev, 0x08, 0x0000, 0x0006, NULL, 0x00)); /* Read the same thing thrice, for whatever reason. * From working on getting iso traffic working with this chip, I've found * out, that 0x01, 0x0000, 0x0001 polls the chip for completion of a * command. Unfortunately it is of yet unclear, what the exact procedure * is. Until we know, let's keep this here. */ CHECK (gp_port_usb_msg_read (pl->gpdev, 0x01, 0x0000, 0x0001, (char *)bytes, 0x01)); CHECK (gp_port_usb_msg_read (pl->gpdev, 0x01, 0x0000, 0x0001, (char *)bytes, 0x01)); CHECK (gp_port_usb_msg_read (pl->gpdev, 0x01, 0x0000, 0x0001, (char *)bytes, 0x01)); /* Set to idle? */ CHECK (gp_port_usb_msg_read (pl->gpdev, 0x01, 0x0000, 0x000f, NULL, 0x00)); } else { time_t t; struct tm *ftm; /* firmware detection */ CHECK (gp_port_usb_msg_read (pl->gpdev, 0x20, 0x0000, 0x0000, (char *)bytes, 0x01)); CHECK (gp_port_usb_msg_read (pl->gpdev, 0x20, 0x0000, 0x0000, (char *)bytes, 0x05)); CHECK (gp_port_usb_msg_read (pl->gpdev, 0x21, 0x0000, 0x0000, (char *)bytes, 0x01)); /* * The cam is supposed to sync up with the computer time here * somehow, or at least that's what we think. */ time(&t); ftm = localtime(&t); bytes[0] = ftm->tm_sec; bytes[1] = ftm->tm_min; bytes[2] = ftm->tm_hour; bytes[3] = 0; /* what is that? either 0x0 or 0x6 */ bytes[4] = ftm->tm_mday; bytes[5] = ftm->tm_mon+1; bytes[6] = ftm->tm_year-100; /* stupido. Year is 1900 + tm_year. We need two digits only. */ GP_DEBUG("Timestamp: %4d-%02d-%02d %2d:%02d:%02d", ftm->tm_year+1900,ftm->tm_mon+1,ftm->tm_mday, ftm->tm_hour,ftm->tm_min,ftm->tm_sec); for (i=0;i<7;i++) CHECK (gp_port_usb_msg_write (pl->gpdev, 0x29, 0x0000, i, (char *)bytes+i, 0x01)); } pl->dirty_flash = 1; return GP_OK; } libgphoto2-2.5.9/camlibs/spca50x/spca50x-sdram.h0000644000175000001440000000446412610415536016165 00000000000000/****************************************************************/ /* spca50x_sdram.h - Gphoto2 library for cameras with sunplus */ /* spca50x chips */ /* */ /* Copyright 2002, 2003 Till Adam */ /* */ /* Author: Till Adam */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #ifndef __SPCA50X_SDRAM_H__ #define __SPCA50X_SDRAM_H__ #include int spca50x_sdram_get_info (CameraPrivateLibrary * lib); int spca50x_sdram_delete_file (CameraPrivateLibrary * lib, unsigned int index); int spca50x_sdram_delete_all (CameraPrivateLibrary * lib); int spca50x_sdram_get_file_info (CameraPrivateLibrary * lib, unsigned int index, struct SPCA50xFile **file); int spca50x_sdram_request_file (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, unsigned int number, int *type); int spca50x_sdram_request_thumbnail (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, unsigned int number, int *type); #endif /* __SPCA50X_SDRAM_H__ */ libgphoto2-2.5.9/camlibs/spca50x/library.c0000644000175000001440000004407712610415617015241 00000000000000/****************************************************************/ /* library.c - Gphoto2 library for cameras with sunplus spca50x */ /* chips */ /* Copyright (C) 2002, 2003 Till Adam */ /* */ /* Author: Till Adam */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "spca50x.h" #include "spca50x-flash.h" #include "spca50x-sdram.h" #define GP_MODULE "spca50x" #define TIMEOUT 5000 #define SPCA50X_VERSION "0.1" #define SPCA50X_LAST_MOD "02/09/03 - 23:14:11" /* forward declarations */ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context); static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context); static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context); static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context); static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context); static int cam_has_sdram (CameraPrivateLibrary *pl); static int cam_has_flash (CameraPrivateLibrary *pl); static int cam_has_card (CameraPrivateLibrary *pl); /* define what cameras we support */ static const struct { char *model; int usb_vendor; int usb_product; SPCA50xBridgeChip bridge; int storage_media_mask; } models[] = { /* firmware version 1 cams. */ {"Mustek:gSmart mini", 0x055f, 0xc220, BRIDGE_SPCA500, SPCA50X_SDRAM }, {"Mustek:gSmart mini 2", 0x055f, 0xc420, BRIDGE_SPCA504, SPCA50X_SDRAM }, {"Mustek:gSmart mini 3", 0x055f, 0xc520, BRIDGE_SPCA504, SPCA50X_SDRAM }, {"So.:Show 301", 0x0ec7, 0x1008, BRIDGE_SPCA504, SPCA50X_SDRAM }, {"Aiptek:Pencam", 0x04fc, 0x504a, BRIDGE_SPCA504, SPCA50X_SDRAM | SPCA50X_FLASH }, /* same ids, different cam *sigh* */ {"Aiptek:Pencam without flash", 0x04fc, 0x504a, BRIDGE_SPCA504, SPCA50X_SDRAM }, {"Medion:MD 5319", 0x04fc, 0x504a, BRIDGE_SPCA504, SPCA50X_SDRAM | SPCA50X_FLASH }, {"nisis:Quickpix Qp3", 0x04fc, 0x504a, BRIDGE_SPCA504, SPCA50X_SDRAM | SPCA50X_FLASH }, {"Trust:Spyc@m 500F FLASH", 0x04fc, 0x504a, BRIDGE_SPCA504, SPCA50X_SDRAM | SPCA50X_FLASH }, /* The firmware 2 cams. Those can autodetect their storage type */ {"Aiptek:1.3 mega PocketCam", 0x04fc, 0x504b, BRIDGE_SPCA504, 0 }, {"Maxell:Max Pocket", 0x04fc, 0x504b, BRIDGE_SPCA504, 0 }, {"Aiptek:Smart Megacam", 0x04fc, 0x504b, BRIDGE_SPCA504, 0 }, {"Benq:DC1300", 0x04a5, 0x3003, BRIDGE_SPCA504, 0 }, /* Some other 500a cams with flash */ {"Trust:Familycam 300", 0x084d, 0x0003, BRIDGE_SPCA500, SPCA50X_FLASH}, {"D-Link:DSC 350+", 0x084d, 0x0003, BRIDGE_SPCA500, SPCA50X_FLASH}, {"Minton:S-Cam F5", 0x084d, 0x0003, BRIDGE_SPCA500, SPCA50X_FLASH}, {"PureDigital:Ritz Disposable", 0x04fc, 0xffff, BRIDGE_SPCA504B_PD, SPCA50X_FLASH}, {NULL, 0, 0, 0, 0} }; int camera_id (CameraText *id) { strcpy (id->text, "spca50x"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { int x = 0; char *ptr; CameraAbilities a; ptr = models[x].model; while (ptr) { memset (&a, 0, sizeof (a)); strcpy (a.model, ptr); a.port = GP_PORT_USB; a.speed[0] = 0; a.status = GP_DRIVER_STATUS_TESTING; a.file_operations = GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; a.usb_vendor = models[x].usb_vendor; a.usb_product = models[x].usb_product; if (models[x].bridge == BRIDGE_SPCA504) { /* FIXME which cams can do it? */ if (a.usb_product == 0xc420 || a.usb_product == 0xc520) a.operations = GP_OPERATION_CAPTURE_IMAGE; } if (models[x].bridge == BRIDGE_SPCA504B_PD) { a.operations = GP_OPERATION_CAPTURE_IMAGE; } if (models[x].bridge == BRIDGE_SPCA500) { /* TEST enable capture for the DSC-350 style cams */ if (a.usb_vendor == 0x084d) { a.operations = GP_OPERATION_CAPTURE_IMAGE; } } gp_abilities_list_append (list, a); ptr = models[++x].model; } return (GP_OK); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath * path, GPContext *context) { struct SPCA50xFile *file; CameraAbilities a; /* Not all our cameras support capture */ gp_camera_get_abilities (camera, &a); if (!(a.operations & GP_OPERATION_CAPTURE_IMAGE)) return GP_ERROR_NOT_SUPPORTED; if (cam_has_flash(camera->pl)) { int fc; char tmp [14]; CHECK(spca500_flash_capture (camera->pl)); CHECK(spca50x_flash_get_TOC (camera->pl, &fc)); /* assume new pic is the last one in the cam...*/ CHECK(spca50x_flash_get_file_name (camera->pl, (fc - 1), tmp)); /* Add new image name to file list */ /* NOTE: these lines moved from below */ strncpy (path->name, tmp, sizeof (path->name) - 1); path->name[sizeof (path->name) - 1] = '\0'; } else { CHECK (spca50x_capture (camera->pl)); CHECK (spca50x_sdram_get_info (camera->pl)); CHECK (spca50x_sdram_get_file_info (camera->pl, camera->pl->num_files_on_sdram - 1, &file)); /* Add new image name to file list */ /* NOTE: these lines moved from below */ strncpy (path->name, file->name, sizeof (path->name) - 1); path->name[sizeof (path->name) - 1] = '\0'; } /* Now tell the frontend where to look for the image */ strncpy (path->folder, "/", sizeof (path->folder) - 1); path->folder[sizeof (path->folder) - 1] = '\0'; CHECK (gp_filesystem_append (camera->fs, path->folder, path->name, context)); return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { if (camera->pl) { if (cam_has_flash (camera->pl) || cam_has_card (camera->pl)) spca50x_flash_close (camera->pl, context); if (camera->pl->fats) { free (camera->pl->fats); camera->pl->fats = NULL; } if (camera->pl->files) { free (camera->pl->files); camera->pl->files = NULL; } if (camera->pl->flash_toc) { free (camera->pl->flash_toc); camera->pl->flash_toc = NULL; } free (camera->pl); camera->pl = NULL; } return (GP_OK); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { char tmp[1024]; int flash_file_count; if (cam_has_flash(camera->pl) || cam_has_card (camera->pl)) { spca50x_flash_get_filecount(camera->pl, &flash_file_count); snprintf (tmp, sizeof (tmp), _("FLASH:\n Files: %d\n"), flash_file_count); strcat (summary->text, tmp); } /* possibly get # pics, mem free, etc. if needed */ if (cam_has_sdram(camera->pl) && camera->pl->dirty_sdram) { CHECK (spca50x_sdram_get_info (camera->pl)); snprintf (tmp, sizeof (tmp), _("SDRAM:\n Files: %d\n Images: %4d\n Movies: %4d\nSpace used: %8d\nSpace free: %8d\n"), camera->pl->num_files_on_sdram, camera->pl->num_images, camera->pl->num_movies, camera->pl->size_used, camera->pl->size_free); strcat (summary->text, tmp); } return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("spca50x library v" SPCA50X_VERSION " " SPCA50X_LAST_MOD "\n" "Till Adam \n" "Support for digital cameras with a sunplus spca50x chip " "based on several other gphoto2 camlib modules and " "the information kindly provided by Mustek.\n" "\n")); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i = 0, filecount = 0; char temp_file[14]; if (cam_has_flash(camera->pl) || cam_has_card(camera->pl) ) { CHECK (spca50x_flash_get_TOC(camera->pl, &filecount)); for (i=0; ipl, i, temp_file)); gp_list_append (list, temp_file, NULL); } } if (cam_has_sdram(camera->pl)) { if (camera->pl->dirty_sdram) CHECK (spca50x_sdram_get_info (camera->pl)); for (i = 0; i < camera->pl->num_files_on_sdram; i++) { strncpy (temp_file, camera->pl->files[i].name, 12); temp_file[12] = 0; gp_list_append (list, temp_file, NULL); } } return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL; int number, filetype, flash_file_count = 0; unsigned int size; CHECK (number = gp_filesystem_number (camera->fs, folder, filename, context)); if (cam_has_flash(camera->pl) || cam_has_card(camera->pl) ) { CHECK (spca50x_flash_get_filecount (camera->pl, &flash_file_count)); } switch (type) { case GP_FILE_TYPE_NORMAL: if ( number < flash_file_count) { CHECK (spca50x_flash_get_file (camera->pl, context, &data, &size, number, 0)); CHECK (gp_file_set_mime_type (file, GP_MIME_JPEG)); } else { CHECK (spca50x_sdram_request_file (camera->pl, &data, &size, number-flash_file_count, &filetype)); if (filetype == SPCA50X_FILE_TYPE_IMAGE) { CHECK (gp_file_set_mime_type (file, GP_MIME_JPEG)); } else if (filetype == SPCA50X_FILE_TYPE_AVI) { CHECK (gp_file_set_mime_type (file, GP_MIME_AVI)); } } break; case GP_FILE_TYPE_PREVIEW: if ( number < flash_file_count) { CHECK (spca50x_flash_get_file (camera->pl, context, &data, &size, number, 1)); CHECK (gp_file_set_mime_type (file, GP_MIME_BMP)); } else { CHECK (spca50x_sdram_request_thumbnail (camera->pl, &data, &size, number-flash_file_count, &filetype)); if (filetype == SPCA50X_FILE_TYPE_IMAGE) { CHECK (gp_file_set_mime_type (file, GP_MIME_BMP)); } else if (filetype == SPCA50X_FILE_TYPE_AVI) { CHECK (gp_file_set_mime_type (file, GP_MIME_JPEG)); } } break; default: return GP_ERROR_NOT_SUPPORTED; } if (!data) return GP_ERROR; return gp_file_set_data_and_size (file, (char *)data, size); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int n, flash_file_count = 0; struct SPCA50xFile *file; char name[14]; int w,h; /* Get the file number from the CameraFileSystem */ CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); if (cam_has_flash(camera->pl) || cam_has_card(camera->pl) ) { CHECK (spca50x_flash_get_TOC(camera->pl, &flash_file_count)); } if (n < flash_file_count) { CHECK (spca50x_flash_get_file_name(camera->pl, n, name)); CHECK (spca50x_flash_get_file_dimensions( camera->pl, n, &w, &h)); strcpy (info->file.type, GP_MIME_JPEG); info->file.width = w; info->file.height = h; info->preview.width = w/8; info->preview.height = h/8; } if (cam_has_sdram (camera->pl) && n >= flash_file_count ){ CHECK (spca50x_sdram_get_file_info (camera->pl, n-flash_file_count, &file)); if (file->mime_type == SPCA50X_FILE_TYPE_IMAGE) { strcpy (info->file.type, GP_MIME_JPEG); info->preview.width = 160; info->preview.height = 120; } else if (file->mime_type == SPCA50X_FILE_TYPE_AVI) { strcpy (info->file.type, GP_MIME_AVI); info->preview.width = 320; info->preview.height = 240; } info->file.width = file->width; info->file.height = file->height; } info->file.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT; info->file.mtime = 0; info->file.fields |= GP_FILE_INFO_MTIME; info->preview.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT; strcpy (info->preview.type, GP_MIME_BMP); return (GP_OK); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int n, c, flash_file_count; /* FIXME deleting a single file for flash/card cams should work */ /* Get the file number from the CameraFileSystem */ CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); if (cam_has_flash(camera->pl) || cam_has_card(camera->pl) ) { CHECK (spca50x_flash_get_filecount (camera->pl, &flash_file_count)); } else { /* should not happen really */ return GP_ERROR; } if (n < flash_file_count) { return spca500_flash_delete_file (camera->pl, n); } CHECK (c = gp_filesystem_count (camera->fs, folder, context)); if (n + 1 != c) { const char *name; gp_filesystem_name (fs, "/", c - 1, &name, context); gp_context_error (context, _("Your camera only supports deleting the " "last file on the camera. In this case, this " "is file '%s'."), name); return (GP_ERROR); } CHECK (spca50x_sdram_delete_file (camera->pl, n)); return GP_OK; } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; if (cam_has_sdram (camera->pl)) CHECK (spca50x_sdram_delete_all (camera->pl)); if (cam_has_flash(camera->pl) || cam_has_card(camera->pl) ) CHECK (spca50x_flash_delete_all (camera->pl, context)); return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func, .del_file_func = delete_file_func, .delete_all_func = delete_all_func, }; int camera_init (Camera *camera, GPContext *context) { int ret = 0; int x = 0; char *model; GPPortSettings settings; CameraAbilities abilities; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->capture = camera_capture; CHECK (gp_port_get_settings (camera->port, &settings)); switch (camera->port->type) { case GP_PORT_USB: settings.usb.inep = 0x82; settings.usb.outep = 0x03; settings.usb.config = 1; settings.usb.interface = 0; settings.usb.altsetting = 0; CHECK (gp_port_set_settings (camera->port, settings)); CHECK (gp_port_set_timeout (camera->port, TIMEOUT)); break; default: gp_context_error (context, _("Unsupported port type: %d. " "This driver only works with USB " "cameras.\n"), camera->port->type); return (GP_ERROR); break; } camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); camera->pl->gpdev = camera->port; camera->pl->dirty_sdram = 1; camera->pl->dirty_flash = 1; /* What bridge chip is inside the camera? The gsmart mini is spca500 * based, while the others have a spca50xa */ gp_camera_get_abilities (camera, &abilities); model = models[x].model; while (model) { if (abilities.usb_vendor == models[x].usb_vendor && abilities.usb_product == models[x].usb_product) { int same; char *m = strdup( models[x].model ); char *p = strchr (m, ':' ); if (p) *p = ' '; same = !strcmp (m, abilities.model); free (m); if (same) { camera->pl->bridge = models[x].bridge; camera->pl->storage_media_mask = models[x].storage_media_mask; break; } } model = models[++x].model; } CHECK (spca50x_get_firmware_revision (camera->pl)); if (camera->pl->fw_rev > 1) { CHECK (spca50x_detect_storage_type (camera->pl)); } if (cam_has_flash(camera->pl) || cam_has_card(camera->pl) ) { if ((camera->pl->bridge == BRIDGE_SPCA504) || (camera->pl->bridge == BRIDGE_SPCA504B_PD)) CHECK (spca50x_flash_init (camera->pl, context)); } if ((camera->pl->bridge == BRIDGE_SPCA504) || (camera->pl->bridge == BRIDGE_SPCA504B_PD)) { /* if (abilities.usb_vendor != 0x04fc && abilities.usb_product != 0x504a ) */ if (!(abilities.usb_vendor == 0x04fc && abilities.usb_product == 0x504a )) ret = spca50x_reset (camera->pl); } if (ret < 0) { gp_context_error (context, _("Could not reset camera.\n")); free (camera->pl); camera->pl = NULL; return (ret); } /* Set up the CameraFilesystem */ return gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); } static int cam_has_sdram (CameraPrivateLibrary *pl) { return pl->storage_media_mask & SPCA50X_SDRAM; } static int cam_has_flash (CameraPrivateLibrary *pl) { return pl->storage_media_mask & SPCA50X_FLASH; } static int cam_has_card (CameraPrivateLibrary *pl) { return pl->storage_media_mask & SPCA50X_CARD; } libgphoto2-2.5.9/camlibs/spca50x/ChangeLog.benq0000644000175000001440000000047212557123324016117 00000000000000Mon Jan 20 20:45:15 2003 Till Adam * remove unused exit handler * write the current date and time to the cam in init, to sync it. It seems to require that occasionally to be able to keep time. Sam Jan 18 22:00:10 2003 Till Adam * initial import libgphoto2-2.5.9/camlibs/spca50x/spca50x-sdram.c0000644000175000001440000006136512610415536016163 00000000000000/****************************************************************/ /* spca50x_sdram.c - Gphoto2 library for cameras with sunplus */ /* spca50x chips */ /* */ /* Copyright 2002, 2003 Till Adam */ /* */ /* Author: Till Adam */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include "gphoto2-endian.h" #include "spca50x.h" #include "spca50x-sdram.h" #include "spca50x-registers.h" #include "spca50x-avi-header.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "spca50x" static int spca50x_mode_set_idle (CameraPrivateLibrary * lib); static int spca50x_is_idle (CameraPrivateLibrary * lib); static int spca50x_mode_set_download (CameraPrivateLibrary * lib); static int spca50x_download_data (CameraPrivateLibrary * lib, uint32_t start, unsigned int size, uint8_t * buf); static int spca50x_get_FATs (CameraPrivateLibrary * lib, int dramtype); static int spca50x_sdram_get_file_count_and_fat_count (CameraPrivateLibrary * lib, int dramtype); static int spca50x_get_avi_thumbnail (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, struct SPCA50xFile *g_file); static int spca50x_get_image_thumbnail (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, struct SPCA50xFile *g_file); static int spca50x_get_avi (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, struct SPCA50xFile *g_file); static int spca50x_get_image (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, struct SPCA50xFile *g_file); static inline uint8_t *put_dword (uint8_t * ptr, uint32_t value); static int spca50x_sdram_get_fat_page (CameraPrivateLibrary * lib, int index, int dramtype, uint8_t *p) { switch (dramtype) { case 4: /* 128 Mbit */ CHECK (spca50x_download_data (lib, 0x7fff80 - index * 0x80, SPCA50X_FAT_PAGE_SIZE, p)); break; case 3: /* 64 Mbit */ CHECK (spca50x_download_data (lib, 0x3fff80 - index * 0x80, SPCA50X_FAT_PAGE_SIZE, p)); break; default: break; } return GP_OK; } static int spca50x_sdram_get_file_count_and_fat_count (CameraPrivateLibrary * lib, int dramtype) { uint8_t theFat[256]; lib->num_fats = 0; lib->num_files_on_sdram = 0; if (lib->bridge == BRIDGE_SPCA500){ uint8_t lower, upper; CHECK (gp_port_usb_msg_write (lib->gpdev, 0x5, 0, 0, NULL, 0)); sleep (1); CHECK (gp_port_usb_msg_read (lib->gpdev, 0, 0, 0xe15, (char *) & lib->num_files_on_sdram, 1)); LE32TOH (lib->num_files_on_sdram); /* get fatscount */ CHECK (gp_port_usb_msg_write (lib->gpdev, 0x05, 0x0000, 0x0008, NULL, 0)); sleep (1); CHECK (gp_port_usb_msg_read (lib->gpdev, 0, 0, 0x0e19, (char *)&lower, 1)); CHECK (gp_port_usb_msg_read (lib->gpdev, 0, 0, 0x0e20, (char *)&upper, 1)); lib->num_fats = (((upper & 0xFF) << 8) | (lower & 0xFF)); } else { while (1) { CHECK (spca50x_sdram_get_fat_page (lib, lib->num_fats, dramtype, theFat)); if (theFat[0] == 0xFF) break; if (theFat[0] == 0x08 || theFat[0] == 0x00) lib->num_files_on_sdram++; lib->num_fats++; } } return (GP_OK); } int spca50x_sdram_delete_file (CameraPrivateLibrary * lib, unsigned int index) { struct SPCA50xFile *g_file; uint16_t fat_index; CHECK (spca50x_sdram_get_file_info (lib, index, &g_file)); if (lib->bridge == BRIDGE_SPCA500) fat_index = 0x70FF - g_file->fat_start - 1; else /* if (lib->bridge == BRIDGE_SPCA504) */ fat_index = 0xD8000 - g_file->fat_start - 1; CHECK (gp_port_usb_msg_write (lib->gpdev, 0x06, fat_index, 0x0007, NULL, 0)); sleep (1); /* Reread fats the next time it is accessed */ lib->dirty_sdram = 1; return GP_OK; } int spca50x_sdram_delete_all (CameraPrivateLibrary * lib) { if (lib->fw_rev == 2) { CHECK (gp_port_usb_msg_write (lib->gpdev, 0x71, 0x0000, 0x0000, NULL, 0)); } else { CHECK (gp_port_usb_msg_write (lib->gpdev, 0x02, 0x0000, 0x0005, NULL, 0)); } sleep (3); /* Reread fats the next time it is accessed */ lib->dirty_sdram = 1; return GP_OK; } int spca50x_sdram_request_file (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, unsigned int number, int *type) { struct SPCA50xFile *g_file; CHECK (spca50x_sdram_get_file_info (lib, number, &g_file)); *type = g_file->mime_type; if (g_file->mime_type == SPCA50X_FILE_TYPE_AVI) return (spca50x_get_avi (lib, buf, len, g_file)); else return (spca50x_get_image (lib, buf, len, g_file)); } static int spca50x_get_image (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, struct SPCA50xFile *g_file) { uint8_t *p, *lp_jpg; uint8_t qIndex = 0, format; uint32_t start; uint8_t *mybuf; int size, o_size, file_size, ret; int omit_escape = 0; p = g_file->fat; /* get the position in memory where the image is */ start = (p[1] & 0xff) + (p[2] & 0xff) * 0x100; start *= 128; /* decode the image size */ if (lib->bridge == BRIDGE_SPCA500) { o_size = size = (p[5] & 0xff) * 0x100 + (p[6] & 0xff) * 0x10000; qIndex = p[7] & 0x0f; } else { o_size = size = (p[13] & 0xff) * 0x10000 + (p[12] & 0xff) * 0x100 + (p[11] & 0xff); if (lib->fw_rev == 1) { qIndex = p[7] & 0x0f; } else if (lib->fw_rev == 2) { omit_escape = 1; qIndex = p[10] & 0x0f; } } format = 0x21; /* align */ if (size % 64 != 0) size = ((size / 64) + 1) * 64; file_size = size + SPCA50X_JPG_DEFAULT_HEADER_LENGTH + 1024 * 10; /* slurp in the image */ mybuf = malloc (size); if (!mybuf) return GP_ERROR_NO_MEMORY; if (lib->bridge == BRIDGE_SPCA504) { ret = spca50x_download_data (lib, start, size, mybuf); if (ret < GP_OK) { free (mybuf); return ret; } } else if (lib->bridge == BRIDGE_SPCA500) { /* find the file index on the camera */ int index; index = (g_file->fat - lib->fats) / SPCA50X_FAT_PAGE_SIZE; spca50x_reset (lib); /* trigger upload of image at that index */ ret = gp_port_usb_msg_write (lib->gpdev, 0x06, 0x70FF - index, 0x01, NULL, 0); if (ret < GP_OK) { free (mybuf); return ret; } sleep (1); ret = gp_port_read (lib->gpdev, (char *)mybuf, size); if (ret < GP_OK) { free (mybuf); return ret; } /* the smallest ones are in a different format */ if ((p[20] & 0xff) == 2) format = 0x22; } /* now build a jpeg */ lp_jpg = malloc (file_size); if (!lp_jpg) { free (mybuf); return GP_ERROR_NO_MEMORY; } create_jpeg_from_data (lp_jpg, mybuf, qIndex, g_file->width, g_file->height, format, o_size, &file_size, 0, omit_escape); free (mybuf); lp_jpg = realloc (lp_jpg, file_size); *buf = lp_jpg; *len = file_size; return (GP_OK); } static int spca50x_get_avi (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, struct SPCA50xFile *g_file) { int i, j, length, ret; int frame_count = 0, frames_per_fat = 0, fn = 0; int size = 0; int file_size; int index_size; uint32_t frame_size = 0, frame_width = 0, frame_height = 0; uint32_t total_frame_size = 0; uint32_t start = 0; uint8_t *p, *mybuf, *avi, *start_of_file, *start_of_frame, *data; uint8_t qIndex; uint8_t *avi_index, *avi_index_ptr; uint8_t index_item[16]; /* FIXME */ if (lib->bridge == BRIDGE_SPCA500) return GP_ERROR_NOT_SUPPORTED; p = g_file->fat; if (lib->fw_rev == 2) qIndex = p[10] & 0x0f; else qIndex = p[7] & 0x0f; avi = mybuf = start_of_file = data = NULL; /* get the position in memory where the movie is */ start = (p[1] & 0xff) + (p[2] & 0xff) * 0x100; start *= 128; /* Frame w and h and qIndex dont change, so just use the values * of the first frame */ frame_width = (p[8] & 0xFF) * 16; frame_height = (p[9] & 0xFF) * 16; /* Each movie consists of a number of frames, and can have more than * one fat page. Iterate over all fat pages for this movie and count * all frames in all fats. Same for size. */ for (i = g_file->fat_start; i <= g_file->fat_end; i++) { frames_per_fat = (p[49] & 0xFF) * 0x100 + (p[48] & 0xFF); frame_count += frames_per_fat; size += (p[13] & 0xFF) * 0x10000 + (p[12] & 0xFF) * 0x100 + (p[11] & 0xFF); if (frames_per_fat < 60) break; p += SPCA50X_FAT_PAGE_SIZE; } /* align */ size = (size + 63) & 0xffffffc0; /* mem for index */ index_size = frame_count * 16; avi_index_ptr = avi_index = malloc (index_size); if (!avi_index) return GP_ERROR_NO_MEMORY; /* slurp in the movie */ mybuf = malloc (size); if (!mybuf) { free (avi_index); return GP_ERROR_NO_MEMORY; } ret = spca50x_download_data (lib, start, size, mybuf); if (ret < GP_OK) { free (avi_index); free (mybuf); return ret; } /* Now write our data to a file with an avi header */ file_size = size + SPCA50X_AVI_HEADER_LENGTH + (SPCA50X_JPG_DEFAULT_HEADER_LENGTH * frame_count) + 8 + index_size /* for index chunk */ + 1024 * 10 * frame_count; avi = malloc (file_size); if (!avi) { free (avi_index); free (mybuf); return GP_ERROR_NO_MEMORY; } start_of_file = avi; /* prepare index item */ put_dword (index_item, 0x63643030); /* 00dc */ put_dword (index_item + 4, 0x10); /* KEYFRAME */ /* copy the header from the template */ memcpy (avi, SPCA50xAviHeader, SPCA50X_AVI_HEADER_LENGTH); /* put the width and height into the riff header */ put_dword(avi + 0x40, frame_width); put_dword(avi + 0x44, frame_height); /* and at 0xb0 and 0xb4 */ put_dword(avi + 0xb0, frame_width); put_dword(avi + 0xb4, frame_height); avi += SPCA50X_AVI_HEADER_LENGTH; /* Reset to the first fat */ p = g_file->fat; data = mybuf; /* Iterate over fats and frames in each fat and build a jpeg for * each frame. Add the jpeg to the avi and write an index entry. */ for (i = g_file->fat_start; i <= g_file->fat_end; i++) { frames_per_fat = ((p[49] & 0xFF) * 0x100 + (p[48] & 0xFF)); /* frames per fat might be lying, so double check how many frames were already processed */ if (frames_per_fat > 60 || frames_per_fat == 0 || fn + frames_per_fat > frame_count) break; for (j = 0; j < frames_per_fat; j++) { frame_size = ((p[52 + j * 3] & 0xFF) * 0x10000) + ((p[51 + j * 3] & 0xFF) * 0x100) + (p[50 + j * 3] & 0xFF); memcpy (avi, SPCA50xAviFrameHeader, SPCA50X_AVI_FRAME_HEADER_LENGTH); avi += SPCA50X_AVI_FRAME_HEADER_LENGTH; start_of_frame = avi; /* jpeg starts here */ create_jpeg_from_data (avi, data, qIndex, frame_width, frame_height, 0x22, frame_size, &length, 1, 0); data += (frame_size + 7) & 0xfffffff8; avi += length; /* Make sure the next frame is aligned */ if ((avi - start_of_frame) % 2 != 0) avi++; /* Now we know the real frame size after escaping and * adding the EOI marker. Put it in the frame header. */ frame_size = avi - start_of_frame; put_dword (start_of_frame - 4, frame_size); put_dword (index_item + 8, start_of_frame - start_of_file - SPCA50X_AVI_HEADER_LENGTH - 4); put_dword (index_item + 12, frame_size); memcpy (avi_index_ptr, index_item, 16); avi_index_ptr += 16; fn++; } p += SPCA50X_FAT_PAGE_SIZE; } total_frame_size = avi - (start_of_file + SPCA50X_AVI_HEADER_LENGTH - 4); put_dword (start_of_file + SPCA50X_AVI_HEADER_LENGTH - 8, total_frame_size); avi = put_dword (avi, 0x31786469); /* idx1 */ avi = put_dword (avi, index_size); memcpy (avi, avi_index, index_size); avi += index_size; free (avi_index); put_dword (start_of_file + 0x30, frame_count); put_dword (start_of_file + 0x8c, frame_count); /* And reuse total_frame_size for the file size RIFF marker at offset * 4 */ total_frame_size = avi - (start_of_file + 4); put_dword (start_of_file + 4, total_frame_size); free (mybuf); start_of_file = realloc (start_of_file, avi - start_of_file); *buf = start_of_file; *len = avi - start_of_file; return (GP_OK); } int spca50x_sdram_request_thumbnail (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, unsigned int number, int *type) { struct SPCA50xFile *g_file; CHECK (spca50x_sdram_get_file_info (lib, number, &g_file)); *type = g_file->mime_type; if (g_file->mime_type == SPCA50X_FILE_TYPE_AVI) { return (spca50x_get_avi_thumbnail (lib, buf, len, g_file)); } else { /* the spca500 stores the quality in p[20], the rest of them * in [p40]. We need to check for the smallest resolution of * the mini, since resolution does not have thumbnails. * Download the full image instead. * Low: 320x240 2 * Middle: 640x480 0 * High: 1024x768 (interpolated) 1*/ if (lib->bridge == BRIDGE_SPCA500 && (g_file->fat[20] & 0xFF) == 2) { return (spca50x_get_image (lib, buf, len, g_file)); } else { return (spca50x_get_image_thumbnail (lib, buf, len, g_file)); } } } static int spca50x_get_avi_thumbnail (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, struct SPCA50xFile *g_file) { uint8_t *p, *lp_jpg; uint8_t qIndex; uint32_t start; uint8_t *mybuf; int size, o_size, file_size; int ret; /* FIXME */ if (lib->bridge == BRIDGE_SPCA500) return GP_ERROR_NOT_SUPPORTED; p = g_file->fat; /* get the position in memory where the image is */ start = (p[1] & 0xff) + (p[2] & 0xff) * 0x100; start *= 128; /* decode the image size */ o_size = size = (p[52] & 0xff) * 0x10000 + (p[51] & 0xff) * 0x100 + (p[50] & 0xff); qIndex = p[7] & 0x0f; /* align */ if (size % 64 != 0) size = ((size / 64) + 1) * 64; file_size = size + SPCA50X_JPG_DEFAULT_HEADER_LENGTH + 1024 * 10; /* slurp in the image */ mybuf = malloc (size); if (!mybuf) return GP_ERROR_NO_MEMORY; ret = spca50x_download_data (lib, start, size, mybuf); if (ret < GP_OK) { free (mybuf); return ret; } /* now build a jpeg */ lp_jpg = malloc (file_size); if (!lp_jpg) { free (mybuf); return GP_ERROR_NO_MEMORY; } create_jpeg_from_data (lp_jpg, mybuf, qIndex, g_file->width, g_file->height, 0x22, o_size, &file_size, 0, 0); free (mybuf); lp_jpg = realloc (lp_jpg, file_size); *buf = lp_jpg; *len = file_size; return (GP_OK); } static int spca50x_get_image_thumbnail (CameraPrivateLibrary * lib, uint8_t ** buf, unsigned int *len, struct SPCA50xFile *g_file) { unsigned int size; uint8_t *p; uint32_t start; uint8_t *mybuf = NULL; uint8_t *tmp; unsigned int t_width, t_height; uint8_t *yuv_p; uint8_t *rgb_p; int headerlength, ret; p = g_file->fat; start = (p[3] & 0xff) + (p[4] & 0xff) * 0x100; start *= 128; size = g_file->width * g_file->height * 2 / 64; t_width = g_file->width / 8; t_height = g_file->height / 8; /* Adjust the headerlenght */ headerlength = 13; if (t_width > 99) headerlength++; if (t_height > 99) headerlength++; /* align */ if (size % 64 != 0) size = ((size / 64) + 1) * 64; mybuf = malloc (size); if (lib->bridge == BRIDGE_SPCA504) { ret = spca50x_download_data (lib, start, size, mybuf); if (ret < GP_OK) { free (mybuf); return ret; } } else if (lib->bridge == BRIDGE_SPCA500) { /* find the file index on the camera */ int index; index = (g_file->fat - lib->fats) / SPCA50X_FAT_PAGE_SIZE; spca50x_reset (lib); /* trigger upload of thumbnail at that index */ ret = gp_port_usb_msg_write (lib->gpdev, 0x06, 0x70FF - index, 0x09, NULL, 0); if (ret < GP_OK) { free (mybuf); return ret; } sleep (1); ret = gp_port_read (lib->gpdev, (char *)mybuf, size); if (ret < GP_OK) { free (mybuf); return ret; } } *len = t_width * t_height * 3 + headerlength; *buf = malloc (*len); if (!*buf) { free (mybuf); return (GP_ERROR_NO_MEMORY); } tmp = *buf; snprintf ((char*)tmp, *len, "P6 %d %d 255\n", t_width, t_height); tmp += headerlength; yuv_p = mybuf; rgb_p = tmp; while (yuv_p < mybuf + (t_width * t_height * 2)) { unsigned int u, v, y, y2; unsigned int r, g, b; y = yuv_p[0]; y2 = yuv_p[1]; u = yuv_p[2]; v = yuv_p[3]; CHECK (yuv2rgb (y, u, v, &r, &g, &b)); *rgb_p++ = r; *rgb_p++ = g; *rgb_p++ = b; CHECK (yuv2rgb (y2, u, v, &r, &g, &b)); *rgb_p++ = r; *rgb_p++ = g; *rgb_p++ = b; yuv_p += 4; } free (mybuf); return (GP_OK); } int spca50x_sdram_get_info (CameraPrivateLibrary * lib) { unsigned int index; uint8_t dramtype = 0; uint8_t *p; uint32_t start_page, end_page; uint8_t file_type; GP_DEBUG ("* spca50x_sdram_get_info"); if (lib->bridge == BRIDGE_SPCA504) { if (!spca50x_is_idle (lib)) spca50x_mode_set_idle (lib); spca50x_mode_set_download (lib); CHECK (gp_port_usb_msg_write (lib->gpdev, 0x00, 0x0001, SPCA50X_REG_AutoPbSize, NULL, 0)); CHECK (gp_port_usb_msg_read (lib->gpdev, 0, 0, SPCA50X_REG_DramType, (char *) & dramtype, 1)); dramtype &= 0xFF; } CHECK (spca50x_sdram_get_file_count_and_fat_count (lib, dramtype)); if (lib->num_files_on_sdram > 0) { CHECK (spca50x_get_FATs (lib, dramtype)); index = lib->files[lib->num_files_on_sdram - 1].fat_end; p = lib->fats + SPCA50X_FAT_PAGE_SIZE * index; /* p now points to the fat of the last image of the last file */ file_type = p[0]; start_page = ((p[2] & 0xFF) << 8) | (p[1] & 0xFF); end_page = start_page + (((p[6] & 0xFF) << 8) | (p[5] & 0xFF)); if (file_type == SPCA50X_FILE_TYPE_IMAGE) end_page = end_page + 0xA0; lib->size_used = (end_page - 0x2800) * SPCA50X_FAT_PAGE_SIZE; } else lib->size_used = 0; lib->size_free = 16 * 1024 * 1024 - 0x2800 * SPCA50X_FAT_PAGE_SIZE - lib->size_used; lib->dirty_sdram = 0; return GP_OK; } int spca50x_sdram_get_file_info (CameraPrivateLibrary * lib, unsigned int index, struct SPCA50xFile **g_file) { if (lib->dirty_sdram) CHECK (spca50x_sdram_get_info (lib)); *g_file = &(lib->files[index]); return GP_OK; } static int spca50x_mode_set_idle (CameraPrivateLibrary * lib) { CHECK (gp_port_usb_msg_write (lib->gpdev, 0, SPCA50X_CamMode_Idle, SPCA50X_REG_CamMode, NULL, 0)); return GP_OK; } static int spca50x_is_idle (CameraPrivateLibrary * lib) { int mode; CHECK (gp_port_usb_msg_read (lib->gpdev, 0, 0, SPCA50X_REG_CamMode, (char *) & mode, 1)); return mode == SPCA50X_CamMode_Idle ? 1 : 0; } static int spca50x_mode_set_download (CameraPrivateLibrary * lib) { CHECK (gp_port_usb_msg_write (lib->gpdev, 0, SPCA50X_CamMode_Upload, SPCA50X_REG_CamMode, NULL, 0)); return GP_OK; } static int spca50x_download_data (CameraPrivateLibrary * lib, uint32_t start, unsigned int size, uint8_t * buf) { uint8_t foo; uint8_t vlcAddressL, vlcAddressM, vlcAddressH; if (!spca50x_is_idle (lib)) spca50x_mode_set_idle (lib); spca50x_mode_set_download (lib); foo = size & 0xFF; CHECK (gp_port_usb_msg_write (lib->gpdev, 0, foo, SPCA50X_REG_SdramSizeL, NULL, 0)); foo = (size >> 8) & 0xFF; CHECK (gp_port_usb_msg_write (lib->gpdev, 0, foo, SPCA50X_REG_SdramSizeM, NULL, 0)); foo = (size >> 16) & 0xFF; CHECK (gp_port_usb_msg_write (lib->gpdev, 0, foo, SPCA50X_REG_SdramSizeH, NULL, 0)); CHECK (gp_port_usb_msg_read (lib->gpdev, 0, 0, SPCA50X_REG_VlcAddressL, (char *) & vlcAddressL, 1)); CHECK (gp_port_usb_msg_read (lib->gpdev, 0, 0, SPCA50X_REG_VlcAddressM, (char *) & vlcAddressM, 1)); CHECK (gp_port_usb_msg_read (lib->gpdev, 0, 0, SPCA50X_REG_VlcAddressH, (char *) & vlcAddressH, 1)); foo = start & 0xFF; CHECK (gp_port_usb_msg_write (lib->gpdev, 0, foo, SPCA50X_REG_VlcAddressL, NULL, 0)); foo = (start >> 8) & 0xFF; CHECK (gp_port_usb_msg_write (lib->gpdev, 0, foo, SPCA50X_REG_VlcAddressM, NULL, 0)); foo = (start >> 16) & 0xFF; CHECK (gp_port_usb_msg_write (lib->gpdev, 0, foo, SPCA50X_REG_VlcAddressH, NULL, 0)); /* Set mode to ram -> usb */ CHECK (gp_port_usb_msg_write (lib->gpdev, 0, SPCA50X_DramUsb, SPCA50X_REG_PbSrc, NULL, 0)); /* and pull the trigger */ CHECK (gp_port_usb_msg_write (lib->gpdev, 0, SPCA50X_TrigDramFifo, SPCA50X_REG_Trigger, NULL, 0)); CHECK (gp_port_read (lib->gpdev, (char *)buf, size)); CHECK (gp_port_usb_msg_write (lib->gpdev, 0, vlcAddressL, SPCA50X_REG_VlcAddressL, NULL, 0)); CHECK (gp_port_usb_msg_write (lib->gpdev, 0, vlcAddressM, SPCA50X_REG_VlcAddressM, NULL, 0)); CHECK (gp_port_usb_msg_write (lib->gpdev, 0, vlcAddressH, SPCA50X_REG_VlcAddressH, NULL, 0)); spca50x_mode_set_idle (lib); return GP_OK; } static int spca50x_get_FATs (CameraPrivateLibrary * lib, int dramtype) { uint8_t type; unsigned int index = 0; unsigned int file_index = 0; uint8_t *p = NULL; uint8_t buf[14]; /* Reset image and movie counter */ lib->num_images = lib->num_movies = 0; if (lib->fats) { free (lib->fats); lib->fats = NULL; } if (lib->files) { free (lib->files); lib->files = NULL; } lib->fats = malloc (lib->num_fats * SPCA50X_FAT_PAGE_SIZE); lib->files = malloc (lib->num_files_on_sdram * sizeof (struct SPCA50xFile)); p = lib->fats; if (lib->bridge == BRIDGE_SPCA504) { while (index < lib->num_fats) { CHECK (spca50x_sdram_get_fat_page (lib, index, dramtype, p)); if (p[0] == 0xFF) break; index++; p += SPCA50X_FAT_PAGE_SIZE; } } else if (lib->bridge == BRIDGE_SPCA500) { /* for the spca500, download the whole fat in one go. */ spca50x_reset (lib); CHECK (gp_port_usb_msg_write (lib->gpdev, 0x05, 0x00, 0x07, NULL, 0)); sleep (1); CHECK (gp_port_read (lib->gpdev, (char *)lib->fats, lib->num_fats * SPCA50X_FAT_PAGE_SIZE)); } p = lib->fats; index = 0; while (index < lib->num_fats) { type = p[0]; /* While the spca504a indicates start of avi as 0x08 and cont. * of avi as 0x80, the spca500 uses 0x03 for both. Each frame * gets its own fat table with a sequence number at p[18]. */ if ((type == 0x80) || (type == 0x03 && (p[18] != 0x00))) { /* continuation of an avi */ lib->files[file_index - 1].fat_end = index; } else { /* its an image */ if (type == 0x00 || type == 0x01) { snprintf ((char*)buf, 13, "Image%03d.jpg", ++lib->num_images); lib->files[file_index].mime_type = SPCA50X_FILE_TYPE_IMAGE; } else if ((type == 0x08) || (type == 0x03)) { /* its the start of an avi */ snprintf ((char*)buf, 13, "Movie%03d.avi", ++lib->num_movies); lib->files[file_index].mime_type = SPCA50X_FILE_TYPE_AVI; } lib->files[file_index].fat = p; lib->files[file_index].fat_start = index; lib->files[file_index].fat_end = index; lib->files[file_index].name = strdup ((char*)buf); if (lib->bridge == BRIDGE_SPCA504) { lib->files[file_index].width = (p[8] & 0xFF) * 16; lib->files[file_index].height = (p[9] & 0xFF) * 16; } else if (lib->bridge == BRIDGE_SPCA500) { int w, h; if (p[20] == 2) { w = 320; h = 240; } else { w = 640; h = 480; } lib->files[file_index].width = w; lib->files[file_index].height = h; } lib->files[file_index].thumb = NULL; file_index++; } p += SPCA50X_FAT_PAGE_SIZE; index++; } return GP_OK; } static inline uint8_t * put_dword (uint8_t * ptr, uint32_t value) { ptr[0] = (value & 0xff); ptr[1] = (value & 0xff00) >> 8; ptr[2] = (value & 0xff0000) >> 16; ptr[3] = (value & 0xff000000) >> 24; return ptr + 4; } libgphoto2-2.5.9/camlibs/spca50x/spca50x-avi-header.h0000644000175000001440000000663212561423351017062 00000000000000#ifndef __SPCA50X_AVI_HEADER_H #define __SPCA50X_AVI_HEADER_H #define SPCA50X_AVI_FRAME_HEADER_LENGTH 8 static const uint8_t SPCA50xAviFrameHeader[SPCA50X_AVI_FRAME_HEADER_LENGTH] = { 0x30, 0x30, 0x64, 0x63, /* 00dc */ 0x00, 0x00, 0x00, 0x00 /* size of frame */ }; #define SPCA50X_AVI_HEADER_LENGTH 224 static const uint8_t SPCA50xAviHeader[SPCA50X_AVI_HEADER_LENGTH] = { /* -- RIFF HEADER -- */ 0x52, 0x49, 0x46, 0x46, /* 0x00; RIFF */ 0x00, 0x00, 0x00, 0x00, /* 0x04; number of bytes following */ 0x41, 0x56, 0x49, 0x20, /* 0x08; AVI */ 0x4C, 0x49, 0x53, 0x54, /* 0x0c; LIST */ 0xC0, 0x00, 0x00, 0x00, /* 0x10; length of list in bytes */ 0x68, 0x64, 0x72, 0x6C, /* 0x14; hdrl */ 0x61, 0x76, 0x69, 0x68, /* 0x18; avih */ 0x38, 0x00, 0x00, 0x00, /* 0x1c; number of bytes to follow */ 0xb5, 0x8c, 0x01, 0x00, /* 0x20; microseconds per frame */ 0x00, 0x00, 0x06, 0x00, /* 0x24; max bytes per second */ 0x00, 0x00, 0x00, 0x00, /* 0x28; PaddingGranularity (whatever that might be) */ /* Other sources call it 'reserved' */ 0x10, 0x00, 0x01, 0x00, /* 0x2c; flags, WASCAPTUREFILE | HASINDEX */ 0x00, 0x00, 0x00, 0x00, /* 0x30; total frames */ 0x00, 0x00, 0x00, 0x00, /* 0x34: initial frames */ 0x01, 0x00, 0x00, 0x00, /* 0x38: number of streams */ 0x00, 0x00, 0x00, 0x00, /* 0x3c: suggested buffer size */ 0x40, 0x01, 0x00, 0x00, /* 0x40: width */ 0xf0, 0x00, 0x00, 0x00, /* 0x44: height */ 0x00, 0x00, 0x00, 0x00, /* 0x48: some reserved long values */ 0x00, 0x00, 0x00, 0x00, /* 0x4c: */ 0x00, 0x00, 0x00, 0x00, /* 0x50: */ 0x00, 0x00, 0x00, 0x00, /* 0x54: */ /* -- video stream list -- */ 0x4C, 0x49, 0x53, 0x54, /* 0x58: LIST */ 0x74, 0x00, 0x00, 0x00, /* 0x5c: length of list in bytes */ 0x73, 0x74, 0x72, 0x6C, /* 0x60: strl */ /* -- video stream header -- */ 0x73, 0x74, 0x72, 0x68, /* 0x64: strh */ 0x38, 0x00, 0x00, 0x00, /* 0x68: # of bytes to follow */ 0x76, 0x69, 0x64, 0x73, /* 0x6c: vids */ 0x4D, 0x4A, 0x50, 0x47, /* 0x70: MJPG */ 0x00, 0x00, 0x00, 0x00, /* 0x74: some more reserved longs */ 0x00, 0x00, 0x00, 0x00, /* 0x78: */ 0x00, 0x00, 0x00, 0x00, /* 0x7c: */ 0x33, 0x18, 0x00, 0x00, /* 0x80: ms_per_frame scale */ 0x48, 0xEE, 0x00, 0x00, /* 0x84: Rate: Rate/Scale == samples/second */ 0x00, 0x00, 0x00, 0x00, /* 0x88: start */ 0x00, 0x00, 0x00, 0x00, /* 0x8c: length (video_frames) */ 0x00, 0x00, 0x00, 0x00, /* 0x90: suggested buffer size */ 0xFF, 0xFF, 0xFF, 0xFF, /* 0x94: quality */ 0x00, 0x00, 0x00, 0x00, /* 0x98: sample size */ 0x00, 0x00, 0x00, 0x00, /* 0x9c: frame */ 0x00, 0x00, 0x00, 0x00, /* 0xa0: frame */ /* -- video stream format -- */ 0x73, 0x74, 0x72, 0x66, /* 0xa4: strf */ 0x28, 0x00, 0x00, 0x00, /* 0xa8: number of bytes to follow (40) */ 0x28, 0x00, 0x00, 0x00, /* 0xac: size (dito) */ 0x40, 0x01, 0x00, 0x00, /* 0xb0: width */ 0xf0, 0x00, 0x00, 0x00, /* 0xb4: height */ 0x01, 0x00, 0x0C, 0x00, /* 0xb8: planes(1) : count(24) */ 0x4D, 0x4A, 0x50, 0x47, /* 0xbc: encoder MJPG */ 0x00, 0xC2, 0x01, 0x00, /* 0xc0: Size image */ 0x00, 0x00, 0x00, 0x00, /* 0xc4: XPelsPerMeter */ 0x00, 0x00, 0x00, 0x00, /* 0xc8: YPelsPerMeter */ 0x00, 0x00, 0x00, 0x00, /* 0xcc: Number of colors used */ 0x00, 0x00, 0x00, 0x00, /* 0xd0: Number of colors important */ /* do we have to pad with JUNK here ? */ 0x4C, 0x49, 0x53, 0x54, /* 0xd4: LIST */ 0x00, 0x00, 0x00, 0x00, /* 0xd8: size of list */ 0x6D, 0x6F, 0x76, 0x69 /* 0xda: movi */ }; #endif /* __SPCA50X_AVI_HEADER_H */ libgphoto2-2.5.9/camlibs/spca50x/spca50x.c0000644000175000001440000001654512610415536015057 00000000000000/****************************************************************/ /* spca50x.c - Gphoto2 library for cameras with sunplus spca50x */ /* chips */ /* */ /* Copyright 2002, 2003 Till Adam */ /* */ /* Author: Till Adam */ /* */ /* Pure digital support: John Maushammer */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include "gphoto2-endian.h" #include "spca50x.h" #include "spca50x-registers.h" #include "spca50x-jpeg-header.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "spca50x" int spca50x_get_firmware_revision (CameraPrivateLibrary *lib) { CHECK (gp_port_usb_msg_read (lib->gpdev, 0x20, 0x0, 0x0, (char *)&(lib->fw_rev), 1)); return GP_OK; } int spca50x_detect_storage_type (CameraPrivateLibrary *lib) { int i; uint8_t buf[3]; for (i=0;i<3;i++) { buf[i] = 0; /* if no data returned, assume no capability */ CHECK (gp_port_usb_msg_read (lib->gpdev, 0x28, 0x0000, i, (char *)&buf[i], 0x01)); } if (buf[0]) lib->storage_media_mask |= SPCA50X_SDRAM; if (buf[1]) lib->storage_media_mask |= SPCA50X_FLASH; if (buf[2]) lib->storage_media_mask |= SPCA50X_CARD; GP_DEBUG("SPCA50x: has_sdram: 0x%x has_flash 0x%x has_card: 0x%x\n", buf[0], buf[1], buf[2]); return GP_OK; } static int spca50x_pd_enable (CameraPrivateLibrary * lib) { uint8_t buf[9]; uint8_t writebyte; uint32_t bcd_serial; uint32_t return_value; GP_DEBUG ("Pure digital additional initialization"); CHECK (gp_port_usb_msg_read (lib->gpdev, 0x2d, 0x0000, 0x0001, (char*)buf, 0x08)); bcd_serial = ((buf[0] & 0x0f) << 28) | ((buf[1] & 0x0f) << 24) | ((buf[2] & 0x0f) << 20) | ((buf[3] & 0x0f) << 16) | ((buf[4] & 0x0f) << 12) | ((buf[5] & 0x0f) << 8) | ((buf[6] & 0x0f) << 4) | ((buf[7] & 0x0f) << 0); GP_DEBUG ("Camera serial number = %08x", bcd_serial); return_value = ~bcd_serial << 2; GP_DEBUG ("return value = %08x", return_value); writebyte = return_value & 0xff; CHECK (gp_port_usb_msg_write (lib->gpdev, 0x2d, 0x0000, 0x0000, (char*)&writebyte, 0x01)); writebyte = (return_value >> 8) & 0xff; CHECK (gp_port_usb_msg_write (lib->gpdev, 0x2d, 0x0000, 0x0001, (char*)&writebyte, 0x01)); writebyte = (return_value >> 16) & 0xff; CHECK (gp_port_usb_msg_write (lib->gpdev, 0x2d, 0x0000, 0x0002, (char*)&writebyte, 0x01)); writebyte = (return_value >> 24) & 0xff; CHECK (gp_port_usb_msg_write (lib->gpdev, 0x2d, 0x0000, 0x0003, (char*)&writebyte, 0x01)); return GP_OK; } int spca50x_reset (CameraPrivateLibrary * lib) { GP_DEBUG ("* spca50x_reset"); if (lib->bridge == BRIDGE_SPCA500) { if (lib->storage_media_mask & SPCA50X_SDRAM) { /* This is not reset but "Change Mode to Idle * (Clear Buffer)" Cant hurt, I guess. */ CHECK (gp_port_usb_msg_write (lib->gpdev, 0x02, 0x0000, 0x07, NULL, 0)); } } else if (lib->fw_rev == 1) { CHECK (gp_port_usb_msg_write (lib->gpdev, 0x02, 0x0000, 0x0003, NULL, 0)); } else if (lib->fw_rev == 2) { CHECK (gp_port_usb_msg_write(lib->gpdev, 0, 1, SPCA50X_REG_AutoPbSize, NULL, 0)); CHECK (gp_port_usb_msg_write(lib->gpdev, 0, 0, 0x0d04, NULL, 0)); CHECK (gp_port_usb_msg_write(lib->gpdev, 0x1e, 0, 0, NULL, 0)); if (lib->bridge == BRIDGE_SPCA504B_PD) { CHECK (spca50x_pd_enable (lib)); } } usleep(200000); return GP_OK; } int yuv2rgb (uint32_t y, uint32_t u, uint32_t v, uint32_t *_r, uint32_t *_g, uint32_t *_b) { double r, g, b; r = (char) y + 128 + 1.402 * (char) v; g = (char) y + 128 - 0.34414 * (char) u - 0.71414 * (char) v; b = (char) y + 128 + 1.772 * (char) u; if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255; if (r < 0) r = 0; if (g < 0) g = 0; if (b < 0) b = 0; *_r = r; *_g = g; *_b = b; return GP_OK; } int spca50x_capture (CameraPrivateLibrary * lib) { sleep (2); CHECK (gp_port_usb_msg_write (lib->gpdev, 0x06, 0x0000, 0x0003, NULL, 0)); sleep (3); return GP_OK; } void create_jpeg_from_data (uint8_t * dst, uint8_t * src, int qIndex, int w, int h, uint8_t format, int o_size, int *size, int omit_huffman_table, int omit_escape) { int i = 0; uint8_t *start; uint8_t value; start = dst; /* copy the header from the template */ memcpy (dst, SPCA50xJPGDefaultHeaderPart1, SPCA50X_JPG_DEFAULT_HEADER_PART1_LENGTH); /* modify quantization table */ memcpy (dst + 7, SPCA50xQTable[qIndex * 2], 64); memcpy (dst + 72, SPCA50xQTable[qIndex * 2 + 1], 64); dst += SPCA50X_JPG_DEFAULT_HEADER_PART1_LENGTH; /* copy Huffman table */ if (!omit_huffman_table) { memcpy (dst, SPCA50xJPGDefaultHeaderPart2, SPCA50X_JPG_DEFAULT_HEADER_PART2_LENGTH); dst += SPCA50X_JPG_DEFAULT_HEADER_PART2_LENGTH; } memcpy (dst, SPCA50xJPGDefaultHeaderPart3, SPCA50X_JPG_DEFAULT_HEADER_PART3_LENGTH); /* modify the image width, height */ *(dst + 8) = w & 0xFF; /* Image width low byte */ *(dst + 7) = w >> 8 & 0xFF; /* Image width high byte */ *(dst + 6) = h & 0xFF; /* Image height low byte */ *(dst + 5) = h >> 8 & 0xFF; /* Image height high byte */ /* set the format */ *(dst + 11) = format; /* point to real JPG compress data start position and copy */ dst += SPCA50X_JPG_DEFAULT_HEADER_PART3_LENGTH; for (i = 0; i < o_size; i++) { value = *(src + i) & 0xFF; *(dst) = value; dst++; if (value == 0xFF && !omit_escape) { *(dst) = 0x00; dst++; } } /* Add end of image marker */ *(dst++) = 0xFF; *(dst++) = 0xD9; *size = dst - start; } libgphoto2-2.5.9/camlibs/spca50x/spca50x.h0000644000175000001440000000645012610415536015056 00000000000000/****************************************************************/ /* spca50x.h - Gphoto2 library for cameras with sunplus spca50x */ /* chips */ /* */ /* Copyright 2002, 2003 Till Adam */ /* */ /* Author: Till Adam */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #ifndef __SPCA50X_H__ #define __SPCA50X_H__ #include <_stdint.h> #include #define SPCA50X_FAT_PAGE_SIZE 0x100 #define SPCA50X_FILE_TYPE_IMAGE 0x00 #define SPCA50X_FILE_TYPE_AVI 0x01 #define CHECK(result) {int res; res = result; if (res < 0) return (res);} struct SPCA50xFile { char *name; int width; int height; int fat_start; int fat_end; uint8_t *fat; int mime_type; int type; /* not necessarily the same thing as mime_type! */ unsigned int size; uint8_t *thumb; /* used to cache the thumbnail data, for some cams */ }; typedef enum { BRIDGE_SPCA500, BRIDGE_SPCA504, BRIDGE_SPCA504B_PD /* with specialized pure digital firmware */ } SPCA50xBridgeChip; struct _CameraPrivateLibrary { GPPort *gpdev; int dirty_sdram:1; int dirty_flash:1; int storage_media_mask; uint8_t fw_rev; SPCA50xBridgeChip bridge; int num_files_on_flash; int num_files_on_sdram; int num_images; int num_movies; int num_fats; int size_used; int size_free; uint8_t *flash_toc; uint8_t *fats; struct SPCA50xFile *files; }; #define SPCA50X_SDRAM 0x01 #define SPCA50X_FLASH 0x02 #define SPCA50X_CARD 0x04 #define SPCA50X_JPG_DEFAULT_HEADER_LENGTH 589 int spca50x_get_firmware_revision (CameraPrivateLibrary *lib); int spca50x_detect_storage_type (CameraPrivateLibrary *lib); int spca50x_reset (CameraPrivateLibrary * lib); int spca50x_capture (CameraPrivateLibrary * lib); int yuv2rgb (uint32_t y, uint32_t u, uint32_t v, uint32_t *r, uint32_t *g, uint32_t *b); void create_jpeg_from_data (uint8_t * dst, uint8_t * src, int qIndex, int w, int h, uint8_t format, int original_size, int *size, int omit_huffman_table, int omit_escape); #endif /* __SPCA50X_H__ */ libgphoto2-2.5.9/camlibs/spca50x/Makefile-files0000644000175000001440000000116412561423351016156 00000000000000EXTRA_DIST += spca50x/ChangeLog.benq spca50x/ChangeLog.gsmart spca50x/ChangeLog.spca504_flash spca50x/lsusb-v spca50x/README.spca50x spca50x/ChangeLog camlibdoc_DATA += spca50x/README.spca50x EXTRA_LTLIBRARIES += spca50x.la spca50x_la_SOURCES = \ spca50x/spca50x.c spca50x/spca50x.h \ spca50x/spca50x-flash.c spca50x/spca50x-flash.h \ spca50x/spca50x-sdram.c spca50x/spca50x-sdram.h \ spca50x/library.c \ spca50x/spca50x-jpeg-header.h spca50x/spca50x-registers.h \ spca50x/spca50x-avi-header.h spca50x_la_LDFLAGS = $(camlib_ldflags) spca50x_la_DEPENDENCIES = $(camlib_dependencies) spca50x_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/spca50x/ChangeLog.gsmart0000644000175000001440000000476012557123324016473 00000000000000Sam Dez 07 21:04:46 2002 Till Adam * the lowest res of the mini is a different format, cope with that * fix cases where the number of frames advertised by one of the fat pages of an avi exceed the total number of frames it has (Reported by Gerd Flaig ) Tue Nov 05 12:17:30 2002 Till Adam * return unssuported for avi downloading and small and large image resolutions if the bridge is a SPCA500 (gsmart mini). Sat Oct 19 22:52:34 2002 Till Adam * another patch from Piotr Pawlow which omits the standard huffmann tables in the mjpeg thereby reducing them in size. This seems to be a standard extension of the mjpeg "standard" and works with the players I've tested Mon Oct 14 20:32:08 2002 Till Adam * move jpeg creation into function * add experimental support for the "gsmart mini" * bump version number to 0.3 * driver status for the spca504a based is now TESTING * patch from Piotr Pawlow adding an index to downloaded avi's and fixing a few bugs. * endianess fixes Wed Oct 09 19:58:01 2002 Till Adam * add experimental support for the "gSmart mini 3" and "So. Show 301" * (identical to the gSmart mini 2) Tue Oct 08 22:14:04 2002 Till Adam * add support for avi downloading 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 Sam Aug 31 20:15:03 2002 Till Adam * return name in the file_info as well. Fixes kamera kio-slave * endianess fix reported by Carl Lunde * spelling fix Thu Aug 22 20:46:02 2002 Till Adam * add support for avi thumbnails Tue Aug 13 21:37:08 2002 Till Adam * add a little timeout after deletion of a file. The camera ignores successive deletes otherwise. Tue Aug 13 14:13:27 2002 Till Adam * disallow deletion of anything but the last file on the camera Sat Aug 10 19:03:31 2002 Till Adam * remove debugging calls * allocate space for GsmartFile structures dynamically * sprintf -> snprintf, strcpy -> strncpy, fprintf -> gp_context_error * make internally used functions static and remove them from gsmart.h Mon Aug 05 00:01:06 2002 Till Adam * initial release of the module libgphoto2-2.5.9/camlibs/spca50x/README.spca50x0000644000175000001440000001133512561423351015561 00000000000000This is a gphoto2 driver for cameras with a SunPlus spca504 chip and for the Mustek gSmart mini, which has a spca500. It supports cameras with sdram, flash and card storage or a combination of those. Currently we know of the following models: Mustek gSmart mini Mustek gSmart mini 2 Mustek gSmart mini 3 So. Show 301 Aiptek Pencam Aiptek Pencam without flash storage (needs --camera "Pencam without flash") Medion MD 5319 nisis Quickpix Qp3 Trust Spyc@m 500F FLASH Aiptek 1.3 mega PocketCam Maxell Max Pocket Aiptek Smart Megacam Benq DC1300 D-Link DSC 350+ Trust Familycam 300 Minton S-Cam F5 Pure Digital Ritz disposable cam There are probably more cameras with these chips out there and they probably work with this driver as well. Notes ----- The cameras always delete the last file on them, no matter what file number is passed to it for deletion. It is impossible to delete a specific image or movie on the camera. Webcam mode ----------- The cameras of this series are based on the spca504a and spca500 chip manufactured by Sunplus. Both chips are capable of streaming, so there's a project working on video4linux support for them. spca50x.sourceforge.net We have been succesfull in getting some of the cameras supported by this camlib working as part of that project. :) Authors ------- Till Adam based on the work of others and with help from a lot of people listed below. The initial support for the Mustek gsmart mini 2 was based on the sources of the windows driver kindly provided by Mustek. Ian MacArthur support for spca500 based cams with flash storage. This camlib is the result of merging several others that were created before it was clear how they relate to each other. The thank you sections of the old READMEs are listed here in no particular order. Post merge thanks ----------------- A lot of people helped with testing the merged camlib. Most of them are listed below anyway, so I wont list them again. Big thanks to Richard Curnow who fixed several bug in the gsmart mini support. His patches went in during the merge. Hartmut Henkel helped debug a crash with thumbnails. Rupert Levene helped debug the merged camlib. Norbert Möndjen found out that the pencams don't react well to the reset command. Walt Boring helped debug the above reset problem. John Feuerstein helped figuring out and testing the workaround for Pencams without flash. Thanks to John Maushammer for adding support for the Dakota disposable cameras. Thanks from the Benq README --------------------------- Johan Nilsson made windows snoops, tested the early versions and helped debug them. Without him, this would not have been possible. Thanks from the gsmart README ----------------------------- Special thanks go to Bjorn Borud who extorted the above mentioned sources for the windows driver from Mustek and to Buster Lee at Mustek for being helpful and responsive. Special thanks also to Tim Sampson , who made the support for spca500 based cams (such as the gsmart mini) possible by boldly trying out my untested alpha versions. Adam Pribyl helped debugging the lowest resolution of the gsmart mini and had to put his cam in the fridge (!) several times in the process. Brave man. ;) Michel Xhaard helped add support for the Maxell Max Pocket with patches and testing. Thanks a lot. Very special thanks to Piotr Pawlow for adding avi index functionality and fixing a few bugs. Also thanks to the following people for testing and feedback: Torfinn Ingolfsen Mikael Nilsson Miah Gregory Soenke Reimers Gerd Flaig Thanks from the spca504_flash README ------------------------------------ This owes everything to the work of Mark Zimmermann whose pencamread tool I have simply ported to a gphoto2 camlib. The macam driver by Matthias Krauß was also helpfull. All features are theirs, all bugs are mine. I dont own a camera of this type, so I had to rely on Armin Janssen to tirelessly produce usb snoops, test and give feedback. Without Armin this would not have been possible, so if you own a camera that is supported by this driver consider sending him an email and thanking him for risking his cam so yours works on linux ;). Thanks also to Martyn Ranyard for testing and reporting success with the nisis Quickpix Qp3. He also helped debug the beginnings of avi support. libgphoto2-2.5.9/camlibs/spca50x/spca50x-jpeg-header.h0000644000175000001440000002274012561423351017226 00000000000000#ifndef __SPCA50X_JPEG_HEADER_H #define __SPCA50X_JPEG_HEADER_H /* * Start from 0 -> 588 * 7 - 70 : Quantization Table[0] * 72 - 135 : Quantization Table[1] */ #define SPCA50X_JPG_DEFAULT_HEADER_PART1_LENGTH 136 #define SPCA50X_JPG_DEFAULT_HEADER_PART2_LENGTH 420 #define SPCA50X_JPG_DEFAULT_HEADER_PART3_LENGTH 33 static const uint8_t SPCA50xJPGDefaultHeaderPart1[SPCA50X_JPG_DEFAULT_HEADER_PART1_LENGTH] = { /* SOI(Start of Image) */ 0xFF,0xD8, /* DQT(Define Quantization Table) */ 0xFF,0xDB, 0x00,0x84, 0x00, 0x05,0x03,0x04,0x04,0x04,0x03,0x05,0x04,0x04,0x04,0x06,0x05,0x05,0x06,0x08,0x0D, 0x08,0x08,0x07,0x07,0x08,0x10,0x0C,0x0C,0x0A,0x0D,0x14,0x11,0x15,0x14,0x13,0x11, 0x13,0x13,0x16,0x18,0x1F,0x1A,0x16,0x17,0x1E,0x17,0x13,0x13,0x1B,0x25,0x1C,0x1E, 0x20,0x21,0x23,0x23,0x23,0x15,0x1A,0x27,0x29,0x26,0x22,0x29,0x1F,0x22,0x23,0X22, 0X01, 0x05,0x06,0x06,0x08,0x07,0x08,0x10,0x08,0x08,0x10,0x22,0x16,0x13,0x16,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22 }; static const uint8_t SPCA50xJPGDefaultHeaderPart2[SPCA50X_JPG_DEFAULT_HEADER_PART2_LENGTH] = { /* DHT(Define Huffman Table) */ 0xFF,0xC4, 0x01,0xA2, 0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x01,0x00,0x03, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x10,0x00,0x02,0x01,0x03,0x03, 0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7D,0x01,0x02,0x03,0x00,0x04, 0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81, 0x91,0xA1,0x08,0x23,0x42,0xB1,0xC1,0x15,0x52,0xD1,0xF0,0x24,0x33,0x62,0x72,0x82, 0x09,0x0A,0x16,0x17,0x18,0x19,0x1A,0x25,0x26,0x27,0x28,0x29,0x2A,0x34,0x35,0x36, 0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56, 0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76, 0x77,0x78,0x79,0x7A,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95, 0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3, 0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA, 0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0x11,0x00,0x02, 0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01, 0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22, 0x32,0x81,0x08,0x14,0x42,0x91,0xA1,0xB1,0xC1,0x09,0x23,0x33,0x52,0xF0,0x15,0x62, 0x72,0xD1,0x0A,0x16,0x24,0x34,0xE1,0x25,0xF1,0x17,0x18,0x19,0x1A,0x26,0x27,0x28, 0x29,0x2A,0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A, 0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A, 0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89, 0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,0xC5, 0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE2,0xE3, 0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA }; /* * 5 - 6 : Image Height(H Byte,L Byte) * 7 - 8 : Image Width(H Byte,L Byte) */ static const uint8_t SPCA50xJPGDefaultHeaderPart3[SPCA50X_JPG_DEFAULT_HEADER_PART3_LENGTH] = { /* SOFn(Start of Frame) */ 0xFF,0xC0, 0x00,0x11, 0x08,0x00,0x78,0x00,0xA0,0x03,0x01,0x21,0x00,0x02,0x11,0x01,0x03,0x11,0x01, /* SOS(Start of Scan) */ 0xFF,0xDA, 0x00,0x0C, 0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3F,0x00 }; static const uint8_t SPCA50xQTable[20][64]= { /* index 0, Q50 */ { 16, 11, 12, 14, 12, 10, 16, 14, 13, 14, 18, 17, 16, 19, 24, 40, 26, 24, 22, 22, 24, 49, 35, 37, 29, 40, 58, 51, 61, 60, 57, 51, 56, 55, 64, 72, 92, 78, 64, 68, 87, 69, 55, 56, 80,109, 81, 87, 95, 98,103,104,103, 62, 77,113,121,112,100,120, 92,101,103, 99 }, { 17, 18, 18, 24, 21, 24, 47, 26, 26, 47, 99, 66, 56, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 }, /* index 1, Q70 */ { 10, 7, 7, 8, 7, 6, 10, 8, 8, 8, 11, 10, 10, 11, 14, 24, 16, 14, 13, 13, 14, 29, 21, 22, 17, 24, 35, 31, 37, 36, 34, 31, 34, 33, 38, 43, 55, 47, 38, 41, 52, 41, 33, 34, 48, 65, 49, 52, 57, 59, 62, 62, 62, 37, 46, 68, 73, 67, 60, 72, 55, 61, 62, 59 }, { 10, 11, 11, 14, 13, 14, 28, 16, 16, 28, 59, 40, 34, 40, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59 }, /* index 2, Q80 */ { 6, 4, 5, 6, 5, 4, 6, 6, 5, 6, 7, 7, 6, 8, 10, 16, 10, 10, 9, 9, 10, 20, 14, 15, 12, 16, 23, 20, 24, 24, 23, 20, 22, 22, 26, 29, 37, 31, 26, 27, 35, 28, 22, 22, 32, 44, 32, 35, 38, 39, 41, 42, 41, 25, 31, 45, 48, 45, 40, 48, 37, 40, 41, 40 }, { 7, 7, 7, 10, 8, 10, 19, 10, 10, 19, 40, 26, 22, 26, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 }, /* index 3, Q85 */ { 5, 3, 4, 4, 4, 3, 5, 4, 4, 4, 5, 5, 5, 6, 7, 12, 8, 7, 7, 7, 7, 15, 11, 11, 9, 12, 17, 15, 18, 18, 17, 15, 17, 17, 19, 22, 28, 23, 19, 20, 26, 21, 17, 17, 24, 33, 24, 26, 29, 29, 31, 31, 31, 19, 23, 34, 36, 34, 30, 36, 28, 30, 31, 30 }, { 5, 5, 5, 7, 6, 7, 14, 8, 8, 14, 30, 20, 17, 20, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 }, /* index 4, Q90 */ { 3, 2, 2, 3, 2, 2, 3, 3, 3, 3, 4, 3, 3, 4, 5, 8, 5, 5, 4, 4, 5, 10, 7, 7, 6, 8, 12, 10, 12, 12, 11, 10, 11, 11, 13, 14, 18, 16, 13, 14, 17, 14, 11, 11, 16, 22, 16, 17, 19, 20, 21, 21, 21, 12, 15, 23, 24, 22, 20, 24, 18, 20, 21, 20 }, { 3, 4, 4, 5, 4, 5, 9, 5, 5, 9, 20, 13, 11, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }, /* index 5, Q60 */ { 13, 9, 10, 11, 10, 8, 13, 11, 10, 11, 14, 14, 13, 15, 19, 32, 21, 19, 18, 18, 19, 39, 28, 30, 23, 32, 46, 41, 49, 48, 46, 41, 45, 44, 51, 58, 74, 62, 51, 54, 70, 55, 44, 45, 64, 87, 65, 70, 76, 78, 82, 83, 82, 50, 62, 90, 97, 90, 80, 96, 74, 81, 82, 79 }, { 14, 14, 14, 19, 17, 19, 38, 21, 21, 38, 79, 53, 45, 53, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79 }, /* index 6, Q25 */ { 32, 22, 24, 28, 24, 20, 32, 28, 26, 28, 36, 34, 32, 38, 48, 80, 52, 48, 44, 44, 48, 98, 70, 74, 58, 80,116,102,122,120,114,102, 112,110,128,144,184,156,128,136,174,138,110,112,160,218,162,174, 190,196,206,208,206,124,154,226,242,224,200,240,184,202,206,198 }, { 34, 36, 36, 48, 42, 48, 94, 52, 52, 94,198,132,112,132,198,198, 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198, 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198, 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198 }, /* index 7, Q95 */ { 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 4, 3, 2, 2, 2, 2, 5, 4, 4, 3, 4, 6, 5, 6, 6, 6, 5, 6, 6, 6, 7, 9, 8, 6, 7, 9, 7, 6, 6, 8, 11, 8, 9, 10, 10, 10, 10, 10, 6, 8, 11, 12, 11, 10, 12, 9, 10, 10, 10 }, { 2, 2, 2, 2, 2, 2, 5, 3, 3, 5, 10, 7, 6, 7, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }, /* index 8, Q93 */ { 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 3, 2, 2, 3, 3, 6, 4, 3, 3, 3, 3, 7, 5, 5, 4, 6, 8, 7, 9, 8, 8, 7, 8, 8, 9, 10, 13, 11, 9, 10, 12, 10, 8, 8, 11, 15, 11, 12, 13, 14, 14, 15, 14, 9, 11, 16, 17, 16, 14, 17, 13, 14, 14, 14 }, { 2, 3, 3, 3, 3, 3, 7, 4, 4, 7, 14, 9, 8, 9, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 }, /* index 9, Q40 */ { 20, 14, 15, 18, 15, 13, 20, 18, 16, 18, 23, 21, 20, 24, 30, 50, 33, 30, 28, 28, 30, 61, 44, 46, 36, 50, 73, 64, 76, 75, 71, 64, 70, 69, 80, 90,115, 98, 80, 85,109, 86, 69, 70,100,136,101,109, 119,123,129,130,129, 78, 96,141,151,140,125,150,115,126,129,124 }, { 21, 23, 23, 30, 26, 30, 59, 33, 33, 59,124, 83, 70, 83,124,124, 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124 } }; #endif /* __SPCA50X_JPEG_HEADER_H */ libgphoto2-2.5.9/camlibs/spca50x/ChangeLog0000644000175000001440000000310312557123324015165 000000000000002004-10-28 Hubert Figuiere * library.c (camera_init): Fix build for gcc 2.95 (bug #105586) 2004-02-22 Till Adam * add support for Dakota disposable cameras. This is the work of John Maushammer 2004-02-22 Till Adam * add support for Pencams without flash via a special camera model. --camera "Pencam without flash" works for those cams which fail upon autodetection as regular pencams. Thanks to John Feuerstein for helping with that. 2004-01-17 Till Adam * fix brokeness for pencams which don't react well to the reset command needed for other firmware one cams. Thanks to Norbert Möndjen and Walt Boring for figuring that out and helping debug it. 2003-06-04 Till Adam * add support for spca500 based cams with flash storage, courtesy of Ian MacArthur 2003-06-04 Till Adam * use ids to detect the model instead of strcmp which fails after the : change * move jpeg function into spca50x.c|h * return mtime in the info func to save thumbnail uploads 2003-05-17 Till Adam * fix crash in thumbnail generation due to brainfart on my part. Thanks to Hartmut Henkel for the help. 2003-02-22 Till Adam * merge of the gsmart, spca504_flash and benq camlibs into this one libgphoto2-2.5.9/camlibs/spca50x/spca50x-registers.h0000644000175000001440000000604412610415536017062 00000000000000/****************************************************************/ /* spca50x-registers.h - Gphoto2 library for cameras with a */ /* Sunplus spca50x chip */ /* */ /* Copyright 2002, 2003 Till Adam */ /* */ /* Author: Till Adam */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #ifndef __SPCA50X_REGISTERS_H__ #define __SPCA50X_REGISTERS_H__ /* ---- Register ---- */ #define SPCA50X_REG_CamMode 0x2000 /* ---- CamMode Value ---- */ typedef enum { SPCA50X_CamMode_Idle = 0, SPCA50X_CamMode_DSC = 1, SPCA50X_CamMode_VideoClip = 2, SPCA50X_CamMode_PcCamera = 3, SPCA50X_CamMode_Upload = 4 } SPCA50xCamMode; #define SPCA50X_REG_PbSrc 0x2301 /* ---- PbSrc Value ---- */ #define SPCA50X_DramUsb 0x13 #define SPCA50X_REG_AutoPbSize 0x2306 #define SPCA50X_REG_DramType 0x2705 #define SPCA50X_REG_ImageType 0x270c #define SPCA50X_REG_SdramSizeL 0x2710 /* Size [7:0] */ #define SPCA50X_REG_SdramSizeM 0x2711 /* Size [15:8] */ #define SPCA50X_REG_SdramSizeH 0x2712 /* Size [21:16] */ #define SPCA50X_REG_VlcAddressL 0x2713 #define SPCA50X_REG_VlcAddressM 0x2714 #define SPCA50X_REG_VlcAddressH 0x2715 #define SPCA50X_REG_MemWidthL 0x2720 #define SPCA50X_REG_MemWidthH 0x2721 #define SPCA50X_REG_MemHeightL 0x2722 #define SPCA50X_REG_MemHeightH 0x2723 #define SPCA50X_REG_Trigger 0x27a1 /* ---- Trigger bit Value ---- */ #define SPCA50X_TrigDramFifo 2 #define SPCA50X_REG_JFIF 0x2884 #define SPCA50X_REG_CompSizeL 0x2887 #define SPCA50X_REG_CompSizeM 0x2888 #define SPCA50X_REG_CompSizeH 0x2889 #define SPCA50X_REG_I2C_wIndex 0x2a08 #define SPCA50X_REG_I2C_wValue 0x2a10 #define SPCA50X_REG_I2C_rValue 0x2a30 #define SPCA50X_REG_I2C_rStatus 0x2a06 #endif /* __SPCA50X_REGISTERS_H__ */ libgphoto2-2.5.9/camlibs/spca50x/spca50x-flash.h0000644000175000001440000000334212561423351016145 00000000000000/* spca50x_flash.h * * This library is free software; you can redistribute and/or * modify it inder the terms of the GNU Lesser Genreral Public * License as publiced by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warrenty of * MERCHANTABULITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * lesser General Public License for more details. * * Author: Till Adam * based on work by: Mark A. Zimmerman */ #ifndef __SPCA50X_FLASH_H__ #define __SPCA50X_FLASH_H_ #include #include #define CHECK(result) {int res; res = result; if (res < 0) return (res);} int spca50x_flash_init(CameraPrivateLibrary *pl, GPContext *context); int spca50x_flash_close(CameraPrivateLibrary *pl, GPContext *context); int spca50x_flash_get_TOC(CameraPrivateLibrary *pl, int *filecount); int spca50x_flash_get_file_name(CameraPrivateLibrary *pl, int index, char *name); int spca50x_flash_get_file_dimensions(CameraPrivateLibrary *pl, int index, int *w, int *h); int spca50x_flash_get_file (CameraPrivateLibrary *pl, GPContext *context, uint8_t **buf, unsigned int *len, int index, int thumbnail); int spca50x_flash_get_file_size(CameraPrivateLibrary *pl, int index, int *size); int spca50x_flash_get_filecount(CameraPrivateLibrary *pl, int *filecount); int spca50x_flash_delete_all (CameraPrivateLibrary *pl, GPContext *context); /* for testing */ int spca500_flash_delete_file (CameraPrivateLibrary *pl, int index); int spca500_flash_capture (CameraPrivateLibrary *pl); #endif libgphoto2-2.5.9/camlibs/spca50x/lsusb-v0000644000175000001440000004160012557123324014735 00000000000000#!/usr/bin/perl -w # lsusb-v ##################################################################### # # This file contains the output of lsusb -v for the cameras # supported by this driver # # The purpose is to have a comprehensive database in which to find # distinguishing properties for cameras with the same ProductID but # different features # # Add data after the __DATA__ line. There is a template you can copy. # # Run this file with perl to create the lsusb output in extra files. # ###################################################################### use strict; my $dir = "lsusb-v-comparison"; mkdir($dir) || die "no mkdir"; my $print = 0; my $fname = 0; while () { my $line = $_; if ($line =~ /^##BEGIN lsusb-v/) { $print = 1; open(OUT, ">${dir}/${fname}"); $fname++; } elsif ($line =~ /^##END lsusb-v/) { $print = 0; close(OUT); } if ($print) { print OUT $line; } } print "Have a look at ${dir}/* now :-)\n"; __DATA__ ##BEGIN CAMERA #Camera name: #Contact person: ##END Notes ##BEGIN lsusb-v ##END lsusb-v ##END CAMERA ##BEGIN CAMERA #Camera name: Aiptek 1.3 #Media: sdram, ? #Contact person: Walter A. Boring IV - hemna ##BEGIN Notes # This is the camera which deletes all files when downloading a file # with libgphoto2 2.1.3. See # https://sourceforge.net/tracker/index.php?func=detail&aid=876501&group_id=8874&atid=108874 # for details. ##END Notes ##BEGIN lsusb-v Bus 001 Device 004: ID 04fc:504a Sunplus Technology Co., Ltd SPCA504a Digital Camera Language IDs: none (invalid length string descriptor bf; len=0) Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.00 bDeviceClass 0 Interface bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x04fc Sunplus Technology Co., Ltd idProduct 0x504a SPCA504a Digital Camera bcdDevice 1.00 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 167 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 0 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 128 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 2 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 384 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 3 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 512 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 4 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 640 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 5 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 768 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 6 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 896 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 7 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 1023 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type none wMaxPacketSize 64 bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type none wMaxPacketSize 64 bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type none wMaxPacketSize 1 bInterval 1 Language IDs: none (invalid length string descriptor bf; len=0) ##END lsusb-v ##END CAMERA ##BEGIN CAMERA #Camera name: Aiptek Mega Cam 1.3 #Media: flash, sdram #Contact Person: mxhaard ##BEGIN Notes # This camera must be initialized this way: # - remove and reinsert battery # - press the little button until the LCD goes in blink 888 # Otherwise the camera is not found. Strange. ##END Notes ##BEGIN lsusb-v Bus 002 Device 004: ID 04fc:504a Sunplus Technology Co. Language IDs: none (invalid length string descriptor bf; len=0) Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.00 bDeviceClass 0 Interface bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x04fc Sunplus Technology Co. idProduct 0x504a bcdDevice 1.00 iManufacturer 0 iProduct 0 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 167 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 0 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 128 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 2 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 384 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 3 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 512 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 4 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 640 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 5 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 768 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 6 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 896 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 7 bNumEndpoints 1 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 1 Transfer Type Isochronous Synch Type none wMaxPacketSize 1023 bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type none wMaxPacketSize 64 bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type none wMaxPacketSize 64 bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type none wMaxPacketSize 1 bInterval 1 Language IDs: none (invalid length string descriptor bf; len=0) ##END lsusb-v ##END CAMERA ######################################################################## # END OF FILE ######################################################################## libgphoto2-2.5.9/camlibs/spca50x/ChangeLog.spca504_flash0000644000175000001440000000131112557123324017517 00000000000000Fre Jan 24 11:47:04 2003 Till Adam * apply patch by Mark Zimmermann fixing thumbnails for low res images Fri Jan 24 08:15:59 2003 Till Adam * apply patch by Mark Zimmermann fixing reporting of preview height 2002-11-26 Colin Marquardt * library.c (camera_about): Make sure author names are 7bit ASCII only. Son Nov 10 21:19:16 2002 Till Adam * import into gphoto cvs Sam Nov 02 20:09:06 2002 Till Adam * implement -n, -L and -P Fri Oct 25 17:32:26 2002 Till Adam * start of camlib libgphoto2-2.5.9/camlibs/clicksmart310/0000755000175000001440000000000012623156267014601 500000000000000libgphoto2-2.5.9/camlibs/clicksmart310/library.c0000644000175000001440000002107512610415617016327 00000000000000/* library.c for libgphoto2/camlibs/clicksmart310 * * Copyright (C) 2006 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #define JPEG_QCIF_FORMAT 0x22 #define JPEG_CIF_FORMAT 0x21 #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) # define ngettext(String1,String2,Count) ((Count==1)?String1:String2) #endif #include "clicksmart.h" #define GP_MODULE "clicksmart310" static const struct { char *name; CameraDriverStatus status; unsigned short idVendor; unsigned short idProduct; } models[] = { {"Logitech Clicksmart 310", GP_DRIVER_STATUS_TESTING, 0x46d, 0x0900}, {NULL,0,0,0} }; int camera_id (CameraText *id) { strcpy (id->text, "Logitech Clicksmart 310"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].name); a.status = models[i].status; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; a.operations = GP_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; ; a.file_operations = GP_FILE_OPERATION_PREVIEW + GP_FILE_OPERATION_RAW; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { sprintf (summary->text,ngettext( "Your Logitech Clicksmart 310 has %i picture in it.\n", "Your Logitech Clicksmart 310 has %i pictures in it.\n", camera->pl->num_pics ), camera->pl->num_pics); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" " Deletion of individual or selected photos (gphoto2 -d)\n" " Capture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" )); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n")); return GP_OK; } /*************** File and Downloading Functions *******************/ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int n; GP_DEBUG ("List files in %s\n", folder); n = camera->pl->num_pics; gp_list_populate(list, "cs%03i.jpeg", n); return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int w=0, h=0, b=0; int k, res; unsigned char *data; unsigned char *jpeg_out = NULL; int file_size; unsigned char jpeg_format; /* Get the entry number of the photo on the camera */ k = gp_filesystem_number (camera->fs, "/", filename, context); if (GP_FILE_TYPE_EXIF==type) return GP_ERROR_FILE_EXISTS; if (GP_FILE_TYPE_RAW!=type && GP_FILE_TYPE_NORMAL !=type && GP_FILE_TYPE_PREVIEW!=type) return GP_ERROR_NOT_SUPPORTED; res = clicksmart_get_res_setting (camera->pl, k); switch (res) { case 0: w = 352; h = 288; jpeg_format = JPEG_CIF_FORMAT; break; case 1: case 3: w = 176; h = 144; jpeg_format = JPEG_QCIF_FORMAT; break; default: GP_DEBUG ( "Unknown resolution setting %i\n", res); return GP_ERROR; } data = malloc (w*h); if(!data) return GP_ERROR_NO_MEMORY; GP_DEBUG("Fetch entry %i\n", k); b = clicksmart_read_pic_data (camera->pl, camera->port, data, k); if (GP_FILE_TYPE_RAW == type) { /* type is GP_FILE_TYPE_RAW */ gp_file_set_mime_type (file, GP_MIME_RAW); gp_file_set_data_and_size (file, (char *)data, b); /* Reset camera when done, for more graceful exit. */ if (k +1 == camera->pl->num_pics) { clicksmart_reset (camera->port); } return GP_OK; } GP_DEBUG ("size = %i\n", b); /* It looks as though o_size = b */ /* It seems that qIndex is byte7, which is always 3, so I use that. */ file_size = b + 589 + 1024 * 10; jpeg_out = malloc(file_size); if (!jpeg_out) { free(data); return GP_ERROR_NO_MEMORY; } GP_DEBUG("width: %d, height: %d, data size: %d\n", w, h, b); create_jpeg_from_data (jpeg_out, data, 3, w, h, jpeg_format, b, &file_size, 0, 0); gp_file_set_mime_type (file, GP_MIME_JPEG); gp_file_set_data_and_size (file, (char *)jpeg_out, file_size); /* Reset camera when done, for more graceful exit. */ if (k +1 == camera->pl->num_pics) { clicksmart_reset (camera->port); } free(data); return GP_OK; } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; clicksmart_delete_all_pics (camera->port); return GP_OK; } /*************** Exit and Initialization Functions ******************/ static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("SQ camera_exit"); if (camera->pl) { free (camera->pl->catalog); free (camera->pl); camera->pl = NULL; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .delete_all_func = delete_all_func }; int camera_init(Camera *camera, GPContext *context) { GPPortSettings settings; int ret = 0; /* First, set up all the function pointers */ camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; camera->functions->exit = camera_exit; GP_DEBUG ("Initializing the camera\n"); ret = gp_port_get_settings(camera->port,&settings); if (ret < 0) return ret; switch (camera->port->type) { case GP_PORT_SERIAL: return ( GP_ERROR ); case GP_PORT_USB: settings.usb.config = 1; settings.usb.altsetting = 0; settings.usb.inep = 0x82; settings.usb.outep =0x03; break; default: return ( GP_ERROR ); } ret = gp_port_set_settings(camera->port,settings); if (ret < 0) return ret; /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; camera->pl->catalog = NULL; camera->pl->num_pics = 0; /* Connect to the camera */ ret = clicksmart_init (camera->port, camera->pl); if (ret != GP_OK) { free(camera->pl); return ret; }; return GP_OK; } libgphoto2-2.5.9/camlibs/clicksmart310/Makefile-files0000644000175000001440000000057412561423351017257 00000000000000EXTRA_DIST += clicksmart310/README.clicksmart310 camlibdoc_DATA += clicksmart310/README.clicksmart310 EXTRA_LTLIBRARIES += clicksmart310.la clicksmart310_la_SOURCES = \ clicksmart310/library.c \ clicksmart310/clicksmart.c clicksmart310/clicksmart.h \ clicksmart310/spca50x-jpeg-header.h clicksmart310_la_LDFLAGS = $(camlib_ldflags) clicksmart310_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/clicksmart310/spca50x-jpeg-header.h0000644000175000001440000002467712610415524020334 00000000000000/* spca50x-jpeg-header.h * * part of libgphoto2/camlibs/clicksmart310 * * This file is essentially identical to the file of the same name, * found in libgphoto2/camlibs/spca50x. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __SPCA50X_JPEG_HEADER_H #define __SPCA50X_JPEG_HEADER_H /* * Start from 0 -> 588 * 7 - 70 : Quantization Table[0] * 72 - 135 : Quantization Table[1] */ #define SPCA50X_JPG_DEFAULT_HEADER_PART1_LENGTH 136 #define SPCA50X_JPG_DEFAULT_HEADER_PART2_LENGTH 420 #define SPCA50X_JPG_DEFAULT_HEADER_PART3_LENGTH 33 #define SPCA50X_JPG_DEFAULT_HEADER_LENGTH 589 static unsigned char SPCA50xJPGDefaultHeaderPart1[SPCA50X_JPG_DEFAULT_HEADER_PART1_LENGTH] = { /* SOI(Start of Image) */ 0xFF,0xD8, /* DQT(Define Quantization Table) */ 0xFF,0xDB, 0x00,0x84, 0x00, 0x05,0x03,0x04,0x04,0x04,0x03,0x05,0x04,0x04,0x04,0x06,0x05,0x05,0x06,0x08,0x0D, 0x08,0x08,0x07,0x07,0x08,0x10,0x0C,0x0C,0x0A,0x0D,0x14,0x11,0x15,0x14,0x13,0x11, 0x13,0x13,0x16,0x18,0x1F,0x1A,0x16,0x17,0x1E,0x17,0x13,0x13,0x1B,0x25,0x1C,0x1E, 0x20,0x21,0x23,0x23,0x23,0x15,0x1A,0x27,0x29,0x26,0x22,0x29,0x1F,0x22,0x23,0X22, 0X01, 0x05,0x06,0x06,0x08,0x07,0x08,0x10,0x08,0x08,0x10,0x22,0x16,0x13,0x16,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22 }; static unsigned char SPCA50xJPGDefaultHeaderPart2[SPCA50X_JPG_DEFAULT_HEADER_PART2_LENGTH] = { /* DHT(Define Huffman Table) */ 0xFF,0xC4, 0x01,0xA2, 0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x01,0x00,0x03, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x10,0x00,0x02,0x01,0x03,0x03, 0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7D,0x01,0x02,0x03,0x00,0x04, 0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81, 0x91,0xA1,0x08,0x23,0x42,0xB1,0xC1,0x15,0x52,0xD1,0xF0,0x24,0x33,0x62,0x72,0x82, 0x09,0x0A,0x16,0x17,0x18,0x19,0x1A,0x25,0x26,0x27,0x28,0x29,0x2A,0x34,0x35,0x36, 0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56, 0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76, 0x77,0x78,0x79,0x7A,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95, 0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3, 0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA, 0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0x11,0x00,0x02, 0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01, 0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22, 0x32,0x81,0x08,0x14,0x42,0x91,0xA1,0xB1,0xC1,0x09,0x23,0x33,0x52,0xF0,0x15,0x62, 0x72,0xD1,0x0A,0x16,0x24,0x34,0xE1,0x25,0xF1,0x17,0x18,0x19,0x1A,0x26,0x27,0x28, 0x29,0x2A,0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A, 0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A, 0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89, 0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,0xC5, 0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE2,0xE3, 0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA }; /* * 5 - 6 : Image Height(H Byte,L Byte) * 7 - 8 : Image Width(H Byte,L Byte) */ static unsigned char SPCA50xJPGDefaultHeaderPart3[SPCA50X_JPG_DEFAULT_HEADER_PART3_LENGTH] = { /* SOFn(Start of Frame) */ 0xFF,0xC0, 0x00,0x11, 0x08,0x00,0x78,0x00,0xA0,0x03,0x01,0x21,0x00,0x02,0x11,0x01,0x03,0x11,0x01, /* SOS(Start of Scan) */ 0xFF,0xDA, 0x00,0x0C, 0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3F,0x00 }; static unsigned char SPCA50xQTable[20][64]= { /* index 0, Q50 */ { 16, 11, 12, 14, 12, 10, 16, 14, 13, 14, 18, 17, 16, 19, 24, 40, 26, 24, 22, 22, 24, 49, 35, 37, 29, 40, 58, 51, 61, 60, 57, 51, 56, 55, 64, 72, 92, 78, 64, 68, 87, 69, 55, 56, 80,109, 81, 87, 95, 98,103,104,103, 62, 77,113,121,112,100,120, 92,101,103, 99 }, { 17, 18, 18, 24, 21, 24, 47, 26, 26, 47, 99, 66, 56, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 }, /* index 1, Q70 */ { 10, 7, 7, 8, 7, 6, 10, 8, 8, 8, 11, 10, 10, 11, 14, 24, 16, 14, 13, 13, 14, 29, 21, 22, 17, 24, 35, 31, 37, 36, 34, 31, 34, 33, 38, 43, 55, 47, 38, 41, 52, 41, 33, 34, 48, 65, 49, 52, 57, 59, 62, 62, 62, 37, 46, 68, 73, 67, 60, 72, 55, 61, 62, 59 }, { 10, 11, 11, 14, 13, 14, 28, 16, 16, 28, 59, 40, 34, 40, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59 }, /* index 2, Q80 */ { 6, 4, 5, 6, 5, 4, 6, 6, 5, 6, 7, 7, 6, 8, 10, 16, 10, 10, 9, 9, 10, 20, 14, 15, 12, 16, 23, 20, 24, 24, 23, 20, 22, 22, 26, 29, 37, 31, 26, 27, 35, 28, 22, 22, 32, 44, 32, 35, 38, 39, 41, 42, 41, 25, 31, 45, 48, 45, 40, 48, 37, 40, 41, 40 }, { 7, 7, 7, 10, 8, 10, 19, 10, 10, 19, 40, 26, 22, 26, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 }, /* index 3, Q85 */ { 5, 3, 4, 4, 4, 3, 5, 4, 4, 4, 5, 5, 5, 6, 7, 12, 8, 7, 7, 7, 7, 15, 11, 11, 9, 12, 17, 15, 18, 18, 17, 15, 17, 17, 19, 22, 28, 23, 19, 20, 26, 21, 17, 17, 24, 33, 24, 26, 29, 29, 31, 31, 31, 19, 23, 34, 36, 34, 30, 36, 28, 30, 31, 30 }, { 5, 5, 5, 7, 6, 7, 14, 8, 8, 14, 30, 20, 17, 20, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 }, /* index 4, Q90 */ { 3, 2, 2, 3, 2, 2, 3, 3, 3, 3, 4, 3, 3, 4, 5, 8, 5, 5, 4, 4, 5, 10, 7, 7, 6, 8, 12, 10, 12, 12, 11, 10, 11, 11, 13, 14, 18, 16, 13, 14, 17, 14, 11, 11, 16, 22, 16, 17, 19, 20, 21, 21, 21, 12, 15, 23, 24, 22, 20, 24, 18, 20, 21, 20 }, { 3, 4, 4, 5, 4, 5, 9, 5, 5, 9, 20, 13, 11, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }, /* index 5, Q60 */ { 13, 9, 10, 11, 10, 8, 13, 11, 10, 11, 14, 14, 13, 15, 19, 32, 21, 19, 18, 18, 19, 39, 28, 30, 23, 32, 46, 41, 49, 48, 46, 41, 45, 44, 51, 58, 74, 62, 51, 54, 70, 55, 44, 45, 64, 87, 65, 70, 76, 78, 82, 83, 82, 50, 62, 90, 97, 90, 80, 96, 74, 81, 82, 79 }, { 14, 14, 14, 19, 17, 19, 38, 21, 21, 38, 79, 53, 45, 53, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79 }, /* index 6, Q25 */ { 32, 22, 24, 28, 24, 20, 32, 28, 26, 28, 36, 34, 32, 38, 48, 80, 52, 48, 44, 44, 48, 98, 70, 74, 58, 80,116,102,122,120,114,102, 112,110,128,144,184,156,128,136,174,138,110,112,160,218,162,174, 190,196,206,208,206,124,154,226,242,224,200,240,184,202,206,198 }, { 34, 36, 36, 48, 42, 48, 94, 52, 52, 94,198,132,112,132,198,198, 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198, 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198, 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198 }, /* index 7, Q95 */ { 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 4, 3, 2, 2, 2, 2, 5, 4, 4, 3, 4, 6, 5, 6, 6, 6, 5, 6, 6, 6, 7, 9, 8, 6, 7, 9, 7, 6, 6, 8, 11, 8, 9, 10, 10, 10, 10, 10, 6, 8, 11, 12, 11, 10, 12, 9, 10, 10, 10 }, { 2, 2, 2, 2, 2, 2, 5, 3, 3, 5, 10, 7, 6, 7, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }, /* index 8, Q93 */ { 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 3, 2, 2, 3, 3, 6, 4, 3, 3, 3, 3, 7, 5, 5, 4, 6, 8, 7, 9, 8, 8, 7, 8, 8, 9, 10, 13, 11, 9, 10, 12, 10, 8, 8, 11, 15, 11, 12, 13, 14, 14, 15, 14, 9, 11, 16, 17, 16, 14, 17, 13, 14, 14, 14 }, { 2, 3, 3, 3, 3, 3, 7, 4, 4, 7, 14, 9, 8, 9, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 }, /* index 9, Q40 */ { 20, 14, 15, 18, 15, 13, 20, 18, 16, 18, 23, 21, 20, 24, 30, 50, 33, 30, 28, 28, 30, 61, 44, 46, 36, 50, 73, 64, 76, 75, 71, 64, 70, 69, 80, 90,115, 98, 80, 85,109, 86, 69, 70,100,136,101,109, 119,123,129,130,129, 78, 96,141,151,140,125,150,115,126,129,124 }, { 21, 23, 23, 30, 26, 30, 59, 33, 33, 59,124, 83, 70, 83,124,124, 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124 } }; #endif /* __SPCA50X_JPEG_HEADER_H */ libgphoto2-2.5.9/camlibs/clicksmart310/clicksmart.c0000644000175000001440000001627212610415524017017 00000000000000/* clicksmart.c * * part of libgphoto2/camlibs/clicksmart310 * * Copyright (C) 2006 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include #include #include #include "clicksmart.h" #include "spca50x-jpeg-header.h" #define GP_MODULE "clicksmart310" #define CS_INIT 0x8000 #define CS_INIT2 0xd41 #define CS_NUM_PICS 0xd40 #define CS_CH_READY 0xd00 #define CS_CH_CLEAR 0xd05 #define CS_READCLOSE 0x8303 static int CLICKSMART_READ (GPPort *port, int index, char *data) { gp_port_usb_msg_interface_read(port, 0, 0, index, data, 1); return GP_OK; } static int CLICKSMART_READ_STATUS (GPPort *port, char *data) { gp_port_usb_msg_interface_read(port, 0, 0, CS_CH_READY, data, 1); return GP_OK; } int clicksmart_init (GPPort *port, CameraPrivateLibrary *priv) { int i, cat_size; int full_reads; int short_read; unsigned char *temp_catalog; unsigned char *buffer; char c = 0; GP_DEBUG("Running clicksmart_init\n"); CLICKSMART_READ(port, CS_INIT, &c); /* We are supposed to get a response of 0x44 ???*/ CLICKSMART_READ(port, CS_INIT2, &c); CLICKSMART_READ(port, CS_NUM_PICS, &c); priv->num_pics = (unsigned)c; full_reads = (unsigned)c/2; short_read = (unsigned)c%2; cat_size = (unsigned)c*0x10; temp_catalog = malloc(cat_size); if (!temp_catalog) return GP_ERROR_NO_MEMORY; memset (temp_catalog, 0, cat_size); /* now we need to get and put away the catalog data. */ CLICKSMART_READ_STATUS (port, &c); gp_port_usb_msg_interface_write(port, 6, 0, 9, NULL, 0); while (c != 1) CLICKSMART_READ_STATUS (port, &c); buffer = malloc(0x200); if (!buffer) { free (temp_catalog); return GP_ERROR_NO_MEMORY; } /* * The catalog data is downloaded in reverse order, which needs to be * straightened out. */ for (i=0; i < full_reads; i++) { memset (buffer, 0, 0x200); gp_port_read(port, (char *)buffer, 0x200); memcpy (temp_catalog + cat_size - (2*i+1)*0x10, buffer, 0x10); memcpy (temp_catalog + cat_size - (2*i+2)*0x10, buffer+0x100, 0x10); } if (short_read) { memset (buffer, 0, 0x200); gp_port_read(port, (char *)buffer, 0x100); memcpy (temp_catalog, buffer, 0x10); } priv->catalog = temp_catalog; clicksmart_reset(port); free (buffer); GP_DEBUG("Leaving clicksmart_init\n"); return GP_OK; } int clicksmart_get_res_setting (CameraPrivateLibrary *priv, int n) { GP_DEBUG("running clicksmart_get_res_setting for picture %i\n", n+1); /* * QCIF (176x144) returns 1, or if the entry is a clip frame, then 3 * and CIF (352x288) returns 0. */ return priv->catalog[16*n]; } int clicksmart_read_pic_data (CameraPrivateLibrary *priv, GPPort *port, unsigned char *data, int n) { int offset=0; char c; unsigned int size = 0; unsigned int remainder = 0; GP_DEBUG("running clicksmart_read_picture_data for picture %i\n", n+1); CLICKSMART_READ_STATUS (port, &c); GP_DEBUG("ClickSmart Read Status at beginning %d\n", c); gp_port_usb_msg_interface_write(port, 6, 0x1fff - n, 1, NULL, 0); c = 0; while (c != 1){ CLICKSMART_READ_STATUS (port, &c); } /* Get the size of the data and calculate the size to download, which * is the next multiple of 0x100. Only for the hi-res photos is the * true data size actually given. */ size=(priv->catalog[16*n + 12] * 0x100)+(priv->catalog[16*n + 11]); if (size == 0) /* for lo-res photos the above calculation gives 0 */ size = (priv->catalog[16*n + 5] * 0x100); remainder = size%0x200; GP_DEBUG("size: %x, remainder: %x\n", size, remainder); /* Download the data */ while (offset < size-remainder) { GP_DEBUG("offset: %x\n", offset); gp_port_read(port, (char *)data + offset, 0x200); offset = offset + 0x200; } remainder=((remainder+0xff)/0x100)*0x100; GP_DEBUG("Second remainder: %x\n", remainder); if (remainder) gp_port_read(port, (char *)data + offset, remainder); gp_port_usb_msg_interface_read(port, 0, 0, CS_READCLOSE, &c, 1); gp_port_usb_msg_interface_write(port, 0, 2, CS_CH_READY, NULL, 0); /* * For lo-res photos the camera does not tell us the true size, but * when the data has ended the excess bytes downloaded are all * 00. The photo processing works better if these are suppressed. */ if (priv->catalog[16*n]) { while ( data[size-1] == 0) size--; } return size; } int clicksmart_delete_all_pics (GPPort *port) { gp_port_usb_msg_interface_write(port, 0, 2, CS_CH_READY, NULL, 0); gp_port_usb_msg_interface_write(port, 2, 0, 5, NULL, 0); return GP_OK; } int clicksmart_reset (GPPort *port) { char c; /* Release current register */ CLICKSMART_READ (port, CS_READCLOSE, &c); gp_port_usb_msg_interface_write(port, 0, 2, CS_CH_READY, NULL, 0); CLICKSMART_READ (port, CS_CH_CLEAR, &c); CLICKSMART_READ (port, CS_CH_CLEAR, &c); return GP_OK; } /* create_jpeg_from_data adapted from camlibs/spca50x */ int create_jpeg_from_data (unsigned char * dst, unsigned char * src, int qIndex, int w, int h, unsigned char format, int o_size, int *size, int omit_huffman_table, int omit_escape) { int i = 0; unsigned char *start; unsigned char value; start = dst; /* copy the header from the template */ memcpy (dst, SPCA50xJPGDefaultHeaderPart1, SPCA50X_JPG_DEFAULT_HEADER_PART1_LENGTH); /* modify quantization table */ memcpy (dst + 7, SPCA50xQTable[qIndex * 2], 64); memcpy (dst + 72, SPCA50xQTable[qIndex * 2 + 1], 64); dst += SPCA50X_JPG_DEFAULT_HEADER_PART1_LENGTH; /* copy Huffman table */ if (!omit_huffman_table) { memcpy (dst, SPCA50xJPGDefaultHeaderPart2, SPCA50X_JPG_DEFAULT_HEADER_PART2_LENGTH); dst += SPCA50X_JPG_DEFAULT_HEADER_PART2_LENGTH; } memcpy (dst, SPCA50xJPGDefaultHeaderPart3, SPCA50X_JPG_DEFAULT_HEADER_PART3_LENGTH); /* modify the image width, height */ *(dst + 8) = w & 0xFF; /* Image width low byte */ *(dst + 7) = w >> 8 & 0xFF; /* Image width high byte */ *(dst + 6) = h & 0xFF; /* Image height low byte */ *(dst + 5) = h >> 8 & 0xFF; /* Image height high byte */ /* set the format */ *(dst + 11) = format; /* point to real JPG compress data start position and copy */ dst += SPCA50X_JPG_DEFAULT_HEADER_PART3_LENGTH; for (i = 0; i < o_size; i++) { value = *(src + i) & 0xFF; *(dst) = value; dst++; if (value == 0xFF && !omit_escape) { *(dst) = 0x00; dst++; } } /* Add end of image marker */ *(dst++) = 0xFF; *(dst++) = 0xD9; *size = dst - start; return GP_OK; } libgphoto2-2.5.9/camlibs/clicksmart310/clicksmart.h0000644000175000001440000000315512610415524017020 00000000000000/* clicksmart.h * * headers for libgphoto2/camlibs/clicksmart310 * * Copyright (C) 2006 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __CLICKSMART_H__ #define __CLICKSMART_H__ #include struct _CameraPrivateLibrary { unsigned char *catalog; int num_pics; unsigned char full; }; int clicksmart_init (GPPort *port, CameraPrivateLibrary *priv); int clicksmart_get_res_setting (CameraPrivateLibrary *priv, int n); int clicksmart_read_pic_data (CameraPrivateLibrary *priv, GPPort *port, unsigned char *data, int n); int clicksmart_delete_all_pics (GPPort *port); int clicksmart_reset (GPPort *port); int create_jpeg_from_data (unsigned char * dst, unsigned char * src, int qIndex, int w, int h, unsigned char format, int o_size, int *size, int omit_huffman_table, int omit_escape); #endif libgphoto2-2.5.9/camlibs/clicksmart310/README.clicksmart3100000644000175000001440000000447012561423351017755 00000000000000/* This is the README file for libgphoto2/camlibs/clicksmart310. This README * is an integral part of the libgphoto2/camlibs/clicksmart310 library source * code and is distributed with that source code under the LGPL license, a copy * of which license may be seen in any of the source files in * libgphoto2/camlibs/clicksmart310, * or in the head directory of libgphoto2. */ The Logitech Clicksmart 310 camera is based upon a Sunplus spca50x chip, but its command sequences are quite different from those cameras supported in camlibs/spca50x. Hence, a separate library to support it. The camera will do 352x288 and 176x144 resolution settings. The camera (not the driver software) compresses all photos in JPEG format. High-resolution and low-resolution settings use different compression algorithms; not only are the low-resolution photos of smaller pixel dimensions, but they are also more highly compressed. The hardware supports the following listed actions, all of which are implemented here: -- JPEG photo format for both high-resolution and low resolution settings -- download all photos (gphoto2 -P) -- download any selected list of photos (gphoto2 -p) -- delete all photos on camera -- shoot a clip, which is saved by the OEM driver as an AVI file and we save the clip frames here as individual photos. If you want to see a movie from them, then try using the ImageMagick function "animate." The camera is "dual mode" and can also function as a webcam, supported by the spca50x kernel module. All streaming video and all capture abilities of the camera use isochronous data transmission and thus require support from a kernel module. The hardware will not support the capture options of gphoto2. The user should be aware that access to this camera through gphoto2 will fail if attempted with the spca50x kernel module already loaded. In that event the kernel module will already have claimed the camera. Thus, if you have the kernel module please make sure it is not installed. You may need to add spca50x to /etc/hotplug/blacklist to ensure that the module is not automatically installed when the camera is plugged in. Credits: Russell Bell has done extensive testing, and has also participated in the coding. Warranty: None. Theodore Kilgore 01/21/2006libgphoto2-2.5.9/camlibs/jl2005c/0000755000175000001440000000000012623156267013300 500000000000000libgphoto2-2.5.9/camlibs/jl2005c/jl2005c.c0000644000175000001440000002064612610415524014441 00000000000000/* jl2005c.c * * Copyright (C) 2006-2010 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include #include #include #include #include #include #include #include #include #include "gphoto2-endian.h" #include "jl2005c.h" #define GP_MODULE "jl2005c" int jl2005c_init (Camera *camera, GPPort *port, CameraPrivateLibrary *priv) { char response; int model_string = 0; /* Needs to be big enough to hold (0xfff + 3) * 0x10 */ unsigned char info[0x4020]; const char camera_id[] = {0x4a, 0x4c, 0x32, 0x30, 0x30, 0x35}; int alloc_table_size; int attempts = 0; restart: alloc_table_size = 0; memset(info, 0, sizeof(info)); GP_DEBUG("Running jl2005c_init\n"); if (priv->init_done) { gp_port_close(port); usleep (100000); gp_port_open(port); } set_usb_in_endpoint (camera, 0x84); gp_port_write (port, "\x08\x00", 2); usleep (10000); gp_port_write (port, "\x95\x60", 2); jl2005c_read_data (port, &response, 1); model_string = response; gp_port_write (port, "\x95\x61", 2); jl2005c_read_data (port, &response, 1); model_string += (response & 0xff) << 8; gp_port_write (port, "\x95\x62", 2); jl2005c_read_data (port, &response, 1); model_string += (response & 0xff) << 16; gp_port_write (port,"\x95\x63" , 2); jl2005c_read_data (port, &response, 1); model_string += (response & 0xff) << 24; GP_DEBUG("Model string is %08x\n", model_string); gp_port_write (port, "\x95\x64", 2); jl2005c_read_data (port, &response, 1); gp_port_write (port, "\x95\x65", 2); jl2005c_read_data (port, &response, 1); /* Number of pix returned here, but not reliably reported */ priv->nb_entries = response & 0xff; GP_DEBUG("%d frames in the camera (unreliable!)\n", priv->nb_entries); gp_port_write (port, "\x95\x66", 2); jl2005c_read_data (port, &response, 1); gp_port_write (port, "\x95\x67", 2); jl2005c_read_data (port, &response, 1); gp_port_write (port, "\x95\x68", 2); jl2005c_read_data (port, &response, 1); gp_port_write (port, "\x95\x69", 2); jl2005c_read_data (port, &response, 1); gp_port_write (port, "\x95\x6a", 2); jl2005c_read_data (port, &response, 1); gp_port_write (port, "\x95\x6b", 2); jl2005c_read_data (port, &response, 1); gp_port_write (port, "\x95\x6c", 2); jl2005c_read_data (port, &response, 1); priv->data_to_read = (response & 0xff) * 0x100; gp_port_write (port, "\x95\x6d", 2); jl2005c_read_data (port, &response, 1); priv->data_to_read += (response&0xff); priv->total_data_in_camera = priv->data_to_read; GP_DEBUG ("blocks_to_read = 0x%lx = %lu\n", priv->data_to_read, priv->data_to_read); gp_port_write (port, "\x95\x6e", 2); jl2005c_read_data (port, &response, 1); alloc_table_size = (response & 0xff) * 0x200; GP_DEBUG("alloc_table_size = 0x%02x * 0x200 = 0x%x\n", response & 0xff, (response & 0xff) * 0x200); gp_port_write (port, "\x95\x6f", 2); jl2005c_read_data (port, &response, 1); gp_port_write (port, "\x0a\x00", 2); usleep (10000); /* Switch the inep over to 0x82. It stays there ever after. */ set_usb_in_endpoint (camera, 0x82); /* Read the first block of the allocation table. */ jl2005c_read_data (port, (char *)info, 0x200); if (strncmp(camera_id, (char*)info, 6)) { GP_DEBUG("Error downloading alloc table\n"); GP_DEBUG("Init attempted %d times\n", attempts + 1); attempts++; if (attempts == 3) { GP_DEBUG("Third try. Giving up\n"); gp_port_write(port, "\x07\x00", 2); return GP_ERROR; } goto restart; } /* Now check the number of photos. That is found in byte 13 of line 0 * of the allocation table. */ priv->nb_entries = (info[12] & 0xff) * 0x100 | (info[13] & 0xff); GP_DEBUG("Number of entries is recalculated as %d\n", priv->nb_entries); /* Just in case there was a problem, we now recalculate the total * alloc_table_size. */ alloc_table_size = priv->nb_entries * 0x10 + 0x30; if (alloc_table_size%0x200) alloc_table_size += 0x200 - (alloc_table_size%0x200); /* However, we have already just now downloaded 0x200 bytes, so * when downloading the rest of the table we correct for that and * just download whatever remains of the information block. */ if (alloc_table_size > 0x200) gp_port_read(port, (char *)info + 0x200, alloc_table_size - 0x200); memmove(priv->table, info + 0x30, alloc_table_size - 0x30); priv->model = info[6]; GP_DEBUG("Model is %c\n", priv->model); switch (priv->model) { case 0x43: case 0x44: priv->blocksize = 0x200; break; case 0x42: priv->blocksize = 0x80; break; default: GP_DEBUG("Unknown model, unknown blocksize\n"); return GP_ERROR_NOT_SUPPORTED; } GP_DEBUG("camera's blocksize = 0x%x = %d\n", priv->blocksize, priv->blocksize); /* Now a more responsible calculation of the amount of data in the * camera, based upon the allocation table. */ priv->data_to_read = info[10] * 0x100 | info[11]; priv->data_to_read -= info[8] * 0x100 | info[9]; priv->data_to_read *= priv->blocksize; priv->total_data_in_camera = priv->data_to_read; GP_DEBUG ("data_to_read = 0x%lx = %lu\n", priv->data_to_read, priv->data_to_read); GP_DEBUG ("total_data_in_camera = 0x%lx = %lu\n", priv->data_to_read, priv->data_to_read); priv->can_do_capture = 0; if (info[7] & 0x04) priv->can_do_capture = 1; priv->bytes_read_from_camera = 0; priv->bytes_put_away = 0; priv->init_done = 1; GP_DEBUG("Leaving jl2005c_init\n"); return GP_OK; } int jl2005c_open_data_reg (Camera *camera, GPPort *port) { gp_port_write (port, "\x0b\x00",2); usleep (10000); GP_DEBUG("Opening data register.\n"); camera->pl->data_reg_opened = 1; return GP_OK; } int jl2005c_get_pic_data_size (CameraPrivateLibrary *priv, Info *table, int n) { int size; GP_DEBUG("table[16 * n + 7] = %02X\n", table[16 * n + 7]); size = table[0x10 * n + 6] * 0x100 | table[0x10 * n + 7]; size *= priv->blocksize; GP_DEBUG("size = 0x%x = %d\n", size, size); return (size); } unsigned long jl2005c_get_start_of_photo(CameraPrivateLibrary *priv, Info *table, unsigned int n) { unsigned long start; start = table[0x10 * n + 0x0c] * 0x100 | table[0x10 * n + 0x0d]; start -= table[0x0c] * 0x100 | table[0x0d]; start *= priv->blocksize; return start; } int set_usb_in_endpoint (Camera *camera, int inep) { GPPortSettings settings; gp_port_get_settings ( camera ->port, &settings); if(settings.usb.inep != inep) settings.usb.inep = inep; GP_DEBUG("inep reset to %02X\n", inep); return gp_port_set_settings ( camera->port, settings); } int jl2005c_read_data (GPPort *port, char *data, int size) { /* These cameras tend to be slow. */ usleep (10000); gp_port_read (port, data, size); usleep (10000); return GP_OK; } int jl2005c_reset (Camera *camera, GPPort *port) { int downloadsize = MAX_DLSIZE; /* If any data has been downloaded, these cameras want all data to be * dumped before exit. If that is not yet done, then do it now! */ if(camera->pl->data_reg_opened) { while (camera->pl->bytes_read_from_camera < camera->pl->total_data_in_camera ) { if (!camera->pl->data_cache ) camera->pl->data_cache = malloc (MAX_DLSIZE); downloadsize = MAX_DLSIZE; if (camera->pl->bytes_read_from_camera + MAX_DLSIZE >= camera->pl->total_data_in_camera ) downloadsize = camera->pl->total_data_in_camera - camera->pl->bytes_read_from_camera; if (downloadsize) jl2005c_read_data (camera->port, (char *) camera->pl->data_cache, downloadsize); camera->pl->bytes_read_from_camera += downloadsize; } } gp_port_write(port, "\x07\x00", 2); camera->pl->data_reg_opened = 0; return GP_OK; } int jl2005c_delete_all (Camera *camera, GPPort *port) { gp_port_write(port, "\x09\x00", 2); usleep(10000); gp_port_write(port, "\x07\x00", 2); return GP_OK; } libgphoto2-2.5.9/camlibs/jl2005c/img_enhance.h0000644000175000001440000000217112610415524015615 00000000000000/* * img_enhance.h * * Header file for image processor for raw files from JL2005B/C/D * cameras. * * Copyright (c) 2010 Theodore Kilgore * * 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 * Lesser 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 __IMG_ENHANCE_H__ #define __IMG_ENHANCE_H__ int histogram(unsigned char *data, unsigned int size, int *htable_r, int *htable_g, int *htable_b); int white_balance(unsigned char *data, unsigned int size, float saturation); #endif libgphoto2-2.5.9/camlibs/jl2005c/library.c0000644000175000001440000003610212610415524015020 00000000000000/* library.c * * Copyright (C) 2006-2010 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include "jl2005bcd_decompress.h" #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "jl2005c.h" #include #define GP_MODULE "jl2005c" struct { char *name; CameraDriverStatus status; unsigned short idVendor; unsigned short idProduct; } models[] = { {" JL2005B/C/D camera", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Argus DC1512e", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Amazing Spiderman", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Aries ATC-0017", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Sakar no. 75379", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Sakar no. 81890", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Sakar Nickelodeon iCarly no. 88061", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Sakar Dora the Explorer no. 88067", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Sakar no. 91379", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Sakar no. 98379", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Sakar Kidz-Cam no. 88379", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Sakar clipshot no. 1169x", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Sakar Sticker Wizard no. 59379", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Sakar Star Wars kit no. 92022", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Jazwares Star Wars no. 15256", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Argus Bean Sprout", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Global Point Clipster", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Global Point 3 in 1 Digital Fun Graffiti 00044", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Jazz JDK235", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"DIGITAL MID#0020509 (no-name camera)", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Vivitar Freelance", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {"Sakar Hello Kitty no. 94009", GP_DRIVER_STATUS_EXPERIMENTAL, 0x0979, 0x0227}, {NULL,0,0,0} }; int camera_id (CameraText *id) { strcpy (id->text, "JL2005B/C/D camera"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].name); a.status = models[i].status; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; if (a.status == GP_DRIVER_STATUS_EXPERIMENTAL) a.operations = GP_OPERATION_NONE; else a.operations = GP_OPERATION_CAPTURE_IMAGE; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; a.file_operations = GP_FILE_OPERATION_PREVIEW + GP_FILE_OPERATION_RAW; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int num_pics; num_pics = camera->pl->nb_entries; GP_DEBUG("camera->pl->nb_entries = %i\n",camera->pl->nb_entries); sprintf(summary->text, _("This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n"), camera->pl->model, num_pics); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" )); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("jl2005bcd camera library\n" "Theodore Kilgore \n")); return GP_OK; } /*************** File and Downloading Functions *******************/ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int n; n = camera->pl->nb_entries; gp_list_populate (list, "jl_%03i.ppm", n); return GP_OK; } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { info->file.fields = GP_FILE_INFO_TYPE; strcpy (info->file.type, GP_MIME_PPM); return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int w, h = 0, b = 0, k; unsigned char *pic_data, *pic_buffer, *pic_output = NULL; int HEADERSIZE=16; int outputsize; unsigned long start_of_photo; unsigned int downloadsize = 0; int filled = 0; GP_DEBUG ("Downloading pictures!\n"); if(!camera->pl->data_reg_opened) jl2005c_open_data_reg (camera, camera->port); /* These are cheap cameras. There ain't no EXIF data. */ if (GP_FILE_TYPE_EXIF == type) return GP_ERROR_FILE_EXISTS; /* Get the number of the photo on the camera */ k = gp_filesystem_number (camera->fs, "/", filename, context); h = camera->pl->table[16 * k + 4] << 3; w = camera->pl->table[16 * k + 5] << 3; GP_DEBUG ("height is %i\n", h); b = jl2005c_get_pic_data_size(camera->pl, camera->pl->table, k); GP_DEBUG("b = %i = 0x%x bytes\n", b, b); start_of_photo = jl2005c_get_start_of_photo(camera->pl, camera->pl->table, k); GP_DEBUG("start_of_photo number %i = 0x%lx \n", k,start_of_photo); pic_buffer = malloc(b + HEADERSIZE); if (!pic_buffer) return GP_ERROR_NO_MEMORY; memset(pic_buffer, 0, b + HEADERSIZE); GP_DEBUG("buffersize b + 16 = %i = 0x%x bytes\n", b + 16, b + 16); /* Copy info line for photo from allocation table, as header */ memcpy(pic_buffer, camera->pl->table + 16 * k, 16); pic_data = pic_buffer + HEADERSIZE; /* * Camera can download in blocks of 0xfa00, with only the last block * possibly smaller. So first we set up a cache of that size * (if it is not set up already) to hold raw data. If one tries * instead to download one photo at a time, the camera will misbehave; * data will be lost or corrupted. The dog will bite you, too. */ if (!(camera->pl->data_cache)) { camera->pl->data_cache = malloc (MAX_DLSIZE); } if (!(camera->pl->data_cache)) { GP_DEBUG ("no cache memory allocated!\n"); free (pic_buffer); return GP_ERROR_NO_MEMORY; } /* Is there data in the cache, or not? If yes, read from it into the * current photo, immediately. Update settings. But first two sanity * checks. */ if (start_of_photo < camera->pl->bytes_put_away) { GP_DEBUG("photo number %i starts in a funny place!\n",k); /* We need to start all over again to get this photo. */ jl2005c_reset (camera, camera->port); jl2005c_init (camera, camera->port, camera->pl); } if (start_of_photo + b > camera->pl->total_data_in_camera) { GP_DEBUG ("Photo runs past end of data. Exiting. \n"); GP_DEBUG ("Block size may be wrong for this camera\n"); free (pic_buffer); return (GP_ERROR); } /* * This while loop is entered if the photo number k-1 was not requested * and thus has not been downloaded. The camera's rudimentary hardware * obliges us to download all data consecutively and toss whatever * portion of said data that we do not intend to use. The rudimentary * hardware also does not like to stop downloading at the end of one * photo and then to start on the next. It wants to keep getting data * in size 0xfa00 increments, and only the last block can be smaller. * To do otherwise will cause data to be lost or corrupted. * * Whoever tries to simplify this convoluted and ugly procedure is * warned that the obvious simplifications, while much prettier, * just won't work. A kutya harap. */ while (camera->pl->bytes_read_from_camera <= start_of_photo) { camera->pl->data_to_read = camera->pl->total_data_in_camera - camera->pl->bytes_read_from_camera; downloadsize = MAX_DLSIZE; if (camera->pl->data_to_read < downloadsize) downloadsize = camera->pl->data_to_read; GP_DEBUG("downloadsize = 0x%x\n", downloadsize); if (downloadsize) jl2005c_read_data ( camera->port, (char *) camera->pl->data_cache, downloadsize); camera->pl->bytes_read_from_camera += downloadsize; } camera->pl->bytes_put_away = start_of_photo; if (camera->pl->bytes_read_from_camera > start_of_photo) { if(start_of_photo + b <= camera->pl->bytes_read_from_camera) { memcpy(pic_data, camera->pl->data_cache + (start_of_photo % MAX_DLSIZE) , b); camera->pl->bytes_put_away += b; /* * Photo data is contained in what is already * downloaded. * Jump immediately to process the photo. */ } else { /* Photo starts in one 0xfa00-sized download and ends * in another */ filled = camera->pl->bytes_read_from_camera - start_of_photo; memcpy(pic_data, camera->pl->data_cache + (start_of_photo % MAX_DLSIZE), filled); camera->pl->bytes_put_away += filled; } } while (camera->pl->bytes_put_away < start_of_photo + b ) { camera->pl->data_to_read = camera->pl->total_data_in_camera - camera->pl->bytes_read_from_camera; downloadsize = MAX_DLSIZE; if (camera->pl->data_to_read < downloadsize) downloadsize = camera->pl->data_to_read; GP_DEBUG("downloadsize = 0x%x\n", downloadsize); if (downloadsize) jl2005c_read_data ( camera->port, (char *) camera->pl->data_cache, downloadsize); camera->pl->bytes_read_from_camera += downloadsize; if (camera->pl->bytes_read_from_camera >= start_of_photo + b ) { GP_DEBUG("THIS ONE?\n"); memcpy(pic_data + filled, camera->pl->data_cache, b - filled); camera->pl->bytes_put_away += b - filled; break; } else { GP_DEBUG("THIS ONE??\n"); if (!downloadsize) break; memcpy(pic_data + filled, camera->pl->data_cache, downloadsize); camera->pl->bytes_put_away += downloadsize; filled += downloadsize; } } if (type == GP_FILE_TYPE_RAW) { gp_file_set_mime_type(file, GP_MIME_RAW); gp_file_set_data_and_size(file, (char *)pic_buffer, b + 16); return GP_OK; #ifdef HAVE_LIBJPEG } else if (type == GP_FILE_TYPE_PREVIEW) { if (!camera->pl->can_do_capture) { free (pic_buffer); return GP_ERROR_NOT_SUPPORTED; } outputsize = (pic_buffer[9] & 0xf0) * 192 + 256; GP_DEBUG("pic_buffer[9] is 0x%02x\n", pic_buffer[9]); GP_DEBUG("Thumbnail outputsize = 0x%x = %d\n", outputsize, outputsize); if (outputsize == 256) { GP_DEBUG("Frame %d has no thumbnail.\n", k); free (pic_buffer); return GP_OK; } pic_output = calloc(outputsize, 1); if (!pic_output) { free (pic_buffer); return GP_ERROR_NO_MEMORY; } outputsize = jl2005bcd_decompress(pic_output, pic_buffer, b + 16, 1); free (pic_buffer); if (outputsize < GP_OK) { free (pic_output); return outputsize; } GP_DEBUG("Thumbnail outputsize recalculated is 0x%x = %d\n", outputsize, outputsize); gp_file_set_mime_type(file, GP_MIME_PPM); gp_file_set_data_and_size(file, (char *)pic_output, outputsize); } else if (type == GP_FILE_TYPE_NORMAL) { outputsize = 3 * w * h + 256; pic_output = calloc(outputsize, 1); if (!pic_output) return GP_ERROR_NO_MEMORY; outputsize = jl2005bcd_decompress(pic_output, pic_buffer, b + 16, 0); free (pic_buffer); if (outputsize < GP_OK) { free (pic_output); return outputsize; } gp_file_set_mime_type(file, GP_MIME_PPM); gp_file_set_data_and_size(file, (char *)pic_output, outputsize); #endif } else { free (pic_buffer); return GP_ERROR_NOT_SUPPORTED; } return GP_OK; } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; GP_DEBUG(" * delete_all_func()"); jl2005c_delete_all(camera, camera->port); return (GP_OK); } /*************** Exit and Initialization Functions ******************/ static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("jl2005c camera_exit"); jl2005c_reset(camera, camera->port); gp_port_close(camera->port); if (camera->pl) { free (camera->pl); camera->pl = NULL; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func, .delete_all_func = delete_all_func }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; int ret = 0; /* First, set up all the function pointers */ camera->functions->manual = camera_manual; camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->exit = camera_exit; GP_DEBUG ("Initializing the camera\n"); ret = gp_port_get_settings(camera->port,&settings); if (ret < 0) return ret; switch (camera->port->type) { case GP_PORT_SERIAL: return ( GP_ERROR ); case GP_PORT_USB: settings.usb.config = 1; settings.usb.altsetting = 0; settings.usb.interface = 0; /* inep 0x84 used to initialize. Then switch to 0x82! */ settings.usb.inep = 0x84; settings.usb.outep = 0x03; break; default: return ( GP_ERROR ); } ret = gp_port_set_settings(camera->port,settings); if (ret < 0) return ret; GP_DEBUG("interface = %i\n", settings.usb.interface); GP_DEBUG("inep = %x\n", settings.usb.inep); GP_DEBUG("outep = %x\n", settings.usb.outep); /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); /* Connect to the camera */ camera->pl->total_data_in_camera=0; camera->pl->data_to_read = 0; camera->pl->bytes_put_away = 0; camera->pl->data_reg_opened = 0; camera->pl->data_cache = NULL; camera->pl->init_done = 0; jl2005c_init (camera, camera->port, camera->pl); return GP_OK; } libgphoto2-2.5.9/camlibs/jl2005c/jl2005bcd_decompress.c0000644000175000001440000002021412610415536017165 00000000000000/* decompress.c * * Converts raw output from Jeilin JL2005B/C/D into PPM files. * * The jl2005bcd_raw_converter is * Copyright (c) 2010 Theodore Kilgore * * The decompression code used is * Copyright (c) 2010 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #define _BSD_SOURCE #include #include <_stdint.h> #include #include #include "config.h" #ifdef HAVE_LIBJPEG #include "gphoto2-endian.h" #include "jl2005bcd_decompress.h" #include "jpeg_memsrcdest.h" #include #include "img_enhance.h" #include #include #include #define GP_MODULE "jl2005c" #define JPEG_HEADER_SIZE 338 #define JPEG_HEIGHT_OFFSET 94 static int find_eoi (uint8_t *jpeg_data, int jpeg_data_idx, int jpeg_data_size) { int i; for (i = jpeg_data_idx; i < (jpeg_data_size - 1); i++) if (jpeg_data[i] == 0xff && jpeg_data[i + 1] == 0xd9) break; if (i >= (jpeg_data_size - 1)) { GP_DEBUG("AAI\n"); return GP_ERROR; } return i + 2; /* + 2 -> Point to after EOI marker */ } #define MAXBUFSIZE 500000 int jl2005bcd_decompress (unsigned char *output, unsigned char *input, int inputsize, int get_thumbnail) { int out_headerlen; uint16_t *thumb = NULL; unsigned char *header; uint8_t *jpeg_stripe; uint8_t *out; unsigned char *jpeg_data; int q, width, height; int thumbnail_width, thumbnail_height; struct jpeg_compress_struct cinfo; struct jpeg_decompress_struct dinfo; struct jpeg_error_mgr jcerr, jderr; JOCTET *jpeg_header = NULL; int outputsize = 0; unsigned long jpeg_header_size = 0; int i, x, y, x1, y1, jpeg_data_size, jpeg_data_idx, eoi, size, ret; JSAMPLE green[8 * 16]; JSAMPLE red[8 * 8]; JSAMPLE blue[8 * 8]; JSAMPROW green_row_pointer[16]; JSAMPROW red_row_pointer[8]; JSAMPROW blue_row_pointer[8]; JSAMPARRAY samp_image[3]; GP_DEBUG("Running jl2005bcd_decompress() function.\n"); header = input; q = header[3] & 0x7f; height = header[4] * 8; width = header[5] * 8; GP_DEBUG("quality is %d\n", q); GP_DEBUG("size: %dx%d\n", width, height); switch (header[9] & 0xf0) { case 0xf0: thumbnail_width = 128; thumbnail_height = 120; break; case 0x60: thumbnail_width = 96; thumbnail_height = 64; break; default: thumbnail_width = 0; thumbnail_height = 0; } if (header[1] & 3) thumbnail_width = 0; if (get_thumbnail) { if (!thumbnail_width) { GP_DEBUG("No thumbnail is present!\n"); return GP_ERROR_NOT_SUPPORTED; } else { out = malloc(thumbnail_width * thumbnail_height * 3); thumb = (uint16_t *)(input + 16); for (i = 0; i < thumbnail_width * thumbnail_height; i++) { thumb[i] = be16toh(thumb[i]); out[i * 3 + 0] = (thumb[i] & 0xf800) >> 8; out[i * 3 + 1] = (thumb[i] & 0x07e0) >> 3; out[i * 3 + 2] = (thumb[i] & 0x001f) << 3; } out_headerlen = snprintf((char *)output, 256, "P6\n" "# CREATOR: gphoto2, JL2005BCD library\n" "%d %d\n" "255\n", thumbnail_width, thumbnail_height); white_balance (out, thumbnail_width * thumbnail_height, 1.6); memcpy(output + out_headerlen, out, thumbnail_width * thumbnail_height * 3); outputsize = thumbnail_width * thumbnail_height * 3 + out_headerlen; free (out); return outputsize; } } /* * And the fun begins, first of all create a dummy jpeg, which we use * to get the headers from to feed to libjpeg when decompressing the * stripes. This way we can use libjpeg's quant table handling * (and built in default huffman tables). */ cinfo.err = jpeg_std_error (&jcerr); jpeg_create_compress (&cinfo); jpeg_mem_dest (&cinfo, &jpeg_header, &jpeg_header_size); cinfo.image_width = 16; cinfo.image_height = 16; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; jpeg_set_defaults (&cinfo); /* Make comp[0] (which will be green) 1x2 subsampled */ cinfo.comp_info[0].h_samp_factor = 1; cinfo.comp_info[0].v_samp_factor = 2; /* Make comp[1] and [2] use huffman table and quanttable 0, as all * components use luminance settings with the jl2005b/c/d */ cinfo.comp_info[1].quant_tbl_no = 0; cinfo.comp_info[1].dc_tbl_no = 0; cinfo.comp_info[1].ac_tbl_no = 0; cinfo.comp_info[2].quant_tbl_no = 0; cinfo.comp_info[2].dc_tbl_no = 0; cinfo.comp_info[2].ac_tbl_no = 0; /* Apply the quality setting from the header */ if (q <= 0) i = 5000; else if (q <= 50) i = 5000 / q; else if (q <= 100) i = 2 * (100 - q); else i = 0; jpeg_set_linear_quality(&cinfo, i, TRUE); jpeg_start_compress (&cinfo, TRUE); while( cinfo.next_scanline < cinfo.image_height ) { JOCTET row[16 * 3]; JSAMPROW row_pointer[1] = { row }; jpeg_write_scanlines (&cinfo, row_pointer, 1); } jpeg_finish_compress (&cinfo); jpeg_destroy_compress (&cinfo); for (i = 0; i < 16; i++) green_row_pointer[i] = green + i * 8; for (i = 0; i < 8; i++) { red_row_pointer[i] = red + i * 8; blue_row_pointer[i] = blue + i * 8; } samp_image[0] = green_row_pointer; samp_image[1] = red_row_pointer; samp_image[2] = blue_row_pointer; jpeg_stripe = malloc(MAXBUFSIZE); memcpy(jpeg_stripe, jpeg_header, JPEG_HEADER_SIZE); jpeg_stripe[JPEG_HEIGHT_OFFSET ] = height >> 8; jpeg_stripe[JPEG_HEIGHT_OFFSET + 1] = height; jpeg_stripe[JPEG_HEIGHT_OFFSET + 2] = 0; jpeg_stripe[JPEG_HEIGHT_OFFSET + 3] = 8; free (jpeg_header); jpeg_data = input + 16 + 2 * thumbnail_width * thumbnail_height; jpeg_data_size = inputsize - 16 - 2 * thumbnail_width * thumbnail_height; jpeg_data_idx = 0; out = malloc(width * height * 3); memset(out, 0, width * height * 3); dinfo.err = jpeg_std_error (&jderr); jpeg_create_decompress (&dinfo); for (x = 0; x < width; x += 16) { eoi = find_eoi(jpeg_data, jpeg_data_idx, jpeg_data_size); if (eoi < 0) { free (jpeg_stripe); free (out); return eoi; } size = eoi - jpeg_data_idx; if ((JPEG_HEADER_SIZE + size) > MAXBUFSIZE) { free (jpeg_stripe); free (out); GP_DEBUG("AAAIIIIII\n"); return 1; } memcpy (jpeg_stripe + JPEG_HEADER_SIZE, jpeg_data + jpeg_data_idx, size); jpeg_mem_src (&dinfo, jpeg_stripe, JPEG_HEADER_SIZE + size); jpeg_read_header (&dinfo, TRUE); dinfo.raw_data_out = TRUE; #if JPEG_LIB_VERSION >= 70 dinfo.do_fancy_upsampling = FALSE; #endif jpeg_start_decompress (&dinfo); for (y = 0; y < height; y += 16) { jpeg_read_raw_data (&dinfo, samp_image, 16); for (y1 = 0; y1 < 16; y1 += 2) { for (x1 = 0; x1 < 16; x1 += 2) { out[((y + y1 + 0) * width + x + x1 + 0) * 3] = red[y1 * 4 + x1 / 2]; out[((y + y1 + 0) * width + x + x1 + 1) * 3 + 1] = green[y1 * 8 + x1 / 2]; out[((y + y1 + 1) * width + x + x1 + 0) * 3 + 1] = green[y1 * 8 + 8 + x1 / 2]; out[((y + y1 + 1) * width + x + x1 + 1) * 3 + 2] = blue[y1 * 4 + x1 / 2]; } } } jpeg_finish_decompress (&dinfo); /* Set jpeg_data_idx for the next stripe */ jpeg_data_idx = (jpeg_data_idx + size + 0x0f) & ~0x0f; } jpeg_destroy_decompress(&dinfo); free (jpeg_stripe); ret = gp_ahd_interpolate(out, width, height, BAYER_TILE_BGGR); if (ret < 0) { GP_DEBUG("HEUH?\n"); free (out); return ret; } white_balance (out, width*height, 1.6); out_headerlen = snprintf((char *)output, 256, "P6\n" "# CREATOR: gphoto2, JL2005BCD library\n" "%d %d\n255\n", width, height); GP_DEBUG("out_headerlen = %d\n", out_headerlen); memcpy(output + out_headerlen, out, width * height * 3); outputsize = out_headerlen + width * height * 3; free (out); return outputsize; } #endif libgphoto2-2.5.9/camlibs/jl2005c/README.jl2005bcd-compression0000644000175000001440000004121612561423351020017 00000000000000History of the reverse engineering of the compression used in the JL2005B, JL2005C, and JL2005D cameras ----------------------------------------------------------- All of these cameras use a compression format which is derived from JPEG but is in several respects non-standard, making the job of understanding it very difficult. Thus, after several years have passed by, during which it has been possible to get the raw files out of these cameras but not possible to do anything with the data in the raw files, a task force was started to deal with the problem. The results of the reverse engineering work by Adam Rubin and Bertrik Sikken were shared by means of a wiki page with Hans de Goede and me (Theodore Kilgore). What is known as of April 10, 2010 is listed at A dump of this page is given below. The description provided in this webpage was used to write the decompression code. The objective was to provide output in a standard, uncompressed bitmap format in order to provide the opportunity to apply whatever techniques for image enhancement or postprocessing that might be needed. The format chosen for this was PPM, used in many other camera libraries in libgphoto2. Faced with the choice of incorporating a modified variant of libjpeg in the decompression code, for ultimate inclusion in libgphoto2/camlibs/jl2005c, or else finding a way to use the standard library functions of libjpeg, Hans de Goede found a way to use the standard library functions with minimal modification. The details of how the decompression algorithm needs to work are well laid out in the dump of the wiki web page (below). See especially the section called "Entropy coded data." A modified version of the file jpeg_memsrcdest.c is part of the decompression package here. The copyright notice of the original file is preserved inside the file, and it is also copied here: /* * jpeg_memsrcdest.c and jidctflt.c * * Copyright (C) 1994-1998, Thomas G. Lane. * This file is part of the Independent JPEG Group's software. * * The authors make NO WARRANTY or representation, either express or implied, * with respect to this software, its quality, accuracy, merchantability, or * fitness for a particular purpose. This software is provided "AS IS", and you, * its user, assume the entire risk as to its quality and accuracy. * * This software is copyright (C) 1991-1998, Thomas G. Lane. * All Rights Reserved except as specified below. * * Permission is hereby granted to use, copy, modify, and distribute this * software (or portions thereof) for any purpose, without fee, subject to these * conditions: * (1) If any part of the source code for this software is distributed, then this * README file must be included, with this copyright and no-warranty notice * unaltered; and any additions, deletions, or changes to the original files * must be clearly indicated in accompanying documentation. * (2) If only executable code is distributed, then the accompanying * documentation must state that "this software is based in part on the work of * the Independent JPEG Group". * (3) Permission for use of this software is granted only if the user accepts * full responsibility for any undesirable consequences; the authors accept * NO LIABILITY for damages of any kind. * * These conditions apply to any software derived from or based on the IJG code, * not just to the unmodified library. If you use our work, you ought to * acknowledge us. * * Permission is NOT granted for the use of any IJG author's name or company name * in advertising or publicity relating to this software or products derived from * it. This software may be referred to only as "the Independent JPEG Group's * software". * * We specifically permit and encourage the use of this software as the basis of * commercial products, provided that all warranty or liability claims are * assumed by the product vendor. */ Below is a dump of: Made on 28 April 2010. ImageEncodingJeilin2005CD From gphoto Jump to: navigation, search Contents * 1 Introduction * 2 Photo Allocation Table * 3 Image format o 3.1 Image header o 3.2 Thumbnail image o 3.3 Entropy coded data + 3.3.1 Huffman table + 3.3.2 Quantisation table Introduction This page describes the image format used in cameras with the Jeilin JL2005B / JL2005C / JL2005D chip. This chip stores images in a non-standard JPEG-like format. To understand the information on this page, it is recommended to have a basic understanding of JPEG compression. Photo Allocation Table At the start of the camera's accessible RAM is the PAT (photo allocation table), 0x30 bytes of data (not included in image headers), immediately followed by the 16-byte image headers for all the photos in consecutive order. A few bytes of the data at the start of the PAT table are of interest. All word values are big-endian. * 0x00-0x06 -- "JL2005B" or "JL2005C" or "JL2005D", whichever chip this camera has. * 0x07 -- bit flags; apparently bit 2 is set if this camera supports thumbnails, and cleared if it doesn't; sometimes bits 0 and/or 1 are set, purposes unknown; all other bits always observed as zero so far * 0x08-0x09 -- first writeable block in camera's RAM (see "Image Header" below for block sizes) * 0x0a-0x0b -- first unused block after image data (where next photo taken would start) * 0x0c-0x0d -- word containing number of images in the camera, counting each frame within a clip as one. This many 16-byte image headers should be read from the PAT table starting at offset 0x30; any headers beyond this should be ignored. * 0x0e-0x0f -- number of free blocks remaining in camera's RAM Other bytes may be added as discovered. Image format The raw image file seems to consist of the following parts: * a 16-byte image header * some kind of thumbnail of the actual image * entropy-coded JPEG-like image data These parts are described in the following paragraphs. Image header The 16-byte image header is the very first thing in a raw image file (copied directly from the PAT, except where specifically noted) and contains basic image meta-data. All words are stored big-endian, and block size is 0x80 bytes for the JL2005B and 0x200 bytes for the JL2005C and JL2005D chips. "Significant" means that the value of the bit, byte, or word indicates or is used for something, but I don't (yet) know what that is, and what the effects of it are, if any. I suspect some of those values may not affect anything. Definitions, as I understand them (corrections welcome!): * Still mode - Camera takes one photo when shutter button is pressed * Burst mode - Camera takes a sequence (a constant small number, usually 3) of still photos when shutter button is pressed once, meant to be viewed as separate images * Continuous mode - Camera continues rapidly (several fps) taking photos until told to stop (or memory is full); result is meant to be viewed as a video clip, e.g. AVI format. The camera may temporarily use a lower resolution and different compression ratio during this. Byte(s) Meaning 0x00 0x00: standard still image 0x01: intermediate photo from continuous mode 0x02: photo taken in burst mode 0x11: first image from continuous mode 0x21: last image from continuous mode Anything else: unknown The OEM driver processes 0x11 as a special case, 0x01 and 0x21 as if they were 0x01, and anything else (including 0x02) as if it were 0x00. 0x01 Attributes: If bit 4 is set, gamma correction is enabled. All other bits are unknown, although usually some are set. Bits 2-3 and 7 are significant. 0x02 Bits 0-1: resolution of this photo (camera-dependent), 00 = CIF or VGA, 01 = QCIF or QVGA. If supported, 02 = SVGA, 03 = even larger than SVGA Bits 4-5: 00 = lower compression ratio, 01 = higher compression ratio, 10 = compression for continuous mode All other bits have always been observed as zero so far. 0x03 Bits 0-6: image quality factor (0x64 = 100% is best quality), specifics below under "Quantization Table" Bit 7: if set, read the raw file into memory but do not decode it. (For manufacturer or developer testing?) 0x04 Image height, in units of 8 pixels 0x05 Image width, in units of 8 pixels 0x06-0x07 Total size of image data in blocks, including thumbnail if any 0x08 When writing the raw file, if byte 0x03 bit 7 is set (don't decode image) and byte 0x02 bit 4 is set (higher compression ratio), then a workspace area of ( width * (photo height in pixels - this byte) / 2 ) bytes is temporarily allocated, instead of width * height. When reading in the raw file, if byte 0x03 bit 7 is set and byte 0x02 bit 4 is set, the value used by the OEM driver for image height in pixels follows the same equation. I don't (yet) know why either of these are done. (For manufacturer or developer testing?) 0x09 Bits 0-1: see description of header byte 0x0b, below. Bits 2-7: If the camera supports thumbnail images (PAT+07 bit 2 set), the thumbnail's length in blocks is this 6-bit value. So far, a 6-bit value of 0x18 or 0x3c (i.e. byte value 0x6n or 0xfn where n <= 3) in these bits means a thumbnail (resolution 96x64 or 128x120 pixels respectively), and 0x00 means no thumbnail. The meaning of any other value is not certain, but probably means "no thumbnail". Thumbnail encoding is described below. 0x0a Attributes, apparently constant for any particular camera. Bits 0-1 are significant. 0x0b Zero if still mode or burst mode. For continuous mode (indicated by byte 0x00 of header), the first image has the total number of images in this video clip in this byte, and successive images in this clip are numbered consecutively in this byte, from 1 to (# images - 1). This is actually a ten-bit value; bits 0 and 1 of header byte 0x09 are bits 8 and 9 of it respectively. That gives it a maximum value of 0x3ff (1023 decimal). That's the latest conjecture, anyway. Note: Some cameras (including all using the JL2005B) that have a continuous mode do NOT use this byte and leave it at zero. The start and end of clips can still be detected by header byte 0x00. 0x0c-0x0d Starting address of this image in camera's RAM, in blocks. 0x0e-0x0f Word value, big-endian, significant, function unknown so far. Could be data, a pointer, or a checksum of some sort. (part of this table was derived from the jl2005c code already in gphoto) Thumbnail image Directly following the image header, sometimes, is a thumbnail image. See "Image Header" byte 0x09, above, to detect whether one is present. From observation: * JL2005B -- no thumbnails * JL2005C -- some have thumbnails; if so, 96x64 pixels * JL2005D -- many have thumbnails; if so, 128x120 pixels Note that the aspect ratio of the thumbnails is not necessarily the same as that of the picture. Pixels in the thumbnail are encoded left-to-right, top-to-bottom. Each pixel of the thumbnail image is represented by a 16-bit word, big endian encoded, with bits assigned to R, G and B components as follows (a.k.a. RGB565): * bit 15-11: red * bit 10- 5: green * bit 4 - 0: blue All of these are the most significant 5 or 6 bits for that color, with the unused low-order bits set to zero. Entropy coded data Following the thumbnail image (if present), is the entropy coded data. This data looks a bit like the entropy coded data used in JPEG images. The image is sub-divided as follows: * The image is divided in vertical strips of 16 pixels wide and height pixels high, so the whole image consists of width/16 strips, encoded from left-to-right. * Each strip is subdivided in MCUs (minimum coded unit) of 16x16 pixels, encoded from top to bottom. * Each MCU consists of 4 blocks of 8x8 pixels each, containing pixels from the Bayer mosaicing pattern. They appear in the following order: o First the green pixels of the top half of the 16x16 pixel MCU o Then the green pixels of the bottom half of the 16x16 pixel MCU o Then the red pixels for the entire MCU o Finally the blue pixels for the entire MCU * The order of the red, green and blue pixels in the Bayer pattern is as follows: RG/GB. This means the first line of a MCU starts with a red pixel, then a green pixel from the first green line from the first green block. The second line starts with a green pixel from the second green line from the first green block, then a blue pixel. With respect to the encoding: * MCUs in a strip are encoded like a JPEG MCU. There are only two Huffman tables (one for the DC and one for the AC coefficients) and there is only one quantisation table. * The blue and red 8x8 blocks inside an MCU each have a DC coefficient that is differential to the DC coefficient of the same block in the previous MCU, like a standard JPEG. * The two green 8x8 blocks inside an MCU share a single DC coefficient, so the DC coefficient of the first green block is differential to the one from the second block and vice versa. * The DC coefficients in the first MCU in a strip are not differential, but contain the absolute value. * 0xFF bytes in the entropy coded data are followed by 0x00 stuff-bytes, just like JPEG. * A strip is encoded as a bunch of MCUs, followed by 0xFFD9 (this is the End-Of-Image marker in JPEG) and padded with 0x00 until the next 16-byte aligned address. The start of the entropy coded stream is considered to be address 0 in this case. * An image is encoded as a bunch of strips, followed by bogus data until the end of the total image data (which is a multiple of the block size, 0x80 or 0x200 bytes). Huffman table The Huffman table used is the recommended table for the luminance component from the JPEG specification. In C, encoded as a JPEG DHT table, this looks like: static const unsigned char dht_table[] = { 0xFF, 0xC4, 0x00, 0xD2 // luma DC 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, // luma AC 0x10, 0x00, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7D, 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xA1, 0x08, 0x23, 0x42, 0xB1, 0xC1, 0x15, 0x52, 0xD1, 0xF0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0A, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA }; Quantisation table The magnitude of the elements in the quantisation table in JPEG-like encoding basically determines the compromise between image quality and image size. A quantisation table with small values results in a high quality but large image and a quantisation table with large values results in a low quality but small image. The quantisation table used in the Jeilin encoding is a scaled version of a base quantisation table. This base quantisation table is very similar (within a few percent) to the one given in the JPEG specification. The scale factor (in percent) is calculated from the quality value from the header (call it q) in the following way: * q = 0: scale factor = 5000 * 0 < q <= 50: scale factor = 5000 / q * 50 < q <= 100: scale factor = 2 * (100 - q) * q > 100: assume q = 100 Scaling is done by multiplying each element of the table by the scale factor, dividing by 100 and rounding to the nearest integer value. The minimum value of an element after scaling is 1 and the maximum value is 255. Retrieved from "http://sourceforge.net/apps/mediawiki/gphoto/index.php?title=ImageEncodingJeilin2005CD" Views * Page * Discussion * View source * History Personal tools Navigation * Main Page * Community portal * Current events * Recent changes * Random page * Help Search Toolbox * What links here * Related changes * Special pages * Printable version * Permanent link Powered by MediaWiki * This page was last modified on 25 April 2010, at 18:30. * This page has been accessed 223 times. © 2010 Geeknet, Inc. Terms of Use Privacy Policy libgphoto2-2.5.9/camlibs/jl2005c/img_enhance.c0000644000175000001440000001524012610415524015611 00000000000000/* * img_enhance.c * * Part of a processor program for raw data from JL2005B/C/D cameras. * Based on previous work for several other cameras. * * Copyright (c) 2010 Theodore Kilgore * * 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. * * A previous version of the white_balance() function intended for use in * libgphoto2/camlibs/aox is copyright (c) 2008 Amauri Magagna. * * 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 * Lesser 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 */ #include #include #include #include #include #include #include #include "img_enhance.h" #include #define GP_MODULE "jl2005c" #ifndef CLIP #define CLIP(x) ((x)<0?0:((x)>255)?255:(x)) #endif /* ===== White Balance / Color Enhance / Gamma adjust ===== Get histogram for each color plane Expand to reach 0.5% of white dots in image Get new histogram for each color plane Expand to reach 0.5% of black dots in image Get new histogram Calculate and apply gamma correction If not a dark image: For each dot, increase the color separation ========================================================== */ int histogram (unsigned char *data, unsigned int size, int *htable_r, int *htable_g, int *htable_b) { int x; /* Initializations */ for (x = 0; x < 0x100; x++) { htable_r[x] = 0; htable_g[x] = 0; htable_b[x] = 0; } /* Building the histograms */ for (x = 0; x < (size * 3); x += 3) { htable_r[data[x + 0]]++; /* red histogram */ htable_g[data[x + 1]]++; /* green histogram */ htable_b[data[x + 2]]++; /* blue histogram */ } return 0; } int white_balance (unsigned char *data, unsigned int size, float saturation) { int x, r, g, b, max, d; double r_factor, g_factor, b_factor, max_factor; int htable_r[0x100], htable_g[0x100], htable_b[0x100]; unsigned char gtable[0x100]; double new_gamma, gamma = 1.0; /* ------------------- GAMMA CORRECTION ------------------- */ histogram(data, size, htable_r, htable_g, htable_b); x = 1; for (r = 64; r < 192; r++) { x += htable_r[r]; x += htable_g[r]; x += htable_b[r]; } new_gamma = sqrt((double) (x * 1.5) / (double) (size * 3)); GP_DEBUG("Provisional gamma correction = %1.2f\n", new_gamma); /* Recalculate saturation factor for later use. */ saturation = saturation * new_gamma * new_gamma; GP_DEBUG("saturation = %1.2f\n", saturation); gamma = new_gamma; if (new_gamma < .70) gamma = 0.70; if (new_gamma > 1.2) gamma = 1.2; GP_DEBUG("Gamma correction = %1.2f\n", gamma); gp_gamma_fill_table(gtable, gamma); gp_gamma_correct_single(gtable, data, size); if (saturation < .5 ) /* If so, exit now. */ return 0; /* ---------------- BRIGHT DOTS ------------------- */ max = size / 200; histogram(data, size, htable_r, htable_g, htable_b); for (r = 0xfe, x = 0; (r > 32) && (x < max); r--) x += htable_r[r]; for (g = 0xfe, x = 0; (g > 32) && (x < max); g--) x += htable_g[g]; for (b = 0xfe, x = 0; (b > 32) && (x < max); b--) x += htable_b[b]; r_factor = (double) 0xfd / r; g_factor = (double) 0xfd / g; b_factor = (double) 0xfd / b; max_factor = r_factor; if (g_factor > max_factor) max_factor = g_factor; if (b_factor > max_factor) max_factor = b_factor; if (max_factor >= 4.0) { /* * We need a little bit of control, here. If max_factor is big * then the photo was very dark, after all. */ if (2.0 * b_factor < max_factor) b_factor = max_factor / 2.; if (2.0 * r_factor < max_factor) r_factor = max_factor / 2.; if (2.0 * g_factor < max_factor) g_factor = max_factor/2.; r_factor = (r_factor / max_factor) * 4.0; g_factor = (g_factor / max_factor) * 4.0; b_factor = (b_factor / max_factor) * 4.0; } if (max_factor > 1.5) saturation = 0; GP_DEBUG("White balance (bright): "); GP_DEBUG("r=%1d, g=%1d, b=%1d, fr=%1.3f, fg=%1.3f, fb=%1.3f\n", r, g, b, r_factor, g_factor, b_factor); if (max_factor <= 1.4) { for (x = 0; x < (size * 3); x += 3) { d = (data[x + 0] << 8) * r_factor + 8; d >>= 8; if (d > 0xff) d = 0xff; data[x + 0] = d; d = (data[x + 1] << 8) * g_factor + 8; d >>= 8; if (d > 0xff) d = 0xff; data[x + 1] = d; d = (data[x + 2] << 8) * b_factor + 8; d >>= 8; if (d > 0xff) d = 0xff; data[x + 2] = d; } } /* ---------------- DARK DOTS ------------------- */ max = size / 200; /* 1/200 = 0.5% */ histogram(data, size, htable_r, htable_g, htable_b); for (r = 0, x = 0; (r < 96) && (x < max); r++) x += htable_r[r]; for (g = 0, x = 0; (g < 96) && (x < max); g++) x += htable_g[g]; for (b = 0, x = 0; (b < 96) && (x < max); b++) x += htable_b[b]; r_factor = (double) 0xfe / (0xff - r); g_factor = (double) 0xfe / (0xff - g); b_factor = (double) 0xfe / (0xff - b); GP_DEBUG("White balance (dark): "); GP_DEBUG("r=%1d, g=%1d, b=%1d, fr=%1.3f, fg=%1.3f, fb=%1.3f\n", r, g, b, r_factor, g_factor, b_factor); for (x = 0; x < (size * 3); x += 3) { d = (int) 0xff08 - (((0xff - data[x + 0]) << 8) * r_factor); d >>= 8; if (d < 0) d = 0; data[x + 0] = d; d = (int) 0xff08 - (((0xff - data[x + 1]) << 8) * g_factor); d >>= 8; if (d < 0) d = 0; data[x + 1] = d; d = (int) 0xff08 - (((0xff - data[x + 2]) << 8) * b_factor); d >>= 8; if (d < 0) d = 0; data[x + 2] = d; } /* ------------------ COLOR ENHANCE ------------------ */ if(saturation > 0.0) { for (x = 0; x < (size * 3); x += 3) { r = data[x + 0]; g = data[x + 1]; b = data[x + 2]; d = (int) (r + g + b) / 3.; if ( r > d ) r = r + (int) ((r - d) * (0xff - r) / (0x100 - d) * saturation); else r = r + (int) ((r - d) * (0xff - d) / (0x100 - r) * saturation); if (g > d) g = g + (int) ((g - d) * (0xff - g) / (0x100 - d) * saturation); else g = g + (int) ((g - d) * (0xff - d) / (0x100 - g) * saturation); if (b > d) b = b + (int) ((b - d) * (0xff - b) / (0x100 - d) * saturation); else b = b + (int) ((b - d) * (0xff - d) / (0x100 - b) * saturation); data[x + 0] = CLIP(r); data[x + 1] = CLIP(g); data[x + 2] = CLIP(b); } } return 0; } libgphoto2-2.5.9/camlibs/jl2005c/Makefile-files0000644000175000001440000000116612561423351015754 00000000000000EXTRA_DIST += jl2005c/README.jl2005c jl2005c/README.jl2005bcd-compression jl2005c/ChangeLog camlibdoc_DATA += jl2005c/README.jl2005c jl2005c/README.jl2005bcd-compression EXTRA_LTLIBRARIES += jl2005c.la jl2005c_la_SOURCES = jl2005c/library.c\ jl2005c/jl2005c.c\ jl2005c/jpeg_memsrcdest.c \ jl2005c/jpeg_memsrcdest.h \ jl2005c/jl2005bcd_decompress.c\ jl2005c/jl2005bcd_decompress.h\ jl2005c/jl2005c.h\ jl2005c/img_enhance.c\ jl2005c/img_enhance.h jl2005c_la_LDFLAGS = $(camlib_ldflags) jl2005c_la_DEPENDENCIES = $(camlib_dependencies) jl2005c_la_LIBADD = $(camlib_libadd) @LIBJPEG@ libgphoto2-2.5.9/camlibs/jl2005c/jpeg_memsrcdest.c0000644000175000001440000002230112561423351016525 00000000000000/* * memsrc.c * * Copyright (C) 1994-1996, Thomas G. Lane. * This file is part of the Independent JPEG Group's software. * For conditions of distribution and use, see the accompanying README file. * * This file contains decompression data source routines for the case of * reading JPEG data from a memory buffer that is preloaded with the entire * JPEG file. This would not seem especially useful at first sight, but * a number of people have asked for it. * This is really just a stripped-down version of jdatasrc.c. Comparison * of this code with jdatasrc.c may be helpful in seeing how to make * custom source managers for other purposes. */ /* this is not a core library module, so it doesn't define JPEG_INTERNALS */ #include #include #include "config.h" #ifdef HAVE_LIBJPEG #include #include #include "jpeg_memsrcdest.h" /* libjpeg8 and later come with their own (API compatible) memory source and dest */ #if JPEG_LIB_VERSION < 80 /* Expanded data source object for memory input */ typedef struct { struct jpeg_source_mgr pub; /* public fields */ JOCTET eoi_buffer[2]; /* a place to put a dummy EOI */ } my_source_mgr; typedef my_source_mgr * my_src_ptr; /* * Initialize source --- called by jpeg_read_header * before any data is actually read. */ METHODDEF(void) init_source (j_decompress_ptr cinfo) { /* No work, since jpeg_mem_src set up the buffer pointer and count. * Indeed, if we want to read multiple JPEG images from one buffer, * this *must* not do anything to the pointer. */ } /* * Fill the input buffer --- called whenever buffer is emptied. * * In this application, this routine should never be called; if it is called, * the decompressor has overrun the end of the input buffer, implying we * supplied an incomplete or corrupt JPEG datastream. A simple error exit * might be the most appropriate response. * * But what we choose to do in this code is to supply dummy EOI markers * in order to force the decompressor to finish processing and supply * some sort of output image, no matter how corrupted. */ METHODDEF(boolean) fill_input_buffer (j_decompress_ptr cinfo) { my_src_ptr src = (my_src_ptr) cinfo->src; WARNMS(cinfo, JWRN_JPEG_EOF); /* Create a fake EOI marker */ src->eoi_buffer[0] = (JOCTET) 0xFF; src->eoi_buffer[1] = (JOCTET) JPEG_EOI; src->pub.next_input_byte = src->eoi_buffer; src->pub.bytes_in_buffer = 2; return TRUE; } /* * Skip data --- used to skip over a potentially large amount of * uninteresting data (such as an APPn marker). * * If we overrun the end of the buffer, we let fill_input_buffer deal with * it. An extremely large skip could cause some time-wasting here, but * it really isn't supposed to happen ... and the decompressor will never * skip more than 64K anyway. */ METHODDEF(void) skip_input_data (j_decompress_ptr cinfo, long num_bytes) { my_src_ptr src = (my_src_ptr) cinfo->src; if (num_bytes > 0) { while (num_bytes > (long) src->pub.bytes_in_buffer) { num_bytes -= (long) src->pub.bytes_in_buffer; (void) fill_input_buffer(cinfo); /* note we assume that fill_input_buffer will never * return FALSE, so suspension need not be handled. */ } src->pub.next_input_byte += (size_t) num_bytes; src->pub.bytes_in_buffer -= (size_t) num_bytes; } } /* * An additional method that can be provided by data source modules is the * resync_to_restart method for error recovery in the presence of RST markers. * For the moment, this source module just uses the default resync method * provided by the JPEG library. That method assumes that no backtracking * is possible. */ /* * Terminate source --- called by jpeg_finish_decompress * after all data has been read. Often a no-op. * * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding * application must deal with any cleanup that should happen even * for error exit. */ METHODDEF(void) term_source (j_decompress_ptr cinfo) { /* no work necessary here */ } /* * Prepare for input from a memory buffer. */ GLOBAL(void) jpeg_mem_src (j_decompress_ptr cinfo, unsigned char * buffer, unsigned long bufsize) { my_src_ptr src; /* The source object is made permanent so that a series of JPEG images * can be read from a single buffer by calling jpeg_mem_src * only before the first one. * This makes it unsafe to use this manager and a different source * manager serially with the same JPEG object. Caveat programmer. */ if (cinfo->src == NULL) { /* first time for this JPEG object? */ cinfo->src = (struct jpeg_source_mgr *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(my_source_mgr)); } src = (my_src_ptr) cinfo->src; src->pub.init_source = init_source; src->pub.fill_input_buffer = fill_input_buffer; src->pub.skip_input_data = skip_input_data; /* use default method */ src->pub.resync_to_restart = jpeg_resync_to_restart; src->pub.term_source = term_source; src->pub.next_input_byte = buffer; src->pub.bytes_in_buffer = bufsize; } /* Memory destination source modelled after Thomas G. Lane's memory source * support and jdatadst.c * * Copyright (C) 2010, Hans de Goede * * This code may be used under the same conditions as Thomas G. Lane's memory * source (see the copyright header at the top of this file). */ typedef struct { struct jpeg_destination_mgr pub; /* public fields */ JOCTET **buffer; /* start of buffer */ unsigned long buf_size, *outsize; } my_destination_mgr; typedef my_destination_mgr * my_dest_ptr; #define OUTPUT_BUF_SIZE 32768 /* choose an efficiently fwrite'able size */ /* * Initialize destination --- called by jpeg_start_compress * before any data is actually written. */ METHODDEF(void) init_destination (j_compress_ptr cinfo) { /* No work, since jpeg_mem_dest set up the buffer pointer and count. * Indeed, if we want to write multiple JPEG images to one buffer, * this *must* not do anything to the pointer. */ } /* * Empty the output buffer --- called whenever buffer fills up. * * In typical applications, this should write the entire output buffer * (ignoring the current state of next_output_byte & free_in_buffer), * reset the pointer & count to the start of the buffer, and return TRUE * indicating that the buffer has been dumped. * * In applications that need to be able to suspend compression due to output * overrun, a FALSE return indicates that the buffer cannot be emptied now. * In this situation, the compressor will return to its caller (possibly with * an indication that it has not accepted all the supplied scanlines). The * application should resume compression after it has made more room in the * output buffer. Note that there are substantial restrictions on the use of * suspension --- see the documentation. * * When suspending, the compressor will back up to a convenient restart point * (typically the start of the current MCU). next_output_byte & free_in_buffer * indicate where the restart point will be if the current call returns FALSE. * Data beyond this point will be regenerated after resumption, so do not * write it out when emptying the buffer externally. */ METHODDEF(boolean) empty_output_buffer (j_compress_ptr cinfo) { my_dest_ptr dest = (my_dest_ptr) cinfo->dest; *dest->buffer = realloc (*dest->buffer, dest->buf_size + OUTPUT_BUF_SIZE); if (!*dest->buffer) ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 0); dest->pub.next_output_byte = *dest->buffer + dest->buf_size; dest->pub.free_in_buffer = OUTPUT_BUF_SIZE; dest->buf_size += OUTPUT_BUF_SIZE; return TRUE; } /* * Terminate destination --- called by jpeg_finish_compress * after all data has been written. Usually needs to flush buffer. * * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding * application must deal with any cleanup that should happen even * for error exit. */ METHODDEF(void) term_destination (j_compress_ptr cinfo) { my_dest_ptr dest = (my_dest_ptr) cinfo->dest; *dest->outsize = dest->buf_size - dest->pub.free_in_buffer; } GLOBAL(void) jpeg_mem_dest (j_compress_ptr cinfo, unsigned char ** outbuffer, unsigned long * outsize) { my_dest_ptr dest; /* The destination object is made permanent so that multiple JPEG * images can be written to the same file without re-executing * jpeg_stdio_dest. * This makes it dangerous to use this manager and a different * destination manager serially with the same JPEG object, because * their private object sizes may be different. * * Caveat programmer. */ if (cinfo->dest == NULL) { /* first time for this JPEG object? */ cinfo->dest = (struct jpeg_destination_mgr *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(my_destination_mgr)); } dest = (my_dest_ptr) cinfo->dest; dest->pub.init_destination = init_destination; dest->pub.empty_output_buffer = empty_output_buffer; dest->pub.term_destination = term_destination; dest->buffer = outbuffer; dest->buf_size = *outsize; dest->outsize = outsize; if (*dest->buffer == NULL || dest->buf_size == 0) { /* Allocate initial buffer */ *dest->buffer = malloc(OUTPUT_BUF_SIZE); if (*dest->buffer == NULL) ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 10); dest->buf_size = OUTPUT_BUF_SIZE; } dest->pub.next_output_byte = *dest->buffer; dest->pub.free_in_buffer = dest->buf_size; } #endif #endif libgphoto2-2.5.9/camlibs/jl2005c/jpeg_memsrcdest.h0000644000175000001440000000032412561423351016533 00000000000000#include void jpeg_mem_src (j_decompress_ptr cinfo, unsigned char * buffer, unsigned long bufsize); void jpeg_mem_dest (j_compress_ptr cinfo, unsigned char ** outbuffer, unsigned long * outsize); libgphoto2-2.5.9/camlibs/jl2005c/ChangeLog0000644000175000001440000000703512610415510014760 000000000000002012-01-12 Theodore Kilgore * README.jl2005c: updated. * library.c: Sakar 94009 Hello Kitty added. Yet another Vivitar Freelance discovered in the wild. Looks different from the others. Not listed separately. 2012-01-12 Theodore Kilgore * library.c: Jazwares Star Wars camera added. 2011-06-20 Theodore Kilgore * library.c: Sakar 88067 Dora the Explorer camera added. 2010-04-28 Theodore Kilgore * README.jl2005c: minor cleanup. * library.c: Sakar 88601 Nickelodeon iCarly camera added. 2010-12-26 Marcus Meissner * jl2005bcd_decompress.c: Dynamically allocate the out and jpeg_stripe buffers, such large buffers are not liked by the kernel. 2010-04-28 Theodore Kilgore * README.jl2005c: updated. * README.jl2005bcd-compression: updated, new copy of wiki page. * jl2005c.[c,h]: jl2005c_delete_all() added. * library.c: delete_all_func() added. 2010-04-24 Theodore Kilgore * jl2005bcd_decompress.c: GP_DEBUG() replaces printf() 2010-04-19 Theodore Kilgore * README.jl2005c: revised. * README.jl2005bcd-compression: added. * img_enhance.[c,h]: added. * jl2005bcd_decompress.[c,h]: added. Decompresses data, autodetects thumbnails if present in raw data, can also process the thumbnails. * jpeg_memsrcdest.[c,h]: added (helper files for decompression). NOTE: Decompression algorithm is completely solved. Camlib should be added as "standard" part of libgphoto2. 2010-04-18 Theodore Kilgore * library.c: Yet another camera found. 2010-04-14 Theodore Kilgore * library.c: Yet another camera found. 2010-04-13 Theodore Kilgore * library.c: Lots of cameras added to the camera list. 2009-04-16 Theodore Kilgore * README.jl2005c: Updated. 2008-07-11 Theodore Kilgore * library.c: Listing for Argus Bean Sprout added, found by T.K. 2008-05-20 Theodore Kilgore * library.c: Listing for Sakar Sticker Wizard no. 59379 added, found by Niklas Peinecke 2008-05-12 Theodore Kilgore * library.c: Listing for Sakar clipshot no. 1169x added. 2008-01-06 Theodore Kilgore * *.[c,h]: The camera of Patrick Simmons is determined to be a JL2005D. Support is introduced for distinguishing the B, C, and D versions in the places where that is needed. Support is added for downloading an arbitrary photo from the list of photos in the camera. NOTE: All these cameras use compression, and how to decompress is still unknown. Thus, raw files only. 2007-12-28 Theodore Kilgore * library.c: Added support for "Amazing Spiderman" reported by Victor Hodge and for Sakar no. 75379 reported by Patrick Simmons and for Sakar Kidz-Cam no. 88379 reported by Martin Laberge . * *.[c,h]: Introduced changes to give unified support to both JL2005C and JL2005B in the same functions. NOTE: All these cameras use compression, and how to decompress is still unknown. 2007-09-04 Theodore Kilgore * *.[c,h]: First check-in of experimental driver code. Nothing much works exactly right. Driver will download data without freezing the camera, and that's about it. libgphoto2-2.5.9/camlibs/jl2005c/README.jl2005c0000644000175000001440000001701412610415510015142 00000000000000JEILIN STILLCAM DRIVER Copyright Theodore Kilgore September 4, 2007. Most recent update is April 28, 2010. (Everything in libgphoto2/camlibs/jeilin is LGPL-licensed, including this README. See any of the source files for a more complete statement of the license.) INTRODUCTION This driver is intended to support the cameras with the USB Vendor:Product number 0x0979:0x0227. These cameras all have a controller chip from Jeilin Technologies, either the JL2005B or the JL2005C or the JL2005D. Both the control interface and the compressed data format of these cameras are proprietary, and these cameras are supported commercially only in Windows. In spite of some features in common, these cameras also show a very large variation. Some of them are very rudimentary, with a maximum resolution of 352x288, and there are also more expensive models with a maximum resolution of 1280x1024. Some of them have viewing screens on the rear and some do not. Some of the cameras also produce separate thumbnails, which, when present, are downloaded as part of the raw data for the image. Accommodation of this very wide range of features has been a special challenge in writing this support library, especially when it seems that not all of the OEM software available for a given supported camera will work for all the others. Jeilin Technologies also manufactures chips which go into mass storage cameras. Those cameras, not to be confused with these, can be accessed directly using mass storage support. The company also makes another camera controller chip with proprietary interface, the JL2005A. Cameras with that chip are supported in libgphoto2/camlibs/jl2005a. If you want to read about one of those JL2005A cameras, please look in camlibs/jl2005a, not here. The JL2005C camera library has been included in the release versions of libgphoto2 ever since libgphoto2-2.4.4, but it was so configured as not to compile by default. The reason for that was that the cameras use a nasty data compression algorithm which was very difficult to figure out. So long as the data coming out of the camera could not be decompressed, it was not of any use to support these cameras except for experimental purposes. This situation has recently changed. A task force was set up to deal with the problem, and success has been achieved. As of April 2010, it seems to be possible reliably to get the photos out of these cameras in usable form. For details concerning the solution of the decompression problem, please see the file README.jl2005bcd-compression which is supposed to be included with the documentation for libgphoto2/camlibs/jl2005c. If for any reason you do not have this file, it can be found at in the directory trunk/libgphoto2/camlibs/jl2005c. My thanks to the other members of the team who worked together to solve the longstanding problem. Thanks to Adam Rubin and Bertrik Sikken for doing the research needed to gather the information found at And thanks to Hans de Goede for writing the decompression algorithm. WHAT DOES THIS CAMERA LIBRARY CURRENTLY DO? This library appears to support the basic functionality of all the various cameras which are available for testing. It seems to perform reliably at the tasks of initializing the camera and providing a graceful exit, downloading the raw data, and also conversion of raw data into decompressed output files. Cameras which support or do not support thumbnails seem to be reliably detected, and the raw data appears to be reliably decompressed. If present, thumbnails can also be processed into a finished form. Deletion of all photos also is supported, by the option gphoto2 -D. In short, things appear basically to work. HARDWARE CONSTRAINTS: These cameras use an extremely primitive command structure. The only thing that the camera really does know how to do is to prepare to download all data on it, then to download all data on it, and then to reset prior to being disconnected. Judging by what it does, the OEM software is almost certainly built on the assumption that the camera will be initialized, have its data dumped exactly once, and then disconnected. Everything else is done on the computer with the big blob of data which has been downloaded. Therefore, any other functionality has to be based on software fakery which fools the hardware into emulating said functionality. Suppose, for example, that there are ten photos in the camera. Then what the camera will do is: -- report the number of photos (ten) -- tell how much data needs to be downloaded in all (depends on how much room was taken up by the raw data for all the photos) -- provide a table with one line for each photo, giving its size, start location, output height and width, and some kind of code for the compression method used on it. In the next step, one must request all the image data for all the ten photos to be downloaded. This happens in increments of 64000 bytes, with only the last increment permitted to be "short." This does not need to be done all at once; it is possible to download some initial block of the data and operate on whatever photos are already obtained, keeping anything left over until the next block is downloaded. However, ALL of the data must downloaded before the driver program exits. One consequence of this is that the only way commands such as gphoto2 --get-raw-data 3 or gphoto2 -p 3 can work is to download photos number 1 and 2 and throw away the data before downloading the desired number 3 which is to be kept, then downloading any data in the camera which comes after photo number 3, as part of the exit routine. The sequence of downloading number 10, say, followed by number 1 is even more complicated. The actual steps required are: -- initialize the camera -- download enough data to get photo number 10, throwing away all data which is not part of photo number 10 but precedes it -- download the data required for photo number 10 -- download the rest of the data, if any -- send a reset sequence to the camera -- close and reopen the camera's port -- repeat the initialization sequence -- download enough data to process photo number 1 -- download all the rest of the data and throw it away. -- send the reset sequence again, and, finally, disconnect In addition to the awkwardness caused by this kind of primitive behavior, it puts certain requirements on any program used to handle the camera. Most particularly, any program which uses libgphoto2 must be willing to call and actually to use the camera_exit() function which is contained in this library. Otherwise, given the above constraints, it is obvious that the camera would not work properly with that frontend program. TO DO There are some parts of the camera command structure which are not completely known. For example, some kind of capture function could conceivably be made to work. One known functionality of the camera is not completely supported, though. The cameras all support a "continuous shooting" mode, in which the camera shoots frames until it it is stopped by a button press or runs out of memory. The OEM driver software saves the result as an AVI file. Here, the individual frames are merely downloaded and saved as individual photos. The intention is to support this feature completely, in the future. WARRANTY? Absolutely none. Remember, I did not sell you this software. I have written this driver for my own edification and in the sincere hope that it might help you to use of your camera. Please see also the warranty clauses in the LGPL license. libgphoto2-2.5.9/camlibs/jl2005c/jl2005bcd_decompress.h0000644000175000001440000000201312610415524017164 00000000000000/* jl2005bcd_decompress.h * * Copyright (C) 2006-2010 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __jl2005bcd_decompress_H__ #define __jl2005bcd_decompress_H__ int jl2005bcd_decompress(unsigned char *output, unsigned char *input, int inputsize, int get_thumbnail); #endif libgphoto2-2.5.9/camlibs/jl2005c/jl2005c.h0000644000175000001440000000354212610415524014442 00000000000000/* jl2005c.h * * Copyright (C) 2006-2010 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __jl2005c_H__ #define __jl2005c_H__ #include #include #define MAX_DLSIZE 0xfa00 typedef unsigned char Info; struct _CameraPrivateLibrary { unsigned char model; unsigned char init_done; int can_do_capture; int blocksize; int nb_entries; int data_reg_opened; unsigned long total_data_in_camera; unsigned long data_to_read; unsigned char *data_cache; unsigned long bytes_read_from_camera; unsigned long bytes_put_away; Info table[0x4000]; }; int jl2005c_init (Camera *camera, GPPort *port, CameraPrivateLibrary *priv); int jl2005c_open_data_reg (Camera *camera, GPPort *port); int jl2005c_get_pic_data_size (CameraPrivateLibrary *priv, Info *table, int n); unsigned long jl2005c_get_start_of_photo (CameraPrivateLibrary *priv, Info *table, unsigned int n); int set_usb_in_endpoint (Camera *camera, int inep); int jl2005c_read_data (GPPort *port, char *data, int size); int jl2005c_reset (Camera *camera, GPPort *port); int jl2005c_delete_all (Camera *camera, GPPort *port); #endif libgphoto2-2.5.9/camlibs/sx330z/0000755000175000001440000000000012623156270013265 500000000000000libgphoto2-2.5.9/camlibs/sx330z/sx330z.h0000644000175000001440000000664612610415536014443 00000000000000/* sx330z.h * * Copyright 2002 Dominik Kuhlen * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* * GPhoto library for sx330z camera .... * first try 6/2002 by Dominik Kuhlen */ #include #include /* USB spec violating ! */ #define USB_REQ_RESERVED 0x04 /* is this correct ? */ #define USB_VENDOR_TRAVELER 0x0d96 /* this one should work */ #define USB_PRODUCT_SX330Z 0x3300 /* very experimental !!! * Please report if this works */ #define USB_PRODUCT_SX410Z 0x4100 /* same as MD6000 */ #define USB_PRODUCT_MD9700 0x4102 /* different requests (are there more ?) */ #define SX330Z_REQUEST_INIT 0x0001 /* not sure */ #define SX330Z_REQUEST_TOC_SIZE 0x0002 #define SX330Z_REQUEST_TOC 0x0003 #define SX330Z_REQUEST_IMAGE 0x0004 #define SX330Z_REQUEST_DELETE 0x0010 #define SX_THUMBNAIL 1 #define SX_IMAGE 0 /* 0x14 Bytes TOC entry */ struct traveler_toc_entry { char name[12]; /* SIMGxxxx.jpg (not 0 terminated) */ int32_t time; /* ? */ int32_t size; /* in bytes (%4096 is 0)*/ }; /* 0x200 Bytes TOC Page */ struct traveler_toc_page { int32_t data0; /* don't know ? (0) */ int32_t data1; /* don't know ? (0) */ int16_t always1; /* 1 ? */ int16_t numEntries; /* number of entries in TOC page (0 .. 25)*/ struct traveler_toc_entry entries[25]; /* entries */ }; struct _CameraPrivateLibrary { int usb_product; /* different Thumbnail size */ }; /* 0x20 Bytes Request */ struct traveler_req { int16_t always1; /* 0x01 */ int16_t requesttype; /* 0x0003 : TOC , 0x0004 Data */ int32_t data; /* dontknow */ int32_t timestamp; /* counter? only 24 bit */ int32_t offset; /* fileoffset */ int32_t size; /* transfer bolcksize */ char filename[12]; /* SIMG????jpg for Real image */ /* TIMG????jpg for Thumbnail */ }; /* 0x10 Bytes Acknowledge */ struct traveler_ack { int32_t always3; /* 3 */ int32_t timestamp; /* not sure */ int32_t size; /* for TOC and other transfers */ int32_t dontknow; /* always 0 */ }; /* * There's not a real initialization, * but ... */ int sx330z_init(Camera *camera,GPContext *context); /* * Get number of TOC pages */ int sx330z_get_toc_num_pages(Camera *camera,GPContext *context, int32_t *pages); /* * Get TOC */ int sx330z_get_toc_page(Camera *camera,GPContext *context,struct traveler_toc_page *toc,int page); /* * Load image data (thumbnail(exif) / image) */ int sx330z_get_data(Camera *camera,GPContext *context, const char* filename, char **,unsigned long int *size,int thumbnail); /* * Delete image */ int sx330z_delete_file(Camera *camera,GPContext *context,const char *filename); /* * Exit camera */ int camera_exit(Camera *camera, GPContext *context); libgphoto2-2.5.9/camlibs/sx330z/library.c0000644000175000001440000001762112610415536015023 00000000000000/* library.c * * Copyright 2002 Dominik Kuhlen * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include "sx330z.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "sx330z" #define TIMEOUT 2000 #define SX330Z_VERSION "0.1" #define SX330Z_LAST_MOD "02.07.2002" #define CR(res) { int r=(res);if (r<0) return (r);} /* * supported cameras : * - Traveler SX330z (Aldi cam) * - Other SX330z / SX3300z Models ? * please report if you have others that are working */ static const struct { char *model; int usb_vendor; int usb_product; } models[]= { {"Traveler:SX330z",USB_VENDOR_TRAVELER,USB_PRODUCT_SX330Z}, {"Maginon:SX330z",USB_VENDOR_TRAVELER,USB_PRODUCT_SX330Z}, {"Skanhex:SX-330z",USB_VENDOR_TRAVELER,USB_PRODUCT_SX330Z}, {"Medion:MD 9700",USB_VENDOR_TRAVELER,USB_PRODUCT_MD9700}, {"Jenoptik:JD-3300z3",USB_VENDOR_TRAVELER,USB_PRODUCT_SX330Z}, {"Traveler:SX410z",USB_VENDOR_TRAVELER,USB_PRODUCT_SX410Z}, {"Concord:EyeQ 4330",USB_VENDOR_TRAVELER,USB_PRODUCT_SX410Z}, {"Jenoptik:JD-4100z3",USB_VENDOR_TRAVELER,USB_PRODUCT_SX410Z}, {"Medion:MD 6000",USB_VENDOR_TRAVELER,USB_PRODUCT_SX410Z}, {"Maginon SX-410z",USB_VENDOR_TRAVELER,USB_PRODUCT_SX410Z}, {"Lifetec:LT 5995",USB_VENDOR_TRAVELER,USB_PRODUCT_SX410Z}, {NULL,0,0} }; /* * camera abilities */ int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for(i=0;models[i].model;i++) { memset(&a,0,sizeof(CameraAbilities)); strcpy(a.model,models[i].model); a.usb_vendor = models[i].usb_vendor; a.usb_product = models[i].usb_product; a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB; a.speed[0] = 0; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_PREVIEW| GP_FILE_OPERATION_DELETE| GP_FILE_OPERATION_EXIF; a.folder_operations = GP_FOLDER_OPERATION_NONE; CR(gp_abilities_list_append(list,a)); } /* all models... */ return(GP_OK); } /* camera_abilities */ /* * file list function */ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; CameraFileInfo info; int32_t tpages=0; int pcnt,ecnt; /* pagecounter, entrycounter*/ struct traveler_toc_page toc; int id; /* get number of TOC pages */ CR (sx330z_get_toc_num_pages (camera, context, &tpages)); /* Read the TOC pages */ id = gp_context_progress_start (context, tpages, _("Getting " "information on %i files..."), tpages); for (pcnt = 0; pcnt < tpages; pcnt++) { CR (sx330z_get_toc_page (camera, context, &toc, pcnt)); for (ecnt = 0; ecnt < toc.numEntries; ecnt++) { char fn[20]; info.audio.fields = GP_FILE_INFO_NONE; info.preview.fields = GP_FILE_INFO_TYPE; strcpy (info.preview.type, GP_MIME_EXIF); info.file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE | GP_FILE_INFO_PERMISSIONS; info.file.size = toc.entries[ecnt].size; info.file.permissions = GP_FILE_PERM_READ | GP_FILE_PERM_DELETE; strcpy (info.file.type,GP_MIME_JPEG); sprintf (fn, "%.12s", toc.entries[ecnt].name); /* * Append directly to the filesystem instead of to * the list, because we have additional information. */ gp_filesystem_append (camera->fs, folder, fn, context); gp_filesystem_set_info_noop (camera->fs, folder, fn, info, context); } gp_context_progress_update (context, id, pcnt); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); } gp_context_progress_stop (context, id); return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; char *data = NULL; unsigned long int size = 0; switch (type) { case GP_FILE_TYPE_EXIF: gp_file_set_mime_type (file, GP_MIME_RAW); CR (sx330z_get_data (camera, context, filename, &data, &size, SX_THUMBNAIL)); break; case GP_FILE_TYPE_RAW: case GP_FILE_TYPE_NORMAL: gp_file_set_mime_type (file, GP_MIME_JPEG); CR (sx330z_get_data (camera, context, filename, &data, &size, SX_IMAGE)); break; case GP_FILE_TYPE_PREVIEW: default: return (GP_ERROR_NOT_SUPPORTED); } gp_file_set_data_and_size (file, data, size); return (GP_OK); } /* * Delete file function (working ..) */ static int del_file_func(CameraFilesystem *fs,const char *folder,const char *filename, void *user_data,GPContext *context) { Camera *camera=user_data; /*int id;*/ if (strcmp(folder,"/")) return(GP_ERROR_DIRECTORY_NOT_FOUND); GP_DEBUG("Deleting : %s",filename); return(sx330z_delete_file(camera,context,filename)); } /* delete file func */ /* * Camera ID */ int camera_id(CameraText *id) { strcpy(id->text,"Traveler SX330z"); return (GP_OK); } /* camera id */ /* * Camera about */ static int camera_about(Camera *camera,CameraText *about,GPContext *context) { strcpy(about->text,_("(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n")); return(GP_OK); } /* camera about */ /* * camera_exit * release allocated memory */ int camera_exit(Camera *camera, GPContext *context) { if (camera->pl) free(camera->pl); return(GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = del_file_func }; /* * OK, lets get serious ! */ int camera_init(Camera *camera,GPContext *context) { GPPortSettings settings; CameraAbilities abilities; /* try to contact the camera ...*/ /*CR(gp_port_get_settings(camera->port,&settings));*/ camera->functions->about=camera_about; camera->functions->exit=camera_exit; gp_port_get_settings(camera->port,&settings); if (camera->port->type!=GP_PORT_USB) { gp_context_error(context,_("sx330z is USB only")); return(GP_ERROR_UNKNOWN_PORT); } /* GP_DEBUG("camera_init : in = %x",camera->port->settings.usb.inep);*/ CR(gp_port_set_settings(camera->port,settings)); CR(gp_port_set_timeout(camera->port,TIMEOUT)); CR(gp_filesystem_set_funcs(camera->fs, &fsfuncs, camera)); camera->pl=malloc(sizeof(CameraPrivateLibrary)); if (!camera->pl) return(GP_ERROR_NO_MEMORY); CR(gp_camera_get_abilities(camera, &abilities)); camera->pl->usb_product=abilities.usb_product; /* some models differ in Thumbnail size */ /* GP_DEBUG("sx330z Camera_init : sx init %04x",camera->pl->usb_product); */ return(sx330z_init(camera,context)); } /* camera init */ libgphoto2-2.5.9/camlibs/sx330z/sx330z.c0000644000175000001440000002013512610415536014423 00000000000000/* sx330z.c * * Copyright 2002 Dominik Kuhlen * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "sx330z.h" /* sprintf */ #include "stdio.h" /* malloc */ #include /* strncmp */ #include #include "gphoto2-endian.h" /*convert to correct endianness */ static int sx330z_fill_req(uint8_t *buf, struct traveler_req *req) { *((int16_t*)buf) = htole16(req->always1); buf += 2; *((int16_t*)buf) = htole16(req->requesttype); buf += 2; *((int32_t*)buf) = htole32(req->data); buf += 4; *((int32_t*)buf) = htole32(req->timestamp); buf += 4; *((int32_t*)buf) = htole32(req->offset); buf += 4; *((int32_t*)buf) = htole32(req->size); buf += 4; memcpy(buf, req->filename, 0x0c); return(GP_OK); } /* sx330z_fill_req */ /*convert to correct endianness */ static int sx330z_fill_ack(uint8_t *buf, struct traveler_ack *ack) { ack->always3 = le32toh(*(int32_t*)buf); buf += 4; ack->timestamp = le32toh(*(int32_t*)buf); buf += 4; ack->size = le32toh(*(uint32_t*)buf); buf += 4; ack->dontknow = le32toh(*(int32_t*)buf); buf += 4; return(GP_OK); } /* sx330z_fill_ack */ /*convert to correct endianness */ static int sx330z_fill_toc_page(uint8_t *buf, struct traveler_toc_page *toc) { int cnt; toc->data0 = le32toh(*(int32_t*)buf); buf += 4; toc->data1 = le32toh(*(int32_t*)buf); buf += 4; toc->always1 = le16toh(*(int16_t*)buf); buf += 2; toc->numEntries = le16toh(*(int16_t*)buf); buf += 2; for (cnt = 0;cnt < 25;cnt++) { memcpy(toc->entries[cnt].name,buf,12); buf += 12; toc->entries[cnt].time = le32toh(*(int32_t*)buf); buf += 4; toc->entries[cnt].size = le32toh(*(int32_t*)buf); buf += 4; } return(GP_OK); } /* sx330z_fill_toc_page */ /* * SX330z initialization * (not really an initialization, but lets check if we have contact ) */ int sx330z_init(Camera *camera, GPContext *context) { /* struct traveler_ack ack;*/ uint8_t trxbuf[0x10]; int ret; ret = gp_port_usb_msg_read(camera->port, USB_REQ_RESERVED, SX330Z_REQUEST_INIT, 0, (char *)trxbuf, 0x10); if (ret != 0x10) return(GP_ERROR); /* more specific about error ? */ return(GP_OK); } /* sx330z_init */ /* * Read block described by req */ static int sx330z_read_block(Camera *camera, GPContext *context, struct traveler_req *req, uint8_t *buf) { int ret; uint8_t trxbuf[0x20]; /* 1. send request */ sx330z_fill_req(trxbuf, req); ret = gp_port_usb_msg_write(camera->port, USB_REQ_RESERVED, req->requesttype, 0, (char *)trxbuf, 0x20); if (ret != 0x20) return(GP_ERROR_IO_WRITE); /* 2. read data */ ret = gp_port_read(camera->port, (char *)buf, req->size); if (ret != req->size)return(GP_ERROR_IO_READ); /* 3. read Ack */ ret = gp_port_read(camera->port, (char *)trxbuf, 0x10); if (ret != 0x10) return(GP_ERROR); /* FIXME : Security check ???*/ return(GP_OK); } /* read block */ /* * Get TOC size */ int sx330z_get_toc_num_pages(Camera *camera, GPContext *context, int32_t *pages) { struct traveler_ack ack; uint8_t trxbuf[0x10]; int ret; ret=gp_port_usb_msg_read(camera->port, USB_REQ_RESERVED,SX330Z_REQUEST_TOC_SIZE, 0, (char *)trxbuf, 0x10); if (ret != 0x10) return(GP_ERROR); sx330z_fill_ack(trxbuf, &ack); /* convert endianness */ *pages = ack.size / 0x200 + 1; /* TOC Pages */ /* bug in camera ??*/ if (ack.size == 0x200) (*pages)--; if ((ack.size > 0x200)&& (((ack.size - 0xc) % 0x200) == 0)) (*pages)--; return(GP_OK); } /* get toc size */ /* * Get TOC * Read a single TOC page * specified by "page" */ int sx330z_get_toc_page(Camera *camera, GPContext *context, struct traveler_toc_page *TOC, int page) { int ret; struct traveler_req req; uint8_t tocbuf[0x200]; req.always1 = 1; req.requesttype = SX330Z_REQUEST_TOC; /* 0x03 */ req.offset = 0x200 * page; /* offset */ req.timestamp = 0x123; /* ? */ req.size = 0x200; /* 512 Bytes / tocpage*/ req.data = 0; /* ? */ memset(req.filename, 0, 12); /* ? */ ret=sx330z_read_block(camera,context,&req,tocbuf); if (ret<0) return(ret); sx330z_fill_toc_page(tocbuf,TOC); /* convert */ /* TOC sanity check */ if ((TOC->numEntries < 0) || (TOC->numEntries > 25)) return(GP_ERROR_CORRUPTED_DATA); return(GP_OK); } /* get toc */ /* * get data * could be Image / Thumbnail */ int sx330z_get_data(Camera *camera, GPContext *context, const char *filename, char **data, unsigned long int *size, int thumbnail) { uint8_t *dptr; int pages, cnt, ret; struct traveler_req req; int found; int tocpages, tcnt, ecnt; struct traveler_toc_page toc; int id;/* progress ? */ pages = 0; found = 0; memcpy(req.filename, filename, 12); if (thumbnail == SX_THUMBNAIL) { if (camera->pl->usb_product == USB_PRODUCT_MD9700) pages = 7; /* first 28k only*/ else pages = 5; /* first 20k only */ req.filename[0] = 'T'; /* 'T'humbnail indicator ?*/ id = gp_context_progress_start(context, 0x1000 * pages, "Thumbnail %.4s _", &filename[4]); } else { /* I don't like this solution ... */ ret = sx330z_get_toc_num_pages(camera, context, &tocpages); /* number of toc pages */ if (ret != GP_OK) return(ret); for (tcnt = 0;(tcnt < tocpages) && (!found);tcnt++) { ret = sx330z_get_toc_page(camera, context, &toc, tcnt); for (ecnt = 0;ecnt < toc.numEntries;ecnt++) { if (strncmp(toc.entries[ecnt].name, filename,8) == 0) { found = 1; *size = toc.entries[ecnt].size; break; } } /* */ } /* load all toc pages */ /*return(GP_ERROR);*/ if (!found) return(GP_ERROR); if (((*size % 4096) != 0) || (*size == 0)) return(GP_ERROR); /* sanity check */ pages = *size / 0x1000; id = gp_context_progress_start(context, *size, "Picture %.4s _", &filename[4]); } /* real image */ *size = 4096 * pages; *data = malloc(*size); dptr = (uint8_t *)*data; /* load all parts */ for (cnt = 0;cnt < pages;cnt++) { req.always1 = 1; req.requesttype = SX330Z_REQUEST_IMAGE; /* Imagedata */ req.offset = cnt * 0x1000; req.size = 0x1000; req.timestamp = 0x0 + cnt * 0x41; /* timestamp (doesn't matter)?*/ req.data = 0; gp_context_progress_update(context, id, (cnt + 1) * 0x1000); sx330z_read_block(camera,context,&req,dptr); /* read data */ dptr += 4096; }/* download imageparts */ gp_context_progress_stop(context,id); return(GP_OK); } /* sx330z_get_data */ /* * delete file */ int sx330z_delete_file(Camera *camera, GPContext *context, const char *filename) { struct traveler_req req; /* struct traveler_ack ack;*/ uint8_t trxbuf[0x20]; int ret, id; req.always1 = 1; req.requesttype = SX330Z_REQUEST_DELETE; /* Delete */ req.offset = 0x0; req.size = 0x000; req.timestamp = 0x0; /* timestamp (doesn't matter)?*/ req.data = 0; sprintf(req.filename, "%.8s", filename); sprintf(&req.filename[8], "jpg"); /* discard . */ id = gp_context_progress_start(context, 2, "Deleting %s", filename); /* start context */ /* send delete request */ sx330z_fill_req(trxbuf,&req); ret = gp_port_usb_msg_write(camera->port, USB_REQ_RESERVED, SX330Z_REQUEST_DELETE, 0, (char *)trxbuf, 0x20); if (ret != 0x20) return(GP_ERROR); /* simple error handling */ gp_context_progress_update(context, id, 1); /* update context */ /* read 16 Byte acknowledge packet */ ret = gp_port_usb_msg_read(camera->port, USB_REQ_RESERVED, SX330Z_REQUEST_DELETE, 0, (char *)trxbuf, 0x10); if (ret != 0x10) return(GP_ERROR); gp_context_progress_stop(context, id); /* stop context */ return(GP_OK); } /* sx330z delete file */ libgphoto2-2.5.9/camlibs/sx330z/Makefile-files0000644000175000001440000000037612561423352015752 00000000000000EXTRA_LTLIBRARIES += sx330z.la EXTRA_DIST += sx330z/ChangeLog sx330z_la_SOURCES = sx330z/library.c sx330z/sx330z.c sx330z/sx330z.h sx330z_la_LDFLAGS = $(camlib_ldflags) sx330z_la_DEPENDENCIES = $(camlib_dependencies) sx330z_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/sx330z/ChangeLog0000644000175000001440000000241412557123324014760 000000000000002005-01-21 Hubert Figuiere * library.c: Added Lifetec LT 5995 2004-01-07 Hubert Figuiere * library.c: Added Maginon SX-410z (reported by style(at)wtal.de) 2003-06-02 Dominik Kuhlen * Fixed endianness problems (for BE platforms) 2003-02-09 Dominik Kuhlen * Thumbnailhandling for MD6000 (and MD9700) fixed * Changelog: Date fixed :-) (2002-01-15 -> 2003-01-15) 2003-01-15 Marcus Meissner * Added Medion MD 6000 (same as JD 4100z3) and Jenoptik JD 4100z3 (verified usb ids by downloading driver). 2003-01-10 Marcus Meissner * Added Concord EyeQ 4330 (has same id as Traveller 410z), reported by Christian Boltz . 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 2002-09-12 Marcus Meissner * Added Medion 9700 as submitted by Arjan van de Ven 2002-07-05 Lutz Müller Checked into CVS. * library.c: Fixed compile warnings, fixed file_list_func. 2002-06-23 Dominik Kuhlen * sx330z.[c,h]: started. * Experimental: Please send reports. libgphoto2-2.5.9/camlibs/minolta/0000755000175000001440000000000012623156267013664 500000000000000libgphoto2-2.5.9/camlibs/minolta/NEWER_MINOLTAS0000644000175000001440000000513612557123324015714 00000000000000UPDATE: Here is an update about what is written below. Most recent Minolta digital camera now use USB Mass Storage device protocol for USB connectivity. That means that they can be mounted as a disk device within the OS without additionnal support (Linux 2.4.x, *BSD, etc.). This is a great step forward to having these camera universally supported without requiring complex and non-standard device driver support. This list includes Dimage 5, Dimage 7, Dimage X and probably many other. I recommend to consult for an up to date compatibility chart. The bottom line, the text below is probably now really obsolete. -- Hubert Figuiere - June 19th 2002 ----------------------------------------------------------------------------- Below is a message from Minolta regarding the dim possibility of them releasing the protocols for their newer cameras. In short, the official line is to buy a flash reader when not using a supported system. Date: Tue, 02 Jan 2001 15:42:42 "GMT" From: MinoltaUSA To: Customer Service Subject: FAQs Dear Customer, The FAQ you submitted on 12/28/00 has been resolved. Question: Hello, Approximately eighteen months ago, I contacted Minolta for information regarding the serial transfer protocol for the Dimage V, with the intent of writing a program that would work under Linux and other Unix variants. Minolta was kind enough to provide this to me, after I had signed an NDA, but was told that I could "share this information freely with the Linux community". Since then, I have written more than one program to access the camera, and my code has since been included in a very popular Linux program called gphoto, which aims to support cameras from many different vendors. More information on gphoto is available at http://www.gphoto.org/ . As I am the only developer currently supporting a Minolta driver for gphoto, I am often contacted regarding the newer Minolta cameras. The most common question I receive is if the same serial driver will work on the newer models as on the Dimage V. I don not believe this to be the case, but would be interested in finding out an official answer. Additionally, would Minolta be willing to release the serial and USB image transfer specifications for any of the other camera models, with the same caveats and conditions as before? Thanks, Gus Answer: We recommend the use of Compact Flash Card Readers for acquiring images from all of our newer digital cameras on incompatible systems. libgphoto2-2.5.9/camlibs/minolta/Makefile-files0000644000175000001440000000004512561423351016333 00000000000000EXTRA_DIST += minolta/NEWER_MINOLTAS libgphoto2-2.5.9/camlibs/minolta/dimagev/0000755000175000001440000000000012623156267015300 500000000000000libgphoto2-2.5.9/camlibs/minolta/dimagev/upload.c0000644000175000001440000001402012610415536016636 00000000000000/********************************************************************** * Minolta Dimage V digital camera communication library * * Copyright 2000,2001 Gus Hartmann * * * * 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 * * **********************************************************************/ /* $Id$ */ #include "config.h" #include "dimagev.h" #define GP_MODULE "dimagev" int dimagev_put_file(dimagev_t* dimagev, CameraFile *file) { unsigned char total_packets= (unsigned char) 0, sent_packets= (unsigned char) 0; int left_to_send=0; const char *data; unsigned long int size; dimagev_packet *p; unsigned char char_buffer, command_buffer[3], *packet_buffer; if ( dimagev == NULL ) { GP_DEBUG( "dimagev_put_file::null camera device"); return GP_ERROR_BAD_PARAMETERS; } if ( dimagev->data->host_mode != (unsigned char) 1 ) { dimagev->data->host_mode = (unsigned char) 1; if ( dimagev_send_data(dimagev) < GP_OK ) { GP_DEBUG( "dimagev_put_file::unable to set host mode"); return GP_ERROR_IO; } } gp_file_get_data_and_size (file, &data, &size); /* First make the command packet. */ command_buffer[0] = 0x0e; if ( ( p = dimagev_make_packet(command_buffer, 1, 0) ) == NULL ) { GP_DEBUG( "dimagev_put_file::unable to allocate command packet"); return GP_ERROR_NO_MEMORY; } if ( gp_port_write(dimagev->dev, (char *)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_put_file::unable to send command packet"); free(p); return GP_ERROR_IO; } else if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_put_file::no response from camera"); free(p); return GP_ERROR_IO; } free(p); switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_put_file::camera did not acknowledge transmission"); /* Since we haven't sent anything, keep trying until we get a cancel. */ return dimagev_put_file(dimagev, file); /* return GP_ERROR_IO;*/ case DIMAGEV_CAN: GP_DEBUG( "dimagev_put_file::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_put_file::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } /* Now start chopping up the picture and sending it over. */ total_packets = ( size / 993 ) +1; /* The first packet is a special case. */ if ( ( packet_buffer = malloc((size_t)993)) == NULL ) { GP_DEBUG( "dimagev_put_file::unable to allocate packet buffer"); return GP_ERROR_NO_MEMORY; } packet_buffer[0]= total_packets; memcpy(&(packet_buffer[1]), data, (size_t) 992); if ( ( p = dimagev_make_packet(packet_buffer, 993, 0) ) == NULL ) { GP_DEBUG( "dimagev_put_file::unable to allocate command packet"); free(packet_buffer); return GP_ERROR_NO_MEMORY; } free(packet_buffer); if ( gp_port_write(dimagev->dev, (char *)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_put_file::unable to send data packet"); free(p); return GP_ERROR_IO; } else if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_put_file::no response from camera"); free(p); return GP_ERROR_IO; } free(p); switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_put_file::camera did not acknowledge transmission"); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_put_file::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_put_file::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } left_to_send = ( size - 992 ); for ( sent_packets = (unsigned char) 1 ; sent_packets < total_packets ; sent_packets++ ) { if ( left_to_send > 993 ) { if ( ( p = dimagev_make_packet((unsigned char *)&(data[(sent_packets * 993) - 1]), 993, sent_packets) ) == NULL ) { GP_DEBUG( "dimagev_put_file::unable to allocate data packet"); free(p); return GP_ERROR_NO_MEMORY; } left_to_send-=993; } else { if ( ( p = dimagev_make_packet((unsigned char *)&(data[((sent_packets * 993) - 1)]), left_to_send, sent_packets) ) == NULL ) { GP_DEBUG( "dimagev_put_file::unable to allocate data packet"); return GP_ERROR_NO_MEMORY; } } if ( gp_port_write(dimagev->dev, (char *)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_put_file::unable to send data packet"); free(p); return GP_ERROR_IO; } else if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_put_file::no response from camera"); free(p); return GP_ERROR_IO; } free(p); switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_put_file::camera did not acknowledge transmission"); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_put_file::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_put_file::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } } return GP_OK; } libgphoto2-2.5.9/camlibs/minolta/dimagev/capture.c0000644000175000001440000001313012610415536017016 00000000000000/********************************************************************** * Minolta Dimage V digital camera communication library * * Copyright 2000,2001 Gus Hartmann * * * * 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 * * **********************************************************************/ /* $Id$ */ #include "config.h" #include "dimagev.h" #define GP_MODULE "dimagev" /* This function handles sending the camera command to take a new picture, and the Dimage V automatically stores it in the lowest number available, which is the current number of images plus one. Since gphoto2 assumes that images can be captured without being saved on the camera first, camera_capture() is actually made up of a few steps, the primary ones being dimagev_shutter(), dimagev_get_picture(), and dimagev_delete_picture(). */ int dimagev_shutter(dimagev_t *dimagev) { dimagev_packet *p, *raw; unsigned char char_buffer; /* Check the device. */ if ( dimagev->dev == NULL ) { GP_DEBUG( "dimagev_shutter::device not valid"); return GP_ERROR_BAD_PARAMETERS; } /* Verify that we can write to the memory card. */ if ( dimagev->status->card_status != (unsigned char) 0 ) { GP_DEBUG( "dimagev_shutter::unable to write to memory card - check status"); return GP_ERROR; } /* Make sure we're in record mode and in host mode. */ dimagev->data->play_rec_mode = (unsigned char) 1; dimagev->data->host_mode = (unsigned char) 1; /* Make sure we can set the data into the camera. */ if ( dimagev_send_data(dimagev) < GP_OK ) { GP_DEBUG( "dimagev_shutter::unable to set host mode or record mode"); return GP_ERROR; } /* Maybe reduce this later? */ if ( sleep(2) != 0 ) { GP_DEBUG( "dimagev_shutter::sleep() returned non-zero value"); } /* Let's say hello and get the current status. */ if ( ( p = dimagev_make_packet(DIMAGEV_SHUTTER, 1, 0)) == NULL ) { GP_DEBUG( "dimagev_shutter::unable to allocate packet"); return GP_ERROR_NO_MEMORY; } if ( gp_port_write(dimagev->dev, (char *)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_shutter::unable to write packet"); if ( p != NULL ) { free(p); } return GP_ERROR_IO; } if ( p != NULL ) { free(p); } if ( sleep(1) != 0 ) { GP_DEBUG( "dimagev_shutter::sleep() returned non-zero value"); } if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_shutter::no response from camera"); return GP_ERROR_IO; } switch ( char_buffer ) { case DIMAGEV_ACK: /* Sleep for a few seconds while the image is written to flash. */ if ( sleep(5) != 0 ) { GP_DEBUG( "dimagev_shutter::sleep() returned non-zero value"); } break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_shutter::camera did not acknowledge transmission"); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_shutter::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_shutter::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } if ( sleep(1) != 0 ) { GP_DEBUG( "dimagev_shutter::sleep() returned non-zero value"); } if ( ( p = dimagev_read_packet(dimagev) ) == NULL ) { GP_DEBUG( "dimagev_shutter::unable to read packet"); return GP_ERROR_IO; } if ( ( raw = dimagev_strip_packet(p) ) == NULL ) { GP_DEBUG( "dimagev_shutter::unable to strip data packet"); free(p); return GP_ERROR; } free(p); if ( raw->buffer[0] != (unsigned char) 0 ) { GP_DEBUG( "dimagev_shutter::camera returned error code"); free(raw); return GP_ERROR; } free(raw); if ( sleep(1) != 0 ) { GP_DEBUG( "dimagev_shutter::sleep() returned non-zero value"); } char_buffer = DIMAGEV_EOT; if ( gp_port_write(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_shutter::unable to send EOT"); return GP_ERROR_IO; } if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_shutter::no response from camera"); return GP_ERROR_IO; } switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_shutter::camera did not acknowledge transmission"); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_shutter::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_shutter::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } dimagev->data->play_rec_mode = (unsigned char) 0; if ( dimagev_send_data(dimagev) < GP_OK ) { GP_DEBUG( "dimagev_shutter::unable to set host mode or record mode - non-fatal!"); /* return GP_ERROR;*/ } return GP_OK; } libgphoto2-2.5.9/camlibs/minolta/dimagev/download.c0000644000175000001440000002425612610415536017175 00000000000000/********************************************************************** * Minolta Dimage V digital camera communication library * * Copyright 2000,2001 Gus Hartmann * * * * 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 * * **********************************************************************/ /* $Id$ */ #include "config.h" #include "dimagev.h" #define GP_MODULE "dimagev" int dimagev_get_picture(dimagev_t *dimagev, int file_number, CameraFile *file) { int total_packets, i; unsigned long size = 0; dimagev_packet *p, *r; unsigned char char_buffer, command_buffer[3]; char *data; #ifdef _gphoto_exif_ exifparser exifdat; #endif if ( dimagev->data->host_mode != (unsigned char) 1 ) { dimagev->data->host_mode = (unsigned char) 1; if ( dimagev_send_data(dimagev) < GP_OK ) { GP_DEBUG( "dimagev_get_picture::unable to set host mode"); return GP_ERROR_IO; } } GP_DEBUG( "dimagev_get_picture::file_number is %d", file_number); /* Maybe check if it exists? Check the file type? */ /* First make the command packet. */ command_buffer[0] = 0x04; command_buffer[1] = (unsigned char)( file_number / 256 ); command_buffer[2] = (unsigned char)( file_number % 256 ); if ( ( p = dimagev_make_packet(command_buffer, 3, 0) ) == NULL ) { GP_DEBUG( "dimagev_get_picture::unable to allocate command packet"); return GP_ERROR_NO_MEMORY; } if ( gp_port_write(dimagev->dev, (char *)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_get_picture::unable to send set_data packet"); free(p); return GP_ERROR_IO; } else if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_picture::no response from camera"); free(p); return GP_ERROR_IO; } free(p); switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_get_picture::camera did not acknowledge transmission"); return dimagev_get_picture(dimagev, file_number, file); /* return GP_ERROR_IO;*/ case DIMAGEV_CAN: GP_DEBUG( "dimagev_get_picture::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_get_picture::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } if ( ( p = dimagev_read_packet(dimagev) ) == NULL ) { GP_DEBUG( "dimagev_get_picture::unable to read packet"); return GP_ERROR_IO; } if ( ( r = dimagev_strip_packet(p) ) == NULL ) { GP_DEBUG( "dimagev_get_picture::unable to strip packet"); free(p); return GP_ERROR_NO_MEMORY; } free(p); total_packets = (int) r->buffer[0]; /* Allocate an extra byte just in case. */ if ( ( data = malloc((size_t)((993 * total_packets) + 1)) ) == NULL ) { GP_DEBUG( "dimagev_get_picture::unable to allocate buffer for file"); free(r); return GP_ERROR_NO_MEMORY; } memcpy(data, &(r->buffer[1]), (size_t) r->length ); size += ( r->length - 2 ); free(r); for ( i = 0 ; i < ( total_packets -1 ) ; i++ ) { char_buffer=DIMAGEV_ACK; if ( gp_port_write(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_picture::unable to send ACK"); free(data); return GP_ERROR_IO; } if ( ( p = dimagev_read_packet(dimagev) ) == NULL ) { /* GP_DEBUG( "dimagev_get_picture::unable to read packet"); return GP_ERROR_IO; */ GP_DEBUG( "dimagev_get_picture::sending NAK to get retry"); char_buffer=DIMAGEV_NAK; if ( gp_port_write(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_picture::unable to send NAK"); free(data); return GP_ERROR_IO; } if ( ( p = dimagev_read_packet(dimagev) ) == NULL ) { GP_DEBUG( "dimagev_get_picture::unable to read packet"); free(data); return GP_ERROR_IO; } } if ( ( r = dimagev_strip_packet(p) ) == NULL ) { GP_DEBUG( "dimagev_get_picture::unable to strip packet"); free(data); free(p); return GP_ERROR_NO_MEMORY; } free(p); memcpy(&( data[ ( size + 1) ] ), r->buffer, (size_t) r->length ); size += r->length; free(r); } size++; char_buffer=DIMAGEV_EOT; if ( gp_port_write(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_picture::unable to send ACK"); free(data); return GP_ERROR_IO; } if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_picture::no response from camera"); free(data); return GP_ERROR_IO; } switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_get_picture::camera did not acknowledge transmission"); free(data); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_get_picture::camera cancels transmission"); free(data); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_get_picture::camera responded with unknown value %x", char_buffer); free(data); return GP_ERROR_IO; } #ifdef _gphoto_exif_ exifdat.header = (unsigned char *)data; exifdat.data = (unsigned char *)data + 12 ; if ( gpi_exif_stat(&exifdat) != 0 ) { GP_DEBUG( "dimagev_get_picture::unable to stat EXIF tags"); free(data); return GP_OK; } /* gpi_exif_dump(&exifdat); */ #endif gp_file_set_data_and_size (file, data, size); return GP_OK; } int dimagev_get_thumbnail(dimagev_t *dimagev, int file_number, CameraFile *file) { dimagev_packet *p, *r; unsigned char char_buffer, command_buffer[3], *ycrcb_data; char *data; long int size = 0; if ( dimagev->data->host_mode != (unsigned char) 1 ) { dimagev->data->host_mode = (unsigned char) 1; if ( dimagev_send_data(dimagev) < GP_OK ) { GP_DEBUG( "dimagev_get_thumbnail::unable to set host mode"); return GP_ERROR_IO; } } /* First make the command packet. */ command_buffer[0] = 0x0d; command_buffer[1] = (unsigned char)( file_number / 256 ); command_buffer[2] = (unsigned char)( file_number % 256 ); if ( ( p = dimagev_make_packet(command_buffer, 3, 0) ) == NULL ) { GP_DEBUG( "dimagev_get_thumbnail::unable to allocate command packet"); return GP_ERROR_NO_MEMORY; } if ( gp_port_write(dimagev->dev, (char *)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_get_thumbnail::unable to send set_data packet"); free(p); return GP_ERROR_IO; } else if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_thumbnail::no response from camera"); free(p); return GP_ERROR_IO; } free(p); switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_get_thumbnail::camera did not acknowledge transmission"); return dimagev_get_thumbnail(dimagev, file_number, file); /* return GP_ERROR_IO;*/ case DIMAGEV_CAN: GP_DEBUG( "dimagev_get_thumbnail::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_get_thumbnail::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } if ( ( p = dimagev_read_packet(dimagev) ) == NULL ) { GP_DEBUG( "dimagev_get_thumbnail::unable to read packet"); return GP_ERROR_IO; } if ( ( r = dimagev_strip_packet(p) ) == NULL ) { GP_DEBUG( "dimagev_get_thumbnail::unable to strip packet"); free(p); return GP_ERROR_NO_MEMORY; } free(p); /* Unlike normal images, we are guaranteed 9600 bytes *exactly*. */ /* Allocate an extra byte just in case. */ if ( ( ycrcb_data = malloc(9600) ) == NULL ) { GP_DEBUG( "dimagev_get_thumbnail::unable to allocate buffer for file"); free(r); return GP_ERROR_NO_MEMORY; } memcpy(ycrcb_data, r->buffer, (size_t) r->length ); size += r->length - 1 ; free(r); while ( size < 9599 ) { char_buffer=DIMAGEV_ACK; if ( gp_port_write(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_thumbnail::unable to send ACK"); free(ycrcb_data); return GP_ERROR_IO; } if ( ( p = dimagev_read_packet(dimagev) ) == NULL ) { GP_DEBUG( "dimagev_get_thumbnail::unable to read packet"); free(ycrcb_data); return GP_ERROR_IO; } if ( ( r = dimagev_strip_packet(p) ) == NULL ) { GP_DEBUG( "dimagev_get_thumbnail::unable to strip packet"); free(p); free(ycrcb_data); return GP_ERROR_NO_MEMORY; } free(p); memcpy(&( ycrcb_data[ ( size + 1) ] ), r->buffer, (size_t) r->length ); size += r->length; free(r); GP_DEBUG( "dimagev_get_thumbnail::current file size is %ld", size); } size++; char_buffer=DIMAGEV_EOT; if ( gp_port_write(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_thumbnail::unable to send ACK"); free(ycrcb_data); return GP_ERROR_IO; } if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_thumbnail::no response from camera"); free(ycrcb_data); return GP_ERROR_IO; } switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_get_thumbnail::camera did not acknowledge transmission"); free(ycrcb_data); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_get_thumbnail::camera cancels transmission"); free(ycrcb_data); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_get_thumbnail::camera responded with unknown value %x", char_buffer); free(ycrcb_data); return GP_ERROR_IO; } data = (char *)dimagev_ycbcr_to_ppm(ycrcb_data); size = 14413; gp_file_set_data_and_size (file, data, size); return GP_OK; } libgphoto2-2.5.9/camlibs/minolta/dimagev/delete.c0000644000175000001440000001673212610415536016630 00000000000000/********************************************************************** * Minolta Dimage V digital camera communication library * * Copyright 2000,2001 Gus Hartmann * * * * 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 * * **********************************************************************/ /* $Id$ */ #include "config.h" #include "dimagev.h" #define GP_MODULE "dimagev" int dimagev_delete_picture(dimagev_t *dimagev, int file_number) { dimagev_packet *p, *raw; unsigned char command_buffer[3]; char char_buffer = 0; if ( dimagev == NULL ) { GP_DEBUG( "dimagev_delete_picture::unable to use NULL dimagev_t"); return GP_ERROR_BAD_PARAMETERS; } dimagev_dump_camera_status(dimagev->status); /* An image can only be deleted if the card is normal or full. */ if ( dimagev->status->card_status > (unsigned char) 1 ) { GP_DEBUG( "dimagev_delete_picture::memory card does not permit deletion"); return GP_ERROR; } if ( dimagev->data->host_mode != (unsigned char) 1 ) { dimagev->data->host_mode = (unsigned char) 1; if ( dimagev_send_data(dimagev) < GP_OK ) { GP_DEBUG( "dimagev_delete_picture::unable to set host mode"); return GP_ERROR_IO; } } /* First make the command packet. */ command_buffer[0] = 0x05; command_buffer[1] = (unsigned char)( file_number / 256 ); command_buffer[2] = (unsigned char)( file_number % 256 ); if ( ( p = dimagev_make_packet(command_buffer, 3, 0) ) == NULL ) { GP_DEBUG( "dimagev_delete_picture::unable to allocate command packet"); return GP_ERROR_NO_MEMORY; } if ( gp_port_write(dimagev->dev, (char *)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_delete_picture::unable to send set_data packet"); free(p); return GP_ERROR_IO; } else if ( gp_port_read(dimagev->dev, &char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_delete_picture::no response from camera"); free(p); return GP_ERROR_IO; } free(p); switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_delete_picture::camera did not acknowledge transmission"); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_delete_picture::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_delete_picture::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } if ( ( p = dimagev_read_packet(dimagev) ) == NULL ) { GP_DEBUG( "dimagev_delete_picture::unable to read packet"); return GP_ERROR_IO; } if ( ( raw = dimagev_strip_packet(p) ) == NULL ) { GP_DEBUG( "dimagev_delete_picture::unable to strip packet"); free(p); return GP_ERROR; } free(p); if ( raw->buffer[0] != (unsigned char) 0 ) { GP_DEBUG( "dimagev_delete_picture::delete returned error code"); free(raw); return GP_ERROR_NO_MEMORY; } free(raw); char_buffer=DIMAGEV_EOT; if ( gp_port_write(dimagev->dev, &char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_delete_picture::unable to send ACK"); return GP_ERROR_IO; } if ( gp_port_read(dimagev->dev, &char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_delete_picture::no response from camera"); return GP_ERROR_IO; } switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_delete_picture::camera did not acknowledge transmission"); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_delete_picture::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_delete_picture::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } return GP_OK; } int dimagev_delete_all(dimagev_t *dimagev) { dimagev_packet *p, *raw; unsigned char command_buffer[3]; char char_buffer; if ( dimagev == NULL ) { GP_DEBUG( "dimagev_delete_all::unable to use NULL dimagev_t"); return GP_ERROR_BAD_PARAMETERS; } dimagev_dump_camera_status(dimagev->status); /* An image can only be deleted if the card is normal or full. */ if ( dimagev->status->card_status > (unsigned char) 1 ) { GP_DEBUG( "dimagev_delete_all::memory card does not permit deletion"); return GP_ERROR; } if ( dimagev->data->host_mode != (unsigned char) 1 ) { dimagev->data->host_mode = (unsigned char) 1; if ( dimagev_send_data(dimagev) < GP_OK ) { GP_DEBUG( "dimagev_delete_all::unable to set host mode"); return GP_ERROR_IO; } } /* First make the command packet. */ command_buffer[0] = 0x06; if ( ( p = dimagev_make_packet(command_buffer, 1, 0) ) == NULL ) { GP_DEBUG( "dimagev_delete_all::unable to allocate command packet"); return GP_ERROR_IO; } if ( gp_port_write(dimagev->dev, (char *)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_delete_all::unable to send set_data packet"); free(p); return GP_ERROR_IO; } else if ( gp_port_read(dimagev->dev, &char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_delete_all::no response from camera"); free(p); return GP_ERROR_IO; } free(p); switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_delete_all::camera did not acknowledge transmission"); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_delete_all::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_delete_all::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } if ( ( p = dimagev_read_packet(dimagev) ) == NULL ) { GP_DEBUG( "dimagev_delete_all::unable to read packet"); return GP_ERROR_IO; } if ( ( raw = dimagev_strip_packet(p) ) == NULL ) { GP_DEBUG( "dimagev_delete_all::unable to strip packet"); free(p); return GP_ERROR_NO_MEMORY; } free(p); if ( raw->buffer[0] != (unsigned char) 0 ) { GP_DEBUG( "dimagev_delete_all::delete returned error code"); free(raw); return GP_ERROR; } free(raw); char_buffer=DIMAGEV_EOT; if ( gp_port_write(dimagev->dev, &char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_delete_all::unable to send ACK"); return GP_ERROR_IO; } if ( gp_port_read(dimagev->dev, &char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_delete_all::no response from camera"); return GP_ERROR_IO; } switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_delete_all::camera did not acknowledge transmission"); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_delete_all::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_delete_all::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } return GP_OK; } libgphoto2-2.5.9/camlibs/minolta/dimagev/README.minolta-dimagev0000644000175000001440000000554212561423351021152 00000000000000This is a fresh driver for the Minolta Dimage V camera, which has since been discontinued by Minolta. This driver contains no code form my earlier efforts. The assistance of Minolta was very helpful in writing this driver; I was given a copy of the specification and told that I could "share it with the Linux community". I am interpreting this "sharing" as the GNU GPL. Minolta takes no responsibility for the information they provided me, which is perfectly fair. Please see the file COPYING for more information. Copies of the Dimage V transfer specification are available under the aforementioned "share" clause; I will mail them globally, and fax them anywhere in the US or Canada. A lot of the information is in the code itself, but sometimes the real spec is nice so readers can find my bugs. Minolta has made it clear that they do not wish to release further protocols, and recommend that users of unsupported systems purchase SmartMedia readers to transfer images. This library is far from complete. There are plenty of places where better sanity checking could be done. I will continue to work on it until I buy a newer camera ;> Notes on specific functions: The capture function takes a picture, downloads it, and then deletes it. This image is always named dv00000.jpg, since that holds with the naming convention for the rest of the pictures, and simultaneously cannot be a valid name for an image retrieved from the camera. Sometimes the deletion of an image will fail after it has been retrieved; since reporting this error would mean the entire capture process failed, I merely print a message indicating which image needs to be deleted. This is, in my opinion, preferable to losing the picture entirely. The camera_init() function attempts to set the camera clock to the current system time. If it fails, the init function can still succeed; I do not believe that failing to set the clock should mean failure to initialize. The same is true of the camera_exit() function. At long last, the preview thumbnails finally work! The strange distortions that were occurring previously have been eliminated, and I have been able to retrieve accurate thumbnails reliably for the last several hundred images. This puts this driver as the first that I know of that handles the Dimage V thumbnail format; there were other programs to connect, but all (including my earlier attempts) just gave up on the retrieved data. More information on the file format can be obtained in the code itself. Deleting all images is now implemented correctly. This beats iterating accross all of them, hands down. Here are the pinouts for the serial cable: _____________ /-----\ \ 5 4 3 2 1 / / X X X \ \ 9 8 7 6 / | 2 5 3 | --------- -| 8 7 |- ----- --Gus Hartmann, libgphoto2-2.5.9/camlibs/minolta/dimagev/info.c0000644000175000001440000001314612610415536016315 00000000000000/********************************************************************** * Minolta Dimage V digital camera communication library * * Copyright 2000,2001 Gus Hartmann * * * * 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 * * **********************************************************************/ /* $Id$ */ #include "config.h" #include "dimagev.h" #define GP_MODULE "dimagev" /* This is the parent function, who calls most of the functions below. It returns GP_ERROR if it cannot get the camera data, and GP_OK otherwise. The subroutines will print out more detained information should they fail. */ int dimagev_get_camera_info(dimagev_t *dimagev) { dimagev_packet *p, *raw; unsigned char char_buffer; /* Check the device. */ if ( dimagev->dev == NULL ) { GP_DEBUG( "dimagev_get_camera_info::device not valid"); return GP_ERROR_BAD_PARAMETERS; } /* Make sure that the old info struct is fred, and allocate a new one. */ /* if ( dimagev->info != NULL ) { free(dimagev->info); } */ /* Let's say hello and get the current status. */ if ( ( p = dimagev_make_packet(DIMAGEV_INQUIRY, 1, 0)) == NULL ) { GP_DEBUG( "dimagev_get_camera_info::unable to allocate packet"); return GP_ERROR_IO; } if ( gp_port_write(dimagev->dev, (char *)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_info::unable to write packet"); free(p); return GP_ERROR_IO; } else if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_info::no response from camera"); free(p); return GP_ERROR_IO; } free(p); switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: /* Keep trying until a CAN is issued. */ GP_DEBUG( "dimagev_get_camera_info::camera did not acknowledge transmission"); return dimagev_get_camera_info(dimagev); case DIMAGEV_CAN: GP_DEBUG( "dimagev_get_camera_info::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_get_camera_info::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } if ( ( p = dimagev_read_packet(dimagev) ) == NULL ) { GP_DEBUG( "dimagev_get_camera_info::unable to read packet"); return GP_ERROR_IO; } char_buffer = DIMAGEV_EOT; if ( gp_port_write(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_info::unable to send EOT"); free(p); return GP_ERROR_IO; } if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_info::no response from camera"); free(p); return GP_ERROR_IO; } switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_get_camera_info::camera did not acknowledge transmission"); free(p); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_get_camera_info::camera cancels transmission"); free(p); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_get_camera_info::camera responded with unknown value %x", char_buffer); free(p); return GP_ERROR_IO; } if ( ( raw = dimagev_strip_packet(p) ) == NULL ) { GP_DEBUG( "dimagev_get_camera_info::unable to strip data packet"); free(p); return GP_ERROR_NO_MEMORY; } if ( ( dimagev->info = dimagev_import_camera_info(raw->buffer) ) == NULL ) { GP_DEBUG( "dimagev_get_camera_info::unable to read camera info"); free(p); free(raw); return GP_ERROR; } /* Sure it *should* get fred automagically, but why take the risk? */ free(p); free(raw); return GP_OK; } dimagev_info_t *dimagev_import_camera_info(unsigned char *raw_data) { dimagev_info_t *info; if ( ( info = malloc(sizeof(dimagev_info_t)) ) == NULL ) { perror("dimagev_import_camera_info::unable to allocate dimagev_info_t"); return NULL; } memcpy(info->vendor, &(raw_data[0]), 8); info->vendor[7]= (unsigned char) 0; memcpy(info->model, &(raw_data[8]), 8); info->model[7]= (unsigned char) 0; memcpy(info->hardware_rev, &(raw_data[16]), 4); info->hardware_rev[3]= (unsigned char) 0; memcpy(info->firmware_rev, &(raw_data[20]), 4); info->firmware_rev[3]= (unsigned char) 0; info->have_storage = raw_data[24]; return info; } void dimagev_dump_camera_info(dimagev_info_t *info) { if ( info == NULL ) { GP_DEBUG( "dimagev_dump_camera_info::unable to read NULL simagev_info_t"); return; } GP_DEBUG( "========= Begin Camera Info ========="); GP_DEBUG( "Vendor: %s", info->vendor); GP_DEBUG( "Model: %s", info->model); GP_DEBUG( "Hardware Revision: %s", info->hardware_rev); GP_DEBUG( "Firmware Revision: %s", info->firmware_rev); GP_DEBUG( "========== End Camera Info =========="); return; } libgphoto2-2.5.9/camlibs/minolta/dimagev/Makefile-files0000644000175000001440000000115612561423351017753 00000000000000EXTRA_DIST += minolta/dimagev/README.minolta-dimagev minolta/dimagev/COPYING camlibdoc_DATA += minolta/dimagev/README.minolta-dimagev EXTRA_LTLIBRARIES += dimagev.la dimagev_la_SOURCES = \ minolta/dimagev/capture.c \ minolta/dimagev/data.c \ minolta/dimagev/delete.c \ minolta/dimagev/dimagev.c \ minolta/dimagev/dimagev.h \ minolta/dimagev/download.c \ minolta/dimagev/info.c \ minolta/dimagev/packet.c \ minolta/dimagev/status.c \ minolta/dimagev/upload.c \ minolta/dimagev/util.c dimagev_la_LDFLAGS = $(camlib_ldflags) dimagev_la_DEPENDENCIES = $(camlib_dependencies) dimagev_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/minolta/dimagev/status.c0000644000175000001440000001551512610415536016707 00000000000000/********************************************************************** * Minolta Dimage V digital camera communication library * * Copyright 2000,2001 Gus Hartmann * * * * 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 * * **********************************************************************/ /* $Id$ */ #include "config.h" #include "dimagev.h" #define GP_MODULE "dimagev" /* This is the parent function, who calls most of the functions below. It returns GP_ERROR if it cannot get the camera data, and GP_OK otherwise. The subroutines will print out more detained information should they fail. */ int dimagev_get_camera_status(dimagev_t *dimagev) { dimagev_packet *p, *raw; unsigned char char_buffer; /* Check the device. */ if ( dimagev->dev == NULL ) { GP_DEBUG( "dimagev_get_camera_status::device not valid"); return GP_ERROR_BAD_PARAMETERS; } /* Let's say hello and get the current status. */ if ( ( p = dimagev_make_packet(DIMAGEV_GET_STATUS, 1, 0)) == NULL ) { GP_DEBUG( "dimagev_get_camera_status::unable to allocate packet"); return GP_ERROR_IO; } if ( gp_port_write(dimagev->dev, (char *)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_status::unable to write packet"); free(p); return GP_ERROR_IO; } else if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_status::no response from camera"); free(p); return GP_ERROR_IO; } free(p); switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_get_camera_status::camera did not acknowledge transmission"); return dimagev_get_camera_status(dimagev); /* return GP_ERROR_IO;*/ case DIMAGEV_CAN: GP_DEBUG( "dimagev_get_camera_status::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_get_camera_status::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } if ( ( p = dimagev_read_packet(dimagev) ) == NULL ) { GP_DEBUG( "dimagev_get_camera_status::unable to read packet"); return GP_ERROR_IO; } char_buffer = DIMAGEV_EOT; if ( gp_port_write(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_status::unable to send EOT"); free(p); return GP_ERROR_IO; } if ( gp_port_read(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_status::no response from camera"); free(p); return GP_ERROR_IO; } switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_get_camera_status::camera did not acknowledge transmission"); free(p); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_get_camera_status::camera cancels transmission"); free(p); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_get_camera_status::camera responded with unknown value %x", char_buffer); free(p); return GP_ERROR_IO; } if ( ( raw = dimagev_strip_packet(p) ) == NULL ) { GP_DEBUG( "dimagev_get_camera_status::unable to strip data packet"); free(p); return GP_ERROR; } free(p); if ( ( dimagev->status = dimagev_import_camera_status(raw->buffer) ) == NULL ) { GP_DEBUG( "dimagev_get_camera_status::unable to read camera status"); free(raw); return GP_ERROR; } free(raw); return GP_OK; } /* This function converts a few chars of data, such as is given by the camera to indicate status, and massages it into a dimagev_status_t. */ dimagev_status_t *dimagev_import_camera_status(unsigned char *raw_data) { dimagev_status_t *processed_data; if ( raw_data == NULL ) { return NULL; } if ( ( processed_data = malloc(sizeof(dimagev_status_t)) ) == NULL ) { return NULL; } processed_data->battery_level = raw_data[0]; processed_data->number_images = ( raw_data[1] * 256 ) + ( raw_data[2] ); processed_data->minimum_images_can_take = ( raw_data[3] * 256 ) + ( raw_data[4] ); processed_data->busy = ( raw_data[5] & 0x40 ) >> 6; processed_data->flash_charging = ( raw_data[5] & 0x10 ) >> 4; processed_data->lens_status = ( raw_data[5] & 0x0c ) >> 2 ; processed_data->card_status = ( raw_data[5] & 0x03 ); processed_data->id_number = raw_data[6]; return processed_data; } /* This is a fairly simple dump function, using the GPIO debug funtions. It just prints the current status to stderr in a reasonably readable format. */ void dimagev_dump_camera_status(dimagev_status_t *status) { if ( status == NULL ) { GP_DEBUG( "Unable to dump NULL status"); return; } GP_DEBUG( "========= Begin Camera Status ========="); GP_DEBUG( "Battery level: %d", status->battery_level); GP_DEBUG( "Number of images: %d", status->number_images); GP_DEBUG( "Minimum images remaining: %d", status->minimum_images_can_take); GP_DEBUG( "Busy: %s ( %d )", status->busy != (unsigned char) 0 ? "Busy" : "Not Busy", status->busy); GP_DEBUG( "Flash charging: %s ( %d )", status->flash_charging != (unsigned char) 0 ? "Charging" : "Ready", status->flash_charging); GP_DEBUG( "Lens status: "); switch ( status->lens_status ) { case 0: GP_DEBUG( "Normal ( 0 )"); break; case 1: case 2: GP_DEBUG( "Lens direction does not match flash light ( %d )", status->lens_status ); break; case 3: GP_DEBUG( "Lens is not attached ( 3 )"); break; default: GP_DEBUG( "Bad value for lens status ( %d )", status->lens_status); break; } GP_DEBUG( "Card status: "); switch ( status->card_status ) { case 0: GP_DEBUG( "Normal ( 0 )"); break; case 1: GP_DEBUG( "Full ( 1 )"); break; case 2: GP_DEBUG( "Write-protected ( 2 )"); break; case 3: GP_DEBUG( "Card not valid for this camera ( 3 )"); break; default: GP_DEBUG( "Invalid value for card status ( %d )", status->card_status); break; } GP_DEBUG( "Card ID Data: %02x", status->id_number); GP_DEBUG( "========== End Camera Status =========="); return; } libgphoto2-2.5.9/camlibs/minolta/dimagev/data.c0000644000175000001440000003401512610415536016271 00000000000000/********************************************************************** * Minolta Dimage V digital camera communication library * * Copyright 2000,2001 Gus Hartmann * * * * 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 * * **********************************************************************/ /* $Id$ */ #include "config.h" #include "dimagev.h" #define GP_MODULE "dimagev" /* This is the parent function, who calls most of the functions below. It returns GP_ERROR if it cannot get the camera data, and GP_OK otherwise. The subroutines will print out more detained information should they fail. */ int dimagev_get_camera_data(dimagev_t *dimagev) { dimagev_packet *p, *raw; unsigned char char_buffer; /* Check the device. */ if ( dimagev->dev == NULL ) { GP_DEBUG( "dimagev_get_camera_data::device not valid"); return GP_ERROR_BAD_PARAMETERS; } /* Let's say hello and get the current status. */ if ( ( p = dimagev_make_packet(DIMAGEV_GET_DATA, 1, 0)) == NULL ) { GP_DEBUG( "dimagev_get_camera_data::unable to allocate packet"); return GP_ERROR_NO_MEMORY; } if ( gp_port_write(dimagev->dev, (char*)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_data::unable to write packet"); free(p); return GP_ERROR_IO; } else if ( gp_port_read(dimagev->dev, (char*)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_data::no response from camera"); free(p); return GP_ERROR_IO; } free(p); switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_get_camera_data::camera did not acknowledge transmission"); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_get_camera_data::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_get_camera_data::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } if ( ( p = dimagev_read_packet(dimagev) ) == NULL ) { GP_DEBUG( "dimagev_get_camera_data::unable to read packet"); return GP_ERROR_IO; } char_buffer = DIMAGEV_EOT; if ( gp_port_write(dimagev->dev, (char*)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_data::unable to send EOT"); free(p); return GP_ERROR_IO; } if ( gp_port_read(dimagev->dev, (char*)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_get_camera_data::no response from camera"); free(p); return GP_ERROR_IO; } switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_get_camera_data::camera did not acknowledge transmission"); free(p); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_get_camera_data::camera cancels transmission"); free(p); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_get_camera_data::camera responded with unknown value %x", char_buffer); free(p); return GP_ERROR_IO; } if ( ( raw = dimagev_strip_packet(p) ) == NULL ) { GP_DEBUG( "dimagev_get_camera_data::unable to strip data packet"); free(p); return GP_ERROR; } if ( ( dimagev->data = dimagev_import_camera_data(raw->buffer)) == NULL ) { GP_DEBUG( "dimagev_get_camera_data::unable to read camera data"); free(raw); free(p); return GP_ERROR; } /* Sure it *should* get freed automagically, but why take the risk? */ free(p); free(raw); return GP_OK; } /* This function sends the contents of a dimagev_data_t to the current camera. This allows many changes to be made (e.g. entering host mode and record mode) while only sending a single set_data command. */ int dimagev_send_data(dimagev_t *dimagev) { dimagev_packet *p; unsigned char *export_data, char_buffer; if ( dimagev == NULL ) { GP_DEBUG( "dimagev_send_data::unable to use NULL dimagev_t"); return GP_ERROR_BAD_PARAMETERS; } if ( ( export_data = dimagev_export_camera_data(dimagev->data) ) == NULL ) { GP_DEBUG( "dimagev_send_data::unable to export camera data"); return GP_ERROR; } dimagev_dump_camera_data(dimagev->data); if ( ( p = dimagev_make_packet(DIMAGEV_SET_DATA, 1, 0) ) == NULL ) { GP_DEBUG( "dimagev_send_data::unable to create set_data packet"); free(export_data); return GP_ERROR_NO_MEMORY; } if ( gp_port_write(dimagev->dev, (char*)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_send_data::unable to send set_data packet"); free(p); free(export_data); return GP_ERROR_IO; } else if ( gp_port_read(dimagev->dev, (char*)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_send_data::no response from camera - trying to send NAK"); free(p); free(export_data); return GP_ERROR_IO; } free(p); switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_send_data::camera did not acknowledge transmission"); free(export_data); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_send_data::camera cancels transmission"); free(export_data); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_send_data::camera responded with unknown value %x", char_buffer); free(export_data); return GP_ERROR_IO; } if ( ( p = dimagev_make_packet(export_data, 9, 1) ) == NULL ) { GP_DEBUG( "dimagev_send_data::unable to create set_data packet"); free(export_data); return GP_ERROR_NO_MEMORY; } free(export_data); if ( gp_port_write(dimagev->dev, (char*)p->buffer, p->length) < GP_OK ) { GP_DEBUG( "dimagev_send_data::unable to send data packet"); free(p); return GP_ERROR_IO; } free(p); if ( gp_port_read(dimagev->dev, (char*)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_send_data::no response from camera"); return GP_ERROR_IO; } switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_send_data::camera did not acknowledge transmission"); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_send_data::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_send_data::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } char_buffer = DIMAGEV_EOT; if ( gp_port_write(dimagev->dev, (char*)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_send_data::unable to send EOT"); return GP_ERROR_IO; } if ( gp_port_read(dimagev->dev, (char*)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_send_data::no response from camera"); return GP_ERROR_IO; } switch ( char_buffer ) { case DIMAGEV_ACK: break; case DIMAGEV_NAK: GP_DEBUG( "dimagev_send_data::camera did not acknowledge transmission"); return GP_ERROR_IO; case DIMAGEV_CAN: GP_DEBUG( "dimagev_send_data::camera cancels transmission"); return GP_ERROR_IO; default: GP_DEBUG( "dimagev_send_data::camera responded with unknown value %x", char_buffer); return GP_ERROR_IO; } if ( sleep(3) != 0 ) { GP_DEBUG( "dimagev_send_data::sleep() returned non-zero value"); } return GP_OK; } /* This function populates and retuens a dimagev_data_t with the values contained inside an array of bytes, as returned by the Dimage V. See the description of these fields in the appropriate header file for more information on the bit-packing done here. */ dimagev_data_t *dimagev_import_camera_data(unsigned char *raw_data) { dimagev_data_t *processed_data; if ( raw_data == NULL ) { return NULL; } if ( ( processed_data = malloc(sizeof(dimagev_data_t)) ) == NULL ) { return NULL; } /* They really pack those bit fields. */ processed_data->host_mode = ( raw_data[0] & 0x80) >> 7; processed_data->exposure_valid = (raw_data[0] & 0x40 ) >> 6; processed_data->date_valid = (raw_data[0] & 0x20 ) >> 5; processed_data->self_timer_mode = (raw_data[0] & 0x10 ) >> 4; processed_data->flash_mode = ( raw_data[0] & 0x0C ) >> 2; processed_data->quality_setting = ( raw_data[0] & 0x02 ) >> 1; processed_data->play_rec_mode = (raw_data[0] & 0x01 ); processed_data->year = dimagev_bcd_to_decimal(raw_data[1]); processed_data->month = dimagev_bcd_to_decimal(raw_data[2]); processed_data->day = dimagev_bcd_to_decimal(raw_data[3]); processed_data->hour = dimagev_bcd_to_decimal(raw_data[4]); processed_data->minute = dimagev_bcd_to_decimal(raw_data[5]); processed_data->second = dimagev_bcd_to_decimal(raw_data[6]); processed_data->exposure_correction = raw_data[7]; processed_data->valid = ( raw_data[8] & 0x80) >> 7; processed_data->id_number = ( raw_data[8] & 0x7F); return processed_data; } unsigned char *dimagev_export_camera_data(dimagev_data_t *good_data) { unsigned char *export_data; if ( ( export_data = malloc(9) ) == NULL ) { perror("dimagev_export_camera_data::unable to allocate buffer"); return NULL; } export_data[0] = (unsigned char) 0; export_data[0] = export_data[0] | ( ( ( good_data->host_mode ) << 7 ) & 0x80 ); export_data[0] = export_data[0] | ( ( ( good_data->exposure_valid ) << 6 ) & 0x40 ); export_data[0] = export_data[0] | ( ( ( good_data->date_valid ) << 5 ) & 0x20 ); export_data[0] = export_data[0] | ( ( ( good_data->self_timer_mode ) << 4 ) & 0x10 ); export_data[0] = export_data[0] | ( ( ( good_data->flash_mode ) << 2 ) & 0x0C ); export_data[0] = export_data[0] | ( ( ( good_data->quality_setting ) << 1 ) & 0x02 ); export_data[0] = export_data[0] | ( ( ( good_data->play_rec_mode )) & 0x01 ); export_data[1] = (unsigned char) 0; export_data[1] = dimagev_decimal_to_bcd(good_data->year); export_data[2] = (unsigned char) 0; export_data[2] = dimagev_decimal_to_bcd(good_data->month); export_data[3] = (unsigned char) 0; export_data[3] = dimagev_decimal_to_bcd(good_data->day); export_data[4] = (unsigned char) 0; export_data[4] = dimagev_decimal_to_bcd(good_data->hour); export_data[5] = (unsigned char) 0; export_data[5] = dimagev_decimal_to_bcd(good_data->minute); export_data[6] = (unsigned char) 0; export_data[6] = dimagev_decimal_to_bcd(good_data->second); export_data[7] = (unsigned char) 0; export_data[7] = good_data->exposure_correction; export_data[8] = (unsigned char) 0; export_data[8] = export_data[8] & ( ( ( good_data->valid ) << 7 ) & 0x80 ); export_data[8] = export_data[8] & ( ( ( good_data->id_number ) ) & 0x7F ); return export_data; } void dimagev_dump_camera_data(dimagev_data_t *data) { GP_DEBUG( "========= Begin Camera Data ========="); GP_DEBUG( "Host mode: %s ( %d )", data->host_mode != (unsigned char) 0 ? "Host mode" : "Camera mode", data->host_mode); GP_DEBUG( "Exposure valid: %s ( %d )", data->exposure_valid != (unsigned char) 0 ? "Valid" : "Not Valid", data->exposure_valid); GP_DEBUG( "Exposure correction: %d", (signed char)data->exposure_correction); GP_DEBUG( "Date valid: %s ( %d )", data->date_valid != (unsigned char) 0 ? "Valid" : "Not Valid", data->exposure_valid); GP_DEBUG( "Self timer mode: %s ( %d )", data->self_timer_mode != (unsigned char) 0 ? "Yes" : "No", data->self_timer_mode); GP_DEBUG( "Flash mode: "); switch ( data->flash_mode ) { case 0: GP_DEBUG( "\tAuto ( 0 )"); break; case 1: GP_DEBUG( "\tForce Flash ( 1 )"); break; case 2: GP_DEBUG( "\tProhibit Flash ( 2 )"); break; default: GP_DEBUG( "\tInvalid mode for flash ( %d )", data->flash_mode); break; } GP_DEBUG( "Quality mode: %s ( %d )", data->quality_setting ? "High" : "Low", data->quality_setting); GP_DEBUG( "Play or Record mode: %s ( %d )", data->play_rec_mode != (unsigned char) 0 ? "Record" : "Play", data->play_rec_mode); GP_DEBUG( "Date: %02d/%02d/%02d %02d:%02d:%02d", data->year, data->month, data->day, data->hour, data->minute, data->second); GP_DEBUG( "Card ID Valid: %s ( %d )", data->valid != (unsigned char) 0 ? "Valid" : "Invalid", data->valid); GP_DEBUG( "Card ID Data: %02x", data->id_number); GP_DEBUG( "========== End Camera Data =========="); return; } /* This function gets the current system time, sets the contents of the current dimagev->data struct appropriately, and then sends the data. */ int dimagev_set_date(dimagev_t *dimagev) { struct tm *this_time; time_t now; if ( dimagev == NULL ) { return GP_ERROR_BAD_PARAMETERS; } if ( ( now = time(NULL) ) < 0 ) { GP_DEBUG( "dimagev_set_date::unable to get system time"); return GP_ERROR; } if ( ( this_time = localtime(&now) ) == NULL ) { GP_DEBUG( "dimagev_set_date::unable to convert system time to local time"); return GP_ERROR; } GP_DEBUG( "Setting clock to %02d/%02d/%02d %02d:%02d:%02d", this_time->tm_year % 100, ( this_time->tm_mon + 1 ), this_time->tm_mday, this_time->tm_hour, this_time->tm_min, this_time->tm_sec); dimagev->data->date_valid = (unsigned char) 1; dimagev->data->year = (unsigned char) ( this_time->tm_year % 100 ); dimagev->data->month = (unsigned char) ( this_time->tm_mon + 1 ); dimagev->data->day = (unsigned char) this_time->tm_mday; dimagev->data->hour = (unsigned char) this_time->tm_hour; dimagev->data->minute = (unsigned char) this_time->tm_min; dimagev->data->second = (unsigned char) this_time->tm_sec; if ( dimagev_send_data(dimagev) < GP_OK ) { GP_DEBUG( "dimagev_set_date::unable to set time"); return GP_ERROR_IO; } /* So we don't set this date again later by mistake. */ dimagev->data->date_valid = (unsigned char) 0; if ( dimagev_send_data(dimagev) < GP_OK ) { GP_DEBUG( "dimagev_set_date::unable to set time"); return GP_ERROR_IO; } return GP_OK; } libgphoto2-2.5.9/camlibs/minolta/dimagev/COPYING0000644000175000001440000004307412610415524016251 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright © 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright © 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright © 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. libgphoto2-2.5.9/camlibs/minolta/dimagev/util.c0000644000175000001440000001316212610415536016335 00000000000000/********************************************************************** * Minolta Dimage V digital camera communication library * * Copyright 2000,2001 Gus Hartmann * * * * 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 * * **********************************************************************/ /* $Id$ */ #include "config.h" #include "dimagev.h" #define GP_MODULE "dimagev" /* This function handles the ugliness of converting Y:Cb:Cr data to RGB. The return value is a pointer to an array of unsigned chars that has 14413) members. The additional thirteen bytes are the PPM "rawbits" header. The Dimage V returns 9600 bytes of data for a thumbnail, in what is referred to in the documentation as a "Y:Cb:Cr (4:2:2)" format. This means that the data is in a Y:Cr:Cb solor space, and is horizontally compressed so that the Cb and Cr values are used for two adjacent bytes. The data essentially looks like this: Y(0):Y(1):Cb(0):Cr(0):Y(2):Y(3) ... Y(9599):Y(9600):Cb(9599):Cr(9599) Each of the above is a byte. The image is defined as having 80 pixels of width and 60 of height, and this information is not included in the 9600 bytes of data. Since Y:Cb:Cr data is essentially useless, this function converts it into RGB data, with a PPM "rawbits" header containing the height and width. The formulae to convert Y:Cb:Cr to RGB are below: B(0,0) = (Cb - 128) * (2 - ( 2 * Cr_Coeff )) + Y(0,0) R(0,0) = (Cr - 128) * (2 - ( 2 * Y_Coeff )) + Y(0,0) G(0,0) = (Y(0,0) - ( Cr_Coeff * B(0,0) + Y_Coeff * R(0,0)) ) / Cb_Coeff Still with me? Good. The values for the three coefficients all add up to one; the values used here are defined in dimagev.h . The code below is more complex than this, however; Minolta has not been forthcoming with the permitted ranges for the values of Y, Cb, and Cr, so I have had to do some guesswork based on the math. I don't know much about colorspaces, and I'm not looking to know more. It looks like Cb and Cr have a range of (0,128) and Y has a range of (0,255). The Dimage V sometimes returns values for Cb and Cr slightly over this range; I crop these to 128. Also, sometimes the values returned by the conversion formulae are greater than 255, which would overflow the unsigned char used to store them, so I crop these to 0. I used to just drop them to 255, but this lead to image corruption in dark areas. An afternoon of guesswork later, I tried cutting them to 0, and it works well enough for me. I could not have possibly figured this out without the help of these sites: http://www.butaman.ne.jp/~tsuruzoh/Computer/Digicams/exif-e.html http://www.efg2.com/lab/Graphics/Colors/YUV.htm#411 http://www.dcs.ed.ac.uk/home/mxr/gfx/2d-hi.html */ unsigned char *dimagev_ycbcr_to_ppm(unsigned char *ycbcr) { unsigned char *rgb_data, *ycrcb_current, *rgb_current; int count=0; unsigned int magic_r, magic_g, magic_b; if ( ( rgb_data = malloc( 14413 ) ) == NULL ) { GP_DEBUG( "dimagev_ycbcr_to_ppm::unable to allocate buffer for Y:Cb:Cr conversion"); return NULL; } ycrcb_current = ycbcr; rgb_current = &(rgb_data[13]); /* This is the header for a PPM "rawbits" bitmap of size 80x60. */ strncpy((char *)rgb_data, "P6\n80 60\n255\n", 13); for ( count = 0 ; count < 9600 ; count+=4, ycrcb_current+=4, rgb_current+=6 ) { magic_b = ( ( ycrcb_current[2] > (unsigned char) 128 ? 128 : ycrcb_current[2] ) - 128 ) * ( 2 - ( 2 * CR_COEFF ) ) + ycrcb_current[0]; rgb_current[2] = (unsigned char) ( magic_b > 255 ? 0 : magic_b ); magic_r = ( ( ycrcb_current[3] > (unsigned char) 128 ? 128 : ycrcb_current[3] ) - 128 ) * ( 2 - ( 2 * Y_COEFF ) ) + ycrcb_current[0]; rgb_current[0] = (unsigned char) ( magic_r > 255 ? 0 : magic_r ); magic_g = (( ycrcb_current[0] - ( CR_COEFF * rgb_current[2] ) ) - ( Y_COEFF * rgb_current[0])) / CB_COEFF ; rgb_current[1] = (unsigned char) ( magic_g > 255 ? 0 : magic_g ); /* Wipe everything clean. */ magic_b = magic_r = magic_g = 0; magic_b = ( ( ycrcb_current[2] > (unsigned char) 128 ? 128 : ycrcb_current[2] ) - 128 ) * ( 2 - ( 2 * CR_COEFF ) ) + ycrcb_current[1]; rgb_current[5] = (unsigned char) ( magic_b > 255 ? 0 : magic_b ); magic_r = ( ( ycrcb_current[3] > (unsigned char) 128 ? 128 : ycrcb_current[3] ) - 128 ) * ( 2 - ( 2 * Y_COEFF ) ) + ycrcb_current[1]; rgb_current[3] = (unsigned char) ( magic_r > 255 ? 0 : magic_r ); magic_g = (( ycrcb_current[1] - ( CR_COEFF * rgb_current[5] ) ) - ( Y_COEFF * rgb_current[3])) / CB_COEFF ; rgb_current[4] = (unsigned char) ( magic_g > 255 ? 0 : magic_g ); /* Wipe everything clean. */ magic_b = magic_r = magic_g = 0; } return rgb_data; } libgphoto2-2.5.9/camlibs/minolta/dimagev/dimagev.h0000644000175000001440000002363512610415536017007 00000000000000/********************************************************************** * Minolta Dimage V digital camera communication library * * Copyright 2000,2001 Gus Hartmann * * * * 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 * * **********************************************************************/ /* $Id$ */ #if defined HAVE_UNISTD_H #include #endif #if defined HAVE_STDIO_H #include #endif #if defined HAVE_STDLIB_H #include #endif #if defined HAVE_STRING_H #include #endif #if defined HAVE_SYS_TIME_H #include #endif /* These better be around. */ #include #include #include #define DIMAGEV_VERSION "$Revision$" /* These are the repsonse codes. */ #define DIMAGEV_STX 0x02 #define DIMAGEV_ETX 0x03 #define DIMAGEV_EOT 0x04 #define DIMAGEV_ACK 0x06 #define DIMAGEV_NAK 0x15 #define DIMAGEV_CAN 0x18 /* These are the commands. */ #define DIMAGEV_INQUIRY (unsigned char*)"\x01" #define DIMAGEV_DRIVE_READY (unsigned char*)"\x02" #define DIMAGEV_GET_DIR (unsigned char*)"\x03" #define DIMAGEV_GET_IMAGE (unsigned char*)"\x04" #define DIMAGEV_ERASE_IMAGE (unsigned char*)"\x05" #define DIMAGEV_ERASE_ALL (unsigned char*)"\x06" #define DIMAGEV_GET_STATUS (unsigned char*)"\x07" #define DIMAGEV_SET_DATA (unsigned char*)"\x08" #define DIMAGEV_GET_DATA (unsigned char*)"\x09" #define DIMAGEV_SHUTTER (unsigned char*)"\x0a" #define DIMAGEV_FORMAT (unsigned char*)"\x0b" #define DIMAGEV_DIAG (unsigned char*)"\x0c" #define DIMAGEV_GET_THUMB (unsigned char*)"\x0d" #define DIMAGEV_SET_IMAGE (unsigned char*)"\x0e" /* Using five digits is a bit forward-thinking, since I've never even gotten enough pictures on a card to fill two digits, but I may as well use all the eight.three I can. */ #define DIMAGEV_FILENAME_FMT "dv%05i.jpg" #define DIMAGEV_THUMBNAIL_FMT "dv%05i.ppm" /* These values are needed to convert Y:Cb:Cr image data into RGB. */ /* Salt as needed. */ #define CR_COEFF 0.114 #define CB_COEFF 0.587 #define Y_COEFF 0.299 /* This struct basically is a NULL-safe string; image data and other buffers can contain NULLs, and classic C strings won't work. */ typedef struct { int length; unsigned char buffer[1024]; } dimagev_packet; /* This struct represents the information returned by the DIMAGEV_INQUIRY command. The response packet payload is 25 bytes, in the order listed below. The strings are all ASCII values, e.g. "MINOLTA ". The model is always "L1", which was apparently the development name for the Dimage V. */ typedef struct { unsigned char vendor[8]; unsigned char model[8]; unsigned char hardware_rev[4]; unsigned char firmware_rev[4]; unsigned char have_storage; } dimagev_info_t; /* This struct represents the information returned by the DIMAGEV_GET_STATUS command. This information is all wedged into seven bytes, as shown here: bits |-- 7 --|-- 6 --|-- 5 --|-- 4 --|-- 3 --|-- 2 --|-- 1 --|-- 0 --| byte |---------------------------------------------------------------| 0 | Battery level | 1 | Number of images (most significant byte) | 2 | Number of images (least significant byte) | 3 | Minimum number of images left to take (most significant byte) | 4 | Minimum number of images left to take (least significant byte)| 5 | 0 | Busy | 0 | Flash | Lens Status | Card Status | 6 | Camera and Card ID number | |---------------------------------------------------------------| Battery level: 0x00 == "not enough", 0xff == "enough" Lens status: 00 == normal, 01|10 == doesn't match flash, 11 == detached Card status: 00 == normal, 01 == full, 10 == write-protected, 11 == bad Flash: 1 == charging, 0 == ready I could probably have left it in one of these compacted structures, but memory is not so expensive as to spend that much effort shifting bits. */ typedef struct { unsigned char battery_level; unsigned int number_images; unsigned int minimum_images_can_take; unsigned char busy; unsigned char flash_charging; unsigned char lens_status; unsigned char card_status; unsigned char id_number; } dimagev_status_t; /* This struct represents the information returned by the DIMAGEV_GET_DATA command and sent with the DIMAGEV_SET_DATA command. It's another tightly packed bit field, as described below: bits |-- 7 --|-- 6 --|-- 5 --|-- 4 --|-- 3 --|-- 2 --|-- 1 --|-- 0 --| byte |---------------------------------------------------------------| 0 | hmode | OR | Date | Self | Flash |Quality| Rec | 1 | Camera Clock (year) | 2 | Camera Clock (month) | 3 | Camera Clock (day) | 4 | Camera Clock (hour) | 5 | Camera Clock (minute) | 6 | Camera Clock (second) | 7 | Exposure correction data | 8 | valid | Camera and Card ID number | |---------------------------------------------------------------| hmode: "host mode" e.g. if the PC or camera is in control. OR: Exposure correction data field is valid - used only for SET command. Date: The date information is valid - used only for SET command. Self: True if camera is in self-timer mode. Flash: 00 == Auto, 01 == Force Flash, 10==No Flash, 11 == Invalid Quality: Compression setting, 1 == Fine, 0 == Standard Record mode: When setting, 1 == turn on LCD viewfinder. When getting, 1 == switch in record mode. Camera Clock: BCD two-digit values for times. Hours are military 0-23. Exposure correction data: sets exposure correction, from -127 to 128. valid: Used to set "valid" for memory cards. Camera and Card ID: used when switching cards. */ typedef struct { unsigned char host_mode; unsigned char exposure_valid; unsigned char date_valid; unsigned char self_timer_mode; unsigned char flash_mode; unsigned char quality_setting; unsigned char play_rec_mode; unsigned char year; unsigned char month; unsigned char day; unsigned char hour; unsigned char minute; unsigned char second; unsigned char exposure_correction; unsigned char valid; unsigned char id_number; } dimagev_data_t; /* This struct is used as the camera->camlib_data value in this library. */ typedef struct _CameraPrivateLibrary { int size; GPPort *dev; dimagev_data_t *data; dimagev_status_t *status; dimagev_info_t *info; } dimagev_t; /* These functions are in packet.c */ dimagev_packet *dimagev_make_packet(const unsigned char *const buffer, unsigned int length, unsigned int seq); dimagev_packet *dimagev_read_packet(dimagev_t *dimagev); int dimagev_verify_packet(dimagev_packet *p); dimagev_packet *dimagev_strip_packet(dimagev_packet *p); void dimagev_dump_packet(dimagev_packet *p); unsigned char dimagev_decimal_to_bcd(unsigned char decimal); unsigned char dimagev_bcd_to_decimal(unsigned char bcd); int dimagev_packet_sequence(dimagev_packet *p); /* These functions are in data.c */ int dimagev_send_data(dimagev_t *dimagev); int dimagev_get_camera_data(dimagev_t *dimagev); dimagev_data_t *dimagev_import_camera_data(unsigned char *raw_data); unsigned char *dimagev_export_camera_data(dimagev_data_t *good_data); void dimagev_dump_camera_data(dimagev_data_t *data); int dimagev_set_date(dimagev_t *dimagev); /* These functions are in status.c */ int dimagev_get_camera_status(dimagev_t *dimagev); dimagev_status_t *dimagev_import_camera_status(unsigned char *raw_data); void dimagev_dump_camera_status(dimagev_status_t *status); /* These functions are in info.c */ int dimagev_get_camera_info(dimagev_t *dimagev); dimagev_info_t *dimagev_import_camera_info(unsigned char *raw_data); void dimagev_dump_camera_info(dimagev_info_t *info); /* These functions are in capture.c */ int dimagev_shutter(dimagev_t *dimagev); /* These functions are in upload.c */ int dimagev_put_file(dimagev_t* dimagev, CameraFile *file); /* These functions are in util.c */ int dimagev_get_picture(dimagev_t *dimagev, int file_number, CameraFile *file); int dimagev_delete_picture(dimagev_t *dimagev, int file_number); int dimagev_delete_all(dimagev_t *dimagev); int dimagev_get_thumbnail(dimagev_t *dimagev, int file_number, CameraFile *file); unsigned char *dimagev_ycbcr_to_ppm(unsigned char *ycbcr); libgphoto2-2.5.9/camlibs/minolta/dimagev/dimagev.c0000644000175000001440000003442112610415536016775 00000000000000/**********************************************************************; * Minolta Dimage V digital camera communication library * * Copyright 2000,2001 Gus Hartmann * * * * 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 * * **********************************************************************/ #define _BSD_SOURCE #include "config.h" #ifdef ENABLE_NLS # include # undef _ # ifdef gettext_noop # define _(String) dgettext (GETTEXT_PACKAGE, String) # define N_(String) gettext_noop (String) # else # define _(String) (String) # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "dimagev.h" #define GP_MODULE "dimagev" int camera_id (CameraText *id) { #if defined HAVE_STRNCPY strncpy(id->text, "minolta-dimagev", sizeof(id->text)); #else strcpy(id->text, "minolta-dimagev"); #endif return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); #if defined HAVE_STRNCPY strncpy(a.model, "Minolta:Dimage V", sizeof(a.model)); #else strcpy(a.model, "Minolta:Dimage V"); #endif a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 38400; a.speed[1] = 0; a.operations = GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CAPTURE_PREVIEW; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE | GP_FOLDER_OPERATION_DELETE_ALL; gp_abilities_list_append(list, a); return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { /* Set the camera back into a normal mode. */ if (camera->pl) { if (camera->pl->data) { camera->pl->data->host_mode = (unsigned char) 0; /* This will also send the host mode of zero. */ if ( dimagev_set_date(camera->pl) < GP_OK ) { GP_DEBUG( "camera_init::unable to set camera to system time"); return GP_ERROR_IO; } free (camera->pl->data); camera->pl->data = NULL; } if (camera->pl->status) { free (camera->pl->status); camera->pl->status = NULL; } if (camera->pl->info) { free (camera->pl->info); camera->pl->info = NULL; } free (camera->pl); } return GP_OK; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int ret; if ( dimagev_get_camera_status(camera->pl) < GP_OK ) { GP_DEBUG( "camera_file_list::unable to get camera status"); return GP_ERROR_IO; } if ((ret = gp_list_populate(list, DIMAGEV_FILENAME_FMT, camera->pl->status->number_images)) < GP_OK ) { GP_DEBUG( "camera_file_list::unable to populate list"); return ret; } return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int file_number=0, result; file_number = gp_filesystem_number(fs, folder, filename, context); if (file_number < 0) return (file_number); switch (type) { case GP_FILE_TYPE_NORMAL: gp_file_set_mime_type (file, GP_MIME_JPEG); result = dimagev_get_picture (camera->pl, file_number + 1, file); break; case GP_FILE_TYPE_PREVIEW: gp_file_set_mime_type (file, GP_MIME_PPM); result = dimagev_get_thumbnail (camera->pl, file_number + 1, file); break; default: return (GP_ERROR_NOT_SUPPORTED); } if (result < 0) { GP_DEBUG( "camera_file_get::unable to retrieve image file"); return result; } sleep(2); return GP_OK; } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int file_number=0; file_number = gp_filesystem_number(camera->fs, folder, filename, context); if (file_number < 0) return (file_number); return dimagev_delete_picture(camera->pl, (file_number + 1 )); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { if (type != GP_CAPTURE_IMAGE) return (GP_ERROR_NOT_SUPPORTED); if ( dimagev_shutter(camera->pl) < GP_OK ) { GP_DEBUG( "camera_capture::unable to open shutter"); return GP_ERROR_IO; } /* Now check how many pictures are taken, and return the last one. */ if ( dimagev_get_camera_status(camera->pl) != 0 ) { GP_DEBUG( "camera_capture::unable to get camera status"); return GP_ERROR_IO; } #if defined HAVE_SNPRINTF snprintf(path->folder, sizeof(path->folder), "/"); snprintf(path->name, sizeof(path->name), DIMAGEV_FILENAME_FMT, camera->pl->status->number_images); #else sprintf(path->folder, "/"); sprintf(path->name, DIMAGEV_FILENAME_FMT, camera->pl->status->number_images); #endif /* Tell the CameraFilesystem about this picture */ gp_filesystem_append (camera->fs, path->folder, path->name, context); return GP_OK; } static int put_file_func (CameraFilesystem *fs, const char *folder, const char *name, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; return dimagev_put_file(camera->pl, file); } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; return dimagev_delete_all(camera->pl); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int i = 0, count = 0; if ( dimagev_get_camera_status(camera->pl) < GP_OK ) { GP_DEBUG( "camera_summary::unable to get camera status"); return GP_ERROR_IO; } if ( dimagev_get_camera_data(camera->pl) < GP_OK ) { GP_DEBUG( "camera_summary::unable to get camera data"); return GP_ERROR_IO; } if ( dimagev_get_camera_info(camera->pl) < GP_OK ) { GP_DEBUG( "camera_summary::unable to get camera info"); return GP_ERROR_IO; } dimagev_dump_camera_status(camera->pl->status); dimagev_dump_camera_data(camera->pl->data); dimagev_dump_camera_info(camera->pl->info); /* Now put all of the information into a reasonably formatted string. */ /* i keeps track of the length. */ i = 0; /* First the stuff from the dimagev_info_t */ #if defined HAVE_SNPRINTF i = snprintf(summary->text, sizeof(summary->text), #else i = sprintf(summary->text, #endif _("Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\nFirmware Revision:\t%s\n"), camera->pl->info->model, camera->pl->info->hardware_rev, camera->pl->info->firmware_rev); if ( i > 0 ) { count += i; } /* Now the stuff from dimagev_data_t */ #if defined HAVE_SNPRINTF i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, #else i = sprintf(&(summary->text[count]), #endif _("Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t"), ( camera->pl->data->host_mode != (unsigned char) 0 ? _("Remote") : _("Local") ), ( camera->pl->data->exposure_valid != (unsigned char) 0 ? _("Yes") : _("No") ), (signed char)camera->pl->data->exposure_correction, ( camera->pl->data->date_valid != (unsigned char) 0 ? _("Yes") : _("No") ), ( camera->pl->data->year < (unsigned char) 70 ? 2000 + (int) camera->pl->data->year : 1900 + (int) camera->pl->data->year ), camera->pl->data->month, camera->pl->data->day, camera->pl->data->hour, camera->pl->data->minute, camera->pl->data->second, ( camera->pl->data->self_timer_mode != (unsigned char) 0 ? _("Yes") : _("No")), ( camera->pl->data->quality_setting != (unsigned char) 0 ? _("Fine") : _("Standard") ), ( camera->pl->data->play_rec_mode != (unsigned char) 0 ? _("Record") : _("Play") ), ( camera->pl->data->valid != (unsigned char) 0 ? _("Yes") : _("No")), camera->pl->data->id_number ); if ( i > 0 ) { count += i; } /* Flash is a special case, a switch is needed. */ switch ( camera->pl->data->flash_mode ) { case 0: #if defined HAVE_SNPRINTF i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, #else i = sprintf(&(summary->text[count]), #endif _("Automatic\n")); break; case 1: #if defined HAVE_SNPRINTF i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, #else i = sprintf(&(summary->text[count]), #endif _("Force Flash\n")); break; case 2: #if defined HAVE_SNPRINTF i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, #else i = sprintf(&(summary->text[count]), #endif _("Prohibit Flash\n")); break; default: #if defined HAVE_SNPRINTF i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, #else i = sprintf(&(summary->text[count]), #endif _("Invalid Value ( %d )\n"), camera->pl->data->flash_mode); break; } if ( i > 0 ) { count += i; } /* Now for the information in dimagev_status_t */ #if defined HAVE_SNPRINTF i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, #else i = sprintf(&(summary->text[count]), #endif _("Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t"), ( camera->pl->status->battery_level ? _("Not Full") : _("Full") ), camera->pl->status->number_images, camera->pl->status->minimum_images_can_take, ( camera->pl->status->busy ? _("Busy") : _("Idle") ), ( camera->pl->status->flash_charging ? _("Charging") : _("Ready") ) ); if ( i > 0 ) { count += i; } /* Lens status is another switch. */ switch ( camera->pl->status->lens_status ) { case 0: i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, _("Normal\n")); break; case 1: case 2: i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, _("Lens direction does not match flash light\n")); break; case 3: i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, _("Lens is not connected\n")); break; default: i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, _("Bad value for lens status %d\n"), camera->pl->status->lens_status); break; } if ( i > 0 ) { count += i; } /* Card status is another switch. */ i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, _("Card Status:\t\t")); if ( i > 0 ) { count += i; } switch ( camera->pl->status->card_status ) { case 0: i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, _("Normal")); break; case 1: i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, _("Full")); break; case 2: i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, _("Write-protected")); break; case 3: i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, _("Unsuitable card")); break; default: i = snprintf(&(summary->text[count]), sizeof(summary->text) - count, _("Bad value for card status %d"), camera->pl->status->card_status); break; } if ( i > 0 ) { count += i; } return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { #if defined HAVE_SNPRINTF snprintf(about->text, sizeof(about->text), #else sprintf(about->text, #endif _("Minolta Dimage V Camera Library\n%s\nGus Hartmann \nSpecial thanks to Minolta for the spec."), DIMAGEV_VERSION); return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .put_file_func = put_file_func, .delete_all_func = delete_all_func, }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->capture = camera_capture; camera->functions->summary = camera_summary; camera->functions->about = camera_about; GP_DEBUG( "initializing the camera"); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); camera->pl->dev = camera->port; /* Configure the port */ gp_port_set_timeout(camera->port, 5000); gp_port_get_settings(camera->port, &settings); settings.serial.speed = 38400; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; gp_port_set_settings(camera->port, settings); if ( dimagev_get_camera_data(camera->pl) < GP_OK ) { GP_DEBUG( "camera_init::unable to get current camera data"); free (camera->pl); camera->pl = NULL; return GP_ERROR_IO; } if ( dimagev_get_camera_status(camera->pl) < GP_OK ) { GP_DEBUG( "camera_init::unable to get current camera status"); free (camera->pl); camera->pl = NULL; return GP_ERROR_IO; } /* Apparently, trying to set the clock now leaves the camera in an unstable state. Skiping it for now. */ /* if ( dimagev_set_date(camera->pl) < GP_OK ) { GP_DEBUG( "camera_init::unable to set camera to system time"); } */ /* Set up the filesystem */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); return GP_OK; } libgphoto2-2.5.9/camlibs/minolta/dimagev/packet.c0000644000175000001440000001637412610415536016637 00000000000000/********************************************************************** * Minolta Dimage V digital camera communication library * * Copyright 2000,2001 Gus Hartmann * * * * 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 * * **********************************************************************/ /* $Id$ */ #include "config.h" #include "dimagev.h" #define GP_MODULE "dimagev" /* This function takes an array of unsigned chars, as well as the length, and creates a dimagev_packet ready for sending to the camera. Packets must be of the form below: bytes -------------------------------------------------------------------- | 0 | 1 | 2 | 3 | 4 through ( n-4) | n-3 | n-2 | n-1 | -------------------------------------------------------------------- | STX | Seq | Length | Payload | Checksum | ETX | -------------------------------------------------------------------- STX and ETX are defined in dimage.h; their values are 0x02 and 0x03. Seq is the sequence number; start at zero. Payload is the good stuff. Checksum is the sum of all bytes 0 through ( n-4 ) mod 65536. A packet must be at least eight bytes, with at least one byte of payload. */ dimagev_packet *dimagev_make_packet(const unsigned char *const buffer, unsigned int length, unsigned int seq) { unsigned int i=0, checksum=0; dimagev_packet *p; if ( ( p = calloc(1, sizeof(dimagev_packet) ) ) == NULL ) { GP_DEBUG("dimagev_make_packet::unable to allocate packet"); return NULL; } p->length = length + 7; p->buffer[0] = DIMAGEV_STX; p->buffer[1] = seq & 0x000000ff; p->buffer[2] = ( p->length & 0x0000ff00) >> 8; p->buffer[3] = p->length & 0x000000ff; memcpy(&(p->buffer[4]), buffer, (unsigned int) length); /* Now the footer. */ for (i=0 ; i < p->length - 3 ; i++ ) { checksum += (unsigned int) p->buffer[i]; } p->buffer[(p->length - 3)] = (unsigned char) ((checksum & 0x0000ff00) >> 8 ); p->buffer[(p->length - 2)] = (unsigned char) ( checksum & 0x000000ff ); p->buffer[(p->length - 1)] = (unsigned char) DIMAGEV_ETX; return p; } /* dimagev_verify_packet(): return GP_OK if valid packet, GP_ERROR otherwise. */ int dimagev_verify_packet(dimagev_packet *p) { int i=0; unsigned short correct_checksum=0, current_checksum=0; /* All packets must start with DIMAGEV_STX and end with DIMAGEV_ETX. It's an easy check. */ if ( ( p->buffer[0] != (unsigned char) DIMAGEV_STX ) || ( p->buffer[(p->length - 1)] != (unsigned char) DIMAGEV_ETX ) ) { GP_DEBUG( "dimagev_verify_packet::packet missing STX and/or ETX"); return GP_ERROR_CORRUPTED_DATA; } correct_checksum = (p->buffer[(p->length - 3)] * 256) + p->buffer[(p->length - 2)]; for ( i = 0 ; i < ( p->length - 3 ) ; i++ ) { current_checksum += p->buffer[i]; } if ( current_checksum != correct_checksum ) { GP_DEBUG( "dimagev_verify_packet::checksum bytes were %02x%02x, checksum was %d, should be %d", p->buffer[( p->length - 3) ], p->buffer[ ( p->length -2 ) ], current_checksum, correct_checksum); return GP_ERROR_CORRUPTED_DATA; } else { return GP_OK; } } dimagev_packet *dimagev_read_packet(dimagev_t *dimagev) { dimagev_packet *p; unsigned char char_buffer; if ( ( p = malloc(sizeof(dimagev_packet)) ) == NULL ) { GP_DEBUG("dimagev_read_packet::unable to allocate packet"); return NULL; } if ( gp_port_read(dimagev->dev, (char *)p->buffer, 4) < GP_OK ) { GP_DEBUG( "dimagev_read_packet::unable to read packet header - will try to send NAK"); free(p); /* Send a NAK */ char_buffer = DIMAGEV_NAK; if ( gp_port_write(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_read_packet::unable to send NAK"); return NULL; } /* Who likes recursion? */ return dimagev_read_packet(dimagev); } p->length = ( p->buffer[2] * 256 ) + ( p->buffer[3] ); if ( gp_port_read(dimagev->dev, (char *)&(p->buffer[4]), ( p->length - 4)) < GP_OK ) { GP_DEBUG( "dimagev_read_packet::unable to read packet body - will try to send NAK"); free(p); /* Send a NAK */ char_buffer = DIMAGEV_NAK; if ( gp_port_write(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_read_packet::unable to send NAK"); return NULL; } /* Who likes recursion? */ return dimagev_read_packet(dimagev); } /* Now we *should* have a packet. Let's do a sanity check. */ if ( dimagev_verify_packet(p) < GP_OK ) { GP_DEBUG( "dimagev_read_packet::got an invalid packet - will try to send NAK"); free(p); /* Send a NAK */ char_buffer = DIMAGEV_NAK; if ( gp_port_write(dimagev->dev, (char *)&char_buffer, 1) < GP_OK ) { GP_DEBUG( "dimagev_read_packet::unable to send NAK"); return NULL; } /* Who likes recursion? */ return dimagev_read_packet(dimagev); } return p; } void dimagev_dump_packet(dimagev_packet *p) { int i=0; printf("Packet length is %d\n", p->length); for ( i = 0 ; i < p->length ; i++ ) { printf("%02x ",(unsigned int) p->buffer[i]); } printf("\n"); return; } dimagev_packet *dimagev_strip_packet(dimagev_packet *p) { dimagev_packet *stripped; /* All camera packets must start with DIMAGEV_STX and end with DIMAGEV_ETX. */ /* Packets used as strings shouldn't have these. It's an easy check. */ if ( ( p->buffer[0] != (unsigned char) DIMAGEV_STX ) || ( p->buffer[(p->length - 1)] != (unsigned char) DIMAGEV_ETX ) ) { return NULL; } if ( ( stripped = malloc(sizeof(dimagev_packet)) ) == NULL ) { GP_DEBUG("dimagev_strip_packet::unable to allocate destination packet"); return NULL; } stripped->length = ( p->length - 7 ); memcpy(stripped->buffer, &(p->buffer[4]), stripped->length); return stripped; } unsigned char dimagev_decimal_to_bcd(unsigned char decimal) { unsigned char bcd = (unsigned char) 0; int tensdigit = 0; if ( decimal > (unsigned char) 99 ) { /* No good way to handle this. */ return (unsigned char) 0; } else { tensdigit = decimal / 10; bcd = tensdigit * 16; bcd += decimal % 10; return bcd; } } unsigned char dimagev_bcd_to_decimal(unsigned char bcd) { if ( bcd > 99 ) { /* The highest value that we can handle in BCD */ return (unsigned char) 99; } else { return ((bcd/16)*10 + (bcd%16)); } } int dimagev_packet_sequence(dimagev_packet *p) { return (int) p->buffer[1]; } libgphoto2-2.5.9/camlibs/soundvision/0000755000175000001440000000000012623156270014573 500000000000000libgphoto2-2.5.9/camlibs/soundvision/commands.h0000644000175000001440000000220112610415617016457 00000000000000/* * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef commands_H #define commands_H int32_t soundvision_send_command(uint32_t command, uint32_t argument, CameraPrivateLibrary *dev); int32_t soundvision_send_file_command(const char *filename, CameraPrivateLibrary *dev); int32_t soundvision_read(CameraPrivateLibrary *dev, void *buffer, int len); #endif libgphoto2-2.5.9/camlibs/soundvision/README.soundvision0000644000175000001440000000216312561423351017752 00000000000000This directory contains drivers for camerase that use the Sound Vision Inc (http://www.soundvisioninc.com) "Clarity 2" Chipset. The Agfa ePhoto CL18 type cameras are an earlier design known as the "1307" which support 640x480 and USB only. The Tiger FastFlicks type design is the "V1 Low-Cost Dual Mode VGA Digital Camera" which can do many resolutions, short MOV movies, and complact-flash of a sort. Sound Vision licences the design to many companys, hence the wide variety of brands supported by this driver. Sound Vision refuses to release documentation, so this driver is based entirely on reverse-engineering USB transactions. List of Cameras known to work with this driver: Agfa ePhoto CL18 Mustek gSmart 350 RCA CDS1005 Ixla DualCam 640 Argus:DC-2200 CoolCam CP086 FujiFilm @xia iX-100 (or "Axia ix-100") Media-Tech mt-406 Oregon Scientific DShot II Oregon Scientific DShot III Scott APX 30 StarCam CP086 Tiger Fast Flicks Cameras that might work with the proper USB ID's or are unverified to work: Digital Dreams l'elite Eye Q3X Digital Polaroid MP3 Pretec DC530 libgphoto2-2.5.9/camlibs/soundvision/soundvision.c0000644000175000001440000003437312610415617017250 00000000000000/* * soundvision.c * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * * For cameras using the Clarity2 chip made by Soundvision Inc. * Made entirely w/o Soundvision's help. They would not give * documentation. Reverse-engineered from usb-traces. * * Copyright 2002-2003 Vince Weaver * * Originally based on the digita driver * Copyright 1999-2000 Johannes Erdfelt, VA Linux Systems */ #include "config.h" #include #include #include #include #include #ifdef OS2 #include #endif #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "soundvision.h" #include #define GP_MODULE "soundvision" static const struct { char *name; unsigned short idVendor; unsigned short idProduct; char serial; } models[] = { {"Agfa:ePhoto CL18",0x06bd,0x0403,0}, {"Mustek:gSmart 350",0x055f,0xa350,0}, {"RCA:CDS1005",0x0784,0x0100,0}, {"Ixla:DualCam 640",0x0784,0x0100,0}, {"Pretec:dc530",0x0784,0x5300,0}, {"Generic SoundVision:Clarity2",0x0919,0x100,0}, {"Argus:DC-2200",0x0919,0x100,0}, {"CoolCam:CP086",0x0919,0x100,0}, {"DigitalDream:l'elite",0x0919,0x0100,0}, {"FujiFilm:@xia ix-100",0x0919,0x0100,0}, {"Media-Tech:mt-406",0x0919,0x0100,0}, {"Oregon Scientific:DShot II",0x0919,0x0100,0}, {"Oregon Scientific:DShot III",0x0919,0x0100,0}, {"Scott:APX 30",0x0919,0x0100,0}, {"StarCam:CP086",0x0919,0x100,0}, {"Tiger:Fast Flicks",0x0919,0x0100,0}, {NULL,0,0,0} }; int camera_id(CameraText *id) { strcpy(id->text, "soundvision"); return GP_OK; } int camera_abilities(CameraAbilitiesList *list) { int i; CameraAbilities a; for(i=0; models[i].name; i++) { memset(&a, 0, sizeof(a)); strcpy(a.model, models[i].name); /* Agfa and Dshot types owned by author and tested */ /* Others the testing not quite certain */ if ( (models[i].idVendor==0x06bd) || (models[i].idVendor==0x0919)) a.status = GP_DRIVER_STATUS_PRODUCTION; else a.status = GP_DRIVER_STATUS_EXPERIMENTAL; /* For now all are USB. Have the spec for Serial */ /* If ever one shows up */ a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; /* All should support image capture */ a.operations = GP_OPERATION_CAPTURE_IMAGE; /* Folders not supported on any */ a.folder_operations = GP_FOLDER_OPERATION_NONE; /* Dshot compat can upload files */ if (models[i].idVendor==0x0919) { a.file_operations|=GP_FOLDER_OPERATION_PUT_FILE; } a.file_operations = GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_DELETE; gp_abilities_list_append(list, a); } return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG("MAKE ME GP_DEBUG Reset: %i pics: %i odd_command: %i\n", camera->pl->reset_times, camera->pl->num_pictures, camera->pl->odd_command); /* We _must_ reset an even number of times ?? */ /* It's more complicated than that. *sigh* */ if (camera->pl->reset_times==1) { soundvision_reset (camera->pl,NULL,NULL); #if 0 /* Odd number of pics */ if (camera->pl->num_pictures%2==1) { if (!camera->pl->odd_command) soundvision_reset (camera->pl,NULL,NULL); } else { if (camera->pl->odd_command) soundvision_reset (camera->pl,NULL,NULL); } #endif } if (camera->pl) { if (camera->pl->file_list) { free(camera->pl->file_list); camera->pl->file_list = NULL; } free(camera->pl); camera->pl = NULL; } return GP_OK; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera=data; int i; char temp_file[14]; GP_DEBUG ("camera_file_list %s\n", folder); if (soundvision_get_file_list(camera->pl) < 0) { GP_DEBUG ("Could not soundvision_file_list!"); return GP_ERROR; } for(i=0; i < camera->pl->num_pictures; i++) { strncpy(temp_file,camera->pl->file_list+(13*i),12); temp_file[12]=0; gp_list_append (list, temp_file, NULL); } return GP_OK; } static int soundvision_file_get (Camera *camera, const char *filename, int thumbnail, unsigned char **data, int *size) { int buflen,throwaway,result; if (thumbnail) GP_DEBUG( "Getting thumbnail '%s'...",filename); else GP_DEBUG( "Getting file '%s'...",filename); if (camera->pl->device_type==SOUNDVISION_TIGERFASTFLICKS) { result=tiger_set_pc_mode(camera->pl); if (thumbnail) buflen=soundvision_get_thumb_size(camera->pl,filename); else buflen=soundvision_get_pic_size(camera->pl,filename); if (buflen < 0) return buflen; } else { soundvision_reset(camera->pl,NULL,NULL); /* Always have to check num photos, * then pic size no matter what. Otherwise * the camera will stop responding */ throwaway=soundvision_photos_taken(camera->pl); if (throwaway<0) { result=throwaway; goto file_get_error; } /* The below two lines might look wrong, but they aren't! */ buflen = soundvision_get_pic_size(camera->pl,filename); if (thumbnail) buflen=soundvision_get_thumb_size(camera->pl,filename); } /* Don't try to download if size equals zero! */ if (buflen) { *data = malloc(buflen+1); if (!*data) { result=GP_ERROR_NO_MEMORY; goto file_get_error; } memset(*data, 0, buflen); if (thumbnail) { result=soundvision_get_thumb(camera->pl, filename, *data, buflen); if (result < 0) { GP_DEBUG("soundvision_get_thumb_failed!"); goto file_get_error; } } else { result=soundvision_get_pic(camera->pl, filename, *data, buflen); if (result < 0) { GP_DEBUG("soundvision_get_pic_failed!"); goto file_get_error; } } if (size) *size = buflen; } return GP_OK; file_get_error: if (*data!=NULL) free(*data); return result; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { char *pos; Camera *camera = user_data; unsigned char *data = NULL; int size,ret; switch (type) { case GP_FILE_TYPE_NORMAL: ret=soundvision_file_get(camera, filename, 0, &data, &size); if (ret<0) return ret; break; case GP_FILE_TYPE_PREVIEW: ret=soundvision_file_get(camera, filename, 1, &data, &size); if (ret<0) return ret; break; default: return GP_ERROR_NOT_SUPPORTED; } if (!data) return GP_ERROR; gp_file_set_data_and_size (file, (char *)data, size); /* Maybe skip below if EXIF data present? */ /* As far as I know we only support JPG and MOV */ /* Maybe some have MP3??? */ pos=strchr (filename, '.'); if (pos) { if ((!strcmp(pos,".JPG")) || ((!strcmp(pos,".jpg")))) gp_file_set_mime_type (file, GP_MIME_JPEG); else if (!strcmp(pos,".MOV")) gp_file_set_mime_type (file, GP_MIME_QUICKTIME); else gp_file_set_mime_type (file, GP_MIME_UNKNOWN); } return GP_OK; } static int camera_summary(Camera *camera, CameraText *summary, GPContext *context) { char revision[9]; soundvision_reset(camera->pl,revision,NULL); if (camera->pl->device_type==SOUNDVISION_TIGERFASTFLICKS) { int mem_total,mem_free,num_pics, ret; ret = tiger_get_mem(camera->pl,&num_pics,&mem_total,&mem_free); if (ret < GP_OK) return ret; sprintf(summary->text, _("Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n"), revision,num_pics,mem_total,mem_free); } else { sprintf(summary->text, _("Firmware Revision: %8s"), revision); } return GP_OK; } static int camera_about(Camera *camera, CameraText *about, GPContext *context) { strcpy(about->text, _("Soundvision Driver\nVince Weaver \n")); return GP_OK; } /* Below contributed by Ben Hague */ static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { int result; if (camera->pl->device_type==SOUNDVISION_AGFACL18) result=agfa_capture(camera->pl,path); else if (camera->pl->device_type==SOUNDVISION_TIGERFASTFLICKS) { result=tiger_capture(camera->pl,path); } else return GP_ERROR_NOT_SUPPORTED; if (result < GP_OK) return result; soundvision_get_file_list(camera->pl); /* For some reason last taken picture is first on tiger? */ /* Might be last on Agfa. Who knows. Craziness. */ if (camera->pl->num_pictures<1) return GP_ERROR; strcpy (path->name,camera->pl->file_list); strcpy (path->folder, "/"); /* gp_filesystem_append (camera->fs, path->folder, path->name, context);*/ return GP_OK; } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; GP_DEBUG("Deleting '%s' in '%s'...",filename,folder); soundvision_delete_picture(camera->pl,filename); /* Update our file list */ if (soundvision_get_file_list(camera->pl)<0) return GP_ERROR; return GP_OK; } static int put_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera=data; const char *data_file; long unsigned int data_size; /* * Upload the file to the camera. Use gp_file_get_data_and_size, etc. */ GP_DEBUG ("*** put_file_func"); GP_DEBUG ("*** folder: %s", folder); GP_DEBUG ("*** filename: %s", filename); gp_file_get_data_and_size (file, &data_file, &data_size); if ( data_size == 0) { gp_context_error (context, _("The file to be uploaded has a null length")); return GP_ERROR_BAD_PARAMETERS; } /* Should check memory here */ /* if (available_memory < data_size) { gp_context_error (context, _("Not enough memory available on the memory card")); return GP_ERROR_NO_MEMORY; } */ tiger_upload_file (camera->pl, filename,data_file,data_size); return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .put_file_func = put_file_func, .del_file_func = delete_file_func, }; int camera_init(Camera *camera, GPContext *context) { GPPortSettings settings; CameraAbilities a; int ret = 0; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->capture = camera_capture; GP_DEBUG ("Initializing the camera\n"); switch (camera->port->type) { case GP_PORT_USB: ret=gp_port_get_settings(camera->port,&settings); if (ret<0) return ret; /* Use the defaults the core parsed */ ret=gp_port_set_settings(camera->port,settings); if (ret<0) return ret; break; case GP_PORT_SERIAL: return GP_ERROR_IO_SUPPORTED_SERIAL; default: return GP_ERROR_NOT_SUPPORTED; } /* Set up camera private library */ camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); camera->pl->gpdev = camera->port; /* Set up the sub-architectures */ /* Default to Agfa. Should we default otherwise? */ camera->pl->device_type=SOUNDVISION_AGFACL18; gp_camera_get_abilities (camera, &a); if ((a.usb_vendor==0x0919) && (a.usb_product==0x0100)) { camera->pl->device_type=SOUNDVISION_TIGERFASTFLICKS; } if ((a.usb_vendor==0x0784) && (a.usb_product==0x0100)) { camera->pl->device_type=SOUNDVISION_IXLA; } /* Keep track. We _must_ reset an even number of times */ camera->pl->reset_times=0; camera->pl->odd_command=0; /* Reset the camera */ ret = soundvision_reset (camera->pl,NULL,NULL); if (ret < 0) { free (camera->pl); camera->pl = NULL; return (ret); } /* Tell the CameraFilesystem where to get lists from */ return gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); } libgphoto2-2.5.9/camlibs/soundvision/agfa_cl18.c0000644000175000001440000002275112610415617016412 00000000000000/* * agfa_cl18.c * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * Command set specific to agfa-ephoto-CL18 * * Copyright 2001-2002 Vince Weaver */ #include "config.h" #include #include #include #include #include #ifdef OS2 #include #endif #include #include #include "gphoto2-endian.h" #include "soundvision.h" #include "commands.h" #define GP_MODULE "soundvision" /* Below contributed by Ben Hague */ int agfa_capture(CameraPrivateLibrary *dev, CameraFilePath *path) { /*FIXME: Not fully implemented according to the gphoto2 spec.*/ /*Should also save taken picture, and then delete it from the camera*/ /*but when I try to do that it just hangs*/ int ret; ret=soundvision_send_command(SOUNDVISION_SETPC1,0,dev); if (ret < 0) return ret; ret=soundvision_send_command(SOUNDVISION_SETPC2,0,dev); if (ret < 0) return ret; ret=soundvision_send_command(SOUNDVISION_TAKEPIC3,0,dev); if (ret < 0) return ret; ret=soundvision_send_command(SOUNDVISION_SETPC2,0,dev); if (ret < 0) return ret; /*Not sure if this delay is necessary, but it was used in the windows driver*/ /*delay(20); */ sleep(20); /*Again, three times in windows driver*/ soundvision_photos_taken(dev); soundvision_photos_taken(dev); soundvision_photos_taken(dev); /*This seems to do some kind of reset, but does cause the camera to start responding again*/ ret=soundvision_send_command(SOUNDVISION_GET_NAMES, 0, dev); if (ret < 0) return ret; return GP_OK; } /* Seems to work OK though sometimes camera is left in */ /* unknown state after completing */ /* thanks to heathhey3@hotmail.com for sending me the trace */ /* to implement this */ int agfa_delete_picture(CameraPrivateLibrary *dev, const char *filename) { int32_t ret,temp,taken; uint8_t data[4],*buffer; uint32_t size=4,buflen; /* yes, we do this twice?? */ taken=soundvision_photos_taken(dev); taken=soundvision_photos_taken(dev); ret = soundvision_send_command(SOUNDVISION_GET_PIC_SIZE,0,dev); if (ret<0) return ret; /* always returns ff 0f 00 00 ??? */ ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) return ret; /* Some traces show sending other than the file we want deleted? */ ret=soundvision_send_file_command(filename,dev); if (ret<0) return ret; ret = soundvision_read(dev, data, size); if (ret<0) return ret; /* Check num taken AGAIN */ taken=soundvision_photos_taken(dev); ret = soundvision_send_command(SOUNDVISION_GET_PIC_SIZE,0,dev); if (ret<0) return ret; /* always returns ff 0f 00 00 ??? */ ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) return ret; ret=soundvision_send_file_command(filename,dev); if (ret<0) return ret; ret = soundvision_read(dev, data, size); if (ret<0) return ret; /* Check num taken AGAIN */ taken=soundvision_photos_taken(dev); ret=soundvision_send_command(SOUNDVISION_DELETE,0,dev); if (ret<0) return ret; /* read ff 0f ??? */ ret = soundvision_read(dev, data, size); if (ret<0) return ret; ret = soundvision_send_file_command(filename,dev); if (ret<0) return ret; /* This is the point we notices that in fact a pic is missing */ /* Why do it 4 times??? Timing?? Who knows */ taken=soundvision_photos_taken(dev); taken=soundvision_photos_taken(dev); taken=soundvision_photos_taken(dev); taken=soundvision_photos_taken(dev); buflen = (taken * 13)+1; /* 12 char filenames and space for each */ /* plus trailing NULL */ buffer = malloc(buflen); if (!buffer) { GP_DEBUG("Could not allocate %i bytes!", buflen); return (GP_ERROR_NO_MEMORY); } ret=soundvision_send_command(SOUNDVISION_GET_NAMES, buflen,dev); if (ret < 0) { free(buffer); return ret; } ret = soundvision_read(dev, (void *)buffer, buflen); if (ret < 0) { free(buffer); return ret; } if (dev->file_list) free(dev->file_list); dev->file_list = (char *)buffer; ret=soundvision_send_command(SOUNDVISION_GET_PIC_SIZE,0,dev); if (ret<0) return ret; /* always returns ff 0f 00 00 ??? */ ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) return ret; ret=soundvision_send_file_command(filename,dev); if (ret<0) return ret; ret = soundvision_read(dev, data, size); if (ret<0) return ret; return GP_OK; } int agfa_get_file_list(CameraPrivateLibrary *dev) { char *buffer; int32_t ret, taken, buflen,i; /* It seems we need to do a "reset" packet before reading names?? */ soundvision_reset(dev,NULL,NULL); if ( (taken=soundvision_photos_taken(dev)) < 0) return taken; dev->num_pictures = taken; buflen = (taken * 13)+1; /* 12 char filenames and space for each */ /* plus trailing NULL */ buffer = malloc(buflen); if (!buffer) { GP_DEBUG("Could not allocate %i bytes!", buflen); return GP_ERROR_NO_MEMORY; } ret=soundvision_send_command(SOUNDVISION_GET_NAMES, buflen, dev); if (ret < 0) { free(buffer); return ret; } ret = soundvision_read(dev, (void *)buffer, buflen); if (ret < 0) { free(buffer); return ret; } if (dev->file_list) free(dev->file_list); dev->file_list = malloc(taken * 13); if (!dev->file_list) { GP_DEBUG("Could not allocate %i bytes!", taken*13); free(buffer); return (GP_ERROR_NO_MEMORY); } for(i=0;ifile_list, buffer, taken * 13); free(buffer); #if 0 taken=soundvision_photos_taken(dev); soundvision_get_thumb_size(dev,dev->file_list); #endif return GP_OK; } int agfa_get_pic(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size) { int32_t ret,temp; ret = soundvision_send_command(SOUNDVISION_GET_PIC,0,dev); if (ret<0) return ret; /* always returns ff 0f 00 00 ??? */ ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) return ret; ret=soundvision_send_file_command(filename,dev); if (ret<0) return ret; ret = soundvision_read(dev, data, size); if (ret<0) return ret; #if 0 /* Have to do this after getting pic ? */ ret=soundvision_send_command(SOUNDVISION_DONE_PIC,0,dev); if (ret<0) return ret; #endif return GP_OK; } int agfa_get_pic_size(CameraPrivateLibrary *dev, const char *filename) { int32_t ret,temp; uint32_t size; ret=soundvision_send_command(SOUNDVISION_GET_PIC_SIZE,0,dev); if (ret<0) return ret; /* always returns ff 0f 00 00 ??? */ ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) return ret; ret=soundvision_send_file_command(filename,dev); if (ret<0) return ret; ret = soundvision_read(dev, &size, sizeof(size)); if (ret<0) return ret; return le32toh(size); } int agfa_get_thumb_size(CameraPrivateLibrary *dev, const char *filename) { int32_t ret,temp; uint32_t size; ret=soundvision_send_command(SOUNDVISION_GET_THUMB_SIZE,0,dev); if (ret<0) return ret; /* always returns ff 0f 00 00 ??? */ ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) return ret; ret = soundvision_send_file_command(filename,dev); if (ret<0) return ret; ret = soundvision_read(dev, &size, sizeof(size)); if (ret<0) return ret; return le32toh(size); } int agfa_get_thumb(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size) { int32_t ret,temp; ret = soundvision_send_command(SOUNDVISION_GET_THUMB,0,dev); if (ret<0) return ret; /* always returns ff 0f 00 00 ??? */ ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) return ret; ret=soundvision_send_file_command(filename,dev); if (ret<0) return ret; ret = soundvision_read(dev, data, size); if (ret<0) return ret; #if 0 /* Is this needed? */ soundvision_photos_taken(dev,&ret); ret=soundvision_send_command(SOUNDVISION_END_OF_THUMB,0,dev); if (ret<0) return ret; ret = soundvision_read(dev, temp_string, 8); if (ret<0) return ret; #endif return GP_OK; } libgphoto2-2.5.9/camlibs/soundvision/commands.c0000644000175000001440000001576612610415617016476 00000000000000/* * commands.c * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * * Command set for the soundvision cameras * * Copyright 2001-2003 Vince Weaver */ #include "config.h" #include #include #include #include #include #ifdef OS2 #include #endif #include #include "gphoto2-endian.h" #include "soundvision.h" #include "commands.h" #define GP_MODULE "soundvision" /* Regular commands always 8 bytes long */ int32_t soundvision_send_command(uint32_t command, uint32_t argument, CameraPrivateLibrary *dev) { uint8_t cmd[12]; int result; htole32a(&cmd[0],8); /* Length "8" in little-endian 32bits */ htole32a(&cmd[4],command); /* Command is a little-endian 32bits */ htole32a(&cmd[8],argument); /* Argument is a little-endian 32bits */ result=gp_port_write(dev->gpdev,(char *)&cmd,sizeof(cmd)); if (result<0) return result; return GP_OK; } /* Filenames are always 12 bytes long */ int32_t soundvision_send_file_command(const char *filename, CameraPrivateLibrary *dev) { char file_cmd[16]; htole32a(&file_cmd[0],0xc); /* Length is 12 little-endian 32 bits */ strncpy(&file_cmd[4],filename,12); /* Filename is 12 bytes at the end */ return gp_port_write (dev->gpdev, file_cmd, sizeof(file_cmd)); } /* USB-only */ int32_t soundvision_read(CameraPrivateLibrary *dev, void *buffer, int len) { return gp_port_read(dev->gpdev, buffer, len); } /* Reset the camera */ int soundvision_reset(CameraPrivateLibrary *dev,char *revision, char *status) { int ret,attempts=0; retry_reset: /* This prevents lockups on tiger !!!! */ ret=soundvision_send_command(SOUNDVISION_START_TRANSACTION,0,dev); if (ret<0) goto reset_error; /* First get firmware revision */ ret=soundvision_get_revision(dev,revision); /* If camera out of whack, this is where it will hang */ /* If we retry a few times usually after a few timeouts */ /* It will get going again */ if (ret<0) { if (attempts<2) { attempts++; goto retry_reset; } else goto reset_error; } /* Dshot 3 camera does 2 extra steps */ /* Seems to enable extra info in status */ /* What does it do? It works w/o it */ /* And other tiger cameras might not */ /* need it. */ #if 0 if (dev->device_type==SOUNDVISION_TIGERFASTFLICKS) { char result[12]; /* What does 0x405 signify? */ ret=soundvision_send_command(SOUNDVISION_SETPC2,0x405,dev); if (ret<0) goto reset_error; ret=soundvision_send_command(SOUNDVISION_INIT2,0,dev); if (ret<0) goto reset_error; /* Read returned value. Why 0x140,0xf,0x5 ? */ ret = soundvision_read(dev, &result, sizeof(result)); if (ret<0) goto reset_error; } #endif /* Read the status registers */ dev->reset_times++; if (dev->device_type!=SOUNDVISION_IXLA) { ret=soundvision_get_status(dev,status); if (ret<0) goto reset_error; } return GP_OK; reset_error: GP_DEBUG("Error in soundvision_reset\n"); return ret; } int soundvision_get_revision(CameraPrivateLibrary *dev, char *revision) { int ret; char version[9]; ret = soundvision_send_command(SOUNDVISION_GET_VERSION,0,dev); if (ret<0) return ret; ret = soundvision_read(dev, &version, sizeof(version)-1); if (ret<0) return ret; /* If null we don't care */ if (revision!=NULL) { strncpy(revision,version,8); revision[8]=0; } return GP_OK; } /* Status is a 96 byte array. */ /* Haven't been able to decode it yet */ /* It changes with every read though */ int soundvision_get_status(CameraPrivateLibrary *dev, char *status) { uint8_t ss[0x60]; int32_t ret; ret=soundvision_send_command(SOUNDVISION_STATUS, 0, dev); if (ret < 0) goto get_status_error; ret = soundvision_read(dev, (unsigned char *)&ss, sizeof(ss)); if (ret < 0) goto get_status_error; if (status!=NULL) { memcpy(status,ss,0x60); } return GP_OK; get_status_error: GP_DEBUG("Error getting camera status\n"); return ret; } int soundvision_photos_taken(CameraPrivateLibrary *dev) { int32_t ret; uint32_t numpics; ret=soundvision_send_command(SOUNDVISION_GET_NUM_PICS, 0, dev); if (ret < 0) goto error_photos_taken; ret = soundvision_read(dev, &numpics, sizeof(numpics)); if (ret < 0) goto error_photos_taken; return le32toh(numpics); error_photos_taken: GP_DEBUG("Error getting number of photos taken.\n"); return ret; } int soundvision_get_file_list(CameraPrivateLibrary *dev) { if (dev->device_type==SOUNDVISION_TIGERFASTFLICKS) return tiger_get_file_list(dev); else return agfa_get_file_list(dev); } int soundvision_get_thumb_size(CameraPrivateLibrary *dev, const char *filename) { if (dev->device_type==SOUNDVISION_TIGERFASTFLICKS) return tiger_get_thumb_size(dev,filename); else return agfa_get_thumb_size(dev,filename); } int soundvision_get_thumb(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size) { if (dev->device_type==SOUNDVISION_TIGERFASTFLICKS) return tiger_get_thumb(dev,filename,data,size); else return agfa_get_thumb(dev,filename,data,size); } int soundvision_get_pic_size(CameraPrivateLibrary *dev, const char *filename) { if (dev->device_type==SOUNDVISION_TIGERFASTFLICKS) return tiger_get_pic_size(dev,filename); else return agfa_get_pic_size(dev,filename); } int soundvision_get_pic(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size) { if (dev->device_type==SOUNDVISION_TIGERFASTFLICKS) return tiger_get_pic(dev,filename,data,size); else return agfa_get_pic(dev,filename,data,size); } int soundvision_delete_picture(CameraPrivateLibrary *dev, const char *filename) { if (dev->device_type==SOUNDVISION_TIGERFASTFLICKS) return tiger_delete_picture(dev,filename); else return agfa_delete_picture(dev,filename); } libgphoto2-2.5.9/camlibs/soundvision/Makefile-files0000644000175000001440000000076212561423351017256 00000000000000EXTRA_DIST += soundvision/README.soundvision soundvision/BUGS soundvision/ChangeLog camlibdoc_DATA += soundvision/README.soundvision EXTRA_LTLIBRARIES += soundvision.la soundvision_la_SOURCES = \ soundvision/soundvision.c soundvision/agfa_cl18.c \ soundvision/tiger_fastflicks.c \ soundvision/commands.c soundvision/commands.h \ soundvision/soundvision.h soundvision_la_LDFLAGS = $(camlib_ldflags) soundvision_la_DEPENDENCIES = $(camlib_dependencies) soundvision_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/soundvision/BUGS0000644000175000001440000000045612557123324015203 00000000000000Known Bugs: overall: * Long timeout (and usb read error) on alternate runnings of gphoto2. All attempts to track this down so far have failed. agfa-specific: tiger-fastflicks specific: * File upload for tiger doesn't work [even though it should]. * Delete-all on tiger sometimes causes problems. libgphoto2-2.5.9/camlibs/soundvision/ChangeLog0000644000175000001440000000303312557123324016264 000000000000002003-06-14 Dan Fandrich * soundvision.h: Include _stdint.h to get fixed-size integer types. 2002-02-11 Vince Weaver * Completely redid tiger support. Involved separating out more functions from Agfa, extensive looking at usb-traces, etc. delete and image-capture should now work on Tiger. File upload should work but doesn't. * All attempts to fix the stall upon subsequent re-running of gphoto2 failed. It seems to be somewhat arbitrary. Sometimes a reset helps, sometimes not. * Agfa-CL18 should work more or less same as before. * Cleaned up a lot of the code. 2002-01-23 Vince Weaver * Add Argus DC-2200 2002-01-16 Vince Weaver * Add Pretec DC530 * Bought an Oregon Scientific DShot III to help debug the Tiger class cameras 2002-01-15 Vince Weaver * Add strings for a handful of cameras. 2002-12-30 Vince Weaver * Add strings for CoolCam/StarCam CP086 2002-11-29 Vince Weaver * Add usb id for Mustek gSmart 350 2002-11-05 Vince Weaver * Add strings for FujiFilm @xia iX-100 2002-10-24 Vince Weaver * Add usb-id for Scott APX 30. 2002-10-21 Vince Weaver * Add usb-id's for RCA CDS1005, and some name overloading for the Fastflicks driver. 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 libgphoto2-2.5.9/camlibs/soundvision/tiger_fastflicks.c0000644000175000001440000003046012610415617020204 00000000000000/* * tiger_fastflicks.c * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * * Commands specific to soundvision camears with usbid * 0x0919:0x0100 and possibly others. * * Tiger FastFlicks was first camera of this type * to be supported. * * Initial Support added by Dr. William Bland * Other help from Adrien Hernot * * Vince Weaver got such a camera in Jan 2003 and massively * re-wrote things. * * Copyright 2002-2003 Vince Weaver */ /* Routines for the 0x919:0x100 cameras that aren't compatible */ /* with the others go in this file */ #include "config.h" #include #include #include #include #include #ifdef OS2 #include #endif #include #include #include "gphoto2-endian.h" #include "soundvision.h" #include "commands.h" #define GP_MODULE "soundvision" /* Used at start of most tiger commands. Also */ /* Seems to set the camera into "PC" mode */ int tiger_set_pc_mode(CameraPrivateLibrary *dev) { int result; GP_DEBUG("tiger_set_pc_mode"); result=soundvision_send_command(SOUNDVISION_START_TRANSACTION,0,dev); if (result<0) goto set_pc_error; result=soundvision_get_revision(dev,NULL); if (result<0) goto set_pc_error; result=soundvision_send_command(SOUNDVISION_SETPC1,0,dev); if (result<0) goto set_pc_error; result=soundvision_send_command(SOUNDVISION_SETPC2,0,dev); if (result<0) goto set_pc_error; return GP_OK; set_pc_error: return result; } /* This is packet-for-packet what windows does */ /* The camera takes it all in stride. */ /* Yet uploaded file never appears. Why?? */ int tiger_upload_file(CameraPrivateLibrary *dev, const char *filename, const char *data, long size) { int result=0; char return_value[4]; uint32_t our_size; char *our_data=NULL; /* When we upload, the first 3 bytes are little-endian */ /* File-size followed by the actual file */ our_size=size+4; our_data=calloc(our_size,sizeof(char)); if (our_data==NULL) { goto upload_error; } htole32a(&our_data[0],size); memcpy(our_data+4,data,size); GP_DEBUG("File: %s Size=%ld\n",filename,size); /* for(result=0;resultgpdev,our_data,our_size); if (result<0) goto upload_error; free(our_data); our_data=NULL; #if 0 /* Some traces show the following, though most likely */ /* this is just the windows driver updating the file list */ result=soundvision_photos_taken(dev); result=soundvision_get_file_list(dev); result=soundvision_send_command(SOUNDVISION_GET_PIC_SIZE,0,dev); if (result<0) goto upload_error; result=soundvision_read(dev, &return_value, sizeof(return_value)); if (result<0) goto upload_error; result=soundvision_send_file_command("000VINCE.JPG",dev); result=soundvision_read(dev, &return_value, sizeof(return_value)); if (result<0) goto upload_error; result=soundvision_send_command(SOUNDVISION_DONE_TRANSACTION,0,dev); if (result<0) goto upload_error; #endif return GP_OK; upload_error: if (our_data!=NULL) free(our_data); GP_DEBUG("Error in tiger_upload_file"); return result; } int tiger_delete_picture(CameraPrivateLibrary *dev, const char *filename) { int32_t ret,temp; ret = tiger_set_pc_mode(dev); if (ret<0) goto delete_pic_error; ret = soundvision_send_command(SOUNDVISION_DELETE,0,dev); if (ret<0) goto delete_pic_error; /* should get fff if all is well */ ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) goto delete_pic_error; ret=soundvision_send_file_command(filename,dev); if (ret<0) goto delete_pic_error; ret = soundvision_send_command(SOUNDVISION_DONE_TRANSACTION,0,dev); if (ret<0) goto delete_pic_error; return GP_OK; delete_pic_error: return ret; } int tiger_get_mem(CameraPrivateLibrary *dev, int *num_pics, int *mem_total, int *mem_free) { int result=0; int temp_result; *num_pics=soundvision_photos_taken(dev); if (*num_pics<0) goto get_mem_error; result=soundvision_get_revision(dev,NULL); if (result<0) goto get_mem_error; result=soundvision_send_command(SOUNDVISION_GET_MEM_TOTAL,0,dev); if (result<0) goto get_mem_error; result=soundvision_read(dev, &temp_result, sizeof(temp_result)); if (result<0) goto get_mem_error; *mem_total=le32toh(temp_result); result=soundvision_send_command(SOUNDVISION_GET_MEM_FREE,0,dev); if (result<0) goto get_mem_error; result=soundvision_read(dev, &temp_result, sizeof(temp_result)); if (result<0) goto get_mem_error; *mem_free=le32toh(temp_result); return GP_OK; get_mem_error: GP_DEBUG("Error in tiger_get_mem"); return result; } int tiger_capture(CameraPrivateLibrary *dev, CameraFilePath *path) { int result=0,start_pics,num_pics,mem_total,mem_free; result=soundvision_send_command(SOUNDVISION_START_TRANSACTION,0,dev); if (result<0) goto tiger_capture_error; result=soundvision_get_revision(dev,NULL); if (result<0) goto tiger_capture_error; result=tiger_get_mem(dev,&start_pics,&mem_total,&mem_free); if (result<0) goto tiger_capture_error; result=soundvision_send_command(SOUNDVISION_SETPC2,0,dev); if (result<0) goto tiger_capture_error; result=soundvision_send_command(SOUNDVISION_TAKEPIC3,0,dev); if (result<0) goto tiger_capture_error; result=soundvision_send_command(SOUNDVISION_SETPC1,0,dev); if (result<0) goto tiger_capture_error; result=tiger_get_mem(dev,&num_pics,&mem_total,&mem_free); if (result<0) goto tiger_capture_error; while(num_pics==start_pics) { sleep(4); result=tiger_get_mem(dev,&num_pics,&mem_total,&mem_free); if (result<0) goto tiger_capture_error; } result=tiger_get_mem(dev,&num_pics,&mem_total,&mem_free); if (result<0) goto tiger_capture_error; return GP_OK; tiger_capture_error: GP_DEBUG("ERROR with tiger_capture"); return result; } int tiger_get_file_list(CameraPrivateLibrary *dev) { char *buffer=NULL; int32_t ret, taken, buflen,i; ret=tiger_set_pc_mode(dev); if (ret<0) goto list_files_error; if ( (taken=soundvision_photos_taken(dev)) < 0) { ret=taken; goto list_files_error; } dev->num_pictures = taken; if (taken>0) { buflen = (taken * 13)+1; /* 12 char filenames and space for each */ /* plus trailing NULL */ buffer = malloc(buflen); if (!buffer) { GP_DEBUG("Could not allocate %i bytes!",buflen); ret=GP_ERROR_NO_MEMORY; goto list_files_error; } ret=soundvision_send_command(SOUNDVISION_GET_NAMES, buflen, dev); if (ret < 0) { goto list_files_error; } ret = soundvision_read(dev, (void *)buffer, buflen); if (ret < 0) { goto list_files_error; } if (dev->file_list) free(dev->file_list); dev->file_list = malloc(taken * 13); if (!dev->file_list) { GP_DEBUG("Could not allocate %i bytes!",taken*13); ret=GP_ERROR_NO_MEMORY; goto list_files_error; } for(i=0;ifile_list, buffer, taken * 13); free(buffer); buffer=NULL; } ret=soundvision_send_command(SOUNDVISION_DONE_TRANSACTION, 0, dev); if (ret<0) goto list_files_error; /* If we have >1 pics we should stat a file?*/ /* Some traces do, some don't... */ /* if (taken>0) soundvision_get_pic_size(dev,dev->file_list); */ return GP_OK; list_files_error: if (buffer!=NULL) free(buffer); return ret; } int tiger_get_pic(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size) { int32_t ret,temp; GP_DEBUG("tiger_get_pic"); dev->odd_command=1; ret=soundvision_get_revision(dev,NULL); ret = soundvision_send_command(SOUNDVISION_GET_PIC,0,dev); if (ret<0) goto get_pic_error; ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) goto get_pic_error; ret=soundvision_send_file_command(filename,dev); if (ret<0) goto get_pic_error; ret = soundvision_read(dev, data, size); if (ret<0) goto get_pic_error; ret=soundvision_send_command(SOUNDVISION_DONE_TRANSACTION,0,dev); if (ret<0) goto get_pic_error; return GP_OK; get_pic_error: return ret; } int tiger_get_pic_size(CameraPrivateLibrary *dev, const char *filename) { int32_t ret,temp; uint32_t size; GP_DEBUG("tiger_get_pic_size"); ret=soundvision_send_command(SOUNDVISION_GET_PIC_SIZE,0,dev); if (ret<0) goto pic_size_error; /* should check that we get 0x0fff */ ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) goto pic_size_error; ret=soundvision_send_file_command(filename,dev); if (ret<0) goto pic_size_error; ret = soundvision_read(dev, &size, sizeof(size)); if (ret<0) goto pic_size_error; return le32toh(size); pic_size_error: return ret; } int tiger_get_thumb_size(CameraPrivateLibrary *dev, const char *filename) { int32_t ret,temp; uint32_t size; GP_DEBUG("tiger_get_thumb_size"); ret=soundvision_send_command(SOUNDVISION_GET_THUMB_SIZE,0,dev); if (ret<0) goto thumb_size_error; ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) goto thumb_size_error; ret = soundvision_send_file_command(filename,dev); if (ret<0) goto thumb_size_error; ret = soundvision_read(dev, &size, sizeof(size)); if (ret<0) goto thumb_size_error; return le32toh(size); thumb_size_error: return ret; } int tiger_get_thumb(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size) { int32_t ret,temp; ret=soundvision_get_revision(dev,NULL); ret = soundvision_send_command(SOUNDVISION_GET_THUMB,0,dev); if (ret<0) goto get_thumb_error; ret = soundvision_read(dev, &temp, sizeof(temp)); if (ret<0) goto get_thumb_error; ret=soundvision_send_file_command(filename,dev); if (ret<0) goto get_thumb_error; ret = soundvision_read(dev, data, size); if (ret<0) goto get_thumb_error; ret=soundvision_send_command(SOUNDVISION_DONE_TRANSACTION,0,dev); if (ret<0) goto get_thumb_error; return GP_OK; get_thumb_error: return ret; } libgphoto2-2.5.9/camlibs/soundvision/soundvision.h0000644000175000001440000001053112610415617017243 00000000000000/* * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef soundvision_H #define soundvision_H #include <_stdint.h> #define SOUNDVISION_START_TRANSACTION 0x0001 #define SOUNDVISION_SETPC2 0x0004 #define SOUNDVISION_GET_MEM_TOTAL 0x0065 #define SOUNDVISION_GET_MEM_FREE 0x0069 #define SOUNDVISION_TAKEPIC3 0x0092 #define SOUNDVISION_SETPC1 0x0094 #define SOUNDVISION_DELETE 0x0100 #define SOUNDVISION_GET_PIC 0x0101 #define SOUNDVISION_GET_PIC_SIZE 0x0102 #define SOUNDVISION_GET_NUM_PICS 0x0103 #define SOUNDVISION_DELETE_ALL2 0x0105 #define SOUNDVISION_GET_VERSION 0x0106 #define SOUNDVISION_GET_NAMES 0x0108 #define SOUNDVISION_PUT_FILE 0x0109 #define SOUNDVISION_GET_THUMB_SIZE 0x010A #define SOUNDVISION_GET_THUMB 0x010B #define SOUNDVISION_STATUS 0x0114 #define SOUNDVISION_INIT2 0x0115 #define SOUNDVISION_DONE_TRANSACTION 0x01FF #define SOUNDVISION_AGFACL18 0 #define SOUNDVISION_TIGERFASTFLICKS 1 #define SOUNDVISION_IXLA 2 struct _CameraPrivateLibrary { GPPort *gpdev; int device_type; int reset_times,odd_command; int num_pictures; char *file_list; }; /* commands.c */ int32_t soundvision_send_command(uint32_t command, uint32_t argument, CameraPrivateLibrary *dev); int soundvision_reset(CameraPrivateLibrary *dev, char *revision, char *status); int soundvision_get_revision(CameraPrivateLibrary *dev,char *revision); int soundvision_get_status(CameraPrivateLibrary *dev, char *status); int soundvision_photos_taken(CameraPrivateLibrary *dev); int soundvision_get_file_list(CameraPrivateLibrary *dev); int soundvision_delete_picture(CameraPrivateLibrary *dev, const char *filename); int soundvision_get_thumb_size(CameraPrivateLibrary *dev, const char *filename); int soundvision_get_thumb(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size); int soundvision_get_pic_size(CameraPrivateLibrary *dev, const char *filename); int soundvision_get_pic(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size); /* agfa_cl18.c */ int agfa_capture(CameraPrivateLibrary *dev, CameraFilePath *path); int agfa_delete_picture(CameraPrivateLibrary *dev, const char *filename); int agfa_get_file_list(CameraPrivateLibrary *dev); int agfa_get_pic(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size); int agfa_get_pic_size(CameraPrivateLibrary *dev, const char *filename); int agfa_get_thumb(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size); int agfa_get_thumb_size(CameraPrivateLibrary *dev, const char *filename); /* tiger_fastflicks.c */ int tiger_set_pc_mode(CameraPrivateLibrary *dev); int tiger_upload_file(CameraPrivateLibrary *dev, const char *filename, const char *data, long data_size); int tiger_delete_picture(CameraPrivateLibrary *dev, const char *filename); int tiger_capture(CameraPrivateLibrary *dev, CameraFilePath *path); int tiger_get_mem(CameraPrivateLibrary *dev, int *num_pics, int *mem_total, int *mem_free); int tiger_get_file_list(CameraPrivateLibrary *dev); int tiger_get_pic(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size); int tiger_get_pic_size(CameraPrivateLibrary *dev, const char *filename); int tiger_get_thumb(CameraPrivateLibrary *dev, const char *filename, unsigned char *data,int size); int tiger_get_thumb_size(CameraPrivateLibrary *dev, const char *filename); #endif libgphoto2-2.5.9/camlibs/konica/0000755000175000001440000000000012623156270013457 500000000000000libgphoto2-2.5.9/camlibs/konica/qm150.txt0000644000175000001440000001543212557123324015010 00000000000000Functions codes : all functions are preceded by escape code (0x1B). - 0x58 = ping (receive 1 byte = ACK or anything else will be an error) - 0x53 = get camera informations (receive 256 bytes of informations. Details after this list) - 0x49 0x3X 0x3X 0x3X 0x3X = get image informations (receive 256 bytes of informations. Details after this list) - 0x42 0x3X = Set broadcast speed : 0x30 = 9600 bauds 0x31 = 19200 bauds 0x32 = 38400 bauds 0x33 = 57600 bauds 0x34 = 115200 bauds (In all case, if ok, receive an ACK (1 byte)) - 0x47 0x46 0x3X 0x3X 0x3X 0x3X = Get image receive 1 byte which contains the ACK (0x6 = all is ok | 0x15 = there is an error) And by cycle : receive a part of the picture (512 bytes) receive a checksum (1 byte) we must send the result of the checksum (0x6 = All os OK | 0x15 = seems to be an error is happened) receive information about the transmission (1 byte) 0x1 = next buffer will be transmetted just after so we must loop 0x4 = finished : we must send an ACK (1 byte) and it's finished - 0x45 0x46 0x3X 0x3X 0x3X 0x3X = Delete an image (Receive an ACK (1 byte)) Here, we must check if image isn't protected - 0x45 0x46 0x30 0x30 0x30 0x30 = Delete all images (Receive an ACK (1 byte)) - 0x52 0x90 = Capture an image (Receive an ACK (1 byte)) Here, the camera must be in rec mode ! Camera's Information buffer : 0x00 - 0x02 = Seems to be a signature ? 0x03 0x03 0x02 0x03 - 0x04 = Len of the memory card (or just 0x04 ?!?) 0x05 - 0x06 = Ne serait-ce pas la taille du buffer de données ?! NON !!! ERRONE 0x07 = AC / pile (0 = pile | 1 = AC) 0x08 - 0x09 = Auto-extinction (en secondes) 0x0A = camera's mode (0x0 = play mode | 0x1 = rec mode) 0x0B = LCD (0 = on | 1 = off) 0x0C = Affichage de la barre sur l'écran du numérique (1 = absente | 0 = présente) 0x0D = Flash (0 = automatique | 1 = forcé | 2 = pas de flash) 0x0E = Minuterie (0 = off | 1 = on) 0x0F = Qualité d'enregistrement (0 = Normal | 1 = forte qualité | 2 = économique) 0x10 = white balance (0 = auto | 2 = office | 1 = Day-lt) 0x11 = exposure : 0 à 8 = 0, 0.3, 0.5, 0.8, 1.0, 1.3, 1.5, 1.8, 2.0 0xf8 à 0xff = -2.0, -1.8, -1.5, -1.3, -1.0, -0.8, -0.5, -0.3 0x12 - 0x13 = Images taken (MBR and LBR) 0x14 - 0x15 = Image remaining (MBR and LBR) 0x16 = Sharpness (0 = auto | 1 = sharp | 2 = soft) 0x17 = Color (0 = auto | 1 = light | 2 = deep | 3 = B/W | 4 = Sepia) 0x18 = Pre-flash (0 = off | 1 = on) 0x19 = Focus (0 = auto | 1 = 2.0m | 2 = 0.5m | 3 = 0.1m) 0x1A = Macro (0 = off | 1 = on) 0x1B = Zoom (0 = off | 1 = on) 0x1C - 0x1D = Rapport avec la carte mémoire : surement sa présence + sa taille ?? 0x1E = capture (0 = single | 1 = sequence 9) 0x1F = Date display (0 = off | 1 = on) 0x20 = Date display in play mode (0 = on | 1 = off) 0x21 = Date option (0 = M/D/Y | 1 = D/M/Y | 2 =Y/M/D) 0x22 - 0x25 = date and the time 0x25 - 0xFF = seems to be unused Image's Information buffer : 0x00 - 0x01 = ??? 0x02 - 0x03 = maybe the number of the next image ? 0x04 - 0x07 = seems to be Thumbnail size (in bytes) 0x08 - 0x0B = Image size (in bytes) 0x0E - 0x0F = Image number associated to this image info 0x0B - 0x10 = ??? 0x11 = Image protected (0x0 = no protection | 0x1 = Image protected) 0x12 - 0xFF = seels to be unused Escape codes of the windows driver: Ping: Writes 2 byte: 1B 58 ESC X Expects: 1 byte NACK/ACK Getcaminfo: Writes 2 byte: 1B 53 ESC S Expects: 1 byte NACK or 256 byte data. The 256 byte data must start with bytes: 03 03. cmd_C: UNSUPPORTED ! Writes 6 byte: 1B 43 ESC C x x y y Gets 2 numbers as argument. Expects: 1 byte, NACK/ACK cmd_H: UNSUPPORTED ! Writes 4 byte: 1B 48 ESC H x x The numbers are from a 8bit value passed to the command. Expects: 1 byte, NACK/ACK. SetSpeed: Writes 3 byte: 1B 42 ESC B x Speeds are mapped to this (ascii) number: 0 - 9600 1 - 19200 2 - 38400 3 - 57600 4 - 115200 Expects: 1 byte: NACK/ACK. ImageInfo 1: Writes 6 byte: 1B 49 ESC I xxxx Expects: 1 byte NACK or 256 byte data. The 256 byte data must start with 03 03. ImageInfo 2: Writes 7 byte: 1B 49 46 ESC I F xxxx Expects: 1 byte NACK or 256 byte data. The data is the same as in ImageInfo 1. Unclear what the difference between the 2 commands is. cmd_P 1: UNSUPPOTED ! Writes 10 byte: 1B 50 ESC P xxxxyyyy Expects: 1 byte NACK or 1024 byte data (?). cmd_P 2: UNSUPPORTED ! Writes 11 byte: 1B 50 46 ESC P F xxxxyyyy Expects: 1 byte NACK or 1024 byte data (?). cmd_V 1: UNSUPPORTED ! Writes 6 byte: 1B 56 ESC V xxxx Expects: 1 byte NACK/ACK. cmd_V 2: UNSUPPORTEd ! Writes 7 byte: 1B 56 46 ESC V F xxxx Expects: 1 byte NACK/ACK. Erase 1 (not used in win driver): Writes 6 byte: 1B 45 ESC E xxxx Expects: 1 byte NACK/ACK Erase 2 (used): Writes 7 byte: 1B 45 46 ESC E F xxxx Expects: 1 byte NACK/ACK cmd_K 1: UNSUPPORTED ! Writes 6 byte: 1B 4B ESC K xxxx Expects: 1 byte NACK/ACK. cmd_K 2: UNSUPPORTED ! Writes 7 byte: 1B 4B 46 ESC K xxxx Expects: 1 byte NACK/ACK. Capture: Writes 3 byte: 1B 52 ESC R x Expects: 1 byte NACK/ACK. can be '1' or '0'. Set Time (?): do nothing ? Writes 11 byte: 1B 57 44 <8*nr> ESC W D xxxxxxxx Expects: 1 byte NACK/ACK. The number is the current time in seconds sinc 1980 I guess. Get Thumbnail 1: Writes: 6 byte 1B 54 <4*nr> ESC T xxxx Expects: ... see code Get Thumbnail 2: Writes: 7 byte 1B 54 46 <4*nr> ESC TF xxxx Expects: ... see code Get Image 1: Writes: 6 byte 1B 47 <4*nr> ESC G xxxx Expects: ... see code Get Image 2: Writes: 7 byte 1B 47 46 <4*nr> ESC GF xxxx Expects: ... see code Upload: Writes: 2 byte 1B 55 ESC U Expects: ... see code libgphoto2-2.5.9/camlibs/konica/library.c0000644000175000001440000012254312610415536015215 00000000000000/* library.c * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include "konica.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define C(r) {int ret=(r);if(ret<0) return(ret);} #define C_NULL(r) {if (!(r)) return (GP_ERROR_BAD_PARAMETERS);} #define GP_MODULE "konica" #define PING_TIMEOUT 60 static struct { const char *model; int image_id_long; int vendor; int product; } konica_cameras[] = { {"Konica Q-EZ", 0, 0, 0}, {"Konica Q-M100", 0, 0, 0}, {"Konica Q-M100V", 0, 0, 0}, {"Konica Q-M200", 1, 0, 0}, {"HP PhotoSmart", 0, 0, 0}, {"HP PhotoSmart C20", 0, 0, 0}, {"HP PhotoSmart C30", 0, 0, 0}, {"HP PhotoSmart C200", 0, 0, 0}, {NULL, 0, 0, 0} }; struct _CameraPrivateLibrary { unsigned int speed, timeout; int image_id_long; }; static int localization_file_read (Camera* camera, const char* file_name, unsigned char** data, long int* data_size, GPContext *context); static int timeout_func (Camera *camera, GPContext *context) { C(k_ping (camera->port, context)); return (GP_OK); } static int get_info (Camera *camera, unsigned int n, CameraFileInfo *info, char *fn, CameraFile *file, GPContext *context) { unsigned long image_id; unsigned int buffer_size, exif_size; unsigned char *buffer = NULL; int protected, r; /* * Remove the timeout, get the information and restart the * timeout afterwards. */ gp_camera_stop_timeout (camera, camera->pl->timeout); r = k_get_image_information (camera->port, context, camera->pl->image_id_long, n, &image_id, &exif_size, &protected, &buffer, &buffer_size); camera->pl->timeout = gp_camera_start_timeout (camera, PING_TIMEOUT, timeout_func); C(r); info->audio.fields = GP_FILE_INFO_NONE; info->preview.fields = GP_FILE_INFO_TYPE; strcpy (info->preview.type, GP_MIME_JPEG); info->file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_PERMISSIONS | GP_FILE_INFO_TYPE; info->file.size = exif_size * 1000; info->file.permissions = GP_FILE_PERM_READ; if (!protected) info->file.permissions |= GP_FILE_PERM_DELETE; strcpy (info->file.type, GP_MIME_JPEG); sprintf (fn, "%06i.jpeg", (int) image_id); if (file) gp_file_set_data_and_size (file, (char*)buffer, buffer_size); else free (buffer); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { CameraFile *file; CameraFileInfo info; KStatus status; unsigned int i, id; Camera *camera = data; int result; /* * We can't get the filename from the camera. * But we decide to call the images %6i.jpeg', with the image id as * parameter. Therefore, let's get the image ids. */ C(k_get_status (camera->port, context, &status)); id = gp_context_progress_start (context, status.pictures, _("Getting file list...")); for (i = 0; i < status.pictures; i++) { char fn[40]; /* Get information */ gp_file_new (&file); result = get_info (camera, i + 1, &info, fn, file, context); if (result < 0) { gp_file_unref (file); return (result); } /* * Append directly to the filesystem instead of to the list, * because we have additional information. */ gp_filesystem_append (camera->fs, folder, fn, context); gp_filesystem_set_info_noop (camera->fs, folder, fn, info, context); gp_filesystem_set_file_noop (camera->fs, folder, fn, GP_FILE_TYPE_PREVIEW, file, context); gp_file_unref (file); gp_context_idle (context); gp_context_progress_update (context, id, i + 1); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); } gp_context_progress_stop (context, id); return (GP_OK); } int camera_id (CameraText* id) { strcpy (id->text, "konica"); return (GP_OK); } int camera_abilities (CameraAbilitiesList* list) { int i; CameraAbilities a; for (i = 0; konica_cameras [i].model; i++) { memset(&a, 0, sizeof(a)); a.status = GP_DRIVER_STATUS_PRODUCTION; strcpy (a.model, konica_cameras [i].model); a.usb_vendor = konica_cameras [i].vendor; a.usb_product = konica_cameras [i].product; if (konica_cameras [i].vendor) a.port = GP_PORT_USB; else { a.port = GP_PORT_SERIAL; a.speed[0] = 300; a.speed[1] = 600; a.speed[2] = 1200; a.speed[3] = 2400; a.speed[4] = 4800; a.speed[5] = 9600; a.speed[6] = 19200; a.speed[7] = 38400; a.speed[8] = 57600; a.speed[9] = 115200; a.speed[10] = 0; } a.operations = GP_OPERATION_CONFIG | GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CAPTURE_PREVIEW; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_EXIF; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; gp_abilities_list_append (list, a); } return (GP_OK); } static int set_speed (Camera *camera, int speed, GPContext *context) { GPPortSettings settings; KBitRate bit_rates; KBitFlag bit_flags; int i; int speeds[] = {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}; C(gp_port_get_settings (camera->port, &settings)); if ((settings.serial.speed == speed) || (settings.serial.speed == 115200)) return (GP_OK); switch (speed) { case 0: /* Set the highest possible speed */ C(k_get_io_capability (camera->port, context, &bit_rates, &bit_flags)); for (i = 9; i >= 0; i--) if ((1 << i) & bit_rates) break; if (i < 0) return (GP_ERROR_IO_SERIAL_SPEED); bit_rates = (1 << i); speed = speeds[i]; break; case 300: bit_rates = 1 << 0; break; case 600: bit_rates = 1 << 1; break; case 1200: bit_rates = 1 << 2; break; case 2400: bit_rates = 1 << 3; break; case 4800: bit_rates = 1 << 4; break; case 9600: bit_rates = 1 << 5; break; case 19200: bit_rates = 1 << 6; break; case 38400: bit_rates = 1 << 7; break; case 57600: bit_rates = 1 << 8; break; case 115200: bit_rates = 1 << 9; break; default: return (GP_ERROR_IO_SERIAL_SPEED); } /* Request the new speed */ bit_flags = K_BIT_FLAG_8_BITS; C(k_set_io_capability (camera->port, context, bit_rates, bit_flags)); gp_log (GP_LOG_DEBUG, "konica", "Reconnecting at speed %d", speed); settings.serial.speed = speed; C(gp_port_set_settings (camera->port, settings)); C(k_init (camera->port, context)); return (GP_OK); } static int test_speed (Camera *camera, GPContext *context) { int i; unsigned int speeds[] = {115200, 9600, 57600, 38400, 19200, 4800, 2400, 1200, 600, 300}; unsigned int id; GPPortSettings settings; C(gp_port_get_settings (camera->port, &settings)); id = gp_context_progress_start (context, 10, _("Testing different speeds...")); for (i = 0; i < 10; i++) { gp_log (GP_LOG_DEBUG, "konica", "Testing speed %d", speeds[i]); settings.serial.speed = speeds[i]; C(gp_port_set_settings (camera->port, settings)); if (k_init (camera->port, context) == GP_OK) break; gp_context_idle (context); gp_context_progress_update (context, id, i + 1); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); } gp_context_progress_stop (context, id); if (i == 10) { gp_context_error (context, _("The camera could not be " "contacted. Please make sure it is connected to the " "computer and turned on.")); return (GP_ERROR_IO); } return (speeds[i]); } static int set_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo info, void *data, GPContext *context) { Camera *camera = data; char tmp[7]; int protected; unsigned long image_id; /* Permissions? */ if (info.file.fields & GP_FILE_INFO_PERMISSIONS) { strncpy (tmp, file, 6); tmp[6] = '\0'; image_id = atol (tmp); if (info.file.permissions & GP_FILE_PERM_DELETE) protected = FALSE; else protected = TRUE; C(k_set_protect_status (camera->port, context, camera->pl->image_id_long, image_id, protected)); } return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; CameraFile *file; int n, result; char fn[40]; /* We need image numbers starting with 1 */ n = gp_filesystem_number (camera->fs, folder, filename, context); if (n < 0) return (n); n++; gp_file_new (&file); result = get_info (camera, n, info, fn, file, context); if (result < 0) { gp_file_unref (file); return (result); } gp_filesystem_set_file_noop (fs, folder, filename, GP_FILE_TYPE_PREVIEW, file, context); gp_file_unref (file); return (GP_OK); } static int camera_exit (Camera* camera, GPContext *context) { if (camera->pl) { gp_camera_stop_timeout (camera, camera->pl->timeout); free (camera->pl); camera->pl = NULL; } return (GP_OK); } static int delete_all_func (CameraFilesystem *fs, const char* folder, void *data, GPContext *context) { Camera *camera = data; unsigned int not_erased = 0; if (strcmp (folder, "/")) return (GP_ERROR_DIRECTORY_NOT_FOUND); C(k_erase_all (camera->port, context, ¬_erased)); if (not_erased) { gp_context_error (context, _("%i pictures could not be " "deleted because they are protected"), not_erased); gp_filesystem_reset (camera->fs); return (GP_ERROR); } return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; unsigned long image_id; char image_id_string[] = {0, 0, 0, 0, 0, 0, 0}; unsigned char *fdata = NULL; unsigned int size; CameraFileInfo info; int r; if (strlen (filename) != 11) return (GP_ERROR_FILE_NOT_FOUND); if (strcmp (folder, "/")) return (GP_ERROR_DIRECTORY_NOT_FOUND); /* Check if we can get the image id from the filename. */ strncpy (image_id_string, filename, 6); image_id = atol (image_id_string); /* Get information about the image */ if (type == GP_FILE_TYPE_NORMAL) C(gp_filesystem_get_info (camera->fs, folder, filename, &info, context)); /* * Remove the timeout, get the image and start the timeout * afterwards. */ gp_camera_stop_timeout (camera, camera->pl->timeout); switch (type) { case GP_FILE_TYPE_PREVIEW: size = 2048; r = k_get_image (camera->port, context, camera->pl->image_id_long, image_id, K_THUMBNAIL, &fdata, &size); break; case GP_FILE_TYPE_NORMAL: size = info.file.size; r = k_get_image (camera->port, context, camera->pl->image_id_long, image_id, K_IMAGE_EXIF, &fdata, &size); break; default: return (GP_ERROR_NOT_SUPPORTED); } C(r); camera->pl->timeout = gp_camera_start_timeout (camera, PING_TIMEOUT, timeout_func); C(gp_file_set_data_and_size (file, (char*)fdata, size)); return gp_file_set_mime_type (file, GP_MIME_JPEG); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; char tmp[] = {0, 0, 0, 0, 0, 0, 0}; unsigned long image_id; C_NULL (camera && folder && filename); /* We don't support folders */ if (strcmp (folder, "/")) return (GP_ERROR_DIRECTORY_NOT_FOUND); /* Extract the image id from the filename */ strncpy (tmp, filename, 6); image_id = atol (tmp); C(k_erase_image (camera->port, context, camera->pl->image_id_long, image_id)); return (GP_OK); } static int camera_summary (Camera* camera, CameraText* summary, GPContext *context) { KInformation info; GP_DEBUG ("*** ENTER: camera_summary " "***"); C(k_get_information (camera->port, context, &info)); snprintf (summary->text, sizeof (summary->text), _("Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n"), info.model, info.serial_number, info.hardware.major, info.hardware.minor, info.software.major, info.software.minor, info.testing.major, info.testing.minor, info.name, info.manufacturer); return (GP_OK); } static int camera_capture_preview (Camera* camera, CameraFile* file, GPContext *context) { unsigned char *data = NULL; unsigned int size = 0; C(k_get_preview (camera->port, context, TRUE, &data, &size)); C(gp_file_set_data_and_size (file, (char*)data, size)); C(gp_file_set_mime_type (file, GP_MIME_JPEG)); return (GP_OK); } static int camera_capture (Camera* camera, CameraCaptureType type, CameraFilePath* path, GPContext *context) { unsigned long image_id; unsigned int exif_size; unsigned char *buffer = NULL; unsigned int buffer_size; int protected, r; CameraFile *file = NULL; CameraFileInfo info; char fn[40]; C_NULL (camera && path); /* We only support capturing of images */ if (type != GP_CAPTURE_IMAGE) return (GP_ERROR_NOT_SUPPORTED); /* Stop the timeout, take the picture, and restart the timeout. */ gp_camera_stop_timeout (camera, camera->pl->timeout); r = k_take_picture (camera->port, context, camera->pl->image_id_long, &image_id, &exif_size, &buffer, &buffer_size, &protected); camera->pl->timeout = gp_camera_start_timeout (camera, PING_TIMEOUT, timeout_func); C(r); sprintf (path->name, "%06i.jpeg", (int) image_id); strcpy (path->folder, "/"); C(gp_filesystem_append (camera->fs, path->folder, path->name, context)); info.preview.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE; info.preview.size = buffer_size; strcpy (info.preview.type, GP_MIME_JPEG); info.file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_PERMISSIONS | GP_FILE_INFO_TYPE; info.file.size = exif_size; info.file.permissions = GP_FILE_PERM_READ; if (!protected) info.file.permissions |= GP_FILE_PERM_DELETE; strcpy (info.file.type, GP_MIME_JPEG); sprintf (fn, "%06i.jpeg", (int) image_id); gp_filesystem_set_info_noop (camera->fs, path->folder, fn, info, context); gp_file_new (&file); gp_file_set_mime_type (file, GP_MIME_JPEG); gp_file_set_data_and_size (file, (char*)buffer, buffer_size); gp_filesystem_set_file_noop (camera->fs, path->folder, fn, GP_FILE_TYPE_EXIF, file, context); gp_file_unref (file); return (GP_OK); } static int camera_about (Camera* camera, CameraText* about, GPContext *context) { C_NULL (camera && about); /* Translators: please write 'M"uller' (that is, with u-umlaut) if your charset allows it. If not, use "Mueller". */ strcpy (about->text, _("Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras.")); return (GP_OK); } static int camera_get_config (Camera* camera, CameraWidget** window, GPContext *context) { CameraWidget *widget; CameraWidget *section; KStatus status; KPreferences preferences; int year_4_digits; struct tm tm_struct; time_t t; float value_float; const char *name; gp_system_dir d; gp_system_dirent de; unsigned int id; /* Get the current settings. */ id = gp_context_progress_start (context, 2, _("Getting configuration...")); C(k_get_status (camera->port, context, &status)); gp_context_progress_update (context, id, 1); C(k_get_preferences (camera->port, context, &preferences)); gp_context_progress_stop (context, id); /* Create the window. */ gp_widget_new (GP_WIDGET_WINDOW, _("Konica Configuration"), window); /************************/ /* Persistent Settings */ /************************/ gp_widget_new (GP_WIDGET_SECTION, _("Persistent Settings"), §ion); gp_widget_append (*window, section); /* Date */ gp_widget_new (GP_WIDGET_DATE, _("Date and Time"), &widget); gp_widget_append (section, widget); if (status.date.year > 80) year_4_digits = status.date.year + 1900; else year_4_digits = status.date.year + 2000; tm_struct.tm_year = year_4_digits - 1900; tm_struct.tm_mon = status.date.month - 1; tm_struct.tm_mday = status.date.day; tm_struct.tm_hour = status.date.hour; tm_struct.tm_min = status.date.minute; tm_struct.tm_sec = status.date.second; t = mktime (&tm_struct); gp_widget_set_value (widget, &t); /* Beep */ gp_widget_new (GP_WIDGET_RADIO, _("Beep"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("On")); gp_widget_add_choice (widget, _("Off")); switch (preferences.beep) { case 0: gp_widget_set_value (widget, _("Off")); break; default: gp_widget_set_value (widget, _("On")); break; } gp_widget_set_info (widget, _("Shall the camera beep when taking a " "picture?")); /* Self Timer Time */ gp_widget_new (GP_WIDGET_RANGE, _("Self Timer Time"), &widget); gp_widget_append (section, widget); gp_widget_set_range (widget, 3, 40, 1); value_float = preferences.self_timer_time; gp_widget_set_value (widget, &value_float); /* Auto Off Time */ gp_widget_new (GP_WIDGET_RANGE, _("Auto Off Time"), &widget); gp_widget_append (section, widget); gp_widget_set_range (widget, 1, 255, 1); value_float = preferences.shutoff_time; gp_widget_set_value (widget, &value_float); /* Slide Show Interval */ gp_widget_new (GP_WIDGET_RANGE, _("Slide Show Interval"), &widget); gp_widget_append (section, widget); gp_widget_set_range (widget, 1, 30, 1); value_float = preferences.slide_show_interval; gp_widget_set_value (widget, &value_float); /* Resolution */ gp_widget_new (GP_WIDGET_RADIO, _("Resolution"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("Low (576 x 436)")); gp_widget_add_choice (widget, _("Medium (1152 x 872)")); gp_widget_add_choice (widget, _("High (1152 x 872)")); switch (status.resolution) { case 1: gp_widget_set_value (widget, _("High (1152 x 872)")); break; case 3: gp_widget_set_value (widget, _("Low (576 x 436)")); break; default: gp_widget_set_value (widget, _("Medium (1152 x 872)")); break; } /****************/ /* Localization */ /****************/ gp_widget_new (GP_WIDGET_SECTION, _("Localization"), §ion); gp_widget_append (*window, section); /* Language */ d = gp_system_opendir (LOCALIZATION); if (d) { gp_widget_new (GP_WIDGET_MENU, _("Language"), &widget); gp_widget_append (section, widget); while ((de = gp_system_readdir (d))) { name = gp_system_filename (de); if (name && (*name != '.')) gp_widget_add_choice (widget, name); } gp_widget_set_value (widget, _("None selected")); gp_system_closedir (d); } /* TV output format */ gp_widget_new (GP_WIDGET_MENU, _("TV Output Format"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("NTSC")); gp_widget_add_choice (widget, _("PAL")); gp_widget_add_choice (widget, _("Do not display TV menu")); gp_widget_set_value (widget, _("None selected")); /* Date format */ gp_widget_new (GP_WIDGET_MENU, _("Date Format"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("Month/Day/Year")); gp_widget_add_choice (widget, _("Day/Month/Year")); gp_widget_add_choice (widget, _("Year/Month/Day")); gp_widget_set_value (widget, _("None selected")); /********************************/ /* Session-persistent Settings */ /********************************/ gp_widget_new (GP_WIDGET_SECTION, _("Session-persistent Settings"), §ion); gp_widget_append (*window, section); /* Flash */ gp_widget_new (GP_WIDGET_RADIO, _("Flash"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("Off")); gp_widget_add_choice (widget, _("On")); gp_widget_add_choice (widget, _("On, red-eye reduction")); gp_widget_add_choice (widget, _("Auto")); gp_widget_add_choice (widget, _("Auto, red-eye reduction")); switch (status.flash) { case 0: gp_widget_set_value (widget, _("Off")); break; case 1: gp_widget_set_value (widget, _("On")); break; case 5: gp_widget_set_value (widget, _("On, red-eye reduction")); break; case 6: gp_widget_set_value (widget, _("Auto, red-eye reduction")); break; default: gp_widget_set_value (widget, _("Auto")); break; } /* Exposure */ gp_widget_new (GP_WIDGET_RANGE, _("Exposure"), &widget); gp_widget_append (section, widget); gp_widget_set_range (widget, 0, 255, 1); value_float = status.exposure; gp_widget_set_value (widget, &value_float); /* Focus */ gp_widget_new (GP_WIDGET_RADIO, _("Focus"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("Fixed")); gp_widget_add_choice (widget, _("Auto")); switch ((unsigned int) (status.focus / 2)) { case 1: gp_widget_set_value (widget, _("Auto")); break; default: gp_widget_set_value (widget, _("Fixed")); break; } /************************/ /* Volatile Settings */ /************************/ gp_widget_new (GP_WIDGET_SECTION, _("Volatile Settings"), §ion); gp_widget_append (*window, section); /* Self Timer */ gp_widget_new (GP_WIDGET_RADIO, _("Self Timer"), &widget); gp_widget_append (section, widget); gp_widget_add_choice (widget, _("Self Timer (next picture only)")); gp_widget_add_choice (widget, _("Normal")); switch (status.focus % 2) { case 1: gp_widget_set_value (widget, _("Self Timer (" "next picture only)")); break; default: gp_widget_set_value (widget, _("Normal")); break; } /* That's it. */ return (GP_OK); } static int camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *section; CameraWidget *widget_focus; CameraWidget *widget_self_timer; CameraWidget *widget; KDate date; KDateFormat date_format = K_DATE_FORMAT_YEAR_MONTH_DAY; KTVOutputFormat tv_output_format = K_TV_OUTPUT_FORMAT_HIDE; unsigned int beep = 0; int i, j = 0; unsigned char *data; long int data_size; unsigned char focus_self_timer = 0; float f; char *c; struct tm *tm_struct; int result; GP_DEBUG ("*** ENTER: camera_set_config ***"); /************************/ /* Persistent Settings */ /************************/ gp_widget_get_child_by_label (window, _("Persistent Settings"), §ion); /* Date & Time */ gp_widget_get_child_by_label (section, _("Date and Time"), &widget); if (gp_widget_changed (widget)) { time_t xtime; gp_widget_get_value (widget, &i); xtime = i; tm_struct = localtime (&xtime); date.year = tm_struct->tm_year - 100; date.month = tm_struct->tm_mon + 1; date.day = tm_struct->tm_mday; date.hour = tm_struct->tm_hour; date.minute = tm_struct->tm_min; date.second = tm_struct->tm_sec; C(k_set_date_and_time (camera->port, context, date)); } /* Beep */ gp_widget_get_child_by_label (section, _("Beep"), &widget); if (gp_widget_changed (widget)) { gp_widget_get_value (widget, &c); if (strcmp (c, _("Off")) == 0) beep = 0; else beep = 1; C(k_set_preference (camera->port, context, K_PREFERENCE_BEEP, beep)); } /* Self Timer Time */ gp_widget_get_child_by_label (section, _("Self Timer Time"), &widget); if (gp_widget_changed (widget)) { gp_widget_get_value (widget, &f); C(k_set_preference (camera->port, context, K_PREFERENCE_SELF_TIMER_TIME, (int) f)); } /* Auto Off Time */ gp_widget_get_child_by_label (section, _("Auto Off Time"), &widget); if (gp_widget_changed (widget)) { gp_widget_get_value (widget, &f); C(k_set_preference (camera->port, context, K_PREFERENCE_AUTO_OFF_TIME, (int) f)); } /* Slide Show Interval */ gp_widget_get_child_by_label (section, _("Slide Show Interval"), &widget); if (gp_widget_changed (widget)) { gp_widget_get_value (widget, &f); C(k_set_preference (camera->port, context, K_PREFERENCE_SLIDE_SHOW_INTERVAL, (int) f)); } /* Resolution */ gp_widget_get_child_by_label (section, _("Resolution"), &widget); if (gp_widget_changed (widget)) { gp_widget_get_value (widget, &c); if (!strcmp (c, _("High (1152 x 872)"))) j = 1; else if (!strcmp (c, _("Low (576 x 436)"))) j = 3; else j = 0; C(k_set_preference (camera->port, context, K_PREFERENCE_RESOLUTION, j)); } /****************/ /* Localization */ /****************/ gp_widget_get_child_by_label (window, _("Localization"), §ion); /* Localization File */ C(gp_widget_get_child_by_label (section, _("Language"), &widget)); C(result = gp_widget_changed (widget)); if (result) { C(gp_widget_get_value (widget, &c)); if (strcmp (c, _("None selected"))) { data = NULL; data_size = 0; /* Read localization file */ result = localization_file_read (camera, c, &data, &data_size, context); if (result != GP_OK) { free (data); return (result); } /* Go! */ result = k_localization_data_put (camera->port, context, data, data_size); free (data); C(result); } } /* TV Output Format */ gp_widget_get_child_by_label (section, _("TV Output Format"), &widget); if (gp_widget_changed (widget)) { gp_widget_get_value (widget, &c); if (strcmp (c, _("None selected"))) { if (!strcmp (c, _("NTSC"))) tv_output_format = K_TV_OUTPUT_FORMAT_NTSC; else if (!strcmp (c, _("PAL"))) tv_output_format = K_TV_OUTPUT_FORMAT_PAL; else if (!strcmp (c, _("Do not display TV menu"))) tv_output_format = K_TV_OUTPUT_FORMAT_HIDE; else return (GP_ERROR); C(k_localization_tv_output_format_set ( camera->port, context, tv_output_format)); } } /* Date Format */ gp_widget_get_child_by_label (section, _("Date Format"), &widget); if (gp_widget_changed (widget)) { gp_widget_get_value (widget, &c); if (strcmp (c, _("None selected"))) { if (!strcmp (c, _("Month/Day/Year"))) date_format = K_DATE_FORMAT_MONTH_DAY_YEAR; else if (!strcmp (c, _("Day/Month/Year"))) date_format = K_DATE_FORMAT_DAY_MONTH_YEAR; else if (!strcmp (c, _("Year/Month/Day"))) date_format = K_DATE_FORMAT_YEAR_MONTH_DAY; else return (GP_ERROR); C(k_localization_date_format_set ( camera->port, context, date_format)); } } /********************************/ /* Session-persistent Settings */ /********************************/ gp_widget_get_child_by_label (window, _("Session-persistent Settings"), §ion); /* Flash */ gp_widget_get_child_by_label (section, _("Flash"), &widget); if (gp_widget_changed (widget)) { gp_widget_get_value (widget, &c); if (!strcmp (c, _("Off"))) j = 0; else if (!strcmp (c, _("On"))) j = 1; else if (!strcmp (c, _("On, red-eye reduction"))) j = 5; else if (!strcmp (c, _("Auto"))) j = 2; else j = 6; C(k_set_preference (camera->port, context, K_PREFERENCE_FLASH, j)); } /* Exposure */ gp_widget_get_child_by_label (section, _("Exposure"), &widget); if (gp_widget_changed (widget)) { gp_widget_get_value (widget, &f); C(k_set_preference (camera->port, context, K_PREFERENCE_EXPOSURE, (int) f)); } /* Focus will be set together with self timer. */ gp_widget_get_child_by_label (section, _("Focus"), &widget_focus); /************************/ /* Volatile Settings */ /************************/ gp_widget_get_child_by_label (window, _("Volatile Settings"), §ion); /* Self Timer (and Focus) */ gp_widget_get_child_by_label (section, _("Self Timer"), &widget_self_timer); if (gp_widget_changed (widget_focus) && gp_widget_changed (widget_self_timer)) { gp_widget_get_value (widget_focus, &c); if (!strcmp (c, _("Auto"))) focus_self_timer = 2; else focus_self_timer = 0; gp_widget_get_value (widget_self_timer, &c); if (!strcmp (c, _("Self Timer (next picture only)"))) focus_self_timer++; C(k_set_preference (camera->port, context, K_PREFERENCE_FOCUS_SELF_TIMER, focus_self_timer)); } /* We are done. */ return (GP_OK); } int localization_file_read (Camera *camera, const char *file_name, unsigned char **data, long int *data_size, GPContext *context) { FILE *file; unsigned int j; int f; unsigned char c[] = "\0\0"; unsigned long line_number; unsigned int d; char path[1024]; strcpy (path, LOCALIZATION); strcat (path, "/"); strcat (path, file_name); gp_log (GP_LOG_DEBUG, "konica", "Uploading '%s'...", path); file = fopen (path, "r"); if (!file) { gp_context_error (context, _("Could not find localization " "data at '%s'"), path); return (GP_ERROR_FILE_NOT_FOUND); } /* Allocate the memory */ *data_size = 0; *data = malloc (sizeof (char) * 65536); if (!*data) { fclose (file); return (GP_ERROR_NO_MEMORY); } j = 0; line_number = 1; do { f = fgetc (file); switch (f) { case '\n': line_number++; continue; case EOF: break; case '#': /************************/ /* Comment: Discard. */ /************************/ do { f = fgetc (file); } while ((f != '\n') && (f != EOF)); if (f == '\n') line_number++; continue; case '\t': continue; case ' ': continue; default: /****************************************/ /* j == 0: We have to read the second */ /* half of the byte to send. */ /* j == 1: We'll compose our byte. */ /****************************************/ if ((f != '0') && (f != '1') && (f != '2') && (f != '3') && (f != '4') && (f != '5') && (f != '6') && (f != '7') && (f != '8') && (f != '9') && (f != 'A') && (f != 'B') && (f != 'C') && (f != 'D') && (f != 'E') && (f != 'F')) { GP_DEBUG ("Error in localization " "file: '%c' in line %i is " "not allowed.", f, (int) line_number); fclose (file); return (GP_ERROR_CORRUPTED_DATA); } c[j] = (char) f; if (j == 1) { if (sscanf ((char *)&c[0], "%X", &d) != 1) { GP_DEBUG ("Error in localization " "file."); return (GP_ERROR_CORRUPTED_DATA); } (*data)[*data_size] = d; (*data_size)++; if (*data_size == 65536) { gp_context_error (context, _("Localization file too long!")); fclose (file); return (FALSE); } } j = 1 - j; continue; } } while (f != EOF); fclose (file); /* Calculate and check checksum. */ gp_log (GP_LOG_DEBUG, "konica", "Checksum not implemented!"); /*FIXME: There's a checksum at (*data)[100]. I could not figure out how it is calculated. */ /* Calculate and check frame check sequence. */ gp_log (GP_LOG_DEBUG, "konica", "Frame check sequence " "not implemented!"); /* FIXME: There's a frame check sequence at (*data)[108] and (*data)[109]. I could not figure out how it is calculated. */ gp_log (GP_LOG_DEBUG, "konica", "-> %i bytes read.\n", (int) *data_size); return (GP_OK); } static int camera_pre_func (Camera *camera, GPContext *context) { /* Set best speed */ set_speed (camera, 0, context); return (GP_OK); } static int camera_post_func (Camera *camera, GPContext *context) { /* Set default speed */ set_speed (camera, 9600, context); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .get_info_func = get_info_func, .set_info_func = set_info_func, .file_list_func = file_list_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .delete_all_func = delete_all_func, }; int camera_init (Camera* camera, GPContext *context) { int i, speed; GPPortSettings settings; CameraAbilities a; /* First, set up all the function pointers. */ camera->functions->pre_func = camera_pre_func; camera->functions->post_func = camera_post_func; camera->functions->exit = camera_exit; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; camera->functions->capture = camera_capture; camera->functions->capture_preview = camera_capture_preview; camera->functions->summary = camera_summary; camera->functions->about = camera_about; /* Lookup model information */ gp_camera_get_abilities (camera, &a); for (i = 0; konica_cameras [i].model; i++) if (!strcmp (konica_cameras [i].model, a.model)) break; if (!konica_cameras [i].model) return (GP_ERROR_MODEL_NOT_FOUND); /* Store some data we constantly need. */ camera->pl = malloc (sizeof (CameraPrivateLibrary)); memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); camera->pl->image_id_long = konica_cameras [i].image_id_long; /* Initiate the connection */ C(gp_port_get_settings (camera->port, &settings)); switch (camera->port->type) { case GP_PORT_SERIAL: /* Set up the device */ settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; C(gp_port_set_settings (camera->port, settings)); /* Initiate the connection */ C(speed = test_speed (camera, context)); #if 0 /* Ideally, we need to reset the speed to the speed that we encountered after each operation (multiple programs accessing the camera). However, that takes quite a bit of time for HP cameras... */ camera->pl->speed = speed; #endif break; case GP_PORT_USB: /* Use the defaults the core parsed */ C(gp_port_set_settings (camera->port, settings)); /* Initiate the connection */ C(k_init (camera->port, context)); break; default: return (GP_ERROR_UNKNOWN_PORT); } /* Set up the filesystem */ C(gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera)); /* Ping the camera every minute to prevent shut-down. */ camera->pl->timeout = gp_camera_start_timeout (camera, PING_TIMEOUT, timeout_func); return (GP_OK); } libgphoto2-2.5.9/camlibs/konica/localization/0000755000175000001440000000000012623156270016147 500000000000000libgphoto2-2.5.9/camlibs/konica/localization/german0000644000175000001440000035436212557123324017300 00000000000000################################################################################ # LOCALIZATION FOR HP PhotoSmart C30 # # ---------------------------------- # # This file (except the comments) will be sent to the camera (0x9200 command). # # In order to make the data readable for humans, I commented the data and # # formatted to some extend. # # # # SYMBOLS # # ------- # # Each symbol begins with a red pixel in the upper left corner, followed by a # # yellow one, then by a blue one. The headline "red" does simply indicate that # # those are lines beginning with a red pixel. The same with headline "yellow" # # and headline "blue". The brightness of each pixel is defined by a value # # ranging between A (dark) and F (bright). # ################################################################################ # # Variable: KC_LOCALIZE_CARDREV # Value: 0x00 0x02 # Length: 32 # 4B 43 5F 4C 4F 43 41 4C 49 5A 45 5F 43 41 52 44 52 45 56 3A 00 02 FF FF FF FF FF FF FF FF FF FF # # Variable: LOCALIZATION # Length: 16 # 4C 4F 43 41 4C 49 5A 41 54 49 4F 4E FF FF FF FF # # Variable: LNG # Value: 0x00 # Length: 5 # Explanation: Indicator for language. Known values are: # - 0x00: English # - 0x01: French # - 0x02: Spanish # - 0x04: German # - 0x05: Japanese # - 0x06: Korean # 4C 4E 47 3A 04 # # Variable: TV # Value: 0x01 # Length: 4 # Explanation: Format of TV output. Accepted values are: # - 0x00: NTSC # - 0x01: PAL # - 0x02: Do not display TV menu. # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the format of the TV output. # 54 56 3A 01 # # Variable: DT # Value: 0x01 # Length: 7 # Explanation: Date format. Accepted values are: # - 0x00: Month/Day/Year # - 0x01: Day/Month/Year # - 0x02: Year/Month/Day # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the date format. # 44 54 3A 01 FF FF FF # # Variable: DST # Value: 0x00 0x86 0x00 0x00 # Length: 16 # 44 53 54 3A 00 86 00 00 FF FF FF FF FF FF FF FF # # Variable: SIZ # Value: 0x00 0x01 0x00 0x00 # Length: 16 # 53 49 5A 3A 00 01 00 00 FF FF FF FF FF FF FF FF # # Variable: SUM: # Value: 0xe9 # Length: 8 # Explanation: Sum of all bytes starting with the table of contents. The camera # won't check this number. # 53 55 4D 3A E9 FF FF FF # # Variable: CRC # Value: 0x58 0xb6 # Length: 8 # Explanation: FCS (frame check sequence) of CRC (cyclic redundancy check). The # camera will check this number. # 43 52 43 3A 58 B6 FF FF # # Table of Contents (text entries only) # # One entry: 00 FE XX XX (XX XX is the memory address). # 00 FE C8 C0 00 FE C8 C2 00 FE C8 C4 00 FE C8 C7 00 FE C8 CA 00 FE C8 E6 00 FE C8 E9 00 FE C8 EE 00 FE C8 F0 00 FE C8 F1 00 FE C8 F2 00 FE C8 FB 00 FE C9 07 00 FE C9 10 00 FE C9 28 00 FE C9 29 00 FE C9 47 00 FE C9 5D 00 FE C9 5E 00 FE C9 75 00 FE C9 90 00 FE C9 A9 00 FE C9 C1 00 FE C9 D8 00 FE C9 E8 00 FE C9 F8 00 FE C9 F9 00 FE CA 04 00 FE CA 0F 00 FE CA 1A 00 FE CA 1B 00 FE CA 25 00 FE CA 39 00 FE CA 4F 00 FE CA 64 00 FE CA 7E 00 FE CA AD 00 FE CA C2 00 FE CA E1 00 FE CA EB 00 FE CA F1 00 FE CB 0E 00 FE CB 24 00 FE CB 74 00 FE CB 95 00 FE CB AC 00 FE CB C4 00 FE CB C5 00 FE CB DA 00 FE CB DF 00 FE CB F4 00 FE CB FB 00 FE CC 03 00 FE CC 08 00 FE CC 0E 00 FE CC 12 00 FE CC 17 00 FE CC 1C 00 FE CC 23 00 FE CC 2D 00 FE CC 35 00 FE CC 3E 00 FE CC 47 00 FE CC 4B 00 FE CC 51 00 FE CC 56 00 FE CC 5B 00 FE CC 5E 00 FE CC 61 00 FE CC 70 00 FE CC 79 00 FE CC 7A 00 FE CC 7B 00 FE CC 7C 00 FE CC 7D 00 FE CC 7E 00 FE CC 7F 00 FE CC 80 00 FE CC 81 00 FE CC 82 00 FE CC 83 00 FE CC 95 00 FE CC A7 00 FE CC B9 00 FE CC CB 00 FE CC DD 00 FE CC EF 00 FE CD 01 00 FE CD 13 00 FE CD 25 00 FE CD 37 00 FE CD 45 00 FE CD 50 00 FE CD 57 00 FE CD 5E 00 FE CD 62 00 FE CD 65 00 FE CD 66 00 FE CD 78 00 FE CD 8A # # Title: Take Pictures # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAABAEBAAAAAAAEBAEBAEBAEBAEBF BBAEAAABAABAEAAABAEBEEBAEBAEBAEE FEBAABAAAAEAAEAAEBAFAEEBAEBAEBAB EAEAAEAAEBAABAABAEBEBAAEBAEBAEBF BBAEBAEBAABAEBAEBAFAEBBAEBAEBAEE FEBAABAAAAEAAEAAEBEBAEBBAEBAEBAB EAEAAEAAEBAABAABAFAEBAEABAEBAEBF BBAEAAABAABAEBAEBEBAEBAEEBAEBAEE FEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAB EAEBAABAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAAABFFFFFFFFFFAFFEBFFFFFFFEAABF BBAAFFFFFFFFFFFAFFEBFFFFFFFFEAEE FEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAB EAABAEBAEFBEFBEFAAABEFBEEAAABEBF BAAEBAEBBEFBEFBAAAAABEFBEAAABAAE FEBAEBAEFBEFBEEAAAAABBEFAAAAAEAB EAABAEBAEFBEFBAABFFAAFBEEAAABEBF BAAEBAEBBEFBEEABFFFEAAFBEAAABAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAAFFFFFEABEFBEFBEBF BAAEBAEBBEFBEABFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBABFFFFFEAEFBEFBEEAB EAABAEBAEFBEFABFFFFFEABEFBEFBEBF BAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAABFFFEABBEFBEFBEBF BAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAE FEBAEBAEFBEFBEEAAAAABBEFBEFBEEAB EAABAEBAEFBEFBEAAAAAEFBEFBEFBEBF BAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Take Pictures # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAABAEBAAAAAAAEBAEBAEBAEBAEBA ABAEAAABAABAEAAABAEBEEBAEBAEBAEA AEBAABAAAAEAAEAAEBAFAEEBAEBAEBAA AAEAAEAAEBAABAABAEBEBAAEBAEBAEBA ABAEBAEBAABAEBAEBAFAEBBAEBAEBAEA AEBAABAAAAEAAEAAEBEBAEBBAEBAEBAA AAEAAEAAEBAABAABAFAEBAEABAEBAEBA ABAEAAABAABAEBAEBEBAEBAEEBAEBAEA AEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAA AAEBAABAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAAABFFFFFFFFFFAFFEBFFFFFFFEAABA ABAAFFFFFFFFFFFAFFEBFFFFFFFFEAEA AEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA AAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAA AAABAEBAEFBEFBEFAAABEFBEEAAABEBA AAAEBAEBBEFBEFBAAAAABEFBEAAABAAA AEBAEBAEFBEFBEEAAAAABBEFAAAAAEAA AAABAEBAEFBEFBAABFFAAFBEEAAABEBA AAAEBAEBBEFBEEABFFFEAAFBEAAABAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAAFFFFFEABEFBEFBEBA AAAEBAEBBEFBEABFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBABFFFFFEAEFBEFBEEAA AAABAEBAEFBEFABFFFFFEABEFBEFBEBA AAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAABFFFEABBEFBEFBEBA AAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAA AEBAEBAEFBEFBEEAAAAABBEFBEFBEEAA AAABAEBAEFBEFBEAAAAAEFBEFBEFBEBA AAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBEBAEBAEEBAEBAEE FEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAB EAEBAEBAEAAABAABAEAEBAEEBAEBAEBF BBAEBAEBAABAABAEBAFAEBBAEBAEBAEE FEBAEBAEBAEAAEAAEBABAEEBAEBAEBAB EAEBAEBAEAAAAAABAEBABBAEBAEBAEBF BBAEBAEBAABAEAAEBAEBEEBAEBAEBAEE FEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAB EAEBAEBAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAE FEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAB EABFFFFFFFFFFFFAFFEBFFFFFFFFFEBF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BABEFBEFBEFBEFBEFBEFBEFBEFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEEAEFBAAAAAAAAAAAAAABEABEBF BABEFBAABEFAEBAEBAEBAEBAAFAABAAE FEBBEFAABBEAAEBAEBAEBAEBAEAAAEAB EAAFBEAAAFBABAEBAEBAEBAEABAABEBF BABEFBEABEFAEBAEBAEBAEBAAFAAFAAE FEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEFBEABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAABBEAAEBAEBAEBAEBAEFBEEAB EAAFBEAAAFBABAEBAEBAEBAEABEFBEBF BABEFBAABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAEBAEBAEBAEBAAFBEFAAE FEBBAABEAAEAAEBAEBAEBAEBAEFBEEAB EAAFAAFBAABABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAAAAAAAAAAAAAAFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBEBAEBAEEBAEBAEA AEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAA AAEBAEBAEAAABAABAEAEBAEEBAEBAEBA ABAEBAEBAABAABAEBAFAEBBAEBAEBAEA AEBAEBAEBAEAAEAAEBABAEEBAEBAEBAA AAEBAEBAEAAAAAABAEBABBAEBAEBAEBA ABAEBAEBAABAEAAEBAEBEEBAEBAEBAEA AEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAA AAEBAEBAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AABFFFFFFFFFFFFAFFEBFFFFFFFFFEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA AABEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEEAEFBAAAAAAAAAAAAAABEABEBA AABEFBAABEFAEBAEBAEBAEBAAFAABAAA AEBBEFAABBEAAEBAEBAEBAEBAEAAAEAA AAAFBEAAAFBABAEBAEBAEBAEABAABEBA AABEFBEABEFAEBAEBAEBAEBAAFAAFAAA AEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEFBEABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAABBEAAEBAEBAEBAEBAEFBEEAA AAAFBEAAAFBABAEBAEBAEBAEABEFBEBA AABEFBAABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAEBAEBAEBAEBAAFBEFAAA AEBBAABEAAEAAEBAEBAEBAEBAEFBEEAA AAAFAAFBAABABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAAAAAAAAAAAAAAFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: View Small Photos # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABAAAAAAAABAAAAAAAAEAAAAAAAAEBF BBFAAEBABAAFABEFBEFAAAEFBAEBAAEE FEEABAEBEBAEAFBEFBEABABEFBAEABAB EABAEBABAEABAFFFEFBAEAFBEEBAAEBF BBFAAEBEBAAFABFFBEFAAAEFBAEBAAEE FEEABABAEBAEAFFEFBAABABEFBAEABAB EABAEBEBAEABAEFBEFBAEAFBEFBAAEBF BBFAABAEBAAFABEFBAEAAAFBBEFBAAEE FEEABEBAEBAEAFBEFBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEAAEAEBF BBFAEBAEBAAFABEFBAEAAAFBBAABAAEE FEEAAEBAEBAEAFBAEBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEFBEAEBF BBFAAAAAAAAFAAAAAAAAAAAAAAAAAAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAABAEFBEAAABEFBEBAAAEBAEBAAAEE FEBAEBAEFBABAFBEFAEABAAEBAEBABAB EAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBF BBAABAEFBEAAABEFBEBAAABBAEBAAAEE FEBAFBEEFBABAFBEFAEABAFBBAEBABAB EAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBF BBAABEFFBEAAAAEBBEFAAABEFEBAAAEE FEBAFBEEFBABABAEFBEABAFBEAEBABAB EAEABAEBEFAEAEBAEFBAEAEFBBAEAEBF BBAAEBAFBEAAAAEBBEFAAABEFEBAAAEE FEBAAEBEFBABABAEFBEABAFBEFEBABAB EAEABAEBEFAEAEBAEFBAEAEFBEAEAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAAEFBEFAAAAABEFBEAAABEFBEBAAEE FEBABFFBEBABABFBEFBABAFBEFAEABAB EAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBF BBAAEFBEBBAAAABEFFEAAABEFBEBAAEE FEBABEBAEFABABFBEFBABAFBBEAEABAB EAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABAFBBEAEABAB EAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABABAEBAEABAB EAEAAEBABEAEAAEBBAEAEAEBAEBAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: View Small Photos # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABAAAAAAAABAAAAAAAAEAAAAAAAAEBA ABFAAEBABAAFABEFBEFAAAEFBAEBAAEA AEEABAEBEBAEAFBEFBEABABEFBAEABAA AABAEBABAEABAFFFEFBAEAFBEEBAAEBA ABFAAEBEBAAFABFFBEFAAAEFBAEBAAEA AEEABABAEBAEAFFEFBAABABEFBAEABAA AABAEBEBAEABAEFBEFBAEAFBEFBAAEBA ABFAABAEBAAFABEFBAEAAAFBBEFBAAEA AEEABEBAEBAEAFBEFBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEAAEAEBA ABFAEBAEBAAFABEFBAEAAAFBBAABAAEA AEEAAEBAEBAEAFBAEBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEFBEAEBA ABFAAAAAAAAFAAAAAAAAAAAAAAAAAAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAABAEFBEAAABEFBEBAAAEBAEBAAAEA AEBAEBAEFBABAFBEFAEABAAEBAEBABAA AAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBA ABAABAEFBEAAABEFBEBAAABBAEBAAAEA AEBAFBEEFBABAFBEFAEABAFBBAEBABAA AAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBA ABAABEFFBEAAAAEBBEFAAABEFEBAAAEA AEBAFBEEFBABABAEFBEABAFBEAEBABAA AAEABAEBEFAEAEBAEFBAEAEFBBAEAEBA ABAAEBAFBEAAAAEBBEFAAABEFEBAAAEA AEBAAEBEFBABABAEFBEABAFBEFEBABAA AAEABAEBEFAEAEBAEFBAEAEFBEAEAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAAEFBEFAAAAABEFBEAAABEFBEBAAEA AEBABFFBEBABABFBEFBABAFBEFAEABAA AAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBA ABAAEFBEBBAAAABEFFEAAABEFBEBAAEA AEBABEBAEFABABFBEFBABAFBBEAEABAA AAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABAFBBEAEABAA AAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABABAEBAEABAA AAEAAEBABEAEAAEBBAEAEAEBAEBAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Screen Brightness # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBABBAEBAEBAEBAEBAB EAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAEAEEBABBAFAEBAEEBAABAEAAEBAB EAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABAAEAEBAEBAEBAEEAEBBAEBAB EAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAB EAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEABAEBAB EAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBF BBAEAEFAEBEFBEFFFFBEFBEEBAABBAEE FEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAB EAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAB EABAEBAEBEFBEFFFFFFFBEFBEEBAEBBF BAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAE FEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAB EAEBABAEBEFBEFFFFFFFBEFBEEBAAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAAAEBEFBEFBFFFFFBEFBEEBAABBAB EAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBF BBAEBAFAEBEFBEFFFFBEFBEEBAAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEBBAEBAB EAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAEBEFBEFBEFBEFBAEBBAEBAB EAEBAFAABAEBEFBEFBEFBEEBBABBAEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAEBABAEBAEBEFBEFBAEBAEABAEBAB EAEBAEAEBBABAEBAEBAEBBAFAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABBABBABAEBAEBBEABABBAEBAB EAEBAFBAEBEEBABAEBAAEAEEBABBAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAEBAEBABBAFBABBAEBAABAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Screen Brightness # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBABBAEBAEBAEBAEBAA AAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAEAEEBABBAFAEBAEEBAABAEAAEBAA AAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABAAEAEBAEBAEBAEEAEBBAEBAA AAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAA AAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEABAEBAA AAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBA ABAEAEFAEBEFBEFFFFBEFBEEBAABBAEA AEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAA AAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAA AABAEBAEBEFBEFFFFFFFBEFBEEBAEBBA AAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAA AEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAA AAEBABAEBEFBEFFFFFFFBEFBEEBAAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAAAEBEFBEFBFFFFFBEFBEEBAABBAA AAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBA ABAEBAFAEBEFBEFFFFBEFBEEBAAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEBBAEBAA AAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAEBEFBEFBEFBEFBAEBBAEBAA AAEBAFAABAEBEFBEFBEFBEEBBABBAEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAEBABAEBAEBEFBEFBAEBAEABAEBAA AAEBAEAEBBABAEBAEBAEBBAFAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABBABBABAEBAEBBEABABBAEBAA AAEBAFBAEBEEBABAEBAAEAEEBABBAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAEBAEBABBAFBABBAEBAABAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Date & Time # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEABAFBEFAEFBAFBEFBAFBEFBABF BBAEFBAFAEFBEABEEBEFBEFAEFBEFAEE FEABEFAEABEFBAFBAFBEFBEABEFBEAAB EAAFBEABAFBEFAEEBEFBEFBAFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEABAFAEFBEFBAFBEFBEFBEFBAFAEE FEABAFAEABEFBEFAEFBEFBEFBEEBEAAB EAAFAEABAFBEFBEABEFBEFBEFBAFBABF BBAEABAFAEFBEFBAFBEFBEFBEEBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBAFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFAEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEABEFBEFBEFAAABABF BBAEAAAFBEFBEFBAFBEFBEFBEAAAFAEE FEABAFAEFBEFBEFAEFBEFBEFBEFAEAAB EAAFAEABEFBEFBEABEFBEFBEFBEABABF BBAEAAAFBAAAAAAAABEFBEFBEFAAFAEE FEABAAAEFAAAAAAAAFBEFBEFBEAAEAAB EAAFBEABEFBEFBEABEFBEFBEFBEABABF BBAEFBAFBEFBEFBAFBEFBEFBEFBAFAEE FEABEFAEFBEFBEFAEFBEFBEFBAAAEAAB EAAFBEABEFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEABAFAEE FEABAFAEFBEFBEFBEFBEFBEFBAFAEAAB EAAFAEABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEAAAFAEE FEABAAAEFBEFBEFBEFBEFBEFBAAAEAAB EAAFAEABEAAAFBEFAEFBEFAAFBEABABF BBAEABAFBAAAEFBEABEFBEAAEFBAFAEE FEABAAAEFBEABEFBAFBEFBAFBEFBEAAB EAAFAAABEFBAFBEFAEFBEFAEFBEFBABF BBAEFBEFBEFAEFBEAAAFBEAAAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAEABEFBEABEFBABF BBAEFBEFBEFAEFBEABAFBEFBAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAAABEFAAABEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Date & Time # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEABAFBEFAEFBAFBEFBAFBEFBABA ABAEFBAFAEFBEABEEBEFBEFAEFBEFAEA AEABEFAEABEFBAFBAFBEFBEABEFBEAAA AAAFBEABAFBEFAEEBEFBEFBAFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEABAFAEFBEFBAFBEFBEFBEFBAFAEA AEABAFAEABEFBEFAEFBEFBEFBEEBEAAA AAAFAEABAFBEFBEABEFBEFBEFBAFBABA ABAEABAFAEFBEFBAFBEFBEFBEEBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBAFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFAEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEABEFBEFBEFAAABABA ABAEAAAFBEFBEFBAFBEFBEFBEAAAFAEA AEABAFAEFBEFBEFAEFBEFBEFBEFAEAAA AAAFAEABEFBEFBEABEFBEFBEFBEABABA ABAEAAAFBAAAAAAAABEFBEFBEFAAFAEA AEABAAAEFAAAAAAAAFBEFBEFBEAAEAAA AAAFBEABEFBEFBEABEFBEFBEFBEABABA ABAEFBAFBEFBEFBAFBEFBEFBEFBAFAEA AEABEFAEFBEFBEFAEFBEFBEFBAAAEAAA AAAFBEABEFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEABAFAEA AEABAFAEFBEFBEFBEFBEFBEFBAFAEAAA AAAFAEABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEAAAFAEA AEABAAAEFBEFBEFBEFBEFBEFBAAAEAAA AAAFAEABEAAAFBEFAEFBEFAAFBEABABA ABAEABAFBAAAEFBEABEFBEAAEFBAFAEA AEABAAAEFBEABEFBAFBEFBAFBEFBEAAA AAAFAAABEFBAFBEFAEFBEFAEFBEFBABA ABAEFBEFBEFAEFBEAAAFBEAAAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAEABEFBEABEFBABA ABAEFBEFBEFAEFBEABAFBEFBAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAAABEFAAABEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Erase # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBBFFAABAEBAEBAEBAEE FEBAEBAEBAEBAABFEBAEBAEBAEBAEBAB EAEBAEBAAAAAAAAAAAAAAAAABAEBAEBF BBAEBAEAAAAAAAAAAAAAAAAAABAEBAEE FEBAEBAAABEEBEBAAFAAAAEAAABAEBAB EAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBF BBAEBAAAAAAAAAAAAAAAAAAAABAEBAEE FEBAEAAAAAAAAAAAAAAAAAAAAABAEBAB EAEBAABFFFFFABEFBEFBEBAABAEBAEBF BBAEABFFFFFEAFBEFBEFBEBAABAEBAEE FEBABFFFFFFEBEFBEFBEFAEAAEBAEBAB EAEBFFFFFFEAFBEFAEBBEBAABAEBAEBF BBABFFFFFFEBEBBEAAEFBEBAABAEBAEE FEBFFFFFFFAFAEFBABAEFAEAAEBAEBAB EABFFFFFFFAEBBEFAEBBEBAABAEBAEBF BBABFFFFFAFAEBBEAAEFBEBAABAEBAEE FEAABFFFFAEFAEFBABAEFAEAAEBAEBAB EAEABFFFAFBEBBEFAEBBEBAABAEBAEBF BBAEABFFAEFAEBBEAAEFBEBAABAEBAEE FEBAEBFAABEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAAAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEAAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBAAAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAAABEBAABAEBAEBF BBAEBAEAAEFBEFBEFBEFBEAAABAEBAEE FEBAEBAABBEFBEFBEFBEFAAAAEBAEBAB EAEBAEBAEFBEFBEFBEFBEAAABAEBAEBF BBAEBAEAAABAEBAEBAEBAAAAABAEBAEE FEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAB EAEBAEBAEAAAAAAAAAAAAAAABAEBAEBF BBAEBAEBAAAAAAAAAAAAAAAAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Erase # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBBFFAABAEBAEBAEBAEA AEBAEBAEBAEBAABFEBAEBAEBAEBAEBAA AAEBAEBAAAAAAAAAAAAAAAAABAEBAEBA ABAEBAEAAAAAAAAAAAAAAAAAABAEBAEA AEBAEBAAABEEBEBAAFAAAAEAAABAEBAA AAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBA ABAEBAAAAAAAAAAAAAAAAAAAABAEBAEA AEBAEAAAAAAAAAAAAAAAAAAAAABAEBAA AAEBAABFFFFFABEFBEFBEBAABAEBAEBA ABAEABFFFFFEAFBEFBEFBEBAABAEBAEA AEBABFFFFFFEBEFBEFBEFAEAAEBAEBAA AAEBFFFFFFEAFBEFAEBBEBAABAEBAEBA ABABFFFFFFEBEBBEAAEFBEBAABAEBAEA AEBFFFFFFFAFAEFBABAEFAEAAEBAEBAA AABFFFFFFFAEBBEFAEBBEBAABAEBAEBA ABABFFFFFAFAEBBEAAEFBEBAABAEBAEA AEAABFFFFAEFAEFBABAEFAEAAEBAEBAA AAEABFFFAFBEBBEFAEBBEBAABAEBAEBA ABAEABFFAEFAEBBEAAEFBEBAABAEBAEA AEBAEBFAABEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAAAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEAAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBAAAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAAABEBAABAEBAEBA ABAEBAEAAEFBEFBEFBEFBEAAABAEBAEA AEBAEBAABBEFBEFBEFBEFAAAAEBAEBAA AAEBAEBAEFBEFBEFBEFBEAAABAEBAEBA ABAEBAEAAABAEBAEBAEBAAAAABAEBAEA AEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAA AAEBAEBAEAAAAAAAAAAAAAAABAEBAEBA ABAEBAEBAAAAAAAAAAAAAAAAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Camera Exposure # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEAABFFFFFEAAEBAEBAEBAB EAEBAEBAEBAEABFFFFFEABAEBAEBAEBF BBAEBAEBAEABFFFFFFFFFEAAEBAEBAEE FEBAEBAEBAABFFFFFFFFFEABAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEBABFFFFFFFFFFFFFEABAEBAEE FEBAEBAEABFFFFFFFFFFFFFEAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBAEBFFFFFFFFFFFFFFFEABAEBAB EAEBAEBABFFFFFFFFFFFFFFFEAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBABFFFFFEBEBEBFFFFFFEBAEBAB EAEBAEABFFFFFEBEBEBFFFFFFEABAEBF BBAEBAEBFFFFEBEBEBEABFFFFEAEBAEE FEBAEBABFFFFEBEBEBEABFFFFEBAEBAB EAEBAEABFFFFEBFFFFFEBFFFFEABAEBF BBAEBAEBFFFFEBFFFFFEBFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBABFFFFEBFFFEBFFFFEAEBAEBF BBAEBAEABFFFFEBFFFEBFFFFEBAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBABFFFFEBFEBFFFFEABAEBAEE FEBAEBAEABFFFFEBFEBFFFFEAEBAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBAEBFFFEBFEBFFFEAEBAEBAEE FEBAEBAEBABFFFEBFEBFFFEBAEBAEBAB EAEBAEBAEBABFFEBFEBFFEAEBAEBAEBF BBAEBAEBAEABFFEBFEBFFEBAEBAEBAEE FEBAEBAEBAEABFEBFEABEAEBAEBAEBAB EAEBAEBAEBAEBFEBFEABEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBAAAFBEAABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEABBEEAAAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAABAEBAEBAEBAB EAEBAEBAEBAEBAEAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Camera Exposure # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEAABFFFFFEAAEBAEBAEBAA AAEBAEBAEBAEABFFFFFEABAEBAEBAEBA ABAEBAEBAEABFFFFFFFFFEAAEBAEBAEA AEBAEBAEBAABFFFFFFFFFEABAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEBABFFFFFFFFFFFFFEABAEBAEA AEBAEBAEABFFFFFFFFFFFFFEAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBAEBFFFFFFFFFFFFFFFEABAEBAA AAEBAEBABFFFFFFFFFFFFFFFEAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBABFFFFFEBEBEBFFFFFFEBAEBAA AAEBAEABFFFFFEBEBEBFFFFFFEABAEBA ABAEBAEBFFFFEBEBEBEABFFFFEAEBAEA AEBAEBABFFFFEBEBEBEABFFFFEBAEBAA AAEBAEABFFFFEBFFFFFEBFFFFEABAEBA ABAEBAEBFFFFEBFFFFFEBFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBABFFFFEBFFFEBFFFFEAEBAEBA ABAEBAEABFFFFEBFFFEBFFFFEBAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBABFFFFEBFEBFFFFEABAEBAEA AEBAEBAEABFFFFEBFEBFFFFEAEBAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBAEBFFFEBFEBFFFEAEBAEBAEA AEBAEBAEBABFFFEBFEBFFFEBAEBAEBAA AAEBAEBAEBABFFEBFEBFFEAEBAEBAEBA ABAEBAEBAEABFFEBFEBFFEBAEBAEBAEA AEBAEBAEBAEABFEBFEABEAEBAEBAEBAA AAEBAEBAEBAEBFEBFEABEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBAAAFBEAABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEABBEEAAAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAABAEBAEBAEBAA AAEBAEBAEBAEBAEAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Format Memory Card # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEEFBEFBEFBEFBEFBEFBEFBEFBEFEE FEBBBAAAAAAAAAAAAAAAAAAAAAAABEAB EAEEFAAFAEABAFAEABAFAEABAFAAFBBF BBBBAAAAAAAAAAAAAAAAAAAAAAABEFEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEABBF BBFAAAAAFFFFFFFFFFFFFFFFFFFFAFEE FEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAB EABAABAAFFFFFFFFEFFFFFFFFFFEABBF BBFAAEAAFFFFFFFFABFFFFFFFFFFAFEE FEEABAEAFFFFFFFEBAFFFFFFFFFFAEAB EABAAAAAFFFFFFFAFEBFFFFFFFFEABBF BBFAAAAAFFFFFFEBEFAFFFFFFFFFAFEE FEEAAAABFFFFFFAFABEBFFFFFFFFAEAB EABAAAABFFFFFEBEAAFAFFFFFFFEABBF BBFAAAABFFFFFAFAAABEBFFFFFFFAFEE FEEAAAABFFFFEBEAAAAFAFFFFFFFAEAB EABAAAAFFFFFAFAAAAABEBFFFFFEABBF BBFAAAAFFFFEBEAAAAAAFAFFFFFFAFEE FEEAAAAFFFFAFAAAAAAABEBFFFFFAEAB EABAAAAFFFEBEAAAAAAAAFAFFFFEABBF BBFAAAAFFFAFAAAAAAAAABEBFFFFAFEE FEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAB EABAAABFFAFAABFFEBFFFABEBFFEABBF BBFAAABFEBEAAFFFEBFFFAAFAFFFAFEE FEEAAABFAFAABFAAABEAAAABEBFFAEAB EABAAABEBEAABEAAABEAAAAAFAFEABBF BBFAAAFAFAAABEAAABEAAAAABEBFAFEE FEEAAAFEBEAABEAAABFFEAAAFAFFAEAB EABAAAFFAFAABEAAABFFEAABEBFEABBF BBFAAAFFEBEABEAAABEAAAAFAFFFAFEE FEEAAAFFFAFABFAAABEAAABEBFFFAEAB EABAAAFFFEBEAFFFEBEAAAFAFFFEABBF BBFAABFFFFAFABFFEBEAABEBFFFFAFEE FEEAABFFFFEBEAAAAAAAAFAFFFFFAEAB EABAABFFFFFAFAAAAAAABEBFFFFEABBF BBFAABFFFFFEBEAAAAAAFAFFFFFFAFEE FEEAABFFFFFFAFAAAAABEBFFFFFFAEAB EABAABFFFFFFEBEAAAAFAFFFFFFEABBF BBFAAFFFFFFFFAFAAABEBFFFFFFFAFEE FEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAB EABAAFFFFFFFFFAFABEBFFFFFFFEABBF BBFAAFFFFFFFFFEBEFAFFFFFFFFFAFEE FEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAB EABAAFFFFFFFFFFEBAFFFFFFFFFEABBF BBFABFFFFFFFFFFFABFFFFFFFFFFAFEE FEEABFFFFFFFFFFFEFFFFFFFFFFFAEAB EABABFFFFFFFFFFFFFFFFFFFFFFEABBF BBFABFFFFFFFFFFFFFFFFFFFFFFFAFEE FEEABFFFFFFFFFFFFFFFFFFFFFFFBEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEFBBF BBFBEFBEFBEFBEFBEFBEFBEFBEFBEEEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAB EAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Format Memory Card # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEEFBEFBEFBEFBEFBEFBEFBEFBEFEA AEBBBAAAAAAAAAAAAAAAAAAAAAAABEAA AAEEFAAFAEABAFAEABAFAEABAFAAFBBA ABBBAAAAAAAAAAAAAAAAAAAAAAABEFEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEABBA ABFAAAAAFFFFFFFFFFFFFFFFFFFFAFEA AEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAA AABAABAAFFFFFFFFEFFFFFFFFFFEABBA ABFAAEAAFFFFFFFFABFFFFFFFFFFAFEA AEEABAEAFFFFFFFEBAFFFFFFFFFFAEAA AABAAAAAFFFFFFFAFEBFFFFFFFFEABBA ABFAAAAAFFFFFFEBEFAFFFFFFFFFAFEA AEEAAAABFFFFFFAFABEBFFFFFFFFAEAA AABAAAABFFFFFEBEAAFAFFFFFFFEABBA ABFAAAABFFFFFAFAAABEBFFFFFFFAFEA AEEAAAABFFFFEBEAAAAFAFFFFFFFAEAA AABAAAAFFFFFAFAAAAABEBFFFFFEABBA ABFAAAAFFFFEBEAAAAAAFAFFFFFFAFEA AEEAAAAFFFFAFAAAAAAABEBFFFFFAEAA AABAAAAFFFEBEAAAAAAAAFAFFFFEABBA ABFAAAAFFFAFAAAAAAAAABEBFFFFAFEA AEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAA AABAAABFFAFAABFFEBFFFABEBFFEABBA ABFAAABFEBEAAFFFEBFFFAAFAFFFAFEA AEEAAABFAFAABFAAABEAAAABEBFFAEAA AABAAABEBEAABEAAABEAAAAAFAFEABBA ABFAAAFAFAAABEAAABEAAAAABEBFAFEA AEEAAAFEBEAABEAAABFFEAAAFAFFAEAA AABAAAFFAFAABEAAABFFEAABEBFEABBA ABFAAAFFEBEABEAAABEAAAAFAFFFAFEA AEEAAAFFFAFABFAAABEAAABEBFFFAEAA AABAAAFFFEBEAFFFEBEAAAFAFFFEABBA ABFAABFFFFAFABFFEBEAABEBFFFFAFEA AEEAABFFFFEBEAAAAAAAAFAFFFFFAEAA AABAABFFFFFAFAAAAAAABEBFFFFEABBA ABFAABFFFFFEBEAAAAAAFAFFFFFFAFEA AEEAABFFFFFFAFAAAAABEBFFFFFFAEAA AABAABFFFFFFEBEAAAAFAFFFFFFEABBA ABFAAFFFFFFFFAFAAABEBFFFFFFFAFEA AEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAA AABAAFFFFFFFFFAFABEBFFFFFFFEABBA ABFAAFFFFFFFFFEBEFAFFFFFFFFFAFEA AEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAA AABAAFFFFFFFFFFEBAFFFFFFFFFEABBA ABFABFFFFFFFFFFFABFFFFFFFFFFAFEA AEEABFFFFFFFFFFFEFFFFFFFFFFFAEAA AABABFFFFFFFFFFFFFFFFFFFFFFEABBA ABFABFFFFFFFFFFFFFFFFFFFFFFFAFEA AEEABFFFFFFFFFFFFFFFFFFFFFFFBEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEFBBA ABFBEFBEFBEFBEFBEFBEFBEFBEFBEEEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAA AAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Lock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBF BBAEBAEBAAEAAFBEFBEAAEAAEBAEBAEE FEBAEBAEABEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Lock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBA ABAEBAEBAAEAAFBEFBEAAEAAEBAEBAEA AEBAEBAEABEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Unlock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAAAEBAEBAEBAEAAEBAEBAEE FEBAEBAEAAABAEBAEBAEABABAEBAEBAB EAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBF BBAEBAEBAEAAAFBEFBEAAEAAEBAEBAEE FEBAEBAEBAEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Unlock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAAAEBAEBAEBAEAAEBAEBAEA AEBAEBAEAAABAEBAEBAEABABAEBAEBAA AAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBA ABAEBAEBAEAAAFBEFBEAAEAAEBAEBAEA AEBAEBAEBAEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set for PAL / NTSC TV # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAABAEBAEBAEBAEBAABAEBAB EAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBF BBAEBAEBAEAAEBAEBAEBAEBAABAEBAEE FEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAB EAEBAEBAEBAABAEBAEBAEBAABAEBAEBF BBAEBAEBAEBAABAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAABAEBAEBAABAEBAEBAB EAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBF BBAEBAEBAEBAEAAEBAEBAABAEBAEBAEE FEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAB EAEBAEBAEBAEBAABAEBAABAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEABEFBEFBEFBEFBEFBEFBEFBEEAABF BBAAFBEFBEFBEFBEFBEFBEFBEFBAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAB EAEAAAAAAAAAAAAAAAAAAAAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAEAEE FEAAAAAAAAAAAAAAAAAAAAAAAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAEBAEBAEBAEBAEBAEBAAAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEFBEBAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBAEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAAAAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set for PAL / NTSC TV # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAABAEBAEBAEBAEBAABAEBAA AAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBA ABAEBAEBAEAAEBAEBAEBAEBAABAEBAEA AEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAA AAEBAEBAEBAABAEBAEBAEBAABAEBAEBA ABAEBAEBAEBAABAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAABAEBAEBAABAEBAEBAA AAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBA ABAEBAEBAEBAEAAEBAEBAABAEBAEBAEA AEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAA AAEBAEBAEBAEBAABAEBAABAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEABEFBEFBEFBEFBEFBEFBEFBEEAABA ABAAFBEFBEFBEFBEFBEFBEFBEFBAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAA AAEAAAAAAAAAAAAAAAAAAAAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAEAEA AEAAAAAAAAAAAAAAAAAAAAAAAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAEBAEBAEBAEBAEBAEBAAAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEFBEBAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBAEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAAAAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Start Slide Show # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAB EAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAAFBEFBEFBEFBEFBEFBEAAEE FEBAEBAEBAEFBEFBEFBEFBEFBEFBABAB EAEBAEBAAFBEFBEFBEFBEFBEFBEFBABF BBAEBAEBAEFBEFBEFBEFBEFBEFBEFAEE FEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAB EAEBAEBAAAAAAAAAAAAAAAAAABEFBABF BBAEBAAFBEFBEFBEFBEFBEFBEABEFAEE FEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAB EAEBAAFBEFBEFBEFBEFBEFBEFBAFBABF BBAEBAEFBEFBEFBEFBEFBEFBEFAEFAEE FEBAAAAAAAAAAAAAAAAAAAEFBEABEAAB EAEBAAAAAAAAAAAAAAAAAABEFBAFBABF BBAAFBEFBEFBEFBEFBEFBEABEFAEFAEE FEBAEFBEFBEFBEFBEFBEFBAFBEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEFBEFBEFBEFBEFBEFAEFAEFAEE FEABEFBEFBEFBEFBEFBEFBEABEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEAAAAAAAAAAAAFBEFAEFAEFAEE FEABEFBAAAAAAAAAAAAEFBEABEABEAAB EAAFBEAAEBAEBAEBAEBAEFBAFBAFBABF BBAEFBABAEBAEBAEBAEABEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABABAB EAAFBABAEBAEBAEBAEBAAFBAFBAFAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAABAEE FEABEAAEBAEBAEBAEBAEABEABEAAEBAB EAAFBABAEBAEBAEBAEBAAFBAFBABAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAEBAEE FEABEFAEBAEBAEBAEBAAFBEABABAEBAB EAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBF BBAEFBEAAAAAAAAAAAAFBEFAABAEBAEE FEABEFBAAAAAAAAAAAAEFBEAAEBAEBAB EAAFBEFBEFBEFBEFBEFBEFBABAEBAEBF BBAEFBEFBEFBEFBEFBEFBEFAEBAEBAEE FEBAEFBEFBEFBEFBEFBEFBABAEBAEBAB EAEABEFBEFBEFBEFBEFBEFAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAABAEBAEBAEE FEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Start Slide Show # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAA AAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAAFBEFBEFBEFBEFBEFBEAAEA AEBAEBAEBAEFBEFBEFBEFBEFBEFBABAA AAEBAEBAAFBEFBEFBEFBEFBEFBEFBABA ABAEBAEBAEFBEFBEFBEFBEFBEFBEFAEA AEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAA AAEBAEBAAAAAAAAAAAAAAAAAABEFBABA ABAEBAAFBEFBEFBEFBEFBEFBEABEFAEA AEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAA AAEBAAFBEFBEFBEFBEFBEFBEFBAFBABA ABAEBAEFBEFBEFBEFBEFBEFBEFAEFAEA AEBAAAAAAAAAAAAAAAAAAAEFBEABEAAA AAEBAAAAAAAAAAAAAAAAAABEFBAFBABA ABAAFBEFBEFBEFBEFBEFBEABEFAEFAEA AEBAEFBEFBEFBEFBEFBEFBAFBEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEFBEFBEFBEFBEFBEFAEFAEFAEA AEABEFBEFBEFBEFBEFBEFBEABEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEAAAAAAAAAAAAFBEFAEFAEFAEA AEABEFBAAAAAAAAAAAAEFBEABEABEAAA AAAFBEAAEBAEBAEBAEBAEFBAFBAFBABA ABAEFBABAEBAEBAEBAEABEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABABAA AAAFBABAEBAEBAEBAEBAAFBAFBAFAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAABAEA AEABEAAEBAEBAEBAEBAEABEABEAAEBAA AAAFBABAEBAEBAEBAEBAAFBAFBABAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAEBAEA AEABEFAEBAEBAEBAEBAAFBEABABAEBAA AAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBA ABAEFBEAAAAAAAAAAAAFBEFAABAEBAEA AEABEFBAAAAAAAAAAAAEFBEAAEBAEBAA AAAFBEFBEFBEFBEFBEFBEFBABAEBAEBA ABAEFBEFBEFBEFBEFBEFBEFAEBAEBAEA AEBAEFBEFBEFBEFBEFBEFBABAEBAEBAA AAEABEFBEFBEFBEFBEFBEFAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAABAEBAEBAEA AEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 72 # Height: 36 # Length: 2592 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBE AEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFB BAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEF EBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Width: 18 # Height: 12 # Length: 216 # 0000000000000000000000000000FBEF0000 0000EEFE00000000BBAB00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000BBAB00000000FAAF0000 0000EFBE0000000000000000000000000000 # # Title: ? # Length: 544 # FBCFBCFBEF3EF3EF # FAEBAEBAEBAEBAE8 ABAEBAEAAEBAEBAF EEBAEBAEFAEBAEBB FAEBAEFAAFAEBAEA 2BAEBBEBAAEAEBAF EEBAEFAEBAEBAEBB FAEBAEBAEBBABAE8 ABAEAAEBAEBAEBAF EEBAEEAEBAABAEBB FAEBAEAAABBABAEA 2BAEAAAFBEBAEBAF EEBAEFBBABEBAEBB FAEBAAFAAFAABAE8 ABAEABEAAEFAEBAF EEBAEEABEAEBAEBB FAEBBEAAAABEBAEA 2BAEBAEAABAAABAF EEBAEAAAAAAFAEBB FAEAAAAFFAAABAE8 ABAEEABEBEABABAF EEBAEEBAAEBBAEBB FAEAAABEBEAABAEA 2BAEFAAFFAABABAF EEBAAAEAABAEAEBB FAEBBEAAAABEBAE8 ABAEABABEAFAEBAF EEBAEBBAABEBAEBB FAEBAEBBEEAEBAEA 2BAEBAAAAABAEBAF EEBAEBAEBAEBAEBB # CFBEF3CF3CFBEFBC # FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # same as above FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000020000 00000000000000000000000000000000000AC000 00000000000000000000000000000000002BA000 0000000000000000000000000000000000AEB800 0000000000000000000000000000000002BAEB00 000000000000000000000000000000000AEBAE80 000000000000000000000000000000002BAEBAE0 00000000000000000000000000000000AEBAEBAC 000000000000000000000000000000003AEBAEB0 000000000000000000000000000000000BAEBAC0 0000000000000000000000000000000002BAEB00 0000000000000000000000000000000000EBAC00 00000000000000000000000000000000002EB000 00000000000000000000000000000000000AC000 0000000000000000000000000000000000030000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000200000000000000020000 0000000000000000000B800000000000000AC000 0000000000000000002EB00000000000002BA000 000000000000000000BAE8000000000000AEB800 000000000000000002EBAE000000000002BAEB00 00000000000000000BAEBAC0000000000AEBAE80 00000000000000002EBAEBA0000000002BAEBAE0 0000000000000000BAEBAEB800000000AEBAEBAC 00000000000000002BAEBAE0000000003AEBAEB0 00000000000000000EBAEB80000000000BAEBAC0 000000000000000002EBAE000000000002BAEB00 000000000000000000AEB8000000000000EBAC00 0000000000000000003AE00000000000002EB000 0000000000000000000B800000000000000AC000 0000000000000000000200000000000000030000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0003000000000000000200000000000000020000 000E800000000000000B800000000000000AC000 003AE00000000000002EB00000000000002BA000 00EBAC000000000000BAE8000000000000AEB800 03AEBA000000000002EBAE000000000002BAEB00 0EBAEB80000000000BAEBAC0000000000AEBAE80 3AEBAEB0000000002EBAEBA0000000002BAEBAE0 EBAEBAE800000000BAEBAEB800000000AEBAEBAC 2EBAEBA0000000002BAEBAE0000000003AEBAEB0 0AEBAE80000000000EBAEB80000000000BAEBAC0 03AEBA000000000002EBAE000000000002BAEB00 00BAE8000000000000AEB8000000000000EBAC00 002BA00000000000003AE00000000000002EB000 000E800000000000000B800000000000000AC000 0002000000000000000200000000000000030000 # # Title: ? # Width: 72 # Height: 74 # Length: 5328 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAFBEFBEFBEFBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEEAAAAA AAAAABEFBEFBEFBEFBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEAAA AAAFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBAAA AAAFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFAAA AAAFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEAAA AAAFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 24 # Height: 10 # Length: 240 # 00000003800000000000000EB00000000000003AE8000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 0000002BAC0000000000000EB000000000000002C0000000 # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF8EAA8AE88FFFFFFFFFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFF8EEEEA888A8AA8AAEEEEFEEFF8FFFFFFFF FFFFF8FFFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFF FFFF89999999999FAAAAAAAAEEEEEF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF F89999999999998EAAAA8F88AEEEEF8FFFFFFFFF 899999999999AAEEAAA8FEFFAAEFFF8FFFFFFFFF F8999999999A88EEAAA8FFEEAEEEEF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFF899998AA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFF8988EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFF888EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA888EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA888AAAAAAAAAAAEEEEF8FFFFFFFFF FFFFFFF88EAAAAAAAAAAEAEEAEEFFF8FFFFFFFFF FFFFFFFFF88EEEEEEEEEEEEEEEFFF88FFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # 9999999999999999FFFFFF999999999999999999 999999999999999FEAA8AEFF9999999999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 999999FEEEEA888A8AA8AAEEEEFEEFFF99999999 99999FFFFFFFFFFFFFFFFFFFFFFFFFFF99999999 99999F888888888FAAAAAAAAEEEEEFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 9F8888888888FF8EAAAA8F88AEEEEFF999999999 F8888888888FAAEEAAA8FEFFAAEFFFF999999999 9F88888888FA88EEAAA8FFEEAEEEEFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 9999F8888FAA88EEAAA8FFEEAEEEEFF999999999 99999F8FFEAA88EEAAA8FEEEAAEFFFF999999999 999999FFFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA888EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA888AAAAAAAAAAAEEEEFF999999999 9999999FFEAAAAAAAAAAEAEEAEEFFFF999999999 999999999FFEEEEEEEEEEEEEEEFFFFF999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999999999999999999999999999999999 # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF88888888888888888888888888888888888FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FDDDDDBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDDDBBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDBBBBBBFF8FCCCCCEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCCEEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCEEEEEF8FAAA99999F8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FBBBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FCCCCAAAFF8FCCCCCDDDF8FCCCBBBBBF8FFF FF88FCCCCAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99999B9FF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99BBBB9FF8FDAAAAAAAF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEE99FF8FEEEEBBBBF8FDDDDDDDDF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9F99999999999999999999999999999999999FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FDDDDDBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDDDBBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDBBBBBBFF9FCCCCCEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCCEEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCEEEEEF9FAAA99999F9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FBBBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FCCCCAAAFF9FCCCCCDDDF9FCCCBBBBBF9FF9 9F99FCCCCAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99999B9FF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99BBBB9FF9FDAAAAAAAF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEE99FF9FEEEEBBBBF9FDDDDDDDDF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9999999999999999999999999999999999999999 # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFF88EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8888FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFFF8EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FFFF99999999999FEFF99999999999 9999999999999999999999999FEFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999FFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEEFFFFF FFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAEFFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEFFF FFFFFFFEEAAAAAAAAAAAAAAAAAAAAAAEAAAAEFFF FFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEAAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEEFFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEFFFFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAEFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEFFFFFFFFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEFFFFFFFFFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 999999999999FFFFFFFFFFFFFFFFFFFFFFF99999 99999999999FAAAAAAAAAAAAAAAAAAAAAAAF9999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 999999999FFFFFFFFFFFFFFFFFFFFFFAAAAAF999 9999999FFAAAAAAAAAAAAAAAAAAAAAAFAAAAF999 999999FAAAAAAAAAAAAAAAAAAAAAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 9999FAAAAAAAAAAAAAAAAAAAAAAFFAAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFF99999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFF999999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAF99999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAF9999999999 9999FAAAAAAAAAAAAAAAAAAAAAAFF99999999999 99999FFFFFFFFFFFFFFFFFFFFFF9999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 # # Title: Locked # Width: 12 # Height: 24 # Length: 288 # 999999999999999999999999 99999999FFEEEFF999999999 9999999FEEFFFEEF99999999 9999999EEF999FEE99999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9FFFFF9FF9999999 999999FFFEEEEEFFF9999999 999999FEEEDDDEEEF9999999 99999FEEEEFFFEEEEF999999 9999FEEEFFF8FFFEEEF99999 9999FEEFFFFFFFFFEEF99999 9999EEEFFFFFFFFFEEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF88AFFFFEE99999 9999EEFFFF8AEFFFFEE99999 9999FEEFFFFFFFFF8EF99999 99999FEFFFFFFFFFEF999999 999999FEFFF8FFFEF9999999 9999999EEEFFF8EE99999999 999999999FFFFF9999999999 999999999999999999999999 # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000B00000 000000000000000000000000000000000BBB0000 00000000000000000000000000000000BBBBB000 0000000000000000000000000000000BBBBBBB00 000000000000000000000000000000BBBBBBBBB0 0000000000000000000000000000000BBBBBBB00 00000000000000000000000000000000BBBBB000 000000000000000000000000000000000BBB0000 0000000000000000000000000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 00000000000000000000B0000000000000B00000 0000000000000000000BBB00000000000BBB0000 000000000000000000BBBBB000000000BBBBB000 00000000000000000BBBBBBB0000000BBBBBBB00 0000000000000000BBBBBBBBB00000BBBBBBBBB0 00000000000000000BBBBBBB0000000BBBBBBB00 000000000000000000BBBBB000000000BBBBB000 0000000000000000000BBB00000000000BBB0000 00000000000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 000000B0000000000000B0000000000000B00000 00000BBB00000000000BBB00000000000BBB0000 0000BBBBB000000000BBBBB000000000BBBBB000 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 00BBBBBBBBB00000BBBBBBBBB00000BBBBBBBBB0 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 0000BBBBB000000000BBBBB000000000BBBBB000 00000BBB00000000000BBB00000000000BBB0000 000000B0000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAABEFBEFBEFBEFBEFBEFBEAAAAEB AEAAAAFBEFBEFBEFBEFBEFBEFBAAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAABBEFBEFBEFBEFBEFBEFBEEAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBAEABAE BAEAFAAFBEFBEFBEFBEFBEFBEEBEAABA EBABEFAEFBEFBEFBEFBEFBEFBAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEEBEFABAE BAEAFBEABEFBEFBEFBEFBEFBAFBEEABA EBABEFBEBBEFBEFBEFBEFBEEBEFBEAEB AEABBEFBAFBEFBEFBEFBEFBAFBEFABAE BAEAFBEFAAFBEFBEFBEFBEEBEFBEEABA EBABEFBEFAEFBEFBEFBEFBEFBEFBEAEB AEABBEFBEEBEFBAFBEFBEFBEFBEFABAE BAEAFBEFBEABEEBEFBEFBEFBEFBEEABA EBABEFBEFBEFAABBEFBEFBEFBEFBEAEB AEABBEFBEFBEAAAFBEFBEFBEFBEFABAE BAEAFBEFBEFAAABEAAEAAAFBEFBEEABA EBABEFBEFBEFAABBAABAABEFBEFBEAEB AEABBEFBEFBEEAAFAAEAAFBEFBEFABAE BAEAFBEFBEFBEABEEAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFBEABEFBEFBEFABAE BAEAFBEFBEFBEABEFAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFAAFAAFBEFBEFABAE BAEAFBEFBEEBEABEAAEAAEFBEFBEEABA EBABEFBEFBAFAABAABBEABEFBEFBEAEB AEABBEFBEEBEFBEFBEFBEFAEFBEFABAE BAEAFBEFBAFBEFBEFBEFBEEBEFBEEABA EBABEFBEEBEFBEFBEFBEFBEABEFBEAEB AEABBEFBAFBEFBEFBEFBEFBEBBEFABAE BAEAFBEEBEFBEFBEFBEFBEFBAFBEEABA EBABEFBAFBEFBEFBEFBEFBEFAAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEFAEFABAE BAEAFBAFBEFBEFBEFBEFBEFBEEBEAABA EBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBEAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAAABEFBEFBEFBEFBEFBEFBEEAAAEB AEAAAABBEFBEFBEFBEFBEFBEFBAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Normal # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAABEFBEFBEFBEFBEFBEFBEAAAAEE FEAAAAFBEFBEFBEFBEFBEFBEFBAAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAABBEFBEFBEFBEFBEFBEFBEEAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBAEABAB EAEAFAAFBEFBEFBEFBEFBEFBEEBEAABF BBABEFAEFBEFBEFBEFBEFBEFBAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEEBEFABAB EAEAFBEABEFBEFBEFBEFBEFBAFBEEABF BBABEFBEBBEFBEFBEFBEFBEEBEFBEAEE FEABBEFBAFBEFBEFBEFBEFBAFBEFABAB EAEAFBEFAAFBEFBEFBEFBEEBEFBEEABF BBABEFBEFAEFBEFBEFBEFBEFBEFBEAEE FEABBEFBEEBEFBAFBEFBEFBEFBEFABAB EAEAFBEFBEABEEBEFBEFBEFBEFBEEABF BBABEFBEFBEFAABBEFBEFBEFBEFBEAEE FEABBEFBEFBEAAAFBEFBEFBEFBEFABAB EAEAFBEFBEFAAABEAAEAAAFBEFBEEABF BBABEFBEFBEFAABBAABAABEFBEFBEAEE FEABBEFBEFBEEAAFAAEAAFBEFBEFABAB EAEAFBEFBEFBEABEEAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFBEABEFBEFBEFABAB EAEAFBEFBEFBEABEFAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFAAFAAFBEFBEFABAB EAEAFBEFBEEBEABEAAEAAEFBEFBEEABF BBABEFBEFBAFAABAABBEABEFBEFBEAEE FEABBEFBEEBEFBEFBEFBEFAEFBEFABAB EAEAFBEFBAFBEFBEFBEFBEEBEFBEEABF BBABEFBEEBEFBEFBEFBEFBEABEFBEAEE FEABBEFBAFBEFBEFBEFBEFBEBBEFABAB EAEAFBEEBEFBEFBEFBEFBEFBAFBEEABF BBABEFBAFBEFBEFBEFBEFBEFAAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEFAEFABAB EAEAFBAFBEFBEFBEFBEFBEFBEEBEAABF BBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBEAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAAABEFBEFBEFBEFBEFBEFBEEAAAEE FEAAAABBEFBEFBEFBEFBEFBEFBAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Zoom # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEEABAE BAEAABAFBEFBEFBEFBEFBEFBEABAEABA EBABEBAEFBEFBEFBEFBEFBEFBAEBEAEB AEABBAABEFBEFBEFBEFBEFBEFAAFABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAAAAAAAAAAAAAAAAAAAAABEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEFFEBAEBAEBAEAFABAE BAEAFABAEBAEBBFFFEBAEBAEBABEEABA EBABEEABAFFAEFFFFEEBAEBAEABBEAEB AEABBEAEBBEBAFFBFFAEBAEBAEAFABAE BAEAFABAEBEEBFEBFEBFFBFFFABEEABA EBABEEABAFFAEBEFFEEFFEFFEABBEAEB AEABBEAFFFFFEEBFFBAFFBFFAEAFABAE BAEAFABBFFFFFAFFFEBBFFFEBABEEABA EBABEEABAFFAEBBFFAEBFFFAEABBEAEB AEABBEAEBBEBAEFFEBAEBFEBAEAFABAE BAEAFABAEBEEBAFFAEBAFFFEBABEEABA EBABEEABAFFAEBFEBAEBFFFAEABBEAEB AEABBEAEBAEBAFFFFFAFFAFFAEAFABAE BAEAFABAEBAEBFFFFEBFFBFFBABEEABA EBABEEABAEBAFFFFFEFFEEBFEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAAAAAAAAAAAAAAAAAAAAABABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAEFBEFBEFBEFBEFBEFBAABEAEB AEABBAABEFBEFBEFBEFBEFBEFAEBABAE BAEAEBAFBEFBEFBEFBEFBEFBEABAEABA EBABAFBEFBEFBEFBEFBEFBEFBEFAAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEFABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Zoom # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEEABAB EAEAABAFBEFBEFBEFBEFBEFBEABAEABF BBABEBAEFBEFBEFBEFBEFBEFBAEBEAEE FEABBAABEFBEFBEFBEFBEFBEFAAFABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAAAAAAAAAAAAAAAAAAAAABEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEFFEBAEBAEBAEAFABAB EAEAFABAEBAEBBFFFEBAEBAEBABEEABF BBABEEABAFFAEFFFFEEBAEBAEABBEAEE FEABBEAEBBEBAFFBFFAEBAEBAEAFABAB EAEAFABAEBEEBFEBFEBFFBFFFABEEABF BBABEEABAFFAEBEFFEEFFEFFEABBEAEE FEABBEAFFFFFEEBFFBAFFBFFAEAFABAB EAEAFABBFFFFFAFFFEBBFFFEBABEEABF BBABEEABAFFAEBBFFAEBFFFAEABBEAEE FEABBEAEBBEBAEFFEBAEBFEBAEAFABAB EAEAFABAEBEEBAFFAEBAFFFEBABEEABF BBABEEABAFFAEBFEBAEBFFFAEABBEAEE FEABBEAEBAEBAFFFFFAFFAFFAEAFABAB EAEAFABAEBAEBFFFFEBFFBFFBABEEABF BBABEEABAEBAFFFFFEFFEEBFEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAAAAAAAAAAAAAAAAAAAAABABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAEFBEFBEFBEFBEFBEFBAABEAEE FEABBAABEFBEFBEFBEFBEFBEFAEBABAB EAEAEBAFBEFBEFBEFBEFBEFBEABAEABF BBABAFBEFBEFBEFBEFBEFBEFBEFAAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEFABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Length: 48 # 00000006 00000007 00000004 00000005 00000003 00000004 00000004 00000006 00000009 00000007 00000008 00000008 # # Title: ? # Length: # 00000000000007E01FF81C38381C381C381C381C1C381FF807E0000000000000 00000000000003801F801F80038003800380038003803FF83FF8000000000000 0000000000000FE03FF03838003800F003E00F803E383FF83FF8000000000000 0000000000000FE03FF03838003803F003F0003838383FF00FE0000000000000 00000000000003E007E00EE01CE038E07FF87FF800E007F807F8000000000000 0000000000003FF83FF838003FE03FF00078003878783FF00FC0000000000000 00000000000007F01FF03C003BC07FF07C7878383C783FF00FC0000000000000 0000000000003FF83FF8007000F000E001E001C003C003800780000000000000 00000000000007E01FF81C381C380FF01FF8381C381C1FF807E0000000000000 00000000000007E01FF83C78383C3C7C1FFC07B800781FF01FC0000000000000 0000000000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 0000000000007FF87FFE1C0E1C0E1FF81FFE1C0E1C0E7FFE7FF8000000000000 00000000000007F61FFE3C0E78067000700078003C0E1FFE07F0000000000000 0000000000007FE07FF81C3C1C1E1C0E1C0E1C1E1C3C7FF87FE0000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C001C007F807F80000000000000 00000000000007F61FFE3C0E78007000703F783F3C0E1FFE07F0000000000000 0000000000007E7E7E7E1C381C381FF81FF81C381C387E7E7E7E000000000000 0000000000003FF83FF80380038003800380038003803FF83FF8000000000000 00000000000007FE07FE0070007000707070707078F03FE01FC0000000000000 0000000000007EFC7EFC1C701CE01FC01FE01DF01C7C7F3E7F3E000000000000 0000000000007FC07FC00E000E000E000E000E060E067FFE7FFE000000000000 000000000000F83EFC7E7C7C7EFC77DC77DC739C739CF93EF83E000000000000 000000000000F8FEFCFE3E383F383FB83BF839F838F8FE78FE38000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0000000000007FF07FF81C3C1C1C1C3C1FF81FF01C007F007F00000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE01FFE1CFC0000 0000000000007FF07FFC1C3C1C3C1FF81FF01CF01C787F3E7F1E000000000000 0000000000001FEC7FFC701C70007FF01FFC001C701C7FFC6FF0000000000000 0000000000007FFC7FFC739C739C03800380038003803FF83FF8000000000000 0000000000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 000000000000FEFEFEFE38381C701C700EE00EE007C007C00380000000000000 000000000000FC3FFC3F718E718E3BDC3BDC3FFC1E781C381C38000000000000 0000000000007F7E7F7E1E380FF007C003E00FF01C787EFE7EFE000000000000 0000000000007EFC7EFC1C700EE007C007C0038003801FF01FF0000000000000 0000000000003FFC3FFC38F839F003E007C00F9C1F1C3FFC3FFC000000000000 000000000000000000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000000F800F8003BF03FFC3C1E380E380E3C1EFFFCFBF0000000000000 000000000000000000000FDC3FFC783C70007000781C3FFC0FF0000000000000 000000000000007C007C0FDC3FFC783C701C701C783C3FFF0FDF000000000000 000000000000000000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 00000000000001FC07FC07003FF03FF00700070007003FF03FF0000000000000 000000000000000000000FDF3FFF783C701C701C783C3FFC0FDC001C3FF81FF0 000000000000F800F8003BF03FF83C38383838383838FEFEFEFE000000000000 000000000380038000001F801F8003800380038003803FF83FF8000000000000 0000000000E000E000003FE03FE000E000E000E000E000E000E001E03FC03F80 0000000000007C007C001CF81CF81DE01F801FC01FF07CFC7C7C000000000000 0000000000001F801F800380038003800380038003803FF83FF8000000000000 00000000000000000000EF78FFFC739C739C739C739CFBDEFBDE000000000000 00000000000000000000FBF0FFF83C38383838383838FEFEFEFE000000000000 000000000000000000000FF03FFC781E700E700E781E3FFC0FF0000000000000 00000000000000000000FBF0FFFC3C1E380E380E3C1E3FFC3BF03800FF00FF00 000000000000000000001FBE7FFEF078E038E038F0787FF81FB8003801FE01FE 000000000000000000003EF83FFE0F1E0E000E000E007FF07FF0000000000000 000000000000000000001FB07FF070307FC01FF060707FF06FC0000000000000 0000000000001C001C00FFF0FFF01C001C001C001C1C1FFC07F0000000000000 00000000000000000000F8F8F8F838383838383838783FFE0FBE000000000000 00000000000000007E7E7E7E1C381E780E7007E007E003C003C0000000000000 00000000000000000000F83EF93E739C7BBC3FF83EF81C701C70000000000000 000000000000000000007EFC7EFC1E700FC007E01CF07EFC7EFC000000000000 000000000000000000007E7E7E7E1C380E700FE007C00380038007003FC03FC0 000000000000000000003FF83FF831F003C007801F183FF83FF8000000000000 00000000000003C003C003C003C003C001800180000003C003C0000000000000 000000000000000000000000000000000000000003C003C003C0000000000000 0000000000000FF01FF81C38003800F007C00700000007800780000000000000 000000000000001C0038007000E001C0038007000E001C003800000000000000 0000000000000000000003C003C003C00000000003C003C003C0000000000000 00000000000007C00FE00E600F00079C1FD839F838F03FFC0FBC000000000000 # 00000000000003C003C000000180018003C003C003C003C003C0000000000000 0000000000000FC0006007E00C600C6007F00000000000000000000000000000 00000000000007C00C600C600C600C6007C00000000000000000000000000000 00000000000001E001E0000000E003E00F001C001C381FF80FF0000000000000 0F0003C000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 0CC00CC000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 00000000000007F61FFE3C0E78067000700078003C0E1FFE07F001C007C00780 078001E000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 01E0078000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 0F0003C000003FF83FF80380038003800380038003803FF83FF8000000000000 07600DC00000F8FEFCFE3E383F383FB83BF839F838F8FE78FE38000000000000 0F0003C000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0CC00CC000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0F0003C000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 0660066000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 00000000000007E00FF81C381C381DF01DF81C1C1C1C7DF87DF0000000000000 000000000F0003C000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000660066000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000000000000000FDC3FFC783C70007000781C3FFC0FF003800F800F00 000000000F0003C000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 0000000001E0078000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 000000001E00078000001F801F8003800380038003803FF83FF8000000000000 0000000007600DC00000FBF0FFF83C38383838383838FEFEFEFE000000000000 00000000078001E000000FF03FFC781E700E700E781E3FFC0FF0000000000000 000000000660066000000FF03FFC781E700E700E781E3FFC0FF0000000000000 000000000F0003C00000F8F8F8F838383838383838783FFE0FBE000000000000 000000000CC00CC00000F8F8F8F838383838383838783FFE0FBE000000000000 00000000000001E001C003800300000000000000000000000000000000000000 000000000000000000000000000000000000000003C003800700060000000000 000000000000000000000000000007C007C00000000000000000000000000000 0000000001E0078000001F801F8003800380038003803FF83FF8000000000000 0000000001E0078000000FF03FFC781E700E700E781E3FFC0FF0000000000000 0000000003C00F0000003FE03FF800381FF87FF870387FFE1FDE000000000000 000007C01EF0783C0000F8F8F8F838383838383838783FFE0FBE000000000000 # # Text: / # 2F 00 # # Text: : # 3A 00 # # Text: am # 61 6D 00 # # Text: pm # 70 6D 00 # # Text: No pictures in camera. # 4B 65 69 6E 65 20 42 69 6C 64 65 72 0A 69 6E 20 64 65 72 20 4B 61 6D 65 72 61 2E 00 # # Text: Yes # 4A 61 00 # # Text: No # 4E 65 69 6E 00 # # Text: . # 2E 00 # # Text: # 00 # # Text: # 00 # # Text: Lock? # 53 70 65 72 72 65 6E 3F 00 # # Text: Unlock? # 45 6E 74 73 70 65 72 72 65 6E 3F 00 # # Text: Erase? # 4C 98 73 63 68 65 6E 3F 00 # # Text: View Small Photos? # 4B 6C 65 69 6E 65 0A 42 69 6C 64 65 72 0A 61 6E 7A 65 69 67 65 6E 3F 00 # # Text: View Full screen? # 00 # # Text: Set Screen Brightness? # 41 6E 7A 65 69 67 65 68 65 6C 6C 69 67 6B 65 69 74 0A 65 69 6E 73 74 65 6C 6C 65 6E 3F 00 # # Text: Start Slide Show? # 44 69 61 9D 0A 56 6F 72 74 72 61 67 0A 73 74 61 72 74 65 6E 3F 00 # # Text: Stop Slide Show? # 00 # # Text: Set Camera Exposure? # 42 65 6C 69 63 68 74 75 6E 67 0A 65 69 6E 73 74 65 6C 6C 65 6E 3F 00 # # Text: Format Memory Card? # 53 70 65 69 63 68 65 72 6B 61 72 74 65 0A 66 6F 72 6D 61 74 69 65 72 65 6E 3F 00 # # Text: Set Date & Time? # 44 61 74 75 6D 20 26 0A 5A 65 69 74 0A 65 69 6E 73 74 65 6C 6C 65 6E 3F 00 # # Text: Set for NTSC TV? # 41 75 66 20 4E 54 53 43 0A 54 56 20 65 69 6E 73 74 65 6C 6C 65 6E 3F 00 # # Text: Set for PAL TV? # 41 75 66 20 50 41 4C 0A 54 56 20 65 69 6E 73 74 65 6C 6C 65 6E 3F 00 # # Text: Review Pictures? # 42 69 6C 64 65 72 0A 61 6E 73 65 68 65 6E 3F 00 # # Text: Take Pictures? # 42 69 6C 64 0A 61 75 66 6E 65 68 6D 65 6E 3F 00 # # Text: # 00 # # Text: One # 45 69 6E 73 0A 20 20 20 20 20 00 # # Text: None # 53 74 6F 70 0A 20 20 20 20 20 00 # # Text: All # 41 6C 6C 65 0A 20 20 20 20 20 00 # # Text: # 00 # # Text: ERASE? # 4C 98 73 63 68 65 6E 73 3F 00 # # Text: Erase This Picture? # 42 69 6C 64 0A 77 69 72 64 0A 67 65 6C 98 73 63 68 74 3F 00 # # Text: Cancel Picture Erase? # 41 62 62 72 75 63 68 0A 42 69 6C 64 0A 6C 98 73 63 68 65 6E 3F 00 # # Text: Erase All Pictures? # 41 6C 6C 65 0A 42 69 6C 64 65 72 0A 6C 98 73 63 68 65 6E 3F 00 # # Text: Erasing picture... # 42 69 6C 64 65 72 20 77 65 72 64 65 6E 0A 67 65 6C 98 73 63 68 74 2E 2E 2E 00 # # Text: Picture is LOCKED Unlock before erasing # 42 69 6C 64 20 69 73 74 0A 67 65 73 70 65 72 72 74 2E 0A 56 6F 72 20 64 65 6D 0A 4C 98 73 63 68 65 6E 0A 65 6E 74 73 70 65 72 72 65 6E 2E 00 # # Text: Erase ALL pictures? # 41 4C 4C 45 20 42 69 6C 64 65 72 0A 6C 98 73 63 68 65 6E 3F 00 # # Text: Erasing ALL pictures... # 41 4C 4C 45 20 42 69 6C 64 65 72 0A 77 65 72 64 65 6E 0A 67 65 6C 98 73 63 68 74 2E 2E 2E 00 # # Text: Normal? # 53 74 61 6E 64 61 72 64 3F 00 # # Text: Zoom? # 5A 6F 6F 6D 3F 00 # # Text: Set Screen Brightness # 41 6E 7A 65 69 67 65 68 65 6C 6C 69 67 6B 65 69 74 0A 65 69 6E 73 74 65 6C 6C 65 6E 00 # # Text: Set Camera Exposure # 42 65 6C 69 63 68 74 75 6E 67 0A 65 69 6E 73 74 65 6C 6C 65 6E 00 # # Text: Formatting resets the memory card and erases all photos on it. Format? # 46 6F 72 6D 61 74 69 65 72 65 6E 20 73 65 74 7A 74 0A 64 69 65 20 53 70 65 69 63 68 65 72 6B 61 72 74 65 0A 7A 75 72 9A 63 6B 20 75 6E 64 20 6C 98 73 63 68 74 0A 61 6C 6C 65 20 46 6F 74 6F 73 2E 0A 0A 46 6F 72 6D 61 74 69 65 72 65 6E 3F 00 # # Text: Formatting the memory card..... # 46 6F 72 6D 61 74 69 65 72 65 6E 20 64 65 72 0A 53 70 65 69 63 68 65 72 6B 61 72 74 65 2E 2E 2E 00 # # Text: Set for PAL TV? # 41 75 66 0A 50 41 4C 20 54 56 0A 65 69 6E 73 74 65 6C 6C 65 6E 3F 00 # # Text: Set for NTSC TV? # 41 75 66 0A 4E 54 53 43 20 54 56 0A 65 69 6E 73 74 65 6C 6C 65 6E 3F 00 # # Text: # 00 # # Text: This pict # 4C 98 73 63 68 65 6E 73 0A 44 69 65 73 65 73 0A 42 69 6C 64 00 # # Text: No # 4E 65 69 6E 00 # # Text: ALL pict # 4C 98 73 63 68 65 6E 73 0A 44 69 65 73 65 73 0A 42 69 6C 64 00 # # Text: January # 4A 61 6E 75 61 72 00 # # Text: February # 46 65 62 72 75 61 72 00 # # Text: March # 4D 91 72 7A 00 # # Text: April # 41 70 72 69 6C 00 # # Text: May # 4D 61 69 00 # # Text: June # 4A 75 6E 69 00 # # Text: July # 4A 75 6C 69 00 # # Text: August # 41 75 67 75 73 74 00 # # Text: September # 53 65 70 74 65 6D 62 65 72 00 # # Text: October # 4F 6B 74 6F 62 65 72 00 # # Text: November # 4E 6F 76 65 6D 62 65 72 00 # # Text: December # 44 65 7A 65 6D 62 65 72 00 # # Text: Day # 54 61 67 00 # # Text: Month # 4D 6F 6E 61 74 00 # # Text: Year # 4A 61 68 72 00 # # Text: Time # 5A 65 69 74 00 # # Text: AM # 41 4D 00 # # Text: PM # 50 4D 00 # # Text: Set Date and Time # 20 20 44 61 74 75 6D 20 26 20 5A 65 69 74 00 # # Text: Is this correct? # 4B 6F 72 72 65 6B 74 3F 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: Service Menu # 20 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 20 20 00 # # Text: P # 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: S # 53 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service ID # 53 65 72 76 69 63 65 20 49 44 20 20 20 20 20 20 20 00 # # Text: Ver # 56 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service Menu 2 # 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 32 20 20 00 # # Text: Reset Pictures # 52 65 73 65 74 20 50 69 63 74 75 72 65 73 20 20 20 00 # # Text: Reset Strobe Pict # 52 65 73 65 74 20 53 74 72 6F 62 65 20 50 69 63 74 00 # # Text: Reset Born OnDate # 52 65 73 65 74 20 42 6F 72 6E 20 4F 6E 44 61 74 65 00 # # Text: Reset FactoryDflt # 52 65 73 65 74 20 46 61 63 74 6F 72 79 44 66 6C 74 00 # # Text: Are You Sure? # 41 72 65 20 59 6F 75 20 53 75 72 65 3F 00 # # Text: Reset to 0 # 52 65 73 65 74 20 74 6F 20 30 00 # # Text: S . # 53 20 20 2E 20 20 00 # # Text: M . # 4D 20 20 2E 20 20 00 # # Text: Yes # 59 65 73 00 # # Text: No # 4E 6F 00 # # Text: # 00 # # Text: BornOnDate # 42 6F 72 6E 4F 6E 44 61 74 65 20 20 20 20 20 20 20 00 # # Text: FinalErrCode # 46 69 6E 61 6C 45 72 72 43 6F 64 65 20 20 20 20 20 00 # # Text: ResetFinalErrCode # 52 65 73 65 74 46 69 6E 61 6C 45 72 72 43 6F 64 65 00 libgphoto2-2.5.9/camlibs/konica/localization/Makefile.in0000644000175000001440000004310712623156011020132 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = camlibs/konica/localization ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(localizationdir)" DATA = $(localization_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ localizationdir = $(datadir)/$(PACKAGE)/$(VERSION)/konica localization_DATA = english french german japanese korean spanish EXTRA_DIST = $(localization_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign camlibs/konica/localization/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign camlibs/konica/localization/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-localizationDATA: $(localization_DATA) @$(NORMAL_INSTALL) @list='$(localization_DATA)'; test -n "$(localizationdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(localizationdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(localizationdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(localizationdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(localizationdir)" || exit $$?; \ done uninstall-localizationDATA: @$(NORMAL_UNINSTALL) @list='$(localization_DATA)'; test -n "$(localizationdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(localizationdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(localizationdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-localizationDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-localizationDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info 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-info install-info-am \ install-localizationDATA 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 tags-am uninstall \ uninstall-am uninstall-localizationDATA .PRECIOUS: Makefile # 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. .NOEXPORT: libgphoto2-2.5.9/camlibs/konica/localization/english0000644000175000001440000034750412557123324017460 00000000000000################################################################################ # LOCALIZATION FOR HP PhotoSmart C30 # # ---------------------------------- # # This file (except the comments) will be sent to the camera (0x9200 command). # # In order to make the data readable for humans, I commented the data and # # formatted to some extend. # # # # SYMBOLS # # ------- # # Each symbol begins with a red pixel in the upper left corner, followed by a # # yellow one, then by a blue one. The headline "red" does simply indicate that # # those are lines beginning with a red pixel. The same with headline "yellow" # # and headline "blue". The brightness of each pixel is defined by a value # # ranging between A (dark) and F (bright). # ################################################################################ # # Variable: KC_LOCALIZE_CARDREV # Value: 0x00 0x02 # Length: 32 # 4B 43 5F 4C 4F 43 41 4C 49 5A 45 5F 43 41 52 44 52 45 56 3A 00 02 FF FF FF FF FF FF FF FF FF FF # # Variable: LOCALIZATION # Length: 16 # 4C 4F 43 41 4C 49 5A 41 54 49 4F 4E FF FF FF FF # # Variable: LNG # Value: 0x00 # Length: 5 # Explanation: Indicator for language. Known values are: # - 0x00: English # - 0x01: French # - 0x02: Spanish # - 0x04: German # - 0x05: Japanese # - 0x06: Korean # 4C 4E 47 3A 00 # # Variable: TV # Value: 0x00 # Length: 4 # Explanation: Format of TV output. Accepted values are: # - 0x00: NTSC # - 0x01: PAL # - 0x02: Do not display TV menu. # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the format of the TV output. # 54 56 3A 00 # # Variable: DT # Value: 0x00 # Length: 7 # Explanation: Date format. Accepted values are: # - 0x00: Month/Day/Year # - 0x01: Day/Month/Year # - 0x02: Year/Month/Day # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the date format. # 44 54 3A 00 FF FF FF # # Variable: DST # Value: 0x00 0x86 0x00 0x00 # Length: 16 # 44 53 54 3A 00 86 00 00 FF FF FF FF FF FF FF FF # # Variable: SIZ # Value: 0x00 0x01 0x00 0x00 # Length: 16 # 53 49 5A 3A 00 01 00 00 FF FF FF FF FF FF FF FF # # Variable: SUM: # Value: 0x11 # Length: 8 # Explanation: Sum of all bytes starting with the table of contents. The camera # won't check this number. # 53 55 4D 3A 11 FF FF FF # # Variable: CRC # Value: 0x7F 0x8C # Length: 8 # Explanation: FCS (frame check sequence) of CRC (cyclic redundancy check). The # camera will check this number. # 43 52 43 3A 7F 8C FF FF # # Table of Contents (text entries only) # # One entry: 00 FE XX XX (XX XX is the memory address). # 00 FE C4 80 00 FE C4 82 00 FE C4 84 00 FE C4 87 00 FE C4 8A 00 FE C4 A1 00 FE C4 A5 00 FE C4 A8 00 FE C4 AA 00 FE C4 AB 00 FE C4 AC 00 FE C4 B2 00 FE C4 BA 00 FE C4 C1 00 FE C4 D4 00 FE C4 E6 00 FE C4 FD 00 FE C5 0F 00 FE C5 20 00 FE C5 35 00 FE C5 49 00 FE C5 5A 00 FE C5 6B 00 FE C5 7B 00 FE C5 8C 00 FE C5 9B 00 FE C5 9C 00 FE C5 A6 00 FE C5 B1 00 FE C5 BB 00 FE C5 BC 00 FE C5 C3 00 FE C5 D7 00 FE C5 ED 00 FE C6 01 00 FE C6 14 00 FE C6 3C 00 FE C6 50 00 FE C6 68 00 FE C6 70 00 FE C6 76 00 FE C6 8C 00 FE C6 A0 00 FE C6 E8 00 FE C7 08 00 FE C7 18 00 FE C7 29 00 FE C7 2A 00 FE C7 38 00 FE C7 3F 00 FE C7 4A 00 FE C7 52 00 FE C7 5B 00 FE C7 61 00 FE C7 67 00 FE C7 6B 00 FE C7 70 00 FE C7 75 00 FE C7 7C 00 FE C7 86 00 FE C7 8E 00 FE C7 97 00 FE C7 A0 00 FE C7 A4 00 FE C7 AA 00 FE C7 AF 00 FE C7 B4 00 FE C7 B7 00 FE C7 BA 00 FE C7 CC 00 FE C7 DD 00 FE C7 DE 00 FE C7 DF 00 FE C7 E0 00 FE C7 E1 00 FE C7 E2 00 FE C7 E3 00 FE C7 E4 00 FE C7 E5 00 FE C7 E6 00 FE C7 E7 00 FE C7 F9 00 FE C8 0B 00 FE C8 1D 00 FE C8 2F 00 FE C8 41 00 FE C8 53 00 FE C8 65 00 FE C8 77 00 FE C8 89 00 FE C8 9B 00 FE C8 A9 00 FE C8 B4 00 FE C8 BB 00 FE C8 C2 00 FE C8 C6 00 FE C8 C9 00 FE C8 CA 00 FE C8 DC 00 FE C8 EE # # Title: Take Pictures # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAABAEBAAAAAAAEBAEBAEBAEBAEBF BBAEAAABAABAEAAABAEBEEBAEBAEBAEE FEBAABAAAAEAAEAAEBAFAEEBAEBAEBAB EAEAAEAAEBAABAABAEBEBAAEBAEBAEBF BBAEBAEBAABAEBAEBAFAEBBAEBAEBAEE FEBAABAAAAEAAEAAEBEBAEBBAEBAEBAB EAEAAEAAEBAABAABAFAEBAEABAEBAEBF BBAEAAABAABAEBAEBEBAEBAEEBAEBAEE FEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAB EAEBAABAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAAABFFFFFFFFFFAFFEBFFFFFFFEAABF BBAAFFFFFFFFFFFAFFEBFFFFFFFFEAEE FEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAB EAABAEBAEFBEFBEFAAABEFBEEAAABEBF BAAEBAEBBEFBEFBAAAAABEFBEAAABAAE FEBAEBAEFBEFBEEAAAAABBEFAAAAAEAB EAABAEBAEFBEFBAABFFAAFBEEAAABEBF BAAEBAEBBEFBEEABFFFEAAFBEAAABAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAAFFFFFEABEFBEFBEBF BAAEBAEBBEFBEABFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBABFFFFFEAEFBEFBEEAB EAABAEBAEFBEFABFFFFFEABEFBEFBEBF BAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAABFFFEABBEFBEFBEBF BAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAE FEBAEBAEFBEFBEEAAAAABBEFBEFBEEAB EAABAEBAEFBEFBEAAAAAEFBEFBEFBEBF BAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Take Pictures # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAABAEBAAAAAAAEBAEBAEBAEBAEBA ABAEAAABAABAEAAABAEBEEBAEBAEBAEA AEBAABAAAAEAAEAAEBAFAEEBAEBAEBAA AAEAAEAAEBAABAABAEBEBAAEBAEBAEBA ABAEBAEBAABAEBAEBAFAEBBAEBAEBAEA AEBAABAAAAEAAEAAEBEBAEBBAEBAEBAA AAEAAEAAEBAABAABAFAEBAEABAEBAEBA ABAEAAABAABAEBAEBEBAEBAEEBAEBAEA AEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAA AAEBAABAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAAABFFFFFFFFFFAFFEBFFFFFFFEAABA ABAAFFFFFFFFFFFAFFEBFFFFFFFFEAEA AEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA AAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAA AAABAEBAEFBEFBEFAAABEFBEEAAABEBA AAAEBAEBBEFBEFBAAAAABEFBEAAABAAA AEBAEBAEFBEFBEEAAAAABBEFAAAAAEAA AAABAEBAEFBEFBAABFFAAFBEEAAABEBA AAAEBAEBBEFBEEABFFFEAAFBEAAABAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAAFFFFFEABEFBEFBEBA AAAEBAEBBEFBEABFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBABFFFFFEAEFBEFBEEAA AAABAEBAEFBEFABFFFFFEABEFBEFBEBA AAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAABFFFEABBEFBEFBEBA AAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAA AEBAEBAEFBEFBEEAAAAABBEFBEFBEEAA AAABAEBAEFBEFBEAAAAAEFBEFBEFBEBA AAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBEBAEBAEEBAEBAEE FEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAB EAEBAEBAEAAABAABAEAEBAEEBAEBAEBF BBAEBAEBAABAABAEBAFAEBBAEBAEBAEE FEBAEBAEBAEAAEAAEBABAEEBAEBAEBAB EAEBAEBAEAAAAAABAEBABBAEBAEBAEBF BBAEBAEBAABAEAAEBAEBEEBAEBAEBAEE FEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAB EAEBAEBAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAE FEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAB EABFFFFFFFFFFFFAFFEBFFFFFFFFFEBF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BABEFBEFBEFBEFBEFBEFBEFBEFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEEAEFBAAAAAAAAAAAAAABEABEBF BABEFBAABEFAEBAEBAEBAEBAAFAABAAE FEBBEFAABBEAAEBAEBAEBAEBAEAAAEAB EAAFBEAAAFBABAEBAEBAEBAEABAABEBF BABEFBEABEFAEBAEBAEBAEBAAFAAFAAE FEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEFBEABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAABBEAAEBAEBAEBAEBAEFBEEAB EAAFBEAAAFBABAEBAEBAEBAEABEFBEBF BABEFBAABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAEBAEBAEBAEBAAFBEFAAE FEBBAABEAAEAAEBAEBAEBAEBAEFBEEAB EAAFAAFBAABABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAAAAAAAAAAAAAAFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBEBAEBAEEBAEBAEA AEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAA AAEBAEBAEAAABAABAEAEBAEEBAEBAEBA ABAEBAEBAABAABAEBAFAEBBAEBAEBAEA AEBAEBAEBAEAAEAAEBABAEEBAEBAEBAA AAEBAEBAEAAAAAABAEBABBAEBAEBAEBA ABAEBAEBAABAEAAEBAEBEEBAEBAEBAEA AEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAA AAEBAEBAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AABFFFFFFFFFFFFAFFEBFFFFFFFFFEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA AABEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEEAEFBAAAAAAAAAAAAAABEABEBA AABEFBAABEFAEBAEBAEBAEBAAFAABAAA AEBBEFAABBEAAEBAEBAEBAEBAEAAAEAA AAAFBEAAAFBABAEBAEBAEBAEABAABEBA AABEFBEABEFAEBAEBAEBAEBAAFAAFAAA AEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEFBEABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAABBEAAEBAEBAEBAEBAEFBEEAA AAAFBEAAAFBABAEBAEBAEBAEABEFBEBA AABEFBAABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAEBAEBAEBAEBAAFBEFAAA AEBBAABEAAEAAEBAEBAEBAEBAEFBEEAA AAAFAAFBAABABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAAAAAAAAAAAAAAFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: View Small Photos # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABAAAAAAAABAAAAAAAAEAAAAAAAAEBF BBFAAEBABAAFABEFBEFAAAEFBAEBAAEE FEEABAEBEBAEAFBEFBEABABEFBAEABAB EABAEBABAEABAFFFEFBAEAFBEEBAAEBF BBFAAEBEBAAFABFFBEFAAAEFBAEBAAEE FEEABABAEBAEAFFEFBAABABEFBAEABAB EABAEBEBAEABAEFBEFBAEAFBEFBAAEBF BBFAABAEBAAFABEFBAEAAAFBBEFBAAEE FEEABEBAEBAEAFBEFBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEAAEAEBF BBFAEBAEBAAFABEFBAEAAAFBBAABAAEE FEEAAEBAEBAEAFBAEBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEFBEAEBF BBFAAAAAAAAFAAAAAAAAAAAAAAAAAAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAABAEFBEAAABEFBEBAAAEBAEBAAAEE FEBAEBAEFBABAFBEFAEABAAEBAEBABAB EAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBF BBAABAEFBEAAABEFBEBAAABBAEBAAAEE FEBAFBEEFBABAFBEFAEABAFBBAEBABAB EAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBF BBAABEFFBEAAAAEBBEFAAABEFEBAAAEE FEBAFBEEFBABABAEFBEABAFBEAEBABAB EAEABAEBEFAEAEBAEFBAEAEFBBAEAEBF BBAAEBAFBEAAAAEBBEFAAABEFEBAAAEE FEBAAEBEFBABABAEFBEABAFBEFEBABAB EAEABAEBEFAEAEBAEFBAEAEFBEAEAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAAEFBEFAAAAABEFBEAAABEFBEBAAEE FEBABFFBEBABABFBEFBABAFBEFAEABAB EAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBF BBAAEFBEBBAAAABEFFEAAABEFBEBAAEE FEBABEBAEFABABFBEFBABAFBBEAEABAB EAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABAFBBEAEABAB EAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABABAEBAEABAB EAEAAEBABEAEAAEBBAEAEAEBAEBAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: View Small Photos # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABAAAAAAAABAAAAAAAAEAAAAAAAAEBA ABFAAEBABAAFABEFBEFAAAEFBAEBAAEA AEEABAEBEBAEAFBEFBEABABEFBAEABAA AABAEBABAEABAFFFEFBAEAFBEEBAAEBA ABFAAEBEBAAFABFFBEFAAAEFBAEBAAEA AEEABABAEBAEAFFEFBAABABEFBAEABAA AABAEBEBAEABAEFBEFBAEAFBEFBAAEBA ABFAABAEBAAFABEFBAEAAAFBBEFBAAEA AEEABEBAEBAEAFBEFBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEAAEAEBA ABFAEBAEBAAFABEFBAEAAAFBBAABAAEA AEEAAEBAEBAEAFBAEBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEFBEAEBA ABFAAAAAAAAFAAAAAAAAAAAAAAAAAAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAABAEFBEAAABEFBEBAAAEBAEBAAAEA AEBAEBAEFBABAFBEFAEABAAEBAEBABAA AAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBA ABAABAEFBEAAABEFBEBAAABBAEBAAAEA AEBAFBEEFBABAFBEFAEABAFBBAEBABAA AAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBA ABAABEFFBEAAAAEBBEFAAABEFEBAAAEA AEBAFBEEFBABABAEFBEABAFBEAEBABAA AAEABAEBEFAEAEBAEFBAEAEFBBAEAEBA ABAAEBAFBEAAAAEBBEFAAABEFEBAAAEA AEBAAEBEFBABABAEFBEABAFBEFEBABAA AAEABAEBEFAEAEBAEFBAEAEFBEAEAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAAEFBEFAAAAABEFBEAAABEFBEBAAEA AEBABFFBEBABABFBEFBABAFBEFAEABAA AAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBA ABAAEFBEBBAAAABEFFEAAABEFBEBAAEA AEBABEBAEFABABFBEFBABAFBBEAEABAA AAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABAFBBEAEABAA AAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABABAEBAEABAA AAEAAEBABEAEAAEBBAEAEAEBAEBAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Screen Brightness # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBABBAEBAEBAEBAEBAB EAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAEAEEBABBAFAEBAEEBAABAEAAEBAB EAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABAAEAEBAEBAEBAEEAEBBAEBAB EAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAB EAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEABAEBAB EAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBF BBAEAEFAEBEFBEFFFFBEFBEEBAABBAEE FEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAB EAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAB EABAEBAEBEFBEFFFFFFFBEFBEEBAEBBF BAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAE FEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAB EAEBABAEBEFBEFFFFFFFBEFBEEBAAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAAAEBEFBEFBFFFFFBEFBEEBAABBAB EAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBF BBAEBAFAEBEFBEFFFFBEFBEEBAAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEBBAEBAB EAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAEBEFBEFBEFBEFBAEBBAEBAB EAEBAFAABAEBEFBEFBEFBEEBBABBAEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAEBABAEBAEBEFBEFBAEBAEABAEBAB EAEBAEAEBBABAEBAEBAEBBAFAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABBABBABAEBAEBBEABABBAEBAB EAEBAFBAEBEEBABAEBAAEAEEBABBAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAEBAEBABBAFBABBAEBAABAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Screen Brightness # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBABBAEBAEBAEBAEBAA AAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAEAEEBABBAFAEBAEEBAABAEAAEBAA AAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABAAEAEBAEBAEBAEEAEBBAEBAA AAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAA AAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEABAEBAA AAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBA ABAEAEFAEBEFBEFFFFBEFBEEBAABBAEA AEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAA AAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAA AABAEBAEBEFBEFFFFFFFBEFBEEBAEBBA AAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAA AEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAA AAEBABAEBEFBEFFFFFFFBEFBEEBAAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAAAEBEFBEFBFFFFFBEFBEEBAABBAA AAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBA ABAEBAFAEBEFBEFFFFBEFBEEBAAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEBBAEBAA AAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAEBEFBEFBEFBEFBAEBBAEBAA AAEBAFAABAEBEFBEFBEFBEEBBABBAEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAEBABAEBAEBEFBEFBAEBAEABAEBAA AAEBAEAEBBABAEBAEBAEBBAFAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABBABBABAEBAEBBEABABBAEBAA AAEBAFBAEBEEBABAEBAAEAEEBABBAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAEBAEBABBAFBABBAEBAABAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Date & Time # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEABAFBEFAEFBAFBEFBAFBEFBABF BBAEFBAFAEFBEABEEBEFBEFAEFBEFAEE FEABEFAEABEFBAFBAFBEFBEABEFBEAAB EAAFBEABAFBEFAEEBEFBEFBAFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEABAFAEFBEFBAFBEFBEFBEFBAFAEE FEABAFAEABEFBEFAEFBEFBEFBEEBEAAB EAAFAEABAFBEFBEABEFBEFBEFBAFBABF BBAEABAFAEFBEFBAFBEFBEFBEEBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBAFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFAEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEABEFBEFBEFAAABABF BBAEAAAFBEFBEFBAFBEFBEFBEAAAFAEE FEABAFAEFBEFBEFAEFBEFBEFBEFAEAAB EAAFAEABEFBEFBEABEFBEFBEFBEABABF BBAEAAAFBAAAAAAAABEFBEFBEFAAFAEE FEABAAAEFAAAAAAAAFBEFBEFBEAAEAAB EAAFBEABEFBEFBEABEFBEFBEFBEABABF BBAEFBAFBEFBEFBAFBEFBEFBEFBAFAEE FEABEFAEFBEFBEFAEFBEFBEFBAAAEAAB EAAFBEABEFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEABAFAEE FEABAFAEFBEFBEFBEFBEFBEFBAFAEAAB EAAFAEABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEAAAFAEE FEABAAAEFBEFBEFBEFBEFBEFBAAAEAAB EAAFAEABEAAAFBEFAEFBEFAAFBEABABF BBAEABAFBAAAEFBEABEFBEAAEFBAFAEE FEABAAAEFBEABEFBAFBEFBAFBEFBEAAB EAAFAAABEFBAFBEFAEFBEFAEFBEFBABF BBAEFBEFBEFAEFBEAAAFBEAAAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAEABEFBEABEFBABF BBAEFBEFBEFAEFBEABAFBEFBAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAAABEFAAABEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Date & Time # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEABAFBEFAEFBAFBEFBAFBEFBABA ABAEFBAFAEFBEABEEBEFBEFAEFBEFAEA AEABEFAEABEFBAFBAFBEFBEABEFBEAAA AAAFBEABAFBEFAEEBEFBEFBAFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEABAFAEFBEFBAFBEFBEFBEFBAFAEA AEABAFAEABEFBEFAEFBEFBEFBEEBEAAA AAAFAEABAFBEFBEABEFBEFBEFBAFBABA ABAEABAFAEFBEFBAFBEFBEFBEEBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBAFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFAEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEABEFBEFBEFAAABABA ABAEAAAFBEFBEFBAFBEFBEFBEAAAFAEA AEABAFAEFBEFBEFAEFBEFBEFBEFAEAAA AAAFAEABEFBEFBEABEFBEFBEFBEABABA ABAEAAAFBAAAAAAAABEFBEFBEFAAFAEA AEABAAAEFAAAAAAAAFBEFBEFBEAAEAAA AAAFBEABEFBEFBEABEFBEFBEFBEABABA ABAEFBAFBEFBEFBAFBEFBEFBEFBAFAEA AEABEFAEFBEFBEFAEFBEFBEFBAAAEAAA AAAFBEABEFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEABAFAEA AEABAFAEFBEFBEFBEFBEFBEFBAFAEAAA AAAFAEABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEAAAFAEA AEABAAAEFBEFBEFBEFBEFBEFBAAAEAAA AAAFAEABEAAAFBEFAEFBEFAAFBEABABA ABAEABAFBAAAEFBEABEFBEAAEFBAFAEA AEABAAAEFBEABEFBAFBEFBAFBEFBEAAA AAAFAAABEFBAFBEFAEFBEFAEFBEFBABA ABAEFBEFBEFAEFBEAAAFBEAAAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAEABEFBEABEFBABA ABAEFBEFBEFAEFBEABAFBEFBAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAAABEFAAABEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Erase # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBBFFAABAEBAEBAEBAEE FEBAEBAEBAEBAABFEBAEBAEBAEBAEBAB EAEBAEBAAAAAAAAAAAAAAAAABAEBAEBF BBAEBAEAAAAAAAAAAAAAAAAAABAEBAEE FEBAEBAAABEEBEBAAFAAAAEAAABAEBAB EAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBF BBAEBAAAAAAAAAAAAAAAAAAAABAEBAEE FEBAEAAAAAAAAAAAAAAAAAAAAABAEBAB EAEBAABFFFFFABEFBEFBEBAABAEBAEBF BBAEABFFFFFEAFBEFBEFBEBAABAEBAEE FEBABFFFFFFEBEFBEFBEFAEAAEBAEBAB EAEBFFFFFFEAFBEFAEBBEBAABAEBAEBF BBABFFFFFFEBEBBEAAEFBEBAABAEBAEE FEBFFFFFFFAFAEFBABAEFAEAAEBAEBAB EABFFFFFFFAEBBEFAEBBEBAABAEBAEBF BBABFFFFFAFAEBBEAAEFBEBAABAEBAEE FEAABFFFFAEFAEFBABAEFAEAAEBAEBAB EAEABFFFAFBEBBEFAEBBEBAABAEBAEBF BBAEABFFAEFAEBBEAAEFBEBAABAEBAEE FEBAEBFAABEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAAAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEAAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBAAAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAAABEBAABAEBAEBF BBAEBAEAAEFBEFBEFBEFBEAAABAEBAEE FEBAEBAABBEFBEFBEFBEFAAAAEBAEBAB EAEBAEBAEFBEFBEFBEFBEAAABAEBAEBF BBAEBAEAAABAEBAEBAEBAAAAABAEBAEE FEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAB EAEBAEBAEAAAAAAAAAAAAAAABAEBAEBF BBAEBAEBAAAAAAAAAAAAAAAAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Erase # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBBFFAABAEBAEBAEBAEA AEBAEBAEBAEBAABFEBAEBAEBAEBAEBAA AAEBAEBAAAAAAAAAAAAAAAAABAEBAEBA ABAEBAEAAAAAAAAAAAAAAAAAABAEBAEA AEBAEBAAABEEBEBAAFAAAAEAAABAEBAA AAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBA ABAEBAAAAAAAAAAAAAAAAAAAABAEBAEA AEBAEAAAAAAAAAAAAAAAAAAAAABAEBAA AAEBAABFFFFFABEFBEFBEBAABAEBAEBA ABAEABFFFFFEAFBEFBEFBEBAABAEBAEA AEBABFFFFFFEBEFBEFBEFAEAAEBAEBAA AAEBFFFFFFEAFBEFAEBBEBAABAEBAEBA ABABFFFFFFEBEBBEAAEFBEBAABAEBAEA AEBFFFFFFFAFAEFBABAEFAEAAEBAEBAA AABFFFFFFFAEBBEFAEBBEBAABAEBAEBA ABABFFFFFAFAEBBEAAEFBEBAABAEBAEA AEAABFFFFAEFAEFBABAEFAEAAEBAEBAA AAEABFFFAFBEBBEFAEBBEBAABAEBAEBA ABAEABFFAEFAEBBEAAEFBEBAABAEBAEA AEBAEBFAABEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAAAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEAAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBAAAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAAABEBAABAEBAEBA ABAEBAEAAEFBEFBEFBEFBEAAABAEBAEA AEBAEBAABBEFBEFBEFBEFAAAAEBAEBAA AAEBAEBAEFBEFBEFBEFBEAAABAEBAEBA ABAEBAEAAABAEBAEBAEBAAAAABAEBAEA AEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAA AAEBAEBAEAAAAAAAAAAAAAAABAEBAEBA ABAEBAEBAAAAAAAAAAAAAAAAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Camera Exposure # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEAABFFFFFEAAEBAEBAEBAB EAEBAEBAEBAEABFFFFFEABAEBAEBAEBF BBAEBAEBAEABFFFFFFFFFEAAEBAEBAEE FEBAEBAEBAABFFFFFFFFFEABAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEBABFFFFFFFFFFFFFEABAEBAEE FEBAEBAEABFFFFFFFFFFFFFEAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBAEBFFFFFFFFFFFFFFFEABAEBAB EAEBAEBABFFFFFFFFFFFFFFFEAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBABFFFFFEBEBEBFFFFFFEBAEBAB EAEBAEABFFFFFEBEBEBFFFFFFEABAEBF BBAEBAEBFFFFEBEBEBEABFFFFEAEBAEE FEBAEBABFFFFEBEBEBEABFFFFEBAEBAB EAEBAEABFFFFEBFFFFFEBFFFFEABAEBF BBAEBAEBFFFFEBFFFFFEBFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBABFFFFEBFFFEBFFFFEAEBAEBF BBAEBAEABFFFFEBFFFEBFFFFEBAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBABFFFFEBFEBFFFFEABAEBAEE FEBAEBAEABFFFFEBFEBFFFFEAEBAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBAEBFFFEBFEBFFFEAEBAEBAEE FEBAEBAEBABFFFEBFEBFFFEBAEBAEBAB EAEBAEBAEBABFFEBFEBFFEAEBAEBAEBF BBAEBAEBAEABFFEBFEBFFEBAEBAEBAEE FEBAEBAEBAEABFEBFEABEAEBAEBAEBAB EAEBAEBAEBAEBFEBFEABEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBAAAFBEAABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEABBEEAAAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAABAEBAEBAEBAB EAEBAEBAEBAEBAEAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Camera Exposure # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEAABFFFFFEAAEBAEBAEBAA AAEBAEBAEBAEABFFFFFEABAEBAEBAEBA ABAEBAEBAEABFFFFFFFFFEAAEBAEBAEA AEBAEBAEBAABFFFFFFFFFEABAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEBABFFFFFFFFFFFFFEABAEBAEA AEBAEBAEABFFFFFFFFFFFFFEAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBAEBFFFFFFFFFFFFFFFEABAEBAA AAEBAEBABFFFFFFFFFFFFFFFEAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBABFFFFFEBEBEBFFFFFFEBAEBAA AAEBAEABFFFFFEBEBEBFFFFFFEABAEBA ABAEBAEBFFFFEBEBEBEABFFFFEAEBAEA AEBAEBABFFFFEBEBEBEABFFFFEBAEBAA AAEBAEABFFFFEBFFFFFEBFFFFEABAEBA ABAEBAEBFFFFEBFFFFFEBFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBABFFFFEBFFFEBFFFFEAEBAEBA ABAEBAEABFFFFEBFFFEBFFFFEBAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBABFFFFEBFEBFFFFEABAEBAEA AEBAEBAEABFFFFEBFEBFFFFEAEBAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBAEBFFFEBFEBFFFEAEBAEBAEA AEBAEBAEBABFFFEBFEBFFFEBAEBAEBAA AAEBAEBAEBABFFEBFEBFFEAEBAEBAEBA ABAEBAEBAEABFFEBFEBFFEBAEBAEBAEA AEBAEBAEBAEABFEBFEABEAEBAEBAEBAA AAEBAEBAEBAEBFEBFEABEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBAAAFBEAABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEABBEEAAAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAABAEBAEBAEBAA AAEBAEBAEBAEBAEAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Format Memory Card # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEEFBEFBEFBEFBEFBEFBEFBEFBEFEE FEBBBAAAAAAAAAAAAAAAAAAAAAAABEAB EAEEFAAFAEABAFAEABAFAEABAFAAFBBF BBBBAAAAAAAAAAAAAAAAAAAAAAABEFEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEABBF BBFAAAAAFFFFFFFFFFFFFFFFFFFFAFEE FEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAB EABAABAAFFFFFFFFEFFFFFFFFFFEABBF BBFAAEAAFFFFFFFFABFFFFFFFFFFAFEE FEEABAEAFFFFFFFEBAFFFFFFFFFFAEAB EABAAAAAFFFFFFFAFEBFFFFFFFFEABBF BBFAAAAAFFFFFFEBEFAFFFFFFFFFAFEE FEEAAAABFFFFFFAFABEBFFFFFFFFAEAB EABAAAABFFFFFEBEAAFAFFFFFFFEABBF BBFAAAABFFFFFAFAAABEBFFFFFFFAFEE FEEAAAABFFFFEBEAAAAFAFFFFFFFAEAB EABAAAAFFFFFAFAAAAABEBFFFFFEABBF BBFAAAAFFFFEBEAAAAAAFAFFFFFFAFEE FEEAAAAFFFFAFAAAAAAABEBFFFFFAEAB EABAAAAFFFEBEAAAAAAAAFAFFFFEABBF BBFAAAAFFFAFAAAAAAAAABEBFFFFAFEE FEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAB EABAAABFFAFAABFFEBFFFABEBFFEABBF BBFAAABFEBEAAFFFEBFFFAAFAFFFAFEE FEEAAABFAFAABFAAABEAAAABEBFFAEAB EABAAABEBEAABEAAABEAAAAAFAFEABBF BBFAAAFAFAAABEAAABEAAAAABEBFAFEE FEEAAAFEBEAABEAAABFFEAAAFAFFAEAB EABAAAFFAFAABEAAABFFEAABEBFEABBF BBFAAAFFEBEABEAAABEAAAAFAFFFAFEE FEEAAAFFFAFABFAAABEAAABEBFFFAEAB EABAAAFFFEBEAFFFEBEAAAFAFFFEABBF BBFAABFFFFAFABFFEBEAABEBFFFFAFEE FEEAABFFFFEBEAAAAAAAAFAFFFFFAEAB EABAABFFFFFAFAAAAAAABEBFFFFEABBF BBFAABFFFFFEBEAAAAAAFAFFFFFFAFEE FEEAABFFFFFFAFAAAAABEBFFFFFFAEAB EABAABFFFFFFEBEAAAAFAFFFFFFEABBF BBFAAFFFFFFFFAFAAABEBFFFFFFFAFEE FEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAB EABAAFFFFFFFFFAFABEBFFFFFFFEABBF BBFAAFFFFFFFFFEBEFAFFFFFFFFFAFEE FEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAB EABAAFFFFFFFFFFEBAFFFFFFFFFEABBF BBFABFFFFFFFFFFFABFFFFFFFFFFAFEE FEEABFFFFFFFFFFFEFFFFFFFFFFFAEAB EABABFFFFFFFFFFFFFFFFFFFFFFEABBF BBFABFFFFFFFFFFFFFFFFFFFFFFFAFEE FEEABFFFFFFFFFFFFFFFFFFFFFFFBEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEFBBF BBFBEFBEFBEFBEFBEFBEFBEFBEFBEEEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAB EAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Format Memory Card # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEEFBEFBEFBEFBEFBEFBEFBEFBEFEA AEBBBAAAAAAAAAAAAAAAAAAAAAAABEAA AAEEFAAFAEABAFAEABAFAEABAFAAFBBA ABBBAAAAAAAAAAAAAAAAAAAAAAABEFEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEABBA ABFAAAAAFFFFFFFFFFFFFFFFFFFFAFEA AEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAA AABAABAAFFFFFFFFEFFFFFFFFFFEABBA ABFAAEAAFFFFFFFFABFFFFFFFFFFAFEA AEEABAEAFFFFFFFEBAFFFFFFFFFFAEAA AABAAAAAFFFFFFFAFEBFFFFFFFFEABBA ABFAAAAAFFFFFFEBEFAFFFFFFFFFAFEA AEEAAAABFFFFFFAFABEBFFFFFFFFAEAA AABAAAABFFFFFEBEAAFAFFFFFFFEABBA ABFAAAABFFFFFAFAAABEBFFFFFFFAFEA AEEAAAABFFFFEBEAAAAFAFFFFFFFAEAA AABAAAAFFFFFAFAAAAABEBFFFFFEABBA ABFAAAAFFFFEBEAAAAAAFAFFFFFFAFEA AEEAAAAFFFFAFAAAAAAABEBFFFFFAEAA AABAAAAFFFEBEAAAAAAAAFAFFFFEABBA ABFAAAAFFFAFAAAAAAAAABEBFFFFAFEA AEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAA AABAAABFFAFAABFFEBFFFABEBFFEABBA ABFAAABFEBEAAFFFEBFFFAAFAFFFAFEA AEEAAABFAFAABFAAABEAAAABEBFFAEAA AABAAABEBEAABEAAABEAAAAAFAFEABBA ABFAAAFAFAAABEAAABEAAAAABEBFAFEA AEEAAAFEBEAABEAAABFFEAAAFAFFAEAA AABAAAFFAFAABEAAABFFEAABEBFEABBA ABFAAAFFEBEABEAAABEAAAAFAFFFAFEA AEEAAAFFFAFABFAAABEAAABEBFFFAEAA AABAAAFFFEBEAFFFEBEAAAFAFFFEABBA ABFAABFFFFAFABFFEBEAABEBFFFFAFEA AEEAABFFFFEBEAAAAAAAAFAFFFFFAEAA AABAABFFFFFAFAAAAAAABEBFFFFEABBA ABFAABFFFFFEBEAAAAAAFAFFFFFFAFEA AEEAABFFFFFFAFAAAAABEBFFFFFFAEAA AABAABFFFFFFEBEAAAAFAFFFFFFEABBA ABFAAFFFFFFFFAFAAABEBFFFFFFFAFEA AEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAA AABAAFFFFFFFFFAFABEBFFFFFFFEABBA ABFAAFFFFFFFFFEBEFAFFFFFFFFFAFEA AEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAA AABAAFFFFFFFFFFEBAFFFFFFFFFEABBA ABFABFFFFFFFFFFFABFFFFFFFFFFAFEA AEEABFFFFFFFFFFFEFFFFFFFFFFFAEAA AABABFFFFFFFFFFFFFFFFFFFFFFEABBA ABFABFFFFFFFFFFFFFFFFFFFFFFFAFEA AEEABFFFFFFFFFFFFFFFFFFFFFFFBEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEFBBA ABFBEFBEFBEFBEFBEFBEFBEFBEFBEEEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAA AAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Lock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBF BBAEBAEBAAEAAFBEFBEAAEAAEBAEBAEE FEBAEBAEABEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Lock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBA ABAEBAEBAAEAAFBEFBEAAEAAEBAEBAEA AEBAEBAEABEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Unlock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAAAEBAEBAEBAEAAEBAEBAEE FEBAEBAEAAABAEBAEBAEABABAEBAEBAB EAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBF BBAEBAEBAEAAAFBEFBEAAEAAEBAEBAEE FEBAEBAEBAEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Unlock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAAAEBAEBAEBAEAAEBAEBAEA AEBAEBAEAAABAEBAEBAEABABAEBAEBAA AAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBA ABAEBAEBAEAAAFBEFBEAAEAAEBAEBAEA AEBAEBAEBAEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set for PAL / NTSC TV # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAABAEBAEBAEBAEBAABAEBAB EAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBF BBAEBAEBAEAAEBAEBAEBAEBAABAEBAEE FEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAB EAEBAEBAEBAABAEBAEBAEBAABAEBAEBF BBAEBAEBAEBAABAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAABAEBAEBAABAEBAEBAB EAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBF BBAEBAEBAEBAEAAEBAEBAABAEBAEBAEE FEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAB EAEBAEBAEBAEBAABAEBAABAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEABEFBEFBEFBEFBEFBEFBEFBEEAABF BBAAFBEFBEFBEFBEFBEFBEFBEFBAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAB EAEAAAAAAAAAAAAAAAAAAAAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAEAEE FEAAAAAAAAAAAAAAAAAAAAAAAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAEBAEBAEBAEBAEBAEBAAAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEFBEBAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBAEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAAAAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set for PAL / NTSC TV # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAABAEBAEBAEBAEBAABAEBAA AAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBA ABAEBAEBAEAAEBAEBAEBAEBAABAEBAEA AEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAA AAEBAEBAEBAABAEBAEBAEBAABAEBAEBA ABAEBAEBAEBAABAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAABAEBAEBAABAEBAEBAA AAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBA ABAEBAEBAEBAEAAEBAEBAABAEBAEBAEA AEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAA AAEBAEBAEBAEBAABAEBAABAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEABEFBEFBEFBEFBEFBEFBEFBEEAABA ABAAFBEFBEFBEFBEFBEFBEFBEFBAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAA AAEAAAAAAAAAAAAAAAAAAAAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAEAEA AEAAAAAAAAAAAAAAAAAAAAAAAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAEBAEBAEBAEBAEBAEBAAAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEFBEBAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBAEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAAAAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Start Slide Show # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAB EAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAAFBEFBEFBEFBEFBEFBEAAEE FEBAEBAEBAEFBEFBEFBEFBEFBEFBABAB EAEBAEBAAFBEFBEFBEFBEFBEFBEFBABF BBAEBAEBAEFBEFBEFBEFBEFBEFBEFAEE FEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAB EAEBAEBAAAAAAAAAAAAAAAAAABEFBABF BBAEBAAFBEFBEFBEFBEFBEFBEABEFAEE FEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAB EAEBAAFBEFBEFBEFBEFBEFBEFBAFBABF BBAEBAEFBEFBEFBEFBEFBEFBEFAEFAEE FEBAAAAAAAAAAAAAAAAAAAEFBEABEAAB EAEBAAAAAAAAAAAAAAAAAABEFBAFBABF BBAAFBEFBEFBEFBEFBEFBEABEFAEFAEE FEBAEFBEFBEFBEFBEFBEFBAFBEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEFBEFBEFBEFBEFBEFAEFAEFAEE FEABEFBEFBEFBEFBEFBEFBEABEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEAAAAAAAAAAAAFBEFAEFAEFAEE FEABEFBAAAAAAAAAAAAEFBEABEABEAAB EAAFBEAAEBAEBAEBAEBAEFBAFBAFBABF BBAEFBABAEBAEBAEBAEABEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABABAB EAAFBABAEBAEBAEBAEBAAFBAFBAFAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAABAEE FEABEAAEBAEBAEBAEBAEABEABEAAEBAB EAAFBABAEBAEBAEBAEBAAFBAFBABAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAEBAEE FEABEFAEBAEBAEBAEBAAFBEABABAEBAB EAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBF BBAEFBEAAAAAAAAAAAAFBEFAABAEBAEE FEABEFBAAAAAAAAAAAAEFBEAAEBAEBAB EAAFBEFBEFBEFBEFBEFBEFBABAEBAEBF BBAEFBEFBEFBEFBEFBEFBEFAEBAEBAEE FEBAEFBEFBEFBEFBEFBEFBABAEBAEBAB EAEABEFBEFBEFBEFBEFBEFAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAABAEBAEBAEE FEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Start Slide Show # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAA AAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAAFBEFBEFBEFBEFBEFBEAAEA AEBAEBAEBAEFBEFBEFBEFBEFBEFBABAA AAEBAEBAAFBEFBEFBEFBEFBEFBEFBABA ABAEBAEBAEFBEFBEFBEFBEFBEFBEFAEA AEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAA AAEBAEBAAAAAAAAAAAAAAAAAABEFBABA ABAEBAAFBEFBEFBEFBEFBEFBEABEFAEA AEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAA AAEBAAFBEFBEFBEFBEFBEFBEFBAFBABA ABAEBAEFBEFBEFBEFBEFBEFBEFAEFAEA AEBAAAAAAAAAAAAAAAAAAAEFBEABEAAA AAEBAAAAAAAAAAAAAAAAAABEFBAFBABA ABAAFBEFBEFBEFBEFBEFBEABEFAEFAEA AEBAEFBEFBEFBEFBEFBEFBAFBEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEFBEFBEFBEFBEFBEFAEFAEFAEA AEABEFBEFBEFBEFBEFBEFBEABEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEAAAAAAAAAAAAFBEFAEFAEFAEA AEABEFBAAAAAAAAAAAAEFBEABEABEAAA AAAFBEAAEBAEBAEBAEBAEFBAFBAFBABA ABAEFBABAEBAEBAEBAEABEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABABAA AAAFBABAEBAEBAEBAEBAAFBAFBAFAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAABAEA AEABEAAEBAEBAEBAEBAEABEABEAAEBAA AAAFBABAEBAEBAEBAEBAAFBAFBABAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAEBAEA AEABEFAEBAEBAEBAEBAAFBEABABAEBAA AAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBA ABAEFBEAAAAAAAAAAAAFBEFAABAEBAEA AEABEFBAAAAAAAAAAAAEFBEAAEBAEBAA AAAFBEFBEFBEFBEFBEFBEFBABAEBAEBA ABAEFBEFBEFBEFBEFBEFBEFAEBAEBAEA AEBAEFBEFBEFBEFBEFBEFBABAEBAEBAA AAEABEFBEFBEFBEFBEFBEFAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAABAEBAEBAEA AEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 72 # Height: 36 # Length: 2592 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBE AEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFB BAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEF EBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Width: 18 # Height: 12 # Length: 216 # 0000000000000000000000000000FBEF0000 0000EEFE00000000BBAB00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000BBAB00000000FAAF0000 0000EFBE0000000000000000000000000000 # # Title: ? # Length: 544 # FBCFBCFBEF3EF3EF # FAEBAEBAEBAEBAE8 ABAEBAEAAEBAEBAF EEBAEBAEFAEBAEBB FAEBAEFAAFAEBAEA 2BAEBBEBAAEAEBAF EEBAEFAEBAEBAEBB FAEBAEBAEBBABAE8 ABAEAAEBAEBAEBAF EEBAEEAEBAABAEBB FAEBAEAAABBABAEA 2BAEAAAFBEBAEBAF EEBAEFBBABEBAEBB FAEBAAFAAFAABAE8 ABAEABEAAEFAEBAF EEBAEEABEAEBAEBB FAEBBEAAAABEBAEA 2BAEBAEAABAAABAF EEBAEAAAAAAFAEBB FAEAAAAFFAAABAE8 ABAEEABEBEABABAF EEBAEEBAAEBBAEBB FAEAAABEBEAABAEA 2BAEFAAFFAABABAF EEBAAAEAABAEAEBB FAEBBEAAAABEBAE8 ABAEABABEAFAEBAF EEBAEBBAABEBAEBB FAEBAEBBEEAEBAEA 2BAEBAAAAABAEBAF EEBAEBAEBAEBAEBB # CFBEF3CF3CFBEFBC # FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # same as above FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000020000 00000000000000000000000000000000000AC000 00000000000000000000000000000000002BA000 0000000000000000000000000000000000AEB800 0000000000000000000000000000000002BAEB00 000000000000000000000000000000000AEBAE80 000000000000000000000000000000002BAEBAE0 00000000000000000000000000000000AEBAEBAC 000000000000000000000000000000003AEBAEB0 000000000000000000000000000000000BAEBAC0 0000000000000000000000000000000002BAEB00 0000000000000000000000000000000000EBAC00 00000000000000000000000000000000002EB000 00000000000000000000000000000000000AC000 0000000000000000000000000000000000030000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000200000000000000020000 0000000000000000000B800000000000000AC000 0000000000000000002EB00000000000002BA000 000000000000000000BAE8000000000000AEB800 000000000000000002EBAE000000000002BAEB00 00000000000000000BAEBAC0000000000AEBAE80 00000000000000002EBAEBA0000000002BAEBAE0 0000000000000000BAEBAEB800000000AEBAEBAC 00000000000000002BAEBAE0000000003AEBAEB0 00000000000000000EBAEB80000000000BAEBAC0 000000000000000002EBAE000000000002BAEB00 000000000000000000AEB8000000000000EBAC00 0000000000000000003AE00000000000002EB000 0000000000000000000B800000000000000AC000 0000000000000000000200000000000000030000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0003000000000000000200000000000000020000 000E800000000000000B800000000000000AC000 003AE00000000000002EB00000000000002BA000 00EBAC000000000000BAE8000000000000AEB800 03AEBA000000000002EBAE000000000002BAEB00 0EBAEB80000000000BAEBAC0000000000AEBAE80 3AEBAEB0000000002EBAEBA0000000002BAEBAE0 EBAEBAE800000000BAEBAEB800000000AEBAEBAC 2EBAEBA0000000002BAEBAE0000000003AEBAEB0 0AEBAE80000000000EBAEB80000000000BAEBAC0 03AEBA000000000002EBAE000000000002BAEB00 00BAE8000000000000AEB8000000000000EBAC00 002BA00000000000003AE00000000000002EB000 000E800000000000000B800000000000000AC000 0002000000000000000200000000000000030000 # # Title: ? # Width: 72 # Height: 74 # Length: 5328 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAFBEFBEFBEFBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEEAAAAA AAAAABEFBEFBEFBEFBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEAAA AAAFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBAAA AAAFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFAAA AAAFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEAAA AAAFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 24 # Height: 10 # Length: 240 # 00000003800000000000000EB00000000000003AE8000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 0000002BAC0000000000000EB000000000000002C0000000 # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF8EAA8AE88FFFFFFFFFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFF8EEEEA888A8AA8AAEEEEFEEFF8FFFFFFFF FFFFF8FFFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFF FFFF89999999999FAAAAAAAAEEEEEF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF F89999999999998EAAAA8F88AEEEEF8FFFFFFFFF 899999999999AAEEAAA8FEFFAAEFFF8FFFFFFFFF F8999999999A88EEAAA8FFEEAEEEEF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFF899998AA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFF8988EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFF888EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA888EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA888AAAAAAAAAAAEEEEF8FFFFFFFFF FFFFFFF88EAAAAAAAAAAEAEEAEEFFF8FFFFFFFFF FFFFFFFFF88EEEEEEEEEEEEEEEFFF88FFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # 9999999999999999FFFFFF999999999999999999 999999999999999FEAA8AEFF9999999999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 999999FEEEEA888A8AA8AAEEEEFEEFFF99999999 99999FFFFFFFFFFFFFFFFFFFFFFFFFFF99999999 99999F888888888FAAAAAAAAEEEEEFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 9F8888888888FF8EAAAA8F88AEEEEFF999999999 F8888888888FAAEEAAA8FEFFAAEFFFF999999999 9F88888888FA88EEAAA8FFEEAEEEEFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 9999F8888FAA88EEAAA8FFEEAEEEEFF999999999 99999F8FFEAA88EEAAA8FEEEAAEFFFF999999999 999999FFFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA888EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA888AAAAAAAAAAAEEEEFF999999999 9999999FFEAAAAAAAAAAEAEEAEEFFFF999999999 999999999FFEEEEEEEEEEEEEEEFFFFF999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999999999999999999999999999999999 # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF88888888888888888888888888888888888FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FDDDDDBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDDDBBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDBBBBBBFF8FCCCCCEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCCEEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCEEEEEF8FAAA99999F8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FBBBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FCCCCAAAFF8FCCCCCDDDF8FCCCBBBBBF8FFF FF88FCCCCAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99999B9FF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99BBBB9FF8FDAAAAAAAF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEE99FF8FEEEEBBBBF8FDDDDDDDDF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9F99999999999999999999999999999999999FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FDDDDDBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDDDBBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDBBBBBBFF9FCCCCCEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCCEEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCEEEEEF9FAAA99999F9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FBBBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FCCCCAAAFF9FCCCCCDDDF9FCCCBBBBBF9FF9 9F99FCCCCAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99999B9FF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99BBBB9FF9FDAAAAAAAF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEE99FF9FEEEEBBBBF9FDDDDDDDDF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9999999999999999999999999999999999999999 # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFF88EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8888FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFFF8EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FFFF99999999999FEFF99999999999 9999999999999999999999999FEFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999FFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEEFFFFF FFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAEFFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEFFF FFFFFFFEEAAAAAAAAAAAAAAAAAAAAAAEAAAAEFFF FFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEAAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEEFFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEFFFFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAEFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEFFFFFFFFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEFFFFFFFFFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 999999999999FFFFFFFFFFFFFFFFFFFFFFF99999 99999999999FAAAAAAAAAAAAAAAAAAAAAAAF9999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 999999999FFFFFFFFFFFFFFFFFFFFFFAAAAAF999 9999999FFAAAAAAAAAAAAAAAAAAAAAAFAAAAF999 999999FAAAAAAAAAAAAAAAAAAAAAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 9999FAAAAAAAAAAAAAAAAAAAAAAFFAAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFF99999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFF999999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAF99999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAF9999999999 9999FAAAAAAAAAAAAAAAAAAAAAAFF99999999999 99999FFFFFFFFFFFFFFFFFFFFFF9999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 # # Title: Locked # Width: 12 # Height: 24 # Length: 288 # 999999999999999999999999 99999999FFEEEFF999999999 9999999FEEFFFEEF99999999 9999999EEF999FEE99999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9FFFFF9FF9999999 999999FFFEEEEEFFF9999999 999999FEEEDDDEEEF9999999 99999FEEEEFFFEEEEF999999 9999FEEEFFF8FFFEEEF99999 9999FEEFFFFFFFFFEEF99999 9999EEEFFFFFFFFFEEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF88AFFFFEE99999 9999EEFFFF8AEFFFFEE99999 9999FEEFFFFFFFFF8EF99999 99999FEFFFFFFFFFEF999999 999999FEFFF8FFFEF9999999 9999999EEEFFF8EE99999999 999999999FFFFF9999999999 999999999999999999999999 # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000B00000 000000000000000000000000000000000BBB0000 00000000000000000000000000000000BBBBB000 0000000000000000000000000000000BBBBBBB00 000000000000000000000000000000BBBBBBBBB0 0000000000000000000000000000000BBBBBBB00 00000000000000000000000000000000BBBBB000 000000000000000000000000000000000BBB0000 0000000000000000000000000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 00000000000000000000B0000000000000B00000 0000000000000000000BBB00000000000BBB0000 000000000000000000BBBBB000000000BBBBB000 00000000000000000BBBBBBB0000000BBBBBBB00 0000000000000000BBBBBBBBB00000BBBBBBBBB0 00000000000000000BBBBBBB0000000BBBBBBB00 000000000000000000BBBBB000000000BBBBB000 0000000000000000000BBB00000000000BBB0000 00000000000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 000000B0000000000000B0000000000000B00000 00000BBB00000000000BBB00000000000BBB0000 0000BBBBB000000000BBBBB000000000BBBBB000 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 00BBBBBBBBB00000BBBBBBBBB00000BBBBBBBBB0 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 0000BBBBB000000000BBBBB000000000BBBBB000 00000BBB00000000000BBB00000000000BBB0000 000000B0000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAABEFBEFBEFBEFBEFBEFBEAAAAEB AEAAAAFBEFBEFBEFBEFBEFBEFBAAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAABBEFBEFBEFBEFBEFBEFBEEAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBAEABAE BAEAFAAFBEFBEFBEFBEFBEFBEEBEAABA EBABEFAEFBEFBEFBEFBEFBEFBAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEEBEFABAE BAEAFBEABEFBEFBEFBEFBEFBAFBEEABA EBABEFBEBBEFBEFBEFBEFBEEBEFBEAEB AEABBEFBAFBEFBEFBEFBEFBAFBEFABAE BAEAFBEFAAFBEFBEFBEFBEEBEFBEEABA EBABEFBEFAEFBEFBEFBEFBEFBEFBEAEB AEABBEFBEEBEFBAFBEFBEFBEFBEFABAE BAEAFBEFBEABEEBEFBEFBEFBEFBEEABA EBABEFBEFBEFAABBEFBEFBEFBEFBEAEB AEABBEFBEFBEAAAFBEFBEFBEFBEFABAE BAEAFBEFBEFAAABEAAEAAAFBEFBEEABA EBABEFBEFBEFAABBAABAABEFBEFBEAEB AEABBEFBEFBEEAAFAAEAAFBEFBEFABAE BAEAFBEFBEFBEABEEAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFBEABEFBEFBEFABAE BAEAFBEFBEFBEABEFAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFAAFAAFBEFBEFABAE BAEAFBEFBEEBEABEAAEAAEFBEFBEEABA EBABEFBEFBAFAABAABBEABEFBEFBEAEB AEABBEFBEEBEFBEFBEFBEFAEFBEFABAE BAEAFBEFBAFBEFBEFBEFBEEBEFBEEABA EBABEFBEEBEFBEFBEFBEFBEABEFBEAEB AEABBEFBAFBEFBEFBEFBEFBEBBEFABAE BAEAFBEEBEFBEFBEFBEFBEFBAFBEEABA EBABEFBAFBEFBEFBEFBEFBEFAAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEFAEFABAE BAEAFBAFBEFBEFBEFBEFBEFBEEBEAABA EBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBEAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAAABEFBEFBEFBEFBEFBEFBEEAAAEB AEAAAABBEFBEFBEFBEFBEFBEFBAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Normal # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAABEFBEFBEFBEFBEFBEFBEAAAAEE FEAAAAFBEFBEFBEFBEFBEFBEFBAAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAABBEFBEFBEFBEFBEFBEFBEEAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBAEABAB EAEAFAAFBEFBEFBEFBEFBEFBEEBEAABF BBABEFAEFBEFBEFBEFBEFBEFBAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEEBEFABAB EAEAFBEABEFBEFBEFBEFBEFBAFBEEABF BBABEFBEBBEFBEFBEFBEFBEEBEFBEAEE FEABBEFBAFBEFBEFBEFBEFBAFBEFABAB EAEAFBEFAAFBEFBEFBEFBEEBEFBEEABF BBABEFBEFAEFBEFBEFBEFBEFBEFBEAEE FEABBEFBEEBEFBAFBEFBEFBEFBEFABAB EAEAFBEFBEABEEBEFBEFBEFBEFBEEABF BBABEFBEFBEFAABBEFBEFBEFBEFBEAEE FEABBEFBEFBEAAAFBEFBEFBEFBEFABAB EAEAFBEFBEFAAABEAAEAAAFBEFBEEABF BBABEFBEFBEFAABBAABAABEFBEFBEAEE FEABBEFBEFBEEAAFAAEAAFBEFBEFABAB EAEAFBEFBEFBEABEEAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFBEABEFBEFBEFABAB EAEAFBEFBEFBEABEFAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFAAFAAFBEFBEFABAB EAEAFBEFBEEBEABEAAEAAEFBEFBEEABF BBABEFBEFBAFAABAABBEABEFBEFBEAEE FEABBEFBEEBEFBEFBEFBEFAEFBEFABAB EAEAFBEFBAFBEFBEFBEFBEEBEFBEEABF BBABEFBEEBEFBEFBEFBEFBEABEFBEAEE FEABBEFBAFBEFBEFBEFBEFBEBBEFABAB EAEAFBEEBEFBEFBEFBEFBEFBAFBEEABF BBABEFBAFBEFBEFBEFBEFBEFAAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEFAEFABAB EAEAFBAFBEFBEFBEFBEFBEFBEEBEAABF BBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBEAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAAABEFBEFBEFBEFBEFBEFBEEAAAEE FEAAAABBEFBEFBEFBEFBEFBEFBAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Zoom # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEEABAE BAEAABAFBEFBEFBEFBEFBEFBEABAEABA EBABEBAEFBEFBEFBEFBEFBEFBAEBEAEB AEABBAABEFBEFBEFBEFBEFBEFAAFABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAAAAAAAAAAAAAAAAAAAAABEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEFFEBAEBAEBAEAFABAE BAEAFABAEBAEBBFFFEBAEBAEBABEEABA EBABEEABAFFAEFFFFEEBAEBAEABBEAEB AEABBEAEBBEBAFFBFFAEBAEBAEAFABAE BAEAFABAEBEEBFEBFEBFFBFFFABEEABA EBABEEABAFFAEBEFFEEFFEFFEABBEAEB AEABBEAFFFFFEEBFFBAFFBFFAEAFABAE BAEAFABBFFFFFAFFFEBBFFFEBABEEABA EBABEEABAFFAEBBFFAEBFFFAEABBEAEB AEABBEAEBBEBAEFFEBAEBFEBAEAFABAE BAEAFABAEBEEBAFFAEBAFFFEBABEEABA EBABEEABAFFAEBFEBAEBFFFAEABBEAEB AEABBEAEBAEBAFFFFFAFFAFFAEAFABAE BAEAFABAEBAEBFFFFEBFFBFFBABEEABA EBABEEABAEBAFFFFFEFFEEBFEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAAAAAAAAAAAAAAAAAAAAABABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAEFBEFBEFBEFBEFBEFBAABEAEB AEABBAABEFBEFBEFBEFBEFBEFAEBABAE BAEAEBAFBEFBEFBEFBEFBEFBEABAEABA EBABAFBEFBEFBEFBEFBEFBEFBEFAAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEFABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Zoom # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEEABAB EAEAABAFBEFBEFBEFBEFBEFBEABAEABF BBABEBAEFBEFBEFBEFBEFBEFBAEBEAEE FEABBAABEFBEFBEFBEFBEFBEFAAFABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAAAAAAAAAAAAAAAAAAAAABEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEFFEBAEBAEBAEAFABAB EAEAFABAEBAEBBFFFEBAEBAEBABEEABF BBABEEABAFFAEFFFFEEBAEBAEABBEAEE FEABBEAEBBEBAFFBFFAEBAEBAEAFABAB EAEAFABAEBEEBFEBFEBFFBFFFABEEABF BBABEEABAFFAEBEFFEEFFEFFEABBEAEE FEABBEAFFFFFEEBFFBAFFBFFAEAFABAB EAEAFABBFFFFFAFFFEBBFFFEBABEEABF BBABEEABAFFAEBBFFAEBFFFAEABBEAEE FEABBEAEBBEBAEFFEBAEBFEBAEAFABAB EAEAFABAEBEEBAFFAEBAFFFEBABEEABF BBABEEABAFFAEBFEBAEBFFFAEABBEAEE FEABBEAEBAEBAFFFFFAFFAFFAEAFABAB EAEAFABAEBAEBFFFFEBFFBFFBABEEABF BBABEEABAEBAFFFFFEFFEEBFEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAAAAAAAAAAAAAAAAAAAAABABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAEFBEFBEFBEFBEFBEFBAABEAEE FEABBAABEFBEFBEFBEFBEFBEFAEBABAB EAEAEBAFBEFBEFBEFBEFBEFBEABAEABF BBABAFBEFBEFBEFBEFBEFBEFBEFAAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEFABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Length: 48 # 00000007 00000008 00000005 00000005 00000003 00000004 00000004 00000006 00000009 00000007 00000008 00000008 # # Title: ? # Length: # 00000000000007E01FF81C38381C381C381C381C1C381FF807E0000000000000 00000000000003801F801F80038003800380038003803FF83FF8000000000000 0000000000000FE03FF03838003800F003E00F803E383FF83FF8000000000000 0000000000000FE03FF03838003803F003F0003838383FF00FE0000000000000 00000000000003E007E00EE01CE038E07FF87FF800E007F807F8000000000000 0000000000003FF83FF838003FE03FF00078003878783FF00FC0000000000000 00000000000007F01FF03C003BC07FF07C7878383C783FF00FC0000000000000 0000000000003FF83FF8007000F000E001E001C003C003800780000000000000 00000000000007E01FF81C381C380FF01FF8381C381C1FF807E0000000000000 00000000000007E01FF83C78383C3C7C1FFC07B800781FF01FC0000000000000 0000000000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 0000000000007FF87FFE1C0E1C0E1FF81FFE1C0E1C0E7FFE7FF8000000000000 00000000000007F61FFE3C0E78067000700078003C0E1FFE07F0000000000000 0000000000007FE07FF81C3C1C1E1C0E1C0E1C1E1C3C7FF87FE0000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C001C007F807F80000000000000 00000000000007F61FFE3C0E78007000703F783F3C0E1FFE07F0000000000000 0000000000007E7E7E7E1C381C381FF81FF81C381C387E7E7E7E000000000000 0000000000003FF83FF80380038003800380038003803FF83FF8000000000000 00000000000007FE07FE0070007000707070707078F03FE01FC0000000000000 0000000000007EFC7EFC1C701CE01FC01FE01DF01C7C7F3E7F3E000000000000 0000000000007FC07FC00E000E000E000E000E060E067FFE7FFE000000000000 000000000000F83EFC7E7C7C7EFC77DC77DC739C739CF93EF83E000000000000 000000000000F8FEFCFE3E383F383FB83BF839F838F8FE78FE38000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0000000000007FF07FF81C3C1C1C1C3C1FF81FF01C007F007F00000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE01FFE1CFC0000 0000000000007FF07FFC1C3C1C3C1FF81FF01CF01C787F3E7F1E000000000000 0000000000001FEC7FFC701C70007FF01FFC001C701C7FFC6FF0000000000000 0000000000007FFC7FFC739C739C03800380038003803FF83FF8000000000000 0000000000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 000000000000FEFEFEFE38381C701C700EE00EE007C007C00380000000000000 000000000000FC3FFC3F718E718E3BDC3BDC3FFC1E781C381C38000000000000 0000000000007F7E7F7E1E380FF007C003E00FF01C787EFE7EFE000000000000 0000000000007EFC7EFC1C700EE007C007C0038003801FF01FF0000000000000 0000000000003FFC3FFC38F839F003E007C00F9C1F1C3FFC3FFC000000000000 000000000000000000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000000F800F8003BF03FFC3C1E380E380E3C1EFFFCFBF0000000000000 000000000000000000000FDC3FFC783C70007000781C3FFC0FF0000000000000 000000000000007C007C0FDC3FFC783C701C701C783C3FFF0FDF000000000000 000000000000000000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 00000000000001FC07FC07003FF03FF00700070007003FF03FF0000000000000 000000000000000000000FDF3FFF783C701C701C783C3FFC0FDC001C3FF81FF0 000000000000F800F8003BF03FF83C38383838383838FEFEFEFE000000000000 000000000380038000001F801F8003800380038003803FF83FF8000000000000 0000000000E000E000003FE03FE000E000E000E000E000E000E001E03FC03F80 0000000000007C007C001CF81CF81DE01F801FC01FF07CFC7C7C000000000000 0000000000001F801F800380038003800380038003803FF83FF8000000000000 00000000000000000000EF78FFFC739C739C739C739CFBDEFBDE000000000000 00000000000000000000FBF0FFF83C38383838383838FEFEFEFE000000000000 000000000000000000000FF03FFC781E700E700E781E3FFC0FF0000000000000 00000000000000000000FBF0FFFC3C1E380E380E3C1E3FFC3BF03800FF00FF00 000000000000000000001FBE7FFEF078E038E038F0787FF81FB8003801FE01FE 000000000000000000003EF83FFE0F1E0E000E000E007FF07FF0000000000000 000000000000000000001FB07FF070307FC01FF060707FF06FC0000000000000 0000000000001C001C00FFF0FFF01C001C001C001C1C1FFC07F0000000000000 00000000000000000000F8F8F8F838383838383838783FFE0FBE000000000000 00000000000000007E7E7E7E1C381E780E7007E007E003C003C0000000000000 00000000000000000000F83EF93E739C7BBC3FF83EF81C701C70000000000000 000000000000000000007EFC7EFC1E700FC007E01CF07EFC7EFC000000000000 000000000000000000007E7E7E7E1C380E700FE007C00380038007003FC03FC0 000000000000000000003FF83FF831F003C007801F183FF83FF8000000000000 00000000000003C003C003C003C003C001800180000003C003C0000000000000 000000000000000000000000000000000000000003C003C003C0000000000000 0000000000000FF01FF81C38003800F007C00700000007800780000000000000 000000000000001C0038007000E001C0038007000E001C003800000000000000 0000000000000000000003C003C003C00000000003C003C003C0000000000000 00000000000007C00FE00E600F00079C1FD839F838F03FFC0FBC000000000000 # # Text: / # 2F 00 # # Text: : # 3A 00 # # Text: am # 61 6D 00 # # Text: pm # 70 6D 00 # # Text: No pictures in camera. # 4E 6F 20 70 69 63 74 75 72 65 73 0A 69 6E 20 63 61 6D 65 72 61 2E 00 # # Text: Yes # 59 65 73 00 # # Text: No # 4E 6F 00 # # Text: . # 2E 00 # # Text: # 00 # # Text: # 00 # # Text: Lock? # 4C 6F 63 6B 3F 00 # # Text: Unlock? # 55 6E 6C 6F 63 6B 3F 00 # # Text: Erase? # 45 72 61 73 65 3F 00 # # Text: View Small Photos? # 56 69 65 77 0A 53 6D 61 6C 6C 0A 50 68 6F 74 6F 73 3F 00 # # Text: View Full screen? # 56 69 65 77 0A 46 75 6C 6C 0A 73 63 72 65 65 6E 3F 00 # # Text: Set Screen Brightness? # 53 65 74 0A 53 63 72 65 65 6E 0A 42 72 69 67 68 74 6E 65 73 73 3F 00 # # Text: Start Slide Show? # 53 74 61 72 74 0A 53 6C 69 64 65 0A 53 68 6F 77 3F 00 # # Text: Stop Slide Show? # 53 74 6F 70 0A 53 6C 69 64 65 0A 53 68 6F 77 3F 00 # # Text: Set Camera Exposure? # 53 65 74 0A 43 61 6D 65 72 61 0A 45 78 70 6F 73 75 72 65 3F 00 # # Text: Format Memory Card? # 46 6F 72 6D 61 74 0A 4D 65 6D 6F 72 79 0A 43 61 72 64 3F 00 # # Text: Set Date & Time? # 53 65 74 0A 44 61 74 65 20 26 0A 54 69 6D 65 3F 00 # # Text: Set for NTSC TV? # 53 65 74 20 66 6F 72 0A 4E 54 53 43 20 54 56 3F 00 # # Text: Set for PAL TV? # 53 65 74 20 66 6F 72 0A 50 41 4C 20 54 56 3F 00 # # Text: Review Pictures? # 52 65 76 69 65 77 0A 50 69 63 74 75 72 65 73 3F 00 # # Text: Take Pictures? # 54 61 6B 65 0A 50 69 63 74 75 72 65 73 3F 00 # # Text: # 00 # # Text: One # 4F 6E 65 0A 20 20 20 20 20 00 # # Text: None # 4E 6F 6E 65 0A 20 20 20 20 20 00 # # Text: All # 41 6C 6C 0A 20 20 20 20 20 00 # # Text: # 00 # # Text: ERASE? # 45 52 41 53 45 3F 00 # # Text: Erase This Picture? # 45 72 61 73 65 0A 54 68 69 73 0A 50 69 63 74 75 72 65 3F 00 # # Text: Cancel Picture Erase? # 43 61 6E 63 65 6C 0A 50 69 63 74 75 72 65 0A 45 72 61 73 65 3F 00 # # Text: Erase All Pictures? # 45 72 61 73 65 0A 41 6C 6C 0A 50 69 63 74 75 72 65 73 3F 00 # # Text: Erasing picture... # 45 72 61 73 69 6E 67 0A 70 69 63 74 75 72 65 2E 2E 2E 00 # # Text: Picture is LOCKED Unlock before erasing # 50 69 63 74 75 72 65 20 69 73 0A 4C 4F 43 4B 45 44 0A 55 6E 6C 6F 63 6B 20 62 65 66 6F 72 65 0A 65 72 61 73 69 6E 67 00 # # Text: Erase ALL pictures? # 45 72 61 73 65 0A 41 4C 4C 20 70 69 63 74 75 72 65 73 3F 00 # # Text: Erasing ALL pictures... # 45 72 61 73 69 6E 67 0A 41 4C 4C 20 70 69 63 74 75 72 65 73 2E 2E 2E 00 # # Text: Normal? # 4E 6F 72 6D 61 6C 3F 00 # # Text: Zoom? # 5A 6F 6F 6D 3F 00 # # Text: Set Screen Brightness # 53 65 74 20 53 63 72 65 65 6E 0A 42 72 69 67 68 74 6E 65 73 73 00 # # Text: Set Camera Exposure # 53 65 74 20 43 61 6D 65 72 61 0A 45 78 70 6F 73 75 72 65 00 # # Text: Formatting resets the memory card and erases all photos on it. Format? # 46 6F 72 6D 61 74 74 69 6E 67 20 72 65 73 65 74 73 0A 74 68 65 20 6D 65 6D 6F 72 79 20 63 61 72 64 0A 61 6E 64 20 65 72 61 73 65 73 20 61 6C 6C 0A 70 68 6F 74 6F 73 20 6F 6E 20 69 74 2E 0A 0A 46 6F 72 6D 61 74 3F 00 # # Text: Formatting the memory card..... # 46 6F 72 6D 61 74 74 69 6E 67 20 74 68 65 0A 6D 65 6D 6F 72 79 20 63 61 72 64 2E 2E 2E 2E 2E 00 # # Text: Set for PAL TV? # 53 65 74 20 66 6F 72 0A 50 41 4C 20 54 56 3F 00 # # Text: Set for NTSC TV? # 53 65 74 20 66 6F 72 0A 4E 54 53 43 20 54 56 3F 00 # # Text: # 00 # # Text: This pict # 20 54 68 69 73 20 0A 20 70 69 63 74 20 00 # # Text: No # 4E 6F 0A 20 20 20 00 # # Text: ALL pict # 41 4C 4C 0A 20 70 69 63 74 20 00 # # Text: January # 4A 61 6E 75 61 72 79 00 # # Text: February # 46 65 62 72 75 61 72 79 00 # # Text: March # 4D 61 72 63 68 00 # # Text: April # 41 70 72 69 6C 00 # # Text: May # 4D 61 79 00 # # Text: June # 4A 75 6E 65 00 # # Text: July # 4A 75 6C 79 00 # # Text: August # 41 75 67 75 73 74 00 # # Text: September # 53 65 70 74 65 6D 62 65 72 00 # # Text: October # 4F 63 74 6F 62 65 72 00 # # Text: November # 4E 6F 76 65 6D 62 65 72 00 # # Text: December # 44 65 63 65 6D 62 65 72 00 # # Text: Day # 44 61 79 00 # # Text: Month # 4D 6F 6E 74 68 00 # # Text: Year # 59 65 61 72 00 # # Text: Time # 54 69 6D 65 00 # # Text: AM # 41 4D 00 # # Text: PM # 50 4D 00 # # Text: Set Date and Time # 53 65 74 20 44 61 74 65 20 61 6E 64 20 54 69 6D 65 00 # # Text: Is this correct? # 49 73 20 74 68 69 73 20 63 6F 72 72 65 63 74 3F 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: Service Menu # 20 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 20 20 00 # # Text: P # 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: S # 53 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service ID # 53 65 72 76 69 63 65 20 49 44 20 20 20 20 20 20 20 00 # # Text: Ver # 56 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service Menu 2 # 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 32 20 20 00 # # Text: Reset Pictures # 52 65 73 65 74 20 50 69 63 74 75 72 65 73 20 20 20 00 # # Text: Reset Strobe Pict # 52 65 73 65 74 20 53 74 72 6F 62 65 20 50 69 63 74 00 # # Text: Reset Born OnDate # 52 65 73 65 74 20 42 6F 72 6E 20 4F 6E 44 61 74 65 00 # # Text: Reset FactoryDflt # 52 65 73 65 74 20 46 61 63 74 6F 72 79 44 66 6C 74 00 # # Text: Are You Sure? # 41 72 65 20 59 6F 75 20 53 75 72 65 3F 00 # # Text: Reset to 0 # 52 65 73 65 74 20 74 6F 20 30 00 # # Text: S . # 53 20 20 2E 20 20 00 # # Text: M . # 4D 20 20 2E 20 20 00 # # Text: Yes # 59 65 73 00 # # Text: No # 4E 6F 00 # # Text: # 00 # # Text: BornOnDate # 42 6F 72 6E 4F 6E 44 61 74 65 20 20 20 20 20 20 20 00 # # Text: FinalErrCode # 46 69 6E 61 6C 45 72 72 43 6F 64 65 20 20 20 20 20 00 # # Text: ResetFinalErrCode # 52 65 73 65 74 46 69 6E 61 6C 45 72 72 43 6F 64 65 00 libgphoto2-2.5.9/camlibs/konica/localization/korean0000644000175000001440000036113512557123324017302 00000000000000################################################################################ # LOCALIZATION FOR HP PhotoSmart C30 # # ---------------------------------- # # This file (except the comments) will be sent to the camera (0x9200 command). # # In order to make the data readable for humans, I commented the data and # # formatted to some extend. # # # # SYMBOLS # # ------- # # Each symbol begins with a red pixel in the upper left corner, followed by a # # yellow one, then by a blue one. The headline "red" does simply indicate that # # those are lines beginning with a red pixel. The same with headline "yellow" # # and headline "blue". The brightness of each pixel is defined by a value # # ranging between A (dark) and F (bright). # ################################################################################ # # Variable: KC_LOCALIZE_CARDREV # Value: 0x00 0x02 # Length: 32 # 4B 43 5F 4C 4F 43 41 4C 49 5A 45 5F 43 41 52 44 52 45 56 3A 00 02 FF FF FF FF FF FF FF FF FF FF # # Variable: LOCALIZATION # Length: 16 # 4C 4F 43 41 4C 49 5A 41 54 49 4F 4E FF FF FF FF # # Variable: LNG # Value: 0x00 # Length: 5 # Explanation: Indicator for language. Known values are: # - 0x00: English # - 0x01: French # - 0x02: Spanish # - 0x04: German # - 0x06: Korean # 4C 4E 47 3A 06 # # Variable: TV # Value: 0x00 # Length: 4 # Explanation: Format of TV output. Accepted values are: # - 0x00: NTSC # - 0x01: PAL # - 0x02: Do not display TV menu. # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the format of the TV output. # 54 56 3A 00 # # Variable: DT # Value: 0x02 # Length: 7 # Explanation: Date format. Accepted values are: # - 0x00: Month/Day/Year # - 0x01: Day/Month/Year # - 0x02: Year/Month/Day # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the date format. # 44 54 3A 02 FF FF FF # # Variable: DST # Value: 0x00 0x86 0x00 0x00 # Length: 16 # 44 53 54 3A 00 86 00 00 FF FF FF FF FF FF FF FF # # Variable: SIZ # Value: 0x00 0x01 0x00 0x00 # Length: 16 # 53 49 5A 3A 00 01 00 00 FF FF FF FF FF FF FF FF # # Variable: SUM: # Value: 0xcd # Length: 8 # Explanation: Sum of all bytes starting with the table of contents. The camera # won't check this number. # 53 55 4D 3A CD FF FF FF # # Variable: CRC # Value: 0x32 0xb2 # Length: 8 # Explanation: FCS (frame check sequence) of CRC (cyclic redundancy check). The # camera will check this number. # 43 52 43 3A 32 B2 FF FF # # Table of Contents (text entries only) # # One entry: 00 FE XX XX (XX XX is the memory address). # 00 FE D0 60 00 FE D0 62 00 FE D0 64 00 FE D0 67 00 FE D0 6A 00 FE D0 74 00 FE D0 76 00 FE D0 7A 00 FE D0 7C 00 FE D0 7D 00 FE D0 7E 00 FE D0 82 00 FE D0 88 00 FE D0 8C 00 FE D0 94 00 FE D0 95 00 FE D0 9D 00 FE D0 A6 00 FE D0 A7 00 FE D0 B0 00 FE D0 B9 00 FE D0 C2 00 FE D0 CE 00 FE D0 D9 00 FE D0 DF 00 FE D0 E5 00 FE D0 E6 00 FE D0 EF 00 FE D0 F9 00 FE D1 02 00 FE D1 03 00 FE D1 07 00 FE D1 11 00 FE D1 19 00 FE D1 22 00 FE D1 28 00 FE D1 38 00 FE D1 41 00 FE D1 49 00 FE D1 4D 00 FE D1 50 00 FE D1 58 00 FE D1 61 00 FE D1 91 00 FE D1 9A 00 FE D1 A5 00 FE D1 B1 00 FE D1 B2 00 FE D1 B7 00 FE D1 BB 00 FE D1 C0 00 FE D1 C4 00 FE D1 C8 00 FE D1 CC 00 FE D1 D0 00 FE D1 D4 00 FE D1 D8 00 FE D1 DC 00 FE D1 E0 00 FE D1 E4 00 FE D1 E8 00 FE D1 EC 00 FE D1 F0 00 FE D1 F4 00 FE D1 F8 00 FE D1 FC 00 FE D2 01 00 FE D2 04 00 FE D2 07 00 FE D2 14 00 FE D2 1A 00 FE D2 1B 00 FE D2 1C 00 FE D2 1D 00 FE D2 1E 00 FE D2 1F 00 FE D2 20 00 FE D2 21 00 FE D2 22 00 FE D2 23 00 FE D2 24 00 FE D2 36 00 FE D2 48 00 FE D2 5A 00 FE D2 6C 00 FE D2 7E 00 FE D2 90 00 FE D2 A2 00 FE D2 B4 00 FE D2 C6 00 FE D2 D8 00 FE D2 E6 00 FE D2 F1 00 FE D2 F8 00 FE D2 FF 00 FE D3 03 00 FE D3 06 00 FE D3 07 00 FE D3 19 00 FE D3 2B # # Title: Take Pictures # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAABAEBAAAAAAAEBAEBAEBAEBAEBF BBAEAAABAABAEAAABAEBEEBAEBAEBAEE FEBAABAAAAEAAEAAEBAFAEEBAEBAEBAB EAEAAEAAEBAABAABAEBEBAAEBAEBAEBF BBAEBAEBAABAEBAEBAFAEBBAEBAEBAEE FEBAABAAAAEAAEAAEBEBAEBBAEBAEBAB EAEAAEAAEBAABAABAFAEBAEABAEBAEBF BBAEAAABAABAEBAEBEBAEBAEEBAEBAEE FEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAB EAEBAABAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAAABFFFFFFFFFFAFFEBFFFFFFFEAABF BBAAFFFFFFFFFFFAFFEBFFFFFFFFEAEE FEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAB EAABAEBAEFBEFBEFAAABEFBEEAAABEBF BAAEBAEBBEFBEFBAAAAABEFBEAAABAAE FEBAEBAEFBEFBEEAAAAABBEFAAAAAEAB EAABAEBAEFBEFBAABFFAAFBEEAAABEBF BAAEBAEBBEFBEEABFFFEAAFBEAAABAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAAFFFFFEABEFBEFBEBF BAAEBAEBBEFBEABFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBABFFFFFEAEFBEFBEEAB EAABAEBAEFBEFABFFFFFEABEFBEFBEBF BAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAABFFFEABBEFBEFBEBF BAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAE FEBAEBAEFBEFBEEAAAAABBEFBEFBEEAB EAABAEBAEFBEFBEAAAAAEFBEFBEFBEBF BAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Take Pictures # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAABAEBAAAAAAAEBAEBAEBAEBAEBA ABAEAAABAABAEAAABAEBEEBAEBAEBAEA AEBAABAAAAEAAEAAEBAFAEEBAEBAEBAA AAEAAEAAEBAABAABAEBEBAAEBAEBAEBA ABAEBAEBAABAEBAEBAFAEBBAEBAEBAEA AEBAABAAAAEAAEAAEBEBAEBBAEBAEBAA AAEAAEAAEBAABAABAFAEBAEABAEBAEBA ABAEAAABAABAEBAEBEBAEBAEEBAEBAEA AEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAA AAEBAABAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAAABFFFFFFFFFFAFFEBFFFFFFFEAABA ABAAFFFFFFFFFFFAFFEBFFFFFFFFEAEA AEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA AAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAA AAABAEBAEFBEFBEFAAABEFBEEAAABEBA AAAEBAEBBEFBEFBAAAAABEFBEAAABAAA AEBAEBAEFBEFBEEAAAAABBEFAAAAAEAA AAABAEBAEFBEFBAABFFAAFBEEAAABEBA AAAEBAEBBEFBEEABFFFEAAFBEAAABAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAAFFFFFEABEFBEFBEBA AAAEBAEBBEFBEABFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBABFFFFFEAEFBEFBEEAA AAABAEBAEFBEFABFFFFFEABEFBEFBEBA AAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAABFFFEABBEFBEFBEBA AAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAA AEBAEBAEFBEFBEEAAAAABBEFBEFBEEAA AAABAEBAEFBEFBEAAAAAEFBEFBEFBEBA AAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBEBAEBAEEBAEBAEE FEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAB EAEBAEBAEAAABAABAEAEBAEEBAEBAEBF BBAEBAEBAABAABAEBAFAEBBAEBAEBAEE FEBAEBAEBAEAAEAAEBABAEEBAEBAEBAB EAEBAEBAEAAAAAABAEBABBAEBAEBAEBF BBAEBAEBAABAEAAEBAEBEEBAEBAEBAEE FEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAB EAEBAEBAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAE FEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAB EABFFFFFFFFFFFFAFFEBFFFFFFFFFEBF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BABEFBEFBEFBEFBEFBEFBEFBEFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEEAEFBAAAAAAAAAAAAAABEABEBF BABEFBAABEFAEBAEBAEBAEBAAFAABAAE FEBBEFAABBEAAEBAEBAEBAEBAEAAAEAB EAAFBEAAAFBABAEBAEBAEBAEABAABEBF BABEFBEABEFAEBAEBAEBAEBAAFAAFAAE FEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEFBEABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAABBEAAEBAEBAEBAEBAEFBEEAB EAAFBEAAAFBABAEBAEBAEBAEABEFBEBF BABEFBAABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAEBAEBAEBAEBAAFBEFAAE FEBBAABEAAEAAEBAEBAEBAEBAEFBEEAB EAAFAAFBAABABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAAAAAAAAAAAAAAFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBEBAEBAEEBAEBAEA AEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAA AAEBAEBAEAAABAABAEAEBAEEBAEBAEBA ABAEBAEBAABAABAEBAFAEBBAEBAEBAEA AEBAEBAEBAEAAEAAEBABAEEBAEBAEBAA AAEBAEBAEAAAAAABAEBABBAEBAEBAEBA ABAEBAEBAABAEAAEBAEBEEBAEBAEBAEA AEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAA AAEBAEBAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AABFFFFFFFFFFFFAFFEBFFFFFFFFFEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA AABEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEEAEFBAAAAAAAAAAAAAABEABEBA AABEFBAABEFAEBAEBAEBAEBAAFAABAAA AEBBEFAABBEAAEBAEBAEBAEBAEAAAEAA AAAFBEAAAFBABAEBAEBAEBAEABAABEBA AABEFBEABEFAEBAEBAEBAEBAAFAAFAAA AEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEFBEABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAABBEAAEBAEBAEBAEBAEFBEEAA AAAFBEAAAFBABAEBAEBAEBAEABEFBEBA AABEFBAABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAEBAEBAEBAEBAAFBEFAAA AEBBAABEAAEAAEBAEBAEBAEBAEFBEEAA AAAFAAFBAABABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAAAAAAAAAAAAAAFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: View Small Photos # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABAAAAAAAABAAAAAAAAEAAAAAAAAEBF BBFAAEBABAAFABEFBEFAAAEFBAEBAAEE FEEABAEBEBAEAFBEFBEABABEFBAEABAB EABAEBABAEABAFFFEFBAEAFBEEBAAEBF BBFAAEBEBAAFABFFBEFAAAEFBAEBAAEE FEEABABAEBAEAFFEFBAABABEFBAEABAB EABAEBEBAEABAEFBEFBAEAFBEFBAAEBF BBFAABAEBAAFABEFBAEAAAFBBEFBAAEE FEEABEBAEBAEAFBEFBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEAAEAEBF BBFAEBAEBAAFABEFBAEAAAFBBAABAAEE FEEAAEBAEBAEAFBAEBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEFBEAEBF BBFAAAAAAAAFAAAAAAAAAAAAAAAAAAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAABAEFBEAAABEFBEBAAAEBAEBAAAEE FEBAEBAEFBABAFBEFAEABAAEBAEBABAB EAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBF BBAABAEFBEAAABEFBEBAAABBAEBAAAEE FEBAFBEEFBABAFBEFAEABAFBBAEBABAB EAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBF BBAABEFFBEAAAAEBBEFAAABEFEBAAAEE FEBAFBEEFBABABAEFBEABAFBEAEBABAB EAEABAEBEFAEAEBAEFBAEAEFBBAEAEBF BBAAEBAFBEAAAAEBBEFAAABEFEBAAAEE FEBAAEBEFBABABAEFBEABAFBEFEBABAB EAEABAEBEFAEAEBAEFBAEAEFBEAEAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAAEFBEFAAAAABEFBEAAABEFBEBAAEE FEBABFFBEBABABFBEFBABAFBEFAEABAB EAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBF BBAAEFBEBBAAAABEFFEAAABEFBEBAAEE FEBABEBAEFABABFBEFBABAFBBEAEABAB EAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABAFBBEAEABAB EAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABABAEBAEABAB EAEAAEBABEAEAAEBBAEAEAEBAEBAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: View Small Photos # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABAAAAAAAABAAAAAAAAEAAAAAAAAEBA ABFAAEBABAAFABEFBEFAAAEFBAEBAAEA AEEABAEBEBAEAFBEFBEABABEFBAEABAA AABAEBABAEABAFFFEFBAEAFBEEBAAEBA ABFAAEBEBAAFABFFBEFAAAEFBAEBAAEA AEEABABAEBAEAFFEFBAABABEFBAEABAA AABAEBEBAEABAEFBEFBAEAFBEFBAAEBA ABFAABAEBAAFABEFBAEAAAFBBEFBAAEA AEEABEBAEBAEAFBEFBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEAAEAEBA ABFAEBAEBAAFABEFBAEAAAFBBAABAAEA AEEAAEBAEBAEAFBAEBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEFBEAEBA ABFAAAAAAAAFAAAAAAAAAAAAAAAAAAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAABAEFBEAAABEFBEBAAAEBAEBAAAEA AEBAEBAEFBABAFBEFAEABAAEBAEBABAA AAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBA ABAABAEFBEAAABEFBEBAAABBAEBAAAEA AEBAFBEEFBABAFBEFAEABAFBBAEBABAA AAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBA ABAABEFFBEAAAAEBBEFAAABEFEBAAAEA AEBAFBEEFBABABAEFBEABAFBEAEBABAA AAEABAEBEFAEAEBAEFBAEAEFBBAEAEBA ABAAEBAFBEAAAAEBBEFAAABEFEBAAAEA AEBAAEBEFBABABAEFBEABAFBEFEBABAA AAEABAEBEFAEAEBAEFBAEAEFBEAEAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAAEFBEFAAAAABEFBEAAABEFBEBAAEA AEBABFFBEBABABFBEFBABAFBEFAEABAA AAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBA ABAAEFBEBBAAAABEFFEAAABEFBEBAAEA AEBABEBAEFABABFBEFBABAFBBEAEABAA AAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABAFBBEAEABAA AAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABABAEBAEABAA AAEAAEBABEAEAAEBBAEAEAEBAEBAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Screen Brightness # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBABBAEBAEBAEBAEBAB EAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAEAEEBABBAFAEBAEEBAABAEAAEBAB EAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABAAEAEBAEBAEBAEEAEBBAEBAB EAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAB EAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEABAEBAB EAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBF BBAEAEFAEBEFBEFFFFBEFBEEBAABBAEE FEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAB EAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAB EABAEBAEBEFBEFFFFFFFBEFBEEBAEBBF BAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAE FEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAB EAEBABAEBEFBEFFFFFFFBEFBEEBAAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAAAEBEFBEFBFFFFFBEFBEEBAABBAB EAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBF BBAEBAFAEBEFBEFFFFBEFBEEBAAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEBBAEBAB EAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAEBEFBEFBEFBEFBAEBBAEBAB EAEBAFAABAEBEFBEFBEFBEEBBABBAEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAEBABAEBAEBEFBEFBAEBAEABAEBAB EAEBAEAEBBABAEBAEBAEBBAFAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABBABBABAEBAEBBEABABBAEBAB EAEBAFBAEBEEBABAEBAAEAEEBABBAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAEBAEBABBAFBABBAEBAABAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Screen Brightness # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBABBAEBAEBAEBAEBAA AAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAEAEEBABBAFAEBAEEBAABAEAAEBAA AAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABAAEAEBAEBAEBAEEAEBBAEBAA AAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAA AAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEABAEBAA AAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBA ABAEAEFAEBEFBEFFFFBEFBEEBAABBAEA AEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAA AAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAA AABAEBAEBEFBEFFFFFFFBEFBEEBAEBBA AAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAA AEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAA AAEBABAEBEFBEFFFFFFFBEFBEEBAAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAAAEBEFBEFBFFFFFBEFBEEBAABBAA AAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBA ABAEBAFAEBEFBEFFFFBEFBEEBAAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEBBAEBAA AAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAEBEFBEFBEFBEFBAEBBAEBAA AAEBAFAABAEBEFBEFBEFBEEBBABBAEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAEBABAEBAEBEFBEFBAEBAEABAEBAA AAEBAEAEBBABAEBAEBAEBBAFAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABBABBABAEBAEBBEABABBAEBAA AAEBAFBAEBEEBABAEBAAEAEEBABBAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAEBAEBABBAFBABBAEBAABAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Date & Time # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEABAFBEFAEFBAFBEFBAFBEFBABF BBAEFBAFAEFBEABEEBEFBEFAEFBEFAEE FEABEFAEABEFBAFBAFBEFBEABEFBEAAB EAAFBEABAFBEFAEEBEFBEFBAFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEABAFAEFBEFBAFBEFBEFBEFBAFAEE FEABAFAEABEFBEFAEFBEFBEFBEEBEAAB EAAFAEABAFBEFBEABEFBEFBEFBAFBABF BBAEABAFAEFBEFBAFBEFBEFBEEBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBAFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFAEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEABEFBEFBEFAAABABF BBAEAAAFBEFBEFBAFBEFBEFBEAAAFAEE FEABAFAEFBEFBEFAEFBEFBEFBEFAEAAB EAAFAEABEFBEFBEABEFBEFBEFBEABABF BBAEAAAFBAAAAAAAABEFBEFBEFAAFAEE FEABAAAEFAAAAAAAAFBEFBEFBEAAEAAB EAAFBEABEFBEFBEABEFBEFBEFBEABABF BBAEFBAFBEFBEFBAFBEFBEFBEFBAFAEE FEABEFAEFBEFBEFAEFBEFBEFBAAAEAAB EAAFBEABEFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEABAFAEE FEABAFAEFBEFBEFBEFBEFBEFBAFAEAAB EAAFAEABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEAAAFAEE FEABAAAEFBEFBEFBEFBEFBEFBAAAEAAB EAAFAEABEAAAFBEFAEFBEFAAFBEABABF BBAEABAFBAAAEFBEABEFBEAAEFBAFAEE FEABAAAEFBEABEFBAFBEFBAFBEFBEAAB EAAFAAABEFBAFBEFAEFBEFAEFBEFBABF BBAEFBEFBEFAEFBEAAAFBEAAAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAEABEFBEABEFBABF BBAEFBEFBEFAEFBEABAFBEFBAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAAABEFAAABEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Date & Time # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEABAFBEFAEFBAFBEFBAFBEFBABA ABAEFBAFAEFBEABEEBEFBEFAEFBEFAEA AEABEFAEABEFBAFBAFBEFBEABEFBEAAA AAAFBEABAFBEFAEEBEFBEFBAFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEABAFAEFBEFBAFBEFBEFBEFBAFAEA AEABAFAEABEFBEFAEFBEFBEFBEEBEAAA AAAFAEABAFBEFBEABEFBEFBEFBAFBABA ABAEABAFAEFBEFBAFBEFBEFBEEBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBAFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFAEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEABEFBEFBEFAAABABA ABAEAAAFBEFBEFBAFBEFBEFBEAAAFAEA AEABAFAEFBEFBEFAEFBEFBEFBEFAEAAA AAAFAEABEFBEFBEABEFBEFBEFBEABABA ABAEAAAFBAAAAAAAABEFBEFBEFAAFAEA AEABAAAEFAAAAAAAAFBEFBEFBEAAEAAA AAAFBEABEFBEFBEABEFBEFBEFBEABABA ABAEFBAFBEFBEFBAFBEFBEFBEFBAFAEA AEABEFAEFBEFBEFAEFBEFBEFBAAAEAAA AAAFBEABEFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEABAFAEA AEABAFAEFBEFBEFBEFBEFBEFBAFAEAAA AAAFAEABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEAAAFAEA AEABAAAEFBEFBEFBEFBEFBEFBAAAEAAA AAAFAEABEAAAFBEFAEFBEFAAFBEABABA ABAEABAFBAAAEFBEABEFBEAAEFBAFAEA AEABAAAEFBEABEFBAFBEFBAFBEFBEAAA AAAFAAABEFBAFBEFAEFBEFAEFBEFBABA ABAEFBEFBEFAEFBEAAAFBEAAAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAEABEFBEABEFBABA ABAEFBEFBEFAEFBEABAFBEFBAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAAABEFAAABEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Erase # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBBFFAABAEBAEBAEBAEE FEBAEBAEBAEBAABFEBAEBAEBAEBAEBAB EAEBAEBAAAAAAAAAAAAAAAAABAEBAEBF BBAEBAEAAAAAAAAAAAAAAAAAABAEBAEE FEBAEBAAABEEBEBAAFAAAAEAAABAEBAB EAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBF BBAEBAAAAAAAAAAAAAAAAAAAABAEBAEE FEBAEAAAAAAAAAAAAAAAAAAAAABAEBAB EAEBAABFFFFFABEFBEFBEBAABAEBAEBF BBAEABFFFFFEAFBEFBEFBEBAABAEBAEE FEBABFFFFFFEBEFBEFBEFAEAAEBAEBAB EAEBFFFFFFEAFBEFAEBBEBAABAEBAEBF BBABFFFFFFEBEBBEAAEFBEBAABAEBAEE FEBFFFFFFFAFAEFBABAEFAEAAEBAEBAB EABFFFFFFFAEBBEFAEBBEBAABAEBAEBF BBABFFFFFAFAEBBEAAEFBEBAABAEBAEE FEAABFFFFAEFAEFBABAEFAEAAEBAEBAB EAEABFFFAFBEBBEFAEBBEBAABAEBAEBF BBAEABFFAEFAEBBEAAEFBEBAABAEBAEE FEBAEBFAABEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAAAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEAAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBAAAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAAABEBAABAEBAEBF BBAEBAEAAEFBEFBEFBEFBEAAABAEBAEE FEBAEBAABBEFBEFBEFBEFAAAAEBAEBAB EAEBAEBAEFBEFBEFBEFBEAAABAEBAEBF BBAEBAEAAABAEBAEBAEBAAAAABAEBAEE FEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAB EAEBAEBAEAAAAAAAAAAAAAAABAEBAEBF BBAEBAEBAAAAAAAAAAAAAAAAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Erase # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBBFFAABAEBAEBAEBAEA AEBAEBAEBAEBAABFEBAEBAEBAEBAEBAA AAEBAEBAAAAAAAAAAAAAAAAABAEBAEBA ABAEBAEAAAAAAAAAAAAAAAAAABAEBAEA AEBAEBAAABEEBEBAAFAAAAEAAABAEBAA AAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBA ABAEBAAAAAAAAAAAAAAAAAAAABAEBAEA AEBAEAAAAAAAAAAAAAAAAAAAAABAEBAA AAEBAABFFFFFABEFBEFBEBAABAEBAEBA ABAEABFFFFFEAFBEFBEFBEBAABAEBAEA AEBABFFFFFFEBEFBEFBEFAEAAEBAEBAA AAEBFFFFFFEAFBEFAEBBEBAABAEBAEBA ABABFFFFFFEBEBBEAAEFBEBAABAEBAEA AEBFFFFFFFAFAEFBABAEFAEAAEBAEBAA AABFFFFFFFAEBBEFAEBBEBAABAEBAEBA ABABFFFFFAFAEBBEAAEFBEBAABAEBAEA AEAABFFFFAEFAEFBABAEFAEAAEBAEBAA AAEABFFFAFBEBBEFAEBBEBAABAEBAEBA ABAEABFFAEFAEBBEAAEFBEBAABAEBAEA AEBAEBFAABEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAAAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEAAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBAAAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAAABEBAABAEBAEBA ABAEBAEAAEFBEFBEFBEFBEAAABAEBAEA AEBAEBAABBEFBEFBEFBEFAAAAEBAEBAA AAEBAEBAEFBEFBEFBEFBEAAABAEBAEBA ABAEBAEAAABAEBAEBAEBAAAAABAEBAEA AEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAA AAEBAEBAEAAAAAAAAAAAAAAABAEBAEBA ABAEBAEBAAAAAAAAAAAAAAAAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Camera Exposure # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEAABFFFFFEAAEBAEBAEBAB EAEBAEBAEBAEABFFFFFEABAEBAEBAEBF BBAEBAEBAEABFFFFFFFFFEAAEBAEBAEE FEBAEBAEBAABFFFFFFFFFEABAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEBABFFFFFFFFFFFFFEABAEBAEE FEBAEBAEABFFFFFFFFFFFFFEAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBAEBFFFFFFFFFFFFFFFEABAEBAB EAEBAEBABFFFFFFFFFFFFFFFEAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBABFFFFFEBEBEBFFFFFFEBAEBAB EAEBAEABFFFFFEBEBEBFFFFFFEABAEBF BBAEBAEBFFFFEBEBEBEABFFFFEAEBAEE FEBAEBABFFFFEBEBEBEABFFFFEBAEBAB EAEBAEABFFFFEBFFFFFEBFFFFEABAEBF BBAEBAEBFFFFEBFFFFFEBFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBABFFFFEBFFFEBFFFFEAEBAEBF BBAEBAEABFFFFEBFFFEBFFFFEBAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBABFFFFEBFEBFFFFEABAEBAEE FEBAEBAEABFFFFEBFEBFFFFEAEBAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBAEBFFFEBFEBFFFEAEBAEBAEE FEBAEBAEBABFFFEBFEBFFFEBAEBAEBAB EAEBAEBAEBABFFEBFEBFFEAEBAEBAEBF BBAEBAEBAEABFFEBFEBFFEBAEBAEBAEE FEBAEBAEBAEABFEBFEABEAEBAEBAEBAB EAEBAEBAEBAEBFEBFEABEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBAAAFBEAABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEABBEEAAAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAABAEBAEBAEBAB EAEBAEBAEBAEBAEAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Camera Exposure # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEAABFFFFFEAAEBAEBAEBAA AAEBAEBAEBAEABFFFFFEABAEBAEBAEBA ABAEBAEBAEABFFFFFFFFFEAAEBAEBAEA AEBAEBAEBAABFFFFFFFFFEABAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEBABFFFFFFFFFFFFFEABAEBAEA AEBAEBAEABFFFFFFFFFFFFFEAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBAEBFFFFFFFFFFFFFFFEABAEBAA AAEBAEBABFFFFFFFFFFFFFFFEAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBABFFFFFEBEBEBFFFFFFEBAEBAA AAEBAEABFFFFFEBEBEBFFFFFFEABAEBA ABAEBAEBFFFFEBEBEBEABFFFFEAEBAEA AEBAEBABFFFFEBEBEBEABFFFFEBAEBAA AAEBAEABFFFFEBFFFFFEBFFFFEABAEBA ABAEBAEBFFFFEBFFFFFEBFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBABFFFFEBFFFEBFFFFEAEBAEBA ABAEBAEABFFFFEBFFFEBFFFFEBAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBABFFFFEBFEBFFFFEABAEBAEA AEBAEBAEABFFFFEBFEBFFFFEAEBAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBAEBFFFEBFEBFFFEAEBAEBAEA AEBAEBAEBABFFFEBFEBFFFEBAEBAEBAA AAEBAEBAEBABFFEBFEBFFEAEBAEBAEBA ABAEBAEBAEABFFEBFEBFFEBAEBAEBAEA AEBAEBAEBAEABFEBFEABEAEBAEBAEBAA AAEBAEBAEBAEBFEBFEABEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBAAAFBEAABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEABBEEAAAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAABAEBAEBAEBAA AAEBAEBAEBAEBAEAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Format Memory Card # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEEFBEFBEFBEFBEFBEFBEFBEFBEFEE FEBBBAAAAAAAAAAAAAAAAAAAAAAABEAB EAEEFAAFAEABAFAEABAFAEABAFAAFBBF BBBBAAAAAAAAAAAAAAAAAAAAAAABEFEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEABBF BBFAAAAAFFFFFFFFFFFFFFFFFFFFAFEE FEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAB EABAABAAFFFFFFFFEFFFFFFFFFFEABBF BBFAAEAAFFFFFFFFABFFFFFFFFFFAFEE FEEABAEAFFFFFFFEBAFFFFFFFFFFAEAB EABAAAAAFFFFFFFAFEBFFFFFFFFEABBF BBFAAAAAFFFFFFEBEFAFFFFFFFFFAFEE FEEAAAABFFFFFFAFABEBFFFFFFFFAEAB EABAAAABFFFFFEBEAAFAFFFFFFFEABBF BBFAAAABFFFFFAFAAABEBFFFFFFFAFEE FEEAAAABFFFFEBEAAAAFAFFFFFFFAEAB EABAAAAFFFFFAFAAAAABEBFFFFFEABBF BBFAAAAFFFFEBEAAAAAAFAFFFFFFAFEE FEEAAAAFFFFAFAAAAAAABEBFFFFFAEAB EABAAAAFFFEBEAAAAAAAAFAFFFFEABBF BBFAAAAFFFAFAAAAAAAAABEBFFFFAFEE FEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAB EABAAABFFAFAABFFEBFFFABEBFFEABBF BBFAAABFEBEAAFFFEBFFFAAFAFFFAFEE FEEAAABFAFAABFAAABEAAAABEBFFAEAB EABAAABEBEAABEAAABEAAAAAFAFEABBF BBFAAAFAFAAABEAAABEAAAAABEBFAFEE FEEAAAFEBEAABEAAABFFEAAAFAFFAEAB EABAAAFFAFAABEAAABFFEAABEBFEABBF BBFAAAFFEBEABEAAABEAAAAFAFFFAFEE FEEAAAFFFAFABFAAABEAAABEBFFFAEAB EABAAAFFFEBEAFFFEBEAAAFAFFFEABBF BBFAABFFFFAFABFFEBEAABEBFFFFAFEE FEEAABFFFFEBEAAAAAAAAFAFFFFFAEAB EABAABFFFFFAFAAAAAAABEBFFFFEABBF BBFAABFFFFFEBEAAAAAAFAFFFFFFAFEE FEEAABFFFFFFAFAAAAABEBFFFFFFAEAB EABAABFFFFFFEBEAAAAFAFFFFFFEABBF BBFAAFFFFFFFFAFAAABEBFFFFFFFAFEE FEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAB EABAAFFFFFFFFFAFABEBFFFFFFFEABBF BBFAAFFFFFFFFFEBEFAFFFFFFFFFAFEE FEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAB EABAAFFFFFFFFFFEBAFFFFFFFFFEABBF BBFABFFFFFFFFFFFABFFFFFFFFFFAFEE FEEABFFFFFFFFFFFEFFFFFFFFFFFAEAB EABABFFFFFFFFFFFFFFFFFFFFFFEABBF BBFABFFFFFFFFFFFFFFFFFFFFFFFAFEE FEEABFFFFFFFFFFFFFFFFFFFFFFFBEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEFBBF BBFBEFBEFBEFBEFBEFBEFBEFBEFBEEEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAB EAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Format Memory Card # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEEFBEFBEFBEFBEFBEFBEFBEFBEFEA AEBBBAAAAAAAAAAAAAAAAAAAAAAABEAA AAEEFAAFAEABAFAEABAFAEABAFAAFBBA ABBBAAAAAAAAAAAAAAAAAAAAAAABEFEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEABBA ABFAAAAAFFFFFFFFFFFFFFFFFFFFAFEA AEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAA AABAABAAFFFFFFFFEFFFFFFFFFFEABBA ABFAAEAAFFFFFFFFABFFFFFFFFFFAFEA AEEABAEAFFFFFFFEBAFFFFFFFFFFAEAA AABAAAAAFFFFFFFAFEBFFFFFFFFEABBA ABFAAAAAFFFFFFEBEFAFFFFFFFFFAFEA AEEAAAABFFFFFFAFABEBFFFFFFFFAEAA AABAAAABFFFFFEBEAAFAFFFFFFFEABBA ABFAAAABFFFFFAFAAABEBFFFFFFFAFEA AEEAAAABFFFFEBEAAAAFAFFFFFFFAEAA AABAAAAFFFFFAFAAAAABEBFFFFFEABBA ABFAAAAFFFFEBEAAAAAAFAFFFFFFAFEA AEEAAAAFFFFAFAAAAAAABEBFFFFFAEAA AABAAAAFFFEBEAAAAAAAAFAFFFFEABBA ABFAAAAFFFAFAAAAAAAAABEBFFFFAFEA AEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAA AABAAABFFAFAABFFEBFFFABEBFFEABBA ABFAAABFEBEAAFFFEBFFFAAFAFFFAFEA AEEAAABFAFAABFAAABEAAAABEBFFAEAA AABAAABEBEAABEAAABEAAAAAFAFEABBA ABFAAAFAFAAABEAAABEAAAAABEBFAFEA AEEAAAFEBEAABEAAABFFEAAAFAFFAEAA AABAAAFFAFAABEAAABFFEAABEBFEABBA ABFAAAFFEBEABEAAABEAAAAFAFFFAFEA AEEAAAFFFAFABFAAABEAAABEBFFFAEAA AABAAAFFFEBEAFFFEBEAAAFAFFFEABBA ABFAABFFFFAFABFFEBEAABEBFFFFAFEA AEEAABFFFFEBEAAAAAAAAFAFFFFFAEAA AABAABFFFFFAFAAAAAAABEBFFFFEABBA ABFAABFFFFFEBEAAAAAAFAFFFFFFAFEA AEEAABFFFFFFAFAAAAABEBFFFFFFAEAA AABAABFFFFFFEBEAAAAFAFFFFFFEABBA ABFAAFFFFFFFFAFAAABEBFFFFFFFAFEA AEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAA AABAAFFFFFFFFFAFABEBFFFFFFFEABBA ABFAAFFFFFFFFFEBEFAFFFFFFFFFAFEA AEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAA AABAAFFFFFFFFFFEBAFFFFFFFFFEABBA ABFABFFFFFFFFFFFABFFFFFFFFFFAFEA AEEABFFFFFFFFFFFEFFFFFFFFFFFAEAA AABABFFFFFFFFFFFFFFFFFFFFFFEABBA ABFABFFFFFFFFFFFFFFFFFFFFFFFAFEA AEEABFFFFFFFFFFFFFFFFFFFFFFFBEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEFBBA ABFBEFBEFBEFBEFBEFBEFBEFBEFBEEEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAA AAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Lock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBF BBAEBAEBAAEAAFBEFBEAAEAAEBAEBAEE FEBAEBAEABEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Lock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBA ABAEBAEBAAEAAFBEFBEAAEAAEBAEBAEA AEBAEBAEABEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Unlock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAAAEBAEBAEBAEAAEBAEBAEE FEBAEBAEAAABAEBAEBAEABABAEBAEBAB EAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBF BBAEBAEBAEAAAFBEFBEAAEAAEBAEBAEE FEBAEBAEBAEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Unlock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAAAEBAEBAEBAEAAEBAEBAEA AEBAEBAEAAABAEBAEBAEABABAEBAEBAA AAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBA ABAEBAEBAEAAAFBEFBEAAEAAEBAEBAEA AEBAEBAEBAEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set for PAL / NTSC TV # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAABAEBAEBAEBAEBAABAEBAB EAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBF BBAEBAEBAEAAEBAEBAEBAEBAABAEBAEE FEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAB EAEBAEBAEBAABAEBAEBAEBAABAEBAEBF BBAEBAEBAEBAABAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAABAEBAEBAABAEBAEBAB EAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBF BBAEBAEBAEBAEAAEBAEBAABAEBAEBAEE FEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAB EAEBAEBAEBAEBAABAEBAABAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEABEFBEFBEFBEFBEFBEFBEFBEEAABF BBAAFBEFBEFBEFBEFBEFBEFBEFBAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAB EAEAAAAAAAAAAAAAAAAAAAAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAEAEE FEAAAAAAAAAAAAAAAAAAAAAAAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAEBAEBAEBAEBAEBAEBAAAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEFBEBAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBAEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAAAAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set for PAL / NTSC TV # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAABAEBAEBAEBAEBAABAEBAA AAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBA ABAEBAEBAEAAEBAEBAEBAEBAABAEBAEA AEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAA AAEBAEBAEBAABAEBAEBAEBAABAEBAEBA ABAEBAEBAEBAABAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAABAEBAEBAABAEBAEBAA AAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBA ABAEBAEBAEBAEAAEBAEBAABAEBAEBAEA AEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAA AAEBAEBAEBAEBAABAEBAABAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEABEFBEFBEFBEFBEFBEFBEFBEEAABA ABAAFBEFBEFBEFBEFBEFBEFBEFBAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAA AAEAAAAAAAAAAAAAAAAAAAAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAEAEA AEAAAAAAAAAAAAAAAAAAAAAAAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAEBAEBAEBAEBAEBAEBAAAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEFBEBAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBAEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAAAAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Start Slide Show # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAB EAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAAFBEFBEFBEFBEFBEFBEAAEE FEBAEBAEBAEFBEFBEFBEFBEFBEFBABAB EAEBAEBAAFBEFBEFBEFBEFBEFBEFBABF BBAEBAEBAEFBEFBEFBEFBEFBEFBEFAEE FEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAB EAEBAEBAAAAAAAAAAAAAAAAAABEFBABF BBAEBAAFBEFBEFBEFBEFBEFBEABEFAEE FEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAB EAEBAAFBEFBEFBEFBEFBEFBEFBAFBABF BBAEBAEFBEFBEFBEFBEFBEFBEFAEFAEE FEBAAAAAAAAAAAAAAAAAAAEFBEABEAAB EAEBAAAAAAAAAAAAAAAAAABEFBAFBABF BBAAFBEFBEFBEFBEFBEFBEABEFAEFAEE FEBAEFBEFBEFBEFBEFBEFBAFBEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEFBEFBEFBEFBEFBEFAEFAEFAEE FEABEFBEFBEFBEFBEFBEFBEABEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEAAAAAAAAAAAAFBEFAEFAEFAEE FEABEFBAAAAAAAAAAAAEFBEABEABEAAB EAAFBEAAEBAEBAEBAEBAEFBAFBAFBABF BBAEFBABAEBAEBAEBAEABEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABABAB EAAFBABAEBAEBAEBAEBAAFBAFBAFAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAABAEE FEABEAAEBAEBAEBAEBAEABEABEAAEBAB EAAFBABAEBAEBAEBAEBAAFBAFBABAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAEBAEE FEABEFAEBAEBAEBAEBAAFBEABABAEBAB EAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBF BBAEFBEAAAAAAAAAAAAFBEFAABAEBAEE FEABEFBAAAAAAAAAAAAEFBEAAEBAEBAB EAAFBEFBEFBEFBEFBEFBEFBABAEBAEBF BBAEFBEFBEFBEFBEFBEFBEFAEBAEBAEE FEBAEFBEFBEFBEFBEFBEFBABAEBAEBAB EAEABEFBEFBEFBEFBEFBEFAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAABAEBAEBAEE FEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Start Slide Show # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAA AAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAAFBEFBEFBEFBEFBEFBEAAEA AEBAEBAEBAEFBEFBEFBEFBEFBEFBABAA AAEBAEBAAFBEFBEFBEFBEFBEFBEFBABA ABAEBAEBAEFBEFBEFBEFBEFBEFBEFAEA AEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAA AAEBAEBAAAAAAAAAAAAAAAAAABEFBABA ABAEBAAFBEFBEFBEFBEFBEFBEABEFAEA AEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAA AAEBAAFBEFBEFBEFBEFBEFBEFBAFBABA ABAEBAEFBEFBEFBEFBEFBEFBEFAEFAEA AEBAAAAAAAAAAAAAAAAAAAEFBEABEAAA AAEBAAAAAAAAAAAAAAAAAABEFBAFBABA ABAAFBEFBEFBEFBEFBEFBEABEFAEFAEA AEBAEFBEFBEFBEFBEFBEFBAFBEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEFBEFBEFBEFBEFBEFAEFAEFAEA AEABEFBEFBEFBEFBEFBEFBEABEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEAAAAAAAAAAAAFBEFAEFAEFAEA AEABEFBAAAAAAAAAAAAEFBEABEABEAAA AAAFBEAAEBAEBAEBAEBAEFBAFBAFBABA ABAEFBABAEBAEBAEBAEABEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABABAA AAAFBABAEBAEBAEBAEBAAFBAFBAFAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAABAEA AEABEAAEBAEBAEBAEBAEABEABEAAEBAA AAAFBABAEBAEBAEBAEBAAFBAFBABAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAEBAEA AEABEFAEBAEBAEBAEBAAFBEABABAEBAA AAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBA ABAEFBEAAAAAAAAAAAAFBEFAABAEBAEA AEABEFBAAAAAAAAAAAAEFBEAAEBAEBAA AAAFBEFBEFBEFBEFBEFBEFBABAEBAEBA ABAEFBEFBEFBEFBEFBEFBEFAEBAEBAEA AEBAEFBEFBEFBEFBEFBEFBABAEBAEBAA AAEABEFBEFBEFBEFBEFBEFAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAABAEBAEBAEA AEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 72 # Height: 36 # Length: 2592 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBE AEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFB BAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEF EBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Width: 18 # Height: 12 # Length: 216 # 0000000000000000000000000000FBEF0000 0000EEFE00000000BBAB00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000BBAB00000000FAAF0000 0000EFBE0000000000000000000000000000 # # Title: ? # Length: 544 # FBCFBCFBEF3EF3EF # FAEBAEBAEBAEBAE8 ABAEBAEAAEBAEBAF EEBAEBAEFAEBAEBB FAEBAEFAAFAEBAEA 2BAEBBEBAAEAEBAF EEBAEFAEBAEBAEBB FAEBAEBAEBBABAE8 ABAEAAEBAEBAEBAF EEBAEEAEBAABAEBB FAEBAEAAABBABAEA 2BAEAAAFBEBAEBAF EEBAEFBBABEBAEBB FAEBAAFAAFAABAE8 ABAEABEAAEFAEBAF EEBAEEABEAEBAEBB FAEBBEAAAABEBAEA 2BAEBAEAABAAABAF EEBAEAAAAAAFAEBB FAEAAAAFFAAABAE8 ABAEEABEBEABABAF EEBAEEBAAEBBAEBB FAEAAABEBEAABAEA 2BAEFAAFFAABABAF EEBAAAEAABAEAEBB FAEBBEAAAABEBAE8 ABAEABABEAFAEBAF EEBAEBBAABEBAEBB FAEBAEBBEEAEBAEA 2BAEBAAAAABAEBAF EEBAEBAEBAEBAEBB # CFBEF3CF3CFBEFBC # FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # same as above FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000020000 00000000000000000000000000000000000AC000 00000000000000000000000000000000002BA000 0000000000000000000000000000000000AEB800 0000000000000000000000000000000002BAEB00 000000000000000000000000000000000AEBAE80 000000000000000000000000000000002BAEBAE0 00000000000000000000000000000000AEBAEBAC 000000000000000000000000000000003AEBAEB0 000000000000000000000000000000000BAEBAC0 0000000000000000000000000000000002BAEB00 0000000000000000000000000000000000EBAC00 00000000000000000000000000000000002EB000 00000000000000000000000000000000000AC000 0000000000000000000000000000000000030000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000200000000000000020000 0000000000000000000B800000000000000AC000 0000000000000000002EB00000000000002BA000 000000000000000000BAE8000000000000AEB800 000000000000000002EBAE000000000002BAEB00 00000000000000000BAEBAC0000000000AEBAE80 00000000000000002EBAEBA0000000002BAEBAE0 0000000000000000BAEBAEB800000000AEBAEBAC 00000000000000002BAEBAE0000000003AEBAEB0 00000000000000000EBAEB80000000000BAEBAC0 000000000000000002EBAE000000000002BAEB00 000000000000000000AEB8000000000000EBAC00 0000000000000000003AE00000000000002EB000 0000000000000000000B800000000000000AC000 0000000000000000000200000000000000030000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0003000000000000000200000000000000020000 000E800000000000000B800000000000000AC000 003AE00000000000002EB00000000000002BA000 00EBAC000000000000BAE8000000000000AEB800 03AEBA000000000002EBAE000000000002BAEB00 0EBAEB80000000000BAEBAC0000000000AEBAE80 3AEBAEB0000000002EBAEBA0000000002BAEBAE0 EBAEBAE800000000BAEBAEB800000000AEBAEBAC 2EBAEBA0000000002BAEBAE0000000003AEBAEB0 0AEBAE80000000000EBAEB80000000000BAEBAC0 03AEBA000000000002EBAE000000000002BAEB00 00BAE8000000000000AEB8000000000000EBAC00 002BA00000000000003AE00000000000002EB000 000E800000000000000B800000000000000AC000 0002000000000000000200000000000000030000 # # Title: ? # Width: 72 # Height: 74 # Length: 5328 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAFBEFBEFBEFBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEEAAAAA AAAAABEFBEFBEFBEFBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEAAA AAAFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBAAA AAAFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFAAA AAAFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEAAA AAAFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 24 # Height: 10 # Length: 240 # 00000003800000000000000EB00000000000003AE8000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 0000002BAC0000000000000EB000000000000002C0000000 # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF8EAA8AE88FFFFFFFFFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFF8EEEEA888A8AA8AAEEEEFEEFF8FFFFFFFF FFFFF8FFFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFF FFFF89999999999FAAAAAAAAEEEEEF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF F89999999999998EAAAA8F88AEEEEF8FFFFFFFFF 899999999999AAEEAAA8FEFFAAEFFF8FFFFFFFFF F8999999999A88EEAAA8FFEEAEEEEF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFF899998AA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFF8988EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFF888EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA888EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA888AAAAAAAAAAAEEEEF8FFFFFFFFF FFFFFFF88EAAAAAAAAAAEAEEAEEFFF8FFFFFFFFF FFFFFFFFF88EEEEEEEEEEEEEEEFFF88FFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # 9999999999999999FFFFFF999999999999999999 999999999999999FEAA8AEFF9999999999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 999999FEEEEA888A8AA8AAEEEEFEEFFF99999999 99999FFFFFFFFFFFFFFFFFFFFFFFFFFF99999999 99999F888888888FAAAAAAAAEEEEEFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 9F8888888888FF8EAAAA8F88AEEEEFF999999999 F8888888888FAAEEAAA8FEFFAAEFFFF999999999 9F88888888FA88EEAAA8FFEEAEEEEFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 9999F8888FAA88EEAAA8FFEEAEEEEFF999999999 99999F8FFEAA88EEAAA8FEEEAAEFFFF999999999 999999FFFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA888EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA888AAAAAAAAAAAEEEEFF999999999 9999999FFEAAAAAAAAAAEAEEAEEFFFF999999999 999999999FFEEEEEEEEEEEEEEEFFFFF999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999999999999999999999999999999999 # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF88888888888888888888888888888888888FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FDDDDDBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDDDBBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDBBBBBBFF8FCCCCCEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCCEEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCEEEEEF8FAAA99999F8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FBBBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FCCCCAAAFF8FCCCCCDDDF8FCCCBBBBBF8FFF FF88FCCCCAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99999B9FF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99BBBB9FF8FDAAAAAAAF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEE99FF8FEEEEBBBBF8FDDDDDDDDF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9F99999999999999999999999999999999999FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FDDDDDBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDDDBBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDBBBBBBFF9FCCCCCEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCCEEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCEEEEEF9FAAA99999F9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FBBBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FCCCCAAAFF9FCCCCCDDDF9FCCCBBBBBF9FF9 9F99FCCCCAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99999B9FF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99BBBB9FF9FDAAAAAAAF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEE99FF9FEEEEBBBBF9FDDDDDDDDF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9999999999999999999999999999999999999999 # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFF88EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8888FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFFF8EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FFFF99999999999FEFF99999999999 9999999999999999999999999FEFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999FFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEEFFFFF FFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAEFFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEFFF FFFFFFFEEAAAAAAAAAAAAAAAAAAAAAAEAAAAEFFF FFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEAAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEEFFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEFFFFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAEFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEFFFFFFFFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEFFFFFFFFFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 999999999999FFFFFFFFFFFFFFFFFFFFFFF99999 99999999999FAAAAAAAAAAAAAAAAAAAAAAAF9999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 999999999FFFFFFFFFFFFFFFFFFFFFFAAAAAF999 9999999FFAAAAAAAAAAAAAAAAAAAAAAFAAAAF999 999999FAAAAAAAAAAAAAAAAAAAAAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 9999FAAAAAAAAAAAAAAAAAAAAAAFFAAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFF99999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFF999999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAF99999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAF9999999999 9999FAAAAAAAAAAAAAAAAAAAAAAFF99999999999 99999FFFFFFFFFFFFFFFFFFFFFF9999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 # # Title: Locked # Width: 12 # Height: 24 # Length: 288 # 999999999999999999999999 99999999FFEEEFF999999999 9999999FEEFFFEEF99999999 9999999EEF999FEE99999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9FFFFF9FF9999999 999999FFFEEEEEFFF9999999 999999FEEEDDDEEEF9999999 99999FEEEEFFFEEEEF999999 9999FEEEFFF8FFFEEEF99999 9999FEEFFFFFFFFFEEF99999 9999EEEFFFFFFFFFEEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF88AFFFFEE99999 9999EEFFFF8AEFFFFEE99999 9999FEEFFFFFFFFF8EF99999 99999FEFFFFFFFFFEF999999 999999FEFFF8FFFEF9999999 9999999EEEFFF8EE99999999 999999999FFFFF9999999999 999999999999999999999999 # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000B00000 000000000000000000000000000000000BBB0000 00000000000000000000000000000000BBBBB000 0000000000000000000000000000000BBBBBBB00 000000000000000000000000000000BBBBBBBBB0 0000000000000000000000000000000BBBBBBB00 00000000000000000000000000000000BBBBB000 000000000000000000000000000000000BBB0000 0000000000000000000000000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 00000000000000000000B0000000000000B00000 0000000000000000000BBB00000000000BBB0000 000000000000000000BBBBB000000000BBBBB000 00000000000000000BBBBBBB0000000BBBBBBB00 0000000000000000BBBBBBBBB00000BBBBBBBBB0 00000000000000000BBBBBBB0000000BBBBBBB00 000000000000000000BBBBB000000000BBBBB000 0000000000000000000BBB00000000000BBB0000 00000000000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 000000B0000000000000B0000000000000B00000 00000BBB00000000000BBB00000000000BBB0000 0000BBBBB000000000BBBBB000000000BBBBB000 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 00BBBBBBBBB00000BBBBBBBBB00000BBBBBBBBB0 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 0000BBBBB000000000BBBBB000000000BBBBB000 00000BBB00000000000BBB00000000000BBB0000 000000B0000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAABEFBEFBEFBEFBEFBEFBEAAAAEB AEAAAAFBEFBEFBEFBEFBEFBEFBAAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAABBEFBEFBEFBEFBEFBEFBEEAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBAEABAE BAEAFAAFBEFBEFBEFBEFBEFBEEBEAABA EBABEFAEFBEFBEFBEFBEFBEFBAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEEBEFABAE BAEAFBEABEFBEFBEFBEFBEFBAFBEEABA EBABEFBEBBEFBEFBEFBEFBEEBEFBEAEB AEABBEFBAFBEFBEFBEFBEFBAFBEFABAE BAEAFBEFAAFBEFBEFBEFBEEBEFBEEABA EBABEFBEFAEFBEFBEFBEFBEFBEFBEAEB AEABBEFBEEBEFBAFBEFBEFBEFBEFABAE BAEAFBEFBEABEEBEFBEFBEFBEFBEEABA EBABEFBEFBEFAABBEFBEFBEFBEFBEAEB AEABBEFBEFBEAAAFBEFBEFBEFBEFABAE BAEAFBEFBEFAAABEAAEAAAFBEFBEEABA EBABEFBEFBEFAABBAABAABEFBEFBEAEB AEABBEFBEFBEEAAFAAEAAFBEFBEFABAE BAEAFBEFBEFBEABEEAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFBEABEFBEFBEFABAE BAEAFBEFBEFBEABEFAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFAAFAAFBEFBEFABAE BAEAFBEFBEEBEABEAAEAAEFBEFBEEABA EBABEFBEFBAFAABAABBEABEFBEFBEAEB AEABBEFBEEBEFBEFBEFBEFAEFBEFABAE BAEAFBEFBAFBEFBEFBEFBEEBEFBEEABA EBABEFBEEBEFBEFBEFBEFBEABEFBEAEB AEABBEFBAFBEFBEFBEFBEFBEBBEFABAE BAEAFBEEBEFBEFBEFBEFBEFBAFBEEABA EBABEFBAFBEFBEFBEFBEFBEFAAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEFAEFABAE BAEAFBAFBEFBEFBEFBEFBEFBEEBEAABA EBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBEAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAAABEFBEFBEFBEFBEFBEFBEEAAAEB AEAAAABBEFBEFBEFBEFBEFBEFBAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Normal # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAABEFBEFBEFBEFBEFBEFBEAAAAEE FEAAAAFBEFBEFBEFBEFBEFBEFBAAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAABBEFBEFBEFBEFBEFBEFBEEAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBAEABAB EAEAFAAFBEFBEFBEFBEFBEFBEEBEAABF BBABEFAEFBEFBEFBEFBEFBEFBAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEEBEFABAB EAEAFBEABEFBEFBEFBEFBEFBAFBEEABF BBABEFBEBBEFBEFBEFBEFBEEBEFBEAEE FEABBEFBAFBEFBEFBEFBEFBAFBEFABAB EAEAFBEFAAFBEFBEFBEFBEEBEFBEEABF BBABEFBEFAEFBEFBEFBEFBEFBEFBEAEE FEABBEFBEEBEFBAFBEFBEFBEFBEFABAB EAEAFBEFBEABEEBEFBEFBEFBEFBEEABF BBABEFBEFBEFAABBEFBEFBEFBEFBEAEE FEABBEFBEFBEAAAFBEFBEFBEFBEFABAB EAEAFBEFBEFAAABEAAEAAAFBEFBEEABF BBABEFBEFBEFAABBAABAABEFBEFBEAEE FEABBEFBEFBEEAAFAAEAAFBEFBEFABAB EAEAFBEFBEFBEABEEAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFBEABEFBEFBEFABAB EAEAFBEFBEFBEABEFAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFAAFAAFBEFBEFABAB EAEAFBEFBEEBEABEAAEAAEFBEFBEEABF BBABEFBEFBAFAABAABBEABEFBEFBEAEE FEABBEFBEEBEFBEFBEFBEFAEFBEFABAB EAEAFBEFBAFBEFBEFBEFBEEBEFBEEABF BBABEFBEEBEFBEFBEFBEFBEABEFBEAEE FEABBEFBAFBEFBEFBEFBEFBEBBEFABAB EAEAFBEEBEFBEFBEFBEFBEFBAFBEEABF BBABEFBAFBEFBEFBEFBEFBEFAAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEFAEFABAB EAEAFBAFBEFBEFBEFBEFBEFBEEBEAABF BBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBEAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAAABEFBEFBEFBEFBEFBEFBEEAAAEE FEAAAABBEFBEFBEFBEFBEFBEFBAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Zoom # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEEABAE BAEAABAFBEFBEFBEFBEFBEFBEABAEABA EBABEBAEFBEFBEFBEFBEFBEFBAEBEAEB AEABBAABEFBEFBEFBEFBEFBEFAAFABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAAAAAAAAAAAAAAAAAAAAABEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEFFEBAEBAEBAEAFABAE BAEAFABAEBAEBBFFFEBAEBAEBABEEABA EBABEEABAFFAEFFFFEEBAEBAEABBEAEB AEABBEAEBBEBAFFBFFAEBAEBAEAFABAE BAEAFABAEBEEBFEBFEBFFBFFFABEEABA EBABEEABAFFAEBEFFEEFFEFFEABBEAEB AEABBEAFFFFFEEBFFBAFFBFFAEAFABAE BAEAFABBFFFFFAFFFEBBFFFEBABEEABA EBABEEABAFFAEBBFFAEBFFFAEABBEAEB AEABBEAEBBEBAEFFEBAEBFEBAEAFABAE BAEAFABAEBEEBAFFAEBAFFFEBABEEABA EBABEEABAFFAEBFEBAEBFFFAEABBEAEB AEABBEAEBAEBAFFFFFAFFAFFAEAFABAE BAEAFABAEBAEBFFFFEBFFBFFBABEEABA EBABEEABAEBAFFFFFEFFEEBFEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAAAAAAAAAAAAAAAAAAAAABABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAEFBEFBEFBEFBEFBEFBAABEAEB AEABBAABEFBEFBEFBEFBEFBEFAEBABAE BAEAEBAFBEFBEFBEFBEFBEFBEABAEABA EBABAFBEFBEFBEFBEFBEFBEFBEFAAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEFABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Zoom # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEEABAB EAEAABAFBEFBEFBEFBEFBEFBEABAEABF BBABEBAEFBEFBEFBEFBEFBEFBAEBEAEE FEABBAABEFBEFBEFBEFBEFBEFAAFABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAAAAAAAAAAAAAAAAAAAAABEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEFFEBAEBAEBAEAFABAB EAEAFABAEBAEBBFFFEBAEBAEBABEEABF BBABEEABAFFAEFFFFEEBAEBAEABBEAEE FEABBEAEBBEBAFFBFFAEBAEBAEAFABAB EAEAFABAEBEEBFEBFEBFFBFFFABEEABF BBABEEABAFFAEBEFFEEFFEFFEABBEAEE FEABBEAFFFFFEEBFFBAFFBFFAEAFABAB EAEAFABBFFFFFAFFFEBBFFFEBABEEABF BBABEEABAFFAEBBFFAEBFFFAEABBEAEE FEABBEAEBBEBAEFFEBAEBFEBAEAFABAB EAEAFABAEBEEBAFFAEBAFFFEBABEEABF BBABEEABAFFAEBFEBAEBFFFAEABBEAEE FEABBEAEBAEBAFFFFFAFFAFFAEAFABAB EAEAFABAEBAEBFFFFEBFFBFFBABEEABF BBABEEABAEBAFFFFFEFFEEBFEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAAAAAAAAAAAAAAAAAAAAABABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAEFBEFBEFBEFBEFBEFBAABEAEE FEABBAABEFBEFBEFBEFBEFBEFAEBABAB EAEAEBAFBEFBEFBEFBEFBEFBEABAEABF BBABAFBEFBEFBEFBEFBEFBEFBEFAAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEFABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Length: 48 # 00000003 00000003 00000003 00000003 00000003 00000003 00000003 00000003 00000003 00000003 00000003 00000003 # # Title: ? # Length: # 00000000000007E01FF81C38381C381C381C381C1C381FF807E0000000000000 00000000000003801F801F80038003800380038003803FF83FF8000000000000 0000000000000FE03FF03838003800F003E00F803E383FF83FF8000000000000 0000000000000FE03FF03838003803F003F0003838383FF00FE0000000000000 00000000000003E007E00EE01CE038E07FF87FF800E007F807F8000000000000 0000000000003FF83FF838003FE03FF00078003878783FF00FC0000000000000 00000000000007F01FF03C003BC07FF07C7878383C783FF00FC0000000000000 0000000000003FF83FF8007000F000E001E001C003C003800780000000000000 00000000000007E01FF81C381C380FF01FF8381C381C1FF807E0000000000000 00000000000007E01FF83C78383C3C7C1FFC07B800781FF01FC0000000000000 0000000000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 0000000000007FF87FFE1C0E1C0E1FF81FFE1C0E1C0E7FFE7FF8000000000000 00000000000007F61FFE3C0E78067000700078003C0E1FFE07F0000000000000 0000000000007FE07FF81C3C1C1E1C0E1C0E1C1E1C3C7FF87FE0000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C001C007F807F80000000000000 00000000000007F61FFE3C0E78007000703F783F3C0E1FFE07F0000000000000 0000000000007E7E7E7E1C381C381FF81FF81C381C387E7E7E7E000000000000 0000000000003FF83FF80380038003800380038003803FF83FF8000000000000 00000000000007FE07FE0070007000707070707078F03FE01FC0000000000000 0000000000007EFC7EFC1C701CE01FC01FE01DF01C7C7F3E7F3E000000000000 0000000000007FC07FC00E000E000E000E000E060E067FFE7FFE000000000000 000000000000F83EFC7E7C7C7EFC77DC77DC739C739CF93EF83E000000000000 000000000000F8FEFCFE3E383F383FB83BF839F838F8FE78FE38000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0000000000007FF07FF81C3C1C1C1C3C1FF81FF01C007F007F00000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE01FFE1CFC0000 0000000000007FF07FFC1C3C1C3C1FF81FF01CF01C787F3E7F1E000000000000 0000000000001FEC7FFC701C70007FF01FFC001C701C7FFC6FF0000000000000 0000000000007FFC7FFC739C739C03800380038003803FF83FF8000000000000 0000000000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 000000000000FEFEFEFE38381C701C700EE00EE007C007C00380000000000000 000000000000FC3FFC3F718E718E3BDC3BDC3FFC1E781C381C38000000000000 0000000000007F7E7F7E1E380FF007C003E00FF01C787EFE7EFE000000000000 0000000000007EFC7EFC1C700EE007C007C0038003801FF01FF0000000000000 0000000000003FFC3FFC38F839F003E007C00F9C1F1C3FFC3FFC000000000000 000000000000000000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000000F800F8003BF03FFC3C1E380E380E3C1EFFFCFBF0000000000000 000000000000000000000FDC3FFC783C70007000781C3FFC0FF0000000000000 000000000000007C007C0FDC3FFC783C701C701C783C3FFF0FDF000000000000 000000000000000000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 00000000000001FC07FC07003FF03FF00700070007003FF03FF0000000000000 000000000000000000000FDF3FFF783C701C701C783C3FFC0FDC001C3FF81FF0 000000000000F800F8003BF03FF83C38383838383838FEFEFEFE000000000000 000000000380038000001F801F8003800380038003803FF83FF8000000000000 0000000000E000E000003FE03FE000E000E000E000E000E000E001E03FC03F80 0000000000007C007C001CF81CF81DE01F801FC01FF07CFC7C7C000000000000 0000000000001F801F800380038003800380038003803FF83FF8000000000000 00000000000000000000EF78FFFC739C739C739C739CFBDEFBDE000000000000 00000000000000000000FBF0FFF83C38383838383838FEFEFEFE000000000000 000000000000000000000FF03FFC781E700E700E781E3FFC0FF0000000000000 00000000000000000000FBF0FFFC3C1E380E380E3C1E3FFC3BF03800FF00FF00 000000000000000000001FBE7FFEF078E038E038F0787FF81FB8003801FE01FE 000000000000000000003EF83FFE0F1E0E000E000E007FF07FF0000000000000 000000000000000000001FB07FF070307FC01FF060707FF06FC0000000000000 0000000000001C001C00FFF0FFF01C001C001C001C1C1FFC07F0000000000000 00000000000000000000F8F8F8F838383838383838783FFE0FBE000000000000 00000000000000007E7E7E7E1C381E780E7007E007E003C003C0000000000000 00000000000000000000F83EF93E739C7BBC3FF83EF81C701C70000000000000 000000000000000000007EFC7EFC1E700FC007E01CF07EFC7EFC000000000000 000000000000000000007E7E7E7E1C380E700FE007C00380038007003FC03FC0 000000000000000000003FF83FF831F003C007801F183FF83FF8000000000000 00000000000003C003C003C003C003C001800180000003C003C0000000000000 000000000000000000000000000000000000000003C003C003C0000000000000 0000000000000FF01FF81C38003800F007C00700000007800780000000000000 000000000000001C0038007000E001C0038007000E001C003800000000000000 0000000000000000000003C003C003C00000000003C003C003C0000000000000 00000000000007C00FE00E600F00079C1FD839F838F03FFC0FBC000000000000 # 00001FF81FF8180018001FF81FF800007FFE7FFE1800180018001FF81FF80000 00001E0C3F0C618C618C3F0C1E0C0FFC0FFC000C1FFC1FFC18001FFC1FFC0000 00000C180C180C180C180E1E1E1E331861D860D800003FF83FF8001800180000 000000367FB67FB60C360C360CF60CF61E361E363336333661B661B600060000 00003FFC3FFC300C300C300C300C3FFC3FFC01800180018001807FFE7FFE0000 000000063FE63FE60066006600663FE63FE63006300630363FF63FC600060000 000000003FFC3FFC0000181818181C380C303FFC3FFC018001807FFE7FFE0000 00007F667F666366637E637E7F667F6600060186018003C00E707C3E700E0000 00003E303E3000307FB07FB0003E1E3E3F3061B061B061B061B03F301E300000 0000000C7FEC7FEC060C060C060C0F0C0D8C1D8C18CC38CC706C606C000C0000 00001F863FC6606660663FC61F8600067FE67FE60606067E067E060606060000 00007FE67FE606060F061D8638E630660C060FFE0FFE0C060C060FFE0FFE0000 000000187F987F9860186018601E601E6018601861D87FD87E18001800180000 00000FF01FF8300C300C1FF80FF07FFE7FFE00181FF81FF818001FF81FF80000 000000303FB03FB001B001B0033E033E063006300C3038303030003000300000 000000667F667F660C660C660C7E1E7E1E663366336673E661E6006600660000 00003FE63FE630063006300630063FE63FE60306030603067FF67FF600060000 000000003FFC3FFC000C000C000C030C03180318031803007FFC7FFC00000000 000000361C363E36633663366336637663766336633663363E361C3600000000 00001E0C3F0C618C618C618C3F0C1E0C00300C300C301E7836FC73CE63060000 00001800180018001FF81FF8000000007FFE7FFE1800180018001FF81FF80000 00003FFC3FFC3000300030003FFC3FFC00007FFE7FFE01800180018001800000 0000061806180618071E0F9E19D870D860180FE01FF0301830181FF00FE00000 0000000C1F0C3F8C60CC60CC60CC3F8C1F0C000C000C7FEC7FEC000C000C0000 00007F307F30633E633E7F307F3000003FF83FF8018003C006603E7C381C0000 00000180018007E03E7C381C00007FFE7FFE18181FF81FF818181FF81FF80000 0000001800187BD87BD818D818D818DE30DE3198619863180E180C1800180000 00007F987F980C1E0E1E1E181B18719860C01FF81FF8181818181FF81FF80000 00001FF81FF80018001800307FFE7FFE00001FFC1FFC180C180C1FFC1FFC0000 000000367E367E3666366636663666F666F66636663666367E367E3600060000 00001800180018001FF81FF8000000007FFE7FFE0C300C300C300C300C300000 00001F863FC630C67FE67FE606061FFE1FFE00061FFE1FFE18001FFE1FFE0000 000000301C303E3063306330633E633E63306330633063303E301C3000300000 0000000C300C300C300C300C300C300C300C30EC3FEC3F8C000C000C000C0000 000000001FF03FF8701C600C701C3FF81FF00000018001803FFC3FFC00000000 00003F183F1800187FD87FD83F1E619E7F983F180C187FF87FF8001800180000 00003F067F8661866186618661867F863F0600060C060C060C000FFE0FFE0000 000007E01FF8381C300C1FF80FF00C307FFE7FFE1818300C381C1FF807E00000 00007F067F060C3E0C3E1E067306618607F01FFC380E3006380E1FFC07F00000 000000307FB07FB001B001B07FB07F3E033E0330063006300C30783070300000 00001800180018001800180018001FF81FF80180018001807FFC7FFC00000000 00007FFE7FFE018007E03E7C381C7FFE7FFE00067FFE7FFE60007FFE7FFE0000 000000003FF83FF83000300030003FF83FF80180018001807FFC7FFC00000000 000060186018601E7F9E7F9800183FF83FF800383FF83FF830003FF83FF80000 000000187BD87BD83198319831983B9E6EDE66D866D80C780C78001800180000 00007F0C7F0C630C630C7F0C7FEC0FEC00007FFC7FFC07C01C70783C701C0000 000000307F307F300330063E063E1C30783060300C300C000C000FF80FF80000 00001F181F1800187FD87FD800181F1E3FDE60D860D83F981F187FD87FD80000 00007F067F7E637E63066306637E7F7E7F0600061806180618001FF81FF80000 00007F067F3E633E630663067F3E7F3E00061FF63FF8600C600C3FF81FF00000 00001E303F3061B061BE61BE3F301E3000303FF83FF8301830183FF83FF80000 00007FFE7FFE0180018003C007E00E701C38781E6186018001807FFE7FFE0000 00007F867F860C3E3F3E738661867FFE7FFE00067FFE7FFE60007FFE7FFE0000 00000180018007E01E78781E60067FFE7FFE000C3FFC3FFC30003FFC3FFC0000 000000307F307F300330033003307F3E7F3E6030603063B07FB07E3000300000 000000060F061F8639C630C630C630C630C630C630C639C61F860F0600060000 000000003FF83FF83000300030003FF83FF80000000000007FFE7FFE00000000 000001800180018003C006600E707C3E700E00000C300C300C307FFE7FFE0000 000006060606070607060D860D860D8618C618C6306670766036000600060000 00007F307F306330633E633E7F307F30003018301800180018001FF81FF80000 00003E363E3600367FB67FB600361E3E3F3E61B661B661B661B63F361E360000 00007F987F980C180C180E1E1E1E331861D860D800003FF83FF8001800180000 00000FE01FF03018301830181FF00FE000007FFE7FFE300030003FF03FF00000 00000C300C300C300C300C300C301E3E1E3E1E303330333061B061B000300000 0000000C7FCC7FCC060C060C0F0C198C39CC30CC000C180C18001FFC1FFC0000 0000300C300C3FFC3FFC300C300C3FFC3FFC0000018001807FFE7FFE00000000 0000000C000C3FEC3FEC006C006C00CC00CC018C038C0F0C3C0C300C000C0000 00006006603E603E6006603E63BE7F867C0600061806180618001FF81FF80000 000000361C363E3663766376633663366336637663763E361C36003600360000 0000018007E01E78381C7FFE00001FF81FF800181FF81FF818001FF81FF80000 000007E000007FFE018007E03E7C381C7FFE01803FFC000C3FFC30003FFC0000 00000C0C0C0C3F3C3F3C738C618C7FFC7FFC000C1FFC1FFC18001FFC1FFC0000 00000FF01FF8300C300C300C1FF80FF000007FFE7FFE0C300C300C300C300000 00001F0C1F0C000C7FCC1F0C318C7FFC7FFC000C1FFC1FFC18001FFC1FFC0000 00003F9800181B1E1B1E3F9800183FF83FF800383FF83FF830003FF83FF80000 00001FF81FF80018001800307FFE7FFE01800180018001800180018001800000 00001E303F3061B061BE61BE3F301E30003030003000300030003FFC3FFC0000 00001E063F06618661BE61BE3F061E0600066318633C633C63247F667F660000 00000FF01FF8300C300C1FF80FF000007FFE00003FFC3FFC300C3FFC3FFC0000 00001FF81FF807E00E700C307FFE7FFE01800FF01FF8300C300C1FF80FF00000 000000060F061F8639C630C630C630FE30FE30C630C639C61F860F0600060000 00007F867F860C061E3E1E3E73866186618600003000300030003FFC3FFC0000 00007DF67DF6186638E630C679E67DF66DB600007FFE7FFE0006000600060000 000000001FF03FF8701C600C701C3FF81FF00C600C600C607FFC7FFC00000000 000060D87FD87FDE60DE7FD87FD800007FFE7FFE00C67FC660067FC67FC60000 000000303030303030303030303C303C303033B03FB03E300030003000300000 000000180F181F9839D830D830DE30DE30D830D830D839D81F980F1800180000 00001FF83FFC300C3FFC1FF800007FFE01801FF800181FF818001FF81FF80000 00000F0C0F0C000C7FEC7FEC198C30CC30CC000C7FEC7FEC060C060C060C0000 000001800180018003C006600E707C3E700E01800180018001807FFE7FFE0000 0000000C3F8C3F8C018C01BC033C030C060C063C0C3C380C300C000C000C0000 00007E367E3606F60EF61C36783660000C0C1C1C181830303C3C6E6E66660000 00003FFC3FFC07E00E701C3800007FFE7FFE01801FF81FF818181FF81FF80000 00001E0C3F0C618C618C3F0C1E0C0FFC0FFC000C1FFC1FFC18001FFC1FFC0000 00006330633063307F3E7F3E633063307F307F300000180018001FF81FF80000 # # Text: / # 2F 00 # # Text: : # 3A 00 # # Text: am # 61 6D 00 # # Text: pm # 70 6D 00 # # Text: No pictures in camera. # A7 9D B6 92 BF C0 B7 CD CE 00 # # Text: Yes # C4 00 # # Text: No # A0 A1 A2 00 # # Text: . # 2E 00 # # Text: # 00 # # Text: # 00 # # Text: Lock? # 9B 9C 3F 00 # # Text: Unlock? # 9B 9C BC 83 3F 00 # # Text: Erase? # 82 83 3F 00 # # Text: View Small Photos? # BD BE BF C0 C1 C2 3F 00 # # Text: View Full screen? # 00 # # Text: Set Screen Brightness? # A3 B0 D4 C2 B3 B4 3F 00 # # Text: Start Slide Show? # C5 B6 B7 B8 B9 BA BD 3F 00 # # Text: Stop Slide Show? # 00 # # Text: Set Camera Exposure? # A7 9D B6 A8 C6 B3 B4 3F 00 # # Text: Format Memory Card? # 9D 84 85 A7 B8 86 87 3F 00 # # Text: Set Date & Time? # AB AC AD BA AE C7 A6 3F 00 # # Text: Set for NTSC TV? # 4E 54 53 43 0A 54 56 A5 20 C7 A6 00 # # Text: Set for PAL TV? # 50 41 4C 0A 54 56 A5 20 C7 A6 00 # # Text: Review Pictures? # BF C0 C1 C2 3F 00 # # Text: Take Pictures? # BF C0 D2 C2 3F 00 # # Text: # 00 # # Text: One # 88 D5 0A 20 20 20 20 20 00 # # Text: None # D6 A1 A2 0A 20 20 20 20 20 00 # # Text: All # 84 95 0A 20 20 20 20 20 00 # # Text: # 00 # # Text: ERASE? # 82 83 3F 00 # # Text: Erase This Picture? # B7 BF C0 8D 89 D7 9A D3 3F 00 # # Text: Cancel Picture Erase? # BF C0 82 83 D8 D9 3F 00 # # Text: Erase All Pictures? # 84 80 BF C0 8D 82 83 3F 00 # # Text: Erasing picture... # BF C0 82 83 CF 00 # # Text: Picture is LOCKED Unlock before erasing # BF C0 B7 9B DA 93 CE 0A 82 83 D1 9B 9C BC 83 00 # # Text: Erase ALL pictures? # 84 80 BF C0 8D 82 83 3F 00 # # Text: Erasing ALL pictures... # 84 80 BF C0 82 83 CF 00 # # Text: Normal? # DD DE 3F 00 # # Text: Zoom? # DC 3F 00 # # Text: Set Screen Brightness # 0A A3 B0 D4 C2 B3 B4 00 # # Text: Set Camera Exposure # 0A A7 9D B6 A8 C6 B3 B4 00 # # Text: Formatting resets the memory card and erases all photos on it. Format? # 86 87 8D AF B0 0A 9D 84 85 A7 B8 8E 8F B4 A6 90 91 0A 9D 84 85 A7 B8 92 93 94 BF C0 B7 0A 84 95 89 8A 8B A1 8C 0A 0A 86 87 88 DB 99 A1 9A 3F 00 # # Text: Formatting the memory card..... # 9D 84 85 A7 B8 86 87 CF 00 # # Text: Set for PAL TV? # 50 41 4C 0A 54 56 A5 20 C7 A6 00 # # Text: Set for NTSC TV? # 4E 54 53 43 0A 54 56 A5 20 C7 A6 00 # # Text: # 00 # # Text: This pict # B7 BF C0 BB 00 # # Text: No # A0 A1 A2 00 # # Text: ALL pict # 84 80 BF C0 00 # # Text: January # 20 31 9F 00 # # Text: February # 20 32 9F 00 # # Text: March # 20 33 9F 00 # # Text: April # 20 34 9F 00 # # Text: May # 20 35 9F 00 # # Text: June # 20 36 9F 00 # # Text: July # 20 37 9F 00 # # Text: August # 20 38 9F 00 # # Text: September # 20 39 9F 00 # # Text: October # 31 30 9F 00 # # Text: November # 31 31 9F 00 # # Text: December # 31 32 9F 00 # # Text: Day # 20 20 81 00 # # Text: Month # 20 20 9F 00 # # Text: Year # 20 20 C3 00 # # Text: Time # 20 20 BA AE 00 # # Text: AM # 41 4D 00 # # Text: PM # 50 4D 00 # # Text: Set Date and Time # 20 20 20 20 20 AB AC AD BA AE C7 A6 00 # # Text: Is this correct? # 98 99 A1 9A 3F 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: Service Menu # 20 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 20 20 00 # # Text: P # 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: S # 53 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service ID # 53 65 72 76 69 63 65 20 49 44 20 20 20 20 20 20 20 00 # # Text: Ver # 56 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service Menu 2 # 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 32 20 20 00 # # Text: Reset Pictures # 52 65 73 65 74 20 50 69 63 74 75 72 65 73 20 20 20 00 # # Text: Reset Strobe Pict # 52 65 73 65 74 20 53 74 72 6F 62 65 20 50 69 63 74 00 # # Text: Reset Born OnDate # 52 65 73 65 74 20 42 6F 72 6E 20 4F 6E 44 61 74 65 00 # # Text: Reset FactoryDflt # 52 65 73 65 74 20 46 61 63 74 6F 72 79 44 66 6C 74 00 # # Text: Are You Sure? # 41 72 65 20 59 6F 75 20 53 75 72 65 3F 00 # # Text: Reset to 0 # 52 65 73 65 74 20 74 6F 20 30 00 # # Text: S . # 53 20 20 2E 20 20 00 # # Text: M . # 4D 20 20 2E 20 20 00 # # Text: Yes # 59 65 73 00 # # Text: No # 4E 6F 00 # # Text: # 00 # # Text: BornOnDate # 42 6F 72 6E 4F 6E 44 61 74 65 20 20 20 20 20 20 20 00 # # Text: FinalErrCode # 46 69 6E 61 6C 45 72 72 43 6F 64 65 20 20 20 20 20 00 # # Text: ResetFinalErrCode # 52 65 73 65 74 46 69 6E 61 6C 45 72 72 43 6F 64 65 00 libgphoto2-2.5.9/camlibs/konica/localization/Makefile.am0000644000175000001440000000023712557123324020125 00000000000000localizationdir = $(datadir)/$(PACKAGE)/$(VERSION)/konica localization_DATA = english french german japanese korean spanish EXTRA_DIST = $(localization_DATA) libgphoto2-2.5.9/camlibs/konica/localization/spanish0000644000175000001440000035456212557123324017476 00000000000000################################################################################ # LOCALIZATION FOR HP PhotoSmart C30 # # ---------------------------------- # # This file (except the comments) will be sent to the camera (0x9200 command). # # In order to make the data readable for humans, I commented the data and # # formatted to some extend. # # # # SYMBOLS # # ------- # # Each symbol begins with a red pixel in the upper left corner, followed by a # # yellow one, then by a blue one. The headline "red" does simply indicate that # # those are lines beginning with a red pixel. The same with headline "yellow" # # and headline "blue". The brightness of each pixel is defined by a value # # ranging between A (dark) and F (bright). # ################################################################################ # # Variable: KC_LOCALIZE_CARDREV # Value: 0x00 0x02 # Length: 32 # 4B 43 5F 4C 4F 43 41 4C 49 5A 45 5F 43 41 52 44 52 45 56 3A 00 02 FF FF FF FF FF FF FF FF FF FF # # Variable: LOCALIZATION # Length: 16 # 4C 4F 43 41 4C 49 5A 41 54 49 4F 4E FF FF FF FF # # Variable: LNG # Value: 0x02 # Length: 5 # Explanation: Indicator for language. Known values are: # - 0x00: English # - 0x01: French # - 0x02: Spanish # - 0x04: German # - 0x05: Japanese # - 0x06: Korean # 4C 4E 47 3A 02 # # Variable: TV # Value: 0x01 # Length: 4 # Explanation: Format of TV output. Accepted values are: # - 0x00: NTSC # - 0x01: PAL # - 0x02: Do not display TV menu. # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the format of the TV output. # 54 56 3A 01 # # Variable: DT # Value: 0x01 # Length: 7 # Explanation: Date format. Accepted values are: # - 0x00: Month/Day/Year # - 0x01: Day/Month/Year # - 0x02: Year/Month/Day # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the date format. # 44 54 3A 01 FF FF FF # # Variable: DST # Value: 0x00 0x86 0x00 0x00 # Length: 16 # 44 53 54 3A 00 86 00 00 FF FF FF FF FF FF FF FF # # Variable: SIZ # Value: 0x00 0x01 0x00 0x00 # Length: 16 # 53 49 5A 3A 00 01 00 00 FF FF FF FF FF FF FF FF # # Variable: SUM: # Value: 0x8C # Length: 8 # Explanation: Sum of all bytes starting with the table of contents. The camera # won't check this number. # 53 55 4D 3A 8C FF FF FF # # Variable: CRC # Value: 0x78 0xF5 # Length: 8 # Explanation: FCS (frame check sequence) of CRC (cyclic redundancy check). The # camera will check this number. # 43 52 43 3A 78 F5 FF FF # # Table of Contents (text entries only) # # One entry: 00 FE XX XX (XX XX is the memory address). # 00 FE C8 C0 00 FE C8 C2 00 FE C8 C4 00 FE C8 C7 00 FE C8 CA 00 FE C8 E2 00 FE C8 E5 00 FE C8 E8 00 FE C8 EA 00 FE C8 EB 00 FE C8 EC 00 FE C8 F7 00 FE C9 04 00 FE C9 0D 00 FE C9 22 00 FE C9 23 00 FE C9 46 00 FE C9 70 00 FE C9 71 00 FE C9 93 00 FE C9 B5 00 FE C9 CC 00 FE C9 E3 00 FE C9 F9 00 FE CA 05 00 FE CA 12 00 FE CA 13 00 FE CA 1D 00 FE CA 28 00 FE CA 33 00 FE CA 34 00 FE CA 3D 00 FE CA 50 00 FE CA 63 00 FE CA 7C 00 FE CA 8D 00 FE CA BE 00 FE CA D7 00 FE CA F3 00 FE CA FC 00 FE CB 03 00 FE CB 24 00 FE CB 45 00 FE CB A1 00 FE CB C6 00 FE CB DC 00 FE CB F3 00 FE CB F4 00 FE CC 00 00 FE CC 03 00 FE CC 16 00 FE CC 1C 00 FE CC 24 00 FE CC 2A 00 FE CC 30 00 FE CC 35 00 FE CC 3B 00 FE CC 41 00 FE CC 48 00 FE CC 53 00 FE CC 5B 00 FE CC 65 00 FE CC 6F 00 FE CC 73 00 FE CC 77 00 FE CC 7B 00 FE CC 80 00 FE CC 83 00 FE CC 86 00 FE CC 95 00 FE CC A4 00 FE CC A5 00 FE CC A6 00 FE CC A7 00 FE CC A8 00 FE CC A9 00 FE CC AA 00 FE CC AB 00 FE CC AC 00 FE CC AD 00 FE CC AE 00 FE CC C0 00 FE CC D2 00 FE CC E4 00 FE CC F6 00 FE CD 08 00 FE CD 1A 00 FE CD 2C 00 FE CD 3E 00 FE CD 50 00 FE CD 62 00 FE CD 70 00 FE CD 7B 00 FE CD 82 00 FE CD 89 00 FE CD 8D 00 FE CD 90 00 FE CD 91 00 FE CD A3 00 FE CD B5 # # Title: Take Pictures # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAABAEBAAAAAAAEBAEBAEBAEBAEBF BBAEAAABAABAEAAABAEBEEBAEBAEBAEE FEBAABAAAAEAAEAAEBAFAEEBAEBAEBAB EAEAAEAAEBAABAABAEBEBAAEBAEBAEBF BBAEBAEBAABAEBAEBAFAEBBAEBAEBAEE FEBAABAAAAEAAEAAEBEBAEBBAEBAEBAB EAEAAEAAEBAABAABAFAEBAEABAEBAEBF BBAEAAABAABAEBAEBEBAEBAEEBAEBAEE FEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAB EAEBAABAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAAABFFFFFFFFFFAFFEBFFFFFFFEAABF BBAAFFFFFFFFFFFAFFEBFFFFFFFFEAEE FEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAB EAABAEBAEFBEFBEFAAABEFBEEAAABEBF BAAEBAEBBEFBEFBAAAAABEFBEAAABAAE FEBAEBAEFBEFBEEAAAAABBEFAAAAAEAB EAABAEBAEFBEFBAABFFAAFBEEAAABEBF BAAEBAEBBEFBEEABFFFEAAFBEAAABAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAAFFFFFEABEFBEFBEBF BAAEBAEBBEFBEABFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBABFFFFFEAEFBEFBEEAB EAABAEBAEFBEFABFFFFFEABEFBEFBEBF BAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAABFFFEABBEFBEFBEBF BAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAE FEBAEBAEFBEFBEEAAAAABBEFBEFBEEAB EAABAEBAEFBEFBEAAAAAEFBEFBEFBEBF BAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Take Pictures # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAABAEBAAAAAAAEBAEBAEBAEBAEBA ABAEAAABAABAEAAABAEBEEBAEBAEBAEA AEBAABAAAAEAAEAAEBAFAEEBAEBAEBAA AAEAAEAAEBAABAABAEBEBAAEBAEBAEBA ABAEBAEBAABAEBAEBAFAEBBAEBAEBAEA AEBAABAAAAEAAEAAEBEBAEBBAEBAEBAA AAEAAEAAEBAABAABAFAEBAEABAEBAEBA ABAEAAABAABAEBAEBEBAEBAEEBAEBAEA AEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAA AAEBAABAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAAABFFFFFFFFFFAFFEBFFFFFFFEAABA ABAAFFFFFFFFFFFAFFEBFFFFFFFFEAEA AEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA AAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAA AAABAEBAEFBEFBEFAAABEFBEEAAABEBA AAAEBAEBBEFBEFBAAAAABEFBEAAABAAA AEBAEBAEFBEFBEEAAAAABBEFAAAAAEAA AAABAEBAEFBEFBAABFFAAFBEEAAABEBA AAAEBAEBBEFBEEABFFFEAAFBEAAABAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAAFFFFFEABEFBEFBEBA AAAEBAEBBEFBEABFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBABFFFFFEAEFBEFBEEAA AAABAEBAEFBEFABFFFFFEABEFBEFBEBA AAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAABFFFEABBEFBEFBEBA AAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAA AEBAEBAEFBEFBEEAAAAABBEFBEFBEEAA AAABAEBAEFBEFBEAAAAAEFBEFBEFBEBA AAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBEBAEBAEEBAEBAEE FEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAB EAEBAEBAEAAABAABAEAEBAEEBAEBAEBF BBAEBAEBAABAABAEBAFAEBBAEBAEBAEE FEBAEBAEBAEAAEAAEBABAEEBAEBAEBAB EAEBAEBAEAAAAAABAEBABBAEBAEBAEBF BBAEBAEBAABAEAAEBAEBEEBAEBAEBAEE FEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAB EAEBAEBAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAE FEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAB EABFFFFFFFFFFFFAFFEBFFFFFFFFFEBF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BABEFBEFBEFBEFBEFBEFBEFBEFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEEAEFBAAAAAAAAAAAAAABEABEBF BABEFBAABEFAEBAEBAEBAEBAAFAABAAE FEBBEFAABBEAAEBAEBAEBAEBAEAAAEAB EAAFBEAAAFBABAEBAEBAEBAEABAABEBF BABEFBEABEFAEBAEBAEBAEBAAFAAFAAE FEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEFBEABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAABBEAAEBAEBAEBAEBAEFBEEAB EAAFBEAAAFBABAEBAEBAEBAEABEFBEBF BABEFBAABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAEBAEBAEBAEBAAFBEFAAE FEBBAABEAAEAAEBAEBAEBAEBAEFBEEAB EAAFAAFBAABABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAAAAAAAAAAAAAAFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBEBAEBAEEBAEBAEA AEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAA AAEBAEBAEAAABAABAEAEBAEEBAEBAEBA ABAEBAEBAABAABAEBAFAEBBAEBAEBAEA AEBAEBAEBAEAAEAAEBABAEEBAEBAEBAA AAEBAEBAEAAAAAABAEBABBAEBAEBAEBA ABAEBAEBAABAEAAEBAEBEEBAEBAEBAEA AEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAA AAEBAEBAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AABFFFFFFFFFFFFAFFEBFFFFFFFFFEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA AABEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEEAEFBAAAAAAAAAAAAAABEABEBA AABEFBAABEFAEBAEBAEBAEBAAFAABAAA AEBBEFAABBEAAEBAEBAEBAEBAEAAAEAA AAAFBEAAAFBABAEBAEBAEBAEABAABEBA AABEFBEABEFAEBAEBAEBAEBAAFAAFAAA AEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEFBEABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAABBEAAEBAEBAEBAEBAEFBEEAA AAAFBEAAAFBABAEBAEBAEBAEABEFBEBA AABEFBAABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAEBAEBAEBAEBAAFBEFAAA AEBBAABEAAEAAEBAEBAEBAEBAEFBEEAA AAAFAAFBAABABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAAAAAAAAAAAAAAFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: View Small Photos # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABAAAAAAAABAAAAAAAAEAAAAAAAAEBF BBFAAEBABAAFABEFBEFAAAEFBAEBAAEE FEEABAEBEBAEAFBEFBEABABEFBAEABAB EABAEBABAEABAFFFEFBAEAFBEEBAAEBF BBFAAEBEBAAFABFFBEFAAAEFBAEBAAEE FEEABABAEBAEAFFEFBAABABEFBAEABAB EABAEBEBAEABAEFBEFBAEAFBEFBAAEBF BBFAABAEBAAFABEFBAEAAAFBBEFBAAEE FEEABEBAEBAEAFBEFBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEAAEAEBF BBFAEBAEBAAFABEFBAEAAAFBBAABAAEE FEEAAEBAEBAEAFBAEBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEFBEAEBF BBFAAAAAAAAFAAAAAAAAAAAAAAAAAAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAABAEFBEAAABEFBEBAAAEBAEBAAAEE FEBAEBAEFBABAFBEFAEABAAEBAEBABAB EAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBF BBAABAEFBEAAABEFBEBAAABBAEBAAAEE FEBAFBEEFBABAFBEFAEABAFBBAEBABAB EAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBF BBAABEFFBEAAAAEBBEFAAABEFEBAAAEE FEBAFBEEFBABABAEFBEABAFBEAEBABAB EAEABAEBEFAEAEBAEFBAEAEFBBAEAEBF BBAAEBAFBEAAAAEBBEFAAABEFEBAAAEE FEBAAEBEFBABABAEFBEABAFBEFEBABAB EAEABAEBEFAEAEBAEFBAEAEFBEAEAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAAEFBEFAAAAABEFBEAAABEFBEBAAEE FEBABFFBEBABABFBEFBABAFBEFAEABAB EAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBF BBAAEFBEBBAAAABEFFEAAABEFBEBAAEE FEBABEBAEFABABFBEFBABAFBBEAEABAB EAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABAFBBEAEABAB EAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABABAEBAEABAB EAEAAEBABEAEAAEBBAEAEAEBAEBAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: View Small Photos # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABAAAAAAAABAAAAAAAAEAAAAAAAAEBA ABFAAEBABAAFABEFBEFAAAEFBAEBAAEA AEEABAEBEBAEAFBEFBEABABEFBAEABAA AABAEBABAEABAFFFEFBAEAFBEEBAAEBA ABFAAEBEBAAFABFFBEFAAAEFBAEBAAEA AEEABABAEBAEAFFEFBAABABEFBAEABAA AABAEBEBAEABAEFBEFBAEAFBEFBAAEBA ABFAABAEBAAFABEFBAEAAAFBBEFBAAEA AEEABEBAEBAEAFBEFBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEAAEAEBA ABFAEBAEBAAFABEFBAEAAAFBBAABAAEA AEEAAEBAEBAEAFBAEBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEFBEAEBA ABFAAAAAAAAFAAAAAAAAAAAAAAAAAAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAABAEFBEAAABEFBEBAAAEBAEBAAAEA AEBAEBAEFBABAFBEFAEABAAEBAEBABAA AAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBA ABAABAEFBEAAABEFBEBAAABBAEBAAAEA AEBAFBEEFBABAFBEFAEABAFBBAEBABAA AAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBA ABAABEFFBEAAAAEBBEFAAABEFEBAAAEA AEBAFBEEFBABABAEFBEABAFBEAEBABAA AAEABAEBEFAEAEBAEFBAEAEFBBAEAEBA ABAAEBAFBEAAAAEBBEFAAABEFEBAAAEA AEBAAEBEFBABABAEFBEABAFBEFEBABAA AAEABAEBEFAEAEBAEFBAEAEFBEAEAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAAEFBEFAAAAABEFBEAAABEFBEBAAEA AEBABFFBEBABABFBEFBABAFBEFAEABAA AAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBA ABAAEFBEBBAAAABEFFEAAABEFBEBAAEA AEBABEBAEFABABFBEFBABAFBBEAEABAA AAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABAFBBEAEABAA AAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABABAEBAEABAA AAEAAEBABEAEAAEBBAEAEAEBAEBAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Screen Brightness # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBABBAEBAEBAEBAEBAB EAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAEAEEBABBAFAEBAEEBAABAEAAEBAB EAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABAAEAEBAEBAEBAEEAEBBAEBAB EAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAB EAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEABAEBAB EAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBF BBAEAEFAEBEFBEFFFFBEFBEEBAABBAEE FEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAB EAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAB EABAEBAEBEFBEFFFFFFFBEFBEEBAEBBF BAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAE FEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAB EAEBABAEBEFBEFFFFFFFBEFBEEBAAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAAAEBEFBEFBFFFFFBEFBEEBAABBAB EAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBF BBAEBAFAEBEFBEFFFFBEFBEEBAAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEBBAEBAB EAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAEBEFBEFBEFBEFBAEBBAEBAB EAEBAFAABAEBEFBEFBEFBEEBBABBAEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAEBABAEBAEBEFBEFBAEBAEABAEBAB EAEBAEAEBBABAEBAEBAEBBAFAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABBABBABAEBAEBBEABABBAEBAB EAEBAFBAEBEEBABAEBAAEAEEBABBAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAEBAEBABBAFBABBAEBAABAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Screen Brightness # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBABBAEBAEBAEBAEBAA AAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAEAEEBABBAFAEBAEEBAABAEAAEBAA AAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABAAEAEBAEBAEBAEEAEBBAEBAA AAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAA AAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEABAEBAA AAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBA ABAEAEFAEBEFBEFFFFBEFBEEBAABBAEA AEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAA AAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAA AABAEBAEBEFBEFFFFFFFBEFBEEBAEBBA AAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAA AEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAA AAEBABAEBEFBEFFFFFFFBEFBEEBAAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAAAEBEFBEFBFFFFFBEFBEEBAABBAA AAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBA ABAEBAFAEBEFBEFFFFBEFBEEBAAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEBBAEBAA AAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAEBEFBEFBEFBEFBAEBBAEBAA AAEBAFAABAEBEFBEFBEFBEEBBABBAEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAEBABAEBAEBEFBEFBAEBAEABAEBAA AAEBAEAEBBABAEBAEBAEBBAFAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABBABBABAEBAEBBEABABBAEBAA AAEBAFBAEBEEBABAEBAAEAEEBABBAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAEBAEBABBAFBABBAEBAABAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Date & Time # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEABAFBEFAEFBAFBEFBAFBEFBABF BBAEFBAFAEFBEABEEBEFBEFAEFBEFAEE FEABEFAEABEFBAFBAFBEFBEABEFBEAAB EAAFBEABAFBEFAEEBEFBEFBAFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEABAFAEFBEFBAFBEFBEFBEFBAFAEE FEABAFAEABEFBEFAEFBEFBEFBEEBEAAB EAAFAEABAFBEFBEABEFBEFBEFBAFBABF BBAEABAFAEFBEFBAFBEFBEFBEEBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBAFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFAEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEABEFBEFBEFAAABABF BBAEAAAFBEFBEFBAFBEFBEFBEAAAFAEE FEABAFAEFBEFBEFAEFBEFBEFBEFAEAAB EAAFAEABEFBEFBEABEFBEFBEFBEABABF BBAEAAAFBAAAAAAAABEFBEFBEFAAFAEE FEABAAAEFAAAAAAAAFBEFBEFBEAAEAAB EAAFBEABEFBEFBEABEFBEFBEFBEABABF BBAEFBAFBEFBEFBAFBEFBEFBEFBAFAEE FEABEFAEFBEFBEFAEFBEFBEFBAAAEAAB EAAFBEABEFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEABAFAEE FEABAFAEFBEFBEFBEFBEFBEFBAFAEAAB EAAFAEABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEAAAFAEE FEABAAAEFBEFBEFBEFBEFBEFBAAAEAAB EAAFAEABEAAAFBEFAEFBEFAAFBEABABF BBAEABAFBAAAEFBEABEFBEAAEFBAFAEE FEABAAAEFBEABEFBAFBEFBAFBEFBEAAB EAAFAAABEFBAFBEFAEFBEFAEFBEFBABF BBAEFBEFBEFAEFBEAAAFBEAAAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAEABEFBEABEFBABF BBAEFBEFBEFAEFBEABAFBEFBAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAAABEFAAABEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Date & Time # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEABAFBEFAEFBAFBEFBAFBEFBABA ABAEFBAFAEFBEABEEBEFBEFAEFBEFAEA AEABEFAEABEFBAFBAFBEFBEABEFBEAAA AAAFBEABAFBEFAEEBEFBEFBAFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEABAFAEFBEFBAFBEFBEFBEFBAFAEA AEABAFAEABEFBEFAEFBEFBEFBEEBEAAA AAAFAEABAFBEFBEABEFBEFBEFBAFBABA ABAEABAFAEFBEFBAFBEFBEFBEEBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBAFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFAEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEABEFBEFBEFAAABABA ABAEAAAFBEFBEFBAFBEFBEFBEAAAFAEA AEABAFAEFBEFBEFAEFBEFBEFBEFAEAAA AAAFAEABEFBEFBEABEFBEFBEFBEABABA ABAEAAAFBAAAAAAAABEFBEFBEFAAFAEA AEABAAAEFAAAAAAAAFBEFBEFBEAAEAAA AAAFBEABEFBEFBEABEFBEFBEFBEABABA ABAEFBAFBEFBEFBAFBEFBEFBEFBAFAEA AEABEFAEFBEFBEFAEFBEFBEFBAAAEAAA AAAFBEABEFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEABAFAEA AEABAFAEFBEFBEFBEFBEFBEFBAFAEAAA AAAFAEABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEAAAFAEA AEABAAAEFBEFBEFBEFBEFBEFBAAAEAAA AAAFAEABEAAAFBEFAEFBEFAAFBEABABA ABAEABAFBAAAEFBEABEFBEAAEFBAFAEA AEABAAAEFBEABEFBAFBEFBAFBEFBEAAA AAAFAAABEFBAFBEFAEFBEFAEFBEFBABA ABAEFBEFBEFAEFBEAAAFBEAAAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAEABEFBEABEFBABA ABAEFBEFBEFAEFBEABAFBEFBAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAAABEFAAABEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Erase # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBBFFAABAEBAEBAEBAEE FEBAEBAEBAEBAABFEBAEBAEBAEBAEBAB EAEBAEBAAAAAAAAAAAAAAAAABAEBAEBF BBAEBAEAAAAAAAAAAAAAAAAAABAEBAEE FEBAEBAAABEEBEBAAFAAAAEAAABAEBAB EAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBF BBAEBAAAAAAAAAAAAAAAAAAAABAEBAEE FEBAEAAAAAAAAAAAAAAAAAAAAABAEBAB EAEBAABFFFFFABEFBEFBEBAABAEBAEBF BBAEABFFFFFEAFBEFBEFBEBAABAEBAEE FEBABFFFFFFEBEFBEFBEFAEAAEBAEBAB EAEBFFFFFFEAFBEFAEBBEBAABAEBAEBF BBABFFFFFFEBEBBEAAEFBEBAABAEBAEE FEBFFFFFFFAFAEFBABAEFAEAAEBAEBAB EABFFFFFFFAEBBEFAEBBEBAABAEBAEBF BBABFFFFFAFAEBBEAAEFBEBAABAEBAEE FEAABFFFFAEFAEFBABAEFAEAAEBAEBAB EAEABFFFAFBEBBEFAEBBEBAABAEBAEBF BBAEABFFAEFAEBBEAAEFBEBAABAEBAEE FEBAEBFAABEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAAAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEAAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBAAAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAAABEBAABAEBAEBF BBAEBAEAAEFBEFBEFBEFBEAAABAEBAEE FEBAEBAABBEFBEFBEFBEFAAAAEBAEBAB EAEBAEBAEFBEFBEFBEFBEAAABAEBAEBF BBAEBAEAAABAEBAEBAEBAAAAABAEBAEE FEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAB EAEBAEBAEAAAAAAAAAAAAAAABAEBAEBF BBAEBAEBAAAAAAAAAAAAAAAAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Erase # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBBFFAABAEBAEBAEBAEA AEBAEBAEBAEBAABFEBAEBAEBAEBAEBAA AAEBAEBAAAAAAAAAAAAAAAAABAEBAEBA ABAEBAEAAAAAAAAAAAAAAAAAABAEBAEA AEBAEBAAABEEBEBAAFAAAAEAAABAEBAA AAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBA ABAEBAAAAAAAAAAAAAAAAAAAABAEBAEA AEBAEAAAAAAAAAAAAAAAAAAAAABAEBAA AAEBAABFFFFFABEFBEFBEBAABAEBAEBA ABAEABFFFFFEAFBEFBEFBEBAABAEBAEA AEBABFFFFFFEBEFBEFBEFAEAAEBAEBAA AAEBFFFFFFEAFBEFAEBBEBAABAEBAEBA ABABFFFFFFEBEBBEAAEFBEBAABAEBAEA AEBFFFFFFFAFAEFBABAEFAEAAEBAEBAA AABFFFFFFFAEBBEFAEBBEBAABAEBAEBA ABABFFFFFAFAEBBEAAEFBEBAABAEBAEA AEAABFFFFAEFAEFBABAEFAEAAEBAEBAA AAEABFFFAFBEBBEFAEBBEBAABAEBAEBA ABAEABFFAEFAEBBEAAEFBEBAABAEBAEA AEBAEBFAABEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAAAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEAAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBAAAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAAABEBAABAEBAEBA ABAEBAEAAEFBEFBEFBEFBEAAABAEBAEA AEBAEBAABBEFBEFBEFBEFAAAAEBAEBAA AAEBAEBAEFBEFBEFBEFBEAAABAEBAEBA ABAEBAEAAABAEBAEBAEBAAAAABAEBAEA AEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAA AAEBAEBAEAAAAAAAAAAAAAAABAEBAEBA ABAEBAEBAAAAAAAAAAAAAAAAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Camera Exposure # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEAABFFFFFEAAEBAEBAEBAB EAEBAEBAEBAEABFFFFFEABAEBAEBAEBF BBAEBAEBAEABFFFFFFFFFEAAEBAEBAEE FEBAEBAEBAABFFFFFFFFFEABAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEBABFFFFFFFFFFFFFEABAEBAEE FEBAEBAEABFFFFFFFFFFFFFEAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBAEBFFFFFFFFFFFFFFFEABAEBAB EAEBAEBABFFFFFFFFFFFFFFFEAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBABFFFFFEBEBEBFFFFFFEBAEBAB EAEBAEABFFFFFEBEBEBFFFFFFEABAEBF BBAEBAEBFFFFEBEBEBEABFFFFEAEBAEE FEBAEBABFFFFEBEBEBEABFFFFEBAEBAB EAEBAEABFFFFEBFFFFFEBFFFFEABAEBF BBAEBAEBFFFFEBFFFFFEBFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBABFFFFEBFFFEBFFFFEAEBAEBF BBAEBAEABFFFFEBFFFEBFFFFEBAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBABFFFFEBFEBFFFFEABAEBAEE FEBAEBAEABFFFFEBFEBFFFFEAEBAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBAEBFFFEBFEBFFFEAEBAEBAEE FEBAEBAEBABFFFEBFEBFFFEBAEBAEBAB EAEBAEBAEBABFFEBFEBFFEAEBAEBAEBF BBAEBAEBAEABFFEBFEBFFEBAEBAEBAEE FEBAEBAEBAEABFEBFEABEAEBAEBAEBAB EAEBAEBAEBAEBFEBFEABEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBAAAFBEAABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEABBEEAAAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAABAEBAEBAEBAB EAEBAEBAEBAEBAEAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Camera Exposure # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEAABFFFFFEAAEBAEBAEBAA AAEBAEBAEBAEABFFFFFEABAEBAEBAEBA ABAEBAEBAEABFFFFFFFFFEAAEBAEBAEA AEBAEBAEBAABFFFFFFFFFEABAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEBABFFFFFFFFFFFFFEABAEBAEA AEBAEBAEABFFFFFFFFFFFFFEAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBAEBFFFFFFFFFFFFFFFEABAEBAA AAEBAEBABFFFFFFFFFFFFFFFEAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBABFFFFFEBEBEBFFFFFFEBAEBAA AAEBAEABFFFFFEBEBEBFFFFFFEABAEBA ABAEBAEBFFFFEBEBEBEABFFFFEAEBAEA AEBAEBABFFFFEBEBEBEABFFFFEBAEBAA AAEBAEABFFFFEBFFFFFEBFFFFEABAEBA ABAEBAEBFFFFEBFFFFFEBFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBABFFFFEBFFFEBFFFFEAEBAEBA ABAEBAEABFFFFEBFFFEBFFFFEBAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBABFFFFEBFEBFFFFEABAEBAEA AEBAEBAEABFFFFEBFEBFFFFEAEBAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBAEBFFFEBFEBFFFEAEBAEBAEA AEBAEBAEBABFFFEBFEBFFFEBAEBAEBAA AAEBAEBAEBABFFEBFEBFFEAEBAEBAEBA ABAEBAEBAEABFFEBFEBFFEBAEBAEBAEA AEBAEBAEBAEABFEBFEABEAEBAEBAEBAA AAEBAEBAEBAEBFEBFEABEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBAAAFBEAABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEABBEEAAAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAABAEBAEBAEBAA AAEBAEBAEBAEBAEAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Format Memory Card # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEEFBEFBEFBEFBEFBEFBEFBEFBEFEE FEBBBAAAAAAAAAAAAAAAAAAAAAAABEAB EAEEFAAFAEABAFAEABAFAEABAFAAFBBF BBBBAAAAAAAAAAAAAAAAAAAAAAABEFEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEABBF BBFAAAAAFFFFFFFFFFFFFFFFFFFFAFEE FEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAB EABAABAAFFFFFFFFEFFFFFFFFFFEABBF BBFAAEAAFFFFFFFFABFFFFFFFFFFAFEE FEEABAEAFFFFFFFEBAFFFFFFFFFFAEAB EABAAAAAFFFFFFFAFEBFFFFFFFFEABBF BBFAAAAAFFFFFFEBEFAFFFFFFFFFAFEE FEEAAAABFFFFFFAFABEBFFFFFFFFAEAB EABAAAABFFFFFEBEAAFAFFFFFFFEABBF BBFAAAABFFFFFAFAAABEBFFFFFFFAFEE FEEAAAABFFFFEBEAAAAFAFFFFFFFAEAB EABAAAAFFFFFAFAAAAABEBFFFFFEABBF BBFAAAAFFFFEBEAAAAAAFAFFFFFFAFEE FEEAAAAFFFFAFAAAAAAABEBFFFFFAEAB EABAAAAFFFEBEAAAAAAAAFAFFFFEABBF BBFAAAAFFFAFAAAAAAAAABEBFFFFAFEE FEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAB EABAAABFFAFAABFFEBFFFABEBFFEABBF BBFAAABFEBEAAFFFEBFFFAAFAFFFAFEE FEEAAABFAFAABFAAABEAAAABEBFFAEAB EABAAABEBEAABEAAABEAAAAAFAFEABBF BBFAAAFAFAAABEAAABEAAAAABEBFAFEE FEEAAAFEBEAABEAAABFFEAAAFAFFAEAB EABAAAFFAFAABEAAABFFEAABEBFEABBF BBFAAAFFEBEABEAAABEAAAAFAFFFAFEE FEEAAAFFFAFABFAAABEAAABEBFFFAEAB EABAAAFFFEBEAFFFEBEAAAFAFFFEABBF BBFAABFFFFAFABFFEBEAABEBFFFFAFEE FEEAABFFFFEBEAAAAAAAAFAFFFFFAEAB EABAABFFFFFAFAAAAAAABEBFFFFEABBF BBFAABFFFFFEBEAAAAAAFAFFFFFFAFEE FEEAABFFFFFFAFAAAAABEBFFFFFFAEAB EABAABFFFFFFEBEAAAAFAFFFFFFEABBF BBFAAFFFFFFFFAFAAABEBFFFFFFFAFEE FEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAB EABAAFFFFFFFFFAFABEBFFFFFFFEABBF BBFAAFFFFFFFFFEBEFAFFFFFFFFFAFEE FEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAB EABAAFFFFFFFFFFEBAFFFFFFFFFEABBF BBFABFFFFFFFFFFFABFFFFFFFFFFAFEE FEEABFFFFFFFFFFFEFFFFFFFFFFFAEAB EABABFFFFFFFFFFFFFFFFFFFFFFEABBF BBFABFFFFFFFFFFFFFFFFFFFFFFFAFEE FEEABFFFFFFFFFFFFFFFFFFFFFFFBEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEFBBF BBFBEFBEFBEFBEFBEFBEFBEFBEFBEEEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAB EAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Format Memory Card # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEEFBEFBEFBEFBEFBEFBEFBEFBEFEA AEBBBAAAAAAAAAAAAAAAAAAAAAAABEAA AAEEFAAFAEABAFAEABAFAEABAFAAFBBA ABBBAAAAAAAAAAAAAAAAAAAAAAABEFEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEABBA ABFAAAAAFFFFFFFFFFFFFFFFFFFFAFEA AEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAA AABAABAAFFFFFFFFEFFFFFFFFFFEABBA ABFAAEAAFFFFFFFFABFFFFFFFFFFAFEA AEEABAEAFFFFFFFEBAFFFFFFFFFFAEAA AABAAAAAFFFFFFFAFEBFFFFFFFFEABBA ABFAAAAAFFFFFFEBEFAFFFFFFFFFAFEA AEEAAAABFFFFFFAFABEBFFFFFFFFAEAA AABAAAABFFFFFEBEAAFAFFFFFFFEABBA ABFAAAABFFFFFAFAAABEBFFFFFFFAFEA AEEAAAABFFFFEBEAAAAFAFFFFFFFAEAA AABAAAAFFFFFAFAAAAABEBFFFFFEABBA ABFAAAAFFFFEBEAAAAAAFAFFFFFFAFEA AEEAAAAFFFFAFAAAAAAABEBFFFFFAEAA AABAAAAFFFEBEAAAAAAAAFAFFFFEABBA ABFAAAAFFFAFAAAAAAAAABEBFFFFAFEA AEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAA AABAAABFFAFAABFFEBFFFABEBFFEABBA ABFAAABFEBEAAFFFEBFFFAAFAFFFAFEA AEEAAABFAFAABFAAABEAAAABEBFFAEAA AABAAABEBEAABEAAABEAAAAAFAFEABBA ABFAAAFAFAAABEAAABEAAAAABEBFAFEA AEEAAAFEBEAABEAAABFFEAAAFAFFAEAA AABAAAFFAFAABEAAABFFEAABEBFEABBA ABFAAAFFEBEABEAAABEAAAAFAFFFAFEA AEEAAAFFFAFABFAAABEAAABEBFFFAEAA AABAAAFFFEBEAFFFEBEAAAFAFFFEABBA ABFAABFFFFAFABFFEBEAABEBFFFFAFEA AEEAABFFFFEBEAAAAAAAAFAFFFFFAEAA AABAABFFFFFAFAAAAAAABEBFFFFEABBA ABFAABFFFFFEBEAAAAAAFAFFFFFFAFEA AEEAABFFFFFFAFAAAAABEBFFFFFFAEAA AABAABFFFFFFEBEAAAAFAFFFFFFEABBA ABFAAFFFFFFFFAFAAABEBFFFFFFFAFEA AEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAA AABAAFFFFFFFFFAFABEBFFFFFFFEABBA ABFAAFFFFFFFFFEBEFAFFFFFFFFFAFEA AEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAA AABAAFFFFFFFFFFEBAFFFFFFFFFEABBA ABFABFFFFFFFFFFFABFFFFFFFFFFAFEA AEEABFFFFFFFFFFFEFFFFFFFFFFFAEAA AABABFFFFFFFFFFFFFFFFFFFFFFEABBA ABFABFFFFFFFFFFFFFFFFFFFFFFFAFEA AEEABFFFFFFFFFFFFFFFFFFFFFFFBEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEFBBA ABFBEFBEFBEFBEFBEFBEFBEFBEFBEEEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAA AAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Lock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBF BBAEBAEBAAEAAFBEFBEAAEAAEBAEBAEE FEBAEBAEABEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Lock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBA ABAEBAEBAAEAAFBEFBEAAEAAEBAEBAEA AEBAEBAEABEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Unlock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAAAEBAEBAEBAEAAEBAEBAEE FEBAEBAEAAABAEBAEBAEABABAEBAEBAB EAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBF BBAEBAEBAEAAAFBEFBEAAEAAEBAEBAEE FEBAEBAEBAEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Unlock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAAAEBAEBAEBAEAAEBAEBAEA AEBAEBAEAAABAEBAEBAEABABAEBAEBAA AAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBA ABAEBAEBAEAAAFBEFBEAAEAAEBAEBAEA AEBAEBAEBAEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set for PAL / NTSC TV # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAABAEBAEBAEBAEBAABAEBAB EAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBF BBAEBAEBAEAAEBAEBAEBAEBAABAEBAEE FEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAB EAEBAEBAEBAABAEBAEBAEBAABAEBAEBF BBAEBAEBAEBAABAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAABAEBAEBAABAEBAEBAB EAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBF BBAEBAEBAEBAEAAEBAEBAABAEBAEBAEE FEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAB EAEBAEBAEBAEBAABAEBAABAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEABEFBEFBEFBEFBEFBEFBEFBEEAABF BBAAFBEFBEFBEFBEFBEFBEFBEFBAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAB EAEAAAAAAAAAAAAAAAAAAAAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAEAEE FEAAAAAAAAAAAAAAAAAAAAAAAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAEBAEBAEBAEBAEBAEBAAAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEFBEBAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBAEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAAAAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set for PAL / NTSC TV # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAABAEBAEBAEBAEBAABAEBAA AAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBA ABAEBAEBAEAAEBAEBAEBAEBAABAEBAEA AEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAA AAEBAEBAEBAABAEBAEBAEBAABAEBAEBA ABAEBAEBAEBAABAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAABAEBAEBAABAEBAEBAA AAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBA ABAEBAEBAEBAEAAEBAEBAABAEBAEBAEA AEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAA AAEBAEBAEBAEBAABAEBAABAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEABEFBEFBEFBEFBEFBEFBEFBEEAABA ABAAFBEFBEFBEFBEFBEFBEFBEFBAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAA AAEAAAAAAAAAAAAAAAAAAAAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAEAEA AEAAAAAAAAAAAAAAAAAAAAAAAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAEBAEBAEBAEBAEBAEBAAAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEFBEBAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBAEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAAAAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Start Slide Show # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAB EAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAAFBEFBEFBEFBEFBEFBEAAEE FEBAEBAEBAEFBEFBEFBEFBEFBEFBABAB EAEBAEBAAFBEFBEFBEFBEFBEFBEFBABF BBAEBAEBAEFBEFBEFBEFBEFBEFBEFAEE FEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAB EAEBAEBAAAAAAAAAAAAAAAAAABEFBABF BBAEBAAFBEFBEFBEFBEFBEFBEABEFAEE FEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAB EAEBAAFBEFBEFBEFBEFBEFBEFBAFBABF BBAEBAEFBEFBEFBEFBEFBEFBEFAEFAEE FEBAAAAAAAAAAAAAAAAAAAEFBEABEAAB EAEBAAAAAAAAAAAAAAAAAABEFBAFBABF BBAAFBEFBEFBEFBEFBEFBEABEFAEFAEE FEBAEFBEFBEFBEFBEFBEFBAFBEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEFBEFBEFBEFBEFBEFAEFAEFAEE FEABEFBEFBEFBEFBEFBEFBEABEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEAAAAAAAAAAAAFBEFAEFAEFAEE FEABEFBAAAAAAAAAAAAEFBEABEABEAAB EAAFBEAAEBAEBAEBAEBAEFBAFBAFBABF BBAEFBABAEBAEBAEBAEABEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABABAB EAAFBABAEBAEBAEBAEBAAFBAFBAFAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAABAEE FEABEAAEBAEBAEBAEBAEABEABEAAEBAB EAAFBABAEBAEBAEBAEBAAFBAFBABAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAEBAEE FEABEFAEBAEBAEBAEBAAFBEABABAEBAB EAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBF BBAEFBEAAAAAAAAAAAAFBEFAABAEBAEE FEABEFBAAAAAAAAAAAAEFBEAAEBAEBAB EAAFBEFBEFBEFBEFBEFBEFBABAEBAEBF BBAEFBEFBEFBEFBEFBEFBEFAEBAEBAEE FEBAEFBEFBEFBEFBEFBEFBABAEBAEBAB EAEABEFBEFBEFBEFBEFBEFAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAABAEBAEBAEE FEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Start Slide Show # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAA AAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAAFBEFBEFBEFBEFBEFBEAAEA AEBAEBAEBAEFBEFBEFBEFBEFBEFBABAA AAEBAEBAAFBEFBEFBEFBEFBEFBEFBABA ABAEBAEBAEFBEFBEFBEFBEFBEFBEFAEA AEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAA AAEBAEBAAAAAAAAAAAAAAAAAABEFBABA ABAEBAAFBEFBEFBEFBEFBEFBEABEFAEA AEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAA AAEBAAFBEFBEFBEFBEFBEFBEFBAFBABA ABAEBAEFBEFBEFBEFBEFBEFBEFAEFAEA AEBAAAAAAAAAAAAAAAAAAAEFBEABEAAA AAEBAAAAAAAAAAAAAAAAAABEFBAFBABA ABAAFBEFBEFBEFBEFBEFBEABEFAEFAEA AEBAEFBEFBEFBEFBEFBEFBAFBEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEFBEFBEFBEFBEFBEFAEFAEFAEA AEABEFBEFBEFBEFBEFBEFBEABEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEAAAAAAAAAAAAFBEFAEFAEFAEA AEABEFBAAAAAAAAAAAAEFBEABEABEAAA AAAFBEAAEBAEBAEBAEBAEFBAFBAFBABA ABAEFBABAEBAEBAEBAEABEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABABAA AAAFBABAEBAEBAEBAEBAAFBAFBAFAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAABAEA AEABEAAEBAEBAEBAEBAEABEABEAAEBAA AAAFBABAEBAEBAEBAEBAAFBAFBABAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAEBAEA AEABEFAEBAEBAEBAEBAAFBEABABAEBAA AAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBA ABAEFBEAAAAAAAAAAAAFBEFAABAEBAEA AEABEFBAAAAAAAAAAAAEFBEAAEBAEBAA AAAFBEFBEFBEFBEFBEFBEFBABAEBAEBA ABAEFBEFBEFBEFBEFBEFBEFAEBAEBAEA AEBAEFBEFBEFBEFBEFBEFBABAEBAEBAA AAEABEFBEFBEFBEFBEFBEFAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAABAEBAEBAEA AEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 72 # Height: 36 # Length: 2592 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBE AEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFB BAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEF EBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Width: 18 # Height: 12 # Length: 216 # 0000000000000000000000000000FBEF0000 0000EEFE00000000BBAB00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000BBAB00000000FAAF0000 0000EFBE0000000000000000000000000000 # # Title: ? # Length: 544 # FBCFBCFBEF3EF3EF # FAEBAEBAEBAEBAE8 ABAEBAEAAEBAEBAF EEBAEBAEFAEBAEBB FAEBAEFAAFAEBAEA 2BAEBBEBAAEAEBAF EEBAEFAEBAEBAEBB FAEBAEBAEBBABAE8 ABAEAAEBAEBAEBAF EEBAEEAEBAABAEBB FAEBAEAAABBABAEA 2BAEAAAFBEBAEBAF EEBAEFBBABEBAEBB FAEBAAFAAFAABAE8 ABAEABEAAEFAEBAF EEBAEEABEAEBAEBB FAEBBEAAAABEBAEA 2BAEBAEAABAAABAF EEBAEAAAAAAFAEBB FAEAAAAFFAAABAE8 ABAEEABEBEABABAF EEBAEEBAAEBBAEBB FAEAAABEBEAABAEA 2BAEFAAFFAABABAF EEBAAAEAABAEAEBB FAEBBEAAAABEBAE8 ABAEABABEAFAEBAF EEBAEBBAABEBAEBB FAEBAEBBEEAEBAEA 2BAEBAAAAABAEBAF EEBAEBAEBAEBAEBB # CFBEF3CF3CFBEFBC # FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # same as above FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000020000 00000000000000000000000000000000000AC000 00000000000000000000000000000000002BA000 0000000000000000000000000000000000AEB800 0000000000000000000000000000000002BAEB00 000000000000000000000000000000000AEBAE80 000000000000000000000000000000002BAEBAE0 00000000000000000000000000000000AEBAEBAC 000000000000000000000000000000003AEBAEB0 000000000000000000000000000000000BAEBAC0 0000000000000000000000000000000002BAEB00 0000000000000000000000000000000000EBAC00 00000000000000000000000000000000002EB000 00000000000000000000000000000000000AC000 0000000000000000000000000000000000030000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000200000000000000020000 0000000000000000000B800000000000000AC000 0000000000000000002EB00000000000002BA000 000000000000000000BAE8000000000000AEB800 000000000000000002EBAE000000000002BAEB00 00000000000000000BAEBAC0000000000AEBAE80 00000000000000002EBAEBA0000000002BAEBAE0 0000000000000000BAEBAEB800000000AEBAEBAC 00000000000000002BAEBAE0000000003AEBAEB0 00000000000000000EBAEB80000000000BAEBAC0 000000000000000002EBAE000000000002BAEB00 000000000000000000AEB8000000000000EBAC00 0000000000000000003AE00000000000002EB000 0000000000000000000B800000000000000AC000 0000000000000000000200000000000000030000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0003000000000000000200000000000000020000 000E800000000000000B800000000000000AC000 003AE00000000000002EB00000000000002BA000 00EBAC000000000000BAE8000000000000AEB800 03AEBA000000000002EBAE000000000002BAEB00 0EBAEB80000000000BAEBAC0000000000AEBAE80 3AEBAEB0000000002EBAEBA0000000002BAEBAE0 EBAEBAE800000000BAEBAEB800000000AEBAEBAC 2EBAEBA0000000002BAEBAE0000000003AEBAEB0 0AEBAE80000000000EBAEB80000000000BAEBAC0 03AEBA000000000002EBAE000000000002BAEB00 00BAE8000000000000AEB8000000000000EBAC00 002BA00000000000003AE00000000000002EB000 000E800000000000000B800000000000000AC000 0002000000000000000200000000000000030000 # # Title: ? # Width: 72 # Height: 74 # Length: 5328 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAFBEFBEFBEFBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEEAAAAA AAAAABEFBEFBEFBEFBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEAAA AAAFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBAAA AAAFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFAAA AAAFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEAAA AAAFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 24 # Height: 10 # Length: 240 # 00000003800000000000000EB00000000000003AE8000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 0000002BAC0000000000000EB000000000000002C0000000 # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF8EAA8AE88FFFFFFFFFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFF8EEEEA888A8AA8AAEEEEFEEFF8FFFFFFFF FFFFF8FFFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFF FFFF89999999999FAAAAAAAAEEEEEF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF F89999999999998EAAAA8F88AEEEEF8FFFFFFFFF 899999999999AAEEAAA8FEFFAAEFFF8FFFFFFFFF F8999999999A88EEAAA8FFEEAEEEEF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFF899998AA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFF8988EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFF888EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA888EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA888AAAAAAAAAAAEEEEF8FFFFFFFFF FFFFFFF88EAAAAAAAAAAEAEEAEEFFF8FFFFFFFFF FFFFFFFFF88EEEEEEEEEEEEEEEFFF88FFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # 9999999999999999FFFFFF999999999999999999 999999999999999FEAA8AEFF9999999999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 999999FEEEEA888A8AA8AAEEEEFEEFFF99999999 99999FFFFFFFFFFFFFFFFFFFFFFFFFFF99999999 99999F888888888FAAAAAAAAEEEEEFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 9F8888888888FF8EAAAA8F88AEEEEFF999999999 F8888888888FAAEEAAA8FEFFAAEFFFF999999999 9F88888888FA88EEAAA8FFEEAEEEEFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 9999F8888FAA88EEAAA8FFEEAEEEEFF999999999 99999F8FFEAA88EEAAA8FEEEAAEFFFF999999999 999999FFFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA888EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA888AAAAAAAAAAAEEEEFF999999999 9999999FFEAAAAAAAAAAEAEEAEEFFFF999999999 999999999FFEEEEEEEEEEEEEEEFFFFF999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999999999999999999999999999999999 # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF88888888888888888888888888888888888FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FDDDDDBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDDDBBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDBBBBBBFF8FCCCCCEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCCEEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCEEEEEF8FAAA99999F8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FBBBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FCCCCAAAFF8FCCCCCDDDF8FCCCBBBBBF8FFF FF88FCCCCAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99999B9FF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99BBBB9FF8FDAAAAAAAF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEE99FF8FEEEEBBBBF8FDDDDDDDDF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9F99999999999999999999999999999999999FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FDDDDDBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDDDBBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDBBBBBBFF9FCCCCCEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCCEEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCEEEEEF9FAAA99999F9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FBBBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FCCCCAAAFF9FCCCCCDDDF9FCCCBBBBBF9FF9 9F99FCCCCAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99999B9FF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99BBBB9FF9FDAAAAAAAF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEE99FF9FEEEEBBBBF9FDDDDDDDDF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9999999999999999999999999999999999999999 # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFF88EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8888FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFFF8EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FFFF99999999999FEFF99999999999 9999999999999999999999999FEFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999FFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEEFFFFF FFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAEFFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEFFF FFFFFFFEEAAAAAAAAAAAAAAAAAAAAAAEAAAAEFFF FFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEAAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEEFFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEFFFFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAEFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEFFFFFFFFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEFFFFFFFFFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 999999999999FFFFFFFFFFFFFFFFFFFFFFF99999 99999999999FAAAAAAAAAAAAAAAAAAAAAAAF9999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 999999999FFFFFFFFFFFFFFFFFFFFFFAAAAAF999 9999999FFAAAAAAAAAAAAAAAAAAAAAAFAAAAF999 999999FAAAAAAAAAAAAAAAAAAAAAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 9999FAAAAAAAAAAAAAAAAAAAAAAFFAAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFF99999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFF999999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAF99999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAF9999999999 9999FAAAAAAAAAAAAAAAAAAAAAAFF99999999999 99999FFFFFFFFFFFFFFFFFFFFFF9999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 # # Title: Locked # Width: 12 # Height: 24 # Length: 288 # 999999999999999999999999 99999999FFEEEFF999999999 9999999FEEFFFEEF99999999 9999999EEF999FEE99999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9FFFFF9FF9999999 999999FFFEEEEEFFF9999999 999999FEEEDDDEEEF9999999 99999FEEEEFFFEEEEF999999 9999FEEEFFF8FFFEEEF99999 9999FEEFFFFFFFFFEEF99999 9999EEEFFFFFFFFFEEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF88AFFFFEE99999 9999EEFFFF8AEFFFFEE99999 9999FEEFFFFFFFFF8EF99999 99999FEFFFFFFFFFEF999999 999999FEFFF8FFFEF9999999 9999999EEEFFF8EE99999999 999999999FFFFF9999999999 999999999999999999999999 # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000B00000 000000000000000000000000000000000BBB0000 00000000000000000000000000000000BBBBB000 0000000000000000000000000000000BBBBBBB00 000000000000000000000000000000BBBBBBBBB0 0000000000000000000000000000000BBBBBBB00 00000000000000000000000000000000BBBBB000 000000000000000000000000000000000BBB0000 0000000000000000000000000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 00000000000000000000B0000000000000B00000 0000000000000000000BBB00000000000BBB0000 000000000000000000BBBBB000000000BBBBB000 00000000000000000BBBBBBB0000000BBBBBBB00 0000000000000000BBBBBBBBB00000BBBBBBBBB0 00000000000000000BBBBBBB0000000BBBBBBB00 000000000000000000BBBBB000000000BBBBB000 0000000000000000000BBB00000000000BBB0000 00000000000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 000000B0000000000000B0000000000000B00000 00000BBB00000000000BBB00000000000BBB0000 0000BBBBB000000000BBBBB000000000BBBBB000 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 00BBBBBBBBB00000BBBBBBBBB00000BBBBBBBBB0 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 0000BBBBB000000000BBBBB000000000BBBBB000 00000BBB00000000000BBB00000000000BBB0000 000000B0000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAABEFBEFBEFBEFBEFBEFBEAAAAEB AEAAAAFBEFBEFBEFBEFBEFBEFBAAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAABBEFBEFBEFBEFBEFBEFBEEAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBAEABAE BAEAFAAFBEFBEFBEFBEFBEFBEEBEAABA EBABEFAEFBEFBEFBEFBEFBEFBAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEEBEFABAE BAEAFBEABEFBEFBEFBEFBEFBAFBEEABA EBABEFBEBBEFBEFBEFBEFBEEBEFBEAEB AEABBEFBAFBEFBEFBEFBEFBAFBEFABAE BAEAFBEFAAFBEFBEFBEFBEEBEFBEEABA EBABEFBEFAEFBEFBEFBEFBEFBEFBEAEB AEABBEFBEEBEFBAFBEFBEFBEFBEFABAE BAEAFBEFBEABEEBEFBEFBEFBEFBEEABA EBABEFBEFBEFAABBEFBEFBEFBEFBEAEB AEABBEFBEFBEAAAFBEFBEFBEFBEFABAE BAEAFBEFBEFAAABEAAEAAAFBEFBEEABA EBABEFBEFBEFAABBAABAABEFBEFBEAEB AEABBEFBEFBEEAAFAAEAAFBEFBEFABAE BAEAFBEFBEFBEABEEAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFBEABEFBEFBEFABAE BAEAFBEFBEFBEABEFAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFAAFAAFBEFBEFABAE BAEAFBEFBEEBEABEAAEAAEFBEFBEEABA EBABEFBEFBAFAABAABBEABEFBEFBEAEB AEABBEFBEEBEFBEFBEFBEFAEFBEFABAE BAEAFBEFBAFBEFBEFBEFBEEBEFBEEABA EBABEFBEEBEFBEFBEFBEFBEABEFBEAEB AEABBEFBAFBEFBEFBEFBEFBEBBEFABAE BAEAFBEEBEFBEFBEFBEFBEFBAFBEEABA EBABEFBAFBEFBEFBEFBEFBEFAAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEFAEFABAE BAEAFBAFBEFBEFBEFBEFBEFBEEBEAABA EBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBEAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAAABEFBEFBEFBEFBEFBEFBEEAAAEB AEAAAABBEFBEFBEFBEFBEFBEFBAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Normal # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAABEFBEFBEFBEFBEFBEFBEAAAAEE FEAAAAFBEFBEFBEFBEFBEFBEFBAAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAABBEFBEFBEFBEFBEFBEFBEEAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBAEABAB EAEAFAAFBEFBEFBEFBEFBEFBEEBEAABF BBABEFAEFBEFBEFBEFBEFBEFBAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEEBEFABAB EAEAFBEABEFBEFBEFBEFBEFBAFBEEABF BBABEFBEBBEFBEFBEFBEFBEEBEFBEAEE FEABBEFBAFBEFBEFBEFBEFBAFBEFABAB EAEAFBEFAAFBEFBEFBEFBEEBEFBEEABF BBABEFBEFAEFBEFBEFBEFBEFBEFBEAEE FEABBEFBEEBEFBAFBEFBEFBEFBEFABAB EAEAFBEFBEABEEBEFBEFBEFBEFBEEABF BBABEFBEFBEFAABBEFBEFBEFBEFBEAEE FEABBEFBEFBEAAAFBEFBEFBEFBEFABAB EAEAFBEFBEFAAABEAAEAAAFBEFBEEABF BBABEFBEFBEFAABBAABAABEFBEFBEAEE FEABBEFBEFBEEAAFAAEAAFBEFBEFABAB EAEAFBEFBEFBEABEEAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFBEABEFBEFBEFABAB EAEAFBEFBEFBEABEFAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFAAFAAFBEFBEFABAB EAEAFBEFBEEBEABEAAEAAEFBEFBEEABF BBABEFBEFBAFAABAABBEABEFBEFBEAEE FEABBEFBEEBEFBEFBEFBEFAEFBEFABAB EAEAFBEFBAFBEFBEFBEFBEEBEFBEEABF BBABEFBEEBEFBEFBEFBEFBEABEFBEAEE FEABBEFBAFBEFBEFBEFBEFBEBBEFABAB EAEAFBEEBEFBEFBEFBEFBEFBAFBEEABF BBABEFBAFBEFBEFBEFBEFBEFAAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEFAEFABAB EAEAFBAFBEFBEFBEFBEFBEFBEEBEAABF BBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBEAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAAABEFBEFBEFBEFBEFBEFBEEAAAEE FEAAAABBEFBEFBEFBEFBEFBEFBAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Zoom # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEEABAE BAEAABAFBEFBEFBEFBEFBEFBEABAEABA EBABEBAEFBEFBEFBEFBEFBEFBAEBEAEB AEABBAABEFBEFBEFBEFBEFBEFAAFABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAAAAAAAAAAAAAAAAAAAAABEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEFFEBAEBAEBAEAFABAE BAEAFABAEBAEBBFFFEBAEBAEBABEEABA EBABEEABAFFAEFFFFEEBAEBAEABBEAEB AEABBEAEBBEBAFFBFFAEBAEBAEAFABAE BAEAFABAEBEEBFEBFEBFFBFFFABEEABA EBABEEABAFFAEBEFFEEFFEFFEABBEAEB AEABBEAFFFFFEEBFFBAFFBFFAEAFABAE BAEAFABBFFFFFAFFFEBBFFFEBABEEABA EBABEEABAFFAEBBFFAEBFFFAEABBEAEB AEABBEAEBBEBAEFFEBAEBFEBAEAFABAE BAEAFABAEBEEBAFFAEBAFFFEBABEEABA EBABEEABAFFAEBFEBAEBFFFAEABBEAEB AEABBEAEBAEBAFFFFFAFFAFFAEAFABAE BAEAFABAEBAEBFFFFEBFFBFFBABEEABA EBABEEABAEBAFFFFFEFFEEBFEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAAAAAAAAAAAAAAAAAAAAABABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAEFBEFBEFBEFBEFBEFBAABEAEB AEABBAABEFBEFBEFBEFBEFBEFAEBABAE BAEAEBAFBEFBEFBEFBEFBEFBEABAEABA EBABAFBEFBEFBEFBEFBEFBEFBEFAAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEFABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Zoom # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEEABAB EAEAABAFBEFBEFBEFBEFBEFBEABAEABF BBABEBAEFBEFBEFBEFBEFBEFBAEBEAEE FEABBAABEFBEFBEFBEFBEFBEFAAFABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAAAAAAAAAAAAAAAAAAAAABEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEFFEBAEBAEBAEAFABAB EAEAFABAEBAEBBFFFEBAEBAEBABEEABF BBABEEABAFFAEFFFFEEBAEBAEABBEAEE FEABBEAEBBEBAFFBFFAEBAEBAEAFABAB EAEAFABAEBEEBFEBFEBFFBFFFABEEABF BBABEEABAFFAEBEFFEEFFEFFEABBEAEE FEABBEAFFFFFEEBFFBAFFBFFAEAFABAB EAEAFABBFFFFFAFFFEBBFFFEBABEEABF BBABEEABAFFAEBBFFAEBFFFAEABBEAEE FEABBEAEBBEBAEFFEBAEBFEBAEAFABAB EAEAFABAEBEEBAFFAEBAFFFEBABEEABF BBABEEABAFFAEBFEBAEBFFFAEABBEAEE FEABBEAEBAEBAFFFFFAFFAFFAEAFABAB EAEAFABAEBAEBFFFFEBFFBFFBABEEABF BBABEEABAEBAFFFFFEFFEEBFEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAAAAAAAAAAAAAAAAAAAAABABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAEFBEFBEFBEFBEFBEFBAABEAEE FEABBAABEFBEFBEFBEFBEFBEFAEBABAB EAEAEBAFBEFBEFBEFBEFBEFBEABAEABF BBABAFBEFBEFBEFBEFBEFBEFBEFAAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEFABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Length: 48 # 00000005 00000007 00000005 00000005 00000004 00000005 00000005 00000006 0000000A 00000007 00000009 00000009 # # Title: ? # Length: # 00000000000007E01FF81C38381C381C381C381C1C381FF807E0000000000000 00000000000003801F801F80038003800380038003803FF83FF8000000000000 0000000000000FE03FF03838003800F003E00F803E383FF83FF8000000000000 0000000000000FE03FF03838003803F003F0003838383FF00FE0000000000000 00000000000003E007E00EE01CE038E07FF87FF800E007F807F8000000000000 0000000000003FF83FF838003FE03FF00078003878783FF00FC0000000000000 00000000000007F01FF03C003BC07FF07C7878383C783FF00FC0000000000000 0000000000003FF83FF8007000F000E001E001C003C003800780000000000000 00000000000007E01FF81C381C380FF01FF8381C381C1FF807E0000000000000 00000000000007E01FF83C78383C3C7C1FFC07B800781FF01FC0000000000000 0000000000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 0000000000007FF87FFE1C0E1C0E1FF81FFE1C0E1C0E7FFE7FF8000000000000 00000000000007F61FFE3C0E78067000700078003C0E1FFE07F0000000000000 0000000000007FE07FF81C3C1C1E1C0E1C0E1C1E1C3C7FF87FE0000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C001C007F807F80000000000000 00000000000007F61FFE3C0E78007000703F783F3C0E1FFE07F0000000000000 0000000000007E7E7E7E1C381C381FF81FF81C381C387E7E7E7E000000000000 0000000000003FF83FF80380038003800380038003803FF83FF8000000000000 00000000000007FE07FE0070007000707070707078F03FE01FC0000000000000 0000000000007EFC7EFC1C701CE01FC01FE01DF01C7C7F3E7F3E000000000000 0000000000007FC07FC00E000E000E000E000E060E067FFE7FFE000000000000 000000000000F83EFC7E7C7C7EFC77DC77DC739C739CF93EF83E000000000000 000000000000F8FEFCFE3E383F383FB83BF839F838F8FE78FE38000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0000000000007FF07FF81C3C1C1C1C3C1FF81FF01C007F007F00000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE01FFE1CFC0000 0000000000007FF07FFC1C3C1C3C1FF81FF01CF01C787F3E7F1E000000000000 0000000000001FEC7FFC701C70007FF01FFC001C701C7FFC6FF0000000000000 0000000000007FFC7FFC739C739C03800380038003803FF83FF8000000000000 0000000000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 000000000000FEFEFEFE38381C701C700EE00EE007C007C00380000000000000 000000000000FC3FFC3F718E718E3BDC3BDC3FFC1E781C381C38000000000000 0000000000007F7E7F7E1E380FF007C003E00FF01C787EFE7EFE000000000000 0000000000007EFC7EFC1C700EE007C007C0038003801FF01FF0000000000000 0000000000003FFC3FFC38F839F003E007C00F9C1F1C3FFC3FFC000000000000 000000000000000000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000000F800F8003BF03FFC3C1E380E380E3C1EFFFCFBF0000000000000 000000000000000000000FDC3FFC783C70007000781C3FFC0FF0000000000000 000000000000007C007C0FDC3FFC783C701C701C783C3FFF0FDF000000000000 000000000000000000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 00000000000001FC07FC07003FF03FF00700070007003FF03FF0000000000000 000000000000000000000FDF3FFF783C701C701C783C3FFC0FDC001C3FF81FF0 000000000000F800F8003BF03FF83C38383838383838FEFEFEFE000000000000 000000000380038000001F801F8003800380038003803FF83FF8000000000000 0000000000E000E000003FE03FE000E000E000E000E000E000E001E03FC03F80 0000000000007C007C001CF81CF81DE01F801FC01FF07CFC7C7C000000000000 0000000000001F801F800380038003800380038003803FF83FF8000000000000 00000000000000000000EF78FFFC739C739C739C739CFBDEFBDE000000000000 00000000000000000000FBF0FFF83C38383838383838FEFEFEFE000000000000 000000000000000000000FF03FFC781E700E700E781E3FFC0FF0000000000000 00000000000000000000FBF0FFFC3C1E380E380E3C1E3FFC3BF03800FF00FF00 000000000000000000001FBE7FFEF078E038E038F0787FF81FB8003801FE01FE 000000000000000000003EF83FFE0F1E0E000E000E007FF07FF0000000000000 000000000000000000001FB07FF070307FC01FF060707FF06FC0000000000000 0000000000001C001C00FFF0FFF01C001C001C001C1C1FFC07F0000000000000 00000000000000000000F8F8F8F838383838383838783FFE0FBE000000000000 00000000000000007E7E7E7E1C381E780E7007E007E003C003C0000000000000 00000000000000000000F83EF93E739C7BBC3FF83EF81C701C70000000000000 000000000000000000007EFC7EFC1E700FC007E01CF07EFC7EFC000000000000 000000000000000000007E7E7E7E1C380E700FE007C00380038007003FC03FC0 000000000000000000003FF83FF831F003C007801F183FF83FF8000000000000 00000000000001E001E0000000E003E00F001C001C381FF80FF0000000000000 000000000000000000000000000000000000000003C003C003C0000000000000 0000000000000FF01FF81C38003800F007C00700000007800780000000000000 000000000000001C0038007000E001C0038007000E001C003800000000000000 0000000000000000000003C003C003C00000000003C003C003C0000000000000 00000000000007C00FE00E600F00079C1FD839F838F03FFC0FBC000000000000 # 00000000000003C003C000000180018003C003C003C003C003C0000000000000 0000000000000FC0006007E00C600C6007F00000000000000000000000000000 00000000000007C00C600C600C600C6007C00000000000000000000000000000 00000000000001E001E0000000E003E00F001C001C381FF80FF0000000000000 0F0003C000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 0CC00CC000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 00000000000007F61FFE3C0E78067000700078003C0E1FFE07F001C007C00780 078001E000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 01E0078000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 0F0003C000003FF83FF80380038003800380038003803FF83FF8000000000000 07600DC00000F8FEFCFE3E383F383FB83BF839F838F8FE78FE38000000000000 0F0003C000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0CC00CC000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0F0003C000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 0660066000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 00000000000007E00FF81C381C381DF01DF81C1C1C1C7DF87DF0000000000000 000000000F0003C000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000660066000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000000000000000FDC3FFC783C70007000781C3FFC0FF003800F800F00 000000000F0003C000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 0000000001E0078000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 000000001E00078000001F801F8003800380038003803FF83FF8000000000000 0000000007600DC00000FBF0FFF83C38383838383838FEFEFEFE000000000000 00000000078001E000000FF03FFC781E700E700E781E3FFC0FF0000000000000 000000000660066000000FF03FFC781E700E700E781E3FFC0FF0000000000000 000000000F0003C00000F8F8F8F838383838383838783FFE0FBE000000000000 000000000CC00CC00000F8F8F8F838383838383838783FFE0FBE000000000000 00000000000001E001C003800300000000000000000000000000000000000000 000000000000000000000000000000000000000003C003800700060000000000 000000000000000000000000000007C007C00000000000000000000000000000 0000000001E0078000001F801F8003800380038003803FF83FF8000000000000 0000000001E0078000000FF03FFC781E700E700E781E3FFC0FF0000000000000 0000000003C00F0000003FE03FF800381FF87FF870387FFE1FDE000000000000 000007C01EF0783C0000F8F8F8F838383838383838783FFE0FBE000000000000 # # Text: / # 2F 00 # # Text: : # 3A 00 # # Text: am # 61 6D 00 # # Text: pm # 70 6D 00 # # Text: No pictures in camera. # 43 61 6D 61 72 61 20 73 69 6E 0A 66 6F 74 6F 73 20 64 65 6E 74 72 6F 00 # # Text: Yes # 53 9E 00 # # Text: No # 4E 6F 00 # # Text: . # 2E 00 # # Text: # 00 # # Text: # 00 # # Text: Lock? # 21 42 6C 6F 71 75 65 61 72 3F 00 # # Text: Unlock? # 21 44 65 73 62 6C 6F 71 65 61 72 3F 00 # # Text: Erase? # 21 42 6F 72 72 61 72 3F 00 # # Text: View Small Photos? # 21 56 65 72 0A 66 6F 74 6F 73 0A 70 65 71 75 65 96 61 73 3F 00 # # Text: View Full screen? # 00 # # Text: Set Screen Brightness? # 21 41 6A 75 73 74 61 72 0A 65 6C 20 62 72 69 6C 6C 6F 0A 64 65 20 6C 61 20 70 61 6E 74 61 6C 6C 61 3F 00 # # Text: Start Slide Show? # 21 49 6E 69 63 69 61 72 20 70 72 65 9D 0A 73 65 6E 74 61 63 69 9F 6E 20 63 6F 6E 0A 64 69 61 70 6F 73 69 74 69 76 61 73 3F 00 # # Text: Stop Slide Show? # 00 # # Text: Set Camera Exposure? # 21 41 64 6A 75 73 74 61 72 0A 65 6C 20 74 65 6D 70 6F 0A 64 65 20 65 78 70 6F 73 69 63 69 9F 6E 3F 00 # # Text: Format Memory Card? # 21 46 6F 72 6D 61 74 65 61 72 0A 6C 61 20 74 61 72 6A 65 74 61 0A 64 65 20 6D 65 6D 6F 72 69 61 3F 00 # # Text: Set Date & Time? # 21 41 6A 75 73 74 61 72 0A 66 65 63 68 61 20 79 0A 68 6F 72 61 3F 00 # # Text: Set for NTSC TV? # 21 41 6A 75 73 74 61 72 20 70 61 72 61 0A 4E 54 53 43 20 54 56 3F 00 # # Text: Set for PAL TV? # 21 41 6A 75 73 74 61 72 20 70 61 72 61 0A 50 41 4C 20 54 56 3F 00 # # Text: Review Pictures? # 21 56 65 72 0A 66 6F 74 6F 73 3F 00 # # Text: Take Pictures? # 21 54 6F 6D 61 72 0A 66 6F 74 6F 3F 00 # # Text: # 00 # # Text: One # 55 6E 61 0A 20 20 20 20 20 00 # # Text: None # 4E 61 64 61 0A 20 20 20 20 20 00 # # Text: All # 54 6F 64 6F 0A 20 20 20 20 20 00 # # Text: # 00 # # Text: ERASE? # 21 42 6F 72 72 61 72 3F 00 # # Text: Erase This Picture? # 21 42 6F 72 72 61 72 0A 65 73 74 61 0A 66 6F 74 6F 3F 00 # # Text: Cancel Picture Erase? # 21 53 61 6C 69 72 0A 73 69 6E 0A 62 6F 72 72 61 72 3F 00 # # Text: Erase All Pictures? # 21 42 6F 72 72 61 72 0A 74 6F 64 61 73 0A 6C 61 73 20 66 6F 74 6F 73 3F 00 # # Text: Erasing picture... # 42 6F 72 72 61 6E 64 6F 0A 66 6F 74 6F 2E 2E 2E 00 # # Text: Picture is LOCKED Unlock before erasing # 46 6F 74 6F 20 65 73 74 A0 0A 62 6C 6F 71 75 65 61 64 61 2E 0A 44 65 73 62 6C 6F 71 75 65 61 72 0A 61 6E 74 65 73 0A 64 65 20 62 6F 72 72 61 2E 00 # # Text: Erase ALL pictures? # 21 42 6F 72 72 61 72 20 74 6F 64 61 73 0A 6C 61 73 20 66 6F 74 6F 73 3F 00 # # Text: Erasing ALL pictures... # 42 6F 72 72 61 6E 64 6F 20 74 6F 64 61 73 0A 6C 61 73 20 66 6F 74 6F 73 2E 2E 2E 00 # # Text: Normal? # 21 4E 6F 72 6D 61 6C 3F 00 # # Text: Zoom? # 21 5A 6F 6F 6D 3F 00 # # Text: Set Screen Brightness # 41 6A 75 73 74 61 72 20 65 6C 20 62 72 69 6C 6C 6F 0A 64 65 20 6C 61 20 70 61 6E 74 61 6C 6C 61 00 # # Text: Set Camera Exposure # 41 64 6A 75 73 74 61 72 20 65 6C 20 74 65 6D 70 6F 0A 64 65 20 65 78 70 6F 73 69 63 69 9F 6E 3F 00 # # Text: Formatting resets the memory card and erases all photos on it. Format? # 45 6C 20 70 72 6F 63 65 73 6F 0A 64 65 20 66 6F 72 6D 61 74 6F 0A 72 65 73 74 61 62 6C 65 63 65 0A 6C 61 20 74 61 72 6A 65 74 61 20 64 65 0A 6D 65 6D 6F 72 69 61 20 79 20 62 6F 72 72 61 0A 74 6F 64 61 73 20 73 75 73 20 66 6F 74 6F 73 2E 0A 21 46 6F 72 6D 61 74 65 61 72 3F 00 # # Text: Formatting the memory card..... # 46 6F 72 6D 61 74 65 61 6E 64 6F 0A 6C 61 20 74 61 72 6A 65 74 61 0A 64 65 20 6D 65 6D 6F 72 69 61 2E 2E 2E 00 # # Text: Set for PAL TV? # 21 41 6A 75 73 74 61 72 20 70 61 72 61 0A 50 41 4C 20 54 56 3F 00 # # Text: Set for NTSC TV? # 21 41 6A 75 73 74 61 72 20 70 61 72 61 0A 4E 54 53 43 20 54 56 3F 00 # # Text: # 00 # # Text: This pict # 45 73 74 61 0A 69 6D 61 67 65 6E 00 # # Text: No # 4E 6F 00 # # Text: ALL pict # 54 6F 64 61 73 0A 6C 61 73 20 69 6D A0 67 65 6E 65 73 00 # # Text: January # 65 6E 65 72 6F 00 # # Text: February # 66 65 62 72 65 72 6F 00 # # Text: March # 6D 61 72 7A 6F 00 # # Text: April # 61 62 72 69 6C 00 # # Text: May # 6D 61 79 6F 00 # # Text: June # 6A 75 6E 69 6F 00 # # Text: July # 6A 75 6C 69 6F 00 # # Text: August # 61 67 6F 73 74 6F 00 # # Text: September # 73 65 70 74 69 65 6D 62 72 65 00 # # Text: October # 6F 63 74 75 62 72 65 00 # # Text: November # 6E 6F 76 69 65 6D 62 72 65 00 # # Text: December # 64 69 63 69 65 6D 62 72 65 00 # # Text: Day # 44 9E 61 00 # # Text: Month # 4D 65 73 00 # # Text: Year # 41 96 6F 00 # # Text: Time # 48 6F 72 61 00 # # Text: AM # 41 4D 00 # # Text: PM # 50 4D 00 # # Text: Set Date and Time # 20 20 46 65 63 68 61 20 79 20 68 6F 72 61 00 # # Text: Is this correct? # 21 53 6F 6E 20 63 6F 72 72 65 63 74 6F 3F 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: Service Menu # 20 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 20 20 00 # # Text: P # 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: S # 53 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service ID # 53 65 72 76 69 63 65 20 49 44 20 20 20 20 20 20 20 00 # # Text: Ver # 56 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service Menu 2 # 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 32 20 20 00 # # Text: Reset Pictures # 52 65 73 65 74 20 50 69 63 74 75 72 65 73 20 20 20 00 # # Text: Reset Strobe Pict # 52 65 73 65 74 20 53 74 72 6F 62 65 20 50 69 63 74 00 # # Text: Reset Born OnDate # 52 65 73 65 74 20 42 6F 72 6E 20 4F 6E 44 61 74 65 00 # # Text: Reset FactoryDflt # 52 65 73 65 74 20 46 61 63 74 6F 72 79 44 66 6C 74 00 # # Text: Are You Sure? # 41 72 65 20 59 6F 75 20 53 75 72 65 3F 00 # # Text: Reset to 0 # 52 65 73 65 74 20 74 6F 20 30 00 # # Text: S . # 53 20 20 2E 20 20 00 # # Text: M . # 4D 20 20 2E 20 20 00 # # Text: Yes # 59 65 73 00 # # Text: No # 4E 6F 00 # # Text: # 00 # # Text: BornOnDate # 42 6F 72 6E 4F 6E 44 61 74 65 20 20 20 20 20 20 20 00 # # Text: FinalErrCode # 46 69 6E 61 6C 45 72 72 43 6F 64 65 20 20 20 20 20 00 # # Text: ResetFinalErrCode # 52 65 73 65 74 46 69 6E 61 6C 45 72 72 43 6F 64 65 00 libgphoto2-2.5.9/camlibs/konica/localization/japanese0000644000175000001440000036070012557123324017606 00000000000000################################################################################ # LOCALIZATION FOR HP PhotoSmart C30 # # ---------------------------------- # # This file (except the comments) will be sent to the camera (0x9200 command). # # In order to make the data readable for humans, I commented the data and # # formatted to some extend. # # # # SYMBOLS # # ------- # # Each symbol begins with a red pixel in the upper left corner, followed by a # # yellow one, then by a blue one. The headline "red" does simply indicate that # # those are lines beginning with a red pixel. The same with headline "yellow" # # and headline "blue". The brightness of each pixel is defined by a value # # ranging between A (dark) and F (bright). # ################################################################################ # # Variable: KC_LOCALIZE_CARDREV # Value: 0x00 0x02 # Length: 32 # 4B 43 5F 4C 4F 43 41 4C 49 5A 45 5F 43 41 52 44 52 45 56 3A 00 02 FF FF FF FF FF FF FF FF FF FF # # Variable: LOCALIZATION # Length: 16 # 4C 4F 43 41 4C 49 5A 41 54 49 4F 4E FF FF FF FF # # Variable: LNG # Value: 0x05 # Length: 5 # Explanation: Indicator for language. Known values are: # - 0x00: English # - 0x01: French # - 0x02: Spanish # - 0x04: German # - 0x05: Japanese # - 0x06: Korean # 4C 4E 47 3A 05 # # Variable: TV # Value: 0x00 # Length: 4 # Explanation: Format of TV output. Accepted values are: # - 0x00: NTSC # - 0x01: PAL # - 0x02: Do not display TV menu. # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the format of the TV output. # 54 56 3A 00 # # Variable: DT # Value: 0x00 # Length: 7 # Explanation: Date format. Accepted values are: # - 0x00: Month/Day/Year # - 0x01: Day/Month/Year # - 0x02: Year/Month/Day # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the date format. # 44 54 3A 02 FF FF FF # # Variable: DST # Value: 0x00 0x86 0x00 0x00 # Length: 16 # 44 53 54 3A 00 86 00 00 FF FF FF FF FF FF FF FF # # Variable: SIZ # Value: 0x00 0x01 0x00 0x00 # Length: 16 # 53 49 5A 3A 00 01 00 00 FF FF FF FF FF FF FF FF # # Variable: SUM: # Value: 0x54 # Length: 8 # Explanation: Sum of all bytes starting with the table of contents. The camera # won't check this number. # 53 55 4D 3A 54 FF FF FF # # Variable: CRC # Value: 0xbf 0x32 # Length: 8 # Explanation: FCS (frame check sequence) of CRC (cyclic redundancy check). The # camera will check this number. # 43 52 43 3A EF 32 FF FF # # Table of Contents (text entries only) # # One entry: 00 FE XX XX (XX XX is the memory address). # 00 FE CF C0 00 FE CF C2 00 FE CF C4 00 FE CF C7 00 FE CF CA 00 FE CF D8 00 FE CF DC 00 FE CF DF 00 FE CF E1 00 FE CF E2 00 FE CF E3 00 FE CF EA 00 FE CF F3 00 FE CF F7 00 FE D0 04 00 FE D0 05 00 FE D0 0C 00 FE D0 15 00 FE D0 16 00 FE D0 1C 00 FE D0 2C 00 FE D0 32 00 FE D0 3E 00 FE D0 49 00 FE D0 50 00 FE D0 59 00 FE D0 5A 00 FE D0 64 00 FE D0 6D 00 FE D0 76 00 FE D0 77 00 FE D0 7B 00 FE D0 84 00 FE D0 8A 00 FE D0 91 00 FE D0 98 00 FE D0 B7 00 FE D0 C3 00 FE D0 CE 00 FE D0 D6 00 FE D0 DC 00 FE D0 E3 00 FE D0 E9 00 FE D1 15 00 FE D1 23 00 FE D1 36 00 FE D1 4A 00 FE D1 4B 00 FE D1 51 00 FE D1 57 00 FE D1 5D 00 FE D1 60 00 FE D1 63 00 FE D1 66 00 FE D1 69 00 FE D1 6C 00 FE D1 6F 00 FE D1 72 00 FE D1 75 00 FE D1 78 00 FE D1 7B 00 FE D1 7E 00 FE D1 81 00 FE D1 85 00 FE D1 89 00 FE D1 8D 00 FE D1 92 00 FE D1 95 00 FE D1 98 00 FE D1 A3 00 FE D1 AB 00 FE D1 AC 00 FE D1 AD 00 FE D1 AE 00 FE D1 AF 00 FE D1 B0 00 FE D1 B1 00 FE D1 B2 00 FE D1 B3 00 FE D1 B4 00 FE D1 B5 00 FE D1 C7 00 FE D1 D9 00 FE D1 EB 00 FE D1 FD 00 FE D2 0F 00 FE D2 21 00 FE D2 33 00 FE D2 45 00 FE D2 57 00 FE D2 69 00 FE D2 77 00 FE D2 82 00 FE D2 89 00 FE D2 90 00 FE D2 94 00 FE D2 97 00 FE D2 98 00 FE D2 AA 00 FE D2 BC # # Title: Take Pictures # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAABAEBAAAAAAAEBAEBAEBAEBAEBF BBAEAAABAABAEAAABAEBEEBAEBAEBAEE FEBAABAAAAEAAEAAEBAFAEEBAEBAEBAB EAEAAEAAEBAABAABAEBEBAAEBAEBAEBF BBAEBAEBAABAEBAEBAFAEBBAEBAEBAEE FEBAABAAAAEAAEAAEBEBAEBBAEBAEBAB EAEAAEAAEBAABAABAFAEBAEABAEBAEBF BBAEAAABAABAEBAEBEBAEBAEEBAEBAEE FEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAB EAEBAABAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAAABFFFFFFFFFFAFFEBFFFFFFFEAABF BBAAFFFFFFFFFFFAFFEBFFFFFFFFEAEE FEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAB EAABAEBAEFBEFBEFAAABEFBEEAAABEBF BAAEBAEBBEFBEFBAAAAABEFBEAAABAAE FEBAEBAEFBEFBEEAAAAABBEFAAAAAEAB EAABAEBAEFBEFBAABFFAAFBEEAAABEBF BAAEBAEBBEFBEEABFFFEAAFBEAAABAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAAFFFFFEABEFBEFBEBF BAAEBAEBBEFBEABFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBABFFFFFEAEFBEFBEEAB EAABAEBAEFBEFABFFFFFEABEFBEFBEBF BAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAABFFFEABBEFBEFBEBF BAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAE FEBAEBAEFBEFBEEAAAAABBEFBEFBEEAB EAABAEBAEFBEFBEAAAAAEFBEFBEFBEBF BAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Take Pictures # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAABAEBAAAAAAAEBAEBAEBAEBAEBA ABAEAAABAABAEAAABAEBEEBAEBAEBAEA AEBAABAAAAEAAEAAEBAFAEEBAEBAEBAA AAEAAEAAEBAABAABAEBEBAAEBAEBAEBA ABAEBAEBAABAEBAEBAFAEBBAEBAEBAEA AEBAABAAAAEAAEAAEBEBAEBBAEBAEBAA AAEAAEAAEBAABAABAFAEBAEABAEBAEBA ABAEAAABAABAEBAEBEBAEBAEEBAEBAEA AEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAA AAEBAABAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAAABFFFFFFFFFFAFFEBFFFFFFFEAABA ABAAFFFFFFFFFFFAFFEBFFFFFFFFEAEA AEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA AAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAA AAABAEBAEFBEFBEFAAABEFBEEAAABEBA AAAEBAEBBEFBEFBAAAAABEFBEAAABAAA AEBAEBAEFBEFBEEAAAAABBEFAAAAAEAA AAABAEBAEFBEFBAABFFAAFBEEAAABEBA AAAEBAEBBEFBEEABFFFEAAFBEAAABAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAAFFFFFEABEFBEFBEBA AAAEBAEBBEFBEABFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBABFFFFFEAEFBEFBEEAA AAABAEBAEFBEFABFFFFFEABEFBEFBEBA AAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAABFFFEABBEFBEFBEBA AAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAA AEBAEBAEFBEFBEEAAAAABBEFBEFBEEAA AAABAEBAEFBEFBEAAAAAEFBEFBEFBEBA AAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBEBAEBAEEBAEBAEE FEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAB EAEBAEBAEAAABAABAEAEBAEEBAEBAEBF BBAEBAEBAABAABAEBAFAEBBAEBAEBAEE FEBAEBAEBAEAAEAAEBABAEEBAEBAEBAB EAEBAEBAEAAAAAABAEBABBAEBAEBAEBF BBAEBAEBAABAEAAEBAEBEEBAEBAEBAEE FEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAB EAEBAEBAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAE FEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAB EABFFFFFFFFFFFFAFFEBFFFFFFFFFEBF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BABEFBEFBEFBEFBEFBEFBEFBEFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEEAEFBAAAAAAAAAAAAAABEABEBF BABEFBAABEFAEBAEBAEBAEBAAFAABAAE FEBBEFAABBEAAEBAEBAEBAEBAEAAAEAB EAAFBEAAAFBABAEBAEBAEBAEABAABEBF BABEFBEABEFAEBAEBAEBAEBAAFAAFAAE FEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEFBEABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAABBEAAEBAEBAEBAEBAEFBEEAB EAAFBEAAAFBABAEBAEBAEBAEABEFBEBF BABEFBAABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAEBAEBAEBAEBAAFBEFAAE FEBBAABEAAEAAEBAEBAEBAEBAEFBEEAB EAAFAAFBAABABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAAAAAAAAAAAAAAFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBEBAEBAEEBAEBAEA AEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAA AAEBAEBAEAAABAABAEAEBAEEBAEBAEBA ABAEBAEBAABAABAEBAFAEBBAEBAEBAEA AEBAEBAEBAEAAEAAEBABAEEBAEBAEBAA AAEBAEBAEAAAAAABAEBABBAEBAEBAEBA ABAEBAEBAABAEAAEBAEBEEBAEBAEBAEA AEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAA AAEBAEBAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AABFFFFFFFFFFFFAFFEBFFFFFFFFFEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA AABEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEEAEFBAAAAAAAAAAAAAABEABEBA AABEFBAABEFAEBAEBAEBAEBAAFAABAAA AEBBEFAABBEAAEBAEBAEBAEBAEAAAEAA AAAFBEAAAFBABAEBAEBAEBAEABAABEBA AABEFBEABEFAEBAEBAEBAEBAAFAAFAAA AEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEFBEABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAABBEAAEBAEBAEBAEBAEFBEEAA AAAFBEAAAFBABAEBAEBAEBAEABEFBEBA AABEFBAABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAEBAEBAEBAEBAAFBEFAAA AEBBAABEAAEAAEBAEBAEBAEBAEFBEEAA AAAFAAFBAABABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAAAAAAAAAAAAAAFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: View Small Photos # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABAAAAAAAABAAAAAAAAEAAAAAAAAEBF BBFAAEBABAAFABEFBEFAAAEFBAEBAAEE FEEABAEBEBAEAFBEFBEABABEFBAEABAB EABAEBABAEABAFFFEFBAEAFBEEBAAEBF BBFAAEBEBAAFABFFBEFAAAEFBAEBAAEE FEEABABAEBAEAFFEFBAABABEFBAEABAB EABAEBEBAEABAEFBEFBAEAFBEFBAAEBF BBFAABAEBAAFABEFBAEAAAFBBEFBAAEE FEEABEBAEBAEAFBEFBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEAAEAEBF BBFAEBAEBAAFABEFBAEAAAFBBAABAAEE FEEAAEBAEBAEAFBAEBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEFBEAEBF BBFAAAAAAAAFAAAAAAAAAAAAAAAAAAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAABAEFBEAAABEFBEBAAAEBAEBAAAEE FEBAEBAEFBABAFBEFAEABAAEBAEBABAB EAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBF BBAABAEFBEAAABEFBEBAAABBAEBAAAEE FEBAFBEEFBABAFBEFAEABAFBBAEBABAB EAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBF BBAABEFFBEAAAAEBBEFAAABEFEBAAAEE FEBAFBEEFBABABAEFBEABAFBEAEBABAB EAEABAEBEFAEAEBAEFBAEAEFBBAEAEBF BBAAEBAFBEAAAAEBBEFAAABEFEBAAAEE FEBAAEBEFBABABAEFBEABAFBEFEBABAB EAEABAEBEFAEAEBAEFBAEAEFBEAEAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAAEFBEFAAAAABEFBEAAABEFBEBAAEE FEBABFFBEBABABFBEFBABAFBEFAEABAB EAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBF BBAAEFBEBBAAAABEFFEAAABEFBEBAAEE FEBABEBAEFABABFBEFBABAFBBEAEABAB EAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABAFBBEAEABAB EAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABABAEBAEABAB EAEAAEBABEAEAAEBBAEAEAEBAEBAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: View Small Photos # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABAAAAAAAABAAAAAAAAEAAAAAAAAEBA ABFAAEBABAAFABEFBEFAAAEFBAEBAAEA AEEABAEBEBAEAFBEFBEABABEFBAEABAA AABAEBABAEABAFFFEFBAEAFBEEBAAEBA ABFAAEBEBAAFABFFBEFAAAEFBAEBAAEA AEEABABAEBAEAFFEFBAABABEFBAEABAA AABAEBEBAEABAEFBEFBAEAFBEFBAAEBA ABFAABAEBAAFABEFBAEAAAFBBEFBAAEA AEEABEBAEBAEAFBEFBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEAAEAEBA ABFAEBAEBAAFABEFBAEAAAFBBAABAAEA AEEAAEBAEBAEAFBAEBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEFBEAEBA ABFAAAAAAAAFAAAAAAAAAAAAAAAAAAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAABAEFBEAAABEFBEBAAAEBAEBAAAEA AEBAEBAEFBABAFBEFAEABAAEBAEBABAA AAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBA ABAABAEFBEAAABEFBEBAAABBAEBAAAEA AEBAFBEEFBABAFBEFAEABAFBBAEBABAA AAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBA ABAABEFFBEAAAAEBBEFAAABEFEBAAAEA AEBAFBEEFBABABAEFBEABAFBEAEBABAA AAEABAEBEFAEAEBAEFBAEAEFBBAEAEBA ABAAEBAFBEAAAAEBBEFAAABEFEBAAAEA AEBAAEBEFBABABAEFBEABAFBEFEBABAA AAEABAEBEFAEAEBAEFBAEAEFBEAEAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAAEFBEFAAAAABEFBEAAABEFBEBAAEA AEBABFFBEBABABFBEFBABAFBEFAEABAA AAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBA ABAAEFBEBBAAAABEFFEAAABEFBEBAAEA AEBABEBAEFABABFBEFBABAFBBEAEABAA AAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABAFBBEAEABAA AAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABABAEBAEABAA AAEAAEBABEAEAAEBBAEAEAEBAEBAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Screen Brightness # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBABBAEBAEBAEBAEBAB EAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAEAEEBABBAFAEBAEEBAABAEAAEBAB EAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABAAEAEBAEBAEBAEEAEBBAEBAB EAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAB EAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEABAEBAB EAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBF BBAEAEFAEBEFBEFFFFBEFBEEBAABBAEE FEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAB EAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAB EABAEBAEBEFBEFFFFFFFBEFBEEBAEBBF BAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAE FEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAB EAEBABAEBEFBEFFFFFFFBEFBEEBAAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAAAEBEFBEFBFFFFFBEFBEEBAABBAB EAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBF BBAEBAFAEBEFBEFFFFBEFBEEBAAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEBBAEBAB EAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAEBEFBEFBEFBEFBAEBBAEBAB EAEBAFAABAEBEFBEFBEFBEEBBABBAEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAEBABAEBAEBEFBEFBAEBAEABAEBAB EAEBAEAEBBABAEBAEBAEBBAFAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABBABBABAEBAEBBEABABBAEBAB EAEBAFBAEBEEBABAEBAAEAEEBABBAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAEBAEBABBAFBABBAEBAABAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Screen Brightness # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBABBAEBAEBAEBAEBAA AAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAEAEEBABBAFAEBAEEBAABAEAAEBAA AAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABAAEAEBAEBAEBAEEAEBBAEBAA AAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAA AAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEABAEBAA AAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBA ABAEAEFAEBEFBEFFFFBEFBEEBAABBAEA AEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAA AAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAA AABAEBAEBEFBEFFFFFFFBEFBEEBAEBBA AAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAA AEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAA AAEBABAEBEFBEFFFFFFFBEFBEEBAAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAAAEBEFBEFBFFFFFBEFBEEBAABBAA AAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBA ABAEBAFAEBEFBEFFFFBEFBEEBAAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEBBAEBAA AAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAEBEFBEFBEFBEFBAEBBAEBAA AAEBAFAABAEBEFBEFBEFBEEBBABBAEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAEBABAEBAEBEFBEFBAEBAEABAEBAA AAEBAEAEBBABAEBAEBAEBBAFAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABBABBABAEBAEBBEABABBAEBAA AAEBAFBAEBEEBABAEBAAEAEEBABBAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAEBAEBABBAFBABBAEBAABAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Date & Time # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEABAFBEFAEFBAFBEFBAFBEFBABF BBAEFBAFAEFBEABEEBEFBEFAEFBEFAEE FEABEFAEABEFBAFBAFBEFBEABEFBEAAB EAAFBEABAFBEFAEEBEFBEFBAFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEABAFAEFBEFBAFBEFBEFBEFBAFAEE FEABAFAEABEFBEFAEFBEFBEFBEEBEAAB EAAFAEABAFBEFBEABEFBEFBEFBAFBABF BBAEABAFAEFBEFBAFBEFBEFBEEBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBAFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFAEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEABEFBEFBEFAAABABF BBAEAAAFBEFBEFBAFBEFBEFBEAAAFAEE FEABAFAEFBEFBEFAEFBEFBEFBEFAEAAB EAAFAEABEFBEFBEABEFBEFBEFBEABABF BBAEAAAFBAAAAAAAABEFBEFBEFAAFAEE FEABAAAEFAAAAAAAAFBEFBEFBEAAEAAB EAAFBEABEFBEFBEABEFBEFBEFBEABABF BBAEFBAFBEFBEFBAFBEFBEFBEFBAFAEE FEABEFAEFBEFBEFAEFBEFBEFBAAAEAAB EAAFBEABEFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEABAFAEE FEABAFAEFBEFBEFBEFBEFBEFBAFAEAAB EAAFAEABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEAAAFAEE FEABAAAEFBEFBEFBEFBEFBEFBAAAEAAB EAAFAEABEAAAFBEFAEFBEFAAFBEABABF BBAEABAFBAAAEFBEABEFBEAAEFBAFAEE FEABAAAEFBEABEFBAFBEFBAFBEFBEAAB EAAFAAABEFBAFBEFAEFBEFAEFBEFBABF BBAEFBEFBEFAEFBEAAAFBEAAAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAEABEFBEABEFBABF BBAEFBEFBEFAEFBEABAFBEFBAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAAABEFAAABEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Date & Time # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEABAFBEFAEFBAFBEFBAFBEFBABA ABAEFBAFAEFBEABEEBEFBEFAEFBEFAEA AEABEFAEABEFBAFBAFBEFBEABEFBEAAA AAAFBEABAFBEFAEEBEFBEFBAFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEABAFAEFBEFBAFBEFBEFBEFBAFAEA AEABAFAEABEFBEFAEFBEFBEFBEEBEAAA AAAFAEABAFBEFBEABEFBEFBEFBAFBABA ABAEABAFAEFBEFBAFBEFBEFBEEBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBAFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFAEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEABEFBEFBEFAAABABA ABAEAAAFBEFBEFBAFBEFBEFBEAAAFAEA AEABAFAEFBEFBEFAEFBEFBEFBEFAEAAA AAAFAEABEFBEFBEABEFBEFBEFBEABABA ABAEAAAFBAAAAAAAABEFBEFBEFAAFAEA AEABAAAEFAAAAAAAAFBEFBEFBEAAEAAA AAAFBEABEFBEFBEABEFBEFBEFBEABABA ABAEFBAFBEFBEFBAFBEFBEFBEFBAFAEA AEABEFAEFBEFBEFAEFBEFBEFBAAAEAAA AAAFBEABEFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEABAFAEA AEABAFAEFBEFBEFBEFBEFBEFBAFAEAAA AAAFAEABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEAAAFAEA AEABAAAEFBEFBEFBEFBEFBEFBAAAEAAA AAAFAEABEAAAFBEFAEFBEFAAFBEABABA ABAEABAFBAAAEFBEABEFBEAAEFBAFAEA AEABAAAEFBEABEFBAFBEFBAFBEFBEAAA AAAFAAABEFBAFBEFAEFBEFAEFBEFBABA ABAEFBEFBEFAEFBEAAAFBEAAAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAEABEFBEABEFBABA ABAEFBEFBEFAEFBEABAFBEFBAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAAABEFAAABEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Erase # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBBFFAABAEBAEBAEBAEE FEBAEBAEBAEBAABFEBAEBAEBAEBAEBAB EAEBAEBAAAAAAAAAAAAAAAAABAEBAEBF BBAEBAEAAAAAAAAAAAAAAAAAABAEBAEE FEBAEBAAABEEBEBAAFAAAAEAAABAEBAB EAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBF BBAEBAAAAAAAAAAAAAAAAAAAABAEBAEE FEBAEAAAAAAAAAAAAAAAAAAAAABAEBAB EAEBAABFFFFFABEFBEFBEBAABAEBAEBF BBAEABFFFFFEAFBEFBEFBEBAABAEBAEE FEBABFFFFFFEBEFBEFBEFAEAAEBAEBAB EAEBFFFFFFEAFBEFAEBBEBAABAEBAEBF BBABFFFFFFEBEBBEAAEFBEBAABAEBAEE FEBFFFFFFFAFAEFBABAEFAEAAEBAEBAB EABFFFFFFFAEBBEFAEBBEBAABAEBAEBF BBABFFFFFAFAEBBEAAEFBEBAABAEBAEE FEAABFFFFAEFAEFBABAEFAEAAEBAEBAB EAEABFFFAFBEBBEFAEBBEBAABAEBAEBF BBAEABFFAEFAEBBEAAEFBEBAABAEBAEE FEBAEBFAABEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAAAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEAAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBAAAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAAABEBAABAEBAEBF BBAEBAEAAEFBEFBEFBEFBEAAABAEBAEE FEBAEBAABBEFBEFBEFBEFAAAAEBAEBAB EAEBAEBAEFBEFBEFBEFBEAAABAEBAEBF BBAEBAEAAABAEBAEBAEBAAAAABAEBAEE FEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAB EAEBAEBAEAAAAAAAAAAAAAAABAEBAEBF BBAEBAEBAAAAAAAAAAAAAAAAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Erase # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBBFFAABAEBAEBAEBAEA AEBAEBAEBAEBAABFEBAEBAEBAEBAEBAA AAEBAEBAAAAAAAAAAAAAAAAABAEBAEBA ABAEBAEAAAAAAAAAAAAAAAAAABAEBAEA AEBAEBAAABEEBEBAAFAAAAEAAABAEBAA AAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBA ABAEBAAAAAAAAAAAAAAAAAAAABAEBAEA AEBAEAAAAAAAAAAAAAAAAAAAAABAEBAA AAEBAABFFFFFABEFBEFBEBAABAEBAEBA ABAEABFFFFFEAFBEFBEFBEBAABAEBAEA AEBABFFFFFFEBEFBEFBEFAEAAEBAEBAA AAEBFFFFFFEAFBEFAEBBEBAABAEBAEBA ABABFFFFFFEBEBBEAAEFBEBAABAEBAEA AEBFFFFFFFAFAEFBABAEFAEAAEBAEBAA AABFFFFFFFAEBBEFAEBBEBAABAEBAEBA ABABFFFFFAFAEBBEAAEFBEBAABAEBAEA AEAABFFFFAEFAEFBABAEFAEAAEBAEBAA AAEABFFFAFBEBBEFAEBBEBAABAEBAEBA ABAEABFFAEFAEBBEAAEFBEBAABAEBAEA AEBAEBFAABEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAAAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEAAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBAAAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAAABEBAABAEBAEBA ABAEBAEAAEFBEFBEFBEFBEAAABAEBAEA AEBAEBAABBEFBEFBEFBEFAAAAEBAEBAA AAEBAEBAEFBEFBEFBEFBEAAABAEBAEBA ABAEBAEAAABAEBAEBAEBAAAAABAEBAEA AEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAA AAEBAEBAEAAAAAAAAAAAAAAABAEBAEBA ABAEBAEBAAAAAAAAAAAAAAAAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Camera Exposure # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEAABFFFFFEAAEBAEBAEBAB EAEBAEBAEBAEABFFFFFEABAEBAEBAEBF BBAEBAEBAEABFFFFFFFFFEAAEBAEBAEE FEBAEBAEBAABFFFFFFFFFEABAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEBABFFFFFFFFFFFFFEABAEBAEE FEBAEBAEABFFFFFFFFFFFFFEAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBAEBFFFFFFFFFFFFFFFEABAEBAB EAEBAEBABFFFFFFFFFFFFFFFEAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBABFFFFFEBEBEBFFFFFFEBAEBAB EAEBAEABFFFFFEBEBEBFFFFFFEABAEBF BBAEBAEBFFFFEBEBEBEABFFFFEAEBAEE FEBAEBABFFFFEBEBEBEABFFFFEBAEBAB EAEBAEABFFFFEBFFFFFEBFFFFEABAEBF BBAEBAEBFFFFEBFFFFFEBFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBABFFFFEBFFFEBFFFFEAEBAEBF BBAEBAEABFFFFEBFFFEBFFFFEBAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBABFFFFEBFEBFFFFEABAEBAEE FEBAEBAEABFFFFEBFEBFFFFEAEBAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBAEBFFFEBFEBFFFEAEBAEBAEE FEBAEBAEBABFFFEBFEBFFFEBAEBAEBAB EAEBAEBAEBABFFEBFEBFFEAEBAEBAEBF BBAEBAEBAEABFFEBFEBFFEBAEBAEBAEE FEBAEBAEBAEABFEBFEABEAEBAEBAEBAB EAEBAEBAEBAEBFEBFEABEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBAAAFBEAABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEABBEEAAAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAABAEBAEBAEBAB EAEBAEBAEBAEBAEAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Camera Exposure # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEAABFFFFFEAAEBAEBAEBAA AAEBAEBAEBAEABFFFFFEABAEBAEBAEBA ABAEBAEBAEABFFFFFFFFFEAAEBAEBAEA AEBAEBAEBAABFFFFFFFFFEABAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEBABFFFFFFFFFFFFFEABAEBAEA AEBAEBAEABFFFFFFFFFFFFFEAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBAEBFFFFFFFFFFFFFFFEABAEBAA AAEBAEBABFFFFFFFFFFFFFFFEAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBABFFFFFEBEBEBFFFFFFEBAEBAA AAEBAEABFFFFFEBEBEBFFFFFFEABAEBA ABAEBAEBFFFFEBEBEBEABFFFFEAEBAEA AEBAEBABFFFFEBEBEBEABFFFFEBAEBAA AAEBAEABFFFFEBFFFFFEBFFFFEABAEBA ABAEBAEBFFFFEBFFFFFEBFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBABFFFFEBFFFEBFFFFEAEBAEBA ABAEBAEABFFFFEBFFFEBFFFFEBAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBABFFFFEBFEBFFFFEABAEBAEA AEBAEBAEABFFFFEBFEBFFFFEAEBAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBAEBFFFEBFEBFFFEAEBAEBAEA AEBAEBAEBABFFFEBFEBFFFEBAEBAEBAA AAEBAEBAEBABFFEBFEBFFEAEBAEBAEBA ABAEBAEBAEABFFEBFEBFFEBAEBAEBAEA AEBAEBAEBAEABFEBFEABEAEBAEBAEBAA AAEBAEBAEBAEBFEBFEABEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBAAAFBEAABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEABBEEAAAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAABAEBAEBAEBAA AAEBAEBAEBAEBAEAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Format Memory Card # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEEFBEFBEFBEFBEFBEFBEFBEFBEFEE FEBBBAAAAAAAAAAAAAAAAAAAAAAABEAB EAEEFAAFAEABAFAEABAFAEABAFAAFBBF BBBBAAAAAAAAAAAAAAAAAAAAAAABEFEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEABBF BBFAAAAAFFFFFFFFFFFFFFFFFFFFAFEE FEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAB EABAABAAFFFFFFFFEFFFFFFFFFFEABBF BBFAAEAAFFFFFFFFABFFFFFFFFFFAFEE FEEABAEAFFFFFFFEBAFFFFFFFFFFAEAB EABAAAAAFFFFFFFAFEBFFFFFFFFEABBF BBFAAAAAFFFFFFEBEFAFFFFFFFFFAFEE FEEAAAABFFFFFFAFABEBFFFFFFFFAEAB EABAAAABFFFFFEBEAAFAFFFFFFFEABBF BBFAAAABFFFFFAFAAABEBFFFFFFFAFEE FEEAAAABFFFFEBEAAAAFAFFFFFFFAEAB EABAAAAFFFFFAFAAAAABEBFFFFFEABBF BBFAAAAFFFFEBEAAAAAAFAFFFFFFAFEE FEEAAAAFFFFAFAAAAAAABEBFFFFFAEAB EABAAAAFFFEBEAAAAAAAAFAFFFFEABBF BBFAAAAFFFAFAAAAAAAAABEBFFFFAFEE FEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAB EABAAABFFAFAABFFEBFFFABEBFFEABBF BBFAAABFEBEAAFFFEBFFFAAFAFFFAFEE FEEAAABFAFAABFAAABEAAAABEBFFAEAB EABAAABEBEAABEAAABEAAAAAFAFEABBF BBFAAAFAFAAABEAAABEAAAAABEBFAFEE FEEAAAFEBEAABEAAABFFEAAAFAFFAEAB EABAAAFFAFAABEAAABFFEAABEBFEABBF BBFAAAFFEBEABEAAABEAAAAFAFFFAFEE FEEAAAFFFAFABFAAABEAAABEBFFFAEAB EABAAAFFFEBEAFFFEBEAAAFAFFFEABBF BBFAABFFFFAFABFFEBEAABEBFFFFAFEE FEEAABFFFFEBEAAAAAAAAFAFFFFFAEAB EABAABFFFFFAFAAAAAAABEBFFFFEABBF BBFAABFFFFFEBEAAAAAAFAFFFFFFAFEE FEEAABFFFFFFAFAAAAABEBFFFFFFAEAB EABAABFFFFFFEBEAAAAFAFFFFFFEABBF BBFAAFFFFFFFFAFAAABEBFFFFFFFAFEE FEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAB EABAAFFFFFFFFFAFABEBFFFFFFFEABBF BBFAAFFFFFFFFFEBEFAFFFFFFFFFAFEE FEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAB EABAAFFFFFFFFFFEBAFFFFFFFFFEABBF BBFABFFFFFFFFFFFABFFFFFFFFFFAFEE FEEABFFFFFFFFFFFEFFFFFFFFFFFAEAB EABABFFFFFFFFFFFFFFFFFFFFFFEABBF BBFABFFFFFFFFFFFFFFFFFFFFFFFAFEE FEEABFFFFFFFFFFFFFFFFFFFFFFFBEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEFBBF BBFBEFBEFBEFBEFBEFBEFBEFBEFBEEEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAB EAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Format Memory Card # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEEFBEFBEFBEFBEFBEFBEFBEFBEFEA AEBBBAAAAAAAAAAAAAAAAAAAAAAABEAA AAEEFAAFAEABAFAEABAFAEABAFAAFBBA ABBBAAAAAAAAAAAAAAAAAAAAAAABEFEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEABBA ABFAAAAAFFFFFFFFFFFFFFFFFFFFAFEA AEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAA AABAABAAFFFFFFFFEFFFFFFFFFFEABBA ABFAAEAAFFFFFFFFABFFFFFFFFFFAFEA AEEABAEAFFFFFFFEBAFFFFFFFFFFAEAA AABAAAAAFFFFFFFAFEBFFFFFFFFEABBA ABFAAAAAFFFFFFEBEFAFFFFFFFFFAFEA AEEAAAABFFFFFFAFABEBFFFFFFFFAEAA AABAAAABFFFFFEBEAAFAFFFFFFFEABBA ABFAAAABFFFFFAFAAABEBFFFFFFFAFEA AEEAAAABFFFFEBEAAAAFAFFFFFFFAEAA AABAAAAFFFFFAFAAAAABEBFFFFFEABBA ABFAAAAFFFFEBEAAAAAAFAFFFFFFAFEA AEEAAAAFFFFAFAAAAAAABEBFFFFFAEAA AABAAAAFFFEBEAAAAAAAAFAFFFFEABBA ABFAAAAFFFAFAAAAAAAAABEBFFFFAFEA AEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAA AABAAABFFAFAABFFEBFFFABEBFFEABBA ABFAAABFEBEAAFFFEBFFFAAFAFFFAFEA AEEAAABFAFAABFAAABEAAAABEBFFAEAA AABAAABEBEAABEAAABEAAAAAFAFEABBA ABFAAAFAFAAABEAAABEAAAAABEBFAFEA AEEAAAFEBEAABEAAABFFEAAAFAFFAEAA AABAAAFFAFAABEAAABFFEAABEBFEABBA ABFAAAFFEBEABEAAABEAAAAFAFFFAFEA AEEAAAFFFAFABFAAABEAAABEBFFFAEAA AABAAAFFFEBEAFFFEBEAAAFAFFFEABBA ABFAABFFFFAFABFFEBEAABEBFFFFAFEA AEEAABFFFFEBEAAAAAAAAFAFFFFFAEAA AABAABFFFFFAFAAAAAAABEBFFFFEABBA ABFAABFFFFFEBEAAAAAAFAFFFFFFAFEA AEEAABFFFFFFAFAAAAABEBFFFFFFAEAA AABAABFFFFFFEBEAAAAFAFFFFFFEABBA ABFAAFFFFFFFFAFAAABEBFFFFFFFAFEA AEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAA AABAAFFFFFFFFFAFABEBFFFFFFFEABBA ABFAAFFFFFFFFFEBEFAFFFFFFFFFAFEA AEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAA AABAAFFFFFFFFFFEBAFFFFFFFFFEABBA ABFABFFFFFFFFFFFABFFFFFFFFFFAFEA AEEABFFFFFFFFFFFEFFFFFFFFFFFAEAA AABABFFFFFFFFFFFFFFFFFFFFFFEABBA ABFABFFFFFFFFFFFFFFFFFFFFFFFAFEA AEEABFFFFFFFFFFFFFFFFFFFFFFFBEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEFBBA ABFBEFBEFBEFBEFBEFBEFBEFBEFBEEEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAA AAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Lock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBF BBAEBAEBAAEAAFBEFBEAAEAAEBAEBAEE FEBAEBAEABEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Lock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBA ABAEBAEBAAEAAFBEFBEAAEAAEBAEBAEA AEBAEBAEABEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Unlock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAAAEBAEBAEBAEAAEBAEBAEE FEBAEBAEAAABAEBAEBAEABABAEBAEBAB EAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBF BBAEBAEBAEAAAFBEFBEAAEAAEBAEBAEE FEBAEBAEBAEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Unlock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAAAEBAEBAEBAEAAEBAEBAEA AEBAEBAEAAABAEBAEBAEABABAEBAEBAA AAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBA ABAEBAEBAEAAAFBEFBEAAEAAEBAEBAEA AEBAEBAEBAEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set for PAL / NTSC TV # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAABAEBAEBAEBAEBAABAEBAB EAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBF BBAEBAEBAEAAEBAEBAEBAEBAABAEBAEE FEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAB EAEBAEBAEBAABAEBAEBAEBAABAEBAEBF BBAEBAEBAEBAABAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAABAEBAEBAABAEBAEBAB EAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBF BBAEBAEBAEBAEAAEBAEBAABAEBAEBAEE FEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAB EAEBAEBAEBAEBAABAEBAABAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEABEFBEFBEFBEFBEFBEFBEFBEEAABF BBAAFBEFBEFBEFBEFBEFBEFBEFBAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAB EAEAAAAAAAAAAAAAAAAAAAAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAEAEE FEAAAAAAAAAAAAAAAAAAAAAAAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAEBAEBAEBAEBAEBAEBAAAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEFBEBAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBAEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAAAAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set for PAL / NTSC TV # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAABAEBAEBAEBAEBAABAEBAA AAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBA ABAEBAEBAEAAEBAEBAEBAEBAABAEBAEA AEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAA AAEBAEBAEBAABAEBAEBAEBAABAEBAEBA ABAEBAEBAEBAABAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAABAEBAEBAABAEBAEBAA AAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBA ABAEBAEBAEBAEAAEBAEBAABAEBAEBAEA AEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAA AAEBAEBAEBAEBAABAEBAABAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEABEFBEFBEFBEFBEFBEFBEFBEEAABA ABAAFBEFBEFBEFBEFBEFBEFBEFBAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAA AAEAAAAAAAAAAAAAAAAAAAAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAEAEA AEAAAAAAAAAAAAAAAAAAAAAAAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAEBAEBAEBAEBAEBAEBAAAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEFBEBAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBAEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAAAAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Start Slide Show # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAB EAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAAFBEFBEFBEFBEFBEFBEAAEE FEBAEBAEBAEFBEFBEFBEFBEFBEFBABAB EAEBAEBAAFBEFBEFBEFBEFBEFBEFBABF BBAEBAEBAEFBEFBEFBEFBEFBEFBEFAEE FEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAB EAEBAEBAAAAAAAAAAAAAAAAAABEFBABF BBAEBAAFBEFBEFBEFBEFBEFBEABEFAEE FEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAB EAEBAAFBEFBEFBEFBEFBEFBEFBAFBABF BBAEBAEFBEFBEFBEFBEFBEFBEFAEFAEE FEBAAAAAAAAAAAAAAAAAAAEFBEABEAAB EAEBAAAAAAAAAAAAAAAAAABEFBAFBABF BBAAFBEFBEFBEFBEFBEFBEABEFAEFAEE FEBAEFBEFBEFBEFBEFBEFBAFBEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEFBEFBEFBEFBEFBEFAEFAEFAEE FEABEFBEFBEFBEFBEFBEFBEABEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEAAAAAAAAAAAAFBEFAEFAEFAEE FEABEFBAAAAAAAAAAAAEFBEABEABEAAB EAAFBEAAEBAEBAEBAEBAEFBAFBAFBABF BBAEFBABAEBAEBAEBAEABEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABABAB EAAFBABAEBAEBAEBAEBAAFBAFBAFAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAABAEE FEABEAAEBAEBAEBAEBAEABEABEAAEBAB EAAFBABAEBAEBAEBAEBAAFBAFBABAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAEBAEE FEABEFAEBAEBAEBAEBAAFBEABABAEBAB EAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBF BBAEFBEAAAAAAAAAAAAFBEFAABAEBAEE FEABEFBAAAAAAAAAAAAEFBEAAEBAEBAB EAAFBEFBEFBEFBEFBEFBEFBABAEBAEBF BBAEFBEFBEFBEFBEFBEFBEFAEBAEBAEE FEBAEFBEFBEFBEFBEFBEFBABAEBAEBAB EAEABEFBEFBEFBEFBEFBEFAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAABAEBAEBAEE FEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Start Slide Show # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAA AAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAAFBEFBEFBEFBEFBEFBEAAEA AEBAEBAEBAEFBEFBEFBEFBEFBEFBABAA AAEBAEBAAFBEFBEFBEFBEFBEFBEFBABA ABAEBAEBAEFBEFBEFBEFBEFBEFBEFAEA AEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAA AAEBAEBAAAAAAAAAAAAAAAAAABEFBABA ABAEBAAFBEFBEFBEFBEFBEFBEABEFAEA AEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAA AAEBAAFBEFBEFBEFBEFBEFBEFBAFBABA ABAEBAEFBEFBEFBEFBEFBEFBEFAEFAEA AEBAAAAAAAAAAAAAAAAAAAEFBEABEAAA AAEBAAAAAAAAAAAAAAAAAABEFBAFBABA ABAAFBEFBEFBEFBEFBEFBEABEFAEFAEA AEBAEFBEFBEFBEFBEFBEFBAFBEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEFBEFBEFBEFBEFBEFAEFAEFAEA AEABEFBEFBEFBEFBEFBEFBEABEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEAAAAAAAAAAAAFBEFAEFAEFAEA AEABEFBAAAAAAAAAAAAEFBEABEABEAAA AAAFBEAAEBAEBAEBAEBAEFBAFBAFBABA ABAEFBABAEBAEBAEBAEABEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABABAA AAAFBABAEBAEBAEBAEBAAFBAFBAFAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAABAEA AEABEAAEBAEBAEBAEBAEABEABEAAEBAA AAAFBABAEBAEBAEBAEBAAFBAFBABAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAEBAEA AEABEFAEBAEBAEBAEBAAFBEABABAEBAA AAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBA ABAEFBEAAAAAAAAAAAAFBEFAABAEBAEA AEABEFBAAAAAAAAAAAAEFBEAAEBAEBAA AAAFBEFBEFBEFBEFBEFBEFBABAEBAEBA ABAEFBEFBEFBEFBEFBEFBEFAEBAEBAEA AEBAEFBEFBEFBEFBEFBEFBABAEBAEBAA AAEABEFBEFBEFBEFBEFBEFAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAABAEBAEBAEA AEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 72 # Height: 36 # Length: 2592 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBE AEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFB BAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEF EBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Width: 18 # Height: 12 # Length: 216 # 0000000000000000000000000000FBEF0000 0000EEFE00000000BBAB00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000BBAB00000000FAAF0000 0000EFBE0000000000000000000000000000 # # Title: ? # Length: 544 # FBCFBCFBEF3EF3EF # FAEBAEBAEBAEBAE8 ABAEBAEAAEBAEBAF EEBAEBAEFAEBAEBB FAEBAEFAAFAEBAEA 2BAEBBEBAAEAEBAF EEBAEFAEBAEBAEBB FAEBAEBAEBBABAE8 ABAEAAEBAEBAEBAF EEBAEEAEBAABAEBB FAEBAEAAABBABAEA 2BAEAAAFBEBAEBAF EEBAEFBBABEBAEBB FAEBAAFAAFAABAE8 ABAEABEAAEFAEBAF EEBAEEABEAEBAEBB FAEBBEAAAABEBAEA 2BAEBAEAABAAABAF EEBAEAAAAAAFAEBB FAEAAAAFFAAABAE8 ABAEEABEBEABABAF EEBAEEBAAEBBAEBB FAEAAABEBEAABAEA 2BAEFAAFFAABABAF EEBAAAEAABAEAEBB FAEBBEAAAABEBAE8 ABAEABABEAFAEBAF EEBAEBBAABEBAEBB FAEBAEBBEEAEBAEA 2BAEBAAAAABAEBAF EEBAEBAEBAEBAEBB # CFBEF3CF3CFBEFBC # FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # same as above FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000020000 00000000000000000000000000000000000AC000 00000000000000000000000000000000002BA000 0000000000000000000000000000000000AEB800 0000000000000000000000000000000002BAEB00 000000000000000000000000000000000AEBAE80 000000000000000000000000000000002BAEBAE0 00000000000000000000000000000000AEBAEBAC 000000000000000000000000000000003AEBAEB0 000000000000000000000000000000000BAEBAC0 0000000000000000000000000000000002BAEB00 0000000000000000000000000000000000EBAC00 00000000000000000000000000000000002EB000 00000000000000000000000000000000000AC000 0000000000000000000000000000000000030000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000200000000000000020000 0000000000000000000B800000000000000AC000 0000000000000000002EB00000000000002BA000 000000000000000000BAE8000000000000AEB800 000000000000000002EBAE000000000002BAEB00 00000000000000000BAEBAC0000000000AEBAE80 00000000000000002EBAEBA0000000002BAEBAE0 0000000000000000BAEBAEB800000000AEBAEBAC 00000000000000002BAEBAE0000000003AEBAEB0 00000000000000000EBAEB80000000000BAEBAC0 000000000000000002EBAE000000000002BAEB00 000000000000000000AEB8000000000000EBAC00 0000000000000000003AE00000000000002EB000 0000000000000000000B800000000000000AC000 0000000000000000000200000000000000030000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0003000000000000000200000000000000020000 000E800000000000000B800000000000000AC000 003AE00000000000002EB00000000000002BA000 00EBAC000000000000BAE8000000000000AEB800 03AEBA000000000002EBAE000000000002BAEB00 0EBAEB80000000000BAEBAC0000000000AEBAE80 3AEBAEB0000000002EBAEBA0000000002BAEBAE0 EBAEBAE800000000BAEBAEB800000000AEBAEBAC 2EBAEBA0000000002BAEBAE0000000003AEBAEB0 0AEBAE80000000000EBAEB80000000000BAEBAC0 03AEBA000000000002EBAE000000000002BAEB00 00BAE8000000000000AEB8000000000000EBAC00 002BA00000000000003AE00000000000002EB000 000E800000000000000B800000000000000AC000 0002000000000000000200000000000000030000 # # Title: ? # Width: 72 # Height: 74 # Length: 5328 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAFBEFBEFBEFBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEEAAAAA AAAAABEFBEFBEFBEFBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEAAA AAAFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBAAA AAAFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFAAA AAAFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEAAA AAAFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 24 # Height: 10 # Length: 240 # 00000003800000000000000EB00000000000003AE8000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 0000002BAC0000000000000EB000000000000002C0000000 # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF8EAA8AE88FFFFFFFFFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFF8EEEEA888A8AA8AAEEEEFEEFF8FFFFFFFF FFFFF8FFFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFF FFFF89999999999FAAAAAAAAEEEEEF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF F89999999999998EAAAA8F88AEEEEF8FFFFFFFFF 899999999999AAEEAAA8FEFFAAEFFF8FFFFFFFFF F8999999999A88EEAAA8FFEEAEEEEF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFF899998AA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFF8988EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFF888EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA888EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA888AAAAAAAAAAAEEEEF8FFFFFFFFF FFFFFFF88EAAAAAAAAAAEAEEAEEFFF8FFFFFFFFF FFFFFFFFF88EEEEEEEEEEEEEEEFFF88FFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # 9999999999999999FFFFFF999999999999999999 999999999999999FEAA8AEFF9999999999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 999999FEEEEA888A8AA8AAEEEEFEEFFF99999999 99999FFFFFFFFFFFFFFFFFFFFFFFFFFF99999999 99999F888888888FAAAAAAAAEEEEEFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 9F8888888888FF8EAAAA8F88AEEEEFF999999999 F8888888888FAAEEAAA8FEFFAAEFFFF999999999 9F88888888FA88EEAAA8FFEEAEEEEFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 9999F8888FAA88EEAAA8FFEEAEEEEFF999999999 99999F8FFEAA88EEAAA8FEEEAAEFFFF999999999 999999FFFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA888EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA888AAAAAAAAAAAEEEEFF999999999 9999999FFEAAAAAAAAAAEAEEAEEFFFF999999999 999999999FFEEEEEEEEEEEEEEEFFFFF999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999999999999999999999999999999999 # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF88888888888888888888888888888888888FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FDDDDDBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDDDBBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDBBBBBBFF8FCCCCCEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCCEEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCEEEEEF8FAAA99999F8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FBBBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FCCCCAAAFF8FCCCCCDDDF8FCCCBBBBBF8FFF FF88FCCCCAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99999B9FF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99BBBB9FF8FDAAAAAAAF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEE99FF8FEEEEBBBBF8FDDDDDDDDF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9F99999999999999999999999999999999999FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FDDDDDBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDDDBBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDBBBBBBFF9FCCCCCEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCCEEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCEEEEEF9FAAA99999F9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FBBBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FCCCCAAAFF9FCCCCCDDDF9FCCCBBBBBF9FF9 9F99FCCCCAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99999B9FF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99BBBB9FF9FDAAAAAAAF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEE99FF9FEEEEBBBBF9FDDDDDDDDF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9999999999999999999999999999999999999999 # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFF88EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8888FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFFF8EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FFFF99999999999FEFF99999999999 9999999999999999999999999FEFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999FFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEEFFFFF FFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAEFFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEFFF FFFFFFFEEAAAAAAAAAAAAAAAAAAAAAAEAAAAEFFF FFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEAAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEEFFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEFFFFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAEFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEFFFFFFFFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEFFFFFFFFFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 999999999999FFFFFFFFFFFFFFFFFFFFFFF99999 99999999999FAAAAAAAAAAAAAAAAAAAAAAAF9999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 999999999FFFFFFFFFFFFFFFFFFFFFFAAAAAF999 9999999FFAAAAAAAAAAAAAAAAAAAAAAFAAAAF999 999999FAAAAAAAAAAAAAAAAAAAAAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 9999FAAAAAAAAAAAAAAAAAAAAAAFFAAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFF99999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFF999999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAF99999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAF9999999999 9999FAAAAAAAAAAAAAAAAAAAAAAFF99999999999 99999FFFFFFFFFFFFFFFFFFFFFF9999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 # # Title: Locked # Width: 12 # Height: 24 # Length: 288 # 999999999999999999999999 99999999FFEEEFF999999999 9999999FEEFFFEEF99999999 9999999EEF999FEE99999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9FFFFF9FF9999999 999999FFFEEEEEFFF9999999 999999FEEEDDDEEEF9999999 99999FEEEEFFFEEEEF999999 9999FEEEFFF8FFFEEEF99999 9999FEEFFFFFFFFFEEF99999 9999EEEFFFFFFFFFEEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF88AFFFFEE99999 9999EEFFFF8AEFFFFEE99999 9999FEEFFFFFFFFF8EF99999 99999FEFFFFFFFFFEF999999 999999FEFFF8FFFEF9999999 9999999EEEFFF8EE99999999 999999999FFFFF9999999999 999999999999999999999999 # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000B00000 000000000000000000000000000000000BBB0000 00000000000000000000000000000000BBBBB000 0000000000000000000000000000000BBBBBBB00 000000000000000000000000000000BBBBBBBBB0 0000000000000000000000000000000BBBBBBB00 00000000000000000000000000000000BBBBB000 000000000000000000000000000000000BBB0000 0000000000000000000000000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 00000000000000000000B0000000000000B00000 0000000000000000000BBB00000000000BBB0000 000000000000000000BBBBB000000000BBBBB000 00000000000000000BBBBBBB0000000BBBBBBB00 0000000000000000BBBBBBBBB00000BBBBBBBBB0 00000000000000000BBBBBBB0000000BBBBBBB00 000000000000000000BBBBB000000000BBBBB000 0000000000000000000BBB00000000000BBB0000 00000000000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 000000B0000000000000B0000000000000B00000 00000BBB00000000000BBB00000000000BBB0000 0000BBBBB000000000BBBBB000000000BBBBB000 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 00BBBBBBBBB00000BBBBBBBBB00000BBBBBBBBB0 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 0000BBBBB000000000BBBBB000000000BBBBB000 00000BBB00000000000BBB00000000000BBB0000 000000B0000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAABEFBEFBEFBEFBEFBEFBEAAAAEB AEAAAAFBEFBEFBEFBEFBEFBEFBAAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAABBEFBEFBEFBEFBEFBEFBEEAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBAEABAE BAEAFAAFBEFBEFBEFBEFBEFBEEBEAABA EBABEFAEFBEFBEFBEFBEFBEFBAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEEBEFABAE BAEAFBEABEFBEFBEFBEFBEFBAFBEEABA EBABEFBEBBEFBEFBEFBEFBEEBEFBEAEB AEABBEFBAFBEFBEFBEFBEFBAFBEFABAE BAEAFBEFAAFBEFBEFBEFBEEBEFBEEABA EBABEFBEFAEFBEFBEFBEFBEFBEFBEAEB AEABBEFBEEBEFBAFBEFBEFBEFBEFABAE BAEAFBEFBEABEEBEFBEFBEFBEFBEEABA EBABEFBEFBEFAABBEFBEFBEFBEFBEAEB AEABBEFBEFBEAAAFBEFBEFBEFBEFABAE BAEAFBEFBEFAAABEAAEAAAFBEFBEEABA EBABEFBEFBEFAABBAABAABEFBEFBEAEB AEABBEFBEFBEEAAFAAEAAFBEFBEFABAE BAEAFBEFBEFBEABEEAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFBEABEFBEFBEFABAE BAEAFBEFBEFBEABEFAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFAAFAAFBEFBEFABAE BAEAFBEFBEEBEABEAAEAAEFBEFBEEABA EBABEFBEFBAFAABAABBEABEFBEFBEAEB AEABBEFBEEBEFBEFBEFBEFAEFBEFABAE BAEAFBEFBAFBEFBEFBEFBEEBEFBEEABA EBABEFBEEBEFBEFBEFBEFBEABEFBEAEB AEABBEFBAFBEFBEFBEFBEFBEBBEFABAE BAEAFBEEBEFBEFBEFBEFBEFBAFBEEABA EBABEFBAFBEFBEFBEFBEFBEFAAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEFAEFABAE BAEAFBAFBEFBEFBEFBEFBEFBEEBEAABA EBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBEAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAAABEFBEFBEFBEFBEFBEFBEEAAAEB AEAAAABBEFBEFBEFBEFBEFBEFBAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Normal # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAABEFBEFBEFBEFBEFBEFBEAAAAEE FEAAAAFBEFBEFBEFBEFBEFBEFBAAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAABBEFBEFBEFBEFBEFBEFBEEAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBAEABAB EAEAFAAFBEFBEFBEFBEFBEFBEEBEAABF BBABEFAEFBEFBEFBEFBEFBEFBAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEEBEFABAB EAEAFBEABEFBEFBEFBEFBEFBAFBEEABF BBABEFBEBBEFBEFBEFBEFBEEBEFBEAEE FEABBEFBAFBEFBEFBEFBEFBAFBEFABAB EAEAFBEFAAFBEFBEFBEFBEEBEFBEEABF BBABEFBEFAEFBEFBEFBEFBEFBEFBEAEE FEABBEFBEEBEFBAFBEFBEFBEFBEFABAB EAEAFBEFBEABEEBEFBEFBEFBEFBEEABF BBABEFBEFBEFAABBEFBEFBEFBEFBEAEE FEABBEFBEFBEAAAFBEFBEFBEFBEFABAB EAEAFBEFBEFAAABEAAEAAAFBEFBEEABF BBABEFBEFBEFAABBAABAABEFBEFBEAEE FEABBEFBEFBEEAAFAAEAAFBEFBEFABAB EAEAFBEFBEFBEABEEAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFBEABEFBEFBEFABAB EAEAFBEFBEFBEABEFAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFAAFAAFBEFBEFABAB EAEAFBEFBEEBEABEAAEAAEFBEFBEEABF BBABEFBEFBAFAABAABBEABEFBEFBEAEE FEABBEFBEEBEFBEFBEFBEFAEFBEFABAB EAEAFBEFBAFBEFBEFBEFBEEBEFBEEABF BBABEFBEEBEFBEFBEFBEFBEABEFBEAEE FEABBEFBAFBEFBEFBEFBEFBEBBEFABAB EAEAFBEEBEFBEFBEFBEFBEFBAFBEEABF BBABEFBAFBEFBEFBEFBEFBEFAAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEFAEFABAB EAEAFBAFBEFBEFBEFBEFBEFBEEBEAABF BBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBEAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAAABEFBEFBEFBEFBEFBEFBEEAAAEE FEAAAABBEFBEFBEFBEFBEFBEFBAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Zoom # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEEABAE BAEAABAFBEFBEFBEFBEFBEFBEABAEABA EBABEBAEFBEFBEFBEFBEFBEFBAEBEAEB AEABBAABEFBEFBEFBEFBEFBEFAAFABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAAAAAAAAAAAAAAAAAAAAABEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEFFEBAEBAEBAEAFABAE BAEAFABAEBAEBBFFFEBAEBAEBABEEABA EBABEEABAFFAEFFFFEEBAEBAEABBEAEB AEABBEAEBBEBAFFBFFAEBAEBAEAFABAE BAEAFABAEBEEBFEBFEBFFBFFFABEEABA EBABEEABAFFAEBEFFEEFFEFFEABBEAEB AEABBEAFFFFFEEBFFBAFFBFFAEAFABAE BAEAFABBFFFFFAFFFEBBFFFEBABEEABA EBABEEABAFFAEBBFFAEBFFFAEABBEAEB AEABBEAEBBEBAEFFEBAEBFEBAEAFABAE BAEAFABAEBEEBAFFAEBAFFFEBABEEABA EBABEEABAFFAEBFEBAEBFFFAEABBEAEB AEABBEAEBAEBAFFFFFAFFAFFAEAFABAE BAEAFABAEBAEBFFFFEBFFBFFBABEEABA EBABEEABAEBAFFFFFEFFEEBFEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAAAAAAAAAAAAAAAAAAAAABABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAEFBEFBEFBEFBEFBEFBAABEAEB AEABBAABEFBEFBEFBEFBEFBEFAEBABAE BAEAEBAFBEFBEFBEFBEFBEFBEABAEABA EBABAFBEFBEFBEFBEFBEFBEFBEFAAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEFABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Zoom # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEEABAB EAEAABAFBEFBEFBEFBEFBEFBEABAEABF BBABEBAEFBEFBEFBEFBEFBEFBAEBEAEE FEABBAABEFBEFBEFBEFBEFBEFAAFABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAAAAAAAAAAAAAAAAAAAAABEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEFFEBAEBAEBAEAFABAB EAEAFABAEBAEBBFFFEBAEBAEBABEEABF BBABEEABAFFAEFFFFEEBAEBAEABBEAEE FEABBEAEBBEBAFFBFFAEBAEBAEAFABAB EAEAFABAEBEEBFEBFEBFFBFFFABEEABF BBABEEABAFFAEBEFFEEFFEFFEABBEAEE FEABBEAFFFFFEEBFFBAFFBFFAEAFABAB EAEAFABBFFFFFAFFFEBBFFFEBABEEABF BBABEEABAFFAEBBFFAEBFFFAEABBEAEE FEABBEAEBBEBAEFFEBAEBFEBAEAFABAB EAEAFABAEBEEBAFFAEBAFFFEBABEEABF BBABEEABAFFAEBFEBAEBFFFAEABBEAEE FEABBEAEBAEBAFFFFFAFFAFFAEAFABAB EAEAFABAEBAEBFFFFEBFFBFFBABEEABF BBABEEABAEBAFFFFFEFFEEBFEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAAAAAAAAAAAAAAAAAAAAABABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAEFBEFBEFBEFBEFBEFBAABEAEE FEABBAABEFBEFBEFBEFBEFBEFAEBABAB EAEAEBAFBEFBEFBEFBEFBEFBEABAEABF BBABAFBEFBEFBEFBEFBEFBEFBEFAAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEFABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Length: 48 # 00000002 00000002 00000002 00000002 00000002 00000002 00000002 00000002 00000002 00000002 00000002 00000002 # # Title: ? # Length: # 00000000000007E01FF81C38381C381C381C381C1C381FF807E0000000000000 00000000000003801F801F80038003800380038003803FF83FF8000000000000 0000000000000FE03FF03838003800F003E00F803E383FF83FF8000000000000 0000000000000FE03FF03838003803F003F0003838383FF00FE0000000000000 00000000000003E007E00EE01CE038E07FF87FF800E007F807F8000000000000 0000000000003FF83FF838003FE03FF00078003878783FF00FC0000000000000 00000000000007F01FF03C003BC07FF07C7878383C783FF00FC0000000000000 0000000000003FF83FF8007000F000E001E001C003C003800780000000000000 00000000000007E01FF81C381C380FF01FF8381C381C1FF807E0000000000000 00000000000007E01FF83C78383C3C7C1FFC07B800781FF01FC0000000000000 0000000000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 0000000000007FF87FFE1C0E1C0E1FF81FFE1C0E1C0E7FFE7FF8000000000000 00000000000007F61FFE3C0E78067000700078003C0E1FFE07F0000000000000 0000000000007FE07FF81C3C1C1E1C0E1C0E1C1E1C3C7FF87FE0000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C001C007F807F80000000000000 00000000000007F61FFE3C0E78007000703F783F3C0E1FFE07F0000000000000 0000000000007E7E7E7E1C381C381FF81FF81C381C387E7E7E7E000000000000 0000000000003FF83FF80380038003800380038003803FF83FF8000000000000 00000000000007FE07FE0070007000707070707078F03FE01FC0000000000000 0000000000007EFC7EFC1C701CE01FC01FE01DF01C7C7F3E7F3E000000000000 0000000000007FC07FC00E000E000E000E000E060E067FFE7FFE000000000000 000000000000F83EFC7E7C7C7EFC77DC77DC739C739CF93EF83E000000000000 000000000000F8FEFCFE3E383F383FB83BF839F838F8FE78FE38000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0000000000007FF07FF81C3C1C1C1C3C1FF81FF01C007F007F00000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE01FFE1CFC0000 0000000000007FF07FFC1C3C1C3C1FF81FF01CF01C787F3E7F1E000000000000 0000000000001FEC7FFC701C70007FF01FFC001C701C7FFC6FF0000000000000 0000000000007FFC7FFC739C739C03800380038003803FF83FF8000000000000 0000000000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 000000000000FEFEFEFE38381C701C700EE00EE007C007C00380000000000000 000000000000FC3FFC3F718E718E3BDC3BDC3FFC1E781C381C38000000000000 0000000000007F7E7F7E1E380FF007C003E00FF01C787EFE7EFE000000000000 0000000000007EFC7EFC1C700EE007C007C0038003801FF01FF0000000000000 0000000000003FFC3FFC38F839F003E007C00F9C1F1C3FFC3FFC000000000000 000000000000000000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000000F800F8003BF03FFC3C1E380E380E3C1EFFFCFBF0000000000000 000000000000000000000FDC3FFC783C70007000781C3FFC0FF0000000000000 000000000000007C007C0FDC3FFC783C701C701C783C3FFF0FDF000000000000 000000000000000000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 00000000000001FC07FC07003FF03FF00700070007003FF03FF0000000000000 000000000000000000000FDF3FFF783C701C701C783C3FFC0FDC001C3FF81FF0 000000000000F800F8003BF03FF83C38383838383838FEFEFEFE000000000000 000000000380038000001F801F8003800380038003803FF83FF8000000000000 0000000000E000E000003FE03FE000E000E000E000E000E000E001E03FC03F80 0000000000007C007C001CF81CF81DE01F801FC01FF07CFC7C7C000000000000 0000000000001F801F800380038003800380038003803FF83FF8000000000000 00000000000000000000EF78FFFC739C739C739C739CFBDEFBDE000000000000 00000000000000000000FBF0FFF83C38383838383838FEFEFEFE000000000000 000000000000000000000FF03FFC781E700E700E781E3FFC0FF0000000000000 00000000000000000000FBF0FFFC3C1E380E380E3C1E3FFC3BF03800FF00FF00 000000000000000000001FBE7FFEF078E038E038F0787FF81FB8003801FE01FE 000000000000000000003EF83FFE0F1E0E000E000E007FF07FF0000000000000 000000000000000000001FB07FF070307FC01FF060707FF06FC0000000000000 0000000000001C001C00FFF0FFF01C001C001C001C1C1FFC07F0000000000000 00000000000000000000F8F8F8F838383838383838783FFE0FBE000000000000 00000000000000007E7E7E7E1C381E780E7007E007E003C003C0000000000000 00000000000000000000F83EF93E739C7BBC3FF83EF81C701C70000000000000 000000000000000000007EFC7EFC1E700FC007E01CF07EFC7EFC000000000000 000000000000000000007E7E7E7E1C380E700FE007C00380038007003FC03FC0 000000000000000000003FF83FF831F003C007801F183FF83FF8000000000000 00000000000003C003C003C003C003C001800180000003C003C0000000000000 000000000000000000000000000000000000000003C003C003C0000000000000 0000000000000FF01FF81C38003800F007C00700000007800780000000000000 000000000000001C0038007000E001C0038007000E001C003800000000000000 0000000000000000000003C003C003C00000000003C003C003C0000000000000 00000000000007C00FE00E600F00079C1FD839F838F03FFC0FBC000000000000 # 0000000030003060307030383018301C300C300C300C330037001E000C000000 00001C001F8007E000E000003FF83FFC001C001C001C003800781FF01FC00000 00000C300C387F9C7FCC0CCE1CC618C618C038C030C031C07180678007000000 00001C000E0007007FFE7FFE00E000700FF81FFC381830003C001FF807F80000 00001C001C001C001C001C001C001C001C001C061C0E0E3C0FF803E000000000 0000018001807FFE7FFE018007C00FE00C600C600FE007E000C00FC00F800000 00001818181818187FFE7FFE1818181818381870186018001C000FF807F80000 000000007FFE7FFE00E001C003800300070006000600070003C001F800780000 000030003800181C0C7C0EF007C00F001C0038007000600070003FF81FF80000 000003E00FF81C3C38CC30C660C661C6618673863F0E1E0C003C03F803E00000 00003030303073FE63FE603060306030603061F063F063386B3C73EE31C60000 0000018001803FFC3FFC01803FFC3FFC01803F807FC063F0637E7F1E3E000000 00000C000C000C007C007CE00DF00FB00F301E303C307C306C360C3E0C1C0000 0000060007E07FE07E0E0C3E1E783FE073C066C01EC03CC030003FFC1FFC0000 0000060006000C000C000C0018001BC01FE03C60386030607066607E603C0000 00000006000E001C003800F003E00FC07EC070C000C000C000C000C000C00000 00000000003000301FFE1FFE0330033006300E303C30383001F001F000000000 00000180018001807FFC7FFC018C018C038C030C070C060C0E1C7C7878780000 00000300030007F807F806180E181C1818300030006000E003C01F801E000000 000000000E000F000300000C380C3C1C0C38007000E003C00F803E003C000000 000000003FF03FF000300070006000E001C003E007700E381C1C380E30060000 00000000000000000000330C330C199C19980030007000E001C00F800F000000 000000361FF61FC0000000003FF83FF8018001800380030007001E001C000000 00000C000C000C000C000C000F800FE00C780C180C000C000C000C000C000000 00000C6C0C6C0C6C0C000C000F800FE00C780C180C000C000C000C000C000000 0000000000000FF00FF00000000000000000000000003FFC3FFC000000000000 0000000000000660067006300E380C180C1C0C0C1C0C180E7806700600000000 000000003FFC3FFC001C0038007018E01DC00F800700038001C000C000000000 000000180018003800300E700FE001E001F003B8071C0E0C1C00780070000000 000000000000000000001FC01FC000C000C000C000C000C03FF83FF800000000 0000000000003FFC3FFC000C000C000C1FFC1FFC000C000C000C3FFC3FFC0000 000000001FF81FF8000000003FFC3FFC001C00180038007001E01FC01F000000 000000003FFC3FFC300C300C300C300C300C300C300C300C3FFC3FFC00000000 000030003C000F00030C000C001C00180038007000E003C00F803E0038000000 00000000000000000000000060007FFE1FFE0000000000000000000000000000 0000018007E01E78781E7FFE3FF8018001807FFC7FFC018001807FFE7FFE0000 00006636776E336C006073FE7BFE1B0603FE1BFE1B061BFE33FE7306630E0000 0000018001801FF81FF801803FFC3FFC06000E300C3018781FF87F8C700C0000 00007FFE7FFE01803FFC3FFC318C3FFC3FFC318C7FFE7FFE300C300C301C0000 00000180198019803FF83FF8718061801FF81FF80180018001807FFE7FFE0000 000031FE31FE7D867DB601FE7DFE7DB601867DFE7DFE6DCE6DCE7DFE7DFE0000 00000C607F7E7F7E1CE63CEC7F1C6F1800003FFE3FFE01E019807FFE7FFE0000 00007E7E7E7E666666667E7E7E7E60066FF66FF666666FF66FF6666666660000 000018601860186C7ECC7ECE36FE36F666006C7E7E7E7F661B66387E307E0000 00003FFC3FFC7FFE7FFE618600007EFE7EFE67CC7F387EFE18C67E7C7E7C0000 00000180318C318C318C3FFC3FFC0180018001806186618661867FFE7FFE0000 0000183018367FFE7FFE06300FFE0DFE19B63FB67FB67FFE19FE19B619B60000 00007FFE7FFE00C000C000C000C018FC18FC18C018C018C018C07FFE7FFE0000 00007FFE7FFE0180018067E665A665A667E665A667E6600660067FFE7FFE0000 000019F019B01FFE366677FE70E0376630FE37F8377030F837BC377630760000 000030FC30FC7C0C7C0C000C7C0C7CFC00FC7CC07CC06CC06CC67CFE7C7C0000 000038F87CF8EE18C6187EFE7EFE18307FB67FFE18FC18307EFC7FFE61B60000 00003EFE3EFE6C666CEE00CC7E007ED866FE66FE7E187EFE66FE661866180000 00007CF07CF06D986F9E77FE71F8606077FE77FE7060736C676E666660E00000 00001FF81FF818181818181818181FF81FF818181818181818181FF81FF80000 000000307DFC7DFC6C306DFE7DFE7C186DFE6DFE7C187F18039801B800380000 0000187C187C7ECC7ECE00CE7E007EFE00FE7EC67E6C6638667C7EEE7EC60000 000001807FFE7FFE600607F807F818C018C018F81CF83EC037C063FE60FE0000 00001FFC1FFC180C1FFC1FFC180C1FFC1FFC180C180C380C300C701C601C0000 000018003FFE7FFE60C000C01FFE1FFE18C018C018C07FFE7FFE00C000C00000 00000C367FB67FB61836733667363C3619B673B667360E063B0673DE60DE0000 00000C001C7C387C730067000EFE3CFE7C186C180C180C180C180C780C780000 0000018001807FFE7FFE6186618663C663E667666E366C166006601E001E0000 000000000000000000000000000000000000300038001C000C00040000000000 00140C2A0C357F9A7FCC0CCC1CC618C618C038C030C031C07180678007000000 00000006000B066D067606300E380C180C1C0C0C1C0C180E7806700600000000 000000007FFE7FFE0006000E000E001C00180038007001E007C0070000000000 000000007FFE7FFE000600060006000600060006000600067FFE7FFE00000000 00000180018001807FFE7FFE6186618661867FFE7FFE01800180018001800000 000037FC37FC36CC366C7FFE7FFE36C037DE37FE76F677DE37D83EFE3CE60000 00000FF80FF8003800F003C00F003FF030F8001C0E0C1F0C1B7C1FF80FE00000 00000C000C000CFE7FFE7F001800183C19FC19C0300031C031FC303C30000000 000000367FF67FE000E001C003800300070006000600070003C001F000700000 00000C307FFE7FFE00003F6C3F6C336C3F6C3F6C336C3F6C3F0C331C331C0000 00001800180018FC1BFC338030003000300030001B001BC019FC183C18000000 000000007FFE7FFE01C001E001F001B801980180018001800180018001800000 0000000000000000000007FC07FC000C000C07FC07FC000C000C07FC07FC0000 000000C000C000C000C000C000FC18FC18C018C018C018C018C07FFE7FFE0000 00007F867F8E61BC7FB87F800C067F8E7FBC00383F003F060C0E6DBC6DB80000 0000000000001FF81FF800000000000000003000300038001FFC0FFC00000000 000000003FF83FF80038007001E001C001800180018003001F001C0000000000 000000001FF81FF80300030003FC7FFC7F0003000300030003F801F800000000 000000000C300C300C300C300C300C300C300C30007000E007C0070000000000 0000000000C00CC00CC00CC00CC00CC00CCC0CCC18CC78D860F800E000000000 00007EFE7EFE66C666C67EFE7EFE66C666C67EFE7EFE00C601C6079E071E0000 00007FFE7FFE0180018067E665A665A667E665A667E6600660067FFE7FFE0000 000019F019B01FFE366677FE70E0376630FE37F8377030F837BC377630760000 00003FFC3FFC01801FF81FF801803FFC3FFC03C01F6C7E6C66380FBE0F9E0000 000000000FF00FF000003FFC3FFC018019B019B039B8719C618C078007000000 000019987BB8633001EC18CC3BFE73FE70C031FC37FC379830F033FC330C0000 # # Text: / # 2F 00 # # Text: : # 3A 00 # # Text: am # 61 6D 00 # # Text: pm # 70 6D 00 # # Text: No pictures in camera. # B0 B1 8A 0A B2 B3 83 8C 87 80 8B 86 8E 00 # # Text: Yes # 59 65 73 00 # # Text: No # 4E 6F 00 # # Text: . # 2E 00 # # Text: # 00 # # Text: # 00 # # Text: Lock? # B0 B1 A0 95 92 3F 00 # # Text: Unlock? # B0 B1 D0 A1 A0 95 92 3F 00 # # Text: Erase? # A4 A5 3F 00 # # Text: View Small Photos? # 8F A1 96 95 92 94 0A D5 D6 D7 D8 3F 00 # # Text: View Full screen? # 00 # # Text: Set Screen Brightness? # D4 C6 83 A8 A9 3F 00 # # Text: Start Slide Show? # 94 9F 8F 98 93 CC A2 3F 00 # # Text: Stop Slide Show? # 00 # # Text: Set Camera Exposure? # AC AD AE AF 3F 00 # # Text: Format Memory Card? # 9C D1 D2 91 A2 98 8D 0A C2 90 A2 9B 95 97 3F 00 # # Text: Set Date & Time? # B6 B7 B8 B9 3F 00 # # Text: Set for NTSC TV? # 4E 54 53 43 20 54 56 0A AD 91 3F 00 # # Text: Set for PAL TV? # 50 41 4C 20 54 56 0A AD 91 3F 00 # # Text: Review Pictures? # 31 C3 9B D7 D8 3F 00 # # Text: Take Pictures? # 94 D3 A2 D5 D6 D7 D8 3F 00 # # Text: # 00 # # Text: One # 31 C3 9B 0A 20 20 20 20 20 00 # # Text: None # C4 CD 0A 20 20 20 20 20 00 # # Text: All # A3 87 0A 20 20 20 20 20 00 # # Text: # 00 # # Text: ERASE? # A4 A5 3F 00 # # Text: Erase This Picture? # CF 89 B0 B1 8D A4 A5 3F 00 # # Text: Cancel Picture Erase? # A4 A5 C4 CD 3F 00 # # Text: Erase All Pictures? # A3 B0 B1 A4 A5 3F 00 # # Text: Erasing picture... # A4 A5 C4 2E 2E 2E 00 # # Text: Picture is LOCKED Unlock before erasing # B0 B1 C0 A0 95 92 83 8C 87 80 8B 85 0A B0 B1 D0 A1 A0 95 92 89 D9 0A A4 A5 84 87 CB 83 80 00 # # Text: Erase ALL pictures? # 0A A3 B0 B1 A4 A5 84 8B 85 82 3F 00 # # Text: Erasing ALL pictures... # 0A A3 B0 B1 A4 A5 C4 2E 2E 2E 00 # # Text: Normal? # 4E 6F 72 6D 61 6C 3F 00 # # Text: Zoom? # 5A 6F 6F 6D 3F 00 # # Text: Set Screen Brightness # 0A D4 C6 83 A8 A9 00 # # Text: Set Camera Exposure # 0A AC AD AE AF 00 # # Text: Formatting resets the memory card and erases all photos on it. Format? # 0A C2 90 A2 9B 95 97 8D BD 81 88 0A 91 A2 98 BE 89 A3 87 89 B0 B1 8A 0A A4 A5 83 8C 8B 85 0A 0A C2 90 A2 9B 95 97 84 8B 85 82 3F 00 # # Text: Formatting the memory card..... # 0A C2 90 A2 9B 95 97 C4 C8 85 2E 2E 2E 00 # # Text: Set for PAL TV? # 0A 50 41 4C 20 54 56 20 AD 91 0A B8 B9 84 8B 85 82 3F 00 # # Text: Set for NTSC TV? # 0A 4E 54 53 43 20 54 56 20 AD 91 0A B8 B9 84 8B 85 82 3F 00 # # Text: # 00 # # Text: This pict # 31 C3 9B A4 A5 00 # # Text: No # A4 A5 C4 CD 3F 00 # # Text: ALL pict # A3 C3 9B A4 A5 00 # # Text: January # 20 31 00 # # Text: February # 20 32 00 # # Text: March # 20 33 00 # # Text: April # 20 34 00 # # Text: May # 20 35 00 # # Text: June # 20 36 00 # # Text: July # 20 37 00 # # Text: August # 20 38 00 # # Text: September # 20 39 00 # # Text: October # 31 30 00 # # Text: November # 31 31 00 # # Text: December # 31 32 00 # # Text: Day # 20 20 B6 00 # # Text: Month # 20 20 BA 00 # # Text: Year # 20 20 BB 00 # # Text: Time # 20 20 B7 BC 00 # # Text: AM # 41 4D 00 # # Text: PM # 50 4D 00 # # Text: Set Date and Time # 20 20 20 20 20 20 B6 B7 B8 B9 00 # # Text: Is this correct? # B8 B9 84 8B 85 82 3F 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: Service Menu # 20 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 20 20 00 # # Text: P # 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: S # 53 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service ID # 53 65 72 76 69 63 65 20 49 44 20 20 20 20 20 20 20 00 # # Text: Ver # 56 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service Menu 2 # 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 32 20 20 00 # # Text: Reset Pictures # 52 65 73 65 74 20 50 69 63 74 75 72 65 73 20 20 20 00 # # Text: Reset Strobe Pict # 52 65 73 65 74 20 53 74 72 6F 62 65 20 50 69 63 74 00 # # Text: Reset Born OnDate # 52 65 73 65 74 20 42 6F 72 6E 20 4F 6E 44 61 74 65 00 # # Text: Reset FactoryDflt # 52 65 73 65 74 20 46 61 63 74 6F 72 79 44 66 6C 74 00 # # Text: Are You Sure? # 41 72 65 20 59 6F 75 20 53 75 72 65 3F 00 # # Text: Reset to 0 # 52 65 73 65 74 20 74 6F 20 30 00 # # Text: S . # 53 20 20 2E 20 20 00 # # Text: M . # 4D 20 20 2E 20 20 00 # # Text: Yes # 59 65 73 00 # # Text: No # 4E 6F 00 # # Text: # 00 # # Text: BornOnDate # 42 6F 72 6E 4F 6E 44 61 74 65 20 20 20 20 20 20 20 00 # # Text: FinalErrCode # 46 69 6E 61 6C 45 72 72 43 6F 64 65 20 20 20 20 20 00 # # Text: ResetFinalErrCode # 52 65 73 65 74 46 69 6E 61 6C 45 72 72 43 6F 64 65 00 libgphoto2-2.5.9/camlibs/konica/localization/french0000644000175000001440000035417112557123324017272 00000000000000################################################################################ # LOCALIZATION FOR HP PhotoSmart C30 # # ---------------------------------- # # This file (except the comments) will be sent to the camera (0x9200 command). # # In order to make the data readable for humans, I commented the data and # # formatted to some extend. # # # # SYMBOLS # # ------- # # Each symbol begins with a red pixel in the upper left corner, followed by a # # yellow one, then by a blue one. The headline "red" does simply indicate that # # those are lines beginning with a red pixel. The same with headline "yellow" # # and headline "blue". The brightness of each pixel is defined by a value # # ranging between A (dark) and F (bright). # ################################################################################ # # Variable: KC_LOCALIZE_CARDREV # Value: 0x00 0x02 # Length: 32 # 4B 43 5F 4C 4F 43 41 4C 49 5A 45 5F 43 41 52 44 52 45 56 3A 00 02 FF FF FF FF FF FF FF FF FF FF # # Variable: LOCALIZATION # Length: 16 # 4C 4F 43 41 4C 49 5A 41 54 49 4F 4E FF FF FF FF # # Variable: LNG # Value: 0x01 # Length: 5 # Explanation: Indicator for language. Known values are: # - 0x00: English # - 0x01: French # - 0x02: Spanish # - 0x04: German # - 0x05: Japanese # - 0x06: Korean # 4C 4E 47 3A 01 # # Variable: TV # Value: 0x01 # Length: 4 # Explanation: Format of TV output. Accepted values are: # - 0x00: NTSC # - 0x01: PAL # - 0x02: Do not display TV menu. # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the format of the TV output. # 54 56 3A 01 # # Variable: DT # Value: 0x01 # Length: 7 # Explanation: Date format. Accepted values are: # - 0x00: Month/Day/Year # - 0x01: Day/Month/Year # - 0x02: Year/Month/Day # Neither the camera nor gphoto2 will use this variable. gphoto2 provides # an extra command to set the date format. # 44 54 3A 01 FF FF FF # # Variable: DST # Value: 0x00 0x86 0x00 0x00 # Length: 16 # 44 53 54 3A 00 86 00 00 FF FF FF FF FF FF FF FF # # Variable: SIZ # Value: 0x00 0x01 0x00 0x00 # Length: 16 # 53 49 5A 3A 00 01 00 00 FF FF FF FF FF FF FF FF # # Variable: SUM: # Value: 0xBD # Length: 8 # Explanation: Sum of all bytes starting with the table of contents. The camera # won't check this number. # 53 55 4D 3A BD FF FF FF # # Variable: CRC # Value: 0xA2 0xFB # Length: 8 # Explanation: FCS (frame check sequence) of CRC (cyclic redundancy check). The # camera will check this number. # 43 52 43 3A A2 FB FF FF # # Table of Contents (text entries only) # # One entry: 00 FE XX XX (XX XX is the memory address). # 00 FE C8 C0 00 FE C8 C2 00 FE C8 C4 00 FE C8 C7 00 FE C8 CA 00 FE C8 E8 00 FE C8 EC 00 FE C8 F0 00 FE C8 F2 00 FE C8 F3 00 FE C8 F4 00 FE C9 01 00 FE C9 10 00 FE C9 19 00 FE C9 33 00 FE C9 34 00 FE C9 4D 00 FE C9 5E 00 FE C9 5F 00 FE C9 7B 00 FE C9 93 00 FE C9 A9 00 FE C9 B9 00 FE C9 C8 00 FE C9 D7 00 FE C9 E6 00 FE C9 E7 00 FE C9 F1 00 FE C9 FB 00 FE CA 06 00 FE CA 07 00 FE CA 10 00 FE CA 25 00 FE CA 3F 00 FE CA 56 00 FE CA 6A 00 FE CA 9B 00 FE CA B2 00 FE CA CE 00 FE CA D6 00 FE CA DC 00 FE CA F4 00 FE CB 0F 00 FE CB 61 00 FE CB 82 00 FE CB 91 00 FE CB A1 00 FE CB A2 00 FE CB AE 00 FE CB B2 00 FE CB C0 00 FE CB C8 00 FE CB D0 00 FE CB D5 00 FE CB DB 00 FE CB DF 00 FE CB E4 00 FE CB EC 00 FE CB F1 00 FE CB FB 00 FE CC 03 00 FE CC 0C 00 FE CC 15 00 FE CC 1A 00 FE CC 1F 00 FE CC 25 00 FE CC 2B 00 FE CC 2E 00 FE CC 31 00 FE CC 40 00 FE CC 50 00 FE CC 51 00 FE CC 52 00 FE CC 53 00 FE CC 54 00 FE CC 55 00 FE CC 56 00 FE CC 57 00 FE CC 58 00 FE CC 59 00 FE CC 5A 00 FE CC 6C 00 FE CC 7E 00 FE CC 90 00 FE CC A2 00 FE CC B4 00 FE CC C6 00 FE CC D8 00 FE CC EA 00 FE CC FC 00 FE CD 0E 00 FE CD 1C 00 FE CD 27 00 FE CD 2E 00 FE CD 35 00 FE CD 39 00 FE CD 3C 00 FE CD 3D 00 FE CD 4F 00 FE CD 61 # # Title: Take Pictures # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAABAEBAAAAAAAEBAEBAEBAEBAEBF BBAEAAABAABAEAAABAEBEEBAEBAEBAEE FEBAABAAAAEAAEAAEBAFAEEBAEBAEBAB EAEAAEAAEBAABAABAEBEBAAEBAEBAEBF BBAEBAEBAABAEBAEBAFAEBBAEBAEBAEE FEBAABAAAAEAAEAAEBEBAEBBAEBAEBAB EAEAAEAAEBAABAABAFAEBAEABAEBAEBF BBAEAAABAABAEBAEBEBAEBAEEBAEBAEE FEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAB EAEBAABAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAAABFFFFFFFFFFAFFEBFFFFFFFEAABF BBAAFFFFFFFFFFFAFFEBFFFFFFFFEAEE FEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAB EAABAEBAEFBEFBEFAAABEFBEEAAABEBF BAAEBAEBBEFBEFBAAAAABEFBEAAABAAE FEBAEBAEFBEFBEEAAAAABBEFAAAAAEAB EAABAEBAEFBEFBAABFFAAFBEEAAABEBF BAAEBAEBBEFBEEABFFFEAAFBEAAABAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAAFFFFFEABEFBEFBEBF BAAEBAEBBEFBEABFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBABFFFFFEAEFBEFBEEAB EAABAEBAEFBEFABFFFFFEABEFBEFBEBF BAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAE FEBAEBAEFBEFBEAFFFFFABEFBEFBEEAB EAABAEBAEFBEFAABFFFEABBEFBEFBEBF BAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAE FEBAEBAEFBEFBEEAAAAABBEFBEFBEEAB EAABAEBAEFBEFBEAAAAAEFBEFBEFBEBF BAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAE FEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAB EAABAEBAEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Take Pictures # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAABAEBAAAAAAAEBAEBAEBAEBAEBA ABAEAAABAABAEAAABAEBEEBAEBAEBAEA AEBAABAAAAEAAEAAEBAFAEEBAEBAEBAA AAEAAEAAEBAABAABAEBEBAAEBAEBAEBA ABAEBAEBAABAEBAEBAFAEBBAEBAEBAEA AEBAABAAAAEAAEAAEBEBAEBBAEBAEBAA AAEAAEAAEBAABAABAFAEBAEABAEBAEBA ABAEAAABAABAEBAEBEBAEBAEEBAEBAEA AEBAAAAEAAAAAEAAFAEBAEBAEEBAEBAA AAEBAABAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAAABFFFFFFFFFFAFFEBFFFFFFFEAABA ABAAFFFFFFFFFFFAFFEBFFFFFFFFEAEA AEAFFFFFFFFFFFFAFFEBFFFFFFFFFAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA AAAEBAEBBEFBEFBEFBEFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFAAAAAEAA AAABAEBAEFBEFBEFAAABEFBEEAAABEBA AAAEBAEBBEFBEFBAAAAABEFBEAAABAAA AEBAEBAEFBEFBEEAAAAABBEFAAAAAEAA AAABAEBAEFBEFBAABFFAAFBEEAAABEBA AAAEBAEBBEFBEEABFFFEAAFBEAAABAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAAFFFFFEABEFBEFBEBA AAAEBAEBBEFBEABFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBABFFFFFEAEFBEFBEEAA AAABAEBAEFBEFABFFFFFEABEFBEFBEBA AAAEBAEBBEFBEAAFFFFFEAFBEFBEFAAA AEBAEBAEFBEFBEAFFFFFABEFBEFBEEAA AAABAEBAEFBEFAABFFFEABBEFBEFBEBA AAAEBAEBBEFBEFAAFFFAAEFBEFBEFAAA AEBAEBAEFBEFBEEAAAAABBEFBEFBEEAA AAABAEBAEFBEFBEAAAAAEFBEFBEFBEBA AAAEBAEBBEFBEFBEAAAFBEFBEFBEFAAA AEBAEBAEFBEFBEFBEFBEFBEFBEFBEEAA AAABAEBAEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBEBAEBAEEBAEBAEE FEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAB EAEBAEBAEAAABAABAEAEBAEEBAEBAEBF BBAEBAEBAABAABAEBAFAEBBAEBAEBAEE FEBAEBAEBAEAAEAAEBABAEEBAEBAEBAB EAEBAEBAEAAAAAABAEBABBAEBAEBAEBF BBAEBAEBAABAEAAEBAEBEEBAEBAEBAEE FEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAB EAEBAEBAEAAABAABAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAAAAABAEBAEBAEBAEBAABAEBAB EAEBAEAAAAAABAEBAEBAEBAEAAABAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFFFFFFFFFFFFAFFEBFFFFFFFFFABF BAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAE FEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAB EABFFFFFFFFFFFFAFFEBFFFFFFFFFEBF BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE FEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BABEFBEFBEFBEFBEFBEFBEFBEFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEEAEFBAAAAAAAAAAAAAABEABEBF BABEFBAABEFAEBAEBAEBAEBAAFAABAAE FEBBEFAABBEAAEBAEBAEBAEBAEAAAEAB EAAFBEAAAFBABAEBAEBAEBAEABAABEBF BABEFBEABEFAEBAEBAEBAEBAAFAAFAAE FEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEFBEABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAABBEAAEBAEBAEBAEBAEFBEEAB EAAFBEAAAFBABAEBAEBAEBAEABEFBEBF BABEFBAABEFAEBAEBAEBAEBAAFBEFAAE FEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAB EAAFBEFBEFBABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAEBAEBAEBAEBAAFBEFAAE FEBBAABEAAEAAEBAEBAEBAEBAEFBEEAB EAAFAAFBAABABAEBAEBAEBAEABEFBEBF BABEAAEFAAFAAAAAAAAAAAAAAFBEFAAE FEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEBFFFFFFFFFFFFFFFFFFFFFFFFEABF BBABFFFFFFFFFFFFFFFFFFFFFFFFEAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBEBAEBAEEBAEBAEA AEBAEBAEBAEAAEAAEAEBAEBBAEBAEBAA AAEBAEBAEAAABAABAEAEBAEEBAEBAEBA ABAEBAEBAABAABAEBAFAEBBAEBAEBAEA AEBAEBAEBAEAAEAAEBABAEEBAEBAEBAA AAEBAEBAEAAAAAABAEBABBAEBAEBAEBA ABAEBAEBAABAEAAEBAEBEEBAEBAEBAEA AEBAEBAEBAEAAEAAEBAEBAEBAEBAEBAA AAEBAEBAEAAABAABAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAAAAABAEBAEBAEBAEBAABAEBAA AAEBAEAAAAAABAEBAEBAEBAEAAABAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFABA AAAFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AEBFFFFFFFFFFFFAFFEBFFFFFFFFFEAA AABFFFFFFFFFFFFAFFEBFFFFFFFFFEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA AABEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEEAEFBAAAAAAAAAAAAAABEABEBA AABEFBAABEFAEBAEBAEBAEBAAFAABAAA AEBBEFAABBEAAEBAEBAEBAEBAEAAAEAA AAAFBEAAAFBABAEBAEBAEBAEABAABEBA AABEFBEABEFAEBAEBAEBAEBAAFAAFAAA AEBBEFBEFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEFBEABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAABBEAAEBAEBAEBAEBAEFBEEAA AAAFBEAAAFBABAEBAEBAEBAEABEFBEBA AABEFBAABEFAEBAEBAEBAEBAAFBEFAAA AEBBEFAAFBEAAEBAEBAEBAEBAEFBEEAA AAAFBEFBEFBABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAEBAEBAEBAEBAAFBEFAAA AEBBAABEAAEAAEBAEBAEBAEBAEFBEEAA AAAFAAFBAABABAEBAEBAEBAEABEFBEBA AABEAAEFAAFAAAAAAAAAAAAAAFBEFAAA AEBBEFBEFBEAAAAAAAAAAAAAAEFBEEAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEBFFFFFFFFFFFFFFFFFFFFFFFFEABA ABABFFFFFFFFFFFFFFFFFFFFFFFFEAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: View Small Photos # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABAAAAAAAABAAAAAAAAEAAAAAAAAEBF BBFAAEBABAAFABEFBEFAAAEFBAEBAAEE FEEABAEBEBAEAFBEFBEABABEFBAEABAB EABAEBABAEABAFFFEFBAEAFBEEBAAEBF BBFAAEBEBAAFABFFBEFAAAEFBAEBAAEE FEEABABAEBAEAFFEFBAABABEFBAEABAB EABAEBEBAEABAEFBEFBAEAFBEFBAAEBF BBFAABAEBAAFABEFBAEAAAFBBEFBAAEE FEEABEBAEBAEAFBEFBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEAAEAEBF BBFAEBAEBAAFABEFBAEAAAFBBAABAAEE FEEAAEBAEBAEAFBAEBAABAEFFAAFABAB EABABAEBAEABAEFBAEBAEABEEFBEAEBF BBFAAAAAAAAFAAAAAAAAAAAAAAAAAAEE FEEAAAAAAAAEAAAAAAAABAAAAAAAABAB EABEFBEFBEFBBAEBAEBAEBAEBAEBAEBF BBFBEFBEFBEFEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAABAEFBEAAABEFBEBAAAEBAEBAAAEE FEBAEBAEFBABAFBEFAEABAAEBAEBABAB EAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBF BBAABAEFBEAAABEFBEBAAABBAEBAAAEE FEBAFBEEFBABAFBEFAEABAFBBAEBABAB EAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBF BBAABEFFBEAAAAEBBEFAAABEFEBAAAEE FEBAFBEEFBABABAEFBEABAFBEAEBABAB EAEABAEBEFAEAEBAEFBAEAEFBBAEAEBF BBAAEBAFBEAAAAEBBEFAAABEFEBAAAEE FEBAAEBEFBABABAEFBEABAFBEFEBABAB EAEABAEBEFAEAEBAEFBAEAEFBEAEAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBF BBAAEFBEFAAAAABEFBEAAABEFBEBAAEE FEBABFFBEBABABFBEFBABAFBEFAEABAB EAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBF BBAAEFBEBBAAAABEFFEAAABEFBEBAAEE FEBABEBAEFABABFBEFBABAFBBEAEABAB EAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABAFBBEAEABAB EAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBF BBAABAEBBBAAABAEEBAAAABEEFEBAAEE FEBAEBAEEFABAEBAAEBABABAEBAEABAB EAEAAEBABEAEAAEBBAEAEAEBAEBAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAABAAAAAAAABAAAAAAAABAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: View Small Photos # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABAAAAAAAABAAAAAAAAEAAAAAAAAEBA ABFAAEBABAAFABEFBEFAAAEFBAEBAAEA AEEABAEBEBAEAFBEFBEABABEFBAEABAA AABAEBABAEABAFFFEFBAEAFBEEBAAEBA ABFAAEBEBAAFABFFBEFAAAEFBAEBAAEA AEEABABAEBAEAFFEFBAABABEFBAEABAA AABAEBEBAEABAEFBEFBAEAFBEFBAAEBA ABFAABAEBAAFABEFBAEAAAFBBEFBAAEA AEEABEBAEBAEAFBEFBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEAAEAEBA ABFAEBAEBAAFABEFBAEAAAFBBAABAAEA AEEAAEBAEBAEAFBAEBAABAEFFAAFABAA AABABAEBAEABAEFBAEBAEABEEFBEAEBA ABFAAAAAAAAFAAAAAAAAAAAAAAAAAAEA AEEAAAAAAAAEAAAAAAAABAAAAAAAABAA AABEFBEFBEFBBAEBAEBAEBAEBAEBAEBA ABFBEFBEFBEFEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAABAEFBEAAABEFBEBAAAEBAEBAAAEA AEBAEBAEFBABAFBEFAEABAAEBAEBABAA AAEAAEBBEFAEAEFBEBAAEAEAEBAEAEBA ABAABAEFBEAAABEFBEBAAABBAEBAAAEA AEBAFBEEFBABAFBEFAEABAFBBAEBABAA AAEAEFBBEFAEAEFBEBAAEAEFEBAEAEBA ABAABEFFBEAAAAEBBEFAAABEFEBAAAEA AEBAFBEEFBABABAEFBEABAFBEAEBABAA AAEABAEBEFAEAEBAEFBAEAEFBBAEAEBA ABAAEBAFBEAAAAEBBEFAAABEFEBAAAEA AEBAAEBEFBABABAEFBEABAFBEFEBABAA AAEABAEBEFAEAEBAEFBAEAEFBEAEAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEAAAAAAAAEAAAAAAAAEAAAAAAAAEBA ABAAEFBEFAAAAABEFBEAAABEFBEBAAEA AEBABFFBEBABABFBEFBABAFBEFAEABAA AAEAFFEFAEAEAEEFFEFAEAEFBEBAAEBA ABAAEFBEBBAAAABEFFEAAABEFBEBAAEA AEBABEBAEFABABFBEFBABAFBBEAEABAA AAEAFBEBAEAEAEEFBEFAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABAFBBEAEABAA AAEAAEBAAEAEAAEBBAEAEAEFFBBAAEBA ABAABAEBBBAAABAEEBAAAABEEFEBAAEA AEBAEBAEEFABAEBAAEBABABAEBAEABAA AAEAAEBABEAEAAEBBAEAEAEBAEBAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAABAAAAAAAABAAAAAAAABAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Screen Brightness # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBABBAEBAEBAEBAEBAB EAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAEAEEBABBAFAEBAEEBAABAEAAEBAB EAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABAAEAEBAEBAEBAEEAEBBAEBAB EAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAB EAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEABAEBAB EAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBF BBAEAEFAEBEFBEFFFFBEFBEEBAABBAEE FEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAB EAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAB EABAEBAEBEFBEFFFFFFFBEFBEEBAEBBF BAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAE FEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAB EAEBABAEBEFBEFFFFFFFBEFBEEBAAEBF BBAEAEBAFBEFBFFFFFFEFBEFBAEBBAEE FEBAAAEBEFBEFBFFFFFBEFBEEBAABBAB EAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBF BBAEBAFAEBEFBEFFFFBEFBEEBAAEBAEE FEBAEBABAFBEFBEFBEFBEFBEEBBAEBAB EAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBF BBAEBAEAEBEFBEFBEFBEFBEEBBAEBAEE FEBAEBABAEBEFBEFBEFBEFBAEBBAEBAB EAEBAFAABAEBEFBEFBEFBEEBBABBAEBF BBAEBABBEBAFBEFBEFBEFBAEAAEEBAEE FEBAABAEAEBAFBEFBEFBEEBAEEBABBAB EAEAEEBABAEBEFBEFBEFBAEBBAEBEEBF BBAEBAEAEBAEBAFBEFBAEBAEBBAEBAEE FEBAEBABAEBAEBEFBEFBAEBAEABAEBAB EAEBAEAEBBABAEBAEBAEBBAFAEEBAEBF BBAEBAFAEEBEBAEBAEBAEABABAAEBAEE FEBAEBABBABBABAEBAEBBEABABBAEBAB EAEBAFBAEBEEBABAEBAAEAEEBABBAEBF BBAEBAABAEAAEAEBAEBBAFBAEBEEBAEE FEBAFBAEBAEBAEAEBAABBAEBAEBEEBAB EAEBAABAEBAEBAFAEBBEEBAEBAEAAEBF BBAEBAEBAEAAEAEFAAEBAFBAEBAEBAEE FEBAEBAEBABBAFBABBAEBAABAEBAEBAB EAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAFAAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAABAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Screen Brightness # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBABBAEBAEBAEBAEBAA AAEBAEBAEBEEBAAAEEBAEAEEBAEBAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAEAEEBABBAFAEBAEEBAABAEAAEBAA AAEBAEAEEBEAAEBAEBAEEAEEAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABAAEAEBAEBAEBAEEAEBBAEBAA AAEBAEBEBAEBAFBEFBEEBAEBAEEBAEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAEAEEAEBEFBEFBEFBEEBAEFAAEBAA AAEBAEAEBAFBEFBEFBEFBEEBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEABAEBAA AAEBAAAEBEFBEFBEFBEFBEFBAEEAAEBA ABAEAEFAEBEFBEFFFFBEFBEEBAABBAEA AEBAEAEBEFBEFBFFFFFBEFBEEBAAEBAA AAEBAFAEBEFBEFFFFFEFBEFBEEBBAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAFAEBEFBEFFFFFFFFEFBEEBAEEBAA AABAEBAEBEFBEFFFFFFFBEFBEEBAEBBA AAEBAEBAFBEFBFFFFFFEFBEFBAEBAEAA AEAEBAEBEFBEFFFFFFFFEFBEEBAEBAAA AAEBABAEBEFBEFFFFFFFBEFBEEBAAEBA ABAEAEBAFBEFBFFFFFFEFBEFBAEBBAEA AEBAAAEBEFBEFBFFFFFBEFBEEBAABBAA AAEAEFAEBEFBEFBFFFEFBEFBEEBBEEBA ABAEBAFAEBEFBEFFFFBEFBEEBAAEBAEA AEBAEBABAFBEFBEFBEFBEFBEEBBAEBAA AAEBAEBEBEFBEFBEFBEFBEFBAEEBAEBA ABAEBAEAEBEFBEFBEFBEFBEEBBAEBAEA AEBAEBABAEBEFBEFBEFBEFBAEBBAEBAA AAEBAFAABAEBEFBEFBEFBEEBBABBAEBA ABAEBABBEBAFBEFBEFBEFBAEAAEEBAEA AEBAABAEAEBAFBEFBEFBEEBAEEBABBAA AAEAEEBABAEBEFBEFBEFBAEBBAEBEEBA ABAEBAEAEBAEBAFBEFBAEBAEBBAEBAEA AEBAEBABAEBAEBEFBEFBAEBAEABAEBAA AAEBAEAEBBABAEBAEBAEBBAFAEEBAEBA ABAEBAFAEEBEBAEBAEBAEABABAAEBAEA AEBAEBABBABBABAEBAEBBEABABBAEBAA AAEBAFBAEBEEBABAEBAAEAEEBABBAEBA ABAEBAABAEAAEAEBAEBBAFBAEBEEBAEA AEBAFBAEBAEBAEAEBAABBAEBAEBEEBAA AAEBAABAEBAEBAFAEBBEEBAEBAEAAEBA ABAEBAEBAEAAEAEFAAEBAFBAEBAEBAEA AEBAEBAEBABBAFBABBAEBAABAEBAEBAA AAEBAEBAEBAEBAEAEEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAFAAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAABAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Date & Time # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEABAFBEFAEFBAFBEFBAFBEFBABF BBAEFBAFAEFBEABEEBEFBEFAEFBEFAEE FEABEFAEABEFBAFBAFBEFBEABEFBEAAB EAAFBEABAFBEFAEEBEFBEFBAFBEFBABF BBAEFBAFAEFBEABAAAEFBEFAEFBEFAEE FEABEFAEABEFBAFAAABEFBEABEFBEAAB EAAFBEFBEFBEFBEFBEFBEFBEFBEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEABAFAEFBEFBAFBEFBEFBEFBAFAEE FEABAFAEABEFBEFAEFBEFBEFBEEBEAAB EAAFAEABAFBEFBEABEFBEFBEFBAFBABF BBAEABAFAEFBEFBAFBEFBEFBEEBEFAEE FEABAFAAABEFBEFAEFBEFBEFBAAAEAAB EAAFAEAAAFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBAFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFAEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEABEFBEFBEFAAABABF BBAEAAAFBEFBEFBAFBEFBEFBEAAAFAEE FEABAFAEFBEFBEFAEFBEFBEFBEFAEAAB EAAFAEABEFBEFBEABEFBEFBEFBEABABF BBAEAAAFBAAAAAAAABEFBEFBEFAAFAEE FEABAAAEFAAAAAAAAFBEFBEFBEAAEAAB EAAFBEABEFBEFBEABEFBEFBEFBEABABF BBAEFBAFBEFBEFBAFBEFBEFBEFBAFAEE FEABEFAEFBEFBEFAEFBEFBEFBAAAEAAB EAAFBEABEFBEFBEABEFBEFBEFAAABABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAFAAABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEABAFAEE FEABAFAEFBEFBEFBEFBEFBEFBAFAEAAB EAAFAEABEFBEFBEFBEFBEFBEFAEABABF BBAEAAAFBEFBEFBEFBEFBEFBEAAAFAEE FEABAAAEFBEFBEFBEFBEFBEFBAAAEAAB EAAFAEABEAAAFBEFAEFBEFAAFBEABABF BBAEABAFBAAAEFBEABEFBEAAEFBAFAEE FEABAAAEFBEABEFBAFBEFBAFBEFBEAAB EAAFAAABEFBAFBEFAEFBEFAEFBEFBABF BBAEFBEFBEFAEFBEAAAFBEAAAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAEABEFBEABEFBABF BBAEFBEFBEFAEFBEABAFBEFBAFBEFAEE FEABEFBEFBEABEFBAAAEFBAAAEFBEAAB EAAFBEFBEFBAFBEFAAABEFAAABEFBABF BBAEFBEFBEFBEFBEFBEFBEFBEFBEFAEE FEABEFBEFBEFBEFBEFBEFBEFBEFBEAAB EAAAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Date & Time # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEABAFBEFAEFBAFBEFBAFBEFBABA ABAEFBAFAEFBEABEEBEFBEFAEFBEFAEA AEABEFAEABEFBAFBAFBEFBEABEFBEAAA AAAFBEABAFBEFAEEBEFBEFBAFBEFBABA ABAEFBAFAEFBEABAAAEFBEFAEFBEFAEA AEABEFAEABEFBAFAAABEFBEABEFBEAAA AAAFBEFBEFBEFBEFBEFBEFBEFBEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEABAFAEFBEFBAFBEFBEFBEFBAFAEA AEABAFAEABEFBEFAEFBEFBEFBEEBEAAA AAAFAEABAFBEFBEABEFBEFBEFBAFBABA ABAEABAFAEFBEFBAFBEFBEFBEEBEFAEA AEABAFAAABEFBEFAEFBEFBEFBAAAEAAA AAAFAEAAAFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBAFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFAEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEABEFBEFBEFAAABABA ABAEAAAFBEFBEFBAFBEFBEFBEAAAFAEA AEABAFAEFBEFBEFAEFBEFBEFBEFAEAAA AAAFAEABEFBEFBEABEFBEFBEFBEABABA ABAEAAAFBAAAAAAAABEFBEFBEFAAFAEA AEABAAAEFAAAAAAAAFBEFBEFBEAAEAAA AAAFBEABEFBEFBEABEFBEFBEFBEABABA ABAEFBAFBEFBEFBAFBEFBEFBEFBAFAEA AEABEFAEFBEFBEFAEFBEFBEFBAAAEAAA AAAFBEABEFBEFBEABEFBEFBEFAAABABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFAAABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEABAFAEA AEABAFAEFBEFBEFBEFBEFBEFBAFAEAAA AAAFAEABEFBEFBEFBEFBEFBEFAEABABA ABAEAAAFBEFBEFBEFBEFBEFBEAAAFAEA AEABAAAEFBEFBEFBEFBEFBEFBAAAEAAA AAAFAEABEAAAFBEFAEFBEFAAFBEABABA ABAEABAFBAAAEFBEABEFBEAAEFBAFAEA AEABAAAEFBEABEFBAFBEFBAFBEFBEAAA AAAFAAABEFBAFBEFAEFBEFAEFBEFBABA ABAEFBEFBEFAEFBEAAAFBEAAAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAEABEFBEABEFBABA ABAEFBEFBEFAEFBEABAFBEFBAFBEFAEA AEABEFBEFBEABEFBAAAEFBAAAEFBEAAA AAAFBEFBEFBAFBEFAAABEFAAABEFBABA ABAEFBEFBEFBEFBEFBEFBEFBEFBEFAEA AEABEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Erase # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBBFFAABAEBAEBAEBAEE FEBAEBAEBAEBAABFEBAEBAEBAEBAEBAB EAEBAEBAAAAAAAAAAAAAAAAABAEBAEBF BBAEBAEAAAAAAAAAAAAAAAAAABAEBAEE FEBAEBAAABEEBEBAAFAAAAEAAABAEBAB EAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBF BBAEBAAAAAAAAAAAAAAAAAAAABAEBAEE FEBAEAAAAAAAAAAAAAAAAAAAAABAEBAB EAEBAABFFFFFABEFBEFBEBAABAEBAEBF BBAEABFFFFFEAFBEFBEFBEBAABAEBAEE FEBABFFFFFFEBEFBEFBEFAEAAEBAEBAB EAEBFFFFFFEAFBEFAEBBEBAABAEBAEBF BBABFFFFFFEBEBBEAAEFBEBAABAEBAEE FEBFFFFFFFAFAEFBABAEFAEAAEBAEBAB EABFFFFFFFAEBBEFAEBBEBAABAEBAEBF BBABFFFFFAFAEBBEAAEFBEBAABAEBAEE FEAABFFFFAEFAEFBABAEFAEAAEBAEBAB EAEABFFFAFBEBBEFAEBBEBAABAEBAEBF BBAEABFFAEFAEBBEAAEFBEBAABAEBAEE FEBAEBFAABEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAAAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEAAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBABAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAEBBEBAABAEBAEBF BBAEBAEAAEFAEBBEAAEFBEBAABAEBAEE FEBAEBAABBEFAEFBAAAEFAEAAEBAEBAB EAEBAEBAEFBEBBEFAAABEBAABAEBAEBF BBAEBAEAAEFBEFBEFBEFBEAAABAEBAEE FEBAEBAABBEFBEFBEFBEFAAAAEBAEBAB EAEBAEBAEFBEFBEFBEFBEAAABAEBAEBF BBAEBAEAAABAEBAEBAEBAAAAABAEBAEE FEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAB EAEBAEBAEAAAAAAAAAAAAAAABAEBAEBF BBAEBAEBAAAAAAAAAAAAAAAAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Erase # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBBFFAABAEBAEBAEBAEA AEBAEBAEBAEBAABFEBAEBAEBAEBAEBAA AAEBAEBAAAAAAAAAAAAAAAAABAEBAEBA ABAEBAEAAAAAAAAAAAAAAAAAABAEBAEA AEBAEBAAABEEBEBAAFAAAAEAAABAEBAA AAEBAEAAEBBEBAAEBEEAEBAAAAEBAEBA ABAEBAAAAAAAAAAAAAAAAAAAABAEBAEA AEBAEAAAAAAAAAAAAAAAAAAAAABAEBAA AAEBAABFFFFFABEFBEFBEBAABAEBAEBA ABAEABFFFFFEAFBEFBEFBEBAABAEBAEA AEBABFFFFFFEBEFBEFBEFAEAAEBAEBAA AAEBFFFFFFEAFBEFAEBBEBAABAEBAEBA ABABFFFFFFEBEBBEAAEFBEBAABAEBAEA AEBFFFFFFFAFAEFBABAEFAEAAEBAEBAA AABFFFFFFFAEBBEFAEBBEBAABAEBAEBA ABABFFFFFAFAEBBEAAEFBEBAABAEBAEA AEAABFFFFAEFAEFBABAEFAEAAEBAEBAA AAEABFFFAFBEBBEFAEBBEBAABAEBAEBA ABAEABFFAEFAEBBEAAEFBEBAABAEBAEA AEBAEBFAABEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAAAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEAAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBABAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAEBBEBAABAEBAEBA ABAEBAEAAEFAEBBEAAEFBEBAABAEBAEA AEBAEBAABBEFAEFBAAAEFAEAAEBAEBAA AAEBAEBAEFBEBBEFAAABEBAABAEBAEBA ABAEBAEAAEFBEFBEFBEFBEAAABAEBAEA AEBAEBAABBEFBEFBEFBEFAAAAEBAEBAA AAEBAEBAEFBEFBEFBEFBEAAABAEBAEBA ABAEBAEAAABAEBAEBAEBAAAAABAEBAEA AEBAEBAEAAEBAEBAEBAEBAAAAEBAEBAA AAEBAEBAEAAAAAAAAAAAAAAABAEBAEBA ABAEBAEBAAAAAAAAAAAAAAAAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set Camera Exposure # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEAABFFFFFEAAEBAEBAEBAB EAEBAEBAEBAEABFFFFFEABAEBAEBAEBF BBAEBAEBAEABFFFFFFFFFEAAEBAEBAEE FEBAEBAEBAABFFFFFFFFFEABAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEBABFFFFFFFFFFFFFEABAEBAEE FEBAEBAEABFFFFFFFFFFFFFEAEBAEBAB EAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBAEBFFFFFFFFFFFFFFFEABAEBAB EAEBAEBABFFFFFFFFFFFFFFFEAEBAEBF BBAEBAEABFFFFFFFFFFFFFFFEBAEBAEE FEBAEBABFFFFFEBEBEBFFFFFFEBAEBAB EAEBAEABFFFFFEBEBEBFFFFFFEABAEBF BBAEBAEBFFFFEBEBEBEABFFFFEAEBAEE FEBAEBABFFFFEBEBEBEABFFFFEBAEBAB EAEBAEABFFFFEBFFFFFEBFFFFEABAEBF BBAEBAEBFFFFEBFFFFFEBFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBABFFFFFEBFFFEBFFFFFEBAEBAB EAEBAEABFFFFFEBFFFEBFFFFFEABAEBF BBAEBAEBFFFFFEBFFFEBFFFFFEAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBABFFFFEBFFFEBFFFFEAEBAEBF BBAEBAEABFFFFEBFFFEBFFFFEBAEBAEE FEBAEBAEBFFFFEBFFFEBFFFFEABAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBABFFFFEBFEBFFFFEABAEBAEE FEBAEBAEABFFFFEBFEBFFFFEAEBAEBAB EAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBF BBAEBAEBAEBFFFEBFEBFFFEAEBAEBAEE FEBAEBAEBABFFFEBFEBFFFEBAEBAEBAB EAEBAEBAEBABFFEBFEBFFEAEBAEBAEBF BBAEBAEBAEABFFEBFEBFFEBAEBAEBAEE FEBAEBAEBAEABFEBFEABEAEBAEBAEBAB EAEBAEBAEBAEBFEBFEABEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBAAAFBEAABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEAFBEFBEAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEAABEFAAAABAEBAEBAEBF BBAEBAEBAEBAEABBEEAAAEBAEBAEBAEE FEBAEBAEBAEBABEFBEFABAEBAEBAEBAB EAEBAEBAEBAEABBEFBEEABAEBAEBAEBF BBAEBAEBAEBAEAAAAAAAAEBAEBAEBAEE FEBAEBAEBAEBAEAAAAAABAEBAEBAEBAB EAEBAEBAEBAEBAEAAABAEBAEBAEBAEBF BBAEBAEBAEBAEBAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set Camera Exposure # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAAAAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEAABFFFFFEAAEBAEBAEBAA AAEBAEBAEBAEABFFFFFEABAEBAEBAEBA ABAEBAEBAEABFFFFFFFFFEAAEBAEBAEA AEBAEBAEBAABFFFFFFFFFEABAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEBABFFFFFFFFFFFFFEABAEBAEA AEBAEBAEABFFFFFFFFFFFFFEAEBAEBAA AAEBAEBAEBFFFFFFFFFFFFFEBAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBAEBFFFFFFFFFFFFFFFEABAEBAA AAEBAEBABFFFFFFFFFFFFFFFEAEBAEBA ABAEBAEABFFFFFFFFFFFFFFFEBAEBAEA AEBAEBABFFFFFEBEBEBFFFFFFEBAEBAA AAEBAEABFFFFFEBEBEBFFFFFFEABAEBA ABAEBAEBFFFFEBEBEBEABFFFFEAEBAEA AEBAEBABFFFFEBEBEBEABFFFFEBAEBAA AAEBAEABFFFFEBFFFFFEBFFFFEABAEBA ABAEBAEBFFFFEBFFFFFEBFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBABFFFFFEBFFFEBFFFFFEBAEBAA AAEBAEABFFFFFEBFFFEBFFFFFEABAEBA ABAEBAEBFFFFFEBFFFEBFFFFFEAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBABFFFFEBFFFEBFFFFEAEBAEBA ABAEBAEABFFFFEBFFFEBFFFFEBAEBAEA AEBAEBAEBFFFFEBFFFEBFFFFEABAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBABFFFFEBFEBFFFFEABAEBAEA AEBAEBAEABFFFFEBFEBFFFFEAEBAEBAA AAEBAEBAEBFFFFEBFEBFFFFEBAEBAEBA ABAEBAEBAEBFFFEBFEBFFFEAEBAEBAEA AEBAEBAEBABFFFEBFEBFFFEBAEBAEBAA AAEBAEBAEBABFFEBFEBFFEAEBAEBAEBA ABAEBAEBAEABFFEBFEBFFEBAEBAEBAEA AEBAEBAEBAEABFEBFEABEAEBAEBAEBAA AAEBAEBAEBAEBFEBFEABEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBAAAFBEAABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEAFBEFBEAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEAABEFAAAABAEBAEBAEBA ABAEBAEBAEBAEABBEEAAAEBAEBAEBAEA AEBAEBAEBAEBABEFBEFABAEBAEBAEBAA AAEBAEBAEBAEABBEFBEEABAEBAEBAEBA ABAEBAEBAEBAEAAAAAAAAEBAEBAEBAEA AEBAEBAEBAEBAEAAAAAABAEBAEBAEBAA AAEBAEBAEBAEBAEAAABAEBAEBAEBAEBA ABAEBAEBAEBAEBAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Format Memory Card # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEEFBEFBEFBEFBEFBEFBEFBEFBEFEE FEBBBAAAAAAAAAAAAAAAAAAAAAAABEAB EAEEFAAFAEABAFAEABAFAEABAFAAFBBF BBBBAAAAAAAAAAAAAAAAAAAAAAABEFEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEABBF BBFAAAAAFFFFFFFFFFFFFFFFFFFFAFEE FEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAB EABAABAAFFFFFFFFEFFFFFFFFFFEABBF BBFAAEAAFFFFFFFFABFFFFFFFFFFAFEE FEEABAEAFFFFFFFEBAFFFFFFFFFFAEAB EABAAAAAFFFFFFFAFEBFFFFFFFFEABBF BBFAAAAAFFFFFFEBEFAFFFFFFFFFAFEE FEEAAAABFFFFFFAFABEBFFFFFFFFAEAB EABAAAABFFFFFEBEAAFAFFFFFFFEABBF BBFAAAABFFFFFAFAAABEBFFFFFFFAFEE FEEAAAABFFFFEBEAAAAFAFFFFFFFAEAB EABAAAAFFFFFAFAAAAABEBFFFFFEABBF BBFAAAAFFFFEBEAAAAAAFAFFFFFFAFEE FEEAAAAFFFFAFAAAAAAABEBFFFFFAEAB EABAAAAFFFEBEAAAAAAAAFAFFFFEABBF BBFAAAAFFFAFAAAAAAAAABEBFFFFAFEE FEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAB EABAAABFFAFAABFFEBFFFABEBFFEABBF BBFAAABFEBEAAFFFEBFFFAAFAFFFAFEE FEEAAABFAFAABFAAABEAAAABEBFFAEAB EABAAABEBEAABEAAABEAAAAAFAFEABBF BBFAAAFAFAAABEAAABEAAAAABEBFAFEE FEEAAAFEBEAABEAAABFFEAAAFAFFAEAB EABAAAFFAFAABEAAABFFEAABEBFEABBF BBFAAAFFEBEABEAAABEAAAAFAFFFAFEE FEEAAAFFFAFABFAAABEAAABEBFFFAEAB EABAAAFFFEBEAFFFEBEAAAFAFFFEABBF BBFAABFFFFAFABFFEBEAABEBFFFFAFEE FEEAABFFFFEBEAAAAAAAAFAFFFFFAEAB EABAABFFFFFAFAAAAAAABEBFFFFEABBF BBFAABFFFFFEBEAAAAAAFAFFFFFFAFEE FEEAABFFFFFFAFAAAAABEBFFFFFFAEAB EABAABFFFFFFEBEAAAAFAFFFFFFEABBF BBFAAFFFFFFFFAFAAABEBFFFFFFFAFEE FEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAB EABAAFFFFFFFFFAFABEBFFFFFFFEABBF BBFAAFFFFFFFFFEBEFAFFFFFFFFFAFEE FEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAB EABAAFFFFFFFFFFEBAFFFFFFFFFEABBF BBFABFFFFFFFFFFFABFFFFFFFFFFAFEE FEEABFFFFFFFFFFFEFFFFFFFFFFFAEAB EABABFFFFFFFFFFFFFFFFFFFFFFEABBF BBFABFFFFFFFFFFFFFFFFFFFFFFFAFEE FEEABFFFFFFFFFFFFFFFFFFFFFFFBEAB EABEFBEFBEFBEFBEFBEFBEFBEFBEFBBF BBFBEFBEFBEFBEFBEFBEFBEFBEFBEEEE FEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAB EAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Format Memory Card # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEEFBEFBEFBEFBEFBEFBEFBEFBEFEA AEBBBAAAAAAAAAAAAAAAAAAAAAAABEAA AAEEFAAFAEABAFAEABAFAEABAFAAFBBA ABBBAAAAAAAAAAAAAAAAAAAAAAABEFEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFAEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEABBA ABFAAAAAFFFFFFFFFFFFFFFFFFFFAFEA AEEAAAAAFFFFFFFFFFFFFFFFFFFFAEAA AABAABAAFFFFFFFFEFFFFFFFFFFEABBA ABFAAEAAFFFFFFFFABFFFFFFFFFFAFEA AEEABAEAFFFFFFFEBAFFFFFFFFFFAEAA AABAAAAAFFFFFFFAFEBFFFFFFFFEABBA ABFAAAAAFFFFFFEBEFAFFFFFFFFFAFEA AEEAAAABFFFFFFAFABEBFFFFFFFFAEAA AABAAAABFFFFFEBEAAFAFFFFFFFEABBA ABFAAAABFFFFFAFAAABEBFFFFFFFAFEA AEEAAAABFFFFEBEAAAAFAFFFFFFFAEAA AABAAAAFFFFFAFAAAAABEBFFFFFEABBA ABFAAAAFFFFEBEAAAAAAFAFFFFFFAFEA AEEAAAAFFFFAFAAAAAAABEBFFFFFAEAA AABAAAAFFFEBEAAAAAAAAFAFFFFEABBA ABFAAAAFFFAFAAAAAAAAABEBFFFFAFEA AEEAAAAFFEBEAAAAAAAAAAFAFFFFAEAA AABAAABFFAFAABFFEBFFFABEBFFEABBA ABFAAABFEBEAAFFFEBFFFAAFAFFFAFEA AEEAAABFAFAABFAAABEAAAABEBFFAEAA AABAAABEBEAABEAAABEAAAAAFAFEABBA ABFAAAFAFAAABEAAABEAAAAABEBFAFEA AEEAAAFEBEAABEAAABFFEAAAFAFFAEAA AABAAAFFAFAABEAAABFFEAABEBFEABBA ABFAAAFFEBEABEAAABEAAAAFAFFFAFEA AEEAAAFFFAFABFAAABEAAABEBFFFAEAA AABAAAFFFEBEAFFFEBEAAAFAFFFEABBA ABFAABFFFFAFABFFEBEAABEBFFFFAFEA AEEAABFFFFEBEAAAAAAAAFAFFFFFAEAA AABAABFFFFFAFAAAAAAABEBFFFFEABBA ABFAABFFFFFEBEAAAAAAFAFFFFFFAFEA AEEAABFFFFFFAFAAAAABEBFFFFFFAEAA AABAABFFFFFFEBEAAAAFAFFFFFFEABBA ABFAAFFFFFFFFAFAAABEBFFFFFFFAFEA AEEAAFFFFFFFFEBEAAFAFFFFFFFFAEAA AABAAFFFFFFFFFAFABEBFFFFFFFEABBA ABFAAFFFFFFFFFEBEFAFFFFFFFFFAFEA AEEAAFFFFFFFFFFAFEBFFFFFFFFFAEAA AABAAFFFFFFFFFFEBAFFFFFFFFFEABBA ABFABFFFFFFFFFFFABFFFFFFFFFFAFEA AEEABFFFFFFFFFFFEFFFFFFFFFFFAEAA AABABFFFFFFFFFFFFFFFFFFFFFFEABBA ABFABFFFFFFFFFFFFFFFFFFFFFFFAFEA AEEABFFFFFFFFFFFFFFFFFFFFFFFBEAA AABEFBEFBEFBEFBEFBEFBEFBEFBEFBBA ABFBEFBEFBEFBEFBEFBEFBEFBEFBEEEA AEEFBEFBEFBEFBEFBEFBEFBEFBEFBBAA AAFEFBEFBEFBEFBEFBEFBEFBEFBEEEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Lock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBF BBAEBAEBAAEAAFBEFBEAAEAAEBAEBAEE FEBAEBAEABEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Lock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAAAAAAAAAAAFAEBAEBAEBA ABAEBAEBAAEAAFBEFBEAAEAAEBAEBAEA AEBAEBAEABEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Unlock # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAAAAABAEBAEBAEBAEBF BBAEBAEBAEBAEAAAAAEBAEBAEBAEBAEE FEBAEBAEBAEAAAFBEFAABAEBAEBAEBAB EAEBAEBAEBAEABEFBEAAEBAEBAEBAEBF BBAEBAEBAEABEFAAABEFAEBAEBAEBAEE FEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAB EAEBAEBAEABEEAABAAABEAAEBAEBAEBF BBAEBAEBAEBBEAAEBAAFBABAEBAEBAEE FEBAEBAEABEEAEBAEBAAFBABAEBAEBAB EAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBF BBAEBAEBAAEAEBAEBAEBAEAAEBAEBAEE FEBAEBAEABEBAEBAEBAEABABAEBAEBAB EAEBAEBAEBAABAEBAEBAAFAEBAEBAEBF BBAEBAEBAAAAEBAEBAEBAEAAEBAEBAEE FEBAEBAEAAABAEBAEBAEABABAEBAEBAB EAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAAAAAAAEABABAEBAEBAB EAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBF BBAEBAEBAEAAAFBEFBEAAEAAEBAEBAEE FEBAEBAEBAEABEFBEFBAABABAEBAEBAB EAEBAEBAEABEFBBAEAFBEAAEBAEBAEBF BBAEBAEBAABBEFEBAFEFBAAAEBAEBAEE FEBAEBAEABEFBEFEAFBEFBABAEBAEBAB EAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBF BBAEBAEBAEFBEEAAAAEFBEEAEBAEBAEE FEBAEBAEABEFBEAAAABEFBEBAEBAEBAB EAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBF BBAEBAEABEEAAAAFEAAAAEFAABAEBAEE FEBAEBAAFBEAAAAAAAAAABEEAEBAEBAB EAEBAEABEEABEAAAAAAFAABEEAEBAEBF BBAEBAAFBEABEAAAAAAFAAFBEBAEBAEE FEBAEBAEFAAAAAAAAAAAAAEFAABAEBAB EAEBAEABEEAAAAAAAAAAAABEEAEBAEBF BBAEBAAFAAAAAABFFAAAAAABEBAEBAEE FEBAEBAEEAAAAABFFAAAAAAFAABAEBAB EAEBAEABEAAAABFABFAAAAAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEBEAABAAABAAAFAFAABAEBAB EAEBAEABEBEAABAAABAAAFAEEAEBAEBF BBAEBAAFAAAAABEAAFAAAAABEBAEBAEE FEBAEBAEEAAAABFABFAAAAAFAABAEBAB EAEBAEABEAAAAABFFAAAAAAEEAEBAEBF BBAEBAEABEAAAABFFAAAAAFAABAEBAEE FEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAB EAEBAEBAEEABEAAAAAAFAABEBAEBAEBF BBAEBAEABEABEAAAAAAFAAFAABAEBAEE FEBAEBAEABEAAAAAAAAAABEBAEBAEBAB EAEBAEBAAFAAAAAAAAAAAFAABAEBAEBF BBAEBAEBAAFAAAABEAAABEAAEBAEBAEE FEBAEBAEABEEAAABEAAAFBABAEBAEBAB EAEBAEBAEABEFAAAAAFBEAAEBAEBAEBF BBAEBAEBAEBBEEAAAAEFBABAEBAEBAEE FEBAEBAEBAEABEFBEFBAAAEBAEBAEBAB EAEBAEBAEBAABBEFBEFAABAEBAEBAEBF BBAEBAEBAEBAEAAAAAABAEBAEBAEBAEE FEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Unlock # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAAAAABAEBAEBAEBAEBA ABAEBAEBAEBAEAAAAAEBAEBAEBAEBAEA AEBAEBAEBAEAAAFBEFAABAEBAEBAEBAA AAEBAEBAEBAEABEFBEAAEBAEBAEBAEBA ABAEBAEBAEABEFAAABEFAEBAEBAEBAEA AEBAEBAEBAEBBEEAAFBEAAEBAEBAEBAA AAEBAEBAEABEEAABAAABEAAEBAEBAEBA ABAEBAEBAEBBEAAEBAAFBABAEBAEBAEA AEBAEBAEABEEAEBAEBAAFBABAEBAEBAA AAEBAEBAEBBEBAEBAEBAEFAEBAEBAEBA ABAEBAEBAAEAEBAEBAEBAEAAEBAEBAEA AEBAEBAEABEBAEBAEBAEABABAEBAEBAA AAEBAEBAEBAABAEBAEBAAFAEBAEBAEBA ABAEBAEBAAAAEBAEBAEBAEAAEBAEBAEA AEBAEBAEAAABAEBAEBAEABABAEBAEBAA AAEBAEBAEBAEBAEBAEBAAFAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAAAAAAAEABABAEBAEBAA AAEBAEBAEBAEAAAAAAAAAFAEBAEBAEBA ABAEBAEBAEAAAFBEFBEAAEAAEBAEBAEA AEBAEBAEBAEABEFBEFBAABABAEBAEBAA AAEBAEBAEABEFBBAEAFBEAAEBAEBAEBA ABAEBAEBAABBEFEBAFEFBAAAEBAEBAEA AEBAEBAEABEFBEFEAFBEFBABAEBAEBAA AAEBAEBAEBBEFBEAFEFBEFAEBAEBAEBA ABAEBAEBAEFBEEAAAAEFBEEAEBAEBAEA AEBAEBAEABEFBEAAAABEFBEBAEBAEBAA AAEBAEBAEFBEAAAFEAAAEFBEBAEBAEBA ABAEBAEABEEAAAAFEAAAAEFAABAEBAEA AEBAEBAAFBEAAAAAAAAAABEEAEBAEBAA AAEBAEABEEABEAAAAAAFAABEEAEBAEBA ABAEBAAFBEABEAAAAAAFAAFBEBAEBAEA AEBAEBAEFAAAAAAAAAAAAAEFAABAEBAA AAEBAEABEEAAAAAAAAAAAABEEAEBAEBA ABAEBAAFAAAAAABFFAAAAAABEBAEBAEA AEBAEBAEEAAAAABFFAAAAAAFAABAEBAA AAEBAEABEAAAABFABFAAAAAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEBEAABAAABAAAFAFAABAEBAA AAEBAEABEBEAABAAABAAAFAEEAEBAEBA ABAEBAAFAAAAABEAAFAAAAABEBAEBAEA AEBAEBAEEAAAABFABFAAAAAFAABAEBAA AAEBAEABEAAAAABFFAAAAAAEEAEBAEBA ABAEBAEABEAAAABFFAAAAAFAABAEBAEA AEBAEBAAFAAAAAAAAAAAAAEEAEBAEBAA AAEBAEBAEEABEAAAAAAFAABEBAEBAEBA ABAEBAEABEABEAAAAAAFAAFAABAEBAEA AEBAEBAEABEAAAAAAAAAABEBAEBAEBAA AAEBAEBAAFAAAAAAAAAAAFAABAEBAEBA ABAEBAEBAAFAAAABEAAABEAAEBAEBAEA AEBAEBAEABEEAAABEAAAFBABAEBAEBAA AAEBAEBAEABEFAAAAAFBEAAEBAEBAEBA ABAEBAEBAEBBEEAAAAEFBABAEBAEBAEA AEBAEBAEBAEABEFBEFBAAAEBAEBAEBAA AAEBAEBAEBAABBEFBEFAABAEBAEBAEBA ABAEBAEBAEBAEAAAAAABAEBAEBAEBAEA AEBAEBAEBAEBAAAAAAAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Set for PAL / NTSC TV # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAABAEBAEBAEBAEBAABAEBAB EAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBF BBAEBAEBAEAAEBAEBAEBAEBAABAEBAEE FEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAB EAEBAEBAEBAABAEBAEBAEBAABAEBAEBF BBAEBAEBAEBAABAEBAEBAEAAEBAEBAEE FEBAEBAEBAEBAABAEBAEBAABAEBAEBAB EAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBF BBAEBAEBAEBAEAAEBAEBAABAEBAEBAEE FEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAB EAEBAEBAEBAEBAABAEBAABAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEABEFBEFBEFBEFBEFBEFBEFBEEAABF BBAAFBEFBEFBEFBEFBEFBEFBEFBAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAB EAEAAAAAAAAAAAAAAAAAAAAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAEAEE FEAAAAAAAAAAAAAAAAAAAAAAAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAEBAEBAEBAEBAEBAEBAAAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEFBEBAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBBEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBBEFAEBAABAABF BBAABAEBAEBAEBAEBAEFBEFAEAAAEAEE FEAAABAEBAEBAEBAEBAEFBEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAEABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAABAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAABAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAEBAEBAEBAEBAEBAEBAEBAABAABF BBAAAAEBAEBAEBAEBAEBAEBAEAAAEAEE FEAAAAAEBAEBAEBAEBAEBAEBAAABEBAB EAEAAAAAEBAEBAEBAEBAEBAAAAABAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBF BBAAAAAAAAAAAAAAAAAAAAAAAAAABAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Set for PAL / NTSC TV # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAABAEBAEBAEBAEBAABAEBAA AAEBAEBAEAAEBAEBAEBAEBAEAAEBAEBA ABAEBAEBAEAAEBAEBAEBAEBAABAEBAEA AEBAEBAEBAEAAEBAEBAEBAEAAEBAEBAA AAEBAEBAEBAABAEBAEBAEBAABAEBAEBA ABAEBAEBAEBAABAEBAEBAEAAEBAEBAEA AEBAEBAEBAEBAABAEBAEBAABAEBAEBAA AAEBAEBAEBAEAAEBAEBAEAAEBAEBAEBA ABAEBAEBAEBAEAAEBAEBAABAEBAEBAEA AEBAEBAEBAEBAEAAEBAEAAEBAEBAEBAA AAEBAEBAEBAEBAABAEBAABAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEBAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEABEFBEFBEFBEFBEFBEFBEFBEEAABA ABAAFBEFBEFBEFBEFBEFBEFBEFBAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAEBAA AAEAAAAAAAAAAAAAAAAAAAAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAEAEA AEAAAAAAAAAAAAAAAAAAAAAAAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAEBAEBAEBAEBAEBAEBAAAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEFBEBAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBBEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBBEFAEBAABAABA ABAABAEBAEBAEBAEBAEFBEFAEAAAEAEA AEAAABAEBAEBAEBAEBAEFBEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAEABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAABAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAABAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAEBAEBAEBAEBAEBAEBAEBAABAABA ABAAAAEBAEBAEBAEBAEBAEBAEAAAEAEA AEAAAAAEBAEBAEBAEBAEBAEBAAABEBAA AAEAAAAAEBAEBAEBAEBAEBAAAAABAABA ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAA AAEAAAAAAAAAAAAAAAAAAAAAAAAAAEBA ABAAAAAAAAAAAAAAAAAAAAAAAAAABAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: Start Slide Show # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAB EAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBF BBAEBAEBAAFBEFBEFBEFBEFBEFBEAAEE FEBAEBAEBAEFBEFBEFBEFBEFBEFBABAB EAEBAEBAAFBEFBEFBEFBEFBEFBEFBABF BBAEBAEBAEFBEFBEFBEFBEFBEFBEFAEE FEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAB EAEBAEBAAAAAAAAAAAAAAAAAABEFBABF BBAEBAAFBEFBEFBEFBEFBEFBEABEFAEE FEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAB EAEBAAFBEFBEFBEFBEFBEFBEFBAFBABF BBAEBAEFBEFBEFBEFBEFBEFBEFAEFAEE FEBAAAAAAAAAAAAAAAAAAAEFBEABEAAB EAEBAAAAAAAAAAAAAAAAAABEFBAFBABF BBAAFBEFBEFBEFBEFBEFBEABEFAEFAEE FEBAEFBEFBEFBEFBEFBEFBAFBEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEFBEFBEFBEFBEFBEFAEFAEFAEE FEABEFBEFBEFBEFBEFBEFBEABEABEAAB EAAFBEFBEFBEFBEFBEFBEFBAFBAFBABF BBAEFBEAAAAAAAAAAAAFBEFAEFAEFAEE FEABEFBAAAAAAAAAAAAEFBEABEABEAAB EAAFBEAAEBAEBAEBAEBAEFBAFBAFBABF BBAEFBABAEBAEBAEBAEABEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABEAAB EAAFBABAEBAEBAEBAEBAAFBAFBAFBABF BBAEFAEBAEBAEBAEBAEBAEFAEFAEFAEE FEABEAAEBAEBAEBAEBAEABEABEABABAB EAAFBABAEBAEBAEBAEBAAFBAFBAFAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAABAEE FEABEAAEBAEBAEBAEBAEABEABEAAEBAB EAAFBABAEBAEBAEBAEBAAFBAFBABAEBF BBAEFAEBAEBAEBAEBAEBAEFAEFAEBAEE FEABEFAEBAEBAEBAEBAAFBEABABAEBAB EAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBF BBAEFBEAAAAAAAAAAAAFBEFAABAEBAEE FEABEFBAAAAAAAAAAAAEFBEAAEBAEBAB EAAFBEFBEFBEFBEFBEFBEFBABAEBAEBF BBAEFBEFBEFBEFBEFBEFBEFAEBAEBAEE FEBAEFBEFBEFBEFBEFBEFBABAEBAEBAB EAEABEFBEFBEFBEFBEFBEFAEBAEBAEBF BBAEAAAAAAAAAAAAAAAAAABAEBAEBAEE FEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Start Slide Show # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAAAAAAAAAAAAAAAAAAAEBAA AAEBAEBAEBAAAAAAAAAAAAAAAAAAAEBA ABAEBAEBAAFBEFBEFBEFBEFBEFBEAAEA AEBAEBAEBAEFBEFBEFBEFBEFBEFBABAA AAEBAEBAAFBEFBEFBEFBEFBEFBEFBABA ABAEBAEBAEFBEFBEFBEFBEFBEFBEFAEA AEBAEBAAAAAAAAAAAAAAAAAAAEFBEAAA AAEBAEBAAAAAAAAAAAAAAAAAABEFBABA ABAEBAAFBEFBEFBEFBEFBEFBEABEFAEA AEBAEBAEFBEFBEFBEFBEFBEFBAFBEAAA AAEBAAFBEFBEFBEFBEFBEFBEFBAFBABA ABAEBAEFBEFBEFBEFBEFBEFBEFAEFAEA AEBAAAAAAAAAAAAAAAAAAAEFBEABEAAA AAEBAAAAAAAAAAAAAAAAAABEFBAFBABA ABAAFBEFBEFBEFBEFBEFBEABEFAEFAEA AEBAEFBEFBEFBEFBEFBEFBAFBEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEFBEFBEFBEFBEFBEFAEFAEFAEA AEABEFBEFBEFBEFBEFBEFBEABEABEAAA AAAFBEFBEFBEFBEFBEFBEFBAFBAFBABA ABAEFBEAAAAAAAAAAAAFBEFAEFAEFAEA AEABEFBAAAAAAAAAAAAEFBEABEABEAAA AAAFBEAAEBAEBAEBAEBAEFBAFBAFBABA ABAEFBABAEBAEBAEBAEABEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABEAAA AAAFBABAEBAEBAEBAEBAAFBAFBAFBABA ABAEFAEBAEBAEBAEBAEBAEFAEFAEFAEA AEABEAAEBAEBAEBAEBAEABEABEABABAA AAAFBABAEBAEBAEBAEBAAFBAFBAFAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAABAEA AEABEAAEBAEBAEBAEBAEABEABEAAEBAA AAAFBABAEBAEBAEBAEBAAFBAFBABAEBA ABAEFAEBAEBAEBAEBAEBAEFAEFAEBAEA AEABEFAEBAEBAEBAEBAAFBEABABAEBAA AAAFBEAAEBAEBAEBAEBAEFBAFAEBAEBA ABAEFBEAAAAAAAAAAAAFBEFAABAEBAEA AEABEFBAAAAAAAAAAAAEFBEAAEBAEBAA AAAFBEFBEFBEFBEFBEFBEFBABAEBAEBA ABAEFBEFBEFBEFBEFBEFBEFAEBAEBAEA AEBAEFBEFBEFBEFBEFBEFBABAEBAEBAA AAEABEFBEFBEFBEFBEFBEFAEBAEBAEBA ABAEAAAAAAAAAAAAAAAAAABAEBAEBAEA AEBAAAAAAAAAAAAAAAAAAAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA ABAEBAEBAEBAEBAEBAEBAEBAEBAEBAEA AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAA AAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 72 # Height: 36 # Length: 2592 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBE AEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFB BAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEF EBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Width: 18 # Height: 12 # Length: 216 # 0000000000000000000000000000FBEF0000 0000EEFE00000000BBAB00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000ABAF00000000EEBB0000 0000FAEA00000000BBAB00000000FAAF0000 0000EFBE0000000000000000000000000000 # # Title: ? # Length: 544 # FBCFBCFBEF3EF3EF # FAEBAEBAEBAEBAE8 ABAEBAEAAEBAEBAF EEBAEBAEFAEBAEBB FAEBAEFAAFAEBAEA 2BAEBBEBAAEAEBAF EEBAEFAEBAEBAEBB FAEBAEBAEBBABAE8 ABAEAAEBAEBAEBAF EEBAEEAEBAABAEBB FAEBAEAAABBABAEA 2BAEAAAFBEBAEBAF EEBAEFBBABEBAEBB FAEBAAFAAFAABAE8 ABAEABEAAEFAEBAF EEBAEEABEAEBAEBB FAEBBEAAAABEBAEA 2BAEBAEAABAAABAF EEBAEAAAAAAFAEBB FAEAAAAFFAAABAE8 ABAEEABEBEABABAF EEBAEEBAAEBBAEBB FAEAAABEBEAABAEA 2BAEFAAFFAABABAF EEBAAAEAABAEAEBB FAEBBEAAAABEBAE8 ABAEABABEAFAEBAF EEBAEBBAABEBAEBB FAEBAEBBEEAEBAEA 2BAEBAAAAABAEBAF EEBAEBAEBAEBAEBB # CFBEF3CF3CFBEFBC # FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # same as above FBEFBEFBEFBE FAEBAEBAEBAF ABAEAAABAEBB EEBAAFBABAEA FAEABAAAABAF ABAEEAEBAEBB EEBAEBAABAEA FAEAAEBBABAF ABAEEAABAEBB EEBAEFBEBAEA FAEABFBAABAF ABAAEAABAEBB EEABABEAFAEA FAEEBAAEABAF ABAEABEABABB EEAAEEBBBAEA FAEEABEAABAF ABAEBAAEBABB EEABABEAFAEA FAEBAAABEBAF ABAEFBEFAEBB EEBAAAAABAEA FAEBAEBAEBAF BEFBEFBEFBEF # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000020000 00000000000000000000000000000000000AC000 00000000000000000000000000000000002BA000 0000000000000000000000000000000000AEB800 0000000000000000000000000000000002BAEB00 000000000000000000000000000000000AEBAE80 000000000000000000000000000000002BAEBAE0 00000000000000000000000000000000AEBAEBAC 000000000000000000000000000000003AEBAEB0 000000000000000000000000000000000BAEBAC0 0000000000000000000000000000000002BAEB00 0000000000000000000000000000000000EBAC00 00000000000000000000000000000000002EB000 00000000000000000000000000000000000AC000 0000000000000000000000000000000000030000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000200000000000000020000 0000000000000000000B800000000000000AC000 0000000000000000002EB00000000000002BA000 000000000000000000BAE8000000000000AEB800 000000000000000002EBAE000000000002BAEB00 00000000000000000BAEBAC0000000000AEBAE80 00000000000000002EBAEBA0000000002BAEBAE0 0000000000000000BAEBAEB800000000AEBAEBAC 00000000000000002BAEBAE0000000003AEBAEB0 00000000000000000EBAEB80000000000BAEBAC0 000000000000000002EBAE000000000002BAEB00 000000000000000000AEB8000000000000EBAC00 0000000000000000003AE00000000000002EB000 0000000000000000000B800000000000000AC000 0000000000000000000200000000000000030000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0003000000000000000200000000000000020000 000E800000000000000B800000000000000AC000 003AE00000000000002EB00000000000002BA000 00EBAC000000000000BAE8000000000000AEB800 03AEBA000000000002EBAE000000000002BAEB00 0EBAEB80000000000BAEBAC0000000000AEBAE80 3AEBAEB0000000002EBAEBA0000000002BAEBAE0 EBAEBAE800000000BAEBAEB800000000AEBAEBAC 2EBAEBA0000000002BAEBAE0000000003AEBAEB0 0AEBAE80000000000EBAEB80000000000BAEBAC0 03AEBA000000000002EBAE000000000002BAEB00 00BAE8000000000000AEB8000000000000EBAC00 002BA00000000000003AE00000000000002EB000 000E800000000000000B800000000000000AC000 0002000000000000000200000000000000030000 # # Title: ? # Width: 72 # Height: 74 # Length: 5328 # AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAFBEFBEFBEFBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEEAAAAA AAAAABEFBEFBEFBEFBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAABFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEAAA AAAFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBAAA AAAFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFAAA AAAFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEAAA AAAFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAAAAAAAAAAABEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAAAAAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAAAAEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEAAA AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAABBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBAAA AAABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAAFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEEAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # # Title: ? # Width: 24 # Height: 10 # Length: 240 # 00000003800000000000000EB00000000000003AE8000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 000000EBEE000000000000AFBA000000000000BEFB000000 0000002BAC0000000000000EB000000000000002C0000000 # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF8EAA8AE88FFFFFFFFFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFFF888888888FFFFFF888888888FFFFFFFFF FFFFFF8EEEEA888A8AA8AAEEEEFEEFF8FFFFFFFF FFFFF8FFFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFF FFFF89999999999FAAAAAAAAEEEEEF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF FF88999999999998AAAAAAAAAAEFFF8FFFFFFFFF F89999999999998EAAAA8F88AEEEEF8FFFFFFFFF 899999999999AAEEAAA8FEFFAAEFFF8FFFFFFFFF F8999999999A88EEAAA8FFEEAEEEEF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FF889999998A88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFF899998AA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFF8988EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFF888EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FFEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA888EEAAA8FEEEAAEFFF8FFFFFFFFF FFFFFFF88EAA88EEAAA8FEEEAEEEEF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA8888EAAAA8F88AAEFFF8FFFFFFFFF FFFFFFF88EA888AAAAAAAAAAAEEEEF8FFFFFFFFF FFFFFFF88EAAAAAAAAAAEAEEAEEFFF8FFFFFFFFF FFFFFFFFF88EEEEEEEEEEEEEEEFFF88FFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFF8888888888888888888FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Erase # Width: 20 # Height: 40 # Length: 400 # 9999999999999999FFFFFF999999999999999999 999999999999999FEAA8AEFF9999999999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 9999999FFFFFFFFFFFFFFFFFFFFFFFF999999999 999999FEEEEA888A8AA8AAEEEEFEEFFF99999999 99999FFFFFFFFFFFFFFFFFFFFFFFFFFF99999999 99999F888888888FAAAAAAAAEEEEEFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 99FFF888888888F8AAAAAAAAAAEFFFF999999999 9F8888888888FF8EAAAA8F88AEEEEFF999999999 F8888888888FAAEEAAA8FEFFAAEFFFF999999999 9F88888888FA88EEAAA8FFEEAEEEEFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 99FF88888FFA88EEAAA8FEEEAAEFFFF999999999 9999F8888FAA88EEAAA8FFEEAEEEEFF999999999 99999F8FFEAA88EEAAA8FEEEAAEFFFF999999999 999999FFFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FFEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA888EEAAA8FEEEAAEFFFF999999999 9999999FFEAA88EEAAA8FEEEAEEEEFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA8888EAAAA8F88AAEFFFF999999999 9999999FFEA888AAAAAAAAAAAEEEEFF999999999 9999999FFEAAAAAAAAAAEAEEAEEFFFF999999999 999999999FFEEEEEEEEEEEEEEEFFFFF999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999FFFFFFFFFFFFFFFFFFF99999999999 9999999999999999999999999999999999999999 # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF88888888888888888888888888888888888FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FDDDDDBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDDDBBBFF8FCCCCCCCCF8F9999DDDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDDBBBBBFF8FCCCCCCEEF8F99999DDDF8FFF FF88FDBBBBBBFF8FCCCCCEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCCEEEEF8FAAA99999F8FFF FF88FBBBBBBBFF8FCCCEEEEEF8FAAA99999F8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FBBBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FEEEEAAAFF8FCCCCCDDDF8FCCBBBBBBF8FFF FF88FCCCCAAAFF8FCCCCCDDDF8FCCCBBBBBF8FFF FF88FCCCCAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCBBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FBBBBAAAFF8FDDDDCCCCF8FCCCCCBBBF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F999999BFF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99999B9FF8FDAAAAAAAF8FCCCCCDDDF8FFF FF88F99BBBB9FF8FDAAAAAAAF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEEB9FF8FEEEEBBBBF8FCCCAADDDF8FFF FF88FEEEEE99FF8FEEEEBBBBF8FDDDDDDDDF8FFF FF88FFFFFFFFFF8FFFFFFFFFF8FFFFFFFFFF8FFF FF88888888888888888888888888888888888FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: View Small Photos # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9F99999999999999999999999999999999999FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FDDDDDBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDDDBBBFF9FCCCCCCCCF9F9999DDDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDDBBBBBFF9FCCCCCCEEF9F99999DDDF9FF9 9F99FDBBBBBBFF9FCCCCCEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCCEEEEF9FAAA99999F9FF9 9F99FBBBBBBBFF9FCCCEEEEEF9FAAA99999F9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FBBBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FEEEEAAAFF9FCCCCCDDDF9FCCBBBBBBF9FF9 9F99FCCCCAAAFF9FCCCCCDDDF9FCCCBBBBBF9FF9 9F99FCCCCAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCBBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FBBBBAAAFF9FDDDDCCCCF9FCCCCCBBBF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F999999BFF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99999B9FF9FDAAAAAAAF9FCCCCCDDDF9FF9 9F99F99BBBB9FF9FDAAAAAAAF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEEB9FF9FEEEEBBBBF9FCCCAADDDF9FF9 9F99FEEEEE99FF9FEEEEBBBBF9FDDDDDDDDF9FF9 9F99FFFFFFFFFF9FFFFFFFFFF9FFFFFFFFFF9FF9 9F99999999999999999999999999999999999FF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 9999999999999999999999999999999999999999 # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A88F888888888F8A88FFFFFFFFFFF FFFFFFFFFF8A888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFF88EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Lock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFF9FFFFFFFFF9FAFF99999999999 9999999999FAFFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF888888FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFFFF88EEEEEE888FFFFFFFFFFFFFFF FFFFFFFFFFFF88EEE8888EEEE8FFFFFFFFFFFFFF FFFFFFFFFFF8EEE88FFFF888EE8FFFFFFFFFFFFF FFFFFFFFFF8EEE8FFFFFFFFF8EE88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8E88FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFF8888FFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF8E88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFFFFF888888888F8A88FFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88A88FFFFFFFFFFF FFFFFFFFFFF8EEEEEDDDDEEEEE888FFFFFFFFFFF FFFFFFFFFF8EEEEEEEEDEEEEEEE88FFFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFFFF8EEEEEEFFFFFFEEEEEEE8FFFFFFFFFF FFFFFFF88EEEEEFFFFF8FFFFFEEEEE8FFFFFFFFF FFFFFFF88EEEFFFFFFFFFFFFFFEEEE8FFFFFFFFF FFFFFF8EEEEFFF8FFFFFFFFF8FFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEEFFFFFFFFFFFFFFFFEEEE8FFFFFFFF FFFFFF8EEEFFFFFFF8888FFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF888888FFFFFFFEE8FFFFFFFF FFFFFF8EEEF8FFFF88888AFFFF8FFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFF8888AEFFFFFFFEE8FFFFFFFF FFFFFF8EEEFFFFFFF88AEFFFFFFFFEE8FFFFFFFF FFFFFFF88EEFFFFFFFFFFFFFFFF88E8FFFFFFFFF FFFFFFF88EEFFF8FFFFFFFFF8FFEEE8FFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFF8EEFFFFFFFFFFFFFFEEE8FFFFFFFFFF FFFFFFFFFF8EEEFFFFF8FFFFFEE88FFFFFFFFFFF FFFFFFFFFFF8EEEEFFFFFF88EE8FFFFFFFFFFFFF FFFFFFFFFFFF888EEEEEEEEE88FFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF888888888FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Unlock # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999FFFFFF999999999999999999 99999999999999FFEEEEEEFFF999999999999999 99999999999999FFEEEEEEFFF999999999999999 999999999999FFEEEFFFFEEEEF99999999999999 99999999999FEEEFF9999FFFEEF9999999999999 9999999999FEEEF999999999FEEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FEFF99999999999FEFF99999999999 9999999999FFFF99999999999FEFF99999999999 9999999999999999999999999FEFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999999FFFFFFFFF9FAFF99999999999 999999999999FFFEEEEEEEEEFFAFF99999999999 9999999999FFEEEEEDDDDEEEEEFFF99999999999 9999999999FEEEEEEEEDEEEEEEEFF99999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 999999999FEEEEEEFFFFFFEEEEEEEF9999999999 9999999FFEEEEEFFFFF8FFFFFEEEEEF999999999 9999999FFEEEFFFFFFFFFFFFFFEEEEF999999999 999999FEEEEFFF8FFFFFFFFF8FFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEEFFFFFFFFFFFFFFFFEEEEF99999999 999999FEEEFFFFFFF8888FFFFFFFFEEF99999999 999999FEEEFFFFFF888888FFFFFFFEEF99999999 999999FEEEF8FFFF88888AFFFF8FFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFF8888AEFFFFFFFEEF99999999 999999FEEEFFFFFFF88AEFFFFFFFFEEF99999999 9999999FFEEFFFFFFFFFFFFFFFF88EF999999999 9999999FFEEFFF8FFFFFFFFF8FFEEEF999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 999999999FEEFFFFFFFFFFFFFFEEEF9999999999 9999999999FEEEFFFFF8FFFFFEEFF99999999999 99999999999FEEEEFFFFFF88EEF9999999999999 999999999999FFFEEEEEEEEEFF99999999999999 999999999999999FFFFFFFFF9999999999999999 999999999999999FFFFFFFFF9999999999999999 9999999999999999999999999999999999999999 # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEEFFFFF FFFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAEFFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEFFF FFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEFFF FFFFFFFEEAAAAAAAAAAAAAAAAAAAAAAEAAAAEFFF FFFFFFEAAAAAAAAAAAAAAAAAAAAAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEAAAAAEEAAEFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEAAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEAAEEAAEFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAAEFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEAEFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEEFFFFF FFEEAAFEEEEEEEEEEEEEEEEEEFAAAEAAEEFFFFFF FFEEAAAFFEEEEEEEEEEEEEEEFAAAAEAEFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAFFFFFFFFFFFFFFFAAAAAEEFFFFFFFFF FFEEAAAAAAAAAAAAAAAAAAAAAAAAAEFFFFFFFFFF FFFFEAAAAAAAAAAAAAAAAAAAAAAEEFFFFFFFFFFF FFFFFEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # # Title: Start Slide Show # Width: 20 # Height: 40 # Length: 400 # 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 999999999999FFFFFFFFFFFFFFFFFFFFFFF99999 99999999999FAAAAAAAAAAAAAAAAAAAAAAAF9999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 9999999999FAAAAAAAAAAAAAAAAAAAAAAAAAF999 999999999FFFFFFFFFFFFFFFFFFFFFFAAAAAF999 9999999FFAAAAAAAAAAAAAAAAAAAAAAFAAAAF999 999999FAAAAAAAAAAAAAAAAAAAAAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 99999FFFFFFFFFFFFFFFFFFFFFFAAAAAFFAAF999 9999FAAAAAAAAAAAAAAAAAAAAAAFFAAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFAAFFAAF999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAAF999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFAF9999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFFF99999 99FFAAFEEEEEEEEEEEEEEEEEEFAAAFAAFF999999 99FFAAAFFEEEEEEEEEEEEEEEFAAAAFAF99999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAFFFFFFFFFFFFFFFAAAAAFF999999999 99FFAAAAAAAAAAAAAAAAAAAAAAAAAF9999999999 9999FAAAAAAAAAAAAAAAAAAAAAAFF99999999999 99999FFFFFFFFFFFFFFFFFFFFFF9999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 9999999999999999999999999999999999999999 # # Title: Locked # Width: 12 # Height: 24 # Length: 288 # 999999999999999999999999 99999999FFEEEFF999999999 9999999FEEFFFEEF99999999 9999999EEF999FEE99999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9999999FF9999999 999999FF9FFFFF9FF9999999 999999FFFEEEEEFFF9999999 999999FEEEDDDEEEF9999999 99999FEEEEFFFEEEEF999999 9999FEEEFFF8FFFEEEF99999 9999FEEFFFFFFFFFEEF99999 9999EEEFFFFFFFFFEEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF888FFFFEE99999 9999EEFFFF88AFFFFEE99999 9999EEFFFF8AEFFFFEE99999 9999FEEFFFFFFFFF8EF99999 99999FEFFFFFFFFFEF999999 999999FEFFF8FFFEF9999999 9999999EEEFFF8EE99999999 999999999FFFFF9999999999 999999999999999999999999 # # Title: Low Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000B00000 000000000000000000000000000000000BBB0000 00000000000000000000000000000000BBBBB000 0000000000000000000000000000000BBBBBBB00 000000000000000000000000000000BBBBBBBBB0 0000000000000000000000000000000BBBBBBB00 00000000000000000000000000000000BBBBB000 000000000000000000000000000000000BBB0000 0000000000000000000000000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 00000000000000000000B0000000000000B00000 0000000000000000000BBB00000000000BBB0000 000000000000000000BBBBB000000000BBBBB000 00000000000000000BBBBBBB0000000BBBBBBB00 0000000000000000BBBBBBBBB00000BBBBBBBBB0 00000000000000000BBBBBBB0000000BBBBBBB00 000000000000000000BBBBB000000000BBBBB000 0000000000000000000BBB00000000000BBB0000 00000000000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: High Resolution # Width: 20 # Height: 15 # Length: 300 # 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 000000B0000000000000B0000000000000B00000 00000BBB00000000000BBB00000000000BBB0000 0000BBBBB000000000BBBBB000000000BBBBB000 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 00BBBBBBBBB00000BBBBBBBBB00000BBBBBBBBB0 000BBBBBBB0000000BBBBBBB0000000BBBBBBB00 0000BBBBB000000000BBBBB000000000BBBBB000 00000BBB00000000000BBB00000000000BBB0000 000000B0000000000000B0000000000000B00000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 # # Title: Normal # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAABEFBEFBEFBEFBEFBEFBEAAAAEB AEAAAAFBEFBEFBEFBEFBEFBEFBAAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAABBEFBEFBEFBEFBEFBEFBEEAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBAEABAE BAEAFAAFBEFBEFBEFBEFBEFBEEBEAABA EBABEFAEFBEFBEFBEFBEFBEFBAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEEBEFABAE BAEAFBEABEFBEFBEFBEFBEFBAFBEEABA EBABEFBEBBEFBEFBEFBEFBEEBEFBEAEB AEABBEFBAFBEFBEFBEFBEFBAFBEFABAE BAEAFBEFAAFBEFBEFBEFBEEBEFBEEABA EBABEFBEFAEFBEFBEFBEFBEFBEFBEAEB AEABBEFBEEBEFBAFBEFBEFBEFBEFABAE BAEAFBEFBEABEEBEFBEFBEFBEFBEEABA EBABEFBEFBEFAABBEFBEFBEFBEFBEAEB AEABBEFBEFBEAAAFBEFBEFBEFBEFABAE BAEAFBEFBEFAAABEAAEAAAFBEFBEEABA EBABEFBEFBEFAABBAABAABEFBEFBEAEB AEABBEFBEFBEEAAFAAEAAFBEFBEFABAE BAEAFBEFBEFBEABEEAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFBEABEFBEFBEFABAE BAEAFBEFBEFBEABEFAAABEFBEFBEEABA EBABEFBEFBEFAABBEAAAFBEFBEFBEAEB AEABBEFBEFBEEAAFAAFAAFBEFBEFABAE BAEAFBEFBEEBEABEAAEAAEFBEFBEEABA EBABEFBEFBAFAABAABBEABEFBEFBEAEB AEABBEFBEEBEFBEFBEFBEFAEFBEFABAE BAEAFBEFBAFBEFBEFBEFBEEBEFBEEABA EBABEFBEEBEFBEFBEFBEFBEABEFBEAEB AEABBEFBAFBEFBEFBEFBEFBEBBEFABAE BAEAFBEEBEFBEFBEFBEFBEFBAFBEEABA EBABEFBAFBEFBEFBEFBEFBEFAAFBEAEB AEABBEEBEFBEFBEFBEFBEFBEFAEFABAE BAEAFBAFBEFBEFBEFBEFBEFBEEBEAABA EBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEB AEAABAFBEFBEFBEFBEFBEFBEFBEAABAE BAEAABEFBEFBEFBEFBEFBEFBEFBAAABA EBAAAABEFBEFBEFBEFBEFBEFBEEAAAEB AEAAAABBEFBEFBEFBEFBEFBEFBAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Normal # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAABEFBEFBEFBEFBEFBEFBEAAAAEE FEAAAAFBEFBEFBEFBEFBEFBEFBAAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAABBEFBEFBEFBEFBEFBEFBEEAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBAEABAB EAEAFAAFBEFBEFBEFBEFBEFBEEBEAABF BBABEFAEFBEFBEFBEFBEFBEFBAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEEBEFABAB EAEAFBEABEFBEFBEFBEFBEFBAFBEEABF BBABEFBEBBEFBEFBEFBEFBEEBEFBEAEE FEABBEFBAFBEFBEFBEFBEFBAFBEFABAB EAEAFBEFAAFBEFBEFBEFBEEBEFBEEABF BBABEFBEFAEFBEFBEFBEFBEFBEFBEAEE FEABBEFBEEBEFBAFBEFBEFBEFBEFABAB EAEAFBEFBEABEEBEFBEFBEFBEFBEEABF BBABEFBEFBEFAABBEFBEFBEFBEFBEAEE FEABBEFBEFBEAAAFBEFBEFBEFBEFABAB EAEAFBEFBEFAAABEAAEAAAFBEFBEEABF BBABEFBEFBEFAABBAABAABEFBEFBEAEE FEABBEFBEFBEEAAFAAEAAFBEFBEFABAB EAEAFBEFBEFBEABEEAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFBEABEFBEFBEFABAB EAEAFBEFBEFBEABEFAAABEFBEFBEEABF BBABEFBEFBEFAABBEAAAFBEFBEFBEAEE FEABBEFBEFBEEAAFAAFAAFBEFBEFABAB EAEAFBEFBEEBEABEAAEAAEFBEFBEEABF BBABEFBEFBAFAABAABBEABEFBEFBEAEE FEABBEFBEEBEFBEFBEFBEFAEFBEFABAB EAEAFBEFBAFBEFBEFBEFBEEBEFBEEABF BBABEFBEEBEFBEFBEFBEFBEABEFBEAEE FEABBEFBAFBEFBEFBEFBEFBEBBEFABAB EAEAFBEEBEFBEFBEFBEFBEFBAFBEEABF BBABEFBAFBEFBEFBEFBEFBEFAAFBEAEE FEABBEEBEFBEFBEFBEFBEFBEFAEFABAB EAEAFBAFBEFBEFBEFBEFBEFBEEBEAABF BBAAEEBEFBEFBEFBEFBEFBEFBEAAAAEE FEAABAFBEFBEFBEFBEFBEFBEFBEAABAB EAEAABEFBEFBEFBEFBEFBEFBEFBAAABF BBAAAABEFBEFBEFBEFBEFBEFBEEAAAEE FEAAAABBEFBEFBEFBEFBEFBEFBAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: Zoom # Status: Not Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEAAAAAAAAAAAAAAAAAAAAAAAAAAABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEEABAE BAEAABAFBEFBEFBEFBEFBEFBEABAEABA EBABEBAEFBEFBEFBEFBEFBEFBAEBEAEB AEABBAABEFBEFBEFBEFBEFBEFAAFABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAAAAAAAAAAAAAAAAAAAAABEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEFFEBAEBAEBAEAFABAE BAEAFABAEBAEBBFFFEBAEBAEBABEEABA EBABEEABAFFAEFFFFEEBAEBAEABBEAEB AEABBEAEBBEBAFFBFFAEBAEBAEAFABAE BAEAFABAEBEEBFEBFEBFFBFFFABEEABA EBABEEABAFFAEBEFFEEFFEFFEABBEAEB AEABBEAFFFFFEEBFFBAFFBFFAEAFABAE BAEAFABBFFFFFAFFFEBBFFFEBABEEABA EBABEEABAFFAEBBFFAEBFFFAEABBEAEB AEABBEAEBBEBAEFFEBAEBFEBAEAFABAE BAEAFABAEBEEBAFFAEBAFFFEBABEEABA EBABEEABAFFAEBFEBAEBFFFAEABBEAEB AEABBEAEBAEBAFFFFFAFFAFFAEAFABAE BAEAFABAEBAEBFFFFEBFFBFFBABEEABA EBABEEABAEBAFFFFFEFFEEBFEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAEBAEBAEBAEBAEBAEBAEAFABAE BAEAFABAEBAEBAEBAEBAEBAEBABEEABA EBABEEABAEBAEBAEBAEBAEBAEABBEAEB AEABBEAAAAAAAAAAAAAAAAAAAAABABAE BAEAEAAAAAAAAAAAAAAAAAAAAAAAEABA EBABEAAEFBEFBEFBEFBEFBEFBAABEAEB AEABBAABEFBEFBEFBEFBEFBEFAEBABAE BAEAEBAFBEFBEFBEFBEFBEFBEABAEABA EBABAFBEFBEFBEFBEFBEFBEFBEFAAAEB AEAABEFBEFBEFBEFBEFBEFBEFBEFABAE BAEAAAAAAAAAAAAAAAAAAAAAAAAAAABA EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE BAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBA EBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEB AEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAE # # Title: Zoom # Status: Selected # Width: 16 # Length: 1024 # ######## red ######## ######## yellow ######## ######## blue ######## FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB EFBEFBEFBEFBEFBEFBEFBEFBEFBEFBEF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEAAAAAAAAAAAAAAAAAAAAAAAAAAABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAEFBEFBEFBEFBEFBEFBEFBEFBAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEEABAB EAEAABAFBEFBEFBEFBEFBEFBEABAEABF BBABEBAEFBEFBEFBEFBEFBEFBAEBEAEE FEABBAABEFBEFBEFBEFBEFBEFAAFABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAAAAAAAAAAAAAAAAAAAAABEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEFFEBAEBAEBAEAFABAB EAEAFABAEBAEBBFFFEBAEBAEBABEEABF BBABEEABAFFAEFFFFEEBAEBAEABBEAEE FEABBEAEBBEBAFFBFFAEBAEBAEAFABAB EAEAFABAEBEEBFEBFEBFFBFFFABEEABF BBABEEABAFFAEBEFFEEFFEFFEABBEAEE FEABBEAFFFFFEEBFFBAFFBFFAEAFABAB EAEAFABBFFFFFAFFFEBBFFFEBABEEABF BBABEEABAFFAEBBFFAEBFFFAEABBEAEE FEABBEAEBBEBAEFFEBAEBFEBAEAFABAB EAEAFABAEBEEBAFFAEBAFFFEBABEEABF BBABEEABAFFAEBFEBAEBFFFAEABBEAEE FEABBEAEBAEBAFFFFFAFFAFFAEAFABAB EAEAFABAEBAEBFFFFEBFFBFFBABEEABF BBABEEABAEBAFFFFFEFFEEBFEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAEBAEBAEBAEBAEBAEBAEAFABAB EAEAFABAEBAEBAEBAEBAEBAEBABEEABF BBABEEABAEBAEBAEBAEBAEBAEABBEAEE FEABBEAAAAAAAAAAAAAAAAAAAAABABAB EAEAEAAAAAAAAAAAAAAAAAAAAAAAEABF BBABEAAEFBEFBEFBEFBEFBEFBAABEAEE FEABBAABEFBEFBEFBEFBEFBEFAEBABAB EAEAEBAFBEFBEFBEFBEFBEFBEABAEABF BBABAFBEFBEFBEFBEFBEFBEFBEFAAAEE FEAABEFBEFBEFBEFBEFBEFBEFBEFABAB EAEAAAAAAAAAAAAAAAAAAAAAAAAAAABF BBAAAAAAAAAAAAAAAAAAAAAAAAAAAAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BBAEBAEBAEBAEBAEBAEBAEBAEBAEBAEE FEBAEBAEBAEBAEBAEBAEBAEBAEBAEBAB EAEBAEBAEBAEBAEBAEBAEBAEBAEBAEBF BEFBEFBEFBEFBEFBEFBEFBEFBEFBEFBE FBEFBEFBEFBEFBEFBEFBEFBEFBEFBEFB # # Title: ? # Length: 48 # 00000007 00000007 00000004 00000005 00000003 00000004 00000007 00000004 00000009 00000007 00000008 00000008 # # Title: ? # Length: # 00000000000007E01FF81C38381C381C381C381C1C381FF807E0000000000000 00000000000003801F801F80038003800380038003803FF83FF8000000000000 0000000000000FE03FF03838003800F003E00F803E383FF83FF8000000000000 0000000000000FE03FF03838003803F003F0003838383FF00FE0000000000000 00000000000003E007E00EE01CE038E07FF87FF800E007F807F8000000000000 0000000000003FF83FF838003FE03FF00078003878783FF00FC0000000000000 00000000000007F01FF03C003BC07FF07C7878383C783FF00FC0000000000000 0000000000003FF83FF8007000F000E001E001C003C003800780000000000000 00000000000007E01FF81C381C380FF01FF8381C381C1FF807E0000000000000 00000000000007E01FF83C78383C3C7C1FFC07B800781FF01FC0000000000000 0000000000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 0000000000007FF87FFE1C0E1C0E1FF81FFE1C0E1C0E7FFE7FF8000000000000 00000000000007F61FFE3C0E78067000700078003C0E1FFE07F0000000000000 0000000000007FE07FF81C3C1C1E1C0E1C0E1C1E1C3C7FF87FE0000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 0000000000007FFE7FFE1C0E1C0E1FE01FE01C001C007F807F80000000000000 00000000000007F61FFE3C0E78007000703F783F3C0E1FFE07F0000000000000 0000000000007E7E7E7E1C381C381FF81FF81C381C387E7E7E7E000000000000 0000000000003FF83FF80380038003800380038003803FF83FF8000000000000 00000000000007FE07FE0070007000707070707078F03FE01FC0000000000000 0000000000007EFC7EFC1C701CE01FC01FE01DF01C7C7F3E7F3E000000000000 0000000000007FC07FC00E000E000E000E000E060E067FFE7FFE000000000000 000000000000F83EFC7E7C7C7EFC77DC77DC739C739CF93EF83E000000000000 000000000000F8FEFCFE3E383F383FB83BF839F838F8FE78FE38000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0000000000007FF07FF81C3C1C1C1C3C1FF81FF01C007F007F00000000000000 0000000000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE01FFE1CFC0000 0000000000007FF07FFC1C3C1C3C1FF81FF01CF01C787F3E7F1E000000000000 0000000000001FEC7FFC701C70007FF01FFC001C701C7FFC6FF0000000000000 0000000000007FFC7FFC739C739C03800380038003803FF83FF8000000000000 0000000000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 000000000000FEFEFEFE38381C701C700EE00EE007C007C00380000000000000 000000000000FC3FFC3F718E718E3BDC3BDC3FFC1E781C381C38000000000000 0000000000007F7E7F7E1E380FF007C003E00FF01C787EFE7EFE000000000000 0000000000007EFC7EFC1C700EE007C007C0038003801FF01FF0000000000000 0000000000003FFC3FFC38F839F003E007C00F9C1F1C3FFC3FFC000000000000 000000000000000000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000000F800F8003BF03FFC3C1E380E380E3C1EFFFCFBF0000000000000 000000000000000000000FDC3FFC783C70007000781C3FFC0FF0000000000000 000000000000007C007C0FDC3FFC783C701C701C783C3FFF0FDF000000000000 000000000000000000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 00000000000001FC07FC07003FF03FF00700070007003FF03FF0000000000000 000000000000000000000FDF3FFF783C701C701C783C3FFC0FDC001C3FF81FF0 000000000000F800F8003BF03FF83C38383838383838FEFEFEFE000000000000 000000000380038000001F801F8003800380038003803FF83FF8000000000000 0000000000E000E000003FE03FE000E000E000E000E000E000E001E03FC03F80 0000000000007C007C001CF81CF81DE01F801FC01FF07CFC7C7C000000000000 0000000000001F801F800380038003800380038003803FF83FF8000000000000 00000000000000000000EF78FFFC739C739C739C739CFBDEFBDE000000000000 00000000000000000000FBF0FFF83C38383838383838FEFEFEFE000000000000 000000000000000000000FF03FFC781E700E700E781E3FFC0FF0000000000000 00000000000000000000FBF0FFFC3C1E380E380E3C1E3FFC3BF03800FF00FF00 000000000000000000001FBE7FFEF078E038E038F0787FF81FB8003801FE01FE 000000000000000000003EF83FFE0F1E0E000E000E007FF07FF0000000000000 000000000000000000001FB07FF070307FC01FF060707FF06FC0000000000000 0000000000001C001C00FFF0FFF01C001C001C001C1C1FFC07F0000000000000 00000000000000000000F8F8F8F838383838383838783FFE0FBE000000000000 00000000000000007E7E7E7E1C381E780E7007E007E003C003C0000000000000 00000000000000000000F83EF93E739C7BBC3FF83EF81C701C70000000000000 000000000000000000007EFC7EFC1E700FC007E01CF07EFC7EFC000000000000 000000000000000000007E7E7E7E1C380E700FE007C00380038007003FC03FC0 000000000000000000003FF83FF831F003C007801F183FF83FF8000000000000 00000000000003C003C003C003C003C001800180000003C003C0000000000000 000000000000000000000000000000000000000003C003C003C0000000000000 0000000000000FF01FF81C38003800F007C00700000007800780000000000000 000000000000001C0038007000E001C0038007000E001C003800000000000000 0000000000000000000003C003C003C00000000003C003C003C0000000000000 00000000000007C00FE00E600F00079C1FD839F838F03FFC0FBC000000000000 # 00000000000003C003C000000180018003C003C003C003C003C0000000000000 0000000000000FC0006007E00C600C6007F00000000000000000000000000000 00000000000007C00C600C600C600C6007C00000000000000000000000000000 00000000000001E001E0000000E003E00F001C001C381FF80FF0000000000000 0F0003C000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 0CC00CC000001FC01FC00FE00EE01C701FF03FF838387C7C7C7C000000000000 00000000000007F61FFE3C0E78067000700078003C0E1FFE07F001C007C00780 078001E000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 01E0078000007FFE7FFE1C0E1C0E1FE01FE01C0E1C0E7FFE7FFE000000000000 0F0003C000003FF83FF80380038003800380038003803FF83FF8000000000000 07600DC00000F8FEFCFE3E383F383FB83BF839F838F8FE78FE38000000000000 0F0003C000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0CC00CC000000FE03FF8783CF01EE00EE00EF01E783C3FF80FE0000000000000 0F0003C000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 0660066000007E7E7E7E381C381C381C381C381C3C3C1FF80FF0000000000000 00000000000007E00FF81C381C381DF01DF81C1C1C1C7DF87DF0000000000000 000000000F0003C000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000660066000003FE03FF800381FF87FF870387FFE1FDE000000000000 000000000000000000000FDC3FFC783C70007000781C3FFC0FF003800F800F00 000000000F0003C000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 0000000001E0078000000FE03FF8783C7FFC7FFC78003FFC0FF8000000000000 000000001E00078000001F801F8003800380038003803FF83FF8000000000000 0000000007600DC00000FBF0FFF83C38383838383838FEFEFEFE000000000000 00000000078001E000000FF03FFC781E700E700E781E3FFC0FF0000000000000 000000000660066000000FF03FFC781E700E700E781E3FFC0FF0000000000000 000000000F0003C00000F8F8F8F838383838383838783FFE0FBE000000000000 000000000CC00CC00000F8F8F8F838383838383838783FFE0FBE000000000000 00000000000001E001C003800300000000000000000000000000000000000000 000000000000000000000000000000000000000003C003800700060000000000 000000000000000000000000000007C007C00000000000000000000000000000 0000000001E0078000001F801F8003800380038003803FF83FF8000000000000 0000000001E0078000000FF03FFC781E700E700E781E3FFC0FF0000000000000 0000000003C00F0000003FE03FF800381FF87FF870387FFE1FDE000000000000 000007C01EF0783C0000F8F8F8F838383838383838783FFE0FBE000000000000 # # Text: / # 2F 00 # # Text: : # 3A 00 # # Text: am # 61 6D 00 # # Text: pm # 70 6D 00 # # Text: No pictures in camera. # 41 75 63 75 6E 65 20 69 6D 61 67 65 0A 64 61 6E 73 20 6C 9B 61 70 70 61 72 65 69 6C 0A 00 # # Text: Yes # 4F 75 69 00 # # Text: No # 4E 6F 6E 00 # # Text: . # 2E 00 # # Text: # 00 # # Text: # 00 # # Text: Lock? # 56 65 72 72 6F 75 69 6C 6C 65 72 3F 00 # # Text: Unlock? # 44 94 76 65 72 72 6F 75 69 6C 6C 65 72 3F 00 # # Text: Erase? # 45 66 66 61 63 65 72 3F 00 # # Text: View Small Photos? # 41 66 66 69 63 68 65 72 0A 70 6C 61 6E 63 68 65 0A 63 6F 6E 74 61 63 74 3F 00 # # Text: View Full screen? # 00 # # Text: Set Screen Brightness? # 52 94 67 6C 65 72 0A 6C 75 6D 69 6E 6F 73 69 74 94 0A 94 63 72 61 6E 3F 00 # # Text: Start Slide Show? # 44 94 66 69 6C 65 6D 65 6E 74 0A 61 75 74 6F 3F 00 # # Text: Stop Slide Show? # 00 # # Text: Set Camera Exposure? # 52 94 67 6C 65 72 0A 65 78 70 6F 73 69 74 69 6F 6E 0A 61 70 70 61 72 65 69 6C 3F00 # # Text: Format Memory Card? # 46 6F 72 6D 61 74 65 72 0A 63 61 72 74 65 0A 6D 94 6D 6F 69 72 65 3F 00 # # Text: Set Date & Time? # 52 94 67 6C 65 72 0A 64 61 74 65 0A 65 74 20 68 65 75 72 65 3F 00 # # Text: Set for NTSC TV? # 43 6F 6E 66 69 67 20 54 56 0A 4E 54 53 43 3F 00 # # Text: Set for PAL TV? # 43 6F 6E 66 69 67 20 54 56 0A 50 41 4C 3F 00 # # Text: Review Pictures? # 52 65 76 6F 69 72 0A 70 68 6F 74 6F 73 3F 00 # # Text: Take Pictures? # 50 72 65 6E 64 72 65 20 70 68 6F 74 6F 3F 00 # # Text: # 00 # # Text: One # 55 6E 65 0A 20 20 20 20 20 00 # # Text: None # 4E 6F 6E 0A 20 20 20 20 20 00 # # Text: All # 54 74 65 73 0A 20 20 20 20 20 00 # # Text: # 00 # # Text: ERASE? # 45 66 66 61 63 65 72 3F 00 # # Text: Erase This Picture? # 45 66 66 61 63 65 72 0A 63 65 74 74 65 0A 70 68 6F 74 6F 3F 00 # # Text: Cancel Picture Erase? # 41 6E 6E 75 6C 65 72 0A 65 66 66 61 63 65 6D 65 6E 74 0A 70 68 6F 74 6F 3F 00 # # Text: Erase All Pictures? # 45 66 66 61 63 65 72 0A 74 6F 75 74 65 73 0A 70 68 6F 74 6F 73 3F 00 # # Text: Erasing picture... # 45 66 66 61 63 65 6D 65 6E 74 0A 70 68 6F 74 6F 2E 2E 2E 00 # # Text: Picture is LOCKED Unlock before erasing # 50 68 6F 74 6F 0A 76 65 72 72 6F 75 69 6C 6C 94 65 2E 0A 44 94 76 65 72 72 6F 75 69 6C 6C 65 0A 61 76 61 6E 74 20 64 9B 65 66 66 61 63 65 72 2E 00 # # Text: Erase ALL pictures? # 45 66 66 61 63 65 72 0A 54 4F 55 54 45 53 0A 70 68 6F 74 6F 73 3F 00 # # Text: Erasing ALL pictures... # 45 66 66 61 63 65 6D 65 6E 74 0A 54 4F 55 54 45 53 0A 70 68 6F 74 6F 73 2E 2E 2E 00 # # Text: Normal? # 4E 6F 72 6D 61 6C 3F 00 # # Text: Zoom? # 5A 6F 6F 6D 3F 00 # # Text: Set Screen Brightness # 52 94 67 6C 65 72 0A 6C 75 6D 69 6E 6F 73 69 74 94 20 94 63 72 61 6E 00 # # Text: Set Camera Exposure # 52 94 67 6C 65 72 20 65 78 70 6F 73 69 74 69 6F 6E 0A 61 70 70 61 72 65 69 6C 00 # # Text: Formatting resets the memory card and erases all photos on it. Format? # 4C 65 20 66 6F 72 6D 61 74 61 67 65 0A 72 94 69 6E 69 74 69 61 6C 69 73 65 0A 6C 61 20 63 61 72 74 65 20 6D 94 6D 6F 69 72 65 0A 65 74 20 65 66 66 61 63 65 20 74 6F 75 74 65 73 0A 6C 65 73 20 70 68 6F 74 6F 73 2E 0A 46 6F 72 6D 61 74 65 72 3F 00 # # Text: Formatting the memory card..... # 46 6F 72 6D 61 74 61 67 65 0A 64 65 20 6C 61 0A 63 61 72 74 65 20 6D 94 6D 6F 69 72 65 2E 2E 2E 00 # # Text: Set for PAL TV? # 43 6F 6E 66 69 67 20 54 56 0A 50 41 4C 3F 00 # # Text: Set for NTSC TV? # 43 6F 6E 66 69 67 20 54 56 0A 4E 54 53 43 3F 00 # # Text: # 00 # # Text: This pict # 43 65 74 74 65 0A 70 68 6F 74 6F 00 # # Text: No # 4E 6F 6E 00 # # Text: ALL pict # 54 4F 55 54 45 53 0A 70 68 6F 74 6F 73 00 # # Text: January # 4A 61 6E 76 69 65 72 00 # # Text: February # 46 94 76 72 69 65 72 00 # # Text: March # 4D 61 72 73 00 # # Text: April # 41 76 72 69 6C 00 # # Text: May # 4D 61 69 00 # # Text: June # 4A 75 69 6E 00 # # Text: July # 4A 75 69 6C 6C 65 74 00 # # Text: August # 41 6F A1 74 00 # # Text: September # 53 65 70 74 65 6D 62 72 65 00 # # Text: October # 4F 63 74 6F 62 72 65 00 # # Text: November # 4E 6F 76 65 6D 62 72 65 00 # # Text: December # 44 94 63 65 6D 62 72 65 00 # # Text: Day # 4A 6F 75 72 00 # # Text: Month # 4D 6F 69 73 00 # # Text: Year # 41 6E 6E 94 65 00 # # Text: Time # 48 65 75 72 65 00 # # Text: AM # 41 4D 00 # # Text: PM # 50 4D 00 # # Text: Set Date and Time # 20 20 44 61 74 65 20 26 20 68 65 75 72 65 00 # # Text: Is this correct? # 45 73 74 9D 63 65 20 63 6F 72 72 65 63 74 3F 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: # 00 # # Text: Service Menu # 20 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 20 20 00 # # Text: P # 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: S # 53 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service ID # 53 65 72 76 69 63 65 20 49 44 20 20 20 20 20 20 20 00 # # Text: Ver # 56 65 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 # # Text: Service Menu 2 # 20 53 65 72 76 69 63 65 20 4D 65 6E 75 20 32 20 20 00 # # Text: Reset Pictures # 52 65 73 65 74 20 50 69 63 74 75 72 65 73 20 20 20 00 # # Text: Reset Strobe Pict # 52 65 73 65 74 20 53 74 72 6F 62 65 20 50 69 63 74 00 # # Text: Reset Born OnDate # 52 65 73 65 74 20 42 6F 72 6E 20 4F 6E 44 61 74 65 00 # # Text: Reset FactoryDflt # 52 65 73 65 74 20 46 61 63 74 6F 72 79 44 66 6C 74 00 # # Text: Are You Sure? # 41 72 65 20 59 6F 75 20 53 75 72 65 3F 00 # # Text: Reset to 0 # 52 65 73 65 74 20 74 6F 20 30 00 # # Text: S . # 53 20 20 2E 20 20 00 # # Text: M . # 4D 20 20 2E 20 20 00 # # Text: Yes # 59 65 73 00 # # Text: No # 4E 6F 00 # # Text: # 00 # # Text: BornOnDate # 42 6F 72 6E 4F 6E 44 61 74 65 20 20 20 20 20 20 20 00 # # Text: FinalErrCode # 46 69 6E 61 6C 45 72 72 43 6F 64 65 20 20 20 20 20 00 # # Text: ResetFinalErrCode # 52 65 73 65 74 46 69 6E 61 6C 45 72 72 43 6F 64 65 00 libgphoto2-2.5.9/camlibs/konica/konica.h0000644000175000001440000002437012610415536015021 00000000000000/* konica.h * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __KONICA_H__ #define __KONICA_H__ #include #include /* * The following are the commands that are supported by the * camera. All other commands will be rejected as unsupported. * * 0x9200: On 'HP PhotoSmart C20', this command seems to * set the language by transferring huge amounts * of data. For 'Q-M100', this command is not * defined according to Konica. * 0x9e10: Used for development and testing of the camera. * 0x9e20: Used for development and testing of the camera. * * For those commands, no documentation is available. They are * therefore not implemented. */ typedef enum { K_ERASE_IMAGE = 0x8000, K_FORMAT_MEMORY_CARD = 0x8010, K_ERASE_ALL = 0x8020, K_SET_PROTECT_STATUS = 0x8030, K_GET_THUMBNAIL = 0x8800, K_GET_IMAGE_JPEG = 0x8810, K_GET_IMAGE_INFORMATION = 0x8820, K_GET_IMAGE_EXIF = 0x8830, K_GET_PREVIEW = 0x8840, K_GET_IO_CAPABILITY = 0x9000, K_GET_INFORMATION = 0x9010, K_GET_STATUS = 0x9020, K_GET_DATE_AND_TIME = 0x9030, K_GET_PREFERENCES = 0x9040, K_SET_IO_CAPABILITY = 0x9080, K_SET_DATE_AND_TIME = 0x90b0, K_SET_PREFERENCE = 0x90c0, K_RESET_PREFERENCES = 0x90c1, K_TAKE_PICTURE = 0x9100, K_PUT_LOCALIZATION_FILE = 0x9200, K_CANCEL = 0x9e00 /* ? = 0x9e10, */ /* ? = 0x9e20, */ } KCommand; /* * The following are the preferences that can be set. The * sixteen bits that identify the preference are as follows. * Low order byte: 0000 0aa0 * High order byte: 1x0b xxxx * x can be 1 or 0 with no effect on the command. The a and b * bits identify the preference and are as follows. * * b: 0 1 * aa: ---------------------------------------------------- * 00 | resolution flash * 01 | exposure focus / self timer * 10 | self timer time auto off time * 11 | slide show interval beep * * A short explanation of the values of the preferences: * * RESOLUTION (default: 2) * Only the low order byte is processed. * - 0: medium resolution (same as 2) * - 1: high resolution (1152 x 872) * - 2: medium resolution (1152 x 872) * - 3: low resolution ( 576 x 436) * Other values are accepted as well, produce however strange * results on the display, as the camera will calculate the * remaining pictures on the basis of this value. Those values * are at some point changed to 'normal' ones. * Each pixel has an area of 4.6um x 4.6 um. * * EXPOSURE (default: 0) * Only the low order byte is processed. * - 0 to 255. * The behaviour is somewhat strange. Sending a value will * not necessarily set the value to exactly the sent one. * The following table gives an overview. * sent received sent received * ---------------- ---------------- * 0 - 0 128 129 * 1 0 129 130 * 2 1 131 - 131 * 3 2 132 133 * 4 3 133 134 * 5 - 5 134 135 * 6 5 135 136 * 7 6 136 - 136 * 8 7 (...) * 9 8 246 - 246 * 10 - 10 247 248 * (...) 248 249 * 120 - 120 249 250 * 121 120 250 251 * 122 121 251 - 251 * 123 122 252 253 * 124 123 253 254 * 125 - 125 254 255 * 126 125 255 0 * 127 126 * * Additional information from HP: * - Range: EV 6 to EV 16 (ISO 100). * - Exposure times: 1/500th to 2 (sec) * * SELF_TIMER_TIME (default: 10) * - 3 to 40. Measured in seconds. * All other values are rejected. * * SLIDE_SHOW_INTERVAL (default: 3) * - 1 to 30. Measured in seconds. * All other values are rejected. * * FLASH (default: 2) * Only the low order byte is processed. * - 0: off * - 1: on * - 2: auto * - 5: on, redeye * - 6: auto, redeye * Other values are accepted as well, but will be changed to 2 * at some point. * * FOCUS_SELF_TIMER (default: 0) * Only the low order byte is processed. * - 0: fixed, next picture in normal mode * - 1: fixed, next picture in self timer mode * - 2: auto, next picture in normal mode * - 3: auto, next picture in self timer mode * After the next picture has been taken in self timer mode, * the value is automatically changed to the next lower even * value (normal mode). * * Additional information from HP: * - Fixed: 2.6 feet to infinity * - Auto: 8 inches to infinity * * AUTO_OFF_TIME (default: 5) * Only the low order byte is processed. * - 0: Will be changed by the camera to 255. * - 1 to 255. Measured in minutes. * * BEEP (default: 1) * Only the low order byte is processed. * - 0: off * - 1 to 255: on */ typedef enum { K_PREFERENCE_RESOLUTION = 0xc000, K_PREFERENCE_EXPOSURE = 0xc002, K_PREFERENCE_SELF_TIMER_TIME = 0xc004, K_PREFERENCE_SLIDE_SHOW_INTERVAL = 0xc006, K_PREFERENCE_FLASH = 0xd000, K_PREFERENCE_FOCUS_SELF_TIMER = 0xd002, K_PREFERENCE_AUTO_OFF_TIME = 0xd004, K_PREFERENCE_BEEP = 0xd006 } KPreference; typedef enum { K_POWER_LEVEL_LOW = 0x00, K_POWER_LEVEL_NORMAL = 0x01, K_POWER_LEVEL_HIGH = 0x02 } KPowerLevel; typedef enum { K_POWER_SOURCE_BATTERY = 0x00, K_POWER_SOURCE_AC = 0x01 } KPowerSource; typedef enum { K_THUMBNAIL = 0x00, K_IMAGE_JPEG = 0x10, K_IMAGE_EXIF = 0x30 } KImageType; typedef enum { K_DISPLAY_BUILT_IN = 0x00, K_DISPLAY_TV = 0x02 } KDisplay; typedef enum { K_CARD_STATUS_CARD = 0x07, K_CARD_STATUS_NO_CARD = 0x12 } KCardStatus; typedef enum { K_DATE_FORMAT_MONTH_DAY_YEAR = 0x00, K_DATE_FORMAT_DAY_MONTH_YEAR = 0x01, K_DATE_FORMAT_YEAR_MONTH_DAY = 0x02 } KDateFormat; typedef enum { K_TV_OUTPUT_FORMAT_NTSC = 0x00, K_TV_OUTPUT_FORMAT_PAL = 0x01, K_TV_OUTPUT_FORMAT_HIDE = 0x02 } KTVOutputFormat; /* * Two flavours of Konica's protocol exist: One uses two bytes * for image IDs (qm100, unsigned int), the other one uses four * (qm200, unsigned long). */ int k_init (GPPort *, GPContext *); int k_ping (GPPort *, GPContext *); typedef enum { K_BIT_RATE_300 = 1 << 0, K_BIT_RATE_600 = 1 << 1, K_BIT_RATE_1200 = 1 << 2, K_BIT_RATE_2400 = 1 << 3, K_BIT_RATE_4800 = 1 << 4, K_BIT_RATE_9600 = 1 << 5, K_BIT_RATE_19200 = 1 << 6, K_BIT_RATE_38400 = 1 << 7, K_BIT_RATE_57600 = 1 << 8, K_BIT_RATE_115200 = 1 << 9 } KBitRate; typedef enum { K_BIT_FLAG_8_BITS = 1 << 0, K_BIT_FLAG_STOP_2_BITS = 1 << 1, K_BIT_FLAG_PARITY_ON = 1 << 2, K_BIT_FLAG_PARITY_ODD = 1 << 3, K_BIT_FLAG_HW_FLOW_CTRL = 1 << 4 } KBitFlag; int k_get_io_capability (GPPort *, GPContext *, KBitRate *bit_rates, KBitFlag *bit_flags); int k_set_io_capability (GPPort *, GPContext *, KBitRate bit_rate, KBitFlag bit_flags); int k_erase_all (GPPort *device, GPContext *, unsigned int *number_of_images_not_erased); int k_format_memory_card (GPPort *, GPContext *); int k_take_picture ( GPPort *device, GPContext *, int image_id_long, unsigned long *image_id, unsigned int *exif_size, unsigned char **information_buffer, unsigned int *information_buffer_size, int *protected); int k_get_preview (GPPort *device, GPContext *, int thumbnail, unsigned char **image_buffer, unsigned int *image_buffer_size); int k_set_protect_status (GPPort *device, GPContext *, int image_id_long, unsigned long image_id, int protected); int k_erase_image (GPPort *device, GPContext *, int image_id_long, unsigned long image_id); int k_reset_preferences (GPPort *device, GPContext *); typedef struct { unsigned char year, month, day; unsigned char hour, minute, second; } KDate; int k_get_date_and_time (GPPort *device, GPContext *, KDate *date); int k_set_date_and_time (GPPort *device, GPContext *, KDate date); typedef struct { unsigned int shutoff_time; unsigned int self_timer_time; unsigned int beep; unsigned int slide_show_interval; } KPreferences; int k_get_preferences (GPPort *device, GPContext *, KPreferences *preferences); int k_set_preference (GPPort *device, GPContext *, KPreference preference, unsigned int value); typedef struct { KPowerLevel power_level; KPowerSource power_source; KCardStatus card_status; KDisplay display; unsigned int self_test_result; unsigned int card_size; unsigned int pictures, pictures_left; KDate date; unsigned int bit_rate; KBitFlag bit_flags; unsigned char flash, resolution, focus, exposure; unsigned char total_pictures, total_strobes; } KStatus; int k_get_status (GPPort *device, GPContext *, KStatus *status); typedef struct _KVersion KVersion; struct _KVersion { unsigned char major; unsigned char minor; }; typedef struct _KInformation KInformation; struct _KInformation { char model[5]; char serial_number[11]; KVersion hardware; KVersion software; KVersion testing; char name[23]; char manufacturer[31]; }; int k_get_information (GPPort *device, GPContext *, KInformation *info); int k_get_image_information ( GPPort *device, GPContext *, int image_id_long, unsigned long image_number, unsigned long *image_id, unsigned int *exif_size, int *protected, unsigned char **information_buffer, unsigned int *information_buffer_size); int k_get_image ( GPPort *device, GPContext *, int image_id_long, unsigned long image_id, KImageType image_type, unsigned char **image_buffer, unsigned int *image_buffer_size); /* Localization */ int k_localization_tv_output_format_set (GPPort *device, GPContext *, KTVOutputFormat tv_output_format); int k_localization_date_format_set (GPPort *device, GPContext *, KDateFormat date_format); int k_localization_data_put (GPPort *device, GPContext *, unsigned char *data, unsigned long data_size); int k_cancel (GPPort *device, GPContext *, KCommand *command); #endif /* __KONICA_H__ */ libgphoto2-2.5.9/camlibs/konica/qm150.c0000644000175000001440000011176412610415536014417 00000000000000/* qm150.c * * Copyright 2003 Marcus Meissner * Aurelien Croc (AP2C) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * Modified by Aurélien Croc (AP²C) * In particular : fix some bugs, and implementation of advanced * functions : delete some images, delete all images, capture new image, * update an image to the camera, get thumbnails, get information, get * summary, get configuration, get manual, get about, get EXIF informations * */ /* NOTES : * Becareful, image information number starts at 1 and finish at the * max image number. But when you want to work on the images, you must * read image informations, and check the real image number in the image * information header and use this number with all functions !! */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif /* Functions codes */ #define CAPTUREIMAGE_CMD2 0x30 #define SETSPEED 0x42 #define ERASEIMAGE_CMD1 0x45 #define IMAGE_CMD2 0x46 #define GETIMAGE_CMD1 0x47 #define GETIMAGEINFO 0x49 #define CAPTUREIMAGE_CMD1 0x52 #define GETCAMINFO 0x53 #define GETTHUMBNAIL_CMD1 0x54 #define UPLOADDATA 0x55 #define PING 0x58 /* Return codes */ #define ESC 0x1b #define ACK 0x06 #define NACK 0x15 #define NEXTFRAME 0x01 #define EOT 0x04 /* Data section pointers */ #define REC_MODE 0x01 #define IMAGE_PROTECTED 0x01 #define GP_MODULE "Konica" #define FILENAME "image%04d.jpg" #define IMAGE_WIDTH 1360 #define IMAGE_HEIGHT 1024 #define PREVIEW_WIDTH 160 #define PREVIEW_HEIGHT 120 #define FILENAME_LEN 1024+128 #define ACK_LEN 1 #define STATE_LEN 1 #define CSUM_LEN 1 #define INFO_BUFFER 256 #define DATA_BUFFER 512 /* Image information pointers */ #define PREVIEW_SIZE_PTR 0x4 #define IMAGE_SIZE_PTR 0x8 #define IMAGE_NUMBER 0xE #define IMAGE_PROTECTION_FLAG 0x11 /* Camera information pointers */ #define CAPACITY_PTR 0x3 #define POWER_STATE_PTR 0x7 #define AUTO_OFF_PTR 0x8 #define CAMERA_MODE_PTR 0xA #define LCD_STATE_PTR 0xB #define ICON_STATE_PTR 0xC #define FLASH_STATE_PTR 0xD #define TIMER_PTR 0xE #define RESOLUTION_PTR 0xF #define WHITE_BALANCE_PTR 0x10 #define EXPOSURE_TIME_PTR 0x11 #define TAKEN_IMAGE_PTR 0x12 #define FREE_IMAGE_PTR 0x14 #define SHARPNESS_PTR 0x16 #define COLOR_PTR 0x17 #define RED_EYE_STATE_PTR 0x18 #define FOCUS_PTR 0x19 #define MACRO_PTR 0x1A #define ZOOM_PTR 0x1B #define CAPTURE_TYPE_PTR 0x1E #define REC_DATE_DISP_PTR 0x1F #define PLAY_DATE_DISP_PTR 0x20 #define DATE_FORMAT_PTR 0x21 #define TIMESTAMP_PTR 0x22 /** Local functions **********************************************************/ /* * Check the integrity of datas */ static unsigned char k_calculate_checksum (unsigned char *buf, unsigned long int len) { int i; unsigned char result=0; for (i=0; i < len; i++) result += buf[i]; return result; } /* * Check the connection and the camera */ static int k_ping (GPPort *port) { char cmd[2], buf[1]; int ret; cmd[0] = ESC; cmd[1] = PING; ret = gp_port_write (port, cmd, 2); if (retport, (char*)cmd, sizeof(cmd)); if (retport, (char*)buf, INFO_BUFFER); if (ret */ /* There is no audio support with this camera */ info->audio.fields = GP_FILE_INFO_NONE; /* Preview informations */ info->preview.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_SIZE | GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT; strcpy (info->preview.type, GP_MIME_JPEG); info->preview.size = ((buf[PREVIEW_SIZE_PTR] << 24) | (buf[PREVIEW_SIZE_PTR+1] << 16) | (buf[PREVIEW_SIZE_PTR+2] << 8) | buf[PREVIEW_SIZE_PTR+3]); info->preview.width = PREVIEW_WIDTH; info->preview.height = PREVIEW_HEIGHT; /* Image information */ info->file.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_SIZE | GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT | GP_FILE_INFO_PERMISSIONS; strcpy (info->file.type, GP_MIME_JPEG); info->file.size = ((buf[IMAGE_SIZE_PTR] << 24) | (buf[IMAGE_SIZE_PTR+1] << 16) | (buf[IMAGE_SIZE_PTR+2] << 8) | buf[IMAGE_SIZE_PTR+3]); info->file.width = IMAGE_WIDTH; info->file.height = IMAGE_HEIGHT; if (buf[IMAGE_PROTECTION_FLAG] == IMAGE_PROTECTED) info->file.permissions = GP_FILE_PERM_READ; else info->file.permissions = GP_FILE_PERM_ALL; return (GP_OK); } /* * Get data from the camera * type = GP_FILE_TYPE_NORMAL, GP_FILE_TYPE_PREVIEW or GP_FILE_TYPE_EXIF */ static int k_getdata (int image_no, int type, unsigned int len, void *data, unsigned char *d, GPContext *context) { Camera *camera = data; unsigned char ack,state, cmd[7], buf[DATA_BUFFER], *buffer=d; unsigned int id=0, bytes_read=0, i; int ret; cmd[0] = ESC; cmd[1] = GETIMAGE_CMD1; if (type != GP_FILE_TYPE_NORMAL) cmd[1] = GETTHUMBNAIL_CMD1; cmd[2] = IMAGE_CMD2; cmd[3] = 0x30 + ((image_no/1000)%10); cmd[4] = 0x30 + ((image_no/100 )%10); cmd[5] = 0x30 + ((image_no/10 )%10); cmd[6] = 0x30 + ( image_no %10); ret = gp_port_write (camera->port, (char*)cmd, sizeof(cmd)); if (retport, (char*)&ack, ACK_LEN); if (ret < GP_OK) return ret; if (ack == NACK) { gp_context_error(context, _("This preview doesn't exist.")); return (GP_ERROR); } /* Download the required image */ if (type == GP_FILE_TYPE_NORMAL) id = gp_context_progress_start (context, len, _("Downloading image...")); for (i=0; i <= (len+DATA_BUFFER-1)/DATA_BUFFER ; i++) { unsigned char csum; int xret; xret = gp_port_read (camera->port, (char*)buf, DATA_BUFFER); if (xret < GP_OK) { if (type == GP_FILE_TYPE_NORMAL) gp_context_progress_stop (context, id); return xret; } ret = gp_port_read (camera->port, (char*)&csum, CSUM_LEN); if (ret < GP_OK) { if (type == GP_FILE_TYPE_NORMAL) gp_context_progress_stop (context, id); return ret; } if ((k_calculate_checksum(buf, DATA_BUFFER)) != csum) { if (type == GP_FILE_TYPE_NORMAL) gp_context_progress_stop (context, id); /* acknowledge the packet */ ack = NACK; ret = gp_port_write (camera->port, (char*)&ack, ACK_LEN); if (ret < GP_OK) return ret; gp_context_error(context, _("Data has been corrupted.")); return (GP_ERROR_CORRUPTED_DATA); } if ((len - bytes_read) > DATA_BUFFER) { memcpy((char *)buffer, buf, xret); buffer += DATA_BUFFER; } else { memcpy((char *)buffer, buf, (len - bytes_read)); buffer += len - bytes_read; } /* acknowledge the packet */ ack = ACK; ret = gp_port_write (camera->port, (char*)&ack, ACK_LEN); if (ret < GP_OK) { if (type == GP_FILE_TYPE_NORMAL) gp_context_progress_stop (context, id); return ret; } ret = gp_port_read (camera->port, (char*)&state, STATE_LEN); if (ret < GP_OK) { if (type == GP_FILE_TYPE_NORMAL) gp_context_progress_stop (context, id); return ret; } if (state == EOT) break; bytes_read += DATA_BUFFER; if (type == GP_FILE_TYPE_NORMAL) gp_context_progress_update (context, id, bytes_read); } /* acknowledge the packet */ ack = ACK; ret = gp_port_write (camera->port, (char*)&ack, ACK_LEN); if (ret < GP_OK) { if (type == GP_FILE_TYPE_NORMAL) gp_context_progress_stop (context, id); return ret; } if (type == GP_FILE_TYPE_NORMAL) gp_context_progress_stop (context, id); return (GP_OK); } /** Get and delete files *****************************************************/ /* * Get images, thumbnails or EXIF datas */ static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { unsigned char *d,*thumbnail; int image_number, image_no, len, ret; long long_len; CameraFileInfo file_info; exifparser exifdat; GP_DEBUG ("*** ENTER: get_file_func ***"); image_no = gp_filesystem_number(fs, folder, filename, context); if (image_no < 0) return image_no; /* Search the image informations */ image_no++; ret = k_info_img (image_no, data, (CameraFileInfo *)&file_info, &image_number); image_no = image_number; if (ret < GP_OK) return ret; switch (type) { case GP_FILE_TYPE_NORMAL: len = file_info.file.size; if (!(d = (unsigned char *)malloc(len))) return (GP_ERROR_NO_MEMORY); ret = k_getdata(image_no, GP_FILE_TYPE_NORMAL,len, data, d, context); if (ret < GP_OK) { free(d); return ret; } break; case GP_FILE_TYPE_PREVIEW: len = file_info.preview.size; long_len = (long)len; if (!(d = (unsigned char *)malloc(len))) return (GP_ERROR_NO_MEMORY); ret = k_getdata(image_no, GP_FILE_TYPE_PREVIEW, len, data, d, context); if (ret < GP_OK) { free(d); return ret; } exifdat.header = d; exifdat.data = d+12; thumbnail = gpi_exif_get_thumbnail_and_size(&exifdat, &long_len); free(d); d = thumbnail; break; case GP_FILE_TYPE_EXIF: len = file_info.preview.size; if (!(d = (unsigned char *)malloc(len))) return (GP_ERROR_NO_MEMORY); ret = k_getdata(image_no, GP_FILE_TYPE_EXIF, len, data, d, context); if (ret < GP_OK) { free(d); return ret; } break; default: gp_context_error(context, _("Image type %d is not supported by this camera !"), type); return (GP_ERROR_NOT_SUPPORTED); } gp_file_set_mime_type (file, GP_MIME_JPEG); ret = gp_file_append(file, (char*)d, len); free(d); return (ret); } /* * Delete one image * The image mustn't be protected */ static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; CameraFileInfo file_info; unsigned char cmd[7], ack; int image_no; int ret; GP_DEBUG ("*** ENTER: delete_file_func ***"); image_no = gp_filesystem_number(fs, folder, filename, context); if (image_no < 0) return image_no; image_no++; ret = k_info_img (image_no, data, (CameraFileInfo *)&file_info, &image_no); if (ret < GP_OK) return ret; /* Now, check if the image isn't protected */ if (file_info.file.permissions == GP_FILE_PERM_READ) { gp_context_error(context, _("Image %s is delete protected."), filename); return (GP_ERROR); } /* Erase the image */ cmd[0] = ESC; cmd[1] = ERASEIMAGE_CMD1; cmd[2] = IMAGE_CMD2; cmd[3] = 0x30 + ((image_no/1000)%10); cmd[4] = 0x30 + ((image_no/100 )%10); cmd[5] = 0x30 + ((image_no/10 )%10); cmd[6] = 0x30 + ( image_no %10); ret = gp_port_write (camera->port, (char*)cmd, sizeof(cmd)); if (retport, (char*)&ack, ACK_LEN); if (retport, (char*)cmd, sizeof(cmd)); if (retport, (char*)&ack, ACK_LEN); if (retport, (char*)cmd, sizeof(cmd)); if (retport, (char*)&ack, ACK_LEN); if (retport, (char*)&state, STATE_LEN); if (retport, (char*)&d[i*DATA_BUFFER], (len - len_sent)); if (retport, (char*)buf, (DATA_BUFFER - (len - len_sent))); if (retport, &d[i*DATA_BUFFER], DATA_BUFFER); if (retport, (char*)&sum, CSUM_LEN); if (retport, (char*)&state, STATE_LEN); if (retport, (char*)&ack, ACK_LEN); if (retport, (char*)cmd, 2); if (retport, (char*)buf, INFO_BUFFER); nbr_images = (buf[FREE_IMAGE_PTR] << 8) | (buf[FREE_IMAGE_PTR+1]); images_taken = (buf[TAKEN_IMAGE_PTR] << 8) | (buf[TAKEN_IMAGE_PTR+1]); /* Capture the image */ cmd[0] = ESC; cmd[1] = CAPTUREIMAGE_CMD1; cmd[2] = CAPTUREIMAGE_CMD2; ret = gp_port_write (camera->port, (char*)cmd, sizeof(cmd)); if (retport, (char*)&ack, ACK_LEN); if (retport)) == GP_OK) break; } if (ret < GP_OK) { gp_context_error(context, _("No answer from the camera.")); return (GP_ERROR); } /* Now register new image */ images_taken++; sprintf (path->name, FILENAME, (unsigned int) images_taken); return (GP_OK); } /* * Get informations about an image */ static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { int image_no; GP_DEBUG ("*** ENTER: get_info_func ***"); image_no = gp_filesystem_number(fs, folder, filename, context); if (image_no < 0) return image_no; image_no++; return (k_info_img(image_no, data, info, NULL)); } /** Driver base functions ****************************************************/ /* * Create the image list */ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; unsigned char cmd[2], buf[INFO_BUFFER]; int num, ret; GP_DEBUG ("*** ENTER: file_list_func ***"); cmd[0] = ESC; cmd[1] = GETCAMINFO; ret = gp_port_write (camera->port, (char*)cmd, sizeof(cmd)); if (retport, (char*)buf, INFO_BUFFER); if (retport, (char*)cmd, sizeof(cmd)); if (retport, (char*)buf, INFO_BUFFER); if (retport, (char*)cmd, sizeof(cmd)); if (retport, (char*)buf, INFO_BUFFER); if (rettext, sizeof(text->text), _("Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n"), "Konica Q-M150",capacity, power,autopoweroff,mode, image_taken,image_remained, date_disp,date); return (GP_OK); } /** Camera's driver informations *********************************************/ /* * Say somethings about driver's authors */ static int camera_about (Camera* camera, CameraText* about, GPContext *context) { snprintf(about->text,sizeof(about->text),_("Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150.")); return(GP_OK); } /* * just say some things about this driver */ static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { snprintf(manual->text,sizeof(manual->text), _("About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n\n" "If you have some issues with this driver, please e-mail its authors.\n" )); return (GP_OK); } /* * Camera's identification */ int camera_id (CameraText *id) { strcpy(id->text, "konica qm150"); return (GP_OK); } /* * List all camera's abilities */ int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); strcpy(a.model, "Konica:Q-M150"); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_SERIAL; a.speed[0] = 115200; a.speed[1] = 0; a.operations = GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CAPTURE_PREVIEW | GP_OPERATION_CONFIG; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_EXIF | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL | GP_FOLDER_OPERATION_PUT_FILE; gp_abilities_list_append(list, a); return (GP_OK); } /** Camera's initialization **************************************************/ /* * Initialization of the camera */ static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .put_file_func = put_file_func, .del_file_func = delete_file_func, .delete_all_func = delete_all_func, }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; int speeds[] = { 115200, 9600, 19200, 38400, 57600, 115200 }; int ret, i; char cmd[3], buf[1]; /* First, set up all the function pointers. */ camera->functions->capture = camera_capture; camera->functions->about = camera_about; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; /* Now, tell the filesystem where to get lists, files and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* * The port is already provided with camera->port (and * already open). You just have to use functions like * gp_port_timeout_set, gp_port_settings_get, gp_port_settings_set. */ gp_port_get_settings (camera->port, &settings); settings.serial.speed = 115200; settings.serial.bits = 8; settings.serial.stopbits= 1; settings.serial.parity = 0; gp_port_set_settings (camera->port, settings); /* * Once you have configured the port, you should check if a * connection to the camera can be established. */ for (i=0;iport, &settings); settings.serial.speed = speeds[i]; gp_port_set_settings (camera->port, settings); if (GP_OK<=k_ping (camera->port)) break; } if (i == sizeof(speeds)/sizeof(speeds[0])) return GP_ERROR; cmd[0] = ESC; cmd[1] = SETSPEED; cmd[2] = 0x30 + 4; /* speed nr 4:(9600, 19200, 38400, 57600, 115200) */ ret = gp_port_write (camera->port, cmd, 3); if (retport, buf, 1); if (retport, &settings); settings.serial.speed = 115200; gp_port_set_settings (camera->port, settings); return GP_OK; } libgphoto2-2.5.9/camlibs/konica/lowlevel.h0000644000175000001440000000364212610415536015405 00000000000000/* lowlevel.h * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __KONICA_LOWLEVEL_H__ #define __KONICA_LOWLEVEL_H__ #include #include int l_ping (GPPort *, GPContext *); int l_init (GPPort *, GPContext *); /* * Some comments on the structure of send_buffer, image_buffer, * and receive_buffer: * * send_buffer: The first two bytes are low order and high * byte of the command, followed by at least two * more bytes. The number of sent bytes has to be * even. * * image_buffer: This buffer will contain raw data like * jpeg or exif data. * * receive_buffer: The first two bytes will be the same as * in send_buffer. This will be checked * here. Then will follow low and high * order byte of the return status. After * that, depending on command and return * status, other bytes will follow. */ int l_send_receive (GPPort *, GPContext *, unsigned char *send_buffer, unsigned int send_buffer_size, unsigned char **receive_buffer, unsigned int *receive_buffer_size, unsigned int timeout, unsigned char **image_buffer, unsigned int *image_buffer_size); #endif /* __KONICA_LOWLEVEL_H__ */ libgphoto2-2.5.9/camlibs/konica/Makefile-files0000644000175000001440000000152112561423351016134 00000000000000EXTRA_DIST += konica/EXPERTS konica/qm150.txt konica/README.konica konica/ChangeLog konica/COPYING konica/TODO camlibdoc_DATA += konica/README.konica konica_defs = \ -DLOCALIZATION=\"$(datadir)/$(PACKAGE)/$(VERSION)/konica\" EXTRA_LTLIBRARIES += konica.la konica_la_SOURCES = \ konica/lowlevel.c konica/lowlevel.h \ konica/konica.c konica/konica.h \ konica/library.c konica_la_CPPFLAGS = $(AM_CPPFLAGS) $(konica_defs) $(CPPFLAGS) konica_la_LDFLAGS = $(camlib_ldflags) konica_la_DEPENDENCIES = $(camlib_dependencies) konica_la_LIBADD = $(camlib_libadd) EXTRA_LTLIBRARIES += konica_qm150.la konica_qm150_la_SOURCES = konica/qm150.c konica_qm150_la_CPPFLAGS = $(AM_CPPFLAGS) $(konica_defs) $(CPPFLAGS) konica_qm150_la_LDFLAGS = $(camlib_ldflags) konica_qm150_la_DEPENDENCIES = $(camlib_dependencies) konica_qm150_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/konica/TODO0000644000175000001440000000174612557123324014077 00000000000000 Multithreading -------------- The commands can overlap. However, we don't do that right now, although it would be interesting to test it. Actually, we need a thread that constantly watches the serial port. The camera for example sends packets up to three times when we do nothing but listen to the port (and not acknowledging that we received something). We need a thread that reacts to such packets. Commands -------- * get_information: You can add additional bytes. For what? They don't have any effect and don't return error "illegal parameter". * get_status: You can add additional bytes. For what? If non-zero, all status information is set to zero. * see konica.h for two undocumented commands. * Localization: I added some preliminary code and files. It has not been tested yet. Features -------- How to set - small photos - TSC / PAL - Screen Brightness - Zoom Just in case... --------------- What's the operating system of the camera? It would be neat to port Tetris to it... libgphoto2-2.5.9/camlibs/konica/COPYING0000644000175000001440000004310212557123324014432 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright © 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright © This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright © year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. libgphoto2-2.5.9/camlibs/konica/konica.c0000644000175000001440000015303612610415536015016 00000000000000/* konica.c * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include "konica.h" #include #include #include #include #include #include "lowlevel.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "konica" #define CHECK_NULL(r) {if (!(r)) return (GP_ERROR_BAD_PARAMETERS);} static int k_check (GPContext *c, const unsigned char *rb) { switch ((rb[3] << 8) | rb[2]) { case 0x0000: return (GP_OK); case 0x0101: gp_context_error (c, _("Focusing error.")); return (GP_ERROR); case 0x0102: gp_context_error (c, _("Iris error.")); return (GP_ERROR); case 0x0201: gp_context_error (c, _("Strobe error.")); return (GP_ERROR); case 0x0203: gp_context_error (c, _("EEPROM checksum error.")); return (GP_ERROR); case 0x0205: gp_context_error (c, _("Internal error (1).")); return (GP_ERROR); case 0x0206: gp_context_error (c, _("Internal error (2).")); return (GP_ERROR); case 0x0301: gp_context_error (c, _("No card present.")); return (GP_ERROR); case 0x0311: gp_context_error (c, _("Card not supported.")); return (GP_ERROR); case 0x0321: gp_context_error (c, _("Card removed during access.")); return (GP_ERROR); case 0x0340: gp_context_error (c, _("Image number not valid.")); return (GP_ERROR); case 0x0341: gp_context_error (c, _("Card can not be written.")); return (GP_ERROR); case 0x0381: gp_context_error (c, _("Card is write protected.")); return (GP_ERROR); case 0x0382: gp_context_error (c, _("No space left on card.")); return (GP_ERROR); case 0x0390: gp_context_error (c, _("Image protected.")); return (GP_ERROR); case 0x0401: gp_context_error (c, _("Light too dark.")); return (GP_ERROR); case 0x0402: gp_context_error (c, _("Autofocus error.")); return (GP_ERROR); case 0x0501: gp_context_error (c, _("System error.")); return (GP_ERROR); case 0x0800: gp_context_error (c, _("Illegal parameter.")); return (GP_ERROR); case 0x0801: gp_context_error (c, _("Command can not be cancelled.")); return (GP_ERROR); case 0x0b00: gp_context_error (c, _("Localization data too long.")); return (GP_ERROR); case 0x0bff: gp_context_error (c, _("Localization data corrupt.")); return (GP_ERROR); case 0x0c01: gp_context_error (c, _("Unsupported command.")); return (GP_ERROR); case 0x0c02: gp_context_error (c, _("Other command executing.")); return (GP_ERROR); case 0x0c03: gp_context_error (c, _("Command order error.")); return (GP_ERROR); case 0x0ffff: gp_context_error (c, _("Unknown error.")); return (GP_ERROR); default: gp_context_error (c, _("The camera has just sent an " "error that has not yet been discovered. Please " "report the following to %s " "with additional information how you got this error: " "(0x%x,0x%x). Thank you very much!"), MAIL_GPHOTO_DEVEL, rb[2], rb[3]); return (GP_ERROR); } } #define CRF(c,result,rb) \ { \ int r = (result); \ if (r < 0) { \ free (rb); \ return r; \ } \ r = k_check ((c), rb); \ if (r < 0) { \ free (rb); \ return r; \ } \ } int k_ping (GPPort *p, GPContext *c) { return (l_ping (p, c)); } int k_init (GPPort *p, GPContext *c) { return (l_init (p, c)); } int k_erase_image (GPPort *p, GPContext *c, int image_id_long, unsigned long image_id) { /************************************************/ /* Command to erase one image. */ /* */ /* 0x00: Byte 0 of command identifier */ /* 0x80: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0xXX: Byte 0 of p ID */ /* 0x02: Flash memory card */ /* 0xXX: Byte 1 of p ID */ /* 0x00: Flash memory card */ /* 0xXX: Byte 3 of image ID (QM200 only) */ /* 0xXX: Byte 4 of image ID (QM200 only) */ /* 0xXX: Byte 0 of image ID */ /* 0xXX: Byte 1 of image ID */ /* */ /* Return values: */ /* 0x00: Byte 0 of command identifier */ /* 0x80: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /************************************************/ unsigned char sb[] = {0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; if (!image_id_long) { sb[6] = image_id; sb[7] = image_id >> 8; CRF (c, l_send_receive (p, c, sb, 8, &rb, &rbs, 0, NULL, NULL), rb); } else { sb[6] = image_id >> 16; sb[7] = image_id >> 24; sb[8] = image_id; sb[9] = image_id >> 8; CRF (c, l_send_receive (p, c, sb, 10, &rb, &rbs, 0, NULL, NULL), rb); } free (rb); return (GP_OK); } int k_format_memory_card (GPPort *p, GPContext *c) { /************************************************/ /* Command to format the memory card. */ /* */ /* 0x10: Byte 0 of command identifier */ /* 0x80: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0xXX: Byte 0 of p ID */ /* 0x02: Flash memory card */ /* 0xXX: Byte 1 of p ID */ /* 0x00: Flash memory card */ /* */ /* Return values: */ /* 0x10: Byte 0 of command identifier */ /* 0x80: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /************************************************/ unsigned char sb[] = {0x10, 0x80, 0x00, 0x00, 0x02, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CRF (c, l_send_receive (p, c, sb, 6, &rb, &rbs, 0, NULL, NULL), rb); free (rb); return (GP_OK); } int k_erase_all (GPPort *p, GPContext *c, unsigned int *number_of_images_not_erased) { /************************************************/ /* Command to erase all images in the camera, */ /* except the protected ones. */ /* */ /* 0x20: Byte 0 of command identifier */ /* 0x80: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0xXX: Byte 0 of p ID */ /* 0x02: Flash memory card */ /* 0xXX: Byte 1 of p ID */ /* 0x00: Flash memory card */ /* */ /* Return values: */ /* 0x20: Byte 0 of command identifier */ /* 0x80: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /* Following bytes only in case of success. */ /* 0xXX: Byte 0 of number of images not erased */ /* 0xXX: Byte 1 of number of images not erased */ /************************************************/ unsigned char sb[] = {0x20, 0x80, 0x00, 0x00, 0x02, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CHECK_NULL (number_of_images_not_erased); CRF (c, l_send_receive (p, c, sb, 6, &rb, &rbs, 0, NULL, NULL), rb); *number_of_images_not_erased = (rb[5] << 8) | rb[4]; free (rb); return (GP_OK); } int k_set_protect_status (GPPort *p, GPContext *c, int image_id_long, unsigned long image_id, int protected) { /************************************************/ /* Command to set the protect status of one */ /* image. */ /* */ /* 0x30: Byte 0 of command identifier */ /* 0x80: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0xXX: Byte 0 of p ID */ /* 0x02: Flash memory card */ /* 0xXX: Byte 1 of p ID */ /* 0x00: Flash memory card */ /* 0xXX: Byte 3 of image ID (QM200 only) */ /* 0xXX: Byte 4 of image ID (QM200 only) */ /* 0xXX: Byte 0 of image ID */ /* 0xXX: Byte 1 of image ID */ /* 0xXX: Byte 0 of protect status */ /* 0x00: not protected */ /* 0x01: protected */ /* 0x00: Byte 1 of protect status */ /* */ /* Return values: */ /* 0x30: Byte 0 of command identifier */ /* 0x80: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /************************************************/ unsigned char sb[] = {0x30, 0x80, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; if (!image_id_long) { if (protected) sb[8] = 0x01; sb[6] = image_id; sb[7] = image_id >> 8; CRF (c, l_send_receive (p, c, sb, 10, &rb, &rbs, 0, NULL, NULL), rb); } else { if (protected) sb[10] = 0x01; sb[6] = image_id >> 16; sb[7] = image_id >> 24; sb[8] = image_id; sb[9] = image_id >> 8; CRF (c, l_send_receive (p, c, sb, 12, &rb, &rbs, 0, NULL, NULL), rb); } free (rb); return (GP_OK); } int k_get_image ( GPPort *p, GPContext *c, int image_id_long, unsigned long image_id, KImageType image_type, unsigned char **ib, unsigned int *ibs) { /************************************************/ /* Commands to get an image from the camera. */ /* */ /* 0xXX: Byte 0 of command identifier */ /* 0x00: get thumbnail */ /* 0x10: get image (jpeg) */ /* 0x30: get image (exif) */ /* 0x88: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0xXX: Byte 0 of p ID */ /* 0x02: Flash memory card */ /* 0xXX: Byte 1 of p ID */ /* 0x00: Flash memory card */ /* 0xXX: Byte 3 of image ID (QM200 only) */ /* 0xXX: Byte 4 of image ID (QM200 only) */ /* 0xXX: Byte 0 of image ID */ /* 0xXX: Byte 1 of image ID */ /* */ /* The data will be received first, followed by */ /* the return values. */ /* */ /* Return values: */ /* 0xXX: Byte 0 of command identifier */ /* 0x00: get thumbnail */ /* 0x10: get image (jpeg) */ /* 0x30: get image (exif) */ /* 0x88: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /************************************************/ unsigned char sb[10]; unsigned char *rb = NULL; unsigned int rbs; CHECK_NULL (ib && ibs); sb[0] = image_type; sb[1] = 0x88; sb[2] = 0x00; /* reserved */ sb[3] = 0x00; /* reserved */ sb[4] = 0x02; sb[5] = 0x00; if (!image_id_long) { sb[6] = image_id; sb[7] = image_id >> 8; CRF (c, l_send_receive (p, c, sb, 8, &rb, &rbs, 5000, ib, ibs), rb); } else { sb[6] = image_id >> 16; sb[7] = image_id >> 24; sb[8] = image_id; sb[9] = image_id >> 8; CRF (c, l_send_receive (p, c, sb, 10, &rb, &rbs, 5000, ib, ibs), rb); } free (rb); return (GP_OK); } int k_get_image_information ( GPPort *p, GPContext *c, int image_id_long, unsigned long image_number, unsigned long *image_id, unsigned int *exif_size, int *protected, unsigned char **ib, unsigned int *ibs) { /************************************************/ /* Command to get the information about an */ /* image from the camera. */ /* */ /* 0x20: Byte 0 of command identifier */ /* 0x88: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0xXX: Byte 0 of p ID */ /* 0x02: Flash memory card */ /* 0xXX: Byte 1 of p ID */ /* 0x00: Flash memory card */ /* 0xXX: Byte 3 of image number (QM200 only) */ /* 0xXX: Byte 4 of image number (QM200 only) */ /* 0xXX: Byte 0 of image number */ /* 0xXX: Byte 1 of image number */ /* */ /* The data will be received first, followed by */ /* the return values. */ /* */ /* Return values: */ /* 0x20: Byte 0 of command identifier */ /* 0x88: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /* Following bytes only in case of success. */ /* 0xXX: Byte 3 of image ID (QM200 only) */ /* 0xXX: Byte 4 of image ID (QM200 only) */ /* 0xXX: Byte 0 of image ID */ /* 0xXX: Byte 1 of image ID */ /* 0xXX: Byte 0 of exif size */ /* 0xXX: Byte 1 of exif size */ /* 0xXX: Byte 0 of protect status */ /* 0x00: not protected */ /* 0x01: protected */ /* 0x00: Byte 1 of protect status */ /************************************************/ unsigned char sb[] = {0x20, 0x88, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CHECK_NULL (image_id && exif_size && protected && ib && ibs); if (!image_id_long) { sb[6] = image_number; sb[7] = image_number >> 8; CRF (c, l_send_receive (p, c, sb, 8, &rb, &rbs, 2000, ib, ibs), rb); *image_id = (unsigned long) ((rb[5] << 8) | rb[4]); *exif_size = (rb[7] << 8) | rb[6]; *protected = (rb[8] != 0x00); } else { sb[6] = image_number >> 16; sb[7] = image_number >> 24; sb[8] = image_number; sb[9] = image_number >> 8; CRF (c, l_send_receive (p, c, sb, 10, &rb, &rbs, 2000, ib, ibs), rb); *image_id = (rb[5] << 24) | (rb[4] << 16) | (rb[7] << 8 ) | rb[6]; *exif_size = (rb[9] << 8) | rb[8]; *protected = (rb[10] != 0x00); } free (rb); return (GP_OK); } int k_get_preview (GPPort *p, GPContext *c, int thumbnail, unsigned char **ib, unsigned int *ibs) { /************************************************/ /* Command to get the preview from the camera. */ /* */ /* 0x40: Byte 0 of command identifier */ /* 0x88: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0xXX: Byte 0 of preview mode */ /* 0x00: no thumbnail */ /* 0x01: thumbnail */ /* 0x00: Byte 1 of preview mode */ /* */ /* The data will be received first, followed by */ /* the return values. */ /* */ /* Return values: */ /* 0x40: Byte 0 of command identifier */ /* 0x88: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /************************************************/ unsigned char sb[] = {0x40, 0x88, 0x00, 0x00, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CHECK_NULL (ib && ibs); if (thumbnail) sb[4] = 0x01; CRF (c, l_send_receive (p, c, sb, 6, &rb, &rbs, 5000, ib, ibs), rb); free (rb); return (GP_OK); } int k_get_io_capability (GPPort *p, GPContext *c, KBitRate *bit_rates, KBitFlag *bit_flags) { /************************************************/ /* Command to get the IO capability from the */ /* camera. */ /* */ /* 0x00: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* */ /* Return values: */ /* 0x40: Byte 0 of command identifier */ /* 0x88: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /* Following bytes only in case of success. */ /* 0xXX: Byte 0 of supported bit rates */ /* 0xXX: Byte 1 of supported bit rates */ /* 0xXX: Byte 0 of supported flags */ /* 0xXX: Byte 1 of supported flags */ /************************************************/ unsigned char sb[] = {0x00, 0x90, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CHECK_NULL (bit_rates && bit_flags); GP_DEBUG ("Getting IO capabilities..."); CRF (c, l_send_receive (p, c, sb, 4, &rb, &rbs, 0, NULL, NULL), rb); GP_DEBUG ("Got IO capabilities: bit rates 0x%x 0x%x, bit flags " "0x%x 0x%x.", rb[5], rb[4], rb[7], rb[6]); *bit_rates = (rb[5] << 8) | rb[4]; *bit_flags = (rb[7] << 8) | rb[6]; free (rb); return (GP_OK); } int k_get_information (GPPort *p, GPContext *c, KInformation *info) { /************************************************/ /* Command to get some information about the */ /* camera. */ /* */ /* 0x10: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* (...) */ /* */ /* You can add pairs of additional bytes with */ /* no effect on the command. */ /* */ /* Return values: */ /* 0x10: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /* Following bytes only in case of success. */ /* 0xXX: Reserved */ /* 0xXX: Reserved */ /* 0xXX: Reserved */ /* 0xXX: Reserved */ /* 0xXX: Byte 0 of model */ /* 0xXX: Byte 1 of model */ /* 0xXX: Byte 2 of model */ /* 0xXX: Byte 3 of model */ /* 0xXX: Byte 0 of serial number */ /* 0xXX: Byte 1 of serial number */ /* 0xXX: Byte 2 serial number */ /* 0xXX: Byte 3 serial number */ /* 0xXX: Byte 4 serial number */ /* 0xXX: Byte 5 serial number */ /* 0xXX: Byte 6 serial number */ /* 0xXX: Byte 7 serial number */ /* 0xXX: Byte 8 serial number */ /* 0xXX: Byte 9 serial number */ /* 0xXX: Hardware version (major) */ /* 0xXX: Hardware version (minor) */ /* 0xXX: Software version (major) */ /* 0xXX: Software version (minor) */ /* 0xXX: Testing software version (major) */ /* 0xXX: Testing software version (minor) */ /* 0xXX: Byte 0 of name */ /* 0xXX: Byte 1 of name */ /* 0xXX: Byte 2 of name */ /* 0xXX: Byte 3 of name */ /* 0xXX: Byte 4 of name */ /* 0xXX: Byte 5 of name */ /* 0xXX: Byte 6 of name */ /* 0xXX: Byte 7 of name */ /* 0xXX: Byte 8 of name */ /* 0xXX: Byte 9 of name */ /* 0xXX: Byte 10 of name */ /* 0xXX: Byte 11 of name */ /* 0xXX: Byte 12 of name */ /* 0xXX: Byte 13 of name */ /* 0xXX: Byte 14 of name */ /* 0xXX: Byte 15 of name */ /* 0xXX: Byte 16 of name */ /* 0xXX: Byte 17 of name */ /* 0xXX: Byte 18 of name */ /* 0xXX: Byte 19 of name */ /* 0xXX: Byte 20 of name */ /* 0xXX: Byte 21 of name */ /* 0xXX: Byte 0 of manufacturer */ /* 0xXX: Byte 1 of manufacturer */ /* 0xXX: Byte 2 of manufacturer */ /* 0xXX: Byte 3 of manufacturer */ /* 0xXX: Byte 4 of manufacturer */ /* 0xXX: Byte 5 of manufacturer */ /* 0xXX: Byte 6 of manufacturer */ /* 0xXX: Byte 7 of manufacturer */ /* 0xXX: Byte 8 of manufacturer */ /* 0xXX: Byte 9 of manufacturer */ /* 0xXX: Byte 10 of manufacturer */ /* 0xXX: Byte 11 of manufacturer */ /* 0xXX: Byte 12 of manufacturer */ /* 0xXX: Byte 13 of manufacturer */ /* 0xXX: Byte 14 of manufacturer */ /* 0xXX: Byte 15 of manufacturer */ /* 0xXX: Byte 16 of manufacturer */ /* 0xXX: Byte 17 of manufacturer */ /* 0xXX: Byte 18 of manufacturer */ /* 0xXX: Byte 19 of manufacturer */ /* 0xXX: Byte 20 of manufacturer */ /* 0xXX: Byte 21 of manufacturer */ /* 0xXX: Byte 22 of manufacturer */ /* 0xXX: Byte 23 of manufacturer */ /* 0xXX: Byte 24 of manufacturer */ /* 0xXX: Byte 25 of manufacturer */ /* 0xXX: Byte 26 of manufacturer */ /* 0xXX: Byte 27 of manufacturer */ /* 0xXX: Byte 28 of manufacturer */ /* 0xXX: Byte 29 of manufacturer */ /************************************************/ unsigned char sb[] = {0x10, 0x90, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CHECK_NULL (info); CRF (c, l_send_receive (p, c, sb, 4, &rb, &rbs, 0, NULL, NULL), rb); memset (info, 0, sizeof (KInformation)); strncpy (info->model, (char *)&rb[ 8], 4); strncpy (info->serial_number, (char *)&rb[12], 10); info->hardware.major = rb[22]; info->hardware.minor = rb[23]; info->software.major = rb[24]; info->software.minor = rb[25]; info->testing.major = rb[26]; info->testing.minor = rb[27]; strncpy (info->name, (char *)&rb[28], 22); strncpy (info->manufacturer, (char *)&rb[50], 30); free (rb); return (GP_OK); } int k_get_status (GPPort *p, GPContext *c, KStatus *status) { /************************************************/ /* Command to get the status of the camera. */ /* */ /* 0x20: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* (...) */ /* */ /* You can add pairs of additional bytes. If */ /* those are all 0x00, then nothing will */ /* change. If at least one deviates, all */ /* individual pieces of the status information */ /* will be returned as being zero. */ /* */ /* Return values: */ /* 0x20: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /* Following bytes only in case of success. */ /* 0xXX: Result of self test */ /* 0x00: Self test passed */ /* other: Self test failed */ /* 0xXX: Power level */ /* 0x00: Low */ /* 0x01: Normal */ /* 0x02: High */ /* 0xXX: Power source */ /* 0x00: Battery */ /* 0x01: AC */ /* 0xXX: Card status */ /* 0x07: Card */ /* 0x12: No card */ /* 0xXX: Display */ /* 0x00: built in */ /* 0x02: TV */ /* 0xXX: Byte 0 of card size */ /* 0xXX: Byte 1 of card size */ /* 0xXX: Byte 0 of pictures in camera */ /* 0xXX: Byte 1 of left pictures in camera */ /* 0xXX: Year */ /* 0xXX: Month */ /* 0xXX: Day */ /* 0xXX: Hour */ /* 0xXX: Minute */ /* 0xXX: Second */ /* 0xXX: Byte 0 of bit rates */ /* 0xXX: Byte 1 of bit rates */ /* 0xXX: Byte 0 of bit flags */ /* 0xXX: Byte 1 of bit flags */ /* 0xXX: Flash */ /* 0xXX: Resolution */ /* 0xXX: Focus */ /* 0xXX: Exposure */ /* 0xXX: Byte 0 of total pictures */ /* 0xXX: Byte 1 of total pictures */ /* 0xXX: Byte 0 of total strobes */ /* 0xXX: Byte 1 of total strobes */ /************************************************/ unsigned char sb[] = {0x20, 0x90, 0x00, 0x00, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CHECK_NULL (status); CRF (c, l_send_receive (p, c, sb, 6, &rb, &rbs, 0, NULL, NULL), rb); status->self_test_result = (rb[5] << 8) | rb[4]; status->power_level = rb[6]; status->power_source = rb[7]; status->card_status = rb[8]; status->display = rb[9]; status->card_size = (rb[11] << 8) | rb[10]; status->pictures = (rb[13] << 8) | rb[12]; status->pictures_left = (rb[15] << 8) | rb[14]; status->date.year = rb[16]; status->date.month = rb[17]; status->date.day = rb[18]; status->date.hour = rb[19]; status->date.minute = rb[20]; status->date.second = rb[21]; status->bit_rate = (rb[23] << 8) | rb[22]; status->bit_flags = (rb[25] << 8) | rb[24]; status->flash = rb[26]; status->resolution = rb[27]; status->focus = rb[28]; status->exposure = rb[29]; status->total_pictures = (rb[31] << 8) | rb[30]; status->total_strobes = (rb[33] << 8) | rb[32]; free (rb); return (GP_OK); } int k_get_date_and_time (GPPort *p, GPContext *c, KDate *date) { /************************************************/ /* Command to get the date and time from the */ /* camera. */ /* */ /* 0x30: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* */ /* Return values: */ /* 0x30: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /* Following bytes only in case of success. */ /* 0xXX: Year */ /* 0xXX: Month */ /* 0xXX: Day */ /* 0xXX: Hour */ /* 0xXX: Minute */ /* 0xXX: Second */ /************************************************/ unsigned char sb[] = {0x30, 0x90, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CRF (c, l_send_receive (p, c, sb, 4, &rb, &rbs, 0, NULL, NULL), rb); date->year = rb[4]; date->month = rb[5]; date->day = rb[6]; date->hour = rb[7]; date->minute = rb[8]; date->second = rb[9]; free (rb); return (GP_OK); }; int k_get_preferences (GPPort *p, GPContext *c, KPreferences *preferences) { /************************************************/ /* Command to get the preferences from the */ /* camera. */ /* */ /* 0x40: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* */ /* Return values: */ /* 0x40: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /* Following bytes only in case of success. */ /* 0xXX: Byte 0 of shutoff time */ /* 0xXX: Byte 1 of shutoff time */ /* 0xXX: Byte 0 of self timer time */ /* 0xXX: Byte 1 of self timer time */ /* 0xXX: Byte 0 of beep */ /* 0xXX: Byte 1 of beep */ /* 0xXX: Byte 0 of slide show interval */ /* 0xXX: Byte 1 of slide show interval */ /************************************************/ unsigned char sb[] = {0x40, 0x90, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CRF (c, l_send_receive (p, c, sb, 4, &rb, &rbs, 0, NULL, NULL), rb); preferences->shutoff_time = rb[4]; preferences->self_timer_time = rb[5]; preferences->beep = rb[6]; preferences->slide_show_interval = rb[7]; free (rb); return (GP_OK); } int k_set_io_capability (GPPort *p, GPContext *c, KBitRate bit_rate, KBitFlag bit_flags) { /************************************************/ /* Command to set the IO capability of the */ /* camera. */ /* */ /* 0x80: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0xXX: Byte 0 of bit rates */ /* 0xXX: Byte 1 of bit rates */ /* 0xXX: Byte 0 of bit flags */ /* 0xXX: Byte 1 of bit flags */ /* */ /* Return values: */ /* 0x80: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /************************************************/ unsigned char sb[8]; unsigned char *rb = NULL; unsigned int rbs; sb[0] = 0x80; sb[1] = 0x90; sb[2] = 0x00; /* reserved */ sb[3] = 0x00; /* reserved */ sb[4] = bit_rate >> 0; sb[5] = bit_rate >> 8; sb[6] = bit_flags >> 0; sb[7] = bit_flags >> 8; CRF (c, l_send_receive (p, c, sb, 8, &rb, &rbs, 0, NULL, NULL), rb); free (rb); return (GP_OK); } int k_set_date_and_time (GPPort *p, GPContext *c, KDate date) { /************************************************/ /* Command to set date and time of the camera. */ /* */ /* 0xb0: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0xXX: Year (0x00 to 0x25, 0x60 to 0x63) */ /* 0xXX: Month (0x01 to 0x0C) */ /* 0xXX: Day (0x01 to 0x1F) */ /* 0xXX: Hour (0x00 to 0x17) */ /* 0xXX: Minute (0x00 to 0x3b) */ /* 0xXX: Second (0x00 to 0x3b) */ /* */ /* Return values: */ /* 0xb0: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /************************************************/ unsigned char sb[10]; unsigned char *rb = NULL; unsigned int rbs; sb[0] = 0xb0; sb[1] = 0x90; sb[2] = 0x00; /* reserved */ sb[3] = 0x00; /* reserved */ sb[4] = date.year; sb[5] = date.month; sb[6] = date.day; sb[7] = date.hour; sb[8] = date.minute; sb[9] = date.second; CRF (c, l_send_receive (p, c, sb, 10, &rb, &rbs, 0, NULL, NULL), rb); free (rb); return (GP_OK); } int k_set_preference (GPPort *p, GPContext *c, KPreference preference, unsigned int value) { /* Return values: */ /* 0xc0: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ unsigned char sb[8]; unsigned char *rb = NULL; unsigned int rbs; sb[0] = 0xc0; sb[1] = 0x90; sb[2] = 0x00; /* reserved */ sb[3] = 0x00; /* reserved */ sb[4] = preference >> 0; sb[5] = preference >> 8; sb[6] = value >> 0; sb[7] = value >> 8; CRF (c, l_send_receive (p, c, sb, 8, &rb, &rbs, 0, NULL, NULL), rb); free (rb); return (GP_OK); } int k_reset_preferences (GPPort *p, GPContext *c) { /************************************************/ /* Command to reset the preferences of the */ /* camera. */ /* */ /* 0xc1: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* */ /* Return values: */ /* 0xc1: Byte 0 of command identifier */ /* 0x90: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /************************************************/ unsigned char sb[] = {0xc1, 0x90, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CRF (c, l_send_receive (p, c, sb, 4, &rb, &rbs, 0, NULL, NULL), rb); free (rb); return (GP_OK); } int k_take_picture ( GPPort *p, GPContext *c, int image_id_long, unsigned long *image_id, unsigned int *exif_size, unsigned char **ib, unsigned int *ibs, int *protected) { /************************************************/ /* Command to take a picture. */ /* */ /* 0x00: Byte 0 of command identifier */ /* 0x91: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0x02: Byte 0 of p ID */ /* 0x00: Byte 1 of p ID */ /* */ /* The data (thumbnail) will be received first, */ /* followed by the return values. */ /* */ /* Return values: */ /* 0x00: Byte 0 of command identifier */ /* 0x91: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /* Following bytes only in case of success. */ /* 0xXX: Byte 3 of image ID (QM200 only) */ /* 0xXX: Byte 4 of image ID (QM200 only) */ /* 0xXX: Byte 0 of image ID */ /* 0xXX: Byte 1 of image ID */ /* 0xXX: Byte 0 of exif size */ /* 0xXX: Byte 1 of exif size */ /* 0xXX: Byte 0 of protect status */ /* 0x00: not protected */ /* 0x01: protected */ /* 0x00: Byte 1 of protect status */ /************************************************/ unsigned char sb[] = {0x00, 0x91, 0x00, 0x00, 0x02, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CHECK_NULL (image_id && exif_size && protected && ib && ibs); CRF (c, l_send_receive (p, c, sb, 6, &rb, &rbs, 60000, ib, ibs), rb); if (!image_id_long) { *image_id = 0x00 | 0x00 | (rb[5] << 8) | rb[4]; *exif_size = (rb[7] << 8) | rb[6]; *protected = (rb[8] != 0x00); } else { *image_id = (rb[5] << 24) | (rb[4] << 16) | (rb[7] << 8 ) | (rb[6]); *exif_size = (rb[9] << 8) | rb[8]; *protected = (rb[10] != 0x00); } free (rb); return (GP_OK); } int k_localization_tv_output_format_set (GPPort *p, GPContext *c, KTVOutputFormat tv_output_format) { /************************************************/ /* Command for various localization issues. */ /* Here: Setting of tv output format. */ /* */ /* 0x00: Byte 0 of command identifier */ /* 0x92: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0x01: Byte 0 of localization type identifier */ /* 0x00: transmission of */ /* localization data */ /* 0x01: setting of tv output */ /* format */ /* 0x02: setting of date format */ /* 0x00: Byte 1 of localization type identifier */ /* 0xXX: Byte 0 of tv output format */ /* 0x00: NTSC */ /* 0x01: PAL */ /* 0x02: None */ /* 0x00: Byte 1 of tv output format */ /* */ /* Return values: */ /* 0x00: Byte 0 of command identifier */ /* 0x92: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /************************************************/ unsigned char sb[] = {0x00, 0x92, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; sb[6] = tv_output_format; CRF (c, l_send_receive (p, c, sb, 8, &rb, &rbs, 0, NULL, NULL), rb); free (rb); return (GP_OK); } int k_localization_date_format_set (GPPort *p, GPContext *c, KDateFormat date_format) { /************************************************/ /* Command for various localization issues. */ /* Here: Setting of date format. */ /* */ /* 0x00: Byte 0 of command identifier */ /* 0x92: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0x02: Byte 0 of localization type identifier */ /* 0x00: transmission of */ /* localization data */ /* 0x01: setting of tv output */ /* format */ /* 0x02: setting of date format */ /* 0x00: Byte 1 of localization type identifier */ /* 0xXX: Byte 0 of date format */ /* 0x00: month/day/year */ /* 0x01: day/month/year */ /* 0x02: year/month/day */ /* 0x00: Byte 1 of date format */ /* */ /* Return values: */ /* 0x00: Byte 0 of command identifier */ /* 0x92: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /************************************************/ unsigned char sb[] = {0x00, 0x92, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; sb[6] = date_format; CRF (c, l_send_receive (p, c, sb, 8, &rb, &rbs, 0, NULL, NULL), rb); free (rb); return (GP_OK); } #define PACKET_SIZE 1024 int k_localization_data_put (GPPort *p, GPContext *c, unsigned char *data, unsigned long data_size) { /************************************************/ /* Command for various localization issues. */ /* Here: Transmission of localization data. */ /* */ /* 0x00: Byte 0 of command identifier */ /* 0x92: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* 0x00: Byte 0 of localization type identifier */ /* 0x00: transmission of */ /* localization data */ /* 0x01: setting of tv output */ /* format */ /* 0x02: setting of date format */ /* 0x00: Byte 1 of localization type identifier */ /* 0x00: Byte 0 of ? */ /* 0x00: Byte 1 of ? */ /* 0xXX: Byte 0 of number of bytes of packet */ /* 0xXX: Byte 1 of number of bytes of packet */ /* 0xXX: Byte 3 of memory address where to */ /* write the packet to */ /* 0xXX: Byte 4 of memory address */ /* 0xXX: Byte 0 of memory address */ /* 0xXX: Byte 1 of memory address */ /* 0xXX: Byte 0 of last packet identifier */ /* 0x00: packets to follow */ /* 0x01: no more packets to follow */ /* 0x00: Byte 1 of last packet identifier */ /* */ /* Then follows the packet (size see above). */ /* */ /* */ /* Return values: */ /* 0x00: Byte 0 of command identifier */ /* 0x92: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /************************************************/ int result; unsigned char *rb = NULL; unsigned int rbs; unsigned long i, j; unsigned char sb[16 + PACKET_SIZE]; gp_log (GP_LOG_DEBUG, "konica", "Uploading %ld bytes localization " "data...", data_size); CHECK_NULL (data); if (data_size < 512) return (GP_ERROR_BAD_PARAMETERS); sb[0] = 0x00; sb[1] = 0x92; sb[2] = 0x00; /* reserved */ sb[3] = 0x00; /* reserved */ sb[4] = 0x00; sb[5] = 0x00; sb[6] = 0x00; sb[7] = 0x00; sb[8] = (unsigned char) (PACKET_SIZE >> 0); sb[9] = (unsigned char) (PACKET_SIZE >> 8); sb[10] = 0x00; sb[11] = 0x00; sb[12] = 0x00; sb[13] = 0x00; sb[14] = 0x00; sb[15] = 0x00; i = 0; while (TRUE) { /* Set up the packet. */ sb[10] = i >> 16; sb[11] = i >> 24; sb[12] = i; sb[13] = i >> 8; for (j = 0; j < PACKET_SIZE; j++) { if ((i + j) < data_size) sb[16 + j] = data[i + j]; else sb[16 + j] = 0xFF; } /* * We could wait until the camera sends us * K_ERROR_LOCALIZATION_DATA_EXCESS, but it does that * not until the 70000th byte or so. However, as we can * provoke the message with sb[14] = 0x01, we do so as * soon as we exceed the 65535th byte to shorten the * transmission time. We can't do that before or the * camera reports K_ERROR_LOCALIZATION_DATA_CORRUPT. */ if (i + PACKET_SIZE > 65536) sb[14] = 0x01; result = l_send_receive (p, c, sb, PACKET_SIZE + 16, &rb, &rbs, 0, NULL, NULL); if (result == GP_OK) { if ((rb[3] == 0x0b) && (rb[2] == 0x00)) { /* * The camera does no longer want to receive * localization data. We are done. */ return (GP_OK); } else if ((rb[3] == 0x00) && (rb[2] == 0x00)) { /* * Everything is fine. Continue sending * packets but make sure we don't loop * forever. */ if (i > 131072) return (GP_ERROR); } } CRF (c, result, rb); free (rb); rb = NULL; i += PACKET_SIZE; } } int k_cancel (GPPort *p, GPContext *c, KCommand* command) { /************************************************/ /* Command to cancel a command. */ /* */ /* 0x00: Byte 0 of command identifier */ /* 0x9e: Byte 1 of command identifier */ /* 0x00: Reserved */ /* 0x00: Reserved */ /* */ /* Return values: */ /* 0x00: Byte 0 of command identifier */ /* 0x9e: Byte 1 of command identifier */ /* 0xXX: Byte 0 of return status */ /* 0xXX: Byte 1 of return status */ /* Following bytes only in case of success. */ /* 0xXX: Byte 0 of cancelled command */ /* 0xXX: Byte 1 of cancelled command */ /************************************************/ unsigned char sb[] = {0x00, 0x9e, 0x00, 0x00}; unsigned char *rb = NULL; unsigned int rbs; CHECK_NULL (command); CRF (c, l_send_receive (p, c, sb, 4, &rb, &rbs, 0, NULL, NULL), rb); *command = (rb[5] << 8) | rb[4]; free (rb); GP_DEBUG ("Cancelled command 0x%x.", *command); return (GP_OK); } libgphoto2-2.5.9/camlibs/konica/ChangeLog0000644000175000001440000000677012557123324015163 000000000000002004-03-25 Hubert Figuiere * qm150.c (k_getdata): (camera_summary): fix C99 stuff for Solaris C compiler See bug #923219. 2003-12-17 Lutz Mueller Patch by Andreas Burmester : * lowlevel.c (l_receive): Don't write beyond allocated memory. 2003-12-17 Lutz Mueller Patch by Andreas Burmester : * konica.c (k_check): unsigned. 2003-12-11 Lutz Mueller Patches by Andreas Burmester : * library.c (camera_[get,set]_config: Months are counted from 1 to 12 on the C200. 2003-05-25 Marcus Meissner Aurélien Croc (AP²C) * qm150.c: Reverse engineered Konica Q-M150 camera serial protocol and implemented a basic driver. Still work in progress, but picture download/deletion already possible. 2003-02-27 Marcus Meissner * library.c: We support EXIF download. 2002-11-20 Hans Ulrich Niedermann * Makefile.am: also tell driver that i18n stuff is in $(PACKAGE)/$(VERSION) 2002-11-18 Lutz Müller * localization/Makefile.am: Install files in a $(PACKAGE)/$(VERSION) subdir. 2002-11-17 Marcus Meissner * library.c: Got rid of some broken long*/int*/time_t* casts. (would break 64bit on big endian). 2002-11-05 Lutz MÜller * Makefile.am * localization/Makefile.am: Install files in a $(PACKAGE) subdir. 2002-07-11 Lutz Müller * library.c: Add a couple of 'gp_context_idle's. 2002-07-05 Lutz Müller * library.c: We can't change the name of files. 2002-07-04 Lutz Müller * library.c: (camera_capture): Fix bug. 2002-05-06 Lutz Müller * library.c: ping the camera every minute to prevent shutdown. 2002-03-08 Marcus Meissner * lowlevel.c: When reading we do not need to escape that much, the original HP PhotoSmart does not escape all characters. 2002-03-04 Lutz Müller With the help of Thomas Ronayne : * lowlevel.c: DEFAULT_TIMEOUT now 1000 - C200 needs it. 2002-03-04 Lutz Müller With the help of Thomas Ronayne : * konica.c (konica_get_image_info): The C200 needs up to 2 seconds to respond. * library.c: The image ids for a C200 are 2 bytes long, not 4. 2002-01-29 Lutz Müller * library.h: Removed. * konica.[c,h]: Prepare support for progress information. 2002-01-13 Lutz Müller * library.c: More progress reporting. Remove references to gp_camera_set_error. 2002-01-11 Dan Fandrich * library.c: fgetc() returns type int, not char. 2002-01-07 Lutz Müller * README: Removed duplicate camera models. 2002-01-06 Lutz Müller * konica.c: #define PACKET_SIZE instead of using a static variable. 2001-12-11 Lutz Müller * lowlevel.c: Clean up. 2001-12-11 Lutz Müller * lowlevel.c: Fix bug introduced with last patch. 2001-12-09 Lutz Müller * lowlevel.c: Do not read one byte after another - that makes debugging output easier to read. libgphoto2-2.5.9/camlibs/konica/lowlevel.c0000644000175000001440000003722112610415536015400 00000000000000/* lowlevel.c * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include "lowlevel.h" #include #include #include #include #include #include "konica.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "konica" #define DEFAULT_TIMEOUT 1000 #define LESSER_ESCAPES /* ESC quotes */ #define STX 0x02 #define ETX 0x03 #define ENQ 0x05 #define ACK 0x06 #define XOFF 0x11 #define XON 0x13 #define NACK 0x15 #define ETB 0x17 #define ESC 0x1b /* Not an ESC quote */ #define EOT 0x04 #define CHECK(r) {int ret = (r); if (ret < 0) return (ret);} #define CHECK_NULL(r) {if (!(r)) return (GP_ERROR_BAD_PARAMETERS);} #define CHECK_FREE(r,f) {int ret = (r); if (ret < 0) {free (f); return (ret);}} static int l_ping_rec (GPPort *p, unsigned int level) { unsigned char c; /* Write ENQ and read the response. */ c = ENQ; CHECK (gp_port_write (p, (char *)&c, 1)); CHECK (gp_port_read (p, (char *)&c, 1)); switch (c) { case ACK: return (GP_OK); case NACK: /* * Uh, lets try again a couple of times, but * make sure we don't recurse forever. */ if (level < 30) return (l_ping_rec (p, level + 1)); else return (GP_ERROR_CORRUPTED_DATA); case ENQ: /* * ENQ received. It seems that the camera would like * to send us data, but we do not want it and * therefore simply reject it. The camera will try * two more times with ENQ to get us to receive data * before finally giving up and sending us ACK. */ /* Write NACK. */ c = NACK; CHECK (gp_port_write (p, (char *)&c, 1)); for (;;) { CHECK (gp_port_read (p, (char *)&c, 1)); switch (c) { case ENQ: /* The camera has not yet given up. */ continue; case ACK: /* ACK received. We can proceed. */ return (GP_OK); default: /* This should not happen. */ return (GP_ERROR_CORRUPTED_DATA); } break; } break; default: /* * The camera seems to send us data. We'll * simply ignore it and try again (but make * sure that we don't loop forever). */ CHECK (gp_port_flush (p, 0)); CHECK (gp_port_flush (p, 1)); if (level > 50) return (GP_ERROR_CORRUPTED_DATA); else return (l_ping_rec (p, level + 1)); } return (GP_OK); } int l_ping (GPPort *p, GPContext *c) { return (l_ping_rec (p, 0)); } int l_init (GPPort *p, GPContext *c) { unsigned int i; int result = GP_OK; CHECK_NULL (p); CHECK (gp_port_set_timeout (p, DEFAULT_TIMEOUT)); for (i = 0; i < 3; i++) { result = l_ping (p, c); if (result != GP_ERROR_TIMEOUT) break; } return (result); } static int l_esc_read (GPPort *p, unsigned char *c) { CHECK_NULL (p && c); CHECK (gp_port_read (p, (char *)c, 1)); /* * STX, ETX, ENQ, ACK, XOFF, XON, NACK, and ETB have to be masked by * ESC. If we receive one of those (except ETX and ETB) without mask, * we will not report an error, as it will be recovered automatically * later. If we receive ETX or ETB, we reached the end of the packet * and report a transmission error, so that the error can be * recovered. * If the camera sends us ESC (the mask), we will not count this byte * and read a second one. This will be reverted and processed. It * then must be one of STX, ETX, ENQ, ACK, XOFF, XON, NACK, ETB, or * ESC. As before, if it is not one of those, we'll not report an * error, as it will be recovered automatically later. */ /* The HP PhotoSmart does not escape every special code, only * some and it gets confused if we do this checks. By relaxing * these, it now downloads images etc. */ #ifndef LESSER_ESCAPES if ((*c == STX ) || (*c == ETX) || (*c == ENQ ) || (*c == ACK) || (*c == XOFF) || (*c == XON) || (*c == NACK) || (*c == ETB)) { #else /* LESSER_ESCAPES */ if ((*c == STX ) || (*c == XOFF) || (*c == XON)) { #endif /* LESSER_ESCAPES */ GP_DEBUG ("Wrong ESC masking!"); if ((*c == ETX) || (*c == ETB)) return (GP_ERROR_CORRUPTED_DATA); } else if (*c == ESC) { CHECK (gp_port_read (p, (char *)c, 1)); *c = (~*c & 0xff); if ((*c != STX ) && (*c != ETX ) && (*c != ENQ) && (*c != ACK ) && (*c != XOFF) && (*c != XON) && (*c != NACK) && (*c != ETB ) && (*c != ESC)) GP_DEBUG ("Wrong ESC masking!"); } return (GP_OK); } static int l_send (GPPort *p, GPContext *context, unsigned char *send_buffer, unsigned int send_buffer_size) { unsigned char c; unsigned char checksum; /**********************************************************************/ /* sb: A pointer to the buffer that we will send. */ /* sbs: Its size. */ /**********************************************************************/ unsigned char *sb; unsigned int sbs; int i = 0; CHECK_NULL (p && send_buffer); /* We need to ping the camera first */ CHECK (l_ping (p, context)); /********************************************************/ /* We will write: */ /* - STX */ /* - low order byte of (send_buffer_size + 5) */ /* - high order byte of (send_buffer_size + 5) */ /* - 'send_buffer_size' bytes data plus ESC quotes */ /* - ETX */ /* - 1 byte for checksum plus ESC quotes */ /* */ /* The checksum covers all bytes after STX and before */ /* the checksum byte(s). */ /********************************************************/ sbs = send_buffer_size + 5; sb = malloc (sizeof (char) * sbs); sb[0] = STX; sb[1] = send_buffer_size; sb[2] = send_buffer_size >> 8; checksum = sb[1]; checksum += sb[2]; for (i = 3; i < (sbs - 2); i++) { checksum += *send_buffer; if ( (*send_buffer == STX ) || (*send_buffer == ETX ) || (*send_buffer == ENQ ) || (*send_buffer == ACK ) || (*send_buffer == XOFF) || (*send_buffer == XON ) || (*send_buffer == NACK) || (*send_buffer == ETB ) || (*send_buffer == ESC )) { sb = realloc (sb, ++sbs * sizeof (char)); sb[ i] = ESC; sb[++i] = ~*send_buffer; } else sb[ i] = *send_buffer; send_buffer++; } sb[sbs - 2] = ETX; checksum += ETX; if ( (checksum == STX ) || (checksum == ETX ) || (checksum == ENQ ) || (checksum == ACK ) || (checksum == XOFF) || (checksum == XON ) || (checksum == NACK) || (checksum == ETB ) || (checksum == ESC )) { sb = realloc (sb, ++sbs * sizeof (char)); sb[sbs - 2] = ESC; sb[sbs - 1] = ~checksum; } else sb[sbs - 1] = checksum; for (i = 0; ; i++) { /* Write data as above. */ CHECK_FREE (gp_port_write (p, (char *)sb, sbs), sb); CHECK_FREE (gp_port_read (p, (char *)&c, 1), sb); switch (c) { case ACK: /* ACK received. We can proceed. */ free (sb); /* Write EOT. */ c = EOT; CHECK (gp_port_write (p, (char *)&c, 1)); return (GP_OK); case NACK: /* NACK received. We'll try up to three times. */ if (i == 2) { free (sb); return (GP_ERROR_CORRUPTED_DATA); } else break; default: /* Should not happen. */ return (GP_ERROR_CORRUPTED_DATA); } } } static int l_receive (GPPort *p, GPContext *context, unsigned char **rb, unsigned int *rbs, unsigned int timeout) { unsigned char c, d, progress = 0; int error_flag; unsigned int i, j, rbs_internal, id = 0; unsigned char checksum; int result; KCommand command; CHECK_NULL (p && rb && rbs); for (i = 0; ; ) { CHECK (gp_port_set_timeout (p, timeout)); CHECK (gp_port_read (p, (char *)&c, 1)); CHECK (gp_port_set_timeout (p, DEFAULT_TIMEOUT)); switch (c) { case ENQ: /* ENQ received. We can proceed. */ break; case ACK: /* ACK received. We'll try again at most ten times. */ if (i == 9) { /* * The camera hangs! Although it could be * that the camera accepts one of the * commands * - KONICA_CANCEL, * - KONICA_GET_IO_CAPABILITY, and * - KONICA_SET_IO_CAPABILITY, * we can not get the camera back to working * correctly. */ return (GP_ERROR_CORRUPTED_DATA); } i++; break; default: /* * We'll dump this data until we get ENQ (then, we'll * proceed) or nothing any more (then, we'll report * error). */ for (;;) { CHECK (gp_port_read (p, (char *)&c, 1)); if (c == ENQ) break; } break; } if (c == ENQ) break; } /* Start progress */ if (*rbs > 1000) { id = gp_context_progress_start (context, *rbs, _("Downloading...")); progress = 1; } /* Write ACK. */ CHECK (gp_port_write (p, "\6", 1)); for (*rbs = 0; ; ) { for (j = 0; ; j++) { CHECK (gp_port_read (p, (char *)&c, 1)); switch (c) { case STX: /* STX received. We can proceed. */ break; default: /* We'll dump this data and try again. */ continue; } /* * Read 2 bytes for size (low order byte, high order * byte) plus ESC quotes. */ CHECK (l_esc_read (p, &c)); checksum = c; CHECK (l_esc_read (p, &d)); checksum += d; rbs_internal = (d << 8) | c; if (*rbs == 0) *rb = malloc (rbs_internal * sizeof (char)); else *rb = realloc (*rb, sizeof (char) * (*rbs + rbs_internal)); /* Read 'rbs_internal' bytes data plus ESC quotes. */ error_flag = 0; { unsigned int read = 0, r = 0; while (read < rbs_internal) { /* * Read the specified amount of bytes. We will probably read more * because some bytes will be quoted. */ GP_DEBUG ("Reading %i bytes (%i of %i already read)...", rbs_internal - read, read, rbs_internal); result = gp_port_read (p, (char *)&((*rb)[*rbs + read]), rbs_internal - read); if (result < 0) { error_flag = 1; break; } r = rbs_internal - read; /* Unescape the data we just read */ for (i = read; i < read + r; i++) { unsigned char *c = &(*rb)[*rbs + i]; /* The HP PhotoSmart does not escape every special code, only * some and it gets confused if we do this checks. By relaxing * these, it now downloads images etc. */ #ifndef LESSER_ESCAPES if ((*c == STX) || (*c == ETX) || (*c == ENQ ) || (*c == ACK) || (*c == XOFF) || (*c == XON) || (*c == NACK) || (*c == ETB)) { #else /* LESSER_ESCAPES */ if ((*c == STX) || (*c == XOFF) || (*c == XON)) { #endif /* LESSER_ESCAPES */ GP_DEBUG ("Wrong ESC masking!"); error_flag = 1; break; } else if (*c == ESC) { if (i == read + r - 1) { /* ESC is last char of packet */ CHECK (gp_port_read (p, (char *)c, 1)); } else { memmove (c, c + 1, read + r - i - 1); r--; } *c = ~*c & 0xff; if ((*c != STX ) && (*c != ETX ) && (*c != ENQ) && (*c != ACK ) && (*c != XOFF) && (*c != XON) && (*c != NACK) && (*c != ETB ) && (*c != ESC)) { GP_DEBUG ("Wrong ESC masking!"); error_flag = 1; break; } } checksum += (*rb)[*rbs + i]; } if (error_flag) break; read += r; }} if (!error_flag) { CHECK (gp_port_read (p, (char *)&d, 1)); switch (d) { case ETX: /* * ETX received. This is the last * packet. */ GP_DEBUG ("Last packet."); break; case ETB: /* * ETB received. There are more * packets to come. */ GP_DEBUG ("More packets coming."); break; default: /* * We get more bytes than expected. * Nothing serious, as we will simply * dump all bytes until we receive * ETX or ETB. Later, we'll read the * checksum with ESC quotes and * reject the packet. */ while ((d != ETX) && (d != ETB)) { CHECK (gp_port_read (p, (char *)&d, 1)); } error_flag = 1; break; } } checksum += d; /* Read 1 byte for checksum plus ESC quotes. */ CHECK (l_esc_read (p, &c)); if ((c == checksum) && (!error_flag)) { *rbs += rbs_internal; /* Write ACK. */ CHECK (gp_port_write (p, "\6", 1)); break; } else { /* * Checksum wrong or transmission error. The * camera will send us the data at the most * three times. */ GP_DEBUG ("Checksum wrong: expected %i, " "got %i.", c, checksum); if (j == 2) return (GP_ERROR_CORRUPTED_DATA); /* Write NACK. */ c = NACK; CHECK (gp_port_write (p, (char *)&c, 1)); continue; } } CHECK (gp_port_read (p, (char *)&c, 1)); switch (c) { case EOT: /* EOT received. We can proceed. */ break; default: /* Should not happen. */ return (GP_ERROR_CORRUPTED_DATA); } /* * Depending on d, we will either continue to receive data or * stop. * * - ETX: We are all done. * - ETB: We expect more data. * - else: Should not happen. */ switch (d) { case ETX: /* We are all done. */ if (progress) gp_context_progress_stop (context, id); return (GP_OK); case ETB: /* We expect more data. Read ENQ. */ CHECK (gp_port_read (p, (char *)&c, 1)); switch (c) { case ENQ: /* ENQ received. We can proceed. */ break; default: /* Should not happen. */ return (GP_ERROR_CORRUPTED_DATA); } if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { GP_DEBUG ("Trying to cancel operation..."); CHECK (k_cancel (p, context, &command)); GP_DEBUG ("Operation 0x%x cancelled.", command); return (GP_ERROR_CANCEL); } /* Write ACK. */ CHECK (gp_port_write (p, "\6", 1)); break; default: /* Should not happen. */ return (GP_ERROR_CORRUPTED_DATA); } if (progress) gp_context_progress_update (context, id, *rbs); } } int l_send_receive ( GPPort *p, GPContext *c, unsigned char *send_buffer, unsigned int send_buffer_size, unsigned char **receive_buffer, unsigned int *receive_buffer_size, unsigned int timeout, unsigned char **image_buffer, unsigned int *image_buffer_size) { if (!timeout) timeout = DEFAULT_TIMEOUT; /* Send data. */ CHECK (l_send (p, c, send_buffer, send_buffer_size)); /* Receive data. */ if (image_buffer_size) *receive_buffer_size = *image_buffer_size; CHECK (l_receive (p, c, receive_buffer, receive_buffer_size, timeout)); /* Check if we've received the control data. */ if ((*receive_buffer_size > 1) && (((*receive_buffer)[0] == send_buffer[0]) && ((*receive_buffer)[1] == send_buffer[1]))) return (GP_OK); /* We didn't receive control data yet. */ *image_buffer = *receive_buffer; *image_buffer_size = *receive_buffer_size; *receive_buffer = NULL; /* Receive control data. */ CHECK (l_receive (p, c, receive_buffer, receive_buffer_size, DEFAULT_TIMEOUT)); /* Sanity check: Did we receive the right control data? */ if (((*receive_buffer)[0] != send_buffer[0]) || ((*receive_buffer)[1] != send_buffer[1])) return (GP_ERROR_CORRUPTED_DATA); return (GP_OK); } libgphoto2-2.5.9/camlibs/konica/EXPERTS0000644000175000001440000000654412557123324014465 00000000000000 Expert Mode ----------- This document describes how to enter the expert mode and adjust several low level settings like the brightness of the flash that can't be accessed through the user menu or a driver. ******************************************************************************** * This information has to be handled with care. By entering the expert mode, * * you are able to render your camera unfunctional. Only enter the expert mode * * when you are willing to sacrifice your camera. * ******************************************************************************** Recommendation: Please write down the initial values for each (sub)menu before you ever change a value. The values have been chosen carefully by the manufacturer. This document is by no means perfect. Please tell me if you find out additional things about the expert mode that should be included in this document. How to enter ------------ Keep the "Menu" button pressed while turning on the camera. Press ">", "<", "<", ">", ">", ">", "<", "<", ">". You'll now see the expert menu in the small display. How to navigate --------------- You can select the different menus by pressing the "Menu" button. If a menu contains a submenu, you'll automatically be in the first one. You can scroll through submenus by pressing the "OK" button. -------------------------------------------------------------------------- | Menu | Submenu(s) | Description | -------------------------------------------------------------------------- | Aut | - | Self test. Result will be shown on the small | | | | display. | | Inf | - | Adjustment of the focus (DANGER!). | | Seb | - | Adjustment of the strobe brightness | | - | Lcd | Adjustment of the big Lcd screen | | | Nts | Adjustment of the TV output (NTSC) | | | Pal | Adjustment of the TV output (PAL) | | - | Pru | Live preview | | | Pr1 | Live preview (black/white only) | | | Pr2 | Live preview (?) | | - | Adr | ? (Range: 0x00 to 0xFF) | | | Dat | ? (Range: 0x00 to oxFF) | | Ldp | - | Equivalent to exposure (Range: 0 to 255) | | Sht | | Shutter? Preview (Pr*) get's brighter and darker. | | | - | (Range: 100, 106-109) | | | - | (Range: 200, 208-213) | | | - | (Range: 300, 310-316) | | End | - | Exit the expert mode | -------------------------------------------------------------------------- Start a process (e.g. self test) or store a value by pressing the release button. Values can be selected by pressing "<" or ">". When a process has been sucessfully started or a value stored, the camera will beep. How to exit ----------- Select the "End" menu. Press the release button. libgphoto2-2.5.9/camlibs/konica/README.konica0000644000175000001440000000205212561423351015517 00000000000000History ------- This library is heavily based upon the work of Phill Hugo who based his work heavily "on reverse engineering work by Jesper Skov and his Perl script of similar functionality". Additionally, Konica has been very supportive by issuing their own driver explaining the syntax of the commands. Konica even responded to my questions and gave additional hints. Thank you! Supported Cameras ----------------- - HP PhotoSmart C20 - HP PhotoSmart C30 - HP PhotoSmart C200 - Konica Q-EZ - Konica Q-M100 - Konica Q-M100V - Konica Q-M200 Features -------- Lots of them :-) This driver supports all features that the hardware offers except two commands for "testing" (I don't know the syntax of those - could be for updating the camera's software). Licence ------- This library is released under the terms of the GNU General Public Licence. Please see the file COPYING for details. Reporting Bugs -------------- If you find any, please report them to . Author ------ Lutz Müller libgphoto2-2.5.9/camlibs/st2205/0000755000175000001440000000000012623156270013152 500000000000000libgphoto2-2.5.9/camlibs/st2205/library.c0000644000175000001440000004332212610415536014705 00000000000000/* Sitronix st2205 picframe access library * * Copyright (c) 2010 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #define _BSD_SOURCE #include "config.h" #include #include #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) # include #endif #ifdef HAVE_LIBGD # include #endif #include #include #include #include #include "st2205.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif int camera_id (CameraText *id) { strcpy (id->text, "ST2205 USB picture frame"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset (&a, 0, sizeof(a)); strcpy (a.model, "ST2205 USB picture frame"); a.status = GP_DRIVER_STATUS_TESTING; a.port = GP_PORT_USB_DISK_DIRECT; a.speed[0] = 0; a.usb_vendor = 0x1403; a.usb_product= 0x0001; a.operations = GP_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE | GP_FOLDER_OPERATION_DELETE_ALL; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_RAW; return gp_abilities_list_append (list, a); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { sprintf (summary->text, _("Your USB picture frame has a ST2205 chipset\n")); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." )); return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _( "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." )); return GP_OK; } static int get_file_idx(CameraPrivateLibrary *pl, const char *folder, const char *filename) { int i; if (strcmp (folder, "/")) return GP_ERROR_DIRECTORY_NOT_FOUND; for (i = 0; i < ST2205_MAX_NO_FILES; i++) { if (!strcmp (filename, pl->filenames[i])) break; } if (i == ST2205_MAX_NO_FILES) return GP_ERROR_FILE_NOT_FOUND; return i; } #ifdef HAVE_LIBGD static void rotate90 (gdImagePtr src, gdImagePtr dest) { int x, y; for (y = 0; y < dest->sy; y++) for (x = 0; x < dest->sx; x++) dest->tpixels[y][x] = src->tpixels[src->sy - x - 1][y]; } static void rotate270 (gdImagePtr src, gdImagePtr dest) { int x, y; for (y = 0; y < dest->sy; y++) for (x = 0; x < dest->sx; x++) dest->tpixels[y][x] = src->tpixels[x][src->sx - y - 1]; } static int needs_rotation (Camera *camera) { int display_orientation, user_orientation = camera->pl->orientation; if (camera->pl->width > camera->pl->height) display_orientation = ORIENTATION_LANDSCAPE; else display_orientation = ORIENTATION_PORTRAIT; if (user_orientation == ORIENTATION_AUTO) { if (camera->pl->width == 240 && camera->pl->height == 320) user_orientation = ORIENTATION_LANDSCAPE; else user_orientation = display_orientation; } return display_orientation != user_orientation; } #endif static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int idx, size; #ifdef HAVE_LIBGD int ret; gdImagePtr im, rotated; void *gdpng; #endif idx = get_file_idx(camera->pl, folder, filename); if (idx < 0) return idx; if (type == GP_FILE_TYPE_RAW) { unsigned char *raw; size = st2205_read_raw_file (camera, idx, &raw); if (size < 0) return size; gp_file_set_mime_type (file, GP_MIME_RAW); gp_file_set_name (file, filename); gp_file_set_data_and_size (file, (char *)raw, size); return GP_OK; } #ifdef HAVE_LIBGD if (type != GP_FILE_TYPE_NORMAL) return GP_ERROR_NOT_SUPPORTED; im = gdImageCreateTrueColor(camera->pl->width, camera->pl->height); if (im == NULL) return GP_ERROR_NO_MEMORY; ret = st2205_read_file(camera, idx, im->tpixels); if (ret < 0) { gdImageDestroy (im); return ret; } if (needs_rotation (camera)) { rotated = gdImageCreateTrueColor (im->sy, im->sx); if (rotated == NULL) { gdImageDestroy (im); return GP_ERROR_NO_MEMORY; } rotate270 (im, rotated); gdImageDestroy (im); im = rotated; } gdpng = gdImagePngPtr(im, &size); gdImageDestroy (im); if (gdpng == NULL) return GP_ERROR_NO_MEMORY; ret = gp_file_set_mime_type (file, GP_MIME_PNG); if (ret < 0) { gdFree (gdpng); return ret; } ret = gp_file_set_name (file, filename); if (ret < 0) { gdFree (gdpng); return ret; } ret = gp_file_append (file, gdpng, size); gdFree (gdpng); return ret; #else gp_log(GP_LOG_ERROR,"st2205", "GD decompression not supported - no libGD present during build"); return GP_ERROR_NOT_SUPPORTED; #endif } static int put_file_func (CameraFilesystem *fs, const char *folder, const char *name, CameraFileType type, CameraFile *file, void *data, GPContext *context) { #ifdef HAVE_LIBGD Camera *camera = data; char *c, *in_name, *out_name, *filedata = NULL; int ret, in_width, in_height, in_x, in_y; size_t inc, outc; double aspect_in, aspect_out; #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) char *in, *out; #else int i; #endif unsigned long filesize = 0; gdImagePtr rotated, im_out, im_in = NULL; if (strcmp (folder, "/")) return GP_ERROR_DIRECTORY_NOT_FOUND; inc = strlen (name); in_name = strdup (name); outc = inc; out_name = malloc (outc + 1); if (!in_name || !out_name) { free (in_name); free (out_name); return GP_ERROR_NO_MEMORY; } /* Convert name to ASCII */ #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) in = in_name; out = out_name; if (iconv (camera->pl->cd, &in, &inc, &out, &outc) == -1) { free (in_name); free (out_name); gp_log (GP_LOG_ERROR, "iconv", "Failed to convert filename to ASCII"); return GP_ERROR_OS_FAILURE; } outc = out - out_name; out_name[outc] = 0; #else for (i = 0; i < inc; i++) { if ((uint8_t)in_name[i] < 0x20 || (uint8_t)in_name[i] > 0x7E) out_name[i] = '?'; else out_name[i] = in_name[i]; } out_name[i] = 0; #endif free (in_name); /* Remove file extension, and if necessary truncate the name */ c = strrchr (out_name, '.'); if (c) *c = 0; if (outc > ST2205_FILENAME_LENGTH) out_name[ST2205_FILENAME_LENGTH] = 0; ret = gp_file_get_data_and_size (file, (const char **)&filedata, &filesize); if (ret < 0) { free (out_name); return ret; } /* Try loading the file using gd, starting with the most often used types first */ /* gdImageCreateFromJpegPtr is chatty on error, don't call it on non JPEG files */ if (filesize > 2 && (uint8_t)filedata[0] == 0xff && (uint8_t)filedata[1] == 0xd8) im_in = gdImageCreateFromJpegPtr(filesize, filedata); if (im_in == NULL) im_in = gdImageCreateFromPngPtr(filesize, filedata); if (im_in == NULL) im_in = gdImageCreateFromGifPtr(filesize, filedata); if (im_in == NULL) im_in = gdImageCreateFromWBMPPtr(filesize, filedata); if (im_in == NULL) { gp_log (GP_LOG_ERROR, "st2205", "Unrecognized file format for file: %s%s", folder, name); free (out_name); return GP_ERROR_BAD_PARAMETERS; } if (needs_rotation (camera)) { rotated = gdImageCreateTrueColor (im_in->sy, im_in->sx); if (rotated == NULL) { gdImageDestroy (im_in); free (out_name); return GP_ERROR_NO_MEMORY; } rotate90 (im_in, rotated); gdImageDestroy (im_in); im_in = rotated; } im_out = gdImageCreateTrueColor(camera->pl->width, camera->pl->height); if (im_out == NULL) { gdImageDestroy (im_in); free (out_name); return GP_ERROR_NO_MEMORY; } /* Keep aspect */ aspect_in = (double)im_in->sx / im_in->sy; aspect_out = (double)im_out->sx / im_out->sy; if (aspect_in > aspect_out) { /* Reduce in width (crop left and right) */ in_width = (im_in->sx / aspect_in) * aspect_out; in_x = (im_in->sx - in_width) / 2; in_height = im_in->sy; in_y = 0; } else { /* Reduce in height (crop top and bottom) */ in_width = im_in->sx; in_x = 0; in_height = (im_in->sy * aspect_in) / aspect_out; in_y = (im_in->sy - in_height) / 2; } gdImageCopyResampled (im_out, im_in, 0, 0, in_x, in_y, im_out->sx, im_out->sy, in_width, in_height); if (im_in->sx != im_out->sx || im_in->sy != im_out->sy) gdImageSharpen(im_out, 100); ret = st2205_write_file (camera, out_name, im_out->tpixels); if (ret >= 0) { /* Add to our filenames list */ ST2205_SET_FILENAME(camera->pl->filenames[ret], out_name, ret); /* And commit the changes to the device */ ret = st2205_commit(camera); } gdImageDestroy (im_in); gdImageDestroy (im_out); free (out_name); return ret; #else gp_log(GP_LOG_ERROR,"st2205", "GD compression not supported - no libGD present during build"); return GP_ERROR_NOT_SUPPORTED; #endif } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int ret, idx; idx = get_file_idx(camera->pl, folder, filename); if (idx < 0) return idx; ret = st2205_delete_file(camera, idx); if (ret < 0) return ret; /* Also remove the file from our cached filelist */ camera->pl->filenames[idx][0] = 0; return st2205_commit(camera); } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; CHECK (st2205_delete_all (camera)) return st2205_commit (camera); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { memset (info, 0, sizeof(CameraFileInfo)); /* FIXME: fill in some stuff? */ return GP_OK; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i, ret; for (i = 0; i < ST2205_MAX_NO_FILES; i++) { if (camera->pl->filenames[i][0]) { ret = gp_list_append (list, camera->pl->filenames[i], NULL); if (ret < 0) return ret; } } return GP_OK; } static int storage_info_func (CameraFilesystem *fs, CameraStorageInformation **sinfos, int *nrofsinfos, void *data, GPContext *context) { Camera *camera = (Camera*)data; CameraStorageInformation *sinfo; int free; free = st2205_get_free_mem_size (camera); if (free < 0) return free; sinfo = malloc(sizeof(CameraStorageInformation)); if (!sinfo) return GP_ERROR_NO_MEMORY; *sinfos = sinfo; *nrofsinfos = 1; sinfo->fields = GP_STORAGEINFO_BASE; strcpy(sinfo->basedir, "/"); sinfo->fields |= GP_STORAGEINFO_ACCESS; sinfo->access = GP_STORAGEINFO_AC_READWRITE; sinfo->fields |= GP_STORAGEINFO_STORAGETYPE; sinfo->type = GP_STORAGEINFO_ST_FIXED_RAM; sinfo->fields |= GP_STORAGEINFO_FILESYSTEMTYPE; sinfo->fstype = GP_STORAGEINFO_FST_GENERICFLAT; sinfo->fields |= GP_STORAGEINFO_MAXCAPACITY; sinfo->capacitykbytes = st2205_get_mem_size (camera) / 1024; sinfo->fields |= GP_STORAGEINFO_FREESPACEKBYTES; sinfo->freekbytes = free / 1024; return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .put_file_func = put_file_func, .delete_all_func = delete_all_func, .storage_info_func = storage_info_func }; static char * orientation_to_string (int orientation) { switch (orientation) { case ORIENTATION_AUTO: return _("Auto"); case ORIENTATION_LANDSCAPE: return _("Landscape"); case ORIENTATION_PORTRAIT: return _("Portrait"); } /* Never reached */ return NULL; } static int string_to_orientation (const char *str) { if (strcmp (str, _("Auto")) == 0) return ORIENTATION_AUTO; else if (strcmp (str, _("Landscape")) == 0) return ORIENTATION_LANDSCAPE; else if (strcmp (str, _("Portrait")) == 0) return ORIENTATION_PORTRAIT; else return GP_ERROR_NOT_SUPPORTED; } static int camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *child; GP_DEBUG ("*** camera_get_config"); gp_widget_new (GP_WIDGET_WINDOW, _("Picture Frame Configuration"), window); gp_widget_new (GP_WIDGET_TOGGLE, _("Synchronize frame data and time with PC"), &child); gp_widget_set_value (child, &camera->pl->syncdatetime); gp_widget_append (*window, child); gp_widget_new (GP_WIDGET_RADIO, _("Orientation"), &child); gp_widget_add_choice (child, orientation_to_string (0)); gp_widget_add_choice (child, orientation_to_string (1)); gp_widget_add_choice (child, orientation_to_string (2)); gp_widget_set_value (child, orientation_to_string (camera->pl->orientation)); gp_widget_append (*window, child); return GP_OK; } static int camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *child; int ret; GP_DEBUG ("*** camera_set_config"); ret = gp_widget_get_child_by_label (window, _("Synchronize frame data and time with PC"), &child); if (ret == GP_OK) gp_widget_get_value (child, &camera->pl->syncdatetime); ret = gp_widget_get_child_by_label (window, _("Orientation"), &child); if (ret == GP_OK) { char *value; int orientation; gp_widget_get_value (child, &value); orientation = string_to_orientation (value); if (orientation < 0) return orientation; camera->pl->orientation = orientation; } return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { char buf[2]; if (camera->pl != NULL) { buf[0] = '0' + camera->pl->syncdatetime; buf[1] = 0; gp_setting_set ("st2205", "syncdatetime", buf); gp_setting_set ("st2205", "orientation", orientation_to_string (camera->pl->orientation)); #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) if (camera->pl->cd != (iconv_t) -1) iconv_close (camera->pl->cd); #endif st2205_close (camera); free (camera->pl); camera->pl = NULL; } return GP_OK; } int camera_init (Camera *camera, GPContext *context) { int i, j, ret; #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) char *curloc; #endif char buf[256]; st2205_filename clean_name; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; /* FIXME add gp_camera_get_storageinfo support */ /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = calloc (1, sizeof(CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; ret = gp_setting_get("st2205", "syncdatetime", buf); if (ret == GP_OK) camera->pl->syncdatetime = buf[0] == '1'; else camera->pl->syncdatetime = 1; ret = gp_setting_get("st2205", "orientation", buf); if (ret == GP_OK) { ret = string_to_orientation (buf); if (ret >= 0) camera->pl->orientation = ret; } #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) curloc = nl_langinfo (CODESET); if (!curloc) curloc="UTF-8"; camera->pl->cd = iconv_open("ASCII", curloc); if (camera->pl->cd == (iconv_t) -1) { gp_log (GP_LOG_ERROR, "iconv", "Failed to create iconv converter"); camera_exit (camera, context); return GP_ERROR_OS_FAILURE; } #endif #if 1 ret = st2205_open_device (camera); #else ret = st2205_open_dump (camera, "/home/hans/st2205tool/memdump.bin", 128, 128); #endif if (ret != GP_OK) { camera_exit (camera, context); return ret; } GP_DEBUG ("st2205 memory size: %d, free: %d", st2205_get_mem_size (camera), st2205_get_free_mem_size (camera)); /* Get the filenames from the picframe */ ret = st2205_get_filenames (camera, camera->pl->filenames); if (ret != GP_OK) { camera_exit (camera, context); return ret; } /* And clean them up and make them unique */ for (i = 0; i < ST2205_MAX_NO_FILES; i++) { if (!camera->pl->filenames[i][0]) continue; /* Filter out non ASCII chars (some frames ship with sample photo's with garbage in the names) */ for (j = 0; camera->pl->filenames[i][j]; j++) { if ((uint8_t)camera->pl->filenames[i][j] < 0x20 || (uint8_t)camera->pl->filenames[i][j] > 0x7E) clean_name[j] = '?'; else clean_name[j] = camera->pl->filenames[i][j]; } clean_name[j] = 0; ST2205_SET_FILENAME(camera->pl->filenames[i], clean_name, i); } /* Sync time if requested */ if (camera->pl->syncdatetime) { #ifdef HAVE_LOCALTIME_R struct tm tm; #endif struct tm *xtm; time_t t; t = time (NULL); #ifdef HAVE_LOCALTIME_R if ((xtm = localtime_r (&t , &tm))) { #else if ((xtm = localtime (&t))) { #endif ret = st2205_set_time_and_date (camera, xtm); if (ret != GP_OK) { camera_exit (camera, context); return ret; } } } return GP_OK; } libgphoto2-2.5.9/camlibs/st2205/README.st2205-compression0000644000175000001440000005260512561423351017255 00000000000000History of the reverse engineering of the st2205 compression ------------------------------------------------------------ After some failed attempts by me (Hans de Goede), I asked help from Bertrik Sikken with reverse engineering the st2205 compression. He went the route of disassembling the windows binaries for uploading pictures, and wrote an algorithm description of the decompression on the picframe wiki: http://picframe.spritesserver.nl/wiki/index.php/ImageEncoding A copy of this page is included below. I used this description to write decompression code. The first version used header files with the lookup tables as C-code arrays and these header files were made by and given to me by Bertrik. I also wrote compression code by "simply" reversing the decompression algorithm. The lookup tables were a problem, as Bertrik copied them out of the windows code, and one could argue that they are copyrightable. Luckily the same tables are also present in the firmware of the picture frame, and we can read them from the frame. So the libgphoto2 st2205 camlib uses this approach to avoid any copyright issues. Below is a dump of: http://picframe.spritesserver.nl/wiki/index.php/ImageEncoding Made on 19 March 2010. Contents • 1 Compressed image format â–¡ 1.1 Introduction â–¡ 1.2 Image decoding ☆ 1.2.1 Image header ☆ 1.2.2 8x8 pixel block â—‹ 1.2.2.1 Decoding chrominance â—‹ 1.2.2.2 Decoding luminance â—‹ 1.2.2.3 Color decoding ☆ 1.2.3 Shuffling/unshuffling â–¡ 1.3 Table overview Compressed image format Images written on the keychain by the Photoviewer application are stored in a compressed form. This section describes the compressed image format. NOTE: code for reading images from a ST2205-based picture photoframe has been included now (march 2010) in gphoto SVN Introduction The photo keychain can contain several images. A simple directory-like structure starting at address 0 contains pointers to where the actual compressed images are stored. Basic principles used in the encoding: • 8x8 image blocks: an image has a dimension of 128x128 pixels and is subdivided into 256 blocks of 8x8 pixels each. • YUV-like encoding: each of these 8x8 pixel blocks is separated into a brightness component and two color components and independently encoded by a lossy compression algorithm. • block shuffling: the order in which the blocks are encoded is usually not simply linear top-down left-right, but is controlled by one of several "shuffling tables" that determine where each decoded block goes into the final image. By showing the decoding process in real time and using a different shuffling table for each picture, the photo key chain can create various transition effects between the previously decoded photo and the currently decoding photo. Note the above (and below) 128x128 resolution and thus 256 blocks assumes a frame with a lcd a resolution of 128x128, for displays with a different reslution this numbers change accordingly. Image decoding An image is encoded as a 16-byte image header, followed by the 256 blocks encoding each for an area of 8x8 pixels. Typically, each 8x8 block is encoded using 48 bytes (or in some special cases 56 or 64 bytes, see below), this means a total size of 12304 bytes. Uncompressed, the image would require 32768 bytes (assuming 16-bit RGB565 format), saving space by a factor of about 2.66. Image header An image starts with a 16-byte header: ┌─────────┬───────────────────────────────────────────────────────────────┠│ Byte │ Meaning │ ├─────────┼───────────────────────────────────────────────────────────────┤ │0x00 │Image marker with a fixed value of 0xF5 │ ├─────────┼───────────────────────────────────────────────────────────────┤ │0x01/0x02│Image width (0x80) encoded as big-endian │ ├─────────┼───────────────────────────────────────────────────────────────┤ │0x03/0x04│Image height (0x80) encoded as big-endian │ ├─────────┼───────────────────────────────────────────────────────────────┤ │0x05/0x06│Number of 8x8 blocks in the image (0x100) encoded as big-endian│ ├─────────┼───────────────────────────────────────────────────────────────┤ │0x07 │Shuffle pattern to use │ ├─────────┼───────────────────────────────────────────────────────────────┤ │0x08 │Unknown, bits 1 and 2 carry some special meaning. Usually │ │ │contains value 0x04. │ ├─────────┼───────────────────────────────────────────────────────────────┤ │ │Related to block shuffling, exact meaning unknown. Contain 0xFF│ │0x09 │for shuffle pattern 1, for other shuffle patterns it contains a│ │ │value depending on the picture frame resolution. For 128x128 │ │ │frames it contains 1, for 96x64 frames it contains 0. │ ├─────────┼───────────────────────────────────────────────────────────────┤ │0x0A/0x0B│Length of following image data │ ├─────────┼───────────────────────────────────────────────────────────────┤ │0x0C-0x0F│Padding/unused (all 0x00) │ └─────────┴───────────────────────────────────────────────────────────────┘ 8x8 pixel block The 8x8 pixel block is encoded further as a variable length block, as follows: ┌──────┬───────┬──────────────────────────────────────────────────────────┠│Offset│Meaning│ Remark │ ├──────┼───────┼──────────────────────────────────────────────────────────┤ │ │Length │Bit 0-6 is the length of the rest of the block (often │ │0x00 │byte │0x2F). Bit 7 selects between 2-bit and 4-bit luma decoding│ │ │ │mode │ ├──────┼───────┼──────────────────────────────────────────────────────────┤ │ │Luma Y │Bit 0-6 is the base offset of the luminance channel for │ │0x01 │byte │every pixel in the block. Bit 7 selects between two │ │ │ │luminance patterns tables (LUMA1 or LUMA2) │ ├──────┼───────┼──────────────────────────────────────────────────────────┤ │ │Chroma │Bit 0-6 is the base offset of the U chrominance channel │ │0x02 │U byte │for every pixel in the block. Bit 7 indicates extended │ │ │ │decoding of this chrominance channel │ ├──────┼───────┼──────────────────────────────────────────────────────────┤ │ │Chroma │Bit 0-6 is the base offset of the V chrominance channel │ │0x03 │V byte │for every pixel in the block. Bit 7 indicates extended │ │ │ │decoding of this chrominance channel │ ├──────┼───────┼──────────────────────────────────────────────────────────┤ │0x04 │Chroma │Variable length chrominance channel U decoding info, see │ │ │U data │below │ ├──────┼───────┼──────────────────────────────────────────────────────────┤ │... │Chroma │Variable length chrominance channel V decoding info, see │ │ │V data │below │ ├──────┼───────┼──────────────────────────────────────────────────────────┤ │... │Luma Y │Variable length luminance channel decoding info, see below│ │ │data │ │ └──────┴───────┴──────────────────────────────────────────────────────────┘ Decoding chrominance Chrominance is encoded with a reduced resolution of 4x4 "pixels" per block. The chrominance decoding info consists of: ┌─────────┬──────────┬────────────────────────────────────────────────────┠│ Offset │ Meaning │ Remark │ ├─────────┼──────────┼────────────────────────────────────────────────────┤ │ │Pattern │Index into a color base pattern table (CHROMA). The │ │0x00 │byte A │table entry contains the pattern for the top 8 │ │ │ │chroma pixels. │ ├─────────┼──────────┼────────────────────────────────────────────────────┤ │ │Pattern │Index into a color base pattern table (CHROMA). The │ │0x01 │byte B │table entry contains the pattern for the bottom 8 │ │ │ │chroma pixels. │ ├─────────┼──────────┼────────────────────────────────────────────────────┤ │ │ │Optional correction items for each chroma pixel │ │0x02-0x09│Correction│(using table CORR). This part is only present when │ │ │ │bit7 of the chroma byte is set. │ └─────────┴──────────┴────────────────────────────────────────────────────┘ The chrominance value is basically the sum of: 1. chrominance base value (from the chroma U or V byte minus 0x40) 2. one of the two base patterns selected from table CHROMA using pattern byte A and B. 3. optionally a set of correction values selected from table CORR (very much like luminance) Chroma pixels in a segment are arranged in the following pattern: A00 A01 A02 A03 A04 A05 A06 A07 B00 B01 B02 B03 B04 B05 B06 B07 where Axx indicates data looked up using pattern byte A, and Bxx data looked up using pattern byte B. Note that the chroma info per channel (U and V) is either 2 or 10 bytes, which is why the total block size can be one of 48, 56, or 64 bytes (resp no corr, corr for 1 channel, corr for both channels). By far most blocks are 48 bytes big. Decoding luminance The luminance decoding info consists of: ┌─────────┬───────────────────────────────────────────────────────────────┠│ Offset │ Meaning │ ├─────────┼───────────────────────────────────────────────────────────────┤ │0x00-0x07│A set of indexes into table LUMA1 or LUMA2 to select a "base │ │ │pattern" for each row of pixels inside a block. │ ├─────────┼───────────────────────────────────────────────────────────────┤ │ │Correction items for each pixel in the block, where each │ │0x08-0x27│correction item is encoded in 4 bits. Each correction item is │ │ │actually an index into table CORR storing a value that is added│ │ │to the luminance value of the pixel. │ └─────────┴───────────────────────────────────────────────────────────────┘ In short, the luminance channel of each pixel is basically the sum of: 1. luminance base value as encoded in byte 0x01 2. one of the base patterns selected from table LUMA1 or LUMA2 using bytes 0x00-0x07 (one byte for one pattern per row of 8 pixels) 3. one of the correction values selected from table CORR using the nibbles in bytes 0x08-0x27. This uses one nibble for each pixel, with the high 4 bits (high nibble) of a byte coding the correction for the first pixel that bytes corrects, and the low 4 bits code the correction for the second pixel. The first byte (at offset 0x08), codes the correction for pixel 00 and 01, etc. Pixels are arranged in the following pattern: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ... 38 39 3A 3B 3C 3D 3E 3F Color decoding The color space used in the images is a kind of YUV, using one luminance channel (called Y here) and two chrominance channels (called U and V here), as follows: R = 2 * (Y + V) G = 2 * (Y - U - V) B = 2 * (Y + U) Any underflows/overflows during the calculation of the RGB values should be saturated to either 0 or 255 respectively. And conversely (during encode): Y = (R + G + B) / 6 U = B/2 - Y V = R/2 - Y where U and V should be constrained to the range -64 to +63. Shuffling/unshuffling Blocks of 8x8 pixels are stored in a shuffled sequence. The choice of the shuffle pattern is stored in byte 0x07 of the image header. The shuffle pattern is stored in table SHUFFLEx, which contains the (x,y) coordinates of each 8x8 pixel block. Currently there are 7 known shuffle patterns. Table overview Several tables are involved in encoding/decoding. Below is an overview of the various tables, their properties and what they are used for ┌────────┬────────────┬───────────────────────────────────────────────────┠│ Table │ Dimension │ Remark │ ├────────┼────────────┼───────────────────────────────────────────────────┤ │ │256 entries │Entry contains brightness patterns for 1 row of 8 │ │LUMA1 │of 8 signed │pixels within an 8x8 block. │ │ │words │ │ ├────────┼────────────┼───────────────────────────────────────────────────┤ │ │256 entries │Entry contains brightness patterns for 1 row of 8 │ │LUMA2 │of 8 signed │pixels within an 8x8 block. Alternate table. │ │ │words │ │ ├────────┼────────────┼───────────────────────────────────────────────────┤ │ │256 entries │Entry contains chroma patterns for 2 rows of 4 │ │CHROMA │of 8 signed │pixels within an 4x4 chroma block. │ │ │words │ │ ├────────┼────────────┼───────────────────────────────────────────────────┤ │ │256 entries │Entry contains the (x,y) coordinates for an 8x8 │ │SHUFFLEx│of 2 bytes │block. There are several tables like this, each one│ │ │ │encoding for a different shuffle pattern. │ ├────────┼────────────┼───────────────────────────────────────────────────┤ │ │16 entries │Correction values that are applied for each pixel. │ │CORR │of 1 signed │Values in this table: │ │ │word │-26,-22,-18,-14,-11,-7,-4,-1,1,4,7,11,14,18,22,26 │ └────────┴────────────┴───────────────────────────────────────────────────┘ The LUMA1, LUMA2 and CHROMA tables are stored inside the picframe in 16 bits signed (2's complement) LE byte order format. LUMA1 starts at 0x8477, LUMA2 at 0x9477, CHROMA at 0xA477. These 3 tables are directly followed at 0xB477 by various shuffle tables, which contain x, y coordinate pairs (1 byte for each). There are a number of sets of shuffle tables, for different display resolutions. There are 8 or 7 tables per set, the first 2 tables are "generated" (0 = row by row, 1 = column by column), then 6 or 5 tables per resolution in ROM: ┌──────────┬──────┬─────────────────────┠│Resolution│start │Number of sets in ROM│ ├──────────┼──────┼─────────────────────┤ │128 x 160 │0xB477│6 │ ├──────────┼──────┼─────────────────────┤ │128 x 128 │0xC377│5 │ ├──────────┼──────┼─────────────────────┤ │120 x 160 │0xCD77│5 │ ├──────────┼──────┼─────────────────────┤ │96 x 64 │0xD92F│5 │ └──────────┴──────┴─────────────────────┘ Retrieved from "http://picframe.spritesserver.nl/wiki/index.php/ ImageEncoding" Powered by MediaWiki GNU Free Documentation License 1.2 • This page was last modified 20:49, 16 March 2010. • This page has been accessed 4,256 times. • Content is available under GNU Free Documentation License 1.2. libgphoto2-2.5.9/camlibs/st2205/README.st22050000644000175000001440000000300312561423351014702 00000000000000About this driver ================= This driver allows you to upload / download and delete pictures from Sitronix st2205 based picture frames. This are small, cheap picture frames with a 1.1, 1.5, 1.8 or 2.4 inch display and a USB id of 1403:0001 st2205 based frames present themselves as a regular usb mass storage device, but cannot be used as a normal disk! Communication with the device happens by a special protocol which consist of reading / writing sectors of the disk at certain magic offsets. This driver uses the special "usbdiskdirect" port driver, which allows the direct sector access the camlib for these devices needs. About the st2205 access protocol ================================ The protocol for these devices was reverse engineered by Jeroen Domburg, who has created a hack which allows directly displaying an image on them from the PC (IOW using these picture frames as a second monitor). See the spritesmods wiki: http://picframe.spritesserver.nl/ . Many thanks to Jeroen for this work, on which this camlib is based! The protocol basically allows raw access to the flash chip on the picture frame, for example you need to do separate erase and program commands, and as an erase block is larger then what you program in a single program command you must make sure to always reprogram the entire range the single erase command cleared (and read the entire range before clearing, so you can write it back). About the st2205 image compression ================================== See README.st2205-compression. libgphoto2-2.5.9/camlibs/st2205/st2205_decode.c0000644000175000001440000002656612610415536015516 00000000000000/* Sitronix st2205 picframe decompression and compression code * * Copyright (c) 2010 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #include "config.h" #include #include #ifdef HAVE_LIBGD # include #endif #include "st2205.h" #ifdef HAVE_LIBGD #define CLAMP256(x) (((x) > 255) ? 255 : (((x) < 0) ? 0 : (x))) #define CLAMP64S(x) (((x) > 63) ? 63 : (((x) < -64) ? -64 : (x))) static const int16_t st2205_corr_table[16] = { -26,-22,-18,-14,-11,-7,-4,-1,1,4,7,11,14,18,22,26 }; static int st2205_decode_block(CameraPrivateLibrary *pl, unsigned char *src, int src_length, int **dest, int dest_x, int dest_y) { const st2205_lookup_row *luma_table, *chroma_table; int y_base, uv_base[2], uv_corr[2]; int16_t Y[64], UV[2][16]; int x, y, r, g, b, uv; if (src_length < 4) { gp_log (GP_LOG_ERROR, "st2205", "short image block"); return GP_ERROR_CORRUPTED_DATA; } if (src[0] & 0x80) { gp_log (GP_LOG_ERROR, "st2205", "2 luma bits per pixel pictures are not supported"); return GP_ERROR_CORRUPTED_DATA; } y_base = src[1] & 0x7f; luma_table = st2205_lookup[src[1] >> 7]; chroma_table = st2205_lookup[2]; uv_base[0] = src[2] & 0x7f; uv_corr[0] = src[2] & 0x80; uv_base[1] = src[3] & 0x7f; uv_corr[1] = src[3] & 0x80; if (src_length != (4 + (uv_corr[0]? 10:2) + (uv_corr[1]? 10:2) + 40)) { GP_DEBUG ("src_length: %d, u_corr: %x v_corr: %x\n", src_length, uv_corr[0], uv_corr[1]); gp_log (GP_LOG_ERROR, "st2205", "invalid block length"); return GP_ERROR_CORRUPTED_DATA; } src += 4; for (uv = 0; uv < 2; uv++) { for (y = 0; y < 4; y++) for (x = 0; x < 4; x++) UV[uv][y * 4 + x] = uv_base[uv] - 64 + chroma_table[src[y / 2]][(y & 1) * 4 + x]; src += 2; if (uv_corr[uv]) { for (x = 0; x < 16; x+= 2) { uint8_t corr = src[x / 2]; UV[uv][x ] += st2205_corr_table[corr >> 4]; UV[uv][x + 1] += st2205_corr_table[corr & 0x0f]; } src += 8; } } for (y = 0; y < 8; y++) { memcpy(Y + y * 8, luma_table[src[y]], 8 * sizeof(uint16_t)); for (x = 0; x < 8; x+= 2) { uint8_t corr = src[8 + y * 4 + x / 2]; Y[y * 8 + x ] += y_base + st2205_corr_table[corr >> 4]; Y[y * 8 + x + 1] += y_base + st2205_corr_table[corr & 0x0f]; } } for (y = 0; y < 8; y++) { for (x = 0; x < 8; x++) { r = Y[y * 8 + x] + UV[1][(y / 2) * 4 + x / 2]; g = Y[y * 8 + x] - UV[0][(y / 2) * 4 + x / 2] - UV[1][(y / 2) * 4 + x / 2]; b = Y[y * 8 + x] + UV[0][(y / 2) * 4 + x / 2]; dest[dest_y + y][dest_x + x] = gdTrueColor (CLAMP256(2 * r), CLAMP256(2 * g), CLAMP256(2 * b)); } } return 0; } int st2205_decode_image(CameraPrivateLibrary *pl, unsigned char *src, int **dest) { int ret, block = 0, block_length; struct st2205_coord *shuffle_table; struct st2205_image_header *header = (struct st2205_image_header*)src; uint8_t shuffle_pattern = header->shuffle_table; int src_length = be16toh (header->length); /* Skip the header */ src += sizeof(*header); if (shuffle_pattern >= pl->no_shuffles) { gp_log (GP_LOG_ERROR, "st2205", "invalid shuffle pattern"); return GP_ERROR_CORRUPTED_DATA; } shuffle_table = pl->shuffle[shuffle_pattern]; while (src_length && block < (pl->width * pl->height / 64)) { block_length = (src[0] & 0x7f) + 1; if (block_length > src_length) { gp_log (GP_LOG_ERROR, "st2205", "block %d goes outside of image buffer", block); return GP_ERROR_CORRUPTED_DATA; } ret = st2205_decode_block(pl, src, block_length, dest, shuffle_table[block].x, shuffle_table[block].y); if (ret < 0) return ret; src += block_length; src_length -= block_length; block++; } if (src_length) { gp_log (GP_LOG_ERROR, "st2205", "data remaining after decoding %d blocks", block); return GP_ERROR_CORRUPTED_DATA; } if (block != (pl->width * pl->height / 64)) { gp_log (GP_LOG_ERROR, "st2205", "image only contained %d of %d blocks", block, pl->width * pl->height / 64); return GP_ERROR_CORRUPTED_DATA; } return 0; } static uint8_t st2205_find_closest_match(const st2205_lookup_row *table, int16_t *row, int *smallest_diff_ret) { int i, j; uint8_t closest_match = 0; unsigned int diff, smallest_diff = -1; for (i = 0; i < 256; i++) { diff = 0; for (j = 0; j < 8; j++) diff += (row[j] - table[i][j]) * (row[j] - table[i][j]); if (diff < smallest_diff) { smallest_diff = diff; closest_match = i; } } if (smallest_diff_ret) *smallest_diff_ret = smallest_diff; return closest_match; } static uint8_t st2205_closest_correction(int16_t corr) { int i, diff, smallest_diff; uint8_t closest = 0; smallest_diff = abs(st2205_corr_table[0] - corr); for (i = 1; i < 16; i++) { diff = abs(st2205_corr_table[i] - corr); if (diff < smallest_diff) { smallest_diff = diff; closest = i; } } return closest; } static int st2205_code_block(CameraPrivateLibrary *pl, int **src, int src_x, int src_y, unsigned char *dest, int allow_uv_corr) { const st2205_lookup_row *luma_table; int y_base, uv_base[2]; int16_t Y[64], UV[2][16]; uint8_t corr1, corr2, *pattern; int x, y, r, g, b, uv, diff1, diff2, used = 0; /* Step 1 convert to "YUV" */ for (y = 0; y < 8; y++) { for (x = 0; x < 8; x++) { int p = src[src_y + y][src_x + x]; Y[y * 8 + x] = (gdTrueColorGetRed(p) + gdTrueColorGetGreen(p) + gdTrueColorGetBlue(p)) / 6; } } for (y = 0; y < 4; y++) { for (x = 0; x < 4; x++) { int p1 = src[src_y + y ][src_x + x ]; int p2 = src[src_y + y ][src_x + x + 1]; int p3 = src[src_y + y + 1][src_x + x ]; int p4 = src[src_y + y + 1][src_x + x + 1]; r = gdTrueColorGetRed(p1) + gdTrueColorGetRed(p2) + gdTrueColorGetRed(p3) + gdTrueColorGetRed(p4); g = gdTrueColorGetGreen(p1) + gdTrueColorGetGreen(p2) + gdTrueColorGetGreen(p3) + gdTrueColorGetGreen(p4); b = gdTrueColorGetBlue(p1) + gdTrueColorGetBlue(p2) + gdTrueColorGetBlue(p3) + gdTrueColorGetBlue(p4); uv = (b * 3 - (r + g + b)) / 24; UV[0][y * 4 + x] = CLAMP64S(uv); uv = (r * 3 - (r + g + b)) / 24; UV[1][y * 4 + x] = CLAMP64S(uv); } } /* Step 2a calculate base values */ y_base = 0; for (x = 0; x < 64; x++) y_base += Y[x]; y_base = y_base / 64; for (uv = 0; uv < 2; uv++) { uv_base[uv] = 0; for (x = 0; x < 16; x++) uv_base[uv] += UV[uv][x]; uv_base[uv] = uv_base[uv] / 16; } dest[1] = y_base; dest[2] = uv_base[0] + 64; dest[3] = uv_base[1] + 64; used = 4; /* Step 2b adjust values for base values and normalize */ for (x = 0; x < 64; x++) Y[x] -= y_base; for (uv = 0; uv < 2; uv++) for (x = 0; x < 16; x++) UV[uv][x] -= uv_base[uv]; /* Step 3 encode chroma values */ for (uv = 0; uv < 2; uv++) { pattern = dest + used; dest[used++] = st2205_find_closest_match (st2205_lookup[2], &UV[uv][0], &diff1); dest[used++] = st2205_find_closest_match (st2205_lookup[2], &UV[uv][8], &diff2); if ((diff1 > 64 || diff2 > 64) && allow_uv_corr) { dest[2 + uv] |= 0x80; for (x = 0; x < 16; x+= 2) { corr1 = st2205_closest_correction(UV[uv][x] - st2205_lookup[2][pattern[x / 8]][x % 8]); corr2 = st2205_closest_correction(UV[uv][x + 1] - - st2205_lookup[2][pattern[x / 8]][x % 8 + 1]); dest[used++] = (corr1 << 4) | corr2; } } } /* Step 4a encode luma values, choose luma table */ diff1 = 0; diff2 = 0; for (y = 0; y < 8; y++) { st2205_find_closest_match(st2205_lookup[0], &Y[y * 8], &x); diff1 += x; st2205_find_closest_match(st2205_lookup[1], &Y[y * 8], &x); diff2 += x; } if (diff1 <= diff2) { luma_table = st2205_lookup[0]; dest[1] |= 0x00; } else { luma_table = st2205_lookup[1]; dest[1] |= 0x80; } /* Step 4b encode luma values, choose luma patterns */ pattern = dest + used; for (y = 0; y < 8; y++) dest[used++] = st2205_find_closest_match (luma_table, &Y[y * 8], NULL); /* Step 4c encode luma values, add luma correction values */ for (y = 0; y < 8; y++) { for (x = 0; x < 8; x += 2) { corr1 = st2205_closest_correction (Y[y * 8 + x] - luma_table[pattern[y]][x]); corr2 = st2205_closest_correction(Y[y * 8 + x + 1] - luma_table[pattern[y]][x + 1]); dest[used++] = (corr1 << 4) | corr2; } } dest[0] = used - 1; return used; } int st2205_code_image(CameraPrivateLibrary *pl, int **src, unsigned char *dest, uint8_t shuffle_pattern, int allow_uv_corr) { int block = 0, used = 0, ret; struct st2205_coord *shuffle_table; struct st2205_image_header *header = (struct st2205_image_header*)dest; /* Make room for the header */ dest += sizeof(*header); if (shuffle_pattern >= pl->no_shuffles) { gp_log (GP_LOG_ERROR, "st2205", "invalid shuffle pattern"); return GP_ERROR_BAD_PARAMETERS; } shuffle_table = pl->shuffle[shuffle_pattern]; while (block < (pl->width * pl->height / 64)) { ret = st2205_code_block (pl, src, shuffle_table[block].x, shuffle_table[block].y, dest + used, allow_uv_corr); if (ret < 0) return ret; used += ret; block++; } /* Write the header now that we know the size */ memset(header, 0, sizeof(*header)); header->marker = ST2205_HEADER_MARKER; header->width = htobe16(pl->width); header->height = htobe16(pl->height); header->blocks = htobe16((pl->width * pl->height) / 64); header->shuffle_table = shuffle_pattern; header->unknown2 = 0x04; header->unknown3 = pl->unknown3[shuffle_pattern]; header->length = htobe16(used); return used + sizeof(*header); } int st2205_rgb565_to_rgb24(CameraPrivateLibrary *pl, unsigned char *src, int **dest) { int x,y; for (y = 0; y < pl->height; y++) { for (x = 0; x < pl->width; x++) { unsigned short w = src[0] << 8 | src[1]; dest[y][x] = gdTrueColor ((w >> 8) & 0xf8, (w >> 3) & 0xfb, (w << 3) & 0xf8); src += 2; } } return GP_OK; } int st2205_rgb24_to_rgb565(CameraPrivateLibrary *pl, int **src, unsigned char *dest) { int x,y; for (y = 0; y < pl->height; y++) { for (x = 0; x < pl->width; x++) { unsigned short w; int r = gdTrueColorGetRed(src[y][x]); int g = gdTrueColorGetGreen(src[y][x]); int b = gdTrueColorGetBlue(src[y][x]); w = ((r << 8) & 0xf100) | ((g << 3) & 0x07e0) | ((b >> 3) & 0x001f); *dest++ = w >> 8; *dest++ = w & 0xff; } } return pl->height * pl->width * 2; } #else int st2205_decode_image(CameraPrivateLibrary *pl, unsigned char *src, int **dest) { return GP_ERROR_NOT_SUPPORTED; } int st2205_code_image(CameraPrivateLibrary *pl, int **src, unsigned char *dest, uint8_t shuffle_pattern, int allow_uv_corr) { return GP_ERROR_NOT_SUPPORTED; } int st2205_rgb565_to_rgb24(CameraPrivateLibrary *pl, unsigned char *src, int **dest) { return GP_ERROR_NOT_SUPPORTED; } int st2205_rgb24_to_rgb565(CameraPrivateLibrary *pl, int **src, unsigned char *dest) { return GP_ERROR_NOT_SUPPORTED; } #endif libgphoto2-2.5.9/camlibs/st2205/st2205.c0000644000175000001440000007242112610415536014202 00000000000000/* Sitronix st2205 picframe access library * * Copyright (c) 2010 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #define _BSD_SOURCE #define _POSIX_C_SOURCE 1 #include "config.h" #include #include #include #include <_stdint.h> #include #include #include #ifdef HAVE_SYS_MMAN_H # include #endif #include #include #include #include "st2205.h" struct image_table_entry { uint8_t present; /* 1 when this image is present, 0 when deleted */ uint32_t address; /* memory address where this image is stored */ char name[ST2205_FILENAME_LENGTH + 1]; /* Image name (11 bytes) */ } __attribute__((packed)); /* The st2205 port driver's write and read functions require page aligned buffers, as they use O_DIRECT. */ static char *st2205_malloc_page_aligned(int size) { #ifdef HAVE_SYS_MMAN_H int fd; char *aligned; fd = open ("/dev/zero", O_RDWR); aligned = mmap (0, size, PROT_READ|PROT_WRITE,MAP_PRIVATE, fd, 0); if (aligned == MAP_FAILED) return NULL; return aligned; #else /* hope for the best */ return malloc(size); #endif } static void st2205_free_page_aligned(char *aligned, int size) { #ifdef HAVE_SYS_MMAN_H if (aligned != NULL) munmap(aligned, size); #else free (aligned); #endif } static int st2205_send_command(Camera *camera, int cmd, int arg1, int arg2) { char *buf = camera->pl->buf; if (gp_port_seek (camera->port, ST2205_CMD_OFFSET, SEEK_SET) != ST2205_CMD_OFFSET) return GP_ERROR_IO; memset(buf, 0, 512); buf[0] = cmd; buf[1] = (arg1 >> 24) & 0xff; buf[2] = (arg1 >> 16) & 0xff; buf[3] = (arg1 >> 8) & 0xff; buf[4] = (arg1 ) & 0xff; buf[5] = (arg2 >> 24) & 0xff; buf[6] = (arg2 >> 16) & 0xff; buf[7] = (arg2 >> 8) & 0xff; buf[8] = (arg2 ) & 0xff; if (gp_port_write (camera->port, buf, 512) != 512) return GP_ERROR_IO_WRITE; return GP_OK; } static int st2205_read_block(Camera *camera, int block, char *buf) { int ret; if (camera->pl->mem_dump) { ret = fseek(camera->pl->mem_dump, block * ST2205_BLOCK_SIZE, SEEK_SET); if (ret) { gp_log (GP_LOG_ERROR, "st2205", "seeking in memdump: %s", strerror(errno)); return GP_ERROR_IO_READ; } ret = fread(buf, 1, ST2205_BLOCK_SIZE, camera->pl->mem_dump); if (ret != ST2205_BLOCK_SIZE) { if (ret < 0) gp_log (GP_LOG_ERROR, "st2205", "reading memdump: %s", strerror(errno)); else gp_log (GP_LOG_ERROR, "st2205", "short read reading from memdump"); return GP_ERROR_IO_READ; } } else { CHECK (st2205_send_command (camera, 4, block, ST2205_BLOCK_SIZE)) if (gp_port_seek (camera->port, ST2205_READ_OFFSET, SEEK_SET) != ST2205_READ_OFFSET) return GP_ERROR_IO; if (gp_port_read (camera->port, buf, ST2205_BLOCK_SIZE) != ST2205_BLOCK_SIZE) return GP_ERROR_IO_READ; } return GP_OK; } static int st2205_write_block(Camera *camera, int block, char *buf) { int ret; if (camera->pl->mem_dump) { ret = fseek(camera->pl->mem_dump, block * ST2205_BLOCK_SIZE, SEEK_SET); if (ret) { gp_log (GP_LOG_ERROR, "st2205", "seeking in memdump: %s", strerror(errno)); return GP_ERROR_IO_WRITE; } ret = fwrite(buf, 1, ST2205_BLOCK_SIZE, camera->pl->mem_dump); if (ret != ST2205_BLOCK_SIZE) { gp_log (GP_LOG_ERROR, "st2205", "writing memdump: %s", strerror(errno)); return GP_ERROR_IO_WRITE; } } else { /* Prepare for write */ CHECK (st2205_send_command (camera, 3, block, ST2205_BLOCK_SIZE)) /* Write */ if (gp_port_seek (camera->port, ST2205_WRITE_OFFSET, SEEK_SET) != ST2205_WRITE_OFFSET) return GP_ERROR_IO; if (gp_port_write (camera->port, buf, ST2205_BLOCK_SIZE) != ST2205_BLOCK_SIZE) return GP_ERROR_IO_WRITE; /* Commit */ CHECK (st2205_send_command (camera, 2, block, ST2205_BLOCK_SIZE)) /* Read commit response (ignored) */ if (gp_port_seek (camera->port, ST2205_READ_OFFSET, SEEK_SET) != ST2205_READ_OFFSET) return GP_ERROR_IO; if (gp_port_read (camera->port, camera->pl->buf, 512) != 512) return GP_ERROR_IO_READ; } return GP_OK; } static int st2205_check_block_present(Camera *camera, int block) { int ret; if ((block + 1) * ST2205_BLOCK_SIZE > camera->pl->mem_size) { gp_log (GP_LOG_ERROR, "st2205", "read beyond end of memory"); return GP_ERROR_CORRUPTED_DATA; } if (camera->pl->block_is_present[block]) return GP_OK; ret = st2205_read_block(camera, block, camera->pl->mem + block * ST2205_BLOCK_SIZE); if (ret == 0) camera->pl->block_is_present[block] = 1; return ret; } static int st2205_detect_mem_size(Camera *camera) { char *buf0, *buf1; int i, ret; buf0 = st2205_malloc_page_aligned(ST2205_BLOCK_SIZE); buf1 = st2205_malloc_page_aligned(ST2205_BLOCK_SIZE); if (!buf0 || !buf1) { st2205_free_page_aligned(buf0, ST2205_BLOCK_SIZE); st2205_free_page_aligned(buf1, ST2205_BLOCK_SIZE); return GP_ERROR_NO_MEMORY; } ret = st2205_read_block(camera, 0, buf0); if (ret) return ret; for (i = 0; i < 3; i++) { ret = st2205_read_block(camera, (524288 / ST2205_BLOCK_SIZE) << i, buf1); if (ret) return ret; if (memcmp(buf0, buf1, ST2205_BLOCK_SIZE) == 0) break; } camera->pl->mem_size = 524288 << i; st2205_free_page_aligned(buf0, ST2205_BLOCK_SIZE); st2205_free_page_aligned(buf1, ST2205_BLOCK_SIZE); return GP_OK; } static int st2205_read_mem(Camera *camera, int offset, void *buf, int len) { int to_copy, block = offset / ST2205_BLOCK_SIZE; while (len) { CHECK (st2205_check_block_present (camera, block)) to_copy = ST2205_BLOCK_SIZE - (offset % ST2205_BLOCK_SIZE); if (to_copy > len) to_copy = len; memcpy(buf, camera->pl->mem + offset, to_copy); buf += to_copy; len -= to_copy; offset += to_copy; block++; } return GP_OK; } static int st2205_write_mem(Camera *camera, int offset, void *buf, int len) { int to_copy, block = offset / ST2205_BLOCK_SIZE; /* Don't allow writing to the firmware space */ if ((offset + len) > (camera->pl->mem_size - camera->pl->firmware_size)) { gp_log (GP_LOG_ERROR, "st2205", "write beyond end of memory"); return GP_ERROR_CORRUPTED_DATA; } while (len) { CHECK (st2205_check_block_present (camera, block)) to_copy = ST2205_BLOCK_SIZE - (offset % ST2205_BLOCK_SIZE); if (to_copy > len) to_copy = len; memcpy(camera->pl->mem + offset, buf, to_copy); camera->pl->block_dirty[block] = 1; buf += to_copy; len -= to_copy; offset += to_copy; block++; } return GP_OK; } static int st2205_read_file_count(Camera *camera) { uint8_t count; CHECK (st2205_read_mem (camera, ST2205_COUNT_OFFSET, &count, 1)) return count; } static int st2205_write_file_count(Camera *camera, int count) { uint8_t c = count; CHECK (st2205_write_mem (camera, ST2205_COUNT_OFFSET, &c, 1)) return GP_OK; } static int st2205_calc_fat_checksum(Camera *camera) { int i, checksum = 0; CHECK (st2205_check_block_present(camera, 0)) /* Calculate the "FAT" checksum, note that the present bits are skipped (as is the checksum location itself). The picframe itself does not care about this, but the windows software does! */ for (i = 2; i < ST2205_FAT_SIZE; i++) if (i % 16) checksum += (uint8_t)camera->pl->mem[i]; return checksum & 0xffff; } static int st2205_check_fat_checksum(Camera *camera) { int checksum, expected_checksum; CHECK (st2205_check_block_present (camera, 0)) checksum = le16atoh ((uint8_t *)camera->pl->mem); expected_checksum = st2205_calc_fat_checksum (camera); if (expected_checksum < 0) return expected_checksum; if (checksum != expected_checksum) { gp_log (GP_LOG_ERROR, "st2205", "image table checksum mismatch"); return GP_ERROR_CORRUPTED_DATA; } return GP_OK; } static int st2205_update_fat_checksum(Camera *camera) { int checksum; uint8_t buf[2]; checksum = st2205_calc_fat_checksum(camera); if (checksum < 0) return checksum; htole16a(buf, checksum); return st2205_write_mem (camera, 0, buf, 2); } static int st2205_copy_fat(Camera *camera) { int i; /* The "FAT" repeats itself on some frames, copy it over */ CHECK (st2205_check_block_present (camera, 0)) for (i = 1; i < camera->pl->no_fats; i++) CHECK (st2205_write_mem (camera, i * ST2205_FAT_SIZE, camera->pl->mem, ST2205_FAT_SIZE)) return GP_OK; } static int st2205_add_picture(Camera *camera, int idx, const char *filename, int start, int shuffle, unsigned char *buf, int size) { int count; struct image_table_entry entry; count = st2205_read_file_count(camera); if (count < 0) return count; if (idx > count) { gp_log (GP_LOG_ERROR, "st2205", "adding picture beyond end of FAT"); return GP_ERROR_BAD_PARAMETERS; } memset(&entry, 0, sizeof(entry)); entry.present = 1; entry.address = htole32(start); snprintf(entry.name, sizeof(entry.name), "%s", filename); CHECK (st2205_write_mem (camera, ST2205_FILE_OFFSET (idx), &entry, sizeof(entry))) if (idx == count) { /* update picture count */ count++; CHECK (st2205_write_file_count (camera, count)) /* Add a fake last entry, with no name pointing to beginning of freespace, neither the windows software nor the picframe seem to care about this, but the windows software does this, so lets do it too. */ memset (&entry, 0, sizeof(entry)); entry.address = htole32 (start + size); CHECK (st2205_write_mem (camera, ST2205_FILE_OFFSET (count), &entry, sizeof(entry))) } CHECK (st2205_update_fat_checksum (camera)) CHECK (st2205_copy_fat (camera)) CHECK (st2205_write_mem (camera, start, buf, size)) /* Let the caller know at which index we stored the table entry */ return idx; } static int st2205_file_present(Camera *camera, int idx) { struct image_table_entry entry; CHECK (st2205_read_mem (camera, ST2205_FILE_OFFSET (idx), &entry, sizeof(entry))) return entry.present; } /***************** Begin "public" functions *****************/ /* Note this function assumes the names array is filled with zeros before it gets called */ int st2205_get_filenames(Camera *camera, st2205_filename *names) { int i, count; struct image_table_entry entry; count = st2205_read_file_count(camera); if (count < 0) return count; if (count > ST2205_MAX_NO_FILES) { gp_log (GP_LOG_ERROR, "st2205", "file table count overflow"); return GP_ERROR_CORRUPTED_DATA; } for (i = 0; i < count; i++) { CHECK (st2205_read_mem (camera, ST2205_FILE_OFFSET (i), &entry, sizeof(entry))) if (!entry.present) continue; /* Note we use memcpy as we don't want to depend on the names on the picframe being 0-terminated. We always write 0 terminated names, as does windows, but better safe then sorry. */ memcpy(names[i], entry.name, ST2205_FILENAME_LENGTH); /* Make sure a file with no name gets a "name" */ if (!names[i][0]) names[i][0] = '?'; } return GP_OK; } int st2205_read_raw_file(Camera *camera, int idx, unsigned char **raw) { struct image_table_entry entry; struct st2205_image_header header; int ret, count, size; *raw = NULL; count = st2205_read_file_count(camera); if (count < 0) return count; if (idx >= count) { gp_log (GP_LOG_ERROR, "st2205", "read file beyond end of FAT"); return GP_ERROR_BAD_PARAMETERS; } CHECK (st2205_read_mem (camera, ST2205_FILE_OFFSET (idx), &entry, sizeof(entry))) /* This should never happen */ if (!entry.present) { gp_log (GP_LOG_ERROR, "st2205", "trying to read a deleted file"); return GP_ERROR_BAD_PARAMETERS; } LE32TOH(entry.address); GP_DEBUG ("file: %d start at: %08x\n", idx, entry.address); if (camera->pl->compressed) { CHECK (st2205_read_mem (camera, entry.address, &header, sizeof(header))) if (header.marker != ST2205_HEADER_MARKER) { gp_log (GP_LOG_ERROR, "st2205", "invalid header magic"); return GP_ERROR_CORRUPTED_DATA; } BE16TOH(header.width); BE16TOH(header.height); BE16TOH(header.length); BE16TOH(header.blocks); if ((header.width != camera->pl->width) || (header.height != camera->pl->height)) { gp_log (GP_LOG_ERROR, "st2205", "picture size does not match frame size."); return GP_ERROR_CORRUPTED_DATA; } if (((header.width / 8) * (header.height / 8)) != header.blocks) { gp_log (GP_LOG_ERROR, "st2205", "invalid block count"); return GP_ERROR_CORRUPTED_DATA; } GP_DEBUG ("file: %d header read, size: %dx%d, length: %d bytes\n", idx, header.width, header.height, header.length); size = header.length + sizeof (header); } else size = camera->pl->width * camera->pl->height * 2; *raw = malloc (size); if (!*raw) { gp_log (GP_LOG_ERROR, "st2205", "allocating memory"); return GP_ERROR_NO_MEMORY; } ret = st2205_read_mem (camera, entry.address, *raw, size); if (ret < 0) { free (*raw); *raw = NULL; return ret; } return size; } int st2205_read_file(Camera *camera, int idx, int **rgb24) { int ret; unsigned char *src; CHECK (st2205_read_raw_file (camera, idx, &src)) if (camera->pl->compressed) ret = st2205_decode_image (camera->pl, src, rgb24); else ret = st2205_rgb565_to_rgb24 (camera->pl, src, rgb24); free(src); return ret; } static int st2205_real_write_file(Camera *camera, const char *filename, int **rgb24, unsigned char *buf, int shuffle, int allow_uv_corr) { int size, count; struct image_table_entry entry; struct st2205_image_header header; int i, start, end, hole_start = 0, hole_idx = 0; if (camera->pl->compressed) size = st2205_code_image (camera->pl, rgb24, buf, shuffle, allow_uv_corr); else size = st2205_rgb24_to_rgb565 (camera->pl, rgb24, buf); if (size < GP_OK) return size; count = st2205_read_file_count (camera); if (count < 0) return count; /* Try to find a large enough "hole" in the memory */ end = camera->pl->picture_start; for (i = 0; i <= count; i++) { /* Fake a present entry at the end of picture mem */ if (i == count) { entry.present = 1; start = camera->pl->mem_size - camera->pl->firmware_size; /* If the last entry in the "FAT" was present, we need to set hole_start to the end of the last picture */ if (!hole_start) { hole_start = end; hole_idx = i; } } else { CHECK (st2205_read_mem (camera, ST2205_FILE_OFFSET (i), (unsigned char *)&entry, sizeof(entry))) start = entry.address; if (entry.present) { if (camera->pl->compressed) { CHECK (st2205_read_mem (camera, start, &header, sizeof(header))) BE16TOH(header.length); end = start + sizeof(header) + header.length; } else end = start + size; } } /* If we have a hole start address look for present entries (so a hole end address), otherwise look for non present entries */ if (hole_start) { if (entry.present) { int hole_size = start - hole_start; GP_DEBUG ("found a hole at: %08x, of %d bytes " "(need %d)\n", hole_start, hole_size, size); if (hole_size < size) { /* Too small, start searching for the next hole */ hole_start = 0; continue; } /* bingo we have a large enough hole */ return st2205_add_picture(camera, hole_idx, filename, hole_start, shuffle, buf, size); } } else { if (!entry.present) { /* We have a hole starting at the end of the *previous* picture, note that end at this moment points to the end of the last present picture, as we don't set end for non present pictures, which is exactly what we want. */ hole_start = end; hole_idx = i; } } } /* No freespace found, try again with uv correction tables disabled */ if (camera->pl->compressed && allow_uv_corr) return st2205_real_write_file (camera, filename, rgb24, buf, shuffle, 0); gp_log (GP_LOG_ERROR, "st2205", "not enough freespace to add file %s", filename); return GP_ERROR_NO_SPACE; } int st2205_write_file(Camera *camera, const char *filename, int **rgb24) { /* The buffer must be large enough for the worst case scenario */ unsigned char buf[camera->pl->width * camera->pl->height * 2]; int shuffle; #ifdef HAVE_RAND_R shuffle = (long long)rand_r(&camera->pl->rand_seed) * camera->pl->no_shuffles / (RAND_MAX + 1ll); #else shuffle = (long long)rand() * camera->pl->no_shuffles / (RAND_MAX + 1ll); #endif return st2205_real_write_file (camera, filename, rgb24, buf, shuffle, 1); } int st2205_delete_file(Camera *camera, int idx) { uint8_t c = 0; int i, present, count, new_count = 0; count = st2205_read_file_count(camera); if (count < 0) return count; if (idx >= count) { gp_log (GP_LOG_ERROR, "st2205", "delete file beyond end of FAT"); return GP_ERROR_BAD_PARAMETERS; } /* Calculate new file count after the delete operation */ for (i = 0; i < count; i++) { if (i == idx) continue; present = st2205_file_present (camera, i); if (present < 0) return present; if (present) new_count = i + 1; } CHECK (st2205_write_mem (camera, ST2205_FILE_OFFSET (idx), &c, 1)) CHECK (st2205_write_file_count (camera, new_count)) CHECK (st2205_update_fat_checksum (camera)) CHECK (st2205_copy_fat (camera)) return GP_OK; } int st2205_delete_all(Camera *camera) { CHECK (st2205_check_block_present(camera, 0)) memset (camera->pl->mem + ST2205_FILE_OFFSET (0), 0, ST2205_FAT_SIZE - ST2205_FILE_OFFSET (0)); /* Mark the memory block we've directly manipulated dirty. */ camera->pl->block_dirty[0] = 1; CHECK (st2205_write_file_count (camera, 0)) CHECK (st2205_update_fat_checksum (camera)) CHECK (st2205_copy_fat (camera)) return GP_OK; } int st2205_set_time_and_date(Camera *camera, struct tm *t) { uint8_t *buf = (uint8_t *)camera->pl->buf; /* We cannot do this when operating on a dump */ if (camera->pl->mem_dump) return GP_OK; memset(buf, 0, 512); buf[0] = 6; /* cmd 6 set time */ htobe16a (buf + 1, t->tm_year + 1900); buf[3] = t->tm_mon + 1; buf[4] = t->tm_mday; buf[5] = t->tm_hour; buf[6] = t->tm_min; /* The st2205 does not allow one to set seconds, instead the seconds end up being whatever they were when the set time command is send :( */ if (gp_port_seek (camera->port, ST2205_CMD_OFFSET, SEEK_SET) != ST2205_CMD_OFFSET) return GP_ERROR_IO; if (gp_port_write (camera->port, camera->pl->buf, 512) != 512) return GP_ERROR_IO_WRITE; /* HACK, the st2205 does not like it if this is the last command send to it, so force re-reading of block 0 */ camera->pl->block_is_present[0] = 0; CHECK (st2205_check_block_present(camera, 0)) return GP_OK; } int st2205_commit(Camera *camera) { int i, j; int mem_block_size = (camera->pl->mem_size - camera->pl->firmware_size) / ST2205_BLOCK_SIZE; int erase_block_size = ST2205_ERASE_BLOCK_SIZE / ST2205_BLOCK_SIZE; for (i = 0; i < mem_block_size; i += erase_block_size) { for (j = 0; j < erase_block_size; j++) if (camera->pl->block_dirty[i + j]) break; /* If we have no dirty blocks in this erase block continue */ if (j == erase_block_size) continue; /* Make sure all data blocks in this erase block have been read before erasing the block! */ for (j = 0; j < erase_block_size; j++) CHECK (st2205_check_block_present (camera, i + j)) /* Re-write all the data blocks in this erase block! */ for (j = 0; j < erase_block_size; j++) { CHECK (st2205_write_block (camera, i + j, camera->pl->mem + (i + j) * ST2205_BLOCK_SIZE)) camera->pl->block_dirty[i + j] = 0; } } return GP_OK; } static int st2205_init(Camera *camera) { uint8_t *shuffle_src; int x, y, i, j, shuffle_size, checksum; int is240x320 = 0; const struct { int width, height, no_tables, usable_tables; unsigned char unknown3[8]; } shuffle_info[] = { { 128, 160, 8, 7, /* Last shuffle table does not work ?? */ { 0xff, 0xff, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 }, }, { 128, 128, 7, 7, { 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01 }, }, { 120, 160, 7, 7, { 0xff, 0xff, 0x04, 0x04, 0x04, 0x04, 0x04 }, }, { 96, 64, 7, 7, { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 }, }, { 0, 0, 0 } }; const int uncompressed_firmware_checksums[] = { 0x00ab02fc, /* Frame 96x64 from blokker (Netherlands) */ 0x00aa8060, /* Blokker frame with picframe hacked firmware */ 0 }; GP_DEBUG ("st2205_init called"); CHECK (st2205_detect_mem_size(camera)) if ((camera->pl->width % 8) || (camera->pl->height % 8)) { gp_log (GP_LOG_ERROR, "st2205", "lcd width and height must be a multiple of 8"); return GP_ERROR_IO; } /* Some 240x320 models report a screen resolution of 320x240, but their file headers are for 240x320, swap. */ if (camera->pl->width == 320 && camera->pl->height == 240) { camera->pl->width = 240; camera->pl->height = 320; } if (camera->pl->width == 240 && camera->pl->height == 320) is240x320 = 1; shuffle_size = (camera->pl->width / 8) * (camera->pl->height / 8); if (shuffle_size > ST2205_SHUFFLE_SIZE) { gp_log (GP_LOG_ERROR, "st2205", "shuffle table size too small!"); return GP_ERROR_FIXED_LIMIT_EXCEEDED; } camera->pl->mem = st2205_malloc_page_aligned(camera->pl->mem_size); if (!camera->pl->mem) return GP_ERROR_NO_MEMORY; /* There are 3 known versions of st2205 devices / firmware: * Version 1 devices show up as a single disk. These have: * -4 copies of the "FAT" * -lookup tables directly followed by shuffle tables at 0x8477 * -pictures starting at 0x10000 * -64k of firmware at the end of memory * Version 2 devices show up as 2 disks, with the second second disk * containing a msdos filesystem with the windows software. These have: * -1 copy of the "FAT" * -lookup tables as part of the firmware at memory-end - 0x27b89 bytes * -pictures starting at 0x2000 * -256k of firmware at the end of memory * Version 3 devices are identical to version 2 devices, except they * don't have the lookup / shuffle tables in a recognizable form. */ /* First check for V2/V3 devices by checking for a msdos filesystem * at memory-end - 0x20000 */ x = camera->pl->mem_size - 0x20000; CHECK (st2205_check_block_present(camera, x / ST2205_BLOCK_SIZE)) if (!strcmp(camera->pl->mem + x, "\xeb\x3c\x90MSDOS5.0")) { camera->pl->firmware_size = ST2205_V2_FIRMWARE_SIZE; camera->pl->picture_start = ST2205_V2_PICTURE_START; camera->pl->no_fats = 1; GP_DEBUG ("Detected V2/V3 picframe"); } else { /* Not a V2/V3 verify it is a V1 */ x = ST2205_V1_LOOKUP_OFFSET; CHECK (st2205_check_block_present(camera, x / ST2205_BLOCK_SIZE)) if (memcmp(camera->pl->mem + x, "\xd0\xff\xcd\xff\xcb\xff\xcb\xff\xcb\xff\xcc\xff", 12)) { gp_log (GP_LOG_ERROR, "st2205", "Could not determine picframe version"); return GP_ERROR_MODEL_NOT_FOUND; } camera->pl->firmware_size = ST2205_V1_FIRMWARE_SIZE; camera->pl->picture_start = ST2205_V1_PICTURE_START; camera->pl->no_fats = 4; GP_DEBUG ("Detected V1 picframe"); } /* Generate shuffle tables 0 and 1 */ for (y = 0, i = 0; y < camera->pl->height; y += 8) for (x = 0; x < camera->pl->width; x += 8, i++) { camera->pl->shuffle[0][i].x = x; camera->pl->shuffle[0][i].y = y; } for (x = 0, i = 0; x < camera->pl->width; x += 8) for (y = 0; y < camera->pl->height; y += 8, i++) { camera->pl->shuffle[1][i].x = x; camera->pl->shuffle[1][i].y = y; } /* For the other tables, skip to the tables for the right resolution */ shuffle_src = st2205_shuffle_data; for (i = 0; shuffle_info[i].no_tables; i++) { if (camera->pl->width == shuffle_info[i].width && camera->pl->height == shuffle_info[i].height) break; if (is240x320 && shuffle_info[i].width == 120 && shuffle_info[i].height == 160) break; shuffle_src += (shuffle_info[i].width * shuffle_info[i].height * 2 / 64) * (shuffle_info[i].no_tables - 2); } if (!shuffle_info[i].no_tables) { gp_log (GP_LOG_ERROR, "st2205", "unknown display resolution: %dx%d", camera->pl->width, camera->pl->height); return GP_ERROR_MODEL_NOT_FOUND; } memcpy (camera->pl->unknown3, shuffle_info[i].unknown3, sizeof(camera->pl->unknown3)); camera->pl->no_shuffles = shuffle_info[i].usable_tables; for (j = 2; j < camera->pl->no_shuffles; j++) for (i = 0; i < shuffle_size; i++) { camera->pl->shuffle[j][i].x = *shuffle_src++; camera->pl->shuffle[j][i].y = *shuffle_src++; if (is240x320) { camera->pl->shuffle[j][i].x *= 2; camera->pl->shuffle[j][i].y *= 2; camera->pl->shuffle[j][i + 1].x = camera->pl->shuffle[j][i].x + 8; camera->pl->shuffle[j][i + 1].y = camera->pl->shuffle[j][i].y; camera->pl->shuffle[j][i + 2].x = camera->pl->shuffle[j][i].x; camera->pl->shuffle[j][i + 2].y = camera->pl->shuffle[j][i].y + 8; camera->pl->shuffle[j][i + 3].x = camera->pl->shuffle[j][i].x + 8; camera->pl->shuffle[j][i + 3].y = camera->pl->shuffle[j][i].y + 8; i += 3; } } CHECK (st2205_check_fat_checksum (camera)) camera->pl->rand_seed = time(NULL); /* Some 96x64 models don't use compression, unfortunately I've found no way to detect if this is the case, so we keep a list of firmware checksums to identify these. */ for (i = camera->pl->mem_size - camera->pl->firmware_size; i < camera->pl->mem_size; i += ST2205_BLOCK_SIZE) CHECK (st2205_check_block_present (camera, i / ST2205_BLOCK_SIZE)) checksum = 0; for (i = camera->pl->mem_size - camera->pl->firmware_size; i < camera->pl->mem_size; i++) checksum += (uint8_t)camera->pl->mem[i]; GP_DEBUG ("firmware checksum: 0x%08x", checksum); for (i = 0; uncompressed_firmware_checksums[i]; i++) if (uncompressed_firmware_checksums[i] == checksum) break; if (!uncompressed_firmware_checksums[i]) camera->pl->compressed = 1; else camera->pl->compressed = 0; return GP_OK; } static void st2205_exit(Camera *camera) { st2205_free_page_aligned(camera->pl->mem, camera->pl->mem_size); camera->pl->mem = NULL; } int st2205_open_device(Camera *camera) { camera->pl->buf = st2205_malloc_page_aligned(512); if (!camera->pl->buf) return GP_ERROR_NO_MEMORY; /* Check this is a Sitronix frame */ CHECK (gp_port_seek (camera->port, 0, SEEK_SET)) if (gp_port_read (camera->port, camera->pl->buf, 512) != 512) return GP_ERROR_IO_READ; if (strcmp (camera->pl->buf, "SITRONIX CORP.")) return GP_ERROR_MODEL_NOT_FOUND; /* Read LCD size from the device */ CHECK (st2205_send_command (camera, 5, 0 ,0)) if (gp_port_seek (camera->port, ST2205_READ_OFFSET, SEEK_SET) != ST2205_READ_OFFSET) return GP_ERROR_IO; if (gp_port_read (camera->port, camera->pl->buf, 512) != 512) return GP_ERROR_IO_READ; camera->pl->width = be16atoh ((uint8_t *)camera->pl->buf); camera->pl->height = be16atoh ((uint8_t *)camera->pl->buf + 2); GP_DEBUG ("Sitronix picframe of %dx%d detected.", camera->pl->width, camera->pl->height); return st2205_init (camera); } int st2205_open_dump(Camera *camera, const char *dump, int width, int height) { camera->pl->mem_dump = fopen(dump, "r+"); if (!camera->pl->mem_dump) { gp_log (GP_LOG_ERROR, "st2205", "opening memdump file: %s: %s", dump, strerror(errno)); return GP_ERROR_IO_INIT; } camera->pl->width = width; camera->pl->height = height; return st2205_init (camera); } void st2205_close(Camera *camera) { st2205_exit (camera); if (camera->pl->mem_dump) { fclose (camera->pl->mem_dump); camera->pl->mem_dump = NULL; } st2205_free_page_aligned(camera->pl->buf, 512); camera->pl->buf = NULL; } int st2205_get_mem_size(Camera *camera) { return camera->pl->mem_size; } int st2205_get_free_mem_size(Camera *camera) { struct image_table_entry entry; struct st2205_image_header header; int i, count, start, end, hole_start = 0, free = 0; count = st2205_read_file_count (camera); if (count < 0) return count; /* Find all holes in the memory and add their sizes together */ end = camera->pl->picture_start; for (i = 0; i <= count; i++) { /* Fake a present entry at the end of picture mem */ if (i == count) { entry.present = 1; start = camera->pl->mem_size - camera->pl->firmware_size; /* If the last entry in the "FAT" was present, we need to set hole_start to the end of the last picture */ if (!hole_start) hole_start = end; } else { CHECK (st2205_read_mem (camera, ST2205_FILE_OFFSET (i), &entry, sizeof(entry))) start = entry.address; if (entry.present) { if (camera->pl->compressed) { CHECK (st2205_read_mem (camera, start, &header, sizeof(header))) BE16TOH(header.length); end = start + sizeof(header) + header.length; } else { end = start + camera->pl->width * camera->pl->height * 2; } } } /* If we have a hole start address look for present entries (so a hole end address), else look for non present entries */ if (hole_start) { if (entry.present) { free += start - hole_start; hole_start = 0; } } else { if (!entry.present) hole_start = end; } } return free; } libgphoto2-2.5.9/camlibs/st2205/st2205_tables.c0000644000175000001440000023541312610415536015536 00000000000000/* Sitronix st2205 picframe decompression and compression lookup tables * * The st2205 picframe decompression and compression uses 2 fixed * lookup tables. These tables are copied from the st2205 firmware. * * As these are pure lists of fixed numbers, these are believed to not be * creative expressions, and as such are believed to not be under copyright. */ #include "config.h" #include "st2205.h" const st2205_lookup_row st2205_lookup[3][256] = { { { -48, -51, -53, -53, -53, -52, -52, -49 }, { -57, -57, -55, -50, -35, 2, 27, 29 }, { -47, -47, -44, -21, 28, 47, 49, 49 }, { -72, -55, 8, 24, 26, 27, 26, 24 }, { 76, 76, 76, 76, 75, 72, 70, 67 }, { 59, 58, 46, -2, -35, -43, -43, -43 }, { -66, -67, -54, 22, 39, 41, 41, 40 }, { -20, -19, -14, -1, 28, 56, 65, 66 }, { 35, 35, 34, 22, -19, -35, -36, -33 }, { 25, 28, 26, 5, -42, -63, -68, -69 }, { 64, 65, 59, 34, -5, -22, -27, -29 }, { -36, -36, -36, -34, -16, 39, 64, 66 }, { 72, 62, -5, -25, -28, -27, -27, -27 }, { -34, -37, -38, -39, -39, -38, -39, -38 }, { 46, 49, 50, 50, 51, 51, 50, 49 }, { 46, 47, 46, 39, -5, -49, -58, -58 }, { -56, -29, 38, 37, 22, 9, 1, -2 }, { -53, -55, -50, -30, 9, 22, 25, 26 }, { -45, -43, -34, 13, 26, 28, 30, 30 }, { 36, 38, 37, 34, 17, -26, -43, -43 }, { 66, 61, 35, -2, -14, -15, -17, -16 }, { -24, -25, -26, -24, -20, 4, 62, 75 }, { 33, 35, 36, 36, 36, 36, 37, 37 }, { 11, -2, -22, -39, -47, -52, -52, -48 }, { 27, -8, -32, -35, -28, 16, 39, 41 }, { -22, -21, -21, -21, -9, 29, 45, 48 }, { 50, 53, 53, 51, 41, 12, -20, -31 }, { 35, 35, 30, 2, -38, -36, -12, 3 }, { -9, 2, 26, 46, 55, 58, 60, 59 }, { -30, -32, -31, -30, -28, -28, -27, -26 }, { 60, 46, -9, -20, -17, -13, -10, -8 }, { 21, 23, 23, 23, 20, 1, -54, -71 }, { 27, 28, 28, 28, 28, 27, 27, 25 }, { -4, 20, 36, 13, -8, -13, -12, -9 }, { 46, 49, 44, 31, 7, -5, -7, -6 }, { 26, 25, 28, 18, -18, -24, -23, -22 }, { -5, -33, -39, 5, 15, 15, 17, 18 }, { -29, -31, -30, -21, 15, 32, 36, 37 }, { 1, -3, 0, 13, 28, 36, -20, -45 }, { -12, -14, -19, -24, -29, -34, -36, -34 }, { -16, 13, 16, -14, -12, 13, 10, -14 }, { -34, -28, 7, 33, 34, 25, -1, -23 }, { 73, 8, -9, -10, -10, -11, -12, -12 }, { 16, 17, 18, 17, 14, -4, -37, -46 }, { 29, 8, -8, -3, 22, 38, 41, 37 }, { -46, -48, -48, -46, -41, -30, -14, 0 }, { 25, 28, 29, 28, 27, 18, -22, -51 }, { 44, 41, 23, -20, -34, -36, -38, -37 }, { -25, -27, -29, -29, -28, -17, 24, 52 }, { -44, -41, -34, -25, -15, -8, -3, 0 }, { 39, 36, 20, -12, -23, -22, -21, -20 }, { 20, 20, 20, 20, 6, -29, -32, -24 }, { -10, 12, 30, 35, 34, 35, 36, 34 }, { -32, -34, -36, -33, -17, 12, 26, 29 }, { 9, 12, 15, 14, 12, 9, -18, -67 }, { -28, -27, -25, -24, -23, -20, -15, -10 }, { -44, -27, 14, 34, 37, 37, 39, 38 }, { -42, -32, -9, 9, 17, 23, 27, 27 }, { 24, -12, -16, 24, 17, -18, -9, 25 }, { 20, 22, 22, 20, 5, -43, -68, -71 }, { -14, -14, -15, -16, -16, -2, 39, 51 }, { 40, 21, -15, -26, -27, -17, 9, 28 }, { 47, 51, 51, 48, 45, 41, 26, 3 }, { -26, -29, -18, 14, 37, 40, 24, -6 }, { -20, -20, -19, -15, 4, 24, 30, 32 }, { 4, -7, -24, -37, -41, -30, -6, 10 }, { 47, 25, -5, -13, -14, -15, -18, -19 }, { 18, 16, 11, -6, -32, -43, -45, -42 }, { 1, 4, 11, 20, 29, 35, 40, 39 }, { -23, -23, -20, 2, 22, 25, 23, 21 }, { -13, 7, 32, 33, 8, -20, -27, -26 }, { -19, -20, -20, -21, -20, -21, -22, -22 }, { -59, -31, 6, 13, 14, 14, 14, 12 }, { 1, -24, -39, -33, -9, 6, 11, 10 }, { 31, 33, 32, 29, 18, -8, -23, -24 }, { 22, 18, 12, 4, -8, -25, -36, -42 }, { 9, 9, 7, 1, -15, -24, -3, 28 }, { -35, -34, -27, -11, 5, 13, 16, 17 }, { 33, 8, -24, -6, 29, 0, -22, -12 }, { 43, 22, -17, -31, -33, -32, -33, -32 }, { -25, -24, -15, 12, 35, 42, 43, 42 }, { -38, -29, -13, 3, 2, -11, -27, -33 }, { 32, 32, 32, 31, 29, 22, 8, -10 }, { 13, 13, 14, 15, 12, -9, -25, -25 }, { -33, -12, 15, 24, 24, 23, 24, 21 }, { -24, -27, -30, -32, -30, -18, 0, 15 }, { 26, 23, 15, -3, -13, -16, -16, -16 }, { -26, -24, -20, -16, -11, -5, -5, -8 }, { -10, -10, -11, -12, -10, -6, 12, 59 }, { -55, -51, -24, 5, 14, 15, 14, 12 }, { -6, 18, 38, 45, 42, 25, -2, -14 }, { 47, 5, -6, -7, -7, -8, -8, -7 }, { -10, -8, -6, -4, 3, 22, 50, 61 }, { -26, -25, -23, -21, -14, 0, 11, 16 }, { 30, 31, 20, -4, -16, -2, 19, 25 }, { 15, 10, 0, -16, -27, -30, -29, -26 }, { -17, -18, -18, -15, 9, 33, 21, 4 }, { 21, 19, 6, -25, -35, -22, -2, 7 }, { 11, 10, 11, 12, 6, -17, -26, 1 }, { 1, -1, -2, -1, 14, 13, -8, -7 }, { 19, 21, 21, 21, 22, 22, 22, 21 }, { -14, -15, -15, -16, -15, -15, -15, -14 }, { 20, 20, 20, 20, 19, 12, -9, -30 }, { 37, 26, -1, -10, -10, -7, -6, -3 }, { -15, -15, -17, -21, -17, 13, 32, 30 }, { -33, -23, -3, 8, 14, 16, 18, 19 }, { 2, 30, 0, -16, 18, 30, -12, -4 }, { 2, 1, -1, -2, -8, -31, -50, -55 }, { -50, -4, 9, 9, 9, 10, 9, 8 }, { 8, 7, 1, -12, -21, -10, 26, 41 }, { 46, 41, 22, 1, -7, -8, -9, -10 }, { 7, 6, 5, 5, 3, -3, -27, -46 }, { -16, 10, 21, 22, 21, 21, 20, 17 }, { -44, -32, -12, -1, 1, 2, 3, 4 }, { 30, 26, 19, 11, 0, -12, -23, -30 }, { -4, -4, -2, -2, -3, -3, 3, 33 }, { 0, -12, -22, -18, 3, 16, 17, 16 }, { 9, 9, 8, 3, -11, -23, -25, -24 }, { 31, 30, 27, 21, 15, 11, 10, 13 }, { -19, -17, -13, -7, 0, 12, 20, 25 }, { -17, 2, 17, 19, 18, 12, -16, -37 }, { 7, -10, -21, -23, -18, -9, -3, -2 }, { 14, 7, -10, -23, -10, 17, 25, 24 }, { -6, -9, 5, 29, 30, 1, -12, -12 }, { -13, -11, -2, 10, 21, 28, 30, 29 }, { 16, -18, -24, -6, 4, 3, 1, -1 }, { 16, 16, 16, 11, -3, -14, -16, -15 }, { 11, -12, -26, -28, -27, -26, -26, -24 }, { -31, -19, 3, 15, 17, 12, 1, -10 }, { -14, -15, -14, -16, -16, -15, 2, 32 }, { 28, 27, 25, 20, 11, 1, -6, -10 }, { 35, 4, -18, -19, -17, -16, -15, -13 }, { -23, -17, 24, 20, -19, -13, 27, 17 }, { -19, -26, -27, -8, 23, 18, -8, -17 }, { 4, 8, 13, 16, 19, 22, 23, 23 }, { 15, 14, 12, 2, -17, -25, -13, 6 }, { 7, 7, 8, 8, 8, 4, -16, -27 }, { -12, -8, 3, 8, 3, -10, -21, -25 }, { -27, -17, -1, 5, 7, 9, 10, 10 }, { -10, -10, -10, -10, -10, -11, -11, -12 }, { 53, 27, 1, -1, 11, 25, 14, 10 }, { -13, -13, -11, -5, 4, 10, 12, 13 }, { 6, 7, 15, 25, 30, 32, 22, -2 }, { 22, 19, 6, -4, -6, -7, -8, -10 }, { -10, -9, -9, -9, -8, -1, 21, 32 }, { -22, -22, -18, -9, -1, 3, 5, 7 }, { -2, 1, 10, 17, 2, -6, -9, -8 }, { 10, 11, 11, 10, 9, 9, -2, -46 }, { -11, -10, -9, 1, 18, 19, 8, -2 }, { -3, -4, -6, -8, -13, -20, -27, -29 }, { 16, 16, 16, 16, 16, 16, 15, 15 }, { 5, -21, 7, 15, -6, -11, 7, 14 }, { -23, 6, 27, 21, 4, -11, 0, 11 }, { 8, 8, 7, 6, 3, -4, -12, -15 }, { 28, 4, -3, -4, -3, -4, -4, -3 }, { 3, -3, -10, -17, -19, -19, -18, -16 }, { -16, -6, 7, 15, 17, 17, 16, 14 }, { -20, -24, -14, 6, 12, 13, 13, 12 }, { 26, 25, 18, 4, -6, -7, -3, 0 }, { 17, 13, -1, -13, -15, -15, -14, -14 }, { -5, -5, -6, -8, -4, 10, 19, 19 }, { -19, 4, 13, -7, -24, -22, -14, -11 }, { 14, 17, 19, 20, 19, 15, 6, -4 }, { 8, -6, -15, -20, -21, -8, 14, 23 }, { 23, 10, -17, -30, -14, 2, 8, 10 }, { 18, 13, 7, 2, -2, -7, -16, -25 }, { 10, 11, 11, 12, 12, 13, 12, 12 }, { -16, -17, -17, -18, -18, -16, -8, 6 }, { 14, 7, -12, -20, -4, 11, 1, -15 }, { -14, -10, -2, 3, 6, 7, 8, 8 }, { -27, -1, 7, 7, 7, 6, 5, 5 }, { 4, 3, 4, 4, 4, 5, -1, -29 }, { 19, 16, 12, 10, 7, 1, -7, -14 }, { 12, 7, -13, -2, 9, 6, -16, 10 }, { -6, -6, -6, -6, 1, 19, 32, 36 }, { -27, -13, -3, -1, -1, -1, 1, 2 }, { -15, 0, 13, 15, 14, 9, -4, -12 }, { 16, -3, -9, -9, -9, -10, -11, -10 }, { -11, 1, 11, 2, -18, 8, 15, 5 }, { -6, -5, -5, -6, -6, -3, 9, 21 }, { -11, -8, -4, 3, 11, 15, 18, 20 }, { -12, -12, -12, -11, -9, -7, -4, -2 }, { 15, 11, 1, -5, -5, -5, -4, -4 }, { -22, -22, -8, 19, 8, -12, -6, 15 }, { 22, -3, -23, -2, 18, 19, 16, 13 }, { 6, 7, -4, -13, -2, 8, 9, 7 }, { 20, 19, 16, 13, 10, 6, 5, 3 }, { 6, 5, 3, 0, -2, -2, -2, -2 }, { -12, -11, 1, 11, 11, 7, 2, -1 }, { 4, 3, 1, -1, -6, -13, -18, -17 }, { 15, 12, 10, 6, 4, 12, 24, 32 }, { -2, -2, -1, -1, -1, 0, 4, 11 }, { 6, 11, 15, 17, 13, 3, -8, -12 }, { 11, 11, 8, 1, -7, -10, -10, -9 }, { -7, 7, 14, 15, 13, 11, 10, 7 }, { -10, -12, -14, -14, -10, -1, 9, 12 }, { 23, 15, 3, -1, 4, 9, 9, 5 }, { 2, 4, -7, 4, 9, -20, 8, 3 }, { 11, 11, 11, 10, 8, 7, 6, 6 }, { -15, -16, -11, -1, 6, 3, -8, -14 }, { -6, -6, -6, -5, -1, 5, 8, 10 }, { 1, -1, -7, -15, -18, -18, -8, 8 }, { 3, 4, 4, 4, 4, 3, -2, -14 }, { -6, 8, 12, 4, -5, -10, -10, -9 }, { 1, 3, 4, 7, 12, 16, 17, 18 }, { 0, -2, -5, -8, -10, -11, -11, -11 }, { -6, -5, -2, 1, 5, 5, 6, 6 }, { 14, -1, -11, -11, -8, -1, 7, 12 }, { 15, 15, 12, 8, 1, -3, -4, -3 }, { 1, 0, -1, -1, -2, -3, -10, -18 }, { 10, 10, 9, 12, 13, 13, 7, -21 }, { -13, -12, -9, -5, -1, 1, 3, 4 }, { 13, 14, 6, -11, -17, -8, 4, 8 }, { 4, -13, -10, 4, 8, 8, 7, 8 }, { 6, 7, 7, 7, 8, 9, 9, 8 }, { -7, -6, -5, -5, -6, -10, -7, 17 }, { 8, 8, 6, 4, 2, -2, -4, -6 }, { -6, -6, -6, -6, -6, -6, -6, -6 }, { -2, -2, -1, 1, 4, 9, 12, 14 }, { -1, -4, -1, 8, 10, 2, -5, -8 }, { 14, 2, -3, -2, -1, 0, -1, -1 }, { -4, -6, -7, -8, -7, -3, 3, 7 }, { -13, -1, 3, 3, 2, 3, 3, 3 }, { 6, 1, -5, -9, -9, -6, -3, -1 }, { 7, 6, 4, 1, -1, 1, 10, 18 }, { -6, -5, -3, -1, 0, 1, 2, 3 }, { 9, 9, 9, 9, 9, 7, 2, -5 }, { 7, 5, 3, 0, -3, -5, -7, -8 }, { -3, -3, -3, -3, 1, 13, 14, -5 }, { 5, 4, 3, 4, 1, -10, -9, 4 }, { 2, 6, 9, 3, -11, -11, 1, 7 }, { -3, -7, -11, -9, 0, 5, 1, -4 }, { 2, 2, 2, 2, 1, -1, -4, -5 }, { 5, 4, 2, -3, -5, -2, 3, 6 }, { -4, 0, 4, 8, 9, 9, 9, 8 }, { -11, -7, 0, 3, 2, -3, -7, -8 }, { 10, 10, 8, 4, 2, 2, 2, 1 }, { -1, -1, 0, 0, 1, 1, 2, 3 }, { -4, -2, 0, 3, 4, 3, 1, 0 }, { 1, 0, -2, -3, -5, -6, -7, -7 }, { 2, 2, 1, 1, 0, 0, 0, -1 }, { -4, 1, 6, 5, 1, -2, -2, 0 }, { 5, 5, 5, 5, 5, 5, 5, 5 }, { -6, -5, -5, -4, -4, -3, -2, -2 }, { -2, 4, 8, 9, 8, 5, 1, -2 }, { 4, 1, -1, -1, -2, -2, -2, -1 }, { 2, -1, -4, -4, 0, 4, 5, 4 }, { -1, -2, -2, -2, -3, -3, 0, 4 }, { 5, 5, 4, 4, 3, 1, 0, -1 }, { -2, -2, -2, -2, -2, -3, -3, -4 }, { -1, 0, 2, 3, 4, 5, 5, 6 }, { -2, -1, -1, -1, -1, -1, -1, -1 }, { 2, 1, 2, 2, 4, 3, 1, -3 }, { 0, 0, 0, 0, 0, 0, 0, 0 }, { 3, 3, 2, 2, 2, 2, 3, 3 }, { 1, 1, 1, 1, 1, 1, 1, 1 }, } , { { -51, -52, -52, -53, -53, -53, -52, -50 }, { -30, -31, -28, -28, -19, 26, 45, 46 }, { -39, -41, -42, -42, -43, -42, -42, -40 }, { 45, 46, 45, 38, -13, -47, -48, -48 }, { 57, 60, 61, 63, 63, 61, 61, 57 }, { -41, -42, -40, -13, 32, 39, 39, 38 }, { 4, -10, -27, -41, -49, -51, -50, -48 }, { 46, 48, 49, 49, 47, 47, 48, 47 }, { 21, 23, 23, 23, 21, -3, -52, -60 }, { -23, -15, 13, 40, 45, 9, -28, -30 }, { -59, -59, -57, -53, -44, -34, -23, 0 }, { -32, -32, -32, -32, -32, -33, -32, -32 }, { 40, 38, 19, -23, -43, -44, -42, -38 }, { -51, -49, -30, 17, 29, 29, 29, 27 }, { -13, -13, -14, -10, 4, 44, 61, 60 }, { -33, -9, 22, 27, 8, -24, -39, -39 }, { -17, -16, -12, 9, 46, 61, 62, 63 }, { 36, 37, 34, 35, 37, 38, 39, 39 }, { -53, -54, -51, -33, 0, 17, 19, 17 }, { -9, -13, -12, 4, 29, 40, 40, 32 }, { 6, 8, 6, -2, -21, -43, -53, -54 }, { -25, -26, -26, -24, -24, -24, -23, -23 }, { 58, 64, 63, 59, 28, -5, -23, -16 }, { -20, -19, -9, 25, 45, 45, 22, -10 }, { -15, -16, -13, -12, -12, -1, 45, 62 }, { 20, 2, -29, -40, -37, -10, 17, 21 }, { -12, 9, 42, 51, 49, 52, 50, 41 }, { 61, 50, 12, -9, -9, -8, -9, -10 }, { -28, -27, -14, 11, 30, 13, -17, -31 }, { 10, 9, 9, 11, 11, 1, -30, -47 }, { 29, 30, 31, 30, 31, 30, 28, 26 }, { -18, -26, -33, -34, -35, -30, -13, 8 }, { 49, 51, 46, 26, -5, -18, -22, -22 }, { 44, 45, 31, -6, -23, -26, -28, -27 }, { -31, -19, 9, 35, 39, 39, 40, 37 }, { 8, 32, 45, 47, 28, 1, -11, -11 }, { 18, 18, 17, 19, 21, 17, -8, -39 }, { 34, 8, -21, -31, -32, -33, -33, -31 }, { 20, -6, -32, -26, 8, 30, 32, 28 }, { -32, -30, -24, -13, 12, 30, 35, 36 }, { 50, 46, 27, 1, -2, 9, 20, 14 }, { -5, -4, 10, 38, 35, 2, -7, -5 }, { 7, 6, 11, 21, 30, 38, 44, 46 }, { -17, -18, -19, -19, -19, -20, -19, -19 }, { 52, 51, 49, 48, 43, 36, 16, -5 }, { 22, 24, 15, -12, -26, -27, -26, -24 }, { -7, -6, -6, -4, 4, 24, 41, 42 }, { -55, -37, 7, 19, 19, 19, 20, 21 }, { 28, 29, 29, 23, -5, -34, -39, -43 }, { 69, 1, -10, -10, -11, -13, -14, -14 }, { 1, 23, 42, 50, 52, 44, 18, -8 }, { -44, -44, -38, -31, -22, -14, -14, -15 }, { 31, 31, 9, -28, -39, -33, -6, 13 }, { -24, -20, -8, 3, -14, -25, -25, -23 }, { 24, 24, 23, 22, 23, 23, 23, 22 }, { -26, -27, -24, -22, -19, -14, -7, 1 }, { 32, 32, 31, 32, 22, -8, -26, -30 }, { -14, -16, -20, -24, -29, -32, -34, -33 }, { -22, -19, -8, 9, 20, 24, 26, 28 }, { -14, -15, -17, -13, -11, -6, 9, 52 }, { 38, 42, 37, 31, 20, 7, 7, 7 }, { 10, 7, 3, 0, -10, -24, -32, -32 }, { -10, -10, -8, -10, -1, 31, 30, 8 }, { 2, -21, -34, -33, -18, -1, 5, 4 }, { 34, 37, 33, 19, 1, -7, -7, -10 }, { -6, 24, 43, 29, -7, -21, -22, -24 }, { -1, 17, 26, 28, 31, 29, 29, 27 }, { -31, -32, -22, 10, 20, 21, 18, 11 }, { 24, 25, 25, 16, -13, -24, -22, -18 }, { 50, 33, -9, -16, -16, -16, -16, -14 }, { 11, -1, -14, -21, -17, -1, 31, 40 }, { -40, -42, -42, -39, -33, -9, 20, 27 }, { 17, 18, 18, 18, 18, 18, 18, 18 }, { 29, 26, 19, 12, 2, -10, -24, -32 }, { -10, -3, 19, 36, 42, 35, 13, -2 }, { -11, -12, -13, -13, -14, -16, -17, -16 }, { 47, 10, -2, 2, 1, -2, -4, -6 }, { 37, 32, 19, -2, -12, -16, -16, -16 }, { -43, 1, 18, 19, 19, 19, 21, 19 }, { 8, 12, -2, -24, -22, 1, 12, 9 }, { 24, 24, 24, 22, 19, 6, -8, -13 }, { 12, -14, -26, -27, -27, -25, -20, -15 }, { 17, 3, 3, 8, 26, 45, 31, 3 }, { -54, -46, -21, -2, 2, 3, 6, 7 }, { 26, 27, 20, 6, -11, -10, 18, 30 }, { 8, 10, 7, -7, -30, -37, -18, 7 }, { -17, -17, -18, -17, -8, 15, 30, 33 }, { -34, -34, -29, -16, 0, 14, 20, 22 }, { 25, 29, 30, 31, 29, 22, 10, -4 }, { 3, 0, -6, -18, -26, -30, -29, -27 }, { 2, 4, 9, 13, 17, 24, 30, 32 }, { -38, -24, -5, 3, 8, 11, 13, 13 }, { 22, 19, 3, -10, -3, 19, 28, 28 }, { -6, 17, 23, 23, 22, 4, -16, -21 }, { -11, -15, -17, -8, 23, 32, 13, -11 }, { -18, -21, -22, -18, -3, 3, -12, -20 }, { 14, 14, 14, 14, 13, 13, 12, 13 }, { 39, -3, -13, -12, -11, -11, -9, -9 }, { -4, -4, -3, -1, -1, 1, 18, 48 }, { 20, 5, -16, -13, 8, 8, -14, -21 }, { 34, 31, 15, 3, -1, -2, -2, -4 }, { -10, -11, -10, -8, -2, -11, -31, -41 }, { -14, -9, 10, 25, 26, 25, 24, 20 }, { -22, -22, -23, -22, -20, -4, 15, 20 }, { -13, 0, 34, 36, 4, -7, -7, -3 }, { 3, -3, -15, -23, -23, -18, -8, 3 }, { -9, -7, -4, -2, -1, 13, 25, 29 }, { -35, -24, -8, -3, -5, -5, -4, -5 }, { 30, 26, 18, 14, 14, 12, 9, 8 }, { 10, 13, 16, 15, 7, -19, -28, -25 }, { -2, 32, 36, 21, 0, 12, 40, 48 }, { -13, -9, -8, -12, -8, 12, 12, -13 }, { -29, -7, 14, 21, 23, 17, 1, -18 }, { -13, 4, 20, 6, -12, -17, -19, -19 }, { 12, -23, -33, -6, 13, 8, 12, 13 }, { 29, 18, -10, -20, -18, -12, -1, 17 }, { 4, 28, 30, 3, -11, -10, -6, -7 }, { -18, -18, -18, -16, -14, -13, -11, -8 }, { -2, -6, -4, 12, 32, 23, 2, -3 }, { -15, -17, -16, -16, -17, -17, -5, 24 }, { 13, 17, 18, 19, 20, 21, 13, -9 }, { 20, 11, -7, -16, -18, -18, -18, -18 }, { -18, -20, -19, -8, 9, 17, 21, 20 }, { 1, -2, 0, 11, 19, 1, -8, -8 }, { 22, 19, 13, 6, -3, -10, -14, -16 }, { 11, -1, -17, -18, 0, 12, 15, 14 }, { 7, 6, 5, 3, 0, 0, 12, 29 }, { -14, -15, -9, 3, 10, -2, -13, -14 }, { 32, 6, -6, -3, 1, 4, 14, 18 }, { 4, 4, 4, 3, 4, 7, -1, -30 }, { -20, -20, -3, 24, 19, 4, 1, 1 }, { -21, -23, -17, 0, 9, 7, 6, 7 }, { 16, 17, 14, 15, 2, -20, -13, 19 }, { 3, 3, 1, -1, -2, -9, -22, -28 }, { 20, 13, -1, -1, 13, 20, 9, -4 }, { -4, -1, 2, 2, 12, 26, 11, -4 }, { 22, 0, -3, -3, -3, -3, -3, -3 }, { -15, 1, 7, -14, -20, -6, 5, 2 }, { 2, 6, 10, 15, 18, 18, 18, 17 }, { -27, -31, -28, -18, -3, 4, 5, 4 }, { -6, -7, -9, -12, -13, -8, 19, 29 }, { 11, 12, 9, -1, -13, -16, -17, -16 }, { -1, 13, 25, 25, 22, 13, 8, 10 }, { -12, -9, 7, 23, 11, -10, -19, -19 }, { 18, 21, 21, 14, 5, 2, 1, 2 }, { 9, -8, -14, -14, -13, -11, -12, -14 }, { -24, -14, 1, 9, 12, 13, 14, 14 }, { -16, -16, -12, -9, -5, 3, 13, 21 }, { 11, 11, 10, 10, 9, 1, -16, -24 }, { -11, -11, -11, -11, -11, -10, -9, -9 }, { 8, 9, 9, 10, 11, 11, 11, 11 }, { -19, -17, -15, -12, -6, -1, 4, 5 }, { 30, 23, 3, -9, -13, -12, -12, -10 }, { 5, 3, 5, 9, 3, -12, -17, -13 }, { -28, 4, 9, 8, 8, 5, 4, 5 }, { 3, -10, -11, 7, -2, -14, -9, 5 }, { 1, -2, 7, 26, 4, -2, 0, 0 }, { -8, 8, 2, -9, -4, 12, -8, -11 }, { -16, 1, 22, 17, 0, -10, 11, 25 }, { -1, 1, -4, -13, -18, -19, -18, -17 }, { 10, 15, 21, 23, 7, -9, -10, -7 }, { -4, -5, -4, -5, -5, -4, 0, 26 }, { 9, 4, -7, -3, 14, 20, 21, 18 }, { -15, -8, 2, 3, -8, -12, -11, -8 }, { 15, 14, 13, 12, 10, 4, -5, -11 }, { 11, -4, -11, -12, -12, -8, 3, 17 }, { -7, -7, -4, 5, 14, 19, 19, 17 }, { -5, -6, -7, -9, -9, -11, -12, -12 }, { 25, 17, 4, -2, -3, -3, -3, -3 }, { 4, 28, 3, -4, -3, -4, -3, -2 }, { -11, -1, 11, 15, 14, 13, 13, 11 }, { -1, -12, -20, -13, 0, 4, 2, 1 }, { -9, 15, 19, 2, 2, 14, 14, 6 }, { 16, 10, 1, -3, -6, -9, -11, -13 }, { -13, -14, -9, 4, 15, 14, 6, -5 }, { -8, -11, -13, -13, -13, -10, -3, 5 }, { 15, 16, 10, 3, 0, 4, 10, 13 }, { -13, -6, 7, 10, 8, 6, -1, -10 }, { 11, 12, 13, 7, -3, -9, -9, -8 }, { -2, -2, -4, -2, -3, 5, 29, 2 }, { -14, -11, -9, -5, 5, 12, 14, 15 }, { 4, 2, -1, -4, -8, -12, -14, -14 }, { 9, -6, -10, 2, 10, 7, 6, 5 }, { 7, 7, 5, 4, 2, -2, -10, -14 }, { -5, 5, 25, 7, -4, -3, -4, -2 }, { -21, -14, -1, 3, 2, 2, 3, 3 }, { 2, 3, 4, 5, 8, 13, 17, 18 }, { 0, 2, 3, -1, -12, -18, -7, 6 }, { 13, 13, 11, 1, -15, -14, 3, 11 }, { -14, -14, -10, -6, -4, -4, -4, -4 }, { -8, -10, -1, 11, 7, 0, 0, 7 }, { -6, -8, -13, -15, -11, 8, 16, 12 }, { 2, 6, 11, 16, 17, 12, 2, -3 }, { -4, -2, -6, -6, 10, -4, -8, 3 }, { -2, -3, -3, -3, -2, 4, 15, 18 }, { -7, -7, -7, -7, -7, -7, -7, -6 }, { 14, 13, 10, 5, 1, -1, -2, -3 }, { 11, -2, -7, -7, -7, -7, -7, -7 }, { 14, 14, 13, 11, 10, 9, 5, 2 }, { -11, -10, -7, -3, 1, 4, 7, 10 }, { -3, -2, 0, 1, 2, 2, 2, 1 }, { 9, 11, 1, -12, -16, -12, -7, -3 }, { 9, 6, 4, 6, 9, -3, -11, 8 }, { -10, -9, -8, -7, -7, -3, 3, 7 }, { -12, -7, 0, 5, 7, 9, 11, 11 }, { -2, -3, -2, -1, 1, -2, -11, -17 }, { 15, 10, -7, -13, -8, 4, 4, -5 }, { -1, 0, -1, -1, -1, -2, 3, 15 }, { -5, 4, 12, 13, 6, -5, -9, -7 }, { 1, 1, -2, -5, -7, -8, -8, -7 }, { -3, -4, -4, -3, 4, 13, 11, 8 }, { -13, -3, 4, 2, 1, 3, 3, 2 }, { 11, 9, 2, -2, -4, -5, -5, -4 }, { -4, 8, 10, 0, -6, -6, -5, -6 }, { 7, 8, 8, 7, 7, 7, 7, 7 }, { -2, -5, -7, -6, 0, 19, 0, -8 }, { -7, 2, 10, 4, -8, -2, 10, 14 }, { -7, -7, -6, -5, -4, -3, -3, -2 }, { -4, -3, -1, 6, 11, 11, 5, 0 }, { -3, -4, -5, -6, -4, 2, 8, 7 }, { 16, 9, 3, 2, 3, 4, 4, 4 }, { -1, -2, 0, 3, 7, 3, -3, -5 }, { 1, 8, 1, -10, 0, 8, 7, 6 }, { 3, 1, -5, -9, -10, -5, 0, 2 }, { 4, 5, 7, 6, 7, 8, -1, -13 }, { -8, -9, -7, -2, 4, 5, 2, -2 }, { -1, 1, 4, 5, 7, 8, 10, 10 }, { 4, 2, 1, 0, -1, -3, -6, -7 }, { 5, 6, 6, 5, 2, -2, -4, -5 }, { -4, -3, -2, -3, -5, -6, -3, 6 }, { -5, -4, -2, 0, 3, 5, 6, 7 }, { -3, -4, -4, -4, -4, -5, -5, -6 }, { 7, 9, 9, 7, 6, 3, 1, 0 }, { -1, -4, 1, 6, -8, -6, 7, -4 }, { 7, 8, 6, -2, -7, -3, 4, 6 }, { 4, -5, -9, -5, 0, 1, -1, -2 }, { 5, 4, 5, 5, 5, 6, 6, 6 }, { 8, 2, -2, -2, -2, -1, -1, 0 }, { -4, 3, 8, 9, 7, 4, 2, 1 }, { -5, -5, -4, -3, -2, 0, 1, 2 }, { 8, 2, -3, -2, -1, 2, 7, 9 }, { 3, 4, 3, -1, -3, -3, -2, -1 }, { 7, 6, 4, 1, 1, 1, 0, -1 }, { -1, -1, -1, -2, -1, 1, 3, 5 }, { 0, 0, 1, 2, 3, 4, 5, 5 }, { -7, -3, 1, 3, 1, -2, -5, -5 }, { 2, 2, 2, 2, 1, 0, -1, -2 }, { 1, 0, 0, -1, -1, -2, -2, -3 }, { 4, 4, 4, 4, 3, 3, 3, 3 }, { -2, -2, -2, -3, -3, -3, -3, -3 }, { 2, 2, -2, -2, 4, 8, 4, -5 }, { -2, -2, -1, -1, -1, -1, 0, 0 }, { -1, 2, 6, 7, 0, -6, -1, 5 }, { 0, 0, 0, 0, 0, 0, 0, 0 }, { 2, 2, 2, 2, 2, 2, 2, 2 }, { 1, 1, 1, 1, 1, 1, 1, 1 }, } , { { -33, -33, -33, -33, -11, -11, -11, -11 }, { -14, -7, 2, 9, -13, -5, 3, 10 }, { 15, 3, -12, -25, 15, 3, -12, -24 }, { 7, 2, -4, -10, 8, 3, -4, -10 }, { -22, -11, 2, 13, -35, -26, -14, -1 }, { -22, -11, 3, 15, -21, -9, 4, 16 }, { 23, 12, -2, -14, 21, 9, -5, -17 }, { 3, 0, -3, -4, 4, 0, -3, -3 }, { 28, 28, 27, 27, 10, 9, 8, 8 }, { -5, -8, -12, -15, -20, -23, -26, -28 }, { 13, 4, -6, -14, 12, 3, -7, -15 }, { -9, -4, 2, 6, -12, -7, -1, 4 }, { -15, -2, 12, 24, -11, 2, 16, 27 }, { -12, -16, -19, -22, 0, -4, -8, -11 }, { 10, 12, 15, 17, 31, 34, 37, 38 }, { -6, -4, 1, 7, -6, -4, 0, 6 }, { 21, 17, 12, 6, 13, 8, 2, -4 }, { -6, -5, -5, -4, -15, -15, -15, -15 }, { -12, -4, 7, 16, -11, -2, 8, 16 }, { 5, 1, -3, -7, 5, 1, -3, -6 }, { -9, -3, 4, 11, -8, -3, 5, 12 }, { -4, -4, -3, -2, -10, -10, -9, -8 }, { 11, 6, -2, -10, 11, 5, -2, -10 }, { -23, -19, -14, -9, -13, -8, -2, 3 }, { 15, 11, 4, -2, 11, 5, -1, -7 }, { -15, -8, 1, 10, -20, -13, -4, 6 }, { 17, 8, -2, -10, 26, 18, 8, -2 }, { 2, -3, -8, -13, 5, 1, -4, -9 }, { -5, -1, 2, 3, -5, -1, 2, 4 }, { 1, -7, -14, -19, 7, 0, -8, -13 }, { 12, 13, 14, 14, 4, 5, 6, 7 }, { -11, -11, -10, -10, -5, -5, -4, -4 }, { -4, 2, 8, 12, 6, 12, 17, 21 }, { -17, -13, -8, -2, -11, -6, 0, 5 }, { 7, 15, 21, 26, -6, 3, 11, 18 }, { 5, -1, -7, -12, -2, -9, -15, -20 }, { 7, 8, 9, 9, 2, 3, 4, 4 }, { -1, -1, -1, -1, -3, -3, -3, -3 }, { -5, -1, 5, 10, -1, 5, 10, 15 }, { 2, -1, -4, -7, 4, 1, -2, -6 }, { -3, -1, 1, 3, -3, -1, 1, 3 }, { 1, 1, 1, 0, -3, -3, -3, -4 }, { 8, 5, 1, -3, 13, 10, 7, 2 }, { 2, 4, 4, 5, 10, 12, 12, 13 }, { 1, -3, -5, -7, -5, -8, -10, -11 }, { 3, 1, -1, -3, 4, 1, -1, -3 }, { 7, 1, -5, -10, 3, -3, -9, -14 }, { -6, -9, -11, -13, 1, -2, -5, -7 }, { -5, -5, -5, -5, 0, 0, 0, 0 }, { 0, 6, 13, 19, -6, -1, 5, 12 }, { -9, -2, 3, 7, -9, -2, 3, 7 }, { -8, -8, -8, -7, -2, -2, -2, -2 }, { 12, 10, 8, 5, 7, 5, 2, -1 }, { -11, -8, -4, 1, -8, -4, 0, 5 }, { 10, 7, 4, 2, 19, 17, 16, 14 }, { 8, 3, -2, -6, 8, 2, -3, -6 }, { -5, -2, 3, 6, -5, -2, 3, 6 }, { -4, -3, -3, -2, -6, -6, -6, -5 }, { 3, 1, -2, -5, 3, 1, -2, -5 }, { -5, -1, 4, 7, -4, 1, 5, 9 }, { 1, 0, 0, -1, 1, 0, -1, -1 }, { 6, 4, -1, -6, 6, 4, -1, -7 }, { 0, 0, 0, -1, -7, -7, -7, -7 }, { -1, 0, 0, 0, 4, 4, 5, 5 }, { -9, -5, -1, 3, -15, -12, -7, -3 }, { -4, -1, 1, 2, -5, -2, 0, 1 }, { -3, -3, -3, -3, -1, -1, -1, -1 }, { 4, 4, 3, 2, 8, 8, 8, 7 }, { -8, -4, 0, 4, -7, -2, 2, 5 }, { 9, 6, 1, -3, 7, 3, -1, -5 }, { -6, -3, 0, 2, -10, -8, -5, -2 }, { -5, -3, -2, -1, -3, -2, 0, 1 }, { -3, -3, -3, -2, -2, -2, -1, 0 }, { 3, 0, -2, -5, 2, -1, -4, -6 }, { -6, -4, -1, 2, -5, -2, 1, 3 }, { 0, 2, 4, 5, 4, 7, 9, 10 }, { -4, -2, 1, 4, -4, -2, 1, 4 }, { 1, -1, -1, -1, 1, -1, -1, -1 }, { -2, -1, 0, 0, -2, -1, 0, 0 }, { 4, 3, 3, 3, 1, 1, 1, 1 }, { 5, 1, -4, -7, 4, -1, -5, -9 }, { -3, -1, 2, 5, -3, -1, 2, 5 }, { -6, -2, 1, 4, -8, -4, -1, 3 }, { 6, 2, -2, -4, 6, 2, -2, -4 }, { 0, -3, -7, -9, 3, 0, -3, -6 }, { -2, -1, -1, 0, -2, -2, -1, -1 }, { -1, -1, -2, -2, 1, 1, 0, 0 }, { 2, 0, -2, -5, 2, 1, -1, -4 }, { 0, 0, -1, -1, 0, 0, -1, -1 }, { 1, 1, 1, 2, 6, 6, 6, 6 }, { 3, 0, -3, -6, 0, -4, -7, -10 }, { -5, 1, 6, 10, -7, -2, 4, 9 }, { 2, 1, -1, -3, 2, 1, -1, -3 }, { -2, -1, 2, 4, -1, 1, 4, 6 }, { 1, -1, -2, -3, 1, 0, -1, -2 }, { -2, -4, -1, 6, -2, -4, -1, 7 }, { -6, -6, -5, -4, -4, -3, -2, -1 }, { -2, -2, -2, -2, -1, -1, -1, -1 }, { -11, -9, -7, -4, -6, -4, -2, 1 }, { 2, 2, 2, 2, 1, 1, 1, 1 }, { 9, 4, -1, -7, 12, 7, 1, -4 }, { 0, 0, -1, -2, 0, 0, -1, -2 }, { -1, -1, -1, -1, -1, -1, -2, -2 }, { 2, 0, -2, -3, 1, 0, -2, -3 }, { -3, 0, 4, 5, -3, 1, 4, 5 }, { -1, -1, 1, 4, -1, -1, 1, 4 }, { 6, 6, 6, 6, 1, 1, 1, 1 }, { 2, 2, 2, 3, 0, 0, 0, 0 }, { -2, -3, -5, -7, 1, 0, -2, -4 }, { 2, 2, 2, 1, 3, 3, 3, 3 }, { -1, -1, -1, -1, -2, -2, -2, -2 }, { 0, -1, -1, 0, 0, -1, -1, 0 }, { -4, -2, 0, 2, -6, -4, -2, 0 }, { 1, 6, 9, 11, -3, 1, 5, 7 }, { 3, 2, 0, -2, 3, 2, 0, -3 }, { 6, 3, -1, -4, 8, 5, 1, -2 }, { 0, 0, 0, 0, -2, -2, -2, -2 }, { 0, -1, -2, -2, -2, -3, -4, -5 }, { 1, 0, -1, -1, 0, -1, -2, -2 }, { -1, -1, 0, 0, -1, -1, 0, 0 }, { -4, -6, -7, -8, 0, -2, -3, -4 }, { 3, 5, 6, 7, -1, 1, 3, 4 }, { -8, -6, -3, -1, -5, -2, 0, 2 }, { 5, 3, 1, -2, 9, 7, 5, 2 }, { -1, -2, -3, -4, 1, 0, -1, -2 }, { -5, -5, -3, 1, -5, -5, -4, 0 }, { -3, -2, -2, -1, -2, -1, -1, 0 }, { 4, 2, 0, -2, 6, 4, 1, -1 }, { -3, -2, 0, 3, -3, -2, 0, 3 }, { 2, 0, -2, -4, -1, -3, -5, -7 }, { -1, -1, -2, -2, 0, -1, -1, -2 }, { 0, -2, -3, -3, -4, -5, -6, -7 }, { 2, -3, -4, -2, 1, -4, -5, -1 }, { 2, 2, 1, -2, 2, 2, 1, -2 }, { 1, -2, -4, -5, 2, 0, -2, -4 }, { -1, -1, 1, 2, 0, 1, 2, 3 }, { -1, 0, 1, 2, -1, 0, 1, 1 }, { 4, 3, 0, -4, 4, 3, 0, -4 }, { -3, 0, 3, 6, 0, 3, 6, 8 }, { 3, 2, 1, 0, 6, 5, 4, 2 }, { -3, -2, -2, -2, 0, 0, 1, 1 }, { 1, 0, -1, -3, 0, -1, -3, -5 }, { -3, -2, -1, 0, -7, -6, -4, -3 }, { -3, 0, 1, 2, -3, 0, 1, 2 }, { 0, -1, -2, -2, 0, -1, -2, -2 }, { -1, 2, 5, 8, -3, -1, 3, 6 }, { -2, -1, 0, 1, -1, 0, 1, 2 }, { 6, 4, 1, -1, 4, 2, 0, -2 }, { -2, -1, 0, 1, -2, -1, 0, 1 }, { -4, -2, -1, 1, -2, -1, 1, 2 }, { 5, 5, 5, 5, 3, 3, 3, 3 }, { 1, 1, 0, 0, 1, 1, 1, 1 }, { 8, 6, 4, 2, 5, 3, 1, -2 }, { -1, 0, 0, 0, -1, 0, 0, 0 }, { 1, 1, 1, 0, 1, 1, 1, 0 }, { 1, 0, -1, -2, 3, 2, 1, -1 }, { 3, 3, 3, 3, 4, 5, 5, 5 }, { 2, 1, 0, -1, 2, 1, 0, -1 }, { 0, 0, 0, 0, 1, 1, 1, 1 }, { -4, -4, -5, -5, -1, -2, -3, -3 }, { -2, -1, 0, 1, -4, -3, -2, -1 }, { -1, 1, 3, 6, -2, -1, 1, 4 }, { 1, 0, -1, -2, 1, 0, -1, -2 }, { 5, 4, 3, 2, 3, 2, 1, 0 }, { -2, 0, 2, 3, -2, 0, 2, 3 }, { 3, 2, 0, -1, 2, 0, -1, -2 }, { -3, -2, -1, 1, -3, -2, -1, 1 }, { 0, 0, 0, 0, 0, 0, 0, 0 }, { -1, 1, 3, 4, 2, 4, 6, 6 }, { -2, -1, -1, 0, -1, -1, 0, 0 }, { -1, -2, -3, -4, 0, -1, -2, -3 }, { 0, 0, 0, 1, 0, 0, 0, 1 }, { 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 2, 2, 2, 2 }, { 3, 4, 4, 4, 2, 2, 2, 2 }, { 1, 1, 1, 1, 0, 1, 1, 1 }, { 0, 0, 1, 2, 0, 0, 1, 2 }, { -3, 2, 3, 0, -3, 2, 2, 0 }, { 3, 1, 0, -1, 3, 2, 0, -1 }, { 2, 0, 0, 0, 5, 3, 3, 2 }, { 0, 0, -1, -2, -1, -2, -3, -3 }, { -1, 0, 1, 2, -1, -1, 0, 2 }, { 0, 1, 1, 1, 0, 1, 1, 1 }, { -1, 0, 2, 3, 1, 2, 3, 5 }, { -5, -5, -4, -3, -3, -2, -1, 0 }, { 3, 0, -1, -1, 3, 0, -1, -1 }, { 0, 0, 0, -1, 0, 0, 0, -1 }, { -1, 0, 0, 0, 0, 0, 1, 1 }, { -2, -2, -2, -2, -4, -4, -5, -4 }, { 3, 3, 4, 6, -1, 0, 1, 2 }, { -1, 1, 2, 2, -1, 1, 2, 2 }, { 3, 2, 1, -1, 4, 3, 2, 1 }, { -1, -1, 1, 1, -3, -2, -1, 0 }, { -1, 1, 2, 3, -2, -1, 1, 2 }, { 0, 0, 0, 0, -1, -1, -1, -1 }, { -1, -1, -2, -2, 0, -1, -1, -1 }, { -1, -2, -1, 2, -1, -2, -1, 2 }, { 4, 3, 2, 1, 3, 1, 0, -1 }, { -1, -1, -1, 0, -2, -2, -2, 0 }, { 0, 1, 3, 4, -1, 0, 1, 3 }, { 0, -1, -1, -1, -1, -2, -2, -2 }, { 1, 2, 0, -4, 1, 2, 0, -5 }, { -2, -1, -1, -1, -1, -1, -1, -1 }, { -1, -1, 0, 0, -1, -1, -1, -1 }, { 2, 2, 1, 0, 2, 1, 1, 0 }, { 0, 0, 1, 1, 1, 1, 2, 2 }, { 1, -1, -2, -4, 0, -2, -3, -4 }, { 0, 0, 0, 1, 1, 1, 1, 2 }, { -3, -3, -2, 0, -4, -4, -3, -2 }, { 2, -1, -1, 2, 2, -1, -1, 2 }, { 2, 1, 0, 0, 2, 1, 0, 0 }, { 0, 1, 1, 0, 0, 1, 1, 0 }, { -1, -1, -1, -1, 0, 0, 0, 0 }, { 2, 2, 1, 1, 1, 1, 1, 0 }, { 0, -1, -1, -2, 0, 0, -1, -1 }, { 3, 5, 3, -1, 3, 4, 2, -3 }, { 1, 1, 1, 1, 1, 0, 0, 0 }, { 1, 1, 2, 2, 0, 0, 1, 1 }, { -1, -1, -1, -1, -2, -2, -1, -1 }, { 0, 1, 1, 2, 0, 0, 0, 1 }, { 3, 2, 2, 2, 2, 2, 2, 1 }, { 1, 1, 1, 1, 2, 2, 2, 2 }, { 2, 1, 1, 0, 1, 0, 0, -1 }, { 2, 1, 0, -1, 3, 2, 1, 0 }, { 1, 0, 0, 0, 1, 0, 0, 0 }, { 1, 1, 2, 2, 3, 3, 4, 4 }, { -1, -1, 0, 0, -1, -1, -1, 0 }, { 1, 1, 1, 1, 1, 1, 2, 2 }, { 1, 0, -1, -1, 1, 1, 0, -1 }, { 0, 3, 4, 5, -1, 1, 3, 4 }, { -2, -2, -1, 0, -3, -3, -2, -2 }, { 1, 1, 1, 2, 1, 1, 1, 1 }, { 0, -1, -1, -1, -1, -2, -2, -1 }, { 1, 1, 0, -2, 1, 1, 0, -2 }, { 0, 0, 1, 1, 0, 0, 1, 1 }, { 2, 1, 1, 0, 2, 2, 2, 1 }, { -1, -2, -2, -2, 0, -1, -1, -1 }, { 2, 1, 1, 1, 2, 1, 1, 1 }, { 1, 1, 2, 2, 0, 0, 1, 2 }, { 1, 1, 1, 1, 2, 2, 1, 1 }, { 2, 2, 3, 3, 0, 1, 2, 2 }, { 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 1, 0, 0, 1, 1, 1, 0 }, { 2, 3, 3, 1, 1, 2, 2, 1 }, { -3, -3, -3, -3, -2, -2, -2, -2 }, { 0, 1, 2, 2, 1, 2, 3, 3 }, { -1, -2, -2, -2, -2, -3, -3, -3 }, { 1, 2, 2, 1, 0, 1, 1, 0 }, { -2, -2, -3, -3, -1, -1, -2, -2 }, { 1, 1, 1, 1, 1, 1, 1, 2 }, { -2, -2, -2, -2, -2, -2, -2, -2 }, { 1, 2, 1, 0, 1, 2, 2, 0 }, { -1, -1, -1, -1, -1, -1, -1, -1 }, { 1, 2, 2, 2, 1, 1, 1, 2 }, { -1, -1, -1, -2, -1, -1, -1, -1 }, { 0, 1, 1, 1, 1, 2, 2, 1 }, } }; const uint8_t st2205_shuffle_data[10360] = { 0, 0, 0, 8, 8, 0, 0, 16, 8, 8, 16, 0, 0, 24, 8, 16, 16, 8, 24, 0, 0, 32, 8, 24, 16, 16, 24, 8, 32, 0, 0, 40, 8, 32, 16, 24, 24, 16, 32, 8, 40, 0, 0, 48, 8, 40, 16, 32, 24, 24, 32, 16, 40, 8, 48, 0, 0, 56, 8, 48, 16, 40, 24, 32, 32, 24, 40, 16, 48, 8, 56, 0, 0, 64, 8, 56, 16, 48, 24, 40, 32, 32, 40, 24, 48, 16, 56, 8, 64, 0, 0, 72, 8, 64, 16, 56, 24, 48, 32, 40, 40, 32, 48, 24, 56, 16, 64, 8, 72, 0, 0, 80, 8, 72, 16, 64, 24, 56, 32, 48, 40, 40, 48, 32, 56, 24, 64, 16, 72, 8, 80, 0, 0, 88, 8, 80, 16, 72, 24, 64, 32, 56, 40, 48, 48, 40, 56, 32, 64, 24, 72, 16, 80, 8, 88, 0, 0, 96, 8, 88, 16, 80, 24, 72, 32, 64, 40, 56, 48, 48, 56, 40, 64, 32, 72, 24, 80, 16, 88, 8, 96, 0, 0, 104, 8, 96, 16, 88, 24, 80, 32, 72, 40, 64, 48, 56, 56, 48, 64, 40, 72, 32, 80, 24, 88, 16, 96, 8, 104, 0, 0, 112, 8, 104, 16, 96, 24, 88, 32, 80, 40, 72, 48, 64, 56, 56, 64, 48, 72, 40, 80, 32, 88, 24, 96, 16, 104, 8, 112, 0, 0, 120, 8, 112, 16, 104, 24, 96, 32, 88, 40, 80, 48, 72, 56, 64, 64, 56, 72, 48, 80, 40, 88, 32, 96, 24, 104, 16, 112, 8, 120, 0, 0, 128, 8, 120, 16, 112, 24, 104, 32, 96, 40, 88, 48, 80, 56, 72, 64, 64, 72, 56, 80, 48, 88, 40, 96, 32, 104, 24, 112, 16, 120, 8, 0, 136, 8, 128, 16, 120, 24, 112, 32, 104, 40, 96, 48, 88, 56, 80, 64, 72, 72, 64, 80, 56, 88, 48, 96, 40, 104, 32, 112, 24, 120, 16, 0, 144, 8, 136, 16, 128, 24, 120, 32, 112, 40, 104, 48, 96, 56, 88, 64, 80, 72, 72, 80, 64, 88, 56, 96, 48, 104, 40, 112, 32, 120, 24, 0, 152, 8, 144, 16, 136, 24, 128, 32, 120, 40, 112, 48, 104, 56, 96, 64, 88, 72, 80, 80, 72, 88, 64, 96, 56, 104, 48, 112, 40, 120, 32, 8, 152, 16, 144, 24, 136, 32, 128, 40, 120, 48, 112, 56, 104, 64, 96, 72, 88, 80, 80, 88, 72, 96, 64, 104, 56, 112, 48, 120, 40, 16, 152, 24, 144, 32, 136, 40, 128, 48, 120, 56, 112, 64, 104, 72, 96, 80, 88, 88, 80, 96, 72, 104, 64, 112, 56, 120, 48, 24, 152, 32, 144, 40, 136, 48, 128, 56, 120, 64, 112, 72, 104, 80, 96, 88, 88, 96, 80, 104, 72, 112, 64, 120, 56, 32, 152, 40, 144, 48, 136, 56, 128, 64, 120, 72, 112, 80, 104, 88, 96, 96, 88, 104, 80, 112, 72, 120, 64, 40, 152, 48, 144, 56, 136, 64, 128, 72, 120, 80, 112, 88, 104, 96, 96, 104, 88, 112, 80, 120, 72, 48, 152, 56, 144, 64, 136, 72, 128, 80, 120, 88, 112, 96, 104, 104, 96, 112, 88, 120, 80, 56, 152, 64, 144, 72, 136, 80, 128, 88, 120, 96, 112, 104, 104, 112, 96, 120, 88, 64, 152, 72, 144, 80, 136, 88, 128, 96, 120, 104, 112, 112, 104, 120, 96, 72, 152, 80, 144, 88, 136, 96, 128, 104, 120, 112, 112, 120, 104, 80, 152, 88, 144, 96, 136, 104, 128, 112, 120, 120, 112, 88, 152, 96, 144, 104, 136, 112, 128, 120, 120, 96, 152, 104, 144, 112, 136, 120, 128, 104, 152, 112, 144, 120, 136, 112, 152, 120, 144, 120, 152, 56, 80, 64, 80, 64, 72, 56, 72, 48, 72, 48, 80, 48, 88, 56, 88, 64, 88, 72, 88, 72, 80, 72, 72, 72, 64, 64, 64, 56, 64, 48, 64, 40, 64, 40, 72, 40, 80, 40, 88, 40, 96, 48, 96, 56, 96, 64, 96, 72, 96, 80, 96, 80, 88, 80, 80, 80, 72, 80, 64, 80, 56, 72, 56, 64, 56, 56, 56, 48, 56, 40, 56, 32, 56, 32, 64, 32, 72, 32, 80, 32, 88, 32, 96, 32, 104, 40, 104, 48, 104, 56, 104, 64, 104, 72, 104, 80, 104, 88, 104, 88, 96, 88, 88, 88, 80, 88, 72, 88, 64, 88, 56, 88, 48, 80, 48, 72, 48, 64, 48, 56, 48, 48, 48, 40, 48, 32, 48, 24, 48, 24, 56, 24, 64, 24, 72, 24, 80, 24, 88, 24, 96, 24, 104, 24, 112, 32, 112, 40, 112, 48, 112, 56, 112, 64, 112, 72, 112, 80, 112, 88, 112, 96, 112, 96, 104, 96, 96, 96, 88, 96, 80, 96, 72, 96, 64, 96, 56, 96, 48, 96, 40, 88, 40, 80, 40, 72, 40, 64, 40, 56, 40, 48, 40, 40, 40, 32, 40, 24, 40, 16, 40, 16, 48, 16, 56, 16, 64, 16, 72, 16, 80, 16, 88, 16, 96, 16, 104, 16, 112, 16, 120, 24, 120, 32, 120, 40, 120, 48, 120, 56, 120, 64, 120, 72, 120, 80, 120, 88, 120, 96, 120, 104, 120, 104, 112, 104, 104, 104, 96, 104, 88, 104, 80, 104, 72, 104, 64, 104, 56, 104, 48, 104, 40, 104, 32, 96, 32, 88, 32, 80, 32, 72, 32, 64, 32, 56, 32, 48, 32, 40, 32, 32, 32, 24, 32, 16, 32, 8, 32, 8, 40, 8, 48, 8, 56, 8, 64, 8, 72, 8, 80, 8, 88, 8, 96, 8, 104, 8, 112, 8, 120, 8, 128, 16, 128, 24, 128, 32, 128, 40, 128, 48, 128, 56, 128, 64, 128, 72, 128, 80, 128, 88, 128, 96, 128, 104, 128, 112, 128, 112, 120, 112, 112, 112, 104, 112, 96, 112, 88, 112, 80, 112, 72, 112, 64, 112, 56, 112, 48, 112, 40, 112, 32, 112, 24, 104, 24, 96, 24, 88, 24, 80, 24, 72, 24, 64, 24, 56, 24, 48, 24, 40, 24, 32, 24, 24, 24, 16, 24, 8, 24, 0, 24, 0, 32, 0, 40, 0, 48, 0, 56, 0, 64, 0, 72, 0, 80, 0, 88, 0, 96, 0, 104, 0, 112, 0, 120, 0, 128, 0, 136, 8, 136, 16, 136, 24, 136, 32, 136, 40, 136, 48, 136, 56, 136, 64, 136, 72, 136, 80, 136, 88, 136, 96, 136, 104, 136, 112, 136, 120, 136, 120, 128, 120, 120, 120, 112, 120, 104, 120, 96, 120, 88, 120, 80, 120, 72, 120, 64, 120, 56, 120, 48, 120, 40, 120, 32, 120, 24, 120, 16, 112, 16, 104, 16, 96, 16, 88, 16, 80, 16, 72, 16, 64, 16, 56, 16, 48, 16, 40, 16, 32, 16, 24, 16, 16, 16, 8, 16, 0, 16, 0, 144, 8, 144, 16, 144, 24, 144, 32, 144, 40, 144, 48, 144, 56, 144, 64, 144, 72, 144, 80, 144, 88, 144, 96, 144, 104, 144, 112, 144, 120, 144, 120, 8, 112, 8, 104, 8, 96, 8, 88, 8, 80, 8, 72, 8, 64, 8, 56, 8, 48, 8, 40, 8, 32, 8, 24, 8, 16, 8, 8, 8, 0, 8, 0, 152, 8, 152, 16, 152, 24, 152, 32, 152, 40, 152, 48, 152, 56, 152, 64, 152, 72, 152, 80, 152, 88, 152, 96, 152, 104, 152, 112, 152, 120, 152, 120, 0, 112, 0, 104, 0, 96, 0, 88, 0, 80, 0, 72, 0, 64, 0, 56, 0, 48, 0, 40, 0, 32, 0, 24, 0, 16, 0, 8, 0, 0, 0, 0, 0, 0, 8, 8, 0, 8, 8, 32, 0, 32, 8, 40, 0, 40, 8, 64, 0, 64, 8, 72, 0, 72, 8, 96, 0, 96, 8, 104, 0, 104, 8, 16, 16, 16, 24, 24, 16, 24, 24, 48, 16, 48, 24, 56, 16, 56, 24, 80, 16, 80, 24, 88, 16, 88, 24, 112, 16, 112, 24, 120, 16, 120, 24, 0, 32, 0, 40, 8, 32, 8, 40, 32, 32, 32, 40, 40, 32, 40, 40, 64, 32, 64, 40, 72, 32, 72, 40, 96, 32, 96, 40, 104, 32, 104, 40, 16, 48, 16, 56, 24, 48, 24, 56, 48, 48, 48, 56, 56, 48, 56, 56, 80, 48, 80, 56, 88, 48, 88, 56, 112, 48, 112, 56, 120, 48, 120, 56, 0, 64, 0, 72, 8, 64, 8, 72, 32, 64, 32, 72, 40, 64, 40, 72, 64, 64, 64, 72, 72, 64, 72, 72, 96, 64, 96, 72, 104, 64, 104, 72, 16, 80, 16, 88, 24, 80, 24, 88, 48, 80, 48, 88, 56, 80, 56, 88, 80, 80, 80, 88, 88, 80, 88, 88, 112, 80, 112, 88, 120, 80, 120, 88, 0, 96, 0, 104, 8, 96, 8, 104, 32, 96, 32, 104, 40, 96, 40, 104, 64, 96, 64, 104, 72, 96, 72, 104, 96, 96, 96, 104, 104, 96, 104, 104, 16, 112, 16, 120, 24, 112, 24, 120, 48, 112, 48, 120, 56, 112, 56, 120, 80, 112, 80, 120, 88, 112, 88, 120, 112, 112, 112, 120, 120, 112, 120, 120, 0, 128, 0, 136, 8, 128, 8, 136, 32, 128, 32, 136, 40, 128, 40, 136, 64, 128, 64, 136, 72, 128, 72, 136, 96, 128, 96, 136, 104, 128, 104, 136, 16, 144, 16, 152, 24, 144, 24, 152, 48, 144, 48, 152, 56, 144, 56, 152, 80, 144, 80, 152, 88, 144, 88, 152, 112, 144, 112, 152, 120, 144, 120, 152, 16, 0, 16, 8, 24, 0, 24, 8, 48, 0, 48, 8, 56, 0, 56, 8, 80, 0, 80, 8, 88, 0, 88, 8, 112, 0, 112, 8, 120, 0, 120, 8, 0, 16, 0, 24, 8, 16, 8, 24, 32, 16, 32, 24, 40, 16, 40, 24, 64, 16, 64, 24, 72, 16, 72, 24, 96, 16, 96, 24, 104, 16, 104, 24, 16, 32, 16, 40, 24, 32, 24, 40, 48, 32, 48, 40, 56, 32, 56, 40, 80, 32, 80, 40, 88, 32, 88, 40, 112, 32, 112, 40, 120, 32, 120, 40, 0, 48, 0, 56, 8, 48, 8, 56, 32, 48, 32, 56, 40, 48, 40, 56, 64, 48, 64, 56, 72, 48, 72, 56, 96, 48, 96, 56, 104, 48, 104, 56, 16, 64, 16, 72, 24, 64, 24, 72, 48, 64, 48, 72, 56, 64, 56, 72, 80, 64, 80, 72, 88, 64, 88, 72, 112, 64, 112, 72, 120, 64, 120, 72, 0, 80, 0, 88, 8, 80, 8, 88, 32, 80, 32, 88, 40, 80, 40, 88, 64, 80, 64, 88, 72, 80, 72, 88, 96, 80, 96, 88, 104, 80, 104, 88, 16, 96, 16, 104, 24, 96, 24, 104, 48, 96, 48, 104, 56, 96, 56, 104, 80, 96, 80, 104, 88, 96, 88, 104, 112, 96, 112, 104, 120, 96, 120, 104, 0, 112, 0, 120, 8, 112, 8, 120, 32, 112, 32, 120, 40, 112, 40, 120, 64, 112, 64, 120, 72, 112, 72, 120, 96, 112, 96, 120, 104, 112, 104, 120, 16, 128, 16, 136, 24, 128, 24, 136, 48, 128, 48, 136, 56, 128, 56, 136, 80, 128, 80, 136, 88, 128, 88, 136, 112, 128, 112, 136, 120, 128, 120, 136, 0, 144, 0, 152, 8, 144, 8, 152, 32, 144, 32, 152, 40, 144, 40, 152, 64, 144, 64, 152, 72, 144, 72, 152, 96, 144, 96, 152, 104, 144, 104, 152, 72, 56, 8, 72, 104, 88, 104, 72, 32, 80, 72, 96, 64, 128, 0, 24, 8, 136, 72, 88, 56, 104, 24, 0, 64, 16, 24, 56, 72, 128, 112, 32, 0, 144, 80, 144, 72, 8, 88, 24, 24, 136, 48, 104, 16, 16, 96, 64, 56, 128, 112, 40, 8, 152, 48, 120, 16, 24, 112, 0, 40, 88, 40, 0, 40, 48, 120, 56, 72, 80, 48, 80, 16, 40, 120, 24, 56, 56, 88, 88, 32, 0, 48, 72, 72, 32, 96, 104, 0, 64, 72, 72, 112, 104, 112, 8, 80, 56, 24, 48, 120, 120, 56, 48, 64, 88, 72, 0, 112, 112, 32, 128, 120, 80, 48, 24, 40, 56, 0, 80, 56, 136, 56, 0, 24, 32, 104, 96, 32, 88, 88, 96, 120, 72, 88, 32, 24, 128, 80, 0, 8, 88, 120, 8, 16, 56, 120, 152, 40, 72, 96, 56, 112, 16, 16, 48, 32, 96, 48, 112, 80, 72, 112, 72, 88, 8, 16, 128, 8, 32, 16, 104, 56, 40, 80, 120, 48, 56, 40, 80, 88, 64, 32, 8, 0, 96, 8, 48, 8, 0, 120, 16, 16, 80, 80, 112, 120, 112, 72, 24, 112, 80, 48, 96, 64, 80, 120, 32, 48, 48, 0, 112, 8, 128, 64, 8, 56, 112, 96, 0, 72, 64, 56, 88, 112, 144, 88, 56, 80, 48, 104, 40, 56, 72, 96, 96, 0, 0, 64, 56, 96, 48, 104, 104, 88, 144, 120, 48, 104, 152, 24, 104, 56, 144, 0, 32, 32, 24, 16, 72, 112, 136, 24, 152, 104, 0, 88, 120, 72, 144, 96, 136, 96, 40, 112, 128, 0, 152, 80, 96, 56, 120, 72, 48, 88, 112, 24, 96, 24, 24, 8, 112, 48, 8, 64, 64, 88, 72, 112, 88, 40, 16, 64, 112, 32, 16, 112, 56, 88, 0, 16, 152, 48, 0, 0, 88, 48, 40, 104, 120, 0, 16, 104, 144, 24, 16, 80, 128, 32, 152, 24, 80, 96, 128, 24, 40, 64, 32, 32, 48, 96, 152, 112, 48, 0, 40, 40, 152, 24, 72, 56, 16, 80, 16, 40, 8, 64, 96, 120, 136, 56, 80, 32, 40, 104, 80, 40, 24, 112, 120, 32, 144, 16, 64, 88, 152, 40, 112, 112, 96, 16, 8, 96, 72, 64, 40, 64, 24, 0, 128, 16, 112, 48, 152, 40, 136, 16, 88, 120, 64, 96, 112, 120, 128, 8, 120, 24, 144, 80, 32, 0, 136, 40, 32, 120, 0, 48, 144, 112, 152, 56, 8, 32, 72, 80, 80, 64, 136, 96, 120, 32, 136, 8, 16, 40, 128, 120, 40, 48, 136, 8, 144, 120, 104, 8, 24, 0, 56, 120, 144, 96, 32, 80, 24, 8, 96, 48, 128, 16, 136, 88, 48, 24, 64, 56, 64, 24, 112, 112, 24, 8, 56, 88, 136, 16, 120, 80, 88, 40, 40, 0, 8, 40, 104, 64, 0, 48, 88, 64, 104, 80, 136, 80, 152, 48, 32, 0, 120, 40, 96, 16, 96, 40, 144, 8, 40, 80, 40, 32, 56, 56, 152, 0, 104, 80, 104, 88, 104, 72, 112, 112, 64, 0, 72, 40, 120, 120, 88, 8, 80, 64, 48, 88, 40, 32, 64, 8, 104, 104, 8, 24, 8, 56, 32, 40, 64, 56, 96, 72, 136, 88, 16, 104, 128, 72, 104, 88, 128, 48, 64, 80, 8, 104, 56, 104, 136, 72, 152, 32, 32, 32, 120, 64, 144, 32, 112, 64, 120, 64, 72, 104, 16, 104, 24, 104, 112, 96, 24, 48, 16, 88, 80, 56, 24, 72, 120, 0, 48, 104, 64, 16, 144, 96, 88, 96, 16, 32, 104, 80, 64, 96, 80, 16, 0, 24, 88, 72, 16, 72, 40, 8, 8, 8, 64, 96, 144, 24, 120, 120, 96, 104, 48, 64, 152, 104, 32, 96, 8, 16, 32, 0, 0, 8, 0, 16, 0, 24, 0, 32, 0, 40, 0, 48, 0, 56, 0, 64, 0, 72, 0, 80, 0, 88, 0, 96, 0, 104, 0, 112, 0, 120, 0, 0, 32, 8, 32, 16, 32, 24, 32, 32, 32, 40, 32, 48, 32, 56, 32, 64, 32, 72, 32, 80, 32, 88, 32, 96, 32, 104, 32, 112, 32, 120, 32, 0, 64, 8, 64, 16, 64, 24, 64, 32, 64, 40, 64, 48, 64, 56, 64, 64, 64, 72, 64, 80, 64, 88, 64, 96, 64, 104, 64, 112, 64, 120, 64, 0, 96, 8, 96, 16, 96, 24, 96, 32, 96, 40, 96, 48, 96, 56, 96, 64, 96, 72, 96, 80, 96, 88, 96, 96, 96, 104, 96, 112, 96, 120, 96, 0, 128, 8, 128, 16, 128, 24, 128, 32, 128, 40, 128, 48, 128, 56, 128, 64, 128, 72, 128, 80, 128, 88, 128, 96, 128, 104, 128, 112, 128, 120, 128, 0, 8, 8, 8, 16, 8, 24, 8, 32, 8, 40, 8, 48, 8, 56, 8, 64, 8, 72, 8, 80, 8, 88, 8, 96, 8, 104, 8, 112, 8, 120, 8, 0, 40, 8, 40, 16, 40, 24, 40, 32, 40, 40, 40, 48, 40, 56, 40, 64, 40, 72, 40, 80, 40, 88, 40, 96, 40, 104, 40, 112, 40, 120, 40, 0, 72, 8, 72, 16, 72, 24, 72, 32, 72, 40, 72, 48, 72, 56, 72, 64, 72, 72, 72, 80, 72, 88, 72, 96, 72, 104, 72, 112, 72, 120, 72, 0, 104, 8, 104, 16, 104, 24, 104, 32, 104, 40, 104, 48, 104, 56, 104, 64, 104, 72, 104, 80, 104, 88, 104, 96, 104, 104, 104, 112, 104, 120, 104, 0, 136, 8, 136, 16, 136, 24, 136, 32, 136, 40, 136, 48, 136, 56, 136, 64, 136, 72, 136, 80, 136, 88, 136, 96, 136, 104, 136, 112, 136, 120, 136, 0, 16, 8, 16, 16, 16, 24, 16, 32, 16, 40, 16, 48, 16, 56, 16, 64, 16, 72, 16, 80, 16, 88, 16, 96, 16, 104, 16, 112, 16, 120, 16, 0, 48, 8, 48, 16, 48, 24, 48, 32, 48, 40, 48, 48, 48, 56, 48, 64, 48, 72, 48, 80, 48, 88, 48, 96, 48, 104, 48, 112, 48, 120, 48, 0, 80, 8, 80, 16, 80, 24, 80, 32, 80, 40, 80, 48, 80, 56, 80, 64, 80, 72, 80, 80, 80, 88, 80, 96, 80, 104, 80, 112, 80, 120, 80, 0, 112, 8, 112, 16, 112, 24, 112, 32, 112, 40, 112, 48, 112, 56, 112, 64, 112, 72, 112, 80, 112, 88, 112, 96, 112, 104, 112, 112, 112, 120, 112, 0, 144, 8, 144, 16, 144, 24, 144, 32, 144, 40, 144, 48, 144, 56, 144, 64, 144, 72, 144, 80, 144, 88, 144, 96, 144, 104, 144, 112, 144, 120, 144, 0, 24, 8, 24, 16, 24, 24, 24, 32, 24, 40, 24, 48, 24, 56, 24, 64, 24, 72, 24, 80, 24, 88, 24, 96, 24, 104, 24, 112, 24, 120, 24, 0, 56, 8, 56, 16, 56, 24, 56, 32, 56, 40, 56, 48, 56, 56, 56, 64, 56, 72, 56, 80, 56, 88, 56, 96, 56, 104, 56, 112, 56, 120, 56, 0, 88, 8, 88, 16, 88, 24, 88, 32, 88, 40, 88, 48, 88, 56, 88, 64, 88, 72, 88, 80, 88, 88, 88, 96, 88, 104, 88, 112, 88, 120, 88, 0, 120, 8, 120, 16, 120, 24, 120, 32, 120, 40, 120, 48, 120, 56, 120, 64, 120, 72, 120, 80, 120, 88, 120, 96, 120, 104, 120, 112, 120, 120, 120, 0, 152, 8, 152, 16, 152, 24, 152, 32, 152, 40, 152, 48, 152, 56, 152, 64, 152, 72, 152, 80, 152, 88, 152, 96, 152, 104, 152, 112, 152, 120, 152, 0, 0, 0, 8, 0, 16, 0, 24, 0, 32, 0, 40, 0, 48, 0, 56, 0, 64, 0, 72, 0, 80, 0, 88, 0, 96, 0, 104, 0, 112, 0, 120, 0, 128, 0, 136, 0, 144, 0, 152, 32, 0, 32, 8, 32, 16, 32, 24, 32, 32, 32, 40, 32, 48, 32, 56, 32, 64, 32, 72, 32, 80, 32, 88, 32, 96, 32, 104, 32, 112, 32, 120, 32, 128, 32, 136, 32, 144, 32, 152, 64, 0, 64, 8, 64, 16, 64, 24, 64, 32, 64, 40, 64, 48, 64, 56, 64, 64, 64, 72, 64, 80, 64, 88, 64, 96, 64, 104, 64, 112, 64, 120, 64, 128, 64, 136, 64, 144, 64, 152, 96, 0, 96, 8, 96, 16, 96, 24, 96, 32, 96, 40, 96, 48, 96, 56, 96, 64, 96, 72, 96, 80, 96, 88, 96, 96, 96, 104, 96, 112, 96, 120, 96, 128, 96, 136, 96, 144, 96, 152, 8, 0, 8, 8, 8, 16, 8, 24, 8, 32, 8, 40, 8, 48, 8, 56, 8, 64, 8, 72, 8, 80, 8, 88, 8, 96, 8, 104, 8, 112, 8, 120, 8, 128, 8, 136, 8, 144, 8, 152, 40, 0, 40, 8, 40, 16, 40, 24, 40, 32, 40, 40, 40, 48, 40, 56, 40, 64, 40, 72, 40, 80, 40, 88, 40, 96, 40, 104, 40, 112, 40, 120, 40, 128, 40, 136, 40, 144, 40, 152, 72, 0, 72, 8, 72, 16, 72, 24, 72, 32, 72, 40, 72, 48, 72, 56, 72, 64, 72, 72, 72, 80, 72, 88, 72, 96, 72, 104, 72, 112, 72, 120, 72, 128, 72, 136, 72, 144, 72, 152, 104, 0, 104, 8, 104, 16, 104, 24, 104, 32, 104, 40, 104, 48, 104, 56, 104, 64, 104, 72, 104, 80, 104, 88, 104, 96, 104, 104, 104, 112, 104, 120, 104, 128, 104, 136, 104, 144, 104, 152, 16, 0, 16, 8, 16, 16, 16, 24, 16, 32, 16, 40, 16, 48, 16, 56, 16, 64, 16, 72, 16, 80, 16, 88, 16, 96, 16, 104, 16, 112, 16, 120, 16, 128, 16, 136, 16, 144, 16, 152, 48, 0, 48, 8, 48, 16, 48, 24, 48, 32, 48, 40, 48, 48, 48, 56, 48, 64, 48, 72, 48, 80, 48, 88, 48, 96, 48, 104, 48, 112, 48, 120, 48, 128, 48, 136, 48, 144, 48, 152, 80, 0, 80, 8, 80, 16, 80, 24, 80, 32, 80, 40, 80, 48, 80, 56, 80, 64, 80, 72, 80, 80, 80, 88, 80, 96, 80, 104, 80, 112, 80, 120, 80, 128, 80, 136, 80, 144, 80, 152, 112, 0, 112, 8, 112, 16, 112, 24, 112, 32, 112, 40, 112, 48, 112, 56, 112, 64, 112, 72, 112, 80, 112, 88, 112, 96, 112, 104, 112, 112, 112, 120, 112, 128, 112, 136, 112, 144, 112, 152, 24, 0, 24, 8, 24, 16, 24, 24, 24, 32, 24, 40, 24, 48, 24, 56, 24, 64, 24, 72, 24, 80, 24, 88, 24, 96, 24, 104, 24, 112, 24, 120, 24, 128, 24, 136, 24, 144, 24, 152, 56, 0, 56, 8, 56, 16, 56, 24, 56, 32, 56, 40, 56, 48, 56, 56, 56, 64, 56, 72, 56, 80, 56, 88, 56, 96, 56, 104, 56, 112, 56, 120, 56, 128, 56, 136, 56, 144, 56, 152, 88, 0, 88, 8, 88, 16, 88, 24, 88, 32, 88, 40, 88, 48, 88, 56, 88, 64, 88, 72, 88, 80, 88, 88, 88, 96, 88, 104, 88, 112, 88, 120, 88, 128, 88, 136, 88, 144, 88, 152, 120, 0, 120, 8, 120, 16, 120, 24, 120, 32, 120, 40, 120, 48, 120, 56, 120, 64, 120, 72, 120, 80, 120, 88, 120, 96, 120, 104, 120, 112, 120, 120, 120, 128, 120, 136, 120, 144, 120, 152, 0, 0, 8, 0, 0, 8, 16, 0, 8, 8, 0, 16, 24, 0, 16, 8, 8, 16, 0, 24, 32, 0, 24, 8, 16, 16, 8, 24, 0, 32, 40, 0, 32, 8, 24, 16, 16, 24, 8, 32, 0, 40, 48, 0, 40, 8, 32, 16, 24, 24, 16, 32, 8, 40, 0, 48, 56, 0, 48, 8, 40, 16, 32, 24, 24, 32, 16, 40, 8, 48, 0, 56, 64, 0, 56, 8, 48, 16, 40, 24, 32, 32, 24, 40, 16, 48, 8, 56, 0, 64, 72, 0, 64, 8, 56, 16, 48, 24, 40, 32, 32, 40, 24, 48, 16, 56, 8, 64, 0, 72, 80, 0, 72, 8, 64, 16, 56, 24, 48, 32, 40, 40, 32, 48, 24, 56, 16, 64, 8, 72, 0, 80, 88, 0, 80, 8, 72, 16, 64, 24, 56, 32, 48, 40, 40, 48, 32, 56, 24, 64, 16, 72, 8, 80, 0, 88, 96, 0, 88, 8, 80, 16, 72, 24, 64, 32, 56, 40, 48, 48, 40, 56, 32, 64, 24, 72, 16, 80, 8, 88, 0, 96, 104, 0, 96, 8, 88, 16, 80, 24, 72, 32, 64, 40, 56, 48, 48, 56, 40, 64, 32, 72, 24, 80, 16, 88, 8, 96, 0, 104, 112, 0, 104, 8, 96, 16, 88, 24, 80, 32, 72, 40, 64, 48, 56, 56, 48, 64, 40, 72, 32, 80, 24, 88, 16, 96, 8, 104, 0, 112, 120, 0, 112, 8, 104, 16, 96, 24, 88, 32, 80, 40, 72, 48, 64, 56, 56, 64, 48, 72, 40, 80, 32, 88, 24, 96, 16, 104, 8, 112, 0, 120, 120, 8, 112, 16, 104, 24, 96, 32, 88, 40, 80, 48, 72, 56, 64, 64, 56, 72, 48, 80, 40, 88, 32, 96, 24, 104, 16, 112, 8, 120, 120, 16, 112, 24, 104, 32, 96, 40, 88, 48, 80, 56, 72, 64, 64, 72, 56, 80, 48, 88, 40, 96, 32, 104, 24, 112, 16, 120, 120, 24, 112, 32, 104, 40, 96, 48, 88, 56, 80, 64, 72, 72, 64, 80, 56, 88, 48, 96, 40, 104, 32, 112, 24, 120, 120, 32, 112, 40, 104, 48, 96, 56, 88, 64, 80, 72, 72, 80, 64, 88, 56, 96, 48, 104, 40, 112, 32, 120, 120, 40, 112, 48, 104, 56, 96, 64, 88, 72, 80, 80, 72, 88, 64, 96, 56, 104, 48, 112, 40, 120, 120, 48, 112, 56, 104, 64, 96, 72, 88, 80, 80, 88, 72, 96, 64, 104, 56, 112, 48, 120, 120, 56, 112, 64, 104, 72, 96, 80, 88, 88, 80, 96, 72, 104, 64, 112, 56, 120, 120, 64, 112, 72, 104, 80, 96, 88, 88, 96, 80, 104, 72, 112, 64, 120, 120, 72, 112, 80, 104, 88, 96, 96, 88, 104, 80, 112, 72, 120, 120, 80, 112, 88, 104, 96, 96, 104, 88, 112, 80, 120, 120, 88, 112, 96, 104, 104, 96, 112, 88, 120, 120, 96, 112, 104, 104, 112, 96, 120, 120, 104, 112, 112, 104, 120, 120, 112, 112, 120, 120, 120, 64, 56, 64, 64, 56, 64, 56, 56, 56, 48, 64, 48, 72, 48, 72, 56, 72, 64, 72, 72, 64, 72, 56, 72, 48, 72, 48, 64, 48, 56, 48, 48, 48, 40, 56, 40, 64, 40, 72, 40, 80, 40, 80, 48, 80, 56, 80, 64, 80, 72, 80, 80, 72, 80, 64, 80, 56, 80, 48, 80, 40, 80, 40, 72, 40, 64, 40, 56, 40, 48, 40, 40, 40, 32, 48, 32, 56, 32, 64, 32, 72, 32, 80, 32, 88, 32, 88, 40, 88, 48, 88, 56, 88, 64, 88, 72, 88, 80, 88, 88, 80, 88, 72, 88, 64, 88, 56, 88, 48, 88, 40, 88, 32, 88, 32, 80, 32, 72, 32, 64, 32, 56, 32, 48, 32, 40, 32, 32, 32, 24, 40, 24, 48, 24, 56, 24, 64, 24, 72, 24, 80, 24, 88, 24, 96, 24, 96, 32, 96, 40, 96, 48, 96, 56, 96, 64, 96, 72, 96, 80, 96, 88, 96, 96, 88, 96, 80, 96, 72, 96, 64, 96, 56, 96, 48, 96, 40, 96, 32, 96, 24, 96, 24, 88, 24, 80, 24, 72, 24, 64, 24, 56, 24, 48, 24, 40, 24, 32, 24, 24, 24, 16, 32, 16, 40, 16, 48, 16, 56, 16, 64, 16, 72, 16, 80, 16, 88, 16, 96, 16, 104, 16, 104, 24, 104, 32, 104, 40, 104, 48, 104, 56, 104, 64, 104, 72, 104, 80, 104, 88, 104, 96, 104, 104, 96, 104, 88, 104, 80, 104, 72, 104, 64, 104, 56, 104, 48, 104, 40, 104, 32, 104, 24, 104, 16, 104, 16, 96, 16, 88, 16, 80, 16, 72, 16, 64, 16, 56, 16, 48, 16, 40, 16, 32, 16, 24, 16, 16, 16, 8, 24, 8, 32, 8, 40, 8, 48, 8, 56, 8, 64, 8, 72, 8, 80, 8, 88, 8, 96, 8, 104, 8, 112, 8, 112, 16, 112, 24, 112, 32, 112, 40, 112, 48, 112, 56, 112, 64, 112, 72, 112, 80, 112, 88, 112, 96, 112, 104, 112, 112, 104, 112, 96, 112, 88, 112, 80, 112, 72, 112, 64, 112, 56, 112, 48, 112, 40, 112, 32, 112, 24, 112, 16, 112, 8, 112, 8, 104, 8, 96, 8, 88, 8, 80, 8, 72, 8, 64, 8, 56, 8, 48, 8, 40, 8, 32, 8, 24, 8, 16, 8, 8, 8, 0, 16, 0, 24, 0, 32, 0, 40, 0, 48, 0, 56, 0, 64, 0, 72, 0, 80, 0, 88, 0, 96, 0, 104, 0, 112, 0, 120, 0, 120, 8, 120, 16, 120, 24, 120, 32, 120, 40, 120, 48, 120, 56, 120, 64, 120, 72, 120, 80, 120, 88, 120, 96, 120, 104, 120, 112, 120, 120, 112, 120, 104, 120, 96, 120, 88, 120, 80, 120, 72, 120, 64, 120, 56, 120, 48, 120, 40, 120, 32, 120, 24, 120, 16, 120, 8, 120, 0, 120, 0, 112, 0, 104, 0, 96, 0, 88, 0, 80, 0, 72, 0, 64, 0, 56, 0, 48, 0, 40, 0, 32, 0, 24, 0, 16, 0, 8, 0, 0, 0, 0, 8, 0, 0, 8, 8, 8, 0, 32, 8, 32, 0, 40, 8, 40, 0, 64, 8, 64, 0, 72, 8, 72, 0, 96, 8, 96, 0, 104, 8, 104, 16, 16, 24, 16, 16, 24, 24, 24, 16, 48, 24, 48, 16, 56, 24, 56, 16, 80, 24, 80, 16, 88, 24, 88, 16, 112, 24, 112, 16, 120, 24, 120, 32, 0, 40, 0, 32, 8, 40, 8, 32, 32, 40, 32, 32, 40, 40, 40, 32, 64, 40, 64, 32, 72, 40, 72, 32, 96, 40, 96, 32, 104, 40, 104, 48, 16, 56, 16, 48, 24, 56, 24, 48, 48, 56, 48, 48, 56, 56, 56, 48, 80, 56, 80, 48, 88, 56, 88, 48, 112, 56, 112, 48, 120, 56, 120, 64, 0, 72, 0, 64, 8, 72, 8, 64, 32, 72, 32, 64, 40, 72, 40, 64, 64, 72, 64, 64, 72, 72, 72, 64, 96, 72, 96, 64, 104, 72, 104, 80, 16, 88, 16, 80, 24, 88, 24, 80, 48, 88, 48, 80, 56, 88, 56, 80, 80, 88, 80, 80, 88, 88, 88, 80, 112, 88, 112, 80, 120, 88, 120, 96, 0, 104, 0, 96, 8, 104, 8, 96, 32, 104, 32, 96, 40, 104, 40, 96, 64, 104, 64, 96, 72, 104, 72, 96, 96, 104, 96, 96, 104, 104, 104, 112, 16, 120, 16, 112, 24, 120, 24, 112, 48, 120, 48, 112, 56, 120, 56, 112, 80, 120, 80, 112, 88, 120, 88, 112, 112, 120, 112, 112, 120, 120, 120, 0, 16, 8, 16, 0, 24, 8, 24, 0, 48, 8, 48, 0, 56, 8, 56, 0, 80, 8, 80, 0, 88, 8, 88, 0, 112, 8, 112, 0, 120, 8, 120, 16, 0, 24, 0, 16, 8, 24, 8, 16, 32, 24, 32, 16, 40, 24, 40, 16, 64, 24, 64, 16, 72, 24, 72, 16, 96, 24, 96, 16, 104, 24, 104, 32, 16, 40, 16, 32, 24, 40, 24, 32, 48, 40, 48, 32, 56, 40, 56, 32, 80, 40, 80, 32, 88, 40, 88, 32, 112, 40, 112, 32, 120, 40, 120, 48, 0, 56, 0, 48, 8, 56, 8, 48, 32, 56, 32, 48, 40, 56, 40, 48, 64, 56, 64, 48, 72, 56, 72, 48, 96, 56, 96, 48, 104, 56, 104, 64, 16, 72, 16, 64, 24, 72, 24, 64, 48, 72, 48, 64, 56, 72, 56, 64, 80, 72, 80, 64, 88, 72, 88, 64, 112, 72, 112, 64, 120, 72, 120, 80, 0, 88, 0, 80, 8, 88, 8, 80, 32, 88, 32, 80, 40, 88, 40, 80, 64, 88, 64, 80, 72, 88, 72, 80, 96, 88, 96, 80, 104, 88, 104, 96, 16, 104, 16, 96, 24, 104, 24, 96, 48, 104, 48, 96, 56, 104, 56, 96, 80, 104, 80, 96, 88, 104, 88, 96, 112, 104, 112, 96, 120, 104, 120, 112, 0, 120, 0, 112, 8, 120, 8, 112, 32, 120, 32, 112, 40, 120, 40, 112, 64, 120, 64, 112, 72, 120, 72, 112, 96, 120, 96, 112, 104, 120, 104, 8, 88, 96, 120, 56, 96, 32, 56, 96, 56, 104, 0, 96, 48, 16, 8, 88, 64, 0, 32, 80, 104, 56, 16, 88, 72, 0, 80, 32, 72, 104, 96, 80, 0, 16, 72, 112, 96, 40, 56, 48, 56, 120, 112, 0, 56, 0, 64, 16, 48, 24, 32, 88, 112, 72, 120, 0, 72, 8, 80, 16, 16, 24, 48, 48, 48, 8, 96, 112, 0, 24, 40, 120, 56, 56, 0, 80, 96, 8, 56, 40, 16, 96, 16, 24, 104, 88, 88, 0, 24, 96, 104, 56, 120, 0, 40, 40, 72, 104, 48, 72, 80, 16, 0, 96, 32, 16, 64, 64, 120, 64, 96, 112, 88, 88, 24, 120, 40, 32, 8, 80, 16, 32, 88, 40, 32, 96, 8, 8, 32, 8, 16, 32, 104, 16, 88, 56, 88, 104, 16, 112, 64, 120, 96, 88, 80, 64, 64, 16, 80, 24, 112, 120, 32, 32, 64, 104, 104, 96, 96, 96, 112, 104, 32, 64, 8, 72, 64, 104, 72, 88, 16, 72, 112, 48, 112, 64, 72, 40, 88, 16, 32, 64, 88, 112, 112, 8, 64, 80, 80, 24, 8, 0, 0, 24, 16, 48, 80, 104, 8, 56, 48, 32, 96, 8, 104, 72, 72, 24, 64, 104, 56, 64, 104, 120, 72, 56, 72, 88, 32, 8, 72, 72, 48, 112, 16, 8, 112, 40, 104, 56, 24, 56, 112, 80, 112, 104, 112, 48, 16, 64, 0, 72, 40, 48, 88, 112, 56, 8, 40, 40, 40, 80, 56, 8, 8, 120, 48, 104, 40, 40, 24, 64, 56, 80, 48, 8, 0, 16, 120, 0, 112, 16, 56, 32, 32, 72, 16, 24, 56, 112, 24, 80, 72, 48, 40, 16, 24, 72, 0, 24, 0, 88, 104, 80, 120, 40, 120, 24, 120, 32, 80, 112, 48, 80, 40, 32, 120, 0, 16, 56, 32, 64, 112, 88, 96, 0, 8, 32, 40, 120, 104, 80, 32, 56, 64, 112, 32, 0, 120, 64, 32, 56, 80, 88, 40, 8, 24, 64, 16, 48, 96, 80, 64, 112, 120, 56, 104, 64, 48, 64, 40, 72, 56, 96, 0, 16, 40, 8, 48, 104, 80, 0, 48, 48, 0, 112, 40, 40, 8, 104, 120, 120, 16, 32, 112, 80, 8, 64, 24, 88, 120, 56, 56, 72, 8, 88, 48, 48, 72, 24, 80, 48, 32, 48, 120, 72, 24, 120, 64, 48, 64, 96, 72, 120, 80, 72, 88, 0, 104, 32, 0, 40, 96, 24, 24, 8, 120, 16, 112, 120, 24, 112, 80, 104, 64, 80, 88, 56, 40, 72, 32, 104, 24, 40, 80, 24, 96, 32, 48, 104, 88, 24, 72, 48, 104, 56, 8, 96, 24, 40, 112, 112, 72, 40, 48, 40, 64, 24, 88, 120, 0, 96, 88, 0, 96, 96, 40, 16, 104, 96, 80, 48, 8, 88, 8, 96, 64, 64, 80, 72, 104, 0, 88, 120, 8, 112, 8, 120, 88, 32, 24, 120, 120, 88, 56, 48, 24, 40, 0, 112, 104, 88, 0, 72, 96, 80, 24, 32, 16, 16, 96, 0, 0, 8, 0, 16, 0, 24, 0, 32, 0, 40, 0, 48, 0, 56, 0, 64, 0, 72, 0, 80, 0, 88, 0, 96, 0, 104, 0, 112, 0, 120, 0, 0, 32, 8, 32, 16, 32, 24, 32, 32, 32, 40, 32, 48, 32, 56, 32, 64, 32, 72, 32, 80, 32, 88, 32, 96, 32, 104, 32, 112, 32, 120, 32, 0, 64, 8, 64, 16, 64, 24, 64, 32, 64, 40, 64, 48, 64, 56, 64, 64, 64, 72, 64, 80, 64, 88, 64, 96, 64, 104, 64, 112, 64, 120, 64, 0, 96, 8, 96, 16, 96, 24, 96, 32, 96, 40, 96, 48, 96, 56, 96, 64, 96, 72, 96, 80, 96, 88, 96, 96, 96, 104, 96, 112, 96, 120, 96, 0, 8, 8, 8, 16, 8, 24, 8, 32, 8, 40, 8, 48, 8, 56, 8, 64, 8, 72, 8, 80, 8, 88, 8, 96, 8, 104, 8, 112, 8, 120, 8, 0, 40, 8, 40, 16, 40, 24, 40, 32, 40, 40, 40, 48, 40, 56, 40, 64, 40, 72, 40, 80, 40, 88, 40, 96, 40, 104, 40, 112, 40, 120, 40, 0, 72, 8, 72, 16, 72, 24, 72, 32, 72, 40, 72, 48, 72, 56, 72, 64, 72, 72, 72, 80, 72, 88, 72, 96, 72, 104, 72, 112, 72, 120, 72, 0, 104, 8, 104, 16, 104, 24, 104, 32, 104, 40, 104, 48, 104, 56, 104, 64, 104, 72, 104, 80, 104, 88, 104, 96, 104, 104, 104, 112, 104, 120, 104, 0, 16, 8, 16, 16, 16, 24, 16, 32, 16, 40, 16, 48, 16, 56, 16, 64, 16, 72, 16, 80, 16, 88, 16, 96, 16, 104, 16, 112, 16, 120, 16, 0, 48, 8, 48, 16, 48, 24, 48, 32, 48, 40, 48, 48, 48, 56, 48, 64, 48, 72, 48, 80, 48, 88, 48, 96, 48, 104, 48, 112, 48, 120, 48, 0, 80, 8, 80, 16, 80, 24, 80, 32, 80, 40, 80, 48, 80, 56, 80, 64, 80, 72, 80, 80, 80, 88, 80, 96, 80, 104, 80, 112, 80, 120, 80, 0, 112, 8, 112, 16, 112, 24, 112, 32, 112, 40, 112, 48, 112, 56, 112, 64, 112, 72, 112, 80, 112, 88, 112, 96, 112, 104, 112, 112, 112, 120, 112, 0, 24, 8, 24, 16, 24, 24, 24, 32, 24, 40, 24, 48, 24, 56, 24, 64, 24, 72, 24, 80, 24, 88, 24, 96, 24, 104, 24, 112, 24, 120, 24, 0, 56, 8, 56, 16, 56, 24, 56, 32, 56, 40, 56, 48, 56, 56, 56, 64, 56, 72, 56, 80, 56, 88, 56, 96, 56, 104, 56, 112, 56, 120, 56, 0, 88, 8, 88, 16, 88, 24, 88, 32, 88, 40, 88, 48, 88, 56, 88, 64, 88, 72, 88, 80, 88, 88, 88, 96, 88, 104, 88, 112, 88, 120, 88, 0, 120, 8, 120, 16, 120, 24, 120, 32, 120, 40, 120, 48, 120, 56, 120, 64, 120, 72, 120, 80, 120, 88, 120, 96, 120, 104, 120, 112, 120, 120, 120, 0, 0, 8, 0, 0, 8, 16, 0, 8, 8, 0, 16, 24, 0, 16, 8, 8, 16, 0, 24, 32, 0, 24, 8, 16, 16, 8, 24, 0, 32, 40, 0, 32, 8, 24, 16, 16, 24, 8, 32, 0, 40, 48, 0, 40, 8, 32, 16, 24, 24, 16, 32, 8, 40, 0, 48, 56, 0, 48, 8, 40, 16, 32, 24, 24, 32, 16, 40, 8, 48, 0, 56, 64, 0, 56, 8, 48, 16, 40, 24, 32, 32, 24, 40, 16, 48, 8, 56, 0, 64, 72, 0, 64, 8, 56, 16, 48, 24, 40, 32, 32, 40, 24, 48, 16, 56, 8, 64, 0, 72, 80, 0, 72, 8, 64, 16, 56, 24, 48, 32, 40, 40, 32, 48, 24, 56, 16, 64, 8, 72, 0, 80, 88, 0, 80, 8, 72, 16, 64, 24, 56, 32, 48, 40, 40, 48, 32, 56, 24, 64, 16, 72, 8, 80, 0, 88, 96, 0, 88, 8, 80, 16, 72, 24, 64, 32, 56, 40, 48, 48, 40, 56, 32, 64, 24, 72, 16, 80, 8, 88, 0, 96, 104, 0, 96, 8, 88, 16, 80, 24, 72, 32, 64, 40, 56, 48, 48, 56, 40, 64, 32, 72, 24, 80, 16, 88, 8, 96, 0, 104, 112, 0, 104, 8, 96, 16, 88, 24, 80, 32, 72, 40, 64, 48, 56, 56, 48, 64, 40, 72, 32, 80, 24, 88, 16, 96, 8, 104, 0, 112, 112, 8, 104, 16, 96, 24, 88, 32, 80, 40, 72, 48, 64, 56, 56, 64, 48, 72, 40, 80, 32, 88, 24, 96, 16, 104, 8, 112, 0, 120, 112, 16, 104, 24, 96, 32, 88, 40, 80, 48, 72, 56, 64, 64, 56, 72, 48, 80, 40, 88, 32, 96, 24, 104, 16, 112, 8, 120, 0, 128, 112, 24, 104, 32, 96, 40, 88, 48, 80, 56, 72, 64, 64, 72, 56, 80, 48, 88, 40, 96, 32, 104, 24, 112, 16, 120, 8, 128, 0, 136, 112, 32, 104, 40, 96, 48, 88, 56, 80, 64, 72, 72, 64, 80, 56, 88, 48, 96, 40, 104, 32, 112, 24, 120, 16, 128, 8, 136, 0, 144, 112, 40, 104, 48, 96, 56, 88, 64, 80, 72, 72, 80, 64, 88, 56, 96, 48, 104, 40, 112, 32, 120, 24, 128, 16, 136, 8, 144, 0, 152, 112, 48, 104, 56, 96, 64, 88, 72, 80, 80, 72, 88, 64, 96, 56, 104, 48, 112, 40, 120, 32, 128, 24, 136, 16, 144, 8, 152, 112, 56, 104, 64, 96, 72, 88, 80, 80, 88, 72, 96, 64, 104, 56, 112, 48, 120, 40, 128, 32, 136, 24, 144, 16, 152, 112, 64, 104, 72, 96, 80, 88, 88, 80, 96, 72, 104, 64, 112, 56, 120, 48, 128, 40, 136, 32, 144, 24, 152, 112, 72, 104, 80, 96, 88, 88, 96, 80, 104, 72, 112, 64, 120, 56, 128, 48, 136, 40, 144, 32, 152, 112, 80, 104, 88, 96, 96, 88, 104, 80, 112, 72, 120, 64, 128, 56, 136, 48, 144, 40, 152, 112, 88, 104, 96, 96, 104, 88, 112, 80, 120, 72, 128, 64, 136, 56, 144, 48, 152, 112, 96, 104, 104, 96, 112, 88, 120, 80, 128, 72, 136, 64, 144, 56, 152, 112, 104, 104, 112, 96, 120, 88, 128, 80, 136, 72, 144, 64, 152, 112, 112, 104, 120, 96, 128, 88, 136, 80, 144, 72, 152, 112, 120, 104, 128, 96, 136, 88, 144, 80, 152, 112, 128, 104, 136, 96, 144, 88, 152, 112, 136, 104, 144, 96, 152, 112, 144, 104, 152, 112, 152, 56, 72, 56, 80, 48, 80, 48, 72, 48, 64, 56, 64, 64, 64, 64, 72, 64, 80, 64, 88, 56, 88, 48, 88, 40, 88, 40, 80, 40, 72, 40, 64, 40, 56, 48, 56, 56, 56, 64, 56, 72, 56, 72, 64, 72, 72, 72, 80, 72, 88, 72, 96, 64, 96, 56, 96, 48, 96, 40, 96, 32, 96, 32, 88, 32, 80, 32, 72, 32, 64, 32, 56, 32, 48, 40, 48, 48, 48, 56, 48, 64, 48, 72, 48, 80, 48, 80, 56, 80, 64, 80, 72, 80, 80, 80, 88, 80, 96, 80, 104, 72, 104, 64, 104, 56, 104, 48, 104, 40, 104, 32, 104, 24, 104, 24, 96, 24, 88, 24, 80, 24, 72, 24, 64, 24, 56, 24, 48, 24, 40, 32, 40, 40, 40, 48, 40, 56, 40, 64, 40, 72, 40, 80, 40, 88, 40, 88, 48, 88, 56, 88, 64, 88, 72, 88, 80, 88, 88, 88, 96, 88, 104, 88, 112, 80, 112, 72, 112, 64, 112, 56, 112, 48, 112, 40, 112, 32, 112, 24, 112, 16, 112, 16, 104, 16, 96, 16, 88, 16, 80, 16, 72, 16, 64, 16, 56, 16, 48, 16, 40, 16, 32, 24, 32, 32, 32, 40, 32, 48, 32, 56, 32, 64, 32, 72, 32, 80, 32, 88, 32, 96, 32, 96, 40, 96, 48, 96, 56, 96, 64, 96, 72, 96, 80, 96, 88, 96, 96, 96, 104, 96, 112, 96, 120, 88, 120, 80, 120, 72, 120, 64, 120, 56, 120, 48, 120, 40, 120, 32, 120, 24, 120, 16, 120, 8, 120, 8, 112, 8, 104, 8, 96, 8, 88, 8, 80, 8, 72, 8, 64, 8, 56, 8, 48, 8, 40, 8, 32, 8, 24, 16, 24, 24, 24, 32, 24, 40, 24, 48, 24, 56, 24, 64, 24, 72, 24, 80, 24, 88, 24, 96, 24, 104, 24, 104, 32, 104, 40, 104, 48, 104, 56, 104, 64, 104, 72, 104, 80, 104, 88, 104, 96, 104, 104, 104, 112, 104, 120, 104, 128, 96, 128, 88, 128, 80, 128, 72, 128, 64, 128, 56, 128, 48, 128, 40, 128, 32, 128, 24, 128, 16, 128, 8, 128, 0, 128, 0, 120, 0, 112, 0, 104, 0, 96, 0, 88, 0, 80, 0, 72, 0, 64, 0, 56, 0, 48, 0, 40, 0, 32, 0, 24, 0, 16, 8, 16, 16, 16, 24, 16, 32, 16, 40, 16, 48, 16, 56, 16, 64, 16, 72, 16, 80, 16, 88, 16, 96, 16, 104, 16, 112, 16, 112, 24, 112, 32, 112, 40, 112, 48, 112, 56, 112, 64, 112, 72, 112, 80, 112, 88, 112, 96, 112, 104, 112, 112, 112, 120, 112, 128, 112, 136, 104, 136, 96, 136, 88, 136, 80, 136, 72, 136, 64, 136, 56, 136, 48, 136, 40, 136, 32, 136, 24, 136, 16, 136, 8, 136, 0, 136, 0, 8, 8, 8, 16, 8, 24, 8, 32, 8, 40, 8, 48, 8, 56, 8, 64, 8, 72, 8, 80, 8, 88, 8, 96, 8, 104, 8, 112, 8, 112, 144, 104, 144, 96, 144, 88, 144, 80, 144, 72, 144, 64, 144, 56, 144, 48, 144, 40, 144, 32, 144, 24, 144, 16, 144, 8, 144, 0, 144, 0, 0, 8, 0, 16, 0, 24, 0, 32, 0, 40, 0, 48, 0, 56, 0, 64, 0, 72, 0, 80, 0, 88, 0, 96, 0, 104, 0, 112, 0, 112, 152, 104, 152, 96, 152, 88, 152, 80, 152, 72, 152, 64, 152, 56, 152, 48, 152, 40, 152, 32, 152, 24, 152, 16, 152, 8, 152, 0, 152, 0, 0, 8, 0, 16, 0, 0, 8, 8, 8, 16, 8, 0, 32, 8, 32, 16, 32, 0, 40, 8, 40, 16, 40, 0, 64, 8, 64, 16, 64, 0, 72, 8, 72, 16, 72, 0, 96, 8, 96, 16, 96, 0, 104, 8, 104, 16, 104, 0, 128, 8, 128, 16, 128, 0, 136, 8, 136, 16, 136, 24, 16, 32, 16, 40, 16, 24, 24, 32, 24, 40, 24, 24, 48, 32, 48, 40, 48, 24, 56, 32, 56, 40, 56, 24, 80, 32, 80, 40, 80, 24, 88, 32, 88, 40, 88, 24, 112, 32, 112, 40, 112, 24, 120, 32, 120, 40, 120, 24, 144, 32, 144, 40, 144, 24, 152, 32, 152, 40, 152, 48, 0, 56, 0, 64, 0, 48, 8, 56, 8, 64, 8, 48, 32, 56, 32, 64, 32, 48, 40, 56, 40, 64, 40, 48, 64, 56, 64, 64, 64, 48, 72, 56, 72, 64, 72, 48, 96, 56, 96, 64, 96, 48, 104, 56, 104, 64, 104, 48, 128, 56, 128, 64, 128, 48, 136, 56, 136, 64, 136, 72, 16, 80, 16, 88, 16, 72, 24, 80, 24, 88, 24, 72, 48, 80, 48, 88, 48, 72, 56, 80, 56, 88, 56, 72, 80, 80, 80, 88, 80, 72, 88, 80, 88, 88, 88, 72, 112, 80, 112, 88, 112, 72, 120, 80, 120, 88, 120, 72, 144, 80, 144, 88, 144, 72, 152, 80, 152, 88, 152, 96, 0, 104, 0, 112, 0, 96, 8, 104, 8, 112, 8, 96, 32, 104, 32, 112, 32, 96, 40, 104, 40, 112, 40, 96, 64, 104, 64, 112, 64, 96, 72, 104, 72, 112, 72, 96, 96, 104, 96, 112, 96, 96, 104, 104, 104, 112, 104, 96, 128, 104, 128, 112, 128, 96, 136, 104, 136, 112, 136, 0, 16, 8, 16, 16, 16, 0, 24, 8, 24, 16, 24, 0, 48, 8, 48, 16, 48, 0, 56, 8, 56, 16, 56, 0, 80, 8, 80, 16, 80, 0, 88, 8, 88, 16, 88, 0, 112, 8, 112, 16, 112, 0, 120, 8, 120, 16, 120, 0, 144, 8, 144, 16, 144, 0, 152, 8, 152, 16, 152, 24, 0, 32, 0, 40, 0, 24, 8, 32, 8, 40, 8, 24, 32, 32, 32, 40, 32, 24, 40, 32, 40, 40, 40, 24, 64, 32, 64, 40, 64, 24, 72, 32, 72, 40, 72, 24, 96, 32, 96, 40, 96, 24, 104, 32, 104, 40, 104, 24, 128, 32, 128, 40, 128, 24, 136, 32, 136, 40, 136, 48, 16, 56, 16, 64, 16, 48, 24, 56, 24, 64, 24, 48, 48, 56, 48, 64, 48, 48, 56, 56, 56, 64, 56, 48, 80, 56, 80, 64, 80, 48, 88, 56, 88, 64, 88, 48, 112, 56, 112, 64, 112, 48, 120, 56, 120, 64, 120, 48, 144, 56, 144, 64, 144, 48, 152, 56, 152, 64, 152, 72, 0, 80, 0, 88, 0, 72, 8, 80, 8, 88, 8, 72, 32, 80, 32, 88, 32, 72, 40, 80, 40, 88, 40, 72, 64, 80, 64, 88, 64, 72, 72, 80, 72, 88, 72, 72, 96, 80, 96, 88, 96, 72, 104, 80, 104, 88, 104, 72, 128, 80, 128, 88, 128, 72, 136, 80, 136, 88, 136, 96, 16, 104, 16, 112, 16, 96, 24, 104, 24, 112, 24, 96, 48, 104, 48, 112, 48, 96, 56, 104, 56, 112, 56, 96, 80, 104, 80, 112, 80, 96, 88, 104, 88, 112, 88, 96, 112, 104, 112, 112, 112, 96, 120, 104, 120, 112, 120, 96, 144, 104, 144, 112, 144, 96, 152, 104, 152, 112, 152, 48, 152, 40, 128, 8, 16, 16, 0, 112, 112, 104, 72, 16, 144, 16, 88, 24, 144, 40, 80, 32, 64, 88, 136, 48, 88, 32, 152, 104, 112, 16, 24, 88, 32, 104, 120, 80, 144, 96, 144, 104, 88, 40, 40, 80, 136, 16, 8, 80, 16, 104, 80, 16, 96, 88, 64, 72, 104, 104, 128, 112, 144, 96, 88, 0, 16, 16, 136, 40, 64, 80, 104, 104, 24, 0, 56, 88, 120, 32, 16, 72, 40, 104, 32, 32, 72, 56, 152, 104, 152, 16, 16, 112, 0, 72, 8, 56, 136, 32, 88, 72, 56, 104, 144, 80, 40, 96, 48, 72, 120, 32, 112, 32, 80, 64, 96, 104, 56, 64, 56, 48, 32, 64, 88, 56, 8, 0, 80, 104, 16, 104, 136, 48, 112, 96, 24, 24, 152, 32, 48, 88, 40, 0, 120, 8, 40, 0, 72, 0, 8, 112, 64, 96, 80, 24, 80, 56, 80, 8, 24, 88, 56, 96, 64, 64, 24, 80, 128, 80, 8, 16, 112, 88, 8, 8, 96, 24, 48, 88, 72, 48, 96, 112, 8, 88, 144, 0, 64, 8, 104, 96, 112, 72, 88, 0, 128, 48, 0, 48, 24, 88, 152, 64, 112, 72, 64, 72, 24, 96, 152, 32, 144, 56, 56, 64, 144, 24, 136, 48, 16, 104, 96, 72, 72, 104, 48, 64, 136, 8, 144, 56, 48, 24, 56, 96, 56, 96, 128, 24, 0, 72, 152, 80, 80, 64, 80, 96, 0, 40, 152, 112, 32, 72, 32, 104, 0, 48, 120, 0, 152, 112, 72, 24, 120, 96, 40, 112, 16, 48, 64, 56, 72, 80, 24, 64, 152, 56, 96, 56, 40, 24, 40, 80, 64, 96, 16, 48, 80, 0, 96, 88, 16, 16, 152, 32, 96, 16, 104, 24, 96, 8, 80, 80, 120, 8, 8, 0, 88, 112, 120, 24, 32, 96, 72, 72, 48, 104, 64, 56, 32, 0, 144, 56, 144, 0, 40, 80, 72, 64, 8, 56, 88, 72, 16, 56, 16, 40, 88, 48, 136, 48, 128, 40, 0, 8, 120, 24, 104, 64, 0, 80, 152, 96, 8, 16, 128, 88, 112, 64, 120, 32, 104, 24, 16, 40, 32, 104, 8, 16, 40, 64, 32, 32, 120, 8, 136, 88, 88, 112, 80, 0, 104, 56, 24, 16, 32, 32, 128, 32, 24, 88, 24, 16, 48, 80, 0, 72, 80, 72, 112, 64, 48, 40, 120, 64, 64, 24, 88, 80, 32, 112, 104, 40, 112, 48, 48, 24, 24, 64, 40, 88, 0, 32, 40, 56, 112, 48, 40, 96, 120, 40, 8, 32, 8, 40, 72, 32, 136, 72, 144, 0, 136, 112, 152, 80, 48, 8, 72, 0, 48, 112, 96, 104, 40, 8, 152, 56, 64, 40, 48, 0, 32, 32, 32, 40, 56, 80, 56, 32, 0, 88, 104, 56, 0, 88, 128, 24, 128, 72, 136, 0, 0, 0, 24, 24, 8, 8, 32, 112, 128, 48, 104, 56, 104, 88, 96, 64, 16, 80, 88, 112, 24, 16, 80, 96, 136, 112, 136, 72, 128, 8, 112, 48, 72, 32, 56, 8, 128, 96, 32, 48, 56, 88, 48, 16, 72, 64, 128, 40, 144, 112, 88, 80, 112, 8, 48, 40, 96, 16, 56, 64, 72, 80, 96, 112, 56, 8, 88, 40, 136, 56, 120, 8, 56, 112, 48, 48, 8, 16, 64, 112, 40, 40, 104, 96, 96, 24, 64, 40, 16, 8, 0, 72, 0, 48, 144, 56, 128, 24, 72, 64, 104, 88, 80, 40, 24, 96, 104, 8, 64, 24, 112, 16, 120, 72, 96, 0, 112, 104, 104, 0, 0, 8, 0, 16, 0, 24, 0, 32, 0, 40, 0, 48, 0, 56, 0, 64, 0, 72, 0, 80, 0, 88, 0, 96, 0, 104, 0, 112, 0, 0, 32, 8, 32, 16, 32, 24, 32, 32, 32, 40, 32, 48, 32, 56, 32, 64, 32, 72, 32, 80, 32, 88, 32, 96, 32, 104, 32, 112, 32, 0, 64, 8, 64, 16, 64, 24, 64, 32, 64, 40, 64, 48, 64, 56, 64, 64, 64, 72, 64, 80, 64, 88, 64, 96, 64, 104, 64, 112, 64, 0, 96, 8, 96, 16, 96, 24, 96, 32, 96, 40, 96, 48, 96, 56, 96, 64, 96, 72, 96, 80, 96, 88, 96, 96, 96, 104, 96, 112, 96, 0, 128, 8, 128, 16, 128, 24, 128, 32, 128, 40, 128, 48, 128, 56, 128, 64, 128, 72, 128, 80, 128, 88, 128, 96, 128, 104, 128, 112, 128, 0, 8, 8, 8, 16, 8, 24, 8, 32, 8, 40, 8, 48, 8, 56, 8, 64, 8, 72, 8, 80, 8, 88, 8, 96, 8, 104, 8, 112, 8, 0, 40, 8, 40, 16, 40, 24, 40, 32, 40, 40, 40, 48, 40, 56, 40, 64, 40, 72, 40, 80, 40, 88, 40, 96, 40, 104, 40, 112, 40, 0, 72, 8, 72, 16, 72, 24, 72, 32, 72, 40, 72, 48, 72, 56, 72, 64, 72, 72, 72, 80, 72, 88, 72, 96, 72, 104, 72, 112, 72, 0, 104, 8, 104, 16, 104, 24, 104, 32, 104, 40, 104, 48, 104, 56, 104, 64, 104, 72, 104, 80, 104, 88, 104, 96, 104, 104, 104, 112, 104, 0, 136, 8, 136, 16, 136, 24, 136, 32, 136, 40, 136, 48, 136, 56, 136, 64, 136, 72, 136, 80, 136, 88, 136, 96, 136, 104, 136, 112, 136, 0, 16, 8, 16, 16, 16, 24, 16, 32, 16, 40, 16, 48, 16, 56, 16, 64, 16, 72, 16, 80, 16, 88, 16, 96, 16, 104, 16, 112, 16, 0, 48, 8, 48, 16, 48, 24, 48, 32, 48, 40, 48, 48, 48, 56, 48, 64, 48, 72, 48, 80, 48, 88, 48, 96, 48, 104, 48, 112, 48, 0, 80, 8, 80, 16, 80, 24, 80, 32, 80, 40, 80, 48, 80, 56, 80, 64, 80, 72, 80, 80, 80, 88, 80, 96, 80, 104, 80, 112, 80, 0, 112, 8, 112, 16, 112, 24, 112, 32, 112, 40, 112, 48, 112, 56, 112, 64, 112, 72, 112, 80, 112, 88, 112, 96, 112, 104, 112, 112, 112, 0, 144, 8, 144, 16, 144, 24, 144, 32, 144, 40, 144, 48, 144, 56, 144, 64, 144, 72, 144, 80, 144, 88, 144, 96, 144, 104, 144, 112, 144, 0, 24, 8, 24, 16, 24, 24, 24, 32, 24, 40, 24, 48, 24, 56, 24, 64, 24, 72, 24, 80, 24, 88, 24, 96, 24, 104, 24, 112, 24, 0, 56, 8, 56, 16, 56, 24, 56, 32, 56, 40, 56, 48, 56, 56, 56, 64, 56, 72, 56, 80, 56, 88, 56, 96, 56, 104, 56, 112, 56, 0, 88, 8, 88, 16, 88, 24, 88, 32, 88, 40, 88, 48, 88, 56, 88, 64, 88, 72, 88, 80, 88, 88, 88, 96, 88, 104, 88, 112, 88, 0, 120, 8, 120, 16, 120, 24, 120, 32, 120, 40, 120, 48, 120, 56, 120, 64, 120, 72, 120, 80, 120, 88, 120, 96, 120, 104, 120, 112, 120, 0, 152, 8, 152, 16, 152, 24, 152, 32, 152, 40, 152, 48, 152, 56, 152, 64, 152, 72, 152, 80, 152, 88, 152, 96, 152, 104, 152, 112, 152, 0, 0, 8, 0, 0, 8, 16, 0, 8, 8, 0, 16, 24, 0, 16, 8, 8, 16, 0, 24, 32, 0, 24, 8, 16, 16, 8, 24, 0, 32, 40, 0, 32, 8, 24, 16, 16, 24, 8, 32, 0, 40, 48, 0, 40, 8, 32, 16, 24, 24, 16, 32, 8, 40, 0, 48, 56, 0, 48, 8, 40, 16, 32, 24, 24, 32, 16, 40, 8, 48, 0, 56, 64, 0, 56, 8, 48, 16, 40, 24, 32, 32, 24, 40, 16, 48, 8, 56, 72, 0, 64, 8, 56, 16, 48, 24, 40, 32, 32, 40, 24, 48, 16, 56, 80, 0, 72, 8, 64, 16, 56, 24, 48, 32, 40, 40, 32, 48, 24, 56, 88, 0, 80, 8, 72, 16, 64, 24, 56, 32, 48, 40, 40, 48, 32, 56, 88, 8, 80, 16, 72, 24, 64, 32, 56, 40, 48, 48, 40, 56, 88, 16, 80, 24, 72, 32, 64, 40, 56, 48, 48, 56, 88, 24, 80, 32, 72, 40, 64, 48, 56, 56, 88, 32, 80, 40, 72, 48, 64, 56, 88, 40, 80, 48, 72, 56, 88, 48, 80, 56, 88, 56, 48, 24, 48, 32, 40, 32, 40, 24, 40, 16, 48, 16, 56, 16, 56, 24, 56, 32, 56, 40, 48, 40, 40, 40, 32, 40, 32, 32, 32, 24, 32, 16, 32, 8, 40, 8, 48, 8, 56, 8, 64, 8, 64, 16, 64, 24, 64, 32, 64, 40, 64, 48, 56, 48, 48, 48, 40, 48, 32, 48, 24, 48, 24, 40, 24, 32, 24, 24, 24, 16, 24, 8, 24, 0, 32, 0, 40, 0, 48, 0, 56, 0, 64, 0, 72, 0, 72, 8, 72, 16, 72, 24, 72, 32, 72, 40, 72, 48, 72, 56, 64, 56, 56, 56, 48, 56, 40, 56, 32, 56, 24, 56, 16, 56, 16, 48, 16, 40, 16, 32, 16, 24, 16, 16, 16, 8, 16, 0, 80, 0, 80, 8, 80, 16, 80, 24, 80, 32, 80, 40, 80, 48, 80, 56, 8, 56, 8, 48, 8, 40, 8, 32, 8, 24, 8, 16, 8, 8, 8, 0, 88, 0, 88, 8, 88, 16, 88, 24, 88, 32, 88, 40, 88, 48, 88, 56, 0, 56, 0, 48, 0, 40, 0, 32, 0, 24, 0, 16, 0, 8, 0, 0, 0, 0, 8, 0, 0, 8, 8, 8, 0, 32, 8, 32, 0, 40, 8, 40, 16, 16, 24, 16, 16, 24, 24, 24, 16, 48, 24, 48, 16, 56, 24, 56, 32, 0, 40, 0, 32, 8, 40, 8, 32, 32, 40, 32, 32, 40, 40, 40, 48, 16, 56, 16, 48, 24, 56, 24, 48, 48, 56, 48, 48, 56, 56, 56, 64, 0, 72, 0, 64, 8, 72, 8, 64, 32, 72, 32, 64, 40, 72, 40, 80, 16, 88, 16, 80, 24, 88, 24, 80, 48, 88, 48, 80, 56, 88, 56, 0, 16, 8, 16, 0, 24, 8, 24, 0, 48, 8, 48, 0, 56, 8, 56, 16, 0, 24, 0, 16, 8, 24, 8, 16, 32, 24, 32, 16, 40, 24, 40, 32, 16, 40, 16, 32, 24, 40, 24, 32, 48, 40, 48, 32, 56, 40, 56, 48, 0, 56, 0, 48, 8, 56, 8, 48, 32, 56, 32, 48, 40, 56, 40, 64, 16, 72, 16, 64, 24, 72, 24, 64, 48, 72, 48, 64, 56, 72, 56, 80, 0, 88, 0, 80, 8, 88, 8, 80, 32, 88, 32, 80, 40, 88, 40, 32, 56, 16, 40, 64, 8, 40, 40, 24, 16, 72, 40, 48, 16, 48, 8, 0, 0, 48, 40, 0, 56, 72, 32, 56, 24, 72, 24, 40, 48, 56, 32, 8, 56, 16, 48, 56, 0, 88, 48, 0, 40, 32, 24, 72, 16, 72, 56, 16, 56, 16, 0, 0, 48, 16, 24, 64, 0, 72, 8, 40, 32, 48, 48, 8, 24, 80, 0, 24, 32, 32, 16, 0, 32, 24, 40, 72, 0, 48, 32, 80, 24, 88, 16, 8, 8, 48, 24, 80, 32, 40, 8, 88, 32, 80, 56, 64, 24, 64, 48, 24, 56, 88, 24, 80, 48, 8, 32, 24, 24, 72, 48, 16, 16, 16, 8, 16, 32, 40, 0, 0, 16, 56, 48, 32, 8, 64, 40, 48, 56, 8, 48, 80, 16, 88, 8, 0, 8, 56, 8, 32, 48, 88, 40, 8, 16, 8, 40, 88, 56, 24, 0, 40, 56, 64, 56, 64, 16, 40, 16, 32, 0, 32, 32, 32, 40, 56, 40, 24, 8, 88, 0, 40, 24, 80, 8, 56, 16, 0, 24, 24, 48, 56, 56, 48, 0, 64, 32, 80, 40, 8, 0, 0, 0, 8, 0, 16, 0, 24, 0, 32, 0, 40, 0, 48, 0, 56, 0, 64, 0, 72, 0, 80, 0, 88, 0, 0, 32, 8, 32, 16, 32, 24, 32, 32, 32, 40, 32, 48, 32, 56, 32, 64, 32, 72, 32, 80, 32, 88, 32, 0, 8, 8, 8, 16, 8, 24, 8, 32, 8, 40, 8, 48, 8, 56, 8, 64, 8, 72, 8, 80, 8, 88, 8, 0, 40, 8, 40, 16, 40, 24, 40, 32, 40, 40, 40, 48, 40, 56, 40, 64, 40, 72, 40, 80, 40, 88, 40, 0, 16, 8, 16, 16, 16, 24, 16, 32, 16, 40, 16, 48, 16, 56, 16, 64, 16, 72, 16, 80, 16, 88, 16, 0, 48, 8, 48, 16, 48, 24, 48, 32, 48, 40, 48, 48, 48, 56, 48, 64, 48, 72, 48, 80, 48, 88, 48, 0, 24, 8, 24, 16, 24, 24, 24, 32, 24, 40, 24, 48, 24, 56, 24, 64, 24, 72, 24, 80, 24, 88, 24, 0, 56, 8, 56, 16, 56, 24, 56, 32, 56, 40, 56, 48, 56, 56, 56, 64, 56, 72, 56, 80, 56, 88, 56, }; libgphoto2-2.5.9/camlibs/st2205/Makefile-files0000644000175000001440000000072712610415536015637 00000000000000EXTRA_DIST += st2205/README.st2205-compression st2205/README.st2205 camlibdoc_DATA += st2205/README.st2205-compression st2205/README.st2205 EXTRA_LTLIBRARIES += st2205.la st2205_la_SOURCES = st2205/library.c st2205/st2205.c st2205/st2205.h st2205/st2205_decode.c st2205/st2205_tables.c st2205_la_LDFLAGS = $(camlib_ldflags) st2205_la_DEPENDENCIES = $(camlib_dependencies) st2205_la_LIBADD = $(camlib_libadd) @LIBGD_LIBS@ $(LTLIBICONV) st2205_la_CFLAGS = @LIBGD_CFLAGS@ libgphoto2-2.5.9/camlibs/st2205/st2205.h0000644000175000001440000001264212610415536014206 00000000000000/* Sitronix st2205 picframe access library * * Copyright (c) 2010 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 __ST2205_H__ #define __ST2205_H__ #include "config.h" #include #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) #include #endif #include #include #define GP_MODULE "st2205" #define ST2205_CMD_OFFSET 0x6200 #define ST2205_WRITE_OFFSET 0x6600 #define ST2205_READ_OFFSET 0xb000 /* 2 block sizes, first is bytes per transfer, second is bytes per erase / program cycle */ #define ST2205_BLOCK_SIZE 32768 #define ST2205_ERASE_BLOCK_SIZE 65536 #define ST2205_FAT_SIZE 8192 #define ST2205_COUNT_OFFSET 0x6 /* 16 bytes info per file + a 16 bytes header */ #define ST2205_FILE_OFFSET(x) (((x) + 1) * 16) #define ST2205_LOOKUP_SIZE (0x8000 - 0x0477) #define ST2205_V1_LOOKUP_OFFSET 0x8477 #define ST2205_V2_LOOKUP_OFFSET 0xd8477 #define ST2205_V1_FIRMWARE_SIZE 65536 #define ST2205_V2_FIRMWARE_SIZE 262144 #define ST2205_V1_PICTURE_START 65536 #define ST2205_V2_PICTURE_START 8192 #define ST2205_LOOKUP_CHECKSUM 0x0016206f #define ST2205_SHUFFLE_SIZE (240 * 320 / 64) #define ST2205_HEADER_MARKER 0xf5 /* The "FAT" cannot contain more then 510 entries */ #define ST2205_MAX_NO_FILES 510 #define ST2205_FILENAME_LENGTH 10 enum { ORIENTATION_AUTO, ORIENTATION_LANDSCAPE, ORIENTATION_PORTRAIT, }; /* We prefix all names with there idx in the FAT table, to make sure they are all unique and don't change when files with the same name (after converting to ascii and truncating) are added / deleted. */ #define ST2205_SET_FILENAME(dest, name, idx) \ snprintf(dest, sizeof(st2205_filename), "%04d-%s.png", (idx) + 1, name) struct st2205_coord { uint16_t x; uint16_t y; }; struct st2205_image_header { uint8_t marker; /* Always 0xF5 */ uint16_t width; /* big endian */ uint16_t height; /* big endian */ uint16_t blocks; /* number of 8x8 blocks in the image, big endian */ uint8_t shuffle_table; /* shuffle table idx (for transition effects) */ uint8_t unknown2; /* Unknown usually 0x04 */ uint8_t unknown3; /* shuffle related, must have a special value depend on the pattern see the table in st2205_init */ uint16_t length; /* length of the data *following* the header (be) */ uint8_t unknown4[4]; /* Always 4x 0x00 (padding ?) */ } __attribute__((packed)); #define CHECK(result) {int r=(result); if (r<0) return (r);} /* The + 5 is space for the "####-" prefix we add, + 4 for .png postfix. */ typedef char st2205_filename[ST2205_FILENAME_LENGTH + 5 + 4 + 1]; typedef int16_t st2205_lookup_row[8]; struct _CameraPrivateLibrary { /* Used by library.c glue code */ #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) iconv_t cd; #endif st2205_filename filenames[ST2205_MAX_NO_FILES]; /* Driver configuration settings */ int syncdatetime; int orientation; /* Used by st2205.c / st2205_decode.c */ int width; int height; int compressed; /* Is the image data compressed or rgb565 ? */ FILE *mem_dump; char *mem; char *buf; /* 512 bytes aligned buffer (for sending / reading cmds) */ int mem_size; int firmware_size; int picture_start; int no_fats; int block_is_present[2097152 / ST2205_BLOCK_SIZE]; int block_dirty[2097152 / ST2205_BLOCK_SIZE]; struct st2205_coord shuffle[8][ST2205_SHUFFLE_SIZE]; int no_shuffles; unsigned char unknown3[8]; unsigned int rand_seed; }; /* tables in st2205_tables.c */ extern const st2205_lookup_row st2205_lookup[3][256]; extern const uint8_t st2205_shuffle_data[10360]; /* functions in st2205.c */ int st2205_open_device(Camera *camera); int st2205_open_dump(Camera *camera, const char *dump, int width, int height); void st2205_close(Camera *camera); int st2205_get_filenames(Camera *camera, st2205_filename *names); int st2205_read_file(Camera *camera, int idx, int **rgb24); int st2205_read_raw_file(Camera *camera, int idx, unsigned char **raw); int st2205_set_time_and_date(Camera *camera, struct tm *t); /* This function returns the index used to save the file at on success */ int st2205_write_file(Camera *camera, const char *filename, int **rgb24); int st2205_delete_file(Camera *camera, int idx); int st2205_delete_all(Camera *camera); int st2205_commit(Camera *camera); int st2205_get_mem_size(Camera *camera); int st2205_get_free_mem_size(Camera *camera); /* functions in st2205_decode.c */ int st2205_decode_image(CameraPrivateLibrary *pl, unsigned char *src, int **dest); int st2205_code_image(CameraPrivateLibrary *pl, int **src, unsigned char *dest, uint8_t shuffle_pattern, int allow_uv_corr); int st2205_rgb565_to_rgb24(CameraPrivateLibrary *pl, unsigned char *src, int **dest); int st2205_rgb24_to_rgb565(CameraPrivateLibrary *pl, int **src, unsigned char *dest); #endif libgphoto2-2.5.9/camlibs/tp6801/0000755000175000001440000000000012623156270013155 500000000000000libgphoto2-2.5.9/camlibs/tp6801/tp6801-dump.c0000644000175000001440000000706412610415524015151 00000000000000/* Tenx tp6801 picframe memory dump tool * * Copyright (c) 2011 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #include #include #include #include #include #include #include #include #define READ 0 #define WRITE 1 void tp6801_send_cmd(int fd, int rw, int cmd, int offset, unsigned char *data, int data_size) { int i; sg_io_hdr_t io_hdr; unsigned char sense_buffer[32]; unsigned char cmd_buffer[16]; memset(cmd_buffer, 0, sizeof(cmd_buffer)); cmd_buffer[0] = cmd; cmd_buffer[1] = 0x11; cmd_buffer[2] = 0x31; cmd_buffer[3] = 0x0f; cmd_buffer[4] = 0x30; cmd_buffer[5] = 0x01; /* cmd 0xca hour not bcd! */ cmd_buffer[6] = data_size >> 8; /* cmd 0xca min */ cmd_buffer[7] = data_size & 0xff; /* cmd 0xca sec */ cmd_buffer[8] = (offset >> 16) & 0xff; cmd_buffer[9] = (offset >> 8) & 0xff; cmd_buffer[10] = offset & 0xff; memset(&io_hdr, 0, sizeof(sg_io_hdr_t)); if (rw == READ) io_hdr.dxfer_direction = SG_DXFER_FROM_DEV; else io_hdr.dxfer_direction = SG_DXFER_TO_DEV; io_hdr.interface_id = 'S'; io_hdr.dxfer_len = data_size; io_hdr.dxferp = (unsigned char *)data; io_hdr.cmdp = cmd_buffer; io_hdr.cmd_len = sizeof(cmd_buffer); io_hdr.sbp = sense_buffer; io_hdr.mx_sb_len = sizeof(sense_buffer); io_hdr.timeout = 1000; if(ioctl(fd, SG_IO, &io_hdr) < 0) { printf("error status: %d, errno: %s\n", io_hdr.status, strerror(errno)); exit (1); } } void eeprom_read(int fd, int offset, unsigned char *data, int data_size) { tp6801_send_cmd(fd, READ, 0xc1, offset, data, data_size); } void eeprom_erase_block(int fd, int offset) { tp6801_send_cmd(fd, READ, 0xc6, offset, NULL, 0); } void eeprom_program_page(int fd, int offset, unsigned char *data) { tp6801_send_cmd(fd, WRITE, 0xcb, offset, data, 256); } int main(int argc, char* argv[]) { int i, j, fd; FILE* f; unsigned char data[0x10000]; /* 64k */ fd = open(argv[1], O_RDWR); if(fd < 0) { printf("Cannot open %s: %s\n", argv[1], strerror(errno)); exit(-1); } #if 1 f = fopen("dump.bin", "w"); /* We can read max 32k at a time */ for(i = 0; i < (4160*1024); i += 0x8000) { eeprom_read(fd, i, data, 0x8000); fwrite(data, 1, 0x8000, f); } #else f = fopen("dump.bin", "r"); /* programming is done in blocks of 64k */ /* Note this is only restores the 64k block as that often gets mangled during development */ for(i = 0; i < 0x10000; i += 0x10000) { fread(data, 1, 0x10000, f); eeprom_erase_block(fd, i); for (j = 0; j < 0x10000; j += 256) eeprom_program_page(fd, i + j, data + j); } #endif fclose(f); close(fd); return 0; } libgphoto2-2.5.9/camlibs/tp6801/library.c0000644000175000001440000003210312610415530014675 00000000000000/* Tenx tp6801 picframe access library * * Copyright (c) 2011 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #define _BSD_SOURCE #include "config.h" #include #include #ifdef HAVE_LIBGD #include #endif #include #include #include #include #include "tp6801.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif static const struct tp6801_devinfo tp6801_devinfo[] = { { 0x0168, 0x3011 }, {} }; int camera_id (CameraText *id) { strcpy (id->text, "TP6801 USB picture frame"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; int i; for (i = 0; tp6801_devinfo[i].vendor_id; i++) { memset (&a, 0, sizeof(a)); snprintf(a.model, sizeof (a.model), "TP6801 USB picture frame"); a.status = GP_DRIVER_STATUS_TESTING; a.port = GP_PORT_USB_SCSI; a.speed[0] = 0; a.usb_vendor = tp6801_devinfo[i].vendor_id; a.usb_product= tp6801_devinfo[i].product_id; a.operations = GP_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE | GP_FOLDER_OPERATION_DELETE_ALL; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_RAW; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { sprintf (summary->text, _("Your USB picture frame has a TP6801 chipset\n")); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { strcpy(manual->text, _( "TP6801 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." )); return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _( "TP6801 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." )); return GP_OK; } static int get_file_idx(Camera *camera, const char *folder, const char *filename) { int idx, count, present; char *c; if (strcmp (folder, "/")) return GP_ERROR_DIRECTORY_NOT_FOUND; if (strlen (filename) != 12 || strncmp (filename, "pict", 4) || strcmp (filename + 8, ".png")) return GP_ERROR_FILE_NOT_FOUND; idx = strtoul(filename + 4, &c, 10); if (*c != '.') return GP_ERROR_FILE_NOT_FOUND; idx--; count = tp6801_max_filecount (camera); if (count < 0) return count; if (idx < 0 || idx >= count) return GP_ERROR_FILE_NOT_FOUND; present = tp6801_file_present (camera, idx); if (present < 0) return present; if (!present) return GP_ERROR_FILE_NOT_FOUND; return idx; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int idx, size; #ifdef HAVE_LIBGD int ret; gdImagePtr im; void *gdpng; #endif idx = get_file_idx(camera, folder, filename); if (idx < 0) return idx; if (type == GP_FILE_TYPE_RAW) { char *raw; CHECK (tp6801_read_raw_file (camera, idx, &raw)) gp_file_set_mime_type (file, GP_MIME_RAW); gp_file_set_name (file, filename); gp_file_set_data_and_size (file, raw, tp6801_filesize (camera)); return GP_OK; } #ifdef HAVE_LIBGD if (type != GP_FILE_TYPE_NORMAL) return GP_ERROR_NOT_SUPPORTED; im = gdImageCreateTrueColor(camera->pl->width, camera->pl->height); if (im == NULL) return GP_ERROR_NO_MEMORY; ret = tp6801_read_file(camera, idx, im->tpixels); if (ret < 0) { gdImageDestroy (im); return ret; } gdpng = gdImagePngPtr(im, &size); gdImageDestroy (im); if (gdpng == NULL) return GP_ERROR_NO_MEMORY; ret = gp_file_set_mime_type (file, GP_MIME_PNG); if (ret < 0) { gdFree (gdpng); return ret; } ret = gp_file_set_name (file, filename); if (ret < 0) { gdFree (gdpng); return ret; } ret = gp_file_append (file, gdpng, size); gdFree (gdpng); return ret; #else gp_log(GP_LOG_ERROR,"tp6801", "GD decompression not supported - no libGD present during build"); return GP_ERROR_NOT_SUPPORTED; #endif } static int put_file_func (CameraFilesystem *fs, const char *folder, const char *name, CameraFileType type, CameraFile *file, void *data, GPContext *context) { #ifdef HAVE_LIBGD Camera *camera = data; char *filedata = NULL; int ret, in_width, in_height, in_x, in_y; double aspect_in, aspect_out; unsigned long filesize = 0; gdImagePtr im_out, im_in = NULL; if (strcmp (folder, "/")) return GP_ERROR_DIRECTORY_NOT_FOUND; CHECK (gp_file_get_data_and_size (file, (const char **)&filedata, &filesize)) /* Try loading the file using gd, starting with the most often used types first */ /* gdImageCreateFromJpegPtr is chatty on error, don't call it on non JPEG files */ if (filesize > 2 && (uint8_t)filedata[0] == 0xff && (uint8_t)filedata[1] == 0xd8) im_in = gdImageCreateFromJpegPtr(filesize, filedata); if (im_in == NULL) im_in = gdImageCreateFromPngPtr(filesize, filedata); if (im_in == NULL) im_in = gdImageCreateFromGifPtr(filesize, filedata); if (im_in == NULL) im_in = gdImageCreateFromWBMPPtr(filesize, filedata); if (im_in == NULL) { gp_log (GP_LOG_ERROR, "tp6801", "Unrecognized file format for file: %s%s", folder, name); return GP_ERROR_BAD_PARAMETERS; } im_out = gdImageCreateTrueColor(camera->pl->width, camera->pl->height); if (im_out == NULL) { gdImageDestroy (im_in); return GP_ERROR_NO_MEMORY; } /* Keep aspect */ aspect_in = (double)im_in->sx / im_in->sy; aspect_out = (double)im_out->sx / im_out->sy; if (aspect_in > aspect_out) { /* Reduce in width (crop left and right) */ in_width = (im_in->sx / aspect_in) * aspect_out; in_x = (im_in->sx - in_width) / 2; in_height = im_in->sy; in_y = 0; } else { /* Reduce in height (crop top and bottom) */ in_width = im_in->sx; in_x = 0; in_height = (im_in->sy * aspect_in) / aspect_out; in_y = (im_in->sy - in_height) / 2; } gdImageCopyResampled (im_out, im_in, 0, 0, in_x, in_y, im_out->sx, im_out->sy, in_width, in_height); if (im_in->sx != im_out->sx || im_in->sy != im_out->sy) gdImageSharpen(im_out, 100); ret = tp6801_write_file (camera, im_out->tpixels); if (ret >= 0) { /* Commit the changes to the device */ ret = tp6801_commit(camera); } gdImageDestroy (im_in); gdImageDestroy (im_out); return ret; #else gp_log(GP_LOG_ERROR,"tp6801", "GD compression not supported - no libGD present during build"); return GP_ERROR_NOT_SUPPORTED; #endif } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int idx; idx = get_file_idx(camera, folder, filename); if (idx < 0) return idx; CHECK (tp6801_delete_file(camera, idx)) return tp6801_commit(camera); } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; CHECK (tp6801_delete_all (camera)) return tp6801_commit(camera); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { memset (info, 0, sizeof(CameraFileInfo)); /* FIXME: fill in some stuff? */ return GP_OK; } static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { if (strcmp(folder, "/")) return GP_ERROR_DIRECTORY_NOT_FOUND; /* Subfolders not supported */ return GP_OK; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i, count, present; char buf[16]; count = tp6801_max_filecount (camera); if (count < 0) return count; for (i = 0; i < count; i++) { present = tp6801_file_present (camera, i); if (present < 0) return present; if (present) { snprintf(buf, sizeof(buf), "pict%04d.png", i + 1); CHECK (gp_list_append (list, buf, NULL)) } } return GP_OK; } static int storage_info_func (CameraFilesystem *fs, CameraStorageInformation **sinfos, int *nrofsinfos, void *data, GPContext *context) { Camera *camera = (Camera*)data; CameraStorageInformation *sinfo; int free, imagesize; free = tp6801_get_free_mem_size (camera); if (free < 0) return free; sinfo = malloc(sizeof(CameraStorageInformation)); if (!sinfo) return GP_ERROR_NO_MEMORY; *sinfos = sinfo; *nrofsinfos = 1; sinfo->fields = GP_STORAGEINFO_BASE; strcpy(sinfo->basedir, "/"); sinfo->fields |= GP_STORAGEINFO_ACCESS; sinfo->access = GP_STORAGEINFO_AC_READWRITE; sinfo->fields |= GP_STORAGEINFO_STORAGETYPE; sinfo->type = GP_STORAGEINFO_ST_FIXED_RAM; sinfo->fields |= GP_STORAGEINFO_FILESYSTEMTYPE; sinfo->fstype = GP_STORAGEINFO_FST_GENERICFLAT; sinfo->fields |= GP_STORAGEINFO_MAXCAPACITY; sinfo->capacitykbytes = tp6801_get_mem_size (camera) / 1024; sinfo->fields |= GP_STORAGEINFO_FREESPACEKBYTES; sinfo->freekbytes = free / 1024; imagesize = tp6801_filesize (camera); if (imagesize) { sinfo->fields |= GP_STORAGEINFO_FREESPACEIMAGES; sinfo->freeimages = free / imagesize; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .put_file_func = put_file_func, .delete_all_func = delete_all_func, .storage_info_func = storage_info_func }; static int camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *child; GP_DEBUG ("*** camera_get_config"); gp_widget_new (GP_WIDGET_WINDOW, _("Picture Frame Configuration"), window); gp_widget_new (GP_WIDGET_TOGGLE, _("Synchronize frame data and time with PC"), &child); gp_widget_set_value (child, &camera->pl->syncdatetime); gp_widget_append (*window, child); return GP_OK; } static int camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *child; int ret; GP_DEBUG ("*** camera_set_config"); ret = gp_widget_get_child_by_label (window, _("Synchronize frame data and time with PC"), &child); if (ret == GP_OK) gp_widget_get_value (child, &camera->pl->syncdatetime); return GP_OK; } static int camera_exit (Camera *camera, GPContext *context) { char buf[2]; if (camera->pl != NULL) { buf[0] = '0' + camera->pl->syncdatetime; buf[1] = 0; gp_setting_set("tp6801", "syncdatetime", buf); tp6801_close (camera); free (camera->pl); camera->pl = NULL; } return GP_OK; } int camera_init (Camera *camera, GPContext *context) { CameraAbilities a; int ret; char *dump, buf[256]; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = calloc (1, sizeof(CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; ret = gp_setting_get("tp6801", "syncdatetime", buf); if (ret == GP_OK) camera->pl->syncdatetime = buf[0] == '1'; else camera->pl->syncdatetime = 1; CHECK (gp_camera_get_abilities(camera, &a)) dump = getenv("GP_TP6801_DUMP"); if (dump) ret = tp6801_open_dump (camera, dump); else ret = tp6801_open_device (camera); if (ret != GP_OK) { camera_exit (camera, context); return ret; } if (camera->pl->syncdatetime) { #ifdef HAVE_LOCALTIME_R struct tm tm; #endif struct tm *xtm; time_t t; t = time (NULL); #ifdef HAVE_LOCALTIME_R if ((xtm = localtime_r (&t , &tm))) { #else if ((xtm = localtime (&t))) { #endif ret = tp6801_set_time_and_date (camera, xtm); if (ret != GP_OK) { camera_exit (camera, context); return ret; } } } return GP_OK; } libgphoto2-2.5.9/camlibs/tp6801/README.tp68010000644000175000001440000000514612561423352014723 00000000000000About this driver ================= This driver allows you to upload / download and delete pictures from Tenx TP6801 based picture frames. This are small, cheap picture frames with a 1.1, 1.5 or 1.8 inch display. Currently this driver only supports the following models: Insignia NS-KEYXX10 (0168:3011) I would very much like to extend the list of supported models, if you've a picture frame which you think is Tenx TP68xx based please drop me a mail at hdegoede@redhat.com TP6801 based frames present themselves as a usb mass storage cdrom, which contains the windows software. Communication with the device happens by issuing special (custom) scsi commands. This driver uses the special "usbscsi" port driver, which allows sending the custom scsi commands. About the TP6801 access protocol ================================ Accessing the pictures uses scsi opcodes, in the vendor specific range, for accessing the onboard flash memory the following 3 opcodes are used: 0xc1 Read 0xc6 Erase Block (64k) 0xcb Program page (256 bytes) Each opcode is followed by the magic sequence 0x11 0x31 0x0f 0x30 0x01 and then the number of bytes to read / write (0 for erase block) in 16bit BE format, followed by the (start)address for the operation in 24bit BE format. The SCB is further padded out with 0-s to 16 bytes. There also is an opcode for setting the time of the photo frame, 0xca, this opcode is followed by the same magic sequence 0x11 0x31 0x0f 0x30 0x01 and then 1 byte each for hour, minute, seconds, year (no centuries), month and day of month, and again further padding to 16 bytes with 0-s. TP6810 memory map ================= All addresses are in hex! 000000-001dff Looks font-ish, may be the battery charging icon 001e00-001e3f Picture Allocation Table, each byte refers to the location in the picture memory at the same index (multiplied by imagesize). A value between 1 and max-pictures indicates the corresponding location contains picture nr value, 0xfe means it contains a deleted picture, 0xff means it contains pre-erased memory (this allows uploading a new picture without needing an erase). 001e40-001e7f Unknown, maybe settings (text color, etc). 001e80-001ebf "Tnex TP6801 Image File System Signature" but then reversed 007c00-007fff Website url the windows app automatically opens on insert 008000-00dfff Font 010000-19ffff Pictures in rgb565 format 1a0000-1a0003 USB vid:pid first pid then vid 1a0020-1a003f SCSI model string 1a0100-1f5fff ISO img for emulated cdrom, minus first 32k (which is all 0). 1f6000-1fffff Power on logo in rgb565 format (same as pictures) Hans de Goede 13 June 2011 libgphoto2-2.5.9/camlibs/tp6801/tp6801.h0000644000175000001440000000663312610415524014214 00000000000000/* Tenx tp6801 picframe access library * * Copyright (c) 2011 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 __TP6801_H__ #define __TP6801_H__ #include "config.h" #include #include #include #define GP_MODULE "tp6801" #define TP6801_PAT_MAGIC "erutangiS metsyS eliF egamI 1086PT xneT" #define TP6801_PAT_MAGIC_OFFSET 0x1e80 #define TP6801_PAT_OFFSET 0x1e00 #define TP6801_PAT_PAGE (TP6801_PAT_OFFSET / TP6801_PAGE_SIZE) #define TP6801_PAT_SIZE 256 /* Including the magic */ #define TP6801_PAT_ENTRY_PRE_ERASED 0xff /* Windows software uses 0xfe to mark as deleted, the frame itself 0x00 */ #define TP6801_PAT_ENTRY_DELETED_FRAME 0x00 #define TP6801_PAT_ENTRY_DELETED_WIN 0xfe #define TP6801_PAT_ENTRY_DELETED(x) ((x) == 0xfe || (x) == 0x00) #define TP6801_PICTURE_OFFSET(i, size) (0x10000 + (i) * (size)) #define TP6801_READ 0xC1 #define TP6801_ERASE_BLOCK 0xC6 #define TP6801_SET_TIME 0xCA #define TP6801_PROGRAM_PAGE 0xCB #define TP6801_BLOCK_SIZE 65536 #define TP6801_PAGE_SIZE 256 /* USB bulk transfers are 32k max */ #define TP6801_MAX_READ (32768 / TP6801_PAGE_SIZE) #define TP6801_MAX_MEM_SIZE 4194304 #define TP6801_CONST_DATA_SIZE 393216 #define TP6801_SCSI_MODEL_OFFSET 32 #define TP6801_SCSI_MODEL_LEN 32 #define TP6801_ISO_OFFSET 256 /* page_state flags */ #define TP6801_PAGE_READ 0x01 #define TP6801_PAGE_DIRTY 0x02 #define TP6801_PAGE_CONTAINS_DATA 0x04 #define TP6801_PAGE_NEEDS_ERASE 0x08 #define CHECK(result) {int r=(result); if (r<0) return (r);} struct _CameraPrivateLibrary { FILE *mem_dump; char *mem; unsigned char *pat; char page_state[TP6801_MAX_MEM_SIZE / TP6801_PAGE_SIZE]; unsigned char last_cmd; int picture_count; /* LCD display attributes */ int width; int height; /* EEPROM attributes */ int mem_size; /* Driver configuration settings */ int syncdatetime; }; struct tp6801_devinfo { unsigned short vendor_id; unsigned short product_id; }; /* functions in tp6801.c */ int tp6801_open_device(Camera *camera); int tp6801_open_dump(Camera *camera, const char *dump); void tp6801_close(Camera *camera); int tp6801_max_filecount(Camera *camera); int tp6801_file_present(Camera *camera, int idx); int tp6801_read_raw_file(Camera *camera, int idx, char **raw); int tp6801_read_file(Camera *camera, int idx, int **rgb24); int tp6801_write_file(Camera *camera, int **rgb24); int tp6801_delete_file(Camera *camera, int idx); int tp6801_delete_all(Camera *camera); int tp6801_commit(Camera *camera); int tp6801_get_mem_size(Camera *camera); int tp6801_get_free_mem_size(Camera *camera); int tp6801_set_time_and_date(Camera *camera, struct tm *t); int tp6801_filesize(Camera *camera); #endif libgphoto2-2.5.9/camlibs/tp6801/tp6801.c0000644000175000001440000005444012610415536014211 00000000000000/* Tenx tp6801 picframe access library * * Copyright (c) 2011 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #define _BSD_SOURCE #include "config.h" #include #include #include #include <_stdint.h> #include #include #include #include #include #ifdef HAVE_LIBGD #include #endif #include #include #include "tp6801.h" static int tp6801_send_cmd(Camera *camera, int to_dev, unsigned char cmd, int offset, char *data, int data_size) { char cmd_buffer[16]; char sense_buffer[32]; /* The device firmware does not seem to wait for the last cmd to finish when going from PP to READ, do this for it */ if (camera->pl->last_cmd == TP6801_PROGRAM_PAGE && cmd == TP6801_READ) { usleep(5000); /* Max page program time for most spi flash */ } camera->pl->last_cmd = cmd; memset (cmd_buffer, 0, sizeof (cmd_buffer)); cmd_buffer[0] = cmd; cmd_buffer[1] = 0x11; cmd_buffer[2] = 0x31; cmd_buffer[3] = 0x0f; cmd_buffer[4] = 0x30; cmd_buffer[5] = 0x01; cmd_buffer[6] = (data_size >> 8) & 0xff; cmd_buffer[7] = data_size & 0xff; cmd_buffer[8] = (offset >> 16) & 0xff; cmd_buffer[9] = (offset >> 8) & 0xff; cmd_buffer[10] = offset & 0xff; return gp_port_send_scsi_cmd (camera->port, to_dev, cmd_buffer, sizeof(cmd_buffer), sense_buffer, sizeof(sense_buffer), data, data_size); } int tp6801_set_time_and_date(Camera *camera, struct tm *t) { char cmd_buffer[16]; char sense_buffer[32]; memset (cmd_buffer, 0, sizeof (cmd_buffer)); cmd_buffer[0] = TP6801_SET_TIME; cmd_buffer[1] = 0x11; cmd_buffer[2] = 0x31; cmd_buffer[3] = 0x0f; cmd_buffer[4] = 0x30; cmd_buffer[5] = 0x01; cmd_buffer[6] = t->tm_hour; cmd_buffer[7] = t->tm_min; cmd_buffer[8] = t->tm_sec; cmd_buffer[9] = t->tm_year % 100; cmd_buffer[10] = t->tm_mon + 1; cmd_buffer[11] = t->tm_mday; return gp_port_send_scsi_cmd (camera->port, 0, cmd_buffer, sizeof(cmd_buffer), sense_buffer, sizeof(sense_buffer), NULL, 0); } static int tp6801_read(Camera *camera, int offset, char *buf, int size) { int ret; if (camera->pl->mem_dump) { ret = fseek (camera->pl->mem_dump, offset, SEEK_SET); if (ret) { gp_log (GP_LOG_ERROR, "tp6801", "seeking in memdump: %s", strerror(errno)); return GP_ERROR_IO_READ; } ret = fread (buf, 1, size, camera->pl->mem_dump); if (ret != size) { if (ret < 0) gp_log (GP_LOG_ERROR, "tp6801", "reading memdump: %s", strerror(errno)); else gp_log (GP_LOG_ERROR, "tp6801", "short read reading from memdump"); return GP_ERROR_IO_READ; } } else { CHECK (tp6801_send_cmd (camera, 0, TP6801_READ, offset, buf, size)) } return GP_OK; } static int tp6801_program_page(Camera *camera, int offset, char *buf) { int ret; if (camera->pl->mem_dump) { ret = fseek (camera->pl->mem_dump, offset, SEEK_SET); if (ret) { gp_log (GP_LOG_ERROR, "tp6801", "seeking in memdump: %s", strerror(errno)); return GP_ERROR_IO_WRITE; } ret = fwrite (buf, 1, TP6801_PAGE_SIZE, camera->pl->mem_dump); if (ret != TP6801_PAGE_SIZE) { gp_log (GP_LOG_ERROR, "tp6801", "writing memdump: %s", strerror(errno)); return GP_ERROR_IO_WRITE; } } else { CHECK (tp6801_send_cmd (camera, 1, TP6801_PROGRAM_PAGE, offset, buf, TP6801_PAGE_SIZE)) } return GP_OK; } static int tp6801_erase_block(Camera *camera, int offset) { int ret; char *buf; if (camera->pl->mem_dump) { buf = camera->pl->mem + offset; memset(buf, 0xff, TP6801_BLOCK_SIZE); ret = fseek (camera->pl->mem_dump, offset, SEEK_SET); if (ret) { gp_log (GP_LOG_ERROR, "tp6801", "seeking in memdump: %s", strerror(errno)); return GP_ERROR_IO_WRITE; } ret = fwrite (buf, 1, TP6801_BLOCK_SIZE, camera->pl->mem_dump); if (ret != TP6801_BLOCK_SIZE) { gp_log (GP_LOG_ERROR, "tp6801", "writing memdump: %s", strerror(errno)); return GP_ERROR_IO_WRITE; } return GP_OK; } else { CHECK (tp6801_send_cmd (camera, 0, TP6801_ERASE_BLOCK, offset, NULL, 0)) } return GP_OK; } static int tp6801_check_offset_len(Camera *camera, int offset, int len) { if (offset < 0 || len < 0) { gp_log (GP_LOG_ERROR, "tp6801", "negative offset or len"); return GP_ERROR_CORRUPTED_DATA; } if (offset + len > camera->pl->mem_size) { gp_log (GP_LOG_ERROR, "tp6801", "access beyond end of memory"); return GP_ERROR_CORRUPTED_DATA; } return GP_OK; } static int tp6801_read_mem(Camera *camera, int offset, int len) { int i, to_read, page = offset / TP6801_PAGE_SIZE; CHECK (tp6801_check_offset_len (camera, offset, len)) /* Adjust len for us reading 1 page at a time */ len += offset % TP6801_PAGE_SIZE; while (len > 0) { /* Skip already read pages */ if (camera->pl->page_state[page] & TP6801_PAGE_READ) { len -= TP6801_PAGE_SIZE; page++; continue; } /* Try to read as much as possible in one go */ to_read = 0; while (len > 0 && to_read < TP6801_MAX_READ && !(camera->pl->page_state[page + to_read] & TP6801_PAGE_READ)) { len -= TP6801_PAGE_SIZE; to_read++; } offset = page * TP6801_PAGE_SIZE; CHECK (tp6801_read (camera, offset, camera->pl->mem + offset, to_read * TP6801_PAGE_SIZE)) for (i = 0; i < to_read; i++, page++) camera->pl->page_state[page] |= TP6801_PAGE_READ; } return GP_OK; } static int tp6801_write_mem(Camera *camera, int offset, void *buf, int len) { int i, first, last; CHECK (tp6801_check_offset_len (camera, offset, len)) first = offset / TP6801_PAGE_SIZE; last = (offset + len - 1) / TP6801_PAGE_SIZE; /* If we're not going to completely fill the first page, first read it to ensure it is present in our device memory copy */ if ((offset % TP6801_PAGE_SIZE || len < TP6801_PAGE_SIZE) && (camera->pl->page_state[first] & TP6801_PAGE_CONTAINS_DATA) && !(camera->pl->page_state[first] & TP6801_PAGE_READ)) { int o = first * TP6801_PAGE_SIZE; CHECK (tp6801_read (camera, o, camera->pl->mem + o, TP6801_PAGE_SIZE)) camera->pl->page_state[first] |= TP6801_PAGE_READ; } /* Likewise for the last page */ if ((offset + len) % TP6801_PAGE_SIZE && (camera->pl->page_state[last] & TP6801_PAGE_CONTAINS_DATA) && !(camera->pl->page_state[last] & TP6801_PAGE_READ)) { int o = last * TP6801_PAGE_SIZE; CHECK (tp6801_read (camera, o, camera->pl->mem + o, TP6801_PAGE_SIZE)) camera->pl->page_state[last] |= TP6801_PAGE_READ; } memcpy(camera->pl->mem + offset, buf, len); for (i = first; i <= last; i++) { /* Note we mark the written pages as read too, to avoid them getting overwritten by a read from the device later */ camera->pl->page_state[i] |= TP6801_PAGE_DIRTY | TP6801_PAGE_CONTAINS_DATA | TP6801_PAGE_READ; } return GP_OK; } static int tp6801_detect_mem(Camera *camera) { int i; char *m; camera->pl->mem = malloc(TP6801_MAX_MEM_SIZE); if (!camera->pl->mem) return GP_ERROR_NO_MEMORY; camera->pl->mem_size = TP6801_MAX_MEM_SIZE; /* Note we read the PAT instead of some mem at offset 0, because: 1) This saves a read when reading the PAT later 2) The PAT contains reasonably unique data */ CHECK (tp6801_read_mem (camera, TP6801_PAT_OFFSET, TP6801_PAT_SIZE)) for (i = 0; (1048576 << i) != TP6801_MAX_MEM_SIZE; i++) { int offset = (1048576 << i) + TP6801_PAT_OFFSET; CHECK (tp6801_read_mem (camera, offset, TP6801_PAT_SIZE)) if (memcmp(camera->pl->mem + TP6801_PAT_OFFSET, camera->pl->mem + offset, TP6801_PAT_SIZE) == 0) break; } camera->pl->mem_size = 1048576 << i; GP_DEBUG ("tp6801 detected %d bytes of memory", camera->pl->mem_size); m = realloc(camera->pl->mem, camera->pl->mem_size); if (!m) return GP_ERROR_NO_MEMORY; camera->pl->mem = m; return GP_OK; } int tp6801_filesize(Camera *camera) { /* The pictures are stored as rgb565be, so 2 bytes / pixel */ return camera->pl->width * camera->pl->height * 2; } int tp6801_max_filecount(Camera *camera) { int free_mem, size; size = tp6801_filesize (camera); free_mem = camera->pl->mem_size - TP6801_PICTURE_OFFSET(0, size); free_mem -= TP6801_CONST_DATA_SIZE; return free_mem / size; } int tp6801_file_present(Camera *camera, int idx) { if (idx < 0) { gp_log (GP_LOG_ERROR, "tp6801", "file index < 0"); return GP_ERROR_BAD_PARAMETERS; } if (idx >= tp6801_max_filecount (camera)) { gp_log (GP_LOG_ERROR, "tp6801", "file index beyond end of ABFS"); return GP_ERROR_BAD_PARAMETERS; } if (camera->pl->pat[idx] >= 1 && camera->pl->pat[idx] <= camera->pl->picture_count) return 1; else switch (camera->pl->pat[idx]) { case TP6801_PAT_ENTRY_DELETED_FRAME: case TP6801_PAT_ENTRY_DELETED_WIN: case TP6801_PAT_ENTRY_PRE_ERASED: return 0; default: return GP_ERROR_CORRUPTED_DATA; } } static int tp6801_check_file_present(Camera *camera, int idx) { int r = tp6801_file_present (camera, idx); if (r < 0) return r; if (r == 0) return GP_ERROR_BAD_PARAMETERS; return GP_OK; } static int tp6801_decode_image(Camera *camera, char *_src, int **dest) { #ifdef HAVE_LIBGD int x, y; unsigned char *src = (unsigned char *)_src; for (y = 0; y < camera->pl->height; y++) { for (x = 0; x < camera->pl->width; x++) { int r, g, b, rgb565; rgb565 = (src[0] << 8) | src[1]; r = (rgb565 & 0xf800) >> 8; g = (rgb565 & 0x07e0) >> 3; b = (rgb565 & 0x001f) << 3; dest[y][x] = gdTrueColor (r, g, b); src += 2; } } return GP_OK; #else gp_log(GP_LOG_ERROR,"tp6801", "GD decompression not supported - no libGD present during build"); /* Never reached */ return GP_ERROR_NOT_SUPPORTED; #endif } static int tp6801_encode_image(Camera *camera, int **src, char *dest) { #ifdef HAVE_LIBGD int x, y; for (y = 0; y < camera->pl->height; y++) { for (x = 0; x < camera->pl->width; x++) { int r, g, b, rgb565; int p = src[y][x]; r = gdTrueColorGetRed(p); g = gdTrueColorGetGreen(p); b = gdTrueColorGetBlue(p); rgb565 = ((r & 0xf8) << 8) | ((g & 0xfc) << 3) | ((b & 0xf8) >> 3); dest[0] = (rgb565 >> 8) & 0xff; dest[1] = (rgb565 >> 0) & 0xff; dest += 2; } } return GP_OK; #else gp_log(GP_LOG_ERROR,"tp6801", "GD compression not supported - no libGD present during build"); return GP_ERROR_NOT_SUPPORTED; #endif } int tp6801_read_raw_file(Camera *camera, int idx, char **raw) { int size; *raw = NULL; size = tp6801_filesize (camera); CHECK (tp6801_check_file_present (camera, idx)) CHECK (tp6801_read_mem (camera, TP6801_PICTURE_OFFSET(idx, size), size)) *raw = malloc (size); if (!*raw) { gp_log (GP_LOG_ERROR, "tp6801", "allocating memory"); return GP_ERROR_NO_MEMORY; } memcpy(*raw, camera->pl->mem + TP6801_PICTURE_OFFSET(idx, size), size); return GP_OK; } int tp6801_read_file(Camera *camera, int idx, int **rgb24) { int size = tp6801_filesize (camera); CHECK (tp6801_check_file_present (camera, idx)) CHECK (tp6801_read_mem (camera, TP6801_PICTURE_OFFSET(idx, size), size)) CHECK (tp6801_decode_image (camera, camera->pl->mem + TP6801_PICTURE_OFFSET(idx, size), rgb24)) return GP_OK; } int tp6801_write_file(Camera *camera, int **rgb24) { const int size = tp6801_filesize (camera); int i, count = tp6801_max_filecount (camera); char buf[size]; /* Pass 1 try to find a pre-erased slot in the PAT */ for (i = 0; i < count; i++) if (camera->pl->pat[i] == TP6801_PAT_ENTRY_PRE_ERASED) break; if (i == count) { /* Pass 2 try to find a deleted slot in the PAT */ for (i = 0; i < count; i++) if (TP6801_PAT_ENTRY_DELETED(camera->pl->pat[i])) break; } if (i == count) { gp_log (GP_LOG_ERROR, "tp6801", "not enough freespace to add file"); return GP_ERROR_NO_SPACE; } CHECK (tp6801_encode_image (camera, rgb24, buf)) CHECK (tp6801_write_mem (camera, TP6801_PICTURE_OFFSET(i, size), buf, size)) camera->pl->picture_count++; camera->pl->pat[i] = camera->pl->picture_count; camera->pl->page_state[TP6801_PAT_PAGE] |= TP6801_PAGE_DIRTY; return GP_OK; } int tp6801_delete_file(Camera *camera, int idx) { CHECK (tp6801_check_file_present (camera, idx)) camera->pl->pat[idx] = TP6801_PAT_ENTRY_DELETED_WIN; camera->pl->page_state[TP6801_PAT_PAGE] |= TP6801_PAGE_DIRTY; return GP_OK; } int tp6801_delete_all(Camera *camera) { int i, start, end; /* Erase the entire picture memory */ start = TP6801_PICTURE_OFFSET(0, 0); end = camera->pl->mem_size - TP6801_CONST_DATA_SIZE; for (i = start; i < end; i += TP6801_BLOCK_SIZE) CHECK (tp6801_erase_block (camera, i)) /* Update state of all picture memory pages */ start /= TP6801_PAGE_SIZE; end /= TP6801_PAGE_SIZE; for (i = start; i < end; i++) camera->pl->page_state[i] = 0; /* Update PAT */ end = tp6801_max_filecount (camera); for (i = 0; i < end; i++) camera->pl->pat[i] = TP6801_PAT_ENTRY_PRE_ERASED; camera->pl->picture_count = 0; camera->pl->page_state[TP6801_PAT_PAGE] |= TP6801_PAGE_DIRTY; return GP_OK; } /* bsp = block start page */ static int tp6801_program_block(Camera *camera, int bsp, char prog_flags) { const int block_page_size = TP6801_BLOCK_SIZE / TP6801_PAGE_SIZE; int i, offset; for (i = 0, offset = bsp * TP6801_PAGE_SIZE; i < block_page_size; i++, offset += TP6801_PAGE_SIZE) { if (!(camera->pl->page_state[bsp + i] & prog_flags)) continue; CHECK (tp6801_program_page (camera, offset, camera->pl->mem + offset)) camera->pl->page_state[bsp + i] &= ~TP6801_PAGE_DIRTY; camera->pl->page_state[bsp + i] |= TP6801_PAGE_NEEDS_ERASE; } return GP_OK; } static int tp6801_read_erase_program_block(Camera *camera, int bsp) { const int block_page_size = TP6801_BLOCK_SIZE / TP6801_PAGE_SIZE; int i, offset, to_read; /* Step 1 read in any pages which contain data before erasing! */ i = 0; while (i < block_page_size) { /* Skip unused pages */ if (!(camera->pl->page_state[bsp + i] & TP6801_PAGE_CONTAINS_DATA)) { i++; continue; } /* Read as many pages in one go as possible */ to_read = 0; while ((i + to_read) < block_page_size && (camera->pl->page_state[bsp + i + to_read] & TP6801_PAGE_CONTAINS_DATA)) { to_read++; } offset = (bsp + i) * TP6801_PAGE_SIZE; CHECK (tp6801_read_mem (camera, offset, to_read * TP6801_PAGE_SIZE)) i += to_read; } /* Step 2 erase the block */ CHECK (tp6801_erase_block (camera, bsp * TP6801_PAGE_SIZE)) for (i = 0; i < block_page_size; i++) { camera->pl->page_state[bsp + i] &= ~TP6801_PAGE_NEEDS_ERASE; } /* Step 3 program all pages which are dirty or contain data */ CHECK (tp6801_program_block (camera, bsp, TP6801_PAGE_DIRTY | TP6801_PAGE_CONTAINS_DATA)) return GP_OK; } static int tp6801_commit_block(Camera *camera, int bsp) { const int block_page_size = TP6801_BLOCK_SIZE / TP6801_PAGE_SIZE; int i, dirty_pages = 0, needs_erase = 0; for (i = 0; i < block_page_size; i++) { char page_state = camera->pl->page_state[bsp + i]; if (page_state & TP6801_PAGE_DIRTY) { dirty_pages++; if (page_state & TP6801_PAGE_NEEDS_ERASE) needs_erase++; } } if (!dirty_pages) return GP_OK; if (needs_erase) CHECK (tp6801_read_erase_program_block (camera, bsp)) else /* No erase needed, just program dirty pages */ CHECK (tp6801_program_block (camera, bsp, TP6801_PAGE_DIRTY)) return GP_OK; } int tp6801_commit(Camera *camera) { const int size = tp6801_filesize (camera); const int block_page_size = TP6801_BLOCK_SIZE / TP6801_PAGE_SIZE; int mem_page_size = camera->pl->mem_size / TP6801_PAGE_SIZE; int i, j, begin, end, count = tp6801_max_filecount (camera); /* Skip the first block as that contains the PAT */ for (i = block_page_size; i < mem_page_size; i += block_page_size) { CHECK (tp6801_commit_block (camera, i)) } /* Now see if we've completely erased the area of some deleted files and if so mark there PAT entries as pre-erased, rather then just deleted */ for (i = 0; i < count; i++) { if (!TP6801_PAT_ENTRY_DELETED(camera->pl->pat[i])) continue; begin = TP6801_PICTURE_OFFSET(i, size) / TP6801_PAGE_SIZE; end = TP6801_PICTURE_OFFSET(i + 1, size) / TP6801_PAGE_SIZE; for (j = begin; j < end; j++) { char page_state = camera->pl->page_state[j]; if (page_state & TP6801_PAGE_NEEDS_ERASE) break; } if (j == end) { /* No page needs erase -> mark pre-erased */ camera->pl->pat[i] = TP6801_PAT_ENTRY_PRE_ERASED; camera->pl->page_state[TP6801_PAT_PAGE] |= TP6801_PAGE_DIRTY; } } /* The picture numbering in the PAT can contain holes from us (or the frame which is why wo do this here) deleting pictures. These holes are a problem as if we keep deleting all but the highest numbered picture and adding new pictures the picture number could reach 254 / 255 which have special meaning. So we renumber the pictures here to remove the holes */ for (i = 1; i <= camera->pl->picture_count; i++) { /* Step 1 see if this number exists in the PAT */ for (j = 0; j < count; j++) if (camera->pl->pat[j] == i) break; if (j != count) continue; /* Number exists no renumber needed */ /* Step 2 decr. the number of all higher numbered picts */ for (j = 0; j < count; j++) { if (camera->pl->pat[j] >= 1 && camera->pl->pat[j] <= camera->pl->picture_count && camera->pl->pat[j] > i) { camera->pl->pat[j]--; } } camera->pl->picture_count--; camera->pl->page_state[TP6801_PAT_PAGE] |= TP6801_PAGE_DIRTY; } /* And commit the block with the PAT */ CHECK (tp6801_commit_block (camera, 0)) return GP_OK; } static const struct tp6801_model_info { int vid; int pid; char model[TP6801_SCSI_MODEL_LEN + 1]; int width; int height; } tp6801_models[] = { { 0x0168, 0x3011, "InsigniaNS-KEYXX09", 160, 128 }, /* Guessed */ { 0x0168, 0x3011, "InsigniaNS-KEYXX10", 160, 128 }, {} }; int tp6801_open_device(Camera *camera) { int i, j, count, size, begin, end, offset, vid, pid; char model[TP6801_SCSI_MODEL_LEN + 1]; CHECK (tp6801_detect_mem (camera)) /* Read the first 512 bytes of the const data area, this gives us the usb id, scsi model and begin of the iso img */ offset = camera->pl->mem_size - TP6801_CONST_DATA_SIZE; CHECK (tp6801_read_mem (camera, offset, 512)) /* Sanity check, verify that the iso starts where we expect it, if it does not we likely have the size of the const data wrong for this model, and could overwrite part of the iso, not good! */ offset += TP6801_ISO_OFFSET; if (memcmp (camera->pl->mem + offset, "\001CD001", 6)) { gp_log (GP_LOG_ERROR, "tp6801", "Could not find ISO header"); return GP_ERROR_MODEL_NOT_FOUND; } offset -= TP6801_ISO_OFFSET; /* The 4st 4 bytes of the const data are pid:vid */ pid = (camera->pl->mem[offset + 0] << 8) | camera->pl->mem[offset + 1]; vid = (camera->pl->mem[offset + 2] << 8) | camera->pl->mem[offset + 3]; offset += TP6801_SCSI_MODEL_OFFSET; CHECK (tp6801_read_mem (camera, offset, TP6801_SCSI_MODEL_LEN)) memcpy (model, camera->pl->mem + offset, TP6801_SCSI_MODEL_LEN); model[TP6801_SCSI_MODEL_LEN] = 0; for (i = 0; tp6801_models[i].pid; i++) { if (tp6801_models[i].pid == pid && tp6801_models[i].vid == vid && strcmp(tp6801_models[i].model, model) == 0) break; } if (!tp6801_models[i].pid) { gp_log (GP_LOG_ERROR, "tp6801", "unknown model %04x:%04x %s", vid, pid, model); return GP_ERROR_MODEL_NOT_FOUND; } camera->pl->width = tp6801_models[i].width; camera->pl->height = tp6801_models[i].height; GP_DEBUG("tp6801 detect %s model (%dx%d)", model, camera->pl->width, camera->pl->height); /* One more sanity check */ size = tp6801_filesize (camera); if (size % TP6801_PAGE_SIZE) { gp_log (GP_LOG_ERROR, "tp6801", "image size not page aligned"); return GP_ERROR_MODEL_NOT_FOUND; } /* Read PAT, verify signature */ CHECK (tp6801_read_mem (camera, TP6801_PAT_OFFSET, TP6801_PAT_SIZE)) if (memcmp (camera->pl->mem + TP6801_PAT_MAGIC_OFFSET, TP6801_PAT_MAGIC, strlen(TP6801_PAT_MAGIC))) { gp_log (GP_LOG_ERROR, "tp6801", "invalid pat magic"); return GP_ERROR_MODEL_NOT_FOUND; } camera->pl->pat = (unsigned char *)camera->pl->mem + TP6801_PAT_OFFSET; /* Set initial page state for all pages */ for (i = 0; i < camera->pl->mem_size / TP6801_PAGE_SIZE; i++) camera->pl->page_state[i] |= TP6801_PAGE_CONTAINS_DATA | TP6801_PAGE_NEEDS_ERASE; /* Parse and verify PAT and update page_state based on it */ count = tp6801_max_filecount(camera); for (i = 0; i < count; i++) { int clear_flags = 0; if (camera->pl->pat[i] >= 1 && camera->pl->pat[i] <= count) { if (camera->pl->pat[i] > camera->pl->picture_count) camera->pl->picture_count = camera->pl->pat[i]; continue; } else switch (camera->pl->pat[i]) { case TP6801_PAT_ENTRY_PRE_ERASED: clear_flags |= TP6801_PAGE_NEEDS_ERASE; /* fall through */ case TP6801_PAT_ENTRY_DELETED_FRAME: case TP6801_PAT_ENTRY_DELETED_WIN: clear_flags |= TP6801_PAGE_CONTAINS_DATA; break; default: gp_log (GP_LOG_ERROR, "tp6801", "invalid pat entry"); return GP_ERROR_CORRUPTED_DATA; } begin = TP6801_PICTURE_OFFSET(i, size) / TP6801_PAGE_SIZE; end = TP6801_PICTURE_OFFSET(i + 1, size) / TP6801_PAGE_SIZE; for (j = begin; j < end; j++) camera->pl->page_state[j] &= ~clear_flags; } return GP_OK; } int tp6801_open_dump(Camera *camera, const char *dump) { camera->pl->mem_dump = fopen(dump, "r+"); if (!camera->pl->mem_dump) { gp_log (GP_LOG_ERROR, "tp6801", "opening memdump file: %s: %s", dump, strerror(errno)); return GP_ERROR_IO_INIT; } return tp6801_open_device (camera); } void tp6801_close(Camera *camera) { free (camera->pl->mem); camera->pl->mem = NULL; if (camera->pl->mem_dump) { fclose (camera->pl->mem_dump); camera->pl->mem_dump = NULL; } } int tp6801_get_mem_size(Camera *camera) { return camera->pl->mem_size; } int tp6801_get_free_mem_size(Camera *camera) { return (tp6801_max_filecount (camera) - camera->pl->picture_count) * tp6801_filesize (camera); } libgphoto2-2.5.9/camlibs/tp6801/Makefile-files0000644000175000001440000000055612610415524015637 00000000000000EXTRA_DIST += tp6801/README.tp6801 tp6801/tp6801-dump.c camlibdoc_DATA += tp6801/README.tp6801 EXTRA_LTLIBRARIES += tp6801.la tp6801_la_SOURCES = tp6801/library.c tp6801/tp6801.c tp6801/tp6801.h tp6801_la_LDFLAGS = $(camlib_ldflags) tp6801_la_DEPENDENCIES = $(camlib_dependencies) tp6801_la_LIBADD = $(camlib_libadd) @LIBGD_LIBS@ tp6801_la_CFLAGS = @LIBGD_CFLAGS@ libgphoto2-2.5.9/camlibs/samsung/0000755000175000001440000000000012623156267013676 500000000000000libgphoto2-2.5.9/camlibs/samsung/Makefile-files0000644000175000001440000000034512561423351016350 00000000000000EXTRA_LTLIBRARIES += samsung.la EXTRA_DIST += samsung/ChangeLog samsung_la_SOURCES = samsung/samsung.c samsung_la_LDFLAGS = $(camlib_ldflags) samsung_la_DEPENDENCIES = $(camlib_dependencies) samsung_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/samsung/samsung.c0000644000175000001440000002167612610415536015444 00000000000000/* samsung.c * * Copyright 2000 James McKenzie * Copyright 2001 Lutz Mueller * Copyright 2002 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include /* The commands */ #define SDSC_START 0x43 #define SDSC_NEXT 0x53 #define SDSC_BINARY 0x06 #define SDSC_RETRANSMIT 0x15 #define SDSC_BLOCKSIZE 0x400 #define SDSC_INFOSIZE 0x080 #define SDSC_TIMEOUT 500 #define SDSC_RETRIES 3 /* Our own error codes */ #define SDSC_ERROR_EOF -1001 #define CHECK_RESULT(result) {int r = result; if (r < 0) return (r);} #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif static int SDSC_send (GPPort *port, unsigned char command) { CHECK_RESULT (gp_port_write (port, (char *)&command, 1)); return (GP_OK); } static int SDSC_receive (GPPort *port, unsigned char *buf, int length) { char tmp[3]; int i, result = GP_OK; for (i = 0; i < SDSC_RETRIES; i++) { /* Read the header (3 bytes) and check for EOF */ CHECK_RESULT (gp_port_read (port, tmp, 1)); if (tmp[0] == 0x04) return (SDSC_ERROR_EOF); result = gp_port_read (port, tmp, 2); if (result < 0) { CHECK_RESULT (SDSC_send (port, SDSC_RETRANSMIT)); continue; } /* Read data */ result = gp_port_read (port, (char *)buf, length); if (result < 0) { CHECK_RESULT (SDSC_send (port, SDSC_RETRANSMIT)); continue; } /* Read footer (2 bytes) */ result = gp_port_read (port, tmp, 2); if (result < 0) { CHECK_RESULT (SDSC_send (port, SDSC_RETRANSMIT)); continue; } break; } return (result); } static int is_null (unsigned char *buf) { int n = 128; while (n--) if (*(buf++)) return (0); return (1); } static int SDSC_initialize (GPPort *port) { unsigned char buffer[SDSC_INFOSIZE]; /* Read out a header */ do { CHECK_RESULT (SDSC_send (port, SDSC_NEXT)); CHECK_RESULT (SDSC_send (port, SDSC_START)); CHECK_RESULT (SDSC_receive (port, buffer, SDSC_INFOSIZE)); } while (!is_null (buffer)); return (GP_OK); } int camera_id (CameraText *id) { strcpy (id->text, "samsung"); return (GP_OK); } static const struct { const char *model; } models[] = { {"Samsung:digimax 800k"}, {"Dynatron:Dynacam 800"}, {"Jenoptik:JD12 800ff"}, {"Praktica:QD800"}, {NULL} }; int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].model; i++) { memset (&a, 0, sizeof(a)); strcpy (a.model, models[i].model); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 115200; a.speed[1] = 0; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_NONE; CHECK_RESULT (gp_abilities_list_append (list, a)); } return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int result; int havefirst = 0; unsigned char buffer[SDSC_BLOCKSIZE], first[SDSC_BLOCKSIZE]; long int size, curread; unsigned int pid; if (type != GP_FILE_TYPE_NORMAL) return (GP_ERROR_NOT_SUPPORTED); /* Seek the header of our file */ while (1) { CHECK_RESULT (SDSC_send (camera->port, SDSC_NEXT)); CHECK_RESULT (SDSC_send (camera->port, SDSC_START)); CHECK_RESULT (SDSC_receive (camera->port, buffer, SDSC_INFOSIZE)); if (!strcmp((char*)buffer,filename)) break; if (is_null(buffer)) { /* skipped to the end of the camera? */ /* Since we start at a random position, we wrap around. */ continue; } /* We are at the first item again, so break. */ if (havefirst && !strcmp((char*)first,(char*)buffer)) return GP_ERROR_BAD_PARAMETERS; if (!havefirst) { havefirst = 1; strcpy((char*)first,(char*)buffer); } } /* The buffer header has * filename (8.3 DOS format and \0) * filesize (as ascii number) and \0 */ /* Extract the size of the file */ sscanf((char *)buffer+12,"%ld",&size); /* Put the camera into image mode */ CHECK_RESULT (SDSC_send (camera->port, SDSC_BINARY)); CHECK_RESULT (SDSC_send (camera->port, SDSC_START)); pid = gp_context_progress_start(context,size,_("Downloading image...")); curread = 0; /* Read data */ while (1) { /* Read data and check for EOF */ result = SDSC_receive (camera->port, buffer, SDSC_BLOCKSIZE); if (result == SDSC_ERROR_EOF) break; if (result < 0) return result; gp_file_append(file,(char *)buffer,SDSC_BLOCKSIZE); curread += SDSC_BLOCKSIZE; gp_context_progress_update(context, pid, curread); if (gp_context_cancel(context) == GP_CONTEXT_FEEDBACK_CANCEL) return GP_ERROR_CANCEL; CHECK_RESULT (SDSC_send (camera->port, SDSC_BINARY)); } gp_context_progress_stop(context, pid); CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_JPEG)); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { /* Translators: please write 'M"uller' and 'Mei"sner' (that is, with u-umlaut and eszett resp.) if your charset allows it. If not, use "Mueller" and "Meissner". */ strcpy (about->text, _("The Samsung digimax 800k driver has " "been written by James McKenzie " " for gphoto. " "Lutz Mueller ported it to " "gphoto2. Marcus Meissner fixed " "and enhanced the port.") ); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { unsigned char buffer[SDSC_INFOSIZE]; Camera *camera = data; /* Rewind */ CHECK_RESULT (SDSC_initialize (camera->port)); /* Count the pictures */ while (1) { CHECK_RESULT (SDSC_send (camera->port, SDSC_NEXT)); CHECK_RESULT (SDSC_send (camera->port, SDSC_START)); CHECK_RESULT (SDSC_receive (camera->port, buffer, SDSC_INFOSIZE)); if (is_null (buffer)) break; gp_list_append(list, (char *)buffer, NULL); } return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int havefirst = 0; unsigned char buffer[SDSC_INFOSIZE], first[SDSC_INFOSIZE]; info->file.fields = GP_FILE_INFO_NONE; /* Don't rewind, just go forward until we find it. * Works way better for linear queries. */ while (1) { CHECK_RESULT (SDSC_send (camera->port, SDSC_NEXT)); CHECK_RESULT (SDSC_send (camera->port, SDSC_START)); CHECK_RESULT (SDSC_receive (camera->port,buffer,SDSC_INFOSIZE)); if (is_null (buffer)) continue; if (!strcmp((char*)buffer,filename)) { info->file.fields = GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT | GP_FILE_INFO_SIZE; info->file.width = 1024; info->file.height = 768; strcpy(info->file.type,GP_MIME_JPEG); sscanf((char *)buffer+12,"%lld",(long long int *)&info->file.size); return GP_OK; } /* We are at the first item again */ if (havefirst && !strcmp((char*)first,(char*)buffer)) break; if (!havefirst) { havefirst = 1; strcpy((char*)first,(char*)buffer); } } return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; /* First, set up all the function pointers */ camera->functions->about = camera_about; /* Now, tell the filesystem where to get lists and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* Some settings */ CHECK_RESULT (gp_port_get_settings (camera->port, &settings)); settings.serial.speed = 115200; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits= 1; CHECK_RESULT (gp_port_set_settings (camera->port, settings)); CHECK_RESULT (gp_port_set_timeout (camera->port, SDSC_TIMEOUT)); /* Open the port and check if the camera is there */ CHECK_RESULT (SDSC_initialize (camera->port)); return (GP_OK); } libgphoto2-2.5.9/camlibs/samsung/ChangeLog0000644000175000001440000000136712557123324015371 000000000000002002-04-05 Marcus Meissner * samsung.c: Should include name into file info. Actually update the file data the same way we update the progress data (helping kio_camera along). 2002-04-04 Marcus Meissner * samsung.c: Implemented get_info_func, so kio_camera download images only once. Some logical changes to other functions which might make them faster on large imagesets. 2002-01-14 Marcus Meissner * samsung.c: Added progress and abort handling to image download. 2002-01-14 Marcus Meissner [ I bought a Practika QD800, which is the same model. ] * samsung.c: Fixed the porting bugs, the driver now downloads images correctly. libgphoto2-2.5.9/camlibs/ptp2/0000755000175000001440000000000012623156267013106 500000000000000libgphoto2-2.5.9/camlibs/ptp2/ptp.h0000644000175000001440000037301112620041617013774 00000000000000/* ptp.h * * Copyright (C) 2001 Mariusz Woloszyn * Copyright (C) 2003-2014 Marcus Meissner * Copyright (C) 2006-2008 Linus Walleij * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __PTP_H__ #define __PTP_H__ #include #include #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) #include #endif #include "gphoto2-endian.h" #include "device-flags.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* PTP datalayer byteorder */ #define PTP_DL_BE 0xF0 #define PTP_DL_LE 0x0F /* USB interface class */ #ifndef USB_CLASS_PTP #define USB_CLASS_PTP 6 #endif /* PTP request/response/event general PTP container (transport independent) */ struct _PTPContainer { uint16_t Code; uint32_t SessionID; uint32_t Transaction_ID; /* params may be of any type of size less or equal to uint32_t */ uint32_t Param1; uint32_t Param2; uint32_t Param3; /* events can only have three parameters */ uint32_t Param4; uint32_t Param5; /* the number of meaningfull parameters */ uint8_t Nparam; }; typedef struct _PTPContainer PTPContainer; /* PTP USB Bulk-Pipe container */ /* USB bulk max packet length for high speed endpoints */ /* The max packet is set to 512 bytes. The spec says * "end of data transfers are signaled by short packets or NULL * packets". It never says anything about 512, but current * implementations seem to have chosen this value, which also * happens to be the size of an USB 2.0 HS endpoint, even though * this is not necessary. * * Previously we had this as 4096 for MTP devices. We have found * and fixed the bugs that made this necessary and it can be 512 again. * * USB 3.0 has now 1024 byte EPs. */ #define PTP_USB_BULK_HS_MAX_PACKET_LEN_WRITE 512 #define PTP_USB_BULK_HS_MAX_PACKET_LEN_READ 512 #define PTP_USB_BULK_SS_MAX_PACKET_LEN_WRITE 1024 #define PTP_USB_BULK_SS_MAX_PACKET_LEN_READ 1024 #define PTP_USB_BULK_HDR_LEN (2*sizeof(uint32_t)+2*sizeof(uint16_t)) #define PTP_USB_BULK_PAYLOAD_LEN_WRITE (PTP_USB_BULK_SS_MAX_PACKET_LEN_WRITE-PTP_USB_BULK_HDR_LEN) #define PTP_USB_BULK_PAYLOAD_LEN_READ (PTP_USB_BULK_SS_MAX_PACKET_LEN_READ-PTP_USB_BULK_HDR_LEN) #define PTP_USB_BULK_REQ_LEN (PTP_USB_BULK_HDR_LEN+5*sizeof(uint32_t)) struct _PTPUSBBulkContainer { uint32_t length; uint16_t type; uint16_t code; uint32_t trans_id; union { struct { uint32_t param1; uint32_t param2; uint32_t param3; uint32_t param4; uint32_t param5; } params; /* this must be set to the maximum of PTP_USB_BULK_PAYLOAD_LEN_WRITE * and PTP_USB_BULK_PAYLOAD_LEN_READ */ unsigned char data[PTP_USB_BULK_PAYLOAD_LEN_READ]; } payload; }; typedef struct _PTPUSBBulkContainer PTPUSBBulkContainer; /* PTP USB Asynchronous Event Interrupt Data Format */ struct _PTPUSBEventContainer { uint32_t length; uint16_t type; uint16_t code; uint32_t trans_id; uint32_t param1; uint32_t param2; uint32_t param3; }; typedef struct _PTPUSBEventContainer PTPUSBEventContainer; struct _PTPCanon_directtransfer_entry { uint32_t oid; char *str; }; typedef struct _PTPCanon_directtransfer_entry PTPCanon_directtransfer_entry; /* USB container types */ #define PTP_USB_CONTAINER_UNDEFINED 0x0000 #define PTP_USB_CONTAINER_COMMAND 0x0001 #define PTP_USB_CONTAINER_DATA 0x0002 #define PTP_USB_CONTAINER_RESPONSE 0x0003 #define PTP_USB_CONTAINER_EVENT 0x0004 /* PTP/IP definitions */ #define PTPIP_INIT_COMMAND_REQUEST 1 #define PTPIP_INIT_COMMAND_ACK 2 #define PTPIP_INIT_EVENT_REQUEST 3 #define PTPIP_INIT_EVENT_ACK 4 #define PTPIP_INIT_FAIL 5 #define PTPIP_CMD_REQUEST 6 #define PTPIP_CMD_RESPONSE 7 #define PTPIP_EVENT 8 #define PTPIP_START_DATA_PACKET 9 #define PTPIP_DATA_PACKET 10 #define PTPIP_CANCEL_TRANSACTION 11 #define PTPIP_END_DATA_PACKET 12 #define PTPIP_PING 13 #define PTPIP_PONG 14 struct _PTPIPHeader { uint32_t length; uint32_t type; }; typedef struct _PTPIPHeader PTPIPHeader; /* Vendor IDs */ #define PTP_VENDOR_EASTMAN_KODAK 0x00000001 #define PTP_VENDOR_SEIKO_EPSON 0x00000002 #define PTP_VENDOR_AGILENT 0x00000003 #define PTP_VENDOR_POLAROID 0x00000004 #define PTP_VENDOR_AGFA_GEVAERT 0x00000005 #define PTP_VENDOR_MICROSOFT 0x00000006 #define PTP_VENDOR_EQUINOX 0x00000007 #define PTP_VENDOR_VIEWQUEST 0x00000008 #define PTP_VENDOR_STMICROELECTRONICS 0x00000009 #define PTP_VENDOR_NIKON 0x0000000A #define PTP_VENDOR_CANON 0x0000000B #define PTP_VENDOR_FOTONATION 0x0000000C #define PTP_VENDOR_PENTAX 0x0000000D #define PTP_VENDOR_FUJI 0x0000000E /* not from standards papers, but from traces: */ #define PTP_VENDOR_SONY 0x00000011 /* observed in the A900 */ #define PTP_VENDOR_SAMSUNG 0x0000001a /* observed in the Samsung NX1000 */ /* Vendor extension ID used for MTP (occasionaly, usualy 6 is used) */ #define PTP_VENDOR_MTP 0xffffffff /* gphoto overrides */ #define PTP_VENDOR_GP_OLYMPUS 0xfffffffe /* Operation Codes */ /* PTP v1.0 operation codes */ #define PTP_OC_Undefined 0x1000 #define PTP_OC_GetDeviceInfo 0x1001 #define PTP_OC_OpenSession 0x1002 #define PTP_OC_CloseSession 0x1003 #define PTP_OC_GetStorageIDs 0x1004 #define PTP_OC_GetStorageInfo 0x1005 #define PTP_OC_GetNumObjects 0x1006 #define PTP_OC_GetObjectHandles 0x1007 #define PTP_OC_GetObjectInfo 0x1008 #define PTP_OC_GetObject 0x1009 #define PTP_OC_GetThumb 0x100A #define PTP_OC_DeleteObject 0x100B #define PTP_OC_SendObjectInfo 0x100C #define PTP_OC_SendObject 0x100D #define PTP_OC_InitiateCapture 0x100E #define PTP_OC_FormatStore 0x100F #define PTP_OC_ResetDevice 0x1010 #define PTP_OC_SelfTest 0x1011 #define PTP_OC_SetObjectProtection 0x1012 #define PTP_OC_PowerDown 0x1013 #define PTP_OC_GetDevicePropDesc 0x1014 #define PTP_OC_GetDevicePropValue 0x1015 #define PTP_OC_SetDevicePropValue 0x1016 #define PTP_OC_ResetDevicePropValue 0x1017 #define PTP_OC_TerminateOpenCapture 0x1018 #define PTP_OC_MoveObject 0x1019 #define PTP_OC_CopyObject 0x101A #define PTP_OC_GetPartialObject 0x101B #define PTP_OC_InitiateOpenCapture 0x101C /* PTP v1.1 operation codes */ #define PTP_OC_StartEnumHandles 0x101D #define PTP_OC_EnumHandles 0x101E #define PTP_OC_StopEnumHandles 0x101F #define PTP_OC_GetVendorExtensionMaps 0x1020 #define PTP_OC_GetVendorDeviceInfo 0x1021 #define PTP_OC_GetResizedImageObject 0x1022 #define PTP_OC_GetFilesystemManifest 0x1023 #define PTP_OC_GetStreamInfo 0x1024 #define PTP_OC_GetStream 0x1025 /* Eastman Kodak extension Operation Codes */ #define PTP_OC_EK_GetSerial 0x9003 #define PTP_OC_EK_SetSerial 0x9004 #define PTP_OC_EK_SendFileObjectInfo 0x9005 #define PTP_OC_EK_SendFileObject 0x9006 #define PTP_OC_EK_SetText 0x9008 /* Canon extension Operation Codes */ #define PTP_OC_CANON_GetPartialObjectInfo 0x9001 /* 9002 - sends 2 uint32, nothing back */ #define PTP_OC_CANON_SetObjectArchive 0x9002 #define PTP_OC_CANON_KeepDeviceOn 0x9003 #define PTP_OC_CANON_LockDeviceUI 0x9004 #define PTP_OC_CANON_UnlockDeviceUI 0x9005 #define PTP_OC_CANON_GetObjectHandleByName 0x9006 /* no 9007 observed yet */ #define PTP_OC_CANON_InitiateReleaseControl 0x9008 #define PTP_OC_CANON_TerminateReleaseControl 0x9009 #define PTP_OC_CANON_TerminatePlaybackMode 0x900A #define PTP_OC_CANON_ViewfinderOn 0x900B #define PTP_OC_CANON_ViewfinderOff 0x900C #define PTP_OC_CANON_DoAeAfAwb 0x900D /* 900e - send nothing, gets 5 uint16t in 32bit entities back in 20byte datablob */ #define PTP_OC_CANON_GetCustomizeSpec 0x900E #define PTP_OC_CANON_GetCustomizeItemInfo 0x900F #define PTP_OC_CANON_GetCustomizeData 0x9010 #define PTP_OC_CANON_SetCustomizeData 0x9011 #define PTP_OC_CANON_GetCaptureStatus 0x9012 #define PTP_OC_CANON_CheckEvent 0x9013 #define PTP_OC_CANON_FocusLock 0x9014 #define PTP_OC_CANON_FocusUnlock 0x9015 #define PTP_OC_CANON_GetLocalReleaseParam 0x9016 #define PTP_OC_CANON_SetLocalReleaseParam 0x9017 #define PTP_OC_CANON_AskAboutPcEvf 0x9018 #define PTP_OC_CANON_SendPartialObject 0x9019 #define PTP_OC_CANON_InitiateCaptureInMemory 0x901A #define PTP_OC_CANON_GetPartialObjectEx 0x901B #define PTP_OC_CANON_SetObjectTime 0x901C #define PTP_OC_CANON_GetViewfinderImage 0x901D #define PTP_OC_CANON_GetObjectAttributes 0x901E #define PTP_OC_CANON_ChangeUSBProtocol 0x901F #define PTP_OC_CANON_GetChanges 0x9020 #define PTP_OC_CANON_GetObjectInfoEx 0x9021 #define PTP_OC_CANON_InitiateDirectTransfer 0x9022 #define PTP_OC_CANON_TerminateDirectTransfer 0x9023 #define PTP_OC_CANON_SendObjectInfoByPath 0x9024 #define PTP_OC_CANON_SendObjectByPath 0x9025 #define PTP_OC_CANON_InitiateDirectTansferEx 0x9026 #define PTP_OC_CANON_GetAncillaryObjectHandles 0x9027 #define PTP_OC_CANON_GetTreeInfo 0x9028 #define PTP_OC_CANON_GetTreeSize 0x9029 #define PTP_OC_CANON_NotifyProgress 0x902A #define PTP_OC_CANON_NotifyCancelAccepted 0x902B /* 902c: no parms, read 3 uint32 in data, no response parms */ #define PTP_OC_CANON_902C 0x902C #define PTP_OC_CANON_GetDirectory 0x902D #define PTP_OC_CANON_902E 0x902E #define PTP_OC_CANON_SetPairingInfo 0x9030 #define PTP_OC_CANON_GetPairingInfo 0x9031 #define PTP_OC_CANON_DeletePairingInfo 0x9032 #define PTP_OC_CANON_GetMACAddress 0x9033 /* 9034: 1 param, no parms returned */ #define PTP_OC_CANON_SetDisplayMonitor 0x9034 #define PTP_OC_CANON_PairingComplete 0x9035 #define PTP_OC_CANON_GetWirelessMAXChannel 0x9036 #define PTP_OC_CANON_GetWebServiceSpec 0x9068 #define PTP_OC_CANON_GetWebServiceData 0x9069 #define PTP_OC_CANON_SetWebServiceData 0x906B #define PTP_OC_CANON_GetRootCertificateSpec 0x906C #define PTP_OC_CANON_GetRootCertificateData 0x906D #define PTP_OC_CANON_SetRootCertificateData 0x906F /* 9101: no args, 8 byte data (01 00 00 00 00 00 00 00), no resp data. */ #define PTP_OC_CANON_EOS_GetStorageIDs 0x9101 /* 9102: 1 arg (0) * 0x28 bytes of data: 00000000: 34 00 00 00 02 00 02 91 0a 00 00 00 04 00 03 00 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000020: 00 00 ff ff ff ff 03 43 00 46 00 00 00 03 41 00 00000030: 3a 00 00 00 * no resp args */ #define PTP_OC_CANON_EOS_GetStorageInfo 0x9102 #define PTP_OC_CANON_EOS_GetObjectInfo 0x9103 #define PTP_OC_CANON_EOS_GetObject 0x9104 #define PTP_OC_CANON_EOS_DeleteObject 0x9105 #define PTP_OC_CANON_EOS_FormatStore 0x9106 #define PTP_OC_CANON_EOS_GetPartialObject 0x9107 #define PTP_OC_CANON_EOS_GetDeviceInfoEx 0x9108 /* sample1: * 3 cmdargs: 1,0xffffffff,00 00 10 00; * data: 00000000: 48 00 00 00 02 00 09 91 12 00 00 00 01 00 00 00 00000010: 38 00 00 00 00 00 00 30 01 00 00 00 01 30 00 00 00000020: 01 00 00 00 10 00 00 00 00 00 00 00 00 00 00 20 00000030: 00 00 00 30 44 43 49 4d 00 00 00 00 00 00 00 00 DCIM 00000040: 00 00 00 00 cc c3 01 46 * 2 respargs: 0x0, 0x3c * * sample2: * 00000000: 18 00 00 00 01 00 09 91 15 00 00 00 01 00 00 00 00000010: 00 00 00 30 00 00 10 00 00000000: 48 00 00 00 02 00 09 91 15 00 00 00 01 00 00 00 00000010: 38 00 00 00 00 00 9c 33 01 00 00 00 01 30 00 00 00000020: 01 00 00 00 10 00 00 00 00 00 00 00 00 00 00 30 00000030: 00 00 9c 33 32 33 31 43 41 4e 4f 4e 00 00 00 00 231CANON 00000040: 00 00 00 00 cc c3 01 46 */ #define PTP_OC_CANON_EOS_GetObjectInfoEx 0x9109 #define PTP_OC_CANON_EOS_GetThumbEx 0x910A #define PTP_OC_CANON_EOS_SendPartialObject 0x910B #define PTP_OC_CANON_EOS_SetObjectAttributes 0x910C #define PTP_OC_CANON_EOS_GetObjectTime 0x910D #define PTP_OC_CANON_EOS_SetObjectTime 0x910E /* 910f: no args, no data, 1 response arg (0). */ #define PTP_OC_CANON_EOS_RemoteRelease 0x910F /* Marcus: looks more like "Set DeviceProperty" in the trace. * * no cmd args * data phase (0xc, 0xd11c, 0x1) * no resp args */ #define PTP_OC_CANON_EOS_SetDevicePropValueEx 0x9110 #define PTP_OC_CANON_EOS_GetRemoteMode 0x9113 /* 9114: 1 arg (0x1), no data, no resp data. */ #define PTP_OC_CANON_EOS_SetRemoteMode 0x9114 /* 9115: 1 arg (0x1), no data, no resp data. */ #define PTP_OC_CANON_EOS_SetEventMode 0x9115 /* 9116: no args, data phase, no resp data. */ #define PTP_OC_CANON_EOS_GetEvent 0x9116 #define PTP_OC_CANON_EOS_TransferComplete 0x9117 #define PTP_OC_CANON_EOS_CancelTransfer 0x9118 #define PTP_OC_CANON_EOS_ResetTransfer 0x9119 /* 911a: 3 args (0xfffffff7, 0x00001000, 0x00000001), no data, no resp data. */ /* 911a: 3 args (0x001dfc60, 0x00001000, 0x00000001), no data, no resp data. */ #define PTP_OC_CANON_EOS_PCHDDCapacity 0x911A /* 911b: no cmd args, no data, no resp args */ #define PTP_OC_CANON_EOS_SetUILock 0x911B /* 911c: no cmd args, no data, no resp args */ #define PTP_OC_CANON_EOS_ResetUILock 0x911C #define PTP_OC_CANON_EOS_KeepDeviceOn 0x911D #define PTP_OC_CANON_EOS_SetNullPacketMode 0x911E #define PTP_OC_CANON_EOS_UpdateFirmware 0x911F #define PTP_OC_CANON_EOS_TransferCompleteDT 0x9120 #define PTP_OC_CANON_EOS_CancelTransferDT 0x9121 #define PTP_OC_CANON_EOS_SetWftProfile 0x9122 #define PTP_OC_CANON_EOS_GetWftProfile 0x9123 #define PTP_OC_CANON_EOS_SetProfileToWft 0x9124 #define PTP_OC_CANON_EOS_BulbStart 0x9125 #define PTP_OC_CANON_EOS_BulbEnd 0x9126 #define PTP_OC_CANON_EOS_RequestDevicePropValue 0x9127 /* 0x9128 args (0x1/0x2, 0x0), no data, no resp args */ #define PTP_OC_CANON_EOS_RemoteReleaseOn 0x9128 /* 0x9129 args (0x1/0x2), no data, no resp args */ #define PTP_OC_CANON_EOS_RemoteReleaseOff 0x9129 #define PTP_OC_CANON_EOS_RegistBackgroundImage 0x912A #define PTP_OC_CANON_EOS_ChangePhotoStudioMode 0x912B #define PTP_OC_CANON_EOS_GetPartialObjectEx 0x912C #define PTP_OC_CANON_EOS_ResetMirrorLockupState 0x9130 #define PTP_OC_CANON_EOS_PopupBuiltinFlash 0x9131 #define PTP_OC_CANON_EOS_EndGetPartialObjectEx 0x9132 #define PTP_OC_CANON_EOS_MovieSelectSWOn 0x9133 #define PTP_OC_CANON_EOS_MovieSelectSWOff 0x9134 #define PTP_OC_CANON_EOS_GetCTGInfo 0x9135 #define PTP_OC_CANON_EOS_GetLensAdjust 0x9136 #define PTP_OC_CANON_EOS_SetLensAdjust 0x9137 #define PTP_OC_CANON_EOS_GetMusicInfo 0x9138 /* 3 paramaeters, no data, OFC, size, unknown */ #define PTP_OC_CANON_EOS_CreateHandle 0x9139 #define PTP_OC_CANON_EOS_SendPartialObjectEx 0x913A #define PTP_OC_CANON_EOS_EndSendPartialObjectEx 0x913B #define PTP_OC_CANON_EOS_SetCTGInfo 0x913C #define PTP_OC_CANON_EOS_SetRequestOLCInfoGroup 0x913D #define PTP_OC_CANON_EOS_SetRequestRollingPitchingLevel 0x913E #define PTP_OC_CANON_EOS_GetCameraSupport 0x913F #define PTP_OC_CANON_EOS_SetRating 0x9140 /* 2 args */ #define PTP_OC_CANON_EOS_RequestInnerDevelopStart 0x9141 /* 2 args: 1 type, 1 object? */ #define PTP_OC_CANON_EOS_RequestInnerDevelopParamChange 0x9142 #define PTP_OC_CANON_EOS_RequestInnerDevelopEnd 0x9143 #define PTP_OC_CANON_EOS_GpsLoggingDataMode 0x9144 /* 1 arg */ #define PTP_OC_CANON_EOS_GetGpsLogCurrentHandle 0x9145 #define PTP_OC_CANON_EOS_InitiateViewfinder 0x9151 #define PTP_OC_CANON_EOS_TerminateViewfinder 0x9152 /* EOS M2 wlan: 2 params, 0x00200000 0x01000000 */ #define PTP_OC_CANON_EOS_GetViewFinderData 0x9153 #define PTP_OC_CANON_EOS_DoAf 0x9154 #define PTP_OC_CANON_EOS_DriveLens 0x9155 #define PTP_OC_CANON_EOS_DepthOfFieldPreview 0x9156 /* 1 arg */ #define PTP_OC_CANON_EOS_ClickWB 0x9157 /* 2 args: x,y */ #define PTP_OC_CANON_EOS_Zoom 0x9158 /* 1 arg */ #define PTP_OC_CANON_EOS_ZoomPosition 0x9159 /* 2 args: x,y */ #define PTP_OC_CANON_EOS_SetLiveAfFrame 0x915A #define PTP_OC_CANON_EOS_TouchAfPosition 0x915B /* 3 args: type,x,y */ #define PTP_OC_CANON_EOS_SetLvPcFlavoreditMode 0x915C /* 1 arg */ #define PTP_OC_CANON_EOS_SetLvPcFlavoreditParam 0x915D /* 1 arg */ #define PTP_OC_CANON_EOS_AfCancel 0x9160 #define PTP_OC_CANON_EOS_SetDefaultCameraSetting 0x91BE #define PTP_OC_CANON_EOS_GetAEData 0x91BF #define PTP_OC_CANON_EOS_NotifyNetworkError 0x91E8 #define PTP_OC_CANON_EOS_AdapterTransferProgress 0x91E9 #define PTP_OC_CANON_EOS_TransferComplete2 0x91F0 #define PTP_OC_CANON_EOS_CancelTransfer2 0x91F1 #define PTP_OC_CANON_EOS_FAPIMessageTX 0x91FE #define PTP_OC_CANON_EOS_FAPIMessageRX 0x91FF /* Nikon extension Operation Codes */ #define PTP_OC_NIKON_GetProfileAllData 0x9006 #define PTP_OC_NIKON_SendProfileData 0x9007 #define PTP_OC_NIKON_DeleteProfile 0x9008 #define PTP_OC_NIKON_SetProfileData 0x9009 #define PTP_OC_NIKON_AdvancedTransfer 0x9010 #define PTP_OC_NIKON_GetFileInfoInBlock 0x9011 #define PTP_OC_NIKON_Capture 0x90C0 /* 1 param, no data */ #define PTP_OC_NIKON_AfDrive 0x90C1 /* no params, no data */ #define PTP_OC_NIKON_SetControlMode 0x90C2 /* 1 param, no data */ #define PTP_OC_NIKON_DelImageSDRAM 0x90C3 /* 1 param, no data */ #define PTP_OC_NIKON_GetLargeThumb 0x90C4 #define PTP_OC_NIKON_CurveDownload 0x90C5 /* 1 param, data in */ #define PTP_OC_NIKON_CurveUpload 0x90C6 /* 1 param, data out */ #define PTP_OC_NIKON_CheckEvent 0x90C7 /* no params, data in */ #define PTP_OC_NIKON_DeviceReady 0x90C8 /* no params, no data */ #define PTP_OC_NIKON_SetPreWBData 0x90C9 /* 3 params, data out */ #define PTP_OC_NIKON_GetVendorPropCodes 0x90CA /* 0 params, data in */ #define PTP_OC_NIKON_AfCaptureSDRAM 0x90CB /* no params, no data */ #define PTP_OC_NIKON_GetPictCtrlData 0x90CC /* 2 params, data in */ #define PTP_OC_NIKON_SetPictCtrlData 0x90CD /* 2 params, data out */ #define PTP_OC_NIKON_DelCstPicCtrl 0x90CE /* 1 param, no data */ #define PTP_OC_NIKON_GetPicCtrlCapability 0x90CF /* 1 param, data in */ /* Nikon Liveview stuff */ #define PTP_OC_NIKON_GetPreviewImg 0x9200 #define PTP_OC_NIKON_StartLiveView 0x9201 /* no params */ #define PTP_OC_NIKON_EndLiveView 0x9202 /* no params */ #define PTP_OC_NIKON_GetLiveViewImg 0x9203 /* no params, data in */ #define PTP_OC_NIKON_MfDrive 0x9204 /* 2 params */ #define PTP_OC_NIKON_ChangeAfArea 0x9205 /* 2 params */ #define PTP_OC_NIKON_AfDriveCancel 0x9206 /* no params */ /* 2 params: * 0xffffffff == No AF before, 0xfffffffe == AF before capture * sdram=1, card=0 */ #define PTP_OC_NIKON_InitiateCaptureRecInMedia 0x9207 /* 1 params */ #define PTP_OC_NIKON_GetVendorStorageIDs 0x9209 /* no params, data in */ #define PTP_OC_NIKON_StartMovieRecInCard 0x920a /* no params, no data */ #define PTP_OC_NIKON_EndMovieRec 0x920b /* no params, no data */ #define PTP_OC_NIKON_TerminateCapture 0x920c /* 2 params */ #define PTP_OC_NIKON_GetDevicePTPIPInfo 0x90E0 #define PTP_OC_NIKON_GetPartialObjectHiSpeed 0x9400 /* 3 params, data in */ /* From Nikon V1 Trace */ #define PTP_OC_NIKON_GetDevicePropEx 0x9504 /* gets device prop dataa */ /* Casio EX-F1 (from http://code.google.com/p/exf1ctrl/ ) */ #define PTP_OC_CASIO_STILL_START 0x9001 #define PTP_OC_CASIO_STILL_STOP 0x9002 #define PTP_OC_CASIO_FOCUS 0x9007 #define PTP_OC_CASIO_CF_PRESS 0x9009 #define PTP_OC_CASIO_CF_RELEASE 0x900A #define PTP_OC_CASIO_GET_OBJECT_INFO 0x900C #define PTP_OC_CASIO_SHUTTER 0x9024 #define PTP_OC_CASIO_GET_STILL_HANDLES 0x9027 #define PTP_OC_CASIO_STILL_RESET 0x9028 #define PTP_OC_CASIO_HALF_PRESS 0x9029 #define PTP_OC_CASIO_HALF_RELEASE 0x902A #define PTP_OC_CASIO_CS_PRESS 0x902B #define PTP_OC_CASIO_CS_RELEASE 0x902C #define PTP_OC_CASIO_ZOOM 0x902D #define PTP_OC_CASIO_CZ_PRESS 0x902E #define PTP_OC_CASIO_CZ_RELEASE 0x902F #define PTP_OC_CASIO_MOVIE_START 0x9041 #define PTP_OC_CASIO_MOVIE_STOP 0x9042 #define PTP_OC_CASIO_MOVIE_PRESS 0x9043 #define PTP_OC_CASIO_MOVIE_RELEASE 0x9044 #define PTP_OC_CASIO_GET_MOVIE_HANDLES 0x9045 #define PTP_OC_CASIO_MOVIE_RESET 0x9046 #define PTP_OC_CASIO_GET_OBJECT 0x9025 #define PTP_OC_CASIO_GET_THUMBNAIL 0x9026 /* Sony stuff */ /* 9201: * 3 params: 1,0,0 ; IN: data 8 bytes all 0 * or: * 3 params: 2,0,0 ; IN: data 8 bytes all 0 * or * 3 params: 3,0,0,: IN: data 8 butes all 0 */ #define PTP_OC_SONY_SDIOConnect 0x9201 /* 9202: 1 param, 0xc8; IN data: * 16 bit: 0xc8 * ptp array 32 bit: index, 16 bit values of propcodes */ #define PTP_OC_SONY_GetSDIOGetExtDeviceInfo 0x9202 #define PTP_OC_SONY_GetDevicePropdesc 0x9203 #define PTP_OC_SONY_GetDevicePropertyValue 0x9204 /* 1 param, 16bit propcode, SEND DATA: propvalue */ #define PTP_OC_SONY_SetControlDeviceA 0x9205 #define PTP_OC_SONY_GetControlDeviceDesc 0x9206 /* 1 param, 16bit propcode, SEND DATA: propvalue */ #define PTP_OC_SONY_SetControlDeviceB 0x9207 /* get all device property data at once */ #define PTP_OC_SONY_GetAllDevicePropData 0x9209 /* gets a 4126 byte blob of device props ?*/ /* Microsoft / MTP extension codes */ #define PTP_OC_MTP_GetObjectPropsSupported 0x9801 #define PTP_OC_MTP_GetObjectPropDesc 0x9802 #define PTP_OC_MTP_GetObjectPropValue 0x9803 #define PTP_OC_MTP_SetObjectPropValue 0x9804 #define PTP_OC_MTP_GetObjPropList 0x9805 #define PTP_OC_MTP_SetObjPropList 0x9806 #define PTP_OC_MTP_GetInterdependendPropdesc 0x9807 #define PTP_OC_MTP_SendObjectPropList 0x9808 #define PTP_OC_MTP_GetObjectReferences 0x9810 #define PTP_OC_MTP_SetObjectReferences 0x9811 #define PTP_OC_MTP_UpdateDeviceFirmware 0x9812 #define PTP_OC_MTP_Skip 0x9820 /* * Windows Media Digital Rights Management for Portable Devices * Extension Codes (microsoft.com/WMDRMPD: 10.1) */ #define PTP_OC_MTP_WMDRMPD_GetSecureTimeChallenge 0x9101 #define PTP_OC_MTP_WMDRMPD_GetSecureTimeResponse 0x9102 #define PTP_OC_MTP_WMDRMPD_SetLicenseResponse 0x9103 #define PTP_OC_MTP_WMDRMPD_GetSyncList 0x9104 #define PTP_OC_MTP_WMDRMPD_SendMeterChallengeQuery 0x9105 #define PTP_OC_MTP_WMDRMPD_GetMeterChallenge 0x9106 #define PTP_OC_MTP_WMDRMPD_SetMeterResponse 0x9107 #define PTP_OC_MTP_WMDRMPD_CleanDataStore 0x9108 #define PTP_OC_MTP_WMDRMPD_GetLicenseState 0x9109 #define PTP_OC_MTP_WMDRMPD_SendWMDRMPDCommand 0x910A #define PTP_OC_MTP_WMDRMPD_SendWMDRMPDRequest 0x910B /* * Windows Media Digital Rights Management for Portable Devices * Extension Codes (microsoft.com/WMDRMPD: 10.1) * Below are operations that have no public documented identifier * associated with them "Vendor-defined Command Code" */ #define PTP_OC_MTP_WMDRMPD_SendWMDRMPDAppRequest 0x9212 #define PTP_OC_MTP_WMDRMPD_GetWMDRMPDAppResponse 0x9213 #define PTP_OC_MTP_WMDRMPD_EnableTrustedFilesOperations 0x9214 #define PTP_OC_MTP_WMDRMPD_DisableTrustedFilesOperations 0x9215 #define PTP_OC_MTP_WMDRMPD_EndTrustedAppSession 0x9216 /* ^^^ guess ^^^ */ /* * Microsoft Advanced Audio/Video Transfer * Extensions (microsoft.com/AAVT: 1.0) */ #define PTP_OC_MTP_AAVT_OpenMediaSession 0x9170 #define PTP_OC_MTP_AAVT_CloseMediaSession 0x9171 #define PTP_OC_MTP_AAVT_GetNextDataBlock 0x9172 #define PTP_OC_MTP_AAVT_SetCurrentTimePosition 0x9173 /* * Windows Media Digital Rights Management for Network Devices * Extensions (microsoft.com/WMDRMND: 1.0) MTP/IP? */ #define PTP_OC_MTP_WMDRMND_SendRegistrationRequest 0x9180 #define PTP_OC_MTP_WMDRMND_GetRegistrationResponse 0x9181 #define PTP_OC_MTP_WMDRMND_GetProximityChallenge 0x9182 #define PTP_OC_MTP_WMDRMND_SendProximityResponse 0x9183 #define PTP_OC_MTP_WMDRMND_SendWMDRMNDLicenseRequest 0x9184 #define PTP_OC_MTP_WMDRMND_GetWMDRMNDLicenseResponse 0x9185 /* * Windows Media Player Portiable Devices * Extension Codes (microsoft.com/WMPPD: 11.1) */ #define PTP_OC_MTP_WMPPD_ReportAddedDeletedItems 0x9201 #define PTP_OC_MTP_WMPPD_ReportAcquiredItems 0x9202 #define PTP_OC_MTP_WMPPD_PlaylistObjectPref 0x9203 /* * Undocumented Zune Operation Codes * maybe related to WMPPD extension set? */ #define PTP_OC_MTP_ZUNE_GETUNDEFINED001 0x9204 /* WiFi Provisioning MTP Extension Codes (microsoft.com/WPDWCN: 1.0) */ #define PTP_OC_MTP_WPDWCN_ProcessWFCObject 0x9122 /* Olympus E series commands */ #define PTP_OC_OLYMPUS_Capture 0x9101 #define PTP_OC_OLYMPUS_SelfCleaning 0x9103 #define PTP_OC_OLYMPUS_SetRGBGain 0x9106 #define PTP_OC_OLYMPUS_SetPresetMode 0x9107 #define PTP_OC_OLYMPUS_SetWBBiasAll 0x9108 #define PTP_OC_OLYMPUS_GetCameraControlMode 0x910a #define PTP_OC_OLYMPUS_SetCameraControlMode 0x910b #define PTP_OC_OLYMPUS_SetWBRGBGain 0x910c #define PTP_OC_OLYMPUS_GetDeviceInfo 0x9301 #define PTP_OC_OLYMPUS_OpenSession 0x9302 #define PTP_OC_OLYMPUS_SetDateTime 0x9402 #define PTP_OC_OLYMPUS_GetDateTime 0x9482 #define PTP_OC_OLYMPUS_SetCameraID 0x9501 #define PTP_OC_OLYMPUS_GetCameraID 0x9581 /* Android Random I/O Extensions Codes */ #define PTP_OC_ANDROID_GetPartialObject64 0x95C1 #define PTP_OC_ANDROID_SendPartialObject 0x95C2 #define PTP_OC_ANDROID_TruncateObject 0x95C3 #define PTP_OC_ANDROID_BeginEditObject 0x95C4 #define PTP_OC_ANDROID_EndEditObject 0x95C5 /* Leica opcodes, from Lightroom tether plugin */ #define PTP_OC_LEICA_SetCameraSettings 0x9001 #define PTP_OC_LEICA_GetCameraSettings 0x9002 #define PTP_OC_LEICA_GetLensParameter 0x9003 /* probably 2 arguments. * generic: releaseStage, stepSize * Release(releasestage) = (releasestage,0) * Release() = (0,0) * AEStart() = (1,0) * Autofocusrelease() = (2,0) * AutofocusPush() = (1,0) ... same as AEStart? * KeepCameraActive() = (0xe,0) */ #define PTP_OC_LEICA_Release 0x9004 #define PTP_OC_LEICA_OpenLESession 0x9005 #define PTP_OC_LEICA_CloseLESession 0x9006 #define PTP_OC_LEICA_RequestObjectTransferReady 0x9007 /* Proprietary vendor extension operations mask */ #define PTP_OC_EXTENSION_MASK 0xF000 #define PTP_OC_EXTENSION 0x9000 /* Response Codes */ /* PTP v1.0 response codes */ #define PTP_RC_Undefined 0x2000 #define PTP_RC_OK 0x2001 #define PTP_RC_GeneralError 0x2002 #define PTP_RC_SessionNotOpen 0x2003 #define PTP_RC_InvalidTransactionID 0x2004 #define PTP_RC_OperationNotSupported 0x2005 #define PTP_RC_ParameterNotSupported 0x2006 #define PTP_RC_IncompleteTransfer 0x2007 #define PTP_RC_InvalidStorageId 0x2008 #define PTP_RC_InvalidObjectHandle 0x2009 #define PTP_RC_DevicePropNotSupported 0x200A #define PTP_RC_InvalidObjectFormatCode 0x200B #define PTP_RC_StoreFull 0x200C #define PTP_RC_ObjectWriteProtected 0x200D #define PTP_RC_StoreReadOnly 0x200E #define PTP_RC_AccessDenied 0x200F #define PTP_RC_NoThumbnailPresent 0x2010 #define PTP_RC_SelfTestFailed 0x2011 #define PTP_RC_PartialDeletion 0x2012 #define PTP_RC_StoreNotAvailable 0x2013 #define PTP_RC_SpecificationByFormatUnsupported 0x2014 #define PTP_RC_NoValidObjectInfo 0x2015 #define PTP_RC_InvalidCodeFormat 0x2016 #define PTP_RC_UnknownVendorCode 0x2017 #define PTP_RC_CaptureAlreadyTerminated 0x2018 #define PTP_RC_DeviceBusy 0x2019 #define PTP_RC_InvalidParentObject 0x201A #define PTP_RC_InvalidDevicePropFormat 0x201B #define PTP_RC_InvalidDevicePropValue 0x201C #define PTP_RC_InvalidParameter 0x201D #define PTP_RC_SessionAlreadyOpened 0x201E #define PTP_RC_TransactionCanceled 0x201F #define PTP_RC_SpecificationOfDestinationUnsupported 0x2020 /* PTP v1.1 response codes */ #define PTP_RC_InvalidEnumHandle 0x2021 #define PTP_RC_NoStreamEnabled 0x2022 #define PTP_RC_InvalidDataSet 0x2023 /* Eastman Kodak extension Response Codes */ #define PTP_RC_EK_FilenameRequired 0xA001 #define PTP_RC_EK_FilenameConflicts 0xA002 #define PTP_RC_EK_FilenameInvalid 0xA003 /* Nikon specific response codes */ #define PTP_RC_NIKON_HardwareError 0xA001 #define PTP_RC_NIKON_OutOfFocus 0xA002 #define PTP_RC_NIKON_ChangeCameraModeFailed 0xA003 #define PTP_RC_NIKON_InvalidStatus 0xA004 #define PTP_RC_NIKON_SetPropertyNotSupported 0xA005 #define PTP_RC_NIKON_WbResetError 0xA006 #define PTP_RC_NIKON_DustReferenceError 0xA007 #define PTP_RC_NIKON_ShutterSpeedBulb 0xA008 #define PTP_RC_NIKON_MirrorUpSequence 0xA009 #define PTP_RC_NIKON_CameraModeNotAdjustFNumber 0xA00A #define PTP_RC_NIKON_NotLiveView 0xA00B #define PTP_RC_NIKON_MfDriveStepEnd 0xA00C #define PTP_RC_NIKON_MfDriveStepInsufficiency 0xA00E #define PTP_RC_NIKON_AdvancedTransferCancel 0xA022 /* Canon specific response codes */ #define PTP_RC_CANON_UNKNOWN_COMMAND 0xA001 #define PTP_RC_CANON_OPERATION_REFUSED 0xA005 #define PTP_RC_CANON_LENS_COVER 0xA006 #define PTP_RC_CANON_BATTERY_LOW 0xA101 #define PTP_RC_CANON_NOT_READY 0xA102 #define PTP_RC_CANON_A009 0xA009 /* Microsoft/MTP specific codes */ #define PTP_RC_MTP_Undefined 0xA800 #define PTP_RC_MTP_Invalid_ObjectPropCode 0xA801 #define PTP_RC_MTP_Invalid_ObjectProp_Format 0xA802 #define PTP_RC_MTP_Invalid_ObjectProp_Value 0xA803 #define PTP_RC_MTP_Invalid_ObjectReference 0xA804 #define PTP_RC_MTP_Invalid_Dataset 0xA806 #define PTP_RC_MTP_Specification_By_Group_Unsupported 0xA807 #define PTP_RC_MTP_Specification_By_Depth_Unsupported 0xA808 #define PTP_RC_MTP_Object_Too_Large 0xA809 #define PTP_RC_MTP_ObjectProp_Not_Supported 0xA80A /* Microsoft Advanced Audio/Video Transfer response codes (microsoft.com/AAVT 1.0) */ #define PTP_RC_MTP_Invalid_Media_Session_ID 0xA170 #define PTP_RC_MTP_Media_Session_Limit_Reached 0xA171 #define PTP_RC_MTP_No_More_Data 0xA172 /* WiFi Provisioning MTP Extension Error Codes (microsoft.com/WPDWCN: 1.0) */ #define PTP_RC_MTP_Invalid_WFC_Syntax 0xA121 #define PTP_RC_MTP_WFC_Version_Not_Supported 0xA122 /* libptp2 extended ERROR codes */ #define PTP_ERROR_TIMEOUT 0x02FA #define PTP_ERROR_CANCEL 0x02FB #define PTP_ERROR_BADPARAM 0x02FC #define PTP_ERROR_RESP_EXPECTED 0x02FD #define PTP_ERROR_DATA_EXPECTED 0x02FE #define PTP_ERROR_IO 0x02FF /* PTP Event Codes */ #define PTP_EC_Undefined 0x4000 #define PTP_EC_CancelTransaction 0x4001 #define PTP_EC_ObjectAdded 0x4002 #define PTP_EC_ObjectRemoved 0x4003 #define PTP_EC_StoreAdded 0x4004 #define PTP_EC_StoreRemoved 0x4005 #define PTP_EC_DevicePropChanged 0x4006 #define PTP_EC_ObjectInfoChanged 0x4007 #define PTP_EC_DeviceInfoChanged 0x4008 #define PTP_EC_RequestObjectTransfer 0x4009 #define PTP_EC_StoreFull 0x400A #define PTP_EC_DeviceReset 0x400B #define PTP_EC_StorageInfoChanged 0x400C #define PTP_EC_CaptureComplete 0x400D #define PTP_EC_UnreportedStatus 0x400E /* Canon extension Event Codes */ #define PTP_EC_CANON_ExtendedErrorcode 0xC005 /* ? */ #define PTP_EC_CANON_ObjectInfoChanged 0xC008 #define PTP_EC_CANON_RequestObjectTransfer 0xC009 #define PTP_EC_CANON_ShutterButtonPressed0 0xC00B #define PTP_EC_CANON_CameraModeChanged 0xC00C #define PTP_EC_CANON_ShutterButtonPressed1 0xC00E #define PTP_EC_CANON_StartDirectTransfer 0xC011 #define PTP_EC_CANON_StopDirectTransfer 0xC013 /* Canon EOS events */ #define PTP_EC_CANON_EOS_RequestGetEvent 0xc101 #define PTP_EC_CANON_EOS_ObjectAddedEx 0xc181 #define PTP_EC_CANON_EOS_ObjectRemoved 0xc182 #define PTP_EC_CANON_EOS_RequestGetObjectInfoEx 0xc183 #define PTP_EC_CANON_EOS_StorageStatusChanged 0xc184 #define PTP_EC_CANON_EOS_StorageInfoChanged 0xc185 #define PTP_EC_CANON_EOS_RequestObjectTransfer 0xc186 #define PTP_EC_CANON_EOS_ObjectInfoChangedEx 0xc187 #define PTP_EC_CANON_EOS_ObjectContentChanged 0xc188 #define PTP_EC_CANON_EOS_PropValueChanged 0xc189 #define PTP_EC_CANON_EOS_AvailListChanged 0xc18a #define PTP_EC_CANON_EOS_CameraStatusChanged 0xc18b #define PTP_EC_CANON_EOS_WillSoonShutdown 0xc18d #define PTP_EC_CANON_EOS_ShutdownTimerUpdated 0xc18e #define PTP_EC_CANON_EOS_RequestCancelTransfer 0xc18f #define PTP_EC_CANON_EOS_RequestObjectTransferDT 0xc190 #define PTP_EC_CANON_EOS_RequestCancelTransferDT 0xc191 #define PTP_EC_CANON_EOS_StoreAdded 0xc192 #define PTP_EC_CANON_EOS_StoreRemoved 0xc193 #define PTP_EC_CANON_EOS_BulbExposureTime 0xc194 #define PTP_EC_CANON_EOS_RecordingTime 0xc195 #define PTP_EC_CANON_EOS_RequestObjectTransferTS 0xC1a2 #define PTP_EC_CANON_EOS_AfResult 0xc1a3 #define PTP_EC_CANON_EOS_CTGInfoCheckComplete 0xc1a4 #define PTP_EC_CANON_EOS_OLCInfoChanged 0xc1a5 #define PTP_EC_CANON_EOS_RequestObjectTransferFTP 0xc1f1 /* Nikon extension Event Codes */ /* Nikon extension Event Codes */ #define PTP_EC_Nikon_ObjectAddedInSDRAM 0xC101 #define PTP_EC_Nikon_CaptureCompleteRecInSdram 0xC102 /* Gets 1 parameter, objectid pointing to DPOF object */ #define PTP_EC_Nikon_AdvancedTransfer 0xC103 #define PTP_EC_Nikon_PreviewImageAdded 0xC104 /* Olympus E series */ #define PTP_EC_Olympus_PropertyChanged 0xC102 #define PTP_EC_Olympus_CaptureComplete 0xC103 /* Sony */ #define PTP_EC_Sony_ObjectAdded 0xC201 #define PTP_EC_Sony_ObjectRemoved 0xC202 #define PTP_EC_Sony_PropertyChanged 0xC203 /* MTP Event codes */ #define PTP_EC_MTP_ObjectPropChanged 0xC801 #define PTP_EC_MTP_ObjectPropDescChanged 0xC802 #define PTP_EC_MTP_ObjectReferencesChanged 0xC803 /* constants for GetObjectHandles */ #define PTP_GOH_ALL_STORAGE 0xffffffff #define PTP_GOH_ALL_FORMATS 0x00000000 #define PTP_GOH_ALL_ASSOCS 0x00000000 #define PTP_GOH_ROOT_PARENT 0xffffffff /* PTP device info structure (returned by GetDevInfo) */ struct _PTPDeviceInfo { uint16_t StandardVersion; uint32_t VendorExtensionID; uint16_t VendorExtensionVersion; char *VendorExtensionDesc; uint16_t FunctionalMode; uint32_t OperationsSupported_len; uint16_t *OperationsSupported; uint32_t EventsSupported_len; uint16_t *EventsSupported; uint32_t DevicePropertiesSupported_len; uint16_t *DevicePropertiesSupported; uint32_t CaptureFormats_len; uint16_t *CaptureFormats; uint32_t ImageFormats_len; uint16_t *ImageFormats; char *Manufacturer; char *Model; char *DeviceVersion; char *SerialNumber; }; typedef struct _PTPDeviceInfo PTPDeviceInfo; /* PTP storageIDs structute (returned by GetStorageIDs) */ struct _PTPStorageIDs { uint32_t n; uint32_t *Storage; }; typedef struct _PTPStorageIDs PTPStorageIDs; /* PTP StorageInfo structure (returned by GetStorageInfo) */ struct _PTPStorageInfo { uint16_t StorageType; uint16_t FilesystemType; uint16_t AccessCapability; uint64_t MaxCapability; uint64_t FreeSpaceInBytes; uint32_t FreeSpaceInImages; char *StorageDescription; char *VolumeLabel; }; typedef struct _PTPStorageInfo PTPStorageInfo; /* PTP objecthandles structure (returned by GetObjectHandles) */ struct _PTPObjectHandles { uint32_t n; uint32_t *Handler; }; typedef struct _PTPObjectHandles PTPObjectHandles; #define PTP_HANDLER_SPECIAL 0xffffffff #define PTP_HANDLER_ROOT 0x00000000 /* PTP objectinfo structure (returned by GetObjectInfo) */ struct _PTPObjectInfo { uint32_t StorageID; uint16_t ObjectFormat; uint16_t ProtectionStatus; /* In the regular objectinfo this is 32bit, * but we keep the general object size here * that also arrives via other methods and so * use 64bit */ uint64_t ObjectCompressedSize; uint16_t ThumbFormat; uint32_t ThumbCompressedSize; uint32_t ThumbPixWidth; uint32_t ThumbPixHeight; uint32_t ImagePixWidth; uint32_t ImagePixHeight; uint32_t ImageBitDepth; uint32_t ParentObject; uint16_t AssociationType; uint32_t AssociationDesc; uint32_t SequenceNumber; char *Filename; time_t CaptureDate; time_t ModificationDate; char *Keywords; }; typedef struct _PTPObjectInfo PTPObjectInfo; /* max ptp string length INCLUDING terminating null character */ #define PTP_MAXSTRLEN 255 /* PTP Object Format Codes */ /* ancillary formats */ #define PTP_OFC_Undefined 0x3000 #define PTP_OFC_Defined 0x3800 #define PTP_OFC_Association 0x3001 #define PTP_OFC_Script 0x3002 #define PTP_OFC_Executable 0x3003 #define PTP_OFC_Text 0x3004 #define PTP_OFC_HTML 0x3005 #define PTP_OFC_DPOF 0x3006 #define PTP_OFC_AIFF 0x3007 #define PTP_OFC_WAV 0x3008 #define PTP_OFC_MP3 0x3009 #define PTP_OFC_AVI 0x300A #define PTP_OFC_MPEG 0x300B #define PTP_OFC_ASF 0x300C #define PTP_OFC_QT 0x300D /* guessing */ /* image formats */ #define PTP_OFC_EXIF_JPEG 0x3801 #define PTP_OFC_TIFF_EP 0x3802 #define PTP_OFC_FlashPix 0x3803 #define PTP_OFC_BMP 0x3804 #define PTP_OFC_CIFF 0x3805 #define PTP_OFC_Undefined_0x3806 0x3806 #define PTP_OFC_GIF 0x3807 #define PTP_OFC_JFIF 0x3808 #define PTP_OFC_PCD 0x3809 #define PTP_OFC_PICT 0x380A #define PTP_OFC_PNG 0x380B #define PTP_OFC_Undefined_0x380C 0x380C #define PTP_OFC_TIFF 0x380D #define PTP_OFC_TIFF_IT 0x380E #define PTP_OFC_JP2 0x380F #define PTP_OFC_JPX 0x3810 /* ptp v1.1 has only DNG new */ #define PTP_OFC_DNG 0x3811 /* Eastman Kodak extension ancillary format */ #define PTP_OFC_EK_M3U 0xb002 /* Canon extension */ #define PTP_OFC_CANON_CRW 0xb101 #define PTP_OFC_CANON_CRW3 0xb103 #define PTP_OFC_CANON_MOV 0xb104 #define PTP_OFC_CANON_MOV2 0xb105 /* CHDK specific raw mode */ #define PTP_OFC_CANON_CHDK_CRW 0xb1ff /* Sony */ #define PTP_OFC_SONY_RAW 0xb101 /* MTP extensions */ #define PTP_OFC_MTP_MediaCard 0xb211 #define PTP_OFC_MTP_MediaCardGroup 0xb212 #define PTP_OFC_MTP_Encounter 0xb213 #define PTP_OFC_MTP_EncounterBox 0xb214 #define PTP_OFC_MTP_M4A 0xb215 #define PTP_OFC_MTP_ZUNEUNDEFINED 0xb217 /* Unknown file type */ #define PTP_OFC_MTP_Firmware 0xb802 #define PTP_OFC_MTP_WindowsImageFormat 0xb881 #define PTP_OFC_MTP_UndefinedAudio 0xb900 #define PTP_OFC_MTP_WMA 0xb901 #define PTP_OFC_MTP_OGG 0xb902 #define PTP_OFC_MTP_AAC 0xb903 #define PTP_OFC_MTP_AudibleCodec 0xb904 #define PTP_OFC_MTP_FLAC 0xb906 #define PTP_OFC_MTP_SamsungPlaylist 0xb909 #define PTP_OFC_MTP_UndefinedVideo 0xb980 #define PTP_OFC_MTP_WMV 0xb981 #define PTP_OFC_MTP_MP4 0xb982 #define PTP_OFC_MTP_MP2 0xb983 #define PTP_OFC_MTP_3GP 0xb984 #define PTP_OFC_MTP_UndefinedCollection 0xba00 #define PTP_OFC_MTP_AbstractMultimediaAlbum 0xba01 #define PTP_OFC_MTP_AbstractImageAlbum 0xba02 #define PTP_OFC_MTP_AbstractAudioAlbum 0xba03 #define PTP_OFC_MTP_AbstractVideoAlbum 0xba04 #define PTP_OFC_MTP_AbstractAudioVideoPlaylist 0xba05 #define PTP_OFC_MTP_AbstractContactGroup 0xba06 #define PTP_OFC_MTP_AbstractMessageFolder 0xba07 #define PTP_OFC_MTP_AbstractChapteredProduction 0xba08 #define PTP_OFC_MTP_AbstractAudioPlaylist 0xba09 #define PTP_OFC_MTP_AbstractVideoPlaylist 0xba0a #define PTP_OFC_MTP_AbstractMediacast 0xba0b #define PTP_OFC_MTP_WPLPlaylist 0xba10 #define PTP_OFC_MTP_M3UPlaylist 0xba11 #define PTP_OFC_MTP_MPLPlaylist 0xba12 #define PTP_OFC_MTP_ASXPlaylist 0xba13 #define PTP_OFC_MTP_PLSPlaylist 0xba14 #define PTP_OFC_MTP_UndefinedDocument 0xba80 #define PTP_OFC_MTP_AbstractDocument 0xba81 #define PTP_OFC_MTP_XMLDocument 0xba82 #define PTP_OFC_MTP_MSWordDocument 0xba83 #define PTP_OFC_MTP_MHTCompiledHTMLDocument 0xba84 #define PTP_OFC_MTP_MSExcelSpreadsheetXLS 0xba85 #define PTP_OFC_MTP_MSPowerpointPresentationPPT 0xba86 #define PTP_OFC_MTP_UndefinedMessage 0xbb00 #define PTP_OFC_MTP_AbstractMessage 0xbb01 #define PTP_OFC_MTP_UndefinedContact 0xbb80 #define PTP_OFC_MTP_AbstractContact 0xbb81 #define PTP_OFC_MTP_vCard2 0xbb82 #define PTP_OFC_MTP_vCard3 0xbb83 #define PTP_OFC_MTP_UndefinedCalendarItem 0xbe00 #define PTP_OFC_MTP_AbstractCalendarItem 0xbe01 #define PTP_OFC_MTP_vCalendar1 0xbe02 #define PTP_OFC_MTP_vCalendar2 0xbe03 #define PTP_OFC_MTP_UndefinedWindowsExecutable 0xbe80 #define PTP_OFC_MTP_MediaCast 0xbe81 #define PTP_OFC_MTP_Section 0xbe82 /* PTP Association Types */ #define PTP_AT_Undefined 0x0000 #define PTP_AT_GenericFolder 0x0001 #define PTP_AT_Album 0x0002 #define PTP_AT_TimeSequence 0x0003 #define PTP_AT_HorizontalPanoramic 0x0004 #define PTP_AT_VerticalPanoramic 0x0005 #define PTP_AT_2DPanoramic 0x0006 #define PTP_AT_AncillaryData 0x0007 /* PTP Protection Status */ #define PTP_PS_NoProtection 0x0000 #define PTP_PS_ReadOnly 0x0001 #define PTP_PS_MTP_ReadOnlyData 0x8002 #define PTP_PS_MTP_NonTransferableData 0x8003 /* PTP Storage Types */ #define PTP_ST_Undefined 0x0000 #define PTP_ST_FixedROM 0x0001 #define PTP_ST_RemovableROM 0x0002 #define PTP_ST_FixedRAM 0x0003 #define PTP_ST_RemovableRAM 0x0004 /* PTP FilesystemType Values */ #define PTP_FST_Undefined 0x0000 #define PTP_FST_GenericFlat 0x0001 #define PTP_FST_GenericHierarchical 0x0002 #define PTP_FST_DCF 0x0003 /* PTP StorageInfo AccessCapability Values */ #define PTP_AC_ReadWrite 0x0000 #define PTP_AC_ReadOnly 0x0001 #define PTP_AC_ReadOnly_with_Object_Deletion 0x0002 /* Property Describing Dataset, Range Form */ union _PTPPropertyValue { char *str; /* common string, malloced */ uint8_t u8; int8_t i8; uint16_t u16; int16_t i16; uint32_t u32; int32_t i32; uint64_t u64; int64_t i64; /* XXXX: 128 bit signed and unsigned missing */ struct array { uint32_t count; union _PTPPropertyValue *v; /* malloced, count elements */ } a; }; typedef union _PTPPropertyValue PTPPropertyValue; /* Metadata lists for MTP operations */ struct _MTPProperties { uint16_t property; uint16_t datatype; uint32_t ObjectHandle; PTPPropertyValue propval; }; typedef struct _MTPProperties MTPProperties; struct _PTPPropDescRangeForm { PTPPropertyValue MinimumValue; PTPPropertyValue MaximumValue; PTPPropertyValue StepSize; }; typedef struct _PTPPropDescRangeForm PTPPropDescRangeForm; /* Property Describing Dataset, Enum Form */ struct _PTPPropDescEnumForm { uint16_t NumberOfValues; PTPPropertyValue *SupportedValue; /* malloced */ }; typedef struct _PTPPropDescEnumForm PTPPropDescEnumForm; /* Device Property Describing Dataset (DevicePropDesc) */ struct _PTPDevicePropDesc { uint16_t DevicePropertyCode; uint16_t DataType; uint8_t GetSet; PTPPropertyValue FactoryDefaultValue; PTPPropertyValue CurrentValue; uint8_t FormFlag; union { PTPPropDescEnumForm Enum; PTPPropDescRangeForm Range; } FORM; }; typedef struct _PTPDevicePropDesc PTPDevicePropDesc; /* Object Property Describing Dataset (DevicePropDesc) */ struct _PTPObjectPropDesc { uint16_t ObjectPropertyCode; uint16_t DataType; uint8_t GetSet; PTPPropertyValue FactoryDefaultValue; uint32_t GroupCode; uint8_t FormFlag; union { PTPPropDescEnumForm Enum; PTPPropDescRangeForm Range; } FORM; }; typedef struct _PTPObjectPropDesc PTPObjectPropDesc; /* Canon filesystem's folder entry Dataset */ #define PTP_CANON_FilenameBufferLen 13 #define PTP_CANON_FolderEntryLen 28 struct _PTPCANONFolderEntry { uint32_t ObjectHandle; uint16_t ObjectFormatCode; uint8_t Flags; uint32_t ObjectSize; time_t Time; char Filename[PTP_CANON_FilenameBufferLen]; uint32_t StorageID; }; typedef struct _PTPCANONFolderEntry PTPCANONFolderEntry; /* Nikon Tone Curve Data */ #define PTP_NIKON_MaxCurvePoints 19 struct _PTPNIKONCoordinatePair { uint8_t X; uint8_t Y; }; typedef struct _PTPNIKONCoordinatePair PTPNIKONCoordinatePair; struct _PTPNTCCoordinatePair { uint8_t X; uint8_t Y; }; typedef struct _PTPNTCCoordinatePair PTPNTCCoordinatePair; struct _PTPNIKONCurveData { char static_preamble[6]; uint8_t XAxisStartPoint; uint8_t XAxisEndPoint; uint8_t YAxisStartPoint; uint8_t YAxisEndPoint; uint8_t MidPointIntegerPart; uint8_t MidPointDecimalPart; uint8_t NCoordinates; PTPNIKONCoordinatePair CurveCoordinates[PTP_NIKON_MaxCurvePoints]; }; typedef struct _PTPNIKONCurveData PTPNIKONCurveData; struct _PTPEKTextParams { char *title; char *line[5]; }; typedef struct _PTPEKTextParams PTPEKTextParams; /* Nikon Wifi profiles */ struct _PTPNIKONWifiProfile { /* Values valid both when reading and writing profiles */ char profile_name[17]; uint8_t device_type; uint8_t icon_type; char essid[33]; /* Values only valid when reading. Some of these are in the write packet, * but are set automatically, like id, display_order and creation_date. */ uint8_t id; uint8_t valid; uint8_t display_order; char creation_date[16]; char lastusage_date[16]; /* Values only valid when writing */ uint32_t ip_address; uint8_t subnet_mask; /* first zero bit position, e.g. 24 for 255.255.255.0 */ uint32_t gateway_address; uint8_t address_mode; /* 0 - Manual, 2-3 - DHCP ad-hoc/managed*/ uint8_t access_mode; /* 0 - Managed, 1 - Adhoc */ uint8_t wifi_channel; /* 1-11 */ uint8_t authentification; /* 0 - Open, 1 - Shared, 2 - WPA-PSK */ uint8_t encryption; /* 0 - None, 1 - WEP 64bit, 2 - WEP 128bit (not supported: 3 - TKIP) */ uint8_t key[64]; uint8_t key_nr; /* char guid[16]; */ }; typedef struct _PTPNIKONWifiProfile PTPNIKONWifiProfile; enum _PTPCanon_changes_types { PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN, PTP_CANON_EOS_CHANGES_TYPE_OBJECTINFO, PTP_CANON_EOS_CHANGES_TYPE_OBJECTTRANSFER, PTP_CANON_EOS_CHANGES_TYPE_PROPERTY, PTP_CANON_EOS_CHANGES_TYPE_CAMERASTATUS, PTP_CANON_EOS_CHANGES_TYPE_FOCUSINFO, PTP_CANON_EOS_CHANGES_TYPE_FOCUSMASK, PTP_CANON_EOS_CHANGES_TYPE_OBJECTREMOVED }; struct _PTPCanon_New_Object { uint32_t oid; PTPObjectInfo oi; }; struct _PTPCanon_changes_entry { enum _PTPCanon_changes_types type; union { struct _PTPCanon_New_Object object; /* TYPE_OBJECTINFO */ char *info; uint16_t propid; int status; } u; }; typedef struct _PTPCanon_changes_entry PTPCanon_changes_entry; typedef struct _PTPCanon_Property { uint32_t size; uint32_t proptype; unsigned char *data; /* fill out for queries */ PTPDevicePropDesc dpd; } PTPCanon_Property; typedef struct _PTPCanonEOSDeviceInfo { /* length */ uint32_t EventsSupported_len; uint32_t *EventsSupported; uint32_t DevicePropertiesSupported_len; uint32_t *DevicePropertiesSupported; uint32_t unk_len; uint32_t *unk; } PTPCanonEOSDeviceInfo; /* DataType Codes */ #define PTP_DTC_UNDEF 0x0000 #define PTP_DTC_INT8 0x0001 #define PTP_DTC_UINT8 0x0002 #define PTP_DTC_INT16 0x0003 #define PTP_DTC_UINT16 0x0004 #define PTP_DTC_INT32 0x0005 #define PTP_DTC_UINT32 0x0006 #define PTP_DTC_INT64 0x0007 #define PTP_DTC_UINT64 0x0008 #define PTP_DTC_INT128 0x0009 #define PTP_DTC_UINT128 0x000A #define PTP_DTC_ARRAY_MASK 0x4000 #define PTP_DTC_AINT8 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT8) #define PTP_DTC_AUINT8 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT8) #define PTP_DTC_AINT16 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT16) #define PTP_DTC_AUINT16 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT16) #define PTP_DTC_AINT32 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT32) #define PTP_DTC_AUINT32 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT32) #define PTP_DTC_AINT64 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT64) #define PTP_DTC_AUINT64 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT64) #define PTP_DTC_AINT128 (PTP_DTC_ARRAY_MASK | PTP_DTC_INT128) #define PTP_DTC_AUINT128 (PTP_DTC_ARRAY_MASK | PTP_DTC_UINT128) #define PTP_DTC_STR 0xFFFF /* Device Properties Codes */ /* PTP v1.0 property codes */ #define PTP_DPC_Undefined 0x5000 #define PTP_DPC_BatteryLevel 0x5001 #define PTP_DPC_FunctionalMode 0x5002 #define PTP_DPC_ImageSize 0x5003 #define PTP_DPC_CompressionSetting 0x5004 #define PTP_DPC_WhiteBalance 0x5005 #define PTP_DPC_RGBGain 0x5006 #define PTP_DPC_FNumber 0x5007 #define PTP_DPC_FocalLength 0x5008 #define PTP_DPC_FocusDistance 0x5009 #define PTP_DPC_FocusMode 0x500A #define PTP_DPC_ExposureMeteringMode 0x500B #define PTP_DPC_FlashMode 0x500C #define PTP_DPC_ExposureTime 0x500D #define PTP_DPC_ExposureProgramMode 0x500E #define PTP_DPC_ExposureIndex 0x500F #define PTP_DPC_ExposureBiasCompensation 0x5010 #define PTP_DPC_DateTime 0x5011 #define PTP_DPC_CaptureDelay 0x5012 #define PTP_DPC_StillCaptureMode 0x5013 #define PTP_DPC_Contrast 0x5014 #define PTP_DPC_Sharpness 0x5015 #define PTP_DPC_DigitalZoom 0x5016 #define PTP_DPC_EffectMode 0x5017 #define PTP_DPC_BurstNumber 0x5018 #define PTP_DPC_BurstInterval 0x5019 #define PTP_DPC_TimelapseNumber 0x501A #define PTP_DPC_TimelapseInterval 0x501B #define PTP_DPC_FocusMeteringMode 0x501C #define PTP_DPC_UploadURL 0x501D #define PTP_DPC_Artist 0x501E #define PTP_DPC_CopyrightInfo 0x501F /* PTP v1.1 property codes */ #define PTP_DPC_SupportedStreams 0x5020 #define PTP_DPC_EnabledStreams 0x5021 #define PTP_DPC_VideoFormat 0x5022 #define PTP_DPC_VideoResolution 0x5023 #define PTP_DPC_VideoQuality 0x5024 #define PTP_DPC_VideoFrameRate 0x5025 #define PTP_DPC_VideoContrast 0x5026 #define PTP_DPC_VideoBrightness 0x5027 #define PTP_DPC_AudioFormat 0x5028 #define PTP_DPC_AudioBitrate 0x5029 #define PTP_DPC_AudioSamplingRate 0x502A #define PTP_DPC_AudioBitPerSample 0x502B #define PTP_DPC_AudioVolume 0x502C /* Proprietary vendor extension device property mask */ #define PTP_DPC_EXTENSION_MASK 0xF000 #define PTP_DPC_EXTENSION 0xD000 /* Zune extension device property codes */ #define PTP_DPC_MTP_ZUNE_UNKNOWN1 0xD181 #define PTP_DPC_MTP_ZUNE_UNKNOWN2 0xD132 #define PTP_DPC_MTP_ZUNE_UNKNOWN3 0xD215 #define PTP_DPC_MTP_ZUNE_UNKNOWN4 0xD216 /* Eastman Kodak extension device property codes */ #define PTP_DPC_EK_ColorTemperature 0xD001 #define PTP_DPC_EK_DateTimeStampFormat 0xD002 #define PTP_DPC_EK_BeepMode 0xD003 #define PTP_DPC_EK_VideoOut 0xD004 #define PTP_DPC_EK_PowerSaving 0xD005 #define PTP_DPC_EK_UI_Language 0xD006 /* Canon extension device property codes */ #define PTP_DPC_CANON_BeepMode 0xD001 #define PTP_DPC_CANON_BatteryKind 0xD002 #define PTP_DPC_CANON_BatteryStatus 0xD003 #define PTP_DPC_CANON_UILockType 0xD004 #define PTP_DPC_CANON_CameraMode 0xD005 #define PTP_DPC_CANON_ImageQuality 0xD006 #define PTP_DPC_CANON_FullViewFileFormat 0xD007 #define PTP_DPC_CANON_ImageSize 0xD008 #define PTP_DPC_CANON_SelfTime 0xD009 #define PTP_DPC_CANON_FlashMode 0xD00A #define PTP_DPC_CANON_Beep 0xD00B #define PTP_DPC_CANON_ShootingMode 0xD00C #define PTP_DPC_CANON_ImageMode 0xD00D #define PTP_DPC_CANON_DriveMode 0xD00E #define PTP_DPC_CANON_EZoom 0xD00F #define PTP_DPC_CANON_MeteringMode 0xD010 #define PTP_DPC_CANON_AFDistance 0xD011 #define PTP_DPC_CANON_FocusingPoint 0xD012 #define PTP_DPC_CANON_WhiteBalance 0xD013 #define PTP_DPC_CANON_SlowShutterSetting 0xD014 #define PTP_DPC_CANON_AFMode 0xD015 #define PTP_DPC_CANON_ImageStabilization 0xD016 #define PTP_DPC_CANON_Contrast 0xD017 #define PTP_DPC_CANON_ColorGain 0xD018 #define PTP_DPC_CANON_Sharpness 0xD019 #define PTP_DPC_CANON_Sensitivity 0xD01A #define PTP_DPC_CANON_ParameterSet 0xD01B #define PTP_DPC_CANON_ISOSpeed 0xD01C #define PTP_DPC_CANON_Aperture 0xD01D #define PTP_DPC_CANON_ShutterSpeed 0xD01E #define PTP_DPC_CANON_ExpCompensation 0xD01F #define PTP_DPC_CANON_FlashCompensation 0xD020 #define PTP_DPC_CANON_AEBExposureCompensation 0xD021 #define PTP_DPC_CANON_AvOpen 0xD023 #define PTP_DPC_CANON_AvMax 0xD024 #define PTP_DPC_CANON_FocalLength 0xD025 #define PTP_DPC_CANON_FocalLengthTele 0xD026 #define PTP_DPC_CANON_FocalLengthWide 0xD027 #define PTP_DPC_CANON_FocalLengthDenominator 0xD028 #define PTP_DPC_CANON_CaptureTransferMode 0xD029 #define CANON_TRANSFER_ENTIRE_IMAGE_TO_PC 0x0002 #define CANON_TRANSFER_SAVE_THUMBNAIL_TO_DEVICE 0x0004 #define CANON_TRANSFER_SAVE_IMAGE_TO_DEVICE 0x0008 /* we use those values: */ #define CANON_TRANSFER_MEMORY (2|1) #define CANON_TRANSFER_CARD (8|4|1) #define PTP_DPC_CANON_Zoom 0xD02A #define PTP_DPC_CANON_NamePrefix 0xD02B #define PTP_DPC_CANON_SizeQualityMode 0xD02C #define PTP_DPC_CANON_SupportedThumbSize 0xD02D #define PTP_DPC_CANON_SizeOfOutputDataFromCamera 0xD02E #define PTP_DPC_CANON_SizeOfInputDataToCamera 0xD02F #define PTP_DPC_CANON_RemoteAPIVersion 0xD030 #define PTP_DPC_CANON_FirmwareVersion 0xD031 #define PTP_DPC_CANON_CameraModel 0xD032 #define PTP_DPC_CANON_CameraOwner 0xD033 #define PTP_DPC_CANON_UnixTime 0xD034 #define PTP_DPC_CANON_CameraBodyID 0xD035 #define PTP_DPC_CANON_CameraOutput 0xD036 #define PTP_DPC_CANON_DispAv 0xD037 #define PTP_DPC_CANON_AvOpenApex 0xD038 #define PTP_DPC_CANON_DZoomMagnification 0xD039 #define PTP_DPC_CANON_MlSpotPos 0xD03A #define PTP_DPC_CANON_DispAvMax 0xD03B #define PTP_DPC_CANON_AvMaxApex 0xD03C #define PTP_DPC_CANON_EZoomStartPosition 0xD03D #define PTP_DPC_CANON_FocalLengthOfTele 0xD03E #define PTP_DPC_CANON_EZoomSizeOfTele 0xD03F #define PTP_DPC_CANON_PhotoEffect 0xD040 #define PTP_DPC_CANON_AssistLight 0xD041 #define PTP_DPC_CANON_FlashQuantityCount 0xD042 #define PTP_DPC_CANON_RotationAngle 0xD043 #define PTP_DPC_CANON_RotationScene 0xD044 #define PTP_DPC_CANON_EventEmulateMode 0xD045 #define PTP_DPC_CANON_DPOFVersion 0xD046 #define PTP_DPC_CANON_TypeOfSupportedSlideShow 0xD047 #define PTP_DPC_CANON_AverageFilesizes 0xD048 #define PTP_DPC_CANON_ModelID 0xD049 /* From EOS 400D trace. */ #define PTP_DPC_CANON_EOS_Aperture 0xD101 #define PTP_DPC_CANON_EOS_ShutterSpeed 0xD102 #define PTP_DPC_CANON_EOS_ISOSpeed 0xD103 #define PTP_DPC_CANON_EOS_ExpCompensation 0xD104 #define PTP_DPC_CANON_EOS_AutoExposureMode 0xD105 #define PTP_DPC_CANON_EOS_DriveMode 0xD106 #define PTP_DPC_CANON_EOS_MeteringMode 0xD107 #define PTP_DPC_CANON_EOS_FocusMode 0xD108 #define PTP_DPC_CANON_EOS_WhiteBalance 0xD109 #define PTP_DPC_CANON_EOS_ColorTemperature 0xD10A #define PTP_DPC_CANON_EOS_WhiteBalanceAdjustA 0xD10B #define PTP_DPC_CANON_EOS_WhiteBalanceAdjustB 0xD10C #define PTP_DPC_CANON_EOS_WhiteBalanceXA 0xD10D #define PTP_DPC_CANON_EOS_WhiteBalanceXB 0xD10E #define PTP_DPC_CANON_EOS_ColorSpace 0xD10F #define PTP_DPC_CANON_EOS_PictureStyle 0xD110 #define PTP_DPC_CANON_EOS_BatteryPower 0xD111 #define PTP_DPC_CANON_EOS_BatterySelect 0xD112 #define PTP_DPC_CANON_EOS_CameraTime 0xD113 #define PTP_DPC_CANON_EOS_AutoPowerOff 0xD114 #define PTP_DPC_CANON_EOS_Owner 0xD115 #define PTP_DPC_CANON_EOS_ModelID 0xD116 #define PTP_DPC_CANON_EOS_PTPExtensionVersion 0xD119 #define PTP_DPC_CANON_EOS_DPOFVersion 0xD11A #define PTP_DPC_CANON_EOS_AvailableShots 0xD11B #define PTP_CANON_EOS_CAPTUREDEST_HD 4 #define PTP_DPC_CANON_EOS_CaptureDestination 0xD11C #define PTP_DPC_CANON_EOS_BracketMode 0xD11D #define PTP_DPC_CANON_EOS_CurrentStorage 0xD11E #define PTP_DPC_CANON_EOS_CurrentFolder 0xD11F #define PTP_DPC_CANON_EOS_ImageFormat 0xD120 /* file setting */ #define PTP_DPC_CANON_EOS_ImageFormatCF 0xD121 /* file setting CF */ #define PTP_DPC_CANON_EOS_ImageFormatSD 0xD122 /* file setting SD */ #define PTP_DPC_CANON_EOS_ImageFormatExtHD 0xD123 /* file setting exthd */ #define PTP_DPC_CANON_EOS_CompressionS 0xD130 #define PTP_DPC_CANON_EOS_CompressionM1 0xD131 #define PTP_DPC_CANON_EOS_CompressionM2 0xD132 #define PTP_DPC_CANON_EOS_CompressionL 0xD133 #define PTP_DPC_CANON_EOS_AEModeDial 0xD138 #define PTP_DPC_CANON_EOS_AEModeCustom 0xD139 #define PTP_DPC_CANON_EOS_MirrorUpSetting 0xD13A #define PTP_DPC_CANON_EOS_HighlightTonePriority 0xD13B #define PTP_DPC_CANON_EOS_AFSelectFocusArea 0xD13C #define PTP_DPC_CANON_EOS_HDRSetting 0xD13D #define PTP_DPC_CANON_EOS_PCWhiteBalance1 0xD140 #define PTP_DPC_CANON_EOS_PCWhiteBalance2 0xD141 #define PTP_DPC_CANON_EOS_PCWhiteBalance3 0xD142 #define PTP_DPC_CANON_EOS_PCWhiteBalance4 0xD143 #define PTP_DPC_CANON_EOS_PCWhiteBalance5 0xD144 #define PTP_DPC_CANON_EOS_MWhiteBalance 0xD145 #define PTP_DPC_CANON_EOS_MWhiteBalanceEx 0xD146 #define PTP_DPC_CANON_EOS_UnknownPropD14D 0xD14D /*found in Canon EOS 5D M3*/ #define PTP_DPC_CANON_EOS_PictureStyleStandard 0xD150 #define PTP_DPC_CANON_EOS_PictureStylePortrait 0xD151 #define PTP_DPC_CANON_EOS_PictureStyleLandscape 0xD152 #define PTP_DPC_CANON_EOS_PictureStyleNeutral 0xD153 #define PTP_DPC_CANON_EOS_PictureStyleFaithful 0xD154 #define PTP_DPC_CANON_EOS_PictureStyleBlackWhite 0xD155 #define PTP_DPC_CANON_EOS_PictureStyleAuto 0xD156 #define PTP_DPC_CANON_EOS_PictureStyleUserSet1 0xD160 #define PTP_DPC_CANON_EOS_PictureStyleUserSet2 0xD161 #define PTP_DPC_CANON_EOS_PictureStyleUserSet3 0xD162 #define PTP_DPC_CANON_EOS_PictureStyleParam1 0xD170 #define PTP_DPC_CANON_EOS_PictureStyleParam2 0xD171 #define PTP_DPC_CANON_EOS_PictureStyleParam3 0xD172 #define PTP_DPC_CANON_EOS_HighISOSettingNoiseReduction 0xD178 #define PTP_DPC_CANON_EOS_MovieServoAF 0xD179 #define PTP_DPC_CANON_EOS_ContinuousAFValid 0xD17A #define PTP_DPC_CANON_EOS_Attenuator 0xD17B #define PTP_DPC_CANON_EOS_UTCTime 0xD17C #define PTP_DPC_CANON_EOS_Timezone 0xD17D #define PTP_DPC_CANON_EOS_Summertime 0xD17E #define PTP_DPC_CANON_EOS_FlavorLUTParams 0xD17F #define PTP_DPC_CANON_EOS_CustomFunc1 0xD180 #define PTP_DPC_CANON_EOS_CustomFunc2 0xD181 #define PTP_DPC_CANON_EOS_CustomFunc3 0xD182 #define PTP_DPC_CANON_EOS_CustomFunc4 0xD183 #define PTP_DPC_CANON_EOS_CustomFunc5 0xD184 #define PTP_DPC_CANON_EOS_CustomFunc6 0xD185 #define PTP_DPC_CANON_EOS_CustomFunc7 0xD186 #define PTP_DPC_CANON_EOS_CustomFunc8 0xD187 #define PTP_DPC_CANON_EOS_CustomFunc9 0xD188 #define PTP_DPC_CANON_EOS_CustomFunc10 0xD189 #define PTP_DPC_CANON_EOS_CustomFunc11 0xD18a #define PTP_DPC_CANON_EOS_CustomFunc12 0xD18b #define PTP_DPC_CANON_EOS_CustomFunc13 0xD18c #define PTP_DPC_CANON_EOS_CustomFunc14 0xD18d #define PTP_DPC_CANON_EOS_CustomFunc15 0xD18e #define PTP_DPC_CANON_EOS_CustomFunc16 0xD18f #define PTP_DPC_CANON_EOS_CustomFunc17 0xD190 #define PTP_DPC_CANON_EOS_CustomFunc18 0xD191 #define PTP_DPC_CANON_EOS_CustomFunc19 0xD192 #define PTP_DPC_CANON_EOS_CustomFunc19 0xD192 #define PTP_DPC_CANON_EOS_InnerDevelop 0xD193 #define PTP_DPC_CANON_EOS_MultiAspect 0xD194 #define PTP_DPC_CANON_EOS_MovieSoundRecord 0xD195 #define PTP_DPC_CANON_EOS_MovieRecordVolume 0xD196 #define PTP_DPC_CANON_EOS_WindCut 0xD197 #define PTP_DPC_CANON_EOS_ExtenderType 0xD198 #define PTP_DPC_CANON_EOS_OLCInfoVersion 0xD199 #define PTP_DPC_CANON_EOS_UnknownPropD19A 0xD19A /*found in Canon EOS 5D M3*/ #define PTP_DPC_CANON_EOS_UnknownPropD19C 0xD19C /*found in Canon EOS 5D M3*/ #define PTP_DPC_CANON_EOS_UnknownPropD19D 0xD19D /*found in Canon EOS 5D M3*/ #define PTP_DPC_CANON_EOS_CustomFuncEx 0xD1a0 #define PTP_DPC_CANON_EOS_MyMenu 0xD1a1 #define PTP_DPC_CANON_EOS_MyMenuList 0xD1a2 #define PTP_DPC_CANON_EOS_WftStatus 0xD1a3 #define PTP_DPC_CANON_EOS_WftInputTransmission 0xD1a4 #define PTP_DPC_CANON_EOS_HDDirectoryStructure 0xD1a5 #define PTP_DPC_CANON_EOS_BatteryInfo 0xD1a6 #define PTP_DPC_CANON_EOS_AdapterInfo 0xD1a7 #define PTP_DPC_CANON_EOS_LensStatus 0xD1a8 #define PTP_DPC_CANON_EOS_QuickReviewTime 0xD1a9 #define PTP_DPC_CANON_EOS_CardExtension 0xD1aa #define PTP_DPC_CANON_EOS_TempStatus 0xD1ab #define PTP_DPC_CANON_EOS_ShutterCounter 0xD1ac #define PTP_DPC_CANON_EOS_SpecialOption 0xD1ad #define PTP_DPC_CANON_EOS_PhotoStudioMode 0xD1ae #define PTP_DPC_CANON_EOS_SerialNumber 0xD1af #define PTP_DPC_CANON_EOS_EVFOutputDevice 0xD1b0 #define PTP_DPC_CANON_EOS_EVFMode 0xD1b1 #define PTP_DPC_CANON_EOS_DepthOfFieldPreview 0xD1b2 #define PTP_DPC_CANON_EOS_EVFSharpness 0xD1b3 #define PTP_DPC_CANON_EOS_EVFWBMode 0xD1b4 #define PTP_DPC_CANON_EOS_EVFClickWBCoeffs 0xD1b5 #define PTP_DPC_CANON_EOS_EVFColorTemp 0xD1b6 #define PTP_DPC_CANON_EOS_ExposureSimMode 0xD1b7 #define PTP_DPC_CANON_EOS_EVFRecordStatus 0xD1b8 #define PTP_DPC_CANON_EOS_LvAfSystem 0xD1ba #define PTP_DPC_CANON_EOS_MovSize 0xD1bb #define PTP_DPC_CANON_EOS_LvViewTypeSelect 0xD1bc #define PTP_DPC_CANON_EOS_MirrorDownStatus 0xD1bd #define PTP_DPC_CANON_EOS_MovieParam 0xD1be #define PTP_DPC_CANON_EOS_MirrorLockupState 0xD1bf #define PTP_DPC_CANON_EOS_FlashChargingState 0xD1C0 #define PTP_DPC_CANON_EOS_AloMode 0xD1C1 #define PTP_DPC_CANON_EOS_FixedMovie 0xD1C2 #define PTP_DPC_CANON_EOS_OneShotRawOn 0xD1C3 #define PTP_DPC_CANON_EOS_ErrorForDisplay 0xD1C4 #define PTP_DPC_CANON_EOS_AEModeMovie 0xD1C5 #define PTP_DPC_CANON_EOS_BuiltinStroboMode 0xD1C6 #define PTP_DPC_CANON_EOS_StroboDispState 0xD1C7 #define PTP_DPC_CANON_EOS_StroboETTL2Metering 0xD1C8 #define PTP_DPC_CANON_EOS_ContinousAFMode 0xD1C9 #define PTP_DPC_CANON_EOS_MovieParam2 0xD1CA #define PTP_DPC_CANON_EOS_StroboSettingExpComposition 0xD1CB #define PTP_DPC_CANON_EOS_MovieParam3 0xD1CC #define PTP_DPC_CANON_EOS_LVMedicalRotate 0xD1CF #define PTP_DPC_CANON_EOS_Artist 0xD1d0 #define PTP_DPC_CANON_EOS_Copyright 0xD1d1 #define PTP_DPC_CANON_EOS_BracketValue 0xD1d2 #define PTP_DPC_CANON_EOS_FocusInfoEx 0xD1d3 #define PTP_DPC_CANON_EOS_DepthOfField 0xD1d4 #define PTP_DPC_CANON_EOS_Brightness 0xD1d5 #define PTP_DPC_CANON_EOS_LensAdjustParams 0xD1d6 #define PTP_DPC_CANON_EOS_EFComp 0xD1d7 #define PTP_DPC_CANON_EOS_LensName 0xD1d8 #define PTP_DPC_CANON_EOS_AEB 0xD1d9 #define PTP_DPC_CANON_EOS_StroboSetting 0xD1da #define PTP_DPC_CANON_EOS_StroboWirelessSetting 0xD1db #define PTP_DPC_CANON_EOS_StroboFiring 0xD1dc #define PTP_DPC_CANON_EOS_LensID 0xD1dd #define PTP_DPC_CANON_EOS_LCDBrightness 0xD1de #define PTP_DPC_CANON_EOS_CADarkBright 0xD1df /* Nikon extension device property codes */ #define PTP_DPC_NIKON_ShootingBank 0xD010 #define PTP_DPC_NIKON_ShootingBankNameA 0xD011 #define PTP_DPC_NIKON_ShootingBankNameB 0xD012 #define PTP_DPC_NIKON_ShootingBankNameC 0xD013 #define PTP_DPC_NIKON_ShootingBankNameD 0xD014 #define PTP_DPC_NIKON_ResetBank0 0xD015 #define PTP_DPC_NIKON_RawCompression 0xD016 #define PTP_DPC_NIKON_WhiteBalanceAutoBias 0xD017 #define PTP_DPC_NIKON_WhiteBalanceTungstenBias 0xD018 #define PTP_DPC_NIKON_WhiteBalanceFluorescentBias 0xD019 #define PTP_DPC_NIKON_WhiteBalanceDaylightBias 0xD01A #define PTP_DPC_NIKON_WhiteBalanceFlashBias 0xD01B #define PTP_DPC_NIKON_WhiteBalanceCloudyBias 0xD01C #define PTP_DPC_NIKON_WhiteBalanceShadeBias 0xD01D #define PTP_DPC_NIKON_WhiteBalanceColorTemperature 0xD01E #define PTP_DPC_NIKON_WhiteBalancePresetNo 0xD01F #define PTP_DPC_NIKON_WhiteBalancePresetName0 0xD020 #define PTP_DPC_NIKON_WhiteBalancePresetName1 0xD021 #define PTP_DPC_NIKON_WhiteBalancePresetName2 0xD022 #define PTP_DPC_NIKON_WhiteBalancePresetName3 0xD023 #define PTP_DPC_NIKON_WhiteBalancePresetName4 0xD024 #define PTP_DPC_NIKON_WhiteBalancePresetVal0 0xD025 #define PTP_DPC_NIKON_WhiteBalancePresetVal1 0xD026 #define PTP_DPC_NIKON_WhiteBalancePresetVal2 0xD027 #define PTP_DPC_NIKON_WhiteBalancePresetVal3 0xD028 #define PTP_DPC_NIKON_WhiteBalancePresetVal4 0xD029 #define PTP_DPC_NIKON_ImageSharpening 0xD02A #define PTP_DPC_NIKON_ToneCompensation 0xD02B #define PTP_DPC_NIKON_ColorModel 0xD02C #define PTP_DPC_NIKON_HueAdjustment 0xD02D #define PTP_DPC_NIKON_NonCPULensDataFocalLength 0xD02E /* Set FMM Manual */ #define PTP_DPC_NIKON_NonCPULensDataMaximumAperture 0xD02F /* Set F0 Manual */ #define PTP_DPC_NIKON_ShootingMode 0xD030 #define PTP_DPC_NIKON_JPEG_Compression_Policy 0xD031 #define PTP_DPC_NIKON_ColorSpace 0xD032 #define PTP_DPC_NIKON_AutoDXCrop 0xD033 #define PTP_DPC_NIKON_FlickerReduction 0xD034 #define PTP_DPC_NIKON_RemoteMode 0xD035 #define PTP_DPC_NIKON_VideoMode 0xD036 #define PTP_DPC_NIKON_EffectMode 0xD037 #define PTP_DPC_NIKON_1_Mode 0xD038 #define PTP_DPC_NIKON_CSMMenuBankSelect 0xD040 #define PTP_DPC_NIKON_MenuBankNameA 0xD041 #define PTP_DPC_NIKON_MenuBankNameB 0xD042 #define PTP_DPC_NIKON_MenuBankNameC 0xD043 #define PTP_DPC_NIKON_MenuBankNameD 0xD044 #define PTP_DPC_NIKON_ResetBank 0xD045 #define PTP_DPC_NIKON_A1AFCModePriority 0xD048 #define PTP_DPC_NIKON_A2AFSModePriority 0xD049 #define PTP_DPC_NIKON_A3GroupDynamicAF 0xD04A #define PTP_DPC_NIKON_A4AFActivation 0xD04B #define PTP_DPC_NIKON_FocusAreaIllumManualFocus 0xD04C #define PTP_DPC_NIKON_FocusAreaIllumContinuous 0xD04D #define PTP_DPC_NIKON_FocusAreaIllumWhenSelected 0xD04E #define PTP_DPC_NIKON_FocusAreaWrap 0xD04F /* area sel */ #define PTP_DPC_NIKON_VerticalAFON 0xD050 #define PTP_DPC_NIKON_AFLockOn 0xD051 #define PTP_DPC_NIKON_FocusAreaZone 0xD052 #define PTP_DPC_NIKON_EnableCopyright 0xD053 #define PTP_DPC_NIKON_ISOAuto 0xD054 #define PTP_DPC_NIKON_EVISOStep 0xD055 #define PTP_DPC_NIKON_EVStep 0xD056 /* EV Step SS FN */ #define PTP_DPC_NIKON_EVStepExposureComp 0xD057 #define PTP_DPC_NIKON_ExposureCompensation 0xD058 #define PTP_DPC_NIKON_CenterWeightArea 0xD059 #define PTP_DPC_NIKON_ExposureBaseMatrix 0xD05A #define PTP_DPC_NIKON_ExposureBaseCenter 0xD05B #define PTP_DPC_NIKON_ExposureBaseSpot 0xD05C #define PTP_DPC_NIKON_LiveViewAFArea 0xD05D /* FIXME: AfAtLiveview? */ #define PTP_DPC_NIKON_AELockMode 0xD05E #define PTP_DPC_NIKON_AELAFLMode 0xD05F #define PTP_DPC_NIKON_LiveViewAFFocus 0xD061 #define PTP_DPC_NIKON_MeterOff 0xD062 #define PTP_DPC_NIKON_SelfTimer 0xD063 #define PTP_DPC_NIKON_MonitorOff 0xD064 #define PTP_DPC_NIKON_ImgConfTime 0xD065 #define PTP_DPC_NIKON_AutoOffTimers 0xD066 #define PTP_DPC_NIKON_AngleLevel 0xD067 #define PTP_DPC_NIKON_D1ShootingSpeed 0xD068 /* continous speed low */ #define PTP_DPC_NIKON_D2MaximumShots 0xD069 #define PTP_DPC_NIKON_ExposureDelayMode 0xD06A #define PTP_DPC_NIKON_LongExposureNoiseReduction 0xD06B #define PTP_DPC_NIKON_FileNumberSequence 0xD06C #define PTP_DPC_NIKON_ControlPanelFinderRearControl 0xD06D #define PTP_DPC_NIKON_ControlPanelFinderViewfinder 0xD06E #define PTP_DPC_NIKON_D7Illumination 0xD06F #define PTP_DPC_NIKON_NrHighISO 0xD070 #define PTP_DPC_NIKON_SHSET_CH_GUID_DISP 0xD071 #define PTP_DPC_NIKON_ArtistName 0xD072 #define PTP_DPC_NIKON_CopyrightInfo 0xD073 #define PTP_DPC_NIKON_FlashSyncSpeed 0xD074 #define PTP_DPC_NIKON_FlashShutterSpeed 0xD075 /* SB Low Limit */ #define PTP_DPC_NIKON_E3AAFlashMode 0xD076 #define PTP_DPC_NIKON_E4ModelingFlash 0xD077 #define PTP_DPC_NIKON_BracketSet 0xD078 /* Bracket Type? */ #define PTP_DPC_NIKON_E6ManualModeBracketing 0xD079 /* Bracket Factor? */ #define PTP_DPC_NIKON_BracketOrder 0xD07A #define PTP_DPC_NIKON_E8AutoBracketSelection 0xD07B /* Bracket Method? */ #define PTP_DPC_NIKON_BracketingSet 0xD07C #define PTP_DPC_NIKON_F1CenterButtonShootingMode 0xD080 #define PTP_DPC_NIKON_CenterButtonPlaybackMode 0xD081 #define PTP_DPC_NIKON_F2Multiselector 0xD082 #define PTP_DPC_NIKON_F3PhotoInfoPlayback 0xD083 /* MultiSelector Dir */ #define PTP_DPC_NIKON_F4AssignFuncButton 0xD084 /* CMD Dial Rotate */ #define PTP_DPC_NIKON_F5CustomizeCommDials 0xD085 /* CMD Dial Change */ #define PTP_DPC_NIKON_ReverseCommandDial 0xD086 /* CMD Dial FN Set */ #define PTP_DPC_NIKON_ApertureSetting 0xD087 /* CMD Dial Active */ #define PTP_DPC_NIKON_MenusAndPlayback 0xD088 /* CMD Dial Active */ #define PTP_DPC_NIKON_F6ButtonsAndDials 0xD089 /* Universal Mode? */ #define PTP_DPC_NIKON_NoCFCard 0xD08A /* Enable Shutter? */ #define PTP_DPC_NIKON_CenterButtonZoomRatio 0xD08B #define PTP_DPC_NIKON_FunctionButton2 0xD08C #define PTP_DPC_NIKON_AFAreaPoint 0xD08D #define PTP_DPC_NIKON_NormalAFOn 0xD08E #define PTP_DPC_NIKON_CleanImageSensor 0xD08F #define PTP_DPC_NIKON_ImageCommentString 0xD090 #define PTP_DPC_NIKON_ImageCommentEnable 0xD091 #define PTP_DPC_NIKON_ImageRotation 0xD092 #define PTP_DPC_NIKON_ManualSetLensNo 0xD093 #define PTP_DPC_NIKON_MovScreenSize 0xD0A0 #define PTP_DPC_NIKON_MovVoice 0xD0A1 #define PTP_DPC_NIKON_MovMicrophone 0xD0A2 #define PTP_DPC_NIKON_MovFileSlot 0xD0A3 #define PTP_DPC_NIKON_MovRecProhibitCondition 0xD0A4 #define PTP_DPC_NIKON_ManualMovieSetting 0xD0A6 #define PTP_DPC_NIKON_MovQuality 0xD0A7 #define PTP_DPC_NIKON_LiveViewScreenDisplaySetting 0xD0B2 #define PTP_DPC_NIKON_MonitorOffDelay 0xD0B3 #define PTP_DPC_NIKON_Bracketing 0xD0C0 #define PTP_DPC_NIKON_AutoExposureBracketStep 0xD0C1 #define PTP_DPC_NIKON_AutoExposureBracketProgram 0xD0C2 #define PTP_DPC_NIKON_AutoExposureBracketCount 0xD0C3 #define PTP_DPC_NIKON_WhiteBalanceBracketStep 0xD0C4 #define PTP_DPC_NIKON_WhiteBalanceBracketProgram 0xD0C5 #define PTP_DPC_NIKON_LensID 0xD0E0 #define PTP_DPC_NIKON_LensSort 0xD0E1 #define PTP_DPC_NIKON_LensType 0xD0E2 #define PTP_DPC_NIKON_FocalLengthMin 0xD0E3 #define PTP_DPC_NIKON_FocalLengthMax 0xD0E4 #define PTP_DPC_NIKON_MaxApAtMinFocalLength 0xD0E5 #define PTP_DPC_NIKON_MaxApAtMaxFocalLength 0xD0E6 #define PTP_DPC_NIKON_FinderISODisp 0xD0F0 #define PTP_DPC_NIKON_AutoOffPhoto 0xD0F2 #define PTP_DPC_NIKON_AutoOffMenu 0xD0F3 #define PTP_DPC_NIKON_AutoOffInfo 0xD0F4 #define PTP_DPC_NIKON_SelfTimerShootNum 0xD0F5 #define PTP_DPC_NIKON_VignetteCtrl 0xD0F7 #define PTP_DPC_NIKON_AutoDistortionControl 0xD0F8 #define PTP_DPC_NIKON_SceneMode 0xD0F9 #define PTP_DPC_NIKON_SceneMode2 0xD0FD #define PTP_DPC_NIKON_SelfTimerInterval 0xD0FE #define PTP_DPC_NIKON_ExposureTime 0xD100 /* Shutter Speed */ #define PTP_DPC_NIKON_ACPower 0xD101 #define PTP_DPC_NIKON_WarningStatus 0xD102 #define PTP_DPC_NIKON_MaximumShots 0xD103 /* remain shots (in RAM buffer?) */ #define PTP_DPC_NIKON_AFLockStatus 0xD104 #define PTP_DPC_NIKON_AELockStatus 0xD105 #define PTP_DPC_NIKON_FVLockStatus 0xD106 #define PTP_DPC_NIKON_AutofocusLCDTopMode2 0xD107 #define PTP_DPC_NIKON_AutofocusArea 0xD108 #define PTP_DPC_NIKON_FlexibleProgram 0xD109 #define PTP_DPC_NIKON_LightMeter 0xD10A /* Exposure Status */ #define PTP_DPC_NIKON_RecordingMedia 0xD10B /* Card or SDRAM */ #define PTP_DPC_NIKON_USBSpeed 0xD10C #define PTP_DPC_NIKON_CCDNumber 0xD10D #define PTP_DPC_NIKON_CameraOrientation 0xD10E #define PTP_DPC_NIKON_GroupPtnType 0xD10F #define PTP_DPC_NIKON_FNumberLock 0xD110 #define PTP_DPC_NIKON_ExposureApertureLock 0xD111 /* shutterspeed lock*/ #define PTP_DPC_NIKON_TVLockSetting 0xD112 #define PTP_DPC_NIKON_AVLockSetting 0xD113 #define PTP_DPC_NIKON_IllumSetting 0xD114 #define PTP_DPC_NIKON_FocusPointBright 0xD115 #define PTP_DPC_NIKON_ExternalFlashAttached 0xD120 #define PTP_DPC_NIKON_ExternalFlashStatus 0xD121 #define PTP_DPC_NIKON_ExternalFlashSort 0xD122 #define PTP_DPC_NIKON_ExternalFlashMode 0xD123 #define PTP_DPC_NIKON_ExternalFlashCompensation 0xD124 #define PTP_DPC_NIKON_NewExternalFlashMode 0xD125 #define PTP_DPC_NIKON_FlashExposureCompensation 0xD126 #define PTP_DPC_NIKON_HDRMode 0xD130 #define PTP_DPC_NIKON_HDRHighDynamic 0xD131 #define PTP_DPC_NIKON_HDRSmoothing 0xD132 #define PTP_DPC_NIKON_OptimizeImage 0xD140 #define PTP_DPC_NIKON_Saturation 0xD142 #define PTP_DPC_NIKON_BW_FillerEffect 0xD143 #define PTP_DPC_NIKON_BW_Sharpness 0xD144 #define PTP_DPC_NIKON_BW_Contrast 0xD145 #define PTP_DPC_NIKON_BW_Setting_Type 0xD146 #define PTP_DPC_NIKON_Slot2SaveMode 0xD148 #define PTP_DPC_NIKON_RawBitMode 0xD149 #define PTP_DPC_NIKON_ActiveDLighting 0xD14E /* was PTP_DPC_NIKON_ISOAutoTime */ #define PTP_DPC_NIKON_FlourescentType 0xD14F #define PTP_DPC_NIKON_TuneColourTemperature 0xD150 #define PTP_DPC_NIKON_TunePreset0 0xD151 #define PTP_DPC_NIKON_TunePreset1 0xD152 #define PTP_DPC_NIKON_TunePreset2 0xD153 #define PTP_DPC_NIKON_TunePreset3 0xD154 #define PTP_DPC_NIKON_TunePreset4 0xD155 #define PTP_DPC_NIKON_BeepOff 0xD160 #define PTP_DPC_NIKON_AutofocusMode 0xD161 #define PTP_DPC_NIKON_AFAssist 0xD163 #define PTP_DPC_NIKON_PADVPMode 0xD164 /* iso auto time */ #define PTP_DPC_NIKON_ImageReview 0xD165 #define PTP_DPC_NIKON_AFAreaIllumination 0xD166 #define PTP_DPC_NIKON_FlashMode 0xD167 #define PTP_DPC_NIKON_FlashCommanderMode 0xD168 #define PTP_DPC_NIKON_FlashSign 0xD169 #define PTP_DPC_NIKON_ISO_Auto 0xD16A #define PTP_DPC_NIKON_RemoteTimeout 0xD16B #define PTP_DPC_NIKON_GridDisplay 0xD16C #define PTP_DPC_NIKON_FlashModeManualPower 0xD16D #define PTP_DPC_NIKON_FlashModeCommanderPower 0xD16E #define PTP_DPC_NIKON_AutoFP 0xD16F #define PTP_DPC_NIKON_DateImprintSetting 0xD170 #define PTP_DPC_NIKON_DateCounterSelect 0xD171 #define PTP_DPC_NIKON_DateCountData 0xD172 #define PTP_DPC_NIKON_DateCountDisplaySetting 0xD173 #define PTP_DPC_NIKON_RangeFinderSetting 0xD174 #define PTP_DPC_NIKON_CSMMenu 0xD180 #define PTP_DPC_NIKON_WarningDisplay 0xD181 #define PTP_DPC_NIKON_BatteryCellKind 0xD182 #define PTP_DPC_NIKON_ISOAutoHiLimit 0xD183 #define PTP_DPC_NIKON_DynamicAFArea 0xD184 #define PTP_DPC_NIKON_ContinuousSpeedHigh 0xD186 #define PTP_DPC_NIKON_InfoDispSetting 0xD187 #define PTP_DPC_NIKON_PreviewButton 0xD189 #define PTP_DPC_NIKON_PreviewButton2 0xD18A #define PTP_DPC_NIKON_AEAFLockButton2 0xD18B #define PTP_DPC_NIKON_IndicatorDisp 0xD18D #define PTP_DPC_NIKON_CellKindPriority 0xD18E #define PTP_DPC_NIKON_BracketingFramesAndSteps 0xD190 #define PTP_DPC_NIKON_LiveViewMode 0xD1A0 #define PTP_DPC_NIKON_LiveViewDriveMode 0xD1A1 #define PTP_DPC_NIKON_LiveViewStatus 0xD1A2 #define PTP_DPC_NIKON_LiveViewImageZoomRatio 0xD1A3 #define PTP_DPC_NIKON_LiveViewProhibitCondition 0xD1A4 #define PTP_DPC_NIKON_MovieShutterSpeed 0xD1A8 #define PTP_DPC_NIKON_MovieFNumber 0xD1A9 #define PTP_DPC_NIKON_MovieISO 0xD1AA #define PTP_DPC_NIKON_LiveViewMovieMode 0xD1AC /* ? */ #define PTP_DPC_NIKON_ExposureDisplayStatus 0xD1B0 #define PTP_DPC_NIKON_ExposureIndicateStatus 0xD1B1 #define PTP_DPC_NIKON_InfoDispErrStatus 0xD1B2 #define PTP_DPC_NIKON_ExposureIndicateLightup 0xD1B3 #define PTP_DPC_NIKON_FlashOpen 0xD1C0 #define PTP_DPC_NIKON_FlashCharged 0xD1C1 #define PTP_DPC_NIKON_FlashMRepeatValue 0xD1D0 #define PTP_DPC_NIKON_FlashMRepeatCount 0xD1D1 #define PTP_DPC_NIKON_FlashMRepeatInterval 0xD1D2 #define PTP_DPC_NIKON_FlashCommandChannel 0xD1D3 #define PTP_DPC_NIKON_FlashCommandSelfMode 0xD1D4 #define PTP_DPC_NIKON_FlashCommandSelfCompensation 0xD1D5 #define PTP_DPC_NIKON_FlashCommandSelfValue 0xD1D6 #define PTP_DPC_NIKON_FlashCommandAMode 0xD1D7 #define PTP_DPC_NIKON_FlashCommandACompensation 0xD1D8 #define PTP_DPC_NIKON_FlashCommandAValue 0xD1D9 #define PTP_DPC_NIKON_FlashCommandBMode 0xD1DA #define PTP_DPC_NIKON_FlashCommandBCompensation 0xD1DB #define PTP_DPC_NIKON_FlashCommandBValue 0xD1DC #define PTP_DPC_NIKON_ApplicationMode 0xD1F0 #define PTP_DPC_NIKON_ActiveSlot 0xD1F2 #define PTP_DPC_NIKON_ActivePicCtrlItem 0xD200 #define PTP_DPC_NIKON_ChangePicCtrlItem 0xD201 #define PTP_DPC_NIKON_MovieNrHighISO 0xD236 /* Nikon V1 (or WU adapter?) Trace */ /* d241 - gets string "Nikon_WU2_0090B5123C61" */ #define PTP_DPC_NIKON_D241 0xD241 /* d244 - gets a single byte 0x00 */ #define PTP_DPC_NIKON_D244 0xD244 /* d247 - gets 3 bytes 0x01 0x00 0x00 */ #define PTP_DPC_NIKON_D247 0xD247 /* S9700 */ #define PTP_DPC_NIKON_GUID 0xD24F /* d250 - gets a string "0000123C61" */ #define PTP_DPC_NIKON_D250 0xD250 /* d251 - gets a 0x0100000d */ #define PTP_DPC_NIKON_D251 0xD251 /* this is irregular, as it should be -0x5000 or 0xD000 based */ #define PTP_DPC_NIKON_1_ISO 0xF002 #define PTP_DPC_NIKON_1_ImageCompression 0xF009 #define PTP_DPC_NIKON_1_ImageSize 0xF00A #define PTP_DPC_NIKON_1_WhiteBalance 0xF00C #define PTP_DPC_NIKON_1_LongExposureNoiseReduction 0xF00D #define PTP_DPC_NIKON_1_HiISONoiseReduction 0xF00E #define PTP_DPC_NIKON_1_ActiveDLighting 0xF00F #define PTP_DPC_NIKON_1_MovQuality 0xF01C /* Fuji specific */ #define PTP_DPC_FUJI_ColorTemperature 0xD017 #define PTP_DPC_FUJI_Quality 0xD018 #define PTP_DPC_FUJI_ReleaseMode 0xD201 #define PTP_DPC_FUJI_FocusAreas 0xD206 #define PTP_DPC_FUJI_AELock 0xD213 #define PTP_DPC_FUJI_Aperture 0xD218 #define PTP_DPC_FUJI_ShutterSpeed 0xD219 /* Microsoft/MTP specific */ #define PTP_DPC_MTP_SecureTime 0xD101 #define PTP_DPC_MTP_DeviceCertificate 0xD102 #define PTP_DPC_MTP_RevocationInfo 0xD103 #define PTP_DPC_MTP_SynchronizationPartner 0xD401 #define PTP_DPC_MTP_DeviceFriendlyName 0xD402 #define PTP_DPC_MTP_VolumeLevel 0xD403 #define PTP_DPC_MTP_DeviceIcon 0xD405 #define PTP_DPC_MTP_SessionInitiatorInfo 0xD406 #define PTP_DPC_MTP_PerceivedDeviceType 0xD407 #define PTP_DPC_MTP_PlaybackRate 0xD410 #define PTP_DPC_MTP_PlaybackObject 0xD411 #define PTP_DPC_MTP_PlaybackContainerIndex 0xD412 #define PTP_DPC_MTP_PlaybackPosition 0xD413 #define PTP_DPC_MTP_PlaysForSureID 0xD131 /* Zune specific property codes */ #define PTP_DPC_MTP_Zune_UnknownVersion 0xD181 /* Olympus */ #define PTP_DPC_OLYMPUS_ResolutionMode 0xD102 #define PTP_DPC_OLYMPUS_FocusPriority 0xD103 #define PTP_DPC_OLYMPUS_DriveMode 0xD104 #define PTP_DPC_OLYMPUS_DateTimeFormat 0xD105 #define PTP_DPC_OLYMPUS_ExposureBiasStep 0xD106 #define PTP_DPC_OLYMPUS_WBMode 0xD107 #define PTP_DPC_OLYMPUS_OneTouchWB 0xD108 #define PTP_DPC_OLYMPUS_ManualWB 0xD109 #define PTP_DPC_OLYMPUS_ManualWBRBBias 0xD10A #define PTP_DPC_OLYMPUS_CustomWB 0xD10B #define PTP_DPC_OLYMPUS_CustomWBValue 0xD10C #define PTP_DPC_OLYMPUS_ExposureTimeEx 0xD10D #define PTP_DPC_OLYMPUS_BulbMode 0xD10E #define PTP_DPC_OLYMPUS_AntiMirrorMode 0xD10F #define PTP_DPC_OLYMPUS_AEBracketingFrame 0xD110 #define PTP_DPC_OLYMPUS_AEBracketingStep 0xD111 #define PTP_DPC_OLYMPUS_WBBracketingFrame 0xD112 #define PTP_DPC_OLYMPUS_WBBracketingRBFrame 0xD112 /* dup ? */ #define PTP_DPC_OLYMPUS_WBBracketingRBRange 0xD113 #define PTP_DPC_OLYMPUS_WBBracketingGMFrame 0xD114 #define PTP_DPC_OLYMPUS_WBBracketingGMRange 0xD115 #define PTP_DPC_OLYMPUS_FLBracketingFrame 0xD118 #define PTP_DPC_OLYMPUS_FLBracketingStep 0xD119 #define PTP_DPC_OLYMPUS_FlashBiasCompensation 0xD11A #define PTP_DPC_OLYMPUS_ManualFocusMode 0xD11B #define PTP_DPC_OLYMPUS_RawSaveMode 0xD11D #define PTP_DPC_OLYMPUS_AUXLightMode 0xD11E #define PTP_DPC_OLYMPUS_LensSinkMode 0xD11F #define PTP_DPC_OLYMPUS_BeepStatus 0xD120 #define PTP_DPC_OLYMPUS_ColorSpace 0xD122 #define PTP_DPC_OLYMPUS_ColorMatching 0xD123 #define PTP_DPC_OLYMPUS_Saturation 0xD124 #define PTP_DPC_OLYMPUS_NoiseReductionPattern 0xD126 #define PTP_DPC_OLYMPUS_NoiseReductionRandom 0xD127 #define PTP_DPC_OLYMPUS_ShadingMode 0xD129 #define PTP_DPC_OLYMPUS_ISOBoostMode 0xD12A #define PTP_DPC_OLYMPUS_ExposureIndexBiasStep 0xD12B #define PTP_DPC_OLYMPUS_FilterEffect 0xD12C #define PTP_DPC_OLYMPUS_ColorTune 0xD12D #define PTP_DPC_OLYMPUS_Language 0xD12E #define PTP_DPC_OLYMPUS_LanguageCode 0xD12F #define PTP_DPC_OLYMPUS_RecviewMode 0xD130 #define PTP_DPC_OLYMPUS_SleepTime 0xD131 #define PTP_DPC_OLYMPUS_ManualWBGMBias 0xD132 #define PTP_DPC_OLYMPUS_AELAFLMode 0xD135 #define PTP_DPC_OLYMPUS_AELButtonStatus 0xD136 #define PTP_DPC_OLYMPUS_CompressionSettingEx 0xD137 #define PTP_DPC_OLYMPUS_ToneMode 0xD139 #define PTP_DPC_OLYMPUS_GradationMode 0xD13A #define PTP_DPC_OLYMPUS_DevelopMode 0xD13B #define PTP_DPC_OLYMPUS_ExtendInnerFlashMode 0xD13C #define PTP_DPC_OLYMPUS_OutputDeviceMode 0xD13D #define PTP_DPC_OLYMPUS_LiveViewMode 0xD13E #define PTP_DPC_OLYMPUS_LCDBacklight 0xD140 #define PTP_DPC_OLYMPUS_CustomDevelop 0xD141 #define PTP_DPC_OLYMPUS_GradationAutoBias 0xD142 #define PTP_DPC_OLYMPUS_FlashRCMode 0xD143 #define PTP_DPC_OLYMPUS_FlashRCGroupValue 0xD144 #define PTP_DPC_OLYMPUS_FlashRCChannelValue 0xD145 #define PTP_DPC_OLYMPUS_FlashRCFPMode 0xD146 #define PTP_DPC_OLYMPUS_FlashRCPhotoChromicMode 0xD147 #define PTP_DPC_OLYMPUS_FlashRCPhotoChromicBias 0xD148 #define PTP_DPC_OLYMPUS_FlashRCPhotoChromicManualBias 0xD149 #define PTP_DPC_OLYMPUS_FlashRCQuantityLightLevel 0xD14A #define PTP_DPC_OLYMPUS_FocusMeteringValue 0xD14B #define PTP_DPC_OLYMPUS_ISOBracketingFrame 0xD14C #define PTP_DPC_OLYMPUS_ISOBracketingStep 0xD14D #define PTP_DPC_OLYMPUS_BulbMFMode 0xD14E #define PTP_DPC_OLYMPUS_BurstFPSValue 0xD14F #define PTP_DPC_OLYMPUS_ISOAutoBaseValue 0xD150 #define PTP_DPC_OLYMPUS_ISOAutoMaxValue 0xD151 #define PTP_DPC_OLYMPUS_BulbLimiterValue 0xD152 #define PTP_DPC_OLYMPUS_DPIMode 0xD153 #define PTP_DPC_OLYMPUS_DPICustomValue 0xD154 #define PTP_DPC_OLYMPUS_ResolutionValueSetting 0xD155 #define PTP_DPC_OLYMPUS_AFTargetSize 0xD157 #define PTP_DPC_OLYMPUS_LightSensorMode 0xD158 #define PTP_DPC_OLYMPUS_AEBracket 0xD159 #define PTP_DPC_OLYMPUS_WBRBBracket 0xD15A #define PTP_DPC_OLYMPUS_WBGMBracket 0xD15B #define PTP_DPC_OLYMPUS_FlashBracket 0xD15C #define PTP_DPC_OLYMPUS_ISOBracket 0xD15D #define PTP_DPC_OLYMPUS_MyModeStatus 0xD15E /* Sony A900 */ #define PTP_DPC_SONY_DPCCompensation 0xD200 #define PTP_DPC_SONY_DRangeOptimize 0xD201 #define PTP_DPC_SONY_ImageSize 0xD203 #define PTP_DPC_SONY_ShutterSpeed 0xD20D #define PTP_DPC_SONY_ColorTemp 0xD20F #define PTP_DPC_SONY_CCFilter 0xD210 #define PTP_DPC_SONY_AspectRatio 0xD211 #define PTP_DPC_SONY_ExposeIndex 0xD216 #define PTP_DPC_SONY_PictureEffect 0xD21B #define PTP_DPC_SONY_ABFilter 0xD21C #define PTP_DPC_SONY_ISO 0xD21E /* ? */ /* also seen: D2C3 D2C4 */ /* semi control opcodes */ #define PTP_DPC_SONY_Movie 0xD2C8 /* ? */ #define PTP_DPC_SONY_StillImage 0xD2C7 /* ? */ /* Casio EX-F1 */ #define PTP_DPC_CASIO_MONITOR 0xD001 #define PTP_DPC_CASIO_STORAGE 0xD002 //Not reported by DeviceInfo? #define PTP_DPC_CASIO_UNKNOWN_1 0xD004 #define PTP_DPC_CASIO_UNKNOWN_2 0xD005 #define PTP_DPC_CASIO_UNKNOWN_3 0xD007 #define PTP_DPC_CASIO_RECORD_LIGHT 0xD008 #define PTP_DPC_CASIO_UNKNOWN_4 0xD009 #define PTP_DPC_CASIO_UNKNOWN_5 0xD00A #define PTP_DPC_CASIO_MOVIE_MODE 0xD00B #define PTP_DPC_CASIO_HD_SETTING 0xD00C #define PTP_DPC_CASIO_HS_SETTING 0xD00D #define PTP_DPC_CASIO_CS_HIGH_SPEED 0xD00F #define PTP_DPC_CASIO_CS_UPPER_LIMIT 0xD010 #define PTP_DPC_CASIO_CS_SHOT 0xD011 #define PTP_DPC_CASIO_UNKNOWN_6 0xD012 #define PTP_DPC_CASIO_UNKNOWN_7 0xD013 #define PTP_DPC_CASIO_UNKNOWN_8 0xD015 #define PTP_DPC_CASIO_UNKNOWN_9 0xD017 #define PTP_DPC_CASIO_UNKNOWN_10 0xD018 #define PTP_DPC_CASIO_UNKNOWN_11 0xD019 #define PTP_DPC_CASIO_UNKNOWN_12 0xD01A #define PTP_DPC_CASIO_UNKNOWN_13 0xD01B #define PTP_DPC_CASIO_UNKNOWN_14 0xD01C #define PTP_DPC_CASIO_UNKNOWN_15 0xD01D #define PTP_DPC_CASIO_UNKNOWN_16 0xD020 #define PTP_DPC_CASIO_UNKNOWN_17 0xD030 #define PTP_DPC_CASIO_UNKNOWN_18 0xD080 /* MTP specific Object Properties */ #define PTP_OPC_StorageID 0xDC01 #define PTP_OPC_ObjectFormat 0xDC02 #define PTP_OPC_ProtectionStatus 0xDC03 #define PTP_OPC_ObjectSize 0xDC04 #define PTP_OPC_AssociationType 0xDC05 #define PTP_OPC_AssociationDesc 0xDC06 #define PTP_OPC_ObjectFileName 0xDC07 #define PTP_OPC_DateCreated 0xDC08 #define PTP_OPC_DateModified 0xDC09 #define PTP_OPC_Keywords 0xDC0A #define PTP_OPC_ParentObject 0xDC0B #define PTP_OPC_AllowedFolderContents 0xDC0C #define PTP_OPC_Hidden 0xDC0D #define PTP_OPC_SystemObject 0xDC0E #define PTP_OPC_PersistantUniqueObjectIdentifier 0xDC41 #define PTP_OPC_SyncID 0xDC42 #define PTP_OPC_PropertyBag 0xDC43 #define PTP_OPC_Name 0xDC44 #define PTP_OPC_CreatedBy 0xDC45 #define PTP_OPC_Artist 0xDC46 #define PTP_OPC_DateAuthored 0xDC47 #define PTP_OPC_Description 0xDC48 #define PTP_OPC_URLReference 0xDC49 #define PTP_OPC_LanguageLocale 0xDC4A #define PTP_OPC_CopyrightInformation 0xDC4B #define PTP_OPC_Source 0xDC4C #define PTP_OPC_OriginLocation 0xDC4D #define PTP_OPC_DateAdded 0xDC4E #define PTP_OPC_NonConsumable 0xDC4F #define PTP_OPC_CorruptOrUnplayable 0xDC50 #define PTP_OPC_ProducerSerialNumber 0xDC51 #define PTP_OPC_RepresentativeSampleFormat 0xDC81 #define PTP_OPC_RepresentativeSampleSize 0xDC82 #define PTP_OPC_RepresentativeSampleHeight 0xDC83 #define PTP_OPC_RepresentativeSampleWidth 0xDC84 #define PTP_OPC_RepresentativeSampleDuration 0xDC85 #define PTP_OPC_RepresentativeSampleData 0xDC86 #define PTP_OPC_Width 0xDC87 #define PTP_OPC_Height 0xDC88 #define PTP_OPC_Duration 0xDC89 #define PTP_OPC_Rating 0xDC8A #define PTP_OPC_Track 0xDC8B #define PTP_OPC_Genre 0xDC8C #define PTP_OPC_Credits 0xDC8D #define PTP_OPC_Lyrics 0xDC8E #define PTP_OPC_SubscriptionContentID 0xDC8F #define PTP_OPC_ProducedBy 0xDC90 #define PTP_OPC_UseCount 0xDC91 #define PTP_OPC_SkipCount 0xDC92 #define PTP_OPC_LastAccessed 0xDC93 #define PTP_OPC_ParentalRating 0xDC94 #define PTP_OPC_MetaGenre 0xDC95 #define PTP_OPC_Composer 0xDC96 #define PTP_OPC_EffectiveRating 0xDC97 #define PTP_OPC_Subtitle 0xDC98 #define PTP_OPC_OriginalReleaseDate 0xDC99 #define PTP_OPC_AlbumName 0xDC9A #define PTP_OPC_AlbumArtist 0xDC9B #define PTP_OPC_Mood 0xDC9C #define PTP_OPC_DRMStatus 0xDC9D #define PTP_OPC_SubDescription 0xDC9E #define PTP_OPC_IsCropped 0xDCD1 #define PTP_OPC_IsColorCorrected 0xDCD2 #define PTP_OPC_ImageBitDepth 0xDCD3 #define PTP_OPC_Fnumber 0xDCD4 #define PTP_OPC_ExposureTime 0xDCD5 #define PTP_OPC_ExposureIndex 0xDCD6 #define PTP_OPC_DisplayName 0xDCE0 #define PTP_OPC_BodyText 0xDCE1 #define PTP_OPC_Subject 0xDCE2 #define PTP_OPC_Priority 0xDCE3 #define PTP_OPC_GivenName 0xDD00 #define PTP_OPC_MiddleNames 0xDD01 #define PTP_OPC_FamilyName 0xDD02 #define PTP_OPC_Prefix 0xDD03 #define PTP_OPC_Suffix 0xDD04 #define PTP_OPC_PhoneticGivenName 0xDD05 #define PTP_OPC_PhoneticFamilyName 0xDD06 #define PTP_OPC_EmailPrimary 0xDD07 #define PTP_OPC_EmailPersonal1 0xDD08 #define PTP_OPC_EmailPersonal2 0xDD09 #define PTP_OPC_EmailBusiness1 0xDD0A #define PTP_OPC_EmailBusiness2 0xDD0B #define PTP_OPC_EmailOthers 0xDD0C #define PTP_OPC_PhoneNumberPrimary 0xDD0D #define PTP_OPC_PhoneNumberPersonal 0xDD0E #define PTP_OPC_PhoneNumberPersonal2 0xDD0F #define PTP_OPC_PhoneNumberBusiness 0xDD10 #define PTP_OPC_PhoneNumberBusiness2 0xDD11 #define PTP_OPC_PhoneNumberMobile 0xDD12 #define PTP_OPC_PhoneNumberMobile2 0xDD13 #define PTP_OPC_FaxNumberPrimary 0xDD14 #define PTP_OPC_FaxNumberPersonal 0xDD15 #define PTP_OPC_FaxNumberBusiness 0xDD16 #define PTP_OPC_PagerNumber 0xDD17 #define PTP_OPC_PhoneNumberOthers 0xDD18 #define PTP_OPC_PrimaryWebAddress 0xDD19 #define PTP_OPC_PersonalWebAddress 0xDD1A #define PTP_OPC_BusinessWebAddress 0xDD1B #define PTP_OPC_InstantMessengerAddress 0xDD1C #define PTP_OPC_InstantMessengerAddress2 0xDD1D #define PTP_OPC_InstantMessengerAddress3 0xDD1E #define PTP_OPC_PostalAddressPersonalFull 0xDD1F #define PTP_OPC_PostalAddressPersonalFullLine1 0xDD20 #define PTP_OPC_PostalAddressPersonalFullLine2 0xDD21 #define PTP_OPC_PostalAddressPersonalFullCity 0xDD22 #define PTP_OPC_PostalAddressPersonalFullRegion 0xDD23 #define PTP_OPC_PostalAddressPersonalFullPostalCode 0xDD24 #define PTP_OPC_PostalAddressPersonalFullCountry 0xDD25 #define PTP_OPC_PostalAddressBusinessFull 0xDD26 #define PTP_OPC_PostalAddressBusinessLine1 0xDD27 #define PTP_OPC_PostalAddressBusinessLine2 0xDD28 #define PTP_OPC_PostalAddressBusinessCity 0xDD29 #define PTP_OPC_PostalAddressBusinessRegion 0xDD2A #define PTP_OPC_PostalAddressBusinessPostalCode 0xDD2B #define PTP_OPC_PostalAddressBusinessCountry 0xDD2C #define PTP_OPC_PostalAddressOtherFull 0xDD2D #define PTP_OPC_PostalAddressOtherLine1 0xDD2E #define PTP_OPC_PostalAddressOtherLine2 0xDD2F #define PTP_OPC_PostalAddressOtherCity 0xDD30 #define PTP_OPC_PostalAddressOtherRegion 0xDD31 #define PTP_OPC_PostalAddressOtherPostalCode 0xDD32 #define PTP_OPC_PostalAddressOtherCountry 0xDD33 #define PTP_OPC_OrganizationName 0xDD34 #define PTP_OPC_PhoneticOrganizationName 0xDD35 #define PTP_OPC_Role 0xDD36 #define PTP_OPC_Birthdate 0xDD37 #define PTP_OPC_MessageTo 0xDD40 #define PTP_OPC_MessageCC 0xDD41 #define PTP_OPC_MessageBCC 0xDD42 #define PTP_OPC_MessageRead 0xDD43 #define PTP_OPC_MessageReceivedTime 0xDD44 #define PTP_OPC_MessageSender 0xDD45 #define PTP_OPC_ActivityBeginTime 0xDD50 #define PTP_OPC_ActivityEndTime 0xDD51 #define PTP_OPC_ActivityLocation 0xDD52 #define PTP_OPC_ActivityRequiredAttendees 0xDD54 #define PTP_OPC_ActivityOptionalAttendees 0xDD55 #define PTP_OPC_ActivityResources 0xDD56 #define PTP_OPC_ActivityAccepted 0xDD57 #define PTP_OPC_Owner 0xDD5D #define PTP_OPC_Editor 0xDD5E #define PTP_OPC_Webmaster 0xDD5F #define PTP_OPC_URLSource 0xDD60 #define PTP_OPC_URLDestination 0xDD61 #define PTP_OPC_TimeBookmark 0xDD62 #define PTP_OPC_ObjectBookmark 0xDD63 #define PTP_OPC_ByteBookmark 0xDD64 #define PTP_OPC_LastBuildDate 0xDD70 #define PTP_OPC_TimetoLive 0xDD71 #define PTP_OPC_MediaGUID 0xDD72 #define PTP_OPC_TotalBitRate 0xDE91 #define PTP_OPC_BitRateType 0xDE92 #define PTP_OPC_SampleRate 0xDE93 #define PTP_OPC_NumberOfChannels 0xDE94 #define PTP_OPC_AudioBitDepth 0xDE95 #define PTP_OPC_ScanDepth 0xDE97 #define PTP_OPC_AudioWAVECodec 0xDE99 #define PTP_OPC_AudioBitRate 0xDE9A #define PTP_OPC_VideoFourCCCodec 0xDE9B #define PTP_OPC_VideoBitRate 0xDE9C #define PTP_OPC_FramesPerThousandSeconds 0xDE9D #define PTP_OPC_KeyFrameDistance 0xDE9E #define PTP_OPC_BufferSize 0xDE9F #define PTP_OPC_EncodingQuality 0xDEA0 #define PTP_OPC_EncodingProfile 0xDEA1 #define PTP_OPC_BuyFlag 0xD901 /* WiFi Provisioning MTP Extension property codes */ #define PTP_OPC_WirelessConfigurationFile 0xB104 /* Device Property Form Flag */ #define PTP_DPFF_None 0x00 #define PTP_DPFF_Range 0x01 #define PTP_DPFF_Enumeration 0x02 /* Object Property Codes used by MTP (first 3 are same as DPFF codes) */ #define PTP_OPFF_None 0x00 #define PTP_OPFF_Range 0x01 #define PTP_OPFF_Enumeration 0x02 #define PTP_OPFF_DateTime 0x03 #define PTP_OPFF_FixedLengthArray 0x04 #define PTP_OPFF_RegularExpression 0x05 #define PTP_OPFF_ByteArray 0x06 #define PTP_OPFF_LongString 0xFF /* Device Property GetSet type */ #define PTP_DPGS_Get 0x00 #define PTP_DPGS_GetSet 0x01 /* Glue stuff starts here */ typedef struct _PTPParams PTPParams; typedef uint16_t (* PTPDataGetFunc) (PTPParams* params, void*priv, unsigned long wantlen, unsigned char *data, unsigned long *gotlen); typedef uint16_t (* PTPDataPutFunc) (PTPParams* params, void*priv, unsigned long sendlen, unsigned char *data); typedef struct _PTPDataHandler { PTPDataGetFunc getfunc; PTPDataPutFunc putfunc; void *priv; } PTPDataHandler; /* * This functions take PTP oriented arguments and send them over an * appropriate data layer doing byteorder conversion accordingly. */ typedef uint16_t (* PTPIOSendReq) (PTPParams* params, PTPContainer* req, int dataphase); typedef uint16_t (* PTPIOSendData) (PTPParams* params, PTPContainer* ptp, uint64_t size, PTPDataHandler*getter); typedef uint16_t (* PTPIOGetResp) (PTPParams* params, PTPContainer* resp); typedef uint16_t (* PTPIOGetData) (PTPParams* params, PTPContainer* ptp, PTPDataHandler *putter); typedef uint16_t (* PTPIOCancelReq) (PTPParams* params, uint32_t transaction_id); /* debug functions */ typedef void (* PTPErrorFunc) (void *data, const char *format, va_list args) #if (__GNUC__ >= 3) __attribute__((__format__(printf,2,0))) #endif ; typedef void (* PTPDebugFunc) (void *data, const char *format, va_list args) #if (__GNUC__ >= 3) __attribute__((__format__(printf,2,0))) #endif ; struct _PTPObject { uint32_t oid; unsigned int flags; #define PTPOBJECT_OBJECTINFO_LOADED (1<<0) #define PTPOBJECT_CANONFLAGS_LOADED (1<<1) #define PTPOBJECT_MTPPROPLIST_LOADED (1<<2) #define PTPOBJECT_DIRECTORY_LOADED (1<<3) #define PTPOBJECT_PARENTOBJECT_LOADED (1<<4) #define PTPOBJECT_STORAGEID_LOADED (1<<5) PTPObjectInfo oi; uint32_t canon_flags; MTPProperties *mtpprops; unsigned int nrofmtpprops; }; typedef struct _PTPObject PTPObject; /* The Device Property Cache */ struct _PTPDeviceProperty { time_t timestamp; PTPDevicePropDesc desc; PTPPropertyValue value; }; typedef struct _PTPDeviceProperty PTPDeviceProperty; /* Transaction data phase description, internal flags to sendreq / transaction driver. */ #define PTP_DP_NODATA 0x0000 /* no data phase */ #define PTP_DP_SENDDATA 0x0001 /* sending data */ #define PTP_DP_GETDATA 0x0002 /* receiving data */ #define PTP_DP_DATA_MASK 0x00ff /* data phase mask */ struct _PTPParams { /* device flags */ uint32_t device_flags; /* data layer byteorder */ uint8_t byteorder; uint16_t maxpacketsize; /* PTP IO: Custom IO functions */ PTPIOSendReq sendreq_func; PTPIOSendData senddata_func; PTPIOGetResp getresp_func; PTPIOGetData getdata_func; PTPIOGetResp event_check; PTPIOGetResp event_wait; PTPIOCancelReq cancelreq_func; /* Custom error and debug function */ PTPErrorFunc error_func; PTPDebugFunc debug_func; /* Data passed to above functions */ void *data; /* ptp transaction ID */ uint32_t transaction_id; /* ptp session ID */ uint32_t session_id; /* used for open capture */ uint32_t opencapture_transid; /* PTP IO: if we have MTP style split header/data transfers */ int split_header_data; int ocs64; /* 64bit objectsize */ /* PTP: internal structures used by ptp driver */ PTPObject *objects; unsigned int nrofobjects; PTPDeviceInfo deviceinfo; /* PTP: the current event queue */ PTPContainer *events; int nrofevents; /* live view enabled */ int inliveview; /* PTP: Device Property Caching */ PTPDeviceProperty *deviceproperties; unsigned int nrofdeviceproperties; /* PTP: Canon specific flags list */ PTPCanon_Property *canon_props; unsigned int nrofcanon_props; int canon_viewfinder_on; int canon_event_mode; /* PTP: Canon EOS event queue */ PTPCanon_changes_entry *backlogentries; unsigned int nrofbacklogentries; int eos_captureenabled; int eos_camerastatus; /* PTP: Nikon specifics */ int controlmode; int event90c7works; /* PTP: Wifi profiles */ uint8_t wifi_profiles_version; uint8_t wifi_profiles_number; PTPNIKONWifiProfile *wifi_profiles; /* IO: PTP/IP related data */ int cmdfd, evtfd; uint8_t cameraguid[16]; uint32_t eventpipeid; char *cameraname; /* Olympus UMS wrapping related data */ PTPDeviceInfo outer_deviceinfo; char *olympus_cmd; char *olympus_reply; struct _PTPParams *outer_params; #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) /* PTP: iconv converters */ iconv_t cd_locale_to_ucs2; iconv_t cd_ucs2_to_locale; #endif /* IO: Sometimes the response packet get send in the dataphase * too. This only happens for a Samsung player now. */ uint8_t *response_packet; uint16_t response_packet_size; }; /* last, but not least - ptp functions */ uint16_t ptp_usb_sendreq (PTPParams* params, PTPContainer* req, int dataphase); uint16_t ptp_usb_senddata (PTPParams* params, PTPContainer* ptp, uint64_t size, PTPDataHandler *handler); uint16_t ptp_usb_getresp (PTPParams* params, PTPContainer* resp); uint16_t ptp_usb_getdata (PTPParams* params, PTPContainer* ptp, PTPDataHandler *handler); uint16_t ptp_usb_event_check (PTPParams* params, PTPContainer* event); uint16_t ptp_usb_event_wait (PTPParams* params, PTPContainer* event); uint16_t ptp_usb_control_get_extended_event_data (PTPParams *params, char *buffer, int *size); uint16_t ptp_usb_control_device_reset_request (PTPParams *params); uint16_t ptp_usb_control_get_device_status (PTPParams *params, char *buffer, int *size); uint16_t ptp_usb_control_cancel_request (PTPParams *params, uint32_t transid); int ptp_ptpip_connect (PTPParams* params, const char *port); uint16_t ptp_ptpip_sendreq (PTPParams* params, PTPContainer* req, int dataphase); uint16_t ptp_ptpip_senddata (PTPParams* params, PTPContainer* ptp, uint64_t size, PTPDataHandler *handler); uint16_t ptp_ptpip_getresp (PTPParams* params, PTPContainer* resp); uint16_t ptp_ptpip_getdata (PTPParams* params, PTPContainer* ptp, PTPDataHandler *handler); uint16_t ptp_ptpip_event_wait (PTPParams* params, PTPContainer* event); uint16_t ptp_ptpip_event_check (PTPParams* params, PTPContainer* event); uint16_t ptp_getdeviceinfo (PTPParams* params, PTPDeviceInfo* deviceinfo); uint16_t ptp_generic_no_data (PTPParams* params, uint16_t opcode, unsigned int cnt, ...); uint16_t ptp_opensession (PTPParams *params, uint32_t session); uint16_t ptp_transaction_new (PTPParams* params, PTPContainer* ptp, uint16_t flags, uint64_t sendlen, PTPDataHandler *handler ); uint16_t ptp_transaction (PTPParams* params, PTPContainer* ptp, uint16_t flags, uint64_t sendlen, unsigned char **data, unsigned int *recvlen ); /** * ptp_closesession: * params: PTPParams* * * Closes session. * * Return values: Some PTP_RC_* code. **/ #define ptp_closesession(params) ptp_generic_no_data(params,PTP_OC_CloseSession,0) /** * ptp_powerdown: * params: PTPParams* * * Powers down device. * * Return values: Some PTP_RC_* code. **/ #define ptp_powerdown(params) ptp_generic_no_data(params,PTP_OC_PowerDown,0) /** * ptp_resetdevice: * params: PTPParams* * * Uses the built-in function to reset the device * * Return values: Some PTP_RC_* code. * */ #define ptp_resetdevice(params) ptp_generic_no_data(params,PTP_OC_ResetDevice,0) uint16_t ptp_getstorageids (PTPParams* params, PTPStorageIDs* storageids); uint16_t ptp_getstorageinfo (PTPParams* params, uint32_t storageid, PTPStorageInfo* storageinfo); /** * ptp_formatstore: * params: PTPParams* * storageid - StorageID * * Formats the storage on the device. * * Return values: Some PTP_RC_* code. **/ #define ptp_formatstore(params,storageid) ptp_generic_no_data(params,PTP_OC_FormatStore,1,storageid) uint16_t ptp_getobjecthandles (PTPParams* params, uint32_t storage, uint32_t objectformatcode, uint32_t associationOH, PTPObjectHandles* objecthandles); uint16_t ptp_getnumobjects (PTPParams* params, uint32_t storage, uint32_t objectformatcode, uint32_t associationOH, uint32_t* numobs); uint16_t ptp_getobjectinfo (PTPParams *params, uint32_t handle, PTPObjectInfo* objectinfo); uint16_t ptp_getobject (PTPParams *params, uint32_t handle, unsigned char** object); uint16_t ptp_getobject_tofd (PTPParams* params, uint32_t handle, int fd); uint16_t ptp_getobject_to_handler (PTPParams* params, uint32_t handle, PTPDataHandler*); uint16_t ptp_getpartialobject (PTPParams* params, uint32_t handle, uint32_t offset, uint32_t maxbytes, unsigned char** object, uint32_t *len); uint16_t ptp_getpartialobject_to_handler (PTPParams* params, uint32_t handle, uint32_t offset, uint32_t maxbytes, PTPDataHandler *handler); uint16_t ptp_getthumb (PTPParams *params, uint32_t handle, unsigned char** object, unsigned int *len); uint16_t ptp_deleteobject (PTPParams* params, uint32_t handle, uint32_t ofc); uint16_t ptp_sendobjectinfo (PTPParams* params, uint32_t* store, uint32_t* parenthandle, uint32_t* handle, PTPObjectInfo* objectinfo); /** * ptp_setobjectprotection: * params: PTPParams* * uint16_t newprot - object protection flag * * Set protection of object. * * Return values: Some PTP_RC_* code. * */ #define ptp_setobjectprotection(params,oid,newprot) ptp_generic_no_data(params,PTP_OC_SetObjectProtection,2,oid,newprot) uint16_t ptp_sendobject (PTPParams* params, unsigned char* object, uint64_t size); uint16_t ptp_sendobject_fromfd (PTPParams* params, int fd, uint64_t size); uint16_t ptp_sendobject_from_handler (PTPParams* params, PTPDataHandler*, uint64_t size); /** * ptp_initiatecapture: * params: PTPParams* * storageid - destination StorageID on Responder * ofc - object format code * * Causes device to initiate the capture of one or more new data objects * according to its current device properties, storing the data into store * indicated by storageid. If storageid is 0x00000000, the object(s) will * be stored in a store that is determined by the capturing device. * The capturing of new data objects is an asynchronous operation. * * Return values: Some PTP_RC_* code. **/ #define ptp_initiatecapture(params,storageid,ofc) ptp_generic_no_data(params,PTP_OC_InitiateCapture,2,storageid,ofc) #define ptp_initiateopencapture(params,storageid,ofc) ptp_generic_no_data(params,PTP_OC_InitiateOpenCapture,2,storageid,ofc) #define ptp_terminateopencapture(params,transid) ptp_generic_no_data(params,PTP_OC_TerminateOpenCapture,1,transid) uint16_t ptp_getdevicepropdesc (PTPParams* params, uint16_t propcode, PTPDevicePropDesc *devicepropertydesc); uint16_t ptp_generic_getdevicepropdesc (PTPParams *params, uint16_t propcode, PTPDevicePropDesc *dpd); uint16_t ptp_getdevicepropvalue (PTPParams* params, uint16_t propcode, PTPPropertyValue* value, uint16_t datatype); uint16_t ptp_setdevicepropvalue (PTPParams* params, uint16_t propcode, PTPPropertyValue* value, uint16_t datatype); uint16_t ptp_generic_setdevicepropvalue (PTPParams* params, uint16_t propcode, PTPPropertyValue* value, uint16_t datatype); uint16_t ptp_getfilesystemmanifest (PTPParams* params, uint32_t storage, uint32_t objectformatcode, uint32_t associationOH, unsigned char** data); uint16_t ptp_check_event (PTPParams *params); uint16_t ptp_wait_event (PTPParams *params); uint16_t ptp_add_event (PTPParams *params, PTPContainer *evt); int ptp_get_one_event (PTPParams *params, PTPContainer *evt); uint16_t ptp_check_eos_events (PTPParams *params); int ptp_get_one_eos_event (PTPParams *params, PTPCanon_changes_entry *entry); /* Microsoft MTP extensions */ uint16_t ptp_mtp_getobjectpropdesc (PTPParams* params, uint16_t opc, uint16_t ofc, PTPObjectPropDesc *objectpropertydesc); uint16_t ptp_mtp_getobjectpropvalue (PTPParams* params, uint32_t oid, uint16_t opc, PTPPropertyValue *value, uint16_t datatype); uint16_t ptp_mtp_setobjectpropvalue (PTPParams* params, uint32_t oid, uint16_t opc, PTPPropertyValue *value, uint16_t datatype); uint16_t ptp_mtp_getobjectreferences (PTPParams* params, uint32_t handle, uint32_t** ohArray, uint32_t* arraylen); uint16_t ptp_mtp_setobjectreferences (PTPParams* params, uint32_t handle, uint32_t* ohArray, uint32_t arraylen); uint16_t ptp_mtp_getobjectproplist (PTPParams* params, uint32_t handle, MTPProperties **props, int *nrofprops); uint16_t ptp_mtp_getobjectproplist_single (PTPParams* params, uint32_t handle, MTPProperties **props, int *nrofprops); uint16_t ptp_mtp_sendobjectproplist (PTPParams* params, uint32_t* store, uint32_t* parenthandle, uint32_t* handle, uint16_t objecttype, uint64_t objectsize, MTPProperties *props, int nrofprops); uint16_t ptp_mtp_setobjectproplist (PTPParams* params, MTPProperties *props, int nrofprops); /* Microsoft MTPZ (Zune) extensions */ uint16_t ptp_mtpz_sendwmdrmpdapprequest (PTPParams*, unsigned char *, uint32_t); #define ptp_mtpz_resethandshake(params) ptp_generic_no_data(params, PTP_OC_MTP_WMDRMPD_EndTrustedAppSession, 0) uint16_t ptp_mtpz_getwmdrmpdappresponse (PTPParams*, unsigned char **, uint32_t*); #define ptp_mtpz_wmdrmpd_enabletrustedfilesoperations(params,hash1,hash2,hash3,hash4) \ ptp_generic_no_data(params, PTP_OC_MTP_WMDRMPD_EnableTrustedFilesOperations, 4,\ hash1, hash2, hash3, hash4) /* Eastman Kodak extensions */ uint16_t ptp_ek_9007 (PTPParams* params, unsigned char **serial, unsigned int *size); uint16_t ptp_ek_9009 (PTPParams* params, uint32_t*, uint32_t*); uint16_t ptp_ek_900c (PTPParams* params, unsigned char **serial, unsigned int *size); uint16_t ptp_ek_getserial (PTPParams* params, unsigned char **serial, unsigned int *size); uint16_t ptp_ek_setserial (PTPParams* params, unsigned char *serial, unsigned int size); uint16_t ptp_ek_settext (PTPParams* params, PTPEKTextParams *text); uint16_t ptp_ek_sendfileobjectinfo (PTPParams* params, uint32_t* store, uint32_t* parenthandle, uint32_t* handle, PTPObjectInfo* objectinfo); uint16_t ptp_ek_sendfileobject (PTPParams* params, unsigned char* object, uint32_t size); uint16_t ptp_ek_sendfileobject_from_handler (PTPParams* params, PTPDataHandler*, uint32_t size); /* Canon PTP extensions */ #define ptp_canon_9012(params) ptp_generic_no_data(params,0x9012,0) uint16_t ptp_canon_gettreeinfo (PTPParams* params, uint32_t* out); uint16_t ptp_canon_gettreesize (PTPParams* params, PTPCanon_directtransfer_entry**, unsigned int*cnt); uint16_t ptp_canon_getpartialobjectinfo (PTPParams* params, uint32_t handle, uint32_t p2, uint32_t* size, uint32_t* rp2); uint16_t ptp_canon_get_mac_address (PTPParams* params, unsigned char **mac); /** * ptp_canon_startshootingmode: * params: PTPParams* * * Starts shooting session. It emits a StorageInfoChanged * event via the interrupt pipe and pushes the StorageInfoChanged * and CANON_CameraModeChange events onto the event stack * (see operation PTP_OC_CANON_CheckEvent). * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_startshootingmode(params) ptp_generic_no_data(params,PTP_OC_CANON_InitiateReleaseControl,0) /** * ptp_canon_endshootingmode: * params: PTPParams* * * This operation is observed after pressing the Disconnect * button on the Remote Capture app. It emits a StorageInfoChanged * event via the interrupt pipe and pushes the StorageInfoChanged * and CANON_CameraModeChange events onto the event stack * (see operation PTP_OC_CANON_CheckEvent). * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_endshootingmode(params) ptp_generic_no_data(params,PTP_OC_CANON_TerminateReleaseControl,0) /** * ptp_canon_viewfinderon: * params: PTPParams* * * Prior to start reading viewfinder images, one must call this operation. * Supposedly, this operation affects the value of the CANON_ViewfinderMode * property. * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_viewfinderon(params) ptp_generic_no_data(params,PTP_OC_CANON_ViewfinderOn,0) /** * ptp_canon_viewfinderoff: * params: PTPParams* * * Before changing the shooting mode, or when one doesn't need to read * viewfinder images any more, one must call this operation. * Supposedly, this operation affects the value of the CANON_ViewfinderMode * property. * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_viewfinderoff(params) ptp_generic_no_data(params,PTP_OC_CANON_ViewfinderOff,0) /** * ptp_canon_reset_aeafawb: * params: PTPParams* * uint32_t flags - what shall be reset. * 1 - autoexposure * 2 - autofocus * 4 - autowhitebalance * * Called "Reset AeAfAwb" (auto exposure, focus, white balance) * * Return values: Some PTP_RC_* code. **/ #define PTP_CANON_RESET_AE 0x1 #define PTP_CANON_RESET_AF 0x2 #define PTP_CANON_RESET_AWB 0x4 #define ptp_canon_reset_aeafawb(params,flags) ptp_generic_no_data(params,PTP_OC_CANON_DoAeAfAwb,1,flags) uint16_t ptp_canon_checkevent (PTPParams* params, PTPContainer* event, int* isevent); /** * ptp_canon_focuslock: * * This operation locks the focus. It is followed by the CANON_GetChanges(?) * operation in the log. * It affects the CANON_MacroMode property. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_focuslock(params) ptp_generic_no_data(params,PTP_OC_CANON_FocusLock,0) /** * ptp_canon_focusunlock: * * This operation unlocks the focus. It is followed by the CANON_GetChanges(?) * operation in the log. * It sets the CANON_MacroMode property value to 1 (where it occurs in the log). * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_focusunlock(params) ptp_generic_no_data(params,PTP_OC_CANON_FocusUnlock,0) /** * ptp_canon_keepdeviceon: * * This operation sends a "ping" style message to the camera. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_keepdeviceon(params) ptp_generic_no_data(params,PTP_OC_CANON_KeepDeviceOn,0) /** * ptp_canon_eos_keepdeviceon: * * This operation sends a "ping" style message to the camera. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_eos_keepdeviceon(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_KeepDeviceOn,0) /** * ptp_canon_initiatecaptureinmemory: * * This operation starts the image capture according to the current camera * settings. When the capture has happened, the camera emits a CaptureComplete * event via the interrupt pipe and pushes the CANON_RequestObjectTransfer, * CANON_DeviceInfoChanged and CaptureComplete events onto the event stack * (see operation CANON_CheckEvent). From the CANON_RequestObjectTransfer * event's parameter one can learn the just captured image's ObjectHandle. * The image is stored in the camera's own RAM. * On the next capture the image will be overwritten! * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_initiatecaptureinmemory(params) ptp_generic_no_data(params,PTP_OC_CANON_InitiateCaptureInMemory,0) /** * ptp_canon_eos_requestdevicepropvalue: * * This operation sends a "ping" style message to the camera. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define CANON_EOS_OLC_BUTTON 0x0001 #define CANON_EOS_OLC_SHUTTERSPEED 0x0002 #define CANON_EOS_OLC_APERTURE 0x0004 #define CANON_EOS_OLC_ISO 0x0008 #define ptp_canon_eos_setrequestolcinfogroup(params,igmask) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetRequestOLCInfoGroup,1,igmask) #define ptp_canon_eos_requestdevicepropvalue(params,prop) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RequestDevicePropValue,1,prop) uint16_t ptp_canon_eos_capture (PTPParams* params, uint32_t *result); uint16_t ptp_canon_eos_getevent (PTPParams* params, PTPCanon_changes_entry **entries, int *nrofentries); uint16_t ptp_canon_getpartialobject (PTPParams* params, uint32_t handle, uint32_t offset, uint32_t size, uint32_t pos, unsigned char** block, uint32_t* readnum); uint16_t ptp_canon_getviewfinderimage (PTPParams* params, unsigned char** image, uint32_t* size); uint16_t ptp_canon_getchanges (PTPParams* params, uint16_t** props, uint32_t* propnum); uint16_t ptp_canon_getobjectinfo (PTPParams* params, uint32_t store, uint32_t p2, uint32_t parenthandle, uint32_t handle, PTPCANONFolderEntry** entries, uint32_t* entnum); uint16_t ptp_canon_eos_getdeviceinfo (PTPParams* params, PTPCanonEOSDeviceInfo*di); /** * ptp_canon_eos_setuilock: * * This command sets UI lock * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_eos_setuilock(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetUILock,0) /** * ptp_canon_eos_resetuilock: * * This command sets UI lock * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_eos_resetuilock(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_ResetUILock,0) /** * ptp_canon_eos_start_viewfinder: * * This command starts Viewfinder mode of newer Canon DSLRs. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_eos_start_viewfinder(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_InitiateViewfinder,0) /** * ptp_canon_eos_end_viewfinder: * * This command ends Viewfinder mode of newer Canon DSLRs. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_eos_end_viewfinder(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_TerminateViewfinder,0) uint16_t ptp_canon_eos_get_viewfinder_image (PTPParams* params, unsigned char **data, unsigned int *size); uint16_t ptp_canon_eos_get_viewfinder_image_handler (PTPParams* params, PTPDataHandler*); uint16_t ptp_canon_get_objecthandle_by_name (PTPParams* params, char* name, uint32_t* objectid); uint16_t ptp_canon_get_directory (PTPParams* params, PTPObjectHandles *handles, PTPObjectInfo **oinfos, uint32_t **flags); /** * ptp_canon_setobjectarchive: * * params: PTPParams* * uint32_t objectid * uint32_t flags * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_setobjectarchive(params,oid,flags) ptp_generic_no_data(params,PTP_OC_CANON_SetObjectArchive,2,oid,flags) uint16_t ptp_canon_get_customize_data (PTPParams* params, uint32_t themenr, unsigned char **data, unsigned int *size); uint16_t ptp_canon_getpairinginfo (PTPParams* params, uint32_t nr, unsigned char**, unsigned int*); uint16_t ptp_canon_eos_getstorageids (PTPParams* params, PTPStorageIDs* storageids); uint16_t ptp_canon_eos_getstorageinfo (PTPParams* params, uint32_t p1, unsigned char**, unsigned int*); uint16_t ptp_canon_eos_getpartialobject (PTPParams* params, uint32_t oid, uint32_t off, uint32_t xsize, unsigned char**data); uint16_t ptp_canon_eos_getobjectinfoex (PTPParams* params, uint32_t storageid, uint32_t objectid, uint32_t unk, PTPCANONFolderEntry **entries, unsigned int *nrofentries); uint16_t ptp_canon_eos_setdevicepropvalueex (PTPParams* params, unsigned char* data, unsigned int size); #define ptp_canon_eos_setremotemode(params,p1) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetRemoteMode,1,p1) #define ptp_canon_eos_seteventmode(params,p1) ptp_generic_no_data(params,PTP_OC_CANON_EOS_SetEventMode,1,p1) /** * ptp_canon_eos_transfercomplete: * * This ends a direct object transfer from an EOS camera. * * params: PTPParams* * oid Object ID * * Return values: Some PTP_RC_* code. * */ #define ptp_canon_eos_transfercomplete(params,oid) ptp_generic_no_data(params,PTP_OC_CANON_EOS_TransferComplete,1,oid) /* inHDD = %d, inLength =%d, inReset = %d */ #define ptp_canon_eos_pchddcapacity(params,p1,p2,p3) ptp_generic_no_data(params,PTP_OC_CANON_EOS_PCHDDCapacity,3,p1,p2,p3) uint16_t ptp_canon_eos_bulbstart (PTPParams* params); uint16_t ptp_canon_eos_bulbend (PTPParams* params); uint16_t ptp_canon_eos_getdevicepropdesc (PTPParams* params, uint16_t propcode, PTPDevicePropDesc *devicepropertydesc); uint16_t ptp_canon_eos_setdevicepropvalue (PTPParams* params, uint16_t propcode, PTPPropertyValue* value, uint16_t datatype); uint16_t ptp_nikon_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size); uint16_t ptp_nikon_curve_download (PTPParams* params, unsigned char **data, unsigned int *size); uint16_t ptp_nikon_getptpipinfo (PTPParams* params, unsigned char **data, unsigned int *size); uint16_t ptp_nikon_getwifiprofilelist (PTPParams* params); uint16_t ptp_nikon_writewifiprofile (PTPParams* params, PTPNIKONWifiProfile* profile); uint16_t ptp_sony_sdioconnect (PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3); uint16_t ptp_sony_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size); uint16_t ptp_sony_getdevicepropdesc (PTPParams* params, uint16_t propcode, PTPDevicePropDesc *devicepropertydesc); uint16_t ptp_sony_getalldevicepropdesc (PTPParams* params); uint16_t ptp_sony_setdevicecontrolvaluea (PTPParams* params, uint16_t propcode, PTPPropertyValue* value, uint16_t datatype); uint16_t ptp_sony_setdevicecontrolvalueb (PTPParams* params, uint16_t propcode, PTPPropertyValue* value, uint16_t datatype); uint16_t ptp_sony_9280 (PTPParams* params, uint32_t additional, uint32_t data1, uint32_t data2, uint32_t data3, uint32_t data4, uint8_t x, uint8_t y); uint16_t ptp_sony_9281 (PTPParams* params, uint32_t param1); /** * ptp_nikon_deletewifiprofile: * * This command deletes a wifi profile. * * params: PTPParams* * unsigned int profilenr - profile number * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_deletewifiprofile(params,profilenr) ptp_generic_no_data(params,PTP_OC_NIKON_DeleteProfile,1,profilenr) /** * ptp_nikon_setcontrolmode: * * This command can switch the camera to full PC control mode. * * params: PTPParams* * uint32_t mode - mode * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_setcontrolmode(params,mode) ptp_generic_no_data(params,PTP_OC_NIKON_SetControlMode,1,mode) /** * ptp_nikon_terminatecapture: * * This command appears to terminate a longer capture * * params: PTPParams* * uint32_t a * uint32_t b * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_terminatecapture(params,p1,p2) ptp_generic_no_data(params,PTP_OC_NIKON_TerminateCapture,2,p1,p2) /** * ptp_nikon_afdrive: * * This command runs (drives) the lens autofocus. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_afdrive(params) ptp_generic_no_data(params,PTP_OC_NIKON_AfDrive,0) /** * ptp_nikon_changeafarea: * * This command starts movie capture (to card) * * params: PTPParams* * x: x coordinate * y: y coordinate * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_changeafarea(params,x,y) ptp_generic_no_data(params,PTP_OC_NIKON_ChangeAfArea,2,x,y) /** * ptp_nikon_startmovie: * * This command starts movie capture (to card) * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_startmovie(params) ptp_generic_no_data(params,PTP_OC_NIKON_StartMovieRecInCard,0) /** * ptp_nikon_stopmovie: * * This command stops movie capture (to card) * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_stopmovie(params) ptp_generic_no_data(params,PTP_OC_NIKON_EndMovieRec,0) /** * ptp_canon_eos_afdrive: * * This command runs (drives) the lens autofocus. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_eos_afdrive(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_DoAf,0) /** * ptp_canon_eos_afcancel: * * This command cancels the lens autofocus. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_eos_afcancel(params) ptp_generic_no_data(params,PTP_OC_CANON_EOS_AfCancel,0) /** * ptp_canon_eos_zoom: * * This command runs (drives) the lens autofocus. * * params: PTPParams* * params: arg1 unknown * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_eos_zoom(params,x) ptp_generic_no_data(params,PTP_OC_CANON_EOS_Zoom,1,x) #define ptp_canon_eos_zoomposition(params,x,y) ptp_generic_no_data(params,PTP_OC_CANON_EOS_ZoomPosition,2,x,y) #define ptp_canon_eos_remotereleaseon(params,x,y) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RemoteReleaseOn,2,x,y) #define ptp_canon_eos_remotereleaseoff(params,x) ptp_generic_no_data(params,PTP_OC_CANON_EOS_RemoteReleaseOff,1,x) /** * ptp_nikon_mfdrive: * * This command runs (drives) the lens focus manually. * * params: PTPParams* * flag: 0x1 for (no limit - closest), 0x2 for (closest - no limit) * amount: amount of steps * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_mfdrive(params,flag,amount) ptp_generic_no_data(params,PTP_OC_NIKON_MfDrive,2,flag,amount) /** * ptp_canon_eos_drivelens: * * This command runs (drives) the lens focus manually. * * params: PTPParams* * amount: 0x1-0x3 for near range, 0x8001-0x8003 for far range. * * Return values: Some PTP_RC_* code. * **/ #define ptp_canon_eos_drivelens(params,amount) ptp_generic_no_data(params,PTP_OC_CANON_EOS_DriveLens,1,amount) /** * ptp_nikon_capture: * * This command captures a picture on the Nikon. * * params: PTPParams* * uint32_t x: unknown parameter. seen to be -1. * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_capture(params,x) ptp_generic_no_data(params,PTP_OC_NIKON_Capture,1,x) /** * ptp_nikon_capture2: * * This command captures a picture on the Nikon. * * params: PTPParams* * af: autofocus before capture (1 yes , 0 no) * target: sdram 1, card 0 * * Return values: Some PTP_RC_* code. * 2 params: * 0xffffffff == No AF before, 0xfffffffe == AF before capture * sdram=1, card=0 */ #define ptp_nikon_capture2(params,af,target) ptp_generic_no_data(params,PTP_OC_NIKON_InitiateCaptureRecInMedia,2,af?0xfffffffe:0xffffffff,target) /** * ptp_nikon_capture_sdram: * * This command captures a picture on the Nikon. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_capture_sdram(params) ptp_generic_no_data(params,PTP_OC_NIKON_AfCaptureSDRAM,0) /** * ptp_nikon_delete_sdram_image: * * This command deletes the current SDRAM image * * params: PTPParams* * uint32_t oid * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_delete_sdram_image(params,oid) ptp_generic_no_data(params,PTP_OC_NIKON_DelImageSDRAM,1,oid) /** * ptp_nikon_start_liveview: * * This command starts LiveView mode of newer Nikons DSLRs. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_start_liveview(params) ptp_generic_no_data(params,PTP_OC_NIKON_StartLiveView,0) uint16_t ptp_nikon_get_liveview_image (PTPParams* params, unsigned char**,unsigned int*); uint16_t ptp_nikon_get_preview_image (PTPParams* params, unsigned char**, unsigned int*, uint32_t*); /** * ptp_nikon_end_liveview: * * This command ends LiveView mode of newer Nikons DSLRs. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_end_liveview(params) ptp_generic_no_data(params,PTP_OC_NIKON_EndLiveView,0) uint16_t ptp_nikon_check_event (PTPParams* params, PTPContainer **evt, unsigned int *evtcnt); uint16_t ptp_nikon_getfileinfoinblock (PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3, unsigned char **data, unsigned int *size); /** * ptp_nikon_device_ready: * * This command checks if the device is ready. Used after * a capture. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ #define ptp_nikon_device_ready(params) ptp_generic_no_data (params, PTP_OC_NIKON_DeviceReady, 0) uint16_t ptp_mtp_getobjectpropssupported (PTPParams* params, uint16_t ofc, uint32_t *propnum, uint16_t **props); /* Android MTP Extensions */ uint16_t ptp_android_getpartialobject64 (PTPParams* params, uint32_t handle, uint64_t offset, uint32_t maxbytes, unsigned char** object, uint32_t *len); #define ptp_android_begineditobject(params,handle) ptp_generic_no_data (params, PTP_OC_ANDROID_BeginEditObject, 1, handle) #define ptp_android_truncate(params,handle,offset) ptp_generic_no_data (params, PTP_OC_ANDROID_TruncateObject, 3, handle, (offset & 0xFFFFFFFF), (offset >> 32)) uint16_t ptp_android_sendpartialobject (PTPParams *params, uint32_t handle, uint64_t offset, unsigned char *object, uint32_t len); #define ptp_android_endeditobject(params,handle) ptp_generic_no_data (params, PTP_OC_ANDROID_EndEditObject, 1, handle) uint16_t ptp_olympus_getdeviceinfo (PTPParams*, PTPDeviceInfo*); #define ptp_olympus_setcameracontrolmode(params,p1) ptp_generic_no_data (params, PTP_OC_OLYMPUS_SetCameraControlMode, 1, p1) uint16_t ptp_olympus_opensession (PTPParams*, unsigned char**, unsigned int *); #define ptp_olympus_capture(params,p1) ptp_generic_no_data (params, PTP_OC_OLYMPUS_Capture, 1, p1) uint16_t ptp_olympus_getcameraid (PTPParams*, unsigned char**, unsigned int *); /* Non PTP protocol functions */ static inline int ptp_operation_issupported(PTPParams* params, uint16_t operation) { unsigned int i=0; for (;ideviceinfo.OperationsSupported_len;i++) { if (params->deviceinfo.OperationsSupported[i]==operation) return 1; } return 0; } int ptp_event_issupported (PTPParams* params, uint16_t event); int ptp_property_issupported (PTPParams* params, uint16_t property); void ptp_free_params (PTPParams *params); void ptp_free_objectpropdesc (PTPObjectPropDesc*); void ptp_free_devicepropdesc (PTPDevicePropDesc*); void ptp_free_devicepropvalue (uint16_t, PTPPropertyValue*); void ptp_free_objectinfo (PTPObjectInfo *oi); void ptp_free_object (PTPObject *oi); const char *ptp_strerror (uint16_t ret, uint16_t vendor); void ptp_debug (PTPParams *params, const char *format, ...); void ptp_error (PTPParams *params, const char *format, ...); const char* ptp_get_property_description(PTPParams* params, uint16_t dpc); const char* ptp_get_opcode_name(PTPParams* params, uint16_t opcode); int ptp_render_property_value(PTPParams* params, uint16_t dpc, PTPDevicePropDesc *dpd, unsigned int length, char *out); int ptp_render_ofc(PTPParams* params, uint16_t ofc, int spaceleft, char *txt); int ptp_render_mtp_propname(uint16_t propid, int spaceleft, char *txt); MTPProperties *ptp_get_new_object_prop_entry(MTPProperties **props, int *nrofprops); void ptp_destroy_object_prop(MTPProperties *prop); void ptp_destroy_object_prop_list(MTPProperties *props, int nrofprops); MTPProperties *ptp_find_object_prop_in_cache(PTPParams *params, uint32_t const handle, uint32_t const attribute_id); uint16_t ptp_remove_object_from_cache(PTPParams *params, uint32_t handle); uint16_t ptp_add_object_to_cache(PTPParams *params, uint32_t handle); uint16_t ptp_object_want (PTPParams *, uint32_t handle, unsigned int want, PTPObject**retob); void ptp_objects_sort (PTPParams *); uint16_t ptp_object_find (PTPParams *params, uint32_t handle, PTPObject **retob); uint16_t ptp_object_find_or_insert (PTPParams *params, uint32_t handle, PTPObject **retob); /* ptpip.c */ void ptp_nikon_getptpipguid (unsigned char* guid); /* CHDK specifics */ #define PTP_OC_CHDK 0x9999 typedef struct tagptp_chdk_videosettings { long live_image_buffer_width; long live_image_width; long live_image_height; long bitmap_buffer_width; long bitmap_width; long bitmap_height; unsigned palette[16]; } ptp_chdk_videosettings; /* Nafraf: Test this!!!*/ #define ptp_chdk_switch_mode(params,mode) ptp_generic_no_data(params,PTP_OC_CHDK,2,PTP_CHDK_SwitchMode,mode) /* include CHDK ptp protocol definitions from a CHDK source tree */ #include "chdk_ptp.h" #if (PTP_CHDK_VERSION_MAJOR < 2 || (PTP_CHDK_VERSION_MAJOR == 2 && PTP_CHDK_VERSION_MINOR < 5)) #error your chdk headers are too old, unset CHDK_SRC_DIR in config.mk #endif #include "chdk_live_view.h" /* the following happens to match what is used in CHDK, but is not part of the protocol */ typedef struct { unsigned size; unsigned script_id; /* id of script message is to/from */ unsigned type; unsigned subtype; char data[]; } ptp_chdk_script_msg; /* chunk for remote capture */ typedef struct { uint32_t size; /* length of data */ int last; /* is it the last chunk? */ uint32_t offset; /* offset within file, or -1 */ unsigned char *data; /* data, must be free'd by caller when done */ } ptp_chdk_rc_chunk; uint16_t ptp_chdk_get_memory(PTPParams* params, int start, int num, unsigned char **); uint16_t ptp_chdk_set_memory_long(PTPParams* params, int addr, int val); int ptp_chdk_upload(PTPParams* params, char *local_fn, char *remote_fn); uint16_t ptp_chdk_download(PTPParams* params, char *remote_fn, PTPDataHandler *handler); /* remote capture */ uint16_t ptp_chdk_rcisready(PTPParams* params, int *isready,int *imgnum); uint16_t ptp_chdk_rcgetchunk(PTPParams* params,int fmt, ptp_chdk_rc_chunk *chunk); uint16_t ptp_chdk_exec_lua(PTPParams* params, char *script, int flags, int *script_id,int *status); uint16_t ptp_chdk_get_version(PTPParams* params, int *major, int *minor); uint16_t ptp_chdk_get_script_support(PTPParams* params, unsigned *status); uint16_t ptp_chdk_get_script_status(PTPParams* params, unsigned *status); uint16_t ptp_chdk_write_script_msg(PTPParams* params, char *data, unsigned size, int target_script_id, int *status); uint16_t ptp_chdk_read_script_msg(PTPParams* params, ptp_chdk_script_msg **msg); uint16_t ptp_chdk_get_live_data(PTPParams* params, unsigned flags, unsigned char **data, unsigned int *data_size); uint16_t ptp_chdk_call_function(PTPParams* params, int *args, int size, int *ret); /*uint16_t ptp_chdk_get_script_output(PTPParams* params, char **output ); */ /*uint16_t ptp_chdk_get_video_settings(PTPParams* params, ptp_chdk_videosettings* vsettings);*/ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __PTP_H__ */ libgphoto2-2.5.9/camlibs/ptp2/config.c0000644000175000001440000101707612623143575014451 00000000000000/* config.c * * Copyright (C) 2003-2015 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #ifdef WIN32 # include #else # include # include # include #endif #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #include "ptp.h" #include "ptp-bugs.h" #include "ptp-private.h" #include "ptp-pack.c" #ifdef __GNUC__ # define __unused__ __attribute__((unused)) #else # define __unused__ #endif #define SET_CONTEXT(camera, ctx) ((PTPData *) camera->pl->params.data)->context = ctx static int camera_prepare_chdk_capture(Camera *camera, GPContext *context) { PTPParams *params = &camera->pl->params; int scriptid = 0, major = 0,minor = 0; unsigned int status; int luastatus; ptp_chdk_script_msg *msg = NULL; char *lua = PTP_CHDK_LUA_SERIALIZE "if not get_mode() then\n\ switch_mode_usb(1)\n\ local i=0\n\ while not get_mode() and i < 300 do\n\ sleep(10)\n\ i=i+1\n\ end\n\ if not get_mode() then\n\ return false, 'switch failed'\n\ end\n\ return true\n\ end\n\ return false,'already in rec'\n\ "; C_PTP (ptp_chdk_get_version (params, &major, &minor)); GP_LOG_D ("CHDK %d.%d", major, minor); GP_LOG_D ("calling lua script %s", lua); C_PTP (ptp_chdk_exec_lua(params, lua, 0, &scriptid, &luastatus)); GP_LOG_D ("called script. script id %d, status %d", scriptid, luastatus); while (1) { C_PTP (ptp_chdk_get_script_status(params, &status)); GP_LOG_D ("script status %x", status); if (status & PTP_CHDK_SCRIPT_STATUS_MSG) { C_PTP (ptp_chdk_read_script_msg(params, &msg)); GP_LOG_D ("message script id %d, type %d, subtype %d", msg->script_id, msg->type, msg->subtype); GP_LOG_D ("message script %s", msg->data); free (msg); } if (!(status & PTP_CHDK_SCRIPT_STATUS_RUN)) break; usleep(100000); } return GP_OK; } static int camera_unprepare_chdk_capture(Camera *camera, GPContext *context) { PTPParams *params = &camera->pl->params; int scriptid = 0, status = 0; ptp_chdk_script_msg *msg = NULL; char *lua = PTP_CHDK_LUA_SERIALIZE "if get_mode() then\n\ switch_mode_usb(0)\n\ local i=0\n\ while get_mode() and i < 300 do\n\ sleep(10)\n\ i=i+1\n\ end\n\ if get_mode() then\n\ return false, 'switch failed'\n\ end\n\ return true\n\ end\n\ return false,'already in play'\n\ "; GP_LOG_D ("calling lua script %s", lua); C_PTP (ptp_chdk_exec_lua(params, lua, 0, &scriptid, &status)); C_PTP (ptp_chdk_read_script_msg(params, &msg)); GP_LOG_D ("called script. script id %d, status %d", scriptid, status); GP_LOG_D ("message script id %d, type %d, subtype %d", msg->script_id, msg->type, msg->subtype); GP_LOG_D ("message script %s", msg->data); free (msg); if (!status) { gp_context_error(context,_("CHDK did not leave recording mode.")); return GP_ERROR; } return GP_OK; } static int camera_prepare_canon_powershot_capture(Camera *camera, GPContext *context) { uint16_t ret; PTPContainer event; PTPPropertyValue propval; PTPParams *params = &camera->pl->params; int found, oldtimeout; if (ptp_property_issupported(params, PTP_DPC_CANON_FlashMode)) { GP_LOG_D ("Canon capture mode is already set up."); C_PTP (ptp_getdevicepropvalue(params, PTP_DPC_CANON_EventEmulateMode, &propval, PTP_DTC_UINT16)); GP_LOG_D ("Event emulate mode 0x%04x", propval.u16); params->canon_event_mode = propval.u16; return GP_OK; } propval.u16 = 0; C_PTP (ptp_getdevicepropvalue(params, PTP_DPC_CANON_EventEmulateMode, &propval, PTP_DTC_UINT16)); GP_LOG_D ("prop 0xd045 value is 0x%04x",propval.u16); propval.u16=1; C_PTP (ptp_setdevicepropvalue(params, PTP_DPC_CANON_EventEmulateMode, &propval, PTP_DTC_UINT16)); params->canon_event_mode = propval.u16; C_PTP (ptp_getdevicepropvalue(params, PTP_DPC_CANON_SizeOfOutputDataFromCamera, &propval, PTP_DTC_UINT32)); GP_LOG_D ("prop PTP_DPC_CANON_SizeOfOutputDataFromCamera value is %d",propval.u32); C_PTP (ptp_getdevicepropvalue(params, PTP_DPC_CANON_SizeOfInputDataToCamera, &propval, PTP_DTC_UINT32)); GP_LOG_D ("prop PTP_DPC_CANON_SizeOfInputDataToCamera value is %d",propval.u32); C_PTP (ptp_getdeviceinfo (params, ¶ms->deviceinfo)); C_PTP (ptp_getdeviceinfo (params, ¶ms->deviceinfo)); CR (fixup_cached_deviceinfo (camera, ¶ms->deviceinfo)); C_PTP (ptp_getdevicepropvalue(params, PTP_DPC_CANON_SizeOfOutputDataFromCamera, &propval, PTP_DTC_UINT32)); GP_LOG_D ("prop PTP_DPC_CANON_SizeOfOutputDataFromCamera value is %d",propval.u32); C_PTP (ptp_getdevicepropvalue(params, PTP_DPC_CANON_SizeOfInputDataToCamera, &propval, PTP_DTC_UINT32)); GP_LOG_D ("prop PTP_DPC_CANON_SizeOfInputDataToCamera value is %d",propval.u32); C_PTP (ptp_getdeviceinfo (params, ¶ms->deviceinfo)); CR (fixup_cached_deviceinfo (camera, ¶ms->deviceinfo)); C_PTP (ptp_getdevicepropvalue(params, PTP_DPC_CANON_EventEmulateMode, &propval, PTP_DTC_UINT16)); params->canon_event_mode = propval.u16; GP_LOG_D ("prop 0xd045 value is 0x%04x",propval.u16); GP_LOG_D ("Magic code ends."); GP_LOG_D ("Setting prop. EventEmulateMode to 7."); /* interrupt 9013 get event 1 Yes No 2 Yes No 3 Yes Yes 4 Yes Yes 5 Yes Yes 6 No No 7 No Yes */ propval.u16 = 7; C_PTP (ptp_setdevicepropvalue(params, PTP_DPC_CANON_EventEmulateMode, &propval, PTP_DTC_UINT16)); params->canon_event_mode = propval.u16; ret = ptp_canon_startshootingmode (params); if (ret == PTP_RC_CANON_A009) { /* I think this means ... already in capture mode */ return GP_OK; } if (ret != PTP_RC_OK) { GP_LOG_E ("'ptp_canon_startshootingmode (params)' failed: 0x%04x", ret); C_PTP_REP (ret); } gp_port_get_timeout (camera->port, &oldtimeout); gp_port_set_timeout (camera->port, 1000); /* Catch the event telling us the mode was switched ... */ /* If we were prepared already, it will be 5*50*1000 wait, so 1/4 second ... hmm */ found = 0; while (found++<10) { ret = ptp_check_event (params); if (ret != PTP_RC_OK) break; while (ptp_get_one_event (params, &event)) { GP_LOG_D ("Event: 0x%x", event.Code); if ((event.Code==0xc00c) || (event.Code==PTP_EC_StorageInfoChanged)) { GP_LOG_D ("Event: Entered shooting mode."); found = 1; break; } } usleep(50*1000); } #if 0 gp_port_set_timeout (camera->port, oldtimeout); if (ptp_operation_issupported(params, PTP_OC_CANON_ViewfinderOn)) { ret = ptp_canon_viewfinderon (params); if (ret != PTP_RC_OK) GP_LOG_E ("Canon enable viewfinder failed: %d", ret); /* ignore errors here */ } gp_port_set_timeout (camera->port, 1000); #endif /* Reget device info, they change on the Canons. */ C_PTP (ptp_getdeviceinfo(&camera->pl->params, &camera->pl->params.deviceinfo)); CR (fixup_cached_deviceinfo (camera, &camera->pl->params.deviceinfo)); gp_port_set_timeout (camera->port, oldtimeout); return GP_OK; } int camera_canon_eos_update_capture_target(Camera *camera, GPContext *context, int value) { PTPParams *params = &camera->pl->params; char buf[200]; PTPPropertyValue ct_val; PTPDevicePropDesc dpd; int cardval = -1; memset(&dpd,0,sizeof(dpd)); C_PTP (ptp_canon_eos_getdevicepropdesc (params,PTP_DPC_CANON_EOS_CaptureDestination, &dpd)); /* Look for the correct value of the card mode */ if (value != PTP_CANON_EOS_CAPTUREDEST_HD) { if (dpd.FormFlag == PTP_DPFF_Enumeration) { unsigned int i; for (i=0;ipl->params; PTPStorageIDs sids; GP_LOG_D ("preparing EOS capture..."); C_PTP (ptp_canon_eos_setremotemode(params, 1)); C_PTP (ptp_canon_eos_seteventmode(params, 1)); params->eos_camerastatus = -1; /* aka unknown */ if (ptp_operation_issupported(params, PTP_OC_CANON_EOS_SetRequestOLCInfoGroup)) C_PTP (ptp_canon_eos_setrequestolcinfogroup(params, 0x00001fff)); /* Get the initial bulk set of event data */ C_PTP (ptp_check_eos_events (params)); if (ptp_operation_issupported(params, PTP_OC_CANON_EOS_RequestDevicePropValue)) { /* request additional properties */ /* if one of this is not present GeneralError will be returned, so only check * and log, but do not error return */ LOG_ON_PTP_E (ptp_canon_eos_requestdevicepropvalue (params, PTP_DPC_CANON_EOS_Owner)); LOG_ON_PTP_E (ptp_canon_eos_requestdevicepropvalue (params, PTP_DPC_CANON_EOS_Artist)); LOG_ON_PTP_E (ptp_canon_eos_requestdevicepropvalue (params, PTP_DPC_CANON_EOS_Copyright)); LOG_ON_PTP_E (ptp_canon_eos_requestdevicepropvalue (params, PTP_DPC_CANON_EOS_SerialNumber)); /* LOG_ON_PTP_E (ptp_canon_eos_requestdevicepropvalue (params, PTP_DPC_CANON_EOS_DPOFVersion)); */ /* LOG_ON_PTP_E (ptp_canon_eos_requestdevicepropvalue (params, PTP_DPC_CANON_EOS_MyMenuList)); */ /* LOG_ON_PTP_E (ptp_canon_eos_requestdevicepropvalue (params, PTP_DPC_CANON_EOS_LensAdjustParams)); */ } if (ptp_operation_issupported(params, PTP_OC_CANON_EOS_GetDeviceInfoEx)) { PTPCanonEOSDeviceInfo x; unsigned int i; C_PTP (ptp_canon_eos_getdeviceinfo (params, &x)); for (i=0;ideviceinfo); C_PTP (ptp_getdeviceinfo(params, ¶ms->deviceinfo)); CR (fixup_cached_deviceinfo (camera, ¶ms->deviceinfo)); C_PTP (ptp_canon_eos_getstorageids(params, &sids)); if (sids.n >= 1) { unsigned char *sdata; unsigned int slen; C_PTP (ptp_canon_eos_getstorageinfo(params, sids.Storage[0], &sdata, &slen )); free (sdata); } free (sids.Storage); /* FIXME: 9114 call missing here! */ /* Get the second bulk set of 0x9116 property data */ C_PTP (ptp_check_eos_events (params)); params->eos_captureenabled = 1; return GP_OK; } int camera_prepare_capture (Camera *camera, GPContext *context) { PTPParams *params = &camera->pl->params; GP_LOG_D ("prepare_capture"); switch (params->deviceinfo.VendorExtensionID) { case PTP_VENDOR_CANON: if (ptp_operation_issupported(params, PTP_OC_CANON_InitiateReleaseControl)) return camera_prepare_canon_powershot_capture(camera,context); if (ptp_operation_issupported(params, PTP_OC_CHDK)) return camera_prepare_chdk_capture(camera,context); if (ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteRelease)) return camera_prepare_canon_eos_capture(camera,context); gp_context_error(context, _("Sorry, your Canon camera does not support Canon capture")); return GP_ERROR_NOT_SUPPORTED; default: /* generic capture does not need preparation */ return GP_OK; } return GP_OK; } static int camera_unprepare_canon_powershot_capture(Camera *camera, GPContext *context) { PTPParams *params = &camera->pl->params; C_PTP (ptp_canon_endshootingmode (params)); if (ptp_operation_issupported(params, PTP_OC_CANON_ViewfinderOff)) { if (params->canon_viewfinder_on) { params->canon_viewfinder_on = 0; LOG_ON_PTP_E (ptp_canon_viewfinderoff (params)); /* ignore errors here */ } } /* Reget device info, they change on the Canons. */ C_PTP (ptp_getdeviceinfo(params, ¶ms->deviceinfo)); CR (fixup_cached_deviceinfo (camera, ¶ms->deviceinfo)); return GP_OK; } static int camera_unprepare_canon_eos_capture(Camera *camera, GPContext *context) { PTPParams *params = &camera->pl->params; /* just in case we had autofocus running */ CR (ptp_canon_eos_afcancel(params)); /* then emits 911b and 911c ... not done yet ... */ CR (camera_canon_eos_update_capture_target(camera, context, 1)); C_PTP (ptp_canon_eos_resetuilock (params)); /* Drain the rest set of the event data */ C_PTP (ptp_check_eos_events (params)); C_PTP (ptp_canon_eos_setremotemode(params, 0)); C_PTP (ptp_canon_eos_seteventmode(params, 0)); params->eos_captureenabled = 0; return GP_OK; } int camera_unprepare_capture (Camera *camera, GPContext *context) { GP_LOG_D ("Unprepare_capture"); switch (camera->pl->params.deviceinfo.VendorExtensionID) { case PTP_VENDOR_CANON: if (ptp_operation_issupported(&camera->pl->params, PTP_OC_CANON_TerminateReleaseControl)) return camera_unprepare_canon_powershot_capture (camera, context); if (ptp_operation_issupported(&camera->pl->params, PTP_OC_CHDK)) return camera_unprepare_chdk_capture(camera,context); if (ptp_operation_issupported(&camera->pl->params, PTP_OC_CANON_EOS_RemoteRelease)) return camera_unprepare_canon_eos_capture (camera, context); gp_context_error(context, _("Sorry, your Canon camera does not support Canon capture")); return GP_ERROR_NOT_SUPPORTED; default: /* generic capture does not need unpreparation */ return GP_OK; } return GP_OK; } static uint16_t nikon_wait_busy(PTPParams *params, int waitms, int timeout) { uint16_t res; int tries; /* wait either 1 second, or 50 tries */ if (waitms) tries=timeout/waitms; else tries=50; do { res = ptp_nikon_device_ready(params); if (res != PTP_RC_DeviceBusy) return res; if (waitms) usleep(waitms*1000)/*wait a bit*/; } while (tries--); return res; } int have_prop(Camera *camera, uint16_t vendor, uint16_t prop) { unsigned int i; /* prop 0 matches */ if (!prop && (camera->pl->params.deviceinfo.VendorExtensionID==vendor)) return 1; if ( ((prop & 0x7000) == 0x5000) || (NIKON_1(&camera->pl->params) && ((prop & 0xf000) == 0xf000)) ) { /* properties */ for (i=0; ipl->params.deviceinfo.DevicePropertiesSupported_len; i++) { if (prop != camera->pl->params.deviceinfo.DevicePropertiesSupported[i]) continue; if ((prop & 0xf000) == 0x5000) { /* generic property */ if (!vendor || (camera->pl->params.deviceinfo.VendorExtensionID==vendor)) return 1; } if (camera->pl->params.deviceinfo.VendorExtensionID==vendor) return 1; } } if ((prop & 0x7000) == 0x1000) { /* commands */ for (i=0; ipl->params.deviceinfo.OperationsSupported_len; i++) { if (prop != camera->pl->params.deviceinfo.OperationsSupported[i]) continue; if ((prop & 0xf000) == 0x1000) /* generic property */ return 1; if (camera->pl->params.deviceinfo.VendorExtensionID==vendor) return 1; } } return 0; } static int have_eos_prop(Camera *camera, uint16_t vendor, uint16_t prop) { unsigned int i; /* The special Canon EOS property set gets special treatment. */ if ((camera->pl->params.deviceinfo.VendorExtensionID != PTP_VENDOR_CANON) || (vendor != PTP_VENDOR_CANON) ) return 0; for (i=0;ipl->params.nrofcanon_props;i++) if (camera->pl->params.canon_props[i].proptype == prop) return 1; return 0; } struct submenu; #define CONFIG_GET_ARGS Camera *camera, CameraWidget **widget, struct submenu* menu, PTPDevicePropDesc *dpd #define CONFIG_GET_NAMES camera, widget, menu, dpd typedef int (*get_func)(CONFIG_GET_ARGS); #define CONFIG_PUT_ARGS Camera *camera, CameraWidget *widget, PTPPropertyValue *propval, PTPDevicePropDesc *dpd #define CONFIG_PUT_NAMES camera, widget, propval, dpd typedef int (*put_func)(CONFIG_PUT_ARGS); struct menu; #define CONFIG_MENU_GET_ARGS Camera *camera, CameraWidget **widget, struct menu* menu typedef int (*get_menu_func)(CONFIG_MENU_GET_ARGS); #define CONFIG_MENU_PUT_ARGS Camera *camera, CameraWidget *widget typedef int (*put_menu_func)(CONFIG_MENU_PUT_ARGS); struct submenu { char *label; char *name; uint16_t propid; uint16_t vendorid; uint32_t type; /* for 32bit alignment */ get_func getfunc; put_func putfunc; }; struct menu { char *label; char *name; uint16_t usb_vendorid; uint16_t usb_productid; /* Either: Standard menu */ struct submenu *submenus; /* Or: Non-standard menu with custom behaviour */ get_menu_func getfunc; put_menu_func putfunc; }; struct deviceproptableu8 { char *label; uint8_t value; uint16_t vendor_id; }; struct deviceproptableu16 { char *label; uint16_t value; uint16_t vendor_id; }; struct deviceproptablei16 { char *label; int16_t value; uint16_t vendor_id; }; /* Generic helper function for: * * ENUM UINT16 propertiess, with potential vendor specific variables. */ static int _get_Generic16Table(CONFIG_GET_ARGS, struct deviceproptableu16* tbl, int tblsize) { int i, j; int isset = FALSE, isset2 = FALSE; if (!(dpd->FormFlag & (PTP_DPFF_Enumeration|PTP_DPFF_Range))) { GP_LOG_D ("no enumeration/range in 16bit table code... going on"); } if (dpd->DataType != PTP_DTC_UINT16) { GP_LOG_D ("no uint16 prop in 16bit table code"); return (GP_ERROR); } gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (dpd->FormFlag & PTP_DPFF_Enumeration) { if (!dpd->FORM.Enum.NumberOfValues) { /* fill in with all values we have in the table. */ for (j=0;jpl->params.deviceinfo.VendorExtensionID) ) { gp_widget_add_choice (*widget, _(tbl[j].label)); if (tbl[j].value == dpd->CurrentValue.u16) { gp_widget_set_value (*widget, _(tbl[j].label)); isset2 = TRUE; } } } /* fallthrough in case we do not have currentvalue in the table. isset2 = FALSE */ } for (i = 0; iFORM.Enum.NumberOfValues; i++) { isset = FALSE; for (j=0;jFORM.Enum.SupportedValue[i].u16) && ((tbl[j].vendor_id == 0) || (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) ) { gp_widget_add_choice (*widget, _(tbl[j].label)); if (tbl[j].value == dpd->CurrentValue.u16) { isset2 = TRUE; gp_widget_set_value (*widget, _(tbl[j].label)); } isset = TRUE; break; } } if (!isset) { char buf[200]; sprintf(buf, _("Unknown value %04x"), dpd->FORM.Enum.SupportedValue[i].u16); gp_widget_add_choice (*widget, buf); if (dpd->FORM.Enum.SupportedValue[i].u16 == dpd->CurrentValue.u16) { isset2 = TRUE; gp_widget_set_value (*widget, buf); } } } } if (dpd->FormFlag & PTP_DPFF_Range) { for ( i = dpd->FORM.Range.MinimumValue.u16; i<=dpd->FORM.Range.MaximumValue.u16; i+= dpd->FORM.Range.StepSize.u16 ) { isset = FALSE; for (j=0;jpl->params.deviceinfo.VendorExtensionID)) ) { gp_widget_add_choice (*widget, _(tbl[j].label)); if (i == dpd->CurrentValue.u16) { isset2 = TRUE; gp_widget_set_value (*widget, _(tbl[j].label)); } isset = TRUE; break; } } if (!isset) { char buf[200]; sprintf(buf, _("Unknown value %04d"), i); gp_widget_add_choice (*widget, buf); if (i == dpd->CurrentValue.u16) { isset2 = TRUE; gp_widget_set_value (*widget, buf); } } } } if (!isset2) { for (j=0;jpl->params.deviceinfo.VendorExtensionID)) && (tbl[j].value == dpd->CurrentValue.u16) ) { gp_widget_add_choice (*widget, _(tbl[j].label)); isset2 = TRUE; gp_widget_set_value (*widget, _(tbl[j].label)); } } if (!isset2) { char buf[200]; sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u16); gp_widget_add_choice (*widget, buf); gp_widget_set_value (*widget, buf); } } return (GP_OK); } static int _put_Generic16Table(CONFIG_PUT_ARGS, struct deviceproptableu16* tbl, int tblsize) { char *value; int i, intval, j; int foundvalue = 0; uint16_t u16val = 0; CR (gp_widget_get_value (widget, &value)); for (i=0;ipl->params.deviceinfo.VendorExtensionID)) ) { u16val = tbl[i].value; foundvalue = 1; if (dpd->FormFlag & PTP_DPFF_Enumeration) { for (j = 0; jFORM.Enum.NumberOfValues; j++) { if (u16val == dpd->FORM.Enum.SupportedValue[j].u16) { GP_LOG_D ("FOUND right value for %s in the enumeration at val %d", value, u16val); propval->u16 = u16val; return GP_OK; } } GP_LOG_D ("did not find the right value for %s in the enumeration at val %d... continuing", value, u16val); /* continue looking, but with this value as fallback */ } else { GP_LOG_D ("not an enumeration ... return %s as %d", value, u16val); propval->u16 = u16val; return GP_OK; } } } if (foundvalue) { GP_LOG_D ("Using fallback, not found in enum... return %s as %d", value, u16val); propval->u16 = u16val; return GP_OK; } if (!sscanf(value, _("Unknown value %04x"), &intval)) { GP_LOG_E ("failed to find value %s in list", value); return (GP_ERROR); } GP_LOG_D ("Using fallback, not found in enum... return %s as %d", value, u16val); propval->u16 = intval; return GP_OK; } #define GENERIC16TABLE(name,tbl) \ static int \ _get_##name(CONFIG_GET_ARGS) { \ return _get_Generic16Table(CONFIG_GET_NAMES, \ tbl,sizeof(tbl)/sizeof(tbl[0]) \ ); \ } \ \ static int __unused__ \ _put_##name(CONFIG_PUT_ARGS) { \ return _put_Generic16Table(CONFIG_PUT_NAMES, \ tbl,sizeof(tbl)/sizeof(tbl[0]) \ ); \ } static int _get_GenericI16Table(CONFIG_GET_ARGS, struct deviceproptablei16* tbl, int tblsize) { int i, j; int isset = FALSE, isset2 = FALSE; if (!(dpd->FormFlag & (PTP_DPFF_Range|PTP_DPFF_Enumeration))) { GP_LOG_D ("no enumeration/range in 16bit table code"); } if (dpd->DataType != PTP_DTC_INT16) { GP_LOG_D ("no int16 prop in 16bit table code"); return (GP_ERROR); } gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (dpd->FormFlag & PTP_DPFF_Enumeration) { if (!dpd->FORM.Enum.NumberOfValues) { /* fill in with all values we have in the table. */ for (j=0;jpl->params.deviceinfo.VendorExtensionID) ) { gp_widget_add_choice (*widget, _(tbl[j].label)); if (tbl[j].value == dpd->CurrentValue.i16) { gp_widget_set_value (*widget, _(tbl[j].label)); isset2 = TRUE; } } } /* fallthrough */ } for (i = 0; iFORM.Enum.NumberOfValues; i++) { isset = FALSE; for (j=0;jFORM.Enum.SupportedValue[i].i16) && ((tbl[j].vendor_id == 0) || (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) ) { gp_widget_add_choice (*widget, _(tbl[j].label)); if (tbl[j].value == dpd->CurrentValue.i16) { gp_widget_set_value (*widget, _(tbl[j].label)); isset2 = TRUE; } isset = TRUE; break; } } if (!isset) { char buf[200]; sprintf(buf, _("Unknown value %04x"), dpd->FORM.Enum.SupportedValue[i].i16); gp_widget_add_choice (*widget, buf); if (dpd->FORM.Enum.SupportedValue[i].i16 == dpd->CurrentValue.i16) gp_widget_set_value (*widget, buf); } } } if (dpd->FormFlag & PTP_DPFF_Range) { for (i = dpd->FORM.Range.MinimumValue.i16; i<=dpd->FORM.Range.MaximumValue.i16; i+= dpd->FORM.Range.StepSize.i16) { int isset3 = FALSE; for (j=0;jpl->params.deviceinfo.VendorExtensionID)) ) { gp_widget_add_choice (*widget, _(tbl[j].label)); if (i == dpd->CurrentValue.i16) { isset2 = TRUE; gp_widget_set_value (*widget, _(tbl[j].label)); } isset3 = TRUE; break; } } if (!isset3) { char buf[200]; sprintf(buf, _("Unknown value %04d"), i); gp_widget_add_choice (*widget, buf); if (i == dpd->CurrentValue.i16) { isset2 = TRUE; gp_widget_set_value (*widget, buf); } } } } if (!isset2) { char buf[200]; /* if we are not in enum or range mode, but have a value, check our internal table */ for (j=0;jpl->params.deviceinfo.VendorExtensionID)) && (tbl[j].value == dpd->CurrentValue.i16) ) { isset2 = TRUE; gp_widget_add_choice (*widget, _(tbl[j].label)); gp_widget_set_value (*widget, _(tbl[j].label)); break; } } if (!isset2) { sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.i16); gp_widget_add_choice (*widget, buf); gp_widget_set_value (*widget, buf); } } return (GP_OK); } static int _put_GenericI16Table(CONFIG_PUT_ARGS, struct deviceproptablei16* tbl, int tblsize) { char *value; int i, intval; CR (gp_widget_get_value (widget, &value)); for (i=0;ipl->params.deviceinfo.VendorExtensionID)) ) { propval->i16 = tbl[i].value; return GP_OK; } } if (!sscanf(value, _("Unknown value %04d"), &intval)) { GP_LOG_E ("failed to find value %s in list", value); return (GP_ERROR); } propval->i16 = intval; return GP_OK; } #define GENERICI16TABLE(name,tbl) \ static int \ _get_##name(CONFIG_GET_ARGS) { \ return _get_GenericI16Table(CONFIG_GET_NAMES, \ tbl,sizeof(tbl)/sizeof(tbl[0]) \ ); \ } \ \ static int __unused__ \ _put_##name(CONFIG_PUT_ARGS) { \ return _put_GenericI16Table(CONFIG_PUT_NAMES, \ tbl,sizeof(tbl)/sizeof(tbl[0]) \ ); \ } static int _get_Generic8Table(CONFIG_GET_ARGS, struct deviceproptableu8* tbl, int tblsize) { int i, j; int isset = FALSE, isset2 = FALSE; if (dpd->FormFlag & PTP_DPFF_Enumeration) { if ((dpd->DataType != PTP_DTC_UINT8) && (dpd->DataType != PTP_DTC_INT8)) return (GP_ERROR); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (i = 0; iFORM.Enum.NumberOfValues; i++) { isset = FALSE; for (j=0;jFORM.Enum.SupportedValue[i].u8) && ((tbl[j].vendor_id == 0) || (tbl[j].vendor_id == camera->pl->params.deviceinfo.VendorExtensionID)) ) { gp_widget_add_choice (*widget, _(tbl[j].label)); if (tbl[j].value == dpd->CurrentValue.u8) { isset2 = TRUE; gp_widget_set_value (*widget, _(tbl[j].label)); } isset = TRUE; break; } } if (!isset) { char buf[200]; sprintf(buf, _("Unknown value %04x"), dpd->FORM.Enum.SupportedValue[i].u8); gp_widget_add_choice (*widget, buf); if (dpd->FORM.Enum.SupportedValue[i].u8 == dpd->CurrentValue.u8) gp_widget_set_value (*widget, buf); } } if (!isset2) { char buf[200]; sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u8); gp_widget_add_choice (*widget, buf); gp_widget_set_value (*widget, buf); } return (GP_OK); } if (dpd->FormFlag & PTP_DPFF_Range) { if (dpd->DataType != PTP_DTC_UINT8) return (GP_ERROR); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for ( i = dpd->FORM.Range.MinimumValue.u8; i <= dpd->FORM.Range.MaximumValue.u8; i+= dpd->FORM.Range.StepSize.u8 ) { isset = FALSE; for (j=0;jpl->params.deviceinfo.VendorExtensionID)) ) { gp_widget_add_choice (*widget, _(tbl[j].label)); if (tbl[j].value == dpd->CurrentValue.u8) { isset2 = TRUE; gp_widget_set_value (*widget, _(tbl[j].label)); } isset = TRUE; break; } } if (!isset) { char buf[200]; sprintf(buf, _("Unknown value %04x"), i); gp_widget_add_choice (*widget, buf); if (i == dpd->CurrentValue.u8) { isset2 = TRUE; gp_widget_set_value (*widget, buf); } } } if (!isset2) { char buf[200]; sprintf(buf, _("Unknown value %04x"), dpd->CurrentValue.u8); gp_widget_add_choice (*widget, buf); gp_widget_set_value (*widget, buf); } return (GP_OK); } return (GP_ERROR); } static int _put_Generic8Table(CONFIG_PUT_ARGS, struct deviceproptableu8* tbl, int tblsize) { char *value; int i, intval; CR (gp_widget_get_value(widget, &value)); for (i=0;ipl->params.deviceinfo.VendorExtensionID)) ) { propval->u8 = tbl[i].value; return GP_OK; } } if (!sscanf(value, _("Unknown value %04x"), &intval)) return (GP_ERROR); propval->u8 = intval; return GP_OK; } #define GENERIC8TABLE(name,tbl) \ static int \ _get_##name(CONFIG_GET_ARGS) { \ return _get_Generic8Table(CONFIG_GET_NAMES, \ tbl,sizeof(tbl)/sizeof(tbl[0]) \ ); \ } \ \ static int __unused__ \ _put_##name(CONFIG_PUT_ARGS) { \ return _put_Generic8Table(CONFIG_PUT_NAMES, \ tbl,sizeof(tbl)/sizeof(tbl[0]) \ ); \ } static int _get_AUINT8_as_CHAR_ARRAY(CONFIG_GET_ARGS) { unsigned int j; char value[128]; gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (dpd->DataType != PTP_DTC_AUINT8) { sprintf (value,_("unexpected datatype %i"),dpd->DataType); } else { memset(value,0,sizeof(value)); for (j=0;jCurrentValue.a.count;j++) value[j] = dpd->CurrentValue.a.v[j].u8; } gp_widget_set_value (*widget,value); return (GP_OK); } static int _get_STR(CONFIG_GET_ARGS) { char value[64]; gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (dpd->DataType != PTP_DTC_STR) { sprintf (value,_("unexpected datatype %i"),dpd->DataType); gp_widget_set_value (*widget,value); } else { gp_widget_set_value (*widget,dpd->CurrentValue.str); } return (GP_OK); } static int _put_STR(CONFIG_PUT_ARGS) { const char *string; CR (gp_widget_get_value(widget, &string)); C_MEM (propval->str = strdup (string)); return (GP_OK); } static int _put_AUINT8_as_CHAR_ARRAY(CONFIG_PUT_ARGS) { char *value; unsigned int i; CR (gp_widget_get_value(widget, &value)); memset(propval,0,sizeof(PTPPropertyValue)); /* add \0 ? */ C_MEM (propval->a.v = malloc((strlen(value)+1)*sizeof(PTPPropertyValue))); propval->a.count = strlen(value)+1; for (i=0;ia.v[i].u8 = value[i]; return (GP_OK); } static int _get_Range_INT8(CONFIG_GET_ARGS) { float CurrentValue; if (dpd->FormFlag != PTP_DPFF_Range) return (GP_ERROR_NOT_SUPPORTED); if (dpd->DataType != PTP_DTC_INT8) return (GP_ERROR_NOT_SUPPORTED); gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name ( *widget, menu->name); CurrentValue = (float) dpd->CurrentValue.i8; gp_widget_set_range ( *widget, (float) dpd->FORM.Range.MinimumValue.i8, (float) dpd->FORM.Range.MaximumValue.i8, (float) dpd->FORM.Range.StepSize.i8); gp_widget_set_value ( *widget, &CurrentValue); return (GP_OK); } static int _put_Range_INT8(CONFIG_PUT_ARGS) { float f; CR (gp_widget_get_value(widget, &f)); propval->i8 = (int) f; return (GP_OK); } static int _get_Range_UINT8(CONFIG_GET_ARGS) { float CurrentValue; if (dpd->FormFlag != PTP_DPFF_Range) return (GP_ERROR_NOT_SUPPORTED); if (dpd->DataType != PTP_DTC_UINT8) return (GP_ERROR_NOT_SUPPORTED); gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name ( *widget, menu->name); CurrentValue = (float) dpd->CurrentValue.u8; gp_widget_set_range ( *widget, (float) dpd->FORM.Range.MinimumValue.u8, (float) dpd->FORM.Range.MaximumValue.u8, (float) dpd->FORM.Range.StepSize.u8); gp_widget_set_value ( *widget, &CurrentValue); return (GP_OK); } static int _put_Range_UINT8(CONFIG_PUT_ARGS) { float f; CR (gp_widget_get_value(widget, &f)); propval->u8 = (int) f; return (GP_OK); } /* generic int getter */ static int _get_INT(CONFIG_GET_ARGS) { char value[64]; switch (dpd->DataType) { case PTP_DTC_UINT32: sprintf (value, "%u", dpd->CurrentValue.u32 ); break; case PTP_DTC_INT32: sprintf (value, "%d", dpd->CurrentValue.i32 ); break; case PTP_DTC_UINT16: sprintf (value, "%u", dpd->CurrentValue.u16 ); break; case PTP_DTC_INT16: sprintf (value, "%d", dpd->CurrentValue.i16 ); break; case PTP_DTC_UINT8: sprintf (value, "%u", dpd->CurrentValue.u8 ); break; case PTP_DTC_INT8: sprintf (value, "%d", dpd->CurrentValue.i8 ); break; default: sprintf (value,_("unexpected datatype %i"),dpd->DataType); return GP_ERROR; } gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_value (*widget,value); return GP_OK; } static int _put_INT(CONFIG_PUT_ARGS) { char *value; unsigned int u; int i; CR (gp_widget_get_value(widget, &value)); switch (dpd->DataType) { case PTP_DTC_UINT32: case PTP_DTC_UINT16: case PTP_DTC_UINT8: C_PARAMS (1 == sscanf (value, "%u", &u )); break; case PTP_DTC_INT32: case PTP_DTC_INT16: case PTP_DTC_INT8: C_PARAMS (1 == sscanf (value, "%d", &i )); break; default: return GP_ERROR; } switch (dpd->DataType) { case PTP_DTC_UINT32: propval->u32 = u; break; case PTP_DTC_INT32: propval->i32 = i; break; case PTP_DTC_UINT16: propval->u16 = u; break; case PTP_DTC_INT16: propval->i16 = i; break; case PTP_DTC_UINT8: propval->u8 = u; break; case PTP_DTC_INT8: propval->i8 = i; break; } return GP_OK; } static int _get_Nikon_OnOff_UINT8(CONFIG_GET_ARGS) { if (dpd->FormFlag != PTP_DPFF_Range) return (GP_ERROR_NOT_SUPPORTED); if (dpd->DataType != PTP_DTC_UINT8) return (GP_ERROR_NOT_SUPPORTED); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name ( *widget, menu->name); gp_widget_add_choice (*widget,_("On")); gp_widget_add_choice (*widget,_("Off")); gp_widget_set_value ( *widget, (dpd->CurrentValue.u8?_("On"):_("Off"))); return (GP_OK); } static int _put_Nikon_OnOff_UINT8(CONFIG_PUT_ARGS) { char *value; CR (gp_widget_get_value(widget, &value)); if(!strcmp(value,_("On"))) { propval->u8 = 1; return (GP_OK); } if(!strcmp(value,_("Off"))) { propval->u8 = 0; return (GP_OK); } return (GP_ERROR); } static int _get_Nikon_OffOn_UINT8(CONFIG_GET_ARGS) { if (dpd->FormFlag != PTP_DPFF_Range) return (GP_ERROR_NOT_SUPPORTED); if (dpd->DataType != PTP_DTC_UINT8) return (GP_ERROR_NOT_SUPPORTED); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name ( *widget, menu->name); gp_widget_add_choice (*widget,_("On")); gp_widget_add_choice (*widget,_("Off")); gp_widget_set_value ( *widget, (!dpd->CurrentValue.u8?_("On"):_("Off"))); return (GP_OK); } static int _put_Nikon_OffOn_UINT8(CONFIG_PUT_ARGS) { char *value; CR (gp_widget_get_value(widget, &value)); if(!strcmp(value,_("On"))) { propval->u8 = 0; return (GP_OK); } if(!strcmp(value,_("Off"))) { propval->u8 = 1; return (GP_OK); } return (GP_ERROR); } #define PUT_SONY_VALUE_(bits) \ static int \ _put_sony_value_u##bits (PTPParams*params, uint16_t prop, uint##bits##_t value,int useenumorder) { \ GPContext *context = ((PTPData *) params->data)->context; \ PTPDevicePropDesc dpd; \ PTPPropertyValue propval; \ uint32_t origval; \ time_t start,end; \ \ GP_LOG_D("setting 0x%04x to 0x%08x", prop, value); \ \ C_PTP_REP (ptp_generic_getdevicepropdesc (params, prop, &dpd)); \ do { \ origval = dpd.CurrentValue.u##bits; \ /* if it is a ENUM, the camera will walk through the ENUM */ \ if (useenumorder && (dpd.FormFlag & PTP_DPFF_Enumeration)) { \ int i, posorig = -1, posnew = -1; \ \ for (i=0;i posorig) \ propval.u8 = 0x01; \ else \ propval.u8 = 0xff; \ } else { \ if (value > origval) \ propval.u8 = 0x01; \ else \ propval.u8 = 0xff; \ } \ C_PTP_REP (ptp_sony_setdevicecontrolvalueb (params, prop, &propval, PTP_DTC_UINT8 ));\ \ GP_LOG_D ("value is (0x%x vs target 0x%x)", origval, value); \ \ /* we tell the camera to do it, but it takes around 0.7 seconds for the SLT-A58 */ \ time(&start); \ do { \ C_PTP_REP (ptp_sony_getalldevicepropdesc (params)); \ C_PTP_REP (ptp_generic_getdevicepropdesc (params, prop, &dpd)); \ \ if (dpd.CurrentValue.u##bits == value) { \ GP_LOG_D ("Value matched!"); \ break; \ } \ if (dpd.CurrentValue.u##bits != origval) { \ GP_LOG_D ("value changed (0x%x vs 0x%x vs target 0x%x), next step....", dpd.CurrentValue.u##bits, origval, value);\ break; \ } \ \ usleep(200*1000); \ \ time(&end); \ } while (end-start <= 3); \ \ if (dpd.CurrentValue.u##bits == value) { \ GP_LOG_D ("Value matched!"); \ break; \ } \ if (dpd.CurrentValue.u##bits == origval) { \ GP_LOG_D ("value did not change (0x%x vs 0x%x vs target 0x%x), not good ...", dpd.CurrentValue.u##bits, origval, value);\ break; \ } \ } while (1); \ return GP_OK; \ } PUT_SONY_VALUE_(16) /* _put_sony_value_u16 */ PUT_SONY_VALUE_(32) /* _put_sony_value_u32 */ static int _get_CANON_FirmwareVersion(CONFIG_GET_ARGS) { char value[64]; gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (dpd->DataType != PTP_DTC_UINT32) { sprintf (value,_("unexpected datatype %i"),dpd->DataType); } else { uint32_t x = dpd->CurrentValue.u32; sprintf (value,"%d.%d.%d.%d",((x&0xff000000)>>24),((x&0xff0000)>>16),((x&0xff00)>>8),x&0xff); } gp_widget_set_value (*widget,value); return (GP_OK); } static struct deviceproptableu16 whitebalance[] = { { N_("Manual"), 0x0001, 0 }, { N_("Automatic"), 0x0002, 0 }, { N_("One-push Automatic"), 0x0003, 0 }, { N_("Daylight"), 0x0004, 0 }, { N_("Fluorescent"), 0x0005, 0 }, { N_("Tungsten"), 0x0006, 0 }, { N_("Flash"), 0x0007, 0 }, { N_("Cloudy"), 0x8010, PTP_VENDOR_NIKON }, { N_("Shade"), 0x8011, PTP_VENDOR_NIKON }, { N_("Color Temperature"), 0x8012, PTP_VENDOR_NIKON }, { N_("Preset"), 0x8013, PTP_VENDOR_NIKON }, { N_("Fluorescent Lamp 1"), 0x8001, PTP_VENDOR_FUJI }, { N_("Fluorescent Lamp 2"), 0x8002, PTP_VENDOR_FUJI }, { N_("Fluorescent Lamp 3"), 0x8003, PTP_VENDOR_FUJI }, { N_("Fluorescent Lamp 4"), 0x8004, PTP_VENDOR_FUJI }, { N_("Fluorescent Lamp 5"), 0x8005, PTP_VENDOR_FUJI }, { N_("Shade"), 0x8006, PTP_VENDOR_FUJI }, { N_("Choose Color Temperature"),0x8007, PTP_VENDOR_FUJI }, { N_("Preset Custom 1"), 0x8008, PTP_VENDOR_FUJI }, { N_("Preset Custom 2"), 0x8009, PTP_VENDOR_FUJI }, { N_("Preset Custom 3"), 0x800a, PTP_VENDOR_FUJI }, { N_("Preset Custom 4"), 0x800b, PTP_VENDOR_FUJI }, { N_("Preset Custom 5"), 0x800c, PTP_VENDOR_FUJI }, { N_("Shade"), 0x8011, PTP_VENDOR_SONY }, { N_("Cloudy"), 0x8010, PTP_VENDOR_SONY }, { N_("Fluorescent: Warm White"),0x8001, PTP_VENDOR_SONY }, { N_("Fluorescent: Cold White"),0x8002, PTP_VENDOR_SONY }, { N_("Fluorescent: Day White"), 0x8003, PTP_VENDOR_SONY }, { N_("Fluorescent: Daylight"), 0x8004, PTP_VENDOR_SONY }, { N_("Choose Color Temperature"),0x8012, PTP_VENDOR_SONY }, { N_("Preset"), 0x8023, PTP_VENDOR_SONY }, }; GENERIC16TABLE(WhiteBalance,whitebalance) static struct deviceproptableu16 fuji_imageformat[] = { { N_("RAW"), 1, PTP_VENDOR_FUJI }, { N_("JPEG Fine"), 2, PTP_VENDOR_FUJI }, { N_("JPEG Normal"), 3, PTP_VENDOR_FUJI }, { N_("RAW + JPEG Fine"), 4, PTP_VENDOR_FUJI }, { N_("RAW + JPEG Normal"), 5, PTP_VENDOR_FUJI }, }; GENERIC16TABLE(Fuji_ImageFormat,fuji_imageformat) static struct deviceproptableu16 fuji_releasemode[] = { { N_("Single frame"), 1, PTP_VENDOR_FUJI }, { N_("Continuous low speed"), 2, PTP_VENDOR_FUJI }, { N_("Continuous high speed"), 3, PTP_VENDOR_FUJI }, { N_("Self-timer"), 4, PTP_VENDOR_FUJI }, { N_("Mup Mirror up"), 5, PTP_VENDOR_FUJI }, }; GENERIC16TABLE(Fuji_ReleaseMode,fuji_releasemode) static int _get_ImageSize(CONFIG_GET_ARGS) { int j; if (!(dpd->FormFlag & PTP_DPFF_Enumeration)) return(GP_ERROR); if (dpd->DataType != PTP_DTC_STR) return(GP_ERROR); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (j=0;jFORM.Enum.NumberOfValues; j++) { gp_widget_add_choice (*widget,dpd->FORM.Enum.SupportedValue[j].str); } gp_widget_set_value (*widget,dpd->CurrentValue.str); return GP_OK; } static int _put_ImageSize(CONFIG_PUT_ARGS) { char *value; CR (gp_widget_get_value(widget, &value)); C_MEM (propval->str = strdup (value)); return(GP_OK); } static int _get_ExpCompensation(CONFIG_GET_ARGS) { int j; char buf[10]; if (!(dpd->FormFlag & PTP_DPFF_Enumeration)) return GP_ERROR; if (dpd->DataType != PTP_DTC_INT16) return GP_ERROR; gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (j=0;jFORM.Enum.NumberOfValues; j++) { sprintf(buf, "%g", dpd->FORM.Enum.SupportedValue[j].i16/1000.0); gp_widget_add_choice (*widget,buf); } sprintf(buf, "%g", dpd->CurrentValue.i16/1000.0); gp_widget_set_value (*widget,buf); return GP_OK; } static int _put_ExpCompensation(CONFIG_PUT_ARGS) { char *value; float x; CR (gp_widget_get_value(widget, &value)); if (1 != sscanf(value,"%g", &x)) return GP_ERROR; propval->i16 = x*1000.0; return GP_OK ; } static int _put_Sony_ExpCompensation(CONFIG_PUT_ARGS) { int ret; ret = _put_ExpCompensation(CONFIG_PUT_NAMES); if (ret != GP_OK) return ret; return _put_sony_value_u16 (&camera->pl->params, PTP_DPC_ExposureBiasCompensation, propval->i16, 0); } static struct deviceproptableu16 canon_assistlight[] = { { N_("On"), 0x0000, PTP_VENDOR_CANON }, { N_("Off"), 0x0001, PTP_VENDOR_CANON }, }; GENERIC16TABLE(Canon_AssistLight,canon_assistlight) static struct deviceproptableu16 canon_autorotation[] = { { N_("On"), 0x0000, PTP_VENDOR_CANON }, { N_("Off"), 0x0001, PTP_VENDOR_CANON }, }; GENERIC16TABLE(Canon_AutoRotation,canon_autorotation) static struct deviceproptableu16 canon_beepmode[] = { { N_("Off"), 0x00, PTP_VENDOR_CANON }, { N_("On"), 0x01, PTP_VENDOR_CANON }, }; GENERIC16TABLE(Canon_BeepMode,canon_beepmode) static int _get_Canon_ZoomRange(CONFIG_GET_ARGS) { float f, t, b, s; if (!(dpd->FormFlag & PTP_DPFF_Range)) return (GP_ERROR); gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); f = (float)dpd->CurrentValue.u16; b = (float)dpd->FORM.Range.MinimumValue.u16; t = (float)dpd->FORM.Range.MaximumValue.u16; s = (float)dpd->FORM.Range.StepSize.u16; gp_widget_set_range (*widget, b, t, s); gp_widget_set_value (*widget, &f); return (GP_OK); } static int _put_Canon_ZoomRange(CONFIG_PUT_ARGS) { float f; CR (gp_widget_get_value(widget, &f)); propval->u16 = (unsigned short)f; return (GP_OK); } static int _get_Nikon_WBBias(CONFIG_GET_ARGS) { float f, t, b, s; if (dpd->DataType != PTP_DTC_INT8) return (GP_ERROR); if (!(dpd->FormFlag & PTP_DPFF_Range)) return (GP_ERROR); gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); f = (float)dpd->CurrentValue.i8; b = (float)dpd->FORM.Range.MinimumValue.i8; t = (float)dpd->FORM.Range.MaximumValue.i8; s = (float)dpd->FORM.Range.StepSize.i8; gp_widget_set_range (*widget, b, t, s); gp_widget_set_value (*widget, &f); return (GP_OK); } static int _put_Nikon_WBBias(CONFIG_PUT_ARGS) { float f; CR (gp_widget_get_value(widget, &f)); propval->i8 = (signed char)f; return (GP_OK); } static int _get_Nikon_UWBBias(CONFIG_GET_ARGS) { float f, t, b, s; if (dpd->DataType != PTP_DTC_UINT8) return (GP_ERROR); if (!(dpd->FormFlag & PTP_DPFF_Range)) return (GP_ERROR); gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); f = (float)dpd->CurrentValue.u8; b = (float)dpd->FORM.Range.MinimumValue.u8; t = (float)dpd->FORM.Range.MaximumValue.u8; s = (float)dpd->FORM.Range.StepSize.u8; gp_widget_set_range (*widget, b, t, s); gp_widget_set_value (*widget, &f); return (GP_OK); } static int _put_Nikon_UWBBias(CONFIG_PUT_ARGS) { float f; CR (gp_widget_get_value(widget, &f)); propval->u8 = (unsigned char)f; return (GP_OK); } static int _get_Nikon_WBBiasPresetVal(CONFIG_GET_ARGS) { char buf[20]; if (dpd->DataType != PTP_DTC_UINT32) return (GP_ERROR); gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); sprintf (buf, "%d", dpd->CurrentValue.u32); gp_widget_set_value (*widget, buf); return (GP_OK); } static int _get_Nikon_WBBiasPreset(CONFIG_GET_ARGS) { char buf[20]; int i; if (dpd->DataType != PTP_DTC_UINT8) return (GP_ERROR); if (!(dpd->FormFlag & PTP_DPFF_Range)) return (GP_ERROR); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); for (i = dpd->FORM.Range.MinimumValue.u8; i < dpd->FORM.Range.MaximumValue.u8; i++) { sprintf (buf, "%d", i); gp_widget_add_choice (*widget, buf); if (i == dpd->CurrentValue.u8) gp_widget_set_value (*widget, buf); } return (GP_OK); } static int _put_Nikon_WBBiasPreset(CONFIG_PUT_ARGS) { int ret; char *val; CR (gp_widget_get_value(widget, &val)); sscanf (val, "%u", &ret); propval->u8 = ret; return (GP_OK); } static int _get_Nikon_HueAdjustment(CONFIG_GET_ARGS) { float f, t, b, s; if (dpd->DataType != PTP_DTC_INT8) return (GP_ERROR); if (dpd->FormFlag & PTP_DPFF_Range) { gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); f = (float)dpd->CurrentValue.i8; b = (float)dpd->FORM.Range.MinimumValue.i8; t = (float)dpd->FORM.Range.MaximumValue.i8; s = (float)dpd->FORM.Range.StepSize.i8; gp_widget_set_range (*widget, b, t, s); gp_widget_set_value (*widget, &f); return (GP_OK); } if (dpd->FormFlag & PTP_DPFF_Enumeration) { char buf[20]; int i, isset = FALSE; gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); for (i = 0; iFORM.Enum.NumberOfValues; i++) { sprintf (buf, "%d", dpd->FORM.Enum.SupportedValue[i].i8); gp_widget_add_choice (*widget, buf); if (dpd->FORM.Enum.SupportedValue[i].i8 == dpd->CurrentValue.i8) { gp_widget_set_value (*widget, buf); isset = TRUE; } } if (!isset) { sprintf (buf, "%d", dpd->FORM.Enum.SupportedValue[0].i8); gp_widget_set_value (*widget, buf); } return (GP_OK); } return (GP_ERROR); } static int _put_Nikon_HueAdjustment(CONFIG_PUT_ARGS) { if (dpd->FormFlag & PTP_DPFF_Range) { float f = 0.0; CR (gp_widget_get_value(widget, &f)); propval->i8 = (signed char)f; return (GP_OK); } if (dpd->FormFlag & PTP_DPFF_Enumeration) { char *val; int ival; CR (gp_widget_get_value(widget, &val)); sscanf (val, "%d", &ival); propval->i8 = ival; return (GP_OK); } return (GP_ERROR); } static struct deviceproptableu8 canon_quality[] = { { N_("undefined"), 0x00, 0 }, { N_("economy"), 0x01, 0 }, { N_("normal"), 0x02, 0 }, { N_("fine"), 0x03, 0 }, { N_("lossless"), 0x04, 0 }, { N_("superfine"), 0x05, 0 }, }; GENERIC8TABLE(Canon_Quality,canon_quality) static struct deviceproptableu8 canon_fullview_fileformat[] = { { N_("Undefined"), 0x00, 0 }, { N_("JPEG"), 0x01, 0 }, { N_("CRW"), 0x02, 0 }, }; GENERIC8TABLE(Canon_Capture_Format,canon_fullview_fileformat) static struct deviceproptableu8 canon_shootmode[] = { { N_("Auto"), 0x01, 0 }, { N_("TV"), 0x02, 0 }, { N_("AV"), 0x03, 0 }, { N_("Manual"), 0x04, 0 }, { N_("A_DEP"), 0x05, 0 }, { N_("M_DEP"), 0x06, 0 }, { N_("Bulb"), 0x07, 0 }, /* Marcus: The SDK has more listed, but I have never seen them * enumerated by the cameras. Lets leave them out for now. */ }; GENERIC8TABLE(Canon_ShootMode,canon_shootmode) static struct deviceproptableu16 canon_eos_autoexposuremode[] = { { N_("P"), 0x0000, 0 }, { N_("TV"), 0x0001, 0 }, { N_("AV"), 0x0002, 0 }, { N_("Manual"), 0x0003, 0 }, { N_("Bulb"), 0x0004, 0 }, { N_("A_DEP"), 0x0005, 0 }, { N_("DEP"), 0x0006, 0 }, { N_("Custom"), 0x0007, 0 }, { N_("Lock"), 0x0008, 0 }, { N_("Green"), 0x0009, 0 }, { N_("Night Portrait"), 0x000a, 0 }, { N_("Sports"), 0x000b, 0 }, { N_("Portrait"), 0x000c, 0 }, { N_("Landscape"), 0x000d, 0 }, { N_("Closeup"), 0x000e, 0 }, { N_("Flash Off"), 0x000f, 0 }, }; GENERIC16TABLE(Canon_EOS_AutoExposureMode,canon_eos_autoexposuremode) static struct deviceproptableu8 canon_flash[] = { { N_("off"), 0, 0 }, { N_("auto"), 1, 0 }, { N_("on"), 2, 0 }, { N_("red eye suppression"), 3, 0 }, { N_("fill in"), 4, 0 }, { N_("auto + red eye suppression"), 5, 0 }, { N_("on + red eye suppression"), 6, 0 }, }; GENERIC8TABLE(Canon_FlashMode,canon_flash) static struct deviceproptableu8 nikon_internalflashmode[] = { { N_("iTTL"), 0, 0 }, { N_("Manual"), 1, 0 }, { N_("Commander"), 2, 0 }, { N_("Repeating"), 3, 0 }, /* stroboskop */ }; GENERIC8TABLE(Nikon_InternalFlashMode,nikon_internalflashmode) static struct deviceproptableu8 nikon_flashcommandermode[] = { { N_("TTL"), 0, 0 }, { N_("Auto Aperture"), 1, 0 }, { N_("Full Manual"), 2, 0 }, }; GENERIC8TABLE(Nikon_FlashCommanderMode,nikon_flashcommandermode) static struct deviceproptableu8 nikon_flashcommanderpower[] = { { N_("Full"), 0, 0 }, { "1/2", 1, 0 }, { "1/4", 2, 0 }, { "1/8", 3, 0 }, { "1/16", 4, 0 }, { "1/32", 5, 0 }, { "1/64", 6, 0 }, { "1/128", 7, 0 }, }; GENERIC8TABLE(Nikon_FlashCommanderPower,nikon_flashcommanderpower) /* 0xd1d3 */ static struct deviceproptableu8 nikon_flashcommandchannel[] = { { "1", 0, 0 }, { "2", 1, 0 }, { "3", 2, 0 }, { "4", 3, 0 }, }; GENERIC8TABLE(Nikon_FlashCommandChannel,nikon_flashcommandchannel) /* 0xd1d4 */ static struct deviceproptableu8 nikon_flashcommandselfmode[] = { { N_("TTL"), 0, 0 }, { N_("Manual"), 1, 0 }, { N_("Off"), 2, 0 }, }; GENERIC8TABLE(Nikon_FlashCommandSelfMode,nikon_flashcommandselfmode) /* 0xd1d5, 0xd1d8, 0xd1da */ static struct deviceproptableu8 nikon_flashcommandXcompensation[] = { { "-3.0", 0, 0 }, { "-2.7", 1, 0 }, { "-2.3", 2, 0 }, { "-2.0", 3, 0 }, { "-1.7", 4, 0 }, { "-1.3", 5, 0 }, { "-1.0", 6, 0 }, { "-0.7", 7, 0 }, { "-0.3", 8, 0 }, { "0.0", 9, 0 }, { "0.3", 10, 0 }, { "0.7", 11, 0 }, { "1.0", 12, 0 }, { "1.3", 13, 0 }, { "1.7", 14, 0 }, { "2.0", 15, 0 }, { "2.3", 16, 0 }, { "2.7", 17, 0 }, { "3.0", 18, 0 }, }; GENERIC8TABLE(Nikon_FlashCommandXCompensation,nikon_flashcommandXcompensation) /* 0xd1d5, 0xd1d9, 0xd1dc */ static struct deviceproptableu8 nikon_flashcommandXvalue[] = { { N_("Full"), 0, 0 }, { "1/1.3", 1, 0 }, { "1/1.7", 2, 0 }, { "1/2", 3, 0 }, { "1/2.5", 4, 0 }, { "1/3.2", 5, 0 }, { "1/4", 6, 0 }, { "1/5", 7, 0 }, { "1/6.4", 8, 0 }, { "1/8", 9, 0 }, { "1/10", 10, 0 }, { "1/13", 11, 0 }, { "1/16", 12, 0 }, { "1/20", 13, 0 }, { "1/25", 14, 0 }, { "1/32", 15, 0 }, { "1/40", 16, 0 }, { "1/50", 17, 0 }, { "1/64", 18, 0 }, { "1/80", 19, 0 }, { "1/100", 20, 0 }, { "1/128", 21, 0 }, }; GENERIC8TABLE(Nikon_FlashCommandXValue,nikon_flashcommandXvalue) /* 0xd1d7, 0xd1da */ static struct deviceproptableu8 nikon_flashcommandXmode[] = { { N_("TTL"), 0, 0 }, { N_("Auto Aperture"), 1, 0 }, { N_("Manual"), 2, 0 }, { N_("Off"), 3, 0 }, }; GENERIC8TABLE(Nikon_FlashCommandXMode,nikon_flashcommandXmode) static struct deviceproptableu8 nikon_afmode[] = { { N_("AF-S"), 0, 0 }, { N_("AF-C"), 1, 0 }, { N_("AF-A"), 2, 0 }, { N_("MF (fixed)"), 3, 0 }, { N_("MF (selection)"), 4, 0 }, /* more for newer */ }; GENERIC8TABLE(Nikon_AFMode,nikon_afmode) static struct deviceproptableu8 nikon_videomode[] = { { N_("NTSC"), 0, 0 }, { N_("PAL"), 1, 0 }, }; GENERIC8TABLE(Nikon_VideoMode,nikon_videomode) static struct deviceproptableu8 flash_modemanualpower[] = { { N_("Full"), 0x00, 0 }, { "1/2", 0x01, 0 }, { "1/4", 0x02, 0 }, { "1/8", 0x03, 0 }, { "1/16", 0x04, 0 }, { "1/32", 0x05, 0 }, }; GENERIC8TABLE(Nikon_FlashModeManualPower,flash_modemanualpower) static struct deviceproptableu8 canon_meteringmode[] = { { N_("Center-weighted"), 0, 0 }, { N_("Spot"), 1, 0 }, { N_("Average"), 2, 0 }, { N_("Evaluative"), 3, 0 }, { N_("Partial"), 4, 0 }, { N_("Center-weighted average"), 5, 0 }, { N_("Spot metering interlocked with AF frame"), 6, 0 }, { N_("Multi spot"), 7, 0 }, }; GENERIC8TABLE(Canon_MeteringMode,canon_meteringmode) static struct deviceproptableu8 canon_eos_picturestyle[] = { { N_("Standard"), 0x81, 0 }, { N_("Portrait"), 0x82, 0 }, { N_("Landscape"), 0x83, 0 }, { N_("Neutral"), 0x84, 0 }, { N_("Faithful"), 0x85, 0 }, { N_("Monochrome"), 0x86, 0 }, { N_("Auto"), 0x87, 0 }, /*Canon EOS 5D Mark III*/ { N_("User defined 1"), 0x21, 0 }, { N_("User defined 2"), 0x22, 0 }, { N_("User defined 3"), 0x23, 0 }, }; GENERIC8TABLE(Canon_EOS_PictureStyle,canon_eos_picturestyle) static struct deviceproptableu16 canon_shutterspeed[] = { { "auto", 0x0000,0 }, { "bulb", 0x0004,0 }, { "bulb", 0x000c,0 }, { "30", 0x0010,0 }, { "25", 0x0013,0 }, { "20", 0x0014,0 }, /* + 1/3 */ { "20", 0x0015,0 }, { "15", 0x0018,0 }, { "13", 0x001b,0 }, { "10", 0x001c,0 }, { "10", 0x001d,0 }, /* 10.4 */ { "8", 0x0020,0 }, { "6", 0x0023,0 }, /* + 1/3 */ { "6", 0x0024,0 }, { "5", 0x0025,0 }, { "4", 0x0028,0 }, { "3.2", 0x002b,0 }, { "3", 0x002c,0 }, { "2.5", 0x002d,0 }, { "2", 0x0030,0 }, { "1.6", 0x0033,0 }, { "1.5", 0x0034,0 }, { "1.3", 0x0035,0 }, { "1", 0x0038,0 }, { "0.8", 0x003b,0 }, { "0.7", 0x003c,0 }, { "0.6", 0x003d,0 }, { "0.5", 0x0040,0 }, { "0.4", 0x0043,0 }, { "0.3", 0x0044,0 }, { "0.3", 0x0045,0 }, /* 1/3 */ { "1/4", 0x0048,0 }, { "1/5", 0x004b,0 }, { "1/6", 0x004c,0 }, { "1/6", 0x004d,0 }, /* 1/3? */ { "1/8", 0x0050,0 }, { "1/10", 0x0053,0 }, /* 1/3? */ { "1/10", 0x0054,0 }, { "1/13", 0x0055,0 }, { "1/15", 0x0058,0 }, { "1/20", 0x005b,0 }, /* 1/3? */ { "1/20", 0x005c,0 }, { "1/25", 0x005d,0 }, { "1/30", 0x0060,0 }, { "1/40", 0x0063,0 }, { "1/45", 0x0064,0 }, { "1/50", 0x0065,0 }, { "1/60", 0x0068,0 }, { "1/80", 0x006b,0 }, { "1/90", 0x006c,0 }, { "1/100", 0x006d,0 }, { "1/125", 0x0070,0 }, { "1/160", 0x0073,0 }, { "1/180", 0x0074,0 }, { "1/200", 0x0075,0 }, { "1/250", 0x0078,0 }, { "1/320", 0x007b,0 }, { "1/350", 0x007c,0 }, { "1/400", 0x007d,0 }, { "1/500", 0x0080,0 }, { "1/640", 0x0083,0 }, { "1/750", 0x0084,0 }, { "1/800", 0x0085,0 }, { "1/1000", 0x0088,0 }, { "1/1250", 0x008b,0 }, { "1/1500", 0x008c,0 }, { "1/1600", 0x008d,0 }, { "1/2000", 0x0090,0 }, { "1/2500", 0x0093,0 }, { "1/3000", 0x0094,0 }, { "1/3200", 0x0095,0 }, { "1/4000", 0x0098,0 }, { "1/5000", 0x009b,0 }, { "1/6000", 0x009c,0 }, { "1/6400", 0x009d,0 }, { "1/8000", 0x00a0,0 }, }; GENERIC16TABLE(Canon_ShutterSpeed,canon_shutterspeed) static struct deviceproptableu16 canon_focuspoints[] = { { N_("Focusing Point on Center Only, Manual"), 0x1000, 0 }, { N_("Focusing Point on Center Only, Auto"), 0x1001, 0 }, { N_("Multiple Focusing Points (No Specification), Manual"), 0x3000, 0 }, { N_("Multiple Focusing Points, Auto"), 0x3001, 0 }, { N_("Multiple Focusing Points (Right)"), 0x3002, 0 }, { N_("Multiple Focusing Points (Center)"), 0x3003, 0 }, { N_("Multiple Focusing Points (Left)"), 0x3004, 0 }, }; GENERIC16TABLE(Canon_FocusingPoint,canon_focuspoints) static struct deviceproptableu8 canon_size[] = { { N_("Large"), 0x00, 0 }, { N_("Medium 1"), 0x01, 0 }, { N_("Medium 2"), 0x03, 0 }, { N_("Medium 3"), 0x07, 0 }, { N_("Small"), 0x02, 0 }, }; GENERIC8TABLE(Canon_Size,canon_size) static struct deviceproptableu8 sony_size[] = { { N_("Large"), 0x01, 0 }, { N_("Medium"), 0x02, 0 }, { N_("Small"), 0x03, 0 }, }; GENERIC8TABLE(Sony_ImageSize,sony_size) static struct deviceproptableu8 nikon1_size[] = { { N_("Small"), 0x00, 0 }, { N_("Medium"), 0x01, 0 }, { N_("Large"), 0x02, 0 }, }; GENERIC8TABLE(Nikon1_ImageSize,nikon1_size) static struct deviceproptableu8 sony_aspectratio[] = { { N_("16:9"), 0x01, 0 }, { N_("3:2"), 0x02, 0 }, }; GENERIC8TABLE(Sony_AspectRatio,sony_aspectratio) /* actually in 1/10s of a second, but only 3 values in use */ static struct deviceproptableu16 canon_selftimer[] = { { N_("Not used"), 0, 0 }, { N_("10 seconds"), 100, 0 }, { N_("2 seconds"), 20, 0 }, }; GENERIC16TABLE(Canon_SelfTimer,canon_selftimer) /* FIXME: Canon EOS 5D Mark III has more enumerations. Need to determine * what they mean. */ /* actually it is a flag value, 1 = TFT, 2 = PC */ static struct deviceproptableu16 canon_eos_cameraoutput[] = { { N_("Off"), 0, 0 }, /*On 5DM3, LCD/TFT is off, mirror down and optical view finder enabled */ { N_("TFT"), 1, 0 }, { N_("PC"), 2, 0 }, { N_("TFT + PC"), 3, 0 }, /*The below show up as possible on Canon 5D MIII, but unknown what exactly they are */ { N_("Setting 4"), 4, 0 }, { N_("Setting 5"), 5, 0 }, /*5DM3 - Appears to be dup of enum: 1. Probably something else is also enabled. */ { N_("Setting 6"), 6, 0 }, /*5DM3 - Appears to be dup of enum: 2. */ { N_("Setting 7"), 7, 0 }, /*5DM3 - Appears to be dup of enum: 3. */ }; GENERIC16TABLE(Canon_EOS_CameraOutput,canon_eos_cameraoutput) static struct deviceproptableu16 canon_eos_evfrecordtarget[] = { { N_("None"), 0, 0 }, { N_("Card"), 4, 0 }, }; GENERIC16TABLE(Canon_EOS_EVFRecordTarget,canon_eos_evfrecordtarget) /* values currently unknown */ static struct deviceproptableu16 canon_eos_evfmode[] = { { "0", 0, 0 }, { "1", 1, 0 }, }; GENERIC16TABLE(Canon_EOS_EVFMode,canon_eos_evfmode) #if 0 /* reimplement with viewfinder on/off below */ static struct deviceproptableu8 canon_cameraoutput[] = { { N_("Undefined"), 0, 0 }, { N_("LCD"), 1, 0 }, { N_("Video OUT"), 2, 0 }, { N_("Off"), 3, 0 }, }; GENERIC8TABLE(Canon_CameraOutput,canon_cameraoutput) #endif static int _get_Canon_CameraOutput(CONFIG_GET_ARGS) { int i,isset=0; char buf[30]; if (!(dpd->FormFlag & PTP_DPFF_Enumeration)) return (GP_ERROR); if (dpd->DataType != PTP_DTC_UINT8) return (GP_ERROR); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (i=0;iFORM.Enum.NumberOfValues; i++) { char *x; switch (dpd->FORM.Enum.SupportedValue[i].u8) { default:sprintf(buf,_("Unknown %d"),dpd->FORM.Enum.SupportedValue[i].u8); x=buf; break; case 1: x=_("LCD");break; case 2: x=_("Video OUT");break; case 3: x=_("Off");break; } gp_widget_add_choice (*widget,x); if (dpd->FORM.Enum.SupportedValue[i].u8 == dpd->CurrentValue.u8) { gp_widget_set_value (*widget,x); isset = 1; } } if (!isset) { sprintf(buf,_("Unknown %d"),dpd->CurrentValue.u8); gp_widget_set_value (*widget,buf); } return GP_OK; } static int _put_Canon_CameraOutput(CONFIG_PUT_ARGS) { int u, i; char *value; PTPParams *params = &camera->pl->params; CR (gp_widget_get_value(widget, &value)); u = -1; if (!strcmp(value,_("LCD"))) { u = 1; } if (!strcmp(value,_("Video OUT"))) { u = 2; } if (!strcmp(value,_("Off"))) { u = 3; } if (sscanf(value,_("Unknown %d"),&i)) { u = i; } C_PARAMS (u != -1); if ((u==1) || (u==2)) { if (ptp_operation_issupported(params, PTP_OC_CANON_ViewfinderOn)) { if (!params->canon_viewfinder_on) { if (LOG_ON_PTP_E (ptp_canon_viewfinderon (params)) == PTP_RC_OK); params->canon_viewfinder_on=1; } } } if (u==3) { if (ptp_operation_issupported(params, PTP_OC_CANON_ViewfinderOff)) { if (params->canon_viewfinder_on) { if (LOG_ON_PTP_E (ptp_canon_viewfinderoff (params)) == PTP_RC_OK) params->canon_viewfinder_on=0; } } } propval->u8 = u; return GP_OK; } static struct deviceproptableu16 canon_isospeed[] = { { N_("Factory Default"),0xffff, 0 }, { "6", 0x0028, 0 }, { "12", 0x0030, 0 }, { "25", 0x0038, 0 }, { "50", 0x0040, 0 }, { "64", 0x0043, 0 }, { "80", 0x0045, 0 }, { "100", 0x0048, 0 }, { "125", 0x004b, 0 }, { "160", 0x004d, 0 }, { "200", 0x0050, 0 }, { "250", 0x0053, 0 }, { "320", 0x0055, 0 }, { "400", 0x0058, 0 }, { "500", 0x005b, 0 }, { "640", 0x005d, 0 }, { "800", 0x0060, 0 }, { "1000", 0x0063, 0 }, { "1250", 0x0065, 0 }, { "1600", 0x0068, 0 }, { "2000", 0x006b, 0 }, { "2500", 0x006d, 0 }, { "3200", 0x0070, 0 }, { "4000", 0x0073, 0 }, { "5000", 0x0075, 0 }, { "6400", 0x0078, 0 }, { "8000", 0x007b, 0 }, { "10000", 0x007d, 0 }, { "12800", 0x0080, 0 }, { "16000", 0x0083, 0 }, { "20000", 0x0085, 0 }, { "25600", 0x0088, 0 }, { "51200", 0x0090, 0 }, { "102400", 0x0098, 0 }, { N_("Auto"), 0x0000, 0 }, }; GENERIC16TABLE(Canon_ISO,canon_isospeed) /* see ptp-pack.c:ptp_unpack_EOS_ImageFormat */ static struct deviceproptableu16 canon_eos_image_format[] = { { N_("RAW"), 0x0400, 0 }, { N_("mRAW"), 0x1400, 0 }, { N_("sRAW"), 0x2400, 0 }, { N_("Large Fine JPEG"), 0x0300, 0 }, { N_("Large Normal JPEG"), 0x0200, 0 }, { N_("Medium Fine JPEG"), 0x1300, 0 }, { N_("Medium Normal JPEG"), 0x1200, 0 }, { N_("Small Fine JPEG"), 0x2300, 0 }, { N_("Small Normal JPEG"), 0x2200, 0 }, { N_("Small Fine JPEG"), 0xd300, 0 }, { N_("Small Normal JPEG"), 0xd200, 0 }, { N_("Smaller JPEG"), 0xe300, 0 }, { N_("Tiny JPEG"), 0xf300, 0 }, { N_("RAW + Large Fine JPEG"), 0x0403, 0 }, { N_("mRAW + Large Fine JPEG"), 0x1403, 0 }, { N_("sRAW + Large Fine JPEG"), 0x2403, 0 }, { N_("RAW + Medium Fine JPEG"), 0x0413, 0 }, { N_("mRAW + Medium Fine JPEG"), 0x1413, 0 }, { N_("sRAW + Medium Fine JPEG"), 0x2413, 0 }, { N_("RAW + Small Fine JPEG"), 0x0423, 0 }, { N_("RAW + Small Fine JPEG"), 0x04d3, 0 }, /*Canon EOS 5D Mark III*/ { N_("mRAW + Small Fine JPEG"), 0x1423, 0 }, { N_("mRAW + Small Fine JPEG"), 0x14d3, 0 }, /*Canon EOS 5D Mark III*/ { N_("sRAW + Small Fine JPEG"), 0x2423, 0 }, { N_("sRAW + Small Fine JPEG"), 0x24d3, 0 }, /*Canon EOS 5D Mark III*/ { N_("RAW + Large Normal JPEG"), 0x0402, 0 }, { N_("mRAW + Large Normal JPEG"), 0x1402, 0 }, { N_("sRAW + Large Normal JPEG"), 0x2402, 0 }, { N_("RAW + Medium Normal JPEG"), 0x0412, 0 }, { N_("mRAW + Medium Normal JPEG"), 0x1412, 0 }, { N_("sRAW + Medium Normal JPEG"), 0x2412, 0 }, { N_("RAW + Small Normal JPEG"), 0x0422, 0 }, { N_("RAW + Small Normal JPEG"), 0x04d2, 0 }, /*Canon EOS 5D Mark III*/ { N_("mRAW + Small Normal JPEG"), 0x1422, 0 }, { N_("mRAW + Small Normal JPEG"), 0x14d2, 0 }, /*Canon EOS 5D Mark III*/ { N_("sRAW + Small Normal JPEG"), 0x2422, 0 }, { N_("sRAW + Small Normal JPEG"), 0x24d2, 0 }, /*Canon EOS 5D Mark III*/ { N_("RAW + Smaller JPEG"), 0x04e3, 0 }, /*Canon EOS 5D Mark III*/ { N_("mRAW + Smaller JPEG"), 0x14e3, 0 }, /*Canon EOS 5D Mark III*/ { N_("sRAW + Smaller JPEG"), 0x24e3, 0 }, /*Canon EOS 5D Mark III*/ { N_("RAW + Tiny JPEG"), 0x04f3, 0 }, /*Canon EOS 5D Mark III*/ { N_("mRAW + Tiny JPEG"), 0x14f3, 0 }, /*Canon EOS 5D Mark III*/ { N_("sRAW + Tiny JPEG"), 0x24f3, 0 }, /*Canon EOS 5D Mark III*/ /* There are more RAW + 'smallish' JPEG combinations for at least the 5DM3 possible. Axel was simply to lazy to exercise the combinatorial explosion. :-/ */ }; GENERIC16TABLE(Canon_EOS_ImageFormat,canon_eos_image_format) static struct deviceproptableu16 canon_eos_aeb[] = { { N_("off"), 0x0000, 0 }, { "+/- 1/3", 0x0003, 0 }, { "+/- 1/2", 0x0004, 0 }, { "+/- 2/3", 0x0005, 0 }, { "+/- 1", 0x0008, 0 }, { "+/- 1 1/3", 0x000b, 0 }, { "+/- 1 1/2", 0x000c, 0 }, { "+/- 1 2/3", 0x000d, 0 }, { "+/- 2", 0x0010, 0 }, { "+/- 2 1/3", 0x0013, 0 }, { "+/- 2 1/2", 0x0014, 0 }, { "+/- 2 2/3", 0x0015, 0 }, { "+/- 3", 0x0018, 0 }, }; GENERIC16TABLE(Canon_EOS_AEB,canon_eos_aeb) static struct deviceproptableu16 canon_eos_drive_mode[] = { { N_("Single"), 0x0000, 0 }, { N_("Continuous"), 0x0001, 0 }, { N_("Continuous high speed"), 0x0004, 0 }, { N_("Continuous low speed"), 0x0005, 0 }, { N_("Timer 10 sec"), 0x0010, 0 }, { N_("Timer 2 sec"), 0x0011, 0 }, { N_("Single silent"), 0x0013, 0 }, { N_("Continuous silent"), 0x0014, 0 }, }; GENERIC16TABLE(Canon_EOS_DriveMode,canon_eos_drive_mode) static int _get_ISO(CONFIG_GET_ARGS) { int i; if (!(dpd->FormFlag & PTP_DPFF_Enumeration)) return (GP_ERROR); if (dpd->DataType != PTP_DTC_UINT16) return (GP_ERROR); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (i=0;iFORM.Enum.NumberOfValues; i++) { char buf[20]; sprintf(buf,"%d",dpd->FORM.Enum.SupportedValue[i].u16); gp_widget_add_choice (*widget,buf); if (dpd->FORM.Enum.SupportedValue[i].u16 == dpd->CurrentValue.u16) gp_widget_set_value (*widget,buf); } return (GP_OK); } static int _put_ISO(CONFIG_PUT_ARGS) { char *value; unsigned int u; CR (gp_widget_get_value(widget, &value)); if (sscanf(value, "%ud", &u)) { propval->u16 = u; return GP_OK; } return GP_ERROR; } static int _get_ISO32(CONFIG_GET_ARGS) { int i; if (!(dpd->FormFlag & PTP_DPFF_Enumeration)) return GP_ERROR; if (dpd->DataType != PTP_DTC_UINT32) return GP_ERROR; gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (i=0;iFORM.Enum.NumberOfValues; i++) { char buf[20]; sprintf(buf,"%d",dpd->FORM.Enum.SupportedValue[i].u32); gp_widget_add_choice (*widget,buf); if (dpd->FORM.Enum.SupportedValue[i].u32 == dpd->CurrentValue.u32) gp_widget_set_value (*widget,buf); } return GP_OK; } static int _put_ISO32(CONFIG_PUT_ARGS) { char *value; unsigned int u; CR (gp_widget_get_value(widget, &value)); if (sscanf(value, "%ud", &u)) { propval->u32 = u; return GP_OK; } return GP_ERROR; } static int _get_Sony_ISO(CONFIG_GET_ARGS) { int i,isset=0; char buf[50]; if (!(dpd->FormFlag & PTP_DPFF_Enumeration)) return GP_ERROR; if (dpd->DataType != PTP_DTC_UINT32) return GP_ERROR; gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (i=0;iFORM.Enum.NumberOfValues; i++) { if (dpd->FORM.Enum.SupportedValue[i].u32 == 0x00ffffffU) { sprintf(buf,_("Auto ISO")); } else if (dpd->FORM.Enum.SupportedValue[i].u32 == 0x01ffffffU) { sprintf(buf,_("Auto ISO Multi Frame Noise Reduction")); } else { if (dpd->FORM.Enum.SupportedValue[i].u32 & 0xff000000) { sprintf(buf,_("%d Multi Frame Noise Reduction"),dpd->FORM.Enum.SupportedValue[i].u32 & 0xffff); } else { sprintf(buf,"%d",dpd->FORM.Enum.SupportedValue[i].u32); } } gp_widget_add_choice (*widget,buf); if (dpd->FORM.Enum.SupportedValue[i].u32 == dpd->CurrentValue.u32) { isset=1; gp_widget_set_value (*widget,buf); } } if (!isset) { if (dpd->CurrentValue.u32 == 0x00ffffffU) sprintf(buf,_("Auto ISO")); else if (dpd->CurrentValue.u32 == 0x01ffffffU) sprintf(buf,_("Auto ISO Multi Frame Noise Reduction")); else { if (dpd->CurrentValue.u32 & 0xff000000) { sprintf(buf,_("%d Multi Frame Noise Reduction"),dpd->CurrentValue.u32 & 0xffff); } else { sprintf(buf,"%d",dpd->CurrentValue.u32); } } gp_widget_set_value (*widget,buf); } return GP_OK; } static int _put_Sony_ISO(CONFIG_PUT_ARGS) { char *value; uint32_t u; PTPParams *params = &(camera->pl->params); CR (gp_widget_get_value(widget, &value)); if (!strcmp(value,_("Auto ISO"))) { u = 0x00ffffff; goto setiso; } if (!strcmp(value,_("Auto ISO Multi Frame Noise Reduction"))) { u = 0x01ffffff; goto setiso; } if (!sscanf(value, "%ud", &u)) return GP_ERROR; if (strstr(value,_("Multi Frame Noise Reduction"))) u |= 0x10000; setiso: propval->u32 = u; return _put_sony_value_u32(params, PTP_DPC_SONY_ISO, u, 1); } static int _get_Milliseconds(CONFIG_GET_ARGS) { unsigned int i, min, max; if (!(dpd->FormFlag & (PTP_DPFF_Range|PTP_DPFF_Enumeration))) return (GP_ERROR); if ((dpd->DataType != PTP_DTC_UINT32) && (dpd->DataType != PTP_DTC_UINT16)) return (GP_ERROR); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (dpd->FormFlag & PTP_DPFF_Enumeration) { unsigned int t; if (dpd->DataType == PTP_DTC_UINT32) t = dpd->CurrentValue.u32; else t = dpd->CurrentValue.u16; for (i=0;iFORM.Enum.NumberOfValues; i++) { char buf[20]; unsigned int x; if (dpd->DataType == PTP_DTC_UINT32) x = dpd->FORM.Enum.SupportedValue[i].u32; else x = dpd->FORM.Enum.SupportedValue[i].u16; sprintf(buf,"%0.3fs",x/1000.0); gp_widget_add_choice (*widget,buf); if (x == t) gp_widget_set_value (*widget,buf); } } if (dpd->FormFlag & PTP_DPFF_Range) { unsigned int s; if (dpd->DataType == PTP_DTC_UINT32) { min = dpd->FORM.Range.MinimumValue.u32; max = dpd->FORM.Range.MaximumValue.u32; s = dpd->FORM.Range.StepSize.u32; } else { min = dpd->FORM.Range.MinimumValue.u16; max = dpd->FORM.Range.MaximumValue.u16; s = dpd->FORM.Range.StepSize.u16; } for (i=min; i<=max; i+=s) { char buf[20]; sprintf (buf, "%0.3fs", i/1000.0); gp_widget_add_choice (*widget, buf); if ( ((dpd->DataType == PTP_DTC_UINT32) && (dpd->CurrentValue.u32 == i)) || ((dpd->DataType == PTP_DTC_UINT16) && (dpd->CurrentValue.u16 == i)) ) gp_widget_set_value (*widget, buf); } } return GP_OK; } static int _put_Milliseconds(CONFIG_PUT_ARGS) { char *value; float f; CR (gp_widget_get_value(widget, &value)); if (sscanf(value, "%f", &f)) { if (dpd->DataType == PTP_DTC_UINT32) propval->u32 = f*1000; else propval->u16 = f*1000; return GP_OK; } return GP_ERROR; } static int _get_FNumber(CONFIG_GET_ARGS) { int i; GP_LOG_D ("get_FNumber"); if (!(dpd->FormFlag & (PTP_DPFF_Enumeration|PTP_DPFF_Range))) return (GP_ERROR); if (dpd->DataType != PTP_DTC_UINT16) return (GP_ERROR); if (dpd->FormFlag & PTP_DPFF_Enumeration) { gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (i=0;iFORM.Enum.NumberOfValues; i++) { char buf[20]; sprintf(buf,"f/%g",(dpd->FORM.Enum.SupportedValue[i].u16*1.0)/100.0); gp_widget_add_choice (*widget,buf); if (dpd->FORM.Enum.SupportedValue[i].u16 == dpd->CurrentValue.u16) gp_widget_set_value (*widget,buf); } GP_LOG_D ("get_FNumber via enum"); } else { /* Range */ float value_float; gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_range (*widget, dpd->FORM.Range.MinimumValue.u16/100.0, dpd->FORM.Range.MaximumValue.u16/100.0, dpd->FORM.Range.StepSize.u16/100.0 ); value_float = dpd->CurrentValue.u16/100.0; gp_widget_set_value (*widget, &value_float); GP_LOG_D ("get_FNumber via float"); } return GP_OK; } static int _put_FNumber(CONFIG_PUT_ARGS) { int i; if (dpd->FormFlag & PTP_DPFF_Enumeration) { char *value; float f; CR (gp_widget_get_value(widget, &value)); if (strstr (value, "f/") == value) value += strlen("f/"); for (i=0;iFORM.Enum.NumberOfValues; i++) { char buf[20]; sprintf(buf,"%g",(dpd->FORM.Enum.SupportedValue[i].u16*1.0)/100.0); if (!strcmp (buf, value)) { propval->u16 = dpd->FORM.Enum.SupportedValue[i].u16; return GP_OK; } } if (sscanf(value, "%g", &f)) { propval->u16 = f*100; return GP_OK; } } else { /* RANGE uses float */ float fvalue; CR (gp_widget_get_value (widget, &fvalue)); propval->u16 = fvalue*100; return GP_OK; } return GP_ERROR; } static int _put_Sony_FNumber(CONFIG_PUT_ARGS) { float fvalue; PTPParams *params = &(camera->pl->params); CR (gp_widget_get_value (widget, &fvalue)); propval->u16 = fvalue*100; /* probably not used */ return _put_sony_value_u16 (params, PTP_DPC_FNumber, fvalue*100, 0); } static int _get_ExpTime(CONFIG_GET_ARGS) { int i; PTPParams *params = &(camera->pl->params); if (!(dpd->FormFlag & PTP_DPFF_Enumeration)) return (GP_ERROR); if (dpd->DataType != PTP_DTC_UINT32) return (GP_ERROR); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (i=0;iFORM.Enum.NumberOfValues; i++) { char buf[20]; if (params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) { if (dpd->FORM.Enum.SupportedValue[i].u32 == 0xffffffff) { sprintf(buf,_("Bulb")); goto choicefound; } if (dpd->FORM.Enum.SupportedValue[i].u32 == 0xfffffffd) { sprintf(buf,_("Time")); goto choicefound; } } sprintf (buf,_("%0.4fs"), (1.0*dpd->FORM.Enum.SupportedValue[i].u32)/10000.0); choicefound: gp_widget_add_choice (*widget,buf); if (dpd->FORM.Enum.SupportedValue[i].u32 == dpd->CurrentValue.u32) gp_widget_set_value (*widget,buf); } return (GP_OK); } static int _put_ExpTime(CONFIG_PUT_ARGS) { unsigned int i, delta, xval, ival1, ival2, ival3; float val; char *value; PTPParams *params = &(camera->pl->params); CR (gp_widget_get_value (widget, &value)); if (params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) { if (!strcmp(value,_("Bulb"))) { propval->u32 = 0xffffffff; return GP_OK; } if (!strcmp(value,_("Time"))) { propval->u32 = 0xfffffffd; return GP_OK; } } if (sscanf(value,_("%d %d/%d"),&ival1,&ival2,&ival3) == 3) { GP_LOG_D ("%d %d/%d case", ival1, ival2, ival3); val = ((float)ival1) + ((float)ival2/(float)ival3); } else if (sscanf(value,_("%d/%d"),&ival1,&ival2) == 2) { GP_LOG_D ("%d/%d case", ival1, ival2); val = (float)ival1/(float)ival2; } else if (!sscanf(value,_("%f"),&val)) { GP_LOG_E ("failed to parse: %s", value); return (GP_ERROR); } else GP_LOG_D ("%fs case", val); val = val*10000.0; delta = 1000000; xval = val; /* match the closest value */ for (i=0;iFORM.Enum.NumberOfValues; i++) { /*GP_LOG_D ("delta is currently %d, val is %f, supval is %u, abs is %u",delta,val,dpd->FORM.Enum.SupportedValue[i].u32,abs(val - dpd->FORM.Enum.SupportedValue[i].u32));*/ if (abs(val - dpd->FORM.Enum.SupportedValue[i].u32)FORM.Enum.SupportedValue[i].u32; delta = abs(val - dpd->FORM.Enum.SupportedValue[i].u32); } } GP_LOG_D ("value %s is %f, closest match was %d",value,val,xval); propval->u32 = xval; return (GP_OK); } static int _get_Sharpness(CONFIG_GET_ARGS) { int i, min, max, t; if (!(dpd->FormFlag & (PTP_DPFF_Enumeration|PTP_DPFF_Range))) return (GP_ERROR); if ((dpd->DataType != PTP_DTC_UINT8) && (dpd->DataType != PTP_DTC_INT8)) return (GP_ERROR); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (dpd->FormFlag & PTP_DPFF_Range) { int s; if (dpd->DataType == PTP_DTC_UINT8) { min = dpd->FORM.Range.MinimumValue.u8; max = dpd->FORM.Range.MaximumValue.u8; s = dpd->FORM.Range.StepSize.u8; } else { min = dpd->FORM.Range.MinimumValue.i8; max = dpd->FORM.Range.MaximumValue.i8; s = dpd->FORM.Range.StepSize.i8; } for (i=min;i<=max; i+=s) { char buf[20]; sprintf (buf, "%d%%", (i-min)*100/(max-min)); gp_widget_add_choice (*widget, buf); if ( ((dpd->DataType == PTP_DTC_UINT8) && (dpd->CurrentValue.u8 == i)) || ((dpd->DataType == PTP_DTC_INT8) && (dpd->CurrentValue.i8 == i)) ) gp_widget_set_value (*widget, buf); } } if (dpd->FormFlag & PTP_DPFF_Enumeration) { min = 256; max = -256; for (i=0;iFORM.Enum.NumberOfValues; i++) { if (dpd->DataType == PTP_DTC_UINT8) { if (dpd->FORM.Enum.SupportedValue[i].u8 < min) min = dpd->FORM.Enum.SupportedValue[i].u8; if (dpd->FORM.Enum.SupportedValue[i].u8 > max) max = dpd->FORM.Enum.SupportedValue[i].u8; } else { if (dpd->FORM.Enum.SupportedValue[i].i8 < min) min = dpd->FORM.Enum.SupportedValue[i].i8; if (dpd->FORM.Enum.SupportedValue[i].i8 > max) max = dpd->FORM.Enum.SupportedValue[i].i8; } } if (dpd->DataType == PTP_DTC_UINT8) t = dpd->CurrentValue.u8; else t = dpd->CurrentValue.i8; for (i=0;iFORM.Enum.NumberOfValues; i++) { char buf[20]; int x; if (dpd->DataType == PTP_DTC_UINT8) x = dpd->FORM.Enum.SupportedValue[i].u8; else x = dpd->FORM.Enum.SupportedValue[i].i8; sprintf (buf, "%d%%", (x-min)*100/(max-min)); gp_widget_add_choice (*widget, buf); if (t == x) gp_widget_set_value (*widget, buf); } } return (GP_OK); } static int _put_Sharpness(CONFIG_PUT_ARGS) { const char *val; int i, min, max, x; gp_widget_get_value (widget, &val); if (dpd->FormFlag & PTP_DPFF_Enumeration) { min = 256; max = -256; for (i=0;iFORM.Enum.NumberOfValues; i++) { if (dpd->DataType == PTP_DTC_UINT8) { if (dpd->FORM.Enum.SupportedValue[i].u8 < min) min = dpd->FORM.Enum.SupportedValue[i].u8; if (dpd->FORM.Enum.SupportedValue[i].u8 > max) max = dpd->FORM.Enum.SupportedValue[i].u8; } else { if (dpd->FORM.Enum.SupportedValue[i].i8 < min) min = dpd->FORM.Enum.SupportedValue[i].i8; if (dpd->FORM.Enum.SupportedValue[i].i8 > max) max = dpd->FORM.Enum.SupportedValue[i].i8; } } for (i=0;iFORM.Enum.NumberOfValues; i++) { char buf[20]; if (dpd->DataType == PTP_DTC_UINT8) x = dpd->FORM.Enum.SupportedValue[i].u8; else x = dpd->FORM.Enum.SupportedValue[i].i8; sprintf (buf, "%d%%", (x-min)*100/(max-min)); if (!strcmp(buf, val)) { if (dpd->DataType == PTP_DTC_UINT8) propval->u8 = x; else propval->i8 = x; return GP_OK; } } } if (dpd->FormFlag & PTP_DPFF_Range) { int s; if (dpd->DataType == PTP_DTC_UINT8) { min = dpd->FORM.Range.MinimumValue.u8; max = dpd->FORM.Range.MaximumValue.u8; s = dpd->FORM.Range.StepSize.u8; } else { min = dpd->FORM.Range.MinimumValue.i8; max = dpd->FORM.Range.MaximumValue.i8; s = dpd->FORM.Range.StepSize.i8; } for (i=min; i<=max; i+=s) { char buf[20]; sprintf (buf, "%d%%", (i-min)*100/(max-min)); if (strcmp (buf, val)) continue; if (dpd->DataType == PTP_DTC_UINT8) propval->u8 = i; else propval->i8 = i; return GP_OK; } } return GP_ERROR; } static struct deviceproptableu16 exposure_program_modes[] = { { "M", 0x0001, 0 }, { "P", 0x0002, 0 }, { "A", 0x0003, 0 }, { "S", 0x0004, 0 }, { N_("Creative"), 0x0005, 0 }, { N_("Action"), 0x0006, 0 }, { N_("Portrait"), 0x0007, 0 }, { N_("Auto"), 0x8010, PTP_VENDOR_NIKON}, { N_("Portrait"), 0x8011, PTP_VENDOR_NIKON}, { N_("Landscape"), 0x8012, PTP_VENDOR_NIKON}, { N_("Macro"), 0x8013, PTP_VENDOR_NIKON}, { N_("Sports"), 0x8014, PTP_VENDOR_NIKON}, { N_("Night Portrait"), 0x8015, PTP_VENDOR_NIKON}, { N_("Night Landscape"),0x8016, PTP_VENDOR_NIKON}, { N_("Children"), 0x8017, PTP_VENDOR_NIKON}, { N_("Automatic (No Flash)"), 0x8018, PTP_VENDOR_NIKON}, { N_("Intelligent Auto"), 0x8000, PTP_VENDOR_SONY}, { N_("Superior Auto"), 0x8001, PTP_VENDOR_SONY}, { N_("Movie"), 0x8050, PTP_VENDOR_SONY}, { N_("Tele-zoom Cont. Priority AE"), 0x8031, PTP_VENDOR_SONY}, { N_("Sweep Panorama"), 0x8041, PTP_VENDOR_SONY}, { N_("Intelligent Auto Flash Off"), 0x8060, PTP_VENDOR_SONY}, { N_("Sports Action"), 0x8011, PTP_VENDOR_SONY}, { N_("Macro"), 0x8015, PTP_VENDOR_SONY}, { N_("Landscape"), 0x8014, PTP_VENDOR_SONY}, { N_("Sunset"), 0x8012, PTP_VENDOR_SONY}, { N_("Night Scene"), 0x8013, PTP_VENDOR_SONY}, { N_("Hand-held Twilight"), 0x8016, PTP_VENDOR_SONY}, { N_("Night Portrait"), 0x8017, PTP_VENDOR_SONY}, { N_("Picture Effect"), 0x8070, PTP_VENDOR_SONY}, }; GENERIC16TABLE(ExposureProgram,exposure_program_modes) static struct deviceproptableu8 nikon_scenemode[] = { { N_("Night landscape"), 0, 0 }, { N_("Party/Indoor"), 1, 0 }, { N_("Beach/Snow"), 2, 0 }, { N_("Sunset"), 3, 0 }, { N_("Dusk/Dawn"), 4, 0 }, { N_("Pet Portrait"), 5, 0 }, { N_("Candlelight"), 6, 0 }, { N_("Blossom"), 7, 0 }, { N_("Autumn colors"), 8, 0 }, { N_("Food"), 9, 0 }, /* ? */ { N_("Portrait"), 13, 0 }, { N_("Landscape"), 14, 0 }, { N_("Child"), 15, 0 }, { N_("Sports"), 16, 0 }, { N_("Close up"), 17, 0 }, { N_("Night Portrait"), 18, 0 }, }; GENERIC8TABLE(NIKON_SceneMode,nikon_scenemode); /* Nikon 1 S1 specials in here */ static struct deviceproptableu8 nikon_1_j3_iso[] = { /* values from a J3 */ { N_("A6400 (160-6400)"), 0x01, 0 }, { N_("A3200 (160-3200)"), 0x02, 0 }, { N_("A800 (160-800)"), 0x03, 0 }, /* these same same for all 1 */ { "100", 0x0a, 0 }, { "110", 0x0b, 0 }, { "125", 0x0c, 0 }, { "140", 0x0d, 0 }, { "160", 0x0e, 0 }, { "180", 0x0f, 0 }, { "200", 0x10, 0 }, { "220", 0x11, 0 }, { "250", 0x12, 0 }, { "280", 0x13, 0 }, { "320", 0x14, 0 }, { "360", 0x15, 0 }, { "400", 0x16, 0 }, { "400", 0x16, 0 }, { "450", 0x17, 0 }, { "500", 0x18, 0 }, { "560", 0x19, 0 }, { "640", 0x1a, 0 }, { "720", 0x1b, 0 }, { "800", 0x1c, 0 }, { "900", 0x1d, 0 }, { "1000", 0x1e, 0 }, { "1100", 0x1f, 0 }, { "1250", 0x20, 0 }, { "1400", 0x21, 0 }, { "1600", 0x22, 0 }, { "1800", 0x23, 0 }, { "2000", 0x24, 0 }, { "2200", 0x25, 0 }, { "2500", 0x26, 0 }, { "2800", 0x27, 0 }, { "3200", 0x28, 0 }, { "6400", 0x2e, 0 }, /* more unknown values */ }; GENERIC8TABLE(Nikon_1_J3_ISO,nikon_1_j3_iso); /* Nikon 1 S1 specials in here */ static struct deviceproptableu8 nikon_1_s1_iso[] = { { "100", 0x0a, 0 }, { "110", 0x0b, 0 }, { "125", 0x0c, 0 }, { "140", 0x0d, 0 }, { "160", 0x0e, 0 }, { "180", 0x0f, 0 }, { "200", 0x10, 0 }, { "220", 0x11, 0 }, { "250", 0x12, 0 }, { "280", 0x13, 0 }, { "320", 0x14, 0 }, { "360", 0x15, 0 }, { "400", 0x16, 0 }, { "450", 0x17, 0 }, { "500", 0x18, 0 }, { "560", 0x19, 0 }, { "640", 0x1a, 0 }, { "720", 0x1b, 0 }, { "800", 0x1c, 0 }, { "900", 0x1d, 0 }, { "1000", 0x1e, 0 }, { "1100", 0x1f, 0 }, { "1250", 0x20, 0 }, { "1400", 0x21, 0 }, { "1600", 0x22, 0 }, { "1800", 0x23, 0 }, { "2000", 0x24, 0 }, { "2200", 0x25, 0 }, { "2500", 0x26, 0 }, { "2800", 0x27, 0 }, { "3200", 0x28, 0 }, { "6400", 0x2e, 0 }, }; GENERIC8TABLE(Nikon_1_S1_ISO,nikon_1_s1_iso); /* Generic Nikon 1 ISO */ static struct deviceproptableu8 nikon_1_iso[] = { { "100", 0x0a, 0 }, { "110", 0x0b, 0 }, { "125", 0x0c, 0 }, { "140", 0x0d, 0 }, { "160", 0x0e, 0 }, { "180", 0x0f, 0 }, { "200", 0x10, 0 }, { "220", 0x11, 0 }, { "250", 0x12, 0 }, { "280", 0x13, 0 }, { "320", 0x14, 0 }, { "360", 0x15, 0 }, { "400", 0x16, 0 }, { "450", 0x17, 0 }, { "500", 0x18, 0 }, { "560", 0x19, 0 }, { "640", 0x1a, 0 }, { "720", 0x1b, 0 }, { "800", 0x1c, 0 }, { "900", 0x1d, 0 }, { "1000", 0x1e, 0 }, { "1100", 0x1f, 0 }, { "1250", 0x20, 0 }, { "1400", 0x21, 0 }, { "1600", 0x22, 0 }, { "1800", 0x23, 0 }, { "2000", 0x24, 0 }, { "2200", 0x25, 0 }, { "2500", 0x26, 0 }, { "2800", 0x27, 0 }, { "3200", 0x28, 0 }, { "6400", 0x2e, 0 }, }; GENERIC8TABLE(Nikon_1_ISO,nikon_1_iso); static struct deviceproptableu8 nikon_1_whitebalance[] = { /* values from a J3 */ { N_("Auto"), 0x00, 0 }, { N_("Tungsten"), 0x01, 0 }, { N_("Flourescent"), 0x02, 0 }, { N_("Daylight"), 0x03, 0 }, { N_("Flash"), 0x04, 0 }, { N_("Cloudy"), 0x05, 0 }, { N_("Shade"), 0x06, 0 }, /* these are not in the enum range on the j3 ... but reported? */ { N_("Water"), 0x0a, 0 }, { N_("Preset"), 0x08, 0 }, }; GENERIC8TABLE(Nikon_1_WhiteBalance,nikon_1_whitebalance); static struct deviceproptableu8 nikon_hdrhighdynamic[] = { { N_("Auto"), 0, 0 }, { N_("1 EV"), 1, 0 }, { N_("2 EV"), 2, 0 }, { N_("3 EV"), 3, 0 }, }; GENERIC8TABLE(Nikon_HDRHighDynamic,nikon_hdrhighdynamic); static struct deviceproptableu8 nikon_hdrsmoothing[] = { { N_("Auto"), 3, 0 }, { N_("Low"), 2, 0 }, { N_("Normal"), 1, 0 }, { N_("High"), 0, 0 }, { N_("Extra high"), 4, 0 }, }; GENERIC8TABLE(Nikon_HDRSmoothing,nikon_hdrsmoothing); static struct deviceproptableu16 nikon_d7100_exposure_program_modes[] = { { "M", 0x0001, 0 }, { "P", 0x0002, 0 }, { "A", 0x0003, 0 }, { "S", 0x0004, 0 }, { N_("Auto"), 0x8010, PTP_VENDOR_NIKON}, { N_("Portrait"), 0x8011, PTP_VENDOR_NIKON}, { N_("Landscape"), 0x8012, PTP_VENDOR_NIKON}, { N_("Macro"), 0x8013, PTP_VENDOR_NIKON}, { N_("Sports"), 0x8014, PTP_VENDOR_NIKON}, { N_("No Flash"), 0x8016, PTP_VENDOR_NIKON}, { N_("Children"), 0x8017, PTP_VENDOR_NIKON}, { N_("Scene"), 0x8018, PTP_VENDOR_NIKON}, { N_("Effects"), 0x8019, PTP_VENDOR_NIKON}, { N_("U1"), 0x8050, PTP_VENDOR_NIKON}, { N_("U2"), 0x8051, PTP_VENDOR_NIKON}, }; GENERIC16TABLE(NIKON_D7100_ExposureProgram,nikon_d7100_exposure_program_modes) static struct deviceproptableu16 nikon_d5100_exposure_program_modes[] = { { "M", 0x0001, 0 }, { "P", 0x0002, 0 }, { "A", 0x0003, 0 }, { "S", 0x0004, 0 }, { N_("Auto"), 0x8010, PTP_VENDOR_NIKON}, { N_("Portrait"), 0x8011, PTP_VENDOR_NIKON}, { N_("Landscape"), 0x8012, PTP_VENDOR_NIKON}, { N_("Macro"), 0x8013, PTP_VENDOR_NIKON}, { N_("Sports"), 0x8014, PTP_VENDOR_NIKON}, { N_("No Flash"), 0x8016, PTP_VENDOR_NIKON}, { N_("Children"), 0x8017, PTP_VENDOR_NIKON}, { N_("Scene"), 0x8018, PTP_VENDOR_NIKON}, { N_("Effects"), 0x8019, PTP_VENDOR_NIKON}, }; GENERIC16TABLE(NIKON_D5100_ExposureProgram,nikon_d5100_exposure_program_modes) static struct deviceproptableu8 nikon_1_exposure_program_modes[] = { { "P", 0x00, 0 }, { "S", 0x01, 0 }, { "A", 0x02, 0 }, { "M", 0x03, 0 }, { N_("Night Landscape"),0x04, 0 }, { N_("Night Portrait"), 0x05, 0 }, { N_("Back Light"), 0x06, 0 }, { N_("Panorama"), 0x07, 0 }, { N_("Smoothing"), 0x08, 0 }, { N_("Tilt-Shift"), 0x09, 0 }, { N_("Select Color"), 0x0a, 0 }, }; GENERIC8TABLE(NIKON_1_ExposureProgram,nikon_1_exposure_program_modes) static struct deviceproptableu16 capture_mode[] = { { N_("Single Shot"), 0x0001, 0 }, { N_("Burst"), 0x0002, 0 }, { N_("Timelapse"), 0x0003, 0 }, { N_("Continuous Low Speed"), 0x8010, PTP_VENDOR_NIKON}, { N_("Timer"), 0x8011, PTP_VENDOR_NIKON}, { N_("Mirror Up"), 0x8012, PTP_VENDOR_NIKON}, { N_("Remote"), 0x8013, PTP_VENDOR_NIKON}, { N_("Quick Response Remote"), 0x8014, PTP_VENDOR_NIKON}, /* others nikons */ { N_("Delayed Remote"), 0x8015, PTP_VENDOR_NIKON}, /* d90 */ { N_("Quiet Release"), 0x8016, PTP_VENDOR_NIKON}, /* d5000 */ { N_("Continuous Low Speed"), 0x8012, PTP_VENDOR_SONY}, { N_("Selftimer 2s"), 0x8005, PTP_VENDOR_SONY}, { N_("Selftimer 10s"), 0x8004, PTP_VENDOR_SONY}, { N_("Bracketing C 0.3 Steps"), 0x8337, PTP_VENDOR_SONY}, { N_("Bracketing C 0.7 Steps"), 0x8377, PTP_VENDOR_SONY}, { N_("Bracketing C 1.0 Steps"), 0x8311, PTP_VENDOR_SONY}, { N_("Bracketing C 2.0 Steps"), 0x8321, PTP_VENDOR_SONY}, { N_("Bracketing C 3.0 Steps"), 0x8331, PTP_VENDOR_SONY}, { N_("Bracketing S 0.3 Steps"), 0x8336, PTP_VENDOR_SONY}, { N_("Bracketing S 0.7 Steps"), 0x8376, PTP_VENDOR_SONY}, { N_("Bracketing S 1.0 Steps"), 0x8310, PTP_VENDOR_SONY}, { N_("Bracketing S 2.0 Steps"), 0x8320, PTP_VENDOR_SONY}, { N_("Bracketing S 3.0 Steps"), 0x8330, PTP_VENDOR_SONY}, { N_("Bracketing WB Lo"), 0x8018, PTP_VENDOR_SONY}, { N_("Bracketing WB Hi"), 0x8028, PTP_VENDOR_SONY}, /* { N_("Continuous"), 0x8001, PTP_VENDOR_CASIO}, { N_("Prerecord"), 0x8002, PTP_VENDOR_CASIO}, */ }; GENERIC16TABLE(CaptureMode,capture_mode) static struct deviceproptableu16 focus_metering[] = { { N_("Centre-spot"), 0x0001, 0 }, { N_("Multi-spot"), 0x0002, 0 }, { N_("Single Area"), 0x8010, PTP_VENDOR_NIKON}, { N_("Closest Subject"),0x8011, PTP_VENDOR_NIKON}, { N_("Group Dynamic"), 0x8012, PTP_VENDOR_NIKON}, { N_("Single-area AF"), 0x8001, PTP_VENDOR_FUJI}, { N_("Dynamic-area AF"),0x8002, PTP_VENDOR_FUJI}, { N_("Group-dynamic AF"),0x8003, PTP_VENDOR_FUJI}, { N_("Dynamic-area AF with closest subject priority"),0x8004, PTP_VENDOR_FUJI}, }; GENERIC16TABLE(FocusMetering,focus_metering) static struct deviceproptableu16 nikon_d7100_focus_metering[] = { { N_("Auto"),0x8011, PTP_VENDOR_NIKON}, { N_("Single Area"), 0x8010, PTP_VENDOR_NIKON}, { N_("Dynamic Area (9)"), 0x0002, 0 }, { N_("Dynamic Area (21)"), 0x8013, PTP_VENDOR_NIKON}, { N_("Dynamic Area (51)"), 0x8014, PTP_VENDOR_NIKON}, { N_("3D Tracking"), 0x8012, PTP_VENDOR_NIKON}, }; GENERIC16TABLE(Nikon_D7100_FocusMetering,nikon_d7100_focus_metering) static struct deviceproptableu8 nikon_colormodel[] = { { N_("sRGB (portrait)"),0x00, 0 }, { N_("AdobeRGB"), 0x01, 0 }, { N_("sRGB (nature)"), 0x02, 0 }, }; GENERIC8TABLE(Nikon_ColorModel,nikon_colormodel) static struct deviceproptableu8 nikon_colorspace[] = { { N_("sRGB"), 0x00, 0 }, { N_("AdobeRGB"), 0x01, 0 }, }; GENERIC8TABLE(Nikon_ColorSpace,nikon_colorspace) static struct deviceproptableu16 canon_eos_colorspace[] = { { N_("sRGB"), 0x01, 0 }, { N_("AdobeRGB"), 0x02, 0 }, }; GENERIC16TABLE(Canon_EOS_ColorSpace,canon_eos_colorspace) static struct deviceproptableu8 nikon_evstep[] = { { "1/3", 0, 0 }, { "1/2", 1, 0 }, }; GENERIC8TABLE(Nikon_EVStep,nikon_evstep) static struct deviceproptableu8 nikon_orientation[] = { { "0'", 0, 0 }, { "270'", 1, 0 }, { "90'", 2, 0 }, { "180'", 3, 0 }, }; GENERIC8TABLE(Nikon_CameraOrientation,nikon_orientation) static struct deviceproptableu16 canon_orientation[] = { { "0'", 0, 0 }, { "90'", 1, 0 }, { "180'", 2, 0 }, { "270'", 3, 0 }, }; static int _get_Canon_CameraOrientation(CONFIG_GET_ARGS) { char orient[50]; /* needs also to fit the translated string */ int i; if (dpd->DataType != PTP_DTC_UINT16) return (GP_ERROR); gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (i=0;iCurrentValue.u16) continue; gp_widget_set_value (*widget, canon_orientation[i].label); return GP_OK; } sprintf (orient, _("Unknown value 0x%04x"), dpd->CurrentValue.u16); gp_widget_set_value (*widget, orient); return GP_OK; } static int _get_Nikon_AngleLevel(CONFIG_GET_ARGS) { char orient[20]; if (dpd->DataType != PTP_DTC_INT32) return (GP_ERROR); gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); sprintf (orient, "%.f'", dpd->CurrentValue.i32/65536.0); gp_widget_set_value (*widget, orient); return GP_OK; } static struct deviceproptableu8 nikon_afsensor[] = { { N_("Centre"), 0x00, 0 }, { N_("Top"), 0x01, 0 }, { N_("Bottom"), 0x02, 0 }, { N_("Left"), 0x03, 0 }, { N_("Right"), 0x04, 0 }, }; GENERIC8TABLE(Nikon_AutofocusArea,nikon_afsensor) static struct deviceproptableu16 exposure_metering[] = { { N_("Average"), 0x0001, 0 }, { N_("Center Weighted"),0x0002, 0 }, { N_("Multi Spot"), 0x0003, 0 }, { N_("Center Spot"), 0x0004, 0 }, { N_("Spot"), 0x8001, PTP_VENDOR_FUJI }, }; GENERIC16TABLE(ExposureMetering,exposure_metering) static struct deviceproptableu16 flash_mode[] = { { N_("Automatic Flash"), 0x0001, 0 }, { N_("Flash off"), 0x0002, 0 }, { N_("Fill flash"), 0x0003, 0 }, { N_("Red-eye automatic"), 0x0004, 0 }, { N_("Red-eye fill"), 0x0005, 0 }, { N_("External sync"), 0x0006, 0 }, { N_("Auto"), 0x8010, PTP_VENDOR_NIKON}, { N_("Auto Slow Sync"), 0x8011, PTP_VENDOR_NIKON}, { N_("Rear Curtain Sync + Slow Sync"), 0x8012, PTP_VENDOR_NIKON}, { N_("Red-eye Reduction + Slow Sync"), 0x8013, PTP_VENDOR_NIKON}, { N_("Front-curtain sync"), 0x8001, PTP_VENDOR_FUJI}, { N_("Red-eye reduction"), 0x8002, PTP_VENDOR_FUJI}, { N_("Red-eye reduction with slow sync"), 0x8003, PTP_VENDOR_FUJI}, { N_("Slow sync"), 0x8004, PTP_VENDOR_FUJI}, { N_("Rear-curtain with slow sync"), 0x8005, PTP_VENDOR_FUJI}, { N_("Rear-curtain sync"), 0x8006, PTP_VENDOR_FUJI}, { N_("Rear Curtain Sync"), 0x8003, PTP_VENDOR_SONY}, { N_("Wireless Sync"), 0x8004, PTP_VENDOR_SONY}, { N_("Slow Sync"), 0x8032, PTP_VENDOR_SONY}, }; GENERIC16TABLE(FlashMode,flash_mode) static struct deviceproptableu16 effect_modes[] = { { N_("Standard"), 0x0001, 0 }, { N_("Black & White"), 0x0002, 0 }, { N_("Sepia"), 0x0003, 0 }, }; GENERIC16TABLE(EffectMode,effect_modes) static struct deviceproptableu8 nikon_effect_modes[] = { { N_("Night Vision"), 0x00, 0 }, { N_("Color sketch"), 0x01, 0 }, { N_("Miniature effect"), 0x02, 0 }, { N_("Selective color"), 0x03, 0 }, { N_("Silhouette"), 0x04, 0 }, { N_("High key"), 0x05, 0 }, { N_("Low key"), 0x06, 0 }, }; GENERIC8TABLE(NIKON_EffectMode,nikon_effect_modes) static int _get_FocalLength(CONFIG_GET_ARGS) { float value_float , start=0.0, end=0.0, step=0.0; int i; if (!(dpd->FormFlag & (PTP_DPFF_Range|PTP_DPFF_Enumeration))) return (GP_ERROR); if (dpd->DataType != PTP_DTC_UINT32) return (GP_ERROR); gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (dpd->FormFlag & PTP_DPFF_Enumeration) { /* Find the range we need. */ start = 10000.0; end = 0.0; for (i = 0; iFORM.Enum.NumberOfValues; i++) { float cur = dpd->FORM.Enum.SupportedValue[i].u32 / 100.0; if (cur < start) start = cur; if (cur > end) end = cur; } step = 1.0; } if (dpd->FormFlag & PTP_DPFF_Range) { start = dpd->FORM.Range.MinimumValue.u32/100.0; end = dpd->FORM.Range.MaximumValue.u32/100.0; step = dpd->FORM.Range.StepSize.u32/100.0; } gp_widget_set_range (*widget, start, end, step); value_float = dpd->CurrentValue.u32/100.0; gp_widget_set_value (*widget, &value_float); return (GP_OK); } static int _put_FocalLength(CONFIG_PUT_ARGS) { int i; float value_float; uint32_t curdiff, newval; CR (gp_widget_get_value (widget, &value_float)); propval->u32 = 100*value_float; if (dpd->FormFlag & PTP_DPFF_Range) return GP_OK; /* If FocalLength is enumerated, we need to hit the * values exactly, otherwise nothing will happen. * (problem encountered on my Nikon P2) */ curdiff = 10000; newval = propval->u32; for (i = 0; iFORM.Enum.NumberOfValues; i++) { uint32_t diff = abs(dpd->FORM.Enum.SupportedValue[i].u32 - propval->u32); if (diff < curdiff) { newval = dpd->FORM.Enum.SupportedValue[i].u32; curdiff = diff; } } propval->u32 = newval; return GP_OK; } static int _get_FocusDistance(CONFIG_GET_ARGS) { if (!(dpd->FormFlag & (PTP_DPFF_Range|PTP_DPFF_Enumeration))) return (GP_ERROR); if (dpd->DataType != PTP_DTC_UINT16) return (GP_ERROR); if (dpd->FormFlag & PTP_DPFF_Enumeration) { int i, valset = 0; char buf[200]; gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (i = 0; iFORM.Enum.NumberOfValues; i++) { if (dpd->FORM.Enum.SupportedValue[i].u16 == 0xFFFF) strcpy (buf, _("infinite")); else sprintf (buf, _("%d mm"), dpd->FORM.Enum.SupportedValue[i].u16); gp_widget_add_choice (*widget,buf); if (dpd->CurrentValue.u16 == dpd->FORM.Enum.SupportedValue[i].u16) { gp_widget_set_value (*widget, buf); valset = 1; } } if (!valset) { sprintf (buf, _("%d mm"), dpd->CurrentValue.u16); gp_widget_set_value (*widget, buf); } } if (dpd->FormFlag & PTP_DPFF_Range) { float value_float , start=0.0, end=0.0, step=0.0; gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); start = dpd->FORM.Range.MinimumValue.u16/100.0; end = dpd->FORM.Range.MaximumValue.u16/100.0; step = dpd->FORM.Range.StepSize.u16/100.0; gp_widget_set_range (*widget, start, end, step); value_float = dpd->CurrentValue.u16/100.0; gp_widget_set_value (*widget, &value_float); } return GP_OK; } static int _put_FocusDistance(CONFIG_PUT_ARGS) { int val; const char *value_str; if (dpd->FormFlag & PTP_DPFF_Range) { float value_float; CR (gp_widget_get_value (widget, &value_float)); propval->u16 = value_float; return GP_OK; } /* else ENUMeration */ CR (gp_widget_get_value (widget, &value_str)); if (!strcmp (value_str, _("infinite"))) { propval->u16 = 0xFFFF; return GP_OK; } C_PARAMS (sscanf(value_str, _("%d mm"), &val)); propval->u16 = val; return GP_OK; } static int _get_Nikon_ShutterSpeed(CONFIG_GET_ARGS) { int i, valset = 0; char buf[200]; int x,y; if (dpd->DataType != PTP_DTC_UINT32) return (GP_ERROR); if (!(dpd->FormFlag & PTP_DPFF_Enumeration)) return (GP_ERROR); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (i = 0; iFORM.Enum.NumberOfValues; i++) { if (dpd->FORM.Enum.SupportedValue[i].u32 == 0xffffffff) { sprintf(buf,_("Bulb")); goto choicefound; } if (dpd->FORM.Enum.SupportedValue[i].u32 == 0xfffffffe) { sprintf(buf,_("x 200")); goto choicefound; } if (dpd->FORM.Enum.SupportedValue[i].u32 == 0xfffffffd) { sprintf(buf,_("Time")); goto choicefound; } x = dpd->FORM.Enum.SupportedValue[i].u32>>16; y = dpd->FORM.Enum.SupportedValue[i].u32&0xffff; if (y == 1) { /* x/1 */ sprintf (buf, "%d", x); } else { sprintf (buf, "%d/%d",x,y); } choicefound: gp_widget_add_choice (*widget,buf); if (dpd->CurrentValue.u32 == dpd->FORM.Enum.SupportedValue[i].u32) { gp_widget_set_value (*widget, buf); valset = 1; } } if (!valset) { x = dpd->CurrentValue.u32>>16; y = dpd->CurrentValue.u32&0xffff; if (y == 1) { sprintf (buf, "%d",x); } else { sprintf (buf, "%d/%d",x,y); } gp_widget_set_value (*widget, buf); } return GP_OK; } static int _put_Nikon_ShutterSpeed(CONFIG_PUT_ARGS) { int x,y; const char *value_str; gp_widget_get_value (widget, &value_str); if (!strcmp(value_str,_("Bulb"))) { propval->u32 = 0xffffffff; return GP_OK; } if (!strcmp(value_str,_("x 200"))) { propval->u32 = 0xfffffffe; return GP_OK; } if (!strcmp(value_str,_("Time"))) { propval->u32 = 0xfffffffd; return GP_OK; } if (strchr(value_str, '/')) { if (2 != sscanf (value_str, "%d/%d", &x, &y)) return GP_ERROR; } else { if (!sscanf (value_str, "%d", &x)) return GP_ERROR; y = 1; } propval->u32 = (x<<16) | y; return GP_OK; } static int _get_Sony_ShutterSpeed(CONFIG_GET_ARGS) { int x,y; char buf[20]; if (dpd->DataType != PTP_DTC_UINT32) return GP_ERROR; gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (dpd->CurrentValue.u32 == 0) { strcpy(buf,_("Bulb")); } else { x = dpd->CurrentValue.u32>>16; y = dpd->CurrentValue.u32&0xffff; if (y == 1) sprintf (buf, "%d",x); else sprintf (buf, "%d/%d",x,y); } gp_widget_set_value (*widget, buf); return GP_OK; } static int _put_Sony_ShutterSpeed(CONFIG_PUT_ARGS) { int x,y,a,b; const char *val; float old,new; PTPPropertyValue value; uint32_t new32, origval; PTPParams *params = &(camera->pl->params); GPContext *context = ((PTPData *) params->data)->context; time_t start,end; CR (gp_widget_get_value (widget, &val)); x = dpd->CurrentValue.u32>>16; y = dpd->CurrentValue.u32&0xffff; old = ((float)x)/(float)y; if (!strcmp(val,_("Bulb"))) { new32 = 0; x = 65536; y = 1; } else { if (2!=sscanf(val, "%d/%d", &x, &y)) { if (1==sscanf(val,"%d", &x)) { y = 1; } else { return GP_ERROR_BAD_PARAMETERS; } } new32 = (x<<16)|y; } new = ((float)x)/(float)y; do { origval = dpd->CurrentValue.u32; if (old > new) value.u8 = 0x01; else value.u8 = 0xff; a = dpd->CurrentValue.u32>>16; b = dpd->CurrentValue.u32&0xffff; C_PTP_REP (ptp_sony_setdevicecontrolvalueb (params, PTP_DPC_SONY_ShutterSpeed, &value, PTP_DTC_UINT8 )); GP_LOG_D ("shutterspeed value is (0x%x vs target 0x%x)", origval, new32); /* we tell the camera to do it, but it takes around 0.7 seconds for the SLT-A58 */ time(&start); do { C_PTP_REP (ptp_sony_getalldevicepropdesc (params)); C_PTP_REP (ptp_generic_getdevicepropdesc (params, PTP_DPC_SONY_ShutterSpeed, dpd)); if (dpd->CurrentValue.u32 == new32) { GP_LOG_D ("Value matched!"); break; } a = dpd->CurrentValue.u32>>16; b = dpd->CurrentValue.u32&0xffff; if ((a*y != 0) && (a*y == b*x)) { GP_LOG_D ("Value matched via math(tm) %d/%d == %d/%d!",x,y,a,b); break; } if (dpd->CurrentValue.u32 != origval) { GP_LOG_D ("value changed (0x%x vs 0x%x vs target 0x%x), next step....", dpd->CurrentValue.u32, origval, new32); break; } usleep(200*1000); time(&end); } while (end-start <= 3); if (dpd->CurrentValue.u32 == new32) { GP_LOG_D ("Value matched!"); break; } if ((a*y != 0) && (a*y == b*x)) { GP_LOG_D ("Value matched via math(tm) %d/%d == %d/%d!",x,y,a,b); break; } if (dpd->CurrentValue.u32 == origval) { GP_LOG_D ("value did not change (0x%x vs 0x%x vs target 0x%x), not good ...", dpd->CurrentValue.u32, origval, new32); break; } } while (1); propval->u32 = new; return GP_OK; } static int _get_Nikon_FocalLength(CONFIG_GET_ARGS) { char len[20]; if (dpd->DataType != PTP_DTC_UINT32) return (GP_ERROR); gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); sprintf (len, "%.0f mm", dpd->CurrentValue.u32 * 0.01); gp_widget_set_value (*widget, len); return (GP_OK); } static int _get_Nikon_ApertureAtFocalLength(CONFIG_GET_ARGS) { char len[20]; if (dpd->DataType != PTP_DTC_UINT16) return (GP_ERROR); gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); sprintf (len, "%.0f", dpd->CurrentValue.u16 * 0.01); gp_widget_set_value (*widget, len); return (GP_OK); } static int _get_Nikon_LightMeter(CONFIG_GET_ARGS) { char meter[20]; if (dpd->DataType != PTP_DTC_INT8) return (GP_ERROR); gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); sprintf (meter, "%.1f", dpd->CurrentValue.i8 * 0.08333); gp_widget_set_value (*widget, meter); return (GP_OK); } static int _get_Nikon_FlashExposureCompensation(CONFIG_GET_ARGS) { float value_float; if (!(dpd->FormFlag & PTP_DPFF_Range)) return (GP_ERROR); if (dpd->DataType != PTP_DTC_INT8) return (GP_ERROR); gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_range (*widget, dpd->FORM.Range.MinimumValue.i8/6.0, dpd->FORM.Range.MaximumValue.i8/6.0, dpd->FORM.Range.StepSize.i8/6.0 ); value_float = dpd->CurrentValue.i8/6.0; gp_widget_set_value (*widget, &value_float); return (GP_OK); } static int _put_Nikon_FlashExposureCompensation(CONFIG_PUT_ARGS) { float val; CR (gp_widget_get_value(widget, &val)); propval->i8 = 6.0*val; return GP_OK; } static int _get_Nikon_LowLight(CONFIG_GET_ARGS) { float value_float; if (!(dpd->FormFlag & PTP_DPFF_Range)) return (GP_ERROR); if (dpd->DataType != PTP_DTC_UINT8) return (GP_ERROR); gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_range (*widget, dpd->FORM.Range.MinimumValue.u8, dpd->FORM.Range.MaximumValue.u8, dpd->FORM.Range.StepSize.u8 ); value_float = dpd->CurrentValue.u8; gp_widget_set_value (*widget, &value_float); return (GP_OK); } static int _get_Canon_EOS_WBAdjust(CONFIG_GET_ARGS) { int i, valset = 0; char buf[200]; if (dpd->DataType != PTP_DTC_INT16) return (GP_ERROR); if (!(dpd->FormFlag & PTP_DPFF_Enumeration)) return (GP_ERROR); gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (i = 0; iFORM.Enum.NumberOfValues; i++) { sprintf (buf, "%d", dpd->FORM.Enum.SupportedValue[i].i16); gp_widget_add_choice (*widget,buf); if (dpd->CurrentValue.i16 == dpd->FORM.Enum.SupportedValue[i].i16) { gp_widget_set_value (*widget, buf); valset = 1; } } if (!valset) { sprintf (buf, "%d",dpd->CurrentValue.i16); gp_widget_set_value (*widget, buf); } return GP_OK; } static int _put_Canon_EOS_WBAdjust(CONFIG_PUT_ARGS) { int x; const char *value_str; gp_widget_get_value (widget, &value_str); if (!sscanf (value_str, "%d", &x)) return GP_ERROR; propval->i16 = x; return GP_OK; } static struct deviceproptableu8 nikon_liveviewaf[] = { { N_("Face-priority AF"), 0, 0 }, { N_("Wide-area AF"), 1, 0 }, { N_("Normal-area AF"), 2, 0 }, { N_("Subject-tracking AF"), 3, 0 }, }; GENERIC8TABLE(Nikon_LiveViewAF,nikon_liveviewaf) static struct deviceproptableu8 nikon_liveviewaffocus[] = { { N_("Single-servo AF"), 0, 0 }, { N_("Full-time-servo AF"), 2, 0 }, { N_("Manual Focus"), 4, 0 }, }; GENERIC8TABLE(Nikon_LiveViewAFFocus,nikon_liveviewaffocus) static struct deviceproptableu8 nikon_afareaillum[] = { { N_("Auto"), 0, 0 }, { N_("Off"), 1, 0 }, { N_("On"), 2, 0 }, }; GENERIC8TABLE(Nikon_AFAreaIllum,nikon_afareaillum) static struct deviceproptableu8 nikon_aelaflmode[] = { { N_("AE/AF Lock"), 0x00, 0 }, { N_("AE Lock only"), 0x01, 0 }, { N_("AF Lock Only"), 0x02, 0 }, { N_("AF Lock Hold"), 0x03, 0 }, { N_("AF On"), 0x04, 0 }, { N_("Flash Level Lock"),0x05, 0 }, }; GENERIC8TABLE(Nikon_AELAFLMode,nikon_aelaflmode) static struct deviceproptableu8 nikon_lcdofftime[] = { { N_("10 seconds"), 0x00, 0 }, { N_("20 seconds"), 0x01, 0 }, { N_("1 minute"), 0x02, 0 }, { N_("5 minutes"), 0x03, 0 }, { N_("10 minutes"), 0x04, 0 }, { N_("5 seconds"), 0x05, 0 }, /* d80 observed */ }; GENERIC8TABLE(Nikon_LCDOffTime,nikon_lcdofftime) static struct deviceproptableu8 nikon_recordingmedia[] = { { N_("Card"), 0x00, 0 }, { N_("SDRAM"), 0x01, 0 }, }; GENERIC8TABLE(Nikon_RecordingMedia,nikon_recordingmedia) static struct deviceproptableu8 nikon_selftimerdelay[] = { { N_("2 seconds"), 0x00, 0 }, { N_("5 seconds"), 0x01, 0 }, { N_("10 seconds"), 0x02, 0 }, { N_("20 seconds"), 0x03, 0 }, }; GENERIC8TABLE(Nikon_SelfTimerDelay,nikon_selftimerdelay) static struct deviceproptableu8 nikon_centerweight[] = { { N_("6 mm"), 0x00, 0 }, { N_("8 mm"), 0x01, 0 }, { N_("10 mm"), 0x02, 0 }, { N_("12 mm"), 0x03, 0 }, { N_("Average"),0x04, 0 }, /* ? */ }; GENERIC8TABLE(Nikon_CenterWeight,nikon_centerweight) static struct deviceproptableu8 nikon_flashshutterspeed[] = { { N_("1/60"), 0x00, 0 }, { N_("1/30"), 0x01, 0 }, { N_("1/15"), 0x02, 0 }, { N_("1/8"), 0x03, 0 }, { N_("1/4"), 0x04, 0 }, { N_("1/2"), 0x05, 0 }, { N_("1"), 0x06, 0 }, { N_("2"), 0x07, 0 }, { N_("4"), 0x08, 0 }, { N_("8"), 0x09, 0 }, { N_("15"), 0x0a, 0 }, { N_("30"), 0x0b, 0 }, }; GENERIC8TABLE(Nikon_FlashShutterSpeed,nikon_flashshutterspeed) static struct deviceproptablei16 fuji_shutterspeed[] = { { N_("bulb"), -31, 0 }, { N_("30s"), -30, 0 }, { N_("25s"), -28, 0 }, { N_("20s"), -26, 0 }, { N_("15s"), -24, 0 }, { N_("13s"), -22, 0 }, { N_("10s"), -20, 0 }, { N_("8s"), -18, 0 }, { N_("6s"), -16, 0 }, { N_("5s"), -14, 0 }, { N_("4s"), -12, 0 }, { N_("3s"), -10, 0 }, { N_("2.5s"), -8, 0 }, { N_("2s"), -6, 0 }, { N_("1.6s"), -4, 0 }, { N_("1.3s"), -2, 0 }, { N_("1s"), 0, 0 }, { N_("1/1.3s"), 2, 0 }, { N_("1/1.6s"), 4, 0 }, { N_("1/2s"), 6, 0 }, { N_("1/2.5s"), 8, 0 }, { N_("1/3s"), 10, 0 }, { N_("1/4s"), 12, 0 }, { N_("1/5s"), 14, 0 }, { N_("1/6s"), 16, 0 }, { N_("1/8s"), 18, 0 }, { N_("1/10s"), 20, 0 }, { N_("1/13s"), 22, 0 }, { N_("1/15s"), 24, 0 }, { N_("1/20s"), 26, 0 }, { N_("1/25s"), 28, 0 }, { N_("1/30s"), 30, 0 }, { N_("1/40s"), 32, 0 }, { N_("1/50s"), 34, 0 }, { N_("1/60s"), 36, 0 }, { N_("1/80s"), 38, 0 }, { N_("1/100s"), 40, 0 }, { N_("1/125s"), 42, 0 }, { N_("1/160s"), 44, 0 }, { N_("1/200s"), 46, 0 }, { N_("1/250s"), 48, 0 }, { N_("1/320s"), 50, 0 }, { N_("1/400s"), 52, 0 }, { N_("1/500s"), 54, 0 }, { N_("1/640s"), 56, 0 }, { N_("1/800s"), 58, 0 }, { N_("1/1000s"),60, 0 }, { N_("1/1250s"),62, 0 }, { N_("1/1250s"),62, 0 }, { N_("1/1600s"),64, 0 }, { N_("1/2000s"),66, 0 }, { N_("1/2500s"),68, 0 }, { N_("1/3200s"),70, 0 }, { N_("1/4000s"),72, 0 }, { N_("1/5000s"),74, 0 }, { N_("1/6400s"),76, 0 }, { N_("1/8000s"),78, 0 }, }; GENERICI16TABLE(Fuji_ShutterSpeed,fuji_shutterspeed) static struct deviceproptableu8 nikon_remotetimeout[] = { { N_("1 minute"), 0x00, 0 }, { N_("5 minutes"), 0x01, 0 }, { N_("10 minutes"), 0x02, 0 }, { N_("15 minutes"), 0x03, 0 }, }; GENERIC8TABLE(Nikon_RemoteTimeout,nikon_remotetimeout) static struct deviceproptableu8 nikon_optimizeimage[] = { { N_("Normal"), 0x00, 0 }, { N_("Vivid"), 0x01, 0 }, { N_("Sharper"), 0x02, 0 }, { N_("Softer"), 0x03, 0 }, { N_("Direct Print"), 0x04, 0 }, { N_("Portrait"), 0x05, 0 }, { N_("Landscape"), 0x06, 0 }, { N_("Custom"), 0x07, 0 }, }; GENERIC8TABLE(Nikon_OptimizeImage,nikon_optimizeimage) static struct deviceproptableu8 nikon_sharpening[] = { { N_("Auto"), 0x00, 0 }, { N_("Normal"), 0x01, 0 }, { N_("Low"), 0x02, 0 }, { N_("Medium Low"), 0x03, 0 }, { N_("Medium high"), 0x04, 0 }, { N_("High"), 0x05, 0 }, { N_("None"), 0x06, 0 }, }; GENERIC8TABLE(Nikon_Sharpening,nikon_sharpening) static struct deviceproptableu8 nikon_tonecompensation[] = { { N_("Auto"), 0x00, 0 }, { N_("Normal"), 0x01, 0 }, { N_("Low contrast"), 0x02, 0 }, { N_("Medium Low"), 0x03, 0 }, { N_("Medium High"), 0x04, 0 }, { N_("High control"), 0x05, 0 }, { N_("Custom"), 0x06, 0 }, }; GENERIC8TABLE(Nikon_ToneCompensation,nikon_tonecompensation) static struct deviceproptableu8 canon_afdistance[] = { { N_("Manual"), 0x00, 0 }, { N_("Auto"), 0x01, 0 }, { N_("Unknown"), 0x02, 0 }, { N_("Zone Focus (Close-up)"), 0x03, 0 }, { N_("Zone Focus (Very Close)"),0x04, 0 }, { N_("Zone Focus (Close)"), 0x05, 0 }, { N_("Zone Focus (Medium)"), 0x06, 0 }, { N_("Zone Focus (Far)"), 0x07, 0 }, { N_("Zone Focus (Reserved 1)"),0x08, 0 }, { N_("Zone Focus (Reserved 2)"),0x09, 0 }, { N_("Zone Focus (Reserved 3)"),0x0a, 0 }, { N_("Zone Focus (Reserved 4)"),0x0b, 0 }, }; GENERIC8TABLE(Canon_AFDistance,canon_afdistance) /* Focus Modes as per PTP standard. |0x8000 means vendor specific. */ static struct deviceproptableu16 focusmodes[] = { { N_("Undefined"), 0x0000, 0 }, { N_("Manual"), 0x0001, 0 }, { N_("Automatic"), 0x0002, 0 }, { N_("Automatic Macro"),0x0003, 0 }, { N_("AF-S"), 0x8010, PTP_VENDOR_NIKON }, { N_("AF-C"), 0x8011, PTP_VENDOR_NIKON }, { N_("AF-A"), 0x8012, PTP_VENDOR_NIKON }, { N_("Single-Servo AF"),0x8001, PTP_VENDOR_FUJI }, { N_("Continuous-Servo AF"),0x8002, PTP_VENDOR_FUJI }, { N_("AF-A"), 0x8005, PTP_VENDOR_SONY }, { N_("AF-C"), 0x8004, PTP_VENDOR_SONY }, }; GENERIC16TABLE(FocusMode,focusmodes) static struct deviceproptableu16 eos_focusmodes[] = { { N_("One Shot"), 0x0000, 0 }, { N_("AI Servo"), 0x0001, 0 }, { N_("AI Focus"), 0x0002, 0 }, { N_("Manual"), 0x0003, 0 }, }; GENERIC16TABLE(Canon_EOS_FocusMode,eos_focusmodes) static struct deviceproptableu16 eos_quickreviewtime[] = { { N_("None"), 0x0000, 0 }, { N_("2 seconds"), 0x0002, 0 }, { N_("4 seconds"), 0x0004, 0 }, { N_("8 seconds"), 0x0008, 0 }, { N_("Hold"), 0x00ff, 0 }, }; GENERIC16TABLE(Canon_EOS_QuickReviewTime,eos_quickreviewtime) static struct deviceproptableu8 canon_whitebalance[] = { { N_("Auto"), 0, 0 }, { N_("Daylight"), 1, 0 }, { N_("Cloudy"), 2, 0 }, { N_("Tungsten"), 3, 0 }, { N_("Fluorescent"), 4, 0 }, { N_("Custom"), 6, 0 }, { N_("Fluorescent H"), 7, 0 }, { N_("Color Temperature"), 9, 0 }, { N_("Custom Whitebalance PC-1"), 10, 0 }, { N_("Custom Whitebalance PC-2"), 11, 0 }, { N_("Custom Whitebalance PC-3"), 12, 0 }, { N_("Missing Number"), 13, 0 }, /*{ N_("Flourescent H"), 14, 0 }, ... dup? */ }; GENERIC8TABLE(Canon_WhiteBalance,canon_whitebalance) /* confirmed against EOS 450D - Marcus */ /* I suspect every EOS uses a different table :( */ static struct deviceproptableu8 canon_eos_whitebalance[] = { { N_("Auto"), 0, 0 }, { N_("Daylight"), 1, 0 }, { N_("Cloudy"), 2, 0 }, { N_("Tungsten"), 3, 0 }, { N_("Fluorescent"), 4, 0 }, { N_("Flash"), 5, 0 }, { N_("Manual"), 6, 0 }, {"Unknown 7", 7, 0 }, { N_("Shadow"), 8, 0 }, { N_("Color Temperature"),9, 0 }, /* from eos 40d / 5D Mark II dump */ { "Unknown 10", 10, 0 }, { "Unknown 11", 11, 0 }, }; GENERIC8TABLE(Canon_EOS_WhiteBalance,canon_eos_whitebalance) static struct deviceproptableu8 canon_expcompensation[] = { { N_("Factory Default"),0xff, 0 }, { "+3", 0x00, 0 }, { "+2 2/3", 0x03, 0 }, { "+2 1/2", 0x04, 0 }, { "+2 1/3", 0x05, 0 }, { "+2", 0x08, 0 }, { "+1 2/3", 0x0b, 0 }, { "+1 1/2", 0x0c, 0 }, { "+1 1/3", 0x0d, 0 }, { "+1", 0x10, 0 }, { "+2/3", 0x13, 0 }, { "+1/2", 0x14, 0 }, { "+1/3", 0x15, 0 }, { "0", 0x18, 0 }, { "-1/3", 0x1b, 0 }, { "-1/2", 0x1c, 0 }, { "-2/3", 0x1d, 0 }, { "-1", 0x20, 0 }, { "-1 1/3", 0x23, 0 }, { "-1 1/2", 0x24, 0 }, { "-1 2/3", 0x25, 0 }, { "-2", 0x28, 0 }, { "-2 1/3", 0x2b, 0 }, { "-2 1/2", 0x2c, 0 }, { "-2 2/3", 0x2d, 0 }, { "-3", 0x30, 0 }, }; GENERIC8TABLE(Canon_ExpCompensation,canon_expcompensation) static struct deviceproptableu8 canon_expcompensation2[] = { { "5", 0x28, 0 }, { "4.6", 0x25, 0 }, { "4.3", 0x23, 0 }, { "4", 0x20, 0 }, { "3.6", 0x1d, 0 }, { "3.3", 0x1b, 0 }, { "3", 0x18, 0 }, { "2.6", 0x15, 0 }, { "2.5", 0x14, 0 }, { "2.3", 0x13, 0 }, { "2", 0x10, 0 }, { "1.6", 0x0d, 0 }, { "1.5", 0x0c, 0 }, { "1.3", 0x0b, 0 }, { "1.0", 0x08, 0 }, { "0.6", 0x05, 0 }, { "0.5", 0x04, 0 }, { "0.3", 0x03, 0 }, { "0", 0x00, 0 }, { "-0.3", 0xfd, 0 }, { "-0.5", 0xfc, 0 }, { "-0.6", 0xfb, 0 }, { "-1.0", 0xf8, 0 }, { "-1.3", 0xf5, 0 }, { "-1.5", 0xf4, 0 }, { "-1.6", 0xf3, 0 }, { "-2", 0xf0, 0 }, { "-2.3", 0xed, 0 }, { "-2.5", 0xec, 0 }, { "-2.6", 0xeb, 0 }, { "-3", 0xe8, 0 }, { "-3.3", 0xe5, 0 }, { "-3.6", 0xe3, 0 }, { "-4", 0xe0, 0 }, { "-4.3", 0xdd, 0 }, /*Canon EOS 5D Mark III*/ { "-4.6", 0xdb, 0 }, { "-5", 0xd8, 0 }, }; GENERIC8TABLE(Canon_ExpCompensation2,canon_expcompensation2) static struct deviceproptableu16 canon_photoeffect[] = { { N_("Off"), 0, 0 }, { N_("Vivid"), 1, 0 }, { N_("Neutral"), 2, 0 }, { N_("Low sharpening"), 3, 0 }, { N_("Sepia"), 4, 0 }, { N_("Black & white"), 5, 0 }, }; GENERIC16TABLE(Canon_PhotoEffect,canon_photoeffect) static struct deviceproptableu16 canon_aperture[] = { { N_("auto"), 0xffff, 0 }, { "1", 0x0008, 0 }, { "1.1", 0x000b, 0 }, { "1.2", 0x000c, 0 }, { "1.2", 0x000d, 0 }, /* (1/3)? */ { "1.4", 0x0010, 0 }, { "1.6", 0x0013, 0 }, { "1.8", 0x0014, 0 }, { "1.8", 0x0015, 0 }, /* (1/3)? */ { "2", 0x0018, 0 }, { "2.2", 0x001b, 0 }, { "2.5", 0x001c, 0 }, { "2.5", 0x001d, 0 }, /* (1/3)? */ { "2.8", 0x0020, 0 }, { "3.2", 0x0023, 0 }, { "3.5", 0x0024, 0 }, { "3.5", 0x0025, 0 }, /* (1/3)? */ { "4", 0x0028, 0 }, { "4.5", 0x002c, 0 }, { "4.5", 0x002b, 0 }, /* (1/3)? */ { "5", 0x002d, 0 }, /* 5.6 (1/3)??? */ { "5.6", 0x0030, 0 }, { "6.3", 0x0033, 0 }, { "6.7", 0x0034, 0 }, { "7.1", 0x0035, 0 }, { "8", 0x0038, 0 }, { "9", 0x003b, 0 }, { "9.5", 0x003c, 0 }, { "10", 0x003d, 0 }, { "11", 0x0040, 0 }, { "13", 0x0043, 0 }, /* (1/3)? */ { "13", 0x0044, 0 }, { "14", 0x0045, 0 }, { "16", 0x0048, 0 }, { "18", 0x004b, 0 }, { "19", 0x004c, 0 }, { "20", 0x004d, 0 }, { "22", 0x0050, 0 }, { "25", 0x0053, 0 }, { "27", 0x0054, 0 }, { "29", 0x0055, 0 }, { "32", 0x0058, 0 }, { "36", 0x005b, 0 }, { "38", 0x005c, 0 }, { "40", 0x005d, 0 }, { "45", 0x0060, 0 }, { "51", 0x0063, 0 }, { "54", 0x0064, 0 }, { "57", 0x0065, 0 }, { "64", 0x0068, 0 }, { "72", 0x006b, 0 }, { "76", 0x006c, 0 }, { "81", 0x006d, 0 }, { "91", 0x0070, 0 }, }; GENERIC16TABLE(Canon_Aperture,canon_aperture) static struct deviceproptableu16 fuji_aperture[] = { { "1.8", 10, 0 }, { "2", 12, 0 }, { "2.2", 14, 0 }, { "2.5", 16, 0 }, { "2.8", 18, 0 }, { "3.2", 20, 0 }, { "3.5", 22, 0 }, { "4", 24, 0 }, { "4.5", 26, 0 }, { "5", 28, 0 }, { "5.6", 30, 0 }, { "6.3", 32, 0 }, { "7.1", 34, 0 }, { "8", 36, 0 }, { "9", 38, 0 }, { "10", 40, 0 }, { "11", 42, 0 }, { "13", 44, 0 }, { "14", 46, 0 }, { "16", 48, 0 }, { "18", 50, 0 }, { "20", 52, 0 }, { "22", 54, 0 }, { "25", 56, 0 }, { "29", 58, 0 }, { "32", 60, 0 }, { "36", 62, 0 }, }; GENERIC16TABLE(Fuji_Aperture,fuji_aperture) static struct deviceproptableu8 nikon_bracketset[] = { { N_("AE & Flash"), 0, 0 }, { N_("AE only"), 1, 0 }, { N_("Flash only"), 2, 0 }, { N_("WB bracketing"), 3, 0 }, { N_("ADL bracketing"), 4, 0 }, }; GENERIC8TABLE(Nikon_BracketSet,nikon_bracketset) static struct deviceproptableu8 nikon_cleansensor[] = { { N_("Off"), 0, 0 }, { N_("Startup"), 1, 0 }, { N_("Shutdown"), 2, 0 }, { N_("Startup and Shutdown"), 3, 0 }, }; GENERIC8TABLE(Nikon_CleanSensor,nikon_cleansensor) static struct deviceproptableu8 nikon_flickerreduction[] = { { N_("50 Hz"), 0, 0 }, { N_("60 Hz"), 1, 0 }, { N_("Auto"), 2, 0 }, }; GENERIC8TABLE(Nikon_FlickerReduction,nikon_flickerreduction) static struct deviceproptableu8 nikon_remotemode[] = { { N_("Delayed Remote"), 0, 0 }, { N_("Quick Response"), 1, 0 }, { N_("Remote Mirror Up"), 2, 0 }, }; GENERIC8TABLE(Nikon_RemoteMode,nikon_remotemode) static struct deviceproptableu8 nikon_applicationmode[] = { { N_("Application Mode 0"), 0, 0 }, { N_("Application Mode 1"), 1, 0 }, }; GENERIC8TABLE(Nikon_ApplicationMode,nikon_applicationmode) static struct deviceproptableu8 nikon_saturation[] = { { N_("Normal"), 0, 0 }, { N_("Moderate"), 1, 0 }, { N_("Enhanced"), 2, 0 }, }; GENERIC8TABLE(Nikon_Saturation,nikon_saturation) static struct deviceproptableu8 nikon_bracketorder[] = { { N_("MTR > Under"), 0, 0 }, { N_("Under > MTR"), 1, 0 }, }; GENERIC8TABLE(Nikon_BracketOrder,nikon_bracketorder) /* There is a table for it in the internet */ static struct deviceproptableu8 nikon_lensid[] = { {N_("Unknown"), 0, 0}, {"Sigma 70-300mm 1:4-5.6 D APO Macro", 38, 0}, {"AF Nikkor 80-200mm 1:2.8 D ED", 83, 0}, {"AF Nikkor 50mm 1:1.8 D", 118, 0}, {"AF-S Nikkor 18-70mm 1:3.5-4.5G ED DX", 127, 0}, {"AF-S Nikkor 18-200mm 1:3.5-5.6 GED DX VR", 139, 0}, {"AF-S Nikkor 24-70mm 1:2.8G ED DX", 147, 0}, {"AF-S Nikkor 18-55mm 1:3.5-F5.6G DX VR", 154, 0}, {"AF-S Nikkor 35mm 1:1.8G DX", 159, 0}, {"Sigma EX 30mm 1:1.4 DC HSM", 248, 0}, /* from mge */ }; GENERIC8TABLE(Nikon_LensID,nikon_lensid) static struct deviceproptableu8 nikon_microphone[] = { {N_("Auto sensitivity"), 0, 0}, {N_("High sensitivity"), 1, 0}, {N_("Medium sensitivity"), 2, 0}, {N_("Low sensitivity"), 3, 0}, {N_("Microphone off"), 4, 0}, }; GENERIC8TABLE(Nikon_Microphone, nikon_microphone); static struct deviceproptableu8 nikon_moviequality[] = { {"320x216", 0, 0}, {"640x424", 1, 0}, {"1280x720", 2, 0}, }; GENERIC8TABLE(Nikon_MovieQuality, nikon_moviequality); static struct deviceproptableu8 nikon_d5100_moviequality[] = { {"640x424; 25fps; normal", 0, 0}, {"640x424; 25fps; high quality", 1, 0}, {"1280x720; 24fps; normal", 2, 0}, {"1280x720; 24fps; high quality", 3, 0}, {"1280x720; 25fps; normal", 4, 0}, {"1280x720; 25fps; high quality", 5, 0}, {"1920x1080; 24fps; normal", 6, 0}, {"1920x1080; 24fps; high quality", 7, 0}, {"1920x1080; 25fps; normal", 8, 0}, {"1920x1080; 25fps; high quality", 9, 0}, }; GENERIC8TABLE(Nikon_D5100_MovieQuality, nikon_d5100_moviequality); static struct deviceproptableu8 nikon_d7100_moviequality[] = { {"1920x1080; 60i", 0, 0}, {"1920x1080; 50i", 1, 0}, {"1920x1080; 30p", 2, 0}, {"1920x1080; 25p", 3, 0}, {"1920x1080; 24p", 4, 0}, {"1280x720; 60p", 5, 0}, {"1280x720; 50p", 6, 0}, }; GENERIC8TABLE(Nikon_D7100_MovieQuality, nikon_d7100_moviequality); static struct deviceproptableu8 nikon_d7100_moviequality2[] = { {"Norm", 0, 0}, {"High", 1, 0}, }; GENERIC8TABLE(Nikon_D7100_MovieQuality2, nikon_d7100_moviequality2); static struct deviceproptableu8 nikon_1_moviequality[] = { {"1080/60i", 0, 0}, {"1080/30p", 1, 0}, {"720/60p", 3, 0}, {"720/30p", 4, 0}, }; GENERIC8TABLE(Nikon_1_MovieQuality, nikon_1_moviequality); static struct deviceproptableu8 nikon_d90_isoautohilimit[] = { {"400", 0, 0}, {"800", 1, 0}, {"1600", 2, 0}, {"3200", 3, 0}, {N_("Hi 1"), 4, 0}, {N_("Hi 2"), 5, 0}, }; GENERIC8TABLE(Nikon_D90_ISOAutoHiLimit, nikon_d90_isoautohilimit); static struct deviceproptableu8 nikon_d7100_isoautohilimit[] = { { "200", 0, 0 }, { "250", 1, 0 }, { "280", 2, 0 }, { "320", 3, 0 }, { "400", 4, 0 }, { "500", 5, 0 }, { "560", 6, 0 }, { "640", 7, 0 }, { "800", 8, 0 }, { "1000", 9, 0 }, { "1100", 10, 0 }, { "1250", 11, 0 }, { "1600", 12, 0 }, { "2000", 13, 0 }, { "2200", 14, 0 }, { "2500", 15, 0 }, { "3200", 16, 0 }, { "4000", 17, 0 }, { "4500", 18, 0 }, { "5000", 19, 0 }, { "6400", 20, 0 }, { "Hi 0.3", 21, 0 }, { "Hi 0.5", 22, 0 }, { "Hi 0.7", 23, 0 }, { "Hi 1", 24, 0 }, { "Hi 2", 25, 0 }, }; GENERIC8TABLE(Nikon_D7100_ISOAutoHiLimit, nikon_d7100_isoautohilimit); static struct deviceproptableu8 nikon_manualbracketmode[] = { {N_("Flash/speed"), 0, 0}, {N_("Flash/speed/aperture"), 1, 0}, {N_("Flash/aperture"), 2, 0}, {N_("Flash only"), 3, 0}, }; GENERIC8TABLE(Nikon_ManualBracketMode, nikon_manualbracketmode); static struct deviceproptableu8 nikon_d3s_isoautohilimit[] = { {"400", 0, 0}, {"500", 1, 0}, {"640", 3, 0}, {"800", 4, 0}, {"1000", 5, 0}, {"1250", 7, 0}, {"1600", 8, 0}, {"2000", 9, 0}, {"2500", 11, 0}, {"3200", 12, 0}, {"4000", 13, 0}, {"5000", 15, 0}, {"6400", 16, 0}, {"8000", 17, 0}, {"10000", 19, 0}, {"12800", 20, 0}, {"14400", 21, 0}, {"20000", 23, 0}, {"25600", 24, 0}, {"51200", 25, 0}, {"102400",26, 0}, }; GENERIC8TABLE(Nikon_D3s_ISOAutoHiLimit, nikon_d3s_isoautohilimit); #if 0 static struct deviceproptableu8 nikon_d70s_padvpvalue[] = { { "1/125", 0x00, 0 }, { "1/60", 0x01, 0 }, { "1/30", 0x02, 0 }, { "1/15", 0x03, 0 }, { "1/8", 0x04, 0 }, { "1/4", 0x05, 0 }, { "1/2", 0x06, 0 }, { "1", 0x07, 0 }, { "2", 0x08, 0 }, { "4", 0x09, 0 }, { "8", 0x0a, 0 }, { "15", 0x0b, 0 }, { "30", 0x0c, 0 }, }; GENERIC8TABLE(Nikon_D70s_PADVPValue,nikon_d70s_padvpvalue) #endif static struct deviceproptableu8 nikon_d90_padvpvalue[] = { { "1/2000", 0x00, 0 }, { "1/1600", 0x01, 0 }, { "1/1250", 0x02, 0 }, { "1/1000", 0x03, 0 }, { "1/800", 0x04, 0 }, { "1/640", 0x05, 0 }, { "1/500", 0x06, 0 }, { "1/400", 0x07, 0 }, { "1/320", 0x08, 0 }, { "1/250", 0x09, 0 }, { "1/200", 0x0a, 0 }, { "1/160", 0x0b, 0 }, { "1/125", 0x0c, 0 }, { "1/100", 0x0d, 0 }, { "1/80", 0x0e, 0 }, { "1/60", 0x0f, 0 }, { "1/50", 0x10, 0 }, { "1/40", 0x11, 0 }, { "1/30", 0x12, 0 }, { "1/15", 0x13, 0 }, { "1/8", 0x14, 0 }, { "1/4", 0x15, 0 }, { "1/2", 0x16, 0 }, { "1", 0x17, 0 }, }; GENERIC8TABLE(Nikon_D90_PADVPValue,nikon_d90_padvpvalue) static struct deviceproptableu8 nikon_d7100_padvpvalue[] = { { "1/4000", 0x00, 0 }, { "1/3200", 0x01, 0 }, { "1/2500", 0x02, 0 }, { "1/2000", 0x03, 0 }, { "1/1600", 0x04, 0 }, { "1/1250", 0x05, 0 }, { "1/1000", 0x06, 0 }, { "1/800", 0x07, 0 }, { "1/640", 0x08, 0 }, { "1/500", 0x09, 0 }, { "1/400", 0x0a, 0 }, { "1/320", 0x0b, 0 }, { "1/250", 0x0c, 0 }, { "1/200", 0x0d, 0 }, { "1/160", 0x0e, 0 }, { "1/125", 0x0f, 0 }, { "1/100", 0x10, 0 }, { "1/80", 0x11, 0 }, { "1/60", 0x12, 0 }, { "1/50", 0x13, 0 }, { "1/40", 0x14, 0 }, { "1/30", 0x15, 0 }, { "1/15", 0x16, 0 }, { "1/8", 0x17, 0 }, { "1/4", 0x18, 0 }, { "1/2", 0x19, 0 }, { "1", 0x1a, 0 }, { "Auto", 0x1b, 0 }, }; GENERIC8TABLE(Nikon_D7100_PADVPValue,nikon_d7100_padvpvalue) static struct deviceproptableu8 nikon_d3s_padvpvalue[] = { { "1/4000", 0x00, 0 }, { "1/3200", 0x01, 0 }, { "1/2500", 0x02, 0 }, { "1/2000", 0x03, 0 }, { "1/1600", 0x04, 0 }, { "1/1250", 0x05, 0 }, { "1/1000", 0x06, 0 }, { "1/800", 0x07, 0 }, { "1/640", 0x08, 0 }, { "1/500", 0x09, 0 }, { "1/400", 0x0a, 0 }, { "1/320", 0x0b, 0 }, { "1/250", 0x0c, 0 }, { "1/200", 0x0d, 0 }, { "1/160", 0x0e, 0 }, { "1/125", 0x0f, 0 }, { "1/100", 0x10, 0 }, { "1/80", 0x11, 0 }, { "1/60", 0x12, 0 }, { "1/50", 0x13, 0 }, { "1/40", 0x14, 0 }, { "1/30", 0x15, 0 }, { "1/15", 0x16, 0 }, { "1/8", 0x17, 0 }, { "1/4", 0x18, 0 }, { "1/2", 0x19, 0 }, { "1", 0x1a, 0 }, }; GENERIC8TABLE(Nikon_D3s_PADVPValue,nikon_d3s_padvpvalue) static struct deviceproptableu8 nikon_d90_activedlighting[] = { { N_("Extra high"), 0x00, 0 }, { N_("High"), 0x01, 0 }, { N_("Normal"), 0x02, 0 }, { N_("Low"), 0x03, 0 }, { N_("Off"), 0x04, 0 }, { N_("Auto"), 0x05, 0 }, }; GENERIC8TABLE(Nikon_D90_ActiveDLighting,nikon_d90_activedlighting) static struct deviceproptableu8 nikon_1_compression[] = { { N_("JPEG Normal"), 0x00, PTP_VENDOR_NIKON }, { N_("JPEG Fine"), 0x01, PTP_VENDOR_NIKON }, { N_("JPEG Basic"), 0x02, PTP_VENDOR_NIKON }, { N_("NEF+Fine"), 0x03, PTP_VENDOR_NIKON }, { N_("NEF (Raw)"), 0x04, PTP_VENDOR_NIKON }, /* for j5 */ { N_("NEF (Raw)"), 0x06, PTP_VENDOR_NIKON }, /* for j3 */ }; GENERIC8TABLE(Nikon_1_Compression,nikon_1_compression) static struct deviceproptableu8 nikon_d90_compression[] = { { N_("JPEG Basic"), 0x00, PTP_VENDOR_NIKON }, { N_("JPEG Normal"), 0x01, PTP_VENDOR_NIKON }, { N_("JPEG Fine"), 0x02, PTP_VENDOR_NIKON }, { N_("NEF (Raw)"), 0x04, PTP_VENDOR_NIKON }, { N_("NEF+Basic"), 0x05, PTP_VENDOR_NIKON }, { N_("NEF+Normal"), 0x06, PTP_VENDOR_NIKON }, { N_("NEF+Fine"), 0x07, PTP_VENDOR_NIKON }, }; GENERIC8TABLE(Nikon_D90_Compression,nikon_d90_compression) static struct deviceproptableu8 nikon_d3s_compression[] = { { N_("JPEG Basic"), 0x00, PTP_VENDOR_NIKON }, { N_("JPEG Normal"), 0x01, PTP_VENDOR_NIKON }, { N_("JPEG Fine"), 0x02, PTP_VENDOR_NIKON }, { N_("TIFF (RGB)"), 0x03, PTP_VENDOR_NIKON }, { N_("NEF (Raw)"), 0x04, PTP_VENDOR_NIKON }, { N_("NEF+Basic"), 0x05, PTP_VENDOR_NIKON }, { N_("NEF+Normal"), 0x06, PTP_VENDOR_NIKON }, { N_("NEF+Fine"), 0x07, PTP_VENDOR_NIKON }, }; GENERIC8TABLE(Nikon_D3s_Compression,nikon_d3s_compression) static struct deviceproptableu8 compressionsetting[] = { { N_("JPEG Basic"), 0x00, PTP_VENDOR_NIKON }, { N_("JPEG Normal"), 0x01, PTP_VENDOR_NIKON }, { N_("JPEG Fine"), 0x02, PTP_VENDOR_NIKON }, { N_("NEF (Raw)"), 0x04, PTP_VENDOR_NIKON }, { N_("NEF+Basic"), 0x05, PTP_VENDOR_NIKON }, { N_("NEF+Normal"), 0x06, PTP_VENDOR_NIKON }, { N_("NEF+Fine"), 0x07, PTP_VENDOR_NIKON }, { N_("Standard"), 0x02, PTP_VENDOR_SONY }, { N_("Fine"), 0x03, PTP_VENDOR_SONY }, { N_("RAW"), 0x10, PTP_VENDOR_SONY }, { N_("RAW+JPEG"), 0x13, PTP_VENDOR_SONY }, }; GENERIC8TABLE(CompressionSetting,compressionsetting) /* Sony specific, we need to wait for it settle (around 1 second), otherwise we get trouble later on */ static int _put_Sony_CompressionSetting(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); GPContext *context = ((PTPData *) params->data)->context; int ret; PTPDevicePropDesc dpd2; time_t start,end; ret = _put_CompressionSetting(CONFIG_PUT_NAMES); if (ret != GP_OK) return ret; start = time(NULL); C_PTP_REP (ptp_generic_setdevicepropvalue (params, PTP_DPC_CompressionSetting, propval, PTP_DTC_UINT8)); while (1) { C_PTP_REP (ptp_sony_getalldevicepropdesc (params)); C_PTP_REP (ptp_generic_getdevicepropdesc (params, PTP_DPC_CompressionSetting, &dpd2)); if (dpd2.CurrentValue.u8 == propval->u8) break; end = time(NULL); if (end-start >= 2) { GP_LOG_E("failed to change variable to %d (current %d)\n", propval->u8, dpd2.CurrentValue.u8); break; } } return GP_OK; } static struct deviceproptableu8 nikon_d90_highisonr[] = { { N_("Off"), 0, 0 }, { N_("Low"), 1, 0 }, { N_("Normal"), 2, 0 }, { N_("High"), 3, 0 }, }; GENERIC8TABLE(Nikon_D90_HighISONR,nikon_d90_highisonr) static struct deviceproptableu8 nikon_1_highisonr[] = { { N_("On"), 0, 0 }, { N_("Off"), 3, 0 }, }; GENERIC8TABLE(Nikon_1_HighISONR,nikon_1_highisonr) static struct deviceproptableu8 nikon_d90_meterofftime[] = { { N_("4 seconds"), 0x00, 0 }, { N_("6 seconds"), 0x01, 0 }, { N_("8 seconds"), 0x02, 0 }, { N_("16 seconds"), 0x03, 0 }, { N_("30 seconds"), 0x04, 0 }, { N_("1 minute"), 0x05, 0 }, { N_("5 minutes"), 0x06, 0 }, { N_("10 minutes"), 0x07, 0 }, { N_("30 minutes"), 0x08, 0 }, }; GENERIC8TABLE(Nikon_D90_MeterOffTime,nikon_d90_meterofftime) static struct deviceproptableu8 nikon_rawcompression[] = { { N_("Lossless"), 0x00, 0 }, { N_("Lossy"), 0x01, 0 }, }; GENERIC8TABLE(Nikon_RawCompression,nikon_rawcompression) static struct deviceproptableu8 nikon_d3s_jpegcompressionpolicy[] = { { N_("Size Priority"), 0x00, 0 }, { N_("Optimal quality"),0x01, 0 }, }; GENERIC8TABLE(Nikon_D3s_JPEGCompressionPolicy,nikon_d3s_jpegcompressionpolicy) static struct deviceproptableu8 nikon_d3s_flashsyncspeed[] = { { N_("1/250s (Auto FP)"), 0x00, 0 }, { N_("1/250s"), 0x01, 0 }, { N_("1/200s"), 0x02, 0 }, { N_("1/160s"), 0x03, 0 }, { N_("1/125s"), 0x04, 0 }, { N_("1/100s"), 0x05, 0 }, { N_("1/80s"), 0x06, 0 }, { N_("1/60s"), 0x07, 0 }, }; GENERIC8TABLE(Nikon_D3s_FlashSyncSpeed,nikon_d3s_flashsyncspeed) static struct deviceproptableu8 nikon_d7100_flashsyncspeed[] = { { N_("1/320s (Auto FP)"), 0x00, 0 }, { N_("1/250s (Auto FP)"), 0x01, 0 }, { N_("1/250s"), 0x02, 0 }, { N_("1/200s"), 0x03, 0 }, { N_("1/160s"), 0x04, 0 }, { N_("1/125s"), 0x05, 0 }, { N_("1/100s"), 0x06, 0 }, { N_("1/80s"), 0x07, 0 }, { N_("1/60s"), 0x08, 0 }, }; GENERIC8TABLE(Nikon_D7100_FlashSyncSpeed,nikon_d7100_flashsyncspeed) static struct deviceproptableu8 nikon_d3s_afcmodepriority[] = { { N_("Release"), 0x00, 0 }, { N_("Release + Focus"),0x01, 0 }, { N_("Focus"), 0x02, 0 }, }; GENERIC8TABLE(Nikon_D3s_AFCModePriority,nikon_d3s_afcmodepriority) static struct deviceproptableu8 nikon_d3s_afsmodepriority[] = { { N_("Release"), 0x00, 0 }, { N_("Focus"), 0x01, 0 }, }; GENERIC8TABLE(Nikon_D3s_AFSModePriority,nikon_d3s_afsmodepriority) static struct deviceproptableu8 nikon_d3s_dynamicafarea[] = { { N_("9 points"), 0x00, 0 }, { N_("21 points"), 0x01, 0 }, { N_("51 points"), 0x02, 0 }, { N_("51 points (3D)"), 0x03, 0 }, }; GENERIC8TABLE(Nikon_D3s_DynamicAFArea,nikon_d3s_dynamicafarea) static struct deviceproptableu8 nikon_d3s_aflockon[] = { { N_("5 (Long)"), 0x00, 0 }, { N_("4"), 0x01, 0 }, { N_("3 (Normal)"), 0x02, 0 }, { N_("2"), 0x03, 0 }, { N_("1 (Short)"), 0x04, 0 }, { N_("Off"), 0x05, 0 }, }; GENERIC8TABLE(Nikon_D3s_AFLockOn,nikon_d3s_aflockon) static struct deviceproptableu8 nikon_d3s_afactivation[] = { { N_("Shutter/AF-ON"), 0x00, 0 }, { N_("AF-ON"), 0x01, 0 }, }; GENERIC8TABLE(Nikon_D3s_AFActivation,nikon_d3s_afactivation) static struct deviceproptableu8 nikon_d3s_afareapoint[] = { { N_("AF51"), 0x00, 0 }, { N_("AF11"), 0x01, 0 }, }; GENERIC8TABLE(Nikon_D3s_AFAreaPoint,nikon_d3s_afareapoint) static struct deviceproptableu8 nikon_d3s_normalafon[] = { { N_("AF-ON"), 0x00, 0 }, { N_("AE/AF lock"), 0x01, 0 }, { N_("AE lock only"), 0x02, 0 }, { N_("AE lock (Reset on release)"), 0x03, 0 }, { N_("AE lock (Hold)"), 0x04, 0 }, { N_("AF lock only"), 0x05, 0 }, }; GENERIC8TABLE(Nikon_D3s_NormalAFOn,nikon_d3s_normalafon) static struct deviceproptableu8 nikon_d3s_flashshutterspeed[] = { { N_("1/60s"), 0x00, 0 }, { N_("1/30s"), 0x01, 0 }, { N_("1/15s"), 0x02, 0 }, { N_("1/8s"), 0x03, 0 }, { N_("1/4s"), 0x04, 0 }, { N_("1/2s"), 0x05, 0 }, { N_("1s"), 0x06, 0 }, { N_("2s"), 0x07, 0 }, { N_("4s"), 0x08, 0 }, { N_("8s"), 0x09, 0 }, { N_("15s"), 0x0a, 0 }, { N_("30s"), 0x0b, 0 }, }; GENERIC8TABLE(Nikon_D3s_FlashShutterSpeed,nikon_d3s_flashshutterspeed) static struct deviceproptableu8 nikon_d90_shootingspeed[] = { { N_("4 fps"), 0x00, 0 }, { N_("3 fps"), 0x01, 0 }, { N_("2 fps"), 0x02, 0 }, { N_("1 fps"), 0x03, 0 }, }; GENERIC8TABLE(Nikon_D90_ShootingSpeed,nikon_d90_shootingspeed) static struct deviceproptableu8 nikon_d7100_shootingspeed[] = { { N_("6 fps"), 0x00, 0 }, { N_("5 fps"), 0x01, 0 }, { N_("4 fps"), 0x02, 0 }, { N_("3 fps"), 0x03, 0 }, { N_("2 fps"), 0x04, 0 }, { N_("1 fps"), 0x05, 0 }, }; GENERIC8TABLE(Nikon_D7100_ShootingSpeed,nikon_d7100_shootingspeed) static struct deviceproptableu8 nikon_d3s_shootingspeed[] = { { N_("9 fps"), 0x00, 0 }, { N_("8 fps"), 0x01, 0 }, { N_("7 fps"), 0x02, 0 }, { N_("6 fps"), 0x03, 0 }, { N_("5 fps"), 0x04, 0 }, { N_("4 fps"), 0x05, 0 }, { N_("3 fps"), 0x06, 0 }, { N_("2 fps"), 0x07, 0 }, { N_("1 fps"), 0x08, 0 }, }; GENERIC8TABLE(Nikon_D3s_ShootingSpeed,nikon_d3s_shootingspeed) static struct deviceproptableu8 nikon_d3s_shootingspeedhigh[] = { { N_("11 fps"), 0x00, 0 }, { N_("10 fps"), 0x01, 0 }, { N_("9 fps"), 0x02, 0 }, }; GENERIC8TABLE(Nikon_D3s_ShootingSpeedHigh,nikon_d3s_shootingspeedhigh) static struct deviceproptableu8 nikon_d7000_funcbutton[] = { { N_("Unassigned"), 0x00, 0 },/* unselectable */ { N_("Preview"), 0x01, 0 }, { N_("FV lock"), 0x02, 0 }, { N_("AE/AF lock"), 0x03, 0 }, { N_("AE lock only"), 0x04, 0 }, { N_("Invalid"), 0x05, 0 },/* unselectable */ { N_("AE lock (hold)"), 0x06, 0 }, { N_("AF lock only"), 0x07, 0 }, { N_("Flash off"), 0x08, 0 }, { N_("Bracketing burst"), 0x09, 0 }, { N_("Matrix metering"), 0x0a, 0 }, { N_("Center-weighted metering"), 0x0b, 0 }, { N_("Spot metering"), 0x0c, 0 }, { N_("Playback"), 0x0d, 0 }, { N_("Access top item in MY MENU"), 0x0e, 0 }, { N_("+NEF (RAW)"), 0x0f, 0 }, { N_("Framing grid"), 0x10, 0 }, { N_("Active D-Lighting"), 0x11, 0 }, { N_("1 step spd/aperture"), 0x12, 0 }, { N_("Choose non-CPU lens number"), 0x13, 0 }, { N_("Viewfinder virtual horizont"), 0x14, 0 }, { N_("Start movie recording"), 0x15, 0 }, }; GENERIC8TABLE(Nikon_D7000_FuncButton,nikon_d7000_funcbutton) static struct deviceproptableu8 nikon_menus_and_playback[] = { { N_("Off"), 0x0, 0 }, { N_("On"), 0x1, 0 }, { N_("On (image review excluded)"), 0x2, 0 }, }; GENERIC8TABLE(Nikon_MenusAndPlayback,nikon_menus_and_playback) static int _get_BurstNumber(CONFIG_GET_ARGS) { float value_float , start=0.0, end=0.0, step=0.0; if (!(dpd->FormFlag & PTP_DPFF_Range)) return (GP_ERROR); if (dpd->DataType != PTP_DTC_UINT16) return (GP_ERROR); gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); start = dpd->FORM.Range.MinimumValue.u16; end = dpd->FORM.Range.MaximumValue.u16; step = dpd->FORM.Range.StepSize.u16; gp_widget_set_range (*widget, start, end, step); value_float = dpd->CurrentValue.u16; gp_widget_set_value (*widget, &value_float); return (GP_OK); } static int _put_BurstNumber(CONFIG_PUT_ARGS) { float val; CR (gp_widget_get_value(widget, &val)); propval->u16 = val; return GP_OK; } static int _get_BatteryLevel(CONFIG_GET_ARGS) { unsigned char value_float , start, end; char buffer[20]; if (!(dpd->FormFlag & PTP_DPFF_Range)) return (GP_ERROR); if (dpd->DataType != PTP_DTC_UINT8) return (GP_ERROR); gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); start = dpd->FORM.Range.MinimumValue.u8; end = dpd->FORM.Range.MaximumValue.u8; value_float = dpd->CurrentValue.u8; sprintf (buffer, "%d%%", (int)((value_float-start+1)*100/(end-start+1))); gp_widget_set_value(*widget, buffer); return (GP_OK); } static int _get_Canon_EOS_BatteryLevel(CONFIG_GET_ARGS) { if (dpd->DataType != PTP_DTC_UINT16) return (GP_ERROR); gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); switch (dpd->CurrentValue.u16) { case 0: gp_widget_set_value(*widget, _("Low")); break; case 1: gp_widget_set_value(*widget, _("50%")); break; case 2: gp_widget_set_value(*widget, _("100%")); break; case 4: gp_widget_set_value(*widget, _("75%")); break; case 5: gp_widget_set_value(*widget, _("25%")); break; default: gp_widget_set_value(*widget, _("Unknown value")); break; } return (GP_OK); } static int _get_UINT32_as_time(CONFIG_GET_ARGS) { time_t camtime; gp_widget_new (GP_WIDGET_DATE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); camtime = dpd->CurrentValue.u32; gp_widget_set_value (*widget,&camtime); return (GP_OK); } static int _put_UINT32_as_time(CONFIG_PUT_ARGS) { time_t camtime; camtime = 0; CR (gp_widget_get_value (widget,&camtime)); propval->u32 = camtime; return (GP_OK); } static int _get_UINT32_as_localtime(CONFIG_GET_ARGS) { time_t camtime; struct tm *ptm; gp_widget_new (GP_WIDGET_DATE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); camtime = dpd->CurrentValue.u32; /* hack to convert from local time on camera to utc */ ptm = gmtime(&camtime); ptm->tm_isdst = -1; camtime = mktime (ptm); gp_widget_set_value (*widget,&camtime); return (GP_OK); } static int _put_UINT32_as_localtime(CONFIG_PUT_ARGS) { time_t camtime,newcamtime; struct tm *ptm; char *tz; camtime = 0; CR (gp_widget_get_value (widget, &camtime)); ptm = localtime(&camtime); tz = getenv("TZ"); if (tz) C_MEM (tz = strdup(tz)); setenv("TZ", "", 1); tzset(); newcamtime = mktime(ptm); if (tz) { setenv("TZ", tz, 1); free(tz); } else unsetenv("TZ"); tzset(); propval->u32 = newcamtime; return (GP_OK); } static int _get_Canon_SyncTime(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); return (GP_OK); } static int _put_Canon_SyncTime(CONFIG_PUT_ARGS) { /* Just set the time if the entry changes. */ propval->u32 = time(NULL); return (GP_OK); } static int _get_Nikon_AFDrive(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); return (GP_OK); } static int _put_Nikon_AFDrive(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); GPContext *context = ((PTPData *) params->data)->context; if (!ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_AfDrive)) return (GP_ERROR_NOT_SUPPORTED); C_PTP (ptp_nikon_afdrive (&camera->pl->params)); /* wait at most 5 seconds for focusing currently */ C_PTP_REP (nikon_wait_busy (params, 10, 5000)); /* this can return PTP_RC_OK or PTP_RC_NIKON_OutOfFocus */ return GP_OK; } static int _get_Nikon_ChangeAfArea(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); gp_widget_set_value (*widget,"0x0"); return (GP_OK); } static int _put_Nikon_ChangeAfArea(CONFIG_PUT_ARGS) { uint16_t ret; char *val; int x,y; PTPParams *params = &(camera->pl->params); GPContext *context = ((PTPData *) params->data)->context; CR (gp_widget_get_value(widget, &val)); C_PARAMS (2 == sscanf(val, "%dx%d", &x, &y)); ret = ptp_nikon_changeafarea (&camera->pl->params, x, y); if (ret == PTP_RC_NIKON_NotLiveView) { gp_context_error (context, _("Nikon changeafarea works only in LiveView mode.")); return GP_ERROR; } C_PTP_MSG (ret, "Nikon changeafarea failed"); #if 0 int tries = 0; /* wait at most 5 seconds for focusing currently */ while (PTP_RC_DeviceBusy == (ret = ptp_nikon_device_ready(&camera->pl->params))) { tries++; if (tries == 500) return GP_ERROR_CAMERA_BUSY; usleep(10*1000); } /* this can return PTP_RC_OK or PTP_RC_NIKON_OutOfFocus */ if (ret == PTP_RC_NIKON_OutOfFocus) gp_context_error (context, _("Nikon autofocus drive did not focus.")); #endif return translate_ptp_result (ret); } static int _get_Canon_EOS_AFDrive(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); return (GP_OK); } static int _put_Canon_EOS_AFDrive(CONFIG_PUT_ARGS) { int val; PTPParams *params = &(camera->pl->params); if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_DoAf)) return (GP_ERROR_NOT_SUPPORTED); CR (gp_widget_get_value(widget, &val)); if (val) C_PTP (ptp_canon_eos_afdrive (params)); else C_PTP (ptp_canon_eos_afcancel (params)); /* Get the next set of event data */ C_PTP (ptp_check_eos_events (params)); return GP_OK; } static int _get_Canon_EOS_AFCancel(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); return (GP_OK); } static int _put_Canon_EOS_AFCancel(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_AfCancel)) return (GP_ERROR_NOT_SUPPORTED); C_PTP (ptp_canon_eos_afcancel (params)); /* Get the next set of event data */ C_PTP (ptp_check_eos_events (params)); return GP_OK; } static int _get_Nikon_MFDrive(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); gp_widget_set_range(*widget, -32767.0, 32767.0, 1.0); return (GP_OK); } static int _put_Nikon_MFDrive(CONFIG_PUT_ARGS) { uint16_t ret; float val; unsigned int xval, flag; PTPParams *params = &(camera->pl->params); GPContext *context = ((PTPData *) params->data)->context; if (!ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_MfDrive)) return (GP_ERROR_NOT_SUPPORTED); gp_widget_get_value(widget, &val); if (val<0) { xval = -val; flag = 0x1; } else { xval = val; flag = 0x2; } if (!xval) xval = 1; ret = LOG_ON_PTP_E (ptp_nikon_mfdrive (&camera->pl->params, flag, xval)); if (ret == PTP_RC_NIKON_NotLiveView) { gp_context_error (context, _("Nikon manual focus works only in LiveView mode.")); return GP_ERROR; } if (ret != PTP_RC_OK) return translate_ptp_result(ret); /* The mf drive operation has started ... wait for it to * finish. */ ret = LOG_ON_PTP_E (nikon_wait_busy (&camera->pl->params, 20, 1000)); if (ret == PTP_RC_NIKON_MfDriveStepEnd) { gp_context_error (context, _("Nikon manual focus at limit.")); return GP_ERROR_CAMERA_ERROR; } if (ret == PTP_RC_NIKON_MfDriveStepInsufficiency) { gp_context_error (context, _("Nikon manual focus stepping too small.")); return GP_ERROR_CAMERA_ERROR; } return translate_ptp_result(ret); } static int _get_Nikon_ControlMode(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); gp_widget_set_value(*widget, "0"); return (GP_OK); } static int _put_Nikon_ControlMode(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); char* val; unsigned int xval = 0; if (!ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_SetControlMode)) return GP_ERROR_NOT_SUPPORTED; gp_widget_get_value(widget, &val); if (!sscanf(val,"%d",&xval)) return GP_ERROR; C_PTP (ptp_nikon_setcontrolmode (&camera->pl->params, xval)); return GP_OK; } static int _get_Canon_EOS_RemoteRelease(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); /* FIXME: remember state of release */ gp_widget_add_choice (*widget, _("None")); gp_widget_add_choice (*widget, _("Press Half")); gp_widget_add_choice (*widget, _("Press Full")); gp_widget_add_choice (*widget, _("Release Half")); gp_widget_add_choice (*widget, _("Release Full")); gp_widget_add_choice (*widget, _("Immediate")); /* debugging */ gp_widget_add_choice (*widget, _("Press 1")); gp_widget_add_choice (*widget, _("Press 2")); gp_widget_add_choice (*widget, _("Press 3")); gp_widget_add_choice (*widget, _("Release 1")); gp_widget_add_choice (*widget, _("Release 2")); gp_widget_add_choice (*widget, _("Release 3")); gp_widget_set_value (*widget, _("None")); return (GP_OK); } /* On EOS 7D: * 9128 1 0 (half?) * 9128 2 0 (full?) * paramters: press mode, ? afmode ? SDK seems to suggest 1==NonAF, 0 == AF */ static int _put_Canon_EOS_RemoteRelease(CONFIG_PUT_ARGS) { const char* val; PTPParams *params = &(camera->pl->params); GPContext *context = ((PTPData *) params->data)->context; if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteReleaseOn)) return (GP_ERROR_NOT_SUPPORTED); /* If someone has set the capture target inbetween */ CR (camera_canon_eos_update_capture_target( camera, context, -1 )); gp_widget_get_value(widget, &val); if (!strcmp (val, _("None"))) { return GP_OK; } else if (!strcmp (val, _("Press Half"))) { C_PTP (ptp_canon_eos_remotereleaseon (params, 1, 1)); } else if (!strcmp (val, _("Press Full"))) { C_PTP (ptp_canon_eos_remotereleaseon (params, 3, 1)); } else if (!strcmp (val, _("Immediate"))) { /* HACK by Flori Radlherr: "fire and forget" half release before release: Avoids autofocus drive while focus-switch on the lens is in AF state */ C_PTP (ptp_canon_eos_remotereleaseon (params, 1, 1)); C_PTP (ptp_canon_eos_remotereleaseon (params, 3, 1)); /* try out others with 0 */ } else if (!strcmp (val, _("Press 1"))) { C_PTP (ptp_canon_eos_remotereleaseon (params, 1, 0)); } else if (!strcmp (val, _("Press 2"))) { C_PTP (ptp_canon_eos_remotereleaseon (params, 2, 0)); } else if (!strcmp (val, _("Press 3"))) { C_PTP (ptp_canon_eos_remotereleaseon (params, 3, 0)); } else if (!strcmp (val, _("Release 1"))) { C_PTP (ptp_canon_eos_remotereleaseoff (params, 1)); } else if (!strcmp (val, _("Release 2"))) { C_PTP (ptp_canon_eos_remotereleaseoff (params, 2)); } else if (!strcmp (val, _("Release 3"))) { C_PTP (ptp_canon_eos_remotereleaseoff (params, 3)); } else if (!strcmp (val, _("Release Half"))) { C_PTP (ptp_canon_eos_remotereleaseoff (params, 1)); } else if (!strcmp (val, _("Release Full"))) { C_PTP (ptp_canon_eos_remotereleaseoff (params, 3)); } else { GP_LOG_D ("Unknown value %s", val); return GP_ERROR_NOT_SUPPORTED; } /* Get the next set of event data */ C_PTP (ptp_check_eos_events (params)); return GP_OK; } static int _get_Canon_EOS_ContinousAF(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); gp_widget_add_choice (*widget, _("Off")); gp_widget_add_choice (*widget, _("On")); switch (dpd->CurrentValue.u32) { case 0: gp_widget_set_value (*widget, _("Off")); break; case 1: gp_widget_set_value (*widget, _("On")); break; default: { char buf[200]; sprintf(buf,"Unknown value 0x%08x", dpd->CurrentValue.u32); gp_widget_set_value (*widget, buf); break; } } return GP_OK; } static int _put_Canon_EOS_ContinousAF(CONFIG_PUT_ARGS) { char *val; unsigned int ival; CR(gp_widget_get_value (widget, &val)); if (!strcmp(val,_("Off"))) { propval->u32 = 0; return GP_OK; } if (!strcmp(val,_("On"))) { propval->u32 = 1; return GP_OK; } if (!sscanf(val,"Unknown value 0x%08x",&ival)) return GP_ERROR_BAD_PARAMETERS; propval->u32 = ival; return GP_OK; } static int _get_Canon_EOS_MFDrive(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); gp_widget_add_choice (*widget, _("Near 1")); gp_widget_add_choice (*widget, _("Near 2")); gp_widget_add_choice (*widget, _("Near 3")); gp_widget_add_choice (*widget, _("None")); gp_widget_add_choice (*widget, _("Far 1")); gp_widget_add_choice (*widget, _("Far 2")); gp_widget_add_choice (*widget, _("Far 3")); gp_widget_set_value (*widget, _("None")); return (GP_OK); } static int _put_Canon_EOS_MFDrive(CONFIG_PUT_ARGS) { const char* val; unsigned int xval; PTPParams *params = &(camera->pl->params); if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_DriveLens)) return (GP_ERROR_NOT_SUPPORTED); gp_widget_get_value(widget, &val); if (!strcmp (val, _("None"))) return GP_OK; if (!sscanf (val, _("Near %d"), &xval)) { if (!sscanf (val, _("Far %d"), &xval)) { GP_LOG_D ("Could not parse %s", val); return GP_ERROR; } else { xval |= 0x8000; } } C_PTP_MSG (ptp_canon_eos_drivelens (params, xval), "Canon manual focus drive 0x%x failed", xval); /* Get the next set of event data */ C_PTP (ptp_check_eos_events (params)); return GP_OK; } static int _get_Canon_EOS_Zoom(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_value (*widget, "0"); return (GP_OK); } /* Only 1 and 5 seem to work on the EOS 1000D */ static int _put_Canon_EOS_Zoom(CONFIG_PUT_ARGS) { const char* val; unsigned int xval; PTPParams *params = &(camera->pl->params); if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_Zoom)) return (GP_ERROR_NOT_SUPPORTED); gp_widget_get_value(widget, &val); if (!sscanf (val, "%d", &xval)) { GP_LOG_D ("Could not parse %s", val); return GP_ERROR; } C_PTP_MSG (ptp_canon_eos_zoom (params, xval), "Canon zoom 0x%x failed", xval); /* Get the next set of event data */ C_PTP (ptp_check_eos_events (params)); return GP_OK; } /* EOS Zoom. Works in approx 64 pixel steps on the EOS 1000D, but just accept * all kind of pairs */ static int _get_Canon_EOS_ZoomPosition(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_value (*widget, "0,0"); return (GP_OK); } static int _put_Canon_EOS_ZoomPosition(CONFIG_PUT_ARGS) { const char* val; unsigned int x,y; PTPParams *params = &(camera->pl->params); if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_ZoomPosition)) return (GP_ERROR_NOT_SUPPORTED); gp_widget_get_value(widget, &val); if (2!=sscanf (val, "%d,%d", &x,&y)) { GP_LOG_D ("Could not parse %s (expected 'x,y')", val); return GP_ERROR; } C_PTP_MSG (ptp_canon_eos_zoomposition (params, x,y), "Canon zoom position %d,%d failed", x, y); /* Get the next set of event data */ C_PTP (ptp_check_eos_events (params)); return GP_OK; } static int _get_Canon_CHDK_Script(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_add_choice (*widget, "cls();exit_alt();"); gp_widget_add_choice (*widget, "shoot();cls();exit_alt();"); gp_widget_set_value (*widget, "cls();exit_alt();"); return (GP_OK); } static int _put_Canon_CHDK_Script(CONFIG_PUT_ARGS) { char *script; PTPParams *params = &(camera->pl->params); int script_id; unsigned int status; int luastatus; CR (gp_widget_get_value(widget, &script)); // Nafraf: Working on this!!! // // gphoto: config.c // ret = ptp_chdk_exec_lua (params, val, &output); // // chdkptp: chdkptp.c // ret = ptp_chdk_exec_lua (params, // (char *)luaL_optstring(L,2,""), // luaL_optnumber(L,3,0), // &ptp_cs->script_id, // &status) // // Unfinished, I'm not sure of last 3 parameters GP_LOG_D ("calling script: %s", script); C_PTP (ptp_chdk_exec_lua (params, script, 0, &script_id, &luastatus)); GP_LOG_D ("called script, id %d, status %d", script_id, luastatus); while (1) { C_PTP (ptp_chdk_get_script_status(params, &status)); GP_LOG_D ("script status %x", status); if (status & PTP_CHDK_SCRIPT_STATUS_MSG) { ptp_chdk_script_msg *msg = NULL; C_PTP (ptp_chdk_read_script_msg(params, &msg)); GP_LOG_D ("message script id %d, type %d, subtype %d", msg->script_id, msg->type, msg->subtype); GP_LOG_D ("message script %s", msg->data); free (msg); } if (!(status & PTP_CHDK_SCRIPT_STATUS_RUN)) break; usleep(100000); } return GP_OK; } static int _get_STR_as_time(CONFIG_GET_ARGS) { time_t camtime; struct tm tm; char capture_date[64],tmp[5]; /* strptime() is not widely accepted enough to use yet */ memset(&tm,0,sizeof(tm)); if (!dpd->CurrentValue.str) return (GP_ERROR); gp_widget_new (GP_WIDGET_DATE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); strncpy(capture_date,dpd->CurrentValue.str,sizeof(capture_date)); strncpy (tmp, capture_date, 4); tmp[4] = 0; tm.tm_year=atoi (tmp) - 1900; strncpy (tmp, capture_date + 4, 2); tmp[2] = 0; tm.tm_mon = atoi (tmp) - 1; strncpy (tmp, capture_date + 6, 2); tmp[2] = 0; tm.tm_mday = atoi (tmp); strncpy (tmp, capture_date + 9, 2); tmp[2] = 0; tm.tm_hour = atoi (tmp); strncpy (tmp, capture_date + 11, 2); tmp[2] = 0; tm.tm_min = atoi (tmp); strncpy (tmp, capture_date + 13, 2); tmp[2] = 0; tm.tm_sec = atoi (tmp); tm.tm_isdst = -1; /* autodetect */ camtime = mktime(&tm); gp_widget_set_value (*widget,&camtime); return (GP_OK); } static int _put_STR_as_time(CONFIG_PUT_ARGS) { time_t camtime; #ifdef HAVE_GMTIME_R struct tm xtm; #endif struct tm *pxtm; char asctime[64]; camtime = 0; CR (gp_widget_get_value (widget,&camtime)); #ifdef HAVE_GMTIME_R memset(&xtm,0,sizeof(xtm)); pxtm = localtime_r (&camtime, &xtm); #else pxtm = localtime (&camtime); #endif /* 20020101T123400.0 is returned by the HP Photosmart */ sprintf(asctime,"%04d%02d%02dT%02d%02d%02d",pxtm->tm_year+1900,pxtm->tm_mon+1,pxtm->tm_mday,pxtm->tm_hour,pxtm->tm_min,pxtm->tm_sec); /* if the camera reported fractional seconds, also add it */ if (strchr(dpd->CurrentValue.str,'.')) strcat(asctime,".0"); C_MEM (propval->str = strdup(asctime)); return (GP_OK); } static int _put_None(CONFIG_PUT_ARGS) { return (GP_ERROR_NOT_SUPPORTED); } static int _get_Canon_CaptureMode(CONFIG_GET_ARGS) { int val; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); /* we use presence of FlashMode as indication of capture enablement or not */ val = have_prop (camera, PTP_VENDOR_CANON, PTP_DPC_CANON_FlashMode); return gp_widget_set_value (*widget, &val); } static int _put_Canon_CaptureMode(CONFIG_PUT_ARGS) { int val; CR (gp_widget_get_value(widget, &val)); if (val) return camera_prepare_capture (camera, NULL); else return camera_unprepare_capture (camera, NULL); } static int _get_Canon_EOS_ViewFinder(CONFIG_GET_ARGS) { int val; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); val = 2; /* always changed, unless we can find out the state ... */ gp_widget_set_value (*widget, &val); return (GP_OK); } static int _put_Canon_EOS_ViewFinder(CONFIG_PUT_ARGS) { int val; uint16_t res; PTPParams *params = &(camera->pl->params); PTPPropertyValue xval; CR (gp_widget_get_value(widget, &val)); if (val) { if (ptp_operation_issupported(params, PTP_OC_CANON_EOS_InitiateViewfinder)) { res = ptp_canon_eos_start_viewfinder (params); params->inliveview = 1; return translate_ptp_result (res); } } else { if (ptp_operation_issupported(params, PTP_OC_CANON_EOS_TerminateViewfinder)) { res = ptp_canon_eos_end_viewfinder (params); params->inliveview = 0; return translate_ptp_result (res); } } if (val) xval.u32 = 2; else xval.u32 = 0; C_PTP_MSG (ptp_canon_eos_setdevicepropvalue (params, PTP_DPC_CANON_EOS_EVFOutputDevice, &xval, PTP_DTC_UINT32), "ptp2_eos_viewfinder enable", "setval of evf outputmode to %d failed", xval.u32); return GP_OK; } static int _get_Nikon_ViewFinder(CONFIG_GET_ARGS) { int val; PTPPropertyValue value; PTPParams *params = &(camera->pl->params); gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (LOG_ON_PTP_E (ptp_getdevicepropvalue (params, PTP_DPC_NIKON_LiveViewStatus, &value, PTP_DTC_UINT8)) != PTP_RC_OK ) value.u8 = 0; val = value.u8 ? 1 : 0; gp_widget_set_value (*widget, &val); return (GP_OK); } static int _put_Nikon_ViewFinder(CONFIG_PUT_ARGS) { int val; PTPParams *params = &(camera->pl->params); GPContext *context = ((PTPData *) params->data)->context; if (!ptp_operation_issupported(params, PTP_OC_NIKON_StartLiveView)) return GP_ERROR_NOT_SUPPORTED; CR (gp_widget_get_value (widget, &val)); if (val) { PTPPropertyValue value; if (LOG_ON_PTP_E (ptp_getdevicepropvalue (params, PTP_DPC_NIKON_LiveViewStatus, &value, PTP_DTC_UINT8)) != PTP_RC_OK) value.u8 = 0; if (!value.u8) { value.u8 = 1; LOG_ON_PTP_E (ptp_setdevicepropvalue (params, PTP_DPC_NIKON_RecordingMedia, &value, PTP_DTC_UINT8)); C_PTP_REP_MSG (ptp_nikon_start_liveview (params), _("Nikon enable liveview failed")); /* Has to put the mirror up, so takes a bit. */ C_PTP (nikon_wait_busy(params, 50, 1000)); } } else { if (ptp_operation_issupported(params, PTP_OC_NIKON_EndLiveView)) C_PTP (ptp_nikon_end_liveview (params)); } return GP_OK; } static int _get_Canon_FocusLock(CONFIG_GET_ARGS) { int val; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); val = 2; /* always changed */ gp_widget_set_value (*widget, &val); return (GP_OK); } static int _put_Canon_FocusLock(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); int val; CR (gp_widget_get_value(widget, &val)); if (val) C_PTP (ptp_canon_focuslock (params)); else C_PTP (ptp_canon_focusunlock (params)); return GP_OK; } static int _get_PowerDown(CONFIG_GET_ARGS) { int val; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); val = 2; /* always changed */ gp_widget_set_value (*widget, &val); return (GP_OK); } static int _put_PowerDown(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); int val; CR (gp_widget_get_value(widget, &val)); if (val) C_PTP (ptp_powerdown (params)); return GP_OK; } static int _get_Sony_Movie(CONFIG_GET_ARGS) { int val; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); val = 2; /* always changed */ gp_widget_set_value (*widget, &val); return (GP_OK); } static int _put_Sony_Movie(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); int val; PTPPropertyValue value; GPContext *context = ((PTPData *) params->data)->context; CR (gp_widget_get_value(widget, &val)); if (val) value.u16 = 2; else value.u16 = 1; C_PTP_REP (ptp_sony_setdevicecontrolvalueb (params, 0xD2C8, &value, PTP_DTC_UINT16 )); return GP_OK; } static int _get_Nikon_Movie(CONFIG_GET_ARGS) { int val; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); val = 2; /* always changed */ gp_widget_set_value (*widget, &val); return (GP_OK); } static int _put_Nikon_Movie(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); int val, ret; GPContext *context = ((PTPData *) params->data)->context; CR (gp_widget_get_value(widget, &val)); if (val) { PTPPropertyValue value; if (have_prop(camera,PTP_VENDOR_NIKON,PTP_DPC_NIKON_ApplicationMode)) { value.u8 = 0; C_PTP (ptp_getdevicepropvalue (params, PTP_DPC_NIKON_ApplicationMode, &value, PTP_DTC_UINT8)); if (value.u8 != 1) { value.u8 = 1; C_PTP (ptp_setdevicepropvalue (params, PTP_DPC_NIKON_ApplicationMode, &value, PTP_DTC_UINT8)); } } ret = ptp_getdevicepropvalue (params, PTP_DPC_NIKON_LiveViewStatus, &value, PTP_DTC_UINT8); if (ret != PTP_RC_OK) value.u8 = 0; if (!value.u8) { value.u8 = 1; LOG_ON_PTP_E (ptp_setdevicepropvalue (params, PTP_DPC_NIKON_RecordingMedia, &value, PTP_DTC_UINT8)); C_PTP_REP_MSG (ptp_nikon_start_liveview (params), _("Nikon enable liveview failed")); C_PTP_REP_MSG (nikon_wait_busy(params, 50, 1000), _("Nikon enable liveview failed")); } C_PTP_REP (ptp_nikon_startmovie (params)); } else C_PTP_REP (ptp_nikon_stopmovie (params)); return GP_OK; } static int _get_Nikon_Bulb(CONFIG_GET_ARGS) { int val; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); val = 2; /* always changed */ gp_widget_set_value (*widget, &val); return (GP_OK); } static int _put_Nikon_Bulb(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); int val; CR (gp_widget_get_value(widget, &val)); if (val) { PTPPropertyValue propval2; char buf[20]; C_PTP (ptp_nikon_setcontrolmode (params, 1)); propval2.u16 = 1; /* Exposure Mode to Full Manual */ C_PTP (ptp_setdevicepropvalue (params, PTP_DPC_ExposureProgramMode, &propval2, PTP_DTC_UINT16)); propval2.u32 = 0xffffffff; /* Exposure Time to bulb */ C_PTP_MSG (ptp_setdevicepropvalue (params, PTP_DPC_ExposureTime, &propval2, PTP_DTC_UINT32), "failed to set exposuretime to bulb"); /* If there is no capturetarget set yet, the default is "sdram" */ if (GP_OK != gp_setting_get("ptp2","capturetarget",buf)) strcpy (buf, "sdram"); C_PTP_MSG (ptp_nikon_capture2 (params, 0/*No AF*/, !strcmp(buf,"sdram")), "failed to initiate bulb capture"); return GP_OK; } else { C_PTP (ptp_nikon_terminatecapture (params, 0, 0)); C_PTP (nikon_wait_busy(params, 100, 5000)); return GP_OK; } } static int _get_OpenCapture(CONFIG_GET_ARGS) { int val; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); val = 2; /* always changed */ gp_widget_set_value (*widget, &val); return GP_OK; } static int _put_OpenCapture(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); int val; GPContext *context = ((PTPData *) params->data)->context; CR (gp_widget_get_value(widget, &val)); if (val) { C_PTP_REP (ptp_initiateopencapture (params, 0x0, 0x0)); /* so far use only defaults for storage and ofc */ params->opencapture_transid = params->transaction_id; } else { C_PTP_REP (ptp_terminateopencapture (params, params->opencapture_transid)); } return GP_OK; } static int _get_Sony_Bulb(CONFIG_GET_ARGS) { int val; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); val = 2; /* always changed */ gp_widget_set_value (*widget, &val); return (GP_OK); } static int _put_Sony_Bulb(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); int val; PTPPropertyValue xpropval; CR (gp_widget_get_value(widget, &val)); if (val) { xpropval.u16 = 1; C_PTP (ptp_sony_setdevicecontrolvalueb (params, 0xD2C1, &xpropval, PTP_DTC_UINT16)); xpropval.u16 = 2; C_PTP (ptp_sony_setdevicecontrolvalueb (params, PTP_DPC_SONY_StillImage, &xpropval, PTP_DTC_UINT16)); } else { xpropval.u16 = 1; C_PTP (ptp_sony_setdevicecontrolvalueb (params, 0xD2C2, &xpropval, PTP_DTC_UINT16)); xpropval.u16 = 1; C_PTP (ptp_sony_setdevicecontrolvalueb (params, 0xD2C1, &xpropval, PTP_DTC_UINT16)); } return GP_OK; } static int _get_Canon_EOS_Bulb(CONFIG_GET_ARGS) { int val; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); val = 2; /* always changed */ gp_widget_set_value (*widget, &val); return (GP_OK); } static int _put_Canon_EOS_Bulb(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); int val; GPContext *context = ((PTPData *) params->data)->context; CR (gp_widget_get_value(widget, &val)); if (val) { int ret = ptp_canon_eos_bulbstart (params); if (ret == PTP_RC_GeneralError) { gp_context_error (((PTPData *) camera->pl->params.data)->context, _("For bulb capture to work, make sure the mode dial is switched to 'M' and set 'shutterspeed' to 'bulb'.")); return translate_ptp_result (ret); } C_PTP_REP (ret); } else { C_PTP_REP (ptp_canon_eos_bulbend (params)); } return GP_OK; } static int _get_Canon_EOS_UILock(CONFIG_GET_ARGS) { int val; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget,menu->name); val = 2; /* always changed */ gp_widget_set_value (*widget, &val); return (GP_OK); } static int _put_Canon_EOS_UILock(CONFIG_PUT_ARGS) { PTPParams *params = &(camera->pl->params); int val; GPContext *context = ((PTPData *) params->data)->context; CR (gp_widget_get_value(widget, &val)); if (val) C_PTP_REP (ptp_canon_eos_setuilock (params)); else C_PTP_REP (ptp_canon_eos_resetuilock (params)); return GP_OK; } static int _get_Nikon_FastFS(CONFIG_GET_ARGS) { int val; char buf[1024]; gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); val = 1; /* default is fast fs */ if (GP_OK == gp_setting_get("ptp2","nikon.fastfilesystem", buf)) val = atoi(buf); gp_widget_set_value (*widget, &val); return (GP_OK); } static int _put_Nikon_FastFS(CONFIG_PUT_ARGS) { int val; char buf[20]; CR (gp_widget_get_value(widget, &val)); sprintf(buf,"%d",val); gp_setting_set("ptp2","nikon.fastfilesystem",buf); return GP_OK; } static struct { char *name; char *label; } capturetargets[] = { {"sdram", N_("Internal RAM") }, {"card", N_("Memory card") }, }; static int _get_CaptureTarget(CONFIG_GET_ARGS) { int i; char buf[1024]; gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (GP_OK != gp_setting_get("ptp2","capturetarget", buf)) strcpy(buf,"sdram"); for (i=0;ipl->params); GPContext *context = ((PTPData *) params->data)->context; CR (gp_widget_get_value(widget, &val)); for (i=0;ideviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(&camera->pl->params, PTP_OC_CANON_EOS_RemoteRelease) ) CR (camera_canon_eos_update_capture_target( camera, context, -1 )); return GP_OK; } static struct { char *name; char *label; } chdkonoff[] = { {"on", N_("On") }, {"off", N_("Off") }, }; static int _get_CHDK(CONFIG_GET_ARGS) { int i; char buf[1024]; gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (GP_OK != gp_setting_get("ptp2","chdk", buf)) strcpy(buf,"off"); for (i=0;ipl->params); if (camera->pl->params.deviceinfo.VendorExtensionID != PTP_VENDOR_NIKON) return (GP_ERROR_NOT_SUPPORTED); for (i = 0; i < gp_widget_count_children(widget); i++) { gp_widget_get_child(widget, i, &child); gp_widget_get_child_by_name(child, "delete", &child2); gp_widget_get_value(child2, &value); if (value) { gp_widget_get_name(child, &name); /* FIXME: far from elegant way to get ID back... */ val = strtol(name, &endptr, 0); if (!*endptr) { C_PTP (ptp_nikon_deletewifiprofile(&(camera->pl->params), val)); gp_widget_set_value(child2, 0); } } } /* FIXME: deleted entry still exists, rebuild tree if deleted = 1 ? */ return GP_OK; } static int _get_nikon_list_wifi_profiles (CONFIG_GET_ARGS) { CameraWidget *child; int ret; char buffer[4096]; int i; PTPParams *params = &(camera->pl->params); if (params->deviceinfo.VendorExtensionID != PTP_VENDOR_NIKON) return (GP_ERROR_NOT_SUPPORTED); /* check for more codes, on non-wireless nikons getwifiprofilelist might hang */ if (!ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_GetProfileAllData) || !ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_SendProfileData) || !ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_DeleteProfile) || !ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_SetProfileData)) return (GP_ERROR_NOT_SUPPORTED); ret = ptp_nikon_getwifiprofilelist(params); if (ret != PTP_RC_OK) return (GP_ERROR_NOT_SUPPORTED); gp_widget_new (GP_WIDGET_SECTION, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_new (GP_WIDGET_TEXT, "Version", &child); snprintf(buffer, 4096, "%d", params->wifi_profiles_version); gp_widget_set_value(child, buffer); gp_widget_append(*widget, child); for (i = 0; i < params->wifi_profiles_number; i++) { CameraWidget *child2; if (params->wifi_profiles[i].valid) { gp_widget_new (GP_WIDGET_SECTION, params->wifi_profiles[i].profile_name, &child); snprintf(buffer, 4096, "%d", params->wifi_profiles[i].id); gp_widget_set_name(child, buffer); gp_widget_append(*widget, child); gp_widget_new (GP_WIDGET_TEXT, _("ID"), &child2); snprintf (buffer, 4096, "%d", params->wifi_profiles[i].id); gp_widget_set_value(child2, buffer); gp_widget_append(child, child2); gp_widget_new (GP_WIDGET_TEXT, _("ESSID"), &child2); snprintf (buffer, 4096, "%s", params->wifi_profiles[i].essid); gp_widget_set_value(child2, buffer); gp_widget_append(child, child2); gp_widget_new (GP_WIDGET_TEXT, _("Display"), &child2); snprintf (buffer, 4096, "Order: %d, Icon: %d, Device type: %d", params->wifi_profiles[i].display_order, params->wifi_profiles[i].icon_type, params->wifi_profiles[i].device_type); gp_widget_set_value(child2, buffer); gp_widget_append(child, child2); gp_widget_new (GP_WIDGET_TEXT, "Dates", &child2); snprintf (buffer, 4096, _("Creation date: %s, Last usage date: %s"), params->wifi_profiles[i].creation_date, params->wifi_profiles[i].lastusage_date); gp_widget_set_value(child2, buffer); gp_widget_append(child, child2); gp_widget_new (GP_WIDGET_TOGGLE, _("Delete"), &child2); gp_widget_set_value(child2, 0); gp_widget_set_name(child2, "delete"); gp_widget_append(child, child2); } } return GP_OK; } static int _get_nikon_wifi_profile_prop(CONFIG_GET_ARGS) { char buffer[1024]; gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_setting_get("ptp2_wifi",menu->name,buffer); gp_widget_set_value(*widget,buffer); return (GP_OK); } static int _put_nikon_wifi_profile_prop(CONFIG_PUT_ARGS) { char *string, *name; CR (gp_widget_get_value(widget, &string)); gp_widget_get_name(widget,(const char**)&name); gp_setting_set("ptp2_wifi",name,string); return (GP_OK); } static int _get_nikon_wifi_profile_channel(CONFIG_GET_ARGS) { char buffer[1024]; float val; gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_setting_get("ptp2_wifi", menu->name, buffer); val = (float)atoi(buffer); gp_widget_set_range(*widget, 1.0, 11.0, 1.0); if (!val) val = 1.0; gp_widget_set_value(*widget, &val); return (GP_OK); } static int _put_nikon_wifi_profile_channel(CONFIG_PUT_ARGS) { char *name; float val; char buffer[16]; CR (gp_widget_get_value(widget, &val)); gp_widget_get_name(widget,(const char**)&name); snprintf(buffer, 16, "%d", (int)val); gp_setting_set("ptp2_wifi",name,buffer); return GP_OK; } static char* encryption_values[] = { N_("None"), N_("WEP 64-bit"), N_("WEP 128-bit"), NULL }; static int _get_nikon_wifi_profile_encryption(CONFIG_GET_ARGS) { char buffer[1024]; int i; int val; gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_setting_get("ptp2_wifi", menu->name, buffer); val = atoi(buffer); for (i = 0; encryption_values[i]; i++) { gp_widget_add_choice(*widget, _(encryption_values[i])); if (i == val) gp_widget_set_value(*widget, _(encryption_values[i])); } return (GP_OK); } static int _put_nikon_wifi_profile_encryption(CONFIG_PUT_ARGS) { char *string, *name; int i; char buffer[16]; CR (gp_widget_get_value(widget, &string)); gp_widget_get_name(widget,(const char**)&name); for (i = 0; encryption_values[i]; i++) { if (!strcmp(_(encryption_values[i]), string)) { snprintf(buffer, 16, "%d", i); gp_setting_set("ptp2_wifi",name,buffer); return GP_OK; } } return GP_ERROR_BAD_PARAMETERS; } static char* accessmode_values[] = { N_("Managed"), N_("Ad-hoc"), NULL }; static int _get_nikon_wifi_profile_accessmode(CONFIG_GET_ARGS) { char buffer[1024]; int i; int val; gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_setting_get("ptp2_wifi", menu->name, buffer); val = atoi(buffer); for (i = 0; accessmode_values[i]; i++) { gp_widget_add_choice(*widget, _(accessmode_values[i])); if (i == val) gp_widget_set_value(*widget, _(accessmode_values[i])); } return (GP_OK); } static int _put_nikon_wifi_profile_accessmode(CONFIG_PUT_ARGS) { char *string, *name; int i; char buffer[16]; CR (gp_widget_get_value(widget, &string)); gp_widget_get_name(widget,(const char**)&name); for (i = 0; accessmode_values[i]; i++) { if (!strcmp(_(accessmode_values[i]), string)) { snprintf(buffer, 16, "%d", i); gp_setting_set("ptp2_wifi",name,buffer); return GP_OK; } } return GP_ERROR_BAD_PARAMETERS; } static int _get_nikon_wifi_profile_write(CONFIG_GET_ARGS) { gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_value(*widget, 0); return (GP_OK); } static int _put_nikon_wifi_profile_write(CONFIG_PUT_ARGS) { char buffer[1024]; char keypart[3]; char* pos, *endptr; int value, i; CR (gp_widget_get_value(widget, &value)); if (value) { struct in_addr inp; PTPNIKONWifiProfile profile; memset(&profile, 0, sizeof(PTPNIKONWifiProfile)); profile.icon_type = 1; profile.key_nr = 1; gp_setting_get("ptp2_wifi","name",buffer); strncpy(profile.profile_name, buffer, 16); gp_setting_get("ptp2_wifi","essid",buffer); strncpy(profile.essid, buffer, 32); gp_setting_get("ptp2_wifi","accessmode",buffer); profile.access_mode = atoi(buffer); gp_setting_get("ptp2_wifi","ipaddr",buffer); /* fixme: replacement on win32 where we do not have this helper */ #ifdef HAVE_INET_ATON if (buffer[0] != 0) { /* No DHCP */ C_PARAMS_MSG (inet_aton (buffer, &inp), "failed to scan for addr in %s.", buffer); profile.ip_address = inp.s_addr; gp_setting_get("ptp2_wifi","netmask",buffer); C_PARAMS_MSG (inet_aton (buffer, &inp), "failed to scan for netmask in %s.", buffer); inp.s_addr = be32toh(inp.s_addr); /* Reverse bytes so we can use the code below. */ profile.subnet_mask = 32; while (((inp.s_addr >> (32-profile.subnet_mask)) & 0x01) == 0) { profile.subnet_mask--; C_PARAMS_MSG (profile.subnet_mask > 0, "Invalid subnet mask %s: no zeros.", buffer); } /* Check there is only ones left */ C_PARAMS_MSG ((inp.s_addr | ((0x01 << (32-profile.subnet_mask)) - 1)) == 0xFFFFFFFF, "Invalid subnet mask %s: misplaced zeros.", buffer); /* Gateway (never tested) */ gp_setting_get("ptp2_wifi","gw",buffer); if (*buffer) { C_PARAMS_MSG (inet_aton (buffer, &inp), "failed to scan for gw in %s", buffer); profile.gateway_address = inp.s_addr; } } else #endif { /* DHCP */ /* Never use mode 2, as mode 3 switches to mode 2 * if it gets no DHCP answer. */ profile.address_mode = 3; } gp_setting_get("ptp2_wifi","channel",buffer); profile.wifi_channel = atoi(buffer); /* Encryption */ gp_setting_get("ptp2_wifi","encryption",buffer); profile.encryption = atoi(buffer); if (profile.encryption != 0) { gp_setting_get("ptp2_wifi","key",buffer); i = 0; pos = buffer; keypart[2] = 0; while (*pos) { C_PARAMS_MSG (*(pos+1), "Bad key: '%s'", buffer); keypart[0] = *(pos++); keypart[1] = *(pos++); profile.key[i++] = strtol(keypart, &endptr, 16); C_PARAMS_MSG (endptr == keypart+2, "Bad key: '%s', '%s' is not a number.", buffer, keypart); if (*pos == ':') pos++; } if (profile.encryption == 1) /* WEP 64-bit */ C_PARAMS_MSG (i == 5, "Bad key: '%s', %d bit length, should be 40 bit.", buffer, i*8); /* 5*8 = 40 bit + 24 bit (IV) = 64 bit */ else if (profile.encryption == 2) /* WEP 128-bit */ C_PARAMS_MSG (i == 13, "Bad key: '%s', %d bit length, should be 104 bit.", buffer, i*8); /* 13*8 = 104 bit + 24 bit (IV) = 128 bit */ } ptp_nikon_writewifiprofile(&(camera->pl->params), &profile); } return (GP_OK); } static struct submenu create_wifi_profile_submenu[] = { { N_("Profile name"), "name", 0, PTP_VENDOR_NIKON, 0, _get_nikon_wifi_profile_prop, _put_nikon_wifi_profile_prop }, { N_("WIFI ESSID"), "essid", 0, PTP_VENDOR_NIKON, 0, _get_nikon_wifi_profile_prop, _put_nikon_wifi_profile_prop }, { N_("IP address (empty for DHCP)"), "ipaddr", 0, PTP_VENDOR_NIKON, 0, _get_nikon_wifi_profile_prop, _put_nikon_wifi_profile_prop }, { N_("Network mask"), "netmask", 0, PTP_VENDOR_NIKON, 0, _get_nikon_wifi_profile_prop, _put_nikon_wifi_profile_prop }, { N_("Default gateway"), "gw", 0, PTP_VENDOR_NIKON, 0, _get_nikon_wifi_profile_prop, _put_nikon_wifi_profile_prop }, { N_("Access mode"), "accessmode", 0, PTP_VENDOR_NIKON, 0, _get_nikon_wifi_profile_accessmode, _put_nikon_wifi_profile_accessmode }, { N_("WIFI channel"), "channel", 0, PTP_VENDOR_NIKON, 0, _get_nikon_wifi_profile_channel, _put_nikon_wifi_profile_channel }, { N_("Encryption"), "encryption", 0, PTP_VENDOR_NIKON, 0, _get_nikon_wifi_profile_encryption, _put_nikon_wifi_profile_encryption }, { N_("Encryption key (hex)"), "key", 0, PTP_VENDOR_NIKON, 0, _get_nikon_wifi_profile_prop, _put_nikon_wifi_profile_prop }, { N_("Write"), "write", 0, PTP_VENDOR_NIKON, 0, _get_nikon_wifi_profile_write, _put_nikon_wifi_profile_write }, { 0,0,0,0,0,0,0 }, }; static int _get_nikon_create_wifi_profile (CONFIG_GET_ARGS) { int submenuno, ret; CameraWidget *subwidget; gp_widget_new (GP_WIDGET_SECTION, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (submenuno = 0; create_wifi_profile_submenu[submenuno].name ; submenuno++ ) { struct submenu *cursub = create_wifi_profile_submenu+submenuno; ret = cursub->getfunc (camera, &subwidget, cursub, NULL); if (ret == GP_OK) gp_widget_append (*widget, subwidget); } return GP_OK; } static int _put_nikon_create_wifi_profile (CONFIG_PUT_ARGS) { int submenuno, ret; CameraWidget *subwidget; for (submenuno = 0; create_wifi_profile_submenu[submenuno].name ; submenuno++ ) { struct submenu *cursub = create_wifi_profile_submenu+submenuno; ret = gp_widget_get_child_by_label (widget, _(cursub->label), &subwidget); if (ret != GP_OK) continue; if (!gp_widget_changed (subwidget)) continue; ret = cursub->putfunc (camera, subwidget, NULL, NULL); } return GP_OK; } static struct submenu wifi_profiles_menu[] = { /* wifi */ { N_("List Wifi profiles"), "list", 0, PTP_VENDOR_NIKON, 0, _get_nikon_list_wifi_profiles, _put_nikon_list_wifi_profiles }, { N_("Create Wifi profile"), "new", 0, PTP_VENDOR_NIKON, 0, _get_nikon_create_wifi_profile, _put_nikon_create_wifi_profile }, { 0,0,0,0,0,0,0 }, }; /* Wifi profiles menu is a non-standard menu, because putfunc is always * called on each submenu, whether or not the value has been changed. */ static int _get_wifi_profiles_menu (CONFIG_MENU_GET_ARGS) { CameraWidget *subwidget; int submenuno, ret; if (camera->pl->params.deviceinfo.VendorExtensionID != PTP_VENDOR_NIKON) return (GP_ERROR_NOT_SUPPORTED); if (!ptp_operation_issupported (&camera->pl->params, PTP_OC_NIKON_GetProfileAllData)) return (GP_ERROR_NOT_SUPPORTED); gp_widget_new (GP_WIDGET_SECTION, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); for (submenuno = 0; wifi_profiles_menu[submenuno].name ; submenuno++ ) { struct submenu *cursub = wifi_profiles_menu+submenuno; ret = cursub->getfunc (camera, &subwidget, cursub, NULL); if (ret == GP_OK) gp_widget_append (*widget, subwidget); } return GP_OK; } static int _put_wifi_profiles_menu (CONFIG_MENU_PUT_ARGS) { int submenuno, ret; CameraWidget *subwidget; for (submenuno = 0; wifi_profiles_menu[submenuno].name ; submenuno++ ) { struct submenu *cursub = wifi_profiles_menu+submenuno; ret = gp_widget_get_child_by_label (widget, _(cursub->label), &subwidget); if (ret != GP_OK) continue; ret = cursub->putfunc (camera, subwidget, NULL, NULL); } return GP_OK; } static int _get_PTP_DeviceVersion_STR(CONFIG_GET_ARGS) { PTPParams *params = &camera->pl->params; gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_value (*widget,params->deviceinfo.DeviceVersion?params->deviceinfo.DeviceVersion:_("None")); return GP_OK; } static int _get_PTP_Model_STR(CONFIG_GET_ARGS) { PTPParams *params = &camera->pl->params; gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_value (*widget,params->deviceinfo.Model?params->deviceinfo.Model:_("None")); return GP_OK; } static int _get_PTP_VendorExtension_STR(CONFIG_GET_ARGS) { PTPParams *params = &camera->pl->params; gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_value (*widget,params->deviceinfo.VendorExtensionDesc?params->deviceinfo.VendorExtensionDesc:_("None")); return GP_OK; } static int _get_PTP_Serial_STR(CONFIG_GET_ARGS) { PTPParams *params = &camera->pl->params; gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_value (*widget,params->deviceinfo.SerialNumber?params->deviceinfo.SerialNumber:_("None")); return GP_OK; } static int _get_PTP_Manufacturer_STR(CONFIG_GET_ARGS) { PTPParams *params = &camera->pl->params; gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); gp_widget_set_value (*widget,params->deviceinfo.Manufacturer?params->deviceinfo.Manufacturer:_("None")); return GP_OK; } static struct submenu camera_actions_menu[] = { /* { N_("Viewfinder Mode"), "viewfinder", PTP_DPC_CANON_ViewFinderMode, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_Canon_ViewFinderMode, _put_Canon_ViewFinderMode}, */ /*{ N_("Synchronize camera date and time with PC"),"syncdatetime", PTP_DPC_CANON_UnixTime, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_Canon_SyncTime, _put_Canon_SyncTime },*/ { N_("Synchronize camera date and time with PC"),"syncdatetime", PTP_DPC_CANON_EOS_UTCTime, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_Canon_SyncTime, _put_Canon_SyncTime }, { N_("Synchronize camera date and time with PC"),"syncdatetime", PTP_DPC_CANON_EOS_CameraTime, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_Canon_SyncTime, _put_Canon_SyncTime }, { N_("Power Down"), "powerdown", 0, 0, PTP_OC_PowerDown, _get_PowerDown, _put_PowerDown }, { N_("Focus Lock"), "focuslock", 0, PTP_VENDOR_CANON, PTP_OC_CANON_FocusLock, _get_Canon_FocusLock, _put_Canon_FocusLock }, { N_("Bulb Mode"), "bulb", 0xd2c1, PTP_VENDOR_SONY, 0, _get_Sony_Bulb, _put_Sony_Bulb }, { N_("Bulb Mode"), "bulb", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_BulbStart, _get_Canon_EOS_Bulb, _put_Canon_EOS_Bulb }, { N_("Bulb Mode"), "bulb", 0, PTP_VENDOR_NIKON, PTP_OC_NIKON_TerminateCapture, _get_Nikon_Bulb, _put_Nikon_Bulb }, { N_("UI Lock"), "uilock", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_SetUILock, _get_Canon_EOS_UILock, _put_Canon_EOS_UILock }, { N_("Drive Nikon DSLR Autofocus"), "autofocusdrive", 0, PTP_VENDOR_NIKON, PTP_OC_NIKON_AfDrive, _get_Nikon_AFDrive, _put_Nikon_AFDrive }, { N_("Drive Canon DSLR Autofocus"), "autofocusdrive", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_DoAf, _get_Canon_EOS_AFDrive, _put_Canon_EOS_AFDrive }, { N_("Drive Nikon DSLR Manual focus"), "manualfocusdrive", 0, PTP_VENDOR_NIKON, PTP_OC_NIKON_MfDrive, _get_Nikon_MFDrive, _put_Nikon_MFDrive }, { N_("Set Nikon Autofocus area"), "changeafarea", 0, PTP_VENDOR_NIKON, PTP_OC_NIKON_ChangeAfArea, _get_Nikon_ChangeAfArea, _put_Nikon_ChangeAfArea }, { N_("Set Nikon Control Mode"), "controlmode", 0, PTP_VENDOR_NIKON, PTP_OC_NIKON_SetControlMode, _get_Nikon_ControlMode, _put_Nikon_ControlMode }, { N_("Drive Canon DSLR Manual focus"), "manualfocusdrive", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_DriveLens, _get_Canon_EOS_MFDrive, _put_Canon_EOS_MFDrive }, { N_("Cancel Canon DSLR Autofocus"), "cancelautofocus", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_AfCancel, _get_Canon_EOS_AFCancel, _put_Canon_EOS_AFCancel }, { N_("Canon EOS Zoom"), "eoszoom", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_Zoom, _get_Canon_EOS_Zoom, _put_Canon_EOS_Zoom }, { N_("Canon EOS Zoom Position"), "eoszoomposition", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_ZoomPosition, _get_Canon_EOS_ZoomPosition, _put_Canon_EOS_ZoomPosition }, { N_("Canon EOS Viewfinder"), "viewfinder", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_GetViewFinderData, _get_Canon_EOS_ViewFinder, _put_Canon_EOS_ViewFinder }, { N_("Nikon Viewfinder"), "viewfinder", 0, PTP_VENDOR_NIKON, PTP_OC_NIKON_StartLiveView, _get_Nikon_ViewFinder, _put_Nikon_ViewFinder }, { N_("Canon EOS Remote Release"), "eosremoterelease", 0, PTP_VENDOR_CANON, PTP_OC_CANON_EOS_RemoteReleaseOn, _get_Canon_EOS_RemoteRelease, _put_Canon_EOS_RemoteRelease }, { N_("CHDK Script"), "chdk_script", 0, PTP_VENDOR_CANON, PTP_OC_CHDK, _get_Canon_CHDK_Script, _put_Canon_CHDK_Script }, { N_("Movie Capture"), "movie", 0, 0, PTP_OC_InitiateOpenCapture, _get_OpenCapture, _put_OpenCapture }, { N_("Movie Capture"), "movie", 0, PTP_VENDOR_NIKON, PTP_OC_NIKON_StartMovieRecInCard, _get_Nikon_Movie, _put_Nikon_Movie }, { N_("Movie Capture"), "movie", 0, PTP_VENDOR_SONY, PTP_OC_SONY_SDIOConnect, _get_Sony_Movie, _put_Sony_Movie }, { 0,0,0,0,0,0,0 }, }; static struct submenu camera_status_menu[] = { { N_("Serial Number"), "serialnumber", 0, 0, PTP_OC_GetDeviceInfo, _get_PTP_Serial_STR, _put_None }, { N_("Camera Manufacturer"), "manufacturer", 0, 0, PTP_OC_GetDeviceInfo, _get_PTP_Manufacturer_STR, _put_None }, { N_("Camera Model"), "cameramodel", 0, 0, PTP_OC_GetDeviceInfo, _get_PTP_Model_STR, _put_None }, { N_("Device Version"), "deviceversion", 0, 0, PTP_OC_GetDeviceInfo, _get_PTP_DeviceVersion_STR, _put_None }, { N_("Vendor Extension"), "vendorextension", 0, 0, PTP_OC_GetDeviceInfo, _get_PTP_VendorExtension_STR, _put_None }, { N_("Camera Model"), "model", PTP_DPC_CANON_CameraModel, PTP_VENDOR_CANON, PTP_DTC_STR, _get_STR, _put_None }, { N_("Camera Model"), "model", PTP_DPC_CANON_EOS_ModelID, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_INT, _put_None }, { N_("Firmware Version"), "firmwareversion", PTP_DPC_CANON_FirmwareVersion, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_CANON_FirmwareVersion, _put_None }, { N_("PTP Version"), "ptpversion", PTP_DPC_CANON_EOS_PTPExtensionVersion, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_INT, _put_None }, { N_("DPOF Version"), "dpofversion", PTP_DPC_CANON_EOS_DPOFVersion, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_INT, _put_None }, { N_("AC Power"), "acpower", PTP_DPC_NIKON_ACPower, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_None }, { N_("External Flash"), "externalflash", PTP_DPC_NIKON_ExternalFlashAttached, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_None }, { N_("Battery Level"), "batterylevel", PTP_DPC_BatteryLevel, 0, PTP_DTC_UINT8, _get_BatteryLevel, _put_None }, { N_("Battery Level"), "batterylevel", PTP_DPC_CANON_EOS_BatteryPower, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_BatteryLevel, _put_None }, { N_("Camera Orientation"), "orientation", PTP_DPC_NIKON_CameraOrientation, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_CameraOrientation, _put_None }, { N_("Camera Orientation"), "orientation2", PTP_DPC_NIKON_AngleLevel, PTP_VENDOR_NIKON, PTP_DTC_INT32, _get_Nikon_AngleLevel, _put_None }, { N_("Camera Orientation"), "orientation", PTP_DPC_CANON_RotationAngle, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_CameraOrientation, _put_None }, { N_("Flash Open"), "flashopen", PTP_DPC_NIKON_FlashOpen, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_None }, { N_("Flash Charged"), "flashcharged", PTP_DPC_NIKON_FlashCharged, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_None }, { N_("Lens Name"), "lensname", PTP_DPC_NIKON_LensID, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_LensID, _put_None }, { N_("Lens Name"), "lensname", PTP_DPC_CANON_EOS_LensName, PTP_VENDOR_CANON, PTP_DTC_STR, _get_STR, _put_None }, { N_("Serial Number"), "eosserialnumber", PTP_DPC_CANON_EOS_SerialNumber, PTP_VENDOR_CANON, PTP_DTC_STR, _get_STR, _put_None }, { N_("Shutter Counter"), "shuttercounter", PTP_DPC_CANON_EOS_ShutterCounter, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_INT, _put_None }, { N_("Available Shots"), "availableshots", PTP_DPC_CANON_EOS_AvailableShots, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_INT, _put_None }, { N_("Focal Length Minimum"), "minfocallength", PTP_DPC_NIKON_FocalLengthMin, PTP_VENDOR_NIKON, PTP_DTC_UINT32, _get_Nikon_FocalLength, _put_None }, { N_("Focal Length Maximum"), "maxfocallength", PTP_DPC_NIKON_FocalLengthMax, PTP_VENDOR_NIKON, PTP_DTC_UINT32, _get_Nikon_FocalLength, _put_None }, { N_("Maximum Aperture at Focal Length Minimum"), "apertureatminfocallength", PTP_DPC_NIKON_MaxApAtMinFocalLength, PTP_VENDOR_NIKON, PTP_DTC_UINT16, _get_Nikon_ApertureAtFocalLength, _put_None }, { N_("Maximum Aperture at Focal Length Maximum"), "apertureatmaxfocallength", PTP_DPC_NIKON_MaxApAtMaxFocalLength, PTP_VENDOR_NIKON, PTP_DTC_UINT16, _get_Nikon_ApertureAtFocalLength, _put_None }, { N_("Low Light"), "lowlight", PTP_DPC_NIKON_ExposureDisplayStatus, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_LowLight, _put_None }, { N_("Light Meter"), "lightmeter", PTP_DPC_NIKON_LightMeter, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_LightMeter, _put_None }, { N_("Light Meter"), "lightmeter", PTP_DPC_NIKON_ExposureIndicateStatus, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Range_INT8, _put_None }, { N_("AF Locked"), "aflocked", PTP_DPC_NIKON_AFLockStatus, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_None }, { N_("AE Locked"), "aelocked", PTP_DPC_NIKON_AELockStatus, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_None }, { N_("FV Locked"), "fvlocked", PTP_DPC_NIKON_FVLockStatus, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_None }, { 0,0,0,0,0,0,0 }, }; static struct submenu camera_settings_menu[] = { { N_("Camera Date and Time"), "datetime", PTP_DPC_CANON_EOS_UTCTime, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_UINT32_as_time, _put_UINT32_as_time }, { N_("Camera Date and Time"), "datetime", PTP_DPC_CANON_UnixTime, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_UINT32_as_localtime, _put_UINT32_as_localtime }, { N_("Camera Date and Time"), "datetime", PTP_DPC_CANON_EOS_CameraTime, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_UINT32_as_localtime, _put_UINT32_as_localtime }, { N_("Camera Date and Time"), "datetime", PTP_DPC_DateTime, 0, PTP_DTC_STR, _get_STR_as_time, _put_STR_as_time }, { N_("Beep Mode"), "beep", PTP_DPC_CANON_BeepMode, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_BeepMode, _put_Canon_BeepMode }, { N_("Image Comment"), "imagecomment", PTP_DPC_NIKON_ImageCommentString, PTP_VENDOR_NIKON, PTP_DTC_STR, _get_STR, _put_STR }, { N_("WLAN GUID"), "guid", PTP_DPC_NIKON_GUID, PTP_VENDOR_NIKON, PTP_DTC_STR, _get_STR, _put_STR }, { N_("Enable Image Comment"), "imagecommentenable", PTP_DPC_NIKON_ImageCommentEnable, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("LCD Off Time"), "lcdofftime", PTP_DPC_NIKON_MonitorOff, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_LCDOffTime, _put_Nikon_LCDOffTime }, { N_("Recording Media"), "recordingmedia", PTP_DPC_NIKON_RecordingMedia, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_RecordingMedia, _put_Nikon_RecordingMedia }, { N_("Quick Review Time"), "reviewtime", PTP_DPC_CANON_EOS_QuickReviewTime, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_QuickReviewTime, _put_Canon_EOS_QuickReviewTime }, { N_("CSM Menu"), "csmmenu", PTP_DPC_NIKON_CSMMenu, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Reverse Command Dial"), "reversedial", PTP_DPC_NIKON_ReverseCommandDial, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Camera Output"), "output", PTP_DPC_CANON_CameraOutput, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_CameraOutput, _put_Canon_CameraOutput }, { N_("Camera Output"), "output", PTP_DPC_CANON_EOS_EVFOutputDevice, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_CameraOutput, _put_Canon_EOS_CameraOutput }, { N_("Recording Destination"), "movierecordtarget", PTP_DPC_CANON_EOS_EVFRecordStatus, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_EVFRecordTarget, _put_Canon_EOS_EVFRecordTarget }, { N_("EVF Mode"), "evfmode", PTP_DPC_CANON_EOS_EVFMode, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_EVFMode, _put_Canon_EOS_EVFMode }, { N_("Owner Name"), "ownername", PTP_DPC_CANON_CameraOwner, PTP_VENDOR_CANON, PTP_DTC_AUINT8, _get_AUINT8_as_CHAR_ARRAY, _put_AUINT8_as_CHAR_ARRAY }, { N_("Owner Name"), "ownername", PTP_DPC_CANON_EOS_Owner, PTP_VENDOR_CANON, PTP_DTC_STR, _get_STR, _put_STR }, { N_("Artist"), "artist", PTP_DPC_CANON_EOS_Artist, PTP_VENDOR_CANON, PTP_DTC_STR, _get_STR, _put_STR }, { N_("Artist"), "artist", PTP_DPC_NIKON_ArtistName, PTP_VENDOR_NIKON, PTP_DTC_STR, _get_STR, _put_STR }, { N_("CCD Number"), "ccdnumber", PTP_DPC_NIKON_CCDNumber, PTP_VENDOR_NIKON, PTP_DTC_STR, _get_STR, _put_None }, { N_("Copyright"), "copyright", PTP_DPC_CANON_EOS_Copyright, PTP_VENDOR_CANON, PTP_DTC_STR, _get_STR, _put_STR }, { N_("Copyright"), "copyright", PTP_DPC_NIKON_CopyrightInfo, PTP_VENDOR_NIKON, PTP_DTC_STR, _get_STR, _put_STR }, { N_("Clean Sensor"), "cleansensor", PTP_DPC_NIKON_CleanImageSensor, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_CleanSensor, _put_Nikon_CleanSensor }, { N_("Flicker Reduction"), "flickerreduction", PTP_DPC_NIKON_FlickerReduction, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlickerReduction, _put_Nikon_FlickerReduction }, { N_("Custom Functions Ex"), "customfuncex", PTP_DPC_CANON_EOS_CustomFuncEx, PTP_VENDOR_CANON, PTP_DTC_STR, _get_STR, _put_STR }, { N_("Focus Info"), "focusinfo", PTP_DPC_CANON_EOS_FocusInfoEx, PTP_VENDOR_CANON, PTP_DTC_STR, _get_STR, _put_None }, { N_("Focus Area"), "focusarea", PTP_DPC_CANON_EOS_AFSelectFocusArea,PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_INT, _put_INT }, { N_("Auto Power Off"), "autopoweroff", PTP_DPC_CANON_EOS_AutoPowerOff, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_INT, _put_INT }, { N_("Depth of Field"), "depthoffield", PTP_DPC_CANON_EOS_DepthOfFieldPreview, PTP_VENDOR_CANON,PTP_DTC_UINT32, _get_INT, _put_INT }, { N_("Menus and Playback"), "menusandplayback", PTP_DPC_NIKON_MenusAndPlayback, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_MenusAndPlayback, _put_Nikon_MenusAndPlayback }, /* virtual */ { N_("Fast Filesystem"), "fastfs", 0, PTP_VENDOR_NIKON, 0, _get_Nikon_FastFS, _put_Nikon_FastFS }, { N_("Capture Target"), "capturetarget",0, PTP_VENDOR_NIKON, 0, _get_CaptureTarget, _put_CaptureTarget }, { N_("Capture Target"), "capturetarget",0, PTP_VENDOR_CANON, 0, _get_CaptureTarget, _put_CaptureTarget }, { N_("CHDK"), "chdk", PTP_OC_CHDK, PTP_VENDOR_CANON, 0, _get_CHDK, _put_CHDK }, { N_("Capture"), "capture", 0, PTP_VENDOR_CANON, 0, _get_Canon_CaptureMode, _put_Canon_CaptureMode }, { 0,0,0,0,0,0,0 }, }; /* think of this as properties of the "film" */ static struct submenu image_settings_menu[] = { { N_("Image Quality"), "imagequality", PTP_DPC_CANON_ImageQuality, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_Quality, _put_Canon_Quality }, { N_("Image Format"), "imageformat", PTP_DPC_CANON_FullViewFileFormat, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_Capture_Format, _put_Canon_Capture_Format }, { N_("Image Format"), "imageformat", PTP_DPC_CANON_EOS_ImageFormat, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_ImageFormat, _put_Canon_EOS_ImageFormat }, { N_("Image Format SD"), "imageformatsd", PTP_DPC_CANON_EOS_ImageFormatSD, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_ImageFormat, _put_Canon_EOS_ImageFormat }, { N_("Image Format CF"), "imageformatcf", PTP_DPC_CANON_EOS_ImageFormatCF, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_ImageFormat, _put_Canon_EOS_ImageFormat }, { N_("Image Format"), "imageformat", PTP_DPC_FUJI_Quality, PTP_VENDOR_FUJI, PTP_DTC_UINT16, _get_Fuji_ImageFormat, _put_Fuji_ImageFormat }, { N_("Image Format Ext HD"), "imageformatexthd", PTP_DPC_CANON_EOS_ImageFormatExtHD, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_ImageFormat, _put_Canon_EOS_ImageFormat }, { N_("Image Size"), "imagesize", PTP_DPC_ImageSize, 0, PTP_DTC_STR, _get_ImageSize, _put_ImageSize }, { N_("Image Size"), "imagesize", PTP_DPC_NIKON_1_ImageSize, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon1_ImageSize, _put_Nikon1_ImageSize }, { N_("Image Size"), "imagesize", PTP_DPC_SONY_ImageSize, PTP_VENDOR_SONY, PTP_DTC_UINT8, _get_Sony_ImageSize, _put_Sony_ImageSize }, { N_("Image Size"), "imagesize", PTP_DPC_CANON_ImageSize, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_Size, _put_Canon_Size }, { N_("ISO Speed"), "iso", PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_ISO, _put_Canon_ISO }, { N_("ISO Speed"), "iso", PTP_DPC_ExposureIndex, 0, PTP_DTC_UINT16, _get_ISO, _put_ISO }, { N_("Movie ISO Speed"), "movieiso", PTP_DPC_NIKON_MovieISO, PTP_VENDOR_NIKON, PTP_DTC_UINT32, _get_ISO32, _put_ISO32 }, { N_("ISO Speed"), "iso", PTP_DPC_CANON_EOS_ISOSpeed, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_ISO, _put_Canon_ISO }, { N_("ISO Speed"), "iso", PTP_DPC_SONY_ISO, PTP_VENDOR_SONY, PTP_DTC_UINT32, _get_Sony_ISO, _put_Sony_ISO }, { N_("ISO Speed"), "iso", PTP_DPC_NIKON_1_ISO, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_1_ISO, _put_Nikon_1_ISO }, { N_("ISO Auto"), "isoauto", PTP_DPC_NIKON_ISO_Auto, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("WhiteBalance"), "whitebalance", PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_WhiteBalance, _put_Canon_WhiteBalance }, { N_("WhiteBalance"), "whitebalance", PTP_DPC_CANON_EOS_WhiteBalance, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_EOS_WhiteBalance, _put_Canon_EOS_WhiteBalance }, { N_("Color Temperature"), "colortemperature", PTP_DPC_CANON_EOS_ColorTemperature, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_INT, _put_INT }, { N_("Color Temperature"), "colortemperature", PTP_DPC_SONY_ColorTemp, PTP_VENDOR_SONY, PTP_DTC_UINT16, _get_INT, _put_INT }, { N_("WhiteBalance"), "whitebalance", PTP_DPC_WhiteBalance, 0, PTP_DTC_UINT16, _get_WhiteBalance, _put_WhiteBalance }, { N_("WhiteBalance"), "whitebalance", PTP_DPC_NIKON_1_WhiteBalance, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_1_WhiteBalance, _put_Nikon_1_WhiteBalance }, { N_("WhiteBalance Adjust A"), "whitebalanceadjusta", PTP_DPC_CANON_EOS_WhiteBalanceAdjustA, PTP_VENDOR_CANON, PTP_DTC_INT16, _get_Canon_EOS_WBAdjust, _put_Canon_EOS_WBAdjust }, { N_("WhiteBalance Adjust B"), "whitebalanceadjustb", PTP_DPC_CANON_EOS_WhiteBalanceAdjustB, PTP_VENDOR_CANON, PTP_DTC_INT16, _get_Canon_EOS_WBAdjust, _put_Canon_EOS_WBAdjust }, { N_("WhiteBalance X A"), "whitebalancexa", PTP_DPC_CANON_EOS_WhiteBalanceXA, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_INT, _put_None }, { N_("WhiteBalance X B"), "whitebalancexb", PTP_DPC_CANON_EOS_WhiteBalanceXA, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_INT, _put_None }, { N_("Photo Effect"), "photoeffect", PTP_DPC_CANON_PhotoEffect, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_PhotoEffect, _put_Canon_PhotoEffect }, { N_("Color Model"), "colormodel", PTP_DPC_NIKON_ColorModel, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_ColorModel, _put_Nikon_ColorModel }, { N_("Color Space"), "colorspace", PTP_DPC_NIKON_ColorSpace, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_ColorSpace, _put_Nikon_ColorSpace }, { N_("Color Space"), "colorspace", PTP_DPC_CANON_EOS_ColorSpace, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_ColorSpace, _put_Canon_EOS_ColorSpace }, { N_("Auto ISO"), "autoiso", PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { 0,0,0,0,0,0,0 }, }; static struct submenu capture_settings_menu[] = { { N_("Long Exp Noise Reduction"), "longexpnr", PTP_DPC_NIKON_LongExposureNoiseReduction, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Long Exp Noise Reduction"), "longexpnr", PTP_DPC_NIKON_1_LongExposureNoiseReduction, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Auto Focus Mode 2"), "autofocusmode2", PTP_DPC_NIKON_A4AFActivation, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Zoom"), "zoom", PTP_DPC_CANON_Zoom, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_ZoomRange, _put_Canon_ZoomRange }, { N_("Assist Light"), "assistlight", PTP_DPC_CANON_AssistLight, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_AssistLight, _put_Canon_AssistLight }, { N_("Rotation Flag"), "autorotation", PTP_DPC_CANON_RotationScene, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_AutoRotation, _put_Canon_AutoRotation }, { N_("Self Timer"), "selftimer", PTP_DPC_CANON_SelfTime, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_SelfTimer, _put_Canon_SelfTimer }, { N_("Assist Light"), "assistlight", PTP_DPC_NIKON_AFAssist, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Exposure Compensation"), "exposurecompensation", PTP_DPC_ExposureBiasCompensation, PTP_VENDOR_SONY, PTP_DTC_INT16, _get_ExpCompensation, _put_Sony_ExpCompensation }, { N_("Exposure Compensation"), "exposurecompensation", PTP_DPC_ExposureBiasCompensation, 0, PTP_DTC_INT16, _get_ExpCompensation, _put_ExpCompensation }, { N_("Exposure Compensation"), "exposurecompensation", PTP_DPC_CANON_ExpCompensation, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_ExpCompensation, _put_Canon_ExpCompensation }, { N_("Exposure Compensation"), "exposurecompensation", PTP_DPC_CANON_EOS_ExpCompensation, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_ExpCompensation2, _put_Canon_ExpCompensation2 }, /* these cameras also have PTP_DPC_ExposureBiasCompensation, avoid overlap */ { N_("Exposure Compensation"), "exposurecompensation2", PTP_DPC_NIKON_ExposureCompensation, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Flash Compensation"), "flashcompensation", PTP_DPC_CANON_FlashCompensation, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_ExpCompensation, _put_Canon_ExpCompensation }, { N_("AEB Exposure Compensation"), "aebexpcompensation", PTP_DPC_CANON_AEBExposureCompensation, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_ExpCompensation, _put_Canon_ExpCompensation }, { N_("Flash Mode"), "flashmode", PTP_DPC_CANON_FlashMode, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_FlashMode, _put_Canon_FlashMode }, { N_("Flash Mode"), "flashmode", PTP_DPC_FlashMode, 0, PTP_DTC_UINT16, _get_FlashMode, _put_FlashMode }, { N_("Nikon Flash Mode"), "nikonflashmode", PTP_DPC_NIKON_FlashMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_InternalFlashMode, _put_Nikon_InternalFlashMode }, { N_("Flash Commander Mode"), "flashcommandermode", PTP_DPC_NIKON_FlashCommanderMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommanderMode, _put_Nikon_FlashCommanderMode }, { N_("Flash Commander Power"), "flashcommanderpower", PTP_DPC_NIKON_FlashModeCommanderPower, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommanderPower, _put_Nikon_FlashCommanderPower }, { N_("Flash Command Channel"), "flashcommandchannel", PTP_DPC_NIKON_FlashCommandChannel, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommandChannel, _put_Nikon_FlashCommandChannel }, { N_("Flash Command Self Mode"), "flashcommandselfmode", PTP_DPC_NIKON_FlashCommandSelfMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommandSelfMode, _put_Nikon_FlashCommandSelfMode }, { N_("Flash Command Self Compensation"), "flashcommandselfcompensation", PTP_DPC_NIKON_FlashCommandSelfCompensation, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommandXCompensation, _put_Nikon_FlashCommandXCompensation }, { N_("Flash Command Self Value"), "flashcommandselfvalue", PTP_DPC_NIKON_FlashCommandSelfValue, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommandXValue, _put_Nikon_FlashCommandXValue }, { N_("Flash Command A Mode"), "flashcommandamode", PTP_DPC_NIKON_FlashCommandAMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommandXMode, _put_Nikon_FlashCommandXMode }, { N_("Flash Command A Compensation"), "flashcommandacompensation", PTP_DPC_NIKON_FlashCommandACompensation, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommandXCompensation, _put_Nikon_FlashCommandXCompensation }, { N_("Flash Command A Value"), "flashcommandavalue", PTP_DPC_NIKON_FlashCommandAValue, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommandXValue, _put_Nikon_FlashCommandXValue }, { N_("Flash Command B Mode"), "flashcommandbmode", PTP_DPC_NIKON_FlashCommandBMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommandXMode, _put_Nikon_FlashCommandXMode }, { N_("Flash Command B Compensation"), "flashcommandbcompensation", PTP_DPC_NIKON_FlashCommandBCompensation, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommandXCompensation, _put_Nikon_FlashCommandXCompensation }, { N_("Flash Command B Value"), "flashcommandbvalue", PTP_DPC_NIKON_FlashCommandBValue, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashCommandXValue, _put_Nikon_FlashCommandXValue }, { N_("AF Area Illumination"), "af-area-illumination", PTP_DPC_NIKON_AFAreaIllumination, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_AFAreaIllum, _put_Nikon_AFAreaIllum }, { N_("AF Beep Mode"), "afbeep", PTP_DPC_NIKON_BeepOff, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OffOn_UINT8, _put_Nikon_OffOn_UINT8 }, { N_("F-Number"), "f-number", PTP_DPC_FNumber, PTP_VENDOR_SONY, PTP_DTC_UINT16, _get_FNumber, _put_Sony_FNumber }, { N_("F-Number"), "f-number", PTP_DPC_FNumber, 0, PTP_DTC_UINT16, _get_FNumber, _put_FNumber }, { N_("Movie F-Number"), "movief-number", PTP_DPC_NIKON_MovieFNumber, PTP_VENDOR_NIKON, PTP_DTC_UINT16, _get_FNumber, _put_FNumber }, { N_("Flexible Program"), "flexibleprogram", PTP_DPC_NIKON_FlexibleProgram, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Range_INT8, _put_Range_INT8 }, { N_("Image Quality"), "imagequality", PTP_DPC_CompressionSetting, PTP_VENDOR_SONY, PTP_DTC_UINT8, _get_CompressionSetting, _put_Sony_CompressionSetting }, { N_("Image Quality"), "imagequality", PTP_DPC_CompressionSetting, 0, PTP_DTC_UINT8, _get_CompressionSetting, _put_CompressionSetting }, { N_("Focus Distance"), "focusdistance", PTP_DPC_FocusDistance, 0, PTP_DTC_UINT16, _get_FocusDistance, _put_FocusDistance }, { N_("Focal Length"), "focallength", PTP_DPC_FocalLength, 0, PTP_DTC_UINT32, _get_FocalLength, _put_FocalLength }, { N_("Focus Mode"), "focusmode", PTP_DPC_FocusMode, 0, PTP_DTC_UINT16, _get_FocusMode, _put_FocusMode }, /* Nikon DSLR have both PTP focus mode and Nikon specific focus mode */ { N_("Focus Mode 2"), "focusmode2", PTP_DPC_NIKON_AutofocusMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_AFMode, _put_Nikon_AFMode }, { N_("Focus Mode"), "focusmode", PTP_DPC_CANON_EOS_FocusMode, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_FocusMode, _put_Canon_EOS_FocusMode }, { N_("Continuous AF"), "continuousaf", PTP_DPC_CANON_EOS_ContinousAFMode, PTP_VENDOR_CANON, PTP_DTC_UINT32, _get_Canon_EOS_ContinousAF, _put_Canon_EOS_ContinousAF }, { N_("Effect Mode"), "effectmode", PTP_DPC_EffectMode, 0, PTP_DTC_UINT16, _get_EffectMode, _put_EffectMode }, { N_("Effect Mode"), "effectmode", PTP_DPC_NIKON_EffectMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_NIKON_EffectMode, _put_NIKON_EffectMode }, { N_("Exposure Program"), "expprogram", PTP_DPC_ExposureProgramMode, 0, PTP_DTC_UINT16, _get_ExposureProgram, _put_ExposureProgram }, { N_("Exposure Program"), "expprogram2", PTP_DPC_NIKON_1_Mode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_NIKON_1_ExposureProgram, _put_NIKON_1_ExposureProgram }, { N_("Scene Mode"), "scenemode", PTP_DPC_NIKON_SceneMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_NIKON_SceneMode, _put_NIKON_SceneMode }, { N_("Aspect Ratio"), "aspectratio", PTP_DPC_SONY_AspectRatio, PTP_VENDOR_SONY, PTP_DTC_UINT8, _get_Sony_AspectRatio, _put_Sony_AspectRatio }, { N_("HDR Mode"), "hdrmode", PTP_DPC_NIKON_HDRMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("HDR High Dynamic"), "hdrhighdynamic", PTP_DPC_NIKON_HDRHighDynamic, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_HDRHighDynamic, _put_Nikon_HDRHighDynamic }, { N_("HDR Smoothing"), "hdrsmoothing", PTP_DPC_NIKON_HDRSmoothing, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_HDRSmoothing, _put_Nikon_HDRSmoothing }, { N_("Still Capture Mode"), "capturemode", PTP_DPC_StillCaptureMode, 0, PTP_DTC_UINT16, _get_CaptureMode, _put_CaptureMode }, { N_("Still Capture Mode"), "capturemode", PTP_DPC_FUJI_ReleaseMode, PTP_VENDOR_FUJI, PTP_DTC_UINT16, _get_Fuji_ReleaseMode, _put_Fuji_ReleaseMode }, { N_("Canon Shooting Mode"), "shootingmode", PTP_DPC_CANON_ShootingMode, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_ShootMode, _put_Canon_ShootMode }, { N_("Canon Auto Exposure Mode"), "autoexposuremode", PTP_DPC_CANON_EOS_AutoExposureMode, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_AutoExposureMode, _put_Canon_EOS_AutoExposureMode }, { N_("Drive Mode"), "drivemode", PTP_DPC_CANON_EOS_DriveMode, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_DriveMode, _put_Canon_EOS_DriveMode }, { N_("Picture Style"), "picturestyle", PTP_DPC_CANON_EOS_PictureStyle, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_EOS_PictureStyle, _put_Canon_EOS_PictureStyle }, { N_("Focus Metering Mode"), "focusmetermode", PTP_DPC_FocusMeteringMode, 0, PTP_DTC_UINT16, _get_FocusMetering, _put_FocusMetering }, { N_("Exposure Metering Mode"), "exposuremetermode", PTP_DPC_ExposureMeteringMode, 0, PTP_DTC_UINT16, _get_ExposureMetering, _put_ExposureMetering }, { N_("Aperture"), "aperture", PTP_DPC_CANON_Aperture, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_Aperture, _put_Canon_Aperture }, { N_("Aperture"), "aperture", PTP_DPC_FUJI_Aperture, PTP_VENDOR_FUJI, PTP_DTC_UINT16, _get_Fuji_Aperture, _put_Fuji_Aperture }, { N_("AV Open"), "avopen", PTP_DPC_CANON_AvOpen, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_Aperture, _put_Canon_Aperture }, { N_("AV Max"), "avmax", PTP_DPC_CANON_AvMax, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_Aperture, _put_Canon_Aperture }, { N_("Aperture"), "aperture", PTP_DPC_CANON_EOS_Aperture, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_Aperture, _put_Canon_Aperture }, { N_("Focusing Point"), "focusingpoint", PTP_DPC_CANON_FocusingPoint, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_FocusingPoint, _put_Canon_FocusingPoint }, { N_("Sharpness"), "sharpness", PTP_DPC_Sharpness, 0, PTP_DTC_UINT8, _get_Sharpness, _put_Sharpness }, { N_("Capture Delay"), "capturedelay", PTP_DPC_CaptureDelay, 0, PTP_DTC_UINT32, _get_Milliseconds, _put_Milliseconds }, { N_("Shutter Speed"), "shutterspeed", PTP_DPC_ExposureTime, 0, PTP_DTC_UINT32, _get_ExpTime, _put_ExpTime }, { N_("Shutter Speed"), "shutterspeed", PTP_DPC_CANON_ShutterSpeed, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_ShutterSpeed, _put_Canon_ShutterSpeed }, /* these cameras also have PTP_DPC_ExposureTime, avoid overlap */ { N_("Shutter Speed 2"), "shutterspeed2", PTP_DPC_NIKON_ExposureTime, PTP_VENDOR_NIKON, PTP_DTC_UINT32, _get_Nikon_ShutterSpeed, _put_Nikon_ShutterSpeed }, { N_("Movie Shutter Speed 2"), "movieshutterspeed", PTP_DPC_NIKON_MovieShutterSpeed, PTP_VENDOR_NIKON, PTP_DTC_UINT32, _get_Nikon_ShutterSpeed, _put_Nikon_ShutterSpeed }, { N_("Shutter Speed"), "shutterspeed", PTP_DPC_CANON_EOS_ShutterSpeed, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_ShutterSpeed, _put_Canon_ShutterSpeed }, { N_("Shutter Speed"), "shutterspeed", PTP_DPC_FUJI_ShutterSpeed, PTP_VENDOR_FUJI, PTP_DTC_INT16, _get_Fuji_ShutterSpeed, _put_Fuji_ShutterSpeed }, { N_("Shutter Speed"), "shutterspeed", PTP_DPC_SONY_ShutterSpeed, PTP_VENDOR_SONY, PTP_DTC_INT32, _get_Sony_ShutterSpeed, _put_Sony_ShutterSpeed }, { N_("Metering Mode"), "meteringmode", PTP_DPC_CANON_MeteringMode, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_MeteringMode, _put_Canon_MeteringMode }, { N_("Metering Mode"), "meteringmode", PTP_DPC_CANON_EOS_MeteringMode, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_MeteringMode, _put_Canon_MeteringMode }, { N_("AF Distance"), "afdistance", PTP_DPC_CANON_AFDistance, PTP_VENDOR_CANON, PTP_DTC_UINT8, _get_Canon_AFDistance, _put_Canon_AFDistance }, { N_("Focus Area Wrap"), "focusareawrap", PTP_DPC_NIKON_FocusAreaWrap, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Exposure Delay Mode"), "exposuredelaymode", PTP_DPC_NIKON_ExposureDelayMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Exposure Lock"), "exposurelock", PTP_DPC_NIKON_AELockMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("AE-L/AF-L Mode"), "aelaflmode", PTP_DPC_NIKON_AELAFLMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_AELAFLMode, _put_Nikon_AELAFLMode }, { N_("Live View AF Mode"), "liveviewafmode", PTP_DPC_NIKON_LiveViewAFArea, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_LiveViewAF, _put_Nikon_LiveViewAF }, { N_("Live View AF Mode"), "liveviewafmode", PTP_DPC_NIKON_LiveViewAFArea, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_LiveViewAF, _put_Nikon_LiveViewAF }, { N_("Live View AF Focus"), "liveviewaffocus", PTP_DPC_NIKON_LiveViewAFFocus, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_LiveViewAFFocus, _put_Nikon_LiveViewAFFocus }, { N_("File Number Sequencing"), "filenrsequencing", PTP_DPC_NIKON_FileNumberSequence, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Flash Sign"), "flashsign", PTP_DPC_NIKON_FlashSign, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Modelling Flash"), "modelflash", PTP_DPC_NIKON_E4ModelingFlash, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OffOn_UINT8, _put_Nikon_OffOn_UINT8 }, { N_("Viewfinder Grid"), "viewfindergrid", PTP_DPC_NIKON_GridDisplay, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Image Review"), "imagereview", PTP_DPC_NIKON_ImageReview, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Image Rotation Flag"), "imagerotationflag", PTP_DPC_NIKON_ImageRotation, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Release without CF card"), "nocfcardrelease", PTP_DPC_NIKON_NoCFCard, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Flash Mode Manual Power"), "flashmodemanualpower", PTP_DPC_NIKON_FlashModeManualPower, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashModeManualPower, _put_Nikon_FlashModeManualPower }, { N_("Auto Focus Area"), "autofocusarea", PTP_DPC_NIKON_AutofocusArea, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_AutofocusArea, _put_Nikon_AutofocusArea }, { N_("Flash Exposure Compensation"), "flashexposurecompensation", PTP_DPC_NIKON_FlashExposureCompensation, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashExposureCompensation, _put_Nikon_FlashExposureCompensation }, { N_("Bracketing"), "bracketing", PTP_DPC_NIKON_Bracketing, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Bracketing"), "bracketmode", PTP_DPC_NIKON_E6ManualModeBracketing, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_ManualBracketMode, _put_Nikon_ManualBracketMode }, { N_("Bracket Mode"), "bracketmode", PTP_DPC_CANON_EOS_BracketMode, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_INT, _put_None /*FIXME*/ }, { N_("EV Step"), "evstep", PTP_DPC_NIKON_EVStep, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_EVStep, _put_Nikon_EVStep }, { N_("Bracket Set"), "bracketset", PTP_DPC_NIKON_BracketSet, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_BracketSet, _put_Nikon_BracketSet }, { N_("Bracket Order"), "bracketorder", PTP_DPC_NIKON_BracketOrder, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_BracketOrder, _put_Nikon_BracketOrder }, { N_("Burst Number"), "burstnumber", PTP_DPC_BurstNumber, 0, PTP_DTC_UINT16, _get_BurstNumber, _put_BurstNumber }, { N_("Burst Interval"), "burstinterval", PTP_DPC_BurstNumber, 0, PTP_DTC_UINT16, _get_Milliseconds, _put_Milliseconds }, { N_("Maximum Shots"), "maximumshots", PTP_DPC_NIKON_MaximumShots, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_INT, _put_None }, /* Newer Nikons have UINT8 ranges */ { N_("Auto White Balance Bias"), "autowhitebias", PTP_DPC_NIKON_WhiteBalanceAutoBias, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_UWBBias, _put_Nikon_UWBBias }, { N_("Tungsten White Balance Bias"), "tungstenwhitebias", PTP_DPC_NIKON_WhiteBalanceTungstenBias, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_UWBBias, _put_Nikon_UWBBias }, { N_("Fluorescent White Balance Bias"), "flourescentwhitebias", PTP_DPC_NIKON_WhiteBalanceFluorescentBias, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_UWBBias, _put_Nikon_UWBBias }, { N_("Daylight White Balance Bias"), "daylightwhitebias", PTP_DPC_NIKON_WhiteBalanceDaylightBias, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_UWBBias, _put_Nikon_UWBBias }, { N_("Flash White Balance Bias"), "flashwhitebias", PTP_DPC_NIKON_WhiteBalanceFlashBias, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_UWBBias, _put_Nikon_UWBBias }, { N_("Cloudy White Balance Bias"), "cloudywhitebias", PTP_DPC_NIKON_WhiteBalanceCloudyBias, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_UWBBias, _put_Nikon_UWBBias }, { N_("Shady White Balance Bias"), "shadewhitebias", PTP_DPC_NIKON_WhiteBalanceShadeBias, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_UWBBias, _put_Nikon_UWBBias }, /* older Nikons have INT8 ranges */ { N_("Auto White Balance Bias"), "autowhitebias", PTP_DPC_NIKON_WhiteBalanceAutoBias, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_WBBias, _put_Nikon_WBBias }, { N_("Tungsten White Balance Bias"), "tungstenwhitebias", PTP_DPC_NIKON_WhiteBalanceTungstenBias, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_WBBias, _put_Nikon_WBBias }, { N_("Fluorescent White Balance Bias"), "flourescentwhitebias", PTP_DPC_NIKON_WhiteBalanceFluorescentBias, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_WBBias, _put_Nikon_WBBias }, { N_("Daylight White Balance Bias"), "daylightwhitebias", PTP_DPC_NIKON_WhiteBalanceDaylightBias, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_WBBias, _put_Nikon_WBBias }, { N_("Flash White Balance Bias"), "flashwhitebias", PTP_DPC_NIKON_WhiteBalanceFlashBias, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_WBBias, _put_Nikon_WBBias }, { N_("Cloudy White Balance Bias"), "cloudywhitebias", PTP_DPC_NIKON_WhiteBalanceCloudyBias, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_WBBias, _put_Nikon_WBBias }, { N_("Shady White Balance Bias"), "shadewhitebias", PTP_DPC_NIKON_WhiteBalanceShadeBias, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_WBBias, _put_Nikon_WBBias }, { N_("White Balance Bias Preset Nr"), "whitebiaspresetno", PTP_DPC_NIKON_WhiteBalancePresetNo, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_WBBiasPreset, _put_Nikon_WBBiasPreset }, { N_("White Balance Bias Preset 0"), "whitebiaspreset0", PTP_DPC_NIKON_WhiteBalancePresetVal0, PTP_VENDOR_NIKON, PTP_DTC_UINT32, _get_Nikon_WBBiasPresetVal, _put_None }, { N_("White Balance Bias Preset 1"), "whitebiaspreset1", PTP_DPC_NIKON_WhiteBalancePresetVal1, PTP_VENDOR_NIKON, PTP_DTC_UINT32, _get_Nikon_WBBiasPresetVal, _put_None }, { N_("White Balance Bias Preset 2"), "whitebiaspreset2", PTP_DPC_NIKON_WhiteBalancePresetVal2, PTP_VENDOR_NIKON, PTP_DTC_UINT32, _get_Nikon_WBBiasPresetVal, _put_None }, { N_("White Balance Bias Preset 3"), "whitebiaspreset3", PTP_DPC_NIKON_WhiteBalancePresetVal3, PTP_VENDOR_NIKON, PTP_DTC_UINT32, _get_Nikon_WBBiasPresetVal, _put_None }, { N_("White Balance Bias Preset 4"), "whitebiaspreset4", PTP_DPC_NIKON_WhiteBalancePresetVal4, PTP_VENDOR_NIKON, PTP_DTC_UINT32, _get_Nikon_WBBiasPresetVal, _put_None }, { N_("Selftimer Delay"), "selftimerdelay", PTP_DPC_NIKON_SelfTimer, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_SelfTimerDelay, _put_Nikon_SelfTimerDelay }, { N_("Center Weight Area"), "centerweightsize", PTP_DPC_NIKON_CenterWeightArea, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_CenterWeight, _put_Nikon_CenterWeight }, { N_("Flash Shutter Speed"), "flashshutterspeed", PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_FlashShutterSpeed, _put_Nikon_FlashShutterSpeed }, { N_("Remote Timeout"), "remotetimeout", PTP_DPC_NIKON_RemoteTimeout, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_RemoteTimeout, _put_Nikon_RemoteTimeout }, { N_("Remote Mode"), "remotemode", PTP_DPC_NIKON_RemoteMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_RemoteMode, _put_Nikon_RemoteMode }, { N_("Application Mode"), "applicationmode", PTP_DPC_NIKON_ApplicationMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_ApplicationMode, _put_Nikon_ApplicationMode }, { N_("Optimize Image"), "optimizeimage", PTP_DPC_NIKON_OptimizeImage, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OptimizeImage, _put_Nikon_OptimizeImage }, { N_("Sharpening"), "sharpening", PTP_DPC_NIKON_ImageSharpening, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_Sharpening, _put_Nikon_Sharpening }, { N_("Tone Compensation"), "tonecompensation", PTP_DPC_NIKON_ToneCompensation, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_ToneCompensation, _put_Nikon_ToneCompensation }, { N_("Saturation"), "saturation", PTP_DPC_NIKON_Saturation, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_Saturation, _put_Nikon_Saturation }, { N_("Hue Adjustment"), "hueadjustment", PTP_DPC_NIKON_HueAdjustment, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_HueAdjustment, _put_Nikon_HueAdjustment }, { N_("Auto Exposure Bracketing"), "aeb", PTP_DPC_CANON_EOS_AEB, PTP_VENDOR_CANON, PTP_DTC_UINT16, _get_Canon_EOS_AEB, _put_Canon_EOS_AEB }, { N_("Movie Sound"), "moviesound", PTP_DPC_NIKON_MovVoice, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OffOn_UINT8, _put_Nikon_OffOn_UINT8 }, { N_("Manual Movie Setting"), "manualmoviesetting", PTP_DPC_NIKON_ManualMovieSetting, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OnOff_UINT8, _put_Nikon_OnOff_UINT8 }, { N_("Microphone"), "microphone", PTP_DPC_NIKON_MovMicrophone, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_Microphone, _put_Nikon_Microphone }, { N_("Reverse Indicators"), "reverseindicators", PTP_DPC_NIKON_IndicatorDisp, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OffOn_UINT8, _put_Nikon_OffOn_UINT8 }, { N_("Auto Distortion Control"), "autodistortioncontrol", PTP_DPC_NIKON_AutoDistortionControl, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_OffOn_UINT8, _put_Nikon_OffOn_UINT8 }, { N_("Video Mode"), "videomode", PTP_DPC_NIKON_VideoMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_VideoMode, _put_Nikon_VideoMode }, { 0,0,0,0,0,0,0 }, }; /* Nikon camera specific values, as unfortunately the values are handled differently * A generic fallback for the "rest" of the Nikons is in the main menu. */ static struct submenu nikon_1_j3_camera_settings[] = { { N_("ISO Speed"), "iso", PTP_DPC_NIKON_1_ISO, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_1_J3_ISO, _put_Nikon_1_J3_ISO }, { 0,0,0,0,0,0,0 }, }; static struct submenu nikon_1_s1_camera_settings[] = { { N_("ISO Speed"), "iso", PTP_DPC_NIKON_1_ISO, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_1_S1_ISO, _put_Nikon_1_S1_ISO }, { 0,0,0,0,0,0,0 }, }; /* Nikon D90. Marcus Meissner */ static struct submenu nikon_d90_camera_settings[] = { { N_("Meter Off Time"), "meterofftime", PTP_DPC_NIKON_MeterOff, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D90_MeterOffTime, _put_Nikon_D90_MeterOffTime }, { 0,0,0,0,0,0,0 }, }; /* Nikon D7000. Marcus Meissner */ static struct submenu nikon_d7000_camera_settings[] = { { N_("Assign Func Button"), "funcbutton", PTP_DPC_NIKON_F4AssignFuncButton, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D7000_FuncButton, _put_Nikon_D7000_FuncButton }, { N_("Assign Preview Button"), "previewbutton", PTP_DPC_NIKON_PreviewButton, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D7000_FuncButton, _put_Nikon_D7000_FuncButton }, { 0,0,0,0,0,0,0 }, }; /* Nikon D7100. Daniel Wagenaar */ static struct submenu nikon_d7100_camera_settings[] = { { N_("Assign Func Button"), "funcbutton", PTP_DPC_NIKON_F4AssignFuncButton, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D7000_FuncButton, _put_Nikon_D7000_FuncButton }, { N_("Assign Preview Button"), "previewbutton", PTP_DPC_NIKON_PreviewButton, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D7000_FuncButton, _put_Nikon_D7000_FuncButton }, { 0,0,0,0,0,0,0 }, }; static struct submenu nikon_d5100_capture_settings[] = { { N_("Movie Quality"), "moviequality", PTP_DPC_NIKON_MovScreenSize, 0, PTP_DTC_UINT8, _get_Nikon_D5100_MovieQuality, _put_Nikon_D5100_MovieQuality }, { N_("Exposure Program"), "expprogram", PTP_DPC_ExposureProgramMode, 0, PTP_DTC_UINT16, _get_NIKON_D5100_ExposureProgram, _put_NIKON_D5100_ExposureProgram }, { N_("Minimum Shutter Speed"), "minimumshutterspeed", PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D90_PADVPValue, _put_Nikon_D90_PADVPValue }, { 0,0,0,0,0,0,0 }, }; /* Nikon D7100. Daniel Wagenaar */ static struct submenu nikon_d7100_capture_settings[] = { { N_("Movie Resolution"), "moviequality", PTP_DPC_NIKON_MovScreenSize, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D7100_MovieQuality, _put_Nikon_D7100_MovieQuality }, { N_("Movie Quality"), "moviequality2", PTP_DPC_NIKON_MovQuality, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D7100_MovieQuality2, _put_Nikon_D7100_MovieQuality2 }, { N_("Exposure Program"), "expprogram", PTP_DPC_ExposureProgramMode, 0, PTP_DTC_UINT16, _get_NIKON_D7100_ExposureProgram, _put_NIKON_D7100_ExposureProgram }, { N_("Minimum Shutter Speed"), "minimumshutterspeed", PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D7100_PADVPValue, _put_Nikon_D7100_PADVPValue }, { N_("Continuous Shooting Speed Slow"), "shootingspeed", PTP_DPC_NIKON_D1ShootingSpeed, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D7100_ShootingSpeed, _put_Nikon_D7100_ShootingSpeed }, { N_("ISO Auto Hi Limit"), "isoautohilimit", PTP_DPC_NIKON_ISOAutoHiLimit, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_D7100_ISOAutoHiLimit, _put_Nikon_D7100_ISOAutoHiLimit }, { N_("Flash Sync. Speed"), "flashsyncspeed", PTP_DPC_NIKON_FlashSyncSpeed, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D7100_FlashSyncSpeed, _put_Nikon_D7100_FlashSyncSpeed }, { N_("Focus Metering"), "focusmetering", PTP_DPC_FocusMeteringMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D7100_FocusMetering, _put_Nikon_D7100_FocusMetering }, { 0,0,0,0,0,0,0 }, }; static struct submenu nikon_d90_capture_settings[] = { { N_("Minimum Shutter Speed"), "minimumshutterspeed", PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D90_PADVPValue, _put_Nikon_D90_PADVPValue }, { N_("ISO Auto Hi Limit"), "isoautohilimit", PTP_DPC_NIKON_ISOAutoHiLimit, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_D90_ISOAutoHiLimit, _put_Nikon_D90_ISOAutoHiLimit }, { N_("Active D-Lighting"), "dlighting", PTP_DPC_NIKON_ActiveDLighting, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_D90_ActiveDLighting, _put_Nikon_D90_ActiveDLighting }, { N_("High ISO Noise Reduction"), "highisonr", PTP_DPC_NIKON_NrHighISO, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_D90_HighISONR, _put_Nikon_D90_HighISONR }, { N_("Image Quality"), "imagequality", PTP_DPC_CompressionSetting, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D90_Compression, _put_Nikon_D90_Compression }, { N_("Continuous Shooting Speed Slow"), "shootingspeed", PTP_DPC_NIKON_D1ShootingSpeed, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D90_ShootingSpeed, _put_Nikon_D90_ShootingSpeed }, { 0,0,0,0,0,0,0 }, }; /* One D3s reporter is Matthias Blaicher */ static struct submenu nikon_d3s_capture_settings[] = { { N_("Minimum Shutter Speed"), "minimumshutterspeed", PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_PADVPValue, _put_Nikon_D3s_PADVPValue }, { N_("ISO Auto Hi Limit"), "isoautohilimit", PTP_DPC_NIKON_ISOAutoHiLimit, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_D3s_ISOAutoHiLimit, _put_Nikon_D3s_ISOAutoHiLimit }, { N_("Continuous Shooting Speed Slow"), "shootingspeed", PTP_DPC_NIKON_D1ShootingSpeed, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_ShootingSpeed, _put_Nikon_D3s_ShootingSpeed }, { N_("Continuous Shooting Speed High"), "shootingspeedhigh", PTP_DPC_NIKON_ContinuousSpeedHigh, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_ShootingSpeedHigh, _put_Nikon_D3s_ShootingSpeedHigh }, { N_("Flash Sync. Speed"), "flashsyncspeed", PTP_DPC_NIKON_FlashSyncSpeed, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_FlashSyncSpeed, _put_Nikon_D3s_FlashSyncSpeed }, { N_("Flash Shutter Speed"), "flashshutterspeed", PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_FlashShutterSpeed, _put_Nikon_D3s_FlashShutterSpeed }, { N_("Image Quality"), "imagequality", PTP_DPC_CompressionSetting, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_Compression, _put_Nikon_D3s_Compression }, { N_("JPEG Compression Policy"), "jpegcompressionpolicy", PTP_DPC_NIKON_JPEG_Compression_Policy, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_JPEGCompressionPolicy, _put_Nikon_D3s_JPEGCompressionPolicy }, { N_("AF-C Mode Priority"), "afcmodepriority", PTP_DPC_NIKON_A1AFCModePriority, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_AFCModePriority, _put_Nikon_D3s_AFCModePriority }, { N_("AF-S Mode Priority"), "afsmodepriority", PTP_DPC_NIKON_A2AFSModePriority, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_AFSModePriority, _put_Nikon_D3s_AFSModePriority }, { N_("AF Activation"), "afactivation", PTP_DPC_NIKON_A4AFActivation, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_AFActivation, _put_Nikon_D3s_AFActivation }, { N_("Dynamic AF Area"), "dynamicafarea", PTP_DPC_NIKON_DynamicAFArea, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_DynamicAFArea, _put_Nikon_D3s_DynamicAFArea }, { N_("AF Lock On"), "aflockon", PTP_DPC_NIKON_AFLockOn, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_AFLockOn, _put_Nikon_D3s_AFLockOn }, { N_("AF Area Point"), "afareapoint", PTP_DPC_NIKON_AFAreaPoint, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_AFAreaPoint, _put_Nikon_D3s_AFAreaPoint }, { N_("AF On Button"), "afonbutton", PTP_DPC_NIKON_NormalAFOn, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_NormalAFOn, _put_Nikon_D3s_NormalAFOn }, /* same as D90 */ { N_("High ISO Noise Reduction"), "highisonr", PTP_DPC_NIKON_NrHighISO, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_D90_HighISONR, _put_Nikon_D90_HighISONR }, { N_("Active D-Lighting"), "dlighting", PTP_DPC_NIKON_ActiveDLighting, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_D90_ActiveDLighting, _put_Nikon_D90_ActiveDLighting }, { 0,0,0,0,0,0,0 }, }; static struct submenu nikon_generic_capture_settings[] = { /* filled in with D90 values */ { N_("Minimum Shutter Speed"), "minimumshutterspeed", PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D90_PADVPValue, _put_Nikon_D90_PADVPValue }, { N_("ISO Auto Hi Limit"), "isoautohilimit", PTP_DPC_NIKON_ISOAutoHiLimit, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_D90_ISOAutoHiLimit, _put_Nikon_D90_ISOAutoHiLimit }, { N_("Active D-Lighting"), "dlighting", PTP_DPC_NIKON_ActiveDLighting, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_D90_ActiveDLighting, _put_Nikon_D90_ActiveDLighting }, { N_("High ISO Noise Reduction"), "highisonr", PTP_DPC_NIKON_NrHighISO, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_D90_HighISONR, _put_Nikon_D90_HighISONR }, { N_("Movie High ISO Noise Reduction"), "moviehighisonr", PTP_DPC_NIKON_MovieNrHighISO, PTP_VENDOR_NIKON, PTP_DTC_INT8, _get_Nikon_D90_HighISONR, _put_Nikon_D90_HighISONR }, { N_("Continuous Shooting Speed Slow"), "shootingspeed", PTP_DPC_NIKON_D1ShootingSpeed, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D90_ShootingSpeed, _put_Nikon_D90_ShootingSpeed }, { N_("Maximum continuous release"), "maximumcontinousrelease", PTP_DPC_NIKON_D2MaximumShots, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Range_UINT8, _put_Range_UINT8 }, { N_("Movie Quality"), "moviequality", PTP_DPC_NIKON_MovScreenSize, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_MovieQuality, _put_Nikon_MovieQuality }, { N_("Movie Quality"), "moviequality", PTP_DPC_NIKON_1_MovQuality, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_1_MovieQuality, _put_Nikon_1_MovieQuality }, { N_("High ISO Noise Reduction"), "highisonr", PTP_DPC_NIKON_1_HiISONoiseReduction, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_1_HighISONR, _put_Nikon_1_HighISONR }, { N_("Raw Compression"), "rawcompression", PTP_DPC_NIKON_RawCompression, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_RawCompression, _put_Nikon_RawCompression }, { N_("Image Quality 2"), "imagequality2", PTP_DPC_NIKON_1_ImageCompression, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_1_Compression, _put_Nikon_1_Compression }, /* And some D3s values */ { N_("Continuous Shooting Speed High"), "shootingspeedhigh", PTP_DPC_NIKON_ContinuousSpeedHigh, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_ShootingSpeedHigh, _put_Nikon_D3s_ShootingSpeedHigh }, { N_("Flash Sync. Speed"), "flashsyncspeed", PTP_DPC_NIKON_FlashSyncSpeed, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_FlashSyncSpeed, _put_Nikon_D3s_FlashSyncSpeed }, { N_("Flash Shutter Speed"), "flashshutterspeed", PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, PTP_DTC_UINT8, _get_Nikon_D3s_FlashShutterSpeed, _put_Nikon_D3s_FlashShutterSpeed }, { 0,0,0,0,0,0,0 }, }; static struct menu menus[] = { { N_("Camera Actions"), "actions", 0, 0, camera_actions_menu, NULL, NULL }, { N_("Camera Settings"), "settings", 0x4b0, 0x0428, nikon_d7000_camera_settings, NULL, NULL }, { N_("Camera Settings"), "settings", 0x4b0, 0x0430, nikon_d7100_camera_settings, NULL, NULL }, { N_("Camera Settings"), "settings", 0x4b0, 0x0421, nikon_d90_camera_settings, NULL, NULL }, { N_("Camera Settings"), "settings", 0x4b0, 0x0606, nikon_1_s1_camera_settings, NULL, NULL }, { N_("Camera Settings"), "settings", 0x4b0, 0x0605, nikon_1_j3_camera_settings, NULL, NULL }, { N_("Camera Settings"), "settings", 0, 0, camera_settings_menu, NULL, NULL }, { N_("Camera Status Information"), "status", 0, 0, camera_status_menu, NULL, NULL }, { N_("Image Settings"), "imgsettings", 0, 0, image_settings_menu, NULL, NULL }, { N_("Capture Settings"), "capturesettings", 0x4b0, 0x0421, nikon_d90_capture_settings, NULL, NULL }, { N_("Capture Settings"), "capturesettings", 0x4b0, 0x0426, nikon_d3s_capture_settings, NULL, NULL }, { N_("Capture Settings"), "capturesettings", 0x4b0, 0x0429, nikon_d5100_capture_settings, NULL, NULL }, { N_("Capture Settings"), "capturesettings", 0x4b0, 0x0430, nikon_d7100_capture_settings, NULL, NULL }, { N_("Capture Settings"), "capturesettings", 0x4b0, 0, nikon_generic_capture_settings, NULL, NULL }, { N_("Capture Settings"), "capturesettings", 0, 0, capture_settings_menu, NULL, NULL }, { N_("WIFI profiles"), "wifiprofiles", 0, 0, NULL, _get_wifi_profiles_menu, _put_wifi_profiles_menu }, }; int camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *section, *widget; unsigned int menuno, submenuno; int ret; uint16_t *setprops = NULL; int i, nrofsetprops = 0; PTPParams *params = &camera->pl->params; CameraAbilities ab; SET_CONTEXT(camera, context); memset (&ab, 0, sizeof(ab)); gp_camera_get_abilities (camera, &ab); if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(&camera->pl->params, PTP_OC_CANON_EOS_RemoteRelease) ) { if (!params->eos_captureenabled) camera_prepare_capture (camera, context); ptp_check_eos_events (params); /* Otherwise the camera will auto-shutdown */ C_PTP (ptp_canon_eos_keepdeviceon (params)); } gp_widget_new (GP_WIDGET_WINDOW, _("Camera and Driver Configuration"), window); gp_widget_set_name (*window, "main"); for (menuno = 0; menuno < sizeof(menus)/sizeof(menus[0]) ; menuno++ ) { if (!menus[menuno].submenus) { /* Custom menu */ struct menu *cur = menus+menuno; ret = cur->getfunc(camera, §ion, cur); if (ret == GP_OK) gp_widget_append(*window, section); continue; } if ((menus[menuno].usb_vendorid != 0) && (ab.port == GP_PORT_USB)) { if (menus[menuno].usb_vendorid != ab.usb_vendor) continue; if ( menus[menuno].usb_productid && (menus[menuno].usb_productid != ab.usb_product) ) continue; GP_LOG_D ("usb vendor/product specific path entered"); } /* Standard menu with submenus */ ret = gp_widget_get_child_by_label (*window, _(menus[menuno].label), §ion); if (ret != GP_OK) { gp_widget_new (GP_WIDGET_SECTION, _(menus[menuno].label), §ion); gp_widget_set_name (section, menus[menuno].name); gp_widget_append (*window, section); } for (submenuno = 0; menus[menuno].submenus[submenuno].name ; submenuno++ ) { struct submenu *cursub = menus[menuno].submenus+submenuno; widget = NULL; if ( have_prop(camera,cursub->vendorid,cursub->propid) || ((cursub->propid == 0) && have_prop(camera,cursub->vendorid,cursub->type)) ) { int j; /* Do not handle a property we have already handled. * needed for the vendor specific but different configs. */ if (cursub->propid) { for (j=0;jpropid) break; if (jlabel, cursub->propid ); continue; } if (nrofsetprops) C_MEM (setprops = realloc(setprops,sizeof(setprops[0])*(nrofsetprops+1))); else C_MEM (setprops = malloc(sizeof(setprops[0]))); setprops[nrofsetprops++] = cursub->propid; } /* ok, looking good */ if ( ((cursub->propid & 0x7000) == 0x5000) || (NIKON_1(params) && ((cursub->propid & 0xf000) == 0xf000)) ) { PTPDevicePropDesc dpd; GP_LOG_D ("Getting property '%s' / 0x%04x", cursub->label, cursub->propid ); memset(&dpd,0,sizeof(dpd)); C_PTP (ptp_generic_getdevicepropdesc(params,cursub->propid,&dpd)); ret = cursub->getfunc (camera, &widget, cursub, &dpd); if ((ret == GP_OK) && (dpd.GetSet == PTP_DPGS_Get)) gp_widget_set_readonly (widget, 1); ptp_free_devicepropdesc(&dpd); } else { /* if it is a OPC, check for its presence. Otherwise just create the widget. */ if ( ((cursub->type & 0x7000) != 0x1000) || ptp_operation_issupported(params, cursub->type) ) { GP_LOG_D ("Getting function prop '%s' / 0x%04x", cursub->label, cursub->type ); ret = cursub->getfunc (camera, &widget, cursub, NULL); } else continue; } if (ret != GP_OK) { GP_LOG_D ("Failed to parse value of property '%s' / 0x%04x: error code %d", cursub->label, cursub->propid, ret); continue; } gp_widget_append (section, widget); continue; } if (have_eos_prop(camera,cursub->vendorid,cursub->propid)) { PTPDevicePropDesc dpd; GP_LOG_D ("Getting property '%s' / 0x%04x", cursub->label, cursub->propid ); memset(&dpd,0,sizeof(dpd)); ptp_canon_eos_getdevicepropdesc (params,cursub->propid, &dpd); ret = cursub->getfunc (camera, &widget, cursub, &dpd); ptp_free_devicepropdesc(&dpd); if (ret != GP_OK) { GP_LOG_D ("Failed to parse value of property '%s' / 0x%04x: error code %d", cursub->label, cursub->propid, ret); continue; } gp_widget_append (section, widget); continue; } } } if (!params->deviceinfo.DevicePropertiesSupported_len) { free (setprops); return GP_OK; } /* Last menu is "Other", a generic property fallback window. */ gp_widget_new (GP_WIDGET_SECTION, _("Other PTP Device Properties"), §ion); gp_widget_set_name (section, "other"); gp_widget_append (*window, section); for (i=0;ideviceinfo.DevicePropertiesSupported_len;i++) { uint16_t propid = params->deviceinfo.DevicePropertiesSupported[i]; char buf[20], *label; PTPDevicePropDesc dpd; CameraWidgetType type; int j; for (j=0;jpl->params; PTPPropertyValue propval; unsigned int i; CameraAbilities ab; SET_CONTEXT(camera, context); memset (&ab, 0, sizeof(ab)); gp_camera_get_abilities (camera, &ab); camera->pl->checkevents = TRUE; if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(&camera->pl->params, PTP_OC_CANON_EOS_RemoteRelease) ) { if (!params->eos_captureenabled) camera_prepare_capture (camera, context); ptp_check_eos_events (params); } CR (gp_widget_get_child_by_label (window, _("Camera and Driver Configuration"), &subwindow)); for (menuno = 0; menuno < sizeof(menus)/sizeof(menus[0]) ; menuno++ ) { ret = gp_widget_get_child_by_label (subwindow, _(menus[menuno].label), §ion); if (ret != GP_OK) continue; if (!menus[menuno].submenus) { /* Custom menu */ menus[menuno].putfunc(camera, section); continue; } if ((menus[menuno].usb_vendorid != 0) && (ab.port == GP_PORT_USB)) { if (menus[menuno].usb_vendorid != ab.usb_vendor) continue; if ( menus[menuno].usb_productid && (menus[menuno].usb_productid != ab.usb_product) ) continue; GP_LOG_D ("usb vendor/product specific path entered"); } /* Standard menu with submenus */ for (submenuno = 0; menus[menuno].submenus[submenuno].label ; submenuno++ ) { struct submenu *cursub = menus[menuno].submenus+submenuno; ret = gp_widget_get_child_by_label (section, _(cursub->label), &widget); if (ret != GP_OK) continue; if (!gp_widget_changed (widget)) continue; /* restore the "changed flag" */ gp_widget_set_changed (widget, TRUE); if ( have_prop(camera,cursub->vendorid,cursub->propid) || ((cursub->propid == 0) && have_prop(camera,cursub->vendorid,cursub->type)) ) { gp_widget_changed (widget); /* clear flag */ GP_LOG_D ("Setting property '%s' / 0x%04x", cursub->label, cursub->propid ); if ( ((cursub->propid & 0x7000) == 0x5000) || (NIKON_1(params) && ((cursub->propid & 0xf000) == 0xf000)) ){ PTPDevicePropDesc dpd; memset(&dpd,0,sizeof(dpd)); ptp_generic_getdevicepropdesc(params,cursub->propid,&dpd); if (dpd.GetSet == PTP_DPGS_GetSet) { ret = cursub->putfunc (camera, widget, &propval, &dpd); } else { gp_context_error (context, _("Sorry, the property '%s' / 0x%04x is currently ready-only."), _(cursub->label), cursub->propid); ret = GP_ERROR_NOT_SUPPORTED; } if (ret == GP_OK) { ret_ptp = LOG_ON_PTP_E (ptp_generic_setdevicepropvalue (params, cursub->propid, &propval, cursub->type)); if (ret_ptp != PTP_RC_OK) { gp_context_error (context, _("The property '%s' / 0x%04x was not set (0x%04x: %s)"), _(cursub->label), cursub->propid, ret_ptp, _(ptp_strerror(ret_ptp, params->deviceinfo.VendorExtensionID))); ret = translate_ptp_result (ret_ptp); } } ptp_free_devicepropvalue (cursub->type, &propval); ptp_free_devicepropdesc(&dpd); } else { ret = cursub->putfunc (camera, widget, NULL, NULL); } } if (have_eos_prop(camera,cursub->vendorid,cursub->propid)) { PTPDevicePropDesc dpd; gp_widget_changed (widget); /* clear flag */ GP_LOG_D ("Setting property '%s' / 0x%04x", cursub->label, cursub->propid); memset(&dpd,0,sizeof(dpd)); ptp_canon_eos_getdevicepropdesc (params,cursub->propid, &dpd); ret = cursub->putfunc (camera, widget, &propval, &dpd); if (ret == GP_OK) { ret_ptp = LOG_ON_PTP_E (ptp_canon_eos_setdevicepropvalue (params, cursub->propid, &propval, cursub->type)); if (ret_ptp != PTP_RC_OK) { gp_context_error (context, _("The property '%s' / 0x%04x was not set (0x%04x: %s)."), _(cursub->label), cursub->propid, ret_ptp, _(ptp_strerror(ret_ptp, params->deviceinfo.VendorExtensionID))); ret = translate_ptp_result (ret_ptp); } } else gp_context_error (context, _("Parsing the value of widget '%s' / 0x%04x failed with %d."), _(cursub->label), cursub->propid, ret); ptp_free_devicepropdesc(&dpd); ptp_free_devicepropvalue(cursub->type, &propval); } if (ret != GP_OK) return ret; } } if (!params->deviceinfo.DevicePropertiesSupported_len) return GP_OK; CR (gp_widget_get_child_by_label (subwindow, _("Other PTP Device Properties"), §ion)); /* Generic property setter */ for (i=0;ideviceinfo.DevicePropertiesSupported_len;i++) { uint16_t propid = params->deviceinfo.DevicePropertiesSupported[i]; CameraWidgetType type; char buf[20], *label, *xval; PTPDevicePropDesc dpd; label = (char*)ptp_get_property_description(params, propid); if (!label) { sprintf (buf, N_("PTP Property 0x%04x"), propid); label = buf; } ret = gp_widget_get_child_by_label (section, _(label), &widget); if (ret != GP_OK) continue; if (!gp_widget_changed (widget)) continue; gp_widget_get_type (widget, &type); memset (&dpd,0,sizeof(dpd)); memset (&propval,0,sizeof(propval)); ret = ptp_getdevicepropdesc (params,propid,&dpd); if (ret != PTP_RC_OK) continue; if (dpd.GetSet != PTP_DPGS_GetSet) { gp_context_error (context, _("Sorry, the property '%s' / 0x%04x is currently ready-only."), _(label), propid); return GP_ERROR_NOT_SUPPORTED; } switch (dpd.DataType) { #define X(dtc,val) \ case dtc: \ if (type == GP_WIDGET_RANGE) { \ float f; \ gp_widget_get_value (widget, &f); \ propval.val = f; \ } else { \ long x; \ ret = gp_widget_get_value (widget, &xval); \ sscanf (xval, "%ld", &x); \ propval.val = x; \ }\ break; X(PTP_DTC_INT8,i8) X(PTP_DTC_UINT8,u8) X(PTP_DTC_INT16,i16) X(PTP_DTC_UINT16,u16) X(PTP_DTC_INT32,i32) X(PTP_DTC_UINT32,u32) #undef X case PTP_DTC_STR: { char *val; gp_widget_get_value (widget, &val); C_MEM (propval.str = strdup(val)); break; } default: break; } /* TODO: ret is ignored here, this is inconsistent with the code above */ ret = LOG_ON_PTP_E (ptp_generic_setdevicepropvalue (params, propid, &propval, dpd.DataType)); if (ret != PTP_RC_OK) { gp_context_error (context, _("The property '%s' / 0x%04x was not set (0x%04x: %s)."), _(label), propid, ret, _(ptp_strerror(ret, params->deviceinfo.VendorExtensionID))); ret = GP_ERROR; } ptp_free_devicepropvalue (dpd.DataType, &propval); ptp_free_devicepropdesc (&dpd); } return GP_OK; } libgphoto2-2.5.9/camlibs/ptp2/chdk_live_view.h0000644000175000001440000000644712610415536016165 00000000000000#ifndef __LIVE_VIEW_H #define __LIVE_VIEW_H // Note: used in modules and platform independent code. // Do not add platform dependent stuff in here (#ifdef/#endif compile options or camera dependent values) /* Protocol notes: - Unless otherwise specified, all structure values are packed in camera native (little endian) byte order - Frame buffer and palette data are in native camera formats Some documentation may be found at http://chdk.wikia.com/wiki/Frame_buffers - The frame buffer descriptions returned may not be correct depending on the camera model and various camera settings (shooting mode, digital zoom, aspect ratio) This may result in partial images, garbage in the "valid" area or incorrect position - In some cases, the requested data may not be available. If this happens, the framebuffer or palette data offset will be zero. - The frame buffer descriptions are returned regardless of whether the data is available */ // Live View protocol version #define LIVE_VIEW_VERSION_MAJOR 2 // increase only with backwards incompatible changes (and reset minor) #define LIVE_VIEW_VERSION_MINOR 1 // increase with extensions of functionality /* protocol version history < 2.0 - development versions 2.0 - initial release, chdk 1.1 2.1 - added palette type 4 - 16 entry VUYA, 2 bit alpha */ // Control flags for determining which data block to transfer #define LV_TFR_VIEWPORT 0x01 #define LV_TFR_BITMAP 0x04 #define LV_TFR_PALETTE 0x08 enum lv_aspect_rato { LV_ASPECT_4_3, LV_ASPECT_16_9, }; /* Framebuffer types additional values will be added if new data formats appear */ enum lv_fb_type { LV_FB_YUV8, // 8 bit per element UYVYYY, used for live view LV_FB_PAL8, // 8 bit paletted, used for bitmap overlay. Note palette data and type sent separately }; /* framebuffer data description NOTE YUV pixels widths are based on the number of Y elements */ typedef struct { int fb_type; // framebuffer type - note future versions might use different structures depending on type int data_start; // offset of data from start of live view header /* buffer width in pixels data size is always buffer_width*visible_height*(buffer bpp based on type) */ int buffer_width; /* visible size in pixels describes data within the buffer which contains image data to be displayed any offsets within buffer data are added before sending, so the top left pixel is always the first first byte of data. width must always be <= buffer_width if buffer_width is > width, the additional data should be skipped visible_height also defines the number of data rows */ int visible_width; int visible_height; /* margins pixels offsets needed to replicate display position on cameras screen not used for any buffer offsets */ int margin_left; int margin_top; int margin_right; int margin_bot; } lv_framebuffer_desc; typedef struct { // live view sub-protocol version int version_major; int version_minor; int lcd_aspect_ratio; // physical aspect ratio of LCD int palette_type; int palette_data_start; // framebuffer descriptions are given as offsets, to allow expanding the structures in minor protocol changes int vp_desc_start; int bm_desc_start; } lv_data_header; #endif // __LIVE_VIEW_H libgphoto2-2.5.9/camlibs/ptp2/chdk.c0000644000175000001440000010167612610415617014107 00000000000000/* chdk.c * * Copyright (C) 2015 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #include "ptp.h" #include "ptp-bugs.h" #include "ptp-private.h" #include "ptp-pack.c" /* CHDK support */ /* Include the rlibs.lua lua libs or try do it on our own? */ /* capture: * send LUA: * init_usb_capture(0); is exiting capture * init_usb_capture(1,0,0) 1 = jpeg, 2 = raw, 4 = switch raw to dng * * ff_imglist(options) * return ls('path'[,'opts') * return ff_download(srcpaths[,ropts]) * * return ff_mdelete(paths) * * return os.stat(path) * return os.utime(path) * return os.mkdir(path) * return os.remove(path) * return mkdir_m(path(s)) * rs_init for starting usb shootinp */ static int chdk_generic_script_run ( PTPParams *params, const char *luascript, char **table, int *retint, GPContext *context ) { int ret = GP_OK; int scriptid = 0; unsigned int status; int luastatus; ptp_chdk_script_msg *msg = NULL; char *xtable = NULL; int xint = -1; if (!table) table = &xtable; if (!retint) retint = &xint; GP_LOG_D ("calling lua script %s", luascript); C_PTP (ptp_chdk_exec_lua(params, (char*)luascript, 0, &scriptid, &luastatus)); GP_LOG_D ("called script. script id %d, status %d", scriptid, luastatus); *table = NULL; *retint = -1; while (1) { C_PTP (ptp_chdk_get_script_status(params, &status)); GP_LOG_D ("script status %x", status); if (status & PTP_CHDK_SCRIPT_STATUS_MSG) { C_PTP (ptp_chdk_read_script_msg(params, &msg)); GP_LOG_D ("message script id %d, type %d, subtype %d", msg->script_id, msg->type, msg->subtype); switch (msg->type) { case PTP_CHDK_S_MSGTYPE_RET: case PTP_CHDK_S_MSGTYPE_USER: switch (msg->subtype) { case PTP_CHDK_TYPE_UNSUPPORTED: GP_LOG_D("unsupported");break; case PTP_CHDK_TYPE_NIL: GP_LOG_D("nil");break; case PTP_CHDK_TYPE_BOOLEAN: *retint = msg->data[0]; /* 3 more bytes, but rest are not interestng for bool */ GP_LOG_D("boolean %d", *retint); break; case PTP_CHDK_TYPE_INTEGER: GP_LOG_D("int %02x %02x %02x %02x", msg->data[0], msg->data[1], msg->data[2], msg->data[3]); *retint = le32atoh((unsigned char*)msg->data); break; case PTP_CHDK_TYPE_STRING: GP_LOG_D("string %s", msg->data); if (*table) { *table = realloc(*table,strlen(*table)+strlen(msg->data)+1); strcat(*table,msg->data); } else { *table = strdup(msg->data); } break; case PTP_CHDK_TYPE_TABLE: GP_LOG_D("table %s", msg->data); if (*table) { *table = realloc(*table,strlen(*table)+strlen(msg->data)+1); strcat(*table,msg->data); } else { *table = strdup(msg->data); } break; default: GP_LOG_E("unknown chdk msg->type %d", msg->subtype);break; } break; case PTP_CHDK_S_MSGTYPE_ERR: GP_LOG_D ("error %d, message %s", msg->subtype, msg->data); gp_context_error(context, _("CHDK lua engine reports error: %s"), msg->data); ret = GP_ERROR_BAD_PARAMETERS; break; default: GP_LOG_E ("unknown msg->type %d", msg->type); break; } free (msg); } if (!status) /* this means we read out all messages */ break; /* wait for script to finish */ if (status & PTP_CHDK_SCRIPT_STATUS_RUN) usleep(100*1000); /* 100 ms */ } if (xtable) GP_LOG_E("a string return was unexpected, returned value: %s", xtable); if (xint != -1) GP_LOG_E("a int return was unexpected, returned value: %d", xint); return ret; } static int chdk_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context, int dirsonly) { Camera *camera = (Camera *)data; PTPParams *params = &camera->pl->params; int retint = FALSE; int ret; int tablecnt; /* return ls("A/path/"); */ const char *luascript = PTP_CHDK_LUA_LS"\nreturn ls('A%s',{\nstat='*',\n})"; char *lua = NULL; char *t, *table = NULL; char *xfolder; /* strip leading / of folders, except for the root folder */ xfolder=strdup(folder); if (strlen(folder)>2 && (xfolder[strlen(xfolder)-1] == '/')) xfolder[strlen(xfolder)-1] = '\0'; C_MEM (lua = malloc(strlen(luascript)+strlen(xfolder)+1)); sprintf(lua,luascript,xfolder); free(xfolder); ret = chdk_generic_script_run (params, lua, &table, &retint, context); if (ret != GP_OK) return ret; if (table) { t = table; /* table {[1]="NIKON001.DSC",[2]="DCIM",[3]="MISC",[4]="DISKBOOT.BIN",[5]="CHDK",[6]="changelog.txt",[7]="vers.req",[8]="readme.txt",[9]="PS.FI2",} */ /* table {[1]={is_file=true,mtime=1402161416,name="NIKON001.DSC",ctime=1402161416,attrib=34,is_dir=false,size=512,},[2]={is_file=false,mtime=1402161416,name="DCIM",ctime=1402161416,attrib=16,is_dir=true,size=0,},[3]={is_file=false,mtime=1406460938,name="MISC",ctime=1406460938,attrib=16,is_dir=true,size=0,},[4]={is_file=true,mtime=1398564982,name="DISKBOOT.BIN",ctime=1423347896,attrib=32,is_dir=false,size=138921,},[5]={is_file=false,mtime=1423347900,name="CHDK",ctime=1423347900,attrib=16,is_dir=true,size=0,},[6]={is_file=true,mtime=1395026402,name="changelog.txt",ctime=1423347900,attrib=32,is_dir=false,size=2093,},[7]={is_file=true,mtime=1217623956,name="vers.req",ctime=1423347900,attrib=32,is_dir=false,size=107,},[8]={is_file=true,mtime=1398564982,name="readme.txt",ctime=1423347900,attrib=32,is_dir=false,size=10518,},[9]={is_file=true,mtime=1398564982,name="PS.FI2",ctime=1423347900,attrib=32,is_dir=false,size=80912,},} */ nexttable: if (*t != '{') return GP_ERROR; t++; tablecnt = 0; while (*t) { int cnt; char *name = NULL; int isfile = 0, mtime = 0, attrib = -1, ctime = 0, size = -1; CameraFileInfo info; if (*t++ != '[') { GP_LOG_E("expected [, have %c", t[-1]); break; } if (!sscanf(t,"%d",&cnt)) { GP_LOG_E("expected integer"); break; } GP_LOG_D("parsing entry %d", cnt); if (cnt != tablecnt + 1) { GP_LOG_E("cnt %d, tablecnt %d, expected %d", cnt, tablecnt, tablecnt+1); break; } tablecnt++; t = strchr(t,']'); if (!t) { GP_LOG_E("expected ]"); break; } t++; if (*t++ != '=') { GP_LOG_E("expected ="); break; } /* {is_file=true,mtime=1402161416,name="NIKON001.DSC",ctime=1402161416,attrib=34,is_dir=false,size=512,} */ if (*t++ != '{') { GP_LOG_E("expected {"); break; } memset(&info,0,sizeof(info)); while (*t && *t != '}') { /* GP_LOG_D("parsing %s", t); */ if (t==strstr(t,"is_file=true")) { isfile = TRUE; } if (t==strstr(t,"is_file=false")) { isfile = FALSE; } if (t==strstr(t,"is_dir=true")) { isfile = FALSE; } if (t==strstr(t,"is_dir=false")) { isfile = TRUE; } if (t==strstr(t,"name=\"")) { char *s; name = t+strlen("name=."); s = strchr(name,'"'); if (s) *s='\0'; name = strdup(name); GP_LOG_D("name is %s", name); *s = '"'; } if (sscanf(t,"mtime=%d,", &mtime)) { info.file.mtime = mtime; info.file.fields |= GP_FILE_INFO_MTIME; } if (sscanf(t,"size=%d,", &size)) { info.file.size = size; info.file.fields |= GP_FILE_INFO_SIZE; } if (!sscanf(t,"ctime=%d,", &ctime)) { } if (!sscanf(t,"attrib=%d,", &attrib)) { } t = strchr(t,','); if (t) t++; } if (*t) t++; /* Directories: return as list. */ if (dirsonly && !isfile) gp_list_append (list, name, NULL); /* Files: Add directly to FS, including the meta info too. */ if (!dirsonly && isfile) { gp_filesystem_append(fs, folder, name, context); gp_filesystem_set_info_noop(fs, folder, name, info, context); } free(name); if (*t++ != ',') { GP_LOG_E("expected , got %c", t[-1]); break; } if (*t == '}') { t++; break; } } if (*t) { if (*t == '{') goto nexttable; GP_LOG_E("expected end of string or { , got %s", t); return GP_ERROR; } free (table); table = NULL; } if (retint) return GP_OK; GP_LOG_E("boolean return from LUA ls was %d", retint); return GP_ERROR; } static int chdk_file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { return chdk_list_func(fs,folder,list,data,context,FALSE); } static int chdk_folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { return chdk_list_func(fs,folder,list,data,context,TRUE); } static int chdk_get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = (Camera *)data; PTPParams *params = &camera->pl->params; int retint = 0; int ret; char *table = NULL; const char *luascript = "\nreturn os.stat('A%s/%s')"; char *lua = NULL; C_MEM (lua = malloc(strlen(luascript)+strlen(folder)+strlen(filename)+1)); sprintf(lua,luascript,folder,filename); ret = chdk_generic_script_run (params, lua, &table, &retint, context); free (lua); if (table) { char *t = table; int x; while (*t) { if (sscanf(t,"mtime %d", &x)) { info->file.fields |= GP_FILE_INFO_MTIME; info->file.mtime = x; } if (sscanf(t,"size %d", &x)) { info->file.fields |= GP_FILE_INFO_SIZE; info->file.size = x; } t = strchr(t,'\n'); if (t) t++; } free (table); } return ret; } static int chdk_delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = (Camera *)data; PTPParams *params = &camera->pl->params; int ret; const char *luascript = "\nreturn os.remove('A%s/%s')"; char *lua = NULL; C_MEM (lua = malloc(strlen(luascript)+strlen(folder)+strlen(filename)+1)); sprintf(lua,luascript,folder,filename); ret = chdk_generic_script_run (params, lua, NULL, NULL, context); free (lua); return ret; } static int chdk_get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; PTPParams *params = &camera->pl->params; uint16_t ret; PTPDataHandler handler; char *fn; fn = malloc(1+strlen(folder)+1+strlen(filename)+1), sprintf(fn,"A%s/%s",folder,filename); ptp_init_camerafile_handler (&handler, file); ret = ptp_chdk_download(params, fn, &handler); free (fn); ptp_exit_camerafile_handler (&handler); if (ret == PTP_ERROR_CANCEL) return GP_ERROR_CANCEL; C_PTP_REP (ret); return GP_OK; } static CameraFilesystemFuncs chdk_fsfuncs = { .file_list_func = chdk_file_list_func, .folder_list_func = chdk_folder_list_func, .get_info_func = chdk_get_info_func, .get_file_func = chdk_get_file_func, .del_file_func = chdk_delete_file_func, /* .set_info_func = chdk_set_info_func, .read_file_func = chdk_read_file_func, .put_file_func = chdk_put_file_func, .make_dir_func = chdk_make_dir_func, .remove_dir_func = chdk_remove_dir_func, .storage_info_func = chdk_storage_info_func */ }; static int camera_prepare_chdk_capture(Camera *camera, GPContext *context) { PTPParams *params = &camera->pl->params; int ret = 0, retint = 0; char *table = NULL; char *lua = PTP_CHDK_LUA_SERIALIZE "if not get_mode() then\n\ switch_mode_usb(1)\n\ local i=0\n\ while not get_mode() and i < 300 do\n\ sleep(10)\n\ i=i+1\n\ end\n\ if not get_mode() then\n\ return false, 'switch failed'\n\ end\n\ return true\n\ end\n\ return false,'already in rec'\n\ "; ret = chdk_generic_script_run (params, lua, &table, &retint, context); if(table) GP_LOG_D("table returned: %s\n", table); free(table); return ret; } static int camera_unprepare_chdk_capture(Camera *camera, GPContext *context) { PTPParams *params = &camera->pl->params; int ret, retint; char *table; char *lua = PTP_CHDK_LUA_SERIALIZE "if get_mode() then\n\ switch_mode_usb(0)\n\ local i=0\n\ while get_mode() and i < 300 do\n\ sleep(10)\n\ i=i+1\n\ end\n\ if get_mode() then\n\ return false, 'switch failed'\n\ end\n\ return true\n\ end\n\ return false,'already in play'\n\ "; ret = chdk_generic_script_run (params, lua, &table, &retint, context); if(table) GP_LOG_D("table returned: %s\n", table); free(table); return ret; } static int chdk_camera_about (Camera *camera, CameraText *text, GPContext *context) { snprintf (text->text, sizeof(text->text), _("PTP2 / CHDK driver\n" "(c) 2015-%d by Marcus Meissner .\n" "This is a PTP subdriver that supports CHDK using Canon cameras.\n" "\n" "Enjoy!"), 2015); return GP_OK; } static int chdk_camera_summary (Camera *camera, CameraText *text, GPContext *context) { PTPParams *params = &camera->pl->params; int ret; char *s = text->text; int major, minor, retint; C_PTP (ptp_chdk_get_version (params, &major, &minor)); sprintf (s, _("CHDK %d.%d Status:\n"), major, minor ); s += strlen(s); ret = chdk_generic_script_run (params, "return get_mode()", NULL, &retint, context); sprintf (s, _("Mode: %d\n"), retint); s += strlen(s); ret = chdk_generic_script_run (params, "return get_sv96()", NULL, &retint, context); sprintf (s, _("SV96: %d, ISO: %d\n"), retint, (int)(exp2(retint/96.0)*3.125)); s += strlen(s); ret = chdk_generic_script_run (params, "return get_tv96()", NULL, &retint, context); sprintf (s, _("TV96: %d, Shutterspeed: %f\n"), retint, 1.0/exp2(retint/96.0)); s += strlen(s); ret = chdk_generic_script_run (params, "return get_av96()", NULL, &retint, context); sprintf (s, _("AV96: %d, Aperture: %f\n"), retint, sqrt(exp2(retint/96.0))); s += strlen(s); ret = chdk_generic_script_run (params, "return get_focus()", NULL, &retint, context); sprintf (s, _("Focus: %d\n"), retint); s += strlen(s); ret = chdk_generic_script_run (params, "return get_iso_mode()", NULL, &retint, context); sprintf (s, _("ISO Mode: %d\n"), retint); s += strlen(s); ret = chdk_generic_script_run (params, "return get_zoom()", NULL, &retint, context); sprintf (s, _("Zoom: %d\n"), retint); s += strlen(s); ret = chdk_generic_script_run (params, "return get_temperature(0)", NULL, &retint, context); sprintf (s, _("Optical Temperature: %d\n"), retint); s += strlen(s); ret = chdk_generic_script_run (params, "return get_temperature(1)", NULL, &retint, context); sprintf (s, _("CCD Temperature: %d\n"), retint); s += strlen(s); ret = chdk_generic_script_run (params, "return get_temperature(2)", NULL, &retint, context); sprintf (s, _("Battery Temperature: %d\n"), retint); s += strlen(s); ret = chdk_generic_script_run (params, "return get_flash_mode()", NULL, &retint, context); sprintf (s, _("Flash Mode: %d\n"), retint); s += strlen(s); return ret; /* Mode: 256 SV96: 603, ISO: 243 TV96: 478, Shutterspeed: 0 AV96: 294, Aperture: 2,890362 ND Filter: -1 Focus: 166 ISO Mode: 0 */ } struct submenu; typedef int (*get_func) (PTPParams *, struct submenu*, CameraWidget **, GPContext *); #define CONFIG_GET_ARGS PTPParams *params, struct submenu *menu, CameraWidget **widget, GPContext *context typedef int (*put_func) (PTPParams *, CameraWidget *, GPContext *); #define CONFIG_PUT_ARGS PTPParams *params, CameraWidget *widget, GPContext *context struct submenu { char *label; char *name; get_func getfunc; put_func putfunc; }; static int chdk_get_iso(CONFIG_GET_ARGS) { int retint = 0, iso = 0; char buf[20]; CR (chdk_generic_script_run (params, "return get_iso_mode()", NULL, &retint, context)); if (!retint) { CR(chdk_generic_script_run (params, "return get_sv96()", NULL, &retint, context)); iso = (int)(exp2(retint/96.0)*3.125); } else { iso = retint; } CR (gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget)); gp_widget_set_name (*widget, menu->name); sprintf(buf,"%d", iso); gp_widget_set_value (*widget, buf); return GP_OK; } static int chdk_put_iso(CONFIG_PUT_ARGS) { int iso = 0; char *val; char lua[100]; gp_widget_get_value (widget, &val); if (!sscanf(val, "%d", &iso)) return GP_ERROR_BAD_PARAMETERS; sprintf(lua,"return set_iso_mode(%d)\n", iso); CR (chdk_generic_script_run (params, lua, NULL, NULL, context)); return GP_OK; } static int chdk_get_iso_market(CONFIG_GET_ARGS) { int retint = 0, iso = 0; char buf[20]; CR (chdk_generic_script_run (params, "return get_iso_market()", NULL, &retint, context)); if (!retint) { CR(chdk_generic_script_run (params, "return iso_real_to_market(get_sv96())", NULL, &retint, context)); iso = (int)(exp2(retint/96.0)*3.125); } else { iso = retint; } CR (gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget)); gp_widget_set_name (*widget, menu->name); sprintf(buf,"%d", iso); gp_widget_set_value (*widget, buf); return GP_OK; } static int chdk_put_iso_market(CONFIG_PUT_ARGS) { int iso = 0; char *val; char lua[100]; gp_widget_get_value (widget, &val); if (!sscanf(val, "%d", &iso)) return GP_ERROR_BAD_PARAMETERS; sprintf(lua,"return set_iso_real(iso_market_to_real(%d))\n", iso); CR (chdk_generic_script_run (params, lua, NULL, NULL, context)); return GP_OK; } static int chdk_get_av(CONFIG_GET_ARGS) { int retint = 0; char buf[20]; float f; CR (chdk_generic_script_run (params, "return get_av96()", NULL, &retint, context)); f = sqrt(exp2(retint/96.0)); CR (gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget)); gp_widget_set_name (*widget, menu->name); sprintf(buf, "%d.%d", (int)f,((int)f*10)%10); gp_widget_set_value (*widget, buf); return GP_OK; } static int chdk_put_av(CONFIG_PUT_ARGS) { char *val; int av1,av2,sqav; char lua[100]; gp_widget_get_value (widget, &val); if (2 != sscanf(val, "%d.%d", &av1,&av2)) { if (!sscanf(val, "%d", &av1)) { return GP_ERROR_BAD_PARAMETERS; } av2 = 0; } /* av96 = 96*log2(f^2) */ sqav = (av1*1.0+av2/10.0)*(av1*1.0+av2/10.0); sprintf(lua,"return set_av96(%d)\n", (int)(96.0*log2(sqav))); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static int chdk_get_tv(CONFIG_GET_ARGS) { int retint = 0; char buf[20]; CR (chdk_generic_script_run (params, "return get_tv96()", NULL, &retint, context)); CR (gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget)); gp_widget_set_name (*widget, menu->name); sprintf(buf, "%f", 1.0/exp2(retint/96.0)); gp_widget_set_value (*widget, buf); return GP_OK; } static int chdk_put_tv(CONFIG_PUT_ARGS) { char *val; float f; char lua[100]; gp_widget_get_value (widget, &val); if (!sscanf(val, "%f", &f)) return GP_ERROR_BAD_PARAMETERS; sprintf(lua,"return set_tv96(%d)\n", (int)(96.0*(-log2(f)))); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static int chdk_get_focus(CONFIG_GET_ARGS) { int retint = 0; char buf[20]; CR (chdk_generic_script_run (params, "return get_focus()", NULL, &retint, context)); CR (gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget)); sprintf(buf, "%dmm", retint); gp_widget_set_value (*widget, buf); return GP_OK; } static int chdk_put_focus(CONFIG_PUT_ARGS) { char *val; int focus; char lua[100]; gp_widget_get_value (widget, &val); if (!sscanf(val, "%dmm", &focus)) return GP_ERROR_BAD_PARAMETERS; sprintf(lua,"return set_focus(%d)\n", focus); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static int chdk_get_zoom(CONFIG_GET_ARGS) { int retint = 0; char buf[20]; CR (chdk_generic_script_run (params, "return get_zoom()", NULL, &retint, context)); CR (gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget)); sprintf(buf, "%d", retint); gp_widget_set_value (*widget, buf); return GP_OK; } static int chdk_put_zoom(CONFIG_PUT_ARGS) { char *val; int zoom; char lua[100]; gp_widget_get_value (widget, &val); if (!sscanf(val, "%d", &zoom)) return GP_ERROR_BAD_PARAMETERS; sprintf(lua,"return set_zoom(%d)\n", zoom); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static int chdk_get_orientation(CONFIG_GET_ARGS) { int retint = 0; char buf[20]; CR (chdk_generic_script_run (params, "return get_orientation_sensor()", NULL, &retint, context)); CR (gp_widget_new (GP_WIDGET_TEXT, _(menu->label), widget)); sprintf(buf, "%d'", retint); gp_widget_set_value (*widget, buf); return GP_OK; } static int chdk_put_none(CONFIG_PUT_ARGS) { return GP_ERROR_NOT_SUPPORTED; } static int chdk_get_ev(CONFIG_GET_ARGS) { int retint = 0; float val; CR (chdk_generic_script_run (params, "return get_ev()", NULL, &retint, context)); CR (gp_widget_new (GP_WIDGET_RANGE, _(menu->label), widget)); gp_widget_set_range (*widget, -5.0, 5.0, 1.0/6.0 ); val = retint/96.0; return gp_widget_set_value (*widget, &val); } static int chdk_put_ev(CONFIG_PUT_ARGS) { float val; char lua[100]; gp_widget_get_value (widget, &val); sprintf(lua,"return set_ev(%d)\n", (int)(val*96.0)); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static void add_buttons(CameraWidget *widget) { gp_widget_add_choice(widget, "shoot_half"); gp_widget_add_choice(widget, "shoot_full"); gp_widget_add_choice(widget, "shoot_full_only"); gp_widget_add_choice(widget, "erase"); gp_widget_add_choice(widget, "up"); gp_widget_add_choice(widget, "print"); gp_widget_add_choice(widget, "left"); gp_widget_add_choice(widget, "set"); gp_widget_add_choice(widget, "right"); gp_widget_add_choice(widget, "disp"); gp_widget_add_choice(widget, "down"); gp_widget_add_choice(widget, "menu"); gp_widget_add_choice(widget, "zoom_in"); gp_widget_add_choice(widget, "zoom_out"); gp_widget_add_choice(widget, "video"); gp_widget_add_choice(widget, "shoot_full"); gp_widget_add_choice(widget, "shoot_full_only"); gp_widget_add_choice(widget, "wheel l"); gp_widget_add_choice(widget, "wheel r"); gp_widget_add_choice(widget, "zoom in"); gp_widget_add_choice(widget, "zoom out"); gp_widget_add_choice(widget, "iso"); gp_widget_add_choice(widget, "flash"); gp_widget_add_choice(widget, "mf"); gp_widget_add_choice(widget, "macro"); gp_widget_add_choice(widget, "video"); gp_widget_add_choice(widget, "timer"); gp_widget_add_choice(widget, "expo_corr"); gp_widget_add_choice(widget, "fe"); gp_widget_add_choice(widget, "face"); gp_widget_add_choice(widget, "zoom_assist"); gp_widget_add_choice(widget, "ae_lock"); gp_widget_add_choice(widget, "metering_mode"); gp_widget_add_choice(widget, "playback"); gp_widget_add_choice(widget, "help"); } static int chdk_get_press(CONFIG_GET_ARGS) { CR (gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget)); gp_widget_set_value (*widget, "chdk buttonname"); add_buttons(*widget); return GP_OK; } static int chdk_put_press(CONFIG_PUT_ARGS) { char *val; char lua[100]; gp_widget_get_value (widget, &val); sprintf(lua,"press('%s')\n", val); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static int chdk_get_release(CONFIG_GET_ARGS) { CR (gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget)); gp_widget_set_value (*widget, "chdk buttonname"); add_buttons(*widget); return GP_OK; } static int chdk_put_release(CONFIG_PUT_ARGS) { char *val; char lua[100]; gp_widget_get_value (widget, &val); sprintf(lua,"release('%s')\n", val); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static int chdk_get_click(CONFIG_GET_ARGS) { CR (gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget)); gp_widget_set_value (*widget, "chdk buttonname"); add_buttons(*widget); return GP_OK; } static int chdk_put_click(CONFIG_PUT_ARGS) { char *val; char lua[100]; gp_widget_get_value (widget, &val); if (!strcmp(val,"wheel l")) strcpy(lua,"post_levent_to_ui(\"RotateJogDialLeft\",1)\n"); else if (!strcmp(val,"wheel r")) strcpy(lua,"post_levent_to_ui(\"RotateJogDialRight\",1)\n"); else sprintf(lua,"click('%s')\n", val); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static int chdk_get_capmode(CONFIG_GET_ARGS) { char *s , *table = NULL; int retint = 0; const char *lua = PTP_CHDK_LUA_SERIALIZE \ "capmode=require'capmode'\n" "str=''\n" "local l={}\n" "local i=1\n" "for id,name in ipairs(capmode.mode_to_name) do\n" " if capmode.valid(id) then\n" " str = str .. name .. '\\n'\n" " l[i] = {name=name,id=id}\n" " i = i + 1\n" " end\n" "end\n" "str = str .. capmode.get_name()\n" "return str\n"; CR (gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget)); CR (chdk_generic_script_run (params,lua,&table,&retint,context)); s = table; GP_LOG_D("table is %s", table); while (*s) { char *x = strchr(s,'\n'); if (x) *x = 0; GP_LOG_D("line is %s", s); gp_widget_add_choice (*widget, s); if (!x || !strlen(x+1)) gp_widget_set_value (*widget, s); if (!x) break; s = x+1; } free (table); return GP_OK; } static int chdk_put_capmode(CONFIG_PUT_ARGS) { char *val; char lua[200]; const char *luastr = "capmode=require'capmode'\n" "str='%s'\n" "for id,name in ipairs(capmode.mode_to_name) do\n" " if capmode.valid(id) and str == name then\n" " set_capture_mode(id)\n" " end\n" "end\n" "return\n"; gp_widget_get_value (widget, &val); /* integer? should actually work ... according to CHDK/TEST/isobase.lua */ sprintf(lua, luastr, val); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static int chdk_get_aelock(CONFIG_GET_ARGS) { int val = 2; CR (gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget)); gp_widget_set_value (*widget, &val); return GP_OK; } static int chdk_put_aelock(CONFIG_PUT_ARGS) { int val; char lua[100]; gp_widget_get_value (widget, &val); sprintf(lua,"set_aelock(%d)\n", val); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static int chdk_get_aflock(CONFIG_GET_ARGS) { int val = 2; CR (gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget)); gp_widget_set_value (*widget, &val); return GP_OK; } static int chdk_put_aflock(CONFIG_PUT_ARGS) { int val; char lua[100]; gp_widget_get_value (widget, &val); sprintf(lua,"set_aflock(%d)\n", val); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static int chdk_get_mflock(CONFIG_GET_ARGS) { int val = 2; CR (gp_widget_new (GP_WIDGET_TOGGLE, _(menu->label), widget)); gp_widget_set_value (*widget, &val); return GP_OK; } static int chdk_put_mflock(CONFIG_PUT_ARGS) { int val; char lua[100]; gp_widget_get_value (widget, &val); sprintf(lua,"set_mf(%d)\n", val); return chdk_generic_script_run (params, lua, NULL, NULL, context); } static struct { char *name; char *label; } chdkonoff[] = { {"on", N_("On") }, {"off", N_("Off") }, }; static int chdk_get_onoff(CONFIG_GET_ARGS) { int i; char buf[1024]; gp_widget_new (GP_WIDGET_RADIO, _(menu->label), widget); gp_widget_set_name (*widget, menu->name); if (GP_OK != gp_setting_get("ptp2","chdk", buf)) strcpy(buf,"off"); for (i=0;ipl->params); CameraWidget *menu, *child; int i, ret; CR(camera_prepare_chdk_capture(camera, context)); gp_widget_new (GP_WIDGET_WINDOW, _("Camera and Driver Configuration"), window); gp_widget_set_name (*window, "main"); gp_widget_new (GP_WIDGET_SECTION, _("Image Settings"), &menu); gp_widget_set_name (menu, "imgsettings"); gp_widget_append(*window, menu); for (i=0;imgsettings[i].name;i++) { ret = imgsettings[i].getfunc(params,&imgsettings[i],&child,context); if (ret != GP_OK) { GP_LOG_E("error getting %s menu", imgsettings[i].name); continue; } gp_widget_set_name (child, imgsettings[i].name); gp_widget_append (menu, child); } return GP_OK; } static int chdk_camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { PTPParams *params = &(camera->pl->params); int i, ret; for (i=0;imgsettings[i].name;i++) { CameraWidget *widget; ret = gp_widget_get_child_by_label (window, _(imgsettings[i].label), &widget); if (ret != GP_OK) continue; if (!gp_widget_changed (widget)) continue; ret = imgsettings[i].putfunc(params,widget,context); if (ret != GP_OK) { GP_LOG_E("error putting %s menu", imgsettings[i].name); continue; } } return GP_OK; } static int chdk_camera_exit (Camera *camera, GPContext *context) { camera_unprepare_chdk_capture(camera, context); return GP_OK; } static int chdk_camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { int ret, retint; char *table, *s; PTPParams *params = &camera->pl->params; const char *luascript = PTP_CHDK_LUA_SERIALIZE_MSGS_SIMPLEQUOTE \ PTP_CHDK_LUA_RLIB_SHOOT \ "return rlib_shoot({info=true});\n"; ret = camera_prepare_chdk_capture(camera, context); if (ret != GP_OK) return ret; ret = chdk_generic_script_run (params, luascript, &table, &retint, context); GP_LOG_D("rlib_shoot returned table %s, retint %d\n", table, retint); s = strstr(table, "exp="); if (s) { int exp; if (!sscanf(s,"exp=%d\n", &exp)) { GP_LOG_E("%s did not parse for exp=NR?", s); ret = GP_ERROR; } else { sprintf(path->name,"IMG_%04d.JPG", exp); } } else { GP_LOG_E("no exp=nr found?\n"); ret = GP_ERROR; } s = strstr(table, "dir=\"A"); if (s) { char *y = strchr(s+6,'"'); if (y) *y='\0'; strcpy(path->folder, s+6); } else { ret = GP_ERROR; } free (table); return ret; } int chdk_init(Camera *camera, GPContext *context) { camera->functions->about = chdk_camera_about; camera->functions->exit = chdk_camera_exit; camera->functions->capture = chdk_camera_capture; camera->functions->summary = chdk_camera_summary; camera->functions->get_config = chdk_camera_get_config; camera->functions->set_config = chdk_camera_set_config; /* camera->functions->trigger_capture = camera_trigger_capture; camera->functions->capture_preview = camera_capture_preview; camera->functions->wait_for_event = camera_wait_for_event; */ gp_filesystem_set_funcs ( camera->fs, &chdk_fsfuncs, camera); return GP_OK; } libgphoto2-2.5.9/camlibs/ptp2/library.c0000644000175000001440000105320112623143575014636 00000000000000/* library.c * * Copyright (C) 2001-2005 Mariusz Woloszyn * Copyright (C) 2003-2015 Marcus Meissner * Copyright (C) 2005 Hubert Figuiere * Copyright (C) 2009 Axel Waggershauser * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _DEFAULT_SOURCE #include "config.h" #include #include #include #include #include #include #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) #include #endif #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #include "ptp.h" #include "ptp-bugs.h" #include "ptp-private.h" #include "ptp-pack.c" #include "olympus-wrap.h" #define USB_START_TIMEOUT 8000 #define USB_CANON_START_TIMEOUT 1500 /* 1.5 seconds (0.5 was too low) */ #define USB_NORMAL_TIMEOUT 20000 static int normal_timeout = USB_NORMAL_TIMEOUT; #define USB_TIMEOUT_CAPTURE 100000 static int capture_timeout = USB_TIMEOUT_CAPTURE; #define SET_CONTEXT(camera, ctx) ((PTPData *) camera->pl->params.data)->context = ctx #define SET_CONTEXT_P(p, ctx) ((PTPData *) p->data)->context = ctx /* below macro makes a copy of fn without leading character ('/'), * removes the '/' at the end if present, and calls folder_to_handle() * funtion proviging as the first argument the string after the second '/'. * for example if fn is '/store_00010001/DCIM/somefolder/', the macro will * call folder_to_handle() with 'DCIM/somefolder' as the very first argument. * it's used to omit storage pseudofolder and remove trailing '/' */ #define find_folder_handle(params,fn,s,p) { \ { \ int len=strlen(fn); \ char *backfolder=malloc(len); \ char *tmpfolder; \ memcpy(backfolder,fn+1, len); \ if (backfolder[len-2]=='/') backfolder[len-2]='\0';\ if ((tmpfolder=strchr(backfolder+1,'/'))==NULL) tmpfolder="/";\ p=folder_to_handle(params, tmpfolder+1,s,0,NULL);\ free(backfolder); \ } \ } #define folder_to_storage(fn,s) { \ if (!strncmp(fn,"/"STORAGE_FOLDER_PREFIX,strlen(STORAGE_FOLDER_PREFIX)+1)) \ { \ if (strlen(fn)Manufacturer); GP_LOG_D (" Model: %s", di->Model); GP_LOG_D (" device version: %s", di->DeviceVersion); GP_LOG_D (" serial number: '%s'",di->SerialNumber); GP_LOG_D ("Vendor extension ID: 0x%08x",di->VendorExtensionID); GP_LOG_D ("Vendor extension version: %d",di->VendorExtensionVersion); GP_LOG_D ("Vendor extension description: %s",di->VendorExtensionDesc); GP_LOG_D ("Functional Mode: 0x%04x",di->FunctionalMode); GP_LOG_D ("PTP Standard Version: %d",di->StandardVersion); GP_LOG_D ("Supported operations:"); for (i=0; iOperationsSupported_len; i++) GP_LOG_D (" 0x%04x (%s)", di->OperationsSupported[i], ptp_get_opcode_name (params, di->OperationsSupported[i])); GP_LOG_D ("Events Supported:"); for (i=0; iEventsSupported_len; i++) GP_LOG_D (" 0x%04x", di->EventsSupported[i]); GP_LOG_D ("Device Properties Supported:"); for (i=0; iDevicePropertiesSupported_len; i++) GP_LOG_D (" 0x%04x", di->DevicePropertiesSupported[i]); } /* struct timeval is simply two long int values, so passing it by value is not expensive. * It is most likely going to be inlined anyway and therefore 'free'. Passing it by value * leads to a cleaner interface. */ static struct timeval time_now() { struct timeval curtime; gettimeofday (&curtime, NULL); return curtime; } static int time_since (const struct timeval start) { struct timeval curtime = time_now(); return ((curtime.tv_sec - start.tv_sec)*1000)+((curtime.tv_usec - start.tv_usec)/1000); } static int waiting_for_timeout (int *current_wait, struct timeval start, int timeout) { int time_to_timeout = timeout - time_since (start); *current_wait += 50; /* increase sleep time by 50ms per cycle */ if (*current_wait > 200) *current_wait = 200; /* 200ms is the maximum sleep time */ if (*current_wait > time_to_timeout) *current_wait = time_to_timeout; /* never sleep 'into' the timeout */ if (*current_wait > 0) usleep (*current_wait * 1000); return *current_wait > 0; } /* Changes the ptp deviceinfo with additional hidden information available, * or stuff that requires special tricks */ int fixup_cached_deviceinfo (Camera *camera, PTPDeviceInfo *di) { CameraAbilities a; PTPParams *params = &camera->pl->params; gp_camera_get_abilities(camera, &a); /* Panasonic hack */ if ( (di->VendorExtensionID == PTP_VENDOR_MICROSOFT) && (camera->port->type == GP_PORT_USB) && (a.usb_vendor == 0x04da) ) { PTPPropertyValue propval; /* Panasonic changes its device info if the MTP Initiator * is set, and e.g. adds DeleteObject. * (found in Windows USB traces) */ if (!ptp_property_issupported(params, PTP_DPC_MTP_SessionInitiatorInfo)) return GP_OK; propval.str = "Windows/6.2.9200 MTPClassDriver/6.2.9200.16384"; C_PTP (ptp_setdevicepropvalue (params, PTP_DPC_MTP_SessionInitiatorInfo, &propval, PTP_DTC_STR)); C_PTP (ptp_getdeviceinfo (params, di)); return GP_OK; } /* XML style Olympus E series control. internal deviceInfos is encoded in XML. */ if ( di->Manufacturer && !strcmp(di->Manufacturer,"OLYMPUS") && (params->device_flags & DEVICE_FLAG_OLYMPUS_XML_WRAPPED) ) { PTPDeviceInfo ndi, newdi, *outerdi; unsigned int i; C_PTP (ptp_getdeviceinfo (params, ¶ms->outer_deviceinfo)); outerdi = ¶ms->outer_deviceinfo; C_PTP (ptp_olympus_getdeviceinfo (&camera->pl->params, &ndi)); /* Now merge the XML (inner) and outer (PictBridge) Deviceinfo. */ memcpy (&newdi, outerdi, sizeof(PTPDeviceInfo)); /* dup the strings */ if (outerdi->VendorExtensionDesc) C_MEM (newdi.VendorExtensionDesc = strdup (outerdi->VendorExtensionDesc)); if (outerdi->Manufacturer) C_MEM (newdi.Manufacturer = strdup (outerdi->Manufacturer)); if (outerdi->Model) C_MEM (newdi.Model = strdup (outerdi->Model)); if (outerdi->DeviceVersion) C_MEM (newdi.DeviceVersion = strdup (outerdi->DeviceVersion)); if (outerdi->SerialNumber) C_MEM (newdi.SerialNumber = strdup (outerdi->SerialNumber)); /* Dup and merge the lists */ #define DI_MERGE(x) \ C_MEM (newdi.x = malloc(sizeof(outerdi->x[0])*(ndi.x##_len + outerdi->x##_len)));\ for (i = 0; i < outerdi->x##_len ; i++) \ newdi.x[i] = outerdi->x[i]; \ for (i = 0; i < ndi.x##_len ; i++) \ newdi.x[i+outerdi->x##_len] = ndi.x[i]; \ newdi.x##_len = ndi.x##_len + outerdi->x##_len; DI_MERGE(OperationsSupported); DI_MERGE(EventsSupported); DI_MERGE(DevicePropertiesSupported); DI_MERGE(CaptureFormats); DI_MERGE(ImageFormats); /* libgphoto2 specific for usage in config trees */ newdi.VendorExtensionID = PTP_VENDOR_GP_OLYMPUS; GP_LOG_D ("Dumping Olympus Deviceinfo"); print_debug_deviceinfo (params, &newdi); ptp_free_DI (di); memcpy (di, &newdi, sizeof(newdi)); return GP_OK; } /* for USB class matches on unknown cameras that were matches with PTP generic... */ if (!a.usb_vendor && di->Manufacturer) { if (strstr (di->Manufacturer,"Canon")) a.usb_vendor = 0x4a9; if (strstr (di->Manufacturer,"Nikon")) a.usb_vendor = 0x4b0; } /* Switch the PTP vendor, so that the vendor specific sets become available. */ if ( (di->VendorExtensionID == PTP_VENDOR_MICROSOFT) && di->Manufacturer ) { if (strstr (di->Manufacturer,"Canon")) di->VendorExtensionID = PTP_VENDOR_CANON; if (strstr (di->Manufacturer,"Nikon")) di->VendorExtensionID = PTP_VENDOR_NIKON; } /* Newer Canons say that they are MTP devices. Restore Canon vendor extid. */ if ( (di->VendorExtensionID == PTP_VENDOR_MICROSOFT) && (camera->port->type == GP_PORT_USB) && (a.usb_vendor == 0x4a9) ) { /*camera->pl->bugs |= PTP_MTP;*/ di->VendorExtensionID = PTP_VENDOR_CANON; } /* Newer Nikons (D40) say that they are MTP devices. Restore Nikon vendor extid. */ if ( (di->VendorExtensionID == PTP_VENDOR_MICROSOFT) && (camera->port->type == GP_PORT_USB) && (a.usb_vendor == 0x4b0) ) { /*camera->pl->bugs |= PTP_MTP;*/ di->VendorExtensionID = PTP_VENDOR_NIKON; } /* Fuji S5 Pro mostly, make its vendor set available. */ if ( (di->VendorExtensionID == PTP_VENDOR_MICROSOFT) && (camera->port->type == GP_PORT_USB) && (a.usb_vendor == 0x4cb) && strstr(di->VendorExtensionDesc,"fujifilm.co.jp: 1.0;") ) { /*camera->pl->bugs |= PTP_MTP;*/ di->VendorExtensionID = PTP_VENDOR_FUJI; } /* Nikon DSLR hide its newer opcodes behind another vendor specific query, * do that and merge it into the generic PTP deviceinfo. */ if (di->VendorExtensionID == PTP_VENDOR_NIKON) { unsigned int i; unsigned int nikond; /* Nikon V* and J* advertise the new Nikon stuff, but only do the generic * PTP capture. FIXME: could use flags. */ if (params->deviceinfo.Model && ( (params->deviceinfo.Model[0]=='J') || /* J1 - J3 currently */ (params->deviceinfo.Model[0]=='V') || /* V1 - V3 currently */ (params->deviceinfo.Model[0]=='S') /* S1 - S2 currently */ ) ) { if (!NIKON_1(&camera->pl->params)) { GP_LOG_E ("if camera is Nikon 1 series, camera should probably have flag NIKON_1 set. report that to the libgphoto2 project"); camera->pl->params.device_flags |= PTP_NIKON_1; } /* The 1 hides some commands from us ... */ if ( ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_CheckEvent) && !ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_GetVendorPropCodes) ) { C_MEM (di->OperationsSupported = realloc(di->OperationsSupported,sizeof(di->OperationsSupported[0])*(di->OperationsSupported_len + 2))); di->OperationsSupported[di->OperationsSupported_len+0] = PTP_OC_NIKON_GetVendorPropCodes; di->OperationsSupported_len++; /* Nikon J5 does not advertise the PTP_OC_NIKON_InitiateCaptureRecInMedia cmd ... gnh */ /* logic: If we have one 0x920x command, we will probably have 0x9207 too. */ if ( !ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_InitiateCaptureRecInMedia) && ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_StartLiveView) ) { di->OperationsSupported[di->OperationsSupported_len+0] = PTP_OC_NIKON_InitiateCaptureRecInMedia; di->OperationsSupported_len++; } /* probably more */ } } if (params->deviceinfo.Model && !strcmp(params->deviceinfo.Model,"COOLPIX A")) { /* The A also hides some commands from us ... */ if (!ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_GetVendorPropCodes)) { C_MEM (di->OperationsSupported = realloc(di->OperationsSupported,sizeof(di->OperationsSupported[0])*(di->OperationsSupported_len + 1))); di->OperationsSupported[di->OperationsSupported_len+0] = PTP_OC_NIKON_GetVendorPropCodes; /* probably more */ di->OperationsSupported_len += 1; } } if (params->deviceinfo.Model && (sscanf(params->deviceinfo.Model,"D%d", &nikond))) { if ((nikond >= 3000) && (nikond < 3199)) { GP_LOG_D("The D3xxx series hides commands from us ... adding all D3000 ones"); if (!ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_GetVendorPropCodes)) { C_MEM (di->OperationsSupported = realloc(di->OperationsSupported,sizeof(di->OperationsSupported[0])*(di->OperationsSupported_len + 15))); di->OperationsSupported[di->OperationsSupported_len+0] = PTP_OC_NIKON_GetVendorPropCodes; di->OperationsSupported[di->OperationsSupported_len+1] = PTP_OC_NIKON_CheckEvent; di->OperationsSupported[di->OperationsSupported_len+2] = PTP_OC_NIKON_Capture; di->OperationsSupported[di->OperationsSupported_len+3] = PTP_OC_NIKON_AfDrive; di->OperationsSupported[di->OperationsSupported_len+4] = PTP_OC_NIKON_SetControlMode; di->OperationsSupported[di->OperationsSupported_len+5] = PTP_OC_NIKON_DeviceReady; di->OperationsSupported[di->OperationsSupported_len+6] = PTP_OC_NIKON_AfCaptureSDRAM; di->OperationsSupported[di->OperationsSupported_len+7] = PTP_OC_NIKON_DelImageSDRAM; di->OperationsSupported[di->OperationsSupported_len+8] = PTP_OC_NIKON_GetPreviewImg; di->OperationsSupported[di->OperationsSupported_len+9] = PTP_OC_NIKON_StartLiveView; di->OperationsSupported[di->OperationsSupported_len+10] = PTP_OC_NIKON_EndLiveView; di->OperationsSupported[di->OperationsSupported_len+11] = PTP_OC_NIKON_GetLiveViewImg; di->OperationsSupported[di->OperationsSupported_len+12] = PTP_OC_NIKON_MfDrive; di->OperationsSupported[di->OperationsSupported_len+13] = PTP_OC_NIKON_ChangeAfArea; di->OperationsSupported[di->OperationsSupported_len+14] = PTP_OC_NIKON_AfDriveCancel; /* only opcodes up to 9206 ... I think. */ di->OperationsSupported_len += 15; } } if ((nikond >= 3200) && (nikond < 3999)) { GP_LOG_D("The D3xxx series hides commands from us ... adding all D7100 ones"); if (!ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_GetVendorPropCodes)) { C_MEM (di->OperationsSupported = realloc(di->OperationsSupported,sizeof(di->OperationsSupported[0])*(di->OperationsSupported_len + 19))); di->OperationsSupported[di->OperationsSupported_len+0] = PTP_OC_NIKON_GetVendorPropCodes; di->OperationsSupported[di->OperationsSupported_len+1] = PTP_OC_NIKON_CheckEvent; di->OperationsSupported[di->OperationsSupported_len+2] = PTP_OC_NIKON_Capture; di->OperationsSupported[di->OperationsSupported_len+3] = PTP_OC_NIKON_AfDrive; di->OperationsSupported[di->OperationsSupported_len+4] = PTP_OC_NIKON_SetControlMode; di->OperationsSupported[di->OperationsSupported_len+5] = PTP_OC_NIKON_DeviceReady; di->OperationsSupported[di->OperationsSupported_len+6] = PTP_OC_NIKON_AfCaptureSDRAM; di->OperationsSupported[di->OperationsSupported_len+7] = PTP_OC_NIKON_DelImageSDRAM; di->OperationsSupported[di->OperationsSupported_len+8] = PTP_OC_NIKON_GetPreviewImg; di->OperationsSupported[di->OperationsSupported_len+9] = PTP_OC_NIKON_StartLiveView; di->OperationsSupported[di->OperationsSupported_len+10] = PTP_OC_NIKON_EndLiveView; di->OperationsSupported[di->OperationsSupported_len+11] = PTP_OC_NIKON_GetLiveViewImg; di->OperationsSupported[di->OperationsSupported_len+12] = PTP_OC_NIKON_MfDrive; di->OperationsSupported[di->OperationsSupported_len+13] = PTP_OC_NIKON_ChangeAfArea; di->OperationsSupported[di->OperationsSupported_len+14] = PTP_OC_NIKON_InitiateCaptureRecInMedia; di->OperationsSupported[di->OperationsSupported_len+15] = PTP_OC_NIKON_AfDriveCancel; di->OperationsSupported[di->OperationsSupported_len+15] = PTP_OC_NIKON_AfDriveCancel; di->OperationsSupported[di->OperationsSupported_len+16] = PTP_OC_NIKON_StartMovieRecInCard; di->OperationsSupported[di->OperationsSupported_len+17] = PTP_OC_NIKON_EndMovieRec; di->OperationsSupported[di->OperationsSupported_len+18] = PTP_OC_NIKON_TerminateCapture; /* probably more */ di->OperationsSupported_len += 19; } } } if (ptp_operation_issupported(&camera->pl->params, PTP_OC_NIKON_GetVendorPropCodes)) { uint16_t *xprops; unsigned int xsize; if (PTP_RC_OK == LOG_ON_PTP_E (ptp_nikon_get_vendorpropcodes (&camera->pl->params, &xprops, &xsize))) { di->DevicePropertiesSupported = realloc(di->DevicePropertiesSupported,sizeof(di->DevicePropertiesSupported[0])*(di->DevicePropertiesSupported_len + xsize)); if (!di->DevicePropertiesSupported) { free (xprops); C_MEM (di->DevicePropertiesSupported); } for (i=0;iDevicePropertiesSupported[i+di->DevicePropertiesSupported_len] = xprops[i]; di->DevicePropertiesSupported_len += xsize; free (xprops); } } /* For nikon 1 j5, they have blanked this space */ if (camera->pl->params.device_flags & PTP_NIKON_1) { for (i=0;iDevicePropertiesSupported_len;i++) if ((di->DevicePropertiesSupported[i] & 0xf000) == 0xf000) break; /* The J5 so far goes up to 0xf01c */ #define NIKON_1_ADDITIONAL_DEVPROPS 29 if (i==di->DevicePropertiesSupported_len) { di->DevicePropertiesSupported = realloc(di->DevicePropertiesSupported,sizeof(di->DevicePropertiesSupported[0])*(di->DevicePropertiesSupported_len + NIKON_1_ADDITIONAL_DEVPROPS)); if (!di->DevicePropertiesSupported) { C_MEM (di->DevicePropertiesSupported); } for (i=0;iDevicePropertiesSupported[i+di->DevicePropertiesSupported_len] = 0xf000 | i; di->DevicePropertiesSupported_len += NIKON_1_ADDITIONAL_DEVPROPS; } } #if 0 if (!ptp_operation_issupported(&camera->pl->params, 0x9207)) { C_MEM (di->OperationsSupported = realloc(di->OperationsSupported,sizeof(di->OperationsSupported[0])*(di->OperationsSupported_len + 2))); di->OperationsSupported[di->OperationsSupported_len+0] = PTP_OC_NIKON_Capture; di->OperationsSupported[di->OperationsSupported_len+1] = PTP_OC_NIKON_AfCaptureSDRAM; di->OperationsSupported_len+=2; } #endif } /* Mostly for PTP/IP mode */ if (di->VendorExtensionID == PTP_VENDOR_MTP && di->Manufacturer && !strcmp(di->Manufacturer,"Sony Corporation")) { di->VendorExtensionID = PTP_VENDOR_SONY; } /* Sony DSLR also hide its newer opcodes behind another vendor specific query, * do that and merge it into the generic PTP deviceinfo. */ if (di->VendorExtensionID == PTP_VENDOR_SONY) { unsigned int i; if (ptp_operation_issupported(&camera->pl->params, PTP_OC_SONY_GetSDIOGetExtDeviceInfo)) { int opcodes = 0, propcodes = 0, events = 0, j,k,l; uint16_t *xprops; unsigned int xsize; C_PTP (ptp_sony_sdioconnect (&camera->pl->params, 1, 0, 0)); C_PTP (ptp_sony_sdioconnect (&camera->pl->params, 2, 0, 0)); C_PTP (ptp_sony_get_vendorpropcodes (&camera->pl->params, &xprops, &xsize)); for (i=0;iDevicePropertiesSupported = realloc(di->DevicePropertiesSupported,sizeof(di->DevicePropertiesSupported[0])*(di->DevicePropertiesSupported_len + propcodes))); C_MEM (di->OperationsSupported = realloc(di->OperationsSupported, sizeof(di->OperationsSupported[0])*(di->OperationsSupported_len + opcodes))); C_MEM (di->EventsSupported = realloc(di->EventsSupported, sizeof(di->EventsSupported[0])*(di->EventsSupported_len + events))); j = 0; k = 0; l = 0; for (i=0;iOperationsSupported[(k++)+di->OperationsSupported_len] = xprops[i]; break; case 0x4000: di->EventsSupported[(l++)+di->EventsSupported_len] = xprops[i]; break; case 0x5000: di->DevicePropertiesSupported[(j++)+di->DevicePropertiesSupported_len] = xprops[i]; break; default: break; } } di->DevicePropertiesSupported_len += propcodes; di->EventsSupported_len += events; di->OperationsSupported_len += opcodes; free (xprops); C_PTP (ptp_sony_sdioconnect (&camera->pl->params, 3, 0, 0)); } } #if 0 /* Marcus: not regular ptp properties, not queryable via getdevicepropertyvalue */ if (di->VendorExtensionID == PTP_VENDOR_CANON) { if (ptp_operation_issupported(&camera->pl->params, PTP_OC_CANON_EOS_GetDeviceInfoEx)) { PTPCanonEOSDeviceInfo eosdi; int i; C_PTP (ptp_canon_eos_getdeviceinfo (&camera->pl->params, &eosdi)); C_MEM (di->DevicePropertiesSupported = realloc(di->DevicePropertiesSupported,sizeof(di->DevicePropertiesSupported[0])*(di->DevicePropertiesSupported_len + eosdi.DevicePropertiesSupported_len))); for (i=0;iDevicePropertiesSupported[i+di->DevicePropertiesSupported_len] = eosdi.DevicePropertiesSupported[i]; di->DevicePropertiesSupported_len += eosdi.DevicePropertiesSupported_len; } } #endif return GP_OK; } static uint16_t nikon_wait_busy(PTPParams *params, int waitms, int timeout) { uint16_t res; int tries; /* wait either 1 second, or 50 tries */ if (waitms) tries=timeout/waitms; else tries=50; do { res = ptp_nikon_device_ready(params); if (res != PTP_RC_DeviceBusy) return res; if (waitms) usleep(waitms*1000)/*wait a bit*/; } while (tries--); return res; } static struct { const char *model; unsigned short usb_vendor; unsigned short usb_product; unsigned long device_flags; } models[] = { /* * The very first PTP camera (with special firmware only), also * called "PTP Prototype", may report non PTP interface class */ {"Kodak:DC240 (PTP mode)", 0x040a, 0x0121, 0}, /* * Old DC-4800 firmware reported custom interface class, so we have * to detect it by product/vendor IDs */ {"Kodak:DC4800", 0x040a, 0x0160, 0}, /* Below other camers known to be detected by interface class */ {"Kodak:DX3900", 0x040a, 0x0170, 0}, {"Kodak:MC3", 0x040a, 0x0400, 0}, /* reported by Ken Moffat */ {"Kodak:Z7590", 0x040a, 0x0403, 0}, {"Kodak:DX3500", 0x040a, 0x0500, 0}, {"Kodak:DX3600", 0x040a, 0x0510, 0}, {"Kodak:DX3215", 0x040a, 0x0525, 0}, {"Kodak:DX3700", 0x040a, 0x0530, 0}, {"Kodak:CX4230", 0x040a, 0x0535, 0}, {"Kodak:LS420", 0x040a, 0x0540, 0}, {"Kodak:DX4900", 0x040a, 0x0550, 0}, {"Kodak:DX4330", 0x040a, 0x0555, 0}, {"Kodak:CX4200", 0x040a, 0x0560, 0}, {"Kodak:CX4210", 0x040a, 0x0560, 0}, {"Kodak:LS743", 0x040a, 0x0565, 0}, /* both above with different product IDs normal/retail versions of the same model */ {"Kodak:CX4300", 0x040a, 0x0566, 0}, {"Kodak:CX4310", 0x040a, 0x0566, 0}, {"Kodak:LS753", 0x040a, 0x0567, 0}, {"Kodak:LS443", 0x040a, 0x0568, 0}, {"Kodak:LS663", 0x040a, 0x0569, 0}, {"Kodak:DX6340", 0x040a, 0x0570, 0}, {"Kodak:CX6330", 0x040a, 0x0571, 0}, {"Kodak:DX6440", 0x040a, 0x0572, 0}, {"Kodak:CX6230", 0x040a, 0x0573, 0}, {"Kodak:CX6200", 0x040a, 0x0574, 0}, {"Kodak:DX6490", 0x040a, 0x0575, 0}, {"Kodak:DX4530", 0x040a, 0x0576, 0}, {"Kodak:DX7630", 0x040a, 0x0577, 0}, {"Kodak:CX7300", 0x040a, 0x0578, 0}, {"Kodak:CX7310", 0x040a, 0x0578, 0}, {"Kodak:CX7220", 0x040a, 0x0579, 0}, {"Kodak:CX7330", 0x040a, 0x057a, 0}, {"Kodak:CX7430", 0x040a, 0x057b, 0}, {"Kodak:CX7530", 0x040a, 0x057c, 0}, {"Kodak:DX7440", 0x040a, 0x057d, 0}, /* c300 Pau Rodriguez-Estivill */ {"Kodak:C300", 0x040a, 0x057e, 0}, {"Kodak:DX7590", 0x040a, 0x057f, 0}, {"Kodak:Z730", 0x040a, 0x0580, 0}, {"Kodak:CX6445", 0x040a, 0x0584, 0}, /* Francesco Del Prete */ {"Kodak:M893 IS",0x040a, 0x0585, 0}, {"Kodak:CX7525", 0x040a, 0x0586, 0}, /* a sf bugreporter */ {"Kodak:Z700", 0x040a, 0x0587, 0}, /* EasyShare Z740, Benjamin Mesing */ {"Kodak:Z740", 0x040a, 0x0588, 0}, /* EasyShare C360, Guilherme de S. Pastore via Debian */ {"Kodak:C360", 0x040a, 0x0589, 0}, /* Giulio Salani */ {"Kodak:C310", 0x040a, 0x058a, 0}, /* Brandon Sharitt */ {"Kodak:C330", 0x040a, 0x058c, 0}, /* c340 Maurizio Daniele */ {"Kodak:C340", 0x040a, 0x058d, 0}, {"Kodak:V530", 0x040a, 0x058e, 0}, /* v550 Jon Burgess */ {"Kodak:V550", 0x040a, 0x058f, 0}, /* https://sourceforge.net/tracker/?func=detail&atid=358874&aid=1618878&group_id=8874 */ {"Kodak:V570", 0x040a, 0x0591, 0}, {"Kodak:P850", 0x040a, 0x0592, 0}, {"Kodak:P880", 0x040a, 0x0593, 0}, /* Ð˜Ð»ÑŒÑ Ð Ð¾Ð·Ð°Ð½Ð¾Ð²Ñкий */ {"Kodak:Z8612 IS",0x040a, 0x0595, 0}, /* https://launchpad.net/distros/ubuntu/+source/libgphoto2/+bug/67532 */ {"Kodak:C530", 0x040a, 0x059a, 0}, /* Ivan Baldo, http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=387998 */ {"Kodak:CD33", 0x040a, 0x059c, 0}, /* https://sourceforge.net/tracker/?func=detail&atid=208874&aid=1565144&group_id=8874 */ {"Kodak:Z612", 0x040a, 0x059d, 0}, /* David D. Huff Jr. */ {"Kodak:Z650", 0x040a, 0x059e, 0}, /* Sonja Krause-Harder */ {"Kodak:M753", 0x040a, 0x059f, 0}, /* irc reporter */ {"Kodak:V603", 0x040a, 0x05a0, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1547142&group_id=8874&atid=358874 */ {"Kodak:C533", 0x040a, 0x05a2, 0}, /* Marc Santhoff */ {"Kodak:C643", 0x040a, 0x05a7, 0}, /* Eric Kibbee */ {"Kodak:C875", 0x040a, 0x05a9, 0}, /* https://launchpad.net/bugs/64146 */ {"Kodak:C433", 0x040a, 0x05aa, 0}, /* https://launchpad.net/bugs/64146 */ {"Kodak:V705", 0x040a, 0x05ab, 0}, /* https://launchpad.net/bugs/67532 */ {"Kodak:V610", 0x040a, 0x05ac, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1861193&group_id=8874&atid=358874 */ {"Kodak:M883", 0x040a, 0x05ad, 0}, /* from Thomas */ {"Kodak:C743", 0x040a, 0x05ae, 0}, /* via IRC */ {"Kodak:C653", 0x040a, 0x05af, 0}, /* "William L. Thomson Jr." */ {"Kodak:Z710", 0x040a, 0x05b3, 0}, /* Nicolas Brodu */ {"Kodak:Z712 IS",0x040a, 0x05b4, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1904224&group_id=8874&atid=358874 */ {"Kodak:Z812 IS",0x040a, 0x05b5, 0}, /* */ {"Kodak:C613", 0x040a, 0x05b7, 0}, /* msp@debian.org https://bugs.kde.org/show_bug.cgi?id=190795 */ {"Kodak:V803", 0x040a, 0x05b8, 0}, /* via IRC */ {"Kodak:C633", 0x040a, 0x05ba, 0}, /* https://bugs.launchpad.net/bugs/203402 */ {"Kodak:ZD710", 0x040a, 0x05c0, 0}, /* https://bugs.launchpad.net/ubuntu/+source/libgphoto2/+bug/385432 */ {"Kodak:M863", 0x040a, 0x05c1, 0}, /* Peter F Bradshaw */ {"Kodak:C813", 0x040a, 0x05c3, 0}, /* reported by Christian Le Corre */ {"Kodak:C913", 0x040a, 0x05c6, 0}, /* IRC reporter */ {"Kodak:Z950", 0x040a, 0x05cd, 0}, /* reported by Jim Nelson */ {"Kodak:M1063", 0x040a, 0x05ce, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=2889451&group_id=8874&atid=358874 */ {"Kodak:Z915", 0x040a, 0x05cf, 0}, /* l.w.winter@web.de */ {"Kodak:M531", 0x040a, 0x0600, 0}, /* rschweikert@novell.com */ {"Kodak:C183", 0x040a, 0x060b, 0}, /* ra4veiV6@lavabit.com */ {"Kodak:C1530", 0x040a, 0x0617, 0}, /* HP PTP cameras */ #if 0 /* 0x4002 seems to be the mass storage ID, which various forums suggest. -Marcus */ {"HP:PhotoSmart ... ", 0x03f0, 0x4002, 0}, #endif {"HP:PhotoSmart 812 (PTP mode)", 0x03f0, 0x4202, 0}, {"HP:PhotoSmart 850 (PTP mode)", 0x03f0, 0x4302, 0}, /* HP PhotoSmart 935: T. Kaproncai, 25 Jul 2003*/ {"HP:PhotoSmart 935 (PTP mode)", 0x03f0, 0x4402, 0}, /* HP:PhotoSmart 945: T. Jelbert, 2004/03/29 */ {"HP:PhotoSmart 945 (PTP mode)", 0x03f0, 0x4502, 0}, {"HP:PhotoSmart C500 (PTP mode)", 0x03f0, 0x6002, 0}, {"HP:PhotoSmart 318 (PTP mode)", 0x03f0, 0x6302, 0}, {"HP:PhotoSmart 612 (PTP mode)", 0x03f0, 0x6302, 0}, {"HP:PhotoSmart 715 (PTP mode)", 0x03f0, 0x6402, 0}, {"HP:PhotoSmart 120 (PTP mode)", 0x03f0, 0x6502, 0}, {"HP:PhotoSmart 320 (PTP mode)", 0x03f0, 0x6602, 0}, {"HP:PhotoSmart 720 (PTP mode)", 0x03f0, 0x6702, 0}, {"HP:PhotoSmart 620 (PTP mode)", 0x03f0, 0x6802, 0}, {"HP:PhotoSmart 735 (PTP mode)", 0x03f0, 0x6a02, 0}, {"HP:PhotoSmart 707 (PTP mode)", 0x03f0, 0x6b02, 0}, {"HP:PhotoSmart 733 (PTP mode)", 0x03f0, 0x6c02, 0}, {"HP:PhotoSmart 607 (PTP mode)", 0x03f0, 0x6d02, 0}, {"HP:PhotoSmart 507 (PTP mode)", 0x03f0, 0x6e02, 0}, {"HP:PhotoSmart 635 (PTP mode)", 0x03f0, 0x7102, 0}, /* report from Federico Prat Villar */ {"HP:PhotoSmart 43x (PTP mode)", 0x03f0, 0x7202, 0}, {"HP:PhotoSmart M307 (PTP mode)", 0x03f0, 0x7302, 0}, {"HP:PhotoSmart 407 (PTP mode)", 0x03f0, 0x7402, 0}, {"HP:PhotoSmart M22 (PTP mode)", 0x03f0, 0x7502, 0}, {"HP:PhotoSmart 717 (PTP mode)", 0x03f0, 0x7602, 0}, {"HP:PhotoSmart 817 (PTP mode)", 0x03f0, 0x7702, 0}, {"HP:PhotoSmart 417 (PTP mode)", 0x03f0, 0x7802, 0}, {"HP:PhotoSmart 517 (PTP mode)", 0x03f0, 0x7902, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1365941&group_id=8874&atid=108874 */ {"HP:PhotoSmart M415 (PTP mode)", 0x03f0, 0x7a02, 0}, /* irc contact, YGingras */ {"HP:PhotoSmart M23 (PTP mode)", 0x03f0, 0x7b02, 0}, {"HP:PhotoSmart 217 (PTP mode)", 0x03f0, 0x7c02, 0}, /* irc contact */ {"HP:PhotoSmart 317 (PTP mode)", 0x03f0, 0x7d02, 0}, {"HP:PhotoSmart 818 (PTP mode)", 0x03f0, 0x7e02, 0}, /* Robin */ {"HP:PhotoSmart M425 (PTP mode)", 0x03f0, 0x8002, 0}, {"HP:PhotoSmart M525 (PTP mode)", 0x03f0, 0x8102, 0}, {"HP:PhotoSmart M527 (PTP mode)", 0x03f0, 0x8202, 0}, {"HP:PhotoSmart M725 (PTP mode)", 0x03f0, 0x8402, 0}, {"HP:PhotoSmart M727 (PTP mode)", 0x03f0, 0x8502, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1584447&group_id=8874&atid=358874 */ {"HP:PhotoSmart R927 (PTP mode)", 0x03f0, 0x8702, 0}, /* R967 - Far Jump */ {"HP:PhotoSmart R967 (PTP mode)", 0x03f0, 0x8802, 0}, {"HP:PhotoSmart E327 (PTP mode)", 0x03f0, 0x8b02, 0}, /* https://sourceforge.net/tracker/?func=detail&atid=358874&aid=1589879&group_id=8874 */ {"HP:PhotoSmart E427 (PTP mode)", 0x03f0, 0x8c02, 0}, /* Martin Laberge */ {"HP:PhotoSmart M737 (PTP mode)", 0x03f0, 0x9602, 0}, /* https://bugs.launchpad.net/bugs/178916 */ {"HP:PhotoSmart R742 (PTP mode)", 0x03f0, 0x9702, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1814147&group_id=8874&atid=358874 */ {"HP:PhotoSmart M547 (PTP mode)", 0x03f0, 0x9b02, 0}, /* Most Sony PTP cameras use the same product/vendor IDs. */ {"Sony:PTP", 0x054c, 0x004e, 0}, {"Sony:DSC-H1 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-H2 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-H5 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-N2 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P5 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P10 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-F707V (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-F717 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-F828 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P30 (PTP mode)", 0x054c, 0x004e, 0}, /* P32 reported on May 1st by Justin Alexander */ {"Sony:DSC-P31 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P32 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P41 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P43 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P50 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P51 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P52 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P71 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P72 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P73 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P92 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P93 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P100 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P120 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-P200 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-R1 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-S40 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-S60 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-S75 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-S85 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-T1 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-T3 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-T10 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-U20 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-V1 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-W1 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-W12 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-W35 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-W55 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:MVC-CD300 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:MVC-CD500 (PTP mode)", 0x054c, 0x004e, 0}, {"Sony:DSC-U10 (PTP mode)", 0x054c, 0x004e, 0}, /* "Riccardo (C10uD)" */ {"Sony:DSC-S730 (PTP mode)", 0x054c, 0x0296, 0}, {"Sony:DSC-S780 (PTP mode)", 0x054c, 0x0296, 0}, /* Fernando Santoro */ {"Sony:DSC-A100 (PTP mode)", 0x054c, 0x02c0, 0}, /* Sam Tseng */ {"Sony:DSC-A900 (PTP mode)", 0x054c, 0x02e7, PTP_CAP}, /* new id?! Reported by Ruediger Oertel. */ {"Sony:DSC-W200 (PTP mode)", 0x054c, 0x02f8, 0}, /* Martin Vala */ {"Sony:SLT-A350 (PTP mode)", 0x054c, 0x0321, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1946931&group_id=8874&atid=308874 */ {"Sony:DSC-W130 (PTP mode)", 0x054c, 0x0343, 0}, /* https://sourceforge.net/p/gphoto/support-requests/115/ */ {"Sony:DSC-HX5V (PTP mode)", 0x054c, 0x0491, 0}, /* tux droid */ {"Sony:SLT-A55 (PTP mode)", 0x054c, 0x04a3, 0}, /* http://sourceforge.net/tracker/?func=detail&atid=358874&aid=3515558&group_id=8874 */ {"Sony:SLT-A35 (PTP mode)", 0x054c, 0x04a7, 0}, /* t.ludewig@gmail.com */ {"Sony:DSC-RX100 (PTP mode)", 0x054c, 0x052a, 0}, /* Stuart Nettleton */ {"Sony:DSC-RX1 (PTP mode)", 0x054c, 0x052b, 0}, /* Maptz */ {"Sony:DSC-W510 (PTP mode)", 0x054c, 0x053c, 0}, /* Rudi */ {"Sony:DSC-HX100V (PTP mode)",0x054c, 0x0543, 0}, /* t.ludewig@gmail.com */ {"Sony:SLT-A65V (PTP mode)", 0x054c, 0x0574, 0}, /* Irina Iakovleva */ {"Sony:SLT-A77V (PTP mode)", 0x054c, 0x0577, 0}, /* https://sourceforge.net/p/libmtp/bugs/1459/ */ {"Sony:HDR-PJ260VE (PTP mode)",0x054c, 0x0603, 0}, /* t.ludewig@gmail.com */ {"Sony:DSC-HX200V (PTP mode)",0x054c, 0x061f, 0}, /* https://sourceforge.net/p/gphoto/feature-requests/424/ */ {"Sony:SLT-A57", 0x054c, 0x0669, 0}, /* Mike Breeuwer */ {"Sony:SLT-A99v", 0x054c, 0x0675, 0}, /* Ramon Carlos Garcia Bruna */ {"Sony:NEX-6", 0x054c, 0x0678, 0}, /* t.ludewig@gmail.com */ {"Sony:DSC-HX300 (PTP mode)", 0x054c, 0x06ee, 0}, /* t.ludewig@gmail.com */ {"Sony:NEX-3N (PTP mode)", 0x054c, 0x072f, 0}, /* Thorsten Ludewig */ {"Sony:SLT-A58", 0x054c, 0x0736, 0}, /* Marcus Meissner */ {"Sony:SLT-A58 (Control)", 0x054c, 0x0737, PTP_CAP}, /* Thorsten Ludewig */ {"Sony:DSC-RX100M2", 0x054c, 0x074b, 0}, /* Thorsten Ludewig */ {"Sony:Alpha-A3000", 0x054c, 0x074e, 0}, /* https://sourceforge.net/p/gphoto/support-requests/127/ */ {"Sony:Alpha-A5000 (Control)",0x054c, 0x07c6, PTP_CAP}, /* https://sourceforge.net/p/libmtp/bugs/1310/ */ {"Sony:DSC-HX60V (MTP)", 0x054c, 0x08ad, 0}, /* Sascha Peilicke at SUSE */ {"Sony:Alpha-A6000 (MTP)", 0x054c, 0x08b7, 0}, /* https://sourceforge.net/p/gphoto/feature-requests/456/ */ {"Sony:Alpha-A7S (MTP)", 0x054c, 0x08e2, 0}, /* Markus Oertel */ {"Sony:Alpha-A5100 (MTP)", 0x054c, 0x08e7, 0}, /* https://sourceforge.net/p/gphoto/feature-requests/442/ */ {"Sony:Alpha-A7r (Control)", 0x054c, 0x094d, PTP_CAP}, {"Sony:Alpha-A6000 (Control)",0x054c, 0x094e, PTP_CAP}, /* Nick Clarke */ {"Sony:Alpha-A77 M2 (Control)",0x054c, 0x0953, PTP_CAP}, /* Markus Oertel */ {"Sony:Alpha-A5100 (Control)",0x054c, 0x0957, PTP_CAP}, /* http://sourceforge.net/p/gphoto/feature-requests/456/ */ {"Sony:Alpha-A7S (Control)", 0x054c, 0x0954, PTP_CAP}, /* Andre Crone, andre@elysia.nl */ {"Sony:Alpha-A7r II (Control)", 0x054c, 0x0a6b, PTP_CAP}, /* Nikon Coolpix 2500: M. Meissner, 05 Oct 2003 */ {"Nikon:Coolpix 2500 (PTP mode)", 0x04b0, 0x0109, 0}, /* Nikon Coolpix 5700: A. Tanenbaum, 29 Oct 2002 */ /* no capture complete: https://sourceforge.net/tracker/index.php?func=detail&aid=3018517&group_id=8874&atid=108874 */ {"Nikon:Coolpix 5700 (PTP mode)", 0x04b0, 0x010d, PTP_CAP|PTP_NO_CAPTURE_COMPLETE}, /* Nikon Coolpix 4500: T. Kaproncai, 22 Aug 2003 */ {"Nikon:Coolpix 4500 (PTP mode)", 0x04b0, 0x010b, 0}, /* Nikon Coolpix 4300: Marco Rodriguez, 10 dic 2002 */ {"Nikon:Coolpix 4300 (PTP mode)", 0x04b0, 0x010f, 0}, /* Nikon Coolpix 3500: M. Meissner, 07 May 2003 */ {"Nikon:Coolpix 3500 (PTP mode)", 0x04b0, 0x0111, 0}, /* Nikon Coolpix 885: S. Anderson, 19 nov 2002 */ {"Nikon:Coolpix 885 (PTP mode)", 0x04b0, 0x0112, 0}, /* Nikon Coolpix 5000, Firmware v1.7 or later */ {"Nikon:Coolpix 5000 (PTP mode)", 0x04b0, 0x0113, PTP_CAP|PTP_NO_CAPTURE_COMPLETE}, /* Nikon Coolpix 3100 */ {"Nikon:Coolpix 3100 (PTP mode)", 0x04b0, 0x0115, 0}, /* Nikon Coolpix 2100 */ {"Nikon:Coolpix 2100 (PTP mode)", 0x04b0, 0x0117, 0}, /* Nikon Coolpix 5400: T. Kaproncai, 25 Jul 2003 */ {"Nikon:Coolpix 5400 (PTP mode)", 0x04b0, 0x0119, PTP_CAP|PTP_NO_CAPTURE_COMPLETE}, /* Nikon Coolpix 3700: T. Ehlers, 18 Jan 2004 */ {"Nikon:Coolpix 3700 (PTP mode)", 0x04b0, 0x011d, PTP_CAP|PTP_NO_CAPTURE_COMPLETE}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2110825&group_id=8874&atid=108874 */ {"Nikon:Coolpix 8700 (PTP mode)", 0x04b0, 0x011f, 0}, /* Nikon Coolpix 3200 */ {"Nikon:Coolpix 3200 (PTP mode)", 0x04b0, 0x0121, 0}, /* Nikon Coolpix 2200 */ {"Nikon:Coolpix 2200 (PTP mode)", 0x04b0, 0x0122, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* Jonathan Marten * https://sourceforge.net/p/gphoto/bugs/968/ */ {"Nikon:Coolpix 2200v1.1 (PTP mode)", 0x04b0, 0x0123, PTP_CAP|PTP_NO_CAPTURE_COMPLETE}, /* Harry Reisenleiter */ {"Nikon:Coolpix 8800 (PTP mode)", 0x04b0, 0x0127, PTP_CAP}, /* Nikon Coolpix 4800 */ {"Nikon:Coolpix 4800 (PTP mode)", 0x04b0, 0x0129, 0}, /* Nikon Coolpix SQ: M. Holzbauer, 07 Jul 2003 */ {"Nikon:Coolpix 4100 (PTP mode)", 0x04b0, 0x012d, 0}, /* Nikon Coolpix 5600: Andy Shevchenko, 11 Aug 2005 */ {"Nikon:Coolpix 5600 (PTP mode)", 0x04b0, 0x012e, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* 4600: Martin Klaffenboeck */ {"Nikon:Coolpix 4600 (PTP mode)", 0x04b0, 0x0130, 0}, /* 4600: Roberto Costa , 22 Oct 2006 */ {"Nikon:Coolpix 4600a (PTP mode)", 0x04b0, 0x0131,PTP_CAP|PTP_NO_CAPTURE_COMPLETE}, {"Nikon:Coolpix 5900 (PTP mode)", 0x04b0, 0x0135, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1846012&group_id=8874&atid=358874 */ {"Nikon:Coolpix 7900 (PTP mode)", 0x04b0, 0x0137, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* Egil Kvaleberg: USB says "NIKON DSC E7600-PTP" */ {"Nikon:Coolpix 7600 (PTP mode)", 0x04b0, 0x0139, PTP_CAP}, {"Nikon:Coolpix P1 (PTP mode)", 0x04b0, 0x0140, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* Marcus Meissner */ {"Nikon:Coolpix P2 (PTP mode)", 0x04b0, 0x0142, PTP_CAP|PTP_NO_CAPTURE_COMPLETE}, /* Richard SCHNEIDER */ {"Nikon:Coolpix S4 (PTP mode)", 0x04b0, 0x0144, 0}, /* Lowe, John Michael */ {"Nikon:Coolpix S2 (PTP mode)", 0x04b0, 0x014e, 0}, {"Nikon:Coolpix S6 (PTP mode)", 0x04b0, 0x014e, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=3114250&group_id=8874&atid=358874 */ {"Nikon:Coolpix S7c (PTP mode)", 0x04b0, 0x0157, 0}, /* Ole Aamot */ {"Nikon:Coolpix P5000 (PTP mode)",0x04b0, 0x015b, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* Peter Pregler */ {"Nikon:Coolpix S500 (PTP mode)", 0x04b0, 0x015d, 0}, {"Nikon:Coolpix L12 (PTP mode)", 0x04b0, 0x015f, PTP_CAP}, /* Marius Groeger */ {"Nikon:Coolpix S200 (PTP mode)", 0x04b0, 0x0161, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* Submitted on IRC by kallepersson */ {"Nikon:Coolpix P5100 (PTP mode)", 0x04b0, 0x0163, 0}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2589245&group_id=8874&atid=108874 */ {"Nikon:Coolpix P50 (PTP mode)", 0x04b0, 0x0169, 0}, /* Clodoaldo via * https://bugs.kde.org/show_bug.cgi?id=315268 */ {"Nikon:Coolpix P80 (PTP mode)", 0x04b0, 0x016b, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* TJ */ {"Nikon:Coolpix P80 v1.1 (PTP mode)", 0x04b0, 0x016c, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=2951663&group_id=8874&atid=358874 */ {"Nikon:Coolpix P6000 (PTP mode)",0x04b0, 0x016f, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* http://bugs.debian.org/520752 */ {"Nikon:Coolpix S60 (PTP mode)", 0x04b0, 0x0171, 0}, /* Mike Strickland */ {"Nikon:Coolpix P90 (PTP mode)", 0x04b0, 0x0173, 0}, /* Christoph Muehlmann */ {"Nikon:Coolpix S220 (PTP mode)", 0x04b0, 0x0177, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* */ {"Nikon:Coolpix S225 (PTP mode)", 0x04b0, 0x0178, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* Ryan Nestor */ {"Nikon:Coolpix P100 (PTP mode)", 0x04b0, 0x017d, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* Å tÄ›pán NÄ›mec */ {"Nikon:Coolpix P7000 (PTP mode)",0x04b0, 0x017f, PTP_CAP|PTP_NO_CAPTURE_COMPLETE}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=3019787&group_id=8874&atid=358874 */ /* probably no need for nikon_broken_Cap as it worked without this flag for the user */ {"Nikon:Coolpix L110 (PTP mode)", 0x04b0, 0x017e, PTP_CAP}, /* miguel@rozsas.eng.br */ {"Nikon:Coolpix P500 (PTP mode)", 0x04b0, 0x0184, PTP_CAP}, /* Graeme Wyatt */ {"Nikon:Coolpix L120 (PTP mode)", 0x04b0, 0x0185, PTP_CAP}, /* Kévin Ottens */ {"Nikon:Coolpix S9100 (PTP mode)",0x04b0, 0x0186, PTP_CAP}, /* johnnolan@comcast.net */ {"Nikon:Coolpix AW100 (PTP mode)",0x04b0, 0x0188, PTP_CAP}, /* Dale Pontius */ {"Nikon:Coolpix P7100 (PTP mode)",0x04b0, 0x018b, PTP_CAP}, /* "Dr. Ing. Dieter Jurzitza" */ {"Nikon:Coolpix 9400 (PTP mode)",0x04b0, 0x0191, PTP_CAP}, /* t.ludewig@gmail.com */ {"Nikon:Coolpix L820 (PTP mode)",0x04b0, 0x0192, PTP_CAP}, /* https://sourceforge.net/p/gphoto/feature-requests/429/ */ {"Nikon:Coolpix S9500 (PTP mode)",0x04b0, 0x0193, PTP_CAP}, /* LeChuck */ {"Nikon:Coolpix AW110 (PTP mode)",0x04b0, 0x0194, PTP_CAP|PTP_NIKON_BROKEN_CAP}, {"Nikon:Coolpix SQ (PTP mode)", 0x04b0, 0x0202, 0}, /* lars marowski bree, 16.8.2004 */ {"Nikon:Coolpix 4200 (PTP mode)", 0x04b0, 0x0204, 0}, /* Nikon Coolpix 5200: Andy Shevchenko, 18 Jul 2005 */ {"Nikon:Coolpix 5200 (PTP mode)", 0x04b0, 0x0206, 0}, /* https://launchpad.net/bugs/63473 */ {"Nikon:Coolpix L1 (PTP mode)", 0x04b0, 0x0208, 0}, {"Nikon:Coolpix P4 (PTP mode)", 0x04b0, 0x020c, PTP_CAP}, /* Bo Masser */ {"Nikon:Coolpix S620 (PTP mode)", 0x04b0, 0x021c, 0}, {"Nikon:Coolpix S6000 (PTP mode)",0x04b0, 0x021e, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=3135935&group_id=8874&atid=358874 */ {"Nikon:Coolpix S8000 (PTP mode)",0x04b0, 0x021f, 0}, /* Aleksej Serdjukov */ {"Nikon:Coolpix S5100 (PTP mode)",0x04b0, 0x0220, 0}, /* wlady.cs@gmail.com */ {"Nikon:Coolpix P300 (PTP mode)", 0x04b0, 0x0221, 0}, /* t.ludewig@gmail.com */ {"Nikon:Coolpix S8200", 0x04b0, 0x0222, 0}, {"Nikon:Coolpix P510 (PTP mode)", 0x04b0, 0x0223, 0}, /* Bernhard Schiffner */ {"Nikon:Coolpix P7700 (PTP mode)",0x04b0, 0x0225, 0}, /* t.ludewig@gmail.com */ /* N CP A seems capture capable, but does not list vendor commands */ /* Reports 0x400d aka CaptureComplete event ... but has no * vendor commands? yeah right ... */ /* It might be similar to the 1? lets try ... Marcus 20140706 */ {"Nikon:Coolpix A (PTP mode)", 0x04b0, 0x0226, PTP_CAP|PTP_NIKON_1}, /* PTP_CAP */ /* Jonas Stein */ {"Nikon:Coolpix P330 (PTP mode)", 0x04b0, 0x0227, PTP_CAP}, /* Malcolm Lee */ {"Nikon:Coolpix P7800 (PTP mode)", 0x04b0, 0x0229, 0}, /* t.ludewig@gmail.com */ /* Also reports 0x400d aka CaptureComplete event ... but has no * vendor commands? yeah right... */ {"Nikon:Coolpix P520 (PTP mode)", 0x04b0, 0x0228, 0}, /* PTP_CAP */ /* Nikon Coolpix 2000 */ {"Nikon:Coolpix 2000 (PTP mode)", 0x04b0, 0x0302, 0}, /* From IRC reporter. */ {"Nikon:Coolpix L4 (PTP mode)", 0x04b0, 0x0305, 0}, /* from Magnus Larsson */ {"Nikon:Coolpix L11 (PTP mode)", 0x04b0, 0x0309, 0}, /* From IRC reporter. */ {"Nikon:Coolpix L10 (PTP mode)", 0x04b0, 0x030b, 0}, /* Philippe ENTZMANN */ {"Nikon:Coolpix P60 (PTP mode)", 0x04b0, 0x0311, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* Stas Timokhin */ {"Nikon:Coolpix L16 (PTP mode)", 0x04b0, 0x0315, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2977303&group_id=8874&atid=358874 */ {"Nikon:Coolpix L20 (PTP mode)", 0x04b0, 0x0317, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2947644&group_id=8874&atid=108874 */ {"Nikon:Coolpix L19 (PTP mode)", 0x04b0, 0x0318, PTP_CAP|PTP_NIKON_BROKEN_CAP}, /* IRC reporter */ {"Nikon:Coolpix S3000 (PTP mode)",0x04b0, 0x031b, PTP_CAP}, /* christian.moll@tudor.lu */ {"Nikon:Coolpix S3100 (PTP mode)",0x04b0, 0x0320, PTP_CAP}, /* Teemu rytilahti of KDE */ {"Nikon:Coolpix S2500 (PTP mode)",0x04b0, 0x0321, PTP_CAP}, /* Fabio */ {"Nikon:Coolpix L23 (PTP mode)", 0x04b0, 0x0324, PTP_CAP}, /* Novell bugzilla 852551 */ {"Nikon:Coolpix S4300 (PTP mode)",0x04b0, 0x0329, PTP_CAP/*?*/}, /* "M.-A. DARCHE" . gets capturecomplete events nicely */ {"Nikon:Coolpix S3300 (PTP mode)",0x04b0, 0x032a, PTP_CAP}, /* Mdasoh Kyaeppd at IRC */ {"Nikon:Coolpix S6300 (PTP mode)",0x04b0, 0x032c, PTP_CAP}, /* sakax */ {"Nikon:Coolpix S2600 (PTP mode)",0x04b0, 0x032d, PTP_CAP}, /* Borja Latorre */ {"Nikon:Coolpix S3200", 0x04b0, 0x0334, PTP_CAP}, /* t.ludewig@gmail.com */ {"Nikon:Coolpix S01", 0x04b0, 0x0337, PTP_CAP}, /* https://sourceforge.net/p/gphoto/bugs/971/ */ {"Nikon:Coolpix S2700", 0x04b0, 0x033f, PTP_CAP}, /* Jeremy Harkcom */ {"Nikon:Coolpix L27", 0x04b0, 0x0343, PTP_CAP}, /* t.ludewig@gmail.com */ {"Nikon:Coolpix S02", 0x04b0, 0x0346, PTP_CAP}, /* t.ludewig@gmail.com */ /* seems not to report events? but has full liveview caps_ */ {"Nikon:Coolpix S9700", 0x04b0, 0x034b, PTP_CAP|PTP_CAP_PREVIEW|PTP_NIKON_BROKEN_CAP}, /* David Shawcross */ {"Nikon:Coolpix S6800", 0x04b0, 0x0350, PTP_CAP}, /* David Shawcross */ {"Nikon:Coolpix S3700", 0x04b0, 0x035c, PTP_CAP}, /* David Shawcross */ {"Nikon:Coolpix S2900", 0x04b0, 0x035e, PTP_CAP}, /* Nikon D100 has a PTP mode: westin 2002.10.16 */ {"Nikon:DSC D100 (PTP mode)", 0x04b0, 0x0402, 0}, /* D2H SLR in PTP mode from Steve Drew */ {"Nikon:D2H SLR (PTP mode)", 0x04b0, 0x0404, 0}, {"Nikon:DSC D70 (PTP mode)", 0x04b0, 0x0406, PTP_CAP}, /* Justin Case */ {"Nikon:D2X SLR (PTP mode)", 0x04b0, 0x0408, PTP_CAP}, /* Niclas Gustafsson (nulleman @ sf) */ {"Nikon:D50 (PTP mode)", 0x04b0, 0x040a, PTP_CAP}, /* no hidden props */ /* Didier Gasser-Morlay */ {"Nikon:D2Hs (PTP mode)", 0x04b0, 0x040c, PTP_CAP}, {"Nikon:DSC D70s (PTP mode)", 0x04b0, 0x040e, PTP_CAP}, /* Jana Jaeger */ {"Nikon:DSC D200 (PTP mode)", 0x04b0, 0x0410, PTP_CAP}, /* Christian Deckelmann @ SUSE */ {"Nikon:DSC D80 (PTP mode)", 0x04b0, 0x0412, PTP_CAP}, /* Huy Hoang */ {"Nikon:DSC D40 (PTP mode)", 0x04b0, 0x0414, PTP_CAP}, /* Mark de Ruijter */ {"Nikon:DSC D2Xs (PTP mode)", 0x04b0, 0x0416, PTP_CAP}, /* Luca Gervasi */ {"Nikon:DSC D40x (PTP mode)", 0x04b0, 0x0418, PTP_CAP}, /* Andreas Jaeger . * Marcus: MTP Proplist does not return objectsizes ... useless. */ {"Nikon:DSC D300 (PTP mode)", 0x04b0, 0x041a, PTP_CAP}, /* Pat Shanahan, http://sourceforge.net/tracker/index.php?func=detail&aid=1924511&group_id=8874&atid=358874 */ {"Nikon:D3 (PTP mode)", 0x04b0, 0x041c, PTP_CAP}, /* irc reporter Benjamin Schindler */ {"Nikon:DSC D60 (PTP mode)", 0x04b0, 0x041e, PTP_CAP}, /* pbj304 pbj@ecs.soton.ac.uk */ {"Nikon:DSC D3x (PTP mode)", 0x04b0, 0x0420, PTP_CAP|PTP_CAP_PREVIEW}, /* Will Stephenson at SUSE and wstephenson@flickr */ {"Nikon:DSC D90 (PTP mode)", 0x04b0, 0x0421, PTP_CAP|PTP_CAP_PREVIEW}, /* Borrowed D700 by deckel / marcus at SUSE */ {"Nikon:DSC D700 (PTP mode)", 0x04b0, 0x0422, PTP_CAP|PTP_CAP_PREVIEW}, /* Stephan Barth at SUSE */ {"Nikon:DSC D5000 (PTP mode)", 0x04b0, 0x0423, PTP_CAP|PTP_CAP_PREVIEW}, /* IRC reporter */ {"Nikon:DSC D3000 (PTP mode)", 0x04b0, 0x0424, PTP_CAP|PTP_CAP_PREVIEW}, /* Andreas Dielacher */ {"Nikon:DSC D300s (PTP mode)", 0x04b0, 0x0425, PTP_CAP|PTP_CAP_PREVIEW}, /* Matthias Blaicher */ {"Nikon:DSC D3s (PTP mode)", 0x04b0, 0x0426, PTP_CAP|PTP_CAP_PREVIEW}, /* SWPLinux IRC reporter... does not have liveview -lowend model. */ {"Nikon:DSC D3100 (PTP mode)", 0x04b0, 0x0427, PTP_CAP|PTP_CAP_PREVIEW}, /* http://sourceforge.net/tracker/?func=detail&atid=358874&aid=3140014&group_id=8874 */ {"Nikon:DSC D7000 (PTP mode)", 0x04b0, 0x0428, PTP_CAP|PTP_CAP_PREVIEW}, /* IRC Reporter popolon */ {"Nikon:DSC D5100 (PTP mode)", 0x04b0, 0x0429, PTP_CAP|PTP_CAP_PREVIEW}, /* "François G." */ {"Nikon:DSC D800", 0x04b0, 0x042a, PTP_CAP|PTP_CAP_PREVIEW}, /* Christian Deckelmann of Xerox */ {"Nikon:DSC D4", 0x04b0, 0x042b, PTP_CAP|PTP_CAP_PREVIEW}, /* Lihuijun */ {"Nikon:DSC D3200", 0x04b0, 0x042c, PTP_CAP|PTP_CAP_PREVIEW}, /* t.ludewig@gmail.com */ {"Nikon:DSC D600", 0x04b0, 0x042d, PTP_CAP|PTP_CAP_PREVIEW}, /* Roderick Stewart */ {"Nikon:DSC D800E", 0x04b0, 0x042e, PTP_CAP|PTP_CAP_PREVIEW}, /* Simeon Pilgrim */ {"Nikon:DSC D5200", 0x04b0, 0x042f, PTP_CAP|PTP_CAP_PREVIEW}, /* t.ludewig@gmail.com */ {"Nikon:DSC D7100", 0x04b0, 0x0430, PTP_CAP|PTP_CAP_PREVIEW}, /* Kirill Bogdanenk via kde bug 336523 */ {"Nikon:DSC D5300", 0x04b0, 0x0431, PTP_CAP|PTP_CAP_PREVIEW}, /* https://sourceforge.net/p/gphoto/feature-requests/449/ */ {"Nikon:DSC D3300", 0x04b0, 0x0433, PTP_CAP|PTP_CAP_PREVIEW}, /* Andre Crone */ {"Nikon:DSC D610", 0x04b0, 0x0434, PTP_CAP|PTP_CAP_PREVIEW}, /* Andre Crone */ {"Nikon:DSC D4s", 0x04b0, 0x0435, PTP_CAP|PTP_CAP_PREVIEW}, /* Jeremie FROLI */ {"Nikon:DSC D810", 0x04b0, 0x0436, PTP_CAP|PTP_CAP_PREVIEW}, /*Jürgen Blumenschein */ {"Nikon:DSC D750", 0x04b0, 0x0437, PTP_CAP|PTP_CAP_PREVIEW}, /* Jeffrey Wilson */ {"Nikon:DSC D5500", 0x04b0, 0x0438, PTP_CAP|PTP_CAP_PREVIEW}, /* http://sourceforge.net/tracker/?func=detail&aid=3536904&group_id=8874&atid=108874 */ {"Nikon:V1", 0x04b0, 0x0601, PTP_CAP|PTP_NIKON_1}, /* https://sourceforge.net/tracker/?func=detail&atid=358874&aid=3556403&group_id=8874 */ {"Nikon:J1", 0x04b0, 0x0602, PTP_CAP|PTP_NIKON_1}, /* https://bugzilla.novell.com/show_bug.cgi?id=814622 Martin Caj at SUSE */ {"Nikon:J2", 0x04b0, 0x0603, PTP_CAP|PTP_NIKON_1}, /* https://sourceforge.net/p/gphoto/feature-requests/432/ */ {"Nikon:V2", 0x04b0, 0x0604, PTP_CAP|PTP_NIKON_1}, /* Ralph Schindler */ {"Nikon:J3", 0x04b0, 0x0605, PTP_CAP|PTP_NIKON_1}, /* Markus Karlhuber */ {"Nikon:S1", 0x04b0, 0x0606, PTP_CAP|PTP_NIKON_1}, /* Tarjei Husøy */ {"Nikon:S2", 0x04b0, 0x0608, PTP_CAP|PTP_NIKON_1}, /* Raj Kumar */ {"Nikon:J4", 0x04b0, 0x0609, PTP_CAP|PTP_NIKON_1}, /* Wolfgang Goetz */ {"Nikon:J5", 0x04b0, 0x060b, PTP_CAP|PTP_NIKON_1}, #if 0 /* Thomas Luzat */ /* this was reported as not working, mass storage only: * http://sourceforge.net/tracker/index.php?func=detail&aid=1847471&group_id=8874&atid=108874 {"Panasonic:DMC-FZ20 (alternate id)", 0x04da, 0x2372, 0}, */ /* http://sourceforge.net/tracker/index.php?func=detail&aid=1350226&group_id=8874&atid=208874 */ {"Panasonic:DMC-LZ2", 0x04da, 0x2372, 0}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=1405541&group_id=8874&atid=358874 */ {"Panasonic:DMC-LC1", 0x04da, 0x2372, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1275100&group_id=8874&atid=358874 */ {"Panasonic:Lumix FZ5", 0x04da, 0x2372, 0}, #endif {"Panasonic:DMC-FZ20", 0x04da, 0x2374, 0}, {"Panasonic:DMC-FZ45", 0x04da, 0x2374, 0}, {"Panasonic:DMC-FZ38", 0x04da, 0x2374, 0}, {"Panasonic:DMC-FZ50", 0x04da, 0x2374, 0}, {"Panasonic:DMC-LS2", 0x04da, 0x2374, 0}, /* from Tomas Herrdin */ {"Panasonic:DMC-LS3", 0x04da, 0x2374, 0}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2070864&group_id=8874&atid=358874 */ {"Panasonic:DMC-TZ15", 0x04da, 0x2374, 0}, /* https://sourceforge.net/tracker/?func=detail&atid=358874&aid=2950529&group_id=8874 */ {"Panasonic:DMC-FS62", 0x04da, 0x2374, 0}, {"Panasonic:DMC-TZ18", 0x04da, 0x2374, 0}, /* Jean Ribière */ {"Panasonic:DMC-TZ8", 0x04da, 0x2374, 0}, {"Panasonic:DMC-LX7", 0x04da, 0x2374, 0}, /* Constantin B */ {"Panasonic:DMC-GF1", 0x04da, 0x2374, 0}, /* Søren Krarup Olesen */ {"Leica:D-LUX 2", 0x04da, 0x2375, 0}, /* http://callendor.zongo.be/wiki/OlympusMju500 */ {"Olympus:mju 500", 0x07b4, 0x0113, 0}, /* Olympus wrap test code */ {"Olympus:E series (Control)", 0x07b4, 0x0110, PTP_OLYMPUS_XML}, #if 0 /* talks PTP via SCSI vendor command backchannel, like above. */ {"Olympus:E-410 (UMS 2 mode)", 0x07b4, 0x0118, 0}, /* not XML wrapped */ #endif /* From VICTOR */ {"Olympus:C-350Z", 0x07b4, 0x0114, 0}, {"Olympus:D-560Z", 0x07b4, 0x0114, 0}, {"Olympus:X-250", 0x07b4, 0x0114, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1349900&group_id=8874&atid=108874 */ {"Olympus:C-310Z", 0x07b4, 0x0114, 0}, {"Olympus:D-540Z", 0x07b4, 0x0114, 0}, {"Olympus:X-100", 0x07b4, 0x0114, 0}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=1442115&group_id=8874&atid=358874 */ {"Olympus:C-55Z", 0x07b4, 0x0114, 0}, {"Olympus:C-5500Z", 0x07b4, 0x0114, 0}, /* https://sourceforge.net/tracker/?func=detail&atid=358874&aid=1272944&group_id=8874 */ {"Olympus:IR-300", 0x07b4, 0x0114, 0}, /* Marcus */ {"Olympus:FE4000", 0x07b4, 0x0116, 0}, {"Olympus:X920", 0x07b4, 0x0116, 0}, {"Olympus:X925", 0x07b4, 0x0116, 0}, /* t.ludewig@gmail.com */ {"Olympus:SP-720UZ", 0x07b4, 0x012f, 0}, {"Olympus:E-PL5", 0x07b4, 0x012f, 0}, /* RafaÅ‚ Bryndza */ {"Olympus:E-M5", 0x07b4, 0x012f, 0}, /* IRC report */ {"Casio:EX-Z120", 0x07cf, 0x1042, 0}, /* Andrej Semen (at suse) */ {"Casio:EX-S770", 0x07cf, 0x1049, 0}, /* https://launchpad.net/bugs/64146 */ {"Casio:EX-Z700", 0x07cf, 0x104c, 0}, /* IRC Reporter */ {"Casio:EX-Z65", 0x07cf, 0x104d, 0}, /* Juan Carlos Bretal Fernandez */ {"Casio:EX-ZR700", 0x07cf, 0x117a, 0}, /* (at least some) newer Canon cameras can be switched between * PTP and "normal" (i.e. Canon) mode * Canon PS G3: A. Marinichev, 20 nov 2002 */ {"Canon:PowerShot S45 (PTP mode)", 0x04a9, 0x306d, PTPBUG_DELETE_SENDS_EVENT}, /* 0x306c is S45 in normal (canon) mode */ {"Canon:PowerShot G3 (PTP mode)", 0x04a9, 0x306f, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* 0x306e is G3 in normal (canon) mode */ {"Canon:PowerShot S230 (PTP mode)", 0x04a9, 0x3071, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* 0x3070 is S230 in normal (canon) mode */ {"Canon:Digital IXUS v3 (PTP mode)", 0x04a9, 0x3071, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* it's the same as S230 */ {"Canon:Digital IXUS II (PTP mode)", 0x04a9, 0x3072, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot SD100 (PTP mode)", 0x04a9, 0x3072, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot A70 (PTP)", 0x04a9, 0x3073, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot A60 (PTP)", 0x04a9, 0x3074, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* IXUS 400 has the same PID in both modes, Till Kamppeter */ {"Canon:Digital IXUS 400 (PTP mode)", 0x04a9, 0x3075, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot S400 (PTP mode)", 0x04a9, 0x3075, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot A300 (PTP mode)", 0x04a9, 0x3076, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot S50 (PTP mode)", 0x04a9, 0x3077, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot G5 (PTP mode)", 0x04a9, 0x3085, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:Elura 50 (PTP mode)", 0x04a9, 0x3087, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:MVX3i (PTP mode)", 0x04a9, 0x308d, PTPBUG_DELETE_SENDS_EVENT}, /* 0x3084 is the EOS 300D/Digital Rebel in normal (canon) mode */ {"Canon:EOS 300D (PTP mode)", 0x04a9, 0x3099, 0}, {"Canon:EOS Digital Rebel (PTP mode)", 0x04a9, 0x3099, 0}, {"Canon:EOS Kiss Digital (PTP mode)", 0x04a9, 0x3099, 0}, {"Canon:PowerShot A80 (PTP)", 0x04a9, 0x309a, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:Digital IXUS i (PTP mode)", 0x04a9, 0x309b, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot S1 IS (PTP mode)", 0x04a9, 0x309c, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:MV750i (PTP mode)", 0x04a9, 0x30a0, PTPBUG_DELETE_SENDS_EVENT}, /* Canon Elura 65, provolone on #gphoto on 2006-12-17 */ {"Canon:Elura 65 (PTP mode)", 0x04a9, 0x30a5, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:Powershot S70 (PTP mode)", 0x04a9, 0x30b1, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:Powershot S60 (PTP mode)", 0x04a9, 0x30b2, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:Powershot G6 (PTP mode)", 0x04a9, 0x30b3, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:Digital IXUS 500 (PTP mode)", 0x04a9, 0x30b4, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot S500 (PTP mode)", 0x04a9, 0x30b4, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot A75 (PTP mode)", 0x04a9, 0x30b5, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot SD110 (PTP mode)", 0x04a9, 0x30b6, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:Digital IXUS IIs (PTP mode)", 0x04a9, 0x30b6, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot A400 (PTP mode)", 0x04a9, 0x30b7, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot A310 (PTP mode)", 0x04a9, 0x30b8, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot A85 (PTP mode)", 0x04a9, 0x30b9, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:Digital IXUS 430 (PTP mode)", 0x04a9, 0x30ba, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot S410 (PTP mode)", 0x04a9, 0x30ba, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot A95 (PTP mode)", 0x04a9, 0x30bb, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:EOS 10D (PTP mode)", 0x04a9, 0x30bc, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:Digital IXUS 40 (PTP mode)", 0x04a9, 0x30bf, PTPBUG_DELETE_SENDS_EVENT}, #if 0 /* the 30c0 id cannot remote capture, use normal mode. */ {"Canon:PowerShot SD200 (PTP mode)", 0x04a9, 0x30c0, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:Digital IXUS 30 (PTP mode)", 0x04a9, 0x30c0, PTPBUG_DELETE_SENDS_EVENT}, #endif {"Canon:PowerShot A520 (PTP mode)", 0x04a9, 0x30c1, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot A510 (PTP mode)", 0x04a9, 0x30c2, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:EOS 1D Mark II (PTP mode)", 0x04a9, 0x30ea, 0}, {"Canon:EOS 20D (PTP mode)", 0x04a9, 0x30ec, 0}, /* 30ef is the ID in explicit PTP mode. * 30ee is the ID with the camera in Canon mode, but the camera reacts to * PTP commands according to: * https://sourceforge.net/tracker/?func=detail&atid=108874&aid=1394326&group_id=8874 * They need to have different names. */ {"Canon:EOS 350D (PTP mode)", 0x04a9, 0x30ee, 0}, {"Canon:EOS 350D", 0x04a9, 0x30ef, 0}, {"Canon:PowerShot S2 IS (PTP mode)", 0x04a9, 0x30f0, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot SD430 (PTP mode)", 0x04a9, 0x30f1, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:Digital IXUS Wireless (PTP mode)",0x04a9, 0x30f1, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:Digital IXUS 700 (PTP mode)", 0x04a9, 0x30f2, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot SD500 (PTP mode)", 0x04a9, 0x30f2, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* reported by Gilles Dartiguelongue */ {"Canon:Digital IXUS iZ (PTP mode)", 0x04a9, 0x30f4, PTPBUG_DELETE_SENDS_EVENT}, /* A340, Andreas Stempfhuber */ {"Canon:PowerShot A430 (PTP mode)", 0x04a9, 0x30f8, PTPBUG_DELETE_SENDS_EVENT}, /* Conan Colx, A410, gphoto-Feature Requests-1342538 */ {"Canon:PowerShot A410 (PTP mode)", 0x04a9, 0x30f9, PTPBUG_DELETE_SENDS_EVENT}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1411976&group_id=8874&atid=358874 */ {"Canon:PowerShot S80 (PTP mode)", 0x04a9, 0x30fa, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* A620, Tom Roelz */ {"Canon:PowerShot A620 (PTP mode)", 0x04a9, 0x30fc, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* A610, Andriy Kulchytskyy */ {"Canon:PowerShot A610 (PTP mode)", 0x04a9, 0x30fd, PTPBUG_DELETE_SENDS_EVENT}, /* Irc Reporter */ {"Canon:PowerShot SD630 (PTP mode)", 0x04a9, 0x30fe, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:Digital IXUS 65 (PTP mode)", 0x04a9, 0x30fe, PTPBUG_DELETE_SENDS_EVENT}, /* Rob Lensen */ {"Canon:Digital IXUS 55 (PTP mode)", 0x04a9, 0x30ff, 0}, {"Canon:PowerShot SD450 (PTP mode)", 0x04a9, 0x30ff, 0}, {"Canon:Optura 600 (PTP mode)", 0x04a9, 0x3105, 0}, /* Jeff Mock */ {"Canon:EOS 5D (PTP mode)", 0x04a9, 0x3102, 0}, /* Nick Richards */ {"Canon:Digital IXUS 50 (PTP mode)", 0x04a9, 0x310e, PTPBUG_DELETE_SENDS_EVENT}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1640547&group_id=8874&atid=358874 */ {"Canon:PowerShot A420 (PTP mode)", 0x04a9, 0x310f, PTPBUG_DELETE_SENDS_EVENT}, /* Some Canon 400D do not have the infamous PTP bug, but some do. * see http://bugs.kde.org/show_bug.cgi?id=141577 -Marcus */ {"Canon:EOS 400D (PTP mode)", 0x04a9, 0x3110, PTP_CAP}, {"Canon:EOS Digital Rebel XTi (PTP mode)", 0x04a9, 0x3110, PTP_CAP}, {"Canon:EOS Kiss Digital X (PTP mode)", 0x04a9, 0x3110, PTP_CAP}, /* https://sourceforge.net/tracker/?func=detail&atid=358874&aid=1456391&group_id=8874 */ {"Canon:EOS 30D (PTP mode)", 0x04a9, 0x3113, PTP_CAP}, {"Canon:Digital IXUS 900Ti (PTP mode)", 0x04a9, 0x3115, 0}, {"Canon:PowerShot SD900 (PTP mode)", 0x04a9, 0x3115, 0}, {"Canon:Digital IXUS 750 (PTP mode)", 0x04a9, 0x3116, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot A700 (PTP mode)", 0x04a9, 0x3117, PTPBUG_DELETE_SENDS_EVENT}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1498577&group_id=8874&atid=358874 */ {"Canon:PowerShot SD700 (PTP mode)", 0x04a9, 0x3119, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:Digital IXUS 800 (PTP mode)", 0x04a9, 0x3119, PTPBUG_DELETE_SENDS_EVENT}, /* Gert Vervoort */ {"Canon:PowerShot S3 IS (PTP mode)", 0x04a9, 0x311a, PTP_CAP|PTP_CAP_PREVIEW}, /* David Goodenough */ {"Canon:PowerShot A540 (PTP mode)", 0x04a9, 0x311b, PTPBUG_DELETE_SENDS_EVENT}, /* Irc reporter */ {"Canon:Digital IXUS 60 (PTP mode)", 0x04a9, 0x311c, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot SD600 (PTP mode)", 0x04a9, 0x311c, PTPBUG_DELETE_SENDS_EVENT}, /* Harald Dunkel */ {"Canon:PowerShot G7 (PTP mode)", 0x04a9, 0x3125, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* Ales Kozumplik */ {"Canon:PowerShot A530 (PTP mode)", 0x04a9, 0x3126, PTPBUG_DELETE_SENDS_EVENT}, /* Jerome Vizcaino */ {"Canon:Digital IXUS 850 IS (PTP mode)",0x04a9, 0x3136, PTPBUG_DELETE_SENDS_EVENT}, /* https://launchpad.net/bugs/64146 */ {"Canon:PowerShot SD40 (PTP mode)", 0x04a9, 0x3137, PTPBUG_DELETE_SENDS_EVENT}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1565043&group_id=8874&atid=358874 */ {"Canon:PowerShot A710 IS (PTP mode)", 0x04a9, 0x3138, PTPBUG_DELETE_SENDS_EVENT}, /* Thomas Roelz at SUSE, MTP proplist does not work (hangs) */ {"Canon:PowerShot A640 (PTP mode)", 0x04a9, 0x3139, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:PowerShot A630 (PTP mode)", 0x04a9, 0x313a, PTPBUG_DELETE_SENDS_EVENT}, /* Deti Fliegl. * Marcus: supports MTP proplists, but these are 2 times slower than regular * data retrieval. */ {"Canon:EOS 450D (PTP mode)", 0x04a9, 0x3145, PTP_CAP|PTP_CAP_PREVIEW|PTPBUG_DELETE_SENDS_EVENT}, {"Canon:EOS Rebel XSi (PTP mode)", 0x04a9, 0x3145, PTP_CAP|PTP_CAP_PREVIEW|PTPBUG_DELETE_SENDS_EVENT}, {"Canon:EOS Kiss X2 (PTP mode)", 0x04a9, 0x3145, PTP_CAP|PTP_CAP_PREVIEW|PTPBUG_DELETE_SENDS_EVENT}, /* reported by Ferry Huberts */ {"Canon:EOS 40D (PTP mode)", 0x04a9, 0x3146, PTP_CAP|PTP_CAP_PREVIEW|PTPBUG_DELETE_SENDS_EVENT}, /* reported by: gphoto@lunkwill.org */ {"Canon:EOS 1D Mark III (PTP mode)", 0x04a9, 0x3147, PTP_CAP}, {"Canon:PowerShot S5 IS (PTP mode)", 0x04a9, 0x3148, PTP_CAP|PTP_CAP_PREVIEW}, /* AlannY */ {"Canon:PowerShot A460 (PTP mode)", 0x04a9, 0x3149, PTP_CAP|PTP_CAP_PREVIEW}, /* Tobias Blaser */ {"Canon:Digital IXUS 950 IS (PTP mode)",0x04a9, 0x314b, PTPBUG_DELETE_SENDS_EVENT}, /* https://bugs.launchpad.net/bugs/206627 */ {"Canon:PowerShot SD850 (PTP mode)", 0x04a9, 0x314b, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot A570 IS (PTP mode)", 0x04a9, 0x314c, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot A560 (PTP mode)", 0x04a9, 0x314d, PTPBUG_DELETE_SENDS_EVENT}, /* mailreport from sec@dschroeder.info */ {"Canon:Digital IXUS 75 (PTP mode)", 0x04a9, 0x314e, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot SD750 (PTP mode)", 0x04a9, 0x314e, PTPBUG_DELETE_SENDS_EVENT}, /* Marcus: MTP Proplist does not work at all here, it just hangs */ {"Canon:Digital IXUS 70 (PTP mode)", 0x04a9, 0x314f, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot SD1000 (PTP mode)", 0x04a9, 0x314f, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot A550 (PTP mode)", 0x04a9, 0x3150, PTPBUG_DELETE_SENDS_EVENT}, /* https://launchpad.net/bugs/64146 */ {"Canon:PowerShot A450 (PTP mode)", 0x04a9, 0x3155, PTPBUG_DELETE_SENDS_EVENT}, /* Harald Dunkel */ {"Canon:PowerShot G9 (PTP mode)", 0x04a9, 0x315a, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* Barrie Stott */ {"Canon:PowerShot A650IS (PTP mode)", 0x04a9, 0x315b, PTP_CAP|PTP_CAP_PREVIEW}, /* Roger Lynn */ {"Canon:PowerShot A720 IS (PTP mode)", 0x04a9, 0x315d, PTPBUG_DELETE_SENDS_EVENT}, /* Mats Petersson */ {"Canon:Powershot SX100 IS (PTP mode)", 0x04a9, 0x315e, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* "[AvataR]" */ {"Canon:Digital IXUS 960 IS (PTP mode)",0x04a9, 0x315f, PTPBUG_DELETE_SENDS_EVENT}, /* Ruben Vandamme */ {"Canon:Digital IXUS 860 IS", 0x04a9, 0x3160, PTPBUG_DELETE_SENDS_EVENT}, /* Christian P. Schmidt" */ {"Canon:Digital IXUS 970 IS", 0x04a9, 0x3173, PTPBUG_DELETE_SENDS_EVENT}, /* Martin Lasarsch at SUSE. MTP_PROPLIST returns just 0 entries */ {"Canon:Digital IXUS 90 IS", 0x04a9, 0x3174, PTPBUG_DELETE_SENDS_EVENT}, /* Daniel Moyne */ {"Canon:Powershot SD790 IS", 0x04a9, 0x3174, PTPBUG_DELETE_SENDS_EVENT}, /* https://sourceforge.net/tracker/?func=detail&aid=2722422&group_id=8874&atid=358874 */ {"Canon:Digital IXUS 85 IS", 0x04a9, 0x3174, PTPBUG_DELETE_SENDS_EVENT}, /* Theodore Kilgore */ {"Canon:PowerShot SD770 IS", 0x04a9, 0x3175, PTPBUG_DELETE_SENDS_EVENT}, /* Olaf Hering at SUSE */ {"Canon:PowerShot A590 IS", 0x04a9, 0x3176, PTPBUG_DELETE_SENDS_EVENT}, /* Dmitriy Khanzhin */ {"Canon:PowerShot A580", 0x04a9, 0x3177, PTPBUG_DELETE_SENDS_EVENT}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2602638&group_id=8874&atid=108874 */ {"Canon:PowerShot A470", 0x04a9, 0x317a, PTPBUG_DELETE_SENDS_EVENT}, /* Michael Plucik */ {"Canon:EOS 1000D", 0x04a9, 0x317b, PTP_CAP|PTP_CAP_PREVIEW|PTPBUG_DELETE_SENDS_EVENT}, /* https://sourceforge.net/tracker/?func=detail&atid=358874&aid=1910010&group_id=8874 */ {"Canon:Digital IXUS 80 IS", 0x04a9, 0x3184, PTPBUG_DELETE_SENDS_EVENT}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2391422&group_id=8874&atid=358874 */ {"Canon:Powershot SD1100 IS", 0x04a9, 0x3184, PTPBUG_DELETE_SENDS_EVENT}, /* Hubert Mercier */ {"Canon:PowerShot SX10 IS", 0x04a9, 0x318d, PTPBUG_DELETE_SENDS_EVENT}, /* Novell Bugzilla 852551, Dean Martin */ {"Canon:PowerShot A1000 IS", 0x04a9, 0x318e, PTPBUG_DELETE_SENDS_EVENT}, /* Paul Tinsley */ {"Canon:PowerShot G10", 0x04a9, 0x318f, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* Nikolay Rysev */ {"Canon:PowerShot A2000 IS", 0x04a9, 0x3191, PTPBUG_DELETE_SENDS_EVENT}, /* Chris Rodley */ {"Canon:PowerShot SX110 IS", 0x04a9, 0x3192, PTPBUG_DELETE_SENDS_EVENT|PTP_CAP|PTP_CAP_PREVIEW}, /* Kurt Garloff at SUSE */ {"Canon:Digital IXUS 980 IS", 0x04a9, 0x3193, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot SD990", 0x04a9, 0x3193, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:IXY 3000 IS", 0x04a9, 0x3193, PTPBUG_DELETE_SENDS_EVENT}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2750875&group_id=8874&atid=358874 */ {"Canon:PowerShot SD880 IS", 0x04a9, 0x3196, PTPBUG_DELETE_SENDS_EVENT}, /* IRC Reporter */ {"Canon:EOS 5D Mark II", 0x04a9, 0x3199, PTP_CAP|PTP_CAP_PREVIEW|PTPBUG_DELETE_SENDS_EVENT}, /* Thomas Tanner */ {"Canon:EOS 7D", 0x04a9, 0x319a, PTP_CAP|PTP_CAP_PREVIEW|PTPBUG_DELETE_SENDS_EVENT}, /* mitch */ {"Canon:EOS 50D", 0x04a9, 0x319b, PTP_CAP|PTP_CAP_PREVIEW|PTPBUG_DELETE_SENDS_EVENT}, /* https://bugs.launchpad.net/ubuntu/+source/libgphoto2/+bug/569419 */ /* "T. Ludewig" */ {"Canon:PowerShot D10", 0x04a9, 0x31bc, PTPBUG_DELETE_SENDS_EVENT}, /* Carsten Grohmann */ {"Canon:Digital IXUS 110 IS", 0x04a9, 0x31bd, PTPBUG_DELETE_SENDS_EVENT}, /* Willy Tarreau */ {"Canon:PowerShot A2100 IS", 0x04a9, 0x31be, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot A480", 0x04a9, 0x31bf, PTPBUG_DELETE_SENDS_EVENT}, /* IRC Reporter */ {"Canon:PowerShot SX200 IS", 0x04a9, 0x31c0, 0}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2789326&group_id=8874&atid=358874 */ {"Canon:Digital IXUS 990 IS", 0x04a9, 0x31c1, PTPBUG_DELETE_SENDS_EVENT}, /* Michael Ole Olsen */ {"Canon:PowerShot SD970 IS", 0x04a9, 0x31c1, PTPBUG_DELETE_SENDS_EVENT}, /* https://sourceforge.net/tracker/?func=detail&aid=2769511&group_id=8874&atid=208874 */ /* Do not confuse with PowerShot SX100IS */ {"Canon:Digital IXUS 100 IS", 0x04a9, 0x31c2, PTPBUG_DELETE_SENDS_EVENT}, /* https://sourceforge.net/tracker/?func=detail&aid=2769511&group_id=8874&atid=208874 */ {"Canon:PowerShot SD780 IS", 0x04a9, 0x31c2, PTPBUG_DELETE_SENDS_EVENT}, /* Matthew Vernon */ {"Canon:PowerShot A1100 IS", 0x04a9, 0x31c3, PTPBUG_DELETE_SENDS_EVENT}, /* Joshua Hoke */ {"Canon:Powershot SD1200 IS", 0x04a9, 0x31c4, PTPBUG_DELETE_SENDS_EVENT}, /* RalfGesellensetter */ {"Canon:Digital IXUS 95 IS", 0x04a9, 0x31c4, PTPBUG_DELETE_SENDS_EVENT}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2796275&group_id=8874&atid=358874 */ {"Canon:EOS 500D", 0x04a9, 0x31cf, PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:EOS Rebel T1i", 0x04a9, 0x31cf, PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:EOS Kiss X3", 0x04a9, 0x31cf, PTP_CAP|PTP_CAP_PREVIEW}, /* Peter Lawrence */ {"Canon:EOS 1D Mark IV", 0x04a9, 0x31d0, PTP_CAP|PTP_CAP_PREVIEW}, /* From: Franck GIRARDIN - OPTOCONCEPT */ {"Canon:PowerShot G11", 0x04a9, 0x31df, 0}, /* The Wanderer */ {"Canon:PowerShot SX120 IS", 0x04a9, 0x31e0, PTPBUG_DELETE_SENDS_EVENT}, /* via libmtp */ {"Canon:PowerShot SX20 IS", 0x04a9, 0x31e4, PTPBUG_DELETE_SENDS_EVENT}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=2918540&group_id=8874&atid=358874 */ {"Canon:IXY 220 IS", 0x04a9, 0x31e6, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:Digital IXUS 120 IS", 0x04a9, 0x31e6, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot SD940 IS", 0x04a9, 0x31e6, PTPBUG_DELETE_SENDS_EVENT}, /* IRC reporter */ {"Canon:EOS 550D", 0x04a9, 0x31ea, PTP_CAP|PTP_CAP_PREVIEW}, /* Mauricio Pasquier Juan */ {"Canon:Rebel T2i", 0x04a9, 0x31ea, PTP_CAP|PTP_CAP_PREVIEW}, /* Andrés Farfán */ {"Canon:Powershot A495", 0x04a9, 0x31ef, PTPBUG_DELETE_SENDS_EVENT}, /* ErVito on IRC */ {"Canon:PowerShot A3100 IS", 0x04a9, 0x31f1, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:PowerShot A3000 IS", 0x04a9, 0x31f2, PTPBUG_DELETE_SENDS_EVENT}, {"Canon:Digital IXUS 130", 0x04a9, 0x31f3, PTPBUG_DELETE_SENDS_EVENT}, /* Mark Voorhies */ {"Canon:PowerShot SD1300 IS", 0x04a9, 0x31f4, PTPBUG_DELETE_SENDS_EVENT}, /* Juergen Weigert */ {"Canon:PowerShot SX210 IS", 0x04a9, 0x31f6, PTPBUG_DELETE_SENDS_EVENT}, /* name correct? https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1296275?comments=all */ {"Canon:Digital IXUS 300 HS", 0x04a9, 0x31f7, PTPBUG_DELETE_SENDS_EVENT}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=3153412&group_id=8874&atid=358874 */ {"Canon:PowerShot SX130 IS", 0x04a9, 0x3211, PTPBUG_DELETE_SENDS_EVENT}, /* novell bugzilla 871944 */ {"Canon:PowerShot S95", 0x04a9, 0x3212, PTPBUG_DELETE_SENDS_EVENT}, /* IRC Reporter */ {"Canon:EOS 60D", 0x04a9, 0x3215, PTP_CAP|PTP_CAP_PREVIEW}, /* https://sourceforge.net/tracker/?func=detail&atid=358874&aid=3312353&group_id=8874 */ {"Canon:EOS 1100D", 0x04a9, 0x3217, PTP_CAP|PTP_CAP_PREVIEW}, {"Canon:Rebel T3", 0x04a9, 0x3217, PTP_CAP|PTP_CAP_PREVIEW}, /* https://sourceforge.net/tracker/?func=detail&atid=358874&aid=3310995&group_id=8874 */ {"Canon:EOS 600D", 0x04a9, 0x3218, PTP_CAP|PTP_CAP_PREVIEW}, /* us alias from Andre Crone */ {"Canon:Rebel T3i", 0x04a9, 0x3218, PTP_CAP|PTP_CAP_PREVIEW}, /* Brian L Murphy */ {"Canon:EOS 1D X", 0x04a9, 0x3219, PTP_CAP|PTP_CAP_PREVIEW}, /* "T. Ludewig" */ {"Canon:IXUS 310IS", 0x04a9, 0x3225, PTPBUG_DELETE_SENDS_EVENT}, /* analemma88@gmail.com */ {"Canon:PowerShot A800", 0x04a9, 0x3226, PTPBUG_DELETE_SENDS_EVENT}, /* Juha Pesonen */ {"Canon:PowerShot SX230HS", 0x04a9, 0x3228, PTPBUG_DELETE_SENDS_EVENT}, /* Andrés Farfán */ {"Canon:PowerShot A2200", 0x04a9, 0x322a, PTPBUG_DELETE_SENDS_EVENT}, /* http://sourceforge.net/tracker/?func=detail&atid=358874&aid=3572477&group_id=8874 */ {"Canon:PowerShot SX220HS", 0x04a9, 0x322c, PTPBUG_DELETE_SENDS_EVENT}, /* "T. Ludewig" */ {"Canon:PowerShot G1 X", 0x04a9, 0x3233, PTPBUG_DELETE_SENDS_EVENT}, /* Dean Martin , Novell Bugzilla 852551 */ {"Canon:PowerShot SX150 IS", 0x04a9, 0x3234, PTPBUG_DELETE_SENDS_EVENT}, /* IRC reporter */ {"Canon:PowerShot S100", 0x04a9, 0x3236, PTPBUG_DELETE_SENDS_EVENT}, /* "T. Ludewig" */ {"Canon:PowerShot SX40HS", 0x04a9, 0x3238, PTPBUG_DELETE_SENDS_EVENT}, /* Axel Waggershauser */ {"Canon:EOS 5D Mark III", 0x04a9, 0x323a, PTP_CAP|PTP_CAP_PREVIEW|PTPBUG_DELETE_SENDS_EVENT}, /* "T. Ludewig" */ {"Canon:EOS 650D", 0x04a9, 0x323b, PTP_CAP|PTP_CAP_PREVIEW}, /* "T. Ludewig" */ {"Canon:Rebel T4i", 0x04a9, 0x323b, PTP_CAP|PTP_CAP_PREVIEW}, /* "T. Ludewig" */ {"Canon:EOS M", 0x04a9, 0x323d, 0/*PTP_CAP|PTP_CAP_PREVIEW ... might be unknown opcodes -Marcus */}, /* via https://bugs.kde.org/show_bug.cgi?id=311393 */ {"Canon:PowerShot A1300IS", 0x04a9, 0x323e, PTPBUG_DELETE_SENDS_EVENT}, /* https://forums.opensuse.org/showthread.php/493692-canon-usb-camera-a810-not-detected */ {"Canon:PowerShot A810", 0x04a9, 0x323f, PTPBUG_DELETE_SENDS_EVENT}, /* Giulio Fidente */ {"Canon:IXUS 125HS", 0x04a9, 0x3241, PTPBUG_DELETE_SENDS_EVENT}, /* "T. Ludewig" */ {"Canon:PowerShot A4000IS", 0x04a9, 0x3243, PTPBUG_DELETE_SENDS_EVENT}, /* Peter Ivanyi */ {"Canon:PowerShot SX260HS", 0x04a9, 0x3244, PTPBUG_DELETE_SENDS_EVENT}, /* "T. Ludewig" */ {"Canon:PowerShot SX240HS", 0x04a9, 0x3245, PTPBUG_DELETE_SENDS_EVENT}, /* "T. Ludewig" */ {"Canon:PowerShot A2400IS", 0x04a9, 0x3249, PTPBUG_DELETE_SENDS_EVENT}, /* Coro Fe */ {"Canon:PowerShot A2300IS", 0x04a9, 0x324a, PTPBUG_DELETE_SENDS_EVENT}, /* "François G." */ {"Canon:EOS 6D", 0x04a9, 0x3250, PTP_CAP|PTP_CAP_PREVIEW}, /* Thorsten Ludewig */ {"Canon:EOS 70D", 0x04a9, 0x3253, PTP_CAP|PTP_CAP_PREVIEW}, /* Thorsten Ludewig */ {"Canon:PowerShot G15", 0x04a9, 0x3258, PTPBUG_DELETE_SENDS_EVENT}, /* Andrés Farfán */ {"Canon:PowerShot SX160IS", 0x04a9, 0x325a, PTPBUG_DELETE_SENDS_EVENT}, /* "T. Ludewig" */ {"Canon:PowerShot S110 (PTP Mode)", 0x04a9, 0x325b, PTPBUG_DELETE_SENDS_EVENT}, /* "T. Ludewig" */ {"Canon:PowerShot SX500IS", 0x04a9, 0x325c, PTPBUG_DELETE_SENDS_EVENT}, /* Andrés Farfán */ {"Canon:PowerShot SX280HS", 0x04a9, 0x325f, PTPBUG_DELETE_SENDS_EVENT}, /* Marcus Meissner */ {"Canon:PowerShot A3500IS", 0x04a9, 0x3261, PTPBUG_DELETE_SENDS_EVENT}, /* Canon Powershot A2600 */ {"Canon:PowerShot A2600", 0x04a9, 0x3262, PTPBUG_DELETE_SENDS_EVENT}, /* Andrés Farfán */ {"Canon:PowerShot A1400", 0x04a9, 0x3264, PTPBUG_DELETE_SENDS_EVENT}, /* https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1296275?comments=all */ {"Canon:Digital IXUS 255HS", 0x04a9, 0x3268, PTPBUG_DELETE_SENDS_EVENT}, /* t.ludewig@gmail.com */ {"Canon:EOS 7D MarkII", 0x04a9, 0x326f, PTP_CAP|PTP_CAP_PREVIEW}, /* "T. Ludewig" */ {"Canon:EOS 100D", 0x04a9, 0x3270, PTP_CAP|PTP_CAP_PREVIEW}, /* Ronny Kalusniok */ {"Canon:PowerShot A2500", 0x04a9, 0x3271, PTPBUG_DELETE_SENDS_EVENT}, /* "T. Ludewig" */ {"Canon:EOS 700D", 0x04a9, 0x3272, PTP_CAP|PTP_CAP_PREVIEW}, /* From: Gerwin Voorsluijs */ {"Canon:PowerShot S120", 0x04a9, 0x3275, PTPBUG_DELETE_SENDS_EVENT}, /* Andrés Farfán */ {"Canon:PowerShot SX170 IS", 0x04a9, 0x3276, PTPBUG_DELETE_SENDS_EVENT}, /* Andrés Farfán */ {"Canon:PowerShot SX510 HS", 0x04a9, 0x3277, PTPBUG_DELETE_SENDS_EVENT}, /* thinkgareth */ {"Canon:EOS 1200D", 0x04a9, 0x327f, PTP_CAP|PTP_CAP_PREVIEW}, /* Iain Paton */ {"Canon:EOS 760D", 0x04a9, 0x3280, PTP_CAP|PTP_CAP_PREVIEW}, /* https://sourceforge.net/p/gphoto/feature-requests/445/ */ {"Canon:PowerShot Elph135", 0x04a9, 0x3288, PTPBUG_DELETE_SENDS_EVENT}, /* Reed Johnson */ {"Canon:PowerShot Elph340HS", 0x04a9, 0x3289, PTPBUG_DELETE_SENDS_EVENT}, /* Andre Crone */ {"Canon:EOS M3", 0x04a9, 0x3299, PTPBUG_DELETE_SENDS_EVENT}, /* Shaul Badusa */ {"Canon:PowerShot SX60HS", 0x04a9, 0x329a, PTPBUG_DELETE_SENDS_EVENT}, /* pravsripad@gmail.com */ {"Canon:PowerShot SX520 HS", 0x04a9, 0x329b, PTPBUG_DELETE_SENDS_EVENT}, /* Kiss Tamas */ {"Canon:IXUS 165", 0x04a9, 0x32a9, PTPBUG_DELETE_SENDS_EVENT}, /* Andre Crone */ {"Fuji:FinePix S9500", 0x04cb, 0x018f, 0}, {"Fuji:FinePix E900", 0x04cb, 0x0193, 0}, {"Fuji:FinePix F30", 0x04cb, 0x019b, 0}, /* https://sourceforge.net/tracker/?func=detail&atid=358874&aid=1620750&group_id=8874 */ {"Fuji:FinePix S6500fd", 0x04cb, 0x01bf, 0}, /* https://launchpad.net/bugs/89743 */ {"Fuji:FinePix F20", 0x04cb, 0x01c0, 0}, /* launchpad 67532 */ {"Fuji:FinePix F31fd", 0x04cb, 0x01c1, 0}, /* http://sourceforge.net/tracker/?func=detail&atid=358874&aid=2881948&group_id=8874 */ {"Fuji:S5 Pro", 0x04cb, 0x01c3, PTP_CAP}, {"Fuji:FinePix S5700", 0x04cb, 0x01c4, 0}, {"Fuji:FinePix F40fd", 0x04cb, 0x01c5, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1800289&group_id=8874&atid=358874 */ {"Fuji:FinePix A820", 0x04cb, 0x01c6, 0}, /* g4@catking.net */ {"Fuji:FinePix A800", 0x04cb, 0x01d2, 0}, /* Gerhard Schmidt */ {"Fuji:FinePix A920", 0x04cb, 0x01d3, 0}, /* Teppo Jalava */ {"Fuji:FinePix F50fd", 0x04cb, 0x01d4, 0}, /* IRC reporter */ {"Fuji:FinePix S5800", 0x04cb, 0x01d7, 0}, /* https://sourceforge.net/tracker/?func=detail&atid=108874&aid=1945259&group_id=8874 */ {"Fuji:FinePix Z100fd", 0x04cb, 0x01d8, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=2017171&group_id=8874&atid=358874 */ {"Fuji:FinePix S100fs", 0x04cb, 0x01db, 0}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2772199&group_id=8874&atid=358874 */ {"Fuji:FinePix S1000fd", 0x04cb, 0x01dd, 0}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2203316&group_id=8874&atid=358874 */ {"Fuji:FinePix F100fd", 0x04cb, 0x01e0, 0}, /*https://sourceforge.net/tracker/index.php?func=detail&aid=2820380&group_id=8874&atid=358874 */ {"Fuji:FinePix F200 EXR", 0x04cb, 0x01e4, 0}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=2993118&group_id=8874&atid=358874 */ {"Fuji:FinePix F60fd", 0x04cb, 0x01e6, 0}, /* Gerhard Schmidt */ {"Fuji:FinePix S2000HD", 0x04cb, 0x01e8, 0}, {"Fuji:FinePix S1500", 0x04cb, 0x01ef, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=3018889&group_id=8874&atid=358874 */ {"Fuji:FinePix F70 EXR", 0x04cb, 0x01fa, 0}, /* http://sourceforge.net/tracker/index.php?func=detail&aid=3111790&group_id=8874&atid=358874 */ {"Fuji:Fujifilm A220", 0x04cb, 0x01fe, 0}, /* NoOp */ {"Fuji:FinePix S1800", 0x04cb, 0x0200, 0}, /* Luke Symes */ {"Fuji:FinePix Z35", 0x04cb, 0x0201, 0}, /* "Steven A. McIntosh" */ {"Fuji:FinePix S2500HD", 0x04cb, 0x0209, 0}, /* Erik Hahn */ {"Fuji:FinePix F80EXR", 0x04cb, 0x020e, 0}, /* salsaman */ {"Fuji:FinePix Z700EXR", 0x04cb, 0x020d, 0}, /* https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1311953 */ {"Fuji:FinePix AV-150", 0x04cb, 0x021b, 0}, /* Gregor Voss */ {"Fuji:FinePix H20EXR", 0x04cb, 0x022d, 0}, /* https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/1296275?comments=all */ {"Fuji:FinePix T200", 0x04cb, 0x0233, 0}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=3556692&group_id=8874&atid=108874 */ {"Fuji:FinePix S2950", 0x04cb, 0x0240, 0}, /* https://sourceforge.net/p/gphoto/bugs/974/ */ {"Fuji:FinePix JX370", 0x04cb, 0x0250, 0}, /* Luis Arias */ {"Fuji:FinePix X10", 0x04cb, 0x0263, 0}, /* t.ludewig@gmail.com */ {"Fuji:FinePix S4300", 0x04cb, 0x0265, 0}, /* t.ludewig@gmail.com */ {"Fuji:FinePix X-S1", 0x04cb, 0x026e, 0}, /* t.ludewig@gmail.com */ {"Fuji:FinePix HS30EXR", 0x04cb, 0x0271, 0}, /* Marcel Bonnet */ {"Fuji:FinePix S2980", 0x04cb, 0x027d, 0}, /* t.ludewig@gmail.com */ {"Fuji:FinePix XF1", 0x04cb, 0x0288, 0}, /* Steve Dahl */ {"Fuji:FinePix S4850", 0x04cb, 0x0298, 0}, /* Larry D. DeMaris" */ {"Fuji:FinePix SL1000", 0x04cb, 0x029c, 0}, /* t.ludewig@gmail.com */ {"Fuji:FinePix X20", 0x04cb, 0x02a6, 0}, /* https://sourceforge.net/p/libmtp/bugs/1040/ */ {"Fuji:Fujifilm X-E2", 0x04cb, 0x02b5, 0}, {"Ricoh:Caplio R5 (PTP mode)", 0x05ca, 0x0110, 0}, {"Ricoh:Caplio GX (PTP mode)", 0x05ca, 0x0325, 0}, {"Sea & Sea:5000G (PTP mode)", 0x05ca, 0x0327, 0}, /* Michael Steinhauser */ {"Ricoh Caplio:R1v (PTP mode)", 0x05ca, 0x032b, 0}, {"Ricoh:Caplio R3 (PTP mode)", 0x05ca, 0x032f, 0}, /* Arthur Butler */ {"Ricoh:Caplio RR750 (PTP mode)", 0x05ca, 0x033d, 0}, /* Gerald Pfeifer at SUSE */ {"Sea & Sea:2G (PTP mode)", 0x05ca, 0x0353, 0}, /* Marcus Meissner */ {"Ricoh:Theta m15 (PTP mode)", 0x05ca, 0x0365, 0}, /* Rollei dr5 */ {"Rollei:dr5 (PTP mode)", 0x05ca, 0x220f, 0}, /* Ricoh Caplio GX 8 */ {"Ricoh:Caplio GX 8 (PTP mode)", 0x05ca, 0x032d, 0}, /* Pentax cameras */ {"Pentax:Optio 43WR", 0x0a17, 0x000d, 0}, /* Stephan Barth at SUSE */ {"Pentax:Optio W90", 0x0a17, 0x00f7, 0}, /* gphoto:feature-requests 452. yes, weird vendor. */ {"Pentax:K3 (PTP Mode)", 0x25fb, 0x0165, 0}, {"Sanyo:VPC-C5 (PTP mode)", 0x0474, 0x0230, 0}, /* from Mike Meyer . Does not support MTP. */ {"Apple:iPhone (PTP mode)", 0x05ac, 0x1290, 0}, /* IRC reporter adjusted info */ {"Apple:iPod Touch (PTP mode)", 0x05ac, 0x1291, 0}, /* irc reporter. MTP based. */ {"Apple:iPhone 3G (PTP mode)", 0x05ac, 0x1292, 0}, /* Marco Michna at SUSE */ {"Apple:iPod Touch 2G (PTP mode)", 0x05ac, 0x1293, 0}, /* Mark Lehrer */ {"Apple:iPhone 3GS (PTP mode)", 0x05ac, 0x1294, 0}, /* Rasmus P */ {"Apple:iPhone 4 (PTP mode)", 0x05ac, 0x1297, 0}, {"Apple:iPod Touch 3rd Gen (PTP mode)", 0x05ac, 0x1299, 0}, {"Apple:iPad (PTP mode)", 0x05ac, 0x129a, 0}, /* Don Cohen */ {"Apple:iPhone 4S (PTP mode)", 0x05ac, 0x12a0, 0}, /* grinchdee@gmail.com */ {"Apple:iPhone 5 (PTP mode)", 0x05ac, 0x12a8, 0}, /* chase.thunderstrike@gmail.com */ {"Apple:iPad Air", 0x05ac, 0x12ab, 0}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=1869653&group_id=158745&atid=809061 */ {"Pioneer:DVR-LX60D", 0x08e4, 0x0142, 0}, /* https://sourceforge.net/tracker/index.php?func=detail&aid=1680029&group_id=8874&atid=108874 */ {"Nokia:N73", 0x0421, 0x0488, 0}, /* gbakos@astro.princeton.edu */ {"Samsung:NX1", 0x04e8, 0x140c, 0}, /* IRC reporter */ {"Samsung:S5620", 0x04e8, 0x684a, 0}, /* Israel Barrientos */ {"Samsung:NX1000", 0x04e8, 0x1384, 0}, /* This is a camera ... reported by TAN JIAN QI */ {"Leica:M9", 0x1a98, 0x0002, PTP_CAP}, /* https://sourceforge.net/p/gphoto/support-requests/130/ */ {"GoPro:HERO 4", 0x2672, 0x000e, 0}, /* Tomas Zigo */ {"GoPro:HERO 3+", 0x2672, 0x0011, 0}, }; static struct { const char *model; unsigned long device_flags; } ptpip_models[] = { {"PTP/IP Camera" , PTP_CAP|PTP_CAP_PREVIEW}, {"Ricoh Theta (WLAN)" , PTP_CAP}, {"Nikon DSLR (WLAN)" , PTP_CAP|PTP_CAP_PREVIEW}, {"Nikon 1 (WLAN)" , PTP_CAP|PTP_CAP_PREVIEW}, {"Canon EOS (WLAN)" , PTP_CAP|PTP_CAP_PREVIEW}, }; #include "device-flags.h" static struct { const char *vendor; unsigned short usb_vendor; const char *model; unsigned short usb_product; unsigned long flags; } mtp_models[] = { #include "music-players.h" }; static struct { uint16_t format_code; uint16_t vendor_code; const char *txt; } object_formats[] = { {PTP_OFC_Undefined, 0, "application/x-unknown"}, {PTP_OFC_Association, 0, "application/x-association"}, {PTP_OFC_Script, 0, "application/x-script"}, {PTP_OFC_Executable, 0, "application/octet-stream"}, {PTP_OFC_Text, 0, GP_MIME_TXT}, {PTP_OFC_HTML, 0, "text/html"}, {PTP_OFC_DPOF, 0, "text/plain"}, {PTP_OFC_AIFF, 0, "audio/x-aiff"}, {PTP_OFC_WAV, 0, GP_MIME_WAV}, {PTP_OFC_MP3, 0, "audio/mpeg"}, {PTP_OFC_AVI, 0, GP_MIME_AVI}, {PTP_OFC_MPEG, 0, "video/mpeg"}, {PTP_OFC_ASF, 0, "video/x-ms-asf"}, {PTP_OFC_QT, 0, "video/quicktime"}, {PTP_OFC_EXIF_JPEG, 0, GP_MIME_JPEG}, {PTP_OFC_TIFF_EP, 0, "image/x-tiffep"}, {PTP_OFC_FlashPix, 0, "image/x-flashpix"}, {PTP_OFC_BMP, 0, GP_MIME_BMP}, {PTP_OFC_CIFF, 0, "image/x-ciff"}, {PTP_OFC_Undefined_0x3806, 0, "application/x-unknown"}, {PTP_OFC_GIF, 0, "image/gif"}, {PTP_OFC_JFIF, 0, GP_MIME_JPEG}, {PTP_OFC_PCD, 0, "image/x-pcd"}, {PTP_OFC_PICT, 0, "image/x-pict"}, {PTP_OFC_PNG, 0, GP_MIME_PNG}, {PTP_OFC_Undefined_0x380C, 0, "application/x-unknown"}, {PTP_OFC_TIFF, 0, GP_MIME_TIFF}, {PTP_OFC_TIFF_IT, 0, "image/x-tiffit"}, {PTP_OFC_JP2, 0, "image/x-jpeg2000bff"}, {PTP_OFC_JPX, 0, "image/x-jpeg2000eff"}, {PTP_OFC_DNG, 0, "image/x-adobe-dng"}, {PTP_OFC_MTP_OGG, PTP_VENDOR_MICROSOFT, "application/ogg"}, {PTP_OFC_MTP_FLAC, PTP_VENDOR_MICROSOFT, "audio/x-flac"}, {PTP_OFC_MTP_MP2, PTP_VENDOR_MICROSOFT, "video/mpeg"}, {PTP_OFC_MTP_M4A, PTP_VENDOR_MICROSOFT, "audio/x-m4a"}, {PTP_OFC_MTP_MP4, PTP_VENDOR_MICROSOFT, "video/mp4"}, {PTP_OFC_MTP_3GP, PTP_VENDOR_MICROSOFT, "audio/3gpp"}, {PTP_OFC_MTP_WMV, PTP_VENDOR_MICROSOFT, "video/x-wmv"}, {PTP_OFC_MTP_WMA, PTP_VENDOR_MICROSOFT, "audio/x-wma"}, {PTP_OFC_MTP_WMV, PTP_VENDOR_MICROSOFT, "video/x-ms-wmv"}, {PTP_OFC_MTP_WMA, PTP_VENDOR_MICROSOFT, "audio/x-ms-wma"}, {PTP_OFC_MTP_AAC, PTP_VENDOR_MICROSOFT, "audio/MP4A-LATM"}, {PTP_OFC_MTP_XMLDocument, PTP_VENDOR_MICROSOFT, "text/xml"}, {PTP_OFC_MTP_MSWordDocument, PTP_VENDOR_MICROSOFT, "application/msword"}, {PTP_OFC_MTP_MSExcelSpreadsheetXLS, PTP_VENDOR_MICROSOFT, "vnd.ms-excel"}, {PTP_OFC_MTP_MSPowerpointPresentationPPT, PTP_VENDOR_MICROSOFT, "vnd.ms-powerpoint"}, {PTP_OFC_MTP_vCard2, PTP_VENDOR_MICROSOFT, "text/directory"}, {PTP_OFC_MTP_vCard3, PTP_VENDOR_MICROSOFT, "text/directory"}, {PTP_OFC_MTP_vCalendar1, PTP_VENDOR_MICROSOFT, "text/calendar"}, {PTP_OFC_MTP_vCalendar2, PTP_VENDOR_MICROSOFT, "text/calendar"}, {PTP_OFC_CANON_CRW, PTP_VENDOR_CANON, "image/x-canon-cr2"}, {PTP_OFC_CANON_CRW3, PTP_VENDOR_CANON, "image/x-canon-cr2"}, {PTP_OFC_CANON_MOV, PTP_VENDOR_CANON, "video/quicktime"}, {PTP_OFC_CANON_CHDK_CRW, PTP_VENDOR_CANON, "image/x-canon-cr2"}, {PTP_OFC_SONY_RAW, PTP_VENDOR_SONY, "image/x-sony-arw"}, {0, 0, NULL} }; static int set_mimetype (CameraFile *file, uint16_t vendorcode, uint16_t ofc) { int i; for (i = 0; object_formats[i].format_code; i++) { if (object_formats[i].vendor_code && /* 0 means generic */ (object_formats[i].vendor_code != vendorcode)) continue; if (object_formats[i].format_code != ofc) continue; return gp_file_set_mime_type (file, object_formats[i].txt); } GP_LOG_D ("Failed to find mime type for %04x", ofc); return gp_file_set_mime_type (file, "application/x-unknown"); } static void strcpy_mime(char * dest, uint16_t vendor_code, uint16_t ofc) { int i; for (i = 0; object_formats[i].format_code; i++) { if (object_formats[i].vendor_code && /* 0 means generic */ (object_formats[i].vendor_code != vendor_code)) continue; if (object_formats[i].format_code == ofc) { strcpy(dest, object_formats[i].txt); return; } } GP_LOG_D ("Failed to find mime type for %04x", ofc); strcpy(dest, "application/x-unknown"); } static uint32_t get_mimetype (Camera *camera, CameraFile *file, uint16_t vendor_code) { int i; const char *mimetype; gp_file_get_mime_type (file, &mimetype); for (i = 0; object_formats[i].format_code; i++) { if (object_formats[i].vendor_code && /* 0 means generic */ (object_formats[i].vendor_code != vendor_code)) continue; if (!strcmp(mimetype,object_formats[i].txt)) return (object_formats[i].format_code); } GP_LOG_D ("Failed to find mime type for %s", mimetype); return (PTP_OFC_Undefined); } static void #ifdef __GNUC__ __attribute__((__format__(printf,2,0))) #endif ptp_debug_func (void *data, const char *format, va_list args) { gp_logv (GP_LOG_DEBUG, "ptp", format, args); } static void #ifdef __GNUC__ __attribute__((__format__(printf,2,0))) #endif ptp_error_func (void *data, const char *format, va_list args) { PTPData *ptp_data = data; char buf[2048]; vsnprintf (buf, sizeof (buf), format, args); gp_context_error (ptp_data->context, "%s", buf); } static int is_mtp_capable(Camera *camera) { PTPParams *params = &camera->pl->params; if (params->deviceinfo.VendorExtensionID == PTP_VENDOR_MICROSOFT) return 1; /* if (camera->pl->bugs & PTP_MTP) return 1; */ return 0; } int camera_abilities (CameraAbilitiesList *list) { unsigned int i; CameraAbilities a; for (i = 0; i < sizeof(models)/sizeof(models[0]); i++) { memset(&a, 0, sizeof(a)); strcpy (a.model, models[i].model); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].usb_vendor; a.usb_product = models[i].usb_product; a.device_type = GP_DEVICE_STILL_CAMERA; a.operations = GP_OPERATION_NONE; /* for now */ if (models[i].device_flags & PTP_OLYMPUS_XML) a.status = GP_DRIVER_STATUS_EXPERIMENTAL; if (models[i].device_flags & PTP_CAP) { a.operations |= GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CONFIG; /* Only Nikon *D* cameras for now -Marcus */ if ( (models[i].usb_vendor == 0x4b0) && strchr(models[i].model,'D') ) a.operations |= GP_OPERATION_TRIGGER_CAPTURE; /* Also enable trigger capture for EOS capture */ if ( (models[i].usb_vendor == 0x4a9) && (strstr(models[i].model,"EOS") || strstr(models[i].model,"Rebel")) ) a.operations |= GP_OPERATION_TRIGGER_CAPTURE; #if 0 /* SX 100 IS ... works in sdram, not in card mode */ if ( (models[i].usb_vendor == 0x4a9) && (models[i].usb_product == 0x315e) ) a.operations |= GP_OPERATION_TRIGGER_CAPTURE; #endif } if (models[i].device_flags & PTP_CAP_PREVIEW) a.operations |= GP_OPERATION_CAPTURE_PREVIEW; a.file_operations = GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE | GP_FOLDER_OPERATION_MAKE_DIR | GP_FOLDER_OPERATION_REMOVE_DIR; CR (gp_abilities_list_append (list, a)); } for (i = 0; i < sizeof(mtp_models)/sizeof(mtp_models[0]); i++) { memset(&a, 0, sizeof(a)); sprintf (a.model, "%s:%s", mtp_models[i].vendor, mtp_models[i].model); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = mtp_models[i].usb_vendor; a.usb_product = mtp_models[i].usb_product; a.operations = GP_OPERATION_NONE; a.device_type = GP_DEVICE_AUDIO_PLAYER; a.file_operations = GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE | GP_FOLDER_OPERATION_MAKE_DIR | GP_FOLDER_OPERATION_REMOVE_DIR; CR (gp_abilities_list_append (list, a)); } memset(&a, 0, sizeof(a)); strcpy(a.model, "USB PTP Class Camera"); a.status = GP_DRIVER_STATUS_TESTING; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_class = 6; a.usb_subclass = 1; a.usb_protocol = 1; a.operations = GP_OPERATION_CAPTURE_IMAGE | /*GP_OPERATION_TRIGGER_CAPTURE |*/ GP_OPERATION_CAPTURE_PREVIEW | GP_OPERATION_CONFIG; a.file_operations = GP_FILE_OPERATION_PREVIEW| GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE | GP_FOLDER_OPERATION_MAKE_DIR | GP_FOLDER_OPERATION_REMOVE_DIR; a.device_type = GP_DEVICE_STILL_CAMERA; CR (gp_abilities_list_append (list, a)); memset(&a, 0, sizeof(a)); strcpy(a.model, "MTP Device"); a.status = GP_DRIVER_STATUS_TESTING; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_class = 666; a.usb_subclass = -1; a.usb_protocol = -1; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE | GP_FOLDER_OPERATION_MAKE_DIR | GP_FOLDER_OPERATION_REMOVE_DIR; a.device_type = GP_DEVICE_AUDIO_PLAYER; CR (gp_abilities_list_append (list, a)); for (i = 0; i < sizeof(ptpip_models)/sizeof(ptpip_models[0]); i++) { memset(&a, 0, sizeof(a)); strcpy(a.model, ptpip_models[i].model); a.status = GP_DRIVER_STATUS_TESTING; a.port = GP_PORT_PTPIP; a.operations = GP_OPERATION_CONFIG; if (ptpip_models[i].device_flags & PTP_CAP) a.operations |= GP_OPERATION_CAPTURE_IMAGE; if (ptpip_models[i].device_flags & PTP_CAP_PREVIEW) a.operations |= GP_OPERATION_CAPTURE_PREVIEW; a.file_operations = GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_PUT_FILE | GP_FOLDER_OPERATION_MAKE_DIR | GP_FOLDER_OPERATION_REMOVE_DIR; a.device_type = GP_DEVICE_STILL_CAMERA; CR (gp_abilities_list_append (list, a)); } return (GP_OK); } int camera_id (CameraText *id) { strcpy (id->text, "PTP"); return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { if (camera->pl!=NULL) { PTPParams *params = &camera->pl->params; PTPContainer event; SET_CONTEXT_P(params, context); switch (params->deviceinfo.VendorExtensionID) { case PTP_VENDOR_CANON: /* Disable EOS capture now, also end viewfinder mode. */ if (params->eos_captureenabled) { if (camera->pl->checkevents) { PTPCanon_changes_entry entry; ptp_check_eos_events (params); while (ptp_get_one_eos_event (params, &entry)) { GP_LOG_D ("missed EOS ptp type %d", entry.type); if (entry.type == PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN) free (entry.u.info); } camera->pl->checkevents = 0; } if (params->inliveview) ptp_canon_eos_end_viewfinder (params); camera_unprepare_capture (camera, context); } break; case PTP_VENDOR_NIKON: /* get the Nikon out of control mode again */ if (params->controlmode && ptp_operation_issupported(params,PTP_OC_NIKON_SetControlMode)) { ptp_nikon_setcontrolmode (params, 0); params->controlmode = 0; } break; case PTP_VENDOR_SONY: if (ptp_operation_issupported(params, 0x9280)) { C_PTP (ptp_sony_9280(params, 0x4,0,5,0,0,0,0)); } break; } if (camera->pl->checkevents) ptp_check_event (params); while (ptp_get_one_event (params, &event)) GP_LOG_D ("missed ptp event 0x%x (param1=%x)", event.Code, event.Param1); /* close ptp session */ ptp_closesession (params); ptp_free_params(params); #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) /* close iconv converters */ if (params->cd_ucs2_to_locale != (iconv_t)-1) iconv_close(params->cd_ucs2_to_locale); if (params->cd_locale_to_ucs2 != (iconv_t)-1) iconv_close(params->cd_locale_to_ucs2); #endif free (params->data); free (camera->pl); /* also frees params */ params = NULL; camera->pl = NULL; } /* This code hangs USB 3 devices after the first bulk image transmission. * For some unknown reason. */ if (0 && (camera->port!=NULL) && (camera->port->type == GP_PORT_USB)) { /* clear halt */ gp_port_usb_clear_halt (camera->port, GP_PORT_USB_ENDPOINT_IN); gp_port_usb_clear_halt (camera->port, GP_PORT_USB_ENDPOINT_OUT); gp_port_usb_clear_halt (camera->port, GP_PORT_USB_ENDPOINT_INT); } return (GP_OK); } static int camera_about (Camera *camera, CameraText *text, GPContext *context) { /* Note that we are not a so called 'Licensed Implementation' of MTP * ... (for a LI you need express approval from Microsoft etc.) */ snprintf (text->text, sizeof(text->text), _("PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!"), 2015); return (GP_OK); } static void debug_objectinfo(PTPParams *params, uint32_t oid, PTPObjectInfo *oi); /* Add new object to internal driver structures. issued when creating * folder, uploading objects, or captured images. */ static int add_object (Camera *camera, uint32_t handle, GPContext *context) { PTPObject *ob; PTPParams *params = &camera->pl->params; C_PTP (ptp_object_want (params, handle, 0, &ob)); return GP_OK; } static int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { unsigned char *data = NULL, *jpgStartPtr = NULL, *jpgEndPtr = NULL; uint32_t size = 0; uint16_t ret; PTPParams *params = &camera->pl->params; camera->pl->checkevents = TRUE; switch (params->deviceinfo.VendorExtensionID) { case PTP_VENDOR_CANON: /* Canon PowerShot / IXUS preview mode */ if (ptp_operation_issupported(params, PTP_OC_CANON_ViewfinderOn)) { SET_CONTEXT_P(params, context); /* check if we need to prepare capture */ if (!params->canon_event_mode) CR (camera_prepare_capture (camera, context)); if (!params->canon_viewfinder_on) { /* enable on demand, but just once */ C_PTP_REP_MSG (ptp_canon_viewfinderon (params), _("Canon enable viewfinder failed")); params->canon_viewfinder_on = 1; } C_PTP_REP_MSG (ptp_canon_getviewfinderimage (params, &data, &size), _("Canon get viewfinder image failed")); gp_file_append ( file, (char*)data, size ); free (data); gp_file_set_mime_type (file, GP_MIME_JPEG); /* always */ /* Add an arbitrary file name so caller won't crash */ gp_file_set_name (file, "canon_preview.jpg"); gp_file_set_mtime (file, time(NULL)); SET_CONTEXT_P(params, NULL); return GP_OK; } /* Canon EOS DSLR preview mode */ if (ptp_operation_issupported(params, PTP_OC_CANON_EOS_GetViewFinderData)) { PTPPropertyValue val; /* FIXME: this might cause a focusing pass and take seconds. 20 was not * enough (would be 0.2 seconds, too short for the mirror up operation.). */ /* The EOS 100D takes 1.2 seconds */ int tries = 200; PTPDevicePropDesc dpd; SET_CONTEXT_P(params, context); if (!params->eos_captureenabled) camera_prepare_capture (camera, context); memset (&dpd,0,sizeof(dpd)); /* do not set it everytime, it will cause delays */ ret = ptp_canon_eos_getdevicepropdesc (params, PTP_DPC_CANON_EOS_EVFMode, &dpd); if ((ret != PTP_RC_OK) || (dpd.CurrentValue.u16 != 1)) { /* 0 means off, 1 means on */ val.u16 = 1; C_PTP_MSG (ptp_canon_eos_setdevicepropvalue (params, PTP_DPC_CANON_EOS_EVFMode, &val, PTP_DTC_UINT16), "setval of evf enable to 1 failed (curval is %d)!", dpd.CurrentValue.u16); } ptp_free_devicepropdesc (&dpd); /* do not set it everytime, it will cause delays */ ret = ptp_canon_eos_getdevicepropdesc (params, PTP_DPC_CANON_EOS_EVFOutputDevice, &dpd); if ((ret != PTP_RC_OK) || (dpd.CurrentValue.u32 != 2)) { /* 2 means PC, 1 means TFT */ val.u32 = 2; C_PTP_MSG (ptp_canon_eos_setdevicepropvalue (params, PTP_DPC_CANON_EOS_EVFOutputDevice, &val, PTP_DTC_UINT32), "setval of evf outputmode to 2 failed (curval is %d)!", dpd.CurrentValue.u32); } ptp_free_devicepropdesc (&dpd); /* Otherwise the camera will auto-shutdown */ C_PTP (ptp_canon_eos_keepdeviceon (params)); params->inliveview = 1; while (tries--) { unsigned char *xdata; /* Poll for camera events, but just call * it once and do not drain the queue now */ C_PTP (ptp_check_eos_events (params)); ret = ptp_canon_eos_get_viewfinder_image (params , &data, &size); if ((ret == 0xa102) || (ret == PTP_RC_DeviceBusy)) { /* means "not there yet" ... so wait */ /* frames/second rate vs compute power drainage ... polling * makes the camera too busy to do other tasks and they take * longer. */ if (tries < 98) usleep (2000); else usleep (1300); continue; } C_PTP_MSG (ret, "get_viewfinder_image failed"); /* returns multiple blobs, they are usually structured as * uint32 len * uint32 type * ... data ... * * 1: JPEG preview */ xdata = data; GP_LOG_D ("total size: len=%d", size); while ((xdata-data) < size) { uint32_t len = dtoh32a(xdata); uint32_t type = dtoh32a(xdata+4); /* 4 byte len of jpeg data, 4 byte type */ /* JPEG blob */ /* stuff */ GP_LOG_D ("get_viewfinder_image header: len=%d type=%d", len, type); switch (type) { default: if (len > (size-(xdata-data))) { len = size; GP_LOG_E ("len=%d larger than rest size %ld", len, (size-(xdata-data))); } GP_LOG_DATA ((char*)xdata, len, "get_viewfinder_image header:"); xdata = xdata+len; continue; case 9: case 1: if (len > (size-(xdata-data))) { len = size; GP_LOG_E ("len=%d larger than rest size %ld", len, (size-(xdata-data))); break; } gp_file_append ( file, (char*)xdata+8, len-8 ); /* type 1 is JPEG (regular), type 9 is in movie mode */ gp_file_set_mime_type (file, (type==1) ? GP_MIME_JPEG : GP_MIME_RAW); /* Add an arbitrary file name so caller won't crash */ gp_file_set_name (file, "preview.jpg"); /* dump the rest of the blobs */ xdata = xdata+len; while ((xdata-data) < size) { len = dtoh32a(xdata); type = dtoh32a(xdata+4); if (len > (size-(xdata-data))) { len = size; GP_LOG_E ("len=%d larger than rest size %ld", len, (size-(xdata-data))); break; } GP_LOG_DATA ((char*)xdata, len, "get_viewfinder_image header:"); xdata = xdata+len; } free (data); SET_CONTEXT_P(params, NULL); return GP_OK; } } return GP_ERROR; } GP_LOG_E ("get_viewfinder_image failed after all tries with ret: 0x%x\n", ret); SET_CONTEXT_P(params, NULL); return translate_ptp_result (ret); } gp_context_error (context, _("Sorry, your Canon camera does not support Canon Viewfinder mode")); return GP_ERROR_NOT_SUPPORTED; case PTP_VENDOR_NIKON: { PTPPropertyValue value; int tries, firstimage = 0; if (!ptp_operation_issupported(params, PTP_OC_NIKON_StartLiveView)) { gp_context_error (context, _("Sorry, your Nikon camera does not support LiveView mode")); return GP_ERROR_NOT_SUPPORTED; } SET_CONTEXT_P(params, context); /* Nilon V and J seem to like that */ if (!params->controlmode && ptp_operation_issupported(params,PTP_OC_NIKON_SetControlMode)) { ret = ptp_nikon_setcontrolmode (params, 1); /* FIXME: PTP_RC_NIKON_ChangeCameraModeFailed does not seem to be problematic */ if (ret != PTP_RC_NIKON_ChangeCameraModeFailed) C_PTP_REP (ret); params->controlmode = 1; } ret = ptp_getdevicepropvalue (params, PTP_DPC_NIKON_LiveViewStatus, &value, PTP_DTC_UINT8); if (ret != PTP_RC_OK) value.u8 = 0; enable_liveview: if (!value.u8) { value.u8 = 1; if (have_prop(camera, params->deviceinfo.VendorExtensionID, PTP_DPC_NIKON_RecordingMedia)) LOG_ON_PTP_E (ptp_setdevicepropvalue (params, PTP_DPC_NIKON_RecordingMedia, &value, PTP_DTC_UINT8)); ret = ptp_nikon_start_liveview (params); if ((ret != PTP_RC_OK) && (ret != PTP_RC_DeviceBusy)) C_PTP_REP_MSG (ret, _("Nikon enable liveview failed")); do { ret = ptp_nikon_device_ready(params); usleep(20*1000); } while (ret == PTP_RC_DeviceBusy); C_PTP_REP_MSG (ret, _("Nikon enable liveview failed")); params->inliveview = 1; firstimage = 1; } /* nikon 1 special */ if (value.u8 && !params->inliveview) { ret = ptp_nikon_start_liveview (params); if ((ret != PTP_RC_OK) && (ret != PTP_RC_DeviceBusy)) C_PTP_REP_MSG (ret, _("Nikon enable liveview failed")); do { ret = ptp_nikon_device_ready(params); usleep(20*1000); } while (ret == PTP_RC_DeviceBusy); C_PTP_REP_MSG (ret, _("Nikon enable liveview failed")); params->inliveview = 1; } tries = 20; while (tries--) { ret = ptp_nikon_get_liveview_image (params , &data, &size); if (ret == PTP_RC_NIKON_NotLiveView) { /* this happens on the D7000 after 14000 frames... reenable liveview */ params->inliveview = 0; value.u8 = 0; goto enable_liveview; } if (ret == PTP_RC_OK) { if (firstimage) { /* the first image on the S9700 is corrupted. so just skip the first image */ firstimage = 0; free (data); continue; } /* look for the JPEG SOI marker (0xFFD8) in data */ jpgStartPtr = (unsigned char*)memchr(data, 0xff, size); while(jpgStartPtr && ((jpgStartPtr+1) < (data + size))) { if(*(jpgStartPtr + 1) == 0xd8) { /* SOI found */ break; } else { /* go on looking (starting at next byte) */ jpgStartPtr++; jpgStartPtr = (unsigned char*)memchr(jpgStartPtr, 0xff, data + size - jpgStartPtr); } } if(!jpgStartPtr) { /* no SOI -> no JPEG */ gp_context_error (context, _("Sorry, your Nikon camera does not seem to return a JPEG image in LiveView mode")); return GP_ERROR; } /* if SOI found, start looking for EOI marker (0xFFD9) one byte after SOI (just to be sure we will not go beyond the end of the data array) */ jpgEndPtr = (unsigned char*)memchr(jpgStartPtr+1, 0xff, data+size-jpgStartPtr-1); while(jpgEndPtr && ((jpgEndPtr+1) < (data + size))) { if(*(jpgEndPtr + 1) == 0xd9) { /* EOI found */ jpgEndPtr += 2; break; } else { /* go on looking (starting at next byte) */ jpgEndPtr++; jpgEndPtr = (unsigned char*)memchr(jpgEndPtr, 0xff, data + size - jpgEndPtr); } } if(!jpgEndPtr) { /* no EOI -> no JPEG */ gp_context_error (context, _("Sorry, your Nikon camera does not seem to return a JPEG image in LiveView mode")); return GP_ERROR; } gp_file_append (file, (char*)jpgStartPtr, jpgEndPtr-jpgStartPtr); free (data); /* FIXME: perhaps handle the 128 byte header data too. */ gp_file_set_mime_type (file, GP_MIME_JPEG); /* always */ /* Add an arbitrary file name so caller won't crash */ gp_file_set_name (file, "preview.jpg"); gp_file_set_mtime (file, time(NULL)); break; } if (ret == PTP_RC_DeviceBusy) { GP_LOG_D ("busy, retrying after a bit of wait, try %d", tries); usleep(10*1000); continue; } SET_CONTEXT_P(params, NULL); return translate_ptp_result (ret); } #if 0 C_PTP_REP_MSG (ptp_nikon_end_liveview (params), _("Nikon disable liveview failed")); #endif SET_CONTEXT_P(params, NULL); return GP_OK; } default: break; } return GP_ERROR_NOT_SUPPORTED; } static int get_folder_from_handle (Camera *camera, uint32_t storage, uint32_t handle, char *folder) { PTPObject *ob; PTPParams *params = &camera->pl->params; GP_LOG_D ("(%x,%x,%s)", storage, handle, folder); if (handle == PTP_HANDLER_ROOT) return GP_OK; C_PTP (ptp_object_want (params, handle, PTPOBJECT_OBJECTINFO_LOADED, &ob)); CR (get_folder_from_handle (camera, storage, ob->oi.ParentObject, folder)); /* now ob could be invalid, since we might have reallocated params->objects */ ptp_object_want (params, handle, PTPOBJECT_OBJECTINFO_LOADED, &ob); strcat (folder, ob->oi.Filename); strcat (folder, "/"); return (GP_OK); } static int add_objectid_and_upload (Camera *camera, CameraFilePath *path, GPContext *context, uint32_t newobject, PTPObjectInfo *oi) { int ret; PTPParams *params = &camera->pl->params; CameraFile *file = NULL; unsigned char *ximage = NULL; CameraFileInfo info; ret = gp_file_new(&file); if (ret!=GP_OK) return ret; gp_file_set_mtime (file, time(NULL)); set_mimetype (file, params->deviceinfo.VendorExtensionID, oi->ObjectFormat); C_PTP_REP (ptp_getobject(params, newobject, &ximage)); GP_LOG_D ("setting size"); ret = gp_file_set_data_and_size(file, (char*)ximage, oi->ObjectCompressedSize); if (ret != GP_OK) { gp_file_free (file); return ret; } GP_LOG_D ("append to fs"); ret = gp_filesystem_append(camera->fs, path->folder, path->name, context); if (ret != GP_OK) { gp_file_free (file); return ret; } GP_LOG_D ("adding filedata to fs"); ret = gp_filesystem_set_file_noop(camera->fs, path->folder, path->name, GP_FILE_TYPE_NORMAL, file, context); if (ret != GP_OK) { gp_file_free (file); return ret; } /* We have now handed over the file, disclaim responsibility by unref. */ gp_file_unref (file); /* we also get the fs info for free, so just set it */ info.file.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT | GP_FILE_INFO_SIZE | GP_FILE_INFO_MTIME; strcpy_mime (info.file.type, params->deviceinfo.VendorExtensionID, oi->ObjectFormat); info.file.width = oi->ImagePixWidth; info.file.height = oi->ImagePixHeight; info.file.size = oi->ObjectCompressedSize; info.file.mtime = time(NULL); info.preview.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT | GP_FILE_INFO_SIZE; strcpy_mime (info.preview.type, params->deviceinfo.VendorExtensionID, oi->ThumbFormat); info.preview.width = oi->ThumbPixWidth; info.preview.height = oi->ThumbPixHeight; info.preview.size = oi->ThumbCompressedSize; GP_LOG_D ("setting fileinfo in fs"); return gp_filesystem_set_info_noop(camera->fs, path->folder, path->name, info, context); } /** * camera_nikon_capture: * params: Camera* - camera object * CameraCaptureType type - type of object to capture * CameraFilePath *path - filled out with filename and folder on return * uint32_t af - use autofocus or not. * uint32_t sdram - capture to sdram or not * GPContext* context - gphoto context for this operation * * This function captures an image using special Nikon capture to SDRAM. * The object(s) do(es) not appear in the "objecthandles" array returned by GetObjectHandles, * so we need to download them here immediately. * * Return values: A gphoto return code. * Upon success CameraFilePath *path contains the folder and filename of the captured * image. */ static int camera_nikon_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, uint32_t af, int sdram, GPContext *context) { static int capcnt = 0; PTPObjectInfo oi; PTPParams *params = &camera->pl->params; PTPDevicePropDesc propdesc; PTPPropertyValue propval; int i, ret, burstnumber = 1, done, tries; uint32_t newobject; int back_off_wait = 0; struct timeval capture_start; if (type != GP_CAPTURE_IMAGE) return GP_ERROR_NOT_SUPPORTED; if (params->deviceinfo.VendorExtensionID!=PTP_VENDOR_NIKON) return GP_ERROR_NOT_SUPPORTED; /* Nilon V and J seem to like that */ if (!params->controlmode && ptp_operation_issupported(params,PTP_OC_NIKON_SetControlMode)) { ret = ptp_nikon_setcontrolmode (params, 1); /* FIXME: PTP_RC_NIKON_ChangeCameraModeFailed does not seem to be problematic */ if (ret != PTP_RC_NIKON_ChangeCameraModeFailed) C_PTP_REP (ret); params->controlmode = 1; } if ( !ptp_operation_issupported(params,PTP_OC_NIKON_Capture) && !ptp_operation_issupported(params,PTP_OC_NIKON_AfCaptureSDRAM) && !ptp_operation_issupported(params,PTP_OC_NIKON_InitiateCaptureRecInMedia) ) { gp_context_error(context, _("Sorry, your camera does not support Nikon capture")); return GP_ERROR_NOT_SUPPORTED; } if ( ptp_property_issupported(params, PTP_DPC_StillCaptureMode) && (PTP_RC_OK == ptp_getdevicepropdesc (params, PTP_DPC_StillCaptureMode, &propdesc))) { PTPDevicePropDesc burstdesc; if ((propdesc.DataType == PTP_DTC_UINT16) && (propdesc.CurrentValue.u16 == 2) /* Burst Mode */ && ptp_property_issupported(params, PTP_DPC_BurstNumber) && (PTP_RC_OK == ptp_getdevicepropdesc (params, PTP_DPC_BurstNumber, &burstdesc))) { if (burstdesc.DataType == PTP_DTC_UINT16) { burstnumber = burstdesc.CurrentValue.u16; GP_LOG_D ("burstnumber %d", burstnumber); } ptp_free_devicepropdesc (&burstdesc); } ptp_free_devicepropdesc (&propdesc); } /* if in liveview mode, we have to run non-af capture */ params->inliveview = 0; if (ptp_property_issupported (params, PTP_DPC_NIKON_LiveViewStatus)) { ret = ptp_getdevicepropvalue (params, PTP_DPC_NIKON_LiveViewStatus, &propval, PTP_DTC_UINT8); if (ret == PTP_RC_OK) params->inliveview = propval.u8; if (params->inliveview) af = 0; } if (NIKON_1(params)) { ret = ptp_nikon_start_liveview (params); if ((ret != PTP_RC_OK) && (ret != PTP_RC_DeviceBusy)) C_PTP_REP_MSG(ret, _("Failed to enable liveview on a Nikon 1, but it is required for capture")); /* OK or busy, try to proceed ... */ } if (ptp_operation_issupported(params, PTP_OC_NIKON_InitiateCaptureRecInMedia)) { int loops = 100; do { ret = ptp_nikon_capture2(params,af,sdram); if (ret == PTP_RC_DeviceBusy) usleep(2000); } while ((ret == PTP_RC_DeviceBusy) && loops--); goto capturetriggered; } if (!params->inliveview && ptp_operation_issupported(params,PTP_OC_NIKON_AfCaptureSDRAM)) { int loops = 100; do { ret = ptp_nikon_capture_sdram(params); } while ((ret == PTP_RC_DeviceBusy) && (loops--)); } else { int loops = 100; do { ret = ptp_nikon_capture(params, 0xffffffff); } while ((ret == PTP_RC_DeviceBusy) && (loops--)); } capturetriggered: C_PTP_REP (ret); CR (gp_port_set_timeout (camera->port, capture_timeout)); while ((ret = ptp_nikon_device_ready(params)) == PTP_RC_DeviceBusy) { gp_context_idle (context); /* do not drain all of the DSLRs compute time */ usleep(100*1000); /* 0.1 seconds */ } C_PTP_REP (ret); /* e.g. out of focus gets reported here. */ newobject = 0xffff0001; done = 0; tries = 100; capture_start = time_now(); do { PTPContainer event; int checkevt; /* Just busy loop until the camera is ready again. */ /* and wait for the 0xc101 event */ C_PTP_REP (ptp_check_event (params)); checkevt = 0; while (ptp_get_one_event(params, &event)) { GP_LOG_D ("event.Code is %x / param %lx", event.Code, (unsigned long)event.Param1); switch (event.Code) { case PTP_EC_Nikon_ObjectAddedInSDRAM: done |= 3; newobject = event.Param1; if (!newobject) newobject = 0xffff0001; break; case PTP_EC_ObjectRemoved: ptp_remove_object_from_cache(params, event.Param1); gp_filesystem_reset (camera->fs); break; case PTP_EC_ObjectAdded: { PTPObject *ob; /* if we got one object already, put it into the queue */ /* e.g. for NEF+RAW capture */ if (newobject != 0xffff0001) { ptp_add_event (params, &event); checkevt = 1; /* avoid endless loop */ done = 3; break; } /* we register the object in the internal storage, and we also need to * to find out if it is just a new directory (/DCIM/NEWENTRY/) created * during capture or the actual image. */ ret = ptp_object_want (params, event.Param1, PTPOBJECT_OBJECTINFO_LOADED, &ob); if (ret != PTP_RC_OK) break; /* if a new directory was added, not a file ... just continue. * happens when the camera starts with an empty card. */ if (ob->oi.ObjectFormat == PTP_OFC_Association) { /* libgphoto2 vfs does not notice otherwise */ gp_filesystem_reset (camera->fs); break; } newobject = event.Param1; done |= 2; break; } case PTP_EC_Nikon_CaptureCompleteRecInSdram: case PTP_EC_CaptureComplete: if (params->inliveview) { GP_LOG_D ("Capture complete ... restarting liveview"); ret = ptp_nikon_start_liveview (params); } done |= 1; break; default: GP_LOG_D ("UNHANDLED event.Code is %x / param %lx, DEFER", event.Code, (unsigned long)event.Param1); ptp_add_event (params, &event); checkevt = 1; /* avoid endless loop */ break; } if (checkevt) break; } /* we got both capturecomplete and objectadded ... leave */ if (done == 3) break; /* just got capturecomplete ... wait a bit for a objectadded (Nikon 1) */ if (done == 1) { if (!tries--) break; } gp_context_idle (context); /* do not drain all of the DSLRs compute time */ } while ((done != 3) && waiting_for_timeout (&back_off_wait, capture_start, 50*100)); /* 50 seconds */ if (!newobject) newobject = 0xffff0001; /* This loop handles single and burst capture. * It also handles SDRAM and also CARD capture. * In Burst/SDRAM we need to download everything at once * In all SDRAM modes we download and store it in the virtual fs. * in Burst/CARD we add just the 1st as object, but do not download it yet. */ for (i=0;ifolder, "/"); } else { sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx",(unsigned long)oi.StorageID); } if (oi.ObjectFormat != PTP_OFC_EXIF_JPEG) { /* the Nikon Coolpix P2 says "TIFF" and gives us "JPG". weird. */ if (oi.Filename && strstr(oi.Filename,".JPG")) { GP_LOG_D ("rewriting %04x to JPEG %04x for %s", oi.ObjectFormat,PTP_OFC_EXIF_JPEG,oi.Filename); oi.ObjectFormat = PTP_OFC_EXIF_JPEG; } } if (oi.ObjectFormat != PTP_OFC_EXIF_JPEG) { GP_LOG_D ("raw? ofc is 0x%04x, name is %s", oi.ObjectFormat,oi.Filename); sprintf (path->name, "capt%04d.nef", capcnt++); } else { sprintf (path->name, "capt%04d.jpg", capcnt++); } ret = add_objectid_and_upload (camera, path, context, newobject, &oi); if (ret != GP_OK) { GP_LOG_E ("failed to add object\n"); return ret; } /* this does result in 0x2009 (invalid object id) with the D90 ... curiuos ret = ptp_nikon_delete_sdram_image (params, newobject); */ ret = ptp_deleteobject (params, newobject, 0); if (ret != PTP_RC_OK) { GP_LOG_E ("deleteobject(%x) failed: %x", newobject, ret); ret = ptp_nikon_delete_sdram_image (params, newobject); if (ret != PTP_RC_OK) GP_LOG_E ("deleteobjectinsdram(%x) failed too: %x", newobject, ret); } } else { /* capture to card branch */ CR (add_object (camera, newobject, context)); strcpy (path->name, oi.Filename); sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx/",(unsigned long)oi.StorageID); get_folder_from_handle (camera, oi.StorageID, oi.ParentObject, path->folder); /* delete last / or we get confused later. */ path->folder[ strlen(path->folder)-1 ] = '\0'; ptp_free_objectinfo(&oi); /* not doing the rest of the burst loop ... */ return gp_filesystem_append (camera->fs, path->folder, path->name, context); } } ptp_check_event (params); return GP_OK; } /* 60 seconds timeout in ms ... (for long cycles) */ #define EOS_CAPTURE_TIMEOUT (60*1000) /* This is currently the capture method used by the EOS 400D * ... in development. */ static int camera_canon_eos_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { int ret; PTPParams *params = &camera->pl->params; uint32_t newobject = 0x0; PTPCanon_changes_entry entry; CameraFile *file = NULL; unsigned char *ximage = NULL; static int capcnt = 0; PTPObjectInfo oi; int back_off_wait = 0; uint32_t result; struct timeval capture_start; if (!ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteRelease)) { gp_context_error (context, _("Sorry, your Canon camera does not support Canon EOS Capture")); return GP_ERROR_NOT_SUPPORTED; } if (!params->eos_captureenabled) camera_prepare_capture (camera, context); else CR( camera_canon_eos_update_capture_target(camera, context, -1)); /* Get the initial bulk set of event data, otherwise * capture might return busy. */ ptp_check_eos_events (params); while (ptp_get_one_eos_event (params, &entry)) GP_LOG_D("discarding event type %d", entry.type); capture_start = time_now(); if (ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteReleaseOn)) { struct timeval focus_start; int foundfocusinfo = 0; ret = GP_OK; /* half press now - initiate focusing and wait for result */ C_PTP_REP_MSG (ptp_canon_eos_remotereleaseon (params, 1, 0), _("Canon EOS Half-Press failed")); focus_start = time_now(); do { C_PTP_REP_MSG (ptp_check_eos_events (params), _("Canon EOS Get Changes failed")); while (ptp_get_one_eos_event (params, &entry)) { GP_LOG_D("focusing - read event type %d", entry.type); if (entry.type == PTP_CANON_EOS_CHANGES_TYPE_FOCUSINFO) { GP_LOG_D("focusinfo content: %s", entry.u.info); foundfocusinfo = 1; if (strstr(entry.u.info,"0000200")) { gp_context_error (context, _("Canon EOS Capture failed to release: Perhaps no focus?")); ret = GP_ERROR; } } } if (foundfocusinfo) break; } while (waiting_for_timeout (&back_off_wait, focus_start, 2*1000)); /* wait 2 seconds for focus */ if (!foundfocusinfo) { GP_LOG_E("no focus info?\n"); } if (ret != GP_OK) { C_PTP_REP_MSG (ptp_canon_eos_remotereleaseoff (params, 1), _("Canon EOS Half-Release failed")); return ret; } /* full press now */ C_PTP_REP_MSG (ptp_canon_eos_remotereleaseon (params, 2, 0), _("Canon EOS Full-Press failed")); /* no event check between */ /* full release now */ C_PTP_REP_MSG (ptp_canon_eos_remotereleaseoff (params, 2), _("Canon EOS Full-Release failed")); ptp_check_eos_events (params); /* half release now */ C_PTP_REP_MSG (ptp_canon_eos_remotereleaseoff (params, 1), _("Canon EOS Half-Release failed")); } else { C_PTP_REP_MSG (ptp_canon_eos_capture (params, &result), _("Canon EOS Capture failed")); if ((result & 0x7000) == 0x2000) { /* also happened */ gp_context_error (context, _("Canon EOS Capture failed: %x"), result); return translate_ptp_result (result); } GP_LOG_D ("result is %d", result); switch (result) { case 0: /* OK */ break; case 1: gp_context_error (context, _("Canon EOS Capture failed to release: Perhaps no focus?")); return GP_ERROR; case 3: gp_context_error (context, _("Canon EOS Capture failed to release: Perhaps mirror up?")); return GP_ERROR; case 7: gp_context_error (context, _("Canon EOS Capture failed to release: Perhaps no more memory on card?")); return GP_ERROR_NO_MEMORY; case 8: gp_context_error (context, _("Canon EOS Capture failed to release: Card read-only?")); return GP_ERROR_NO_MEMORY; default:gp_context_error (context, _("Canon EOS Capture failed to release: Unknown error %d, please report."), result); return GP_ERROR; } } newobject = 0; memset (&oi, 0, sizeof(oi)); do { C_PTP_REP_MSG (ptp_check_eos_events (params), _("Canon EOS Get Changes failed")); while (ptp_get_one_eos_event (params, &entry)) { /* if we got at least one event from the last event polling, we reset our back_off_wait counter */ back_off_wait = 0; GP_LOG_D ("entry type %04x", entry.type); switch (entry.type) { case PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN: GP_LOG_D ("entry unknown: %s", entry.u.info); free (entry.u.info); continue; /* in loop ... do not poll while draining the queue */ case PTP_CANON_EOS_CHANGES_TYPE_OBJECTTRANSFER: GP_LOG_D ("Found new object! OID 0x%x, name %s", (unsigned int)entry.u.object.oid, entry.u.object.oi.Filename); newobject = entry.u.object.oid; memcpy (&oi, &entry.u.object.oi, sizeof(oi)); break; case PTP_CANON_EOS_CHANGES_TYPE_OBJECTREMOVED: GP_LOG_D ("Found removed object. OID 0x%x", (unsigned int)entry.u.object.oid); ptp_remove_object_from_cache(params, entry.u.object.oid); gp_filesystem_reset (camera->fs); break; case PTP_CANON_EOS_CHANGES_TYPE_OBJECTINFO: { PTPObject *ob; /* just add it to the filesystem, and return in CameraPath */ GP_LOG_D ("Found new object! OID 0x%x, name %s", (unsigned int)entry.u.object.oid, entry.u.object.oi.Filename); newobject = entry.u.object.oid; memcpy (&oi, &entry.u.object.oi, sizeof(oi)); ret = ptp_object_want (params, newobject, 0, &ob); if (ret != PTP_RC_OK) continue; strcpy (path->name, oi.Filename); sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx/",(unsigned long)oi.StorageID); get_folder_from_handle (camera, oi.StorageID, oi.ParentObject, path->folder); /* delete last / or we get confused later. */ path->folder[ strlen(path->folder)-1 ] = '\0'; gp_filesystem_append (camera->fs, path->folder, path->name, context); break;/* for RAW+JPG mode capture, we just return the first image for now, and * let wait_for_event get the rest. */ default: GP_LOG_D("unhandled eos change: %d\n", entry.type); break; } } if (newobject) break; } if (newobject) break; /* not really proven to help keep it on */ C_PTP_REP (ptp_canon_eos_keepdeviceon (params)); gp_context_idle (context); } while (waiting_for_timeout (&back_off_wait, capture_start, EOS_CAPTURE_TIMEOUT)); if (newobject == 0) return GP_ERROR; GP_LOG_D ("object has OFC 0x%x", oi.ObjectFormat); if (oi.StorageID) /* all done above */ return GP_OK; strcpy (path->folder,"/"); sprintf (path->name, "capt%04d.", capcnt++); CR (gp_file_new(&file)); if (oi.ObjectFormat == PTP_OFC_CANON_CRW || oi.ObjectFormat == PTP_OFC_CANON_CRW3) { strcat(path->name, "cr2"); gp_file_set_mime_type (file, GP_MIME_CRW); } else { strcat(path->name, "jpg"); gp_file_set_mime_type (file, GP_MIME_JPEG); } gp_file_set_mtime (file, time(NULL)); GP_LOG_D ("trying to get object size=0x%lx", (unsigned long)oi.ObjectCompressedSize); C_PTP_REP (ptp_canon_eos_getpartialobject (params, newobject, 0, oi.ObjectCompressedSize, &ximage)); C_PTP_REP (ptp_canon_eos_transfercomplete (params, newobject)); ret = gp_file_set_data_and_size(file, (char*)ximage, oi.ObjectCompressedSize); if (ret != GP_OK) { gp_file_free (file); return ret; } ret = gp_filesystem_append(camera->fs, path->folder, path->name, context); if (ret != GP_OK) { gp_file_free (file); return ret; } ret = gp_filesystem_set_file_noop(camera->fs, path->folder, path->name, GP_FILE_TYPE_NORMAL, file, context); if (ret != GP_OK) { gp_file_free (file); return ret; } /* We have now handed over the file, disclaim responsibility by unref. */ gp_file_unref (file); return GP_OK; } static int camera_olympus_xml_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { uint16_t ret; int res; PTPParams *params = &camera->pl->params; GP_LOG_D ("olympus capture"); /* C_PTP (ptp_olympus_capture (params, 3)); */ C_PTP (ptp_generic_no_data (params, PTP_OC_OLYMPUS_Capture, 1, 3)); while (1) { PTPContainer event; ret = ptp_check_event(params); if (ret != PTP_RC_OK) break; event.Code = 0; while (ptp_get_one_event (params, &event)) { GP_LOG_D ("capture 1: got event 0x%x (param1=%x)", event.Code, event.Param1); if (event.Code == PTP_EC_Olympus_CaptureComplete) break; } if (event.Code == PTP_EC_Olympus_CaptureComplete) break; } /* C_PTP (ptp_olympus_capture (params, 0)); */ C_PTP (ptp_generic_no_data (params, PTP_OC_OLYMPUS_Capture, 1, 0)); /* 0x1a000002 object id */ while (1) { PTPContainer event; uint32_t assochandle = 0; ret = ptp_check_event(params); if (ret != PTP_RC_OK) break; event.Code = 0; while (ptp_get_one_event (params, &event)) { GP_LOG_D ("capture 2: got event 0x%x (param1=%x)", event.Code, event.Param1); if (event.Code == PTP_EC_RequestObjectTransfer) { PTPObjectInfo oi; C_PTP_MSG (ptp_getobjectinfo (params, event.Param1, &oi), "capture 2: no objectinfo for 0x%x", event.Param1); debug_objectinfo(params, event.Param1, &oi); /* We get usually * 0x1a000001 - folder * 0x1a000002 - image within that folder */ /* remember for later deletion */ if (oi.ObjectFormat == PTP_OFC_Association) { assochandle = event.Param1; continue; } if (oi.ObjectFormat == PTP_OFC_EXIF_JPEG) { static int capcnt = 0; sprintf (path->folder,"/"); sprintf (path->name, "capt%04d.jpg", capcnt++); res = add_objectid_and_upload (camera, path, context, event.Param1, &oi); ret = ptp_deleteobject (params, event.Param1, PTP_OFC_EXIF_JPEG); if (ret != PTP_RC_OK) GP_LOG_E ("capture 2: delete image %08x, ret 0x%04x", event.Param1, ret); ret = ptp_deleteobject (params, assochandle, PTP_OFC_Association); if (ret != PTP_RC_OK) GP_LOG_E ("capture 2: delete folder %08x, ret 0x%04x", assochandle, ret); return res; } GP_LOG_E ("capture 2: unknown OFC 0x%04x for 0x%x", oi.ObjectFormat, event.Param1); } } } return GP_ERROR; } /* To use: * gphoto2 --set-config capture=on --config --capture-image * gphoto2 -f /store_80000001 -p 1 * will download a file called "VirtualObject" */ static int camera_canon_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { static int capcnt = 0; PTPObjectInfo oi; int found, ret, timeout, sawcapturecomplete = 0, viewfinderwason = 0; PTPParams *params = &camera->pl->params; uint32_t newobject = 0x0; PTPPropertyValue propval; PTPContainer event; char buf[1024]; int xmode = CANON_TRANSFER_CARD; struct timeval event_start; if (!ptp_operation_issupported(params, PTP_OC_CANON_InitiateCaptureInMemory)) { gp_context_error (context, _("Sorry, your Canon camera does not support Canon Capture initiation")); return GP_ERROR_NOT_SUPPORTED; } /* did not call --set-config capture=on, do it for user */ CR (camera_prepare_capture (camera, context)); if (!params->canon_event_mode) { propval.u16 = 0; ret = ptp_getdevicepropvalue(params, PTP_DPC_CANON_EventEmulateMode, &propval, PTP_DTC_UINT16); if (ret == PTP_RC_OK) params->canon_event_mode = propval.u16; } if (ptp_property_issupported(params, PTP_DPC_CANON_CaptureTransferMode)) { if ((GP_OK == gp_setting_get("ptp2","capturetarget",buf)) && !strcmp(buf,"sdram")) propval.u16 = xmode = CANON_TRANSFER_MEMORY; else propval.u16 = xmode = CANON_TRANSFER_CARD; if (xmode == CANON_TRANSFER_CARD) { PTPStorageIDs storageids; ret = ptp_getstorageids(params, &storageids); if (ret == PTP_RC_OK) { unsigned int k, stgcnt = 0; for (k=0;kcanon_viewfinder_on) { /* disable during capture ... reenable later on. */ C_PTP_REP_MSG (ptp_canon_viewfinderoff (params), _("Canon disable viewfinder failed")); viewfinderwason = 1; params->canon_viewfinder_on = 0; } C_PTP_REP_MSG (ptp_check_event (params), _("Canon Capture failed")); #if 0 /* FIXME: For now, to avoid flash during debug */ propval.u8 = 0; ret = ptp_setdevicepropvalue(params, PTP_DPC_CANON_FlashMode, &propval, PTP_DTC_UINT8); #endif C_PTP_REP_MSG (ptp_canon_initiatecaptureinmemory (params), _("Canon Capture failed")); sawcapturecomplete = 0; /* Checking events in stack. */ event_start = time_now(); found = FALSE; gp_port_get_timeout (camera->port, &timeout); CR (gp_port_set_timeout (camera->port, capture_timeout)); while (time_since (event_start) < capture_timeout) { gp_context_idle (context); /* Make sure we do not poll USB interrupts after the capture complete event. * MacOS libusb 1 has non-timing out interrupts so we must avoid event reads that will not * result in anything. */ ret = ptp_check_event (params); if (ret != PTP_RC_OK) break; if (!ptp_get_one_event (params, &event)) { /* FIXME: wait a bit? */ usleep(20*1000); continue; } GP_LOG_D ("Event: nparams=0x%X, code=0x%X, trans_id=0x%X, p1=0x%X, p2=0x%X, p3=0x%X", event.Nparam,event.Code,event.Transaction_ID, event.Param1, event.Param2, event.Param3); switch (event.Code) { case PTP_EC_ObjectRemoved: ptp_remove_object_from_cache(params, event.Param1); gp_filesystem_reset (camera->fs); break; case PTP_EC_ObjectAdded: { /* add newly created object to internal structures. this hopefully just is a new folder */ PTPObject *ob; GP_LOG_D ("Event ObjectAdded, object handle=0x%X.", newobject); ret = ptp_object_want (params, event.Param1, PTPOBJECT_OBJECTINFO_LOADED, &ob); if (ret != PTP_RC_OK) break; /* this might be just the folder add, ignore that. */ if (ob->oi.ObjectFormat == PTP_OFC_Association) { /* new directory ... mark fs as to be refreshed */ gp_filesystem_reset (camera->fs); /* FIXME: implement more lightweight folder add */ break; } else { /* new file */ newobject = event.Param1; /* FALLTHROUGH */ } /* FALLTHROUGH */ } case PTP_EC_CANON_RequestObjectTransfer: { int j; newobject = event.Param1; GP_LOG_D ("Event PTP_EC_CANON_RequestObjectTransfer, object handle=0x%X.", newobject); /* drain the event queue further */ for (j=0;j<2;j++) { ret = ptp_check_event (params); while (ptp_get_one_event (params, &event) && !sawcapturecomplete) { GP_LOG_D ("evdata: L=0x%X, C=0x%X, trans_id=0x%X, p1=0x%X, p2=0x%X, p3=0x%X", event.Nparam,event.Code,event.Transaction_ID, event.Param1, event.Param2, event.Param3); if (event.Code == PTP_EC_CaptureComplete) sawcapturecomplete = 1; } if (sawcapturecomplete) break; usleep(20*1000); } /* Marcus: Not sure if we really needs this. This refocuses the camera. ret = ptp_canon_reset_aeafawb(params,7); */ found = TRUE; break; } case PTP_EC_CaptureComplete: GP_LOG_D ("Event: Capture complete."); sawcapturecomplete = 1; break; default: GP_LOG_D ("Event unhandled: nparams=0x%X, code=0x%X, trans_id=0x%X, p1=0x%X, p2=0x%X, p3=0x%X", event.Nparam, event.Code, event.Transaction_ID, event.Param1, event.Param2, event.Param3 ); break; } if (found == TRUE) break; } CR (gp_port_set_timeout (camera->port, timeout)); /* Catch event, attempt 2 */ while (!sawcapturecomplete) { ret = ptp_check_event (params); if (ret != PTP_RC_OK) break; while (ptp_get_one_event (params, &event)) { if (event.Code==PTP_EC_CaptureComplete) { GP_LOG_D ("Event: capture complete(2)."); sawcapturecomplete = 1; break; } } /* FIXME: wait backoff */ GP_LOG_D ("Event: 0x%X (2)", event.Code); } if (!found) { GP_LOG_D ("ERROR: Capture timed out!"); return GP_ERROR_TIMEOUT; } if (viewfinderwason) { /* disable during capture ... reenable later on. */ viewfinderwason = 0; C_PTP_REP_MSG (ptp_canon_viewfinderon (params), _("Canon enable viewfinder failed")); params->canon_viewfinder_on = 1; } /* FIXME: handle multiple images (as in BurstMode) */ C_PTP (ptp_getobjectinfo (params, newobject, &oi)); if (oi.ParentObject != 0) { if (xmode != CANON_TRANSFER_CARD) { fprintf (stderr,"parentobject is 0x%x, but not in card mode?\n", oi.ParentObject); } CR (add_object (camera, newobject, context)); strcpy (path->name, oi.Filename); sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx/",(unsigned long)oi.StorageID); get_folder_from_handle (camera, oi.StorageID, oi.ParentObject, path->folder); /* delete last / or we get confused later. */ path->folder[ strlen(path->folder)-1 ] = '\0'; return gp_filesystem_append (camera->fs, path->folder, path->name, context); } else { if (xmode == CANON_TRANSFER_CARD) { fprintf (stderr,"parentobject is 0, but not in memory mode?\n"); } sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx",(unsigned long)oi.StorageID); sprintf (path->name, "capt%04d.jpg", capcnt++); return add_objectid_and_upload (camera, path, context, newobject, &oi); } } static int camera_sony_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { PTPParams *params = &camera->pl->params; PTPPropertyValue propval; PTPContainer event; PTPObjectInfo oi; uint32_t newobject = 0; static int capcnt = 0; int dual = 0; PTPDevicePropDesc dpd; struct timeval event_start; propval.u16 = 1; C_PTP (ptp_sony_setdevicecontrolvalueb (params, 0xD2C1, &propval, PTP_DTC_UINT16)); C_PTP (ptp_generic_getdevicepropdesc (params, PTP_DPC_CompressionSetting, &dpd)); GP_LOG_D ("dpd.CurrentValue.u8 = %x", dpd.CurrentValue.u8); GP_LOG_D ("dpd.FactoryDefaultValue.u8 = %x", dpd.FactoryDefaultValue.u8); if (dpd.CurrentValue.u8 == 0) dpd.CurrentValue.u8 = dpd.FactoryDefaultValue.u8; if (dpd.CurrentValue.u8 == 0x13) { GP_LOG_D ("expecting raw+jpeg capture"); dual = 1; } propval.u16 = 2; C_PTP (ptp_sony_setdevicecontrolvalueb (params, PTP_DPC_SONY_StillImage, &propval, PTP_DTC_UINT16)); event_start = time_now(); do { C_PTP (ptp_check_event (params)); if (ptp_get_one_event(params, &event)) { GP_LOG_D ("during event.code=%04x Param1=%08x", event.Code, event.Param1); if (event.Code == PTP_EC_Sony_ObjectAdded) { newobject = event.Param1; if (dual) ptp_add_event (params, &event); break; } } /* 30 seconds are maximum capture time currently, so use 30 seconds + 5 seconds image saving at most. */ } while (time_since (event_start) < 35000); propval.u16 = 1; C_PTP (ptp_sony_setdevicecontrolvalueb (params, 0xD2C2, &propval, PTP_DTC_UINT16)); propval.u16 = 1; C_PTP (ptp_sony_setdevicecontrolvalueb (params, 0xD2C1, &propval, PTP_DTC_UINT16)); if (!newobject) { GP_LOG_E("no object found during event polling. try the 0xffffc001 object id"); newobject = 0xffffc001; } /* FIXME: handle multiple images (as in BurstMode) */ C_PTP (ptp_getobjectinfo (params, newobject, &oi)); sprintf (path->folder,"/"); if (oi.ObjectFormat == PTP_OFC_SONY_RAW) sprintf (path->name, "capt%04d.arw", capcnt++); else sprintf (path->name, "capt%04d.jpg", capcnt++); return add_objectid_and_upload (camera, path, context, newobject, &oi); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { PTPContainer event; PTPParams *params = &camera->pl->params; uint32_t newobject = 0x0; int done,tries; PTPObjectHandles beforehandles; /* adjust if we ever do sound or movie capture */ if (type != GP_CAPTURE_IMAGE) return GP_ERROR_NOT_SUPPORTED; SET_CONTEXT_P(params, context); camera->pl->checkevents = TRUE; /* first, draing existing events if the caller did not do it. */ while (ptp_get_one_event(params, &event)) { GP_LOG_D ("draining unhandled event Code %04x, Param 1 %08x", event.Code, event.Param1); } /* Do not use the enhanced capture methods for now. */ if ((params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) && NIKON_BROKEN_CAP(params)) goto fallback; /* 3rd gen style nikon capture, can do both sdram and card */ if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) && ptp_operation_issupported(params, PTP_OC_NIKON_InitiateCaptureRecInMedia) ) { char buf[1024]; int sdram = 0; if ((GP_OK != gp_setting_get("ptp2","capturetarget",buf)) || !strcmp(buf,"sdram")) sdram = 1; return camera_nikon_capture (camera, type, path, 1, sdram, context); } /* 1st gen, 2nd gen nikon capture only go to SDRAM */ if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) && (ptp_operation_issupported(params, PTP_OC_NIKON_Capture) || ptp_operation_issupported(params, PTP_OC_NIKON_AfCaptureSDRAM) )) { int ret = GP_ERROR_NOT_SUPPORTED; char buf[1024]; if ((GP_OK != gp_setting_get("ptp2","capturetarget",buf)) || !strcmp(buf,"sdram")) ret = camera_nikon_capture (camera, type, path, 1, 1, context); if (ret != GP_ERROR_NOT_SUPPORTED) return ret; /* for CARD capture and unsupported combinations, fall through */ } if (params->device_flags & DEVICE_FLAG_OLYMPUS_XML_WRAPPED) return camera_olympus_xml_capture (camera, type, path, context); if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_InitiateCaptureInMemory) ) { return camera_canon_capture (camera, type, path, context); } if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteRelease) ) { return camera_canon_eos_capture (camera, type, path, context); } if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_SONY) && ptp_operation_issupported(params, PTP_OC_SONY_SetControlDeviceB) ) { return camera_sony_capture (camera, type, path, context); } if (!ptp_operation_issupported(params,PTP_OC_InitiateCapture)) { gp_context_error(context, _("Sorry, your camera does not support generic capture")); return GP_ERROR_NOT_SUPPORTED; } fallback: /* broken capture ... we detect what was captured using added objects * via the getobjecthandles array. here get the before state */ if ((params->deviceinfo.VendorExtensionID==PTP_VENDOR_NIKON) && NIKON_BROKEN_CAP(params)) C_PTP (ptp_getobjecthandles (params, PTP_HANDLER_SPECIAL, 0x000000, 0x000000, &beforehandles)); /* A capture may take longer than the standard 8 seconds. * The G5 for instance does, or in dark rooms ... * Even 16 seconds might not be enough. (Marcus) */ /* ptp_initiatecapture() returns immediately, only the event * indicating that the capure has been completed may occur after * few seconds. moving down the code. (kil3r) */ C_PTP_REP (ptp_initiatecapture(params, 0x00000000, 0x00000000)); CR (gp_port_set_timeout (camera->port, capture_timeout)); /* A word of comments is worth here. * After InitiateCapture camera should report with ObjectAdded event * all newly created objects. However there might be more than one * newly created object. There a two scenarios here, which may occur * both at the time. * 1) InitiateCapture trigers capture of more than one object if the * camera is in burst mode for example. * 2) InitiateCapture creates a number of objects, but not all * objects represents images. This happens when the camera creates a * folder for newly captured image(s). This may happen with the * fresh, formatted flashcard or in burs mode if the camera is * configured to create a dedicated folder for a burst of pictures. * The newly created folder (an association object) is reported * before the images that are stored after its creation. * Thus we set CameraFilePath to the path to last object reported by * the camera. */ /* The Nikon way: Does not send AddObject event ... so try to detect it by checking what objects * were added. */ if ((params->deviceinfo.VendorExtensionID==PTP_VENDOR_NIKON) && NIKON_BROKEN_CAP(params)) { PTPObjectHandles handles; tries = 5; GP_LOG_D ("PTPBUG_NIKON_BROKEN_CAPTURE bug workaround"); while (tries--) { unsigned int i; uint16_t ret = ptp_getobjecthandles (params, PTP_HANDLER_SPECIAL, 0x000000, 0x000000, &handles); if (ret != PTP_RC_OK) break; /* if (handles.n == params->handles.n) * continue; * While this is a potential optimization, lets skip it for now. */ newobject = 0; for (i=0;ioi.ObjectFormat == PTP_OFC_Association) continue; newobject = handles.Handler[i]; /* we found a new file */ break; } free (handles.Handler); if (newobject) break; C_PTP_REP (ptp_check_event (params)); sleep(1); } free (beforehandles.Handler); if (!newobject) GP_LOG_D ("PTPBUG_NIKON_BROKEN_CAPTURE no new file found after 5 seconds?!?"); goto out; } CR (gp_port_set_timeout (camera->port, normal_timeout)); /* The standard defined way ... wait for some capture related events. */ /* The Nikon 1 series emits ObjectAdded occasionaly after * the CaptureComplete event, while others do it the other way * round. Handle that case with some bitmask. */ done = 0; tries = 20; while (done != 3) { uint16_t ret; C_PTP_REP (ptp_wait_event (params)); if (!ptp_get_one_event(params, &event)) { usleep(1000); if (done & 1) /* only wait 20 rounds for objectadded */ if (!tries--) break; continue; } GP_LOG_D ("event.Code is %04x / param %08x", event.Code, event.Param1); switch (event.Code) { case PTP_EC_ObjectRemoved: ptp_remove_object_from_cache(params, event.Param1); gp_filesystem_reset (camera->fs); break; case PTP_EC_ObjectAdded: { PTPObject *ob; /* add newly created object to internal structures */ ret = ptp_object_want (params, event.Param1, PTPOBJECT_OBJECTINFO_LOADED, &ob); if (ret != PTP_RC_OK) break; /* this might be just the folder add, ignore that. */ if (ob->oi.ObjectFormat == PTP_OFC_Association) { /* new directory ... mark fs as to be refreshed */ gp_filesystem_reset (camera->fs); } else { newobject = event.Param1; done |= 2; if (NO_CAPTURE_COMPLETE(params)) done|=1; } break; } case PTP_EC_CaptureComplete: done |= 1; break; default: GP_LOG_D ("Received event 0x%04x, ignoring (please report).",event.Code); /* done = 1; */ break; } } out: /* clear path, so we get defined results even without object info */ path->name[0]='\0'; path->folder[0]='\0'; if (newobject != 0) { PTPObject *ob; C_PTP_REP (ptp_object_want (params, newobject, PTPOBJECT_OBJECTINFO_LOADED, &ob)); strcpy (path->name, ob->oi.Filename); sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx/",(unsigned long)ob->oi.StorageID); get_folder_from_handle (camera, ob->oi.StorageID, ob->oi.ParentObject, path->folder); /* delete last / or we get confused later. */ path->folder[ strlen(path->folder)-1 ] = '\0'; return gp_filesystem_append (camera->fs, path->folder, path->name, context); } return GP_ERROR; } static int camera_trigger_capture (Camera *camera, GPContext *context) { PTPParams *params = &camera->pl->params; uint16_t ret; char buf[1024]; int sdram = 0; SET_CONTEXT_P(params, context); /* If there is no capturetarget set yet, the default is "sdram" */ if (GP_OK != gp_setting_get("ptp2","capturetarget",buf)) strcpy (buf, "sdram"); if (!strcmp(buf,"sdram")) sdram = 1; GP_LOG_D ("Triggering capture to %s", buf); /* Nilon V and J seem to like that */ if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) && !params->controlmode && ptp_operation_issupported(params,PTP_OC_NIKON_SetControlMode) ) { ret = ptp_nikon_setcontrolmode (params, 1); /* FIXME: PTP_RC_NIKON_ChangeCameraModeFailed does not seem to be problematic */ if (ret != PTP_RC_NIKON_ChangeCameraModeFailed) C_PTP_REP (ret); params->controlmode = 1; } /* On Nikon 1 series, the liveview must be enabled before capture works */ if (NIKON_1(params)) { ret = ptp_nikon_start_liveview (params); if ((ret != PTP_RC_OK) && (ret != PTP_RC_DeviceBusy)) C_PTP_REP_MSG(ret, _("Failed to enable liveview on a Nikon 1, but it is required for capture")); /* OK or busy, try to proceed ... */ } /* Nikon 2 */ if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) && ptp_operation_issupported(params, PTP_OC_NIKON_InitiateCaptureRecInMedia) ) { /* If in liveview mode, we have to run non-af capture */ int inliveview = 0; PTPPropertyValue propval; C_PTP_REP (ptp_check_event (params)); while (PTP_RC_DeviceBusy == ptp_nikon_device_ready (params)); C_PTP_REP (ptp_check_event (params)); if (ptp_property_issupported (params, PTP_DPC_NIKON_LiveViewStatus)) { ret = ptp_getdevicepropvalue (params, PTP_DPC_NIKON_LiveViewStatus, &propval, PTP_DTC_UINT8); if (ret == PTP_RC_OK) inliveview = propval.u8; } do { ret = ptp_nikon_capture2 (params, !inliveview, sdram); if ((ret != PTP_RC_OK) && (ret != PTP_RC_DeviceBusy)) return translate_ptp_result (ret); if (ret == PTP_RC_DeviceBusy) usleep(2000); /* sleep a bit perhaps ? or check events? */ } while (ret == PTP_RC_DeviceBusy); while (PTP_RC_DeviceBusy == ptp_nikon_device_ready (params)) { gp_context_idle (context); /* do not drain all of the DSLRs compute time */ usleep(100*1000); /* 0.1 seconds */ } return GP_OK; } /* Nikon */ if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) && (ptp_operation_issupported(params, PTP_OC_NIKON_Capture) || ptp_operation_issupported(params, PTP_OC_NIKON_AfCaptureSDRAM) ) && sdram ) { /* If in liveview mode, we have to run non-af capture */ int inliveview = 0; PTPPropertyValue propval; C_PTP_REP (ptp_check_event (params)); C_PTP_REP (nikon_wait_busy (params, 20, 1000)); C_PTP_REP (ptp_check_event (params)); if (ptp_property_issupported (params, PTP_DPC_NIKON_LiveViewStatus)) { ret = ptp_getdevicepropvalue (params, PTP_DPC_NIKON_LiveViewStatus, &propval, PTP_DTC_UINT8); if (ret == PTP_RC_OK) inliveview = propval.u8; } do { if (!inliveview && ptp_operation_issupported (params,PTP_OC_NIKON_AfCaptureSDRAM)) ret = ptp_nikon_capture_sdram (params); else ret = ptp_nikon_capture (params, 0xffffffff); if ((ret != PTP_RC_OK) && (ret != PTP_RC_DeviceBusy)) return translate_ptp_result (ret); } while (ret == PTP_RC_DeviceBusy); while (PTP_RC_DeviceBusy == ptp_nikon_device_ready (params)) { gp_context_idle (context); /* do not drain all of the DSLRs compute time */ usleep(100*1000); /* 0.1 seconds */ } return GP_OK; } /* Canon EOS */ /* Newer EOS starting with 100D, 1200D, 600D, 5d MarkII+, 60D, 70D, 6D ... and newer */ if ((params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteReleaseOn)) { int oneloop; if (!params->eos_captureenabled) camera_prepare_capture (camera, context); else CR( camera_canon_eos_update_capture_target(camera, context, -1)); /* Get the initial bulk set of event data, otherwise * capture might return busy. */ C_PTP (ptp_check_eos_events (params)); if (params->eos_camerastatus == 1) return GP_ERROR_CAMERA_BUSY; ret = GP_OK; /* half press now - initiate focusing and wait for result */ C_PTP_REP_MSG (ptp_canon_eos_remotereleaseon (params, 1, 0), _("Canon EOS Half-Press failed")); do { PTPCanon_changes_entry entry; int foundfocusinfo = 0; C_PTP_REP_MSG (ptp_check_eos_events (params), _("Canon EOS Get Changes failed")); oneloop = 0; while (ptp_get_one_eos_event (params, &entry)) { oneloop = 1; GP_LOG_D("focusing - read event type %d", entry.type); if (entry.type == PTP_CANON_EOS_CHANGES_TYPE_FOCUSINFO) { GP_LOG_D("focusinfo content: %s", entry.u.info); foundfocusinfo = 1; if (strstr(entry.u.info,"0000200")) { gp_context_error (context, _("Canon EOS Capture failed to release: Perhaps no focus?")); ret = GP_ERROR; } } } if (foundfocusinfo) break; } while (oneloop); if (ret != GP_OK) { C_PTP_REP_MSG (ptp_canon_eos_remotereleaseoff (params, 1), _("Canon EOS Half-Release failed")); return ret; } /* full press now */ C_PTP_REP_MSG (ptp_canon_eos_remotereleaseon (params, 2, 0), _("Canon EOS Full-Press failed")); /* no event check between */ /* full release now */ C_PTP_REP_MSG (ptp_canon_eos_remotereleaseoff (params, 2), _("Canon EOS Full-Release failed")); ptp_check_eos_events (params); /* half release now */ C_PTP_REP_MSG (ptp_canon_eos_remotereleaseoff (params, 1), _("Canon EOS Half-Release failed")); return GP_OK; } /* Slightly older EOS, EOS 400D */ if ((params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteRelease)) { uint32_t result; int tries = 10; if (!params->eos_captureenabled) camera_prepare_capture (camera, context); else CR( camera_canon_eos_update_capture_target(camera, context, -1)); /* Get the initial bulk set of event data, otherwise * capture might return busy. */ C_PTP (ptp_check_eos_events (params)); if (params->eos_camerastatus == 1) return GP_ERROR_CAMERA_BUSY; C_PTP_REP_MSG (ptp_canon_eos_capture (params, &result), _("Canon EOS Trigger Capture failed: 0x%x"), result); if ((result & 0x7000) == 0x2000) { /* also happened */ gp_context_error (context, _("Canon EOS Trigger Capture failed: 0x%x"), result); return translate_ptp_result (result); } GP_LOG_D ("result is %d", result); switch (result) { case 0: /* OK */ break; case 1: gp_context_error (context, _("Canon EOS Capture failed to release: Perhaps no focus?")); return GP_ERROR; case 3: gp_context_error (context, _("Canon EOS Capture failed to release: Perhaps mirror up?")); return GP_ERROR; case 7: gp_context_error (context, _("Canon EOS Capture failed to release: Perhaps no more memory on card?")); return GP_ERROR_NO_MEMORY; case 8: gp_context_error (context, _("Canon EOS Capture failed to release: Card read-only?")); return GP_ERROR_NO_MEMORY; default:gp_context_error (context, _("Canon EOS Capture failed to release: Unknown error %d, please report."), result); return GP_ERROR; } /* wait until camera reports busy ... */ do { ret = ptp_check_eos_events (params); if (ret != PTP_RC_OK) break; usleep(2000); GP_LOG_D ("eos_camerastatus is %d", params->eos_camerastatus); } while (tries-- && (params->eos_camerastatus != 1)); return GP_OK; } if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_InitiateCaptureInMemory) ) { uint16_t xmode; /*int viewfinderwason = 0;*/ PTPPropertyValue propval; if (!ptp_property_issupported(params, PTP_DPC_CANON_FlashMode)) { /* did not call --set-config capture=on, do it for user */ CR (camera_prepare_capture (camera, context)); if (!ptp_property_issupported(params, PTP_DPC_CANON_FlashMode)) { gp_context_error (context, _("Sorry, initializing your camera did not work. Please report this.")); return GP_ERROR_NOT_SUPPORTED; } } if (ptp_property_issupported(params, PTP_DPC_CANON_CaptureTransferMode)) { if (sdram) propval.u16 = xmode = CANON_TRANSFER_MEMORY; else propval.u16 = xmode = CANON_TRANSFER_CARD; if (xmode == CANON_TRANSFER_CARD) { PTPStorageIDs storageids; ret = ptp_getstorageids(params, &storageids); if (ret == PTP_RC_OK) { unsigned int k, stgcnt = 0; for (k=0;kcanon_viewfinder_on) { /* disable during capture ... reenable later on. */ C_PTP_REP_MSG (ptp_canon_viewfinderoff (params), _("Canon disable viewfinder failed")); /*viewfinderwason = 1;*/ params->canon_viewfinder_on = 0; } #if 0 /* FIXME: For now, to avoid flash during debug */ propval.u8 = 0; ret = ptp_setdevicepropvalue(params, PTP_DPC_CANON_FlashMode, &propval, PTP_DTC_UINT8); #endif while (1) { ret = ptp_canon_initiatecaptureinmemory (params); if (ret == PTP_RC_OK) break; if (ret == PTP_RC_DeviceBusy) { GP_LOG_D ("Canon Powershot busy ... retrying..."); gp_context_idle (context); ptp_check_event (params); usleep(10000); /* 10 ms ... fixme: perhaps experimental backoff? */ continue; } C_PTP_REP_MSG (ret, _("Canon Capture failed")); } GP_LOG_D ("Canon Powershot capture triggered..."); return GP_OK; } #if 0 if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteRelease) ) { return camera_canon_eos_capture (camera, type, path, context); } #endif if (!ptp_operation_issupported(params,PTP_OC_InitiateCapture)) { gp_context_error(context, _("Sorry, your camera does not support generic capture")); return GP_ERROR_NOT_SUPPORTED; } C_PTP_REP (ptp_initiatecapture(params, 0x00000000, 0x00000000)); return GP_OK; } static int camera_wait_for_event (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context) { PTPContainer event; PTPParams *params = &camera->pl->params; uint32_t newobject = 0x0; CameraFilePath *path; static int capcnt = 0; uint16_t ret; struct timeval event_start; CameraFile *file; char *ximage; int back_off_wait = 0; SET_CONTEXT(camera, context); GP_LOG_D ("waiting for events timeout %d ms", timeout); memset (&event, 0, sizeof(event)); *eventtype = GP_EVENT_TIMEOUT; *eventdata = NULL; if (params->device_flags & DEVICE_FLAG_OLYMPUS_XML_WRAPPED) { GP_LOG_D ("olympus setcameracontrolmode 2\n"); C_PTP_REP (ptp_olympus_setcameracontrolmode (params, 2)); } event_start = time_now(); if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteRelease) ) { if (!params->eos_captureenabled) camera_prepare_capture (camera, context); do { PTPCanon_changes_entry entry; /* keep device alive */ C_PTP (ptp_canon_eos_keepdeviceon (params)); C_PTP_REP_MSG (ptp_check_eos_events (params), _("Canon EOS Get Changes failed")); while (ptp_get_one_eos_event (params, &entry)) { back_off_wait = 0; GP_LOG_D ("entry type %04x", entry.type); switch (entry.type) { case PTP_CANON_EOS_CHANGES_TYPE_OBJECTTRANSFER: GP_LOG_D ("Found new object! OID 0x%x, name %s", (unsigned int)entry.u.object.oid, entry.u.object.oi.Filename); free (entry.u.object.oi.Filename); newobject = entry.u.object.oid; C_MEM (path = malloc(sizeof(CameraFilePath))); path->name[0]='\0'; strcpy (path->folder,"/"); ret = gp_file_new(&file); if (ret!=GP_OK) return ret; sprintf (path->name, "capt%04d.", capcnt++); if ((entry.u.object.oi.ObjectFormat == PTP_OFC_CANON_CRW) || (entry.u.object.oi.ObjectFormat == PTP_OFC_CANON_CRW3)) { strcat(path->name, "cr2"); gp_file_set_mime_type (file, GP_MIME_CRW); } else { strcat(path->name, "jpg"); gp_file_set_mime_type (file, GP_MIME_JPEG); } gp_file_set_mtime (file, time(NULL)); GP_LOG_D ("trying to get object size=0x%lx", (unsigned long)entry.u.object.oi.ObjectCompressedSize); C_PTP_REP (ptp_canon_eos_getpartialobject (params, newobject, 0, entry.u.object.oi.ObjectCompressedSize, (unsigned char**)&ximage)); C_PTP_REP (ptp_canon_eos_transfercomplete (params, newobject)); ret = gp_file_set_data_and_size(file, (char*)ximage, entry.u.object.oi.ObjectCompressedSize); if (ret != GP_OK) { gp_file_free (file); return ret; } ret = gp_filesystem_append(camera->fs, path->folder, path->name, context); if (ret != GP_OK) { gp_file_free (file); return ret; } ret = gp_filesystem_set_file_noop(camera->fs, path->folder, path->name, GP_FILE_TYPE_NORMAL, file, context); if (ret != GP_OK) { gp_file_free (file); return ret; } *eventtype = GP_EVENT_FILE_ADDED; *eventdata = path; /* We have now handed over the file, disclaim responsibility by unref. */ gp_file_unref (file); return GP_OK; case PTP_CANON_EOS_CHANGES_TYPE_OBJECTINFO: /* just add it to the filesystem, and return in CameraPath */ GP_LOG_D ("Found new objectinfo! OID 0x%x, name %s", (unsigned int)entry.u.object.oid, entry.u.object.oi.Filename); newobject = entry.u.object.oid; add_object (camera, newobject, context); C_MEM (path = malloc(sizeof(CameraFilePath))); strcpy (path->name, entry.u.object.oi.Filename); free (entry.u.object.oi.Filename); sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx/",(unsigned long)entry.u.object.oi.StorageID); get_folder_from_handle (camera, entry.u.object.oi.StorageID, entry.u.object.oi.ParentObject, path->folder); /* delete last / or we get confused later. */ path->folder[ strlen(path->folder)-1 ] = '\0'; gp_filesystem_append (camera->fs, path->folder, path->name, context); *eventtype = GP_EVENT_FILE_ADDED; *eventdata = path; return GP_OK; case PTP_CANON_EOS_CHANGES_TYPE_PROPERTY: *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = malloc(strlen("PTP Property 0123 changed")+1)); sprintf (*eventdata, "PTP Property %04x changed", entry.u.propid); return GP_OK; case PTP_CANON_EOS_CHANGES_TYPE_CAMERASTATUS: /* if we do capture stuff, camerastatus will turn to 0 when done */ *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = malloc(strlen("Camera Status 123456789012345")+1)); sprintf (*eventdata, "Camera Status %d", entry.u.status); return GP_OK; case PTP_CANON_EOS_CHANGES_TYPE_FOCUSINFO: *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = malloc(strlen("Focus Info 12345678901234567890123456789")+1)); sprintf (*eventdata, "Focus Info %s", entry.u.info); break; case PTP_CANON_EOS_CHANGES_TYPE_FOCUSMASK: *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = malloc(strlen("Focus Mask 12345678901234567890123456789")+1)); sprintf (*eventdata, "Focus Mask %s", entry.u.info); break; case PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN: /* only return if interesting stuff happened */ if (entry.u.info) { *eventtype = GP_EVENT_UNKNOWN; *eventdata = entry.u.info; /* take over the allocated string allocation ownership */ return GP_OK; } /* continue otherwise */ break; case PTP_CANON_EOS_CHANGES_TYPE_OBJECTREMOVED: ptp_remove_object_from_cache(params, entry.u.object.oid); gp_filesystem_reset (camera->fs); *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = malloc(strlen("Object Removed")+1)); sprintf (*eventdata, "ObjectRemoved"); return GP_OK; default: GP_LOG_D ("Unhandled EOS event 0x%04x", entry.type); break; } } gp_context_idle (context); } while (waiting_for_timeout (&back_off_wait, event_start, timeout)); *eventtype = GP_EVENT_TIMEOUT; return GP_OK; } if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_CheckEvent) ) { while (1) { C_PTP_REP (ptp_check_event (params)); if (ptp_get_one_event(params, &event)) { GP_LOG_D ("canon event: nparam=0x%X, C=0x%X, trans_id=0x%X, p1=0x%X, p2=0x%X, p3=0x%X", event.Nparam,event.Code,event.Transaction_ID, event.Param1, event.Param2, event.Param3); switch (event.Code) { case PTP_EC_CANON_RequestObjectTransfer: { PTPObjectInfo oi; newobject = event.Param1; GP_LOG_D ("PTP_EC_CANON_RequestObjectTransfer, object handle=0x%X.",newobject); /* FIXME: handle multiple images (as in BurstMode) */ C_PTP (ptp_getobjectinfo (params, newobject, &oi)); if (oi.ParentObject != 0) { CR (add_object (camera, newobject, context)); C_MEM (path = malloc (sizeof(CameraFilePath))); strcpy (path->name, oi.Filename); sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx/",(unsigned long)oi.StorageID); get_folder_from_handle (camera, oi.StorageID, oi.ParentObject, path->folder); /* delete last / or we get confused later. */ path->folder[ strlen(path->folder)-1 ] = '\0'; gp_filesystem_append (camera->fs, path->folder, path->name, context); } else { C_MEM (path = malloc (sizeof(CameraFilePath))); sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx",(unsigned long)oi.StorageID); sprintf (path->name, "capt%04d.jpg", capcnt++); add_objectid_and_upload (camera, path, context, newobject, &oi); } *eventdata = path; *eventtype = GP_EVENT_FILE_ADDED; return GP_OK; } case PTP_EC_CANON_ShutterButtonPressed0: case PTP_EC_CANON_ShutterButtonPressed1: { C_MEM (path = malloc(sizeof(CameraFilePath))); ret = camera_canon_capture (camera, GP_CAPTURE_IMAGE, path, context); if (ret != GP_OK) { free (path); break; } *eventdata = path; *eventtype = GP_EVENT_FILE_ADDED; return GP_OK; } default: break; } goto handleregular; } if (time_since (event_start) >= timeout) break; gp_context_idle (context); } *eventtype = GP_EVENT_TIMEOUT; return GP_OK; } if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) && ptp_operation_issupported(params, PTP_OC_NIKON_CheckEvent) ) { do { C_PTP_REP (ptp_check_event (params)); while (ptp_get_one_event (params, &event)) { back_off_wait = 0; GP_LOG_D ("event.Code is %x / param %lx", event.Code, (unsigned long)event.Param1); switch (event.Code) { case PTP_EC_ObjectAdded: { PTPObject *ob; uint16_t ofc; if (!event.Param1 || (event.Param1 == 0xffff0001)) goto downloadnow; #if 0 /* if we have the object already loaded, no need to add it here */ /* but in dual mode capture at empty startup we can * encounter that the second image is not loaded */ if (PTP_RC_OK == ptp_object_find(params, event.Param1, &ob)) continue; #endif ret = ptp_object_want (params, event.Param1, PTPOBJECT_OBJECTINFO_LOADED, &ob); if (ret != PTP_RC_OK) { *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = strdup ("object added not found (already deleted)")); break; } debug_objectinfo(params, event.Param1, &ob->oi); C_MEM (path = malloc(sizeof(CameraFilePath))); path->name[0]='\0'; path->folder[0]='\0'; ofc = ob->oi.ObjectFormat; /* ob might be invalidated by get_folder_from_handle */ if (ob->oi.StorageID == 0) { /* We would always get the same filename, * which will confuse the frontends */ if (strstr(ob->oi.Filename,".NEF")) sprintf (path->name, "capt%04d.nef", capcnt++); else sprintf (path->name, "capt%04d.jpg", capcnt++); free (ob->oi.Filename); C_MEM (ob->oi.Filename = strdup (path->name)); strcpy (path->folder,"/"); goto downloadnow; } else { strcpy (path->name, ob->oi.Filename); sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx/",(unsigned long)ob->oi.StorageID); get_folder_from_handle (camera, ob->oi.StorageID, ob->oi.ParentObject, path->folder); path->folder[ strlen(path->folder)-1 ] = '\0'; } /* ob pointer can be invalid now! */ /* delete last / or we get confused later. */ if (ofc == PTP_OFC_Association) { /* new folder! */ *eventtype = GP_EVENT_FOLDER_ADDED; *eventdata = path; gp_filesystem_reset (camera->fs); /* FIXME: implement more lightweight folder add */ /* if this was the last current event ... stop and return the folder add */ return GP_OK; } else { CR (gp_filesystem_append (camera->fs, path->folder, path->name, context)); *eventtype = GP_EVENT_FILE_ADDED; *eventdata = path; return GP_OK; } break; } case PTP_EC_Nikon_ObjectAddedInSDRAM: { PTPObjectInfo oi; downloadnow: newobject = event.Param1; if (!newobject) newobject = 0xffff0001; ret = ptp_getobjectinfo (params, newobject, &oi); if (ret != PTP_RC_OK) continue; debug_objectinfo(params, newobject, &oi); C_MEM (path = malloc(sizeof(CameraFilePath))); path->name[0]='\0'; strcpy (path->folder,"/"); ret = gp_file_new(&file); if (ret!=GP_OK) return ret; if (oi.ObjectFormat != PTP_OFC_EXIF_JPEG) { GP_LOG_D ("raw? ofc is 0x%04x, name is %s", oi.ObjectFormat,oi.Filename); sprintf (path->name, "capt%04d.nef", capcnt++); gp_file_set_mime_type (file, "image/x-nikon-nef"); /* FIXME */ } else { sprintf (path->name, "capt%04d.jpg", capcnt++); gp_file_set_mime_type (file, GP_MIME_JPEG); } gp_file_set_mtime (file, time(NULL)); GP_LOG_D ("trying to get object size=0x%lx", (unsigned long)oi.ObjectCompressedSize); C_PTP_REP (ptp_getobject (params, newobject, (unsigned char**)&ximage)); ret = gp_file_set_data_and_size(file, (char*)ximage, oi.ObjectCompressedSize); if (ret != GP_OK) { gp_file_free (file); return ret; } ret = gp_filesystem_append(camera->fs, path->folder, path->name, context); if (ret != GP_OK) { gp_file_free (file); return ret; } ret = gp_filesystem_set_file_noop(camera->fs, path->folder, path->name, GP_FILE_TYPE_NORMAL, file, context); if (ret != GP_OK) { gp_file_free (file); return ret; } *eventtype = GP_EVENT_FILE_ADDED; *eventdata = path; /* We have now handed over the file, disclaim responsibility by unref. */ gp_file_unref (file); return GP_OK; } case PTP_EC_Nikon_CaptureCompleteRecInSdram: case PTP_EC_CaptureComplete: if (params->inliveview) { GP_LOG_D ("Capture complete ... restarting liveview"); ret = ptp_nikon_start_liveview (params); } *eventtype = GP_EVENT_CAPTURE_COMPLETE; *eventdata = NULL; return GP_OK; case PTP_EC_DevicePropChanged: *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = malloc(strlen("PTP Property 0123 changed")+1)); sprintf (*eventdata, "PTP Property %04x changed", event.Param1); return GP_OK; /* as we can read multiple events we should retrieve a good one if possible * and not a random one.*/ case PTP_EC_ObjectRemoved: ptp_remove_object_from_cache(params, event.Param1); gp_filesystem_reset (camera->fs); *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = malloc(strlen("PTP ObjectRemoved, Param1 01234567")+1)); sprintf (*eventdata, "PTP ObjectRemoved, Param1 %08x", event.Param1); break; default: *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = malloc(strlen("PTP Event 0123, Param1 01234567")+1)); sprintf (*eventdata, "PTP Event %04x, Param1 %08x", event.Code, event.Param1); return GP_OK; } } gp_context_idle (context); } while (waiting_for_timeout (&back_off_wait, event_start, timeout)); *eventtype = GP_EVENT_TIMEOUT; return GP_OK; } C_PTP_REP (ptp_check_event(params)); if (!ptp_get_one_event (params, &event)) { /* FIXME: Might be another error, but usually is a timeout */ GP_LOG_D ("no events received."); *eventtype = GP_EVENT_TIMEOUT; return GP_OK; } GP_LOG_D ("code=0x%04x, param1 0x%08x", event.Code, event.Param1 ); handleregular: if (params->deviceinfo.VendorExtensionID == PTP_VENDOR_SONY) { switch (event.Code) { case PTP_EC_Sony_ObjectAdded: { PTPObjectInfo oi; C_MEM (path = malloc(sizeof(CameraFilePath))); C_PTP (ptp_getobjectinfo (params, event.Param1, &oi)); sprintf (path->folder,"/"); if (oi.ObjectFormat == PTP_OFC_SONY_RAW) sprintf (path->name, "capt%04d.arw", capcnt++); else sprintf (path->name, "capt%04d.jpg", capcnt++); CR (add_objectid_and_upload (camera, path, context, event.Param1, &oi)); *eventtype = GP_EVENT_FILE_ADDED; *eventdata = path; return GP_OK; } case PTP_EC_Sony_PropertyChanged: /* same as DevicePropChanged, just go there */ event.Code = PTP_EC_DevicePropChanged; break; } /*fallthrough*/ } switch (event.Code) { case PTP_EC_CaptureComplete: *eventtype = GP_EVENT_CAPTURE_COMPLETE; *eventdata = NULL; break; case PTP_EC_ObjectAdded: { PTPObject *ob; uint16_t ofc; C_MEM (path = malloc(sizeof(CameraFilePath))); path->name[0]='\0'; path->folder[0]='\0'; C_PTP_REP (ptp_object_want (params, event.Param1, PTPOBJECT_OBJECTINFO_LOADED, &ob)); strcpy (path->name, ob->oi.Filename); sprintf (path->folder,"/"STORAGE_FOLDER_PREFIX"%08lx/",(unsigned long)ob->oi.StorageID); ofc = ob->oi.ObjectFormat; get_folder_from_handle (camera, ob->oi.StorageID, ob->oi.ParentObject, path->folder); /* ob could be invalid now, reload it or dont use it... */ /* delete last / or we get confused later. */ path->folder[ strlen(path->folder)-1 ] = '\0'; if (ofc == PTP_OFC_Association) { /* new folder! */ *eventtype = GP_EVENT_FOLDER_ADDED; *eventdata = path; gp_filesystem_reset (camera->fs); /* FIXME: implement more lightweight folder add */ } else { CR (gp_filesystem_append (camera->fs, path->folder, path->name, context)); *eventtype = GP_EVENT_FILE_ADDED; *eventdata = path; } break; } case PTP_EC_DevicePropChanged: *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = malloc(strlen("PTP Property 0123 changed")+1)); sprintf (*eventdata, "PTP Property %04x changed", event.Param1); break; case PTP_EC_ObjectRemoved: ptp_remove_object_from_cache(params, event.Param1); gp_filesystem_reset (camera->fs); *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = malloc(strlen("PTP ObjectRemoved, Param1 01234567")+1)); sprintf (*eventdata, "PTP ObjectRemoved, Param1 %08x", event.Param1); break; default: *eventtype = GP_EVENT_UNKNOWN; C_MEM (*eventdata = malloc(strlen("PTP Event 0123, Param1 01234567")+1)); sprintf (*eventdata, "PTP Event %04x, Param1 %08x", event.Code, event.Param1); break; } return GP_OK; } static int _value_to_str(PTPPropertyValue *data, uint16_t dt, char *txt, int spaceleft) { int n; char *origtxt = txt; if (dt == PTP_DTC_STR) return snprintf (txt, spaceleft, "'%s'", data->str); if (dt & PTP_DTC_ARRAY_MASK) { unsigned int i; n = snprintf (txt, spaceleft, "a[%d] ", data->a.count); if (n >= spaceleft) return 0; spaceleft -= n; txt += n; for ( i=0; ia.count; i++) { n = _value_to_str(&data->a.v[i], dt & ~PTP_DTC_ARRAY_MASK, txt, spaceleft); if (n >= spaceleft) return 0; spaceleft -= n; txt += n; if (i!=data->a.count-1) { n = snprintf (txt, spaceleft, ","); if (n >= spaceleft) return 0; spaceleft -= n; txt += n; } } return txt - origtxt; } else { switch (dt) { case PTP_DTC_UNDEF: return snprintf (txt, spaceleft, "Undefined"); case PTP_DTC_INT8: return snprintf (txt, spaceleft, "%d", data->i8); case PTP_DTC_UINT8: return snprintf (txt, spaceleft, "%u", data->u8); case PTP_DTC_INT16: return snprintf (txt, spaceleft, "%d", data->i16); case PTP_DTC_UINT16: return snprintf (txt, spaceleft, "%u", data->u16); case PTP_DTC_INT32: return snprintf (txt, spaceleft, "%d", data->i32); case PTP_DTC_UINT32: return snprintf (txt, spaceleft, "%u", data->u32); case PTP_DTC_INT64: return snprintf (txt, spaceleft, "%lu", data->u64); case PTP_DTC_UINT64: return snprintf (txt, spaceleft, "%ld", data->i64); /* PTP_DTC_INT128 PTP_DTC_UINT128 */ default: return snprintf (txt, spaceleft, "Unknown %x", dt); } } return 0; } static const char * _get_getset(uint8_t gs) { switch (gs) { case PTP_DPGS_Get: return N_("read only"); case PTP_DPGS_GetSet: return N_("readwrite"); default: return N_("Unknown"); } return N_("Unknown"); } #if 0 /* leave out ... is confusing -P downloads */ #pragma pack(1) struct canon_theme_entry { uint16_t unknown1; uint32_t offset; uint32_t length; uint8_t name[8]; char unknown2[8]; }; static int canon_theme_get (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = (Camera*)data; PTPParams *params = &camera->pl->params; unsigned char *xdata; unsigned int size; int i; struct canon_theme_entry *ent; SET_CONTEXT(camera, context); C_PTP_REP (ptp_canon_get_customize_data (params, 1, &xdata, &size)); C_PARAMS (size >= 42+sizeof(struct canon_theme_entry)*5); ent = (struct canon_theme_entry*)(xdata+42); for (i=0;i<5;i++) { fprintf(stderr,"entry %d: unknown1 = %x\n", i, ent[i].unknown1); fprintf(stderr,"entry %d: off = %d\n", i, ent[i].offset); fprintf(stderr,"entry %d: len = %d\n", i, ent[i].length); fprintf(stderr,"entry %d: name = %s\n", i, ent[i].name); } CR (gp_file_set_data_and_size (file, (char*)xdata, size)); return (GP_OK); } static int canon_theme_put (CameraFilesystem *fs, const char *folder, CameraFile *file, void *data, GPContext *context) { /* not yet */ return (GP_OK); } #endif static int nikon_curve_get (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = (Camera*)data; PTPParams *params = &camera->pl->params; unsigned char *xdata; unsigned int size; int n; PTPNIKONCurveData *tonecurve; char *ntcfile; char *charptr; double *doubleptr; ((PTPData *) camera->pl->params.data)->context = context; SET_CONTEXT(camera, context); C_PTP_REP (ptp_nikon_curve_download (params, &xdata, &size)); tonecurve = (PTPNIKONCurveData *) xdata; C_MEM (ntcfile = malloc(2000)); memcpy(ntcfile,"\x9d\xdc\x7d\x00\x65\xd4\x11\xd1\x91\x94\x44\x45\x53\x54\x00\x00\xff\x05\xbb\x02\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xdc\x7d\x03\x65\xd4\x11\xd1\x91\x94\x44\x45\x53\x54\x00\x00\x00\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00\xff\x00\x00\x00", 92); doubleptr=(double *) &ntcfile[92]; *doubleptr++ = (double) tonecurve->XAxisStartPoint/255; *doubleptr++ = (double) tonecurve->XAxisEndPoint/255; *doubleptr++ = (double) tonecurve->MidPointIntegerPart + tonecurve->MidPointDecimalPart/100; *doubleptr++ = (double) tonecurve->YAxisStartPoint/255; *doubleptr++ = (double) tonecurve->YAxisEndPoint/255; charptr=(char*) doubleptr; *charptr++ = (char) tonecurve->NCoordinates; memcpy(charptr, "\x00\x00\x00", 3); charptr +=3; doubleptr = (double *) charptr; for(n=0;nNCoordinates;n++) { *doubleptr = (double) tonecurve->CurveCoordinates[n].X/255; doubleptr = &doubleptr[1]; *doubleptr = (double) tonecurve->CurveCoordinates[n].Y/255; doubleptr = &doubleptr[1]; } *doubleptr++ = (double) 0; charptr = (char*) doubleptr; memcpy(charptr,"\x9d\xdc\x7d\x03\x65\xd4\x11\xd1\x91\x94\x44\x45\x53\x54\x00\x00\x01\x00\x00\x00\xff\x03\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xdc\x7d\x03\x65\xd4\x11\xd1\x91\x94\x44\x45\x53\x54\x00\x00\x02\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xdc\x7d\x03\x65\xd4\x11\xd1\x91\x94\x44\x45\x53\x54\x00\x00\x03\x00\x00\x00\xff\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\xf0\x3f\x00\x00\x00\x00\x00\x00\x00\x00",429); charptr += 429; CR (gp_file_set_data_and_size (file, ntcfile, (long)charptr - (long)ntcfile)); /* do not free ntcfile, it is managed by filesys now */ free (xdata); return (GP_OK); } static int nikon_curve_put (CameraFilesystem *fs, const char *folder, CameraFile *file, void *data, GPContext *context) { /* not yet */ return (GP_OK); } static int camera_summary (Camera* camera, CameraText* summary, GPContext *context) { unsigned int i, j; int n; uint16_t ret; int spaceleft; char *txt; PTPParams *params = &(camera->pl->params); PTPDeviceInfo pdi; PTPStorageIDs storageids; SET_CONTEXT(camera, context); spaceleft = sizeof(summary->text); txt = summary->text; n = snprintf (txt, spaceleft,_("Manufacturer: %s\n"),params->deviceinfo.Manufacturer); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; n = snprintf (txt, spaceleft,_("Model: %s\n"),params->deviceinfo.Model); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; n = snprintf (txt, spaceleft,_(" Version: %s\n"),params->deviceinfo.DeviceVersion); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; if (params->deviceinfo.SerialNumber) { n = snprintf (txt, spaceleft,_(" Serial Number: %s\n"),params->deviceinfo.SerialNumber); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } if (params->deviceinfo.VendorExtensionID) { n = snprintf (txt, spaceleft,_("Vendor Extension ID: 0x%x (%d.%d)\n"), params->deviceinfo.VendorExtensionID, params->deviceinfo.VendorExtensionVersion/100, params->deviceinfo.VendorExtensionVersion%100 ); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; if (params->deviceinfo.VendorExtensionDesc) { n = snprintf (txt, spaceleft,_("Vendor Extension Description: %s\n"),params->deviceinfo.VendorExtensionDesc); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } } if (params->deviceinfo.StandardVersion != 100) { n = snprintf (txt, spaceleft,_("PTP Standard Version: %d.%d\n"), params->deviceinfo.StandardVersion/100, params->deviceinfo.StandardVersion%100 ); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } if (params->deviceinfo.FunctionalMode) { n = snprintf (txt, spaceleft,_("Functional Mode: 0x%04x\n"),params->deviceinfo.FunctionalMode); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } /* Dump Formats */ n = snprintf (txt, spaceleft,_("\nCapture Formats: ")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; for (i=0;ideviceinfo.CaptureFormats_len;i++) { n = ptp_render_ofc (params, params->deviceinfo.CaptureFormats[i], spaceleft, txt); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; if (ideviceinfo.CaptureFormats_len-1) { n = snprintf (txt, spaceleft," "); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } } n = snprintf (txt, spaceleft,"\n"); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; n = snprintf (txt, spaceleft,_("Display Formats: ")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; for (i=0;ideviceinfo.ImageFormats_len;i++) { n = ptp_render_ofc (params, params->deviceinfo.ImageFormats[i], spaceleft, txt); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; if (ideviceinfo.ImageFormats_len-1) { n = snprintf (txt, spaceleft,", "); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } } n = snprintf (txt, spaceleft,"\n"); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; if (is_mtp_capable (camera) && ptp_operation_issupported(params,PTP_OC_MTP_GetObjectPropsSupported) ) { n = snprintf (txt, spaceleft,_("Supported MTP Object Properties:\n")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; for (i=0;ideviceinfo.ImageFormats_len;i++) { uint16_t *props = NULL; uint32_t propcnt = 0; n = snprintf (txt, spaceleft,"\t"); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; n = ptp_render_ofc (params, params->deviceinfo.ImageFormats[i], spaceleft, txt); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; n = snprintf (txt, spaceleft,"/%04x:", params->deviceinfo.ImageFormats[i]); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; ret = ptp_mtp_getobjectpropssupported (params, params->deviceinfo.ImageFormats[i], &propcnt, &props); if (ret != PTP_RC_OK) { n = snprintf (txt, spaceleft,_(" PTP error %04x on query"), ret); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } else { for (j=0;j= spaceleft) { free (props); return GP_OK;} spaceleft -= n; txt += n; n = ptp_render_mtp_propname(props[j],spaceleft,txt); if (n >= spaceleft) { free (props); return GP_OK;} spaceleft -= n; txt += n; } free(props); } n = snprintf (txt, spaceleft,"\n"); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } } /* Dump out dynamic capabilities */ n = snprintf (txt, spaceleft,_("\nDevice Capabilities:\n")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; /* First line for file operations */ n = snprintf (txt, spaceleft,_("\tFile Download, ")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; if (ptp_operation_issupported(params,PTP_OC_DeleteObject)) n = snprintf (txt, spaceleft,_("File Deletion, ")); else n = snprintf (txt, spaceleft,_("No File Deletion, ")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; if (ptp_operation_issupported(params,PTP_OC_SendObject)) n = snprintf (txt, spaceleft,_("File Upload\n")); else n = snprintf (txt, spaceleft,_("No File Upload\n")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; /* Second line for capture */ if (ptp_operation_issupported(params,PTP_OC_InitiateCapture)) n = snprintf (txt, spaceleft,_("\tGeneric Image Capture, ")); else n = snprintf (txt, spaceleft,_("\tNo Image Capture, ")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; if (ptp_operation_issupported(params,PTP_OC_InitiateOpenCapture)) n = snprintf (txt, spaceleft,_("Open Capture, ")); else n = snprintf (txt, spaceleft,_("No Open Capture, ")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; n = 0; switch (params->deviceinfo.VendorExtensionID) { case PTP_VENDOR_CANON: if (ptp_operation_issupported(params, PTP_OC_CANON_ViewfinderOn)) { n = snprintf (txt, spaceleft,_("Canon Capture")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } if (ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteRelease)) { n = snprintf (txt, spaceleft,_("Canon EOS Capture")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } if (ptp_operation_issupported(params, PTP_OC_CANON_EOS_RemoteReleaseOn)) { n = snprintf (txt, spaceleft,_("%sCanon EOS Shutter Button"),n?", ":""); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } if (n) { n = snprintf (txt, spaceleft,"\n"); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } break; case PTP_VENDOR_NIKON: if (ptp_operation_issupported(params, PTP_OC_NIKON_Capture)) { n = snprintf (txt, spaceleft,_("Nikon Capture 1")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } if (ptp_operation_issupported(params, PTP_OC_NIKON_AfCaptureSDRAM)) { n = snprintf (txt, spaceleft,_("%sNikon Capture 2"),n?", ":""); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } if (ptp_operation_issupported(params, PTP_OC_NIKON_InitiateCaptureRecInMedia)) { n = snprintf (txt, spaceleft,_("%sNikon Capture 3 "),n?", ":""); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } if (n) { n = snprintf (txt, spaceleft,"\n"); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } break; case PTP_VENDOR_SONY: if (ptp_operation_issupported(params, PTP_OC_SONY_SetControlDeviceB)) { n = snprintf (txt, spaceleft,_("Sony Capture")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } break; default: /* does not belong to good vendor ... needs another detection */ if (params->device_flags & DEVICE_FLAG_OLYMPUS_XML_WRAPPED) { n = snprintf (txt, spaceleft,_("Olympus E XML Capture\n")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } break; } if (!n) { n = snprintf (txt, spaceleft,_("No vendor specific capture\n")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } /* Third line for Wifi support, but just leave it out if not there. */ if ((params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) && ptp_operation_issupported(params, PTP_OC_NIKON_GetProfileAllData)) { n = snprintf (txt, spaceleft,_("\tNikon Wifi support\n")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } if ((params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_GetMACAddress)) { n = snprintf (txt, spaceleft,_("\tCanon Wifi support\n")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; } /* Dump storage information */ if (ptp_operation_issupported(params,PTP_OC_GetStorageIDs) && ptp_operation_issupported(params,PTP_OC_GetStorageInfo) ) { C_PTP_REP (ptp_getstorageids(params, &storageids)); n = snprintf (txt, spaceleft,_("\nStorage Devices Summary:\n")); if (n >= spaceleft) return GP_OK; spaceleft -= n; txt += n; for (i=0; i=spaceleft) return GP_OK;spaceleft-=n;txt+=n; C_PTP_REP (ptp_getstorageinfo(params, storageids.Storage[i], &storageinfo)); n = snprintf (txt, spaceleft,_("\tStorageDescription: %s\n"), storageinfo.StorageDescription?storageinfo.StorageDescription:_("None") ); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n = snprintf (txt, spaceleft,_("\tVolumeLabel: %s\n"), storageinfo.VolumeLabel?storageinfo.VolumeLabel:_("None") ); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; switch (storageinfo.StorageType) { case PTP_ST_Undefined: s = _("Undefined"); break; case PTP_ST_FixedROM: s = _("Builtin ROM"); break; case PTP_ST_RemovableROM: s = _("Removable ROM"); break; case PTP_ST_FixedRAM: s = _("Builtin RAM"); break; case PTP_ST_RemovableRAM: s = _("Removable RAM (memory card)"); break; default: snprintf(tmpname, sizeof(tmpname), _("Unknown: 0x%04x\n"), storageinfo.StorageType); s = tmpname; break; } n = snprintf (txt, spaceleft,_("\tStorage Type: %s\n"), s); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; switch (storageinfo.FilesystemType) { case PTP_FST_Undefined: s = _("Undefined"); break; case PTP_FST_GenericFlat: s = _("Generic Flat"); break; case PTP_FST_GenericHierarchical: s = _("Generic Hierarchical"); break; case PTP_FST_DCF: s = _("Digital Camera Layout (DCIM)"); break; default: snprintf(tmpname, sizeof(tmpname), _("Unknown: 0x%04x\n"), storageinfo.FilesystemType); s = tmpname; break; } n = snprintf (txt, spaceleft,_("\tFilesystemtype: %s\n"), s); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; switch (storageinfo.AccessCapability) { case PTP_AC_ReadWrite: s = _("Read-Write"); break; case PTP_AC_ReadOnly: s = _("Read-Only"); break; case PTP_AC_ReadOnly_with_Object_Deletion: s = _("Read Only with Object deletion"); break; default: snprintf(tmpname, sizeof(tmpname), _("Unknown: 0x%04x\n"), storageinfo.AccessCapability); s = tmpname; break; } n = snprintf (txt, spaceleft,_("\tAccess Capability: %s\n"), s); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n = snprintf (txt, spaceleft,_("\tMaximum Capability: %llu (%lu MB)\n"), (unsigned long long)storageinfo.MaxCapability, (unsigned long)(storageinfo.MaxCapability/1024/1024) ); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n = snprintf (txt, spaceleft,_("\tFree Space (Bytes): %llu (%lu MB)\n"), (unsigned long long)storageinfo.FreeSpaceInBytes, (unsigned long)(storageinfo.FreeSpaceInBytes/1024/1024) ); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n = snprintf (txt, spaceleft,_("\tFree Space (Images): %d\n"), (unsigned int)storageinfo.FreeSpaceInImages); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; free (storageinfo.StorageDescription); free (storageinfo.VolumeLabel); } free (storageids.Storage); } n = snprintf (txt, spaceleft,_("\nDevice Property Summary:\n")); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; /* The information is cached. However, the canon firmware changes * the available properties in capture mode. */ C_PTP_REP (ptp_getdeviceinfo (params, &pdi)); CR (fixup_cached_deviceinfo (camera, &pdi)); for (i=0;i=spaceleft) return GP_OK;spaceleft-=n;txt+=n; /* Do not read the 0xd201 property (found on Creative Zen series). * It seems to cause hangs. */ if (params->deviceinfo.VendorExtensionID==PTP_VENDOR_MICROSOFT) { if (dpc == 0xd201) { n = snprintf(txt, spaceleft, _(" not read out.\n")); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; continue; } } #if 0 /* check is handled by the generic getter now */ if (!ptp_operation_issupported(params, PTP_OC_GetDevicePropDesc)) { n = snprintf(txt, spaceleft, _("cannot be queried.\n")); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; continue; } #endif memset (&dpd, 0, sizeof (dpd)); ret = ptp_generic_getdevicepropdesc (params, dpc, &dpd); if (ret == PTP_RC_OK) { n = snprintf (txt, spaceleft, "(%s) ",_get_getset(dpd.GetSet)); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n = snprintf (txt, spaceleft, "(type=0x%x) ",dpd.DataType); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; switch (dpd.FormFlag) { case PTP_DPFF_None: break; case PTP_DPFF_Range: { n = snprintf (txt, spaceleft, "Range ["); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n = _value_to_str (&dpd.FORM.Range.MinimumValue, dpd.DataType, txt, spaceleft); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n = snprintf (txt, spaceleft, " - "); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n= _value_to_str (&dpd.FORM.Range.MaximumValue, dpd.DataType, txt, spaceleft); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n = snprintf (txt, spaceleft, ", step "); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n= _value_to_str (&dpd.FORM.Range.StepSize, dpd.DataType, txt, spaceleft); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n = snprintf (txt, spaceleft, "] value: "); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; break; } case PTP_DPFF_Enumeration: n = snprintf (txt, spaceleft, "Enumeration ["); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; if ((dpd.DataType & PTP_DTC_ARRAY_MASK) == PTP_DTC_ARRAY_MASK) { n = snprintf (txt, spaceleft, "\n\t"); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; } for (j = 0; j=spaceleft) return GP_OK;spaceleft-=n;txt+=n; if (j != dpd.FORM.Enum.NumberOfValues-1) { n = snprintf (txt, spaceleft, ","); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; if ((dpd.DataType & PTP_DTC_ARRAY_MASK) == PTP_DTC_ARRAY_MASK) { n = snprintf (txt, spaceleft, "\n\t"); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; } } } if ((dpd.DataType & PTP_DTC_ARRAY_MASK) == PTP_DTC_ARRAY_MASK) { n = snprintf (txt, spaceleft, "\n\t"); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; } n = snprintf (txt, spaceleft, "] value: "); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; break; } n = ptp_render_property_value(params, dpc, &dpd, sizeof(summary->text) - strlen(summary->text) - 1, txt); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; if (n) { n = snprintf(txt, spaceleft, " ("); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n = _value_to_str (&dpd.CurrentValue, dpd.DataType, txt, spaceleft); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; n = snprintf(txt, spaceleft, ")"); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; } else { n = _value_to_str (&dpd.CurrentValue, dpd.DataType, txt, spaceleft); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; } } else { n = snprintf (txt, spaceleft, _(" error %x on query."), ret); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; } n = snprintf(txt, spaceleft, "\n"); if (n>=spaceleft) return GP_OK;spaceleft-=n;txt+=n; ptp_free_devicepropdesc (&dpd); } ptp_free_DI (&pdi); return (GP_OK); } static uint32_t find_child (PTPParams *params,const char *file,uint32_t storage,uint32_t handle,PTPObject **retob) { unsigned int i; uint16_t ret; ret = ptp_list_folder (params, storage, handle); if (ret != PTP_RC_OK) return PTP_HANDLER_SPECIAL; for (i = 0; i < params->nrofobjects; i++) { PTPObject *ob = ¶ms->objects[i]; ret = PTP_RC_OK; if ((ob->flags & (PTPOBJECT_PARENTOBJECT_LOADED|PTPOBJECT_STORAGEID_LOADED)) != (PTPOBJECT_PARENTOBJECT_LOADED|PTPOBJECT_STORAGEID_LOADED)) ret = ptp_object_want (params, params->objects[i].oid, PTPOBJECT_PARENTOBJECT_LOADED|PTPOBJECT_STORAGEID_LOADED, &ob); if (ret != PTP_RC_OK) return PTP_HANDLER_SPECIAL; if ((ob->oi.StorageID==storage) && (ob->oi.ParentObject==handle)) { ret = ptp_object_want (params, ob->oid, PTPOBJECT_OBJECTINFO_LOADED, &ob); if (ret != PTP_RC_OK) return PTP_HANDLER_SPECIAL; if (!strcmp (ob->oi.Filename,file)) { if (retob) *retob = ob; return ob->oid; } } } /* else not found */ return PTP_HANDLER_SPECIAL; } static uint32_t folder_to_handle(PTPParams *params, const char *folder, uint32_t storage, uint32_t parent, PTPObject **retob) { char *c; if (retob) *retob = NULL; if (!strlen(folder)) { /* was initially read, no need to reread */ /* ptp_list_folder (params, storage, 0); */ return PTP_HANDLER_ROOT; } if (!strcmp(folder,"/")) { /* was initially read, no need to reread */ /* ptp_list_folder (params, storage, 0); */ return PTP_HANDLER_ROOT; } c = strchr(folder,'/'); if (c != NULL) { *c = 0; parent = find_child (params, folder, storage, parent, retob); if (parent == PTP_HANDLER_SPECIAL) GP_LOG_D("not found???"); return folder_to_handle(params, c+1, storage, parent, retob); } else { return find_child (params, folder, storage, parent, retob); } } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = (Camera *)data; PTPParams *params = &camera->pl->params; uint32_t parent, storage=0x0000000; unsigned int i, hasgetstorageids; SET_CONTEXT_P(params, context); int lastnrofobjects = params->nrofobjects, redoneonce = 0; GP_LOG_D ("file_list_func(%s)", folder); /* There should be NO files in root folder */ if (!strcmp(folder, "/")) return (GP_OK); if (!strcmp(folder, "/special")) { for (i=0; inrofobjects; i++) { PTPObject *ob; uint16_t ret; /* not our parent -> next */ C_PTP_REP (ptp_object_want (params, params->objects[i].oid, PTPOBJECT_PARENTOBJECT_LOADED|PTPOBJECT_STORAGEID_LOADED, &ob)); /* DANGER DANGER: i is now invalid as objects might have been inserted in the list! */ if (ob->oi.ParentObject!=parent) continue; /* not on our storage devices -> next */ if ((hasgetstorageids && (ob->oi.StorageID != storage))) continue; ret = ptp_object_want (params, ob->oid, PTPOBJECT_OBJECTINFO_LOADED, &ob); if (ret != PTP_RC_OK) { /* we might raced another delete or ongoing addition, seen on a D810 */ if (ret == PTP_RC_InvalidObjectHandle) { GP_LOG_D ("Handle %08x was in list, but not/no longer found via getobjectinfo.\n", ob->oid); /* remove it for now, we will readd it later if we see it again. */ ptp_remove_object_from_cache(params, ob->oid); continue; } C_PTP_REP (ret); } /* Is a directory -> next */ if (ob->oi.ObjectFormat == PTP_OFC_Association) continue; debug_objectinfo(params, ob->oid, &ob->oi); if (!ob->oi.Filename) continue; if (1) { /* HP Photosmart 850, the camera tends to duplicate filename in the list. * Original patch by clement.rezvoy@gmail.com */ /* search backwards, likely gets hits faster. */ /* FIXME Marcus: This is also O(n^2) ... bad for large directories. */ if (GP_OK == gp_list_find_by_name(list, NULL, ob->oi.Filename)) { GP_LOG_E ( "Duplicate filename '%s' in folder '%s'. Ignoring nth entry.\n", ob->oi.Filename, folder); continue; } } CR(gp_list_append (list, ob->oi.Filename, NULL)); } /* Did we change the object tree list during our traversal? if yes, redo the scan. */ if (params->nrofobjects != lastnrofobjects) { if (redoneonce++) { GP_LOG_E("list changed again on second pass, returning anyway"); return GP_OK; } lastnrofobjects = params->nrofobjects; gp_list_reset(list); goto retry; } return GP_OK; } static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { PTPParams *params = &((Camera *)data)->pl->params; unsigned int i, hasgetstorageids; uint32_t handler,storage; int redoneonce = 0, lastnrofobjects = params->nrofobjects; SET_CONTEXT_P(params, context); GP_LOG_D ("folder_list_func(%s)", folder); /* add storage pseudofolders in root folder */ if (!strcmp(folder, "/")) { if (ptp_operation_issupported(params,PTP_OC_GetStorageIDs)) { PTPStorageIDs storageids; char fname[PTP_MAXSTRLEN]; C_PTP_REP (ptp_getstorageids(params, &storageids)); if (!storageids.n) { snprintf(fname, sizeof(fname), STORAGE_FOLDER_PREFIX"%08x",0x00010001); CR (gp_list_append (list, fname, NULL)); } for (i=0; inrofobjects; i++) { PTPObject *ob; uint16_t ret; uint32_t handle; C_PTP_REP (ptp_object_want (params, params->objects[i].oid, PTPOBJECT_STORAGEID_LOADED|PTPOBJECT_PARENTOBJECT_LOADED, &ob)); if (ob->oi.ParentObject != handler) continue; if (hasgetstorageids && (ob->oi.StorageID != storage)) continue; handle = ob->oid; ret = ptp_object_want (params, handle, PTPOBJECT_OBJECTINFO_LOADED, &ob); if (ret != PTP_RC_OK) { /* we might raced another delete or ongoing addition, seen on a D810 */ if (ret == PTP_RC_InvalidObjectHandle) { GP_LOG_D ("Handle %08x was in list, but not/no longer found via getobjectinfo.\n", handle); /* remove it for now, we will readd it later if we see it again. */ ptp_remove_object_from_cache(params, handle); continue; } C_PTP_REP (ret); } if (ob->oi.ObjectFormat!=PTP_OFC_Association) continue; GP_LOG_D ("adding 0x%x to folder", ob->oid); if (GP_OK == gp_list_find_by_name(list, NULL, ob->oi.Filename)) { char *buf; GP_LOG_E ( "Duplicate foldername '%s' in folder '%s'. Ignoring nth entry.\n", ob->oi.Filename, folder); C_MEM (buf = malloc(strlen(ob->oi.Filename)+strlen("_012345678")+1)); sprintf (buf, "%s_%08x", ob->oi.Filename, ob->oid); free (ob->oi.Filename); ob->oi.Filename = buf; } CR (gp_list_append (list, ob->oi.Filename, NULL)); } if (lastnrofobjects != params->nrofobjects) { if (redoneonce++) { GP_LOG_E("list changed again on second pass, returning anyway"); return GP_OK; } lastnrofobjects = params->nrofobjects; gp_list_reset (list); goto retry; } return GP_OK; } /* To avoid roundtrips for querying prop desc * that are uninteresting for us we list all * that are exposed by PTP anyway (and are r/o). */ static unsigned short uninteresting_props [] = { PTP_OPC_StorageID, PTP_OPC_ObjectFormat, PTP_OPC_ProtectionStatus, PTP_OPC_ObjectSize, PTP_OPC_AssociationType, PTP_OPC_AssociationDesc, PTP_OPC_ParentObject }; static int ptp_mtp_render_metadata ( PTPParams *params, uint32_t object_id, uint16_t ofc, CameraFile *file ) { uint16_t ret, *props = NULL; uint32_t propcnt = 0; unsigned int j; MTPProperties *mprops; PTPObject *ob; C_PTP (ptp_object_want (params, object_id, PTPOBJECT_MTPPROPLIST_LOADED, &ob)); /* ... use little helper call to see if we missed anything in the global * retrieval. */ C_PTP (ptp_mtp_getobjectpropssupported (params, ofc, &propcnt, &props)); mprops = ob->mtpprops; if (mprops) { /* use the fast method, without device access since cached.*/ char propname[256]; char text[256]; unsigned int i, n; for (j=0;jnrofmtpprops;j++) { MTPProperties *xpl = &mprops[j]; for (i=0;iproperty) break; /* Is uninteresting. */ if (i == sizeof(uninteresting_props)/sizeof(uninteresting_props[0])) continue; for(i=0;iproperty) { props[i]=0; break; } } n = ptp_render_mtp_propname(xpl->property, sizeof(propname), propname); gp_file_append (file, "<", 1); gp_file_append (file, propname, n); gp_file_append (file, ">", 1); switch (xpl->datatype) { default:sprintf (text, "Unknown type %d", xpl->datatype); break; case PTP_DTC_STR: snprintf (text, sizeof(text), "%s", xpl->propval.str?xpl->propval.str:""); break; case PTP_DTC_INT32: sprintf (text, "%d", xpl->propval.i32); break; case PTP_DTC_INT16: sprintf (text, "%d", xpl->propval.i16); break; case PTP_DTC_INT8: sprintf (text, "%d", xpl->propval.i8); break; case PTP_DTC_UINT32: sprintf (text, "%u", xpl->propval.u32); break; case PTP_DTC_UINT16: sprintf (text, "%u", xpl->propval.u16); break; case PTP_DTC_UINT8: sprintf (text, "%u", xpl->propval.u8); break; } gp_file_append (file, text, strlen(text)); gp_file_append (file, "\n", 2); } /* fallthrough */ } for (j=0;j", 1); ret = LOG_ON_PTP_E (ptp_mtp_getobjectpropdesc (params, props[j], ofc, &opd)); if (ret == PTP_RC_OK) { PTPPropertyValue pv; ret = ptp_mtp_getobjectpropvalue (params, object_id, props[j], &pv, opd.DataType); if (ret != PTP_RC_OK) { sprintf (text, "failure to retrieve %x of oid %x, ret %x", props[j], object_id, ret); } else { switch (opd.DataType) { default:sprintf (text, "Unknown type %d", opd.DataType); break; case PTP_DTC_STR: snprintf (text, sizeof(text), "%s", pv.str?pv.str:""); break; case PTP_DTC_INT32: sprintf (text, "%d", pv.i32); break; case PTP_DTC_INT16: sprintf (text, "%d", pv.i16); break; case PTP_DTC_INT8: sprintf (text, "%d", pv.i8); break; case PTP_DTC_UINT32: sprintf (text, "%u", pv.u32); break; case PTP_DTC_UINT16: sprintf (text, "%u", pv.u16); break; case PTP_DTC_UINT8: sprintf (text, "%u", pv.u8); break; } } gp_file_append (file, text, strlen(text)); } gp_file_append (file, "\n", 2); } free(props); return (GP_OK); } /* To avoid roundtrips for querying prop desc if it is R/O * we list all that are by standard means R/O. */ static unsigned short readonly_props [] = { PTP_OPC_StorageID, PTP_OPC_ObjectFormat, PTP_OPC_ProtectionStatus, PTP_OPC_ObjectSize, PTP_OPC_AssociationType, PTP_OPC_AssociationDesc, PTP_OPC_ParentObject, PTP_OPC_PersistantUniqueObjectIdentifier, PTP_OPC_DateAdded, PTP_OPC_CorruptOrUnplayable, PTP_OPC_RepresentativeSampleFormat, PTP_OPC_RepresentativeSampleSize, PTP_OPC_RepresentativeSampleHeight, PTP_OPC_RepresentativeSampleWidth, PTP_OPC_RepresentativeSampleDuration }; static int ptp_mtp_parse_metadata ( PTPParams *params, uint32_t object_id, uint16_t ofc, CameraFile *file ) { uint16_t ret, *props = NULL; uint32_t propcnt = 0; char *filedata = NULL; unsigned long filesize = 0; unsigned int j; if (gp_file_get_data_and_size (file, (const char**)&filedata, &filesize) < GP_OK) return (GP_ERROR); C_PTP (ptp_mtp_getobjectpropssupported (params, ofc, &propcnt, &props)); for (j=0;j", propname); begin= strstr (filedata, propname2); if (!begin) continue; begin += strlen(propname2); sprintf (propname2, "", propname); end = strstr (begin, propname2); if (!end) continue; *end = '\0'; content = strdup(begin); if (!content) { free (props); C_MEM (content); } *end = '<'; GP_LOG_D ("found tag %s, content %s", propname, content); ret = LOG_ON_PTP_E (ptp_mtp_getobjectpropdesc (params, props[j], ofc, &opd)); if (ret != PTP_RC_OK) { free (content); content = NULL; continue; } if (opd.GetSet == 0) { GP_LOG_D ("Tag %s is read only, sorry.", propname); free (content); content = NULL; continue; } switch (opd.DataType) { default:GP_LOG_E ("mtp parser: Unknown datatype %d, content %s", opd.DataType, content); free (content); content = NULL; continue; break; case PTP_DTC_STR: pv.str = content; break; case PTP_DTC_INT32: sscanf (content, "%d", &pv.i32); break; case PTP_DTC_INT16: sscanf (content, "%hd", &pv.i16); break; case PTP_DTC_INT8: sscanf (content, "%hhd", &pv.i8); break; case PTP_DTC_UINT32: sscanf (content, "%u", &pv.u32); break; case PTP_DTC_UINT16: sscanf (content, "%hu", &pv.u16); break; case PTP_DTC_UINT8: sscanf (content, "%hhu", &pv.u8); break; } ret = ptp_mtp_setobjectpropvalue (params, object_id, props[j], &pv, opd.DataType); free (content); content = NULL; } free(props); return (GP_OK); } static int mtp_get_playlist_string( Camera *camera, uint32_t object_id, char **xcontent, int *xcontentlen ) { PTPParams *params = &camera->pl->params; uint32_t numobjects = 0, *objects = NULL; unsigned int i, contentlen = 0; char *content = NULL; C_PTP (ptp_mtp_getobjectreferences (params, object_id, &objects, &numobjects)); for (i=0;ioi.Filename)+1, buf, len); memcpy (buf+1, ob->oi.Filename, strlen (ob->oi.Filename)); buf[0] = '/'; object_id = ob->oi.ParentObject; len = strlen(buf); } while (object_id != 0); memmove (buf+strlen("/store_00010001"), buf, len); sprintf (buf,"/store_%08x",(unsigned int)ob->oi.StorageID); buf[strlen(buf)]='/'; len = strlen(buf); C_MEM (content = realloc (content, contentlen+len+1+1)); strcpy (content+contentlen, buf); strcpy (content+contentlen+len, "\n"); contentlen += len+1; } if (!content) C_MEM (content = malloc(1)); if (xcontent) *xcontent = content; else free (content); *xcontentlen = contentlen; free (objects); return (GP_OK); } static int mtp_put_playlist( Camera *camera, char *content, int contentlen, PTPObjectInfo *oi, GPContext *context ) { char *s = content; unsigned char data[1]; uint32_t storage = 0, objectid, playlistid; uint32_t *oids = NULL; int nrofoids = 0; PTPParams *params = &camera->pl->params; while (*s) { char *t = strchr(s,'\n'); char *fn, *filename; if (t) { C_MEM (fn = malloc (t-s+1)); memcpy (fn, s, t-s); fn[t-s]='\0'; } else { C_MEM (fn = strdup(s)); } filename = strrchr (fn,'/'); if (!filename) { free (fn); if (!t) break; s = t+1; continue; } *filename = '\0';filename++; /* compute storage ID value from folder patch */ folder_to_storage(fn,storage); /* Get file number omiting storage pseudofolder */ find_folder_handle(params, fn, storage, objectid); objectid = find_child(params, filename, storage, objectid, NULL); if (objectid != PTP_HANDLER_SPECIAL) { C_MEM (oids = realloc(oids, sizeof(oids[0])*(nrofoids+1))); oids[nrofoids] = objectid; nrofoids++; } else { /*fprintf (stderr,"%s/%s NOT FOUND!\n", fn, filename);*/ GP_LOG_E ("Object %s/%s not found on device.", fn, filename); } free (fn); if (!t) break; s = t+1; } oi->ObjectCompressedSize = 1; oi->ObjectFormat = PTP_OFC_MTP_AbstractAudioVideoPlaylist; C_PTP_MSG (ptp_sendobjectinfo(&camera->pl->params, &storage, &oi->ParentObject, &playlistid, oi), "failed sendobjectinfo of playlist."); C_PTP_MSG (ptp_sendobject(&camera->pl->params, (unsigned char*)data, 1), "failed dummy sendobject of playlist."); C_PTP (ptp_mtp_setobjectreferences (&camera->pl->params, playlistid, oids, nrofoids)); /* update internal structures */ return add_object(camera, playlistid, context); } static int mtp_get_playlist( Camera *camera, CameraFile *file, uint32_t object_id, GPContext *context ) { char *content; int contentlen; CR (mtp_get_playlist_string( camera, object_id, &content, &contentlen)); /* takes ownership of content */ return gp_file_set_data_and_size (file, content, contentlen); } typedef struct { CameraFile *file; } PTPCFHandlerPrivate; static uint16_t gpfile_getfunc (PTPParams *params, void *xpriv, unsigned long wantlen, unsigned char *bytes, unsigned long *gotlen ) { PTPCFHandlerPrivate* priv = (PTPCFHandlerPrivate*)xpriv; int ret; size_t gotlensize; ret = gp_file_slurp (priv->file, (char*)bytes, wantlen, &gotlensize); *gotlen = gotlensize; if (ret != GP_OK) return PTP_ERROR_IO; return PTP_RC_OK; } static uint16_t gpfile_putfunc (PTPParams *params, void *xpriv, unsigned long sendlen, unsigned char *bytes ) { PTPCFHandlerPrivate* priv= (PTPCFHandlerPrivate*)xpriv; int ret; ret = gp_file_append (priv->file, (char*)bytes, sendlen); if (ret != GP_OK) return PTP_ERROR_IO; return PTP_RC_OK; } uint16_t ptp_init_camerafile_handler (PTPDataHandler *handler, CameraFile *file) { PTPCFHandlerPrivate* priv = malloc (sizeof(PTPCFHandlerPrivate)); if (!priv) return PTP_RC_GeneralError; handler->priv = priv; handler->getfunc = gpfile_getfunc; handler->putfunc = gpfile_putfunc; priv->file = file; return PTP_RC_OK; } uint16_t ptp_exit_camerafile_handler (PTPDataHandler *handler) { free (handler->priv); return PTP_RC_OK; } static int read_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, uint64_t offset64, char *buf, uint64_t *size64, void *data, GPContext *context) { Camera *camera = data; PTPParams *params = &camera->pl->params; /* Note that "image" points to unsigned chars whereas all the other * functions which set image return pointers to chars. * However, we calculate a number of unsigned values in this function, * so we cannot make it signed either. * Therefore, sometimes a "ximage" char* helper, since wild casts of pointers * confuse the compilers aliasing mechanisms. * If you do not like that, feel free to clean up the datatypes. * (TODO for Marcus and 2.2 ;) */ uint32_t oid; uint32_t storage; uint32_t xsize; uint32_t offset = offset64, size = *size64; PTPObject *ob; SET_CONTEXT_P(params, context); C_PARAMS_MSG (offset64 + *size64 <= 0xffffffff, "offset + size exceeds 32bit"); C_PARAMS_MSG (strcmp (folder, "/special"), "file not found"); if (!ptp_operation_issupported(params, PTP_OC_GetPartialObject)) return (GP_ERROR_NOT_SUPPORTED); /* compute storage ID value from folder patch */ folder_to_storage(folder,storage); /* Get file number omiting storage pseudofolder */ find_folder_handle(params, folder, storage, oid); oid = find_child(params, filename, storage, oid, &ob); if (oid == PTP_HANDLER_SPECIAL) { gp_context_error (context, _("File '%s/%s' does not exist."), folder, filename); return GP_ERROR_BAD_PARAMETERS; } GP_LOG_D ("Reading %u bytes from file '%s' at offset %u.", size, filename, offset); switch (type) { default: return (GP_ERROR_NOT_SUPPORTED); case GP_FILE_TYPE_NORMAL: { uint16_t ret; unsigned char *xdata; /* We do not allow downloading unknown type files as in most cases they are special file (like firmware or control) which sometimes _cannot_ be downloaded. doing so we avoid errors.*/ /* however this avoids the possibility to download files on * Androids ... doh. Let reenable it again. */ if (ob->oi.ObjectFormat == PTP_OFC_Association /* || (ob->oi.ObjectFormat == PTP_OFC_Undefined && ((ob->oi.ThumbFormat == PTP_OFC_Undefined) || (ob->oi.ThumbFormat == 0) ) ) */ ) return (GP_ERROR_NOT_SUPPORTED); if (is_mtp_capable (camera) && (ob->oi.ObjectFormat == PTP_OFC_MTP_AbstractAudioVideoPlaylist)) return (GP_ERROR_NOT_SUPPORTED); xsize=ob->oi.ObjectCompressedSize; if (!xsize) return (GP_ERROR_NOT_SUPPORTED); if (size+offset > xsize) size = xsize - offset; ret = ptp_getpartialobject(params, oid, offset, size, &xdata, &size); if (ret == PTP_ERROR_CANCEL) return GP_ERROR_CANCEL; C_PTP_REP (ret); *size64 = size; memcpy (buf, xdata, size); free (xdata); /* clear the "new" flag on Canons */ if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && (ob->canon_flags & 0x20) && ptp_operation_issupported(params,PTP_OC_CANON_SetObjectArchive) ) { /* seems just a byte (0x20 - new) */ /* can fail on some models, like S5. Ignore errors. */ ret = LOG_ON_PTP_E (ptp_canon_setobjectarchive (params, oid, ob->canon_flags & ~0x20)); if (ret == PTP_RC_OK) ob->canon_flags &= ~0x20; } } break; } return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; /* Note that "image" points to unsigned chars whereas all the other * functions which set image return pointers to chars. * However, we calculate a number of unsigned values in this function, * so we cannot make it signed either. * Therefore, sometimes a "ximage" char* helper, since wild casts of pointers * confuse the compilers aliasing mechanisms. * If you do not like that, feel free to clean up the datatypes. * (TODO for Marcus and 2.2 ;) */ uint32_t oid; uint32_t size; uint32_t storage; PTPObject *ob; PTPParams *params = &camera->pl->params; SET_CONTEXT_P(params, context); #if 0 /* The new Canons like to switch themselves off in the middle. */ if (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) { if (ptp_operation_issupported(params, PTP_OC_CANON_KeepDeviceOn)) ptp_canon_keepdeviceon (params); } #endif if (!strcmp (folder, "/special")) { unsigned int i; for (i=0;ioi.ModificationDate != 0) gp_file_set_mtime (file, ob->oi.ModificationDate); else gp_file_set_mtime (file, ob->oi.CaptureDate); GP_LOG_D ("Getting file '%s'.", filename); switch (type) { case GP_FILE_TYPE_EXIF: { uint32_t offset, xlen, maxbytes; unsigned char *ximage = NULL; /* Check if we have partial downloads. Otherwise we can just hope * upstream downloads the whole image to get EXIF data. */ if (!ptp_operation_issupported(params, PTP_OC_GetPartialObject)) return (GP_ERROR_NOT_SUPPORTED); /* Device may hang is a partial read is attempted beyond the file */ if (ob->oi.ObjectCompressedSize < 10) return (GP_ERROR_NOT_SUPPORTED); /* We only support JPEG / EXIF format ... others might hang. */ if (ob->oi.ObjectFormat != PTP_OFC_EXIF_JPEG) return (GP_ERROR_NOT_SUPPORTED); /* Note: Could also use Canon partial downloads */ C_PTP_REP (ptp_getpartialobject (params, oid, 0, 10, &ximage, &xlen)); if (!((ximage[0] == 0xff) && (ximage[1] == 0xd8))) { /* SOI */ free (ximage); return (GP_ERROR_NOT_SUPPORTED); } if (!((ximage[2] == 0xff) && (ximage[3] == 0xe1))) { /* App0 */ free (ximage); return (GP_ERROR_NOT_SUPPORTED); } if (0 != memcmp(ximage+6, "Exif", 4)) { free (ximage); return (GP_ERROR_NOT_SUPPORTED); } offset = 2; maxbytes = (ximage[4] << 8 ) + ximage[5]; free (ximage); ximage = NULL; C_PTP_REP (ptp_getpartialobject (params, oid, offset, maxbytes, &ximage, &xlen)); CR (gp_file_set_data_and_size (file, (char*)ximage, xlen)); break; } case GP_FILE_TYPE_PREVIEW: { unsigned char *ximage = NULL; unsigned int xlen; /* If thumb size is 0, and the ofc is not an image type (0x38xx or 0xb8xx) * then there is no thumbnail at all... */ size=ob->oi.ThumbCompressedSize; if((size==0) && ( ((ob->oi.ObjectFormat & 0x7800) != 0x3800) && ((ob->oi.ObjectFormat != PTP_OFC_CANON_CRW)) && ((ob->oi.ObjectFormat != PTP_OFC_CANON_MOV)) && ((ob->oi.ObjectFormat != PTP_OFC_CANON_MOV2)) && ((ob->oi.ObjectFormat != PTP_OFC_CANON_CRW3)) )) return GP_ERROR_NOT_SUPPORTED; C_PTP_REP (ptp_getthumb(params, oid, &ximage, &xlen)); set_mimetype (file, params->deviceinfo.VendorExtensionID, ob->oi.ThumbFormat); CR (gp_file_set_data_and_size (file, (char*)ximage, xlen)); break; } case GP_FILE_TYPE_METADATA: if (is_mtp_capable (camera) && ptp_operation_issupported(params,PTP_OC_MTP_GetObjectPropsSupported) ) return ptp_mtp_render_metadata (params,oid,ob->oi.ObjectFormat,file); return (GP_ERROR_NOT_SUPPORTED); default: { if (ob->oi.ObjectFormat == PTP_OFC_Association) return GP_ERROR_NOT_SUPPORTED; /* We do not allow downloading unknown type files as in most * cases they are special file (like firmware or control) which * sometimes _cannot_ be downloaded. doing so we avoid errors. * Allow all types from MTP devices, like phones. */ if ( !is_mtp_capable (camera) && (ob->oi.ObjectFormat == PTP_OFC_Undefined && ((ob->oi.ThumbFormat == PTP_OFC_Undefined) || (ob->oi.ThumbFormat == 0) ) ) ) return (GP_ERROR_NOT_SUPPORTED); if (is_mtp_capable (camera) && (ob->oi.ObjectFormat == PTP_OFC_MTP_AbstractAudioVideoPlaylist)) return mtp_get_playlist (camera, file, oid, context); size=ob->oi.ObjectCompressedSize; if (size) { uint16_t ret; PTPDataHandler handler; ptp_init_camerafile_handler (&handler, file); ret = ptp_getobject_to_handler(params, oid, &handler); ptp_exit_camerafile_handler (&handler); if (ret == PTP_ERROR_CANCEL) return GP_ERROR_CANCEL; C_PTP_REP (ret); } else { unsigned char *ximage = NULL; /* Do not download 0 sized files. * It is not necessary and even breaks for some camera special files. */ C_MEM (ximage = malloc(1)); CR (gp_file_set_data_and_size (file, (char*)ximage, size)); } /* clear the "new" flag on Canons */ if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && (ob->canon_flags & 0x20) && ptp_operation_issupported(params,PTP_OC_CANON_SetObjectArchive) ) { /* seems just a byte (0x20 - new) */ C_PTP_REP (ptp_canon_setobjectarchive (params, oid, ob->canon_flags &~0x20)); ob->canon_flags &= ~0x20; } break; } } return set_mimetype (file, params->deviceinfo.VendorExtensionID, ob->oi.ObjectFormat); } static int put_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; PTPObjectInfo oi; uint32_t parent; uint32_t storage; uint32_t handle; unsigned long intsize; PTPParams* params = &camera->pl->params; SET_CONTEXT_P(params, context); camera->pl->checkevents = TRUE; GP_LOG_D ("folder=%s, filename=%s", folder, filename); if (!strcmp (folder, "/special")) { unsigned int i; for (i=0;ioi.ObjectFormat,file); } gp_context_error (context, _("Metadata only supported for MTP devices.")); return GP_ERROR_NOT_SUPPORTED; } C_PARAMS (type == GP_FILE_TYPE_NORMAL); /* compute storage ID value from folder patch */ folder_to_storage(folder,storage); /* get parent folder id omiting storage pseudofolder */ find_folder_handle(params,folder,storage,parent); /* if you desire to put file to root folder, you have to use * 0xffffffff instead of 0x00000000 (which means responder decide). */ if (parent==PTP_HANDLER_ROOT) parent=PTP_HANDLER_SPECIAL; /* We don't really want a file to exist with the same name twice. */ handle = find_child (params, filename, storage, parent, NULL); if (handle != PTP_HANDLER_SPECIAL) { GP_LOG_D ("%s/%s exists.", folder, filename); return GP_ERROR_FILE_EXISTS; } oi.Filename=(char *)filename; oi.ObjectFormat = get_mimetype(camera, file, params->deviceinfo.VendorExtensionID); oi.ParentObject = parent; gp_file_get_mtime(file, &oi.ModificationDate); if (is_mtp_capable (camera) && ( strstr(filename,".zpl") || strstr(filename, ".pla") )) { char *object; gp_file_get_data_and_size (file, (const char**)&object, &intsize); return mtp_put_playlist (camera, object, intsize, &oi, context); } /* If the device is using PTP_VENDOR_EASTMAN_KODAK extension try * PTP_OC_EK_SendFileObject. */ gp_file_get_data_and_size (file, NULL, &intsize); oi.ObjectCompressedSize = intsize; if ((params->deviceinfo.VendorExtensionID==PTP_VENDOR_EASTMAN_KODAK) && (ptp_operation_issupported(params, PTP_OC_EK_SendFileObject))) { PTPDataHandler handler; C_PTP_REP (ptp_ek_sendfileobjectinfo (params, &storage, &parent, &handle, &oi)); ptp_init_camerafile_handler (&handler, file); C_PTP_REP (ptp_ek_sendfileobject_from_handler (params, &handler, intsize)); ptp_exit_camerafile_handler (&handler); } else if (ptp_operation_issupported(params, PTP_OC_SendObjectInfo)) { uint16_t ret; PTPDataHandler handler; C_PTP_REP (ptp_sendobjectinfo (params, &storage, &parent, &handle, &oi)); ptp_init_camerafile_handler (&handler, file); ret = ptp_sendobject_from_handler (params, &handler, intsize); ptp_exit_camerafile_handler (&handler); if (ret == PTP_ERROR_CANCEL) return (GP_ERROR_CANCEL); C_PTP_REP (ret); } else { GP_LOG_D ("The device does not support uploading files."); return GP_ERROR_NOT_SUPPORTED; } /* update internal structures */ return add_object(camera, handle, context); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; uint32_t oid; uint32_t storage; PTPParams *params = &camera->pl->params; SET_CONTEXT_P(params, context); if (!strcmp (folder, "/special")) return GP_ERROR_NOT_SUPPORTED; /* virtual file created by Nikon special capture */ if ( ((params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) || (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) || (params->deviceinfo.VendorExtensionID == PTP_VENDOR_SONY) || (params->device_flags & DEVICE_FLAG_OLYMPUS_XML_WRAPPED)) && !strncmp (filename, "capt", 4) ) return GP_OK; if (!ptp_operation_issupported(params, PTP_OC_DeleteObject)) return GP_ERROR_NOT_SUPPORTED; camera->pl->checkevents = TRUE; C_PTP_REP (ptp_check_event (params)); /* compute storage ID value from folder patch */ folder_to_storage(folder,storage); /* Get file number omiting storage pseudofolder */ find_folder_handle(params, folder, storage, oid); oid = find_child(params, filename, storage, oid, NULL); C_PTP_REP (ptp_deleteobject(params, oid, 0)); /* On some Canon firmwares, a DeleteObject causes a ObjectRemoved event * to be sent. At least on Digital IXUS II and PowerShot A85. But * not on 350D. */ if (DELETE_SENDS_EVENT(params) && ptp_event_issupported(params, PTP_EC_ObjectRemoved)) { PTPContainer event; ptp_check_event (params); /* ignore errors */ while (ptp_get_one_event (params, &event)) { if (event.Code == PTP_EC_ObjectRemoved) break; if (event.Code == PTP_EC_ObjectAdded) { PTPObject *ob; ptp_object_want (params, event.Param1, 0, &ob); } } /* FIXME: need to handle folder additions during capture-image-and-download */ } return (GP_OK); } static int remove_dir_func (CameraFilesystem *fs, const char *folder, const char *foldername, void *data, GPContext *context) { Camera *camera = data; uint32_t oid; uint32_t storage; PTPParams *params = &camera->pl->params; SET_CONTEXT_P(params, context); if (!ptp_operation_issupported(params, PTP_OC_DeleteObject)) return GP_ERROR_NOT_SUPPORTED; camera->pl->checkevents = TRUE; /* compute storage ID value from folder patch */ folder_to_storage(folder,storage); /* Get file number omiting storage pseudofolder */ find_folder_handle(params, folder, storage, oid); oid = find_child(params, foldername, storage, oid, NULL); if (oid == PTP_HANDLER_SPECIAL) return GP_ERROR; C_PTP_REP (ptp_deleteobject(params, oid, 0)); return (GP_OK); } static int set_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo info, void *data, GPContext *context) { Camera *camera = data; PTPObject *ob; uint32_t object_id; uint32_t storage; PTPParams *params = &camera->pl->params; SET_CONTEXT_P(params, context); C_PARAMS (strcmp (folder, "/special")); camera->pl->checkevents = TRUE; /* compute storage ID value from folder patch */ folder_to_storage(folder,storage); /* Get file number omiting storage pseudofolder */ find_folder_handle(params, folder, storage, object_id); object_id = find_child(params, filename, storage, object_id, &ob); if (object_id == PTP_HANDLER_SPECIAL) return GP_ERROR; if (info.file.fields & GP_FILE_INFO_PERMISSIONS) { uint16_t newprot; if ((info.file.permissions & GP_FILE_PERM_DELETE) != GP_FILE_PERM_DELETE) newprot = PTP_PS_ReadOnly; else newprot = PTP_PS_NoProtection; if (ob->oi.ProtectionStatus != newprot) { if (!ptp_operation_issupported(params, PTP_OC_SetObjectProtection)) { gp_context_error (context, _("Device does not support setting object protection.")); return (GP_ERROR_NOT_SUPPORTED); } C_PTP_REP_MSG (ptp_setobjectprotection (params, object_id, newprot), _("Device failed to set object protection to %d"), newprot); ob->oi.ProtectionStatus = newprot; /* should actually reread objectinfo to be sure, but lets not. */ } info.file.fields &= ~GP_FILE_INFO_PERMISSIONS; /* fall through */ } /* ... no more cases implemented yet */ return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; PTPObject *ob; uint32_t oid, storage; PTPParams *params = &camera->pl->params; SET_CONTEXT_P(params, context); C_PARAMS (strcmp (folder, "/special")); /* compute storage ID value from folder patch */ folder_to_storage(folder,storage); /* Get file number omiting storage pseudofolder */ find_folder_handle(params, folder, storage, oid); oid = find_child(params, filename, storage, oid, &ob); if (oid == PTP_HANDLER_SPECIAL) return GP_ERROR; info->file.fields = GP_FILE_INFO_SIZE|GP_FILE_INFO_TYPE|GP_FILE_INFO_MTIME; info->file.size = ob->oi.ObjectCompressedSize; if (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) { info->file.fields |= GP_FILE_INFO_STATUS; if (ob->canon_flags & 0x20) info->file.status = GP_FILE_STATUS_NOT_DOWNLOADED; else info->file.status = GP_FILE_STATUS_DOWNLOADED; } /* MTP playlists have their own size calculation */ if (is_mtp_capable (camera) && (ob->oi.ObjectFormat == PTP_OFC_MTP_AbstractAudioVideoPlaylist)) { int contentlen; CR (mtp_get_playlist_string (camera, oid, NULL, &contentlen)); info->file.size = contentlen; } strcpy_mime (info->file.type, params->deviceinfo.VendorExtensionID, ob->oi.ObjectFormat); if (ob->oi.ModificationDate != 0) { info->file.mtime = ob->oi.ModificationDate; } else { info->file.mtime = ob->oi.CaptureDate; } switch (ob->oi.ProtectionStatus) { case PTP_PS_NoProtection: info->file.fields |= GP_FILE_INFO_PERMISSIONS; info->file.permissions = GP_FILE_PERM_READ|GP_FILE_PERM_DELETE; break; case PTP_PS_ReadOnly: info->file.fields |= GP_FILE_INFO_PERMISSIONS; info->file.permissions = GP_FILE_PERM_READ; break; default: GP_LOG_E ("mapping protection to gp perm failed, prot is %x", ob->oi.ProtectionStatus); break; } /* if object is an image */ if ((ob->oi.ObjectFormat & 0x0800) != 0) { info->preview.fields = 0; strcpy_mime(info->preview.type, params->deviceinfo.VendorExtensionID, ob->oi.ThumbFormat); if (strlen(info->preview.type)) { info->preview.fields |= GP_FILE_INFO_TYPE; } if (ob->oi.ThumbCompressedSize) { info->preview.size = ob->oi.ThumbCompressedSize; info->preview.fields |= GP_FILE_INFO_SIZE; } if (ob->oi.ThumbPixWidth) { info->preview.width = ob->oi.ThumbPixWidth; info->preview.fields |= GP_FILE_INFO_WIDTH; } if (ob->oi.ThumbPixHeight) { info->preview.height = ob->oi.ThumbPixHeight; info->preview.fields |= GP_FILE_INFO_HEIGHT; } if (ob->oi.ImagePixWidth) { info->file.width = ob->oi.ImagePixWidth; info->file.fields |= GP_FILE_INFO_WIDTH; } if (ob->oi.ImagePixHeight) { info->file.height = ob->oi.ImagePixHeight; info->file.fields |= GP_FILE_INFO_HEIGHT; } } return (GP_OK); } static int make_dir_func (CameraFilesystem *fs, const char *folder, const char *foldername, void *data, GPContext *context) { Camera *camera = data; PTPObjectInfo oi; uint32_t parent; uint32_t storage; uint32_t handle; PTPParams* params = &camera->pl->params; if (!strcmp (folder, "/special")) return GP_ERROR_NOT_SUPPORTED; SET_CONTEXT_P(params, context); camera->pl->checkevents = TRUE; memset(&oi, 0, sizeof (PTPObjectInfo)); /* compute storage ID value from folder patch */ folder_to_storage(folder,storage); /* get parent folder id omiting storage pseudofolder */ find_folder_handle(params,folder,storage,parent); /* if you desire to make dir in 'root' folder, you have to use * 0xffffffff instead of 0x00000000 (which means responder decide). */ if (parent==PTP_HANDLER_ROOT) parent=PTP_HANDLER_SPECIAL; handle = folder_to_handle (params, foldername, storage, parent, NULL); if (handle != PTP_HANDLER_SPECIAL) return GP_ERROR_DIRECTORY_EXISTS; oi.Filename=(char *)foldername; oi.ObjectFormat=PTP_OFC_Association; oi.ProtectionStatus=PTP_PS_NoProtection; oi.AssociationType=PTP_AT_GenericFolder; if ((params->deviceinfo.VendorExtensionID== PTP_VENDOR_EASTMAN_KODAK) && (ptp_operation_issupported(params, PTP_OC_EK_SendFileObjectInfo))) { C_PTP_REP (ptp_ek_sendfileobjectinfo (params, &storage, &parent, &handle, &oi)); } else if (ptp_operation_issupported(params, PTP_OC_SendObjectInfo)) { C_PTP_REP (ptp_sendobjectinfo (params, &storage, &parent, &handle, &oi)); } else { GP_LOG_D ("The device does not support creating a folder."); return GP_ERROR_NOT_SUPPORTED; } /* update internal structures */ return add_object(camera, handle, context); } static int storage_info_func (CameraFilesystem *fs, CameraStorageInformation **sinfos, int *nrofsinfos, void *data, GPContext *context ) { Camera *camera = data; PTPParams *params = &camera->pl->params; PTPStorageInfo si; PTPStorageIDs sids; unsigned int i,n; CameraStorageInformation*sif; if (!ptp_operation_issupported (params, PTP_OC_GetStorageIDs)) return (GP_ERROR_NOT_SUPPORTED); SET_CONTEXT_P(params, context); C_PTP (ptp_getstorageids (params, &sids)); n = 0; C_MEM (*sinfos = calloc (sids.n, sizeof (CameraStorageInformation))); for (i = 0; ifields |= GP_STORAGEINFO_BASE; sprintf (sif->basedir, "/"STORAGE_FOLDER_PREFIX"%08x", sids.Storage[i]); if (si.VolumeLabel && strlen(si.VolumeLabel)) { sif->fields |= GP_STORAGEINFO_LABEL; strcpy (sif->label, si.VolumeLabel); } if (si.StorageDescription && strlen(si.StorageDescription)) { sif->fields |= GP_STORAGEINFO_DESCRIPTION; strcpy (sif->description, si.StorageDescription); } sif->fields |= GP_STORAGEINFO_STORAGETYPE; switch (si.StorageType) { case PTP_ST_Undefined: sif->type = GP_STORAGEINFO_ST_UNKNOWN; break; case PTP_ST_FixedROM: sif->type = GP_STORAGEINFO_ST_FIXED_ROM; break; case PTP_ST_FixedRAM: sif->type = GP_STORAGEINFO_ST_FIXED_RAM; break; case PTP_ST_RemovableRAM: sif->type = GP_STORAGEINFO_ST_REMOVABLE_RAM; break; case PTP_ST_RemovableROM: sif->type = GP_STORAGEINFO_ST_REMOVABLE_ROM; break; default: GP_LOG_D ("unknown storagetype 0x%x", si.StorageType); sif->type = GP_STORAGEINFO_ST_UNKNOWN; break; } sif->fields |= GP_STORAGEINFO_ACCESS; switch (si.AccessCapability) { case PTP_AC_ReadWrite: sif->access = GP_STORAGEINFO_AC_READWRITE; break; case PTP_AC_ReadOnly: sif->access = GP_STORAGEINFO_AC_READONLY; break; case PTP_AC_ReadOnly_with_Object_Deletion: sif->access = GP_STORAGEINFO_AC_READONLY_WITH_DELETE; break; default: GP_LOG_D ("unknown accesstype 0x%x", si.AccessCapability); sif->access = GP_STORAGEINFO_AC_READWRITE; break; } sif->fields |= GP_STORAGEINFO_FILESYSTEMTYPE; switch (si.FilesystemType) { default: case PTP_FST_Undefined: sif->fstype = GP_STORAGEINFO_FST_UNDEFINED; break; case PTP_FST_GenericFlat: sif->fstype = GP_STORAGEINFO_FST_GENERICFLAT; break; case PTP_FST_GenericHierarchical: sif->fstype = GP_STORAGEINFO_FST_GENERICHIERARCHICAL; break; case PTP_FST_DCF: sif->fstype = GP_STORAGEINFO_FST_DCF; break; } sif->fields |= GP_STORAGEINFO_MAXCAPACITY; sif->capacitykbytes = si.MaxCapability / 1024; sif->fields |= GP_STORAGEINFO_FREESPACEKBYTES; sif->freekbytes = si.FreeSpaceInBytes / 1024; if (si.FreeSpaceInImages != -1) { sif->fields |= GP_STORAGEINFO_FREESPACEIMAGES; sif->freeimages = si.FreeSpaceInImages; } free (si.StorageDescription); free (si.VolumeLabel); n++; } free (sids.Storage); *nrofsinfos = n; return (GP_OK); } static void debug_objectinfo(PTPParams *params, uint32_t oid, PTPObjectInfo *oi) { GP_LOG_D ("ObjectInfo for '%s':", oi->Filename); GP_LOG_D (" Object ID: 0x%08x", oid); GP_LOG_D (" StorageID: 0x%08x", oi->StorageID); GP_LOG_D (" ObjectFormat: 0x%04x", oi->ObjectFormat); GP_LOG_D (" ProtectionStatus: 0x%04x", oi->ProtectionStatus); GP_LOG_D (" ObjectCompressedSize: %ld", (unsigned long)oi->ObjectCompressedSize); GP_LOG_D (" ThumbFormat: 0x%04x", oi->ThumbFormat); GP_LOG_D (" ThumbCompressedSize: %d", oi->ThumbCompressedSize); GP_LOG_D (" ThumbPixWidth: %d", oi->ThumbPixWidth); GP_LOG_D (" ThumbPixHeight: %d", oi->ThumbPixHeight); GP_LOG_D (" ImagePixWidth: %d", oi->ImagePixWidth); GP_LOG_D (" ImagePixHeight: %d", oi->ImagePixHeight); GP_LOG_D (" ImageBitDepth: %d", oi->ImageBitDepth); GP_LOG_D (" ParentObject: 0x%08x", oi->ParentObject); GP_LOG_D (" AssociationType: 0x%04x", oi->AssociationType); GP_LOG_D (" AssociationDesc: 0x%08x", oi->AssociationDesc); GP_LOG_D (" SequenceNumber: 0x%08x", oi->SequenceNumber); GP_LOG_D (" ModificationDate: 0x%08x", (unsigned int)oi->ModificationDate); GP_LOG_D (" CaptureDate: 0x%08x", (unsigned int)oi->CaptureDate); } #if 0 int init_ptp_fs (Camera *camera, GPContext *context) { int i, id, nroot = 0; PTPParams *params = &camera->pl->params; SET_CONTEXT_P(params, context); #if 0 /* Microsoft/MTP has fast directory retrieval. */ if (is_mtp_capable (camera) && ptp_operation_issupported(params,PTP_OC_MTP_GetObjPropList) && (camera->pl->bugs & PTP_MTP_PROPLIST_WORKS) ) { PTPObjectInfo *oinfos = NULL; int cnt = 0, i, j, nrofprops = 0; uint32_t lasthandle = 0xffffffff; MTPProperties *props = NULL, *xpl; int oldtimeout; /* The follow request causes the device to generate * a list of very file on the device and return it * in a single response. * * Some slow device as well as devices with very * large file systems can easily take longer then * the standard timeout value before it is able * to return a response. * * Temporarly set timeout to allow working with * widest range of devices. */ gp_port_get_timeout (camera->port, &oldtimeout); gp_port_set_timeout (camera->port, 60000); ret = ptp_mtp_getobjectproplist (params, 0xffffffff, &props, &nrofprops); gp_port_set_timeout (camera->port, oldtimeout); if (ret != PTP_RC_OK) goto fallback; params->props = props; /* cache it */ params->nrofprops = nrofprops; /* cache it */ /* count the objects */ for (i=0;iObjectHandle) { cnt++; lasthandle = xpl->ObjectHandle; } } lasthandle = 0xffffffff; oinfos = params->objectinfo = malloc (sizeof (PTPObjectInfo) * cnt); memset (oinfos ,0 ,sizeof (PTPObjectInfo) * cnt); params->handles.Handler = malloc (sizeof (uint32_t) * cnt); params->handles.n = cnt; i = -1; for (j=0;jObjectHandle) { if (i >= 0) { if (!oinfos[i].Filename) { /* i have one such file on my Creative */ oinfos[i].Filename = strdup(""); } } i++; lasthandle = xpl->ObjectHandle; params->handles.Handler[i] = xpl->ObjectHandle; GP_LOG_D ("objectid 0x%x", xpl->ObjectHandle); } switch (xpl->property) { case PTP_OPC_ParentObject: if (xpl->datatype != PTP_DTC_UINT32) { GP_LOG_E ("parentobject has type 0x%x???", xpl->datatype); break; } oinfos[i].ParentObject = xpl->propval.u32; if (xpl->propval.u32 == 0) nroot++; GP_LOG_D ("parent 0x%x", xpl->propval.u32); break; case PTP_OPC_ObjectFormat: if (xpl->datatype != PTP_DTC_UINT16) { GP_LOG_E ("objectformat has type 0x%x???", xpl->datatype); break; } oinfos[i].ObjectFormat = xpl->propval.u16; GP_LOG_D ("ofc 0x%x", xpl->propval.u16); break; case PTP_OPC_ObjectSize: switch (xpl->datatype) { case PTP_DTC_UINT32: oinfos[i].ObjectCompressedSize = xpl->propval.u32; break; case PTP_DTC_UINT64: oinfos[i].ObjectCompressedSize = xpl->propval.u64; break; default: GP_LOG_E ("objectsize has type 0x%x???", xpl->datatype); break; } GP_LOG_D ("objectsize %u", xpl->propval.u32); break; case PTP_OPC_StorageID: if (xpl->datatype != PTP_DTC_UINT32) { GP_LOG_E ("storageid has type 0x%x???", xpl->datatype); break; } oinfos[i].StorageID = xpl->propval.u32; GP_LOG_D ("storageid 0x%x", xpl->propval.u32); break; case PTP_OPC_ProtectionStatus:/*UINT16*/ if (xpl->datatype != PTP_DTC_UINT16) { GP_LOG_E ("protectionstatus has type 0x%x???", xpl->datatype); break; } oinfos[i].ProtectionStatus = xpl->propval.u16; GP_LOG_D ("protection 0x%x", xpl->propval.u16); break; case PTP_OPC_ObjectFileName: if (xpl->datatype != PTP_DTC_STR) { GP_LOG_E ("filename has type 0x%x???", xpl->datatype); break; } if (xpl->propval.str) { GP_LOG_D ("filename %s", xpl->propval.str); oinfos[i].Filename = strdup(xpl->propval.str); } else { oinfos[i].Filename = NULL; } break; case PTP_OPC_DateCreated: if (xpl->datatype != PTP_DTC_STR) { GP_LOG_E ("datecreated has type 0x%x???", xpl->datatype); break; } GP_LOG_D ("capturedate %s", xpl->propval.str); oinfos[i].CaptureDate = ptp_unpack_PTPTIME (xpl->propval.str); break; case PTP_OPC_DateModified: if (xpl->datatype != PTP_DTC_STR) { GP_LOG_E ("datemodified has type 0x%x???", xpl->datatype); break; } GP_LOG_D ("moddate %s", xpl->propval.str); oinfos[i].ModificationDate = ptp_unpack_PTPTIME (xpl->propval.str); break; default: if ((xpl->property & 0xfff0) == 0xdc00) GP_LOG_D ("case %x type %x unhandled", xpl->property, xpl->datatype); break; } } return PTP_RC_OK; } #endif /* Get file handles array for filesystem */ id = gp_context_progress_start (context, 100, _("Initializing Camera")); /* Get objecthandles of all objects from all stores */ { PTPObjectHandles handles; int i; C_PTP_REP (ptp_getobjecthandles (params, 0xffffffff, 0x000000, 0x000000, &handles)); params->objects = calloc(handles.n,sizeof(PTPObject)); if (!params->objects) return PTP_RC_GeneralError; gp_context_progress_update (context, id, 10); for (i=0;iobjects[i].oid = handles.Handler[i]; C_PTP_REP (ptp_getobjectinfo(params, handles.Handler[i], ¶ms->objects[i].oi)); #if 1 debug_objectinfo(params, handles.Handler[i], ¶ms->objects[i].oi); #endif if (params->objects[i].oi.ParentObject == 0) nroot++; if ( !params->objects[i].oi.Filename || !strlen (params->objects[i].oi.Filename) ) { params->objects[i].oi.Filename = malloc(8+1); sprintf (params->objects[i].oi.Filename, "%08x", handles.Handler[i]); GP_LOG_E ("Replaced empty dirname by '%08x'", handles.Handler[i]); } gp_context_progress_update (context, id, 10+(90*i)/handles.n); } gp_context_progress_stop (context, id); } /* for older Canons we now retrieve their object flags, to allow * "new" image handling. This is not yet a substitute for regular * OI retrieval. */ if ((params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params,PTP_OC_CANON_GetObjectInfoEx)) { uint16_t ret; int i; /* Look for all directories, since this function apparently only * returns a directory full of entries and does not recurse */ for (i=0;inrofobjects;i++) { int j; PTPCANONFolderEntry *ents = NULL; uint32_t numents = 0; PTPObject *ob; ptp_object_want (params, params->objects[i].oid, PTPOBJECT_OBJECTINFO_LOADED, &ob); /* only retrieve for directories */ if (!ob->oi.AssociationType) continue; ret = ptp_canon_getobjectinfo(params, ob->oi.StorageID,0, ob->oid,0, &ents,&numents ); if (ret != PTP_RC_OK) continue; for (j=0;jcanon_flags = ents[j].Flags; } } } /* If there are no root directory objects, look for "DCIM" directories. * This way, we can handle cameras that report the wrong ParentObject ID for * root. * * FIXME: If DCIM is there, it will not look for other root directories. */ if (nroot == 0 && params->nrofobjects > 0) { uint32_t badroothandle = 0xffffffff; GP_LOG_D ("Bug workaround: Found no root directory objects, looking for some."); for (i = 0; i < params->nrofobjects; i++) { PTPObjectInfo *oi = ¶ms->objects[i].oi; if (strcmp(oi->Filename, "DCIM") == 0) { GP_LOG_D ("Changing DCIM ParentObject ID from 0x%x to 0", oi->ParentObject); badroothandle = oi->ParentObject; oi->ParentObject = 0; nroot++; break; } } for (i = 0; i < params->nrofobjects; i++) { PTPObjectInfo *oi = ¶ms->objects[i].oi; if (oi->ParentObject == badroothandle) { GP_LOG_D ("Changing %s ParentObject ID from 0x%x to 0", oi->Filename, oi->ParentObject); oi->ParentObject = 0; nroot++; } } /* Some cameras do not have a directory at all, just files or unattached * directories. In this case associate all unattached to the 0 object. * * O(n^2) search. Be careful. */ if (nroot == 0) { GP_LOG_D ("Bug workaround: Found no root dir entries and no DCIM dir, looking for some."); /* look for entries with parentobjects that do not exist */ for (i = 0; i < params->nrofobjects; i++) { int j; PTPObjectInfo *oi = ¶ms->objects[i].oi; for (j = 0;j < params->nrofobjects; j++) if (oi->ParentObject == params->objects[j].oid) break; if (j == params->nrofobjects) oi->ParentObject = 0; } } } return (GP_OK); } #endif /* CANON EOS fast directory mode */ /* FIXME: incomplete ... needs storage mode retrieval support too (storage == 0xffffffff) */ static uint16_t ptp_list_folder_eos (PTPParams *params, uint32_t storage, uint32_t handle) { unsigned int k, i, j, last, changed; PTPCANONFolderEntry *tmp = NULL; unsigned int nroftmp = 0; uint16_t ret; PTPStorageIDs storageids; PTPObject *ob; if (handle != 0xffffffff) { ret = ptp_object_want (params, handle, PTPOBJECT_OBJECTINFO_LOADED, &ob); if ((ret == PTP_RC_OK) && (ob->flags & PTPOBJECT_DIRECTORY_LOADED)) return PTP_RC_OK; } if (storage == 0xffffffff) { if (handle != 0xffffffff) { GP_LOG_E ("storage 0x%08x, but handle 0x%08x?", storage, handle); handle = 0xffffffff; } ret = ptp_getstorageids(params, &storageids); if (ret != PTP_RC_OK) return ret; } else { storageids.n = 1; storageids.Storage = malloc(sizeof(storageids.Storage[0])); storageids.Storage[0] = storage; } last = changed = 0; for (k=0;knrofobjects;j++) { if (params->objects[(last+j)%params->nrofobjects].oid == tmp[i].ObjectHandle) { ob = ¶ms->objects[(last+j)%params->nrofobjects]; break; } } if (j == params->nrofobjects) { GP_LOG_D ("adding new objectid 0x%08x (nrofobs=%d,j=%d)", tmp[i].ObjectHandle, params->nrofobjects,j); newobs = realloc (params->objects,sizeof(PTPObject)*(params->nrofobjects+1)); if (!newobs) return PTP_RC_GeneralError; params->objects = newobs; memset (¶ms->objects[params->nrofobjects],0,sizeof(params->objects[params->nrofobjects])); params->objects[params->nrofobjects].oid = tmp[i].ObjectHandle; params->objects[params->nrofobjects].flags = 0; params->objects[params->nrofobjects].oi.StorageID = storageids.Storage[k]; params->objects[params->nrofobjects].flags |= PTPOBJECT_STORAGEID_LOADED; if (handle == 0xffffffff) params->objects[params->nrofobjects].oi.ParentObject = 0; else params->objects[params->nrofobjects].oi.ParentObject = handle; params->objects[params->nrofobjects].flags |= PTPOBJECT_PARENTOBJECT_LOADED; C_MEM (params->objects[params->nrofobjects].oi.Filename = strdup(tmp[i].Filename)); params->objects[params->nrofobjects].oi.ObjectFormat = tmp[i].ObjectFormatCode; GP_LOG_D (" flags %x", tmp[i].Flags); if (tmp[i].Flags & 0x1) params->objects[params->nrofobjects].oi.ProtectionStatus = PTP_PS_ReadOnly; else params->objects[params->nrofobjects].oi.ProtectionStatus = PTP_PS_NoProtection; params->objects[params->nrofobjects].canon_flags = tmp[i].Flags; params->objects[params->nrofobjects].oi.ObjectCompressedSize = tmp[i].ObjectSize; params->objects[params->nrofobjects].oi.CaptureDate = tmp[i].Time; params->objects[params->nrofobjects].oi.ModificationDate = tmp[i].Time; params->objects[params->nrofobjects].flags |= PTPOBJECT_OBJECTINFO_LOADED; debug_objectinfo(params, tmp[i].ObjectHandle, ¶ms->objects[params->nrofobjects].oi); last = params->nrofobjects; params->nrofobjects++; changed = 1; } else { GP_LOG_D ("adding old objectid 0x%08x (nrofobs=%d,j=%d)", tmp[i].ObjectHandle, params->nrofobjects,j); ob = ¶ms->objects[(last+j)%params->nrofobjects]; /* for speeding up search */ last = (last+j)%params->nrofobjects; if (handle != PTP_HANDLER_SPECIAL) { ob->oi.ParentObject = handle; ob->flags |= PTPOBJECT_PARENTOBJECT_LOADED; } if (storageids.Storage[k] != PTP_HANDLER_SPECIAL) { ob->oi.StorageID = storageids.Storage[k]; ob->flags |= PTPOBJECT_STORAGEID_LOADED; } } } free (tmp); } if (changed) ptp_objects_sort (params); /* Do not cache ob, it might be reallocated and have a new address */ if (handle != 0xffffffff) { ret = ptp_object_want (params, handle, PTPOBJECT_OBJECTINFO_LOADED, &ob); if (ret == PTP_RC_OK) ob->flags |= PTPOBJECT_DIRECTORY_LOADED; } free (storageids.Storage); return PTP_RC_OK; } uint16_t ptp_list_folder (PTPParams *params, uint32_t storage, uint32_t handle) { unsigned int i, changed, last; uint16_t ret; uint32_t xhandle = handle; PTPObject *newobs; PTPObjectHandles handles; GP_LOG_D ("(storage=0x%08x, handle=0x%08x)", storage, handle); /* handle=0 is only not read when there is no object in the list yet * and we do the initial read. */ if (!handle && params->nrofobjects) return PTP_RC_OK; /* but we can override this to read 0 object of storages */ if (handle == PTP_HANDLER_SPECIAL) handle = 0; /* Canon EOS Fast directory strategy */ if ((params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_EOS_GetObjectInfoEx)) { ret = ptp_list_folder_eos (params, storage, handle); if (ret == PTP_RC_OK) return ret; } if (handle) { /* 0 is the virtual root */ PTPObject *ob; /* first check if object itself is loaded, and get its objectinfo. */ ret = ptp_object_want (params, handle, PTPOBJECT_OBJECTINFO_LOADED, &ob); if (ret != PTP_RC_OK) return ret; if (ob->oi.ObjectFormat != PTP_OFC_Association) return PTP_RC_GeneralError; if (ob->flags & PTPOBJECT_DIRECTORY_LOADED) return PTP_RC_OK; ob->flags |= PTPOBJECT_DIRECTORY_LOADED; debug_objectinfo(params, handle, &ob->oi); } GP_LOG_D ("Listing ... "); if (handle == 0) xhandle = PTP_HANDLER_SPECIAL; /* 0 would mean all */ ret = ptp_getobjecthandles (params, storage, 0, xhandle, &handles); if (ret == PTP_RC_ParameterNotSupported) {/* try without storage */ storage = PTP_HANDLER_SPECIAL; ret = ptp_getobjecthandles (params, PTP_HANDLER_SPECIAL, 0, xhandle, &handles); } if (ret == PTP_RC_ParameterNotSupported) { /* fall back to always supported method */ xhandle = PTP_HANDLER_SPECIAL; handle = PTP_HANDLER_SPECIAL; ret = ptp_getobjecthandles (params, PTP_HANDLER_SPECIAL, 0, 0, &handles); } if (ret != PTP_RC_OK) return ret; last = changed = 0; for (i=0;inrofobjects;j++) { if (params->objects[(last+j)%params->nrofobjects].oid == handles.Handler[i]) { ob = ¶ms->objects[(last+j)%params->nrofobjects]; break; } } if (j == params->nrofobjects) { GP_LOG_D ("adding new objectid 0x%08x (nrofobs=%d,j=%d)", handles.Handler[i], params->nrofobjects,j); newobs = realloc (params->objects,sizeof(PTPObject)*(params->nrofobjects+1)); if (!newobs) return PTP_RC_GeneralError; params->objects = newobs; memset (¶ms->objects[params->nrofobjects],0,sizeof(params->objects[params->nrofobjects])); params->objects[params->nrofobjects].oid = handles.Handler[i]; params->objects[params->nrofobjects].flags = 0; /* root directory list files might return all files, so avoid tagging it */ if (handle != PTP_HANDLER_SPECIAL && handle) { GP_LOG_D (" parenthandle 0x%08x", handle); if (handles.Handler[i] == handle) { /* EOS bug where oid == parent(oid) */ params->objects[params->nrofobjects].oi.ParentObject = 0; } else { params->objects[params->nrofobjects].oi.ParentObject = handle; } params->objects[params->nrofobjects].flags |= PTPOBJECT_PARENTOBJECT_LOADED; } if (storage != PTP_HANDLER_SPECIAL) { GP_LOG_D (" storage 0x%08x", storage); params->objects[params->nrofobjects].oi.StorageID = storage; params->objects[params->nrofobjects].flags |= PTPOBJECT_STORAGEID_LOADED; } params->nrofobjects++; changed = 1; } else { GP_LOG_D ("adding old objectid 0x%08x (nrofobs=%d,j=%d)", handles.Handler[i], params->nrofobjects,j); ob = ¶ms->objects[(last+j)%params->nrofobjects]; /* for speeding up search */ last = (last+j)%params->nrofobjects; if (handle != PTP_HANDLER_SPECIAL) { ob->oi.ParentObject = handle; ob->flags |= PTPOBJECT_PARENTOBJECT_LOADED; } if (storage != PTP_HANDLER_SPECIAL) { ob->oi.StorageID = storage; ob->flags |= PTPOBJECT_STORAGEID_LOADED; } } } free (handles.Handler); if (changed) ptp_objects_sort (params); return PTP_RC_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .get_info_func = get_info_func, .set_info_func = set_info_func, .get_file_func = get_file_func, .read_file_func = read_file_func, .del_file_func = delete_file_func, .put_file_func = put_file_func, .make_dir_func = make_dir_func, .remove_dir_func = remove_dir_func, .storage_info_func = storage_info_func }; int camera_init (Camera *camera, GPContext *context) { CameraAbilities a; unsigned int i; int ret, tries = 0; PTPParams *params; char *curloc, *camloc; GPPortSettings settings; uint32_t sessionid; char buf[20]; int start_timeout = USB_START_TIMEOUT; int canon_start_timeout = USB_CANON_START_TIMEOUT; gp_port_get_settings (camera->port, &settings); /* Make sure our port is either USB or PTP/IP. */ if ( (camera->port->type != GP_PORT_USB) && (camera->port->type != GP_PORT_PTPIP) && (camera->port->type != GP_PORT_USB_SCSI) ) { gp_context_error (context, _("Currently, PTP is only implemented for " "USB and PTP/IP cameras currently, port type %x"), camera->port->type); return (GP_ERROR_UNKNOWN_PORT); } camera->functions->about = camera_about; camera->functions->exit = camera_exit; camera->functions->trigger_capture = camera_trigger_capture; camera->functions->capture = camera_capture; camera->functions->capture_preview = camera_capture_preview; camera->functions->summary = camera_summary; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; camera->functions->wait_for_event = camera_wait_for_event; /* We need some data that we pass around */ C_MEM (camera->pl = calloc (1, sizeof (CameraPrivateLibrary))); params = &camera->pl->params; params->debug_func = ptp_debug_func; params->error_func = ptp_error_func; C_MEM (params->data = calloc (1, sizeof (PTPData))); ((PTPData *) params->data)->camera = camera; params->byteorder = PTP_DL_LE; if (params->byteorder == PTP_DL_LE) camloc = "UCS-2LE"; else camloc = "UCS-2BE"; gp_camera_get_abilities(camera, &a); #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) curloc = nl_langinfo (CODESET); if (!curloc) curloc="UTF-8"; params->cd_ucs2_to_locale = iconv_open(curloc, camloc); params->cd_locale_to_ucs2 = iconv_open(camloc, curloc); if ((params->cd_ucs2_to_locale == (iconv_t) -1) || (params->cd_locale_to_ucs2 == (iconv_t) -1)) { GP_LOG_E ("Failed to create iconv converter."); /* we can fallback */ /*return (GP_ERROR_OS_FAILURE);*/ } #endif for (i = 0; idevice_flags = models[i].device_flags; break; } /* do not run the funny MTP stuff on the cameras for now */ params->device_flags |= DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL; params->device_flags |= DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST; } /* map the libmtp flags to ours. Currently its just 1 flag. */ for (i = 0; idevice_flags = mtp_models[i].flags; break; } } switch (camera->port->type) { case GP_PORT_USB: params->sendreq_func = ptp_usb_sendreq; params->senddata_func = ptp_usb_senddata; params->getresp_func = ptp_usb_getresp; params->getdata_func = ptp_usb_getdata; params->event_wait = ptp_usb_event_wait; params->event_check = ptp_usb_event_check; params->cancelreq_func = ptp_usb_control_cancel_request; params->maxpacketsize = settings.usb.maxpacketsize; GP_LOG_D ("maxpacketsize %d", settings.usb.maxpacketsize); if (params->device_flags & DEVICE_FLAG_OLYMPUS_XML_WRAPPED) { #ifdef HAVE_LIBXML2 GP_LOG_D ("Entering Olympus USB Mass Storage XML Wrapped Mode.\n"); olympus_setup (params); #else gp_context_error (context, _("Olympus wrapped XML support is currently only available with libxml2 support built in.")); \ return GP_ERROR; #endif } break; case GP_PORT_PTPIP: { GPPortInfo info; char *xpath; ret = gp_port_get_info (camera->port, &info); if (ret != GP_OK) { GP_LOG_E ("Failed to get port info?"); return ret; } gp_port_info_get_path (info, &xpath); ret = ptp_ptpip_connect (params, xpath); if (ret != GP_OK) { GP_LOG_E ("Failed to connect."); return ret; } params->sendreq_func = ptp_ptpip_sendreq; params->senddata_func = ptp_ptpip_senddata; params->getresp_func = ptp_ptpip_getresp; params->getdata_func = ptp_ptpip_getdata; params->event_wait = ptp_ptpip_event_wait; params->event_check = ptp_ptpip_event_check; break; } default: break; } if (!params->maxpacketsize) params->maxpacketsize = 64; /* assume USB 1.0 */ /* Read configurable timeouts */ #define XT(val,def) \ if ((GP_OK == gp_setting_get("ptp2",#val,buf))) \ sscanf(buf, "%d", &val); \ if (!val) val = def; XT(normal_timeout,USB_NORMAL_TIMEOUT); XT(capture_timeout,USB_TIMEOUT_CAPTURE); /* Choose a shorter timeout on inital setup to avoid * having the user wait too long. */ if (a.usb_vendor == 0x4a9) { /* CANON */ /* our special canon friends get a shorter timeout, sinc ethey * occasionaly need 2 retries. */ XT(canon_start_timeout,USB_CANON_START_TIMEOUT); CR (gp_port_set_timeout (camera->port, canon_start_timeout)); } else { XT(start_timeout,USB_START_TIMEOUT); CR (gp_port_set_timeout (camera->port, start_timeout)); } #undef XT /* Establish a connection to the camera */ SET_CONTEXT(camera, context); tries = 0; sessionid = 1; while (1) { ret = LOG_ON_PTP_E (ptp_opensession (params, sessionid)); if (ret == PTP_RC_SessionAlreadyOpened || ret == PTP_RC_OK) break; tries++; if (ret==PTP_RC_InvalidTransactionID) { sessionid++; /* Try a couple sessionids starting with 1 */ if (tries < 10) continue; if (tries < 11 && camera->port->type == GP_PORT_USB) { /* Try whacking PTP device */ ptp_usb_control_device_reset_request (&camera->pl->params); sessionid = 1; continue; } } else if ((ret == PTP_ERROR_RESP_EXPECTED) || (ret == PTP_ERROR_IO)) { /* Try whacking PTP device */ if (tries < 3 && camera->port->type == GP_PORT_USB) ptp_usb_control_device_reset_request (params); } if (tries < 3) continue; /* FIXME: deviceinfo is not read yet ... (see macro)*/ C_PTP_REP (ret); } /* We have cameras where a response takes 15 seconds(!), so make * post init timeouts longer */ CR (gp_port_set_timeout (camera->port, normal_timeout)); if (params->device_flags & DEVICE_FLAG_OLYMPUS_XML_WRAPPED) { unsigned char *data; unsigned int len; PTPObjectInfo oi; uint32_t parenthandle,storagehandle, handle; GP_LOG_D ("Sending empty XDISCVRY.X3C file to camera ... "); storagehandle = 0x80000001; parenthandle = 0; handle = 0; memset (&oi, 0, sizeof (oi)); oi.ObjectFormat = PTP_OFC_Script; oi.StorageID = 0x80000001; oi.Filename = "XDISCVRY.X3C"; oi.ObjectCompressedSize = 0; C_PTP_REP (ptp_sendobjectinfo (params, &storagehandle, &parenthandle, &handle, &oi)); GP_LOG_D ("olympus getcameraid\n"); C_PTP_REP (ptp_olympus_getcameraid (params, &data, &len)); GP_LOG_D ("olympus setcameracontrolmode\n"); C_PTP_REP (ptp_olympus_setcameracontrolmode (params, 1)); GP_LOG_D ("olympus opensession\n"); C_PTP_REP (ptp_olympus_opensession (params, &data, &len)); } /* Seems HP does not like getdevinfo outside of session although it's legal to do so */ /* get device info */ C_PTP_REP (ptp_getdeviceinfo(params, ¶ms->deviceinfo)); CR (fixup_cached_deviceinfo (camera,¶ms->deviceinfo)); print_debug_deviceinfo(params, ¶ms->deviceinfo); switch (params->deviceinfo.VendorExtensionID) { case PTP_VENDOR_CANON: #if 0 if (ptp_operation_issupported(params, PTP_OC_CANON_ThemeDownload)) { add_special_file("startimage.jpg", canon_theme_get, canon_theme_put); add_special_file("startsound.wav", canon_theme_get, canon_theme_put); add_special_file("operation.wav", canon_theme_get, canon_theme_put); add_special_file("shutterrelease.wav", canon_theme_get, canon_theme_put); add_special_file("selftimer.wav", canon_theme_get, canon_theme_put); } #endif /* If CHDK is present and enabled, this will go and overwrite the function tables again */ if ( ptp_operation_issupported(params, PTP_OC_CHDK) && (GP_OK == gp_setting_get("ptp2","chdk",buf)) && !strcmp(buf,"on") ) return chdk_init (camera, context); if (ptp_operation_issupported(params, PTP_OC_CANON_EOS_SetRemoteMode)) C_PTP (ptp_canon_eos_setremotemode(params, 1)); break; case PTP_VENDOR_NIKON: if (ptp_operation_issupported(params, PTP_OC_NIKON_CurveDownload)) add_special_file("curve.ntc", nikon_curve_get, nikon_curve_put); break; case PTP_VENDOR_SONY: if (ptp_operation_issupported(params, 0x9280)) { #if 0 C_PTP (ptp_sony_9280(params, 0x1,0,1,0,0)); C_PTP (ptp_sony_9281(params, 0x1)); /* no data sent back */ C_PTP (ptp_sony_9280(params, 0x1,0,2,0,0)); C_PTP (ptp_sony_9281(params, 0x1)); /* no data sent back */ C_PTP (ptp_sony_9280(params, 0x4,0,1,0,0)); C_PTP (ptp_sony_9281(params, 0x4)); /* gets big data blob? */ /* also tries this multiple times , but gets back 2006 error ptp_sony_9280(params, 0x5,0,1,0,0); */ #endif /* This combination seems to reportedly work */ C_PTP (ptp_sony_9280(params, 0x4, 2,2,0,0, 0x01,0x01)); C_PTP (ptp_sony_9281(params, 0x4)); } break; default: break; } #if 0 /* new ptp 1.1 command, implemented in the newer iphone firmware */ { unsigned char *data; ptp_getfilesystemmanifest (params, 0x00010001, 0, 0, &data); } #endif /* avoid doing this on the Sonys DSLRs in control mode, they hang. :( */ if (params->deviceinfo.VendorExtensionID != PTP_VENDOR_SONY) ptp_list_folder (params, PTP_HANDLER_SPECIAL, PTP_HANDLER_SPECIAL); /* read the root directory to avoid the "DCIM WRONG ROOT" bugs */ CR (gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera)); { PTPStorageIDs storageids; /* TODO: ret is ignored here */ ret = ptp_getstorageids(params, &storageids); if (ret == PTP_RC_OK) { unsigned int k; for (k=0;k * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * Notes: * XDISCVRY.X3C file sent on start, empty. */ #define _DEFAULT_SOURCE #include "config.h" #ifdef HAVE_LIBXML2 #include #include #include #include <_stdint.h> #include #include "ptp.h" #include "ptp-private.h" #include "ptp-pack.c" #include "olympus-wrap.h" #include #include #include #include /* * The following things are the way the are just to ensure that USB * wrapper packets have the correct byte-order on all types of machines. * Intel byte order is used instead of "network" byte order :-( */ typedef struct { unsigned char c1, c2, c3, c4; } uw32_t; /* A type for 32-bit integers */ typedef struct { unsigned char c1, c2, c3, c4; } uw4c_t; /* A type for 4-byte things */ static uw32_t uw_value(unsigned int value) /* Convert from host-integer to uw32_t */ { uw32_t ret; ret.c1 = (value & 0x000000ffUL); ret.c2 = (value >> 8 & 0x000000ffUL); ret.c3 = (value >> 16 & 0x000000ffUL); ret.c4 = (value >> 24 & 0x000000ffUL); return ret; } static unsigned char cmdbyte (unsigned char nr) { return nr | 0xc0; } /* Test for equality between two uw32_t's or two uw4c_t's. */ #define UW_EQUAL(a, b) \ ((a).c1==(b).c1 && (a).c2==(b).c2 && (a).c3==(b).c3 && (a).c4==(b).c4) /* * USB storage wrapper packets start with ASCII bytes "USBC". * The responses back from the camera start with "USBS". */ #define UW_MAGIC_OUT ((uw4c_t){ 'U','S','B','C' }) #define UW_MAGIC_IN ((uw4c_t){ 'U','S','B','S' }) #pragma pack(1) /* * The rest of the USB wrapper packet looks like this: */ /* This is linux/include/linux/usb/storage.h, struct bulk_cb_wrap * 31 byte length */ typedef struct { uw4c_t magic; /* The letters U S B C for packets sent to camera */ uw32_t tag; /* The SCSI command tag */ uw32_t rw_length; /* Length of data to be read or written next */ unsigned char flags; /* in / out flag mostly */ unsigned char lun; /* 0 here */ unsigned char length; /* of the CDB... but 0x0c is used here in the traces */ unsigned char cdb[16]; } uw_header_t; /* * This is the end response block from the camera looks like this: * * This is the generic bulk style USB Storage response block. * * linux/include/linux/usb/storage.h, struct bulk_cs_wrap */ typedef struct { uw4c_t magic; /* The letters U S B S for packets from camera */ uw32_t tag; /* A copy of whatever value the host made up */ uw32_t residue; /* residual read? */ char status; /* status byte */ } uw_response_t; /* In the SCSI API, the CDB[16] block. */ typedef struct { unsigned char cmd; char zero1[8]; uw32_t length; char zero2[3]; } uw_scsicmd_t; #pragma pack() /* This is for the unique tag id for the UMS command / response * It gets incremented by one for every command. */ static int ums_tag = 0x42424242; /* * This routine is called after every UW_REQUEST_XXX to get an OK * with a matching session ID. */ static int usb_wrap_OK (GPPort *dev, uw_header_t *hdr) { uw_response_t rsp; int ret; memset(&rsp, 0, sizeof(rsp)); GP_LOG_D ("usb_wrap_OK"); if ((ret = gp_port_read(dev, (char*)&rsp, sizeof(rsp))) != sizeof(rsp)) { GP_LOG_D ("gp_port_read *** FAILED (%d vs %d bytes)", (int)sizeof(rsp), ret); if (ret < GP_OK) return ret; return GP_ERROR; } if ( !UW_EQUAL(rsp.magic, UW_MAGIC_IN) || !UW_EQUAL(rsp.tag, hdr->tag)) { GP_LOG_E ("usb_wrap_OK wrong session *** FAILED"); return GP_ERROR; } /* * 32bit residual length (0) and 8 bit status (0) are good. */ if ( rsp.residue.c1 != 0 || rsp.residue.c2 != 0 || rsp.residue.c3 != 0 || rsp.residue.c4 != 0 || rsp.status != 0) { GP_LOG_E ("Error: usb_wrap_OK failed - residual non-0 or status %x", rsp.status); return GP_ERROR; } return GP_OK; } /* so it mirrors: ret = gp_port_send_scsi_cmd (camera->port, 1, (char*)&cmd, sizeof(cmd), sense_buffer, sizeof(sense_buffer), (char*)&usbreq, usbreq.length); */ static int scsi_wrap_cmd( GPPort *port, int todev, char *cmd, unsigned int cmdlen, char *sense, unsigned int senselen, char *data, unsigned int size ) { uw_header_t hdr; int ret; memset(&hdr, 0, sizeof(hdr)); hdr.magic = UW_MAGIC_OUT; hdr.tag = uw_value(ums_tag); ums_tag++; hdr.rw_length = uw_value(size); hdr.length = 12; /* seems to be always 12, even as we send 16 byte CDBs */ hdr.flags = todev?0:(1<<7); hdr.lun = 0; memcpy(hdr.cdb, cmd, cmdlen); if ((ret=gp_port_write(port, (char*)&hdr, sizeof(hdr))) < GP_OK) { GP_LOG_E ("scsi_wrap_cmd *** FAILED to write scsi cmd"); return GP_ERROR_IO; } if (todev) { if ((ret=gp_port_write(port, (char*)data, size)) < GP_OK) { GP_LOG_E ("scsi_wrap_cmd *** FAILED to write scsi data"); return GP_ERROR_IO; } } else { if ((ret=gp_port_read(port, (char*)data, size)) < GP_OK) { GP_LOG_E ("scsi_wrap_cmd *** FAILED to read scsi data"); return GP_ERROR_IO; } } if ((ret=usb_wrap_OK(port, &hdr)) != GP_OK) { GP_LOG_E ("scsi_wrap_cmd *** FAILED to get scsi reply"); return GP_ERROR_IO; } return GP_OK; } #define gp_port_send_scsi_cmd scsi_wrap_cmd /* Transaction data phase description */ #define PTP_DP_NODATA 0x0000 /* no data phase */ #define PTP_DP_SENDDATA 0x0001 /* sending data */ #define PTP_DP_GETDATA 0x0002 /* receiving data */ #define PTP_DP_DATA_MASK 0x00ff /* data phase mask */ static uint16_t ums_wrap_sendreq (PTPParams* params, PTPContainer* req, int dataphase) { Camera *camera = ((PTPData *)params->data)->camera; PTPUSBBulkContainer usbreq; char buf[64]; int ret; uw_scsicmd_t cmd; char sense_buffer[32]; GP_LOG_D ("ums_wrap_sendreq"); /* Build appropriate USB container */ usbreq.length= htod32(PTP_USB_BULK_REQ_LEN- (sizeof(uint32_t)*(5-req->Nparam))); usbreq.type = htod16(PTP_USB_CONTAINER_COMMAND); usbreq.code = htod16(req->Code); usbreq.trans_id = htod32(req->Transaction_ID); usbreq.payload.params.param1 = htod32(req->Param1); usbreq.payload.params.param2 = htod32(req->Param2); usbreq.payload.params.param3 = htod32(req->Param3); usbreq.payload.params.param4 = htod32(req->Param4); usbreq.payload.params.param5 = htod32(req->Param5); memset(buf,0,sizeof(buf)); memset (&cmd, 0, sizeof(cmd)); cmd.cmd = cmdbyte(0); cmd.length = uw_value(usbreq.length); ret = gp_port_send_scsi_cmd (camera->port, 1, (char*)&cmd, sizeof(cmd), sense_buffer, sizeof(sense_buffer), (char*)&usbreq, usbreq.length); GP_LOG_D ("send_scsi_cmd ret %d", ret); return PTP_RC_OK; } static uint16_t ums_wrap_senddata ( PTPParams* params, PTPContainer* ptp, uint64_t sendlen, PTPDataHandler*getter ) { Camera *camera = ((PTPData *)params->data)->camera; PTPUSBBulkContainer usbreq; int ret; unsigned long gotlen; unsigned char *xdata; uw_scsicmd_t cmd; char sense_buffer[32]; GP_LOG_D ("ums_wrap_senddata"); memset (&cmd, 0, sizeof(cmd)); cmd.cmd = cmdbyte(1); cmd.length = uw_value(sendlen+12); xdata = malloc(sendlen + 12); usbreq.length = htod32(sendlen + 12); usbreq.type = htod16(PTP_USB_CONTAINER_DATA); usbreq.code = htod16(ptp->Code); usbreq.trans_id = htod32(ptp->Transaction_ID); memcpy (xdata, &usbreq, 12); ret = getter->getfunc(params, getter->priv, sendlen, xdata+12, &gotlen); if (ret != PTP_RC_OK) { GP_LOG_E ("ums_wrap_senddata *** data get from handler FAILED, ret %d", ret); return ret; } if (gotlen != sendlen) { GP_LOG_E ("ums_wrap_senddata *** data get from handler got %ld instead of %ld", gotlen, sendlen); return PTP_ERROR_IO; } ret = gp_port_send_scsi_cmd (camera->port, 1, (char*)&cmd, sizeof(cmd), sense_buffer, sizeof(sense_buffer), (char*)xdata, sendlen+12); GP_LOG_D ("send_scsi_cmd ret %d", ret); free (xdata); return PTP_RC_OK; } static uint16_t ums_wrap_getresp (PTPParams* params, PTPContainer* resp) { Camera *camera = ((PTPData *)params->data)->camera; PTPUSBBulkContainer usbresp; char buf[64]; int ret; uw_scsicmd_t cmd; char sense_buffer[32]; GP_LOG_D ("ums_wrap_getresp"); memset (&cmd, 0, sizeof(cmd)); cmd.cmd = cmdbyte(3); cmd.length = uw_value(sizeof(buf)); ret = gp_port_send_scsi_cmd (camera->port, 0, (char*)&cmd, sizeof(cmd), sense_buffer, sizeof(sense_buffer), (char*)buf, sizeof(buf)); GP_LOG_D ("send_scsi_cmd ret %d", ret); memcpy (&usbresp, buf, sizeof(buf)); resp->Code = dtoh16(usbresp.code); resp->Nparam = (dtoh32(usbresp.length)-PTP_USB_BULK_REQ_LEN)/sizeof(uint32_t); resp->Param1 = dtoh32(usbresp.payload.params.param1); resp->Param2 = dtoh32(usbresp.payload.params.param2); resp->Param3 = dtoh32(usbresp.payload.params.param3); resp->Param4 = dtoh32(usbresp.payload.params.param4); resp->Param5 = dtoh32(usbresp.payload.params.param5); return PTP_RC_OK; } static uint16_t ums_wrap_getdata (PTPParams* params, PTPContainer* ptp, PTPDataHandler *putter) { Camera *camera = ((PTPData *)params->data)->camera; PTPUSBBulkContainer usbresp; char buf[64]; int ret; unsigned long recvlen; char *data; uw_scsicmd_t cmd; char sense_buffer[32]; GP_LOG_D ("ums_wrap_getdata"); memset(&cmd,0,sizeof(cmd)); cmd.cmd = cmdbyte(4); cmd.length = uw_value(sizeof(buf)); ret = gp_port_send_scsi_cmd (camera->port, 0, (char*)&cmd, sizeof(cmd), sense_buffer, sizeof(sense_buffer), (char*)buf, sizeof(buf)); GP_LOG_D ("send_scsi_cmd ret %d", ret); memcpy (&usbresp, buf, sizeof(buf)); if ((dtoh16(usbresp.code) != ptp->Code) && (dtoh16(usbresp.code) != PTP_RC_OK)) { GP_LOG_D ("ums_wrap_getdata *** PTP code %04x during PTP data in size read", dtoh16(usbresp.code)); /* break; */ } if (dtoh16(usbresp.length) < 16) { recvlen = 0; GP_LOG_D ("ums_wrap_getdata *** PTP size %d during PTP data in size read, expected 16", dtoh16(usbresp.length)); } else { recvlen = dtoh32(usbresp.payload.params.param1); } data = malloc (recvlen); if (!data) return PTP_ERROR_IO; memset(&cmd,0,sizeof(cmd)); cmd.cmd = cmdbyte(2); cmd.length = uw_value(recvlen); ret = gp_port_send_scsi_cmd (camera->port, 0, (char*)&cmd, sizeof(cmd), sense_buffer, sizeof(sense_buffer), (char*)data, recvlen); GP_LOG_D ("send_scsi_cmd 2 ret %d", ret); /* skip away the 12 byte header */ if (recvlen >= 16) GP_LOG_DATA (data + PTP_USB_BULK_HDR_LEN, recvlen - PTP_USB_BULK_HDR_LEN, "ptp2/olympus/getdata"); ret = putter->putfunc ( params, putter->priv, recvlen - PTP_USB_BULK_HDR_LEN, (unsigned char*)data + PTP_USB_BULK_HDR_LEN); free (data); if (ret != PTP_RC_OK) { GP_LOG_E ("ums_wrap_getdata FAILED to push data into put handle, ret %x", ret); return PTP_ERROR_IO; } return PTP_RC_OK; } static char* generate_event_OK_xml(PTPParams *params, PTPContainer *ptp); static int parse_event_xml(PTPParams *params, const char *txt, PTPContainer *resp); static int olympus_xml_transfer (PTPParams *params, char *cmdxml, char **inxml ) { PTPContainer ptp2; int res; PTPObjectInfo oi; unsigned char *resxml, *oidata = NULL; uint32_t size, newhandle; uint16_t ret; PTPParams *outerparams = params->outer_params; GP_LOG_D ("olympus_xml_transfer"); while (1) { GP_LOG_D ("... checking camera for events ..."); ret = outerparams->event_check(outerparams, &ptp2); if (ret == PTP_RC_OK) { char *evxml; GP_LOG_D ("event: code %04x, p %08x", ptp2.Code, ptp2.Param1); if (ptp2.Code != PTP_EC_RequestObjectTransfer) { ptp_add_event (params, &ptp2); goto skip; } newhandle = ptp2.Param1; if ((newhandle & 0xff000000) != 0x1e000000) { GP_LOG_D ("event 0x%04x, handle 0x%08x received, no XML event, just passing on", ptp2.Code, ptp2.Param1); ptp_add_event (params, &ptp2); continue; } ret = ptp_getobjectinfo (outerparams, newhandle, &oi); if (ret != PTP_RC_OK) return ret; eventhandler: GP_LOG_D ("event xml transfer: got new file: %s", oi.Filename); ret = ptp_getobject (outerparams, newhandle, (unsigned char**)&resxml); if (ret != PTP_RC_OK) return ret; evxml = malloc (oi.ObjectCompressedSize + 1); memcpy (evxml, resxml, oi.ObjectCompressedSize); evxml[oi.ObjectCompressedSize] = 0x00; GP_LOG_D ("file content: %s", evxml); parse_event_xml (params, evxml, &ptp2); /* parse it */ evxml = generate_event_OK_xml(params, &ptp2); GP_LOG_D ("... sending XML event reply to camera ... "); memset (&ptp2, 0 , sizeof (ptp2)); ptp2.Code = PTP_OC_SendObjectInfo; ptp2.Nparam = 1; ptp2.Param1 = 0x80000001; memset (&oi, 0, sizeof (oi)); oi.ObjectFormat = PTP_OFC_Script; oi.StorageID = 0x80000001; oi.Filename = "HRSPONSE.X3C"; oi.ObjectCompressedSize = strlen(evxml); size = ptp_pack_OI(params, &oi, &oidata); res = ptp_transaction (outerparams, &ptp2, PTP_DP_SENDDATA, size, &oidata, NULL); if (res != PTP_RC_OK) return res; free(oidata); /*handle = ptp2.Param3; ... we do not use the returned handle and leave the file on camera. */ ptp2.Code = PTP_OC_SendObject; ptp2.Nparam = 0; res = ptp_transaction(outerparams, &ptp2, PTP_DP_SENDDATA, strlen(evxml), (unsigned char**)&evxml, NULL); if (res != PTP_RC_OK) return res; continue; } skip: GP_LOG_D ("... sending XML request to camera ... "); memset (&ptp2, 0 , sizeof (ptp2)); ptp2.Code = PTP_OC_SendObjectInfo; ptp2.Nparam = 1; ptp2.Param1 = 0x80000001; memset (&oi, 0, sizeof (oi)); oi.ObjectFormat = PTP_OFC_Script; oi.StorageID = 0x80000001; oi.Filename = "HREQUEST.X3C"; oi.ObjectCompressedSize = strlen(cmdxml); /* "HRSPONSE.X3C" ... sent back to camera after receiving an event. 2001event_wait(outerparams, &ptp2); if (ret != PTP_RC_OK) return ret; GP_LOG_D ("event: code %04x, p %08x", ptp2.Code, ptp2.Param1); if (ptp2.Code != PTP_EC_RequestObjectTransfer) { ptp_add_event (params, &ptp2); goto redo; } /* FIXME: check for 0x1e0000* ? */ newhandle = ptp2.Param1; ret = ptp_getobjectinfo (outerparams, newhandle, &oi); if (ret != PTP_RC_OK) return ret; GP_LOG_D ("regular xml transfer: got new file: %s", oi.Filename); if (strcmp(oi.Filename,"DRSPONSE.X3C")) { GP_LOG_E ("FIXME: regular xml transfer: got new file: %s", oi.Filename); goto eventhandler; } ret = ptp_getobject (outerparams, newhandle, (unsigned char**)&resxml); if (ret != PTP_RC_OK) return ret; *inxml = malloc (oi.ObjectCompressedSize + 1); memcpy (*inxml, resxml, oi.ObjectCompressedSize); (*inxml)[oi.ObjectCompressedSize] = 0x00; GP_LOG_D ("file content: %s", *inxml); /* parse it */ break; } return PTP_RC_OK; } static int traverse_tree (PTPParams *params, int depth, xmlNodePtr node) { xmlNodePtr next; xmlChar *xchar; int n; char *xx; if (!node) return FALSE; xx = malloc(depth * 4 + 1); memset (xx, ' ', depth*4); xx[depth*4] = 0; n = xmlChildElementCount (node); next = node; do { ptp_debug(params,"%snode %s", xx, next->name); ptp_debug(params,"%selements %d", xx, n); xchar = xmlNodeGetContent (next); ptp_debug(params,"%scontent %s", xx, xchar); traverse_tree (params, depth+1,xmlFirstElementChild (next)); } while ((next = xmlNextElementSibling (next))); return TRUE; } static int parse_9581_tree (xmlNodePtr node) { xmlNodePtr next; next = xmlFirstElementChild (node); while (next) { if (!strcmp ((char*)next->name, "data")) { char *decoded, *x; char *xchars = (char*)xmlNodeGetContent (next); x = decoded = malloc(strlen(xchars)+1); while (xchars[0] && xchars[1]) { int y; sscanf(xchars,"%02x", &y); *x++ = y; xchars+=2; } *x = '\0'; GP_LOG_D ("9581: %s", decoded); next = xmlNextElementSibling (next); free (decoded); continue; } GP_LOG_E ("9581: unhandled node type %s", next->name); next = xmlNextElementSibling (next); } /*traverse_tree (0, node);*/ return TRUE; } static int parse_910a_tree (xmlNodePtr node) { xmlNodePtr next; next = xmlFirstElementChild (node); do { if (!strcmp ((char*)next->name, "param")) { unsigned int x; xmlChar *xchar = xmlNodeGetContent (next); if (!sscanf((char*)xchar,"%08x", &x)) { fprintf(stderr,"could not parse param content %s\n", xchar); } fprintf(stderr,"param content is 0x%08x\n", x); continue; } fprintf (stderr,"910a: unhandled type %s\n", next->name); } while ((next = xmlNextElementSibling (next))); /*traverse_tree (0, node);*/ return TRUE; } static int parse_9302_tree (xmlNodePtr node) { xmlNodePtr next; xmlChar *xchar; next = xmlFirstElementChild (node); while (next) { if (!strcmp((char*)next->name, "x3cVersion")) { int x3cver; xchar = xmlNodeGetContent (next); sscanf((char*)xchar, "%04x", &x3cver); GP_LOG_D ("x3cVersion %d.%d", (x3cver>>8)&0xff, x3cver&0xff); goto xnext; } if (!strcmp((char*)next->name, "productIDs")) { char *x, *nextspace; int len; x = (char*)(xchar = xmlNodeGetContent (next)); GP_LOG_D ("productIDs:"); do { nextspace=strchr(x,' '); if (nextspace) nextspace++; /* ascii ptp string, 1 byte length, little endian 16 bit chars */ if (sscanf(x,"%02x", &len)) { int i; char *str = malloc(len+1); for (i=0;i>8) & 0xff) | ((xc & 0xff) << 8); str[i] = cx; } str[len] = 0; } GP_LOG_D ("\t%s", str); free (str); } x = nextspace; } while (x); goto xnext; } GP_LOG_E ("unknown node in 9301: %s", next->name); xnext: next = xmlNextElementSibling (next); } return TRUE; } #if 0 static int parse_9301_value (PTPParams *params, const char *str, uint16_t type, PTPPropertyValue *propval) { switch (type) { case 6: { /*UINT32*/ unsigned int x; if (!sscanf(str,"%08x", &x)) { ptp_debug( params, "could not parse uint32 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->u32 = x; break; } case 5: { /*INT32*/ int x; if (!sscanf(str,"%08x", &x)) { ptp_debug( params, "could not parse int32 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->i32 = x; break; } case 4: { /*UINT16*/ unsigned int x; if (!sscanf(str,"%04x", &x)) { ptp_debug( params, "could not parse uint16 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->u16 = x; break; } case 3: { /*INT16*/ int x; if (!sscanf(str,"%04x", &x)) { ptp_debug( params, "could not parse int16 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->i16 = x; break; } case 2: { /*UINT8*/ unsigned int x; if (!sscanf(str,"%02x", &x)) { ptp_debug( params, "could not parse uint8 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->u8 = x; break; } case 1: { /*INT8*/ int x; if (!sscanf(str,"%02x", &x)) { ptp_debug( params, "could not parse int8 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->i8 = x; break; } case 65535: { /* string */ int len; /* ascii ptp string, 1 byte length, little endian 16 bit chars */ if (sscanf(str,"%02x", &len)) { int i; char *xstr = malloc(len+1); for (i=0;i>8) & 0xff) | ((xc & 0xff) << 8); xstr[i] = cx; } xstr[len] = 0; } ptp_debug( params, "\t%s", xstr); propval->str = xstr; break; } ptp_debug( params, "string %s not parseable!", str); return PTP_RC_GeneralError; } case 7: /*INT64*/ case 8: /*UINT64*/ case 9: /*INT128*/ case 10: /*UINT128*/ default: ptp_debug( params, "unhandled data type %d!", type); return PTP_RC_GeneralError; } return PTP_RC_OK; } static int parse_9301_propdesc (PTPParams *params, xmlNodePtr node, PTPDevicePropDesc *dpd) { xmlNodePtr next; int type = -1; dpd->FormFlag = PTP_DPFF_None; dpd->GetSet = PTP_DPGS_Get; next = xmlFirstElementChild (node); do { if (!strcmp((char*)next->name,"type")) { /* propdesc.DataType */ if (!sscanf((char*)xmlNodeGetContent (next), "%04x", &type)) { ptp_debug( params, "\ttype %s not parseable?",xmlNodeGetContent (next)); return 0; } ptp_debug( params, "type 0x%x", type); dpd->DataType = type; continue; } if (!strcmp((char*)next->name,"attribute")) { /* propdesc.GetSet */ int attr; if (!sscanf((char*)xmlNodeGetContent (next), "%02x", &attr)) { ptp_debug( params, "\tattr %s not parseable",xmlNodeGetContent (next)); return 0; } ptp_debug( params, "attribute 0x%x", attr); dpd->GetSet = attr; continue; } if (!strcmp((char*)next->name,"default")) { /* propdesc.FactoryDefaultValue */ ptp_debug( params, "default value"); parse_9301_value (params, (char*)xmlNodeGetContent (next), type, &dpd->FactoryDefaultValue); continue; } if (!strcmp((char*)next->name,"value")) { /* propdesc.CurrentValue */ ptp_debug( params, "current value"); parse_9301_value (params, (char*)xmlNodeGetContent (next), type, &dpd->CurrentValue); continue; } if (!strcmp((char*)next->name,"enum")) { /* propdesc.FORM.Enum */ int n,i; char *s; ptp_debug( params, "enum"); dpd->FormFlag = PTP_DPFF_Enumeration; s = (char*)xmlNodeGetContent (next); n = 0; do { s = strchr(s,' '); if (s) s++; n++; } while (s); dpd->FORM.Enum.NumberOfValues = n; dpd->FORM.Enum.SupportedValue = malloc (n * sizeof(PTPPropertyValue)); s = (char*)xmlNodeGetContent (next); i = 0; do { parse_9301_value (params, s, type, &dpd->FORM.Enum.SupportedValue[i]); /* should turn ' ' into \0? */ i++; s = strchr(s,' '); if (s) s++; } while (s && (iname,"range")) { /* propdesc.FORM.Enum */ char *s = (char*)xmlNodeGetContent (next); dpd->FormFlag = PTP_DPFF_Range; ptp_debug( params, "range"); parse_9301_value (params, s, type, &dpd->FORM.Range.MinimumValue); /* should turn ' ' into \0? */ s = strchr(s,' '); if (!s) continue; s++; parse_9301_value (params, s, type, &dpd->FORM.Range.MaximumValue); /* should turn ' ' into \0? */ s = strchr(s,' '); if (!s) continue; s++; parse_9301_value (params, s, type, &dpd->FORM.Range.StepSize); /* should turn ' ' into \0? */ continue; } ptp_debug (params, "\tpropdescvar: %s", next->name); ptp_debug (params, "\tcontent: %s", (char*)xmlNodeGetContent(next)); traverse_tree (params, 3, xmlFirstElementChild(next)); } while ((next = xmlNextElementSibling (next))); return PTP_RC_OK; } static int parse_1015_tree (xmlNodePtr node, uint16_t type) { PTPPropertyValue propval; xmlNodePtr next; next = xmlFirstElementChild (node); return parse_value ((char*)xmlNodeGetContent (next), type, &propval); } #endif static int traverse_output_tree (PTPParams *params, xmlNodePtr node, PTPContainer *resp) { xmlNodePtr next; int cmd; if (strcmp((char*)node->name,"output")) { GP_LOG_E ("node is not output, but %s.", node->name); return FALSE; } if (xmlChildElementCount(node) != 2) { GP_LOG_E ("output: expected 2 children, got %ld.", xmlChildElementCount(node)); return FALSE; } next = xmlFirstElementChild (node); if (!strcmp((char*)next->name,"result")) { int result; xmlChar *xchar; xchar = xmlNodeGetContent (next); if (!sscanf((char*)xchar,"%04x",&result)) GP_LOG_E ("failed scanning result from %s", xchar); resp->Code = result; GP_LOG_D ("ptp result is 0x%04x", result); } next = xmlNextElementSibling (next); if (!sscanf ((char*)next->name, "c%04x", &cmd)) { GP_LOG_E ("expected c, have %s", next->name); return FALSE; } GP_LOG_D ("cmd is 0x%04x", cmd); switch (cmd) { /* reviewed OK. */ case PTP_OC_OLYMPUS_Capture: return TRUE; case PTP_OC_GetDevicePropDesc: return TRUE; /* TODO */ #if 0 case PTP_OC_OLYMPUS_GetDeviceInfo: return parse_9301_tree (next); /* 9301 */ #endif case PTP_OC_OLYMPUS_OpenSession: return parse_9302_tree (next); case PTP_OC_OLYMPUS_GetCameraControlMode: return parse_910a_tree (next); case PTP_OC_OLYMPUS_GetCameraID: return parse_9581_tree (next); case PTP_OC_SetDevicePropValue: /* \n2001\n\n\n\n */ /* we could cross check the parameter, but its not strictly necessary */ return TRUE; #if 0 case PTP_OC_GetDevicePropValue: return parse_1015_tree ( next , PTP_DTC_UINT32); #endif default: return traverse_tree (params, 0, next); } return FALSE; } static int traverse_input_tree (PTPParams *params, xmlNodePtr node, PTPContainer *resp) { unsigned int curpar = 0; int evt; xmlNodePtr next = xmlFirstElementChild (node); uint32_t pars[5]; if (!next) { GP_LOG_E ("no nodes below input."); return FALSE; } resp->Code = 0; while (next) { if (sscanf((char*)next->name,"e%x",&evt)) { resp->Code = evt; switch (evt) { case PTP_EC_Olympus_PropertyChanged: { xmlNodePtr propidnode = xmlFirstElementChild(next); /* Gets a list of property that changed ... stuff into * event queue. */ while (propidnode) { int propid; if (sscanf((char*)propidnode->name,"p%x", &propid)) { PTPContainer ptp; memset(&ptp, 0, sizeof(ptp)); ptp.Code = PTP_EC_DevicePropChanged; ptp.Nparam = 1; ptp.Param1 = propid; ptp_add_event (params, &ptp); } propidnode = xmlNextElementSibling (propidnode); } break; } default: if (xmlChildElementCount(node) != 0) { GP_LOG_E ("event %s hat tree below?", (char*)next->name); traverse_tree (params, 0, xmlFirstElementChild(next)); } } next = xmlNextElementSibling (next); continue; } if (!strcmp((char*)next->name,"param")) { int x; if (sscanf((char*)xmlNodeGetContent(next),"%x", &x)) { if (curpar < sizeof(pars)/sizeof(pars[0])) pars[curpar++] = x; else GP_LOG_E ("ignore superfluous argument %s/%x", (char*)xmlNodeGetContent(next), x); } next = xmlNextElementSibling (next); continue; } GP_LOG_E ("parsing event input node, unknown node %s", (char*)next->name); next = xmlNextElementSibling (next); } resp->Nparam = curpar; switch (curpar) { case 5: resp->Param5 = pars[4]; case 4: resp->Param4 = pars[3]; case 3: resp->Param3 = pars[2]; case 2: resp->Param2 = pars[1]; case 1: resp->Param1 = pars[0]; case 0: break; } /* FIXME: decode content and inject into PTP event queue. */ return TRUE; } static int traverse_x3c_tree (PTPParams *params, xmlNodePtr node, PTPContainer *resp) { xmlNodePtr next; if (!node) return FALSE; if (strcmp((char*)node->name,"x3c")) { GP_LOG_E ("node is not x3c, but %s.", node->name); return FALSE; } if (xmlChildElementCount(node) != 1) { GP_LOG_E ("x3c: expected 1 child, got %ld.", xmlChildElementCount(node)); return FALSE; } next = xmlFirstElementChild (node); if (!strcmp((char*)next->name, "output")) return traverse_output_tree (params, next, resp); if (!strcmp((char*)next->name, "input")) return traverse_input_tree (params, next, resp); /* event */ GP_LOG_E ("unknown name %s below x3c.", next->name); return FALSE; } static int traverse_x3c_event_tree (PTPParams *params, xmlNodePtr node, PTPContainer *resp) { xmlNodePtr next; if (!node) return FALSE; if (strcmp((char*)node->name,"x3c")) { GP_LOG_E ("node is not x3c, but %s.", node->name); return FALSE; } if (xmlChildElementCount(node) != 1) { GP_LOG_E ("x3c: expected 1 child, got %ld.", xmlChildElementCount(node)); return FALSE; } next = xmlFirstElementChild (node); if (!strcmp((char*)next->name, "input")) return traverse_input_tree (params, next, resp); /* event */ GP_LOG_E ("unknown name %s below x3c.", next->name); return FALSE; } static int parse_xml(PTPParams *params, const char *txt, PTPContainer *resp) { xmlDocPtr docin; xmlNodePtr docroot; docin = xmlReadMemory (txt, strlen(txt), "http://gphoto.org/", "utf-8", 0); if (!docin) return FALSE; docroot = xmlDocGetRootElement (docin); if (!docroot) return FALSE; return traverse_x3c_tree (params, docroot, resp); } static int parse_event_xml(PTPParams *params, const char *txt, PTPContainer *resp) { xmlDocPtr docin; xmlNodePtr docroot; docin = xmlReadMemory (txt, strlen(txt), "http://gphoto.org/", "utf-8", 0); if (!docin) return FALSE; docroot = xmlDocGetRootElement (docin); if (!docroot) return FALSE; return traverse_x3c_event_tree (params, docroot, resp); } static void encode_command (xmlNodePtr inputnode, PTPContainer *ptp, unsigned char *data, int len) { xmlNodePtr cmdnode; char code[20]; sprintf(code,"c%04X", ptp->Code); cmdnode = xmlNewChild (inputnode, NULL, (xmlChar*)code, NULL); switch (ptp->Code) { case 0x1014: { /* OK */ sprintf (code, "p%04X", ptp->Param1); xmlNewChild (cmdnode, NULL, (xmlChar*)code, NULL); break; } case 0x1016: { char buf[20]; xmlNodePtr pnode; /* zb 000A000D */ /* FIXME: might still be wrong. */ /* We can directly byte encode the data we get from the PTP stack */ /* ... BUT the byte order is bigendian (printed) vs encoded */ int i; char *x = malloc (len*2+1); if (len <= 4) { /* just dump the bytes in big endian byteorder */ for (i=0;iParam1); pnode = xmlNewChild (cmdnode, NULL, (xmlChar*)buf, NULL); xmlNewChild (pnode, NULL, (xmlChar*)"value", (xmlChar*)x); free (x); break; } default: if (ptp->Nparam) { switch (ptp->Nparam) { case 1: sprintf (code, "%08X", ptp->Param1); xmlNewChild (cmdnode, NULL, (xmlChar*)"param", (xmlChar*)code); break; case 2: sprintf (code, "%08X", ptp->Param1); xmlNewChild (cmdnode, NULL, (xmlChar*)"param", (xmlChar*)code); sprintf (code, "%08X", ptp->Param2); xmlNewChild (cmdnode, NULL, (xmlChar*)"param", (xmlChar*)code); break; } } break; } } static char* generate_event_OK_xml(PTPParams *params, PTPContainer *ptp) { xmlDocPtr docout; xmlChar *output; int len; xmlNodePtr x3cnode, inputnode; char buf[10]; /* "HRSPONSE.X3C" ... sent back to camera after receiving an event. 2001Code); xmlNewChild (inputnode, NULL, (xmlChar*)"result", (xmlChar*)"2001"); xmlNewChild (inputnode, NULL, (xmlChar*)buf, NULL); xmlDocSetRootElement (docout, x3cnode); xmlDocDumpMemory (docout, &output, &len); GP_LOG_D ("generated xml is:"); GP_LOG_D ("%s", output); /* NOTE: Windows driver generates XML with CRLF, Unix just creates XML with LF. * Olympus E-410 does not seem to care. */ return (char*)output; } static char* generate_xml(PTPParams *params, PTPContainer *ptp, unsigned char *data, int len) { xmlDocPtr docout; xmlChar *output; xmlNodePtr x3cnode; xmlNodePtr inputnode; docout = xmlNewDoc ((xmlChar*)"1.0"); x3cnode = xmlNewDocNode (docout, NULL, (xmlChar*)"x3c", NULL); xmlNewNs (x3cnode,(xmlChar*)"http://www1.olympus-imaging.com/ww/x3c",NULL); inputnode = xmlNewChild (x3cnode, NULL, (xmlChar*)"input", NULL); /* The fun starts in here: */ encode_command (inputnode, ptp, data, len); xmlDocSetRootElement (docout, x3cnode); xmlDocDumpMemory (docout, &output, &len); GP_LOG_D ("generated xml is:"); GP_LOG_D ("%s", output); /* NOTE: Windows driver generates XML with CRLF, Unix just creates XML with LF. * Olympus E-410 does not seem to care. */ return (char*)output; } static int is_outer_operation (PTPParams* params, uint16_t opcode) { unsigned int i; GP_LOG_D ("is_outer_operation %04x", opcode); /* the ones we need before we can do getdeviceinfo */ if (opcode == PTP_OC_OpenSession) return 1; if (opcode == PTP_OC_SendObjectInfo) return 1; if (opcode == PTP_OC_SendObject) return 1; if (opcode == PTP_OC_GetDeviceInfo) return 1; if (opcode == PTP_OC_GetStorageIDs) return 1; /* all vendor ones are XML driven. */ if ((opcode & 0x8000) == 0x8000) return 0; /* Do nothing here, either do stuff in senddata, getdata or getresp, * which will get the PTPContainer req too. */ for (i=0;iouter_deviceinfo.OperationsSupported_len;i++) if (params->outer_deviceinfo.OperationsSupported[i]==opcode) return TRUE; GP_LOG_D ("is_outer_operation %04x - is WRAPPED", opcode); return FALSE; } static uint16_t ums_wrap2_event_check (PTPParams* params, PTPContainer* req) { PTPContainer ptp2; int res; PTPObjectInfo oi; unsigned char *resxml, *oidata = NULL; uint32_t size, newhandle; uint16_t ret; PTPParams *outerparams = params->outer_params; char *evxml; GP_LOG_D ("ums_wrap2_event_check"); while (1) { ret = outerparams->event_check(outerparams, &ptp2); if (ret != PTP_RC_OK) return ret; GP_LOG_D ("event: code %04x, p %08x", ptp2.Code, ptp2.Param1); if (ptp2.Code != PTP_EC_RequestObjectTransfer) { GP_LOG_D ("event 0x%04x received, just passing on", ptp2.Code); memcpy (req, &ptp2, sizeof(ptp2)); return PTP_RC_OK; } newhandle = ptp2.Param1; if ((newhandle & 0xff000000) != 0x1e000000) { GP_LOG_D ("event 0x%04x, handle 0x%08x received, no XML event, just passing on", ptp2.Code, ptp2.Param1); ptp_add_event (params, &ptp2); continue; } ret = ptp_getobjectinfo (outerparams, newhandle, &oi); if (ret != PTP_RC_OK) return ret; GP_LOG_D ("event xml: got new file: %s", oi.Filename); if (!strstr(oi.Filename,".X3C")) { GP_LOG_D ("PTP_EC_RequestObjectTransfer with non XML filename %s", oi.Filename); memcpy (req, &ptp2, sizeof(ptp2)); return PTP_RC_OK; } ret = ptp_getobject (outerparams, newhandle, (unsigned char**)&resxml); if (ret != PTP_RC_OK) return ret; evxml = malloc (oi.ObjectCompressedSize + 1); memcpy (evxml, resxml, oi.ObjectCompressedSize); evxml[oi.ObjectCompressedSize] = 0x00; GP_LOG_D ("file content: %s", evxml); /* FIXME: handle the case where we get a non X3C file, like during capture */ /* parse it ... into req */ parse_event_xml (params, evxml, req); /* generate reply */ evxml = generate_event_OK_xml(params, req); GP_LOG_D ("... sending XML event reply to camera ... "); memset (&ptp2, 0 , sizeof (ptp2)); ptp2.Code = PTP_OC_SendObjectInfo; ptp2.Nparam = 1; ptp2.Param1 = 0x80000001; memset (&oi, 0, sizeof (oi)); oi.ObjectFormat = PTP_OFC_Script; oi.StorageID = 0x80000001; oi.Filename = "HRSPONSE.X3C"; oi.ObjectCompressedSize = strlen(evxml); size = ptp_pack_OI(params, &oi, &oidata); res = ptp_transaction (outerparams, &ptp2, PTP_DP_SENDDATA, size, &oidata, NULL); if (res != PTP_RC_OK) return res; free(oidata); /*handle = ptp2.Param3; ... we do not use the returned handle and leave the file on camera. */ ptp2.Code = PTP_OC_SendObject; ptp2.Nparam = 0; res = ptp_transaction(outerparams, &ptp2, PTP_DP_SENDDATA, strlen(evxml), (unsigned char**)&evxml, NULL); if (res != PTP_RC_OK) return res; return PTP_RC_OK; } } static uint16_t ums_wrap2_sendreq (PTPParams* params, PTPContainer* req, int dataphase) { GP_LOG_D ("ums_wrap2_sendreq"); if (is_outer_operation (params,req->Code)) return ums_wrap_sendreq (params,req,dataphase); /* We do stuff in either senddata, getdata or getresp, not here. */ params->olympus_cmd = NULL; params->olympus_reply = NULL; return PTP_RC_OK; } static uint16_t ums_wrap2_senddata ( PTPParams* params, PTPContainer* ptp, uint64_t sendlen, PTPDataHandler*getter ) { unsigned char *data; uint16_t ret; unsigned long gotlen; if (is_outer_operation (params, ptp->Code)) return ums_wrap_senddata (params, ptp, sendlen, getter); GP_LOG_D ("ums_wrap2_senddata"); data = malloc (sendlen); ret = getter->getfunc(params, getter->priv, sendlen, data, &gotlen); if (ret != PTP_RC_OK) { GP_LOG_D ("ums_wrap2_senddata *** data get from handler FAILED, ret %d", ret); return ret; } params->olympus_cmd = generate_xml (params, ptp, data, sendlen); free (data); /* Do not do stuff yet, do it in getresp */ return PTP_RC_OK; } static uint16_t ums_wrap2_getdata (PTPParams* params, PTPContainer* ptp, PTPDataHandler *putter) { char *resxml = NULL; uint16_t ret; if (is_outer_operation (params, ptp->Code)) return ums_wrap_getdata (params, ptp, putter); GP_LOG_D ("ums_wrap2_getdata"); /* Either send or get data, not both. olympus_cmd is NULL now */ params->olympus_cmd = generate_xml (params, ptp, NULL, 0); /* Do the fun stuff. */ ret = olympus_xml_transfer (params, params->olympus_cmd, &resxml); if (ret != PTP_RC_OK) return ret; /* Remember the returned XML for getresp() for the PTP return code. */ params->olympus_reply = resxml; switch (ptp->Code) { #if 0 case PTP_OC_GetDevicePropDesc: { PTPPropertyDesc dpd; parse_9301_propdesc (xmlFirstElementChild (next), &dpd); /* decode the XML ... reencode the binary presentation of the propdesc */ break; } #endif default: /* Just put the XML blob as-is as data... It will be processed in ptp.c */ return putter->putfunc(params,putter->priv,strlen(resxml)+1,(unsigned char*)resxml); } } static uint16_t ums_wrap2_getresp (PTPParams* params, PTPContainer* resp) { int ret; if (is_outer_operation(params, resp->Code)) return ums_wrap_getresp (params, resp); GP_LOG_D ("ums_wrap2_getresp"); if (!params->olympus_cmd) /* no data phase at all */ params->olympus_cmd = generate_xml (params, resp, NULL, 0); if (!params->olympus_reply) { /* Do the actual handshake here. */ ret = olympus_xml_transfer (params, params->olympus_cmd, ¶ms->olympus_reply); if (ret != PTP_RC_OK) { GP_LOG_E ("ums_wrap2_getresp: error %x from transfer", ret); return ret; } } parse_xml (params, params->olympus_reply, resp); return PTP_RC_OK; } uint16_t olympus_setup (PTPParams *params) { PTPParams *outerparams; params->getresp_func = ums_wrap2_getresp; params->senddata_func = ums_wrap2_senddata; params->getdata_func = ums_wrap2_getdata; params->sendreq_func = ums_wrap2_sendreq; params->event_check = ums_wrap2_event_check; params->event_wait = ums_wrap2_event_check; params->outer_params = outerparams = malloc (sizeof(PTPParams)); memcpy(outerparams, params, sizeof(PTPParams)); outerparams->sendreq_func = ums_wrap_sendreq; outerparams->getresp_func = ums_wrap_getresp; outerparams->senddata_func = ums_wrap_senddata; outerparams->getdata_func = ums_wrap_getdata; outerparams->getdata_func = ums_wrap_getdata; /* events come just as PTP events */ outerparams->event_check = ptp_usb_event_check; outerparams->event_wait = ptp_usb_event_wait; return PTP_RC_OK; } #endif /* HAVE_LIBXML2 */ libgphoto2-2.5.9/camlibs/ptp2/olympus-wrap.h0000644000175000001440000000176712610415524015657 00000000000000/* olympus-wrap.h * * Copyright (c) 2012 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __OLYMPUS_USBWRAP_H__ #define __OLYMPUS_USBWRAP_H__ #include uint16_t olympus_setup (PTPParams *params); #endif /* __OLYMPUS_USBWRAP_H__ */ libgphoto2-2.5.9/camlibs/ptp2/README.ptp20000644000175000001440000001602712610415510014561 00000000000000libptp2 (c)2001-2003 Mariusz Woloszyn libgphoto2 ptp2 camlib driver also Copyright 2003 - 2012 Marcus Meissner Copyright 2005 Hubert Figuire. ======================== *Upstream documentation* ======================== - For the PTP command set there is no freely available reference. However you can buy the ISO standard ISO 15740 from http://www.iso.org/ - For PTP via USB Documentation check: http://www.usb.org/developers/devclass_docs/usb_still_img10.pdf - For PTP via PTPIP check: ftp://www.fotonation.com//download/IEEE_PTPIP_paper.pdf - For MTP additions check: http://www.usb.org/developers/devclass_docs/MTP_1.0.zip ===================== *About this software* ===================== This folder contains following code: generic: ptp.c - the main libptp2 code; this library is used to communicate with PTP devices. This is not libgphoto2 specific, but used in libmtp too. ptp.h - header file for the above. ptp-pack.c - this file is included into ptp.c (internal structure pack/unpack code) libgphoto2 specific: config.c - Contains the device and driver configuration management code. usb.c - The USB Imaging Class interface code. ptpip.c - The PTP/IP interfacing code (for wireless devices). library.c - gphoto2 PTP2 driver (used by gphoto2 to communicate with PTP devices) =================== *Supported Cameras* =================== NOTE, that if your camera is not on the list, it DOES NOT mean that it is not supported! Most of USB cameras designed after 2002 are PTP or USB Mass Storage. In both cases the camera is supported under Linux! Below the list of cameras explicitly supported by gphoto2 ptp driver: =============================================+ Model |Vendor ID|Product ID| ========================|=========|==========| Kodak DC240 (PTP) | 0x040a | 0x0121 | Kodak DC4800 | 0x040a | 0x0160 | Kodak DX3215 | 0x040a | 0x0525 | Kodak DX3500 | 0x040a | 0x0500 | Kodak DX3600 | 0x040a | 0x0510 | Kodak DX3700 | 0x040a | 0x0530 | Kodak DX3900 | 0x040a | 0x0170 | Kodak DX4330 | 0x040a | 0x0555 | Kodak DX4900 | 0x040a | 0x0550 | Kodak MC3 | 0x040a | 0x0400 | Kodak LS420 | 0x040a | 0x0540 | Kodak LS443 | 0x040a | 0x0568 | Kodak CX4200 | 0x040a | 0x0560 | Kodak CX4210 | 0x040a | 0x0560 | Kodak CX4230 | 0x040a | 0x0535 | Kodak CX4300 | 0x040a | 0x0566 | Kodak Easyshare *any* | 0x040a | any | ------------------------+---------+----------+ HP PhotoSmart 120 | 0x03f0 | 0x6502 | HP PhotoSmart 318 | 0x03f0 | 0x6302 | HP PhotoSmart 320 | 0x03f0 | 0x6602 | HP PhotoSmart 612 | 0x03f0 | 0x6302 | HP PhotoSmart 620 | 0x03f0 | 0x6802 | HP PhotoSmart 715 | 0x03f0 | 0x6402 | HP PhotoSmart 720 | 0x03f0 | 0x6702 | HP PhotoSmart 735 | 0x03f0 | 0x6a02 | HP PhotoSmart 812 | 0x03f0 | 0x4202 | HP PhotoSmart 850 | 0x03f0 | 0x4302 | ------------------------+---------+----------+ Sony DSC-CD300 | 0x054c | 0x004e | Sony DSC-F505 | 0x054c | 0x004e | Sony DSC-F505V | 0x054c | 0x004e | Sony DSC-F707 | 0x054c | 0x004e | Sony DSC-F707V | 0x054c | 0x004e | Sony DSC-P5 | 0x054c | 0x004e | Sony DSC-P30 | 0x054c | 0x004e | Sony DSC-P50 | 0x054c | 0x004e | Sony DSC-P71 | 0x054c | 0x004e | Sony DSC-S75 | 0x054c | 0x004e | Sony DSC-S85 | 0x054c | 0x004e | Sony MVC-CD300 | 0x054c | 0x004e | ------------------------+---------+----------+ Nikon DSC D100 | 0x04b0 | 0x0402 | Nikon Coolpix 2000 | 0x04b0 | 0x0302 | Nikon Coolpix SQ | 0x04b0 | 0x0202 | Nikon Coolpix 2500 | 0x04b0 | 0x0109 | Nikon Coolpix 4500 | 0x04b0 | 0x010b | Nikon Coolpix 5700 | 0x04b0 | 0x010d | Nikon Coolpix 4300 | 0x04b0 | 0x010f | Nikon Coolpix 3500 | 0x04b0 | 0x0111 | Nikon Coolpix 885 | 0x04b0 | 0x0112 | Nikon Coolpix 5000 | 0x04b0 | 0x0113 | Nikon Coolpix 3100 | 0x04b0 | 0x0115 | Nikon Coolpix 2100 | 0x04b0 | 0x0117 | Nikon Coolpix 5400 | 0x04b0 | 0x0119 | Nikon Coolpix 5600 | 0x04b0 | 0x012e | Nikon Coolpix 5200 | 0x04b0 | 0x0206 | ------------------------+---------+----------+ Canon PowerShot S45 | 0x04a9 | 0x306d | Canon PowerShot G3 | 0x04a9 | 0x306f | Canon PowerShot S230 | 0x04a9 | 0x3071 | Canon Digital IXUS v3 | 0x04a9 | 0x3071 | Canon PowerShot A60 | 0x04a9 | 0x3074 | Canon PowerShot A70 | 0x04a9 | 0x3073 | Canon PowerShot A80 | 0x04a9 | 0x309A | ============================================== ABOVE LIST IS OUTDATED! Note that for some HP, Nikon, Canon and Sony cameras you have to switch them to PTP mode, as in most cases the camera is dual mode: PTP and USB Mass Storage. For some cameras it even changes the Product ID number, so don't panic if it does not match the one listed above, just switch the mode. Don't ask me how to do it. Refer to camera documentation. If you know that your camera might be a PTP one, you may test it against this code even if it's not on the list above. If it's really a PTP device, the USB interface class should be set to 6 (it's called "still"). You may check this by reading /proc/bus/usb/devices, for example: cat /proc/bus/usb/devices | grep "Cls=06" If you find something like this: I: If#= 0 Alt= 0 #EPs= 3 Cls=06(still) Sub=01 Prot=01 Driver=(none) ^^^^^^^^^^^^^ that means that your camera is a PTP one. The ptp driver should detect that camera by interface class as "USB PTP Class Camera" and allow downloading the pictures and do other stuff exactly the same way as if it would be detected by product and vendor ID. If you're not Linux user fetch libptp2 from: http://sourceforge.net/projects/libptp and try to compile and install it. The ptpcam tool attached to thil library is able to find and identify PTP devices. Type: ptpcam --list-devices and ptpcam will search and display the names of all found PTP devices. ================================ *Solving and reporting problems* ================================ To solve the problem stick to gphoto2 CLI, forget about the GUI now. Use gphoto2 -L to see if it detects the camera. If you see something like this: ~> gphoto2 -L Unable to get descriptor (-1) (... lot of other errors ...) it may mean that you're working as user while the usb access is restricted. See gphoto2-manual, section "Setting up your system for use with libgphoto2 and gphoto2", subsection "Setting up permissions for USB ports" (http://gphoto.sourceforge.net/doc/manual/permissions-usb.html). If the gphoto2 detects the camera but then fails with some error messages please report the bug sending the mail to gphoto-devel@lists.sourceforge.net or directly to me at: emsi@emsi.it.pl. The mail should contain the full output of gphoto2 -L --debug with locale language set to _ENGLISH_. For example in bash do: env LANG=C gphoto2 --debug -L tcsh/csh: setenv LANG C; gphoto2 --debug -L WARGING!!! Before sending any mail make sure you read the notes in "Supported Cameras" above. Enjoy! ============= Documentation While ptp transactions usage seems to be quite obvious the ptp events handling code should be documented. libgphoto2-2.5.9/camlibs/ptp2/ptp-private.h0000644000175000001440000001045712610415617015452 00000000000000/* ptp-private.h * * Copyright (C) 2011 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* ptp2 camlib private functions */ #include /* config.c */ int camera_get_config (Camera *camera, CameraWidget **window, GPContext *context); int camera_set_config (Camera *camera, CameraWidget *window, GPContext *context); int camera_prepare_capture (Camera *camera, GPContext *context); int camera_unprepare_capture (Camera *camera, GPContext *context); int camera_canon_eos_update_capture_target(Camera *camera, GPContext *context, int value); int have_prop(Camera *camera, uint16_t vendor, uint16_t prop); /* library.c */ int translate_ptp_result (uint16_t result); int fixup_cached_deviceinfo (Camera *camera, PTPDeviceInfo*); int chdk_init(Camera*,GPContext*); uint16_t ptp_init_camerafile_handler (PTPDataHandler *handler, CameraFile *file); uint16_t ptp_exit_camerafile_handler (PTPDataHandler *handler); inline static int log_on_ptp_error_helper( int _r, const char* _func, const char* file, int line, const char* func, int vendor ) { if (_r != PTP_RC_OK) { const char* ptp_err_str = ptp_strerror(_r, vendor); gp_log_with_source_location(GP_LOG_ERROR, file, line, func, "'%s' failed: %s (0x%04x)", _func, ptp_err_str, _r); } return _r; } #define LOG_ON_PTP_E( RESULT ) \ log_on_ptp_error_helper( (RESULT), #RESULT, __FILE__, __LINE__, __func__,\ params->deviceinfo.VendorExtensionID ) #define C_PTP(RESULT) do {\ uint16_t c_ptp_ret = (RESULT);\ if (c_ptp_ret != PTP_RC_OK) {\ const char* ptp_err_str = ptp_strerror(c_ptp_ret, params->deviceinfo.VendorExtensionID);\ GP_LOG_E ("'%s' failed: %s (0x%04x)", #RESULT, ptp_err_str, c_ptp_ret);\ return translate_ptp_result (c_ptp_ret);\ }\ } while(0) #define C_PTP_MSG(RESULT, MSG, ...) do {\ uint16_t c_ptp_msg_ret = (RESULT);\ if (c_ptp_msg_ret != PTP_RC_OK) {\ const char* ptp_err_str = ptp_strerror(c_ptp_msg_ret, params->deviceinfo.VendorExtensionID);\ char fmt_str[256];\ snprintf(fmt_str, sizeof(fmt_str), "%s%s%s", "'%s' failed: ", MSG, " (0x%04x: %s)");\ GP_LOG_E (fmt_str, #RESULT, ##__VA_ARGS__, c_ptp_msg_ret, ptp_err_str);\ return translate_ptp_result (c_ptp_msg_ret);\ }\ } while(0) #define C_PTP_REP(RESULT) do {\ uint16_t c_ptp_rep_ret = (RESULT);\ if (c_ptp_rep_ret != PTP_RC_OK) {\ const char* ptp_err_str = ptp_strerror(c_ptp_rep_ret, params->deviceinfo.VendorExtensionID);\ GP_LOG_E ("'%s' failed: '%s' (0x%04x)", #RESULT, ptp_err_str, c_ptp_rep_ret);\ gp_context_error (context, "%s", dgettext(GETTEXT_PACKAGE, ptp_err_str));\ return translate_ptp_result (c_ptp_rep_ret);\ }\ } while(0) #define C_PTP_REP_MSG(RESULT, MSG, ...) do {\ uint16_t c_ptp_rep_msg_ret = (RESULT);\ if (c_ptp_rep_msg_ret != PTP_RC_OK) {\ const char* ptp_err_str = ptp_strerror(c_ptp_rep_msg_ret, params->deviceinfo.VendorExtensionID);\ char fmt_str[256];\ snprintf(fmt_str, sizeof(fmt_str), "%s%s%s", "'%s' failed: ", MSG, " (0x%04x: %s)");\ GP_LOG_E (fmt_str, #RESULT, ##__VA_ARGS__, c_ptp_rep_msg_ret, ptp_err_str);\ snprintf(fmt_str, sizeof(fmt_str), "%s%s", MSG, " (0x%04x: %s)");\ gp_context_error (context, fmt_str, ##__VA_ARGS__, c_ptp_rep_msg_ret, dgettext(GETTEXT_PACKAGE, ptp_err_str));\ return translate_ptp_result (c_ptp_rep_msg_ret);\ }\ } while(0) #define CR(RESULT) do {\ int cr_r=(RESULT);\ if (cr_r<0) {\ GP_LOG_E ("'%s' failed: '%s' (%d)", #RESULT, gp_port_result_as_string(cr_r), cr_r);\ return cr_r;\ }\ } while (0) struct _CameraPrivateLibrary { PTPParams params; int checkevents; }; struct _PTPData { Camera *camera; GPContext *context; }; typedef struct _PTPData PTPData; libgphoto2-2.5.9/camlibs/ptp2/music-players.h0000644000175000001440000041507412623144237016001 00000000000000/** * \file music-players.h * List of music players as USB ids. * * Copyright (C) 2005-2007 Richard A. Low * Copyright (C) 2005-2013 Linus Walleij * Copyright (C) 2006-2007,2015 Marcus Meissner * Copyright (C) 2007 Ted Bullock * Copyright (C) 2012 Sony Mobile Communications AB * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * * This file is supposed to be included within a struct from both libmtp * and libgphoto2. * * Information can be harvested from Windows driver .INF files, see: * http://msdn.microsoft.com/en-us/library/aa973606.aspx */ /* * MTP device list, trying real bad to get all devices into * this list by stealing from everyone I know. * Some devices taken from the Rockbox device listing: * http://www.rockbox.org/twiki/bin/view/Main/DeviceDetection */ /* * Creative Technology and ZiiLABS * Initially the Creative devices was all we supported so these are * the most thoroughly tested devices. Presumably only the devices * with older firmware (the ones that have 32bit object size) will * need the DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL flag. This bug * manifest itself when you have a lot of folders on the device, * some of the folders will start to disappear when getting all objects * and properties. */ { "Creative", 0x041e, "ZEN Vision", 0x411f, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Creative", 0x041e, "Portable Media Center", 0x4123, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Creative", 0x041e, "ZEN Xtra (MTP mode)", 0x4128, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Dell", 0x041e, "DJ (2nd generation)", 0x412f, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Creative", 0x041e, "ZEN Micro (MTP mode)", 0x4130, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Creative", 0x041e, "ZEN Touch (MTP mode)", 0x4131, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Dell", 0x041e, "Dell Pocket DJ (MTP mode)", 0x4132, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Creative", 0x041e, "ZEN MicroPhoto (alternate version)", 0x4133, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Creative", 0x041e, "ZEN Sleek (MTP mode)", 0x4137, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Creative", 0x041e, "ZEN MicroPhoto", 0x413c, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Creative", 0x041e, "ZEN Sleek Photo", 0x413d, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Creative", 0x041e, "ZEN Vision:M", 0x413e, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Reported by marazm@o2.pl { "Creative", 0x041e, "ZEN V", 0x4150, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Reported by danielw@iinet.net.au // This version of the Vision:M needs the no release interface flag, // unclear whether the other version above need it too or not. { "Creative", 0x041e, "ZEN Vision:M (DVP-HD0004)", 0x4151, DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Reported by Darel on the XNJB forums { "Creative", 0x041e, "ZEN V Plus", 0x4152, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Creative", 0x041e, "ZEN Vision W", 0x4153, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Don't add 0x4155: this is a Zen Stone device which is not MTP // Reported by Paul Kurczaba { "Creative", 0x041e, "ZEN", 0x4157, DEVICE_FLAG_IGNORE_HEADER_ERRORS | DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Reported by Ringofan { "Creative", 0x041e, "ZEN V 2GB", 0x4158, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Reported by j norment { "Creative", 0x041e, "ZEN Mozaic", 0x4161, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Reported by Aaron F. Gonzalez { "Creative", 0x041e, "ZEN X-Fi", 0x4162, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Reported by farmerstimuli { "Creative", 0x041e, "ZEN X-Fi 3", 0x4169, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Reported by Todor Gyumyushev { "ZiiLABS", 0x041e, "Zii EGG", 0x6000, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, /* * Samsung * We suspect that more of these are dual mode. * We suspect more of these might need DEVICE_FLAG_NO_ZERO_READS * We suspect more of these might need DEVICE_FLAG_PLAYLIST_SPL_V1 * or DEVICE_FLAG_PLAYLIST_SPL_V2 to get playlists working. * YP-NEU, YP-NDU, YP-20, YP-800, YP-MF Series, YP-100, YP-30 * YP-700 and YP-90 are NOT MTP, but use a Samsung custom protocol. * See: http://wiki.xiph.org/index.php/PortablePlayers for Ogg * status. */ // From anonymous SourceForge user, not verified { "Samsung", 0x04e8, "YP-900", 0x0409, DEVICE_FLAG_NONE }, // From MItch { "Samsung", 0x04e8, "I550W Phone", 0x04a4, DEVICE_FLAG_NONE }, // From Manfred Enning { "Samsung", 0x04e8, "Jet S8000", 0x4f1f, DEVICE_FLAG_NONE }, // From Gabriel Nunes { "Samsung", 0x04e8, "YH-920 (501d)", 0x501d, DEVICE_FLAG_UNLOAD_DRIVER }, // From Soren O'Neill { "Samsung", 0x04e8, "YH-920 (5022)", 0x5022, DEVICE_FLAG_UNLOAD_DRIVER }, // Contributed by aronvanammers on SourceForge { "Samsung", 0x04e8, "YH-925GS", 0x5024, DEVICE_FLAG_NONE }, // From libgphoto2, according to tests by Stephan Fabel it cannot // get all objects with the getobjectproplist command.. { "Samsung", 0x04e8, "YH-820", 0x502e, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Contributed by polux2001@users.sourceforge.net { "Samsung", 0x04e8, "YH-925(-GS)", 0x502f, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Contributed by anonymous person on SourceForge { "Samsung", 0x04e8, "YH-J70J", 0x5033, DEVICE_FLAG_UNLOAD_DRIVER }, // From XNJB user // Guessing on .spl flag { "Samsung", 0x04e8, "YP-Z5", 0x503c, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // Don't add 0x5041 as this is YP-Z5 in USB mode // Contributed by anonymous person on SourceForge { "Samsung", 0x04e8, "YP-T7J", 0x5047, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN }, // Reported by cstrickler@gmail.com { "Samsung", 0x04e8, "YP-U2J (YP-U2JXB/XAA)", 0x5054, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN }, // Reported by Andrew Benson { "Samsung", 0x04e8, "YP-F2J", 0x5057, DEVICE_FLAG_UNLOAD_DRIVER }, // Reported by Patrick // Just guessing but looks like .spl v1 http://www.anythingbutipod.com/forum/showthread.php?t=14160 { "Samsung", 0x04e8, "YP-K5", 0x505a, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // From dev.local@gmail.com - 0x4e8/0x507c is the UMS mode, apparently // do not add that device. // From m.eik michalke // This device does NOT use the special SPL playlist according to sypqgjxu@gmx.de. { "Samsung", 0x04e8, "YP-U3", 0x507d, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN }, // Reported by Matthew Wilcox // Sergio reports this device need the BROKEN ALL flag. // Guessing on .spl flag { "Samsung", 0x04e8, "YP-T9", 0x507f, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // From Paul Clinch // Just guessing but looks like .spl v1 http://www.anythingbutipod.com/forum/showthread.php?t=14160 // Some versions of the firmware reportedly support OGG, reportedly only the // UMS versions, so MTP+OGG is not possible on this device. { "Samsung", 0x04e8, "YP-K3", 0x5081, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // From XNJB user // From Alistair Boyle, .spl v2 required for playlists // According to the device log it properly supports OGG { "Samsung", 0x04e8, "YP-P2", 0x5083, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_PLAYLIST_SPL_V2 }, // From Paul Clinch // Guessing on .spl flag { "Samsung", 0x04e8, "YP-T10", 0x508a, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_PLAYLIST_SPL_V1 | DEVICE_FLAG_NO_ZERO_READS }, // From Wim Verwimp // Not sure about the Ogg and broken proplist flags here. Just guessing. // Guessing on .spl flag { "Samsung", 0x04e8, "YP-S5", 0x508b, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // From Ludovic Danigo // Guessing on .spl flag { "Samsung", 0x04e8, "YP-S3", 0x5091, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // From Adrian Levi // Guessing on .spl flag // This one supports OGG properly through the correct MTP type. { "Samsung", 0x04e8, "YP-U4", 0x5093, DEVICE_FLAG_UNLOAD_DRIVER }, // From Chris Le Sueur // Guessing on .spl flag // This one supports OGG properly through the correct MTP type. { "Samsung", 0x04e8, "YP-R1", 0x510f, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_UNIQUE_FILENAMES | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // From Anonymous SourceForge user // Guessing on .spl flag { "Samsung", 0x04e8, "YP-Q1", 0x5115, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // From Holger { "Samsung", 0x04e8, "YP-M1", 0x5118, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_PLAYLIST_SPL_V2 }, // From Anonymous SourceForge user // Guessing on .spl flag { "Samsung", 0x04e8, "YP-P3", 0x511a, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // From Anonymous SourceForge user // Guessing on .spl flag { "Samsung", 0x04e8, "YP-Q2", 0x511d, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // From Marco Pizzocaro // Guessing on .spl flag { "Samsung", 0x04e8, "YP-U5", 0x5121, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_PLAYLIST_SPL_V1 | DEVICE_FLAG_UNIQUE_FILENAMES | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // From Leonardo Accorsi // Guessing on .spl flag { "Samsung", 0x04e8, "YP-R0", 0x5125, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_PLAYLIST_SPL_V1 | DEVICE_FLAG_UNIQUE_FILENAMES | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // The "YP-R2" (0x04e8/0x512d) is NOT MTP, it is UMS only. // Guessing on device flags for the MTP mode... { "Samsung", 0x04e8, "YP-R2", 0x512e, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_UNIQUE_FILENAMES | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // From Manuel Carro // Copied from Q2 { "Samsung", 0x04e8, "YP-Q3", 0x5130, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // Reported by: traaf // Guessing on the playlist type! // Appears to present itself properly as a PTP device with MTP extensions! { "Samsung", 0x04e8, "YP-Z3", 0x5137, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // YP-F3 is NOT MTP - USB mass storage // From a rouge .INF file // this device ID seems to have been recycled for: // the Samsung SGH-A707 Cingular cellphone // the Samsung L760-V cellphone // the Samsung SGH-U900 cellphone // the Samsung Fascinate player { "Samsung", 0x04e8, "YH-999 Portable Media Center/SGH-A707/SGH-L760V/SGH-U900/Verizon Intensity/Fascinate", 0x5a0f, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // From Santi Béjar - not sure this is MTP... // { "Samsung", 0x04e8, "Z170 Mobile Phone", 0x6601, DEVICE_FLAG_UNLOAD_DRIVER }, // From Santi Béjar - not sure this is MTP... // { "Samsung", 0x04e8, "E250 Mobile Phone", 0x663e, DEVICE_FLAG_UNLOAD_DRIVER }, // From an anonymous SF user { "Samsung", 0x04e8, "M7600 Beat/GT-S8300T/SGH-F490/S8300", 0x6642, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_BATTERY_LEVEL }, // From Lionel Bouton { "Samsung", 0x04e8, "X830 Mobile Phone", 0x6702, DEVICE_FLAG_UNLOAD_DRIVER }, // From James { "Samsung", 0x04e8, "U600 Mobile Phone", 0x6709, DEVICE_FLAG_UNLOAD_DRIVER }, // From Cesar Cardoso // No confirmation that this is really MTP. { "Samsung", 0x04e8, "F250 Mobile Phone", 0x6727, DEVICE_FLAG_UNLOAD_DRIVER }, // From Charlie Todd 2007-10-31 { "Samsung", 0x04e8, "Juke (SCH-U470)", 0x6734, DEVICE_FLAG_UNLOAD_DRIVER}, // Reported by Tenn { "Samsung", 0x04e8, "GT-B2700", 0x6752, DEVICE_FLAG_UNLOAD_DRIVER }, // Added by Greg Fitzgerald { "Samsung", 0x04e8, "SAMSUNG Trance", 0x6763, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // From anonymous sourceforge user // Guessing on .spl flag, maybe needs NO_ZERO_READS, whatdoIknow { "Samsung", 0x04e8, "GT-S8500", 0x6819, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_PLAYLIST_SPL_V1 }, /* * These entries seems to be used on a *lot* of Samsung * Android phones. It is *not* the Android MTP stack but an internal * Samsung stack. The devices present a few different product IDs * depending on mode: * * 0x685b - UMS * 0x685c - MTP + ADB * 0x685e - UMS + CDC (not MTP) * 0x6860 - MTP mode (default) * 0x6863 - USB CDC RNDIS (not MTP) * 0x6865 - PTP mode (not MTP) * 0x6877 - Kies mode? Does it have MTP? * * Used on these samsung devices: * GT P7310/P7510/N7000/I9100/I9250/I9300 * Galaxy Nexus * Galaxy Tab 7.7/10.1 * Galaxy S GT-I9000 * Galaxy S Advance GT-I9070 * Galaxy S2 * Galaxy S3 * Galaxy Note * Gakaxy Xcover * Galaxy Y * * - It seems that some PTP commands are broken. * - Devices seem to have a connection timeout, the session must be * open in about 3 seconds since the device is plugged in, after * that time it will not respond. Thus GUI programs work fine. * - Seems also to be used with Galaxy Nexus debug mode and on * US markets for some weird reason. * * From: Ignacio Martínez and others * From Harrison Metzger */ { "Samsung", 0x04e8, "Galaxy models (MTP+ADB)", 0x685c, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_LONG_TIMEOUT | DEVICE_FLAG_PROPLIST_OVERRIDES_OI | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, { "Samsung", 0x04e8, "Galaxy models (MTP)", 0x6860, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_LONG_TIMEOUT | DEVICE_FLAG_PROPLIST_OVERRIDES_OI | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // From: Erik Berglund // Logs indicate this needs DEVICE_FLAG_NO_ZERO_READS // No Samsung platlists on this device. // https://sourceforge.net/tracker/?func=detail&atid=809061&aid=3026337&group_id=158745 // i5800 duplicate reported by igel // Guessing this has the same problematic MTP stack as the device // above. { "Samsung", 0x04e8, "Galaxy models Kies mode", 0x6877, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_LONG_TIMEOUT | DEVICE_FLAG_PROPLIST_OVERRIDES_OI | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // From: John Gorkos and // Akos Maroy { "Samsung", 0x04e8, "Vibrant SGH-T959/Captivate/Media player mode", 0x68a9, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // Reported by Sleep.Walker { "Samsung", 0x04e8, "GT-B2710/Xcover 271", 0x68af, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_PLAYLIST_SPL_V1 }, // From anonymous Sourceforge user { "Samsung", 0x04e8, "GT-S5230", 0xe20c, DEVICE_FLAG_NONE }, /* * Microsoft * All except the first probably need MTPZ to work */ { "Microsoft/Intel", 0x045e, "Bandon Portable Media Center", 0x00c9, DEVICE_FLAG_NONE }, // HTC Mozart is using the PID, as is Nokia Lumia 800 // May need MTPZ to work { "Microsoft", 0x045e, "Windows Phone", 0x04ec, DEVICE_FLAG_NONE }, // Reported by Tadimarri Sarath // No idea why this use an Intel PID, perhaps a leftover from // the early PMC development days when Intel and Microsoft were // partnering. { "Microsoft", 0x045e, "Windows MTP Simulator", 0x0622, DEVICE_FLAG_NONE }, // Reported by Edward Hutchins (used for Zune HDs) { "Microsoft", 0x045e, "Zune HD", 0x063e, DEVICE_FLAG_NONE }, { "Microsoft", 0x045e, "Kin 1", 0x0640, DEVICE_FLAG_NONE }, { "Microsoft/Sharp/nVidia", 0x045e, "Kin TwoM", 0x0641, DEVICE_FLAG_NONE }, // Reported by Farooq Zaman (used for all Zunes) { "Microsoft", 0x045e, "Zune", 0x0710, DEVICE_FLAG_NONE }, // Reported by Olegs Jeremejevs { "Microsoft/HTC", 0x045e, "HTC 8S", 0xf0ca, DEVICE_FLAG_NONE }, /* * JVC */ // From Mark Veinot { "JVC", 0x04f1, "Alneo XA-HD500", 0x6105, DEVICE_FLAG_NONE }, /* * Philips */ { "Philips", 0x0471, "HDD6320/00 or HDD6330/17", 0x014b, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Anonymous SourceForge user { "Philips", 0x0471, "HDD14XX,HDD1620 or HDD1630/17", 0x014c, DEVICE_FLAG_NONE }, // from discussion forum { "Philips", 0x0471, "HDD085/00 or HDD082/17", 0x014d, DEVICE_FLAG_NONE }, // from XNJB forum { "Philips", 0x0471, "GoGear SA9200", 0x014f, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // From John Coppens { "Philips", 0x0471, "SA1115/55", 0x0164, DEVICE_FLAG_NONE }, // From Gerhard Mekenkamp { "Philips", 0x0471, "GoGear Audio", 0x0165, DEVICE_FLAG_NONE }, // from David Holm { "Philips", 0x0471, "Shoqbox", 0x0172, DEVICE_FLAG_ONLY_7BIT_FILENAMES }, // from npedrosa { "Philips", 0x0471, "PSA610", 0x0181, DEVICE_FLAG_NONE }, // From libgphoto2 source { "Philips", 0x0471, "HDD6320", 0x01eb, DEVICE_FLAG_NONE }, // From Detlef Meier { "Philips", 0x0471, "GoGear SA6014/SA6015/SA6024/SA6025/SA6044/SA6045", 0x084e, DEVICE_FLAG_UNLOAD_DRIVER }, // From anonymous Sourceforge user SA5145/02 { "Philips", 0x0471, "GoGear SA5145", 0x0857, DEVICE_FLAG_UNLOAD_DRIVER }, /* https://sourceforge.net/p/libmtp/bugs/1260/ */ { "Philips", 0x0471, "i908", 0x190b, DEVICE_FLAG_UNLOAD_DRIVER }, // From a { "Philips", 0x0471, "GoGear SA6125/SA6145/SA6185", 0x2002, DEVICE_FLAG_UNLOAD_DRIVER }, // From anonymous Sourceforge user, not verified to be MTP! { "Philips", 0x0471, "GoGear SA3345", 0x2004, DEVICE_FLAG_UNLOAD_DRIVER }, /* https://sourceforge.net/p/libmtp/support-requests/163/ */ { "Philips", 0x0471, "W6610", 0x2008, DEVICE_FLAG_UNLOAD_DRIVER }, // From Roberto Vidmar { "Philips", 0x0471, "SA5285", 0x2022, DEVICE_FLAG_UNLOAD_DRIVER }, // From Elie De Brauwer { "Philips", 0x0471, "GoGear ViBE SA1VBE04", 0x2075, DEVICE_FLAG_UNLOAD_DRIVER }, // From Anonymous SourceForge user { "Philips", 0x0471, "GoGear Muse", 0x2077, DEVICE_FLAG_UNLOAD_DRIVER }, // From Elie De Brauwer { "Philips", 0x0471, "GoGear ViBE SA1VBE04/08", 0x207b, DEVICE_FLAG_UNLOAD_DRIVER }, // From josmtx { "Philips", 0x0471, "GoGear Aria", 0x207c, DEVICE_FLAG_UNLOAD_DRIVER }, // From epklein { "Philips", 0x0471, "GoGear SA1VBE08KX/78", 0x208e, DEVICE_FLAG_UNLOAD_DRIVER }, // From Anonymous SourceForge User { "Philips", 0x0471, "GoGear VIBE SA2VBE[08|16]K/02", 0x20b7, DEVICE_FLAG_UNLOAD_DRIVER }, // From Anonymous SourceForge User { "Philips", 0x0471, "GoGear Ariaz", 0x20b9, DEVICE_FLAG_UNLOAD_DRIVER }, // From Anonymous SourceForge User { "Philips", 0x0471, "GoGear Vibe/02", 0x20e5, DEVICE_FLAG_UNLOAD_DRIVER }, // Reported by Philip Rhoades { "Philips", 0x0471, "GoGear Ariaz/97", 0x2138, DEVICE_FLAG_UNLOAD_DRIVER }, /* https://sourceforge.net/p/libmtp/bugs/1186/ */ { "Philips", 0x0471, "PI3900B2/58 ", 0x2190, DEVICE_FLAG_UNLOAD_DRIVER }, // from XNJB user { "Philips", 0x0471, "PSA235", 0x7e01, DEVICE_FLAG_NONE }, /* * Acer * Reporters: * Franck VDL * Matthias Arndt * Arvin Schnell * Philippe Marzouk * nE0sIghT * Maxime de Roucy */ { "Acer", 0x0502, "Iconia TAB A500 (ID1)", 0x3325, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A500 (ID2)", 0x3341, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A501 (ID1)", 0x3344, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A501 (ID2)", 0x3345, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A100 (ID1)", 0x3348, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A100 (ID2)", 0x3349, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A101 (ID1)", 0x334a, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A700", 0x3378, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A200 (ID1)", 0x337c, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A200 (ID2)", 0x337d, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A510 (ID1)", 0x3389, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A510 (ID2)", 0x338a, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "S500 CloudMobile", 0x33aa, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "E350 Liquid Gallant Duo (ID1)", 0x33c3, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "E350 Liquid Gallant Duo (ID2)", 0x33c4, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A210", 0x33cb, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia TAB A110", 0x33d8, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Liquid Z120 MT65xx Android Phone", 0x3473, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1029/ */ { "Acer", 0x0502, "Liquid E2", 0x3514, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia A1-810", 0x353c, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Liquid Z130 MT65xx Android Phone", 0x355f, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1206/ */ { "Acer", 0x0502, "Iconia A3-A11", 0x3586, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1103/ */ { "Acer", 0x0502, "Liquid E3", 0x35a8, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1147/ */ { "Acer", 0x0502, "Z150", 0x35e4, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1184/ */ { "Acer", 0x0502, "Liquid X1", 0x3609, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1298/ */ { "Acer", 0x0502, "Z160", 0x361d, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "Iconia A1-840FHD", 0x362d, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1251/ */ { "Acer", 0x0502, "E39", 0x3643, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1369/ */ { "Acer", 0x0502, "liquid e700", 0x3644, DEVICE_FLAGS_ANDROID_BUGS }, { "Acer", 0x0502, "One 7", 0x3657, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/183/ */ { "Acer", 0x0502, "Z200", 0x3683, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1341/ */ { "Acer", 0x0502, "Liquid S56", 0x3725, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/188/ */ { "Acer", 0x0502, "Liquid Z220", 0x3750, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1469/ */ { "Acer", 0x0502, "Z530", 0x3822, DEVICE_FLAGS_ANDROID_BUGS }, /* * SanDisk * several devices (c150 for sure) are definately dual-mode and must * have the USB mass storage driver that hooks them unloaded first. * They all have problematic dual-mode making the device unload effect * uncertain on these devices. * * All older devices seem to need DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL. * Old chipsets: e200/c200 use PP5024 from Nvidia (formerly PortalPlayer). * m200 use TCC770 from Telechips. * * The newer Sansa v2 chipset, AD3525 from Austriamicrosystems (AMS) found * in e280 v2 c200 v2, Clip, Fuze etc require * DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST * and DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR to work properly. * * For more info see: http://daniel.haxx.se/sansa/v2.html */ // Reported by Brian Robison { "SanDisk", 0x0781, "Sansa m230/m240", 0x7400, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // From Rockbox device listing { "SanDisk", 0x0781, "Sansa m200-tcc (MTP mode)", 0x7401, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // Reported by tangent_@users.sourceforge.net { "SanDisk", 0x0781, "Sansa c150", 0x7410, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // From libgphoto2 source // Reported by // Reported by Mike Owen { "SanDisk", 0x0781, "Sansa e200/e250/e260/e270/e280", 0x7420, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // Don't add 0x7421 as this is e280 in MSC mode // Reported by XNJB user { "SanDisk", 0x0781, "Sansa e260/e280 v2", 0x7422, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // Reported by XNJB user { "SanDisk", 0x0781, "Sansa m240/m250", 0x7430, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // Reported by Eugene Brevdo { "SanDisk", 0x0781, "Sansa Clip", 0x7432, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED}, // Reported by HackAR { "SanDisk", 0x0781, "Sansa Clip v2", 0x7434, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED}, // Reported by anonymous user at sourceforge.net { "SanDisk", 0x0781, "Sansa c240/c250", 0x7450, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // Reported by anonymous SourceForge user { "SanDisk", 0x0781, "Sansa c250 v2", 0x7452, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // Reported by Troy Curtis Jr. { "SanDisk", 0x0781, "Sansa Express", 0x7460, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // Reported by XNJB user, and Miguel de Icaza // This has no dual-mode so no need to unload any driver. // This is a Linux based device! { "SanDisk", 0x0781, "Sansa Connect", 0x7480, DEVICE_FLAG_NONE }, // Reported by anonymous SourceForge user { "SanDisk", 0x0781, "Sansa View", 0x74b0, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // Reported by Patrick // There are apparently problems with this device. { "SanDisk", 0x0781, "Sansa Fuze", 0x74c0, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR | DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // Harry Phillips { "SanDisk", 0x0781, "Sansa Fuze v2", 0x74c2, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR | DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED }, // Reported by anonymous SourceForge user // Need BROKEN_SET_SAMPLE_DIMENSIONS accordning to // Michael { "SanDisk", 0x0781, "Sansa Clip+", 0x74d0, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR | DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED}, // Reported by anonymous SourceForge user { "SanDisk", 0x0781, "Sansa Fuze+", 0x74e0, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR | DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED}, // Reported by mattyj2001@users.sourceforge.net { "SanDisk", 0x0781, "Sansa Clip Zip", 0x74e4, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR | DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS | DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED}, /* * iRiver * we assume that PTP_OC_MTP_GetObjPropList is essentially * broken on all iRiver devices, meaning it simply won't return * all properties for a file when asking for metadata 0xffffffff. * Please test on your device if you believe it isn't broken! */ { "iRiver", 0x1006, "H300 Series MTP", 0x3004, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, { "iRiver", 0x1006, "Portable Media Center 1", 0x4002, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, { "iRiver", 0x1006, "Portable Media Center 2", 0x4003, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, // From [st]anislav { "iRiver", 0x1042, "T7 Volcano", 0x1143, DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, // From an anonymous person at SourceForge, uncertain about this one { "iRiver", 0x4102, "iFP-880", 0x1008, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, // 0x4102, 0x1042 is a USB mass storage mode for E100 v2/Lplayer // From libgphoto2 source { "iRiver", 0x4102, "T10", 0x1113, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, { "iRiver", 0x4102, "T20 FM", 0x1114, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, // This appears at the MTP-UMS site { "iRiver", 0x4102, "T20", 0x1115, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, { "iRiver", 0x4102, "U10", 0x1116, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, { "iRiver", 0x4102, "T10b", 0x1117, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, { "iRiver", 0x4102, "T20b", 0x1118, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, { "iRiver", 0x4102, "T30", 0x1119, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, // Reported by David Wolpoff { "iRiver", 0x4102, "T10 2GB", 0x1120, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, // Rough guess this is the MTP device ID... { "iRiver", 0x4102, "N12", 0x1122, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, // Reported by Philip Antoniades // Newer iriver devices seem to have shaped-up firmware without any // of the annoying bugs. { "iRiver", 0x4102, "Clix2", 0x1126, DEVICE_FLAG_NONE }, // Reported by Adam Torgerson { "iRiver", 0x4102, "Clix", 0x112a, DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, // Reported by Douglas Roth { "iRiver", 0x4102, "X20", 0x1132, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, // Reported by Robert Ugo { "iRiver", 0x4102, "T60", 0x1134, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_IRIVER_OGG_ALZHEIMER }, // Reported by two anonymous SourceForge users // Needs the stronger OGG_IS_UNKNOWN flag to support OGG properly, // be aware of newer players that may be needing this too. { "iRiver", 0x4102, "E100", 0x1141, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_OGG_IS_UNKNOWN }, // Reported by anonymous SourceForge user // Need verification of whether this firmware really need all these flags { "iRiver", 0x4102, "E100 v2/Lplayer", 0x1142, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_OGG_IS_UNKNOWN }, // Reported by Richard Vennemann // In USB Mass Storage mode it is 0x4102/0x1047 // Seems to use the new shaped-up firmware. { "iRiver", 0x4102, "Spinn", 0x1147, DEVICE_FLAG_NONE }, // Reported by Tony Janssen { "iRiver", 0x4102, "E50", 0x1151, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_OGG_IS_UNKNOWN }, // Reported by anonymous SourceForge user, guessing on flags { "iRiver", 0x4102, "E150", 0x1152, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_OGG_IS_UNKNOWN }, // Reported by Jakub Matraszek { "iRiver", 0x4102, "T5", 0x1153, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_OGG_IS_UNKNOWN }, // Reported by pyalex@users.sourceforge.net // Guessing that this needs the FLAG_NO_ZERO_READS... { "iRiver", 0x4102, "E30", 0x1167, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_OGG_IS_UNKNOWN }, // Reported by Scott Call // Assume this actually supports OGG though it reports it doesn't. { "iRiver", 0x4102, "H10 20GB", 0x2101, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_OGG_IS_UNKNOWN }, { "iRiver", 0x4102, "H10 5GB", 0x2102, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_OGG_IS_UNKNOWN }, // From Rockbox device listing { "iRiver", 0x4102, "H10 5.6GB", 0x2105, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_NO_ZERO_READS | DEVICE_FLAG_OGG_IS_UNKNOWN }, /* * Dell */ { "Dell Inc", 0x413c, "DJ Itty", 0x4500, DEVICE_FLAG_NONE }, /* Reported by: JR */ { "Dell Inc", 0x413c, "Dell Streak 7", 0xb10b, DEVICE_FLAGS_ANDROID_BUGS }, { "Dell Inc", 0x413c, "Dell Venue 7 inch", 0xb11a, DEVICE_FLAGS_ANDROID_BUGS }, { "Dell Inc", 0x413c, "Dell Venue 7 inch (2nd ID)", 0xb11b, DEVICE_FLAGS_ANDROID_BUGS }, /* * Toshiba * Tentatively flagged all Toshiba devices with * DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST after one of them * showed erroneous behaviour. */ { "Toshiba", 0x0930, "Gigabeat MEGF-40", 0x0009, DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, { "Toshiba", 0x0930, "Gigabeat", 0x000c, DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, // Reported by Nicholas Tripp { "Toshiba", 0x0930, "Gigabeat P20", 0x000f, DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, // From libgphoto2 { "Toshiba", 0x0930, "Gigabeat S", 0x0010, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, // Reported by Rob Brown { "Toshiba", 0x0930, "Gigabeat P10", 0x0011, DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, // Reported by solanum@users.sourceforge.net { "Toshiba", 0x0930, "Gigabeat V30", 0x0014, DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, // Reported by Michael Davis { "Toshiba", 0x0930, "Gigabeat U", 0x0016, DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, // Reported by Devon Jacobs { "Toshiba", 0x0930, "Gigabeat MEU202", 0x0018, DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, // Reported by Rolf { "Toshiba", 0x0930, "Gigabeat T", 0x0019, DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, // Reported by Phil Ingram // Tentatively added - no real reports of this device ID being MTP, // reports as USB Mass Storage currently. { "Toshiba", 0x0930, "Gigabeat MEU201", 0x001a, DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, // Reported by anonymous SourceForge user { "Toshiba", 0x0930, "Gigabeat MET401", 0x001d, DEVICE_FLAG_NO_RELEASE_INTERFACE | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, // Reported by Andree Jacobson { "Toshiba", 0x0930, "Excite AT300", 0x0963, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Nigel Cunningham // Guessing on Android bugs { "Toshiba", 0x0930, "Thrive AT100/AT105", 0x7100, DEVICE_FLAGS_ANDROID_BUGS }, /* * Archos * These devices have some dual-mode interfaces which will really * respect the driver unloading, so DEVICE_FLAG_UNLOAD_DRIVER * really work on these devices! * * Devices reported by: * Archos * Alexander Haertig * Jan Binder * gudul1@users.sourceforge.net * Etienne Chauchot * Kay McCormick * Joe Rabinoff * Jim Krehl * Adrien Guichard * Clément * Thackert * Till * Sebastien ROHAUT */ { "Archos", 0x0e79, "Gmini XS100", 0x1207, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "XS202 (MTP mode)", 0x1208, DEVICE_FLAG_NONE }, { "Archos", 0x0e79, "104 (MTP mode)", 0x120a, DEVICE_FLAG_NONE }, { "Archos", 0x0e79, "204 (MTP mode)", 0x120c, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "404 (MTP mode)", 0x1301, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "404CAM (MTP mode)", 0x1303, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "504 (MTP mode)", 0x1307, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "604 (MTP mode)", 0x1309, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "604WIFI (MTP mode)", 0x130b, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "704 mobile dvr", 0x130d, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "704TV (MTP mode)", 0x130f, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "405 (MTP mode)", 0x1311, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "605 (MTP mode)", 0x1313, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "605F (MTP mode)", 0x1315, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "705 (MTP mode)", 0x1319, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "TV+ (MTP mode)", 0x131b, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "105 (MTP mode)", 0x131d, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "405HDD (MTP mode)", 0x1321, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "5 (MTP mode 1)", 0x1331, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "5 (MTP mode 2)", 0x1333, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "7 (MTP mode)", 0x1335, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "SPOD (MTP mode)", 0x1341, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "5S IT (MTP mode)", 0x1351, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "5H IT (MTP mode)", 0x1357, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "48 (MTP mode)", 0x1421, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "Arnova Childpad", 0x1458, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "Arnova 8c G3", 0x145e, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "Arnova 10bG3 Tablet", 0x146b, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "97 Xenon", 0x149a, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "97 Titanium", 0x14ad, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "80 Titanium", 0x14bf, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "101 Titanium", 0x14b9, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/feature-requests/91/ */ { "Archos", 0x0e79, "70b Titanium", 0x14ef, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "8o G9 (MTP mode)", 0x1508, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "8o G9 Turbo (MTP mode)", 0x1509, DEVICE_FLAG_UNLOAD_DRIVER }, { "Archos", 0x0e79, "80G9", 0x1518, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "101 G9 (ID1)", 0x1528, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "101 G9 (ID2)", 0x1529, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "101 G9 Turbo 250 HD", 0x1538, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "101 G9 Turbo", 0x1539, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "101 XS", 0x1548, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "70it2 (ID 1)", 0x1568, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "70it2 (ID 2)", 0x1569, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "50c", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "C40", 0x31ab, DEVICE_FLAGS_ANDROID_BUGS }, /* via libmtp-discuss Tonton */ { "Archos", 0x0e79, "Helium 45B", 0x31d8, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1393/ */ { "Archos", 0x0e79, "Phone", 0x31e1, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1325/ */ { "Archos", 0x0e79, "45 Neon", 0x31f3, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1352/ */ { "Archos", 0x0e79, "50 Diamond", 0x3229, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos", 0x0e79, "101 G4", 0x4002, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos (for Tesco)", 0x0e79, "Hudl (ID1)", 0x5008, DEVICE_FLAGS_ANDROID_BUGS }, { "Archos (for Tesco)", 0x0e79, "Hudl (ID2)", 0x5009, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1404/ */ { "Archos", 0x0e79, "AC40DTI", 0x5217, DEVICE_FLAGS_ANDROID_BUGS }, /* * Dunlop (OEM of EGOMAN ltd?) reported by Nanomad * This unit is falsely detected as USB mass storage in Linux * prior to kernel 2.6.19 (fixed by patch from Alan Stern) * so on older kernels special care is needed to remove the * USB mass storage driver that erroneously binds to the device * interface. * * More problematic, this manufacturer+device ID seems to be * reused in a USB Mass Storage device named "Zipy Fox 8GB", * which means libmtp may mistreat it. */ { "Dunlop", 0x10d6, "MP3 player 1GB / EGOMAN MD223AFD", 0x2200, DEVICE_FLAG_UNLOAD_DRIVER}, // Reported by Steven Black // Obviously this company goes by many names. // This device is USB 2.0 only. Broken pipe on closing. // A later report indicates that this is also used by the iRiver E200 { "Memorex or iRiver", 0x10d6, "MMP 8585/8586 or iRiver E200", 0x2300, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_NO_RELEASE_INTERFACE}, /* * Sirius */ { "Sirius", 0x18f6, "Stiletto", 0x0102, DEVICE_FLAG_NONE }, // Reported by Chris Bagwell { "Sirius", 0x18f6, "Stiletto 2", 0x0110, DEVICE_FLAG_NONE }, /* * Nokia * Please verify the low device IDs here, I suspect these might be for * things like USB storage or modem mode actually, whereas the higher * range (0x04nn) could be for MTP. Some of the devices were gathered * from the Nokia WMP drivers: * http://nds2.nokia.com/files/support/global/phones/software/ * Address was gathered from going to: * nseries.com * -> support * -> select supported device * -> PC software * -> Music software * -> Windows Media Player 10 driver */ // From: DoomHammer { "Nokia", 0x0421, "N81 Mobile Phone", 0x000a, DEVICE_FLAG_NONE }, // From an anonymous SourceForge user { "Nokia", 0x0421, "6120c Classic Mobile Phone", 0x002e, DEVICE_FLAG_NONE }, // From Stefano { "Nokia", 0x0421, "N96 Mobile Phone", 0x0039, DEVICE_FLAG_NONE }, // From Martijn van de Streek { "Nokia", 0x0421, "6500c Classic Mobile Phone", 0x003c, DEVICE_FLAG_NONE }, // From: DoomHammer { "Nokia", 0x0421, "3110c Mobile Phone", 0x005f, DEVICE_FLAG_NONE }, // From: Vasily { "Nokia", 0x0421, "3109c Mobile Phone", 0x0065, DEVICE_FLAG_NONE }, // From: { "Nokia", 0x0421, "5310 XpressMusic", 0x006c, DEVICE_FLAG_NONE }, // From: robin (AT) headbank D0Tco DOTuk { "Nokia", 0x0421, "N95 Mobile Phone 8GB", 0x006e, DEVICE_FLAG_NONE }, // From Bastien Nocera { "Nokia", 0x0421, "N82 Mobile Phone", 0x0074, DEVICE_FLAG_UNLOAD_DRIVER }, // From Martijn van de Streek { "Nokia", 0x0421, "N78 Mobile Phone", 0x0079, DEVICE_FLAG_NONE }, // From William Pettersson { "Nokia", 0x0421, "6220 Classic", 0x008d, DEVICE_FLAG_NONE }, // From kellerkev@gmail.com { "Nokia", 0x0421, "N85 Mobile Phone", 0x0092, DEVICE_FLAG_NONE }, // From Alexandre LISSY { "Nokia", 0x0421, "6210 Navigator", 0x0098, DEVICE_FLAG_NONE }, // From: danielw { "Nokia", 0x0421, "E71", 0x00e4, DEVICE_FLAG_NONE }, // From: Laurent Bigonville { "Nokia", 0x0421, "E66", 0x00e5, DEVICE_FLAG_NONE }, // From: Pier { "Nokia", 0x0421, "5320 XpressMusic", 0x00ea, DEVICE_FLAG_NONE }, // From: Gausie { "Nokia", 0x0421, "5800 XpressMusic", 0x0154, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // From: Willy Gardiol (web) // Spurious errors for getting all objects, lead me to believe // this flag atleast is needed { "Nokia", 0x0421, "5800 XpressMusic v2", 0x0155, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Yet another version... I think { "Nokia", 0x0421, "5800 XpressMusic v3", 0x0159, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // From an anonymous SourceForge user // Not verified to be MTP { "Nokia", 0x0421, "E63", 0x0179, DEVICE_FLAG_NONE }, // Reported by: max g // Reported by: oswillios { "Nokia", 0x0421, "N79", 0x0186, DEVICE_FLAG_NONE }, // From an anonymous SourceForge user { "Nokia", 0x0421, "E71x", 0x01a1, DEVICE_FLAG_NONE }, // From Ser { "Nokia", 0x0421, "E52", 0x01cf, DEVICE_FLAG_NONE }, // From Marcus Meissner { "Nokia", 0x0421, "3710", 0x01ee, DEVICE_FLAG_NONE }, // From: AxeL { "Nokia", 0x0421, "N97-1", 0x01f4, DEVICE_FLAG_NONE }, // From: FunkyPenguin { "Nokia", 0x0421, "N97", 0x01f5, DEVICE_FLAG_NONE }, // From: Anonymous SourceForge user { "Nokia", 0x0421, "5130 XpressMusic", 0x0209, DEVICE_FLAG_NONE }, // From: Anonymous SourceForge user { "Nokia", 0x0421, "E72", 0x0221, DEVICE_FLAG_NONE }, // From: Anonymous SourceForge user { "Nokia", 0x0421, "5530", 0x0229, DEVICE_FLAG_NONE }, /* Grzegorz Woźniak */ { "Nokia", 0x0421, "E6", 0x032f, DEVICE_FLAG_NONE }, // From: Anonymous SourceForge user { "Nokia", 0x0421, "N97 mini", 0x026b, DEVICE_FLAG_NONE }, // From: Anonymous SourceForge user { "Nokia", 0x0421, "X6", 0x0274, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // From: Alexander Kojevnikov { "Nokia", 0x0421, "6600i", 0x0297, DEVICE_FLAG_NONE }, // From: Karthik Paithankar { "Nokia", 0x0421, "2710", 0x02c1, DEVICE_FLAG_NONE }, // From: Mick Stephenson { "Nokia", 0x0421, "5230", 0x02e2, DEVICE_FLAG_NONE }, // From: Lan Liu at Nokia { "Nokia", 0x0421, "N8", 0x02fe, DEVICE_FLAG_NONE }, // From: Lan Liu at Nokia { "Nokia", 0x0421, "N8 (Ovi mode)", 0x0302, DEVICE_FLAG_NONE }, // From: Martijn Hoogendoorn { "Nokia", 0x0421, "E7", 0x0334, DEVICE_FLAG_NONE }, // From: Raul Metsma { "Nokia", 0x0421, "E7 (Ovi mode)", 0x0335, DEVICE_FLAG_NONE }, // Reported by Serg // Symbian phone { "Nokia", 0x0421, "C7", 0x03c1, DEVICE_FLAG_NONE }, // Reported by Anonymous SourceForge user { "Nokia", 0x0421, "C7 (ID2)", 0x03cd, DEVICE_FLAG_NONE }, // Reported by Anonymous SourceForge user { "Nokia", 0x0421, "N950", 0x03d2, DEVICE_FLAG_NONE }, // From: http://nds2.nokia.com/files/support/global/phones/software/Nokia_3250_WMP10_driver.inf { "Nokia", 0x0421, "3250 Mobile Phone", 0x0462, DEVICE_FLAG_NONE }, // From http://nds2.nokia.com/files/support/global/phones/software/Nokia_N93_WMP10_Driver.inf { "Nokia", 0x0421, "N93 Mobile Phone", 0x0478, DEVICE_FLAG_NONE }, // From: http://nds2.nokia.com/files/support/global/phones/software/Nokia_5500_Sport_WMP10_driver.inf { "Nokia", 0x0421, "5500 Sport Mobile Phone", 0x047e, DEVICE_FLAG_NONE }, // From http://nds2.nokia.com/files/support/global/phones/software/Nokia_N91_WMP10_Driver.inf { "Nokia", 0x0421, "N91 Mobile Phone", 0x0485, DEVICE_FLAG_NONE }, // From: Christian Rusa { "Nokia", 0x0421, "5700 XpressMusic Mobile Phone", 0x04b4, DEVICE_FLAG_NONE }, // From: Mitchell Hicks { "Nokia", 0x0421, "5300 Mobile Phone", 0x04ba, DEVICE_FLAG_NONE }, // https://sourceforge.net/tracker/index.php?func=detail&aid=2692473&group_id=8874&atid=358874 // From: Tiburce { "Nokia", 0x0421, "5200 Mobile Phone", 0x04be, DEVICE_FLAG_BROKEN_BATTERY_LEVEL }, // From Christian Arnold { "Nokia", 0x0421, "N73 Mobile Phone", 0x04d1, DEVICE_FLAG_UNLOAD_DRIVER }, // From Swapan { "Nokia", 0x0421, "N75 Mobile Phone", 0x04e1, DEVICE_FLAG_NONE }, // From: http://nds2.nokia.com/files/support/global/phones/software/Nokia_N93i_WMP10_driver.inf { "Nokia", 0x0421, "N93i Mobile Phone", 0x04e5, DEVICE_FLAG_NONE }, // From Anonymous Sourceforge User { "Nokia", 0x0421, "N95 Mobile Phone", 0x04ef, DEVICE_FLAG_NONE }, // From: Pat Nicholls { "Nokia", 0x0421, "N80 Internet Edition (Media Player)", 0x04f1, DEVICE_FLAG_UNLOAD_DRIVER }, // From: Maxin B. John { "Nokia", 0x0421, "N9", 0x051a, DEVICE_FLAG_NONE }, /* https://sourceforge.net/p/libmtp/bugs/1308/ */ { "Nokia", 0x0421, "N300", 0x0524, DEVICE_FLAG_NONE }, { "Nokia", 0x0421, "C5-00", 0x0592, DEVICE_FLAG_NONE }, /* https://sourceforge.net/p/libmtp/bugs/1457/ */ { "Nokia", 0x0421, "C5-00 (ID2)", 0x0595, DEVICE_FLAG_NONE }, { "Nokia", 0x0421, "808 PureView", 0x05d3, DEVICE_FLAG_NONE }, // Reported by Sampo Savola // Covers Lumia 920, 820 and probably any WP8 device. { "Nokia", 0x0421, "Lumia WP8", 0x0661, DEVICE_FLAG_NONE }, /* https://sourceforge.net/p/libmtp/bugs/1176/ */ { "Nokia", 0x0421, "Lumia 301", 0x0666, DEVICE_FLAG_NONE }, /* https://sourceforge.net/p/libmtp/support-requests/146/ */ { "Nokia", 0x0421, "XL", 0x06e8, DEVICE_FLAG_UNLOAD_DRIVER }, /* https://sourceforge.net/p/libmtp/patches/69/ * https://sourceforge.net/p/libmtp/bugs/1285/ * ID is the same for various Lumia version. */ { "Nokia", 0x0421, "Lumia (RM-975)", 0x06fc, DEVICE_FLAG_NONE }, /* https://sourceforge.net/p/libmtp/bugs/1453/ */ { "Nokia", 0x0421, "X2 Dual Sim", 0x0708, DEVICE_FLAG_NONE }, /* * Qualcomm * This vendor ID seems to be used a bit by others. */ // Reported by Richard Wall { "Qualcomm (for Nokia)", 0x05c6, "5530 Xpressmusic", 0x0229, DEVICE_FLAG_NONE }, // One thing stated by reporter (Nokia model) another by the detect log... { "Qualcomm (for Nokia/Verizon)", 0x05c6, "6205 Balboa/Verizon Music Phone", 0x3196, DEVICE_FLAG_NONE }, { "Qualcomm (for Gigabyte)", 0x05c6, "GSmart G1342", 0x8800, DEVICE_FLAG_NONE }, { "Qualcomm (for Smartfren)", 0x05c6, "Andromax U", 0x9025, DEVICE_FLAG_NONE }, // New Android phone of the OnePlus brand : the One model { "Qualcomm (for OnePlus)", 0x05c6, "One (MTP)", 0x6764, DEVICE_FLAGS_ANDROID_BUGS }, { "Qualcomm (for OnePlus)", 0x05c6, "One (MTP+ADB)", 0x6765, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1377/ */ { "Qualcomm (for Xolo)", 0x901b, "Xolo Black (MTP)", 0x9039, DEVICE_FLAGS_ANDROID_BUGS }, { "Qualcomm (for PhiComm)", 0x05c6, "C230w (MTP)", 0x9039, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1284/ */ { "Qualcomm (for Highscreen)", 0x05c6, "Omega Prime S", 0xf003, DEVICE_FLAGS_ANDROID_BUGS }, /* * Vendor ID 0x13d1 is some offshoring company in China, * in one source named "A-Max Technology Macao Commercial * Offshore Co. Ltd." sometime "CCTech". */ // Logik brand { "Logik", 0x13d1, "LOG DAX MP3 and DAB Player", 0x7002, DEVICE_FLAG_UNLOAD_DRIVER }, // Technika brand // Reported by { "Technika", 0x13d1, "MP-709", 0x7017, DEVICE_FLAG_UNLOAD_DRIVER }, /* * RCA / Thomson */ // From kiki { "Thomson", 0x069b, "EM28 Series", 0x0774, DEVICE_FLAG_NONE }, { "Thomson / RCA", 0x069b, "Opal / Lyra MC4002", 0x0777, DEVICE_FLAG_NONE }, { "Thomson", 0x069b, "Lyra MC5104B (M51 Series)", 0x077c, DEVICE_FLAG_NONE }, { "Thomson", 0x069b, "RCA H106", 0x301a, DEVICE_FLAG_UNLOAD_DRIVER }, // From Svenna // Not confirmed to be MTP. { "Thomson", 0x069b, "scenium E308", 0x3028, DEVICE_FLAG_NONE }, // From XNJB user { "Thomson / RCA", 0x069b, "Lyra HC308A", 0x3035, DEVICE_FLAG_NONE }, /* * Fujitsu devices */ { "Fujitsu, Ltd", 0x04c5, "F903iX HIGH-SPEED", 0x1140, DEVICE_FLAG_NONE }, // Reported by Thomas Bretthauer { "Fujitsu, Ltd", 0x04c5, "STYLISTIC M532", 0x133b, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/feature-requests/137/ */ { "Fujitsu, Ltd", 0x04c5, "F02-E", 0x1378, DEVICE_FLAGS_ANDROID_BUGS }, /* * Palm device userland program named Pocket Tunes * Reported by Peter Gyongyosi */ { "NormSoft, Inc.", 0x1703, "Pocket Tunes", 0x0001, DEVICE_FLAG_NONE }, // Reported by anonymous submission { "NormSoft, Inc.", 0x1703, "Pocket Tunes 4", 0x0002, DEVICE_FLAG_NONE }, /* * TrekStor, Medion and Maxfield devices * Their datasheet claims their devices are dualmode so probably needs to * unload the attached drivers here. */ // Reported by Stefan Voss // This is a Sigmatel SoC with a hard disk. { "TrekStor", 0x066f, "Vibez 8/12GB", 0x842a, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by anonymous SourceForge user. // This one done for Medion, whatever that is. Error reported so assume // the same bug flag as its ancestor above. { "Medion", 0x066f, "MD8333 (ID1)", 0x8550, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by anonymous SourceForge user { "Medion", 0x066f, "MD8333 (ID2)", 0x8588, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, /* https://sourceforge.net/p/libmtp/bugs/1359/ */ { "Verizon", 0x0408, "Ellipsis 7", 0x3899, DEVICE_FLAGS_ANDROID_BUGS }, // The vendor ID is "Quanta Computer, Inc." // same as Olivetti Olipad 110 // Guessing on device flags { "Medion", 0x0408, "MD99000 (P9514)/Olivetti Olipad 110", 0xb009, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Richard Eigenmann { "Medion", 0x0408, "Lifetab P9514", 0xb00a, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAGS_ANDROID_BUGS }, // Reported by anonymous SourceForge user { "Maxfield", 0x066f, "G-Flash NG 1GB", 0x846c, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by PaoloC // Apparently SigmaTel has an SDK for MTP players with this ID { "SigmaTel Inc.", 0x066f, "MTPMSCN Audio Player", 0xa010, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Cristi Magherusan { "TrekStor", 0x0402, "i.Beat Sweez FM", 0x0611, DEVICE_FLAG_UNLOAD_DRIVER }, // Reported by Fox-ino // No confirmation that this is really MTP so commented it out. // { "ALi Corp.", 0x0402, "MPMAN 2GB", 0x5668, // DEVICE_FLAG_UNLOAD_DRIVER }, // Reported by Anonymous SourceForge user {"TrekStor", 0x1e68, "i.Beat Organix 2.0", 0x0002, DEVICE_FLAG_UNLOAD_DRIVER }, /* Also Thalia Toline. https://sourceforge.net/p/libmtp/bugs/1156/ */ {"iRiver", 0x1e68, "Tolino Tab 7", 0x1002, DEVICE_FLAGS_ANDROID_BUGS }, /* * Disney/Tevion/MyMusix */ // Reported by XNJB user { "Disney", 0x0aa6, "MixMax", 0x6021, DEVICE_FLAG_NONE }, // Reported by anonymous Sourceforge user { "Tevion", 0x0aa6, "MD 81488", 0x3011, DEVICE_FLAG_NONE }, // Reported by Peter Hedlund { "MyMusix", 0x0aa6, "PD-6070", 0x9601, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST | DEVICE_FLAG_NO_RELEASE_INTERFACE }, /* * Cowon Systems, Inc. * The iAudio audiophile devices don't encourage the use of MTP. * See: http://wiki.xiph.org/index.php/PortablePlayers for Ogg * status */ // Reported by Patrik Johansson { "Cowon", 0x0e21, "iAudio U3 (MTP mode)", 0x0701, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // Reported by Kevin Michael Smith { "Cowon", 0x0e21, "iAudio 6 (MTP mode)", 0x0711, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Roberth Karman { "Cowon", 0x0e21, "iAudio 7 (MTP mode)", 0x0751, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // Reported by an anonymous SourceForge user { "Cowon", 0x0e21, "iAudio U5 (MTP mode)", 0x0761, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // Reported by TJ Something { "Cowon", 0x0e21, "iAudio D2 (MTP mode)", 0x0801, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // Reported by anonymous Sourceforge user { "Cowon", 0x0e21, "iAudio D2+ FW 2.x (MTP mode)", 0x0861, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // From Rockbox device listing { "Cowon", 0x0e21, "iAudio D2+ DAB FW 4.x (MTP mode)", 0x0871, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // From Rockbox device listing { "Cowon", 0x0e21, "iAudio D2+ FW 3.x (MTP mode)", 0x0881, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // From Rockbox device listing { "Cowon", 0x0e21, "iAudio D2+ DMB FW 1.x (MTP mode)", 0x0891, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // Reported by { "Cowon", 0x0e21, "iAudio S9 (MTP mode)", 0x0901, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // Reported by Dan Nicholson { "Cowon", 0x0e21, "iAudio 9 (MTP mode)", 0x0911, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // Reported by Franck VDL { "Cowon", 0x0e21, "iAudio J3 (MTP mode)", 0x0921, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // Reported by anonymous SourceForge user { "Cowon", 0x0e21, "iAudio X7 (MTP mode)", 0x0931, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, // Reported by anonymous SourceForge user { "Cowon", 0x0e21, "iAudio C2 (MTP mode)", 0x0941, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, { "Cowon", 0x0e21, "iAudio 10 (MTP mode)", 0x0952, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_OGG_IS_UNKNOWN | DEVICE_FLAG_FLAC_IS_UNKNOWN }, /* * Insignia, dual-mode. */ { "Insignia", 0x19ff, "NS-DV45", 0x0303, DEVICE_FLAG_UNLOAD_DRIVER }, // Reported by Rajan Bella { "Insignia", 0x19ff, "Sport Player", 0x0307, DEVICE_FLAG_UNLOAD_DRIVER }, // Reported by "brad" (anonymous, sourceforge) { "Insignia", 0x19ff, "Pilot 4GB", 0x0309, DEVICE_FLAG_UNLOAD_DRIVER }, /* * LG Electronics */ // Uncertain if this is really the MTP mode device ID... { "LG Electronics Inc.", 0x043e, "T54", 0x7040, DEVICE_FLAG_UNLOAD_DRIVER }, // Not verified - anonymous submission { "LG Electronics Inc.", 0x043e, "UP3", 0x70b1, DEVICE_FLAG_NONE }, // Reported by Joseph Nahmias { "LG Electronics Inc.", 0x1004, "VX8550 V CAST Mobile Phone", 0x6010, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR }, // Reported by Cyrille Potereau { "LG Electronics Inc.", 0x1004, "KC910 Renoir Mobile Phone", 0x608f, DEVICE_FLAG_UNLOAD_DRIVER }, // Reported by Aaron Slunt { "LG Electronics Inc.", 0x1004, "GR-500 Music Player", 0x611b, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR }, { "LG Electronics Inc.", 0x1004, "KM900", 0x6132, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_UNLOAD_DRIVER }, { "LG Electronics Inc.", 0x1004, "LG8575", 0x619a, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_UNLOAD_DRIVER }, /* * These two are LG Android phones: * LG-F6 * V909 G-Slate */ { "LG Electronics Inc.", 0x1004, "Android phone (ID1)", 0x61f1, DEVICE_FLAGS_ANDROID_BUGS }, { "LG Electronics Inc.", 0x1004, "Android phone (ID2)", 0x61f9, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1007/ */ { "LG Electronics Inc.", 0x1004, "LG VS980", 0x621c, DEVICE_FLAGS_ANDROID_BUGS }, { "LG Electronics Inc.", 0x1004, "LG2 Optimus", 0x6225, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1386/ */ { "LG Electronics Inc.", 0x1004, "LG VS950", 0x622a, DEVICE_FLAGS_ANDROID_BUGS }, { "LG Electronics Inc.", 0x1004, "LG VS870", 0x6239, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/992/ */ { "LG Electronics Inc.", 0x1004, "LG VS890", 0x623d, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/190/ */ { "LG Electronics Inc.", 0x1004, "LG Optimus Zone 2", 0x6259, DEVICE_FLAGS_ANDROID_BUGS }, { "LG Electronics Inc.", 0x1004, "VK810", 0x6265, DEVICE_FLAGS_ANDROID_BUGS }, { "LG Electronics Inc.", 0x1004, "G3", 0x627f, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1463/ */ { "LG Electronics Inc.", 0x1004, "810 tablet", 0x6263, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/134/ */ { "LG Electronics Inc.", 0x1004, "G3 (VS985)", 0x626e, DEVICE_FLAGS_ANDROID_BUGS }, /* * This VID+PID is used by a lot of LG models: * E430 * E460 * E610 * E612 * E617G * E970 * P700 */ { "LG Electronics Inc.", 0x1004, "Various E and P models", 0x631c, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1294/ */ { "LG Electronics Inc.", 0x1004, "LG G Flex 2", 0x633e, DEVICE_FLAGS_ANDROID_BUGS }, /* * Sony * It could be that these PIDs are one-per hundred series, so * NWZ-A8xx is 0325, NWZ-S5xx is 0x326 etc. We need more devices * reported to see a pattern here. */ // Reported by Alessandro Radaelli { "Sony", 0x054c, "NWZ-A815/NWZ-A818", 0x0325, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by anonymous Sourceforge user. { "Sony", 0x054c, "NWZ-S516", 0x0326, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Endre Oma { "Sony", 0x054c, "NWZ-S615F/NWZ-S616F/NWZ-S618F", 0x0327, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Jean-Marc Bourguet { "Sony", 0x054c, "NWZ-S716F", 0x035a, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Anon SF User / Anthon van der Neut { "Sony", 0x054c, "NWZ-A826/NWZ-A828/NWZ-A829", 0x035b, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Niek Klaverstijn { "Sony", 0x054c, "NWZ-A726/NWZ-A728/NWZ-A768", 0x035c, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Mehdi AMINI { "Sony", 0x054c, "NWZ-B135", 0x036e, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by { "Sony", 0x054c, "NWZ-E436F", 0x0385, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Michael Wilkinson { "Sony", 0x054c, "NWZ-W202", 0x0388, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Ondrej Sury { "Sony", 0x054c, "NWZ-S739F", 0x038c, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Marco Filipe Nunes Soares Abrantes Pereira { "Sony", 0x054c, "NWZ-S638F", 0x038e, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Elliot { "Sony", 0x054c, "NWZ-X1050B/NWZ-X1060B", 0x0397, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Silvio J. Gutierrez { "Sony", 0x054c, "NWZ-X1051/NWZ-X1061", 0x0398, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Gregory Boddin { "Sony", 0x054c, "NWZ-B142F", 0x03d8, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Rick Warner { "Sony", 0x054c, "NWZ-E344/E345", 0x03fc, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Jonathan Stowe { "Sony", 0x054c, "NWZ-E445", 0x03fd, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Anonymous SourceForge user { "Sony", 0x054c, "NWZ-S545", 0x03fe, DEVICE_FLAGS_SONY_NWZ_BUGS }, { "Sony", 0x054c, "NWZ-A845", 0x0404, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by anonymous SourceForge user { "Sony", 0x054c, "NWZ-W252B", 0x04bb, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Suspect this device has strong DRM features // See https://answers.launchpad.net/ubuntu/+source/libmtp/+question/149587 { "Sony", 0x054c, "NWZ-B153F", 0x04be, DEVICE_FLAGS_SONY_NWZ_BUGS }, { "Sony", 0x054c, "NWZ-E354", 0x04cb, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Toni Burgarello { "Sony", 0x054c, "NWZ-S754", 0x04cc, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Hideki Yamane { "Sony", 0x054c, "Sony Tablet P1", 0x04d1, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by dmiceman { "Sony", 0x054c, "NWZ-B163F", 0x059a, DEVICE_FLAGS_SONY_NWZ_BUGS }, { "Sony", 0x054c, "NWZ-E464", 0x05a6, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Reported by Jan Rheinlaender { "Sony", 0x054c, "NWZ-S765", 0x05a8, DEVICE_FLAGS_SONY_NWZ_BUGS }, // Olivier Keshavjee { "Sony", 0x054c, "Sony Tablet S", 0x05b3, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by ghalambaz { "Sony", 0x054c, "Sony Tablet S1", 0x05b4, DEVICE_FLAGS_ANDROID_BUGS }, { "Sony", 0x054c, "NWZ-B173F", 0x0689, DEVICE_FLAGS_SONY_NWZ_BUGS }, { "Sony", 0x054c, "DCR-SR75", 0x1294, DEVICE_FLAGS_SONY_NWZ_BUGS }, /* * SonyEricsson * These initially seemed to support GetObjPropList but later revisions * of the firmware seem to have broken it, so all are flagged as broken * for now. */ // Reported by Øyvind Stegard { "SonyEricsson", 0x0fce, "K850i", 0x0075, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Michael Eriksson { "SonyEricsson", 0x0fce, "W910", 0x0076, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Zack { "SonyEricsson", 0x0fce, "W890i", 0x00b3, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by robert dot ahlskog at gmail { "SonyEricsson", 0x0fce, "W760i", 0x00c6, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Linus Ã…kesson { "SonyEricsson", 0x0fce, "C902", 0x00d4, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by an anonymous SourceForge user { "SonyEricsson", 0x0fce, "C702", 0x00d9, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Christian Zuckschwerdt { "SonyEricsson", 0x0fce, "W980", 0x00da, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by David Taylor { "SonyEricsson", 0x0fce, "C905", 0x00ef, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by David House { "SonyEricsson", 0x0fce, "W595", 0x00f3, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST }, // Reported by Mattias Evensson { "SonyEricsson", 0x0fce, "W902", 0x00f5, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Sarunas // Doesn't need any flags according to reporter { "SonyEricsson", 0x0fce, "T700", 0x00fb, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, // Reported by Stéphane Pontier { "SonyEricsson", 0x0fce, "W705/W715", 0x0105, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by HÃ¥kan Kvist { "SonyEricsson", 0x0fce, "W995", 0x0112, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by anonymous SourceForge user { "SonyEricsson", 0x0fce, "U5", 0x0133, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Flo { "SonyEricsson", 0x0fce, "U8i", 0x013a, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by xirotyu { "SonyEricsson", 0x0fce, "j10i2 (Elm)", 0x0144, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Serge Chirik { "SonyEricsson", 0x0fce, "j108i (Cedar)", 0x014e, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Jonas Nyrén { "SonyEricsson", 0x0fce, "W302", 0x10c8, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Anonymous Sourceforge user { "SonyEricsson", 0x0fce, "j10i (Elm)", 0xd144, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Thomas Schweitzer { "SonyEricsson", 0x0fce, "K550i", 0xe000, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, /* * SonyEricsson/SONY Android devices usually have three personalities due to * using composite descriptors and the fact that Windows cannot distinguish * the device unless each composite descriptor is unique. * * Legend: * MTP = Media Transfer Protocol * UMS = USB Mass Storage Protocol * ADB = Android Debug Bridge Protocol * CDC = Communications Device Class, Internet Sharing * * 0x0nnn = MTP * 0x4nnn = MTP + UMS (for CD-ROM) * 0x5nnn = MTP + ADB * 0x6nnn = UMS + ADB * 0x7nnn = MTP + CDC * 0x8nnn = MTP + CDC + ADB * 0xannn = MTP + UMS (MTP for eMMC and UMS for external SD card) * 0xbnnn = MTP + UMS + ADB * 0xennn = UMS only * * The SonyEricsson and SONY devices have (at least) two deployed MTP * stacks: Aricent and Android. These have different bug flags, and * sometimes the same device has firmware upgrades moving it from * the Aricent to Android MTP stack without changing the device * VID+PID (first observed on the SK17i Xperia Mini Pro), so the * detection has to be more elaborate. The code in libmtp.c will do * this and assign the proper bug flags (hopefully). * That is why DEVICE_FLAG_NONE is used for these devices. * * Devices reported by: * Sony Mobile Communications (via Toby Collett) * Jonas Salling * Eamonn Webster * Alejandro DC * StehpanKa * hdhoang * Paul Taylor * Bruno Basilio * Christoffer Holmstedt * equaeghe * Ondra Lengal * Michael K. * Jean-François B. * Eduard Bloch * Ah Hong * Eowyn Carter */ { "SonyEricsson", 0x0fce, "c1605 Xperia Dual E MTP", 0x0146, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "LT15i Xperia arc S MTP", 0x014f, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "MT11i Xperia Neo MTP", 0x0156, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "IS12S Xperia Acro MTP", 0x0157, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "MK16i Xperia MTP", 0x015a, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "R800/R88i Xperia Play MTP", 0x015d, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "ST18a Xperia Ray MTP", 0x0161, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "SK17i Xperia Mini Pro MTP", 0x0166, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "ST15i Xperia Mini MTP", 0x0167, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "ST17i Xperia Active MTP", 0x0168, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT26i Xperia S MTP", 0x0169, DEVICE_FLAG_NO_ZERO_READS }, { "SONY", 0x0fce, "WT19i Live Walkman MTP", 0x016d, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST21i Xperia Tipo MTP", 0x0170, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST15i Xperia U MTP", 0x0171, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT22i Xperia P MTP", 0x0172, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "MT27i Xperia Sola MTP", 0x0173, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT26w Xperia Acro HD IS12S MTP", 0x0175, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT26w Xperia Acro HD SO-03D MTP", 0x0176, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT28at Xperia Ion MTP", 0x0177, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT29i Xperia GX MTP", 0x0178, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST27i/ST27a Xperia go MTP", 0x017e, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST23i Xperia Miro MTP", 0x0180, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "SO-05D Xperia SX MTP", 0x0181, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT30p Xperia T MTP", 0x0182, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT25i Xperia V MTP", 0x0186, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia J MTP", 0x0188, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia ZL MTP", 0x0189, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia E MTP", 0x018c, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Tablet Z MTP 1", 0x018d, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia L MTP", 0x0192, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z MTP", 0x0193, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Tablet Z MTP 2", 0x0194, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia SP MTP", 0x0195, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z Ultra MTP (ID2)", 0x0196, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia ZR MTP", 0x0197, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia A MTP", 0x0198, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia M MTP", 0x019b, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z Ultra MTP (ID3)", 0x019c, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z1 MTP", 0x019e, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia C MTP", 0x01a3, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z1 Compact D5503", 0x01a7, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia M2 MTP", 0x01aa, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia M2 Dual MTP", 0x01ab, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z2 MTP", 0x01af, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z2 Tablet MTP", 0x01b1, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia Z Ultra MTP", 0x01b6, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia M2 Aqua MTP", 0x01b8, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia Z3 MTP", 0x01ba, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z3 Compact MTP", 0x01bb, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia E3 MTP", 0x01bc, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z3 Tablet MTP", 0x01c0, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria M4 Aqua Dual MTP", 0x01c4, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "E2115 MTP", 0x01c5, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria Z3+ MTP", 0x01c9, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria E4g MTP", 0x01cb, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria Z5 Compact MTP", 0x01da, DEVICE_FLAG_NONE }, /* * MTP+UMS personalities of MTP devices (see above) */ { "SonyEricsson", 0x0fce, "IS12S Xperia Acro MTP+CDROM", 0x4157, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "ST17i Xperia Active MTP+CDROM", 0x4168, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT26i Xperia S MTP+CDROM", 0x4169, DEVICE_FLAG_NO_ZERO_READS }, { "SONY", 0x0fce, "ST21i Xperia Tipo MTP+CDROM", 0x4170, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST25i Xperia U MTP+CDROM", 0x4171, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT22i Xperia P MTP+CDROM", 0x4172, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "MT27i Xperia Sola MTP+CDROM", 0x4173, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT26w Xperia Acro HD IS12S MTP+CDROM", 0x4175, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT26w Xperia Acro HD SO-03D MTP+CDROM", 0x4176, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT28at Xperia Ion MTP+CDROM", 0x4177, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT29i Xperia GX MTP+CDROM", 0x4178, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST27i/ST27a Xperia go MTP+CDROM", 0x417e, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST23i Xperia Miro MTP+CDROM", 0x4180, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "SO-05D Xperia SX MTP+CDROM", 0x4181, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT30p Xperia T MTP+CDROM", 0x4182, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT25i Xperia V MTP+CDROM", 0x4186, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia J MTP+CDROM", 0x4188, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia ZL MTP+CDROM", 0x4189, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia E MTP+CDROM", 0x418c, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Tablet Z MTP+CDROM 1", 0x418d, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia L MTP+CDROM", 0x4192, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z MTP+CDROM", 0x4193, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Tablet Z MTP+CDROM 2", 0x4194, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia SP MTP+CDROM", 0x4195, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia M MTP+CDROM", 0x419b, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z Ultra MTP+CDROM (ID3)", 0x419c, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z1 MTP+CDROM", 0x419e, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia C MTP+CDROM", 0x41a3, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z1 Compact D5503 MTP+CDROM", 0x41a7, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia M2 MTP+CDROM", 0x41aa, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia M2 Dual MTP+CDROM", 0x41ab, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z2 MTP+CDROM", 0x41af, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z2 Tablet MTP+CDROM", 0x41b1, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia Z Ultra MTP+CDROM", 0x41b6, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia M2 Aqua MTP+CDROM", 0x41b8, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia Z3 MTP+CDROM", 0x41ba, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z3 Compact MTP+CDROM", 0x41bb, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia E3 MTP+CDROM", 0x41bc, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z3 Tablet MTP+CDROM", 0x41c0, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria M4 Aqua Dual MTP+CDROM", 0x41c4, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "E2115 MTP+CDROM", 0x41c5, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria Z3+ MTP+CDROM", 0x41c9, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria E4g MTP+CDROM", 0x41cb, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria Z5 Compact MTP+CDROM", 0x41da, DEVICE_FLAG_NONE }, /* * MTP+ADB personalities of MTP devices (see above) */ { "SonyEricsson", 0x0fce, "c1605 Xperia Dual E MTP+ADB", 0x5146, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "LT15i Xperia Arc MTP+ADB", 0x514f, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "MT11i Xperia Neo MTP+ADB", 0x5156, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "IS12S Xperia Acro MTP+ADB", 0x5157, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "MK16i Xperia MTP+ADB", 0x515a, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "R800/R88i Xperia Play MTP+ADB", 0x515d, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "ST18i Xperia Ray MTP+ADB", 0x5161, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "SK17i Xperia Mini Pro MTP+ADB", 0x5166, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "ST15i Xperia Mini MTP+ADB", 0x5167, DEVICE_FLAG_NONE }, { "SonyEricsson", 0x0fce, "ST17i Xperia Active MTP+ADB", 0x5168, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT26i Xperia S MTP+ADB", 0x5169, DEVICE_FLAG_NO_ZERO_READS }, { "SonyEricsson", 0x0fce, "WT19i Live Walkman MTP+ADB", 0x516d, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST21i Xperia Tipo MTP+ADB", 0x5170, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST25i Xperia U MTP+ADB", 0x5171, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT22i Xperia P MTP+ADB", 0x5172, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "MT27i Xperia Sola MTP+ADB", 0x5173, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "IS12S Xperia Acro HD MTP+ADB", 0x5175, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "SO-03D Xperia Acro HD MTP+ADB", 0x5176, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT28at Xperia Ion MTP+ADB", 0x5177, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT29i Xperia GX MTP+ADB", 0x5178, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST27i/ST27a Xperia go MTP+ADB", 0x517e, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST23i Xperia Miro MTP+ADB", 0x5180, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "SO-05D Xperia SX MTP+ADB", 0x5181, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT30p Xperia T MTP+ADB", 0x5182, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT25i Xperia V MTP+ADB", 0x5186, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia J MTP+ADB", 0x5188, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia ZL MTP+ADB", 0x5189, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia E MTP+ADB", 0x518c, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Tablet Z MTP+ADB 1", 0x518d, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia L MTP+ADB", 0x5192, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z MTP+ADB", 0x5193, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Tablet Z MTP+ADB 2", 0x5194, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia SP MTP+ADB", 0x5195, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z Ultra MTP+ADB (ID2)", 0x5196, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia ZR MTP+ADB", 0x5197, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia A MTP+ADB", 0x5198, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia M MTP+ADB", 0x519b, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z Ultra MTP+ADB (ID3)", 0x519c, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z1 MTP+ADB", 0x519e, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia C MTP+ADB", 0x51a3, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z1 Compact MTP+ADB", 0x51a7, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia M2 MTP+ADB", 0x51aa, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia M2 Dual MTP+ADB", 0x51ab, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z2 MTP+ADB", 0x51af, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z2 Tablet MTP+ADB", 0x51b1, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia Z Ultra MTP+ADB", 0x51b6, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia M2 Aqua MTP+ADB", 0x51b8, DEVICE_FLAGS_ANDROID_BUGS }, { "SONY", 0x0fce, "Xperia Z3 MTP+ADB", 0x51ba, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z3 Compact MTP+ADB", 0x51bb, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia E3 MTP+ADB", 0x51bc, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "Xperia Z3 Tablet MTP+ADB", 0x41c0, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria M4 Aqua Dual MTP+ADB", 0x51c4, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "E2115 MTP+ADB", 0x51c5, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria Z3+ MTP+ADB", 0x51c9, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria E4g MTP+ADB", 0x51cb, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "XPeria Z5 Compact MTP+ADB", 0x51da, DEVICE_FLAG_NONE }, /* * MTP+UMS modes * This mode is for using MTP on the internal storage (eMMC) * and using UMS (Mass Storage Device Class) on the external * SD card */ { "SONY", 0x0fce, "MT27i Xperia Sola MTP+UMS", 0xa173, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "IS12S Xperia Acro HD MTP+UMS", 0xa175, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "SO-03D Xperia Acro HD MTP+UMS", 0xa176, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT28at Xperia Ion MTP+UMS", 0xa177, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST27i/ST27a Xperia go MTP+UMS", 0xa17e, DEVICE_FLAG_NONE }, /* * MTP+UMS+ADB modes * Like the above, but also ADB */ { "SONY", 0x0fce, "MT27i Xperia Sola MTP+UMS+ADB", 0xb173, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "IS12S Xperia Acro MTP+UMS+ADB", 0xb175, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "SO-03D Xperia Acro MTP+UMS+ADB", 0xb176, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "LT28at Xperia Ion MTP+UMS+ADB", 0xb177, DEVICE_FLAG_NONE }, { "SONY", 0x0fce, "ST27i/ST27a Xperia go MTP+UMS+ADB", 0xb17e, DEVICE_FLAG_NONE }, /* * Motorola * Assume DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST on all of these. */ /* https://sourceforge.net/p/libmtp/feature-requests/136/ */ { "Motorola", 0x22b8, "XT1524 (MTP)", 0x002e, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by David Boyd { "Motorola", 0x22b8, "V3m/V750 verizon", 0x2a65, DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, { "Motorola", 0x22b8, "Atrix/Razr HD (MTP)", 0x2e32, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Atrix/Razr HD (MTP+ADB)", 0x2e33, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "RAZR M XT907 (MTP)", 0x2e50, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "RAZR M XT907 (MTP+ADB)", 0x2e51, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Moto X (XT1053)", 0x2e62, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Moto X (XT1058)", 0x2e63, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1323/ */ { "Motorola", 0x22b8, "Moto X (XT1080)", 0x2e66, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Droid Maxx (XT1080)", 0x2e67, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Droid Ultra", 0x2e68, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Moto G (ID1)", 0x2e76, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Moto G (ID2)", 0x2e82, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1030/, PTP Id */ { "Motorola", 0x22b8, "Moto G (XT1032)", 0x2e84, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Jader Rodrigues Simoes { "Motorola", 0x22b8, "Xoom 2 Media Edition (ID3)", 0x41cf, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Steven Roemen { "Motorola", 0x22b8, "Droid X/MB525 (Defy)", 0x41d6, DEVICE_FLAG_NONE }, { "Motorola", 0x22b8, "DROID2 (ID1)", 0x41da, DEVICE_FLAG_NONE }, { "Motorola", 0x22b8, "Milestone / Verizon Droid", 0x41dc, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "DROID2 (ID2)", 0x42a7, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Xoom 2 Media Edition (ID2)", 0x4306, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Xoom 2 Media Edition", 0x4311, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by B,H,Kissinger { "Motorola", 0x22b8, "XT912/XT928", 0x4362, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1104/ , PTP id. */ { "Motorola", 0x22b8, "DROID4 (PTP)", 0x4373, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Lundgren { "Motorola", 0x22b8, "DROID4", 0x437f, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Marcus Meissner to libptp2 { "Motorola", 0x22b8, "IdeaPad K1", 0x4811, DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST }, // Reported by Hans-Joachim Baader to libptp2 { "Motorola", 0x22b8, "A1200", 0x60ca, DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST }, // http://mark.cdmaforums.com/Files/Motdmmtp.inf { "Motorola", 0x22b8, "MTP Test Command Interface", 0x6413, DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST }, // Reported by anonymous user { "Motorola", 0x22b8, "RAZR2 V8/U9/Z6", 0x6415, DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST }, // Reported by Rodrigo Angelo Rafael // Razr D1, D3 { "Motorola", 0x22b8, "Razr D1/D3/i (MTP)", 0x64b5, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Razr D1/D3/i (MTP+?)", 0x64b6, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/697/ */ { "Motorola", 0x22b8, "Atrix XT687 (MTP)", 0x64cf, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Brian Dolbec { "Motorola", 0x22b8, "Atrix MB860 (MTP)", 0x7088, DEVICE_FLAGS_ANDROID_BUGS }, /* * Motorola Xoom (Wingray) variants * * These devices seem to use these product IDs simulatenously * https://code.google.com/p/android-source-browsing/source/browse/init.stingray.usb.rc?repo=device--moto--wingray * * 0x70a3 - Factory test - reported as early MTP ID * 0x70a8 - MTP * 0x70a9 - MTP+ADB * 0x70ae - RNDIS * 0x70af - RNDIS+ADB * 0x70b0 - ACM * 0x70b1 - ACM+ADB * 0x70b2 - ACM+RNDIS * 0x70b3 - ACM+RNDIS+ADB * 0x70b4 - PTP * 0x70b5 - PTP+ADB * * Reported by Google Inc's Yavor Goulishev */ { "Motorola", 0x22b8, "Xoom (Factory test)", 0x70a3, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Xoom (MTP)", 0x70a8, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Xoom (MTP+ADB)", 0x70a9, DEVICE_FLAGS_ANDROID_BUGS }, // "carried by C Spire and other CDMA US carriers" { "Motorola", 0x22b8, "Milestone X2", 0x70ca, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "XT890/907/Razr (MTP)", 0x710d, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "XT890/907/Razr (MTP+ADB)", 0x710e, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1183/ */ { "Motorola", 0x22b8, "Droid Turbo (XT1254)", 0x2ea5, DEVICE_FLAGS_ANDROID_BUGS }, { "Motorola", 0x22b8, "Droid Turbo Verizon", 0x2ea8, DEVICE_FLAGS_ANDROID_BUGS }, /* * XT890/907/Razr * 710f is USB mass storage */ /* * Google * These guys lend their Vendor ID to anyone who comes down the * road to produce an Android tablet it seems... The Vendor ID * was originally used for Nexus phones */ { "Google Inc (for Allwinner)", 0x18d1, "A31 SoC", 0x0006, DEVICE_FLAGS_ANDROID_BUGS }, { "Google Inc (for Ainol Novo)", 0x18d1, "Fire/Flame", 0x0007, DEVICE_FLAGS_ANDROID_BUGS }, { "Google Inc (for Sony)", 0x18d1, "S1", 0x05b3, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by anonymous Sourceforge user { "Google Inc (for Barnes & Noble)", 0x18d1, "Nook Color", 0x2d02, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by anonymous Sourceforge user { "Google Inc (for Asus)", 0x18d1, "TF201 Transformer", 0x4d00, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by anonymous Sourceforge user { "Google Inc (for Asus)", 0x18d1, "TF101 Transformer", 0x4e0f, DEVICE_FLAGS_ANDROID_BUGS }, // 0x4e21 (Nexus S) is a USB Mass Storage device. { "Google Inc (for Samsung)", 0x18d1, "Nexus S (MTP)", 0x4e25, DEVICE_FLAGS_ANDROID_BUGS }, // 0x4e26 is also used by "Ramos W30HD Pro Quad Core" { "Google Inc (for Samsung)", 0x18d1, "Nexus S (MTP+ADB)", 0x4e26, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Chris Smith { "Google Inc (for Asus)", 0x18d1, "Nexus 7 (MTP)", 0x4e41, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Michael Hess { "Google Inc (for Asus)", 0x18d1, "Nexus 7 (MTP+ADB)", 0x4e42, DEVICE_FLAGS_ANDROID_BUGS }, { "Google Inc (for LG Electronics/Samsung)", 0x18d1, "Nexus 4/5/7/10 (MTP)", 0x4ee1, DEVICE_FLAGS_ANDROID_BUGS }, { "Google Inc (for LG Electronics/Samsung)", 0x18d1, "Nexus 4/5/7/10 (MTP+ADB)", 0x4ee2, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1255/ */ { "Google", 0x18d1, "Nexus 5 (MTP)", 0x4ee5, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1444/ */ { "Google", 0x18d1, "Pixel C (MTP)", 0x5202, DEVICE_FLAGS_ANDROID_BUGS }, { "Google", 0x18d1, "Pixel C (MTP+ADB)", 0x5203, DEVICE_FLAGS_ANDROID_BUGS }, // WiFi-only version of Xoom // See: http://bugzilla.gnome.org/show_bug.cgi?id=647506 { "Google Inc (for Motorola)", 0x18d1, "Xoom (MZ604)", 0x70a8, DEVICE_FLAGS_ANDROID_BUGS }, { "Google Inc (for Toshiba)", 0x18d1, "Thrive 7/AT105", 0x7102, DEVICE_FLAGS_ANDROID_BUGS }, { "Google Inc (for Lenovo)", 0x18d1, "Ideapad K1", 0x740a, DEVICE_FLAGS_ANDROID_BUGS }, // Another OEM for Medion { "Google Inc (for Medion)", 0x18d1, "MD99000 (P9514)", 0xb00a, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Frederik Himpe { "Google Inc (for LG Electronics)", 0x18d1, "P990/Optimus (Cyanogen)", 0xd109, DEVICE_FLAGS_ANDROID_BUGS }, { "Google Inc (for LG Electronics)", 0x18d1, "P990/Optimus", 0xd10a, DEVICE_FLAGS_ANDROID_BUGS }, /* * Media Keg */ // Reported by Rajan Bella { "Kenwood", 0x0b28, "Media Keg HD10GB7 Sport Player", 0x100c, DEVICE_FLAG_UNLOAD_DRIVER}, /* * Micro-Star International (MSI) */ // Reported by anonymous sourceforge user. { "Micro-Star International", 0x0db0, "P610/Model MS-5557", 0x5572, DEVICE_FLAG_NONE }, /* * FOMA */ { "FOMA", 0x06d3, "D905i", 0x21ba, DEVICE_FLAG_NONE }, /* * Haier */ // Both reported by an anonymous SourceForge user // This is the 30 GiB model { "Haier", 0x1302, "Ibiza Rhapsody 1", 0x1016, DEVICE_FLAG_NONE }, // This is the 4/8 GiB model { "Haier", 0x1302, "Ibiza Rhapsody 2", 0x1017, DEVICE_FLAG_NONE }, /* * Panasonic */ // Reported by dmizer { "Panasonic", 0x04da, "P905i", 0x2145, DEVICE_FLAG_NONE }, // Reported by Taku { "Panasonic", 0x04da, "P906i", 0x2158, DEVICE_FLAG_NONE }, /* * Polaroid */ { "Polaroid", 0x0546, "Freescape/MPU-433158", 0x2035, DEVICE_FLAG_NONE }, /* * Pioneer */ // Reported by Dan Allen { "Pioneer", 0x08e4, "XMP3", 0x0148, DEVICE_FLAG_NONE }, /* * Slacker Inc. * Put in all evilness flags because it looks fragile. */ // Reported by Pug Fantus { "Slacker Inc.", 0x1bdc, "Slacker Portable Media Player", 0xfabf, DEVICE_FLAG_BROKEN_BATTERY_LEVEL | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST | DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST }, // Reported by anonymous user { "Conceptronic", 0x1e53, "CMTD2", 0x0005, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Demadridsur { "O2 Sistemas", 0x1e53, "ZoltarTV", 0x0006, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by da-beat { "Wyplay", 0x1e53, "Wyplayer", 0x0007, DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, // Reported by Sense Hofstede { "Perception Digital, Ltd", 0x0aa6, "Gigaware GX400", 0x9702, DEVICE_FLAG_NONE }, /* * RIM's BlackBerry */ // Reported by Nicolas VIVIEN { "RIM", 0x0fca, "BlackBerry Storm/9650", 0x8007, DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_SWITCH_MODE_BLACKBERRY | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, /* * Nextar */ { "Nextar", 0x0402, "MA715A-8R", 0x5668, DEVICE_FLAG_NONE }, /* * Coby */ { "Coby", 0x1e74, "COBY MP705", 0x6512, DEVICE_FLAG_NONE }, #if 0 /* * Apple devices, which are not MTP natively but can be made to speak MTP * using PwnTunes (http://www.pwntunes.net/) * CURRENTLY COMMENTED OUT: * These will make the UDEV rules flag these as MTP devices even if * PwnTunes is NOT installed. That is unacceptable, so a better solution * that actually inspects if the device has PwnTunes/MTP support needs * to be found, see: * https://sourceforge.net/p/libmtp/bugs/759/ */ { "Apple", 0x05ac, "iPhone", 0x1290, DEVICE_FLAG_NONE }, { "Apple", 0x05ac, "iPod Touch 1st Gen", 0x1291, DEVICE_FLAG_NONE }, { "Apple", 0x05ac, "iPhone 3G", 0x1292, DEVICE_FLAG_NONE }, { "Apple", 0x05ac, "iPod Touch 2nd Gen", 0x1293, DEVICE_FLAG_NONE }, { "Apple", 0x05ac, "iPhone 3GS", 0x1294, DEVICE_FLAG_NONE }, { "Apple", 0x05ac, "0x1296", 0x1296, DEVICE_FLAG_NONE }, { "Apple", 0x05ac, "0x1297", 0x1297, DEVICE_FLAG_NONE }, { "Apple", 0x05ac, "0x1298", 0x1298, DEVICE_FLAG_NONE }, { "Apple", 0x05ac, "iPod Touch 3rd Gen", 0x1299, DEVICE_FLAG_NONE }, { "Apple", 0x05ac, "iPad", 0x129a, DEVICE_FLAG_NONE }, #endif // Reported by anonymous SourceForge user, also reported as // Pantech Crux, claming to be: // Manufacturer: Qualcomm // Model: Windows Simulator // Device version: Qualcomm MTP1.0 { "Curitel Communications, Inc.", 0x106c, "Verizon Wireless Device", 0x3215, DEVICE_FLAG_NONE }, // Reported by: Jim Hanrahan { "Pantech", 0x106c, "Crux", 0xf003, DEVICE_FLAG_NONE }, /* * Asus * Pattern of PIDs on Android devices seem to be: * n+0 = MTP * n+1 = MTP+ADB * n+2 = ? * n+3 = ? * n+4 = PTP */ // Reported by Glen Overby { "Asus", 0x0b05, "TF300 Transformer (MTP)", 0x4c80, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by jaile { "Asus", 0x0b05, "TF300 Transformer (MTP+ADB)", 0x4c81, DEVICE_FLAGS_ANDROID_BUGS }, // Repored by Florian Apolloner { "Asus", 0x0b05, "TF700 Transformer (MTP)", 0x4c90, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "TF700 Transformer (MTP+ADB)", 0x4c91, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "TF701T Transformer Pad (MTP)", 0x4ca0, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "TF701T Transformer Pad (MTP+ADB)", 0x4ca1, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/135/ */ { "Asus", 0x0b05, "ME302KL MeMo Pad FHD10 (MTP)", 0x4cc0, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "ME302KL MeMo Pad FHD10 (MTP+ADB)", 0x4cc1, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "ME301T MeMo Pad Smart 10 (MTP)", 0x4cd0, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "ME301T MeMo Pad Smart 10 (MTP+ADB)", 0x4cd1, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "Asus Fonepad Note 6 (MTP)", 0x4ce0, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "Asus Fonepad Note 6 (MTP+ADB)", 0x4ce1, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "TF201 Transformer Prime (keyboard dock)", 0x4d00, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "TF201 Transformer Prime (tablet only)", 0x4d01, DEVICE_FLAGS_ANDROID_BUGS }, // 4d04 is the PTP mode, don't add it { "Asus", 0x0b05, "SL101 (MTP)", 0x4e00, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "SL101 (MTP+ADB)", 0x4e01, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "TF101 Eeepad Transformer (MTP)", 0x4e0f, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "TF101 Eeepad Transformer (MTP+ADB)", 0x4e1f, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "Fonepad", 0x514f, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "PadFone (MTP)", 0x5200, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "PadFone (MTP+ADB)", 0x5201, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "ME302C MemoPad (MTP+?)", 0x520f, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "PadFone 2 (MTP)", 0x5210, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "PadFone 2 (MTP+ADB)", 0x5211, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "PadFone 2 (PTP)", 0x5214, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "ME302C MemoPad (MTP)", 0x521f, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1066/ */ { "Asus", 0x0b05, "PadFone Infinity (2nd ID) (MTP)", 0x5220, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "PadFone Infinity (2nd ID) (MTP+ADB)", 0x5221, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "PadFone Infinity (MTP)", 0x5230, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "PadFone Infinity (MTP+ADB)", 0x5231, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "Memo ME172V (MTP)", 0x5400, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1072/ */ { "Asus", 0x0b05, "Fonepad 7 LTE ME372CL (MTP)", 0x540f, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "Memo ME173X (MTP)", 0x5410, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "Memo ME173X (MTP+ADB)", 0x5411, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1072/ */ { "Asus", 0x0b05, "Fonepad 7 LTE ME372CL (MTP+ADB)", 0x541f, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "Memo K00F (MTP)", 0x5460, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "Memo Pad 8 (MTP)", 0x5466, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "Memo K00F (MTP+ADB)", 0x5468, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/158/ */ { "Asus", 0x0b05, "ZenFone 5 (MTP)", 0x5480, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1279/ */ { "Asus", 0x0b05, "ZenFone 5 (MTP+ADB)", 0x5481, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1236/ */ { "Asus", 0x0b05, "ZenFone 6 (MTP)", 0x5490, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "ZenFone 6 (MTP+ADB)", 0x5491, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1239/ */ { "Asus", 0x0b05, "K010 (MTP)", 0x5500, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1196/ */ { "Asus", 0x0b05, "MemoPad 7 (MTP+ADB)", 0x5506, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1069/ */ { "Asus", 0x0b05, "K00E (MTP+ADB)", 0x550f, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1244/ */ { "Asus", 0x0b05, "MemoPad 8 ME181 CX (MTP)", 0x5561, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1406/ */ { "Asus", 0x0b05, "Zenfone 2 (MTP)", 0x5600, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1364/ */ { "Asus", 0x0b05, "Z00AD (MTP)", 0x5601, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "TX201LA (MTP)", 0x561f, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1271/ */ { "Asus", 0x0b05, "ZenFone 4 (MTP)", 0x580f, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1179/ */ { "Asus", 0x0b05, "ZenFone 4 A400CG (MTP)", 0x581f, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1258/ */ { "Asus", 0x0b05, "A450CG (MTP)", 0x5a0f, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1350/ */ { "Asus", 0x0b05, "Zenfone 2 ZE550ML (MTP)", 0x5f02, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1364/ */ { "Asus", 0x0b05, "Zenfone 2 ZE551ML (MTP)", 0x5f03, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1232/ */ { "Asus", 0x0b05, "MemoPad 7 (ME572CL)", 0x7772, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1351/ */ { "Asus", 0x0b05, "Fonepad 7 (FE375CXG)", 0x7773, DEVICE_FLAGS_ANDROID_BUGS }, { "Asus", 0x0b05, "ZenFone 5 A500KL (MTP)", 0x7780, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1247/ */ { "Asus", 0x0b05, "ZenFone 5 A500KL (MTP+ADB)", 0x7781, DEVICE_FLAGS_ANDROID_BUGS }, /* * Lenovo */ /* https://sourceforge.net/p/libmtp/support-requests/178/ */ { "Lenovo", 0x17ef, "P70-A", 0x0c02, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1415/ */ { "Lenovo", 0x17ef, "P70", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Richard Körber { "Lenovo", 0x17ef, "K1", 0x740a, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by anonymous sourceforge user // Adding Android default bug flags since it appears to be an Android { "Lenovo", 0x17ef, "ThinkPad Tablet", 0x741c, DEVICE_FLAGS_ANDROID_BUGS }, // Medion is using Lenovos manufacturer ID it seems. // Reported by Thomas Goss { "Medion", 0x17ef, "Lifetab P9516", 0x7483, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by: XChesser { "Lenovo", 0x17ef, "P700", 0x7497, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1185/ */ { "Lenovo", 0x17ef, "A820", 0x7498, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1190/ */ { "Lenovo", 0x17ef, "P780", 0x74a6, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by: anonymous sourceforge user { "Lenovo", 0x17ef, "Lifetab S9512", 0x74cc, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/170/ */ { "Lenovo", 0x17ef, "S660", 0x74f8, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Brian J. Murrell { "Lenovo", 0x17ef, "IdeaTab A2109A", 0x7542, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/166/ */ { "Lenovo", 0x17ef, "IdeaTab S2210a", 0x757d, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1123/ */ { "Lenovo", 0x17ef, "K900 (ID1)", 0x75b5, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by rvelev@mail.bg { "Lenovo", 0x17ef, "IdeaPad A3000 (ID1)", 0x75bc, DEVICE_FLAGS_ANDROID_BUGS }, { "Lenovo", 0x17ef, "IdeaPad A3000 (ID2)", 0x75be, DEVICE_FLAGS_ANDROID_BUGS }, { "Lenovo", 0x17ef, "Toga Tablet B6000-F", 0x76f2, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1122/ */ { "Lenovo", 0x17ef, "S930", 0x7718, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1250/ */ { "Lenovo", 0x17ef, "A5500-F", 0x772b, DEVICE_FLAGS_ANDROID_BUGS }, { "Lenovo", 0x17ef, "LifeTab E733X", 0x775a, DEVICE_FLAGS_ANDROID_BUGS }, { "Lenovo", 0x17ef, "IdeaTab S5000", 0x76e8, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1155/ */ { "Lenovo", 0x17ef, "Yoga Tablet 10 B8000-H", 0x76ff, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1391/ */ { "Lenovo", 0x17ef, "A7600-F", 0x7731, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1291/ */ { "Lenovo", 0x17ef, "A3500-F", 0x7737, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/186/ */ { "Lenovo", 0x17ef, "Yoga Tablet 2 - 1050F", 0x77a4, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/168/ */ { "Lenovo", 0x17ef, "Yoga Tablet 2 Pro", 0x77b1, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/feature-requests/125/ */ { "Lenovo", 0x17ef, "Vibe Z2", 0x77ea, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1360/ */ { "Lenovo", 0x17ef, "K3 Note", 0x7883, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1465/ */ { "Lenovo", 0x17ef, "A1000 Smartphone", 0x7928, DEVICE_FLAGS_ANDROID_BUGS }, /* * Huawei * IDs used by Honor U8860,U8815,U9200,P2 */ { "Huawei", 0x12d1, "MTP device (ID1)", 0x1051, DEVICE_FLAGS_ANDROID_BUGS }, { "Huawei", 0x12d1, "MTP device (ID2)", 0x1052, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1381/ */ { "Huawei", 0x12d1, "H60-L11", 0x1079, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1361/ */ { "Huawei", 0x12d1, "Ascend P8 ", 0x1082, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1418/ */ { "Huawei", 0x12d1, "Honor 3C ", 0x2012, DEVICE_FLAGS_ANDROID_BUGS }, { "Huawei", 0x12d1, "Mediapad (mode 0)", 0x360f, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by Bearsh { "Huawei", 0x12d1, "Mediapad (mode 1)", 0x361f, DEVICE_FLAGS_ANDROID_BUGS }, /* * ZTE * Android devices reported by junwang */ { "ZTE", 0x19d2, "V55 ID 1", 0x0244, DEVICE_FLAGS_ANDROID_BUGS }, { "ZTE", 0x19d2, "V55 ID 2", 0x0245, DEVICE_FLAGS_ANDROID_BUGS }, { "ZTE", 0x19d2, "V790/Blade 3", 0x0306, DEVICE_FLAGS_ANDROID_BUGS }, { "ZTE", 0x19d2, "V880E", 0x0307, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/672/ */ { "ZTE", 0x19d2, "Grand X In", 0x0343, DEVICE_FLAGS_ANDROID_BUGS }, { "ZTE", 0x19d2, "V985", 0x0383, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1328/ */ { "ZTE", 0x19d2, "V5", 0xffce, DEVICE_FLAGS_ANDROID_BUGS }, /* * HTC (High Tech Computer Corp) * Reporters: * Steven Eastland * Kevin Cheng */ /* https://sourceforge.net/p/libmtp/support-requests/181/ */ { "HTC", 0x0bb4, "HTC One M9 (MTP)", 0x040b, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1398/ */ { "HTC", 0x0bb4, "Spreadtrum SH57MYZ03342 (MTP)", 0x05e3, DEVICE_FLAGS_ANDROID_BUGS }, /* reported by Mikkel Oscar Lyderik */ { "HTC", 0x0bb4, "HTC Desire 510 (MTP+ADB)", 0x05fd, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1221/ */ { "HTC", 0x0bb4, "One M8 Google Play Edition (MTP+ADB)", 0x060b, DEVICE_FLAG_NONE }, /* https://sourceforge.net/p/libmtp/support-requests/153/ */ { "HTC", 0x0bb4, "HTC6515LVW/One Remix", 0x07d8, DEVICE_FLAG_NONE }, /* https://sourceforge.net/p/libmtp/support-requests/141/ */ { "HTC", 0x0bb4, "HTC One (HTC6500LVW)", 0x07ae, DEVICE_FLAG_NONE }, /* https://sourceforge.net/p/libmtp/support-requests/128/ */ { "HTC", 0x0bb4, "HTC One M8 (HTC6525LVW)", 0x07ca, DEVICE_FLAG_NONE }, /* https://sourceforge.net/p/libmtp/bugs/1161/ */ { "HTC", 0x0bb4, "HTC One M8 (Verizon) (HTC6525LVW)", 0x07cb, DEVICE_FLAG_NONE }, /* https://sourceforge.net/p/libmtp/bugs/1133/ */ { "HTC", 0x0bb4, "HTC One Remix (HTC6515LVW)", 0x07d9, DEVICE_FLAG_NONE }, // Reported by Markus Heberling { "HTC", 0x0bb4, "Windows Phone 8X ID1", 0x0ba1, DEVICE_FLAG_NONE }, { "HTC", 0x0bb4, "Windows Phone 8X ID2", 0x0ba2, DEVICE_FLAG_NONE }, #if 1 /* after some review I commented it back in. There was apparently * only one or two devices misbehaving (having this ID in mass storage mode), * but more seem to use it regulary as MTP devices. Marcus 20150401 */ /* * This had to be commented out - the same VID+PID is used also for * other modes than MTP, so we need to let mtp-probe do its job on this * device instead of adding it to the database. * used by various devices, like Fairphone, Elephone P5000, etc * https://sourceforge.net/p/libmtp/bugs/1290/ */ { "HTC", 0x0bb4, "Android Device ID1 (Zopo, HD2, Bird...)", 0x0c02, DEVICE_FLAGS_ANDROID_BUGS }, #endif { "HTC", 0x0bb4, "EVO 4G LTE/One V (ID1)", 0x0c93, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "EVO 4G LTE/One V (ID2)", 0x0ca8, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One S (ID1)", 0x0cec, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "One Mini (ID1)", 0x0dcd, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One 802w (ID1)", 0x0dd2, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC Desire X", 0x0dd5, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One (ID1)", 0x0dda, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC Butterfly X290d", 0x0de4, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One (MTP+UMS+ADB)", 0x0dea, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC Evo 4G LTE (ID1)", 0x0df5, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One S (ID2)", 0x0df8, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One S (ID3)", 0x0df9, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One X (ID1)", 0x0dfa, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One X (ID2)", 0x0dfb, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One X (ID3)", 0x0dfc, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One X (ID4)", 0x0dfd, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC Butterfly (ID1)", 0x0dfe, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "Droid DNA (MTP+UMS+ADB)", 0x0dff, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC Droid Incredible 4G LTE (MTP)", 0x0e31, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC Droid Incredible 4G LTE (MTP+ADB)", 0x0e32, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "Droid DNA (MTP+UMS)", 0x0ebd, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1182/ */ { "HTC", 0x0bb4, "Desire 310 (MTP)", 0x0ec6, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1420/ */ { "HTC", 0x0bb4, "Desire 816G (MTP)", 0x0edb, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One (MTP+ADB+CDC)", 0x0f5f, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One (MTP+CDC)", 0x0f60, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One (MTP+ADB)", 0x0f63, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One (MTP)", 0x0f64, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One (MTP+ADB+?)", 0x0f87, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One (ID3)", 0x0f91, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One M8 (MTP)", 0x0f25, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One M8 (MTP+ADB)", 0x061a, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One M8 (MTP+UMS)", 0x0fb5, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "HTC One M8 (MTP+ADB+UMS)", 0x0fb4, DEVICE_FLAGS_ANDROID_BUGS }, #if 1 /* after some review I commented it back in. There was apparently * only one or two devices misbehaving (having this ID in mass storage mode), * but more seem to use it regulary as MTP devices. Marcus 20150401 */ /* * This had to be commented out - the same VID+PID is used also for * other modes than MTP, so we need to let mtp-probe do its job on this * device instead of adding it to the database. * * Apparently also used by a clone called Jiayu G2S * with the MTK6577T chipset * http://www.ejiayu.com/en/Product-19.html * Wiko Cink Peax 2 */ { "HTC", 0x0bb4, "Android Device ID2 (Zopo, HD2...)", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, #endif /* https://sourceforge.net/p/libmtp/bugs/1198/ */ { "HTC", 0x0bb4, "Motorola Razr D1", 0x2012, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1440/ */ { "HTC", 0x0bb4, "Motorola P98 4G", 0x201d, DEVICE_FLAGS_ANDROID_BUGS }, // These identify themselves as "cm_tenderloin", fun... // Done by HTC for HP I guess. { "HTC (for Hewlett-Packard)", 0x0bb4, "HP Touchpad (MTP)", 0x685c, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC (for Hewlett-Packard)", 0x0bb4, "HP Touchpad (MTP+ADB)", 0x6860, DEVICE_FLAGS_ANDROID_BUGS }, { "HTC", 0x0bb4, "Windows Phone 8s ID1", 0xf0ca, DEVICE_FLAG_NONE }, /* * NEC */ { "NEC", 0x0409, "FOMA N01A", 0x0242, DEVICE_FLAG_NONE }, { "NEC", 0x0409, "Casio C811", 0x0326, DEVICE_FLAG_NONE }, { "NEC", 0x0409, "Casio CA-201L", 0x0432, DEVICE_FLAG_NONE }, /* * nVidia */ // Found on Internet forum { "nVidia", 0x0955, "CM9-Adam", 0x70a9, DEVICE_FLAGS_ANDROID_BUGS }, // Various pads such as Nabi2, Notion Ink Adam, Viewsonic G-Tablet { "nVidia", 0x0955, "Various tablets (ID1)", 0x7100, DEVICE_FLAGS_ANDROID_BUGS }, { "nVidia", 0x0955, "Various tablets (ID2)", 0x7102, DEVICE_FLAGS_ANDROID_BUGS }, { "nVidia", 0x0955, "Shield (ID1)", 0xb400, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1447/ */ { "nVidia", 0x0955, "Shield (Tegra4)", 0xb401, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1087/ */ { "nVidia", 0x0955, "Tegra Note", 0xcf02, DEVICE_FLAGS_ANDROID_BUGS }, /* benpro82@gmail.com */ { "nVidia", 0x0955, "Shield (ID2)", 0xcf07, DEVICE_FLAGS_ANDROID_BUGS }, /* * Vizio * Reported by: * Michael Gurski */ /* https://sourceforge.net/p/libmtp/support-requests/138/ */ { "InFocus", 0x0489, "M810", 0xc025, DEVICE_FLAGS_ANDROID_BUGS }, { "Vizio", 0x0489, "Unknown 1", 0xc026, DEVICE_FLAGS_ANDROID_BUGS }, { "Vizio", 0x0489, "VTAB1008", 0xe040, DEVICE_FLAGS_ANDROID_BUGS }, { "Vizio (for Lenovo)", 0x0489, "LIFETAB S9714", 0xe111, DEVICE_FLAGS_ANDROID_BUGS }, /* * Amazon */ { "Amazon", 0x1949, "Kindle Fire 2G (ID1)", 0x0005, DEVICE_FLAGS_ANDROID_BUGS }, { "Amazon", 0x1949, "Kindle Fire (ID1)", 0x0007, DEVICE_FLAGS_ANDROID_BUGS }, { "Amazon", 0x1949, "Kindle Fire (ID2)", 0x0008, DEVICE_FLAGS_ANDROID_BUGS }, { "Amazon", 0x1949, "Kindle Fire (ID3)", 0x000a, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1026/ */ { "Amazon", 0x1949, "Kindle Fire (ID6)", 0x000b, DEVICE_FLAGS_ANDROID_BUGS }, { "Amazon", 0x1949, "Kindle Fire (ID4)", 0x000c, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1015/ */ { "Amazon", 0x1949, "Kindle Fire (ID7)", 0x000d, DEVICE_FLAGS_ANDROID_BUGS }, { "Amazon", 0x1949, "Kindle Fire (ID5)", 0x0012, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1353/ */ { "Amazon", 0x1949, "Kindle Fire HD6", 0x00f2, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1460/ */ { "Amazon", 0x1949, "Kindle Fire 8", 0x0211, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1448/ */ { "Amazon", 0x1949, "Kindle Fire 7", 0x0221, DEVICE_FLAGS_ANDROID_BUGS }, { "Amazon", 0x1949, "Fire Phone", 0x0800, DEVICE_FLAGS_ANDROID_BUGS }, /* * Barnes&Noble */ { "Barnes&Noble", 0x2080, "Nook HD+", 0x0005, DEVICE_FLAGS_ANDROID_BUGS }, { "Barnes&Noble", 0x2080, "Nook HD", 0x0006, DEVICE_FLAGS_ANDROID_BUGS }, /* * Viewpia, bq, YiFang * Seems like some multi-branded OEM product line. */ { "Various", 0x2207, "Viewpia DR/bq Kepler", 0x0001, DEVICE_FLAGS_ANDROID_BUGS }, { "YiFang", 0x2207, "BQ Tesla", 0x0006, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1354/ */ { "Various", 0x2207, "Viewpia DR/bq Kepler Debugging", 0x0011, DEVICE_FLAGS_ANDROID_BUGS }, /* * Kobo */ /* https://sourceforge.net/p/libmtp/bugs/1208/ */ { "Kobo", 0x2237, "Arc 7 HD", 0xb108, DEVICE_FLAGS_ANDROID_BUGS }, // Reported by George Talusan { "Kobo", 0x2237, "Arc (ID1)", 0xd108, DEVICE_FLAGS_ANDROID_BUGS }, { "Kobo", 0x2237, "Arc (ID2)", 0xd109, DEVICE_FLAGS_ANDROID_BUGS }, /* * Hisense */ // Reported by Anonymous SourceForge users { "Hisense", 0x109b, "E860 (ID1)", 0x9106, DEVICE_FLAGS_ANDROID_BUGS }, { "Hisense", 0x109b, "E860 (ID2)", 0x9109, DEVICE_FLAGS_ANDROID_BUGS }, /* * Intel * Also sold rebranded as Orange products */ { "Intel", 0x8087, "Xolo 900/AZ210A", 0x09fb, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1256/ */ { "Intel", 0x8087, "Noblex T7A21", 0x0a16, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1252/ */ { "Intel", 0x8087, "Foxconn iView i700", 0x0a15, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1237/ */ { "Intel", 0x8087, "Telcast Air 3G", 0x0a5e, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1338/ */ { "Intel", 0x8087, "Chuwi vi8", 0x0a5f, DEVICE_FLAGS_ANDROID_BUGS }, /* * Xiaomi */ /* https://sourceforge.net/p/libmtp/bugs/1269/ */ { "Xiaomi", 0x2717, "Mi-3w (MTP)", 0x0360, DEVICE_FLAGS_ANDROID_BUGS }, { "Xiaomi", 0x2717, "Mi-3 (MTP)", 0x0368, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1149/ */ { "Xiaomi", 0x2717, "MiPad (MTP)", 0x0660, DEVICE_FLAGS_ANDROID_BUGS }, { "Xiaomi", 0x2717, "Hongmi (MTP+ADB)", 0x1240, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1095/ */ { "Xiaomi", 0x2717, "Hongmi (MTP)", 0x1248, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1295/ */ { "Redmi", 0x2717, "1S (MTP)", 0x1260, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1164/ */ { "Redmi", 0x2717, "HM 1S (MTP)", 0x1268, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/discussion/535190/ */ { "Xiaomi", 0x2717, "HM NOTE 1LTEW MIUI (MTP)", 0x1368, DEVICE_FLAGS_ANDROID_BUGS }, { "Xiaomi", 0x2717, "Mi-2 (MTP+ADB)", 0x9039, DEVICE_FLAGS_ANDROID_BUGS }, { "Xiaomi", 0x2717, "Mi-2 (MTP)", 0xf003, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1397/ */ { "Xiaomi", 0x2717, "Mi-2s (id2) (MTP)", 0xff40, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1339/ */ { "Xiaomi", 0x2717, "Mi-2s (MTP)", 0xff48, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1402/ */ { "Xiaomi", 0x2717, "Redmi 2 (MTP)", 0xff60, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1445/ */ { "Xiaomi", 0x2717, "Redmi 2 2014811 (MTP)", 0xff68, DEVICE_FLAGS_ANDROID_BUGS }, /* * XO Learning Tablet * Also Trio Stealth G2 tablet it seems */ { "Acromag Inc.", 0x16d5, "XO Learning Tablet (MTP+ADB)", 0x8005, DEVICE_FLAGS_ANDROID_BUGS }, { "Acromag Inc.", 0x16d5, "XO Learning Tablet (MTP)", 0x8006, DEVICE_FLAGS_ANDROID_BUGS }, /* * SHARP Corporation */ { "SHARP Corporation", 0x0489, "SH930W", 0xc025, DEVICE_FLAGS_ANDROID_BUGS }, { "SHARP Corporation", 0x04dd, "SBM203SH", 0x9661, DEVICE_FLAGS_ANDROID_BUGS }, { "SHARP Corporation", 0x04dd, "SH-06E", 0x96ca, DEVICE_FLAGS_ANDROID_BUGS }, /* * T & A Mobile phones Alcatel and TCT */ { "Alcatel", 0x1bbb, "One Touch 997D (MTP+ADB)", 0x0c02, DEVICE_FLAGS_ANDROID_BUGS }, { "Alcatel", 0x1bbb, "One Touch 997D (MTP)", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, { "Alcatel/TCT", 0x1bbb, "6010D/TCL S950", 0x0167, DEVICE_FLAGS_ANDROID_BUGS }, { "Alcatel", 0x1bbb, "6030a", 0x0168, DEVICE_FLAGS_ANDROID_BUGS }, { "Alcatel/Bouygues", 0x1bbb, "BS472", 0x904d, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1304/ */ { "Alcatel", 0x1bbb, "OneTouch 5042D (MTP)", 0xa00e, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/189/ */ { "Alcatel", 0x1bbb, "OneTouch Idol 3 small (MTP)", 0xaf2a, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1401/ */ { "Alcatel", 0x1bbb, "OneTouch Idol 3 (MTP)", 0xaf2b, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/feature-requests/114/ */ { "Alcatel", 0x1bbb, "OneTouch 6034R", 0xf003, DEVICE_FLAGS_ANDROID_BUGS }, /* * Kyocera */ { "Kyocera", 0x0482, "Rise", 0x0571, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/feature-requests/134/ */ { "Kyocera", 0x0482, "Torque Model E6715", 0x0059a, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/discussion/535190/thread/6270f5ce/ */ { "Kyocera", 0x0482, "KYL22", 0x0810, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1345/ */ { "Kyocera", 0x0482, "DuraForce", 0x0979, DEVICE_FLAGS_ANDROID_BUGS }, /* * HiSense */ { "HiSense", 0x109b, "Sero 7 Pro", 0x9105, DEVICE_FLAGS_ANDROID_BUGS }, /* * Hewlett-Packard */ { "Hewlett-Packard", 0x03f0, "Slate 7 4600", 0x5c1d, DEVICE_FLAGS_ANDROID_BUGS }, { "Hewlett-Packard", 0x03f0, "Slate 7 2800", 0x5d1d, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1366/ */ { "Hewlett-Packard", 0x03f0, "Slate 10 HD", 0x7e1d, DEVICE_FLAGS_ANDROID_BUGS }, /* * MediaTek Inc. */ { "MediaTek Inc", 0x0e8d, "MT5xx and MT6xx SoCs", 0x0050, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1422/ */ { "MediaTek Inc", 0x0e8d, "MT65xx", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1467/ */ { "elephone", 0x0e8d, "p6000", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/feature-requests/79/ */ { "MediaTek Inc", 0x0e8d, "Elephone P8000", 0x201d, DEVICE_FLAGS_ANDROID_BUGS }, /* * Jolla */ { "Jolla", 0x2931, "Sailfish (ID1)", 0x0a01, DEVICE_FLAGS_ANDROID_BUGS }, /* * TCL? Alcatel? */ { "TCL", 0x0451, "Alcatel one touch 986+", 0xd108, DEVICE_FLAGS_ANDROID_BUGS }, /* * Garmin */ { "Garmin", 0x091e, "Monterra", 0x2585, DEVICE_FLAGS_ANDROID_BUGS }, /* * Wacom */ { "Wacom", 0x0531, "Cintiq Companion Hybrid (MTP+ADB)", 0x2001, DEVICE_FLAGS_ANDROID_BUGS }, /* * Kurio */ { "Kurio", 0x1f3a, "7S", 0x1006, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1245/ */ { "DigiLand", 0x1f3a, "DL701Q", 0x0c02, DEVICE_FLAGS_ANDROID_BUGS }, /* In update 4 the order of devices was changed for better OS X / Windows suport and another device-id got assigned for the MTP */ { "Jolla", 0x2931, "Sailfish (ID2)", 0x0a05, DEVICE_FLAGS_ANDROID_BUGS }, /* * bq * https://sourceforge.net/p/libmtp/feature-requests/128/ */ { "bq", 0x2a47, "Krillin (MTP)", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, { "bq", 0x2a47, "Krillin (MTP+ADB)", 0x0c02, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1311/ */ { "bq", 0x2a47, "Aquarius E5-4G", 0x7f10, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1292/ */ { "Prestigio", 0x29e4, "5505 DUO ", 0x1103, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1243/ */ { "Prestigio", 0x29e4, "5504 DUO ", 0x1203, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/feature-requests/141/ */ { "Prestigio", 0x29e4, "3405 DUO ", 0x3201, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/feature-requests/148/ */ { "Prestigio", 0x29e4, "Multipad Color 7.0", 0xb003, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1283/ */ { "Megafon", 0x201e, "MFLogin3T", 0x42ab, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1287/ */ { "Gensis", 0x040d, "GT-7305 ", 0x885c, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/182/ */ { "Oppo", 0x22d9, "Find 5", 0x2764, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1207/ */ { "Oppo", 0x22d9, "Find 7 (ID 1)", 0x2765, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1277/ */ { "Oppo", 0x22d9, "X9006", 0x2773, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/support-requests/129/ */ { "Oppo", 0x22d9, "Find 7 (ID 2)", 0x2774, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1273/ */ { "Gigabyte", 0x0414, "RCT6773W22 (MTP+ADB)", 0x0c02, DEVICE_FLAGS_ANDROID_BUGS }, { "Gigabyte", 0x0414, "RCT6773W22 (MTP)", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1264/ */ { "Meizu", 0x2a45, "MX Phone (MTP)", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1263/ */ { "Meizu", 0x2a45, "MX Phone (MTP+ADB)", 0x0c02, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1201/ */ { "Caterpillar", 0x04b7, "Cat S50", 0x88a9, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/682/ */ { "Pegatron", 0x1d4d, "Chagall (ADB)", 0x5035, DEVICE_FLAGS_ANDROID_BUGS }, { "Pegatron", 0x1d4d, "Chagall", 0x5036, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/feature-requests/115/ */ { "Pegatron", 0x1d4d, "Hudl 2", 0x504a, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1229/ */ { "Yota", 0x2916, "Phone 2", 0x914d, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1267/ */ { "Yota", 0x2916, "Phone 2 (ID2)", 0xf003, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1212/ */ { "Fly", 0x2970, "Evo Tech 4", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/feature-requests/146/ */ { "Wileyfox", 0x2970, "Swift", 0x2281, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1303/ */ { "Megafon", 0x1271, "Login+", 0x2012, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1127/ */ { "Fly", 0x2970, "iq4415 era style 3", 0x0c02, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1082/ */ { "Fly", 0x1782, "iq449", 0x4001, DEVICE_FLAGS_ANDROID_BUGS }, /* * YU Yureka. */ { "YU Yureka", 0x1ebf, "Vodafone smart turbo 4", 0x7f29, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1314/ */ { "BenQ", 0x1d45, "F5", 0x459d, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1362/ */ { "TomTom", 0x1390, "Rider 40", 0x5455, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/feature-requests/135/. guessed android. */ { "OUYA", 0x2836, "Videogame Console", 0x0010, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1383/ */ { "BLU", 0x0e8d, "Studio HD", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1423/ */ { "OnePlus", 0x2a70, "ONE A2001", 0x9011, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1450/ */ { "OnePlus", 0x2a70, "OnePlus 2 A2005", 0xf003, DEVICE_FLAGS_ANDROID_BUGS }, /* https://sourceforge.net/p/libmtp/bugs/1436/ */ { "Parrot", 0x19cf, "Bebop Drone", 0x5038, DEVICE_FLAGS_ANDROID_BUGS }, /* * GoPro Action Cams. */ { "HERO3+ Black", 0x2672, "Action Cam", 0x0011, DEVICE_FLAG_NONE }, { "HERO", 0x2672, "Action Cam", 0x000c, DEVICE_FLAG_NONE }, { "HERO4 Silver", 0x2672, "Action Cam", 0x000d, DEVICE_FLAG_NONE }, { "HERO4 Black", 0x2672, "Action Cam", 0x000e, DEVICE_FLAG_NONE }, { "HERO4 Session", 0x2672, "Action Cam", 0x000f, DEVICE_FLAG_NONE }, /* * Other strange stuff. */ { "Isabella", 0x0b20, "Her Prototype", 0xddee, DEVICE_FLAG_NONE } libgphoto2-2.5.9/camlibs/ptp2/ptpip.html0000644000175000001440000001030312557123324015037 00000000000000 PTP/IP protocol - briefly reverse engineered

PTP/IP


This document briefly describes the PTP/IP transfer layer, as reverse engineered from ethereal packet dumps and glanced from the sparely available online documentation.

It operates on top of a normal IP networkstack, the connections are simple TCP/IP socket connection.

Default port is 15740 (same as the ISO standard number for PTP).

There are 2 connections used:

  • control & data connection (Initiator (computer) driven)
  • event connection (Responder (camera) driven)

The participants communicate in packets, their layout is:
LengthVariableNotes
4length (little endian)Length of the whole packet including the header
4type (little endian)Type, listed below
length - 8dataspecific on type

Observed types:

TypeDirectionNameNext reply(s)Payload
1 I->R Init_Command_Request 2 or 5
  • 16 byte GUID
  • xx byte WCHAR computername with terminating \0
2 R->I Init_Command_Ack 5 or MAINLOOP
  • 4 byte ID (session id, to be used for event connection startup)
  • 16 byte GUID (MAC is used here for my camera, and repeated)
  • xx byte WCHAR Camera Name with terminating \0
3 I->R Init_Event_Request 4 or 5
  • 4 byte ID (from Init_Command_Ack)
4 R->I Init_Event_Ack EVENTLOOP
  • No payload.
5 I->R Init_Fail End of communication
  • 4 byte error code (unclear meaning)
6 I->R Cmd_Request 9 -> A/C or 7
  • 4 byte unknown. set to 1 currently.
  • 2 byte PTP command code
  • 4 byte Transaction ID
  • n x 4 byte PTP command arguments
7 R->I Cmd_Response MAINLOOP
  • 2 bytes PTP response code
  • 4 bytes Transaction ID
  • nr*4 bytes arguments (depending on length of response)
8 R->I Event EVENTLOOP
  • 2 byte PTP event code
  • ...
Not fully investigated, but similar to PTP event.
9 R<->I Start_Data_Packet 10,12
  • 4 byte Transaction ID
  • 4 byte Total data download size (without headers)
10 R<->I Data_Packet 10,12
  • 4 byte Transaction ID
  • length-4-8 bytes payload data
11 I->R Cancel_Transaction 7 ? (Untested yet.)
  • 4 bytes Transaction ID
12 R<->I End_Data_Packet 7 ?
  • 4 byte Transaction ID
  • length-4-8 bytes payload data
13 R<->I Ping 14
  • No payload.
13 R<->I Pong EVENTLOOP
  • No payload.

State transitions:

Initial Phase:

Command Connection:
1-> 2-> MAINLOOP
   \ 5-> EXIT

Event Connection:
3-> 4-> EVENTLOOP
   \ 5-> EXIT
Cameras using PTP/IP:

  • Nikon CoolPix P1
  • Nikon CoolPix P2
  • Nikon CoolPix P3
  • Nikon CoolPix P4
  • Nikon CoolPix S6
  • Kodak EasyShare One
  • Canon PowerShot SD430
libgphoto2-2.5.9/camlibs/ptp2/ptp-pack.c0000644000175000001440000024274012616057427014722 00000000000000/* ptp-pack.c * * Copyright (C) 2001-2004 Mariusz Woloszyn * Copyright (C) 2003-2014 Marcus Meissner * Copyright (C) 2006-2008 Linus Walleij * Copyright (C) 2007 Tero Saarni * Copyright (C) 2009 Axel Waggershauser * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* currently this file is included into ptp.c */ #ifdef HAVE_LIMITS_H #include #endif #ifndef UINT_MAX # define UINT_MAX 0xFFFFFFFF #endif #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) #include #endif static inline uint16_t htod16p (PTPParams *params, uint16_t var) { return ((params->byteorder==PTP_DL_LE)?htole16(var):htobe16(var)); } static inline uint32_t htod32p (PTPParams *params, uint32_t var) { return ((params->byteorder==PTP_DL_LE)?htole32(var):htobe32(var)); } static inline void htod16ap (PTPParams *params, unsigned char *a, uint16_t val) { if (params->byteorder==PTP_DL_LE) htole16a(a,val); else htobe16a(a,val); } static inline void htod32ap (PTPParams *params, unsigned char *a, uint32_t val) { if (params->byteorder==PTP_DL_LE) htole32a(a,val); else htobe32a(a,val); } static inline void htod64ap (PTPParams *params, unsigned char *a, uint64_t val) { if (params->byteorder==PTP_DL_LE) htole64a(a,val); else htobe64a(a,val); } static inline uint16_t dtoh16p (PTPParams *params, uint16_t var) { return ((params->byteorder==PTP_DL_LE)?le16toh(var):be16toh(var)); } static inline uint32_t dtoh32p (PTPParams *params, uint32_t var) { return ((params->byteorder==PTP_DL_LE)?le32toh(var):be32toh(var)); } static inline uint64_t dtoh64p (PTPParams *params, uint64_t var) { return ((params->byteorder==PTP_DL_LE)?le64toh(var):be64toh(var)); } static inline uint16_t dtoh16ap (PTPParams *params, const unsigned char *a) { return ((params->byteorder==PTP_DL_LE)?le16atoh(a):be16atoh(a)); } static inline uint32_t dtoh32ap (PTPParams *params, const unsigned char *a) { return ((params->byteorder==PTP_DL_LE)?le32atoh(a):be32atoh(a)); } static inline uint64_t dtoh64ap (PTPParams *params, const unsigned char *a) { return ((params->byteorder==PTP_DL_LE)?le64atoh(a):be64atoh(a)); } #define htod8a(a,x) *(uint8_t*)(a) = x #define htod16a(a,x) htod16ap(params,a,x) #define htod32a(a,x) htod32ap(params,a,x) #define htod64a(a,x) htod64ap(params,a,x) #define htod16(x) htod16p(params,x) #define htod32(x) htod32p(params,x) #define htod64(x) htod64p(params,x) #define dtoh8a(x) (*(uint8_t*)(x)) #define dtoh16a(a) dtoh16ap(params,a) #define dtoh32a(a) dtoh32ap(params,a) #define dtoh64a(a) dtoh64ap(params,a) #define dtoh16(x) dtoh16p(params,x) #define dtoh32(x) dtoh32p(params,x) #define dtoh64(x) dtoh64p(params,x) static inline char* ptp_unpack_string(PTPParams *params, unsigned char* data, uint16_t offset, uint8_t *len) { uint8_t length; uint16_t string[PTP_MAXSTRLEN+1]; /* allow for UTF-8: max of 3 bytes per UCS-2 char, plus final null */ char loclstr[PTP_MAXSTRLEN*3+1]; size_t nconv, srclen, destlen; char *src, *dest; length = dtoh8a(&data[offset]); /* PTP_MAXSTRLEN == 255, 8 bit len */ *len = length; if (length == 0) /* nothing to do? */ return(NULL); /* copy to string[] to ensure correct alignment for iconv(3) */ memcpy(string, &data[offset+1], length * sizeof(string[0])); string[length] = 0x0000U; /* be paranoid! add a terminator. */ loclstr[0] = '\0'; /* convert from camera UCS-2 to our locale */ src = (char *)string; srclen = length * sizeof(string[0]); dest = loclstr; destlen = sizeof(loclstr)-1; nconv = (size_t)-1; #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) if (params->cd_ucs2_to_locale != (iconv_t)-1) nconv = iconv(params->cd_ucs2_to_locale, &src, &srclen, &dest, &destlen); #endif if (nconv == (size_t) -1) { /* do it the hard way */ int i; /* try the old way, in case iconv is broken */ for (i=0;i127) loclstr[i] = '?'; else loclstr[i] = dtoh16a(&data[offset+1+2*i]); } dest = loclstr+length; } *dest = '\0'; loclstr[sizeof(loclstr)-1] = '\0'; /* be safe? */ return(strdup(loclstr)); } static inline int ucs2strlen(uint16_t const * const unicstr) { int length = 0; /* Unicode strings are terminated with 2 * 0x00 */ for(length = 0; unicstr[length] != 0x0000U; length ++); return length; } static inline void ptp_pack_string(PTPParams *params, char *string, unsigned char* data, uint16_t offset, uint8_t *len) { int packedlen = 0; uint16_t ucs2str[PTP_MAXSTRLEN+1]; char *ucs2strp = (char *) ucs2str; size_t convlen = strlen(string); /* Cannot exceed 255 (PTP_MAXSTRLEN) since it is a single byte, duh ... */ memset(ucs2strp, 0, sizeof(ucs2str)); /* XXX: necessary? */ #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) if (params->cd_locale_to_ucs2 != (iconv_t)-1) { size_t nconv; size_t convmax = PTP_MAXSTRLEN * 2; /* Includes the terminator */ char *stringp = string; nconv = iconv(params->cd_locale_to_ucs2, &stringp, &convlen, &ucs2strp, &convmax); if (nconv == (size_t) -1) ucs2str[0] = 0x0000U; } else #endif { unsigned int i; for (i=0;i PTP_MAXSTRLEN-1) { *len=0; return; } /* number of characters including terminating 0 (PTP standard confirmed) */ htod8a(&data[offset],packedlen+1); memcpy(&data[offset+1], &ucs2str[0], packedlen * sizeof(ucs2str[0])); htod16a(&data[offset+packedlen*2+1], 0x0000); /* terminate 0 */ /* The returned length is in number of characters */ *len = (uint8_t) packedlen+1; } static inline unsigned char * ptp_get_packed_stringcopy(PTPParams *params, char *string, uint32_t *packed_size) { uint8_t packed[PTP_MAXSTRLEN*2+3], len; size_t plen; unsigned char *retcopy = NULL; if (string == NULL) ptp_pack_string(params, "", (unsigned char*) packed, 0, &len); else ptp_pack_string(params, string, (unsigned char*) packed, 0, &len); /* returned length is in characters, then one byte for string length */ plen = len*2 + 1; retcopy = malloc(plen); if (!retcopy) { *packed_size = 0; return NULL; } memcpy(retcopy, packed, plen); *packed_size = plen; return (retcopy); } static inline uint32_t ptp_unpack_uint32_t_array(PTPParams *params, unsigned char* data, uint16_t offset, uint32_t **array) { uint32_t n, i=0; *array = NULL; n=dtoh32a(&data[offset]); if (n >= UINT_MAX/sizeof(uint32_t)) return 0; if (!n) return 0; *array = malloc (n*sizeof(uint32_t)); for (i=0;i= UINT_MAX/sizeof(uint16_t)) return 0; if (!n) return 0; *array = malloc (n*sizeof(uint16_t)); for (i=0;iStandardVersion = dtoh16a(&data[PTP_di_StandardVersion]); di->VendorExtensionID = dtoh32a(&data[PTP_di_VendorExtensionID]); di->VendorExtensionVersion = dtoh16a(&data[PTP_di_VendorExtensionVersion]); di->VendorExtensionDesc = ptp_unpack_string(params, data, PTP_di_VendorExtensionDesc, &len); totallen=len*2+1; di->FunctionalMode = dtoh16a(&data[PTP_di_FunctionalMode+totallen]); di->OperationsSupported_len = ptp_unpack_uint16_t_array(params, data, PTP_di_OperationsSupported+totallen, &di->OperationsSupported); totallen=totallen+di->OperationsSupported_len*sizeof(uint16_t)+sizeof(uint32_t); di->EventsSupported_len = ptp_unpack_uint16_t_array(params, data, PTP_di_OperationsSupported+totallen, &di->EventsSupported); totallen=totallen+di->EventsSupported_len*sizeof(uint16_t)+sizeof(uint32_t); di->DevicePropertiesSupported_len = ptp_unpack_uint16_t_array(params, data, PTP_di_OperationsSupported+totallen, &di->DevicePropertiesSupported); totallen=totallen+di->DevicePropertiesSupported_len*sizeof(uint16_t)+sizeof(uint32_t); di->CaptureFormats_len = ptp_unpack_uint16_t_array(params, data, PTP_di_OperationsSupported+totallen, &di->CaptureFormats); totallen=totallen+di->CaptureFormats_len*sizeof(uint16_t)+sizeof(uint32_t); di->ImageFormats_len = ptp_unpack_uint16_t_array(params, data, PTP_di_OperationsSupported+totallen, &di->ImageFormats); totallen=totallen+di->ImageFormats_len*sizeof(uint16_t)+sizeof(uint32_t); di->Manufacturer = ptp_unpack_string(params, data, PTP_di_OperationsSupported+totallen, &len); totallen+=len*2+1; di->Model = ptp_unpack_string(params, data, PTP_di_OperationsSupported+totallen, &len); totallen+=len*2+1; di->DeviceVersion = ptp_unpack_string(params, data, PTP_di_OperationsSupported+totallen, &len); totallen+=len*2+1; di->SerialNumber = ptp_unpack_string(params, data, PTP_di_OperationsSupported+totallen, &len); } inline static void ptp_free_DI (PTPDeviceInfo *di) { free (di->SerialNumber); free (di->DeviceVersion); free (di->Model); free (di->Manufacturer); free (di->ImageFormats); free (di->CaptureFormats); free (di->VendorExtensionDesc); free (di->OperationsSupported); free (di->EventsSupported); free (di->DevicePropertiesSupported); } /* EOS Device Info unpack */ static inline void ptp_unpack_EOS_DI (PTPParams *params, unsigned char* data, PTPCanonEOSDeviceInfo *di, unsigned int datalen) { unsigned int totallen = 4; memset (di,0, sizeof(*di)); if (datalen < 8) return; /* uint32_t struct len - ignore */ di->EventsSupported_len = ptp_unpack_uint32_t_array(params, data, totallen, &di->EventsSupported); if (!di->EventsSupported) return; totallen += di->EventsSupported_len*sizeof(uint32_t)+4; if (totallen >= datalen) return; di->DevicePropertiesSupported_len = ptp_unpack_uint32_t_array(params, data, totallen, &di->DevicePropertiesSupported); if (!di->DevicePropertiesSupported) return; totallen += di->DevicePropertiesSupported_len*sizeof(uint32_t)+4; if (totallen >= datalen) return; di->unk_len = ptp_unpack_uint32_t_array(params, data, totallen, &di->unk); if (!di->unk) return; totallen += di->unk_len*sizeof(uint32_t)+4; return; } static inline void ptp_free_EOS_DI (PTPCanonEOSDeviceInfo *di) { free (di->EventsSupported); free (di->DevicePropertiesSupported); free (di->unk); } /* ObjectHandles array pack/unpack */ #define PTP_oh 0 static inline void ptp_unpack_OH (PTPParams *params, unsigned char* data, PTPObjectHandles *oh, unsigned int len) { if (len) { oh->n = ptp_unpack_uint32_t_array(params, data, PTP_oh, &oh->Handler); } else { oh->n = 0; oh->Handler = NULL; } } /* StoreIDs array pack/unpack */ #define PTP_sids 0 static inline void ptp_unpack_SIDs (PTPParams *params, unsigned char* data, PTPStorageIDs *sids, unsigned int len) { if (!data || !len) { sids->n = 0; sids->Storage = NULL; return; } sids->n = ptp_unpack_uint32_t_array(params, data, PTP_sids, &sids->Storage); } /* StorageInfo pack/unpack */ #define PTP_si_StorageType 0 #define PTP_si_FilesystemType 2 #define PTP_si_AccessCapability 4 #define PTP_si_MaxCapability 6 #define PTP_si_FreeSpaceInBytes 14 #define PTP_si_FreeSpaceInImages 22 #define PTP_si_StorageDescription 26 static inline void ptp_unpack_SI (PTPParams *params, unsigned char* data, PTPStorageInfo *si, unsigned int len) { uint8_t storagedescriptionlen; if (len < 26) return; si->StorageType=dtoh16a(&data[PTP_si_StorageType]); si->FilesystemType=dtoh16a(&data[PTP_si_FilesystemType]); si->AccessCapability=dtoh16a(&data[PTP_si_AccessCapability]); si->MaxCapability=dtoh64a(&data[PTP_si_MaxCapability]); si->FreeSpaceInBytes=dtoh64a(&data[PTP_si_FreeSpaceInBytes]); si->FreeSpaceInImages=dtoh32a(&data[PTP_si_FreeSpaceInImages]); /* FIXME: check more lengths here */ si->StorageDescription=ptp_unpack_string(params, data, PTP_si_StorageDescription, &storagedescriptionlen); si->VolumeLabel=ptp_unpack_string(params, data, PTP_si_StorageDescription+storagedescriptionlen*2+1, &storagedescriptionlen); } /* ObjectInfo pack/unpack */ #define PTP_oi_StorageID 0 #define PTP_oi_ObjectFormat 4 #define PTP_oi_ProtectionStatus 6 #define PTP_oi_ObjectCompressedSize 8 #define PTP_oi_ThumbFormat 12 #define PTP_oi_ThumbCompressedSize 14 #define PTP_oi_ThumbPixWidth 18 #define PTP_oi_ThumbPixHeight 22 #define PTP_oi_ImagePixWidth 26 #define PTP_oi_ImagePixHeight 30 #define PTP_oi_ImageBitDepth 34 #define PTP_oi_ParentObject 38 #define PTP_oi_AssociationType 42 #define PTP_oi_AssociationDesc 44 #define PTP_oi_SequenceNumber 48 #define PTP_oi_filenamelen 52 #define PTP_oi_Filename 53 /* the max length assuming zero length dates. We have need 3 */ /* bytes for these. */ #define PTP_oi_MaxLen PTP_oi_Filename+(PTP_MAXSTRLEN+1)*2+3 static inline uint32_t ptp_pack_OI (PTPParams *params, PTPObjectInfo *oi, unsigned char** oidataptr) { unsigned char* oidata; uint8_t filenamelen; uint8_t capturedatelen=0; /* let's allocate some memory first; correct assuming zero length dates */ oidata=malloc(PTP_oi_MaxLen + params->ocs64*4); *oidataptr=oidata; /* the caller should free it after use! */ #if 0 char *capture_date="20020101T010101"; /* XXX Fake date */ #endif memset (oidata, 0, PTP_oi_MaxLen + params->ocs64*4); htod32a(&oidata[PTP_oi_StorageID],oi->StorageID); htod16a(&oidata[PTP_oi_ObjectFormat],oi->ObjectFormat); htod16a(&oidata[PTP_oi_ProtectionStatus],oi->ProtectionStatus); htod32a(&oidata[PTP_oi_ObjectCompressedSize],oi->ObjectCompressedSize); if (params->ocs64) oidata += 4; htod16a(&oidata[PTP_oi_ThumbFormat],oi->ThumbFormat); htod32a(&oidata[PTP_oi_ThumbCompressedSize],oi->ThumbCompressedSize); htod32a(&oidata[PTP_oi_ThumbPixWidth],oi->ThumbPixWidth); htod32a(&oidata[PTP_oi_ThumbPixHeight],oi->ThumbPixHeight); htod32a(&oidata[PTP_oi_ImagePixWidth],oi->ImagePixWidth); htod32a(&oidata[PTP_oi_ImagePixHeight],oi->ImagePixHeight); htod32a(&oidata[PTP_oi_ImageBitDepth],oi->ImageBitDepth); htod32a(&oidata[PTP_oi_ParentObject],oi->ParentObject); htod16a(&oidata[PTP_oi_AssociationType],oi->AssociationType); htod32a(&oidata[PTP_oi_AssociationDesc],oi->AssociationDesc); htod32a(&oidata[PTP_oi_SequenceNumber],oi->SequenceNumber); ptp_pack_string(params, oi->Filename, oidata, PTP_oi_filenamelen, &filenamelen); /* filenamelen=(uint8_t)strlen(oi->Filename); htod8a(&req->data[PTP_oi_filenamelen],filenamelen+1); for (i=0;idata[PTP_oi_Filename+i*2]=oi->Filename[i]; } */ /* *XXX Fake date. * for example Kodak sets Capture date on the basis of EXIF data. * Spec says that this field is from perspective of Initiator. */ #if 0 /* seems now we don't need any data packed in OI dataset... for now ;)*/ capturedatelen=strlen(capture_date); htod8a(&data[PTP_oi_Filename+(filenamelen+1)*2], capturedatelen+1); for (i=0;iocs64*4; } static time_t ptp_unpack_PTPTIME (const char *str) { char ptpdate[40]; char tmp[5]; size_t ptpdatelen; struct tm tm; if (!str) return 0; ptpdatelen = strlen(str); if (ptpdatelen >= sizeof (ptpdate)) { /*ptp_debug (params ,"datelen is larger then size of buffer", ptpdatelen, (int)sizeof(ptpdate));*/ return 0; } if (ptpdatelen<15) { /*ptp_debug (params ,"datelen is less than 15 (%d)", ptpdatelen);*/ return 0; } strncpy (ptpdate, str, sizeof(ptpdate)); ptpdate[sizeof(ptpdate) - 1] = '\0'; memset(&tm,0,sizeof(tm)); strncpy (tmp, ptpdate, 4); tmp[4] = 0; tm.tm_year=atoi (tmp) - 1900; strncpy (tmp, ptpdate + 4, 2); tmp[2] = 0; tm.tm_mon = atoi (tmp) - 1; strncpy (tmp, ptpdate + 6, 2); tmp[2] = 0; tm.tm_mday = atoi (tmp); strncpy (tmp, ptpdate + 9, 2); tmp[2] = 0; tm.tm_hour = atoi (tmp); strncpy (tmp, ptpdate + 11, 2); tmp[2] = 0; tm.tm_min = atoi (tmp); strncpy (tmp, ptpdate + 13, 2); tmp[2] = 0; tm.tm_sec = atoi (tmp); tm.tm_isdst = -1; return mktime (&tm); } static inline void ptp_unpack_OI (PTPParams *params, unsigned char* data, PTPObjectInfo *oi, unsigned int len) { uint8_t filenamelen; uint8_t capturedatelen; char *capture_date; if (len < PTP_oi_SequenceNumber) return; oi->Filename = oi->Keywords = NULL; /* FIXME: also handle length with all the strings at the end */ oi->StorageID=dtoh32a(&data[PTP_oi_StorageID]); oi->ObjectFormat=dtoh16a(&data[PTP_oi_ObjectFormat]); oi->ProtectionStatus=dtoh16a(&data[PTP_oi_ProtectionStatus]); oi->ObjectCompressedSize=dtoh32a(&data[PTP_oi_ObjectCompressedSize]); /* Stupid Samsung Galaxy developers emit a 64bit objectcompressedsize */ if ((data[PTP_oi_filenamelen] == 0) && (data[PTP_oi_filenamelen+4] != 0)) { params->ocs64 = 1; data += 4; } oi->ThumbFormat=dtoh16a(&data[PTP_oi_ThumbFormat]); oi->ThumbCompressedSize=dtoh32a(&data[PTP_oi_ThumbCompressedSize]); oi->ThumbPixWidth=dtoh32a(&data[PTP_oi_ThumbPixWidth]); oi->ThumbPixHeight=dtoh32a(&data[PTP_oi_ThumbPixHeight]); oi->ImagePixWidth=dtoh32a(&data[PTP_oi_ImagePixWidth]); oi->ImagePixHeight=dtoh32a(&data[PTP_oi_ImagePixHeight]); oi->ImageBitDepth=dtoh32a(&data[PTP_oi_ImageBitDepth]); oi->ParentObject=dtoh32a(&data[PTP_oi_ParentObject]); oi->AssociationType=dtoh16a(&data[PTP_oi_AssociationType]); oi->AssociationDesc=dtoh32a(&data[PTP_oi_AssociationDesc]); oi->SequenceNumber=dtoh32a(&data[PTP_oi_SequenceNumber]); oi->Filename= ptp_unpack_string(params, data, PTP_oi_filenamelen, &filenamelen); capture_date = ptp_unpack_string(params, data, PTP_oi_filenamelen+filenamelen*2+1, &capturedatelen); /* subset of ISO 8601, without '.s' tenths of second and * time zone */ oi->CaptureDate = ptp_unpack_PTPTIME(capture_date); free(capture_date); /* now the modification date ... */ capture_date = ptp_unpack_string(params, data, PTP_oi_filenamelen+filenamelen*2 +capturedatelen*2+2,&capturedatelen); oi->ModificationDate = ptp_unpack_PTPTIME(capture_date); free(capture_date); } /* Custom Type Value Assignement (without Length) macro frequently used below */ #define CTVAL(target,func) { \ if (total - *offset < sizeof(target)) \ return 0; \ target = func(&data[*offset]); \ *offset += sizeof(target); \ } #define RARR(val,member,func) { \ unsigned int n,j; \ if (total - *offset < sizeof(uint32_t)) \ return 0; \ n = dtoh32a (&data[*offset]); \ *offset += sizeof(uint32_t); \ \ if (n >= UINT_MAX/sizeof(val->a.v[0])) \ return 0; \ val->a.count = n; \ val->a.v = malloc(sizeof(val->a.v[0])*n); \ if (!val->a.v) return 0; \ for (j=0;ja.v[j].member, func); \ } static inline unsigned int ptp_unpack_DPV ( PTPParams *params, unsigned char* data, unsigned int *offset, unsigned int total, PTPPropertyValue* value, uint16_t datatype ) { switch (datatype) { case PTP_DTC_INT8: CTVAL(value->i8,dtoh8a); break; case PTP_DTC_UINT8: CTVAL(value->u8,dtoh8a); break; case PTP_DTC_INT16: CTVAL(value->i16,dtoh16a); break; case PTP_DTC_UINT16: CTVAL(value->u16,dtoh16a); break; case PTP_DTC_INT32: CTVAL(value->i32,dtoh32a); break; case PTP_DTC_UINT32: CTVAL(value->u32,dtoh32a); break; case PTP_DTC_INT64: CTVAL(value->i64,dtoh64a); break; case PTP_DTC_UINT64: CTVAL(value->u64,dtoh64a); break; case PTP_DTC_UINT128: *offset += 16; /*fprintf(stderr,"unhandled unpack of uint128n");*/ break; case PTP_DTC_INT128: *offset += 16; /*fprintf(stderr,"unhandled unpack of int128n");*/ break; case PTP_DTC_AINT8: RARR(value,i8,dtoh8a); break; case PTP_DTC_AUINT8: RARR(value,u8,dtoh8a); break; case PTP_DTC_AUINT16: RARR(value,u16,dtoh16a); break; case PTP_DTC_AINT16: RARR(value,i16,dtoh16a); break; case PTP_DTC_AUINT32: RARR(value,u32,dtoh32a); break; case PTP_DTC_AINT32: RARR(value,i32,dtoh32a); break; case PTP_DTC_AUINT64: RARR(value,u64,dtoh64a); break; case PTP_DTC_AINT64: RARR(value,i64,dtoh64a); break; /* XXX: other int types are unimplemented */ /* XXX: other int arrays are unimplemented also */ case PTP_DTC_STR: { uint8_t len; /* XXX: max size */ value->str = ptp_unpack_string(params,data,*offset,&len); *offset += len*2+1; if (!value->str) return 1; break; } default: return 0; } return 1; } /* Device Property pack/unpack */ #define PTP_dpd_DevicePropertyCode 0 #define PTP_dpd_DataType 2 #define PTP_dpd_GetSet 4 #define PTP_dpd_FactoryDefaultValue 5 static inline int ptp_unpack_DPD (PTPParams *params, unsigned char* data, PTPDevicePropDesc *dpd, unsigned int dpdlen) { unsigned int offset = 0, ret; memset (dpd, 0, sizeof(*dpd)); dpd->DevicePropertyCode=dtoh16a(&data[PTP_dpd_DevicePropertyCode]); dpd->DataType=dtoh16a(&data[PTP_dpd_DataType]); dpd->GetSet=dtoh8a(&data[PTP_dpd_GetSet]); dpd->FormFlag=PTP_DPFF_None; offset = PTP_dpd_FactoryDefaultValue; ret = ptp_unpack_DPV (params, data, &offset, dpdlen, &dpd->FactoryDefaultValue, dpd->DataType); if (!ret) goto outofmemory; if ((dpd->DataType == PTP_DTC_STR) && (offset == dpdlen)) return 1; ret = ptp_unpack_DPV (params, data, &offset, dpdlen, &dpd->CurrentValue, dpd->DataType); if (!ret) goto outofmemory; /* if offset==0 then Data Type format is not supported by this code or the Data Type is a string (with two empty strings as values). In both cases Form Flag should be set to 0x00 and FORM is not present. */ if (offset==PTP_dpd_FactoryDefaultValue) return 1; dpd->FormFlag=dtoh8a(&data[offset]); offset+=sizeof(uint8_t); switch (dpd->FormFlag) { case PTP_DPFF_Range: ret = ptp_unpack_DPV (params, data, &offset, dpdlen, &dpd->FORM.Range.MinimumValue, dpd->DataType); if (!ret) goto outofmemory; ret = ptp_unpack_DPV (params, data, &offset, dpdlen, &dpd->FORM.Range.MaximumValue, dpd->DataType); if (!ret) goto outofmemory; ret = ptp_unpack_DPV (params, data, &offset, dpdlen, &dpd->FORM.Range.StepSize, dpd->DataType); if (!ret) goto outofmemory; break; case PTP_DPFF_Enumeration: { int i; #define N dpd->FORM.Enum.NumberOfValues N = dtoh16a(&data[offset]); offset+=sizeof(uint16_t); dpd->FORM.Enum.SupportedValue = malloc(N*sizeof(dpd->FORM.Enum.SupportedValue[0])); if (!dpd->FORM.Enum.SupportedValue) goto outofmemory; memset (dpd->FORM.Enum.SupportedValue,0 , N*sizeof(dpd->FORM.Enum.SupportedValue[0])); for (i=0;iFORM.Enum.SupportedValue[i], dpd->DataType); /* Slightly different handling here. The HP PhotoSmart 120 * specifies an enumeration with N in wrong endian * 00 01 instead of 01 00, so we count the enum just until the * the end of the packet. */ if (!ret) { if (!i) goto outofmemory; dpd->FORM.Enum.NumberOfValues = i; break; } } } } #undef N return 1; outofmemory: ptp_free_devicepropdesc(dpd); return 0; } /* Device Property pack/unpack */ #define PTP_dpd_Sony_DevicePropertyCode 0 #define PTP_dpd_Sony_DataType 2 #define PTP_dpd_Sony_GetSet 4 #define PTP_dpd_Sony_Unknown 5 #define PTP_dpd_Sony_FactoryDefaultValue 6 static inline int ptp_unpack_Sony_DPD (PTPParams *params, unsigned char* data, PTPDevicePropDesc *dpd, unsigned int dpdlen, unsigned int *poffset) { unsigned int ret; #if 0 unsigned int unk1, unk2; #endif memset (dpd, 0, sizeof(*dpd)); dpd->DevicePropertyCode=dtoh16a(&data[PTP_dpd_Sony_DevicePropertyCode]); dpd->DataType=dtoh16a(&data[PTP_dpd_Sony_DataType]); #if 0 /* get set ? */ unk1 = dtoh8a(&data[PTP_dpd_Sony_GetSet]); unk2 = dtoh8a(&data[PTP_dpd_Sony_Unknown]); ptp_debug (params, "prop 0x%04x, datatype 0x%04x, unk1 %d unk2 %d", dpd->DevicePropertyCode, dpd->DataType, unk1, unk2); #endif dpd->GetSet=1; dpd->FormFlag=PTP_DPFF_None; *poffset = PTP_dpd_Sony_FactoryDefaultValue; ret = ptp_unpack_DPV (params, data, poffset, dpdlen, &dpd->FactoryDefaultValue, dpd->DataType); if (!ret) goto outofmemory; if ((dpd->DataType == PTP_DTC_STR) && (*poffset == dpdlen)) return 1; ret = ptp_unpack_DPV (params, data, poffset, dpdlen, &dpd->CurrentValue, dpd->DataType); if (!ret) goto outofmemory; /* if offset==0 then Data Type format is not supported by this code or the Data Type is a string (with two empty strings as values). In both cases Form Flag should be set to 0x00 and FORM is not present. */ if (*poffset==PTP_dpd_Sony_FactoryDefaultValue) return 1; dpd->FormFlag=dtoh8a(&data[*poffset]); *poffset+=sizeof(uint8_t); switch (dpd->FormFlag) { case PTP_DPFF_Range: ret = ptp_unpack_DPV (params, data, poffset, dpdlen, &dpd->FORM.Range.MinimumValue, dpd->DataType); if (!ret) goto outofmemory; ret = ptp_unpack_DPV (params, data, poffset, dpdlen, &dpd->FORM.Range.MaximumValue, dpd->DataType); if (!ret) goto outofmemory; ret = ptp_unpack_DPV (params, data, poffset, dpdlen, &dpd->FORM.Range.StepSize, dpd->DataType); if (!ret) goto outofmemory; break; case PTP_DPFF_Enumeration: { int i; #define N dpd->FORM.Enum.NumberOfValues N = dtoh16a(&data[*poffset]); *poffset+=sizeof(uint16_t); dpd->FORM.Enum.SupportedValue = malloc(N*sizeof(dpd->FORM.Enum.SupportedValue[0])); if (!dpd->FORM.Enum.SupportedValue) goto outofmemory; memset (dpd->FORM.Enum.SupportedValue,0 , N*sizeof(dpd->FORM.Enum.SupportedValue[0])); for (i=0;iFORM.Enum.SupportedValue[i], dpd->DataType); /* Slightly different handling here. The HP PhotoSmart 120 * specifies an enumeration with N in wrong endian * 00 01 instead of 01 00, so we count the enum just until the * the end of the packet. */ if (!ret) { if (!i) goto outofmemory; dpd->FORM.Enum.NumberOfValues = i; break; } } } } #undef N return 1; outofmemory: ptp_free_devicepropdesc(dpd); return 0; } static inline void duplicate_PropertyValue (const PTPPropertyValue *src, PTPPropertyValue *dst, uint16_t type) { if (type == PTP_DTC_STR) { if (src->str) dst->str = strdup(src->str); else dst->str = NULL; return; } if (type & PTP_DTC_ARRAY_MASK) { unsigned int i; dst->a.count = src->a.count; dst->a.v = malloc (sizeof(src->a.v[0])*src->a.count); for (i=0;ia.count;i++) duplicate_PropertyValue (&src->a.v[i], &dst->a.v[i], type & ~PTP_DTC_ARRAY_MASK); return; } switch (type & ~PTP_DTC_ARRAY_MASK) { case PTP_DTC_INT8: dst->i8 = src->i8; break; case PTP_DTC_UINT8: dst->u8 = src->u8; break; case PTP_DTC_INT16: dst->i16 = src->i16; break; case PTP_DTC_UINT16: dst->u16 = src->u16; break; case PTP_DTC_INT32: dst->i32 = src->i32; break; case PTP_DTC_UINT32: dst->u32 = src->u32; break; case PTP_DTC_UINT64: dst->u64 = src->u64; break; case PTP_DTC_INT64: dst->i64 = src->i64; break; #if 0 case PTP_DTC_INT128: dst->i128 = src->i128; break; case PTP_DTC_UINT128: dst->u128 = src->u128; break; #endif default: break; } return; } static inline void duplicate_DevicePropDesc(const PTPDevicePropDesc *src, PTPDevicePropDesc *dst) { int i; dst->DevicePropertyCode = src->DevicePropertyCode; dst->DataType = src->DataType; dst->GetSet = src->GetSet; duplicate_PropertyValue (&src->FactoryDefaultValue, &dst->FactoryDefaultValue, src->DataType); duplicate_PropertyValue (&src->CurrentValue, &dst->CurrentValue, src->DataType); dst->FormFlag = src->FormFlag; switch (src->FormFlag) { case PTP_DPFF_Range: duplicate_PropertyValue (&src->FORM.Range.MinimumValue, &dst->FORM.Range.MinimumValue, src->DataType); duplicate_PropertyValue (&src->FORM.Range.MaximumValue, &dst->FORM.Range.MaximumValue, src->DataType); duplicate_PropertyValue (&src->FORM.Range.StepSize, &dst->FORM.Range.StepSize, src->DataType); break; case PTP_DPFF_Enumeration: dst->FORM.Enum.NumberOfValues = src->FORM.Enum.NumberOfValues; dst->FORM.Enum.SupportedValue = malloc (sizeof(dst->FORM.Enum.SupportedValue[0])*src->FORM.Enum.NumberOfValues); for (i = 0; iFORM.Enum.NumberOfValues ; i++) duplicate_PropertyValue (&src->FORM.Enum.SupportedValue[i], &dst->FORM.Enum.SupportedValue[i], src->DataType); break; case PTP_DPFF_None: break; } } #define PTP_opd_ObjectPropertyCode 0 #define PTP_opd_DataType 2 #define PTP_opd_GetSet 4 #define PTP_opd_FactoryDefaultValue 5 static inline int ptp_unpack_OPD (PTPParams *params, unsigned char* data, PTPObjectPropDesc *opd, unsigned int opdlen) { unsigned int offset=0, ret; memset (opd, 0, sizeof(*opd)); opd->ObjectPropertyCode=dtoh16a(&data[PTP_opd_ObjectPropertyCode]); opd->DataType=dtoh16a(&data[PTP_opd_DataType]); opd->GetSet=dtoh8a(&data[PTP_opd_GetSet]); offset = PTP_opd_FactoryDefaultValue; ret = ptp_unpack_DPV (params, data, &offset, opdlen, &opd->FactoryDefaultValue, opd->DataType); if (!ret) goto outofmemory; opd->GroupCode=dtoh32a(&data[offset]); offset+=sizeof(uint32_t); opd->FormFlag=dtoh8a(&data[offset]); offset+=sizeof(uint8_t); switch (opd->FormFlag) { case PTP_OPFF_Range: ret = ptp_unpack_DPV (params, data, &offset, opdlen, &opd->FORM.Range.MinimumValue, opd->DataType); if (!ret) goto outofmemory; ret = ptp_unpack_DPV (params, data, &offset, opdlen, &opd->FORM.Range.MaximumValue, opd->DataType); if (!ret) goto outofmemory; ret = ptp_unpack_DPV (params, data, &offset, opdlen, &opd->FORM.Range.StepSize, opd->DataType); if (!ret) goto outofmemory; break; case PTP_OPFF_Enumeration: { unsigned int i; #define N opd->FORM.Enum.NumberOfValues N = dtoh16a(&data[offset]); offset+=sizeof(uint16_t); opd->FORM.Enum.SupportedValue = malloc(N*sizeof(opd->FORM.Enum.SupportedValue[0])); if (!opd->FORM.Enum.SupportedValue) goto outofmemory; memset (opd->FORM.Enum.SupportedValue,0 , N*sizeof(opd->FORM.Enum.SupportedValue[0])); for (i=0;iFORM.Enum.SupportedValue[i], opd->DataType); /* Slightly different handling here. The HP PhotoSmart 120 * specifies an enumeration with N in wrong endian * 00 01 instead of 01 00, so we count the enum just until the * the end of the packet. */ if (!ret) { if (!i) goto outofmemory; opd->FORM.Enum.NumberOfValues = i; break; } } #undef N } } return 1; outofmemory: ptp_free_objectpropdesc(opd); return 0; } static inline uint32_t ptp_pack_DPV (PTPParams *params, PTPPropertyValue* value, unsigned char** dpvptr, uint16_t datatype) { unsigned char* dpv=NULL; uint32_t size=0; unsigned int i; switch (datatype) { case PTP_DTC_INT8: size=sizeof(int8_t); dpv=malloc(size); htod8a(dpv,value->i8); break; case PTP_DTC_UINT8: size=sizeof(uint8_t); dpv=malloc(size); htod8a(dpv,value->u8); break; case PTP_DTC_INT16: size=sizeof(int16_t); dpv=malloc(size); htod16a(dpv,value->i16); break; case PTP_DTC_UINT16: size=sizeof(uint16_t); dpv=malloc(size); htod16a(dpv,value->u16); break; case PTP_DTC_INT32: size=sizeof(int32_t); dpv=malloc(size); htod32a(dpv,value->i32); break; case PTP_DTC_UINT32: size=sizeof(uint32_t); dpv=malloc(size); htod32a(dpv,value->u32); break; case PTP_DTC_INT64: size=sizeof(int64_t); dpv=malloc(size); htod64a(dpv,value->i64); break; case PTP_DTC_UINT64: size=sizeof(uint64_t); dpv=malloc(size); htod64a(dpv,value->u64); break; case PTP_DTC_AUINT8: size=sizeof(uint32_t)+value->a.count*sizeof(uint8_t); dpv=malloc(size); htod32a(dpv,value->a.count); for (i=0;ia.count;i++) htod8a(&dpv[sizeof(uint32_t)+i*sizeof(uint8_t)],value->a.v[i].u8); break; case PTP_DTC_AINT8: size=sizeof(uint32_t)+value->a.count*sizeof(int8_t); dpv=malloc(size); htod32a(dpv,value->a.count); for (i=0;ia.count;i++) htod8a(&dpv[sizeof(uint32_t)+i*sizeof(int8_t)],value->a.v[i].i8); break; case PTP_DTC_AUINT16: size=sizeof(uint32_t)+value->a.count*sizeof(uint16_t); dpv=malloc(size); htod32a(dpv,value->a.count); for (i=0;ia.count;i++) htod16a(&dpv[sizeof(uint32_t)+i*sizeof(uint16_t)],value->a.v[i].u16); break; case PTP_DTC_AINT16: size=sizeof(uint32_t)+value->a.count*sizeof(int16_t); dpv=malloc(size); htod32a(dpv,value->a.count); for (i=0;ia.count;i++) htod16a(&dpv[sizeof(uint32_t)+i*sizeof(int16_t)],value->a.v[i].i16); break; case PTP_DTC_AUINT32: size=sizeof(uint32_t)+value->a.count*sizeof(uint32_t); dpv=malloc(size); htod32a(dpv,value->a.count); for (i=0;ia.count;i++) htod32a(&dpv[sizeof(uint32_t)+i*sizeof(uint32_t)],value->a.v[i].u32); break; case PTP_DTC_AINT32: size=sizeof(uint32_t)+value->a.count*sizeof(int32_t); dpv=malloc(size); htod32a(dpv,value->a.count); for (i=0;ia.count;i++) htod32a(&dpv[sizeof(uint32_t)+i*sizeof(int32_t)],value->a.v[i].i32); break; case PTP_DTC_AUINT64: size=sizeof(uint32_t)+value->a.count*sizeof(uint64_t); dpv=malloc(size); htod32a(dpv,value->a.count); for (i=0;ia.count;i++) htod64a(&dpv[sizeof(uint32_t)+i*sizeof(uint64_t)],value->a.v[i].u64); break; case PTP_DTC_AINT64: size=sizeof(uint32_t)+value->a.count*sizeof(int64_t); dpv=malloc(size); htod32a(dpv,value->a.count); for (i=0;ia.count;i++) htod64a(&dpv[sizeof(uint32_t)+i*sizeof(int64_t)],value->a.v[i].i64); break; /* XXX: other int types are unimplemented */ case PTP_DTC_STR: { dpv=ptp_get_packed_stringcopy(params, value->str, &size); break; } } *dpvptr=dpv; return size; } #define MAX_MTP_PROPS 127 static inline uint32_t ptp_pack_OPL (PTPParams *params, MTPProperties *props, int nrofprops, unsigned char** opldataptr) { unsigned char* opldata; MTPProperties *propitr; unsigned char *packedprops[MAX_MTP_PROPS]; uint32_t packedpropslens[MAX_MTP_PROPS]; uint32_t packedobjecthandles[MAX_MTP_PROPS]; uint16_t packedpropsids[MAX_MTP_PROPS]; uint16_t packedpropstypes[MAX_MTP_PROPS]; uint32_t totalsize = 0; uint32_t bufp = 0; uint32_t noitems = 0; uint32_t i; totalsize = sizeof(uint32_t); /* 4 bytes to store the number of elements */ propitr = props; while (nrofprops-- && noitems < MAX_MTP_PROPS) { /* Object Handle */ packedobjecthandles[noitems]=propitr->ObjectHandle; totalsize += sizeof(uint32_t); /* Object ID */ /* Metadata type */ packedpropsids[noitems]=propitr->property; totalsize += sizeof(uint16_t); /* Data type */ packedpropstypes[noitems]= propitr->datatype; totalsize += sizeof(uint16_t); /* Add each property to be sent. */ packedpropslens[noitems] = ptp_pack_DPV (params, &propitr->propval, &packedprops[noitems], propitr->datatype); totalsize += packedpropslens[noitems]; noitems ++; propitr ++; } /* Allocate memory for the packed property list */ opldata = malloc(totalsize); htod32a(&opldata[bufp],noitems); bufp += 4; /* Copy into a nice packed list */ for (i = 0; i < noitems; i++) { /* Object ID */ htod32a(&opldata[bufp],packedobjecthandles[i]); bufp += sizeof(uint32_t); htod16a(&opldata[bufp],packedpropsids[i]); bufp += sizeof(uint16_t); htod16a(&opldata[bufp],packedpropstypes[i]); bufp += sizeof(uint16_t); /* The copy the actual property */ memcpy(&opldata[bufp], packedprops[i], packedpropslens[i]); bufp += packedpropslens[i]; free(packedprops[i]); } *opldataptr = opldata; return totalsize; } static int _compare_func(const void* x, const void *y) { const MTPProperties *px = x; const MTPProperties *py = y; return px->ObjectHandle - py->ObjectHandle; } static inline int ptp_unpack_OPL (PTPParams *params, unsigned char* data, MTPProperties **pprops, unsigned int len) { uint32_t prop_count = dtoh32a(data); MTPProperties *props = NULL; unsigned int offset = 0, i; if (prop_count == 0) { *pprops = NULL; return 0; } ptp_debug (params ,"Unpacking MTP OPL, size %d (prop_count %d)", len, prop_count); data += sizeof(uint32_t); len -= sizeof(uint32_t); props = malloc(prop_count * sizeof(MTPProperties)); if (!props) return 0; for (i = 0; i < prop_count; i++) { if (len <= 0) { ptp_debug (params ,"short MTP Object Property List at property %d (of %d)", i, prop_count); ptp_debug (params ,"device probably needs DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL", i); ptp_debug (params ,"or even DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST", i); qsort (props, i, sizeof(MTPProperties),_compare_func); *pprops = props; return i; } props[i].ObjectHandle = dtoh32a(data); data += sizeof(uint32_t); len -= sizeof(uint32_t); props[i].property = dtoh16a(data); data += sizeof(uint16_t); len -= sizeof(uint16_t); props[i].datatype = dtoh16a(data); data += sizeof(uint16_t); len -= sizeof(uint16_t); offset = 0; ptp_unpack_DPV(params, data, &offset, len, &props[i].propval, props[i].datatype); data += offset; len -= offset; } qsort (props, prop_count, sizeof(MTPProperties),_compare_func); *pprops = props; return prop_count; } /* PTP USB Event container unpack Copyright (c) 2003 Nikolai Kopanygin */ #define PTP_ec_Length 0 #define PTP_ec_Type 4 #define PTP_ec_Code 6 #define PTP_ec_TransId 8 #define PTP_ec_Param1 12 #define PTP_ec_Param2 16 #define PTP_ec_Param3 20 static inline void ptp_unpack_EC (PTPParams *params, unsigned char* data, PTPContainer *ec, unsigned int len) { unsigned int length; int type; if (data==NULL) return; memset(ec,0,sizeof(*ec)); length=dtoh32a(&data[PTP_ec_Length]); if (length > len) { ptp_debug (params, "length %d in container, but data only %d bytes?!", length, len); return; } type = dtoh16a(&data[PTP_ec_Type]); ec->Code=dtoh16a(&data[PTP_ec_Code]); ec->Transaction_ID=dtoh32a(&data[PTP_ec_TransId]); if (type!=PTP_USB_CONTAINER_EVENT) { ptp_debug (params, "Unknown canon event type %d (code=%x,tid=%x), please report!",type,ec->Code,ec->Transaction_ID); return; } if (length>=(PTP_ec_Param1+4)) { ec->Param1=dtoh32a(&data[PTP_ec_Param1]); ec->Nparam=1; } if (length>=(PTP_ec_Param2+4)) { ec->Param2=dtoh32a(&data[PTP_ec_Param2]); ec->Nparam=2; } if (length>=(PTP_ec_Param3+4)) { ec->Param3=dtoh32a(&data[PTP_ec_Param3]); ec->Nparam=3; } } /* PTP Canon Folder Entry unpack Copyright (c) 2003 Nikolai Kopanygin */ #define PTP_cfe_ObjectHandle 0 #define PTP_cfe_ObjectFormatCode 4 #define PTP_cfe_Flags 6 #define PTP_cfe_ObjectSize 7 #define PTP_cfe_Time 11 #define PTP_cfe_Filename 15 static inline void ptp_unpack_Canon_FE (PTPParams *params, unsigned char* data, PTPCANONFolderEntry *fe) { int i; if (data==NULL) return; fe->ObjectHandle=dtoh32a(&data[PTP_cfe_ObjectHandle]); fe->ObjectFormatCode=dtoh16a(&data[PTP_cfe_ObjectFormatCode]); fe->Flags=dtoh8a(&data[PTP_cfe_Flags]); fe->ObjectSize=dtoh32a((unsigned char*)&data[PTP_cfe_ObjectSize]); fe->Time=(time_t)dtoh32a(&data[PTP_cfe_Time]); for (i=0; iFilename[i]=(char)dtoh8a(&data[PTP_cfe_Filename+i]); } /* PTP Canon EOS Folder Entry unpack 0: 00 00 08 a0 objectid 4: 01 00 02 00 storageid 8: 01 30 00 00 ofc 12: 01 00 14: 00 00 16: 11 00 00 00 20: 00 00 00 00 24: 00 00 00 80 28: 00 00 08 a0 32: 4d 49 53 43-00 00 00 00 00 00 00 00 name 00 00 00 00 84 bc 74 46 objectime (normal PTP GetObjectInfo) ObjectInfo for 'IMG_0199.JPG': Object ID: 0x92740c72 StorageID: 0x00020001 ObjectFormat: 0x3801 ProtectionStatus: 0x0000 ObjectCompressedSize: 2217241 ThumbFormat: 0x3808 ThumbCompressedSize: 5122 ThumbPixWidth: 160 ThumbPixHeight: 120 ImagePixWidth: 4000 ImagePixHeight: 3000 ImageBitDepth: 24 ParentObject: 0x92740000 AssociationType: 0x0000 AssociationDesc: 0x00000000 SequenceNumber: 0x00000000 ModificationDate: 0x4d985ff0 CaptureDate: 0x4d985ff0 0010 38 00 00 00 Size of this entry 0014 72 0c 74 92 OID 0018 01 00 02 00 StorageID 001c 01 38 00 00 OFC 0020 00 00 00 00 ?? 0024 21 00 00 00 flags (4 bytes? 1 byte?) 0028 19 d5 21 00 Size 002c 00 00 74 92 ? 0030 70 0c 74 92 OID 0034 49 4d 47 5f-30 31 39 39 2e 4a 50 47 IMG_0199.JPG 0040 00 00 00 00 0044 10 7c 98 4d Time */ #define PTP_cefe_ObjectHandle 0 #define PTP_cefe_StorageID 4 #define PTP_cefe_ObjectFormatCode 8 #define PTP_cefe_Flags 16 #define PTP_cefe_ObjectSize 20 #define PTP_cefe_Filename 32 #define PTP_cefe_Time 48 static inline void ptp_unpack_Canon_EOS_FE (PTPParams *params, unsigned char* data, PTPCANONFolderEntry *fe) { int i; fe->ObjectHandle=dtoh32a(&data[PTP_cefe_ObjectHandle]); fe->ObjectFormatCode=dtoh16a(&data[PTP_cefe_ObjectFormatCode]); fe->Flags=dtoh8a(&data[PTP_cefe_Flags]); fe->ObjectSize=dtoh32a((unsigned char*)&data[PTP_cefe_ObjectSize]); fe->Time=(time_t)dtoh32a(&data[PTP_cefe_Time]); for (i=0; iFilename[i]=(char)data[PTP_cefe_Filename+i]; } static inline uint16_t ptp_unpack_EOS_ImageFormat (PTPParams* params, unsigned char** data ) { /* EOS ImageFormat entries (of at least the 5DM2 and the 400D) look like this: uint32: number of entries / generated files (1 or 2) uint32: size of this entry in bytes (most likely allways 0x10) uint32: image type (1 == JPG, 6 == RAW) uint32: image size (0 == Large, 1 == Medium, 2 == Small, 0xe == S1, 0xf == S2, 0x10 == S3) uint32: image compression (2 == Standard/JPG, 3 == Fine/JPG, 4 == Lossles/RAW) If the number of entries is 2 the last 4 uint32 repeat. example: 0: 0x 1 1: 0x 10 2: 0x 6 3: 0x 1 4: 0x 4 The idea is to simply 'condense' these values to just one uint16 to be able to conveniently use the available enumeration facilities (look-up table). The image size and compression values fully describe the image format. Hence we generate a uint16 with the four nibles set as follows: entry 1 size | entry 1 compression | entry 2 size | entry 2 compression. The above example would result in the value 0x1400. The EOS 5D Mark III (and possibly other high-end EOS as well) added the extra fancy S1, S2 and S3 JPEG options. S1 replaces the old Small. -1 the S1/S2/S3 to prevent the 0x10 overflow. */ const unsigned char* d = *data; uint32_t n = dtoh32a( d ); uint32_t l, s1, c1, s2 = 0, c2 = 0; if (n != 1 && n !=2) { ptp_debug (params, "parsing EOS ImageFormat property failed (n != 1 && n != 2: %d)", n); return 0; } l = dtoh32a( d+=4 ); if (l != 0x10) { ptp_debug (params, "parsing EOS ImageFormat property failed (l != 0x10: 0x%x)", l); return 0; } d+=4; /* skip type */ s1 = dtoh32a( d+=4 ); c1 = dtoh32a( d+=4 ); if (n == 2) { l = dtoh32a( d+=4 ); if (l != 0x10) { ptp_debug (params, "parsing EOS ImageFormat property failed (l != 0x10: 0x%x)", l); return 0; } d+=4; /* skip type */ s2 = dtoh32a( d+=4 ); c2 = dtoh32a( d+=4 ); } *data = (unsigned char*) d+4; /* deal with S1/S2/S3 JPEG sizes, see above. */ if( s1 >= 0xe ) s1--; if( s2 >= 0xe ) s2--; return ((s1 & 0xF) << 12) | ((c1 & 0xF) << 8) | ((s2 & 0xF) << 4) | ((c2 & 0xF) << 0); } static inline uint32_t ptp_pack_EOS_ImageFormat (PTPParams* params, unsigned char* data, uint16_t value) { uint32_t n = (value & 0xFF) ? 2 : 1; uint32_t s = 4 + 0x10 * n; if( !data ) return s; #define PACK_5DM3_SMALL_JPEG_SIZE( X ) (X) >= 0xd ? (X)+1 : (X) htod32a(data+=0, n); htod32a(data+=4, 0x10); htod32a(data+=4, ((value >> 8) & 0xF) == 4 ? 6 : 1); htod32a(data+=4, PACK_5DM3_SMALL_JPEG_SIZE((value >> 12) & 0xF)); htod32a(data+=4, (value >> 8) & 0xF); if (n==2) { htod32a(data+=4, 0x10); htod32a(data+=4, ((value >> 0) & 0xF) == 4 ? 6 : 1); htod32a(data+=4, PACK_5DM3_SMALL_JPEG_SIZE((value >> 4) & 0xF)); htod32a(data+=4, (value >> 0) & 0xF); } #undef PACK_5DM3_SMALL_JPEG_SIZE return s; } /* 00: 32 bit size * 04: 16 bit subsize * 08: 16 bit version (?) * 0c: 16 bit focus_points_in_struct * 10: 16 bit focus_points_in_use * 14: variable arrays: * 16 bit sizex, 16 bit sizey * 16 bit othersizex, 16 bit othersizey * 16 bit array height[focus_points_in_struct] * 16 bit array width[focus_points_in_struct] * 16 bit array offsetheight[focus_points_in_struct] middle is 0 * 16 bit array offsetwidth[focus_points_in_struct] middle is ? * bitfield of selected focus points, starting with 0 [size focus_points_in_struct in bits] * unknown stuff , likely which are active * 16 bit 0xffff * * size=NxN,size2=NxN,points={NxNxNxN,NxNxNxN,...},selected={0,1,2} */ static inline char* ptp_unpack_EOS_FocusInfoEx (PTPParams* params, unsigned char** data ) { uint32_t size = dtoh32a( *data ); uint32_t halfsize = dtoh16a( (*data) + 4); uint32_t version = dtoh16a( (*data) + 6); uint32_t focus_points_in_struct = dtoh16a( (*data) + 8); uint32_t focus_points_in_use = dtoh16a( (*data) + 10); uint32_t sizeX = dtoh16a( (*data) + 12); uint32_t sizeY = dtoh16a( (*data) + 14); uint32_t size2X = dtoh16a( (*data) + 16); uint32_t size2Y = dtoh16a( (*data) + 18); uint32_t i; uint32_t maxlen; char *str, *p; /* every focuspoint gets 4 (16 bit number and a x) and a ,*/ /* inital things around lets say 100 chars at most. * FIXME: check selected when we decode it */ maxlen = focus_points_in_use*6*4 + focus_points_in_use + 100; if (halfsize != size-4) { ptp_error(params, "halfsize %d is not expected %d", halfsize, size-4); return "bad size"; } if (20 + focus_points_in_struct*8 + (focus_points_in_struct+7)/8 > size) { ptp_error(params, "size %d is too large for fp in struct %d", focus_points_in_struct*8 + 20 + (focus_points_in_struct+7)/8, size); return "bad size 2"; } #if 0 ptp_debug(params,"d1d3 content:"); for (i=0;inrofcanon_props;j++) if (params->canon_props[j].proptype == proptype) break; if (jnrofcanon_props) return ¶ms->canon_props[j].dpd; if (j) params->canon_props = realloc(params->canon_props, sizeof(params->canon_props[0])*(j+1)); else params->canon_props = malloc(sizeof(params->canon_props[0])); params->canon_props[j].proptype = proptype; params->canon_props[j].size = 0; params->canon_props[j].data = NULL; memset (¶ms->canon_props[j].dpd,0,sizeof(params->canon_props[j].dpd)); params->canon_props[j].dpd.GetSet = 1; params->canon_props[j].dpd.FormFlag = PTP_DPFF_None; params->nrofcanon_props = j+1; return ¶ms->canon_props[j].dpd; } static inline int ptp_unpack_CANON_changes (PTPParams *params, unsigned char* data, int datasize, PTPCanon_changes_entry **pce) { int i = 0, entries = 0; unsigned char *curdata = data; PTPCanon_changes_entry *ce; if (data==NULL) return 0; while (curdata - data < datasize) { uint32_t size = dtoh32a(&curdata[PTP_ece_Size]); uint32_t type = dtoh32a(&curdata[PTP_ece_Type]); if ((size == 8) && (type == 0)) break; if (type == PTP_EC_CANON_EOS_OLCInfoChanged) { unsigned int j; for (j=0;j<31;j++) if (dtoh32a(curdata+12) & (1<nrofcanon_props;j++) if (params->canon_props[j].proptype == proptype) break; if (j==params->nrofcanon_props) { ptp_debug (params, "event %d: propdesc %x, default value not found.", i, proptype); break; } dpd = ¶ms->canon_props[j].dpd; /* 1 - uint16 ? * 3 - uint16 * 7 - string? */ if (propxtype != 3) { ptp_debug (params, "event %d: propxtype is %x for %04x, unhandled.", i, propxtype, proptype); for (j=0;j= 2<<16) /* buggy or exploit */ break; ptp_debug (params, "event %d: propxtype is %x, prop is 0x%04x, data type is 0x%04x, propxcnt is %d.", i, propxtype, proptype, dpd->DataType, propxcnt); dpd->FormFlag = PTP_DPFF_Enumeration; dpd->FORM.Enum.NumberOfValues = propxcnt; free (dpd->FORM.Enum.SupportedValue); dpd->FORM.Enum.SupportedValue = malloc (sizeof (PTPPropertyValue)*propxcnt); switch (proptype) { case PTP_DPC_CANON_EOS_ImageFormat: case PTP_DPC_CANON_EOS_ImageFormatCF: case PTP_DPC_CANON_EOS_ImageFormatSD: case PTP_DPC_CANON_EOS_ImageFormatExtHD: /* special handling of ImageFormat properties */ for (j=0;jFORM.Enum.SupportedValue[j].u16 = ptp_unpack_EOS_ImageFormat( params, &xdata ); ptp_debug (params, "event %d: suppval[%d] of %x is 0x%x.", i, j, proptype, dpd->FORM.Enum.SupportedValue[j].u16); } break; default: /* 'normal' enumerated types */ switch (dpd->DataType) { #define XX( TYPE, CONV )\ for (j=0;jFORM.Enum.SupportedValue[j].TYPE = CONV(xdata); \ ptp_debug (params, "event %d: suppval[%d] of %x is 0x%x.", i, j, proptype, CONV(xdata)); \ xdata += 4; /* might only be for propxtype 3 */ \ } \ break; case PTP_DTC_INT16: XX( i16, dtoh16a ); case PTP_DTC_UINT32: XX( u32, dtoh32a ); case PTP_DTC_UINT16: XX( u16, dtoh16a ); case PTP_DTC_UINT8: XX( u8, dtoh8a ); #undef XX default: ptp_debug (params ,"event %d: data type 0x%04x of %x unhandled, raw values:", i, dpd->DataType, proptype, dtoh32a(xdata)); for (j=0;j<(size-PTP_ece_Prop_Desc_Data)/4;j++, xdata+=4) /* 4 is good for propxtype 3 */ ptp_debug (params, " %3d: 0x%8x", j, dtoh32a(xdata)); break; } } break; } case PTP_EC_CANON_EOS_PropValueChanged: if (size >= 0xc) { /* property info */ unsigned int j; uint32_t proptype = dtoh32a(&curdata[PTP_ece_Prop_Subtype]); unsigned char *xdata = &curdata[PTP_ece_Prop_Val_Data]; PTPDevicePropDesc *dpd; ptp_debug (params, "event %d: EOS prop %04x info record, datasize is %d", i, proptype, size-PTP_ece_Prop_Val_Data); for (j=0;jnrofcanon_props;j++) if (params->canon_props[j].proptype == proptype) break; if (jnrofcanon_props) { if ( (params->canon_props[j].size != size) || (memcmp(params->canon_props[j].data,xdata,size-PTP_ece_Prop_Val_Data))) { params->canon_props[j].data = realloc(params->canon_props[j].data,size-PTP_ece_Prop_Val_Data); memcpy (params->canon_props[j].data,xdata,size-PTP_ece_Prop_Val_Data); } } else { if (j) params->canon_props = realloc(params->canon_props, sizeof(params->canon_props[0])*(j+1)); else params->canon_props = malloc(sizeof(params->canon_props[0])); params->canon_props[j].proptype = proptype; params->canon_props[j].size = size; params->canon_props[j].data = malloc(size-PTP_ece_Prop_Val_Data); memcpy(params->canon_props[j].data, xdata, size-PTP_ece_Prop_Val_Data); memset (¶ms->canon_props[j].dpd,0,sizeof(params->canon_props[j].dpd)); params->canon_props[j].dpd.GetSet = 1; params->canon_props[j].dpd.FormFlag = PTP_DPFF_None; params->nrofcanon_props = j+1; } dpd = ¶ms->canon_props[j].dpd; ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_PROPERTY; ce[i].u.propid = proptype; /* fix GetSet value */ switch (proptype) { #define XX(x) case PTP_DPC_CANON_##x: XX(EOS_FocusMode) XX(EOS_BatteryPower) XX(EOS_BatterySelect) XX(EOS_ModelID) XX(EOS_PTPExtensionVersion) XX(EOS_DPOFVersion) XX(EOS_AvailableShots) XX(EOS_CurrentStorage) XX(EOS_CurrentFolder) XX(EOS_MyMenu) XX(EOS_MyMenuList) XX(EOS_HDDirectoryStructure) XX(EOS_BatteryInfo) XX(EOS_AdapterInfo) XX(EOS_LensStatus) XX(EOS_CardExtension) XX(EOS_TempStatus) XX(EOS_ShutterCounter) XX(EOS_SerialNumber) XX(EOS_DepthOfFieldPreview) XX(EOS_EVFRecordStatus) XX(EOS_LvAfSystem) XX(EOS_FocusInfoEx) XX(EOS_DepthOfField) XX(EOS_Brightness) XX(EOS_EFComp) XX(EOS_LensName) XX(EOS_LensID) #undef XX dpd->GetSet = PTP_DPGS_Get; break; } /* set DataType */ switch (proptype) { case PTP_DPC_CANON_EOS_CameraTime: case PTP_DPC_CANON_EOS_UTCTime: case PTP_DPC_CANON_EOS_Summertime: /* basical the DST flag */ case PTP_DPC_CANON_EOS_AvailableShots: case PTP_DPC_CANON_EOS_CaptureDestination: case PTP_DPC_CANON_EOS_WhiteBalanceXA: case PTP_DPC_CANON_EOS_WhiteBalanceXB: case PTP_DPC_CANON_EOS_CurrentStorage: case PTP_DPC_CANON_EOS_CurrentFolder: case PTP_DPC_CANON_EOS_ShutterCounter: case PTP_DPC_CANON_EOS_ModelID: case PTP_DPC_CANON_EOS_LensID: case PTP_DPC_CANON_EOS_StroboFiring: case PTP_DPC_CANON_EOS_AFSelectFocusArea: case PTP_DPC_CANON_EOS_ContinousAFMode: dpd->DataType = PTP_DTC_UINT32; break; /* enumeration for AEM is never provided, but is available to set */ case PTP_DPC_CANON_EOS_AutoExposureMode: dpd->DataType = PTP_DTC_UINT16; dpd->FormFlag = PTP_DPFF_Enumeration; dpd->FORM.Enum.NumberOfValues = 0; break; case PTP_DPC_CANON_EOS_Aperture: case PTP_DPC_CANON_EOS_ShutterSpeed: case PTP_DPC_CANON_EOS_ISOSpeed: case PTP_DPC_CANON_EOS_FocusMode: case PTP_DPC_CANON_EOS_ColorSpace: case PTP_DPC_CANON_EOS_BatteryPower: case PTP_DPC_CANON_EOS_BatterySelect: case PTP_DPC_CANON_EOS_PTPExtensionVersion: case PTP_DPC_CANON_EOS_DriveMode: case PTP_DPC_CANON_EOS_AEB: case PTP_DPC_CANON_EOS_BracketMode: case PTP_DPC_CANON_EOS_QuickReviewTime: case PTP_DPC_CANON_EOS_EVFMode: case PTP_DPC_CANON_EOS_EVFOutputDevice: case PTP_DPC_CANON_EOS_AutoPowerOff: case PTP_DPC_CANON_EOS_EVFRecordStatus: dpd->DataType = PTP_DTC_UINT16; break; case PTP_DPC_CANON_EOS_PictureStyle: case PTP_DPC_CANON_EOS_WhiteBalance: case PTP_DPC_CANON_EOS_MeteringMode: case PTP_DPC_CANON_EOS_ExpCompensation: dpd->DataType = PTP_DTC_UINT8; break; case PTP_DPC_CANON_EOS_Owner: case PTP_DPC_CANON_EOS_Artist: case PTP_DPC_CANON_EOS_Copyright: case PTP_DPC_CANON_EOS_SerialNumber: case PTP_DPC_CANON_EOS_LensName: dpd->DataType = PTP_DTC_STR; break; case PTP_DPC_CANON_EOS_WhiteBalanceAdjustA: case PTP_DPC_CANON_EOS_WhiteBalanceAdjustB: dpd->DataType = PTP_DTC_INT16; break; /* unknown props, listed from dump.... all 16 bit, but vals might be smaller */ case PTP_DPC_CANON_EOS_DPOFVersion: dpd->DataType = PTP_DTC_UINT16; ptp_debug (params, "event %d: Unknown EOS property %04x, datasize is %d, using uint16", i ,proptype, size-PTP_ece_Prop_Val_Data); for (j=0;jDataType = PTP_DTC_UINT8; ptp_debug (params, "event %d: Unknown EOS property %04x, datasize is %d, using uint8", i ,proptype, size-PTP_ece_Prop_Val_Data); for (j=0;jDataType = PTP_DTC_UINT32; ptp_debug (params, "event %d: Unknown EOS property %04x, datasize is %d, using uint32", i ,proptype, size-PTP_ece_Prop_Val_Data); if ((size-PTP_ece_Prop_Val_Data) % sizeof(uint32_t) != 0) ptp_debug (params, "event %d: Warning: datasize modulo sizeof(uint32) is not 0: ", i, (size-PTP_ece_Prop_Val_Data) % sizeof(uint32_t) ); for (j=0;j<(size-PTP_ece_Prop_Val_Data)/sizeof(uint32_t);j++) ptp_debug (params, " %d: 0x%8x", j, ((uint32_t*)xdata)[j]); break; /* ImageFormat properties have to be ignored here, see special handling below */ case PTP_DPC_CANON_EOS_ImageFormat: case PTP_DPC_CANON_EOS_ImageFormatCF: case PTP_DPC_CANON_EOS_ImageFormatSD: case PTP_DPC_CANON_EOS_ImageFormatExtHD: case PTP_DPC_CANON_EOS_CustomFuncEx: case PTP_DPC_CANON_EOS_FocusInfoEx: break; default: ptp_debug (params, "event %d: Unknown EOS property %04x, datasize is %d", i ,proptype, size-PTP_ece_Prop_Val_Data); for (j=0;jDataType) { case PTP_DTC_UINT32: dpd->FactoryDefaultValue.u32 = dtoh32a(xdata); dpd->CurrentValue.u32 = dtoh32a(xdata); ptp_debug (params ,"event %d: currentvalue of %x is %x", i, proptype, dpd->CurrentValue.u32); break; case PTP_DTC_INT16: dpd->FactoryDefaultValue.i16 = dtoh16a(xdata); dpd->CurrentValue.i16 = dtoh16a(xdata); ptp_debug (params,"event %d: currentvalue of %x is %d", i, proptype, dpd->CurrentValue.i16); break; case PTP_DTC_UINT16: dpd->FactoryDefaultValue.u16 = dtoh16a(xdata); dpd->CurrentValue.u16 = dtoh16a(xdata); ptp_debug (params,"event %d: currentvalue of %x is %x", i, proptype, dpd->CurrentValue.u16); break; case PTP_DTC_UINT8: dpd->FactoryDefaultValue.u8 = dtoh8a(xdata); dpd->CurrentValue.u8 = dtoh8a(xdata); ptp_debug (params,"event %d: currentvalue of %x is %x", i, proptype, dpd->CurrentValue.u8); break; case PTP_DTC_INT8: dpd->FactoryDefaultValue.i8 = dtoh8a(xdata); dpd->CurrentValue.i8 = dtoh8a(xdata); ptp_debug (params,"event %d: currentvalue of %x is %x", i, proptype, dpd->CurrentValue.i8); break; case PTP_DTC_STR: { #if 0 /* 5D MII and 400D aktually store plain ASCII in their string properties */ uint8_t len = 0; dpd->FactoryDefaultValue.str = ptp_unpack_string(params, data, 0, &len); dpd->CurrentValue.str = ptp_unpack_string(params, data, 0, &len); #else free (dpd->FactoryDefaultValue.str); dpd->FactoryDefaultValue.str = strdup( (char*)xdata ); free (dpd->CurrentValue.str); dpd->CurrentValue.str = strdup( (char*)xdata ); #endif ptp_debug (params,"event %d: currentvalue of %x is %s", i, proptype, dpd->CurrentValue.str); break; } default: /* debug is printed in switch above this one */ break; } /* ImageFormat and customFuncEx special handling (WARNING: dont move this in front of the dpd->DataType switch!) */ switch (proptype) { case PTP_DPC_CANON_EOS_ImageFormat: case PTP_DPC_CANON_EOS_ImageFormatCF: case PTP_DPC_CANON_EOS_ImageFormatSD: case PTP_DPC_CANON_EOS_ImageFormatExtHD: dpd->DataType = PTP_DTC_UINT16; dpd->FactoryDefaultValue.u16 = ptp_unpack_EOS_ImageFormat( params, &xdata ); dpd->CurrentValue.u16 = dpd->FactoryDefaultValue.u16; ptp_debug (params,"event %d: decoded imageformat, currentvalue of %x is %x", i, proptype, dpd->CurrentValue.u16); break; case PTP_DPC_CANON_EOS_CustomFuncEx: dpd->DataType = PTP_DTC_STR; free (dpd->FactoryDefaultValue.str); free (dpd->CurrentValue.str); dpd->FactoryDefaultValue.str = ptp_unpack_EOS_CustomFuncEx( params, &xdata ); dpd->CurrentValue.str = strdup( (char*)dpd->FactoryDefaultValue.str ); ptp_debug (params,"event %d: decoded custom function, currentvalue of %x is %s", i, proptype, dpd->CurrentValue.str); break; case PTP_DPC_CANON_EOS_FocusInfoEx: dpd->DataType = PTP_DTC_STR; free (dpd->FactoryDefaultValue.str); free (dpd->CurrentValue.str); dpd->FactoryDefaultValue.str = ptp_unpack_EOS_FocusInfoEx( params, &xdata ); dpd->CurrentValue.str = strdup( (char*)dpd->FactoryDefaultValue.str ); ptp_debug (params,"event %d: decoded focus info, currentvalue of %x is %s", i, proptype, dpd->CurrentValue.str); break; } break; } /* one more information record handed to us */ case PTP_EC_CANON_EOS_OLCInfoChanged: { uint32_t len, curoff; uint16_t mask,proptype; PTPDevicePropDesc *dpd; /* unclear what OLC stands for */ ptp_debug (params, "event %d: EOS event OLCInfoChanged (size %d)", i, size); if (size >= 0x8) { /* event info */ unsigned int k; for (k=8;kCurrentValue.u16 = curdata[curoff+5]; /* just use last byte */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_PROPERTY; ce[i].u.propid = proptype; curoff += 6; i++; } if (mask & CANON_EOS_OLC_APERTURE) { /* 5 bytes: 01 01 5b 30 30 */ /* this seesm to be the aperture record */ proptype = PTP_DPC_CANON_EOS_Aperture; dpd = _lookup_or_allocate_canon_prop(params, proptype); dpd->CurrentValue.u16 = curdata[curoff+4]; /* just use last byte */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_PROPERTY; ce[i].u.propid = proptype; curoff += 5; i++; } if (mask & CANON_EOS_OLC_ISO) { /* 5 bytes: 01 01 00 78 */ /* this seesm to be the aperture record */ proptype = PTP_DPC_CANON_EOS_ISOSpeed; dpd = _lookup_or_allocate_canon_prop(params, proptype); dpd->CurrentValue.u16 = curdata[curoff+3]; /* just use last byte */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_PROPERTY; ce[i].u.propid = proptype; curoff += 4; i++; } if (mask & 0x0010) { /* mask 0x0010: 4 bytes, 04 00 00 00 observed */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN; ce[i].u.info = malloc(strlen("OLCInfo event 0x0010 content 01234567")+1); sprintf(ce[i].u.info,"OLCInfo event 0x0010 content %02x%02x%02x%02x", curdata[curoff], curdata[curoff+1], curdata[curoff+2], curdata[curoff+3] ); curoff += 4; i++; } if (mask & 0x0020) { /* mask 0x0020: 6 bytes, 00 00 00 00 00 00 observed */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN; ce[i].u.info = malloc(strlen("OLCInfo event 0x0020 content 0123456789ab")+1); sprintf(ce[i].u.info,"OLCInfo event 0x0020 content %02x%02x%02x%02x%02x%02x", curdata[curoff], curdata[curoff+1], curdata[curoff+2], curdata[curoff+3], curdata[curoff+4], curdata[curoff+5] ); curoff += 6; i++; } if (mask & 0x0040) { int value = (signed char)curdata[curoff+2]; /* mask 0x0040: 7 bytes, 01 01 00 00 00 00 00 observed */ /* exposure indicator */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN; ce[i].u.info = malloc(strlen("OLCInfo exposure indicator 012345678901234567890123456789abcd")+1); sprintf(ce[i].u.info,"OLCInfo exposure indicator %d,%d,%d.%d (%02x%02x%02x%02x)", curdata[curoff], curdata[curoff+1], value/10,abs(value)%10, curdata[curoff+3], curdata[curoff+4], curdata[curoff+5], curdata[curoff+6] ); curoff += 7; i++; } if (mask & 0x0080) { /* mask 0x0080: 4 bytes, 00 00 00 00 observed */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN; ce[i].u.info = malloc(strlen("OLCInfo event 0x0080 content 01234567")+1); sprintf(ce[i].u.info,"OLCInfo event 0x0080 content %02x%02x%02x%02x", curdata[curoff], curdata[curoff+1], curdata[curoff+2], curdata[curoff+3] ); curoff += 4; i++; } if (mask & 0x0100) { /* mask 0x0100: 6 bytes, 00 00 00 00 00 00 (before focus) and 00 00 00 00 01 00 (on focus) observed */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_FOCUSINFO; ce[i].u.info = malloc(strlen("0123456789ab")+1); sprintf(ce[i].u.info,"%02x%02x%02x%02x%02x%02x", curdata[curoff], curdata[curoff+1], curdata[curoff+2], curdata[curoff+3], curdata[curoff+4], curdata[curoff+5] ); curoff += 6; i++; } if (mask & 0x0200) { /* mask 0x0200: 7 bytes, 00 00 00 00 00 00 00 observed */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_FOCUSMASK; ce[i].u.info = malloc(strlen("0123456789abcd0123456789abcdef")+1); sprintf(ce[i].u.info,"%02x%02x%02x%02x%02x%02x%02x", curdata[curoff], curdata[curoff+1], curdata[curoff+2], curdata[curoff+3], curdata[curoff+4], curdata[curoff+5], curdata[curoff+6] ); curoff += 7; i++; } if (mask & 0x0400) { /* mask 0x0400: 7 bytes, 00 00 00 00 00 00 00 observed */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN; ce[i].u.info = malloc(strlen("OLCInfo event 0x0400 content 0123456789abcd")+1); sprintf(ce[i].u.info,"OLCInfo event 0x0400 content %02x%02x%02x%02x%02x%02x%02x", curdata[curoff], curdata[curoff+1], curdata[curoff+2], curdata[curoff+3], curdata[curoff+4], curdata[curoff+5], curdata[curoff+6] ); curoff += 7; i++; } if (mask & 0x0800) { /* mask 0x0800: 8 bytes, 00 00 00 00 00 00 00 00 and 19 01 00 00 00 00 00 00 and others observed */ /* might be mask of focus points selected */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN; ce[i].u.info = malloc(strlen("OLCInfo event 0x0800 content 0123456789abcdef")+1); sprintf(ce[i].u.info,"OLCInfo event 0x0800 content %02x%02x%02x%02x%02x%02x%02x%02x", curdata[curoff], curdata[curoff+1], curdata[curoff+2], curdata[curoff+3], curdata[curoff+4], curdata[curoff+5], curdata[curoff+6], curdata[curoff+7] ); curoff += 8; i++; } if (mask & 0x1000) { /* mask 0x1000: 1 byte, 00 observed */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN; ce[i].u.info = malloc(strlen("OLCInfo event 0x1000 content 01")+1); sprintf(ce[i].u.info,"OLCInfo event 0x1000 content %02x", curdata[curoff] ); curoff += 1; i++; } /* handle more masks */ ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN; ce[i].u.info = malloc(strlen("OLCInfo event mask 0123456789")+1); sprintf(ce[i].u.info, "OLCInfo event mask=%x", mask); break; } case PTP_EC_CANON_EOS_CameraStatusChanged: ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_CAMERASTATUS; ce[i].u.status = dtoh32a(curdata+8); ptp_debug (params, "event %d: EOS event CameraStatusChanged (size %d) = %d", i, size, dtoh32a(curdata+8)); params->eos_camerastatus = dtoh32a(curdata+8); break; case 0: /* end marker */ if (size == 8) /* no output */ break; ptp_debug (params, "event %d: EOS event 0, but size %d", i, size); break; case PTP_EC_CANON_EOS_BulbExposureTime: ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_UNKNOWN; ce[i].u.info = malloc(strlen("BulbExposureTime 123456789")); sprintf (ce[i].u.info, "BulbExposureTime %d", dtoh32a(curdata+8)); break; case PTP_EC_CANON_EOS_ObjectRemoved: ce[i].type = PTP_CANON_EOS_CHANGES_TYPE_OBJECTREMOVED; ce[i].u.object.oid = dtoh32a(curdata+8); break; default: switch (type) { #define XX(x) case PTP_EC_CANON_EOS_##x: \ ptp_debug (params, "event %d: unhandled EOS event "#x" (size %d)", i, size); \ ce[i].u.info = malloc(strlen("unhandled EOS event "#x" (size 123456789)")); \ sprintf (ce[i].u.info, "unhandled EOS event "#x" (size %d)", size); \ break; XX(RequestGetEvent) XX(RequestGetObjectInfoEx) XX(StorageStatusChanged) XX(StorageInfoChanged) XX(ObjectInfoChangedEx) XX(ObjectContentChanged) XX(WillSoonShutdown) XX(ShutdownTimerUpdated) XX(RequestCancelTransfer) XX(RequestObjectTransferDT) XX(RequestCancelTransferDT) XX(StoreAdded) XX(StoreRemoved) XX(BulbExposureTime) XX(RecordingTime) XX(RequestObjectTransferTS) XX(AfResult) #undef XX default: ptp_debug (params, "event %d: unknown EOS event %04x", i, type); break; } if (size >= 0x8) { /* event info */ unsigned int j; for (j=8;j (len-PTP_nikon_ec_Code)/PTP_nikon_ec_Size) /* broken cnt? */ return; if (!*cnt) return; *ec = malloc(sizeof(PTPContainer)*(*cnt)); for (i=0;i<*cnt;i++) { memset(&(*ec)[i],0,sizeof(PTPContainer)); (*ec)[i].Code = dtoh16a(&data[PTP_nikon_ec_Code+PTP_nikon_ec_Size*i]); (*ec)[i].Param1 = dtoh32a(&data[PTP_nikon_ec_Param1+PTP_nikon_ec_Size*i]); (*ec)[i].Nparam = 1; } } static inline uint32_t ptp_pack_EK_text(PTPParams *params, PTPEKTextParams *text, unsigned char **data) { int i, len = 0; uint8_t retlen; unsigned char *curdata; len = 2*(strlen(text->title)+1)+1+ 2*(strlen(text->line[0])+1)+1+ 2*(strlen(text->line[1])+1)+1+ 2*(strlen(text->line[2])+1)+1+ 2*(strlen(text->line[3])+1)+1+ 2*(strlen(text->line[4])+1)+1+ 4*2+2*4+2+4+2+5*4*2; *data = malloc(len); if (!*data) return 0; curdata = *data; htod16a(curdata,100);curdata+=2; htod16a(curdata,1);curdata+=2; htod16a(curdata,0);curdata+=2; htod16a(curdata,1000);curdata+=2; htod32a(curdata,0);curdata+=4; htod32a(curdata,0);curdata+=4; htod16a(curdata,6);curdata+=2; htod32a(curdata,0);curdata+=4; ptp_pack_string(params, text->title, curdata, 0, &retlen); curdata+=2*retlen+1;htod16a(curdata,0);curdata+=2; htod16a(curdata,0x10);curdata+=2; for (i=0;i<5;i++) { ptp_pack_string(params, text->line[i], curdata, 0, &retlen); curdata+=2*retlen+1;htod16a(curdata,0);curdata+=2; htod16a(curdata,0x10);curdata+=2; htod16a(curdata,0x01);curdata+=2; htod16a(curdata,0x02);curdata+=2; htod16a(curdata,0x06);curdata+=2; } return len; } #define ptp_canon_dir_version 0x00 #define ptp_canon_dir_ofc 0x02 #define ptp_canon_dir_unk1 0x04 #define ptp_canon_dir_objectid 0x08 #define ptp_canon_dir_parentid 0x0c #define ptp_canon_dir_previd 0x10 /* in same dir */ #define ptp_canon_dir_nextid 0x14 /* in same dir */ #define ptp_canon_dir_nextchild 0x18 /* down one dir */ #define ptp_canon_dir_storageid 0x1c /* only in storage entry */ #define ptp_canon_dir_name 0x20 #define ptp_canon_dir_flags 0x2c #define ptp_canon_dir_size 0x30 #define ptp_canon_dir_unixtime 0x34 #define ptp_canon_dir_year 0x38 #define ptp_canon_dir_month 0x39 #define ptp_canon_dir_mday 0x3a #define ptp_canon_dir_hour 0x3b #define ptp_canon_dir_minute 0x3c #define ptp_canon_dir_second 0x3d #define ptp_canon_dir_unk2 0x3e #define ptp_canon_dir_thumbsize 0x40 #define ptp_canon_dir_width 0x44 #define ptp_canon_dir_height 0x48 static inline uint16_t ptp_unpack_canon_directory ( PTPParams *params, unsigned char *dir, uint32_t cnt, PTPObjectHandles *handles, PTPObjectInfo **oinfos, /* size(handles->n) */ uint32_t **flags /* size(handles->n) */ ) { unsigned int i, j, nrofobs = 0, curob = 0; #define ISOBJECT(ptr) (dtoh32a((ptr)+ptp_canon_dir_storageid) == 0xffffffff) for (i=0;in = nrofobs; handles->Handler = calloc(nrofobs,sizeof(handles->Handler[0])); if (!handles->Handler) return PTP_RC_GeneralError; *oinfos = calloc(nrofobs,sizeof((*oinfos)[0])); if (!*oinfos) return PTP_RC_GeneralError; *flags = calloc(nrofobs,sizeof((*flags)[0])); if (!*flags) return PTP_RC_GeneralError; /* Migrate data into objects ids, handles into * the object handler array. */ curob = 0; for (i=0;iHandler[curob] = dtoh32a(cur + ptp_canon_dir_objectid); oi->StorageID = 0xffffffff; oi->ObjectFormat = dtoh16a(cur + ptp_canon_dir_ofc); oi->ParentObject = dtoh32a(cur + ptp_canon_dir_parentid); oi->Filename = strdup((char*)(cur + ptp_canon_dir_name)); oi->ObjectCompressedSize= dtoh32a(cur + ptp_canon_dir_size); oi->ThumbCompressedSize = dtoh32a(cur + ptp_canon_dir_thumbsize); oi->ImagePixWidth = dtoh32a(cur + ptp_canon_dir_width); oi->ImagePixHeight = dtoh32a(cur + ptp_canon_dir_height); oi->CaptureDate = oi->ModificationDate = dtoh32a(cur + ptp_canon_dir_unixtime); (*flags)[curob] = dtoh32a(cur + ptp_canon_dir_flags); curob++; } /* Walk over Storage ID entries and distribute the IDs to * the parent objects. */ for (i=0;in;j++) if (nextchild == handles->Handler[j]) break; if (j == handles->n) continue; (*oinfos)[j].StorageID = dtoh32a(cur + ptp_canon_dir_storageid); } /* Walk over all objects and distribute the storage ids */ while (1) { unsigned int changed = 0; for (i=0;in;j++) if (oid == handles->Handler[j]) break; if (j == handles->n) { /*fprintf(stderr,"did not find oid in lookup pass for current oid\n");*/ continue; } storageid = (*oinfos)[j].StorageID; if (storageid == 0xffffffff) continue; if (nextoid != 0xffffffff) { for (j=0;jn;j++) if (nextoid == handles->Handler[j]) break; if (j == handles->n) { /*fprintf(stderr,"did not find oid in lookup pass for next oid\n");*/ continue; } if ((*oinfos)[j].StorageID == 0xffffffff) { (*oinfos)[j].StorageID = storageid; changed++; } } if (nextchild != 0xffffffff) { for (j=0;jn;j++) if (nextchild == handles->Handler[j]) break; if (j == handles->n) { /*fprintf(stderr,"did not find oid in lookup pass for next child\n");*/ continue; } if ((*oinfos)[j].StorageID == 0xffffffff) { (*oinfos)[j].StorageID = storageid; changed++; } } } /* Check if we: * - changed no entry (nothing more to do) * - changed all of them at once (usually happens) * break if we do. */ if (!changed || (changed==nrofobs-1)) break; } #undef ISOBJECT return PTP_RC_OK; } libgphoto2-2.5.9/camlibs/ptp2/ptp.c0000644000175000001440000067756612620567470014027 00000000000000/* ptp.c * * Copyright (C) 2001-2004 Mariusz Woloszyn * Copyright (C) 2003-2012 Marcus Meissner * Copyright (C) 2006-2008 Linus Walleij * Copyright (C) 2007 Tero Saarni * Copyright (C) 2009 Axel Waggershauser * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _DEFAULT_SOURCE #include "config.h" #include "ptp.h" #ifdef HAVE_LIBXML2 # include #endif #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define CHECK_PTP_RC(RESULT) do { uint16_t r = (RESULT); if (r != PTP_RC_OK) return r; } while(0) static inline void ptp_init_container(PTPContainer* ptp, uint16_t code, int n_param, ...) { va_list args; int i; memset(ptp, 0, sizeof(*ptp)); ptp->Code = code; ptp->Nparam = n_param; va_start(args, n_param); for (i=0; iParam1)[i] = va_arg(args, uint32_t); va_end(args); } #define NARGS_SEQ(_1,_2,_3,_4,_5,_6,_7,_8,N,...) N #define NARGS(...) NARGS_SEQ(-1, ##__VA_ARGS__, 7, 6, 5, 4, 3, 2, 1, 0) #define PTP_CNT_INIT(PTP, CODE, ...) \ ptp_init_container(&PTP, CODE, NARGS(__VA_ARGS__), ##__VA_ARGS__) static uint16_t ptp_exit_recv_memory_handler (PTPDataHandler*,unsigned char**,unsigned long*); static uint16_t ptp_init_recv_memory_handler(PTPDataHandler*); static uint16_t ptp_init_send_memory_handler(PTPDataHandler*,unsigned char*,unsigned long len); static uint16_t ptp_exit_send_memory_handler (PTPDataHandler *handler); void ptp_debug (PTPParams *params, const char *format, ...) { va_list args; va_start (args, format); if (params->debug_func!=NULL) params->debug_func (params->data, format, args); else { vfprintf (stderr, format, args); fprintf (stderr,"\n"); fflush (stderr); } va_end (args); } void ptp_error (PTPParams *params, const char *format, ...) { va_list args; va_start (args, format); if (params->error_func!=NULL) params->error_func (params->data, format, args); else { vfprintf (stderr, format, args); fprintf (stderr,"\n"); fflush (stderr); } va_end (args); } /* Pack / unpack functions */ #include "ptp-pack.c" /* major PTP functions */ /** * ptp_transaction: * params: PTPParams* * PTPContainer* ptp - general ptp container * uint16_t flags - lower 8 bits - data phase description * unsigned int sendlen - senddata phase data length * char** data - send or receive data buffer pointer * int* recvlen - receive data length * * Performs PTP transaction. ptp is a PTPContainer with appropriate fields * filled in (i.e. operation code and parameters). It's up to caller to do * so. * The flags decide thether the transaction has a data phase and what is its * direction (send or receive). * If transaction is sending data the sendlen should contain its length in * bytes, otherwise it's ignored. * The data should contain an address of a pointer to data going to be sent * or is filled with such a pointer address if data are received depending * od dataphase direction (send or received) or is beeing ignored (no * dataphase). * The memory for a pointer should be preserved by the caller, if data are * beeing retreived the appropriate amount of memory is beeing allocated * (the caller should handle that!). * * Return values: Some PTP_RC_* code. * Upon success PTPContainer* ptp contains PTP Response Phase container with * all fields filled in. **/ uint16_t ptp_transaction_new (PTPParams* params, PTPContainer* ptp, uint16_t flags, uint64_t sendlen, PTPDataHandler *handler ) { int tries; uint16_t cmd; if ((params==NULL) || (ptp==NULL)) return PTP_ERROR_BADPARAM; cmd = ptp->Code; ptp->Transaction_ID=params->transaction_id++; ptp->SessionID=params->session_id; /* send request */ CHECK_PTP_RC(params->sendreq_func (params, ptp, flags)); /* is there a dataphase? */ switch (flags&PTP_DP_DATA_MASK) { case PTP_DP_SENDDATA: { uint16_t ret = params->senddata_func(params, ptp, sendlen, handler); if (ret == PTP_ERROR_CANCEL) CHECK_PTP_RC(params->cancelreq_func(params, params->transaction_id-1)); CHECK_PTP_RC(ret); } break; case PTP_DP_GETDATA: { uint16_t ret = params->getdata_func(params, ptp, handler); if (ret == PTP_ERROR_CANCEL) CHECK_PTP_RC(params->cancelreq_func(params, params->transaction_id-1)); CHECK_PTP_RC(ret); } break; case PTP_DP_NODATA: break; default: return PTP_ERROR_BADPARAM; } tries = 3; while (tries--) { uint16_t ret; /* get response */ ret = params->getresp_func(params, ptp); if (ret == PTP_ERROR_RESP_EXPECTED) { ptp_debug (params,"PTP: response expected but not got, retrying."); tries++; continue; } CHECK_PTP_RC(ret); if (ptp->Transaction_ID < params->transaction_id-1) { /* The Leica uses Transaction ID 0 on result from CloseSession. */ if (cmd == PTP_OC_CloseSession) break; tries++; ptp_debug (params, "PTP: Sequence number mismatch %d vs expected %d, suspecting old reply.", ptp->Transaction_ID, params->transaction_id-1 ); continue; } if (ptp->Transaction_ID != params->transaction_id-1) { /* try to clean up potential left overs from previous session */ if ((cmd == PTP_OC_OpenSession) && tries) continue; ptp_error (params, "PTP: Sequence number mismatch %d vs expected %d.", ptp->Transaction_ID, params->transaction_id-1 ); return PTP_ERROR_BADPARAM; } break; } return ptp->Code; } /* memory data get/put handler */ typedef struct { unsigned char *data; unsigned long size, curoff; } PTPMemHandlerPrivate; static uint16_t memory_getfunc(PTPParams* params, void* private, unsigned long wantlen, unsigned char *data, unsigned long *gotlen ) { PTPMemHandlerPrivate* priv = (PTPMemHandlerPrivate*)private; unsigned long tocopy = wantlen; if (priv->curoff + tocopy > priv->size) tocopy = priv->size - priv->curoff; memcpy (data, priv->data + priv->curoff, tocopy); priv->curoff += tocopy; *gotlen = tocopy; return PTP_RC_OK; } static uint16_t memory_putfunc(PTPParams* params, void* private, unsigned long sendlen, unsigned char *data ) { PTPMemHandlerPrivate* priv = (PTPMemHandlerPrivate*)private; if (priv->curoff + sendlen > priv->size) { priv->data = realloc (priv->data, priv->curoff+sendlen); if (!priv->data) return PTP_RC_GeneralError; priv->size = priv->curoff + sendlen; } memcpy (priv->data + priv->curoff, data, sendlen); priv->curoff += sendlen; return PTP_RC_OK; } /* init private struct for receiving data. */ static uint16_t ptp_init_recv_memory_handler(PTPDataHandler *handler) { PTPMemHandlerPrivate* priv; priv = malloc (sizeof(PTPMemHandlerPrivate)); if (!priv) return PTP_RC_GeneralError; handler->priv = priv; handler->getfunc = memory_getfunc; handler->putfunc = memory_putfunc; priv->data = NULL; priv->size = 0; priv->curoff = 0; return PTP_RC_OK; } /* init private struct and put data in for sending data. * data is still owned by caller. */ static uint16_t ptp_init_send_memory_handler(PTPDataHandler *handler, unsigned char *data, unsigned long len ) { PTPMemHandlerPrivate* priv; priv = malloc (sizeof(PTPMemHandlerPrivate)); if (!priv) return PTP_RC_GeneralError; handler->priv = priv; handler->getfunc = memory_getfunc; handler->putfunc = memory_putfunc; priv->data = data; priv->size = len; priv->curoff = 0; return PTP_RC_OK; } /* free private struct + data */ static uint16_t ptp_exit_send_memory_handler (PTPDataHandler *handler) { PTPMemHandlerPrivate* priv = (PTPMemHandlerPrivate*)handler->priv; /* data is owned by caller */ free (priv); return PTP_RC_OK; } /* hand over our internal data to caller */ static uint16_t ptp_exit_recv_memory_handler (PTPDataHandler *handler, unsigned char **data, unsigned long *size ) { PTPMemHandlerPrivate* priv = (PTPMemHandlerPrivate*)handler->priv; *data = priv->data; *size = priv->size; free (priv); return PTP_RC_OK; } /* fd data get/put handler */ typedef struct { int fd; } PTPFDHandlerPrivate; static uint16_t fd_getfunc(PTPParams* params, void* private, unsigned long wantlen, unsigned char *data, unsigned long *gotlen ) { PTPFDHandlerPrivate* priv = (PTPFDHandlerPrivate*)private; int got; got = read (priv->fd, data, wantlen); if (got != -1) *gotlen = got; else return PTP_RC_GeneralError; return PTP_RC_OK; } static uint16_t fd_putfunc(PTPParams* params, void* private, unsigned long sendlen, unsigned char *data ) { ssize_t written; PTPFDHandlerPrivate* priv = (PTPFDHandlerPrivate*)private; written = write (priv->fd, data, sendlen); if (written != sendlen) return PTP_ERROR_IO; return PTP_RC_OK; } static uint16_t ptp_init_fd_handler(PTPDataHandler *handler, int fd) { PTPFDHandlerPrivate* priv; priv = malloc (sizeof(PTPFDHandlerPrivate)); if (!priv) return PTP_RC_GeneralError; handler->priv = priv; handler->getfunc = fd_getfunc; handler->putfunc = fd_putfunc; priv->fd = fd; return PTP_RC_OK; } static uint16_t ptp_exit_fd_handler (PTPDataHandler *handler) { PTPFDHandlerPrivate* priv = (PTPFDHandlerPrivate*)handler->priv; free (priv); return PTP_RC_OK; } /* Old style transaction, based on memory */ /* A note on memory management: * If called with the flag PTP_DP_GETDATA, this function will internally * allocate memory as much as necessary. The caller has to free the memory * returned in *data. If the function returns an error, it will free any * memory it might have allocated. The recvlen may be NULL. After the * function returns, *data will be initialized (valid memory pointer or NULL), * i.e. it is not necessary to initialize *data or *recvlen beforehand. */ uint16_t ptp_transaction (PTPParams* params, PTPContainer* ptp, uint16_t flags, uint64_t sendlen, unsigned char **data, unsigned int *recvlen ) { PTPDataHandler handler; uint16_t ret; switch (flags & PTP_DP_DATA_MASK) { case PTP_DP_SENDDATA: if (!data) return PTP_ERROR_BADPARAM; CHECK_PTP_RC(ptp_init_send_memory_handler (&handler, *data, sendlen)); break; case PTP_DP_GETDATA: if (!data) return PTP_ERROR_BADPARAM; *data = NULL; if (recvlen) *recvlen = 0; CHECK_PTP_RC(ptp_init_recv_memory_handler (&handler)); break; default:break; } ret = ptp_transaction_new (params, ptp, flags, sendlen, &handler); switch (flags & PTP_DP_DATA_MASK) { case PTP_DP_SENDDATA: ptp_exit_send_memory_handler (&handler); break; case PTP_DP_GETDATA: { unsigned long len; ptp_exit_recv_memory_handler (&handler, data, &len); if (ret != PTP_RC_OK) { len = 0; free(*data); *data = NULL; } if (recvlen) *recvlen = len; break; } default:break; } return ret; } /** * PTP operation functions * * all ptp_ functions should take integer parameters * in host byte order! **/ /** * ptp_getdeviceinfo: * params: PTPParams* * * Gets device info dataset and fills deviceinfo structure. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getdeviceinfo (PTPParams* params, PTPDeviceInfo* deviceinfo) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_GetDeviceInfo); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); ptp_unpack_DI(params, data, deviceinfo, size); free(data); return PTP_RC_OK; } uint16_t ptp_canon_eos_getdeviceinfo (PTPParams* params, PTPCanonEOSDeviceInfo*di) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_GetDeviceInfoEx); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); ptp_unpack_EOS_DI(params, data, di, size); free (data); return PTP_RC_OK; } #ifdef HAVE_LIBXML2 static int traverse_tree (PTPParams *params, int depth, xmlNodePtr node) { xmlNodePtr next; xmlChar *xchar; int n; char *xx; if (!node) return 0; xx = malloc (depth * 4 + 1); memset (xx, ' ', depth*4); xx[depth*4] = 0; n = xmlChildElementCount (node); next = node; do { fprintf(stderr,"%snode %s\n", xx,next->name); fprintf(stderr,"%selements %d\n", xx,n); xchar = xmlNodeGetContent (next); fprintf(stderr,"%scontent %s\n", xx,xchar); traverse_tree (params, depth+1,xmlFirstElementChild (next)); } while ((next = xmlNextElementSibling (next))); free (xx); return PTP_RC_OK; } static int parse_9301_cmd_tree (PTPParams *params, xmlNodePtr node, PTPDeviceInfo *di) { xmlNodePtr next; int cnt; cnt = 0; next = xmlFirstElementChild (node); while (next) { cnt++; next = xmlNextElementSibling (next); } di->OperationsSupported_len = cnt; di->OperationsSupported = malloc (cnt*sizeof(di->OperationsSupported[0])); cnt = 0; next = xmlFirstElementChild (node); while (next) { unsigned int p; sscanf((char*)next->name, "c%04x", &p); ptp_debug( params, "cmd %s / 0x%04x", next->name, p); di->OperationsSupported[cnt++] = p; next = xmlNextElementSibling (next); } return PTP_RC_OK; } static int parse_9301_value (PTPParams *params, const char *str, uint16_t type, PTPPropertyValue *propval) { switch (type) { case 6: { /*UINT32*/ unsigned int x; if (!sscanf(str,"%08x", &x)) { ptp_debug( params, "could not parse uint32 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->u32 = x; break; } case 5: { /*INT32*/ int x; if (!sscanf(str,"%08x", &x)) { ptp_debug( params, "could not parse int32 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->i32 = x; break; } case 4: { /*UINT16*/ unsigned int x; if (!sscanf(str,"%04x", &x)) { ptp_debug( params, "could not parse uint16 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->u16 = x; break; } case 3: { /*INT16*/ int x; if (!sscanf(str,"%04x", &x)) { ptp_debug( params, "could not parse int16 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->i16 = x; break; } case 2: { /*UINT8*/ unsigned int x; if (!sscanf(str,"%02x", &x)) { ptp_debug( params, "could not parse uint8 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->u8 = x; break; } case 1: { /*INT8*/ int x; if (!sscanf(str,"%02x", &x)) { ptp_debug( params, "could not parse int8 %s", str); return PTP_RC_GeneralError; } ptp_debug( params, "\t%d", x); propval->i8 = x; break; } case 65535: { /* string */ int len; /* ascii ptp string, 1 byte length, little endian 16 bit chars */ if (sscanf(str,"%02x", &len)) { int i; char *xstr = malloc(len+1); for (i=0;i>8) & 0xff) | ((xc & 0xff) << 8); xstr[i] = cx; } xstr[len] = 0; } ptp_debug( params, "\t%s", xstr); propval->str = xstr; break; } ptp_debug( params, "string %s not parseable!", str); return PTP_RC_GeneralError; } case 7: /*INT64*/ case 8: /*UINT64*/ case 9: /*INT128*/ case 10: /*UINT128*/ default: ptp_debug( params, "unhandled data type %d!", type); return PTP_RC_GeneralError; } return PTP_RC_OK; } static int parse_9301_propdesc (PTPParams *params, xmlNodePtr next, PTPDevicePropDesc *dpd) { int type = -1; if (!next) return PTP_RC_GeneralError; ptp_debug (params, "parse_9301_propdesc"); dpd->FormFlag = PTP_DPFF_None; dpd->GetSet = PTP_DPGS_Get; do { if (!strcmp((char*)next->name,"type")) { /* propdesc.DataType */ if (!sscanf((char*)xmlNodeGetContent (next), "%04x", &type)) { ptp_debug( params, "\ttype %s not parseable?",xmlNodeGetContent (next)); return 0; } ptp_debug( params, "type 0x%x", type); dpd->DataType = type; continue; } if (!strcmp((char*)next->name,"attribute")) { /* propdesc.GetSet */ int attr; if (!sscanf((char*)xmlNodeGetContent (next), "%02x", &attr)) { ptp_debug( params, "\tattr %s not parseable",xmlNodeGetContent (next)); return 0; } ptp_debug( params, "attribute 0x%x", attr); dpd->GetSet = attr; continue; } if (!strcmp((char*)next->name,"default")) { /* propdesc.FactoryDefaultValue */ ptp_debug( params, "default value"); parse_9301_value (params, (char*)xmlNodeGetContent (next), type, &dpd->FactoryDefaultValue); continue; } if (!strcmp((char*)next->name,"value")) { /* propdesc.CurrentValue */ ptp_debug( params, "current value"); parse_9301_value (params, (char*)xmlNodeGetContent (next), type, &dpd->CurrentValue); continue; } if (!strcmp((char*)next->name,"enum")) { /* propdesc.FORM.Enum */ int n,i; char *s; ptp_debug( params, "enum"); dpd->FormFlag = PTP_DPFF_Enumeration; s = (char*)xmlNodeGetContent (next); n = 0; do { s = strchr(s,' '); if (s) s++; n++; } while (s); dpd->FORM.Enum.NumberOfValues = n; dpd->FORM.Enum.SupportedValue = malloc (n * sizeof(PTPPropertyValue)); s = (char*)xmlNodeGetContent (next); i = 0; do { parse_9301_value (params, s, type, &dpd->FORM.Enum.SupportedValue[i]); /* should turn ' ' into \0? */ i++; s = strchr(s,' '); if (s) s++; } while (s && (iname,"range")) { /* propdesc.FORM.Enum */ char *s = (char*)xmlNodeGetContent (next); dpd->FormFlag = PTP_DPFF_Range; ptp_debug( params, "range"); parse_9301_value (params, s, type, &dpd->FORM.Range.MinimumValue); /* should turn ' ' into \0? */ s = strchr(s,' '); if (!s) continue; s++; parse_9301_value (params, s, type, &dpd->FORM.Range.MaximumValue); /* should turn ' ' into \0? */ s = strchr(s,' '); if (!s) continue; s++; parse_9301_value (params, s, type, &dpd->FORM.Range.StepSize); /* should turn ' ' into \0? */ continue; } ptp_debug (params, "\tpropdescvar: %s", next->name); traverse_tree (params, 3, next); } while ((next = xmlNextElementSibling (next))); return PTP_RC_OK; } static int parse_9301_prop_tree (PTPParams *params, xmlNodePtr node, PTPDeviceInfo *di) { xmlNodePtr next; int cnt; unsigned int i; cnt = 0; next = xmlFirstElementChild (node); while (next) { cnt++; next = xmlNextElementSibling (next); } di->DevicePropertiesSupported_len = cnt; di->DevicePropertiesSupported = malloc (cnt*sizeof(di->DevicePropertiesSupported[0])); cnt = 0; next = xmlFirstElementChild (node); while (next) { unsigned int p; PTPDevicePropDesc dpd; sscanf((char*)next->name, "p%04x", &p); ptp_debug( params, "prop %s / 0x%04x", next->name, p); parse_9301_propdesc (params, xmlFirstElementChild (next), &dpd); dpd.DevicePropertyCode = p; di->DevicePropertiesSupported[cnt++] = p; /* add to cache of device propdesc */ for (i=0;inrofdeviceproperties;i++) if (params->deviceproperties[i].desc.DevicePropertyCode == p) break; if (i == params->nrofdeviceproperties) { params->deviceproperties = realloc(params->deviceproperties,(i+1)*sizeof(params->deviceproperties[0])); memset(¶ms->deviceproperties[i],0,sizeof(params->deviceproperties[0])); params->nrofdeviceproperties++; } else { ptp_free_devicepropdesc (¶ms->deviceproperties[i].desc); } /* FIXME: free old entry */ /* we are not using dpd, so copy it directly to the cache */ time( ¶ms->deviceproperties[i].timestamp); params->deviceproperties[i].desc = dpd; next = xmlNextElementSibling (next); } return PTP_RC_OK; } static int parse_9301_event_tree (PTPParams *params, xmlNodePtr node, PTPDeviceInfo *di) { xmlNodePtr next; int cnt; cnt = 0; next = xmlFirstElementChild (node); while (next) { cnt++; next = xmlNextElementSibling (next); } di->EventsSupported_len = cnt; di->EventsSupported = malloc (cnt*sizeof(di->EventsSupported[0])); cnt = 0; next = xmlFirstElementChild (node); while (next) { unsigned int p; sscanf((char*)next->name, "e%04x", &p); ptp_debug( params, "event %s / 0x%04x", next->name, p); di->EventsSupported[cnt++] = p; next = xmlNextElementSibling (next); } return PTP_RC_OK; } static int parse_9301_tree (PTPParams *params, xmlNodePtr node, PTPDeviceInfo *di) { xmlNodePtr next; next = xmlFirstElementChild (node); while (next) { if (!strcmp ((char*)next->name, "cmd")) { parse_9301_cmd_tree (params, next, di); next = xmlNextElementSibling (next); continue; } if (!strcmp ((char*)next->name, "prop")) { parse_9301_prop_tree (params, next, di); next = xmlNextElementSibling (next); continue; } if (!strcmp ((char*)next->name, "event")) { parse_9301_event_tree (params, next, di); next = xmlNextElementSibling (next); continue; } fprintf (stderr,"9301: unhandled type %s\n", next->name); next = xmlNextElementSibling (next); } /*traverse_tree (0, node);*/ return PTP_RC_OK; } static uint16_t ptp_olympus_parse_output_xml(PTPParams* params, char*data, int len, xmlNodePtr *code) { xmlDocPtr docin; xmlNodePtr docroot, output, next; int result, xcode; *code = NULL; docin = xmlReadMemory ((char*)data, len, "http://gphoto.org/", "utf-8", 0); if (!docin) return PTP_RC_GeneralError; docroot = xmlDocGetRootElement (docin); if (!docroot) { xmlFreeDoc (docin); return PTP_RC_GeneralError; } if (strcmp((char*)docroot->name,"x3c")) { ptp_debug (params, "olympus: docroot is not x3c, but %s", docroot->name); xmlFreeDoc (docin); return PTP_RC_GeneralError; } if (xmlChildElementCount(docroot) != 1) { ptp_debug (params, "olympus: x3c: expected 1 child, got %ld", xmlChildElementCount(docroot)); xmlFreeDoc (docin); return PTP_RC_GeneralError; } output = xmlFirstElementChild (docroot); if (strcmp((char*)output->name, "output") != 0) { ptp_debug (params, "olympus: x3c node: expected child 'output', but got %s", (char*)output->name); xmlFreeDoc (docin); return PTP_RC_GeneralError; } next = xmlFirstElementChild (output); result = PTP_RC_GeneralError; while (next) { if (!strcmp((char*)next->name,"result")) { xmlChar *xchar; xchar = xmlNodeGetContent (next); if (!sscanf((char*)xchar,"%04x",&result)) ptp_debug (params, "failed scanning result from %s", xchar); ptp_debug (params, "ptp result is 0x%04x", result); next = xmlNextElementSibling (next); continue; } if (sscanf((char*)next->name,"c%x", &xcode)) { ptp_debug (params, "ptp code node found %s", (char*)next->name); *code = next; next = xmlNextElementSibling (next); continue; } ptp_debug (params, "unhandled node %s", (char*)next->name); next = xmlNextElementSibling (next); } if (result != PTP_RC_OK) { *code = NULL; xmlFreeDoc (docin); } return result; } #endif uint16_t ptp_olympus_getdeviceinfo (PTPParams* params, PTPDeviceInfo *di) { #ifdef HAVE_LIBXML2 PTPContainer ptp; uint16_t ret; unsigned char *data; unsigned int size; xmlNodePtr code; memset (di, 0, sizeof(PTPDeviceInfo)); PTP_CNT_INIT(ptp, PTP_OC_OLYMPUS_GetDeviceInfo); ret=ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size); /* TODO: check for error, only parse_output_xml if ret == PTP_RC_OK? * where is 'data' going to be deallocated? */ ret = ptp_olympus_parse_output_xml(params,(char*)data,size,&code); if (ret != PTP_RC_OK) return ret; ret = parse_9301_tree (params, code, di); xmlFreeDoc(code->doc); return ret; #else return PTP_RC_GeneralError; #endif } uint16_t ptp_olympus_opensession (PTPParams* params, unsigned char**data, unsigned int *len) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_OLYMPUS_OpenSession); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, len); } uint16_t ptp_olympus_getcameraid (PTPParams* params, unsigned char**data, unsigned int *len) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_OLYMPUS_GetCameraID); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, len); } /** * ptp_generic_no_data: * params: PTPParams* * code PTP OP Code * n_param count of parameters * ... variable argument list ... * * Emits a generic PTP command without any data transfer. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_generic_no_data (PTPParams* params, uint16_t code, unsigned int n_param, ...) { PTPContainer ptp; va_list args; unsigned int i; if( n_param > 5 ) return PTP_ERROR_BADPARAM; memset(&ptp, 0, sizeof(ptp)); ptp.Code=code; ptp.Nparam=n_param; va_start(args, n_param); for( i=0; isession_id=0x00000000; /* TransactionID should be set to 0 also! */ params->transaction_id=0x0000000; /* zero out response packet buffer */ params->response_packet = NULL; params->response_packet_size = 0; /* no split headers */ params->split_header_data = 0; PTP_CNT_INIT(ptp, PTP_OC_OpenSession, session); ret=ptp_transaction_new(params, &ptp, PTP_DP_NODATA, 0, NULL); /* TODO: check for error */ /* now set the global session id to current session number */ params->session_id=session; return ret; } void ptp_free_devicepropvalue(uint16_t dt, PTPPropertyValue* dpd) { switch (dt) { case PTP_DTC_INT8: case PTP_DTC_UINT8: case PTP_DTC_UINT16: case PTP_DTC_INT16: case PTP_DTC_UINT32: case PTP_DTC_INT32: case PTP_DTC_UINT64: case PTP_DTC_INT64: case PTP_DTC_UINT128: case PTP_DTC_INT128: /* Nothing to free */ break; case PTP_DTC_AINT8: case PTP_DTC_AUINT8: case PTP_DTC_AUINT16: case PTP_DTC_AINT16: case PTP_DTC_AUINT32: case PTP_DTC_AINT32: case PTP_DTC_AUINT64: case PTP_DTC_AINT64: case PTP_DTC_AUINT128: case PTP_DTC_AINT128: free(dpd->a.v); break; case PTP_DTC_STR: free(dpd->str); break; } } void ptp_free_devicepropdesc(PTPDevicePropDesc* dpd) { uint16_t i; ptp_free_devicepropvalue (dpd->DataType, &dpd->FactoryDefaultValue); ptp_free_devicepropvalue (dpd->DataType, &dpd->CurrentValue); switch (dpd->FormFlag) { case PTP_DPFF_Range: ptp_free_devicepropvalue (dpd->DataType, &dpd->FORM.Range.MinimumValue); ptp_free_devicepropvalue (dpd->DataType, &dpd->FORM.Range.MaximumValue); ptp_free_devicepropvalue (dpd->DataType, &dpd->FORM.Range.StepSize); break; case PTP_DPFF_Enumeration: if (dpd->FORM.Enum.SupportedValue) { for (i=0;iFORM.Enum.NumberOfValues;i++) ptp_free_devicepropvalue (dpd->DataType, dpd->FORM.Enum.SupportedValue+i); free (dpd->FORM.Enum.SupportedValue); } } dpd->DataType = PTP_DTC_UNDEF; dpd->FormFlag = PTP_DPFF_None; } void ptp_free_objectpropdesc(PTPObjectPropDesc* opd) { uint16_t i; ptp_free_devicepropvalue (opd->DataType, &opd->FactoryDefaultValue); switch (opd->FormFlag) { case PTP_OPFF_None: break; case PTP_OPFF_Range: ptp_free_devicepropvalue (opd->DataType, &opd->FORM.Range.MinimumValue); ptp_free_devicepropvalue (opd->DataType, &opd->FORM.Range.MaximumValue); ptp_free_devicepropvalue (opd->DataType, &opd->FORM.Range.StepSize); break; case PTP_OPFF_Enumeration: if (opd->FORM.Enum.SupportedValue) { for (i=0;iFORM.Enum.NumberOfValues;i++) ptp_free_devicepropvalue (opd->DataType, opd->FORM.Enum.SupportedValue+i); free (opd->FORM.Enum.SupportedValue); } break; case PTP_OPFF_DateTime: case PTP_OPFF_FixedLengthArray: case PTP_OPFF_RegularExpression: case PTP_OPFF_ByteArray: case PTP_OPFF_LongString: /* Ignore these presently, we cannot unpack them, so there is nothing to be freed. */ break; default: fprintf (stderr, "Unknown OPFF type %d\n", opd->FormFlag); break; } } /** * ptp_free_params: * params: PTPParams* * * Frees all data within the PTPParams struct. * * Return values: Some PTP_RC_* code. **/ void ptp_free_params (PTPParams *params) { unsigned int i; free (params->cameraname); free (params->wifi_profiles); for (i=0;inrofobjects;i++) ptp_free_object (¶ms->objects[i]); free (params->objects); free (params->events); for (i=0;inrofcanon_props;i++) { free (params->canon_props[i].data); ptp_free_devicepropdesc (¶ms->canon_props[i].dpd); } free (params->canon_props); free (params->backlogentries); for (i=0;inrofdeviceproperties;i++) ptp_free_devicepropdesc (¶ms->deviceproperties[i].desc); free (params->deviceproperties); ptp_free_DI (¶ms->deviceinfo); } /** * ptp_getststorageids: * params: PTPParams* * * Gets array of StorageIDs and fills the storageids structure. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getstorageids (PTPParams* params, PTPStorageIDs* storageids) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_GetStorageIDs); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); ptp_unpack_SIDs(params, data, storageids, size); free(data); return PTP_RC_OK; } /** * ptp_getststorageinfo: * params: PTPParams* * storageid - StorageID * * Gets StorageInfo dataset of desired storage and fills storageinfo * structure. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getstorageinfo (PTPParams* params, uint32_t storageid, PTPStorageInfo* storageinfo) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_GetStorageInfo, storageid); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); ptp_unpack_SI(params, data, storageinfo, size); free(data); return PTP_RC_OK; } /** * ptp_getobjecthandles: * params: PTPParams* * storage - StorageID * objectformatcode - ObjectFormatCode (optional) * associationOH - ObjectHandle of Association for * wich a list of children is desired * (optional) * objecthandles - pointer to structute * * Fills objecthandles with structure returned by device. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getobjecthandles (PTPParams* params, uint32_t storage, uint32_t objectformatcode, uint32_t associationOH, PTPObjectHandles* objecthandles) { PTPContainer ptp; uint16_t ret; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_GetObjectHandles, storage, objectformatcode, associationOH); ret=ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size); if (ret == PTP_RC_OK) { ptp_unpack_OH(params, data, objecthandles, size); } else { if ( (storage == 0xffffffff) && (objectformatcode == 0) && (associationOH == 0) ) { /* When we query all object handles on all stores and * get an error -> just handle it as "0 handles". */ objecthandles->Handler = NULL; objecthandles->n = 0; ret = PTP_RC_OK; } } free(data); return ret; } uint16_t ptp_getfilesystemmanifest (PTPParams* params, uint32_t storage, uint32_t objectformatcode, uint32_t associationOH, unsigned char** data) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_GetFilesystemManifest, storage, objectformatcode, associationOH); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, NULL); } /** * ptp_getnumobjects: * params: PTPParams* * storage - StorageID * objectformatcode - ObjectFormatCode (optional) * associationOH - ObjectHandle of Association for * wich a list of children is desired * (optional) * numobs - pointer to uint32_t that takes number of objects * * Fills numobs with number of objects on device. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getnumobjects (PTPParams* params, uint32_t storage, uint32_t objectformatcode, uint32_t associationOH, uint32_t* numobs) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_GetNumObjects, storage, objectformatcode, associationOH); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); if (ptp.Nparam >= 1) *numobs = ptp.Param1; else return PTP_RC_GeneralError; return PTP_RC_OK; } /** * ptp_eos_bulbstart: * params: PTPParams* * * Starts EOS Bulb capture. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_canon_eos_bulbstart (PTPParams* params) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_BulbStart); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); if ((ptp.Nparam >= 1) && ((ptp.Param1 & 0x7000) == 0x2000)) return ptp.Param1; return PTP_RC_OK; } /** * ptp_eos_capture: * params: PTPParams* * uint32_t* result * * This starts a EOS400D style capture. You have to use the * get_eos_events to find out what resulted. * The return value is "0" for all OK, and "1" for capture failed. (not fully confirmed) * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_canon_eos_capture (PTPParams* params, uint32_t *result) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_RemoteRelease); *result = 0; CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); if (ptp.Nparam >= 1) *result = ptp.Param1; return PTP_RC_OK; } /** * ptp_canon_eos_bulbend: * params: PTPParams* * * Starts EOS Bulb capture. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_canon_eos_bulbend (PTPParams* params) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_BulbEnd); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); if ((ptp.Nparam >= 1) && ((ptp.Param1 & 0x7000) == 0x2000)) return ptp.Param1; return PTP_RC_OK; } /** * ptp_getobjectinfo: * params: PTPParams* * handle - Object handle * objectinfo - pointer to objectinfo that is returned * * Get objectinfo structure for handle from device. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getobjectinfo (PTPParams* params, uint32_t handle, PTPObjectInfo* objectinfo) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_GetObjectInfo, handle); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); ptp_unpack_OI(params, data, objectinfo, size); free(data); return PTP_RC_OK; } /** * ptp_getobject: * params: PTPParams* * handle - Object handle * object - pointer to data area * * Get object 'handle' from device and store the data in newly * allocated 'object'. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getobject (PTPParams* params, uint32_t handle, unsigned char** object) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_GetObject, handle); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, object, NULL); } /** * ptp_getobject_to_handler: * params: PTPParams* * handle - Object handle * PTPDataHandler* - pointer datahandler * * Get object 'handle' from device and store the data in newly * allocated 'object'. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getobject_to_handler (PTPParams* params, uint32_t handle, PTPDataHandler *handler) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_GetObject, handle); return ptp_transaction_new(params, &ptp, PTP_DP_GETDATA, 0, handler); } /** * ptp_getobject_tofd: * params: PTPParams* * handle - Object handle * fd - File descriptor to write() to * * Get object 'handle' from device and write the data to the * given file descriptor. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getobject_tofd (PTPParams* params, uint32_t handle, int fd) { PTPContainer ptp; PTPDataHandler handler; uint16_t ret; PTP_CNT_INIT(ptp, PTP_OC_GetObject, handle); ptp_init_fd_handler (&handler, fd); ret = ptp_transaction_new(params, &ptp, PTP_DP_GETDATA, 0, &handler); ptp_exit_fd_handler (&handler); return ret; } /** * ptp_getpartialobject: * params: PTPParams* * handle - Object handle * offset - Offset into object * maxbytes - Maximum of bytes to read * object - pointer to data area * len - pointer to returned length * * Get object 'handle' from device and store the data in newly * allocated 'object'. Start from offset and read at most maxbytes. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getpartialobject (PTPParams* params, uint32_t handle, uint32_t offset, uint32_t maxbytes, unsigned char** object, uint32_t *len) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_GetPartialObject, handle, offset, maxbytes); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, object, len); } /** * ptp_getpartialobject_to_handler: * params: PTPParams* * handle - Object handle * offset - Offset into object * maxbytes - Maximum of bytes to read * handler - a ptp data handler * * Get object 'handle' from device and send the data to the * data handler. Start from offset and read at most maxbytes. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getpartialobject_to_handler (PTPParams* params, uint32_t handle, uint32_t offset, uint32_t maxbytes, PTPDataHandler *handler) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_GetPartialObject, handle, offset, maxbytes); return ptp_transaction_new(params, &ptp, PTP_DP_GETDATA, 0, handler); } /** * ptp_getthumb: * params: PTPParams* * handle - Object handle * object - pointer to data area * * Get thumb for object 'handle' from device and store the data in newly * allocated 'object'. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_getthumb (PTPParams* params, uint32_t handle, unsigned char** object, unsigned int *len) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_GetThumb, handle); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, object, len); } /** * ptp_deleteobject: * params: PTPParams* * handle - object handle * ofc - object format code (optional) * * Deletes desired objects. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_deleteobject (PTPParams* params, uint32_t handle, uint32_t ofc) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_DeleteObject, handle, ofc); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); /* If the object is cached and could be removed, cleanse cache. */ ptp_remove_object_from_cache(params, handle); return PTP_RC_OK; } /** * ptp_sendobjectinfo: * params: PTPParams* * uint32_t* store - destination StorageID on Responder * uint32_t* parenthandle - Parent ObjectHandle on responder * uint32_t* handle - see Return values * PTPObjectInfo* objectinfo- ObjectInfo that is to be sent * * Sends ObjectInfo of file that is to be sent via SendFileObject. * * Return values: Some PTP_RC_* code. * Upon success : uint32_t* store - Responder StorageID in which * object will be stored * uint32_t* parenthandle- Responder Parent ObjectHandle * in which the object will be stored * uint32_t* handle - Responder's reserved ObjectHandle * for the incoming object **/ uint16_t ptp_sendobjectinfo (PTPParams* params, uint32_t* store, uint32_t* parenthandle, uint32_t* handle, PTPObjectInfo* objectinfo) { PTPContainer ptp; uint16_t ret; unsigned char *data = NULL; uint32_t size; PTP_CNT_INIT(ptp, PTP_OC_SendObjectInfo, *store, *parenthandle); size = ptp_pack_OI(params, objectinfo, &data); ret = ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); free(data); *store=ptp.Param1; *parenthandle=ptp.Param2; *handle=ptp.Param3; return ret; } /** * ptp_sendobject: * params: PTPParams* * char* object - contains the object that is to be sent * uint64_t size - object size * * Sends object to Responder. * * Return values: Some PTP_RC_* code. * */ uint16_t ptp_sendobject (PTPParams* params, unsigned char* object, uint64_t size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_SendObject); return ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &object, NULL); } /** * ptp_sendobject_from_handler: * params: PTPParams* * PTPDataHandler* - File descriptor to read() object from * uint64_t size - File/object size * * Sends object from file descriptor by consecutive reads from this * descriptor. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_sendobject_from_handler (PTPParams* params, PTPDataHandler *handler, uint64_t size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_SendObject); return ptp_transaction_new(params, &ptp, PTP_DP_SENDDATA, size, handler); } /** * ptp_sendobject_fromfd: * params: PTPParams* * fd - File descriptor to read() object from * uint64_t size - File/object size * * Sends object from file descriptor by consecutive reads from this * descriptor. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_sendobject_fromfd (PTPParams* params, int fd, uint64_t size) { PTPContainer ptp; PTPDataHandler handler; uint16_t ret; PTP_CNT_INIT(ptp, PTP_OC_SendObject); ptp_init_fd_handler (&handler, fd); ret = ptp_transaction_new(params, &ptp, PTP_DP_SENDDATA, size, &handler); ptp_exit_fd_handler (&handler); return ret; } #define PROPCACHE_TIMEOUT 5 /* seconds */ uint16_t ptp_getdevicepropdesc (PTPParams* params, uint16_t propcode, PTPDevicePropDesc* devicepropertydesc) { PTPContainer ptp; uint16_t ret = PTP_RC_OK; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_GetDevicePropDesc, propcode); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); if (params->device_flags & DEVICE_FLAG_OLYMPUS_XML_WRAPPED) { #ifdef HAVE_LIBXML2 xmlNodePtr code; ret = ptp_olympus_parse_output_xml (params,(char*)data,size,&code); if (ret == PTP_RC_OK) { int x; if ( (xmlChildElementCount(code) == 1) && (!strcmp((char*)code->name,"c1014")) ) { code = xmlFirstElementChild (code); if ( (sscanf((char*)code->name,"p%x", &x)) && (x == propcode) ) { ret = parse_9301_propdesc (params, xmlFirstElementChild (code), devicepropertydesc); xmlFreeDoc(code->doc); } } } else { ptp_debug(params,"failed to parse output xml, ret %x?", ret); } #endif } else { ptp_unpack_DPD(params, data, devicepropertydesc, size); } free(data); return ret; } uint16_t ptp_getdevicepropvalue (PTPParams* params, uint16_t propcode, PTPPropertyValue* value, uint16_t datatype) { PTPContainer ptp; unsigned char *data; unsigned int size, offset = 0; uint16_t ret; PTP_CNT_INIT(ptp, PTP_OC_GetDevicePropValue, propcode); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); ret = ptp_unpack_DPV(params, data, &offset, size, value, datatype) ? PTP_RC_OK : PTP_RC_GeneralError; if (ret != PTP_RC_OK) ptp_debug (params, "ptp_getdevicepropvalue: unpacking DPV failed"); free(data); return ret; } uint16_t ptp_setdevicepropvalue (PTPParams* params, uint16_t propcode, PTPPropertyValue *value, uint16_t datatype) { PTPContainer ptp; uint16_t ret; unsigned char *data = NULL; uint32_t size; PTP_CNT_INIT(ptp, PTP_OC_SetDevicePropValue, propcode); size=ptp_pack_DPV(params, value, &data, datatype); ret=ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); free(data); return ret; } /** * ptp_ek_sendfileobjectinfo: * params: PTPParams* * uint32_t* store - destination StorageID on Responder * uint32_t* parenthandle - Parent ObjectHandle on responder * uint32_t* handle - see Return values * PTPObjectInfo* objectinfo- ObjectInfo that is to be sent * * Sends ObjectInfo of file that is to be sent via SendFileObject. * * Return values: Some PTP_RC_* code. * Upon success : uint32_t* store - Responder StorageID in which * object will be stored * uint32_t* parenthandle- Responder Parent ObjectHandle * in which the object will be stored * uint32_t* handle - Responder's reserved ObjectHandle * for the incoming object **/ uint16_t ptp_ek_sendfileobjectinfo (PTPParams* params, uint32_t* store, uint32_t* parenthandle, uint32_t* handle, PTPObjectInfo* objectinfo) { PTPContainer ptp; uint16_t ret; unsigned char *data = NULL; uint32_t size; PTP_CNT_INIT(ptp, PTP_OC_EK_SendFileObjectInfo, *store, *parenthandle); size=ptp_pack_OI(params, objectinfo, &data); ret=ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); free(data); *store=ptp.Param1; *parenthandle=ptp.Param2; *handle=ptp.Param3; return ret; } /** * ptp_ek_getserial: * params: PTPParams* * char** serial - contains the serial number of the camera * uint32_t* size - contains the string length * * Gets the serial number from the device. (ptp serial) * * Return values: Some PTP_RC_* code. * */ uint16_t ptp_ek_getserial (PTPParams* params, unsigned char **data, unsigned int *size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_EK_GetSerial); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); } /** * ptp_ek_setserial: * params: PTPParams* * char* serial - contains the new serial number * uint32_t size - string length * * Sets the serial number of the device. (ptp serial) * * Return values: Some PTP_RC_* code. * */ uint16_t ptp_ek_setserial (PTPParams* params, unsigned char *data, unsigned int size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_EK_SetSerial); return ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); } /* unclear what it does yet */ uint16_t ptp_ek_9007 (PTPParams* params, unsigned char **data, unsigned int *size) { PTPContainer ptp; PTP_CNT_INIT(ptp, 0x9007); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); } /* unclear what it does yet */ uint16_t ptp_ek_9009 (PTPParams* params, uint32_t *p1, uint32_t *p2) { PTPContainer ptp; PTP_CNT_INIT(ptp, 0x9009); *p1 = *p2 = 0; CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); *p1 = ptp.Param1; *p2 = ptp.Param2; return PTP_RC_OK; } /* unclear yet, but I guess it returns the info from 9008 */ uint16_t ptp_ek_900c (PTPParams* params, unsigned char **data, unsigned int *size) { PTPContainer ptp; PTP_CNT_INIT(ptp, 0x900c); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); /* returned data is 16bit,16bit,32bit,32bit */ } /** * ptp_ek_settext: * params: PTPParams* * PTPEKTextParams* - contains the texts to display. * * Displays the specified texts on the TFT of the camera. * * Return values: Some PTP_RC_* code. * */ uint16_t ptp_ek_settext (PTPParams* params, PTPEKTextParams *text) { PTPContainer ptp; uint16_t ret; unsigned char *data = 0; uint32_t size; PTP_CNT_INIT(ptp, PTP_OC_EK_SetText); if (0 == (size = ptp_pack_EK_text(params, text, &data))) return PTP_ERROR_BADPARAM; ret = ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); free(data); return ret; } /** * ptp_ek_sendfileobject: * params: PTPParams* * char* object - contains the object that is to be sent * uint32_t size - object size * * Sends object to Responder. * * Return values: Some PTP_RC_* code. * */ uint16_t ptp_ek_sendfileobject (PTPParams* params, unsigned char* object, uint32_t size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_EK_SendFileObject); return ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &object, NULL); } /** * ptp_ek_sendfileobject_from_handler: * params: PTPParams* * PTPDataHandler* handler - contains the handler of the object that is to be sent * uint32_t size - object size * * Sends object to Responder. * * Return values: Some PTP_RC_* code. * */ uint16_t ptp_ek_sendfileobject_from_handler (PTPParams* params, PTPDataHandler*handler, uint32_t size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_EK_SendFileObject); return ptp_transaction_new(params, &ptp, PTP_DP_SENDDATA, size, handler); } /************************************************************************* * * Canon PTP extensions support * * (C) Nikolai Kopanygin 2003 * *************************************************************************/ /** * ptp_canon_getpartialobjectinfo: * params: PTPParams* * uint32_t handle - ObjectHandle * uint32_t p2 - Not fully understood parameter * 0 - returns full size * 1 - returns thumbnail size (or EXIF?) * * Gets form the responder the size of the specified object. * * Return values: Some PTP_RC_* code. * Upon success : uint32_t* size - The object size * uint32_t* rp2 - Still unknown return parameter * (perhaps upper 32bit of size) * * **/ uint16_t ptp_canon_getpartialobjectinfo (PTPParams* params, uint32_t handle, uint32_t p2, uint32_t* size, uint32_t* rp2) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetPartialObjectInfo, handle, p2); *size = *rp2 = 0; CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); *size=ptp.Param1; *rp2=ptp.Param2; return PTP_RC_OK; } /** * ptp_canon_get_mac_address: * params: PTPParams* * value 0 works. * Gets the MAC address of the wireless transmitter. * * Return values: Some PTP_RC_* code. * Upon success : unsigned char* mac - The MAC address * **/ uint16_t ptp_canon_get_mac_address (PTPParams* params, unsigned char **mac) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetMACAddress); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, mac, NULL); } /** * ptp_canon_get_directory: * params: PTPParams* * Gets the full directory of the camera. * * Return values: Some PTP_RC_* code. * Upon success : PTPObjectHandles *handles - filled out with handles * PTPObjectInfo **oinfos - allocated array of PTP Object Infos * uint32_t **flags - allocated array of CANON Flags * **/ uint16_t ptp_canon_get_directory (PTPParams* params, PTPObjectHandles *handles, PTPObjectInfo **oinfos, /* size(handles->n) */ uint32_t **flags /* size(handles->n) */ ) { PTPContainer ptp; unsigned char *data; uint16_t ret; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetDirectory); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, NULL)); ret = ptp_unpack_canon_directory(params, data, ptp.Param1, handles, oinfos, flags); free (data); return ret; } /** * ptp_canon_gettreeinfo: * params: PTPParams* * uint32_t *out * * Switches the camera display to on and lets the user * select what to transfer. Sends a 0xc011 event when started * and 0xc013 if direct transfer aborted. * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_canon_gettreeinfo (PTPParams* params, uint32_t *out) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetTreeInfo, 0xf); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); if (ptp.Nparam > 0) *out = ptp.Param1; return PTP_RC_OK; } /** * ptp_canon_getpairinginfo: * params: PTPParams* * int nr * * Get the pairing information. * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_canon_getpairinginfo (PTPParams* params, uint32_t nr, unsigned char **data, unsigned int *size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetPairingInfo, nr); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); } /** * ptp_canon_get_target_handles: * params: PTPParams* * PTPCanon_directtransfer_entry **out * unsigned int *outsize * * Retrieves direct transfer entries specifying the images to transfer * from the camera (to be retrieved after 0xc011 event). * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_canon_gettreesize (PTPParams* params, PTPCanon_directtransfer_entry **entries, unsigned int *cnt) { PTPContainer ptp; uint16_t ret = PTP_RC_OK; unsigned char *data, *cur; unsigned int size, i; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetTreeSize); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); *cnt = dtoh32a(data); *entries = malloc(sizeof(PTPCanon_directtransfer_entry)*(*cnt)); if (!*entries) { ret = PTP_RC_GeneralError; goto exit; } cur = data+4; for (i=0;i<*cnt;i++) { unsigned char len; (*entries)[i].oid = dtoh32a(cur); (*entries)[i].str = ptp_unpack_string(params, cur, 4, &len); cur += 4+(cur[4]*2+1); } exit: free (data); return ret; } /** * ptp_canon_checkevent: * params: PTPParams* * * The camera has a FIFO stack, in which it accumulates events. * Partially these events are communicated also via the USB interrupt pipe * according to the PTP USB specification, partially not. * This operation returns from the device a block of data, empty, * if the event stack is empty, or filled with an event's data otherwise. * The event is removed from the stack in the latter case. * The Remote Capture app sends this command to the camera all the time * of connection, filling with it the gaps between other operations. * * Return values: Some PTP_RC_* code. * Upon success : PTPUSBEventContainer* event - is filled with the event data * if any * int *isevent - returns 1 in case of event * or 0 otherwise **/ uint16_t ptp_canon_checkevent (PTPParams* params, PTPContainer* event, int* isevent) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_CANON_CheckEvent); *isevent=0; CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); if (data && size) { /* check if we had a successfull call with data */ ptp_unpack_EC(params, data, event, size); *isevent=1; free(data); } return PTP_RC_OK; } uint16_t ptp_add_event (PTPParams *params, PTPContainer *evt) { params->events = realloc(params->events, sizeof(PTPContainer)*(params->nrofevents+1)); memcpy (¶ms->events[params->nrofevents],evt,1*sizeof(PTPContainer)); params->nrofevents += 1; return PTP_RC_OK; } uint16_t ptp_check_event (PTPParams *params) { PTPContainer event; uint16_t ret; /* Method offered by Nikon DSLR, Nikon 1, and some older Nikon Coolpix P* * The Nikon Coolpix P2 however does not return anything. So if we never get * events from here, use the ptp "interrupt" method */ if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_NIKON) && ptp_operation_issupported(params, PTP_OC_NIKON_CheckEvent) ) { unsigned int evtcnt = 0; PTPContainer *xevent = NULL; ret = ptp_nikon_check_event(params, &xevent, &evtcnt); if (ret != PTP_RC_OperationNotSupported) CHECK_PTP_RC(ret); if (evtcnt) { params->events = realloc(params->events, sizeof(PTPContainer)*(evtcnt+params->nrofevents)); memcpy (¶ms->events[params->nrofevents],xevent,evtcnt*sizeof(PTPContainer)); params->nrofevents += evtcnt; free (xevent); params->event90c7works = 1; } if (params->event90c7works) return PTP_RC_OK; /* fall through to generic event handling */ } /* should not get here ... EOS has no normal PTP events and another queue handling. */ if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_EOS_GetEvent) ) { return PTP_RC_OK; } if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params, PTP_OC_CANON_CheckEvent) ) { int isevent; CHECK_PTP_RC(ptp_canon_checkevent (params,&event,&isevent)); if (isevent) { ret = PTP_RC_OK; goto store_event; } /* Event Emulate Mode 0 (unset) and 1-5 get interrupt events. 6-7 does not. */ if (params->canon_event_mode > 5) return PTP_RC_OK; /* FIXME: fallthrough or return? */ #ifdef __APPLE__ /* the libusb 1 on darwin currently does not like polling * for interrupts, they have no timeout for it. 2010/08/23 * Check back in 2011 or so. -Marcus */ return PTP_RC_OK; #endif } ret = params->event_check(params,&event); store_event: if (ret == PTP_RC_OK) { ptp_debug (params, "event: nparams=0x%X, code=0x%X, trans_id=0x%X, p1=0x%X, p2=0x%X, p3=0x%X", event.Nparam,event.Code,event.Transaction_ID, event.Param1, event.Param2, event.Param3); ptp_add_event (params, &event); /* handle some PTP stack internal events */ switch (event.Code) { case PTP_EC_DevicePropChanged: { unsigned int i; /* mark the property for a forced refresh on the next query */ for (i=0;inrofdeviceproperties;i++) if (params->deviceproperties[i].desc.DevicePropertyCode == event.Param1) { params->deviceproperties[i].timestamp = 0; break; } break; } default: /* check if we should handle it internally too */ break; } } if (ret == PTP_ERROR_TIMEOUT) /* ok, just new events */ ret = PTP_RC_OK; return ret; } uint16_t ptp_wait_event (PTPParams *params) { PTPContainer event; uint16_t ret; ret = params->event_wait(params,&event); if (ret == PTP_RC_OK) { ptp_debug (params, "event: nparams=0x%X, code=0x%X, trans_id=0x%X, p1=0x%X, p2=0x%X, p3=0x%X", event.Nparam,event.Code,event.Transaction_ID, event.Param1, event.Param2, event.Param3); ptp_add_event (params, &event); /* handle some PTP stack internal events */ switch (event.Code) { case PTP_EC_DevicePropChanged: { unsigned int i; /* mark the property for a forced refresh on the next query */ for (i=0;inrofdeviceproperties;i++) if (params->deviceproperties[i].desc.DevicePropertyCode == event.Param1) { params->deviceproperties[i].timestamp = 0; break; } break; } default: /* check if we should handle it internally too */ break; } } if (ret == PTP_ERROR_TIMEOUT) /* ok, just new events */ ret = PTP_RC_OK; return ret; } int ptp_get_one_event(PTPParams *params, PTPContainer *event) { if (!params->nrofevents) return 0; memcpy (event, params->events, sizeof(PTPContainer)); memmove (params->events, params->events+1, sizeof(PTPContainer)*(params->nrofevents-1)); /* do not realloc on shrink. */ params->nrofevents--; if (!params->nrofevents) { free (params->events); params->events = NULL; } return 1; } /** * ptp_canon_eos_getevent: * * This retrieves configuration status/updates/changes * on EOS cameras. It reads a datablock which has a list of variable * sized structures. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_canon_eos_getevent (PTPParams* params, PTPCanon_changes_entry **entries, int *nrofentries) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_GetEvent); *nrofentries = 0; *entries = NULL; CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); *nrofentries = ptp_unpack_CANON_changes(params,data,size,entries); free (data); return PTP_RC_OK; } uint16_t ptp_check_eos_events (PTPParams *params) { PTPCanon_changes_entry *entries = NULL, *nentries; int nrofentries = 0; while (1) { /* call it repeatedly until the camera does not report any */ CHECK_PTP_RC(ptp_canon_eos_getevent (params, &entries, &nrofentries)); if (!nrofentries) return PTP_RC_OK; if (params->nrofbacklogentries) { nentries = realloc(params->backlogentries,sizeof(entries[0])*(params->nrofbacklogentries+nrofentries)); if (!nentries) return PTP_RC_GeneralError; params->backlogentries = nentries; memcpy (nentries+params->nrofbacklogentries, entries, nrofentries*sizeof(entries[0])); params->nrofbacklogentries += nrofentries; free (entries); } else { params->backlogentries = entries; params->nrofbacklogentries = nrofentries; } } return PTP_RC_OK; } int ptp_get_one_eos_event (PTPParams *params, PTPCanon_changes_entry *entry) { if (!params->nrofbacklogentries) return 0; memcpy (entry, params->backlogentries, sizeof(*entry)); if (params->nrofbacklogentries > 1) { memmove (params->backlogentries,params->backlogentries+1,sizeof(*entry)*(params->nrofbacklogentries-1)); params->nrofbacklogentries--; } else { free (params->backlogentries); params->backlogentries = NULL; params->nrofbacklogentries = 0; } return 1; } uint16_t ptp_canon_eos_getdevicepropdesc (PTPParams* params, uint16_t propcode, PTPDevicePropDesc *dpd) { unsigned int i; for (i=0;inrofcanon_props;i++) if (params->canon_props[i].proptype == propcode) break; if (params->nrofcanon_props == i) return PTP_RC_Undefined; memcpy (dpd, ¶ms->canon_props[i].dpd, sizeof (*dpd)); if (dpd->FormFlag == PTP_DPFF_Enumeration) { /* need to duplicate the Enumeration alloc */ dpd->FORM.Enum.SupportedValue = malloc (sizeof (PTPPropertyValue)*dpd->FORM.Enum.NumberOfValues); memcpy (dpd->FORM.Enum.SupportedValue, params->canon_props[i].dpd.FORM.Enum.SupportedValue, sizeof (PTPPropertyValue)*dpd->FORM.Enum.NumberOfValues ); } if (dpd->DataType == PTP_DTC_STR) { dpd->FactoryDefaultValue.str = strdup( params->canon_props[i].dpd.FactoryDefaultValue.str ); dpd->CurrentValue.str = strdup( params->canon_props[i].dpd.CurrentValue.str ); } return PTP_RC_OK; } uint16_t ptp_canon_eos_getstorageids (PTPParams* params, PTPStorageIDs* storageids) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_GetStorageIDs); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); ptp_unpack_SIDs(params, data, storageids, size); free(data); return PTP_RC_OK; } uint16_t ptp_canon_eos_getstorageinfo (PTPParams* params, uint32_t p1, unsigned char **data, unsigned int *size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_GetStorageInfo, p1); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); /* FIXME: do stuff with data */ } uint16_t ptp_canon_eos_getobjectinfoex ( PTPParams* params, uint32_t storageid, uint32_t oid, uint32_t unk, PTPCANONFolderEntry **entries, unsigned int *nrofentries ) { PTPContainer ptp; uint16_t ret = PTP_RC_OK; unsigned char *data, *xdata; unsigned int size, i; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_GetObjectInfoEx, storageid, oid, unk); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); if (!data) { *nrofentries = 0; return PTP_RC_OK; } *nrofentries = dtoh32a(data); *entries = malloc(*nrofentries * sizeof(PTPCANONFolderEntry)); if (!*entries) { ret = PTP_RC_GeneralError; goto exit; } xdata = data+sizeof(uint32_t); for (i=0;i<*nrofentries;i++) { ptp_unpack_Canon_EOS_FE (params, &xdata[4], &((*entries)[i])); xdata += dtoh32a(xdata); } exit: free (data); return ret; } /** * ptp_canon_eos_getpartialobject: * * This retrieves a part of an PTP object which you specify as object id. * The id originates from 0x9116 call. * After finishing it, we seem to need to call ptp_canon_eos_enddirecttransfer. * * params: PTPParams* * oid Object ID * offset The offset where to start the data transfer * xsize Size in bytes of the transfer to do * data Pointer that receives the malloc()ed memory of the transfer. * * Return values: Some PTP_RC_* code. * */ uint16_t ptp_canon_eos_getpartialobject (PTPParams* params, uint32_t oid, uint32_t offset, uint32_t xsize, unsigned char**data) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_GetPartialObject, oid, offset, xsize); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, NULL); } uint16_t ptp_canon_eos_setdevicepropvalueex (PTPParams* params, unsigned char* data, unsigned int size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_SetDevicePropValueEx); return ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); } uint16_t ptp_canon_eos_setdevicepropvalue (PTPParams* params, uint16_t propcode, PTPPropertyValue *value, uint16_t datatype ) { PTPContainer ptp; uint16_t ret; unsigned char *data = NULL; unsigned int i, size; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_SetDevicePropValueEx); for (i=0;inrofcanon_props;i++) if (params->canon_props[i].proptype == propcode) break; if (params->nrofcanon_props == i) return PTP_RC_Undefined; switch (propcode) { case PTP_DPC_CANON_EOS_ImageFormat: case PTP_DPC_CANON_EOS_ImageFormatCF: case PTP_DPC_CANON_EOS_ImageFormatSD: case PTP_DPC_CANON_EOS_ImageFormatExtHD: /* special handling of ImageFormat properties */ size = 8 + ptp_pack_EOS_ImageFormat( params, NULL, value->u16 ); data = malloc( size ); if (!data) return PTP_RC_GeneralError; params->canon_props[i].dpd.CurrentValue.u16 = value->u16; ptp_pack_EOS_ImageFormat( params, data + 8, value->u16 ); break; case PTP_DPC_CANON_EOS_CustomFuncEx: /* special handling of CustomFuncEx properties */ ptp_debug (params, "ptp2/ptp_canon_eos_setdevicepropvalue: setting EOS prop %x to %s",propcode,value->str); size = 8 + ptp_pack_EOS_CustomFuncEx( params, NULL, value->str ); data = malloc( size ); if (!data) return PTP_RC_GeneralError; params->canon_props[i].dpd.CurrentValue.str = strdup( value->str ); ptp_pack_EOS_CustomFuncEx( params, data + 8, value->str ); break; default: if (datatype != PTP_DTC_STR) { data = calloc(3,sizeof(uint32_t)); if (!data) return PTP_RC_GeneralError; size = sizeof(uint32_t)*3; } else { size = strlen(value->str) + 1 + 8; data = calloc(size,sizeof(char)); if (!data) return PTP_RC_GeneralError; } switch (datatype) { case PTP_DTC_INT8: case PTP_DTC_UINT8: /*fprintf (stderr, "%x -> %d\n", propcode, value->u8);*/ htod8a(&data[8], value->u8); params->canon_props[i].dpd.CurrentValue.u8 = value->u8; break; case PTP_DTC_UINT16: case PTP_DTC_INT16: /*fprintf (stderr, "%x -> %d\n", propcode, value->u16);*/ htod16a(&data[8], value->u16); params->canon_props[i].dpd.CurrentValue.u16 = value->u16; break; case PTP_DTC_INT32: case PTP_DTC_UINT32: /*fprintf (stderr, "%x -> %d\n", propcode, value->u32);*/ htod32a(&data[8], value->u32); params->canon_props[i].dpd.CurrentValue.u32 = value->u32; break; case PTP_DTC_STR: strcpy((char*)data + 8, value->str); free (params->canon_props[i].dpd.CurrentValue.str); params->canon_props[i].dpd.CurrentValue.str = strdup(value->str); break; } } htod32a(&data[0], size); htod32a(&data[4], propcode); ret = ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); free (data); return ret; } /** * ptp_canon_getpartialobject: * * This operation is used to read from the device a data * block of an object from a specified offset. * * params: PTPParams* * uint32_t handle - the handle of the requested object * uint32_t offset - the offset in bytes from the beginning of the object * uint32_t size - the requested size of data block to read * uint32_t pos - 1 for the first block, 2 - for a block in the middle, * 3 - for the last block * * Return values: Some PTP_RC_* code. * char **block - the pointer to the block of data read * uint32_t* readnum - the number of bytes read * **/ uint16_t ptp_canon_getpartialobject (PTPParams* params, uint32_t handle, uint32_t offset, uint32_t size, uint32_t pos, unsigned char** block, uint32_t* readnum) { PTPContainer ptp; uint16_t ret; unsigned char *data; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetPartialObjectEx, handle, offset, size, pos); ret=ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, NULL); if (ret==PTP_RC_OK) { *block=data; *readnum=ptp.Param1; } free (data); return ret; } /** * ptp_canon_getviewfinderimage: * * This operation can be used to read the image which is currently * in the camera's viewfinder. The image size is 320x240, format is JPEG. * Of course, prior to calling this operation, one must turn the viewfinder * on with the CANON_ViewfinderOn command. * Invoking this operation many times, one can get live video from the camera! * * params: PTPParams* * * Return values: Some PTP_RC_* code. * char **image - the pointer to the read image * unit32_t *size - the size of the image in bytes * **/ uint16_t ptp_canon_getviewfinderimage (PTPParams* params, unsigned char** image, uint32_t* size) { PTPContainer ptp; uint16_t ret; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetViewfinderImage); ret=ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, image, NULL); if (ret==PTP_RC_OK) *size=ptp.Param1; return ret; } /** * ptp_canon_getchanges: * * This is an interesting operation, about the effect of which I am not sure. * This command is called every time when a device property has been changed * with the SetDevicePropValue operation, and after some other operations. * This operation reads the array of Device Properties which have been changed * by the previous operation. * Probably, this operation is even required to make those changes work. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * uint16_t** props - the pointer to the array of changed properties * uint32_t* propnum - the number of elements in the *props array * **/ uint16_t ptp_canon_getchanges (PTPParams* params, uint16_t** props, uint32_t* propnum) { PTPContainer ptp; unsigned char *data; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetChanges); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, NULL)); *propnum=ptp_unpack_uint16_t_array(params,data,0,props); free(data); return PTP_RC_OK; } /** * ptp_canon_getobjectinfo: * * This command reads a specified object's record in a device's filesystem, * or the records of all objects belonging to a specified folder (association). * * params: PTPParams* * uint32_t store - StorageID, * uint32_t p2 - Yet unknown (0 value works OK) * uint32_t parent - Parent Object Handle * # If Parent Object Handle is 0xffffffff, * # the Parent Object is the top level folder. * uint32_t handle - Object Handle * # If Object Handle is 0, the records of all objects * # belonging to the Parent Object are read. * # If Object Handle is not 0, only the record of this * # Object is read. * * Return values: Some PTP_RC_* code. * PTPCANONFolderEntry** entries - the pointer to the folder entry array * uint32_t* entnum - the number of elements of the array * **/ uint16_t ptp_canon_getobjectinfo (PTPParams* params, uint32_t store, uint32_t p2, uint32_t parent, uint32_t handle, PTPCANONFolderEntry** entries, uint32_t* entnum) { PTPContainer ptp; uint16_t ret; unsigned char *data; unsigned int i; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetObjectInfoEx, store, p2, parent, handle); ret=ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, NULL); if (ret != PTP_RC_OK) goto exit; *entnum=ptp.Param1; *entries=calloc(*entnum, sizeof(PTPCANONFolderEntry)); if (*entries==NULL) { ret=PTP_RC_GeneralError; goto exit; } for(i=0; i<(*entnum); i++) ptp_unpack_Canon_FE(params, data+i*PTP_CANON_FolderEntryLen, &((*entries)[i]) ); exit: free (data); return ret; } /** * ptp_canon_get_objecthandle_by_name: * * This command looks up the specified object on the camera. * * Format is "A:\\PATH". * * The 'A' is the VolumeLabel from GetStorageInfo, * my IXUS has "A" for the card and "V" for internal memory. * * params: PTPParams* * char* name - path name * * Return values: Some PTP_RC_* code. * uint32_t *oid - PTP object id. * **/ uint16_t ptp_canon_get_objecthandle_by_name (PTPParams* params, char* name, uint32_t* objectid) { PTPContainer ptp; uint16_t ret; unsigned char *data; uint8_t len = 0; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetObjectHandleByName); data = malloc (2*(strlen(name)+1)+2); if (!data) return PTP_RC_GeneralError; memset (data, 0, 2*(strlen(name)+1)+2); ptp_pack_string (params, name, data, 0, &len); ret=ptp_transaction (params, &ptp, PTP_DP_SENDDATA, (len+1)*2+1, &data, NULL); free (data); *objectid = ptp.Param1; return ret; } /** * ptp_canon_get_customize_data: * * This command downloads the specified theme slot, including jpegs * and wav files. * * params: PTPParams* * uint32_t themenr - nr of theme * * Return values: Some PTP_RC_* code. * unsigned char **data - pointer to data pointer * unsigned int *size - size of data returned * **/ uint16_t ptp_canon_get_customize_data (PTPParams* params, uint32_t themenr, unsigned char **data, unsigned int *size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_GetCustomizeData, themenr); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); } uint16_t ptp_nikon_curve_download (PTPParams* params, unsigned char **data, unsigned int *size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_NIKON_CurveDownload); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); } /** * ptp_sony_sdioconnect: * * This changes modes of the camera * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_sony_sdioconnect (PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3) { PTPContainer ptp; unsigned char *data; PTP_CNT_INIT(ptp, PTP_OC_SONY_SDIOConnect, p1, p2, p3); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, NULL)); free (data); return PTP_RC_OK; } /** * ptp_sony_get_vendorpropcodes: * * This command downloads the vendor specific property codes. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * unsigned char **data - pointer to data pointer * unsigned int *size - size of data returned * **/ uint16_t ptp_sony_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size) { PTPContainer ptp; unsigned char *xdata; unsigned int xsize, psize1 = 0, psize2 = 0; uint16_t *props1 = NULL,*props2 = NULL; *props = NULL; *size = 0; PTP_CNT_INIT(ptp, PTP_OC_SONY_GetSDIOGetExtDeviceInfo, 0xc8 /* unclear */); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &xdata, &xsize)); if (xsize == 0) { ptp_debug (params, "No special operations sent?"); return PTP_RC_OK; } psize1 = ptp_unpack_uint16_t_array(params,xdata+2,0,&props1); ptp_debug (params, "xsize %d, got size %d\n", xsize, psize1*2 + 2 + 4); if (psize1*2 + 2 + 4 < xsize) { psize2 = ptp_unpack_uint16_t_array(params,xdata+2+psize1*2+4,0,&props2); } *size = psize1+psize2; *props = malloc((psize1+psize2)*sizeof(uint16_t)); memcpy (*props, props1, psize1*sizeof(uint16_t)); memcpy ((*props)+psize1, props2, psize2*sizeof(uint16_t)); free (props1); free (props2); free (xdata); return PTP_RC_OK; } uint16_t ptp_sony_getdevicepropdesc (PTPParams* params, uint16_t propcode, PTPDevicePropDesc *dpd) { PTPContainer ptp; unsigned char *data; unsigned int size, len = 0; uint16_t ret; PTP_CNT_INIT(ptp, PTP_OC_SONY_GetDevicePropdesc, propcode); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); /* first 16 bit is 0xc8 0x00, then an array of 16 bit PTP ids */ ret = ptp_unpack_Sony_DPD(params,data,dpd,size,&len) ? PTP_RC_OK : PTP_RC_GeneralError; free (data); return ret; } uint16_t ptp_sony_getalldevicepropdesc (PTPParams* params) { PTPContainer ptp; unsigned char *data, *dpddata; unsigned int size, readlen; PTPDevicePropDesc dpd; PTP_CNT_INIT(ptp, PTP_OC_SONY_GetAllDevicePropData); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); dpddata = data+8; /* nr of entries 32bit, 0 32bit */ size -= 8; while (size>0) { unsigned int i; uint16_t propcode; if (!ptp_unpack_Sony_DPD (params, dpddata, &dpd, size, &readlen)) break; propcode = dpd.DevicePropertyCode; for (i=0;inrofdeviceproperties;i++) if (params->deviceproperties[i].desc.DevicePropertyCode == propcode) break; if (i == params->nrofdeviceproperties) { params->deviceproperties = realloc(params->deviceproperties,(i+1)*sizeof(params->deviceproperties[0])); memset(¶ms->deviceproperties[i],0,sizeof(params->deviceproperties[0])); params->nrofdeviceproperties++; } else { ptp_free_devicepropdesc (¶ms->deviceproperties[i].desc); } params->deviceproperties[i].desc = dpd; #if 0 ptp_debug (params, "dpd.DevicePropertyCode %04x, readlen %d, getset %d", dpd.DevicePropertyCode, readlen, dpd.GetSet); switch (dpd.DataType) { case PTP_DTC_INT8: ptp_debug (params, "value %d/%x", dpd.CurrentValue.i8, dpd.CurrentValue.i8); break; case PTP_DTC_UINT8: ptp_debug (params, "value %d/%x", dpd.CurrentValue.u8, dpd.CurrentValue.u8); break; case PTP_DTC_UINT16: ptp_debug (params, "value %d/%x", dpd.CurrentValue.u16, dpd.CurrentValue.u16); break; case PTP_DTC_INT16: ptp_debug (params, "value %d/%x", dpd.CurrentValue.i16, dpd.CurrentValue.i16); break; case PTP_DTC_INT32: ptp_debug (params, "value %d/%x", dpd.CurrentValue.i32, dpd.CurrentValue.i32); break; case PTP_DTC_UINT32: ptp_debug (params, "value %d/%x", dpd.CurrentValue.u32, dpd.CurrentValue.u32); break; default: ptp_debug (params, "unknown type %x", dpd.DataType); break; } #endif dpddata += readlen; size -= readlen; } free(data); return PTP_RC_OK; } uint16_t ptp_sony_setdevicecontrolvaluea (PTPParams* params, uint16_t propcode, PTPPropertyValue *value, uint16_t datatype) { PTPContainer ptp; uint16_t ret; unsigned char *data; uint32_t size; PTP_CNT_INIT(ptp, PTP_OC_SONY_SetControlDeviceA, propcode); size = ptp_pack_DPV(params, value, &data, datatype); ret = ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); free(data); return ret; } uint16_t ptp_sony_setdevicecontrolvalueb (PTPParams* params, uint16_t propcode, PTPPropertyValue *value, uint16_t datatype) { PTPContainer ptp; uint16_t ret; unsigned char *data; uint32_t size; PTP_CNT_INIT(ptp, PTP_OC_SONY_SetControlDeviceB, propcode); size = ptp_pack_DPV(params, value, &data , datatype); ret = ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); free(data); return ret; } uint16_t ptp_sony_9280 (PTPParams* params, uint32_t param1, uint32_t additional, uint32_t data2, uint32_t data3, uint32_t data4, uint8_t x, uint8_t y) { PTPContainer ptp; unsigned char buf[18]; unsigned char *buffer; PTP_CNT_INIT(ptp, 0x9280, param1); if ((additional != 0) && (additional != 2)) return PTP_RC_GeneralError; htod32a(&buf[0], additional); htod32a(&buf[4], data2); htod32a(&buf[8], data3); htod32a(&buf[12], data4); /* only sent in the case where additional is 2 */ buf[16]= x; buf[17]= y; buffer=buf; return ptp_transaction(params, &ptp, PTP_DP_SENDDATA, 16+additional, &buffer, NULL); } uint16_t ptp_sony_9281 (PTPParams* params, uint32_t param1) { PTPContainer ptp; unsigned int size = 0; unsigned char *buffer = NULL; uint16_t ret; PTP_CNT_INIT(ptp, 0x9281, param1); ret = ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &buffer, &size); free (buffer); return ret; } /** * ptp_generic_getdevicepropdesc: * * This command gets a propertydesc. * If a vendor specific property desc query is available, it uses that. * If not, it falls back to the generic PTP getdevicepropdesc. * * params: PTPParams* * uint16_t propcode * PTPDevicePropDesc *dpd * * Return values: Some PTP_RC_* code. * **/ /* Cache time in seconds. Should perhaps be more granular... */ #define CACHETIME 2 uint16_t ptp_generic_getdevicepropdesc (PTPParams *params, uint16_t propcode, PTPDevicePropDesc *dpd) { unsigned int i; time_t now; for (i=0;inrofdeviceproperties;i++) if (params->deviceproperties[i].desc.DevicePropertyCode == propcode) break; if (i == params->nrofdeviceproperties) { params->deviceproperties = realloc(params->deviceproperties,(i+1)*sizeof(params->deviceproperties[0])); memset(¶ms->deviceproperties[i],0,sizeof(params->deviceproperties[0])); params->nrofdeviceproperties++; } if (params->deviceproperties[i].desc.DataType != PTP_DTC_UNDEF) { time(&now); if ((now - params->deviceproperties[i].timestamp) <= CACHETIME) { duplicate_DevicePropDesc(¶ms->deviceproperties[i].desc, dpd); return PTP_RC_OK; } /* free cached entry as we will refetch it. */ ptp_free_devicepropdesc (¶ms->deviceproperties[i].desc); } if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_SONY) && ptp_operation_issupported(params, PTP_OC_SONY_GetAllDevicePropData) ) { CHECK_PTP_RC(ptp_sony_getalldevicepropdesc (params)); for (i=0;inrofdeviceproperties;i++) if (params->deviceproperties[i].desc.DevicePropertyCode == propcode) break; if (i == params->nrofdeviceproperties) { ptp_debug (params, "property 0x%04x not found?\n", propcode); return PTP_RC_GeneralError; } time(&now); params->deviceproperties[i].timestamp = now; duplicate_DevicePropDesc(¶ms->deviceproperties[i].desc, dpd); return PTP_RC_OK; } if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_SONY) && ptp_operation_issupported(params, PTP_OC_SONY_GetDevicePropdesc) ) { CHECK_PTP_RC(ptp_sony_getdevicepropdesc (params, propcode, ¶ms->deviceproperties[i].desc)); time(&now); params->deviceproperties[i].timestamp = now; duplicate_DevicePropDesc(¶ms->deviceproperties[i].desc, dpd); return PTP_RC_OK; } if (ptp_operation_issupported(params, PTP_OC_GetDevicePropDesc)) { CHECK_PTP_RC(ptp_getdevicepropdesc (params, propcode, ¶ms->deviceproperties[i].desc)); time(&now); params->deviceproperties[i].timestamp = now; duplicate_DevicePropDesc(¶ms->deviceproperties[i].desc, dpd); return PTP_RC_OK; } return PTP_RC_OK; } /** * ptp_generic_setdevicepropvalue: * * This command sets a property value, device specific. * * params: PTPParams* * uint16_t propcode * PTPDevicePropertyValue *value * uint16_t datatype * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_generic_setdevicepropvalue (PTPParams* params, uint16_t propcode, PTPPropertyValue *value, uint16_t datatype) { unsigned int i; /* reset the cache entry */ for (i=0;inrofdeviceproperties;i++) if (params->deviceproperties[i].desc.DevicePropertyCode == propcode) break; if (i != params->nrofdeviceproperties) params->deviceproperties[i].timestamp = 0; /* FIXME: change the cache? hmm */ /* this works for some methods, but not for all */ if ( (params->deviceinfo.VendorExtensionID == PTP_VENDOR_SONY) && ptp_operation_issupported(params, PTP_OC_SONY_SetControlDeviceA) ) return ptp_sony_setdevicecontrolvaluea (params, propcode, value, datatype); return ptp_setdevicepropvalue (params, propcode, value, datatype); } /** * ptp_nikon_get_vendorpropcodes: * * This command downloads the vendor specific property codes. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * unsigned char **data - pointer to data pointer * unsigned int *size - size of data returned * **/ uint16_t ptp_nikon_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size) { PTPContainer ptp; unsigned char *data; *props = NULL; *size = 0; PTP_CNT_INIT(ptp, PTP_OC_NIKON_GetVendorPropCodes); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, NULL)); *size = ptp_unpack_uint16_t_array(params,data,0,props); free (data); return PTP_RC_OK; } uint16_t ptp_nikon_getfileinfoinblock ( PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3, unsigned char **data, unsigned int *size ) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_NIKON_GetFileInfoInBlock, p1, p2, p3); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); } /** * ptp_nikon_get_liveview_image: * * This command gets a LiveView image from newer Nikons DSLRs. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_nikon_get_liveview_image (PTPParams* params, unsigned char **data, unsigned int *size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_NIKON_GetLiveViewImg); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); } /** * ptp_nikon_get_preview_image: * * This command gets a Preview image from newer Nikons DSLRs. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_nikon_get_preview_image (PTPParams* params, unsigned char **xdata, unsigned int *xsize, uint32_t *handle) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_NIKON_GetPreviewImg); /* FIXME: * pdslrdashboard passes 3 parameters: * objectid, minimum size, maximum size */ CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, xdata, xsize)); if (ptp.Nparam > 0) *handle = ptp.Param1; return PTP_RC_OK; } /** * ptp_canon_eos_get_viewfinder_image: * * This command gets a Viewfinder image from newer Nikons DSLRs. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_canon_eos_get_viewfinder_image (PTPParams* params, unsigned char **data, unsigned int *size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_GetViewFinderData, 0x00100000 /* from trace */); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); } uint16_t ptp_canon_eos_get_viewfinder_image_handler (PTPParams* params, PTPDataHandler*handler) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CANON_EOS_GetViewFinderData, 0x00100000 /* from trace */); return ptp_transaction_new(params, &ptp, PTP_DP_GETDATA, 0, handler); } /** * ptp_nikon_check_event: * * This command checks the event queue on the Nikon. * * params: PTPParams* * PTPUSBEventContainer **event - list of usb events. * int *evtcnt - number of usb events in event structure. * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_nikon_check_event (PTPParams* params, PTPContainer** event, unsigned int* evtcnt) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_NIKON_CheckEvent); *evtcnt = 0; CHECK_PTP_RC(ptp_transaction (params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); ptp_unpack_Nikon_EC (params, data, size, event, evtcnt); free (data); return PTP_RC_OK; } /** * ptp_nikon_getptpipinfo: * * This command gets the ptpip info data. * * params: PTPParams* * unsigned char *data - data * unsigned int size - size of returned data * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_nikon_getptpipinfo (PTPParams* params, unsigned char **data, unsigned int *size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_NIKON_GetDevicePTPIPInfo); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); } /** * ptp_nikon_getwifiprofilelist: * * This command gets the wifi profile list. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_nikon_getwifiprofilelist (PTPParams* params) { PTPContainer ptp; uint16_t ret; unsigned char *data; unsigned int size, pos, profn, n; char *buffer; uint8_t len; PTP_CNT_INIT(ptp, PTP_OC_NIKON_GetProfileAllData); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); ret = PTP_RC_Undefined; /* FIXME: Add more precise error code */ if (size < 2) goto exit; params->wifi_profiles_version = data[0]; params->wifi_profiles_number = data[1]; free(params->wifi_profiles); params->wifi_profiles = malloc(params->wifi_profiles_number*sizeof(PTPNIKONWifiProfile)); memset(params->wifi_profiles, 0, params->wifi_profiles_number*sizeof(PTPNIKONWifiProfile)); pos = 2; profn = 0; while (profn < params->wifi_profiles_number && pos < size) { if (pos+6 >= size) goto exit; params->wifi_profiles[profn].id = data[pos++]; params->wifi_profiles[profn].valid = data[pos++]; n = dtoh32a(&data[pos]); pos += 4; if (pos+n+4 >= size) goto exit; strncpy(params->wifi_profiles[profn].profile_name, (char*)&data[pos], n); params->wifi_profiles[profn].profile_name[16] = '\0'; pos += n; params->wifi_profiles[profn].display_order = data[pos++]; params->wifi_profiles[profn].device_type = data[pos++]; params->wifi_profiles[profn].icon_type = data[pos++]; buffer = ptp_unpack_string(params, data, pos, &len); strncpy(params->wifi_profiles[profn].creation_date, buffer, sizeof(params->wifi_profiles[profn].creation_date)); free (buffer); pos += (len*2+1); if (pos+1 >= size) goto exit; /* FIXME: check if it is really last usage date */ buffer = ptp_unpack_string(params, data, pos, &len); strncpy(params->wifi_profiles[profn].lastusage_date, buffer, sizeof(params->wifi_profiles[profn].lastusage_date)); free (buffer); pos += (len*2+1); if (pos+5 >= size) goto exit; n = dtoh32a(&data[pos]); pos += 4; if (pos+n >= size) goto exit; strncpy(params->wifi_profiles[profn].essid, (char*)&data[pos], n); params->wifi_profiles[profn].essid[32] = '\0'; pos += n; pos += 1; profn++; } #if 0 PTPNIKONWifiProfile test; memset(&test, 0, sizeof(PTPNIKONWifiProfile)); strcpy(test.profile_name, "MyTest"); test.icon_type = 1; strcpy(test.essid, "nikon"); test.ip_address = 10 + 11 << 16 + 11 << 24; test.subnet_mask = 24; test.access_mode = 1; test.wifi_channel = 1; test.key_nr = 1; ptp_nikon_writewifiprofile(params, &test); #endif /* everything went Ok */ ret = PTP_RC_OK; exit: free (data); return ret; } /** * ptp_nikon_writewifiprofile: * * This command gets the ptpip info data. * * params: PTPParams* * unsigned int profilenr - profile number * unsigned char *data - data * unsigned int size - size of returned data * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_nikon_writewifiprofile (PTPParams* params, PTPNIKONWifiProfile* profile) { PTPContainer ptp; unsigned char buffer[1024]; unsigned char* data = buffer; int size = 0; int i; uint8_t len; int profilenr = -1; unsigned char guid[16]; ptp_nikon_getptpipguid(guid); if (!params->wifi_profiles) CHECK_PTP_RC(ptp_nikon_getwifiprofilelist(params)); for (i = 0; i < params->wifi_profiles_number; i++) { if (!params->wifi_profiles[i].valid) { profilenr = params->wifi_profiles[i].id; break; } } if (profilenr == -1) { /* No free profile! */ return PTP_RC_StoreFull; } memset(buffer, 0, 1024); buffer[0x00] = 0x64; /* Version */ /* Profile name */ htod32a(&buffer[0x01], 17); /* 16 as third parameter, so there will always be a null-byte in the end */ strncpy((char*)&buffer[0x05], profile->profile_name, 16); buffer[0x16] = 0x00; /* Display order */ buffer[0x17] = profile->device_type; buffer[0x18] = profile->icon_type; /* FIXME: Creation date: put a real date here */ ptp_pack_string(params, "19990909T090909", data, 0x19, &len); /* IP parameters */ memcpy(&buffer[0x3A],&profile->ip_address,sizeof(profile->ip_address)); /**((unsigned int*)&buffer[0x3A]) = profile->ip_address; *//* Do not reverse bytes */ buffer[0x3E] = profile->subnet_mask; memcpy(&buffer[0x3F],&profile->gateway_address,sizeof(profile->gateway_address)); /**((unsigned int*)&buffer[0x3F]) = profile->gateway_address; */ /* Do not reverse bytes */ buffer[0x43] = profile->address_mode; /* Wifi parameters */ buffer[0x44] = profile->access_mode; buffer[0x45] = profile->wifi_channel; htod32a(&buffer[0x46], 33); /* essid */ /* 32 as third parameter, so there will always be a null-byte in the end */ strncpy((char*)&buffer[0x4A], profile->essid, 32); buffer[0x6B] = profile->authentification; buffer[0x6C] = profile->encryption; htod32a(&buffer[0x6D], 64); for (i = 0; i < 64; i++) { buffer[0x71+i] = profile->key[i]; } buffer[0xB1] = profile->key_nr; memcpy(&buffer[0xB2], guid, 16); switch(profile->encryption) { case 1: /* WEP 64bit */ htod16a(&buffer[0xC2], 5); /* (64-24)/8 = 5 */ break; case 2: /* WEP 128bit */ htod16a(&buffer[0xC2], 13); /* (128-24)/8 = 13 */ break; default: htod16a(&buffer[0xC2], 0); } size = 0xC4; PTP_CNT_INIT(ptp, PTP_OC_NIKON_SendProfileData, profilenr); return ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); } /** * ptp_mtp_getobjectpropssupported: * * This command gets the object properties possible from the device. * * params: PTPParams* * uint ofc - object format code * unsigned int *propnum - number of elements in returned array * uint16_t *props - array of supported properties * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_mtp_getobjectpropssupported (PTPParams* params, uint16_t ofc, uint32_t *propnum, uint16_t **props ) { PTPContainer ptp; unsigned char *data; PTP_CNT_INIT(ptp, PTP_OC_MTP_GetObjectPropsSupported, ofc); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, NULL)); *propnum=ptp_unpack_uint16_t_array(params,data,0,props); free(data); return PTP_RC_OK; } /** * ptp_mtp_getobjectpropdesc: * * This command gets the object property description. * * params: PTPParams* * uint16_t opc - object property code * uint16_t ofc - object format code * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_mtp_getobjectpropdesc ( PTPParams* params, uint16_t opc, uint16_t ofc, PTPObjectPropDesc *opd ) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_MTP_GetObjectPropDesc, opc, ofc); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); ptp_unpack_OPD (params, data, opd, size); free(data); return PTP_RC_OK; } /** * ptp_mtp_getobjectpropvalue: * * This command gets the object properties of an object handle. * * params: PTPParams* * uint32_t objectid - object format code * uint16_t opc - object prop code * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_mtp_getobjectpropvalue ( PTPParams* params, uint32_t oid, uint16_t opc, PTPPropertyValue *value, uint16_t datatype ) { PTPContainer ptp; uint16_t ret = PTP_RC_OK; unsigned char *data; unsigned int size, offset = 0; PTP_CNT_INIT(ptp, PTP_OC_MTP_GetObjectPropValue, oid, opc); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); if (!ptp_unpack_DPV(params, data, &offset, size, value, datatype)) { ptp_debug (params, "ptp_mtp_getobjectpropvalue: unpacking DPV failed"); ret = PTP_RC_GeneralError; } free(data); return ret; } /** * ptp_mtp_setobjectpropvalue: * * This command gets the object properties of an object handle. * * params: PTPParams* * uint32_t objectid - object format code * uint16_t opc - object prop code * * Return values: Some PTP_RC_* code. * **/ uint16_t ptp_mtp_setobjectpropvalue ( PTPParams* params, uint32_t oid, uint16_t opc, PTPPropertyValue *value, uint16_t datatype ) { PTPContainer ptp; uint16_t ret; unsigned char *data = NULL; uint32_t size; PTP_CNT_INIT(ptp, PTP_OC_MTP_SetObjectPropValue, oid, opc); size = ptp_pack_DPV(params, value, &data, datatype); ret = ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); free(data); return ret; } uint16_t ptp_mtp_getobjectreferences (PTPParams* params, uint32_t handle, uint32_t** ohArray, uint32_t* arraylen) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_MTP_GetObjectReferences, handle); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data , &size)); /* Sandisk Sansa skips the DATA phase, but returns OK as response. * this will gives us a NULL here. Handle it. -Marcus */ if ((data == NULL) || (size == 0)) { *arraylen = 0; *ohArray = NULL; } else { *arraylen = ptp_unpack_uint32_t_array(params, data , 0, ohArray); } free(data); return PTP_RC_OK; } uint16_t ptp_mtp_setobjectreferences (PTPParams* params, uint32_t handle, uint32_t* ohArray, uint32_t arraylen) { PTPContainer ptp; uint16_t ret; unsigned char *data = NULL; uint32_t size; PTP_CNT_INIT(ptp, PTP_OC_MTP_SetObjectReferences, handle); size = ptp_pack_uint32_t_array(params, ohArray, arraylen, &data); ret = ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); free(data); return ret; } uint16_t ptp_mtp_getobjectproplist (PTPParams* params, uint32_t handle, MTPProperties **props, int *nrofprops) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_MTP_GetObjPropList, handle, 0x00000000U, /* 0x00000000U should be "all formats" */ 0xFFFFFFFFU, /* 0xFFFFFFFFU should be "all properties" */ 0x00000000U, 0xFFFFFFFFU /* means - return full tree below the Param1 handle */ ); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); *nrofprops = ptp_unpack_OPL(params, data, props, size); free(data); return PTP_RC_OK; } uint16_t ptp_mtp_getobjectproplist_single (PTPParams* params, uint32_t handle, MTPProperties **props, int *nrofprops) { PTPContainer ptp; unsigned char *data; unsigned int size; PTP_CNT_INIT(ptp, PTP_OC_MTP_GetObjPropList, handle, 0x00000000U, /* 0x00000000U should be "all formats" */ 0xFFFFFFFFU, /* 0xFFFFFFFFU should be "all properties" */ 0x00000000U, 0x00000000U /* means - return single tree below the Param1 handle */ ); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, &size)); *nrofprops = ptp_unpack_OPL(params, data, props, size); free(data); return PTP_RC_OK; } uint16_t ptp_mtp_sendobjectproplist (PTPParams* params, uint32_t* store, uint32_t* parenthandle, uint32_t* handle, uint16_t objecttype, uint64_t objectsize, MTPProperties *props, int nrofprops) { PTPContainer ptp; uint16_t ret; unsigned char *data = NULL; uint32_t size; PTP_CNT_INIT(ptp, PTP_OC_MTP_SendObjectPropList, *store, *parenthandle, (uint32_t) objecttype, (uint32_t) (objectsize >> 32), (uint32_t) (objectsize & 0xffffffffU) ); /* Set object handle to 0 for a new object */ size = ptp_pack_OPL(params,props,nrofprops,&data); ret = ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL); free(data); *store = ptp.Param1; *parenthandle = ptp.Param2; *handle = ptp.Param3; return ret; } uint16_t ptp_mtp_setobjectproplist (PTPParams* params, MTPProperties *props, int nrofprops) { PTPContainer ptp; unsigned char *data = NULL; uint32_t size; PTP_CNT_INIT(ptp, PTP_OC_MTP_SetObjPropList); size = ptp_pack_OPL(params,props,nrofprops,&data); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL)); free(data); return PTP_RC_OK; } uint16_t ptp_mtpz_sendwmdrmpdapprequest (PTPParams* params, unsigned char *appcertmsg, uint32_t size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_MTP_WMDRMPD_SendWMDRMPDAppRequest); return ptp_transaction (params, &ptp, PTP_DP_SENDDATA, size, &appcertmsg, NULL); } uint16_t ptp_mtpz_getwmdrmpdappresponse (PTPParams* params, unsigned char **response, uint32_t *size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_MTP_WMDRMPD_GetWMDRMPDAppResponse); *size = 0; *response = NULL; return ptp_transaction (params, &ptp, PTP_DP_GETDATA, 0, response, size); } /****** CHDK interface ******/ uint16_t ptp_chdk_get_memory(PTPParams* params, int start, int num, unsigned char **buf) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_GetMemory, start, num); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, buf, NULL); } uint16_t ptp_chdk_set_memory_long(PTPParams* params, int addr, int val) { PTPContainer ptp; unsigned char *buf = (unsigned char *) &val; /* FIXME ... endianness? */ PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_SetMemory, addr, 4); return ptp_transaction(params, &ptp, PTP_DP_SENDDATA, 4, &buf, NULL); } uint16_t ptp_chdk_download(PTPParams* params, char *remote_fn, PTPDataHandler *handler) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_TempData, 0); CHECK_PTP_RC (ptp_transaction(params, &ptp, PTP_DP_SENDDATA, strlen(remote_fn), (unsigned char**)&remote_fn, NULL)); PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_DownloadFile); return ptp_transaction_new (params, &ptp, PTP_DP_GETDATA, 0, handler); } #if 0 int ptp_chdk_upload(PTPParams* params, char *local_fn, char *remote_fn) { uint16_t ret; PTPContainer ptp; char *buf = NULL; FILE *f; unsigned file_len,data_len,file_name_len; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_UploadFile); f = fopen(local_fn,"rb"); if ( f == NULL ) { ptp_error(params,"could not open file \'%s\'",local_fn); return 0; } fseek(f,0,SEEK_END); file_len = ftell(f); fseek(f,0,SEEK_SET); file_name_len = strlen(remote_fn); data_len = 4 + file_name_len + file_len; buf = malloc(data_len); memcpy(buf,&file_name_len,4); memcpy(buf+4,remote_fn,file_name_len); fread(buf+4+file_name_len,1,file_len,f); fclose(f); ret=ptp_transaction(params, &ptp, PTP_DP_SENDDATA, data_len, &buf, NULL); free(buf); if ( ret != PTP_RC_OK ) { ptp_error(params,"unexpected return code 0x%x",ret); return 0; } return 1; } #endif /* * Preliminary remote capture over USB code. Corresponding CHDK code is in the ptp-remote-capture-test * This is under development and should not be included in builds for general distribution */ /* * isready: 0: not ready, lowest 2 bits: available image formats, 0x10000000: error */ uint16_t ptp_chdk_rcisready(PTPParams* params, int *isready, int *imgnum) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_RemoteCaptureIsReady); *isready = *imgnum = 0; CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); *isready=ptp.Param1; *imgnum=ptp.Param2; return PTP_RC_OK; } uint16_t ptp_chdk_rcgetchunk(PTPParams* params, int fmt, ptp_chdk_rc_chunk *chunk) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_RemoteCaptureGetData, fmt); //get chunk chunk->data = NULL; chunk->size = 0; chunk->offset = 0; chunk->last = 0; // TODO should allow ptp_getdata_transaction to send chunks directly to file, or to mem CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &chunk->data, NULL)); chunk->size = ptp.Param1; chunk->last = (ptp.Param2 == 0); chunk->offset = ptp.Param3; //-1 for none return PTP_RC_OK; } uint16_t ptp_chdk_exec_lua(PTPParams* params, char *script, int flags, int *script_id, int *status) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_ExecuteScript, PTP_CHDK_SL_LUA | flags); *script_id = 0; *status = 0; CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_SENDDATA, strlen(script)+1, (unsigned char**)&script, NULL)); *script_id = ptp.Param1; *status = ptp.Param2; return PTP_RC_OK; } uint16_t ptp_chdk_get_version(PTPParams* params, int *major, int *minor) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_Version); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); *major = ptp.Param1; *minor = ptp.Param2; return PTP_RC_OK; } uint16_t ptp_chdk_get_script_status(PTPParams* params, unsigned *status) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_ScriptStatus); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); *status = ptp.Param1; return PTP_RC_OK; } uint16_t ptp_chdk_get_script_support(PTPParams* params, unsigned *status) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_ScriptSupport); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_NODATA, 0, NULL, NULL)); *status = ptp.Param1; return PTP_RC_OK; } uint16_t ptp_chdk_write_script_msg(PTPParams* params, char *data, unsigned size, int target_script_id, int *status) { PTPContainer ptp; // a zero length data phase appears to do bad things, camera stops responding to PTP if(!size) { ptp_error(params,"zero length message not allowed"); *status = 0; return PTP_ERROR_BADPARAM; } PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_WriteScriptMsg, target_script_id); *status = 0; CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, (unsigned char**)&data, NULL)); *status = ptp.Param1; return PTP_RC_OK; } uint16_t ptp_chdk_read_script_msg(PTPParams* params, ptp_chdk_script_msg **msg) { PTPContainer ptp; unsigned char *data; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_ReadScriptMsg); *msg = NULL; /* camera will always send data, otherwise getdata will cause problems */ CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, &data, NULL)); /* for convenience, always allocate an extra byte and null it*/ *msg = malloc(sizeof(ptp_chdk_script_msg) + ptp.Param4 + 1); (*msg)->type = ptp.Param1; (*msg)->subtype = ptp.Param2; (*msg)->script_id = ptp.Param3; (*msg)->size = ptp.Param4; memcpy((*msg)->data,data,(*msg)->size); (*msg)->data[(*msg)->size] = 0; free(data); return PTP_RC_OK; } uint16_t ptp_chdk_get_live_data(PTPParams* params, unsigned flags, unsigned char **data, unsigned int *data_size) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_GetDisplayData, flags); *data_size = 0; CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, NULL)); *data_size = ptp.Param1; return PTP_RC_OK; } uint16_t ptp_chdk_call_function(PTPParams* params, int *args, int size, int *ret) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_CHDK, PTP_CHDK_CallFunction); CHECK_PTP_RC(ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size*sizeof(int), (unsigned char **) &args, NULL)); if (ret) *ret = ptp.Param1; return PTP_RC_OK; } /** * Android MTP Extensions */ /** * ptp_android_getpartialobject64: * params: PTPParams* * handle - Object handle * offset - Offset into object * maxbytes - Maximum of bytes to read * object - pointer to data area * len - pointer to returned length * * Get object 'handle' from device and store the data in newly * allocated 'object'. Start from offset and read at most maxbytes. * * This is a 64bit offset version of the standard GetPartialObject. * * Return values: Some PTP_RC_* code. **/ uint16_t ptp_android_getpartialobject64 (PTPParams* params, uint32_t handle, uint64_t offset, uint32_t maxbytes, unsigned char** object, uint32_t *len) { PTPContainer ptp; PTP_CNT_INIT(ptp, PTP_OC_ANDROID_GetPartialObject64, handle, offset & 0xFFFFFFFF, offset >> 32, maxbytes); return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, object, len); } uint16_t ptp_android_sendpartialobject (PTPParams* params, uint32_t handle, uint64_t offset, unsigned char* object, uint32_t len) { PTPContainer ptp; uint16_t ret; PTP_CNT_INIT(ptp, PTP_OC_ANDROID_SendPartialObject, handle, offset & 0xFFFFFFFF, offset >> 32, len); /* * MtpServer.cpp is buggy: it uses write() without offset * rather than pwrite to send the data for data coming with * the header packet */ params->split_header_data = 1; ret=ptp_transaction(params, &ptp, PTP_DP_SENDDATA, len, &object, NULL); params->split_header_data = 0; return ret; } /* Non PTP protocol functions */ /* devinfo testing functions */ int ptp_event_issupported(PTPParams* params, uint16_t event) { unsigned int i=0; for (;ideviceinfo.EventsSupported_len;i++) { if (params->deviceinfo.EventsSupported[i]==event) return 1; } return 0; } int ptp_property_issupported(PTPParams* params, uint16_t property) { unsigned int i; for (i=0;ideviceinfo.DevicePropertiesSupported_len;i++) if (params->deviceinfo.DevicePropertiesSupported[i]==property) return 1; return 0; } void ptp_free_objectinfo (PTPObjectInfo *oi) { if (!oi) return; free (oi->Filename); oi->Filename = NULL; free (oi->Keywords); oi->Keywords = NULL; } void ptp_free_object (PTPObject *ob) { unsigned int i; if (!ob) return; ptp_free_objectinfo (&ob->oi); for (i=0;inrofmtpprops;i++) ptp_destroy_object_prop(&ob->mtpprops[i]); ob->flags = 0; } /* PTP error descriptions */ static struct { uint16_t rc; uint16_t vendor; const char *txt; } ptp_errors[] = { {PTP_RC_Undefined, 0, N_("PTP Undefined Error")}, {PTP_RC_OK, 0, N_("PTP OK!")}, {PTP_RC_GeneralError, 0, N_("PTP General Error")}, {PTP_RC_SessionNotOpen, 0, N_("PTP Session Not Open")}, {PTP_RC_InvalidTransactionID, 0, N_("PTP Invalid Transaction ID")}, {PTP_RC_OperationNotSupported, 0, N_("PTP Operation Not Supported")}, {PTP_RC_ParameterNotSupported, 0, N_("PTP Parameter Not Supported")}, {PTP_RC_IncompleteTransfer, 0, N_("PTP Incomplete Transfer")}, {PTP_RC_InvalidStorageId, 0, N_("PTP Invalid Storage ID")}, {PTP_RC_InvalidObjectHandle, 0, N_("PTP Invalid Object Handle")}, {PTP_RC_DevicePropNotSupported, 0, N_("PTP Device Prop Not Supported")}, {PTP_RC_InvalidObjectFormatCode,0, N_("PTP Invalid Object Format Code")}, {PTP_RC_StoreFull, 0, N_("PTP Store Full")}, {PTP_RC_ObjectWriteProtected, 0, N_("PTP Object Write Protected")}, {PTP_RC_StoreReadOnly, 0, N_("PTP Store Read Only")}, {PTP_RC_AccessDenied, 0, N_("PTP Access Denied")}, {PTP_RC_NoThumbnailPresent, 0, N_("PTP No Thumbnail Present")}, {PTP_RC_SelfTestFailed, 0, N_("PTP Self Test Failed")}, {PTP_RC_PartialDeletion, 0, N_("PTP Partial Deletion")}, {PTP_RC_StoreNotAvailable, 0, N_("PTP Store Not Available")}, {PTP_RC_SpecificationByFormatUnsupported, 0, N_("PTP Specification By Format Unsupported")}, {PTP_RC_NoValidObjectInfo, 0, N_("PTP No Valid Object Info")}, {PTP_RC_InvalidCodeFormat, 0, N_("PTP Invalid Code Format")}, {PTP_RC_UnknownVendorCode, 0, N_("PTP Unknown Vendor Code")}, {PTP_RC_CaptureAlreadyTerminated, 0, N_("PTP Capture Already Terminated")}, {PTP_RC_DeviceBusy, 0, N_("PTP Device Busy")}, {PTP_RC_InvalidParentObject, 0, N_("PTP Invalid Parent Object")}, {PTP_RC_InvalidDevicePropFormat,0, N_("PTP Invalid Device Prop Format")}, {PTP_RC_InvalidDevicePropValue, 0, N_("PTP Invalid Device Prop Value")}, {PTP_RC_InvalidParameter, 0, N_("PTP Invalid Parameter")}, {PTP_RC_SessionAlreadyOpened, 0, N_("PTP Session Already Opened")}, {PTP_RC_TransactionCanceled, 0, N_("PTP Transaction Canceled")}, {PTP_RC_SpecificationOfDestinationUnsupported, 0, N_("PTP Specification Of Destination Unsupported")}, {PTP_RC_EK_FilenameRequired, PTP_VENDOR_EASTMAN_KODAK, N_("Filename Required")}, {PTP_RC_EK_FilenameConflicts, PTP_VENDOR_EASTMAN_KODAK, N_("Filename Conflicts")}, {PTP_RC_EK_FilenameInvalid, PTP_VENDOR_EASTMAN_KODAK, N_("Filename Invalid")}, {PTP_RC_NIKON_HardwareError, PTP_VENDOR_NIKON, N_("Hardware Error")}, {PTP_RC_NIKON_OutOfFocus, PTP_VENDOR_NIKON, N_("Out of Focus")}, {PTP_RC_NIKON_ChangeCameraModeFailed, PTP_VENDOR_NIKON, N_("Change Camera Mode Failed")}, {PTP_RC_NIKON_InvalidStatus, PTP_VENDOR_NIKON, N_("Invalid Status")}, {PTP_RC_NIKON_SetPropertyNotSupported, PTP_VENDOR_NIKON, N_("Set Property Not Supported")}, {PTP_RC_NIKON_WbResetError, PTP_VENDOR_NIKON, N_("Whitebalance Reset Error")}, {PTP_RC_NIKON_DustReferenceError, PTP_VENDOR_NIKON, N_("Dust Reference Error")}, {PTP_RC_NIKON_ShutterSpeedBulb, PTP_VENDOR_NIKON, N_("Shutter Speed Bulb")}, {PTP_RC_NIKON_MirrorUpSequence, PTP_VENDOR_NIKON, N_("Mirror Up Sequence")}, {PTP_RC_NIKON_CameraModeNotAdjustFNumber, PTP_VENDOR_NIKON, N_("Camera Mode Not Adjust FNumber")}, {PTP_RC_NIKON_NotLiveView, PTP_VENDOR_NIKON, N_("Not in Liveview")}, {PTP_RC_NIKON_MfDriveStepEnd, PTP_VENDOR_NIKON, N_("Mf Drive Step End")}, {PTP_RC_NIKON_MfDriveStepInsufficiency, PTP_VENDOR_NIKON, N_("Mf Drive Step Insufficiency")}, {PTP_RC_NIKON_AdvancedTransferCancel, PTP_VENDOR_NIKON, N_("Advanced Transfer Cancel")}, {PTP_RC_CANON_UNKNOWN_COMMAND, PTP_VENDOR_CANON, N_("Unknown Command")}, {PTP_RC_CANON_OPERATION_REFUSED,PTP_VENDOR_CANON, N_("Operation Refused")}, {PTP_RC_CANON_LENS_COVER, PTP_VENDOR_CANON, N_("Lens Cover Present")}, {PTP_RC_CANON_BATTERY_LOW, PTP_VENDOR_CANON, N_("Battery Low")}, {PTP_RC_CANON_NOT_READY, PTP_VENDOR_CANON, N_("Camera Not Ready")}, {PTP_ERROR_TIMEOUT, 0, N_("PTP Timeout")}, {PTP_ERROR_CANCEL, 0, N_("PTP Cancel Request")}, {PTP_ERROR_BADPARAM, 0, N_("PTP Invalid Parameter")}, {PTP_ERROR_RESP_EXPECTED, 0, N_("PTP Response Expected")}, {PTP_ERROR_DATA_EXPECTED, 0, N_("PTP Data Expected")}, {PTP_ERROR_IO, 0, N_("PTP I/O Error")}, {0, 0, NULL} }; const char * ptp_strerror(uint16_t ret, uint16_t vendor) { int i; for (i=0; ptp_errors[i].txt != NULL; i++) if ((ptp_errors[i].rc == ret) && ((ptp_errors[i].vendor == 0) || (ptp_errors[i].vendor == vendor))) return ptp_errors[i].txt; return NULL; } const char* ptp_get_property_description(PTPParams* params, uint16_t dpc) { int i; /* Device Property descriptions */ struct { uint16_t dpc; const char *txt; } ptp_device_properties[] = { {PTP_DPC_Undefined, N_("Undefined PTP Property")}, {PTP_DPC_BatteryLevel, N_("Battery Level")}, {PTP_DPC_FunctionalMode, N_("Functional Mode")}, {PTP_DPC_ImageSize, N_("Image Size")}, {PTP_DPC_CompressionSetting, N_("Compression Setting")}, {PTP_DPC_WhiteBalance, N_("White Balance")}, {PTP_DPC_RGBGain, N_("RGB Gain")}, {PTP_DPC_FNumber, N_("F-Number")}, {PTP_DPC_FocalLength, N_("Focal Length")}, {PTP_DPC_FocusDistance, N_("Focus Distance")}, {PTP_DPC_FocusMode, N_("Focus Mode")}, {PTP_DPC_ExposureMeteringMode, N_("Exposure Metering Mode")}, {PTP_DPC_FlashMode, N_("Flash Mode")}, {PTP_DPC_ExposureTime, N_("Exposure Time")}, {PTP_DPC_ExposureProgramMode, N_("Exposure Program Mode")}, {PTP_DPC_ExposureIndex, N_("Exposure Index (film speed ISO)")}, {PTP_DPC_ExposureBiasCompensation, N_("Exposure Bias Compensation")}, {PTP_DPC_DateTime, N_("Date & Time")}, {PTP_DPC_CaptureDelay, N_("Pre-Capture Delay")}, {PTP_DPC_StillCaptureMode, N_("Still Capture Mode")}, {PTP_DPC_Contrast, N_("Contrast")}, {PTP_DPC_Sharpness, N_("Sharpness")}, {PTP_DPC_DigitalZoom, N_("Digital Zoom")}, {PTP_DPC_EffectMode, N_("Effect Mode")}, {PTP_DPC_BurstNumber, N_("Burst Number")}, {PTP_DPC_BurstInterval, N_("Burst Interval")}, {PTP_DPC_TimelapseNumber, N_("Timelapse Number")}, {PTP_DPC_TimelapseInterval, N_("Timelapse Interval")}, {PTP_DPC_FocusMeteringMode, N_("Focus Metering Mode")}, {PTP_DPC_UploadURL, N_("Upload URL")}, {PTP_DPC_Artist, N_("Artist")}, {PTP_DPC_CopyrightInfo, N_("Copyright Info")}, {PTP_DPC_SupportedStreams, N_("Supported Streams")}, {PTP_DPC_EnabledStreams, N_("Enabled Streams")}, {PTP_DPC_VideoFormat, N_("Video Format")}, {PTP_DPC_VideoResolution, N_("Video Resolution")}, {PTP_DPC_VideoQuality, N_("Video Quality")}, {PTP_DPC_VideoFrameRate, N_("Video Framerate")}, {PTP_DPC_VideoContrast, N_("Video Contrast")}, {PTP_DPC_VideoBrightness, N_("Video Brightness")}, {PTP_DPC_AudioFormat, N_("Audio Format")}, {PTP_DPC_AudioBitrate, N_("Audio Bitrate")}, {PTP_DPC_AudioSamplingRate, N_("Audio Samplingrate")}, {PTP_DPC_AudioBitPerSample, N_("Audio Bits per sample")}, {PTP_DPC_AudioVolume, N_("Audio Volume")}, {0,NULL} }; struct { uint16_t dpc; const char *txt; } ptp_device_properties_EK[] = { {PTP_DPC_EK_ColorTemperature, N_("Color Temperature")}, {PTP_DPC_EK_DateTimeStampFormat, N_("Date Time Stamp Format")}, {PTP_DPC_EK_BeepMode, N_("Beep Mode")}, {PTP_DPC_EK_VideoOut, N_("Video Out")}, {PTP_DPC_EK_PowerSaving, N_("Power Saving")}, {PTP_DPC_EK_UI_Language, N_("UI Language")}, {0,NULL} }; struct { uint16_t dpc; const char *txt; } ptp_device_properties_Canon[] = { {PTP_DPC_CANON_BeepMode, N_("Beep Mode")}, {PTP_DPC_CANON_BatteryKind, N_("Battery Type")}, {PTP_DPC_CANON_BatteryStatus, N_("Battery Mode")}, {PTP_DPC_CANON_UILockType, N_("UILockType")}, {PTP_DPC_CANON_CameraMode, N_("Camera Mode")}, {PTP_DPC_CANON_ImageQuality, N_("Image Quality")}, {PTP_DPC_CANON_FullViewFileFormat, N_("Full View File Format")}, {PTP_DPC_CANON_ImageSize, N_("Image Size")}, {PTP_DPC_CANON_SelfTime, N_("Self Time")}, {PTP_DPC_CANON_FlashMode, N_("Flash Mode")}, {PTP_DPC_CANON_Beep, N_("Beep")}, {PTP_DPC_CANON_ShootingMode, N_("Shooting Mode")}, {PTP_DPC_CANON_ImageMode, N_("Image Mode")}, {PTP_DPC_CANON_DriveMode, N_("Drive Mode")}, {PTP_DPC_CANON_EZoom, N_("Zoom")}, {PTP_DPC_CANON_MeteringMode, N_("Metering Mode")}, {PTP_DPC_CANON_AFDistance, N_("AF Distance")}, {PTP_DPC_CANON_FocusingPoint, N_("Focusing Point")}, {PTP_DPC_CANON_WhiteBalance, N_("White Balance")}, {PTP_DPC_CANON_SlowShutterSetting, N_("Slow Shutter Setting")}, {PTP_DPC_CANON_AFMode, N_("AF Mode")}, {PTP_DPC_CANON_ImageStabilization, N_("Image Stabilization")}, {PTP_DPC_CANON_Contrast, N_("Contrast")}, {PTP_DPC_CANON_ColorGain, N_("Color Gain")}, {PTP_DPC_CANON_Sharpness, N_("Sharpness")}, {PTP_DPC_CANON_Sensitivity, N_("Sensitivity")}, {PTP_DPC_CANON_ParameterSet, N_("Parameter Set")}, {PTP_DPC_CANON_ISOSpeed, N_("ISO Speed")}, {PTP_DPC_CANON_Aperture, N_("Aperture")}, {PTP_DPC_CANON_ShutterSpeed, N_("Shutter Speed")}, {PTP_DPC_CANON_ExpCompensation, N_("Exposure Compensation")}, {PTP_DPC_CANON_FlashCompensation, N_("Flash Compensation")}, {PTP_DPC_CANON_AEBExposureCompensation, N_("AEB Exposure Compensation")}, {PTP_DPC_CANON_AvOpen, N_("Av Open")}, {PTP_DPC_CANON_AvMax, N_("Av Max")}, {PTP_DPC_CANON_FocalLength, N_("Focal Length")}, {PTP_DPC_CANON_FocalLengthTele, N_("Focal Length Tele")}, {PTP_DPC_CANON_FocalLengthWide, N_("Focal Length Wide")}, {PTP_DPC_CANON_FocalLengthDenominator, N_("Focal Length Denominator")}, {PTP_DPC_CANON_CaptureTransferMode, N_("Capture Transfer Mode")}, {PTP_DPC_CANON_Zoom, N_("Zoom")}, {PTP_DPC_CANON_NamePrefix, N_("Name Prefix")}, {PTP_DPC_CANON_SizeQualityMode, N_("Size Quality Mode")}, {PTP_DPC_CANON_SupportedThumbSize, N_("Supported Thumb Size")}, {PTP_DPC_CANON_SizeOfOutputDataFromCamera, N_("Size of Output Data from Camera")}, {PTP_DPC_CANON_SizeOfInputDataToCamera, N_("Size of Input Data to Camera")}, {PTP_DPC_CANON_RemoteAPIVersion,N_("Remote API Version")}, {PTP_DPC_CANON_FirmwareVersion, N_("Firmware Version")}, {PTP_DPC_CANON_CameraModel, N_("Camera Model")}, {PTP_DPC_CANON_CameraOwner, N_("Camera Owner")}, {PTP_DPC_CANON_UnixTime, N_("UNIX Time")}, {PTP_DPC_CANON_CameraBodyID, N_("Camera Body ID")}, {PTP_DPC_CANON_CameraOutput, N_("Camera Output")}, {PTP_DPC_CANON_DispAv, N_("Disp Av")}, {PTP_DPC_CANON_AvOpenApex, N_("Av Open Apex")}, {PTP_DPC_CANON_DZoomMagnification, N_("Digital Zoom Magnification")}, {PTP_DPC_CANON_MlSpotPos, N_("Ml Spot Position")}, {PTP_DPC_CANON_DispAvMax, N_("Disp Av Max")}, {PTP_DPC_CANON_AvMaxApex, N_("Av Max Apex")}, {PTP_DPC_CANON_EZoomStartPosition, N_("EZoom Start Position")}, {PTP_DPC_CANON_FocalLengthOfTele, N_("Focal Length Tele")}, {PTP_DPC_CANON_EZoomSizeOfTele, N_("EZoom Size of Tele")}, {PTP_DPC_CANON_PhotoEffect, N_("Photo Effect")}, {PTP_DPC_CANON_AssistLight, N_("Assist Light")}, {PTP_DPC_CANON_FlashQuantityCount, N_("Flash Quantity Count")}, {PTP_DPC_CANON_RotationAngle, N_("Rotation Angle")}, {PTP_DPC_CANON_RotationScene, N_("Rotation Scene")}, {PTP_DPC_CANON_EventEmulateMode,N_("Event Emulate Mode")}, {PTP_DPC_CANON_DPOFVersion, N_("DPOF Version")}, {PTP_DPC_CANON_TypeOfSupportedSlideShow, N_("Type of Slideshow")}, {PTP_DPC_CANON_AverageFilesizes,N_("Average Filesizes")}, {PTP_DPC_CANON_ModelID, N_("Model ID")}, {0,NULL} }; struct { uint16_t dpc; const char *txt; } ptp_device_properties_Nikon[] = { {PTP_DPC_NIKON_ShootingBank, /* 0xD010 */ N_("Shooting Bank")}, {PTP_DPC_NIKON_ShootingBankNameA, /* 0xD011 */ N_("Shooting Bank Name A")}, {PTP_DPC_NIKON_ShootingBankNameB, /* 0xD012 */ N_("Shooting Bank Name B")}, {PTP_DPC_NIKON_ShootingBankNameC, /* 0xD013 */ N_("Shooting Bank Name C")}, {PTP_DPC_NIKON_ShootingBankNameD, /* 0xD014 */ N_("Shooting Bank Name D")}, {PTP_DPC_NIKON_ResetBank0, /* 0xD015 */ N_("Reset Bank 0")}, {PTP_DPC_NIKON_RawCompression, /* 0xD016 */ N_("Raw Compression")}, {PTP_DPC_NIKON_WhiteBalanceAutoBias, /* 0xD017 */ N_("Auto White Balance Bias")}, {PTP_DPC_NIKON_WhiteBalanceTungstenBias, /* 0xD018 */ N_("Tungsten White Balance Bias")}, {PTP_DPC_NIKON_WhiteBalanceFluorescentBias, /* 0xD019 */ N_("Fluorescent White Balance Bias")}, {PTP_DPC_NIKON_WhiteBalanceDaylightBias, /* 0xD01a */ N_("Daylight White Balance Bias")}, {PTP_DPC_NIKON_WhiteBalanceFlashBias, /* 0xD01b */ N_("Flash White Balance Bias")}, {PTP_DPC_NIKON_WhiteBalanceCloudyBias, /* 0xD01c */ N_("Cloudy White Balance Bias")}, {PTP_DPC_NIKON_WhiteBalanceShadeBias, /* 0xD01d */ N_("Shady White Balance Bias")}, {PTP_DPC_NIKON_WhiteBalanceColorTemperature, /* 0xD01e */ N_("White Balance Colour Temperature")}, {PTP_DPC_NIKON_WhiteBalancePresetNo, /* 0xD01f */ N_("White Balance Preset Number")}, {PTP_DPC_NIKON_WhiteBalancePresetName0, /* 0xD020 */ N_("White Balance Preset Name 0")}, {PTP_DPC_NIKON_WhiteBalancePresetName1, /* 0xD021 */ N_("White Balance Preset Name 1")}, {PTP_DPC_NIKON_WhiteBalancePresetName2, /* 0xD022 */ N_("White Balance Preset Name 2")}, {PTP_DPC_NIKON_WhiteBalancePresetName3, /* 0xD023 */ N_("White Balance Preset Name 3")}, {PTP_DPC_NIKON_WhiteBalancePresetName4, /* 0xD024 */ N_("White Balance Preset Name 4")}, {PTP_DPC_NIKON_WhiteBalancePresetVal0, /* 0xD025 */ N_("White Balance Preset Value 0")}, {PTP_DPC_NIKON_WhiteBalancePresetVal1, /* 0xD026 */ N_("White Balance Preset Value 1")}, {PTP_DPC_NIKON_WhiteBalancePresetVal2, /* 0xD027 */ N_("White Balance Preset Value 2")}, {PTP_DPC_NIKON_WhiteBalancePresetVal3, /* 0xD028 */ N_("White Balance Preset Value 3")}, {PTP_DPC_NIKON_WhiteBalancePresetVal4, /* 0xD029 */ N_("White Balance Preset Value 4")}, {PTP_DPC_NIKON_ImageSharpening, /* 0xD02a */ N_("Sharpening")}, {PTP_DPC_NIKON_ToneCompensation, /* 0xD02b */ N_("Tone Compensation")}, {PTP_DPC_NIKON_ColorModel, /* 0xD02c */ N_("Color Model")}, {PTP_DPC_NIKON_HueAdjustment, /* 0xD02d */ N_("Hue Adjustment")}, {PTP_DPC_NIKON_NonCPULensDataFocalLength, /* 0xD02e */ N_("Lens Focal Length (Non CPU)")}, {PTP_DPC_NIKON_NonCPULensDataMaximumAperture, /* 0xD02f */ N_("Lens Maximum Aperture (Non CPU)")}, {PTP_DPC_NIKON_ShootingMode, /* 0xD030 */ N_("Shooting Mode")}, {PTP_DPC_NIKON_JPEG_Compression_Policy, /* 0xD031 */ N_("JPEG Compression Policy")}, {PTP_DPC_NIKON_ColorSpace, /* 0xD032 */ N_("Color Space")}, {PTP_DPC_NIKON_AutoDXCrop, /* 0xD033 */ N_("Auto DX Crop")}, {PTP_DPC_NIKON_FlickerReduction, /* 0xD034 */ N_("Flicker Reduction")}, {PTP_DPC_NIKON_RemoteMode, /* 0xD035 */ N_("Remote Mode")}, {PTP_DPC_NIKON_VideoMode, /* 0xD036 */ N_("Video Mode")}, {PTP_DPC_NIKON_EffectMode, /* 0xD037 */ N_("Effect Mode")}, {PTP_DPC_NIKON_CSMMenuBankSelect, /* 0xD040 */ "PTP_DPC_NIKON_CSMMenuBankSelect"}, {PTP_DPC_NIKON_MenuBankNameA, /* 0xD041 */ N_("Menu Bank Name A")}, {PTP_DPC_NIKON_MenuBankNameB, /* 0xD042 */ N_("Menu Bank Name B")}, {PTP_DPC_NIKON_MenuBankNameC, /* 0xD043 */ N_("Menu Bank Name C")}, {PTP_DPC_NIKON_MenuBankNameD, /* 0xD044 */ N_("Menu Bank Name D")}, {PTP_DPC_NIKON_ResetBank, /* 0xD045 */ N_("Reset Menu Bank")}, {PTP_DPC_NIKON_A1AFCModePriority, /* 0xD048 */ "PTP_DPC_NIKON_A1AFCModePriority"}, {PTP_DPC_NIKON_A2AFSModePriority, /* 0xD049 */ "PTP_DPC_NIKON_A2AFSModePriority"}, {PTP_DPC_NIKON_A3GroupDynamicAF, /* 0xD04a */ "PTP_DPC_NIKON_A3GroupDynamicAF"}, {PTP_DPC_NIKON_A4AFActivation, /* 0xD04b */ "PTP_DPC_NIKON_A4AFActivation"}, {PTP_DPC_NIKON_FocusAreaIllumManualFocus, /* 0xD04c */ "PTP_DPC_NIKON_FocusAreaIllumManualFocus"}, {PTP_DPC_NIKON_FocusAreaIllumContinuous, /* 0xD04d */ "PTP_DPC_NIKON_FocusAreaIllumContinuous"}, {PTP_DPC_NIKON_FocusAreaIllumWhenSelected, /* 0xD04e */ "PTP_DPC_NIKON_FocusAreaIllumWhenSelected"}, {PTP_DPC_NIKON_FocusAreaWrap, /* 0xD04f */ N_("Focus Area Wrap")}, {PTP_DPC_NIKON_VerticalAFON, /* 0xD050 */ N_("Vertical AF On")}, {PTP_DPC_NIKON_AFLockOn, /* 0xD051 */ N_("AF Lock On")}, {PTP_DPC_NIKON_FocusAreaZone, /* 0xD052 */ N_("Focus Area Zone")}, {PTP_DPC_NIKON_EnableCopyright, /* 0xD053 */ N_("Enable Copyright")}, {PTP_DPC_NIKON_ISOAuto, /* 0xD054 */ N_("Auto ISO")}, {PTP_DPC_NIKON_EVISOStep, /* 0xD055 */ N_("Exposure ISO Step")}, {PTP_DPC_NIKON_EVStep, /* 0xD056 */ N_("Exposure Step")}, {PTP_DPC_NIKON_EVStepExposureComp, /* 0xD057 */ N_("Exposure Compensation (EV)")}, {PTP_DPC_NIKON_ExposureCompensation, /* 0xD058 */ N_("Exposure Compensation")}, {PTP_DPC_NIKON_CenterWeightArea, /* 0xD059 */ N_("Centre Weight Area")}, {PTP_DPC_NIKON_ExposureBaseMatrix, /* 0xD05A */ N_("Exposure Base Matrix")}, {PTP_DPC_NIKON_ExposureBaseCenter, /* 0xD05B */ N_("Exposure Base Center")}, {PTP_DPC_NIKON_ExposureBaseSpot, /* 0xD05C */ N_("Exposure Base Spot")}, {PTP_DPC_NIKON_LiveViewAFArea, /* 0xD05D */ N_("Live View AF Area")}, {PTP_DPC_NIKON_AELockMode, /* 0xD05E */ N_("Exposure Lock")}, {PTP_DPC_NIKON_AELAFLMode, /* 0xD05F */ N_("Focus Lock")}, {PTP_DPC_NIKON_LiveViewAFFocus, /* 0xD061 */ N_("Live View AF Focus")}, {PTP_DPC_NIKON_MeterOff, /* 0xD062 */ N_("Auto Meter Off Time")}, {PTP_DPC_NIKON_SelfTimer, /* 0xD063 */ N_("Self Timer Delay")}, {PTP_DPC_NIKON_MonitorOff, /* 0xD064 */ N_("LCD Off Time")}, {PTP_DPC_NIKON_ImgConfTime, /* 0xD065 */ N_("Img Conf Time")}, {PTP_DPC_NIKON_AutoOffTimers, /* 0xD066 */ N_("Auto Off Timers")}, {PTP_DPC_NIKON_AngleLevel, /* 0xD067 */ N_("Angle Level")}, {PTP_DPC_NIKON_D1ShootingSpeed, /* 0xD068 */ N_("Shooting Speed")}, {PTP_DPC_NIKON_D2MaximumShots, /* 0xD069 */ N_("Maximum Shots")}, {PTP_DPC_NIKON_ExposureDelayMode, /* 0xD06A */ N_("Exposure delay mode")}, {PTP_DPC_NIKON_LongExposureNoiseReduction, /* 0xD06B */ N_("Long Exposure Noise Reduction")}, {PTP_DPC_NIKON_FileNumberSequence, /* 0xD06C */ N_("File Number Sequencing")}, {PTP_DPC_NIKON_ControlPanelFinderRearControl, /* 0xD06D */ "PTP_DPC_NIKON_ControlPanelFinderRearControl"}, {PTP_DPC_NIKON_ControlPanelFinderViewfinder, /* 0xD06E */ "PTP_DPC_NIKON_ControlPanelFinderViewfinder"}, {PTP_DPC_NIKON_D7Illumination, /* 0xD06F */ N_("LCD Illumination")}, {PTP_DPC_NIKON_NrHighISO, /* 0xD070 */ N_("High ISO noise reduction")}, {PTP_DPC_NIKON_SHSET_CH_GUID_DISP, /* 0xD071 */ N_("On screen tips")}, {PTP_DPC_NIKON_ArtistName, /* 0xD072 */ N_("Artist Name")}, {PTP_DPC_NIKON_CopyrightInfo, /* 0xD073 */ N_("Copyright Information")}, {PTP_DPC_NIKON_FlashSyncSpeed, /* 0xD074 */ N_("Flash Sync. Speed")}, {PTP_DPC_NIKON_FlashShutterSpeed, /* 0xD075 */ N_("Flash Shutter Speed")}, {PTP_DPC_NIKON_E3AAFlashMode, /* 0xD076 */ N_("Flash Mode")}, {PTP_DPC_NIKON_E4ModelingFlash, /* 0xD077 */ N_("Modeling Flash")}, {PTP_DPC_NIKON_BracketSet, /* 0xD078 */ N_("Bracket Set")}, {PTP_DPC_NIKON_E6ManualModeBracketing, /* 0xD079 */ N_("Manual Mode Bracketing")}, {PTP_DPC_NIKON_BracketOrder, /* 0xD07A */ N_("Bracket Order")}, {PTP_DPC_NIKON_E8AutoBracketSelection, /* 0xD07B */ N_("Auto Bracket Selection")}, {PTP_DPC_NIKON_BracketingSet, N_("NIKON Auto Bracketing Set")}, /* 0xD07C */ {PTP_DPC_NIKON_F1CenterButtonShootingMode, /* 0xD080 */ N_("Center Button Shooting Mode")}, {PTP_DPC_NIKON_CenterButtonPlaybackMode, /* 0xD081 */ N_("Center Button Playback Mode")}, {PTP_DPC_NIKON_F2Multiselector, /* 0xD082 */ N_("Multiselector")}, {PTP_DPC_NIKON_F3PhotoInfoPlayback, /* 0xD083 */ N_("Photo Info. Playback")}, {PTP_DPC_NIKON_F4AssignFuncButton, /* 0xD084 */ N_("Assign Func. Button")}, {PTP_DPC_NIKON_F5CustomizeCommDials, /* 0xD085 */ N_("Customise Command Dials")}, {PTP_DPC_NIKON_ReverseCommandDial, /* 0xD086 */ N_("Reverse Command Dial")}, {PTP_DPC_NIKON_ApertureSetting, /* 0xD087 */ N_("Aperture Setting")}, {PTP_DPC_NIKON_MenusAndPlayback, /* 0xD088 */ N_("Menus and Playback")}, {PTP_DPC_NIKON_F6ButtonsAndDials, /* 0xD089 */ N_("Buttons and Dials")}, {PTP_DPC_NIKON_NoCFCard, /* 0xD08A */ N_("No CF Card Release")}, {PTP_DPC_NIKON_CenterButtonZoomRatio, /* 0xD08B */ N_("Center Button Zoom Ratio")}, {PTP_DPC_NIKON_FunctionButton2, /* 0xD08C */ N_("Function Button 2")}, {PTP_DPC_NIKON_AFAreaPoint, /* 0xD08D */ N_("AF Area Point")}, {PTP_DPC_NIKON_NormalAFOn, /* 0xD08E */ N_("Normal AF On")}, {PTP_DPC_NIKON_CleanImageSensor, /* 0xD08F */ N_("Clean Image Sensor")}, {PTP_DPC_NIKON_ImageCommentString, /* 0xD090 */ N_("Image Comment String")}, {PTP_DPC_NIKON_ImageCommentEnable, /* 0xD091 */ N_("Image Comment Enable")}, {PTP_DPC_NIKON_ImageRotation, /* 0xD092 */ N_("Image Rotation")}, {PTP_DPC_NIKON_ManualSetLensNo, /* 0xD093 */ N_("Manual Set Lens Number")}, {PTP_DPC_NIKON_MovScreenSize, /* 0xD0A0 */ N_("Movie Screen Size")}, {PTP_DPC_NIKON_MovVoice, /* 0xD0A1 */ N_("Movie Voice")}, {PTP_DPC_NIKON_MovMicrophone, /* 0xD0A2 */ N_("Movie Microphone")}, {PTP_DPC_NIKON_MovFileSlot, /* 0xD0A3 */ N_("Movie Card Slot")}, {PTP_DPC_NIKON_ManualMovieSetting, /* 0xD0A6 */ N_("Manual Movie Setting")}, {PTP_DPC_NIKON_MovQuality, /* 0xD0A7 */ N_("Movie Quality")}, {PTP_DPC_NIKON_MonitorOffDelay, /* 0xD0B3 */ N_("Monitor Off Delay")}, {PTP_DPC_NIKON_Bracketing, /* 0xD0C0 */ N_("Bracketing Enable")}, {PTP_DPC_NIKON_AutoExposureBracketStep, /* 0xD0C1 */ N_("Exposure Bracketing Step")}, {PTP_DPC_NIKON_AutoExposureBracketProgram, /* 0xD0C2 */ N_("Exposure Bracketing Program")}, {PTP_DPC_NIKON_AutoExposureBracketCount, /* 0xD0C3 */ N_("Auto Exposure Bracket Count")}, {PTP_DPC_NIKON_WhiteBalanceBracketStep, N_("White Balance Bracket Step")}, /* 0xD0C4 */ {PTP_DPC_NIKON_WhiteBalanceBracketProgram, N_("White Balance Bracket Program")}, /* 0xD0C5 */ {PTP_DPC_NIKON_LensID, /* 0xD0E0 */ N_("Lens ID")}, {PTP_DPC_NIKON_LensSort, /* 0xD0E1 */ N_("Lens Sort")}, {PTP_DPC_NIKON_LensType, /* 0xD0E2 */ N_("Lens Type")}, {PTP_DPC_NIKON_FocalLengthMin, /* 0xD0E3 */ N_("Min. Focal Length")}, {PTP_DPC_NIKON_FocalLengthMax, /* 0xD0E4 */ N_("Max. Focal Length")}, {PTP_DPC_NIKON_MaxApAtMinFocalLength, /* 0xD0E5 */ N_("Max. Aperture at Min. Focal Length")}, {PTP_DPC_NIKON_MaxApAtMaxFocalLength, /* 0xD0E6 */ N_("Max. Aperture at Max. Focal Length")}, {PTP_DPC_NIKON_FinderISODisp, /* 0xD0F0 */ N_("Finder ISO Display")}, {PTP_DPC_NIKON_AutoOffPhoto, /* 0xD0F2 */ N_("Auto Off Photo")}, {PTP_DPC_NIKON_AutoOffMenu, /* 0xD0F3 */ N_("Auto Off Menu")}, {PTP_DPC_NIKON_AutoOffInfo, /* 0xD0F4 */ N_("Auto Off Info")}, {PTP_DPC_NIKON_SelfTimerShootNum, /* 0xD0F5 */ N_("Self Timer Shot Number")}, {PTP_DPC_NIKON_VignetteCtrl, /* 0xD0F7 */ N_("Vignette Control")}, {PTP_DPC_NIKON_AutoDistortionControl, /* 0xD0F8 */ N_("Auto Distortion Control")}, {PTP_DPC_NIKON_SceneMode, /* 0xD0F9 */ N_("Scene Mode")}, {PTP_DPC_NIKON_ExposureTime, /* 0xD100 */ N_("Nikon Exposure Time")}, {PTP_DPC_NIKON_ACPower, N_("AC Power")}, /* 0xD101 */ {PTP_DPC_NIKON_WarningStatus, N_("Warning Status")},/* 0xD102 */ {PTP_DPC_NIKON_MaximumShots, /* 0xD103 */ N_("Maximum Shots")}, {PTP_DPC_NIKON_AFLockStatus, N_("AF Locked")},/* 0xD104 */ {PTP_DPC_NIKON_AELockStatus, N_("AE Locked")},/* 0xD105 */ {PTP_DPC_NIKON_FVLockStatus, N_("FV Locked")},/* 0xD106 */ {PTP_DPC_NIKON_AutofocusLCDTopMode2, /* 0xD107 */ N_("AF LCD Top Mode 2")}, {PTP_DPC_NIKON_AutofocusArea, /* 0xD108 */ N_("Active AF Sensor")}, {PTP_DPC_NIKON_FlexibleProgram, /* 0xD109 */ N_("Flexible Program")}, {PTP_DPC_NIKON_LightMeter, /* 0xD10A */ N_("Exposure Meter")}, {PTP_DPC_NIKON_RecordingMedia, /* 0xD10B */ N_("Recording Media")}, {PTP_DPC_NIKON_USBSpeed, /* 0xD10C */ N_("USB Speed")}, {PTP_DPC_NIKON_CCDNumber, /* 0xD10D */ N_("CCD Serial Number")}, {PTP_DPC_NIKON_CameraOrientation, /* 0xD10E */ N_("Camera Orientation")}, {PTP_DPC_NIKON_GroupPtnType, /* 0xD10F */ N_("Group PTN Type")}, {PTP_DPC_NIKON_FNumberLock, /* 0xD110 */ N_("FNumber Lock")}, {PTP_DPC_NIKON_ExposureApertureLock, /* 0xD111 */ N_("Exposure Aperture Lock")}, {PTP_DPC_NIKON_TVLockSetting, /* 0xD112 */ N_("TV Lock Setting")}, {PTP_DPC_NIKON_AVLockSetting, /* 0xD113 */ N_("AV Lock Setting")}, {PTP_DPC_NIKON_IllumSetting, /* 0xD114 */ N_("Illum Setting")}, {PTP_DPC_NIKON_FocusPointBright, /* 0xD115 */ N_("Focus Point Bright")}, {PTP_DPC_NIKON_ExternalFlashAttached, /* 0xD120 */ N_("External Flash Attached")}, {PTP_DPC_NIKON_ExternalFlashStatus, /* 0xD121 */ N_("External Flash Status")}, {PTP_DPC_NIKON_ExternalFlashSort, /* 0xD122 */ N_("External Flash Sort")}, {PTP_DPC_NIKON_ExternalFlashMode, /* 0xD123 */ N_("External Flash Mode")}, {PTP_DPC_NIKON_ExternalFlashCompensation, /* 0xD124 */ N_("External Flash Compensation")}, {PTP_DPC_NIKON_NewExternalFlashMode, /* 0xD125 */ N_("External Flash Mode")}, {PTP_DPC_NIKON_FlashExposureCompensation, /* 0xD126 */ N_("Flash Exposure Compensation")}, {PTP_DPC_NIKON_HDRMode, /* 0xD130 */ N_("HDR Mode")}, {PTP_DPC_NIKON_HDRHighDynamic, /* 0xD131 */ N_("HDR High Dynamic")}, {PTP_DPC_NIKON_HDRSmoothing, /* 0xD132 */ N_("HDR Smoothing")}, {PTP_DPC_NIKON_OptimizeImage, /* 0xD140 */ N_("Optimize Image")}, {PTP_DPC_NIKON_Saturation, /* 0xD142 */ N_("Saturation")}, {PTP_DPC_NIKON_BW_FillerEffect, /* 0xD143 */ N_("BW Filler Effect")}, {PTP_DPC_NIKON_BW_Sharpness, /* 0xD144 */ N_("BW Sharpness")}, {PTP_DPC_NIKON_BW_Contrast, /* 0xD145 */ N_("BW Contrast")}, {PTP_DPC_NIKON_BW_Setting_Type, /* 0xD146 */ N_("BW Setting Type")}, {PTP_DPC_NIKON_Slot2SaveMode, /* 0xD148 */ N_("Slot 2 Save Mode")}, {PTP_DPC_NIKON_RawBitMode, /* 0xD149 */ N_("Raw Bit Mode")}, {PTP_DPC_NIKON_ActiveDLighting, /* 0xD14E */ N_("Active D-Lighting")}, {PTP_DPC_NIKON_FlourescentType, /* 0xD14F */ N_("Flourescent Type")}, {PTP_DPC_NIKON_TuneColourTemperature, /* 0xD150 */ N_("Tune Colour Temperature")}, {PTP_DPC_NIKON_TunePreset0, /* 0xD151 */ N_("Tune Preset 0")}, {PTP_DPC_NIKON_TunePreset1, /* 0xD152 */ N_("Tune Preset 1")}, {PTP_DPC_NIKON_TunePreset2, /* 0xD153 */ N_("Tune Preset 2")}, {PTP_DPC_NIKON_TunePreset3, /* 0xD154 */ N_("Tune Preset 3")}, {PTP_DPC_NIKON_TunePreset4, /* 0xD155 */ N_("Tune Preset 4")}, {PTP_DPC_NIKON_BeepOff, /* 0xD160 */ N_("AF Beep Mode")}, {PTP_DPC_NIKON_AutofocusMode, /* 0xD161 */ N_("Autofocus Mode")}, {PTP_DPC_NIKON_AFAssist, /* 0xD163 */ N_("AF Assist Lamp")}, {PTP_DPC_NIKON_PADVPMode, /* 0xD164 */ N_("Auto ISO P/A/DVP Setting")}, {PTP_DPC_NIKON_ImageReview, /* 0xD165 */ N_("Image Review")}, {PTP_DPC_NIKON_AFAreaIllumination, /* 0xD166 */ N_("AF Area Illumination")}, {PTP_DPC_NIKON_FlashMode, /* 0xD167 */ N_("Flash Mode")}, {PTP_DPC_NIKON_FlashCommanderMode, /* 0xD168 */ N_("Flash Commander Mode")}, {PTP_DPC_NIKON_FlashSign, /* 0xD169 */ N_("Flash Sign")}, {PTP_DPC_NIKON_ISO_Auto, /* 0xD16A */ N_("ISO Auto")}, {PTP_DPC_NIKON_RemoteTimeout, /* 0xD16B */ N_("Remote Timeout")}, {PTP_DPC_NIKON_GridDisplay, /* 0xD16C */ N_("Viewfinder Grid Display")}, {PTP_DPC_NIKON_FlashModeManualPower, /* 0xD16D */ N_("Flash Mode Manual Power")}, {PTP_DPC_NIKON_FlashModeCommanderPower, /* 0xD16E */ N_("Flash Mode Commander Power")}, {PTP_DPC_NIKON_AutoFP, /* 0xD16F */ N_("Auto FP")}, {PTP_DPC_NIKON_CSMMenu, /* 0xD180 */ N_("CSM Menu")}, {PTP_DPC_NIKON_WarningDisplay, /* 0xD181 */ N_("Warning Display")}, {PTP_DPC_NIKON_BatteryCellKind, /* 0xD182 */ N_("Battery Cell Kind")}, {PTP_DPC_NIKON_ISOAutoHiLimit, /* 0xD183 */ N_("ISO Auto High Limit")}, {PTP_DPC_NIKON_DynamicAFArea, /* 0xD184 */ N_("Dynamic AF Area")}, {PTP_DPC_NIKON_ContinuousSpeedHigh, /* 0xD186 */ N_("Continuous Speed High")}, {PTP_DPC_NIKON_InfoDispSetting, /* 0xD187 */ N_("Info Disp Setting")}, {PTP_DPC_NIKON_PreviewButton, /* 0xD189 */ N_("Preview Button")}, {PTP_DPC_NIKON_PreviewButton2, /* 0xD18A */ N_("Preview Button 2")}, {PTP_DPC_NIKON_AEAFLockButton2, /* 0xD18B */ N_("AEAF Lock Button 2")}, {PTP_DPC_NIKON_IndicatorDisp, /* 0xD18D */ N_("Indicator Display")}, {PTP_DPC_NIKON_CellKindPriority, /* 0xD18E */ N_("Cell Kind Priority")}, {PTP_DPC_NIKON_BracketingFramesAndSteps, /* 0xD190 */ N_("Bracketing Frames and Steps")}, {PTP_DPC_NIKON_LiveViewMode, /* 0xD1A0 */ N_("Live View Mode")}, {PTP_DPC_NIKON_LiveViewDriveMode, /* 0xD1A1 */ N_("Live View Drive Mode")}, {PTP_DPC_NIKON_LiveViewStatus, /* 0xD1A2 */ N_("Live View Status")}, {PTP_DPC_NIKON_LiveViewImageZoomRatio, /* 0xD1A3 */ N_("Live View Image Zoom Ratio")}, {PTP_DPC_NIKON_LiveViewProhibitCondition, /* 0xD1A4 */ N_("Live View Prohibit Condition")}, {PTP_DPC_NIKON_ExposureDisplayStatus, /* 0xD1B0 */ N_("Exposure Display Status")}, {PTP_DPC_NIKON_ExposureIndicateStatus, /* 0xD1B1 */ N_("Exposure Indicate Status")}, {PTP_DPC_NIKON_InfoDispErrStatus, /* 0xD1B2 */ N_("Info Display Error Status")}, {PTP_DPC_NIKON_ExposureIndicateLightup, /* 0xD1B3 */ N_("Exposure Indicate Lightup")}, {PTP_DPC_NIKON_FlashOpen, /* 0xD1C0 */ N_("Flash Open")}, {PTP_DPC_NIKON_FlashCharged, /* 0xD1C1 */ N_("Flash Charged")}, {PTP_DPC_NIKON_FlashMRepeatValue, /* 0xD1D0 */ N_("Flash MRepeat Value")}, {PTP_DPC_NIKON_FlashMRepeatCount, /* 0xD1D1 */ N_("Flash MRepeat Count")}, {PTP_DPC_NIKON_FlashMRepeatInterval, /* 0xD1D2 */ N_("Flash MRepeat Interval")}, {PTP_DPC_NIKON_FlashCommandChannel, /* 0xD1D3 */ N_("Flash Command Channel")}, {PTP_DPC_NIKON_FlashCommandSelfMode, /* 0xD1D4 */ N_("Flash Command Self Mode")}, {PTP_DPC_NIKON_FlashCommandSelfCompensation, /* 0xD1D5 */ N_("Flash Command Self Compensation")}, {PTP_DPC_NIKON_FlashCommandSelfValue, /* 0xD1D6 */ N_("Flash Command Self Value")}, {PTP_DPC_NIKON_FlashCommandAMode, /* 0xD1D7 */ N_("Flash Command A Mode")}, {PTP_DPC_NIKON_FlashCommandACompensation, /* 0xD1D8 */ N_("Flash Command A Compensation")}, {PTP_DPC_NIKON_FlashCommandAValue, /* 0xD1D9 */ N_("Flash Command A Value")}, {PTP_DPC_NIKON_FlashCommandBMode, /* 0xD1DA */ N_("Flash Command B Mode")}, {PTP_DPC_NIKON_FlashCommandBCompensation, /* 0xD1DB */ N_("Flash Command B Compensation")}, {PTP_DPC_NIKON_FlashCommandBValue, /* 0xD1DC */ N_("Flash Command B Value")}, {PTP_DPC_NIKON_ActivePicCtrlItem, /* 0xD200 */ N_("Active Pic Ctrl Item")}, {PTP_DPC_NIKON_ChangePicCtrlItem, /* 0xD201 */ N_("Change Pic Ctrl Item")}, /* nikon 1 stuff */ {PTP_DPC_NIKON_1_ISO, /* 0xf002 */ N_("ISO")}, {PTP_DPC_NIKON_1_ImageSize, /* 0xf00a */ N_("Image Size")}, {PTP_DPC_NIKON_1_LongExposureNoiseReduction, /* 0xF00D */ N_("Long Exposure Noise Reduction")}, {PTP_DPC_NIKON_1_MovQuality, /* 0xF01C */ N_("Movie Quality")}, {PTP_DPC_NIKON_1_HiISONoiseReduction, /* 0xF00E */ N_("High ISO Noise Reduction")}, {PTP_DPC_NIKON_1_WhiteBalance, /* 0xF00C */ N_("White Balance")}, {PTP_DPC_NIKON_1_ImageCompression, /* 0xF009 */ N_("Image Compression")}, {PTP_DPC_NIKON_1_ActiveDLighting, /* 0xF00F */ N_("Active D-Lighting")}, {0,NULL} }; struct { uint16_t dpc; const char *txt; } ptp_device_properties_MTP[] = { {PTP_DPC_MTP_SecureTime, N_("Secure Time")}, /* D101 */ {PTP_DPC_MTP_DeviceCertificate, N_("Device Certificate")}, /* D102 */ {PTP_DPC_MTP_RevocationInfo, N_("Revocation Info")}, /* D103 */ {PTP_DPC_MTP_SynchronizationPartner, /* D401 */ N_("Synchronization Partner")}, {PTP_DPC_MTP_DeviceFriendlyName, /* D402 */ N_("Friendly Device Name")}, {PTP_DPC_MTP_VolumeLevel, N_("Volume Level")}, /* D403 */ {PTP_DPC_MTP_DeviceIcon, N_("Device Icon")}, /* D405 */ {PTP_DPC_MTP_SessionInitiatorInfo, N_("Session Initiator Info")},/* D406 */ {PTP_DPC_MTP_PerceivedDeviceType, N_("Perceived Device Type")},/* D407 */ {PTP_DPC_MTP_PlaybackRate, N_("Playback Rate")}, /* D410 */ {PTP_DPC_MTP_PlaybackObject, N_("Playback Object")}, /* D411 */ {PTP_DPC_MTP_PlaybackContainerIndex, /* D412 */ N_("Playback Container Index")}, {PTP_DPC_MTP_PlaybackPosition, N_("Playback Position")}, /* D413 */ {PTP_DPC_MTP_PlaysForSureID, N_("PlaysForSure ID")}, /* D131 (?) */ {0,NULL} }; struct { uint16_t dpc; const char *txt; } ptp_device_properties_FUJI[] = { {PTP_DPC_FUJI_ColorTemperature, N_("Color Temperature")}, /* 0xD017 */ {PTP_DPC_FUJI_Quality, N_("Quality")}, /* 0xD018 */ {PTP_DPC_FUJI_Quality, N_("Release Mode")}, /* 0xD201 */ {PTP_DPC_FUJI_Quality, N_("Focus Areas")}, /* 0xD206 */ {PTP_DPC_FUJI_Quality, N_("AE Lock")}, /* 0xD213 */ {PTP_DPC_FUJI_Quality, N_("Aperture")}, /* 0xD218 */ {PTP_DPC_FUJI_Quality, N_("Shutter Speed")}, /* 0xD219 */ {0,NULL} }; struct { uint16_t dpc; const char *txt; } ptp_device_properties_SONY[] = { {PTP_DPC_SONY_DPCCompensation, ("DOC Compensation")}, /* 0xD200 */ {PTP_DPC_SONY_DRangeOptimize, ("DRangeOptimize")}, /* 0xD201 */ {PTP_DPC_SONY_ImageSize, N_("Image size")}, /* 0xD203 */ {PTP_DPC_SONY_ShutterSpeed, N_("Shutter speed")}, /* 0xD20D */ {PTP_DPC_SONY_ColorTemp, N_("Color temperature")}, /* 0xD20F */ {PTP_DPC_SONY_CCFilter, ("CC Filter")}, /* 0xD210 */ {PTP_DPC_SONY_AspectRatio, N_("Aspect Ratio")}, /* 0xD211 */ {PTP_DPC_SONY_ExposeIndex, N_("Expose Index")}, /* 0xD216 */ {PTP_DPC_SONY_PictureEffect, N_("Picture Effect")}, /* 0xD21B */ {PTP_DPC_SONY_ABFilter, N_("AB Filter")}, /* 0xD21C */ {PTP_DPC_SONY_ISO, N_("ISO")}, /* 0xD21E */ {PTP_DPC_SONY_Movie, N_("Movie")}, /* 0xD2C8 */ {PTP_DPC_SONY_StillImage, N_("Still Image")}, /* 0xD2C7 */ {0,NULL} }; for (i=0; ptp_device_properties[i].txt!=NULL; i++) if (ptp_device_properties[i].dpc==dpc) return (ptp_device_properties[i].txt); if (params->deviceinfo.VendorExtensionID==PTP_VENDOR_MICROSOFT || params->deviceinfo.VendorExtensionID==PTP_VENDOR_MTP) for (i=0; ptp_device_properties_MTP[i].txt!=NULL; i++) if (ptp_device_properties_MTP[i].dpc==dpc) return (ptp_device_properties_MTP[i].txt); if (params->deviceinfo.VendorExtensionID==PTP_VENDOR_EASTMAN_KODAK) for (i=0; ptp_device_properties_EK[i].txt!=NULL; i++) if (ptp_device_properties_EK[i].dpc==dpc) return (ptp_device_properties_EK[i].txt); if (params->deviceinfo.VendorExtensionID==PTP_VENDOR_CANON) for (i=0; ptp_device_properties_Canon[i].txt!=NULL; i++) if (ptp_device_properties_Canon[i].dpc==dpc) return (ptp_device_properties_Canon[i].txt); if (params->deviceinfo.VendorExtensionID==PTP_VENDOR_NIKON) for (i=0; ptp_device_properties_Nikon[i].txt!=NULL; i++) if (ptp_device_properties_Nikon[i].dpc==dpc) return (ptp_device_properties_Nikon[i].txt); if (params->deviceinfo.VendorExtensionID==PTP_VENDOR_FUJI) for (i=0; ptp_device_properties_FUJI[i].txt!=NULL; i++) if (ptp_device_properties_FUJI[i].dpc==dpc) return (ptp_device_properties_FUJI[i].txt); if (params->deviceinfo.VendorExtensionID==PTP_VENDOR_SONY) for (i=0; ptp_device_properties_SONY[i].txt!=NULL; i++) if (ptp_device_properties_SONY[i].dpc==dpc) return (ptp_device_properties_SONY[i].txt); return NULL; } static int64_t _value_to_num(PTPPropertyValue *data, uint16_t dt) { if (dt == PTP_DTC_STR) { if (!data->str) return 0; return atol(data->str); } if (dt & PTP_DTC_ARRAY_MASK) { return 0; } else { switch (dt) { case PTP_DTC_UNDEF: return 0; case PTP_DTC_INT8: return data->i8; case PTP_DTC_UINT8: return data->u8; case PTP_DTC_INT16: return data->i16; case PTP_DTC_UINT16: return data->u16; case PTP_DTC_INT32: return data->i32; case PTP_DTC_UINT32: return data->u32; /* PTP_DTC_INT64 PTP_DTC_UINT64 PTP_DTC_INT128 PTP_DTC_UINT128 */ default: return 0; } } return 0; } #define PTP_VAL_BOOL(dpc) {dpc, 0, N_("Off")}, {dpc, 1, N_("On")} #define PTP_VENDOR_VAL_BOOL(dpc,vendor) {dpc, vendor, 0, N_("Off")}, {dpc, vendor, 1, N_("On")} #define PTP_VENDOR_VAL_RBOOL(dpc,vendor) {dpc, vendor, 0, N_("On")}, {dpc, vendor, 1, N_("Off")} #define PTP_VENDOR_VAL_YN(dpc,vendor) {dpc, vendor, 0, N_("No")}, {dpc, vendor, 1, N_("Yes")} int ptp_render_property_value(PTPParams* params, uint16_t dpc, PTPDevicePropDesc *dpd, unsigned int length, char *out) { unsigned int i; int64_t kval; struct { uint16_t dpc; uint16_t vendor; double coef; double bias; const char *format; } ptp_value_trans[] = { {PTP_DPC_BatteryLevel, 0, 1.0, 0.0, "%.0f%%"}, /* 5001 */ {PTP_DPC_FNumber, 0, 0.01, 0.0, "f/%.2g"}, /* 5007 */ {PTP_DPC_FocalLength, 0, 0.01, 0.0, "%.0f mm"}, /* 5008 */ {PTP_DPC_FocusDistance, 0, 0.01, 0.0, "%.0f mm"}, /* 5009 */ {PTP_DPC_ExposureTime, 0, 0.00001, 0.0, "%.2g sec"}, /* 500D */ {PTP_DPC_ExposureIndex, 0, 1.0, 0.0, "ISO %.0f"}, /* 500F */ {PTP_DPC_ExposureBiasCompensation, 0, 0.001, 0.0, N_("%.1f stops")},/* 5010 */ {PTP_DPC_CaptureDelay, 0, 0.001, 0.0, "%.1fs"}, /* 5012 */ {PTP_DPC_DigitalZoom, 0, 0.1, 0.0, "%.1f"}, /* 5016 */ {PTP_DPC_BurstInterval, 0, 0.001, 0.0, "%.1fs"}, /* 5019 */ /* Nikon device properties */ {PTP_DPC_NIKON_LightMeter, PTP_VENDOR_NIKON, 0.08333, 0.0, N_("%.1f stops")},/* D10A */ {PTP_DPC_NIKON_FlashExposureCompensation, PTP_VENDOR_NIKON, 0.16666, 0.0, N_("%.1f stops")}, /* D126 */ {PTP_DPC_NIKON_CenterWeightArea, PTP_VENDOR_NIKON, 2.0, 6.0, N_("%.0f mm")},/* D059 */ {PTP_DPC_NIKON_FocalLengthMin, PTP_VENDOR_NIKON, 0.01, 0.0, "%.0f mm"}, /* D0E3 */ {PTP_DPC_NIKON_FocalLengthMax, PTP_VENDOR_NIKON, 0.01, 0.0, "%.0f mm"}, /* D0E4 */ {PTP_DPC_NIKON_MaxApAtMinFocalLength, PTP_VENDOR_NIKON, 0.01, 0.0, "f/%.2g"}, /* D0E5 */ {PTP_DPC_NIKON_MaxApAtMaxFocalLength, PTP_VENDOR_NIKON, 0.01, 0.0, "f/%.2g"}, /* D0E6 */ {PTP_DPC_NIKON_ExternalFlashCompensation, PTP_VENDOR_NIKON, 1.0/6.0, 0.0,"%.0f"}, /* D124 */ {PTP_DPC_NIKON_ExposureIndicateStatus, PTP_VENDOR_NIKON, 0.08333, 0.0, N_("%.1f stops")},/* D1B1 - FIXME: check if correct. */ {PTP_DPC_NIKON_AngleLevel, PTP_VENDOR_NIKON, 1.0/65536, 0.0, "%.1f'"},/* 0xD067 */ {0, 0, 0.0, 0.0, NULL} }; struct { uint16_t dpc; uint16_t vendor; int64_t key; char *value; } ptp_value_list[] = { {PTP_DPC_CompressionSetting, 0, 0, N_("JPEG Basic")}, /* 5004 */ {PTP_DPC_CompressionSetting, 0, 1, N_("JPEG Norm")}, {PTP_DPC_CompressionSetting, 0, 2, N_("JPEG Fine")}, {PTP_DPC_CompressionSetting, 0, 4, N_("RAW")}, {PTP_DPC_CompressionSetting, 0, 5, N_("RAW + JPEG Basic")}, {PTP_DPC_WhiteBalance, 0, 1, N_("Manual")}, {PTP_DPC_WhiteBalance, 0, 2, N_("Automatic")}, /* 5005 */ {PTP_DPC_WhiteBalance, 0, 3, N_("One-push Automatic")}, {PTP_DPC_WhiteBalance, 0, 4, N_("Daylight")}, {PTP_DPC_WhiteBalance, 0, 5, N_("Fluorescent")}, {PTP_DPC_WhiteBalance, 0, 6, N_("Incandescent")}, {PTP_DPC_WhiteBalance, 0, 7, N_("Flash")}, {PTP_DPC_WhiteBalance, PTP_VENDOR_NIKON, 32784, N_("Cloudy")}, {PTP_DPC_WhiteBalance, PTP_VENDOR_NIKON, 32785, N_("Shade")}, {PTP_DPC_WhiteBalance, PTP_VENDOR_NIKON, 32786, N_("Color Temperature")}, {PTP_DPC_WhiteBalance, PTP_VENDOR_NIKON, 32787, N_("Preset")}, {PTP_DPC_FocusMode, 0, 1, N_("Manual Focus")}, /* 500A */ {PTP_DPC_FocusMode, 0, 2, N_("Automatic")}, {PTP_DPC_FocusMode, 0, 3, N_("Automatic Macro (close-up)")}, {PTP_DPC_FocusMode, PTP_VENDOR_NIKON, 32784, "AF-S"}, {PTP_DPC_FocusMode, PTP_VENDOR_NIKON, 32785, "AF-C"}, {PTP_DPC_FocusMode, PTP_VENDOR_NIKON, 32786, "AF-A"}, {PTP_DPC_ExposureMeteringMode, 0, 1, N_("Average")}, /* 500B */ {PTP_DPC_ExposureMeteringMode, 0, 2, N_("Center Weighted Average")}, {PTP_DPC_ExposureMeteringMode, 0, 3, N_("Multi-spot")}, {PTP_DPC_ExposureMeteringMode, 0, 4, N_("Center-spot")}, {PTP_DPC_FlashMode, 0, 0, N_("Undefined")}, /* 500C */ {PTP_DPC_FlashMode, 0, 1, N_("Automatic flash")}, {PTP_DPC_FlashMode, 0, 2, N_("Flash off")}, {PTP_DPC_FlashMode, 0, 3, N_("Fill flash")}, {PTP_DPC_FlashMode, 0, 4, N_("Automatic Red-eye Reduction")}, {PTP_DPC_FlashMode, 0, 5, N_("Red-eye fill flash")}, {PTP_DPC_FlashMode, 0, 6, N_("External sync")}, {PTP_DPC_FlashMode, PTP_VENDOR_NIKON, 32784, N_("Auto")}, {PTP_DPC_FlashMode, PTP_VENDOR_NIKON, 32785, N_("Auto Slow Sync")}, {PTP_DPC_FlashMode, PTP_VENDOR_NIKON, 32786, N_("Rear Curtain Sync + Slow Sync")}, {PTP_DPC_FlashMode, PTP_VENDOR_NIKON, 32787, N_("Red-eye Reduction + Slow Sync")}, {PTP_DPC_ExposureProgramMode, 0, 1, "M"}, /* 500E */ {PTP_DPC_ExposureProgramMode, 0, 3, "A"}, {PTP_DPC_ExposureProgramMode, 0, 4, "S"}, {PTP_DPC_ExposureProgramMode, 0, 2, "P"}, {PTP_DPC_ExposureProgramMode, PTP_VENDOR_NIKON, 32784, N_("Auto")}, {PTP_DPC_ExposureProgramMode, PTP_VENDOR_NIKON, 32785, N_("Portrait")}, {PTP_DPC_ExposureProgramMode, PTP_VENDOR_NIKON, 32786, N_("Landscape")}, {PTP_DPC_ExposureProgramMode, PTP_VENDOR_NIKON, 32787, N_("Macro")}, {PTP_DPC_ExposureProgramMode, PTP_VENDOR_NIKON, 32788, N_("Sports")}, {PTP_DPC_ExposureProgramMode, PTP_VENDOR_NIKON, 32790, N_("Night Landscape")}, {PTP_DPC_ExposureProgramMode, PTP_VENDOR_NIKON, 32789, N_("Night Portrait")}, {PTP_DPC_StillCaptureMode, 0, 1, N_("Single Shot")}, /* 5013 */ {PTP_DPC_StillCaptureMode, 0, 2, N_("Power Wind")}, {PTP_DPC_StillCaptureMode, 0, 3, N_("Timelapse")}, {PTP_DPC_StillCaptureMode, PTP_VENDOR_NIKON, 32784, N_("Continuous Low Speed")}, {PTP_DPC_StillCaptureMode, PTP_VENDOR_NIKON, 32785, N_("Timer")}, {PTP_DPC_StillCaptureMode, PTP_VENDOR_NIKON, 32787, N_("Remote")}, {PTP_DPC_StillCaptureMode, PTP_VENDOR_NIKON, 32787, N_("Mirror Up")}, {PTP_DPC_StillCaptureMode, PTP_VENDOR_NIKON, 32788, N_("Timer + Remote")}, {PTP_DPC_FocusMeteringMode, 0, 1, N_("Centre-spot")}, /* 501C */ {PTP_DPC_FocusMeteringMode, 0, 2, N_("Multi-spot")}, {PTP_DPC_FocusMeteringMode, PTP_VENDOR_NIKON, 32784, N_("Single Area")}, {PTP_DPC_FocusMeteringMode, PTP_VENDOR_NIKON, 32785, N_("Closest Subject")}, {PTP_DPC_FocusMeteringMode, PTP_VENDOR_NIKON, 32786, N_("Group Dynamic")}, /* Nikon specific device properties */ {PTP_DPC_NIKON_ImageSharpening, PTP_VENDOR_NIKON, 0, N_("Auto")}, /* D02A */ {PTP_DPC_NIKON_ImageSharpening, PTP_VENDOR_NIKON, 1, N_("Normal")}, {PTP_DPC_NIKON_ImageSharpening, PTP_VENDOR_NIKON, 2, N_("Low")}, {PTP_DPC_NIKON_ImageSharpening, PTP_VENDOR_NIKON, 3, N_("Medium Low")}, {PTP_DPC_NIKON_ImageSharpening, PTP_VENDOR_NIKON, 4, N_("Medium high")}, {PTP_DPC_NIKON_ImageSharpening, PTP_VENDOR_NIKON, 5, N_("High")}, {PTP_DPC_NIKON_ImageSharpening, PTP_VENDOR_NIKON, 6, N_("None")}, {PTP_DPC_NIKON_ToneCompensation, PTP_VENDOR_NIKON, 0, N_("Auto")}, /* D02B */ {PTP_DPC_NIKON_ToneCompensation, PTP_VENDOR_NIKON, 1, N_("Normal")}, {PTP_DPC_NIKON_ToneCompensation, PTP_VENDOR_NIKON, 2, N_("Low contrast")}, {PTP_DPC_NIKON_ToneCompensation, PTP_VENDOR_NIKON, 3, N_("Medium Low")}, {PTP_DPC_NIKON_ToneCompensation, PTP_VENDOR_NIKON, 4, N_("Medium High")}, {PTP_DPC_NIKON_ToneCompensation, PTP_VENDOR_NIKON, 5, N_("High control")}, {PTP_DPC_NIKON_ToneCompensation, PTP_VENDOR_NIKON, 6, N_("Custom")}, {PTP_DPC_NIKON_ColorModel, PTP_VENDOR_NIKON, 0, "sRGB"}, /* D02C */ {PTP_DPC_NIKON_ColorModel, PTP_VENDOR_NIKON, 1, "AdobeRGB"}, {PTP_DPC_NIKON_ColorModel, PTP_VENDOR_NIKON, 2, "sRGB"}, PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_AutoDXCrop,PTP_VENDOR_NIKON), /* D033 */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_FocusAreaWrap,PTP_VENDOR_NIKON), /* D04F */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_EnableCopyright,PTP_VENDOR_NIKON), /* D053 */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_ISOAuto,PTP_VENDOR_NIKON), /* D054 */ /* FIXME! this is not ISO Auto (which is a bool) Perhaps ISO Auto Time?*/ {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 0, "1/125"}, /* D054 */ {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 1, "1/60"}, {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 2, "1/30"}, {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 3, "1/15"}, {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 4, "1/8"}, {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 5, "1/4"}, {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 6, "1/2"}, {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 7, "1"}, {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 8, "2"}, {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 9, "4"}, {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 10, "8"}, {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 11, "15"}, {PTP_DPC_NIKON_ISOAuto, PTP_VENDOR_NIKON, 12, "30"}, {PTP_DPC_NIKON_EVStep, PTP_VENDOR_NIKON, 0, "1/3"}, /* D056 */ {PTP_DPC_NIKON_EVStep, PTP_VENDOR_NIKON, 1, "1/2"}, PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_ExposureCompensation,PTP_VENDOR_NIKON),/*D058 */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_AELockMode,PTP_VENDOR_NIKON), /* D05E */ {PTP_DPC_NIKON_AELAFLMode, PTP_VENDOR_NIKON, 0, N_("AE/AF Lock")}, /* D05F */ {PTP_DPC_NIKON_AELAFLMode, PTP_VENDOR_NIKON, 1, N_("AF Lock only")}, {PTP_DPC_NIKON_AELAFLMode, PTP_VENDOR_NIKON, 2, N_("AE Lock only")}, {PTP_DPC_NIKON_AELAFLMode, PTP_VENDOR_NIKON, 3, N_("AF Lock Hold")}, {PTP_DPC_NIKON_AELAFLMode, PTP_VENDOR_NIKON, 4, N_("AF On")}, {PTP_DPC_NIKON_AELAFLMode, PTP_VENDOR_NIKON, 5, N_("Flash Lock")}, {PTP_DPC_NIKON_MeterOff, PTP_VENDOR_NIKON, 0, N_("4 seconds")}, /* D062 */ {PTP_DPC_NIKON_MeterOff, PTP_VENDOR_NIKON, 1, N_("6 seconds")}, {PTP_DPC_NIKON_MeterOff, PTP_VENDOR_NIKON, 2, N_("8 seconds")}, {PTP_DPC_NIKON_MeterOff, PTP_VENDOR_NIKON, 3, N_("16 seconds")}, {PTP_DPC_NIKON_MeterOff, PTP_VENDOR_NIKON, 4, N_("30 minutes")}, {PTP_DPC_NIKON_MeterOff, PTP_VENDOR_NIKON, 5, N_("30 seconds")}, {PTP_DPC_NIKON_SelfTimer, PTP_VENDOR_NIKON, 0, N_("2 seconds")}, /* D063 */ {PTP_DPC_NIKON_SelfTimer, PTP_VENDOR_NIKON, 1, N_("5 seconds")}, {PTP_DPC_NIKON_SelfTimer, PTP_VENDOR_NIKON, 2, N_("10 seconds")}, {PTP_DPC_NIKON_SelfTimer, PTP_VENDOR_NIKON, 3, N_("20 seconds")}, {PTP_DPC_NIKON_MonitorOff, PTP_VENDOR_NIKON, 0, N_("10 seconds")}, /* D064 */ {PTP_DPC_NIKON_MonitorOff, PTP_VENDOR_NIKON, 1, N_("20 seconds")}, {PTP_DPC_NIKON_MonitorOff, PTP_VENDOR_NIKON, 2, N_("1 minute")}, {PTP_DPC_NIKON_MonitorOff, PTP_VENDOR_NIKON, 3, N_("5 minutes")}, {PTP_DPC_NIKON_MonitorOff, PTP_VENDOR_NIKON, 4, N_("10 minutes")}, {PTP_DPC_NIKON_MonitorOff, PTP_VENDOR_NIKON, 5, N_("5 seconds")}, /* d80 observed */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_ExposureDelayMode,PTP_VENDOR_NIKON), /* D06A */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_LongExposureNoiseReduction,PTP_VENDOR_NIKON), /* D06B */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_FileNumberSequence,PTP_VENDOR_NIKON), /* D06C */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_D7Illumination,PTP_VENDOR_NIKON), /* D06F */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_SHSET_CH_GUID_DISP,PTP_VENDOR_NIKON), /* D071 */ {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 0, "1/60s"}, /* D075 */ {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 1, "1/30s"}, {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 2, "1/15s"}, {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 3, "1/8s"}, {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 4, "1/4s"}, {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 5, "1/2s"}, {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 6, "1s"}, {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 7, "2s"}, {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 8, "4s"}, {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 9, "8s"}, {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 10, "15s"}, {PTP_DPC_NIKON_FlashShutterSpeed, PTP_VENDOR_NIKON, 11, "30s"}, PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_E4ModelingFlash,PTP_VENDOR_NIKON), /* D077 */ {PTP_DPC_NIKON_BracketSet, PTP_VENDOR_NIKON, 0, N_("AE & Flash")}, /* D078 */ {PTP_DPC_NIKON_BracketSet, PTP_VENDOR_NIKON, 1, N_("AE only")}, {PTP_DPC_NIKON_BracketSet, PTP_VENDOR_NIKON, 2, N_("Flash only")}, {PTP_DPC_NIKON_BracketSet, PTP_VENDOR_NIKON, 3, N_("WB bracketing")}, {PTP_DPC_NIKON_BracketOrder, PTP_VENDOR_NIKON, 0, N_("MTR > Under")}, /* D07A */ {PTP_DPC_NIKON_BracketOrder, PTP_VENDOR_NIKON, 1, N_("Under > MTR")}, {PTP_DPC_NIKON_F1CenterButtonShootingMode, PTP_VENDOR_NIKON, 0, N_("Reset focus point to center")}, /* D080 */ {PTP_DPC_NIKON_F1CenterButtonShootingMode, PTP_VENDOR_NIKON, 1, N_("Highlight active focus point")}, {PTP_DPC_NIKON_F1CenterButtonShootingMode, PTP_VENDOR_NIKON, 2, N_("Unused")}, PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_F3PhotoInfoPlayback,PTP_VENDOR_NIKON),/* D083 */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_F5CustomizeCommDials,PTP_VENDOR_NIKON),/* D085 */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_ReverseCommandDial,PTP_VENDOR_NIKON), /* D086 */ PTP_VENDOR_VAL_RBOOL(PTP_DPC_NIKON_F6ButtonsAndDials,PTP_VENDOR_NIKON), /* D089 */ PTP_VENDOR_VAL_RBOOL(PTP_DPC_NIKON_NoCFCard,PTP_VENDOR_NIKON), /* D08A */ PTP_VENDOR_VAL_RBOOL(PTP_DPC_NIKON_AFAreaPoint,PTP_VENDOR_NIKON), /* D08D */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_ImageCommentEnable,PTP_VENDOR_NIKON), /* D091 */ PTP_VENDOR_VAL_RBOOL(PTP_DPC_NIKON_ImageRotation,PTP_VENDOR_NIKON), /* D092 */ PTP_VENDOR_VAL_RBOOL(PTP_DPC_NIKON_MovVoice,PTP_VENDOR_NIKON), /* D0A1 */ PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_Bracketing,PTP_VENDOR_NIKON), /* D0C0 */ /* http://www.rottmerhusen.com/objektives/lensid/nikkor.html is complete */ {PTP_DPC_NIKON_LensID, PTP_VENDOR_NIKON, 0, N_("Unknown")}, /* D0E0 */ {PTP_DPC_NIKON_LensID, PTP_VENDOR_NIKON, 38, "Sigma 70-300mm 1:4-5.6 D APO Macro"}, {PTP_DPC_NIKON_LensID, PTP_VENDOR_NIKON, 83, "AF Nikkor 80-200mm 1:2.8 D ED"}, {PTP_DPC_NIKON_LensID, PTP_VENDOR_NIKON, 118, "AF Nikkor 50mm 1:1.8 D"}, {PTP_DPC_NIKON_LensID, PTP_VENDOR_NIKON, 127, "AF-S Nikkor 18-70mm 1:3.5-4.5G ED DX"}, {PTP_DPC_NIKON_LensID, PTP_VENDOR_NIKON, 139, "AF-S Nikkor 18-200mm 1:3.5-5.6 GED DX VR"}, {PTP_DPC_NIKON_LensID, PTP_VENDOR_NIKON, 147, "AF-S Nikkor 24-70mm 1:2.8G ED DX"}, {PTP_DPC_NIKON_LensID, PTP_VENDOR_NIKON, 154, "AF-S Nikkor 18-55mm 1:3.5-F5.6G DX VR"}, {PTP_DPC_NIKON_LensID, PTP_VENDOR_NIKON, 159, "AF-S Nikkor 35mm 1:1.8G DX"}, {PTP_DPC_NIKON_FinderISODisp, PTP_VENDOR_NIKON, 0, "Show ISO sensitivity"},/* 0xD0F0 */ {PTP_DPC_NIKON_FinderISODisp, PTP_VENDOR_NIKON, 1, "Show ISO/Easy ISO"}, {PTP_DPC_NIKON_FinderISODisp, PTP_VENDOR_NIKON, 2, "Show frame count"}, {PTP_DPC_NIKON_RawCompression, PTP_VENDOR_NIKON, 0, N_("Lossless")}, /* D016 */ {PTP_DPC_NIKON_RawCompression, PTP_VENDOR_NIKON, 1, N_("Lossy")}, PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_ACPower,PTP_VENDOR_NIKON), /* D101 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_AFLockStatus,PTP_VENDOR_NIKON), /* D104 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_AELockStatus,PTP_VENDOR_NIKON), /* D105 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_FVLockStatus,PTP_VENDOR_NIKON), /* D106 */ {PTP_DPC_NIKON_AutofocusArea, PTP_VENDOR_NIKON, 0, N_("Centre")}, /* D108 */ {PTP_DPC_NIKON_AutofocusArea, PTP_VENDOR_NIKON, 1, N_("Top")}, {PTP_DPC_NIKON_AutofocusArea, PTP_VENDOR_NIKON, 2, N_("Bottom")}, {PTP_DPC_NIKON_AutofocusArea, PTP_VENDOR_NIKON, 3, N_("Left")}, {PTP_DPC_NIKON_AutofocusArea, PTP_VENDOR_NIKON, 4, N_("Right")}, {PTP_DPC_NIKON_RecordingMedia, PTP_VENDOR_NIKON, 0, N_("Card")}, /* D10B */ {PTP_DPC_NIKON_RecordingMedia, PTP_VENDOR_NIKON, 1, N_("SDRam")}, {PTP_DPC_NIKON_USBSpeed, PTP_VENDOR_NIKON, 0, N_("USB 1.1")}, /* D10C */ {PTP_DPC_NIKON_USBSpeed, PTP_VENDOR_NIKON, 1, N_("USB 2.0")}, {PTP_DPC_NIKON_CameraOrientation, PTP_VENDOR_NIKON, 0, "0'"}, /* D10E */ {PTP_DPC_NIKON_CameraOrientation, PTP_VENDOR_NIKON, 1, "270'"}, {PTP_DPC_NIKON_CameraOrientation, PTP_VENDOR_NIKON, 2, "90'"}, {PTP_DPC_NIKON_CameraOrientation, PTP_VENDOR_NIKON, 3, "180'"}, PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_FNumberLock,PTP_VENDOR_NIKON), /* D110 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_ExposureApertureLock,PTP_VENDOR_NIKON), /* D111 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_TVLockSetting,PTP_VENDOR_NIKON), /* D112 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_AVLockSetting,PTP_VENDOR_NIKON), /* D113 */ {PTP_DPC_NIKON_IllumSetting,PTP_VENDOR_NIKON,0,N_("LCD Backlight")}, /* D114 */ {PTP_DPC_NIKON_IllumSetting,PTP_VENDOR_NIKON,1,N_("LCD Backlight and Info Display")}, PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_ExternalFlashAttached,PTP_VENDOR_NIKON),/* D120 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_ExternalFlashStatus,PTP_VENDOR_NIKON), /* D121 */ {PTP_DPC_NIKON_OptimizeImage, PTP_VENDOR_NIKON, 0, N_("Normal")}, /* D140 */ {PTP_DPC_NIKON_OptimizeImage, PTP_VENDOR_NIKON, 1, N_("Vivid")}, {PTP_DPC_NIKON_OptimizeImage, PTP_VENDOR_NIKON, 2, N_("Sharper")}, {PTP_DPC_NIKON_OptimizeImage, PTP_VENDOR_NIKON, 3, N_("Softer")}, {PTP_DPC_NIKON_OptimizeImage, PTP_VENDOR_NIKON, 4, N_("Direct Print")}, {PTP_DPC_NIKON_OptimizeImage, PTP_VENDOR_NIKON, 5, N_("Portrait")}, {PTP_DPC_NIKON_OptimizeImage, PTP_VENDOR_NIKON, 6, N_("Landscape")}, {PTP_DPC_NIKON_OptimizeImage, PTP_VENDOR_NIKON, 7, N_("Custom")}, {PTP_DPC_NIKON_Saturation, PTP_VENDOR_NIKON, 0, N_("Normal")}, /* D142 */ {PTP_DPC_NIKON_Saturation, PTP_VENDOR_NIKON, 1, N_("Moderate")}, {PTP_DPC_NIKON_Saturation, PTP_VENDOR_NIKON, 2, N_("Enhanced")}, PTP_VENDOR_VAL_RBOOL(PTP_DPC_NIKON_BeepOff,PTP_VENDOR_NIKON), /* D160 */ {PTP_DPC_NIKON_AutofocusMode, PTP_VENDOR_NIKON, 0, N_("AF-S")}, /* D161 */ {PTP_DPC_NIKON_AutofocusMode, PTP_VENDOR_NIKON, 1, N_("AF-C")}, {PTP_DPC_NIKON_AutofocusMode, PTP_VENDOR_NIKON, 2, N_("AF-A")}, {PTP_DPC_NIKON_AutofocusMode, PTP_VENDOR_NIKON, 3, N_("MF (fixed)")}, {PTP_DPC_NIKON_AutofocusMode, PTP_VENDOR_NIKON, 4, N_("MF (selection)")}, PTP_VENDOR_VAL_RBOOL(PTP_DPC_NIKON_AFAssist,PTP_VENDOR_NIKON), /* D163 */ {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 0, "1/125"}, /* D164 */ {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 1, "1/60"}, {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 2, "1/30"}, {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 3, "1/15"}, {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 4, "1/8"}, {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 5, "1/4"}, {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 6, "1/2"}, {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 7, "1"}, {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 8, "2"}, {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 9, "4"}, {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 10, "8"}, {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 11, "15"}, {PTP_DPC_NIKON_PADVPMode, PTP_VENDOR_NIKON, 12, "30"}, PTP_VENDOR_VAL_RBOOL(PTP_DPC_NIKON_ImageReview,PTP_VENDOR_NIKON), /* D165 */ {PTP_DPC_NIKON_AFAreaIllumination, PTP_VENDOR_NIKON, 0, N_("Auto")}, /* D166 */ {PTP_DPC_NIKON_AFAreaIllumination, PTP_VENDOR_NIKON, 1, N_("Off")}, {PTP_DPC_NIKON_AFAreaIllumination, PTP_VENDOR_NIKON, 2, N_("On")}, {PTP_DPC_NIKON_FlashMode, PTP_VENDOR_NIKON, 0, "iTTL"}, /* D167 */ {PTP_DPC_NIKON_FlashMode, PTP_VENDOR_NIKON, 1, N_("Manual")}, {PTP_DPC_NIKON_FlashMode, PTP_VENDOR_NIKON, 2, N_("Commander")}, {PTP_DPC_NIKON_FlashCommanderMode, PTP_VENDOR_NIKON, 0, N_("TTL")}, /* D168 */ {PTP_DPC_NIKON_FlashCommanderMode, PTP_VENDOR_NIKON, 1, N_("Auto Aperture")}, {PTP_DPC_NIKON_FlashCommanderMode, PTP_VENDOR_NIKON, 2, N_("Full Manual")}, PTP_VENDOR_VAL_RBOOL(PTP_DPC_NIKON_FlashSign,PTP_VENDOR_NIKON), /* D169 */ {PTP_DPC_NIKON_RemoteTimeout, PTP_VENDOR_NIKON, 0, N_("1 min")}, /* D16B */ {PTP_DPC_NIKON_RemoteTimeout, PTP_VENDOR_NIKON, 1, N_("5 mins")}, {PTP_DPC_NIKON_RemoteTimeout, PTP_VENDOR_NIKON, 2, N_("10 mins")}, {PTP_DPC_NIKON_RemoteTimeout, PTP_VENDOR_NIKON, 3, N_("15 mins")}, PTP_VENDOR_VAL_BOOL(PTP_DPC_NIKON_GridDisplay,PTP_VENDOR_NIKON), /* D16C */ {PTP_DPC_NIKON_FlashModeManualPower, PTP_VENDOR_NIKON, 0, N_("Full")}, /* D16D */ {PTP_DPC_NIKON_FlashModeManualPower, PTP_VENDOR_NIKON, 1, "1/2"}, {PTP_DPC_NIKON_FlashModeManualPower, PTP_VENDOR_NIKON, 2, "1/4"}, {PTP_DPC_NIKON_FlashModeManualPower, PTP_VENDOR_NIKON, 3, "1/8"}, {PTP_DPC_NIKON_FlashModeManualPower, PTP_VENDOR_NIKON, 4, "1/16"}, {PTP_DPC_NIKON_FlashModeCommanderPower, PTP_VENDOR_NIKON, 0, N_("Full")},/* D16E */ {PTP_DPC_NIKON_FlashModeCommanderPower, PTP_VENDOR_NIKON, 1, "1/2"}, {PTP_DPC_NIKON_FlashModeCommanderPower, PTP_VENDOR_NIKON, 2, "1/4"}, {PTP_DPC_NIKON_FlashModeCommanderPower, PTP_VENDOR_NIKON, 3, "1/8"}, {PTP_DPC_NIKON_FlashModeCommanderPower, PTP_VENDOR_NIKON, 4, "1/16"}, {PTP_DPC_NIKON_FlashModeCommanderPower, PTP_VENDOR_NIKON, 5, "1/32"}, {PTP_DPC_NIKON_FlashModeCommanderPower, PTP_VENDOR_NIKON, 6, "1/64"}, {PTP_DPC_NIKON_FlashModeCommanderPower, PTP_VENDOR_NIKON, 7, "1/128"}, PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_CSMMenu,PTP_VENDOR_NIKON), /* D180 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_WarningDisplay,PTP_VENDOR_NIKON), /* D181 */ {PTP_DPC_NIKON_BatteryCellKind, PTP_VENDOR_NIKON, 0, "LR6 (AA alkaline)"},/* D182 */ {PTP_DPC_NIKON_BatteryCellKind, PTP_VENDOR_NIKON, 1, "HR6 (AA Ni-Mh)"}, {PTP_DPC_NIKON_BatteryCellKind, PTP_VENDOR_NIKON, 2, "FR6 (AA Lithium)"}, {PTP_DPC_NIKON_BatteryCellKind, PTP_VENDOR_NIKON, 3, "ZR6 (AA Ni-Mn)"}, {PTP_DPC_NIKON_ISOAutoHiLimit, PTP_VENDOR_NIKON, 0, "400"}, /* D183 */ {PTP_DPC_NIKON_ISOAutoHiLimit, PTP_VENDOR_NIKON, 1, "800"}, {PTP_DPC_NIKON_ISOAutoHiLimit, PTP_VENDOR_NIKON, 2, "1600"}, {PTP_DPC_NIKON_ISOAutoHiLimit, PTP_VENDOR_NIKON, 3, "3200"}, {PTP_DPC_NIKON_ISOAutoHiLimit, PTP_VENDOR_NIKON, 4, "Hi 1"}, {PTP_DPC_NIKON_ISOAutoHiLimit, PTP_VENDOR_NIKON, 5, "Hi 2"}, {PTP_DPC_NIKON_InfoDispSetting, PTP_VENDOR_NIKON, 0, N_("Auto")}, /* 0xD187 */ {PTP_DPC_NIKON_InfoDispSetting, PTP_VENDOR_NIKON, 1, N_("Dark on light")}, {PTP_DPC_NIKON_InfoDispSetting, PTP_VENDOR_NIKON, 2, N_("Light on dark")}, PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_IndicatorDisp,PTP_VENDOR_NIKON), /* D18D */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_LiveViewStatus,PTP_VENDOR_NIKON), /* D1A2 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_ExposureDisplayStatus,PTP_VENDOR_NIKON),/* D1B0 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_InfoDispErrStatus,PTP_VENDOR_NIKON), /* D1B2 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_ExposureIndicateLightup,PTP_VENDOR_NIKON),/* D1B3 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_FlashOpen,PTP_VENDOR_NIKON), /* D1C0 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_FlashCharged,PTP_VENDOR_NIKON), /* D1C1 */ PTP_VENDOR_VAL_YN(PTP_DPC_NIKON_ManualMovieSetting,PTP_VENDOR_NIKON), /* 0xD0A6 */ {PTP_DPC_NIKON_FlickerReduction, PTP_VENDOR_NIKON, 0, "50Hz"}, /* 0xD034 */ {PTP_DPC_NIKON_FlickerReduction, PTP_VENDOR_NIKON, 1, "60Hz"}, {PTP_DPC_NIKON_RemoteMode, PTP_VENDOR_NIKON, 0, N_("Delayed Remote")}, /* 0xD035 */ {PTP_DPC_NIKON_RemoteMode, PTP_VENDOR_NIKON, 1, N_("Quick Response")}, /* 0xD035 */ {PTP_DPC_NIKON_RemoteMode, PTP_VENDOR_NIKON, 2, N_("Remote Mirror Up")},/* 0xD035 */ {PTP_DPC_NIKON_MonitorOffDelay, PTP_VENDOR_NIKON, 0, "5min"}, /* 0xD0b3 */ {PTP_DPC_NIKON_MonitorOffDelay, PTP_VENDOR_NIKON, 1, "10min"}, /* 0xD0b3 */ {PTP_DPC_NIKON_MonitorOffDelay, PTP_VENDOR_NIKON, 2, "15min"}, /* 0xD0b3 */ {PTP_DPC_NIKON_MonitorOffDelay, PTP_VENDOR_NIKON, 3, "20min"}, /* 0xD0b3 */ {PTP_DPC_NIKON_MonitorOffDelay, PTP_VENDOR_NIKON, 4, "30min"}, /* 0xD0b3 */ /* Canon stuff */ PTP_VENDOR_VAL_BOOL(PTP_DPC_CANON_AssistLight,PTP_VENDOR_CANON), PTP_VENDOR_VAL_RBOOL(PTP_DPC_CANON_RotationScene,PTP_VENDOR_CANON), PTP_VENDOR_VAL_RBOOL(PTP_DPC_CANON_BeepMode,PTP_VENDOR_CANON), PTP_VENDOR_VAL_BOOL(PTP_DPC_CANON_Beep,PTP_VENDOR_CANON), {PTP_DPC_CANON_RotationAngle, PTP_VENDOR_CANON, 0, "0'"}, {PTP_DPC_CANON_RotationAngle, PTP_VENDOR_CANON, 3, "270'"}, {PTP_DPC_CANON_RotationAngle, PTP_VENDOR_CANON, 1, "90'"}, {PTP_DPC_CANON_BatteryKind, PTP_VENDOR_CANON, 0, N_("Unknown")}, {PTP_DPC_CANON_BatteryKind, PTP_VENDOR_CANON, 1, N_("AC")}, {PTP_DPC_CANON_BatteryKind, PTP_VENDOR_CANON, 2, N_("Lithium Ion")}, {PTP_DPC_CANON_BatteryKind, PTP_VENDOR_CANON, 3, N_("Nickel hydride")}, {PTP_DPC_CANON_BatteryKind, PTP_VENDOR_CANON, 4, N_("Nickel cadmium")}, {PTP_DPC_CANON_BatteryKind, PTP_VENDOR_CANON, 5, N_("Alkalium manganese")}, {PTP_DPC_CANON_BatteryStatus, PTP_VENDOR_CANON, 0, N_("Undefined")}, {PTP_DPC_CANON_BatteryStatus, PTP_VENDOR_CANON, 1, N_("Normal")}, {PTP_DPC_CANON_BatteryStatus, PTP_VENDOR_CANON, 2, N_("Warning Level 1")}, {PTP_DPC_CANON_BatteryStatus, PTP_VENDOR_CANON, 3, N_("Emergency")}, {PTP_DPC_CANON_BatteryStatus, PTP_VENDOR_CANON, 4, N_("Warning Level 0")}, {PTP_DPC_CANON_ImageQuality, PTP_VENDOR_CANON, 0, N_("Undefined")}, {PTP_DPC_CANON_ImageQuality, PTP_VENDOR_CANON, 1, N_("Economy")}, {PTP_DPC_CANON_ImageQuality, PTP_VENDOR_CANON, 2, N_("Normal")}, {PTP_DPC_CANON_ImageQuality, PTP_VENDOR_CANON, 3, N_("Fine")}, {PTP_DPC_CANON_ImageQuality, PTP_VENDOR_CANON, 4, N_("Lossless")}, {PTP_DPC_CANON_ImageQuality, PTP_VENDOR_CANON, 5, N_("SuperFine")}, {PTP_DPC_CANON_FullViewFileFormat, PTP_VENDOR_CANON, 0, N_("Undefined")}, {PTP_DPC_CANON_FullViewFileFormat, PTP_VENDOR_CANON, 1, N_("JPEG")}, {PTP_DPC_CANON_FullViewFileFormat, PTP_VENDOR_CANON, 2, N_("CRW")}, {PTP_DPC_CANON_ImageSize, PTP_VENDOR_CANON, 0, N_("Large")}, {PTP_DPC_CANON_ImageSize, PTP_VENDOR_CANON, 1, N_("Medium 1")}, {PTP_DPC_CANON_ImageSize, PTP_VENDOR_CANON, 2, N_("Small")}, {PTP_DPC_CANON_ImageSize, PTP_VENDOR_CANON, 3, N_("Medium 2")}, {PTP_DPC_CANON_ImageSize, PTP_VENDOR_CANON, 7, N_("Medium 3")}, {PTP_DPC_CANON_SelfTime, PTP_VENDOR_CANON, 0, N_("Not used")}, {PTP_DPC_CANON_SelfTime, PTP_VENDOR_CANON, 100, N_("10 seconds")}, {PTP_DPC_CANON_SelfTime, PTP_VENDOR_CANON, 20, N_("2 seconds")}, {PTP_DPC_CANON_FlashMode, PTP_VENDOR_CANON, 0, N_("Off")}, {PTP_DPC_CANON_FlashMode, PTP_VENDOR_CANON, 1, N_("Auto")}, {PTP_DPC_CANON_FlashMode, PTP_VENDOR_CANON, 2, N_("On")}, {PTP_DPC_CANON_FlashMode, PTP_VENDOR_CANON, 3, N_("Red Eye Suppression")}, {PTP_DPC_CANON_FlashMode, PTP_VENDOR_CANON, 4, N_("Low Speed Synchronization")}, {PTP_DPC_CANON_FlashMode, PTP_VENDOR_CANON, 5, N_("Auto + Red Eye Suppression")}, {PTP_DPC_CANON_FlashMode, PTP_VENDOR_CANON, 6, N_("On + Red Eye Suppression")}, {PTP_DPC_CANON_ShootingMode, PTP_VENDOR_CANON, 0, N_("Auto")}, {PTP_DPC_CANON_ShootingMode, PTP_VENDOR_CANON, 1, N_("P")}, {PTP_DPC_CANON_ShootingMode, PTP_VENDOR_CANON, 2, N_("Tv")}, {PTP_DPC_CANON_ShootingMode, PTP_VENDOR_CANON, 3, N_("Av")}, {PTP_DPC_CANON_ShootingMode, PTP_VENDOR_CANON, 4, N_("M")}, {PTP_DPC_CANON_ShootingMode, PTP_VENDOR_CANON, 5, N_("A_DEP")}, {PTP_DPC_CANON_ShootingMode, PTP_VENDOR_CANON, 6, N_("M_DEP")}, {PTP_DPC_CANON_ShootingMode, PTP_VENDOR_CANON, 7, N_("Bulb")}, /* more actually */ {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 0, N_("Auto")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 1, N_("Manual")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 2, N_("Distant View")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 3, N_("High-Speed Shutter")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 4, N_("Low-Speed Shutter")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 5, N_("Night View")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 6, N_("Grayscale")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 7, N_("Sepia")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 8, N_("Portrait")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 9, N_("Sports")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 10, N_("Macro")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 11, N_("Monochrome")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 12, N_("Pan Focus")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 13, N_("Neutral")}, {PTP_DPC_CANON_ImageMode, PTP_VENDOR_CANON, 14, N_("Soft")}, {PTP_DPC_CANON_DriveMode, PTP_VENDOR_CANON, 0, N_("Single-Frame Shooting")}, {PTP_DPC_CANON_DriveMode, PTP_VENDOR_CANON, 1, N_("Continuous Shooting")}, {PTP_DPC_CANON_DriveMode, PTP_VENDOR_CANON, 2, N_("Timer (Single) Shooting")}, {PTP_DPC_CANON_DriveMode, PTP_VENDOR_CANON, 4, N_("Continuous Low-speed Shooting")}, {PTP_DPC_CANON_DriveMode, PTP_VENDOR_CANON, 5, N_("Continuous High-speed Shooting")}, {PTP_DPC_CANON_EZoom, PTP_VENDOR_CANON, 0, N_("Off")}, {PTP_DPC_CANON_EZoom, PTP_VENDOR_CANON, 1, N_("2x")}, {PTP_DPC_CANON_EZoom, PTP_VENDOR_CANON, 2, N_("4x")}, {PTP_DPC_CANON_EZoom, PTP_VENDOR_CANON, 3, N_("Smooth")}, {PTP_DPC_CANON_MeteringMode, PTP_VENDOR_CANON, 0, N_("Center-weighted Metering")}, {PTP_DPC_CANON_MeteringMode, PTP_VENDOR_CANON, 1, N_("Spot Metering")}, {PTP_DPC_CANON_MeteringMode, PTP_VENDOR_CANON, 2, N_("Average Metering")}, {PTP_DPC_CANON_MeteringMode, PTP_VENDOR_CANON, 3, N_("Evaluative Metering")}, {PTP_DPC_CANON_MeteringMode, PTP_VENDOR_CANON, 4, N_("Partial Metering")}, {PTP_DPC_CANON_MeteringMode, PTP_VENDOR_CANON, 5, N_("Center-weighted Average Metering")}, {PTP_DPC_CANON_MeteringMode, PTP_VENDOR_CANON, 6, N_("Spot Metering Interlocked with AF Frame")}, {PTP_DPC_CANON_MeteringMode, PTP_VENDOR_CANON, 7, N_("Multi-Spot Metering")}, {PTP_DPC_CANON_AFDistance, PTP_VENDOR_CANON, 0, N_("Manual")}, {PTP_DPC_CANON_AFDistance, PTP_VENDOR_CANON, 1, N_("Auto")}, {PTP_DPC_CANON_AFDistance, PTP_VENDOR_CANON, 2, N_("Unknown")}, {PTP_DPC_CANON_AFDistance, PTP_VENDOR_CANON, 3, N_("Zone Focus (Close-up)")}, {PTP_DPC_CANON_AFDistance, PTP_VENDOR_CANON, 4, N_("Zone Focus (Very Close)")}, {PTP_DPC_CANON_AFDistance, PTP_VENDOR_CANON, 5, N_("Zone Focus (Close)")}, {PTP_DPC_CANON_AFDistance, PTP_VENDOR_CANON, 6, N_("Zone Focus (Medium)")}, {PTP_DPC_CANON_AFDistance, PTP_VENDOR_CANON, 7, N_("Zone Focus (Far)")}, {PTP_DPC_CANON_FocusingPoint, PTP_VENDOR_CANON, 0, N_("Invalid")}, {PTP_DPC_CANON_FocusingPoint, PTP_VENDOR_CANON, 0x1000, N_("Focusing Point on Center Only, Manual")}, {PTP_DPC_CANON_FocusingPoint, PTP_VENDOR_CANON, 0x1001, N_("Focusing Point on Center Only, Auto")}, {PTP_DPC_CANON_FocusingPoint, PTP_VENDOR_CANON, 0x3000, N_("Multiple Focusing Points (No Specification), Manual")}, {PTP_DPC_CANON_FocusingPoint, PTP_VENDOR_CANON, 0x3001, N_("Multiple Focusing Points, Auto")}, {PTP_DPC_CANON_FocusingPoint, PTP_VENDOR_CANON, 0x3002, N_("Multiple Focusing Points (Right)")}, {PTP_DPC_CANON_FocusingPoint, PTP_VENDOR_CANON, 0x3003, N_("Multiple Focusing Points (Center)")}, {PTP_DPC_CANON_FocusingPoint, PTP_VENDOR_CANON, 0x3004, N_("Multiple Focusing Points (Left)")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 0, N_("Auto")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 1, N_("Daylight")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 2, N_("Cloudy")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 3, N_("Tungsten")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 4, N_("Fluorescent")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 6, N_("Preset")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 7, N_("Fluorescent H")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 9, N_("Color Temperature")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 10, N_("Custom Whitebalance PC-1")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 11, N_("Custom Whitebalance PC-2")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 12, N_("Custom Whitebalance PC-3")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 13, N_("Missing Number")}, {PTP_DPC_CANON_WhiteBalance, PTP_VENDOR_CANON, 14, N_("Fluorescent H")}, /* dup? */ {PTP_DPC_CANON_SlowShutterSetting, PTP_VENDOR_CANON, 0, N_("Off")}, {PTP_DPC_CANON_SlowShutterSetting, PTP_VENDOR_CANON, 1, N_("Night View")}, {PTP_DPC_CANON_SlowShutterSetting, PTP_VENDOR_CANON, 2, N_("On")}, {PTP_DPC_CANON_SlowShutterSetting, PTP_VENDOR_CANON, 3, N_("Low-speed shutter function not available")}, {PTP_DPC_CANON_AFMode, PTP_VENDOR_CANON, 0, N_("Single Shot")}, {PTP_DPC_CANON_AFMode, PTP_VENDOR_CANON, 1, N_("AI Servo")}, {PTP_DPC_CANON_AFMode, PTP_VENDOR_CANON, 2, N_("AI Focus")}, {PTP_DPC_CANON_AFMode, PTP_VENDOR_CANON, 3, N_("Manual")}, {PTP_DPC_CANON_AFMode, PTP_VENDOR_CANON, 4, N_("Continuous")}, PTP_VENDOR_VAL_BOOL(PTP_DPC_CANON_ImageStabilization,PTP_VENDOR_CANON), {PTP_DPC_CANON_Contrast, PTP_VENDOR_CANON, -2, N_("Low 2")}, {PTP_DPC_CANON_Contrast, PTP_VENDOR_CANON, -1, N_("Low")}, {PTP_DPC_CANON_Contrast, PTP_VENDOR_CANON, 0, N_("Standard")}, {PTP_DPC_CANON_Contrast, PTP_VENDOR_CANON, 1, N_("High")}, {PTP_DPC_CANON_Contrast, PTP_VENDOR_CANON, 2, N_("High 2")}, {PTP_DPC_CANON_ColorGain, PTP_VENDOR_CANON, -2, N_("Low 2")}, {PTP_DPC_CANON_ColorGain, PTP_VENDOR_CANON, -1, N_("Low")}, {PTP_DPC_CANON_ColorGain, PTP_VENDOR_CANON, 0, N_("Standard")}, {PTP_DPC_CANON_ColorGain, PTP_VENDOR_CANON, 1, N_("High")}, {PTP_DPC_CANON_ColorGain, PTP_VENDOR_CANON, 2, N_("High 2")}, {PTP_DPC_CANON_Sharpness, PTP_VENDOR_CANON, -2, N_("Low 2")}, {PTP_DPC_CANON_Sharpness, PTP_VENDOR_CANON, -1, N_("Low")}, {PTP_DPC_CANON_Sharpness, PTP_VENDOR_CANON, 0, N_("Standard")}, {PTP_DPC_CANON_Sharpness, PTP_VENDOR_CANON, 1, N_("High")}, {PTP_DPC_CANON_Sharpness, PTP_VENDOR_CANON, 2, N_("High 2")}, {PTP_DPC_CANON_Sensitivity, PTP_VENDOR_CANON, 0, N_("Standard")}, {PTP_DPC_CANON_Sensitivity, PTP_VENDOR_CANON, 1, N_("Upper 1")}, {PTP_DPC_CANON_Sensitivity, PTP_VENDOR_CANON, 2, N_("Upper 2")}, {PTP_DPC_CANON_ParameterSet, PTP_VENDOR_CANON, 0x08, N_("Standard Development Parameters")}, {PTP_DPC_CANON_ParameterSet, PTP_VENDOR_CANON, 0x10, N_("Development Parameters 1")}, {PTP_DPC_CANON_ParameterSet, PTP_VENDOR_CANON, 0x20, N_("Development Parameters 2")}, {PTP_DPC_CANON_ParameterSet, PTP_VENDOR_CANON, 0x40, N_("Development Parameters 3")}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x00, N_("Auto")}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x28, "6"}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x30, "12"}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x38, "25"}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x40, "50"}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x43, "64"}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x48, "100"}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x50, "200"}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x58, "400"}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x60, "800"}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x68, "1600"}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x70, "3200"}, {PTP_DPC_CANON_ISOSpeed, PTP_VENDOR_CANON, 0x78, "6400"}, /* 0xd01d - PTP_DPC_CANON_Aperture */ /* 0xd01e - PTP_DPC_CANON_ShutterSpeed */ /* 0xd01f - PTP_DPC_CANON_ExpCompensation */ /* 0xd020 - PTP_DPC_CANON_FlashCompensation */ /* 0xd021 - PTP_DPC_CANON_AEBExposureCompensation */ /* 0xd023 - PTP_DPC_CANON_AvOpen */ /* 0xd024 - PTP_DPC_CANON_AvMax */ {PTP_DPC_CANON_CameraOutput, PTP_VENDOR_CANON, 0, N_("Undefined")}, {PTP_DPC_CANON_CameraOutput, PTP_VENDOR_CANON, 1, N_("LCD")}, {PTP_DPC_CANON_CameraOutput, PTP_VENDOR_CANON, 2, N_("Video OUT")}, {PTP_DPC_CANON_CameraOutput, PTP_VENDOR_CANON, 3, N_("Off")}, {PTP_DPC_CANON_MlSpotPos, PTP_VENDOR_CANON, 0, N_("MlSpotPosCenter")}, {PTP_DPC_CANON_MlSpotPos, PTP_VENDOR_CANON, 1, N_("MlSpotPosAfLink")}, {PTP_DPC_CANON_PhotoEffect, PTP_VENDOR_CANON, 0, N_("Off")}, {PTP_DPC_CANON_PhotoEffect, PTP_VENDOR_CANON, 1, N_("Vivid")}, {PTP_DPC_CANON_PhotoEffect, PTP_VENDOR_CANON, 2, N_("Neutral")}, {PTP_DPC_CANON_PhotoEffect, PTP_VENDOR_CANON, 3, N_("Soft")}, {PTP_DPC_CANON_PhotoEffect, PTP_VENDOR_CANON, 4, N_("Sepia")}, {PTP_DPC_CANON_PhotoEffect, PTP_VENDOR_CANON, 5, N_("Monochrome")}, {0, 0, 0, NULL} }; for (i=0; ptp_value_trans[i].dpc!=0; i++) { if ((ptp_value_trans[i].dpc == dpc) && (((ptp_value_trans[i].dpc & 0xf000) == 0x5000) || (ptp_value_trans[i].vendor == params->deviceinfo.VendorExtensionID)) ) { double value = _value_to_num(&(dpd->CurrentValue), dpd->DataType); return snprintf(out, length, _(ptp_value_trans[i].format), value * ptp_value_trans[i].coef + ptp_value_trans[i].bias); } } kval = _value_to_num(&(dpd->CurrentValue), dpd->DataType); for (i=0; ptp_value_list[i].dpc!=0; i++) { if ((ptp_value_list[i].dpc == dpc) && (((ptp_value_list[i].dpc & 0xf000) == 0x5000) || (ptp_value_list[i].vendor == params->deviceinfo.VendorExtensionID)) && (ptp_value_list[i].key==kval) ) { return snprintf(out, length, "%s", _(ptp_value_list[i].value)); } } if (params->deviceinfo.VendorExtensionID==PTP_VENDOR_MICROSOFT || params->deviceinfo.VendorExtensionID==PTP_VENDOR_MTP) { switch (dpc) { case PTP_DPC_MTP_SynchronizationPartner: case PTP_DPC_MTP_DeviceFriendlyName: return snprintf(out, length, "%s", dpd->CurrentValue.str); case PTP_DPC_MTP_SecureTime: case PTP_DPC_MTP_DeviceCertificate: { /* FIXME: Convert to use unicode demux functions */ for (i=0;(iCurrentValue.a.count) && (iCurrentValue.a.v[i].u16; if ( dpd->CurrentValue.a.count && (dpd->CurrentValue.a.count < length)) { out[dpd->CurrentValue.a.count-1] = 0; return dpd->CurrentValue.a.count-1; } else { out[length-1] = 0; return length; } break; } default: break; } } return 0; } struct { uint16_t ofc; const char *format; } ptp_ofc_trans[] = { {PTP_OFC_Undefined,"Undefined Type"}, {PTP_OFC_Defined,"Defined Type"}, {PTP_OFC_Association,"Association/Directory"}, {PTP_OFC_Script,"Script"}, {PTP_OFC_Executable,"Executable"}, {PTP_OFC_Text,"Text"}, {PTP_OFC_HTML,"HTML"}, {PTP_OFC_DPOF,"DPOF"}, {PTP_OFC_AIFF,"AIFF"}, {PTP_OFC_WAV,"MS Wave"}, {PTP_OFC_MP3,"MP3"}, {PTP_OFC_AVI,"MS AVI"}, {PTP_OFC_MPEG,"MPEG"}, {PTP_OFC_ASF,"ASF"}, {PTP_OFC_QT,"Apple Quicktime"}, {PTP_OFC_EXIF_JPEG,"JPEG"}, {PTP_OFC_TIFF_EP,"TIFF EP"}, {PTP_OFC_FlashPix,"FlashPix"}, {PTP_OFC_BMP,"BMP"}, {PTP_OFC_CIFF,"CIFF"}, {PTP_OFC_GIF,"GIF"}, {PTP_OFC_JFIF,"JFIF"}, {PTP_OFC_PCD,"PCD"}, {PTP_OFC_PICT,"PICT"}, {PTP_OFC_PNG,"PNG"}, {PTP_OFC_TIFF,"TIFF"}, {PTP_OFC_TIFF_IT,"TIFF_IT"}, {PTP_OFC_JP2,"JP2"}, {PTP_OFC_JPX,"JPX"}, {PTP_OFC_DNG,"DNG"}, }; struct { uint16_t ofc; const char *format; } ptp_ofc_mtp_trans[] = { {PTP_OFC_MTP_MediaCard,N_("Media Card")}, {PTP_OFC_MTP_MediaCardGroup,N_("Media Card Group")}, {PTP_OFC_MTP_Encounter,N_("Encounter")}, {PTP_OFC_MTP_EncounterBox,N_("Encounter Box")}, {PTP_OFC_MTP_M4A,N_("M4A")}, {PTP_OFC_MTP_Firmware,N_("Firmware")}, {PTP_OFC_MTP_WindowsImageFormat,N_("Windows Image Format")}, {PTP_OFC_MTP_UndefinedAudio,N_("Undefined Audio")}, {PTP_OFC_MTP_WMA,"WMA"}, {PTP_OFC_MTP_OGG,"OGG"}, {PTP_OFC_MTP_AAC,"AAC"}, {PTP_OFC_MTP_AudibleCodec,N_("Audible.com Codec")}, {PTP_OFC_MTP_FLAC,"FLAC"}, {PTP_OFC_MTP_SamsungPlaylist,N_("Samsung Playlist")}, {PTP_OFC_MTP_UndefinedVideo,N_("Undefined Video")}, {PTP_OFC_MTP_WMV,"WMV"}, {PTP_OFC_MTP_MP4,"MP4"}, {PTP_OFC_MTP_MP2,"MP2"}, {PTP_OFC_MTP_3GP,"3GP"}, {PTP_OFC_MTP_UndefinedCollection,N_("Undefined Collection")}, {PTP_OFC_MTP_AbstractMultimediaAlbum,N_("Abstract Multimedia Album")}, {PTP_OFC_MTP_AbstractImageAlbum,N_("Abstract Image Album")}, {PTP_OFC_MTP_AbstractAudioAlbum,N_("Abstract Audio Album")}, {PTP_OFC_MTP_AbstractVideoAlbum,N_("Abstract Video Album")}, {PTP_OFC_MTP_AbstractAudioVideoPlaylist,N_("Abstract Audio Video Playlist")}, {PTP_OFC_MTP_AbstractContactGroup,N_("Abstract Contact Group")}, {PTP_OFC_MTP_AbstractMessageFolder,N_("Abstract Message Folder")}, {PTP_OFC_MTP_AbstractChapteredProduction,N_("Abstract Chaptered Production")}, {PTP_OFC_MTP_AbstractAudioPlaylist,N_("Abstract Audio Playlist")}, {PTP_OFC_MTP_AbstractVideoPlaylist,N_("Abstract Video Playlist")}, {PTP_OFC_MTP_AbstractMediacast,N_("Abstract Mediacast")}, {PTP_OFC_MTP_WPLPlaylist,N_("WPL Playlist")}, {PTP_OFC_MTP_M3UPlaylist,N_("M3U Playlist")}, {PTP_OFC_MTP_MPLPlaylist,N_("MPL Playlist")}, {PTP_OFC_MTP_ASXPlaylist,N_("ASX Playlist")}, {PTP_OFC_MTP_PLSPlaylist,N_("PLS Playlist")}, {PTP_OFC_MTP_UndefinedDocument,N_("Undefined Document")}, {PTP_OFC_MTP_AbstractDocument,N_("Abstract Document")}, {PTP_OFC_MTP_XMLDocument,N_("XMLDocument")}, {PTP_OFC_MTP_MSWordDocument,N_("Microsoft Word Document")}, {PTP_OFC_MTP_MHTCompiledHTMLDocument,N_("MHT Compiled HTML Document")}, {PTP_OFC_MTP_MSExcelSpreadsheetXLS,N_("Microsoft Excel Spreadsheet (.xls)")}, {PTP_OFC_MTP_MSPowerpointPresentationPPT,N_("Microsoft Powerpoint (.ppt)")}, {PTP_OFC_MTP_UndefinedMessage,N_("Undefined Message")}, {PTP_OFC_MTP_AbstractMessage,N_("Abstract Message")}, {PTP_OFC_MTP_UndefinedContact,N_("Undefined Contact")}, {PTP_OFC_MTP_AbstractContact,N_("Abstract Contact")}, {PTP_OFC_MTP_vCard2,N_("vCard2")}, {PTP_OFC_MTP_vCard3,N_("vCard3")}, {PTP_OFC_MTP_UndefinedCalendarItem,N_("Undefined Calendar Item")}, {PTP_OFC_MTP_AbstractCalendarItem,N_("Abstract Calendar Item")}, {PTP_OFC_MTP_vCalendar1,N_("vCalendar1")}, {PTP_OFC_MTP_vCalendar2,N_("vCalendar2")}, {PTP_OFC_MTP_UndefinedWindowsExecutable,N_("Undefined Windows Executable")}, {PTP_OFC_MTP_MediaCast,N_("Media Cast")}, {PTP_OFC_MTP_Section,N_("Section")}, }; int ptp_render_ofc(PTPParams* params, uint16_t ofc, int spaceleft, char *txt) { unsigned int i; if (!(ofc & 0x8000)) { for (i=0;ideviceinfo.VendorExtensionID) { case PTP_VENDOR_EASTMAN_KODAK: switch (ofc) { case PTP_OFC_EK_M3U: return snprintf (txt, spaceleft,"M3U"); default: break; } break; case PTP_VENDOR_CANON: switch (ofc) { case PTP_OFC_CANON_CRW: return snprintf (txt, spaceleft,"CRW"); default: break; } break; case PTP_VENDOR_MICROSOFT: case PTP_VENDOR_MTP: for (i=0;ideviceinfo.VendorExtensionID) { case PTP_VENDOR_MICROSOFT: case PTP_VENDOR_MTP: RETURN_NAME_FROM_TABLE(ptp_opcode_mtp_trans, opcode); case PTP_VENDOR_NIKON: RETURN_NAME_FROM_TABLE(ptp_opcode_nikon_trans, opcode); case PTP_VENDOR_CANON: RETURN_NAME_FROM_TABLE(ptp_opcode_canon_trans, opcode); case PTP_VENDOR_SONY: RETURN_NAME_FROM_TABLE(ptp_opcode_sony_trans, opcode); default: break; } #undef RETURN_NAME_FROM_TABLE return _("Unknown VendorExtensionID"); } struct { uint16_t id; const char *name; } ptp_opc_trans[] = { {PTP_OPC_StorageID,"StorageID"}, {PTP_OPC_ObjectFormat,"ObjectFormat"}, {PTP_OPC_ProtectionStatus,"ProtectionStatus"}, {PTP_OPC_ObjectSize,"ObjectSize"}, {PTP_OPC_AssociationType,"AssociationType"}, {PTP_OPC_AssociationDesc,"AssociationDesc"}, {PTP_OPC_ObjectFileName,"ObjectFileName"}, {PTP_OPC_DateCreated,"DateCreated"}, {PTP_OPC_DateModified,"DateModified"}, {PTP_OPC_Keywords,"Keywords"}, {PTP_OPC_ParentObject,"ParentObject"}, {PTP_OPC_AllowedFolderContents,"AllowedFolderContents"}, {PTP_OPC_Hidden,"Hidden"}, {PTP_OPC_SystemObject,"SystemObject"}, {PTP_OPC_PersistantUniqueObjectIdentifier,"PersistantUniqueObjectIdentifier"}, {PTP_OPC_SyncID,"SyncID"}, {PTP_OPC_PropertyBag,"PropertyBag"}, {PTP_OPC_Name,"Name"}, {PTP_OPC_CreatedBy,"CreatedBy"}, {PTP_OPC_Artist,"Artist"}, {PTP_OPC_DateAuthored,"DateAuthored"}, {PTP_OPC_Description,"Description"}, {PTP_OPC_URLReference,"URLReference"}, {PTP_OPC_LanguageLocale,"LanguageLocale"}, {PTP_OPC_CopyrightInformation,"CopyrightInformation"}, {PTP_OPC_Source,"Source"}, {PTP_OPC_OriginLocation,"OriginLocation"}, {PTP_OPC_DateAdded,"DateAdded"}, {PTP_OPC_NonConsumable,"NonConsumable"}, {PTP_OPC_CorruptOrUnplayable,"CorruptOrUnplayable"}, {PTP_OPC_ProducerSerialNumber,"ProducerSerialNumber"}, {PTP_OPC_RepresentativeSampleFormat,"RepresentativeSampleFormat"}, {PTP_OPC_RepresentativeSampleSize,"RepresentativeSampleSize"}, {PTP_OPC_RepresentativeSampleHeight,"RepresentativeSampleHeight"}, {PTP_OPC_RepresentativeSampleWidth,"RepresentativeSampleWidth"}, {PTP_OPC_RepresentativeSampleDuration,"RepresentativeSampleDuration"}, {PTP_OPC_RepresentativeSampleData,"RepresentativeSampleData"}, {PTP_OPC_Width,"Width"}, {PTP_OPC_Height,"Height"}, {PTP_OPC_Duration,"Duration"}, {PTP_OPC_Rating,"Rating"}, {PTP_OPC_Track,"Track"}, {PTP_OPC_Genre,"Genre"}, {PTP_OPC_Credits,"Credits"}, {PTP_OPC_Lyrics,"Lyrics"}, {PTP_OPC_SubscriptionContentID,"SubscriptionContentID"}, {PTP_OPC_ProducedBy,"ProducedBy"}, {PTP_OPC_UseCount,"UseCount"}, {PTP_OPC_SkipCount,"SkipCount"}, {PTP_OPC_LastAccessed,"LastAccessed"}, {PTP_OPC_ParentalRating,"ParentalRating"}, {PTP_OPC_MetaGenre,"MetaGenre"}, {PTP_OPC_Composer,"Composer"}, {PTP_OPC_EffectiveRating,"EffectiveRating"}, {PTP_OPC_Subtitle,"Subtitle"}, {PTP_OPC_OriginalReleaseDate,"OriginalReleaseDate"}, {PTP_OPC_AlbumName,"AlbumName"}, {PTP_OPC_AlbumArtist,"AlbumArtist"}, {PTP_OPC_Mood,"Mood"}, {PTP_OPC_DRMStatus,"DRMStatus"}, {PTP_OPC_SubDescription,"SubDescription"}, {PTP_OPC_IsCropped,"IsCropped"}, {PTP_OPC_IsColorCorrected,"IsColorCorrected"}, {PTP_OPC_ImageBitDepth,"ImageBitDepth"}, {PTP_OPC_Fnumber,"Fnumber"}, {PTP_OPC_ExposureTime,"ExposureTime"}, {PTP_OPC_ExposureIndex,"ExposureIndex"}, {PTP_OPC_DisplayName,"DisplayName"}, {PTP_OPC_BodyText,"BodyText"}, {PTP_OPC_Subject,"Subject"}, {PTP_OPC_Priority,"Priority"}, {PTP_OPC_GivenName,"GivenName"}, {PTP_OPC_MiddleNames,"MiddleNames"}, {PTP_OPC_FamilyName,"FamilyName"}, {PTP_OPC_Prefix,"Prefix"}, {PTP_OPC_Suffix,"Suffix"}, {PTP_OPC_PhoneticGivenName,"PhoneticGivenName"}, {PTP_OPC_PhoneticFamilyName,"PhoneticFamilyName"}, {PTP_OPC_EmailPrimary,"EmailPrimary"}, {PTP_OPC_EmailPersonal1,"EmailPersonal1"}, {PTP_OPC_EmailPersonal2,"EmailPersonal2"}, {PTP_OPC_EmailBusiness1,"EmailBusiness1"}, {PTP_OPC_EmailBusiness2,"EmailBusiness2"}, {PTP_OPC_EmailOthers,"EmailOthers"}, {PTP_OPC_PhoneNumberPrimary,"PhoneNumberPrimary"}, {PTP_OPC_PhoneNumberPersonal,"PhoneNumberPersonal"}, {PTP_OPC_PhoneNumberPersonal2,"PhoneNumberPersonal2"}, {PTP_OPC_PhoneNumberBusiness,"PhoneNumberBusiness"}, {PTP_OPC_PhoneNumberBusiness2,"PhoneNumberBusiness2"}, {PTP_OPC_PhoneNumberMobile,"PhoneNumberMobile"}, {PTP_OPC_PhoneNumberMobile2,"PhoneNumberMobile2"}, {PTP_OPC_FaxNumberPrimary,"FaxNumberPrimary"}, {PTP_OPC_FaxNumberPersonal,"FaxNumberPersonal"}, {PTP_OPC_FaxNumberBusiness,"FaxNumberBusiness"}, {PTP_OPC_PagerNumber,"PagerNumber"}, {PTP_OPC_PhoneNumberOthers,"PhoneNumberOthers"}, {PTP_OPC_PrimaryWebAddress,"PrimaryWebAddress"}, {PTP_OPC_PersonalWebAddress,"PersonalWebAddress"}, {PTP_OPC_BusinessWebAddress,"BusinessWebAddress"}, {PTP_OPC_InstantMessengerAddress,"InstantMessengerAddress"}, {PTP_OPC_InstantMessengerAddress2,"InstantMessengerAddress2"}, {PTP_OPC_InstantMessengerAddress3,"InstantMessengerAddress3"}, {PTP_OPC_PostalAddressPersonalFull,"PostalAddressPersonalFull"}, {PTP_OPC_PostalAddressPersonalFullLine1,"PostalAddressPersonalFullLine1"}, {PTP_OPC_PostalAddressPersonalFullLine2,"PostalAddressPersonalFullLine2"}, {PTP_OPC_PostalAddressPersonalFullCity,"PostalAddressPersonalFullCity"}, {PTP_OPC_PostalAddressPersonalFullRegion,"PostalAddressPersonalFullRegion"}, {PTP_OPC_PostalAddressPersonalFullPostalCode,"PostalAddressPersonalFullPostalCode"}, {PTP_OPC_PostalAddressPersonalFullCountry,"PostalAddressPersonalFullCountry"}, {PTP_OPC_PostalAddressBusinessFull,"PostalAddressBusinessFull"}, {PTP_OPC_PostalAddressBusinessLine1,"PostalAddressBusinessLine1"}, {PTP_OPC_PostalAddressBusinessLine2,"PostalAddressBusinessLine2"}, {PTP_OPC_PostalAddressBusinessCity,"PostalAddressBusinessCity"}, {PTP_OPC_PostalAddressBusinessRegion,"PostalAddressBusinessRegion"}, {PTP_OPC_PostalAddressBusinessPostalCode,"PostalAddressBusinessPostalCode"}, {PTP_OPC_PostalAddressBusinessCountry,"PostalAddressBusinessCountry"}, {PTP_OPC_PostalAddressOtherFull,"PostalAddressOtherFull"}, {PTP_OPC_PostalAddressOtherLine1,"PostalAddressOtherLine1"}, {PTP_OPC_PostalAddressOtherLine2,"PostalAddressOtherLine2"}, {PTP_OPC_PostalAddressOtherCity,"PostalAddressOtherCity"}, {PTP_OPC_PostalAddressOtherRegion,"PostalAddressOtherRegion"}, {PTP_OPC_PostalAddressOtherPostalCode,"PostalAddressOtherPostalCode"}, {PTP_OPC_PostalAddressOtherCountry,"PostalAddressOtherCountry"}, {PTP_OPC_OrganizationName,"OrganizationName"}, {PTP_OPC_PhoneticOrganizationName,"PhoneticOrganizationName"}, {PTP_OPC_Role,"Role"}, {PTP_OPC_Birthdate,"Birthdate"}, {PTP_OPC_MessageTo,"MessageTo"}, {PTP_OPC_MessageCC,"MessageCC"}, {PTP_OPC_MessageBCC,"MessageBCC"}, {PTP_OPC_MessageRead,"MessageRead"}, {PTP_OPC_MessageReceivedTime,"MessageReceivedTime"}, {PTP_OPC_MessageSender,"MessageSender"}, {PTP_OPC_ActivityBeginTime,"ActivityBeginTime"}, {PTP_OPC_ActivityEndTime,"ActivityEndTime"}, {PTP_OPC_ActivityLocation,"ActivityLocation"}, {PTP_OPC_ActivityRequiredAttendees,"ActivityRequiredAttendees"}, {PTP_OPC_ActivityOptionalAttendees,"ActivityOptionalAttendees"}, {PTP_OPC_ActivityResources,"ActivityResources"}, {PTP_OPC_ActivityAccepted,"ActivityAccepted"}, {PTP_OPC_Owner,"Owner"}, {PTP_OPC_Editor,"Editor"}, {PTP_OPC_Webmaster,"Webmaster"}, {PTP_OPC_URLSource,"URLSource"}, {PTP_OPC_URLDestination,"URLDestination"}, {PTP_OPC_TimeBookmark,"TimeBookmark"}, {PTP_OPC_ObjectBookmark,"ObjectBookmark"}, {PTP_OPC_ByteBookmark,"ByteBookmark"}, {PTP_OPC_LastBuildDate,"LastBuildDate"}, {PTP_OPC_TimetoLive,"TimetoLive"}, {PTP_OPC_MediaGUID,"MediaGUID"}, {PTP_OPC_TotalBitRate,"TotalBitRate"}, {PTP_OPC_BitRateType,"BitRateType"}, {PTP_OPC_SampleRate,"SampleRate"}, {PTP_OPC_NumberOfChannels,"NumberOfChannels"}, {PTP_OPC_AudioBitDepth,"AudioBitDepth"}, {PTP_OPC_ScanDepth,"ScanDepth"}, {PTP_OPC_AudioWAVECodec,"AudioWAVECodec"}, {PTP_OPC_AudioBitRate,"AudioBitRate"}, {PTP_OPC_VideoFourCCCodec,"VideoFourCCCodec"}, {PTP_OPC_VideoBitRate,"VideoBitRate"}, {PTP_OPC_FramesPerThousandSeconds,"FramesPerThousandSeconds"}, {PTP_OPC_KeyFrameDistance,"KeyFrameDistance"}, {PTP_OPC_BufferSize,"BufferSize"}, {PTP_OPC_EncodingQuality,"EncodingQuality"}, {PTP_OPC_EncodingProfile,"EncodingProfile"}, {PTP_OPC_BuyFlag,"BuyFlag"}, }; int ptp_render_mtp_propname(uint16_t propid, int spaceleft, char *txt) { unsigned int i; for (i=0;iproperty = PTP_OPC_StorageID; /* Should be "unknown" */ prop->datatype = PTP_DTC_UNDEF; prop->ObjectHandle = 0x00000000U; prop->propval.str = NULL; (*props) = newprops; (*nrofprops)++; return prop; } void ptp_destroy_object_prop(MTPProperties *prop) { if (!prop) return; if (prop->datatype == PTP_DTC_STR && prop->propval.str != NULL) free(prop->propval.str); else if ((prop->datatype == PTP_DTC_AINT8 || prop->datatype == PTP_DTC_AINT16 || prop->datatype == PTP_DTC_AINT32 || prop->datatype == PTP_DTC_AINT64 || prop->datatype == PTP_DTC_AINT128 || prop->datatype == PTP_DTC_AUINT8 || prop->datatype == PTP_DTC_AUINT16 || prop->datatype == PTP_DTC_AUINT32 || prop->datatype == PTP_DTC_AUINT64 || prop->datatype == PTP_DTC_AUINT128) && prop->propval.a.v != NULL) free(prop->propval.a.v); } void ptp_destroy_object_prop_list(MTPProperties *props, int nrofprops) { int i; MTPProperties *prop = props; for (i=0;imtpprops; for (i=0;inrofmtpprops;i++) { if (attribute_id == prop->property) return prop; prop++; } return NULL; } uint16_t ptp_remove_object_from_cache(PTPParams *params, uint32_t handle) { unsigned int i; PTPObject *ob; CHECK_PTP_RC(ptp_object_find (params, handle, &ob)); i = ob-params->objects; /* remove object from object info cache */ ptp_free_object (ob); if (i < params->nrofobjects-1) memmove (ob,ob+1,(params->nrofobjects-1-i)*sizeof(PTPObject)); params->nrofobjects--; /* We use less memory than before so this shouldn't fail */ params->objects = realloc(params->objects, sizeof(PTPObject)*params->nrofobjects); return PTP_RC_OK; } static int _cmp_ob (const void *a, const void *b) { PTPObject *oa = (PTPObject*)a; PTPObject *ob = (PTPObject*)b; return oa->oid - ob->oid; } void ptp_objects_sort (PTPParams *params) { qsort (params->objects, params->nrofobjects, sizeof(PTPObject), _cmp_ob); } /* Binary search in objects. Needs "objects" to be a sorted by objectid list! */ uint16_t ptp_object_find (PTPParams *params, uint32_t handle, PTPObject **retob) { PTPObject tmpob; tmpob.oid = handle; *retob = bsearch (&tmpob, params->objects, params->nrofobjects, sizeof(tmpob), _cmp_ob); if (!*retob) return PTP_RC_GeneralError; return PTP_RC_OK; } /* Binary search in objects + insert of not found. Needs "objects" to be a sorted by objectid list! */ uint16_t ptp_object_find_or_insert (PTPParams *params, uint32_t handle, PTPObject **retob) { unsigned int begin, end, cursor; unsigned int insertat; PTPObject *newobs; if (!handle) return PTP_RC_GeneralError; *retob = NULL; if (!params->nrofobjects) { params->objects = calloc(1,sizeof(PTPObject)); params->nrofobjects = 1; params->objects[0].oid = handle; *retob = ¶ms->objects[0]; return PTP_RC_OK; } begin = 0; end = params->nrofobjects-1; /*ptp_debug (params, "searching %08x, total=%d", handle, params->nrofobjects);*/ while (1) { cursor = (end-begin)/2+begin; /*ptp_debug (params, "ob %d: %08x [%d-%d]", cursor, params->objects[cursor].oid, begin, end);*/ if (params->objects[cursor].oid == handle) { *retob = ¶ms->objects[cursor]; return PTP_RC_OK; } if (params->objects[cursor].oid < handle) begin = cursor; else end = cursor; if ((end - begin) <= 1) break; } if (params->objects[begin].oid == handle) { *retob = ¶ms->objects[begin]; return PTP_RC_OK; } if (params->objects[end].oid == handle) { *retob = ¶ms->objects[end]; return PTP_RC_OK; } if ((begin == 0) && (handle < params->objects[0].oid)) { insertat=begin; } else { if ((end == params->nrofobjects-1) && (handle > params->objects[end].oid)) insertat=end+1; else insertat=begin+1; } /*ptp_debug (params, "inserting oid %x at [%x,%x], begin=%d, end=%d, insertat=%d\n", handle, params->objects[begin].oid, params->objects[end].oid, begin, end, insertat);*/ newobs = realloc (params->objects, sizeof(PTPObject)*(params->nrofobjects+1)); if (!newobs) return PTP_RC_GeneralError; params->objects = newobs; if (insertatnrofobjects) memmove (¶ms->objects[insertat+1],¶ms->objects[insertat],(params->nrofobjects-insertat)*sizeof(PTPObject)); memset(¶ms->objects[insertat],0,sizeof(PTPObject)); params->objects[insertat].oid = handle; *retob = ¶ms->objects[insertat]; params->nrofobjects++; return PTP_RC_OK; } uint16_t ptp_object_want (PTPParams *params, uint32_t handle, unsigned int want, PTPObject **retob) { uint16_t ret; PTPObject *ob; /*Camera *camera = ((PTPData *)params->data)->camera;*/ /* If GetObjectInfo is broken, force GetPropList */ if (params->device_flags & DEVICE_FLAG_PROPLIST_OVERRIDES_OI) want |= PTPOBJECT_MTPPROPLIST_LOADED; *retob = NULL; if (!handle) { ptp_debug (params, "ptp_object_want: querying handle 0?\n"); return PTP_RC_GeneralError; } CHECK_PTP_RC(ptp_object_find_or_insert (params, handle, &ob)); *retob = ob; /* Do we have all of it already? */ if ((ob->flags & want) == want) return PTP_RC_OK; #define X (PTPOBJECT_OBJECTINFO_LOADED|PTPOBJECT_STORAGEID_LOADED|PTPOBJECT_PARENTOBJECT_LOADED) if ((want & X) && ((ob->flags & X) != X)) { uint32_t saveparent = 0; /* One EOS issue, where getobjecthandles(root) returns obs without root flag. */ if (ob->flags & PTPOBJECT_PARENTOBJECT_LOADED) saveparent = ob->oi.ParentObject; ret = ptp_getobjectinfo (params, handle, &ob->oi); if (ret != PTP_RC_OK) { /* kill it from the internal list ... */ ptp_remove_object_from_cache(params, handle); return ret; } if (!ob->oi.Filename) ob->oi.Filename=strdup(""); if (ob->flags & PTPOBJECT_PARENTOBJECT_LOADED) ob->oi.ParentObject = saveparent; /* Second EOS issue, 0x20000000 has 0x20000000 as parent */ if (ob->oi.ParentObject == handle) ob->oi.ParentObject = 0; /* Read out the canon special flags */ if ((params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) && ptp_operation_issupported(params,PTP_OC_CANON_GetObjectInfoEx)) { PTPCANONFolderEntry *ents = NULL; uint32_t numents = 0; ret = ptp_canon_getobjectinfo(params, ob->oi.StorageID,0, ob->oi.ParentObject,handle, &ents,&numents ); if ((ret == PTP_RC_OK) && (numents >= 1)) ob->canon_flags = ents[0].Flags; free (ents); } ob->flags |= X; } #undef X if ( (want & PTPOBJECT_MTPPROPLIST_LOADED) && (!(ob->flags & PTPOBJECT_MTPPROPLIST_LOADED)) ) { int nrofprops = 0; MTPProperties *props = NULL; if (params->device_flags & DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST) { want &= ~PTPOBJECT_MTPPROPLIST_LOADED; goto fallback; } /* Microsoft/MTP has fast directory retrieval. */ if (!ptp_operation_issupported(params,PTP_OC_MTP_GetObjPropList)) { want &= ~PTPOBJECT_MTPPROPLIST_LOADED; goto fallback; } ptp_debug (params, "ptp2/mtpfast: reading mtp proplist of %08x", handle); /* We just want this one object, not all at once. */ ret = ptp_mtp_getobjectproplist_single (params, handle, &props, &nrofprops); if (ret != PTP_RC_OK) goto fallback; ob->mtpprops = props; ob->nrofmtpprops = nrofprops; /* Override the ObjectInfo data with data from properties */ if (params->device_flags & DEVICE_FLAG_PROPLIST_OVERRIDES_OI) { unsigned int i; MTPProperties *prop = ob->mtpprops; for (i=0;inrofmtpprops;i++,prop++) { /* in case we got all subtree objects */ if (prop->ObjectHandle != handle) continue; switch (prop->property) { case PTP_OPC_StorageID: ob->oi.StorageID = prop->propval.u32; break; case PTP_OPC_ObjectFormat: ob->oi.ObjectFormat = prop->propval.u16; break; case PTP_OPC_ProtectionStatus: ob->oi.ProtectionStatus = prop->propval.u16; break; case PTP_OPC_ObjectSize: if (prop->datatype == PTP_DTC_UINT64) { if (prop->propval.u64 > 0xFFFFFFFFU) ob->oi.ObjectCompressedSize = 0xFFFFFFFFU; else ob->oi.ObjectCompressedSize = (uint32_t)prop->propval.u64; } else if (prop->datatype == PTP_DTC_UINT32) { ob->oi.ObjectCompressedSize = prop->propval.u32; } break; case PTP_OPC_AssociationType: ob->oi.AssociationType = prop->propval.u16; break; case PTP_OPC_AssociationDesc: ob->oi.AssociationDesc = prop->propval.u32; break; case PTP_OPC_ObjectFileName: if (prop->propval.str) { free(ob->oi.Filename); ob->oi.Filename = strdup(prop->propval.str); } break; case PTP_OPC_DateCreated: ob->oi.CaptureDate = ptp_unpack_PTPTIME(prop->propval.str); break; case PTP_OPC_DateModified: ob->oi.ModificationDate = ptp_unpack_PTPTIME(prop->propval.str); break; case PTP_OPC_Keywords: if (prop->propval.str) { free(ob->oi.Keywords); ob->oi.Keywords = strdup(prop->propval.str); } break; case PTP_OPC_ParentObject: ob->oi.ParentObject = prop->propval.u32; break; } } } #if 0 MTPProperties *xpl; int j; PTPObjectInfo oinfo; memset (&oinfo,0,sizeof(oinfo)); /* hmm, not necessary ... only if we would use it */ for (j=0;jproperty) { case PTP_OPC_ParentObject: if (xpl->datatype != PTP_DTC_UINT32) { ptp_debug (params, "ptp2/mtpfast: parentobject has type 0x%x???", xpl->datatype); break; } oinfo.ParentObject = xpl->propval.u32; ptp_debug (params, "ptp2/mtpfast: parent 0x%x", xpl->propval.u32); break; case PTP_OPC_ObjectFormat: if (xpl->datatype != PTP_DTC_UINT16) { ptp_debug (params, "ptp2/mtpfast: objectformat has type 0x%x???", xpl->datatype); break; } oinfo.ObjectFormat = xpl->propval.u16; ptp_debug (params, "ptp2/mtpfast: ofc 0x%x", xpl->propval.u16); break; case PTP_OPC_ObjectSize: switch (xpl->datatype) { case PTP_DTC_UINT32: oinfo.ObjectCompressedSize = xpl->propval.u32; break; case PTP_DTC_UINT64: oinfo.ObjectCompressedSize = xpl->propval.u64; break; default: ptp_debug (params, "ptp2/mtpfast: objectsize has type 0x%x???", xpl->datatype); break; } ptp_debug (params, "ptp2/mtpfast: objectsize %u", xpl->propval.u32); break; case PTP_OPC_StorageID: if (xpl->datatype != PTP_DTC_UINT32) { ptp_debug (params, "ptp2/mtpfast: storageid has type 0x%x???", xpl->datatype); break; } oinfo.StorageID = xpl->propval.u32; ptp_debug (params, "ptp2/mtpfast: storageid 0x%x", xpl->propval.u32); break; case PTP_OPC_ProtectionStatus:/*UINT16*/ if (xpl->datatype != PTP_DTC_UINT16) { ptp_debug (params, "ptp2/mtpfast: protectionstatus has type 0x%x???", xpl->datatype); break; } oinfo.ProtectionStatus = xpl->propval.u16; ptp_debug (params, "ptp2/mtpfast: protection 0x%x", xpl->propval.u16); break; case PTP_OPC_ObjectFileName: if (xpl->datatype != PTP_DTC_STR) { ptp_debug (params, "ptp2/mtpfast: filename has type 0x%x???", xpl->datatype); break; } if (xpl->propval.str) { ptp_debug (params, "ptp2/mtpfast: filename %s", xpl->propval.str); oinfo.Filename = strdup(xpl->propval.str); } else { oinfo.Filename = NULL; } break; case PTP_OPC_DateCreated: if (xpl->datatype != PTP_DTC_STR) { ptp_debug (params, "ptp2/mtpfast: datecreated has type 0x%x???", xpl->datatype); break; } ptp_debug (params, "ptp2/mtpfast: capturedate %s", xpl->propval.str); oinfo.CaptureDate = ptp_unpack_PTPTIME (xpl->propval.str); break; case PTP_OPC_DateModified: if (xpl->datatype != PTP_DTC_STR) { ptp_debug (params, "ptp2/mtpfast: datemodified has type 0x%x???", xpl->datatype); break; } ptp_debug (params, "ptp2/mtpfast: moddate %s", xpl->propval.str); oinfo.ModificationDate = ptp_unpack_PTPTIME (xpl->propval.str); break; default: if ((xpl->property & 0xfff0) == 0xdc00) ptp_debug (params, "ptp2/mtpfast:case %x type %x unhandled", xpl->property, xpl->datatype); break; } } if (!oinfo.Filename) /* i have one such file on my Creative */ oinfo.Filename = strdup(""); #endif ob->flags |= PTPOBJECT_MTPPROPLIST_LOADED; fallback: ; } if ((ob->flags & want) == want) return PTP_RC_OK; ptp_debug (params, "ptp_object_want: oid 0x%08x, want flags %x, have only %x?", handle, want, ob->flags); return PTP_RC_GeneralError; } uint16_t ptp_add_object_to_cache(PTPParams *params, uint32_t handle) { PTPObject *ob; return ptp_object_want (params, handle, PTPOBJECT_OBJECTINFO_LOADED|PTPOBJECT_MTPPROPLIST_LOADED, &ob); } libgphoto2-2.5.9/camlibs/ptp2/ptp-bugs.h0000644000175000001440000000341012610415536014727 00000000000000/* ptp-bugs.h * * Copyright (C) 2005-2006 Hubert Figuiere * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __PTP_BUGS_H_ #define __PTP_BUGS_H_ #include "device-flags.h" #define PTPBUG_DELETE_SENDS_EVENT DEVICE_FLAG_DELETE_SENDS_EVENT #define PTP_CAP DEVICE_FLAG_CAPTURE #define PTP_CAP_PREVIEW DEVICE_FLAG_CAPTURE_PREVIEW #define PTP_NIKON_BROKEN_CAP DEVICE_FLAG_NIKON_BROKEN_CAPTURE #define PTP_MTP_ZEN_BROKEN_HEADER DEVICE_FLAG_IGNORE_HEADER_ERRORS #define PTP_NO_CAPTURE_COMPLETE DEVICE_FLAG_NO_CAPTURE_COMPLETE #define PTP_OLYMPUS_XML DEVICE_FLAG_OLYMPUS_XML_WRAPPED #define PTP_NIKON_1 DEVICE_FLAG_NIKON_1 #define DELETE_SENDS_EVENT(x) \ ((x)->device_flags & (DEVICE_FLAG_DELETE_SENDS_EVENT)) #define NIKON_BROKEN_CAP(x) \ ((x)->device_flags & (DEVICE_FLAG_NIKON_BROKEN_CAPTURE)) #define NIKON_1(x) \ ((x)->device_flags & (DEVICE_FLAG_NIKON_1)) #define NO_CAPTURE_COMPLETE(x) \ ((x)->device_flags & (DEVICE_FLAG_NO_CAPTURE_COMPLETE)) #define MTP_ZEN_BROKEN_HEADER(x) \ ((x)->device_flags & (DEVICE_FLAG_IGNORE_HEADER_ERRORS)) #endif libgphoto2-2.5.9/camlibs/ptp2/Makefile-files0000644000175000001440000000135112610415617015557 00000000000000EXTRA_DIST += ptp2/ptp-pack.c ptp2/PTPIP.TXT ptp2/README.ptp2 \ ptp2/TODO ptp2/ChangeLog ptp2/ptpip.html ptp2/TESTPLAN.ptp2 camlibdoc_DATA += ptp2/README.ptp2 EXTRA_LTLIBRARIES += ptp2.la ptp2_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) $(LIBXML2_CFLAGS) ptp2_la_CFLAGS = $(AM_CFLAGS) $(CFLAGS) $(LIBXML2_CFLAGS) -Wshadow ptp2_la_SOURCES = \ ptp2/ptp.c ptp2/ptp.h ptp2/chdk_ptp.h ptp2/chdk_live_view.h \ ptp2/library.c ptp2/usb.c ptp2/ptp-bugs.h \ ptp2/ptp-private.h ptp2/ptpip.c ptp2/config.c \ ptp2/music-players.h ptp2/device-flags.h \ ptp2/olympus-wrap.c ptp2/olympus-wrap.h \ ptp2/chdk.c ptp2_la_LDFLAGS = $(camlib_ldflags) ptp2_la_DEPENDENCIES = $(camlib_dependencies) ptp2_la_LIBADD = $(camlib_libadd) $(LTLIBICONV) $(LIBXML2_LIBS) libgphoto2-2.5.9/camlibs/ptp2/TODO0000644000175000001440000000033112561423351013503 00000000000000Unordered TODO list: -- lot of internal error handling code is needed and the whole internal error reporting scheme has to be reorganized and improved! -- consider the idea of adding lasterror variable to PTPParams libgphoto2-2.5.9/camlibs/ptp2/ChangeLog0000644000175000001440000020232612610415510014566 000000000000002012-04-07 Axel Waggershauser * EOS 5D Mark III support * CustomFunctionEx support for EOS 2010-11-17 Marcus Meissner * config.c, library.c, ptp.c, ptp.h: switch the canon powershot event handling to be non-interrupt (just using the 0x9013 opcode). 2010-11-17 Marcus Meissner * library.c: Replace 20 by 100 tries in EOS preview capturing. 2010-11-15 Flori Radlherr * config.c: Implement a "Immediate" button trigger config on Canon EOS. 2010-10-28 Marcus Meissner * library.c: Speed up initial EOS capture if the event stack was not drained before. 2010-10-15 Chris Wulff * library.c: Fixed session setup to really use incremental, from Chris Wulff. 2010-09-15 Marcus Meissner * library.c: When querying the thumb, use the direct thumbsize. 2010-06-30 Marcus Meissner * library.c: restructured eos event handling loops to be less USB intensive after report by Axel. * config.c,library.c: various ptp errors passed up. 2010-06-30 Axel Waggershauser * ptp-pack.c: Fixed EOS imageformat unpacking regression. * config.c: fixed shadowed variable usage making set_config leave too early. 2010-01-09 Daniel P. Berrange * config.c: Added several new Nikon flash configurations. 2009-12-13 Marcus Meissner * config.c: Mark readonly widgets as readonly * library.c: make timeout code the same for all functions, fixed canon capture timeouts. 2009-12-06 Laurent Calmes * library.c: Fixed Nikon Preview code for Nikon D300, 2009-10-31 Marcus Meissner * config.c: Implemented Sharpness, Capture Delay and Burst Interval standard PTP properties. * config.c: Implemented Fuji Image Format and Release/Capture mode. 2009-10-29 Marcus Meissner * library.c: Fuji Pro S5 support. Detect FUJI vendor. * ptp.h: More vendor codes from i3a.org. * config.c: Hook up lots of PTP codes from Fuji S5 Pro. 2009-10-02 Marcus Meissner * config.c,ptp.c,ptp-pack.c: Added more EOS configuration values. * library.c: Made EOS preview capturing more stable. * config.c: Hide action commands if command is not present. 2009-09-25 Marcus Meissner * config.c: Handle different Canon EOS card target values. 2009-08-02 Marcus Meissner * library.c: In wait_for_event do not wait for full seconds anymore. 2009-07-28 Axel Waggershauser * config.c: Unified names and values of configuration settings. Some of the common names have been changed, like owner -> ownername and exptime -> shutterspeed etc. 2009-07-24 Marcus Meissner * config.c: Finalized generic PTP property setter. * library.c,config.c: Enable Viewfinder on demand only, not for regular capture. Should fix camera-switching-off issues. 2009-07-19 Marcus Meissner * config.c: New subsection "status" for all read-only values. * config.c: New subsection "action" for simple camera actions. * config.c: Added new "bulb" action for newer Canon EOS cameras,. --set-config bulb=1 to put it in Bulb mode --set-config bulb=0 to put it out of Bulb mode (--wait-event for looking where the image went or so) 2009-07-15 Axel Waggershauser * config.c: some unnecessary debuglines removed. * config.c: Decode EOS battery charge value. * config.c,library.c: support for 'online-updates' of capturetarget for EOS 2009-07-10 Marcus Meissner * ptp.c,ptp.h: Generic PTP wrapper function (no data, no output) to avoid coding all generic functions as seperate functions. Converted all convertable functions to macros. 2009-07-09 Axel Waggershauser * ptp.c: Some sprintf format adjustments. * ptp.h: EOS_RemoteRelease doc comments. * config.c: More Canon ISO and FStop values for the Canon 5D Mark II. * ptp-pack.c,library.c: More EOS debugging output. * config.c: Added AEB and DriveMode configuration. * ptp.c,ptp.h: Added ptp_canon_eos_requestdevicepropvalue() * config.c: request some string types, handle owner, artist, copyright, lensname, serialnr, shuttercount, availableshots * ptp.c: decode EOS strings better * ptp-pack.c: dpd.GetSet adjustments. * ptp-pack.c,config.c,ptp.c: Implemented EOS ImageSize and ImageFormat handling. 2009-05-26 Marcus Meissner * ptp.c,ptp.h,library.c.usb.c:: Unify and abstract ptp object handling. Add "on demand" loading throughout library.c. (Larger rewrite ... might still be a bit buggy.) 2009-04-10 Marcus Meissner * ptp.c,ptp.h,ptp-pack.c: make nikon check event return a generic PTPContainer, make canon check event also return a generic PTPContainer. * ptp.c,ptp.h: Added 2 PTP event queue, generic events and Canon EOS. * library.c: Rewrote wait_for_event to use event queues etc. * library.c: Hooked up the first try at the trigger capture method, currently just PTP generic, others to follow. 2009-03-27 Marcus Meissner * library.c, ptp.c, ptp.h: use Nikon Get Vendor Extension Codes call instead of fixed lists. Removed static lists. * library.c: In wait_event, handle Nikon cameras with Check Event to also allow tethered capture via SDRAM. (cut and paste code needs to be cleaned up sometime). * library.c: Nikon LiveView support for --capture-preview. * library.c: Nikon DSLR: AutoFocus Drive (always possible) and Manual Focus Drive (only during LiveView) added. * library.c: If a MTP device has vendor name Canon or Nikon, mark it as Nikon or Canon. * library.c: Canon capture: Automatically fallback to SDRAM if no CF/SD Card inserted. * library.c: Canon EOS Capture: download all images on tethered capture. * config.c: longer timeout for Canon ViewFinder On command * config.c: some more error reporting on the table driven config engine * config.c: some new values added * music-players.h, device-flags.h: imported from latest libmtp. * library.c: Added: Nikon CoolPix P50, S60 Canon Digital IXUS 85 Canon PowerShot A740, G10, Canon EOS 5D Mark II 2009-01-21 Marcus Meissner * library.c: Adjusted flags for Canon Powershots to match capture abilities on the SDK page. * config.c: Do not list WiFi stuff on non-WiFi Nikons in config. * library.c: Added Nikon D200 property set. 2009-01-18 Marcus Meissner * library.c: Fixed stupid bug in "canon capture to card" mode. * ptp.c,ptp.h,config.c: PTP Nikon AfDrive (Nikon DSLR). (not doing much) * ptp.c, config.c: Various additions of missing config values. 2009-01-15 Marcus Meissner * config.c: Enable viewfinder in enable capture for Powershots, so we can just --set-config capture=1 --set-config output=0 or so. * library.c: Added Nikon D90 and its hidden properties. 2009-01-08 Marcus Meissner * library.c: Added set_info_func, to set/reset Object Protection flags. Added queries for it to get_info_func. (Used by digikam already). * library.c: Added Canon Digital IXUS 960 IS, EOS 1000D, PowerShot SX10 IS, Fuji FinePix A920, S2000HD. * library.c: Added Nikon D200 hidden properties. * config.c: Added more Nikon properties (almost of D70s properties now added). 2008-12-22 Marcus Meissner * library.c,ptp.c,ptp.h: Added more Nikon properties. 2008-12-21 Marcus Meissner * library.c: Handle CR2 in Canon ObjectAdd events * ptp.c, config.c: More Nikon property handling 2008-12-14 Marcus Meissner * ptp.h: Found some Nikon property ids. 2008-11-27 Marcus Meissner * library.c: Got the data for the D700 and D300, included. Changed nikon capture code to work with the D700 and other newer Nikon DSLRs. * ptp.[ch]: Decode the Nikon DSLR current rotation flag. * ptp.h: Mark up the operation codes for Nikons. 2008-11-23 Marcus Meissner * library.c: Newer Nikon DSLRs "hide" the Nikon vendor device properties, re-add them when we find them missing. Reviewed with a D80 already. * ptp.h: Fixed Canon Capture to Card mode bug. * ptp.c,ptp.h: Dumper for lots of Canon properties for --summary. 2008-11-05 Marcus Meissner * ptp-private.h, library.c: Move init_ptp_fs out of initialization and into the routines that need it. This avoids loading the whole PTP fs for: - configuration - summary 2008-10-26 Marcus Meissner * ptp.h,ptp.c: Started adding PTP v1.1 defines. 2008-10-12 Marcus Meissner * library.c: Adjusted summary output a bit. * library.c: Handle "wrong parent" or "no root parent" devices every time, so when we autodetect new ones we do not need to add them to the list. Should avoid releasing libgphoto2 for new iPhones etc. * library.c: If a filename is empty or not set, replace it by the 8 char hexcode. (Should enable movie retrieval on Panasonics). 2008-10-09 Marcus Meissner * ptp-pack.c: factored out ptp time string parser * library.c: also support MTP commands for cameras. (fast directory download) Using it for the Canon Digital IXUS SX100IS already. 2008-09-20 Marcus Meissner * library.c: Do not disable viewfinder just after one preview. Repeatedly switching on/off viewfinder mode causes refocus all the time. 2008-08-28 Marcus Meissner * library.c: Increase timeout for mtp proplist reading (from Chris Bagwell). * ptp.c, music-players.h, device-flags.h: Merged updates from libmtp. 2008-07-31 Marcus Meissner * library.c: Added Nikon Coolpix L16 , Nikon D700. * ptp-unpack.c: Fixed a property handling issue with empty/non existant strings in the unpacker, triggered by the D700. * README.ptp2: Added link to now official MTP 1.0 spec. 2008-07-18 Marcus Meissner * library.c: Added the Canon EOS 1D Mark III (reported by jholt) * library.c: Disabled more 0x2372 panasonic mass storage ids. 2008-07-03 Marcus Meissner * config.c: allow capture=off 2008-06-13 Marcus Meissner * library.c: Change initial timeout magic for Canon cameras to use 0.5 second timeouts. Lets hope all the Canons can do this. 2008-06-05 Marcus Meissner Linus Walleij * music-players.h, device-flags.h: Merged new music players from libmtp. 2008-04-11 Marcus Meissner * library.c, config.c: Added EOS 450D capture mode. Changed setting of 0xd11c EOS property from 1 to 4. 2008-03-31 Marcus Meissner * ptp.c, ptp.h, config.c: Try to fix EOS capture preparation, by doing a real ptp_eos_getstorageids. 2008-03-15 Marcus Meissner * library.c: Adjust for GPPortInfo change. 2008-03-13 Linus Walleij * ptp.c/ptp.h: Added 2 new MTP object format codes. 2008-03-02 Marcus Meissner * music-players.h: Synced from libmtp. 2008-03-01 Marcus Meissner * ptp.c: MTP GetObjectReferences on Sansa MTP device can skip the dataphase, but return OK as response. Handle this strange case here. 2008-02-22 Marcus Meissner * library.c, ptp.h: Always use Canon capture mode if available. Allow the Canon capture mode to store its stuff on the card by using the 0xd029 property (CaptureTransferMode). 2008-02-19 Marcus Meissner * config.c: Do not clear the "changed" flag when its not the widget we want. 2008-02-07 Marcus Meissner * library.c: Added Canon IXUS 860 IS as reported. 2008-02-06 Marcus Meissner * config.c: Allow synchronising the system time to the camera. Just do: gphoto2 --set-config synctime=on Confirmed to work for Canon IXUS. 2008-01-03 Linus Walleij * ptp.c,ptp.h: Moved mtp property caching and removing into this file. (not currently hooked up). 2007-12-10 Marcus Meissner * library.c: Disabled LUMIX FZ-20 (alternate ID), since customer reports it only doing mass storage. 2007-12-10 Marcus Meissner * library.c, music-players.h, device-flags.h: New devices from libmtp project. New device-flags.h from libmtp project. 2007-12-03 Marcus Meissner * library.c: Added Nikon DSC D300, Coolpix 7900. 2007-11-16 Marcus Meissner * library.c: Made metadata reading more intelligent, and fall back to lowlevel methods if necessary. 2007-11-14 Marcus Meissner * usb.c, ptp-bugs.h, library.c: Handle Creative Zen 8GB broken header devices. 2007-11-12 Marcus Meissner * library.c: Added Canon A460, Nikon D40X. 2007-11-06 Linus Walleij * ptp.c: Do not print to stderr on not yet supported OPFF types. 2007-10-31 Marcus Meissner * library.c: also check for audio/x-wma and audio/x-wmv mimetypes. 2007-10-27 Marcus Meissner * music-players.h, library.c, Makefile-files: Split off music-players.h from libmtp to share between us and libmtp. 2007-10-26 Marcus Meissner * library.c, config.c: Set GPContext consistently in the Params struct, otherwise we might resuse already free contexts. 2007-10-25 Marcus Meissner * library.c, ptp-bugs.h: The newer Nikons have the regular capture events just fine, just the old ones suck a bit here. Mark them broken for now. 2007-09-18 Linus Walleij * usb.c, library.c, ptp.c, ptp.h: Split out cancel handling to shared code. 2007-09-13 Marcus Meissner * usb.c, library.c: Added cancellation support for read transfers. 2007-09-11 Marcus Meissner * ptp-pack.c, ptp.h, ptp.c, library.c: Change MTP proplist to a proparray. Rename MTPPropList to MTPProperties to match the Use qsort() instead of a O(n^2) insertion sort. state. 2007-08-28 Marcus Meissner * ptp-pack.c: Pack NULL strings same as "" (from libmtp). 2007-08-22 Marcus Meissner * library.c: Added Nikon Coolpix S200 (from Marius Groeger) * library.c: Added Nikon Coolpix L12, Cowon iAudio U3 2007-08-03 Marcus Meissner * ptp.h, ptp-pack.c: From libmtp: Pack/unpack 64bit integers. Fixed packing of arrays. 2007-07-26 Marcus Meissner * library.c: Merged MTP devices from libmtp. 2007-07-18 Marcus Meissner * ptp.c,ptp.h: Added PTP reset handling (from libmtp). * ptp-pack.c, config.c: Handle EOS CameraTime (just a UNIX timestamp again) 2007-07-17 Marcus Meissner * library.c: Added Canon PowerShot S5 IS. 2007-07-03 Marcus Meissner * ptp.c, ptp.h, config.c: Set EOS properties. * library.c: Added Kodak C613 id. * ptp.c,ptp.h: Added freeing of objectinfos. 2007-06-29 Marcus Meissner * library.c: Only allow Nikon fast fs retrieval on the USB port. 2007-06-22 Marcus Meissner * Added Sony DSC-W200 (new Sony id!) 2007-06-17 Marcus Meissner * library.c: If we get errors on OpenSession try to send RESET USB control message to the device to reset it / clear buffered stuff. 2007-06-15 Marcus Meissner * library.c: Nikon Coolpix series capture now determines the captured filenames. 2007-06-05 Marcus Meissner * ptp.c, ptp.h, ptp-pack.c, library.c, config.c: Started EOS 400D+ style capture support. * ptp.h: Added lots of new Canon Powershot specific defines. 2007-05-28 Paul Walmsley * usb.c: replace gp_port_usb_check_int_fast() calls with timeout save/change/restore and gp_port_usb_check_int() 2007-05-25 Paul Walmsley * library.c: fix bogus Canon EOS 5D USB product ID 2007-05-23 Marcus Meissner * config.c: Allow configuration of Exposure Bias Compensation * usb.c: Handle response instead of data answer (happens on failure). * ptp.c: Handle GetObjectHandles errors as non critical (Just as "0 handles"). 2007-05-09 Marcus Meissner * ptp.h, usb.c: Send/Receive control messages to class. * library.c: Added Kodak C653 2007-05-06 Marcus Meissner * library.c: Added Canon IXUS 75 aka PowerShot SD750. * library.c: Added Fuji FinePix S9500. * library.c: Added Motorola A1200 smart phone in MTP. 2007-04-16 Marcus Meissner * ptp.h, library.c: Added some Canon EOS specific properties and values. * library.c: Added PowerShot SD1000 aka IXUS 70. * library.c: Added Kodak Easyshare C743 2007-04-11 Marcus Meissner * Added Archos 504 MTP player. 2007-04-04 Marcus Meissner * library.c: Added Canon PowerShot A550 * ptpip.c: Added major/minor version reporting. 2007-03-27 Marcus Meissner * library.c: Check for overflows in --summary. * library.c: Skip the 0xd201 property, it causes hangs. 2007-03-24 Marcus Meissner * library.c: Added configuration of shooting mode. 2007-03-23 Marcus Meissner * ptp.c,ptp.h: Added MTP command 0x9806 (from libmtp). 2007-03-12 Marcus Meissner * library.c: Added Canon MV750i. 2007-03-07 Marcus Meissner * library.c: Avoid emitting the d029 property if the camera does not have it. 2007-03-05 Marcus Meissner * library.c: Added Fuji FinePix F20. * usb.c: Adjusted PTP error reporting not to spew on the gp_context_error channel. 2007-03-03 Marcus Meissner * library.c: Disable Canon fast directory retrieval, since it reportedly fails with the Canon PowerShot A430. 2007-02-27 Marcus Meissner * library.c: If we have a Canon USB device, but with Microsoft vendor extid, switch the exitid back to Canon. 2007-02-26 Marcus Meissner * ptpip.c: Some small bugfixes, removed memory leaks. * library.c: Added Toshiba Gigabeat P20 (from libmtp). * Use different read/write block sizes (to help some MTP devices). 2007-02-14 Marcus Meissner * Added Minolta DIMAGE x21 (pictbridge mode) * Added Nikon Coolpix S4. * Added several MTP players from libmtp. 2007-02-07 Marcus Meissner * config.c: Handle exptime using integers, not floats. 2007-02-02 Marcus Meissner * library.c: Rewritten UCS-2 handling to not use strange hacks, but UCS-2LE directly. (from Chuck Cranor) 2007-01-29 Marcus Meissner * library.c: Added focuslock toggle option. 2007-01-25 Marcus Meissner * ptp-pack.c: Use a fallback method if iconv is not correct. 2007-01-20 Marcus Meissner * Added Canon PowerShot A420. * Added Canon Digital IXUS 900Ti. * Added Philips PSA235 and Samsung YH-925GS from libmtp. * Added SanDisk Sansa c250. * Added Nikon CoolPix S6. 2007-01-18 Marcus Meissner * library.c, ptp.c, ptp-pack.c, ptp.h: Free datastructures on closing the camera. 2007-01-14 Marcus Meissner * usb.c: read in 64kb blobs again (512 bytes read are ineffecient). * library.c: On delete and rmdir also remove the information from the internal handles and objectinfos. Otherwise remove, upload, remove, upload cycles will not work ... and gphotofs needs them. 2007-01-10 Marcus Meissner * library.c: Added NULL check in MTP objlist reader. 2007-01-06 Marcus Meissner * library.c, ptp.c, ptp.h, ptp-private.h, usb.c: Rewrote the USB lowlevel communication layer. Merged write_func, read_func, check_int and check_int_fast into the ptp_usb_sendreq etc. Split the latter into its own file, usb.c. 2007-01-03 Marcus Meissner * library.c: Get endpoint maxpacketsize from the USB port settings and use it in 0 write detection code. * library.c: More MTP mime types (from libmtp folks). * library.c: Rewrote the MIME type handling to take vendorextensionid into account. (me) * library.c: Various new USB ids out of Ubuntu launchpad bugreports. Canon PowerShot SD40 Kodak EasyShare C433 Kodak EasyShare V705 Casio EX-Z700 2007-01-02 Marcus Meissner * library.c: Report storage information dynamically using the new API. * ptp.c,ptp.h: From libmtp folks: Renamed some defines of MTP commands. 2006-12-30 Marcus Meissner * library.c,ptp-bugs.h: Mark up MTP devices known to support MTP GetObjectPropertyList correctly. Do not call it for others. From libmtp developers: 2006-12-30 Orson Teodoro * ptp.c,ptp.h: Lots of new MTP defines and debug output. 2006-12-29 Richard Low * ptp-pack.c: Fixed bugs in ObjectInfo packing magic. * library.c: Added Philips SA9200. 2006-12-29 Marcus Meissner * library.c: Added Kodak C875, HP Photosmart R967. * config.c: Report battery level (read-only) 2006-12-28 Marcus Meissner * library.c, ptp.h, ptp.c, ptpip.c: Rewrote the whole data flow handling to allow streaming of data from and to PTP devices without taking up memory. Introduced generic PTPDataHandler with get and putfunctions. 2006-12-21 Marcus Meissner * Added Kodak V570 as reported. * Added iRiver T20 and N12 as reported from libmtp. 2006-12-19 Marcus Meissner * ptp.c: Fixed FD writing with short files (from libmtp). 2006-12-17 Marcus Meissner * library.c: Fixed leaking CameraFile + data on Canon and Nikon capture. 2006-12-16 Marcus Meissner * library.c: Added HP Photosmart E427. 2006-12-14 Marcus Meissner * ptp.h,ptp.c,config.c: Imported some knowledge from libptp2. 2006-12-13 Marcus Meissner * ptp.c,ptp.h: Added "BuyNow" property define and debugoutput. * ptp-pack.c: Handle offset of DPVs of INT64 and INT128 datatype correct. * library.c: Fast directory tree and metadata retrieval for MTP devices. 2006-12-08 Marcus Meissner * ptp.c: Get back to split headers in getobjectpropertylist. * ptp-pack.c: Fixed string packing. Include terminating \0. 2006-12-04 Marcus Meissner * ptp.c: Fixed the response packet in-data-phase handling to actually work. From libmtp folks. 2006-12-02 Marcus Meissner * library.c: Added Canon PowerShot SD600, HP Photosmart C500. 2006-12-01 Marcus Meissner * ptp.[ch]: MTP devices might send the response packet during data-in phase. Handle such a case. Patch supplied by libmtp guys and adapted. 2006-11-30 Marcus Meissner * library.c: Added Microsoft Zune (not fully working!) * library.c: Added Sirius Stilletto. 2006-11-27 Marcus Meissner * ptp.c,ptp.h,ptp-pack.c: Bugfixes for GetObjProplist code. 2006-11-19 Marcus Meissner * ptp.c,ptp.h,ptp-pack.c: From Libmtp folks: Implemented MTP GetObjProplist opcode. Handle the PTP violating READ (length 0xffffffff). * library.c: Added PowerShot G7. 2006-11-15 Marcus Meissner * library.c: Added Kodak C643, Samsung YP-K5. * library.c: added Creative Zen Vision W 2006-11-12 Marcus Meissner * ptp.c, ptp.h, ptp-pack.c: Implementation of MTP_SendObjectproplist from the libmtp folks. * library.c: added Creative Zen Vision M 2006-11-07 Marcus Meissner * library.c: Do incremental event read only for actual PTP events. * library.c: added Nikon CoolPix L1, Kodak C530. * library.c: Added some HP Photosmarts, USB ids extracted from the .INF files downloadable from hp.com. 2006-11-04 Marcus Meissner * library.c: Added Canon Digital IXUS 850 IS * library.c: removed pragma pack(1) ... umm. 2006-10-31 Marcus Meissner * library.c: Added Canon PowerShot A640. * library.c: Added Nikon D80. 2006-10-23 Marcus Meissner * ptp.c,ptp.h: render more MTP opcodes. (from libmtp). 2006-10-21 Marcus Meissner * ptp.c: Check sequence number sequence. A mismatched response sequence number indicates a problem. * library.c: On read errors, clear USB HALT of the IN EP. * library.c: Added Toshiba Gigabeat S. 2006-10-18 Marcus Meissner * library.c: added HP Photosmart M425 2006-10-16 Marcus Meissner * library.c: Added Creative Zen Vplus, Dunlop MP3 Player 1GB, EGOMAN MD223AFD (submitted by libmtp folks). 2006-10-14 Marcus Meissner * library.c: removed unused variable j The Canon fast retrieval seems to be a bit flawed on the IXUS 55, so add some checking. 2006-10-13 Marcus Meissner * ptp.c,ptp.h,ptp-pack.c,library.c: Implement CANON fast directory retrieval (just one call for all objects). Should give speed-up if lots of files are on the camera. (Apparently needs Canon released in/after 2005). * library.c: Implemented "NEW" flag handling for newer Canons, like with Canon driver. * library.c: Do not retrieve storage info unnecessary on / folder listing. The information is not used at all. * ptp.h/ptp-pack.c: Fixed typo in StandardVersion. * library.c: Implemented "NEW" flag handling also for older Canons using the older directory retrieval method. 2006-10-12 Marcus Meissner * library.c: Corrected SD630 name (its PowerShot brand), added Digital IXUS 65 alias for same. 2006-10-11 Marcus Meissner * ptp.c,ptp.h: translate opcodes to strings (merged from libmtp). * ptp.c, ptp.h, library.c: Sync CANON opcode names with list gleamed from camera access library. * ptp.[ch]: Get Canon wireless MAC address wrapper. 2006-10-10 Marcus Meissner * library.c: Added Canon Digital IXUS Wireless (same as SD430) Marked them as capture capable, but capture mode not supported yet. * ptp.c/ptp.h: Added "Request Direct Transfer" opcode for newer Canons. * ptp.c/ptp.h: Added "Get Direct Transfer Entries" opcode for newer Canons. * ptp.c: Read event in multiple parts (necessary for Canons who only read 8 byte per interrupt). 2006-10-05 Marcus Meissner * config.c: Do not call Nikon commands on Canons. * library.c,config.c,ptp-private.h: Initialize Canon capture if we do "to RAM" capture on canons. 2006-09-30 Marcus Meissner * library.c: If PTP is busy, retry Nikon Capture command. 2006-09-29 Marcus Meissner * library.c: Added Kodak Z612 as reported. 2006-09-25 Marcus Meissner * library.c: Added Canon PowerShot A710 IS as reported. 2006-09-21 Marcus Meissner * library.c: Added Olympus IR-300 * library.c: Do not allow "mkdir" of the same directory twice. * library.c: Do not allow "put" of the same file twice. 2006-09-18 Marcus Meissner * library.c: Added Kodak CD33. 2006-09-16 Marcus Meissner * library.c: Added Creative Zen V. * library.c: Added Canon PowerShot A630 2006-09-15 Hubert Figuiere * library.c: Added Canon EOS 400D/Digital Rebel XTi This camera does not have the infamous PTP bug. 2006-09-13 Marcus Meissner * ptp.[ch]: formatstore function (from libmtp). * library.c: fixed iconv() usage for non glibc etc (from libmtp). 2006-09-11 Marcus Meissner * library.c: Added iRIver T10 2GB model. * library.c: Added Toshiba Gigabeat P10 model. 2006-09-09 Marcus Meissner * library.c: Uses short timeout during startup, but longer timeouts later on. 2006-09-03 Marcus Meissner * library.c: Implemented MTP Abstract Playlist upload. 2006-09-02 Marcus Meissner * library.c: CANON cmd 9006 is "lookup object". (Could be used later to speed up directory listing.) 2006-08-31 Marcus Meissner * library.c: Handle cameras which just have files, but no directory or root object. Kodak EasyShare C330 for instance. * library.c: GP_CAPTURE_IMAGE -> GP_OPERATION_CAPTURE_IMAGE. * library.c,ptp-bugs.h: Mark up capture capable cameras for the static capabilities. * library.c: added Samsung YP-F2J (from libmtp). 2006-08-30 Marcus Meissner * library.c: Added iRiver Clix. 2006-08-25 Linus Walleij Marcus Meissner * ptp.c,library.c,ptp.h,ptp-pack.c: Use iconv(3) to convert the UCS-2 used in ptp strings to the current codeset (detected by nl_langinfo(3)). 2006-08-27 Marcus Meissner * ptp.c,ptp.h,ptpip.c: Merged upload from fd patch from libmtp folks (Linus Walleij). 2006-08-20 Marcus Meissner * library.c: Do not download 0 sized objects. * ptp.{c,h}: Merged libmtp patch "download to fd" to keep in sync with them. 2006-08-10 Marcus Meissner * Added alternate iRiver H10 id, reported by Scott Call. * Added SanDisk sansa m240, Samsung YP-U2J, Archos 104 2006-08-07 Hubert Figuiere * library.c: Added Canon SD430 2006-07-22 Hubert Figuiere * library.c: Added Kodak P850 2006-07-08 Marcus Meissner * config.c: Hue Adjustment is an Enumeration on Nikon P3. 2006-07-08 Nicolas Boichat * config.c: Fixed bug in generic handler, when widgets could be added twice. 2006-07-07 Nicolas Boichat * library.c,ptp.c,ptp.h,ptpip.c: Added configuration upload of WIFI profiles for the Nikon P2. * ptpip.c: Generate a random GUID if not set yet and store it in the gphoto settings. * PTPIP.TXT: Documented profile layout. 2006-07-02 Marcus Meissner * library.c: Enhanced duplication logic to work for the cases we encounter on MTP devices. * ptp-bugs.h, library.c: Mark up MTP devices and classify them as Audio Devices. (For later use by packaging scripts.) * library.c: Generic autodetection of MTP devices by bypass hack with USB class. 2006-06-26 Marcus Meissner * library.c: Added Kodak Z650. 2006-06-24 Marcus Meissner * library.c: Added AVPlaylist download (upload to come). 2006-06-24 Marcus Meissner * library.c, config.c, ptp-private.h, Makefile.am: Split out configuration handling into new file config.c 2006-06-16 Hubert Figuiere * library.c: 30D has DCIM ROOT bug 2006-06-13 Marcus Meissner * ptp.{ch}: Updated MTP defines from libmtp. 2006-06-01 Marcus Meissner * library.c: Added new USB ids for: Canon PowerShot A540, A530, S3 IS, SD700, IXUS 800, IXUS 60, iRiver T20 FM Dell Pocket DJ Nikon Coolpix L4, L3 Kodak Easyshare Z740 Sony DSC-U10 Leica D-LUX 2 JVC Alneo XA-HD500 2006-04-27 Marcus Meissner * ptp.c: The iRiver devices occasionaly send a byte more than we requested which could lead to memory corruption due to logic that did not expect that. * library.c: Replaced fprintf by gp_log in parse_metadata. 2006-04-17 Marcus Meissner * ptp.c, library.c: Added several more Nikon DSLR config options. * library.c: Prepare handling Burst mode on the Nikon DSLRs, (I just need to know the Object ID sequence generated). * library.c: Added METADATA retrieval and setting for MTP devices. 2006-04-12 Marcus Meissner * library.c: Added PowerShot A700 as reported. 2006-04-04 Marcus Meissner * library.c: Added Nikon D200, as reported by Jana Jaeger. 2006-04-02 Marcus Meissner * library.c: Added lots of Nikon configure options. 2006-03-28 Marcus Meissner * library.c: Added EOS 30D as reported on SF. * library.c: Enhance about text a bit. Explain that we are not a Licensed MTP Implementation, but are fully able and willing to serve MTP devices. 2006-03-26 Marcus Meissner * library.c: Handle mp3 mime type correctly. New devices (copied from libmtp). Better "bad folder" errormessage. 2006-03-21 Marcus Meissner * library.c: Added wait_for_event hook to return ptp events. 2006-03-18 Marcus Meissner * library.c: Added Canon Optura 600. 2006-03-16 Marcus Meissner * Makefile.am, library.c: Enable PTP/IP per default to shake out compile problems on !Linux before release. 2006-03-10 Hubert Figuiere * library.c: HP 850 has PTPBUG_DUPE_FILE (file_list_func): handle DUPE_FILE bug * ptp-bugs.h (PTPBUG_DUPE_FILE): added this PTP bug 2006-03-09 Hubert Figuiere * library.c: Added Kodak C360 (from Debian) 2006-02-17 Marcus Meissner * ptpip.c,ptp.h,library.c: PTP/IP protocol implementation. Currently not enabled, just included for reference and the not so faint at heart. Missing: - Still using hardcoded IP address and GUID. - autoconf the UNIX socket function stuff. - PTPIP event handling 2006-02-17 Marcus Meissner * ptp.c: Return the actual PTP protocol return code from the ptp_transaction(). This makes us see the actual errors the camera reports. 2006-02-06 Marcus Meissner * library.c: Added EOS 5D 2006-02-05 Marcus Meissner * library.c: Use event_check and event_wait functions from params struct. Initialise those entries. 2006-01-31 Marcus Meissner * library.c: Enabled Canon SDRAM capture, using the same methods as the Nikon capture. 2006-01-31 Marcus Meissner * library.c: Added Toshiba Gigabeat MTP player. 2006-01-30 Marcus Meissner * library.c: Added Nikon SDRAM capture. Downloads images directly after capture. Added configuration for Capture Target (Card or SDRAM). 2006-01-24 Marcus Meissner * ptp-bugs.h, library.c: Added bug handling where some canon cameras send ObjectDeleted events on DeleteObject. Since EOS firmware doesnt do that, use a bugflag instead of vendor check. 2006-01-21 Marcus Meissner * library.c: Added HP Photosmart E317 Added Canon PowerShot S80. * library.c: Relaxed Association checks for directories. The E317 sees AssocType 0x0 (undefined) for DCIM/ et.al. Avoid buffer overflows on too long filenames. Enabled Creative Zen Micro (was failing on the 512 byte problem before, should be fixed now). 2006-01-17 Marcus Meissner * ptp-parse.pl: parse binary SnoopyPro / usbsnoop logs too. * PTPIP.TXT: enhanced. PTP/IP uses actually 2 tcp/ip connections. 2006-01-16 Marcus Meissner * library.c: Added progress bar support for downloads and uploads. Contributed by Dave O . * ptp.c, ptp.h, library.c: Print MTP object properties in --summary 2006-01-14 Marcus Meissner * library.c, ptp.c, ptp.h: more --summary output. List OFC codes now. * library.c: Cleaned up config function parameter lists. Need to property desc on "put" too (for Focal Length currently). Replaced 19 tablelookup based functions doing the same by 2. Implemented configuration for: - FocalLength - FocusMode 2006-01-12 Marcus Meissner * library.c, ptp-pack.c: Unpack all members of the StorageInfo structure. Add Storage summary to --summary output. 2006-01-11 Marcus Meissner * library.c: Also split ptp writes into 4k chunks to avoid lowlevel timeouts. 2006-01-09 Marcus Meissner * library.c: added iRiver U10. 2006-01-08 Marcus Meissner * ptp.c, ptp-pack.c, ptp.h: Enhanced ptp_nikon_check_event(), unpack event list. 2006-01-06 Marcus Meissner * PTPIP.TXT: describes PTP/IP communication basics. 2006-01-05 Marcus Meissner * library.c: Removed one unnecessary line of code. Use event_check instead of event_wait for now in canon specific delete code. Added Fuji Finepix E900/PictBridge id. * library.c: Added Philipps HDD6320 MTP player. 2006-01-01 Marcus Meissner * library.c: Add EOS 350 canon id too, since it apparently reacts to PTP traffic on it too. * ptp.c, ptp.h: Adjusted several canon properties to better names. Added some previously not known ones. "ramsize" is actually "firmwareversion" and so on. 2005-12-30 Marcus Meissner * library.c: Only allow getpartialobject for EXIF JPEG images. 2005-12-29 Marcus Meissner * ptp.c, ptp.h, library.c: Added "fast filesystem" startup mode for newer Nikon cameras. For cards with large number of images this patch reduces the time from > 10 seconds down to 1.5 seconds. It however only allows recreation of a limited view of the /DCIM tree. To switch between old (more correct) and new (faster) model, use the "Camera Settings" -> "Fast Filesystem" config. * library.c: Kodak C330 has no 0x0 parentobject entry in non-card mode, so mark it as "autodetect parent". * Cleaned up some names of Nikon defines values. * ptp-pack.c, ptp.c, ptp.h: Added Eastman Kodak setserial, getserial and settext commands. You can display "Hello World!" on the TFT ... ;) 2005-12-28 Marcus Meissner * Fixed signedness warnings by using "unsigned char*" more often. Added ptp_getnumobjects() function. 2005-12-19 Marcus Meissner * Added Canon IXUS 750. * Added HP PhotoSmart M23. 2005-12-18 Hubert Figuiere * Added Kodak V530. 2005-12-18 Marcus Meissner * library.c, ptp.c, ptp.h: Synchronized Nikon defines with libptp2. Added Nikon (special) capture, checkevent, check readyness 2005-12-08 Marcus Meissner * Added Nikon Coolpix P2. * Added Ricoh R3 (print mode). * Added Kodak Easyshare C31, reported by Giulio Salani. * Added Canon PowerShot A620, reported by Tom Roelz. * Added iRiver T20, reported by Martin Senst. * Added HP Photosmart M415, mentioned in a bugreport. * Added Canon PowerShot A610, reported by Andriy Kulchyts. * Added Olympus d-540z, c-310z, x-100, reported by Bruno Parente. * Added Panasonic DMC-LZ2, reported by Jens Stutte. * Added iRiver T30, reported by Bruno Parente Lima. * Added Nikon D50. * Added iRiver T10 with alternate ID, reported by Jay MacDonald. 2005-10-28 Marcus Meissner * Added Canon Digital IXUS 55, PowerShot SD450. * Added Canon PowerShot A410 * Added Nikon Coolpix 4800. * library.c: Do partial read only if there is enough to read. (from Jon Burgess) 2005-10-24 Marcus Meissner * Added Kodak C300 as reported. * Added Kodak V550 as reported. 2005-10-13 Marcus Meissner * Added iRiver T10. This is an MTP device, but the user reported being able to browse the filesystem and to download stuff. 2005-09-24 Marcus Meissner * README: Added Copyrights Marcus & Hubert Added documentation URLs. 2005-08-11 Hubert Figuiere * library.c: Added Coolpix 5600. 2005-08-07 Marcus Meissner * library.c: Added Kodak C340 (mail by Maurizio Daniele ) 2005-07-31 Marcus Meissner * library.c: Added Coolpix 5900 https://sourceforge.net/tracker/?func=detail&atid=358874&aid=1248287&group_id=8874 2005-07-19 Marcus Meissner From Vince Vegard : * library.c, ptp.c, ptp.h: Implemented Nikon Curve download. * library.c: Added Nikon Coolpix 5200. * library.c: PTP is class 6, subclass 1, protocol 1. 2005-07-19 Marcus Meissner * library.c: Use params everywhere. Enhance errorhandling to report errors only for the correct vendor. Completed Canon theme download, but disabled. 2005-07-14 Marcus Meissner * library.c: Added GX 8 in ptp mode. 2005-07-08 Marcus Meissner * library.c: Borrowed a Nikon D70 for a day (thanks AJ!) and implemented: F-Number, Focal Length, Exposure Metering Mode, Focus Metering Mode, Flash Mode, Exposure Time, Exposure Program Mode, Exposure Index (ISO), Still Capture Mode, AF Illumination (dont know what this is), AF Beep Mode. 2005-07-07 Marcus Meissner * library.c: Moved one Olympus product id to sierra driver where it belongs. 2005-05-25 Marcus Meissner * library.c: Hub reverted the Kodak LS473 -> 743 change, corrected again. * library.c: Eos Mark II D has root bug too. 2005-05-14 Marcus Meissner * library.c: Added a /special folder for camera specific non ptp filesystem data. (Canon: theme data, Nikon: Whitebalance Curve, etc.) Implemented Canon theme download (but still as a blob file). 2005-05-08 Marcus Meissner * library.c: Get removeobject events for canons on delete. 2005-05-05 Marcus Meissner * library.c: Added PowerShot SD500 aka IXUS 700 2005-04-26 Marcus Meissner * library.c: Added Canon PowerShot A520. 2005-04-11 Marcus Meissner * library.c: Added Nikon D2Hs SLR. 2005-04-10 Marcus Meissner * ptp.[ch]: 9010 and 9011 is Canon Theme Download and Upload. 2005-04-05 Hubert Figuiere * library.c: Added Pentax Optio 43WR (as reported) 2005-03-20 Marcus Meissner * library.c: Merged in most of the code from: ptpcanon 0.0.2 http://jalkapallo.org/superkolik/canon.html Capture 1.0.3 http://sf.net/projects/capture/ into generic PTP property handling. Added camera prepare und unprepare capture handling. Using a gphoto widget based toggle currently. Disabled by using EXPERIMENTAL_CANON_CAPTURE, since it does not save the capture image to the FlashCard yet. 2005-03-17 Marcus Meissner * Added Kodak CX7525 ( as reported). 2005-03-07 Marcus Meissner * Added Nikon D2H SLR (as reported). * Added PowerShot A510 (as reported). 2005-03-02 Marcus Meissner * Added PowerShot S70 (as reported). 2005-02-22 Marcus Meissner * Added Digital IXUS 30 (as reported). 2005-02-09 Hubert Figuiere * library.c: added Sony DSC-W1 and DSC-W12. added Fuji FinePix A330. added Sony DSC-P73. 2005-01-25 Marcus Meissner * ptp.c, ptp.h, library.c: Vegard Engen Clean up of last Nikon PTP patch. 2005-01-24 Marcus Meissner * ptp.c, ptp.h, library.c: Implemented EXIF reading by using GetPartialObject. 2005-01-24 Marcus Meissner * library.c, ptp.c, ptp.h: Merged Nikon property dumping patch from Steve Harris 2005-01-23 Marcus Meissner * ptp.c, ptp.h: Added ptp_event_issupported helper function. * library.c: Canon IXUS 2 (and some other IXUSs) send ObjectRemoved events on deleteobject. We need to read them or we hang the communication. 2005-01-21 Marcus Meissner * library.c: Vegard Engen For Nikon PTP cameras: Added Long Exposure settings. Added Compression mode setting. 2005-01-21 Hubert Figuiere * ptp-bugs.h: Added file. * library.c (camera_init): Lookup for PTP bug (init_ptp_fs): Bug specific workaround (EOS 20D + 300D) Added flags for bugs in camera-list. 2005-01-20 Hubert Figuiere * library.c: Added Sony DSC-P120 2005-01-17 Marcus Meissner From Dean Brettle * library.c: Use capture date if no modify date is there. 2005-01-17 Marcus Meissner From Vegard Engen * library.c, ptp.h: Implemented PTP Property handling for: - generic WhiteBalance - generic ImageSize - Nikon Image Comment 2005-01-17 Marcus Meissner * library.c: Added PowerShot SD200. 2005-01-16 Marcus Meissner * library.c: Pass Camera* to property put and get functions too, so we can make vendor based adjustements. 2005-01-15 Marcus Meissner * library.c: Return the correct path and filename on --capture-image. 2005-01-13 Marcus Meissner * library.c: Added Minolta DIMage Z2 (PictBridge). 2005-01-11 Marcus Meissner * library.c: Added Sony DSC-T3 as reported. 2005-01-08 Marcus Meissner * library.c: Send owner name with \0, or we get it back corrupted. 2005-01-02 Marcus Meissner * library.c: Added Canon FlashMode property. 2004-12-22 Marcus Meissner * library.c: Added Nikon CoolPix 4100 as reported. 2004-12-21 Hubert Figuiere * library.c: Added Kodak DX7590 (bug #1089154) 2004-12-21 Marcus Meissner * library.c: Added Sony DSC-P51 (bug #1088798) 2004-12-20 Hubert Figuiere * library.c: Added Sony DSC-F717. (bug #1087148) 2004-12-16 Marcus Meissner * library.c: Added HP Photosmart R707 and M307. 2004-11-29 Marcus Meissner * library.c: D70 PTP mode has 0x406 id. * library.c: Kodak LS473 should be 743 (typo fixed) the CX4210 should have product id 0x560 instead of 0x565 2004-11-29 Marcus Meissner Edward Kuns * library.c: Added hack to detect / if no object has parentid 0. fixes Canon EOS 20d. 2004-11-15 Marcus Meissner * library.c: Added Panasonic DMC-FZ20. 2004-11-09 Marcus Meissner * library.c: Added IXUS 40. 2004-10-28 Hubert Figuiere * ptp.h: Fix build for gcc 2.95 (bug #1055868) 2004-10-20 Hubert Figuiere * library.c: Added Konica-Minolta DiMAGE Z3 2004-10-17 Marcus Meissner * library.c: Added Canon PowerShot G6. 2004-09-28 Marcus Meissner * library.c: Added Canon PowerShot A400. 2004-09-21 Marcus Meissner * library.c: Added Canon EOS 20D. 2004-09-11 Marcus Meissner * library.c: Use widget name to mark up config entries. Added more config cases from Canon in capture mode. - zoom (working) - auto focus assist light - beep mode - exposure compensation (not fully done) 2004-09-05 Marcus Meissner * ptp-pack.c: Pack integer arrays. * library.c: Enabled setting of configuration. - Made work and tested: * Canon Camera Owner. * Canon Time on camera. * ptp.[ch]: Make ptp_free_propertyvalue nonstatic. 2004-09-04 Hubert Figuiere * library.c: Added Nikon Coolpix 2200 2004-08-25 Marcus Meissner * ptp-pack.c, ptp.c, ptp.h: - Added length parameters to the read functionality to avoid buffer overflows. - Added PTPPropertyValues as generic property values. - Rewrote all property handling functions. - Added property array support. - Move property names from ptpcam to libptp. * library.c: - Print all available property values with names in --summary - Started generic configuration handling. 2004-08-15 Marcus Meissner * library.c: Added Canon PowerShot A85. * library.c: Added Kodak LS753 DX7630 CX7300 CX7220 CX7330 CX7530 DX7440 CX6445 as reported on SourceForge http://sourceforge.net/tracker/index.php?func=detail&aid=982934&group_id=8874&atid=358874 * library.c: Added Nikon Coolpix 4200 (thanks Lars!) 2004-08-15 Hubert Figuiere * library.c: Added EOS 1D Mark II 2004-08-12 Hubert Figuiere * library.c: Added Canon Powershot S60 as it works. 2004-08-04 Marcus Meissner * Added Canon PowerShot A310 ids as reported. * Added Ricoh Caplio GX ids as reported. * Added Nikon D70 ids as reported. * Added Sony MVC-CD500. 2004-07-16 Mariusz Woloszyn * ptp.h: Added NIKON extension code by Corey Manders 2004-06-23 Hubert Figuiere * library.c: Added Kodak LS-473 Close RFE #977619 2004-06-13 Marcus Meissner * library.c: Added Canon PowerShot S1 IS. 2004-05-29 Mariusz Woloszyn * library.c: Fixed a small problem that caused objects of undefined type not beeing downloadable. Now they are downloadable if the Thumb type is known. 2004-05-24 Marcus Meissner * library.c: Added Canon PowerShot SD110. 2004-05-17 Hubert Figuiere * library.c: Added Canon A75 (PTP mode) 2004-05-12 Hubert Figuiere * library.c: Added Fuji FinePix S7000 (PictBridge mode) 2004-05-11 Hubert Figuiere * library.c: Added Kodak CX4310 2004-04-26 Marcus Meissner * library.c: Added Canon Digital IXUS 430 / PowerShot S410 as reported. 2004-04-18 Marcus Meissner * library.c: Nikon Coolpix 3200 as reported. 2004-04-13 Hubert Figuiere * library.c: Added Kodak CX7430. Close patch #934142. 2004-04-07 Hubert Figuiere * library.c: Added HP PhotoSmart 945 (T. Jelbert) Close bug #930400 2004-04-02 Hubert Figuiere * library.c: Added PowerShot S500 (Digital IXUS 500 alias) 2004-04-01 Hubert Figuiere * library.c: Added HP PhotoSmart 635 2004-03-28 Marcus Meissner * library.c: Added Canon Elura 50 as reported. 2004-03-20 Hubert Figuiere * library.c: Added Digital IXUS 500 2004-03-19 Mariusz Woloszyn * library.c: added Konica-Minolta DiMAGE A2 2004-03-01 Mariusz Woloszyn * library.c: better capture code 2004-02-13 Mariusz Woloszyn * TODO: updated TODO 2004-02-06 Mariusz Woloszyn * library.c: added more descriptive error message 2004-02-01 Marcus Meissner * Sony P-10 as reported by Fred Point. 2004-01-20 Mariusz Woloszyn * library.c: added more descriptive error message to capture code 2004-01-20 Marcus Meissner * ptp.c: As reported by Eric Valette added Canon PowerShot S50. * ptp.c: New sony name, one generic Sony PTP name. 2004-01-18 Marcus Meissner * ptp.c: As reported by Thorsten Ehlers - t_ehlers@users.sf.net, added Nikon Coolpix 3700. 2004-01-10 Marcus Meissner * ptp.c: As reported by VICTOR , added Olympus cameras: C-350Z, D-560Z, and X-250 (all the same id). 2004-01-05 Mariusz Woloszyn * ptp.c: sync with libptp2 code. 2004-01-04 Marcus Meissner * ptp.c: Added Canon Digital IXUS i as reported. 2004-01-02 Marcus Meissner (merged from libptp2) * ptp.c, ptp-h.c, ptp-pack.c: added Canon specific PTP extension code written by Nikolai Kopanygin. 2003-12-27 Hubert Figuiere * library.c: Added Sony DSC-U20 2003-11-26 Mariusz Woloszyn * library.c: make the capture code less sensibe for protocol incompatibility. 2003-10-20 Hubert Figuiere * library.c: Added Sony DSC-P52, DSC-P72, DSC-P92 2003-10-14 Marcus Meissner * library.c: Fixed progress max value to be 100, or we get Inf/Nan or division by 0... 2003-10-10 Olivier Crete * library.c: Add Canon A80 2003-10-01 Mariusz Woloszyn * library.c: removed Canon Digital Rebel, as the report was with the wrong Product ID 2003-09-30 Marcus Meissner * library.c: Added Canon Digital Rebel as reported by Yves Boisjoly * library.c: Check if we support DeleteObject before calling it. Some cameras do not have it. 2003-09-24 Marcus Meissner * library.c: Use strtoul instead of strtol, or we cant handle stores with id 0x80000001. Replaced one check for GetStorageIds by GetStorageInfo. 2003-09-20 Hans Ulrich Niedermann * library.c: Added support for EOS 300D/Digital Rebel/KISS Digital, thanks to Johan Herland and T.V. 2003-09-20 Marcus Meissner * library.c: Fixed compile. (defined names with - are invalid). 2003-09-19 Mariusz Woloszyn * library.c: fixed capture imout and increased to 20 seconds; fixed internal structures update when uploding files and creating folders; * TODO: updated 2003-09-17 Marcus Meissner * library.c: Increase timeout for capture. A G5 needs longer than 8 seconds... 2003-09-12 Mariusz Woloszyn * library.c: fixed a minor bug that caused error while deleting folders not in storage subfolder (removed trailing '/' in folder names); fixed making folders on devices not supporting kodak PTP extension; some debug improvement; 2003-09-12 Mariusz Woloszyn * library.c, ptp-pack.c, ptp.c ptp.h: be proper as hell, changed all '//' comments to '/* blah */' ;) 2003-09-12 Mariusz Woloszyn * ptp.h: added some defines (sync with libptpt2-1.0pre6) * library.c: use kodak extension operation ONLY VendorExtensionID field indicates that the device uses kodak PTP extension * ptpcam.c: removed; download libptp2 sources if you need it * Makefile.am: ptpcam.c removed * README: updated for ptpcam.c removal 2003-09-11 Marcus Meissner * library.c: Note down filename in info struct. Update battery level status display (not quite finished). Add Canon Digital IXUS 2. 2003-09-11 Hubert Figuiere * library.c: Added, Sony DSC-V1 2003-09-10 Hubert Figuiere * library.c: Added Sony DSC-P31 2003-08-05 Mariusz Woloszyn * library.c: ups... PTP_OFC_EXIF_JPEG thumbnails may not contain EXIF information... revertig to previous behavior :( 2003-08-05 Mariusz Woloszyn * library.c: return thumbnauil when asked for GP_FILE_TYPE_EXIF if object is PTP_OFC_EXIF_JPEG, otherwise return GP_ERROR_NOT_SUPPORTED 2003-08-03 Mariusz Woloszyn * library.c: PTP do not offer plain EXIF data; return GP_ERROR_NOT_SUPPORTED while downloading GP_FILE_TYPE_EXIF. 2003-08-29 Mariusz Woloszyn * library.c: allow downloading thumbnail of nonimage objects, however only in case that the ThumbCompressedSize is greater than 0 2003-08-28 Mariusz Woloszyn * library.c: added Canon IXUS 400, thanks to Till Kamppeter 2003-08-28 Mariusz Woloszyn * library.c: added Nikon Coolpix 3500, 5000, 3100 & 2100, thanks to Antti Tuominen 2003-08-22 Mariusz Woloszyn * library.c: added Nikon CoolPix 4500 and HP PhotoSmart 935, thanks to T. Kaproncai 2003-07-28 Mariusz Woloszyn * library.c: removed Kodak DC290, DX4230, DX4300, changed productID of Kodak CX4210 and added Nikon Coolpix 5400. Thanks to T. Kaproncai 2003-07-17 Mariusz Woloszyn * library.c: added following cameras: Kodak DC290, Kodak DX4530, Kodak DX6440, Kodak DX6490, Kodak LS663, Kodak CX4230, Kodak CX6200, Kodak CX6230, Kodak CX6330, HP PhotoSmart 120, HP PhotoSmart 620, HP PhotoSmart 735, HP PhotoSmart 812 2003-07-09 Mariusz Woloszyn * library.c: added Nikon Coolpix SQ: M. Holzbauer 2003-06-12 Mariusz Woloszyn * library.c: added DX6340 explicite support 2003-05-14 Mariusz Woloszyn * ptpcam.c: changed test_ptp.c to ptpcam.c; * Makefile.am: changed test_ptp.c to ptpcam.c; * TODO: added the idea of error reporting improvement * README: reorganized a bit 2003-05-13 Mariusz Woloszyn * ptp-pack.c: ptp_pack_DPV() fixup; * ptp.c: reorganized reporting errors, added ptp_perror(); * ptp.h: added ptp_perror() prototype; * test_ptp.c: reorganized reporting errors; added property setting support! 2003-05-12 Mariusz Woloszyn * ptp.c: fflush(stderr) on error and debug; added datatype argument for ptp_getdevicepropvalue(); added ptp_setdevicepropvalue();A * ptp-pack.c: added ptp_unpack_DPV() and ptp_pack_DPV(); fixed missing strings while unpacking enumerated DPD; * ptp.h: fixed ptp_getdevicepropvalue() prototype and added ptp_setdevicepropvalue() prototype; * .cvsignore: changed ptp_test to ptpcam * Makefile.am: changed ptp_test to ptpcam * test_ptp.c: reorganized debug/error output, added more verbose levels; fixed extension properties debug (only EK supported as for now); added property supported values output; 2003-05-09 Mariusz Woloszyn * test_ptp.c: added the device reset option (uses class specific reset) 2003-05-09 Mariusz Woloszyn * ptp.h: added some Kodak extension device property codes definitions * test_ptp.c: added properties listing support and --force option 2003-05-01 Hubert Figuiere * library.c: add explicitly DSC-P32 (was autodetected) add Coolpix 2000 2003-04-25 Mariusz Woloszyn * Makefile.am: added ptp_test as noinst_PROGRAMS * README: changed references to test_ptp to ptp_test * test_ptp.c: added some functions prototypes (to avoid warnings), reconstructed usage() plus some cosmetic changes 2003-04-25 Mariusz Woloszyn * library.c: romved dups in cameras declaration, cosmetic --about changes 2003-04-25 Mariusz Woloszyn * README: added to ptp2 * test_ptp.c: added to ptp2 * TODO: added to ptp2 2003-04-25 Mariusz Woloszyn * library.c: added perror on gp_port_read() and write error; it won't hurt * ptp.c: NULL does not have to be 0 bug fixed; cosmetics error output tuning; unpack structures only if transaction succeeded * ChangeLog: reformated this file ;) 2003-04-12 Marcus Meissner * ptp.c, library.c: Check return codes for property get during --config. 2003-04-10 Mariusz Woloszyn * library.c: added Canon A70 2003-04-03 Mariusz Woloszyn * ptp.c: added ptp_free_devicepropdesc() * ptp.h: added ptp_free_devicepropdesc() * library.c: ptp_free_devicepropdesc() used to free allocated structures 2003-04-03 Mariusz Woloszyn * library.c: enabled getting config support; curently only getting batery level is supported; * ptp-pack.c: "finished" Device Property Describing Dataset unpacking function ptp_unpack_DPD(); * ptp.h: changed PTP_DC_* to PTP_DTC_* (DTC stands for DataType Code); changed PTPDevicePropDesc fields name; * ptp.c: added ptp_getdevicepropvalue() (not working properly yet); 2003-04-01 Mariusz Woloszyn * library.c: added Kodak CX4200 explicite support; added some get config code (it's not enabled, nor finished yet); added some extra debug info about events and properties supported * ptp-pack.c: intoduced ptp_unpack_DPD (not finished yet) * ptp.c: added ptp_getdevicepropdesc() * ptp.h: introduced some device property describing structures and constants 2003-03-29 Mariusz Woloszyn * library.c: enabled downloading of nonimage files * ptp.c: fixed a bug in capture code 2003-03-29 Mariusz Woloszyn * library.c: enabled back capture image support 2003-03-29 Mariusz Woloszyn * ptp.h: added Nparam field to PTPContainer * ptp.c: using Nparam field we send requests with only used params to the camera (although specs says it's legal, some cameras do not like it) 2003-03-29 Mariusz Woloszyn * ptp.c: fixed a memcopy size bug 2003-03-27 Mariusz Woloszyn * library.c: added HP PhotoSmart 320 2003-01-08 Mariusz Woloszyn * ptp.c: cosmetic * ptp-pack.c: fixed a bug in ptp_unpack_DI(), totallen could be bigger than uint8_t * library.c: added camera summary 2003-01-08 Mariusz Woloszyn * ptp-pack.c: * ptp.c: fixed buggy ptp_usb_senddata() 2003-01-06 Mariusz Woloszyn * updated some comments, added some extra debug and introduced support for senobjectinfo and sendobject. * Makefile.am: changed driver name to ptp2 2003-01-03 Mariusz Woloszyn * Commited version 2 of libptp2 and ptp driver. This code is unfinished yet, but it's meant to be transport layer independent. It fixes a lot of other bugs also. 2002-10-16 Stephen H. Westin * library.c: Nikon D100 has a PTP mode 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 2002-08-20 Mariusz Woloszyn * README: added some descriptions and hints for users 2002-08-02 Mariusz Woloszyn * ptp-pack.c: Fixed an awfull bug (one byte overflow). Thanks to go to Hubert Figuiere for pointing me at Valgrind, the tool that helped me to find this bug. * ptp-pack.c: initialized uninitialized timezone structure 2002-06-10 Mariusz Woloszyn * added basic capture functionality with events support 2002-03-18 Mariusz Woloszyn * library.c: added multiple storage support * ptp.c: fixed missed parameter for getstorageinfo 2002-03-14 Mariusz Woloszyn * library.c: undefined file is a file 2002-03-06 Marcus Meissner * library.c: translate the error messages 2002-03-05 Mariusz Woloszyn * ptp.c: updated ptp_getobjecthandles() to be protocol compliant * ptp.c: rewrited ptp_transaction and ptp_sendreq code to send no more bytes than expected by device (fix for HP cameras) 2002-03-04 Mariusz Woloszyn * library.c: some vendor/product IDs added * library.c: changed initial transaction_id * ptp.c: added ptp_getstorageids, fixed ptp_getobjecthandles * ptp-pack.c: added ptp_unpack_OH, ptp_unpack_SIDs, ptp_unpack_uint32_t_array * ptp.h: added typedef of PTPStorageIDs, ptp_getstorageids function prototype (all changes according to TODO, multi storage support) 2002-01-16 Lutz Müller * library.c: No time for previews... 2002-01-16 Mariusz Woloszyn * ptp-pack.c: added fake date packing * ptp.c: Fixed ptp_ek_sendfileobjectinfo to use packed structures * library.: started implementation of upload file (for Kodak only!) 2002-01-13 Lutz Müller * library.c: Remove references to gp_camera_set_error. 2002-01-11 Marcus Meissner * Makefile.am: Moved ptp-pack.c from SOURCES to EXTRA_DIST, since it cannot be compiled stand alone. 2002-01-10 Dan Fandrich * Makefile.am: Added ptp-pack.c 2002-01-09 Dan Fandrich * library.c: * ptp.c: * ptp.h: Moved include of time.h to ptp.h to get time_t definition Moved typedef lines after their dependent definitions. Fixed spelling of PTPDeviceInfo. 2002-01-09 Mariusz Woloszyn * Started ptp fs implementation 2002-01-08 Mariusz Woloszyn * Added pack / unpack C structures to ptpdatasets code * fixed host byteorder / data layer byteorder problem 2002-01-04 Mariusz Woloszyn * Added workaround for ioctl return 0 problem (this does not hurt) * Added DX-3215 support * removed hto*le() stuff * updated TODO (describes how to solve byteorder problem) 2001-12-14 Mariusz Woloszyn * huge parts of code rewriten, added SENDDATA transaction feature, added make directory ability (curently BROKEN!!!) 2001-12-14 Mariusz Woloszyn * file deleting implemented 2001-12-13 Mariusz Woloszyn * whole parts of code has been rewriten 2001-12-13 Mariusz Woloszyn * added implementation of Object Format, fixing get_info_func 2001-12-11 Lutz Müller * library.c: Add some debugging stuff. 2001-12-02 Mariusz Woloszyn * library.c: Updatet vendor & product numbers for Kodak DX-3900. 2001-12-02 Lutz Müller * library.c: Fix warning 2001-12-02 Lutz Müller * library.c: Fixed vendor/product if of HP PhotoSmart 318. libgphoto2-2.5.9/camlibs/ptp2/usb.c0000644000175000001440000004757212610415617013773 00000000000000/* usb.c * * Copyright (C) 2001-2004 Mariusz Woloszyn * Copyright (C) 2003-2014 Marcus Meissner * Copyright (C) 2006-2007 Linus Walleij * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include #include "ptp.h" #include "ptp-private.h" #include "ptp-bugs.h" #include #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define CONTEXT_BLOCK_SIZE 200000 #define PTP_CNT_INIT(cnt) {memset(&cnt,0,sizeof(cnt));} /* PTP2_FAST_TIMEOUT: how long (in milliseconds) we should wait for * an URB to come back on an interrupt endpoint */ /* 100 is not enough for various cameras types. 150 seems to work better */ #define PTP2_FAST_TIMEOUT 150 /* Pack / unpack functions */ #include "ptp-pack.c" /* send / receive functions */ uint16_t ptp_usb_sendreq (PTPParams* params, PTPContainer* req, int dataphase) { int res, towrite, do_retry = TRUE; PTPUSBBulkContainer usbreq; Camera *camera = ((PTPData *)params->data)->camera; GP_LOG_D ("Sending PTP_OC 0x%0x (%s) request...", req->Code, ptp_get_opcode_name(params, req->Code)); /* build appropriate USB container */ usbreq.length=htod32(PTP_USB_BULK_REQ_LEN- (sizeof(uint32_t)*(5-req->Nparam))); usbreq.type=htod16(PTP_USB_CONTAINER_COMMAND); usbreq.code=htod16(req->Code); usbreq.trans_id=htod32(req->Transaction_ID); usbreq.payload.params.param1=htod32(req->Param1); usbreq.payload.params.param2=htod32(req->Param2); usbreq.payload.params.param3=htod32(req->Param3); usbreq.payload.params.param4=htod32(req->Param4); usbreq.payload.params.param5=htod32(req->Param5); /* send it to responder */ towrite = PTP_USB_BULK_REQ_LEN-(sizeof(uint32_t)*(5-req->Nparam)); retry: res = gp_port_write (camera->port, (char*)&usbreq, towrite); if (res != towrite) { if (res < 0) { GP_LOG_E ("PTP_OC 0x%04x sending req failed: %s (%d)", req->Code, gp_port_result_as_string(res), res); if (res == GP_ERROR_IO_WRITE && do_retry) { GP_LOG_D ("Clearing halt on OUT EP and retrying once."); gp_port_usb_clear_halt (camera->port, GP_PORT_USB_ENDPOINT_OUT); do_retry = FALSE; goto retry; } } else GP_LOG_E ("PTP_OC 0x%04x sending req failed: wrote only %d of %d bytes", req->Code, res, towrite); return PTP_ERROR_IO; } return PTP_RC_OK; } uint16_t ptp_usb_senddata (PTPParams* params, PTPContainer* ptp, uint64_t size, PTPDataHandler *handler ) { uint16_t ret = PTP_RC_OK; int res, wlen, datawlen; PTPUSBBulkContainer usbdata; unsigned long bytes_left_to_transfer, written; Camera *camera = ((PTPData *)params->data)->camera; unsigned char *bytes; int progressid = 0; int usecontext = (size > CONTEXT_BLOCK_SIZE); GPContext *context = ((PTPData *)params->data)->context; GP_LOG_D ("Sending PTP_OC 0x%0x (%s) data...", ptp->Code, ptp_get_opcode_name(params, ptp->Code)); /* build appropriate USB container */ usbdata.length = htod32(PTP_USB_BULK_HDR_LEN+size); usbdata.type = htod16(PTP_USB_CONTAINER_DATA); usbdata.code = htod16(ptp->Code); usbdata.trans_id= htod32(ptp->Transaction_ID); if (params->split_header_data) { datawlen = 0; wlen = PTP_USB_BULK_HDR_LEN; } else { unsigned long gotlen; /* For all camera devices. */ datawlen = (sizegetfunc(params, handler->priv, datawlen, usbdata.payload.data, &gotlen); if (ret != PTP_RC_OK) return ret; if (gotlen != datawlen) return PTP_RC_GeneralError; } res = gp_port_write (camera->port, (char*)&usbdata, wlen); if (res != wlen) { if (res < 0) GP_LOG_E ("PTP_OC 0x%04x sending data failed: %s (%d)", ptp->Code, gp_port_result_as_string(res), res); else GP_LOG_E ("PTP_OC 0x%04x sending data failed: wrote only %d of %d bytes", ptp->Code, res, wlen); return PTP_ERROR_IO; } if (size <= datawlen) { /* nothing more to do */ written = wlen; goto finalize; } if (usecontext) progressid = gp_context_progress_start (context, (size/CONTEXT_BLOCK_SIZE), _("Uploading...")); bytes = malloc (4096); if (!bytes) return PTP_RC_GeneralError; /* if everything OK send the rest */ bytes_left_to_transfer = size-datawlen; ret = PTP_RC_OK; written = 0; while(bytes_left_to_transfer > 0) { unsigned long readlen, toread, oldwritten = written; toread = 4096; if (toread > bytes_left_to_transfer) toread = bytes_left_to_transfer; ret = handler->getfunc (params, handler->priv, toread, bytes, &readlen); if (ret != PTP_RC_OK) break; res = gp_port_write (camera->port, (char*)bytes, readlen); if (res < 0) { ret = PTP_ERROR_IO; break; } bytes_left_to_transfer -= res; written += res; if (usecontext && (oldwritten/CONTEXT_BLOCK_SIZE < written/CONTEXT_BLOCK_SIZE)) gp_context_progress_update (context, progressid, written/CONTEXT_BLOCK_SIZE); #if 0 /* Does not work this way... Hmm. */ if (gp_context_cancel(context) == GP_CONTEXT_FEEDBACK_CANCEL) { ret = ptp_usb_control_cancel_request (params,ptp->Transaction_ID); if (ret == PTP_RC_OK) ret = PTP_ERROR_CANCEL; break; } #endif } if (usecontext) gp_context_progress_stop (context, progressid); free (bytes); finalize: if ((ret == PTP_RC_OK) && ((written % params->maxpacketsize) == 0)) gp_port_write (camera->port, "x", 0); if ((ret!=PTP_RC_OK) && (ret!=PTP_ERROR_CANCEL)) ret = PTP_ERROR_IO; return ret; } static uint16_t ptp_usb_getpacket(PTPParams *params, PTPUSBBulkContainer *packet, uint32_t *rlen) { int tries = 0, result; Camera *camera = ((PTPData *)params->data)->camera; /* read the header and potentially the first data */ if (params->response_packet_size > 0) { GP_LOG_D ("Returning previously buffered response packet."); /* If there is a buffered packet, just use it. */ memcpy(packet, params->response_packet, params->response_packet_size); *rlen = params->response_packet_size; free(params->response_packet); params->response_packet = NULL; params->response_packet_size = 0; /* Here this signifies a "virtual read" */ return PTP_RC_OK; } retry: /* A packet should come in a single read always. */ result = gp_port_read (camera->port, (char*)packet, sizeof(*packet)); /* This might be a left over zero-write of the device at the end of the previous transmission */ if (result == 0) result = gp_port_read (camera->port, (char*)packet, sizeof(*packet)); if (result > 0) { *rlen = result; return PTP_RC_OK; } if (result == GP_ERROR_IO_READ) { GP_LOG_D ("Clearing halt on IN EP and retrying once."); gp_port_usb_clear_halt (camera->port, GP_PORT_USB_ENDPOINT_IN); /* retrying only makes sense if we did not read anything yet */ if (tries++ < 1) goto retry; } return PTP_ERROR_IO; } #define READLEN 64*1024 /* read blob size */ uint16_t ptp_usb_getdata (PTPParams* params, PTPContainer* ptp, PTPDataHandler *handler) { uint16_t ret; PTPUSBBulkContainer usbdata; unsigned char *data = NULL; uint32_t bytes_to_read, bytes_read; Camera *camera = ((PTPData *)params->data)->camera; int report_progress, progress_id = 0, do_retry = TRUE, res = GP_OK; GPContext *context = ((PTPData *)params->data)->context; GP_LOG_D ("Reading PTP_OC 0x%0x (%s) data...", ptp->Code, ptp_get_opcode_name(params, ptp->Code)); PTP_CNT_INIT(usbdata); ret = ptp_usb_getpacket (params, &usbdata, &bytes_read); if (ret != PTP_RC_OK) goto exit; if (dtoh16(usbdata.type) != PTP_USB_CONTAINER_DATA) { /* We might have got a response instead. On error for instance. */ /* TODO: check if bytes_read == usbdata.length */ if (dtoh16(usbdata.type) == PTP_USB_CONTAINER_RESPONSE) { params->response_packet = malloc(dtoh32(usbdata.length)); if (!params->response_packet) return PTP_RC_GeneralError; memcpy(params->response_packet, (uint8_t *) &usbdata, dtoh32(usbdata.length)); params->response_packet_size = dtoh32(usbdata.length); ret = PTP_RC_OK; } else { ret = PTP_ERROR_DATA_EXPECTED; } goto exit; } if (dtoh16(usbdata.code)!=ptp->Code) { /* A creative Zen device breaks down here, by leaving out * Code and Transaction ID */ if (MTP_ZEN_BROKEN_HEADER(params)) { GP_LOG_D ("Read broken PTP header (Code is %04x vs %04x), compensating.", dtoh16(usbdata.code), ptp->Code); usbdata.code = dtoh16(ptp->Code); usbdata.trans_id = htod32(ptp->Transaction_ID); } else { GP_LOG_E ("Read broken PTP header (Code is %04x vs %04x).", dtoh16(usbdata.code), ptp->Code ); ret = PTP_ERROR_IO; goto exit; } } if (bytes_read > dtoh32(usbdata.length)) { /* * Buffer the surplus response packet if it is >= * PTP_USB_BULK_HDR_LEN * (i.e. it is probably an entire package) * else discard it as erroneous surplus data. * This will even work if more than 2 packets appear * in the same transaction, they will just be handled * iteratively. * * Marcus observed stray bytes on iRiver devices; * these are still discarded. */ uint32_t surplen = bytes_read - dtoh32(usbdata.length); if (surplen >= PTP_USB_BULK_HDR_LEN) { params->response_packet = malloc(surplen); if (!params->response_packet) return PTP_RC_GeneralError; memcpy(params->response_packet, (uint8_t *) &usbdata + dtoh32(usbdata.length), surplen); params->response_packet_size = surplen; } else { GP_LOG_D ("Read %ld bytes too much, expect problems!", (long)(bytes_read - dtoh32(usbdata.length))); } bytes_read = dtoh32(usbdata.length); } /* For most PTP devices rlen is 512 == sizeof(usbdata) * here. For MTP devices splitting header and data it might * be PTP_USB_BULK_HDR_LEN (12). */ /* autodetect split header/data MTP devices */ if (dtoh32(usbdata.length) > PTP_USB_BULK_HDR_LEN && (bytes_read==PTP_USB_BULK_HDR_LEN)) params->split_header_data = 1; /* Copy the payload bytes we already read (with the first usb packet) */ ret = handler->putfunc (params, handler->priv, bytes_read - PTP_USB_BULK_HDR_LEN, usbdata.payload.data); if (ret != PTP_RC_OK) goto exit; /* Check if we are done already... */ if (bytes_read >= dtoh32(usbdata.length)) goto exit; /* If not read the rest of it. */ /* Make bytes_to_read contain the number of remaining payload-bytes to read. */ bytes_to_read = dtoh32(usbdata.length) - bytes_read; /* Make bytes_read contain the number of payload-bytes already read. */ bytes_read -= PTP_USB_BULK_HDR_LEN; data = malloc(READLEN); if (!data) return PTP_RC_GeneralError; report_progress = (bytes_to_read > 2*CONTEXT_BLOCK_SIZE) && (dtoh32(usbdata.length) != 0xffffffffU); if (report_progress) progress_id = gp_context_progress_start (context, (bytes_to_read/CONTEXT_BLOCK_SIZE), _("Downloading...")); while (bytes_to_read > 0) { unsigned long chunk_to_read = bytes_to_read; /* if in read-until-short-packet mode, read one packet at a time */ /* else read in large blobs */ /* else read all but the last short packet depending on EP packetsize. */ if (dtoh32(usbdata.length) == 0xffffffffU) chunk_to_read = PTP_USB_BULK_HS_MAX_PACKET_LEN_READ; else if (chunk_to_read > READLEN) chunk_to_read = READLEN; else if (chunk_to_read > params->maxpacketsize) chunk_to_read = chunk_to_read - (chunk_to_read % params->maxpacketsize); res = gp_port_read (camera->port, (char*)data, chunk_to_read); if (res == GP_ERROR_IO_READ && do_retry) { GP_LOG_D ("Clearing halt on IN EP and retrying once."); gp_port_usb_clear_halt (camera->port, GP_PORT_USB_ENDPOINT_IN); /* retrying only once and only if we did not read anything yet */ do_retry = FALSE; continue; } else if (res <= 0) { ret = PTP_ERROR_IO; break; } else do_retry = FALSE; /* once we have succesfully read any data, don't try again */ ret = handler->putfunc (params, handler->priv, res, data); if (ret != PTP_RC_OK) break; if (dtoh32(usbdata.length) == 0xffffffffU) { /* once we have read a short packet, we are done. */ if (res < PTP_USB_BULK_HS_MAX_PACKET_LEN_READ) bytes_to_read = 0; } else bytes_to_read -= res; bytes_read += res; if (report_progress && ((bytes_read-res)/CONTEXT_BLOCK_SIZE < bytes_read/CONTEXT_BLOCK_SIZE)) gp_context_progress_update (context, progress_id, bytes_read/CONTEXT_BLOCK_SIZE); /* Only cancel transfers larger than 1MB. as * canceling did not work on eos_get_viewfinder of 200kb */ if ((bytes_read > 1024*1024) && gp_context_cancel(context) == GP_CONTEXT_FEEDBACK_CANCEL) { ret = PTP_ERROR_CANCEL; break; } } if (report_progress) gp_context_progress_stop (context, progress_id); exit: free (data); if ((ret!=PTP_RC_OK) && (ret!=PTP_ERROR_CANCEL)) { GP_LOG_E ("PTP_OC 0x%04x receiving data failed: %s (0x%04x)", ptp->Code, ptp_strerror(ret, params->deviceinfo.VendorExtensionID), ret); return PTP_ERROR_IO; } return ret; } uint16_t ptp_usb_getresp (PTPParams* params, PTPContainer* resp) { uint16_t ret; uint32_t rlen; PTPUSBBulkContainer usbresp; /*GPContext *context = ((PTPData *)params->data)->context;*/ GP_LOG_D ("Reading PTP_OC 0x%0x (%s) response...", resp->Code, ptp_get_opcode_name(params, resp->Code)); PTP_CNT_INIT(usbresp); /* read response, it should never be longer than sizeof(usbresp) */ ret = ptp_usb_getpacket(params, &usbresp, &rlen); if (ret!=PTP_RC_OK) { ret = PTP_ERROR_IO; } else if (dtoh16(usbresp.type)!=PTP_USB_CONTAINER_RESPONSE) { ret = PTP_ERROR_RESP_EXPECTED; } else if (dtoh16(usbresp.code)!=resp->Code) { ret = dtoh16(usbresp.code); } if (ret!=PTP_RC_OK) { GP_LOG_E ("PTP_OC 0x%04x receiving resp failed: %s (0x%04x)", resp->Code, ptp_strerror(ret, params->deviceinfo.VendorExtensionID), ret); return ret; } /* build an appropriate PTPContainer */ resp->Code=dtoh16(usbresp.code); resp->SessionID=params->session_id; resp->Transaction_ID=dtoh32(usbresp.trans_id); if (resp->Transaction_ID != params->transaction_id - 1) { if (MTP_ZEN_BROKEN_HEADER(params)) { GP_LOG_D ("Read broken PTP header (transid is %08x vs %08x), compensating.", resp->Transaction_ID, params->transaction_id - 1 ); resp->Transaction_ID=params->transaction_id-1; } /* else will be handled by ptp.c as error. */ } resp->Nparam=(rlen-12)/4; resp->Param1=dtoh32(usbresp.payload.params.param1); resp->Param2=dtoh32(usbresp.payload.params.param2); resp->Param3=dtoh32(usbresp.payload.params.param3); resp->Param4=dtoh32(usbresp.payload.params.param4); resp->Param5=dtoh32(usbresp.payload.params.param5); return ret; } /* Event handling functions */ /* PTP Events wait for or check mode */ #define PTP_EVENT_CHECK 0x0000 /* waits for */ #define PTP_EVENT_CHECK_FAST 0x0001 /* checks */ static inline uint16_t ptp_usb_event (PTPParams* params, PTPContainer* event, int wait) { int result, timeout, fasttimeout; unsigned long rlen; PTPUSBEventContainer usbevent; Camera *camera = ((PTPData *)params->data)->camera; if (params->deviceinfo.VendorExtensionID == PTP_VENDOR_CANON) fasttimeout = PTP2_FAST_TIMEOUT*2; else fasttimeout = PTP2_FAST_TIMEOUT; PTP_CNT_INIT(usbevent); if (event==NULL) return PTP_ERROR_BADPARAM; switch(wait) { case PTP_EVENT_CHECK: result = gp_port_check_int (camera->port, (char*)&usbevent, sizeof(usbevent)); if (result <= 0) result = gp_port_check_int (camera->port, (char*)&usbevent, sizeof(usbevent)); break; case PTP_EVENT_CHECK_FAST: gp_port_get_timeout (camera->port, &timeout); gp_port_set_timeout (camera->port, fasttimeout); result = gp_port_check_int (camera->port, (char*)&usbevent, sizeof(usbevent)); if (result <= 0) result = gp_port_check_int (camera->port, (char*)&usbevent, sizeof(usbevent)); gp_port_set_timeout (camera->port, timeout); break; default: return PTP_ERROR_BADPARAM; } if (result < 0) { GP_LOG_E ("Reading PTP event failed: %s (%d)", gp_port_result_as_string(result), result); if (result == GP_ERROR_TIMEOUT) return PTP_ERROR_TIMEOUT; return PTP_ERROR_IO; } if (result == 0) { GP_LOG_E ("Reading PTP event failed: a 0 read occurred, assuming timeout."); return PTP_ERROR_TIMEOUT; } rlen = result; if (rlen < 8) { GP_LOG_E ("Reading PTP event failed: only %ld bytes read", rlen); return PTP_ERROR_IO; } /* Only do the additional reads for "events". Canon IXUS 2 likes to * send unrelated data. */ if ( (dtoh16(usbevent.type) == PTP_USB_CONTAINER_EVENT) && (dtoh32(usbevent.length) > rlen) ) { GP_LOG_D ("Canon incremental read (done: %ld, todo: %d)", rlen, dtoh32(usbevent.length)); gp_port_get_timeout (camera->port, &timeout); gp_port_set_timeout (camera->port, PTP2_FAST_TIMEOUT); while (dtoh32(usbevent.length) > rlen) { result = gp_port_check_int (camera->port, ((char*)&usbevent)+rlen, sizeof(usbevent)-rlen); if (result <= 0) break; rlen += result; } gp_port_set_timeout (camera->port, timeout); } /* if we read anything over interrupt endpoint it must be an event */ /* build an appropriate PTPContainer */ event->Nparam = (rlen-12)/4; event->Code = dtoh16(usbevent.code); event->SessionID=params->session_id; event->Transaction_ID=dtoh32(usbevent.trans_id); event->Param1 = dtoh32(usbevent.param1); event->Param2 = dtoh32(usbevent.param2); event->Param3 = dtoh32(usbevent.param3); return PTP_RC_OK; } uint16_t ptp_usb_event_check (PTPParams* params, PTPContainer* event) { return ptp_usb_event (params, event, PTP_EVENT_CHECK_FAST); } uint16_t ptp_usb_event_wait (PTPParams* params, PTPContainer* event) { return ptp_usb_event (params, event, PTP_EVENT_CHECK); } uint16_t ptp_usb_control_get_extended_event_data (PTPParams *params, char *buffer, int *size) { Camera *camera = ((PTPData *)params->data)->camera; int ret; GP_LOG_D ("Getting extended event data."); ret = gp_port_usb_msg_class_read (camera->port, 0x65, 0x0000, 0x0000, buffer, *size); if (ret < GP_OK) return PTP_ERROR_IO; *size = ret; return PTP_RC_OK; } uint16_t ptp_usb_control_device_reset_request (PTPParams *params) { Camera *camera = ((PTPData *)params->data)->camera; int ret; GP_LOG_D ("Sending usb device reset request."); ret = gp_port_usb_msg_class_write (camera->port, 0x66, 0x0000, 0x0000, NULL, 0); if (ret < GP_OK) return PTP_ERROR_IO; return PTP_RC_OK; } uint16_t ptp_usb_control_get_device_status (PTPParams *params, char *buffer, int *size) { Camera *camera = ((PTPData *)params->data)->camera; int ret; ret = gp_port_usb_msg_class_read (camera->port, 0x67, 0x0000, 0x0000, buffer, *size); if (ret < GP_OK) return PTP_ERROR_IO; *size = ret; return PTP_RC_OK; } uint16_t ptp_usb_control_cancel_request (PTPParams *params, uint32_t transactionid) { Camera *camera = ((PTPData *)params->data)->camera; int ret; unsigned char buffer[6]; htod16a(&buffer[0],PTP_EC_CancelTransaction); htod32a(&buffer[2],transactionid); ret = gp_port_usb_msg_class_write (camera->port, 0x64, 0x0000, 0x0000, (char*)buffer, sizeof (buffer)); if (ret < GP_OK) return PTP_ERROR_IO; return PTP_RC_OK; } libgphoto2-2.5.9/camlibs/ptp2/ptpip.c0000644000175000001440000005125512615116025014323 00000000000000/* ptpip.c * * Copyright (C) 2006 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* * This is working, but unfinished! * - Event handling not finished. * - Some configure checking magic missing for the special header files * and functions. * - Not everything implementation correctly cross checked. * - Coolpix P3 does not give transfer status (image 000x/000y), and reports an * error when transfers finish correctly. * * Nikon WU-1* adapters might use 0011223344556677 as GUID always... */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #ifdef HAVE_SYS_SELECT_H #include #endif #ifdef WIN32 # include #else # include # include #endif #include #include #include #include "ptp.h" #include "ptp-private.h" #define PTPIP_VERSION_MAJOR 0x0001 #define PTPIP_VERSION_MINOR 0x0000 #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #include "ptp.h" #include "ptp-bugs.h" #include "ptp-pack.c" #define ptpip_len 0 #define ptpip_type 4 #define ptpip_cmd_dataphase 8 #define ptpip_cmd_code 12 #define ptpip_cmd_transid 14 #define ptpip_cmd_param1 18 #define ptpip_cmd_param2 22 #define ptpip_cmd_param3 26 #define ptpip_cmd_param4 30 #define ptpip_cmd_param5 34 #define PTP_EVENT_CHECK 0x0000 /* waits for */ #define PTP_EVENT_CHECK_FAST 0x0001 /* checks */ static uint16_t ptp_ptpip_check_event (PTPParams* params); static uint16_t ptp_ptpip_event (PTPParams* params, PTPContainer* event, int wait); /* send / receive functions */ uint16_t ptp_ptpip_sendreq (PTPParams* params, PTPContainer* req, int dataphase) { int ret; int len = 18+req->Nparam*4; unsigned char *request = malloc(len); ptp_ptpip_check_event (params); htod32a(&request[ptpip_type],PTPIP_CMD_REQUEST); htod32a(&request[ptpip_len],len); /* sending data = 2, receiving data or no data = 1 */ if ((dataphase&PTP_DP_DATA_MASK) == PTP_DP_SENDDATA) htod32a(&request[ptpip_cmd_dataphase],2); else htod32a(&request[ptpip_cmd_dataphase],1); htod16a(&request[ptpip_cmd_code],req->Code); htod32a(&request[ptpip_cmd_transid],req->Transaction_ID); switch (req->Nparam) { case 5: htod32a(&request[ptpip_cmd_param5],req->Param5); case 4: htod32a(&request[ptpip_cmd_param4],req->Param4); case 3: htod32a(&request[ptpip_cmd_param3],req->Param3); case 2: htod32a(&request[ptpip_cmd_param2],req->Param2); case 1: htod32a(&request[ptpip_cmd_param1],req->Param1); case 0: default: break; } GP_LOG_DATA ( (char*)request, len, "ptpip/oprequest data:"); ret = write (params->cmdfd, request, len); free (request); if (ret == -1) perror ("sendreq/write to cmdfd"); if (ret != len) { GP_LOG_E ("ptp_ptpip_sendreq() len =%d but ret=%d", len, ret); return PTP_RC_OK; } return PTP_RC_OK; } static uint16_t ptp_ptpip_generic_read (PTPParams *params, int fd, PTPIPHeader *hdr, unsigned char**data) { int ret, len, curread; unsigned char *xhdr; xhdr = (unsigned char*)hdr; curread = 0; len = sizeof (PTPIPHeader); while (curread < len) { ret = read (fd, xhdr + curread, len - curread); if (ret == -1) { perror ("read PTPIPHeader"); return PTP_RC_GeneralError; } GP_LOG_DATA ((char*)xhdr+curread, ret, "ptpip/generic_read header:"); curread += ret; if (ret == 0) { GP_LOG_E ("End of stream after reading %d bytes of ptpipheader", ret); return PTP_RC_GeneralError; } } len = dtoh32 (hdr->length) - sizeof (PTPIPHeader); if (len < 0) { GP_LOG_E ("len < 0, %d?", len); return PTP_RC_GeneralError; } *data = malloc (len); if (!*data) { GP_LOG_E ("malloc failed."); return PTP_RC_GeneralError; } curread = 0; while (curread < len) { ret = read (fd, (*data)+curread, len-curread); if (ret == -1) { GP_LOG_E ("error %d in reading PTPIP data", errno); free (*data);*data = NULL; return PTP_RC_GeneralError; } else { GP_LOG_DATA ((char*)((*data)+curread), ret, "ptpip/generic_read data:"); } if (ret == 0) break; curread += ret; } if (curread != len) { GP_LOG_E ("read PTPIP data, ret %d vs len %d", ret, len); free (*data);*data = NULL; return PTP_RC_GeneralError; } return PTP_RC_OK; } static uint16_t ptp_ptpip_cmd_read (PTPParams* params, PTPIPHeader *hdr, unsigned char** data) { ptp_ptpip_check_event (params); return ptp_ptpip_generic_read (params, params->cmdfd, hdr, data); } static uint16_t ptp_ptpip_evt_read (PTPParams* params, PTPIPHeader *hdr, unsigned char** data) { return ptp_ptpip_generic_read (params, params->evtfd, hdr, data); } static uint16_t ptp_ptpip_check_event (PTPParams* params) { PTPContainer event; uint16_t ret; event.Code = 0; ret = ptp_ptpip_event (params, &event, PTP_EVENT_CHECK_FAST); if (ret != PTP_RC_OK) return ret; if (event.Code == 0) return ret; return ptp_add_event (params, &event); } #define ptpip_startdata_transid 0 #define ptpip_startdata_totallen 4 #define ptpip_startdata_unknown 8 #define ptpip_data_transid 0 #define ptpip_data_payload 4 #define WRITE_BLOCKSIZE 65536 uint16_t ptp_ptpip_senddata (PTPParams* params, PTPContainer* ptp, uint64_t size, PTPDataHandler *handler ) { unsigned char request[0x14]; unsigned int curwrite, towrite; int ret; unsigned char* xdata; htod32a(&request[ptpip_type],PTPIP_START_DATA_PACKET); htod32a(&request[ptpip_len],sizeof(request)); htod32a(&request[ptpip_startdata_transid + 8],ptp->Transaction_ID); htod32a(&request[ptpip_startdata_totallen + 8],size); htod32a(&request[ptpip_startdata_unknown + 8],0); GP_LOG_DATA ((char*)request, sizeof(request), "ptpip/senddata header:"); ret = write (params->cmdfd, request, sizeof(request)); if (ret == -1) perror ("sendreq/write to cmdfd"); if (ret != sizeof(request)) { GP_LOG_E ("ptp_ptpip_senddata() len=%d but ret=%d", (int)sizeof(request), ret); return PTP_RC_GeneralError; } xdata = malloc(WRITE_BLOCKSIZE+8+4); if (!xdata) return PTP_RC_GeneralError; curwrite = 0; while (curwrite < size) { unsigned long type, written, towrite2, xtowrite; ptp_ptpip_check_event (params); towrite = size - curwrite; if (towrite > WRITE_BLOCKSIZE) { towrite = WRITE_BLOCKSIZE; type = PTPIP_DATA_PACKET; } else { type = PTPIP_END_DATA_PACKET; } ret = handler->getfunc (params, handler->priv, towrite, &xdata[ptpip_data_payload+8], &xtowrite); if (ret == -1) { perror ("getfunc in senddata failed"); free (xdata); return PTP_RC_GeneralError; } towrite2 = xtowrite + 12; htod32a(&xdata[ptpip_type], type); htod32a(&xdata[ptpip_len], towrite2); htod32a(&xdata[ptpip_data_transid+8], ptp->Transaction_ID); GP_LOG_DATA ((char*)xdata, towrite2, "ptpip/senddata data:"); written = 0; while (written < towrite2) { ret = write (params->cmdfd, xdata+written, towrite2-written); if (ret == -1) { perror ("write in senddata failed"); free (xdata); return PTP_RC_GeneralError; } written += ret; } curwrite += towrite; } free (xdata); return PTP_RC_OK; } uint16_t ptp_ptpip_getdata (PTPParams* params, PTPContainer* ptp, PTPDataHandler *handler) { PTPIPHeader hdr; unsigned char *xdata = NULL; uint16_t ret; unsigned long toread, curread; int xret; ret = ptp_ptpip_cmd_read (params, &hdr, &xdata); if (ret != PTP_RC_OK) return ret; if (dtoh32(hdr.type) == PTPIP_CMD_RESPONSE) { /* might happen if we have no data transfer due to error? */ GP_LOG_E ("Unexpected ptp response, ptp code %x", dtoh16a(&xdata[0])); return dtoh16a(&xdata[0]); } if (dtoh32(hdr.type) != PTPIP_START_DATA_PACKET) { GP_LOG_E ("got reply type %d\n", dtoh32(hdr.type)); return PTP_RC_GeneralError; } toread = dtoh32a(&xdata[ptpip_data_payload]); free (xdata); xdata = NULL; curread = 0; while (curread < toread) { ret = ptp_ptpip_cmd_read (params, &hdr, &xdata); if (ret != PTP_RC_OK) return ret; if (dtoh32(hdr.type) == PTPIP_END_DATA_PACKET) { unsigned long datalen = dtoh32(hdr.length)-8-ptpip_data_payload; if (datalen > (toread-curread)) { GP_LOG_E ("returned data is too much, expected %ld, got %ld", (toread-curread), datalen ); break; } xret = handler->putfunc (params, handler->priv, datalen, xdata+ptpip_data_payload ); if (xret != PTP_RC_OK) { GP_LOG_E ("failed to putfunc of returned data"); break; } curread += datalen; free (xdata); xdata = NULL; continue; } if (dtoh32(hdr.type) == PTPIP_DATA_PACKET) { unsigned long datalen = dtoh32(hdr.length)-8-ptpip_data_payload; if (datalen > (toread-curread)) { GP_LOG_E ("returned data is too much, expected %ld, got %ld", (toread-curread), datalen ); break; } xret = handler->putfunc (params, handler->priv, datalen, xdata+ptpip_data_payload ); if (xret != PTP_RC_OK) { GP_LOG_E ("failed to putfunc of returned data"); break; } curread += datalen; free (xdata); xdata = NULL; continue; } GP_LOG_E ("ret type %d", hdr.type); } if (curread < toread) return PTP_RC_GeneralError; return PTP_RC_OK; } #define ptpip_resp_code 0 #define ptpip_resp_transid 2 #define ptpip_resp_param1 6 #define ptpip_resp_param2 10 #define ptpip_resp_param3 14 #define ptpip_resp_param4 18 #define ptpip_resp_param5 22 uint16_t ptp_ptpip_getresp (PTPParams* params, PTPContainer* resp) { PTPIPHeader hdr; unsigned char *data = NULL; uint16_t ret; int n; retry: ret = ptp_ptpip_cmd_read (params, &hdr, &data); if (ret != PTP_RC_OK) return ret; switch (dtoh32(hdr.type)) { case PTPIP_END_DATA_PACKET: GP_LOG_D("PTPIP_END_DATA_PACKET"); resp->Transaction_ID = dtoh32a(&data[0]); free (data); data = NULL; goto retry; case PTPIP_CMD_RESPONSE: GP_LOG_D("PTPIP_CMD_RESPONSE"); resp->Code = dtoh16a(&data[ptpip_resp_code]); resp->Transaction_ID = dtoh32a(&data[ptpip_resp_transid]); n = (dtoh32(hdr.length) - sizeof(hdr) - ptpip_resp_param1)/sizeof(uint32_t); switch (n) { case 5: resp->Param5 = dtoh32a(&data[ptpip_resp_param5]); case 4: resp->Param4 = dtoh32a(&data[ptpip_resp_param4]); case 3: resp->Param3 = dtoh32a(&data[ptpip_resp_param3]); case 2: resp->Param2 = dtoh32a(&data[ptpip_resp_param2]); case 1: resp->Param1 = dtoh32a(&data[ptpip_resp_param1]); case 0: break; default: GP_LOG_E ("response got %d parameters?", n); break; } break; default: GP_LOG_E ("response type %d packet?", dtoh32(hdr.type)); break; } free (data); return PTP_RC_OK; } #define ptpip_initcmd_guid 8 #define ptpip_initcmd_name 24 static uint16_t ptp_ptpip_init_command_request (PTPParams* params) { char hostname[100]; unsigned char* cmdrequest; unsigned int i; int len, ret; unsigned char guid[16]; ptp_nikon_getptpipguid(guid); if (gethostname (hostname, sizeof(hostname))) return PTP_RC_GeneralError; len = ptpip_initcmd_name + (strlen(hostname)+1)*2 + 4; cmdrequest = malloc(len); htod32a(&cmdrequest[ptpip_type],PTPIP_INIT_COMMAND_REQUEST); htod32a(&cmdrequest[ptpip_len],len); memcpy(&cmdrequest[ptpip_initcmd_guid], guid, 16); for (i=0;i ucs-2 in little endian */ cmdrequest[ptpip_initcmd_name+i*2] = hostname[i]; cmdrequest[ptpip_initcmd_name+i*2+1] = 0; } htod16a(&cmdrequest[ptpip_initcmd_name+(strlen(hostname)+1)*2],PTPIP_VERSION_MINOR); htod16a(&cmdrequest[ptpip_initcmd_name+(strlen(hostname)+1)*2+2],PTPIP_VERSION_MAJOR); GP_LOG_DATA ((char*)cmdrequest, len, "ptpip/init_cmd data:"); ret = write (params->cmdfd, cmdrequest, len); free (cmdrequest); if (ret == -1) { perror("write init cmd request"); return PTP_RC_GeneralError; } GP_LOG_E ("return %d / len %d", ret, len); if (ret != len) { GP_LOG_E ("return %d vs len %d", ret, len); return PTP_RC_GeneralError; } return PTP_RC_OK; } #define ptpip_cmdack_idx 0 #define ptpip_cmdack_guid 4 #define ptpip_cmdack_name 20 static uint16_t ptp_ptpip_init_command_ack (PTPParams* params) { PTPIPHeader hdr; unsigned char *data = NULL; uint16_t ret; int i; unsigned short *name; ret = ptp_ptpip_generic_read (params, params->cmdfd, &hdr, &data); if (ret != PTP_RC_OK) return ret; if (hdr.type != dtoh32(PTPIP_INIT_COMMAND_ACK)) { GP_LOG_E ("bad type returned %d", htod32(hdr.type)); free (data); if (hdr.type == PTPIP_INIT_FAIL) /* likely reason is permission denied */ return PTP_RC_AccessDenied; return PTP_RC_GeneralError; } params->eventpipeid = dtoh32a(&data[ptpip_cmdack_idx]); memcpy (params->cameraguid, &data[ptpip_cmdack_guid], 16); name = (unsigned short*)&data[ptpip_cmdack_name]; for (i=0;name[i];i++) /* EMPTY */; params->cameraname = malloc((i+1)*sizeof(uint16_t)); for (i=0;name[i];i++) params->cameraname[i] = name[i]; free (data); return PTP_RC_OK; } #define ptpip_eventinit_idx 8 #define ptpip_eventinit_size 12 static uint16_t ptp_ptpip_init_event_request (PTPParams* params) { unsigned char evtrequest[ptpip_eventinit_size]; int ret; htod32a(&evtrequest[ptpip_type],PTPIP_INIT_EVENT_REQUEST); htod32a(&evtrequest[ptpip_len],ptpip_eventinit_size); htod32a(&evtrequest[ptpip_eventinit_idx],params->eventpipeid); GP_LOG_DATA ((char*)evtrequest, ptpip_eventinit_size, "ptpip/init_event data:"); ret = write (params->evtfd, evtrequest, ptpip_eventinit_size); if (ret == -1) { perror("write init evt request"); return PTP_RC_GeneralError; } if (ret != ptpip_eventinit_size) { GP_LOG_E ("unexpected retsize %d, expected %d", ret, ptpip_eventinit_size); return PTP_RC_GeneralError; } return PTP_RC_OK; } static uint16_t ptp_ptpip_init_event_ack (PTPParams* params) { PTPIPHeader hdr; unsigned char *data = NULL; uint16_t ret; ret = ptp_ptpip_evt_read (params, &hdr, &data); if (ret != PTP_RC_OK) return ret; free (data); if (hdr.type != dtoh32(PTPIP_INIT_EVENT_ACK)) { GP_LOG_E ("bad type returned %d\n", htod32(hdr.type)); return PTP_RC_GeneralError; } return PTP_RC_OK; } /* Event handling functions */ /* PTP Events wait for or check mode */ #define ptpip_event_code 0 #define ptpip_event_transid 2 #define ptpip_event_param1 6 #define ptpip_event_param2 10 #define ptpip_event_param3 14 static uint16_t ptp_ptpip_event (PTPParams* params, PTPContainer* event, int wait) { #ifndef WIN32 fd_set infds; struct timeval timeout; int ret; unsigned char* data = NULL; PTPIPHeader hdr; int n; while (1) { FD_ZERO(&infds); FD_SET(params->evtfd, &infds); timeout.tv_sec = 0; if (wait == PTP_EVENT_CHECK_FAST) timeout.tv_usec = 1; else timeout.tv_usec = 1000; /* 1/1000 second .. perhaps wait longer? */ ret = select (params->evtfd+1, &infds, NULL, NULL, &timeout); if (1 != ret) { if (-1 == ret) { GP_LOG_D ("select returned error, errno is %d", errno); return PTP_ERROR_IO; } return PTP_ERROR_TIMEOUT; } ret = ptp_ptpip_evt_read (params, &hdr, &data); if (ret != PTP_RC_OK) return ret; GP_LOG_D ("hdr type %d, length %d", hdr.type, hdr.length); if (dtoh32(hdr.type) == PTPIP_EVENT) { break; } /* TODO: Handle cancel transaction and ping/pong * If not PTPIP_EVENT, process it and wait for next PTPIP_EVENT */ GP_LOG_E ("unknown/unhandled event type %d", dtoh32(hdr.type)); } event->Code = dtoh16a(&data[ptpip_event_code]); event->Transaction_ID = dtoh32a(&data[ptpip_event_transid]); n = (dtoh32(hdr.length) - sizeof(hdr) - ptpip_event_param1)/sizeof(uint32_t); switch (n) { case 3: event->Param3 = dtoh32a(&data[ptpip_event_param3]); case 2: event->Param2 = dtoh32a(&data[ptpip_event_param2]); case 1: event->Param1 = dtoh32a(&data[ptpip_event_param1]); case 0: break; default: GP_LOG_E ("response got %d parameters?", n); break; } free (data); return PTP_RC_OK; #else GP_LOG_E ("not supported currently on Windows"); return PTP_RC_OK; #endif } uint16_t ptp_ptpip_event_check (PTPParams* params, PTPContainer* event) { return ptp_ptpip_event (params, event, PTP_EVENT_CHECK_FAST); } uint16_t ptp_ptpip_event_wait (PTPParams* params, PTPContainer* event) { return ptp_ptpip_event (params, event, PTP_EVENT_CHECK); } /** * ptp_nikon_getwifiguid: * * This command gets the GUID of this machine. If it does not exists, it creates * one. * * params: PTPParams* * * Return values: Some PTP_RC_* code. * **/ void ptp_nikon_getptpipguid (unsigned char* guid) { char buffer[1024]; int i; long val; int valid; char* endptr; char* pos; gp_setting_get("ptp2_ip","guid",buffer); if (strlen(buffer) == 47) { /* 47 = 16*2 (numbers) + 15 (semi-colons) */ pos = buffer; valid = 1; for (i = 0; i < 16; i++) { val = strtol(pos, &endptr, 16); if (((*endptr != ':') && (*endptr != 0)) || (endptr != pos+2)) { valid = 0; break; } guid[i] = (unsigned char)val; pos += 3; } /*printf("GUID "); for (i = 0; i < 16; i++) { printf("%02x:", guid[i]); } printf("\n");*/ if (valid) return; } /*fprintf(stderr, "Invalid GUID\n");*/ /* Generate an ID */ srand(time(NULL)); buffer[0] = 0; pos = buffer; for (i = 0; i < 16; i++) { guid[i] = (unsigned char) ((256.0 * rand()) / RAND_MAX); pos += sprintf(pos, "%02x:", guid[i]); } buffer[47] = 0; /*printf("New GUID: %s\n", buffer);*/ gp_setting_set("ptp2_ip","guid",buffer); } int ptp_ptpip_connect (PTPParams* params, const char *address) { char *addr, *s, *p; int port, tries; struct sockaddr_in saddr; uint16_t ret; GP_LOG_D ("connecting to %s.", address); if (NULL == strchr (address,':')) return GP_ERROR_BAD_PARAMETERS; #ifdef HAVE_INET_ATON addr = strdup (address); if (!addr) return GP_ERROR_NO_MEMORY; s = strchr (addr,':'); if (!s) { GP_LOG_E ("addr %s should contain a :", address); free (addr); return GP_ERROR_BAD_PARAMETERS; } *s = '\0'; p = strchr (s+1,':'); port = 15740; if (p) { *p = '\0'; if (!sscanf (p+1,"%d",&port)) { fprintf(stderr,"failed to scan for port in %s\n", p+1); free (addr); return GP_ERROR_BAD_PARAMETERS; } } if (!inet_aton (s+1, &saddr.sin_addr)) { fprintf(stderr,"failed to scan for addr in %s\n", s+1); free (addr); return GP_ERROR_BAD_PARAMETERS; } saddr.sin_port = htons(port); saddr.sin_family = AF_INET; free (addr); params->cmdfd = socket (PF_INET, SOCK_STREAM, 0); if (params->cmdfd == -1) { perror ("socket cmd"); return GP_ERROR_BAD_PARAMETERS; } params->evtfd = socket (PF_INET, SOCK_STREAM, 0); if (params->evtfd == -1) { perror ("socket evt"); close (params->cmdfd); return GP_ERROR_BAD_PARAMETERS; } if (-1 == connect (params->cmdfd, (struct sockaddr*)&saddr, sizeof(struct sockaddr_in))) { perror ("connect cmd"); close (params->cmdfd); close (params->evtfd); return GP_ERROR_IO; } ret = ptp_ptpip_init_command_request (params); if (ret != PTP_RC_OK) { close (params->cmdfd); close (params->evtfd); return translate_ptp_result (ret); } ret = ptp_ptpip_init_command_ack (params); if (ret != PTP_RC_OK) { close (params->cmdfd); close (params->evtfd); return translate_ptp_result (ret); } /* seen on Ricoh Theta, camera is not immediately ready. try again two times. */ tries = 2; do { if (-1 != connect (params->evtfd, (struct sockaddr*)&saddr, sizeof(struct sockaddr_in))) break; if ((errno == ECONNREFUSED) && (tries--)) { GP_LOG_D ("event connect failed, retrying after short wait"); usleep(100*1000); continue; } GP_LOG_E ("could not connect event"); close (params->cmdfd); close (params->evtfd); return GP_ERROR_IO; } while (1); ret = ptp_ptpip_init_event_request (params); if (ret != PTP_RC_OK) return translate_ptp_result (ret); ret = ptp_ptpip_init_event_ack (params); if (ret != PTP_RC_OK) return translate_ptp_result (ret); GP_LOG_D ("ptpip connected!"); return GP_OK; #else GP_LOG_E ("Windows currently not supported, neeeds a winsock port."); return GP_ERROR_NOT_SUPPORTED; #endif } libgphoto2-2.5.9/camlibs/ptp2/device-flags.h0000644000175000001440000003235212610415536015526 00000000000000/** * \file device-flags.h * Special device flags to deal with bugs in specific devices. * * Copyright (C) 2005-2007 Richard A. Low * Copyright (C) 2005-2012 Linus Walleij * Copyright (C) 2006-2007 Marcus Meissner * Copyright (C) 2007 Ted Bullock * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * This file is supposed to be included by both libmtp and libgphoto2. */ /** * These flags are used to indicate if some or other * device need special treatment. These should be possible * to concatenate using logical OR so please use one bit per * feature and lets pray we don't need more than 32 bits... */ #define DEVICE_FLAG_NONE 0x00000000 /** * This means that the PTP_OC_MTP_GetObjPropList is broken * in the sense that it won't return properly formatted metadata * for ALL files on the device when you request an object * property list for object 0xFFFFFFFF with parameter 3 likewise * set to 0xFFFFFFFF. Compare to * DEVICE_FLAG_BROKEN_MTPGETOBJECTPROPLIST which only signify * that it's broken when getting metadata for a SINGLE object. * A typical way the implementation may be broken is that it * may not return a proper count of the objects, and sometimes * (like on the ZENs) objects are simply missing from the list * if you use this. Sometimes it has been used incorrectly to * mask bugs in the code (like handling transactions of data * with size given to -1 (0xFFFFFFFFU), in that case please * help us remove it now the code is fixed. Sometimes this is * used because getting all the objects is just too slow and * the USB transaction will time out if you use this command. */ #define DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL 0x00000001 /** * This means that under Linux, another kernel module may * be using this device's USB interface, so we need to detach * it if it is. Typically this is on dual-mode devices that * will present both an MTP compliant interface and device * descriptor *and* a USB mass storage interface. If the USB * mass storage interface is in use, other apps (like our * userspace libmtp through libusb access path) cannot get in * and get cosy with it. So we can remove the offending * application. Typically this means you have to run the program * as root as well. */ #define DEVICE_FLAG_UNLOAD_DRIVER 0x00000002 /** * This means that the PTP_OC_MTP_GetObjPropList (9805) * is broken in some way, either it doesn't work at all * (as for Android devices) or it won't properly return all * object properties if parameter 3 is set to 0xFFFFFFFFU. */ #define DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST 0x00000004 /** * This means the device doesn't send zero packets to indicate * end of transfer when the transfer boundary occurs at a * multiple of 64 bytes (the USB 1.1 endpoint size). Instead, * exactly one extra byte is sent at the end of the transfer * if the size is an integer multiple of USB 1.1 endpoint size * (64 bytes). * * This behaviour is most probably a workaround due to the fact * that the hardware USB slave controller in the device cannot * handle zero writes at all, and the usage of the USB 1.1 * endpoint size is due to the fact that the device will "gear * down" on a USB 1.1 hub, and since 64 bytes is a multiple of * 512 bytes, it will work with USB 1.1 and USB 2.0 alike. */ #define DEVICE_FLAG_NO_ZERO_READS 0x00000008 /** * This flag means that the device is prone to forgetting the * OGG container file type, so that libmtp must look at the * filename extensions in order to determine that a file is * actually OGG. This is a clear and present firmware bug, and * while firmware bugs should be fixed in firmware, we like * OGG so much that we back it by introducing this flag. * The error has only been seen on iriver devices. Turning this * flag on won't hurt anything, just that the check against * filename extension will be done for files of "unknown" type. * If the player does not even know (reports) that it supports * ogg even though it does, please use the stronger * OGG_IS_UNKNOWN flag, which will forcedly support ogg on * anything with the .ogg filename extension. */ #define DEVICE_FLAG_IRIVER_OGG_ALZHEIMER 0x00000010 /** * This flag indicates a limitation in the filenames a device * can accept - they must be 7 bit (all chars <= 127/0x7F). * It was found first on the Philips Shoqbox, and is a deviation * from the PTP standard which mandates that any unicode chars * may be used for filenames. I guess this is caused by a 7bit-only * filesystem being used intrinsically on the device. */ #define DEVICE_FLAG_ONLY_7BIT_FILENAMES 0x00000020 /** * This flag indicates that the device will lock up if you * try to get status of endpoints and/or release the interface * when closing the device. This fixes problems with SanDisk * Sansa devices especially. It may be a side-effect of a * Windows behaviour of never releasing interfaces. */ #define DEVICE_FLAG_NO_RELEASE_INTERFACE 0x00000040 /** * This flag was introduced with the advent of Creative ZEN * 8GB. The device sometimes return a broken PTP header * like this: < 1502 0000 0200 01d1 02d1 01d2 > * the latter 6 bytes (representing "code" and "transaction ID") * contain junk. This is breaking the PTP/MTP spec but works * on Windows anyway, probably because the Windows implementation * does not check that these bytes are valid. To interoperate * with devices like this, we need this flag to emulate the * Windows bug. Broken headers has also been found in the * Aricent MTP stack. */ #define DEVICE_FLAG_IGNORE_HEADER_ERRORS 0x00000080 /** * The Motorola RAZR2 V8 (others?) has broken set object * proplist causing the metadata setting to fail. (The * set object prop to set individual properties work on * this device, but the metadata is plain ignored on * tracks, though e.g. playlist names can be set.) */ #define DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST 0x00000100 /** * The Samsung YP-T10 think Ogg files shall be sent with * the "unknown" (PTP_OFC_Undefined) file type, this gives a * side effect that is a combination of the iRiver Ogg Alzheimer * problem (have to recognized Ogg files on file extension) * and a need to report the Ogg support (the device itself does * not properly claim to support it) and need to set filetype * to unknown when storing Ogg files, even though they're not * actually unknown. Later iRivers seem to need this flag since * they do not report to support OGG even though they actually * do. Often the device supports OGG in USB mass storage mode, * then the firmware simply miss to declare metadata support * for OGG properly. */ #define DEVICE_FLAG_OGG_IS_UNKNOWN 0x00000200 /** * The Creative Zen is quite unstable in libmtp but seems to * be better with later firmware versions. However, it still * frequently crashes when setting album art dimensions. This * flag disables setting the dimensions (which seems to make * no difference to how the graphic is displayed). */ #define DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS 0x00000400 /** * Some devices, particularly SanDisk Sansas, need to always * have their "OS Descriptor" probed in order to work correctly. * This flag provides that extra massage. */ #define DEVICE_FLAG_ALWAYS_PROBE_DESCRIPTOR 0x00000800 /** * Samsung has implimented its own playlist format as a .spl file * stored in the normal file system, rather than a proper mtp * playlist. There are multiple versions of the .spl format * identified by a line in the file: VERSION X.XX * Version 1.00 is just a simple playlist. */ #define DEVICE_FLAG_PLAYLIST_SPL_V1 0x00001000 /** * Samsung has implimented its own playlist format as a .spl file * stored in the normal file system, rather than a proper mtp * playlist. There are multiple versions of the .spl format * identified by a line in the file: VERSION X.XX * Version 2.00 is playlist but allows DNSe sound settings * to be stored, per playlist. */ #define DEVICE_FLAG_PLAYLIST_SPL_V2 0x00002000 /** * The Sansa E250 is know to have this problem which is actually * that the device claims that property PTP_OPC_DateModified * is read/write but will still fail to update it. It can only * be set properly the first time a file is sent. */ #define DEVICE_FLAG_CANNOT_HANDLE_DATEMODIFIED 0x00004000 /** * This avoids use of the send object proplist which * is used when creating new objects (not just updating) * The DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST is related * but only concerns the case where the object proplist * is sent in to update an existing object. The Toshiba * Gigabeat MEU202 for example has this problem. */ #define DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST 0x00008000 /** * Devices that cannot support reading out battery * level. */ #define DEVICE_FLAG_BROKEN_BATTERY_LEVEL 0x00010000 /** * Devices that send "ObjectDeleted" events after deletion * of images. (libgphoto2) */ #define DEVICE_FLAG_DELETE_SENDS_EVENT 0x00020000 /** * Cameras that can capture images. (libgphoto2) */ #define DEVICE_FLAG_CAPTURE 0x00040000 /** * Cameras that can capture images. (libgphoto2) */ #define DEVICE_FLAG_CAPTURE_PREVIEW 0x00080000 /** * Nikon broken capture support without proper ObjectAdded events. * (libgphoto2) */ #define DEVICE_FLAG_NIKON_BROKEN_CAPTURE 0x00100000 /** * To distinguish the V1 series from the DSLRs and handle them * (libgphoto2) */ #define DEVICE_FLAG_NIKON_1 0x00200000 /** * Broken capture support where cameras do not send CaptureComplete events. * (libgphoto2) */ #define DEVICE_FLAG_NO_CAPTURE_COMPLETE 0x00400000 /** * Direct PTP match required. * (libgphoto2) */ #define DEVICE_FLAG_OLYMPUS_XML_WRAPPED 0x00800000 /** * This flag is like DEVICE_FLAG_OGG_IS_UNKNOWN but for FLAC * files instead. Using the unknown filetype for FLAC files. */ #define DEVICE_FLAG_FLAC_IS_UNKNOWN 0x01000000 /** * Device needs unique filenames, no two files can be * named the same string. */ #define DEVICE_FLAG_UNIQUE_FILENAMES 0x02000000 /** * This flag performs some random magic on the BlackBerry * device to switch from USB mass storage to MTP mode we think. */ #define DEVICE_FLAG_SWITCH_MODE_BLACKBERRY 0x04000000 /** * This flag indicates that the device need an extra long * timeout on some operations. */ #define DEVICE_FLAG_LONG_TIMEOUT 0x08000000 /** * This flag indicates that the device need an explicit * USB reset after each connection. Some devices don't * like this, so it's not done by default. */ #define DEVICE_FLAG_FORCE_RESET_ON_CLOSE 0x10000000 /** * Early Creative Zen (etc) models actually only support * command 9805 (Get object property list) and will hang * if you try to get individual properties of an object. */ #define DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL 0x20000000 /** * It seems that some devices return an bad data when * using the GetObjectInfo operation. So in these cases * we prefer to override the PTP-compatible object infos * with the MTP property list. * * For example Some Samsung Galaxy S devices contain an MTP * stack that present the ObjectInfo in 64 bit instead of * 32 bit. */ #define DEVICE_FLAG_PROPLIST_OVERRIDES_OI 0x40000000 /** * All these bug flags need to be set on SONY NWZ Walkman * players, and will be autodetected on unknown devices * by detecting the vendor extension descriptor "sony.net" */ #define DEVICE_FLAGS_SONY_NWZ_BUGS \ (DEVICE_FLAG_UNLOAD_DRIVER | \ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | \ DEVICE_FLAG_UNIQUE_FILENAMES | \ DEVICE_FLAG_FORCE_RESET_ON_CLOSE ) /** * All these bug flags need to be set on Android devices, * they claim to support MTP operations they actually * cannot handle, especially 9805 (Get object property list). * These are auto-assigned to devices reporting * "android.com" in their device extension descriptor. */ #define DEVICE_FLAGS_ANDROID_BUGS \ (DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST | \ DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST | \ DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST | \ DEVICE_FLAG_UNLOAD_DRIVER | \ DEVICE_FLAG_LONG_TIMEOUT ) /** * All these bug flags appear on a number of SonyEricsson * devices including Android devices not using the stock * Android 4.0+ (Ice Cream Sandwich) MTP stack. It is highly * supected that these bugs comes from an MTP implementation * from Aricent, so it is called the Aricent bug flags as a * shorthand. Especially the header errors that need to be * ignored is typical for this stack. * * After some guesswork we auto-assign these bug flags to * devices that present the "microsoft.com/WPDNA", and * "sonyericsson.com/SE" but NOT the "android.com" * descriptor. */ #define DEVICE_FLAGS_ARICENT_BUGS \ (DEVICE_FLAG_IGNORE_HEADER_ERRORS | \ DEVICE_FLAG_BROKEN_SEND_OBJECT_PROPLIST | \ DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST ) libgphoto2-2.5.9/camlibs/ptp2/chdk_ptp.h0000644000175000001440000004665412610415617015003 00000000000000#ifndef __CHDK_PTP_H #define __CHDK_PTP_H // CHDK PTP protocol interface (can also be used in client PTP programs) // Note: used in modules and platform independent code. // Do not add platform dependent stuff in here (#ifdef/#endif compile options or camera dependent values) #define PTP_CHDK_VERSION_MAJOR 2 // increase only with backwards incompatible changes (and reset minor) #define PTP_CHDK_VERSION_MINOR 6 // increase with extensions of functionality // minor > 1000 for development versions /* protocol version history 0.1 - initial proposal from mweerden, + luar 0.2 - Added ScriptStatus and ScriptSupport, based on work by ultimA 1.0 - removed old script result code (luar), replace with message system 2.0 - return PTP_CHDK_TYPE_TABLE for tables instead of TYPE_STRING, allow return of empty strings 2.1 - experimental live view, not formally released 2.2 - live view (work in progress) 2.3 - live view - released in 1.1 2.4 - live view protocol 2.1 2.5 - remote capture 2.6 - script execution flags */ #define PTP_OC_CHDK 0x9999 // N.B.: unused parameters should be set to 0 //enum ptp_chdk_command { enum PTP_CHDK_Command { PTP_CHDK_Version = 0, // return param1 is major version number // return param2 is minor version number PTP_CHDK_GetMemory, // param2 is base address (not NULL; circumvent by taking 0xFFFFFFFF and size+1) // param3 is size (in bytes) // return data is memory block PTP_CHDK_SetMemory, // param2 is address // param3 is size (in bytes) // data is new memory block PTP_CHDK_CallFunction, // data is array of function pointer and 32 bit int arguments (max: 10 args prior to protocol 2.5) // return param1 is return value PTP_CHDK_TempData, // data is data to be stored for later // param2 is for the TD flags below PTP_CHDK_UploadFile, // data is 4-byte length of filename, followed by filename and contents PTP_CHDK_DownloadFile, // preceded by PTP_CHDK_TempData with filename // return data are file contents PTP_CHDK_ExecuteScript, // data is script to be executed // param2 is language of script // in proto 2.6 and later, language is the lower byte, rest is used for PTP_CHDK_SCRIPT_FL* flags // return param1 is script id, like a process id // return param2 is status from ptp_chdk_script_error_type PTP_CHDK_ScriptStatus, // Script execution status // return param1 bits // PTP_CHDK_SCRIPT_STATUS_RUN is set if a script running, cleared if not // PTP_CHDK_SCRIPT_STATUS_MSG is set if script messages from script waiting to be read // all other bits and params are reserved for future use PTP_CHDK_ScriptSupport, // Which scripting interfaces are supported in this build // param1 CHDK_PTP_SUPPORT_LUA is set if lua is supported, cleared if not // all other bits and params are reserved for future use PTP_CHDK_ReadScriptMsg, // read next message from camera script system // return param1 is chdk_ptp_s_msg_type // return param2 is message subtype: // for script return and users this is ptp_chdk_script_data_type // for error ptp_chdk_script_error_type // return param3 is script id of script that generated the message // return param4 is length of the message data. // return data is message. // A minimum of 1 bytes of zeros is returned if the message has no data (empty string or type NONE) PTP_CHDK_WriteScriptMsg, // write a message for scripts running on camera // input param2 is target script id, 0=don't care. Messages for a non-running script will be discarded // data length is handled by ptp data phase // input messages do not have type or subtype, they are always a string destined for the script (similar to USER/string) // output param1 is ptp_chdk_script_msg_status PTP_CHDK_GetDisplayData, // Return camera display data // This is defined as separate sub protocol in live_view.h // Changes to the sub-protocol will always be considered a minor change to the main protocol // param2 bitmask of data // output param1 = total size of data // return data is protocol information, frame buffer descriptions and selected display data // Currently a data phase is always returned. Future versions may define other behavior // for values in currently unused parameters. // Direct image capture over USB. // Use lua get_usb_capture_support for available data types, lua init_usb_capture for setup PTP_CHDK_RemoteCaptureIsReady, // Check if data is available // return param1 is status // 0 = not ready // 0x10000000 = remote capture not initialized // otherwise bitmask of PTP_CHDK_CAPTURE_* datatypes // return param2 is image number PTP_CHDK_RemoteCaptureGetData // retrieve data // param2 is bit indicating data type to get // return param1 is length // return param2 more chunks available? // 0 = no more chunks of selected format // return param3 seek required to pos (-1 = no seek) }; // data types as used by ReadScriptMessage enum ptp_chdk_script_data_type { PTP_CHDK_TYPE_UNSUPPORTED = 0, // type name will be returned in data PTP_CHDK_TYPE_NIL, PTP_CHDK_TYPE_BOOLEAN, PTP_CHDK_TYPE_INTEGER, PTP_CHDK_TYPE_STRING, // Empty strings are returned with length=0 PTP_CHDK_TYPE_TABLE, // tables are converted to a string by usb_msg_table_to_string, // this function can be overridden in lua to change the format // the string may be empty for an empty table }; // TempData flags #define PTP_CHDK_TD_DOWNLOAD 0x1 // download data instead of upload #define PTP_CHDK_TD_CLEAR 0x2 // clear the stored data; with DOWNLOAD this // means first download, then clear and // without DOWNLOAD this means no uploading, // just clear // Script Languages - for execution only lua is supported for now #define PTP_CHDK_SL_LUA 0 #define PTP_CHDK_SL_UBASIC 1 #define PTP_CHDK_SL_MASK 0xFF /* standard message chdkptp sends */ #define PTP_CHDK_LUA_SERIALIZE "\n\ serialize_r = function(v,opts,r,seen,depth)\n\ local vt = type(v)\n\ if vt == 'nil' or vt == 'boolean' or vt == 'number' then\n\ table.insert(r,tostring(v))\n\ return\n\ end\n\ if vt == 'string' then\n\ table.insert(r,string.format('%%q',v))\n\ return\n\ end\n\ if vt == 'table' then\n\ if not depth then\n\ depth = 1\n\ end\n\ if depth >= opts.maxdepth then\n\ error('serialize: max depth')\n\ end\n\ if not seen then\n\ seen={}\n\ elseif seen[v] then\n\ if opts.err_cycle then\n\ error('serialize: cycle')\n\ else\n\ table.insert(r,'\"cycle:'..tostring(v)..'\"')\n\ return\n\ end\n\ end\n\ seen[v] = true;\n\ table.insert(r,'{')\n\ for k,v1 in pairs(v) do\n\ if opts.pretty then\n\ table.insert(r,'\\n'..string.rep(' ',depth))\n\ end\n\ if type(k) == 'string' and string.match(k,'^[_%%a][%%a%%d_]*$') then\n\ table.insert(r,k)\n\ else\n\ table.insert(r,'[')\n\ serialize_r(k,opts,r,seen,depth+1)\n\ table.insert(r,']')\n\ end\n\ table.insert(r,'=')\n\ serialize_r(v1,opts,r,seen,depth+1)\n\ table.insert(r,',')\n\ end\n\ if opts.pretty then\n\ table.insert(r,'\\n'..string.rep(' ',depth-1))\n\ end\n\ table.insert(r,'}')\n\ return\n\ end\n\ if opts.err_type then\n\ error('serialize: unsupported type ' .. vt, 2)\n\ else\n\ table.insert(r,'\"'..tostring(v)..'\"')\n\ end\n\ end\n\ serialize_defaults = {\n\ maxdepth=10,\n\ err_type=true,\n\ err_cycle=true,\n\ pretty=false,\n\ }\n\ function serialize(v,opts)\n\ if opts then\n\ for k,v in pairs(serialize_defaults) do\n\ if not opts[k] then\n\ opts[k]=v\n\ end\n\ end\n\ else\n\ opts=serialize_defaults\n\ end\n\ local r={}\n\ serialize_r(v,opts,r)\n\ return table.concat(r)\n\ end\n" #define PTP_CHDK_LUA_SERIALIZE_SIMPLEQUOTE "\n\ serialize_r = function(v,opts,r,seen,depth)\n\ local vt = type(v)\n\ if vt == 'nil' or vt == 'boolean' or vt == 'number' then\n\ table.insert(r,tostring(v))\n\ return\n\ end\n\ if vt == 'string' then\n\ table.insert(r,string.format('%q',v))\n\ return\n\ end\n\ if vt == 'table' then\n\ if not depth then\n\ depth = 1\n\ end\n\ if depth >= opts.maxdepth then\n\ error('serialize: max depth')\n\ end\n\ if not seen then\n\ seen={}\n\ elseif seen[v] then\n\ if opts.err_cycle then\n\ error('serialize: cycle')\n\ else\n\ table.insert(r,'\"cycle:'..tostring(v)..'\"')\n\ return\n\ end\n\ end\n\ seen[v] = true;\n\ table.insert(r,'{')\n\ for k,v1 in pairs(v) do\n\ if opts.pretty then\n\ table.insert(r,'\\n'..string.rep(' ',depth))\n\ end\n\ if type(k) == 'string' and string.match(k,'^[_%a][%a%d_]*$') then\n\ table.insert(r,k)\n\ else\n\ table.insert(r,'[')\n\ serialize_r(k,opts,r,seen,depth+1)\n\ table.insert(r,']')\n\ end\n\ table.insert(r,'=')\n\ serialize_r(v1,opts,r,seen,depth+1)\n\ table.insert(r,',')\n\ end\n\ if opts.pretty then\n\ table.insert(r,'\\n'..string.rep(' ',depth-1))\n\ end\n\ table.insert(r,'}')\n\ return\n\ end\n\ if opts.err_type then\n\ error('serialize: unsupported type ' .. vt, 2)\n\ else\n\ table.insert(r,'\"'..tostring(v)..'\"')\n\ end\n\ end\n\ serialize_defaults = {\n\ maxdepth=10,\n\ err_type=true,\n\ err_cycle=true,\n\ pretty=false,\n\ }\n\ function serialize(v,opts)\n\ if opts then\n\ for k,v in pairs(serialize_defaults) do\n\ if not opts[k] then\n\ opts[k]=v\n\ end\n\ end\n\ else\n\ opts=serialize_defaults\n\ end\n\ local r={}\n\ serialize_r(v,opts,r)\n\ return table.concat(r)\n\ end\n" #define PTP_CHDK_LUA_SERIALIZE_MSGS \ PTP_CHDK_LUA_SERIALIZE\ "usb_msg_table_to_string=serialize\n" #define PTP_CHDK_LUA_SERIALIZE_MSGS_SIMPLEQUOTE \ PTP_CHDK_LUA_SERIALIZE_SIMPLEQUOTE\ "usb_msg_table_to_string=serialize\n" #define PTP_CHDK_LUA_EXTEND_TABLE \ "function extend_table(target,source,deep)\n\ if type(target) ~= 'table' then\n\ error('extend_table: target not table')\n\ end\n\ if source == nil then\n\ return target\n\ end\n\ if type(source) ~= 'table' then \n\ error('extend_table: source not table')\n\ end\n\ if source == target then\n\ error('extend_table: source == target')\n\ end\n\ if deep then\n\ return extend_table_r(target, source)\n\ else \n\ for k,v in pairs(source) do\n\ target[k]=v\n\ end\n\ return target\n\ end\n\ end\n" #define PTP_CHDK_LUA_MSG_BATCHER \ PTP_CHDK_LUA_SERIALIZE_MSGS \ PTP_CHDK_LUA_EXTEND_TABLE \ "function msg_batcher(opts)\n\ local t = extend_table({\n\ batchsize=50,\n\ batchgc='step',\n\ timeout=100000,\n\ },opts)\n\ t.data={}\n\ t.n=0\n\ if t.dbgmem then\n\ t.init_free = get_meminfo().free_block_max_size\n\ t.init_count = collectgarbage('count')\n\ end\n\ t.write=function(self,val)\n\ self.n = self.n+1\n\ self.data[self.n]=val\n\ if self.n >= self.batchsize then\n\ return self:flush()\n\ end\n\ return true\n\ end\n\ t.flush = function(self)\n\ if self.n > 0 then\n\ if self.dbgmem then\n\ local count=collectgarbage('count')\n\ local free=get_meminfo().free_block_max_size\n\ self.data._dbg=string.format(\"count %%d (%%d) free %%d (%%d)\",\n\ count, count - self.init_count, free, self.init_free-free)\n\ end\n\ if not write_usb_msg(self.data,self.timeout) then\n\ return false\n\ end\n\ self.data={}\n\ self.n=0\n\ if self.batchgc then\n\ collectgarbage(self.batchgc)\n\ end\n\ if self.batchpause then\n\ sleep(self.batchpause)\n\ end\n\ end\n\ return true\n\ end\n\ return t\n\ end\n" #define PTP_CHDK_LUA_LS_SIMPLE \ PTP_CHDK_LUA_MSG_BATCHER \ "function ls_simple(path)\n\ local b=msg_batcher()\n\ local t,err=os.listdir(path)\n\ if not t then\n\ return false,err\n\ end\n\ for i,v in ipairs(t) do\n\ if not b:write(v) then\n\ return false\n\ end\n\ end\n\ return b:flush()\n\ end\n" #define PTP_CHDK_LUA_JOINPATH \ "function joinpath(...)\n\ local parts={...}\n\ if #parts < 2 then\n\ error('joinpath requires at least 2 parts',2)\n\ end\n\ local r=parts[1]\n\ for i = 2, #parts do\n\ local v = string.gsub(parts[i],'^/','')\n\ if not string.match(r,'/$') then\n\ r=r..'/'\n\ end\n\ r=r..v\n\ end\n\ return r\n\ end\n" #define PTP_CHDK_LUA_LS \ PTP_CHDK_LUA_MSG_BATCHER \ PTP_CHDK_LUA_JOINPATH \ "function ls_single(opts,b,path,v)\n\ if not opts.match or string.match(v,opts.match) then\n\ if opts.stat then\n\ local st,msg=os.stat(joinpath(path,v))\n\ if not st then\n\ return false,msg\n\ end\n\ if opts.stat == '/' then\n\ if st.is_dir then\n\ b:write(v .. '/')\n\ else\n\ b:write(v)\n\ end\n\ elseif opts.stat == '*' then\n\ st.name=v\n\ b:write(st)\n\ end\n\ else\n\ b:write(v)\n\ end\n\ end\n\ return true\n\ end\n\ \n\ function ls(path,opts_in)\n\ local opts={\n\ msglimit=50,\n\ msgtimeout=100000,\n\ dirsonly=true\n\ }\n\ if opts_in then\n\ for k,v in pairs(opts_in) do\n\ opts[k]=v\n\ end\n\ end\n\ local st, err = os.stat(path)\n\ if not st then\n\ return false, err\n\ end\n\ \n\ local b=msg_batcher{\n\ batchsize=opts.msglimit,\n\ timeout=opts.msgtimeout\n\ }\n\ \n\ if not st.is_dir then\n\ if opts.dirsonly then\n\ return false, 'not a directory'\n\ end\n\ if opts.stat == '*' then\n\ st.name=path\n\ b:write(st)\n\ else\n\ b:write(path)\n\ end\n\ b:flush()\n\ return true\n\ end\n\ \n\ if os.idir then\n\ for v in os.idir(path,opts.listall) do\n\ local status,err=ls_single(opts,b,path,v)\n\ if not status then\n\ return false, err\n\ end\n\ end\n\ else\n\ local t,msg=os.listdir(path,opts.listall)\n\ if not t then\n\ return false,msg\n\ end\n\ for i,v in ipairs(t) do\n\ local status,err=ls_single(opts,b,path,v)\n\ if not status then\n\ return false, err\n\ end\n\ end\n\ end\n\ b:flush()\n\ return true\n\ end\n" #define PTP_CHDK_LUA_RLIB_SHOOT_COMMON \ "function rlib_shoot_init_exp(opts) \n\ if opts.tv then\n\ set_tv96_direct(opts.tv)\n\ end\n\ if opts.sv then\n\ set_sv96(opts.sv)\n\ end\n\ if opts.svm then\n\ if type(sv96_market_to_real) ~= 'function' then\n\ error('svm not supported')\n\ end\n\ set_sv96(sv96_market_to_real(opts.svm))\n\ end\n\ if opts.isomode then\n\ set_iso_mode(opts.isomode)\n\ end\n\ if opts.av then\n\ set_av96_direct(opts.av)\n\ end\n\ if opts.nd then\n\ set_nd_filter(opts.nd)\n\ end\n\ if opts.sd then\n\ set_focus(opts.sd)\n\ end\n\ end\n" #define PTP_CHDK_LUA_RLIB_SHOOT \ PTP_CHDK_LUA_RLIB_SHOOT_COMMON \ "function rlib_shoot(opts)\n\ local rec,vid = get_mode()\n\ if not rec then\n\ return false,'not in rec mode'\n\ end\n\ \n\ rlib_shoot_init_exp(opts)\n\ \n\ local save_raw\n\ if opts.raw then\n\ save_raw=get_raw()\n\ set_raw(opts.raw)\n\ end\n\ local save_dng\n\ if opts.dng then\n\ save_dng=get_config_value(226)\n\ set_config_value(226,opts.dng)\n\ end\n\ shoot()\n\ local r\n\ if opts.info then\n\ r = {\n\ dir=get_image_dir(),\n\ exp=get_exp_count(),\n\ raw=(get_raw() == 1),\n\ }\n\ if r.raw then\n\ r.raw_in_dir = (get_config_value(35) == 1)\n\ r.raw_pfx = get_config_value(36)\n\ r.raw_ext = get_config_value(37)\n\ r.dng = (get_config_value(226) == 1)\n\ if r.dng then\n\ r.use_dng_ext = (get_config_value(234) == 1)\n\ end\n\ end\n\ else\n\ r=true\n\ end\n\ if save_raw then\n\ set_raw(save_raw)\n\ end\n\ if save_dng then\n\ set_config_value(226,save_dng)\n\ end\n\ return r\n\ end\n" // bit flags for script start #define PTP_CHDK_SCRIPT_FL_NOKILL 0x100 // if script is running return error instead of killing #define PTP_CHDK_SCRIPT_FL_FLUSH_CAM_MSGS 0x200 // discard existing cam->host messages before starting #define PTP_CHDK_SCRIPT_FL_FLUSH_HOST_MSGS 0x400 // discard existing host->cam messages before starting // bit flags for script status #define PTP_CHDK_SCRIPT_STATUS_RUN 0x1 // script running #define PTP_CHDK_SCRIPT_STATUS_MSG 0x2 // messages waiting // bit flags for scripting support #define PTP_CHDK_SCRIPT_SUPPORT_LUA 0x1 // bit flags for remote capture // used to select and also to indicate available data in PTP_CHDK_RemoteCaptureIsReady /* Full jpeg file. Note supported on all cameras, use Lua get_usb_capture_support to check */ #define PTP_CHDK_CAPTURE_JPG 0x1 /* Raw framebuffer data, in camera native format. A subset of rows may be requested in init_usb_capture. */ #define PTP_CHDK_CAPTURE_RAW 0x2 /* DNG header. The header will be DNG version 1.3 Does not include image data, clients wanting to create a DNG file should also request RAW Raw data for all known cameras will be packed, little endian. Client is responsible for reversing the byte order if creating a DNG. Can requested without RAW to get sensor dimensions, exif values etc. ifd 0 specifies a 128x96 RGB thumbnail, 4 byte aligned following the header client is responsible for generating thumbnail data. ifd 0 subifd 0 specifies the main image The image dimensions always contain the full sensor dimensions, if a sub-image was requested with init_usb_capture, the client is responsible for padding the data to the full image or adjusting dimensions. Bad pixels will not be patched, but DNG opcodes will specify how to patch them */ #define PTP_CHDK_CAPTURE_DNGHDR 0x4 // status from PTP_CHDK_RemoteCaptureIsReady if capture not enabled #define PTP_CHDK_CAPTURE_NOTSET 0x10000000 // message types enum ptp_chdk_script_msg_type { PTP_CHDK_S_MSGTYPE_NONE = 0, // no messages waiting PTP_CHDK_S_MSGTYPE_ERR, // error message PTP_CHDK_S_MSGTYPE_RET, // script return value PTP_CHDK_S_MSGTYPE_USER, // message queued by script // TODO chdk console data ? }; // error subtypes for PTP_CHDK_S_MSGTYPE_ERR and script startup status enum ptp_chdk_script_error_type { PTP_CHDK_S_ERRTYPE_NONE = 0, PTP_CHDK_S_ERRTYPE_COMPILE, PTP_CHDK_S_ERRTYPE_RUN, // the following are for ExecuteScript status only, not message types PTP_CHDK_S_ERR_SCRIPTRUNNING = 0x1000, // script already running with NOKILL }; // message status enum ptp_chdk_script_msg_status { PTP_CHDK_S_MSGSTATUS_OK = 0, // queued ok PTP_CHDK_S_MSGSTATUS_NOTRUN, // no script is running PTP_CHDK_S_MSGSTATUS_QFULL, // queue is full PTP_CHDK_S_MSGSTATUS_BADID, // specified ID is not running }; #endif // __CHDK_PTP_H libgphoto2-2.5.9/camlibs/ptp2/PTPIP.TXT0000644000175000001440000001073412561423351014320 00000000000000This briefly describes the PTP/IP transfer layer. (It was reverse engineered from a ethereal network packet dump.) The connections are simple TCP/IP socket connection. Default port is 15740 (same as the ISO number for PTP). There are 2 connections used: - control & data connection (initiator (computer) driven) - event connection (responder (camera) driven) The participants communicate in packets, their layout is: 4 byte length (little endian) 4 byte type (little endian) length - 8 byte data (type specific) Type: 1 - (to ) Init_Command_Request 2 - (from) Init_Command_Ack 3 - (to ) Init_Event_Request 4 - (from) Init_Event_Ack 5 - (from) Init_Fail 6 - (to ) Cmd_Request 7 - (from) Cmd_Response 8 - (from) Event 9 - (both) Start_Data_Packet a - (both) Data_Packet b - (to ) Cancel_Transaction c - (from) End_Data_Packet d - (to ) Ping e - (from) Pong State transitions: Initial Phase: Command Connection: 1 (initiator) -> 2 -> PTP traffic \> 5 -> exit Event Connection: 3 (initiator) -> 4 -> EVEN traffic \ 5 -> exit PTP Traffic: START -> 6 -> 7 -> START \ 9 -> A/C -> 7 -> START EVENT Traffic: START -> 8 -> START (EVENT) \ 13 -> 14 -> START (PING/PONG) The packet types are: TYPE 1 (Init_Command_Request) payload sizeof(GUID)+(1+lstrlenW(computername))*sizeof(WCHAR) bytes 16 byte GUID xx byte WCHAR computername with terminating \0 => Can be followed by type 2 or type 5. TYPE 2 (Init_Command_Ack) payload 4+sizeof(GUID)+(1+lstrlenW(cameraname))*sizeof(WCHAR) bytes. 4 byte ID (session id, to be used for event startup) 16 byte GUID (MAC is used here for my camera, and repeated) xx byte WCHAR Camera Name with terminating \0 TYPE 3 (Init_Event_Request) payload 4 bytes. 4 byte ID (from Init_Command_Ack) => Can get type 4 or type 5 reply. TYPE 4 (Init_Event_Ack) No payload. You can start sending PTP traffic now. TYPE 5 (Init_Fail) payload 4 byte. 4 byte error code (unclear meaning) -> might mean busy / access denied. TYPE 6 (Cmd_Request): payload n bytes. 2 bytes PTP command n bytes command arguments May be followed by 0x9 (data reader/data sender) Will be followed then by 0x7 (PTP response) TYPE 7 (Cmd_Response): payload 6 - 26 bytes 2 bytes PTP response code 4 bytes nr of arguments nr*4 bytes arguments TYPE 8 (Event) length 14 - 26 2 byte event code ptp event specific data.. TYPE 9 (Start_Data_Packet): 8 byte payload. 4 byte number 4 byte download size (without 0e/0a blob size) can be followed by 0e, 0a, 0c TYPE 10 (Data_Packet): 4 byte payload. 4 byte xid (transaction id?) TYPE 11 (Cancel_Transaction): 12 byte 4 length 4 type 4 -> Gets 0x7 ack back. TYPE 12 (End_Data_Packet): 4 byte payload. 4 byte xid (transaction id?) TYPE 13 (Ping 0 byte payload. TYPE 14 (Pong) 0 byte payload. PTP READ DATA: (type can be: 0A, 0C, 07(response)) 0A, 0C: packetlen < 12 -> error Profile creation packet (USB) ----------------------------- 0x00 BYTE Version (0x64) 0x01 0x00 UINT32 length (always 16+1, as 16 is the maximum profilename length) 0x05 0x04 BYTE profilename[length] 0x16 BYTE DisplayOrder (always 00) 0x17 BYTE DeviceType 0 - Computer 1 - Printer 0x18 BYTE IconType (at least 01 is a valid value) 0x19 0x00 BYTE length_in_characters (always 0x10 == 0x20 bytes : 4(Year) + 2(Month) + 2(Day) + 1('T') + 2(Hour) + 2(Minute) + 2(Second) + 1('\0') = 16) 0x1A 0x01 UINT16 timestr[length_in_characters] 0x3A INT32 IPAddress 0x3E BYTE SubnetMask (1 byte only? first byte) 0x3F INT32 Gateway 0x43 BYTE AddressSetting 0 Manual 2 DHCP in ad-hoc mode : Pick a random address in 169.254.1.* (check with several ARP requests that no one use this address) 3 DHCP in managed mode : Send a standard DHCP request, if it gets no answer, switch to mode 2 0x44 BYTE AccessMode 0 Managed/Infrastructure 1 Ad-Hoc Mode 0x45 BYTE Channel 0x46 0x00 UINT32 length (always 32+1, maximum Wifi essid length) 0x4A 0x04 BYTE SSID[length] 0x6B BYTE Authentication 0 Open (?) 1 Shared 2 WPA-PSK 0x6C BYTE Encryption 0 None (?) 1 WEP 64 bits 2 WEP 128 bits 3 TKIP 0x6D 0x00 UINT32 length (always 64, whatever the key size is) 0x71 0x04 BYTE EncryptionKey[length] 0xB1 BYTE EncryptionKeyNr 0xB2 BYTE MachineGUID[0x10] 0xC2 UINT16 Encryption key length in bytes 0x0005 for WEP64, 0x000d for WEP128 libgphoto2-2.5.9/camlibs/ptp2/TESTPLAN.ptp20000644000175000001440000001201212610415510015044 00000000000000Testplan ptp2 driver (Card capture with 16MB reference SD card.) Canon Powershot series (currently: Powershot SX100IS) time gphoto2 -L UNTESTED --capture-image-and-download - via SDRAM (capturetarget=0): TODO - via Card (capturetarget=1): TODO - Card configured, but not inserted (capturetarget=1) TODO --capture-image-and-download -F 3 -I 5 - via SDRAM (capturetarget=0): TODO - via Card (capturetarget=1): TODO - Card configured, but not inserted (capturetarget=1) TODO time gphoto2 --capture-image-and-download -F 5 -I 1 TODO - via SDRAM (capturetarget=0) approx 19-20 seconds 2.4.11 baseline 16.75-17 seconds 2.4.12 - via CARD (capturetarget=1) approx 28.6 seconds 2.4.11 baseline approx 26-28 seconds 2.4.12 --capture-preview commandline tool TODO gtkam TODO (gtkam brokenness) mixed with --capture-image-and-download TODO --capture-movie=10s TODO --list-config TODO "capture option" TODO --get-config capture --set-config capture=1 --get-config capture --set-config capture=0 --get-config capture "zoom" and /other/ config tree value TODO --get-config zoom --set-config zoom=20 --get-config zoom --get-config d02a --set-config d02a=10 --get-config d02a "ownername" TODO --get-config ownername --set-config ownername="Markus Meissner" --get-config ownername --set-config ownername="Marcus Meissner" --get-config d402 TODO (no string settable for the SX100IS) Canon EOS series (currently: Canon EOS 1000D) time gphoto2 -L UNTESTED --capture-image-and-download - via SDRAM (capturetarget=0) - JPEG TODO - JPEG + RAW TODO - RAW TODO - via Card (SD) (capturetarget=1) - JPEG TODO - JPEG + RAW TODO - RAW TODO --capture-image-and-download -F 3 -I 5 - via SDRAM (capturetarget=0) - JPEG TODO - JPEG + RAW TODO - RAW TODO - via Card (capturetarget=1) - JPEG TODO - JPEG + RAW TODO - RAW TODO time gphoto2 --capture-image-and-download -F 5 -I 1 - via SDRAM (capturetarget=0) real 12.3s 2.4.11 baseline real 11.1s 2.4.12 new baseline - via CARD (capturetarget=1) real 29.8s,30.5s 2.4.11 baseline real 30.4s 2.4.12 --capture-preview commandline tool TODO gtkam TODO ? mixed with --capture-image-and-download TODO --capture-movie=10s TODO --wait-event-and-download - JPEG TODO --set-config capturetarget=0 --set-config capturetarget=1 - JPEG + RAW TODO --set-config capturetarget=0 --set-config capturetarget=1 --list-config TODO "imageformat" TODO --get-config imageformat=0 --get-config imageformat --set-config imageformat=6 --get-config imageformat "ownername" TODO --get-config ownername --set-config ownername="Marcus Meissner" --get-config ownername Nikon DSLR series (currently: Nikon D90) time gphoto2 -L UNTESTED --capture-image-and-download - via SDRAM (capturetarget=0) - JPEG PASS - JPEG + RAW PASS - via Card (SD) (capturetarget=1) - JPEG PASS - JPEG + RAW PASS - no SD card inserted, capturetarget=0 - JPEG FAIL/IGNORE (correct error) - JPEG + RAW FAIL/IGNORE (correct error) --capture-image-and-download -F 3 -I 5 - via SDRAM (capturetarget=0) - JPEG PASS - JPEG + RAW PASS (but not in correct order, JPGs are behind/IGNORE) - via Card (capturetarget=1) - JPEG PASS - JPEG + RAW PASS - no SD card insert, capturetarget=0 - JPEG FAIL/IGNORE (correct error) - JPEG + RAW FAIL/IGNORE (correct error) time gphoto2 --capture-image-and-download -F 5 -I 1 - via SDRAM (capturetarget=0) - FAIL (endless repeat) - via CARD (capturetarget=1) - real 32.7 libgphoto2 2.4.11 baseline --capture-preview commandline tool TODO/CHECK - First image is always plain white :( gtkam TODO/CHECK (but no image capture possible) mixed with --capture-image-and-download - SDRAM mode TODO - Card mode TODO/IGNORE (returns PTP Device Busy) --capture-movie=10s TODO --wait-event-and-download - JPEG TODO --set-config capturetarget=0 --set-config capturetarget=1 - JPEG + RAW TODO --set-config capturetarget=0 --set-config capturetarget=1 --list-config TODO "imagecommentenable", also in /other/ tree TODO --get-config imagecommentenable --set-config imagecommentenable=An --get-config imagecommentenable --get-config d091 --set-config d091=0 --get-config d091 --set-config d091=1 "imagecomment" , also in /other/ tree TODO --get-config imagecomment --set-config imagecomment="Marcus Meissner" --get-config imagecomment --get-config d090 --set-config d090="Markus Meissner" --get-config d090 --set-config d090="Marcus Meissner" Samsung Galaxy S2 -- gphoto2 -L TODO libgphoto2-2.5.9/camlibs/sierra/0000755000175000001440000000000012623156267013506 500000000000000libgphoto2-2.5.9/camlibs/sierra/sierra-desc.h0000644000175000001440000001217112610415536015773 00000000000000/* sierra_desc.h: * * Copyright 2002 Patrick Mansfield * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* * Define a set of structures to describe the register layouts of a * digital camera, based on the Nikon Coolpix 880 (sierra). Only camera * configuration/settings are handled here. * * The lowest level structs are first, followed by the higher levels. * * These structures can't be in one single struct, since they are variable * length, and each level has a slightly different set of functionallity. * * Generally, we have a CameraRegisterSetType with pointers to * CameraRegisterType registers; each register in turn has pointers to * RegisterDescriptorType's; each RegisterDescriptorType has pointers to * ValueNameType's; the ValueNameType is a value and corresponding * description (string). */ #ifndef __SIERRA_DESC_H__ #define __SIERRA_DESC_H__ #define SIZE_ADDR(type, var) (sizeof(var)/sizeof(type)), (type*) var #define VAL_NAME_INIT(name) \ SIZE_ADDR(ValueNameType, name) #define CAM_REG_TYPE_INIT(prefix, reg, rsize, get_set, action) \ { reg, rsize, 0, { get_set, action }, \ SIZE_ADDR(RegisterDescriptorType, prefix##_reg_##reg), \ } #define GP_REG_NO_MASK ~0 /* XXX long or int or ? */ typedef enum { CAM_DESC_DEFAULT, /* use standard sierra get/set int/string functions, depending on reg_len */ CAM_DESC_SUBACTION, /* use standard get int/string, but use the sierr_sub_action to set values */ } RegGetSetType; typedef struct { RegGetSetType method; int action; /* if we are CAM_DESC_ACTION, the action to use. * The sub-action is stored in the name-value * field. This is probably not good enough for the * standard action (calling sierra_action versus * calling sierra_sub_action). */ } GetSetType; typedef struct { union { /* * The register value masked with regs_mask gives the * register value to compare or use here. Register values * are always int, and must be converted to/from float for * range values. The proper value to user here is based * on the reg_len size and the reg_widget_type. * * For fields like the exp compensation, or the zoom, * where the first x bytes are used, and it looks like the * rest are a fixed value: just mask them out, and use the * values read from the camera. */ int64_t value; /* GP_WIDGET_RADIO */ float range[3]; /* GP_WIDGET_RANGE these are min/max/stepping; if stepping is zero, a stepping of one is used. */ CameraWidgetCallback callback; /* GP_WIDGET_BUTTON */ } u; /* * Range uses no name - the name is implicitly the value. XXX Move name * up into a struct with value. */ char *name; /* name matching the value */ } ValueNameType; typedef struct { CameraWidgetType reg_widget_type; uint32_t regs_mask; char *regs_short_name; /* for command line use */ char *regs_long_name; /* for gui/curses use */ uint32_t reg_val_name_cnt; /* number of regs_value_names entries */ ValueNameType *regs_value_names; /* list of reg value/names */ } RegisterDescriptorType; /* * XXX check usage of reg_value, maybe change it to char x[8], and * normally type cast its usage. */ typedef struct { uint32_t reg_number; /* register number */ uint32_t reg_len; /* size in bytes of data at register */ uint64_t reg_value; /* stored value, has no valid initial value; * The size would have to be increased, or * this space must be allocated for * register values longer than 8 bytes. */ GetSetType reg_get_set; uint32_t reg_desc_cnt; /* number of reg_desc entries */ RegisterDescriptorType *reg_desc; /* list of reg descriptors */ } CameraRegisterType; typedef struct CameraRegisterSet { char *window_name; uint32_t reg_cnt; CameraRegisterType *regs; } CameraRegisterSetType; typedef struct CameraDesc { const CameraRegisterSetType *regset; const char * const manual; const SierraFlags flags; } CameraDescType; /* * oly-desc.c: */ extern const CameraDescType sierra_default_cam_desc; extern const CameraDescType olysp500uz_cam_desc; extern const CameraDescType oly750uz_cam_desc; extern const CameraDescType oly3040_cam_desc; extern const CameraDescType oly3000z_cam_desc; /* * nikon-desc.c: */ extern const CameraDescType cp880_cam_desc; extern const CameraDescType cp995_cam_desc; extern const CameraDescType cp2500_cam_desc; extern const CameraDescType cp4300_cam_desc; /* * epson-desc.c: */ extern const CameraDescType ep3000z_cam_desc; #endif /* __SIERRA_DESC_H__ */ libgphoto2-2.5.9/camlibs/sierra/PROTOCOL0000644000175000001440000000315412557123324014607 00000000000000For further information , see http://photopc.sourceforge.net/protocol.html. register interpretation --------------------------------------------------------------------------- 1 resolution 2 date (seconds since 1/1/1970) 3 shutter speed 4 current image number 5 aperture 6 color mode 7 flash mode 8 9 10 frames taken 11 frames left 12 size of current image 13 size of thumbnail of current image 14 (s) current preview (captured) 15 16 battery life 17 speed 18 19 brightness/contrast 20 white balance 21 22 (s) camera id 23 auto off (host) 24 auto off (field) 25 (s) serial number 26 (s) software revision 27 28 memory left 29 (s) upload data here 30 31 32 set to 0x0FEC000E before uploading a file 33 lens mode 34 35 lcd brightness 36 37 38 lcd auto off 70 spot metering mode 72 zoom (0 = 1x, 8 = 2x, 520 = 1.6x, 1032 = 2.5x) 79 (s) current filename 83 number of folders in current folder current folder number 84 (s) current folder name actions interpretation --------------------------------------------------------------------- 00 yy zz... set int register to value zz... 01 yy get int register yy 02 01 00 delete all 02 02 00 capture image 02 03 00 02 04 00 end session 02 05 00 capture preview 02 06 00 02 07 00 delete 02 08 00 02 09 00 02 10 00 02 11 00 02 12 00 02 13 00 02 14 00 02 15 00 02 16 00 02 17 00 upload file (after writing the file into register) 03 yy zz... set string register yy to value zz... 04 yy get string register yy 06 yy get string register yy using 32k packets (USB, extended protocol) libgphoto2-2.5.9/camlibs/sierra/library.c0000644000175000001440000012112112610415536015225 00000000000000/* library.c * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include "library.h" #include #include #include #include #include #include #include #include "sierra.h" #include "sierra-usbwrap.h" #define GP_MODULE "sierra" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif enum _SierraPacket { NUL = 0x00, SIERRA_PACKET_DATA = 0x02, SIERRA_PACKET_DATA_END = 0x03, SIERRA_PACKET_ENQ = 0x05, ACK = 0x06, SIERRA_PACKET_INVALID = 0x11, SIERRA_PACKET_NAK = 0x15, SIERRA_PACKET_COMMAND = 0x1b, SIERRA_PACKET_WRONG_SPEED = 0x8c, SIERRA_PACKET_SESSION_ERROR = 0xfc, SIERRA_PACKET_SESSION_END = 0xff }; typedef enum _SierraPacket SierraPacket; /* Size of requested packet */ #define SIERRA_PACKET_SIZE 32774 /* Sub-types */ #define SUBSIERRA_PACKET_COMMAND_FIRST 0x53 #define SUBSIERRA_PACKET_COMMAND 0x43 /* Maximum length of the data field within a packet */ #define MAX_DATA_FIELD_LENGTH 2048 #define RETRIES 10 #define QUICKSLEEP 5 int sierra_change_folder (Camera *camera, const char *folder, GPContext *context) { int st = 0, i; char target[128]; GP_DEBUG ("*** sierra_change_folder"); GP_DEBUG ("*** folder: %s", folder); /* * Do not issue the command if the camera doesn't support folders * or if the folder is the current working folder */ if (!camera->pl->folders || !strcmp (camera->pl->folder, folder)) return GP_OK; /* We will later need a path ending with '/'. */ memset (target, 0, sizeof (target)); if (folder[0]) strncpy (target, folder, sizeof (target) - 1); if (target[strlen (target) - 1] != '/') strcat (target, "/"); /* If the given path is absolute, we need to start in '/'. */ if (target[0] == '/') { CHECK (sierra_set_string_register (camera, 84, "\\", 1, context)); i = 1; } else i = 0; st = i; for (; target[i]; i++) { if (target[i] == '/') { target[i] = '\0'; if (st == i - 1) break; CHECK (sierra_set_string_register (camera, 84, target + st, strlen (target + st), context)); st = i + 1; target[i] = '/'; } } strcpy (camera->pl->folder, folder); return GP_OK; } int sierra_list_files (Camera *camera, const char *folder, CameraList *list, GPContext *context) { int count, i, r; unsigned int len = 0; char filename[1024]; GP_DEBUG ("Listing files in folder '%s'", folder); /* * This is a non-fatal check if a memory card is present. Some * cameras don't understand this command and error out here. * Since some cameras do not like it at all, do not send it for those. */ if (!(camera->pl->flags & SIERRA_NO_51)) { r = sierra_get_int_register (camera, 51, &i, NULL); if ((r >= 0) && (i == 1)) { gp_context_error (context, _("No memory card present")); return GP_ERROR_NOT_SUPPORTED; } } /* We need to change to the folder first */ CHECK (sierra_change_folder (camera, folder, context)); /* Then, we count the files */ GP_DEBUG ("Counting files in '%s'...", folder); CHECK (sierra_get_int_register (camera, 10, &count, context)); GP_DEBUG ("... done. Found %i file(s).", count); /* No files? Then, we are done. */ if (!count) return GP_OK; /* * Get the filename of the first picture. Note that some cameras * that don't support filenames return 8 blanks instead of * reporting an error. If this is indeed the case, just fill * the list with dummy entries and return. */ GP_DEBUG ("Getting filename of first file"); r = sierra_get_string_register (camera, 79, 1, NULL, (unsigned char *)filename, &len, context); if ((r < 0) || (len <= 0) || !strcmp (filename, " ")) { CHECK (gp_list_populate (list, "P101%04i.JPG", count)); return GP_OK; } /* * The camera supports filenames. Append the first one to the list * and get the remaining ones. */ CHECK (gp_list_append (list, filename, NULL)); for (i = 1; i < count; i++) { GP_DEBUG ("Getting filename of file %i...", i + 1); CHECK (sierra_get_string_register (camera, 79, i + 1, NULL, (unsigned char *)filename, &len, context)); if ((len <= 0) || !strcmp (filename, " ")) snprintf (filename, sizeof (filename), "P101%04i.JPG", i + 1); GP_DEBUG ("... done ('%s').", filename); CHECK (gp_list_append (list, filename, NULL)); } return GP_OK; } int sierra_list_folders (Camera *camera, const char *folder, CameraList *list, GPContext *context) { int j, count; unsigned int i, bsize; char buf[1024]; /* List the folders only if the camera supports them */ if (!camera->pl->folders) return GP_OK; CHECK (sierra_change_folder (camera, folder, context)); GP_DEBUG ("*** counting folders in '%s'...", folder); CHECK (sierra_get_int_register (camera, 83, &count, context)); GP_DEBUG ("*** found %i folders", count); for (i = 0; i < count; i++) { CHECK (sierra_change_folder (camera, folder, context)); CHECK (sierra_set_int_register (camera, 83, i + 1, context)); bsize = 1024; GP_DEBUG ("*** getting name of folder %i", i + 1); CHECK (sierra_get_string_register (camera, 84, 0, NULL, (unsigned char *)buf, &bsize, context)); /* Remove trailing spaces */ for (j = strlen (buf) - 1; j >= 0 && buf[j] == ' '; j--) buf[j] = '\0'; gp_list_append (list, buf, NULL); } return GP_OK; } /** * sierra_get_picture_folder: * @camera : camera data stucture * @folder : folder name (to be freed by the caller) * * Return the name of the folder that stores pictures. It is assumed that * the camera conforms with the JEIDA standard. Thus, look for the picture * folder into the /DCIM directory. * * Returns: a gphoto2 error code */ int sierra_get_picture_folder (Camera *camera, char **folder) { int i; CameraList *list; const char *name = NULL; GP_DEBUG ("* sierra_get_picture_folder"); *folder = NULL; /* If the camera does not support folders, the picture folder is the root folder */ if (!camera->pl->folders) { *folder = (char*) calloc(2, sizeof(char)); strcpy(*folder, "/"); return GP_OK; } CHECK (gp_list_new (&list)); /* It is assumed that the camera conforms with the JEIDA standard . Thus, look for the picture folder into the /DCIM directory */ CHECK (gp_filesystem_list_folders (camera->fs, "/DCIM", list, NULL) ); for(i=0 ; i < gp_list_count (list) ; i++) { CHECK (gp_list_get_name (list, i, &name) ); GP_DEBUG ("* check folder %s", name); if (isdigit(name[0]) && isdigit(name[1]) && isdigit(name[2])) break; name = NULL; } if (name) { *folder = (char*) calloc(strlen(name)+7, sizeof(char)); strcpy(*folder, "/DCIM/"); strcat(*folder, name); gp_list_free (list); return GP_OK; } else { gp_list_free (list); return GP_ERROR_DIRECTORY_NOT_FOUND; } } /** * sierra_check_battery_capacity: * @camera : camera data stucture * * Check if the battery capacity is high enough. * * Returns: a gphoto2 error code */ int sierra_check_battery_capacity (Camera *camera, GPContext *context) { int ret, capacity; GP_DEBUG ("* sierra_check_battery_capacity"); if ((ret = sierra_get_int_register(camera, 16, &capacity, context)) != GP_OK) { gp_context_error (context, _("Cannot retrieve the battery capacity")); return ret; } if (!capacity) /* 0% is unlikely */ return GP_OK; if (capacity < 5) { gp_context_error (context, _("The battery level of the camera is too low (%d%%). " "The operation is aborted."), capacity); return GP_ERROR; } return GP_OK; } /** * sierra_get_memory_left: * @camera : camera data stucture * @memory : memory left * * Provide the available memory left * * Returns: a gphoto2 error code */ int sierra_get_memory_left (Camera *camera, int *memory, GPContext *context) { int ret; ret = sierra_get_int_register (camera, 28, memory, context); if (ret < 0) { gp_context_error (context, _("Cannot retrieve the available " "memory left")); return ret; } return GP_OK; } static int sierra_check_connection (Camera *camera, GPContext *context) { int r = 0, ret, timeout; unsigned char c; /* Only serial cameras close the connection after some timeout. */ if (camera->port->type != GP_PORT_SERIAL) return GP_OK; GP_DEBUG ("Checking if connection is still open"); while (1) { /* * Do like the Windows driver - check for 20ms if something * has been sent by the camera. */ CHECK (gp_port_get_timeout (camera->port, &timeout)); CHECK (gp_port_set_timeout (camera->port, 20)); ret = gp_port_read (camera->port, (char *)&c, 1); CHECK (gp_port_set_timeout (camera->port, timeout)); switch (ret) { case GP_ERROR_TIMEOUT: case GP_ERROR_IO_READ: /* * If we got GP_ERROR_TIMEOUT or GP_ERROR_IO_READ, * everything's just fine. */ return GP_OK; default: /* * If any error (except timeout) has occurred, * report it. */ CHECK (ret); } /* * We have received something. This is not good. Check if * the camera has closed the connection and told us about * that by sending SIERRA_PACKET_SESSION_END. */ if (c == SIERRA_PACKET_SESSION_END) { if (++r > 2) { gp_context_error (context, _("Camera refused " "3 times to keep a connection open.")); return GP_ERROR; } CHECK (sierra_init (camera, context)); CHECK (sierra_set_speed (camera, SIERRA_SPEED_19200, context)); continue; } /* * The camera sends us unexpected data. Dump it and assume * that everything's just fine. */ while (gp_port_read (camera->port, (char *)&c, 1) >= 0); return GP_OK; } } static int sierra_write_packet (Camera *camera, char *packet, GPContext *context) { int x, checksum=0, length; CHECK (sierra_check_connection (camera, context)); /* * We need to check if this is the first packet. Note that USB * cameras don't care. */ switch (packet[0]) { case SIERRA_PACKET_COMMAND: switch (camera->port->type) { case GP_PORT_SERIAL: packet[1] = (camera->pl->first_packet ? SUBSIERRA_PACKET_COMMAND_FIRST : SUBSIERRA_PACKET_COMMAND); camera->pl->first_packet = 0; break; default: packet[1] = SUBSIERRA_PACKET_COMMAND; break; } break; default: break; } /* Determing packet length */ if ((packet[0] == SIERRA_PACKET_COMMAND) || (packet[0] == SIERRA_PACKET_DATA) || (packet[0] == SIERRA_PACKET_DATA_END)) { length = ((unsigned char)packet[2]) + ((unsigned char)packet[3] * 256); length += 6; } else { length = 1; } /* Generate the checksum */ if (length > 1) { for (x = 4; x < length - 2; x++) checksum += (unsigned char)packet[x]; packet[length-2] = checksum & 0xff; packet[length-1] = (checksum >> 8) & 0xff; } if (camera->pl->flags & SIERRA_WRAP_USB_MASK) { CHECK (usb_wrap_write_packet (camera->port, (camera->pl->flags & SIERRA_WRAP_USB_MASK), packet, length)); } else { CHECK (gp_port_write (camera->port, packet, length)); } return GP_OK; } static int sierra_clear_usb_halt(Camera *camera) { if ( (camera->port->type == GP_PORT_USB) && !(camera->pl->flags & SIERRA_WRAP_USB_MASK) && !(camera->pl->flags & SIERRA_NO_USB_CLEAR) ) gp_port_usb_clear_halt(camera->port, GP_PORT_USB_ENDPOINT_IN); return (GP_OK); } static int sierra_write_nak (Camera *camera, GPContext *context) { char buf[4096]; int ret; GP_DEBUG ("* sierra_write_nack"); buf[0] = SIERRA_PACKET_NAK; ret = sierra_write_packet (camera, buf, context); sierra_clear_usb_halt(camera); return (ret); } /** * sierra_read_packet: * @camera : camera data stucture * @packet : to return the read packet * * Read a data packet from the camera. * * Method: * Two kinds of packet may be received from the camera : * - either single byte length packet, * - or several byte length packet. * * Structure of the several byte length packet is the following : * Offset Length Meaning * 0 1 Packet type * 1 1 Packet subtype/sequence * 2 2 Length of data * 4 variable Data * -2 2 Checksum * * The operation is successful when the packet is recognised * and is completely retrieved without IO errors. * * Returns: error code * - GP_OK if the operation is successful (see description), * - GP_ERROR_UNKNOWN_PORT if no port was specified within * the camera data structure, * - GP_ERROR_CORRUPTED_DATA if the received data are invalid, * - GP_ERROR_IO_* on other IO error. */ static int sierra_read_packet (Camera *camera, unsigned char *packet, GPContext *context) { int result; unsigned int i, c, r = 0, length, blocksize = 1, br; GP_DEBUG ("Reading packet..."); switch (camera->port->type) { case GP_PORT_USB_SCSI: case GP_PORT_USB: blocksize = SIERRA_PACKET_SIZE; break; case GP_PORT_SERIAL: blocksize = 1; break; default: return (GP_ERROR_UNKNOWN_PORT); } /* Try several times before leaving on error... */ while (1) { /* Clear the USB bus (what about the SERIAL bus : do we need to flush it?) */ sierra_clear_usb_halt(camera); /* * Read data through the bus. If an error occurred, * try again. */ if ((camera->port->type & (GP_PORT_USB_SCSI|GP_PORT_USB)) && (camera->pl->flags & SIERRA_WRAP_USB_MASK)) result = usb_wrap_read_packet (camera->port, (camera->pl->flags & SIERRA_WRAP_USB_MASK), (char *)packet, blocksize); else result = gp_port_read (camera->port, (char *)packet, blocksize); if (result < 0) { GP_DEBUG ("Read failed (%i: '%s').", result, gp_result_as_string (result)); if (++r > 2) { sierra_clear_usb_halt(camera); GP_DEBUG ("Giving up..."); return (result); } GP_DEBUG ("Retrying..."); continue; } if (result == 0) { GP_DEBUG ("Read got 0 bytes.."); if (++r > 2) { sierra_clear_usb_halt(camera); GP_DEBUG ("Giving up..."); return GP_ERROR_IO_READ; } GP_DEBUG ("Retrying..."); continue; } br = result; /* * If the first read byte is not known, * report an error and exit the processing. */ switch (packet[0]) { case NUL: case SIERRA_PACKET_ENQ: case ACK: case SIERRA_PACKET_INVALID: case SIERRA_PACKET_NAK: case SIERRA_PACKET_SESSION_ERROR: case SIERRA_PACKET_SESSION_END: case SIERRA_PACKET_WRONG_SPEED: /* Those are all single byte packets. */ sierra_clear_usb_halt(camera); GP_DEBUG ("Packet type 0x%02x read. Returning GP_OK.", packet[0]); return GP_OK; case SIERRA_PACKET_DATA: case SIERRA_PACKET_DATA_END: case SIERRA_PACKET_COMMAND: /* Those are packets with more than one byte. */ break; default: /* * This byte is not valid. Dump everything that * coming in. */ gp_context_error (context, _("The first byte " "received (0x%x) is not valid."), packet[0]); while (gp_port_read (camera->port, (char *)packet, 1) > 0) ; sierra_clear_usb_halt(camera); return (GP_ERROR_CORRUPTED_DATA); } /* * We've got a packet containing several bytes. * The data packet size is not known yet if the communication * is performed through the serial bus : read it then. */ if (br < 4) { result = gp_port_read (camera->port, (char *)packet + br, 4 - br); if (result < 0) { sierra_clear_usb_halt(camera); GP_DEBUG ("Could not read length of " "packet (%i: '%s'). Giving up...", result, gp_result_as_string (result)); return (result); } br += result; } /* * Determine the packet length: 2 for packet type and * subtype or sequence number, 2 for length, the actual * data, and 2 for the checksum. */ length = packet[2] + (packet[3] * 256) + 6; /* * Read until the end of the packet is reached * or an error occurred. */ while (br < length) { result = gp_port_read (camera->port, (char *)packet + br, length - br); if (result == GP_ERROR_TIMEOUT) { /* We will retry later on. */ GP_DEBUG ("Timeout!"); break; } else if (result < 0) { GP_DEBUG ("Could not read remainder of " "packet (%i: '%s'). Giving up...", result, gp_result_as_string (result)); return (result); } else br += result; } /* * If we have, at this point, received the full packet, * check the checksum. If the checksum is correct, we are * done. */ if (br == length) { for (c = 0, i = 4; i < br - 2; i++) c += packet[i]; c &= 0xffff; if (c == (packet[br - 2] + (packet[br - 1] * 256))) break; /* * At least the Nikon CoolPix 880 sets the checksum * always to 0xffff. In that case, we can't check it * and return successfully. */ if ((packet[br - 2] == 0xff) && (packet[br - 1] == 0xff)) break; /* * The checksum for the Toshiba PDR-M6X cameras is * almost always set to 0x00 0x00. */ if ((packet[br - 2] == 0x00) && (packet[br - 1] == 0x00)) break; GP_DEBUG ("Checksum wrong (calculated 0x%x, " "found 0x%x)!", c, packet[br - 2] + (packet[br - 1] * 256)); } /* * We will retry if we couldn't receive the full packet * (GP_ERROR_TIMEOUT) or if the checksum is wrong. */ r++; if (r + 1 >= RETRIES) { sierra_clear_usb_halt(camera); GP_DEBUG ("Giving up..."); return ((br == length) ? GP_ERROR_CORRUPTED_DATA : GP_ERROR_TIMEOUT); } GP_DEBUG ("Retrying..."); sierra_write_nak (camera, context); usleep (10 * 1000); } sierra_clear_usb_halt(camera); return GP_OK; } static int sierra_read_packet_wait (Camera *camera, char *buf, GPContext *context) { int result, r = 0; while (1) { if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); result = sierra_read_packet (camera, (unsigned char *)buf, context); if (result == GP_ERROR_TIMEOUT) { if (++r > 2) { gp_context_error (context, _("Transmission " "of packet timed out even after " "%i retries. Please contact " "%s."), r, MAIL_GPHOTO_DEVEL); return GP_ERROR; } GP_DEBUG ("Retrying..."); usleep (QUICKSLEEP * 1000); continue; } CHECK (result); GP_DEBUG ("Packet successfully read."); return GP_OK; } } static int sierra_transmit_ack (Camera *camera, char *packet, GPContext *context) { int r = 0, result; unsigned char buf[SIERRA_PACKET_SIZE]; while (1) { if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); /* Write packet and read the answer */ CHECK (sierra_write_packet (camera, packet, context)); buf[0] = 0; result = sierra_read_packet_wait (camera, (char *)buf, context); switch (result) { case GP_ERROR_CORRUPTED_DATA: if (++r > 2) { gp_context_error (context, _("Could not " "transmit packet even after several " "retries.")); return (result); } continue; default: CHECK (result); } switch (buf[0]) { case SIERRA_PACKET_ENQ: case ACK: GP_DEBUG ("Transmission successful."); return GP_OK; case SIERRA_PACKET_INVALID: gp_context_error (context, _("Packet was rejected " "by camera. Please contact " "%s."), MAIL_GPHOTO_DEVEL); return GP_ERROR; case SIERRA_PACKET_SESSION_END: case SIERRA_PACKET_SESSION_ERROR: case SIERRA_PACKET_WRONG_SPEED: if (++r > 2) { gp_context_error (context, _("Could not " "transmit packet even after several " "retries.")); return GP_ERROR; } /* * The camera has ended this session and * reverted the speed back to 19200. Reinitialize * the connection. */ CHECK (sierra_init (camera, context)); CHECK (sierra_set_speed (camera, SIERRA_SPEED_19200, context)); continue; default: if (++r > 2) { gp_context_error (context, _("Could not " "transmit packet (error code %i). " "Please contact " "%s."), buf[0], MAIL_GPHOTO_DEVEL); return GP_ERROR; } GP_DEBUG ("Did not receive ACK. Retrying..."); continue; } } } static int sierra_build_packet (Camera *camera, char type, char subtype, int data_length, char *packet) { packet[0] = type; switch (type) { case SIERRA_PACKET_COMMAND: /* sierra_write_packet will check for the first packet */ packet[1] = SUBSIERRA_PACKET_COMMAND; break; case SIERRA_PACKET_DATA: case SIERRA_PACKET_DATA_END: packet[1] = subtype; break; default: GP_DEBUG ("* unknown packet type!"); } packet[2] = data_length & 0xff; packet[3] = (data_length >> 8) & 0xff; return GP_OK; } static int sierra_write_ack (Camera *camera, GPContext *context) { char buf[4096]; int ret; GP_DEBUG ("Writing acknowledgement..."); buf[0] = ACK; ret = sierra_write_packet (camera, buf, context); sierra_clear_usb_halt(camera); CHECK (ret); GP_DEBUG ("Successfully wrote acknowledgement."); return GP_OK; } int sierra_init (Camera *camera, GPContext *context) { unsigned char buf[SIERRA_PACKET_SIZE], packet[4096]; int ret, r = 0; GPPortSettings settings; GP_DEBUG ("Sending initialization sequence to the camera"); /* Only serial connections need to be initialized. */ if (camera->port->type != GP_PORT_SERIAL) return GP_OK; /* * It seems that the initialization sequence needs to be sent at * 19200. */ CHECK (gp_port_get_settings (camera->port, &settings)); if (settings.serial.speed != 19200) { settings.serial.speed = 19200; CHECK (gp_port_set_settings (camera->port, settings)); } CHECK (gp_port_set_pin (camera->port, GP_PIN_DTR, GP_LEVEL_HIGH)); packet[0] = NUL; while (1) { /* Send NUL */ CHECK (sierra_write_packet (camera, (char *)packet, context)); /* Read the response */ ret = sierra_read_packet (camera, buf, context); if (ret == GP_ERROR_TIMEOUT) { if (++r > 2) { gp_context_error (context, _("Transmission timed out even after " "2 retries. Giving up...")); return (GP_ERROR_TIMEOUT); } GP_DEBUG ("Retrying..."); continue; } CHECK (ret); switch (buf[0]) { case SIERRA_PACKET_NAK: /* Everything is fine. */ return GP_OK; case SIERRA_PACKET_SESSION_END: default: if (++r > 3) { gp_context_error (context, _("Got unexpected result " "0x%x. Please contact " "%s."), buf[0], MAIL_GPHOTO_DEVEL); return GP_ERROR; } break; } } } static struct { SierraSpeed speed; int bit_rate; } SierraSpeeds[] = { {SIERRA_SPEED_9600 , 9600}, {SIERRA_SPEED_19200 , 19200}, {SIERRA_SPEED_38400 , 38400}, {SIERRA_SPEED_57600 , 57600}, {SIERRA_SPEED_115200, 115200}, {0, 0} }; int sierra_set_speed (Camera *camera, SierraSpeed speed, GPContext *context) { GPPortSettings settings; unsigned int i, bit_rate; /* Only serial connections have different speeds. */ if (camera->port->type != GP_PORT_SERIAL) return GP_OK; /* * Check that the requested speed is valid. We don't want to bug * the user with our coding errors, therefore if the requested * speed is invalid, we use 19200. */ for (i = 0; SierraSpeeds[i].bit_rate; i++) if (SierraSpeeds[i].speed == speed) break; if (SierraSpeeds[i].bit_rate) bit_rate = SierraSpeeds[i].bit_rate; else { GP_DEBUG ("Invalid speed %i. Using %i (19200, default).", speed, SIERRA_SPEED_19200); speed = SIERRA_SPEED_19200; bit_rate = 19200; } /* * Check if we need to change the speed or if we are currently * using the requested speed. The reason why we are doing that is * that (at least some) cameras reject the request for a speed if * they are currently operating at that speed. */ CHECK (gp_port_get_settings (camera->port, &settings)); if (settings.serial.speed == bit_rate) return GP_OK; /* * Tell the camera about the new speed. Note that a speed change * automatically starts a new session. */ GP_DEBUG ("Setting speed to %i (%i bps)", speed, bit_rate); camera->pl->first_packet = 1; CHECK (sierra_set_int_register (camera, 17, speed, context)); /* Now switch the port to the new speed. */ CHECK (gp_port_get_settings (camera->port, &settings)); settings.serial.speed = bit_rate; CHECK (gp_port_set_settings (camera->port, settings)); CHECK (gp_port_set_pin (camera->port, GP_PIN_DTR, GP_LEVEL_HIGH)); usleep (10 * 1000); return GP_OK; } int sierra_sub_action (Camera *camera, SierraAction action, int sub_action, GPContext *context) { char buf[SIERRA_PACKET_SIZE]; CHECK (sierra_build_packet (camera, SIERRA_PACKET_COMMAND, 0, 3, buf)); buf[4] = 0x02; buf[5] = action; buf[6] = sub_action; GP_DEBUG ("sierra_sub_action: action %d, sub action %d", action, sub_action); CHECK (sierra_transmit_ack (camera, buf, context)); GP_DEBUG ("Waiting for acknowledgement..."); CHECK (sierra_read_packet_wait (camera, buf, context)); switch (buf[0]) { case ACK: /* reported on capture on Olympus 4040 */ case SIERRA_PACKET_ENQ: return (GP_OK); default: gp_context_error (context, _("Received unexpected answer " "(%i). Please contact %s."), buf[0], MAIL_GPHOTO_DEVEL); return (GP_ERROR); } return GP_OK; } static int sierra_action (Camera *camera, SierraAction action, GPContext *context) { return(sierra_sub_action (camera, action, 0, context)); } int sierra_set_int_register (Camera *camera, int reg, int value, GPContext *context) { char p[4096]; GP_DEBUG ("sierra_set_int_register: register %i value %i", reg, value); CHECK (sierra_build_packet (camera, SIERRA_PACKET_COMMAND, 0, (value < 0) ? 2 : 6, p)); /* Fill in the data */ p[4] = 0x00; p[5] = reg; if (value >= 0) { p[6] = (value) & 0xff; p[7] = (value>>8) & 0xff; p[8] = (value>>16) & 0xff; p[9] = (value>>24) & 0xff; } /* Send packet */ CHECK (sierra_transmit_ack (camera, p, context)); return GP_OK; } int sierra_get_int_register (Camera *camera, int reg, int *value, GPContext *context) { int r = 0; unsigned char p[4096], buf[SIERRA_PACKET_SIZE]; GP_DEBUG ("sierra_get_int_register: register 0x%02x...", reg); /* Build and send the packet. */ CHECK (sierra_build_packet (camera, SIERRA_PACKET_COMMAND, 0, 2, (char *)p)); p[4] = 0x01; p[5] = reg; CHECK (sierra_write_packet (camera, (char *)p, context)); while (1) { /* Read the response */ buf[0] = 0; CHECK (sierra_read_packet_wait (camera, (char *)buf, context)); GP_DEBUG ("Successfully read packet. Interpreting result " "(0x%02x)", buf[0]); switch (buf[0]) { case SIERRA_PACKET_INVALID: gp_context_error (context, _("Could not get " "register %i. Please contact " "%s."), reg, MAIL_GPHOTO_DEVEL); return GP_ERROR; case SIERRA_PACKET_DATA_END: r = ((unsigned char) buf[4]) + ((unsigned char) buf[5] * 256) + ((unsigned char) buf[6] * 65536) + ((unsigned char) buf[7] * 16777216); *value = r; GP_DEBUG ("Value of register 0x%02x: 0x%02x. ", reg, r); CHECK (sierra_write_ack (camera, context)); GP_DEBUG ("Read value of register 0x%02x and wrote " "acknowledgement. Returning.", reg); return GP_OK; case SIERRA_PACKET_SESSION_END: case SIERRA_PACKET_SESSION_ERROR: case SIERRA_PACKET_WRONG_SPEED: if (++r > 2) { gp_context_error (context, _("Too many " "retries failed.")); return GP_ERROR; } /* * The camera has ended this session and * reverted the speed back to 19200. Reinitialize * the connection and resend the packet. We use the * default speed from now on. */ CHECK (sierra_init (camera, context)); CHECK (sierra_set_speed (camera, SIERRA_SPEED_19200, context)); CHECK (sierra_write_packet (camera, (char *)p, context)); break; default: if (++r > 2) { gp_context_error (context, _("Too many " "retries failed.")); return GP_ERROR; } /* Tell the camera to send again. */ CHECK (sierra_write_nak (camera, context)); break; } } return GP_ERROR_IO; } int sierra_set_string_register (Camera *camera, int reg, const char *s, long int length, GPContext *context) { char packet[4096]; char type; long int x=0; int seq=0, size=0; int do_percent; unsigned int id = 0; GP_DEBUG ("sierra_set_string_register: reg %i, value '%s'", reg, s); /* Make use of the progress bar when the packet is "large enough" */ if (length > MAX_DATA_FIELD_LENGTH) { do_percent = 1; /* * This code can lead to recursive calls in gtkam - the * main problem is when thumbnails are being downloaded, * gtkam tries to download another thumbnail when * gp_context_progress_update() is called. There are also * other areas in gtkam that can recursively call into * this function. */ id = gp_context_progress_start (context, length, _("Sending data...")); } else do_percent = 0; while (x < length) { if (x == 0) { type = SIERRA_PACKET_COMMAND; size = (length + 2 - x) > MAX_DATA_FIELD_LENGTH ? MAX_DATA_FIELD_LENGTH : length + 2; } else { size = (length - x) > MAX_DATA_FIELD_LENGTH ? MAX_DATA_FIELD_LENGTH : length-x; if (x + size < length) type = SIERRA_PACKET_DATA; else type = SIERRA_PACKET_DATA_END; } CHECK (sierra_build_packet (camera, type, seq, size, packet)); if (type == SIERRA_PACKET_COMMAND) { packet[4] = 0x03; packet[5] = reg; memcpy (&packet[6], &s[x], size-2); x += size - 2; } else { packet[1] = seq++; memcpy (&packet[4], &s[x], size); x += size; } /* Transmit packet */ CHECK (sierra_transmit_ack (camera, packet, context)); if (do_percent) gp_context_progress_update (context, id, x); } if (do_percent) gp_context_progress_stop (context, id); return GP_OK; } int sierra_get_string_register (Camera *camera, int reg, int fnumber, CameraFile *file, unsigned char *b, unsigned int *b_len, GPContext *context) { unsigned char p[34816]; unsigned int packlength, total = (b_len) ? *b_len : 0; int retries, r; unsigned int min_progress_bytes; static int in_function = 0; unsigned int id = 0; GP_DEBUG ("sierra_get_string_register: reg %i, file number %i, " " total %d, flags 0x%x", reg, fnumber, total, camera->pl->flags); if (in_function != 0) { gp_context_error (context, _("recursive calls are not" " supported by the sierra driver! Please contact" " %s."), MAIL_GPHOTO_DEVEL); return GP_ERROR; } in_function = 1; /* Set the current picture number */ if (fnumber >= 0) CHECK (sierra_set_int_register (camera, 4, fnumber, context)); /* Build and send the request */ CHECK (sierra_build_packet (camera, SIERRA_PACKET_COMMAND, 0, 2, (char *)p)); /* * If the extended protocol is enabled, use code 0x06 so we can send * and receive 32k size packages, otherwise code 0x04 is used and * we have 2k size packages. */ if (camera->pl->flags & SIERRA_EXT_PROTO) { p[4] = 0x06; min_progress_bytes = 32 * 1024; } else { p[4] = 0x04; min_progress_bytes = 2 * 1024; } p[5] = reg; CHECK (sierra_write_packet (camera, (char *)p, context)); if (file && total > min_progress_bytes) { id = gp_context_progress_start (context, total, _("Downloading data...")); } /* Read all the data packets */ *b_len = 0; retries = 0; do { /* Read one packet and retry on timeout. */ r = sierra_read_packet (camera, p, context); if (r == GP_ERROR_TIMEOUT) { if (++retries > RETRIES) { in_function = 0; return (r); } GP_DEBUG ("Timeout! Retrying (%i of %i)...", retries, RETRIES); CHECK (sierra_write_nak (camera, context)); continue; } CHECK (r); GP_DEBUG ("sierra_get_string_register p[0] is %d", p[0]); switch (p[0]) { case SIERRA_PACKET_INVALID: gp_context_error (context, _("Could not get " "string register %i. Please contact " "%s."), reg, MAIL_GPHOTO_DEVEL); in_function = 0; return GP_ERROR; default: break; } CHECK (sierra_write_ack (camera, context)); packlength = p[2] | (p[3] << 8); GP_DEBUG ("Packet length: %d", packlength); if (b) memcpy (&b[*b_len], &p[4], packlength); *b_len += packlength; if (file) { CHECK (gp_file_append (file, (char *)&p[4], packlength)); if (total > min_progress_bytes) gp_context_progress_update (context, id, *b_len); } } while (p[0] != SIERRA_PACKET_DATA_END); if (file && total > min_progress_bytes) gp_context_progress_stop (context, id); GP_DEBUG ("sierra_get_string_register: completed OK, *b_len %d", *b_len); in_function = 0; return GP_OK; } int sierra_delete_all (Camera *camera, GPContext *context) { CHECK (sierra_action (camera, SIERRA_ACTION_DELETE_ALL, context)); return GP_OK; } int sierra_delete (Camera *camera, int picture_number, GPContext *context) { /* Tell the camera which picture to delete and execute command. */ CHECK (sierra_set_int_register (camera, 4, picture_number, context)); CHECK (sierra_action (camera, SIERRA_ACTION_DELETE, context)); return GP_OK; } int sierra_end_session (Camera *camera, GPContext *context) { CHECK (sierra_action (camera, SIERRA_ACTION_END, context)); return GP_OK; } int sierra_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { unsigned int size; /* Send to the camera the capture request and wait for the completion */ CHECK (sierra_action (camera, SIERRA_ACTION_PREVIEW, context)); /* Retrieve the preview and set the MIME type */ CHECK (sierra_get_int_register (camera, 12, (int *)&size, context)); CHECK (sierra_get_string_register (camera, 14, 0, file, NULL, &size, context)); CHECK (gp_file_set_mime_type (file, GP_MIME_JPEG)); return GP_OK; } int sierra_capture (Camera *camera, CameraCaptureType type, CameraFilePath *filepath, GPContext *context) { int n, r; unsigned int len = 0; char filename[128]; char *folder; int timeout; GP_DEBUG ("* sierra_capture"); /* We can only capture images */ if (type != GP_CAPTURE_IMAGE) return GP_ERROR_NOT_SUPPORTED; /* * This is a non-fatal check if a memory card is present. Some * cameras don't understand this command and error out here. * Since some cameras do not like it at all, do not send it for those. */ if (!(camera->pl->flags & SIERRA_NO_51)) { r = sierra_get_int_register (camera, 51, &n, context); if ((r >= 0) && (n == 1)) { gp_context_error (context, _("No memory card present")); return GP_ERROR_NOT_SUPPORTED; } } /* * Raise the timeout before the capture, since it can take longer, * the shutter speed alone could push us over 10 seconds. */ CHECK (gp_port_get_timeout (camera->port, &timeout)); CHECK (gp_port_set_timeout (camera->port, 20000)); /* 20 seconds */ /* Send to the camera the capture request and wait for the completion */ CHECK (sierra_action (camera, SIERRA_ACTION_CAPTURE, context)); CHECK (gp_port_set_timeout (camera->port, timeout)); if (filepath != NULL) { /* * After the picture is taken, register 4 is set to the * current picture. */ GP_DEBUG ("Getting picture number."); r = sierra_get_int_register (camera, 4, &n, context); if (r == GP_OK) { GP_DEBUG ("Getting filename of file %i.", n); } /* * We need to tell the frontend where the new image can be * found. Unfortunatelly, we can only figure out the * filename. Therefore, reset the CameraFilesystem and let * it search for the filename. * * If you know how to figure out where the image gets * saved, please submit a patch. * * Not that some cameras that don't support filenames will * return 8 blanks instead of reporting an error. * * Some newer cameras (Nikon*) do not return register 4, so * ignore errors from that. */ CHECK (sierra_get_string_register (camera, 79, 0, NULL, (unsigned char *)filename, &len, context)); if ((len <= 0) || !strcmp (filename, " ")) snprintf (filename, sizeof (filename), "P101%04i.JPG", n); GP_DEBUG ("... done ('%s')", filename); CHECK (gp_filesystem_reset (camera->fs)); CHECK (gp_filesystem_get_folder (camera->fs, filename, &folder, context)); strncpy (filepath->folder, folder, sizeof (filepath->folder)); strncpy (filepath->name, filename, sizeof (filepath->name)); } GP_DEBUG ("* sierra_capture completed OK"); return GP_OK; } int sierra_upload_file (Camera *camera, CameraFile *file, GPContext *context) { const char *data; long unsigned int data_size; /* Put the "magic spell" in register 32 */ CHECK (sierra_set_int_register (camera, 32, 0x0FEC000E, context)); /* Upload the file */ CHECK (gp_file_get_data_and_size (file, &data, &data_size)); CHECK (sierra_set_string_register (camera, 29, data, data_size, context)); /* Send command to order the transfer into NVRAM and wait for the completion */ CHECK (sierra_action (camera, SIERRA_ACTION_UPLOAD, context)); return GP_OK; } static unsigned int get_int (const unsigned char b[]) { return (b[0] | (b[1] << 8) | (b[2] << 16) | (b[3] << 24)); } int sierra_get_pic_info (Camera *camera, unsigned int n, SierraPicInfo *pic_info, GPContext *context) { unsigned char buf[1024]; unsigned int buf_len = 0; int value, audio_info[8]; CHECK (sierra_get_string_register (camera, 47, n, NULL, buf, &buf_len, context)); if (buf_len == 0) { /* * Many (older) serial cameras seem to return 0 bytes back * and effectively do not support register 47. Try using * other registers to get the data. * * Don't fail on error so unsupported or semi-broken * behaviour does not prevent downloads or other use. */ memset(pic_info, 0, sizeof(*pic_info)); if (sierra_get_size(camera, 12, n, &value, context) == GP_OK) { pic_info->size_file = value; } if (sierra_get_size(camera, 13, n, &value, context) == GP_OK) { pic_info->size_preview = value; } /* * If the following hangs any cameras, just delete this * code, and assume that cameras with audio will get audio * file information via reg 47. * * Note that the value variable as used here is number of * bytes transferred, not the returned data. Some * unsupported sierra commands return zero bytes. */ if ((sierra_get_string_register (camera, 43, n, NULL, (unsigned char *) &audio_info, (unsigned int *)&value, context) == GP_OK) && (value != 0)) { pic_info->size_audio = audio_info[0]; } if (sierra_get_int_register (camera, 39, &value, context) == GP_OK) { pic_info->locked = value; } else { /* * Default to marking as locked (not-deletable). * It looks the file can still be deleted if the * file is not really locked. */ pic_info->locked = SIERRA_LOCKED_YES; } return (GP_OK); } if (buf_len != 32) { gp_context_error (context, _("Expected 32 bytes, got %i. " "Please contact %s."), buf_len, MAIL_GPHOTO_DEVEL); return (GP_ERROR_CORRUPTED_DATA); } pic_info->size_file = get_int (buf); pic_info->size_preview = get_int (buf + 4); pic_info->size_audio = get_int (buf + 8); pic_info->resolution = get_int (buf + 12); pic_info->locked = get_int (buf + 16); pic_info->date = get_int (buf + 20); pic_info->animation_type = get_int (buf + 28); /* Make debugging easier */ GP_DEBUG ("sierra_get_pic_info "); GP_DEBUG ("File size: %d", pic_info->size_file); GP_DEBUG ("Preview size: %i", pic_info->size_preview); GP_DEBUG ("Audio size: %i", pic_info->size_audio); GP_DEBUG ("Resolution: %i", pic_info->resolution); GP_DEBUG ("Locked: %i", pic_info->locked); GP_DEBUG ("Date: %i", pic_info->date); GP_DEBUG ("Animation type: %i", pic_info->animation_type); return GP_OK; } int sierra_set_locked (Camera *camera, unsigned int n, SierraLocked locked, GPContext *context) { CHECK (sierra_set_int_register (camera, 4, n, context)); CHECK (sierra_sub_action (camera, SIERRA_ACTION_PROT_STATE, (int) locked, context)); return GP_OK; } int sierra_get_size (Camera *camera, int reg, unsigned int n, int *value, GPContext *context) { CHECK (sierra_set_int_register (camera, 4, n, context)); CHECK (sierra_get_int_register (camera, reg, value, context)); return GP_OK; } libgphoto2-2.5.9/camlibs/sierra/sierra-desc.c0000644000175000001440000003311512610415536015767 00000000000000/* sierra-desc.c: * * Copyright 2002 Patrick Mansfield * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include <_stdint.h> #include #include #include #include #include #include "sierra.h" #include "sierra-desc.h" #include "library.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "sierra" /* * For some reason, round() does not get a prototype from math.h. */ extern double round(double x); static int camera_cam_desc_get_value (ValueNameType *val_name_p, CameraWidgetType widge, uint32_t reg_len, void *buff, int mask, CameraWidget *child) { if ((widge == GP_WIDGET_RADIO) || (widge == GP_WIDGET_MENU)) { gp_widget_add_choice (child, _(val_name_p->name)); GP_DEBUG ("get value %15s:\t%lld (0x%04llx)", val_name_p->name, (long long)val_name_p->u.value, (long long unsigned) val_name_p->u.value); /* XXX where is endian handled? */ if ((mask & *(int*) buff) == val_name_p->u.value) { gp_widget_set_value (child, _(val_name_p->name)); } } else if (widge == GP_WIDGET_DATE) { GP_DEBUG ("get value date/time %s", ctime((time_t *) buff)); gp_widget_set_value (child, (int*) buff); } else if (widge == GP_WIDGET_RANGE) { float float_val, increment; increment = val_name_p->u.range[2]; if (increment == 0.0) { /* * Use a default value. */ increment = 1.0; } GP_DEBUG ("get value range:\t%08g:%08g increment %g (via %g)", val_name_p->u.range[0], val_name_p->u.range[1], increment, val_name_p->u.range[2]); gp_widget_set_range (child, val_name_p->u.range[0], val_name_p->u.range[1], increment); /* * Kluge: store the value in buff as a 4 byte int, even * though we might have read 8 bytes or more. */ float_val = (*(int*) buff) * increment; gp_widget_set_value (child, &float_val); } else if (widge == GP_WIDGET_BUTTON) { GP_DEBUG ("get button"); gp_widget_set_value (child, val_name_p->u.callback); } else { GP_DEBUG ("get value bad widget type %d", widge); return (GP_ERROR); } return (GP_OK); } static int camera_cam_desc_get_widget (Camera *camera, CameraRegisterType *reg_p, CameraWidget *section, GPContext *context) { int ind, vind, ret, value; int mask; char buff[1024]; CameraWidget *child; RegisterDescriptorType *reg_desc_p; GP_DEBUG ("register %d", reg_p->reg_number); if (reg_p->reg_len == 0) { /* * This is 0 for GP_WIDGET_BUTTON (callbacks), since is no * register for call backs. Frontends "get" the value, and * call the function directly. */ ret = GP_OK; } else if (reg_p->reg_len == 4) { int rval; ret = sierra_get_int_register (camera, reg_p->reg_number, &rval, context); reg_p->reg_value = rval; } else if (reg_p->reg_len == 8) { /* * reg_value is 8 bytes maximum. If you need a bigger * value, change the reg_value size, or allocate space on * the fly and make a union with reg_value and a void*. */ ret = sierra_get_string_register (camera, reg_p->reg_number, -1, NULL, (unsigned char *)buff, (unsigned int *)&value, context); if ((ret == GP_OK) && value != reg_p->reg_len) { GP_DEBUG ("Bad length result %d", value); return (GP_ERROR); } memcpy (®_p->reg_value, buff, reg_p->reg_len); } else { GP_DEBUG ("Bad register length %d", reg_p->reg_number); return (GP_ERROR); } GP_DEBUG ("... '%s'.", gp_result_as_string (ret)); if (ret < 0) { return (ret); } for (ind = 0; ind < reg_p->reg_desc_cnt; ind++) { reg_desc_p = ®_p->reg_desc[ind]; mask = reg_desc_p->regs_mask; GP_DEBUG ("window name is %s", reg_desc_p->regs_long_name); gp_widget_new (reg_desc_p->reg_widget_type, _(reg_desc_p->regs_long_name), &child); gp_widget_set_name (child, reg_desc_p->regs_short_name); /* * Setting the info for the preference settings does not * make sense like it does for an icon button. This is * used as the tool-tip field (mouse over hint that pops * up after a second in gtkam). We don't want this used * at all; setting it to space doesn't work well, so just * set it to the same as regs_long_name. */ gp_widget_set_info (child, _(reg_desc_p->regs_long_name)); GP_DEBUG ("reg_value 0x%016llx", (long long unsigned)reg_p->reg_value); for (vind = 0; vind < reg_desc_p->reg_val_name_cnt; vind++) { camera_cam_desc_get_value (®_desc_p->regs_value_names[vind], reg_desc_p->reg_widget_type, reg_p->reg_len, (char*) ®_p->reg_value, mask, child); } /* * For radio and menu values: if there has been no change, it * means the value was not set, and so it is unknown. */ if (((reg_desc_p->reg_widget_type == GP_WIDGET_RADIO) || (reg_desc_p->reg_widget_type == GP_WIDGET_MENU)) && !gp_widget_changed (child)) { sprintf (buff, _("%lld (unknown)"), (long long)reg_p->reg_value); gp_widget_add_choice (child, buff); gp_widget_set_value (child, buff); } gp_widget_append (section, child); } return (GP_OK); } int camera_get_config_cam_desc (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *section; int indw, indr; const CameraDescType *cam_desc = NULL; GP_DEBUG ("*** camera_get_config_cam_desc"); CHECK (camera_start (camera, context)); gp_widget_new (GP_WIDGET_WINDOW, _("Camera Configuration"), window); cam_desc = camera->pl->cam_desc; for (indw = 0; indw < 2 /* XXX sizeof () */; indw++) { GP_DEBUG ("%s registers", cam_desc->regset[indw].window_name); gp_widget_new (GP_WIDGET_SECTION, _(cam_desc->regset[indw].window_name), §ion); gp_widget_append (*window, section); for (indr = 0; indr < cam_desc->regset[indw].reg_cnt; indr++) { camera_cam_desc_get_widget (camera, &cam_desc->regset[indw].regs[indr], section, context); } } return (GP_OK); } static int cam_desc_set_register (Camera *camera, CameraRegisterType *reg_p, void *value, GPContext *context) { if (reg_p->reg_get_set.method == CAM_DESC_DEFAULT) { if (reg_p->reg_len == 4) { /* XXX endian problem or not? */ CHECK_STOP (camera, sierra_set_int_register (camera, reg_p->reg_number, *(int*)value, context)); } else if (reg_p->reg_len <= 8) { CHECK_STOP (camera, sierra_set_string_register (camera, reg_p->reg_number, (char*) value, reg_p->reg_len, context)); } else { /* * Note that sizeof u.value is 8, so if you have a * larger value to store, somehow change u.value * size, or add a union. */ GP_DEBUG ("set value BAD LENGTH %d", reg_p->reg_len); return (GP_ERROR); } } else if (reg_p->reg_get_set.method == CAM_DESC_SUBACTION) { /* * Right now, the only supported sub-action is for * changing the LCD mode, the only other possible * sub-actions are for testing, calibration, and * protection mode. Just make sure the LCD mode setting * works. */ CHECK_STOP (camera, sierra_sub_action (camera, reg_p->reg_get_set.action, *(int*) value, context)); } else { GP_DEBUG ("Unsupported register setting action %d", reg_p->reg_get_set.method); return (GP_ERROR); } return (GP_OK); } static int camera_cam_desc_set_value (Camera *camera, CameraRegisterType *reg_p, RegisterDescriptorType *reg_desc_p, ValueNameType *val_name_p, void *data, GPContext *context) { /* * Return GP_OK if match and OK, 1 if no match, or < 0 on error. */ if ((reg_desc_p->reg_widget_type == GP_WIDGET_RADIO) || (reg_desc_p->reg_widget_type == GP_WIDGET_MENU)) { uint32_t new_value; GP_DEBUG ("set value comparing data '%s' with name '%s'", *(char**)data, val_name_p->name); if (strcmp (*(char**)data, val_name_p->name) != 0) { return (1); } /* * For masking, we might actually set the same register * twice - once for each change in the mask, so we have to * reset reg_value to the new value. * * If we must to mask u.value, that is really a bug - the * u.value should already be masked. * * For registers longer than 4 bytes, we are masking * in whatever values were already in the upper 4 bytes - * none of the current settings (new values) are longer * than 4 bytes. */ new_value = (reg_p->reg_value & ~reg_desc_p->regs_mask) | (val_name_p->u.value & reg_desc_p->regs_mask); reg_p->reg_value = new_value; GP_DEBUG ("set new val 0x%x; reg val 0x%x; msk 0x%x; val 0x%x ", new_value, (int)reg_p->reg_value, reg_desc_p->regs_mask, (int)val_name_p->u.value); CHECK_STOP (camera, cam_desc_set_register (camera, reg_p, &new_value, context)); } else if (reg_desc_p->reg_widget_type == GP_WIDGET_DATE) { GP_DEBUG ("set new date/time %s", ctime((time_t*)data)); CHECK_STOP (camera, cam_desc_set_register (camera, reg_p, (int*)data, context)); } else if (reg_desc_p->reg_widget_type == GP_WIDGET_RANGE) { int val[2]; float increment; if (reg_p->reg_get_set.method != CAM_DESC_DEFAULT) { GP_DEBUG ("Setting range values using the non-default" " register functions is not supported"); return (GP_ERROR); } /* * The value in *data is a float, convert it to an int. * * Currently no need to support any subaction here. * * Similiar to the masking above, if we have a register * larger than 4 bytes, put the four bytes in the int to * into the low four bytes of the value we want to set; * fill the rest with whatever was read from the camera. */ increment = val_name_p->u.range[2]; if (increment == 0.0) { increment = 1.0; /* default value */ } GP_DEBUG ("set value range from %g inc %g", *(float*)data, increment); val[0] = round ((*(float*) data) / increment); if (reg_p->reg_len == 4) { /* * not used but set it anyway */ val[1] = 0; } else if (reg_p->reg_len == 8) { memcpy(&val[1], ((char*)®_p->reg_value)+sizeof(val[0]), sizeof(val[0])); /* val[1] = ((int *) ®_p->reg_value)[1]; */ } else if (reg_p->reg_len != 4 ) { GP_DEBUG ("Unsupported range with register length %d", reg_p->reg_len); return (GP_ERROR); } GP_DEBUG ("set value range to %d (0x%x and 0x%x)", val[0], val[0], val[1]); CHECK_STOP (camera, cam_desc_set_register (camera, reg_p, &val, context)); } else { GP_DEBUG ("bad reg_widget_type type %d", reg_desc_p->reg_widget_type); return (GP_ERROR); } return (GP_OK); } static int camera_cam_desc_set_widget (Camera *camera, CameraRegisterType *reg_p, CameraWidget *window, GPContext *context) { int ind, vind, ret; union value_in { char *charp; int val; float flt; } value_in; CameraWidget *child; RegisterDescriptorType *reg_desc_p; GP_DEBUG ("register %d", reg_p->reg_number); for (ind = 0; ind < reg_p->reg_desc_cnt; ind++) { reg_desc_p = ®_p->reg_desc[ind]; GP_DEBUG ("window name is %s", reg_desc_p->regs_long_name); if ((gp_widget_get_child_by_label (window, _(reg_desc_p->regs_long_name), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value_in); for (vind = 0; vind < reg_desc_p->reg_val_name_cnt; vind++) { ret = camera_cam_desc_set_value (camera, reg_p, reg_desc_p, ®_desc_p->regs_value_names[vind], &value_in, context); if (ret == GP_OK) { /* * Something got set, mark the * widget as changed, so the user * can repeat any actions - like * going to the "next" picture by * repeatedly hitting apply while * in operation play mode. * * This has the side affect of * changing whatever was just set * twice when using the apply in * gtkam - once when applied and * once when OK. */ gp_widget_set_changed (child, 1); } if (ret <= 0) { /* * Value was set (GP_OK is 0), or * some an error occurred (< 0), * don't bother checking any other * value/name pairs. */ break; } } } } return (GP_OK); } int camera_set_config_cam_desc (Camera *camera, CameraWidget *window, GPContext *context) { int wind, rind; const CameraDescType *cam_desc = NULL; GP_DEBUG ("*** camera_set_config_cam_desc"); CHECK (camera_start (camera, context)); cam_desc = camera->pl->cam_desc; for (wind = 0; wind < 2 /* XXX sizeof () */; wind++) { GP_DEBUG ("%s registers", cam_desc->regset[wind].window_name); for (rind = 0; rind < cam_desc->regset[wind].reg_cnt; rind++) { camera_cam_desc_set_widget (camera, &cam_desc->regset[wind].regs[rind], window, context); } } return (GP_OK); } libgphoto2-2.5.9/camlibs/sierra/library.h0000644000175000001440000001226312610415536015240 00000000000000/* library.h * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __LIBRARY_H__ #define __LIBRARY_H__ #include #define TIMEOUT 2000 #define CHECK_STOP(camera,result) \ { \ int res = (result); \ \ if (res < 0) { \ GP_DEBUG ("Operation failed in %s (%i)!", __FUNCTION__, res); \ camera_stop (camera, context); \ return (res); \ } \ } #define CHECK_STOP_FREE(camera,result) \ { \ int res = (result); \ \ if (res < 0) { \ GP_DEBUG ("Operation failed in %s (%i)!", __FUNCTION__, res); \ camera_stop (camera, context); \ free (camera->pl); \ camera->pl = NULL; \ return (res); \ } \ } #define CHECK_FREE(camera,result) \ { \ int res = (result); \ \ if (res < 0) { \ GP_DEBUG ("Operation failed in %s (%i)!", __FUNCTION__, res); \ free (camera->pl); \ camera->pl = NULL; \ return (res); \ } \ } enum _SierraAction { SIERRA_ACTION_DELETE_LAST_PIC = 0x00, SIERRA_ACTION_DELETE_ALL = 0x01, SIERRA_ACTION_CAPTURE = 0x02, SIERRA_ACTION_END = 0x04, SIERRA_ACTION_PREVIEW = 0x05, SIERRA_ACTION_TESTING = 0x06, SIERRA_ACTION_DELETE = 0x07, SIERRA_ACTION_LCD_MODE = 0x08, SIERRA_ACTION_PROT_STATE = 0x09, SIERRA_ACTION_UPLOAD = 0x0b, SIERRA_ACTION_LCD_TEST = 0x0c, }; typedef enum _SierraAction SierraAction; typedef enum { SIERRA_LOCKED_NO = 0x00, SIERRA_LOCKED_YES = 0x01 } SierraLocked; typedef struct _SierraPicInfo SierraPicInfo; struct _SierraPicInfo { unsigned int size_file; unsigned int size_preview; unsigned int size_audio; unsigned int resolution; SierraLocked locked; unsigned int date; unsigned int animation_type; }; int sierra_get_pic_info (Camera *camera, unsigned int n, SierraPicInfo *pic_info, GPContext *context); int sierra_set_locked (Camera *camera, unsigned int n, SierraLocked locked, GPContext *context); /* Communications functions */ enum _SierraSpeed { SIERRA_SPEED_9600 = 1, SIERRA_SPEED_19200 = 2, SIERRA_SPEED_38400 = 3, SIERRA_SPEED_57600 = 4, SIERRA_SPEED_115200 = 5 }; typedef enum _SierraSpeed SierraSpeed; int sierra_set_speed (Camera *camera, SierraSpeed speed, GPContext *context); int sierra_end_session (Camera *camera, GPContext *context); int sierra_init (Camera *camera, GPContext *context); int sierra_get_memory_left (Camera *camera, int *memory, GPContext *context); int sierra_check_battery_capacity (Camera *camera, GPContext *context); int sierra_sub_action (Camera *camera, SierraAction action, int sub_action, GPContext *context); int sierra_set_int_register (Camera *camera, int reg, int value, GPContext *context); int sierra_get_int_register (Camera *camera, int reg, int *value, GPContext *context); int sierra_set_string_register (Camera *camera, int reg, const char *s, long int length, GPContext *context); int sierra_get_string_register (Camera *camera, int reg, int file_number, CameraFile *file, unsigned char *b, unsigned int *b_len, GPContext *context); int sierra_delete (Camera *camera, int picture_number, GPContext *context); int sierra_delete_all (Camera *camera, GPContext *context); int sierra_capture (Camera *camera, CameraCaptureType type, CameraFilePath *filepath, GPContext *context); int sierra_capture_preview (Camera *camera, CameraFile *file, GPContext *context); int sierra_change_folder (Camera *camera, const char *folder, GPContext *context); int sierra_get_size (Camera *camera, int reg, unsigned int n, int *value, GPContext *context); int camera_start (Camera *camera, GPContext *context); int camera_stop (Camera *camera, GPContext *context); /* Filesystem functions */ int sierra_list_files (Camera *camera, const char *folder, CameraList *list, GPContext *context); int sierra_list_folders (Camera *camera, const char *folder, CameraList *list, GPContext *context); int sierra_get_picture_folder (Camera *camera, char **folder); int sierra_upload_file (Camera *camera, CameraFile *file, GPContext *context); /* Camera desc functions in sierra-desc.c */ int camera_set_config_cam_desc (Camera *camera, CameraWidget *window, GPContext *context); int camera_get_config_cam_desc (Camera *camera, CameraWidget **window, GPContext *context); #endif /* __LIBRARY_H__ */ libgphoto2-2.5.9/camlibs/sierra/MC-EU1-Protocol.txt0000644000175000001440000001025212557123324016647 00000000000000From: http://vyskocil.free.fr/coolcom/MC-EU1%20Protocol.txt Coolpix MC-EU1 Protocol Here are some informations about the serial protocol used between the Coolpix and the MC-EU1 remote. Speed is set to 19200 bauds * Introduction This protocol use 1 or 4 bytes "packets". 4 bytes packets are used to send command to the coolpix and receive information from it. 1 byte packet are used as acknowledge (0x86), not acknowledge (0x15), "attention packet" (0xFF). Each byte in these packet is divided in two part, bit 0-6 is the value on 7 bits and bit 7 is the odd parity bit (thanks Mark Roberts !) Returned value by the coolpix (in the two or three? last byte) have 0x1C offset, and least signifiant byte is sent first, for example the number of picture is : nb picture = ((byte[2] & 0x7F) - 0x1C) + 100 * ((byte[3] & 0x7F) - 0x1C) byte[0] == 0x9B, byte[1] == 0x10 * Going to MC-EU1 protocol Send Receive Informations 0x00 0x15 0x1B,0x53,0x06,0x00,0x00,0x11,0x02,0x00,0x00,0x00,0x13,0x00 Standard SetSpeed to 19200 command packet 0x06 0x1B,0x53,0x06,0x00,0x00,0x11,0x02,0x00,0x00,0x10,0x23,0x00 Go to MC-EU1 protocol packet, switch LCD ON 0x06 At first connection after Coolpix has been powerup, first 0x00 don't work, coolpix respond 0xFF 0xFF then nothing A second 0x00 do the job. * Initialisations Need more informations... Send Receive Informations 0x9B, 0x85, 0x1C, 0x1C 0x9B, 0x13, 0x1C, 0x1C ? 0x86 * Has camera power down ? Send Receive Informations 0x9B, 0x08, 0x1C, 0x1C 0x9B, 0x92, 0x7F, 0x7F Coolpix is ON or 0x9B, 0x19, 0x7F, 0x7F Coolpix powerdown. 0x86 * Take a shoot : Send Receive Informations 0x9B, 0x01, 0x1C, 0x1C Half press the shutter button. 0x86 0x9B, 0x01, 0x7F, 0x1C Full press the shutter button, take the picture 0x86 0x9B, 0x01, 0x7F, 0x7F Release the shutter button, usefull in bulb mode 0x8F 0x9B, 0x01, 0x1C, 0x7F Half press release (unlock shutter button). 0x86 * Zoom IN Send Receive Informations 0x9B, 0x02, 0x1C, 0x1C "Press" the zoom in button 0x86 0x9B, 0x02, 0x1C, 0x7F "Release" the zoom in button 0x86 * Zoom OUT Send Receive Informations 0x9B, 0x02, 0x7F, 0x1C "Press" the zoom out button 0x86 0x9B, 0x02, 0x7F, 0x7F "Release" the zoom out button 0x86 * Next picture Send Receive Informations 0x9B, 0x04, 0x1C, 0x1C "Press" right 0x86 0x9B, 0x04, 0x1C, 0x7F "Release" right 0x86 * Previous picture Send Receive Informations 0x9B, 0x04, 0x7F, 0x1C "Press" left 0x86 0x9B, 0x04, 0x7F, 0x7F "Release" left 0x86 * Number of picture left Send Receive Informations 0x9B, 0x07, 0x1C, 0x1C 0x9B, 0x10, 0xXX, 0xYY (0xXX & 0x7F) - 0x1C + 100 * ((0xYY & 0x7F) - 0x1C) is the number of pictures left 0x86 * A-REC/M-Rec Send Receive Informations 0x9B, 0x89, 0x1C, 0x1C 0x9B, 0x91, 0x9D, 0x7F for A Rec mode or 0x9B, 0x91, 0x0D, 0x1C for M Rec mode or 0x9B, 0x91, 0x7F, 0x9D for play mode 0x86 * Go back to standard protocol Send Receive Informations 0x9B, 0x8A, 0x1C, 0x1C LCD OFF 0x86 * "Attention" packet 0xFF from coolpix Coolpix send 0xFF in many cases : - After initialisation in response to 0x00. - When Coolpix self powerdown (powersave) - When Coolpix is powerdown - When a picture has been recorded - When mode selector is operated (A-Rec, M-Rec, Play) It's a good idea to send 0x9B, 0x08, 0x1C, 0x1C packet to check if coolpix has powerdown when a 0xFF is received, else check the picture number and current mode. * Notes - Camera send NAK (0x15) in response to bad command packet - You may send any useful informations about this protocol to : vladimir.vyskocil@wanadoo.fr libgphoto2-2.5.9/camlibs/sierra/sierra-usbwrap.c0000644000175000001440000003557312610415617016546 00000000000000/* sierra_usbwrap.c * * Copyright 2002 Lutz Mueller * Copyright 2012-2013 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * * Olympus C-3040Z (and possibly also the C-2040Z and others) have * a USB PC Control mode in which "Sierra" protocol packets are tunneled * inside another protocol. This file implements the wrapper protocol. * The (ab)use of USB clear halt is not needed for this protocol. * * The other protocol is "SCSI via USB Mass Storage", so we can also use * the Linux SCSI APIs. Interesting is also that the header looks a bit * like a PTP header. * * IMPORTANT: In order to use this mode, the camera must be switched * _out_ of "USB Mass Storage" mode and into "USB PC control mode". * The images will not be accessable as a mass-storage/disk device in * this mode, but you can control the camera, tell it to take pictures * and download images using the protocol implemented in sierra.c. * * To get to the menu for switching modes, open the memory card * access door (the camera senses this) and then press and hold * both of the menu buttons until the camera control menu appears. * Set it to ON. This disables the USB mass-storage support. * * Update 20110125: This switching might not be necessary with the new code, * please just try. */ #include "config.h" #include "sierra-usbwrap.h" #include "sierra.h" #include #include #include <_stdint.h> #include #include #define GP_MODULE "sierra" #define CR(result) {int r = (result); if (r < 0) return (r);} /* * The following things are the way the are just to ensure that USB * wrapper packets have the correct byte-order on all types of machines. * Intel byte order is used instead of "network" byte order :-( */ typedef struct { unsigned char c1, c2, c3, c4; } uw32_t; /* A type for 32-bit integers */ typedef struct { unsigned char c1, c2, c3, c4; } uw4c_t; /* A type for 4-byte things */ typedef struct { unsigned char c1, c2; } uw2c_t; /* A type for 2-byte things? */ static uw32_t uw_value(unsigned int value) /* Convert from host-integer to uw32_t */ { uw32_t ret; ret.c1 = (value & 0x000000ffUL); ret.c2 = (value >> 8 & 0x000000ffUL); ret.c3 = (value >> 16 & 0x000000ffUL); ret.c4 = (value >> 24 & 0x000000ffUL); return ret; } static unsigned char cmdbyte (unsigned int type, unsigned char nr) { switch (type & SIERRA_WRAP_USB_MASK) { case SIERRA_WRAP_USB_OLYMPUS: return nr | 0xc0; case SIERRA_WRAP_USB_NIKON: return nr | 0xe0; case SIERRA_WRAP_USB_PENTAX: return nr | 0xd8; default: /* should not get here */ return 0xff; } } /* Test for equality between two uw32_t's or two uw4c_t's. */ #define UW_EQUAL(a, b) \ ((a).c1==(b).c1 && (a).c2==(b).c2 && (a).c3==(b).c3 && (a).c4==(b).c4) /* * Each of the following request types begins with USBC+SessionID and * ends with a response from the camera of USBS+SessionID (OK). * * These requests always appear in a specific order: * * usb_wrap_write_packet: RDY(OK), CMND(OK), STAT(OK) * usb_wrap_read_packet: RDY(OK), GETSIZE(OK), DATA(OK), STAT(OK) */ /* Test if camera ready */ #define MAKE_UW_REQUEST_RDY(req,type) MAKE_UW_REQUEST_OUT(req,0x0c,cmdbyte(type, 0)) /* Send command to camera */ #define MAKE_UW_REQUEST_CMND(req,type) MAKE_UW_REQUEST_OUT(req,0x0c,cmdbyte(type, 1)) /* Read data from camera */ #define MAKE_UW_REQUEST_DATA(req,type) MAKE_UW_REQUEST_IN(req,0x0c,cmdbyte(type, 2)) /* Get last CMND/DATA rslt */ #define MAKE_UW_REQUEST_STAT(req,type) MAKE_UW_REQUEST_IN(req,0x0c,cmdbyte(type, 3)) /* Get size of next DATA */ #define MAKE_UW_REQUEST_SIZE(req,type) MAKE_UW_REQUEST_IN(req,0x0c,cmdbyte(type, 4)) /* Get camera information */ #define MAKE_UW_REQUEST_ID(req,type) MAKE_UW_REQUEST_IN(req,0x06,0x12) #define UW_PACKET_RDY ((uw4c_t){ 0x01, 0x00, 0xff, 0x9f }) #define UW_PACKET_DATA ((uw4c_t){ 0x02, 0x00, 0xff, 0x9f }) #define UW_PACKET_STAT ((uw4c_t){ 0x03, 0x00, 0xff, 0x9f }) #define UW_MAGIC_OUT ((uw4c_t){ 'U','S','B','C' }) #define UW_MAGIC_IN ((uw4c_t){ 'U','S','B','S' }) #pragma pack(1) /* This is linux/include/linux/usb/storage.h, struct bulk_cb_wrap * 31 byte length */ typedef struct { uw4c_t magic; /* The letters U S B C for packets sent to camera */ uw32_t tag; /* The SCSI command tag */ uw32_t rw_length; /* Length of data to be read or written next */ unsigned char flags; /* in / out flag mostly */ unsigned char lun; /* 0 here */ unsigned char length; /* of the CDB... but 0x0c is used here in the traces */ unsigned char cdb[16]; } uw_header_t; /* * This is the end response block from the camera looks like this: * * This is the generic bulk style USB Storage response block. * * linux/include/linux/usb/storage.h, struct bulk_cs_wrap */ typedef struct { uw4c_t magic; /* The letters U S B S for packets from camera */ uw32_t tag; /* A copy of whatever value the host made up */ uw32_t residue; /* residual read? */ char status; /* status byte */ } uw_response_t; /* * Data packet sent along with a UW_REQUEST_RDY: */ typedef struct { uw32_t length; /* Length of this structure, sizeof(uw_rdy_t) */ uw4c_t packet_type; /* Set this to UW_PACKET_RDY. */ char zero[8]; /* 00 00 00 00 00 00 00 00 ? */ } uw_pkout_rdy_t; /* * Data packet to send along with a UW_REQUEST_DATA: */ typedef struct { uw32_t length; /* sizeof(uw_data_t) *plus* sierra pckt after it */ uw4c_t packet_type; /* Set this to UW_PACKET_DATA */ char zero[56]; /* ? */ } uw_pkout_sierra_hdr_t; /* * Expected response to a UW_REQUEST_STAT: */ typedef struct { uw32_t length; /* Length of this structure, sizeof(uw_stat_t) */ uw4c_t packet_type; /* Compare with UW_PACKET_STAT here. */ char zero[6]; /* 00 00 00 00 00 00 ? */ } uw_stat_t; /* * Expected response to a get size request, UW_REQUEST_SIZE: */ typedef struct { uw32_t length; /* Length of this structure, sizeof(uw_size_t) */ uw4c_t packet_type; /* Compare with UW_PACKET_DATA here. */ char zero[4]; /* 00 00 00 00 ? */ uw32_t size; /* The size of data waiting to be sent by camera */ } uw_size_t; typedef struct { unsigned char cmd; char zero1[8]; uw32_t length; char zero2[3]; } uw_scsicmd_t; #pragma pack() static int ums_tag = 0x42424242; static int scsi_wrap_cmd( GPPort *dev, int todev, char *cmd, unsigned int cmdlen, char *sense, unsigned int senselen, char *data, unsigned int size ) { GPPortInfo info; GPPortType type; uw_header_t hdr; uw_response_t rsp; int ret; ret = gp_port_get_info (dev, &info); if (ret != GP_OK) return ret; ret = gp_port_info_get_type (info, &type); if (ret != GP_OK) return ret; if (type == GP_PORT_USB_SCSI) /* just send it to the generic SCSI stack */ return gp_port_send_scsi_cmd ( dev, todev, cmd, cmdlen, sense, senselen, data, size ); /* Assuming plain USB, emulating SCSI ... */ memset(&hdr, 0, sizeof(hdr)); hdr.magic = UW_MAGIC_OUT; hdr.tag = uw_value(ums_tag); ums_tag++; hdr.rw_length = uw_value(size); hdr.length = 12; /* seems to be always 12, even as we send 16 byte CDBs */ hdr.flags = todev?0:(1<<7); hdr.lun = 0; memcpy(hdr.cdb, cmd, cmdlen); /* WRITE scsi header / cdb */ if ((ret=gp_port_write(dev, (char*)&hdr, sizeof(hdr))) < GP_OK) { GP_DEBUG( "scsi_wrap_cmd *** FAILED to write scsi cmd" ); return GP_ERROR_IO; } /* WRITE / READ data blob */ if (todev) { if ((ret=gp_port_write(dev, (char*)data, size)) < GP_OK) { GP_DEBUG( "scsi_wrap_cmd *** FAILED to write scsi data" ); return GP_ERROR_IO; } } else { if ((ret=gp_port_read(dev, (char*)data, size)) < GP_OK) { GP_DEBUG( "scsi_wrap_cmd *** FAILED to read scsi data" ); return GP_ERROR_IO; } } /* READ RESPONSE */ memset(&rsp, 0, sizeof(rsp)); GP_DEBUG( "usb_wrap_OK" ); if ((ret = gp_port_read(dev, (char*)&rsp, sizeof(rsp))) != sizeof(rsp)) { gp_log (GP_LOG_DEBUG, GP_MODULE, "scsi_wrap_cmd *** FAILED (%d vs %d bytes)", (int)sizeof(rsp), ret ); if (ret < GP_OK) return ret; return GP_ERROR; } if ( !UW_EQUAL(rsp.magic, UW_MAGIC_IN) || !UW_EQUAL(rsp.tag, hdr.tag)) { GP_DEBUG( "scsi_wrap_cmd wrong session *** FAILED" ); return GP_ERROR; } /* * 32bit residual length (0) and 8 bit status (0) are good. */ if ( rsp.residue.c1 != 0 || rsp.residue.c2 != 0 || rsp.residue.c3 != 0 || rsp.residue.c4 != 0 || rsp.status != 0) { GP_DEBUG( "Error: scsi_wrap_cmd - residual non-0 or status %x", rsp.status); return GP_ERROR; } return GP_OK; } #define gp_port_send_scsi_cmd scsi_wrap_cmd static int usb_wrap_RDY(gp_port* dev, unsigned int type) { uw_pkout_rdy_t msg; int ret; char sense_buffer[32]; uw_scsicmd_t cmd; GP_DEBUG( "usb_wrap_RDY" ); memset(&cmd,0,sizeof(cmd)); cmd.cmd = cmdbyte(type, 0); cmd.length = uw_value(sizeof(msg)); memset(&msg, 0, sizeof(msg)); msg.length = uw_value(sizeof(msg)); msg.packet_type = UW_PACKET_RDY; ret = gp_port_send_scsi_cmd (dev, 1, (char*)&cmd, sizeof(cmd), sense_buffer, sizeof(sense_buffer), (char*)&msg, sizeof(msg)); if (retlength = uw_value(msg_len); msg->packet_type = UW_PACKET_DATA; memcpy((char*)msg + sizeof(*msg), sierra_msg, sierra_len); GP_DEBUG( "usb_wrap_CMND writing %i", msg_len); ret = gp_port_send_scsi_cmd (dev, 1, (char*)&cmd, sizeof(cmd), sense_buffer, sizeof(sense_buffer), (char*)msg, msg_len); free(msg); if (ret < GP_OK) { GP_DEBUG( "usb_wrap_CMND ** WRITE FAILED"); return ret; } return GP_OK; } static int usb_wrap_SIZE(gp_port* dev, unsigned int type, uw32_t* size) { uw32_t xlen; uw_size_t msg; int ret; char sense_buffer[32]; uw_scsicmd_t cmd; GP_DEBUG( "usb_wrap_SIZE" ); memset(&cmd, 0, sizeof(cmd)); cmd.cmd = cmdbyte(type, 4); cmd.length = uw_value(sizeof(msg)); memset(&msg, 0, sizeof(msg)); ret = gp_port_send_scsi_cmd (dev, 0, (char*)&cmd, sizeof(cmd), sense_buffer, sizeof(sense_buffer), (char*)&msg, sizeof(msg)); if (ret < GP_OK) { GP_DEBUG( "usb_wrap_SIZE *** FAILED" ); return ret; } xlen = uw_value(sizeof(msg)); if (!UW_EQUAL(msg.length, xlen) || !UW_EQUAL(msg.packet_type, UW_PACKET_DATA)) { GP_DEBUG( "usb_wrap_SIZE got bad packet *** FAILED" ); return GP_ERROR; } if (msg.zero[0] != 0 || msg.zero[1] != 0 || msg.zero[2] != 0 || msg.zero[3] != 0) { GP_DEBUG( "warning: usb_wrap_SIZE found non-zero bytes (ignoring)" ); } *size = msg.size; return GP_OK; } static int usb_wrap_DATA (GPPort *dev, unsigned int type, char *sierra_response, int *sierra_len, uw32_t size) { uw_pkout_sierra_hdr_t* msg; unsigned int msg_len; int ret; char sense_buffer[32]; uw_scsicmd_t cmd; GP_DEBUG( "usb_wrap_DATA" ); msg_len = 0; msg_len = msg_len * 256 + (unsigned int)(size.c4); msg_len = msg_len * 256 + (unsigned int)(size.c3); msg_len = msg_len * 256 + (unsigned int)(size.c2); msg_len = msg_len * 256 + (unsigned int)(size.c1); if (*sierra_len < msg_len - sizeof(*msg)) { GP_DEBUG( "usb_wrap_read_packet buffer too small! (%i < %i) *** FAILED", *sierra_len, msg_len); return GP_ERROR; } *sierra_len = msg_len - sizeof(*msg); msg = (uw_pkout_sierra_hdr_t*)calloc(msg_len,1); memset(&cmd, 0, sizeof(cmd)); cmd.cmd = cmdbyte(type, 2); cmd.length = uw_value(msg_len); ret = gp_port_send_scsi_cmd (dev, 0, (char*)&cmd, sizeof(cmd), sense_buffer, sizeof(sense_buffer), (char*)msg, msg_len); if (ret < GP_OK) { GP_DEBUG( "usb_wrap_DATA FAILED" ); free(msg); return ret; } memcpy(sierra_response, (char*)msg + sizeof(*msg), *sierra_len); free(msg); return GP_OK; } /* * ------------------------------------------------------------------------- * Here are the two public functions of this C file: * ------------------------------------------------------------------------- */ int usb_wrap_write_packet (GPPort *dev, unsigned int type, char *sierra_msg, int sierra_len) { GP_DEBUG ("usb_wrap_write_packet"); CR (usb_wrap_RDY (dev, type)); CR (usb_wrap_CMND (dev, type, sierra_msg, sierra_len)); CR (usb_wrap_STAT (dev, type)); return GP_OK; } int usb_wrap_read_packet (GPPort *dev, unsigned int type, char *sierra_response, int sierra_len) { uw32_t uw_size; GP_DEBUG ("usb_wrap_read_packet"); CR (usb_wrap_RDY (dev, type)); CR (usb_wrap_SIZE (dev, type, &uw_size)); CR (usb_wrap_DATA (dev, type, sierra_response, &sierra_len, uw_size)); CR (usb_wrap_STAT (dev, type)); return sierra_len; } libgphoto2-2.5.9/camlibs/sierra/Makefile-files0000644000175000001440000000106412610415517016157 00000000000000EXTRA_DIST += sierra/PROTOCOL sierra/ChangeLog sierra/MC-EU1-Protocol.txt EXTRA_LTLIBRARIES += sierra.la sierra_la_CPPFLAGS = $(AM_CPPFLAGS) $(CPPFLAGS) $(LIBEXIF_CFLAGS) sierra_la_SOURCES = \ sierra/sierra.c sierra/sierra.h \ sierra/library.c sierra/library.h \ sierra/sierra-usbwrap.c sierra/sierra-usbwrap.h \ sierra/sierra-desc.h sierra/sierra-desc.c \ sierra/nikon-desc.c sierra/olympus-desc.c sierra/epson-desc.c sierra_la_LDFLAGS = $(camlib_ldflags) sierra_la_DEPENDENCIES = $(camlib_dependencies) sierra_la_LIBADD = $(camlib_libadd) $(LIBEXIF_LIBS) libgphoto2-2.5.9/camlibs/sierra/olympus-desc.c0000644000175000001440000010637312610415536016221 00000000000000/* olympus_desc.c: * * Olympus 3040 specific code (most of this file): * David Selmeczi * Olympus 3000z code, based on data from: * Till Kamppeter * Original code: * Copyright 2002 Patrick Mansfield * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include <_stdint.h> #include #include #include #include #include "sierra.h" #include "library.h" #include "sierra-desc.h" /* * Camera descriptor for Olympus C-3040Z, 3000Z (and somday maybe others). */ /* * Notes: * * The variable "value" in a ValueNameType is the first element of * the name/value union, and so it is the default value initialized. * * To init to a range, use: * { .range = { 100.1, 2000.0, 10 } }, NULL * * Casts are used to avoid warnings about using a const. * * Only registers that are used by the camera configuration are listed * here (for use in the get/set config functions); no settings, capture or * other data is stored here. */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif /* * Register 1: resolution/size. * * These values suck. why didn't they make these maskable, or use a nibble * for each part? Just use a the combined resolution + size. It would be * good to try and break these into two selections. */ static const ValueNameType oly3040_reg_01_val_names[] = { { { 0x01 }, "640x480-Normal" }, { { 0x04 }, "640x480-Fine" }, { { 0x05 }, "1024x768-Normal" }, { { 0x06 }, "1024x768-Fine" }, { { 0x07 }, "1280x960-Normal" }, { { 0x08 }, "1280x960-Fine" }, { { 0x09 }, "1600x1200-Normal" }, { { 0x0a }, "1600x1200-Fine" }, /* Only for E-100RS { { 0x0b }, "1360x1024-Normal" }, { { 0x0c }, "1360x1024-Fine" }, */ { { 0x02 }, "2048x1536-Normal" }, { { 0x03 }, "2048x1536-Fine" }, { { 0x21 }, "640x480-TIFF" }, { { 0x22 }, "1024x768-TIFF" }, { { 0x23 }, "1280x960-TIFF" }, { { 0x24 }, "1600x1200-TIFF" }, { { 0x25 }, "2048x1536-TIFF" }, { { 0x26 }, "1360x1024-TIFF" }, }; static const RegisterDescriptorType oly3040_reg_01[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "resolution", N_("Resolution plus Size"), VAL_NAME_INIT (oly3040_reg_01_val_names) } }; static const ValueNameType oly750uz_reg_01_val_names[] = { { { 0x01 }, "SQ2-640x480-NORMAL" }, { { 0x02 }, "SQ1-2048x1536-NORMAL" }, { { 0x03 }, "SQ1-2048x1536-HIGH" }, { { 0x04 }, "SQ2-640x480-HIGH" }, { { 0x05 }, "SQ2-1024x768-NORMAL" }, { { 0x06 }, "SQ2-1024x768-HIGH" }, { { 0x07 }, "SQ1-1280x960-NORMAL" }, { { 0x08 }, "SQ1-1280x960-HIGH" }, { { 0x09 }, "SQ1-1600x1200-NORMAL" }, { { 0x0a }, "SQ1-1600x1200-HIGH" }, { { 0x0d }, "HQ-2288x1712" }, { { 0x0e }, "SHQ-2288x1712" }, { { 0x0f }, "3:2-HQ-2288x1520" }, { { 0x10 }, "3:2-SHQ-2288x1620" }, { { 0x13 }, "LG-HQ-3200x2400" }, { { 0x14 }, "LG-SHQ-3200x2400" }, { { 0x24 }, "TIFF-1600x1200" }, { { 0x25 }, "TIFF-2048x1536" }, { { 0x26 }, "TIFF-2218x1712" }, { { 0x27 }, "3:2-TIFF-2218x1712" }, }; static const RegisterDescriptorType oly750uz_reg_01[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "resolution", N_("Resolution plus Size"), VAL_NAME_INIT (oly750uz_reg_01_val_names) } }; static const ValueNameType olysp500uz_reg_01_val_names[] = { { { 0x00 }, "SQ2-640x480-NORMAL" }, { { 0x01 }, "SQ2-1024x768-NORMAL" }, { { 0x02 }, "SQ2-1280x960-NORMAL" }, { { 0x03 }, "SQ1-1600x1200-NORMAL" }, { { 0x04 }, "SQ1-2048x1536-NORMAL" }, { { 0x05 }, "SQ1-2288x1712-NORMAL" }, { { 0x06 }, "SQ1-2592x1944-NORMAL" }, { { 0x07 }, "RAW?-2816x2112-NORMAL" }, { { 0x100 }, "SQ2-640x480-HIGH" }, { { 0x101 }, "SQ2-1024x768-HIGH" }, { { 0x102 }, "SQ2-1280x960-HIGH" }, { { 0x103 }, "SQ1-1600x1200-HIGH" }, { { 0x104 }, "SQ1-2048x1536-HIGH" }, { { 0x105 }, "SQ1-2288x1712-HIGH" }, { { 0x106 }, "SQ1-2592x1944-HIGH" }, { { 0x1007 }, "HQ?-2816x1880-NORMAL" }, { { 0x10007 }, "HQ?-2816x1880-NORMAL" }, { { 0x10107 }, "HQ?-2816x1880-3:2" }, { { 0x107 }, "HQ?-2816x2112-3:2" }, }; static const RegisterDescriptorType olysp500uz_reg_01[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "resolution", N_("Resolution plus Size"), VAL_NAME_INIT (olysp500uz_reg_01_val_names) } }; /* * Register 2: Date and time. */ static const ValueNameType oly3040_reg_02_val_names[] = { /* * Dummy value, since we need at least one of these to * display anything. */ { { 0x00 }, "Dummy" }, }; static const RegisterDescriptorType oly3040_reg_02[] = { { GP_WIDGET_DATE, GP_REG_NO_MASK, "date-time", N_("Date and time (GMT)"), VAL_NAME_INIT (oly3040_reg_02_val_names) } }; /* * Register 3: shutter speed, some cameras must be in S or M mode. * * In S mode, aperture is compensated. * * Possibly could be any other value in the range of 1250 and 16M */ static const ValueNameType oly3040_reg_03_val_names[] = { { { 0 }, N_("Auto") }, { { 1250 }, "1/800" }, { { 2000 }, "1/500" }, { { 2500 }, "1/400" }, { { 4000 }, "1/250" }, { { 5000 }, "1/200" }, { { 6250 }, "1/160" }, { { 8000 }, "1/125" }, { { 10000 }, "1/100" }, { { 12500 }, "1/80" }, { { 16666 }, "1/60" }, { { 20000 }, "1/50" }, { { 33333 }, "1/30" }, { { 40000 }, "1/25" }, { { 66667 }, "1/15" }, { { 100000 }, "1/10" }, { { 125000 }, "1/8" }, { { 200000 }, "1/4" }, /* XXX patman should this be 25000? */ { { 500000 }, "1/2" }, { { 1000000 }, "1" }, { { 2000000 }, "2" }, { { 3000000 }, "3" }, { { 4000000 }, "4" }, { { 5000000 }, "5" }, { { 6000000 }, "6" }, { { 8000000 }, "8" }, { {10000000 }, "10" }, { {16000000 }, "16" }, }; static const RegisterDescriptorType oly3040_reg_03[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "shutter", N_("Shutter Speed (in seconds)"), VAL_NAME_INIT (oly3040_reg_03_val_names) } }; static const ValueNameType oly750uz_reg_03_val_names[] = { { { 0 }, N_("Auto") }, { { 1000 }, "1/1000" }, { { 1250 }, "1/800" }, { { 1538 }, "1/650" }, { { 2000 }, "1/500" }, { { 2500 }, "1/400" }, { { 3125 }, "1/320" }, { { 4000 }, "1/250" }, { { 5000 }, "1/200" }, { { 6250 }, "1/160" }, { { 8000 }, "1/125" }, { { 10000 }, "1/100" }, { { 12500 }, "1/80" }, { { 16666 }, "1/60" }, { { 20000 }, "1/50" }, { { 25000 }, "1/40" }, { { 33333 }, "1/30" }, { { 40000 }, "1/25" }, { { 50000 }, "1/20" }, { { 66667 }, "1/15" }, { { 76923 }, "1/13" }, { { 100000 }, "1/10" }, { { 125000 }, "1/8" }, { { 166667 }, "1/6" }, { { 200000 }, "1/5" }, { { 250000 }, "1/4" }, { { 333333 }, "1/3" }, { { 400000 }, "1/2.5" }, { { 500000 }, "1/2" }, { { 625000 }, "1/1.6" }, { { 769230 }, "1/1.3" }, { { 1000000 }, "1" }, { { 1300000 }, "1.3" }, { { 1600000 }, "1.6" }, { { 2000000 }, "2" }, { { 2500000 }, "2.5" }, { { 3200000 }, "3.2" }, { { 4000000 }, "4" }, { { 5000000 }, "5" }, { { 6000000 }, "6" }, { { 8000000 }, "8" }, { {10000000 }, "10" }, { {13000000 }, "13" }, { {16000000 }, "16" }, }; static const RegisterDescriptorType oly750uz_reg_03[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "shutter", N_("Shutter Speed (in seconds)"), VAL_NAME_INIT (oly750uz_reg_03_val_names) } }; static const ValueNameType olysp500uz_reg_03_val_names[] = { { { 0 }, N_("Auto") }, { { 250 }, "1/4000" }, { { 313 }, "1/3200" }, { { 400 }, "1/2500" }, { { 500 }, "1/2000" }, { { 625 }, "1/1600" }, { { 800 }, "1/1250" }, { { 1000 }, "1/1000" }, { { 1250 }, "1/800" }, { { 1538 }, "1/650" }, { { 2000 }, "1/500" }, { { 2500 }, "1/400" }, { { 3125 }, "1/320" }, { { 4000 }, "1/250" }, { { 5000 }, "1/200" }, { { 6250 }, "1/160" }, { { 8000 }, "1/125" }, { { 10000 }, "1/100" }, { { 12500 }, "1/80" }, { { 16666 }, "1/60" }, { { 20000 }, "1/50" }, { { 25000 }, "1/40" }, { { 33333 }, "1/30" }, { { 40000 }, "1/25" }, { { 50000 }, "1/20" }, { { 66667 }, "1/15" }, { { 76923 }, "1/13" }, { { 100000 }, "1/10" }, { { 125000 }, "1/8" }, { { 166667 }, "1/6" }, { { 200000 }, "1/5" }, { { 250000 }, "1/4" }, { { 333333 }, "1/3" }, { { 400000 }, "1/2.5" }, { { 500000 }, "1/2" }, { { 625000 }, "1/1.6" }, { { 769230 }, "1/1.3" }, { { 1000000 }, "1" }, { { 1300000 }, "1.3" }, { { 1600000 }, "1.6" }, { { 2000000 }, "2" }, { { 2500000 }, "2.5" }, { { 3200000 }, "3.2" }, { { 4000000 }, "4" }, { { 5000000 }, "5" }, { { 6000000 }, "6" }, { { 8000000 }, "8" }, { {10000000 }, "10" }, { {13000000 }, "13" }, { {16000000 }, "16" }, }; static const RegisterDescriptorType olysp500uz_reg_03[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "shutter", N_("Shutter Speed (in seconds)"), VAL_NAME_INIT (olysp500uz_reg_03_val_names) } }; /* * Past behaviour is that you have to pick a supported value, you can't * arbitrarily set this to some value and have it work, so using a range * does not work well, since only about 30 of some 16 million values are * valid. */ static const ValueNameType olyrange_reg_03_val_names[] = { { { .range = { 0, 16000000, 100 } }, NULL } }; static const RegisterDescriptorType olyrange_reg_03[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "shutter", N_("Shutter Speed microseconds (0 auto)"), VAL_NAME_INIT (olyrange_reg_03_val_names) } }; /* * Olympus 3040 Register 5: aperture settings. Works only in A or M mode * In A mode, shutter speed is compensated */ static const ValueNameType oly3040_reg_05_val_names[] = { { { 0 }, N_("Auto") }, { { 1 }, "F1.8" }, { { 2 }, "F2.0" }, { { 3 }, "F2.3" }, { { 4 }, "F2.6" }, { { 5 }, "F2.8" }, { { 6 }, "F3.2" }, { { 7 }, "F3.6" }, { { 8 }, "F4.0" }, { { 9 }, "F4.5" }, { { 10 }, "F5.0" }, { { 11 }, "F5.6" }, { { 12 }, "F6.3" }, { { 13 }, "F7" }, { { 14 }, "F8" }, { { 15 }, "F9" }, { { 16 }, "F10" }, }; static const RegisterDescriptorType oly3040_reg_05[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "aperture", N_("Aperture Settings"), VAL_NAME_INIT (oly3040_reg_05_val_names) } }; /* * Olympus 3000z Register 5: aperture settings. Unknown if this comment * applies: Works only in A or M mode In A mode, shutter speed is * compensated */ static const ValueNameType oly3000z_reg_05_val_names[] = { { { 0 }, N_("Auto") }, { { 1 }, "F2.2" }, { { 2 }, "F2.5" }, { { 3 }, "F2.8" }, { { 4 }, "F3.2" }, { { 5 }, "F3.6" }, { { 6 }, "F4.0" }, { { 7 }, "F4.5" }, { { 8 }, "F5.0" }, { { 9 }, "F5.6" }, { { 10 }, "F6.3" }, { { 11 }, "F7.0" }, { { 12 }, "F8.0" }, { { 13 }, "F9.0" }, { { 14 }, "F10.0" }, { { 15 }, "F11.0" }, { { 16 }, "F2.0" }, /* Odd */ }; static const RegisterDescriptorType oly3000z_reg_05[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "aperture", N_("Aperture Settings"), VAL_NAME_INIT (oly3000z_reg_05_val_names) } }; /* * Olympus 750uz Register 5: aperture settings. */ static const ValueNameType oly750uz_reg_05_val_names[] = { { { 0 }, N_("Auto") }, { { 3 }, "F2.8" }, { { 4 }, "F3.2" }, { { 5 }, "F3.5" }, { { 6 }, "F4.0" }, { { 7 }, "F4.5" }, { { 8 }, "F5.0" }, { { 9 }, "F5.6" }, { { 10 }, "F6.3" }, { { 11 }, "F7.0" }, { { 12 }, "F8.0" }, }; static const RegisterDescriptorType oly750uz_reg_05[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "aperture", N_("Aperture Settings"), VAL_NAME_INIT (oly750uz_reg_05_val_names) } }; /* * Olympus SP-500uz Register 5: aperture settings. */ static const ValueNameType olysp500uz_reg_05_val_names[] = { { { 0 }, N_("Auto") }, { { 28 }, "F2.8" }, { { 32 }, "F3.2" }, { { 35 }, "F3.5" }, { { 40 }, "F4.0" }, { { 45 }, "F4.5" }, { { 50 }, "F5.0" }, { { 56 }, "F5.6" }, { { 63 }, "F6.3" }, { { 80 }, "F8.0" }, { { 90 }, "F9.0" }, }; static const RegisterDescriptorType olysp500uz_reg_05[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "aperture", N_("Aperture Settings"), VAL_NAME_INIT (olysp500uz_reg_05_val_names) } }; /* * Register 6: color mode */ static const ValueNameType oly3040_reg_06_val_names[] = { { { 0 }, N_("Normal") }, { { 1 }, N_("B/W") }, { { 2 }, N_("Sepia") }, { { 3 }, N_("White board") }, { { 4 }, N_("Black board") }, }; static const RegisterDescriptorType oly3040_reg_06[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "color", N_("Color or Function Mode"), VAL_NAME_INIT (oly3040_reg_06_val_names) } }; /* * Olyumpus 3040 Register 7: flash settings */ static const ValueNameType oly3040_reg_07_val_names[] = { { { 0 }, N_("Auto") }, { { 1 }, N_("Force") }, { { 2 }, N_("Off") }, { { 3 }, N_("Anti-redeye") }, }; static const RegisterDescriptorType oly3040_reg_07[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "flash", N_("Flash Settings"), VAL_NAME_INIT (oly3040_reg_07_val_names) } }; /* * Olumpus 750uz Register 7: flash settings */ static const ValueNameType oly750uz_reg_07_val_names[] = { { { 0 }, N_("Auto") }, { { 1 }, N_("Force") }, { { 2 }, N_("Off") }, { { 3 }, N_("Anti-redeye") }, { { 4 }, N_("Slow") }, /* This is always 4 for slow 1, 2, or slow with redeye */ }; static const RegisterDescriptorType oly750uz_reg_07[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "flash", N_("Flash Settings"), VAL_NAME_INIT (oly750uz_reg_07_val_names) } }; /* * Olumpus SP-500uz Register 7: flash settings */ static const ValueNameType olysp500uz_reg_07_val_names[] = { { { 0 }, N_("Auto") }, { { 1 }, N_("Force") }, { { 2 }, N_("Off") }, { { 3 }, N_("Anti-redeye") }, { { 4 }, N_("Slow") }, /* This is always 4 for slow 1, 2, or slow with redeye */ { { 6 }, N_("Anti-redeye Fill") }, }; static const RegisterDescriptorType olysp500uz_reg_07[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "flash", N_("Flash Settings"), VAL_NAME_INIT (olysp500uz_reg_07_val_names) } }; /* * Olympus 3040: Register 20: white balance. */ static const ValueNameType oly3040_reg_20_val_names[] = { { { 0x00 }, N_("Auto") }, { { 0x01 }, N_("Daylight") }, { { 0x02 }, N_("Fluorescent") }, { { 0x03 }, N_("Tungsten") }, { { 0xff }, N_("Cloudy") }, }; static const RegisterDescriptorType oly3040_reg_20[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "whitebalance", N_("White Balance"), VAL_NAME_INIT (oly3040_reg_20_val_names) } }; /* * Olympus 3000z: Register 20: white balance. Only difference seems to be * that cloudy is 0x04, not 0xff. */ static const ValueNameType oly3000z_reg_20_val_names[] = { { { 0x00 }, N_("Auto") }, { { 0x01 }, N_("Daylight") }, { { 0x02 }, N_("Fluorescent") }, { { 0x03 }, N_("Tungsten") }, { { 0x04 }, N_("Cloudy") }, }; static const RegisterDescriptorType oly3000z_reg_20[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "whitebalance", N_("White Balance"), VAL_NAME_INIT (oly3000z_reg_20_val_names) } }; /* * Olympus 750uz: Register 20: white balance. The main difference is that * we have the flourescent 1 2 and 3: */ static const ValueNameType oly750uz_reg_20_val_names[] = { { { 0x00 }, N_("Auto") }, { { 0x01 }, N_("Daylight") }, { { 0x03 }, N_("Tungsten") }, { { 0x04 }, N_("Fluorescent-1-home-6700K") }, { { 0x05 }, N_("Fluorescent-2-desk-5000K") }, { { 0x06 }, N_("Fluorescent-3-office-4200K") }, { { 0xff }, N_("Cloudy") }, }; static const RegisterDescriptorType oly750uz_reg_20[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "whitebalance", N_("White Balance"), VAL_NAME_INIT (oly750uz_reg_20_val_names) } }; /* * Olympus SP 500uz: Register 20: white balance. The main difference is that * we have the flourescent 1 2 and 3: */ static const ValueNameType olysp500uz_reg_20_val_names[] = { { { 0x00 }, N_("Auto") }, { { 0x01 }, N_("Daylight") }, { { 0x03 }, N_("Tungsten") }, { { 0x04 }, N_("Flourescent-1-home-6700K") }, { { 0x05 }, N_("Flourescent-2-desk-5000K") }, { { 0x06 }, N_("Flourescent-3-office-4200K") }, { { 0x09 }, N_("Dusk") }, { { 0x0a }, N_("Preset") }, { { 0xff }, N_("Cloudy") }, }; static const RegisterDescriptorType olysp500uz_reg_20[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "whitebalance", N_("White Balance"), VAL_NAME_INIT (olysp500uz_reg_20_val_names) } }; /* * Register 33: focus mode. */ static const ValueNameType oly3040_reg_33_val_names[] = { { { 0x01 }, N_("Macro") }, { { 0x02 }, N_("Auto") }, { { 0x03 }, N_("Manual") }, }; static const RegisterDescriptorType oly3040_reg_33[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "focus-mode", N_("Focus Mode"), VAL_NAME_INIT (oly3040_reg_33_val_names) } }; /* * Register 34: LCD mode / write-only through SIERRA_SUBACTION / ACTION_LCD_MODE * This register always contains 1 (OFF). * Note: Always swicth off LCD before disconnecting the camera. Otherwise the camera * controls won't work, and you will need to replug the cable and switch off the LCD. * (This _is_ a documented "feature".) */ static const ValueNameType oly3040_reg_34_val_names[] = { { { 0x01 }, N_("Off") }, { { 0x02 }, N_("Monitor") }, { { 0x03 }, N_("Normal") }, }; static const RegisterDescriptorType oly3040_reg_34[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "lcd-mode", N_("LCD Mode"), VAL_NAME_INIT (oly3040_reg_34_val_names) } }; /* * Register 35: lcd brightness. */ static const ValueNameType oly3040_reg_35_val_names[] = { { { .range = { 0, 7 } }, NULL }, }; static const RegisterDescriptorType oly3040_reg_35[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "lcd-brightness", N_("LCD Brightness"), VAL_NAME_INIT (oly3040_reg_35_val_names) } }; /* * Register 24: camera power save (idle time before entering power save mode) */ static const ValueNameType oly3040_reg_24_val_names[] = { { { .range = { 30, 600, 30 } }, NULL }, }; static const RegisterDescriptorType oly3040_reg_24[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "camera-power-save", N_("Camera power save (seconds)"), VAL_NAME_INIT (oly3040_reg_24_val_names) } }; /* * Register 23: camera power save when connected to PC * (idle time before entering power save mode) */ static const ValueNameType oly3040_reg_23_val_names[] = { { { .range = { 30, 600, 30 } }, NULL }, }; static const RegisterDescriptorType oly3040_reg_23[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "host-power-save", N_("Host power save (seconds)"), VAL_NAME_INIT (oly3040_reg_23_val_names) } }; /* * Register 38: lcd auto shut off time */ static const ValueNameType oly3040_reg_38_val_names[] = { { { .range = { 30, 600, 30 } }, NULL }, }; static const RegisterDescriptorType oly3040_reg_38[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "lcd-auto-shutoff", N_("LCD Auto Shut Off (seconds)"), VAL_NAME_INIT (oly3040_reg_38_val_names) } }; /* * Register 53: language setting. No meaning on Olympus */ /* static const ValueNameType oly3040_reg_53_val_names[] = { { { 0x03 }, N_("English") }, { { 0x04 }, N_("French") }, { { 0x05 }, N_("German") }, }; static const RegisterDescriptorType oly3040_reg_53[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "language", N_("Language"), VAL_NAME_INIT (oly3040_reg_53_val_names) } }; */ /* * Register 69: exposure compensation. */ static const ValueNameType oly3040_reg_69_val_names[] = { { { -20 }, "-2.0" }, { { -17 }, "-1.7" }, { { -13 }, "-1.3" }, { { -10 }, "-1.0" }, { { -07 }, "-0.7" }, { { -03 }, "-0.3" }, { { 00 }, " 0" }, { { +03 }, "+0.3" }, { { +07 }, "+0.7" }, { { +10 }, "+1.0" }, { { +13 }, "+1.3" }, { { +17 }, "+1.7" }, { { +20 }, "+2.0" }, }; static const RegisterDescriptorType oly3040_reg_69[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "exp", N_("Exposure Compensation"), VAL_NAME_INIT (oly3040_reg_69_val_names) } }; /* * Register 70: exposure meter. */ static const ValueNameType oly3040_reg_70_val_names[] = { { { 0x03 }, N_("Spot") }, { { 0x05 }, N_("Matrix") }, }; static const RegisterDescriptorType oly3040_reg_70[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "exp-meter", N_("Exposure Metering"), VAL_NAME_INIT (oly3040_reg_70_val_names) } }; /* * Olympus SP-500uz Register 70: exposure meter. */ static const ValueNameType olysp500uz_reg_70_val_names[] = { { { 0x02 }, N_("Center Weighted") }, { { 0x03 }, N_("Spot") }, { { 0x04 }, N_("ESP") }, { { 0x05 }, N_("Matrix") }, }; static const RegisterDescriptorType olysp500uz_reg_70[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "exp-meter", N_("Exposure Metering"), VAL_NAME_INIT (olysp500uz_reg_70_val_names) } }; /* * Oly 750 uz Register 71: optical zoom value. */ static const ValueNameType oly750uz_reg_71_val_names[] = { { { .range = { 6.3, 63.0, .1 } }, NULL } }; static const RegisterDescriptorType oly750uz_reg_71[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "zoom", N_("Zoom (in millimeters)"), VAL_NAME_INIT (oly750uz_reg_71_val_names) } }; /* * Oly SP-500 uz Register 71: optical zoom value. */ static const ValueNameType olysp500uz_reg_71_val_names[] = { { { .range = { 6.3, 63.0, .3 } }, NULL } }; static const RegisterDescriptorType olysp500uz_reg_71[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "zoom", N_("Zoom (in millimeters)"), VAL_NAME_INIT (olysp500uz_reg_71_val_names) } }; /* * Oly 3040 Register 71: optical zoom value. */ static const ValueNameType oly3040_reg_71_val_names[] = { { { .range = { 7.3, 21.0, .1 } }, NULL } }; static const RegisterDescriptorType oly3040_reg_71[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "zoom", N_("Zoom (in millimeters)"), VAL_NAME_INIT (oly3040_reg_71_val_names) } }; /* * Register 72: digital zoom */ static const ValueNameType oly3040_reg_72_val_names[] = { { { 0x0000 }, N_("Off") }, { { 0x0208 }, "1.5x" }, { { 0x0008 }, "2x" }, { { 0x0408 }, "2.5x" }, }; static const RegisterDescriptorType oly3040_reg_72[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "dzoom", N_("Digital zoom"), VAL_NAME_INIT (oly3040_reg_72_val_names) } }; /* * Register 85: ISO speed, read only on some cameras */ static const ValueNameType oly3040_reg_85_val_names[] = { { { 0 }, N_("Auto") }, { { 1 }, "100" }, { { 2 }, "200" }, { { 3 }, "400" }, }; static const RegisterDescriptorType oly3040_reg_85[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "iso", N_("ISO Speed"), VAL_NAME_INIT (oly3040_reg_85_val_names) } }; /* * Olympus 750uz Register 85: ISO speed, writable */ static const ValueNameType oly750uz_reg_85_val_names[] = { { { 0 }, N_("Auto") }, { { 1 }, "100" }, { { 2 }, "200" }, { { 3 }, "400" }, { { 4 }, "50" }, }; static const RegisterDescriptorType oly750uz_reg_85[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "iso", N_("ISO Speed"), VAL_NAME_INIT (oly750uz_reg_85_val_names) } }; /* * Register 103: focus position (only applicable in manual focus mode) * 1 to 120: macro positions * 121 to 240: normal positions */ static const ValueNameType oly3040_reg_103_val_names[] = { { { .range = { 1, 240, 1 } }, NULL }, }; static const RegisterDescriptorType oly3040_reg_103[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "focus-pos", N_("Focus position"), VAL_NAME_INIT (oly3040_reg_103_val_names) } }; /* * Olyumpus 750uz Register 103: focus position * 27 to 120: if in macro mode * 0 to 120: non-macro mode */ static const ValueNameType oly750uz_reg_103_val_names[] = { { { .range = { 1, 120, 1 } }, NULL }, }; static const RegisterDescriptorType oly750uz_reg_103[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "focus-pos", N_("Focus position"), VAL_NAME_INIT (oly750uz_reg_103_val_names) } }; /* * Register 41: time format, read only */ static const ValueNameType oly3040_reg_41_val_names[] = { { { 0 }, N_("Off") }, { { 1 }, "yymmdd" }, { { 2 }, "mmddyy" }, { { 3 }, "ddmmyy" }, }; static const RegisterDescriptorType oly3040_reg_41[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "timefmt", N_("Time format"), VAL_NAME_INIT (oly3040_reg_41_val_names) } }; /* * Olympus 3040: All of the register used to modify picture settings. The * register value received from the camera is stored into this data area, * so it cannot be a const. */ static CameraRegisterType oly3040_pic_regs[] = { /* camera prefix, register number, size of register */ CAM_REG_TYPE_INIT (oly3040, 01, 4, CAM_DESC_DEFAULT, 0), /* resolution/size */ CAM_REG_TYPE_INIT (oly3040, 03, 4, CAM_DESC_DEFAULT, 0), /* shutter */ CAM_REG_TYPE_INIT (oly3040, 05, 4, CAM_DESC_DEFAULT, 0), /* aperture (f-stop) */ CAM_REG_TYPE_INIT (oly3040, 06, 4, CAM_DESC_DEFAULT, 0), /* color mode */ CAM_REG_TYPE_INIT (oly3040, 07, 4, CAM_DESC_DEFAULT, 0), /* flash */ CAM_REG_TYPE_INIT (oly3040, 20, 4, CAM_DESC_DEFAULT, 0), /* white balance */ CAM_REG_TYPE_INIT (oly3040, 33, 4, CAM_DESC_DEFAULT, 0), /* focus mode */ CAM_REG_TYPE_INIT (oly3040,103, 4, CAM_DESC_DEFAULT, 0), /* focus position */ CAM_REG_TYPE_INIT (oly3040, 69, 8, CAM_DESC_DEFAULT, 0), /* exposure compensation */ CAM_REG_TYPE_INIT (oly3040, 70, 4, CAM_DESC_DEFAULT, 0), /* exposure metering */ CAM_REG_TYPE_INIT (oly3040, 71, 8, CAM_DESC_DEFAULT, 0), /* optical zoom */ CAM_REG_TYPE_INIT (oly3040, 72, 4, CAM_DESC_DEFAULT, 0), /* digital zoom + lense + AE lock */ CAM_REG_TYPE_INIT (oly3040, 85, 4, CAM_DESC_DEFAULT, 0), /* ISO Speed, read only */ }; /* * Olympus 3000z: All of the register used to modify picture settings. * Note that most of these are the same as the 3040. */ static CameraRegisterType oly3000z_pic_regs[] = { /* camera prefix, register number, size of register */ CAM_REG_TYPE_INIT (oly3040, 01, 4, CAM_DESC_DEFAULT, 0), /* resolution/size */ CAM_REG_TYPE_INIT (oly3040, 03, 4, CAM_DESC_DEFAULT, 0), /* shutter */ CAM_REG_TYPE_INIT (oly3000z, 05, 4, CAM_DESC_DEFAULT, 0), /* aperture (f-stop) */ CAM_REG_TYPE_INIT (oly3040, 06, 4, CAM_DESC_DEFAULT, 0), /* color mode */ CAM_REG_TYPE_INIT (oly3040, 07, 4, CAM_DESC_DEFAULT, 0), /* flash */ CAM_REG_TYPE_INIT (oly3000z, 20, 4, CAM_DESC_DEFAULT, 0), /* white balance */ CAM_REG_TYPE_INIT (oly3040, 33, 4, CAM_DESC_DEFAULT, 0), /* focus mode */ CAM_REG_TYPE_INIT (oly3040,103, 4, CAM_DESC_DEFAULT, 0), /* focus position */ CAM_REG_TYPE_INIT (oly3040, 69, 8, CAM_DESC_DEFAULT, 0), /* exposure compensation */ CAM_REG_TYPE_INIT (oly3040, 70, 4, CAM_DESC_DEFAULT, 0), /* exposure metering */ CAM_REG_TYPE_INIT (oly3040, 71, 8, CAM_DESC_DEFAULT, 0), /* optical zoom */ CAM_REG_TYPE_INIT (oly3040, 72, 4, CAM_DESC_DEFAULT, 0), /* digital zoom + lense + AE lock */ CAM_REG_TYPE_INIT (oly3040, 85, 4, CAM_DESC_DEFAULT, 0), /* ISO Speed, read only */ }; /* * All of the register used to modify camera settings. */ static CameraRegisterType oly3040_cam_regs[] = { CAM_REG_TYPE_INIT (oly3040, 02, 4, CAM_DESC_DEFAULT, 0), /* date-time */ CAM_REG_TYPE_INIT (oly3040, 34, 4, CAM_DESC_SUBACTION, SIERRA_ACTION_LCD_MODE), /* lcd mode */ CAM_REG_TYPE_INIT (oly3040, 35, 4, CAM_DESC_DEFAULT, 0), /* LCD brightness */ CAM_REG_TYPE_INIT (oly3040, 38, 4, CAM_DESC_DEFAULT, 0), /* LCD auto shutoff */ CAM_REG_TYPE_INIT (oly3040, 24, 4, CAM_DESC_DEFAULT, 0), /* Camera power save */ CAM_REG_TYPE_INIT (oly3040, 23, 4, CAM_DESC_DEFAULT, 0), /* Host power save */ CAM_REG_TYPE_INIT (oly3040, 41, 4, CAM_DESC_DEFAULT, 0), /* time format, read only */ }; static const CameraRegisterSetType oly3040_desc[] = { { N_("Picture Settings"), SIZE_ADDR (CameraRegisterType, oly3040_pic_regs) }, { N_("Camera Settings"), SIZE_ADDR (CameraRegisterType, oly3040_cam_regs) }, }; /* * Olympus 750UZ: All of the register used to modify picture settings. */ static CameraRegisterType oly750uz_pic_regs[] = { /* camera prefix, register number, size of register */ CAM_REG_TYPE_INIT (oly750uz, 01, 4, CAM_DESC_DEFAULT, 0), /* resolution/size */ CAM_REG_TYPE_INIT (oly750uz, 03, 4, CAM_DESC_DEFAULT, 0), /* shutter */ CAM_REG_TYPE_INIT (oly750uz, 05, 4, CAM_DESC_DEFAULT, 0), /* aperture (f-stop) */ CAM_REG_TYPE_INIT (oly3040, 06, 4, CAM_DESC_DEFAULT, 0), /* color mode */ CAM_REG_TYPE_INIT (oly750uz, 07, 4, CAM_DESC_DEFAULT, 0), /* flash */ CAM_REG_TYPE_INIT (oly750uz, 20, 4, CAM_DESC_DEFAULT, 0), /* white balance */ CAM_REG_TYPE_INIT (oly3040, 33, 4, CAM_DESC_DEFAULT, 0), /* focus mode */ /* * Note: in "super macro" focus mode, the camera can only auto * focus. Could not figure out how to set or get super macro mode. */ CAM_REG_TYPE_INIT (oly750uz,103, 4, CAM_DESC_DEFAULT, 0), /* focus position */ CAM_REG_TYPE_INIT (oly3040, 69, 8, CAM_DESC_DEFAULT, 0), /* exposure compensation */ CAM_REG_TYPE_INIT (oly3040, 70, 4, CAM_DESC_DEFAULT, 0), /* exposure metering */ /* * Could not figure out how or if mulit-metering can be set for * the exposure metering. */ CAM_REG_TYPE_INIT (oly750uz, 71, 8, CAM_DESC_DEFAULT, 0), /* optical zoom */ CAM_REG_TYPE_INIT (oly3040, 72, 4, CAM_DESC_DEFAULT, 0), /* digital zoom + lense + AE lock */ CAM_REG_TYPE_INIT (oly750uz, 85, 4, CAM_DESC_DEFAULT, 0), /* ISO Speed, read only */ }; /* * All of the register used to modify camera settings. * * All the same as 3040. */ static CameraRegisterType oly750uz_cam_regs[] = { CAM_REG_TYPE_INIT (oly3040, 02, 4, CAM_DESC_DEFAULT, 0), /* date-time */ CAM_REG_TYPE_INIT (oly3040, 34, 4, CAM_DESC_SUBACTION, SIERRA_ACTION_LCD_MODE), /* lcd mode */ CAM_REG_TYPE_INIT (oly3040, 35, 4, CAM_DESC_DEFAULT, 0), /* LCD brightness */ CAM_REG_TYPE_INIT (oly3040, 38, 4, CAM_DESC_DEFAULT, 0), /* LCD auto shutoff */ CAM_REG_TYPE_INIT (oly3040, 24, 4, CAM_DESC_DEFAULT, 0), /* Camera power save */ CAM_REG_TYPE_INIT (oly3040, 23, 4, CAM_DESC_DEFAULT, 0), /* Host power save */ CAM_REG_TYPE_INIT (oly3040, 41, 4, CAM_DESC_DEFAULT, 0), /* time format, read only */ }; /* * Olympus SP-500UZ: All of the register used to modify picture settings. */ static CameraRegisterType olysp500uz_pic_regs[] = { /* camera prefix, register number, size of register */ CAM_REG_TYPE_INIT (olysp500uz, 01, 4, CAM_DESC_DEFAULT, 0), /* resolution/size */ CAM_REG_TYPE_INIT (olysp500uz, 03, 4, CAM_DESC_DEFAULT, 0), /* shutter */ CAM_REG_TYPE_INIT (oly750uz, 05, 4, CAM_DESC_DEFAULT, 0), /* aperture (f-stop) */ CAM_REG_TYPE_INIT (oly3040, 06, 4, CAM_DESC_DEFAULT, 0), /* color mode */ CAM_REG_TYPE_INIT (olysp500uz, 07, 4, CAM_DESC_DEFAULT, 0), /* flash */ CAM_REG_TYPE_INIT (olysp500uz, 20, 4, CAM_DESC_DEFAULT, 0), /* white balance */ CAM_REG_TYPE_INIT (oly3040, 33, 4, CAM_DESC_DEFAULT, 0), /* focus mode */ /* * Note: in "super macro" focus mode, the camera can only auto * focus. Could not figure out how to set or get super macro mode. */ CAM_REG_TYPE_INIT (oly3040,103, 4, CAM_DESC_DEFAULT, 0), /* focus position */ CAM_REG_TYPE_INIT (oly3040, 69, 8, CAM_DESC_DEFAULT, 0), /* exposure compensation */ CAM_REG_TYPE_INIT (olysp500uz, 70, 4, CAM_DESC_DEFAULT, 0), /* exposure metering */ /* * Could not figure out how or if mulit-metering can be set for * the exposure metering. */ CAM_REG_TYPE_INIT (oly750uz, 71, 8, CAM_DESC_DEFAULT, 0), /* optical zoom */ CAM_REG_TYPE_INIT (oly3040, 72, 4, CAM_DESC_DEFAULT, 0), /* digital zoom + lense + AE lock */ CAM_REG_TYPE_INIT (oly750uz, 85, 4, CAM_DESC_DEFAULT, 0), /* ISO Speed, read only */ }; /* * All of the register used to modify camera settings. * * All the same as 3040. */ static CameraRegisterType olysp500uz_cam_regs[] = { CAM_REG_TYPE_INIT (oly3040, 02, 4, CAM_DESC_DEFAULT, 0), /* date-time */ CAM_REG_TYPE_INIT (oly3040, 34, 4, CAM_DESC_SUBACTION, SIERRA_ACTION_LCD_MODE), /* lcd mode */ CAM_REG_TYPE_INIT (oly3040, 35, 4, CAM_DESC_DEFAULT, 0), /* LCD brightness */ CAM_REG_TYPE_INIT (oly3040, 38, 4, CAM_DESC_DEFAULT, 0), /* LCD auto shutoff */ CAM_REG_TYPE_INIT (oly3040, 24, 4, CAM_DESC_DEFAULT, 0), /* Camera power save */ CAM_REG_TYPE_INIT (oly3040, 23, 4, CAM_DESC_DEFAULT, 0), /* Host power save */ CAM_REG_TYPE_INIT (oly3040, 41, 4, CAM_DESC_DEFAULT, 0), /* time format, read only */ }; static const CameraRegisterSetType olysp500uz_desc[] = { { N_("Picture Settings"), SIZE_ADDR (CameraRegisterType, olysp500uz_pic_regs) }, { N_("Camera Settings"), SIZE_ADDR (CameraRegisterType, olysp500uz_cam_regs) }, }; static const CameraRegisterSetType oly750uz_desc[] = { { N_("Picture Settings"), SIZE_ADDR (CameraRegisterType, oly750uz_pic_regs) }, { N_("Camera Settings"), SIZE_ADDR (CameraRegisterType, oly750uz_cam_regs) }, }; static const CameraRegisterSetType oly3000z_desc[] = { { N_("Picture Settings"), SIZE_ADDR (CameraRegisterType, oly3000z_pic_regs) }, { /* * Assumed that these are all the same as the 3040 */ N_("Camera Settings"), SIZE_ADDR (CameraRegisterType, oly3040_cam_regs) }, }; static const char oly3040_manual[] = N_( "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." ); static const char oly750uz_manual[] = N_( "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." ); static const char default_manual[] = N_( "Default sierra driver:\n\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" ); const CameraDescType olysp500uz_cam_desc = { olysp500uz_desc, oly750uz_manual, SIERRA_EXT_PROTO, }; const CameraDescType oly750uz_cam_desc = { oly750uz_desc, oly750uz_manual, SIERRA_EXT_PROTO, }; const CameraDescType oly3040_cam_desc = { oly3040_desc, oly3040_manual, SIERRA_EXT_PROTO, }; const CameraDescType oly3000z_cam_desc = { oly3000z_desc, oly3040_manual, SIERRA_EXT_PROTO, }; const CameraDescType sierra_default_cam_desc = { oly3040_desc, default_manual, 0, }; libgphoto2-2.5.9/camlibs/sierra/sierra.c0000644000175000001440000022001212610415617015045 00000000000000/* sierra.c: * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include "sierra.h" #include #include <_stdint.h> #include #include #include #include #include #include "sierra-desc.h" #include "library.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "sierra" static int get_jpeg_data(const char *data, int data_size, char **jpeg_data, int *jpeg_size); /* Useful markers */ static const char JPEG_SOI_MARKER[] = { (char)0xFF, (char)0xD8, '\0' }; static const char JPEG_SOF_MARKER[] = { (char)0xFF, (char)0xD9, '\0' }; static const char JPEG_APP1_MARKER[] = { (char)0xFF, (char)0xE1, '\0' }; static const char TIFF_SOI_MARKER[] = { (char)0x49, (char)0x49, (char)0x2A, (char)0x00, (char)0x08, '\0' }; static struct { const char *manuf; const char *model; SierraModel sierra_model; int usb_vendor; int usb_product; SierraFlags flags; struct CameraDesc const *cam_desc; } sierra_cameras[] = { /* Manufacturer, Camera Model, Sierra Model, USBvendor id, USB product id, USB wrapper protocol, CameraDesc) */ {"Agfa", "ePhoto 307", SIERRA_MODEL_DEFAULT, 0, 0, SIERRA_NO_51, NULL}, {"Agfa", "ePhoto 780", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Agfa", "ePhoto 780C", SIERRA_MODEL_DEFAULT, 0, 0, SIERRA_NO_51 | SIERRA_LOW_SPEED, NULL }, {"Agfa", "ePhoto 1280", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Agfa", "ePhoto 1680", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, /* unclear, if driven by fuji driver or by sierra driver */ {"Apple", "QuickTake 200 (Sierra Mode)", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Chinon", "ES-1000", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Epson", "PhotoPC 500", SIERRA_MODEL_EPSON, 0, 0, 0, NULL }, {"Epson", "PhotoPC 550", SIERRA_MODEL_EPSON, 0, 0, 0, NULL }, {"Epson", "PhotoPC 600", SIERRA_MODEL_EPSON, 0, 0, 0, NULL }, {"Epson", "PhotoPC 650", SIERRA_MODEL_EPSON, 0, 0, SIERRA_NO_51 | SIERRA_LOW_SPEED, NULL }, {"Epson", "PhotoPC 700", SIERRA_MODEL_EPSON, 0, 0, SIERRA_NO_51, NULL }, {"Epson", "PhotoPC 800", SIERRA_MODEL_EPSON, 0, 0, 0, NULL }, {"Epson", "PhotoPC 850z", SIERRA_MODEL_EPSON, 0x4b8, 0x402, 0, NULL}, {"Epson", "PhotoPC 3000z", SIERRA_MODEL_CAM_DESC, 0x4b8, 0x403, 0, &ep3000z_cam_desc}, {"Nikon", "CoolPix 100", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Nikon", "CoolPix 300", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Nikon", "CoolPix 700", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Nikon", "CoolPix 800", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Nikon", "CoolPix 880",SIERRA_MODEL_CAM_DESC, 0x04b0, 0x0103, 0, &cp880_cam_desc}, {"Nikon", "CoolPix 900", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Nikon", "CoolPix 900S", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Nikon", "CoolPix 910", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Nikon", "CoolPix 950", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Nikon", "CoolPix 950S", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Nikon", "CoolPix 990", SIERRA_MODEL_DEFAULT, 0x04b0, 0x0102, 0, NULL}, {"Nikon", "CoolPix 995", SIERRA_MODEL_CAM_DESC, 0x04b0, 0x0104, SIERRA_WRAP_USB_OLYMPUS, &cp995_cam_desc}, {"Nikon", "CoolPix 2500 (Sierra Mode)", SIERRA_MODEL_CAM_DESC, 0x04b0, 0x0108, SIERRA_WRAP_USB_NIKON | SIERRA_NO_51, &cp2500_cam_desc}, {"Nikon", "CoolPix 2100 (Sierra Mode)", SIERRA_MODEL_CAM_DESC, 0x04b0, 0x0116, SIERRA_WRAP_USB_NIKON | SIERRA_NO_51, &cp2500_cam_desc}, {"Nikon", "CoolPix 4300 (Sierra Mode)", SIERRA_MODEL_CAM_DESC, 0x04b0, 0x010e, SIERRA_WRAP_USB_NIKON | SIERRA_NO_51, &cp4300_cam_desc}, {"Nikon", "CoolPix 3500 (Sierra Mode)", SIERRA_MODEL_CAM_DESC, 0x04b0, 0x0110, SIERRA_WRAP_USB_NIKON | SIERRA_NO_51, &cp880_cam_desc}, {"Nikon", "D100 (Sierra Mode)", SIERRA_MODEL_CAM_DESC, 0x04b0, 0x0401, SIERRA_WRAP_USB_NIKON | SIERRA_NO_51, &cp880_cam_desc}, {"Olympus", "D-100Z", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-200L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-220L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-300L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-320L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-330R", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-340L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-340R", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-360L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-400L Zoom", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-450Z", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-460Z", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-500L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-600L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-600XL", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "D-620L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-400", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-400L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-410", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-410L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-420", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-420L", SIERRA_MODEL_OLYMPUS, 0, 0, SIERRA_MID_SPEED, NULL }, {"Olympus", "C-700UZ", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x105, SIERRA_WRAP_USB_OLYMPUS, &oly3040_cam_desc}, {"Olympus", "C-750UZ", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x105, SIERRA_WRAP_USB_OLYMPUS, &oly750uz_cam_desc}, {"Olympus", "C-770UZ", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x105, SIERRA_WRAP_USB_OLYMPUS, &oly750uz_cam_desc}, {"Olympus", "C-800", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-800L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-820", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-820L", SIERRA_MODEL_OLYMPUS, 0, 0, SIERRA_MID_SPEED, NULL }, {"Olympus", "C-830L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-840L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-860L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-900 Zoom", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-900L Zoom", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, /* http://sourceforge.net/tracker/index.php?func=detail&aid=1082569&group_id=8874&atid=358874 * strangely only works with low speed */ {"Olympus", "C-990 Zoom", SIERRA_MODEL_OLYMPUS, 0, 0, SIERRA_LOW_SPEED, NULL }, {"Olympus", "C-1000L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-1400L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-1400XL", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-2000Z", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-2020Z", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, {"Olympus", "C-2040Z", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x105, SIERRA_WRAP_USB_OLYMPUS, &oly3040_cam_desc}, {"Olympus", "C-2100UZ", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x100, 0, &oly3040_cam_desc}, {"Olympus", "C-2500L", SIERRA_MODEL_OLYMPUS, 0, 0, 0, NULL }, /* * Note: The 3000z can't be auto selected, as it has the same USB * id as the 2040 (and others, but the others are still using the * the 3040 desc), so you have to set the camera "model" via the * front end (gtkam or gphoto2 command line) in order to use it. */ {"Olympus", "C-3000Z", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x100, 0, &oly3000z_cam_desc}, {"Olympus", "C-3020Z", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x105, SIERRA_WRAP_USB_OLYMPUS, &oly3040_cam_desc}, {"Olympus", "C-3030Z", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x100, 0, &oly3040_cam_desc}, {"Olympus", "C-3040Z", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x105, SIERRA_WRAP_USB_OLYMPUS, &oly3040_cam_desc}, {"Olympus", "C-4040Z", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x105, SIERRA_WRAP_USB_OLYMPUS, &oly3040_cam_desc}, {"Olympus", "C-5050Z", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x105, SIERRA_WRAP_USB_OLYMPUS, &oly3040_cam_desc}, {"Olympus", "SP-500UZ", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x109, SIERRA_WRAP_USB_OLYMPUS, &olysp500uz_cam_desc}, {"Olympus", "C-370Z", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x109, SIERRA_WRAP_USB_OLYMPUS, &oly3040_cam_desc}, {"Olympus", "X-450", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x109, SIERRA_WRAP_USB_OLYMPUS, &oly3040_cam_desc}, {"Olympus", "D-535Z", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x109, SIERRA_WRAP_USB_OLYMPUS, &oly3040_cam_desc}, {"Olympus", "fe-200", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x109, SIERRA_WRAP_USB_OLYMPUS, &oly3040_cam_desc}, /* {"Olympus", "E-520", SIERRA_MODEL_CAM_DESC, 0x07b4, 0x110, SIERRA_WRAP_USB_OLYMPUS, &oly3040_cam_desc}, */ {"Panasonic", "Coolshot NV-DCF5E", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Pentax", "Optio 450", SIERRA_MODEL_DEFAULT, 0x0a17,0x0007, SIERRA_WRAP_USB_PENTAX, NULL }, {"Pentax", "Optio 33WR", SIERRA_MODEL_DEFAULT, 0x0a17,0x0009, SIERRA_WRAP_USB_PENTAX, NULL }, /* has only very bare reactions {"Pentax", "Optio W90 (Sierra Mode)", SIERRA_MODEL_DEFAULT, 0x0a17,0x00f6, SIERRA_WRAP_USB_PENTAX, NULL }, */ {"Polaroid", "PDC 640", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Polaroid", "PDC 2300Z", SIERRA_MODEL_DEFAULT, 0x0546, 0x0daf, SIERRA_SKIP_INIT, NULL }, {"Sanyo", "DSC-X300", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Sanyo", "DSC-X350", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Sanyo", "VPC-G200", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Sanyo", "VPC-G200EX", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Sanyo", "VPC-G210", SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, {"Sanyo", "VPC-G250", SIERRA_MODEL_DEFAULT, 0, 0, SIERRA_NO_51, NULL }, {"Sierra Imaging", "SD640",SIERRA_MODEL_DEFAULT, 0, 0, 0, NULL }, /* * Added by Sean Bruno on July 22, 2004 to support the Toshiba * cameras below. */ {"Toshiba", "PDR-M60", SIERRA_MODEL_DEFAULT, 0x1132, 0x4332, SIERRA_NO_51 | SIERRA_NO_REGISTER_40 | SIERRA_NO_USB_CLEAR, NULL}, {"Toshiba", "PDR-M61", SIERRA_MODEL_DEFAULT, 0x1132, 0x4335, SIERRA_NO_51 | SIERRA_NO_REGISTER_40 | SIERRA_NO_USB_CLEAR, NULL}, {"Toshiba", "PDR-M65", SIERRA_MODEL_DEFAULT, 0x1132, 0x4334, SIERRA_NO_51 | SIERRA_NO_REGISTER_40 | SIERRA_NO_USB_CLEAR, NULL}, {NULL, NULL, 0, 0, 0, 0, NULL} }; static struct { SierraSpeed speed; int bit_rate; } SierraSpeeds[] = { {SIERRA_SPEED_9600 , 9600}, {SIERRA_SPEED_19200 , 19200}, {SIERRA_SPEED_38400 , 38400}, {SIERRA_SPEED_57600 , 57600}, {SIERRA_SPEED_115200, 115200}, {0, 0} }; int camera_id (CameraText *id) { strcpy(id->text, "sierra"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { int x; CameraAbilities a; for (x = 0; sierra_cameras[x].manuf; x++) { memset(&a, 0, sizeof(a)); strcpy (a.model, sierra_cameras[x].manuf); strcat (a.model, ":"); strcat (a.model, sierra_cameras[x].model); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; if ((sierra_cameras[x].usb_vendor > 0) && (sierra_cameras[x].usb_product > 0)) { #ifdef linux /* The USB SCSI generic passthrough driver only works on Linux currently */ if (sierra_cameras[x].flags & (SIERRA_WRAP_USB_OLYMPUS|SIERRA_WRAP_USB_PENTAX|SIERRA_WRAP_USB_NIKON)) a.port |= GP_PORT_USB_SCSI; else #endif a.port |= GP_PORT_USB; } a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; if (sierra_cameras[x].flags & SIERRA_LOW_SPEED) { /* * Camera supports 9600 -> 38400 */ a.speed[3] = 0; } else { a.speed[3] = 57600; if (sierra_cameras[x].flags & SIERRA_MID_SPEED) { /* * Camera supports 9600 -> 57600. */ a.speed[4] = 0; } else { a.speed[4] = 115200; a.speed[5] = 0; } } a.operations = GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CAPTURE_PREVIEW | GP_OPERATION_CONFIG; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_AUDIO; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL | GP_FOLDER_OPERATION_PUT_FILE; a.usb_vendor = sierra_cameras[x].usb_vendor; a.usb_product = sierra_cameras[x].usb_product; gp_abilities_list_append (list, a); } return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; CHECK (camera_start (camera, context)); CHECK_STOP (camera, sierra_list_files (camera, folder, list, context)); return (camera_stop (camera, context)); } static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; CHECK (camera_start (camera, context)); CHECK_STOP (camera, sierra_list_folders (camera, folder, list, context)); return (camera_stop (camera, context)); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int n; SierraPicInfo i; /* * Get the file number from the CameraFilesystem. We need numbers * starting with 1. */ CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); n++; info->file.fields = GP_FILE_INFO_NONE; info->preview.fields = GP_FILE_INFO_NONE; info->audio.fields = GP_FILE_INFO_NONE; info->file.permissions = GP_FILE_PERM_READ; /* * Get information about this image. Don't make this fatal as * at least the "Agfa ePhoto307" doesn't support this command. */ CHECK (camera_start (camera, context)); CHECK_STOP (camera, sierra_change_folder (camera, folder, context)); memset (&i, 0, sizeof (SierraPicInfo)); CHECK_STOP (camera, sierra_get_pic_info (camera, n, &i, context)); /* Size of file */ if (i.size_file) { info->file.fields |= GP_FILE_INFO_SIZE; info->file.size = i.size_file; } /* Size of preview */ if (i.size_preview) { info->preview.fields |= GP_FILE_INFO_SIZE; info->preview.size = i.size_preview; } /* Audio data? */ if (i.size_audio) { /* Size */ info->audio.size = i.size_audio; info->audio.fields |= GP_FILE_INFO_SIZE; /* Type */ strcpy (info->audio.type, GP_MIME_WAV); info->audio.fields |= GP_FILE_INFO_TYPE; } #if 0 /* need to add GMT -> local conversion first */ if (i.date) { info->file.fields |= GP_FILE_INFO_MTIME; info->file.mtime = i.date; /* FIXME: convert from GMT to localtime */ } #endif /* Type of image and preview? */ if (strstr (filename, ".MOV") != NULL) { strcpy (info->file.type, GP_MIME_QUICKTIME); strcpy (info->preview.type, GP_MIME_JPEG); } else if (strstr (filename, ".TIF") != NULL) { strcpy (info->file.type, GP_MIME_TIFF); strcpy (info->preview.type, GP_MIME_TIFF); } else { strcpy (info->file.type, GP_MIME_JPEG); strcpy (info->preview.type, GP_MIME_JPEG); } info->file.fields |= GP_FILE_INFO_TYPE; info->preview.fields |= GP_FILE_INFO_TYPE; /* Image protected? */ info->file.fields |= GP_FILE_INFO_PERMISSIONS; if (i.locked == SIERRA_LOCKED_NO) info->file.permissions |= GP_FILE_PERM_DELETE; return (camera_stop (camera, context)); } static int set_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo info, void *data, GPContext *context) { Camera *camera = data; int n; SierraPicInfo i; CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); n++; CHECK (camera_start (camera, context)); CHECK_STOP (camera, sierra_change_folder (camera, folder, context)); CHECK_STOP (camera, sierra_get_pic_info (camera, n, &i, context)); if (info.file.fields & GP_FILE_INFO_PERMISSIONS) { if (info.file.permissions & GP_FILE_PERM_DELETE) { if (i.locked == SIERRA_LOCKED_YES) { CHECK_STOP (camera, sierra_set_locked (camera, n, SIERRA_LOCKED_NO, context)); } } else { if (i.locked == SIERRA_LOCKED_NO) { CHECK_STOP (camera, sierra_set_locked (camera, n, SIERRA_LOCKED_YES, context)); } } } return (camera_stop (camera, context)); } int camera_start (Camera *camera, GPContext *context) { GPPortSettings settings; unsigned int i; SierraSpeed speed; GP_DEBUG ("Establishing connection"); switch (camera->port->type) { case GP_PORT_SERIAL: /* If needed, change speed. */ CHECK (gp_port_get_settings (camera->port, &settings)); if (camera->pl->speed != settings.serial.speed) { for (i = 0; SierraSpeeds[i].bit_rate; i++) if (camera->pl->speed == SierraSpeeds[i].bit_rate) break; if (SierraSpeeds[i].bit_rate) speed = SierraSpeeds[i].speed; else { GP_DEBUG ("Invalid speed %i. Using 19200 " "(default).", camera->pl->speed); speed = SIERRA_SPEED_19200; } CHECK (sierra_set_speed (camera, speed, context)); } break; case GP_PORT_USB: case GP_PORT_USB_SCSI: CHECK (gp_port_set_timeout (camera->port, 5000)); break; default: break; } return (GP_OK); } int camera_stop (Camera *camera, GPContext *context) { GP_DEBUG ("Closing connection"); switch (camera->port->type) { case GP_PORT_SERIAL: CHECK (sierra_set_speed (camera, SIERRA_SPEED_19200, context)); break; default: break; } return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("sierra camera_exit"); if (camera->pl) { free (camera->pl); camera->pl = NULL; } return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int regd, n; char *jpeg_data = NULL; int jpeg_size; const char *data, *mime_type; long unsigned int size; int download_size, audio_info[8]; unsigned int transferred; /* * Get the file number from the CameraFileSystem. * We need file numbers starting with 1. */ CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); n++; /* In which register do we have to look for data? */ switch (type) { case GP_FILE_TYPE_PREVIEW: case GP_FILE_TYPE_EXIF: regd = 15; break; case GP_FILE_TYPE_NORMAL: regd = 14; break; case GP_FILE_TYPE_AUDIO: regd = 44; break; default: return (GP_ERROR_NOT_SUPPORTED); } /* Set the working folder */ CHECK (camera_start (camera, context)); CHECK_STOP (camera, sierra_change_folder (camera, folder, context)); /* * We need the file size in order to display progress information. * Since we _can_ run without progress information, make failures * here not prevent the download - but the failure should still * show up in any logs. * * Some cameras do not return anything useful for register 47, so * don't try to use it at all (via sierra_get_pic_info) here. */ download_size = 0; switch (type) { case GP_FILE_TYPE_PREVIEW: case GP_FILE_TYPE_EXIF: CHECK_STOP (camera, sierra_get_size(camera, 13, n, &download_size, context)); break; case GP_FILE_TYPE_NORMAL: CHECK_STOP (camera, sierra_get_size(camera, 12, n, &download_size, context)); break; case GP_FILE_TYPE_AUDIO: CHECK_STOP (camera, sierra_get_string_register (camera, 43, n, NULL, (unsigned char *) &audio_info, &transferred, context)); if (transferred == 0) download_size = 0; else download_size = audio_info[0]; break; default: return (GP_ERROR_NOT_SUPPORTED); } /* Get the file */ CHECK_STOP (camera, sierra_get_string_register (camera, regd, n, file, NULL, (unsigned int *)&download_size, context)); if (download_size == 0) { /* * Assume a failure. At least coolpix 880 returns no error * and no data when asked to download audio. */ return (GP_ERROR_NOT_SUPPORTED); } CHECK (camera_stop (camera, context)); /* Now get the data and do some post-processing */ CHECK (gp_file_get_data_and_size (file, &data, &size)); switch (type) { case GP_FILE_TYPE_PREVIEW: /* * Thumbnails are always JPEG files (as far as we know...) */ CHECK (gp_file_set_mime_type (file, GP_MIME_JPEG)); /* * Some camera (e.g. Epson 3000z) send the EXIF application * data as thumbnail of a picture. The JPEG file need to be * extracted. Equally for movies, the JPEG thumbnail is * contained within a .MOV file. It needs to be extracted. */ get_jpeg_data (data, size, &jpeg_data, &jpeg_size); if (jpeg_data) { /* Append data to the output file */ gp_file_set_data_and_size (file, jpeg_data, jpeg_size); } else { /* No valid JPEG data found */ return GP_ERROR_CORRUPTED_DATA; } break; case GP_FILE_TYPE_NORMAL: /* * Detect the mime type. If the resulting mime type is * GP_MIME_RAW, manually set GP_MIME_QUICKTIME. */ CHECK (gp_file_detect_mime_type (file)); CHECK (gp_file_get_mime_type (file, &mime_type)); if (!strcmp (mime_type, GP_MIME_RAW)) CHECK (gp_file_set_mime_type (file, GP_MIME_QUICKTIME)); break; case GP_FILE_TYPE_AUDIO: CHECK (gp_file_set_mime_type (file, GP_MIME_WAV)); break; default: return (GP_ERROR_NOT_SUPPORTED); } return (GP_OK); } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; int count; GP_DEBUG ( "*** sierra_folder_delete_all"); GP_DEBUG ("*** folder: %s", folder); /* Set the working folder and delete all pictures there */ CHECK (camera_start (camera, context)); CHECK_STOP (camera, sierra_change_folder (camera, folder, context)); CHECK_STOP (camera, sierra_delete_all (camera, context)); /* * Mick Grant found out that his * Nicon CoolPix 880 won't have deleted any picture at this point. * It seems that those cameras just acknowledge the command but do * nothing in the end. Therefore, we have to count the number of * pictures that are now on the camera. If there indeed are any * pictures, return an error. libgphoto2 will then try to manually * delete them one-by-one. */ CHECK_STOP (camera, sierra_get_int_register (camera, 10, &count, context)); if (count > 0) return (GP_ERROR); return (camera_stop (camera, context)); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int n; unsigned int id; GP_DEBUG ("*** sierra_file_delete"); GP_DEBUG ("*** folder: %s", folder); GP_DEBUG ("*** filename: %s", filename); id = gp_context_progress_start (context, 4, "%s", filename); /* * XXX the CHECK() macro's don't allow for cleanup on error. */ /* Get the file number from the CameraFilesystem */ gp_context_progress_update (context, id, 0); CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); /* Set the working folder and delete the file */ CHECK (camera_start (camera, context)); CHECK_STOP (camera, sierra_change_folder (camera, folder, context)); /* * The following command takes a while, and there is no way to add * a nice progress bar, since it is a single sierra_action call. * so multiple gp_context_progress_update () calls can not add * anything. */ CHECK_STOP (camera, sierra_delete (camera, n + 1, context)); CHECK (camera_stop (camera, context)); gp_context_progress_stop (context, id); return (GP_OK); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { CHECK (camera_start (camera, context)); CHECK_STOP (camera, sierra_capture (camera, type, path, context)); CHECK (camera_stop (camera, context)); return (GP_OK); } static int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { CHECK (camera_start (camera, context)); CHECK_STOP (camera, sierra_capture_preview (camera, file, context)); CHECK (camera_stop (camera, context)); return (GP_OK); } static int put_file_func (CameraFilesystem * fs, const char *folder, const char *filename, CameraFileType type, CameraFile * file, void *data, GPContext *context) { Camera *camera = data; char *picture_folder; int ret; const char *data_file; long unsigned int data_size; int available_memory; GP_DEBUG ("*** put_file_func"); GP_DEBUG ("*** folder: %s", folder); GP_DEBUG ("*** filename: %s", filename); if (type != GP_FILE_TYPE_NORMAL) return GP_ERROR_BAD_PARAMETERS; /* Check the size */ CHECK (gp_file_get_data_and_size (file, &data_file, &data_size)); if ( data_size == 0 ) { gp_context_error (context, _("The file to be uploaded has a null length")); return GP_ERROR_BAD_PARAMETERS; } /* Initialize the camera */ CHECK (camera_start (camera, context)); /* Check the battery capacity */ CHECK (sierra_check_battery_capacity (camera, context)); /* Check the available memory */ CHECK (sierra_get_memory_left(camera, &available_memory, context)); if (available_memory < data_size) { gp_context_error (context, _("Not enough memory available on the memory card")); return GP_ERROR_NO_MEMORY; } /* Get the name of the folder containing the pictures */ if ( (ret = sierra_get_picture_folder(camera, &picture_folder)) != GP_OK ) { gp_context_error (context, _("Cannot retrieve the name of the folder containing the pictures")); return ret; } /* Check the destination folder is the folder containing the pictures. Otherwise, the upload is not supported by the camera. */ if ( strcmp(folder, picture_folder) ) { gp_context_error (context, _("Upload is supported into the '%s' folder only"), picture_folder); free(picture_folder); return GP_ERROR_NOT_SUPPORTED; } free(picture_folder); /* It is not required to set the destination folder: the command will be ignored by the camera and the uploaded file will be put into the picure folder */ /* Upload the file */ CHECK_STOP (camera, sierra_upload_file (camera, file, context)); return (camera_stop (camera, context)); } #ifdef UNUSED_CODE static void dump_register (Camera *camera, GPContext *context) { int ret, value, i; const char *description[] = { "?", /* 0 */ "resolution", "date", "shutter speed", "current image number", "aperture", "color mode", "flash mode", "?", "?", "frames taken", /* 10 */ "frames left", "size of current image", "size of thumbnail of current image", "current preview (captured)", "?", "battery life", "?", "?", "brightness/contrast", "white balance", /* 20 */ "?", "camera id", "auto off (host)", "auto off (field)", "serial number", "software revision", "?", "memory left", "?", "?", /* 30 */ "?", "?", "lens mode", "?", "lcd brightness", "?", "?", "lcd auto off", "?", "?", /* 40 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", /* 50 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", /* 60 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "spot metering mode", /* 70 */ "?", "zoom", "?", "?", "?", "?", "?", "?", "current filename", "?", /* 80 */ "?", "?", "number of folders in current folder/folder number", "current folder name", "?", "?", "?", "?", "?", "?", /* 90 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", /* 100 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", /* 110 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", /* 120 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?" /* 130 */ }; GP_DEBUG ("*** Register:"); for (i = 0; i < 128; i++) { ret = sierra_get_int_register (camera, i, &value, context); if (ret >= 0) GP_DEBUG ( "*** %3i: %12i (%s)", i, value, description [i]); } } #endif static int camera_get_config_olympus (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *child; CameraWidget *section; char t[1024]; int ret, value; float float_value; GP_DEBUG ("*** camera_get_config_olympus"); CHECK (camera_start (camera, context)); gp_widget_new (GP_WIDGET_WINDOW, _("Camera Configuration"), window); gp_widget_new (GP_WIDGET_SECTION, _("Picture Settings"), §ion); gp_widget_append (*window, section); /* Resolution */ GP_DEBUG ("Resolution..."); ret = sierra_get_int_register (camera, 1, &value, context); GP_DEBUG ("... '%s'.", gp_result_as_string (ret)); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Resolution"), &child); gp_widget_add_choice (child, _("Auto")); gp_widget_add_choice (child, _("Standard")); gp_widget_add_choice (child, _("High")); gp_widget_add_choice (child, _("Best")); switch (value) { case 0: strcpy (t, _("Auto")); break; case 1: strcpy (t, _("Standard")); break; case 2: strcpy (t, _("High")); break; case 3: strcpy (t, _("Best")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* Shutter Speed */ ret = sierra_get_int_register (camera, 3, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RANGE, _("Shutter Speed (microseconds, 0 auto)"), &child); gp_widget_set_range (child, 0, 2000000, 1); float_value = value; gp_widget_set_value (child, &float_value); gp_widget_append (section, child); } /* Aperture */ ret = sierra_get_int_register (camera, 5, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Aperture"), &child); gp_widget_add_choice (child, _("Auto")); gp_widget_add_choice (child, _("Low")); gp_widget_add_choice (child, _("Medium")); gp_widget_add_choice (child, _("High")); switch (value) { case 0: strcpy (t, _("Auto")); break; case 1: strcpy (t, _("Low")); break; case 2: strcpy (t, _("Medium")); break; case 3: strcpy (t, _("High")); break; default: sprintf(t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* Color Mode */ ret = sierra_get_int_register (camera, 6, &value, context); if (ret >= 0) { /* * Those values are for a C-2020 Z. If your model differs, * we have to distinguish models here. */ gp_widget_new (GP_WIDGET_RADIO, _("Color Mode"), &child); gp_widget_add_choice (child, _("Normal")); gp_widget_add_choice (child, _("Black/White")); gp_widget_add_choice (child, _("Sepia")); gp_widget_add_choice (child, _("White Board")); gp_widget_add_choice (child, _("Black Board")); switch (value) { case 0: strcpy (t, _("Normal")); break; case 1: strcpy (t, _("Black/White")); break; case 2: strcpy (t, _("Sepia")); break; case 3: strcpy (t, _("White Board")); break; case 4: strcpy (t, _("Black Board")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* Flash Mode */ ret = sierra_get_int_register (camera, 7, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Flash Mode"), &child); gp_widget_add_choice (child, _("Auto")); gp_widget_add_choice (child, _("Force")); gp_widget_add_choice (child, _("Off")); gp_widget_add_choice (child, _("Red-eye Reduction")); gp_widget_add_choice (child, _("Slow Sync")); switch (value) { case 0: strcpy (t, _("Auto")); break; case 1: strcpy (t, _("Force")); break; case 2: strcpy (t, _("Off")); break; case 3: strcpy (t, _("Red-eye Reduction")); break; case 4: strcpy (t, _("Slow Sync")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* Brightness/Contrast */ ret = sierra_get_int_register (camera, 19, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Brightness/Contrast"), &child); gp_widget_add_choice (child, _("Normal")); gp_widget_add_choice (child, _("Bright+")); gp_widget_add_choice (child, _("Bright-")); gp_widget_add_choice (child, _("Contrast+")); gp_widget_add_choice (child, _("Contrast-")); switch (value) { case 0: strcpy (t, _("Normal")); break; case 1: strcpy (t, _("Bright+")); break; case 2: strcpy (t, _("Bright-")); break; case 3: strcpy (t, _("Contrast+")); break; case 4: strcpy (t, _("Contrast-")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* White Balance */ ret = sierra_get_int_register (camera, 20, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("White Balance"), &child); gp_widget_add_choice (child, _("Auto")); gp_widget_add_choice (child, _("Skylight")); gp_widget_add_choice (child, _("Fluorescent")); gp_widget_add_choice (child, _("Tungsten")); gp_widget_add_choice (child, _("Cloudy")); switch (value) { case 0: strcpy (t, _("Auto")); break; case 1: strcpy (t, _("Skylight")); break; case 2: strcpy (t, _("Fluorescent")); break; case 3: strcpy (t, _("Tungsten")); break; case 255: strcpy (t, _("Cloudy")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* Lens Mode */ ret = sierra_get_int_register (camera, 33, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Lens Mode"), &child); gp_widget_add_choice (child, _("Macro")); gp_widget_add_choice (child, _("Normal")); gp_widget_add_choice (child, _("Infinity/Fish-eye")); switch (value) { case 1: strcpy (t, _("Macro")); break; case 2: strcpy (t, _("Normal")); break; case 3: strcpy (t, _("Infinity/Fish-eye")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* Spot Metering Mode */ ret = sierra_get_int_register (camera, 70, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Spot Metering Mode"), &child); gp_widget_add_choice (child, _("On")); gp_widget_add_choice (child, _("Off")); switch (value) { case 5: strcpy (t, _("Off")); break; case 3: strcpy (t, _("On")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* Zoom */ ret = sierra_get_int_register (camera, 72, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Zoom"), &child); gp_widget_add_choice (child, _("1x")); gp_widget_add_choice (child, _("1.6x")); gp_widget_add_choice (child, _("2x")); gp_widget_add_choice (child, _("2.5x")); switch (value) { case 0: strcpy (t, _("1x")); break; case 8: strcpy (t, _("2x")); break; case 520: strcpy (t, _("1.6x")); break; case 1032: strcpy (t, _("2.5x")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } gp_widget_new (GP_WIDGET_SECTION, _("Camera Settings"), §ion); gp_widget_append (*window, section); /* Auto Off (host) */ ret = sierra_get_int_register (camera, 23, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RANGE, _("Auto Off (host) " "(in seconds)"), &child); gp_widget_set_info (child, _("How long will it take until the " "camera powers off when connected to the " "computer?")); gp_widget_set_range (child, 0, 255, 1); gp_widget_set_value (child, &value); gp_widget_append (section, child); } /* Auto Off (field) */ ret = sierra_get_int_register (camera, 24, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RANGE, _("Auto Off (field) " "(in seconds)"), &child); gp_widget_set_info (child, _("How long will it take until the " "camera powers off when not connected to " "the computer?")); gp_widget_set_range (child, 0, 255, 1); gp_widget_set_value (child, &value); gp_widget_append (section, child); } /* LCD Brightness */ ret = sierra_get_int_register (camera, 35, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RANGE, _("LCD Brightness"), &child); gp_widget_set_range (child, 1, 7, 1); gp_widget_set_value (child, &value); gp_widget_append (section, child); } /* LCD Auto Off */ ret = sierra_get_int_register (camera, 38, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RANGE, _("LCD Auto Off (in " "seconds)"), &child); gp_widget_set_range (child, 0, 255, 1); gp_widget_set_value (child, &value); gp_widget_append (section, child); } return (camera_stop (camera, context)); } static int camera_set_config_olympus (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *child; char *value; int i = 0; float float_value; GP_DEBUG ("*** camera_set_config"); CHECK (camera_start (camera, context)); /* Resolution */ GP_DEBUG ("*** setting resolution"); if ((gp_widget_get_child_by_label (window, _("Resolution"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("Auto")) == 0) { i = 0; } else if (strcmp (value, _("Standard")) == 0) { i = 1; } else if (strcmp (value, _("High")) == 0) { i = 2; } else if (strcmp (value, _("Best")) == 0) { i = 3; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 1, i, context)); } /* Shutter Speed */ GP_DEBUG ("*** setting shutter speed"); if ((gp_widget_get_child_by_label (window, _("Shutter Speed (microseconds, 0 auto)"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &float_value); i = float_value; CHECK_STOP (camera, sierra_set_int_register (camera, 3, i, context)); } /* Aperture */ GP_DEBUG ("*** setting aperture"); if ((gp_widget_get_child_by_label (window, _("Aperture"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("Auto")) == 0) { i = 0; } else if (strcmp (value, _("Low")) == 0) { i = 1; } else if (strcmp (value, _("Medium")) == 0) { i = 2; } else if (strcmp (value, _("High")) == 0) { i = 3; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 5, i, context)); } /* Color Mode */ GP_DEBUG ("*** setting color mode"); if ((gp_widget_get_child_by_label (window, _("Color Mode"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("Normal")) == 0) { i = 0; } else if (strcmp (value, _("Black/White")) == 0) { i = 1; } else if (strcmp (value, _("Sepia")) == 0) { i = 2; } else if (strcmp (value, _("White Board")) == 0) { i = 3; } else if (strcmp (value, _("Black Board")) == 0) { i = 4; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 6, i, context)); } /* Flash Mode */ GP_DEBUG ("*** setting flash mode"); if ((gp_widget_get_child_by_label (window, _("Flash Mode"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("Auto")) == 0) { i = 0; } else if (strcmp (value, _("Force")) == 0) { i = 1; } else if (strcmp (value, _("Off")) == 0) { i = 2; } else if (strcmp (value, _("Red-eye Reduction")) == 0) { i = 3; } else if (strcmp (value, _("Slow Sync")) == 0) { i = 4; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 7, i, context)); } /* Brightness/Contrast */ GP_DEBUG ( "*** setting brightness/contrast"); if ((gp_widget_get_child_by_label (window, _("Brightness/Contrast"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("Normal")) == 0) { i = 0; } else if (strcmp (value, _("Bright+")) == 0) { i = 1; } else if (strcmp (value, _("Bright-")) == 0) { i = 2; } else if (strcmp (value, _("Contrast+")) == 0) { i = 3; } else if (strcmp (value, _("Contrast-")) == 0) { i = 4; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 19, i, context)); } /* White Balance */ GP_DEBUG ("*** setting white balance"); if ((gp_widget_get_child_by_label (window, _("White Balance"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("Auto")) == 0) { i = 0; } else if (strcmp (value, _("Skylight")) == 0) { i = 1; } else if (strcmp (value, _("Fluorescent")) == 0) { i = 2; } else if (strcmp (value, _("Tungsten")) == 0) { i = 3; } else if (strcmp (value, _("Cloudy")) == 0) { i = 4; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 20, i, context)); } /* Lens Mode */ GP_DEBUG ("*** setting lens mode"); if ((gp_widget_get_child_by_label (window, _("Lens Mode"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("Macro")) == 0) { i = 1; } else if (strcmp (value, _("Normal")) == 0) { i = 2; } else if (strcmp (value, _("Infinity/Fish-eye")) == 0) { i = 3; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 33, i, context)); } /* Spot Metering Mode */ GP_DEBUG ( "*** setting spot metering mode"); if ((gp_widget_get_child_by_label (window, _("Spot Metering Mode"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("On")) == 0) { i = 3; } else if (strcmp (value, _("Off")) == 0) { i = 5; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 33, i, context)); } /* Zoom */ GP_DEBUG ("*** setting zoom"); if ((gp_widget_get_child_by_label (window, _("Zoom"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, "1x") == 0) { i = 0; } else if (strcmp (value, "2x") == 0) { i = 8; } else if (strcmp (value, "1.6x") == 0) { i = 520; } else if (strcmp (value, "2.5x") == 0) { i = 1032; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 72, i, context)); } /* Auto Off (host) */ GP_DEBUG ("*** setting auto off (host)"); if ((gp_widget_get_child_by_label (window, _("Auto Off (host) " "(in seconds)"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &i); CHECK_STOP (camera, sierra_set_int_register (camera, 23, i, context)); } /* Auto Off (field) */ GP_DEBUG ( "*** setting auto off (field)"); if ((gp_widget_get_child_by_label (window, _("Auto Off (field) " "(in seconds)"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &i); CHECK_STOP (camera, sierra_set_int_register (camera, 24, i, context)); } /* LCD Brightness */ GP_DEBUG ("*** setting lcd brightness"); if ((gp_widget_get_child_by_label (window, _("LCD Brightness"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &i); CHECK_STOP (camera, sierra_set_int_register (camera, 35, i, context)); } /* LCD Auto Off */ GP_DEBUG ("*** setting lcd auto off"); if ((gp_widget_get_child_by_label (window, _("LCD Auto Off (in seconds)"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &i); CHECK_STOP (camera, sierra_set_int_register (camera, 38, i, context)); } return (camera_stop (camera, context)); } static int camera_get_config_epson (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *child; CameraWidget *section; char t[1024]; int ret, value; GP_DEBUG ("*** camera_get_config_epson"); CHECK (camera_start (camera, context)); gp_widget_new (GP_WIDGET_WINDOW, _("Camera Configuration"), window); gp_widget_new (GP_WIDGET_SECTION, _("Shot Settings"), §ion); gp_widget_append (*window, section); /* Aperture */ ret = sierra_get_int_register (camera, 5, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Aperture"), &child); gp_widget_add_choice (child, _("F2")); gp_widget_add_choice (child, _("F2.3")); gp_widget_add_choice (child, _("F2.8")); gp_widget_add_choice (child, _("F4")); gp_widget_add_choice (child, _("F5.6")); gp_widget_add_choice (child, _("F8")); gp_widget_add_choice (child, _("auto")); switch (value) { case 0: strcpy (t, _("F2")); break; case 1: strcpy (t, _("F2.3")); break; case 2: strcpy (t, _("F2.8")); break; case 3: strcpy (t, _("F4")); break; case 4: strcpy (t, _("F5.6")); break; case 5: strcpy (t, _("F8")); break; case 6: strcpy (t, _("auto")); break; default: sprintf(t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* Flash Mode */ ret = sierra_get_int_register (camera, 7, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Flash Mode"), &child); gp_widget_add_choice (child, _("Auto")); gp_widget_add_choice (child, _("Force")); gp_widget_add_choice (child, _("Off")); gp_widget_add_choice (child, _("Red-eye Reduction")); gp_widget_add_choice (child, _("Slow Sync")); switch (value) { case 0: strcpy (t, _("Auto")); break; case 1: strcpy (t, _("Force")); break; case 2: strcpy (t, _("Off")); break; case 3: strcpy (t, _("Red-eye Reduction")); break; case 4: strcpy (t, _("Slow Sync")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* White Balance */ ret = sierra_get_int_register (camera, 20, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("White Balance"), &child); gp_widget_add_choice (child, _("Auto")); gp_widget_add_choice (child, _("Fixed")); gp_widget_add_choice (child, _("Custom")); switch (value) { case 0: strcpy (t, _("Auto")); break; case 1: strcpy (t, _("Fixed")); break; case 225: strcpy (t, _("Custom")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } gp_widget_new (GP_WIDGET_SECTION, _("Picture Settings"), §ion); gp_widget_append (*window, section); /* Lens Mode */ ret = sierra_get_int_register (camera, 33, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Lens Mode"), &child); gp_widget_add_choice (child, _("Macro")); gp_widget_add_choice (child, _("Normal")); switch (value) { case 1: strcpy (t, _("Macro")); break; case 2: strcpy (t, _("Normal")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* Resolution */ ret = sierra_get_int_register (camera, 1, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Resolution"), &child); gp_widget_add_choice (child, _("standard")); gp_widget_add_choice (child, _("fine")); gp_widget_add_choice (child, _("superfine")); gp_widget_add_choice (child, _("HyPict")); switch (value) { case 1: strcpy (t, _("standard")); break; case 2: strcpy (t, _("fine")); break; case 3: strcpy (t, _("superfine")); break; case 34: strcpy (t, _("HyPict")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* Color Mode */ ret = sierra_get_int_register (camera, 6, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Color Mode"), &child); gp_widget_add_choice (child, _("color")); gp_widget_add_choice (child, _("black & white")); switch (value) { case 1: strcpy (t, _("color")); break; case 2: strcpy (t, _("black & white")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } gp_widget_new (GP_WIDGET_SECTION, _("Camera Settings"), §ion); gp_widget_append (*window, section); /* Auto Off (host) */ ret = sierra_get_int_register (camera, 23, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RANGE, _("Auto Off (host) " "(in seconds)"), &child); gp_widget_set_info (child, _("How long will it take until the " "camera powers off when connected to the " "computer?")); gp_widget_set_range (child, 0, 255, 1); gp_widget_set_value (child, &value); gp_widget_append (section, child); } /* Auto Off (field) */ ret = sierra_get_int_register (camera, 24, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RANGE, _("Auto Off (field) " "(in seconds)"), &child); gp_widget_set_info (child, _("How long will it take until the " "camera powers off when not connected to " "the computer?")); gp_widget_set_range (child, 0, 255, 1); gp_widget_set_value (child, &value); gp_widget_append (section, child); } /* Language */ ret = sierra_get_int_register (camera, 53, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_RADIO, _("Language"), &child); gp_widget_add_choice (child, _("Korean")); gp_widget_add_choice (child, _("English")); gp_widget_add_choice (child, _("French")); gp_widget_add_choice (child, _("German")); gp_widget_add_choice (child, _("Italian")); gp_widget_add_choice (child, _("Japanese")); gp_widget_add_choice (child, _("Spanish")); gp_widget_add_choice (child, _("Portuguese")); switch (value) { case 1: strcpy (t, _("Korean")); break; case 3: strcpy (t, _("English")); break; case 4: strcpy (t, _("French")); break; case 5: strcpy (t, _("German")); break; case 6: strcpy (t, _("Italian")); break; case 7: strcpy (t, _("Japanese")); break; case 8: strcpy (t, _("Spanish")); break; case 9: strcpy (t, _("Portuguese")); break; default: sprintf (t, _("%i (unknown)"), value); gp_widget_add_choice (child, t); } gp_widget_set_value (child, t); gp_widget_append (section, child); } /* Date & Time */ ret = sierra_get_int_register (camera, 2, &value, context); if (ret >= 0) { gp_widget_new (GP_WIDGET_DATE, _("Date & Time"), &child); gp_widget_set_value (child, &value); gp_widget_append (section, child); } return (camera_stop (camera, context)); } static int camera_set_config_epson (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *child; char *value; int i = 0; GP_DEBUG ("*** camera_set_config_epson"); CHECK (camera_start (camera, context)); /* Aperture */ GP_DEBUG ("*** setting aperture"); if ((gp_widget_get_child_by_label (window, _("Aperture"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("F2")) == 0) { i = 0; } else if (strcmp (value, _("F2.3")) == 0) { i = 1; } else if (strcmp (value, _("F2.8")) == 0) { i = 2; } else if (strcmp (value, _("F4")) == 0) { i = 3; } else if (strcmp (value, _("F5.6")) == 0) { i = 4; } else if (strcmp (value, _("F8")) == 0) { i = 5; } else if (strcmp (value, _("auto")) == 0) { i = 6; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 5, i, context)); } /* Flash Mode */ GP_DEBUG ("*** setting flash mode"); if ((gp_widget_get_child_by_label (window, _("Flash Mode"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("Auto")) == 0) { i = 0; } else if (strcmp (value, _("Force")) == 0) { i = 1; } else if (strcmp (value, _("Off")) == 0) { i = 2; } else if (strcmp (value, _("Red-eye Reduction")) == 0) { i = 3; } else if (strcmp (value, _("Slow Sync")) == 0) { i = 4; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 7, i, context)); } /* White Balance */ GP_DEBUG ("*** setting white balance"); if ((gp_widget_get_child_by_label (window, _("White Balance"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("Auto")) == 0) { i = 0; } else if (strcmp (value, _("Fixed")) == 0) { i = 1; } else if (strcmp (value, _("Custom")) == 0) { i = 225; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 20, i, context)); } /* Lens Mode */ GP_DEBUG ("*** setting lens mode"); if ((gp_widget_get_child_by_label (window, _("Lens Mode"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("Macro")) == 0) { i = 1; } else if (strcmp (value, _("Normal")) == 0) { i = 2; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 33, i, context)); } /* Resolution */ GP_DEBUG ("*** setting resolution"); if ((gp_widget_get_child_by_label (window, _("Resolution"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("standard")) == 0) { i = 1; } else if (strcmp (value, _("fine")) == 0) { i = 2; } else if (strcmp (value, _("superfine")) == 0) { i = 3; } else if (strcmp (value, _("HyPict")) == 0) { i = 34; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 1, i, context)); } /* Color Mode */ GP_DEBUG ("*** setting color mode"); if ((gp_widget_get_child_by_label (window, _("Color Mode"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("color")) == 0) { i = 1; } else if (strcmp (value, _("black & white")) == 0) { i = 2; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 6, i, context)); } /* Auto Off (host) */ GP_DEBUG ("*** setting auto off (host)"); if ((gp_widget_get_child_by_label (window, _("Auto Off (host) " "(in seconds)"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &i); CHECK_STOP (camera, sierra_set_int_register (camera, 23, i, context)); } /* Auto Off (field) */ GP_DEBUG ( "*** setting auto off (field)"); if ((gp_widget_get_child_by_label (window, _("Auto Off (field) " "(in seconds)"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &i); CHECK_STOP (camera, sierra_set_int_register (camera, 24, i, context)); } /* Language */ GP_DEBUG ("*** setting language"); if ((gp_widget_get_child_by_label (window, _("Language"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &value); if (strcmp (value, _("Korean")) == 0) { i = 1; } else if (strcmp (value, _("English")) == 0) { i = 3; } else if (strcmp (value, _("French")) == 0) { i = 4; } else if (strcmp (value, _("German")) == 0) { i = 5; } else if (strcmp (value, _("Italian")) == 0) { i = 6; } else if (strcmp (value, _("Japanese")) == 0) { i = 7; } else if (strcmp (value, _("Spanish")) == 0) { i = 8; } else if (strcmp (value, _("Portuguese")) == 0) { i = 9; } else return (GP_ERROR_NOT_SUPPORTED); CHECK_STOP (camera, sierra_set_int_register (camera, 53, i, context)); } /* Date & Time */ GP_DEBUG ("*** setting date"); if ((gp_widget_get_child_by_label (window, _("Date & Time"), &child) >= 0) && gp_widget_changed (child)) { gp_widget_get_value (child, &i); CHECK_STOP (camera, sierra_set_int_register (camera, 2, i, context)); } return (camera_stop (camera, context)); } static int camera_get_config_default (Camera *camera, CameraWidget **window, GPContext *context) { return camera_get_config_olympus (camera, window, context); } static int camera_set_config_default (Camera *camera, CameraWidget *window, GPContext *context) { return camera_set_config_olympus (camera, window, context); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *c) { char buf[1024*32]; int v, r; char t[1024]; GP_DEBUG ("*** sierra camera_summary"); CHECK (camera_start (camera, c)); strcpy(buf, ""); /* * This is a non-fatal check if a memory card is present. Some * cameras don't understand this command and error out here. * * At least on PhotoPC 3000z, if no card is present near all * retrieved info are either unreadable or invalid... */ if (!(camera->pl->flags & SIERRA_NO_51)) { r = sierra_get_int_register(camera, 51, &v, c); if ((r >= 0) && (v == 1)) { strcpy (buf, _("Note: no memory card present, some" " values may be invalid\n")); strcpy (summary->text, buf); } } /* Get all the string-related info */ if (sierra_get_string_register (camera, 27, 0, NULL, (unsigned char *)t, (unsigned int *)&v, c) >= 0) sprintf (buf+strlen(buf), _("Camera Model: %s\n"), t); if (sierra_get_string_register (camera, 48, 0, NULL, (unsigned char *)t, (unsigned int *)&v, c) >= 0) sprintf (buf+strlen(buf), _("Manufacturer: %s\n"), t); if (sierra_get_string_register (camera, 22, 0, NULL, (unsigned char *)t, (unsigned int *)&v, c) >= 0) sprintf (buf+strlen(buf), _("Camera ID: %s\n"), t); if (sierra_get_string_register (camera, 25, 0, NULL, (unsigned char *)t, (unsigned int *)&v, c) >= 0) sprintf (buf+strlen(buf), _("Serial Number: %s\n"), t); if (sierra_get_string_register (camera, 26, 0, NULL, (unsigned char *)t, (unsigned int *)&v, c) >= 0) sprintf (buf+strlen(buf), _("Software Rev.: %s\n"), t); /* Get all the integer information */ if (camera->pl->flags & SIERRA_NO_REGISTER_40) { if (sierra_get_int_register(camera, 10, &v, c) >= 0) sprintf (buf+strlen(buf), _("Frames Taken: %i\n"), v); } else { if (sierra_get_int_register(camera, 40, &v, c) >= 0) sprintf (buf+strlen(buf), _("Frames Taken: %i\n"), v); } if (sierra_get_int_register(camera, 11, &v, c) >= 0) sprintf (buf+strlen(buf), _("Frames Left: %i\n"), v); if (sierra_get_int_register(camera, 16, &v, c) >= 0) sprintf (buf+strlen(buf), _("Battery Life: %i\n"), v); if (sierra_get_int_register(camera, 28, &v, c) >= 0) sprintf (buf+strlen(buf), _("Memory Left: %i bytes\n"), v); /* Get date */ if (sierra_get_int_register (camera, 2, &v, c) >= 0) { time_t vtime = v; sprintf (buf+strlen(buf), _("Date: %s"), ctime (&vtime)); } strcpy (summary->text, buf); return (camera_stop (camera, c)); } static int storage_info_func (CameraFilesystem *fs, CameraStorageInformation **sinfos, int *nrofsinfos, void *data, GPContext *c ) { Camera *camera = data; CameraStorageInformation*sif; int v; char t[1024]; GP_DEBUG ("*** sierra storage_info"); CHECK (camera_start (camera, c)); sif = malloc(sizeof(CameraStorageInformation)); if (!sif) return GP_ERROR_NO_MEMORY; *sinfos = sif; *nrofsinfos = 1; sif->fields = GP_STORAGEINFO_BASE; strcpy (sif->basedir, "/"); sif->fields |= GP_STORAGEINFO_STORAGETYPE; sif->type = GP_STORAGEINFO_ST_REMOVABLE_RAM; sif->fields |= GP_STORAGEINFO_ACCESS; sif->access = GP_STORAGEINFO_AC_READWRITE; sif->fields |= GP_STORAGEINFO_FILESYSTEMTYPE; sif->fstype = GP_STORAGEINFO_FST_DCF; if (sierra_get_string_register (camera, 25, 0, NULL, (unsigned char *)t, (unsigned int *)&v, c) >= 0) { sif->fields |= GP_STORAGEINFO_LABEL; strcpy (sif->label, t); } if (sierra_get_int_register(camera, 11, &v, c) >= 0) { sif->fields |= GP_STORAGEINFO_FREESPACEIMAGES; sif->freeimages = v; } if (sierra_get_int_register(camera, 28, &v, c) >= 0) { sif->fields |= GP_STORAGEINFO_FREESPACEKBYTES; sif->freekbytes = v/1024; } return camera_stop (camera, c); } static int camera_manual (Camera *camera, CameraText *manual, GPContext *context) { GP_DEBUG ("*** sierra camera_manual"); switch (camera->pl->model) { case SIERRA_MODEL_CAM_DESC: if (camera->pl->cam_desc->manual == NULL) { strcpy (manual->text, _("No camera manual available.\n")); } else { strcpy (manual->text, _(camera->pl->cam_desc->manual)); } break; case SIERRA_MODEL_EPSON: snprintf (manual->text, sizeof(manual->text), _("Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n"), MAIL_GPHOTO_DEVEL); break; case SIERRA_MODEL_OLYMPUS: default: strcpy (manual->text, _("Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'.")); break; } return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { GP_DEBUG ("*** sierra camera_about"); strcpy (about->text, _("sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation.")); return (GP_OK); } /** * get_jpeg_data: * @data: input data table * @data_size: table size * @jpeg_data: return JPEG data table (NULL if no valid data is found). * To be free by the the caller. * @jpeg_size: return size of the jpeg_data table. * * Extract JPEG data form the provided input data (looking for the SOI * and SOF markers in the input data table) * * Returns: error code (either GP_OK or GP_ERROR_CORRUPTED_DATA) */ int get_jpeg_data(const char *data, int data_size, char **jpeg_data, int *jpeg_size) { int i, ret_status; const char *soi_marker = NULL, *sof_marker = NULL; for(i=0 ; ifunctions->exit = camera_exit; camera->functions->capture_preview = camera_capture_preview; camera->functions->capture = camera_capture; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; camera->pl = calloc (1, sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); camera->pl->model = SIERRA_MODEL_DEFAULT; camera->pl->first_packet = 1; camera->pl->flags = 0; /* Retrieve Camera information from name */ gp_camera_get_abilities (camera, &a); for (x = 0; sierra_cameras[x].manuf; x++) { if (!strncmp (a.model, sierra_cameras[x].manuf, strlen (sierra_cameras[x].manuf)) && !strcmp (a.model + strlen (sierra_cameras[x].manuf) + 1, sierra_cameras[x].model)) { camera->pl->model = sierra_cameras[x].sierra_model; vendor = sierra_cameras[x].usb_product; camera->pl->flags = sierra_cameras[x].flags; camera->pl->cam_desc = sierra_cameras[x].cam_desc; break; } } switch (camera->pl->model) { case SIERRA_MODEL_EPSON: camera->functions->get_config = camera_get_config_epson; camera->functions->set_config = camera_set_config_epson; break; case SIERRA_MODEL_OLYMPUS: camera->functions->get_config = camera_get_config_olympus; camera->functions->set_config = camera_set_config_olympus; break; case SIERRA_MODEL_CAM_DESC: if (camera->pl->cam_desc == NULL) { GP_DEBUG ("*** sierra cam_desc NULL"); return (GP_ERROR_MODEL_NOT_FOUND); } camera->pl->flags |= camera->pl->cam_desc->flags; camera->functions->get_config = camera_get_config_cam_desc; camera->functions->set_config = camera_set_config_cam_desc; break; default: camera->functions->get_config = camera_get_config_default; camera->functions->set_config = camera_set_config_default; break; } CHECK_FREE (camera, gp_port_get_settings (camera->port, &s)); switch (camera->port->type) { case GP_PORT_SERIAL: s.serial.bits = 8; s.serial.parity = 0; s.serial.stopbits = 1; /* * Remember the speed. If no speed is given, we assume * people want to use the highest one (i.e. 115200). * However, not all machines support every speed. Check that. */ if (s.serial.speed) camera->pl->speed = s.serial.speed; else { int i; /* Find the speed into abilities.speeds array. * Highest speeds are last ... so look backwards ... */ for (i=0;i= 0 ; i--) { s.serial.speed = a.speed[i]; if (gp_port_set_settings (camera->port, s) >= 0) break; } camera->pl->speed = (i>=0 ? a.speed[i] : 19200); } /* The camera defaults to 19200. */ s.serial.speed = 19200; break; case GP_PORT_USB: case GP_PORT_USB_SCSI: /* Test if we have usb information */ if (vendor == 0) { free (camera->pl); camera->pl = NULL; return (GP_ERROR_MODEL_NOT_FOUND); } /* Use the defaults the core parsed */ break; default: free (camera->pl); camera->pl = NULL; return (GP_ERROR_UNKNOWN_PORT); } CHECK_FREE (camera, gp_port_set_settings (camera->port, s)); CHECK_FREE (camera, gp_port_set_timeout (camera->port, TIMEOUT)); /* * Send initialization sequence unless otherwise flagged. (The * 'Polaroid PDC 2300Z' fails sierra_init as reported by William * Bader ). */ if (!(camera->pl->flags & SIERRA_SKIP_INIT)) CHECK (sierra_init (camera, context)); /* Establish a connection */ CHECK_FREE (camera, camera_start (camera, context)); /* * USB cameras seem to need this request. If we don't request the * contents of this register and directly proceed with checking for * folder support, the camera doesn't send anything. */ sierra_get_int_register (camera, 1, &value, NULL); #if 0 /* FIXME??? What's that for? "Resetting folder system"? */ sierra_set_int_register (camera, 83, -1, NULL); #endif /* How to switch the coolpix 2500 between RAW / NORMAL return dsc->SetStr(0x16, raw_enabled ? "DIAG RAW" : "NIKON DIGITAL CAMERA" ); ret = sierra_set_string_register (camera, 0x16, "NIKON DIGITAL CAMERA", strlen("NIKON DIGITAL CAMERA"), NULL); */ /* Folder support? */ CHECK_STOP_FREE (camera, gp_port_set_timeout (camera->port, 50)); ret = sierra_set_string_register (camera, 84, "\\", 1, NULL); if (ret != GP_OK) { camera->pl->folders = 0; GP_DEBUG ("*** folder support: no"); } else { camera->pl->folders = 1; GP_DEBUG ("*** folder support: yes"); } CHECK_STOP_FREE (camera, gp_port_set_timeout (camera->port, TIMEOUT)); /* We start off not knowing where we are */ strcpy (camera->pl->folder, ""); CHECK_STOP_FREE (camera, gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera)); CHECK (camera_stop (camera, context)); GP_DEBUG ("****************** sierra initialization OK"); return (GP_OK); } libgphoto2-2.5.9/camlibs/sierra/epson-desc.c0000644000175000001440000002026612610415617015631 00000000000000/* olympus_desc.c: * * Olympus-specific code: David Selmeczi * Original code: * Copyright 2002 Patrick Mansfield * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include <_stdint.h> #include #include #include #include #include "sierra.h" #include "library.h" #include "sierra-desc.h" /* * Camera descriptor for Olympus C-3040Z (and possibly others). */ /* * Notes: * * The variable "value" in a ValueNameType is the first element of * the name/value union, and so it is the default value initialized. * * To init to a range, use: * { .range = { 100.1, 2000.0, 10 } }, NULL * * Casts are used to avoid warnings about using a const. * * Only registers that are used by the camera configuration are listed * here (for use in the get/set config functions); no settings, capture or * other data is stored here. */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif /* * Register 1: resolution/size. */ static const ValueNameType ep3000z_reg_01_val_names[] = { { { 0x01 }, "Standard 640x480" }, { { 0x02 }, "Fine 2048x1536" }, { { 0x03 }, "SuperFine 2048x1536" }, { { 0x04 }, "HyPict 2544x1904" }, }; static const RegisterDescriptorType ep3000z_reg_01[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "resolution", N_("Resolution plus Size"), VAL_NAME_INIT (ep3000z_reg_01_val_names) } }; /* * Register 2: Date and time. */ static const ValueNameType ep3000z_reg_02_val_names[] = { /* * Dummy value, since we need at least one of these to * display anything. */ { { 0x00 }, "Dummy" }, }; static const RegisterDescriptorType ep3000z_reg_02[] = { { GP_WIDGET_DATE, GP_REG_NO_MASK, "date-time", N_("Date and time (GMT)"), VAL_NAME_INIT (ep3000z_reg_02_val_names) } }; /* * Register 3: shutter speed, not on ep3000z */ /* * Register 5: aperture settings. */ static const ValueNameType ep3000z_reg_05_val_names[] = { { { 6 }, N_("auto") }, { { 0 }, "F2.0" }, { { 1 }, "F2.3" }, { { 2 }, "F2.8" }, { { 3 }, "F4.0" }, { { 4 }, "F5.6" }, { { 5 }, "F8.0" }, }; static const RegisterDescriptorType ep3000z_reg_05[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "aperture", N_("Aperture Settings"), VAL_NAME_INIT (ep3000z_reg_05_val_names) } }; /* * Register 6: color mode */ static const ValueNameType ep3000z_reg_06_val_names[] = { { { 1 }, N_("Color") }, { { 2 }, N_("Black & White") }, }; static const RegisterDescriptorType ep3000z_reg_06[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "color", N_("Color Mode"), VAL_NAME_INIT (ep3000z_reg_06_val_names) } }; /* * Register 7: flash settings */ static const ValueNameType ep3000z_reg_07_val_names[] = { { { 0 }, N_("Auto") }, { { 1 }, N_("Force") }, { { 2 }, N_("Off") }, { { 3 }, N_("Red-eye Reduction") }, { { 4 }, N_("Slow Sync") }, }; static const RegisterDescriptorType ep3000z_reg_07[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "flash", N_("Flash Settings"), VAL_NAME_INIT (ep3000z_reg_07_val_names) } }; /* * Register 20: white balance. */ static const ValueNameType ep3000z_reg_20_val_names[] = { { { 0x00 }, N_("Auto") }, { { 0x01 }, N_("Fixed") }, { { 0xFF }, N_("Custom") }, }; static const RegisterDescriptorType ep3000z_reg_20[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "whitebalance", N_("White Balance"), VAL_NAME_INIT (ep3000z_reg_20_val_names) } }; /* * Register 23: camera power save when connected to PC * (idle time before entering power save mode) * TOCHECK: what is the exact valid range? * I have previously set 0,255,1 is old camera_get_config_epson() */ static const ValueNameType ep3000z_reg_23_val_names[] = { { { .range = { 30, 600, 30 } }, NULL }, }; static const RegisterDescriptorType ep3000z_reg_23[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "host-power-save", N_("Host power save (seconds)"), VAL_NAME_INIT (ep3000z_reg_23_val_names) } }; /* * Register 24: camera power save (idle time before entering power save mode) * TOCHECK: what is the exact valid range? * I have previously set 0,255,1 is old camera_get_config_epson() */ static const ValueNameType ep3000z_reg_24_val_names[] = { { { .range = { 30, 600, 30 } }, NULL }, }; static const RegisterDescriptorType ep3000z_reg_24[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "camera-power-save", N_("Camera power save (seconds)"), VAL_NAME_INIT (ep3000z_reg_24_val_names) } }; /* * Register 33: Lens mode. */ static const ValueNameType ep3000z_reg_33_val_names[] = { { { 0x01 }, N_("Macro") }, { { 0x02 }, N_("Normal") }, }; static const RegisterDescriptorType ep3000z_reg_33[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "lens-mode", N_("Lens Mode"), VAL_NAME_INIT (ep3000z_reg_33_val_names) } }; /* * Register 53: language setting. */ static const ValueNameType ep3000z_reg_53_val_names[] = { { { 0x01 }, N_("Korean") }, { { 0x03 }, N_("English") }, { { 0x04 }, N_("French") }, { { 0x05 }, N_("German") }, { { 0x06 }, N_("Italian") }, { { 0x07 }, N_("Japanese") }, { { 0x08 }, N_("Spanish") }, { { 0x09 }, N_("Portuguese") }, }; static const RegisterDescriptorType ep3000z_reg_53[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "language", N_("Language"), VAL_NAME_INIT (ep3000z_reg_53_val_names) } }; /* * All of the register used to modify picture settings. The register value * received from the camera is stored into this data area, so it cannot be * a const. */ static CameraRegisterType ep3000z_pic_regs[] = { /* camera prefix, register number, size of register */ CAM_REG_TYPE_INIT (ep3000z, 01, 4, CAM_DESC_DEFAULT, 0), /* resolution/size */ CAM_REG_TYPE_INIT (ep3000z, 05, 4, CAM_DESC_DEFAULT, 0), /* aperture (f-stop) */ CAM_REG_TYPE_INIT (ep3000z, 06, 4, CAM_DESC_DEFAULT, 0), /* color mode */ CAM_REG_TYPE_INIT (ep3000z, 07, 4, CAM_DESC_DEFAULT, 0), /* flash */ CAM_REG_TYPE_INIT (ep3000z, 20, 4, CAM_DESC_DEFAULT, 0), /* white balance */ CAM_REG_TYPE_INIT (ep3000z, 33, 4, CAM_DESC_DEFAULT, 0), /* focus mode */ }; /* * All of the register used to modify camera settings. */ static CameraRegisterType ep3000z_cam_regs[] = { CAM_REG_TYPE_INIT (ep3000z, 53, 4, CAM_DESC_DEFAULT, 0), /* date-time */ CAM_REG_TYPE_INIT (ep3000z, 02, 4, CAM_DESC_DEFAULT, 0), /* date-time */ CAM_REG_TYPE_INIT (ep3000z, 24, 4, CAM_DESC_DEFAULT, 0), /* Camera power save */ CAM_REG_TYPE_INIT (ep3000z, 23, 4, CAM_DESC_DEFAULT, 0), /* Host power save */ }; static const CameraRegisterSetType ep3000z_desc[] = { { N_("Picture Settings"), SIZE_ADDR (CameraRegisterType, ep3000z_pic_regs) }, { N_("Camera Settings"), SIZE_ADDR (CameraRegisterType, ep3000z_cam_regs) }, }; static const char ep3000z_manual[] = N_( "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" ); const CameraDescType ep3000z_cam_desc = { ep3000z_desc, ep3000z_manual, SIERRA_EXT_PROTO, }; libgphoto2-2.5.9/camlibs/sierra/sierra.h0000644000175000001440000000347612610415536015067 00000000000000/* sierra.c: * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ typedef enum { SIERRA_MODEL_DEFAULT, SIERRA_MODEL_EPSON, SIERRA_MODEL_OLYMPUS, SIERRA_MODEL_CAM_DESC, } SierraModel; typedef enum { /* 2 bits USB wrap type ... none = 0 */ SIERRA_WRAP_USB_NONE = 0<<0, SIERRA_WRAP_USB_OLYMPUS = 1<<0, SIERRA_WRAP_USB_NIKON = 2<<0, SIERRA_WRAP_USB_PENTAX = 3<<0, SIERRA_WRAP_USB_MASK = 3<<0, SIERRA_NO_51 = 1<<2, SIERRA_LOW_SPEED = 1<<3, /* serial line 9600 -> 38400 */ SIERRA_EXT_PROTO = 1<<4, SIERRA_SKIP_INIT = 1<<5, SIERRA_NO_USB_CLEAR = 1<<6, SIERRA_NO_REGISTER_40 = 1<<7, SIERRA_MID_SPEED = 1<<8, /* serial line 9600 -> 57600 */ } SierraFlags; struct _CameraPrivateLibrary { SierraModel model; int folders; int speed; int first_packet; SierraFlags flags; struct CameraDesc const *cam_desc; char folder[128]; }; struct CameraDescriptor; #define CHECK(result) \ { \ int res = (result); \ \ if (res < 0) { \ gp_log (GP_LOG_DEBUG, "sierra", \ "Operation failed in %s (%i)!", __FUNCTION__, res); \ return (res); \ } \ } libgphoto2-2.5.9/camlibs/sierra/ChangeLog0000644000175000001440000005720312610415510015170 000000000000002011-01-25 Marcus Meissner * sierra-usbwrap.c: Instead of synthesizing USB Mass Storage protocol to send SCSI commands ... Use the usbscsi: port and send them directly. 2008-09-20 Marcus Meissner * sierra.c: Implement storage_info function. 2007-04-22 Marcus Meissner * *-desc.c: Removed "const" from some structures that are written to by the configuration handling code. 2007-02-13 Chandra Curtis *sierra.c, sierra-desc.h, olympus-desc.c: Added support for Olympus SP-500UZ. (Works with gtkam, still some issue with gphoto2) 2006-08-08 Marcus Meissner * sierra.c: Added Nikon CoolPix 2100, from Ken Restivo . 2005-09-26 Marcus Meissner * sierra-desc.c: Fixed 2 strict aliasing problems. 2005-08-04 Marcus Meissner * sierra.c: epson photopc 700 has no reg 51 either 2005-07-07 Marcus Meissner * sierra.c: Moved new Olympus entries prodid 0x109 here (from ptp2). 2005-06-10 Marcus Meissner * sierra.c: Added Nikon Coolpix 4300 in wrapper modce. 2005-05-30 Marcus Meissner * sierra.c: Sanyo VPC G250 does not have register 51. 2005-05-08 Marcus Meissner * sierra.c: The olympus c-420l does only like speeds up to 57600. The epson photopc 650 does only like up to 38400. 2005-02-27 Marcus Meissner Aurelien Jarno * library.c: Increase buffer size to the one we will try to to read. Newer libusb and kernels give more than 4k back to read()s. Debian bug#296708. 2005-02-16 Marcus Meissner * sierra.c: Added Pentax Optio 450. Thanks to Jack for lending me his camera for some minutes. :) (Capture works, but only if you plug it in with the lens extracted already.) 2005-02-14 Marcus Meissner * library.c, sierra-desc.h, sierra.c, sierra.h, sierra-usbwrap.c: Nikon Coolpix * and Pentax cameras also support the Sierra protocol (usb wrapped), however with different command bytes. This patch adds support to specify the usb wrapping camera type and also adds the Nikon Coolpix 2500. 2005-01-22 Patrick Mansfield * sierra-desc.c, sierra-desc.h: Add code in case we ever need a GP_WIDGET_BUTTON/callback created, not currently used. 2005-01-05 Patrick Mansfield * olympus-desc.c: Add other Olympus C750UZ camera settings, they were using the C3040 ones except for the zoom. Also use GP_WIDGET_MENU instead of GP_WIDGET_RADIO for the resolutions, as the radio with many elements takes up to much space. 2005-01-04 Patrick Mansfield * sierra-desc.c: Call gp_widget_set_name to properly set the "name", so new gphoto2 --list-config and such are easier to use. 2004-12-11 Patrick Mansfield * sierra.c, sierra.h: Per report from Emmanuel Beranger, add and use a SIERRA_MID_SPEED flag so we only use download speeds of 9600 to 38400 for the Olympus C820-L. 2004-07-30 Patrick Mansfield * library.c, sierra.c, sierra.h: Patch from Sean Bruno to support Toshiba cameras. Added and use SIERRA_NO_USB_CLEAR and SIERRA_NO_REGISTER_40 flags. 2003-11-16 Patrick Mansfield * library.c: Only do progress updates in sierra_get_string_register if a command requires multiple packets. 2003-11-16 Patrick Mansfield * library.c, sierra.c: Enable progress checks, since the recursion cases have been removed from libgphoto2 and gtkam. 2003-11-15 Patrick Mansfield * sierra.c: Make all ifdef's the same for recursion check and add a missing ifdef. 2003-11-15 Patrick Mansfield * olympus-desc.c, sierra-desc.h, sierra.c: Add basic camera description for the oly 750uz (just the zoom support and oly750uz_manual for now). 2003-11-03 Patrick Mansfield * library.c: get rid of all progress updates to fix recursion during capture per bug report 805858 from Harry Mangalam. The fix sucks, since we now can't update gtkam (like scroll) while operations are pending, but it fixes the bug. This also gets rid of a bug where do_percent was no longer getting initialized. This really needs a change to gtkam or the gtkam <-> gphoto interface, so we do not allow recursion but we do allow updates. 2003-11-03 Patrick Mansfield * sierra.c: mark Epson PhotoPC 650 as SIERRA_NO_51, per bug report 831290 from Brian Lee. 2003-11-03 Patrick Mansfield * nikon-desc.c: update a comment about the behaviour of cp 880 and register 30. 2003-09-17 Marcus Meissner * library.c: we were closing a context id we never opened. Not good. 2003-09-13 Patrick Mansfield * epson-desc.c: remove unused commented out code. 2003-09-13 Patrick Mansfield * epson-desc.c sierra.c: get rid of C++ style comments. 2003-08-30 Patrick Mansfield * olympus-desc.c, sierra.c, sierra-desc.h: Add specific values for the Olympus 3000z, based on input from Till Kamppeter . 2003-08-26 Patrick Mansfield * library.c: Fix so on receipt of an unknown packet and a read of zero bytes, we don't loop forever. 2003-06-14 Dan Fandrich * epson-desc.c, nikon-desc.c, olympus-desc.c, sierra-desc.c, sierra.c: include _stdint.h instead of stdint.h 2003-05-28 Patrick Mansfield * epson-desc.c, nikon-desc.c, olympus-desc.c, and sierr.c sierra-desc.c, sierra-desc.h, sierra.c: change u_int* to uint*_t, and include stdint.h 2003-03-01 Patrick Mansfield * sierra.c: Fix SIERRA_SKIP_INIT usage and add vendor/product id's for Polaroid PDC 2300Z. 2003-02-27 Marcus Meissner * library.c: We support EXIF download. 2003-02-15 Patrick Mansfield * sierra.c, sierra.h: Add and use SIERRA_SKIP_INIT for use with Polaroid PDC 2300Z. 2003-02-15 Patrick Mansfield * epson-desc.c, library.c, nikon-desc.c olympus-desc.c sierra-desc.h, sierra.c, sierra.h: Remove use_extended_protocol field and use a bit in the flags field instead. * sierra.c: cleanup some of the init code * sierra-desc.h: cleanup a comment 2003-02-02 Patrick Mansfield * library.c: Add locking support just use the action SIERRA_ACTION_PROT_STATE in sierra_set_locked. 2003-02-02 Patrick Mansfield * library.c: Allow sierra_get_pic_info to always work even if register 47 return no data - use other registers to get the data. * sierra.c: Use register 43 to get audio, not sierra_get_pic_info, so register 47 is not used prior to downloading. 2003-02-02 Patrick Mansfield Idea based on a patch in a bug report from Valentin Rusu , this should also fix other cameras that do not return valid data for register 47. * library.c, library.h: added sierra_get_size * sierra.c: call sierra_get_size to get sizes via register 12 or 13, only call sierra_get_pic_info to get sizes for audio files. Treat 0 length file size as unsupported. 2003-01-30 Lutz Mller * sierra.h: SierraCamera is not needed any more. * sierra.c: Make some calls non-fatal. 2003-01-29 Lutz Mueller * sierra.c: It seems the "Agfa ePhoto307" does not support the register 51. Reported by Ullrich Maenz . 2003-01-14 Marcus Meissner * *.c: enabled more translations, added some missing _(). 2003-01-14 Lutz Müller * sierra.c: Split the model string into manufacturer and model. 2003-01-03 Marcus Meissner * sierra.c: Epson PhotoPC 650 at least partially working. 2003-01-03 Marcus Meissner * library.c: Replaced stack allocated CameraList by dynamic allocated one, since this struct is huge. 2002-12-10 Marcus Meissner * sierra.c, sierra.h: replaced usb_wrap flag value by a generic flags value. Added a hack for "low speed" cameras and cameras which do not like the register 51 being retrieved, like the Agfa ePhoto 780c apparently. 2002-11-17 Patrick Mansfield * sierra.c: start off with folder set to empty rather than "/", since we have no idea of the camera directory on startup. 2002-11-17 Patrick Mansfield * sierra.c: Change 2100UZ to be SIERRA_MODEL_CAM_DESC per patch from C.A. Marby . 2002-11-17 Marcus Meissner * sierra.c: Do not cast between time_t* and int*. 2002-11-10 Patrick Mansfield * library.c: oops accidentally took out the retrieval of the current picture number (it's used to set the file name if no valid file name is retrieved), put it back. 2002-11-10 Patrick Mansfield * library.c: Conditionally save the file path on capture. Note that this requires gp_camera_capture() to allow a NULL path, else the the sierra_capture is never called with a NULL path. 2002-11-10 Patrick Mansfield * library.c: Per patch and details from C.A. Marby , fix bugs with capture: fix a bug I introduced, put back the read after action of a SIERRA_PACKET_ENQ. Move the timeout increase before the capture, and increase the timeout to 20 seconds. 2002-11-05 Lutz Müller * sierra.c: The 2100UZ seems to use oly3040_cam_desc (reported by C.A. Marby ) 2002-11-01 Patrick Mansfield * PROTOCOL, epson-desc.c, library.c, nikon-desc.c * olympus-desc.c, sierra-desc.h, sierra.c, sierra.h: Add changes to support the 0x6 get register strings, the extended protocol. This gives roughly twice the download speed. This is not supported for the default cases. Thanks to Selmeczi David for discovering and coding up the original patch for this support. Also includes a minor change in library.c for the message when a recursive call is detected. 2002-10-27 Patrick Mansfield * library.c: rename ifdef around recursive call problem, and change ifdef-ed out code to use gp_context_progress_start. 2002-10-20 Lutz Müller * sierra.c (camera_init): Don't call sierra_init if the camera is a 'Polaroid PDC 2300Z'. Reported by William Bader . 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 2002-09-21 Lutz Müller * library.c: Don't tell the camera to switch to a speed it is currently operating at. 2002-09-21 Lutz Müller * library.c * sierra.c: Make the check for the precence of a memory card non-fatal. 2002-09-19 Lutz Müller * library.c (sierra_check_connection): Fix. 2002-09-07 Patrick Mansfield * sierra.c * library.c: Avoid recursive calls from gtkam into get/set functions by not calling gp_context_progress_update. 2002-08-11 Patrick Mansfield * sierra-desc.c: set the widget info field. * sierra.c: Change GP_DEBUG's to be more consistent. * library.c: Do not call sierra_read_packet_wait after a sierra_transmit_ack, since it's called by sierra_transmit_ack. Add file name to progress bar in sierra_get_string_register. Add recursion protection to sierra_get_string_register. Increase the timeout temporarily for the next command after capture completes. Change GP_DEBUG's to be more consistent. 2002-07-09 Gilles Grandou * epson-desc.c * sierra-desc.h * sierra.h * Makefile.am: add initial configuration support for epson 3000z through cam_desc. original code is still here for other cameras which may rely on it (if any). 2002-07-09 Selmeczi David * olympus-desc.c: Patch aperature to use menu rather than radio. 2002-07-08 Patrick Mansfield * nikon-desc.c: Add comment clarifying 995 non-support. * olympus-desc.c: * sierra-desc.h: Add sierra_default_cam_desc. 2002-07-06 Patrick Mansfield * sierra.c: Output summary with warning if no memory card present. * library.c: Check for memory card before capture or listing. * sierra-desc.c: add extern round() rather than a complete hack. 2002-07-05 Lutz Müller Patch by Thomas Reitelbach : * sierra.c: Add support for Epson 850z. 2002-07-01 Patrick Mansfield * nikon-desc.c * olympus-desc.c * sierra-desc.c * sierra-desc.h * sierra.c * sierra.h: Add the ability to put the camera manual text in the camera descriptor. Added text for cp880 and cp995. Put text in for the Oly 3040. 2002-07-01 Patrick Mansfield Patch by Selmeczi David : * sierra.c: Use SIERRA_MODEL_CAM_DESC for some olympus models. 2002-06-28 Lutz Müller Patch by Selmeczi David : * olympus-desc.c: * nikon-desc.c: Prepare for translation. * sierra.c: Use the new configuration dialog for more camera models. 2002-06-28 Lutz Müller * sierra.h: * library.[c,h]: * sierra-desc.[c,h]: Fix includes. * sierra.c: Remove cruft. 2002-06-28 Selmeczi David * olympus-desc.c: New. * Makefile.am: Add above file. * sierra-desc.h: Reference to olympus-desc.c * sierra.c: Use new configuration dialog for the 3040Z. 2002-06-27 Lutz Müller * sierra-usbwrap.c: I missed one < GP_OK. 2002-06-27 Lutz Müller Selmeczi David fixed the error checks. I added the CR macro and fixed the headers. * sierra-usbwrap.h: Fix header. * sierra-usbwrap.c: Check for gp_* < GP_OK instead of != GP_OK. 2002-06-26 Lutz Müller Selmeczi David is working on supporting his camera. This is a first step to get his camera working: * sierra.c: "Olympus C-3040Z" is supported by this driver, too. 2002-05-29 Patrick Mansfield * library.[hc], sierra.[hc], sierra-desc.[ch], nikon-desc.c: Add camera description table for camera configuration settings. Add support for nikon coolpix 880 using the description table. 2002-05-26 Lutz Müller * library.c: Handle the error where the camera sends strange bytes. 2002-05-26 Lutz Müller * library.c (sierra_check_connection, sierra_set_speed): These functions are only applicable for serial connections. 2002-05-25 Lutz Müller * library.c: If we receive SIERRA_PACKET_SESSION_END, reestablish the connection and switch to the default speed. 2002-05-25 Lutz Müller * sierra.c (camera_init): It seems the code I '#if 0'ed out is needed by USB cameras... 2002-05-25 Lutz Müller * sierra.c: '#if 0' some code that I don't think is needed at all. * library.c (sierra_init): Logs show that sierra_init does not start a new session (i.e. no 0x53 instead of 0x43 needed). 2002-05-25 Lutz Müller * library.c (sierra_set_speed): A speed change automatically starts a new session. 2002-05-25 Lutz Müller * library.c: The first packet after initialization (sierra_init) needs a special flag. 2002-05-25 Lutz Müller * sierra.c (camera_init): Check if the computer supports high speeds (i.e. 115200). 2002-05-25 Lutz Müller * library.c (sierra_check_connection): GP_ERROR_IO_READ is fine, too. 2002-05-24 Lutz Müller * library.c: Imitate the behavior of the Windows driver and check before each sierra_write_packet if the connection is still open (sierra_check_connection), i.e. if the camera has sent SIERRA_PACKET_SESSION_END. 2002-05-24 Lutz Müller * library.c * sierra.c: Move the check if a speed change is really needed into sierra_set_speed. 2002-05-23 Lutz Müller * library.c (sierra_init): Don't use sierra_read_packet_wait, use sierra_read_packet and resend the request on GP_ERROR_TIMEOUT. 2002-05-22 Lutz Müller * library.c (sierra_init): Portmon logs show that the port is closed and reopened after SIERRA_PACKET_SESSION_END has been received and before the initial handshake. 2002-05-22 Lutz Müller * sierra.c: If the requested speed is 0, we set it to 115200. 2002-05-21 Lutz Müller * sierra.c * library.[c,h] (sierra_set_speed): Introduce SierraSpeed - makes reading the code easier. Set GP_PIN_DTR before initialization and after speed changes. According to Portmon logs, sierra_init must be called after a SIERRA_PACKET_SESSION_END has been received. Implement that. 2002-05-21 Lutz Müller * library.c: Yet another try to handle SIERRA_PACKET_SESSION_END. 2002-05-14 Lutz Müller * library.c: Try to handle the strange 0x8c error. 2002-05-13 Lutz Müller * library.c: Handle SIERRA_PACKET_SESSION_[END,ERROR] by reinitializing the connection if this error occurs. 2002-04-27 Ilya Konstantinov * sierra.c (camera_start, camera_init): Send the initialization sequence only on init. Olympus C-860L stops communications when receiving an initialization sequence after some communications have already occured. * library.h, library.c (sierra_ping -> sierra_init): This function isn't really a "ping", since it can be used only on startup. 2002-04-26 Lutz Müller * sierra.c (camera_start): Forgot a gp_port_get_settings before checking settings.serial.speed. Shouldn't affect anything though... 2002-04-17 Lutz Müller Patch by Ilya Konstantinov : * library.c: break on timeout. 2002-03-29 Lutz Müller * library.c (sierra_ping): Retry up to 3 times. 2002-03-28 Lutz Müller * library.c: Formatting. * sierra.c: Ping the camera before changing the speed. 2002-03-14 Patrick Mansfield * sierra.c (camera_get_config_olympus, camera_set_config_olympus): Fix getting/setting the shutter speed via conversion to int or float. 2002-02-27 Lutz Müller Patch by Patrick Mansfield : * library.c: Stop the progress only if any has been started. 2002-02-22 Lutz Müller * library.c (sierra_get_string_register): Retry on timeout (after sending nak). 2002-02-21 Lutz Müller * sierra.c: Olympus C-860L has been reported to work with this driver, too. 2002-02-19 Lutz Müller * library.c (sierra_list_files): No need to set the int register, (sierra_get_string_register) will do that for us. 2002-02-18 Lutz Müller Per Gilles Grandou's request: * #undef HAVE_EXIF 2002-02-18 Lutz Müller Reported by Patrick Mansfield : * library.c (sierra_read_packet): At least Nikon CoolPix 880 sets the checksum always to 0xffff (?!?). 2002-02-11 Lutz Müller * Makefile.am: As long as there is EXIF code in here, add EXIF_[CFLAGS,LIBS]. However, there shouldn't be any EXIF code here, it should all be done by the CameraFilesystem... * library.c (sierra_list_files): Some cameras don't support filenames. We are now that good in catching errors that we needed to adjust the check here. * sierra.c: Remove wrong use of CHECK 2002-02-11 Gilles Grandou * sierra.c: added EXIF support. 2002-02-08 Lutz Müller * library.c (sierra_read_packet): Improve debugging output by reading several bytes at once. Should make transmission faster, too. 2002-02-06 Lutz Müller * sierra.[c,h]: Lots of additional debugging output. 2002-02-06 Lutz Müller * sierra.c (sierra_read_packet_wait): {int res=(res);... just cannot work. Read the macro definitions... 2002-02-05 Lutz Müller * sierra.c (camera_init): Pass NULL as context, because we will ignore those error messages and are just probing for the level of support for filenames or folders. 2002-02-05 Lutz Müller * library.c (sierra_read_packet): TYPE_COMMAND is a multi-byte packet, too, according to protocol.htm (see photopc). 2002-02-05 Lutz Müller * library.c (sierra_list_files): For cameras that don't support filenames, it is useless to try to get a filename for each file. Just try on the first one. If this fails, come up with dummy filenames for each file. 2002-02-05 Lutz Müller * library.c (sierra_read_packet): Hopefully this fixes problems with serial cameras: TYPE_DATA[_END] identifies packets of more than one byte. 2002-01-29 Lutz Müller * library.c: Cleanup. 2002-01-27 Lutz Müller * sierra.c: %s/== GP_OK/>= 0. Fixes camera_config (for example). 2002-01-22 Lutz Müller William Bader reported (partial) success with his Polaroid PDC2300Z. * sierra.c: New model. * library.c: Clean-up. 2002-01-22 Lutz Müller William Bader reported (partial) success with his Polaroid PDC2300Z. * sierra.c: New model. 2002-01-19 Lutz Müller * library.c: I messed up the logic: TYPE_DATA and TYPE_DATA_END are _not_ single byte packets. 2002-01-17 Lutz Müller * library.c: Improved debugging messages. I hope I didn't break the logic... 2002-01-16 Lutz Müller * library.c: Additional debugging messages. 2002-01-13 Lutz Müller * *.[c,h]: Remove references to gp_camera_set_error. 2002-01-09 Dan Fandrich * sierra-usbwrap.c: Fixed a pointer arithmetic portability issue. 2001-12-01 Lutz Müller Suggestion from Stefan Höhne : * library.c: Check for filename == " ". It seems his camera doesn't support filenames. * sierra.c: Add "Olympus C-2500L". libgphoto2-2.5.9/camlibs/sierra/sierra-usbwrap.h0000644000175000001440000000221512610415536016536 00000000000000/* sierra_usbwrap.h * * Copyright 2002 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __SIERRA_USBWRAP_H__ #define __SIERRA_USBWRAP_H__ #include int usb_wrap_write_packet (GPPort *dev, unsigned int type, char *sierra_msg, int sierra_len); int usb_wrap_read_packet (GPPort *dev, unsigned int type, char *sierra_response, int sierra_len); #endif /* __SIERRA_USBWRAP_H__ */ libgphoto2-2.5.9/camlibs/sierra/nikon-desc.c0000644000175000001440000005640312610415536015625 00000000000000/* nikon_desc.c: * * Copyright 2002 Patrick Mansfield * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include <_stdint.h> #include #include #include #include #include "sierra.h" #include "library.h" #include "sierra-desc.h" /* * Camera descriptor for Nikon Coolpix 880 (cp880). */ /* * Notes: * * The variable "value" in a ValueNameType is the first element of * the name/value union, and so it is the default value initialized. * * To init to a range, use: * { .range = { 100.1, 2000.0, 10 } }, NULL * * Casts are used to avoid warnings about using a const. * * Only registers that are used by the camera configuration are listed * here (for use in the get/set config functions); no settings, capture or * other data is stored here. */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif /* * Register 1: resolution/size. */ static const ValueNameType cp880_reg_01_val_names[] = { /* * These values suck. why didn't they make these maskable, or use * a nibble for each part? Just use a the combined resolution + size. * It would be good to try and break these into two selections. */ { { 0x01 }, "Basic-VGA" }, /* 640 x 480 */ { { 0x02 }, "Normal-VGA" }, { { 0x03 }, "Fine-VGA" }, { { 0x07 }, "Basic-XGA" }, /* 1024 x 768 */ { { 0x08 }, "Normal-XGA" }, { { 0x09 }, "Fine-XGA" }, { { 0x11 }, "Basic-Full" }, { { 0x12 }, "Normal-Full" }, { { 0x13 }, "Fine-Full" }, { { 0x23 }, "Hi-Full" }, }; static const RegisterDescriptorType cp880_reg_01[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "resolution", N_("Resolution plus Size"), VAL_NAME_INIT (cp880_reg_01_val_names) } }; /* * Register 1: resolution/size. */ static const ValueNameType cp2500_reg_01_val_names[] = { /* * These values suck. why didn't they make these maskable, or use * a nibble for each part? Just use a the combined resolution + size. * It would be good to try and break these into two selections. */ { { 0x01 }, "Basic-VGA" }, /* 640 x 480 */ { { 0x02 }, "Normal-VGA" }, { { 0x03 }, "Fine-VGA" }, { { 0x04 }, "Basic-SXGA" }, /* 1280 x 1024 */ { { 0x05 }, "Normal-SXGA" }, { { 0x06 }, "Fine-SXGA" }, { { 0x07 }, "Basic-XGA" }, /* 1024 x 768 */ { { 0x08 }, "Normal-XGA" }, { { 0x09 }, "Fine-XGA" }, { { 0x0a }, "Basic-UXGA" }, /* 1600 x 1200 aka 2 Megapixel */ { { 0x0b }, "Normal-UXGA" }, { { 0x0c }, "Fine-UXGA" }, }; static const RegisterDescriptorType cp2500_reg_01[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "resolution", N_("Resolution plus Size"), VAL_NAME_INIT (cp2500_reg_01_val_names) } }; /* * Register 2: Date and time. */ static const ValueNameType cp880_reg_02_val_names[] = { /* * Dummy value, since we need at least one of these to * display anything. */ { { 0x00 }, "Dummy" }, }; static const RegisterDescriptorType cp880_reg_02[] = { { GP_WIDGET_DATE, GP_REG_NO_MASK, "date-time", N_("Date and time (GMT)"), VAL_NAME_INIT (cp880_reg_02_val_names) } }; /* * Register 3: shutter speed, cp880 must be in manual mode for this to * work. */ #ifdef RANGE_FOR_SHUTTER static const ValueNameType cp880_reg_03_val_names[] = { { { .range = { 0, 8000000 } }, NULL } }; static const RegisterDescriptorType cp880_reg_03[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "shutter", N_("Shutter Speed microseconds (0 auto)"), VAL_NAME_INIT (cp880_reg_03_val_names) } }; #endif static const ValueNameType cp880_reg_03_val_names[] = { { { 0 }, N_("Auto") }, { { 1000 }, "1/1000" }, { { 2000 }, "1/500" }, { { 4000 }, "1/250" }, { { 8000 }, "1/125" }, { { 16666 }, "1/60" }, { { 33333 }, "1/30" }, { { 66666 }, "1/15" }, { { 125000 }, "1/8" }, { { 250000 }, "1/4" }, { { 500000 }, "1/2" }, { { 1000000 }, "1" }, { { 2000000 }, "2" }, { { 3000000 }, "3" }, { { 4000000 }, "4" }, { { 5000000 }, "5" }, { { 6000000 }, "6" }, { { 7000000 }, "7" }, { { 8000000 }, "8" }, /* { { -20 }, "bulb?" }, */ }; static const RegisterDescriptorType cp880_reg_03[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "shutter", N_("Shutter Speed (in seconds)"), VAL_NAME_INIT (cp880_reg_03_val_names) } }; /* * Register 5: aperture settings (f-stop) */ static const ValueNameType cp880_reg_05_val_names[] = { { { 0 }, N_("Auto") }, { { 1 }, N_("Low") }, { { 2 }, N_("Medium") }, /* { { 4 }, N_("High") }, not on a cp880 */ }; static const RegisterDescriptorType cp880_reg_05[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "aperture", N_("Aperture Settings"), VAL_NAME_INIT (cp880_reg_05_val_names) } }; /* * Register 6: color mode (not tested on cp880) */ static const ValueNameType cp880_reg_06_val_names[] = { { { 1 }, N_("Color") }, { { 2 }, N_("B/W") }, }; static const RegisterDescriptorType cp880_reg_06[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "color", N_("Color Mode"), VAL_NAME_INIT (cp880_reg_06_val_names) } }; /* * Register 7: flash settings */ static const ValueNameType cp880_reg_07_val_names[] = { { { 0 }, N_("Auto") }, { { 1 }, N_("Force") }, { { 2 }, N_("Off") }, { { 3 }, N_("Anti-redeye") }, { { 4 }, N_("Slow-sync") }, }; static const RegisterDescriptorType cp880_reg_07[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "flash", N_("Flash Settings"), VAL_NAME_INIT (cp880_reg_07_val_names) } }; /* * Register 19: Image adjustment. */ static const ValueNameType cp880_reg_19_val_names[] = { { { 5 }, N_("Auto") }, { { 0 }, N_("Normal") }, /* also 0 if chose b+w */ { { 1 }, N_("Contrast+") }, /* cp880 more contrast */ { { 2 }, N_("Contrast-") }, /* cp880 less contrast */ { { 3 }, N_("Brightness+") }, /* cp880 lighten image */ { { 4 }, N_("Brightness-") }, /* cp880 darken image */ }; static const RegisterDescriptorType cp880_reg_19[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "image-adj", N_("Image Adjustment"), /* brightness/contrast */ VAL_NAME_INIT (cp880_reg_19_val_names) } }; /* * Register 20: white balance. * * Could not determine how the camera does the gradation in settings - * such as fine +-1,2,3, and FL1 FL2 FL3. Dumping all registers (1 to 90) * shows no changes when going (for example) from fine +3 to -3. * * Setting these via the camera to a +3/2/1 etc, and then changing them * via gphoto2 to another value changes the "type" but the value +3/2/1 is * the same, so there is some other register or setting that changes the * range of these values. * * It appears this needs the sierra extended protocol to be complete. */ static const ValueNameType cp880_reg_20_val_names[] = { { { 0x00 }, N_("Auto") }, { { 0x01 }, N_("Fine") }, /* fine +3, +2, ... -3 */ { { 0x02 }, N_("Incandescent") }, /* incan +3 ... -3 */ { { 0x03 }, N_("Fluorescent") }, /* FL3, FL2, and FL1 */ { { 0x05 }, N_("Flash") }, /* speedlight/flash +3 ... -3 */ { { 0x06 }, N_("Preset") }, /* preset automatically by camera, prob range */ { { 0xff }, N_("Cloudy") }, /* cloudy +3 ... -3 */ }; static const RegisterDescriptorType cp880_reg_20[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "whitebalance", N_("White Balance"), VAL_NAME_INIT (cp880_reg_20_val_names) } }; #ifdef REG_30_FAILS /* * Register 30: LED mode, write only. Writing 0 and 1 do nothing, 2 * retracts the lens and causes an error. */ static const ValueNameType cp880_reg_30_val_names[] = { { { 0x00 }, N_("Off") }, { { 0x01 }, N_("On") }, { { 0x02 }, N_("Blink") }, }; static const RegisterDescriptorType cp880_reg_30[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "led", N_("LED Mode"), VAL_NAME_INIT (cp880_reg_30_val_names) } }; #endif /* * Register 33: focus mode. Can change these, but macro mode does not work * correctly - it does not zoom in or focus (macro-mode focus) correctly. * And, setting infinity using the cp880 also turns off the flash, here it * does not turn off the flash. */ static const ValueNameType cp880_reg_33_val_names[] = { { { 0x01 }, N_("Macro") }, { { 0x02 }, N_("Normal") }, { { 0x03 }, N_("Infinity") }, }; static const RegisterDescriptorType cp880_reg_33[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "focus-mode", N_("Focus Mode"), VAL_NAME_INIT (cp880_reg_33_val_names) } }; /* * Register 34: operation mode. This is only readable, an action with * subaction is required to change the mode. * * Note that on a cp880, sometimes the play mode ends up with a messed up * display or an error message, powering the camera off and on seems to * fix the problem. * * The use of next and previous should be part of a separate * interface, such that a user can continuosly press next or previous to * cycle through the images (while the camera is in play mode). * * Use command 2 (via sierra_sub_action) with action * SIERRA_ACTION_LCD_MODE (8), with a sub-action below to change the mode. * So, read reg 34 to figure out the mode, then use sierra_action to * change the mode - the sierra action needs another arg to set the * secondary action for this. The register 34 values match those needed to * change the mode. * * Using a register get/set method of CAM_DESC_SUBACTION enables the * above kluge. */ static const ValueNameType cp880_reg_34_val_names[] = { { { 0x01 }, N_("Off") }, /* turn off lcd while waiting to capture */ { { 0x02 }, N_("Record") }, /* turn on lcd while waiting to capture */ { { 0x03 }, N_("Play") }, /* slide-show like mode */ { { 0x06 }, N_("Preview Thumbnail") }, /* slide-show thumbnail */ { { 0x07 }, N_("Next") }, /* go to the next image */ { { 0x08 }, N_("Previous") }, /* go to previous image */ /* { { 0x00 }, "unknown 0x00" }, { { 0x04 }, "unknown 0x04" }, { { 0x05 }, "unknown 0x05" }, { { 0x09 }, "unknown 0x09" }, { { 0x0a }, "unknown 0x0a" }, { { 0x0b }, "unknown 0x0b" }, { { 0x0c }, "unknown 0x0c" }, */ }; static const RegisterDescriptorType cp880_reg_34[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "op-mode", N_("Operation Mode"), VAL_NAME_INIT (cp880_reg_34_val_names) } }; /* * Register 35: lcd brightness. */ static const ValueNameType cp880_reg_35_val_names[] = { { { .range = { 0, 7 } }, NULL }, }; static const RegisterDescriptorType cp880_reg_35[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "lcd-brightness", N_("LCD Brightness"), VAL_NAME_INIT (cp880_reg_35_val_names) } }; /* * Register 38: lcd auto shut off time, not verified for cp880, unknown * what the maximum range should be. */ static const ValueNameType cp880_reg_38_val_names[] = { { { .range = { 0, 255 /* XXX? */ } }, NULL }, }; static const RegisterDescriptorType cp880_reg_38[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "lcd-auto-shutoff", N_("LCD Auto Shut Off (seconds)"), VAL_NAME_INIT (cp880_reg_38_val_names) } }; /* * Register 53: language setting. On the cp880, can set to japanese, but * cannot see any change in this register. * * It appears this needs the sierra extended protocol to be complete. */ static const ValueNameType cp880_reg_53_val_names[] = { { { 0x03 }, N_("English") }, { { 0x04 }, N_("French") }, { { 0x05 }, N_("German") }, /* { { 0x06 }, "Italian" }, not on cp880 */ /* { { 0x08 }, "Spanish" }, not on cp880 */ /* { { 0x0a }, "Dutch" }, not on cp880 */ /* { { 0xnn }, "Japanese" }, * * weird, can set to japanese, but can't see any change in any * registers; reg 53 is 3 wether it is english or japanese. */ }; static const RegisterDescriptorType cp880_reg_53[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "language", N_("Language"), VAL_NAME_INIT (cp880_reg_53_val_names) } }; /* * Register 69: exposure compensation. * * The negative value is properly converted - the camera uses values * compatible with little endian machine (or it is converted by gphoto2?). * * The cp880 sucks here, the register values goes from -20 to 20, but * the only legal values are -20, -17, -13, ..., -7, -3, 0, 3, 7, ..., 20. * It doesn't round, and it is too hard to round using a table, so just * use a pull down menu rather than the more obvious range (slider). */ #ifdef RANGE_FOR_EXPOSURE static const ValueNameType cp880_reg_69_val_names[] = { { { .range = { -2.0, 2.0, .1 } }, NULL, } }; static const RegisterDescriptorType cp880_reg_69[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "exp", N_("Exposure Compensation"), VAL_NAME_INIT (cp880_reg_69_val_names) } }; #endif static const ValueNameType cp880_reg_69_val_names[] = { { { -20 }, "-2.0" }, { { -17 }, "-1.7" }, { { -13 }, "-1.3" }, { { -10 }, "-1.0" }, { { -07 }, "-0.7" }, { { -03 }, "-0.3" }, { { 00 }, " 0" }, { { +03 }, "+0.3" }, { { +07 }, "+0.7" }, { { +10 }, "+1.0" }, { { +13 }, "+1.3" }, { { +17 }, "+1.7" }, { { +20 }, "+2.0" }, }; static const RegisterDescriptorType cp880_reg_69[] = { { GP_WIDGET_MENU, GP_REG_NO_MASK, "exp", N_("Exposure Compensation"), VAL_NAME_INIT (cp880_reg_69_val_names) } }; /* * Register 70: exposure meter. */ static const ValueNameType cp880_reg_70_val_names[] = { { { 0x02 }, N_("Center-Weighted") }, { { 0x03 }, N_("Spot") }, { { 0x05 }, N_("Matrix") }, { { 0x06 }, N_("Spot-AF") }, }; static const RegisterDescriptorType cp880_reg_70[] = { { GP_WIDGET_RADIO, GP_REG_NO_MASK, "exp-meter", N_("Exposure Metering"), VAL_NAME_INIT (cp880_reg_70_val_names) } }; /* * Register 71: optical zoom value. This does not work on the cp880. * * It appears this needs the sierra extended protocol to be complete. */ static const ValueNameType cp880_reg_71_val_names[] = { { { .range = { 8.0, 20.0, .1 } }, NULL } }; static const RegisterDescriptorType cp880_reg_71[] = { { GP_WIDGET_RANGE, GP_REG_NO_MASK, "zoom", N_("Zoom (in millimeters)"), VAL_NAME_INIT (cp880_reg_71_val_names) } }; /* * Register 72: digital zoom, not fully working for cp880. This is likely * related to the optical zoom not working, as the digital zoom modifies * register 71 (when done from the camera). I can only set it to 2.0. * * It appears this needs the sierra extended protocol to be complete. * * The hi portion (mask 0xff00) has digital zoom values. On the cp880, it * looks like the regular zoom + the digital zoom value determine the * actual digital zoom used (the optical zoom must be at max before the * camera goes to a digital zoom). * * The low portion (mask 0x00ff) seems to have three values, none verified * on the cp880 - mabye should probably be split further. */ #ifdef OLD_WAY static const ValueNameType cp880_reg_72_mask_hi_val_names[] = { { { 0x0100 }, "1.25" }, { { 0x0200 }, "1.60" }, { { 0x0300 }, "2.00" }, { { 0x0400 }, "2.50" }, { { 0x0500 }, N_("none") }, }; static const ValueNameType cp880_reg_72_mask_lo_val_names[] = { { { 0x0001 }, N_("AE-lock") }, { { 0x0002 }, N_("Fisheye") }, { { 0x0004 }, N_("Wide") }, }; static const RegisterDescriptorType cp880_reg_72[] = { { GP_WIDGET_RADIO, 0xff00, "dzoom", N_("Digital Zoom"), VAL_NAME_INIT (cp880_reg_72_mask_hi_val_names) }, { GP_WIDGET_RADIO, 0x00ff, "misc-exp-lenses", N_("Misc exposure/lens settings"), VAL_NAME_INIT (cp880_reg_72_mask_lo_val_names) }, }; #endif static const ValueNameType cp880_reg_72_mask_hi_val_names[] = { { { 0x00 }, N_("off") }, { { 0x08 }, N_("on") }, }; static const ValueNameType cp880_reg_72_mask_lo_val_names[] = { { { 0x00 }, N_("off") }, { { 0x01 }, N_("on") }, }; static const RegisterDescriptorType cp880_reg_72[] = { { GP_WIDGET_RADIO, 0x08, "dzoom", N_("Digital Zoom"), VAL_NAME_INIT (cp880_reg_72_mask_hi_val_names) }, { GP_WIDGET_RADIO, 0x01, "ael", N_("Auto exposure lock"), VAL_NAME_INIT (cp880_reg_72_mask_lo_val_names) }, }; /* * All of the register used to modify picture settings. The register value * received from the camera is stored into this data area, so it cannot be * a const. */ static CameraRegisterType cp880_pic_regs[] = { /* camera prefix, register number, size of register */ CAM_REG_TYPE_INIT (cp880, 01, 4, CAM_DESC_DEFAULT, 0), /* resolution/size */ CAM_REG_TYPE_INIT (cp880, 03, 4, CAM_DESC_DEFAULT, 0), /* shutter */ CAM_REG_TYPE_INIT (cp880, 05, 4, CAM_DESC_DEFAULT, 0), /* aperture (f-stop) */ CAM_REG_TYPE_INIT (cp880, 06, 4, CAM_DESC_DEFAULT, 0), /* color mode */ CAM_REG_TYPE_INIT (cp880, 07, 4, CAM_DESC_DEFAULT, 0), /* flash */ CAM_REG_TYPE_INIT (cp880, 19, 4, CAM_DESC_DEFAULT, 0), /* brightness/contrast */ CAM_REG_TYPE_INIT (cp880, 20, 4, CAM_DESC_DEFAULT, 0), /* white balance */ #ifdef REG_30_FAILS CAM_REG_TYPE_INIT (cp880, 30, 4, CAM_DESC_DEFAULT, 0), /* LED mode */ #endif CAM_REG_TYPE_INIT (cp880, 33, 4, CAM_DESC_DEFAULT, 0), /* focus mode */ CAM_REG_TYPE_INIT (cp880, 69, 8, CAM_DESC_DEFAULT, 0), /* exposure compensation */ CAM_REG_TYPE_INIT (cp880, 70, 4, CAM_DESC_DEFAULT, 0), /* exposure metering */ CAM_REG_TYPE_INIT (cp880, 71, 8, CAM_DESC_DEFAULT, 0), /* optical zoom */ CAM_REG_TYPE_INIT (cp880, 72, 4, CAM_DESC_DEFAULT, 0), /* digital zoom + lense + AE lock */ }; /* * All of the register used to modify camera settings. */ static CameraRegisterType cp880_cam_regs[] = { CAM_REG_TYPE_INIT (cp880, 02, 4, CAM_DESC_DEFAULT, 0), /* date-time */ CAM_REG_TYPE_INIT (cp880, 34, 4, CAM_DESC_SUBACTION, SIERRA_ACTION_LCD_MODE), /* lcd mode */ CAM_REG_TYPE_INIT (cp880, 35, 4, CAM_DESC_DEFAULT, 0), /* LCD brightness */ CAM_REG_TYPE_INIT (cp880, 38, 4, CAM_DESC_DEFAULT, 0), /* LCD auto shutoff */ CAM_REG_TYPE_INIT (cp880, 53, 4, CAM_DESC_DEFAULT, 0), /* language */ }; /* * All of the register used to modify picture settings. The register value * received from the camera is stored into this data area, so it cannot be * a const. */ static CameraRegisterType cp2500_pic_regs[] = { /* camera prefix, register number, size of register */ CAM_REG_TYPE_INIT (cp2500, 01, 4, CAM_DESC_DEFAULT, 0), /* resolution/size */ CAM_REG_TYPE_INIT (cp880, 06, 4, CAM_DESC_DEFAULT, 0), /* color mode */ CAM_REG_TYPE_INIT (cp880, 07, 4, CAM_DESC_DEFAULT, 0), /* flash */ CAM_REG_TYPE_INIT (cp880, 19, 4, CAM_DESC_DEFAULT, 0), /* brightness/contrast */ CAM_REG_TYPE_INIT (cp880, 20, 4, CAM_DESC_DEFAULT, 0), /* white balance */ #ifdef REG_30_FAILS CAM_REG_TYPE_INIT (cp880, 30, 4, CAM_DESC_DEFAULT, 0), /* LED mode */ #endif CAM_REG_TYPE_INIT (cp880, 33, 4, CAM_DESC_DEFAULT, 0), /* focus mode */ CAM_REG_TYPE_INIT (cp880, 69, 8, CAM_DESC_DEFAULT, 0), /* exposure compensation */ CAM_REG_TYPE_INIT (cp880, 70, 4, CAM_DESC_DEFAULT, 0), /* exposure metering */ CAM_REG_TYPE_INIT (cp880, 71, 8, CAM_DESC_DEFAULT, 0), /* optical zoom */ CAM_REG_TYPE_INIT (cp880, 72, 4, CAM_DESC_DEFAULT, 0), /* digital zoom + lense + AE lock */ }; /* * All of the register used to modify camera settings. */ static CameraRegisterType cp2500_cam_regs[] = { CAM_REG_TYPE_INIT (cp880, 02, 4, CAM_DESC_DEFAULT, 0), /* date-time */ CAM_REG_TYPE_INIT (cp880, 34, 4, CAM_DESC_SUBACTION, SIERRA_ACTION_LCD_MODE), /* lcd mode */ CAM_REG_TYPE_INIT (cp880, 35, 4, CAM_DESC_DEFAULT, 0), /* LCD brightness */ CAM_REG_TYPE_INIT (cp880, 53, 4, CAM_DESC_DEFAULT, 0), /* language */ }; /* * All of the register used to modify picture settings. The register value * received from the camera is stored into this data area, so it cannot be * a const. */ static CameraRegisterType cp4300_pic_regs[] = { /* camera prefix, register number, size of register */ CAM_REG_TYPE_INIT (cp880, 01, 4, CAM_DESC_DEFAULT, 0), /* resolution/size */ CAM_REG_TYPE_INIT (cp880, 06, 4, CAM_DESC_DEFAULT, 0), /* color mode */ CAM_REG_TYPE_INIT (cp880, 07, 4, CAM_DESC_DEFAULT, 0), /* flash */ CAM_REG_TYPE_INIT (cp880, 19, 4, CAM_DESC_DEFAULT, 0), /* brightness/contrast */ CAM_REG_TYPE_INIT (cp880, 20, 4, CAM_DESC_DEFAULT, 0), /* white balance */ #ifdef REG_30_FAILS CAM_REG_TYPE_INIT (cp880, 30, 4, CAM_DESC_DEFAULT, 0), /* LED mode */ #endif CAM_REG_TYPE_INIT (cp880, 33, 4, CAM_DESC_DEFAULT, 0), /* focus mode */ CAM_REG_TYPE_INIT (cp880, 69, 8, CAM_DESC_DEFAULT, 0), /* exposure compensation */ CAM_REG_TYPE_INIT (cp880, 70, 4, CAM_DESC_DEFAULT, 0), /* exposure metering */ CAM_REG_TYPE_INIT (cp880, 71, 8, CAM_DESC_DEFAULT, 0), /* optical zoom */ CAM_REG_TYPE_INIT (cp880, 72, 4, CAM_DESC_DEFAULT, 0), /* digital zoom + lense + AE lock */ }; /* * All of the register used to modify camera settings. */ static CameraRegisterType cp4300_cam_regs[] = { CAM_REG_TYPE_INIT (cp880, 02, 4, CAM_DESC_DEFAULT, 0), /* date-time */ CAM_REG_TYPE_INIT (cp880, 34, 4, CAM_DESC_SUBACTION, SIERRA_ACTION_LCD_MODE), /* lcd mode */ CAM_REG_TYPE_INIT (cp880, 35, 4, CAM_DESC_DEFAULT, 0), /* LCD brightness */ CAM_REG_TYPE_INIT (cp880, 53, 4, CAM_DESC_DEFAULT, 0), /* language */ }; static const CameraRegisterSetType cp880_desc[] = { { N_("Picture Settings"), SIZE_ADDR (CameraRegisterType, cp880_pic_regs) }, { N_("Camera Settings"), SIZE_ADDR (CameraRegisterType, cp880_cam_regs) }, }; static const CameraRegisterSetType cp2500_desc[] = { { N_("Picture Settings"), SIZE_ADDR (CameraRegisterType, cp2500_pic_regs) }, { N_("Camera Settings"), SIZE_ADDR (CameraRegisterType, cp2500_cam_regs) }, }; static const CameraRegisterSetType cp4300_desc[] = { { N_("Picture Settings"), SIZE_ADDR (CameraRegisterType, cp4300_pic_regs) }, { N_("Camera Settings"), SIZE_ADDR (CameraRegisterType, cp4300_cam_regs) }, }; static const char cp880_manual[] = N_( "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n\n" " The optical zoom does not properly\n" " function.\n\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" ); /* * Note: use of the 995 has not been tested, it might not even be * possible to control the camera via the USB port since it reportedly * appears as a USB mass storage device. */ static const char cp995_manual[] = N_( "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n\n" " The download should function correctly.\n" ); const CameraDescType cp880_cam_desc = { cp880_desc, cp880_manual, SIERRA_EXT_PROTO, }; const CameraDescType cp995_cam_desc = { cp880_desc, cp995_manual, SIERRA_EXT_PROTO, }; const CameraDescType cp2500_cam_desc = { cp2500_desc, cp880_manual, SIERRA_EXT_PROTO, }; const CameraDescType cp4300_cam_desc = { cp4300_desc, cp880_manual, SIERRA_EXT_PROTO, }; libgphoto2-2.5.9/camlibs/topfield/0000755000175000001440000000000012623156270014021 500000000000000libgphoto2-2.5.9/camlibs/topfield/tf_bytes.h0000644000175000001440000000224012610415524015723 00000000000000/* Copyright (C) 2004 Peter Urbanec This file is part of puppy. puppy 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. puppy 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 puppy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _TF_BYTES_H #define _TF_BYTES_H 1 #include <_stdint.h> unsigned short get_u16(void *addr); unsigned short get_u16_raw(void *addr); unsigned int get_u32(void *addr); unsigned int get_u32_raw(void *addr); uint64_t get_u64(void *addr); void put_u16(void *addr, unsigned short val); void put_u32(void *addr, unsigned int val); void put_u64(void *addr, uint64_t val); #endif /* _TF_BYTES_H */ libgphoto2-2.5.9/camlibs/topfield/puppy.c0000644000175000001440000007217412610415617015274 00000000000000/* Copyright (C) 2004 Peter Urbanec Copyright (C) 2008 Marcus Meissner This file is part of puppy. puppy 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. puppy 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 puppy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include #include #include #include #include #include #include #include #include #include #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) # include # include #endif #include "usb_io.h" #include "tf_bytes.h" #define PUT 0 #define GET 1 #if 0 static int quiet = 0; #endif #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) static iconv_t cd_locale_to_latin1; static iconv_t cd_latin1_to_locale; #endif struct _mapnames { char *tfname; char *lgname; }; struct _CameraPrivateLibrary { struct _mapnames *names; int nrofnames; }; static void backslash(char *path) { char *s = path; while ((s = strchr (s, '/'))) *s='\\'; } #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) static char* strdup_to_latin1 (const char *str) { size_t ret, srclen, dstlen, ndstlen; char *src, *dst, *dest = NULL; ndstlen = strlen(str)*2; while (1) { srclen = strlen(str)+1; src = (char*)str; dstlen = ndstlen; free (dest); dst = dest = calloc (dstlen,1); if (!dst) return NULL; ret = iconv (cd_locale_to_latin1, &src, &srclen, &dst, &dstlen); if ((ret == -1) && (errno == E2BIG)) { ndstlen *= 2; continue; } if (ret == -1) { perror("iconv"); free (dest); dest = NULL; } break; } return dest; } static char* strdup_to_locale (char *str) { size_t ret, srclen, dstlen, ndstlen; char *dst, *dest = NULL, *src; if (str[0] == 5) /* Special Movie Marker on Topfield */ str++; ndstlen = strlen(str)*2+1; while (1) { srclen = strlen(str)+1; /* +1 ? */ src = str; dstlen = ndstlen; free (dest); dst = dest = malloc (dstlen); if (!dst) return NULL; ret = iconv (cd_latin1_to_locale, &src, &srclen, &dst, &dstlen); if ((ret == -1) && (errno == E2BIG)) { ndstlen *= 2; continue; } if (ret == -1) { perror("iconv"); free (dest); return NULL; } break; } src= dest; while (1) { src = strchr (src, '/'); if (!src) break; *src='-'; /* FIXME: find better replacement char */ src++; } return dest; } #else # define strdup_to_latin1 strdup # define strdup_to_locale strdup #endif static char* _convert_and_logname(Camera *camera, char *tfname) { int i; struct _mapnames *map; /* search for it in list */ for (i=0;ipl->nrofnames;i++) { if (!strcmp(tfname, camera->pl->names[i].tfname)) return camera->pl->names[i].lgname; } camera->pl->names = realloc (camera->pl->names, (camera->pl->nrofnames+1)*sizeof(camera->pl->names[0])); map = &camera->pl->names[camera->pl->nrofnames]; map->tfname = strdup(tfname); map->lgname = strdup_to_locale(tfname); camera->pl->nrofnames++; return map->lgname; } static char* _convert_for_device(Camera *camera, const char *lgname) { int i; /* search for it in list */ for (i=0;ipl->nrofnames;i++) { if (!strcmp(lgname, camera->pl->names[i].lgname)) return camera->pl->names[i].tfname; } /* should be here ... */ return NULL; } static char * get_path (Camera *camera, const char *folder, const char *filename) { char *path; char *xfolder, *xfilename; xfolder = strdup_to_latin1 (folder); if (!xfolder) return NULL; xfilename = _convert_for_device (camera, filename); if (!xfilename) { free (xfolder); return NULL; } path = malloc(strlen(xfolder)+1+strlen(xfilename)+1); if (!path) { free (xfolder); return NULL; } strcpy (path, xfolder); strcat (path, "/"); backslash (path); strcat (path, xfilename); free (xfolder); free (xfilename); return path; } static char * decode_error(struct tf_packet *packet) { uint32_t ecode = get_u32(packet->data); switch (ecode) { case 1: return "CRC error"; break; case 2: case 4: return "Unknown command"; break; case 3: return "Invalid command"; break; case 5: return "Invalid block size"; break; case 6: return "Unknown error while running"; break; case 7: return "Memory is full"; break; default: return "Unknown error or all your base are belong to us"; } } static int do_cmd_turbo(Camera *camera, char *state, GPContext *context) { int r; int turbo_on = atoi(state); struct tf_packet reply; char buf[1024]; /* check if we want to use turbo mode. Default is YES */ if (GP_OK == gp_setting_get("topfield","turbo", buf)) if (!strcmp(buf,"no")) return GP_OK; if(0 == strcasecmp("ON", state)) turbo_on = 1; r = send_cmd_turbo(camera, turbo_on, context); if(r < 0) return r; r = get_tf_packet(camera, &reply, context); if(r < 0) return r; switch (get_u32(&reply.cmd)) { case SUCCESS: gp_log (GP_LOG_DEBUG, "topfield", "Turbo mode: %s\n", turbo_on ? "ON" : "OFF"); return GP_OK; break; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet\n"); } return GP_ERROR_IO; } #if 0 static int do_cmd_reset(Camera *camera, GPContext *context) { int r; struct tf_packet reply; r = send_cmd_reset(camera,context); if(r < 0) return r; r = get_tf_packet(camera, &reply, context); if(r < 0) return r; switch (get_u32(&reply.cmd)) { case SUCCESS: gp_log (GP_LOG_DEBUG, "topfield", "TF5000PVRt should now reboot\n"); return GP_OK; break; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet\n"); break; } return GP_ERROR_IO; } #endif static int do_cmd_ready(Camera *camera, GPContext *context) { int r; struct tf_packet reply; r = send_cmd_ready(camera,context); if(r < 0) return r; r = get_tf_packet(camera, &reply, context); if(r < 0) return r; switch (get_u32(&reply.cmd)) { case SUCCESS: gp_log (GP_LOG_DEBUG, "topfield", "Device reports ready.\n"); return GP_OK; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet\n"); return GP_ERROR_IO; } return GP_OK; } #if 0 static int do_cancel(Camera *camera, GPContext *context) { int r; struct tf_packet reply; r = send_cancel(camera,context); if(r < 0) return r; r = get_tf_packet(camera, &reply, context); if(r < 0) return r; switch (get_u32(&reply.cmd)) { case SUCCESS: gp_log (GP_LOG_DEBUG, "topfield", "In progress operation cancelled\n"); return GP_OK; break; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet\n"); break; } return GP_ERROR_IO; } #endif static void decode_dir(Camera *camera, struct tf_packet *p, int listdirs, CameraList *list) { unsigned short count = (get_u16(&p->length) - PACKET_HEAD_SIZE) / sizeof(struct typefile); struct typefile *entries = (struct typefile *) p->data; int i; char *name; for(i = 0; i < count; i++) { switch (entries[i].filetype) { case 1: if (listdirs) { if (!strcmp ((char*)entries[i].name, "..")) continue; gp_list_append (list, (char*)entries[i].name, NULL); } break; case 2: if (!listdirs) { name = _convert_and_logname (camera, (char*)entries[i].name); gp_list_append (list, name, NULL); } break; default: break; } #if 0 /* This makes the assumption that the timezone of the Toppy and the system * that puppy runs on are the same. Given the limitations on the length of * USB cables, this condition is likely to be satisfied. */ timestamp = tfdt_to_time(&entries[i].stamp); printf("%c %20llu %24.24s %s\n", type, get_u64(&entries[i].size), ctime(×tamp), entries[i].name); #endif } } static void decode_and_get_info(Camera *camera, const char *folder, struct tf_packet *p, const char *fn, CameraFileInfo *info, GPContext *context) { unsigned short count = (get_u16(&p->length) - PACKET_HEAD_SIZE) / sizeof(struct typefile); struct typefile *entries = (struct typefile *) p->data; int i; char *name; for(i = 0; i < count; i++) { switch (entries[i].filetype) { case 1: break;/*dir*/ case 2: /* file */ name = _convert_and_logname (camera, (char*)entries[i].name); if (!strcmp (name, fn)) { /* the wanted current one */ memset (info, 0, sizeof (*info)); info->file.fields = GP_FILE_INFO_SIZE|GP_FILE_INFO_MTIME; if (strstr (name, ".rec")) { info->file.fields |= GP_FILE_INFO_TYPE; strcpy (info->file.type, GP_MIME_MPEG); } info->file.size = get_u64(&entries[i].size); info->file.mtime = tfdt_to_time(&entries[i].stamp); } else { /* cache the others to avoid further turnarounds */ CameraFileInfo xinfo; memset (&xinfo, 0, sizeof (xinfo)); xinfo.file.fields = GP_FILE_INFO_TYPE|GP_FILE_INFO_SIZE|GP_FILE_INFO_MTIME; strcpy (xinfo.file.type, GP_MIME_MPEG); xinfo.file.size = get_u64(&entries[i].size); xinfo.file.mtime = tfdt_to_time(&entries[i].stamp); gp_filesystem_append (camera->fs, folder, name, context); /* FIXME: might fail if exist? */ gp_filesystem_set_info_noop (camera->fs, folder, name, xinfo, context); } break; default: break; } #if 0 /* This makes the assumption that the timezone of the Toppy and the system * that puppy runs on are the same. Given the limitations on the length of * USB cables, this condition is likely to be satisfied. */ timestamp = tfdt_to_time(&entries[i].stamp); printf("%c %20llu %24.24s %s\n", type, get_u64(&entries[i].size), ctime(×tamp), entries[i].name); #endif } } #if 0 static int do_hdd_rename(Camera *camera, char *srcPath, char *dstPath, GPContext *context) { int r; struct tf_packet reply; r = send_cmd_hdd_rename(camera, srcPath, dstPath, context); if(r < 0) return r; r = get_tf_packet(camera, &reply, context); if(r < 0) return r; switch (get_u32(&reply.cmd)) { case SUCCESS: return GP_OK; break; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet\n"); break; } return GP_ERROR_IO; } static void progressStats(uint64_t totalSize, uint64_t bytes, time_t startTime) { int delta = time(NULL) - startTime; if(quiet) return; if(delta > 0) { double rate = bytes / delta; int eta = (totalSize - bytes) / rate; fprintf(stderr, "\r%6.2f%%, %5.2f Mbits/s, %02d:%02d:%02d elapsed, %02d:%02d:%02d remaining", 100.0 * ((double) (bytes) / (double) totalSize), ((bytes * 8.0) / delta) / (1000 * 1000), delta / (60 * 60), (delta / 60) % 60, delta % 60, eta / (60 * 60), (eta / 60) % 60, eta % 60); } } static void finalStats(uint64_t bytes, time_t startTime) { int delta = time(NULL) - startTime; if(quiet) return; if(delta > 0) { fprintf(stderr, "\n%.2f Mbytes in %02d:%02d:%02d (%.2f Mbits/s)\n", (double) bytes / (1000.0 * 1000.0), delta / (60 * 60), (delta / 60) % 60, delta % 60, ((bytes * 8.0) / delta) / (1000.0 * 1000.0)); } } #endif static int camera_config_get (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *section, *turbo; char buf[1024]; int val; gp_widget_new (GP_WIDGET_WINDOW, _("Camera Configuration"), window); gp_widget_set_name (*window, "config"); gp_widget_new (GP_WIDGET_SECTION, _("Driver Settings"), §ion); gp_widget_set_name (section, "driver"); gp_widget_append (*window, section); gp_widget_new (GP_WIDGET_RADIO, _("Turbo mode"), &turbo); gp_widget_set_name (turbo, "turbo"); gp_widget_add_choice (turbo,_("On")); gp_widget_add_choice (turbo,_("Off")); gp_widget_append (section, turbo); if (GP_OK == gp_setting_get("topfield","turbo", buf)) { if (!strcmp(buf,"no")) val = 0; else val = 1; } else { val = 1; /* enabled by default */ } gp_widget_set_value ( turbo, val?_("On"):_("Off")); return GP_OK; } static int camera_config_set (Camera *camera, CameraWidget *window, GPContext *context) { int ret; CameraWidget *turbo; ret = gp_widget_get_child_by_name (window, "turbo", &turbo); if (ret != GP_OK) { gp_log (GP_LOG_ERROR, "camera_config_set", "did not find turbo menu entry?\n"); return GP_OK; } if (gp_widget_changed (turbo)) { const char* val; int ival; ret = gp_widget_get_value (turbo, &val); if (ret == GP_OK) { ival = !strcmp (val, _("On")); gp_log (GP_LOG_DEBUG, "camera_config_set", "val %s, ival %d\n", val, ival); gp_setting_set ("topfield", "turbo", ival?"yes":"no"); } } return GP_OK; } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" )); return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int result = GP_ERROR_IO; enum { START, DATA, ABORT } state; int r, pid = 0, update = 0; uint64_t byteCount = 0; struct utimbuf mod_utime_buf = { 0, 0 }; char *path; struct tf_packet reply; if (type != GP_FILE_TYPE_NORMAL) return GP_ERROR_NOT_SUPPORTED; do_cmd_turbo (camera, "ON", context); path = get_path(camera, folder, filename); r = send_cmd_hdd_file_send(camera, GET, path, context); free (path); if(r < 0) goto out; state = START; while(0 < (r = get_tf_packet(camera, &reply, context))) { update = (update + 1) % 4; switch (get_u32(&reply.cmd)) { case DATA_HDD_FILE_START: if(state == START) { struct typefile *tf = (struct typefile *) reply.data; byteCount = get_u64(&tf->size); pid = gp_context_progress_start (context, byteCount, _("Downloading %s..."), filename); mod_utime_buf.actime = mod_utime_buf.modtime = tfdt_to_time(&tf->stamp); send_success(camera,context); state = DATA; } else { gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unexpected DATA_HDD_FILE_START packet in state %d\n", state); send_cancel(camera,context); state = ABORT; } break; case DATA_HDD_FILE_DATA: if(state == DATA) { uint64_t offset = get_u64(reply.data); uint16_t dataLen = get_u16(&reply.length) - (PACKET_HEAD_SIZE + 8); int w; if (!update) { /* avoid doing it too often */ gp_context_progress_update (context, pid, offset + dataLen); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { send_cancel(camera,context); state = ABORT; } } if(r < get_u16(&reply.length)) { gp_log (GP_LOG_ERROR, "topfield", "ERROR: Short packet %d instead of %d\n", r, get_u16(&reply.length)); /* TODO: Fetch the rest of the packet */ } w = gp_file_append (file, (char*)&reply.data[8], dataLen); if(w < GP_OK) { /* Can't write data - abort transfer */ gp_log (GP_LOG_ERROR, "topfield", "ERROR: Can not write data: %d\n", w); send_cancel(camera,context); state = ABORT; } } else { gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unexpected DATA_HDD_FILE_DATA packet in state %d\n", state); send_cancel(camera,context); state = ABORT; } break; case DATA_HDD_FILE_END: send_success(camera,context); result = GP_OK; goto out; break; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); send_cancel(camera,context); state = ABORT; break; case SUCCESS: goto out; break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet (cmd 0x%x)\n", get_u32(&reply.cmd)); break; } } if (pid) gp_context_progress_stop (context, pid); out: do_cmd_turbo (camera, "OFF", context); return result; } #if 0 static int put_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; /* * Upload the file to the camera. Use gp_file_get_data_and_size etc. */ int result = -EPROTO; time_t startTime = time(NULL); enum { START, DATA, END, FINISHED } state; int src = -1; int r; int update = 0; struct stat srcStat; __u64 fileSize; __u64 byteCount = 0; const char *filename; char *path; struct tf_packet reply; if(0 != fstat(src, &srcStat)) { gp_log (GP_LOG_ERROR, "topfield", "ERROR: Can not examine source file: %s\n", strerror(errno)); result = errno; goto out; } fileSize = srcStat.st_size; if(fileSize == 0) { gp_log (GP_LOG_ERROR, "topfield", "ERROR: Source file is empty - not transfering.\n"); result = -ENODATA; goto out; } path = get_path (camera, folder, filename); r = send_cmd_hdd_file_send(camera, PUT, path, context); if(r < 0) goto out; state = START; while(0 < get_tf_packet(camera, &reply, context)) { update = (update + 1) % 16; switch (get_u32(&reply.cmd)) { case SUCCESS: switch (state) { case START: { /* Send start */ struct typefile *tf = (struct typefile *) packet.data; put_u16(&packet.length, PACKET_HEAD_SIZE + 114); put_u32(&packet.cmd, DATA_HDD_FILE_START); time_to_tfdt(srcStat.st_mtime, &tf->stamp); tf->filetype = 2; put_u64(&tf->size, srcStat.st_size); strncpy((char *) tf->name, path, 94); tf->name[94] = '\0'; tf->unused = 0; tf->attrib = 0; gp_log (GP_LOG_DEBUG, "topfield", "%s: DATA_HDD_FILE_START\n", __func__); r = send_tf_packet(camera, &packet, context); if(r < 0) { gp_log (GP_LOG_ERROR, "topfield", "ERROR: Incomplete send.\n"); goto out; } state = DATA; break; } case DATA: { int payloadSize = sizeof(packet.data) - 9; ssize_t w = read(src, &packet.data[8], payloadSize); /* Detect a Topfield protcol bug and prevent the sending of packets that are a multiple of 512 bytes. */ if((w > 4) && (((((PACKET_HEAD_SIZE + 8 + w) + 1) & ~1) % 0x200) == 0)) { lseek(src, -4, SEEK_CUR); w -= 4; payloadSize -= 4; } put_u16(&packet.length, PACKET_HEAD_SIZE + 8 + w); put_u32(&packet.cmd, DATA_HDD_FILE_DATA); put_u64(packet.data, byteCount); byteCount += w; /* Detect EOF and transition to END */ if((w < 0) || (byteCount >= fileSize)) { state = END; } if(w > 0) { gp_log (GP_LOG_DEBUG, "topfield", "%s: DATA_HDD_FILE_DATA\n", __func__); r = send_tf_packet(camera, &packet, context); if(r < w) { gp_log (GP_LOG_ERROR, "topfield", "ERROR: Incomplete send.\n"); goto out; } } if(!update && !quiet) { progressStats(fileSize, byteCount, startTime); } break; } case END: /* Send end */ put_u16(&packet.length, PACKET_HEAD_SIZE); put_u32(&packet.cmd, DATA_HDD_FILE_END); gp_log (GP_LOG_DEBUG, "topfield", "%s: DATA_HDD_FILE_END\n", __func__); r = send_tf_packet(camera, &packet, context); if(r < 0) { gp_log (GP_LOG_ERROR, "topfield", "ERROR: Incomplete send.\n"); goto out; } state = FINISHED; break; case FINISHED: result = 0; goto out; break; } break; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); goto out; break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet (%d)\n", get_u32(&reply.cmd)); break; } } finalStats(byteCount, startTime); out: close(src); return result; } #endif static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int r; char *path = get_path (camera, folder, filename); struct tf_packet reply; r = send_cmd_hdd_del(camera, path, context); free (path); if(r < 0) return r; r = get_tf_packet(camera, &reply, context); if(r < 0) return r; switch (get_u32(&reply.cmd)) { case SUCCESS: return GP_OK; break; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet\n"); break; } return GP_ERROR_IO; } #if 0 static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { /*Camera *camera = data;*/ /* * Delete all files in the given folder. If your camera doesn't have * such a functionality, just don't implement this function. */ return GP_OK; } #endif static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int r; struct tf_packet reply; char *xfolder = strdup (folder); backslash (xfolder); r = send_cmd_hdd_dir(camera, xfolder, context); free (xfolder); if(r < GP_OK) return r; while(0 < get_tf_packet(camera, &reply, context)) { switch (get_u32(&reply.cmd)) { case DATA_HDD_DIR: decode_and_get_info(camera, folder, &reply, filename, info, context); send_success(camera,context); break; case DATA_HDD_DIR_END: return GP_OK; break; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); return GP_ERROR_IO; break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet\n"); return GP_ERROR_IO; } } return GP_OK; } #if 0 static int set_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo info, void *data, GPContext *context) { /*Camera *camera = data;*/ /* Set the file info here from */ return GP_OK; } #endif static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int r; struct tf_packet reply; char *xfolder = strdup (folder); backslash (xfolder); r = send_cmd_hdd_dir(camera, xfolder, context); free (xfolder); if(r < GP_OK) return r; while(0 < get_tf_packet (camera, &reply, context)) { switch (get_u32 (&reply.cmd)) { case DATA_HDD_DIR: decode_dir (camera, &reply, 1, list); send_success (camera,context); break; case DATA_HDD_DIR_END: return GP_OK; break; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); return GP_ERROR_IO; break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet\n"); return GP_ERROR_IO; } } return GP_OK; } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int r; struct tf_packet reply; char *xfolder = strdup (folder); backslash (xfolder); r = send_cmd_hdd_dir(camera, xfolder, context); free (xfolder); if(r < GP_OK) return r; while(0 < get_tf_packet (camera, &reply, context)) { switch (get_u32 (&reply.cmd)) { case DATA_HDD_DIR: decode_dir (camera, &reply, 0, list); send_success (camera,context); break; case DATA_HDD_DIR_END: return GP_OK; break; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); return GP_ERROR_IO; break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet\n"); return GP_ERROR_IO; } } return GP_OK; } static int storage_info_func (CameraFilesystem *fs, CameraStorageInformation **storageinformations, int *nrofstorageinformations, void *data, GPContext *context) { Camera *camera = data; int r; struct tf_packet reply; CameraStorageInformation *sif; /* List your storages here */ gp_log (GP_LOG_ERROR, "topfield", __func__); r = send_cmd_hdd_size(camera,context); if(r < 0) return r; r = get_tf_packet(camera, &reply, context); if(r < 0) return r; switch (get_u32(&reply.cmd)) { case DATA_HDD_SIZE: { unsigned int totalk = get_u32(&reply.data); unsigned int freek = get_u32(&reply.data[4]); sif = *storageinformations = calloc(sizeof(CameraStorageInformation),1); *nrofstorageinformations = 1; sif->fields |= GP_STORAGEINFO_BASE; strcpy (sif->basedir,"/"); sif->fields |= GP_STORAGEINFO_STORAGETYPE; sif->type = GP_STORAGEINFO_ST_FIXED_RAM; sif->fields |= GP_STORAGEINFO_ACCESS; sif->access = GP_STORAGEINFO_AC_READWRITE; sif->fields |= GP_STORAGEINFO_FILESYSTEMTYPE; sif->fstype = GP_STORAGEINFO_FST_GENERICHIERARCHICAL; sif->fields |= GP_STORAGEINFO_MAXCAPACITY; sif->capacitykbytes = totalk / 1024; sif->fields |= GP_STORAGEINFO_FREESPACEKBYTES; sif->freekbytes = freek / 1024; return GP_OK; break; } case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet\n"); break; } return GP_ERROR_IO; } static int make_dir_func (CameraFilesystem *fs, const char *folder, const char *foldername, void *data, GPContext *context) { Camera *camera = data; char *path = get_path (camera, folder, foldername); struct tf_packet reply; int r; r = send_cmd_hdd_create_dir(camera, path, context); free (path); if(r < 0) return r; r = get_tf_packet(camera, &reply, context); if(r < 0) return r; switch (get_u32(&reply.cmd)) { case SUCCESS: return GP_OK; break; case FAIL: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Device reports %s\n", decode_error(&reply)); break; default: gp_log (GP_LOG_ERROR, "topfield", "ERROR: Unhandled packet\n"); } return GP_ERROR_IO; } /**********************************************************************/ int camera_id (CameraText *id) { strcpy(id->text, "Topfield 5000 PVR"); return GP_OK; } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a, 0, sizeof(a)); strcpy(a.model, "Topfield:TF5000PVR"); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB; a.usb_vendor = 0x11db; a.usb_product = 0x1000; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_NONE; return gp_abilities_list_append(list, a); } CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .get_info_func = get_info_func, #if 0 .set_info_func = set_info_func, #endif .get_file_func = get_file_func, .del_file_func = delete_file_func, #if 0 .put_file_func = put_file_func, .delete_all_func = delete_all_func, #endif .storage_info_func = storage_info_func, .make_dir_func = make_dir_func }; static int camera_exit (Camera *camera, GPContext *context) { #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) iconv_close (cd_latin1_to_locale); iconv_close (cd_locale_to_latin1); #endif free (camera->pl->names); free (camera->pl); return GP_OK; } int camera_init (Camera *camera, GPContext *context) { char *curloc; /* First, set up all the function pointers */ camera->functions->get_config = camera_config_get; camera->functions->set_config = camera_config_set; camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->exit = camera_exit; /* Now, tell the filesystem where to get lists, files and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); gp_port_set_timeout (camera->port, TF_PROTOCOL_TIMEOUT); gp_port_usb_clear_halt (camera->port, GP_PORT_USB_ENDPOINT_IN); camera->pl = calloc (sizeof (CameraPrivateLibrary),1); if (!camera->pl) return GP_ERROR_NO_MEMORY; #if defined(HAVE_ICONV) && defined(HAVE_LANGINFO_H) curloc = nl_langinfo (CODESET); if (!curloc) curloc="UTF-8"; cd_latin1_to_locale = iconv_open(curloc, "iso-8859-1"); if (!cd_latin1_to_locale) return GP_ERROR_NO_MEMORY; cd_locale_to_latin1 = iconv_open("iso-8859-1", curloc); if (!cd_locale_to_latin1) return GP_ERROR_NO_MEMORY; #endif do_cmd_ready (camera, context); return GP_OK; } libgphoto2-2.5.9/camlibs/topfield/mjd.h0000644000175000001440000000224212610415524014660 00000000000000/* Copyright (C) 2004 Peter Urbanec This file is part of puppy. puppy 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. puppy 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 puppy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _MJD_H #define _MJD_H 1 #include #include /* Encapsulation of MJD date and h:m:s timestamp */ #pragma pack(1) struct tf_datetime { unsigned short mjd; unsigned char hour; unsigned char minute; unsigned char second; }; #pragma pack() time_t tfdt_to_time(struct tf_datetime *dt); void time_to_tfdt(time_t t, struct tf_datetime *dt); #endif /* _MJD_H */ libgphoto2-2.5.9/camlibs/topfield/usb_io.c0000644000175000001440000002215112610415536015365 00000000000000/* Copyright (C) 2004 Peter Urbanec This file is part of puppy. puppy 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. puppy 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 puppy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include #include "usb_io.h" #include "tf_bytes.h" #include "crc16.h" /* The Topfield packet handling is a bit unusual. All data is stored in * memory in big endian order, however, just prior to transmission all * data is byte swapped. * * Functions to read and write the memory version of packets are provided * in tf_bytes.c * * Routines here take care of CRC generation, byte swapping and packet * transmission. */ /* Swap the odd and even bytes in the buffer, up to count bytes. * If count is odd, the last byte remains unafected. */ static void byte_swap(unsigned char * d, int count) { int i; for(i = 0; i < (count & ~1); i += 2) { unsigned char t = d[i]; d[i] = d[i + 1]; d[i + 1] = t; } } /* Byte swap an incoming packet. */ static void swap_in_packet(struct tf_packet *packet) { int size = (get_u16_raw(packet) + 1) & ~1; if(size > MAXIMUM_PACKET_SIZE) { size = MAXIMUM_PACKET_SIZE; }; byte_swap((unsigned char *) packet, size); } /* Byte swap an outgoing packet. */ static void swap_out_packet(struct tf_packet *packet) { int size = (get_u16(packet) + 1) & ~1; byte_swap((unsigned char *) packet, size); } static const unsigned char cancel_packet[8] = { 0x08, 0x00, 0x40, 0x01, 0x00, 0x00, 0x03, 0x00 }; static const unsigned char success_packet[8] = { 0x08, 0x00, 0x81, 0xc1, 0x00, 0x00, 0x02, 0x00 }; /* Optimised packet handling to reduce overhead during bulk file transfers. */ ssize_t send_cancel(Camera *camera,GPContext *context) { gp_log (GP_LOG_DEBUG, "topfield", __func__); return gp_port_write (camera->port, (char *)cancel_packet, 8); } ssize_t send_success(Camera *camera, GPContext *context) { gp_log (GP_LOG_DEBUG, "topfield", __func__); return gp_port_write (camera->port, (char *)success_packet, 8); } ssize_t send_cmd_ready(Camera *camera, GPContext *context) { struct tf_packet req; gp_log (GP_LOG_DEBUG, "topfield", __func__); put_u16(&req.length, 8); put_u32(&req.cmd, CMD_READY); return send_tf_packet(camera, &req, context); } ssize_t send_cmd_reset(Camera *camera, GPContext *context) { struct tf_packet req; gp_log (GP_LOG_DEBUG, "topfield", __func__); put_u16(&req.length, 8); put_u32(&req.cmd, CMD_RESET); return send_tf_packet(camera, &req, context); } ssize_t send_cmd_turbo(Camera *camera, int turbo_on, GPContext *context) { struct tf_packet req; gp_log (GP_LOG_DEBUG, "topfield", __func__); put_u16(&req.length, 12); put_u32(&req.cmd, CMD_TURBO); put_u32(&req.data, turbo_on); return send_tf_packet(camera, &req, context); } ssize_t send_cmd_hdd_size(Camera *camera, GPContext *context) { struct tf_packet req; gp_log (GP_LOG_DEBUG, "topfield", __func__); put_u16(&req.length, 8); put_u32(&req.cmd, CMD_HDD_SIZE); return send_tf_packet(camera, &req, context); } static unsigned short get_crc(struct tf_packet * packet) { return crc16_ansi(&(packet->cmd), get_u16(&packet->length) - 4); } ssize_t send_cmd_hdd_dir(Camera *camera, char *path, GPContext *context) { struct tf_packet req; unsigned short packetSize; int pathLen = strlen(path) + 1; gp_log (GP_LOG_DEBUG, "topfield", __func__); if((PACKET_HEAD_SIZE + pathLen) >= MAXIMUM_PACKET_SIZE) { fprintf(stderr, "ERROR: Path is too long.\n"); return -1; } packetSize = PACKET_HEAD_SIZE + pathLen; packetSize = (packetSize + 1) & ~1; put_u16(&req.length, packetSize); put_u32(&req.cmd, CMD_HDD_DIR); strcpy((char *) req.data, path); return send_tf_packet(camera, &req,context); } ssize_t send_cmd_hdd_file_send(Camera *camera, unsigned char dir, char *path, GPContext *context) { struct tf_packet req; unsigned short packetSize; int pathLen = strlen(path) + 1; gp_log (GP_LOG_DEBUG, "topfield", "send_cmd_hdd_file_send(dir = %d, path = %s)", dir, path); if((PACKET_HEAD_SIZE + 1 + 2 + pathLen) >= MAXIMUM_PACKET_SIZE) { fprintf(stderr, "ERROR: Path is too long.\n"); return -1; } packetSize = PACKET_HEAD_SIZE + 1 + 2 + pathLen; packetSize = (packetSize + 1) & ~1; put_u16(&req.length, packetSize); put_u32(&req.cmd, CMD_HDD_FILE_SEND); req.data[0] = dir; put_u16(&req.data[1], pathLen); strcpy((char *) &req.data[3], path); return send_tf_packet(camera, &req, context); } ssize_t send_cmd_hdd_del(Camera *camera, char *path, GPContext *context) { struct tf_packet req; unsigned short packetSize; int pathLen = strlen(path) + 1; gp_log (GP_LOG_DEBUG, "topfield", __func__); if((PACKET_HEAD_SIZE + pathLen) >= MAXIMUM_PACKET_SIZE) { fprintf(stderr, "ERROR: Path is too long.\n"); return -1; } packetSize = PACKET_HEAD_SIZE + pathLen; packetSize = (packetSize + 1) & ~1; put_u16(&req.length, packetSize); put_u32(&req.cmd, CMD_HDD_DEL); strcpy((char *) req.data, path); return send_tf_packet(camera, &req, context); } ssize_t send_cmd_hdd_rename(Camera *camera, char *src, char *dst, GPContext *context) { struct tf_packet req; unsigned short packetSize; unsigned short srcLen = strlen(src) + 1; unsigned short dstLen = strlen(dst) + 1; gp_log (GP_LOG_DEBUG, "topfield", __func__); if((PACKET_HEAD_SIZE + 2 + srcLen + 2 + dstLen) >= MAXIMUM_PACKET_SIZE) { fprintf(stderr, "ERROR: Combination of source and destination paths is too long.\n"); return -1; } packetSize = PACKET_HEAD_SIZE + 2 + srcLen + 2 + dstLen; packetSize = (packetSize + 1) & ~1; put_u16(&req.length, packetSize); put_u32(&req.cmd, CMD_HDD_RENAME); put_u16(&req.data[0], srcLen); strcpy((char *) &req.data[2], src); put_u16(&req.data[2 + srcLen], dstLen); strcpy((char *) &req.data[2 + srcLen + 2], dst); return send_tf_packet(camera, &req, context); } ssize_t send_cmd_hdd_create_dir(Camera *camera, char *path, GPContext *context) { struct tf_packet req; unsigned short packetSize; unsigned short pathLen = strlen(path) + 1; gp_log (GP_LOG_DEBUG, "topfield", __func__); if((PACKET_HEAD_SIZE + 2 + pathLen) >= MAXIMUM_PACKET_SIZE) { fprintf(stderr, "ERROR: Path is too long.\n"); return -1; } packetSize = PACKET_HEAD_SIZE + 2 + pathLen; packetSize = (packetSize + 1) & ~1; put_u16(&req.length, packetSize); put_u32(&req.cmd, CMD_HDD_CREATE_DIR); put_u16(&req.data[0], pathLen); strcpy((char *) &req.data[2], path); return send_tf_packet(camera, &req, context); } /* Given a Topfield protocol packet, this function will calculate the required * CRC and send the packet out over a bulk pipe. */ ssize_t send_tf_packet(Camera *camera, struct tf_packet *packet, GPContext *context) { unsigned int pl = get_u16(&packet->length); ssize_t byte_count = (pl + 1) & ~1; gp_log (GP_LOG_DEBUG, "topfield", __func__); put_u16(&packet->crc, get_crc(packet)); swap_out_packet(packet); return gp_port_write (camera->port, (char *) packet, byte_count); } /* Receive a Topfield protocol packet. * Returns a negative number if the packet read failed for some reason. */ ssize_t get_tf_packet(Camera *camera, struct tf_packet * packet, GPContext *context) { unsigned char *buf = (unsigned char *) packet; int r; gp_log (GP_LOG_DEBUG, "topfield", __func__); r = gp_port_read (camera->port, (char *)buf, MAXIMUM_PACKET_SIZE); if(r < 0) return r; if(r < PACKET_HEAD_SIZE) { gp_log (GP_LOG_DEBUG, "topfield", "Short read. %d bytes\n", r); return -1; } /* Send SUCCESS as soon as we see a data transfer packet */ if(DATA_HDD_FILE_DATA == get_u32_raw(&packet->cmd)) send_success(camera,context); swap_in_packet(packet); { unsigned short crc; unsigned short calc_crc; unsigned short len = get_u16(&packet->length); if(len < PACKET_HEAD_SIZE) { gp_log (GP_LOG_DEBUG, "topfield", "Invalid packet length %04x\n", len); return -1; } crc = get_u16(&packet->crc); calc_crc = get_crc(packet); /* Complain about CRC mismatch */ if(crc != calc_crc) gp_log (GP_LOG_ERROR, "topfield", "WARNING: Packet CRC %04x, expected %04x\n", crc, calc_crc); } return r; } libgphoto2-2.5.9/camlibs/topfield/Makefile-files0000644000175000001440000000061112561423352016476 00000000000000EXTRA_LTLIBRARIES += topfield.la EXTRA_DIST += topfield/ChangeLog topfield_la_SOURCES = topfield/crc16.c topfield/crc16.h topfield/tf_bytes.c topfield/tf_bytes.h topfield/mjd.c topfield/mjd.h \ topfield/puppy.c topfield/usb_io.h topfield/usb_io.c topfield_la_LDFLAGS = $(camlib_ldflags) topfield_la_DEPENDENCIES = $(camlib_dependencies) topfield_la_LIBADD = $(camlib_libadd) $(LTLIBICONV) libgphoto2-2.5.9/camlibs/topfield/crc16.h0000644000175000001440000000163712610415524015033 00000000000000/* $Id: crc16.h,v 1.2 2005/01/18 14:00:46 purbanec Exp $ */ /* Copyright (C) 2004 Peter Urbanec This file is part of puppy. puppy 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. puppy 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 puppy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include unsigned short crc16_ansi(const void *data, size_t size); libgphoto2-2.5.9/camlibs/topfield/crc16.c0000644000175000001440000000637312610415524015030 00000000000000 /* $Id: crc16.c,v 1.2 2005/01/18 14:00:46 purbanec Exp $ */ /* Copyright (C) 2004 Peter Urbanec This file is part of puppy. puppy 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. puppy 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 puppy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "crc16.h" static unsigned short crc_16_table[256] = { 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0500, 0xc5c1, 0xc481, 0x0440, 0xcc01, 0x0cc0, 0x0d80, 0xcd41, 0x0f00, 0xcfc1, 0xce81, 0x0e40, 0x0a00, 0xcac1, 0xcb81, 0x0b40, 0xc901, 0x09c0, 0x0880, 0xc841, 0xd801, 0x18c0, 0x1980, 0xd941, 0x1b00, 0xdbc1, 0xda81, 0x1a40, 0x1e00, 0xdec1, 0xdf81, 0x1f40, 0xdd01, 0x1dc0, 0x1c80, 0xdc41, 0x1400, 0xd4c1, 0xd581, 0x1540, 0xd701, 0x17c0, 0x1680, 0xd641, 0xd201, 0x12c0, 0x1380, 0xd341, 0x1100, 0xd1c1, 0xd081, 0x1040, 0xf001, 0x30c0, 0x3180, 0xf141, 0x3300, 0xf3c1, 0xf281, 0x3240, 0x3600, 0xf6c1, 0xf781, 0x3740, 0xf501, 0x35c0, 0x3480, 0xf441, 0x3c00, 0xfcc1, 0xfd81, 0x3d40, 0xff01, 0x3fc0, 0x3e80, 0xfe41, 0xfa01, 0x3ac0, 0x3b80, 0xfb41, 0x3900, 0xf9c1, 0xf881, 0x3840, 0x2800, 0xe8c1, 0xe981, 0x2940, 0xeb01, 0x2bc0, 0x2a80, 0xea41, 0xee01, 0x2ec0, 0x2f80, 0xef41, 0x2d00, 0xedc1, 0xec81, 0x2c40, 0xe401, 0x24c0, 0x2580, 0xe541, 0x2700, 0xe7c1, 0xe681, 0x2640, 0x2200, 0xe2c1, 0xe381, 0x2340, 0xe101, 0x21c0, 0x2080, 0xe041, 0xa001, 0x60c0, 0x6180, 0xa141, 0x6300, 0xa3c1, 0xa281, 0x6240, 0x6600, 0xa6c1, 0xa781, 0x6740, 0xa501, 0x65c0, 0x6480, 0xa441, 0x6c00, 0xacc1, 0xad81, 0x6d40, 0xaf01, 0x6fc0, 0x6e80, 0xae41, 0xaa01, 0x6ac0, 0x6b80, 0xab41, 0x6900, 0xa9c1, 0xa881, 0x6840, 0x7800, 0xb8c1, 0xb981, 0x7940, 0xbb01, 0x7bc0, 0x7a80, 0xba41, 0xbe01, 0x7ec0, 0x7f80, 0xbf41, 0x7d00, 0xbdc1, 0xbc81, 0x7c40, 0xb401, 0x74c0, 0x7580, 0xb541, 0x7700, 0xb7c1, 0xb681, 0x7640, 0x7200, 0xb2c1, 0xb381, 0x7340, 0xb101, 0x71c0, 0x7080, 0xb041, 0x5000, 0x90c1, 0x9181, 0x5140, 0x9301, 0x53c0, 0x5280, 0x9241, 0x9601, 0x56c0, 0x5780, 0x9741, 0x5500, 0x95c1, 0x9481, 0x5440, 0x9c01, 0x5cc0, 0x5d80, 0x9d41, 0x5f00, 0x9fc1, 0x9e81, 0x5e40, 0x5a00, 0x9ac1, 0x9b81, 0x5b40, 0x9901, 0x59c0, 0x5880, 0x9841, 0x8801, 0x48c0, 0x4980, 0x8941, 0x4b00, 0x8bc1, 0x8a81, 0x4a40, 0x4e00, 0x8ec1, 0x8f81, 0x4f40, 0x8d01, 0x4dc0, 0x4c80, 0x8c41, 0x4400, 0x84c1, 0x8581, 0x4540, 0x8701, 0x47c0, 0x4680, 0x8641, 0x8201, 0x42c0, 0x4380, 0x8341, 0x4100, 0x81c1, 0x8081, 0x4040 }; unsigned short crc16_ansi(const void *data, size_t size) { unsigned short crc = 0; const unsigned char *d = data; while(size--) { crc = crc_16_table[(crc ^ *d++) & 0xff] ^ (crc >> 8); } return crc; } libgphoto2-2.5.9/camlibs/topfield/mjd.c0000644000175000001440000000422212610415524014653 00000000000000/* Copyright (C) 2004 Peter Urbanec This file is part of puppy. puppy 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. puppy 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 puppy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* MJD conversions as per Annex C of ETSI EN 300 468 */ #include "mjd.h" #include "tf_bytes.h" /* Convert Topfield MJD date and time structure to time_t */ time_t tfdt_to_time(struct tf_datetime * dt) { int mjd = get_u16(&dt->mjd); int y, m, d, k; struct tm tm; time_t result; y = (int) ((mjd - 15078.2) / 365.25); m = (int) ((mjd - 14956.1 - ((int) (y * 365.25))) / 30.6001); d = mjd - 14956 - ((int) (y * 365.25)) - ((int) (m * 30.6001)); if((m == 14) || (m == 15)) { k = 1; } else { k = 0; } y += k; m = m - 1 - k * 12; tm.tm_sec = dt->second; tm.tm_min = dt->minute; tm.tm_hour = dt->hour; tm.tm_mday = d; tm.tm_mon = m - 1; tm.tm_year = y; tm.tm_wday = 0; tm.tm_yday = 0; tm.tm_isdst = -1; result = mktime(&tm); return result; } /* Convert itime_t to Topfield MJD date and time structure */ void time_to_tfdt(time_t t, struct tf_datetime *dt) { int y, m, d, k, mjd; struct tm *tm = localtime(&t); y = tm->tm_year; m = tm->tm_mon + 1; d = tm->tm_mday; if((m == 1) || (m == 2)) { k = 1; } else { k = 0; } mjd = 14956 + d + ((int) ((y - k) * 365.25)) + ((int) ((m + 1 + k * 12) * 30.6001)); put_u16(&dt->mjd, mjd); dt->hour = tm->tm_hour; dt->minute = tm->tm_min; dt->second = tm->tm_sec; } libgphoto2-2.5.9/camlibs/topfield/ChangeLog0000644000175000001440000000126612561423352015517 000000000000002008-06-22 Marcus Meissner * puppy.c: Make TURBO mode configurable. * puppy.c: Send READY request to make communication startup a bit more stable. 2008-05-18 Marcus Meissner * puppy.c: Implemented get_info_func. * puppy.c: Use TURBO mode during download. Escape "/" in filenames by "-". 2008-03-12 Marcus Meissner * puppy.c: Convert from ISO-8859-1 to current locale for filenames using iconv. Store mapped names internally, since the movies have 0x5 character in front. 2008-03-05 Marcus Meissner * *.[ch]: Ported puppy 1.11 by Peter Urbanek to libgphoto2. libgphoto2-2.5.9/camlibs/topfield/tf_bytes.c0000644000175000001440000000541112610415524015721 00000000000000/* Copyright (C) 2004 Peter Urbanec This file is part of puppy. puppy 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. puppy 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 puppy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include "tf_bytes.h" /* The Topfield packet handling is a bit unusual. All data is stored in * memory in big endian order, however, just prior to transmission all * data is byte swapped. * * We try to handle this in here in a some kind of a portable manner. * * We provide functions to read and write the memory version of packets * under the name get_X() and put_X(). * * The USB I/O layer then takes care of CRC generation and byte swapping. */ unsigned short get_u16(void *addr) { unsigned char *b = addr; return ((b[0] << 8) | (b[1] << 0)); } /* Retrieve a 16-bit integer from the raw buffer (prior to byteswapping) */ unsigned short get_u16_raw(void *addr) { unsigned char *b = addr; return ((b[1] << 8) | (b[0] << 0)); } void put_u16(void *addr, unsigned short val) { unsigned char *b = addr; b[0] = (val >> 8) & 0xFF; b[1] = (val & 0xFF); } unsigned int get_u32(void *addr) { unsigned char *b = addr; return (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | (b[3]); } /* Retrieve a 32-bit integer from the raw buffer (prior to byteswapping) */ unsigned int get_u32_raw(void *addr) { unsigned char *b = addr; return (b[1] << 24) | (b[0] << 16) | (b[3] << 8) | (b[2]); } void put_u32(void *addr, unsigned int val) { unsigned char *b = addr; b[0] = (val >> 24) & 0xFF; b[1] = (val >> 16) & 0xFF; b[2] = (val >> 8) & 0xFF; b[3] = (val & 0xFF); } uint64_t get_u64(void *addr) { unsigned char *b = addr; uint64_t r = b[0]; r = (r << 8) | b[1]; r = (r << 8) | b[2]; r = (r << 8) | b[3]; r = (r << 8) | b[4]; r = (r << 8) | b[5]; r = (r << 8) | b[6]; r = (r << 8) | b[7]; return r; } void put_u64(void *addr, uint64_t val) { unsigned char *b = addr; b[0] = (val >> 56) & 0xFF; b[1] = (val >> 48) & 0xFF; b[2] = (val >> 40) & 0xFF; b[3] = (val >> 32) & 0xFF; b[4] = (val >> 24) & 0xFF; b[5] = (val >> 16) & 0xFF; b[6] = (val >> 8) & 0xFF; b[7] = (val & 0xFF); } libgphoto2-2.5.9/camlibs/topfield/usb_io.h0000644000175000001440000000702712610415524015374 00000000000000 /* $Id: usb_io.h,v 1.14 2005/08/26 16:25:34 purbanec Exp $ */ /* Copyright (C) 2004 Peter Urbanec This file is part of puppy. puppy 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. puppy 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 puppy; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _USB_IO_H #define _USB_IO_H 1 #include #include #define BITS_PER_LONG sizeof(long)*8 #include "mjd.h" #include "tf_bytes.h" /* Topfield command codes */ #define FAIL (0x0001L) #define SUCCESS (0x0002L) #define CANCEL (0x0003L) #define CMD_READY (0x0100L) #define CMD_RESET (0x0101L) #define CMD_TURBO (0x0102L) #define CMD_HDD_SIZE (0x1000L) #define DATA_HDD_SIZE (0x1001L) #define CMD_HDD_DIR (0x1002L) #define DATA_HDD_DIR (0x1003L) #define DATA_HDD_DIR_END (0x1004L) #define CMD_HDD_DEL (0x1005L) #define CMD_HDD_RENAME (0x1006L) #define CMD_HDD_CREATE_DIR (0x1007L) #define CMD_HDD_FILE_SEND (0x1008L) #define DATA_HDD_FILE_START (0x1009L) #define DATA_HDD_FILE_DATA (0x100aL) #define DATA_HDD_FILE_END (0x100bL) /* Number of milliseconds to wait for a packet transfer to complete. */ /* This is intentionally large enough to allow for a HDD spin up. */ #define TF_PROTOCOL_TIMEOUT 11000 /* The maximum packet size used by the Toppy. */ #define MAXIMUM_PACKET_SIZE 0xFFFFL /* The size of every packet header. */ #define PACKET_HEAD_SIZE 8 /* Format of a Topfield protocol packet */ #pragma pack(1) struct tf_packet { uint16_t length; uint16_t crc; uint32_t cmd; uint8_t data[MAXIMUM_PACKET_SIZE - PACKET_HEAD_SIZE]; }; #pragma pack() /* Topfield file descriptor data structure. */ #pragma pack(1) struct typefile { struct tf_datetime stamp; uint8_t filetype; uint64_t size; uint8_t name[95]; uint8_t unused; uint32_t attrib; }; #pragma pack() ssize_t send_success(Camera *camera, GPContext *context); ssize_t send_cancel(Camera *camera, GPContext *context); ssize_t send_cmd_ready(Camera *camera, GPContext *context); ssize_t send_cmd_reset(Camera *camera, GPContext *context); ssize_t send_cmd_turbo(Camera *camera, int turbo_on, GPContext *context); ssize_t send_cmd_hdd_size(Camera *camera, GPContext *context); ssize_t send_cmd_hdd_dir(Camera *camera, char *path, GPContext *context); ssize_t send_cmd_hdd_file_send(Camera *camera, uint8_t dir, char *path, GPContext *context); ssize_t send_cmd_hdd_del(Camera *camera, char *path, GPContext *context); ssize_t send_cmd_hdd_rename(Camera *camera, char *src, char *dst, GPContext *context); ssize_t send_cmd_hdd_create_dir(Camera *camera, char *path, GPContext *context); ssize_t get_tf_packet(Camera *camera, struct tf_packet *packet, GPContext *context); ssize_t send_tf_packet(Camera *camera, struct tf_packet *packet, GPContext *context); #endif /* _USB_IO_H */ libgphoto2-2.5.9/camlibs/gsmart300/0000755000175000001440000000000012623156267013741 500000000000000libgphoto2-2.5.9/camlibs/gsmart300/library.c0000644000175000001440000002236512610415536015472 00000000000000/****************************************************************/ /* library.c - Gphoto2 library for the Mustek gSmart 300 */ /* */ /* Copyright (C) 2002 Jérôme Lodewyck */ /* */ /* Author: Jérôme Lodewyck */ /* */ /* based on code by: Till Adam */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #define _BSD_SOURCE #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "gsmart300.h" #define GP_MODULE "gsmart300" #define TIMEOUT 5000 /* forward declarations */ static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context); static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context); static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context); static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context); static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context); /* define what cameras we support */ static const struct { char *model; int usb_vendor; int usb_product; } models[] = { { "Mustek:gSmart 300", 0x055f, 0xc200} , { "Casio:LV 10", 0x055f, 0xc200} , { NULL, 0, 0} }; int camera_id (CameraText *id) { strcpy (id->text, "gsmart300"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { int x = 0; char *ptr; CameraAbilities a; ptr = models[x].model; while (ptr) { memset (&a, 0, sizeof (a)); strcpy (a.model, ptr); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB; a.speed[0] = 0; a.file_operations = GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_DELETE; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; a.usb_vendor = models[x].usb_vendor; a.usb_product = models[x].usb_product; gp_abilities_list_append (list, a); ptr = models[++x].model; } return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { if (camera->pl) { if (camera->pl->fats) { free (camera->pl->fats); camera->pl->fats = NULL; } if (camera->pl->files) { free (camera->pl->files); camera->pl->files = NULL; } free (camera->pl); camera->pl = NULL; } return (GP_OK); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { char tmp[1024]; if (camera->pl->dirty) CHECK (gsmart300_get_info (camera->pl)); snprintf (tmp, sizeof (tmp), "Files: %d\n\n", camera->pl->num_files); strcat (summary->text, tmp); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and " "the specifications kindly provided by Mustek.\n" "\n")); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func, .del_file_func = delete_file_func, .delete_all_func = delete_all_func }; int camera_init (Camera *camera, GPContext *context) { int ret; GPPortSettings settings; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->about = camera_about; CHECK (gp_port_get_settings (camera->port, &settings)); switch (camera->port->type) { case GP_PORT_USB: settings.usb.inep = 0x82; settings.usb.outep = 0x03; settings.usb.config = 1; settings.usb.interface = 0; settings.usb.altsetting = 0; CHECK (gp_port_set_settings (camera->port, settings)); CHECK (gp_port_set_timeout (camera->port, TIMEOUT)); break; default: gp_context_error (context, _("Unsupported port type: %d. " "This driver only works with USB " "cameras.\n"), camera->port->type); return (GP_ERROR); break; } camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); memset (camera->pl, 0, sizeof (CameraPrivateLibrary)); camera->pl->gpdev = camera->port; camera->pl->dirty = 1; ret = gsmart300_reset (camera->pl); if (ret < 0) { gp_context_error (context, _("Could not reset camera.\n")); free (camera->pl); camera->pl = NULL; return (ret); } /* Set up the CameraFilesystem */ return gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int i; char temp_file[14]; if (camera->pl->dirty) CHECK (gsmart300_get_info (camera->pl)); for (i = 0; i < camera->pl->num_files; i++) { strncpy (temp_file, camera->pl->files[i].name, 12); temp_file[12] = 0; gp_list_append (list, temp_file, NULL); } return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int number, filetype; CHECK (number = gp_filesystem_number (camera->fs, folder, filename, context)); switch (type) { case GP_FILE_TYPE_NORMAL: CHECK (gsmart300_request_file (camera->pl, file, number)); break; case GP_FILE_TYPE_PREVIEW: CHECK (gsmart300_request_thumbnail (camera->pl, file, number, &filetype)); if (filetype == GSMART_FILE_TYPE_IMAGE) { CHECK (gp_file_set_mime_type (file, GP_MIME_BMP)); } break; default: return GP_ERROR_NOT_SUPPORTED; } return GP_OK; } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int n; struct GsmartFile *file; /* Get the file number from the CameraFileSystem */ CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); CHECK (gsmart300_get_file_info (camera->pl, n, &file)); info->file.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT; if (file->mime_type == GSMART_FILE_TYPE_IMAGE) { strcpy (info->file.type, GP_MIME_JPEG); info->preview.width = 80; info->preview.height = 60; } info->file.width = file->width; info->file.height = file->height; info->preview.fields = GP_FILE_INFO_TYPE | GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT; strcpy (info->preview.type, GP_MIME_BMP); return (GP_OK); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int n, c; /* Get the file number from the CameraFileSystem */ CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); CHECK (c = gp_filesystem_count (camera->fs, folder, context)); if (n + 1 != c) { const char *name; gp_filesystem_name (fs, "/", c - 1, &name, context); gp_context_error (context, _("Your camera only supports deleting " "the last file on the camera. In this " "case, this is file '%s'."), name); return (GP_ERROR); } CHECK (gsmart300_delete_file (camera->pl, n)); return GP_OK; } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; CHECK (gsmart300_delete_all (camera->pl)); return GP_OK; } libgphoto2-2.5.9/camlibs/gsmart300/gsmart300.c0000644000175000001440000002564312610415536015550 00000000000000/****************************************************************/ /* gsmart300.c - Gphoto2 library for the Mustek gSmart 300 */ /* */ /* Copyright (C) 2002 Jérôme Lodewyck */ /* */ /* Author: Jérôme Lodewyck */ /* */ /* based on code by: Till Adam */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #define _BSD_SOURCE #include #include #include #include #include #include #include "gphoto2-endian.h" #include "gsmart300.h" #include "gsmart300-jpeg-header.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "gsmart300" static int gsmart300_download_data (CameraPrivateLibrary * lib, int data_type, uint16_t index, unsigned int size, uint8_t * buf); static int gsmart300_get_FATs (CameraPrivateLibrary * lib); static int yuv2rgb (int y, int u, int v, unsigned int *r, unsigned int *g, unsigned int *b); static int gsmart300_get_image_thumbnail (CameraPrivateLibrary * lib, CameraFile *file, struct GsmartFile *g_file); #define __GS300_FAT 0 #define __GS300_THUMB 1 #define __GS300_PIC 2 #define __GS300_INIT 3 static int gsmart300_get_file_count (CameraPrivateLibrary * lib) { uint8_t buf[0x100]; gsmart300_download_data (lib, __GS300_INIT, 0, 0x100, buf); lib->num_files = (buf[21] >> 4) * 10 + (buf[21] & 0xf) + 100 * ((buf[22] >> 4) * 10 + (buf[22] & 0xf)); return (GP_OK); } int gsmart300_delete_file (CameraPrivateLibrary * lib, unsigned int index) { struct GsmartFile *g_file; uint16_t fat_index; CHECK (gsmart300_get_file_info (lib, index, &g_file)); fat_index = 0x1FFF - index; CHECK (gp_port_usb_msg_write (lib->gpdev, 0x03, fat_index, 0x0003, NULL, 0)); sleep (1); /* Reread fats the next time it is accessed */ lib->dirty = 1; return GP_OK; } /* GSmart 300 specific */ int gsmart300_delete_all (CameraPrivateLibrary * lib) { CHECK (gp_port_usb_msg_write (lib->gpdev, 0x02, 0x0000, 0x0004, NULL, 0)); sleep (3); /* Reread fats the next time it is accessed */ lib->dirty = 1; return GP_OK; } int gsmart300_request_file (CameraPrivateLibrary * lib, CameraFile *file, unsigned int number) { struct GsmartFile *g_file; uint8_t *p, *lp_jpg, *start_of_file; uint8_t qIndex, value; uint8_t *mybuf; int i, ret; /* NOTE : these varialbes are slightly renamed */ int flash_size, data_size, file_size; CHECK (gsmart300_get_file_info (lib, number, &g_file)); p = g_file->fat; /* decode the image size */ flash_size = (p[6] * 0x100 + p[5])*0x200; data_size = (p[13] & 0xff) * 0x10000 + (p[12] & 0xff) * 0x100 + (p[11] & 0xff); qIndex = p[7] & 0x07; file_size = data_size + GSMART_JPG_DEFAULT_HEADER_LENGTH + 1024 * 10; /* slurp in the image */ mybuf = malloc (flash_size); if (!mybuf) return GP_ERROR_NO_MEMORY; ret = gsmart300_download_data (lib, __GS300_PIC, g_file->index, flash_size, mybuf); if (ret < GP_OK) { free (mybuf); return ret; } /* now build a jpeg */ lp_jpg = malloc (file_size); if (!lp_jpg) { free (mybuf); return GP_ERROR_NO_MEMORY; } start_of_file = lp_jpg; /* copy the header from the template */ memcpy (lp_jpg, Gsmart_300_JPGDefaultHeader, GSMART_JPG_DEFAULT_HEADER_LENGTH); /* modify quantization table */ memcpy (lp_jpg + 7, Gsmart_300_QTable[qIndex * 2], 64); memcpy (lp_jpg + 72, Gsmart_300_QTable[qIndex * 2 + 1], 64); /* modify the image width, height */ /* NOTE : the picture width and height written on flash is either * 640x480 or 320x240, but the real size id 640x480 for ALL pictures */ *(lp_jpg + 564) = (640) & 0xFF; /* Image width low byte */ *(lp_jpg + 563) = (640 >> 8) & 0xFF; /* Image width high byte */ *(lp_jpg + 562) = (480) & 0xFF; /* Image height low byte */ *(lp_jpg + 561) = (480 >> 8) & 0xFF; /* Image height high byte */ /* point to real JPG compress data start position and copy */ lp_jpg += GSMART_JPG_DEFAULT_HEADER_LENGTH; for (i = 0; i < data_size; i++) { value = *(mybuf + i) & 0xFF; *(lp_jpg) = value; lp_jpg++; if (value == 0xFF) { *(lp_jpg) = 0x00; lp_jpg++; } } /* Add end of image marker */ *(lp_jpg++) = 0xFF; *(lp_jpg++) = 0xD9; free (mybuf); gp_file_append (file, (char*)start_of_file, lp_jpg - start_of_file); free (start_of_file); return (GP_OK); } int gsmart300_request_thumbnail (CameraPrivateLibrary * lib, CameraFile *file, unsigned int number, int *type) { struct GsmartFile *g_file; CHECK (gsmart300_get_file_info (lib, number, &g_file)); *type = g_file->mime_type; return (gsmart300_get_image_thumbnail (lib, file, g_file)); } static int gsmart300_get_image_thumbnail (CameraPrivateLibrary * lib, CameraFile *file, struct GsmartFile *g_file) { unsigned int size; uint8_t *mybuf = NULL; uint8_t *tmp, *buf; unsigned int t_width, t_height; uint8_t *yuv_p, *rgb_p; uint32_t len; char pbm_header[14]; int ret; /* No thumbnail for 320x240 pictures */ if (g_file->width < 640) return (GP_ERROR_NOT_SUPPORTED); t_width = 80; t_height = 60; snprintf (pbm_header, sizeof (pbm_header), "P6 %d %d 255\n", t_width, t_height); /* size needed for download */ size = 9728; mybuf = malloc (size); if (!mybuf) return (GP_ERROR_NO_MEMORY); ret = gsmart300_download_data (lib, __GS300_THUMB, g_file->index, size, mybuf); if (ret < GP_OK) { free (mybuf); return ret; } /* effective size of file */ size = 9600; len = t_width * t_height * 3; buf = malloc (len); if (!buf) { free (mybuf); return (GP_ERROR_NO_MEMORY); } gp_file_append (file, pbm_header, strlen(pbm_header)); tmp = buf; yuv_p = mybuf; rgb_p = tmp; while (yuv_p < mybuf + size) { unsigned int u, v, y, y2; unsigned int r, g, b; y = yuv_p[0]; y2 = yuv_p[1]; u = yuv_p[2]; v = yuv_p[3]; CHECK (yuv2rgb (y, u, v, &r, &g, &b)); *rgb_p++ = r; *rgb_p++ = g; *rgb_p++ = b; CHECK (yuv2rgb (y2, u, v, &r, &g, &b)); *rgb_p++ = r; *rgb_p++ = g; *rgb_p++ = b; yuv_p += 4; } free (mybuf); gp_file_append (file, (char*)buf, len); free (buf); return (GP_OK); } int gsmart300_get_info (CameraPrivateLibrary * lib) { GP_DEBUG ("* gsmart300_get_info"); CHECK (gsmart300_get_file_count (lib)); if (lib->num_files > 0) { CHECK (gsmart300_get_FATs (lib)); } lib->dirty = 0; return GP_OK; } int gsmart300_get_file_info (CameraPrivateLibrary * lib, unsigned int index, struct GsmartFile **g_file) { if (lib->dirty) CHECK (gsmart300_get_info (lib)); *g_file = &(lib->files[index]); return GP_OK; } int gsmart300_reset (CameraPrivateLibrary * lib) { GP_DEBUG ("* gsmart300_reset"); CHECK (gp_port_usb_msg_write (lib->gpdev, 0x02, 0x0000, 0x0003, NULL, 0)); sleep (1.5); return GP_OK; } /* Download procedure for GSmart300 */ /* buf must be of length n*0x200 */ /* Pictured are pointed by there index which runs over 0 to npic -1*/ static int gsmart300_download_data (CameraPrivateLibrary * lib, int data_type, uint16_t index, unsigned int size, uint8_t * buf) { uint16_t fat_index = 0x1fff - index; int i; if (data_type == __GS300_FAT) CHECK (gp_port_usb_msg_write (lib->gpdev, 0x03, fat_index, 0x0000, NULL, 0)); if (data_type == __GS300_THUMB) CHECK (gp_port_usb_msg_write (lib->gpdev, 0x0a, fat_index, 0x0003, NULL, 0)); if (data_type == __GS300_PIC) CHECK (gp_port_usb_msg_write (lib->gpdev, 0x03, fat_index, 0x0008, NULL, 0)); if (data_type == __GS300_INIT ) { CHECK (gp_port_usb_msg_write (lib->gpdev, 0x02, 0x00, 0x0007, NULL, 0)); CHECK (gp_port_usb_msg_write (lib->gpdev, 0x0a, 0x00, 0x0001, NULL, 0)); } for (i = 0; i < size >> 8; i++) CHECK (gp_port_read (lib->gpdev, (char*)(buf + i*0x100), 0x100)); return GP_OK; } static int gsmart300_get_FATs (CameraPrivateLibrary * lib) { uint8_t type; unsigned int index = 0; unsigned int file_index = 0; uint8_t *p = NULL; char buf[14]; CHECK (gsmart300_get_file_count(lib)); if (lib->fats) free (lib->fats); lib->fats = malloc ((lib->num_files) * FLASH_PAGE_SIZE_300); if (lib->files) free (lib->files); lib->files = malloc (lib->num_files * sizeof (struct GsmartFile)); p = lib->fats; while (index < lib->num_files) { CHECK (gsmart300_download_data (lib, __GS300_FAT, index, FLASH_PAGE_SIZE_300, p)); if (p[0] == 0xFF) break; type = p[0]; if (type == 0x00) { snprintf (buf, 13, "Image%03d.jpg", index + 1); lib->files[file_index].mime_type = GSMART_FILE_TYPE_IMAGE; lib->files[file_index].index = index; lib->files[file_index].fat = p; lib->files[file_index].width = (p[8] & 0xFF) * 16; lib->files[file_index].height = (p[9] & 0xFF) * 16; lib->files[file_index].name = strdup (buf); file_index++; } p += FLASH_PAGE_SIZE_300; index++; } return GP_OK; } static int yuv2rgb (int y, int u, int v, unsigned int *_r, unsigned int *_g, unsigned int *_b) { double r, g, b; r = (char) y + 128 + 1.402 * (char) v; g = (char) y + 128 - 0.34414 * (char) u - 0.71414 * (char) v; b = (char) y + 128 + 1.772 * (char) u; if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255; if (r < 0) r = 0; if (g < 0) g = 0; if (b < 0) b = 0; *_r = r; *_g = g; *_b = b; return GP_OK; } libgphoto2-2.5.9/camlibs/gsmart300/gsmart300-jpeg-header.h0000644000175000001440000001463512561423351017724 00000000000000#ifndef __GSMART_300_JPEG_HEADER_H #define __GSMART_300_JPEG_HEADER_H /* * Start from 0 -> 588 * 7 - 70 : Quantization Table[0] * 72 - 135 : Quantization Table[1] * 561 - 562 : Image Height(H Byte,L Byte) * 563 - 564 : Image Width(H Byte,L Byte) */ #define GSMART_JPG_DEFAULT_HEADER_LENGTH 589 static uint8_t Gsmart_300_JPGDefaultHeader[GSMART_JPG_DEFAULT_HEADER_LENGTH] = { /* SOI(Start of Image) */ 0xFF,0xD8, /* DQT(Define Quantization Table) */ 0xFF,0xDB, 0x00,0x84, 0x00, 0x05,0x03,0x04,0x04,0x04,0x03,0x05,0x04,0x04,0x04,0x06,0x05,0x05,0x06,0x08,0x0D, 0x08,0x08,0x07,0x07,0x08,0x10,0x0C,0x0C,0x0A,0x0D,0x14,0x11,0x15,0x14,0x13,0x11, 0x13,0x13,0x16,0x18,0x1F,0x1A,0x16,0x17,0x1E,0x17,0x13,0x13,0x1B,0x25,0x1C,0x1E, 0x20,0x21,0x23,0x23,0x23,0x15,0x1A,0x27,0x29,0x26,0x22,0x29,0x1F,0x22,0x23,0X22, 0X01, 0x05,0x06,0x06,0x08,0x07,0x08,0x10,0x08,0x08,0x10,0x22,0x16,0x13,0x16,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, /* DHT(Define Huffman Table) */ 0xFF,0xC4, 0x01,0xA2, 0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x01,0x00,0x03, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x10,0x00,0x02,0x01,0x03,0x03, 0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7D,0x01,0x02,0x03,0x00,0x04, 0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81, 0x91,0xA1,0x08,0x23,0x42,0xB1,0xC1,0x15,0x52,0xD1,0xF0,0x24,0x33,0x62,0x72,0x82, 0x09,0x0A,0x16,0x17,0x18,0x19,0x1A,0x25,0x26,0x27,0x28,0x29,0x2A,0x34,0x35,0x36, 0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56, 0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76, 0x77,0x78,0x79,0x7A,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95, 0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3, 0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA, 0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7, 0xE8,0xE9,0xEA,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0x11,0x00,0x02, 0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,0x02,0x77,0x00,0x01, 0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22, 0x32,0x81,0x08,0x14,0x42,0x91,0xA1,0xB1,0xC1,0x09,0x23,0x33,0x52,0xF0,0x15,0x62, 0x72,0xD1,0x0A,0x16,0x24,0x34,0xE1,0x25,0xF1,0x17,0x18,0x19,0x1A,0x26,0x27,0x28, 0x29,0x2A,0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A, 0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A, 0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89, 0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7, 0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,0xC5, 0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE2,0xE3, 0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA, /* SOFn(Start of Frame) */ 0xFF,0xC0, 0x00,0x11, 0x08,0x00,0x78,0x00,0xA0,0x03,0x01,0x21,0x00,0x02,0x11,0x01,0x03,0x11,0x01, /* SOS(Start of Scan) */ 0xFF,0xDA, 0x00,0x0C, 0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3F,0x00 }; /* Quantization tables for GSmart300 */ static uint8_t Gsmart_300_QTable[10][64]= { /* index 0, Q85 */ { 5, 3, 4, 4, 4, 3, 5, 4, 4, 4, 5, 5, 5, 6, 7, 12, 8, 7, 7, 7, 7, 15, 11, 11, 9, 12, 17, 15, 18, 18, 17, 15, 17, 17, 19, 22, 28, 23, 19, 20, 26, 21, 17, 17, 24, 33, 24, 26, 29, 29, 31, 31, 31, 19, 23, 34, 36, 34, 30, 36, 28, 30, 31, 30 }, { 5, 5, 5, 7, 6, 7, 14, 8, 8, 14, 30, 20, 17, 20, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 }, /* index 1, Q85 */ { 5, 3, 4, 4, 4, 3, 5, 4, 4, 4, 5, 5, 5, 6, 7, 12, 8, 7, 7, 7, 7, 15, 11, 11, 9, 12, 17, 15, 18, 18, 17, 15, 17, 17, 19, 22, 28, 23, 19, 20, 26, 21, 17, 17, 24, 33, 24, 26, 29, 29, 31, 31, 31, 19, 23, 34, 36, 34, 30, 36, 28, 30, 31, 30 }, { 5, 5, 5, 7, 6, 7, 14, 8, 8, 14, 30, 20, 17, 20, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 }, /* index 2, Q80 */ { 6, 4, 5, 6, 5, 4, 6, 6, 5, 6, 7, 7, 6, 8, 10, 16, 10, 10, 9, 9, 10, 20, 14, 15, 12, 16, 23, 20, 24, 24, 23, 20, 22, 22, 26, 29, 37, 31, 26, 27, 35, 28, 22, 22, 32, 44, 32, 35, 38, 39, 41, 42, 41, 25, 31, 45, 48, 45, 40, 48, 37, 40, 41, 40 }, { 7, 7, 7, 10, 8, 10, 19, 10, 10, 19, 40, 26, 22, 26, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 }, /* index 3, Q25 */ { 32, 22, 24, 28, 24, 20, 32, 28, 26, 28, 36, 34, 32, 38, 48, 80, 52, 48, 44, 44, 48, 98, 70, 74, 58, 80,116,102,122,120,114,102, 112,110,128,144,184,156,128,136,174,138,110,112,160,218,162,174, 190,196,206,208,206,124,154,226,242,224,200,240,184,202,206,198 }, { 34, 36, 36, 48, 42, 48, 94, 52, 52, 94,198,132,112,132,198,198, 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198, 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198, 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198 }, /* index 4, Q70 */ { 10, 7, 7, 8, 7, 6, 10, 8, 8, 8, 11, 10, 10, 11, 14, 24, 16, 14, 13, 13, 14, 29, 21, 22, 17, 24, 35, 31, 37, 36, 34, 31, 34, 33, 38, 43, 55, 47, 38, 41, 52, 41, 33, 34, 48, 65, 49, 52, 57, 59, 62, 62, 62, 37, 46, 68, 73, 67, 60, 72, 55, 61, 62, 59 }, { 10, 11, 11, 14, 13, 14, 28, 16, 16, 28, 59, 40, 34, 40, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59 }, }; #endif /* __GSMART_300_JPEG_HEADER_H */ libgphoto2-2.5.9/camlibs/gsmart300/README.gsmart3000000644000175000001440000000250412610415536016252 00000000000000GSMART 300 DRIVER FOR GPHOTO2 ============================= Note : this camera is also know as "Casio LV-10", under the same vendor and product IDs (Model actually tested) This is a very basic camera which enables to take pictures, delete last picture or delete all pictures. Pictures (JPEG format) can be stored in two sizes : 640x480 or 320x240. In fact, this is not exactly true. The pictures are all 640x480, but the "smaller" ones are just poor quality, so that it becomes decent only after resizing to 320x240. Thumbnails are downloadable from the camera in YYUV format for "big" pictures ONLY. To perform these operations, the Windows driver uses an interpolation software which acts as this : For lower quality, 640x480 pictures are downloaded, and converted to 320x240. In the same way, 80x60 thumbnails are generated. For higher quality, 80x60 thumbnails are downloaded in YYUV and converted to bitmap. Strangely enough, 640x480 picture are also converted into pictures of the same size by the interpolation software, resulting in a disk-size about 2 times greater ! (but no visible loss of quality) The gsmart300 driver for gphoto just outputs the higher quality pictures as they are stored in the camera, as well as bitmap thumbnails. Lower quality pictures are left 640x480, and no thumbnail is provided. Jérôme Lodewyck libgphoto2-2.5.9/camlibs/gsmart300/Makefile-files0000644000175000001440000000062412561423351016413 00000000000000EXTRA_DIST += gsmart300/README.gsmart300 gsmart300/ChangeLog camlibdoc_DATA += gsmart300/README.gsmart300 EXTRA_LTLIBRARIES += gsmart300.la gsmart300_la_SOURCES = \ gsmart300/gsmart300.c gsmart300/gsmart300.h \ gsmart300/library.c \ gsmart300/gsmart300-jpeg-header.h gsmart300_la_LDFLAGS = $(camlib_ldflags) gsmart300_la_DEPENDENCIES = $(camlib_dependencies) gsmart300_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/gsmart300/ChangeLog0000644000175000001440000000031612561423351015423 000000000000002007-12-10 Marcus Meissner * *.[ch]: use gp_file_append(), removed some signedness warnings. Sam Jan 18 11:28:57 2003 Till Adam * initial import libgphoto2-2.5.9/camlibs/gsmart300/gsmart300.h0000644000175000001440000000535212610415536015550 00000000000000/****************************************************************/ /* gsmart300.h - Gphoto2 library for the Mustek gSmart 300 */ /* */ /* Copyright (C) 2002 Jérôme Lodewyck */ /* */ /* Author: Jérôme Lodewyck */ /* */ /* based on code by: Till Adam */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #ifndef __GSMART300_H__ #define __GSMART300_H__ #include <_stdint.h> #include #define FLASH_PAGE_SIZE_300 0x200 #define GSMART_FILE_TYPE_IMAGE 0x00 #define CHECK(result) {int res; res = result; if (res < 0) return (res);} struct GsmartFile { char *name; int width; int height; int index; uint8_t *fat; int mime_type; }; struct _CameraPrivateLibrary { GPPort *gpdev; int dirty; int num_files; uint8_t *fats; struct GsmartFile *files; }; int gsmart300_reset (CameraPrivateLibrary * lib); int gsmart300_get_info (CameraPrivateLibrary * lib); int gsmart300_delete_file (CameraPrivateLibrary * lib, unsigned int index); int gsmart300_delete_all (CameraPrivateLibrary * lib); int gsmart300_get_file_info (CameraPrivateLibrary * lib, unsigned int index, struct GsmartFile **file); int gsmart300_request_file (CameraPrivateLibrary * lib, CameraFile *file, unsigned int number); int gsmart300_request_thumbnail (CameraPrivateLibrary * lib, CameraFile *file, unsigned int number, int *type); #endif /* __GSMART300_H__ */ libgphoto2-2.5.9/camlibs/digigr8/0000755000175000001440000000000012623156267013556 500000000000000libgphoto2-2.5.9/camlibs/digigr8/README.90520000644000175000001440000000276412561423351014755 00000000000000/* This is one of the README files for libgphoto2/camlibs/digigr8. This is an * integral part of the libgphoto2/camlibs/digigr8 library source code and is * distributed with that source code under the LGPL license. a copy of which * license may be seen in the head directory of libgphoto2, in the file * COPYING. * This file copyright Theodore Kilgore, 05/10/2009. */ CONCERNING 0x2770:0x9052 CAMERAS First, a general remark. The reader is strongly encouraged to read README.905C as well as this file. That file in fact pertains to all of the cameras which are supported by libgphoto2/camlibs/digigr8. All of what it says pertains to the 0x2770:0x9052 cameras, too, unless something to the contrary is stated below. The only camera known to use the ID 0x2770:0x9052 a Disney Pix Micro camera. It seems to be a VGA version of the smaller camera with the same name, which reports itself as 0x2770:0x9050. The new camera has the resolution settings 640x480 and 320x240. Both cameras permit deletion of all photos. The same operations are used for that as for the capture of an image to the computer (that is, the gphoto2 --capture-preview operation). The user is therefore advised that the --capture-preview operation will also clear the camera's memory and remove all images stored there. The camera also has kernel support for webcam mode. To run the camera as a webcam will also delete all still photos stored in the camera. For further details please consult the file README.9050. Revised 01/12/2012libgphoto2-2.5.9/camlibs/digigr8/digi_postprocess.c0000644000175000001440000003250012610415536017213 00000000000000/* * postprocess.c * * Here are the decompression function for the compressed photos and the * postprocessing for uncompressed photos. * * Copyright (c) 2005 and 2007 Theodore Kilgore * Camera library support under libgphoto2.1.1 for camera(s) * with chipset from Service & Quality Technologies, Taiwan. * The chip supported by this driver is presumed to be the SQ905, * * Licensed under GNU Lesser General Public License, as part of Gphoto * camera support project. For a copy of the license, see the file * COPYING in the main source tree of libgphoto2. */ #include #include #include #include #include #include #include #ifdef OS2 #include #endif #include #include #include #include "digigr8.h" #define GP_MODULE "digigr8" #ifndef MAX # define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif static int digi_first_decompress (unsigned char *output, unsigned char *input, unsigned int outputsize) { unsigned char parity = 0; unsigned char nibble_to_keep[2]; unsigned char temp1 = 0, temp2 = 0; unsigned char input_byte; unsigned char lookup = 0; unsigned int i = 0; unsigned int bytes_used = 0; unsigned int bytes_done = 0; unsigned int bit_counter = 8; unsigned int cycles = 0; int table[9] = { -1, 0, 2, 6, 0x0e, 0x0e, 0x0e, 0x0e, 0xfb}; unsigned char lookup_table[16] ={0, 2, 6, 0x0e, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb}; unsigned char translator[16] = {8, 7, 9, 6, 10, 11, 12, 13, 14, 15, 5, 4, 3, 2, 1, 0}; GP_DEBUG ("Running first_decompress.\n"); nibble_to_keep[0] = 0; nibble_to_keep[1] = 0; while (bytes_done < outputsize) { while (parity < 2 ) { while ( lookup > table[cycles]) { if (bit_counter == 8) { input_byte = input[bytes_used]; bytes_used ++; temp1 = input_byte; bit_counter = 0; } input_byte = temp1; temp2 = (temp2 << 1) & 0xFF; input_byte = input_byte >> 7; temp2 = temp2 | input_byte; temp1 = (temp1 <<1) & 0xFF; bit_counter ++ ; cycles ++ ; if (cycles > 8) { GP_DEBUG ("Too many cycles?\n"); return GP_ERROR; } lookup = temp2 & 0xff; } temp2 = 0; for (i=0; i < 17; i++ ) { if (i == 16) { GP_DEBUG( "Illegal lookup value during decomp\n"); return GP_ERROR; } if (lookup == lookup_table[i] ) { nibble_to_keep[parity] = translator[i]; break; } } cycles = 0; parity ++ ; } output[bytes_done] = (nibble_to_keep[0] << 4) | nibble_to_keep[1]; bytes_done++; parity = 0; } GP_DEBUG ("bytes_used = 0x%x = %i\n", bytes_used, bytes_used); return GP_OK; } static int digi_second_decompress (unsigned char *uncomp, unsigned char *in, int width, int height) { int diff = 0; int tempval = 0; int i, m; unsigned char delta_left = 0; unsigned char delta_right = 0; int input_counter = 0; int delta_table[] = {-144, -110, -77, -53, -35, -21, -11, -3, 2, 10, 20, 34, 52, 76, 110, 144}; unsigned char *templine_red; unsigned char *templine_green; unsigned char *templine_blue; templine_red = malloc(width); if (!templine_red) { return GP_ERROR_NO_MEMORY; } for(i=0; i < width; i++) templine_red[i] = 0x80; templine_green = malloc(width); if (!templine_green) { free (templine_red); return GP_ERROR_NO_MEMORY; } for(i=0; i < width; i++) templine_green[i] = 0x80; templine_blue = malloc(width); if (!templine_blue) { free (templine_red); free (templine_green); return GP_ERROR_NO_MEMORY; } for(i=0; i < width; i++) templine_blue[i] = 0x80; GP_DEBUG ("Running second_decompress.\n"); for (m = 0; m < height / 2; m++) { /* First we do an even-numbered line */ for (i = 0; i < width / 2; i++) { delta_right = in[input_counter] & 0x0f; delta_left = (in[input_counter] >> 4) & 0xff; input_counter++; /* left pixel (red) */ diff = delta_table[delta_left]; if (!i) tempval = templine_red[0] + diff; else tempval = (templine_red[i] + uncomp[2 *m * width + 2 * i - 2]) / 2 + diff; tempval = MIN(tempval, 0xff); tempval = MAX(tempval, 0); uncomp[2 * m * width + 2 * i] = tempval; templine_red[i] = tempval; /* right pixel (green) */ diff = delta_table[delta_right]; if (!i) tempval = templine_green[1] + diff; else if (2 * i == width - 2 ) tempval = (templine_green[i] + uncomp[2 * m * width + 2 * i -1]) / 2 + diff; else tempval = (templine_green[i + 1] + uncomp[2 * m * width + 2 * i - 1]) / 2 + diff; tempval = MIN(tempval, 0xff); tempval = MAX(tempval, 0); uncomp[2 * m * width + 2 * i + 1] = tempval; templine_green[i] = tempval; } /* then an odd-numbered line */ for (i = 0; i < width / 2; i++) { delta_right = in[input_counter] &0x0f; delta_left = (in[input_counter] >> 4) & 0xff; input_counter++; /* left pixel (green) */ diff = delta_table[delta_left]; if (!i) tempval = templine_green[0] + diff; else tempval = (templine_green[i] + uncomp[(2 * m + 1) * width + 2 * i - 2]) / 2 + diff; tempval = MIN(tempval, 0xff); tempval = MAX(tempval, 0); uncomp[(2 * m + 1) * width + 2 * i] = tempval; templine_green[i] = tempval; /* right pixel (blue) */ diff = delta_table[delta_right]; if (!i) tempval = templine_blue[0] + diff; else tempval = (templine_blue[i] + uncomp[(2 * m + 1) * width + 2 * i - 1]) / 2 + diff; tempval = MIN(tempval, 0xff); tempval = MAX(tempval, 0); uncomp[(2 * m + 1) * width + 2 * i + 1] = tempval; templine_blue[i] = tempval; } } free(templine_green); free(templine_red); free(templine_blue); return GP_OK; } int digi_decompress (unsigned char *out_data, unsigned char *data, int w, int h) { int size; unsigned char *temp_data; size = w * h / 2; temp_data = malloc(size); if (!temp_data) return GP_ERROR_NO_MEMORY; digi_first_decompress (temp_data, data, size); GP_DEBUG("Stage one done\n"); digi_second_decompress (out_data, temp_data, w, h); GP_DEBUG("Stage two done\n"); free(temp_data); return(GP_OK); } /* Brightness correction routine adapted from * camlibs/polaroid/jd350e.c, copyright © 2001 Michael Trawny * */ #define RED(p,x,y,w) *((p)+3*((y)*(w)+(x)) ) #define GREEN(p,x,y,w) *((p)+3*((y)*(w)+(x))+1) #define BLUE(p,x,y,w) *((p)+3*((y)*(w)+(x))+2) #define MINMAX(a,min,max) { (min)=MIN(min,a); (max)=MAX(max,a); } #ifndef MAX # define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif #ifndef CLAMP #define CLAMP(x) ((x)<0?0:((x)>255)?255:(x)) #endif int digi_postprocess(int width, int height, unsigned char* rgb) { int x,y, red_min=255, red_max=0, blue_min=255, blue_max=0, green_min=255, green_max=0; double min, max, amplify; /* determine min and max per color... */ for( y=0; y 1.2) gamma = 1.2; GP_DEBUG("Gamma correction = %1.2f\n", gamma); gp_gamma_fill_table(gtable, gamma); gp_gamma_correct_single(gtable,data,size); if (saturation < .5 ) /* If so, exit now. */ return GP_OK; /* ---------------- BRIGHT DOTS ------------------- */ max = size / 200; histogram(data, size, htable_r, htable_g, htable_b); for (r = 0xfe, x = 0; (r > 32) && (x < max); r--) x += htable_r[r]; for (g = 0xfe, x = 0; (g > 32) && (x < max); g--) x += htable_g[g]; for (b = 0xfe, x = 0; (b > 32) && (x < max); b--) x += htable_b[b]; r_factor = (double) 0xfd / r; g_factor = (double) 0xfd / g; b_factor = (double) 0xfd / b; max_factor = r_factor; if (g_factor > max_factor) max_factor = g_factor; if (b_factor > max_factor) max_factor = b_factor; if (max_factor >= 4.0) { /* We need a little bit of control, here. If max_factor > 4 the photo * was very dark, after all. */ if (2.0 * b_factor < max_factor) b_factor = max_factor / 2.; if (2.0 * r_factor < max_factor) r_factor = max_factor / 2.; if (2.0 * g_factor < max_factor) g_factor = max_factor / 2.; r_factor = (r_factor / max_factor) * 4.0; g_factor = (g_factor / max_factor) * 4.0; b_factor = (b_factor / max_factor) * 4.0; } if (max_factor > 1.5) saturation = 0; GP_DEBUG("White balance (bright): r=%1d, g=%1d, b=%1d, \ r_factor=%1.3f, g_factor=%1.3f, b_factor=%1.3f\n", r, g, b, r_factor, g_factor, b_factor); if (max_factor <= 1.4) { for (x = 0; x < (size * 3); x += 3) { d = (data[x + 0] << 8) * r_factor + 8; d >>= 8; if (d > 0xff) d = 0xff; data[x + 0] = d; d = (data[x + 1] << 8) * g_factor + 8; d >>= 8; if (d > 0xff) { d = 0xff; } data[x + 1] = d; d = (data[x + 2] << 8) * b_factor + 8; d >>= 8; if (d > 0xff) d = 0xff; data[x + 2] = d; } } /* ---------------- DARK DOTS ------------------- */ max = size / 200; /* 1/200 = 0.5% */ histogram(data, size, htable_r, htable_g, htable_b); for (r = 0, x = 0; r < 96 && x < max; r++) x += htable_r[r]; for (g = 0, x = 0; g < 96 && x < max; g++) x += htable_g[g]; for (b = 0, x = 0; b < 96 && x < max; b++) x += htable_b[b]; r_factor = (double) 0xfe / (0xff - r); g_factor = (double) 0xfe / (0xff - g); b_factor = (double) 0xfe / (0xff - b); GP_DEBUG( "White balance (dark): r=%1d, g=%1d, b=%1d, \ r_factor=%1.3f, g_factor=%1.3f, b_factor=%1.3f\n", r, g, b, r_factor, g_factor, b_factor); for (x = 0; x < (size * 3); x += 3) { d = (int) 0xff08 - (((0xff - data[x + 0]) << 8) * r_factor); d >>= 8; if (d < 0) d = 0; data[x + 0] = d; d = (int) 0xff08 - (((0xff - data[x + 1]) << 8) * g_factor); d >>= 8; if (d < 0) d = 0; data[x + 1] = d; d = (int) 0xff08 - (((0xff - data[x + 2]) << 8) * b_factor); d >>= 8; if (d < 0) d = 0; data[x+2] = d; } /* ------------------ COLOR ENHANCE ------------------ */ if(saturation > 0.0) { for (x = 0; x < (size * 3); x += 3) { r = data[x+0]; g = data[x+1]; b = data[x+2]; d = (int) (r + g + b) / 3.; if ( r > d ) r = r + (int) ((r - d) * (0xff - r) /(0x100 - d) * saturation); else r = r + (int) ((r - d) * (0xff - d) / (0x100 - r) * saturation); if (g > d) g = g + (int) ((g - d) * (0xff - g) / (0x100 - d) * saturation); else g = g + (int) ((g - d) * (0xff - d) / (0x100 - g) * saturation); if (b > d) b = b + (int) ((b - d) * (0xff - b) /(0x100 - d) * saturation); else b = b + (int) ((b - d) * (0xff - d) /(0x100 - b) * saturation); data[x+0] = CLAMP(r); data[x+1] = CLAMP(g); data[x+2] = CLAMP(b); } } return GP_OK; } libgphoto2-2.5.9/camlibs/digigr8/library.c0000644000175000001440000003177212610415524015306 00000000000000/* library.c for libgphoto2/camlibs/digigr8 * * Copyright (C) 2005 - 2010 Theodore Kilgore * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "digigr8.h" #include #define GP_MODULE "digigr8" static const struct { char *name; CameraDriverStatus status; unsigned short idVendor; unsigned short idProduct; } models[] = { {"Digigr8", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"Cobra Digital Camera DC150", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"Che-Ez Snap SNAP-U", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"DC-N130t", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905C}, {"Soundstar TDC-35", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"Nexxtech Mini Digital Camera", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"Vivitar Vivicam35", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"Praktica Slimpix", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"ZINA Mini Digital Keychain Camera", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"Pixie Princess Jelly-Soft", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"Sakar Micro Digital 2428x", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"Stop & Shop 87096", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"Jazz JDC9", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"Aries Digital Keychain Camera, ITEM 128986", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x905c}, {"Disney pix micro", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9050}, {"Lego Bionicle", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9051}, {"Barbie Camera (Digital Blue)", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9051}, /* from IRC reporter, adam@piggz.co.uk */ {"Disney pix micro 2", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x9052}, {"Suprema Digital Keychain Camera", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x913d}, {"Sakar 28290 and 28292 Digital Concepts Styleshot", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x913d}, {"Sakar 23070 Crayola Digital Camera", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x913d}, {"Sakar 92045 Spiderman", GP_DRIVER_STATUS_EXPERIMENTAL, 0x2770, 0x913d}, {NULL,0,0,0} }; int camera_id(CameraText *id) { strncpy (id->text, "SQ905C chipset camera",32); return GP_OK; } int camera_abilities(CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].name; i++) { memset (&a, 0, sizeof(a)); strncpy (a.model, models[i].name,32); a.status = models[i].status; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product= models[i].idProduct; if (a.status == GP_DRIVER_STATUS_EXPERIMENTAL) a.operations = GP_OPERATION_NONE; else a.operations = GP_OPERATION_CAPTURE_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; a.file_operations = GP_FILE_OPERATION_PREVIEW + GP_FILE_OPERATION_RAW; gp_abilities_list_append (list, a); } return GP_OK; } static int camera_summary(Camera *camera, CameraText *summary, GPContext *context) { if (!camera->pl->init_done) digi_init (camera->port, camera->pl); snprintf (summary->text, 100, ("Your USB camera seems to have an SQ905C chipset.\n" "The total number of pictures in it is %i\n"), camera->pl->nb_entries); return GP_OK; } static int camera_manual(Camera *camera, CameraText *manual, GPContext *context) { strncpy(manual->text, _( "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" ), 700); return (GP_OK); } static int camera_about(Camera *camera, CameraText *about, GPContext *context) { strncpy (about->text, _("sq905C generic driver\n" "Theodore Kilgore \n"),64); return GP_OK; } /*************** File and Downloading Functions *******************/ static int file_list_func(CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int n; if(!camera->pl->init_done) digi_init (camera->port, camera->pl); GP_DEBUG ("List files in %s\n", folder); n = camera->pl->nb_entries; gp_list_populate(list, "pict%03i.ppm", n); return GP_OK; } static int get_file_func(CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { int status = GP_OK; Camera *camera = user_data; int w, h, b; int k, next; unsigned char comp_ratio; unsigned char lighting; unsigned char *data = NULL; unsigned char *p_data = NULL; unsigned char *ppm; unsigned char *ptr; unsigned char gtable[256]; int size; if (!camera->pl->init_done) digi_init (camera->port, camera->pl); /* Get the entry number of the photo on the camera */ k = gp_filesystem_number (camera->fs, "/", filename, context); if (GP_FILE_TYPE_EXIF ==type) return GP_ERROR_FILE_EXISTS; if (GP_FILE_TYPE_RAW!=type && GP_FILE_TYPE_NORMAL != type && GP_FILE_TYPE_PREVIEW != type) { return GP_ERROR_NOT_SUPPORTED; } next = camera->pl->last_fetched_entry +1; while (next < k) { b = digi_get_data_size (camera->pl, next); data = malloc(b); if(!data) return GP_ERROR_NO_MEMORY; digi_read_picture_data (camera->port, data, b, next); free(data); next ++; } comp_ratio = digi_get_comp_ratio (camera->pl, k); w = digi_get_picture_width (camera->pl, k); switch (w) { case 176: h = 144; break; case 640: h = 480; break; case 320: h = 240; break; default: h = 288; break; } lighting = camera->pl->catalog[k*0x10+0x0b]; b = digi_get_data_size (camera->pl, k); if (!b) { GP_DEBUG("Photo number %i deleted?\n",k+1); camera->pl->last_fetched_entry = k; return GP_OK; } data = malloc (w*h); if(!data) return GP_ERROR_NO_MEMORY; GP_DEBUG("Fetch entry %i\n", k); digi_read_picture_data (camera->port, data, b, k); camera->pl->last_fetched_entry = k; if (GP_FILE_TYPE_RAW == type) { /* type is GP_FILE_TYPE_RAW */ size = b; gp_file_set_mime_type (file, GP_MIME_RAW); gp_file_append(file, (char *)data, size); /* Save photo's catalog entry as a footer for the raw file */ gp_file_append(file, (char *)camera->pl->catalog + k * 0x10, 0x10); /* Reset camera when done, for more graceful exit. */ if (k +1 == camera->pl->nb_entries) { digi_rewind (camera->port, camera->pl); } free(data); return(GP_OK); } /* * Now put the data into a PPM image file. */ ppm = malloc (w * h * 3 + 256); /* room for data + header */ if (!ppm) { status = GP_ERROR_NO_MEMORY; goto end; } snprintf ((char *)ppm, 64, "P6\n" "# CREATOR: gphoto2, SQ905C library\n" "%d %d\n" "255\n", w, h); size = strlen ((char *)ppm); ptr = ppm + size; size = size + (w * h * 3); GP_DEBUG ("size = %i\n", size); p_data = malloc(w * h); if (!p_data) { status = GP_ERROR_NO_MEMORY; goto end; } if(comp_ratio) { digi_decompress (p_data, data, w, h); } else memcpy(p_data, data, w * h); gp_ahd_decode(p_data, w , h , ptr, BAYER_TILE_BGGR); free(p_data); digi_postprocess(w, h, ptr); if (lighting < 0x40) { GP_DEBUG( "Low light condition. Using default gamma. \ No white balance.\n"); gp_gamma_fill_table (gtable, .65); gp_gamma_correct_single(gtable,ptr,w*h); } else white_balance (ptr, w*h, 1.1); gp_file_set_mime_type (file, GP_MIME_PPM); gp_file_set_data_and_size (file, (char *)ppm, size); /* Reset camera when done, for more graceful exit. */ if (k + 1 == camera->pl->nb_entries) { digi_rewind (camera->port, camera->pl); } end: free(data); return status; } static int delete_all_func(CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; if (!camera->pl->delete_all) return GP_ERROR_NOT_SUPPORTED; if (!camera->pl->init_done) digi_init(camera->port, camera->pl); digi_delete_all(camera->port, camera->pl); return GP_OK; } static int camera_capture_preview(Camera *camera, CameraFile *file, GPContext *context) { unsigned char get_size[0x50]; unsigned char *raw_data; unsigned char *frame_data; unsigned char *ppm, *ptr; char lighting; unsigned char gtable[256]; int size; int w = 320; int h = 240; int b; digi_reset (camera->port); gp_port_usb_msg_write (camera->port, 0x0c, 0x1440, 0x110f, NULL, 0); gp_port_read(camera->port, (char *)get_size, 0x50); GP_DEBUG("get_size[0x40] = 0x%x\n", get_size[0x40]); lighting = get_size[0x48]; b = get_size[0x40] | get_size[0x41] << 8 | get_size[0x42] << 16 | get_size[0x43]<<24; GP_DEBUG("b = 0x%x\n", b); raw_data = malloc(b); if(!raw_data) return GP_ERROR_NO_MEMORY; if (!((gp_port_read(camera->port, (char *)raw_data, b)==b))) { free(raw_data); GP_DEBUG("Error in reading data\n"); return GP_ERROR; } frame_data = malloc(w * h); if (!frame_data) { free(raw_data); return GP_ERROR_NO_MEMORY; } digi_decompress (frame_data, raw_data, w, h); free(raw_data); /* Now put the data into a PPM image file. */ ppm = malloc (w * h * 3 + 256); if (!ppm) { free(frame_data); return GP_ERROR_NO_MEMORY; } snprintf ((char *)ppm, 64, "P6\n" "# CREATOR: gphoto2, SQ905C library\n" "%d %d\n" "255\n", w, h); ptr = ppm + strlen ((char*)ppm); size = strlen ((char*)ppm) + (w * h * 3); GP_DEBUG ("size = %i\n", size); gp_ahd_decode (frame_data, w , h , ptr, BAYER_TILE_BGGR); free(frame_data); if (lighting < 0x40) { GP_DEBUG( "Low light condition. Default gamma. No white balance.\n"); gp_gamma_fill_table (gtable, .65); gp_gamma_correct_single(gtable,ptr,w*h); } else white_balance(ptr, w * h, 1.1); gp_file_set_mime_type(file, GP_MIME_PPM); gp_file_set_data_and_size(file, (char *)ppm, size); digi_reset(camera->port); return(GP_OK); } /*************** Exit and Initialization Functions ******************/ static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG("SQ camera_exit"); digi_reset(camera->port); if (camera->pl) { free (camera->pl->catalog); free (camera->pl); camera->pl = NULL; } return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .delete_all_func = delete_all_func }; int camera_init(Camera *camera, GPContext *context) { GPPortSettings settings; CameraAbilities abilities; int ret = 0; ret = gp_camera_get_abilities(camera,&abilities); if (ret < 0) return ret; GP_DEBUG("product number is 0x%x\n", abilities.usb_product); /* Now, set up all the function pointers */ camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; camera->functions->capture_preview = camera_capture_preview; camera->functions->exit = camera_exit; GP_DEBUG ("Initializing the camera\n"); ret = gp_port_get_settings(camera->port,&settings); if (ret < 0) return ret; ret = gp_port_set_settings(camera->port,settings); if (ret < 0) return ret; /* Tell the CameraFilesystem where to get lists from */ gp_filesystem_set_funcs(camera->fs, &fsfuncs, camera); camera->pl = malloc(sizeof (CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; camera->pl->catalog = NULL; camera->pl->nb_entries = 0; switch (abilities.usb_product) { case 0x9050: case 0x9051: case 0x9052: camera->pl->delete_all = 1; break; default: camera->pl->delete_all = 0; } camera->pl->init_done=0; /* Do digi_init() only if needed for the requested operation. */ return GP_OK; } libgphoto2-2.5.9/camlibs/digigr8/README.90510000644000175000001440000001171512561423351014750 00000000000000/* This is one of the README files for libgphoto2/camlibs/digigr8. This is an * integral part of the libgphoto2/camlibs/digigr8 library source code and is * distributed with that source code under the LGPL license. a copy of which * license may be seen in the head directory of libgphoto2, in the file * COPYING. * This file copyright Theodore Kilgore, 12/17/2010. */ CONCERNING 0x2770:0x9051 CAMERAS: First, a general remark. The reader is strongly encouraged to read. README.905C as well as this file. That file in fact pertains to all of the. cameras which are supported by libgphoto2/camlibs/digigr8. All of what it says pertains to the 0x2770:0x9051 cameras, too, unless something to the contrary is stated below. As of 12/17/2010, the only known camera with USB ID string 0x2770:0x9051 is the "Lego Bionicle," apparently produced by Digital Blue for Lego. Its functionality is very basic. On the package it says the camera is able to take 40 photos, but in fact the number of photos is variable. For, they are all compressed. On 01/12/2012 the Digital Blue Barbie Camera, has been discovered, too. Except for the name and the camera case, it seems identical to the Lego Bionicle. Since the compression algorithm is the same as that in the 0x905C cameras, this camera is quite usable, for what it is. Resolution for this camera in still mode appears to be nonadjustable and fixed at 640x480. The camera has two buttons on it. one on the top and one on the rear. The button on top is the shutter button, of course. The button on the rear is often called the "mode" button on other cameras, and it will do such things as to switch the resolution mode, the compression mode, the continuous shooting mode, and such. But that is on other cameras. Here, that button is a "delete" button and will perform no other function -- well, none except to turn the camera on if it is in power-off mode and the user is adventurous. To start the camera in stillcam mode, first look at the indicator window on the back. If it is blank, the camera is off. Press the shutter button. It can also work to press the "Delete" button quickly and let go. But holding the "Delete" button down will start the deletion of photos. To delete the last photo, press the "Delete" button and watch the LCD indicator window on the rear of the camera. The number of photos shown there will decrease by one. To delete all, hold the button down longer. The photos will be deleted then, one by one, starting with the last one. The LCD window will show the decreasing number of photos while the button is being held. To the best of my ability to determine, the camera has no clip option, no delayed-shooting option, and no multi-frame clips intended for AVI images. As a still camera it will do still photos only, and those will be of dimensions 640x480. This camera also supports the option "gphoto2 --capture-preview" which means that the camera shoots an image which is immediately downloaded, not being stored on the camera at all. If gphoto2 --capture-preview is done, then the resulting frame comes out of the camera at 320x240 resolution. This resolution setting is in fact adjustable. Those who are curious may consult /linux(recent version)/drivers/media/video/gspca/sq905c.c where resolution-choosing is completely supported. That file supports the "webcam" functionality of all the cameras which are supported in still mode in libgphoto2/camlibs/digigr8. That is, these cameras work as webcams, too. The resolution settings which are supported in webcam mode are 640x480, and 320x240. WARNING: The --capture-preview option *will* delete all photos on the camera. The option gphoto2 -D is therefore supported, too. However, the user should note that the USB command to delete is the same as the USB command to shoot a frame (gphoto2 option is --capture-preview). Again. If you shoot a frame with the Lego Bionicle, it will delete whatever photos are on the camera !!! WARNING: Use of the camera as a webcam will delete all photos on the camera, too !!! WARRANTY? Absolutely not. No warranty. Never. Not responsible for any actual or potential damage or consequences to anyone or to the equipment of anyone for using this program, whether the alleged damage or alleged consequences are claimed to be real, imaginary, direct, collateral, for pain and suffering, or are claimed to be inflicted upon any "third party" who is not the user or installer of the program. The program has been written for my pleasure and to broaden and deepen my knowledge of computer hardware and software. The program has not been written with the immediate expectation of financial gain or profit on my part, nor has it been commissioned for pay. It is presumed that any end-user of this program will have access to the source code of the program and can judge for himself or herself whether he/she wishes to use it or not, or can consult someone with appropriate expertise to make such a judgment. Theodore Kilgore 12/17/2010, revised 01/12/2012. libgphoto2-2.5.9/camlibs/digigr8/README.913D0000644000175000001440000000674212561423351014776 00000000000000/* This is a second README file for libgphoto2/camlibs/digigr8. This README is * an integral part of the libgphoto2/camlibs/digigr8 library source code and * is distributed with that source code under the LGPL license. a copy of which * license may be seen in the head directory of libgphoto2, in the file * COPYING. * Copyright by Theodore Kilgore, 08/24/07. */ On 08/23/2007, I discovered a new camera with USB ID 0x2770:0x913d. The basic functions of this camera are the same as those of the 0x2770:0x905c cameras which are the main ones supported in libgphoto2/camlibs/digigr8, but there are some small differences. For a complete description and discussion of the 0x2770:0x913D camera, therefore, the reader should also read README.905C. Only the basic features and the differences with the previously-supported 0x2770:0x905C cameras are listed here: Features of the Suprema Digital Keychain Camera: -- 640x480 and 320x240 resolution settings -- supports gphoto2 --capture-preview option (presumed that the size of the output image can be adjusted in code, default ` 320x240; see README.905C for details of that. -- apparently does _not_ support multiframe AVI capability, or if so it is not mentioned in the written manual. -- a setting does exist for shooting three frames with one shutter press, but three only, not more. -- has a viewfinder and preview window on the back, which is very pretty but presumably eats battery. -- saves photos in volatile SDRAM, so don't let the batteries die. -- permits deletion of individual photos on the camera, by pushing some buttons. This feature is not present on the SQ905C cameras and is a big difference. Because of the way this deletion is done, the function which counts photos needed a serious rewrite to accommodate the deletion. It will probably not ever be possible, unfortunately, to support deletion of any photos or images on the camera, by means of software control from the computer. -- webcam functionality. The webcam function is supported by the kernel. This camera library in libgphoto2 supports stillcam functionality. As a further note, the gphoto2 --capture-image USB command when used with an 0x2770:0x913D camera will _not_ delete the images already on the camera. This means one does not have to worry about that happening; it also means that there is no way known to implement the gphoto2 -D option for these cameras. On 10/13/07 I discovered that the Sakar Styleshot (Sakar ID no. 28290 or 28292) is also supported, and I have added it to the list of cameras in library.c. Aside from appearance, the main difference between the Styleshot and the Suprema described above is that the Styleshot has an internal rechargeable battery. On 12/23/07 the Sakar Spiderman (no. 92045) has been reported by Martin Laberge . THERE IS POTENTIAL NAME CONFUSION WITH THIS CAMERA. The Sakar Amazing Spiderman (no. 94044) has in it a JL2005C chip which is currently not supported in libgphoto2. Buyer beware! (Update 01/12/2012: Support for all JL2005C cameras has been added to libgphoto2. The buyer need not "beware" any longer. However, it seems to remain true that SQ cameras take better than average pictures, relative to their low price range.) WARRANTY: None. For a more complete discussion of this issue, the reader is referred to README.905C and to the statements of the LGPL license regarding warranty. Theodore Kilgore, 08/24/2007, revised 12/23/2007, 01/21/2008, 01/22/2008, 01/12/2012libgphoto2-2.5.9/camlibs/digigr8/Makefile-files0000644000175000001440000000122612561423351016227 00000000000000EXTRA_DIST += digigr8/README.905C EXTRA_DIST += digigr8/README.9050 EXTRA_DIST += digigr8/README.9051 EXTRA_DIST += digigr8/README.9052 EXTRA_DIST += digigr8/README.913D EXTRA_DIST += digigr8/ChangeLog camlibdoc_DATA += digigr8/README.905C camlibdoc_DATA += digigr8/README.9050 camlibdoc_DATA += digigr8/README.9051 camlibdoc_DATA += digigr8/README.9052 camlibdoc_DATA += digigr8/README.913D EXTRA_LTLIBRARIES += digigr8.la digigr8_la_SOURCES = \ digigr8/library.c \ digigr8/digigr8.c digigr8/digigr8.h \ digigr8/digi_postprocess.c digigr8_la_LDFLAGS = $(camlib_ldflags) digigr8_la_DEPENDENCIES = $(camlib_dependencies) digigr8_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/digigr8/digigr8.h0000644000175000001440000000335712561423351015204 00000000000000/* * digigr8.h * * Header file for libgphoto2/camlibs/digigr8. * * Copyright (c) 2005 Theodore Kilgore * Camera library support under libgphoto2.1.1 for camera(s) * with chipset from Service & Quality Technologies, Taiwan. * Cameras supported by this driver have Product ID 0x905C, 0x9050, or * 0x913D. * * Licensed under GNU Lesser General Public License, as part of Gphoto * camera support project. For a copy of the license, see the file * COPYING in the main source tree of libgphoto2. */ #ifndef __DIGIGR8_H__ #define __DIGIGR8_H__ #include struct _CameraPrivateLibrary { unsigned char *catalog; int nb_entries; int last_fetched_entry; int delete_all; unsigned char init_done; }; int digi_reset (GPPort *); int digi_init (GPPort *, CameraPrivateLibrary *); int digi_rewind (GPPort *port, CameraPrivateLibrary *priv); int digi_read_picture_data (GPPort *, unsigned char *data, int size, int n); /* Those functions don't need data transfer with the camera */ int digi_get_num_frames (CameraPrivateLibrary *, int entry); int digi_get_comp_ratio (CameraPrivateLibrary *, int entry); int digi_get_data_size (CameraPrivateLibrary *, int entry); int digi_get_picture_width (CameraPrivateLibrary *, int entry); int digi_is_clip (CameraPrivateLibrary *, int entry); int digi_decompress (unsigned char *out_data, unsigned char *data, int w, int h); int digi_postprocess (int width, int height, unsigned char* rgb); int digi_delete_all (GPPort *, CameraPrivateLibrary *priv); int white_balance (unsigned char *data, unsigned int size, float saturation); #endif libgphoto2-2.5.9/camlibs/digigr8/digigr8.c0000644000175000001440000001244512610415524015173 00000000000000/* * digigr8.c * * Part of libgphoto2/camlibs/digigr8 * Here are the functions which are needed to get data from the camera. * * Copyright (c) 2005 Theodore Kilgore * Camera library support under libgphoto2.1.1 for camera(s) * with chipset from Service & Quality Technologies, Taiwan. * Cameras supported by this driver have Product ID 0x905C, 0x9050, or. * 0x913D. * * Licensed under GNU Lesser General Public License, as part of Gphoto * camera support project. For a copy of the license, see the file * COPYING in the main source tree of libgphoto2. */ #include #include #include #include #include #include #include #ifdef OS2 #include #endif #include #include #include "digigr8.h" #define GP_MODULE "digigr8" #define SQWRITE gp_port_usb_msg_write #define SQREAD gp_port_usb_msg_read int digi_init (GPPort *port, CameraPrivateLibrary *priv) { char c[0x14]; int i,j=0; unsigned char *catalog = calloc(0x4010,1); unsigned char *catalog_tmp; if (!catalog) return GP_ERROR_NO_MEMORY; SQWRITE (port, 0x0c, 0x14f4, 0x0, NULL, 0); SQREAD (port, 0x0c, 0xf5, 0x00, c, 0x14); SQWRITE (port, 0x0c, 0x1440, 0x110f, NULL, 0); digi_reset (port); SQWRITE (port, 0x0c, 0x14f0, 0x0, NULL, 0); gp_port_read (port, c, 0x14); digi_reset(port); SQWRITE (port, 0x0c, 0x20, 0x40, NULL, 0); gp_port_read(port, (char *)catalog, 0x4000); /* We need 16 bytes for each photo. */ digi_reset (port); /* The first occurence of a zero denotes end of files entries */ for (i=0; i<0x4000 && catalog[i]; i+=16); priv->nb_entries = i>>4; catalog_tmp = realloc(catalog, i+16); memset (catalog_tmp+i, 0, 16); if (i) { /* * 0x913c cameras allow individual photo deletion. This causes * the relevant catalog line to start with 0x64. So the related * lines of config data must be removed, and the deleted * images need to be cast out from the count. */ for (j=0; jnb_entries -- ; } } if (catalog_tmp) priv->catalog = catalog_tmp; else priv->catalog = catalog; } else { free (catalog); priv->catalog = NULL; /* We just have freed catalog_tmp */ } digi_reset (port); priv->last_fetched_entry = -1; priv->init_done=1; return GP_OK; } int digi_get_comp_ratio (CameraPrivateLibrary *priv, int entry) { switch (priv->catalog[16*entry]) { case 0x61: case 0x62: case 0x63: case 0x76: return 1; case 0x41: case 0x42: case 0x43: case 0x52: case 0x53: case 0x56: case 0x72: return 0; default: GP_DEBUG ("Your camera has unknown resolution settings.\n"); return GP_ERROR; } } int digi_get_data_size (CameraPrivateLibrary *priv, int entry) { return ((priv->catalog[16*entry + 6] <<16) | (priv->catalog[16*entry + 5] <<8) | (priv->catalog[16*entry + 4] ) ); } int digi_get_picture_width (CameraPrivateLibrary *priv, int entry) { switch (priv->catalog[16*entry]) { case 0x41: case 0x52: case 0x61: return 352; case 0x42: case 0x62: case 0x72: return 176; case 0x43: case 0x53: case 0x63: return 320; case 0x56: case 0x76: return 640; default: GP_DEBUG ("Your pictures have unknown width.\n"); return 0; } } int digi_rewind (GPPort *port, CameraPrivateLibrary *priv) { static char dummy_buf[0x4000]; GP_DEBUG("REWIND cam's data pointer"); /* One has to read the catalog to rewind the data stream... * I don't know if it's by design. There ought to be something better to do... :-/ */ digi_reset(port); SQWRITE (port, 0x0c, 0x20, 0x40, NULL, 0); /* Access config */ gp_port_read(port, dummy_buf, 0x4000); digi_reset (port); priv->last_fetched_entry = -1; return GP_OK; } int digi_reset (GPPort *port) { /* Release current register */ SQWRITE (port, 0x0c, 0xa0, 0x00, NULL, 0); return GP_OK; } int digi_read_picture_data (GPPort *port, unsigned char *data, int size, int n ) { int remainder = size % 0x8000; int offset = 0; if (!n) { SQWRITE (port, 0x0c, 0x30, 0x00, NULL, 0); } while ((offset + 0x8000 < size)) { gp_port_read (port, (char *)data + offset, 0x8000); offset = offset + 0x8000; } gp_port_read (port, (char *)data + offset, remainder); return GP_OK; } int digi_delete_all (GPPort *port, CameraPrivateLibrary *priv) { int size; int num_pics; unsigned char get_size[0x50]; unsigned char *junk=NULL; num_pics = priv->nb_entries; GP_DEBUG("number of entries is %i\n", num_pics); digi_reset (port); digi_reset (port); if(!num_pics) { GP_DEBUG("Camera is already empty!\n"); return GP_OK; } SQWRITE (port, 0x0c, 0x1440, 0x110f, NULL, 0); if ((gp_port_read(port, (char *)get_size, 0x50)!=0x50)) { GP_DEBUG("Error in reading data\n"); return GP_ERROR; } GP_DEBUG("get_size[0x40] = 0x%x\n", get_size[0x40]); size = get_size[0x40]|(get_size[0x41]<<8)|(get_size[0x42]<<16)| (get_size[0x43]<<24); GP_DEBUG("size = 0x%x\n", size); if(size <= 0xff) { GP_DEBUG("No size to read. This will not work.\n"); digi_reset(port); return GP_OK; } junk = malloc(size); if(! junk) { GP_DEBUG("allocation of junk space failed\n"); return GP_ERROR_NO_MEMORY; } gp_port_read(port, (char *)junk, size); free(junk); digi_reset (port); return GP_OK; } libgphoto2-2.5.9/camlibs/digigr8/ChangeLog0000644000175000001440000001503312561423351015242 000000000000002012-01-12 Theodore Kilgore * library.c: Digital Blue Barbie Camera DC150 added. * README.*: Revisions. 2011-06-20 Theodore Kilgore * library.c: Cobra Digital Camera DC150 added. 2010-12-17 Theodore Kilgore * library.c: Aries Digital Keychain Camera, ITEM 128986 added. 2010-12-17 Theodore Kilgore * library.c: Lego Bionicle added. New Product number 0x9051. * README.9051: Added. 2010-05-16 Theodore Kilgore * library.c: Stop & Shop, camera, UPC product code 87096, added. Reported by Adam Rubin, Adam 2010-03-16 Theodore Kilgore * library.c: attempt to name output file abandoned in camera_capture_preview() 2010-03-12 Theodore Kilgore * digi_postprocess.c: improvements in digi_first_decompress() 2009-05-16 Theodore Kilgore * library.c: camera_manual() updated to mention new disney pix micro. 2009-05-10 Theodore Kilgore * library.c: The disney pix micro reported by Adam Piggs also reported by Roman Kononov . delete_all_func() support added for this camera. delete_all_func() must also check if camera is initialized. Credit comment removed, information moved here. Credits go in the ChangeLog file, not in the middle of the code. * digigr8.c: improvements to digi_delete_all() * README.9052: Added, to describe the new camera. * digi_postprocess.c: indentation fixes. 2008-11-22 Marcus Meissner * library.c: Added another version of the disney pix micro, reported by Adam Piggs 2008-05-11 Theodore Kilgore * README.913D: References to nonexistent README.digigr8 corrected. 2008-04-22 Theodore Kilgore * digi_postprocess.c: white_balance() added * library.c: gp_ahd_interpolate() used instead of gp_bayer_interpolate() white_balance() hooked up. 2008-01-23 Theodore Kilgore * library.c: camera_capture_preview() revised to be in line with recent revisions of gphoto2. Also digi_init() is now not called unless needed, because camera_capture_preview() does not need it. Functions which need it now check init_done and ask for digi_init() if init_done is still 0. * digigr8.c: init_done parameter is set now to 1 in digi_init(). * digigr8.h: init_done parameter added to CameraPrivateLibrary. 2008-01-22 Theodore Kilgore * digi_postprocess.c: Fixed memory leak in second-stage decompression function. * README.*: Refers to the raw file converter, added today in gphoto/trunk/playground/raw_converters/sq_raw_converter 2008-01-21 Theodore Kilgore * library.c: Raw files now carry a 16 byte footer consisting of the allocation table's line for the corresponding photo. This is done to facilitate development of a standalone raw processor; information is now saved in the raw file concerning the compression and resolution settings, as well as certain information which may become useful for doing color balance, brightness, and contrast adjustments. * README.digigr8: Renamed README.905C. * README.9050: Split from README.digigr8. 2007-12-27 Theodore Kilgore * library.c: Added Jazz JDC9, reported by Victor Hodge . 2007-12-23 Theodore Kilgore * library.c: Added Sakar no. 92045 Spiderman, reported by Martin Laberge . 2007-10-16 Theodore Kilgore * library.c: Several cameras from Sakar added to list. 2007-09-04 Theodore Kilgore * library.c: ZINA Mini Digital Keychain Camera, reported by Alvin Austin 2007-08-24 Theodore Kilgore * library.c: Suprema Digital Keychain Camera added, which has new product ID 0x913D, and is able to delete individual photos. * digigr8.c: changes required here, too, to support individual photo deletion. 2007-07-23 Theodore Kilgore * README.digigr8: Notes on how to change the capture-preview resolution setting added. 2007-07-16 Theodore Kilgore * library.c: "Disney pix micro" camera supports "delete all." Also, digigr8 cameras will do capture_preview. These two functions added. 0x9050 cameras need to be distinguished from 0x905C cameras. * digigr8.c: camera functions to support deletion and capture. * digigr8.h: necessary changes. 2007-07-12 Theodore Kilgore * library.c: "Disney pix micro" camera, 0x2770:0x9050, works with this driver. Added it. 2007-06-25 Theodore Kilgore * digi_postprocess.c: removal of superfluous variables. * digigr8.c: signedness warnings fixed * library.c: ditto 2007-03-28 Theodore Kilgore * digi_postprocess.c: small improvements to decompression algorithm. * library.c: small improvements to decompression algorithm. 2007-03-28 Theodore Kilgore * digi_postprocess.c: a decompression algorithm is installed. * digigr8.c: small changes to accommodate decompression * library.c: small changes in get_file_func() to accommodate use of decompression. * digigr8.h: new functions added for stage 1 and stage 2 decompression * README.digigr8: updated to describe new functionality 2006-12-13 Theodore Kilgore * digigr8.c: removed superfluous function digi_read_data().. 2006-06-22 Marcus Meissner * library.c: Added Praktica Slimpix, reported by Gervase Markham. See: http://sourceforge.net/mailarchive/message.php?msg_id=20703116 2006-03-26 Theodore Kilgore * library.c: Added Vivitar Vivicam35, reported by self. 2005-12-31 Hubert Figuiere * library.c: Added Nexxtech Mini Digital Camera reported by Ken Kennedy 2005-12-29 Theodore Kilgore * digigr8.c: GP_MODULE "didigr8" -> GP_MODULE "digigr8" 2005-12-29 Theodore Kilgore * library.c: Added DC-N130t, reported by Thierry Leconte * README: Some updates. 2005-12-22 Theodore Kilgore * library.c: Added two cameras. Soundstar TDC-35 reported by Patrice Mandin Che-Ez Snap SNAP-U reported by Lou 2005-12-05 Theodore Kilgore First check-in. libgphoto2-2.5.9/camlibs/digigr8/README.905C0000644000175000001440000003533312610415510014765 00000000000000/* This is the README file for libgphoto2/camlibs/digigr8. This README is an * integral part of the libgphoto2/camlibs/digigr8 library source code and is * distributed with that source code under the LGPL license, a copy of which * license may be seen in the head directory of libgphoto2, in the file * COPYING. * Original of this file copyright Theodore Kilgore, 12/05/05. */ INTRODUCTION: The cameras supported here have a controller chip from S&Q Technologies. They have USB Vendor:Product number 0x2770:0x905c. These cameras are cheap and basic. Their functioning resembles that of the cameras supported by the sq905 camera library, but is a bit different. More recently (07/11/2007) I have discovered a camera with Product ID 0x9050 which will also function with the same driver library. A more specific description of this camera can be found in README.9050. Still more recently, several cameras with USB ID 0x2770:0x913D also came onto the market. These cameras also can be made to function with the same code base, in spite of some differences. They are more specifically described in README.913D. The first camera which I knew of with USB ID 0x2770:0x905C was the Digigr8 from RadioShack. Hence comes the name of this camera library. Several more cameras have since been reported, including one which has the same make/model painted on the plastic case as that of a camera which previously used an sq905 chip and used the sq905 Vendor:Product number instead of this one. SQ Technologies seems to have discontinued the SQ905 and the SQ905C is apparently its successor. For information about additional cameras with the same USB ID, I am totally dependent on reports from users and testers. If you have another 0x2770:0x905c camera and want it to work and it currently does not, then I will be very glad to hear from you. Saying this a different way: further progress with your camera will depend upon your input. If on the other hand your camera does work and is not explicitly listed, I would still like to know about it for the sake of completeness. I will give it an explicit line listing in library.c and I will credit you as the finder of the camera, in the ChangeLog file. WHAT CHIP IS ACTUALLY IN THESE CAMERAS? I do not know. I did not take one apart to look inside. (update) Someone has reported to me that he did take his camera apart, and it really is an SQ905C chip inside. WHAT FEATURES DO THESE CAMERAS HAVE, AND WHAT DOES THIS DRIVER SUPPORT? FEATURE LIST SUPPORTED (Y/N/Part) -- USB connection to computer Y -- High resolution 640x480, uncompressed Y -- Low resolution 320x240, uncompressed Y -- High resolution 640x480, compressed Y -- Low resolution 320x240, compressed Y -- Ability to "switch" resolution between pictures Y -- Ability to download all pictures on camera Y -- Ability to download the first k pictures, where k is less than the number on the camera Y -- Ability to download individual photos Y (faked, but works) -- Shoot a frame and save image to computer Y -- Internal battery, which recharges through the USB port (some models) ------------------------------------------------------------------------- The following things can be done with button-pushes on the camera: ------------------------------------------------------------------------- -- Frequency filter for use in artificial light. Can be set to cancel 60hz or 50hz interference. -- Delete all, delete last, resolution setting, compression mode setting. -- "Clip" mode will shoot three frames. The camera "sees" these frames as ordinary photos. Also the photo counter on the LED counts them. -- "AVI" mode shoots until the shutter button is released, or until the camera is full. The photo counter on the camera does NOT count the AVI frames as separate items, but thinks all of the frames are part of one photo. Otherwise, the camera in fact sees the frames as ordinary photos, so gphoto2 will give the actual count of all frames, no matter whether photos or part of an AVI clip. Accordingly, gphoto2 will download the AVI frames as if they were ordinary photos and will sequentially number the frames in the course of numbering the photos which come out of the camera. The user can easily create a movie from the AVI frames, using an animation program, such as the "animate" command from the ImageMagick package. The default resolution for AVI frames is always 320x240 regardless of the resolution setting chosen for still photos. AVI mode will use compression if it otherwise happens to be turned on. Notes: The 0x2770:0x9050 and 0x2770:913D cameras differ from the above description in some particulars. Please see the respective README files for details. Almost all known cameras supported by the camlibs/digigr8 have a 640x480 high-resolution setting and a 320x240 low-resolution setting. If your 0x2770:0x905c camera uses another resolution setting, then it might still work. There is some similarity with the sq905 cameras, and I kept that part of the code here. Specifically, if the camera has 352x288 and 176x144 resolution settings, these might work but are not tested (Note added July 2007: the code for 352x288 _does_ continue to work; see below). If your camera does not work due to unknown resolution settings, then the new resolution settings need to be listed in digigr8.c in digi_get_picture_width (). Please report any such problem. I will ask you to run a gphoto2 command in debug mode and we can easily find the information we need -- which information, understand, I do not possess unless you share it with me. The pictures obtained on the uncompressed settings can often be superior to those obtained using the software which came with the camera, but not always. Generally, considering that they are cheap, low resolution cameras, these cameras give relatively good pictures. The digigr8 cameras can also function as webcams. That is supported in the kernel but is outside the scope of gphoto2. HARDWARE LIMITATIONS AND CONSTRAINTS The SQ905C chip, like the SQ905 before it, is a minimalist controller chip; if any of its functionality at all were removed, it would probably be impossible to use it to run a digital camera. To program around the limitations of the chip, therefore, is a special challenge. Here are some examples. 1. The manufacturer's driver will do nothing but to download all photos on the camera, and display them, keeping temporary copies in C:\TEMP, to be deleted when the camera access program is closed. After downloading everything, then, the OEM program allows the user to "select" and to "save" any or all of the photos which have, in fact, already been downloaded (indeed the displayed "thumbnails" came from the files in C:\TEMP, too). Now, gphoto2 does not operate thus, has preconceived notions about how any respectable camera should act, and regards such a primitive camera controller chip as an untamed beast. Thus, many of the gphoto2 functions will not work unless, through a bit of fakery which involves downloading data and throwing it away and on some occasions resetting the camera, this primitive behavior is somewhat improved. That all has to be done in the driver, with fakery invisible to the user. These remarks apply not only to getting thumbnails, but also to many other gphoto2 options as well. See item 2. 2. The camera's data storage provides only sequential access, not random access. In other words, it acts as though it were a tape drive instead of a disk. Worse, it's like a tape drive with no fast forward and no rewind controls. The constraints which this places are obvious. It means for example that to download all the photos on the camera to display thumbnails requires the camera to be reset afterwards, because that is the only way to do the "rewind" required before any of the photos can be accessed again. It also menas that "gphoto2 -p 2" would NOT download the second photo on the camera, unless the support for it is so written as to download the first photo, then the second photo, and to process only the second one, having consigned the data from the first photo to /dev/null. The camera simply cannot do better. The gphoto2 -p 2 command option does work, of course, but only because the necessary jury-rigging has been built into the download function. 3. Considering the way the communication protocols of these cameras seem to work, it would seem nearly impossible to copy any data to the camera for storage and transport. The camera clearly does not have files on it, only data addresses. And the camera does not keep time. For similar reasons, it would also seem impossible to delete a photo from the camera by action of software on the computer. The camera itself supports two choices for deletion: delete the last photo taken, or delete all. Each action is performed by an appropriate sequence of button pushes on the camera. WARNING about battery use: In addition to all of the above limitations, the cameras use SDRAM for data storage. Consequently, the batteries will be drained if one leaves them in the camera when it is not being used. WHAT GUI FRONTENDS DOES THIS CAMERA LIBRARY SUPPORT? Gtkam seems to work well for me with this library, and also flphoto. Some of the other various frontends do not seem to work quite so well for me. But one of them may work nicely for you, and you are hereby encouraged to try whichever one is your favorite. If you want to use either gtkam or digikam, you are encouraged to read the camera's manual (in gtkam, right-click on the name of the camera in the left panel, after starting the program and having chosen the correct camera). NOTES 1. The program is set up to put out pictures in PPM or raw format. The OEM program offers JPEGs. If the user desires JPEG output, then that can easily be done on Linux, using other software which exists independently from libgphoto2. 2. As of 01/20/2008, all raw files downloaded from these cameras will have a "footer" of length 16 bytes. This footer consists of the line from the camera's allocation table, which gives some information about the photo. The information includes a code for the resolution and compression setting and some information which may be useful in the future relating to color and lighting. Unfortunately, the meaning of the color and lighting information is not well enough understood to be useful at this time, but it may be useful in the future, so why not preserve the information? 3. The gamma setting (actually seems to be one over gamma) used for the construction of PPM image files has been obtained by trial and error. It seems to work very well for outdoor pictures, but the setting is a compromise between what happens with outdoor photos and what happens with indoor photos. Conceivably, the program could support a choice between two or more gamma settings, optimizing for different conditions. 4. A still-experimental postprocessing routine is added, to provide some sharpening and color correction for different lighting conditions. The routine can easily be turned off if one wishes, and because it is experimental you may so wish. To disable it, just comment out the line in get_file_func ( ) in library.c where the function digi_postprocess ( ) is called. Then do "make install" to install your change. 5. An experimental program for processing raw files into finished photos is available now, in gphoto2/trunk/playground/raw_converters/sq_raw_converter Please try this program. If the results are good, I will incorporate the routines used there directly into libgphot02/camlibs/digigr8. I like the results, but they need testing. 6. The "High Compression" setting uses an unpublished compression algorithm. However, after serious effort the decompression seems to work pretty well. There are at this time (01/20/2008) no known issues with it. 7. Please get back to me with reports about other SQ cameras (any cameras with Vendor number 0x2770), with their specifications (what it says in the OEM manual about resolution and number of pictures, as well as make and model, and whether it works or not with any libgphoto2 driver or not, would be enough), and with a log file if it seems it is supposed to work but there are problems. A NOTE ON CAPTURE AND ON CHANGING THE RESOLUTION SETTING FOR CAPTURE These cameras will perform "gphoto2 --capture-preview" which means, to shoot a frame and download it to the computer immediately. On the 0x9050 camera, the same USB command which trips the shutter will simultaneously delete all frames on the camera. On the 0x905C cameras, capture works, but will not affect whatever is on the camera. The default resolution setting for capture with all these cameras is 320x240. For those cameras which will do 640x480 resolution in still photo mode, there is a tweak which can cause the camera to do the capture at 640x480 as well. It is as follows: Look through the code in camlibs/library.c for the capture function. You will see a USB command in which the digit 0x1440 appears. Change that to 0x2840 and re-compile and re-install. It is also possible to get 160x120 resolution, but that is not so interesting. Evidently, the "40" means to do capture, and the previous two digits are the resolution setting in hexadecimal, with the final "0" removed. For example, 640=0x280 -> 0x2840 and 320=0x140 -> 0x1440 (which, again, is the default setting). I am not sure what would happen if the resolution setting here is too high for the camera (the known 0x9050 camera will only do 352x288 at max resolution in still mode, for instance). Therefore, this tweak is not implemented. However, it does work for me with those cameras for which it works. It should be repeated, too, that this tweak is not documented by any manufacturer and is not available in the OEM driver for any of these cameras. WARRANTY? Absolutely not. No warranty. Never. Not responsible for any actual or potential damage or consequences to anyone or to the equipment of anyone for using this program, whether the alleged damage or alleged consequences are claimed to be real, imaginary, direct, collateral, for pain and suffering, or are claimed to be inflicted upon any "third party" who is not the user or installer of the program. The program has been written for my pleasure and to broaden and deepen my knowledge of computer hardware and software. The program has not been written with the immediate expectation of financial gain or profit on my part, nor has it been commissioned for pay. It is presumed that any end-user of this program will have access to the source code of the program and can judge for himself or herself whether he/she wishes to use it or not, or can consult someone with appropriate expertise to make such a judgment. Theodore Kilgore 12/05/05 (revised 12/29/2005, 03/28/2007, 06/25/2007, 07/16/2007, 07/23/2007, 01/21/2008, 01/22/2008, 01/12/2012)libgphoto2-2.5.9/camlibs/digigr8/README.90500000644000175000001440000000637512610415510014746 00000000000000/* This is one of the README files for libgphoto2/camlibs/digigr8. This is an * integral part of the libgphoto2/camlibs/digigr8 library source code and is * distributed with that source code under the LGPL license. a copy of which * license may be seen in the head directory of libgphoto2, in the file * COPYING. * This file copyright Theodore Kilgore, 01/21/2008. */ CONCERNING 0x2770:0x9050 CAMERAS: First, a general remark. The reader is strongly encouraged to read README.905C as well as this file. That file in fact pertains to all of the cameras which are supported by libgphoto2/camlibs/digigr8. All of what it says pertains to the 0x2770:0x9050 cameras, too, unless something to the contrary is stated below. As of 01/20/2008, the only known camera with USB ID string 0x2770:0x9050 is the "Disney pix micro," found at KB Toys. Its functionality is very basic. On the package it says the camera is able to take 20 photos, but in fact the number of photos is variable. For, they are all compressed. Since the compression algorithm is the same as that in the 0x905C cameras, this camera is quite usable, for what it is. Resolution for this camera is fixed at 352x288 and can not be adjusted. In fact, the only thing on the camera which can be controlled at all, aside from snapping photos one at a time, is to delete photos one at a time or to delete all. To delete one photo with the delete button on the camera, press the button. To delete all, hold it down longer. To the best of my ability to determine, the camera has no clip option, no delayed-shooting option, and no multi-frame clips intended for AVI images. However, the camera will do software deletion of all photos using the option gphoto2 -D, while for the other cameras supported in camlibs/digigr8 the gphoto2 -D option does nothing at all and is therefore considered as an unsupported operation for those other cameras. However: WARNING The USB command to delete is the same as the command to shoot a frame (gphoto2 option is --capture-preview). If you shoot a frame with the Disney pix micro, it will delete whatever photos are on the camera !!! WARNING The camera has kernel support as a webcam, at 320x240 resolution. Use of the camera in webcam mode will delete all photos stored on the camera, too !!! WARRANTY? Absolutely not. No warranty. Never. Not responsible for any actual or potential damage or consequences to anyone or to the equipment of anyone for using this program, whether the alleged damage or alleged consequences are claimed to be real, imaginary, direct, collateral, for pain and suffering, or are claimed to be inflicted upon any "third party" who is not the user or installer of the program. The program has been written for my pleasure and to broaden and deepen my knowledge of computer hardware and software. The program has not been written with the immediate expectation of financial gain or profit on my part, nor has it been commissioned for pay. It is presumed that any end-user of this program will have access to the source code of the program and can judge for himself or herself whether he/she wishes to use it or not, or can consult someone with appropriate expertise to make such a judgment. Theodore Kilgore 01/21/2008, revised 01/22/2008, 01/12/2012 libgphoto2-2.5.9/camlibs/polaroid/0000755000175000001440000000000012623156267014032 500000000000000libgphoto2-2.5.9/camlibs/polaroid/pdc320.h0000644000175000001440000000470312561423351015112 00000000000000#ifndef __GPHOTO2_PDC320_H__ #define __GPHOTO2_PDC320_H__ #include static const jpeg_quantization_table chrominance = { 3, 2, 2, 3, 5, 8, 10, 12, 2, 2, 3, 4, 5, 12, 12, 11, 3, 3, 3, 5, 8, 11, 14, 11, 3, 3, 4, 6, 10, 17, 16, 12, 4, 4, 7, 11, 14, 22, 21, 15, 5, 7, 11, 13, 16, 21, 23, 18, 10, 13, 16, 17, 21, 24, 24, 20, 14, 18, 19, 20, 22, 20, 21, 20 }; static const jpeg_quantization_table luminance = { 3, 4, 5, 9, 20, 20, 20, 20, 4, 4, 5, 13, 20, 20, 20, 20, 5, 5, 11, 20, 20, 20, 20, 20, 9, 13, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }; /* ID returns 0 , XIRLINK, and 4 byte more */ #define ID_PDC640SE "\x0XIRLINK\x2\x1\x3\x1" #define ID_PDC320 "\x0XIRLINK\x2\x1\x3\x0" #define PDC320_INIT 0x00 #define PDC320_ID 0x01 #define PDC320_STATE 0x02 #define PDC320_NUM 0x03 #define PDC320_SIZE 0x04 #define PDC320_PIC 0x05 #define PDC320_DEL 0x07 #define PDC320_ENDINIT 0x0a #define PDC320_UNKNOWN3 0x0c #define RETRIES 3 #define CR(result) {int r = (result); if (r < 0) return (r);} #define CR_FREE(result, data) {int r = (result); if (r < 0) {free (data); return (r);}} static struct { const char *model; unsigned char id; } models[] = { {"Polaroid:Fun! 320", 0x3f}, {"Polaroid:640SE", 0x40}, {NULL, 0x00} }; #define HUFF_00 33, \ "\xFF\xC4\x00\x1F\x00\x00\x01\x05" "\x01\x01\x01\x01\x01\x01\x00\x00" \ "\x00\x00\x00\x00\x00\x00\x01\x02" "\x03\x04\x05\x06\x07\x08\x09\x0A\x0B" #define HUFF_10 183, \ "\xFF\xC4\x00\xB5\x10\x00\x02\x01" "\x03\x03\x02\x04\x03\x05\x05\x04" \ "\x04\x00\x00\x01\x7D\x01\x02\x03" "\x00\x04\x11\x05\x12\x21\x31\x41" \ "\x06\x13\x51\x61\x07\x22\x71\x14" "\x32\x81\x91\xA1\x08\x23\x42\xB1" \ "\xC1\x15\x52\xD1\xF0\x24\x33\x62" "\x72\x82\x09\x0A\x16\x17\x18\x19" \ "\x1A\x25\x26\x27\x28\x29\x2A\x34" "\x35\x36\x37\x38\x39\x3A\x43\x44" \ "\x45\x46\x47\x48\x49\x4A\x53\x54" "\x55\x56\x57\x58\x59\x5A\x63\x64" \ "\x65\x66\x67\x68\x69\x6A\x73\x74" "\x75\x76\x77\x78\x79\x7A\x83\x84" \ "\x85\x86\x87\x88\x89\x8A\x92\x93" "\x94\x95\x96\x97\x98\x99\x9A\xA2" \ "\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA" "\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9" \ "\xBA\xC2\xC3\xC4\xC5\xC6\xC7\xC8" "\xC9\xCA\xD2\xD3\xD4\xD5\xD6\xD7" \ "\xD8\xD9\xDA\xE1\xE2\xE3\xE4\xE5" "\xE6\xE7\xE8\xE9\xEA\xF1\xF2\xF3" \ "\xF4\xF5\xF6\xF7\xF8\xF9\xFA" #endif libgphoto2-2.5.9/camlibs/polaroid/dlink350f.h0000644000175000001440000000204212610415524015606 00000000000000 /* dlink350f.h * * orientation, byte order, and brightness correction for the D-Link 350F * * Copyright 2003 Mark Slemko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __DLINK350F_H__ #define __DLINK350F_H__ int dlink_dsc350f_postprocessing_and_flip_both (int width, int height, unsigned char* rgb); #endif libgphoto2-2.5.9/camlibs/polaroid/pdc320.c0000644000175000001440000003460012610415536015105 00000000000000/* pdc320.c * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* Originally written by Peter Desnoyers , * and adapted for gphoto2 by * Nathan Stenzel and * Lutz Mueller * * Maintained by Nathan Stenzel * * Original windows drivers available at: * http://www.polaroid.com/service/software/index.html */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include "pdc320.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "pdc320" /*******************************************************************************/ /* NOTICE: There is a 16x8 block of pixels after the image data. */ /* All of them are about the same and I believe they are for image correction. */ /*******************************************************************************/ /* Notes on what needs work: * Make a better header that could correct color problems.... * or manage to decode, color correct, and save the image. * The quantization tables are incorrect for the PDC320. */ /* * For the PDC640SE, the init sequence is INIT,ID,ENDINIT,STATE,NUM,SIZE,PIC. * * During handshake, if the first read byte is not 6 then it is not good. Read * the number of bytes mentioned +2 ("FE FF"?)and then INIT and try SIZE * again (this is a loop). * * It is possible that the PDC320 might do a similar handshaking sequence at * that same point. */ typedef enum { PDC320, PDC640SE } PDCModel; struct _CameraPrivateLibrary { PDCModel model; }; static int pdc320_escape( const unsigned char *inbuf, int inbuflen, unsigned char *outbuf ) { int i,j; j = 0; for (i=0;i 0xffff) { checksum = (checksum & 0xffff) + ((checksum >> 16) & 0xffff); } return 0xffff-checksum; /* neg checksum actually */ } static int pdc320_command( GPPort *port, const unsigned char *cmd, int cmdlen ) { unsigned char csum[2]; int checksum, off, ret; unsigned char *newcmd; checksum = pdc320_calc_checksum (cmd, cmdlen); csum[0] = checksum & 0xff; csum[1] = (checksum >> 8) & 0xff; /* 4 times 0xe6, checksum and command, both might be escaped */ newcmd = malloc (2*(sizeof(csum)+cmdlen)+4); if (!newcmd) return GP_ERROR_NO_MEMORY; memset (newcmd, 0xe6, 4); off = 4; off += pdc320_escape (cmd, cmdlen, newcmd + off); off += pdc320_escape (csum, 2, newcmd + off); ret = gp_port_write (port, (char *)newcmd, off); free(newcmd); return ret; } static int pdc320_simple_command (GPPort *port, const unsigned char cmd) { return pdc320_command(port, &cmd, 1); } static int pdc320_simple_reply (GPPort *port, const unsigned char expcode, unsigned int replysize, unsigned char *reply ) { unsigned char csum[2]; int calccsum; CR (gp_port_read (port, (char *)reply, 1)); if (reply[0] != expcode) { GP_DEBUG("*** reply got 0x%02x, expected 0x%02x\n", reply[0], expcode ); return GP_ERROR; } CR (gp_port_read (port, (char *)reply+1, replysize-1)); CR (gp_port_read (port, (char *)csum, 2)); calccsum = pdc320_calc_checksum (reply, replysize); if (calccsum != ((csum[1] << 8) | csum[0])) { GP_DEBUG("csum %x vs %x\n",calccsum,((csum[0]<<8)|csum[1])); return GP_ERROR; } return GP_OK; } static int pdc320_simple_command_reply (GPPort *port, const unsigned char cmd, const unsigned char expcode, unsigned int replysize, unsigned char *reply ) { CR (pdc320_simple_command (port, cmd)); CR (pdc320_simple_reply (port, expcode, replysize, reply)); return GP_OK; } static int pdc320_init (GPPort *port) { unsigned char buf[32]; unsigned char e6[4]; int i; GP_DEBUG ("*** PDC320_INIT ***"); /* The initial command is prefixed by 4 raw E6. */ memset(e6,0xe6,sizeof(e6)); CR (gp_port_write (port, (char *)e6, sizeof (e6) )); GP_DEBUG ("*** PDC320_INIT ***"); CR (pdc320_simple_command_reply (port, PDC320_INIT, 5, 1, buf)); GP_DEBUG ("*** PDC320_ID ***"); CR (pdc320_simple_command_reply (port, PDC320_ID, 0, 12, buf)); GP_DEBUG ("*** PDC320_STATE ***"); CR (pdc320_simple_command_reply (port, PDC320_STATE, 2, 22, buf)); for (i=0;i<9;i++) { GP_DEBUG ("%d: %d (0x%x)",i,((buf[2+i*2]<<8)|buf[2+2*i+1]), ((buf[2+i*2]<<8)|buf[2+2*i+1])); } GP_DEBUG ("*** PDC320_ENDINIT ***"); return pdc320_simple_command_reply (port, PDC320_ENDINIT, 9, 1, buf); } static int pdc320_num (GPPort *port) { unsigned char buf[2]; GP_DEBUG ("*** PDC320_NUM ***"); CR (pdc320_simple_command_reply (port, PDC320_NUM, 3, 2, buf)); GP_DEBUG ("The camera contains %i files.", buf[1]); return buf[1]; } static int pdc320_delete (GPPort *port) { unsigned char buf[1]; GP_DEBUG ("*** PDC320_DELETE ***"); return pdc320_simple_command_reply(port, PDC320_DEL, 8, 1, buf); } static int pdc320_size (Camera *camera, int n) { int size; unsigned char buf[5]; unsigned char cmd[2]; GP_DEBUG ("*** PDC320_SIZE ***"); cmd[0] = PDC320_SIZE; cmd[1] = n; CR (pdc320_command (camera->port, cmd, sizeof (cmd))); CR (pdc320_simple_reply (camera->port, 6, 5, buf)); size = (buf[1] << 24) + (buf[2] << 16) + (buf[3] << 8) + buf[4]; GP_DEBUG ("Image %i has size %i.", n, size); return (size); } /* Unclear. */ static int pdc320_0c (Camera *camera, int n) { int size, i; unsigned char buf[3], *xbuf; unsigned char cmd[2]; cmd[0] = 0x0c; cmd[1] = n; /* n is from 1 on up */ /* Write the command */ GP_DEBUG ("*** PDC320_0c ***"); CR (pdc320_command (camera->port, cmd, sizeof (cmd))); CR (gp_port_read (camera->port, (char *)buf, 3)); if (buf[0] != 7) return GP_ERROR; size = (buf[1] << 8) | buf[2]; xbuf = malloc (size); CR (gp_port_read (camera->port, (char *)xbuf, size)); for (i=0; iport, (char *)buf, 2)); /* checksum is calculated from both, but i am not clear how. */ free (xbuf); return GP_OK; } static int pdc320_pic (Camera *camera, int n, unsigned char **data, int *size) { unsigned char cmd[2]; unsigned char buf[2048]; int remaining, f1, f2, i, len; int chunksize=2000; /* Get the size of the picture and allocate the memory */ GP_DEBUG ("Checking size of image %i...", n); CR (*size = pdc320_size (camera, n)); *data = malloc (sizeof (char) * (*size)); if (!*data) return (GP_ERROR_NO_MEMORY); cmd[0] = PDC320_PIC; cmd[1] = n; CR_FREE (pdc320_command (camera->port, cmd, sizeof (cmd)), *data); switch (camera->pl->model) { case PDC640SE: chunksize = 528; break; case PDC320: chunksize = 2000; break; } len = *size; for (i = 0; i < *size; i += chunksize) { /* How many bytes do we read in this round? */ remaining = *size - i; len = (remaining > chunksize) ? chunksize : remaining; /* Read the frame number */ usleep (10000); CR_FREE (gp_port_read (camera->port, (char *)buf, 5), *data); f1 = (buf[1] << 8) + buf[2]; f2 = (buf[3] << 8) + buf[4]; GP_DEBUG ("Reading frame %d " "(%d)...", f1, f2); /* Read the actual data */ usleep(1000); CR_FREE (gp_port_read (camera->port, (char *)*data + i, len), *data); /* Read the checksum */ CR_FREE (gp_port_read (camera->port, (char *)buf, 2), *data); } return (GP_OK); } int camera_id (CameraText *id) { strcpy (id->text, "Polaroid DC320"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].model; i++) { memset(&a, 0, sizeof(a)); strcpy (a.model, models[i].model); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_SERIAL; a.speed[0] = 115200; a.speed[1] = 0; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; CR (gp_abilities_list_append (list, a)); } return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; jpeg *myjpeg; chunk *tempchunk; int r, n, size, width, height; unsigned char *data; if ((type != GP_FILE_TYPE_RAW) && (type != GP_FILE_TYPE_NORMAL)) return (GP_ERROR_NOT_SUPPORTED); /* * Get the number of the picture from the filesystem and increment * since we need a range starting with 1. */ GP_DEBUG ("Getting number from fs..."); CR (n = gp_filesystem_number (camera->fs, folder, filename, context)); n++; /* Get the file */ GP_DEBUG ("Getting file %i...", n); CR (pdc320_pic (camera, n, &data, &size)); r = pdc320_0c (camera, n); if (r < GP_OK) { free (data); return r; } /* Post-processing */ switch (type) { case GP_FILE_TYPE_RAW: CR (gp_file_set_data_and_size (file, (char *)data, size)); CR (gp_file_set_mime_type (file, GP_MIME_RAW)); break; case GP_FILE_TYPE_NORMAL: default: GP_DEBUG ("Using Nathan Stenzel's experimental jpeg.c\n"); GP_DEBUG ("About to make jpeg header\n"); width = data[4]*256 + data[5]; height = data[2]*256 + data[3]; GP_DEBUG ("Width=%i\tHeight=%i\n", width, height); myjpeg = gpi_jpeg_header(width,height/2, 0x11,0x11,0x21, 1,0,0, &chrominance, &luminance, 0,0,0, gpi_jpeg_chunk_new_filled(HUFF_00), gpi_jpeg_chunk_new_filled(HUFF_10), NULL, NULL); GP_DEBUG ("Turning the picture data into a chunk data type\n"); tempchunk = gpi_jpeg_chunk_new(size); tempchunk->data = data; GP_DEBUG ("Adding the picture data to the jpeg structure\n"); gpi_jpeg_add_marker(myjpeg, tempchunk, 6, size-1); GP_DEBUG ("Writing the jpeg file\n"); gpi_jpeg_write(file, filename, myjpeg); GP_DEBUG ("Cleaning up the mess\n"); gpi_jpeg_destroy(myjpeg); free (tempchunk); break; } return (GP_OK); } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; CR (pdc320_delete (camera->port)); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Download program for several Polaroid cameras. " "Originally written by Peter Desnoyers " ", and adapted for gphoto2 by " "Nathan Stenzel and " "Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden " ".")); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { int n; Camera *camera = data; /* Fill the list */ CR (n = pdc320_num (camera->port)); gp_list_populate (list, "PDC320%04i.jpg", n); return (GP_OK); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { char buf[12]; GP_DEBUG ("*** PDC320_ID ***"); CR (pdc320_simple_command_reply (camera->port, PDC320_ID, 0, 12, (unsigned char *)buf)); sprintf (summary->text, _("Model: %x, %x, %x, %x"), buf[8],buf[9],buf[10],buf[11]); return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { if (!camera) return (GP_ERROR_BAD_PARAMETERS); if (camera->pl) { free (camera->pl); camera->pl = NULL; } return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .delete_all_func = delete_all_func }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; CameraAbilities abilities; int result; /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->about = camera_about; camera->functions->summary = camera_summary; /* Now, tell the filesystem where to get lists and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); /* What model are we talking to? */ gp_camera_get_abilities (camera, &abilities); if ( !strcmp (abilities.model, "Polaroid:Fun! 320") || !strcmp (abilities.model, "Polaroid Fun! 320") ) camera->pl->model = PDC320; else if (!strcmp (abilities.model, "Polaroid:640SE") || !strcmp (abilities.model, "Polaroid 640SE") ) camera->pl->model = PDC640SE; else { free (camera->pl); camera->pl = NULL; return (GP_ERROR_MODEL_NOT_FOUND); } /* Open the port and check if the camera is there */ gp_port_get_settings (camera->port, &settings); if (!settings.serial.speed) settings.serial.speed = 115200; gp_port_set_settings (camera->port, settings); gp_port_set_timeout (camera->port, 30000); /* Check if the camera is really there */ result = pdc320_init (camera->port); if (result < 0) { free (camera->pl); camera->pl = NULL; return (result); } return (GP_OK); } libgphoto2-2.5.9/camlibs/polaroid/dlink350f.c0000644000175000001440000000572412610415524015613 00000000000000/* dlink350f.c * * orientation, byte order, and brightness correction for the D-Link 350F * * Copyright 2003 Mark Slemko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #define GP_MODULE "dlink350f" #include "dlink350f.h" #define RED(p,x,y,w) *((p)+3*((y)*(w)+(x)) ) #define GREEN(p,x,y,w) *((p)+3*((y)*(w)+(x))+1) #define BLUE(p,x,y,w) *((p)+3*((y)*(w)+(x))+2) #define SWAP(a,b) {unsigned char t=(a); (a)=(b); (b)=t;} #define MINMAX(a,min,max) { (min)=MIN(min,a); (max)=MAX(max,a); } #ifndef MAX # define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif /* * function added for the D-Link DSC 350F - written by Mark Slemko - mslemko@netscape.net * This function correctly adjusts the color and orientation of the image */ int dlink_dsc350f_postprocessing_and_flip_both (int width, int height, unsigned char* rgb) { unsigned char *start, *end, c; int whichcolor = 0; int lowred=255, lowgreen=255, lowblue=255; int hired=0, higreen=0, hiblue=0; GP_DEBUG("flipping byte order"); /* flip image left/right and top/bottom (actually reverse byte order) */ start = rgb; end = start + ((width * height) * 3); while (start < end) { c = *start; /* validation - debugging info - collect the color range info * for first half of image. */ switch (whichcolor % 3) { case 0: /* blue */ MINMAX((int)c,lowblue,hiblue); break; case 1: /* green */ MINMAX((int)c,lowgreen,higreen); break; default: /* red */ MINMAX((int)c,lowred,hired); break; } /* adjust color magnitude, since it appears that the 350f only had 7 bits of color info */ *start++ = *--end << 1; *end = c << 1; whichcolor++; } /* could do more color processing here GP_DEBUG("adjusting color"); // adjust image colours start = rgb; end = start + ((width * height) * 3); while (start < end) { c = *start++; } */ /* show the color range of image in debug mode. */ GP_DEBUG("\nred low = %d high = %d\ngreen low = %d high = %d\nblue low = %d high = %d\n", lowred,hired, lowgreen,higreen, lowblue,hiblue); return GP_OK; } libgphoto2-2.5.9/camlibs/polaroid/pdc320.html0000644000175000001440000000436012557123324015630 00000000000000 PDC320 protocol description

Polaroid PDC320 protocol description


Commands are prefixed with 4 E6.
The commands return 1 reply code byte. All commands return an addition 2 byte checksum.
Name Byte code Arguments Reply code reply length reply desc
Init 0x00 None. 0x05 None. Nothing.
Id 0x01 None. 0x00 11 bytes Returns 11 byte. Byte 0-8 are the string "XIRLINK", these are followed by a 0x02, 0x01 and 2 unknown additional bytes.
State 0x02 None. 0x02 21 Returns 21 bytes. First byte is 0x3f, the following 9 byte are big endian 16bit values:
320,240,5,320,240,5,80,80,0 on the pdc320.
Num 0x03 None. 0x03 1 Byte Returns 1 bytes, the number of images.
Size 0x04 Imagenr.(starting with 1) 0x06 4 Bytes Returns 4 bytes, the big endian size of the image.
Pic 0x05 Imagenr.(starting with 1) 0x04 4 Bytes, then data. Returns 4 bytes, 2 byte part offset, 2 byte part offset, then data, then 2 byte checksum. Then again a reply until the end of the image.
Delete All 0x07 None. 0x08 None. Nothing.
End Init 0x0a None. 0x09 None. Nothing.
Get Image Params 0x0c Imagenr. (starting with 1) 0x07 2 byte bigendian size, then data of this size The data is expected to be 6 byte, which seems to be picture parameters. Unclear what they mean. The checksum is appended after the data.
For checksum calculation see the sourcecode (for now).

The image data return starts with:
0xff,0xc0,16 bit bigendian height, 16 bit bigendian width, raw JPEG data. libgphoto2-2.5.9/camlibs/polaroid/jd350e_red.h0000644000175000001440000000435312610415536015745 00000000000000/* jd350e_red.h * * White balancing curve for daylight images (experimental) * * Copyright 2001 Michael Trawny * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ static unsigned jd350e_red_curve [] = { 0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 25, 26, 28, 31, 33, 36, 39, 41, 43, 45, 48, 50, 52, 55, 57, 60, 62, 64, 66, 69, 72, 73, 75, 78, 80, 81, 83, 86, 88, 89, 90, 92, 97, 98, 101, 107, 108, 111, 114, 115, 117, 119, 120, 121, 122, 123, 127, 129, 133, 132, 136, 137, 144, 145, 147, 150, 153, 154, 157, 158, 161, 164, 167, 168, 170, 172, 176, 178, 180, 183, 184, 186, 190, 191, 194, 193, 197, 199, 201, 201, 207, 206, 210, 211, 215, 217, 219, 219, 221, 225, 231, 231, 232, 235, 235, 236, 242, 243, 244, 245, 247, 247, 250, 250, 251, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 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, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 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, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255}; libgphoto2-2.5.9/camlibs/polaroid/jd350e.h0000644000175000001440000000225512610415536015112 00000000000000/* jd350e.h * * White balancing and brightness correction for the Jenoptik * JD350 entrance camera * * Copyright 2001 Michael Trawny * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __JD350E_H__ #define __JD350E_H__ int jd350e_postprocessing(int width, int height, unsigned char* rgb); int jd350e_postprocessing_and_flip(int width, int height, unsigned char* rgb); int trust350fs_postprocessing(int width, int height, unsigned char* rgb); #endif libgphoto2-2.5.9/camlibs/polaroid/pdc640.c0000644000175000001440000006241712610415536015121 00000000000000/* pdc640.c * * Copyright 2001 Lutz Mueller * Copyright 2002 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include #include "jd350e.h" #include "dlink350f.h" #define GP_MODULE "pdc640" #define PDC640_PING "\x01" #define PDC640_SPEED "\x69\x0b" #define PDC640_MAXTRIES 3 #define CHECK_RESULT(result) {int __r = (result); if (__r < 0) return (__r);} #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif typedef enum{ pdc640, jd350e, dlink350f } Model; typedef int postproc_func(int,int,unsigned char*); struct _CameraPrivateLibrary{ Model model; BayerTile bayer_tile; postproc_func* postprocessor; char* filespec; }; static int flip_vertical (int width, int height, unsigned char *rgb); static int flip_both (int width, int height, unsigned char *rgb); static struct { const char* model; int vendor,product; struct _CameraPrivateLibrary pl; } models[] = { {"Polaroid Fun Flash 640", 0, 0, { pdc640, BAYER_TILE_RGGB, NULL, /* add postprocessor here! */ "pdc640%04i.ppm" } }, {"Novatech Digital Camera CC30", 0, 0, { pdc640, BAYER_TILE_RGGB, NULL, /* add postprocessor here! */ "pdc640%04i.ppm" } }, {"Jenoptik JD350 entrance", 0x5da, 0x1006, { jd350e, BAYER_TILE_BGGR, &jd350e_postprocessing, "jd350e%04i.ppm" } }, {"Jenoptik JD350 video", 0xd96, 0x0000, { jd350e, BAYER_TILE_BGGR, NULL /*&jd350e_postprocessing*/, "jd350v%04i.ppm" } }, {"ScanHex SX-35a", 0x797, 0x8901, { jd350e, BAYER_TILE_BGGR, &jd350e_postprocessing, "jd350v%04i.ppm" } }, {"ScanHex SX-35b", 0x797, 0x8909, { jd350e, BAYER_TILE_BGGR, &jd350e_postprocessing, "jd350v%04i.ppm" } }, {"ScanHex SX-35c", 0x797, 0x8911, { jd350e, BAYER_TILE_BGGR, &jd350e_postprocessing, "jd350v%04i.ppm" } }, {"ScanHex SX-35d", 0x84d, 0x1001, { jd350e, BAYER_TILE_BGGR, &jd350e_postprocessing, "jd350v%04i.ppm" } }, {"Typhoon StyloCam", 0x797, 0x801a, { jd350e, BAYER_TILE_BGGR, &flip_vertical, "stylo%04i.ppm" } }, {"Trust PowerC@m 350FS", 0x6d6, 0x002e, { jd350e, BAYER_TILE_RGGB, &trust350fs_postprocessing, "trust%04i.ppm" } }, {"Trust PowerC@m 350FT", 0x6d6, 0x002d, { jd350e, BAYER_TILE_RGGB, &trust350fs_postprocessing, "trust%04i.ppm" } }, {"Clever CAM 360", 0x797, 0x8001, { jd350e, BAYER_TILE_BGGR, &jd350e_postprocessing_and_flip, "scope%04i.ppm" } }, /* http://www.meade.com/sportsoptics/catalog/captureview/index.html */ {"GrandTek ScopeCam", 0x797, 0x801c, { jd350e, BAYER_TILE_BGGR, &jd350e_postprocessing_and_flip, "scope%04i.ppm" } }, /* http://www.sipixdigital.com/cameras/stylecam/ */ /* Ids glanced from downloaded driver / .inf file. */ {"SiPix Stylecam", 0xd64, 0x1001, { jd350e, BAYER_TILE_BGGR, &flip_both, "style%04i.ppm" } }, /* http://www.umax.de/digicam/AstraPix320S.htm */ /* reportedly has same ids as SiPix StyleCam and also * looks identical. */ {"UMAX AstraPix 320s", 0xd64, 0x1001, { jd350e, BAYER_TILE_BGGR, &flip_both, "astra%04i.ppm" } }, /* http://www.dlink.com/products/usb/dsc350/ */ /* ids from driver download */ {"D-Link DSC 350F", 0xd64, 0x1021, { dlink350f, BAYER_TILE_BGGR, &dlink_dsc350f_postprocessing_and_flip_both, "dlink%04i.ppm" } }, {NULL,} }; static int pdc640_read_packet (GPPort *port, unsigned char *buf, int buf_size) { int i; char checksum, c; /* Calculate the checksum */ for (i = 0, checksum = 0; i < buf_size; i++) buf[i] = 0; /* Read the packet */ CHECK_RESULT (gp_port_read (port, (char*)buf, buf_size)); /* Calculate the checksum */ for (i = 0, checksum = 0; i < buf_size; i++) checksum += buf[i]; /* Read the checksum */ CHECK_RESULT (gp_port_read (port, &c, 1)); GP_DEBUG ("Checksum: %d calculated, %d received", checksum, c); if (checksum != c) return (GP_ERROR_CORRUPTED_DATA); return (GP_OK); } static int pdc640_transmit (GPPort *port, unsigned char *cmd, int cmd_size, unsigned char *buf, int buf_size) { int r, tries; if (port->type == GP_PORT_USB) { unsigned char xbuf[64]; unsigned char xcmd[4]; int checksum; /* USB has always just 3 bytes + 1 byte checksum */ memset(xcmd,0,4);memcpy(xcmd,cmd,cmd_size); checksum = (xcmd[0]^0x34)+(xcmd[1]^0xcb)+0x14f+(xcmd[2]^0x67); xcmd[3] = checksum & 0xff; /* Wait until we get back the echo of the command. */ r = gp_port_usb_msg_read( port, 0x10, xcmd[0]|(xcmd[1]<<8),xcmd[2]|(xcmd[3]<<8),(char*)xbuf,sizeof(xbuf)); /* Sometimes we want to read here, sometimes not. if (r < GP_OK) return r; */ if (buf && buf_size) { /* bulk read things. The JD350v can read in 1 block, * the Stylocam returns only 64byte blocks here. */ int curr = 0, readsize = (buf_size + 63) & ~63; while (curr < readsize) { r = gp_port_read( port, (char*)buf + curr, readsize - curr); if (r < GP_OK) break; curr += r; } } return r; } else { char c; /* In event of a checksum or timing failure, retry */ for (tries = 0; tries < PDC640_MAXTRIES; tries++) { /* * The first byte returned is always the same as the first byte * of the command. */ CHECK_RESULT (gp_port_write (port, (char*)cmd, cmd_size)); r = gp_port_read (port, &c, 1); if ((r < 0) || (c != cmd[0])) continue; if (buf) { r = pdc640_read_packet (port, buf, buf_size); if (r < 0) continue; } return (GP_OK); } return (GP_ERROR_CORRUPTED_DATA); } } static int pdc640_transmit_pic (GPPort *port, char cmd, int width, int thumbnail, unsigned char *buf, int buf_size) { unsigned char cmd1[] = {0x61, 0x00}; unsigned char cmd2[] = {0x15, 0x00, 0x00, 0x00, 0x00}; /* First send the command ... */ cmd1[1] = cmd; CHECK_RESULT (pdc640_transmit (port, cmd1, 2, NULL, 0)); if (port->type == GP_PORT_USB) { cmd2[1] = (buf_size + 63) >> 6; cmd2[2] = ((buf_size + 63) >> 6) >> 8; return pdc640_transmit (port, cmd2, 4, buf, buf_size); } else { int i, packet_size, result, size, ofs; unsigned char *data; /* Set how many scanlines worth of data to get at once */ cmd2[4] = 0x06; /* Packet size is a multiple of the image width */ packet_size = width * cmd2[4]; /* Allocate memory to temporarily store received data */ data = malloc (packet_size); if (!data) return (GP_ERROR_NO_MEMORY); /* Now get the packets */ ofs = 0; result = GP_OK; for (i = 0; i < buf_size; i += packet_size) { /* Read the packet */ result = pdc640_transmit (port, cmd2, 5, data, packet_size); if (result < 0) break; /* Copy from temp buffer -> actual */ size = packet_size; if (size > buf_size - i) size = buf_size - i; memcpy(buf + i, data, size); /* Move to next offset */ ofs += cmd2[4]; cmd2[2] = ofs & 0xFF; cmd2[1] = (ofs >> 8) & 0xFF; } free (data); return (result); } } static int pdc640_transmit_packet (GPPort *port, char cmd, unsigned char *buf, int buf_size) { unsigned char cmd1[] = {0x61, 0x00}; /* Send the command and get the packet */ cmd1[1] = cmd; CHECK_RESULT (pdc640_transmit (port, cmd1, 2, NULL, 0)); if (port->type == GP_PORT_USB) { unsigned char cmd2[] = {0x15, 0x00, 0x00, 0x00}; cmd2[1] = ((buf_size+63)/64) & 0xff; cmd2[2] = (((buf_size+63)/64) >> 8) & 0xff; return pdc640_transmit (port, cmd2, 4, buf, buf_size); } else { unsigned char cmd2[] = {0x15, 0x00, 0x00, 0x00, 0x01}; return pdc640_transmit (port, cmd2, 5, buf, buf_size); } } static int pdc640_ping_low (GPPort *port) { unsigned char cmd[] = {0x01}; CHECK_RESULT (pdc640_transmit (port, cmd, 1, NULL, 0)); return (GP_OK); } #if 0 static int pdc640_push_button (GPPort *port) { char cmd[] = {0xfd}; CHECK_RESULT (pdc640_transmit (port, cmd, 1, NULL, 0)); return (GP_OK); } #endif static int pdc640_ping_high (GPPort *port) { unsigned char cmd[] = {0x41}; CHECK_RESULT (pdc640_transmit (port, cmd, 1, NULL, 0)); return (GP_OK); } static int pdc640_speed (GPPort *port, int speed) { unsigned char cmd[] = {0x69, 0x00}; cmd[1] = (speed / 9600) - 1; CHECK_RESULT (pdc640_transmit (port, cmd, 2, NULL, 0)); return (GP_OK); } #if 0 /* read version I think */ static int pdc640_unknown5 (GPPort *port) { char cmd[] = {0x05}; char buf[3]; CHECK_RESULT (pdc640_transmit (port, cmd, 1, buf, 3)); if ((buf[0] != 0x33) || (buf[1] != 0x02) || (buf[2] != 0x35)) return (GP_ERROR_CORRUPTED_DATA); return (GP_OK); } #endif #if 0 /* get calibration param */ static int pdc640_unknown20 (GPPort* port) { unsigned char buf[128]; CHECK_RESULT (pdc640_transmit_packet (port, 0x20, buf, 128)); return (GP_OK); } #endif static int pdc640_caminfo (GPPort *port, int *numpic) { unsigned char buf[1280]; CHECK_RESULT (pdc640_transmit_packet (port, 0x40, buf, 1280)); *numpic = buf[2]; /* thats the only useful info :( */ return (GP_OK); } static int pdc640_setpic (GPPort *port, char n) { unsigned char cmd[2] = {0xf6, 0x00}; cmd[1] = n; if (port->type == GP_PORT_USB) { /* USB does not like a bulkread afterwards */ return pdc640_transmit (port, cmd, 2, NULL, 0); } else { unsigned char buf[8]; return pdc640_transmit (port, cmd, 2, buf, 7); } } static int pdc640_picinfo (GPPort *port, char n, int *size_pic, int *width_pic, int *height_pic, int *size_thumb, int *width_thumb, int *height_thumb, int *compression_type ) { unsigned char buf[64]; CHECK_RESULT (pdc640_setpic (port, n)); CHECK_RESULT (pdc640_transmit_packet (port, 0x80, buf, 32)); /* Check image number matches */ if (buf[0] != n) return (GP_ERROR_CORRUPTED_DATA); /* Picture size, width and height */ *size_pic = buf[2] | (buf[3] << 8) | (buf[4] << 16); *width_pic = buf[5] | (buf[6] << 8); *height_pic = buf[7] | (buf[8] << 8); /* Compression Type */ *compression_type = buf[9]; *size_thumb = buf[25] | (buf[26] << 8) | (buf[27] << 16); *width_thumb = buf[28] | (buf[29] << 8); *height_thumb = buf[30] | (buf[31] << 8); /* Even though it should the be the correct size, the Typhoon * Stylocam returns junk in there. So calculate for ourselves. */ if (*size_thumb > *width_thumb * *height_thumb) *size_thumb = *width_thumb * *height_thumb; return (GP_OK); } static int pdc640_processtn (int width, int height, unsigned char **data, int size) { unsigned char *newdata; int y; /* Sanity checks */ if ((data == NULL) || (size < width * height)) return (GP_ERROR_CORRUPTED_DATA); /* Allocate a new buffer */ newdata = malloc(size); if (!newdata) return (GP_ERROR_NO_MEMORY); /* Flip the thumbnail */ for (y = 0; y < height; y++) { memcpy(&newdata[(height - y - 1) * width], &((*data)[y * width]), width); } /* Set new buffer */ free (*data); *data = newdata; return (GP_OK); } static int pdc640_getbit (unsigned char *data, int *ofs, int size, int *bit) { static char c; int b; /* Check if next byte required */ if (*bit == 0) { if (*ofs >= size) return (-1); c = data[*ofs]; (*ofs)++; } /* Get current bit value */ b = (c >> *bit) & 1; /* Then move onto the next bit */ (*bit)++; if (*bit >= 8) *bit = 0; return (b); } static int pdc640_deltadecode (int width, int height, unsigned char **rawdata, int *rawsize) { char col1, col2; unsigned char *data; int rawofs, x, y, ofs, bit, ones; int size; int e, d, o, val; GP_DEBUG ("pdc640_deltacode ()"); /* Create a buffer to store RGB data in */ size = width * height; data = malloc (size * sizeof (char)); if (!data) return (GP_ERROR_NO_MEMORY); /* Delta decode scanline by scanline */ rawofs = 0; for (y = height-1; y >= 0; y--) { /* Word alignment */ if (rawofs & 1) rawofs++; /* Sanity check */ if (rawofs >= *rawsize) { free (data); return (GP_ERROR_CORRUPTED_DATA); } /* Offset into the uncompressed data */ ofs = y * width; /* Get the first two pixel values */ col1 = (*rawdata)[rawofs]; col2 = (*rawdata)[rawofs + 1]; rawofs += 2; data[ofs + 0] = col1 << 1; data[ofs + 1] = col2 << 1; /* Work out the remaining pixels */ bit = 0; for (x = 2; x < width; x++) { /* Count number of ones */ ones = 0; while (pdc640_getbit(*rawdata, &rawofs, *rawsize, &bit) == 1) ones++; /* * Get the delta value * (size dictated by number of ones) */ val = 0; for (o = 0, e = 0, d = 1; o < ones; o++, d <<= 1) { e = pdc640_getbit(*rawdata, &rawofs, *rawsize, &bit); if (e == 1) val += d; } if (e == 0) val += 1 - d; /* adjust for negatives */ /* Adjust the corresponding pixel value */ if (x & 1) val = (col2 += val); else val = (col1 += val); data[ofs + x] = val << 1; } } /* Set new buffer */ free (*rawdata); *rawdata = data; *rawsize = size; return (GP_OK); } static int pdc640_getpic (Camera *camera, int n, int thumbnail, int justraw, unsigned char **data, int *size) { char cmd, ppmheader[100]; int size_pic, width_pic, height_pic; int size_thumb, width_thumb, height_thumb; int height, width, outsize, result, pmmhdr_len; int compression_type; unsigned char *outdata; /* Get the size of the picture */ CHECK_RESULT (pdc640_picinfo (camera->port, n, &size_pic, &width_pic, &height_pic, &size_thumb, &width_thumb, &height_thumb, &compression_type)); /* Evaluate parameters */ if (thumbnail) { GP_DEBUG ("Size %d, width %d, height %d, comptype %d", size_thumb, width_thumb, height_thumb, (compression_type>>2) & 3); *size = size_thumb; width = width_thumb; height = height_thumb; if ((compression_type >> 2) & 3) cmd = 0x02; else cmd = 0x03; } else { GP_DEBUG ("Size %d, width %d, height %d, comptype %d", size_pic, width_pic, height_pic, compression_type & 3); *size = size_pic; width = width_pic; height = height_pic; switch (compression_type & 3) { case 1: case 2: cmd = 0x10; /* delta compressed */ break; case 0: cmd = 0x00; /* uncompressed */ break; default: /* unknown compression type */ GP_DEBUG ("Unknown compression type %d", compression_type & 3); return (GP_ERROR_CORRUPTED_DATA); } } /* Sanity check */ if ((*size <= 0) || (width <= 0) || (height <= 0)) return (GP_ERROR_CORRUPTED_DATA); /* Allocate the memory, including 64byte align */ *data = malloc ((*size + 64) * sizeof (char)); if (!*data) return (GP_ERROR_NO_MEMORY); /* Get the raw picture */ CHECK_RESULT (pdc640_setpic (camera->port, n)); CHECK_RESULT (pdc640_transmit_pic (camera->port, cmd, width, thumbnail, *data, *size)); if (thumbnail || (compression_type == 0 )) { /* Process uncompressed data */ CHECK_RESULT (pdc640_processtn (width, height, data, *size)); } else if (compression_type & 3) { /* Image data is delta encoded so decode it */ CHECK_RESULT (pdc640_deltadecode (width, height, data, size)); } /* Just wanted the raw camera data */ if (justraw) return(GP_OK); GP_DEBUG ("Bayer decode..."); sprintf (ppmheader, "P6\n" "# CREATOR: gphoto2, pdc640/jd350e library\n" "%d %d\n" "255\n", width, height); /* Allocate memory for Interpolated ppm image */ pmmhdr_len = strlen(ppmheader); outsize = width * height * 3 + pmmhdr_len + 1; outdata = malloc(outsize); if (!outdata) return (GP_ERROR_NO_MEMORY); /* Set header */ strcpy((char *)outdata, ppmheader); /* Decode and interpolate the Bayer Mask */ result = gp_bayer_decode(*data, width, height, &outdata[pmmhdr_len], camera->pl->bayer_tile ); if (result < 0) { free (outdata); return (result); } /* Call a specific postprocessor if available*/ if( camera->pl->postprocessor ){ result = camera->pl->postprocessor(width,height,&outdata[pmmhdr_len]); if (result < 0) { free (outdata); return (result); } } /* Fix up data pointers */ free (*data); *data = outdata; *size = outsize; return (GP_OK); } static int pdc640_delpic (GPPort *port) { unsigned char cmd[2] = {0x59, 0x01}; CHECK_RESULT (pdc640_transmit (port, cmd, 2, NULL, 0)); return (GP_OK); } static int pdc640_takepic (GPPort *port) { unsigned char cmd[2] = {0x2D, 0x00}; CHECK_RESULT (pdc640_transmit (port, cmd, 2, NULL, 0)); return (GP_OK); } int camera_id (CameraText *id) { strcpy (id->text, "pdc640/jd350e"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].model; i++) { memset(&a, 0, sizeof(a)); strcpy (a.model, models[i].model); if (models[i].vendor) { a.status = GP_DRIVER_STATUS_TESTING; a.port = GP_PORT_USB | GP_PORT_SERIAL; a.usb_vendor = models[i].vendor; a.usb_product = models[i].product; a.speed[0] = 0; } else { a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_SERIAL; a.speed[0] = 0; } a.operations = GP_OPERATION_CAPTURE_IMAGE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; CHECK_RESULT (gp_abilities_list_append (list, a)); } return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int n, size; unsigned char *data; /* * Get the number of the picture from the filesystem and increment * since we need a range starting with 1. */ CHECK_RESULT (n = gp_filesystem_number (camera->fs, folder, filename, context)); n++; /* Get the picture */ switch (type) { case GP_FILE_TYPE_NORMAL: CHECK_RESULT (pdc640_getpic (camera, n, 0, 0, &data, &size)); CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_PPM)); break; case GP_FILE_TYPE_RAW: CHECK_RESULT (pdc640_getpic (camera, n, 0, 1, &data, &size)); CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_RAW)); break; case GP_FILE_TYPE_PREVIEW: CHECK_RESULT (pdc640_getpic (camera, n, 1, 0, &data, &size)); CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_PPM)); break; default: return (GP_ERROR_NOT_SUPPORTED); } CHECK_RESULT (gp_file_set_data_and_size (file, (char*)data, size)); return (GP_OK); } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { Camera *camera = data; unsigned char cmd[2] = {0x59, 0x00}; CHECK_RESULT (pdc640_transmit (camera->port, cmd, 2, NULL, 0)); return (GP_OK); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *file, void *data, GPContext *context) { Camera *camera = data; int n, count; /* We can only delete the last picture */ CHECK_RESULT (n = gp_filesystem_number (camera->fs, folder, file, context)); n++; CHECK_RESULT (pdc640_caminfo (camera->port, &count)); if (count != n) return (GP_ERROR_NOT_SUPPORTED); CHECK_RESULT (pdc640_delpic (camera->port)); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Download program for GrandTek 98x based cameras. " "Originally written by Chris Byrne , " "and adapted for gphoto2 by Lutz Mueller " "." "Protocol enhancements and postprocessing " "for Jenoptik JD350e by Michael Trawny " ". " "Bugfixes by Marcus Meissner .")); return (GP_OK); } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { int num, numpic; if (type != GP_CAPTURE_IMAGE) return (GP_ERROR_NOT_SUPPORTED); /* First get the current number of images */ CHECK_RESULT (pdc640_caminfo (camera->port, &numpic)); /* Take a picture */ CHECK_RESULT (pdc640_takepic (camera->port)); /* Wait a bit for the camera */ sleep(4); /* Picture will be the last one in the camera */ CHECK_RESULT (pdc640_caminfo (camera->port, &num)); if (num <= numpic) return (GP_ERROR); /* Set the filename */ sprintf (path->name, camera->pl->filespec, num); strcpy (path->folder, "/"); CHECK_RESULT (gp_filesystem_append (camera->fs, "/", path->name, context)); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { int n; Camera *camera = data; /* Fill the list */ CHECK_RESULT (pdc640_caminfo (camera->port, &n)); CHECK_RESULT (gp_list_populate (list, camera->pl->filespec, n)); return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int n, dummy; int size_pic, size_thumb; int width_pic, width_thumb, height_pic, height_thumb; CHECK_RESULT (n = gp_filesystem_number (fs, folder, file, context)); n++; CHECK_RESULT (pdc640_picinfo (camera->port, n, &size_pic, &width_pic, &height_pic, &size_thumb, &width_thumb, &height_thumb, &dummy )); info->file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT | GP_FILE_INFO_TYPE; info->file.width = width_pic; info->file.height = height_pic; /* info->file.size = size_pic; */ info->file.size = width_pic * height_pic * 3; strcpy (info->file.type, GP_MIME_PPM); info->preview.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT | GP_FILE_INFO_TYPE; info->preview.width = width_thumb; info->preview.height = height_thumb; info->preview.size = size_thumb * 3; strcpy (info->preview.type, GP_MIME_PPM); return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { if (camera->pl) { free (camera->pl); camera->pl = NULL; } return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .del_file_func = delete_file_func, .delete_all_func = delete_all_func, }; int camera_init (Camera *camera, GPContext *context) { int result, i; GPPortSettings settings; CameraAbilities abilities; /* * First of all, tell gphoto2 about the functions we * implement (especially camera_exit so that everything * gets correctly cleaned up even in case of error). */ camera->functions->about = camera_about; camera->functions->capture = camera_capture; camera->functions->exit = camera_exit; CHECK_RESULT (gp_camera_get_abilities(camera,&abilities) ); camera->pl = 0; for( i=0; models[i].model; i++ ){ if (!strcmp(models[i].model, abilities.model)) { GP_DEBUG ("Model: %s", abilities.model); camera->pl = malloc( sizeof(struct _CameraPrivateLibrary) ); if( camera->pl ){ *(camera->pl) = models[i].pl; break; } else{ return (GP_ERROR_NO_MEMORY); } } } if( ! camera->pl ){ return (GP_ERROR_NOT_SUPPORTED); } /* Tell the filesystem where to get lists and info */ CHECK_RESULT (gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera)); if (camera->port->type == GP_PORT_SERIAL) { /* Open the port */ CHECK_RESULT (gp_port_get_settings (camera->port, &settings)); settings.serial.speed = 9600; CHECK_RESULT (gp_port_set_settings (camera->port, settings)); /* Start with a low timeout (so we don't have to wait if already initialized) */ CHECK_RESULT (gp_port_set_timeout (camera->port, 1000)); /* Is the camera at 9600? */ result = pdc640_ping_low (camera->port); if (result == GP_OK) CHECK_RESULT (pdc640_speed (camera->port, 115200)); /* Switch to 115200 */ settings.serial.speed = 115200; CHECK_RESULT (gp_port_set_settings (camera->port, settings)); /* Is the camera at 115200? */ CHECK_RESULT (pdc640_ping_high (camera->port)); /* Switch to a higher timeout */ CHECK_RESULT (gp_port_set_timeout (camera->port, 5000)); } return (GP_OK); } static int flip_both (int width, int height, unsigned char *rgb) { unsigned char *end, c; end = rgb + ((width * height) * 3); while (rgb < end) { c = *rgb; *rgb++ = *--end; *end = c; } return GP_OK; } static int flip_vertical (int width, int height, unsigned char* rgb) { int i; unsigned char *buf; buf = malloc(width*3); if (!buf) return GP_ERROR_NO_MEMORY; for (i=0;i * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ static unsigned jd350e_blue_curve [] = { 0, 2, 5, 7, 10, 13, 15, 18, 21, 22, 25, 28, 31, 34, 36, 39, 41, 45, 47, 51, 53, 56, 58, 62, 64, 67, 69, 72, 74, 77, 79, 81, 84, 86, 89, 92, 95, 99, 102, 107, 110, 113, 116, 119, 121, 122, 124, 125, 127, 129, 131, 133, 136, 139, 141, 144, 147, 149, 151, 154, 156, 159, 161, 164, 166, 168, 170, 173, 175, 177, 180, 182, 184, 187, 189, 192, 194, 196, 198, 201, 203, 206, 208, 211, 213, 215, 217, 219, 220, 220, 220, 220, 221, 221, 221, 221, 221, 222, 222, 222, 222, 223, 223, 223, 223, 223, 224, 224, 224, 224, 224, 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 228, 228, 228, 228, 229, 229, 229, 229, 229, 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, 232, 232, 232, 232, 232, 233, 233, 233, 233, 234, 234, 234, 234, 234, 235, 235, 235, 235, 235, 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, 238, 238, 238, 238, 239, 239, 239, 239, 239, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 242, 242, 242, 242, 242, 243, 243, 243, 243, 243, 244, 244, 244, 244, 245, 245, 245, 245, 245, 246, 246, 246, 246, 246, 247, 247, 247, 247, 247, 248, 248, 248, 248, 248, 249, 249, 249, 249, 250, 250, 250, 250, 250, 251, 251, 251, 251, 251, 252, 252, 252, 252, 252, 253, 253, 253, 253, 253, 254, 254, 254, 254, 255}; libgphoto2-2.5.9/camlibs/polaroid/gt98x.html0000644000175000001440000001132112557123324015613 00000000000000This document describes the protocol used by the Grandtek/Grandtech 980, 981,and 9811 chips, supported by the pdc640 driver.

The chip is serial and USB capable, some cameras have only serial connections, some have only USB connections.

This document describes the USB communication.

The USB command is at most 3 bytes long: A B C and is converted into an USB control message:
0xc0 0x10 <A> <B> <C> <checksum> 0x40

The checksum is calculated by:
(A^0x34)+(B^0xcb)+(C^0x67)+0x14f;

All commands return 8 byte of control data, which contains A at the start of it.

Name Structure Arguments Result buffer
READ VERSION 0x05 x x arguments are unspecified
  1. 0x05 (echo)
  2. hardware version
  3. firmware version
SELECT PICTURE TYPE 0x61 type 0 0 type can be:
  • 0x20: GET CALIBRATION PARAM
  • ...FIXME: Marcus fill in ...
This is followed by a SEND DRAM command and a bulkread usually, depending on type.
NEW BAUD 0x69 baudcode baudcode:
  1. 2400
  2. 3600
  3. 4800
  4. 7200
  5. 9600
  6. 14400
  7. 19200
  8. 28800
  9. 38400
  10. 57600
  11. 76800
  12. 115200
  13. 153600
  14. 230400
  15. 307200
  16. 460800
Set baudrate. Only useful for serial I guess.
AT 0x41 0x00 0x00 0x00 Appears to be some kind of ping command.
SELECT PICTURE 0xf6 picnum 0x00 0x00 picnum is the picture number, starting with 0. Selects the specified picture. At offset 7 of the return buffer is the new picture.
SICE DOWNLOAD 0xf2 lsb msb lsb/msb is the size? offset? of the uploaded firmware. Function unclear.
QUERY STORAGE FULL 0x92 Storage card is:
1: Full, otherwise: Empty.
SEND PARAMETER 0xf8 lsb msb lsb/msb is the size. This is followed by a USB bulk write. Unclear.
WRITE REG 0x81 reg val Sets register reg to value val See pseudo function below.
READ REG 0xf9 reg Reads register reg 1: return value (1 byte)
SIMSCANNER 0x86 0 0 0 Only for serial. Whatever it does.
DUAL CAPTURE 0x87 0 0: echo (0x87) 1..4: some values.
PUSH BUTTON 0xfd 0 0 0: echo (0xfd) 1: reply value.
SNAP 0x2d 0: echo (0xfd) 1: reply value.
WAIT EXPOSURE 0x93 0: echo (0xfd) 1: return value. Wait for 1.
SEND DRAM 0x15 lsb1 msb1 lsb2 msb2 Followed by bulk read. parameters are a bit unclear.
LOCK SNAP 0x90
FREE SNAP 0x91
RS232 INIT 0x01 Serial only I guess.
ERASE IMAGE 0x59 x With x:
  1. Delete all images.
  2. Delete the last image.
NORMAL EXIT 0xfc
88 Command 0x88


void
DOWNLOAD_DATA(type, buffer, size) {
	SELECT_PICTURE_TYPE(type);
	SEND_DRAM(buffer, size);
}

/* Unclear why and how used */
void
SEND_USER_COMMAND(cmd, inputbuffer, inputsize, outputbuffer, outputsize) {
	SEND_PARAMETER(&cmd, 1);
	if (inputbuffer && inputsize) {
		SEND_PARAMETER(inputbuffer, inputsize);
	}
	if (outputbuffer && outputsize) {
		SEND_PARAMETER(&outputsize, 4);
		DOWNLOAD_DATA(0x21, outputbuffer, outputsize);
	}
}

void
WRITE_REG_Command(byte reg, byte val, int porttype) {
	// strangely different between USB/SERIAL
	if (porttype == USB) {
		byte buf[2];
		buf[0] = reg;
		buf[1] = val;
		SEND_PARAMETERk(buf, 2);
	} else {
		call_driver(0x81, reg, val);
	}
}

void
take_picture(int checkstoragefull, int locksnapflag, int waitforexpflag) {
	byte val;

	if (checkstoragefull) QUERY_STORAGE_FULL():
	if (locksnapflag) LOCK_SNAP();
	SNAP();
	if (waitforexpflag) {
		do {
			Sleep(500);
			WAIT_EXPOSURE(&val);
		} while (val != 1);
	}
	if (locksnapflag) FREE_SNAP();
}
libgphoto2-2.5.9/camlibs/polaroid/Makefile-files0000644000175000001440000000172612561423351016510 00000000000000EXTRA_DIST += polaroid/jpeg.txt polaroid/jpeghead.h \ polaroid/pdc320.html polaroid/gt98x.html polaroid/ChangeLog EXTRA_LTLIBRARIES += polaroid_pdc320.la polaroid_pdc320_la_SOURCES = polaroid/pdc320.c polaroid/pdc320.h polaroid_pdc320_la_LDFLAGS = $(camlib_ldflags) polaroid_pdc320_la_DEPENDENCIES = $(camlib_dependencies) polaroid_pdc320_la_LIBADD = $(camlib_libadd) EXTRA_LTLIBRARIES += polaroid_pdc640.la polaroid_pdc640_la_SOURCES = polaroid/pdc640.c \ polaroid/jd350e.h polaroid/jd350e.c \ polaroid/jd350e_red.h polaroid/jd350e_blue.h \ polaroid/dlink350f.c polaroid/dlink350f.h polaroid_pdc640_la_LDFLAGS = $(camlib_ldflags) polaroid_pdc640_la_DEPENDENCIES = $(camlib_dependencies) polaroid_pdc640_la_LIBADD = $(camlib_libadd) EXTRA_LTLIBRARIES += polaroid_pdc700.la polaroid_pdc700_la_SOURCES = polaroid/pdc700.c polaroid_pdc700_la_LDFLAGS = $(camlib_ldflags) polaroid_pdc700_la_DEPENDENCIES = $(camlib_dependencies) polaroid_pdc700_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/polaroid/jpeg.txt0000644000175000001440000001047512557123324015441 00000000000000This should help understand jpeg headers. Warning: I don't understand the jpeg headers or jpegs that well! Oh well, I will try to explain here anyway. Jpeg markers in general: ------------ 0xFF marker# lenth(2 bytes) data length is the size of the information after the 0xFF XX Quantization tables: ------------------- 0xFF 0xDB 0x00 length tables Funny.....for what I have the data is all 0x01's. I guess there is a precision number in there somewhere, but I don't know. For what I have, both quantization tables are precision 0. Precision 1 will not be used by us. We need precision 0. Jpeg's have two tables. Table 0 should be luminance and table 1 should be chrominance. Start of Frame 0: ---------------- 0xFF 0xC0 0x00 length bits-per-pixel 0x00 height(2 bytes) width(2 bytes) #_of_components sets(1 or 3 of them) A set would be component# v/h quantization-table-number. The v/h is the vertical to horizontal compression ratio. I misplaced some info I had on the components here. There are a couple of formats that the data could be in. The 3 component ones are YCbCr and CMY. The 4 component ones are YCbCrK and CMYK. The #_of_components is set to 3 or 4 accordingly. The component# can be something like 0 through 5 The component# would refer to Y, Cb, Cr, C, M, or K 1=Y, 2=Cb, 3=Cr, but I forget what C, M and K are. Huffman tables: -------------- 0xFF 0xC4 0x00 length ACorDC bits(16 bytes) Huffman_values length is the size of that huffman table (you don't count the FFCO) Repeat until length is exhausted (usually 4 Huffman tables): If ACorDC>=0x10 it is an AC table, otherwise, it is a DC table The length of the Huffman_values is the sum of the previous 16 bytes Ending piece of header (I have no clue what to call it): ------------------------------------------------------- 0xFF 0xDA length(2 bytes) #_of_components(1 byte) sets Ss Se Ah Al Ss and Se, I guess are each one byte. I guess Ah and Al are one byte total. The sets are: component#(1 byte) DC+ACtable#'s For DC+ACtable#'s, the high nibble is DC table# and the low nibble is AC table# # Quantization tables given in JPEG spec, section K.1 # This is table 0 (the luminance table): 16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99 # This is table 1 (the chrominance table): 17 18 24 47 99 99 99 99 18 21 26 66 99 99 99 99 24 26 56 99 99 99 99 99 47 66 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 Those are not in the order that it appears in the jpeg. Those two tables are accessed in this order: 1 3 4 10 11 21 22 36 2 5 9 12 20 23 35 37 6 8 13 19 24 34 38 49 7 14 18 25 33 39 48 50 15 17 26 32 40 47 51 58 16 27 31 41 46 52 57 59 28 30 42 45 53 56 60 63 29 43 44 54 55 61 62 64 Comparing the before and after of putting a really high and out of place number in the table will help you locate bad spots in the table. It will make an obvious distortion in the image. Use this technique to find the table entry that affects the pixels that are distorted and then decrease the difference between that table entry and the ones around it (look at the order table). The greater the difference between the numbers in the table, the greater the contrast or annoying shadow. Smaller differences will create smoother transitions between pixels. A table entry of 0 will make the table result be 0. Consider the quantization table as a multiplier table. For every dot in every 8x8 block of the picture, the input is multiplied by the corresponding value in the quantization table. Therefore, you can probably find out what quantization table entry needs to be changed by looking at its coordinates. Keep in mind that different compression ratios are used for different cameras though, so this might not work the same way for all cameras. If you use a bunch of 1's in the tables, you will probably come up with a very dull image. libgphoto2-2.5.9/camlibs/polaroid/ChangeLog0000644000175000001440000001031112557123324015512 000000000000002005-04-09 Marcus Meissner * pdc320.c: Check for both : and non : names in model detection. 2004-01-08 Marcus Meissner From Mark Slemko * dlink350f.c, dlink350f.h, pdc640.c: Orientation, byte order, and brightness correction for the D-Link 350F 2004-01-04 Marcus Meissner * pdc640.c: Use different names for Skanhex SX-35, or the lower level gets confused. 2003-12-28 Lutz Mueller * pdc640.c: Martin Sarfy reports that his camera (Trust 350FT PowerC@m FLASH, 0x6d6:0x2d) works using the driver for 0x6d6:0x2e. 2003-09-15 Marcus Meissner Reported by Andreas Kies: * pdc640.c: Remove :, since ability.mode again contains names without :, or we do not find our cameras. Use flip_both for UMAX AstraPix. 2003-05-15 Lutz Mueller Patch by Drew Sullivan : * pdc640.c: Correctly post-process images taken by a SiPix:Stylecam. 2003-05-13 Marcus Meissner * pdc640.c, jd350e.c, jd350e.h: Applied Trustcam 350FS fix from Hans de Goede 2003-04-26 Marcus Meissner * pdc640.c: compression type 1 appears to be just like compression type 2, at least for the SiPix Stylecam. 2003-04-17 Marcus Meissner * pdc640.c: Added SiPix StyleCam (0x0d64/0x1001), UMAX AstraPix 320s (same) and DLINK DSC-350F (0xd64/0x1021). 2003-03-02 Marcus Meissner * pdc640.c,jd350e.[ch]: Meade binocs need filter and flip vertical. Renamed rotate180 to flip_vertical. 2003-02-25 Marcus Meissner * pdc320.c,h: Rewritten the command/reply handling to a large degree after reverse engineering the windows driver. * pdc320.html: Started documenting the command structure. 2003-02-18 Marcus Meissner * pdc640.c: Added ScopeCam (www.meade.com). 2003-02-04 Marcus Meissner * pdc640.c: Skanhex-SX 35 IDs added, USB id for JD350 entrance added (from Joerg Hackenberg). 2003-01-30 Marcus Meissner * pdc640.c: Added support for Typhoon Stylocam, required some stability fixes for the USB communication. 2003-01-14 Marcus Meissner * pdc320.c, pdc640.c, pdc700.c: Translate some strings. 2002-11-17 Marcus Meissner * pdc700.c: Do not cast bween time_t* and int*. 2002-10-03 Lutz Müller * Makefile.am: -I$(top_builddir)/libgphoto2 2002-09-15 Marcus Meissner * pdc640.c: Added Jenoptik JD350v(ideo) USB support. 2002-03-22 Lutz Müller Patch by Andrea Suatoni : * pdc640.c: IRIX fixes. 2002-03-19 Greg Ingram * pdc700.c: Added pdc700_set_date() which appears to work. Is the date widget working completely? Added the ability to select image size (resolution). The configuration dialog was getting rather too tall so I split it up onto three sections (tabs). * pdc700.c: Fix off-by-one thinko in get_config where the camera's month datum is one-based but tm.tm_mon is zero-based. 2002-01-15 Lutz Müller * pdc700.c: Introduced a bug in last fix... 2002-01-15 Lutz Müller * pdc700.c: When status is PDC_STATUS_FAIL, the camera will only send the checksum, nothing else. 2002-01-13 Lutz Müller * pdc700.c: Remove references to gp_camera_set_error. 2002-01-09 Dan Fandrich * jd350e.c: Added definitions of MIN and MAX 2001-12-05 Lutz Müller * pdc640.c: Includes again :-) 2001-12-05 Lutz Müller * pdc320.h * pdc640.c: Still fixing includes 2001-12-05 Lutz Müller * pdc640.c: Fix includes. 2001-11-28 Lutz Müller * pdc700.c: Rename PDC700_FIRST into PDC700_FAIL. Try to implement some error recovery strategy. libgphoto2-2.5.9/camlibs/polaroid/pdc700.c0000644000175000001440000007534012610415536015115 00000000000000/* pdc700.c * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE "pdc700" #define PDC700_INIT 0x01 #define PDC700_INFO 0x02 #define PDC700_CONFIG 0x03 #define PDC700_BAUD 0x04 #define PDC700_PICINFO 0x05 #define PDC700_THUMB 0x06 #define PDC700_PIC 0x07 #define PDC700_DEL 0x09 #define PDC700_CAPTURE 0x0a #define RETRIES 5 enum _PDCStatus { PDC_STATUS_FAIL = 0x00, PDC_STATUS_DONE = 0x01, PDC_STATUS_LAST = 0x02 }; typedef enum _PDCStatus PDCStatus; enum _PDCConf { PDC_CONF_FLASH = 0x00, PDC_CONF_TIMER = 0x01, PDC_CONF_CAPTION = 0x02, PDC_CONF_LCD = 0x03, PDC_CONF_QUALITY = 0x04, PDC_CONF_TIME = 0x05, PDC_CONF_POWEROFF = 0x06, PDC_CONF_SIZE = 0x07 /* I think we have them all... 8 and 9 return failure */ }; typedef enum _PDCConf PDCConf; enum _PDCBaud { PDC_BAUD_9600 = 0x00, PDC_BAUD_19200 = 0x01, PDC_BAUD_38400 = 0x02, PDC_BAUD_57600 = 0x03, PDC_BAUD_115200 = 0x04 }; typedef enum _PDCBaud PDCBaud; enum _PDCBool { PDC_BOOL_OFF = 0, PDC_BOOL_ON = 1 }; typedef enum _PDCBool PDCBool; typedef struct _PDCDate PDCDate; struct _PDCDate { /* * v2.45: Years since 1980 * V3.10: Years since 2000 */ unsigned char year, month, day; unsigned char hour, minute, second; }; enum _PDCMode { PDC_MODE_PLAY = 0, PDC_MODE_RECORD = 1, PDC_MODE_MENU = 2 }; typedef enum _PDCMode PDCMode; enum _PDCQuality { PDC_QUALITY_NORMAL = 0, PDC_QUALITY_FINE = 1, PDC_QUALITY_SUPERFINE = 2 }; typedef enum _PDCQuality PDCQuality; enum _PDCSize { PDC_SIZE_VGA = 0, PDC_SIZE_XGA = 1, }; typedef enum _PDCSize PDCSize; enum _PDCFlash { PDC_FLASH_AUTO = 0, PDC_FLASH_ON = 1, PDC_FLASH_OFF = 2 }; typedef enum _PDCFlash PDCFlash; typedef struct _PDCInfo PDCInfo; struct _PDCInfo { unsigned int num_taken, num_free; unsigned char auto_poweroff; char version[6]; unsigned char memory; PDCDate date; PDCMode mode; PDCQuality quality; PDCSize size; PDCFlash flash; PDCBaud speed; PDCBool caption, timer, lcd, ac_power; }; typedef struct _PDCPicInfo PDCPicInfo; struct _PDCPicInfo { char version[6]; unsigned int pic_size, thumb_size; unsigned char flash; }; #define IMAGE_QUALITY _("Image Quality") #define IMAGE_SIZE _("Image Size") #define FLASH_SETTING _("Flash Setting") #define LCD_STATE _("LCD") #define SELF_TIMER _("Self Timer") #define AUTO_POWEROFF _("Auto Power Off (minutes)") #define SHOW_CAPTIONS _("Information") static const char *quality[] = {N_("normal"), N_("fine"), N_("superfine"), NULL}; static const char *flash[] = {N_("auto"), N_("on"), N_("off"), NULL}; static const char *bool[] = {N_("off"), N_("on"), NULL}; static const char *mode[] = {N_("play"), N_("record"), N_("menu"), NULL}; static const char *power[] = {N_("battery"), N_("a/c adaptor"), NULL}; /* no real need to translate those ... */ static const char *speed[] = {"9600", "19200", "38400", "57600", "115200", NULL}; static const char *size[] = {"VGA (640x480)", "XGA (1024x768", NULL}; #define CR(result) {int __r=(result);if(__r<0) return (__r);} #define CRF(result,d) {int r=(result);if(r<0) {free(d);return(r);}} #define PDC_EPOCH(info) ((!strcmp ((info)->version, "v2.45")) ? 1980 : 2000) /* * Every command sent to the camera begins with 0x40 followed by two bytes * indicating the number of following bytes. Then follows the byte that * indicates the command (see above defines), perhaps some parameters. The * last byte is the checksum, the sum of all bytes between length bytes * (3rd one) and the last one (checksum). */ static int calc_checksum (unsigned char *cmd, unsigned int len) { int i; unsigned char checksum; for (checksum = 0, i = 0; i < len; i++) checksum += cmd[i]; return (checksum); } static int pdc700_send (Camera *camera, unsigned char *cmd, unsigned int cmd_len) { /* Finish the command and send it */ cmd[0] = 0x40; cmd[1] = (cmd_len - 3) >> 8; cmd[2] = (cmd_len - 3) & 0xff; cmd[cmd_len - 1] = calc_checksum (cmd + 3, cmd_len - 1 - 3); CR (gp_port_write (camera->port, (char *)cmd, cmd_len)); return (GP_OK); } static int pdc700_read (Camera *camera, unsigned char *cmd, unsigned char *b, unsigned int *b_len, PDCStatus *status, unsigned char *sequence_number, GPContext *context) { unsigned char header[3], checksum; unsigned int i; /* * Read the header (0x40 plus 2 bytes indicating how many bytes * will follow) */ CR (gp_port_read (camera->port, (char *)header, 3)); if (header[0] != 0x40) { gp_context_error (context, _("Received unexpected " "header (%i)"), header[0]); return (GP_ERROR_CORRUPTED_DATA); } *b_len = (header[2] << 8) | header [1]; /* Read the remaining bytes */ CR (gp_port_read (camera->port, (char *)b, *b_len)); /* * The first byte indicates if this the response for our command. */ if (b[0] != (0x80 | cmd[3])) { gp_context_error (context, _("Received unexpected response")); return (GP_ERROR_CORRUPTED_DATA); } /* Will other packets follow? Has the transaction been successful? */ *status = b[1]; /* * If everything went ok and if we are downloading a picture or * thumbnail, we got a sequence number (number of next packet). */ if ((*status != PDC_STATUS_FAIL) && ((cmd[3] == PDC700_THUMB) || (cmd[3] == PDC700_PIC))) *sequence_number = b[2]; else sequence_number = NULL; /* Check the checksum */ for (checksum = i = 0; i < *b_len - 1; i++) checksum += b[i]; if (checksum != b[*b_len - 1]) { gp_context_error (context, _("Checksum error")); return (GP_ERROR_CORRUPTED_DATA); } /* Preserve only the actual data */ *b_len -= (sequence_number ? 4 : 3); memmove (b, b + (sequence_number ? 3 : 2), *b_len); return (GP_OK); } static int pdc700_transmit (Camera *camera, unsigned char *cmd, unsigned int cmd_len, unsigned char *buf, unsigned int *buf_len, GPContext *context) { unsigned char b[2048], n; unsigned int b_len, r; unsigned int target = *buf_len, id; int result; PDCStatus status; status = PDC_STATUS_DONE; for (r = 0; r < RETRIES; r++) { if (status == PDC_STATUS_FAIL) GP_DEBUG ("Retrying (%i)...", r); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return GP_ERROR_CANCEL; CR (pdc700_send (camera, cmd, cmd_len)); CR (pdc700_read (camera, cmd, b, &b_len, &status, &n, context)); if (status != PDC_STATUS_FAIL) break; } if (status == PDC_STATUS_FAIL) { gp_context_error (context, _("The camera did not accept the " "command.")); return (GP_ERROR); } /* Copy over the data */ *buf_len = b_len; memcpy (buf, b, b_len); /* * Other packets will follow only in case of PDC700_THUMB or * PDC700_PIC. */ if ((cmd[3] == PDC700_THUMB) || (cmd[3] == PDC700_PIC)) { /* Get those other packets */ r = 0; id = gp_context_progress_start (context, target, _("Downloading...")); while ((status != PDC_STATUS_LAST) && (r < RETRIES)) { GP_DEBUG ("Fetching sequence %i...", n); cmd[4] = status; cmd[5] = n; CR (pdc700_send (camera, cmd, 7)); /* Read data. */ result = pdc700_read (camera, cmd, b, &b_len, &status, &n, context); /* Did libgphoto2(_port) report an error? */ if (result < 0) { GP_DEBUG ("Read failed ('%s'). Trying again.", gp_result_as_string (result)); r++; continue; } /* Did the camera report an error? */ if (status == PDC_STATUS_FAIL) { GP_DEBUG ("Read failed: camera reported " "failure. Trying again."); r++; continue; } /* Read succeeded. Reset error counter */ r = 0; /* * Sanity check: We should never read more bytes than * targeted */ if (*buf_len + b_len > target) { gp_context_error (context, _("The camera " "sent more bytes than expected (%i)"), target); return (GP_ERROR_CORRUPTED_DATA); } /* Copy over the data */ memcpy (buf + *buf_len, b, b_len); *buf_len += b_len; /* * Update the progress bar and check for * cancellation. */ gp_context_progress_update (context, id, *buf_len); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { cmd[4] = PDC_STATUS_LAST; cmd[5] = n; CR (pdc700_send (camera, cmd, 7)); return (GP_ERROR_CANCEL); } } /* Check if anything went wrong */ if (status != PDC_STATUS_LAST) return (GP_ERROR_CORRUPTED_DATA); /* Acknowledge last packet */ cmd[4] = PDC_STATUS_LAST; cmd[5] = n; CR (pdc700_send (camera, cmd, 7)); gp_context_progress_stop (context, id); } return (GP_OK); } static int pdc700_baud (Camera *camera, int baud, GPContext *context) { unsigned char cmd[6]; unsigned char buf[2048]; unsigned int buf_len = 0; cmd[3] = PDC700_BAUD; switch (baud) { case 115200: cmd[4] = PDC_BAUD_115200; break; case 57600: cmd[4] = PDC_BAUD_57600; break; case 38400: cmd[4] = PDC_BAUD_38400; break; case 19200: cmd[4] = PDC_BAUD_19200; break; case 9600: cmd[4] = PDC_BAUD_9600; break; default: return (GP_ERROR_IO_SERIAL_SPEED); } CR (pdc700_transmit (camera, cmd, 6, buf, &buf_len, context)); return (GP_OK); } static int pdc700_init (Camera *camera, GPContext *context) { unsigned int buf_len = 0; unsigned char cmd[5]; unsigned char buf[2048]; cmd[3] = PDC700_INIT; CR (pdc700_transmit (camera, cmd, 5, buf, &buf_len, context)); return (GP_OK); } static int pdc700_picinfo (Camera *camera, unsigned int n, PDCPicInfo *info, GPContext *context) { unsigned int buf_len = 0; unsigned char cmd[7]; unsigned char buf[2048]; GP_DEBUG ("Getting info about picture %i...", n); cmd[3] = PDC700_PICINFO; cmd[4] = n; cmd[5] = n >> 8; CR (pdc700_transmit (camera, cmd, 7, buf, &buf_len, context)); /* We don't know about the meaning of buf[0-1] */ /* Check if this information is about the right picture */ if (n != (buf[2] | (buf[3] << 8))) { gp_context_error (context, _("Requested information about " "picture %i (= 0x%x), but got information about " "picture %i back"), n, cmd[4] | (cmd[5] << 8), buf[2] | (buf[3] << 8)); return (GP_ERROR_CORRUPTED_DATA); } /* Picture size */ info->pic_size = buf[4] | (buf[5] << 8) | (buf[6] << 16) | (buf[7] << 24); GP_DEBUG ("Size of picture: %i", info->pic_size); /* Flash used? */ info->flash = buf[8]; GP_DEBUG ("This picture has been taken with%s flash.", buf[8] ? "" : "out"); /* The meaning of buf[9-17] is unknown */ /* Thumbnail size */ info->thumb_size = buf[18] | (buf[19] << 8) | (buf[20] << 16) | (buf[21] << 24); GP_DEBUG ("Size of thumbnail: %i", info->thumb_size); /* The meaning of buf[22] is unknown */ /* Version info */ strncpy (info->version, (char *)&buf[23], 6); /* * Now follows some picture data we have yet to reverse * engineer (buf[24-63]). */ return (GP_OK); } static int pdc700_config (Camera *camera, PDCConf conf, unsigned char value, GPContext *context) { unsigned char cmd[12]; unsigned char buf[512]; unsigned int buf_len = 0; cmd[3] = PDC700_CONFIG; cmd[4] = conf; cmd[5] = value; CR (pdc700_transmit (camera, cmd, 12, buf, &buf_len, context)); return GP_OK; } static int pdc700_info (Camera *camera, PDCInfo *info, GPContext *context) { unsigned int buf_len = 0; unsigned char buf[2048]; unsigned char cmd[5]; cmd[3] = PDC700_INFO; CR (pdc700_transmit (camera, cmd, 5, buf, &buf_len, context)); /* * buf[0-1,3]: We don't know. The following has been seen: * 01 12 .. 01 * 01 20 .. 02 * 01 20 .. 02 */ info->memory = buf[2]; /* Power source state (make sure it's valid) */ info->ac_power = buf[4]; if (info->ac_power != 0 && info->ac_power != 1) { GP_DEBUG ("Unknown power source: %i", info->ac_power); info->ac_power = PDC_BOOL_OFF; } info->auto_poweroff = buf[5]; /* Mode (make sure we know it) */ info->mode = buf[6]; if (info->mode < 0 || info->mode > 2) { GP_DEBUG ("Unknown mode setting: %i", info->mode); /* record mode is the power-on default -gi */ info->mode = PDC_MODE_RECORD; } /* Flash (make sure we know it) */ info->flash = buf[7]; if (info->flash < 0 || info->flash > 2) { GP_DEBUG ("Unknown flash setting: %i", info->flash); info->flash = PDC_FLASH_AUTO; } /* Protocol version */ strncpy (info->version, (char *)&buf[8], 6); /* buf[14-15]: We don't know. Seems to be always 00 00 */ /* Pictures */ info->num_taken = buf[16] | (buf[17] << 8); info->num_free = buf[18] | (buf[19] << 8); /* Date */ info->date.year = buf[20]; info->date.month = buf[21]; info->date.day = buf[22]; info->date.hour = buf[23]; info->date.minute = buf[24]; info->date.second = buf[25]; /* Speed (kind of bogus as we already know about it) */ info->speed = buf[26]; if (info->speed < 0 || info->speed > 4) { GP_DEBUG ("Unknown speed: %i", info->speed); info->speed = PDC_BAUD_9600; } /* Caption/Information state (make sure it's valid) */ info->caption = buf[27]; if (info->caption != 0 && info->caption != 1) { GP_DEBUG ("Unknown caption state: %i", info->caption); info->caption = PDC_BOOL_OFF; } /* * buf[28-31]: We don't know. Below are some samples: * * f8 b2 64 03 * * c6 03 86 28 * * 3a 7f 65 83 * * 23 25 66 83 */ /* Timer state (make sure it's valid) */ info->timer = buf[32]; if (info->timer != 0 && info->timer != 1) { GP_DEBUG ("Unknown timer state %i", info->timer); info->timer = PDC_BOOL_OFF; } /* LCD state (make sure it's valid) */ info->lcd = buf[33]; if (info->lcd != 0 && info->lcd != 1) { GP_DEBUG ("Unknown LCD state %i", info->lcd); info->lcd = PDC_BOOL_OFF; } /* Quality (make sure we know it) */ info->quality = buf[34]; if (info->quality < 0 || info->quality > 2) { GP_DEBUG ("Unknown quality: %i", info->quality); info->quality = PDC_QUALITY_NORMAL; } /* Here follow lots of 0s */ info->size = 0; return (GP_OK); } static int pdc700_set_date (Camera *camera, time_t time, GPContext *context) { unsigned char cmd[15]; unsigned char buf[512]; unsigned int buf_len = 0; struct tm *tm; PDCInfo info; CR (pdc700_info (camera, &info, context)); tm = localtime(&time); cmd[3] = PDC700_CONFIG; cmd[4] = PDC_CONF_TIME; cmd[5] = (tm->tm_year + 1900) - PDC_EPOCH(&info); cmd[6] = tm->tm_mon + 1; cmd[7] = tm->tm_mday; cmd[8] = tm->tm_hour; cmd[9] = tm->tm_min; cmd[10] = tm->tm_sec; CR (pdc700_transmit (camera, cmd, 12, buf, &buf_len, context)); return GP_OK; } static int pdc700_capture (Camera *camera, GPContext *context) { unsigned char cmd[5], buf[1024]; unsigned int buf_len = 0; int r = 0; int try; PDCInfo info; cmd[3] = PDC700_CAPTURE; cmd[4] = 0; CR (pdc700_transmit (camera, cmd, 5, buf, &buf_len, context)); /* * This is rather hackish. The camera needs a little time to recover * after taking a picture. I tried a general-purpose retry thing in * pdc_transmit, but that got in the way during initialization. So * I'm leaving this ugly-but-works junk here for now. */ for (try = 0; try < 10; try++) if ((r = pdc700_info(camera, &info, context)) == GP_OK) break; return r; }; static int pdc700_pic (Camera *camera, unsigned int n, unsigned char **data, unsigned int *size, unsigned char thumb, GPContext *context) { unsigned char cmd[8]; int r; PDCPicInfo info; /* Picture size? Allocate the memory */ CR (pdc700_picinfo (camera, n, &info, context)); *size = thumb ? info.thumb_size : info.pic_size; *data = malloc (sizeof (char) * *size); if (!*data) return (GP_ERROR_NO_MEMORY); /* Get picture data */ GP_DEBUG ("Getting picture %i...", n); cmd[3] = (thumb) ? PDC700_THUMB : PDC700_PIC; cmd[4] = 0; /* No idea what that byte is for */ cmd[5] = n; cmd[6] = n >> 8; r = pdc700_transmit (camera, cmd, 8, *data, size, context); if (r < 0) { free (*data); return (r); } return (GP_OK); } static int pdc700_delete (Camera *camera, unsigned int n, GPContext *context) { unsigned char cmd[6], buf[1024]; unsigned int buf_len = 0; cmd[3] = PDC700_DEL; cmd[4] = n; CR (pdc700_transmit (camera, cmd, 6, buf, &buf_len, context)); /* * We get three bytes back but don't know the meaning of those. * Perhaps some error codes with regard to read-only images? */ return (GP_OK); } int camera_id (CameraText *id) { strcpy (id->text, "Polaroid DC700"); return (GP_OK); } static struct { const char *model; unsigned short usb_vendor; unsigned short usb_product; } models[] = { {"Polaroid:DC700", 0x784, 0x2888}, {NULL, 0, 0} }; int camera_abilities (CameraAbilitiesList *list) { int i; CameraAbilities a; for (i = 0; models[i].model; i++) { memset(&a, 0, sizeof(a)); strcpy (a.model, models[i].model); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL | GP_PORT_USB; a.usb_vendor = models[i].usb_vendor; a.usb_product= models[i].usb_product; a.speed[0] = 9600; a.speed[1] = 19200; a.speed[2] = 38400; a.speed[3] = 57600; a.speed[4] = 115200; a.operations = GP_OPERATION_CAPTURE_IMAGE | GP_OPERATION_CONFIG; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_DELETE_ALL; CR (gp_abilities_list_append (list, a)); } return (GP_OK); } static void pdc700_expand (unsigned char *src, unsigned char *dst) { int Y, Y2, U, V; int x, y; for (y = 0; y < 60; y++) for (x = 0; x < 80; x += 2) { Y = (char) src[0]; Y += 128; U = (char) src[1]; U -= 0; Y2 = (char) src[2]; Y2 += 128; V = (char) src[3]; V -= 0; if ((Y > -16) && (Y < 16)) Y = 0; if ((Y2 > -16) && (Y2 < 16)) Y2 = 0; if ((U > -16) && (U < 16)) U = 0; if ((V > -16) && (V < 16)) V = 0; dst[0] = Y + (1.402000 * V); dst[1] = Y - (0.344136 * U) - (0.714136 * V); dst[2] = Y + (1.772000 * U); dst += 3; dst[0] = Y2 + (1.402000 * V); dst[1] = Y2 - (0.344136 * U) - (0.714136 * V); dst[2] = Y2 + (1.772000 * U); dst += 3; src += 4; } } static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { int count; char buf[1024]; CR (pdc700_capture (camera, context)); /* * We don't get any info back. However, we need to tell the * CameraFilesystem that there is one additional picture. */ CR (count = gp_filesystem_count (camera->fs, "/", context)); snprintf (buf, sizeof (buf), "PDC700%04i.jpg", count + 1); CR (gp_filesystem_append (camera->fs, "/", buf, context)); /* Now tell the frontend where to look for the image */ strncpy (path->folder, "/", sizeof (path->folder)); strncpy (path->name, buf, sizeof (path->name)); return (GP_OK); } static int del_file_func (CameraFilesystem *fs, const char *folder, const char *file, void *data, GPContext *context) { Camera *camera = data; int n; /* We need picture numbers starting with 1 */ CR (n = gp_filesystem_number (fs, folder, file, context)); n++; CR (pdc700_delete (camera, n, context)); return (GP_OK); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int n; unsigned int size; unsigned char *data = NULL; #if 0 if (type == GP_FILE_TYPE_RAW) return (GP_ERROR_NOT_SUPPORTED); #endif /* Get the number of the picture from the filesystem */ CR (n = gp_filesystem_number (camera->fs, folder, filename, context)); /* Get the file */ CR (pdc700_pic (camera, n + 1, &data, &size, (type == GP_FILE_TYPE_NORMAL) ? 0 : 1, context)); switch (type) { case GP_FILE_TYPE_NORMAL: /* Files are always JPEG */ CRF (gp_file_set_data_and_size (file, (char *)data, size), data); CR (gp_file_set_mime_type (file, GP_MIME_JPEG)); break; case GP_FILE_TYPE_PREVIEW: /* * Depending on the protocol version, we have different * encodings. */ if ((data[0] == 0xff) && (data[1] == 0xd8) && (data[size - 2] == 0xff) && (data[size - 1] == 0xd9)) { /* Image is JPEG */ CRF (gp_file_set_data_and_size (file, (char *)data, size), data); CR (gp_file_set_mime_type (file, GP_MIME_JPEG)); } else if (size == 9600) { const char header[] = "P6\n80 60\n255\n"; unsigned char *ppm; unsigned int ppm_size; /* * Image is a YUF 2:1:1 format: 4 bytes for each 2 * pixels. Y0 U0 Y1 V0 Y2 U2 Y3 V2 Y4 U4 Y5 V4 .... * So the first four bytes make up the first two * pixels. You use Y0, U0, V0 to get pixel0 then Y1, * U0, V0 to get pixel 2. Then onto the next 4-byte * sequence. */ ppm_size = size * 3 / 2; ppm = malloc (sizeof (char) * ppm_size); if (!ppm) { free (data); return (GP_ERROR_NO_MEMORY); } pdc700_expand (data, ppm); free (data); CRF (gp_file_append (file, header, strlen (header)), ppm); CRF (gp_file_append (file, (char *)ppm, ppm_size), ppm); free (ppm); CR (gp_file_set_mime_type (file, GP_MIME_PPM)); } else { free (data); gp_context_error (context, _("%i bytes of an " "unknown image format have been received. " "Please write to %s and ask for " "assistance."), size, MAIL_GPHOTO_DEVEL); return (GP_ERROR); } break; case GP_FILE_TYPE_RAW: #if 1 CRF (gp_file_set_data_and_size (file, (char *)data, size), data); CR (gp_file_set_mime_type (file, GP_MIME_RAW)); break; #endif default: free (data); return (GP_ERROR_NOT_SUPPORTED); } return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text, _("Download program for Polaroid DC700 camera. " "Originally written by Ryan Lantzer " " for gphoto-4.x. Adapted for gphoto2 by " "Lutz Mueller .")); return (GP_OK); } /* * We encapsulate the process of adding an entire radio control. */ static void add_radio (CameraWidget *section, const char *blurb, const char **opt, int selected) { CameraWidget *child; int i; gp_widget_new (GP_WIDGET_RADIO, blurb, &child); for (i = 0; opt[i]; i++) gp_widget_add_choice (child, opt[i]); gp_widget_set_value (child, (void *) opt[selected]); gp_widget_append (section, child); } static int camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) { CameraWidget *child; CameraWidget *section; float range; PDCInfo info; time_t time; struct tm tm; int xtime; CR (pdc700_info (camera, &info, context)); gp_widget_new (GP_WIDGET_WINDOW, _("Camera Configuration"), window); gp_widget_new (GP_WIDGET_SECTION, _("Camera"), §ion); gp_widget_append (*window, section); add_radio (section, LCD_STATE, bool, info.lcd); add_radio (section, SELF_TIMER, bool, info.timer); add_radio (section, SHOW_CAPTIONS, bool, info.caption); /* Auto poweroff */ gp_widget_new (GP_WIDGET_RANGE, AUTO_POWEROFF, &child); gp_widget_set_range (child, 1., 99., 1.); range = (float) info.auto_poweroff; gp_widget_set_value (child, &range); gp_widget_append (section, child); gp_widget_set_info (child, _("How long will it take until the " "camera powers off?")); gp_widget_new (GP_WIDGET_SECTION, _("Image"), §ion); gp_widget_append (*window, section); add_radio (section, IMAGE_QUALITY, quality, info.quality); add_radio (section, IMAGE_SIZE, size, info.size); add_radio (section, FLASH_SETTING, flash, info.flash); gp_widget_new (GP_WIDGET_SECTION, _("Date and Time"), §ion); gp_widget_append (*window, section); /* Date and time */ tm.tm_year = info.date.year + ((!strcmp (info.version, "v2.45")) ? 1980 : 2000) - 1900; tm.tm_mon = info.date.month - 1; tm.tm_mday = info.date.day; tm.tm_hour = info.date.hour; tm.tm_min = info.date.minute; tm.tm_sec = info.date.second; time = mktime (&tm); GP_DEBUG ("time: %X", (unsigned int) time); gp_widget_new (GP_WIDGET_DATE, _("Date and Time"), &child); gp_widget_append (section, child); xtime = time; gp_widget_set_value (child, &xtime); return GP_OK; } static int which_radio_button (CameraWidget *window, const char *label, const char * const *opt) { CameraWidget *child; int i; const char *value; if (gp_widget_get_child_by_label (window, label, &child) != GP_OK) return -1; if (!gp_widget_changed (child)) return -1; gp_widget_get_value (child, &value); for (i = 0; opt[i]; i++) if (!strcmp (value, opt[i])) return i; return -1; } static int camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { CameraWidget *child; int i = 0, r; float range; if ((i = which_radio_button (window, IMAGE_QUALITY, quality)) >= 0) CR (pdc700_config (camera, PDC_CONF_QUALITY, (unsigned char) i, context)); if ((i = which_radio_button (window, IMAGE_SIZE, size)) >= 0) CR (pdc700_config (camera, PDC_CONF_SIZE, (unsigned char) i, context)); if ((i = which_radio_button (window, FLASH_SETTING, flash)) >= 0) CR (pdc700_config (camera, PDC_CONF_FLASH, (unsigned char) i, context)); if ((i = which_radio_button (window, LCD_STATE, bool)) >= 0) CR (pdc700_config (camera, PDC_CONF_LCD, (unsigned char) i, context)); if ((i = which_radio_button (window, SELF_TIMER, bool)) >= 0) CR (pdc700_config (camera, PDC_CONF_TIMER, (unsigned char) i, context)); if ((i = which_radio_button (window, SHOW_CAPTIONS, bool)) >= 0) CR (pdc700_config (camera, PDC_CONF_CAPTION, (unsigned char) i, context)); /* Auto poweroff */ r = gp_widget_get_child_by_label (window, AUTO_POWEROFF, &child); if ((r == GP_OK) && gp_widget_changed (child)) { gp_widget_get_value (child, &range); CR (pdc700_config (camera, PDC_CONF_POWEROFF, (unsigned char) range, context)); } /* Date and time */ r = gp_widget_get_child_by_label (window, _("Date and Time"), &child); if ((r == GP_OK) && gp_widget_changed (child)) { gp_widget_get_value (child, &i); if (i != -1) pdc700_set_date(camera, (time_t) i, context); else GP_DEBUG ("date widget returned -1, not setting datee/time"); /* GP_DEBUG ("Implement setting of date & time!"); */ } return GP_OK; } static int camera_summary (Camera *camera, CameraText *about, GPContext *context) { PDCInfo info; CR (pdc700_info (camera, &info, context)); sprintf (about->text, _( "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s"), info.date.year + ((!strcmp (info.version, "v2.45")) ? 1980 : 2000), info.date.month, info.date.day, info.date.hour, info.date.minute, info.date.second, info.num_taken, info.num_free, info.version, _(speed[info.speed]), info.memory, _(mode[info.mode]), _(quality[info.quality]), _(flash[info.flash]), _(bool[info.caption]), _(bool[info.timer]), _(bool[info.lcd]), info.auto_poweroff, _(power[info.ac_power])); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; PDCInfo info; /* Fill the list */ CR (pdc700_info (camera, &info, context)); gp_list_populate (list, "PDC700%04i.jpg", info.num_taken); return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *file, CameraFileInfo *info, void *data, GPContext *context) { int n; Camera *camera = data; PDCPicInfo pic_info; /* Get the picture number from the CameraFilesystem */ CR (n = gp_filesystem_number (fs, folder, file, context)); CR (pdc700_picinfo (camera, n + 1, &pic_info, context)); info->file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE; info->preview.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE; strcpy (info->file.type, GP_MIME_JPEG); strcpy (info->preview.type, GP_MIME_JPEG); info->file.size = pic_info.pic_size; info->preview.size = pic_info.thumb_size; return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_info_func = get_info_func, .get_file_func = get_file_func, .del_file_func = del_file_func }; int camera_init (Camera *camera, GPContext *context) { int result = GP_OK, i; GPPortSettings settings; int speeds[] = {115200, 9600, 57600, 19200, 38400}; /* First, set up all the function pointers */ camera->functions->capture = camera_capture; camera->functions->summary = camera_summary; camera->functions->about = camera_about; camera->functions->get_config = camera_get_config; camera->functions->set_config = camera_set_config; /* Now, tell the filesystem where to get lists and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* Check if the camera is really there */ CR (gp_port_get_settings (camera->port, &settings)); CR (gp_port_set_timeout (camera->port, 1000)); switch (camera->port->type) { case GP_PORT_SERIAL: /* Figure out current speed */ for (i = 0; i < 5; i++) { settings.serial.speed = speeds[i]; CR (gp_port_set_settings (camera->port, settings)); result = pdc700_init (camera, context); if (result == GP_OK) break; } if (i == 5) return (result); /* Set the speed to the highest one */ if (speeds[i] < 115200) { CR (pdc700_baud (camera, 115200, context)); settings.serial.speed = 115200; CR (gp_port_set_settings (camera->port, settings)); } break; case GP_PORT_USB: /* Use the defaults the core parsed */ CR (gp_port_set_settings (camera->port, settings)); CR (pdc700_init (camera, context)); break; default: gp_context_error (context, _("The requested port type (%i) " "is not supported by this driver."), camera->port->type); return (GP_ERROR_NOT_SUPPORTED); } return (GP_OK); } libgphoto2-2.5.9/camlibs/polaroid/jd350e.c0000644000175000001440000001341512610415536015105 00000000000000/* jd350e.c * * White balancing and brightness correction for the Jenoptik * JD350 entrance camera * * Copyright 2001 Michael Trawny * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include "jd350e.h" #include "jd350e_red.h" /*#include "jd350e_blue.h"*/ #define GP_MODULE "jd350e" #define THRESHOLD 0xf8 #define RED(p,x,y,w) *((p)+3*((y)*(w)+(x)) ) #define GREEN(p,x,y,w) *((p)+3*((y)*(w)+(x))+1) #define BLUE(p,x,y,w) *((p)+3*((y)*(w)+(x))+2) #define SWAP(a,b) {unsigned char t=(a); (a)=(b); (b)=t;} #define MINMAX(a,min,max) { (min)=MIN(min,a); (max)=MAX(max,a); } #ifndef MAX # define MAX(a, b) ((a) > (b) ? (a) : (b)) #endif #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif int jd350e_postprocessing(int width, int height, unsigned char* rgb){ int x,y, red_min=255, red_max=0, blue_min=255, blue_max=0, green_min=255, green_max=0; double min, max, amplify; /* reverse image row by row... */ for( y=0; y red_max ){ #endif /* outdoor daylight : red color correction curve*/ GP_DEBUG( "daylight mode"); for( y=0; y blue_max ){ /* indoor electric light */ GP_DEBUG( "electric light mode"); for( y=0; y (b) ? (a) : (b)) #endif #ifndef MIN # define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif for(i=0; i<(width*height*3); i++) MINMAX( rgb[i], min, max ); amplify = 255.0/(max-min); for(i=0; i<(width*height*3); i++) { int val = amplify * (rgb[i] - min); if(val < brightness_adjust) rgb[i] = val * 2; else if (val > (255 - brightness_adjust)) rgb[i] = 255; else rgb[i] = val + brightness_adjust; } return GP_OK; } libgphoto2-2.5.9/camlibs/polaroid/jpeghead.h0000644000175000001440000002025712557123324015672 00000000000000/* This file was added by Nathan Stenzel It will only get rough rough images, but might do for now I may be working on the header by decoding the image into a stream "manually" This is the Polaroid Fun! 320's header It should be modified for the Polaroid 640SE For the bennifit of anyone else that wants to try to figure improve this.... ...I split the jpegheder into the different sections. I believe I did this right. I split it at FF markers that were not ended by OO Please email me if you can help me out. I need to figure out how to decode the image data by "hand" and then edit this header to fit */ /* New table */ #define quantization_chroma_new \ "\x03\x02\x02\x03\x02\x02\x03\x03" "\x03\x03\x04\x03\x03\x04\x05\x08" \ "\x05\x05\x04\x04\x05\x0A\x07\x07" "\x06\x08\x0C\x0A\x0C\x0C\x0B\x0A" \ "\x0B\x0B\x0D\x0E\x12\x10\x0D\x0E" "\x11\x0E\x0B\x0B\x10\x16\x10\x11" \ "\x13\x14\x15\x15\x15\x0C\x0F\x17" "\x18\x16\x14\x18\x12\x14\x15\x14" #define quantization_luma_new \ "\x03\x04\x04\x05\x04\x05\x09\x05" "\x05\x09\x14\x0D\x0B\x0D\x14\x14" \ "\x14\x14\x14\x14\x14\x14\x14\x14" "\x14\x14\x14\x14\x14\x14\x14\x14" \ "\x14\x14\x14\x14\x14\x14\x14\x14" "\x14\x14\x14\x14\x14\x14\x14\x14" \ "\x14\x14\x14\x14\x14\x14\x14\x14" "\x14\x14\x14\x14\x14\x14\x14\x14" #define quantization_table_1s \ "\x01\x01\x01\x01\x01\x01\x01\x01" "\x01\x01\x01\x01\x01\x01\x01\x01" \ "\x01\x01\x01\x01\x01\x01\x01\x01" "\x01\x01\x01\x01\x01\x01\x01\x01" \ "\x01\x01\x01\x01\x01\x01\x01\x01" "\x01\x01\x01\x01\x01\x01\x01\x01" \ "\x01\x01\x01\x01\x01\x01\x01\x01" "\x01\x01\x01\x01\x01\x01\x01\x01" #define quantization_table_6s \ "\x02\x03\x03\x05\x05\x06\x06\x06" "\x06\x06\x06\x06\x06\x06\x06\x06" \ "\x06\x06\x06\x06\x06\x06\x06\x06" "\x06\x06\x06\x06\x06\x06\x06\x06" \ "\x06\x06\x06\x06\x06\x06\x06\x06" "\x06\x06\x06\x06\x06\x06\x06\x06" \ "\x06\x06\x06\x06\x06\x06\x06\x06" "\x06\x06\x06\x06\x06\x06\x06\x06" #define quantization_table_14s \ "\x06\x08\x08\x0a\x07\x0a\x0d\x0a" "\x0a\x0d\x13\x0f\x0c\x0f\x13\x14" \ "\x0f\x0d\x0d\x0f\x14\x14\x14\x14" "\x14\x14\x14\x14\x14\x14\x14\x14" \ "\x14\x14\x14\x14\x14\x14\x14\x14" "\x14\x14\x14\x14\x14\x14\x14\x14" \ "\x14\x14\x14\x14\x14\x14\x14\x14" "\x14\x14\x14\x14\x14\x14\x14\x14" #define quantization_table_36s \ "\x04\x05\x08\x16\x36\x36\x36\x36" "\x36\x36\x36\x36\x36\x36\x36\x36" \ "\x36\x36\x36\x36\x36\x36\x36\x36" "\x36\x36\x36\x36\x36\x36\x36\x36" \ "\x36\x36\x36\x36\x36\x36\x36\x36" "\x36\x36\x36\x36\x36\x36\x36\x36" \ "\x36\x36\x36\x36\x36\x36\x36\x36" "\x36\x36\x36\x36\x36\x36\x36\x36" /* Default luminance table */ #define quantization_luma \ "\x10\x0B\x0C\x0E\x0C\x0A\x10\x0E" "\x0D\x0E\x12\x11\x10\x13\x18\x28" \ "\x1A\x18\x16\x16\x18\x31\x23\x25" "\x1D\x28\x3A\x33\x3D\x3C\x39\x33" \ "\x38\x37\x40\x48\x5C\x4E\x40\x44" "\x57\x45\x37\x38\x50\x6D\x51\x57" \ "\x5F\x62\x67\x68\x67\x3E\x4D\x71" "\x79\x70\x64\x78\x5C\x65\x67\x63" /* Default Chrominance table */ #define quantization_chroma \ "\x11\x12\x12\x18\x15\x18\x2f\x1a" "\x1a\x2f\x63\x63\x63\x63\x63\x63" \ "\x63\x63\x63\x63\x63\x63\x63\x63" "\x63\x63\x63\x63\x63\x63\x63\x63" \ "\x63\x63\x63\x63\x63\x63\x63\x63" "\x63\x63\x63\x63\x63\x63\x63\x63" \ "\x63\x63\x63\x63\x63\x63\x63\x63" "\x63\x63\x63\x63\x63\x63\x63\x63" #define JPEG_Q0 "\xFF\xDB\x00\x43\x00" #define JPEG_Q1 "\xFF\xDB\x00\x43\x01" /* This is the old table that might be faulty #define quantization_table2 \ "\xFF\xDB\x00\x43\x01" \ "\x01\x01\x01\x01\x01\x01\x01\x01" "\x01\x01\x01\x01\x01\x01\x01\x01" \ "\x01\x01\x01\x01\x01\x01\x01\x01" "\x01\x01\x01\x01\x01\x01\x01\x01" \ "\x01\x01\x01\x01\x01\x01\x01\x01" "\x01\x01\x01\x01\x01\x01\x01\x01" \ "\x01\x01\x01\x01\x01\x01\x01\x01" "\x01\x01\x01\x01\x01\x01\x01\x01" */ /* I am trying setting the SOFC0 so that component one uses quantization table 2 * This seems to give it higher contrast that would be needed to understand the image. */ #define SOFCO_320x128 \ "\xFF\xC0\x00\x11" \ "\x08\x00\x80\x01\x40\x03" "\x01\x11\x01" "\x02\x11\x00" "\x03\x21\x00" #define SOFC0_640x248 \ "\xFF\xC0\x00\x11" \ "\x08\x00\xf8\x02\x80\x03" "\x01\x11\x00" "\x02\x11\x00" "\x03\x21\x00" static struct { unsigned int size; char *data; } jpegheader[] = { {2, "\xFF\xD8"}, /* JFIF APPO Marker:Version 1.01, density 78x78 (the 00 48 00 48) */ {18, "\xFF\xE0\x00\x10\x4A\x46\x49\x46" "\x00\x01\x01\x01\x00\x48\x00\x48" "\x00\x00"}, {69, JPEG_Q0 quantization_chroma_new}, {69, JPEG_Q1 quantization_luma_new}, /* /* define quantization table 0 precision 0 */ {69, jpeg_q0 quantization_table_6s}, /* define quantization table 1 precision 0 */ {69, jpeg_q1 quantization_table_14s}, */ /* Start Of Frame 0: width=320, height=128, components=3 */ /* It seems that the camera makes 320x120 images */ /* 8 of the 128 is to get the pixels I think are for color correction */ /* I have to wonder if the camera even makes actual 320x240 images */ {19, SOFCO_320x128}, /* Define Huffman Table 0x00 (same in old and new) */ {33, "\xFF\xC4\x00\x1F\x00\x00\x01\x05" "\x01\x01\x01\x01\x01\x01\x00\x00" "\x00\x00\x00\x00\x00\x00\x01\x02" "\x03\x04\x05\x06\x07\x08\x09\x0A\x0B"}, /* Define Huffman Table 0x10 */ {183, "\xFF\xC4\x00\xB5\x10\x00\x02\x01" "\x03\x03\x02\x04\x03\x05\x05\x04" "\x04\x00\x00\x01\x7D\x01\x02\x03" "\x00\x04\x11\x05\x12\x21\x31\x41" "\x06\x13\x51\x61\x07\x22\x71\x14" "\x32\x81\x91\xA1\x08\x23\x42\xB1" "\xC1\x15\x52\xD1\xF0\x24\x33\x62" "\x72\x82\x09\x0A\x16\x17\x18\x19" "\x1A\x25\x26\x27\x28\x29\x2A\x34" "\x35\x36\x37\x38\x39\x3A\x43\x44" "\x45\x46\x47\x48\x49\x4A\x53\x54" "\x55\x56\x57\x58\x59\x5A\x63\x64" "\x65\x66\x67\x68\x69\x6A\x73\x74" "\x75\x76\x77\x78\x79\x7A\x83\x84" "\x85\x86\x87\x88\x89\x8A\x92\x93" "\x94\x95\x96\x97\x98\x99\x9A\xA2" "\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA" "\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9" "\xBA\xC2\xC3\xC4\xC5\xC6\xC7\xC8" "\xC9\xCA\xD2\xD3\xD4\xD5\xD6\xD7" "\xD8\xD9\xDA\xE1\xE2\xE3\xE4\xE5" "\xE6\xE7\xE8\xE9\xEA\xF1\xF2\xF3" "\xF4\xF5\xF6\xF7\xF8\xF9\xFA"}, /* Define Huffman Table 0x01 */ {33, "\xFF\xC4\x00\x1F\x01\x00\x03\x01" "\x01\x01\x01\x01\x01\x01\x01\x01" "\x00\x00\x00\x00\x00\x00\x01\x02" "\x03\x04\x05\x06\x07\x08\x09\x0A\x0B"}, /* Define Huffman Table 0x11 */ {183, "\xFF\xC4\x00\xB5\x11\x00\x02\x01" "\x02\x04\x04\x03\x04\x07\x05\x04" "\x04\x00\x01\x02\x77\x00\x01\x02" "\x03\x11\x04\x05\x21\x31\x06\x12" "\x41\x51\x07\x61\x71\x13\x22\x32" "\x81\x08\x14\x42\x91\xA1\xB1\xC1" "\x09\x23\x33\x52\xF0\x15\x62\x72" "\xD1\x0A\x16\x24\x34\xE1\x25\xF1" "\x17\x18\x19\x1A\x26\x27\x28\x29" "\x2A\x35\x36\x37\x38\x39\x3A\x43" "\x44\x45\x46\x47\x48\x49\x4A\x53" "\x54\x55\x56\x57\x58\x59\x5A\x63" "\x64\x65\x66\x67\x68\x69\x6A\x73" "\x74\x75\x76\x77\x78\x79\x7A\x82" "\x83\x84\x85\x86\x87\x88\x89\x8A" "\x92\x93\x94\x95\x96\x97\x98\x99" "\x9A\xA2\xA3\xA4\xA5\xA6\xA7\xA8" "\xA9\xAA\xB2\xB3\xB4\xB5\xB6\xB7" "\xB8\xB9\xBA\xC2\xC3\xC4\xC5\xC6" "\xC7\xC8\xC9\xCA\xD2\xD3\xD4\xD5" "\xD6\xD7\xD8\xD9\xDA\xE2\xE3\xE4" "\xE5\xE6\xE7\xE8\xE9\xEA\xF2\xF3" "\xF4\xF5\xF6\xF7\xF8\xF9\xFA"}, /* Ss=0, Se=63, Ah=0, Al=0 */ {14, "\xFF\xDA\x00\x0C\x03\x01\x00\x02" "\x00\x03\x00\x00\x3F\x00"} }; /* djpeg can be used with -debug to show some info on the encoding of a jpeg * I fed my modified djpeg (which makes jpegs from my raw camera data) and got: Start of Image JFIF APP0 marker: version 1.01, density 72x72 1 Define Quantization Table 0 precision 0 Define Quantization Table 1 precision 0 Start Of Frame 0xc0: width=320, height=240, components=3 Component 1: 1hx1v q=0 Component 2: 1hx1v q=0 Component 3: 2hx1v q=0 Define Huffman Table 0x00 Define Huffman Table 0x10 Define Huffman Table 0x01 Define Huffman Table 0x11 Start Of Scan: 3 components Component 1: dc=0 ac=0 Component 2: dc=0 ac=0 Component 3: dc=0 ac=0 Ss=0, Se=63, Ah=0, Al=0 * I used this info to comment the jpeg header above * I honestly still don't understand it very well */ libgphoto2-2.5.9/camlibs/mustek/0000755000175000001440000000000012623156267013531 500000000000000libgphoto2-2.5.9/camlibs/mustek/image.c0000644000175000001440000001521412610415536014673 00000000000000/* * Copyright 1999 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * gphoto driver for the Mustek MDC800 Digital Camera. The driver * supports rs232 and USB. It automatically detects which Kernelnode * is used. */ #include #include "image.h" #include "print.h" static const unsigned char Huffman_Tab[424] = { 0xFF,0xC4,0x01,0xA2, /* DC_Luminance_Bits */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, /* DC_Luminance_Value */ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0x0A, 0x0B, /* DC_Chrominance_Bits */ 1, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* DC_Chrominance_Value */ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0x0A, 0x0B, /* AC_Luminance_Bits */ 0x10, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7D, /* AC_Luminance_Value */ 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xA1, 0x08, 0x23, 0x42, 0xB1, 0xC1, 0x15, 0x52, 0xD1, 0xF0, 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0A, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, /* AC_Chrominance_Bits */ 0x11, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77, /* AC_Chrominance_Value */ 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xA1, 0xB1, 0xC1, 0x09, 0x23, 0x33, 0x52, 0xF0, 0x15, 0x62, 0x72, 0xD1, 0x0A, 0x16, 0x24, 0x34, 0xE1, 0x25, 0xF1, 0x17, 0x18, 0x19, 0x1A, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, /* Blank data */ 0xFF, 0xFE, 0x01, 0x8F }; static const unsigned char File_Header[41]= { /* JPG file start marker */ 0xFF, 0xD8, /* Application marker */ 0xFF, 0xE0, 0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01, 0x00, 0x01, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, /* Application marker */ 0xFF, 0xE1, 0x00, 0x0E, 0x43, 0x41, 0x4D, 0x2D, 0x4D, 0x44, 0x43, 0x38, 0x30, 0x30, 0x00, 0x00, /* Quantization table marker */ 0xFF, 0xDB, 0x00, 0x84, 0x00 }; static const unsigned char File_Header1[24]= { /* JPG file start marker */ 0xFF, 0xD8, /* Application marker */ 0xFF, 0xE0, 0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01, 0x00, 0x01, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, /* Application marker */ 0xFF, 0xE1, 0x0F, 0xEC }; static const unsigned char File_Header2[34]= { /* JPG file start marker */ 0xFF, 0xD8, /* Application marker */ 0xFF, 0xE0, 0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01, 0x00, 0x01, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, /* Application marker */ 0xFF, 0xE1, 0x00, 0x0E, 0x43, 0x41, 0x4D, 0x2D, 0x4D, 0x44, 0x43, 0x38, 0x30, 0x30 }; /* For Thumbnail: 112x96 */ static const unsigned char SOF_SOS1[33]= { /* Start of frame marker */ 0xFF, 0xC0, 0x00, 0x11, 0x08, 0x00, 0x60, 0x00, 0x70, 0x03, 0x01, 0x21, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, /* Start of scan marker */ 0xFF, 0xDA, 0x00, 0x0C, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3F, 0x00 }; /* For Economic quality image: 506x384 */ static const unsigned char SOF_SOS2[33]= { /* Start of frame marker */ 0xFF, 0xC0, 0x00, 0x11, 0x08, 0x01, 0x80, 0x01, 0xFA, 0x03, 0x01, 0x21, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, /* Start of scan marker */ 0xFF, 0xDA, 0x00, 0x0C, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3F, 0x00 }; /* For Standard and High quality image: 1012x768 */ static const unsigned char SOF_SOS3[33]= { /* Start of frame marker */ 0xFF, 0xC0, 0x00, 0x11, 0x08, 0x03, 0x00, 0x03, 0xF4, 0x03, 0x01, 0x21, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, /* Start of scan marker */ 0xFF, 0xDA, 0x00, 0x0C, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3F, 0x00 }; /* * corrects downloaded data * * thumbnail : 1 data is a thumbnail * quality : 0 economy , 1 standard, 2 High * location : 1 internal, 0 CF-Card */ int mdc800_correctImageData (unsigned char* buffer, int thumbnail,int quality,int location) { printCError ("(mdc800_correctImageData) thumbnail:%i quality:%i location:%i \n", thumbnail, quality, location); if (thumbnail) { if (location == 1) { memcpy (buffer, File_Header,41); *(buffer+105)=1; buffer+=170; memcpy (buffer, Huffman_Tab, 424); buffer+=821; memcpy (buffer,SOF_SOS1,33); } else { *(buffer+22)=0x00; *(buffer+23)=0x0e; } return 1; } else { if (location == 1) { memcpy (buffer, File_Header1, 24); buffer+=4096; memcpy (buffer, File_Header, 41); *buffer=*(buffer+1)=0; *(buffer+105)=1; buffer+=170; memcpy (buffer, Huffman_Tab,424); buffer+=821; switch (quality) { case 0: memcpy (buffer,SOF_SOS2,33); break; case 1: case 2: memcpy (buffer, SOF_SOS3,33); break; } } /* CF Image is correct. */ return 1; } return 0; } libgphoto2-2.5.9/camlibs/mustek/README.mustek0000644000175000001440000000266112561423351015635 00000000000000Driver for Mustek MDC 800 cameras by Henning Zabel The driver supports the rs232 and the USB interface of the Mustek MDC800 Digital Camera. It implements all function to download pictures, view their thumbnails or delete them. It is also possible to take photos with the library. In the GUI of this driver you can select some preferences for this. On rs232 it is possible to use every supported Baudrate. The Baudrate is selectable in the GUI. History : 10.01.2000 The Library was ported to the ne iolib. It uses also the USB Interfave from Johannes Erdfeld. This makes it unneccessary to have a special Kernelmodul for the Mustek. In camera.h there is added a new entry, so you can select wether you want to use USB or rs232. This is needed because the iolib does not support autodetection for this. 19.11.1999 Autoprobe of the Baudrate when starting (opening) this driver was added. This makes it possible to reopen the camera after an error, when the camera has been set to another baudrate than 57k. Automatic command retry has moved from rs232 to io, now it also touches usb. 17.11.1999 Rewrite of the GUI: Some useless Function where deleted. The GUI now uses ComboBoxes. Added support to select Baudrate of the camera in the GUI. 07.11.1999 This lib was posted to gphoto, after adapting the GUI from the earlier driver. libgphoto2-2.5.9/camlibs/mustek/STATUS0000644000175000001440000000033412557123324014411 00000000000000Current Status: It compiles. Due to the USB Interrupt reading the driver is not yet working with USB. Sometimes the correct interrupt data is transfered, most time it isn't. I do not have a serial cable :/ - Marcus libgphoto2-2.5.9/camlibs/mustek/mdc800.c0000644000175000001440000002146112610415536014605 00000000000000/* mdc800.c * * Copyright 1999/2000 by Henning Zabel * Copyright 2001 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include "print.h" #include "core.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define _(String) (String) # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif int camera_id (CameraText *id) { strcpy(id->text, "Mustek MDC 800"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { CameraAbilities a; memset(&a,0,sizeof(a)); strcpy(a.model, "Mustek:MDC 800"); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_SERIAL | GP_PORT_USB; a.speed[0] = 19200; a.speed[1] = 57600; a.speed[2] = 115200; a.speed[3] = 0; a.usb_vendor = 0x055f; a.usb_product = 0xa800; a.operations = GP_OPERATION_CAPTURE_PREVIEW | GP_CAPTURE_IMAGE; a.file_operations = GP_FILE_OPERATION_DELETE | GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; /* Deliberately commented out. this driver does not work due to USB interrupts gp_abilities_list_append(list, a); */ return (GP_OK); } #if 0 static int camera_exit (Camera *camera, GPContext *context) { return (GP_OK); } #endif static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context) { Camera *camera = data; int size, nr, result; nr = gp_filesystem_number(fs, folder, filename, context); if(nr < 0) return nr; switch (type) { #if 0 case GP_FILE_TYPE_RAW: result = jd11_get_image_full (camera, nr, &data, (int*) &size, 1); break; #endif case GP_FILE_TYPE_NORMAL: result = mdc800_getImage(camera,nr,&data,&size); break; case GP_FILE_TYPE_PREVIEW: result = mdc800_getThumbnail(camera,nr,&data,&size); break; default: return (GP_ERROR_NOT_SUPPORTED); } if (result < 0) return result; gp_file_set_mime_type (file, GP_MIME_JPEG); gp_file_set_data_and_size(file, data, size); return (GP_OK); } static int delete_file_func (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context) { Camera *camera = data; int ret,nr ; nr = gp_filesystem_number(fs, folder, filename, context); if (nr < 0) return nr; ret = mdc800_setTarget (camera,1); if (ret!=GP_OK) { printAPIError ("(mdc800_delete_image) can't set Target\n"); return ret; } ret = mdc800_io_sendCommand(camera->port, COMMAND_DELETE_IMAGE,nr/100,(nr%100)/10,nr%10,0,0); if (ret != GP_OK) { printAPIError ("(mdc800_delete_image ) deleting Image %i fails !.\n",nr); return ret; } return GP_OK; } static int delete_all_func (CameraFilesystem *fs, const char *folder, void *data, GPContext *context) { /*Camera *camera = data;*/ /* * Delete all files in the given folder. If your camera doesn't have * such a functionality, just don't implement this function. */ return (GP_OK); } static int camera_config_get (Camera *camera, CameraWidget **window, GPContext *ctx) { gp_widget_new (GP_WIDGET_WINDOW, "Camera Configuration", window); /* Append your sections and widgets here. */ return (GP_OK); } static int camera_config_set (Camera *camera, CameraWidget *window, GPContext *ctx) { /* * Check if the widgets' values have changed. If yes, tell the camera. */ return (GP_OK); } #if 0 static int camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { /* * Capture a preview and return the data in the given file (again, * use gp_file_set_data_and_size, gp_file_set_mime_type, etc.). * libgphoto2 assumes that previews are NOT stored on the camera's * disk. If your camera does, please delete it from the camera. */ return (GP_OK); } #endif static int camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { /* * Capture an image and tell libgphoto2 where to find it by filling * out the path. */ return (GP_OK); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *ctx) { char mdc800_summary_output[500]; char line[50]; /* * Fill out the summary with some information about the current * state of the camera (like pictures taken, etc.). */ strcpy (mdc800_summary_output,_("Summary for Mustek MDC800:\n")); if (GP_OK!=mdc800_getSystemStatus (camera)) { strcat(mdc800_summary_output,_("no status reported.")); strcpy(summary->text, mdc800_summary_output); return GP_OK; } if (mdc800_isCFCardPresent (camera)) strcpy (line,_("Compact Flash Card detected\n")); else strcpy (line,_("No Compact Flash Card detected\n")); strcat(mdc800_summary_output,line); if (mdc800_getMode (camera) == 0) strcpy (line, _("Current Mode: Camera Mode\n")); else strcpy (line, _("Current Mode: Playback Mode\n")); strcat (mdc800_summary_output,line); strcpy (line,mdc800_getFlashLightString (mdc800_getFlashLightStatus (camera))); strcat (line,"\n"); strcat (mdc800_summary_output,line); if (mdc800_isBatteryOk (camera)) strcpy (line, _("Batteries are ok.")); else strcpy (line, _("Batteries are low.")); strcat (mdc800_summary_output,line); strcpy(summary->text,mdc800_summary_output); return GP_OK; } static int camera_manual (Camera *camera, CameraText *manual, GPContext *ctx) { /* * If you would like to tell the user some information about how * to use the camera or the driver, this is the place to do. */ return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *ctx) { strcpy (about->text, _("Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols.")); return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { /*Camera *camera = data;*/ /* Get the file info here and write it into */ return (GP_OK); } static int folder_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { /*Camera *camera = data;*/ /* List your folders here */ return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int count, result; result = mdc800_number_of_pictures (camera, &count); if (result != GP_OK) return result; gp_list_populate(list, "image%02i.jpg", count); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .folder_list_func = folder_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func, .del_file_func = delete_file_func, .delete_all_func = delete_all_func }; int camera_init (Camera *camera, GPContext *context) { /* First, set up all the function pointers */ /* camera->functions->exit = camera_exit; */ camera->functions->get_config = camera_config_get; camera->functions->set_config = camera_config_set; camera->functions->capture = camera_capture; camera->functions->summary = camera_summary; camera->functions->manual = camera_manual; camera->functions->about = camera_about; /* Now, tell the filesystem where to get lists, files and info */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* Configure port */ gp_port_set_timeout(camera->port,MDC800_DEFAULT_COMMAND_RETRY_DELAY); if (camera->port->type == GP_PORT_SERIAL) { GPPortSettings settings; gp_port_get_settings(camera->port, &settings); settings.serial.speed = 57600; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits= 1; gp_port_set_settings(camera->port, settings); } return mdc800_openCamera(camera); } libgphoto2-2.5.9/camlibs/mustek/io.c0000644000175000001440000000631312610415536014220 00000000000000/* * Copyright 1999/2000 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * gphoto driver for the Mustek MDC800 Digital Camera. The driver * supports rs232 and USB. It automatically detects which Kernelnode * is used. */ /* * Implements cummunication-core : * * Sending commands and receiving data */ #include #include #include "io.h" #include #include #include #include "print.h" #include "rs232.h" #include "usb.h" #include "mdc800_spec.h" /* * Send a Command to the Camera. It is unimportent wether this * is a USB or a RS232 Command. The Function implements an automatic * retry of a failed command. * * The Function will only be used in this Layer, execpt on probing * the Baudrate of Rs232. * if quiet is true, the function won't print notes */ int mdc800_io_sendCommand_with_retry (GPPort *port,unsigned char* command, unsigned char* buffer, int length, int maxtries,int quiet) { int try=0; int ret=GP_OK; while (try < maxtries) { usleep(MDC800_DEFAULT_COMMAND_RETRY_DELAY*1000); if (port->type == GP_PORT_USB) ret=mdc800_usb_sendCommand(port,command, buffer, length ); else ret=mdc800_rs232_sendCommand(port, command, buffer, length); if (ret==GP_OK) return GP_OK; try++; } if (!quiet) { printCoreNote ("\nCamera is not responding (Maybe off?)\n"); printCoreNote ("giving it up after %i times.\n\n", try); } return GP_ERROR_IO; } /* * sends a command and receives the answer to this * buffer: Strores the answer * length: length of answer or null */ int mdc800_io_sendCommand (GPPort*port,unsigned char commandid,unsigned char par1,unsigned char par2,unsigned char par3, unsigned char* buffer, int length) { unsigned char command [8]; command[0]=COMMAND_BEGIN; command[1]=commandid; command[2]=par1; command[3]=par2; command[4]=par3; command[5]=COMMAND_END; command[6]=0; command[7]=0; return mdc800_io_sendCommand_with_retry (port,command,buffer,length, MDC800_DEFAULT_COMMAND_RETRY,0); } /* * Helper function for rs232 and usb * It returns a timeout for the specified command */ int mdc800_io_getCommandTimeout (unsigned char command) { switch (command) { case COMMAND_SET_STORAGE_SOURCE: case COMMAND_SET_TARGET: case COMMAND_SET_CAMERA_MODE: case COMMAND_DELETE_IMAGE: return MDC800_LONG_TIMEOUT; case COMMAND_TAKE_PICTURE: case COMMAND_PLAYBACK_IMAGE: case COMMAND_SET_PLAYBACK_MODE: return MDC800_TAKE_PICTURE_TIMEOUT; } return MDC800_DEFAULT_TIMEOUT; } libgphoto2-2.5.9/camlibs/mustek/AUTHOR0000644000175000001440000000014212557123324014365 00000000000000Henning Zabel Gphoto2 Port by Marcus Meissner libgphoto2-2.5.9/camlibs/mustek/io.h0000644000175000001440000000322412610415617014223 00000000000000/* * Copyright 1999/2000 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _IO_H #define _IO_H /* Maximum Number of tries, before a command is given up */ #define MDC800_DEFAULT_COMMAND_RETRY 4 /* There is a little delay for the next sending (ms) */ #define MDC800_DEFAULT_COMMAND_RETRY_DELAY 300 /* Default Timeout */ #define MDC800_DEFAULT_TIMEOUT 250 /* Prevent Overruns ( ms) ?? */ #define MDC800_DEFAULT_COMMAND_DELAY 50 /* Long Timeout for Functions that needs time (Take Photo, delete..) */ #define MDC800_LONG_TIMEOUT 5000 /* 20sec Timeout for Flashlight */ #define MDC800_TAKE_PICTURE_TIMEOUT 20000 int mdc800_io_sendCommand_with_retry(GPPort *, unsigned char*, unsigned char* , int, int,int); /* The API to the upper Layer */ int mdc800_io_sendCommand(GPPort *, unsigned char ,unsigned char,unsigned char,unsigned char,unsigned char *,int ); /* Helper Function for rs232 and usb */ int mdc800_io_getCommandTimeout(unsigned char); #endif libgphoto2-2.5.9/camlibs/mustek/rs232.c0000644000175000001440000001175612610415536014473 00000000000000/* * Copyright 1999/2000 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * gphoto driver for the Mustek MDC800 Digital Camera. The driver * supports rs232 and USB. */ #include #include #include "print.h" #include "rs232.h" #include "mdc800_spec.h" #include "io.h" #include #include #include /* * sends a command and receives the answer to this * buffer: Strores the answer * length: length of answer or null */ int mdc800_rs232_sendCommand(GPPort *port,unsigned char* command, unsigned char* buffer, int length) { char answer; int fault=0,ret; int i; printFnkCall ("(mdc800_rs232_sendCommand) id:%i (%i,%i,%i),answer:%i\n",command[1],command[2],command[3],command[4],length); usleep(MDC800_DEFAULT_COMMAND_DELAY*1000); gp_port_set_timeout (port, MDC800_DEFAULT_TIMEOUT ); /* Send command */ for (i=0; i<6; i++) { if (gp_port_write (port, (char*)&command[i] ,1) < GP_OK) { printCError ("(mdc800_rs232_sendCommand) sending Byte %i fails!\n",i); fault=1; } ret = gp_port_read (port,&answer,1); if ( ret != 1) { printCError ("(mdc800_rs232_sendCommand) receiving resend of Byte %i fails.\n",i); fault=1; } if (command [i] != answer) { printCError ("(mdc800_rs232_sendCommand) Byte %i differs : send %i, received %i \n",i,command[i],answer); fault=1; } } if (fault) return GP_ERROR_IO; /* Receive answer */ if (length) { /* Some Commands needs a download. */ switch (command[1]) { case COMMAND_GET_IMAGE: case COMMAND_GET_THUMBNAIL: if (!mdc800_rs232_download(port,buffer,length)) { printCError ("(mdc800_rs232_sendCommand) download of %i Bytes fails.\n",length); fault=1; } break; default: if (!mdc800_rs232_receive(port,buffer,length)) { printCError ("(mdc800_rs232_sendCommand) receiving %i Bytes fails.\n",length); fault=1; } } } if (fault) return GP_ERROR_IO; /* commit */ if (!(command[1] == COMMAND_CHANGE_RS232_BAUD_RATE)) { if (!mdc800_rs232_waitForCommit(port,command[1])) { printCError ("(mdc800_rs232_sendCommand) receiving commit fails.\n"); fault=1; } } if (fault) return GP_ERROR_IO; return GP_OK; } /* * waits for the Commit value * The function expects the commandid of the corresponding command * to determine whether a long timeout is needed or not. (Take Photo) */ int mdc800_rs232_waitForCommit (GPPort *port,char commandid) { unsigned char ch[1]; int ret; gp_port_set_timeout(port,mdc800_io_getCommandTimeout(commandid)); ret = gp_port_read(port,(char *)ch,1); if (ret!=1) { printCError ("(mdc800_rs232_waitForCommit) Error receiving commit !\n"); return GP_ERROR_IO; } if (ch[0] != ANSWER_COMMIT ) { printCError ("(mdc800_rs232_waitForCommit) Byte \"%i\" was not the commit !\n",ch[0]); return GP_ERROR_IO; } return GP_OK; } /* * receive Bytes from camera */ int mdc800_rs232_receive (GPPort *port,unsigned char* buffer, int b) { int ret; gp_port_set_timeout (port,MDC800_DEFAULT_TIMEOUT ); ret=gp_port_read(port,(char*)buffer,b); if (ret!=b) { printCError ("(mdc800_rs232_receive) can't read %i Bytes !\n",b); return GP_ERROR_IO; } return GP_OK; } /* * downloads data from camera and send * a checksum every 512 bytes. */ int mdc800_rs232_download (GPPort *port,unsigned char* buffer, int size) { int readen=0,i,j; unsigned char checksum; unsigned char DSC_checksum; int numtries=0; gp_port_set_timeout(port, MDC800_DEFAULT_TIMEOUT ); while (readen < size) { if (!mdc800_rs232_receive (port,&buffer[readen],512)) return readen; checksum=0; for (i=0; i<512; i++) checksum=(checksum+buffer[readen+i])%256; if (gp_port_write (port,(char*) &checksum,1) < GP_OK) return readen; if (!mdc800_rs232_receive (port,&DSC_checksum,1)) return readen; if (checksum != DSC_checksum) { numtries++; printCError ("(mdc800_rs232_download) checksum: software %i, DSC %i , reload block! (%i) \n",checksum,DSC_checksum,numtries); if (numtries > 10) { printCError ("(mdc800_rs232_download) to many retries, giving up.."); return 0; } } else { readen+=512; numtries=0; } } for (i=0; i<4; i++) { printCError ("%i: ",i); for (j=0; j<8; j++) printCError (" %i", buffer[i*8+j]); printCError ("\n"); } return readen; } libgphoto2-2.5.9/camlibs/mustek/core.c0000644000175000001440000004525712610415617014553 00000000000000/* * Copyright 1999/2000 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * gphoto driver for the Mustek MDC800 Digital Camera. The driver * supports rs232 and USB. */ #include #include #include #include #include "core.h" #include "print.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define _(String) (String) # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif /*---------------------- Funktion for Communication ------------------------ */ /* * Send the Initial Command. If the device is rs232 this * function will probe for the baudrate. */ static int mdc800_sendInitialCommand (Camera *camera, unsigned char* answer) { int baud_rates[3]={19200,57600,115200}; int rate,ret; unsigned char command [8]={COMMAND_BEGIN,COMMAND_INIT_CONNECT,0,0,0,COMMAND_END,0,0}; if (camera->port->type == GP_PORT_USB) return mdc800_io_sendCommand_with_retry(camera->port,command,answer,8,1,1); for (rate=0;rate<3;rate++) { GPPortSettings settings; ret = gp_port_get_settings(camera->port,&settings); if (ret != GP_OK) return ret; settings.serial.speed = baud_rates[rate]; ret = gp_port_set_settings(camera->port, settings); if (ret != GP_OK) return ret; if (GP_OK==mdc800_io_sendCommand_with_retry(camera->port,command,answer,8,1,1)) { printCoreNote("RS232 Baudrate probed at %d.\n",baud_rates[rate]); return GP_OK; } printCoreError("Probing RS232 Baudrate with %d fails.\n",baud_rates[rate]); } printCoreError ("Probing failed completely.\n"); return GP_ERROR_IO; } /* * Opens the Camera: * (camera is already opened by gphoto2) * (1) send Initial command */ int mdc800_openCamera (Camera *camera) { unsigned char answer [8]; int i,ret; if (camera->port->type == GP_PORT_USB) { printCoreNote ("Device Registered as USB.\n"); } else { printCoreNote ("Device Registered as RS232. \n"); } camera->pl = malloc(sizeof(struct _CameraPrivateLibrary)); if (!camera->pl) return GP_ERROR_NO_MEMORY; camera->pl->system_flags_valid = 0; camera->pl->memory_source = -1; /* Send initial command */ ret = mdc800_sendInitialCommand(camera,answer); if (ret != GP_OK) { printCoreError ("(mdc800_openCamera) can't send initial command.\n"); return ret; } printCoreNote ("Firmware info (last 5 Bytes) : "); for (i=0; i<8; i++) printCoreNote ("%i ", answer[i]); printCoreNote ("\n"); camera->pl->system_flags_valid=0; camera->pl->memory_source=-1; ret = mdc800_setDefaultStorageSource(camera); if (ret != GP_OK) { printCoreError ("(mdc800_openCamera) can't set Storage Source.\n"); return ret; } return GP_OK; } int mdc800_closeCamera (Camera *camera) { if (camera->pl) { free(camera->pl); camera->pl = NULL; } return GP_OK; } /* * Sets the camera speed to the defined value: * 0: 19200, 1:57600, 2: 115200 */ int mdc800_changespeed (Camera *camera,int new) { int baud_rate [3]={19200,57600,115200}; GPPortSettings settings; int ret,oldrate; printFnkCall ("(mdc800_changespeed) called.\n"); if (camera->port->type != GP_PORT_SERIAL) /* USB ... */ return GP_OK; gp_port_get_settings(camera->port,&settings); if (settings.serial.speed == baud_rate[new]) /* nothing to do */ return GP_OK; for (oldrate=0;oldrateport,COMMAND_CHANGE_RS232_BAUD_RATE,new,oldrate,0,0,0); if (ret != GP_OK) { printCoreError ("(mdc800_changespeed) can't send first command.\n"); return GP_ERROR_IO; } settings.serial.speed = baud_rate[new]; ret = gp_port_set_settings(camera->port,settings); if (ret != GP_OK) { printCoreError ("(mdc800_changespeed) Changing Baudrate fails.\n"); return ret; } /* Second Command */ ret = mdc800_io_sendCommand(camera->port,COMMAND_CHANGE_RS232_BAUD_RATE,new,new,0,0,0); if (ret != GP_OK) { printCoreError ("(mdc800_changespeed) can't send second command.\n"); return ret; } printCoreNote ("Set Baudrate to %d\n", baud_rate[new]); return GP_OK; } /* * Get the current Bautrate */ int mdc800_getSpeed (Camera *camera, int *speed) { int rate, ret, baud_rate [3]={19200,57600,115200}; GPPortSettings settings; if (camera->port->type != GP_PORT_SERIAL) return GP_ERROR_IO; ret = gp_port_get_settings(camera->port,&settings); if (ret!=GP_OK) return ret; for (rate=0;rate<3;rate++) if (settings.serial.speed == baud_rate[rate]) break; if (rate == 3) return GP_ERROR_IO; *speed = rate; return GP_OK; } /* * Sets Target * 1: image, 2:thumbnail, 3:video, 4:not setting */ int mdc800_setTarget (Camera *camera,int value) { return mdc800_io_sendCommand(camera->port,COMMAND_SET_TARGET,value,0,0,0,0); } /* * Loads a thumbnail from the cam . */ int mdc800_getThumbnail (Camera *camera,int index, void **data, int *size) { int ret; printFnkCall ("(mdc800_getThumbNail) called for %i . \n",index); *size = 4096; *data = malloc(4096); if (!*data) return GP_ERROR_NO_MEMORY; ret = mdc800_io_sendCommand(camera->port,COMMAND_GET_THUMBNAIL,index/100,(index%100)/10,index%10,*data,4096); if (ret != GP_OK) { printCoreError ("(mdc800_getThumbNail) can't get Thumbnail.\n"); return ret; } mdc800_correctImageData(*data,1,0,camera->pl->memory_source == 1); return GP_OK; } /* * Load an Image from the cam .. */ int mdc800_getImage (Camera *camera, int nr, void **data, int *size) { unsigned char buffer[3]; int imagequality=-1; int imagesize=0; int ret; printFnkCall ("(mdc800_getImage) called for %i . \n",nr); ret = mdc800_setTarget (camera,1); if (GP_OK != ret) { printCoreError ("(mdc800_getImage) can't set Target. \n"); return ret; } ret = mdc800_io_sendCommand(camera->port,COMMAND_GET_IMAGE_SIZE,nr/100,(nr%100)/10,nr%10,buffer,3); if (ret != GP_OK) { printCoreError ("(mdc800_getImage) request for Imagesize of %i fails.\n",nr); return ret; } imagesize = buffer[0]*65536+buffer[1]*256+buffer[2]; printCoreNote ("Imagesize of %i is %i ",nr,imagesize); switch (imagesize/1024) { case 48: imagequality=0; printCoreNote ("(Economic Quality 506x384)\n"); break; case 128: imagequality=1; printCoreNote ("(Standard Quality 1012x768)\n"); break; case 320: imagequality=2; printCoreNote ("(High Quality 1012x768)\n"); break; case 4: printCoreNote ("(ThumbNail ? 112x96)\n"); imagequality=-1; break; default: printCoreNote ("(not detected)\n"); return 0; } *size = imagesize; *data = malloc(imagesize); ret = mdc800_io_sendCommand(camera->port,COMMAND_GET_IMAGE,nr/100,(nr%100)/10,nr%10,*data,imagesize); if (ret != GP_OK) { printCoreError ("(mdc800_getImage) request fails for Image %i.\n",nr); return 0; } mdc800_correctImageData(*data,imagequality == -1,imagequality,camera->pl->memory_source == 1); return GP_OK; } /* ------ SystemStatus of the Camera ------------------------------------------/ */ /* Load the Status from the camera if necessary */ int mdc800_getSystemStatus (Camera *camera) { int ret = GP_OK; int tries = 3; if (camera->pl->system_flags_valid) return GP_OK; fprintf(stderr,"mdc800_getSystemStatus entered...\n"); while (tries--) { ret = mdc800_io_sendCommand(camera->port,COMMAND_GET_SYSTEM_STATUS,0,0,0,camera->pl->system_flags,4); if (ret == GP_OK) break; } if (ret!=GP_OK) { printCoreError ("(mdc800_getSystemStatus) request fails.\n"); return ret; } fprintf(stderr,"mdc800_getSystemStatus leaving.\n"); camera->pl->system_flags_valid=1; return GP_OK; } int mdc800_isCFCardPresent(Camera *camera) { mdc800_getSystemStatus(camera); if (camera->pl->system_flags_valid) return ((camera->pl->system_flags[0]&1) == 0); else { printCoreError ("(mdc800_isCFCardPresent) detection fails.\n"); return 0; } } int mdc800_isBatteryOk(Camera *camera) { mdc800_getSystemStatus(camera); return ((camera->pl->system_flags[0]&4) == 0)?1:0; } /* * Gets CamMode. * 0: Camera, 1: Playback, 2:VCam */ int mdc800_getMode(Camera *camera) { mdc800_getSystemStatus(camera); if ((camera->pl->system_flags[1]&16) == 0) return ((camera->pl->system_flags[1]&32) == 0)?1:0; else return 2; } /* * Return status of Flashlight. The * answer is one of MDC800_FLASHLIGHT_ Mask. */ int mdc800_getFlashLightStatus(Camera *camera) { mdc800_getSystemStatus(camera); return (camera->pl->system_flags[3]&7); } int mdc800_isLCDEnabled(Camera *camera) { mdc800_getSystemStatus(camera); return ((camera->pl->system_flags[1]&4) == 4); } int mdc800_isMenuOn(Camera *camera) { mdc800_getSystemStatus(camera); return ((camera->pl->system_flags[1]&1) == 1); } int mdc800_isAutoOffEnabled(Camera *camera) { mdc800_getSystemStatus(camera); return ((camera->pl->system_flags[1]&8) == 8); } /* ----- Other fine functions------------------------------------------------- */ /* * Sets Source of Images : * 0: FlashCard, 1: Internal Memory */ int mdc800_setStorageSource (Camera *camera,int flag) { int ret; if (flag == camera->pl->memory_source) return GP_OK; /* Check wether FlashCard is present */ if ((flag == 0) && mdc800_isCFCardPresent (camera)) { printCoreNote ("There's is no FlashCard in the Camera !\n"); return GP_OK; } printFnkCall ("(mdc800_setStorageSource) called with flag=%i\n",flag); ret=mdc800_io_sendCommand(camera->port,COMMAND_SET_STORAGE_SOURCE,flag,0,0,0,0); if (ret != GP_OK) { if (flag) { printCoreError ("Can't set InternalMemory as Input!\n"); } else { printCoreError ("Can't set FlashCard as Input!\n"); } return ret; } printCoreNote ("Storage Source set to "); if (flag) { printCoreNote ("Internal Memory.\n"); } else { printCoreNote ("Compact Flash Card.\n"); } camera->pl->system_flags_valid=0; camera->pl->memory_source=flag; return GP_OK; } /* * Sets the default storage source. * Default means, that if there's a FlashCard, the Flashcard * is used, else the InternalMemory * * If camera->pl->memory_source is set ( after driver has been closed ), * this value will be used. */ int mdc800_setDefaultStorageSource (Camera *camera) { int ret,source; if (camera->pl->memory_source != -1) { source=camera->pl->memory_source; camera->pl->memory_source=-1; } else { source=mdc800_isCFCardPresent (camera)?0:1; } ret=mdc800_setStorageSource (camera,source); if (ret!=GP_OK) { printCoreError ("(mdc800_setDefaultStorageSource) Setting Storage Source fails\n"); return ret; } return GP_OK; } /* * Returns what StorageSource is selected by the driver * 0: FlashCard, 1: Internal */ int mdc800_getStorageSource(Camera *camera) { if (camera->pl->memory_source == -1) mdc800_setDefaultStorageSource(camera); return camera->pl->memory_source; } /* * Sets Camera to Camera- or PlaybackMode * m: 0 Camera, 1 Playback, 2:VCam (USB) */ int mdc800_setMode (Camera *camera,int m) { int last=mdc800_getMode (camera); int ret; /* if (mdc800_getMode () == m) return 1; */ switch (m) { case 0: ret = mdc800_io_sendCommand(camera->port,COMMAND_SET_CAMERA_MODE,0,0,0,0,0); if (ret != GP_OK) { printCoreError ("(mdc800_setMode) setting Camera Mode fails\n"); return ret; } if (last != m) printCoreNote ("Mode set to Camera Mode.\n"); break; case 1: ret = mdc800_io_sendCommand(camera->port,COMMAND_SET_PLAYBACK_MODE,0,0,0,0,0); if (ret != GP_OK) { printCoreError ("(mdc800_setMode) setting Playback Mode fails\n"); return ret; } if (last != m) printCoreNote ("Mode set to Payback Mode.\n"); break; } camera->pl->system_flags_valid=0; return GP_OK; } /* * Sets up Flashlight. The waitForCommit waits a long * time, to give the camera enough time to load the * flashlight. */ int mdc800_setFlashLight (Camera* camera,int value) { int command=0,redeye_flag=0,ret; if (mdc800_getFlashLightStatus (camera) == value) return GP_OK; redeye_flag=(value&MDC800_FLASHLIGHT_REDEYE) != 0; if ((value&MDC800_FLASHLIGHT_ON) != 0) command=COMMAND_SET_FLASHMODE_ON; else if ((value&MDC800_FLASHLIGHT_OFF) != 0) { command=COMMAND_SET_FLASHMODE_OFF; redeye_flag=0; } else command=COMMAND_SET_FLASHMODE_AUTO; camera->pl->system_flags_valid=0; ret = mdc800_io_sendCommand(camera->port,command,redeye_flag,0,0,0,0); if (ret != GP_OK) { printCoreError ("(mdc800_setFlashLight) sending command fails.\n"); return ret; } printCoreNote ("%s", mdc800_getFlashLightString(value)); printCoreNote ("\n"); return GP_OK; } /* * Gets a String with the Text of the Flashlight-Status * depending on value */ char* mdc800_getFlashLightString (int value) { switch (value) { case ( MDC800_FLASHLIGHT_REDEYE | MDC800_FLASHLIGHT_AUTO ) : return _("FlashLight : Auto (RedEye Reduction)"); case MDC800_FLASHLIGHT_AUTO : return _("FlashLight : Auto"); case ( MDC800_FLASHLIGHT_REDEYE | MDC800_FLASHLIGHT_ON ) : return _("FlashLight : On (RedEye Reduction)"); case MDC800_FLASHLIGHT_ON : return _("FlashLight : On"); case MDC800_FLASHLIGHT_OFF : return _("FlashLight : Off"); } return _("FlashLight : undefined"); } /* * Enable/Disable the LCD */ int mdc800_enableLCD (Camera*camera,int enable) { int ret,command; if (enable == mdc800_isLCDEnabled (camera)) return GP_OK; if (enable) command=COMMAND_SET_LCD_ON; else command=COMMAND_SET_LCD_OFF; camera->pl->system_flags_valid=0; ret = mdc800_io_sendCommand (camera->port,command,0,0,0,0,0); if (ret!=GP_OK) { printCoreError ("(mdc800_enableLCD) can't enable/disable LCD\n"); return ret; } if (enable) { printCoreNote ("LCD is enabled\n"); } else { printCoreNote ("LCD is disabled\n"); } return GP_OK; } /* * Shows the specified Image, the Camera has to * be in Playback Mode ! */ int mdc800_playbackImage (Camera *camera,int nr ) { int ret; ret = mdc800_getMode (camera); if (ret != GP_OK) { printCoreError ("(mdc800_showImage) camera must be in Playback Mode !"); return ret; } ret = mdc800_io_sendCommand (camera->port,COMMAND_PLAYBACK_IMAGE,nr/100,(nr%100)/10,nr%10,0,0); if (ret!=GP_OK) { printCoreError ("(mdc800_showImage) can't playback Image %i \n",nr); return ret; } return GP_OK; } /* * With ths function you can get information about, how many * pictures can be stored in the free memory of the camera. * * h: High Quality, s: Standard Quality, e: Economy Quality * If one of these Pointers are 0 the will be ignored. */ int mdc800_getRemainFreeImageCount (Camera *camera,int* h,int* s,int *e) { unsigned char data [6]; int ret; ret = mdc800_io_sendCommand (camera->port,COMMAND_GET_REMAIN_FREE_IMAGE_COUNT,0,0,0,data,6); if (ret != GP_OK) { printCoreError ("(mdc800_getRemainFreeImageCount) Error sending Command.\n"); return ret; } if (h) *h=(int)((data[0]/16)*1000)+((data[0]%16)*100)+((data[1]/16)*10)+(data[1]%16); if (s) *s=(int)((data[2]/16)*1000)+((data[2]%16)*100)+((data[3]/16)*10)+(data[3]%16); if (e) *e=(int)((data[4]/16)*1000)+((data[4]%16)*100)+((data[5]/16)*10)+(data[5]%16); return GP_OK; } /* * Get Image Quallity * 0: Economic, 1:Standard, 2:High */ int mdc800_getImageQuality (Camera *camera, unsigned char *retval) { int ret; ret = mdc800_io_sendCommand (camera->port,COMMAND_GET_IMAGE_QUALITY,0,0,0,retval,1); if (ret!=GP_OK) { printCoreError ("(mdc800_getImageQuality) fails.\n"); return ret; } return GP_OK; } /* * Set Image Quality, return GP_OK if ok. */ int mdc800_setImageQuality (Camera *camera,int v) { return mdc800_io_sendCommand (camera->port,COMMAND_SET_IMAGE_QUALITY,v,0,0,0,0); } /* * Set the WhiteBalance value * 1:auto ,2:indoor, 4:indoor with flashlight, 8:outdoor */ int mdc800_setWB (Camera *camera, int v) { return mdc800_io_sendCommand(camera->port,COMMAND_SET_WB,v,0,0,0,0); } /* * Return the Exposure settings and W.B. */ int mdc800_getWBandExposure (Camera *camera,int* exp, int* wb) { unsigned char retval[2]; int ret; /* What's that here is a real diffenrence between USB and RS232 */ int toggle= (camera->port->type == GP_PORT_USB); ret = mdc800_io_sendCommand(camera->port,COMMAND_GET_WB_AND_EXPOSURE,0,0,0,retval,2); if (ret == GP_OK) { (*exp)= retval[toggle]-2; (*wb)= retval[1-toggle]; return 1; } printCoreError ("(mdc800_getWBandExposure) fails.\n"); return 0; } /* * Sets the Exposure Value */ int mdc800_setExposure (Camera *camera,int v) { return mdc800_io_sendCommand(camera->port,COMMAND_SET_EXPOSURE,v+2,0,0,0,0); } /* * Sets the Exposure Mode * 0: MTRX 1:CNTR */ int mdc800_setExposureMode (Camera *camera,int m) { return mdc800_io_sendCommand (camera->port,COMMAND_SET_EXPOSURE_MODE,m,0,0,0,0); } /* * return the Exposure Mode or -1 */ int mdc800_getExposureMode (Camera *camera,int *retval) { unsigned char cretval; int ret; ret = mdc800_io_sendCommand (camera->port,COMMAND_GET_EXPOSURE_MODE,0,0,0,&cretval,1); if (ret == GP_OK) *retval = cretval; return ret; } /* * Enable, Disable the Menu */ int mdc800_enableMenu (Camera *camera,int enable) { char command=enable?COMMAND_SET_MENU_ON:COMMAND_SET_MENU_OFF; if (enable == mdc800_isMenuOn (camera)) return GP_OK; camera->pl->system_flags_valid=0; return mdc800_io_sendCommand (camera->port,command,0,0,0,0,0); } int mdc800_number_of_pictures (Camera *camera, int *nrofpics) { unsigned char answer [2]; int ret; printFnkCall ("(mdc800_number_of_pictures) called.\n"); ret= mdc800_setTarget (camera, 1); if (ret != GP_OK) { printAPIError ("(mdc800_number_of_pictures) can't set Target\n"); return ret; } /* if (!mdc800_setMode (1)) { printError ("(mdc800_number_of_pictures) can't set Mode\n"); mdc800_close (); return 0; } */ ret = mdc800_io_sendCommand(camera->port,COMMAND_GET_NUM_IMAGES,0,0,0,answer,2); if (ret != GP_OK) { printAPIError ("(mdc800_getNumberOfImages) request Number of Pictures fails.\n"); return ret; } *nrofpics=answer[0]*256+answer [1]; return GP_OK; } libgphoto2-2.5.9/camlibs/mustek/Makefile-files0000644000175000001440000000075612561423351016211 00000000000000EXTRA_DIST += mustek/AUTHOR mustek/README.mustek mustek/ChangeLog mustek/STATUS camlibdoc_DATA += mustek/README.mustek EXTRA_LTLIBRARIES += mustek.la mustek_la_SOURCES = \ mustek/mdc800.c mustek/core.c mustek/image.c \ mustek/io.c mustek/rs232.c mustek/usb.c mustek/core.h mustek/image.h \ mustek/io.h mustek/mdc800_spec.h mustek/print.h mustek/rs232.h mustek/usb.h mustek_la_LDFLAGS = $(camlib_ldflags) mustek_la_DEPENDENCIES = $(camlib_dependencies) mustek_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/mustek/usb.h0000644000175000001440000000212112610415617014400 00000000000000/* * Copyright 1999/2000 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Header for USB Interface */ #ifndef _USB_H #define _USB_H #define MDC800_USB_ENDPOINT_COMMAND 0x01 #define MDC800_USB_ENDPOINT_STATUS 0x82 #define MDC800_USB_ENDPOINT_DOWNLOAD 0x84 #define MDC800_USB_IRQ_INTERVAL 255 /* 255ms */ int mdc800_usb_sendCommand (GPPort*,unsigned char* , unsigned char * , int ); #endif libgphoto2-2.5.9/camlibs/mustek/rs232.h0000644000175000001440000000205312610415617014466 00000000000000/* * Copyright 1999/2000 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _RS232_H #define _RS232_H int mdc800_rs232_sendCommand(GPPort*,unsigned char* , unsigned char * , int ); int mdc800_rs232_waitForCommit(GPPort*,char commandid); int mdc800_rs232_receive(GPPort*,unsigned char * , int ); int mdc800_rs232_download(GPPort*,unsigned char *, int); #endif libgphoto2-2.5.9/camlibs/mustek/mdc800_spec.h0000644000175000001440000000416712610415617015630 00000000000000/* * Copyright 1999/2000 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * Definition of Commands and usefull structs. */ #ifndef DEFINE_MDC800_SPEC_H #define DEFINE_MDC800_SPEC_H #define ANSWER_COMMIT 0xbb /* Commands */ #define COMMAND_BEGIN 0x55 #define COMMAND_END 0xAA #define COMMAND_INIT_CONNECT 0x00 #define COMMAND_GET_SYSTEM_STATUS 0x01 #define COMMAND_TAKE_PICTURE 0x02 #define COMMAND_SET_TARGET 0x03 #define COMMAND_DELETE_IMAGE 0x04 #define COMMAND_GET_IMAGE 0x05 #define COMMAND_GET_IMAGE_SIZE 0x07 #define COMMAND_GET_THUMBNAIL 0x09 #define COMMAND_CHANGE_RS232_BAUD_RATE 0x0b #define COMMAND_GET_NUM_IMAGES 0x0d #define COMMAND_SET_PLAYBACK_MODE 0x12 #define COMMAND_SET_CAMERA_MODE 0x16 #define COMMAND_PLAYBACK_IMAGE 0x17 #define COMMAND_SET_FLASHMODE_AUTO 0x18 #define COMMAND_SET_FLASHMODE_ON 0x19 #define COMMAND_SET_FLASHMODE_OFF 0x1A #define COMMAND_GET_WB_AND_EXPOSURE 0x20 #define COMMAND_SET_EXPOSURE 0x21 #define COMMAND_SET_WB 0x22 #define COMMAND_GET_REMAIN_FREE_IMAGE_COUNT 0x25 #define COMMAND_SET_LCD_ON 0x2a #define COMMAND_SET_LCD_OFF 0x2b #define COMMAND_SET_IMAGE_QUALITY 0x2d #define COMMAND_SET_MENU_ON 0x2f #define COMMAND_SET_MENU_OFF 0x30 #define COMMAND_SET_STORAGE_SOURCE 0x32 #define COMMAND_DISCONNECT 0x34 #define COMMAND_GET_IMAGE_QUALITY 0x49 #define COMMAND_SET_EXPOSURE_MODE 0x50 #define COMMAND_GET_EXPOSURE_MODE 0x51 #endif libgphoto2-2.5.9/camlibs/mustek/ChangeLog0000644000175000001440000000074412610415510015211 000000000000002007-12-30 Marcus Meissner * *.[ch]: Fixed signedness warnings, use unsigned char* more consistently. 2002-07-30 Lutz Müller * rs232.c: Change != GP_OK to < GP_OK. 2001-03-25 Marcus Meissner * *: forward ported from gphoto 0.4.3. I doesnt work for me due to USB interrupt problems which will hopefully clear up in the future. Someone please test if you have a serial cable. libgphoto2-2.5.9/camlibs/mustek/usb.c0000644000175000001440000001164212610415536014403 00000000000000/* * Copyright 1999/2000 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * gphoto driver for the Mustek MDC800 Digital Camera. The driver * supports rs232 and USB. */ #define _BSD_SOURCE /* Implemenation of the USB Version of ExecuteCommand */ #include #include #include #include "print.h" #include "usb.h" #include "io.h" #include "mdc800_spec.h" #include #include #include /* * Checks wether the camera responds busy */ static int mdc800_usb_isBusy (unsigned char* ch) { int i; for (i=0;i<8;i++) if (ch [i] != 0x99) return 0; return 1; } /* * Checks wether the Camera is ready */ static int mdc800_usb_isReady (unsigned char *ch) { int i; for (i=0;i<8;i++) if (ch [i] != 0xbb) return 0; return 1; } /* * Waits for the camera * type: 0: Wait until the camera gets ready * 1: Read data from irq * The function stores the readen 8 Bytes in data. * and return 0 on success else -1. */ static int mdc800_usb_readFromIrq (GPPort *port,int type,unsigned char* data,int timeout) { int ret; struct timeval tv; gp_port_set_timeout(port,1); timeout+=10*MDC800_USB_IRQ_INTERVAL; gettimeofday(&tv,NULL); while (timeout>=0) { /* try a read */ ret = gp_port_check_int(port,(char*)data,8); if (ret!=8) { printCError ("(mdc800_usb_readFromIRQ) reading bytes from irq fails (%d)\n",ret); return ret; } if (0) { int i=0; printf ("irq :"); for (i=0; i<8; i++) { printf ("%i ", data [i]); } printf ("\n"); } /* check data */ if (type) { if (!(mdc800_usb_isReady(data)||mdc800_usb_isBusy(data))) { fprintf(stderr,"got data.\n"); /* Data received successfull */ return GP_OK; } } else { if (mdc800_usb_isReady (data)) { fprintf(stderr,"got readiness.\n"); /* Camera response ready */ return GP_OK; } } /* wait the specified time */ if (1) { usleep(MDC800_USB_IRQ_INTERVAL * 1000); timeout-=MDC800_USB_IRQ_INTERVAL; } } /* Timeout */ printCError ("(mdc800_usb_readFromIrq) timeout\n"); return GP_ERROR_IO; } int mdc800_usb_sendCommand(GPPort*port,unsigned char*command,unsigned char*buffer,int length) { unsigned char tmp_buffer [16]; GPPortSettings settings; int ret; printf ("(mdc800_usb_sendCommand) id:%i (%i,%i,%i,%i,%i,%i),answer:%i\n",command[1],command[2],command[3],command[4],command[5],command[6],command[7],length); /* Send the Command */ gp_port_set_timeout(port,MDC800_DEFAULT_TIMEOUT); gp_port_get_settings(port,&settings); settings.usb.outep = MDC800_USB_ENDPOINT_COMMAND; gp_port_set_settings(port,settings); ret = mdc800_usb_readFromIrq(port,0,tmp_buffer,MDC800_DEFAULT_TIMEOUT); if (ret != GP_OK) { fprintf(stderr,"Camera did not get ready before mdc800_usb_sendCommand!\n"); } if ((ret=gp_port_write(port,(char*)command,8)) != 8) { printCError ("(mdc800_usb_sendCommand) sending Command fails (%d)!\n",ret); return ret; } /* receive the answer */ switch (command [1]) { case COMMAND_GET_THUMBNAIL: case COMMAND_GET_IMAGE: gp_port_set_timeout (port, 2000); if (gp_port_read (port,(char*)buffer,64) != 64) { printCError ("(mdc800_usb_sendCommand) requesting 64Byte dummy data fails.\n"); return GP_ERROR_IO; } fprintf(stderr,"got 64 byte\n"); { /* Download loop */ int readen=0; while (readen < length) { if (gp_port_read(port,(char*)(buffer+readen),64) != 64) { printCError ("(mdc800_usb_sendCommand) reading image data fails.\n"); return 0; } fprintf(stderr,"got 64 byte\n"); readen+=64; } } break; default : if (length > 0) { ret = mdc800_usb_readFromIrq (port,1,tmp_buffer, mdc800_io_getCommandTimeout(command[1])); if (ret != GP_OK) { /* Reading fails */ printCError ("(mdc800_usb_sendCommand) receiving answer fails (%d).\n",ret); return ret; } memcpy(buffer,tmp_buffer,length); } } #if 1 /* Waiting for camera to get ready */ ret = mdc800_usb_readFromIrq(port,0,tmp_buffer,mdc800_io_getCommandTimeout (command[1])); if (ret!=GP_OK) { /* Reading fails */ printCError ("(mdc800_usb_sendCommand) camera didn't get ready in the defined intervall ?!\n"); return ret; } #endif return GP_OK; } libgphoto2-2.5.9/camlibs/mustek/print.h0000644000175000001440000000255112610415617014752 00000000000000/* * Copyright 1999/2000 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Defines some PrintMacros. They are need to disable much outputs they were used during development. */ #ifndef DEFINE_PRINT_H #define DEFINE_PRINT_H #include /* Message or Errors from the gphoto API */ #define printAPINote if (1) printf #define printAPIError if (1) printf /* only for debugging : The FunktionCall */ #define printFnkCall if (0) printf /* Message or Errors from the Core Layer */ #define printCoreNote if (1) printf #define printCoreError if (1) printf /* CError are Error Messages below */ /* the Core of this driver */ #define printCError if (1) printf #endif libgphoto2-2.5.9/camlibs/mustek/image.h0000644000175000001440000000163012610415617014675 00000000000000/* * Copyright 1999 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* * JPeg corrections table */ #ifndef DEFINE_IMAGE_H #define DEFINE_IMAGE_H int mdc800_correctImageData (unsigned char*, int,int,int ); #endif libgphoto2-2.5.9/camlibs/mustek/core.h0000644000175000001440000000560112610415617014545 00000000000000/* * Copyright 1999/2000 by Henning Zabel * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _MUSTEK_CORE_H #define _MUSTEK_CORE_H #include "io.h" #include "mdc800_spec.h" #include "image.h" #define MDC800_FLASHLIGHT_REDEYE 1 #define MDC800_FLASHLIGHT_ON 2 #define MDC800_FLASHLIGHT_OFF 4 #define MDC800_FLASHLIGHT_AUTO 0 struct _CameraPrivateLibrary { unsigned char system_flags[4]; int system_flags_valid; int memory_source; }; /* -------------------------------------------------------------------------- */ int mdc800_openCamera (Camera*); int mdc800_closeCamera (Camera*); int mdc800_changespeed (Camera*,int); int mdc800_getSpeed (Camera*,int *); /* - Camera must be open for these functions -------------------------------- */ int mdc800_setTarget (Camera *camera, int); int mdc800_getThumbnail (Camera *cam, int nr, void **data,int *size); int mdc800_getImage (Camera *cam,int nr, void **data, int *size); /* ------- SystemStatus ---------------------------------------------------- */ int mdc800_getSystemStatus(Camera *); int mdc800_isCFCardPresent(Camera *); int mdc800_getMode(Camera*); int mdc800_getFlashLightStatus(Camera*); int mdc800_isLCDEnabled(Camera*); int mdc800_isBatteryOk(Camera*); int mdc800_isMenuOn(Camera*); int mdc800_isAutoOffEnabled(Camera*); int mdc800_getStorageSource(Camera*); /* ------- Other Functions -------------------------------------------------- */ /* Most of these Function depends on the Storage Source */ int mdc800_setDefaultStorageSource(Camera*); int mdc800_setStorageSource (Camera *,int); int mdc800_setMode (Camera *,int); int mdc800_enableLCD (Camera*,int); int mdc800_playbackImage (Camera*,int ); int mdc800_getRemainFreeImageCount (Camera*,int*,int* ,int*); int mdc800_setFlashLight (Camera*,int ); char* mdc800_getFlashLightString (int); int mdc800_getImageQuality (Camera*,unsigned char *retval); int mdc800_setImageQuality (Camera*,int); int mdc800_getWBandExposure (Camera*,int*, int*); int mdc800_setExposure (Camera*,int); int mdc800_setWB (Camera*,int); int mdc800_setExposureMode (Camera*,int); int mdc800_getExposureMode (Camera*,int *); int mdc800_enableMenu (Camera *,int); int mdc800_number_of_pictures (Camera *camera, int *nrofpics); #endif libgphoto2-2.5.9/camlibs/sonydscf55/0000755000175000001440000000000012623156270014215 500000000000000libgphoto2-2.5.9/camlibs/sonydscf55/camera.c0000644000175000001440000001626112610415536015536 00000000000000/* Sony DSC-F55 & MSAC-SR1 - gPhoto2 camera library * Copyright 2001, 2002, 2004 Raymond Penners * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include "sony.h" #include "nls.h" #include #define GP_MODULE "sonydscf55" struct ModelInfo { SonyModel model_id; const char *model_str; }; static const struct ModelInfo models[] = { { SONY_MODEL_MSAC_SR1, "Sony:MSAC-SR1" }, { SONY_MODEL_DCR_PC100, "Sony:DCR-PC100" }, { SONY_MODEL_TRV_20E, "Sony:TRV-20E" }, { SONY_MODEL_DSC_F55, "Sony:DSC-F55" } }; int camera_id(CameraText * id) { strcpy(id->text, SONY_CAMERA_ID); return (GP_OK); } int camera_abilities(CameraAbilitiesList * list) { int i; CameraAbilities a; for (i = 0; i < sizeof(models) / sizeof(models[i]); i++) { memset(&a, 0, sizeof(a)); strcpy(a.model, models[i].model_str); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 0; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_PREVIEW | GP_FILE_OPERATION_EXIF; a.folder_operations = GP_FOLDER_OPERATION_NONE; gp_abilities_list_append(list, a); } return (GP_OK); } /** * De-initialises camera */ static int camera_exit(Camera * camera, GPContext *context) { int rc; GP_DEBUG( "camera_exit()"); if (camera->pl) { rc = sony_exit (camera); if (rc < 0) return (rc); free (camera->pl); camera->pl = NULL; } return (GP_OK); } static int camera_about(Camera * camera, CameraText * about, GPContext *context) { strcpy(about->text, _("Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners ")); return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int mpeg, rc = GP_OK; GP_DEBUG("camera_folder_list_files()"); for (mpeg = 0; mpeg <= 1 && rc == GP_OK; mpeg++) { int i, count; SonyFileType file_type; file_type = mpeg ? SONY_FILE_MPEG : SONY_FILE_IMAGE; rc = sony_file_count(camera, file_type, &count); if (rc != GP_OK) { break; } for (i = 1; i <= count; i++) { char buf[13]; rc = sony_file_name_get(camera, i, file_type, buf); if (rc != GP_OK) { break; } gp_list_append(list, buf, NULL); if (gp_context_cancel(context) == GP_CONTEXT_FEEDBACK_CANCEL) { rc = GP_ERROR_CANCEL; } } } return rc; } static int get_sony_file_id(Camera *camera, const char *folder, const char *filename, GPContext *context, int *sony_id, SonyFileType *sony_type) { int num = gp_filesystem_number(camera->fs, folder, filename, context); if (num < 0) return (num); num++; if (sony_is_mpeg_file_name(filename)) { const char *name_found; int mpeg_num = 0; do { mpeg_num++; gp_filesystem_name(camera->fs, folder, num-mpeg_num, &name_found, context); } while (sony_is_mpeg_file_name(name_found) && (mpeg_num<=num)); mpeg_num--; *sony_type = SONY_FILE_MPEG; *sony_id = mpeg_num; } else { *sony_type = SONY_FILE_IMAGE; *sony_id = num; } return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile * file, void *data, GPContext *context) { Camera *camera = data; int num; SonyFileType file_type; int rc = GP_ERROR; GP_DEBUG("camera_file_get(\"%s/%s\")", folder, filename); rc = get_sony_file_id(camera, folder, filename, context, &num, &file_type); if (rc != GP_OK) return rc; switch (type) { case GP_FILE_TYPE_NORMAL: if (file_type == SONY_FILE_MPEG) { rc = sony_mpeg_get(camera, num, file, context); } else { rc = sony_image_get(camera, num, file, context); } break; case GP_FILE_TYPE_PREVIEW: if (file_type == SONY_FILE_MPEG) { rc = GP_OK; } else { rc = sony_thumbnail_get(camera, num, file, context); } break; case GP_FILE_TYPE_EXIF: if (file_type == SONY_FILE_MPEG) { rc = GP_OK; } else { rc = sony_exif_get(camera, num, file, context); } break; default: rc = GP_ERROR_NOT_SUPPORTED; } return rc; } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int num, rc; SonyFileType file_type; rc = get_sony_file_id(camera, folder, filename, context, &num, &file_type); if (rc != GP_OK) return rc; rc = sony_image_info(camera, num, file_type, info, context); return rc; } static int model_compare(const char *a, const char *b) { const char *amod; const char *bmod; int alen, blen; alen = strlen(a); blen = strlen(b); if (alen != blen) return 0; amod = strchr(a, ':'); bmod = strchr(b, ':'); if ((amod == NULL && bmod == NULL) || (amod != NULL && bmod != NULL)) { return !strcasecmp(a, b); } if (amod != NULL) { int aidx = amod - a; return (!strncasecmp(a, b, aidx)) && (!strcasecmp(a+aidx+1, b+aidx+1)); } if (bmod != NULL) { int bidx = bmod - b; return (!strncasecmp(a, b, bidx)) && (!strcasecmp(a+bidx+1, b+bidx+1)); } /* can't really get here */ return 42; } static int get_camera_model(Camera *camera, SonyModel *model) { CameraAbilities a; int rc; rc = gp_camera_get_abilities (camera, &a); if (rc == GP_OK) { int i; rc = GP_ERROR; for (i = 0; i < sizeof(models) / sizeof(models[i]); i++) { if (model_compare(models[i].model_str, a.model)) { rc = GP_OK; *model = models[i].model_id; break; } } } return rc; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func }; /** * Initialises camera */ int camera_init(Camera * camera, GPContext *context) { int rc; SonyModel model; rc = get_camera_model(camera, &model); if (rc != GP_OK) return rc; camera->functions->exit = camera_exit; camera->functions->about = camera_about; gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); camera->pl = malloc (sizeof (CameraPrivateLibrary)); if (!camera->pl) return (GP_ERROR_NO_MEMORY); rc = sony_init (camera, model); if (rc < 0) { free (camera->pl); camera->pl = NULL; return (rc); } return (GP_OK); } /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/sonydscf55/sony.c0000644000175000001440000004353512610415536015302 00000000000000/* Sony DSC-F55 & MSAC-SR1 - gPhoto2 camera library * Copyright 2001, 2002, 2004 Raymond Penners * Copyright 2000 Mark Davies * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include "sony.h" #define GP_MODULE "sony55" /** * Constants */ #define SONY_CONVERSE_RETRY 5 #define SONY_INVALID_CHECKSUM 0x40 #define SONY_INVALID_SEQUENCE 0x41 #define SONY_RESET_SEQUENCE 0x42 #define SONY_RESEND_PACKET 0x43 #define SONY_ESCAPE_CHAR 0x7d #define SONY_START_CHAR 0xc0 #define SONY_END_CHAR 0xc1 static const unsigned char START_PACKET = 192; static const unsigned char END_PACKET = 193; static const char ESC_START_STRING[] = { 0x7d, 0xe0 }; static const char ESC_END_STRING[] = { 0x7d, 0xe1 }; static const char ESC_ESC_STRING[] = { 0x7d, 0x5d }; static const unsigned char PacketCodes[2] = { 192, 193 }; #if defined(USE_ALL_TYPES) static unsigned char EmailImage[] = { 0, 2, 2, 0, 16, '/', 'M', 'S', 'S', 'O', 'N', 'Y', '/', 'I', 'M', 'C', 'I', 'F', '1', '0', '0' }; #endif static unsigned char IdentString[] = { 0, 1, 1, 'S', 'O', 'N', 'Y', ' ', ' ', ' ', ' ', ' ' }; static unsigned char EmptyPacket[] = { 0 }; /* null packet */ static unsigned char SetTransferRate[] = { 0, 1, 3, 0 }; static unsigned char SendImageCount[] = { 0, 2, 1 }; static unsigned char StillImage[] = { 0, 2, 2, 0, 14, '/', 'D', 'C', 'I', 'M', '/', '1', '0', '0', 'M', 'S', 'D', 'C', 'F' }; static unsigned char MpegImage[] = { 0, 2, 2, 0, 16, '/', 'M', 'S', 'S', 'O', 'N', 'Y', '/', 'M', 'O', 'M', 'L', '0', '0', '0', '1' }; static unsigned char SelectImage[] = { 0, 2, 48, 0, 0, 0, 0 }; static unsigned char SendImage[] = { 0, 2, '1', 0, 1, 0, 0 }; static unsigned char SendNextImagePacket[] = { 0, 2, '1', 0 }; static unsigned char SendThumbnail[] = { 0, 2, '0', 0 }; #if 0 static unsigned char SelectCamera[] = { 0, 1, 2 }; static unsigned char DownloadComplete[] = { 0, 2, '0', 255 }; static unsigned char X10Camera[] = { 0, 1, 5 }; static unsigned char X5Camera[] = { 0, 2, 1 }; static unsigned char X13Camera[] = { 0, 2, 18 }; #endif /* * This array contains the expected packet sequence code to to be applied/ * checked for. */ static const unsigned char sony_sequence[] = { 14, 0, 32, 34, 66, 68, 100, 102, 134, 136, 168, 170, 202, 204, 236, 238, 255 }; #ifdef __linux__ static const int baud_rate = 115200; #else # ifdef __sun__ static const int baud_rate = 38400; # else static const int baud_rate = 9600; # endif #endif /** * Returns transfer rate ID */ static int sony_baud_to_id(long baud) { int r; switch (baud) { case 115200: r = 4; break; case 57600: r = 3; break; /* FIXME ??? */ case 38400: r = 2; break; /* works on sun */ case 19200: r = 1; break; /* works on sun */ default: case 9600: r = 0; break; /* works on sun */ } return r; } /** * Reads a byte */ static int sony_read_byte(Camera * camera, unsigned char *b) { int n = gp_port_read(camera->port, (char *)b, 1); if (n != 1) return GP_ERROR; else return GP_OK; } /** * Returns the checksum for a packet */ static unsigned char sony_packet_checksum(Packet * p) { unsigned short int o = 0; unsigned long int sum = 0; sum = 0; while (o < p->length) sum += p->buffer[o++]; return 256 - (sum & 255); } /** * Returns TRUE iff the packet is valid */ static int sony_packet_validate(Camera * camera, Packet * p) { unsigned char c = sony_packet_checksum(p); if (c != p->checksum) { GP_DEBUG( "sony_packet_validate: invalid checksum"); return SONY_INVALID_CHECKSUM; } if (129 == p->buffer[0]) { GP_DEBUG( "sony_packet_validate: resend packet"); return SONY_RESEND_PACKET; } if (sony_sequence[camera->pl->sequence_id] != p->buffer[0]) { GP_DEBUG( "sony_packet_validate: invalid sequence"); return SONY_INVALID_SEQUENCE; } return GP_OK; } /** * Constructs a packet. */ static int sony_packet_make(Camera * camera, Packet * p, unsigned char *buffer, unsigned short int length) { p->length = 0; while (length--) p->buffer[p->length++] = *(buffer++); if (255 == sony_sequence[++(camera->pl->sequence_id)]) camera->pl->sequence_id = 0; p->buffer[0] = sony_sequence[camera->pl->sequence_id++]; if (255 == sony_sequence[camera->pl->sequence_id]) camera->pl->sequence_id = 0; p->checksum = sony_packet_checksum(p); return TRUE; } /** * Reads a packet. */ static int sony_packet_read(Camera * camera, Packet * pack) { unsigned int n; unsigned char byte = 0; static Packet p; GP_DEBUG( "sony_packet_read()"); p.length = 0; for (n = 0; n < 2; n++) { for (byte = 0; byte != (unsigned char) PacketCodes[n];) { if (sony_read_byte(camera, &byte) == GP_ERROR) { return FALSE; } if (n > 0) { if (SONY_ESCAPE_CHAR == byte) { unsigned char extra; sony_read_byte(camera, &extra); switch (extra) { case 1: case 7: case 0xe1: case 0xe0: extra &= 0xcf; p.buffer[p.length++] = extra; continue; case 0x5d: p.buffer[p.length++] = byte; continue; default: p.buffer[p.length++] = byte; p.buffer[p.length++] = extra; continue; } } else p.buffer[p.length++] = byte; } } } p.length -= 2; p.checksum = p.buffer[p.length]; memcpy(pack, &p, sizeof(Packet)); return TRUE; } /** * Sends a packet */ static int sony_packet_write(Camera * camera, Packet * p) { unsigned short int count; int rc; GP_DEBUG( "sony_packet_write()"); /** * This usleep is necessary when using (relatively) fast CPUs, * as P4 2Ghz. Without it gphoto2 stops with a segmentation fault * and the --debug message sony_packet_validate: invalid sequence * Failed to read packet during transfer. The delay is somewhat * arbitrary. (alberto-g@(remove_me)inventati.org) **/ usleep(10000); rc = gp_port_write(camera->port, (char *)&START_PACKET, 1); p->buffer[p->length] = p->checksum; for (count = 0; count < p->length + 1 && rc != GP_ERROR; count++) { switch ((unsigned char) p->buffer[count]) { case SONY_ESCAPE_CHAR: rc = gp_port_write(camera->port, ESC_ESC_STRING, 2); break; case SONY_START_CHAR: rc = gp_port_write(camera->port, ESC_START_STRING, 2); break; case SONY_END_CHAR: rc = gp_port_write(camera->port, ESC_END_STRING, 2); break; default: rc = gp_port_write(camera->port, (char *) &p->buffer[count], 1); break; } } if (rc != GP_ERROR) rc = gp_port_write(camera->port, (char *) &END_PACKET, 1); return rc; } /** * Communicates packets */ static int sony_converse(Camera * camera, Packet * out, unsigned char *str, int len) { Packet ps; char old_sequence = 33; int sequence_count = 0; int invalid_sequence = 0; int count; int rc; GP_DEBUG( "sony_converse()"); sony_packet_make(camera, &ps, str, len); for (count = 0; count < SONY_CONVERSE_RETRY; count++) { rc = sony_packet_write(camera, &ps); if (rc == GP_OK) { if (sony_packet_read(camera, out)) { switch (sony_packet_validate(camera, out)) { case SONY_INVALID_CHECKSUM: if (invalid_sequence) { sony_packet_make(camera, &ps, str, len); break; } GP_DEBUG ("Checksum invalid"); ps.buffer[0] = 129; ps.checksum = sony_packet_checksum(&ps); break; case SONY_INVALID_SEQUENCE: if (camera->pl->model != SONY_MODEL_DSC_F55) { invalid_sequence = 1; sony_packet_make(camera, &ps, str, len); break; } if (old_sequence == out->buffer[0]) sequence_count++; else if (0 == sequence_count) old_sequence = out->buffer[0]; if (sequence_count == 4) { GP_DEBUG ("Attempting to reset sequence id - image may be corrupt."); camera->pl->sequence_id = 0; while (sony_sequence [camera->pl-> sequence_id] != old_sequence) camera->pl-> sequence_id++; return GP_OK; } GP_DEBUG ("Invalid Sequence"); ps.buffer[0] = 129; ps.checksum = sony_packet_checksum(&ps); break; case SONY_RESET_SEQUENCE: camera->pl->sequence_id = 0; return GP_OK; case SONY_RESEND_PACKET: GP_DEBUG ("Resending Packet"); break; case GP_OK: return GP_OK; default: GP_DEBUG ("Unknown Error"); break; } } else { /* printf("Incomplete packet\n"); */ ps.buffer[0] = 129; ps.checksum = sony_packet_checksum(&ps); } } } GP_DEBUG( "Failed to read packet during transfer."); return GP_ERROR; } /** * Sets baud rate */ static int sony_baud_port_set(Camera * camera, long baud) { gp_port_settings settings; gp_port_get_settings(camera->port, &settings); settings.serial.speed = baud; gp_port_set_settings(camera->port, settings); usleep(70000); return GP_OK; } /** * Sets baud rate */ static int sony_baud_set(Camera * camera, long baud) { Packet dp; int rc; GP_DEBUG( "sony_baud_set(%ld)", baud); if (camera->pl->current_baud_rate != baud) { /* FIXME */ SetTransferRate[3] = sony_baud_to_id(baud); rc = sony_converse(camera, &dp, SetTransferRate, 4); if (rc == GP_OK) { sony_baud_port_set(camera, baud); rc = sony_converse(camera, &dp, EmptyPacket, 1); if (rc == GP_OK) { camera->pl->current_baud_rate = baud; } usleep(100000); /* 50000 was good too, jw */ } } else { rc = GP_OK; } return rc; } /** * Port initialisation */ static int sony_init_port (Camera *camera) { gp_port_settings settings; int rc; rc = gp_port_set_timeout (camera->port, 5000); if (rc == GP_OK) { gp_port_get_settings(camera->port, &settings); settings.serial.speed = 9600; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; rc = gp_port_set_settings(camera->port, settings); if (rc == GP_OK) { rc = gp_port_flush(camera->port, 0); } } return rc; } /** * Establish first contact (remember the prime directive? :) */ static int sony_init_first_contact (Camera *camera) { int count = 0; Packet dp; int rc = GP_ERROR; for (count = 0; count < 3; count++) { camera->pl->sequence_id = 0; rc = sony_converse(camera, &dp, IdentString, 12); if (rc == GP_OK) { GP_DEBUG( "Init OK"); break; } usleep(2000); GP_DEBUG( "Init - Fail %u", count + 1); } return rc; } /** * Device supports MPEG? */ static int sony_is_mpeg_supported (Camera * camera) { return camera->pl->model == SONY_MODEL_DSC_F55; } /** * Initialises camera */ int sony_init (Camera * camera, SonyModel model) { int rc; camera->pl->model = model; camera->pl->current_baud_rate = -1; camera->pl->current_mpeg_mode = -1; rc = sony_init_port (camera); if (rc == GP_OK) rc = sony_init_first_contact (camera); return rc; } /** * Reset the camera sequence count and baud rate. */ int sony_exit(Camera * camera) { Packet dp; int rc = GP_ERROR; rc = sony_baud_set(camera, 9600); while (rc == GP_OK && camera->pl->sequence_id > 0) { rc = sony_converse(camera, &dp, EmptyPacket, 1); } return rc; } static int sony_set_file_mode(Camera * camera, SonyFileType file_type) { int rc = GP_OK; Packet dp; if (file_type == SONY_FILE_MPEG) { if (camera->pl->current_mpeg_mode != 1) { rc = sony_converse(camera, &dp, MpegImage, 21); if (rc == GP_OK) { camera->pl->current_mpeg_mode = 1; } } } else { if (camera->pl->current_mpeg_mode != 0) { rc = sony_converse(camera, &dp, StillImage, 19); if (rc == GP_OK) { camera->pl->current_mpeg_mode = 0; } } } return rc; } /** * Return count of images taken. */ int sony_file_count(Camera * camera, SonyFileType file_type, int *count) { Packet dp; int rc, nr; GP_DEBUG( "sony_file_count()"); if (file_type == SONY_FILE_MPEG && (! sony_is_mpeg_supported(camera))) { *count = 0; return GP_OK; } *count = -1; rc = sony_converse(camera, &dp, SetTransferRate, 4); if (rc != GP_OK) return rc; rc = sony_set_file_mode(camera, file_type); if (rc != GP_OK) return rc; rc = sony_converse(camera, &dp, SendImageCount, 3); if (rc != GP_OK) return rc; nr = dp.buffer[5] | (dp.buffer[4]<<8); GP_DEBUG ("count = %d", nr); *count = nr; return GP_OK; } /** * Fetches file name. */ int sony_file_name_get(Camera *camera, int imageid, SonyFileType mpeg, char buf[13]) { Packet dp; int rc; GP_DEBUG( "sony_file_name_get()"); rc = sony_set_file_mode(camera, mpeg); if (rc != GP_OK) return rc; sony_baud_set(camera, baud_rate); /* FIXME: Not nice, changing global data like this. */ SelectImage[3] = (imageid >> 8); SelectImage[4] = imageid & 0xff; rc = sony_converse(camera, &dp, SelectImage, 7); if (rc != GP_OK) return rc; memcpy(buf, &dp.buffer[5], 8); buf[8] = '.'; memcpy(buf+9, &dp.buffer[5+8], 3); buf[12] = 0; return rc; } /** * Is it an MPEG file? */ int sony_is_mpeg_file_name(const char * file_name) { return strncmp(file_name,"MOV",3)==0; } /** * Fetches an image. */ static int sony_file_get(Camera * camera, int imageid, int file_type, CameraFile * file, GPContext *context) { int sc; /* count of bytes to skip at start of packet */ Packet dp; int rc; char buffer[128]; GP_DEBUG( "sony_file_get()"); rc = sony_set_file_mode(camera, file_type); if (rc != GP_OK) { return rc; } if (gp_context_cancel(context) == GP_CONTEXT_FEEDBACK_CANCEL) { return GP_ERROR_CANCEL; } rc = gp_file_clean(file); if (rc == GP_OK) { gp_file_set_mime_type (file, GP_MIME_JPEG); /* The file name we specify here is not important, * since the calling function, gp_filesystem_get_file_impl, * overwrites it with the correct one. */ sprintf(buffer, SONY_FILE_NAME_FMT, imageid); sony_baud_set(camera, baud_rate); rc = sony_set_file_mode(camera, file_type); if (rc == GP_OK) { if (file_type == SONY_FILE_THUMBNAIL) { sc = 0x247; SelectImage[3] = (imageid >> 8); SelectImage[4] = imageid & 0xff; sony_converse(camera, &dp, SelectImage, 7); if (camera->pl->model != SONY_MODEL_DSC_F55) { gp_file_append(file, "\xff\xd8\xff", 3); } for (;;) { if (gp_context_cancel(context) == GP_CONTEXT_FEEDBACK_CANCEL) { rc = GP_ERROR_CANCEL; break; } gp_context_idle(context); sony_converse(camera, &dp, SendThumbnail, 4); gp_file_append(file, (char *) dp.buffer + sc, dp.length - sc); sc = 7; if (3 == dp.buffer[4]) break; } } else { sc = 11; SendImage[3] = (imageid >> 8); SendImage[4] = imageid; sony_converse(camera, &dp, SendImage, 7); for (;;) { if (gp_context_cancel(context) == GP_CONTEXT_FEEDBACK_CANCEL) { rc = GP_ERROR_CANCEL; break; } gp_context_idle(context); gp_file_append(file, (char *) dp.buffer + sc, dp.length - sc); if (file_type == SONY_FILE_EXIF) { const char *fdata; unsigned long fsize; gp_file_get_data_and_size (file, &fdata, &fsize); /* FIXME: 4096 is a rather */ /* arbitrary value */ if (fsize > 4096) break; } sc = 7; if (3 == dp.buffer[4]) break; sony_converse(camera, &dp, SendNextImagePacket, 4); } } } sony_baud_set(camera, 9600); if (rc != GP_OK) { gp_file_clean(file); } } return rc; } /** * Fetches a thumbnail image. */ int sony_thumbnail_get(Camera * camera, int imageid, CameraFile * file, GPContext *context) { return sony_file_get(camera, imageid, SONY_FILE_THUMBNAIL, file, context); } /** * Fetches an image. */ int sony_image_get(Camera * camera, int imageid, CameraFile * file, GPContext *context) { return sony_file_get(camera, imageid, SONY_FILE_IMAGE, file, context); } /** * Fetches EXIF information. */ int sony_exif_get(Camera * camera, int imageid, CameraFile * file, GPContext *context) { return sony_file_get(camera, imageid, SONY_FILE_EXIF, file, context); } /** * Fetches an Mpeg. */ int sony_mpeg_get(Camera * camera, int imageid, CameraFile * file, GPContext *context) { return sony_file_get(camera, imageid, SONY_FILE_MPEG, file, context); } /** * Fetches image details. */ int sony_image_info(Camera * camera, int imageid, SonyFileType file_type, CameraFileInfo * info, GPContext *context) { unsigned int l = 0; int rc; Packet dp; rc = sony_set_file_mode(camera, file_type); if (rc != GP_OK) { return rc; } if (gp_context_cancel(context) == GP_CONTEXT_FEEDBACK_CANCEL) { return GP_ERROR_CANCEL; } SelectImage[3] = (imageid >> 8); SelectImage[4] = imageid & 0xff; rc = sony_converse(camera, &dp, SelectImage, 7); if (rc == GP_OK) { l = (l << 8) | dp.buffer[16]; l = (l << 8) | dp.buffer[17]; l = (l << 8) | dp.buffer[18]; l = (l << 8) | dp.buffer[19]; info->file.fields = GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE; info->file.size = l; info->preview.fields = GP_FILE_INFO_TYPE; if (file_type == SONY_FILE_MPEG) { strcpy (info->file.type, GP_MIME_AVI); } else { strcpy (info->file.type, GP_MIME_JPEG); } } return rc; } /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/sonydscf55/nls.h0000644000175000001440000000253512610415524015103 00000000000000/* Sony DSC-F55 & MSAC-SR1 - gPhoto2 camera library * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef NLS_H #define NLS_H #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #endif /* NLS_H */ libgphoto2-2.5.9/camlibs/sonydscf55/sony.h0000644000175000001440000000456212610415536015304 00000000000000/* Sony DSC-F55 & MSAC-SR1 - gPhoto2 camera library * Copyright 2001, 2002, 2004 Raymond Penners * Copyright 2000 Mark Davies * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef SONY_H #define SONY_H #define SONY_CAMERA_ID "sonydscf55" typedef enum { SONY_MODEL_MSAC_SR1 = 0, SONY_MODEL_DCR_PC100, SONY_MODEL_TRV_20E, SONY_MODEL_DSC_F55, SONY_MODEL_SIZEOF } SonyModel; #define SONY_FILE_NAME_FMT "dsc%05d.jpg" typedef struct _tagPacket { int valid; int length; unsigned char buffer[16384]; unsigned char checksum; } Packet; struct _CameraPrivateLibrary { unsigned short int sequence_id; long current_baud_rate; int current_mpeg_mode; SonyModel model; }; typedef enum { SONY_FILE_EXIF=0, SONY_FILE_THUMBNAIL, SONY_FILE_IMAGE, SONY_FILE_MPEG } SonyFileType; int sony_init(Camera * camera, SonyModel model); int sony_exit(Camera * camera); int sony_file_count(Camera * camera, SonyFileType file_type, int * count); int sony_image_get(Camera * camera, int imageid, CameraFile * file, GPContext *context); int sony_thumbnail_get(Camera * camera, int imageid, CameraFile * file, GPContext *context); int sony_exif_get(Camera * camera, int imageid, CameraFile * file, GPContext *context); int sony_mpeg_get(Camera * camera, int imageid, CameraFile * file, GPContext *context); int sony_image_info(Camera * camera, int imageid, SonyFileType file_type, CameraFileInfo * info, GPContext *context); int sony_file_name_get(Camera *camera, int imageid, SonyFileType file_type, char buf[13]); int sony_is_mpeg_file_name(const char * file_name); #endif /* SONY_H */ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/camlibs/sonydscf55/Makefile-files0000644000175000001440000000051112561423351016670 00000000000000EXTRA_LTLIBRARIES += sony_dscf55.la EXTRA_DIST += sonydscf55/ChangeLog sonydscf55/TODO sony_dscf55_la_SOURCES = \ sonydscf55/sony.c sonydscf55/sony.h \ sonydscf55/camera.c sonydscf55/nls.h sony_dscf55_la_LDFLAGS = $(camlib_ldflags) sony_dscf55_la_DEPENDENCIES = $(camlib_dependencies) sony_dscf55_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/sonydscf55/TODO0000644000175000001440000000071312557123324014626 00000000000000* Fix all FIXME's * Add calls to gp_frontend_status() * In cases where an error occurs during transfer, the driver can get out of sync with the device. From that point on, the driver is unable to successfully initialise the driver, even for new gPhoto sessions. A reboot (power-off, power-on) of the MSAC-SR1 device helps. See if it is possible to do a proper init in such a case. -- Raymond Penners -*- raymond@dotsphinx.com -*- http://www.dotsphinx.com libgphoto2-2.5.9/camlibs/sonydscf55/ChangeLog0000644000175000001440000000164012557123324015710 000000000000002004-05-13 Raymond Penners * *.[ch]: Merged in Sony DSC-F55 patches from Alberto Garlassi: added support for downloading MPEG files, and fixed thumbnail downloading. 2004-04-08 Raymond Penners * *.[ch]: Merged in patch from Alberto Garlassi: serial communication fixes on fast CPUs, and the native file names are now used (instead of using the hardcoded "dsc%05d.jpg"). 2003-02-27 Marcus Meissner * camera.c: We support EXIF download. 2002-07-18 Raymond Penners * sony.c: Added calls to gp_context_idle(). 2002-05-07 Khalid Akbar * *.[ch]: Added support for more than 256 images and "Sony TRV-20E". 2002-03-27 Raymond Penners * *.[ch]: Made driver GPContext aware (i.e., operations can now be cancelled), and added support for EXIF information. libgphoto2-2.5.9/camlibs/pccam600/0000755000175000001440000000000012623156267013532 500000000000000libgphoto2-2.5.9/camlibs/pccam600/library.c0000644000175000001440000002257212610415536015263 00000000000000/****************************************************************/ /* library.c - Gphoto2 library for the Creative PC-CAM600 */ /* */ /* */ /* Author: Peter Kajberg */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* Please notice that camera commands was sniffed by use of a */ /* usbsniffer under windows. This is an experimental driver and */ /* a work in progess(I hope :)) */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #include "config.h" #include "pccam600.h" #include #include #include #include #include #include #include #define GP_MODULE "pccam600" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define QUALITY_LO 0x56 #define QUALITY_ME 0x58 #define QUALITY_HI 0x45 static const struct models{ char *name; unsigned short idVendor; unsigned short idProduct; char serial; } models[] = { {"Creative:PC-CAM600",0x041e,0x400b,0}, {"Creative:PC-CAM750",0x041e,0x4013,0}, {"Creative PC-CAM350",0x041e,0x4012,0}, {NULL,0,0,0} }; int camera_id(CameraText *id) { strcpy(id->text, "Creative PC-CAM600/750/350"); return (GP_OK); } int camera_abilities(CameraAbilitiesList *list) { int i; CameraAbilities a; for(i=0; models[i].name; i++) { memset(&a , 0, sizeof(CameraAbilities)); strcpy(a.model, models[i].name); a.status = GP_DRIVER_STATUS_EXPERIMENTAL; a.port = GP_PORT_USB; a.speed[0] = 0; a.usb_vendor = models[i].idVendor; a.usb_product = models[i].idProduct; a.operations = GP_OPERATION_NONE; a.folder_operations = GP_FOLDER_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_DELETE; gp_abilities_list_append(list, a); } return GP_OK; } static int camera_exit(Camera *camera, GPContext *context){ return pccam600_close(camera->port, context); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context){ Camera *camera = data; CameraFileInfo info; int n,i,nr_of_blocks; int offset = 64; char *temp; char buffer[512]; FileEntry *file_entry; file_entry = malloc(sizeof(FileEntry)); if ( (nr_of_blocks = pccam600_get_file_list(camera->port, context)) < 0 ){ gp_log(GP_LOG_DEBUG,"pccam600","pccam600->get_file_list return <0"); free (file_entry); return GP_ERROR; } for (n = 0; n != nr_of_blocks; n++) { CHECK(pccam600_read_data(camera->port, (unsigned char *)buffer)); for (i = offset; i <= 512-32; i=i+32) { memcpy(file_entry,&(buffer)[i],32); /*Fileentry valid? */ if( !((file_entry->state & 0x02) != 2) && !((file_entry->state & 0x08) == 8) ) { info.file.fields = 0; temp = (char *)&(file_entry->name)[5]; if (strncmp(temp,"JPG",3) == 0) { memcpy(&(file_entry->name)[5],".jpg",4); strcpy(info.file.type,GP_MIME_JPEG); info.file.fields = GP_FILE_INFO_TYPE; } else if (strncmp(temp,"AVI",3) == 0) { memcpy(&(file_entry->name)[5],".avi",4); info.file.fields = GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT | GP_FILE_INFO_TYPE; info.file.height = 352; info.file.width = 288; strcpy(info.file.type, GP_MIME_AVI); } else if (strncmp(temp,"WAV",3) == 0) { memcpy(&(file_entry->name)[5],".wav",4); strcpy(info.file.type, GP_MIME_WAV); info.file.fields = GP_FILE_INFO_TYPE; info.file.height = 0; } else if (strncmp(temp,"RAW",3) == 0) { memcpy(&(file_entry->name)[5],".raw",4); info.file.width = 1280; info.file.height = 960; info.file.fields = GP_FILE_INFO_WIDTH | GP_FILE_INFO_HEIGHT | GP_FILE_INFO_TYPE; strcpy(info.file.type, GP_MIME_RAW); } gp_filesystem_append(fs,folder,(char *)file_entry->name,context); info.preview.fields = 0; info.file.size = (file_entry->size[1]*256+ file_entry->size[0]) * 256; info.file.permissions = GP_FILE_PERM_READ | GP_FILE_PERM_DELETE; info.file.fields |= GP_FILE_INFO_SIZE | GP_FILE_INFO_PERMISSIONS |GP_FILE_INFO_TYPE; CHECK(gp_filesystem_set_info_noop(fs, folder, (char *)file_entry->name, info, context)); } } offset = 0; } return GP_OK; } static int camera_get_file (Camera *camera, GPContext *context, int index, unsigned char **data, int *size) { unsigned char buffer[512]; int nr_of_blocks = 0; int n,id,canceled=0; int picturebuffersize = 0; int offset = 0; nr_of_blocks = pccam600_get_file(camera->port,context,index); if (nr_of_blocks < 0) return GP_ERROR_FILE_NOT_FOUND; picturebuffersize = nr_of_blocks * 512; id = gp_context_progress_start(context,nr_of_blocks,_("Downloading file...")); *data= malloc(picturebuffersize+1); memset(*data,0,picturebuffersize+1); for (n = 0; n != nr_of_blocks; n++){ pccam600_read_data(camera->port, buffer); memmove(&(*data)[offset],buffer,512); offset = offset + 512; gp_context_progress_update(context,id,n); if (gp_context_cancel(context) == GP_CONTEXT_FEEDBACK_CANCEL) { /* Keep reading data or else data will be invalid next time*/ canceled = 1; } } *size = offset; gp_context_progress_stop(context,id); if (canceled) return GP_ERROR_CANCEL; return GP_OK; } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; unsigned char *data = NULL; int size,index; size = 0; index = gp_filesystem_number(fs, folder, filename, context); if (index < 0) return index; switch(type) { case GP_FILE_TYPE_NORMAL: CHECK(camera_get_file(camera, context, index, &data, &size)); break; default: return GP_ERROR_NOT_SUPPORTED; } return gp_file_set_data_and_size(file, (char *)data, size); } static int camera_summary(Camera *camera, CameraText *summary, GPContext *context) { int totalmem; int freemem; char summary_text[256]; CHECK(pccam600_get_mem_info(camera->port,context,&totalmem,&freemem)); snprintf(summary_text,sizeof(summary_text), (" Total memory is %8d bytes.\n Free memory is %8d bytes."), totalmem,freemem ); strcat(summary->text,summary_text); return GP_OK; } static int camera_about(Camera *camera, CameraText *about, GPContext *context) { strcpy(about->text, _("Creative PC-CAM600\nAuthor: Peter Kajberg \n")); return GP_OK; } static int delete_file_func(CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context){ int index; Camera *camera = data; index = gp_filesystem_number(fs, folder, filename, context); gp_log(GP_LOG_DEBUG,"pccam","deleting '%s' in '%s'.. index:%d",filename, folder,index); CHECK(pccam600_delete_file(camera->port, context, index)); return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .get_file_func = get_file_func, .file_list_func = file_list_func, .del_file_func = delete_file_func, }; int camera_init(Camera *camera, GPContext *context){ GPPortSettings settings; camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->about = camera_about; gp_log (GP_LOG_DEBUG, "pccam", "Initializing the camera\n"); switch (camera->port->type) { case GP_PORT_USB: CHECK(gp_port_get_settings(camera->port,&settings)); settings.usb.inep = 0x82; settings.usb.outep = 0x03; settings.usb.config = 1; settings.usb.interface = 1; settings.usb.altsetting = 0; CHECK(gp_port_set_settings(camera->port,settings)); break; case GP_PORT_SERIAL: return GP_ERROR_IO_SUPPORTED_SERIAL; default: return GP_ERROR_NOT_SUPPORTED; } CHECK(pccam600_init(camera->port, context)); return gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); } libgphoto2-2.5.9/camlibs/pccam600/Makefile-files0000644000175000001440000000053212561423351016202 00000000000000EXTRA_DIST += pccam600/README.pccam600 pccam600/ChangeLog camlibdoc_DATA += pccam600/README.pccam600 EXTRA_LTLIBRARIES += pccam600.la pccam600_la_SOURCES = pccam600/pccam600.c pccam600/pccam600.h pccam600/library.c pccam600_la_LDFLAGS = $(camlib_ldflags) pccam600_la_DEPENDENCIES = $(camlib_dependencies) pccam600_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/pccam600/ChangeLog0000644000175000001440000000116612557123324015222 00000000000000 This software is based upon usbsniffing, and therefore is marked EXPERIMENTAL. Any comments email me at pbk@odense.kollegienet.dk 2004-09-05 Marcus Meissner Ambigel http://ambigel.blogia.com/ has a pc cam 350, added Removed explicit size handling of JPEGs for now (not really needed). 2004-01-27 Marcus Meissner Andres Guerrero reports the PC CAM 750 working with this driver, added id. 2002-08-16 Fixed a newline compile error with gcc 2.96. 2002-08-09 Først release of the library. As this is the first release there might be errors, please report them. libgphoto2-2.5.9/camlibs/pccam600/pccam600.h0000644000175000001440000000304012610415536015122 00000000000000/* pccam600.h * * This library is free software; you can redistribute and/or * modify it inder the terms of the GNU Lesser Genreral Public * License as publiced by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warrenty of * MERCHANTABULITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * lesser General Public License for more details. * * Author: Peter Kajberg */ #ifndef __PCCAM600_H__ #define __PCCAM600_H__ #include #include typedef struct { unsigned char state; /*delete or ok*/ unsigned char unk1; unsigned char quality; unsigned char name[9]; unsigned char unk2[4]; unsigned char unk3[10]; unsigned char unk4[2]; unsigned char unk5; unsigned char size[2]; unsigned char unk6; } FileEntry; #define CHECK(result) {int res; res = result; if (res < 0) return (res);} int pccam600_init(GPPort *port, GPContext *context); int pccam600_close(GPPort *port, GPContext *context); int pccam600_get_file_list(GPPort *port, GPContext *context); int pccam600_delete_file(GPPort *port, GPContext *context, int index); int pccam600_read_data(GPPort *port, unsigned char *buffer); int pccam600_get_file(GPPort *port, GPContext *context, int index); int pccam600_get_mem_info(GPPort *port, GPContext *context, int *totalmem, int *freemem); #endif /* __PCCAM600_H__ */ libgphoto2-2.5.9/camlibs/pccam600/README.pccam6000000644000175000001440000000047012561423351015633 00000000000000This software is based upon usbsniffing, and therefore is marked EXPERIMENTAL. The format of the WAV file is IMA ADPCM (code=0x11) also called DVI ADPCM, and can be converted with sox -i inputfile outputfile. The format of the RAW files is unknown so if anyone finds/knows a way to decode it please contact me.libgphoto2-2.5.9/camlibs/pccam600/pccam600.c0000644000175000001440000001765712610415536015140 00000000000000/****************************************************************/ /* pccam600.c - Gphoto2 library for the Creative PC-CAM600 */ /* */ /* */ /* Author: Peter Kajberg */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* Please notice that camera commands was sniffed by use of a */ /* usbsniffer under windows. This is an experimental driver and */ /* a work in progess(I hope :)) */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #include "config.h" #include #include "pccam600.h" #include #include #include #define GP_MODULE "pccam600" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif /* *waits until the status value is 0 or 8. *if status == 0xb0 or 0x40 we will wait some more */ static int pccam600_wait_for_status(GPPort *port){ unsigned char status = 1; while(status != 0x00){ gp_port_set_timeout(port,3000); CHECK(gp_port_usb_msg_read(port,0x06,0x00,0x00,(char*)&status,1)); if (status == 0 || status == 8) return GP_OK; if (status == 0xb0){ gp_port_set_timeout(port,200000); CHECK(gp_port_usb_msg_read(port,0x06,0x00,0x00,(char*)&status,1)); } if (status == 0x40){ gp_port_set_timeout(port,400000); CHECK(gp_port_usb_msg_read(port,0x06,0x00,0x00,(char*)&status,1)); } } return GP_ERROR; } /* *Deletes a file. The first file has index = 2. */ int pccam600_delete_file(GPPort *port, GPContext *context, int index){ unsigned char response[4]; index = index + 2; gp_port_set_timeout(port,200000); CHECK(gp_port_usb_msg_write(port,0x09,index,0x1001,NULL,0x00)); CHECK(pccam600_wait_for_status(port)); gp_port_set_timeout(port, 400000); CHECK(gp_port_usb_msg_read(port,0x60,0x00,0x03,(char*)response,0x04)); CHECK(pccam600_wait_for_status(port)); CHECK(gp_port_usb_msg_read(port,0x60,0x00,0x04,(char*)response,0x04)); CHECK(pccam600_wait_for_status(port)); return GP_OK; } int pccam600_get_mem_info(GPPort *port, GPContext *context, int *totalmem, int *freemem) { unsigned char response[4]; gp_port_set_timeout(port, 400000); CHECK(gp_port_usb_msg_read(port,0x60,0x00,0x03,(char*)response,0x04)); *totalmem = response[2]*65536+response[1]*256+response[0]; CHECK(pccam600_wait_for_status(port)); CHECK(gp_port_usb_msg_read(port,0x60,0x00,0x04,(char*)response,0x04)); *freemem = response[2]*65536+response[1]*256+response[0]; CHECK(pccam600_wait_for_status(port)); return GP_OK; } /* * */ int pccam600_get_file_list(GPPort *port, GPContext *context){ unsigned char response[4]; int nr_of_blocks; gp_port_set_timeout(port,500); CHECK(gp_port_usb_msg_write(port,0x08,0x00,0x1021,NULL,0x00)); CHECK(pccam600_wait_for_status(port)); gp_port_set_timeout(port, 200000); CHECK(gp_port_usb_msg_write(port,0x08,0x00,0x1021,NULL,0x00)); CHECK(pccam600_wait_for_status(port)); CHECK(gp_port_usb_msg_read(port,0x08,0x00,0x1000,(char*)response,0x04)); nr_of_blocks = response[2]*256+response[1]; if (nr_of_blocks == 0){ gp_log(GP_LOG_DEBUG,"pccam600 library: pccam600_get_file_list", "nr_of_blocks is 0"); gp_context_error(context,_("pccam600_init: Expected > %d blocks got %d"), 0,nr_of_blocks); return GP_ERROR; } return nr_of_blocks / 2; } int pccam600_get_file(GPPort *port, GPContext *context, int index){ unsigned char response[4]; int nr_of_blocks; index = index + 2; if (index < 2) { gp_context_error(context, _("pccam600_get_file:got index %d but expected index > %d"), index,2); return GP_ERROR; } gp_port_set_timeout(port,200000); CHECK(gp_port_usb_msg_read(port,0x08,index,0x1001,(char*)response,0x04)); gp_port_set_timeout(port,3000); CHECK(gp_port_usb_msg_write(port,0x04,0x00,0x00,NULL,0x00)); CHECK(pccam600_wait_for_status(port)); gp_port_set_timeout(port,200000); CHECK(gp_port_usb_msg_read(port,0x08,index,0x1002,(char*)response,0x04)); CHECK(gp_port_usb_msg_read(port,0x08,index,0x1001,(char*)response,0x04)); nr_of_blocks = response[2]*256+response[1]; if (nr_of_blocks == 0){ gp_log(GP_LOG_DEBUG, "pccam600 library: pccam600_get_file","nr_of_msg is 0"); gp_context_error(context,_("pccam600_init: Expected > %d blocks got %d"), 0,nr_of_blocks); return GP_ERROR; } return nr_of_blocks / 2; } /* *Reads bulk data from the camera in 512bytes chunks. */ int pccam600_read_data(GPPort *port, unsigned char *buffer){ gp_port_set_timeout(port,500); CHECK(gp_port_read(port,(char*)buffer,512)); return GP_OK; } /* * */ int pccam600_close(GPPort *port, GPContext *context){ int ret; gp_port_set_timeout(port,500); ret = gp_port_usb_msg_write(port,0x08,0x00,0xf0,NULL,0x00); if (ret < 0) { gp_context_error(context, _("pccam600_close: return value was %d instead of %d"), ret,0); return GP_ERROR; } CHECK(pccam600_wait_for_status(port)); return GP_OK; } /* *Sets up the camera and then read 32 512bytes blocks. *Why it is read those 32 blocks I dont know. Just *doing what the windows driver does :). */ int pccam600_init(GPPort *port, GPContext *context){ unsigned char response[4]; unsigned char buffer[512]; int nr_of_blocks; int ret,i; gp_port_set_timeout(port,100); CHECK(gp_port_usb_msg_write(port,0x0e,0x00,0x01,NULL,0x0)); CHECK(gp_port_usb_msg_write(port,0x08,0x00,0xff,NULL,0x0)); CHECK(pccam600_wait_for_status(port)); gp_port_set_timeout(port,100000); CHECK(gp_port_usb_msg_read(port,0x08,0x00,0xff,(char*)response,0x1)); gp_port_set_timeout(port,500); CHECK(gp_port_usb_msg_write(port,0x08,0x00,0x1020,NULL,0x0)); CHECK(pccam600_wait_for_status(port)); gp_port_set_timeout(port,200000); CHECK(gp_port_usb_msg_read(port,0x08,0x00,0x1000,(char*)response,0x4)); nr_of_blocks = response[2]*256+response[1]; nr_of_blocks = 512 / nr_of_blocks; gp_log(GP_LOG_DEBUG,"pccam600 library: init","nr_of_blocks %d",nr_of_blocks); if (nr_of_blocks == 0){ gp_context_error(context,_("pccam600_init: Expected %d blocks got %d"), 64,nr_of_blocks); return GP_ERROR; } gp_port_set_timeout(port,500); for (i = 0; i * Copyright (c) 2000 Andreas Meyer * Copyright (c) 2000 Pete Zaitcev * Copyright (c) 2000 Jeff Laing * Copyright (c) 2007 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _POSIX_C_SOURCE 199309L #include "config.h" #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #define MAX_PICTURES 6 #define ACK 0x06 #define NAK 0x15 #define COMMAND_BYTE 1 #define RESPONSE_BYTE 1 #define DATA1_BYTE 2 #define DATA2_BYTE 3 #define BARBIE_DATA_FIRMWARE 0 #define BARBIE_DATA_THUMBNAIL 1 #define BARBIE_DATA_PICTURE 2 #define GP_MODULE "barbie" /* Some simple packet templates */ static const char packet_1[4] = {0x02, 0x01, 0x01, 0x03}; /* Utility Functions */ static int barbie_read_response(GPPort *port, unsigned char *response, unsigned int size) { int x; char ack = 0; /* Read the ACK */ x=gp_port_read(port, &ack, 1); if ((ack != ACK)||(x<0)) return GP_ERROR_IO_READ; /* Read the Response */ memset(response, 0, size); return gp_port_read(port, (char*)response, size); } static int barbie_exchange (GPPort *port, unsigned char *cmd, unsigned int cmd_size, unsigned char *resp, unsigned int resp_size) { int count = 0; while (count++ < 10) { if (gp_port_write(port, (char*)cmd, cmd_size) < GP_OK) return (0); if (barbie_read_response(port, resp, resp_size) < GP_OK) return (0); /* if it's not busy, return */ if (resp[RESPONSE_BYTE] != '!') return (1); /* if busy, sleep 2 seconds */ sleep(2); } return (0); } static int barbie_ping(GPPort *port) { unsigned char cmd[4], resp[4]; GP_DEBUG( "Pinging the camera..."); memcpy(cmd, packet_1, 4); cmd[COMMAND_BYTE] = 'E'; cmd[DATA1_BYTE] = 'x'; if (barbie_exchange(port, cmd, 4, resp, 4) == 0) return (0); if (resp[DATA1_BYTE] != 'x') return (0); GP_DEBUG ("Ping answered!"); return (1); } static int barbie_file_count (GPPort *port) { unsigned char cmd[4], resp[4]; GP_DEBUG ("Getting the number of pictures..."); memcpy(cmd, packet_1, 4); cmd[COMMAND_BYTE] = 'I'; cmd[DATA1_BYTE] = 0; if (barbie_exchange(port, cmd, 4, resp, 4) != 1) return (0); return (resp[DATA1_BYTE]); } static unsigned char * barbie_read_firmware(GPPort *port) { unsigned char cmd[4]; unsigned char resp[4]; unsigned int size; char c; unsigned char *s = NULL; GP_DEBUG ("Getting Firmware..."); memcpy(cmd, packet_1, 4); cmd[COMMAND_BYTE] = 'V'; cmd[DATA1_BYTE] = '0'; if (barbie_exchange(port, cmd, 4, resp, 4) != 1) return (0); /* we're getting the firmware revision */ size = resp[2]; s = malloc(size); memset(s, 0, size); s[0] = resp[3]; if (gp_port_read(port, (char*)&s[1], size-1) < 0) { free(s); return (NULL); } /* read the footer */ if (gp_port_read(port, &c, 1) < 0) { free(s); return (0); } return s; } static int barbie_read_picture(GPPort *port, int picture_number, int get_thumbnail, CameraFile *file) { unsigned char cmd[4], resp[4]; unsigned int size; char c; int cols, visrows, blackrows, statusbytes; int x, y, z; unsigned char *s = NULL, *us = NULL, *rg = NULL, *t = NULL; char ppmhead[64]; unsigned char uc; memcpy(cmd, packet_1, 4); cmd[COMMAND_BYTE] = 'A'; cmd[DATA1_BYTE] = picture_number; if (barbie_exchange(port, cmd, 4, resp, 4) != 1) return GP_ERROR_IO_READ; memcpy(cmd, packet_1, 4); if (get_thumbnail) cmd[COMMAND_BYTE] = 'M'; else cmd[COMMAND_BYTE] = 'U'; cmd[DATA1_BYTE] = 0; if (barbie_exchange(port, cmd, 4, resp, 4) != 1) return (0); GP_DEBUG( "Getting Picture..."); /* we're getting a picture */ cols = resp[2]; blackrows = resp[3]; if (gp_port_read(port, (char*)&uc, 1) < 0) return GP_ERROR_IO_READ; visrows = uc; if (gp_port_read(port, (char*)&uc, 1) < 0) return GP_ERROR_IO_READ; statusbytes = uc; size = cols*(blackrows+visrows)+statusbytes; sprintf(ppmhead, "P6\n# test.ppm\n%i %i\n255\n", cols-4, visrows); gp_file_append (file, ppmhead, strlen(ppmhead)); us = malloc(size); rg = malloc(size); s = malloc(cols*(blackrows+visrows)*3); t = malloc((cols-4)*visrows*3); memset(us, 0, size); memset(rg, 0, size); memset(s , 0, size); memset(t , 0, size); if (gp_port_read(port, (char*)us, size)<0) { free(us); free(rg); free(s); free(t); return GP_ERROR_IO_READ; } /* Unshuffle the data */ for (x=0; xtext, "barbie"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { int x=0; CameraAbilities a; while (models[x]) { /* Fill in the appropriate flags/data */ memset (&a, 0, sizeof(a)); strcpy(a.model, models[x]); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL; a.speed[0] = 57600; a.speed[1] = 0; a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; /* Append it to the list */ gp_abilities_list_append(list, a); x++; } return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; return gp_list_populate (list, "mattel%02i.ppm", barbie_file_count (camera->port)); } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; int num; /* Retrieve the number of the photo on the camera */ num = gp_filesystem_number (camera->fs, "/", filename, context); if (num < GP_OK) return num; gp_file_set_mime_type (file, GP_MIME_PPM); switch (type) { case GP_FILE_TYPE_NORMAL: return barbie_read_picture (camera->port, num, 0, file); break; case GP_FILE_TYPE_PREVIEW: return barbie_read_picture (camera->port, num, 1, file); break; default: return GP_ERROR_NOT_SUPPORTED; } return GP_ERROR_NOT_SUPPORTED; } #if 0 int camera_capture (Camera *camera, int capture_type, CameraFilePath *path) { char cmd[4], resp[4]; memcpy(cmd, packet_1, 4); cmd[COMMAND_BYTE] = 'G'; cmd[DATA1_BYTE] = 0x40; if (barbie_exchange(cmd, 4, resp, 4) == 0) return (0); cmd[COMMAND_BYTE] = 'Y'; cmd[DATA1_BYTE] = 0; if (barbie_exchange(cmd, 4, resp, 4) == 0) return (0); return(resp[DATA1_BYTE] == 0? GP_OK: GP_ERROR); return (GP_ERROR); } #endif static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int num; char *firm; num = barbie_file_count (camera->port); firm = (char*)barbie_read_firmware (camera->port); sprintf(summary->text, _("Number of pictures: %i\nFirmware Version: %s"), num,firm); free(firm); return GP_OK; } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { strcpy (about->text,_("Barbie/HotWheels/WWF\nScott Fritzinger \nAndreas Meyer \nPete Zaitcev \n\nReverse engineering of image data by:\nJeff Laing \n\nImplemented using documents found on\nthe web. Permission given by Vision.")); return GP_OK; } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func }; int camera_init (Camera *camera, GPContext *context) { GPPortSettings settings; int res; /* First, set up all the function pointers */ camera->functions->summary = camera_summary; camera->functions->about = camera_about; /* Set up the CameraFilesystem */ gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); /* Set up the port */ gp_port_set_timeout (camera->port, 5000); gp_port_get_settings (camera->port, &settings); settings.serial.speed = 57600; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits= 1; gp_port_set_settings (camera->port, settings); res = barbie_ping (camera->port); if (res) return (GP_OK); return (GP_ERROR); } libgphoto2-2.5.9/camlibs/barbie/Makefile-files0000644000175000001440000000036112561423351016115 00000000000000EXTRA_DIST += barbie/Protocol.txt barbie/ChangeLog EXTRA_LTLIBRARIES += barbie.la barbie_la_SOURCES = barbie/barbie.c barbie_la_LDFLAGS = $(camlib_ldflags) barbie_la_DEPENDENCIES = $(camlib_dependencies) barbie_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/barbie/Protocol.txt0000644000175000001440000000632012561423351015720 00000000000000/* Protocol Notes ========================================================== * PC is the host (always) * 6 images MAXIMUM on the camera, 128k of memory * Camera has an image counter that designates current image to do something with. (yes, there is better wording, but hey... :) * ACK = 0x06, NAK = 0x15 - No ack/nak means bad connection/faulty cable/no camera * Camera always answers ACK to sent command * Most COMMAND's have a matching RESPONSE * Command Packet structure is: [0x02] [COMMAND] [DATA] [DATA] [...] [0x03] * Response Packet structure is: [0x02] [RESPONSE] [DATA] [DATA] [...] [0x03] * Image transfer Packet Structure is: [0x02] [RESPONSE] [N1] [N2] [N3] [N4] [DATA] [DATA] [...] [0x03] N1 = number of columns in the image N2 = number of black lines N3 = number of visible lines N4 = number of status bytes Number of data bytes = N1 * (N2 + N3) + N4 * Firmware version transfer Packet Structure is: [0x02] [RESPONSE] [SIZE] [CHAR] [CHAR] [...] [NULL] [0x03] - On error: [0x02] [RESPONSE] [0] [0x03] * Camera sends response packets to host after it sends ACK. (NAK gets no response of course) - Command/Response codes (note: COMMAND is upper case, RESPONSE is lower case of same letter) CMD CMD DATA BYTES RESP DATA BYTES Description --- ----------------------- --------------------- ----------------------- A 1 (index #) 1 (0) move to image index # B 2 (duration, num times) 1 (0) beep (duration*50ms) E 1 (test char) 1 (test char) echo (test or wake up camera) G 1 (delay & retry flags) 1 (0, use grab image grab image - increments counter, result for error lower nibble = self timer delay, upper nibble = retry numbers 0,16,32,64(force),112 I 1 (0) 1 (image index) get image counter (use reset first to get # pics) J 2 (value: LSB, MSB) 2 (error, value) increment counter (0 lets current ram be read) K 1 (value) 1 (error) write rambyte (counter incremented after) L 1 (0) 1 (0) go idle M 1 (0) hdr+pixel data+info upload thumbnail (increments image counter & image index) P 1 (new port value) 1 (old port value) set port value Q 1 (video mode) 1 (0) video mode (!!) (requires capture card) R 1 (register index) 1 (register value) read register value (error = 0xFF) T 2 (min, max) 1 (0) set exposure threshold U 1 (0) hdr+pixel data+info upload image V 1 (0) version string get version information W 2 (register index, value) 1 (0 = OK, 0xFF = ERR) write register value X 1 (0) 2 (min, max) get exposure threshold Y 1 (0) 1 (grab result code) get grab result code 0x00 = successful 0x80 = memory full 0x81 = failed exposure Z 1 (0) 1 (0) quit self test * If camera is busy when command is issued, camera responds with a BUSY packet [0x02] [BUSY] [BUSYCODE] [0x03] - BUSY = '!' - Busy codes: 0x20 BUSY_TIMER camera waiting 0x21 BUSY_EXPOSURE waiting for exposure after grab started 0x22 BUSY_VIDEO camera in continuous video mode (self test)(yummy!!!!) :) 0x23 BUSY_SHUTTER waiting for shutter to come up 0x24 BUSY_COMMAND waiting for command completion 0x25 BUSY_COUNTER counter being reset (to nonzero value) */ libgphoto2-2.5.9/camlibs/barbie/ChangeLog0000644000175000001440000000065312610415510015124 000000000000002009-02-13 Marcus Meissner * barbie.c: made even more clean, split reader code in CameraFile* and char * generator. 2007-05-23 Marcus Meissner * main.c: Removed. * library.c: Reworked Bayer array decoding. Use global bayer routines. * library.c, barbie.c: Largish clean up. * library.c,barbie.h: Merged into barbie.c * Protocol.txt: Extracted from barbie.h libgphoto2-2.5.9/camlibs/jamcam/0000755000175000001440000000000012623156267013451 500000000000000libgphoto2-2.5.9/camlibs/jamcam/jamcam.c0000644000175000001440000002215112610415536014757 00000000000000/****************************************************************/ /* jamcam.c - Gphoto2 library for the KBGear JamCam v2 and v3 */ /* */ /* Copyright 2001 Chris Pinkham */ /* */ /* Author: Chris Pinkham */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #include "config.h" #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #include "library.h" #define GP_MODULE "jamcam" #define TIMEOUT 2000 #define JAMCAM_VERSION "0.6" #define JAMCAM_LAST_MOD "11/28/2001 14:51 EST" /* define what cameras we support */ static const struct { char *model; int usb_vendor; int usb_product; } models[] = { { "KBGear:JamCam", 0x084E, 0x0001 }, { NULL, 0, 0 } }; int camera_id (CameraText *id) { /* GP_DEBUG ("* camera_id"); */ strcpy (id->text, "jamcam"); return (GP_OK); } int camera_abilities (CameraAbilitiesList *list) { int x = 0; char *ptr; CameraAbilities a; /* GP_DEBUG ("* camera_abilities"); */ ptr = models[x].model; while (ptr) { memset(&a, 0, sizeof(a)); strcpy (a.model, ptr ); a.status = GP_DRIVER_STATUS_PRODUCTION; a.port = GP_PORT_SERIAL | GP_PORT_USB; a.speed[0] = 57600; a.speed[1] = 0; /* fixme, need to set these operations lists to correct values */ a.operations = GP_OPERATION_NONE; a.file_operations = GP_FILE_OPERATION_PREVIEW; a.folder_operations = GP_FOLDER_OPERATION_NONE; a.usb_vendor = models[x].usb_vendor; a.usb_product = models[x].usb_product; gp_abilities_list_append (list, a); ptr = models[++x].model; } return (GP_OK); } static int file_list_func (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context) { Camera *camera = data; int count; GP_DEBUG ("* file_list_func"); GP_DEBUG ("*** folder: %s", folder); CHECK (count = jamcam_file_count (camera)); CHECK (gp_list_populate (list, "pic_%04i.ppm", count)); return (GP_OK); } static int get_info_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context) { Camera *camera = data; int n; struct jamcam_file *jc_file; GP_DEBUG ("* get_info_func"); GP_DEBUG ("*** folder: %s", folder); GP_DEBUG ("*** filename: %s",filename); /* Get the file number from the CameraFileSystem */ CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); jc_file = jamcam_file_info( camera, n ); /* fixme, get file size also */ info->file.fields = GP_FILE_INFO_TYPE; strcpy (info->file.type, GP_MIME_PPM); info->file.width = jc_file->width; info->file.height = jc_file->height; info->preview.fields = GP_FILE_INFO_TYPE; strcpy (info->preview.type, GP_MIME_PPM); info->preview.width = 80; info->preview.height = 60; return (GP_OK); } static int camera_exit (Camera *camera, GPContext *context) { GP_DEBUG ("* camera_exit"); jamcam_file_count (camera); return (GP_OK); } #define CHECK_free(result) { \ int res; \ res = result; \ if (res < 0) { \ free(raw); free(ppm); \ return (res); \ } \ } static int get_file_func (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *user_data, GPContext *context) { Camera *camera = user_data; char *raw, *ppm; unsigned char gtable[256]; char *ptr; int size = 0, n = 0; int width, height; struct jamcam_file *jc_file; GP_DEBUG ("* camera_file_get"); GP_DEBUG ("*** folder: %s", folder); GP_DEBUG ("*** filename: %s",filename); GP_DEBUG ("*** type: %d", type); CHECK (n = gp_filesystem_number (camera->fs, folder, filename, context)); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) return (GP_ERROR_CANCEL); raw = malloc(640*480 * 3); ppm = malloc(640*480 * 3 + 200); switch (type) { case GP_FILE_TYPE_PREVIEW: CHECK_free (jamcam_request_thumbnail (camera, file, raw, &size, n, context)); width = 80; height = 60; sprintf( ppm, "P6\n" "# CREATOR: gphoto2, jamcam library\n" "%d %d\n" "255\n", width, height ); ptr = ppm + strlen( ppm ); size = strlen( ppm ) + ( height * width * 3 ); gp_bayer_decode((unsigned char *)raw, width, height, (unsigned char *)ptr, BAYER_TILE_GBRG ); gp_gamma_fill_table( gtable, 0.5 ); gp_gamma_correct_single( gtable, (unsigned char *)ptr, height * width ); CHECK_free (gp_file_set_mime_type (file, GP_MIME_PPM)); CHECK_free (gp_file_append (file, ppm, size)); break; case GP_FILE_TYPE_NORMAL: CHECK_free (jamcam_request_image (camera, file, raw, &size, n, context)); jc_file = jamcam_file_info (camera, n); sprintf( ppm, "P6\n" "# CREATOR: gphoto2, jamcam library\n" "%d %d\n" "255\n", jc_file->width, jc_file->height ); ptr = ppm + strlen( ppm ); size = strlen( ppm ) + ( jc_file->width * jc_file->height * 3 ); gp_bayer_decode((unsigned char *)raw, jc_file->width, jc_file->height, (unsigned char *)ptr, BAYER_TILE_GBRG ); gp_gamma_fill_table( gtable, 0.5 ); gp_gamma_correct_single( gtable, (unsigned char *)ptr, jc_file->width * jc_file->height ); CHECK_free (gp_file_set_mime_type (file, GP_MIME_PPM)); CHECK_free (gp_file_append (file, ppm, size)); break; case GP_FILE_TYPE_RAW: CHECK_free (jamcam_request_image (camera, file, raw, &size, n, context)); CHECK_free (gp_file_set_mime_type (file, GP_MIME_RAW)); CHECK_free (gp_file_append (file, raw, size)); break; default: free(raw); free(ppm); return (GP_ERROR_NOT_SUPPORTED); } free(raw); free(ppm); return (GP_OK); } static int camera_summary (Camera *camera, CameraText *summary, GPContext *context) { int count; char tmp[1024]; GP_DEBUG ("* camera_summary"); /* possibly get # pics, mem free, etc. */ count = jamcam_file_count (camera); sprintf (tmp, _("Frames Taken : %4d\n"), count); strcat (summary->text, tmp ); return (GP_OK); } static int camera_about (Camera *camera, CameraText *about, GPContext *context) { GP_DEBUG ("* camera_about"); strcpy (about->text, _("jamcam library v" JAMCAM_VERSION " " JAMCAM_LAST_MOD "\n" "Chris Pinkham \n" "Support for KBGear JamCam v2.0 & v3.0 digital cameras\n" "based on reverse engineering serial protocol.\n" "\n")); return (GP_OK); } static CameraFilesystemFuncs fsfuncs = { .file_list_func = file_list_func, .get_file_func = get_file_func, .get_info_func = get_info_func, }; int camera_init (Camera *camera, GPContext *context) { int count; GPPortSettings settings; GP_DEBUG ("* camera_init"); GP_DEBUG (" * jamcam library for Gphoto2 by Chris Pinkham "); GP_DEBUG (" * jamcam library v%s, %s", JAMCAM_VERSION, JAMCAM_LAST_MOD ); /* First, set up all the function pointers */ camera->functions->exit = camera_exit; camera->functions->summary = camera_summary; camera->functions->about = camera_about; CHECK (gp_port_get_settings (camera->port, &settings)); switch( camera->port->type ) { case GP_PORT_SERIAL: settings.serial.speed = 57600; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; break; case GP_PORT_USB: /* Use the defaults the core parsed */ break; default: fprintf( stderr, "Unknown port type: %d\n", camera->port->type ); return ( GP_ERROR ); break; } CHECK (gp_port_set_settings (camera->port, settings)); CHECK (gp_port_set_timeout (camera->port, TIMEOUT)); /* check to see if camera is really there */ CHECK (jamcam_enq (camera)); /* get number of images */ CHECK (count = jamcam_file_count (camera)); /* Set up the CameraFilesystem */ return gp_filesystem_set_funcs (camera->fs, &fsfuncs, camera); } libgphoto2-2.5.9/camlibs/jamcam/library.c0000644000175000001440000004300712610415536015176 00000000000000/****************************************************************/ /* library.c - Gphoto2 library for the KBGear JamCam v2 and v3 */ /* */ /* Copyright 2001 Chris Pinkham */ /* */ /* Author: Chris Pinkham */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #include "config.h" #include #include #include #include #include #include #include #include "library.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define GP_MODULE static struct jamcam_file jamcam_files[1024]; static int jamcam_count = 0; static int jamcam_mmc_card_size = 0; static int jamcam_read_packet (Camera *camera, unsigned char *packet, int length); static int jamcam_write_packet (Camera *camera, unsigned char *packet, int length); static int jamcam_fetch_memory( Camera *camera, CameraFile *file, unsigned char *data, int start, int length, GPContext *context); static int jamcam_query_mmc_card (Camera *camera); static int jamcam_set_int_at_pos( unsigned char *buf, int pos, int value ) { buf[pos + 0] = ( value ) & 0xff; buf[pos + 1] = ( value >> 8 ) & 0xff; buf[pos + 2] = ( value >> 16 ) & 0xff; buf[pos + 3] = ( value >> 24 ) & 0xff; return( value ); } static int jamcam_get_int_at_pos( unsigned char *buf, int pos ) { int ret = 0; ret += buf[pos + 0]; ret += buf[pos + 1] * 256; ret += buf[pos + 2] * 256 * 256; ret += buf[pos + 3] * 256 * 256 * 256; return( ret ); } static int jamcam_set_usb_mem_pointer( Camera *camera, int position ) { char reply[8]; GP_DEBUG ("* jamcam_set_usb_mem_pointer"); GP_DEBUG ("*** position: %d (0x%x)", position, position); gp_port_usb_msg_write( camera->port, 0xa1, ( position ) & 0xffff, ( position >> 16 ) & 0xffff, NULL, 0 ); gp_port_usb_msg_read( camera->port, 0xa0, 0, 0, reply, 8 ); return( GP_OK ); } /* get the number of images on the mmc card */ static int jamcam_mmc_card_file_count (Camera *camera) { unsigned char buf[16]; unsigned char reply[512]; unsigned int position = 0x40000000; int data_incr; int width; int height; GP_DEBUG ("* jamcam_mmc_card_file_count"); memset( buf, 0, sizeof( buf )); switch( camera->port->type ) { default: case GP_PORT_SERIAL: memcpy( buf, "KB00", 4 ); jamcam_set_int_at_pos( buf, 4, position ); jamcam_write_packet( camera, buf, 8 ); jamcam_read_packet( camera, reply, 16 ); while( memcmp( reply, "KB", 2 ) == 0 ) { width = (reply[5] * 256) + reply[4]; height = (reply[7] * 256) + reply[6]; data_incr = jamcam_get_int_at_pos( reply, 8 ); jamcam_files[jamcam_count].position = position; jamcam_files[jamcam_count].width = width; jamcam_files[jamcam_count].height = height; jamcam_files[jamcam_count].data_incr = data_incr; jamcam_count++; position += data_incr; jamcam_set_int_at_pos( buf, 4, position ); jamcam_write_packet( camera, buf, 8 ); jamcam_read_packet( camera, reply, 16 ); } break; case GP_PORT_USB: gp_port_usb_msg_write( camera->port, 0xa5, 0x0005, 0x0000, NULL, 0 ); jamcam_set_usb_mem_pointer( camera, position ); CHECK( gp_port_read (camera->port, (char*)reply, 0x10 )); width = (reply[13] * 256) + reply[12]; height = (reply[15] * 256) + reply[14]; jamcam_set_usb_mem_pointer( camera, position + 8 ); CHECK( gp_port_read (camera->port, (char*)reply, 512 )); gp_port_usb_msg_write( camera->port, 0xa5, 0x0006, 0x0000, NULL, 0 ); while((reply[0] != 0xff ) && (reply[0] != 0xaa ) && ((reply[0] != 0x00 ) || (reply[1] != 0x00 ))) { data_incr = jamcam_get_int_at_pos( reply, 0 ); jamcam_files[jamcam_count].position = position; jamcam_files[jamcam_count].width = width; jamcam_files[jamcam_count].height = height; jamcam_files[jamcam_count].data_incr = data_incr; jamcam_count++; position += data_incr; gp_port_usb_msg_write( camera->port, 0xa5, 0x0005, 0x0000, NULL, 0 ); jamcam_set_usb_mem_pointer( camera, position ); CHECK( gp_port_read (camera->port, (char*)reply, 0x10 )); width = (reply[13] * 256) + reply[12]; height = (reply[15] * 256) + reply[14]; jamcam_set_usb_mem_pointer( camera, position + 8 ); CHECK( gp_port_read (camera->port, (char*)reply, 512 )); gp_port_usb_msg_write( camera->port, 0xa5, 0x0006, 0x0000, NULL, 0 ); } break; } GP_DEBUG ( "*** returning with jamcam_count = %d", jamcam_count); return( 0 ); } int jamcam_file_count (Camera *camera) { unsigned char buf[16]; unsigned char reply[16]; int position = 0; int data_incr; int width; int height; int last_offset_size = 0; GP_DEBUG ("* jamcam_file_count"); jamcam_count = 0; memset( buf, 0, sizeof( buf )); switch( camera->port->type ) { default: case GP_PORT_SERIAL: memcpy( buf, "KB00", 4 ); jamcam_set_int_at_pos( buf, 4, position ); jamcam_write_packet( camera, buf, 8 ); jamcam_read_packet( camera, reply, 16 ); while( reply[0] == 'K' ) { width = (reply[5] * 256) + reply[4]; height = (reply[7] * 256) + reply[6]; data_incr = jamcam_get_int_at_pos( reply, 8 ); last_offset_size = data_incr; jamcam_files[jamcam_count].position = position; jamcam_files[jamcam_count].width = width; jamcam_files[jamcam_count].height = height; jamcam_files[jamcam_count].data_incr = data_incr; jamcam_count++; position += data_incr; jamcam_set_int_at_pos( buf, 4, position ); jamcam_write_packet( camera, buf, 8 ); jamcam_read_packet( camera, reply, 16 ); } /* the v3 camera uses 0x3fdf0 data increments so check for MMC */ if ( last_offset_size == 0x03fdf0 ) { jamcam_query_mmc_card( camera ); } break; case GP_PORT_USB: jamcam_set_usb_mem_pointer( camera, position ); CHECK( gp_port_read (camera->port, (char*)reply, 0x10 )); width = (reply[13] * 256) + reply[12]; height = (reply[15] * 256) + reply[14]; jamcam_set_usb_mem_pointer( camera, position + 8 ); CHECK( gp_port_read (camera->port, (char*)reply, 0x10 )); while(reply[0] != 0xff ) { data_incr = jamcam_get_int_at_pos( reply, 0 ); jamcam_files[jamcam_count].position = position; jamcam_files[jamcam_count].width = width; jamcam_files[jamcam_count].height = height; jamcam_files[jamcam_count].data_incr = data_incr; jamcam_count++; position += data_incr; jamcam_set_usb_mem_pointer( camera, position ); CHECK( gp_port_read (camera->port, (char*)reply, 0x10 )); width = (reply[13] * 256) + reply[12]; height = (reply[15] * 256) + reply[14]; jamcam_set_usb_mem_pointer( camera, position + 8 ); CHECK( gp_port_read (camera->port, (char*)reply, 0x10 )); } break; } if ( jamcam_mmc_card_size ) { jamcam_count += jamcam_mmc_card_file_count( camera ); } GP_DEBUG ( "*** returning jamcam_count = %d", jamcam_count); return( jamcam_count ); } static int jamcam_fetch_memory( Camera *camera, CameraFile *file, unsigned char *data, int start, int length, GPContext *context) { unsigned char tmp_buf[16]; unsigned char packet[16]; int new_start; int new_end; int bytes_read = 0; int bytes_to_read; int bytes_left = length; int res = GP_OK; unsigned int id = 0; GP_DEBUG ("* jamcam_fetch_memory"); GP_DEBUG (" * start: %d (0x%x)", start, start); GP_DEBUG (" * length: %d (0x%x)", length, length); if ( length > 1000 ) id = gp_context_progress_start (context, length, _("Downloading data...")); while( bytes_left ) { switch( camera->port->type ) { default: case GP_PORT_SERIAL: bytes_to_read = bytes_left > SER_PKT_SIZE ? SER_PKT_SIZE : bytes_left; memset( packet, 0, sizeof( packet )); memcpy( packet, "KB01", 4 ); new_start = start + bytes_read; new_end = start + bytes_read + bytes_to_read - 1; /* start and end (inclusive) */ jamcam_set_int_at_pos( packet, 4, new_start ); jamcam_set_int_at_pos( packet, 8, new_end ); jamcam_write_packet( camera, packet, 12 ); CHECK (jamcam_read_packet( camera, data + bytes_read, bytes_to_read )); break; case GP_PORT_USB: bytes_to_read = bytes_left > USB_PKT_SIZE ? USB_PKT_SIZE : bytes_left; /* for some reason this priming read fixes an offset problem */ /* in the images, we are only reading the first 16 bytes of */ /* data twice by doing this, so I don't know why it works */ jamcam_set_usb_mem_pointer( camera, start + bytes_read ); CHECK( gp_port_read (camera->port, (char*)tmp_buf, 16 )); jamcam_set_usb_mem_pointer( camera, start + bytes_read ); CHECK( gp_port_read (camera->port, (char*)data + bytes_read, bytes_to_read )); break; } bytes_left -= bytes_to_read; bytes_read += bytes_to_read; /* hate this hardcoded, but don't want to update here */ /* when downloading parts of a thumbnail */ if ( length > 1000 ) { gp_context_progress_update (context, id, bytes_read); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { GP_DEBUG (" * CANCELED"); break; } } } if ( length > 1000 ) gp_context_progress_stop (context, id); if ( res == GP_OK ) { GP_DEBUG (" * returning OK"); } return( res ); } int jamcam_request_image( Camera *camera, CameraFile *file, char *buf, int *len, int number, GPContext *context ) { int position; int result; unsigned char *tmp_buf; GP_DEBUG ("* jamcam_request_image"); tmp_buf = malloc(640*480*3); position = jamcam_files[number].position; /* don't know why this is necessary, but do it anyway */ if ( camera->port->type == GP_PORT_USB ) { position += 8; } if ( camera->port->type == GP_PORT_USB ) { gp_port_usb_msg_write( camera->port, 0xa5, 0x0005, 0x0000, NULL, 0 ); } result = jamcam_fetch_memory( camera, file, tmp_buf, position, jamcam_files[number].data_incr, context ); /* this seems to reset the camera to a sane status */ if ( camera->port->type == GP_PORT_USB ) { gp_port_usb_msg_write( camera->port, 0xa5, 0x0006, 0x0000, NULL, 0 ); } if ( result == GP_OK ) { *len = jamcam_files[number].width * jamcam_files[number].height; memcpy( buf, tmp_buf + 0x10, *len ); } free (tmp_buf); return( result ); } struct jamcam_file *jamcam_file_info(Camera *camera, int number) { GP_DEBUG(" * jamcam_file_info, nr is %d", number); return( &jamcam_files[number] ); } int jamcam_request_thumbnail( Camera *camera, CameraFile *file, char *buf, int *len, int number, GPContext *context ) { unsigned char line[2048]; char packet[16]; int position; int x, y; int res = GP_OK; char *ptr; int bytes_to_read; unsigned int id; GP_DEBUG ("* jamcam_request_thumbnail"); memset( packet, 0, sizeof( packet )); position = jamcam_files[number].position + 0x10; *len = 4800; ptr = buf; if ( camera->port->type == GP_PORT_USB ) { /* windows driver does this sometimes */ gp_port_usb_msg_write( camera->port, 0xa5, 0x0005, 0x0000, NULL, 0 ); /* just read one row of data at a time */ bytes_to_read = jamcam_files[number].width; } else { /* MMC card is quirky, need to fetch larger amounts of data */ if ( position >= 0x40000000 ) { /* serial with mmc card needs bigger packets */ bytes_to_read = 2048; } else { /* just read one row of data at a time */ bytes_to_read = jamcam_files[number].width; } } /* fetch thumbnail lines and build the thumbnail */ position += 10 * jamcam_files[number].width; id = gp_context_progress_start (context, 60., _("Downloading thumbnail...")); for( y = 0 ; y < 60 ; y++ ) { jamcam_fetch_memory( camera, file, line, position, bytes_to_read, context ); gp_context_progress_update (context, id, y); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { res = GP_ERROR_CANCEL; break; } if ( jamcam_files[number].width == 600 ) { for( x = 22; x < 578 ; x += 7 ) { *(ptr++) = line[x]; } position += 7 * 600; } else { for( x = 0; x < 320 ; ) { *(ptr++) = line[x]; x += 3; *(ptr++) = line[x]; x += 5; } if ( y % 2 ) { position += 5 * 320; } else { position += 3 * 320; } } } gp_context_progress_stop (context, id); /* this seems to reset the camera to a sane status */ if ( camera->port->type == GP_PORT_USB ) { gp_port_usb_msg_write( camera->port, 0xa5, 0x0006, 0x0000, NULL, 0 ); } return( res ); } static int jamcam_write_packet (Camera *camera, unsigned char *packet, int length) { int ret, r; GP_DEBUG ("* jamcam_write_packet"); for (r = 0; r < RETRIES; r++) { ret = gp_port_write (camera->port, (char*)packet, length); if (ret == GP_ERROR_TIMEOUT) continue; return (ret); } return (GP_ERROR_TIMEOUT); } static int jamcam_read_packet (Camera *camera, unsigned char *packet, int length) { int r = 0; int bytes_read; GP_DEBUG ("* jamcam_read_packet"); GP_DEBUG ("*** length: %d (0x%x)", length, length); for (r = 0; r < RETRIES; r++) { bytes_read = gp_port_read (camera->port, (char*)packet, length); if (bytes_read == GP_ERROR_TIMEOUT) continue; if (bytes_read < 0) return (bytes_read); if ( bytes_read == length ) { return( GP_OK ); } } return (GP_ERROR_TIMEOUT); } int jamcam_enq (Camera *camera) { int ret, r = 0; unsigned char buf[16]; GP_DEBUG ("* jamcam_enq"); memset( buf, 0, 16 ); switch( camera->port->type ) { default: case GP_PORT_SERIAL: for (r = 0; r < RETRIES; r++) { memcpy (buf, "KB99", 4 ); ret = jamcam_write_packet (camera, buf, 4); if (ret == GP_ERROR_TIMEOUT) continue; if (ret != GP_OK) return (ret); ret = jamcam_read_packet (camera, buf, 4); if (ret == GP_ERROR_TIMEOUT) continue; if (ret != GP_OK) return (ret); if ( !memcmp( buf, "KIDB", 4 )) { return (GP_OK); } } return (GP_ERROR_CORRUPTED_DATA); break; case GP_PORT_USB: for (r = 0; r < RETRIES; r++) { gp_port_usb_msg_write( camera->port, 0xa5, 0x0004, 0x0000, NULL, 0 ); jamcam_set_usb_mem_pointer( camera, 0x0000 ); CHECK( gp_port_read( camera->port, (char *)buf, 0x0c )); if (( !memcmp( buf, "KB00", 4 )) || (( buf[0] == 0xff ) && ( buf[1] == 0xff ) && ( buf[2] == 0xff ) && ( buf[3] == 0xff ) && ( buf[4] == 0xff ) && ( buf[5] == 0xff ) && ( buf[6] == 0xff ) && ( buf[7] == 0xff ))) { /* found a JamCam v3 camera */ /* reply contains 4-bytes with MMC card size if present */ /* set to 0 if none */ jamcam_mmc_card_size = jamcam_get_int_at_pos( buf, 8 ); if ( jamcam_mmc_card_size ) { GP_DEBUG ( "* jamcam_enq, MMC card size = %d", jamcam_mmc_card_size ); } return (GP_OK); } else if ( !memcmp( buf + 8, "KB00", 4 )) { /* found a JamCam v2 camera */ /* JamCam v2 doesn't support MMC card so no need to check */ return (GP_OK); } else if (( buf[0] == 0xf0 ) && ( buf[1] == 0xfd ) && ( buf[2] == 0x03 )) { return( GP_OK ); } } return (GP_ERROR_CORRUPTED_DATA); break; } return (GP_ERROR_TIMEOUT); } static int jamcam_query_mmc_card (Camera *camera) { int ret, r = 0; unsigned char buf[16]; GP_DEBUG ("* jamcam_query_mmc_card"); /* usb port doesn't need this packet, this info found in enquiry reply */ if ( camera->port->type == GP_PORT_USB ) { return( GP_OK ); } memcpy( buf, "KB04", 4 ); for (r = 0; r < RETRIES; r++) { ret = jamcam_write_packet (camera, buf, 4); if (ret == GP_ERROR_TIMEOUT) continue; if (ret != GP_OK) return (ret); ret = jamcam_read_packet (camera, buf, 4); if (ret == GP_ERROR_TIMEOUT) continue; if (ret != GP_OK) return (ret); /* reply is 4-byte int showing length of MMC card if any, 0 if none */ jamcam_mmc_card_size = jamcam_get_int_at_pos( buf, 0 ); if ( jamcam_mmc_card_size ) { GP_DEBUG ("* jamcam_query_mmc_card, MMC card size = %d", jamcam_mmc_card_size ); } return (GP_OK); } return (GP_ERROR_TIMEOUT); } libgphoto2-2.5.9/camlibs/jamcam/library.h0000644000175000001440000000433012610415536015177 00000000000000/****************************************************************/ /* library.h - Gphoto2 library for the KBGear JamCam v2 and v3 */ /* */ /* Copyright 2001 Chris Pinkham */ /* */ /* Author: Chris Pinkham */ /* */ /* This library is free software; you can redistribute it */ /* and/or modify it under the terms of the GNU Library General */ /* Public License as published by the Free Software Foundation; */ /* either version 2 of the License, or (at your option) any */ /* later version. */ /* */ /* This library 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 Library General Public License for */ /* more details. */ /* */ /* You should have received a copy of the GNU Library General */ /* Public License along with this library; if not, write to the */ /* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,*/ /* Boston, MA 02110-1301 USA */ /****************************************************************/ #ifndef __LIBRARY_H__ #define __LIBRARY_H__ #define RETRIES 10 #define SER_PKT_SIZE 4096 #define USB_PKT_SIZE 4096 #define CHECK(result) {int __res; __res = result; if (__res < 0) return (__res);} struct jamcam_file { int position; int width; int height; int data_incr; }; int jamcam_enq(Camera *camera); int jamcam_file_count(Camera *camera); struct jamcam_file *jamcam_file_info(Camera *camera, int number); int jamcam_request_image(Camera *camera, CameraFile *file, char *buf, int *len, int number, GPContext *context ); int jamcam_request_thumbnail(Camera *camera, CameraFile *file, char *buf, int *len, int number, GPContext *context ); #endif /* __LIBRARY_H__ */ libgphoto2-2.5.9/camlibs/jamcam/README.jamcam0000644000175000001440000000107512561423351015473 00000000000000KBGear JamCam v2 and v3 This driver is based upon protocol reverse-engineered using Portmon and sniffusb under Windows 98. For questions/comments, email the library author: Chris Pinkham cpinkham@infi.net ---------------------------------------------------------------- TODO List --------- - Fix downloading of thumbnails from mmc card (serial and usb) - better error checking/handling - optimize code, it's nowhere near theoretical max download speed ----------------------------------------------------------------- Author: Chris Pinkham libgphoto2-2.5.9/camlibs/jamcam/Makefile-files0000644000175000001440000000047412561423351016126 00000000000000EXTRA_DIST += jamcam/README.jamcam jamcam/ChangeLog camlibdoc_DATA += jamcam/README.jamcam EXTRA_LTLIBRARIES += jamcam.la jamcam_la_SOURCES = jamcam/jamcam.c jamcam/library.c jamcam/library.h jamcam_la_LDFLAGS = $(camlib_ldflags) jamcam_la_DEPENDENCIES = $(camlib_dependencies) jamcam_la_LIBADD = $(camlib_libadd) libgphoto2-2.5.9/camlibs/jamcam/ChangeLog0000644000175000001440000000242712557123324015142 000000000000002002-02-04 Marcus Meissner * library.c, jamcam.c: Replaced very large stack arrays by malloc()ed ones. And make them large enough not to overflow. 2002-01-05 Marcus Meissner * library.c: We need to read a reply of 8 bytes, or the kernel reports data overflow. 2002-07-16 Lutz Müller * Makefile.am: Don't use glib. 2002-03-21 Hubert Figuiere * library.c (jamcam_file_count): Patch by Thor Ablestar Fix the file count if the camera storage is full. 2002-01-04 Chris Pinkham * jamcam.c, library.c, library.h: updated code to use new gp_file_progress instead of gp_camera_progress. 2001-12-05 Lutz Müller * jamcam.c: Don't include , include <*.h> instead. 2001-11-28 Chris Pinkham * jamcam.c: changed driver version to reflect new revision. 2001-11-28 Chris Pinkham * README: updated TODO list. * jamcam.c, library.c, library.h: Changed license of source code from GPL to LPGL. Various bugfixes to make driver more robust and to have better error recovery. 2001-11-28 Chris Pinkham * ChangeLog: created file. libgphoto2-2.5.9/auto-aux/0000755000175000001440000000000012623156270012344 500000000000000libgphoto2-2.5.9/auto-aux/compile0000755000175000001440000001624512615454344013656 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/auto-aux/depcomp0000755000175000001440000005601612615454346013657 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/auto-aux/ar-lib0000755000175000001440000001330212615454344013363 00000000000000#! /bin/sh # Wrapper for Microsoft lib.exe me=ar-lib scriptversion=2012-03-01.08; # UTC # Copyright (C) 2010-2014 Free Software Foundation, Inc. # Written by Peter Rosin . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # func_error message func_error () { echo "$me: $1" 1>&2 exit 1 } file_conv= # func_file_conv build_file # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv in mingw) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin) file=`cygpath -m "$file" || echo "$file"` ;; wine) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_at_file at_file operation archive # Iterate over all members in AT_FILE performing OPERATION on ARCHIVE # for each of them. # When interpreting the content of the @FILE, do NOT use func_file_conv, # since the user would need to supply preconverted file names to # binutils ar, at least for MinGW. func_at_file () { operation=$2 archive=$3 at_file_contents=`cat "$1"` eval set x "$at_file_contents" shift for member do $AR -NOLOGO $operation:"$member" "$archive" || exit $? done } case $1 in '') func_error "no command. Try '$0 --help' for more information." ;; -h | --h*) cat <. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libgphoto2-2.5.9/auto-aux/test-driver0000755000175000001440000001104012615454346014464 00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/auto-aux/install-sh0000755000175000001440000003452312615454344014303 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/auto-aux/ltmain.sh0000755000175000001440000117077112615454336014132 00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.6 package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 3 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES 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 . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do 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 # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >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 "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # 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. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # 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" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # 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). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 3 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, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname (GNU libtool) 2.4.6 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # 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+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # 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 relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -stdlib=* select c++ std lib with clang -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: libgphoto2-2.5.9/auto-aux/config.rpath0000755000175000001440000003521312557123416014602 00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2003 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; mingw* | pw32* | os2*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux*) case $CC in icc|ecc) wl='-Wl,' ;; ccc) wl='-Wl,' ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; sco3.2v5*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) wl='-Wl,' ;; sysv4*MP*) ;; uts4*) ;; esac fi # Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no 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 ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then 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 fi ;; amigaos*) 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 use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; 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 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 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) 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 hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 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 rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi4*) ;; 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=' ' libext=lib ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then hardcode_direct=no fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) 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 ;; hpux10* | hpux11*) if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=no ;; ia64*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; *) 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 ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4.2uw2*) hardcode_direct=yes hardcode_minus_L=no ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) ;; sysv5*) hardcode_libdir_flag_spec= ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. libname_spec='lib$name' case "$host_os" in aix3*) ;; aix4* | aix5*) ;; amigaos*) ;; beos*) ;; bsdi4*) ;; cygwin* | mingw* | pw32*) shrext=.dll ;; darwin* | rhapsody*) shrext=.dylib ;; dgux*) ;; freebsd1*) ;; freebsd*) ;; gnu*) ;; hpux9* | hpux10* | hpux11*) case "$host_cpu" in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac ;; irix5* | irix6* | nonstopux*) case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux*) ;; netbsd*) ;; newsos6) ;; nto-qnx) ;; openbsd*) ;; os2*) libname_spec='$name' shrext=.dll ;; osf3* | osf4* | osf5*) ;; sco3.2v5*) ;; solaris*) ;; sunos4*) ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ;; sysv4*MP*) ;; uts4*) ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' < # Created: 1993-05-16 # Public domain. # # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' IFS=" "" $nl" errstatus=0 dirmode= usage="\ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Create each directory DIR (with mode MODE, if specified), including all leading file name components. Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" exit $? ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --version) echo "$0 $scriptversion" exit $? ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac # Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and # mkdir -p a/c at the same time, both will detect that a is missing, # one will create a, then the other will try to create a and die with # a "File exists" error. This is a problem when calling mkinstalldirs # from a parallel make. We use --version in the probe to restrict # ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec 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. test -d ./-p && rmdir ./-p test -d ./--version && rmdir ./--version fi ;; *) if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" else # Clean up after NextStep and OpenStep mkdir. for d in ./-m ./-p ./--version "./$dirmode"; do test -d $d && rmdir $d done fi ;; esac for file do case $file in /*) pathcomp=/ ;; *) pathcomp= ;; esac oIFS=$IFS IFS=/ set fnord $file shift IFS=$oIFS for d do test "x$d" = x && continue pathcomp=$pathcomp$d case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr= chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp=$pathcomp/ done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/auto-aux/config.guess0000755000175000001440000012442112615454344014614 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-11-04' # 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 # the Free Software Foundation; either version 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac case "${UNAME_MACHINE}" in i?86) test -z "$VENDOR" && VENDOR=pc ;; *) test -z "$VENDOR" && VENDOR=unknown ;; esac test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-${VENDOR}-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-${VENDOR}-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # 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'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; 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 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-${VENDOR}-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-${VENDOR}-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-${VENDOR}-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-${VENDOR}-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp 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 echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 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 ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` 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 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} 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 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} 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 # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-${VENDOR}-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $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 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` 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 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF 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 ;; *:AIX:*:[4567]) 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 IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # 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 -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-${VENDOR}-osf1mk else echo ${UNAME_MACHINE}-${VENDOR}-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' 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 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' 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 ;; 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 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-${VENDOR}-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-${VENDOR}-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks 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 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-${VENDOR}-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-${VENDOR}-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-${VENDOR}-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-${VENDOR}-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-${VENDOR}-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-${VENDOR}-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-${VENDOR}-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-${VENDOR}-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-${VENDOR}-linux-${LIBC} ;; PA8*) echo hppa2.0-${VENDOR}-linux-${LIBC} ;; *) echo hppa-${VENDOR}-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-${VENDOR}-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-${VENDOR}-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-${VENDOR}-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-${VENDOR}-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} 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 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} 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 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-${VENDOR}-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-${VENDOR}-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-${VENODR}-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp 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 echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi 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}-${VENDOR}-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/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-${VENODR}-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) 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; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { 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; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' 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; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 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 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 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-${VENDOR}-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-${VENDOR}-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-${VENDOR}-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-${VENDOR}-tops10 exit ;; *:TENEX:*:*) echo pdp10-${VENDOR}-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-${VENDOR}-tops20 exit ;; *:ITS:*:*) echo pdp10-${VENDOR}-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-${VENDOR}-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in 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 ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-${VENDOR}-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp 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` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libgphoto2-2.5.9/auto-aux/missing0000755000175000001440000001533012615454344013671 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/COPYING0000644000175000001440000006347212557123324011570 00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright © 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright © This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! libgphoto2-2.5.9/libgphoto2.pc.in0000644000175000001440000000057612610415620013524 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ VERSION=@VERSION@ driverdir=@camlibdir@ Name: libgphoto2 Description: Library for easy access to digital cameras URL: http://gphoto.org/proj/libgphoto2/ Version: @VERSION@ Requires: libgphoto2_port >= 0.10.0 @REQUIREMENTS_FOR_LIBEXIF@ Libs: -L${libdir} -lgphoto2 -lm Cflags: -I${includedir}/gphoto2 libgphoto2-2.5.9/AUTHORS0000644000175000001440000001404412610415617011573 00000000000000Scott Fritzinger Design, core implementation, Sierra Imaging library, Directory Browse library, Mattel library, command-line interface, gpio design Mariusz Zynel Panasonic DC1000/DC1580 library, command-line interface, Solaris patches, bug fixing Johannes Erdfelt Digita library, gpio USB support, bug fixes Werner Almesberger Canon A50 library Ole W. Saastad Additions for Canon PowerShot A5 support Veros Kaplan Sierra library bug fixes & folder support Wolfgang Reissnegger Canon A50 library Philippe Marzouk Canon thumbnail and deletion support Edouard Lafargue Canon camera detection, fixes, configuration dialog Ole Aamot GNOME configuration support Bart van Leeuwen OS/2 Port, Sony DSC-F1 updates M. Adam Kendall Sony DSC-F1 library Mark Davies Sony DSC-F55E library Beat Christen gpio serial code Gus Hartmann Minolta Dimage V library Raymond Penners gPhoto2 port of the Sony DSC-F55 library Marcus Meissner Jenoptik JD11 and SiPix Web2 library, cleanups in the stv680 and other libraries, PTP 2 driver maintainer. Lutz Müller Konica driver, various clean-up all over the place Fredrik Canon driver, all but serial specific things. Hans Ulrich Niedermann Canon driver, package building, hotplug, and various other things Christophe Barbé Release building and small fixes. Dennis Noordsij , Philipp Poeml Agfa CL20 driver. Theodore Kilgore aox, clicksmart310, digigr8, iclick, mars, sq905, sonix libraries. Stephen Pollei iclick library. Paul Walmsley Canon 5D (class 6) capture support. Thanks to the Internet Archive, , for funding the development of this code. This code is used in the Internet Archive's book scanner. Hans de Goede ST2205 Picture Frame support (and usbdiskdirect port driver). ========================================================================= git migration authors ap2c=Aurelien Croc (AP262C) asl=Arnaud Launay barbe=Christophe Barbe bellet=Fabrice Bellet berrange=Daniel P. Berrange cmarqu=Colin Marquardt cpinkham=Chris Pinkham cweinholz=Carsten Weinholz deater=Vince Weaver dfandrich=Dan Fandrich donn=Donn Morrison dotsphinx=Raymond Penners ggrandou=Gilles Grandou gus_hartmann=Gus Hartmann hfiguiere=Hubert Figuiere hun=Hans Ulrich Niedermann ikonst=Ilya Konstantinov ingram=Greg Ingram jerdfelt=Johannes Erdfelt jgangemi=Jae Gangemi jwrdegoede=Hans de Goede kil3r=Mariusz Woloszyn kilgota=Theodore Kilgore kinimod=Dominik Kuhlen koltan=Michael Koltan leibnitz27=Lee Benfield lodewyck=Jerome Lodewyck lutz=Lutz Mueller marcusmeissner=Marcus Meissner mariusz=Mariusz Zynel mattmartin=Matt Martin mrensing=Michael Rensing nathanstenzel=Nathan Stenzel ofauchon=Olivier Fauchon patmans=Patrick Mansfield pbk2513=Peter Kajberg philm=Philippe Marzouk polesworth=Miah Gregory scottf=Scott Fritzinger sean_bruno=Sean Bruno steph-c=Stephane Castejon swestin=Stephen H. Westin tillsan=Till Adam trawny99=Michael Trawny twaugh=Tim Waugh womprat=David Hogue ole=Ole Aamot phillh= PhillH (no author)=No author known pauljenn=Paul Jenner gdr=Gary Ross bpaauwe=Bob Paauwe mmartin=Matt Martin scottr=Randy D. Scott hartmann=Gus Hartmann elegowsk=Ed Legowski kmaraas=Kjartan Maraas pablo=Pablo Saratxaga ahyden=Andreas Hyden frob=Valek Filippov simpson2=bvl bratislav=Benedikt Roth rasta=Yuri Syrota minmax=Andraz Tori ke=Karl Eichwalder cgabriel=Christopher R. Gabriel bansz=Unknown root=Root kail=Kai Lahmann uid31719=uid31719 uid31868=uid31868 uid36478=uid36478 fredrikt=Fredrik uid34756=uid34756 troncon=Remko Troncon uid64678=uid64678 adburton=Andrew Burton trickymctrick=Patrick van Staveren Mutant_Fruit=Alan McGovern dpv=David PHAM-VAN libgphoto2-2.5.9/gphoto-m4/0000755000175000001440000000000012623156300012411 500000000000000libgphoto2-2.5.9/gphoto-m4/gp-packaging.m40000644000175000001440000000420412610415620015122 00000000000000AC_DEFUN([GPKG_CHECK_RPM], [ AC_ARG_WITH([rpmbuild], [AS_HELP_STRING([--with-rpmbuild=PATH], [Program to use for building RPMs])]) AC_MSG_CHECKING([for rpmbuild or rpm]) if test -x "${with_rpmbuild}" then RPMBUILD="${with_rpmbuild}" AC_MSG_RESULT([${RPMBUILD} (from parameter)]) else AC_MSG_RESULT([using autodetection]) AC_CHECK_PROGS(RPMBUILD, [rpmbuild rpm], false) AC_MSG_CHECKING([for rpmbuild or rpm]) AC_MSG_RESULT([${RPMBUILD} (autodetected)]) fi AC_SUBST([RPMBUILD]) AM_CONDITIONAL([ENABLE_RPM], [test "$RPMBUILD" != "false"]) ]) AC_DEFUN([GPKG_CHECK_LINUX], [ # effective_target has to be determined in advance AC_REQUIRE([AC_NEED_BYTEORDER_H]) is_linux=false case "$effective_target" in *linux*) is_linux=true ;; esac AM_CONDITIONAL([HAVE_LINUX], ["$is_linux"]) # required for docdir # FIXME: Implicit dependency # AC_REQUIRE(GP_CHECK_DOC_DIR) AC_ARG_WITH([hotplug-doc-dir], [AS_HELP_STRING([--with-hotplug-doc-dir=PATH], [Where to install hotplug scripts as docs [default=autodetect]])]) if "$is_linux"; then AC_MSG_CHECKING([for hotplug doc dir]) if test "x${with_hotplug_doc_dir}" != "x" then # given as parameter hotplugdocdir="${with_hotplug_doc_dir}" AC_MSG_RESULT([${hotplugdocdir} (from parameter)]) else # start at docdir hotplugdocdir="${docdir}/linux-hotplug" AC_MSG_RESULT([${hotplugdocdir} (default)]) fi else hotplugdocdir="" fi AC_ARG_WITH([hotplug-usermap-dir], [AS_HELP_STRING([--with-hotplug-usermap-dir=PATH], [Where to install hotplug scripts as docs [default=autodetect]])]) if "$is_linux"; then AC_MSG_CHECKING([for hotplug usermap dir]) if test "x${with_hotplug_usermap_dir}" != "x" then # given as parameter hotplugusermapdir="${with_hotplug_usermap_dir}" AC_MSG_RESULT([${hotplugusermapdir} (from parameter)]) else # start at docdir hotplugusermapdir="${docdir}/linux-hotplug" AC_MSG_RESULT([${hotplugusermapdir} (default)]) fi else hotplugusermapdir="" fi # Let us hope that automake does not create "" directories # on non-Linux systems now. AC_SUBST([hotplugdocdir]) AC_SUBST([hotplugusermapdir]) ]) libgphoto2-2.5.9/gphoto-m4/gp-dynamic-libraries.m40000644000175000001440000000361312610415620016577 00000000000000AC_DEFUN([GP_DYNAMIC_LIBRARIES],[dnl dnl We require either of those dnl AC_REQUIRE([AC_LIBTTDL_INSTALLABLE])dnl dnl AC_REQUIRE([AC_LIBLTDL_CONVENIENCE])dnl AC_REQUIRE([AC_LIBTOOL_DLOPEN])dnl AC_REQUIRE([AC_PROG_LIBTOOL])dnl dnl --------------------------------------------------------------------------- dnl Check for libltdl: dnl - lt_dlforeachfile has been introduced in libtool-1.4. dnl - However, there are still systems out there running libtool-1.3. dnl For those, we will use our shipped libltdl. This has the welcome dnl side effect that we don't have to distinguish between libltdl 1.3 with dnl and without the notorious segfault bug. dnl - FIXME: In case we're using our own version, we have to check whether dnl -ldl is required? dnl --------------------------------------------------------------------------- # $0 ltdl_msg="no (not found or too old)" have_ltdl=false LIBS_save="$LIBS" LIBS="$LIBLTDL" AC_CHECK_LIB([ltdl], [lt_dlforeachfile],[ CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="$LTDLINCL" AC_CHECK_HEADER([ltdl.h],[ AC_DEFINE([HAVE_LTDL],1,[whether we use libltdl]) ltdl_msg="yes (from system)" have_ltdl=: ]) CPPFLAGS="$CPPFLAGS_save" ]) LIBS="$LIBS_save" if "$have_ltdl"; then :; else AC_MSG_CHECKING([for included libltdl]) if test -d "$srcdir/libltdl"; then LIBLTDL="\$(top_builddir)/libltdl/libltdlc.la" LTDLINCL="-I\$(top_srcdir)/libltdl" have_ltdl=: ltdl_msg="yes (included)" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_ERROR([ *** Could not detect or configure libltdl. ]) fi fi GP_CONFIG_MSG([libltdl],["${ltdl_msg}"]) ])dnl dnl dnl #################################################################### dnl dnl Please do not remove this: dnl filetype: 2b993145-3256-47b4-84fd-ec4dcdf4fdf9 dnl I use this to find all the different instances of this file which dnl are supposed to be synchronized. dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/gphoto-m4/gp-libltdl.m40000644000175000001440000000346012610415620014627 00000000000000dnl Written by Hans Ulrich Niedermann dnl LDFLAGS vs LIBS fix by Dan Nicholson dnl dnl We are using our own libltdl checks instead of AC_WITH_LTDL dnl because we do not want to ship our own copy of libltdl any more. dnl Not shipping libltdl makes it possible to ditch our own autogen.sh dnl and relying on standard autoconf's "autoreconf". dnl dnl Look for external libltdl, not shipping internal libltdl. AC_DEFUN([GP_LIB_LTDL],[dnl AC_ARG_VAR([LTDLINCL],[CFLAGS for compiling with libltdl]) AC_ARG_VAR([LIBLTDL],[LIBS to add for linking against libltdl]) if test "x${LTDLINCL}${LIBLTDL}" = "x"; then AC_CHECK_HEADER([ltdl.h], [dnl AC_CHECK_LIB([ltdl], [lt_dlinit],[dnl LTDLINCL="" LIBLTDL="-lltdl" AC_DEFINE([HAVE_LTDL],[1],[Whether libltdl (of libtool fame) is present]) ],[dnl AC_MSG_ERROR([ $PACKAGE requires the ltdl library, included with libtool Please make sure that the proper development package is installed (libltdl-dev, libtool-ltdl-devel, etc.) ])[]dnl ])dnl ]) else AC_MSG_CHECKING([for libltdl flags]) AC_MSG_RESULT([set explicitly: ${LTDLINCL} ${LIBLTDL}]) fi AC_SUBST([LTDLINCL]) AC_SUBST([LIBLTDL]) dnl dnl Make sure we can actually compile and link against libltdl AC_LANG_PUSH([C]) AC_MSG_CHECKING([that we can compile and link with libltdl]) saved_CPPFLAGS="$CPPFLAGS" saved_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $LTDLINCL" LIBS="$LIBS $LIBLTDL" AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl #include /* for NULL */ #include /* for lt_* */ ],[dnl int ret = lt_dlforeachfile("/usr/lib:/usr/local/lib", NULL, NULL); ])], [AC_MSG_RESULT([yes])], [dnl AC_MSG_RESULT([no]) AC_MSG_ERROR([cannot compile and link against libltdl ${PACKAGE_TARNAME} requires libltdl (the libtool dl* library), but cannot compile and link against it. Aborting. ]) ]) CPPFLAGS="$saved_CPPFLAGS" LIBS="$saved_LIBS" AC_LANG_POP ])dnl libgphoto2-2.5.9/gphoto-m4/gp-va-copy.m40000644000175000001440000000212212610415620014551 00000000000000dnl @synopsis GP_VA_COPY dnl dnl Checks whether one of these compiles and links: dnl 1. va_copy() dnl 2. __va_copy() dnl 3. fallback dnl dnl In case of 1 or 2, AC_DEFINE(HAVE_VA_COPY). dnl In case of 2, AC_DEFINE(va_copy,__va_copy) dnl dnl In code, use it like this dnl #ifdef HAVE_VA_COPY dnl ... code with va_copy ... dnl #else dnl ... code without va_copy or with error ... dnl #endif dnl AC_DEFUN([GP_VA_COPY],[dnl dnl AC_CHECK_HEADER([stdarg.h],[],[ AC_MSG_ERROR([ Building $PACKAGE_NAME requires . ]) ]) dnl have_va_copy=no AC_TRY_LINK([ #include ],[ va_list a,b; va_copy(a,b); ],[ have_va_copy="va_copy" ],[ AC_TRY_LINK([ #include ],[ va_list a,b; __va_copy(a,b); ],[ have_va_copy="__va_copy" AC_DEFINE([va_copy],[__va_copy],[__va_copy() was the originally proposed name]) ]) ]) dnl AC_MSG_CHECKING([for va_copy() or replacement]) AC_MSG_RESULT([$have_va_copy]) dnl if test "x$have_va_copy" != "xno"; then AC_DEFINE([HAVE_VA_COPY],1,[Whether we have the va_copy() function]) fi ])dnl dnl dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/gphoto-m4/gp-manual-pstoimg.m40000644000175000001440000000210612610415620016132 00000000000000dnl --------------------------------------------------------------------------- dnl pstoimg: This program is needed for processing images. If not found, dnl documentation can still be built, but without figures. dnl --------------------------------------------------------------------------- AC_DEFUN([GP_CHECK_PSTOIMG], [ AC_REQUIRE([GP_CHECK_DOT])dnl for creating tesseract.ps try_pstoimg=true have_pstoimg=false AC_ARG_WITH(pstoimg, AS_HELP_STRING([--without-pstoimg], [Do not use pstoimg]),[ if test "x$withval" = "xno"; then try_pstoimg=false fi]) if $try_pstoimg; then AC_PATH_PROG(PSTOIMG,pstoimg) if test -n "${PSTOIMG}"; then have_pstoimg=true fi fi if $have_pstoimg; then AC_SUBST(PSTOIMG) AC_MSG_CHECKING([whether ${PSTOIMG} works]) rm -f tesseract.png ${PSTOIMG} -type png -scale 1.2 -antialias -crop a tesseract.ps > /dev/null if test $? != 0 || test ! -f tesseract.png; then have_pstoimg=false AC_MSG_RESULT(no) else AC_MSG_RESULT(yes) fi rm -f tesseract.png fi AM_CONDITIONAL(ENABLE_PSTOIMG, $have_pstoimg) ]) libgphoto2-2.5.9/gphoto-m4/README.m40000644000175000001440000000035312610415617013536 00000000000000This is the gPhoto projects' collection of autoconf/automake m4 macros. It has been designed to be used in - gphoto2 - libgphoto2 - libgphoto2_port (located in libgphoto2/) - gtkam Some macros are re-used ones from libexif. libgphoto2-2.5.9/gphoto-m4/Makefile.in0000644000175000001440000003710212623156012014401 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = gphoto-m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ EXTRA_DIST = gp-byteorder.m4 gp-camlibs.m4 gp-check-doxygen.m4 gp-check-library.m4 gp-check-popt.m4 gp-check-shell-environment.m4 gp-config-msg.m4 gp-documentation.m4 gp-dynamic-libraries.m4 gp-gettext-hack.m4 gp-internal-docs.m4 gp-libltdl.m4 gp-manual-docbook-xml.m4 gp-manual-documentation.m4 gp-manual-fig2dev.m4 gp-manual-graphviz.m4 gp-manual-gtk-doc.m4 gp-manual-pstoimg.m4 gp-manual-w3m.m4 gp-packaging.m4 gp-pkg-config.m4 gp-references.m4 gp-stdint.m4 gp-udev.m4 gp-va-copy.m4 README.m4 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign gphoto-m4/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign gphoto-m4/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info 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-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 \ tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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. .NOEXPORT: libgphoto2-2.5.9/gphoto-m4/gp-stdint.m40000644000175000001440000005700212610415620014507 00000000000000dnl AC_NEED_STDINT_H ( HEADER-TO-GENERATE ) dnl Originally written 2001 by Dan Fandrich dnl My contribution is hereby placed into the public domain. dnl No warranty is expressed or implied. dnl dnl Look for a header file that defines size-specific integer types like the dnl ones recommended to be in stdint.h in the C99 standard (e.g. uint32_t). dnl This is a dumbed-down version of the macro of the same name in the file dnl ac_need_stdint_h.m4 which is part of the ac-archive, available at dnl (also, another macro dnl AC_CREATE_STDINT_H by the same author). This version is not as smart, dnl but works on older autoconf versions and has a different license. dnl AX_CHECK_DEFINED_TYPE ( TYPE, FILE, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND ) dnl This is similar to _AC_CHECK_TYPE_NEW (a.k.a. new syntax version of dnl AC_CHECK_TYPE) in autoconf 2.50 but works on older versions AC_DEFUN([AX_CHECK_DEFINED_TYPE], [AC_MSG_CHECKING([for $1 in $2]) AC_EGREP_CPP(changequote(<<,>>)dnl <<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl changequote([,]), [#include <$2>], ac_cv_type_$1=yes, ac_cv_type_$1=no)dnl AC_MSG_RESULT($ac_cv_type_$1) if test $ac_cv_type_$1 = yes; then $3 else $4 fi ]) dnl Look for a header file that defines size-specific integer types AC_DEFUN([AX_NEED_STDINT_H], [ ac_dir=`AS_DIRNAME(["$1"])` if test "$ac_dir" != "$1" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && AS_MKDIR_P(["$ac_dir"]) fi AX_CHECK_DEFINED_TYPE(uint8_t, stdint.h, [ cat > "$1" < EOF], [AX_CHECK_DEFINED_TYPE(uint8_t, inttypes.h, [cat > "$1" < EOF], [AX_CHECK_DEFINED_TYPE(uint8_t, sys/types.h, [cat > "$1" < EOF], [AX_CHECK_DEFINED_TYPE(u_int8_t, sys/types.h, [cat > "$1" < typedef u_int8_t uint8_t; typedef u_int16_t uint16_t; typedef u_int32_t uint32_t; EOF AX_CHECK_DEFINED_TYPE(u_int64_t, sys/types.h, [cat >> "$1" <> "$1" <]) AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>]) m4_ifvaln([$1],[$1]) break done AC_MSG_CHECKING([for stdint uintptr_t]) ]) ]) AC_DEFUN([AX_CHECK_HEADER_STDINT_O],[ AC_CACHE_CHECK([for stdint uint32_t], [ac_cv_header_stdint_o],[ ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h) AC_MSG_RESULT([(..)]) for i in m4_ifval([$1],[$1],[inttypes.h sys/inttypes.h stdint.h]) ; do unset ac_cv_type_uint32_t unset ac_cv_type_uint64_t AC_CHECK_TYPE(uint32_t,[ac_cv_header_stdint_o=$i],continue,[#include <$i>]) AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>]) m4_ifvaln([$1],[$1]) break break; done AC_MSG_CHECKING([for stdint uint32_t]) ]) ]) AC_DEFUN([AX_CHECK_HEADER_STDINT_U],[ AC_CACHE_CHECK([for stdint u_int32_t], [ac_cv_header_stdint_u],[ ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h) AC_MSG_RESULT([(..)]) for i in m4_ifval([$1],[$1],[sys/types.h inttypes.h sys/inttypes.h]) ; 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],continue,[#include <$i>]) AC_CHECK_TYPE(u_int64_t,[and64="/u_int64_t"],[and64=""],[#include<$i>]) m4_ifvaln([$1],[$1]) break break; done AC_MSG_CHECKING([for stdint u_int32_t]) ]) ]) AC_DEFUN([AX_CREATE_STDINT_H], [# ------ AX CREATE STDINT H ------------------------------------- AC_MSG_CHECKING([for stdint types]) ac_stdint_h=`echo ifelse($1, , _stdint.h, $1)` # try to shortcircuit - if the default include path of the compiler # can find a "stdint.h" header then we assume that all compilers can. AC_CACHE_VAL([ac_cv_header_stdint_t],[ old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS="" old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS="" old_CFLAGS="$CFLAGS" ; CFLAGS="" AC_TRY_COMPILE([#include ],[int_least32_t v = 0;], [ac_cv_stdint_result="(assuming C99 compatible system)" ac_cv_header_stdint_t="stdint.h"; ], [ac_cv_header_stdint_t=""]) CXXFLAGS="$old_CXXFLAGS" CPPFLAGS="$old_CPPFLAGS" CFLAGS="$old_CFLAGS" ]) v="... $ac_cv_header_stdint_h" 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?)]) elif test "_$ac_cv_header_stdint_t" = "_" ; then AC_MSG_RESULT([(putting them into $ac_stdint_h)$v]) else ac_cv_header_stdint="$ac_cv_header_stdint_t" AC_MSG_RESULT([$ac_cv_header_stdint (shortcircuit)]) fi if test "_$ac_cv_header_stdint_t" = "_" ; then # can not shortcircuit.. dnl .....intro message done, now do a few system checks..... dnl btw, all old CHECK_TYPE macros do automatically "DEFINE" a type, dnl therefore we use the autoconf implementation detail CHECK_TYPE_NEW dnl instead that is triggered with 3 or more arguments (see types.m4) inttype_headers=`echo $2 | sed -e 's/,/ /g'` ac_cv_stdint_result="(no helpful system typedefs seen)" AX_CHECK_HEADER_STDINT_X(dnl stdint.h inttypes.h sys/inttypes.h $inttype_headers, ac_cv_stdint_result="(seen uintptr_t$and64 in $i)") if test "_$ac_cv_header_stdint_x" = "_" ; then AX_CHECK_HEADER_STDINT_O(dnl, inttypes.h sys/inttypes.h stdint.h $inttype_headers, ac_cv_stdint_result="(seen uint32_t$and64 in $i)") fi if test "_$ac_cv_header_stdint_x" = "_" ; then if test "_$ac_cv_header_stdint_o" = "_" ; then AX_CHECK_HEADER_STDINT_U(dnl, sys/types.h inttypes.h sys/inttypes.h $inttype_headers, ac_cv_stdint_result="(seen u_int32_t$and64 in $i)") fi fi dnl if there was no good C99 header file, do some typedef checks... if test "_$ac_cv_header_stdint_x" = "_" ; then AC_MSG_CHECKING([for stdint datatype model]) AC_MSG_RESULT([(..)]) AX_CHECK_DATA_MODEL fi if test "_$ac_cv_header_stdint_x" != "_" ; then ac_cv_header_stdint="$ac_cv_header_stdint_x" elif test "_$ac_cv_header_stdint_o" != "_" ; then ac_cv_header_stdint="$ac_cv_header_stdint_o" elif test "_$ac_cv_header_stdint_u" != "_" ; then ac_cv_header_stdint="$ac_cv_header_stdint_u" else ac_cv_header_stdint="stddef.h" fi AC_MSG_CHECKING([for extra inttypes in chosen header]) AC_MSG_RESULT([($ac_cv_header_stdint)]) dnl see if int_least and int_fast types are present in _this_ header. 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>]) AC_CHECK_TYPE(intmax_t,,,[#include <$ac_cv_header_stdint>]) fi # shortcircut to system "stdint.h" # ------------------ PREPARE VARIABLES ------------------------------ if test "$GCC" = "yes" ; then ac_cv_stdint_message="using gnu compiler "`$CC --version | head -1` else ac_cv_stdint_message="using $CC" fi AC_MSG_RESULT([make use of $ac_cv_header_stdint in $ac_stdint_h dnl $ac_cv_stdint_result]) dnl ----------------------------------------------------------------- # ----------------- DONE inttypes.h checks START header ------------- AC_CONFIG_COMMANDS([$ac_stdint_h],[ AC_MSG_NOTICE(creating $ac_stdint_h : $_ac_stdint_h) ac_stdint=$tmp/_stdint.h echo "#ifndef" $_ac_stdint_h >$ac_stdint echo "#define" $_ac_stdint_h "1" >>$ac_stdint echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint echo "/* generated $ac_cv_stdint_message */" >>$ac_stdint if test "_$ac_cv_header_stdint_t" != "_" ; then echo "#define _STDINT_HAVE_STDINT_H" "1" >>$ac_stdint echo "#include " >>$ac_stdint echo "#endif" >>$ac_stdint echo "#endif" >>$ac_stdint else cat >>$ac_stdint < #else #include /* .................... configured part ............................ */ STDINT_EOF echo "/* whether we have a C99 compatible stdint header file */" >>$ac_stdint if test "_$ac_cv_header_stdint_x" != "_" ; then ac_header="$ac_cv_header_stdint_x" echo "#define _STDINT_HEADER_INTPTR" '"'"$ac_header"'"' >>$ac_stdint else echo "/* #undef _STDINT_HEADER_INTPTR */" >>$ac_stdint fi echo "/* whether we have a C96 compatible inttypes header file */" >>$ac_stdint if test "_$ac_cv_header_stdint_o" != "_" ; then ac_header="$ac_cv_header_stdint_o" echo "#define _STDINT_HEADER_UINT32" '"'"$ac_header"'"' >>$ac_stdint else echo "/* #undef _STDINT_HEADER_UINT32 */" >>$ac_stdint fi echo "/* whether we have a BSD compatible inet types header */" >>$ac_stdint if test "_$ac_cv_header_stdint_u" != "_" ; then ac_header="$ac_cv_header_stdint_u" echo "#define _STDINT_HEADER_U_INT32" '"'"$ac_header"'"' >>$ac_stdint else echo "/* #undef _STDINT_HEADER_U_INT32 */" >>$ac_stdint fi echo "" >>$ac_stdint if test "_$ac_header" != "_" ; then if test "$ac_header" != "stddef.h" ; then echo "#include <$ac_header>" >>$ac_stdint echo "" >>$ac_stdint fi fi echo "/* which 64bit typedef has been found */" >>$ac_stdint if test "$ac_cv_type_uint64_t" = "yes" ; then echo "#define _STDINT_HAVE_UINT64_T" "1" >>$ac_stdint else echo "/* #undef _STDINT_HAVE_UINT64_T */" >>$ac_stdint fi if test "$ac_cv_type_u_int64_t" = "yes" ; then echo "#define _STDINT_HAVE_U_INT64_T" "1" >>$ac_stdint else echo "/* #undef _STDINT_HAVE_U_INT64_T */" >>$ac_stdint fi echo "" >>$ac_stdint echo "/* which type model has been detected */" >>$ac_stdint if test "_$ac_cv_char_data_model" != "_" ; then echo "#define _STDINT_CHAR_MODEL" "$ac_cv_char_data_model" >>$ac_stdint echo "#define _STDINT_LONG_MODEL" "$ac_cv_long_data_model" >>$ac_stdint else echo "/* #undef _STDINT_CHAR_MODEL // skipped */" >>$ac_stdint echo "/* #undef _STDINT_LONG_MODEL // skipped */" >>$ac_stdint fi echo "" >>$ac_stdint echo "/* whether int_least types were detected */" >>$ac_stdint if test "$ac_cv_type_int_least32_t" = "yes"; then echo "#define _STDINT_HAVE_INT_LEAST32_T" "1" >>$ac_stdint else echo "/* #undef _STDINT_HAVE_INT_LEAST32_T */" >>$ac_stdint fi echo "/* whether int_fast types were detected */" >>$ac_stdint if test "$ac_cv_type_int_fast32_t" = "yes"; then echo "#define _STDINT_HAVE_INT_FAST32_T" "1" >>$ac_stdint else echo "/* #undef _STDINT_HAVE_INT_FAST32_T */" >>$ac_stdint fi echo "/* whether intmax_t type was detected */" >>$ac_stdint if test "$ac_cv_type_intmax_t" = "yes"; then echo "#define _STDINT_HAVE_INTMAX_T" "1" >>$ac_stdint else echo "/* #undef _STDINT_HAVE_INTMAX_T */" >>$ac_stdint fi echo "" >>$ac_stdint cat >>$ac_stdint <= 199901L #define _HAVE_UINT64_T #define _HAVE_LONGLONG_UINT64_T typedef long long int64_t; typedef unsigned long long uint64_t; #elif !defined __STRICT_ANSI__ #if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__ #define _HAVE_UINT64_T typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__ /* note: all ELF-systems seem to have loff-support which needs 64-bit */ #if !defined _NO_LONGLONG #define _HAVE_UINT64_T #define _HAVE_LONGLONG_UINT64_T typedef long long int64_t; typedef unsigned long long uint64_t; #endif #elif defined __alpha || (defined __mips && defined _ABIN32) #if !defined _NO_LONGLONG typedef long int64_t; typedef unsigned long uint64_t; #endif /* compiler/cpu type to define int64_t */ #endif #endif #endif #if defined _STDINT_HAVE_U_INT_TYPES /* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */ typedef u_int8_t uint8_t; typedef u_int16_t uint16_t; typedef u_int32_t uint32_t; /* glibc compatibility */ #ifndef __int8_t_defined #define __int8_t_defined #endif #endif #ifdef _STDINT_NEED_INT_MODEL_T /* we must guess all the basic types. Apart from byte-adressable system, */ /* there a few 32-bit-only dsp-systems that we guard with BYTE_MODEL 8-} */ /* (btw, those nibble-addressable systems are way off, or so we assume) */ dnl /* have a look at "64bit and data size neutrality" at */ dnl /* http://unix.org/version2/whatsnew/login_64bit.html */ dnl /* (the shorthand "ILP" types always have a "P" part) */ #if defined _STDINT_BYTE_MODEL #if _STDINT_LONG_MODEL+0 == 242 /* 2:4:2 = IP16 = a normal 16-bit system */ typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned long uint32_t; #ifndef __int8_t_defined #define __int8_t_defined typedef char int8_t; typedef short int16_t; typedef long int32_t; #endif #elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL == 444 /* 2:4:4 = LP32 = a 32-bit system derived from a 16-bit */ /* 4:4:4 = ILP32 = a normal 32-bit system */ typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #ifndef __int8_t_defined #define __int8_t_defined typedef char int8_t; typedef short int16_t; typedef int int32_t; #endif #elif _STDINT_LONG_MODEL+0 == 484 || _STDINT_LONG_MODEL+0 == 488 /* 4:8:4 = IP32 = a 32-bit system prepared for 64-bit */ /* 4:8:8 = LP64 = a normal 64-bit system */ typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #ifndef __int8_t_defined #define __int8_t_defined typedef char int8_t; typedef short int16_t; typedef int int32_t; #endif /* this system has a "long" of 64bit */ #ifndef _HAVE_UINT64_T #define _HAVE_UINT64_T typedef unsigned long uint64_t; typedef long int64_t; #endif #elif _STDINT_LONG_MODEL+0 == 448 /* LLP64 a 64-bit system derived from a 32-bit system */ typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #ifndef __int8_t_defined #define __int8_t_defined typedef char int8_t; typedef short int16_t; typedef int int32_t; #endif /* assuming the system has a "long long" */ #ifndef _HAVE_UINT64_T #define _HAVE_UINT64_T #define _HAVE_LONGLONG_UINT64_T typedef unsigned long long uint64_t; typedef long long int64_t; #endif #else #define _STDINT_NO_INT32_T #endif #else #define _STDINT_NO_INT8_T #define _STDINT_NO_INT32_T #endif #endif /* * quote from SunOS-5.8 sys/inttypes.h: * Use at your own risk. As of February 1996, the committee is squarely * behind the fixed sized types; the "least" and "fast" types are still being * discussed. The probability that the "fast" types may be removed before * the standard is finalized is high enough that they are not currently * implemented. */ #if defined _STDINT_NEED_INT_LEAST_T typedef int8_t int_least8_t; typedef int16_t int_least16_t; typedef int32_t int_least32_t; #ifdef _HAVE_UINT64_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_UINT64_T typedef uint64_t uint_least64_t; #endif /* least types */ #endif #if defined _STDINT_NEED_INT_FAST_T typedef int8_t int_fast8_t; typedef int int_fast16_t; typedef int32_t int_fast32_t; #ifdef _HAVE_UINT64_T typedef int64_t int_fast64_t; #endif typedef uint8_t uint_fast8_t; typedef unsigned uint_fast16_t; typedef uint32_t uint_fast32_t; #ifdef _HAVE_UINT64_T typedef uint64_t uint_fast64_t; #endif /* fast types */ #endif #ifdef _STDINT_NEED_INTMAX_T #ifdef _HAVE_UINT64_T typedef int64_t intmax_t; typedef uint64_t uintmax_t; #else typedef long intmax_t; typedef unsigned long uintmax_t; #endif #endif #ifdef _STDINT_NEED_INTPTR_T #ifndef __intptr_t_defined #define __intptr_t_defined /* we encourage using "long" to store pointer values, never use "int" ! */ #if _STDINT_LONG_MODEL+0 == 242 || _STDINT_LONG_MODEL+0 == 484 typedef unsinged int uintptr_t; typedef int intptr_t; #elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL+0 == 444 typedef unsigned long uintptr_t; typedef long intptr_t; #elif _STDINT_LONG_MODEL+0 == 448 && defined _HAVE_UINT64_T typedef uint64_t uintptr_t; typedef int64_t intptr_t; #else /* matches typical system types ILP32 and LP64 - but not IP16 or LLP64 */ typedef unsigned long uintptr_t; typedef long intptr_t; #endif #endif #endif /* The ISO C99 standard specifies that in C++ implementations these should only be defined if explicitly requested. */ #if !defined __cplusplus || defined __STDC_CONSTANT_MACROS #ifndef UINT32_C /* Signed. */ # define INT8_C(c) c # define INT16_C(c) c # define INT32_C(c) c # ifdef _HAVE_LONGLONG_UINT64_T # define INT64_C(c) c ## L # else # define INT64_C(c) c ## LL # endif /* Unsigned. */ # define UINT8_C(c) c ## U # define UINT16_C(c) c ## U # define UINT32_C(c) c ## U # ifdef _HAVE_LONGLONG_UINT64_T # define UINT64_C(c) c ## UL # else # define UINT64_C(c) c ## ULL # endif /* Maximal type. */ # ifdef _HAVE_LONGLONG_UINT64_T # define INTMAX_C(c) c ## L # define UINTMAX_C(c) c ## UL # else # define INTMAX_C(c) c ## LL # define UINTMAX_C(c) c ## ULL # endif /* literalnumbers */ #endif #endif /* These limits are merily those of a two complement byte-oriented system */ /* Minimum of signed integral types. */ # define INT8_MIN (-128) # define INT16_MIN (-32767-1) # define INT32_MIN (-2147483647-1) # define INT64_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum of signed integral types. */ # define INT8_MAX (127) # define INT16_MAX (32767) # define INT32_MAX (2147483647) # define INT64_MAX (__INT64_C(9223372036854775807)) /* Maximum of unsigned integral types. */ # define UINT8_MAX (255) # define UINT16_MAX (65535) # define UINT32_MAX (4294967295U) # define UINT64_MAX (__UINT64_C(18446744073709551615)) /* Minimum of signed integral types having a minimum size. */ # define INT_LEAST8_MIN INT8_MIN # define INT_LEAST16_MIN INT16_MIN # define INT_LEAST32_MIN INT32_MIN # define INT_LEAST64_MIN INT64_MIN /* Maximum of signed integral types having a minimum size. */ # define INT_LEAST8_MAX INT8_MAX # define INT_LEAST16_MAX INT16_MAX # define INT_LEAST32_MAX INT32_MAX # define INT_LEAST64_MAX INT64_MAX /* Maximum of unsigned integral types having a minimum size. */ # define UINT_LEAST8_MAX UINT8_MAX # define UINT_LEAST16_MAX UINT16_MAX # define UINT_LEAST32_MAX UINT32_MAX # define UINT_LEAST64_MAX UINT64_MAX /* shortcircuit*/ #endif /* once */ #endif #endif STDINT_EOF fi if cmp -s $ac_stdint_h $ac_stdint 2>/dev/null; then AC_MSG_NOTICE([$ac_stdint_h is unchanged]) else ac_dir=`AS_DIRNAME(["$ac_stdint_h"])` AS_MKDIR_P(["$ac_dir"]) rm -f $ac_stdint_h mv $ac_stdint $ac_stdint_h fi ],[# variables for create stdint.h replacement PACKAGE="$PACKAGE" VERSION="$VERSION" ac_stdint_h="$ac_stdint_h" _ac_stdint_h=AS_TR_CPP(_$PACKAGE-$ac_stdint_h) ac_cv_stdint_message="$ac_cv_stdint_message" ac_cv_header_stdint_t="$ac_cv_header_stdint_t" ac_cv_header_stdint_x="$ac_cv_header_stdint_x" ac_cv_header_stdint_o="$ac_cv_header_stdint_o" ac_cv_header_stdint_u="$ac_cv_header_stdint_u" ac_cv_type_uint64_t="$ac_cv_type_uint64_t" ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t" ac_cv_char_data_model="$ac_cv_char_data_model" ac_cv_long_data_model="$ac_cv_long_data_model" ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t" ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t" ac_cv_type_intmax_t="$ac_cv_type_intmax_t" ]) ]) libgphoto2-2.5.9/gphoto-m4/gp-manual-w3m.m40000644000175000001440000000214412610415620015160 00000000000000dnl --------------------------------------------------------------------------- dnl w3m: This program is needed for converting HTML to text. dnl --------------------------------------------------------------------------- AC_DEFUN([GP_CHECK_W3M], [ try_w3m=true have_w3m=false AC_ARG_WITH(w3m, [ --without-w3m Don't use w3m],[ if test "x$withval" = "xno"; then try_w3m=false fi]) if $try_w3m; then AC_PATH_PROG(W3M,w3m) if test -n "${W3M}"; then have_w3m=true fi fi if $have_w3m; then AC_MSG_CHECKING([whether ${W3M} works]) cat > html2text-test.xxxhtml 2> /dev/null < <h1>HTML2TEXT Test</h1>

This is a test.

EOF ${W3M} -T text/html -cols 78 -dump html2text-test.xxxhtml > html2text-test.txt if test $? != 0 || test ! -f html2text-test.txt || test ! -s html2text-test.txt then have_w3m=false AC_MSG_RESULT([no (see http://www.w3m.org/ or http://w3m.sourceforge.net/ ...)]) W3M=false AC_SUBST(W3M) else AC_MSG_RESULT([yes]) AC_SUBST(W3M) fi fi AM_CONDITIONAL([HAVE_W3M], [$have_w3m]) ]) libgphoto2-2.5.9/gphoto-m4/Makefile.am0000644000175000001440000000076012610415617014375 00000000000000EXTRA_DIST = gp-byteorder.m4 gp-camlibs.m4 gp-check-doxygen.m4 gp-check-library.m4 gp-check-popt.m4 gp-check-shell-environment.m4 gp-config-msg.m4 gp-documentation.m4 gp-dynamic-libraries.m4 gp-gettext-hack.m4 gp-internal-docs.m4 gp-libltdl.m4 gp-manual-docbook-xml.m4 gp-manual-documentation.m4 gp-manual-fig2dev.m4 gp-manual-graphviz.m4 gp-manual-gtk-doc.m4 gp-manual-pstoimg.m4 gp-manual-w3m.m4 gp-packaging.m4 gp-pkg-config.m4 gp-references.m4 gp-stdint.m4 gp-udev.m4 gp-va-copy.m4 README.m4 libgphoto2-2.5.9/gphoto-m4/gp-references.m40000644000175000001440000000212012615445102015315 00000000000000dnl dnl Define external references dnl dnl Define once, use many times. dnl No more URLs and Mail addresses in translated strings and stuff. dnl AC_DEFUN([GP_REF],[ AC_SUBST([$1],["$2"]) AC_DEFINE_UNQUOTED([$1],["$2"],[$3]) ]) AC_DEFUN([GP_REFERENCES], [ GP_REF( [URL_GPHOTO_HOME], [http://www.gphoto.org/], [gphoto project home page])dnl GP_REF( [URL_GPHOTO_PROJECT], [https://github.com/gphoto], [gphoto sourceforge project page]) GP_REF( [URL_DIGICAM_LIST], [http://www.teaser.fr/~hfiguiere/linux/digicam.html], [camera list with support status]) GP_REF( [URL_JPHOTO_HOME], [http://jphoto.sourceforge.net/], [jphoto home page]) GP_REF( [URL_USB_MASSSTORAGE], [http://www.linux-usb.org/USB-guide/x498.html], [information about using USB mass storage]) GP_REF( [MAIL_GPHOTO_DEVEL], [], [gphoto development mailing list]) GP_REF( [MAIL_GPHOTO_USER], [], [gphoto user mailing list]) GP_REF( [MAIL_GPHOTO_TRANSLATION], [], [gphoto translation mailing list]) ]) libgphoto2-2.5.9/gphoto-m4/gp-manual-graphviz.m40000644000175000001440000000226412610415620016307 00000000000000dnl --------------------------------------------------------------------------- dnl dot: This program is needed for processing images. If not found, dnl documentation can still be built, but without figures. dnl --------------------------------------------------------------------------- AC_DEFUN([GP_CHECK_DOT], [ try_dot=true have_dot=false AC_ARG_WITH(dot, AS_HELP_STRING([--without-dot], [Do not use dot]), [ if test "x$withval" = "xno"; then try_dot=false fi]) if $try_dot; then AC_PATH_PROG(DOT,dot) if test -n "${DOT}"; then have_dot=true fi fi if $have_dot; then AC_SUBST(DOT) AC_MSG_CHECKING([whether ${DOT} works]) ${DOT} -Tps -o tesseract.ps 2> /dev/null </dev/null ; then $1; fi ]) ])dnl libgphoto2-2.5.9/gphoto-m4/gp-camlibs.m40000644000175000001440000001242512610415620014614 00000000000000dnl GP_CAMLIB & Co. dnl dnl Redundancy free definition of libgphoto2 camlibs. dnl dnl Removes the redundany from the camlib lists, and executes dnl additional consistency checks, e.g. to ensure that subdirectories dnl actually exist. dnl dnl You can mark camlibs as unlisted, i.e. they won't be listed dnl explicitly but still be recognized. dnl dnl Example usage: dnl dnl GP_CAMLIB([canon]) dnl GP_CAMLIB([casio]) dnl [...] dnl GP_CAMLIB([ptp],[unlisted]) dnl GP_CAMLIB([ptp2]) dnl [...] dnl GP_CAMLIB([toshiba]) dnl GP_CAMLIBS_DEFINE([camlibs]) dnl dnl The camlibs basedir parameter of GP_CAMLIBS_DEFINE is optional. dnl dnl #################################################################### dnl AC_DEFUN([GP_CAMLIBS_INIT],[dnl AC_BEFORE([$0],[GP_CAMLIB])dnl m4_define_default([gp_camlib_srcdir], [camlibs])dnl m4_define_default([gp_camlibs], [])dnl m4_define_default([gp_camlibs_unlisted], [])dnl ])dnl dnl dnl #################################################################### dnl AC_DEFUN([GP_CAMLIB],[dnl AC_REQUIRE([GP_CAMLIBS_INIT])dnl AC_BEFORE([$0],[GP_CAMLIBS_DEFINE])dnl m4_if([$2],[unlisted],[dnl # $0($1,$2) m4_append([gp_camlibs_unlisted], [$1], [ ])dnl ],[$#],[1],[dnl # $0($1) m4_append([gp_camlibs], [$1], [ ])dnl ],[dnl m4_errprint(__file__:__line__:[ Error: *** Illegal parameter 2 to $0: `$2' *** Valid values are: undefined or [unlisted] ])dnl m4_exit(1)dnl ])dnl ])dnl dnl dnl #################################################################### dnl AC_DEFUN([GP_CAMLIBS_WARNING],[dnl AC_MSG_WARN([ # Caution: You have chosen to build a non-standard set of camlibs. # You may have disabled the camlib required for your camera, or # enabled a camlib that does *not* work, and overrides the camlib # that does work. Consequently, # YOUR CAMERA MAY NOT WORK! # # Many cameras of several brands are supported by a camlib with a # name different from the name of the camera brand or model. If you # are unsure, please # * enable at least the "ptp2" camlib # * or even better, just build "all" camlibs. ]) sleep 2 ]) dnl dnl #################################################################### dnl AC_DEFUN([GP_CAMLIBS_DEFINE],[dnl AC_REQUIRE([GP_CAMLIBS_INIT])dnl m4_pattern_allow([m4_strip])dnl m4_ifval([$1],[m4_define([gp_camlib_srcdir],[$1])])dnl dnl for camlib in m4_strip(gp_camlibs) m4_strip(gp_camlibs_unlisted) dnl do dnl if test -d "$srcdir/m4_strip(gp_camlib_srcdir)/$camlib"; then :; else dnl AC_MSG_ERROR([ dnl * Fatal: dnl * Source subdirectory for camlib \`$camlib' not found in dnl * directory \`$srcdir/m4_strip(gp_camlib_srcdir)/' dnl ]) dnl fi dnl done AC_MSG_CHECKING([which camlibs to compile]) dnl Yes, that help output won't be all that pretty, but we at least dnl do not have to edit it by hand. AC_ARG_WITH([camlibs],[AS_HELP_STRING( [--with-camlibs=], [Compile camera drivers (camlibs) in . ]dnl [Drivers may be separated with commas. ]dnl [CAUTION: DRIVER NAMES AND CAMERA NAMES MAY DIFFER. ]dnl ['all' is the default and compiles all camlibs. ]dnl [Possible camlibs are: ]dnl m4_strip(gp_camlibs))], [camlibs="$withval"], [camlibs="all"])dnl dnl ALL_DEFINED_CAMLIBS="m4_strip(gp_camlibs) m4_strip(gp_camlibs_unlisted)" ALL_DEFAULT_CAMLIBS="m4_strip(gp_camlibs)" BUILD_THESE_CAMLIBS_BASE="" if test "$camlibs" = "all"; then BUILD_THESE_CAMLIBS_BASE="$ALL_DEFAULT_CAMLIBS" AC_MSG_RESULT([all]) else # If the string starts with "all,", we start with the default list # and add the explicitly defined ones later if echo "$camlibs" | grep "^all," > /dev/null; then BUILD_THESE_CAMLIBS_BASE="$ALL_DEFAULT_CAMLIBS" camlibs="$(echo "$camlibs" | sed 's/^all,//')" fi # camlibs=$(echo $camlibs | sed 's/,/ /g') IFS_save="$IFS" IFS=",$IFS" # Walk through enumeration of camlibs given by user and add them to list # of camlibs to build if we know them. for camlib in ${camlibs}; do IFS="$IFS_save" found=false for from_all_camlib in ${ALL_DEFINED_CAMLIBS}; do if test "$camlib" = "$from_all_camlib"; then if test "x$BUILD_THESE_CAMLIBS_BASE" = "x"; then BUILD_THESE_CAMLIBS_BASE="$camlib" else BUILD_THESE_CAMLIBS_BASE="$BUILD_THESE_CAMLIBS_BASE $camlib" fi found=: break fi done if $found; then :; else AC_MSG_ERROR([Unknown camlib $camlib!]) fi done if test "x$BUILD_THESE_CAMLIBS_BASE" = "xcanon" ; then # Gentoo mode... if user just said "canon", add "ptp2" ... should save support requests. BUILD_THESE_CAMLIBS_BASE="$BUILD_THESE_CAMLIBS_BASE ptp2" camlibs="$camlibs ptp2" AC_MSG_WARN([ "You have just selected the old canon driver. However most current Canons\n" "are supported by the PTP2 driver.\n" "Autoselecting ptp2 driver too to avoid support requests.\n" ]) fi IFS="$IFS_save" AC_MSG_RESULT([$camlibs]) GP_CAMLIBS_WARNING AC_DEFINE_UNQUOTED([INCOMPLETE_CAMLIB_SET], ["$BUILD_THESE_CAMLIBS_BASE"], [Whether the set of camlibs built is incomplete]) fi BUILD_THESE_CAMLIBS="" for f in $BUILD_THESE_CAMLIBS_BASE do BUILD_THESE_CAMLIBS="${BUILD_THESE_CAMLIBS}${BUILD_THESE_CAMLIBS+ }${f}.la" done AC_SUBST([BUILD_THESE_CAMLIBS]) AC_SUBST([ALL_DEFINED_CAMLIBS]) AC_SUBST([ALL_DEFAULT_CAMLIBS]) ])dnl dnl dnl #################################################################### dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/gphoto-m4/gp-manual-docbook-xml.m40000644000175000001440000000264412610415620016675 00000000000000dnl ------------------------------------------------------------------------ dnl try to find xmlto (required for generation of man pages and html docs) dnl ------------------------------------------------------------------------ AC_DEFUN([GP_CHECK_DOCBOOK_XML], [ AC_MSG_CHECKING([for XML catalogs]) XML_CATALOG_FILES="`find /etc/xml /usr/share/xml /usr/share/sgml -type f \( -iname 'catalog.xml' -or -iname 'catalog' \) -print 2> /dev/null | while read file; do echo -n "$file "; done`" if test "x$XML_CATALOG_FILES" = "x" then AC_MSG_RESULT([none found.]) else AC_MSG_RESULT([found ${XML_CATALOG_FILES}]) fi AC_SUBST(XML_CATALOG_FILES) #XML_DEBUG_CATALOG=0 #AC_SUBST(XML_DEBUG_CATALOG) manual_msg="no (http://cyberelk.net/tim/xmlto/)" try_xmlto=true have_xmlto=false AC_ARG_WITH(xmlto, [ --without-xmlto Don't use xmlto],[ if test x$withval = xno; then try_xmlto=false fi]) if $try_xmlto; then AC_PATH_PROG(XMLTO,xmlto) if test -n "${XMLTO}"; then have_xmlto=true manual_msg="yes" PURE_XMLTO="$XMLTO" if true || test "x$XML_CATALOG_FILES" = "x"; then unset XML_CATALOG_FILES XMLTO="${XMLTO} -m \$(top_srcdir)/src/xsl/custom.xsl" else XMLTO="env XML_CATALOG_FILES=\"${XML_CATALOG_FILES}\" ${XMLTO} -m ${top_srcdir}/src/xsl/custom.xsl" fi else # in case anybody runs $(XMLTO) somewhere, we return false XMLTO=false fi fi AM_CONDITIONAL(XMLTO, $have_xmlto) ]) libgphoto2-2.5.9/gphoto-m4/gp-internal-docs.m40000644000175000001440000000163212610415620015742 00000000000000dnl dnl dnl AC_DEFUN([GP_INTERNAL_DOCS],[dnl # Whether to enable the internal docs build. # # This takes quite some time due to the generation of lots of call # graphs, so it is disabled by default. set_enable_internal_docs=no AC_ARG_ENABLE([internal-docs], [dnl AS_HELP_STRING([--enable-internal-docs], [Build internal code docs if doxygen available])], [dnl dnl If either --enable-foo nor --disable-foo were given, execute this. if test "x$enableval" = xno \ || test "x$enableval" = xoff \ || test "x$enableval" = xfalse; then set_enable_internal_docs=no elif test "x$enableval" = xyes \ || test "x$enableval" = xon \ || test "x$enableval" = xtrue then set_enable_internal_docs=yes fi ]) AC_MSG_CHECKING([whether to create internal code docs]) AC_MSG_RESULT([${set_enable_internal_docs}]) AM_CONDITIONAL([ENABLE_INTERNAL_DOCS], [test "x${set_enable_internal_docs}" = "xyes"]) ])dnl libgphoto2-2.5.9/gphoto-m4/gp-check-shell-environment.m40000644000175000001440000000220412610415620017720 00000000000000dnl @synopsis GP_CHECK_SHELL_ENVIRONMENT([SHOW-LOCALE-VARS]) dnl dnl Check that the shell environment is sane. dnl dnl If SHOW-LOCALE-VARS is set to [true], print all LC_* and LANG* dnl variables at configure time. (WARNING: This is not portable!) dnl dnl AC_DEFUN([GP_CHECK_SHELL_ENVIRONMENT], [ # make sure "cd" doesn't print anything on stdout if test x"${CDPATH+set}" = xset then CDPATH=: export CDPATH fi # make sure $() command substitution works AC_MSG_CHECKING([for POSIX sh \$() command substitution]) if test "x$(pwd)" = "x`pwd`" && test "y$(echo "foobar")" = "y`echo foobar`" # '''' then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) uname=`uname 2>&1` # '' uname_a=`uname -a 2>&1` # '' AC_MSG_ERROR([ * POSIX sh \$() command substition does not work with this shell. * * You are running a very rare species of shell. Please report this * sighting to <${PACKAGE_BUGREPORT}>: * SHELL=${SHELL} * uname=${uname} * uname-a=${uname_a} * Please also include your OS and version. * * Run this configure script using a better (i.e. POSIX compliant) shell. ]) fi dnl m4_if([$1],[true],[dnl printenv | grep -E '^(LC_|LANG)' ])dnl dnl ])dnl dnl libgphoto2-2.5.9/gphoto-m4/gp-manual-gtk-doc.m40000644000175000001440000000143112610415620016000 00000000000000dnl --------------------------------------------------------------------------- dnl gtk-doc: We use gtk-doc for building our documentation. However, we dnl require the user to explicitely request the build. dnl --------------------------------------------------------------------------- AC_DEFUN([GP_CHECK_GTK_DOC], [ try_gtkdoc=false gtkdoc_msg="no (not requested)" have_gtkdoc=false AC_ARG_ENABLE(docs, [ --enable-docs Use gtk-doc to build documentation [default=no]],[ if test x$enableval = xyes; then try_gtkdoc=true fi]) if $try_gtkdoc; then AC_PATH_PROG(GTKDOC,gtkdoc-mkdb) if test -n "${GTKDOC}"; then have_gtkdoc=true gtkdoc_msg="yes" else gtkdoc_msg="no (http://www.gtk.org/rdp/download.html)" fi fi AM_CONDITIONAL(ENABLE_GTK_DOC, $have_gtkdoc) ]) libgphoto2-2.5.9/gphoto-m4/gp-manual-documentation.m40000644000175000001440000002260712610415620017331 00000000000000dnl dnl check where to install documentation dnl dnl determines documentation "root directory", i.e. the directory dnl where all documentation will be placed in dnl AC_DEFUN([GP_CHECK_DOCDIR], [ AC_ARG_WITH(doc-dir, [ --with-doc-dir=PATH Where to install docs [default=autodetect]])dnl # check for the main ("root") documentation directory AC_MSG_CHECKING([main docdir]) if test "x${with_doc_dir}" != "x" then # docdir is given as parameter docdir="${with_doc_dir}" AC_MSG_RESULT([${docdir} (from parameter)]) else # otherwise invent a docdir hopefully compatible with system policy if test -d "/usr/share/doc" then maindocdir='${prefix}/share/doc' AC_MSG_RESULT([${maindocdir} (FHS style)]) elif test -d "/usr/doc" then maindocdir='${prefix}/doc' AC_MSG_RESULT([${maindocdir} (old style)]) else maindocdir='${datadir}/doc' AC_MSG_RESULT([${maindocdir} (default value)]) fi AC_MSG_CHECKING(package docdir) # check whether to include package version into documentation path # FIXME: doesn't work properly. if ls -d /usr/{share/,}doc/*-[[]0-9[]]* > /dev/null 2>&1 then docdir="${maindocdir}/${PACKAGE}-${VERSION}" AC_MSG_RESULT([${docdir} (redhat style)]) else docdir="${maindocdir}/${PACKAGE}" AC_MSG_RESULT([${docdir} (default style)]) fi fi AC_SUBST(docdir) ])dnl dnl Solaris hack for grep and tr AC_DEFUN([GP_CHECK_TR], [ if test -n "`echo $host_os | grep '[sS]olaris'`"; then TR=/usr/xpg4/bin/tr GREP=/usr/xpg4/bin/grep else TR=tr GREP=grep fi ]) dnl dnl check whether to build docs and where to: dnl dnl * determine presence of prerequisites (only gtk-doc for now) dnl * determine destination directory for HTML files dnl AC_DEFUN([GP_BUILD_DOCS], [ # doc dir has to be determined in advance AC_REQUIRE([GP_CHECK_DOCDIR]) AC_REQUIRE([GP_CHECK_GTK_DOC]) AC_REQUIRE([GP_CHECK_FIG2DEV]) AC_REQUIRE([GP_CHECK_DOCBOOK_XML]) AC_REQUIRE([GP_CHECK_TR]) AC_REQUIRE([GP_CHECK_PSTOIMG]) AC_REQUIRE([GP_CHECK_DOT]) AC_REQUIRE([GP_CHECK_W3M]) gphoto2xml='$(top_srcdir)/src/gphoto2.xml' AC_SUBST(gphoto2xml) dnl --------------------------------------------------------------------------- dnl Give the user the possibility to install documentation in dnl user-defined locations. dnl --------------------------------------------------------------------------- AC_ARG_WITH(html-dir, [ --with-html-dir=PATH Where to install html docs [default=autodetect]]) AC_MSG_CHECKING([for html dir]) if test "x${with_html_dir}" = "x" ; then htmldir="${docdir}/html" AC_MSG_RESULT([${htmldir} (default)]) else htmldir="${with_html_dir}" AC_MSG_RESULT([${htmldir} (from parameter)]) fi AC_SUBST(htmldir) AC_ARG_WITH(xhtml-dir, [ --with-xhtml-dir=PATH Where to install xhtml docs [default=autodetect]]) AC_MSG_CHECKING([for xhtml dir]) if test "x${with_xhtml_dir}" = "x" ; then xhtmldir="${docdir}/xhtml" AC_MSG_RESULT([${xhtmldir} (default)]) else xhtmldir="${with_xhtml_dir}" AC_MSG_RESULT([${xhtmldir} (from parameter)]) fi AC_SUBST(xhtmldir) AC_ARG_WITH(html-nochunks-dir, [ --with-html-nochunks-dir=PATH Where to install html-nochunks docs [default=autodetect]]) AC_MSG_CHECKING([for html-nochunks dir]) if test "x${with_html_nochunks_dir}" = "x" ; then htmlnochunksdir="${docdir}/html-nochunks" AC_MSG_RESULT([${htmlnochunksdir} (default)]) else htmlnochunksdir="${with_html_nochunks_dir}" AC_MSG_RESULT([${htmlnochunksdir} (from parameter)]) fi AC_SUBST(htmlnochunksdir) AC_ARG_WITH(xhtml-nochunks-dir, [ --with-xhtml-nochunks-dir=PATH Where to install xhtml-nochunks docs [default=autodetect]]) AC_MSG_CHECKING([for xhtml-nochunks dir]) if test "x${with_xhtml_nochunks_dir}" = "x" ; then xhtmlnochunksdir="${docdir}/xhtml-nochunks" AC_MSG_RESULT([${xhtmlnochunksdir} (default)]) else xhtmlnochunksdir="${with_xhtml_nochunks_dir}" AC_MSG_RESULT([${xhtmlnochunksdir} (from parameter)]) fi AC_SUBST(xhtmlnochunksdir) AC_ARG_WITH(xml-dir, [ --with-xml-dir=PATH Where to install xml docs [default=autodetect]]) AC_MSG_CHECKING([for xml dir]) if test "x${with_xml_dir}" = "x" ; then xmldir="${docdir}/xml" AC_MSG_RESULT([${xmldir} (default)]) else xmldir="${with_xml_dir}" AC_MSG_RESULT([${xmldir} (from parameter)]) fi AC_SUBST(xmldir) xmlcssdir="${xmldir}/css" AC_SUBST(xmlcssdir) AC_ARG_WITH(txt-dir, [ --with-txt-dir=PATH Where to install txt docs [default=autodetect]]) AC_MSG_CHECKING([for txt dir]) if test "x${with_txt_dir}" = "x" ; then txtdir="${docdir}/txt" AC_MSG_RESULT([${txtdir} (default)]) else txtdir="${with_txt_dir}" AC_MSG_RESULT([${txtdir} (from parameter)]) fi AC_SUBST(txtdir) AC_ARG_WITH(man-dir, [ --with-man-dir=PATH Where to install man docs [default=autodetect]]) AC_MSG_CHECKING([for man dir]) if test "x${with_man_dir}" = "x" ; then manmandir="${docdir}/man" AC_MSG_RESULT([${manmandir} (default)]) else manmandir="${with_man_dir}" AC_MSG_RESULT([${manmandir} (from parameter)]) fi AC_SUBST(manmandir) AC_ARG_WITH(pdf-dir, [ --with-pdf-dir=PATH Where to install pdf docs [default=autodetect]]) AC_MSG_CHECKING([for pdf dir]) if test "x${with_pdf_dir}" = "x" ; then pdfdir="${docdir}/pdf" AC_MSG_RESULT([${pdfdir} (default)]) else pdfdir="${with_pdf_dir}" AC_MSG_RESULT([${pdfdir} (from parameter)]) fi AC_SUBST(pdfdir) AC_ARG_WITH(ps-dir, [ --with-ps-dir=PATH Where to install ps docs [default=autodetect]]) AC_MSG_CHECKING([for ps dir]) if test "x${with_ps_dir}" = "x" ; then psdir="${docdir}/ps" AC_MSG_RESULT([${psdir} (default)]) else psdir="${with_ps_dir}" AC_MSG_RESULT([${psdir} (from parameter)]) fi AC_SUBST(psdir) AC_ARG_WITH(figure-dir, [ --with-figure-dir=PATH Where to install figures [default=autodetect]]) AC_MSG_CHECKING([for figure dir]) if test "x${with_figure_dir}" = "x" ; then figuredir="${docdir}/figures" AC_MSG_RESULT([${figuredir} (default)]) else figuredir="${with_figure_dir}" AC_MSG_RESULT([${figuredir} (from parameter)]) fi AC_SUBST(figuredir) AC_ARG_WITH(screenshots-dir, [ --with-screenshots-dir=PATH Where to install screenshotss [default=autodetect]]) AC_MSG_CHECKING([for screenshots dir]) if test "x${with_screenshots_dir}" = "x" ; then screenshotsdir="${docdir}/screenshots" AC_MSG_RESULT([${screenshotsdir} (default)]) else screenshotsdir="${with_screenshots_dir}" AC_MSG_RESULT([${screenshotsdir} (from parameter)]) fi AC_SUBST(screenshotsdir) screenshotsgtkamdir="${screenshotsdir}/gtkam" AC_SUBST(screenshotsgtkamdir) doc_formats_list='man html txt ps pdf' # initialize have_xmlto* to false for i in $doc_formats_list; do d=`echo $i | $TR A-Z a-z` eval "have_xmlto$d=false" done AC_MSG_CHECKING(checking doc formats) AC_ARG_WITH(doc_formats, [ --with-doc-formats= create doc with format in ; ] [ 'all' build all doc formats; ] [ possible formats are: ] [ man, html, ps, pdf ], doc_formats="$withval", doc_formats="man html txt") if test "$doc_formats" = "all"; then doc_formats=$doc_formats_list else doc_formats=`echo $doc_formats | sed 's/,/ /g'` fi # set have_xmlto* to true if requested and possible if $have_xmlto; then for i in $doc_formats; do if test -n "`echo $doc_formats_list | $GREP -E \"(^| )$i( |\$)\"`"; then eval "have_xmlto$i=true" else AC_ERROR(Unknown doc format $i!) fi done AC_MSG_RESULT($doc_formats) else AC_MSG_RESULT([deactivated (requires xmlto)]) fi # Make sure that xmltopdf actually works if $have_xmltopdf; then AC_MSG_CHECKING([whether pdf creation works]) oldcwd="$(pwd)" top_srcdir() { echo "$srcdir"; } mkdir test-pdf cd test-pdf cat>test-db.xml< Foo Title Foo Chapter Foo bar blah blah . EOF ${PURE_XMLTO} pdf -o . test-db.xml --searchpath .. if test -s test-db.pdf; then AC_MSG_RESULT([yes, look at $(pwd)/test-db.pdf to verify]) else if $have_xmltopdf; then AC_MSG_ERROR([PDF creation requested, but failed. See $(pwd) ...]) else AC_MSG_RESULT([no, but not requested]) fi fi cd "$oldcwd" unset top_srcdir fi AM_CONDITIONAL(XMLTOHTML,$have_xmltohtml) AM_CONDITIONAL(XMLTOMAN,$have_xmltoman) AM_CONDITIONAL(XMLTOTXT,$have_xmltotxt) AM_CONDITIONAL(XMLTOTXT2,$have_xmltotxt && $have_w3m) AM_CONDITIONAL(XMLTOPDF,$have_xmltopdf) AM_CONDITIONAL(XMLTOPS,$have_xmltops) # create list of supported formats AC_MSG_CHECKING([for manual formats to re­create]) xxx="" manual_html="" manual_pdf="" manual_ps="" if $have_xmltohtml; then xxx="${xxx} html" fi if $have_xmltoman; then xxx="${xxx} man" fi if $have_xmltopdf; then xxx="${xxx} pdf" fi if $have_xmltops; then xxx="${xxx} ps" fi if $have_xmltotxt; then xxx="${xxx} txt" fi AC_SUBST(manual_html) AC_SUBST(manual_pdf) AC_SUBST(manual_ps) AC_MSG_RESULT($xxx) if test "x$xxx" != "x" then if $have_fig2dev; then fig_out="" else fig_out="out" fi manual_msg="in (${xxx} ) formats with${fig_out} figures" fi ])dnl libgphoto2-2.5.9/gphoto-m4/gp-manual-fig2dev.m40000644000175000001440000000171112610415620015777 00000000000000dnl --------------------------------------------------------------------------- dnl fig2dev: This program is needed for processing images. If not found, dnl documentation can still be built, but without figures. dnl --------------------------------------------------------------------------- AC_DEFUN([GP_CHECK_FIG2DEV], [ try_fig2dev=true have_fig2dev=false AC_ARG_WITH(fig2dev, [ --without-fig2dev Don't use fig2dev],[ if test "x$withval" = "xno"; then try_fig2dev=false fi]) if $try_fig2dev; then AC_PATH_PROG(FIG2DEV,fig2dev) if test -n "${FIG2DEV}"; then have_fig2dev=true fi fi if $have_fig2dev; then AC_SUBST(FIG2DEV) ${FIG2DEV} -L ps > /dev/null < /dev/null 2>&1 then docdir="${maindocdir}/${PACKAGE}-${VERSION}" AC_MSG_RESULT([${docdir} (redhat style)]) else docdir="${maindocdir}/${PACKAGE}" AC_MSG_RESULT([${docdir} (default style)]) fi fi AC_SUBST([docdir]) ])dnl dnl dnl check whether to build docs and where to: dnl dnl * determine presence of prerequisites (only gtk-doc for now) dnl * determine destination directory for HTML files dnl AC_DEFUN([GP_BUILD_GTK_DOCS], [ # docdir has to be determined in advance AC_REQUIRE([GP_CHECK_DOC_DIR]) # --------------------------------------------------------------------------- # gtk-doc: We use gtk-doc for building our documentation. However, we # require the user to explicitely request the build. # --------------------------------------------------------------------------- try_gtkdoc=false gtkdoc_msg="no (not requested)" have_gtkdoc=false AC_ARG_ENABLE([docs], [AS_HELP_STRING([--enable-docs], [Use gtk-doc to build documentation [default=no]])],[ if test x$enableval = xyes; then try_gtkdoc=true fi ]) if $try_gtkdoc; then AC_PATH_PROG([GTKDOC],[gtkdoc-mkdb]) if test -n "${GTKDOC}"; then have_gtkdoc=true gtkdoc_msg="yes" else gtkdoc_msg="no (http://www.gtk.org/rdp/download.html)" fi fi AM_CONDITIONAL([ENABLE_GTK_DOC], [$have_gtkdoc]) GP_CONFIG_MSG([build API docs with gtk-doc],[$gtkdoc_msg]) # --------------------------------------------------------------------------- # Give the user the possibility to install html documentation in a # user-defined location. # --------------------------------------------------------------------------- AC_ARG_WITH([html-dir], [AS_HELP_STRING([--with-html-dir=PATH], [Where to install html docs [default=autodetect]])]) AC_MSG_CHECKING([for html dir]) if test "x${with_html_dir}" = "x" ; then htmldir="${docdir}/html" AC_MSG_RESULT([${htmldir} (default)]) else htmldir="${with_html_dir}" AC_MSG_RESULT([${htmldir} (from parameter)]) fi AC_SUBST([htmldir]) apidocdir="${htmldir}/api" AC_SUBST([apidocdir]) ])dnl libgphoto2-2.5.9/gphoto-m4/gp-byteorder.m40000644000175000001440000003144112610415620015200 00000000000000dnl AC_NEED_BYTEORDER_H ( HEADER-TO-GENERATE ) dnl Originally written by Dan Fandrich dnl My contribution is hereby placed into the public domain. dnl No warranty is expressed or implied. dnl dnl Create a header file that guarantees that byte swapping macros of the dnl ntohl variety as well as the extended types included in OpenBSD and dnl NetBSD such as le32toh are defined. If possible, the standard ntohl dnl are overloaded as they are optimized for the given platform, but when dnl this is not possible (e.g. on a big-endian machine) they are defined dnl in this file. dnl Look for a symbol in a header file dnl AC_HAVE_SYMBOL ( IDENTIFIER, HEADER-FILE, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND ) AC_DEFUN([AC_HAVE_SYMBOL], [ AC_MSG_CHECKING(for $1 in $2) AC_EGREP_CPP([symbol is present|\<$1\>],[ #include <$2> #ifdef $1 symbol is present #endif ], [AC_MSG_RESULT(yes) $3 ], [AC_MSG_RESULT(no) $4 ])]) dnl Create a header file that defines extended byte swapping macros AC_DEFUN([AC_NEED_BYTEORDER_H], [ ac_dir=`AS_DIRNAME(["$1"])` if test "$ac_dir" != "$1" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && AS_MKDIR_P(["$ac_dir"]) fi # We're only interested in the target CPU, but it's not always set effective_target="$target" if test "x$effective_target" = xNONE -o "x$effective_target" = x ; then effective_target="$host" fi AC_SUBST(effective_target) cat > "$1" << EOF /* This file is generated automatically by configure */ /* It is valid only for the system type ${effective_target} */ #ifndef __BYTEORDER_H #define __BYTEORDER_H EOF dnl First, do an endian check AC_C_BIGENDIAN dnl Look for NetBSD-style extended byte swapping macros AC_HAVE_SYMBOL(le32toh,machine/endian.h, [HAVE_LE32TOH=1 cat >> "$1" << EOF /* extended byte swapping macros are already available */ #include EOF], [ dnl Look for standard byte swapping macros AC_HAVE_SYMBOL(ntohl,arpa/inet.h, [cat >> "$1" << EOF /* ntohl and relatives live here */ #include #define __HAVE_NTOHL EOF], [AC_HAVE_SYMBOL(ntohl,netinet/in.h, [cat >> "$1" << EOF /* ntohl and relatives live here */ #include #define __HAVE_NTOHL EOF],true)]) ]) dnl Look for generic byte swapping macros dnl OpenBSD AC_HAVE_SYMBOL(swap32,machine/endian.h, [cat >> "$1" << EOF /* swap32 and swap16 are defined in machine/endian.h */ EOF], [ dnl Linux GLIBC AC_HAVE_SYMBOL(bswap_32,byteswap.h, [cat >> "$1" << EOF /* Define generic byte swapping functions */ #include #define swap16(x) bswap_16(x) #define swap32(x) bswap_32(x) #define swap64(x) bswap_64(x) EOF], [ dnl NetBSD AC_HAVE_SYMBOL(bswap32,machine/endian.h, dnl We're already including machine/endian.h if this test succeeds [cat >> "$1" << EOF /* Define generic byte swapping functions */ EOF if test "$HAVE_LE32TOH" != "1"; then echo '#include '>> "$1" fi cat >> "$1" << EOF #define swap16(x) bswap16(x) #define swap32(x) bswap32(x) #define swap64(x) bswap64(x) EOF], [ dnl FreeBSD AC_HAVE_SYMBOL(__byte_swap_long,sys/types.h, [cat >> "$1" << EOF /* Define generic byte swapping functions */ #include #define swap16(x) __byte_swap_word(x) #define swap32(x) __byte_swap_long(x) /* No optimized 64 bit byte swapping macro is available */ #define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\ ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\ ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\ ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\ ((x) >> 8) & 0x00000000ff000000ULL | \\ ((x) >> 24) & 0x0000000000ff0000ULL | \\ ((x) >> 40) & 0x000000000000ff00ULL | \\ ((x) >> 56) & 0x00000000000000ffULL)) EOF], [ dnl OS X AC_HAVE_SYMBOL(NXSwapLong,machine/byte_order.h, [cat >> "$1" << EOF /* Define generic byte swapping functions */ #include #define swap16(x) NXSwapShort(x) #define swap32(x) NXSwapLong(x) #define swap64(x) NXSwapLongLong(x) EOF], [ if test $ac_cv_c_bigendian = yes; then cat >> "$1" << EOF /* No other byte swapping functions are available on this big-endian system */ #define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8))) #define swap32(x) ((uint32_t)(((uint32_t)(x) << 24) & 0xff000000UL | \\ ((uint32_t)(x) << 8) & 0x00ff0000UL | \\ ((x) >> 8) & 0x0000ff00UL | \\ ((x) >> 24) & 0x000000ffUL)) #define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\ ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\ ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\ ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\ ((x) >> 8) & 0x00000000ff000000ULL | \\ ((x) >> 24) & 0x0000000000ff0000ULL | \\ ((x) >> 40) & 0x000000000000ff00ULL | \\ ((x) >> 56) & 0x00000000000000ffULL)) EOF else cat >> "$1" << EOF /* Use these as generic byteswapping macros on this little endian system */ /* on windows we might not have ntohs / ntohl without including winsock.dll, * so use generic macros */ #ifdef __HAVE_NTOHL # define swap16(x) htons(x) # define swap32(x) htonl(x) #else # define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8))) # define swap32(x) ((uint32_t)((((uint32_t)(x) << 24) & 0xff000000UL) | \\ (((uint32_t)(x) << 8) & 0x00ff0000UL) | \\ (((x) >> 8) & 0x0000ff00UL) | \\ (((x) >> 24) & 0x000000ffUL))) #endif /* No optimized 64 bit byte swapping macro is available */ #define swap64(x) ((uint64_t)((((uint64_t)(x) << 56) & 0xff00000000000000ULL) | \\ (((uint64_t)(x) << 40) & 0x00ff000000000000ULL) | \\ (((uint64_t)(x) << 24) & 0x0000ff0000000000ULL) | \\ (((uint64_t)(x) << 8) & 0x000000ff00000000ULL) | \\ (((x) >> 8) & 0x00000000ff000000ULL) | \\ (((x) >> 24) & 0x0000000000ff0000ULL) | \\ (((x) >> 40) & 0x000000000000ff00ULL) | \\ (((x) >> 56) & 0x00000000000000ffULL))) EOF fi ]) ]) ]) ]) ]) [ if test "$HAVE_LE32TOH" != "1"; then cat >> "$1" << EOF /* The byte swapping macros have the form: */ /* EENN[a]toh or htoEENN[a] where EE is be (big endian) or */ /* le (little-endian), NN is 16 or 32 (number of bits) and a, */ /* if present, indicates that the endian side is a pointer to an */ /* array of uint8_t bytes instead of an integer of the specified length. */ /* h refers to the host's ordering method. */ /* So, to convert a 32-bit integer stored in a buffer in little-endian */ /* format into a uint32_t usable on this machine, you could use: */ /* uint32_t value = le32atoh(&buf[3]); */ /* To put that value back into the buffer, you could use: */ /* htole32a(&buf[3], value); */ /* Define aliases for the standard byte swapping macros */ /* Arguments to these macros must be properly aligned on natural word */ /* boundaries in order to work properly on all architectures */ #ifndef htobe16 # ifdef __HAVE_NTOHL # define htobe16(x) htons(x) # else # ifdef WORDS_BIGENDIAN # define htobe16(x) (x) # else # define htobe16(x) swap16(x) # endif # endif #endif #ifndef htobe32 # ifdef __HAVE_NTOHL # define htobe32(x) htonl(x) # else # ifdef WORDS_BIGENDIAN # define htobe32(x) (x) # else # define htobe32(x) swap32(x) # endif # endif #endif #ifndef be16toh # define be16toh(x) htobe16(x) #endif #ifndef be32toh # define be32toh(x) htobe32(x) #endif #define HTOBE16(x) (x) = htobe16(x) #define HTOBE32(x) (x) = htobe32(x) #define BE32TOH(x) (x) = be32toh(x) #define BE16TOH(x) (x) = be16toh(x) EOF if test $ac_cv_c_bigendian = yes; then cat >> "$1" << EOF /* Define our own extended byte swapping macros for big-endian machines */ #ifndef htole16 # define htole16(x) swap16(x) #endif #ifndef htole32 # define htole32(x) swap32(x) #endif #ifndef le16toh # define le16toh(x) swap16(x) #endif #ifndef le32toh # define le32toh(x) swap32(x) #endif #ifndef le64toh # define le64toh(x) swap64(x) #endif #ifndef htobe64 # define htobe64(x) (x) #endif #ifndef be64toh # define be64toh(x) (x) #endif #define HTOLE16(x) (x) = htole16(x) #define HTOLE32(x) (x) = htole32(x) #define LE16TOH(x) (x) = le16toh(x) #define LE32TOH(x) (x) = le32toh(x) #define LE64TOH(x) (x) = le64toh(x) #define HTOBE64(x) (void) (x) #define BE64TOH(x) (void) (x) EOF else cat >> "$1" << EOF /* On little endian machines, these macros are null */ #ifndef htole16 # define htole16(x) (x) #endif #ifndef htole32 # define htole32(x) (x) #endif #ifndef htole64 # define htole64(x) (x) #endif #ifndef le16toh # define le16toh(x) (x) #endif #ifndef le32toh # define le32toh(x) (x) #endif #ifndef le64toh # define le64toh(x) (x) #endif #define HTOLE16(x) (void) (x) #define HTOLE32(x) (void) (x) #define HTOLE64(x) (void) (x) #define LE16TOH(x) (void) (x) #define LE32TOH(x) (void) (x) #define LE64TOH(x) (void) (x) /* These don't have standard aliases */ #ifndef htobe64 # define htobe64(x) swap64(x) #endif #ifndef be64toh # define be64toh(x) swap64(x) #endif #define HTOBE64(x) (x) = htobe64(x) #define BE64TOH(x) (x) = be64toh(x) EOF fi fi cat >> "$1" << EOF /* Define the C99 standard length-specific integer types */ #include <_stdint.h> EOF case "${effective_target}" in i[3456]86-*) cat >> "$1" << EOF /* Here are some macros to create integers from a byte array */ /* These are used to get and put integers from/into a uint8_t array */ /* with a specific endianness. This is the most portable way to generate */ /* and read messages to a network or serial device. Each member of a */ /* packet structure must be handled separately. */ /* The i386 and compatibles can handle unaligned memory access, */ /* so use the optimized macros above to do this job */ #ifndef be16atoh # define be16atoh(x) be16toh(*(uint16_t*)(x)) #endif #ifndef be32atoh # define be32atoh(x) be32toh(*(uint32_t*)(x)) #endif #ifndef be64atoh # define be64atoh(x) be64toh(*(uint64_t*)(x)) #endif #ifndef le16atoh # define le16atoh(x) le16toh(*(uint16_t*)(x)) #endif #ifndef le32atoh # define le32atoh(x) le32toh(*(uint32_t*)(x)) #endif #ifndef le64atoh # define le64atoh(x) le64toh(*(uint64_t*)(x)) #endif #ifndef htob16a # define htobe16a(a,x) *(uint16_t*)(a) = htobe16(x) #endif #ifndef htobe32a # define htobe32a(a,x) *(uint32_t*)(a) = htobe32(x) #endif #ifndef htobe64a # define htobe64a(a,x) *(uint64_t*)(a) = htobe64(x) #endif #ifndef htole16a # define htole16a(a,x) *(uint16_t*)(a) = htole16(x) #endif #ifndef htole32a # define htole32a(a,x) *(uint32_t*)(a) = htole32(x) #endif #ifndef htole64a # define htole64a(a,x) *(uint64_t*)(a) = htole64(x) #endif EOF ;; *) cat >> "$1" << EOF /* Here are some macros to create integers from a byte array */ /* These are used to get and put integers from/into a uint8_t array */ /* with a specific endianness. This is the most portable way to generate */ /* and read messages to a network or serial device. Each member of a */ /* packet structure must be handled separately. */ /* Non-optimized but portable macros */ #define be16atoh(x) ((uint16_t)(((x)[0]<<8)|(x)[1])) #define be32atoh(x) ((uint32_t)(((x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3])) #define be64atoh_x(x,off,shift) (((uint64_t)((x)[off]))<>8), (a)[1]=(uint8_t)(x) #define htobe32a(a,x) (a)[0]=(uint8_t)((x)>>24), (a)[1]=(uint8_t)((x)>>16), \\ (a)[2]=(uint8_t)((x)>>8), (a)[3]=(uint8_t)(x) #define htobe64a(a,x) (a)[0]=(uint8_t)((x)>>56), (a)[1]=(uint8_t)((x)>>48), \\ (a)[2]=(uint8_t)((x)>>40), (a)[3]=(uint8_t)((x)>>32), \\ (a)[4]=(uint8_t)((x)>>24), (a)[5]=(uint8_t)((x)>>16), \\ (a)[6]=(uint8_t)((x)>>8), (a)[7]=(uint8_t)(x) #define htole16a(a,x) (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) #define htole32a(a,x) (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\ (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) #define htole64a(a,x) (a)[7]=(uint8_t)((x)>>56), (a)[6]=(uint8_t)((x)>>48), \\ (a)[5]=(uint8_t)((x)>>40), (a)[4]=(uint8_t)((x)>>32), \\ (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\ (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) EOF ;; esac ] cat >> "$1" << EOF #endif /*__BYTEORDER_H*/ EOF]) libgphoto2-2.5.9/gphoto-m4/gp-config-msg.m40000644000175000001440000000523412610415620015233 00000000000000dnl dnl GP_CONFIG_INIT dnl use default LHS width (called implicitly if not called explicitly) dnl GP_CONFIG_INIT([WIDTH-OF-LHS]) dnl explicitly set the LHS width to the given value dnl dnl GP_CONFIG_MSG dnl empty output line dnl GP_CONFIG_MSG([LHS],[RHS]) dnl formatted output line "LHS: RHS" dnl dnl GP_CONFIG_OUTPUT dnl print all the output messages we collected in the mean time dnl dnl Simple way to print a configuration summary at the end of ./configure. dnl dnl Example usage: dnl dnl GP_CONFIG_INIT dnl GP_CONFIG_MSG([Source code location],[${srcdir}]) dnl GP_CONFIG_MSG([Compiler],[${CC}]) dnl GP_CONFIG_MSG dnl GP_CONFIG_MSG([Feature foo],[${foo}]) dnl GP_CONFIG_MSG([Location of bar],[${bar}]) dnl [...] dnl AC_OUTPUT dnl GP_CONFIG_OUTPUT dnl dnl AC_DEFUN([GP_CONFIG_INIT], [dnl AC_REQUIRE([GP_CHECK_SHELL_ENVIRONMENT]) dnl the empty string must contain at least as many spaces as the substr length dnl FIXME: let m4 determine that length dnl (collect left parts in array and choose largest length) m4_if([$1],[],[gp_config_len="30"],[gp_config_len="$1"]) gp_config_empty="" gp_config_len3="$(expr "$gp_config_len" - 3)" n="$gp_config_len" while test "$n" -gt 0; do gp_config_empty="${gp_config_empty} " n="$(expr "$n" - 1)" done gp_config_msg=" Configuration (${PACKAGE_TARNAME} ${PACKAGE_VERSION}): " ])dnl dnl dnl AC_DEFUN([GP_CONFIG_MSG], [AC_REQUIRE([GP_CONFIG_INIT])dnl m4_if([$1],[],[ gp_config_msg="${gp_config_msg} " ],[$2],[],[ gp_config_msg="${gp_config_msg} [$1] " ],[ gp_config_msg_len="$(expr "[$1]" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "[$1]" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "[$1]:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} [$2] " ])])dnl dnl AC_DEFUN([GP_CONFIG_MSG_SUBDIRS],[dnl # Message about configured subprojects if test "x$subdirs" != "x"; then GP_CONFIG_MSG()dnl _subdirs="" for sd in $subdirs; do ssd="$(basename "$sd")" if test "x$_subdirs" = "x"; then _subdirs="$ssd"; else _subdirs="$_subdirs $ssd" fi done GP_CONFIG_MSG([Subprojects],[${_subdirs}])dnl fi ])dnl dnl AC_DEFUN([GP_CONFIG_OUTPUT], [AC_REQUIRE([GP_CONFIG_INIT])dnl AC_REQUIRE([GP_CONFIG_MSG])dnl AC_REQUIRE([GP_CONFIG_MSG_SUBDIRS])dnl echo "${gp_config_msg} You may run \"make\" and \"make install\" now." ])dnl dnl dnl Please do not remove this: dnl filetype: de774af3-dc3b-4b1d-b6f2-4aca35d3da16 dnl I use this to find all the different instances of this file which dnl are supposed to be synchronized. dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/gphoto-m4/gp-gettext-hack.m40000644000175000001440000000466412610415620015600 00000000000000dnl dnl GP_GETTEXT_HACK dnl dnl gettext hack, originally designed for libexif, libgphoto2, and Co. dnl This creates a po/Makevars file with adequate values if the dnl po/Makevars.template is present. dnl dnl Example usage: dnl GP_GETTEXT_HACK([${PACKAGE_TARNAME}-${LIBFOO_CURRENT}], dnl [Copyright Holder], dnl [foo-translation@example.org]) dnl ALL_LINGUAS="de es fr" dnl AM_GNU_GETTEXT_VERSION([0.14.1]) dnl AM_GNU_GETTEXT([external]) dnl AM_PO_SUBDIRS() dnl AM_ICONV() dnl GP_GETTEXT_FLAGS dnl dnl You can leave out the GP_GETTEXT_HACK parameters if you want to, dnl GP_GETTEXT_HACK will try fall back to sensible values in that case: dnl AC_DEFUN([GP_GETTEXT_HACK], [ AC_BEFORE([$0], [AM_GNU_GETTEXT])dnl AC_BEFORE([$0], [AM_GNU_GETTEXT_VERSION])dnl m4_if([$1],[],[GETTEXT_PACKAGE="${PACKAGE_TARNAME}"],[GETTEXT_PACKAGE="$1"]) AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [The gettext domain we're using]) AC_SUBST([GETTEXT_PACKAGE]) sed_cmds="s|^DOMAIN.*|DOMAIN = ${GETTEXT_PACKAGE}|" m4_if([$2],[],[],[sed_cmds="${sed_cmds};s|^COPYRIGHT_HOLDER.*|COPYRIGHT_HOLDER = $2|"]) m4_ifval([$3],[ if test -n "$PACKAGE_BUGREPORT"; then sed_mb="${PACKAGE_BUGREPORT}" else AC_MSG_ERROR([ *** Your configure.{ac,in} is wrong. *** Either define PACKAGE_BUGREPORT (by using the 4-parameter AC INIT syntax) *** or give [GP_GETTEXT_HACK] the third parameter. *** ]) fi ],[ sed_mb="$3" ]) sed_cmds="${sed_cmds};s|^MSGID_BUGS_ADDRESS.*|MSGID_BUGS_ADDRESS = ${sed_mb}|" # Not so sure whether this hack is all *that* evil... AC_MSG_CHECKING([for po/Makevars requiring hack]) if test -f "${srcdir}/po/Makevars.template"; then sed "$sed_cmds" < "${srcdir}/po/Makevars.template" > "${srcdir}/po/Makevars" AC_MSG_RESULT([yes, done.]) else AC_MSG_RESULT([no]) fi ]) AC_DEFUN([GP_GETTEXT_FLAGS], [ AC_REQUIRE([AM_GNU_GETTEXT]) AC_REQUIRE([GP_CONFIG_INIT]) if test "x${BUILD_INCLUDED_LIBINTL}" = "xyes"; then AM_CFLAGS="${AM_CFLAGS} -I\$(top_srcdir)/intl" fi GP_CONFIG_MSG([Use translations],[${USE_NLS}]) if test "x$USE_NLS" = "xyes" && test "${BUILD_INCLUDED_LIBINTL}"; then GP_CONFIG_MSG([Use included libintl],[${BUILD_INCLUDED_LIBINTL}]) fi ]) dnl Please do not remove this: dnl filetype: 71ff3941-a5ae-4677-a369-d7cb01f92c81 dnl I use this to find all the different instances of this file which dnl are supposed to be synchronized. dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/gphoto-m4/gp-check-library.m40000644000175000001440000003775312610415620015734 00000000000000dnl @synopsis GP_CHECK_LIBRARY([VARNAMEPART],[libname],[VERSION-REQUIREMENT], dnl [headername],[functionname], dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], dnl [OPTIONAL-REQUIRED-ETC],[WHERE-TO-GET-IT]) dnl dnl Checks for the presence of a certain library. dnl dnl Parameters: dnl dnl VARNAMEPART partial variable name for variable definitions dnl libname name of library dnl VERSION-REQUIREMENT check for the version using pkg-config. dnl default: [] dnl headername name of header file dnl default: [] dnl functionname name of function name in library dnl default: [] dnl ACTION-IF-FOUND shell action to execute if found dnl default: [] dnl ACTION-IF-NOT-FOUND shell action to execute if not found dnl default: [] dnl OPTIONAL-REQUIRED-ETC one of "mandatory", "default-on", "default-off" dnl "disable-explicitly" dnl default: [mandatory] dnl WHERE-TO-GET-IT place where to find the library, e.g. a URL dnl default: [] dnl dnl What the ACTION-IFs can do: dnl dnl * change the variable have_[$1] to "yes" or "no" and thus change dnl the outcome of the test dnl * execute additional checks to define more specific variables, e.g. dnl for different API versions dnl dnl What the OPTIONAL-REQUIRED-ETC options mean: dnl dnl mandatory Absolute requirement, cannot be disabled. dnl default-on If found, it is used. If not found, it is not used. dnl default-off In case of --with-libfoo, detect it. Without dnl --with-libfoo, do not look for and use it. dnl disable-explicitly Required by default, but can be disabled by dnl explicitly giving --without-libfoo. dnl dnl These results have happened after calling GP_CHECK_LIBRARY: dnl dnl AM_CONDITIONAL([HAVE_VARPREFIX],[ if found ]) dnl AM_SUBST([have_VARPREFIX], [ "yes" if found, "no" if not found ]) dnl AM_SUBST([VARPREFIX_CFLAGS],[ -I, -D and stuff ]) dnl AM_SUBST([VARPREFIX_LIBS], [ /path/to/libname.la -L/path -lfoo ]) dnl dnl Parameters to ./configure which influence the GP_CHECK_LIBRARY results: dnl dnl * VARNAMEPART_LIBS=/foobar/arm-palmos/lib/libname.la dnl VARNAMEPART_CFLAGS=-I/foobar/include dnl * --without-libfoo dnl * --with-libfoo=/usr/local dnl * --with-libfoo-include-dir=/foobar/include dnl * --with-libfoo-lib=/foobar/arm-palmos/lib dnl * --with-libfoo=autodetect dnl dnl Examples: dnl GP_CHECK_LIBRARY([LIBEXIF], [libexif])dnl dnl GP_CHECK_LIBRARY([LIBEXIF], [libexif-gtk], [>= 0.3.3])dnl dnl note the space! ^ dnl dnl Possible enhancements: dnl dnl * Derive VAR_PREFIX directly from libname dnl This will change the calling conventions, so be aware of that. dnl * Give names of a header file and function name and to a test dnl compilation. dnl AC_DEFUN([_GP_CHECK_LIBRARY_SOEXT],[dnl AC_MSG_CHECKING([for dynamic library extension]) soext="" case "$host" in *linux*) soext=".so" ;; *sunos*) soext=".so" ;; *solaris*) soext=".so" ;; *bsd*) soext=".so" ;; *darwin*) soext=".dylib" ;; *w32*) soext=".dll" ;; esac case "$host_os" in gnu*) soext=".so" ;; esac if test "x$soext" = "x"; then soext=".so" AC_MSG_RESULT([${soext}]) AC_MSG_WARN([ Host system "${host}" not recognized, defaulting to "${soext}". ]) else AC_MSG_RESULT([${soext}]) fi ])dnl dnl AC_DEFUN([_GP_CHECK_LIBRARY],[ # ---------------------------------------------------------------------- # [GP_CHECK_LIBRARY]([$1],[$2],[$3], # [$4],[$5], # [...],[...],[$8]) m4_ifval([$9],[dnl # $9 ])dnl # ---------------------------------------------------------------------- dnl AC_REQUIRE([GP_CONFIG_MSG])dnl AC_REQUIRE([GP_PKG_CONFIG])dnl AC_REQUIRE([_GP_CHECK_LIBRARY_SOEXT])dnl # Use _CFLAGS and _LIBS given to configure. # This makes it possible to set these vars in a configure script # and AC_CONFIG_SUBDIRS this configure. AC_ARG_VAR([$1][_CFLAGS], [CFLAGS for compiling with ][$2])dnl AC_ARG_VAR([$1][_LIBS], [LIBS to add for linking against ][$2])dnl dnl AC_MSG_CHECKING([for ][$2][ to use]) m4_ifval([$3],[REQUIREMENTS_FOR_][$1][="][$2][ $3]["], [REQUIREMENTS_FOR_][$1][="][$2]["]) userdef_[$1]=no have_[$1]=no if test "x${[$1][_LIBS]}" = "x" && test "x${[$1][_CFLAGS]}" = "x"; then # define --with/--without argument m4_if([$8], [default-off], [m4_pushdef([gp_lib_arg],[--without-][$2])dnl try_[$1]=no ], [m4_pushdef([gp_lib_arg],[--with-][$2])dnl try_[$1]=auto ])dnl AC_ARG_WITH([$2],[AS_HELP_STRING([gp_lib_arg][=PREFIX],[where to find ][$2][, "no" or "auto"])],[try_][$1][="$withval"]) if test "x${[try_][$1]}" = "xno"; then [REQUIREMENTS_FOR_][$1][=] fi if test "x${[try_][$1]}" = "xauto"; then [try_][$1]=autodetect; fi AC_MSG_RESULT([${try_][$1][}]) m4_popdef([gp_lib_arg])dnl if test "x${[try_][$1]}" = "xautodetect"; then # OK, we have to autodetect. # We start autodetection with the cleanest known method: pkg-config if test "x${[have_][$1]}" = "xno"; then # we need that line break after the PKG_CHECK_MODULES m4_ifval([$3], [PKG_CHECK_MODULES([$1],[$2][ $3],[have_][$1][=yes],[:])], [PKG_CHECK_MODULES([$1],[$2], [have_][$1][=yes],[:])] ) fi # If pkg-config didn't find anything, try the libfoo-config program # certain known libraries ship with. if test "x${[have_][$1]}" = "xno"; then AC_MSG_CHECKING([$2][ config program]) m4_pushdef([gp_lib_config],[m4_if([$2],[libusb],[libusb-config], [$2],[libgphoto2],[gphoto2-config], [$2],[libgphoto2_port],[gphoto2-port-config], [$2],[gdlib],[gdlib-config], [$2],[libxml-2.0],[xml2-config], [none])])dnl AC_MSG_RESULT([gp_lib_config]) AC_PATH_PROG([$1][_CONFIG_PROG],[gp_lib_config]) if test -n "${[$1][_CONFIG_PROG]}" && test "${[$1][_CONFIG_PROG]}" != "none"; then m4_ifval([$3],[ AC_MSG_CHECKING([for ][$2][ version according to ][gp_lib_config]) m4_pushdef([gp_lib_compop],[regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*.*], [\1])])dnl comparison operator m4_if( gp_lib_compop,[>=],[_][$1][_COMPN="-lt"], gp_lib_compop,[>], [_][$1][_COMPN="-le"], gp_lib_compop,[<], [_][$1][_COMPN="-ge"], gp_lib_compop,[<=],[_][$1][_COMPN="-gt"], gp_lib_compop,[=], [_][$1][_COMPN="-ne"], [m4_errprint(__file__:__line__:[ Error: Illegal version comparison operator: `gp_lib_compop' It must be one of ">=", ">", "<", "<=", "=". ])m4_exit(1)]) m4_popdef([gp_lib_compop])dnl # split requested version number using m4 regexps _[$1]_REQ_1="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\).*], [\2])" _[$1]_REQ_2="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\)\.\([0-9]+\).*], [\3])" _[$1]_REQ_3="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\).*], [\4])" _[$1]_REQ_4="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)\(.*\)], [\5])" # split installed version number via shell and sed _[$1]_VERSION="$("${[$1][_CONFIG_PROG]}" --version | sed 's/^.* //')" _[$1]_VER_1="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\).*/\1/g')" _[$1]_VER_2="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/g')" _[$1]_VER_3="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/g')" _[$1]_VER_4="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)\(.*\)/\4/g')" AC_MSG_RESULT([${_][$1][_VERSION}]) _tmp=false if test "${_[$1]_VER_1}" "${_[$1]_COMPN}" "${_[$1]_REQ_1}"; then _tmp=true; elif test "${_[$1]_VER_2}" "${_[$1]_COMPN}" "${_[$1]_REQ_2}"; then _tmp=true; elif test "${_[$1]_VER_3}" "${_[$1]_COMPN}" "${_[$1]_REQ_3}"; then _tmp=true; elif test "x${_[$1]_VER_4}" = "x" && test "x${_[$1]_REQ_4}" != "x"; then _tmp=true; elif test "${_[$1]_VER_4}" "${_[$1]_COMPN}" "${_[$1]_REQ_4}"; then _tmp=true; fi AC_MSG_CHECKING([if ][$2][ version is matching requirement ][$3]) if "${_tmp}"; then AC_MSG_RESULT([no]) AC_MSG_ERROR([Version requirement ][$2][ ][$3][ not met. Found: ${_][$1][_VERSION}]) else AC_MSG_RESULT([yes]) fi ])dnl if version requirement given AC_MSG_CHECKING([for ][$2][ parameters from ][gp_lib_config]) [$1]_LIBS="$(${[$1][_CONFIG_PROG]} --libs || echo "*error*")" [$1]_CFLAGS="$(${[$1][_CONFIG_PROG]} --cflags || echo "*error*")" if test "x${[$1]_LIBS}" = "*error*" || test "x${[$1]_CFLAGS}" = "*error*"; then AC_MSG_RESULT([error]) else have_[$1]=yes AC_MSG_RESULT([ok]) fi fi m4_popdef([gp_lib_config])dnl fi m4_ifval([$3],[# Version requirement given, so we do not rely on probing.],[ # Neither pkg-config, nor the libfoo-config program have found anything. # So let's just probe the system. AC_MSG_WARN([The `$2' library could not be found using pkg-config or its known config program. No version checks will be performed if it is found using any other method.]) if test "x${[have_][$1]}" = "xno"; then ifs="$IFS" IFS=":" # FIXME: for W32 and OS/2 we may need ";" here for _libdir_ in \ ${LD_LIBRARY_PATH} \ "${libdir}" \ "${prefix}/lib64" "${prefix}/lib" \ /usr/lib64 /usr/lib \ /usr/local/lib64 /usr/local/lib \ /opt/lib64 /opt/lib do IFS="$ifs" for _soext_ in .la ${soext} .a; do if test -f "${_libdir_}/[$2]${_soext_}" then if test "x${_soext_}" = "x.la" || test "x${_soext_}" = "x.a"; then [$1]_LIBS="${_libdir_}/[$2]${_soext_}" else [$1]_LIBS="-L${_libdir_} -l$(echo "$2" | sed 's/^lib//')" fi break fi done if test "x${[$1][_LIBS]}" != "x"; then break fi done IFS="$ifs" if test "x${[$1][_LIBS]}" != "x"; then have_[$1]=yes fi fi ]) elif test "x${[try_][$1]}" = "xno"; then : else # We've been given a prefix to look in for library $2. # We start looking for $2.la files first. AC_MSG_CHECKING([for ][$2][.la file in ${[try_][$1]}]) if test -f "${[try_][$1]}/lib/[$2].la"; then [$1][_LIBS]="${[try_][$1]}/lib/[$2].la" [$1][_CFLAGS]="-I${[try_][$1]}/include" AC_MSG_RESULT([libtool file $][$1][_LIBS (good)]) have_[$1]=yes elif test -f "${[try_][$1]}/lib64/[$2].la"; then # HACK [$1][_LIBS]="${[try_][$1]}/lib64/[$2].la" [$1][_CFLAGS]="-I${[try_][$1]}/include" AC_MSG_RESULT([libtool file $][$1][_LIBS (good)]) have_[$1]=yes else AC_MSG_RESULT([wild guess that something is in $try_][$1]) [$1][_LIBS]="-L${[try_][$1]}/lib -l$(echo "$2" | sed 's/^lib//')" [$1][_CFLAGS]="-I${[try_][$1]}/include" have_[$1]=yes AC_MSG_WARN([ * Warning: * libtool file $2.la could not be found. * We may be linking against the WRONG library. ]) fi fi elif test "x${[$1][_LIBS]}" != "x" && test "x${[$1][_CFLAGS]}" != "x"; then AC_MSG_RESULT([user-defined]) userdef_[$1]=yes have_[$1]=yes else AC_MSG_RESULT([broken call]) AC_MSG_ERROR([ * Fatal: * When calling configure for ${PACKAGE_TARNAME} * ${PACKAGE_NAME} * either set both [$1][_LIBS] *and* [$1][_CFLAGS] * or neither. ]) fi AC_SUBST([REQUIREMENTS_FOR_][$1]) dnl dnl ACTION-IF-FOUND dnl m4_ifval([$6],[dnl if test "x${[have_][$1]}" = "xyes"; then # ACTION-IF-FOUND $6 fi ])dnl dnl dnl ACTION-IF-NOT-FOUND dnl m4_ifval([$7],[dnl if test "x${[have_][$1]}" = "xno"; then # ACTION-IF-NOT-FOUND $7 fi ])dnl dnl dnl Run our own test compilation dnl m4_ifval([$4],[dnl if test "x${[have_][$1]}" = "xyes"; then dnl AC_MSG_CHECKING([whether ][$2][ test compile succeeds]) dnl AC_MSG_RESULT([${[have_][$1]}]) CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="${[$1]_CFLAGS}" AC_CHECK_HEADER([$4],[have_][$1][=yes],[have_][$1][=no]) CPPFLAGS="$CPPFLAGS_save" fi ])dnl dnl dnl Run our own test link dnl Does not work for libraries which be built after configure time, dnl so we deactivate it for them (userdef_). dnl m4_ifval([$5],[dnl if test "x${[userdef_][$1]}" = "xno" && test "x${[have_][$1]}" = "xyes"; then AC_MSG_CHECKING([for function ][$5][ in ][$2]) LIBS_save="$LIBS" LIBS="${[$1]_LIBS}" AC_TRY_LINK_FUNC([$5],[],[have_][$1][=no]) LIBS="$LIBS_save" AC_MSG_RESULT([${[have_][$1]}]) fi ])dnl dnl dnl Abort configure script if mandatory, but not found dnl m4_if([$8],[mandatory],[ if test "x${[have_][$1]}" = "xno"; then AC_MSG_ERROR([ PKG_CONFIG_PATH=${PKG_CONFIG_PATH} [$1][_LIBS]=${[$1][_LIBS]} [$1][_CFLAGS]=${[$1][_CFLAGS]} * Fatal: ${PACKAGE_NAME} requires $2 $3 to build. * * Possible solutions: * - set PKG_CONFIG_PATH to adequate value * - call configure with [$1][_LIBS]=.. and [$1][_CFLAGS]=.. * - call configure with one of the --with-$2 parameters ][m4_ifval([$9],[dnl * - get $2 and install it: * $9],[dnl * - get $2 and install it])]) fi ])dnl dnl dnl Abort configure script if not found and not explicitly disabled dnl m4_if([$8],[disable-explicitly],[ if test "x${[try_][$1]}" != "xno" && test "x${[have_][$1]}" = "xno"; then AC_MSG_ERROR([ PKG_CONFIG_PATH=${PKG_CONFIG_PATH} [$1][_LIBS]=${[$1][_LIBS]} [$1][_CFLAGS]=${[$1][_CFLAGS]} * Fatal: ${PACKAGE_NAME} by default requires $2 $3 to build. * You must explicitly disable $2 to build ${PACKAGE_TARNAME} without it. * * Possible solutions: * - call configure with --with-$2=no or --without-$2 * - set PKG_CONFIG_PATH to adequate value * - call configure with [$1][_LIBS]=.. and [$1][_CFLAGS]=.. * - call configure with one of the --with-$2 parameters ][m4_ifval([$9],[dnl * - get $2 and install it: * $9],[dnl * - get $2 and install it ])][m4_if([$2],[libusb],[dnl * - if you have libusb >= 1.0 installed, you must also install * either the libusb0 compat library or a libusb 0.x version ])]) fi ])dnl AM_CONDITIONAL([HAVE_][$1], [test "x$have_[$1]" = "xyes"]) if test "x$have_[$1]" = "xyes"; then AC_DEFINE([HAVE_][$1], 1, [whether we compile with ][$2][ support]) GP_CONFIG_MSG([$2],[yes])dnl AC_MSG_CHECKING([$2][ library flags]) AC_MSG_RESULT(["${[$1][_LIBS]}"]) AC_MSG_CHECKING([$2][ cpp flags]) AC_MSG_RESULT(["${[$1][_CFLAGS]}"]) else [REQUIREMENTS_FOR_][$1][=] GP_CONFIG_MSG([$2],[no])dnl fi dnl AC_SUBST is done implicitly by AC_ARG_VAR above. dnl AC_SUBST([$1][_LIBS]) dnl AC_SUBST([$1][_CFLAGS]) ])dnl dnl dnl #################################################################### dnl AC_DEFUN([_GP_CHECK_LIBRARY_SYNTAX_ERROR],[dnl m4_errprint(__file__:__line__:[ Error: *** Calling $0 macro with old syntax *** Aborting. ])dnl m4_exit(1)dnl ])dnl dnl dnl #################################################################### dnl AC_DEFUN([GP_CHECK_LIBRARY],[dnl m4_if([$4], [mandatory], [_GP_CHECK_LIBRARY_SYNTAX_ERROR($0)], [$4], [default-enabled], [_GP_CHECK_LIBRARY_SYNTAX_ERROR($0)], [$4], [default-disabled], [_GP_CHECK_LIBRARY_SYNTAX_ERROR($0)])dnl m4_if([$8], [], [dnl _GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[mandatory],[$9])], [$8], [default-on], [dnl _GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])], [$8], [disable-explicitly], [dnl _GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])], [$8], [default-off], [dnl _GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])], [$8], [mandatory], [dnl _GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])], [m4_errprint(__file__:__line__:[ Error: Illegal argument 6 to $0: `$6' It must be one of "default-on", "default-off", "mandatory". ])m4_exit(1)])dnl ])dnl dnl m4_pattern_disallow([GP_CHECK_LIBRARY]) m4_pattern_disallow([_GP_CHECK_LIBRARY]) m4_pattern_disallow([_GP_CHECK_LIBRARY_SYNTAX_ERROR]) m4_pattern_disallow([_GP_CHECK_LIBRARY_SOEXT]) dnl dnl #################################################################### dnl dnl Please do not remove this: dnl filetype: 6e60b4f0-acb2-4cd5-8258-42014f92bd2c dnl I use this to find all the different instances of this file which dnl are supposed to be synchronized. dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/gphoto-m4/gp-check-popt.m40000644000175000001440000001143012610415620015232 00000000000000dnl @synopsis GP_CHECK_POPT(FLAG) dnl dnl Check whether libpopt is available. dnl FLAG must be one of dnl "mandatory" dnl "default-enabled" dnl "default-disabled" dnl AC_DEFUN([GP_CHECK_POPT],[ # # [GP_CHECK_POPT] # AC_REQUIRE([GP_CONFIG_MSG])dnl m4_if([$1],[mandatory], [_GP_CHECK_POPT([mandatory])], [$1],[default-enabled], [_GP_CHECK_POPT([disable])], [$1],[default-disabled], [_GP_CHECK_POPT([enable])], [m4_errprint(__file__:__line__:[ Error: Illegal argument to $0: `$1' Valid values are: mandatory, default-enabled, default-disabled ])m4_exit(1)])dnl ])dnl dnl AC_DEFUN([_GP_CHECK_POPT],[ m4_if([$1],[mandatory],[ try_popt=yes require_popt=yes ],[ try_popt=auto require_popt=no AC_ARG_ENABLE([popt], [AS_HELP_STRING([--$1-popt],[Do not use popt])], [ if test "x$enableval" = xno \ || test "x$enableval" = xoff \ || test "x$enableval" = xfalse; then try_popt=no require_popt=no elif test "x$enableval" = xyes \ || test "x$enableval" = xon \ || test "x$enableval" = xtrue then try_popt=yes require_popt=yes fi ])dnl ])dnl AC_MSG_CHECKING([whether popt is required]) AC_MSG_RESULT([${require_popt}]) if test "$require_popt" != yes; then AC_MSG_CHECKING([whether popt is requested]) AC_MSG_RESULT([${try_popt}]) fi dnl Implicit AC_SUBST AC_ARG_VAR([POPT_CFLAGS],[cppflags to compile with libpopt])dnl AC_ARG_VAR([POPT_LIBS],[location of libpopt to link against])dnl have_popt=no if test "x$POPT_CFLAGS" = "x" && test "x$POPT_LIBS" = "x"; then # try to find options to compile popt.h CPPFLAGS_save="$CPPFLAGS" popth_found=no for popt_prefix in "" /usr /usr/local do if test -n "${popt_prefix}"; then : elif test -d "${popt_prefix}/include"; then CPPFLAGS="-I${popt_prefix}/include ${CPPFLAGS}" else continue fi ac_cv_header_popt_h="" unset ac_cv_header_popt_h AC_CHECK_HEADER([popt.h], [popth_found=yes]) if test "$popth_found" = yes; then break; fi done CPPFLAGS="$CPPFLAGS_save" if test "$popth_found" = "yes"; then if test "$popt_prefix" = ""; then POPT_CFLAGS="" else POPT_CFLAGS="-I${popt_prefix}/include" fi elif test "$require_popt" = "yes"; then AC_MSG_ERROR([ * Cannot autodetect popt.h * * Set POPT_CFLAGS and POPT_LIBS correctly. ]) fi # try to find options to link against popt LDFLAGS_save="$LDFLAGS" popt_links=no for popt_prefix in /usr "" /usr/local; do # We could have "/usr" and "lib64" at the beginning of the # lists. Then the first tested location would # incidentally be the right one on 64bit systems, and # thus work around a bug in libtool on 32bit systems: # # 32bit libtool doesn't know about 64bit systems, and so the # compilation will fail when linking a 32bit library from # /usr/lib to a 64bit binary. # # This hack has been confirmed to workwith a # 32bit Debian Sarge and 64bit Fedora Core 3 system. for ldir in lib64 "" lib; do popt_libdir="${popt_prefix}/${ldir}" if test "${popt_libdir}" = "/"; then popt_libdir="" elif test -d "${popt_libdir}"; then LDFLAGS="-L${popt_libdir} ${LDFLAGS}" else continue fi # Avoid caching of results ac_cv_lib_popt_poptStuffArgs="" unset ac_cv_lib_popt_poptStuffArgs AC_CHECK_LIB([popt], [poptStuffArgs], [popt_links=yes]) if test "$popt_links" = yes; then break; fi done if test "$popt_links" = yes; then break; fi done LDFLAGS="$LDFLAGS_save" if test "$popt_links" = "yes"; then if test "$popt_libdir" = ""; then POPT_LIBS="-lpopt" else POPT_LIBS="-L${popt_libdir} -lpopt" fi have_popt=yes elif test "$require_popt" = "yes"; then AC_MSG_ERROR([ * Cannot autodetect library directory containing popt * * Set POPT_CFLAGS and POPT_LIBS correctly. ]) fi elif test "x$POPT_CFLAGS" != "x" && test "x$POPT_LIBS" != "x"; then # just use the user specivied option popt_msg="yes (user specified)" have_popt=yes else AC_MSG_ERROR([ * Fatal: Either set both POPT_CFLAGS and POPT_LIBS or neither. ]) fi AC_MSG_CHECKING([if popt is functional]) if test "$require_popt$have_popt" = "yesno"; then AC_MSG_RESULT([no, but required]) AC_MSG_ERROR([ * popt library not found * Fatal: ${PACKAGE_NAME} (${PACKAGE_TARNAME}) requires popt * Please install it and/or set POPT_CFLAGS and POPT_LIBS. ]) fi AC_MSG_RESULT([${have_popt}]) GP_CONFIG_MSG([use popt library], [${have_popt}]) if test "$have_popt" = "yes"; then AC_DEFINE([HAVE_POPT],[1],[whether the popt library is available]) GP_CONFIG_MSG([popt libs],[${POPT_LIBS}]) GP_CONFIG_MSG([popt cppflags],[${POPT_CFLAGS}]) fi AM_CONDITIONAL([HAVE_POPT],[test "$have_popt" = "yes"]) ])dnl dnl dnl Please do not remove this: dnl filetype: 7595380e-eff3-49e5-90ab-e40f1d544639 dnl I use this to find all the different instances of this file which dnl are supposed to be synchronized. dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/MAINTAINERS0000644000175000001440000001373212610415524012220 00000000000000Below are the addresses of persons working on specific parts of gphoto2. If you have specific questions (like why doesn't my HP C20 answer with 0x20 if I send 0xff as described in whatever/file.c), those are the guys to ask. libgphoto2_port: Marcus Meissner Lutz Müller (old maintainer) Scott Fritzinger (old maintainer) Hubert Figuiere (old maintainer) libgphoto2: Marcus Meissner Lutz Müller (old maintainer) Scott Fritzinger (old maintainer) Hubert Figuiere (old maintainer) -------------------------------------------------------------------------------- PORTS -------------------------------------------------------------------------------- OS/2: Bart van Leeuwen *BSD: Arnaud Launay -------------------------------------------------------------------------------- CAMERA DRIVERS -------------------------------------------------------------------------------- camlibs/aox: Theodore Kilgore camlibs/barbie: Scott Fritzinger Marcus Meissner camlibs/benq: Till Adam camlibs/canon: Philippe Marzouk camlibs/clicksmart310: Theodore Kilgore camlibs/digigr8: Theodore Kilgore camlibs/digita: Johannes Erdfelt camlibs/dimera: Dan Fandrich camlibs/enigma13: Theodore Kilgore camlibs/gsmart: Till Adam camlibs/gsmart300: Jérôme Lodewyck Till Adam camlibs/hp215: Marcus Meissner camlibs/iclick: Theodore Kilgore camlibs/jamcam: Chris Pinkham camlibs/jd11: Marcus Meissner camlibs/jl2005a: Theodore Kilgore camlibs/jl2005c: Theodore Kilgore camlibs/konica: Lutz Müller camlibs/kodak/dc120: Scott Fritzinger camlibs/kodak/dc210: Michael Koltan camlibs/kodak/dc240: Hubert Figuiere camlibs/largan/lmini Hubert Figuiere camlibs/mars Theodore Kilgore camlibs/mustek: Marcus Meissner camlibs/panasonic Mariusz Zynel camlibs/panasonic/coolshot: Chris Pinkham camlibs/pccam300: Miah Gregory camlibs/pccam600: Peter Kajberg camlibs/polaroid/pdc320.c: Nathan Stenzel camlibs/polaroid/pdc640.c: Chris Byrne camlibs/polaroid/pdc700.c: Greg Ingram camlibs/ptp2: Marcus Meissner (current maintainer) Mariusz Woloszyn (previous maintainer) camlibs/ricoh/g3: Marcus Meissner camlibs/samsung: Marcus Meissner camlibs/sierra: Patrick Mansfield Scott Fritzinger Marcus Meissner camlibs/sipix: Marcus Meissner camlibs/smal: Lee Benfield camlibs/sonix: Theodore Kilgore camlibs/sonydscf1: Marcus Meissner camlibs/sonydscf55: Marcus Meissner Raymond Penners camlibs/soundvision: Vince Weaver camlibs/spca50x: Till Adam camlibs/sq905: Theodore Kilgore camlibs/stv0674: Vincent Sanders camlibs/stv0680: Carsten Weinholz Marcus Meissner camlibs/sx330z: Dominik Kuhlen camlibs/topfield: Marcus Meissner camlibs/toshiba/pdrm11 David Hogue -------------------------------------------------------------------------------- FRONTENDS -------------------------------------------------------------------------------- digikam (http://digikam.sourceforge.net): KDE frontend Renchi Raju f-spot: http://f-spot.org/Main_Page gthumb: The GNOME Team. kamera: KDE integration (konqueror) Marcus Meissner Ilya Konstantinov flphoto: fltk based photo importer (unmaintained) gtkam (http://www.topfrose.de): Simple GTK front-end. Lutz Müller GnoCam (http://www.uni-karlsruhe.de/~urc8/GnoCam): GNOME integration (nautilus) Lutz Müller QtKam (?): Front-end for KDE Remko Troncon SANE (?): If configured with --with-gphoto2. Pete Fales Wine (TWAIN): Marcus Meissner -------------------------------------------------------------------------------- SUPPORT -------------------------------------------------------------------------------- Build system up to 'configure' (i.e. 'autogen.sh'): Marcus Meissner Bug reports: Please use the sourceforge tracker at http://sf.net/projects/gphoto . Releases: Marcus Meissner Packaging (RPM): Hans Ulrich Niedermann Translation: We use http://translationproject.org/ packages: libgphoto2, libgphoto2_port, gphoto2, gtkam Marcus Meissner Manual pages: gphoto2 command-line app: Tim Waugh Other documentation (gphoto2.xml manual): Marcus Meissner Hans Ulrich Niedermann Mailing lists: Marcus Meissner Hans Ulrich Niedermann libgphoto2-2.5.9/libgphoto2/0000755000175000001440000000000012623156266012657 500000000000000libgphoto2-2.5.9/libgphoto2/gphoto2-filesys.c0000644000175000001440000017775212610415620016010 00000000000000/** \file * * \author Copyright 2000 Scott Fritzinger * \author Contributions Lutz Mueller (2001) * \author Copyright 2009 Marcus Meissner * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #include #include #ifdef HAVE_LIBEXIF # include #endif #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #ifndef PATH_MAX # define PATH_MAX 4096 #endif typedef struct _CameraFilesystemFile { char *name; int info_dirty; CameraFileInfo info; struct _CameraFilesystemFile *lru_prev; struct _CameraFilesystemFile *lru_next; CameraFile *preview; CameraFile *normal; CameraFile *raw; CameraFile *audio; CameraFile *exif; CameraFile *metadata; struct _CameraFilesystemFile *next; /* in folder */ } CameraFilesystemFile; typedef struct _CameraFilesystemFolder { char *name; int files_dirty; int folders_dirty; struct _CameraFilesystemFolder *next; /* chain in same folder */ struct _CameraFilesystemFolder *folders; /* childchain of this folder */ struct _CameraFilesystemFile *files; /* of this folder */ } CameraFilesystemFolder; /** * The default number of pictures to keep in the internal cache, * can be overriden by settings. */ #define PICTURES_TO_KEEP 2 /** * The current number of pictures to keep in the internal cache, * either from #PICTURES_TO_KEEP or from the settings. */ static int pictures_to_keep = -1; static int gp_filesystem_lru_clear (CameraFilesystem *fs); static int gp_filesystem_lru_remove_one (CameraFilesystem *fs, CameraFilesystemFile *item); static int gp_filesystem_lru_update (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context); #ifdef HAVE_LIBEXIF static int gp_filesystem_get_file_impl (CameraFilesystem *, const char *, const char *, CameraFileType, CameraFile *, GPContext *); static time_t get_time_from_exif_tag(ExifEntry *e) { struct tm ts; e->data[4] = e->data[ 7] = e->data[10] = e->data[13] = e->data[16] = 0; ts.tm_year = atoi ((char*)e->data) - 1900; ts.tm_mon = atoi ((char*)(e->data + 5)) - 1; ts.tm_mday = atoi ((char*)(e->data + 8)); ts.tm_hour = atoi ((char*)(e->data + 11)); ts.tm_min = atoi ((char*)(e->data + 14)); ts.tm_sec = atoi ((char*)(e->data + 17)); return mktime (&ts); } static time_t get_exif_mtime (const unsigned char *data, unsigned long size) { ExifData *ed; ExifEntry *e; time_t t, t1 = 0, t2 = 0, t3 = 0; ed = exif_data_new_from_data (data, size); if (!ed) { GP_LOG_E ("Could not parse data for EXIF information."); return 0; } /* * HP PhotoSmart C30 has the date and time in ifd_exif. */ #ifdef HAVE_LIBEXIF_IFD e = exif_content_get_entry (ed->ifd[EXIF_IFD_0], EXIF_TAG_DATE_TIME); if (e) t1 = get_time_from_exif_tag(e); e = exif_content_get_entry (ed->ifd[EXIF_IFD_EXIF], EXIF_TAG_DATE_TIME_ORIGINAL); if (e) t2 = get_time_from_exif_tag(e); e = exif_content_get_entry (ed->ifd[EXIF_IFD_EXIF], EXIF_TAG_DATE_TIME_DIGITIZED); if (e) t3 = get_time_from_exif_tag(e); #else e = exif_content_get_entry (ed->ifd0, EXIF_TAG_DATE_TIME); if (e) { t1 = get_time_from_exif_tag(e); exif_data_unref (e); } e = exif_content_get_entry (ed->ifd_exif, EXIF_TAG_DATE_TIME_ORIGINAL); if (e) { t2 = get_time_from_exif_tag(e); exif_data_unref (e); } e = exif_content_get_entry (ed->ifd_exif, EXIF_TAG_DATE_TIME_DIGITIZED); if (e) { t3 = get_time_from_exif_tag(e); exif_data_unref (e); } #endif exif_data_unref (ed); if (!t1 && !t2 && !t3) { GP_LOG_D ("EXIF data has not date/time tags."); return 0; } /* Perform some sanity checking on those tags */ t = t1; /* "last modified" */ if (t2 > t) /* "image taken" > "last modified" ? can not be */ t = t2; if (t3 > t) /* "image digitized" > max(last two) ? can not be */ t = t3; GP_LOG_D ("Found time in EXIF data: '%s'.", asctime (localtime (&t))); return (t); } static time_t gp_filesystem_get_exif_mtime (CameraFilesystem *fs, const char *folder, const char *filename) { CameraFile *file; const char *data = NULL; unsigned long int size = 0; time_t t; if (!fs) return 0; /* This is only useful for JPEGs. Avoid querying it for other types. */ if ( !strstr(filename,"jpg") && !strstr(filename,"JPG") && !strstr(filename,"jpeg") && !strstr(filename,"JPEG") ) return 0; gp_file_new (&file); if (gp_filesystem_get_file (fs, folder, filename, GP_FILE_TYPE_EXIF, file, NULL) != GP_OK) { GP_LOG_E ("Could not get EXIF data of '%s' in folder '%s'.", filename, folder); gp_file_unref (file); return 0; } gp_file_get_data_and_size (file, &data, &size); t = get_exif_mtime ((unsigned char*)data, size); gp_file_unref (file); return (t); } #endif /** * \brief The internal camera filesystem structure * * The internals of the #CameraFilesystem are only visible to gphoto2. You * can only access them using the functions provided by gphoto2. **/ struct _CameraFilesystem { CameraFilesystemFolder *rootfolder; CameraFilesystemFile *lru_first; CameraFilesystemFile *lru_last; unsigned long int lru_size; CameraFilesystemGetInfoFunc get_info_func; CameraFilesystemSetInfoFunc set_info_func; CameraFilesystemListFunc file_list_func; CameraFilesystemListFunc folder_list_func; CameraFilesystemGetFileFunc get_file_func; CameraFilesystemReadFileFunc read_file_func; CameraFilesystemDeleteFileFunc delete_file_func; CameraFilesystemPutFileFunc put_file_func; CameraFilesystemDeleteAllFunc delete_all_func; CameraFilesystemDirFunc make_dir_func; CameraFilesystemDirFunc remove_dir_func; CameraFilesystemStorageInfoFunc storage_info_func; void *data; }; #undef MIN #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #define CR(result) {int __r = (result); if (__r < 0) return (__r);} #define CL(result,list) \ { \ int __r = (result); \ \ if (__r < 0) { \ gp_list_free (list); \ return (__r); \ } \ } #define CU(result,file) \ { \ int __r = (result); \ \ if (__r < 0) { \ gp_file_unref (file); \ return (__r); \ } \ } #define CC(context) \ { \ if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) \ return GP_ERROR_CANCEL; \ } #define CA(f,c) \ { \ if ((f)[0] != '/') { \ gp_context_error ((c), \ _("The path '%s' is not absolute."), (f)); \ return (GP_ERROR_PATH_NOT_ABSOLUTE); \ } \ } static int delete_all_files (CameraFilesystem *fs, CameraFilesystemFolder *folder) { CameraFilesystemFile *file; C_PARAMS (folder); GP_LOG_D ("Delete all files in folder %p/%s", folder, folder->name); file = folder->files; while (file) { CameraFilesystemFile *next; /* Get rid of cached files */ gp_filesystem_lru_remove_one (fs, file); if (file->preview) { gp_file_unref (file->preview); file->preview = NULL; } if (file->normal) { gp_file_unref (file->normal); file->normal = NULL; } if (file->raw) { gp_file_unref (file->raw); file->raw = NULL; } if (file->audio) { gp_file_unref (file->audio); file->audio = NULL; } if (file->exif) { gp_file_unref (file->exif); file->exif = NULL; } if (file->metadata) { gp_file_unref (file->metadata); file->metadata = NULL; } next = file->next; free (file->name); free (file); file = next; } folder->files = NULL; return (GP_OK); } static int delete_folder (CameraFilesystem *fs, CameraFilesystemFolder **folder) { CameraFilesystemFolder *next; C_PARAMS (folder); GP_LOG_D ("Delete one folder %p/%s", *folder, (*folder)->name); next = (*folder)->next; delete_all_files (fs, *folder); free ((*folder)->name); free (*folder); *folder = next; return (GP_OK); } static CameraFilesystemFolder* lookup_folder ( CameraFilesystem *fs, CameraFilesystemFolder *folder, const char *foldername, GPContext *context ) { CameraFilesystemFolder *f; const char *curpt = foldername; const char *s; GP_LOG_D ("Lookup folder '%s'...", foldername); while (folder) { /* handle multiple slashes, and slashes at the end */ while (curpt[0]=='/') curpt++; if (!curpt[0]) { GP_LOG_D ("Found! %s is %p", foldername, folder); return folder; } s = strchr(curpt,'/'); /* Check if we need to load the folder ... */ if (folder->folders_dirty) { CameraList *list; char *copy = strdup (foldername); int ret; /* * The parent folder is dirty. List the folders in the parent * folder to make it clean. */ /* the character _before_ curpt is a /, overwrite it temporary with \0 */ copy[curpt-foldername] = '\0'; GP_LOG_D ("Folder %s is dirty. " "Listing folders in there to make folder clean...", copy); ret = gp_list_new (&list); if (ret == GP_OK) { ret = gp_filesystem_list_folders (fs, copy, list, context); gp_list_free (list); GP_LOG_D ("Done making folder %s clean...", copy); } else { GP_LOG_D ("Making folder %s clean failed: %d", copy, ret); } free (copy); } f = folder->folders; while (f) { if (s) { if (!strncmp(f->name,curpt, (s-curpt)) && (strlen(f->name) == (s-curpt)) ) { folder = f; curpt = s; break; } } else { if (!strcmp(f->name,curpt)) return f; } f = f->next; } folder = f; } return NULL; } static int lookup_folder_file ( CameraFilesystem *fs, const char *folder, const char *filename, CameraFilesystemFolder **xfolder, CameraFilesystemFile **xfile, GPContext *context ) { CameraFilesystemFolder* xf; CameraFilesystemFile* f; GP_LOG_D ("Lookup folder %s file %s", folder, filename); xf = lookup_folder (fs, fs->rootfolder, folder, context); if (!xf) return GP_ERROR_DIRECTORY_NOT_FOUND; /* Check if we need to load the filelist of the folder ... */ if (xf->files_dirty) { CameraList *list; int ret; /* * The folder is dirty. List the files in it to make it clean. */ GP_LOG_D ("Folder %s is dirty. " "Listing files in there to make folder clean...", folder); ret = gp_list_new (&list); if (ret == GP_OK) { ret = gp_filesystem_list_files (fs, folder, list, context); gp_list_free (list); GP_LOG_D ("Done making folder %s clean...", folder); } if (ret != GP_OK) GP_LOG_D ("Making folder %s clean failed: %d", folder, ret); } f = xf->files; while (f) { if (!strcmp (f->name, filename)) { *xfile = f; *xfolder = xf; return GP_OK; } f = f->next; } return GP_ERROR_FILE_NOT_FOUND; } /* delete all folder content */ static int recurse_delete_folder (CameraFilesystem *fs, CameraFilesystemFolder *folder) { CameraFilesystemFolder **f; GP_LOG_D ("Recurse delete folder %p/%s", folder, folder->name); f = &folder->folders; while (*f) { recurse_delete_folder (fs, *f); delete_folder (fs, f); /* will also advance to next */ } return (GP_OK); } static int delete_all_folders (CameraFilesystem *fs, const char *foldername, GPContext *context) { CameraFilesystemFolder *folder; GP_LOG_D ("Internally deleting " "all folders from '%s'...", foldername); C_PARAMS (fs && foldername); CC (context); CA (foldername, context); folder = lookup_folder (fs, fs->rootfolder, foldername, context); return recurse_delete_folder (fs, folder); } /* create and append 1 new folder entry to the current folder */ static int append_folder_one ( CameraFilesystemFolder *folder, const char *name, CameraFilesystemFolder **newfolder ) { CameraFilesystemFolder *f; GP_LOG_D ("Append one folder %s", name); C_MEM (f = calloc(1, sizeof(CameraFilesystemFolder))); f->name = strdup (name); if (!f->name) { free (f); return GP_ERROR_NO_MEMORY; } f->files_dirty = 1; f->folders_dirty = 1; /* Link into the current chain... perhaps later alphabetically? */ f->next = folder->folders; folder->folders = f; if (newfolder) *newfolder = f; return (GP_OK); } /* This is a mix between lookup and folder creator */ static int append_to_folder (CameraFilesystemFolder *folder, const char *foldername, CameraFilesystemFolder **newfolder ) { CameraFilesystemFolder *f; char *s; GP_LOG_D ("Append to folder %p/%s - %s", folder, folder->name, foldername); /* Handle multiple slashes, and slashes at the end */ while (foldername[0]=='/') foldername++; if (!foldername[0]) { if (newfolder) *newfolder = folder; return (GP_OK); } s = strchr(foldername,'/'); f = folder->folders; while (f) { if (s) { if (!strncmp(f->name,foldername, (s-foldername)) && (strlen(f->name) == (s-foldername)) ) return append_to_folder (f, s+1, newfolder); } else { if (!strcmp(f->name,foldername)) { if (newfolder) *newfolder = f; return (GP_OK); } } f = f->next; } /* Not found ... create new folder */ if (s) { char *x; C_MEM (x = calloc ((s-foldername)+1,1)); memcpy (x, foldername, (s-foldername)); x[s-foldername] = 0; CR (append_folder_one (folder, x, newfolder)); free (x); } else { CR (append_folder_one (folder, foldername, newfolder)); } return (GP_OK); } static int append_folder (CameraFilesystem *fs, const char *folder, CameraFilesystemFolder **newfolder, GPContext *context ) { GP_LOG_D ("Appending folder %s...", folder); C_PARAMS (fs); C_PARAMS (folder); CC (context); CA (folder, context); return append_to_folder (fs->rootfolder, folder, newfolder); } static int append_file (CameraFilesystem *fs, CameraFilesystemFolder *folder, const char *name, CameraFile *file, GPContext *context) { CameraFilesystemFile **new; C_PARAMS (fs && file); GP_LOG_D ("Appending file %s...", name); new = &folder->files; while (*new) { if (!strcmp((*new)->name, name)) { GP_LOG_E ("File %s already exists!", name); return (GP_ERROR); } new = &((*new)->next); } /* new now points to the location of the last ->next pointer, * if we write to it, we set last->next */ C_MEM ((*new) = calloc (1, sizeof (CameraFilesystemFile))); C_MEM ((*new)->name = strdup (name)); (*new)->info_dirty = 1; (*new)->normal = file; gp_file_ref (file); return (GP_OK); } /** * \brief Clear the filesystem * \param fs the filesystem to be cleared * * Resets the filesystem. All cached information including the folder tree * will get lost and will be queried again on demand. * * \return a gphoto2 error code. **/ int gp_filesystem_reset (CameraFilesystem *fs) { GP_LOG_D ("resetting filesystem"); CR (gp_filesystem_lru_clear (fs)); CR (delete_all_folders (fs, "/", NULL)); if (fs->rootfolder) { fs->rootfolder->files_dirty = 1; fs->rootfolder->folders_dirty = 1; } else { GP_LOG_E ("root folder is gone?"); } return (GP_OK); } /** * \brief Create a new filesystem struct * * \param fs a pointer to a #CameraFilesystem * * Creates a new empty #CameraFilesystem * * \return a gphoto2 error code. **/ int gp_filesystem_new (CameraFilesystem **fs) { C_PARAMS (fs); C_MEM (*fs = calloc (1, sizeof (CameraFilesystem))); (*fs)->rootfolder = calloc (sizeof (CameraFilesystemFolder), 1); if (!(*fs)->rootfolder) { free (*fs); return (GP_ERROR_NO_MEMORY); } (*fs)->rootfolder->name = strdup("/"); if (!(*fs)->rootfolder->name) { free ((*fs)->rootfolder); free (*fs); return (GP_ERROR_NO_MEMORY); } (*fs)->rootfolder->files_dirty = 1; (*fs)->rootfolder->folders_dirty = 1; return (GP_OK); } /** * \brief Free filesystem struct * \param fs a #CameraFilesystem * * Frees the #CameraFilesystem * * \return a gphoto2 error code. **/ int gp_filesystem_free (CameraFilesystem *fs) { /* We don't care for success or failure */ gp_filesystem_reset (fs); /* Now, we've only got left over the root folder. Free that and * the filesystem. */ free (fs->rootfolder->name); free (fs->rootfolder); free (fs); return (GP_OK); } /** * \brief Append a file to a folder in a filesystem * \param fs a #CameraFilesystem * \param folder the folder where to put the file in * \param filename filename of the file * \param context a #GPContext * * Tells the fs that there is a file called filename in folder * called folder. Usually camera drivers will call this function after * capturing an image in order to tell the fs about the new file. * A front-end should not use this function. * * \return a gphoto2 error code. **/ static int internal_append (CameraFilesystem *fs, CameraFilesystemFolder *f, const char *filename, GPContext *context) { CameraFilesystemFile **new; C_PARAMS (fs && f); GP_LOG_D ("Internal append %s to folder %s", filename, f->name); /* Check folder for existence, if not, create it. */ new = &f->files; while (*new) { if (!strcmp((*new)->name, filename)) break; new = &((*new)->next); } if (*new) return (GP_ERROR_FILE_EXISTS); C_MEM ((*new) = calloc (sizeof (CameraFilesystemFile), 1)); (*new)->name = strdup (filename); if (!(*new)->name) { free (*new); *new = NULL; return (GP_ERROR_NO_MEMORY); } (*new)->info_dirty = 1; return (GP_OK); } int gp_filesystem_append (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context) { CameraFilesystemFolder *f; int ret; C_PARAMS (fs && folder); CC (context); CA (folder, context); GP_LOG_D ("Append %s/%s to filesystem", folder, filename); /* Check folder for existence, if not, create it. */ f = lookup_folder (fs, fs->rootfolder, folder, context); if (!f) CR (append_folder (fs, folder, &f, context)); if (f->files_dirty) { /* Need to load folder from driver first ... capture case */ CameraList *xlist; int ret; ret = gp_list_new (&xlist); if (ret != GP_OK) return ret; ret = gp_filesystem_list_files (fs, folder, xlist, context); gp_list_free (xlist); if (ret != GP_OK) return ret; } ret = internal_append (fs, f, filename, context); if (ret == GP_ERROR_FILE_EXISTS) /* not an error here ... just in case we add files twice to the list */ ret = GP_OK; return ret; } static void recursive_fs_dump (CameraFilesystemFolder *folder, int depth) { CameraFilesystemFolder *f; CameraFilesystemFile *xfile; GP_LOG_D ("%*sFolder %s", depth, " ", folder->name); xfile = folder->files; while (xfile) { GP_LOG_D ("%*s %s", depth, " ", xfile->name); xfile = xfile->next; } f = folder->folders; while (f) { recursive_fs_dump (f, depth+4); f = f->next; } } /** * \brief Dump the current filesystem. * \param fs the #CameraFilesystem * \return a gphoto error code * * Internal function to dump the current filesystem. */ int gp_filesystem_dump (CameraFilesystem *fs) { GP_LOG_D ("Dumping Filesystem:"); recursive_fs_dump (fs->rootfolder, 0); return (GP_OK); } static int delete_file (CameraFilesystem *fs, CameraFilesystemFolder *folder, CameraFilesystemFile *file) { CameraFilesystemFile **prev; gp_filesystem_lru_remove_one (fs, file); /* Get rid of cached files */ if (file->preview) { gp_file_unref (file->preview); file->preview = NULL; } if (file->normal) { gp_file_unref (file->normal); file->normal = NULL; } if (file->raw) { gp_file_unref (file->raw); file->raw = NULL; } if (file->audio) { gp_file_unref (file->audio); file->audio = NULL; } if (file->exif) { gp_file_unref (file->exif); file->exif = NULL; } if (file->metadata) { gp_file_unref (file->metadata); file->metadata = NULL; } prev = &(folder->files); while ((*prev) && ((*prev) != file)) prev = &((*prev)->next); if (!*prev) return GP_ERROR; *prev = file->next; file->next = NULL; free (file->name); free (file); return (GP_OK); } static int gp_filesystem_delete_all_one_by_one (CameraFilesystem *fs, const char *folder, GPContext *context) { CameraList *list; int count, x; const char *name; GP_LOG_D ("Deleting all 1 by 1 from %s", folder); CR (gp_list_new (&list)); CL (gp_filesystem_list_files (fs, folder, list, context), list); CL (count = gp_list_count (list), list); for (x = count ; x--; ) { CL (gp_list_get_name (list, x, &name), list); CL (gp_filesystem_delete_file (fs, folder, name, context),list); } gp_list_free(list); return (GP_OK); } /** * \brief Delete all files in specified folder. * * \param fs a #CameraFilesystem * \param folder the folder in which to delete all files * \param context a #GPContext * * Deletes all files in the given folder from the fs. If the fs has not * been supplied with a delete_all_func, it tries to delete the files * one by one using the delete_file_func. If that function has not been * supplied neither, an error is returned. * * \return a gphoto2 error code. **/ int gp_filesystem_delete_all (CameraFilesystem *fs, const char *folder, GPContext *context) { int r; CameraFilesystemFolder *f; C_PARAMS (fs && folder); CC (context); CA (folder, context); GP_LOG_D ("Deleting all from %s", folder); /* Make sure this folder exists */ f = lookup_folder (fs, fs->rootfolder, folder, context); if (!f) return (GP_ERROR_DIRECTORY_NOT_FOUND); if (!fs->delete_all_func) return gp_filesystem_delete_all_one_by_one (fs, folder, context); /* * Mark the folder dirty - it could be that an error * happens, and then we don't know which files have been * deleted and which not. */ f->files_dirty = 1; /* * First try to use the delete_all function. If that fails, * fall back to deletion one-by-one. */ r = fs->delete_all_func (fs, folder, fs->data, context); if (r < 0) { GP_LOG_D ( "delete_all failed (%s). Falling back to " "deletion one-by-one.", gp_result_as_string (r)); CR (gp_filesystem_delete_all_one_by_one (fs, folder, context)); } else { /* delete from filesystem view too now */ CR (delete_all_files (fs, f)); } /* * No error happened. We can be sure that all files have been * deleted. */ f->files_dirty = 0; return (GP_OK); } /** * \brief Get the list of files in a folder * \param fs a #CameraFilesystem * \param folder a folder of which a file list should be generated * \param list a #CameraList where to put the list of files into * \param context a #GPContext * * Lists the files in folder using either cached values or (if there * aren't any) the file_list_func which (hopefully) has been previously * supplied. * * \return a gphoto2 error code. **/ int gp_filesystem_list_files (CameraFilesystem *fs, const char *folder, CameraList *list, GPContext *context) { int count, y; const char *name; CameraFilesystemFolder *f; CameraFilesystemFile *file; GP_LOG_D ("Listing files in %s", folder); C_PARAMS (fs && list && folder); CC (context); CA (folder, context); gp_list_reset (list); /* Search the folder */ f = lookup_folder (fs, fs->rootfolder, folder, context); if (!f) return (GP_ERROR_DIRECTORY_NOT_FOUND); /* If the folder is dirty, delete the contents and query the camera */ if (f->files_dirty && fs->file_list_func) { GP_LOG_D ("Querying folder %s...", folder); CR (delete_all_files (fs, f)); /* set it to non-dirty now, so we do not recurse via _append. */ f->files_dirty = 0; CR (fs->file_list_func (fs, folder, list, fs->data, context)); CR (count = gp_list_count (list)); for (y = 0; y < count; y++) { CR (gp_list_get_name (list, y, &name)); GP_LOG_D ("Added '%s'", name); CR (internal_append (fs, f, name, context)); } gp_list_reset (list); } /* The folder is clean now */ f->files_dirty = 0; file = f->files; while (file) { GP_LOG_D ( "Listed '%s'", file->name); CR (gp_list_append (list, file->name, NULL)); file = file->next; } return (GP_OK); } /** * \brief List all subfolders within a filesystem folder * \param fs a #CameraFilesystem * \param folder a folder * \param list a #CameraList where subfolders should be listed * \param context a #GPContext * * Generates a list of subfolders of the supplied folder either using * cached values (if there are any) or the folder_list_func if it has been * supplied previously. If not, it is assumed that only a root folder * exists (which is the case for many cameras). * * \return a gphoto2 error code. **/ int gp_filesystem_list_folders (CameraFilesystem *fs, const char *folder, CameraList *list, GPContext *context) { int y, count; const char *name; CameraFilesystemFolder *f, *new; GP_LOG_D ("Listing folders in %s", folder); C_PARAMS (fs && folder && list); CC (context); CA (folder, context); gp_list_reset (list); /* Search the folder */ f = lookup_folder (fs, fs->rootfolder, folder, context); if (!f) return (GP_ERROR_DIRECTORY_NOT_FOUND); /* If the folder is dirty, query the contents. */ if (f->folders_dirty && fs->folder_list_func) { GP_LOG_D ("... is dirty, getting from camera"); CR (fs->folder_list_func (fs, folder, list, fs->data, context)); CR (delete_all_folders (fs, folder, context)); CR (count = gp_list_count (list)); for (y = 0; y < count; y++) { CR (gp_list_get_name (list, y, &name)); CR (append_folder_one (f, name, NULL)); } /* FIXME: why not just return (GP_OK); ? the list should be fine */ gp_list_reset (list); } new = f->folders; while (new) { CR (gp_list_append (list, new->name, NULL)); new = new->next; } /* The folder is clean now */ f->folders_dirty = 0; GP_LOG_D ("Folder %s contains %i subfolders.", folder, gp_list_count (list)); return (GP_OK); } /** * \brief Count files a folder of a filesystem. * \param fs a #CameraFilesystem * \param folder a folder in which to count the files * \param context a #GPContext * * Counts the files in the folder. * * \return The number of files in the folder or a gphoto2 error code. **/ int gp_filesystem_count (CameraFilesystem *fs, const char *folder, GPContext *context) { int x; CameraFilesystemFolder *f; CameraFilesystemFile *file; C_PARAMS (fs && folder); CC (context); CA (folder, context); f = lookup_folder (fs, fs->rootfolder, folder, context); if (!f) return (GP_ERROR_DIRECTORY_NOT_FOUND); x = 0; file = f->files; while (file) { x++; file = file->next; } return x; } /** * \brief Delete a file from a folder. * \param fs a #CameraFilesystem * \param folder a folder in which to delete the file * \param filename the name of the file to delete * \param context a #GPContext * * If a delete_file_func has been supplied to the fs, this function will * be called and, if this function returns without error, the file will be * removed from the fs. * * \return a gphoto2 error code. **/ int gp_filesystem_delete_file (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context) { CameraFilesystemFolder *f; CameraFilesystemFile *file; C_PARAMS (fs && folder && filename); CC (context); CA (folder, context); /* First of all, do we support file deletion? */ if (!fs->delete_file_func) { gp_context_error (context, _("You have been trying to delete " "'%s' from folder '%s', but the filesystem does not " "support deletion of files."), filename, folder); return (GP_ERROR_NOT_SUPPORTED); } /* Search the folder and the file */ CR (lookup_folder_file (fs, folder, filename, &f, &file, context)); GP_LOG_D ("Deleting '%s' from folder '%s'...", filename, folder); /* Delete the file */ CR (fs->delete_file_func (fs, folder, filename, fs->data, context)); CR (delete_file (fs, f, file)); return (GP_OK); } /** * \brief Delete a virtal file from a folder in the filesystem * \param fs a #CameraFilesystem * \param folder a folder in which to delete the file * \param filename the name of the file to delete * \param context a #GPContext * * Remove a file from the filesystem. Compared to gp_filesystem_delete_file() * this just removes the file from the libgphoto2 view of the filesystem, but * does not call the camera driver to delete it from the physical device. * * \return a gphoto2 error code. **/ int gp_filesystem_delete_file_noop (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context) { CameraFilesystemFolder *f; CameraFilesystemFile *file; C_PARAMS (fs && folder && filename); CC (context); CA (folder, context); /* Search the folder and the file */ CR (lookup_folder_file (fs, folder, filename, &f, &file, context)); return delete_file (fs, f, file); } /** * \brief Create a subfolder within a folder * \param fs a #CameraFilesystem * \param folder the folder in which the directory should be created * \param name the name of the directory to be created * \param context a #GPContext * * Creates a new directory called name in given folder. * * \return a gphoto2 error code **/ int gp_filesystem_make_dir (CameraFilesystem *fs, const char *folder, const char *name, GPContext *context) { CameraFilesystemFolder *f; C_PARAMS (fs && folder && name); CC (context); CA (folder, context); if (!fs->make_dir_func) return (GP_ERROR_NOT_SUPPORTED); /* Search the folder */ f = lookup_folder (fs, fs->rootfolder, folder, context); if (!f) return (GP_ERROR_DIRECTORY_NOT_FOUND); /* Create the directory */ CR (fs->make_dir_func (fs, folder, name, fs->data, context)); /* and append to internal fs */ return append_folder_one (f, name, NULL); } /** * \brief Remove a subfolder from within a folder * \param fs a #CameraFilesystem * \param folder the folder in which the directory should be created * \param name the name of the directory to be created * \param context a #GPContext * * Removes a directory called name from the given folder. * * \return a gphoto2 error code **/ int gp_filesystem_remove_dir (CameraFilesystem *fs, const char *folder, const char *name, GPContext *context) { CameraFilesystemFolder *f; CameraFilesystemFolder **prev; C_PARAMS (fs && folder && name); CC (context); CA (folder, context); if (!fs->remove_dir_func) return (GP_ERROR_NOT_SUPPORTED); /* * Make sure there are neither files nor folders in the folder * that is to be removed. */ f = lookup_folder (fs, fs->rootfolder, folder, context); if (!f) return (GP_ERROR_DIRECTORY_NOT_FOUND); /* Check if we need to load the folder ... */ if (f->folders_dirty) { CameraList *list; int ret; /* * The owning folder is dirty. List the folders in it * to make it clean. */ GP_LOG_D ("Folder %s is dirty. " "Listing folders in there to make folder clean...", folder); ret = gp_list_new (&list); if (ret == GP_OK) { ret = gp_filesystem_list_folders (fs, folder, list, context); gp_list_free (list); GP_LOG_D ("Done making folder %s clean...", folder); } } prev = &(f->folders); while (*prev) { if (!strcmp (name, (*prev)->name)) break; prev = &((*prev)->next); } if (!*prev) return (GP_ERROR_DIRECTORY_NOT_FOUND); if ((*prev)->folders) { gp_context_error (context, _("There are still subfolders in " "folder '%s/%s' that you are trying to remove."), folder, name); return (GP_ERROR_DIRECTORY_EXISTS); } if ((*prev)->files) { gp_context_error (context, _("There are still files in " "folder '%s/%s' that you are trying to remove."), folder,name); return (GP_ERROR_FILE_EXISTS); } /* Remove the directory */ CR (fs->remove_dir_func (fs, folder, name, fs->data, context)); CR (delete_folder (fs, prev)); return (GP_OK); } /** * \brief Upload a file to a folder on the device filesystem * \param fs a #CameraFilesystem * \param folder the folder where to put the file into * \param file the file * \param context a #GPContext * * Uploads a file to the camera if a put_file_func has been previously * supplied to the fs. If the upload is successful, the file will get * cached in the fs. * * \return a gphoto2 error code. **/ int gp_filesystem_put_file (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context) { CameraFilesystemFolder *f; int ret; C_PARAMS (fs && folder && file); CC (context); CA (folder, context); /* Do we support file upload? */ if (!fs->put_file_func) { gp_context_error (context, _("The filesystem does not support " "upload of files.")); return (GP_ERROR_NOT_SUPPORTED); } /* Search the folder */ f = lookup_folder (fs, fs->rootfolder, folder, context); if (!f) return (GP_ERROR_DIRECTORY_NOT_FOUND); /* Upload the file */ CR (fs->put_file_func (fs, folder, filename, type, file, fs->data, context)); /* And upload it to internal structure too */ ret = append_file (fs, f, filename, file, context); if (type != GP_FILE_TYPE_NORMAL) /* FIXME perhaps check before append_file? */ return GP_OK; return ret; } /** * \brief Lookup the filename of an indexed file within a folder. * \param fs a #CameraFilesystem * \param folder the folder where to look up the file with the filenumber * \param filenumber the number of the file * \param filename pointer to a filename where the result is stored * \param context a #GPContext * * Looks up the filename of file with given filenumber in given folder. * See gp_filesystem_number for exactly the opposite functionality. * * \return a gphoto2 error code. **/ int gp_filesystem_name (CameraFilesystem *fs, const char *folder, int filenumber, const char **filename, GPContext *context) { CameraFilesystemFolder *f; CameraFilesystemFile *file; int count; C_PARAMS (fs && folder); CC (context); CA (folder, context); f = lookup_folder (fs, fs->rootfolder, folder, context); if (!f) return (GP_ERROR_DIRECTORY_NOT_FOUND); file = f->files; count = 0; while (file) { if (filenumber == 0) break; filenumber--; count++; file = file->next; } if (!file) { gp_context_error (context, _("Folder '%s' only contains " "%i files, but you requested a file with number %i."), folder, count, filenumber); return (GP_ERROR_FILE_NOT_FOUND); } *filename = file->name; return (GP_OK); } /** * \brief Get the index of a file in specified folder * \param fs a #CameraFilesystem * \param folder the folder where to look for file called filename * \param filename the file to look for * \param context a #GPContext * * Looks for a file called filename in the given folder. See * gp_filesystem_name for exactly the opposite functionality. * * \return a gphoto2 error code. **/ int gp_filesystem_number (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context) { CameraFilesystemFolder *f; CameraFilesystemFile *file; CameraList *list; int num; C_PARAMS (fs && folder && filename); CC (context); CA (folder, context); f = lookup_folder (fs, fs->rootfolder, folder, context); if (!f) return (GP_ERROR_DIRECTORY_NOT_FOUND); file = f->files; num = 0; while (file) { if (!strcmp (file->name, filename)) return num; num++; file = file->next; } /* Ok, we didn't find the file. Is the folder dirty? */ if (!f->files_dirty) { gp_context_error (context, _("File '%s' could not be found " "in folder '%s'."), filename, folder); return (GP_ERROR_FILE_NOT_FOUND); } /* The folder is dirty. List all files to make it clean */ CR (gp_list_new(&list)); CL (gp_filesystem_list_files (fs, folder, list, context), list); gp_list_free(list); return (gp_filesystem_number (fs, folder, filename, context)); } static int gp_filesystem_scan (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context) { int count, x; CameraList *list; const char *name; char path[128]; GP_LOG_D ("Scanning %s for %s...", folder, filename); C_PARAMS (fs && folder && filename); CC (context); CA (folder, context); CR (gp_list_new (&list)); CL (gp_filesystem_list_files (fs, folder, list, context), list); CL (count = gp_list_count (list), list); for (x = 0; x < count; x++) { CL (gp_list_get_name (list, x, &name), list); if (!strcmp (filename, name)) { gp_list_free (list); return (GP_OK); } } CL (gp_filesystem_list_folders (fs, folder, list, context), list); CL (count = gp_list_count (list), list); for (x = 0; x < count; x++) { CL (gp_list_get_name (list, x, &name), list); strncpy (path, folder, sizeof (path)); if (path[strlen (path) - 1] != '/') strncat (path, "/", sizeof (path) - strlen (path) - 1); strncat (path, name, sizeof (path) - strlen (path) - 1); CL (gp_filesystem_scan (fs, path, filename, context), list); } gp_list_free (list); return (GP_OK); } static int recursive_folder_scan ( CameraFilesystemFolder *folder, const char *lookforfile, char **foldername ) { CameraFilesystemFile *file; CameraFilesystemFolder *f; int ret; file = folder->files; while (file) { if (!strcmp(file->name, lookforfile)) { *foldername = strdup (folder->name); return GP_OK; } file = file->next; } f = folder->folders; while (f) { char *xfolder; ret = recursive_folder_scan (f, lookforfile, &xfolder); if (ret == GP_OK) { C_MEM ((*foldername) = malloc (strlen (folder->name) + 1 + strlen (xfolder) + 1)); strcpy ((*foldername),folder->name); strcat ((*foldername),"/"); strcat ((*foldername),xfolder); free (xfolder); return GP_OK; } f = f->next; } /* thorugh all subfoilders */ return GP_ERROR_FILE_NOT_FOUND; } /** * \brief Search a folder that contains a given filename * \param fs a #CameraFilesystem * \param filename the name of the file to search in the fs * \param folder pointer to value where the string is stored in * \param context a #GPContext * * Searches a file called filename in the fs and returns the first * occurrency. This functionality is needed for camera drivers that cannot * figure out where a file gets created after capturing an image although the * name of the image is known. Usually, those drivers will call * gp_filesystem_reset in order to tell the fs that something has * changed and then gp_filesystem_get_folder in order to find the file. * * Note that you get a reference to the string stored in the filesystem structure, * so do not free it yourself. * * \return a gphoto2 error code. **/ int gp_filesystem_get_folder (CameraFilesystem *fs, const char *filename, char **folder, GPContext *context) { int ret; C_PARAMS (fs && filename && folder); CC (context); CR (gp_filesystem_scan (fs, "/", filename, context)); ret = recursive_folder_scan ( fs->rootfolder, filename, folder); if (ret == GP_OK) return ret; gp_context_error (context, _("Could not find file '%s'."), filename); return (GP_ERROR_FILE_NOT_FOUND); } static int gp_filesystem_get_file_impl (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context) { CameraFilesystemFolder *xfolder; CameraFilesystemFile *xfile; int ret; C_PARAMS (fs && folder && file && filename); CC (context); CA (folder, context); GP_LOG_D ("Getting file '%s' from folder '%s' (type %i)...", filename, folder, type); CR (gp_file_set_name (file, filename)); if (!fs->get_file_func) { gp_context_error (context, _("The filesystem doesn't support getting files")); return (GP_ERROR_NOT_SUPPORTED); } /* Search folder and file */ CR( lookup_folder_file (fs, folder, filename, &xfolder, &xfile, context)); ret = GP_ERROR; switch (type) { case GP_FILE_TYPE_PREVIEW: if (xfile->preview) ret = gp_file_copy (file, xfile->preview); break; case GP_FILE_TYPE_NORMAL: if (xfile->normal) ret = gp_file_copy (file, xfile->normal); break; case GP_FILE_TYPE_RAW: if (xfile->raw) ret = gp_file_copy (file, xfile->raw); break; case GP_FILE_TYPE_AUDIO: if (xfile->audio) ret = gp_file_copy (file, xfile->audio); break; case GP_FILE_TYPE_EXIF: if (xfile->exif) ret = gp_file_copy (file, xfile->exif); break; case GP_FILE_TYPE_METADATA: if (xfile->metadata) ret = gp_file_copy (file, xfile->metadata); break; default: gp_context_error (context, _("Unknown file type %i."), type); return (GP_ERROR); } if (ret == GP_OK) { GP_LOG_D ("LRU cache used for type %d!", type); return GP_OK; } GP_LOG_D ("Downloading '%s' from folder '%s'...", filename, folder); CR (fs->get_file_func (fs, folder, filename, type, file, fs->data, context)); /* We don't trust the camera drivers */ CR (gp_file_set_name (file, filename)); #if 0 /* this disables LRU completely. */ /* Cache this file */ CR (gp_filesystem_set_file_noop (fs, folder, filename, type, file, context)); #endif /* * Often, thumbnails are of a different mime type than the normal * picture. In this case, we should rename the file. */ if (type != GP_FILE_TYPE_NORMAL) CR (gp_file_adjust_name_for_mime_type (file)); return (GP_OK); } /** * \brief Get file data from the filesystem * \param fs a #CameraFilesystem * \param folder the folder in which the file can be found * \param filename the name of the file to download * \param type the type of the file * \param file the file that receives the data * \param context a #GPContext * * Downloads the file called filename from the folder using the * get_file_func if such a function has been previously supplied. If the * file has been previously downloaded, the file is retrieved from cache. * The result is stored in the passed file structure. * * \return a gphoto2 error code. **/ int gp_filesystem_get_file (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context) { int r; #ifdef HAVE_LIBEXIF CameraFile *efile; const char *data = NULL; unsigned char *buf; unsigned int buf_size; unsigned long int size = 0; ExifData *ed; #endif r = gp_filesystem_get_file_impl (fs, folder, filename, type, file, context); if ((r == GP_ERROR_NOT_SUPPORTED) && (type == GP_FILE_TYPE_PREVIEW)) { /* * Could not get preview (unsupported operation). Some * cameras hide the thumbnail in EXIF data. Check it out. */ #ifdef HAVE_LIBEXIF GP_LOG_D ("Getting previews is not supported. Trying EXIF data..."); CR (gp_file_new (&efile)); CU (gp_filesystem_get_file_impl (fs, folder, filename, GP_FILE_TYPE_EXIF, efile, context), efile); CU (gp_file_get_data_and_size (efile, &data, &size), efile); ed = exif_data_new_from_data ((unsigned char*)data, size); gp_file_unref (efile); if (!ed) { GP_LOG_E ("Could not parse EXIF data of '%s' in folder '%s'.", filename, folder); return (GP_ERROR_CORRUPTED_DATA); } if (!ed->data) { GP_LOG_E ("EXIF data does not contain a thumbnail."); exif_data_unref (ed); return (r); } /* * We found a thumbnail in EXIF data! Those * thumbnails are always JPEG. Set up the file. */ r = gp_file_set_data_and_size (file, (char*)ed->data, ed->size); if (r < 0) { exif_data_unref (ed); return (r); } ed->data = NULL; ed->size = 0; exif_data_unref (ed); CR (gp_file_set_name (file, filename)); CR (gp_file_set_mime_type (file, GP_MIME_JPEG)); CR (gp_filesystem_set_file_noop (fs, folder, filename, GP_FILE_TYPE_PREVIEW, file, context)); CR (gp_file_adjust_name_for_mime_type (file)); #else GP_LOG_D ("Getting previews is not supported and " "libgphoto2 has been compiled without exif " "support. "); return (r); #endif } else if ((r == GP_ERROR_NOT_SUPPORTED) && (type == GP_FILE_TYPE_EXIF)) { /* * Some cameras hide EXIF data in thumbnails (!). Check it * out. */ #ifdef HAVE_LIBEXIF GP_LOG_D ("Getting EXIF data is not supported. Trying thumbnail..."); CR (gp_file_new (&efile)); CU (gp_filesystem_get_file_impl (fs, folder, filename, GP_FILE_TYPE_PREVIEW, efile, context), efile); CU (gp_file_get_data_and_size (efile, &data, &size), efile); ed = exif_data_new_from_data ((unsigned char*)data, size); gp_file_unref (efile); if (!ed) { GP_LOG_D ("Could not parse EXIF data of thumbnail of " "'%s' in folder '%s'.", filename, folder); return (GP_ERROR_CORRUPTED_DATA); } exif_data_save_data (ed, &buf, &buf_size); exif_data_unref (ed); r = gp_file_set_data_and_size (file, (char*)buf, buf_size); if (r < 0) { free (buf); return (r); } CR (gp_file_set_name (file, filename)); CR (gp_file_set_mime_type (file, GP_MIME_EXIF)); CR (gp_filesystem_set_file_noop (fs, folder, filename, GP_FILE_TYPE_EXIF, file, context)); CR (gp_file_adjust_name_for_mime_type (file)); #else GP_LOG_D ("Getting EXIF data is not supported and libgphoto2 " "has been compiled without EXIF support."); return (r); #endif } else if (r < 0) { GP_LOG_D ("Download of '%s' from '%s' (type %i) failed. " "Reason: '%s'", filename, folder, type, gp_result_as_string (r)); return (r); } return (GP_OK); } /** * \brief Get partial file data from the filesystem * \param fs a #CameraFilesystem * \param folder the folder in which the file can be found * \param filename the name of the file to download * \param type the type of the file * \param offset the offset where the data starts * \param buf the targetbuffer where the data will be put * \param size the size to read and that was read into the buffer * \param context a #GPContext * * Downloads the file called filename from the folder using the * read_file_func if such a function has been previously supplied. If the * file has been previously downloaded, the file is retrieved from cache. * * The file is read partially into the passed buffer. The read starts * at offset on the device and goes for at most size bytes. * Reading over the end of the file might give errors, so get the maximum * file size via an info function before. * * \return a gphoto2 error code. **/ int gp_filesystem_read_file (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, uint64_t offset, char *buf, uint64_t *size, GPContext *context) { int r; const char *xdata; unsigned long xsize; CameraFile *file; C_PARAMS (fs && folder && filename && buf && size); CC (context); CA (folder, context); if (fs->read_file_func) { r = fs->read_file_func (fs, folder, filename, type, offset, buf, size, fs->data, context); if (r == GP_OK) return r; } return GP_ERROR_NOT_SUPPORTED; /* fallback code */ CR (gp_file_new (&file)); CR (gp_filesystem_get_file (fs, folder, filename, type, file, context)); CR (gp_file_get_data_and_size (file, &xdata, &xsize)); if (offset > *size) { /* EOF */ gp_file_unref (file); *size = 0; return GP_OK; } if ((offset != 0) || (offset + *size != xsize)) { /* Cache this file in the LRU, but only if the user just * hasn't read all of it at once. */ CR (gp_filesystem_set_file_noop (fs, folder, filename, type, file, context)); } if (offset + (*size) > xsize) *size = xsize-offset; memcpy (buf, xdata+offset, *size); gp_file_unref (file); return GP_OK; } /** * \brief Set all filesystem related function pointers * \param fs a #CameraFilesystem * \param funcs pointer to a struct of filesystem functions * \param data private data * * Tells the filesystem which functions to call for camera/filesystem specific * functions, like listing, retrieving, uploading files and so on. * * \return a gphoto2 error code. **/ int gp_filesystem_set_funcs (CameraFilesystem *fs, CameraFilesystemFuncs *funcs, void *data) { C_PARAMS (fs); fs->get_info_func = funcs->get_info_func; fs->set_info_func = funcs->set_info_func; fs->put_file_func = funcs->put_file_func; fs->delete_all_func = funcs->delete_all_func; fs->make_dir_func = funcs->make_dir_func; fs->remove_dir_func = funcs->remove_dir_func; fs->file_list_func = funcs->file_list_func; fs->folder_list_func = funcs->folder_list_func; fs->delete_file_func = funcs->del_file_func; fs->get_file_func = funcs->get_file_func; fs->read_file_func = funcs->read_file_func; fs->storage_info_func = funcs->storage_info_func; fs->data = data; return (GP_OK); } /** * \brief Get information about the specified file * \param fs a #CameraFilesystem * \param folder the folder that contains the file * \param filename the filename * \param info pointer to #CameraFileInfo that receives the information * \param context a #GPContext * * \return a gphoto2 error code. **/ int gp_filesystem_get_info (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, GPContext *context) { CameraFilesystemFolder *f; CameraFilesystemFile *file; #ifdef HAVE_LIBEXIF time_t t; #endif C_PARAMS (fs && folder && filename && info); CC (context); CA (folder, context); GP_LOG_D ("Getting information about '%s' in '%s'...", filename, folder); if (!fs->get_info_func) { gp_context_error (context, _("The filesystem doesn't support getting file " "information")); return (GP_ERROR_NOT_SUPPORTED); } /* Search folder and file and get info if needed */ CR ( lookup_folder_file (fs, folder, filename, &f, &file, context)); if (file->info_dirty) { CR (fs->get_info_func (fs, folder, filename, &file->info, fs->data, context)); file->info_dirty = 0; } /* * If we didn't get GP_FILE_INFO_MTIME, we'll have a look if we * can get it from EXIF data. */ #ifdef HAVE_LIBEXIF if (!(file->info.file.fields & GP_FILE_INFO_MTIME)) { GP_LOG_D ("Did not get mtime. Trying EXIF information..."); t = gp_filesystem_get_exif_mtime (fs, folder, filename); if (t) { file->info.file.mtime = t; file->info.file.fields |= GP_FILE_INFO_MTIME; } } #endif memcpy (info, &file->info, sizeof (CameraFileInfo)); return (GP_OK); } static int gp_filesystem_lru_clear (CameraFilesystem *fs) { int n = 0; CameraFilesystemFile *ptr, *prev; GP_LOG_D ("Clearing fscache LRU list..."); if (fs->lru_first == NULL) { GP_LOG_D ("fscache LRU list already empty"); return (GP_OK); } ptr = prev = fs->lru_first; while (ptr != NULL) { n++; if (ptr->lru_prev != prev) { GP_LOG_D ("fscache LRU list corrupted (%i)", n); return (GP_ERROR); } prev = ptr; ptr = ptr->lru_next; prev->lru_prev = NULL; prev->lru_next = NULL; } fs->lru_first = NULL; fs->lru_last = NULL; fs->lru_size = 0; GP_LOG_D ("fscache LRU list cleared (removed %i items)", n); return (GP_OK); } static int gp_filesystem_lru_remove_one (CameraFilesystem *fs, CameraFilesystemFile *item) { if (item->lru_prev == NULL) return (GP_ERROR); /* Update the prev and next pointers. */ if (item->lru_prev) item->lru_prev->lru_next = item->lru_next; if (item->lru_next) item->lru_next->lru_prev = item->lru_prev; if (fs->lru_last == item) { if (fs->lru_first == item) { /* * Case 1: ITEM is the only one in the list. We'll * remove it, and the list will be empty afterwards. */ fs->lru_last = NULL; fs->lru_first = NULL; } else { /* Case 2: ITEM is the last in the list. */ fs->lru_last = item->lru_prev; } } else if (fs->lru_first == item) { /* Case 3: ITEM is the first in the list. */ fs->lru_first = item->lru_next; /* the first item prev links back to itself */ fs->lru_first->lru_prev = fs->lru_first; } /* Clear the pointers */ item->lru_prev = NULL; item->lru_next = NULL; return (GP_OK); } static int gp_filesystem_lru_free (CameraFilesystem *fs) { CameraFilesystemFile *ptr; unsigned long int size; C_PARAMS (fs && fs->lru_first); ptr = fs->lru_first; GP_LOG_D ("Freeing cached data for file '%s'...", ptr->name); /* Remove it from the list. */ fs->lru_first = ptr->lru_next; if (fs->lru_first) fs->lru_first->lru_prev = fs->lru_first; else fs->lru_last = NULL; /* Free its content. */ if (ptr->normal) { CR( gp_file_get_data_and_size (ptr->normal, NULL, &size)); fs->lru_size -= size; gp_file_unref (ptr->normal); ptr->normal = NULL; } if (ptr->raw) { CR( gp_file_get_data_and_size (ptr->raw, NULL, &size)); fs->lru_size -= size; gp_file_unref (ptr->raw); ptr->raw = NULL; } if (ptr->audio) { CR( gp_file_get_data_and_size (ptr->audio, NULL, &size)); fs->lru_size -= size; gp_file_unref (ptr->audio); ptr->audio = NULL; } ptr->lru_next = ptr->lru_prev = NULL; return (GP_OK); } static int gp_filesystem_lru_count (CameraFilesystem *fs) { CameraFilesystemFile *ptr; int count = 0; if (!fs) return 0; ptr = fs->lru_first; while (ptr) { if (ptr->normal || ptr->raw || ptr->audio) count++; ptr = ptr->lru_next; } return count; } static int gp_filesystem_lru_update (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context) { CameraFilesystemFolder *f; CameraFilesystemFile *xfile; CameraFile *oldfile = NULL; unsigned long int size; int x; char cached_images[1024]; C_PARAMS (fs && folder && file); CR (gp_file_get_data_and_size (file, NULL, &size)); /* * The following is a very simple case which is used to prune * the LRU. We keep PICTURES_TO_KEEP pictures in the LRU. * * We have 2 main scenarios: * - query all thumbnails (repeatedly) ... they are cached and * are not pruned by lru free. * - download all images, linear. no real need for caching. * - skip back 1 image (in viewers) (really? I don't know.) * * So lets just keep 2 pictures in memory. */ if (pictures_to_keep == -1) { if (gp_setting_get ("libgphoto", "cached-images", cached_images) == GP_OK) { pictures_to_keep = atoi(cached_images); } else { /* store a default setting */ sprintf (cached_images, "%d", PICTURES_TO_KEEP); gp_setting_set ("libgphoto", "cached-images", cached_images); } } if (pictures_to_keep < 0) /* also sanity check, but no upper limit. */ pictures_to_keep = PICTURES_TO_KEEP; x = gp_filesystem_lru_count (fs); while (x > pictures_to_keep) { CR (gp_filesystem_lru_free (fs)); x = gp_filesystem_lru_count (fs); } GP_LOG_D ("Adding file '%s' from folder '%s' to the fscache LRU list " "(type %i)...", filename, folder, type); /* Search folder and file */ CR (lookup_folder_file (fs, folder, filename, &f, &xfile, context)); /* * If the file is already in the lru, we first remove it. Note that * we will only remove 'normal', 'raw' and 'audio' from cache. * See gp_filesystem_lru_free. */ if (xfile->lru_prev != NULL) { switch (type) { case GP_FILE_TYPE_NORMAL: oldfile = xfile->normal; break; case GP_FILE_TYPE_RAW: oldfile = xfile->raw; break; case GP_FILE_TYPE_AUDIO: oldfile = xfile->audio; break; case GP_FILE_TYPE_PREVIEW: case GP_FILE_TYPE_EXIF: case GP_FILE_TYPE_METADATA: break; default: gp_context_error (context, _("Unknown file type %i."), type); return (GP_ERROR); } if (oldfile) { CR( gp_file_get_data_and_size (oldfile, NULL, &size)); fs->lru_size -= size; } CR (gp_filesystem_lru_remove_one (fs, xfile)); } /* Then add the file at the end of the LRU. */ if (fs->lru_first == NULL) { fs->lru_first = xfile; fs->lru_last = xfile; /* * For the first item, prev point it itself to show that the * item is in the list. */ xfile->lru_prev = xfile; } else { xfile->lru_next = NULL; xfile->lru_prev = fs->lru_last; fs->lru_last->lru_next = xfile; fs->lru_last = xfile; } CR( gp_file_get_data_and_size (file, NULL, &size)); fs->lru_size += size; GP_LOG_D ("File '%s' from folder '%s' added in fscache LRU list.", filename, folder); return (GP_OK); } static int gp_filesystem_lru_check (CameraFilesystem *fs) { int n = 0; CameraFilesystemFile *ptr, *prev; GP_LOG_D ("Checking fscache LRU list integrity..."); if (fs->lru_first == NULL) { GP_LOG_D ("fscache LRU list empty"); return (GP_OK); } ptr = prev = fs->lru_first; while (ptr != NULL) { n++; if (ptr->lru_prev != prev) { GP_LOG_E ("fscache LRU list corrupted (%i)", n); return (GP_ERROR); } prev = ptr; ptr = ptr->lru_next; } GP_LOG_D ("fscache LRU list ok with %i items (%ld bytes)", n, fs->lru_size); return (GP_OK); } /** * \brief Attach file content to a specified file. * * \param fs a #CameraFilesystem * \param folder a folder in the filesystem * \param file a #CameraFile * \param context: a #GPContext * * Tells the fs about a file. Typically, camera drivers will call this * function in case they get information about a file (i.e. preview) "for free" * on gp_camera_capture() or gp_camera_folder_list_files(). * * \return a gphoto2 error code. **/ int gp_filesystem_set_file_noop (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context) { CameraFileInfo info; CameraFilesystemFolder *f; CameraFilesystemFile *xfile; int r; time_t t; C_PARAMS (fs && folder && file); CC (context); CA (folder, context); GP_LOG_D ("Adding file '%s' to folder '%s' (type %i)...", filename, folder, type); /* Search folder and file */ CR (lookup_folder_file (fs, folder, filename, &f, &xfile, context)); /* * If we add a significant amount of data in the cache, we put (or * move) a reference to this file in the LRU linked list. We * assume that only GP_FILE_TYPE_[RAW,NORMAL,EXIF] will contain a * significant amount of data. */ if ((type == GP_FILE_TYPE_RAW) || (type == GP_FILE_TYPE_NORMAL) || (type == GP_FILE_TYPE_AUDIO)) CR (gp_filesystem_lru_update (fs, folder, filename, type, file, context)); /* Redundant sanity check. */ CR (gp_filesystem_lru_check (fs)); switch (type) { case GP_FILE_TYPE_PREVIEW: if (xfile->preview) gp_file_unref (xfile->preview); xfile->preview = file; gp_file_ref (file); break; case GP_FILE_TYPE_NORMAL: if (xfile->normal) gp_file_unref (xfile->normal); xfile->normal = file; gp_file_ref (file); break; case GP_FILE_TYPE_RAW: if (xfile->raw) gp_file_unref (xfile->raw); xfile->raw = file; gp_file_ref (file); break; case GP_FILE_TYPE_AUDIO: if (xfile->audio) gp_file_unref (xfile->audio); xfile->audio = file; gp_file_ref (file); break; case GP_FILE_TYPE_EXIF: if (xfile->exif) gp_file_unref (xfile->exif); xfile->exif = file; gp_file_ref (file); break; case GP_FILE_TYPE_METADATA: if (xfile->metadata) gp_file_unref (xfile->metadata); xfile->metadata = file; gp_file_ref (file); break; default: gp_context_error (context, _("Unknown file type %i."), type); return (GP_ERROR); } /* * If we didn't get a mtime, try to get it from the CameraFileInfo. */ CR (gp_file_get_mtime (file, &t)); if (!t) { GP_LOG_D ("File does not contain mtime. Trying information on the file..."); r = gp_filesystem_get_info (fs, folder, filename, &info, NULL); if ((r == GP_OK) && (info.file.fields & GP_FILE_INFO_MTIME)) t = info.file.mtime; } /* * If we still don't have the mtime and this is a normal * file, check if there is EXIF data in the file that contains * information on the mtime. */ #ifdef HAVE_LIBEXIF if (!t && (type == GP_FILE_TYPE_NORMAL)) { unsigned long int size; const char *data; GP_LOG_D ("Searching data for mtime..."); CR (gp_file_get_data_and_size (file, NULL, &size)); if (size < 32*1024*1024) { /* just assume stuff above 32MB is not EXIF capable */ CR (gp_file_get_data_and_size (file, &data, &size)); t = get_exif_mtime ((unsigned char*)data, size); } } /* * Still no mtime? Let's see if the camera offers us data of type * GP_FILE_TYPE_EXIF that includes information on the mtime. */ if (!t) { GP_LOG_D ("Trying EXIF information..."); t = gp_filesystem_get_exif_mtime (fs, folder, filename); } #endif if (t) CR (gp_file_set_mtime (file, t)); return (GP_OK); } /** * \brief Store the file information in the virtual fs * \param fs a #CameraFilesystem * \param folder the foldername * \param info the #CameraFileInfo to store * \param context a #GPContext * * In contrast to #gp_filesystem_set_info, #gp_filesystem_set_info_noop * will only change the file information in the fs. Typically, camera * drivers will use this function in case they get file information "for free" * on #gp_camera_capture or #gp_camera_folder_list_files. * * \return a gphoto2 error code **/ int gp_filesystem_set_info_noop (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo info, GPContext *context) { CameraFilesystemFolder *f; CameraFilesystemFile *xfile; C_PARAMS (fs && folder); CC (context); CA (folder, context); /* Search folder and file */ CR (lookup_folder_file (fs, folder, filename, &f, &xfile, context)); memcpy (&xfile->info, &info, sizeof (CameraFileInfo)); xfile->info_dirty = 0; return (GP_OK); } /** * \brief Set information about a file * \param fs a #CameraFilesystem * \param folder foldername where the file resides * \param filename the files name * \param info the #CameraFileInfo to set * \param context a #GPContext * * Sets information about a file in the camera. * * \return a gphoto2 error code. **/ int gp_filesystem_set_info (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo info, GPContext *context) { int result; CameraFilesystemFolder *f; CameraFilesystemFile *xfile; C_PARAMS (fs && folder && filename); CC (context); CA (folder, context); if (!fs->set_info_func) { gp_context_error (context, _("The filesystem doesn't support setting file " "information")); return (GP_ERROR_NOT_SUPPORTED); } /* Search folder and file */ CR (lookup_folder_file (fs, folder, filename, &f, &xfile, context)); /* Check if people want to set read-only attributes */ if ((info.file.fields & GP_FILE_INFO_TYPE) || (info.file.fields & GP_FILE_INFO_SIZE) || (info.file.fields & GP_FILE_INFO_WIDTH) || (info.file.fields & GP_FILE_INFO_HEIGHT) || (info.file.fields & GP_FILE_INFO_STATUS) || (info.preview.fields & GP_FILE_INFO_TYPE) || (info.preview.fields & GP_FILE_INFO_SIZE) || (info.preview.fields & GP_FILE_INFO_WIDTH) || (info.preview.fields & GP_FILE_INFO_HEIGHT) || (info.preview.fields & GP_FILE_INFO_STATUS) || (info.audio.fields & GP_FILE_INFO_TYPE) || (info.audio.fields & GP_FILE_INFO_SIZE) || (info.audio.fields & GP_FILE_INFO_STATUS)) { gp_context_error (context, _("Read-only file attributes " "like width and height can not be changed.")); return (GP_ERROR_BAD_PARAMETERS); } /* * Set the info. If anything goes wrong, mark info as dirty, * because the operation could have been partially successful. */ result = fs->set_info_func (fs, folder, filename, info, fs->data, context); if (result < 0) { xfile->info_dirty = 1; return (result); } if (info.file.fields & GP_FILE_INFO_PERMISSIONS) xfile->info.file.permissions = info.file.permissions; return (GP_OK); } /** * \brief Get the storage information about this filesystem * \param fs the filesystem * \param storageinfo Pointer to receive a pointer to/array of storage info items * \param nrofstorageinfos Pointer to receive number of array entries * \param context a #GPContext * * This function is only called from gp_camera_get_storageinfo(). You may * want to make sure this information is consistent with the information on * gp_camera_get_storageinfo(). * * Retrieves the storage information, like maximum and free space, for * the specified filesystem, if supported by the device. The storage * information is returned in an newly allocated array of * #CameraStorageInformation objects, to which the pointer pointed to * by #storageinfo will be set. * * The variable pointed to by #nrofstorageinfos will be set to the * number of elements in that array. * * It is the caller's responsibility to free the memory of the array. * * \return a gphoto error code **/ int gp_filesystem_get_storageinfo ( CameraFilesystem *fs, CameraStorageInformation **storageinfo, int *nrofstorageinfos, GPContext *context ) { C_PARAMS (fs && storageinfo && nrofstorageinfos); CC (context); if (!fs->storage_info_func) { gp_context_error (context, _("The filesystem doesn't support getting storage " "information")); return (GP_ERROR_NOT_SUPPORTED); } return fs->storage_info_func (fs, storageinfo, nrofstorageinfos, fs->data, context); } libgphoto2-2.5.9/libgphoto2/jpeg.c0000644000175000001440000003106512610415536013667 00000000000000/** \file * \author This code was written by Nathan Stenzel for gphoto * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include "jpeg.h" #include #include #include #include /* call example:nullpictureabort(picture,"Picture",0); */ #define nullpointerabort(pointer,name,val) \ if (pointer==NULL) { printf(name " does not exist\n"); return val; } /* call example:nullpictureabortvoid(picture,"Picture"); */ #define nullpointerabortvoid(pointer,name) \ if (pointer==NULL) { printf(name " does not exist\n"); return; } #define CHECK_RESULT(result) {int r = (result); if (r < 0) return (r);} /* Determine the number of elements in an array. */ #define countof(array) (sizeof(array) / sizeof((array)[0])) const jpegmarker JPEG_MARKERS[] = { JPEG_START, JPEG_COMMENT, JPEG_APPO, JPEG_QUANTIZATION, JPEG_HUFFMAN, JPEG_SOFC0, JPEG_SSSEAHAL, JPEG_EOI }; const char *JPEG_MARKERNAMES[] = { "Start", "Comment", "APPO", "Quantization table", "Huffman table", "SOFC0", "SsSeAhAl", "End of image" }; chunk *gpi_jpeg_chunk_new(int length) { chunk *mychunk; printf("Entered gpi_jpeg_chunk_new\n"); mychunk = (chunk *) malloc(sizeof(chunk)); if (mychunk==NULL) { printf("Failed to allocate new chunk!\n"); return NULL; } mychunk->size=length; /* printf("New chunk of size %i\n", mychunk->size); */ mychunk->data = malloc(length); return mychunk; } chunk *gpi_jpeg_chunk_new_filled(int length, char *data) { chunk *mychunk; printf("Entered gpi_jpeg_chunk_new_filled\n"); mychunk = gpi_jpeg_chunk_new(length); if (!mychunk) return NULL; printf("Filling the chunk data via chunk_new_filled\n"); memcpy(mychunk->data, data, length); return mychunk; } void gpi_jpeg_chunk_destroy(chunk *mychunk) { nullpointerabortvoid(mychunk, "Chunk"); mychunk->size=0; free(mychunk->data); free(mychunk); } void gpi_jpeg_chunk_print(chunk *mychunk) { int x; /* printf("Size=%i\n", mychunk->size); */ nullpointerabortvoid(mychunk, "Chunk"); for (x=0; xsize; x++) printf("%hX ", mychunk->data[x]); printf("\n"); } char gpi_jpeg_findff(int *location, chunk *picture) { /* printf("Entered jpeg_findamarker!!!!!!\n"); */ nullpointerabort(picture, "Picture",0); while(*locationsize) { /* printf("%hX ",picture->data[*location]); */ if (picture->data[*location]==0xff) { /* printf("return success!\n"); */ return 1; } (*location)++; } /* printf("return failure!\n"); */ return 0; } char gpi_jpeg_findactivemarker(char *id, int *location, chunk *picture) { /* printf("Entered gpi_jpeg_findactivemarker!!!!!!!!\n"); */ nullpointerabort(picture, "Picture",0); while(gpi_jpeg_findff(location, picture) && ((*location+1)size)) if (picture->data[*location+1]) { *id=picture->data[*location+1]; return 1; } return 0; } char *gpi_jpeg_markername(unsigned int c) { unsigned int x; /* printf("searching for marker %X in list\n",c); */ /* printf("%i\n", sizeof(markers)); */ for (x=0; xcount=0; return temp; } void gpi_jpeg_destroy(jpeg *myjpeg) { int count; for (count=0; countcount; count++) gpi_jpeg_chunk_destroy(myjpeg->marker[count]); myjpeg->count=0; free(myjpeg); } void gpi_jpeg_add_marker(jpeg *myjpeg, chunk *picture, int start, int end) { int length; nullpointerabortvoid(picture, "Picture"); length=(int)(end-start+1); /* printf("Add marker #%i starting from %i and ending at %i for a length of %i\n", myjpeg->count, start, end, length); */ myjpeg->marker[myjpeg->count] = gpi_jpeg_chunk_new(length); if (!myjpeg->marker[myjpeg->count]) return; /* printf("Read length is: %i\n", myjpeg->marker[myjpeg->count].size); */ memcpy(myjpeg->marker[myjpeg->count]->data, picture->data+start, length); gpi_jpeg_chunk_print(myjpeg->marker[myjpeg->count]); myjpeg->count++; } void gpi_jpeg_add_chunk(jpeg *myjpeg, chunk *source) { /* Warning! This points to the added chunk instead of deleting it! */ printf("Entered gpi_jpeg_add_chunk\n"); nullpointerabortvoid(source, "Chunk to add"); myjpeg->marker[myjpeg->count]=source; myjpeg->count++; } void gpi_jpeg_parse(jpeg *myjpeg, chunk *picture) { int position=0; int lastposition; char id; nullpointerabortvoid(picture,"Picture"); if (picture->data[0]!=0xff) { gpi_jpeg_findactivemarker(&id, &position, picture); gpi_jpeg_add_marker(myjpeg,picture,0,position-1); lastposition=position; position++; } else { lastposition=position; position+=2; gpi_jpeg_findactivemarker(&id, &position, picture); gpi_jpeg_add_marker(myjpeg,picture,0,position-1); lastposition=position; position+=2; } while (positionsize) { gpi_jpeg_findactivemarker(&id, &position, picture); gpi_jpeg_add_marker(myjpeg,picture,lastposition,position-1); lastposition=position; position+=2; } position-=2; if (positionsize) gpi_jpeg_add_marker(myjpeg,picture,lastposition,picture->size-1); } void gpi_jpeg_print(jpeg *myjpeg) { int c; printf("There are %i markers\n", myjpeg->count); for (c=0; c < myjpeg->count; c++) { printf("%s:\n",gpi_jpeg_markername(myjpeg->marker[c]->data[1])); gpi_jpeg_chunk_print(myjpeg->marker[c]); } } chunk *gpi_jpeg_make_start() /* also makes the JFIF marker */ { chunk *temp; /* Start marker and JFIF APPO Marker:Version 1.01, density 1x2 (the 00 01 00 02) */ temp = gpi_jpeg_chunk_new_filled(20, "\xFF\xD8" "\xFF\xE0\x00\x10\x4A\x46\x49\x46" "\x00\x01\x01\x00\x00\x01\x00\x02" "\x00\x00"); return temp; } chunk *gpi_jpeg_make_SOFC (int width, int height, char vh1, char vh2, char vh3, char q1, char q2, char q3) { chunk *target; char sofc_data[]={ 0xFF, 0xC0, 0x00, 0x11, 0x08, 0x00, 0x80, 0x01, 0x40, 0x03, 0x01, 0x11, 0x00, 0x02, 0x21, 0x01, 0x03, 0x11, 0x00 }; target = gpi_jpeg_chunk_new(sizeof(sofc_data)); if (target==NULL) { printf("New SOFC failed allocation\n"); return target; } memcpy(target->data, sofc_data, sizeof(sofc_data)); target->data[5] = (height&0xff00) >> 8; target->data[6] = height&0xff; target->data[7] = (width&0xff00) >> 8; target->data[8] = width&0xff; target->data[11]= vh1; target->data[12]= q1; target->data[14]= vh2; target->data[15]= q2; target->data[17]= vh3; target->data[18]= q3; return target; } chunk *gpi_jpeg_makeSsSeAhAl(int huffset1, int huffset2, int huffset3) { chunk *target; printf("About to call gpi_jpeg_chunk_new_filled\n"); target= gpi_jpeg_chunk_new_filled(14, "\xFF\xDA\x00\x0C\x03\x01\x00\x02" "\x00\x03\x00\x00\x3F\x00"); if (!target) return NULL; target->data[6] = huffset1; target->data[8] = huffset2; target->data[10] = huffset3; return target; } void gpi_jpeg_print_quantization_table(jpeg_quantization_table *table) { int x; nullpointerabortvoid(table, "Quantization table"); for (x=0; x<64; x++) { if (x && ((x%8)==0)) { printf("\n"); } printf("%3i ", (*table)[x]); } printf("\n"); } chunk *gpi_jpeg_make_quantization(const jpeg_quantization_table *table, char number) { chunk *temp; char x,y,z,c; temp = gpi_jpeg_chunk_new(5+64); if (!temp) return NULL; memcpy(temp->data, "\xFF\xDB\x00\x43\x01", 5); temp->data[4]=number; for (c=z=0; z<8; z++) if (z%2) for (y=0,x=z; y<=z; x--,y++) { temp->data[5+c] = (*table)[x+y*8]; temp->data[5+63-c++] = (*table)[63-x-y*8]; } else for (x=0,y=z; x<=z; x++,y--) { temp->data[5+c] = (*table)[x+y*8]; temp->data[5+63-c++] = (*table)[63-x-y*8]; } return temp; } jpeg_quantization_table *gpi_jpeg_quantization2table(chunk *qmarker) { char x,y,z,c; jpeg_quantization_table *table; table = (jpeg_quantization_table *)malloc(64); for (c=z=0; z<8; z++) if (z%2) for (y=0,x=z; y<=z; x--,y++) { (*table)[63-x-y*8] = qmarker->data[5+63-c]; (*table)[x+y*8] = qmarker->data[5+c++]; } else for (x=0,y=z; x<=z; x++,y--) { (*table)[63-x-y*8] = qmarker->data[5+63-c]; (*table)[x+y*8] = qmarker->data[5+c++]; } return table; } jpeg *gpi_jpeg_header(int width, int height, char vh1, char vh2, char vh3, char q1, char q2, char q3, const jpeg_quantization_table *quant1, const jpeg_quantization_table *quant2, char huffset1, char huffset2, char huffset3, chunk *huff1, chunk *huff2, chunk *huff3, chunk *huff4) { jpeg *temp; temp = gpi_jpeg_new(); gpi_jpeg_add_chunk(temp, gpi_jpeg_make_start()); gpi_jpeg_add_chunk(temp, gpi_jpeg_make_quantization(quant1, 0)); gpi_jpeg_add_chunk(temp, gpi_jpeg_make_quantization(quant2, 1)); gpi_jpeg_add_chunk(temp, gpi_jpeg_make_SOFC(width,height, vh1,vh2,vh3, q1,q2,q3)); gpi_jpeg_add_chunk(temp, huff1); gpi_jpeg_add_chunk(temp, huff2); gpi_jpeg_add_chunk(temp, huff3); gpi_jpeg_add_chunk(temp, huff4); printf("About to make and add the SsSeAhAl marker\n"); gpi_jpeg_add_chunk(temp, gpi_jpeg_makeSsSeAhAl(huffset1, huffset2, huffset3)); return temp; } /*#define TESTING_JPEG_C */ #ifndef TESTING_JPEG_C char gpi_jpeg_write(CameraFile *file, const char *filename, jpeg *myjpeg) { int x; CHECK_RESULT (gp_file_set_name (file, filename)); CHECK_RESULT (gp_file_set_mime_type(file, GP_MIME_JPEG)); for (x=0; xcount; x++) CHECK_RESULT (gp_file_append(file, (char*)myjpeg->marker[x]->data, myjpeg->marker[x]->size)); return 1; } #endif #ifdef TESTING_JPEG_C /* TEST CODE SECTION */ char testdata[] ={ 0xFF,0xD8, 0xFF,0xE0, 0xff,0xDB, 0xFF,0xC4, 0xFF,0xDA, 0xFF,0xC0, 0xff,0xff}; jpeg_quantization_table mytable = { 2, 3, 4, 5, 6, 7, 8, 9, 3, 4, 5, 6, 7, 8, 9, 10, 4, 5, 6, 7, 8, 9, 10, 11, 5, 6, 7, 8, 9, 10, 11, 12, 6, 7, 8, 9, 10, 11, 12, 13, 7, 8, 9, 10, 11, 12, 13, 14, 8, 9, 10, 11, 12, 13, 14, 15, 9, 10, 11, 12, 13, 14, 15, 16}; int main() { chunk *picture; jpeg *myjpeg; char id; int location=0,x; printf("Print the test quantization table\n"); gpi_jpeg_print_quantization_table(&mytable); myjpeg = gpi_jpeg_new(); picture = gpi_jpeg_chunk_new(sizeof(testdata)); picture->data=testdata; picture->size=sizeof(testdata); printf("testdata size is %i\n",picture->size); gpi_jpeg_chunk_print(picture); printf("Call jpeg_parse!!!!!!!!!!!!!!!!!!!!!!!\n"); gpi_jpeg_parse(myjpeg,picture); printf("\nPrint the jpeg table\n"); gpi_jpeg_print(myjpeg); printf("\nCall gpi_jpeg_destroy\n"); gpi_jpeg_destroy(myjpeg); /* You can't call gpi_jpeg_chunk_destroy because testdata is a constant. * Since picture->data points to it, it would segfault. */ free(picture); printf("gpi_jpeg_chunk_new and gpi_jpeg_chunk_destroy tests\n"); picture = gpi_jpeg_chunk_new(10); for (x=0; x<10; x++) picture->data[x]=x; for (x=0; x<10; x++) printf("%hX ",picture->data[x]); gpi_jpeg_chunk_destroy(picture); printf("\n"); } #endif libgphoto2-2.5.9/libgphoto2/ahd_bayer.c0000644000175000001440000005004512610415536014657 00000000000000/** \file ahd_bayer.c * * \brief Adaptive Homogeneity-Directed Bayer array conversion routine. * * \author Copyright March 12, 2008 Theodore Kilgore * * \par * gp_ahd_interpolate() from Eero Salminen * and Theodore Kilgore. The work of Eero Salminen is for partial completion * of a Diploma in Information and Computer Science, * Helsinki University of Technology, Finland. * * \par * The algorithm is based upon the paper * * \par * Adaptive Homogeneity-Directed Democsaicing Algoritm, * Keigo Hirakawa and Thomas W. Parks, presented in the * IEEE Transactions on Image Processing, vol. 14, no. 3, March 2005. * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include #include #include #include #include #include "config.h" #include "bayer.h" #include #include #define MAX(x,y) ((x < y) ? (y) : (x)) #define MIN(x,y) ((x > y) ? (y) : (x)) #define CLAMP(x) MAX(MIN(x,0xff),0) #define RED 0 #define GREEN 1 #define BLUE 2 static int dRGB(int i1, int i2, unsigned char *RGB); static int do_rb_ctr_row(unsigned char *image_h, unsigned char *image_v, int w, int h, int y, int *pos_code); static int do_green_ctr_row(unsigned char *image, unsigned char *image_h, unsigned char *image_v, int w, int h, int y, int *pos_code); static int get_diffs_row2(unsigned char * hom_buffer_h, unsigned char *hom_buffer_v, unsigned char * buffer_h, unsigned char *buffer_v, int w); #define AD(x, y, w) ((y)*(w)*3+3*(x)) /** * \brief This function computes distance^2 between two sets of pixel data. * \param i1 location of a pixel * \param i2 location of another pixel * \param RGB some RGB data. */ static int dRGB(int i1, int i2, unsigned char *RGB) { int dR,dG,dB; dR=RGB[i1+RED]-RGB[i2+RED]; dG=RGB[i1+GREEN]-RGB[i2+GREEN]; dB=RGB[i1+BLUE]-RGB[i2+BLUE]; return dR*dR+dG*dG+dB*dB; } /** * \brief Missing reds and/or blues are reconstructed on a single row * \param image_h three-row window, horizontal interpolation of row 1 is done * \param image_v three-row window, vertical interpolation of row 1 is done * \param w width of image * \param h height of image. * \param y row number from image which is under construction * \param pos_code position code related to Bayer tiling in use */ static int do_rb_ctr_row(unsigned char *image_h, unsigned char *image_v, int w, int h, int y, int *pos_code) { int x, bayer; int value,value2,div,color; /* * pos_code[0] = red. green lrtb, blue diagonals * pos_code[1] = green. red lr, blue tb * pos_code[2] = green. blue lr, red tb * pos_code[3] = blue. green lrtb, red diagonals * * The Red channel reconstruction is R=G+L(Rs-Gs), in which * G = interpolated & known Green * Rs = known Red * Gs = values of G at the positions of Rs * L()= should be a 2D lowpass filter, now we'll check * them from a 3x3 square * L-functions' convolution matrix is * [1/4 1/2 1/4;1/2 1 1/2; 1/4 1/2 1/4] * * The Blue channel reconstruction uses exactly the same methods. */ for (x = 0; x < w; x++) { bayer = (x&1?0:1) + (y&1?0:2); for (color=0; color < 3; color+=2) { if ((color==RED && bayer == pos_code[3]) || (color==BLUE && bayer == pos_code[0])) { value=value2=div=0; if (x > 0 && y > 0) { value += image_h[AD(x-1,0,w)+color] -image_h[AD(x-1,0,w)+GREEN]; value2+= image_v[AD(x-1,0,w)+color] -image_v[AD(x-1,0,w)+GREEN]; div++; } if (x > 0 && y < h-1) { value += image_h[AD(x-1,2,w)+color] -image_h[AD(x-1,2,w)+GREEN]; value2+= image_v[AD(x-1,2,w)+color] -image_v[AD(x-1,2,w)+GREEN]; div++; } if (x < w-1 && y > 0) { value += image_h[AD(x+1,0,w)+color] -image_h[AD(x+1,0,w)+GREEN]; value2+= image_v[AD(x+1,0,w)+color] -image_v[AD(x+1,0,w)+GREEN]; div++; } if (x < w-1 && y < h-1) { value += image_h[AD(x+1,2,w)+color] -image_h[AD(x+1,2,w)+GREEN]; value2+= image_v[AD(x+1,2,w)+color] -image_v[AD(x+1,2,w)+GREEN]; div++; } image_h[AD(x,1,w)+color]= CLAMP( image_h[AD(x,1,w)+GREEN] +value/div); image_v[AD(x,1,w)+color]= CLAMP(image_v[AD(x,1,w)+GREEN] +value2/div); } else if ((color==RED && bayer == pos_code[2]) || (color==BLUE && bayer == pos_code[1])) { value=value2=div=0; if (y > 0) { value += image_h[AD(x,0,w)+color] -image_h[AD(x,0,w)+GREEN]; value2+= image_v[AD(x,0,w)+color] -image_v[AD(x,0,w)+GREEN]; div++; } if (y < h-1) { value += image_h[AD(x,2,w)+color] -image_h[AD(x,2,w)+GREEN]; value2+= image_v[AD(x,2,w)+color] -image_v[AD(x,2,w)+GREEN]; div++; } image_h[AD(x,1,w)+color]= CLAMP( image_h[AD(x,1,w)+GREEN] +value/div); image_v[AD(x,1,w)+color]= CLAMP( image_v[AD(x,1,w)+GREEN] +value2/div); } else if ((color==RED && bayer == pos_code[1]) || (color==BLUE && bayer == pos_code[2])) { value=value2=div=0; if (x > 0) { value += image_h[AD(x-1,1,w)+color] -image_h[AD(x-1,1,w)+GREEN]; value2+= image_v[AD(x-1,1,w)+color] -image_v[AD(x-1,1,w)+GREEN]; div++; } if (x < w-1) { value += image_h[AD(x+1,1,w)+color] -image_h[AD(x+1,1,w)+GREEN]; value2+= image_v[AD(x+1,1,w)+color] -image_v[AD(x+1,1,w)+GREEN]; div++; } image_h[AD(x,1,w)+color]= CLAMP( image_h[AD(x,1,w)+GREEN] +value/div); image_v[AD(x,1,w)+color]= CLAMP( image_v[AD(x,1,w)+GREEN] +value2/div); } } } return GP_OK; } /** * \brief Missing greens are reconstructed on a single row * \param image the image which is being reconstructed * \param image_h three-row window, horizontal interpolation of row 1 is done * \param image_v three-row window, vertical interpolation of row 1 is done * \param w width of image * \param h height of image. * \param y row number from image which is under construction * \param pos_code position code related to Bayer tiling in use */ static int do_green_ctr_row(unsigned char *image, unsigned char *image_h, unsigned char *image_v, int w, int h, int y, int *pos_code) { int x, bayer; int value,div; /* * The horizontal green estimation on a red-green row is * G(x) = (2*R(x)+2*G(x+1)+2*G(x-1)-R(x-2)-R(x+2))/4 * The estimation on a green-blue row works in the same * way. */ for (x = 0; x < w; x++) { bayer = (x&1?0:1) + (y&1?0:2); /* pos_code[0] = red. green lrtb, blue diagonals */ /* pos_code[3] = blue. green lrtb, red diagonals */ if ( bayer == pos_code[0] || bayer == pos_code[3]) { div=value=0; if (bayer==pos_code[0]) value += 2*image[AD(x,y,w)+RED]; else value += 2*image[AD(x,y,w)+BLUE]; div+=2; if (x < (w-1)) { value += 2*image[AD(x+1,y,w)+GREEN]; div+=2; } if (x < (w-2)) { if (bayer==pos_code[0]) value -= image[AD(x+2,y,w)+RED]; else value -= image[AD(x+2,y,w)+BLUE]; div--; } if (x > 0) { value += 2*image[AD(x-1,y,w)+GREEN]; div+=2; } if (x > 1) { if (bayer==pos_code[0]) value -= image[AD(x-2,y,w)+RED]; else value -= image[AD(x-2,y,w)+BLUE]; div--; } image_h[AD(x,1,w)+GREEN] = CLAMP(value / div); /* The method for vertical estimation is just like * what is done for horizontal estimation, with only * the obvious difference that it is done vertically. */ div=value=0; if (bayer==pos_code[0]) value += 2*image[AD(x,y,w)+RED]; else value += 2*image[AD(x,y,w)+BLUE]; div+=2; if (y < (h-1)) { value += 2*image[AD(x,y+1,w)+GREEN]; div+=2; } if (y < (h-2)) { if (bayer==pos_code[0]) value -= image[AD(x,y+2,w)+RED]; else value -= image[AD(x,y+2,w)+BLUE]; div--; } if (y > 0) { value += 2*image[AD(x,y-1,w)+GREEN]; div+=2; } if (y > 1) { if (bayer==pos_code[0]) value -= image[AD(x,y-2,w)+RED]; else value -= image[AD(x,y-2,w)+BLUE]; div--; } image_v[AD(x,1,w)+GREEN] = CLAMP(value / div); } } return GP_OK; } /** * \brief Differences are assigned scores across row 2 of buffer_v, buffer_h * \param hom_buffer_h tabulation of scores for buffer_h * \param hom_buffer_v tabulation of scores for buffer_v * \param buffer_h three-row window, scores assigned for pixels in row 2 * \param buffer_v three-row window, scores assigned for pixels in row 2 * \param w pixel width of image and buffers */ static int get_diffs_row2(unsigned char * hom_buffer_h, unsigned char *hom_buffer_v, unsigned char * buffer_h, unsigned char *buffer_v, int w) { int i,j; int RGBeps; unsigned char Usize_h, Usize_v; for (j = 1; j < w-1; j++) { i=3*j+9*w; Usize_h=0; Usize_v=0; /* * Data collected here for adaptive estimates. First we take * at the given pixel vertical diffs if working in window_v; * left and right diffs if working in window_h. We then choose * of these two diffs as a permissible epsilon-radius within * which to work. Checking within this radius, we will * compute scores for the various possibilities. The score * added in each step is either 1, if the directional change * is within the prescribed epsilon, or 0 if it is not. */ RGBeps=MIN( MAX(dRGB(i,i-3,buffer_h),dRGB(i,i+3,buffer_h)), MAX(dRGB(i,i-3*w,buffer_v),dRGB(i,i+3*w,buffer_v)) ); /* * The scores for the homogeneity mapping. These will be used * in the choice algorithm to choose the best value. */ if (dRGB(i,i-3,buffer_h) <= RGBeps) Usize_h++; if (dRGB(i,i-3,buffer_v) <= RGBeps) Usize_v++; if (dRGB(i,i+3,buffer_h) <= RGBeps) Usize_h++; if (dRGB(i,i+3,buffer_v) <= RGBeps) Usize_v++; if (dRGB(i,i-3*w,buffer_h)<= RGBeps) Usize_h++; if (dRGB(i,i-3*w,buffer_v) <= RGBeps) Usize_v++; if (dRGB(i,i+3*w,buffer_h) <= RGBeps) Usize_h++; if (dRGB(i,i+3*w,buffer_v) <= RGBeps) Usize_v++; hom_buffer_h[j+2*w]=Usize_h; hom_buffer_v[j+2*w]=Usize_v; } return GP_OK; } /** * \brief Interpolate a expanded bayer array into an RGB image. * * \param image the linear RGB array as both input and output * \param w width of the above array * \param h height of the above array * \param tile how the 2x2 bayer array is layed out * * This function interpolates a bayer array which has been pre-expanded * by gp_bayer_expand() to an RGB image. It applies the method of adaptive * homogeneity-directed demosaicing. * * \return a gphoto error code * * \par * In outline, the interpolation algorithm used here does the * following: * * \par * In principle, the first thing which is done is to split off from the * image two copies. In one of these, interpolation will be done in the * vertical direction only, and in the other copy only in the * horizontal direction. "Cross-color" data is used throughout, on the * principle that it can be used as a corrector for brightness even if it is * derived from the "wrong" color. Finally, at each pixel there is a choice * criterion to decide whether to use the result of the vertical * interpolation, the horizontal interpolation, or an average of the two. * * \par * Memory use and speed are optimized by using two sliding windows, one * for the vertical interpolation and the other for the horizontal * interpolation instead of using two copies of the entire input image. The * nterpolation and the choice algorithm are then implemented entirely within * these windows, too. When this has been done, a completed row is written back * to the image. Then the windows are moved, and the process repeats. */ int gp_ahd_interpolate (unsigned char *image, int w, int h, BayerTile tile) { int i, j, k, x, y; int p[4]; int color; unsigned char *window_h, *window_v, *cur_window_h, *cur_window_v; unsigned char *homo_h, *homo_v; unsigned char *homo_ch, *homo_cv; window_h = calloc (w * 18, 1); window_v = calloc (w * 18, 1); homo_h = calloc (w*3, 1); homo_v = calloc (w*3, 1); homo_ch = calloc (w, 1); homo_cv = calloc (w, 1); if (!window_h || !window_v || !homo_h || !homo_v || !homo_ch || !homo_cv) { free (window_h); free (window_v); free (homo_h); free (homo_v); free (homo_ch); free (homo_cv); GP_LOG_E ("Out of memory"); return GP_ERROR_NO_MEMORY; } switch (tile) { default: case BAYER_TILE_RGGB: case BAYER_TILE_RGGB_INTERLACED: p[0] = 0; p[1] = 1; p[2] = 2; p[3] = 3; break; case BAYER_TILE_GRBG: case BAYER_TILE_GRBG_INTERLACED: p[0] = 1; p[1] = 0; p[2] = 3; p[3] = 2; break; case BAYER_TILE_BGGR: case BAYER_TILE_BGGR_INTERLACED: p[0] = 3; p[1] = 2; p[2] = 1; p[3] = 0; break; case BAYER_TILE_GBRG: case BAYER_TILE_GBRG_INTERLACED: p[0] = 2; p[1] = 3; p[2] = 0; p[3] = 1; break; } /* * Once the algorithm is initialized and running, one cycle of the * algorithm can be described thus: * * Step 1 * Write from row y+3 of the image to row 5 in window_v and in * window_h. * * Step 2 * Interpolate missing green data on row 5 in each window. Data from * the image only is needed for this, not data from the windows. * * Step 3 * Now interpolate the missing red or blue data on row 4 in both * windows. We need to do this inside the windows; what is required * is the real or interpolated green data from rows 3 and 5, and the * real data on rows 3 and 5 about the color being interpolated on * row 4, so all of this information is available in the two windows. * Note that for this operation we are interpolating the center row * of cur_window_v and cur_window_h. * * Step 4 * Now we have five completed rows in each window, 0 through 4 (rows * 0 - 3 having been done in previous cycles). Completed rows 0 - 4 * are what is required in order to run the choice algorithm at * each pixel location across row 2, to decide whether to choose the * data for that pixel from window_v or from window_h. We run the * choice algorithm, sending the data from row 2 over to row y of the * image, pixel by pixel. * * Step 5 * Move the windows down (or the data in them up) by one row. * Increment y, the row counter for the image. Go to Step 1. * * Initialization of the algorithm clearly requires some special * steps, which are described below as they occur. */ cur_window_h = window_h+9*w; cur_window_v = window_v+9*w; /* * Getting started. Copy row 0 from image to line 4 of windows * and row 1 from image to line 5 of windows. */ memcpy (window_h+12*w, image, 6*w); memcpy (window_v+12*w, image, 6*w); /* * Now do the green interpolation in row 4 of the windows, the * "center" row of cur_window_v and _h, with the help of image row 0 * and image row 1. */ do_green_ctr_row(image, cur_window_h, cur_window_v, w, h, 0, p); /* this does the green interpolation in row 5 of the windows */ do_green_ctr_row(image, cur_window_h+3*w, cur_window_v+3*w, w, h, 1, p); /* * we are now ready to do the rb interpolation on row 4 of the * windows, which relates to row 0 of the image. */ do_rb_ctr_row(cur_window_h, cur_window_v, w, h, 0, p); /* * Row row 4, which will be mapped to image row 0, is finished in both * windows. Row 5 has had only the green interpolation. */ memmove(window_h, window_h+3*w,15*w); memmove(window_v, window_v+3*w,15*w); memcpy (window_h+15*w, image+6*w, 3*w); memcpy (window_v+15*w, image+6*w, 3*w); /* * now we have shifted backwards and we have row 0 of the image in * row 3 of the windows. Row 4 of the window contains row 1 of image * and needs the rb interpolation. We have copied row 2 of the image * into row 5 of the windows and need to do green interpolation. */ do_green_ctr_row(image, cur_window_h+3*w, cur_window_v+3*w, w, h, 2, p); do_rb_ctr_row(cur_window_h, cur_window_v, w, h, 1, p); memmove (window_h, window_h+3*w, 15*w); memmove(window_v, window_v+3*w,15*w); /* * We have shifted one more time. Row 2 of the two windows is * the original row 0 of the image, now fully interpolated. Rows 3 * and 4 of the windows contain the original rows 1 and 2 of the * image, also fully interpolated. They will be used while applying * the choice algorithm on row 2, in order to write it back to row * 0 of the image. The algorithm is now fully initialized. We enter * the loop which will complete the algorithm for the whole image. */ for (y = 0; y < h; y++) { if(y homo_cv[x]) image[3*y*w+3*x+color] = window_h[3*x+6*w+color]; else if (homo_ch[x] < homo_cv[x]) image[3*y*w+3*x+color] = window_v[3*x+6*w+color]; else image[3*y*w+3*x+color] = (window_v[3*x+6*w+color]+ window_h[3*x+6*w+color])/2; } } /* Move the windows; loop back if not finished. */ memmove(window_v, window_v+3*w, 15*w); memmove(window_h, window_h+3*w, 15*w); memmove (homo_h,homo_h+w,2*w); memmove (homo_v,homo_v+w,2*w); } free(window_v); free(window_h); free(homo_h); free(homo_v); free(homo_ch); free(homo_cv); return GP_OK; } /** * \brief Convert a bayer raster style image to a RGB raster. * * \param input the bayer CCD array as linear input * \param w width of the above array * \param h height of the above array * \param output RGB output array (linear, 3 bytes of R,G,B for every pixel) * \param tile how the 2x2 bayer array is layed out * * A regular CCD uses a raster of 2 green, 1 blue and 1 red components to * cover a 2x2 pixel area. The camera or the driver then interpolates a * 2x2 RGB pixel set out of this data. * * This function expands and interpolates the bayer array to 3 times larger * bitmap with RGB values interpolated. It does the same job as * gp_bayer_decode() but it calls gp_ahd_interpolate() instead of calling * gp_bayer_interpolate(). Use this instead of gp_bayer_decode() if you * want to use or to test AHD interpolation in a camera library. * \return a gphoto error code */ int gp_ahd_decode (unsigned char *input, int w, int h, unsigned char *output, BayerTile tile) { gp_bayer_expand (input, w, h, output, tile); gp_ahd_interpolate (output, w, h, tile); return GP_OK; } libgphoto2-2.5.9/libgphoto2/gphoto2-file.c0000644000175000001440000006461312610415620015240 00000000000000/** \file * * \author Copyright 2000 Scott Fritzinger * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * \note * This file contains internal functions. Use of these functions from * external software modules is considered deprecated. */ #define _POSIX_SOURCE #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #define CHECK_RESULT(result) {int r = (result); if (r < 0) return (r);} /* lengt of one path component */ #ifndef MAX_PATH # define MAX_PATH 256 #endif /*! The internals of the CameraFile struct are private. * \internal */ struct _CameraFile { char mime_type [64]; char name [MAX_PATH]; int ref_count; time_t mtime; CameraFileAccessType accesstype; /* for GP_FILE_ACCESSTYPE_MEMORY files */ unsigned long size; unsigned char *data; unsigned long offset; /* read pointer */ /* for GP_FILE_ACCESSTYPE_FD files */ int fd; /* for GP_FILE_ACCESSTYPE_HANDLER files */ CameraFileHandler*handler; void *private; }; /*! Create new #CameraFile object. * * \param file a pointer to a #CameraFile * \return a gphoto2 error code. */ int gp_file_new (CameraFile **file) { C_PARAMS (file); C_MEM (*file = calloc (1, sizeof (CameraFile))); strcpy ((*file)->mime_type, "unknown/unknown"); (*file)->ref_count = 1; (*file)->accesstype = GP_FILE_ACCESSTYPE_MEMORY; return (GP_OK); } /*! Create new #CameraFile object from a UNIX filedescriptor. * * \param file a pointer to a #CameraFile * \param fd a UNIX filedescriptor * \return a gphoto2 error code. */ int gp_file_new_from_fd (CameraFile **file, int fd) { C_PARAMS (file); C_MEM (*file = calloc (1, sizeof (CameraFile))); strcpy ((*file)->mime_type, "unknown/unknown"); (*file)->ref_count = 1; (*file)->accesstype = GP_FILE_ACCESSTYPE_FD; (*file)->fd = fd; return (GP_OK); } /*! Create new #CameraFile object using a programmatic handler. * * \param file a pointer to a #CameraFile * \param handler a #CameraFileHandler * \param private a private pointer for frontend use * \return a gphoto2 error code. */ int gp_file_new_from_handler (CameraFile **file, CameraFileHandler* handler, void*private) { C_PARAMS (file); C_MEM (*file = calloc (1, sizeof (CameraFile))); strcpy ((*file)->mime_type, "unknown/unknown"); (*file)->ref_count = 1; (*file)->accesstype = GP_FILE_ACCESSTYPE_HANDLER; (*file)->handler = handler; (*file)->private = private; return (GP_OK); } /*! \brief descruct a #CameraFile object. * @param file a #CameraFile * @return a gphoto2 error code. * **/ int gp_file_free (CameraFile *file) { C_PARAMS (file); CHECK_RESULT (gp_file_clean (file)); if (file->accesstype == GP_FILE_ACCESSTYPE_FD) close (file->fd); free (file); return (GP_OK); } /*! \brief Increase reference counter for #CameraFile object * * \param file a #CameraFile * \return a gphoto2 error code. */ int gp_file_ref (CameraFile *file) { C_PARAMS (file); file->ref_count += 1; return (GP_OK); } /*! \brief Decrease reference counter for #CameraFile object * * \param file a #CameraFile * \return a gphoto2 error code. * **/ int gp_file_unref (CameraFile *file) { C_PARAMS (file); file->ref_count -= 1; if (file->ref_count == 0) CHECK_RESULT (gp_file_free (file)); return (GP_OK); } /** * @param file a #CameraFile * @param data * @param size * @return a gphoto2 error code. * **/ int gp_file_append (CameraFile *file, const char *data, unsigned long int size) { C_PARAMS (file); switch (file->accesstype) { case GP_FILE_ACCESSTYPE_MEMORY: C_MEM (file->data = realloc (file->data, sizeof (char) * (file->size + size))); memcpy (&file->data[file->size], data, size); file->size += size; break; case GP_FILE_ACCESSTYPE_FD: { unsigned long int curwritten = 0; while (curwritten < size) { ssize_t res = write (file->fd, data+curwritten, size-curwritten); if (res == -1) { GP_LOG_E ("Encountered error %d writing to fd.", errno); return GP_ERROR_IO_WRITE; } if (!res) { /* no progress is bad too */ GP_LOG_E ("Encountered 0 bytes written to fd."); return GP_ERROR_IO_WRITE; } curwritten += res; } break; } case GP_FILE_ACCESSTYPE_HANDLER: { uint64_t xsize = size; /* FIXME: assume we write one blob */ C_PARAMS (file->handler->write); return file->handler->write (file->private, (unsigned char*)data, &xsize); } default: GP_LOG_E ("Unknown file access type %d", file->accesstype); return GP_ERROR; } return (GP_OK); } /** * @param file a #CameraFile * @param data * @param size * @return a gphoto2 error code. * * Internal. **/ int gp_file_slurp (CameraFile *file, char *data, size_t size, size_t *readlen ) { C_PARAMS (file); switch (file->accesstype) { case GP_FILE_ACCESSTYPE_MEMORY: if (size > file->size-file->offset) size = file->size - file->offset; memcpy (data, &file->data[file->offset], size); file->offset += size; if (readlen) *readlen = size; break; case GP_FILE_ACCESSTYPE_FD: { unsigned long int curread = 0; while (curread < size) { ssize_t res = read (file->fd, data+curread, size-curread); if (res == -1) { GP_LOG_E ("Encountered error %d reading from fd.", errno); return GP_ERROR_IO_READ; } if (!res) { /* no progress is bad too */ GP_LOG_E ("Encountered 0 bytes reading from fd."); return GP_ERROR_IO_READ; } curread += res; if (readlen) *readlen = curread; } break; } case GP_FILE_ACCESSTYPE_HANDLER: { uint64_t xsize = size; int ret; C_PARAMS (file->handler->read); ret = file->handler->read (file->private, (unsigned char*)data, &xsize); *readlen = xsize; if (ret != GP_OK) GP_LOG_E ("File handler read returned %d", ret); return ret; } default: GP_LOG_E ("Unknown file access type %d", file->accesstype); return GP_ERROR; } return (GP_OK); } /** * @param file a #CameraFile * @param data * @param size * @return a gphoto2 error code. * **/ int gp_file_set_data_and_size (CameraFile *file, char *data, unsigned long int size) { C_PARAMS (file); switch (file->accesstype) { case GP_FILE_ACCESSTYPE_MEMORY: free (file->data); file->data = (unsigned char*)data; file->size = size; break; case GP_FILE_ACCESSTYPE_FD: { unsigned int curwritten = 0; /* truncate */ if (-1 == lseek (file->fd, 0, SEEK_SET)) { GP_LOG_E ("Encountered error %d lseeking to 0.", errno); /* might happen on pipes ... just ignore it */ } if (-1 == ftruncate (file->fd, 0)) { GP_LOG_E ("Encountered error %d ftruncating to 0.", errno); /* might happen on pipes ... just ignore it */ } while (curwritten < size) { ssize_t res = write (file->fd, data+curwritten, size-curwritten); if (res == -1) { GP_LOG_E ("Encountered error %d writing to fd.", errno); return GP_ERROR_IO_WRITE; } if (!res) { /* no progress is bad too */ GP_LOG_E ("Encountered 0 bytes written to fd."); return GP_ERROR_IO_WRITE; } curwritten += res; } /* This function takes over the responsibility for "data", aka * it has to free it. So we do. */ free (data); break; } case GP_FILE_ACCESSTYPE_HANDLER: { uint64_t xsize = size; int ret; C_PARAMS (file->handler->write); /* FIXME: handle multiple blob writes */ ret = file->handler->write (file->private, (unsigned char*)data, &xsize); if (ret != GP_OK) { GP_LOG_E ("Handler data() returned %d", ret); return ret; } /* This function takes over the responsibility for "data", aka * it has to free it. So we do. */ free (data); return GP_OK; } default: GP_LOG_E ("Unknown file access type %d", file->accesstype); return GP_ERROR; } return (GP_OK); } /** * Get a pointer to the data and the file's size. * * @param file a #CameraFile * @param data * @param size * @return a gphoto2 error code. * * Both data and size can be NULL and will then be ignored. * * The pointer to data that is returned is still owned by libgphoto2 * and its lifetime is the same as the #file. * **/ int gp_file_get_data_and_size (CameraFile *file, const char **data, unsigned long int *size) { C_PARAMS (file); switch (file->accesstype) { case GP_FILE_ACCESSTYPE_MEMORY: if (data) *data = (char*)file->data; if (size) *size = file->size; break; case GP_FILE_ACCESSTYPE_FD: { off_t offset; unsigned long int curread = 0; if (-1 == lseek (file->fd, 0, SEEK_END)) { if (errno == EBADF) return GP_ERROR_IO; /* Might happen for pipes or sockets. Umm. Hard. */ /* FIXME */ } if (-1 == (offset = lseek (file->fd, 0, SEEK_CUR))) { /* should not happen if we passed the above case */ GP_LOG_E ("Encountered error %d lseekin to CUR.", errno); return GP_ERROR_IO_READ; } if (-1 == lseek (file->fd, 0, SEEK_SET)) { /* should not happen if we passed the above cases */ GP_LOG_E ("Encountered error %d lseekin to CUR.", errno); return GP_ERROR_IO_READ; } if (size) *size = offset; if (!data) /* just the size... */ return GP_OK; C_MEM (*data = malloc (offset)); while (curread < offset) { ssize_t res = read (file->fd, (char*)((*data)+curread), offset-curread); if (res == -1) { free ((char*)*data); GP_LOG_E ("Encountered error %d reading.", errno); return GP_ERROR_IO_READ; } if (res == 0) { free ((char*)*data); GP_LOG_E ("No progress during reading."); return GP_ERROR_IO_READ; } curread += res; } break; } case GP_FILE_ACCESSTYPE_HANDLER: { uint64_t xsize = 0; int ret; C_PARAMS (file->handler->read); ret = file->handler->size (file->private, &xsize); if (ret != GP_OK) { GP_LOG_E ("Encountered error %d querying size().", ret); return ret; } if (size) *size = xsize; if (!data) /* just the size... */ return GP_OK; C_MEM (*data = malloc (xsize)); ret = file->handler->read (file->private, (unsigned char*)*data, &xsize); if (ret != GP_OK) { GP_LOG_E ("Encountered error %d getting data().", ret); free ((char*)*data); *data = NULL; } return ret; } default: GP_LOG_E ("Unknown file access type %d", file->accesstype); return GP_ERROR; } return (GP_OK); } /** * @param file a #CameraFile * @param filename * @return a gphoto2 error code. * **/ int gp_file_save (CameraFile *file, const char *filename) { FILE *fp; struct utimbuf u; C_PARAMS (file && filename); switch (file->accesstype) { case GP_FILE_ACCESSTYPE_MEMORY: if (!(fp = fopen (filename, "wb"))) return GP_ERROR; if (fwrite (file->data, (size_t)sizeof(char), (size_t)file->size, fp) != (size_t)file->size) { GP_LOG_E ("Not enough space on device in order to save '%s'.", filename); fclose (fp); unlink (filename); return GP_ERROR; } fclose (fp); break; case GP_FILE_ACCESSTYPE_FD: { char *data; unsigned long int curread = 0; off_t offset; if (-1 == lseek (file->fd, 0, SEEK_END)) return GP_ERROR_IO; if (-1 == (offset = lseek (file->fd, 0, SEEK_CUR))) { /* should not happen if we passed the above case */ GP_LOG_E ("Encountered error %d lseekin to CUR.", errno); return GP_ERROR_IO_READ; } if (-1 == lseek (file->fd, 0, SEEK_SET)) { /* should not happen if we passed the above case */ GP_LOG_E ("Encountered error %d lseekin to BEGIN.", errno); return GP_ERROR_IO_READ; } C_MEM (data = malloc(65536)); if (!(fp = fopen (filename, "wb"))) { free (data); return GP_ERROR; } while (curread < offset) { int toread, res; toread = 65536; if (toread > (offset-curread)) toread = offset-curread; res = read (file->fd, data, toread); if (res <= 0) { free (data); fclose (fp); unlink (filename); return GP_ERROR_IO_READ; } if (fwrite (data, 1, res, fp) != res) { GP_LOG_E ("Not enough space on device in order to save '%s'.", filename); free (data); fclose (fp); unlink (filename); return GP_ERROR; } curread += res; } free (data); fclose (fp); break; } default: GP_LOG_E ("Unknown file access type %d", file->accesstype); return GP_ERROR; } if (file->mtime) { u.actime = file->mtime; u.modtime = file->mtime; utime (filename, &u); } return (GP_OK); } /* * mime types that cannot be determined by the filename * extension. Better hack would be to use library that examine * file content instead, like gnome-vfs mime handling, or * gnome-mime, whatever. * See also the GP_MIME_* definitions. */ static const char *mime_table[] = { "bmp", GP_MIME_BMP, "jpg", GP_MIME_JPEG, "tif", GP_MIME_TIFF, "ppm", GP_MIME_PPM, "pgm", GP_MIME_PGM, "pnm", GP_MIME_PNM, "png", GP_MIME_PNG, "wav", GP_MIME_WAV, "avi", GP_MIME_AVI, "mp3", GP_MIME_MP3, "wma", GP_MIME_WMA, "asf", GP_MIME_ASF, "ogg", GP_MIME_OGG, "mpg", GP_MIME_MPEG, "raw", GP_MIME_RAW, "mts", GP_MIME_AVCHD, "m2ts", GP_MIME_AVCHD, "arw", GP_MIME_ARW, "txt", GP_MIME_TXT, NULL}; /** * @param file a #CameraFile * @param filename * @return a gphoto2 error code. * **/ int gp_file_open (CameraFile *file, const char *filename) { FILE *fp; char *name, *dot; long size, size_read; int i; struct stat s; C_PARAMS (file && filename); CHECK_RESULT (gp_file_clean (file)); fp = fopen(filename, "r"); if (!fp) return (GP_ERROR); fseek (fp, 0, SEEK_END); size = ftell (fp); rewind (fp); switch (file->accesstype) { case GP_FILE_ACCESSTYPE_MEMORY: file->data = malloc (sizeof(char)*(size + 1)); if (!file->data) { fclose (fp); return (GP_ERROR_NO_MEMORY); } size_read = fread (file->data, (size_t)sizeof(char), (size_t)size, fp); if (ferror(fp)) { gp_file_clean (file); fclose (fp); return (GP_ERROR); } fclose(fp); file->size = size_read; file->data[size_read] = 0; break; case GP_FILE_ACCESSTYPE_FD: { if (file->fd == -1) { file->fd = dup(fileno(fp)); fclose (fp); break; } GP_LOG_E ("Needs to be initialized with fd=-1 to work"); fclose (fp); return GP_ERROR; } default: break; } name = strrchr (filename, '/'); if (name) strncpy (file->name, name + 1, sizeof (file->name)); else strncpy (file->name, filename, sizeof (file->name)); /* MIME lookup */ dot = strrchr (filename, '.'); if (dot) { for (i = 0; mime_table[i] ; i+=2) if (!strcasecmp (mime_table[i], dot+1)) { strncpy (file->mime_type, mime_table[i+1], sizeof(file->mime_type)); break; } if (!mime_table[i]) /* * We did not found the type in the lookup table, * so we use the file suffix as mime type. * Note: This should probably use GP_MIME_UNKNOWN instead * of returning a non-standard type. */ sprintf(file->mime_type, "image/%s", dot + 1); } else /* * Damn, no filename suffix... */ strncpy (file->mime_type, GP_MIME_UNKNOWN, sizeof (file->mime_type)); if (stat (filename, &s) != -1) { file->mtime = s.st_mtime; } else { file->mtime = time (NULL); } return (GP_OK); } /** * @param file a #CameraFile * @return a gphoto2 error code. * **/ int gp_file_clean (CameraFile *file) { /* * Frees a CameraFile's components, not the CameraFile itself. * This is used to prep a CameraFile struct to be filled. */ C_PARAMS (file); switch (file->accesstype) { case GP_FILE_ACCESSTYPE_MEMORY: free (file->data); file->data = NULL; file->size = 0; break; case GP_FILE_ACCESSTYPE_FD: break; default:break; } strcpy (file->name, ""); return (GP_OK); } /** * @param destination a #CameraFile * @param source a #CameraFile * @return a gphoto2 error code. * **/ int gp_file_copy (CameraFile *destination, CameraFile *source) { C_PARAMS (destination && source); GP_LOG_D ("Copying '%s' onto '%s'...", source->name, destination->name); /* struct members we can just copy. All generic ones, but not refcount. */ memcpy (destination->name, source->name, sizeof (source->name)); memcpy (destination->mime_type, source->mime_type, sizeof (source->mime_type)); destination->mtime = source->mtime; if ((destination->accesstype == GP_FILE_ACCESSTYPE_MEMORY) && (source->accesstype == GP_FILE_ACCESSTYPE_MEMORY)) { free (destination->data); destination->data = NULL; destination->size = source->size; C_MEM (destination->data = malloc (sizeof (char) * source->size)); memcpy (destination->data, source->data, source->size); return (GP_OK); } if ( (destination->accesstype == GP_FILE_ACCESSTYPE_MEMORY) && (source->accesstype == GP_FILE_ACCESSTYPE_FD) ) { off_t offset; unsigned long int curread = 0; free (destination->data); destination->data = NULL; if (-1 == lseek (source->fd, 0, SEEK_END)) { if (errno == EBADF) return GP_ERROR_IO; /* Might happen for pipes or sockets. Umm. Hard. */ /* FIXME */ } if (-1 == (offset = lseek (source->fd, 0, SEEK_CUR))) { /* should not happen if we passed the above case */ GP_LOG_E ("Encountered error %d lseekin to CUR.", errno); return GP_ERROR_IO_READ; } if (-1 == lseek (source->fd, 0, SEEK_SET)) { /* should not happen if we passed the above cases */ GP_LOG_E ("Encountered error %d lseekin to CUR.", errno); return GP_ERROR_IO_READ; } destination->size = offset; C_MEM (destination->data = malloc (offset)); while (curread < offset) { ssize_t res = read (source->fd, destination->data+curread, offset-curread); if (res == -1) { free (destination->data); GP_LOG_E ("Encountered error %d reading.", errno); return GP_ERROR_IO_READ; } if (res == 0) { free (destination->data); GP_LOG_E ("No progress during reading."); return GP_ERROR_IO_READ; } curread += res; } return GP_OK; } if ( (destination->accesstype == GP_FILE_ACCESSTYPE_FD) && (source->accesstype == GP_FILE_ACCESSTYPE_FD) ) { char *data; lseek (destination->fd, 0, SEEK_SET); if (-1 == ftruncate (destination->fd, 0)) perror("ftruncate"); lseek (source->fd, 0, SEEK_SET); C_MEM (data = malloc (65536)); while (1) { unsigned long curwritten = 0; ssize_t res; res = read (source->fd, data, 65536); if (res == -1) { free (data); return GP_ERROR_IO_READ; } if (res == 0) break; while (curwritten < res) { ssize_t res2 = write (destination->fd, data+curwritten, res-curwritten); if (res2 == -1) { free (data); return GP_ERROR_IO_WRITE; } if (res2 == 0) break; curwritten += res2; } if (res < 65536) /* end of file */ break; } free (data); return GP_OK; } if ( (destination->accesstype == GP_FILE_ACCESSTYPE_FD) && (source->accesstype == GP_FILE_ACCESSTYPE_MEMORY) ) { unsigned long curwritten = 0; while (curwritten < source->size) { int res = write (destination->fd, source->data+curwritten, source->size-curwritten); if (res == -1) return GP_ERROR_IO_WRITE; if (!res) /* no progress? */ return GP_ERROR_IO_WRITE; curwritten += res; } return GP_OK; } if ( (destination->accesstype == GP_FILE_ACCESSTYPE_HANDLER) && (source->accesstype == GP_FILE_ACCESSTYPE_MEMORY) ) { uint64_t xsize = source->size; unsigned long curwritten = 0; destination->handler->size (destination->private, &xsize); while (curwritten < source->size) { uint64_t tmpsize = source->size - curwritten; int res = destination->handler->write (destination->private, source->data+curwritten, &tmpsize); if (res < GP_OK) return res; if (!tmpsize) /* no progress? */ return GP_ERROR_IO_WRITE; curwritten += tmpsize; } return GP_OK; } GP_LOG_E ("Unhandled cases in gp_copy_file. Bad!"); return GP_ERROR; } /** * @param file a #CameraFile * @param name a pointer to a name string * @return a gphoto2 error code. * **/ int gp_file_get_name (CameraFile *file, const char **name) { C_PARAMS (file && name); *name = file->name; return (GP_OK); } /** * @param file a #CameraFile * @param basename the basename of the file * @param type the gphoto type of the file * @param newname the new name generated * @return a gphoto2 error code. * * This function takes the basename and generates a filename out of * it depending on the gphoto filetype and the mime type in the file. * The gphoto filetype will be converted to a prefix, like * thumb_ or raw_, the mimetype will replace the current suffix by * a different one (if necessary). * * This can be used so that saving thumbnails or metadata will not * overwrite the normal files. **/ int gp_file_get_name_by_type (CameraFile *file, const char *basename, CameraFileType type, char **newname) { char *prefix = NULL, *s, *new; const char *suffix = NULL; int i; C_PARAMS (file && basename && newname); *newname = NULL; /* the easy case, always map 1:1, if it has a suffix already. */ if ((type == GP_FILE_TYPE_NORMAL) && strchr(basename,'.')) { C_MEM (*newname = strdup (basename)); return GP_OK; } for (i=0;mime_table[i];i+=2) { if (!strcmp (mime_table[i+1],file->mime_type)) { suffix = mime_table[i]; break; } } s = strrchr(basename,'.'); switch (type) { case GP_FILE_TYPE_RAW: prefix = "raw_";break; case GP_FILE_TYPE_EXIF: prefix = "exif_";break; case GP_FILE_TYPE_PREVIEW: prefix = "thumb_";break; case GP_FILE_TYPE_METADATA: prefix = "meta_";break; case GP_FILE_TYPE_AUDIO: prefix = "audio_";break; default: prefix = ""; break; } if (s) { int xlen; if (!suffix) suffix = s+1; C_MEM (new = malloc (strlen(prefix) + (s-basename+1) + strlen (suffix) + 1)); strcpy (new, prefix); xlen = strlen (new); memcpy (new+xlen, basename, s-basename+1); new[xlen+(s-basename)+1]='\0'; strcat (new, suffix); } else { /* no dot in basename? */ if (!suffix) suffix = ""; C_MEM (new = malloc (strlen(prefix) + strlen(basename) + 1 + strlen (suffix) + 1)); strcpy (new, prefix); strcat (new, basename); if (strlen(suffix)) { strcat (new, "."); strcat (new, suffix); } } *newname = new; return (GP_OK); } /** * @param file a #CameraFile * @param mime_type a pointer to a MIME type string * @return a gphoto2 error code. * **/ int gp_file_get_mime_type (CameraFile *file, const char **mime_type) { C_PARAMS (file && mime_type); *mime_type = file->mime_type; return (GP_OK); } /** * @param file a #CameraFile * @param name a pointer to a MIME type string * @return a gphoto2 error code. * **/ int gp_file_set_name (CameraFile *file, const char *name) { C_PARAMS (file && name); strncpy (file->name, name, sizeof (file->name)); return (GP_OK); } /** * @param file a #CameraFile * @param mime_type a MIME type string * @return a gphoto2 error code. * **/ int gp_file_set_mime_type (CameraFile *file, const char *mime_type) { C_PARAMS (file && mime_type); strncpy (file->mime_type, mime_type, sizeof (file->mime_type)); return (GP_OK); } /** * @param file a #CameraFile * @return a gphoto2 error code. * **/ int gp_file_detect_mime_type (CameraFile *file) { const char TIFF_SOI_MARKER[] = {(char) 0x49, (char) 0x49, (char) 0x2A, (char) 0x00, (char) 0x08, '\0' }; const char JPEG_SOI_MARKER[] = {(char) 0xFF, (char) 0xD8, '\0' }; C_PARAMS (file); switch (file->accesstype) { case GP_FILE_ACCESSTYPE_MEMORY: /* image/tiff */ if ((file->size >= 5) && !memcmp (file->data, TIFF_SOI_MARKER, 5)) CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_TIFF)) /* image/jpeg */ else if ((file->size >= 2) && !memcmp (file->data, JPEG_SOI_MARKER, 2)) CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_JPEG)) else CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_RAW)); return GP_OK; case GP_FILE_ACCESSTYPE_FD: { char data[5]; off_t offset; int res; offset = lseek (file->fd, 0, SEEK_SET); res = read (file->fd, data, sizeof(data)); if (res == -1) return GP_ERROR_IO_READ; /* image/tiff */ if ((res >= 5) && !memcmp (data, TIFF_SOI_MARKER, 5)) CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_TIFF)) /* image/jpeg */ else if ((res >= 2) && !memcmp (data, JPEG_SOI_MARKER, 2)) CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_JPEG)) else CHECK_RESULT (gp_file_set_mime_type (file, GP_MIME_RAW)); lseek (file->fd, offset, SEEK_SET); break; } default: break; } return GP_OK; } /** * @param file a #CameraFile * @return a gphoto2 error code. * **/ int gp_file_adjust_name_for_mime_type (CameraFile *file) { int x; char *suffix; const char *table[] = { GP_MIME_RAW, "raw", GP_MIME_JPEG, "jpg", GP_MIME_PNG, "png", GP_MIME_PPM, "ppm", GP_MIME_PGM, "pgm", GP_MIME_PNM, "pnm", GP_MIME_TIFF, "tif", GP_MIME_WAV, "wav", GP_MIME_BMP, "bmp", GP_MIME_AVI, "avi", GP_MIME_CRW, "crw", GP_MIME_CR2, "cr2", GP_MIME_TXT, "txt", NULL}; C_PARAMS (file); GP_LOG_D ("Adjusting file name for mime type '%s'...", file->mime_type); for (x = 0; table[x]; x += 2) if (!strcmp (file->mime_type, table[x])) { /* Search the current suffix and erase it */ suffix = strrchr (file->name, '.'); if (suffix++) *suffix = '\0'; strcat (file->name, table[x + 1]); break; } GP_LOG_D ("Name adjusted to '%s'.", file->name); return (GP_OK); } /** * @param file a #CameraFile * @param mtime * @return a gphoto2 error code. * **/ int gp_file_get_mtime (CameraFile *file, time_t *mtime) { C_PARAMS (file && mtime); *mtime = file->mtime; return (GP_OK); } /** * @param file a #CameraFile * @param mtime * @return a gphoto2 error code. * **/ int gp_file_set_mtime (CameraFile *file, time_t mtime) { C_PARAMS (file); file->mtime = mtime; return (GP_OK); } libgphoto2-2.5.9/libgphoto2/bayer.c0000644000175000001440000002333712610415536014047 00000000000000/** \file bayer.c * \brief Bayer array conversion routines. * * \author Copyright 2001 Lutz Mueller * \author Copyright 2007 Theodore Kilgore * * \par * gp_bayer_accrue() from Theodore Kilgore * contains suggestions by B. R. Harris (e-mail address disappeared) and * Werner Eugster * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include "bayer.h" #include static const int tile_colours[8][4] = { {0, 1, 1, 2}, {1, 0, 2, 1}, {2, 1, 1, 0}, {1, 2, 0, 1}, {0, 1, 1, 2}, {1, 0, 2, 1}, {2, 1, 1, 0}, {1, 2, 0, 1}}; #define RED 0 #define GREEN 1 #define BLUE 2 static int gp_bayer_accrue (unsigned char *image, int w, int h, int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3, int colour); /** * \brief Expand a bayer raster style image to a RGB raster. * * \param input the bayer CCD array as linear input * \param w width of the above array * \param h height of the above array * \param output RGB output array (linear, 3 bytes of R,G,B for every pixel) * \param tile how the 2x2 bayer array is layed out * * A regular CCD uses a raster of 2 green, 1 blue and 1 red components to * cover a 2x2 pixel area. The camera or the driver then interpolates a * 2x2 RGB pixel set out of this data. * * This function expands the bayer array to 3 times larger bitmap with * RGB values copied as-is. Pixels were no sensor was there are 0. * The data is supposed to be processed further by for instance gp_bayer_interpolate(). * * \return a gphoto error code */ int gp_bayer_expand (unsigned char *input, int w, int h, unsigned char *output, BayerTile tile) { int x, y, i; int colour, bayer; unsigned char *ptr = input; switch (tile) { case BAYER_TILE_RGGB: case BAYER_TILE_GRBG: case BAYER_TILE_BGGR: case BAYER_TILE_GBRG: for (y = 0; y < h; ++y) for (x = 0; x < w; ++x, ++ptr) { bayer = (x&1?0:1) + (y&1?0:2); colour = tile_colours[tile][bayer]; i = (y * w + x) * 3; output[i+RED] = 0; output[i+GREEN] = 0; output[i+BLUE] = 0; output[i+colour] = *ptr; } break; case BAYER_TILE_RGGB_INTERLACED: case BAYER_TILE_GRBG_INTERLACED: case BAYER_TILE_BGGR_INTERLACED: case BAYER_TILE_GBRG_INTERLACED: for (y = 0; y < h; ++y, ptr+=w) for (x = 0; x < w; ++x) { bayer = (x&1?0:1) + (y&1?0:2); colour = tile_colours[tile][bayer]; i = (y * w + x) * 3; output[i+RED] = 0; output[i+GREEN] = 0; output[i+BLUE] = 0; output[i+colour] = (x&1)? ptr[x>>1]:ptr[(w>>1)+(x>>1)]; } break; } return (GP_OK); } #define AD(x, y, w) ((y)*(w)*3+3*(x)) /** * \brief Interpolate a expanded bayer array into an RGB image. * * \param image the linear RGB array as both input and output * \param w width of the above array * \param h height of the above array * \param tile how the 2x2 bayer array is layed out * * This function interpolates a bayer array which has been pre-expanded * by gp_bayer_expand() to an RGB image. It uses various interpolation * methods, also see gp_bayer_accrue(). * * \return a gphoto error code */ int gp_bayer_interpolate (unsigned char *image, int w, int h, BayerTile tile) { int x, y, bayer; int p0, p1, p2; int value, div ; switch (tile) { default: case BAYER_TILE_RGGB: case BAYER_TILE_RGGB_INTERLACED: p0 = 0; p1 = 1; p2 = 2; break; case BAYER_TILE_GRBG: case BAYER_TILE_GRBG_INTERLACED: p0 = 1; p1 = 0; p2 = 3; break; case BAYER_TILE_BGGR: case BAYER_TILE_BGGR_INTERLACED: p0 = 3; p1 = 2; p2 = 1; break; case BAYER_TILE_GBRG: case BAYER_TILE_GBRG_INTERLACED: p0 = 2; p1 = 3; p2 = 0; break; } for (y = 0; y < h; y++) for (x = 0; x < w; x++) { bayer = (x&1?0:1) + (y&1?0:2); if ( bayer == p0 ) { /* red. green lrtb, blue diagonals */ image[AD(x,y,w)+GREEN] = gp_bayer_accrue(image, w, h, x-1, y, x+1, y, x, y-1, x, y+1, GREEN) ; image[AD(x,y,w)+BLUE] = gp_bayer_accrue(image, w, h, x+1, y+1, x-1, y-1, x-1, y+1, x+1, y-1, BLUE) ; } else if (bayer == p1) { /* green. red lr, blue tb */ div = value = 0; if (x < (w - 1)) { value += image[AD(x+1,y,w)+RED]; div++; } if (x) { value += image[AD(x-1,y,w)+RED]; div++; } image[AD(x,y,w)+RED] = value / div; div = value = 0; if (y < (h - 1)) { value += image[AD(x,y+1,w)+BLUE]; div++; } if (y) { value += image[AD(x,y-1,w)+BLUE]; div++; } image[AD(x,y,w)+BLUE] = value / div; } else if ( bayer == p2 ) { /* green. blue lr, red tb */ div = value = 0; if (x < (w - 1)) { value += image[AD(x+1,y,w)+BLUE]; div++; } if (x) { value += image[AD(x-1,y,w)+BLUE]; div++; } image[AD(x,y,w)+BLUE] = value / div; div = value = 0; if (y < (h - 1)) { value += image[AD(x,y+1,w)+RED]; div++; } if (y) { value += image[AD(x,y-1,w)+RED]; div++; } image[AD(x,y,w)+RED] = value / div; } else { /* blue. green lrtb, red diagonals */ image[AD(x,y,w)+GREEN] = gp_bayer_accrue (image, w, h, x-1, y, x+1, y, x, y-1, x, y+1, GREEN) ; image[AD(x,y,w)+RED] = gp_bayer_accrue (image, w, h, x+1, y+1, x-1, y-1, x-1, y+1, x+1, y-1, RED) ; } } return (GP_OK); } /** * \brief interpolate one pixel from a bayer 2x2 raster * * For red and blue data, compare the four surrounding values. If three * values are all one side of the mean value, the fourth value is ignored. * This will sharpen boundaries. Treatment of green data looks for vertical and * horizontal edges. Any such which are discovered get special treatment. * Otherwise, the same comparison test is applied which is applied for red * and blue. Standard algorithm is applied without change at edges of the image. */ static int gp_bayer_accrue (unsigned char *image, int w, int h, int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3, int colour) { int x [4] ; int y [4] ; int value [4] ; int above [4] ; int counter ; int sum_of_values; int average ; int i ; x[0] = x0 ; x[1] = x1 ; x[2] = x2 ; x[3] = x3 ; y[0] = y0 ; y[1] = y1 ; y[2] = y2 ; y[3] = y3 ; /* special treatment for green */ counter = sum_of_values = 0 ; if(colour == GREEN) { /* We need to make sure that horizontal or vertical lines * become horizontal and vertical lines even in this * interpolation procedure. Therefore, we determine whether * we might have such a line structure. */ for (i = 0 ; i < 4 ; i++) { if ((x[i] >= 0) && (x[i] < w) && (y[i] >= 0) && (y[i] < h)) { value [i] = image[AD(x[i],y[i],w) + colour] ; counter++; } else { value [i] = -1 ; } } if(counter == 4) { /* It is assumed that x0,y0 and x1,y1 are on a * horizontal line and * x2,y2 and x3,y3 are on a vertical line */ int hdiff ; int vdiff ; hdiff = value [1] - value [0] ; hdiff *= hdiff ; /* Make value positive by squaring */ vdiff = value [3] - value [2] ; vdiff *= vdiff ; /* Make value positive by squaring */ if(hdiff > 2*vdiff) { /* We might have a vertical structure here */ return (value [3] + value [2])/2 ; } if(vdiff > 2*hdiff) { /* we might have a horizontal structure here */ return (value [1] + value [0])/2 ; } /* else we proceed as with blue and red */ } /* if we do not have four points then we proceed as we do for * blue and red */ } /* for blue and red */ counter = sum_of_values = 0 ; for (i = 0 ; i < 4 ; i++) { if ((x[i] >= 0) && (x[i] < w) && (y[i] >= 0) && (y[i] < h)) { value [i] = image[AD(x[i],y[i],w) + colour] ; sum_of_values += value [i] ; counter++ ; } } average = sum_of_values / counter ; if (counter < 4) return average ; /* Less than four surrounding - just take average */ counter = 0 ; for (i = 0 ; i < 4 ; i++) { above[i] = value[i] > average ; if (above[i]) counter++ ; } /* Note: counter == 0 indicates all values the same */ if ((counter == 2) || (counter == 0)) return average ; sum_of_values = 0 ; for (i = 0 ; i < 4 ; i++) { if ((counter == 3) == above[i]) { sum_of_values += value[i] ; } } return sum_of_values / 3 ; } /** * \brief Convert a bayer raster style image to a RGB raster. * * \param input the bayer CCD array as linear input * \param w width of the above array * \param h height of the above array * \param output RGB output array (linear, 3 bytes of R,G,B for every pixel) * \param tile how the 2x2 bayer array is layed out * * A regular CCD uses a raster of 2 green, 1 blue and 1 red components to * cover a 2x2 pixel area. The camera or the driver then interpolates a * 2x2 RGB pixel set out of this data. * * This function expands and interpolates the bayer array to 3 times larger * bitmap with RGB values interpolated. * * \return a gphoto error code */ int gp_bayer_decode (unsigned char *input, int w, int h, unsigned char *output, BayerTile tile) { gp_bayer_expand (input, w, h, output, tile); gp_bayer_interpolate (output, w, h, tile); return (GP_OK); } libgphoto2-2.5.9/libgphoto2/Makefile.in0000644000175000001440000012606312623156012014641 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libgphoto2 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = am_libgphoto2_la_OBJECTS = libgphoto2_la-gphoto2-abilities-list.lo \ libgphoto2_la-ahd_bayer.lo libgphoto2_la-bayer.lo \ libgphoto2_la-gphoto2-camera.lo \ libgphoto2_la-gphoto2-context.lo libgphoto2_la-exif.lo \ libgphoto2_la-gphoto2-file.lo libgphoto2_la-gphoto2-filesys.lo \ libgphoto2_la-gamma.lo libgphoto2_la-jpeg.lo \ libgphoto2_la-gphoto2-list.lo libgphoto2_la-gphoto2-result.lo \ libgphoto2_la-gphoto2-version.lo \ libgphoto2_la-gphoto2-setting.lo \ libgphoto2_la-gphoto2-widget.lo libgphoto2_la_OBJECTS = $(am_libgphoto2_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libgphoto2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libgphoto2_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/auto-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libgphoto2_la_SOURCES) DIST_SOURCES = $(libgphoto2_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/auto-aux/depcomp \ $(top_srcdir)/auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ lib_LTLIBRARIES = libgphoto2.la # Notes about the list of exported symbols: # gp_* also contains internal symbols which are intended for # INTERNAL USE ONLY and should be converted into gpi_* symbols # gpi_* are for libgphoto2/camlib internal use only # NEVER USE gpi_* in frontends! # gp_* gphoto2 API, used in # - frontends # BE AWARE that NOT ALL gp_* FUNCTIONS ARE CONSIDERED PUBLIC. # # Yes, this is messy, but we are going to clean this up. libgphoto2_la_CPPFLAGS = \ -I$(top_srcdir) -I$(top_builddir) \ -I$(top_srcdir)/libgphoto2_port -I$(top_builddir)/libgphoto2_port \ $(AM_CPPFLAGS) $(CPPFLAGS) \ $(LTDLINCL) \ $(LIBEXIF_CFLAGS) libgphoto2_la_LDFLAGS = \ -no-undefined \ -export-symbols $(srcdir)/libgphoto2.sym \ -version-info @LIBGPHOTO2_VERSION_INFO@ libgphoto2_la_SOURCES = \ gphoto2-abilities-list.c\ ahd_bayer.c \ bayer.c bayer.h \ gphoto2-camera.c \ gphoto2-context.c \ exif.c exif.h \ gphoto2-file.c \ gphoto2-filesys.c \ gamma.c gamma.h \ jpeg.c jpeg.h \ gphoto2-list.c \ gphoto2-result.c \ gphoto2-version.c \ gphoto2-setting.c \ gphoto2-widget.c libgphoto2_la_LIBADD = \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ -lm $(INTLLIBS) # The libtool docs describe these params, but they don't build. # "-dlopen" self \ # "-dlopen" $(top_builddir)/camlibs/canon/....la \ # "-dlopen" $(top_builddir)/camlibs/ptp2/....la libgphoto2_la_DEPENDENCIES = \ $(top_srcdir)/gphoto2/gphoto2-version.h \ $(srcdir)/libgphoto2.sym EXTRA_DIST = gphoto2-library.c libgphoto2.sym DISTCLEANFILES = _stdint.h all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libgphoto2/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign libgphoto2/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libgphoto2.la: $(libgphoto2_la_OBJECTS) $(libgphoto2_la_DEPENDENCIES) $(EXTRA_libgphoto2_la_DEPENDENCIES) $(AM_V_CCLD)$(libgphoto2_la_LINK) -rpath $(libdir) $(libgphoto2_la_OBJECTS) $(libgphoto2_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-ahd_bayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-bayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-exif.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-gamma.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-gphoto2-abilities-list.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-gphoto2-camera.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-gphoto2-context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-gphoto2-file.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-gphoto2-filesys.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-gphoto2-list.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-gphoto2-result.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-gphoto2-setting.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-gphoto2-version.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-gphoto2-widget.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_la-jpeg.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libgphoto2_la-gphoto2-abilities-list.lo: gphoto2-abilities-list.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-gphoto2-abilities-list.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-gphoto2-abilities-list.Tpo -c -o libgphoto2_la-gphoto2-abilities-list.lo `test -f 'gphoto2-abilities-list.c' || echo '$(srcdir)/'`gphoto2-abilities-list.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-gphoto2-abilities-list.Tpo $(DEPDIR)/libgphoto2_la-gphoto2-abilities-list.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-abilities-list.c' object='libgphoto2_la-gphoto2-abilities-list.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-gphoto2-abilities-list.lo `test -f 'gphoto2-abilities-list.c' || echo '$(srcdir)/'`gphoto2-abilities-list.c libgphoto2_la-ahd_bayer.lo: ahd_bayer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-ahd_bayer.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-ahd_bayer.Tpo -c -o libgphoto2_la-ahd_bayer.lo `test -f 'ahd_bayer.c' || echo '$(srcdir)/'`ahd_bayer.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-ahd_bayer.Tpo $(DEPDIR)/libgphoto2_la-ahd_bayer.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ahd_bayer.c' object='libgphoto2_la-ahd_bayer.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-ahd_bayer.lo `test -f 'ahd_bayer.c' || echo '$(srcdir)/'`ahd_bayer.c libgphoto2_la-bayer.lo: bayer.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-bayer.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-bayer.Tpo -c -o libgphoto2_la-bayer.lo `test -f 'bayer.c' || echo '$(srcdir)/'`bayer.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-bayer.Tpo $(DEPDIR)/libgphoto2_la-bayer.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bayer.c' object='libgphoto2_la-bayer.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-bayer.lo `test -f 'bayer.c' || echo '$(srcdir)/'`bayer.c libgphoto2_la-gphoto2-camera.lo: gphoto2-camera.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-gphoto2-camera.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-gphoto2-camera.Tpo -c -o libgphoto2_la-gphoto2-camera.lo `test -f 'gphoto2-camera.c' || echo '$(srcdir)/'`gphoto2-camera.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-gphoto2-camera.Tpo $(DEPDIR)/libgphoto2_la-gphoto2-camera.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-camera.c' object='libgphoto2_la-gphoto2-camera.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-gphoto2-camera.lo `test -f 'gphoto2-camera.c' || echo '$(srcdir)/'`gphoto2-camera.c libgphoto2_la-gphoto2-context.lo: gphoto2-context.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-gphoto2-context.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-gphoto2-context.Tpo -c -o libgphoto2_la-gphoto2-context.lo `test -f 'gphoto2-context.c' || echo '$(srcdir)/'`gphoto2-context.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-gphoto2-context.Tpo $(DEPDIR)/libgphoto2_la-gphoto2-context.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-context.c' object='libgphoto2_la-gphoto2-context.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-gphoto2-context.lo `test -f 'gphoto2-context.c' || echo '$(srcdir)/'`gphoto2-context.c libgphoto2_la-exif.lo: exif.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-exif.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-exif.Tpo -c -o libgphoto2_la-exif.lo `test -f 'exif.c' || echo '$(srcdir)/'`exif.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-exif.Tpo $(DEPDIR)/libgphoto2_la-exif.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='exif.c' object='libgphoto2_la-exif.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-exif.lo `test -f 'exif.c' || echo '$(srcdir)/'`exif.c libgphoto2_la-gphoto2-file.lo: gphoto2-file.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-gphoto2-file.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-gphoto2-file.Tpo -c -o libgphoto2_la-gphoto2-file.lo `test -f 'gphoto2-file.c' || echo '$(srcdir)/'`gphoto2-file.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-gphoto2-file.Tpo $(DEPDIR)/libgphoto2_la-gphoto2-file.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-file.c' object='libgphoto2_la-gphoto2-file.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-gphoto2-file.lo `test -f 'gphoto2-file.c' || echo '$(srcdir)/'`gphoto2-file.c libgphoto2_la-gphoto2-filesys.lo: gphoto2-filesys.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-gphoto2-filesys.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-gphoto2-filesys.Tpo -c -o libgphoto2_la-gphoto2-filesys.lo `test -f 'gphoto2-filesys.c' || echo '$(srcdir)/'`gphoto2-filesys.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-gphoto2-filesys.Tpo $(DEPDIR)/libgphoto2_la-gphoto2-filesys.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-filesys.c' object='libgphoto2_la-gphoto2-filesys.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-gphoto2-filesys.lo `test -f 'gphoto2-filesys.c' || echo '$(srcdir)/'`gphoto2-filesys.c libgphoto2_la-gamma.lo: gamma.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-gamma.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-gamma.Tpo -c -o libgphoto2_la-gamma.lo `test -f 'gamma.c' || echo '$(srcdir)/'`gamma.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-gamma.Tpo $(DEPDIR)/libgphoto2_la-gamma.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gamma.c' object='libgphoto2_la-gamma.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-gamma.lo `test -f 'gamma.c' || echo '$(srcdir)/'`gamma.c libgphoto2_la-jpeg.lo: jpeg.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-jpeg.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-jpeg.Tpo -c -o libgphoto2_la-jpeg.lo `test -f 'jpeg.c' || echo '$(srcdir)/'`jpeg.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-jpeg.Tpo $(DEPDIR)/libgphoto2_la-jpeg.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='jpeg.c' object='libgphoto2_la-jpeg.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-jpeg.lo `test -f 'jpeg.c' || echo '$(srcdir)/'`jpeg.c libgphoto2_la-gphoto2-list.lo: gphoto2-list.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-gphoto2-list.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-gphoto2-list.Tpo -c -o libgphoto2_la-gphoto2-list.lo `test -f 'gphoto2-list.c' || echo '$(srcdir)/'`gphoto2-list.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-gphoto2-list.Tpo $(DEPDIR)/libgphoto2_la-gphoto2-list.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-list.c' object='libgphoto2_la-gphoto2-list.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-gphoto2-list.lo `test -f 'gphoto2-list.c' || echo '$(srcdir)/'`gphoto2-list.c libgphoto2_la-gphoto2-result.lo: gphoto2-result.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-gphoto2-result.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-gphoto2-result.Tpo -c -o libgphoto2_la-gphoto2-result.lo `test -f 'gphoto2-result.c' || echo '$(srcdir)/'`gphoto2-result.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-gphoto2-result.Tpo $(DEPDIR)/libgphoto2_la-gphoto2-result.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-result.c' object='libgphoto2_la-gphoto2-result.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-gphoto2-result.lo `test -f 'gphoto2-result.c' || echo '$(srcdir)/'`gphoto2-result.c libgphoto2_la-gphoto2-version.lo: gphoto2-version.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-gphoto2-version.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-gphoto2-version.Tpo -c -o libgphoto2_la-gphoto2-version.lo `test -f 'gphoto2-version.c' || echo '$(srcdir)/'`gphoto2-version.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-gphoto2-version.Tpo $(DEPDIR)/libgphoto2_la-gphoto2-version.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-version.c' object='libgphoto2_la-gphoto2-version.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-gphoto2-version.lo `test -f 'gphoto2-version.c' || echo '$(srcdir)/'`gphoto2-version.c libgphoto2_la-gphoto2-setting.lo: gphoto2-setting.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-gphoto2-setting.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-gphoto2-setting.Tpo -c -o libgphoto2_la-gphoto2-setting.lo `test -f 'gphoto2-setting.c' || echo '$(srcdir)/'`gphoto2-setting.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-gphoto2-setting.Tpo $(DEPDIR)/libgphoto2_la-gphoto2-setting.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-setting.c' object='libgphoto2_la-gphoto2-setting.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-gphoto2-setting.lo `test -f 'gphoto2-setting.c' || echo '$(srcdir)/'`gphoto2-setting.c libgphoto2_la-gphoto2-widget.lo: gphoto2-widget.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_la-gphoto2-widget.lo -MD -MP -MF $(DEPDIR)/libgphoto2_la-gphoto2-widget.Tpo -c -o libgphoto2_la-gphoto2-widget.lo `test -f 'gphoto2-widget.c' || echo '$(srcdir)/'`gphoto2-widget.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_la-gphoto2-widget.Tpo $(DEPDIR)/libgphoto2_la-gphoto2-widget.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-widget.c' object='libgphoto2_la-gphoto2-widget.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_la-gphoto2-widget.lo `test -f 'gphoto2-widget.c' || echo '$(srcdir)/'`gphoto2-widget.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am 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-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 tags-am uninstall uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile # 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. .NOEXPORT: libgphoto2-2.5.9/libgphoto2/Makefile.am0000644000175000001440000000321312610415517014623 00000000000000lib_LTLIBRARIES = libgphoto2.la # Notes about the list of exported symbols: # gp_* also contains internal symbols which are intended for # INTERNAL USE ONLY and should be converted into gpi_* symbols # gpi_* are for libgphoto2/camlib internal use only # NEVER USE gpi_* in frontends! # gp_* gphoto2 API, used in # - frontends # BE AWARE that NOT ALL gp_* FUNCTIONS ARE CONSIDERED PUBLIC. # # Yes, this is messy, but we are going to clean this up. libgphoto2_la_CPPFLAGS = \ -I$(top_srcdir) -I$(top_builddir) \ -I$(top_srcdir)/libgphoto2_port -I$(top_builddir)/libgphoto2_port \ $(AM_CPPFLAGS) $(CPPFLAGS) \ $(LTDLINCL) \ $(LIBEXIF_CFLAGS) libgphoto2_la_LDFLAGS = \ -no-undefined \ -export-symbols $(srcdir)/libgphoto2.sym \ -version-info @LIBGPHOTO2_VERSION_INFO@ libgphoto2_la_SOURCES = \ gphoto2-abilities-list.c\ ahd_bayer.c \ bayer.c bayer.h \ gphoto2-camera.c \ gphoto2-context.c \ exif.c exif.h \ gphoto2-file.c \ gphoto2-filesys.c \ gamma.c gamma.h \ jpeg.c jpeg.h \ gphoto2-list.c \ gphoto2-result.c \ gphoto2-version.c \ gphoto2-setting.c \ gphoto2-widget.c libgphoto2_la_LIBADD = \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) \ -lm $(INTLLIBS) # The libtool docs describe these params, but they don't build. # "-dlopen" self \ # "-dlopen" $(top_builddir)/camlibs/canon/....la \ # "-dlopen" $(top_builddir)/camlibs/ptp2/....la libgphoto2_la_DEPENDENCIES = \ $(top_srcdir)/gphoto2/gphoto2-version.h \ $(srcdir)/libgphoto2.sym EXTRA_DIST = gphoto2-library.c libgphoto2.sym DISTCLEANFILES = _stdint.h libgphoto2-2.5.9/libgphoto2/gphoto2-camera.c0000644000175000001440000012364112610415536015554 00000000000000/** \file * * Implement Camera object representing a camera attached to the system. * * \author Copyright 2000 Scott Fritzinger * \author Copyright 2001-2002 Lutz Mueller * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define CAMERA_UNUSED(c,ctx) \ { \ (c)->pc->used--; \ if (!(c)->pc->used) { \ if ((c)->pc->exit_requested) \ gp_camera_exit ((c), (ctx)); \ if (!(c)->pc->ref_count) \ gp_camera_free (c); \ } \ } #define CR(c,result,ctx) \ { \ int r1 = (result); \ \ if (r1 < 0) { \ /* libgphoto2_port doesn't have a GPContext */ \ gp_context_error ((ctx), _("An error occurred " \ "in the io-library ('%s'): %s"), \ gp_port_result_as_string (r1), \ gp_port_get_error ((c) ? (c)->port : NULL)); \ if (c) \ CAMERA_UNUSED (c,ctx); \ return (r1); \ } \ } /* * HAVE_MULTI * ---------- * * The problem: Several different programs (gtkam, gphoto2, gimp) accessing * one camera. * The solutions: * (1) gp_port_open before each operation, gp_port_close after. This has * shown to not work with some drivers (digita/dc240) for serial ports, * because the camera will notice that [1], * reset itself and will therefore need to be reinitialized. If you want * this behaviour, #define HAVE_MULTI. * (2) Leave it up to the frontend to release the camera by calling * gp_camera_exit after camera operations. This is what is implemented * right now. The drawback is that re-initialization takes more time than * just reopening the port. However, it works for all camera drivers. * * [1] Marr writes: * * With the Digita-OS cameras at least, one of the RS-232 lines is tied * to a 'Reset' signal on the camera. I quote from the Digita 'Host * Interface Specification' document: * * "The Reset signal is a pulse on the Reset/Att line (which cooresponds * [sic] to pin 2 at the camera side) sent from the host computer to the * camera. This pulse must be at least 50us." */ #ifdef HAVE_MULTI #define CHECK_OPEN(c,ctx) \ { \ int r2; \ \ if (strcmp ((c)->pc->a.model,"Directory Browse")) { \ r2 = gp_port_open ((c)->port); \ if (r2 < 0) { \ CAMERA_UNUSED (c,ctx); \ return (r2); \ } \ } \ if ((c)->functions->pre_func) { \ r2 = (c)->functions->pre_func (c,ctx); \ if (r2 < 0) { \ CAMERA_UNUSED (c,ctx); \ return (r2); \ } \ } \ } #else #define CHECK_OPEN(c,ctx) \ { \ if ((c)->functions->pre_func) { \ int r2 = (c)->functions->pre_func (c,ctx); \ if (r2 < 0) { \ CAMERA_UNUSED (c,ctx); \ return (r2); \ } \ } \ } #endif #ifdef HAVE_MULTI #define CHECK_CLOSE(c,ctx) \ { \ if (strcmp ((c)->pc->a.model,"Directory Browse")) \ gp_port_close ((c)->port); \ if ((c)->functions->post_func) { \ int r3 = (c)->functions->post_func (c,ctx); \ if (r3 < 0) { \ CAMERA_UNUSED (c,ctx); \ return (r3); \ } \ } \ } #else #define CHECK_CLOSE(c,ctx) \ { \ if ((c)->functions->post_func) { \ int r3 = (c)->functions->post_func (c,ctx); \ if (r3 < 0) { \ CAMERA_UNUSED (c,ctx); \ return (r3); \ } \ } \ } #endif #define CRS(c,res,ctx) \ { \ int r4 = (res); \ \ if (r4 < 0) { \ CAMERA_UNUSED (c,ctx); \ return (r4); \ } \ } #define CRSL(c,res,ctx,list) \ { \ int r5 = (res); \ \ if (r5 < 0) { \ CAMERA_UNUSED (c,ctx); \ gp_list_free (list); \ return (r5); \ } \ } #define CHECK_RESULT_OPEN_CLOSE(c,result,ctx) \ { \ int r6; \ \ CHECK_OPEN (c,ctx); \ r6 = (result); \ if (r6 < 0) { \ GP_LOG_E ("'%s' failed: %d", #result, r6); \ CHECK_CLOSE (c,ctx); \ CAMERA_UNUSED (c,ctx); \ return (r6); \ } \ CHECK_CLOSE (c,ctx); \ } #define CHECK_INIT(c,ctx) \ { \ if ((c)->pc->used) \ return (GP_ERROR_CAMERA_BUSY); \ (c)->pc->used++; \ if (!(c)->pc->lh) \ CR((c), gp_camera_init (c, ctx), ctx); \ } struct _CameraPrivateCore { /* Some information about the port */ unsigned int speed; /* The abilities of this camera */ CameraAbilities a; /* Library handle */ lt_dlhandle lh; char error[2048]; unsigned int ref_count; unsigned char used; unsigned char exit_requested; int initialized; /* Timeout functions */ CameraTimeoutStartFunc timeout_start_func; CameraTimeoutStopFunc timeout_stop_func; void *timeout_data; unsigned int *timeout_ids; unsigned int timeout_ids_len; }; /** * Close connection to camera. * * @param camera a #Camera object * @param context a #GPContext object * @return a gphoto2 error code. * * Closes a connection to the camera and therefore gives other application * the possibility to access the camera, too. * * It is recommended that you * call this function when you currently don't need the camera. The camera * will get reinitialized by gp_camera_init() automatically if you try to * access the camera again. * */ int gp_camera_exit (Camera *camera, GPContext *context) { C_PARAMS (camera); GP_LOG_D ("Exiting camera ('%s')...", camera->pc->a.model); /* * We have to postpone this operation if the camera is currently * in use. gp_camera_exit will be called again if the * camera->pc->used will drop to zero. */ if (camera->pc->used) { camera->pc->exit_requested = 1; return (GP_OK); } /* Remove every timeout that is still pending */ while (camera->pc->timeout_ids_len) gp_camera_stop_timeout (camera, camera->pc->timeout_ids[0]); free (camera->pc->timeout_ids); camera->pc->timeout_ids = NULL; if (camera->functions->exit) { #ifdef HAVE_MULTI gp_port_open (camera->port); #endif camera->functions->exit (camera, context); } gp_port_close (camera->port); memset (camera->functions, 0, sizeof (CameraFunctions)); if (camera->pc->lh) { #if !defined(VALGRIND) lt_dlclose (camera->pc->lh); lt_dlexit (); #endif camera->pc->lh = NULL; } gp_filesystem_reset (camera->fs); return (GP_OK); } /** * Allocates the memory for a #Camera. * * @param camera the #Camera object to initialize. * @return a gphoto2 error code * */ int gp_camera_new (Camera **camera) { int result; C_PARAMS (camera); C_MEM (*camera = calloc (1, sizeof (Camera))); (*camera)->functions = calloc (1, sizeof (CameraFunctions)); (*camera)->pc = calloc (1, sizeof (CameraPrivateCore)); if (!(*camera)->functions || !(*camera)->pc) { result = GP_ERROR_NO_MEMORY; goto error; } (*camera)->pc->ref_count = 1; /* Create the filesystem */ result = gp_filesystem_new (&(*camera)->fs); if (result < GP_OK) goto error; /* Create the port */ result = gp_port_new (&(*camera)->port); if (result < GP_OK) goto error; return(GP_OK); error: gp_camera_free (*camera); return result; } /** * \brief Sets the camera abilities. * * @param camera a #Camera * @param abilities the #CameraAbilities to be set * @return a gphoto2 error code * * You need to call this function before calling #gp_camera_init the * first time unless you want gphoto2 to autodetect cameras and choose * the first detected one. By setting the \c abilities, you * tell gphoto2 what model the \c camera is and what camera driver should * be used for accessing the \c camera. You can get \c abilities by calling * #gp_abilities_list_get_abilities. * */ int gp_camera_set_abilities (Camera *camera, CameraAbilities abilities) { GP_LOG_D ("Setting abilities ('%s')...", abilities.model); C_PARAMS (camera); /* * If the camera is currently initialized, terminate that connection. * We don't care if we are successful or not. */ if (camera->pc->lh) gp_camera_exit (camera, NULL); memcpy (&camera->pc->a, &abilities, sizeof (CameraAbilities)); return (GP_OK); } /** * Retrieve the \c abilities of the \c camera. * * @param camera a #Camera * @param abilities * @return a gphoto2 error code * */ int gp_camera_get_abilities (Camera *camera, CameraAbilities *abilities) { C_PARAMS (camera && abilities); memcpy (abilities, &camera->pc->a, sizeof (CameraAbilities)); return (GP_OK); } int gp_camera_get_port_info (Camera *camera, GPPortInfo *info) { C_PARAMS (camera && info); CR (camera, gp_port_get_info (camera->port, info), NULL); return (GP_OK); } int gp_camera_set_port_info (Camera *camera, GPPortInfo info) { char *name, *path; C_PARAMS (camera); /* * If the camera is currently initialized, terminate that connection. * We don't care if we are successful or not. */ if (camera->pc->lh) gp_camera_exit (camera, NULL); gp_port_info_get_name (info, &name); gp_port_info_get_path (info, &path); GP_LOG_D ("Setting port info for port '%s' at '%s'...", name, path); CR (camera, gp_port_set_info (camera->port, info), NULL); return (GP_OK); } /** * Set the camera speed. * * @param camera a #Camera * @param speed the speed * @return a gphoto2 error code * * This function is typically used prior first initialization * using #gp_camera_init for debugging purposes. Normally, a camera driver * will try to figure out the current speed of the camera and set the speed * to the optimal one automatically. Note that this function only works with * serial ports. In other words, you have to set the camera's port to a * serial one (using #gp_camera_set_port_path or #gp_camera_set_port_name) * prior calling this function. * */ int gp_camera_set_port_speed (Camera *camera, int speed) { GPPortSettings settings; C_PARAMS (camera); C_PARAMS_MSG (camera->port, "You need to set a port prior trying to set the speed"); C_PARAMS_MSG (camera->port->type == GP_PORT_SERIAL, "You can specify a speed only with serial ports"); /* * If the camera is currently initialized, terminate that connection. * We don't care if we are successful or not. */ if (camera->pc->lh) gp_camera_exit (camera, NULL); CR (camera, gp_port_get_settings (camera->port, &settings), NULL); settings.serial.speed = speed; CR (camera, gp_port_set_settings (camera->port, settings), NULL); camera->pc->speed = speed; return (GP_OK); } /** * Retrieve the current speed. * * @param camera a #Camera * @return The current speed or a gphoto2 error code * */ int gp_camera_get_port_speed (Camera *camera) { C_PARAMS (camera); return (camera->pc->speed); } /** * Increment the reference count of a \c camera. * * @param camera a #Camera * @return a gphoto2 error code * */ int gp_camera_ref (Camera *camera) { C_PARAMS (camera); camera->pc->ref_count += 1; return (GP_OK); } /** * Decrements the reference count of a #Camera. * * @param camera a #Camera * @return a gphoto2 error code * * If the reference count reaches %0, the \c camera will be freed * automatically. * */ int gp_camera_unref (Camera *camera) { C_PARAMS (camera); if (!camera->pc->ref_count) { GP_LOG_E ("gp_camera_unref on a camera with ref_count == 0 " "should not happen at all"); return (GP_ERROR); } camera->pc->ref_count -= 1; if (!camera->pc->ref_count) { /* We cannot free a camera that is currently in use */ if (!camera->pc->used) gp_camera_free (camera); } return (GP_OK); } /** * Free the \c camera. * * @param camera a #Camera * @return a gphoto2 error code * * \deprecated * This function should never be used. Please use #gp_camera_unref instead. * */ int gp_camera_free (Camera *camera) { C_PARAMS (camera); GP_LOG_D ("Freeing camera..."); /* * If the camera is currently initialized, close the connection. * We don't care if we are successful or not. */ if (camera->port && camera->pc && camera->pc->lh) gp_camera_exit (camera, NULL); /* We don't care if anything goes wrong */ if (camera->port) { gp_port_free (camera->port); camera->port = NULL; } if (camera->pc) { free (camera->pc->timeout_ids); free (camera->pc); camera->pc = NULL; } if (camera->fs) { gp_filesystem_free (camera->fs); camera->fs = NULL; } if (camera->functions) { free (camera->functions); camera->functions = NULL; } free (camera); return (GP_OK); } /** * Autodetect all detectable camera * * @param list a #CameraList that receives the autodetected cameras * @param context a #GPContext * @return a gphoto2 error code * * This camera will autodetected all cameras that can be autodetected. * This will for instance detect all USB cameras. * * CameraList *list; * gp_list_new (&list); * gp_camera_autodetect (list, context); * ... done! ... */ int gp_camera_autodetect (CameraList *list, GPContext *context) { CameraAbilitiesList *al = NULL; GPPortInfoList *il = NULL; int ret, i; CameraList *xlist = NULL; ret = gp_list_new (&xlist); if (ret < GP_OK) goto out; if (!il) { /* Load all the port drivers we have... */ ret = gp_port_info_list_new (&il); if (ret < GP_OK) goto out; ret = gp_port_info_list_load (il); if (ret < 0) goto out; ret = gp_port_info_list_count (il); if (ret < 0) goto out; } /* Load all the camera drivers we have... */ ret = gp_abilities_list_new (&al); if (ret < GP_OK) goto out; ret = gp_abilities_list_load (al, context); if (ret < GP_OK) goto out; /* ... and autodetect the currently attached cameras. */ ret = gp_abilities_list_detect (al, il, xlist, context); if (ret < GP_OK) goto out; /* Filter out the "usb:" entry */ ret = gp_list_count (xlist); if (ret < GP_OK) goto out; for (i=0;ipc->exit_requested = 0; /* * If the model hasn't been indicated, try to * figure it out (USB only). Beware of "Directory Browse". */ if (strcasecmp (camera->pc->a.model, "Directory Browse") && !strcmp ("", camera->pc->a.model)) { CameraAbilitiesList *al; GPPortInfoList *il; int m, p; char *ppath; GPPortType ptype; GPPortInfo info; CameraList *list; result = gp_list_new (&list); if (result < GP_OK) return result; GP_LOG_D ("Neither port nor model set. Trying auto-detection..."); /* Call auto-detect and choose the first camera */ CRSL (camera, gp_abilities_list_new (&al), context, list); CRSL (camera, gp_abilities_list_load (al, context), context, list); CRSL (camera, gp_port_info_list_new (&il), context, list); CRSL (camera, gp_port_info_list_load (il), context, list); CRSL (camera, gp_abilities_list_detect (al, il, list, context), context, list); if (!gp_list_count (list)) { gp_abilities_list_free (al); gp_port_info_list_free (il); gp_context_error (context, _("Could not detect " "any camera")); gp_list_free (list); return (GP_ERROR_MODEL_NOT_FOUND); } p = 0; CRSL (camera, gp_port_get_info (camera->port, &info), context, list); CRSL (camera, gp_port_info_get_path (info, &ppath), context, list); CRSL (camera, gp_port_info_get_type (info, &ptype), context, list); /* if the port was set before, then use that entry, but not if it is "usb:" */ if ((ptype == GP_PORT_USB) && strlen(ppath) && strcmp(ppath, "usb:")) { for (p = gp_list_count (list);p--;) { const char *xp; gp_list_get_value (list, p, &xp); if (!strcmp (xp, ppath)) break; } if (p<0) { gp_abilities_list_free (al); gp_port_info_list_free (il); gp_context_error (context, _("Could not detect any camera at port %s"), ppath); gp_list_free (list); return (GP_ERROR_FILE_NOT_FOUND); } } CRSL (camera, gp_list_get_name (list, p, &model), context, list); m = gp_abilities_list_lookup_model (al, model); CRSL (camera, m, context, list); CRSL (camera, gp_abilities_list_get_abilities (al, m, &a), context, list); gp_abilities_list_free (al); CRSL (camera, gp_camera_set_abilities (camera, a), context, list); CRSL (camera, gp_list_get_value (list, p, &port), context, list); p = gp_port_info_list_lookup_path (il, port); CRSL (camera, p, context, list); CRSL (camera, gp_port_info_list_get_info (il, p, &info), context, list); CRSL (camera, gp_camera_set_port_info (camera, info), context, list); gp_port_info_list_free (il); gp_list_free (list); } if (strcasecmp (camera->pc->a.model, "Directory Browse")) { switch (camera->port->type) { case GP_PORT_NONE: gp_context_error (context, _("You have to set the " "port prior to initialization of the camera.")); return (GP_ERROR_UNKNOWN_PORT); case GP_PORT_USB: if (gp_port_usb_find_device (camera->port, camera->pc->a.usb_vendor, camera->pc->a.usb_product) != GP_OK) { CRS (camera, gp_port_usb_find_device_by_class (camera->port, camera->pc->a.usb_class, camera->pc->a.usb_subclass, camera->pc->a.usb_protocol), context); } break; default: break; } } /* Load the library. */ GP_LOG_D ("Loading '%s'...", camera->pc->a.library); lt_dlinit (); camera->pc->lh = lt_dlopenext (camera->pc->a.library); if (!camera->pc->lh) { gp_context_error (context, _("Could not load required " "camera driver '%s' (%s)."), camera->pc->a.library, lt_dlerror ()); lt_dlexit (); return (GP_ERROR_LIBRARY); } /* Initialize the camera */ init_func = lt_dlsym (camera->pc->lh, "camera_init"); if (!init_func) { lt_dlclose (camera->pc->lh); lt_dlexit (); camera->pc->lh = NULL; gp_context_error (context, _("Camera driver '%s' is " "missing the 'camera_init' function."), camera->pc->a.library); return (GP_ERROR_LIBRARY); } if (strcasecmp (camera->pc->a.model, "Directory Browse")) { result = gp_port_open (camera->port); if (result < 0) { lt_dlclose (camera->pc->lh); lt_dlexit (); camera->pc->lh = NULL; return (result); } } result = init_func (camera, context); if (result < 0) { gp_port_close (camera->port); lt_dlclose (camera->pc->lh); lt_dlexit (); camera->pc->lh = NULL; memset (camera->functions, 0, sizeof (CameraFunctions)); return (result); } /* We don't care if that goes wrong */ #ifdef HAVE_MULTI gp_port_close (camera->port); #endif return (GP_OK); } /** * Retrieve a configuration \c window for the \c camera. * * @param camera a #Camera * @param window a #CameraWidget * @param context a #GPContext * @return gphoto2 error code * * This \c window can be used for construction of a configuration dialog. * */ int gp_camera_get_config (Camera *camera, CameraWidget **window, GPContext *context) { C_PARAMS (camera); CHECK_INIT (camera, context); if (!camera->functions->get_config) { gp_context_error (context, _("This camera does " "not provide any configuration options.")); CAMERA_UNUSED (camera, context); return (GP_ERROR_NOT_SUPPORTED); } CHECK_RESULT_OPEN_CLOSE (camera, camera->functions->get_config ( camera, window, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Sets the configuration. * * @param camera a #Camera * @param window a #CameraWidget * @param context a #GPContext * @return a gphoto2 error code * * Typically, a \c window is retrieved using #gp_camera_get_config and passed * to this function in order to adjust the settings on the camera. * **/ int gp_camera_set_config (Camera *camera, CameraWidget *window, GPContext *context) { C_PARAMS (camera && window); CHECK_INIT (camera, context); if (!camera->functions->set_config) { gp_context_error (context, _("This camera does " "not support setting configuration options.")); CAMERA_UNUSED (camera, context); return (GP_ERROR_NOT_SUPPORTED); } CHECK_RESULT_OPEN_CLOSE (camera, camera->functions->set_config (camera, window, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Retrieves a camera summary. * * @param camera a #Camera * @param summary a #CameraText * @param context a #GPContext * @return a gphoto2 error code * * This summary typically contains information like manufacturer, pictures * taken, or generally information that is not configurable. * **/ int gp_camera_get_summary (Camera *camera, CameraText *summary, GPContext *context) { C_PARAMS (camera && summary); CHECK_INIT (camera, context); if (!camera->functions->summary) { gp_context_error (context, _("This camera does " "not support summaries.")); CAMERA_UNUSED (camera, context); return (GP_ERROR_NOT_SUPPORTED); } CHECK_RESULT_OPEN_CLOSE (camera, camera->functions->summary (camera, summary, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Retrieves the \c manual for given \c camera. * * @param camera a #Camera * @param manual a #CameraText * @param context a #GPContext * @return a gphoto2 error code * * This manual typically contains information about using the camera. * **/ int gp_camera_get_manual (Camera *camera, CameraText *manual, GPContext *context) { C_PARAMS (camera && manual); CHECK_INIT (camera, context); if (!camera->functions->manual) { gp_context_error (context, _("This camera " "does not provide a manual.")); CAMERA_UNUSED (camera, context); return (GP_ERROR_NOT_SUPPORTED); } CHECK_RESULT_OPEN_CLOSE (camera, camera->functions->manual (camera, manual, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Retrieves information about the camera driver. * * @param camera a #Camera * @param about a #CameraText * @param context a #GPContext * @return a gphoto2 error code * * Typically, this information contains name and address of the author, * acknowledgements, etc. * **/ int gp_camera_get_about (Camera *camera, CameraText *about, GPContext *context) { C_PARAMS (camera && about); CHECK_INIT (camera, context); if (!camera->functions->about) { gp_context_error (context, _("This camera does " "not provide information about the driver.")); CAMERA_UNUSED (camera, context); return (GP_ERROR_NOT_SUPPORTED); } CHECK_RESULT_OPEN_CLOSE (camera, camera->functions->about (camera, about, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Captures an image, movie, or sound clip depending on the given \c type. * * @param camera a #Camera * @param type a #CameraCaptureType * @param path a #CameraFilePath * @param context a #GPContext * @return a gphoto2 error code * * The resulting file will be stored on the camera. The location gets stored * in \c path. The file can then be downloaded using #gp_camera_file_get. * **/ int gp_camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context) { C_PARAMS (camera); CHECK_INIT (camera, context); if (!camera->functions->capture) { gp_context_error (context, _("This camera can not capture.")); CAMERA_UNUSED (camera, context); return (GP_ERROR_NOT_SUPPORTED); } CHECK_RESULT_OPEN_CLOSE (camera, camera->functions->capture (camera, type, path, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Triggers capture of one or more images. * * @param camera a #Camera * @param context a #GPContext * @return a gphoto2 error code * * This functions just remotely causes the shutter release and returns * immediately. You will want to run #gp_camera_wait_event until a image * is added which can be downloaded using #gp_camera_file_get. **/ int gp_camera_trigger_capture (Camera *camera, GPContext *context) { C_PARAMS (camera); CHECK_INIT (camera, context); if (!camera->functions->trigger_capture) { gp_context_error (context, _("This camera can not trigger capture.")); CAMERA_UNUSED (camera, context); return (GP_ERROR_NOT_SUPPORTED); } CHECK_RESULT_OPEN_CLOSE (camera, camera->functions->trigger_capture (camera, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Captures a preview that won't be stored on the camera but returned in * supplied file. * * @param camera a #Camera * @param file a #CameraFile * @param context a #GPContext * @return a gphoto2 error code * * For example, you could use gp_capture_preview() for taking some sample * pictures before calling gp_capture(). * **/ int gp_camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context) { char *xname; C_PARAMS (camera && file); CHECK_INIT (camera, context); CR (camera, gp_file_clean (file), context); if (!camera->functions->capture_preview) { gp_context_error (context, _("This camera can " "not capture previews.")); CAMERA_UNUSED (camera, context); return (GP_ERROR_NOT_SUPPORTED); } CHECK_RESULT_OPEN_CLOSE (camera, camera->functions->capture_preview ( camera, file, context), context); gp_file_get_name_by_type (file, "capture_preview", GP_FILE_TYPE_NORMAL, &xname); /* FIXME: Marcus ... will go away, just keep compatible now. */ gp_file_set_name (file, xname); free (xname); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Wait for an event from the camera. * * @param camera a Camera * @param timeout amount of time to wait in 1/1000 seconds * @param eventtype received CameraEventType [out] * @param eventdata received event specific data [out] * @param context a GPContext * @return gphoto2 error code * * This function blocks and waits for an event to come from the camera. If * timeout occurs before an event is received then * *eventtype==GP_EVENT_TIMEOUT and eventdata is left unchanged. * If an event is received then eventtype is set to the type of event, and * eventdata is set to event specific data. See the CameraEventType enum * to see which eventtype's match to which types of eventdata. * */ int gp_camera_wait_for_event (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context) { C_PARAMS (camera); CHECK_INIT (camera, context); if (!camera->functions->wait_for_event) { CAMERA_UNUSED (camera, context); return (GP_ERROR_NOT_SUPPORTED); } CHECK_RESULT_OPEN_CLOSE (camera, camera->functions->wait_for_event ( camera, timeout, eventtype, eventdata, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Lists the files in supplied \c folder. * * @param camera a #Camera * @param folder a folder * @param list a #CameraList * @param context a #GPContext * @return a gphoto2 error code * **/ int gp_camera_folder_list_files (Camera *camera, const char *folder, CameraList *list, GPContext *context) { GP_LOG_D ("Listing files in '%s'...", folder); C_PARAMS (camera && folder && list); CHECK_INIT (camera, context); CR (camera, gp_list_reset (list), context); CHECK_RESULT_OPEN_CLOSE (camera, gp_filesystem_list_files (camera->fs, folder, list, context), context); CR (camera, gp_list_sort (list), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Lists the folders in supplied \c folder. * * @param camera a #Camera * @param folder a folder * @param list a #CameraList * @param context a #GPContext * @return a gphoto2 error code * **/ int gp_camera_folder_list_folders (Camera *camera, const char* folder, CameraList *list, GPContext *context) { GP_LOG_D ("Listing folders in '%s'...", folder); C_PARAMS (camera && folder && list); CHECK_INIT (camera, context); CR (camera, gp_list_reset (list), context); CHECK_RESULT_OPEN_CLOSE (camera, gp_filesystem_list_folders ( camera->fs, folder, list, context), context); CR (camera, gp_list_sort (list), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Deletes all files in a given \c folder. * * @param camera a #Camera * @param folder a folder * @param context a #GPContext * @return a gphoto2 error code * **/ int gp_camera_folder_delete_all (Camera *camera, const char *folder, GPContext *context) { GP_LOG_D ("Deleting all files in '%s'...", folder); C_PARAMS (camera && folder); CHECK_INIT (camera, context); CHECK_RESULT_OPEN_CLOSE (camera, gp_filesystem_delete_all (camera->fs, folder, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Uploads a file into given \c folder. * * @param camera a #Camera * @param folder a folder * @param file a #CameraFile * @param context a #GPContext * @return a gphoto2 error code * **/ int gp_camera_folder_put_file (Camera *camera, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context) { GP_LOG_D ("Uploading file into '%s'...", folder); C_PARAMS (camera && folder && file); CHECK_INIT (camera, context); CHECK_RESULT_OPEN_CLOSE (camera, gp_filesystem_put_file (camera->fs, folder, filename, type, file, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Retrieves information about a file. * * @param camera a #Camera * @param folder a folder * @param file the name of the file * @param info * @param context a #GPContext * @return a gphoto2 error code * **/ int gp_camera_file_get_info (Camera *camera, const char *folder, const char *file, CameraFileInfo *info, GPContext *context) { int result = GP_OK; const char *mime_type; const char *data; /* long int size; */ CameraFile *cfile; GP_LOG_D ("Getting file info for '%s' in '%s'...", file, folder); C_PARAMS (camera && folder && file && info); CHECK_INIT (camera, context); memset (info, 0, sizeof (CameraFileInfo)); /* Check first if the camera driver supports the filesystem */ CHECK_OPEN (camera, context); result = gp_filesystem_get_info (camera->fs, folder, file, info, context); CHECK_CLOSE (camera, context); if (result != GP_ERROR_NOT_SUPPORTED) { CAMERA_UNUSED (camera, context); return (result); } /* * The CameraFilesystem doesn't support file info. We simply get * the preview and the file and look for ourselves... */ /* It takes too long to get the file */ info->file.fields = GP_FILE_INFO_NONE; /* Get the preview */ info->preview.fields = GP_FILE_INFO_NONE; CRS (camera, gp_file_new (&cfile), context); if (gp_camera_file_get (camera, folder, file, GP_FILE_TYPE_PREVIEW, cfile, context) == GP_OK) { unsigned long size; info->preview.fields |= GP_FILE_INFO_SIZE | GP_FILE_INFO_TYPE; gp_file_get_data_and_size (cfile, &data, &size); info->preview.size = size; gp_file_get_mime_type (cfile, &mime_type); strncpy (info->preview.type, mime_type, sizeof (info->preview.type)); } gp_file_unref (cfile); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Sets some file properties like name or permissions. * * @param camera a #Camera * @param folder a folder * @param file the name of a file * @param info the #CameraFileInfo * @param context a #GPContext * @return a gphoto2 error code * **/ int gp_camera_file_set_info (Camera *camera, const char *folder, const char *file, CameraFileInfo info, GPContext *context) { C_PARAMS (camera && folder && file); CHECK_INIT (camera, context); CHECK_RESULT_OPEN_CLOSE (camera, gp_filesystem_set_info (camera->fs, folder, file, info, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Retrieves a file from the #Camera. * * @param camera a #Camera * @param folder a folder * @param file the name of a file * @param type the #CameraFileType * @param camera_file a #CameraFile * @param context a #GPContext * @return a gphoto2 error code * **/ int gp_camera_file_get (Camera *camera, const char *folder, const char *file, CameraFileType type, CameraFile *camera_file, GPContext *context) { GP_LOG_D ("Getting file '%s' in folder '%s'...", file, folder); C_PARAMS (camera && folder && file && camera_file); CHECK_INIT (camera, context); CR (camera, gp_file_clean (camera_file), context); /* Did we get reasonable foldername/filename? */ if (strlen (folder) == 0) { CAMERA_UNUSED (camera, context); return (GP_ERROR_DIRECTORY_NOT_FOUND); } if (strlen (file) == 0) { CAMERA_UNUSED (camera, context); return (GP_ERROR_FILE_NOT_FOUND); } CHECK_RESULT_OPEN_CLOSE (camera, gp_filesystem_get_file (camera->fs, folder, file, type, camera_file, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Reads a file partially from the #Camera. * * @param camera a #Camera * @param folder a folder * @param file the name of a file * @param type the #CameraFileType * @param offset the offset into the camera file * @param data the buffer receiving the data * @param size the size to be read and that was read * @param context a #GPContext * @return a gphoto2 error code * **/ int gp_camera_file_read (Camera *camera, const char *folder, const char *file, CameraFileType type, uint64_t offset, char *buf, uint64_t *size, GPContext *context) { GP_LOG_D ("Getting file '%s' in folder '%s'...", file, folder); C_PARAMS (camera && folder && file && buf && size); CHECK_INIT (camera, context); /* Did we get reasonable foldername/filename? */ if (strlen (folder) == 0) { CAMERA_UNUSED (camera, context); return (GP_ERROR_DIRECTORY_NOT_FOUND); } if (strlen (file) == 0) { CAMERA_UNUSED (camera, context); return (GP_ERROR_FILE_NOT_FOUND); } CHECK_RESULT_OPEN_CLOSE (camera, gp_filesystem_read_file (camera->fs, folder, file, type, offset, buf, size, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Deletes the file from \c folder. * * \param camera a #Camera * \param folder a folder * \param file the name of a file * \param context a #GPContext * \return a gphoto2 error code * **/ int gp_camera_file_delete (Camera *camera, const char *folder, const char *file, GPContext *context) { GP_LOG_D ("Deleting file '%s' in folder '%s'...", file, folder); C_PARAMS (camera && folder && file); CHECK_INIT (camera, context); CHECK_RESULT_OPEN_CLOSE (camera, gp_filesystem_delete_file ( camera->fs, folder, file, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Creates a new directory called \c name in the given \c folder. * * @param camera a #Camera * @param folder the location where to create the new directory * @param name the name of the directory to be created * @param context a #GPContext * @return a gphoto2 error code * **/ int gp_camera_folder_make_dir (Camera *camera, const char *folder, const char *name, GPContext *context) { C_PARAMS (camera && folder && name); CHECK_INIT (camera, context); CHECK_RESULT_OPEN_CLOSE (camera, gp_filesystem_make_dir (camera->fs, folder, name, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * Removes an (empty) directory called \c name from the given \c folder. * * @param camera a #Camera * @param folder the folder from which to remove the directory * @param name the name of the directory to be removed * @param context a #GPContext * @return a gphoto2 error code * */ int gp_camera_folder_remove_dir (Camera *camera, const char *folder, const char *name, GPContext *context) { C_PARAMS (camera && folder && name); CHECK_INIT (camera, context); CHECK_RESULT_OPEN_CLOSE (camera, gp_filesystem_remove_dir (camera->fs, folder, name, context), context); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * \brief Gets information on the camera attached storage. * * \param camera a #Camera * \param sifs Pointer to receive a pointer to/array of storage info items * \param nrofsifs Pointer to receive number of array entries * \param context a #GPContext * \return a gphoto2 error code * * Retrieves the storage information, like maximum and free space, for * the specified filesystem, if supported by the device. The storage * information is returned in an newly allocated array of * #CameraStorageInformation objects, to which the pointer pointed to * by #sifs will be set. * * The variable pointed to by #nrofsifs will be set to the number of * elements in that array. * * It is the caller's responsibility to free the memory of the array. * **/ int gp_camera_get_storageinfo ( Camera *camera, CameraStorageInformation **sifs, int *nrofsifs, GPContext *context) { C_PARAMS (camera && sifs && nrofsifs); CHECK_INIT (camera, context); CHECK_RESULT_OPEN_CLOSE (camera, gp_filesystem_get_storageinfo ( camera->fs, sifs, nrofsifs, context ), context ); CAMERA_UNUSED (camera, context); return (GP_OK); } /** * @param camera a Camera * @param start_func * @param stop_func * @param data * @return a gphoto2 error code * * If your frontend has something like idle loops, it is recommended you * use #gp_camera_set_timeout_funcs in order to give the camera driver the * possibility to keep up the connection to the camera. * */ void gp_camera_set_timeout_funcs (Camera *camera, CameraTimeoutStartFunc start_func, CameraTimeoutStopFunc stop_func, void *data) { if (!camera || !camera->pc) return; camera->pc->timeout_start_func = start_func; camera->pc->timeout_stop_func = stop_func; camera->pc->timeout_data = data; } /** * @param camera a #Camera * @param timeout number of seconds that should pass between each call to * \c func * @param func the function that should be called each \c timeout seconds * @return The id of the background process or a gphoto2 error code * * This function should be called by the camera driver during camera_init() * if the camera needs to be sent messages periodically in order to prevent * it from shutting down. * */ int gp_camera_start_timeout (Camera *camera, unsigned int timeout, CameraTimeoutFunc func) { int id; C_PARAMS (camera && camera->pc); if (!camera->pc->timeout_start_func) return (GP_ERROR_NOT_SUPPORTED); /* * We remember the id here in order to automatically remove * the timeout on gp_camera_exit. */ C_MEM (camera->pc->timeout_ids = realloc (camera->pc->timeout_ids, sizeof (int) * (camera->pc->timeout_ids_len + 1))); id = camera->pc->timeout_start_func (camera, timeout, func, camera->pc->timeout_data); if (id < 0) return (id); camera->pc->timeout_ids[camera->pc->timeout_ids_len] = id; camera->pc->timeout_ids_len++; return (id); } /** * Stop periodic calls to keepalive function. * * @param camera a #Camera * @param id the id of the background process previously returned by * #gp_camera_start_timeout * * Call this function in the camera driver if you want to stop a periodic * call to a function that has been started using #gp_camera_start_timeout. * */ void gp_camera_stop_timeout (Camera *camera, unsigned int id) { unsigned int i; if (!camera || !camera->pc) return; if (!camera->pc->timeout_stop_func) return; /* Check if we know this id. If yes, remove it. */ for (i = 0; i < camera->pc->timeout_ids_len; i++) if (camera->pc->timeout_ids[i] == id) break; if (i == camera->pc->timeout_ids_len) return; memmove (camera->pc->timeout_ids + i, camera->pc->timeout_ids + i + 1, sizeof (int) * (camera->pc->timeout_ids_len - i - 1)); camera->pc->timeout_ids_len--; camera->pc->timeout_ids = realloc (camera->pc->timeout_ids, sizeof (int) * camera->pc->timeout_ids_len); camera->pc->timeout_stop_func (camera, id, camera->pc->timeout_data); } libgphoto2-2.5.9/libgphoto2/gphoto2-list.c0000644000175000001440000002003012610415536015263 00000000000000/** \file gphoto2-list.c * * \author Copyright 2000 Scott Fritzinger * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #define CHECK_RESULT(result) {int r = (result); if (r < 0) return (r);} /** * Internal _CameraList data structure **/ struct _entry { char *name; char *value; }; struct _CameraList { int used; /* used entries */ int max; /* allocated entries */ struct _entry *entry; int ref_count; }; /** * \brief Creates a new #CameraList. * * \param list * \return a gphoto2 error code * **/ int gp_list_new (CameraList **list) { C_PARAMS (list); C_MEM (*list = calloc (1, sizeof (CameraList))); (*list)->ref_count = 1; return (GP_OK); } /** * \brief Increments the reference count of the list. * * \param list a #CameraList * \return a gphoto2 error code. * **/ int gp_list_ref (CameraList *list) { C_PARAMS (list && list->ref_count); list->ref_count++; return (GP_OK); } /** * \brief Decrements the reference count of the \c list. * * \param list a #CameraList * \return a gphoto2 error code * * If there are no references left, the \c list will be freed. * **/ int gp_list_unref (CameraList *list) { C_PARAMS (list && list->ref_count); if (list->ref_count == 1) /* time to free */ gp_list_free (list); else list->ref_count--; return (GP_OK); } /** * Frees the \c list. It is recommended to use #gp_list_unref instead. * * \param list the #CameraList to be freed * \return a gphoto2 error code * **/ int gp_list_free (CameraList *list) { int i; C_PARAMS (list && list->ref_count); for (i=0;iused;i++) { free (list->entry[i].name); list->entry[i].name = NULL; free (list->entry[i].value); list->entry[i].value = NULL; } free (list->entry); /* Mark this list as having been freed. That may help us * prevent access to already freed lists. */ list->ref_count = 0; free (list); return (GP_OK); } /** * Resets the \c list and removes all entries. * * \param list a #CameraList * \return a gphoto2 error code * **/ int gp_list_reset (CameraList *list) { int i; C_PARAMS (list && list->ref_count); for (i=0;iused;i++) { free (list->entry[i].name); list->entry[i].name = NULL; free (list->entry[i].value); list->entry[i].value = NULL; } /* keeps -> entry allocated for reuse. */ list->used = 0; return (GP_OK); } /** * Appends \c name and \c value to the \c list. * * \param list a #CameraList * \param name the name of the entry to append * \param value the value of the entry to append * \return a gphoto2 error code * **/ int gp_list_append (CameraList *list, const char *name, const char *value) { C_PARAMS (list && list->ref_count); if (list->used == list->max) { C_MEM (list->entry = realloc(list->entry,(list->max+100)*sizeof(struct _entry))); list->max += 100; } if (name) { C_MEM (list->entry[list->used].name = strdup (name)); } else { list->entry[list->used].name = NULL; } if (value) { C_MEM (list->entry[list->used].value = strdup (value)); } else { list->entry[list->used].value = NULL; } list->used++; return (GP_OK); } static int cmp_list (const void *a, const void *b) { const struct _entry *ca = a; const struct _entry *cb = b; return strcmp (ca->name, cb->name); } /** * Sorts the \c list entries with respect to the names. * * \param list a #CameraList * \return a gphoto2 error code * **/ int gp_list_sort (CameraList *list) { C_PARAMS (list && list->ref_count); qsort (list->entry, list->used, sizeof(list->entry[0]), cmp_list); return GP_OK; } /** * Counts the entries in the \c list. * * \param list a #CameraList * \return a gphoto2 error code * **/ int gp_list_count (CameraList *list) { C_PARAMS (list && list->ref_count); return (list->used); } /** * Retrieves the \c index of an arbitrary entry with \c name. * * \param list a #CameraList * \param index pointer to the result index (may be NULL, only set if found) * \param name name of the entry * \return a gphoto2 error code: GP_OK if found. * * No guarantees as to the speed of the search, or in what sequence * the list is searched. * **/ int gp_list_find_by_name (CameraList *list, int *index, const char *name) { int i; C_PARAMS (list && list->ref_count); C_PARAMS (name); /* We search backwards because our only known user * camlibs/ptp2/library.c thinks this is faster */ for (i=list->used-1; i >= 0; i--) { if (0==strcmp(list->entry[i].name, name)) { if (index) { (*index) = i; } return (GP_OK); } } return (GP_ERROR); } /** * Retrieves the \c name of entry with \c index. * * \param list a #CameraList * \param index index of the entry * \param name * \return a gphoto2 error code. * **/ int gp_list_get_name (CameraList *list, int index, const char **name) { C_PARAMS (list && list->ref_count); C_PARAMS (name); C_PARAMS (0 <= index && index < list->used); *name = list->entry[index].name; return (GP_OK); } /** * Retrieves the value of entry with \c index. * * \param list a #CameraList * \param index index of the entry * \param value * \return a gphoto2 error code * **/ int gp_list_get_value (CameraList *list, int index, const char **value) { C_PARAMS (list && list->ref_count); C_PARAMS (value); C_PARAMS (0 <= index && index < list->used); *value = list->entry[index].value; return (GP_OK); } /** * Sets the \c value of an entry. * * \param list a #CameraList * \param index index of the entry * \param value the value to be set * \return a gphoto2 error code * **/ int gp_list_set_value (CameraList *list, int index, const char *value) { char *newval; C_PARAMS (list && list->ref_count); C_PARAMS (value); C_PARAMS (0 <= index && index < list->used); C_MEM (newval = strdup(value)); free (list->entry[index].value); list->entry[index].value = newval; return (GP_OK); } /** * Sets the name of an entry. * * \param list a #CameraList * \param index index of entry * \param name name to be set * \return a gphoto2 error code * **/ int gp_list_set_name (CameraList *list, int index, const char *name) { char *newname; C_PARAMS (list && list->ref_count); C_PARAMS (name); C_PARAMS (0 <= index && index < list->used); C_MEM (newname = strdup(name)); free (list->entry[index].name); list->entry[index].name = newname; return (GP_OK); } /** * Adds \c count entries to the list. * * \param list a #CameraList * \param format the format * \param count number of entries to be added to the list * return a gphoto2 error code * * Typically, this function is called by a camera driver when there is no way * of retrieving the real name of a picture. In this case, when asked for a * file list (see #CameraFilesystemListFunc), the list is populated with dummy * names generated by this function. * **/ int gp_list_populate (CameraList *list, const char *format, int count) { int x; char buf[1024]; C_PARAMS (list && list->ref_count); C_PARAMS (format); gp_list_reset (list); for (x = 0; x < count; x++) { snprintf (buf, sizeof (buf), format, x + 1); CHECK_RESULT (gp_list_append (list, buf, NULL)); } return (GP_OK); } /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:nil * End: */ libgphoto2-2.5.9/libgphoto2/jpeg.h0000644000175000001440000000552412610415536013675 00000000000000/** \file * * \author This code was written by Nathan Stenzel for gphoto * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_JPEG_H__ #define __GPHOTO2_JPEG_H__ #include typedef enum { JPEG_START=0xD8, JPEG_COMMENT=0xFE, JPEG_APPO=0xE0, JPEG_QUANTIZATION=0xDB, JPEG_HUFFMAN=0xC4, JPEG_SOFC0=0xC0, JPEG_SSSEAHAL=0xDA, JPEG_EOI=0xD9 } jpegmarker; typedef struct chunk{ int size; unsigned char *data; } chunk; typedef char jpeg_quantization_table[64]; typedef struct jpeg { int count; struct chunk *marker[20]; /* I think this should be big enough */ }jpeg; chunk *gpi_jpeg_chunk_new(int length); chunk *gpi_jpeg_chunk_new_filled(int length, char *data); void gpi_jpeg_chunk_destroy(chunk *mychunk); void gpi_jpeg_chunk_print(chunk *mychunk); char gpi_jpeg_findff(int *location, chunk *picture); char gpi_jpeg_findactivemarker(char *id, int *location, chunk *picture); char *gpi_jpeg_markername(unsigned int c); jpeg *gpi_jpeg_new (void); void gpi_jpeg_destroy (jpeg *myjpeg); void gpi_jpeg_add_marker (jpeg *myjpeg, chunk *picture, int start, int end); void gpi_jpeg_add_chunk (jpeg *myjpeg, chunk *source); void gpi_jpeg_parse (jpeg *myjpeg, chunk *picture); void gpi_jpeg_print (jpeg *myjpeg); chunk *gpi_jpeg_make_start (void); chunk *gpi_jpeg_make_SOFC (int width, int height, char vh1, char vh2, char vh3, char q1, char q2, char q3); chunk *gpi_jpeg_makeSsSeAhAl (int huffset1, int huffset2, int huffset3); void gpi_jpeg_print_quantization_table(jpeg_quantization_table *table); chunk *gpi_jpeg_make_quantization(const jpeg_quantization_table * table, char number); jpeg_quantization_table *gpi_jpeg_quantization2table(chunk *qmarker); jpeg *gpi_jpeg_header(int width, int height, char vh1, char vh2, char vh3, char q1, char q2, char q3, const jpeg_quantization_table *quant1, const jpeg_quantization_table *quant2, char huffset1, char huffset2, char huffset3, chunk *huff1, chunk *huff2, chunk *huff3, chunk *huff4); char gpi_jpeg_write(CameraFile *file, const char *name, jpeg *myjpeg); #endif libgphoto2-2.5.9/libgphoto2/gamma.c0000644000175000001440000000443112610415536014021 00000000000000/** \file gamma.c * * \author Copyright 2001 Lutz Mueller * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include "gamma.h" #include #include static int gp_gamma_correct_triple (unsigned char *table_red, unsigned char *table_green, unsigned char *table_blue, unsigned char *data, unsigned int size) { unsigned int x; for (x = 0; x < (size * 3); x += 3) { data[x + 0] = table_red [data[x + 0]]; data[x + 1] = table_green[data[x + 1]]; data[x + 2] = table_blue [data[x + 2]]; } return (GP_OK); } /** * \brief Gamma correction * * Corrects size pixels within the table with a given Gamma * correction table. * * \param table the gamma correction table as generated by gp_gamma_fill_table() * \param data the data do process, both input and output * \param size in number of pixels (RGB byte pairs) * * \returns a gphoto error code */ int gp_gamma_correct_single (unsigned char *table, unsigned char *data, unsigned int size) { return (gp_gamma_correct_triple (table, table, table, data, size)); } /** * \brief Initialize a Gamma conversion table * * Initializes the gamma conversion table for later use by gp_gamma_correct_single(). * Requires a 256 byte array as table. * \param table a 256 byte array of unsigned char * \param g gamma correction value * * \returns a gphoto error code */ int gp_gamma_fill_table (unsigned char *table, double g) { unsigned int x; for (x = 0; x < 256; x++) table[x] = 255 * pow ((double) x/255., g); return (GP_OK); } libgphoto2-2.5.9/libgphoto2/gphoto2-library.c0000644000175000001440000000570112610415536015764 00000000000000/** \file * * \author Copyright 2001 Lutz Mueller * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include /** * \brief Get a unique camera id * \param id a #CameraText that receives the id string * * This function should write a unique id into id and return #GP_OK. That is, * choose a unique id, use strncpy in order to copy it into the id, and * return #GP_OK. The driver name should suffice. * * \returns a gphoto2 error code **/ int camera_id (CameraText *id) { strcpy (id->text, "sample driver"); return (GP_OK); } /** * \brief Get a list of abilities of all supported cameras * \param list a #CameraAbilitiesList * * This function should use #gp_abilities_list_append as many times as the * number of models the camera driver supports. That is, fill out (in a loop) * the #CameraAbilities for each model and append each of those to the * supplied list using gp_abilities_list_append(). Then, return #GP_OK. * * \returns a gphoto2 error code **/ int camera_abilities (CameraAbilitiesList *list) { /* Dummy implementation */ return (GP_OK); } /** * \brief Initialize the camera * \param camera a #Camera * * This is the most interesting function in your library. Here, you tell * gphoto2 what operations your camera supports and you try to connect * to the camera. That is, access camera->functions directly and set them * to your implementation (if you have any). Then, tell the #CameraFilesystem * (available in #camera->fs) how to retrieve lists * (gp_filesystem_set_list_funcs()), how to retrieve or set file information * (gp_filesystem_set_info_funcs()), how to get or delete files * (gp_filesystem_set_file_funcs()), or how to put files or delete all files * in a folder (#gp_filesystem_set_folder_funcs). After that, configure * the port (#camera->port) which is already opened by gphoto2. You just have * to call gp_port_settings_get(), adjust the settings, call * gp_port_settings_set(), and try to write to and read from the port. * If the camera responds, return #GP_OK. If not, return some * meaningful error code. * * \returns a gphoto2 error code **/ int camera_init (Camera *camera) { /* Dummy implementation */ return (GP_OK); } libgphoto2-2.5.9/libgphoto2/gphoto2-version.c0000644000175000001440000000416212610415524016002 00000000000000/** \file * * \author Copyright 2002 Hans Ulrich Niedermann #include const char **gp_library_version(GPVersionVerbosity verbose) { /* we could also compute/parse the short strings from the long ones, but the current method is easier for now :-) */ static const char *shrt[] = { PACKAGE_VERSION, #ifdef INCOMPLETE_CAMLIB_SET "INCOMPLETE CAMLIB SET (" INCOMPLETE_CAMLIB_SET ")", #else "all camlibs", #endif #ifdef HAVE_CC HAVE_CC, #else "unknown cc", #endif #ifdef HAVE_LTDL "ltdl", #else "no ltdl", #endif #ifdef HAVE_LIBEXIF "EXIF", #else "no EXIF", #endif NULL }; static const char *verb[] = { PACKAGE_VERSION, #ifdef INCOMPLETE_CAMLIB_SET "INCOMPLETE CAMLIB SET (" INCOMPLETE_CAMLIB_SET ")", #else "all camlibs", #endif #ifdef HAVE_CC HAVE_CC " (C compiler used)", #else "unknown (C compiler used)", #endif #ifdef HAVE_LTDL "ltdl (for portable loading of camlibs)", #else "no ltdl (for portable loading of camlibs)", #endif #ifdef HAVE_LIBEXIF "EXIF (for special handling of EXIF files)", #else "no EXIF (for special handling of EXIF files)", #endif NULL }; return((verbose == GP_VERSION_VERBOSE)?verb:shrt); } /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/libgphoto2/gphoto2-result.c0000644000175000001440000000544412610415524015637 00000000000000/** \file * * \author Copyright 2000 Scott Fritzinger * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif static struct { int result; const char *description; } result_descriptions[] = { {GP_ERROR_CORRUPTED_DATA, N_("Corrupted data")}, {GP_ERROR_FILE_EXISTS, N_("File exists")}, {GP_ERROR_MODEL_NOT_FOUND, N_("Unknown model")}, {GP_ERROR_DIRECTORY_NOT_FOUND, N_("Directory not found")}, {GP_ERROR_FILE_NOT_FOUND, N_("File not found")}, {GP_ERROR_DIRECTORY_EXISTS, N_("Directory exists")}, {GP_ERROR_CAMERA_BUSY, N_("I/O in progress")}, {GP_ERROR_PATH_NOT_ABSOLUTE, N_("Path not absolute")}, {GP_ERROR_CANCEL, N_("Operation cancelled")}, {GP_ERROR_CAMERA_ERROR, N_("Camera could not complete operation")}, {GP_ERROR_OS_FAILURE, N_("OS error in camera communication")}, {GP_ERROR_NO_SPACE, N_("Not enough free space")}, {0, NULL} }; /** * \brief Translate a gphoto error code into a localized string * \param result a gphoto2 error code * * Translates a gphoto2 error code into a human readable string. If the * error occurred in combination with a camera, * gp_camera_get_result_as_string() should be used instead. * * \return A string representation of a gphoto2 error code **/ const char * gp_result_as_string (int result) { unsigned int i; /* IOlib error? Pass through. */ if ((result <= 0) && (result >= -99)) return gp_port_result_as_string (result); /* Camlib error? */ if (result <= -1000) return (N_("Unknown camera library error")); for (i = 0; result_descriptions[i].description; i++) if (result_descriptions[i].result == result) return _(result_descriptions[i].description); return (N_("Unknown error")); } libgphoto2-2.5.9/libgphoto2/gphoto2-setting.c0000644000175000001440000001467612610415620016002 00000000000000/** \file * * \author Copyright 2000 Scott Fritzinger * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #include /** * Internal struct to store settings. */ typedef struct { /* key = value settings */ char id[256]; char key[256]; char value[256]; } Setting; /* Currently loaded settings */ static int glob_setting_count = 0; static Setting glob_setting[512]; static int save_settings (void); #define CHECK_RESULT(result) {int r = (result); if (r < 0) return (r);} static int load_settings (void); /** * \brief Retrieve a specific gphoto setting. * \param id the frontend id of the caller * \param key the key the frontend queries * \param value retrieved value * \return GPhoto error code * * This function retrieves the setting key for a specific frontend * id and copies the value into the passed value pointer. */ int gp_setting_get (char *id, char *key, char *value) { int x; C_PARAMS (id && key); if (!glob_setting_count) load_settings (); for (x=0; x2) { equals = 0; for (x=0; x2) { buf[strlen(buf)-1] = '\0'; id = strtok(buf, "="); strcpy(glob_setting[glob_setting_count].id,id); key = strtok(NULL, "="); strcpy(glob_setting[glob_setting_count].key,key); value = strtok(NULL, "\0"); if (value) strcpy(glob_setting[glob_setting_count++].value, value); else strcpy(glob_setting[glob_setting_count++].value, ""); } } fclose (f); return (GP_OK); } static int save_settings (void) { FILE *f; char buf[1024]; int x=0; snprintf (buf, sizeof(buf), "%s/.gphoto/settings", getenv ("HOME")); GP_LOG_D ("Saving %i setting(s) to file \"%s\"", glob_setting_count, buf); if ((f=fopen(buf, "w+"))==NULL) { GP_LOG_E ("Can't open settings file for writing."); return(0); } rewind(f); while (x < glob_setting_count) { fwrite(glob_setting[x].id, strlen(glob_setting[x].id),1,f); fputc('=', f); fwrite(glob_setting[x].key, strlen(glob_setting[x].key),1,f); fputc('=', f); fwrite(glob_setting[x].value, strlen(glob_setting[x].value),1,f); fputc('\n', f); x++; } fclose(f); return (GP_OK); } #if 0 static int dump_settings (void) { int x; gp_debug_printf(GP_DEBUG_LOW, "core", "All settings:"); for (x=0; x #include #include #include #include /** * CameraWidget: * * The internals of the #CameraWidget are only visible to gphoto2. You can * only access them using the functions provided by gphoto2. **/ struct _CameraWidget { CameraWidgetType type; char label [256]; char info [1024]; char name [256]; CameraWidget *parent; /* Current value of the widget */ char *value_string; int value_int; float value_float; /* For Radio and Menu */ char **choice; int choice_count; /* For Range */ float min; float max; float increment; /* Child info */ CameraWidget **children; int children_count; /* Widget was changed */ int changed; /* Widget is read only */ int readonly; /* Reference count */ int ref_count; /* Unique identifier */ int id; /* Callback */ CameraWidgetCallback callback; }; /** * \brief Create a new widget. * * The function creates a new #CameraWidget of specified type and with * given label. * * @param type the type * @param label the label * @param widget * @return a gphoto2 error code. * **/ int gp_widget_new (CameraWidgetType type, const char *label, CameraWidget **widget) { static int i = 0; C_PARAMS (label && widget); C_MEM (*widget = calloc (1, sizeof (CameraWidget))); (*widget)->type = type; strcpy ((*widget)->label, label); /* set the value to nothing */ (*widget)->value_int = 0; (*widget)->value_float = 0.0; (*widget)->value_string = NULL; (*widget)->ref_count = 1; (*widget)->choice_count = 0; (*widget)->choice = NULL; (*widget)->readonly = 0; (*widget)->id = i++; /* Clear all children pointers */ free ((*widget)->children); (*widget)->children = NULL; (*widget)->children_count = 0; return (GP_OK); } /** * \brief Frees a CameraWidget * * @param widget the #CameraWidget to be freed * @return a gphoto2 error code. * **/ int gp_widget_free (CameraWidget *widget) { int x; C_PARAMS (widget); /* Free children recursively */ if ((widget->type == GP_WIDGET_WINDOW) || (widget->type == GP_WIDGET_SECTION)) { for (x = 0; x < gp_widget_count_children (widget); x++) gp_widget_free (widget->children[x]); free (widget->children); } for (x = 0; x < widget->choice_count; x++) free (widget->choice[x]); free (widget->choice); free (widget->value_string); free (widget); return (GP_OK); } /** * \brief Increments the reference count for the CameraWidget * * @param widget a #CameraWidget you want to ref-count * @return a gphoto2 error code. * **/ int gp_widget_ref (CameraWidget *widget) { C_PARAMS (widget); widget->ref_count += 1; return (GP_OK); } /** * \brief Decrements the reference count for the CameraWidget * * @param widget a CameraWidget you want to unref * @return a gphoto2 error code. * **/ int gp_widget_unref (CameraWidget *widget) { C_PARAMS (widget); widget->ref_count -= 1; if (widget->ref_count == 0) gp_widget_free (widget); return (GP_OK); } /** * \brief Retrieves the information about the widget * * @param widget a #CameraWidget * @param info * @return a gphoto2 error code. * **/ int gp_widget_get_info (CameraWidget *widget, const char **info) { C_PARAMS (widget && info); *info = widget->info; return (GP_OK); } /** * \brief Sets the information about the widget * * @param widget a #CameraWidget * @param info Information about above widget * @return a gphoto2 error code. * **/ int gp_widget_set_info (CameraWidget *widget, const char *info) { C_PARAMS (widget && info); strcpy (widget->info, info); return (GP_OK); } /** * \brief Gets the name of the widget * * @param widget a #CameraWidget * @param name Name of above widget * @return a gphoto2 error code. * **/ int gp_widget_get_name (CameraWidget *widget, const char **name) { C_PARAMS (widget && name); *name = widget->name; return (GP_OK); } /** * \brief Sets the name of the widget * * @param widget a #CameraWidget * @param name Name of above widget * @return a gphoto2 error code. * **/ int gp_widget_set_name (CameraWidget *widget, const char *name) { C_PARAMS (widget && name); strcpy (widget->name, name); return (GP_OK); } /** * \brief Retrieves the unique id of the #CameraWidget * * @param widget a #CameraWidget * @param id * @return a gphoto2 error code. * **/ int gp_widget_get_id (CameraWidget *widget, int *id) { C_PARAMS (widget && id); *id = widget->id; return (GP_OK); } /** * \brief Tells that the widget has been changed * * @param widget a #CameraWidget * @param changed a boolean whether we changed or not * @return a gphoto2 error code * * Sets the changed of the CameraWidget depending on * the changed parameter. * **/ int gp_widget_set_changed (CameraWidget *widget, int changed) { C_PARAMS (widget); widget->changed = changed; return (GP_OK); } /** * \brief Tells that the widget is readonly * * @param widget a #CameraWidget * @param changed a boolean whether we are readonly or not * @return a gphoto2 error code * * Sets the readonly of the CameraWidget depending on * the changed parameter. * * Only useful when called from the camera driver. **/ int gp_widget_set_readonly (CameraWidget *widget, int readonly) { C_PARAMS (widget); widget->readonly = readonly; return (GP_OK); } /** * \brief Retrieves the readonly state of the #CameraWidget * * @param widget a #CameraWidget * @param readonly * @return a gphoto2 error code. * **/ int gp_widget_get_readonly (CameraWidget *widget, int *readonly) { C_PARAMS (widget && readonly); *readonly = widget->readonly; return (GP_OK); } /** * \brief Retrieves the type of the #CameraWidget * * @param widget a #CameraWidget * @param type * @return a gphoto2 error code. * **/ int gp_widget_get_type (CameraWidget *widget, CameraWidgetType *type) { C_PARAMS (widget && type); *type = widget->type; return (GP_OK); } /** * \brief Retrieves the label of the #CameraWidget * * @param widget a #CameraWidget * @param label * @return a gphoto2 error code. * **/ int gp_widget_get_label (CameraWidget *widget, const char **label) { C_PARAMS (widget && label); *label = widget->label; return (GP_OK); } /** * \brief Sets the value of the widget * * @param widget a #CameraWidget * @param value * @return a gphoto2 error code. * * Please pass * (char*) for GP_WIDGET_MENU, GP_WIDGET_TEXT, GP_WIDGET_RADIO, * (float) for GP_WIDGET_RANGE, * (int) for GP_WIDGET_DATE, GP_WIDGET_TOGGLE, and * (CameraWidgetCallback) for GP_WIDGET_BUTTON. * **/ int gp_widget_set_value (CameraWidget *widget, const void *value) { C_PARAMS (widget && value); switch (widget->type) { case GP_WIDGET_BUTTON: widget->callback = (CameraWidgetCallback) value; return (GP_OK); case GP_WIDGET_MENU: case GP_WIDGET_RADIO: case GP_WIDGET_TEXT: GP_LOG_D ("Setting value of widget '%s' to '%s'...", widget->label, (char*) value); if (widget->value_string) { if (strcmp (widget->value_string, (char*) value)) widget->changed = 1; free (widget->value_string); } else widget->changed = 1; widget->value_string = strdup ((char*)value); return (GP_OK); case GP_WIDGET_RANGE: if (widget->value_float != *((float*)value)) { widget->value_float = *((float*)value); widget->changed = 1; } return (GP_OK); case GP_WIDGET_DATE: case GP_WIDGET_TOGGLE: if (widget->value_int != *((int*)value)) { widget->value_int = *((int*)value); widget->changed = 1; } return (GP_OK); case GP_WIDGET_WINDOW: case GP_WIDGET_SECTION: default: return (GP_ERROR_BAD_PARAMETERS); } } /** * \brief Retrieves the value of the #CameraWidget * * @param widget a #CameraWidget * @param value * @return a gphoto2 error code. * **/ int gp_widget_get_value (CameraWidget *widget, void *value) { C_PARAMS (widget && value); switch (widget->type) { case GP_WIDGET_BUTTON: *(CameraWidgetCallback*)value = widget->callback; return (GP_OK); case GP_WIDGET_MENU: case GP_WIDGET_RADIO: case GP_WIDGET_TEXT: *((char**)value) = widget->value_string; return (GP_OK); case GP_WIDGET_RANGE: *((float*)value) = widget->value_float; return (GP_OK); case GP_WIDGET_TOGGLE: case GP_WIDGET_DATE: *((int*)value) = widget->value_int; return (GP_OK); case GP_WIDGET_SECTION: case GP_WIDGET_WINDOW: default: return (GP_ERROR_BAD_PARAMETERS); } } /** * \brief Appends a #CameraWidget to a #CameraWidget * * @param widget a #CameraWidget * @param child the #CameraWidget you would like to append to above * @return a gphoto2 error code. * **/ int gp_widget_append (CameraWidget *widget, CameraWidget *child) { C_PARAMS (widget && child); /* Return if they can't have any children */ C_PARAMS ((widget->type == GP_WIDGET_WINDOW) || (widget->type == GP_WIDGET_SECTION)); C_MEM (widget->children = realloc(widget->children, sizeof(CameraWidget*)*(widget->children_count+1))); widget->children[widget->children_count] = child; widget->children_count += 1; child->parent = widget; child->changed = 0; return (GP_OK); } /** * \brief Prepends a #CameraWidget to a #CameraWidget * * @param widget a #CameraWidget * @param child the #CameraWidget you would like to prepend to above * @return a gphoto2 error code. * **/ int gp_widget_prepend (CameraWidget *widget, CameraWidget *child) { int x; C_PARAMS (widget && child); /* Return if they can't have any children */ C_PARAMS ((widget->type == GP_WIDGET_WINDOW) || (widget->type == GP_WIDGET_SECTION)); C_MEM (widget->children = realloc(widget->children, sizeof(CameraWidget*)*(widget->children_count+1))); /* Shift down 1 */ for (x = widget->children_count; x > 0; x--) widget->children[x] = widget->children[x - 1]; /* Prepend the child */ widget->children[0] = child; widget->children_count += 1; child->parent = widget; child->changed = 0; return (GP_OK); } /** * \brief Counts the children of the #CameraWidget * * @param widget a #CameraWidget * @return a gphoto2 error code or number of children * **/ int gp_widget_count_children (CameraWidget *widget) { C_PARAMS (widget); return (widget->children_count); } /** * \brief Retrieves the child number \c child_number of the parent * * @param widget a #CameraWidget * @param child_number the number of the child * @param child * @return a gphoto2 error code. * **/ int gp_widget_get_child (CameraWidget *widget, int child_number, CameraWidget **child) { C_PARAMS (widget && child); C_PARAMS (child_number < widget->children_count); *child = widget->children[child_number]; return (GP_OK); } /** * \brief Retrieves the child with label \c label of the #CameraWidget * * @param widget a #CameraWidget * @param label the label of the child * @param child * @return a gphoto2 error code. * **/ int gp_widget_get_child_by_label (CameraWidget *widget, const char *label, CameraWidget **child) { int x; C_PARAMS (widget && label && child); if (strcmp (widget->label, label) == 0) { *child = widget; return (GP_OK); } for (x = 0; x < widget->children_count; x++) { int result; CameraWidget *child_rec; result = gp_widget_get_child_by_label (widget->children[x], label, &child_rec); if (result == GP_OK) { *child = child_rec; return (GP_OK); } } return (GP_ERROR_BAD_PARAMETERS); } /** * \brief Retrieves the child with id \c id of the widget * * @param widget a #CameraWidget * @param id the id of the child * @param child * @return a gphoto2 error code. * **/ int gp_widget_get_child_by_id (CameraWidget *widget, int id, CameraWidget **child) { int x; C_PARAMS (widget && child); if (widget->id == id) { *child = widget; return (GP_OK); } for (x = 0; x < widget->children_count; x++) { int result; CameraWidget *child_rec; result = gp_widget_get_child_by_id (widget->children[x], id, &child_rec); if (result == GP_OK) { *child = child_rec; return (GP_OK); } } return (GP_ERROR_BAD_PARAMETERS); } /** * \brief Retrieves the child with name \c name of the widget * * @param widget a #CameraWidget * @param name the name of the child * @return a gphoto2 error code. * **/ int gp_widget_get_child_by_name (CameraWidget *widget, const char *name, CameraWidget **child) { int x; C_PARAMS (widget && child); if (!strcmp (widget->name, name)) { *child = widget; return (GP_OK); } for (x = 0; x < widget->children_count; x++) { int result; CameraWidget *child_rec; result = gp_widget_get_child_by_name (widget->children[x], name, &child_rec); if (result == GP_OK) { *child = child_rec; return (GP_OK); } } return (GP_ERROR_BAD_PARAMETERS); } /** * \brief Retrieves the parent of a CameraWidget * * @param widget a #CameraWidget * @param parent the pointer to the parent to return * @return a gphoto2 error code. * **/ int gp_widget_get_parent (CameraWidget *widget, CameraWidget **parent) { C_PARAMS (widget && parent); *parent = widget->parent; return (GP_OK); } /** * \brief Retrieves the root of the #CameraWidget * * @param widget a #CameraWidget * @param root * @return a gphoto2 error code. * **/ int gp_widget_get_root (CameraWidget *widget, CameraWidget **root) { C_PARAMS (widget && root); if (widget->parent) return (gp_widget_get_root (widget->parent, root)); else { *root = widget; return (GP_OK); } } /** * \brief Sets some range parameters of the #CameraWidget * * @param range a #CameraWidget of type GP_WIDGET_RANGE * @param min * @param max * @param increment * @return a gphoto2 error code. * **/ int gp_widget_set_range (CameraWidget *range, float min, float max, float increment) { C_PARAMS (range); C_PARAMS (range->type == GP_WIDGET_RANGE); range->min = min; range->max = max; range->increment = increment; return (GP_OK); } /** * \brief Retrieves some range parameters of the #CameraWidget * * @param range a #CameraWidget of type GP_WIDGET_RANGE * @param min * @param max * @param increment * @return a gphoto2 error code. * **/ int gp_widget_get_range (CameraWidget *range, float *min, float *max, float *increment) { C_PARAMS (range && min && max && increment); C_PARAMS (range->type == GP_WIDGET_RANGE); *min = range->min; *max = range->max; *increment = range->increment; return (GP_OK); } /** * \brief Adds a choice to the #CameraWidget * * @param widget a #CameraWidget of type GP_WIDGET_RADIO or GP_WIDGET_MENU * @param choice * @return a gphoto2 error code. * **/ int gp_widget_add_choice (CameraWidget *widget, const char *choice) { C_PARAMS (widget && choice); C_PARAMS ((widget->type == GP_WIDGET_RADIO) || (widget->type == GP_WIDGET_MENU)); C_MEM (widget->choice = realloc (widget->choice, sizeof(char*)*(widget->choice_count+1))); widget->choice[widget->choice_count] = strdup(choice); widget->choice_count += 1; return (GP_OK); } /** * \brief Counts the choices of the #CameraWidget * * @param widget a #CameraWidget of type GP_WIDGET_RADIO or GP_WIDGET_MENU * @return a gphoto2 error code or number of choices. * **/ int gp_widget_count_choices (CameraWidget *widget) { C_PARAMS (widget); C_PARAMS ((widget->type == GP_WIDGET_RADIO) || (widget->type == GP_WIDGET_MENU)); return (widget->choice_count); } /** * \brief Retrieves the choice number \c choice_number * * @param widget a #CameraWidget of type GP_WIDGET_RADIO or GP_WIDGET_MENU * @param choice_number * @param choice * @return a gphoto2 error code * **/ int gp_widget_get_choice (CameraWidget *widget, int choice_number, const char **choice) { C_PARAMS (widget && choice); C_PARAMS ((widget->type == GP_WIDGET_RADIO) || (widget->type == GP_WIDGET_MENU)); C_PARAMS (choice_number < widget->choice_count); *choice = widget->choice[choice_number]; return (GP_OK); } /** * \brief Tells if the widget has been changed * * @param widget a #CameraWidget * @return a gphoto2 error code or changed flag. * * Returns 1 if the state of the #CameraWidget has been changed or 0 if not. * In addition, it resets the changed flag to 0. * **/ int gp_widget_changed (CameraWidget *widget) { int val; C_PARAMS (widget); val = widget->changed; widget->changed = 0; return (val); } libgphoto2-2.5.9/libgphoto2/bayer.h0000644000175000001440000000477312610415536014057 00000000000000/** \file * * \author Copyright 2001 Lutz Mueller * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __BAYER_H__ #define __BAYER_H__ /** * \brief how the bayer CCD array is layed out * * This enumeration defines how the CCD bayer array is laid out. */ typedef enum { BAYER_TILE_RGGB = 0, /**< \brief raster is RG,GN */ BAYER_TILE_GRBG = 1, /**< \brief raster is GR,BG */ BAYER_TILE_BGGR = 2, /**< \brief raster is BG,GR */ BAYER_TILE_GBRG = 3, /**< \brief raster is RG,GB */ BAYER_TILE_RGGB_INTERLACED = 4, /**< \brief scanline order: R1,G1,R2,G2,...,G1,B1,G2,B2,... */ BAYER_TILE_GRBG_INTERLACED = 5, /**< \brief scanline order: G1,R1,R2,G2,...,B1,G1,B2,G2,... */ BAYER_TILE_BGGR_INTERLACED = 6, /**< \brief scanline order: B1,G1,R2,G2,...,G1,R1,G2,R2,... */ BAYER_TILE_GBRG_INTERLACED = 7, /**< \brief scanline order: G1,B1,G2,B2,...,R1,G1,R2,G2,... */ } BayerTile; int gp_bayer_expand (unsigned char *input, int w, int h, unsigned char *output, BayerTile tile); int gp_bayer_decode (unsigned char *input, int w, int h, unsigned char *output, BayerTile tile); int gp_bayer_interpolate (unsigned char *image, int w, int h, BayerTile tile); /* * The following two functions use an alternative procedure called Adaptive * Homogeneity-directed demosaicing instead of the standard bilinear * interpolation with basic edge-detection method used in the previous two * functions. To use or test this method of Bayer interpolation, just use * gp_ahd_decode() in the same way and in the same place as gp_bayer_decode() * is used. */ int gp_ahd_decode (unsigned char *input, int w, int h, unsigned char *output, BayerTile tile); int gp_ahd_interpolate (unsigned char *image, int w, int h, BayerTile tile); #endif /* __BAYER_H__ */ libgphoto2-2.5.9/libgphoto2/gamma.h0000644000175000001440000000207712610415536014032 00000000000000/** \file * * \author Copyright 2001 Lutz Mueller * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GAMMA_H__ #define __GAMMA_H__ int gp_gamma_fill_table (unsigned char *table, double g); int gp_gamma_correct_single (unsigned char *table, unsigned char *data, unsigned int data_size); #endif /* __GAMMA_H__ */ libgphoto2-2.5.9/libgphoto2/exif.c0000644000175000001440000004456412610415524013702 00000000000000/** \file \brief EXIF file library for GPHOTO package \author Copyright 1999 Matthew G. Martin Generic gphoto implementation and extension by Edouard Lafargue. Tag descriptions and an ever-increasing number of structural details Taken from "exifdump.py" by Thierry Bousch Thanks to Paul Wood for sub-ifd parsing. \par License 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. \par 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. \par 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 */ #include "exif.h" /* * Conventions: * * "tag number" (tagnum) : ID number of a tag (see list just below). * "tag index" (tagind) : index number of a tag inside an EXIF structure * (for example, tag number one if the first tag, etc..) * "tag name" (tagname) : name of the tag as defined in the EXIF standard. */ static int exif_debug=0; /* Size of various tags */ static const int exif_sizetab[13]={ 0,1,1,2,4,8,1,1,2,4,8,4,8 }; static const struct tagarray{ int num; char* desc; } tagnames[]= { {0xFE, "NewSubFileType"}, {0x100, "ImageWidth"}, {0x101, "ImageLength"}, {0x102, "BitsPerSample"}, {0x103, "Compression"}, {0x106, "PhotometricInterpretation"}, {0x10A, "FillOrder"}, {0x10D, "DocumentName"}, {0x10E, "ImageDescription"}, {0x10F, "Make"}, {0x110, "Model"}, {0x111, "StripOffsets"}, {0x112, "Orientation"}, {0x115, "SamplesPerPixel"}, {0x116, "RowsPerStrip"}, {0x117, "StripByteCounts"}, {0x11A, "XResolution"}, {0x11B, "YResolution"}, {0x11C, "PlanarConfiguration"}, {0x128, "ResolutionUnit"}, {0x12D, "TransferFunction"}, {0x131, "Software"}, {0x132, "DateTime"}, {0x13B, "Artist"}, {0x13E, "WhitePoint"}, {0x13F, "PrimaryChromaticities"}, {0x156, "TransferRange"}, {0x200, "JPEGProc"}, {0x201, "JPEGInterchangeFormat"}, {0x202, "JPEGInterchangeFormatLength"}, {0x211, "YCbCrCoefficients"}, {0x212, "YCbCrSubSampling"}, {0x213, "YCbCrPositioning"}, {0x214, "ReferenceBlackWhite"}, {0x828D, "CFARepeatPatternDim"}, {0x828E, "CFAPattern"}, {0x828F, "BatteryLevel"}, {0x8298, "Copyright"}, {0x829A, "ExposureTime"}, {0x829D, "FNumber"}, {0x83BB, "IPTC/NAA"}, {0x8769, "ExifOffset"}, {0x8773, "InterColorProfile"}, {0x8822, "ExposureProgram"}, {0x8824, "SpectralSensitivity"}, {0x8825, "GPSInfo"}, {0x8827, "ISOSpeedRatings"}, {0x8828, "OECF"}, {0x9000, "ExifVersion"}, {0x9003, "DateTimeOriginal"}, {0x9004, "DateTimeDigitized"}, {0x9101, "ComponentsConfiguration"}, {0x9102, "CompressedBitsPerPixel"}, {0x9201, "ShutterSpeedValue"}, {0x9202, "ApertureValue"}, {0x9203, "BrightnessValue"}, {0x9204, "ExposureBiasValue"}, {0x9205, "MaxApertureValue"}, {0x9206, "SubjectDistance"}, {0x9207, "MeteringMode"}, {0x9208, "LightSource"}, {0x9209, "Flash"}, {0x920A, "FocalLength"}, {0x927C, "MakerNote"}, {0x9286, "UserComment"}, {0x9290, "SubSecTime"}, {0x9291, "SubSecTimeOriginal"}, {0x9292, "SubSecTimeDigitized"}, {0xA000, "FlashPixVersion"}, {0xA001, "ColorSpace"}, {0xA002, "ExifImageWidth"}, {0xA003, "ExifImageLength"}, {0xA005, "InteroperabilityOffset"}, {0xA20B, "FlashEnergy"}, {0xA20C, "SpatialFrequencyResponse"}, {0xA20E, "FocalPlaneXResolution"}, {0xA20F, "FocalPlaneYResolution"}, {0xA210, "FocalPlaneResolutionUnit"}, {0xA214, "SubjectLocation"}, {0xA215, "ExposureIndex"}, {0xA217, "SensingMethod"}, {0xA300, "FileSource"}, {0xA301, "Scenetype"}, {0,"end"} }; /* * Foward declarations. move to exif.h if you want to export. */ static int gpi_getvalue(unsigned char *data,int tagind); static int gpi_datsize(unsigned char *data,int tagind); static int gpi_tagnum( unsigned char *data,int tagind); static int gpi_getintval(unsigned char *data, int tagnum); static long gpi_exif_get_lilend(unsigned char *data, int size); static int gpe_theval(unsigned char *data,int tagind); static void gpi_setval(unsigned char *data,int tagind,long newval); static long exif_next_ifd(unsigned char *exif,int num); static int gpi_exif_get_comment(exifparser *exifdat, char **comment); static int gpi_exif_get_field( int tag_number, int ifd, exifparser *exifdata, ExifData *tag_data); /* * Utility functions: get fields in little-endian format, * initialize data structures, etc. */ /* * Convert to Intel-Endian number. * * data : pointer to the data to convert * size : size of the data to convert * * Returns : the value */ static long gpi_exif_get_lilend(unsigned char *data, int size){ long total; total=0; for (--size;size>=0;size--){ total<<=8; total+=(unsigned char)(data[size]); } return(total); } /* * Return "value" of directory entry at tagind */ static int gpe_theval(unsigned char *data,int tagind){ return(gpi_exif_get_lilend(data+tagind*12+10,4)); } /* * Set the "value" of directory entry at tagind. */ static void gpi_setval(unsigned char *data,int tagind,long newval){ int i; for (i=0;i<4;i++) data[tagind*12+10+i]=0xff&(newval>>(i*8)); if (gpi_getvalue(data,tagind)!=newval) printf("Setptr: error %d inst %ld\n",gpe_theval(data,tagind),newval); } /* * Returns the offset of the next IFD entry after * offset "num". * * exif : exif data * num : start offset * * returns: offset of next IFD. */ static long exif_next_ifd(unsigned char *exif,int num){ int offset=(exif[num]+(exif[num+1]<<8))*12+num+2; if (exif_debug) printf("next_ifd,offset=%d\n",offset); return(gpi_exif_get_lilend(exif+offset,4)); } /* * Parse an exif data structure and initialise the "exifparser". * * exifdat : the exif data * * returns : size of the rest of the file. * -1 if failed. */ static int exif_parse_data(exifparser *exifdat) { long offset=0; ExifData tagdat; exif_debug=1; /* Check that it's not already preparsed */ /* Doesn't work if we don't initialize this first... */ /* if (exifdat->preparsed) return 0; */ if (exif_debug) printf("Parsing exif structure\n"); /* First, verify that we really have an EXIF file */ /* Note: maybe we could also generalize to TIFF... */ if ((memcmp("Exif",exifdat->header+6,4)) || memcmp("\377\330\377\341",exifdat->header,4)){ fprintf(stderr,"Not exif data\n"); return(-1); } exifdat->exiflen = exifdat->header[5] + (exifdat->header[4]<<8) - 8; if (exif_debug) printf("Exif length is %i\n",exifdat->exiflen); /* Count the number of IFD's and register their pointers. */ exifdat->endian=0; if (exifdat->data[0]!='I') { exifdat->endian=1; printf("%c,Intel-Endian format only supported right now!\n", exifdat->data[0]); return(-1); } offset=gpi_exif_get_lilend(exifdat->data+4,4); /*Get offset of first IFD */ exifdat->ifdcnt=-1; /*Step through each IFD */ do { exifdat->ifdcnt++; exifdat->ifds[exifdat->ifdcnt] = exifdat->data+offset; exifdat->ifdtags[exifdat->ifdcnt] = gpi_exif_get_lilend(exifdat->data+offset,2); } while ((offset=exif_next_ifd(exifdat->data,offset))); exifdat->ifdcnt++; /* Look for the EXIF IFD */ exifdat->preparsed=1; /* Indicate that our exifparser is initialized */ /* Has to be done before calling gpi_exif_get_field */ if ( ! gpi_exif_get_field( EXIF_ExifOffset, 0, exifdat, &tagdat)) { printf("No EXIF information stored in this image\n"); } else { if (exif_debug) printf("Offset to the Exif subIFD is %d\n",tagdat.intval); exifdat->ifds[exifdat->ifdcnt] = exifdat->data + tagdat.intval; exifdat->ifdtags[exifdat->ifdcnt] = gpi_exif_get_lilend(exifdat->data+tagdat.intval,2); exifdat->ifdcnt++; } if (exif_debug) printf("Finished parsing exif structure\n"); return exifdat->exiflen; } /* * tag-level functions: get/set tags in the EXIF structure */ /** * Returns the value of a field, identified by its tag and the IFD. * * Specifying an IFD of '-1' will return the first occurence of * the tag in the first IFD where it finds it. * * tag_number: tag that identifies the field * ifd : image file directory where to look for that tag * exifdata : pointer to the EXIF data * tag_data : filled by this function, contains the actual data * * returns : 1 on success, 0 on failure */ static int gpi_exif_get_field( int tag_number, int ifd, exifparser *exifdata, ExifData *tag_data) { int numtags,i, tag; unsigned char *ifdp, *data; /* Sanity check first: */ exif_debug=1; if ( !exifdata->preparsed ) { if(exif_parse_data(exifdata) < 0) return 0; } if (ifd == -1) { for (i = 0; i < exifdata->ifdcnt+1; i++){ if (exif_debug) printf("Searching in IFD %d\n",i); if ( gpi_exif_get_field(tag_number, i, exifdata, tag_data) == 1) return 1; } return 0; /* We did not find it. */ } else { /* Find tag in a specific IFD */ ifdp = exifdata->ifds[ifd]; numtags=gpi_exif_get_lilend(ifdp,2); /* How many tags in the IFD */ if (exif_debug) printf("gpi_exif_get_field: %d tags in ifd %d\n",numtags, ifd); i=-1; do { i++; tag = gpi_exif_get_lilend(ifdp+i*12+2, 2); /* Get the tag ID */ /* if (exif_debug) fprintf(stderr,"Found tag %d \n",tag); */ } while ((i < numtags) && (tag != tag_number)); if(tag != tag_number) { if (exif_debug) fprintf(stderr,"Tag %d not found\n",tag_number); return 0; } ifdp = ifdp+i*12+2; /* Place pointer at TAG type position */ tag_data->tag = tag; tag_data->type = gpi_exif_get_lilend(ifdp+2,2); /* tag type */ tag_data->size = exif_sizetab[tag_data->type]*gpi_exif_get_lilend(ifdp+4,4); if (exif_debug) printf("(%d bytes) ",tag_data->size); ifdp += 8; /* place pointer at beginning of the contents of the field */ /* Data types smaller than 4 bytes are stored directly in the IFD field value. Otherwise, that value is an offset to the real data */ if (tag_data->size > 4) { ifdp = exifdata->data + gpi_exif_get_lilend(ifdp,4); } /* Last operation, get the data itself: */ /* Allocate memory, and copy the data */ data=malloc(tag_data->size); if (data==NULL){ fprintf(stderr,"gpi_exif_get_field: could not malloc\n"); return 0; } if (tag_data->type == EXIF_ASCII) { memcpy(data,ifdp,tag_data->size); /* Normally, the exif data includes a terminating 0 */ tag_data->data = data; if(exif_debug) printf("\"%s\"",data); } else { for (i = 0; i < tag_data->size; i += exif_sizetab[tag_data->type]) { /*if (exif_debug) fprintf(stderr,"."); */ if ( tag_data->type % 5 ) { memcpy(data+i,ifdp+i,exif_sizetab[tag_data->type]); } else { /* Fraction */ tag_data->num =gpi_exif_get_lilend(ifdp+i,4); tag_data->den =gpi_exif_get_lilend(ifdp+i+4,4); if(exif_debug) printf("%d/%d=%.3g ",tag_data->num, tag_data->den, (tag_data->den==0)?0:(1.0*tag_data->num/tag_data->den)); } } /* If the value can be put into an int, save the trouble and store */ /* it into "intval" right away... */ if(tag_data->type != EXIF_ASCII && tag_data->type != EXIF_RATIONAL && tag_data->type != EXIF_UNDEFINED && tag_data->type != EXIF_SRATIONAL) { tag_data->intval = gpi_exif_get_lilend(data,exif_sizetab[tag_data->type]); if(exif_debug) printf("'%d'",tag_data->intval); } tag_data->data = data; /* Save the data field */ } if (exif_debug) printf("\n"); /*end of this tag */ return 1; } } /* * Higher-level functions: get/set logical entities, such as * comments, thumbnail, etc. */ /* * Gets the comment field if it exists. */ static int gpi_exif_get_comment(exifparser *exifdat, char **comment) { ExifData tagdat; if (exif_parse_data(exifdat)<0) return 0; /* User Comment is in IFD number 2 */ if ( ! gpi_exif_get_field( EXIF_UserComment, 2, exifdat, &tagdat)) { if (exif_debug) printf("No comment field in this image\n"); return 0; } else { *comment = malloc (tagdat.size+1); memcpy(*comment,tagdat.data,tagdat.size); return tagdat.size; } } /* * Gets the thumbnail of an EXIF image. * The thumbnail size is provided * * The returned thumbnail might be in JPEG or TIFF format. */ unsigned char *gpi_exif_get_thumbnail_and_size(exifparser *exifdat, long *size) { unsigned char *imagedata,*exifimg,*newimg,*curptr; unsigned int entry; long dataptr,dsize,tag,datvec,tmp; unsigned int i,j; exif_debug=1; if (exif_parse_data(exifdat)<0) return(NULL); *size = 0; newimg=malloc(exifdat->exiflen); if (newimg==NULL){ fprintf(stderr,"gpi_exif_get_thumbnail: could not malloc\n"); return(NULL); } /* Copy header*/ memcpy(newimg,exifdat->data,8); curptr=newimg+8; *size += 8; if (exif_debug) { ExifData owner; char *comment=NULL; printf("Decoding EXIF fields in thumbnail\n"); gpi_exif_get_field( EXIF_Model, -1, exifdat, &owner); printf("Camera model: %s\n",owner.data); printf("Comment for this picture (%d chars)",gpi_exif_get_comment( exifdat, &comment)); if (comment) { printf(" -> %s\n",comment); free(comment); } gpi_exif_get_field( EXIF_SubjectDistance, 2, exifdat, &owner); /* dump_exif(exifdat); */ } /* Skip to Thumbnail image data */ if(exifdat->ifdcnt<2) { if (exif_debug) { fprintf(stderr,"Too few ifds, doesn't look right. Giving up\n"); } *size = 0; free(newimg); return(NULL); /* Things don't look right...*/ } /* Jump to thumbnail image data */ exifimg=exifdat->ifds[1]; /* Copy number of entries */ memcpy(curptr,exifimg,2); curptr+=2; *size += 2; entry=gpi_exif_get_lilend(exifimg,2); if (exif_debug) printf("Entry is %d \n",entry); /* See if thumb is a JPEG */ tmp=gpi_getintval(exifimg,EXIF_JPEGInterchangeFormat); /*imagedata start*/ if (tmp>0) { /* jpeg image */ if (exif_debug) fprintf(stderr,"Found jpeg thumb data\n"); dsize=gpi_getintval(exifimg,EXIF_JPEGInterchangeFormatLength); if (dsize==-1){ fprintf(stderr,"No Jpeg size tag for thumbnail, skipping\n"); *size = 0; free(newimg); return(NULL); } imagedata=exifdat->data+tmp; memcpy(newimg,imagedata,dsize); *size += dsize; return(newimg); } /* Try a TIFF */ tmp=gpi_getintval(exifimg,EXIF_StripOffsets); /*imagedata start*/ if (tmp==-1) { fprintf(stderr,"gpe_get_thumbnail: Tiff or jpeg data not found, skipping\n"); *size = 0; free(newimg); return(NULL); } imagedata=exifdat->data+tmp; dataptr=gpi_getintval(exifimg,EXIF_StripByteCounts); /* imagedata size */ if (dataptr==-1) { printf("Split two\n"); *size = 0; free(newimg); return(NULL); } if (exif_debug) printf("Imagedata size is %ld bytes\n",dataptr); for (i=0;idata[datvec+j]; memcpy(curptr,exifimg+12*i+2,12); curptr+=12; *size += 12; } } } memcpy(curptr,exifimg+12*entry+10,4); /* Write 4 zero bytes */ curptr+=4; memcpy(curptr,imagedata,dataptr);/* ? */ curptr+=dataptr; *size += 4+dataptr; return newimg; } /** * Return tag number of directory entry at tag index * * data : pointer to EXIF data, aligned to the beginning of an IFD * tagind : index of the tag within the IFD * * returns: tag ID number */ static int gpi_tagnum( unsigned char *data,int tagind){ return(gpi_exif_get_lilend(data+tagind*12+2,2)); } /* * Get the value of a tag as an integer. * only works for 4 byte values. * * data : exif data, aligned to the beginning of an IFD. * tagnum : tag number. * * returns: -1 if the tag is not found. */ static int gpi_getintval(unsigned char *data, int tagnum) { int numtags,i,tag,tagtype; numtags=gpi_exif_get_lilend(data,2); if (exif_debug) printf("getval:%d tags\n",numtags); i=-1; do { i++; tag=gpi_exif_get_lilend(data+i*12+2,2); } while ((iifdtags[ifdnum];i++){ togphotostr(exifdata,ifdnum,i,datastrings+i*2,datastrings+i*2+1); /* printf("%s = %s\n",datastrings[i*2],datastrings[i*2+1]);*/ } } #endif /** * Return data size of directory entry at tagind */ static int gpi_datsize(unsigned char *data,int tagind){ return(exif_sizetab[gpi_exif_get_lilend(data+tagind*12+4,2)]*gpi_exif_get_lilend(data+tagind*12+6,4)); } int gpi_exif_stat(exifparser *exifdata) { long offset=0; exifdata->endian=0; if (exifdata->data[0]!='I') { exifdata->endian=1; printf("%c,Intel-Endian format only supported right now!\n", exifdata->data[0]); return(-1); } offset=gpi_exif_get_lilend(exifdata->data+4,4); /*Get offset of first IFD*/ exifdata->ifdcnt=-1; /*Step through each IFD (looks like there should be 2 or 3)*/ do{ exifdata->ifdcnt++; exifdata->ifds[exifdata->ifdcnt] = exifdata->data+offset; exifdata->ifdtags[exifdata->ifdcnt] = gpi_exif_get_lilend(exifdata->data+offset,2); }while((offset=exif_next_ifd(exifdata->data,offset))); exifdata->ifdcnt++; exifdata->preparsed=1; return(0); } libgphoto2-2.5.9/libgphoto2/gphoto2-abilities-list.c0000644000175000001440000004065412610415536017244 00000000000000/** \file gphoto2-abilities-list.c * \brief List of supported camera models including their abilities. * * \author Copyright 2000 Scott Fritzinger * * \par * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define bind_textdomain_codeset(Domain,Charset) (Domain) # define _(String) (String) # define N_(String) (String) #endif /** \internal */ #define CHECK_RESULT(result) {int r = (result); if (r < 0) return (r);} /** \internal */ struct _CameraAbilitiesList { int count; CameraAbilities *abilities; }; /** \internal */ static int gp_abilities_list_lookup_id (CameraAbilitiesList *, const char *); /** \internal */ static int gp_abilities_list_sort (CameraAbilitiesList *); /** * \brief Set the current character codeset libgphoto2 is operating in. * * Set the codeset for all messages returned by libgphoto2. * \param codeset New codeset for the messages. For instance "utf-8". * \return old codeset as returned from bind_textdomain_codeset(). * * You would then call gp_abilities_list_load() in order to * populate it. */ const char* gp_message_codeset (const char *codeset) { gp_port_message_codeset (codeset); return bind_textdomain_codeset (GETTEXT_PACKAGE, codeset); } /** * \brief Allocate the memory for a new abilities list. * * Function to allocate the memory for a new abilities list. * \param list CameraAbilitiesList object to initialize * \return gphoto2 error code * * You would then call gp_abilities_list_load() in order to * populate it. */ int gp_abilities_list_new (CameraAbilitiesList **list) { C_PARAMS (list); /* * We do this here because everybody needs to call this function * first before accessing a camera. Pretty ugly, but I don't know * an other way without introducing a global initialization * function... */ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); C_MEM (*list = calloc (1, sizeof (CameraAbilitiesList))); return (GP_OK); } /** * \brief Free the given CameraAbilitiesList object. * * \param list a CameraAbilitiesList * \return a gphoto2 error code */ int gp_abilities_list_free (CameraAbilitiesList *list) { C_PARAMS (list); CHECK_RESULT (gp_abilities_list_reset (list)); free (list); return (GP_OK); } typedef struct { CameraList *list; int result; } foreach_data_t; static int foreach_func (const char *filename, lt_ptr data) { foreach_data_t *fd = data; CameraList *list = fd->list; GP_LOG_D ("Found '%s'.", filename); fd->result = gp_list_append (list, filename, NULL); return ((fd->result == GP_OK)?0:1); } int gp_abilities_list_load_dir (CameraAbilitiesList *list, const char *dir, GPContext *context) { CameraLibraryIdFunc id; CameraLibraryAbilitiesFunc ab; CameraText text; int ret, x, old_count, new_count; int i, p; const char *filename; CameraList *flist; int count; lt_dlhandle lh; C_PARAMS (list && dir); GP_LOG_D ("Using ltdl to load camera libraries from '%s'...", dir); CHECK_RESULT (gp_list_new (&flist)); ret = gp_list_reset (flist); if (ret < GP_OK) { gp_list_free (flist); return ret; } if (1) { /* a new block in which we can define a temporary variable */ foreach_data_t foreach_data = { NULL, GP_OK }; foreach_data.list = flist; lt_dlinit (); lt_dladdsearchdir (dir); ret = lt_dlforeachfile (dir, foreach_func, &foreach_data); lt_dlexit (); if (ret != 0) { gp_list_free (flist); GP_LOG_E ("Internal error looking for camlibs (%d)", ret); gp_context_error (context, _("Internal error looking for camlibs. " "(path names too long?)")); return (foreach_data.result!=GP_OK)?foreach_data.result:GP_ERROR; } } count = gp_list_count (flist); if (count < GP_OK) { gp_list_free (flist); return ret; } GP_LOG_D ("Found %i camera drivers.", count); lt_dlinit (); p = gp_context_progress_start (context, count, _("Loading camera drivers from '%s'..."), dir); for (i = 0; i < count; i++) { ret = gp_list_get_name (flist, i, &filename); if (ret < GP_OK) { gp_list_free (flist); return ret; } lh = lt_dlopenext (filename); if (!lh) { GP_LOG_D ("Failed to load '%s': %s.", filename, lt_dlerror ()); continue; } /* camera_id */ id = lt_dlsym (lh, "camera_id"); if (!id) { GP_LOG_D ("Library '%s' does not seem to " "contain a camera_id function: %s", filename, lt_dlerror ()); lt_dlclose (lh); continue; } /* * Make sure the camera driver hasn't been * loaded yet. */ if (id (&text) != GP_OK) { lt_dlclose (lh); continue; } if (gp_abilities_list_lookup_id (list, text.text) >= 0) { lt_dlclose (lh); continue; } /* camera_abilities */ ab = lt_dlsym (lh, "camera_abilities"); if (!ab) { GP_LOG_D ("Library '%s' does not seem to " "contain a camera_abilities function: " "%s", filename, lt_dlerror ()); lt_dlclose (lh); continue; } old_count = gp_abilities_list_count (list); if (old_count < 0) { lt_dlclose (lh); continue; } if (ab (list) != GP_OK) { lt_dlclose (lh); continue; } /* do not free the library in valgrind mode */ #if !defined(VALGRIND) lt_dlclose (lh); #endif new_count = gp_abilities_list_count (list); if (new_count < 0) continue; /* Copy in the core-specific information */ for (x = old_count; x < new_count; x++) { strcpy (list->abilities[x].id, text.text); strcpy (list->abilities[x].library, filename); } gp_context_progress_update (context, p, i); if (gp_context_cancel (context) == GP_CONTEXT_FEEDBACK_CANCEL) { lt_dlexit (); gp_list_free (flist); return (GP_ERROR_CANCEL); } } gp_context_progress_stop (context, p); lt_dlexit (); gp_list_free (flist); return (GP_OK); } /** * \brief Scans the system for camera drivers. * * \param list a CameraAbilitiesList * \param context a GPContext * \return a gphoto2 error code * * All supported camera models will then be added to the list. * */ int gp_abilities_list_load (CameraAbilitiesList *list, GPContext *context) { const char *camlib_env = getenv(CAMLIBDIR_ENV); const char *camlibs = (camlib_env != NULL)?camlib_env:CAMLIBS; C_PARAMS (list); CHECK_RESULT (gp_abilities_list_load_dir (list, camlibs, context)); CHECK_RESULT (gp_abilities_list_sort (list)); return (GP_OK); } static int gp_abilities_list_detect_usb (CameraAbilitiesList *list, int *ability, GPPort *port) { int i, count, res = GP_ERROR_IO_USB_FIND; CHECK_RESULT (count = gp_abilities_list_count (list)); /* Detect USB cameras */ GP_LOG_D ("Auto-detecting USB cameras..."); *ability = -1; for (i = 0; i < count; i++) { int v, p, c, s; if (!(list->abilities[i].port & port->type)) continue; v = list->abilities[i].usb_vendor; p = list->abilities[i].usb_product; if (v) { res = gp_port_usb_find_device(port, v, p); if (res == GP_OK) { GP_LOG_D ("Found '%s' (0x%x,0x%x)", list->abilities[i].model, v, p); *ability = i; } else if (res < 0 && res != GP_ERROR_IO_USB_FIND) { /* another error occurred. * perhaps we should better * report this to the calling * method? */ GP_LOG_D ( "gp_port_usb_find_device(vendor=0x%x, " "product=0x%x) returned %i, clearing " "error message on port", v, p, res); } if (res != GP_ERROR_IO_USB_FIND) return res; } c = list->abilities[i].usb_class; s = list->abilities[i].usb_subclass; p = list->abilities[i].usb_protocol; if (c) { res = gp_port_usb_find_device_by_class(port, c, s, p); if (res == GP_OK) { GP_LOG_D ("Found '%s' (0x%x,0x%x,0x%x)", list->abilities[i].model, c, s, p); *ability = i; } else if (res < 0 && res != GP_ERROR_IO_USB_FIND) { /* another error occurred. * perhaps we should better * report this to the calling * method? */ GP_LOG_D ( "gp_port_usb_find_device_by_class(" "class=0x%x, subclass=0x%x, " "protocol=0x%x) returned %i, " "clearing error message on port", c, s, p, res); } if (res != GP_ERROR_IO_USB_FIND) return res; } } return res; } /** * \param list a CameraAbilitiesList * \param info_list the GPPortInfoList of ports to use for detection * \param l a #CameraList that contains the autodetected cameras after the call * \param context a #GPContext * * Tries to detect any camera connected to the computer using the supplied * list of supported cameras and the supplied info_list of ports. * * \return a gphoto2 error code */ int gp_abilities_list_detect (CameraAbilitiesList *list, GPPortInfoList *info_list, CameraList *l, GPContext *context) { GPPortInfo info; GPPort *port; int i, info_count; C_PARAMS (list && info_list && l); gp_list_reset (l); CHECK_RESULT (info_count = gp_port_info_list_count (info_list)); CHECK_RESULT (gp_port_new (&port)); for (i = 0; i < info_count; i++) { int res; char *xpath; GPPortType type; CHECK_RESULT (gp_port_info_list_get_info (info_list, i, &info)); CHECK_RESULT (gp_port_set_info (port, info)); gp_port_info_get_type (info, &type); res = gp_port_info_get_path (info, &xpath); if (res abilities[ability].model, xpath); } else if (res < 0) gp_port_set_error (port, NULL); break; } case GP_PORT_DISK: { char *s, path[1024]; struct stat stbuf; s = strchr (xpath, ':'); if (!s) break; s++; snprintf (path, sizeof(path), "%s/DCIM", s); if (-1 == stat(path, &stbuf)) { snprintf (path, sizeof(path), "%s/dcim", s); if (-1 == stat(path, &stbuf)) continue; } gp_list_append (l, "Mass Storage Camera", xpath); break; } case GP_PORT_PTPIP: { char *s; s = strchr (xpath, ':'); if (!s) break; s++; if (!strlen(s)) break; gp_list_append (l, "PTP/IP Camera", xpath); break; } default: /* * We currently cannot detect any cameras on this * port */ break; } } gp_port_free (port); return (GP_OK); } /** * \brief Remove first colon from string, if any. Replace it by a space. * \param str a char * string */ static void remove_colon_from_string (char *str) { char *ch; ch = strchr(str, ':'); if (ch) { *ch = ' '; } } /** * \brief Append the abilities to the list. * \param list CameraAbilitiesList * \param abilities CameraAbilities * \return a gphoto2 error code * * This function is called by a camera library on camera_abilities() * in order to inform libgphoto2 about a supported camera model. * */ int gp_abilities_list_append (CameraAbilitiesList *list, CameraAbilities abilities) { C_PARAMS (list); C_MEM (list->abilities = realloc (list->abilities, sizeof (CameraAbilities) * (list->count + 1))); memcpy (&(list->abilities [list->count]), &abilities, sizeof (CameraAbilities)); /* FIXME: We replace the colon by a space in the model string * This keeps backward compatibility until we have * thought of and implemented something better. */ remove_colon_from_string(list->abilities[list->count].model); list->count++; return (GP_OK); } /** * \brief Reset the list. * \param list a CameraAbilitiesList * \return a gphoto2 error code */ int gp_abilities_list_reset (CameraAbilitiesList *list) { C_PARAMS (list); free (list->abilities); list->abilities = NULL; list->count = 0; return (GP_OK); } /** * \brief Count the entries in the supplied list. * \param list a #CameraAbilitiesList * \returns The number of entries or a gphoto2 error code */ int gp_abilities_list_count (CameraAbilitiesList *list) { C_PARAMS (list); return (list->count); } static int cmp_abilities (const void *a, const void *b) { const CameraAbilities *ca = a; const CameraAbilities *cb = b; return strcasecmp (ca->model, cb->model); } static int gp_abilities_list_sort (CameraAbilitiesList *list) { C_PARAMS (list); qsort (list->abilities, list->count, sizeof(CameraAbilities), cmp_abilities); return (GP_OK); } static int gp_abilities_list_lookup_id (CameraAbilitiesList *list, const char *id) { int x; C_PARAMS (list && id); for (x = 0; x < list->count; x++) if (!strcmp (list->abilities[x].id, id)) return (x); return (GP_ERROR); } /** * \brief Search the list for an entry of given model name * \param list a #CameraAbilitiesList * \param model a camera model name * \return Index of entry or gphoto2 error code */ int gp_abilities_list_lookup_model (CameraAbilitiesList *list, const char *model) { int x; C_PARAMS (list && model); for (x = 0; x < list->count; x++) { if (!strcasecmp (list->abilities[x].model, model)) return (x); } GP_LOG_E ("Could not find any driver for '%s'", model); return (GP_ERROR_MODEL_NOT_FOUND); } /** * \brief Retrieve the camera abilities of entry with supplied index number. * * \param list a CameraAbilitiesList * \param index index * \param abilities pointer to CameraAbilities for returned data. * \return a gphoto2 error code * * Retrieves the camera abilities of entry with supplied * index number. Typically, you would call gp_camera_set_abilities() * afterwards in order to prepare the initialization of a camera. */ int gp_abilities_list_get_abilities (CameraAbilitiesList *list, int index, CameraAbilities *abilities) { C_PARAMS (list && abilities); C_PARAMS (0 <= index && index < list->count); memcpy (abilities, &list->abilities[index], sizeof (CameraAbilities)); return (GP_OK); } #ifdef _GPHOTO2_INTERNAL_CODE /* enum CameraOperation */ const StringFlagItem gpi_camera_operation_map[] = { { "none", GP_OPERATION_NONE }, { "capture_image", GP_OPERATION_CAPTURE_IMAGE }, { "capture_video", GP_OPERATION_CAPTURE_VIDEO }, { "capture_audio", GP_OPERATION_CAPTURE_AUDIO }, { "capture_preview", GP_OPERATION_CAPTURE_PREVIEW }, { "config", GP_OPERATION_CONFIG }, { NULL, 0 }, }; /* enum CameraFileOperation */ const StringFlagItem gpi_file_operation_map[] = { { "none", GP_FILE_OPERATION_NONE }, { "delete", GP_FILE_OPERATION_DELETE }, { "preview", GP_FILE_OPERATION_PREVIEW }, { "raw", GP_FILE_OPERATION_RAW }, { "audio", GP_FILE_OPERATION_AUDIO }, { "exif", GP_FILE_OPERATION_EXIF }, { NULL, 0 }, }; /* enum CameraFolderOperation */ const StringFlagItem gpi_folder_operation_map[] = { { "none", GP_FOLDER_OPERATION_NONE }, { "delete_all", GP_FOLDER_OPERATION_DELETE_ALL }, { "put_file", GP_FOLDER_OPERATION_PUT_FILE }, { "make_dir", GP_FOLDER_OPERATION_MAKE_DIR }, { "remove_dir", GP_FOLDER_OPERATION_REMOVE_DIR }, { NULL, 0 }, }; /* enum GphotoDeviceType */ const StringFlagItem gpi_gphoto_device_type_map[] = { { "still_camera", GP_DEVICE_STILL_CAMERA }, { "audio_player", GP_DEVICE_AUDIO_PLAYER }, { NULL, 0 }, }; /* enum CameraDriverStatus */ const StringFlagItem gpi_camera_driver_status_map[] = { { "production", GP_DRIVER_STATUS_PRODUCTION }, { "testing", GP_DRIVER_STATUS_TESTING }, { "experimental", GP_DRIVER_STATUS_EXPERIMENTAL }, { "deprecated", GP_DRIVER_STATUS_DEPRECATED }, { NULL, 0 }, }; #endif /* _GPHOTO2_INTERNAL_CODE */ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/libgphoto2/exif.h0000644000175000001440000001511612610415530013673 00000000000000/** \file * * EXIF file format support library. This API allows to parse, read and * modify EXIF data structures. It provides a low-level API which allows * to manipulate EXIF tags in a generic way, and a higher-level API which * provides more advanced functions such as comment editing, thumbnail * extraction, etc. * * In the future, vendor-proprietary exif extensions might be supported. */ #ifndef _gphoto_exif_ #define _gphoto_exif_ #include #include #include #include #include #include /* * Tag data type information. */ typedef enum { EXIF_NOTYPE = 0, /* placeholder */ EXIF_BYTE = 1, /* 8-bit unsigned integer */ EXIF_ASCII = 2, /* 8-bit bytes w/ last byte null */ EXIF_SHORT = 3, /* 16-bit unsigned integer */ EXIF_LONG = 4, /* 32-bit unsigned integer */ EXIF_RATIONAL = 5, /* 64-bit unsigned fraction */ EXIF_SBYTE = 6, /* !8-bit signed integer */ EXIF_UNDEFINED = 7, /* !8-bit untyped data */ EXIF_SSHORT = 8, /* !16-bit signed integer */ EXIF_SLONG = 9, /* !32-bit signed integer */ EXIF_SRATIONAL = 10, /* !64-bit signed fraction */ EXIF_FLOAT = 11, /* !32-bit IEEE floating point */ EXIF_DOUBLE = 12 /* !64-bit IEEE floating point */ } EXIFDataType; typedef struct exif_parser { unsigned char *header,*data,*ifds[10]; int ifdtags[10]; /* How many tags in each ifd */ int ifdcnt; /* Number of IFD's, assumed to be < 10 */ unsigned int exiflen; int preparsed,endian; } exifparser; typedef struct { int tag; /* Tag ID, see exif_tags.h */ EXIFDataType type; /* Tag data type, see exif_tags.h */ int size; /* Length of the data, in bytes. */ unsigned char *data; /* The data itself, not an offset */ int num; /* When type is (s)rational, we */ int den; /* store the value here... */ int intval; } ExifData; /* * The same as gpi_exif_get_thumbnail but returns * also the thumbnail size */ unsigned char *gpi_exif_get_thumbnail_and_size(exifparser *exifdat, long *size); /* * COMMENT ME */ int gpi_exif_stat(exifparser *exifdata); /* * Now, all the 'defines' */ #define EXIF_InteroperabilityIndex 0x1 #define EXIF_InteroperabilityVersion 0x2 #define EXIF_RelatedImageFileFormat 0x1000 #define EXIF_RelatedImageWidth 0x1001 #define EXIF_RelatedImageLength 0x1002 #define EXIF_NewSubFileType 0xFE #define EXIF_ImageWidth 0x100 #define EXIF_ImageLength 0x101 #define EXIF_BitsPerSample 0x102 #define EXIF_Compression 0x103 #define EXIF_PhotometricInterpretation 0x106 #define EXIF_FillOrder 0x10A #define EXIF_DocumentName 0x10D #define EXIF_ImageDescription 0x10E #define EXIF_Make 0x10F #define EXIF_Model 0x110 #define EXIF_StripOffsets 0x111 #define EXIF_Orientation 0x112 #define EXIF_SamplesPerPixel 0x115 #define EXIF_RowsPerStrip 0x116 #define EXIF_StripByteCounts 0x117 #define EXIF_XResolution 0x11A #define EXIF_YResolution 0x11B #define EXIF_PlanarConfiguration 0x11C #define EXIF_ResolutionUnit 0x128 #define EXIF_TransferFunction 0x12D #define EXIF_Software 0x131 #define EXIF_DateTime 0x132 #define EXIF_Artist 0x13B #define EXIF_WhitePoint 0x13E #define EXIF_PrimaryChromaticities 0x13F #define EXIF_TransferRange 0x156 #define EXIF_JPEGProc 0x200 #define EXIF_JPEGInterchangeFormat 0x201 #define EXIF_JPEGInterchangeFormatLength 0x202 #define EXIF_YCbCrCoefficients 0x211 #define EXIF_YCbCrSubSampling 0x212 #define EXIF_YCbCrPositioning 0x213 #define EXIF_ReferenceBlackWhite 0x214 #define EXIF_CFARepeatPatternDim 0x828D #define EXIF_CFAPattern 0x828E #define EXIF_BatteryLevel 0x828F #define EXIF_Copyright 0x8298 #define EXIF_ExposureTime 0x829A #define EXIF_FNumber 0x829D /* Be careful: the next tag's official name is IPTC/NAA but we can't do a define with a "/" */ #define EXIF_IPTC_NAA 0x83BB #define EXIF_ExifOffset 0x8769 #define EXIF_InterColorProfile 0x8773 #define EXIF_ExposureProgram 0x8822 #define EXIF_SpectralSensitivity 0x8824 #define EXIF_GPSInfo 0x8825 #define EXIF_ISOSpeedRatings 0x8827 #define EXIF_OECF 0x8828 #define EXIF_ExifVersion 0x9000 #define EXIF_DateTimeOriginal 0x9003 #define EXIF_DateTimeDigitized 0x9004 #define EXIF_ComponentsConfiguration 0x9101 #define EXIF_CompressedBitsPerPixel 0x9102 #define EXIF_ShutterSpeedValue 0x9201 #define EXIF_ApertureValue 0x9202 #define EXIF_BrightnessValue 0x9203 #define EXIF_ExposureBiasValue 0x9204 #define EXIF_MaxApertureValue 0x9205 #define EXIF_SubjectDistance 0x9206 #define EXIF_MeteringMode 0x9207 #define EXIF_LightSource 0x9208 #define EXIF_Flash 0x9209 #define EXIF_FocalLength 0x920A #define EXIF_MakerNote 0x927C #define EXIF_UserComment 0x9286 #define EXIF_SubSecTime 0x9290 #define EXIF_SubSecTimeOriginal 0x9291 #define EXIF_SubSecTimeDigitized 0x9292 #define EXIF_FlashPixVersion 0xA000 #define EXIF_ColorSpace 0xA001 #define EXIF_ExifImageWidth 0xA002 #define EXIF_ExifImageLength 0xA003 #define EXIF_InteroperabilityOffset 0xA005 #define EXIF_FlashEnergy 0xA20B /* 0x920B in TIFF/EP */ #define EXIF_SpatialFrequencyResponse 0xA20C /* 0x920C - - */ #define EXIF_FocalPlaneXResolution 0xA20E /* 0x920E - - */ #define EXIF_FocalPlaneYResolution 0xA20F /* 0x920F - - */ #define EXIF_FocalPlaneResolutionUnit 0xA210 /* 0x9210 - - */ #define EXIF_SubjectLocation 0xA214 /* 0x9214 - - */ #define EXIF_ExposureIndex 0xA215 /* 0x9215 - - */ #define EXIF_SensingMethod 0xA217 /* 0x9217 - - */ #define EXIF_FileSource 0xA300 #define EXIF_SceneType 0xA301 #endif /* _gphoto_exif_ */ libgphoto2-2.5.9/libgphoto2/libgphoto2.sym0000644000175000001440000000746412610415510015377 00000000000000gp_abilities_list_append gp_abilities_list_count gp_abilities_list_detect gp_abilities_list_free gp_abilities_list_get_abilities gp_abilities_list_load gp_abilities_list_load_dir gp_abilities_list_lookup_model gp_abilities_list_new gp_abilities_list_reset gp_ahd_decode gp_ahd_interpolate gp_bayer_decode gp_bayer_expand gp_bayer_interpolate gp_camera_autodetect gp_camera_capture gp_camera_capture_preview gp_camera_exit gp_camera_file_delete gp_camera_file_get gp_camera_file_get_info gp_camera_file_read gp_camera_file_set_info gp_camera_folder_delete_all gp_camera_folder_list_files gp_camera_folder_list_folders gp_camera_folder_make_dir gp_camera_folder_put_file gp_camera_folder_remove_dir gp_camera_free gp_camera_get_abilities gp_camera_get_about gp_camera_get_config gp_camera_get_manual gp_camera_get_port_info gp_camera_get_port_speed gp_camera_get_summary gp_camera_init gp_camera_new gp_camera_ref gp_camera_set_abilities gp_camera_set_config gp_camera_set_port_info gp_camera_set_port_speed gp_camera_set_timeout_funcs gp_camera_start_timeout gp_camera_stop_timeout gp_camera_trigger_capture gp_camera_unref gp_camera_wait_for_event gp_camera_get_storageinfo gp_context_cancel gp_context_error gp_context_idle gp_context_message gp_context_new gp_context_progress_start gp_context_progress_stop gp_context_progress_update gp_context_question gp_context_ref gp_context_set_cancel_func gp_context_set_error_func gp_context_set_idle_func gp_context_set_message_func gp_context_set_progress_funcs gp_context_set_question_func gp_context_set_status_func gp_context_status gp_context_unref gp_file_adjust_name_for_mime_type gp_file_append gp_file_slurp gp_file_clean gp_file_copy gp_file_detect_mime_type gp_file_free gp_file_get_data_and_size gp_file_get_mime_type gp_file_get_mtime gp_file_get_name gp_file_get_name_by_type gp_file_new gp_file_new_from_fd gp_file_new_from_handler gp_file_open gp_file_ref gp_file_save gp_file_set_data_and_size gp_file_set_mime_type gp_file_set_mtime gp_file_set_name gp_filesystem_append gp_filesystem_count gp_filesystem_delete_all gp_filesystem_delete_file gp_filesystem_delete_file_noop gp_filesystem_dump gp_filesystem_free gp_filesystem_get_file gp_filesystem_read_file gp_filesystem_get_folder gp_filesystem_get_info gp_filesystem_list_files gp_filesystem_list_folders gp_filesystem_make_dir gp_filesystem_name gp_filesystem_new gp_filesystem_number gp_filesystem_put_file gp_filesystem_remove_dir gp_filesystem_reset gp_filesystem_set_file_noop gp_filesystem_set_info gp_filesystem_set_info_noop gp_filesystem_set_funcs gp_file_unref gp_gamma_correct_single gp_gamma_fill_table gp_library_version gp_list_append gp_list_count gp_list_free gp_list_find_by_name gp_list_get_name gp_list_get_value gp_list_new gp_list_populate gp_list_ref gp_list_reset gp_list_set_name gp_list_set_value gp_list_sort gp_list_unref gp_message_codeset gp_result_as_string gp_setting_get gp_setting_set gp_widget_add_choice gp_widget_append gp_widget_changed gp_widget_count_children gp_widget_count_choices gp_widget_free gp_widget_get_child gp_widget_get_child_by_id gp_widget_get_child_by_label gp_widget_get_child_by_name gp_widget_get_choice gp_widget_get_id gp_widget_get_info gp_widget_get_label gp_widget_get_name gp_widget_get_parent gp_widget_get_range gp_widget_get_readonly gp_widget_get_root gp_widget_get_type gp_widget_get_value gp_widget_new gp_widget_prepend gp_widget_ref gp_widget_set_changed gp_widget_set_info gp_widget_set_name gp_widget_set_range gp_widget_set_readonly gp_widget_set_value gp_widget_unref gpi_exif_get_thumbnail_and_size gpi_exif_stat gpi_jpeg_header gpi_jpeg_chunk_destroy gpi_jpeg_chunk_new gpi_jpeg_chunk_new_filled gpi_jpeg_chunk_print gpi_jpeg_add_marker gpi_jpeg_write gpi_jpeg_destroy gpi_camera_operation_map gpi_file_operation_map gpi_folder_operation_map gpi_gphoto_device_type_map gpi_camera_driver_status_map libgphoto2-2.5.9/libgphoto2/gphoto2-context.c0000644000175000001440000002136312610415620016000 00000000000000/** \file gphoto2-context.c * * \author Copyright 2001 Lutz Mueller * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include /** * \internal **/ struct _GPContext { GPContextIdleFunc idle_func; void *idle_func_data; GPContextProgressStartFunc progress_start_func; GPContextProgressUpdateFunc progress_update_func; GPContextProgressStopFunc progress_stop_func; void *progress_func_data; GPContextErrorFunc error_func; void *error_func_data; GPContextQuestionFunc question_func; void *question_func_data; GPContextCancelFunc cancel_func; void *cancel_func_data; GPContextStatusFunc status_func; void *status_func_data; GPContextMessageFunc message_func; void *message_func_data; unsigned int ref_count; }; /** * \brief Creates a new context. * * To be used by the frontend. * * \return a GPContext. **/ GPContext * gp_context_new (void) { GPContext *context; context = calloc (1, sizeof (GPContext)); if (!context) return (NULL); context->ref_count = 1; return (context); } /** * Increments the reference count of the context. * * \param context The context to bump the reference **/ void gp_context_ref (GPContext *context) { if (!context) return; context->ref_count++; } static void gp_context_free (GPContext *context) { free (context); } /** * \brief Decrements reference count of a context. * * Decrement the reference count of a context and free if it goes to 0. * * \param context The context to drop the reference count. **/ void gp_context_unref (GPContext *context) { if (!context) return; context->ref_count--; if (!context->ref_count) gp_context_free (context); } /** * \brief Notify frontend of a brief idle time. * * Tells the frontend that it can do other processing at this moment, like refresh * the UI. Backends should call this function every time when an * interruption of the transfer is possible. * * \param context a GPContext **/ void gp_context_idle (GPContext *context) { if (!context) return; if (context->idle_func) context->idle_func (context, context->idle_func_data); } /** * \brief Start progress tracking. * * This function starts up a new progress tracking for a specified context. * Several nested progress reports can happen at once, depending on the backend. * * \param context The context in which to start the progress. * \param target The 100% value. * \param format A sprintf style string to print out, including the following variable arguments. */ unsigned int gp_context_progress_start (GPContext *context, float target, const char *format, ...) { va_list args; char *str; unsigned int id; if (!context) return (0); if (!context->progress_start_func) return (0); va_start (args, format); str = gpi_vsnprintf(format, args); va_end (args); if (!str) return 0; id = context->progress_start_func (context, target, str, context->progress_func_data); free (str); return (id); } void gp_context_progress_update (GPContext *context, unsigned int id, float current) { if (!context) return; if (context->progress_update_func) context->progress_update_func (context, id, current, context->progress_func_data); } void gp_context_progress_stop (GPContext *context, unsigned int id) { if (!context) return; if (context->progress_stop_func) context->progress_stop_func (context, id, context->progress_func_data); } void gp_context_error (GPContext *context, const char *format, ...) { va_list args; char *str; va_start (args, format); str = gpi_vsnprintf(format, args); va_end (args); if (!str) return; /* Log the error message */ gp_log( GP_LOG_ERROR, __func__, "%s", str); if (context && context->error_func) context->error_func (context, str, context->error_func_data); free (str); } void gp_context_status (GPContext *context, const char *format, ...) { va_list args; char *str; va_start (args, format); str = gpi_vsnprintf(format, args); va_end (args); if (!str) return; /* Log the status message */ GP_LOG_D ("%s", str); if (context && context->status_func) context->status_func (context, str, context->status_func_data); free (str); } /** * \brief Print a message to the context * * This sends a message to the passed context, to be printed by * it in some kind of way, but do no other action. * * To be used by camera drivers. * * \param context A GPContext * \param format A sprintf style format string * \param ... variable argument list depending on format string */ void gp_context_message (GPContext *context, const char *format, ...) { va_list args; char *str; va_start (args, format); str = gpi_vsnprintf(format, args); va_end (args); if (!str) return; /* Log the message */ GP_LOG_D ("%s", str); if (context && context->message_func) context->message_func (context, str, context->message_func_data); free (str); } /** * \brief Ask frontend user a question * * Asks the user a question that he must answer either with "Ok" or "Cancel". * * To be used by a camera driver. (So far no camera driver is using it, * but this might change later.) * * \param context a GPContext * \param format a sprintf format string * \param ... variable arguments for format string * \return The user's answer in form of a GPContextFeedback. **/ GPContextFeedback gp_context_question (GPContext *context, const char *format, ...) { GPContextFeedback feedback; va_list args; char *str; va_start (args, format); str = gpi_vsnprintf(format, args); va_end (args); if (!str) return GP_CONTEXT_FEEDBACK_OK; feedback = GP_CONTEXT_FEEDBACK_OK; if (context && context->question_func) feedback = context->question_func (context, str, context->question_func_data); free (str); return feedback; } /** * gp_context_cancel: * @context: a #GPContext * * Gives the frontend the possibility to cancel the current operation that is * executed in this @context. * * Return value: a #GPContextFeedback. **/ GPContextFeedback gp_context_cancel (GPContext *context) { if (!context) return (GP_CONTEXT_FEEDBACK_OK); if (context->cancel_func) return (context->cancel_func (context, context->cancel_func_data)); else return (GP_CONTEXT_FEEDBACK_OK); } void gp_context_set_idle_func (GPContext *context, GPContextIdleFunc func, void *data) { if (!context) return; context->idle_func = func; context->idle_func_data = data; } void gp_context_set_progress_funcs (GPContext *context, GPContextProgressStartFunc start_func, GPContextProgressUpdateFunc update_func, GPContextProgressStopFunc stop_func, void *data) { if (!context) return; context->progress_start_func = start_func; context->progress_update_func = update_func; context->progress_stop_func = stop_func; context->progress_func_data = data; } void gp_context_set_error_func (GPContext *context, GPContextErrorFunc func, void *data) { if (!context) return; context->error_func = func; context->error_func_data = data; } void gp_context_set_question_func (GPContext *context, GPContextQuestionFunc func, void *data) { if (!context) return; context->question_func = func; context->question_func_data = data; } void gp_context_set_status_func (GPContext *context, GPContextStatusFunc func, void *data) { if (!context) return; context->status_func = func; context->status_func_data = data; } void gp_context_set_cancel_func (GPContext *context, GPContextCancelFunc func, void *data) { if (!context) return; context->cancel_func = func; context->cancel_func_data = data; } void gp_context_set_message_func (GPContext *context, GPContextMessageFunc func, void *data) { if (!context) return; context->message_func = func; context->message_func_data = data; } libgphoto2-2.5.9/ABOUT-NLS0000644000175000001440000015111612557123416011757 00000000000000Notes on the Free Translation Project ************************************* Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work at translations should contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. Quick configuration advice ========================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias, message inheritance, automatic charset conversion or plural form handling) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need _not_ provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. INSTALL Matters =============== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. If not, the GNU `gettext' own library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is _not_ required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --disable-nls will respectively bypass any pre-existing `gettext' to use the internationalizing routines provided within this package, or else, _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might be not what is desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. The configuration process will not test for the `catgets' function and therefore it will not be used. The reason is that even an emulation of `gettext' on top of `catgets' could not provide all the extensions of the GNU `gettext' library. Internationalized packages have usually many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. Using This Package ================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your country by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. Translating Teams ================= For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `translation@iro.umontreal.ca' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skill are praised more than programming skill, here. Available Packages ================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of January 2004. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am ar az be bg bs ca cs da de el en en_GB eo es +----------------------------------------------------+ a2ps | [] [] [] [] | aegis | () | ant-phone | () | anubis | | ap-utils | | aspell | [] | bash | [] [] [] [] | batchelor | | bfd | [] [] | binutils | [] [] | bison | [] [] [] | bluez-pin | [] [] [] | clisp | | clisp | [] [] [] | console-tools | [] [] | coreutils | [] [] [] [] | cpio | [] [] [] | darkstat | [] () [] | diffutils | [] [] [] [] [] [] [] | e2fsprogs | [] [] [] | enscript | [] [] [] [] | error | [] [] [] [] [] | fetchmail | [] () [] [] [] [] | fileutils | [] [] [] | findutils | [] [] [] [] [] [] [] | flex | [] [] [] [] | fslint | | gas | [] | gawk | [] [] [] [] | gbiff | [] | gcal | [] | gcc | [] [] | gettext | [] [] [] [] [] | gettext-examples | [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] [] [] [] | gliv | | glunarclock | [] [] | gnubiff | [] | gnucash | [] () [] [] | gnucash-glossary | [] () [] | gnupg | [] () [] [] [] [] | gpe-aerial | [] | gpe-beam | [] [] | gpe-calendar | [] [] | gpe-clock | [] [] | gpe-conf | [] [] | gpe-contacts | [] [] | gpe-edit | [] | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] | gpe-taskmanager | [] [] | gpe-timesheet | [] | gpe-today | [] [] | gpe-todo | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] | gpsdrive | () () () | gramadoir | [] | grep | [] [] [] [] [] [] | gretl | [] | gtick | [] () | hello | [] [] [] [] [] [] | id-utils | [] [] | indent | [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] | iso_3166_1 | [] [] [] [] [] [] | iso_3166_2 | | iso_3166_3 | [] | iso_4217 | [] [] [] [] | iso_639 | | jpilot | [] [] [] | jtag | | jwhois | [] | kbd | [] [] [] [] [] | latrine | () | ld | [] [] | libc | [] [] [] [] [] [] | libgpewidget | [] [] | libiconv | [] [] [] [] [] | lifelines | [] () | lilypond | [] | lingoteach | | lingoteach_lessons | () () | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | [] [] | make | [] [] [] | man-db | [] () [] [] () | minicom | [] [] [] | mysecretdiary | [] [] [] | nano | [] () [] [] [] | nano_1_0 | [] () [] [] [] | opcodes | [] | parted | [] [] [] [] [] | ptx | [] [] [] [] [] | python | | radius | [] | recode | [] [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] [] [] [] | sed | [] [] [] [] [] [] | sh-utils | [] [] [] | shared-mime-info | | sharutils | [] [] [] [] [] [] | silky | () | skencil | [] () [] | sketch | [] () [] | soundtracker | [] [] [] | sp | [] | tar | [] [] [] [] | texinfo | [] [] [] | textutils | [] [] [] [] | tin | () () | tp-robot | | tuxpaint | [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] [] [] | vorbis-tools | [] [] [] [] | wastesedge | () | wdiff | [] [] [] [] | wget | [] [] [] [] [] [] | xchat | [] [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] | +----------------------------------------------------+ af am ar az be bg bs ca cs da de el en en_GB eo es 4 0 0 1 9 4 1 40 41 60 78 17 1 5 13 68 et eu fa fi fr ga gl he hr hu id is it ja ko lg +-------------------------------------------------+ a2ps | [] [] [] () () | aegis | | ant-phone | [] | anubis | [] | ap-utils | [] | aspell | [] [] | bash | [] [] | batchelor | [] [] | bfd | [] | binutils | [] [] | bison | [] [] [] [] | bluez-pin | [] [] [] [] [] | clisp | | clisp | [] | console-tools | | coreutils | [] [] [] [] [] [] | cpio | [] [] [] [] | darkstat | () [] [] [] | diffutils | [] [] [] [] [] [] [] | e2fsprogs | | enscript | [] [] | error | [] [] [] [] | fetchmail | [] | fileutils | [] [] [] [] [] [] | findutils | [] [] [] [] [] [] [] [] [] [] [] | flex | [] [] [] | fslint | [] | gas | [] | gawk | [] [] [] | gbiff | [] | gcal | [] | gcc | [] | gettext | [] [] [] | gettext-examples | [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] | gliv | () | glunarclock | [] [] [] [] | gnubiff | [] | gnucash | () [] | gnucash-glossary | [] | gnupg | [] [] [] [] [] [] [] | gpe-aerial | [] | gpe-beam | [] | gpe-calendar | [] [] [] | gpe-clock | [] | gpe-conf | [] | gpe-contacts | [] [] | gpe-edit | [] [] | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] | gpe-sketchbook | [] | gpe-su | [] | gpe-taskmanager | [] | gpe-timesheet | [] [] [] | gpe-today | [] [] | gpe-todo | [] [] | gphoto2 | [] [] [] | gprof | [] [] | gpsdrive | () () () | gramadoir | [] [] | grep | [] [] [] [] [] [] [] [] [] [] [] | gretl | [] [] | gtick | [] [] [] | hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | indent | [] [] [] [] [] [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] | iso_3166_1 | [] [] [] [] [] | iso_3166_2 | | iso_3166_3 | | iso_4217 | [] [] [] [] [] [] | iso_639 | | jpilot | [] () | jtag | [] | jwhois | [] [] [] [] | kbd | [] | latrine | [] | ld | [] | libc | [] [] [] [] [] [] | libgpewidget | [] [] [] [] | libiconv | [] [] [] [] [] [] [] [] [] | lifelines | () | lilypond | [] | lingoteach | [] [] | lingoteach_lessons | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | | make | [] [] [] [] [] [] | man-db | () () | minicom | [] [] [] [] | mysecretdiary | [] [] | nano | [] [] [] [] | nano_1_0 | [] [] [] [] | opcodes | [] | parted | [] [] [] | ptx | [] [] [] [] [] [] [] | python | | radius | [] | recode | [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] | sed | [] [] [] [] [] [] [] [] [] | sh-utils | [] [] [] [] [] [] [] | shared-mime-info | [] [] [] | sharutils | [] [] [] [] [] | silky | () [] () () | skencil | [] | sketch | [] | soundtracker | [] [] | sp | [] () | tar | [] [] [] [] [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] [] [] [] [] | tin | [] () | tp-robot | [] | tuxpaint | [] [] [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux | [] [] [] [] () [] | vorbis-tools | [] | wastesedge | () | wdiff | [] [] [] [] [] [] | wget | [] [] [] [] [] [] [] | xchat | [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] [] | +-------------------------------------------------+ et eu fa fi fr ga gl he hr hu id is it ja ko lg 22 2 1 26 106 28 24 8 10 41 33 1 26 33 12 0 lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru +-----------------------------------------------------+ a2ps | [] [] () () [] [] [] | aegis | () () () | ant-phone | [] [] | anubis | [] [] [] [] [] [] | ap-utils | [] () [] | aspell | [] | bash | [] [] [] | batchelor | [] | bfd | [] | binutils | [] | bison | [] [] [] [] [] | bluez-pin | [] [] [] | clisp | | clisp | [] | console-tools | [] | coreutils | [] [] | cpio | [] [] [] [] [] | darkstat | [] [] [] [] | diffutils | [] [] [] [] [] [] | e2fsprogs | [] | enscript | [] [] [] [] | error | [] [] [] | fetchmail | [] [] () [] | fileutils | [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] | fslint | [] [] | gas | | gawk | [] [] [] | gbiff | [] [] | gcal | | gcc | | gettext | [] [] [] | gettext-examples | [] [] [] | gettext-runtime | [] [] [] [] | gettext-tools | [] [] | gimp-print | [] | gliv | [] [] [] | glunarclock | [] [] [] [] | gnubiff | [] | gnucash | [] [] () [] | gnucash-glossary | [] [] | gnupg | [] | gpe-aerial | [] [] [] [] | gpe-beam | [] [] [] [] | gpe-calendar | [] [] [] [] | gpe-clock | [] [] [] [] | gpe-conf | [] [] [] [] | gpe-contacts | [] [] [] [] | gpe-edit | [] [] [] [] | gpe-go | [] [] [] | gpe-login | [] [] [] [] | gpe-ownerinfo | [] [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] [] [] | gphoto2 | [] | gprof | [] [] | gpsdrive | () () [] | gramadoir | () [] | grep | [] [] [] [] [] | gretl | | gtick | [] [] [] | hello | [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | indent | [] [] [] [] | iso_3166 | [] [] [] | iso_3166_1 | [] [] | iso_3166_2 | | iso_3166_3 | [] | iso_4217 | [] [] [] [] [] [] [] [] | iso_639 | [] | jpilot | () () | jtag | | jwhois | [] [] [] [] () | kbd | [] [] [] | latrine | [] | ld | | libc | [] [] [] [] | libgpewidget | [] [] [] | libiconv | [] [] [] [] [] | lifelines | | lilypond | | lingoteach | | lingoteach_lessons | | lynx | [] [] [] | m4 | [] [] [] [] [] | mailutils | [] [] [] | make | [] [] [] [] | man-db | [] | minicom | [] [] [] [] | mysecretdiary | [] [] [] | nano | [] [] [] [] [] | nano_1_0 | [] [] [] [] [] [] | opcodes | [] [] | parted | [] [] [] [] | ptx | [] [] [] [] [] [] [] [] | python | | radius | [] [] | recode | [] [] [] [] | rpm | [] [] [] | screem | | scrollkeeper | [] [] [] [] [] | sed | [] [] [] | sh-utils | [] [] | shared-mime-info | [] [] | sharutils | [] [] | silky | () | skencil | [] [] | sketch | [] [] | soundtracker | | sp | | tar | [] [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] | tin | | tp-robot | [] | tuxpaint | [] [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] | vorbis-tools | [] [] [] | wastesedge | | wdiff | [] [] [] [] [] | wget | [] [] [] | xchat | [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] [] | +-----------------------------------------------------+ lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru 1 2 0 3 12 0 10 69 6 7 1 40 26 36 76 63 sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu +-----------------------------------------------------+ a2ps | [] [] [] [] | 16 aegis | | 0 ant-phone | | 3 anubis | [] [] | 9 ap-utils | () | 3 aspell | | 4 bash | | 9 batchelor | | 3 bfd | [] [] | 6 binutils | [] [] [] | 8 bison | [] [] | 14 bluez-pin | [] [] [] | 14 clisp | | 0 clisp | | 5 console-tools | | 3 coreutils | [] [] [] [] | 16 cpio | [] [] | 14 darkstat | [] [] [] () () | 12 diffutils | [] [] [] | 23 e2fsprogs | [] [] | 6 enscript | [] [] | 12 error | [] [] [] | 15 fetchmail | [] [] | 11 fileutils | [] [] [] [] [] | 17 findutils | [] [] [] [] [] [] | 29 flex | [] [] | 13 fslint | | 3 gas | [] | 3 gawk | [] [] | 12 gbiff | | 4 gcal | [] [] | 4 gcc | [] | 4 gettext | [] [] [] [] [] | 16 gettext-examples | [] [] [] [] [] | 14 gettext-runtime | [] [] [] [] [] [] [] [] | 22 gettext-tools | [] [] [] [] [] [] | 14 gimp-print | [] [] | 10 gliv | | 3 glunarclock | [] [] [] | 13 gnubiff | | 3 gnucash | [] [] | 9 gnucash-glossary | [] [] [] | 8 gnupg | [] [] [] [] | 17 gpe-aerial | [] | 7 gpe-beam | [] | 8 gpe-calendar | [] [] [] [] | 13 gpe-clock | [] [] [] | 10 gpe-conf | [] [] | 9 gpe-contacts | [] [] [] | 11 gpe-edit | [] [] [] [] [] | 12 gpe-go | | 5 gpe-login | [] [] [] [] [] | 13 gpe-ownerinfo | [] [] [] [] | 13 gpe-sketchbook | [] [] | 9 gpe-su | [] [] [] | 10 gpe-taskmanager | [] [] [] | 10 gpe-timesheet | [] [] [] [] | 12 gpe-today | [] [] [] [] [] | 13 gpe-todo | [] [] [] [] | 12 gphoto2 | [] [] [] | 11 gprof | [] [] | 9 gpsdrive | [] [] | 3 gramadoir | [] | 5 grep | [] [] [] [] | 26 gretl | | 3 gtick | | 7 hello | [] [] [] [] [] | 34 id-utils | [] [] | 12 indent | [] [] [] [] | 21 iso_3166 | [] [] [] [] [] [] [] | 27 iso_3166_1 | [] [] [] | 16 iso_3166_2 | | 0 iso_3166_3 | | 2 iso_4217 | [] [] [] [] [] [] | 24 iso_639 | | 1 jpilot | [] [] [] [] [] | 9 jtag | [] | 2 jwhois | () [] [] | 11 kbd | [] [] | 11 latrine | | 2 ld | [] [] | 5 libc | [] [] [] [] | 20 libgpewidget | [] [] [] [] | 13 libiconv | [] [] [] [] [] [] [] [] | 27 lifelines | [] | 2 lilypond | [] | 3 lingoteach | | 2 lingoteach_lessons | () | 0 lynx | [] [] [] | 14 m4 | [] [] | 15 mailutils | | 5 make | [] [] [] | 16 man-db | [] | 5 minicom | | 11 mysecretdiary | [] [] | 10 nano | [] [] [] [] | 17 nano_1_0 | [] [] [] | 17 opcodes | [] [] | 6 parted | [] [] [] | 15 ptx | [] [] | 22 python | | 0 radius | | 4 recode | [] [] [] | 20 rpm | [] [] | 9 screem | [] [] | 2 scrollkeeper | [] [] [] | 15 sed | [] [] [] [] [] [] | 24 sh-utils | [] [] | 14 shared-mime-info | [] [] | 7 sharutils | [] [] [] [] | 17 silky | () | 3 skencil | [] | 6 sketch | [] | 6 soundtracker | [] [] | 7 sp | [] | 3 tar | [] [] [] [] [] | 24 texinfo | [] [] [] | 14 textutils | [] [] [] [] | 16 tin | | 1 tp-robot | | 2 tuxpaint | [] [] [] [] [] | 29 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux | [] [] | 15 vorbis-tools | | 8 wastesedge | | 0 wdiff | [] [] [] | 18 wget | [] [] [] [] [] [] [] [] | 24 xchat | [] [] [] [] [] | 15 xfree86_xkb_xml | [] [] [] [] [] | 11 xpad | | 5 +-----------------------------------------------------+ 63 teams sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu 131 domains 47 19 28 83 0 0 59 13 1 1 11 0 22 22 0 1373 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If January 2004 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. Using `gettext' in new packages =============================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `translation@iro.umontreal.ca' to make the `.pot' files available to the translation teams. libgphoto2-2.5.9/README.in0000644000175000001440000001105412610415510011776 00000000000000 libgphoto2 ---------- Hello and welcome to the wonderful world of gphoto! This is libgphoto2, the successor of gphoto with lots of new features and additional camera drivers. If you miss a feature, would like to report success or failure, or have any questions, please don't hesitate to contact our mailing list. What is libgphoto2? ------------------- libgphoto2 is a library that can be used by applications to access various digital cameras. For more information on gphoto, see @URL_GPHOTO_HOME@ There, you can also get information on mailing lists, supported cameras, and availability of gphoto2. Another source of information is @URL_GPHOTO_PROJECT@ where you can access our SVN server to fetch the source code of gphoto2, gtkam and GnoCam (see below). What is libgphoto2 not? ----------------------- libgphoto2 itself is not a GUI application, opposed to gphoto. There are GUI frontends for the gphoto2 library, however, such as gtkam for example. libgphoto2 can only talk to cameras the language of those it understands. That is, if you own a camera that speaks a language that isn't published anywhere and nobody has been able to figure out the meaning of the sentences, libgphoto2 cannot communicate with those cameras. Then, there are cameras supporting the so-called USB Mass Storage protocol. This is a protocol that has been published and lets you access any storage device, be it a camera or a disk connected via USB to your computer. As there are already drivers for this protocol out there, you don't need an additional library like libgphoto2. The list of camera that use USB Mass Storage is getting longer everyday, so we won't publish it. For a more up to date list, you can consult @URL_DIGICAM_LIST@ Your operating system will tell you about that because it is likely to recognise the device as a SCSI disk that you can mount (for Linux 'dmesg' will tell you). Again, those cameras *cannot* be accessed through libgphoto2. Some of them can be switched to use a different communication protocol and might be in that case useable with libgphoto2. Other camera support a protocol called PTP or USB Imaging Devices that has been developped by Kodak and other. libgphoto2 does support PTP. Also working will be cameras labeled as "PictBridge", which is a extension to PTP. Almost all cameras that are not mass storage support it these days, including but not limited to all Nikon, Canon, Fuji, Sony, Panasonic, HP and more. PTP camera unknown to libgphoto2 will be detected as a generic PTP camera and will work as-is without any changes. MTP (Microsoft Transfer Protocol) capable devices will also be accessible, since MTP is based on PTP. Platforms --------- libgphoto2 should compile and run on pretty much all Unix-like platforms. libgphoto2 has _not_ (yet?) been ported to any operating system from MicroSoft. How to set up libgphoto2 ------------------------ For information on how to set up libgphoto2 and its frontends, see The gPhoto2 Manual. It is available at the following places: - At the gphoto website: @URL_GPHOTO_HOME@ - In the SVN module gphoto2-manual The gPhoto2 Manual includes information about setting up USB hotplugging. If you run into problems, you may also consult the FAQ (also included in The gPhoto2 Manual). Frontends --------- gphoto2 is a command line frontend which is quite powerful, especially in combination with scripts. See The gPhoto2 Manual for a short description. For the GUI lovers, there are for example digikam (KDE), gthumb (GNOME), f-spot (GNOME / Mono) and more. We also have a GTK2 reference GUI called gtkam, which is unmaintained, its only special features are capture abilitiy. Additionally, there are plugins for other programs available like kio_camera (KDE - Konqueror) and a fuse plugin, gphotofs. Reporting Bugs -------------- Every piece of software contains errors and flaws. So does libgphoto2. When you encounter something that does not work, please do the following: 1. Find out whether this is a known problem. 2. Reproduce the problem with debug output enabled and the language set to English, so that the development team will understand the messages. You can do this by running: env LC_ALL=C gtkam if you're using the gtkam frontend or running: env LC_ALL=C gphoto2 --debug-logfile=logfile.log --debug using the gphoto2 command line interface. 3. Report the problem on the mailing list with the corresponding debug output if it is small. If it is more than a few kilobytes, please don't post the complete debug output on the list. libgphoto2-2.5.9/ChangeLog0000644000175000001440000066054012610415510012275 000000000000002010-07-10 Dan Fandrich * Fixed some C89 portability issues. * Eliminated some compiler warnings, fixing a couple of small bugs in the process. 2010-03-12 Hans de Goede * camlibs/st2205: New camera driver for ST2205 based picture frames. * libgphoto2_port/usbdiskdirect: USB Disk direct acccess driver (for ST2205 based picture frames.) * New dependency for "libgd" for image conversion for above driver. * configure.ac, camlibs/Makefile.am: hooked up new camlib, new gd check. 2010-03-06 Marcus Meissner * gphoto2/gphoto2-context.h, libgphoto2/gphoto2-context.c: Make context functions not use varargs anymore to pass strings out to frontends. The backends still pass in varargs strings. This will ease binding implementations. 2009-12-13 Marcus Meissner * gphoto2/gphoto2-widget.h, libgphoto2/gphoto2-widget.c: added set_ and get_ readonly for Widgets. 2009-07-30 Dan Fandrich * Fixed a bunch of C89 and SUS portability issues. 2009-04-13 Marcus Meissner * gphoto2-filesys.c: Disabled LRU caching. * gp_file_new_from_handler(): Allow passing data in and out via handler functions (to allow streaming). * CameraFileInfoFile: removed "name" structmember and GP_FILE_INFO_NAME flags. Use direct passing in of the filename to the API functions. * New: gp_camera_autodetect(CameraList *list, GPContext*); Simple autodetection function returning all current detected cameras. * (TODO: not yet New: gp_camera_open (Camera *camera, const char *name, const char *port, GPContext *context); Simple open function without needing to involve libgphoto2_port. ) * gp_file_set_name() and _get_name() passing in is no longer needed and the API will go away. * New gp_file_get_name_by_type() will convert a regular filename ("normal") into one depending on type (e.g. "raw_" prefix) and adjusted suffix (like ".ppm" turning into ".pgm" for grayscale previews). * gp_file_set_type() and gp_file_get_type() are gone, these functions are now implicit passed via arguments to the the put_file and set_file_noop() functions. * gp_filesystem_set_info_noop(), gp_filesystem_set_file_noop(), gp_filesystem_put_file(), gp_camera_folder_put_file(): Added "filename" argument to pass in the filename. The one from CameraFileInfoFile and CameraFile are no longer used. Added "type" argument to pass in the filetype (GP_FILE_TYPE_*). * Adjusted to new GPPortInfo handling. * Rewrote gphoto2-filesys.c to be directory based (in a tree structure). Change should not be visibile outside of gphoto2-filesys.c. 2008-05-18 Marcus Meissner * libgphoto2/gphoto2-filesys.c: Do not try to extract EXIF data if the file is too large. This avoids memory allocating for file descriptor based downloads. 2008-05-06 Hubert Figuiere * camlibs/ptp2/library.c: Added Nikon P5100 2008-04-20 Theodore Kilgore * libgphoto2/bayer.h: gp_ahd_interpolate() and gp_ahd_decode() added. * libgphoto2/ahd_bayer.c: added. * libgphoto2/Makefile.am: ahd_bayer.c hooked up. * libgphoto2/libgphoto2.sym: gp_ahd_decode and gp_ahd_interpolate listed. 2008-03-31 Marcus Meissner * libgphoto2/gphoto2-abilities-list.c: Use qsort() instead of bubble sort. Saves 0.4 seconds on a 2Ghz machine. Found by Szigeti Janos. 2008-02-26 Marcus Meissner * packaging/generic/print-camera-list.c: HAL's "info.bus" is been called "info.subsystem" now. 2007-10-21 Marcus Meissner * gphoto2/gphoto2-filesys.h: Change long to uint64_t, int to uint32_t to fix the struct sizes to a better known value (mostly for C#). Include , a ISO C99 feature. This changes the "CameraFileInfo" and "CameraStorageInformation" struct sizes on all platforms. 2007-10-16 Marcus Meissner * libgphoto2/gphoto2-list.c: Removed artificial limit on entries in CameraList (now dynamic) and also the artificial limit on name/value (now dynamic). This is source code compatible, but not ABI compatible. Bumped SO version to 6 (with libtool increment rules). 2007-07-25 Hubert Figuiere * camlibs/ptp2/library.c: Added Kodak Z712 IS 2007-06-21 Hubert Figuiere * camlibs/ptp2/library.c: Added Canon A560 2007-05-28 Hubert Figuiere * camlibs/ptp2/library.c: Added Nikon Coolpix L10. 2007-05-27 Hubert Figuiere * camlibs/ptp2/library.c: Added Canon A570 IS. 2007-05-05 Hubert Figuiere * camlibs/ptp2/library.c: Added FujiFilm F40 fd http://gphoto.org/bugs/?id=1713438 2007-04-08 Hubert Figuiere * camlibs/directory/directory.c: added more RAW types. Should fix bug #1696551 http://gphoto.org/bugs/?id=1696551 2007-03-01 Marcus Meissner Theodore Kilgore * libgphoto2/bayer.{c,h}: Enhanced bayer algorithm. 2007-01-31 Hubert Figuiere * camlibs/ptp2/library.c: added Coolpix P4. added Kodak P880 2007-01-21 Marcus Meissner * libgphoto2/gphoto2-filesys.c: Bugfixes for LRU double linked list handling. 2007-01-03 Hubert Figuiere * libgphoto2_port/disk/disk.c (gp_port_library_list): handle automounter properly when there is no HAL. * camlibs/directory/directory.c (file_list_func): ignore entries that start with '.' (folder_list_func): ignore entries that start with '.' Some code style cleaning. 2006-11-25 Hubert Figuiere * libgphoto2_port/configure.ac: bump soname for libgphoto2_port post 2.3.0 branch * configure.ac: 2.3.0.1.trunk because we branched 2.3.0 2006-10-14 Hubert Figuiere * camlibs/panasonic/l859/l859.c, camlibs/enigma13/enigma13.c (enigma13_get_toc), camlibs/panasonic/l859/README.panasonic-l859, camlibs/panasonic/dc.h: Fixed typo https://launchpad.net/distros/ubuntu/+source/libgphoto2/+bug/61163 2006-10-07 Hubert Figuiere * camlibs/canon/canon.c, camlibs/konica/qm150.c, camlibs/ptp2/ptp.c, camlibs/sierra/library.c, camlibs/sierra/sierra-desc.c, doc/camlib_devel.lyx, libgphoto2/gphoto2-abilities-list.c: s/occured/occurred/ From Launchpad bug 61163: https://launchpad.net/distros/ubuntu/+source/libgphoto2/+bug/61163 2006-09-19 Hubert Figuiere * camlibs/ptp2/config.c: More typo. * camlibs/gsmart300/library.c (delete_file_func): Fixed typo * camlibs/ptp2/ptp.h (PTP_DPC_NIKON_WhiteBalanceFluorescentBias): Change typo in the const name * camlibs/stv0680/bayer.c (light_enhance), camlibs/minolta/dimagev/dimagev.c, camlibs/konica/qm150.c (camera_manual), camlibs/spca50x/library.c (delete_file_func), camlibs/canon/usb.c (canon_usb_camera_init), camlibs/sierra/olympus-desc.c, camlibs/ptp2/ptp.c (ptp_get_property_description), libgphoto2/gphoto2-camera.c (gp_camera_init), camlibs/ptp2/library.c (camera_canon_capture): Fix typos https://launchpad.net/products/libgphoto/+bug/61163 2006-06-07 Hubert Figuiere * AUTHORS: added credits for 5D capture support. 2006-04-18 Hubert Figuiere * configure.in: 2.2.0trunk version 2006-03-21 Marcus Meissner * libgphoto2/gphoto2-camera.[ch]: Added gp_camera_wait_for_event() API, to wait for specific camera events and return them to the caller. See camlibs/ptp2/library.c for an example usage. Contributed by Edward Flick . 2006-01-27 Theodore Kilgore * camlibs/clicksmart310/*: Supports Logitech Clicksmart 310. * configure.in: camlibs/clicksmart310 hooked up. * AUTHORS: author of camlibs/clicksmart310 added. * MAINTAINERS: maintainer of camlibs/clicksmart310 added. 2006-01-04 Hubert Figuiere * configure.in: bump the .so version 2005-12-26 Hubert Figuiere * CHANGES: updated for 2.1.99 2005-12-25 Hubert Figuiere * configure.in: Version 2.1.99 (pre-release) 2005-12-06 Theodore Kilgore * camlibs/digigr8/*: New camera library for 0x2770:0x905c cameras. * configure.in: camlibs/digigr8 hooked up. * AUTHORS: author of camlibs/digigr8 added. * MAINTAINERS: maintainer of camlibs/digigr8 added. 2005-08-31 Hubert Figuiere * bindings/csharp: C# binding from f-spot 0.1.1 2005-08-30 Hubert Figuiere * bindings/java: Java bindings from patch# 1108091 http://sf.net/tracker/?func=detail&aid=1108091&group_id=8874&atid=308874 * bindings/python: Python binding from patch# 1152835 http://sf.net/tracker/?func=detail&aid=1152835&group_id=8874&atid=308874 2005-08-25 Marcus Meissner * libgphoto2/gphoto2-filesys.c Got rid of most LRU heuristics, simplified to just store the last full datastreams. This should be fully sufficient for 99.9% of all usecases (download images lineary). You can control this by the setting "libgphoto2" , "cached-images". 2005-08-14 Marcus Meissner * camlibs/directory.c, libgphoto2_port/disk, libgphoto2/gphoto2-abilities-list.c: Added support for mounted digitalcameras (USB mass storage based). Port type is: disk:/full/path/ Camera driver is: "Directory Browse" 2005-06-27 Hubert Figuiere * po/ru.po: Update ru.po 2005-06-11 Hans Ulrich Niedermann * configure.in: new version 2.1.99.head.0 * camlibs/**/Makefile.am: link camlibs as libtool modules with shorter names and explicit symbol list * libgphoto2/Makefile.am: link libgphoto2 with explicit symbol list 2005-06-08 Theodore Kilgore * libgphoto2_port/: added functions to support new request types * camlibs/sonix: initial hookup * configure.in: hooked up camlibs/sonix 2005-05-13 Marcus Meissner * po/eu.po: new baskish from Hizkuntza Politikarako Sailburuordetza 2005-04-14 Hans Ulrich Niedermann * */configure.in, */Makefile.am, ...: updated build system. See "./autogen.sh --help" and ./configure --help" for help. 2005-04-05 Hubert Figuiere * camlibs/ptp: removing obsolete camlib. 2005-03-30 Hans Ulrich Niedermann * libgphoto2/gphoto2-file.c: replace stricmp() by strcasecmp() #include should take care of portability of strcasecmp() 2005-02-07 Marcus Meissner * libgphoto2/gphoto2-filesys.c: Use the minimum of the 3 exif timestamps (time, capture time, digitized time). This fixes use on the Traveller SX330Z as reported. 2005-01-18 Marcus Meisser * po/ru.po: Update thanks to Vyacheslav Dikonov 2005-01-17 Colin Marquardt * po/ja.po: Update thanks to Takeshi AIHANA. 2004-12-15 Hubert Figuiere * configure.in: 2.1.5 2004-11-26 Hubert Figuiere * configure.in: 2.1.5rc1 2004-11-26 Theodore Kilgore * camlibs/iclick/*: New camera driver written by T. K. and Stephen Pollei . * configure.in: camlibs/iclick hooked up. * AUTHORS: authors of camlibs/iclick added. * MAINTAINERS: listed T. K. as the (current) maintainer. 2004-11-18 Lutz Mueller * camlibs/kodak/Makefile.am: Hook up the new ez200-driver. 2004-11-18 Lutz Mueller * camlibs/kodak/ez200/*: New camera driver written by Edo . Slightly modified to remove some warnings. * configure.in: Hook it up. 2004-11-17 Hubert Figuiere * configure.in * camlibs/toshiba: Revert deletion of driver pdrm11 2004-11-17 Lutz Mueller * configure.in * camlibs/toshiba: Removed on request of Sean Bruno (camera is supported by sierra driver). 2004-10-28 Hubert Figuiere * libgphoto2/gphoto2-context.h: Fix build for gcc 2.95 (bug #1055868) 2004-10-18 Hubert Figuiere * TESTERS: add myself as tester for Canon 20D 2004-08-23 Marcus Meissner * libgphoto/gphoto-result.h: Add gcc attributes to specify format strings, so the compiler can warn about misuse. * libgphoto2/gphoto2-filesys.c: Fixed 2 problems with format strings / arguments. * libgphoto2/gphoto2-result.h: Translate libgphoto errors. 2004-08-02 Hans Ulrich Niedermann * configure.in: Removed Toshiba PDR-M65 driver * camlibs/toshiba/pdrm65/: Removed Toshiba PDR-M65 driver. PDR-M65 uses the Sierra protocol. 2004-07-14 Hans Ulrich Niedermann * configure.in: Added camlibs/toshiba/pdrm65/Makefile * camlibs/toshiba/pdrm11/Makefile.am: Renamed current PDR-M11 camlib "toshiba" to "toshiba_pdrm11" * camlibs/toshiba/pdrm65/: Added files for PDR-M65 driver. The PDR-M65 driver is developed by Sean Bruno. 2004-05-29 Theodore Kilgore * MAINTAINERS: added myself as maintainer of aox, mars, sq905 camlibs. 2004-05-29 Theodore Kilgore * AUTHORS: added myself as author of aox, mars, sq905 camlibs. 2004-05-13 Raymond Penners * camlibs/sonydscf55: Merged in Sony DSC-F55 patches from Alberto Garlassi: added support for downloading MPEG files, and fixed thumbnail downloading. 2004-05-01 Theodore Kilgore * configure.in: Hook up camlibs/mars 2004-04-08 Raymond Penners * camlibs/sonydscf55: Merged in patch from Alberto Garlassi: serial communication fixes on fast CPUs, and the native file names are now used (instead of using the hardcoded "dsc%05d.jpg"). 2004-01-06 Marcus Meissner * Multiple USB camera support. 2003-11-19 Theodore Kilgore * configure.in: Hook up camlibs/aox (driver by Theodore Kilgore). 2003-11-16 Patrick Mansfield * libgphoto2 gphoto2-camera.c, gphoto2-result.c, gphoto2-result.h: Return GP_ERROR_CAMERA_BUSY if a command or I/O is in progress. 2003-08-27 Christophe Barbe * libgphoto2/gphoto2-filesys.c: Return the max when unable to know the available memory instead of failing to build. 2003-06-26 Lutz Mueller * configure.in: Hook up camlibs/sq905 (driver by Theodore Kilgore * gphoto2/main.c, po/*.po: s/gphoto-devel@gphoto.org/gphoto-devel@lists.sourceforge.net/ 2003-05-26 Hans Ulrich Niedermann * configure.in: 2.1.2rc1, with CVS tag * libgphoto2/gphoto2-ability-list.c: replace colon by space 2003-05-17 Hans Ulrich Niedermann * configure.in: 2.1.2dev9, with CVS tags * configure.in: 2.1.2dev10, without CVS tags, for development 2003-05-12 Marcus Meissner * configure.in: disabled gsmart, benq, spca504_flash camlibs (now replaced by spca50x camlib). Handle camlibs with - in the name by replacing it with _. 2003-05-12 Hans Ulrich Niedermann * configure.in: 2.1.2dev8 2003-05-12 Marcus Meissner * configure.in: added agfa-cl20 driver (from cl20.poeml.de). * CHANGES: adapted. * AUTHORS: added agfa-cl20 authors. 2003-05-05 Marcus Meissner * configure.in: removed ptp driver (now replaced by ptp2) * MAINTAINERS: ptp -> ptp2 2003-02-26 Hubert Figuiere * configure.in: added toshiba/pdrm11 to build * MAINTAINERS: added toshiba/pdrm11 maintainer 2003-02-21 Hans Ulrich Niedermann * doc/Makefile.am: renamed man pages * doc/gphoto2.3,doc/gphoto2_port.3: removed * doc/libgphoto2.3,doc/libgphoto2_port.3: added 2003-02-01 Patrick Mansfield * TESTERS: Added Valentin Rusu as a tester for the Epson PhotoPC 850z 2002-12-03 Marcus Meissner * Imported stv0674 camlib from Vincent Sanders . 2002-11-21 Patrick Mansfield * libgphoto2/gphoto2-camera.c: Allow a NULL for the path to be passed to the camera capture. 2002-11-12 Lutz Mueller * libgphoto2/gphoto2-version.c: Use HAVE_CC only if defined. 2002-11-10 Lutz Müller * libgphoto2/gphoto2-widget.[c,h] (gp_widget_set_value): Make the argument const. 2002-11-08 Hans Ulrich Niedermann * configure.in: 2.1.1dev10, increased AGE to 3 * libgphoto2/gphoto2-version.[ch]: added * libgphoto2/Makefile.am: added gphoto2-version.[ch] 2002-11-06 Hans Ulrich Niedermann * camlibs/*/Makefile.am: * libgphoto2/Makefile.am: * libgphoto2/libgphoto2.pc.in: * configure.in: made camlibdir settable by cmdline option 2002-11-01 Hans Ulrich Niedermann * configure.in: 2.1.1dev9 2002-10-17 Hans Ulrich Niedermann * libgphoto2/gphoto2-abilities-list.c: removed the fscking "can't load *.la" message * libgphoto2_port/m4/documentation.m4: removed unnecessary stuff (xmlto, fig2dev, etc.) * configure.in: 2.1.1dev8 2002-10-13 Hans Ulrich Niedermann * *.am, libgphoto2_port/m4/packaging.m4, libgphoto2_port/m4/packaging.m4: moved definition of docdir from Makefile.am to m4 macros * configure.in: 2.1.1dev7 2002-10-03 Lutz Müller * libgphoto2/gphoto2-abilities-list.[c,h] (gp_abilities_list_reset): New. * configure.in: Reflect above changes in VERSION. 2002-09-28 Marcus Meissner * Imported SiPix StyleCam Blink driver from Vincent Sanders 2002-09-12 Hans Ulrich Niedermann * configure.in: 2.1.1dev6 2002-08-29 Lutz Müller * libgphoto2/gphoto2-filesys.c: Cosmetic changes. Made code consistent to reflect the assumption that only GP_FILE_TYPE_[RAW,AUDIO,NORMAL] contain a significant amount of data that needs to be removed from cache. 2002-08-29 Lutz Müller * libgphoto2/gphoto-file.c (gp_file_get_data_and_size): If data or size is NULL, ignore it. 2002-08-28 Hans Ulrich Niedermann * configure.in: 2.1.1dev5 (LRU cache, new drivers, etc.) removed multiple intl/Makefile and po/Makefile added by gettextize 2002-08-26 Hubert Figuiere * MAINTAINERS: Added Kodak DC210 maintainer. 2002-08-23 Hubert Figuiere * configure.in: added largan/lmini driver * camlibs/largan/lmini: new driver for Largan Lmini 2002-08-22 Christophe Barbé * configure.in: test for /proc/meminfo (HAVE_PROCMEMINFO). * libgphoto2/gphoto2-filesys.c: Use HAVE_PROCMEMINFO. 2002-08-22 Christophe Barbé * libgphoto2/gphoto2-filesys.c: Implemented code to free cached data when we are going out of memory. I still have to add a test in configure for the /proc filesystem. 2002-08-21 Vincent Weaver * camlibs/agfa/: Move camlibs/agfa to camlibs/soundvision * camlibs/agfa/: Rename agfa files to new soundvision scheme * camlibs/agfa/: Minor fixes for Tiger Fast Flicks support 2002-08-14 Christophe Barbé * libgphoto2/gphoto2-filesys.c: LRU implementation for the filesystem cache. 2002-08-14 Peter Kajberg * MAINTAINERS: Add myself as camlibs/pccam600 maintainer. * configure.in * camlibs/pccam600: New driver for Creative PC-CAM600 2002-08-09 Till Adam * MAINTAINERS: Add myself as camlibs/gsmart maintainer. 2002-08-08 Lutz Müller * configure.in: Create camlibs/gsmart/Makefile. 2002-08-08 Lutz Müller * configure.in * camlibs/gsmart: New driver by Till Adam . 2002-08-01 Hubert Figuiere * libgphoto2/gphoto2-list.c (exchange): changed strcpy with memcpy that prevents unterminated strings overflow. 2002-09-01 Lutz Müller * MAINTAINERS: Uli does the mailing lists. 2002-09-01 Lutz Müller * MAINTAINERS: Arnaud is now responsible for autogen.sh. Added myself on top of Scott regarding libgphoto2(_port). 2002-07-30 Hans Ulrich Niedermann * autogen.sh: new package name: libgphoto2 * configure.in: 2.1.1dev3 -> 2.1.1dev4 2002-07-29 Lutz Müller * README: First attempt to separate gphoto2 from libgphoto2. 2002-07-28 Lutz Müller * configure.in: Detect new version of libexif (forgot to check that in the last time). * frontends: Removed. Now in the "gphoto2" module. 2002-07-27 Hans Ulrich Niedermann * configure.in: new package name: libgphoto2 2002-07-25 Christophe Barbé po files from Stefan Bj|rnelund * po/sv.po: Update Swedish translation. 2002-07-25 Lutz Müller * configure.in: Detect new version of libexif. * frontends/command-line/actions.c: * libgphoto2/gphoto2-filesys.c: Adjust to new version of libexif (if found). 2002-07-24 Hans Ulrich Niedermann * configure.in: 2.1.1dev3 * doc/gphoto2.xml: added reference to CSS stylesheet * doc/docbook-xml.css: added CSS stylesheet for Docbook XML 2002-07-17 Lutz Müller * libgphoto2/libgphoto2.pc.in: Add driverdir variable. 2002-07-14 Hans Ulrich Niedermann * autogen.sh: explicitly delete autogenerated files and dirs not in CVS * configure.in: 2.1.1dev2, fixed typo in message 2002-07-12 Lutz Müller * configure.in: Use ltdl if available. 2002-07-06 Patrick Mansfield * MAINTAINERS: Add myself to camlibs/sierra 2002-07-05 Lutz Müller * configure.in: Add camlibs/sx330z. 2002-06-27 Lutz Müller Patch from Arnaud Launay : * autogen.sh: Call libtoolize - newer automakes don't call it automatically. 2002-06-27 Lutz Müller Patch from Arnaud Launay : * Makefile.am: /$(TAR)/tar/ 2002-06-24 Christophe Barbé Patch for FreeBSD from Arnaud Launay * configure.in: Use -pthread instead of -lc_r, libtool 1.4.2a doesn't like -lc_r (unlike plain 1.4.2). 2002-06-21 Christophe Barbé po files from Takeshi AIHANA * po/ja.po: Update Japan translation. 2002-06-20 Lutz Müller * ABOUT-NLS: Remove this file, it is generated by gettextize. 2002-06-19 Hubert Figuiere * camlibs/minolta/NEWER_MINOLTAS (UPDATE): updated the statement about newer Minolta camera support. 2002-06-19 Christophe Barbé * Makefile.am: Added CHANGES in EXTRA_DIST. 2002-06-19 Lutz Müller * configure.in: Make the check for cdk.h search in $ac_default_prefix. Make checks for libjpeg, libexif, libcdk, etc. consistent. 2002-06-19 Lutz Müller Suggestion from Hans Ulrich Niedermann : * autogen.sh: Remove the call to configure. 2002-06-19 Lutz Müller Suggestion from Arnaud Launay : * configure.in: Let users specify where to look for libjpeg (--with-jpeg-prefix). 2002-06-18 Christophe Barbé po file from Fabian Mandelbaum * po/es.po: Spanish translation. 2002-06-18 Lutz Müller * configure.in: AC_PREREQ(2.50), because otherwise, --enable-maintainer-mode will fail somehow. 2002-06-17 Lutz Müller Patch by Arnaud Launay : * doc/gphoto2.xml: Add missing '>'. 2002-06-17 Lutz Müller Marcus Meissner explained me how what --enable-maintainer-mode is for: * Makefile.am: Uncomment the automake and aclocal flags. 2002-06-17 Lutz Müller Patch by Arnaud Launay , which corrects the previous patch: * Makefile.am: Correct the flags to tar. 2002-06-17 Lutz Müller Patch by Arnaud Launay , slightly modified: * Makefile.am: Get rid of the automake flags, use --bzip2 instead of -j. 2002-06-17 Christophe Barbé Patch by Arnaud Launay * doc/Makefile.am : Don't try to move figures when fig2dev is not there. 2002-06-17 Christophe Barbé * Makefile.am: Removed autogen.sh from EXTRA_DIST. 2002-06-17 Christophe Barbé * configure.in: 2.1.0 branch created, main branch version 2.1.1dev1. 2002-06-17 Mariusz Woloszyn * doc/FAQ: Added "gphoto2 does not work..." general question 2002-06-15 Lutz Müller * configure.in: Fix readline error message. 2002-06-15 Christophe Barbé Patch by Arnaud Launay * autogen.sh: Copy po/Makevars.template to po/Makevars when necessary. 2002-06-14 Lutz Müller * libgphoto2/gphoto2-abilities-list.c: Cleanup the ltdl-specific part. 2002-06-14 Lutz Müller Patch by Arnaud Launay , slightly enhanced: * autogen.sh: If gettext --version is something like 0.11.*, add the --intl option to gettextize. 2002-06-14 Lutz Müller * libgphoto2/Makefile.am: * configure.in: Fix (?) -version-info 2002-06-14 Lutz Müller * configure.in: Given the pending release, it is safer to disable the use of the buggy libltdl. 2002-06-14 Lutz Müller Suggested by Arnaud Launay , slightly modified: * configure.in: Simplify check for readline. 2002-06-13 Hans Ulrich Niedermann * doc/figures/Makefile.am: don't build images we don't even use * doc/Makefile.am: - clean pdf and ps files if generated - install pdf and ps manuals - create figures before building manual - made pdf and ps manual creation work when srcdir != builddir - added symlink in manual/ to enable people to view manual in src tree - use $(AMTAR) and install only the png and html files for the html manual 2002-06-13 Lutz Müller Patch by Arnaud Launay , slightly corrected: * configure.in: Fix check for readline. 2002-06-13 Hans Ulrich Niedermann * configure.in: 2.0.1dev13 (because of lots of build changes) * doc/figures/Makefile.am: only install png images, but still build jpg and eps * doc/Makefile.am: use $(XMLTO) instead of xmlto everywhere 2002-06-12 Christophe Barbé * doc/Makefile.am: no more figures link. install only png files for the user manual. 2002-06-12 Lutz Müller * configure.in: * libgphoto2/gphoto2-abilities-list.c: Make libgphoto2 use ltdl.h. I needed to introduce a global variable - code is marked as UGLY_HACK. If you know how to fix it, please tell me. 2002-06-12 Lutz Müller * configure.in: * libgphoto2/gphoto2-camera.c: * libgphoto2/gphoto2-abilities-list.c: Fixes for HAVE_LTDL. Still doesn't work. 2002-06-12 Christophe Barbé * libgphoto2_port/m4/documentation.m4: Added --with-doc-formats option and removed xmlto tests to find the available formats. * libgphoto2_port/configure.in: Duplicated tr hack from main configure.in. 2002-06-12 Lutz Müller * doc/FAQ: New entry. 2002-06-09 Hans Ulrich Niedermann * configure.in: 2.0.1dev11 (because of build changes) 2002-06-06 Lutz Müller * autogen.sh: No need for configuring the whole thing 3 times... 2002-06-06 Lutz Müller * autogen.sh: Fix the order of processing libgphoto2_port and . 2002-06-06 Lutz Müller * intl: Remove these files - they should be generated by gettextize. * autogen.sh: Check for and run gettextize. 2002-06-06 Lutz Müller * INSTALL: Fix the aclocal command. 2002-06-06 Lutz Müller * acconfig.h: According to http://www.gnu.org/manual/autoconf-2.53/html_mono/autoconf.html, this file is obsolete. * configure.in: Adapt to above. 2002-06-04 Hans Ulrich Niedermann * configure.in: 2.0.1dev10 * doc/gphoto2.xml: reformatted preparing for PDF * doc/FAQ: added note about stv680 kernel driver * INSTALL: autogen.sh works for me, also with older autotools than Lutz mentioned, so I added note about that 2002-06-03 Lutz Müller * INSTALL: Add note about outdated autogen.sh. 2002-05-30 Hans Ulrich Niedermann * configure.in: 2.0.1dev9, as we have a manual now * configure.in: added manual doc message, named API doc msg like that, reformatted messages a little * doc/Makefile.am: build manual only if possible, clean manual only if building possible * doc/gphoto2.xml: - add "QuickStart" chapter - improved existing setup chapter - added first part of developer (API) documentation - added chapter on ideas for the future - added appendix with resources 2002-05-26 Hans Ulrich Niedermann * doc/gphoto2.xml: added gphoto2_port(3) man page 2002-05-26 Hans Ulrich Niedermann * doc/Makefile.am: only include rules if corresponding programs exist 2002-05-25 Hans Ulrich Niedermann * doc/gphoto2.xml: moved content of gphoto2.txt here * doc/gphoto2.txt: declared file obsolete * doc/Makefile.am: make man pages with command displayed, make html pages out of gphoto2.xml 2002-05-20 Christophe Barbe * camlibs/canon/canon.c: mtime is now converted to UTC as expected. 2002-05-20 Tim Waugh * doc/gphoto2.xml: Add note in gphoto2(1) about how ranges are interpreted. * doc/gphoto2.1: Regenerated. 2002-05-20 Christophe Barbe * frontends/command-line/main.c: fixed my previous fix. 2002-05-20 Tim Waugh * doc/gphoto2.xml: Fix formatting. * doc/gphoto2.1, doc/gphoto2.3: Regenerated. 2002-05-19 Christophe Barbe * frontends/command-line/main.c: fixed fparams initialization. 2002-05-19 Christophe Barbe * frontends/command-line/main.c: replaced a missused #if with a #ifdef * frontends/command-line/gphoto2-cmd-capture.c: same 2 times. reported by Luciano Campal Vazquez 2002-05-18 Hans Ulrich Niedermann * frontends/command-line/gphoto2.xml: moved man pages from frontends/command-line/ to doc/ * doc/gphoto2.xml: added gphoto2(3) man page * doc/gphoto2.xml: added examples to gphoto2(1) * configure.in: 2.0.1dev6 2002-05-17 Hans Ulrich Niedermann * INSTALL: added CDPATH warning, "make rpm" works again * configure.in: added CDPATH warning * configure.in: 2.0.1dev5, added comment to AC_DEFINE * configure.in: hopefully fixed readline detection when -lncurses needed 2002-05-07 Lutz Müller * frontends/command-line: Remove more globals. 2002-05-07 Lutz Müller * acconfig.h: #undef HAVE_PTHREAD * configure.in: Check for pthread. * frontends/command-line: Support for gp_camera_set_timeout_funcs. 2002-05-07 Lutz Müller * libgphoto2/gphoto2-camera.c: Fix bug. 2002-05-07 Lutz Müller * libgphoto2/gphoto2-camera.c: Fix mem-leak. 2002-05-06 Lutz Müller * libgphoto2/gphoto2-camera.[c,h] (gp_camera_[start,stop]_timeout), (gp_camera_set_timeout_funcs): New * configure.in: AGE 1, REVISION 0 in order to reflect above. 2002-04-30 Marcus Meissner * libgphoto2/gphoto2-filesys.c: memset() filesys to 0 so we do not forget to initialize members. (sf bug #549958) 2002-04-28 Lutz Müller * frontends/command-line/main.c: %s/licence/license 2002-04-25 Colin Marquardt * README: Small tweaks in the "Reporting bugs" section. 2002-04-16 Lutz Müller * configure.in: Add fuji. 2002-04-07 Hans Ulrich Niedermann * frontends/command-line/main.c: added option --usb-usermap-script name which lets user specify the name of the hotplug usb script * frontends/command-line/options.c: changed copyright from "2000,2001" to "2000-2002" * configure.in: added --usb-usermap-script justifies increased 2.0.1dev4 * doc/gphoto2.txt: added notice about unplugging cam and creating /etc/hotplug/usb if necessary 2002-04-04 Marcus Meissner * frontends/command-line/main.c: Dump USB class devices into usbmap too. 2002-04-01 Hans Ulrich Niedermann * TESTERS: added explicit usage permissions and improved wording some 2002-03-24 Lutz Müller Patch by Patrick Mansfield (without ChangeLog entry, therefore I am just quoting the e-mail): * frontends/command-line/gphoto2-cmd-config.c: This patch fixes scaling when using the command line interface with a range widget with an increment value with non-zero decimal digits (like .5). (...) I also used the A_STANDOUT (like Cliff's patch) rather than "-" so negative numbers work correctly. Also included is a change to set page increment based on the range of values, so really large ranges can more easily be adjusted. The page increment is set so you can go through all values in 20 key strokes or fewer - this still doesn't work well, but it is better than trying to go from 0 -> 8000000 in chunks of 10. It is clunky in that the page increment is not always a multiple of the increment. 2002-03-23 Lutz Müller Patch by Cliff Wright (comments quoted from the e-mails): * frontends/command-line/main.c: The command line program does not allow one to have a combination of --config, and --capture-image where the config will occur first, and then the capture. Since some cameras do not retain all config info between connections This is a feature I wanted, so the below patch fixes this by moving config in front of capture. * frontends/command-line/gphoto2-cmd-config.c: Unless cdk has changed the way they handle month's for the config calendar display, their is a bug in the command line configure in file gphoto2-cmd-config.c. The patch below fixed this for me. 2002-03-22 Hans Ulrich Niedermann * packaging/usbcam*: moved to packaging/linux-hotplug/* * packaging/Makefile.am: reflect that * configure.in: reflect that and 2.0.1dev3 * doc/gphoto2.txt: clarification that /proc/bus/usb has to be mounted in any case 2002-03-22 Lutz Müller * frontends/command-line/Makefile.am: Remove "-g" from [C,LD]FLAGS. If you need it, please add it again in configure.in. 2002-03-21 Marcus Meissner * configure.in, libgphoto2_port/configure.in: added AC_INLINE, AC_CONST for platforms that don't have it. 2002-03-14 Hans Ulrich Niedermann * doc/gphoto2.txt: clarification of hotplug setup 2002-03-13 Colin Marquardt * configure.in: Added es to ALL_LINGUAS. 2002-03-13 Hans Ulrich Niedermann * configure.in: 2.0.1dev2, fixed typo * frontends/command-line/main.c: removed decoding of numeric debug message priorities * frontends/command-line/main.c: timestamped logs 2002-03-11 Lutz Müller * frontends/command-line/Makefile.am: * frontends/command-line/main.c: Add --authors and --licence. 2002-03-11 Lutz Müller * configure.in: Check for rl_completion_matches. 2002-03-11 Lutz Müller * frontends/command-line/globals.h: * frontends/command-line/main.c: 1 global variable less. 2002-03-11 Mariusz Woloszyn * frontends/command-line/main.c: you can now specify --filename while uploading, thx to Lutz. 2002-03-09 Lutz Müller * frontends/command-line/shell.c: Fix readline stuff (automatic completion). 2002-03-07 Hubert Figuiere * INSTALL: changed URL to fetch CDK: fix bug #527098 2002-02-26 Marcus Meissner * libgphoto2/gphoto-camera.c: do gp_close_port() unconditionaly in gp_camera_exit(). 2002-02-26 Lutz Müller * configure.in: We are currently working on libgphoto2-2.0.1. 2002-02-26 Lutz Müller * frontends/command-line/foreach.c (for_each_file_in_range): If deleting files not recursively, adjust the image ID for subsequent images. * frontends/commane-line/main.c (main): If deleting files, do it in reverse order such that above case does never occur. Fixes #522796. 2002-02-26 Lutz Müller * frontends/command-line/shell.c: Patch from Rob Hillis : Use SHELL_PROMPT instead of shell_prompt_text. * frontends/command-line/actions.c: Use %li instead of %i to kill some warnings. 2002-02-25 Lutz Müller * acconfig.h: * configure.in: Add optional readline support. * frontends/command-line/main.c: Show remaining time in progress bar. * frontends/command-line/globals.h: Export glob_cancel. * frontends/command-line/shell.[c,h]: Clean up and add (optional) readline support. Support deletion of files. 2002-02-25 Lutz Müller * configure.in: Version 2.0 2002-02-23 Lutz Müller Patch from Patrick Mansfield : * libgphoto2/gphoto2-filesys.c: sizeof (path), not sizeof (folder). Doh. 2002-02-21 Colin Marquardt * configure.in: Removed zh_CN.GB2312 from ALL_LINGUAS. zh_CN.po is enough. 2002-02-18 Colin Marquardt * configure.in: Added zh_CN.GB2312 to ALL_LINGUAS. 2002-02-18 Lutz Müller Bug reported by Marcus Meissner : * frontends/command-line/options.c: The option "-" is invalid. 2002-02-17 Lutz Müller * libgphoto2/gphoto2-filesys.c: If a file is requested, look for mtime first in the file, then in the info, then in the (EXIF) data of the file, and finally in GP_FILE_TYPE_EXIF. 2002-02-15 Christophe Barbé * libgphoto2_port/doc/DocRules.am: change rule to build in the builddir (!= srcdir) and to install from buildir. 2002-02-14 Fredrik * frontends/command-line/main.c: Make at least a small attempt at quoting arguments which might need it when asking users to execute the same command again with --debug. Patch from Chris Halls. 2002-02-13 Dan Fandrich * libgphoto2/gphoto2-abilities-list.h * libgphoto2/gphoto2-camera.h * libgphoto2/gphoto2-filesys.h: Rearranged some structs and added some empty members to make backward compatibility easier to achieve when API changes are made in the future. 2002-02-13 Tim Waugh * frontends/command-line/gphoto2.xml: Mention that files are numbered from 1, and that quotes should be used for camera models. * frontends/command-line/gphoto2.1: Regenerated. 2002-02-13 Lutz Müller * libgphoto2/Makefile.am: * configure.in: Introduce versions. 2002-02-12 Fredrik * libgphoto2/gphoto2-filesys.c: Fix month off-by-one bug in Lutz's fix of get_exif_mtime. 2002-02-12 Lutz Müller * libgphoto2/gphoto2-filesys.c: Fix (get_exif_mtime). 2002-02-12 Tim Waugh * MAINTAINERS: Add myself. * frontends/command-line/gphoto2.xml: New file. * frontends/command-line/gphoto2.1: New file. * frontends/command-line/Makefile.am: Install man page. 2002-02-12 Lutz Müller * configure.in: Ok, not everybody likes pkg-config. Offer an alternative check, too. 2002-02-11 Lutz Müller * libgphoto2/gphoto-filesys.c: Previously, we searched thumbnails in EXIF data if GP_FILE_TYPE_PREVIEW is not supported by the driver. Now, we do it the other way round, too: If GP_FILE_TYPE_EXIF is not supported by the driver, get the thumbnail and search for EXIF data there. 2002-02-10 Lutz Müller * frontends/command-line/actions.[c,h]: * frontends/command-line/main.c: Implement --show-info. 2002-02-09 Fredrik * frontends/command-line/foreach.c: Fix bug where new for_each_subfolder() did not descend into subfolders of subfolders when recursive. * frontends/command-line/main.c: Be even more carefull in checking the ID passed to the context functions by camera drivers. 2002-02-08 Christophe Barbé * frontends/command-line/main.c: Add usbid option to override vendorID and deviceID for a given vendorID/deviceID couple in the table describing all supported cameras. This allows us to quickly validate if a new cam could be supported by an existing driver. This requires from the camlib driver to not use the IDs directly but the device name instead. 2002-02-08 Lutz Müller * frontends/command-line/main.c: Implement a progress bar (code adapted from e2fsck). 2002-02-08 Lutz Müller * frontends/command-line: s/image/file and s/picture/file with the exception of capture-image. 2002-02-08 Lutz Müller * libgphoto2/gphoto2-filesys.c: Make it robust against folders with trailing slashes. 2002-02-08 Lutz Müller * frontends/commend-line/main.c: * frontends/command-line/actions[c,h]: * frontends/command-line/foreach[c,h]: Clean up, simplify. 2002-02-08 Lutz Müller * libgphoto2/gphoto2-filesys.c: Add support for getting the mtime out of the file data. 2002-02-07 Lutz Müller * frontends/command-line: Fix my previous (broken) patch and hide all that recursive id look-up stuff. * frontends/command-line/gphoto2-cmd-exif.[c,h]: Removed. Now in actions.[c,h] 2002-02-07 Lutz Müller * frontends/command-line/foreach.[c,h]: Pass CameraList as parameter. This be where the const filename is allocated. Before, the string got messed up. * frontends/command-line/main.c: %s/gp_file_free/gp_file_unref 2002-02-06 Fredrik * frontends/command-line/foreach.c: Check return values of recursive calls to for_each_subfolder(). Fixes bug where errors was not detected if they occured in subfolders of subfolders when doing recursive actions (like -P). 2002-02-06 Colin Marquardt * CHANGES (Module): Add info about new chinese translation. * configure.in (ALL_LINGUAS): Added zh_CN. 2002-02-06 Lutz Müller * libgphoto2_port/m4/Documentation.m4: Fix copy & paste error * doc/api/Makefile.am * libgphoto2_port/doc/Makefile.am * libgphoto2_port/doc/DocRules.am: Fix --enable-docs 2002-02-04 Fredrik * frontends/command-line/actions.[c,h], main.c: Fixed --delete-all-images to work again after I made recursion the default. Recursion is now the default for downloading but not for deletion. Code by me and Lutz. 2002-02-04 Hans Ulrich Niedermann * configure.in: felt like 2.0beta5dev2 - nothing more 2002-02-02 Lutz Müller * frontends/command-line: Let --show-exif accept image numbers, too. 2002-02-01 Lutz Müller * frontends/command-line/gphoto2-cmd-exif.[c,h]: New * frontends/command-line/main.c: Hook it up. 2002-02-01 Raymond Penners * camlibs/sonydscf55: Added "Sony DCR-PC100" to the list of supported camera's. Note: it was already supported by using "Sony MSAC-SR1". However, specifying the name of the camera instead of the name of the device required to read the camera's memory stick is more inline with current tradition. 2002-02-01 Lutz Müller * configure.in: Only call aalib-config if it exists. 2002-02-01 Hans Ulrich Niedermann *configure.in: beta4 has already been released. we are now at beta5dev1 2002-01-31 Lutz Müller * camlibs/ricoh: * configure.in: Initial version. Not working. 2002-01-29 Lutz Müller * configure.in: Tell users where to get additional libraries. 2002-01-29 Lutz Müller * Makefile.am * configure.in * libgphoto2/Makefile.am * libgphoto2/gphoto2-filesys.c * acconfig.h * libexif: Remove libexif and check in configure.in if there is a libexif installed on the system. 2002-01-28 Christophe Barbé * CHANGES: Added with content from beta4 release. * *: Tagged all files included in beta4. 2002-01-27 Dan Fandrich * frontends/command-line/gphoto2-cmd-capture.c: Fixed security problem in creating temporary file for JPEG preview. 2002-01-27 Lutz Müller * libgphoto2/gphoto2-widget.c: Size of CameraWidget->[labelname] is now 256 instead of 32. Fixes long strings (esp. german translation). 2002-01-26 Lutz Müller Patch by Hans Ulrich Niedermann (slightly adapted): * frontends/command-line/main.c: Only report progress information if the user can see it. Same with confirmation of status messages. 2002-01-26 Lutz Müller Fixes #506075: * frontends/command-line/Makefile.am: Include files into EXTRA_DIST that are only conditionally built. 2002-01-25 Marucs Meissner * **/Makefile.am: Replaced $(prefix)/lib/ by $(libdir). (For instance on s390x $(libdir) is $(prefix)/lib64/.) 2002-01-24 Dan Fandrich * libgphoto2/pattrec.c * libgphoto2/jpeg.c: Added include of config.h 2002-01-21 Lutz Müller * frontends/command-line: Fix image numbering when --recurse. 2002-01-19 Lutz Müller * libgphoto2/gphoto2-filesys.c: Check for cancellation. 2002-01-18 Hans Ulrich Niedermann * configure.in: 2.0beta4dev9 (progress is inevitable) 2002-01-16 Lutz Müller * libexif: New * libgphoto2/gphoto2-filesys.c: Use libexif 2002-01-16 Lutz Müller * libgphoto2/gphoto2-file.[c,h] (gp_file_[get,set]_mod_time): New. 2002-01-16 Colin Marquardt * libgphoto2_port/po/fr.po: Update from Jérôme. * po/fr.po: Update from Jérôme. 2002-01-16 Lutz Müller Black magic by Marcus Meissner : find . -type f | xargs grep -l gp_debug_printf | xargs perl -pi -e 's/gp_debug_printf\(\s*GP_DEBUG[^,]*,[^,]*,(.*)$/GP_DEBUG(\1/' 2002-01-15 Lutz Müller * libgphoto2/*.h: Fix headers: no config.h, ifdef __cplusplus ... 2002-01-15 Lutz Müller * libgphoto2/gphoto2-camera.h: Clean up. 2002-01-15 Lutz Müller More GPContext changes: * libgphoto2/gphoto2-context.[c,h]: Add message functionality * camlibs: Use it. 2002-01-14 Fredrik * frontends/command-line/main.c: Fix some core dumps when parsing overly long arguments (filename, port, camera, folder). Maybe this should be changed to checks of unrealistic lengths instead, but at least this makes us not dump core. 2002-01-14 Lutz Müller * frontends/command-line/main.c: If the user presses 2 times -c, abort. 2002-01-14 Colin Marquardt * libgphoto2_port/po/fr.po: Update from Jérôme (is ISO-8859-1 now). * po/fr.po: Update from Jérôme. 2002-01-14 Fredrik * frontends/command-line/main.c: Make folder recursion default. Kept --recurse but made it a no-op with a warning to stderr and added --no-recurse to turn recursion off. 2002-01-14 Lutz Müller * libgphoto2/gphoto2-camera.c: * frontends/command-line/main.c: Translation fixes. 2002-01-13 Colin Marquardt * libgphoto2_port/po/fr.po: New translation from Jérôme. * po/fr.po: Update from Jérôme (help screen fits in 80 chars now). 2002-01-13 Hans Ulrich Niedermann * configure.in: 2.0beta4dev8 (to detect old/new canon camlib :-) 2002-01-13 Lutz Müller * libgphoto2/gphoto2-camera.[c,h]: Remove last references to gp_camera_[get,set] error. 2002-01-13 Colin Marquardt * configure.in: Add fr to ALL_LINGUAS. * po/de.po: Update. * po/fr.po: New file from Jérôme Fenal . Thanks. 2002-01-13 Dan Fandrich * libgphoto2/gphoto2-library.h * libgphoto2/gphoto2-list.h * libgphoto2/gphoto2-result.h: Put #ifdef HAVE_CONFIG_H around include 2002-01-13 Lutz Müller Finished the GPContext stuff - changes all over the place. Basically, gp_[file,camera]_progress has been replaced by gp_context_progress_*. Well, we haven't release a gphoto2-2.0 yet, therefore I hope you don't mind the API change... * libgphoto2/gphoto2-camera.[c,h]: Added a GPContext parameter to any function that can possibly communicate with the camera. That makes every function cancellable (which is good), makes it possible to report multiple errors during execution of a command, offers several (nested) progress reports, and many other goodies. 2002-01-11 Lutz Müller * libgphoto2/gphoto2-context.[c,h]: Support for multiple progress reports at once (especially sub-progress reports). 2002-01-10 Lutz Müller * libgphoto2/gphoto2-filesys.[c,h]: Add a GPContext to all functions that potentially access the camera. This makes cancelling of all operations possible and improves error reporting. * tests/test-filesys.c: * libgphoto2/gphoto2-camera.c: * camlibs: Adjust to reflect above changes 2002-01-10 Lutz Müller * libgphoto2/Makefile.am * libgphoto2/gphoto2-context.[c,h]: New files * libgphoto2/gphoto2-abilities-list.[c,h] (gp_abilities_list_load_ctx): Sample function for showing the benefits of above new files. * frontends/command-line/main.c: Use gp_abilities_list_load_ctx to make that operation cancellable. 2002-01-09 Colin Marquardt * TESTERS: Added Kristian Rink as a tester for the Kodak DC3200. 2002-01-09 Hans Ulrich Niedermann * configure.in: 2.0beta4dev7 * configure.in: output VERSION at configure info * doc/FAQ: Added "Couldn't claim USB interface" 2002-01-09 Dan Fandrich * frontends/command-line/gphoto2-cmd-config.c * configure.in: Allow cdk.h to be found outside a cdk directory. 2002-01-08 Lutz Müller * configure.in: Substitute AM_PROG_LIBTOOL by AC_PROG_LIBTOOL (first is deprecated). 2002-01-07 Lutz Müller * frontends/command-line/main.c: Correctly shut down the camera even in case of error. * libgphoto2/gphoto2-camera.c: Additional debugging message. 2002-01-06 Dan Fandrich * acconfig.h * configure.in: Added test for tm_gmtoff in struct tm 2002-01-06 Hans Ulrich Niedermann * doc/FAQ: Added a few FAQs 2002-01-06 Lutz Müller * configure.in: $prefix is set to NONE if no --prefix=/some/dir is specified. 2002-01-04 Dan Fandrich * libgphoto2/bayer.h * libgphoto2/exif.c * libgphoto2/exif.h * libgphoto2/gphoto2-filesys.c * libgphoto2/jpeg.c: Eliminated // comments (for non-C99 compilers) * configure.in: Only add gcc-specific CFLAGS if we're running gcc. * Minor changes to other files to improve portability. 2002-01-04 Colin Marquardt * configure.in: Add languages for new po files to ALL_LINGUAS. * po/de.po: Update. 2002-01-02 Hans Ulrich Niedermann * INSTALL: Added note about libusb requirements (CVS or 0.1.5) + configure.in: time for 2.0beta4dev6 IMHO 2002-01-02 Lutz Müller * libgphoto2/Makefile.am * camlibs/ * /Makefile.am: Install drivers into versioned subdirectories. 2002-01-02 Lutz Müller * frontends/command-line/main.c: Implement proper cancelling of file down- and upload. 2002-01-01 Fredrik * frontends/command-line/main.c: Better wording in text telling users to mail the gphoto-devel mailing list when something goes wrong. 2001-12-31 Lutz Müller * libgphoto2/gphoto2-filesys.[c,h] (gp_filesystem_delete_file_noop): New. 2001-12-31 Lutz Müller * configure.in: Give users the possibility to specify the location of cdk * frontends/command-line/gphoto2-cmd-config.c: Use fscale if available * frontends/command-line/main.c: #if -> #ifdef 2001-12-31 Marcus Meissner * libgphoto2/gphoto2-abilities-list.c (gp_abilitities_list_detect*): Replaced wrong index into list->abilities by correct one. Should make USB autodetection work again. 2001-12-30 Lutz Müller * libgphoto2/gphoto2-abilities-list.c (gp_abilities_list_detect_usb): Declare this function static - we don't want to advertise it. 2001-12-29 Marcus Meissner * MAINTAINERS: Added myself to stv680 entry. * AUTHORS: Added myself. 2001-12-29 Lutz Müller * frontends/command-line/main.c: Show file-specific progress on upload, too. 2001-12-29 Lutz Müller * libgphoto2/gphoto2-camera.h: Add a note about gp_camera_progress being deprecated. 2001-12-28 Lutz Müller * libgphoto2/gphoto2-file.[c,h]: Implement progress reporting here. That makes file upload and file download cancellable. * frontends/command-line/main.c: Use file-specific progress reporting. 2001-12-27 Dan Fandrich * camlibs/canon/util.h * camlibs/kodak/dc240/library.c * camlibs/kodak/dc240/library.h * configure.in: renamed _byteorder.h to gphoto2-endian.h 2001-12-24 Hans Ulrich Niedermann * configure.in: felt like 2.0beta4dev5 - and progress is inevitable. * frontends/command-line/main.h: added constants for USB hotplug matching * frontends/command-line/main.c: Fixed Bug #490542: wrong match_flags at --print-usb-usermap Thanks to JohnMcPherson for reporting this 2001-12-20 Dan Fandrich * libgphoto2_port/m4/byteorder.m4 * configure.in: added AC_NEED_BYTEORDER_H macro to generate _byteorder.h 2001-12-14 Lutz Müller * configure.in: Comment out check for ltdl.h. See comment in there. 2001-12-13 Lutz Müller * configure.in: * acconfig.h: Put the --disable-debugging option back in. 2001-12-13 Lutz Müller * configure.in: Fix no-ltdl.h case. 2001-12-13 Lutz Müller * libgphoto2: Use ltdl.h if available 2001-12-11 Lutz Müller * frontends/command-line/Makefile.am: It seems we need to LDADD libgphoto2_port.la here, too, although we LIBADDed it in libgphoto2/Makefile.am to libgphoto2.la? 2001-12-11 Lutz Müller * camlibs: Remove references to GP_ERROR_IO_TIMEOUT - we use GP_ERROR_TIMEOUT instead. 2001-12-08 Marcus Meissner * camlibs/stv0680: Added 'capture-image'. Tried implementing a different 'capture-preview' method, but failed (yet). Merged image enhancements from pencam-0.42 (sharpening, white balancing, gamma enhancement). Not really perfect yet, but the images do look better already. Added 'get-raw-image', for getting just the (old) only bayer processed images. * camlibs/stv0680/sharpen.[ch]: GIMP Sharpening Plugin. 2001-12-08 Marcus Meissner * libgphoto2/bayer.[ch]: Export gp_bayer_expand. Needed if you want to do a lightfilter pass right between bayer expand and bayer interpolate. 2001-12-08 Marcus Meissner * camlibs/stv0680/stv0680.html: Removed, replaced by pdf below. * camlibs/stv0680/680_commands_and_communication_sdk.pdf.gz: Extract from STV 680 SDK describing USB command set. Supplied by STM for 'interested developers'. Not officially supported. * camlibs/stv0680/CREDITS, README.pdf: Adjusted. 2001-12-07 Hans Ulrich Niedermann * frontends/command-line/main.c: ENABLE_DEBUGGING -> DISABLE_DEBUGGING * frontends/command-line/main.h: ENABLE_DEBUGGING -> DISABLE_DEBUGGING * libgphoto2/gphoto2-filesys.c: dump filesystem using gp_log * doc/gphoto2.txt: small addition about x-bit * doc/api/gphoto2-sections.txt: added misc. functions and constants * doc/api/*: reflect changed gphoto2-sections.txt 2001-12-07 Lutz Müller * configure.in: * acconfig.h: ENABLE_DEBUGGING -> DISABLE_DEBUGGING. If you don't, you don't get any logging in gtkam. 2001-12-07 Hans Ulrich Niedermann * configure.in: it is time for 2.0beta4dev4 * gphoto2-config.in: made it work again 2001-12-07 Lutz Müller * configure.in: Even more cleanup. 2001-12-07 Lutz Müller * configure.in: Remove dotlib hack * camlibs: Do it "the right way" 2001-12-07 Lutz Müller * configure.in: Remove some cruft that survived my auto[make,conf] cleanup * libgphoto2/Makefile.am: LIBADD libgphoto2_port.la 2001-12-06 Lutz Müller * configure.in: Use () instead of {}. That produces a warning in configure, but at least works when linking. 2001-12-05 Dan Fandrich * configure.in * libgphoto2_port/m4/stdint.m4 * camlibs/dimera/dimera3500.c * camlibs/dimera/mesalib.h * camlibs/panasonic/dc.c * camlibs/panasonic/dc.h * camlibs/panasonic/dc1000.c * camlibs/panasonic/dc1580.c * camlibs/panasonic/l859/l859.c * camlibs/panasonic/l859/l859.h: add AC_NEED_STDINT_H to configure.in and change camera libraries to use C99-style size-specific integer types 2001-12-05 Lutz Müller $builddir != $srcdir fixes. 2001-12-04 Lutz Müller * libgphoto2: Support for GP_FILE_TYPE_EXIF. Not that there is not support for it in the frontends (yet). 2001-12-04 Lutz Müller * libgphoto2/gphoto2-camera.c: Don't exit the camera if it is currently in use. 2001-12-02 Dan Fandrich * libgphoto2_port/acconfig.h * libgphoto2_port/configure.in * libgphoto2_port/libgphoto2_port/gphoto2-port-log.c * libgphoto2_port/libgphoto2_port/gphoto2-port-log.h * frontends/command-line/main.c * frontends/command-line/main.h * acconfig.h * configure.in: Added --disable-debugging option to configure 2001-12-01 Marcus Meissner * camlibs/stv0680: Partial rewrite. Got vendor information on USB communications, moved corrected definitions and return data structs into header file. Merged serial and USB communications to use the same functions. Rewrote almost all functions, fixed lots of bugs and added some missing features. Added 'delete all', 'capture image' and 'summary' functionality. *** Tested with USB only. Serial testers wanted. *** 2001-12-02 Colin Marquardt * po/de.po: Update. 2001-12-01 Hans Ulrich Niedermann * configure.in: it is time for 2.0beta4dev3 * configure.in: renamed PGK_* to GPKG_* * doc/figures/Makefile.am: build jpg and png figures iff ENABLE_FIGURES is set 2001-11-30 Lutz Müller * libgphoto2: * doc/api: Move documentation out of the header files into the templates 2001-11-29 Hans Ulrich Niedermann * README: Added paragraph about reporting bugs (using LANG=C) 2001-11-10 Dan Fandrich * configure.in * frontends/command-line/Makefile.am * libgphoto2/Makefile.am * libgphoto2_port/configure.in * libgphoto2_port/libgphoto2_port/Makefile.am: libtool won't generate shared dlopenable libraries when given -lintl and libintl is a static library. Now, only use -lintl when linking other targets. 2001-11-29 Hans Ulrich Niedermann * Makefile.am: enable RPM and CVS rules only when useful * configure.in: init RPM packaging * libgphoto2_port/m4/packaging.m4: added packaging macro 2001-11-27 Lutz Müller * libgphoto2/gphoto2-camera.c: Update documentation. 2001-11-27 Lutz Müller * libgphoto2/gphoto2-file.h: Fix formatting of comments: Should always be /** (nothing here - new line!) * GP_WHATEVER: (colon!) (...) 2001-11-27 Hans Ulrich Niedermann * HACKING: we prefer patches against CVS and camlibs should use their own ChangeLog files * doc/figures/*.fig: My, we are k3wl. We have CVS $Id$s in PIX! * doc/figures/gphotofs.fig: added sketch of gphotofs idea flash * libgphoto2/gphoto2-file.h: added note about CRW (Canon RaW) 2001-11-27 Hans Ulrich Niedermann * camlibs/canon/canon.c: removed G2 from serial detection list * camlibs/canon/canon.c: split canon_int_ready into usb and serial part * camlibs/canon/library.c: cleaned up the "switch off" stuff * camlibs/konica/lowlevel.c: set_timeout, not timeout_set 2001-11-27 Lutz Müller * libgphoto2/gphoto2-filesys.h: On Mariusz request, add a GP_FILE_INFO_TIME 2001-11-27 Lutz Müller * libgphoto2/gphoto2-filesys.c: Recover from errors during file-deletion. * camlibs/sierra/sierra.c: Report an error if, after delete_all, there are still pictures on the camera. That makes libgphoto2 able to fix that. * camlibs/konica/library.c: Here, too. 2001-11-26 Lutz Müller * camlibs/directory/directory.c (set_info_func): Rewrite * camlibs/ptp/library.c: * camlibs/fuji/fuji.c: Don't advertise what you don't support. * camlibs/konica/library.c (set_info_func): Rewrite * libgphoto2: Make *set_info consistent 2001-11-25 Hans Ulrich Niedermann * camlibs/canon/canon.h: define GP_MODULE for abbref gp_log* stuff * camlibs/canon/library.c: use proper MIME heuristics and types * camlibs/canon/usb.c: switched some log messages to GP_DEBUG() * libgphoto2/gphoto2-file.h: added MIME types for CRW and UNKNOWN * libgphoto2_port/configure.in: libintl fix * doc/figures/*: added figures about software architecture 2001-11-25 Lutz Müller * libgphoto2/gphoto2-filesys.h: Support "downloaded"-flag through CameraFileStatus. 2001-11-25 Hans Ulrich Niedermann * configure.in: 2.0beta4dev2 * camlibs/canon/canon.c: added support for PowerShot S30 * camlibs/canon/canon.h: added support for PowerShot S30 * camlibs/canon/library.c: added support for PowerShot S30 * camlibs/canon/usb.c: added support for PowerShot S30 * intl/Makefile.in: add include dir for config.h * libgphoto2_port/intl/Makefile.in: add include dir for config.h * doc/api/.cvsignore * libgphoto2_port/doc/.cvsignore: ignore -symbols.txt * camlibs/canon/serial.h * camlibs/canon/canon.c * camlibs/canon/usb.h: small cleanups 2001-11-25 Hans Ulrich Niedermann * camlibs/canon/{canon,library}.[ch]: renamed files according to rules * camlibs/canon/doc/: added developers' docs * po/POTFILES.in: reflect changes in canon file set 2001-11-24 Hans Ulrich Niedermann * configure.in: hopefully really correct checks for libdl and libintl 2001-11-24 Lutz Müller * configure.in: Check for mcheck.h * tests: #ifdef HAVE_MCHECK_H 2001-11-23 Marcus Meissner * camlibs/stv0680/library.c: Major rework of the Capture Preview mode. It now supports all common formats of the camera and should not stop after some captures. Removed some of the double error conversions. * camlibs/stv0680/stv680.html: Some documentation fixes regarding Capture Image. 2001-11-23 Lutz Müller * libgphoto2/gphoto2-camera.c: Don't free a camera if it is currently in use. This fixes reentrancy crashes in gtkam on shutdown during an operation. 2001-11-23 Colin Marquardt * frontends/command-line/options.c (usage): Make the help table format string translatable. Make table lines 79 chars wide. * po/de.po (Message): All command line help table entries are now translated. 2001-11-22 Marcus Meissner * camlibs/stv0680/library.c: file_count can also use a different USB control message (0x8d), and it gets 2 bytes for the number of images. 2001-11-22 Colin Marquardt * libgphoto2_port/libgphoto2_port/gphoto2-port.c (gp_port_write): Patch from Bill Marr : Fix bug whereby hexadecimal output is erroneously shown in decimal format. 2001-11-22 Lutz Müller * configure.in: * acconfig.h: No need for --with-multi any more * libgphoto2/gphoto2-camera.c: Add some comments about the problems with HAVE_MULTI. 2001-11-22 Lutz Müller * libgphoto2/gphoto2-camera.[c,h]: Expose gp_camera_exit to the world. 2001-11-22 Lutz Müller * frontends/command-line/main.c: Mark more strings for translation 2001-11-22 Colin Marquardt * frontends/command-line/options.c: Make help descriptions translatable. 2001-11-21 Colin Marquardt * frontends/command-line/main.c: Mark up more strings for translation. * camlibs/sierra/sierra.c: Spelling fixes. 2001-11-21 Marcus Meissner * camlibs/stv0680/stv0680.html: Collected programming information into nice HTML table. 2001-11-21 Colin Marquardt * po/POTFILES.in: Removed ../camlibs/canon/psa50.c 2001-11-21 Lutz Müller I quote from an e-mail: "You (Lutz) should remove the code you added that broke (at least) two of the supported 'libgphoto2' camera libraries!!!" *sigh*. * conigure.in: Add a --with-multi option and a warning that people who use it will run into troubles with digita and dc240 and that people who don't use it will run into troubles when using Nautilus or Konqueror for browsing their camera. 2001-11-21 Lutz Müller * libgphoto2/gphoto2-camera.[c,h]: Add a pre_func and a post_func that gets called before and after each access to the camera driver. * camlibs/konica/library.c: Use above functions. 2001-11-20 Gilles Grandou * camlibs/sierra.[c,h]: - intoduced camera classes, in order to customise behaviour for various specific cameras. - camera_init(): initialize model class in private library area, initialize set_config and get_config function pointers. - camera_get/set_config(): changed to address specific camera classes. Currents one has been renamed for olympus cams, a new one targeted to Epson cameras has been introduced. The default set is pointing to Olympus for compatibility with current code, but this should change in the future. - camera_summary(): detect missing memory card. tested on Epson 3000z. added some info in summary. - camera_manual(): added custom message for Epson cameras. Current is targeted to Olympus ones. Default still display Olympus message for compatibility. 2001-11-20 Hans Ulrich Niedermann * HACKING: covertly introducing important policy changes :-) 2001-11-20 Lutz Müller * configure.in: Put gettext hack in again. Someone complained... 2001-11-19 Mariusz Woloszyn * camlibs/ptp: added camera filenames support, * fixed some minor and major bugs in handling unaligned structures 2001-11-19 Mariusz Woloszyn * camlibs/ptp: basic (and hacked) ptp camera functionality: only JPG image and thumbnails downloading supported 2001-11-19 Lutz Müller * configure.in: Remove gettext hack. Let's see if someone complains... 2001-11-18 Hans Ulrich Niedermann * INSTALL: added note about RPM temporarily not working * doc/api/Makefile.am * libgphoto2_port/doc/Makefile.am: sourced out doc generation to DocRules.am * libgphoto2_port/doc/DocRules.am: new file * configure.in * libgphoto2_port/configure.in * libgphoto2_port/m4/documentation.m4: disable building docs by default * libgphoto2_port/autogen.sh: added debug output * autogen.sh: added debug output & cleaned up a bit * configure.in: upped version to dev1 to map build errors to the changes I just introduced 2001-11-18 Lutz Müller Patch from Ole Aamot : * tests: Use mcheck.h (useful when searching for mem-leaks). 2001-11-18 Lutz Müller Patch from Bill Marr : * camlibs/digita/commands.c: Fix bug causing 8 bad trailing pixels in Digita thumbnail image download. 2001-11-17 Lutz Müller * frontends/command-line/options.c: Mark some more strings for translation. 2001-11-17 Hans Ulrich Niedermann * configure.in: changed package name from gphoto to gphoto2 * configure.in: changed version from 2.0beta4 to 2.0beta4dev0 to distinguish bug reports from various stages of beta4 development * camlibs/sonydscf1/README: added remark about general state of driver * libgphoto2_port/intl/Makefile.in * intl/Makefile.in: fixed incorrect location of config.h 2001-11-17 Lutz Müller * frontends/command-line: Fix translation. You use N_(...) to _mark_ a string for translation. In order to convert it, you need to call _(...). That is, call gp_camera_get_error in order to get a string and after that, convert this string using _(...) before displaying it. 2001-11-17 Lutz Müller * camlibs/ptp/ptp.[c,h]: Hide some internals * frontends/command-line/main.c: Fix translation by calling setlocale (LC_ALL, "") (?). 2001-11-17 Colin Marquardt * libgphoto2_port/configure.in (BUILD_INCLUDED_LIBINTL): Added 'de' to ALL_LINGUAS. * libgphoto2_port/po/de.po: Added translation. 2001-11-16 Hans Ulrich Niedermann After Scott just released beta3, I tried to tag the correct file revisions as gphoto-2_0beta3. * configure.in: changed version number to 2.0beta4dev0 so we can distinguish logs with the finer grain revisions. Just increase the last number every time you made some changes that could break or fix something of interest. 2001-11-15 Lutz Müller * camlibs/ptp: Remove a whole lot of warnings, remove unnecessary PTPResult (we've got PTP_RC_*), flesh out library.c a bit - still not functional, though. 2001-11-15 Lutz Müller Patch from Greg Ingram , slightly reworked: * camlibs/polaroid/pdc700.c: Make the assumption that we need to deal with multiple packets only on PDC700_PIC and PDC700_THUMB. 2001-11-15 Lutz Müller * MAINTAINERS: Move camlibs/ptp up to regain alphabetical order. 2001-11-15 Mariusz Woloszyn * camlibs/ptp/: Started PTP support library developement 2001-11-15 Colin Marquardt * po/de.po: Update. 2001-11-15 Lutz Müller * camlibs/ptp: Basic structure for a new driver. 2001-11-14 Lutz Müller * camlibs/polaroid/pdc700.c: Introduce enum PDCConf for better readability (instead of #define). (camera_set): Renamed into (pdc700_config) for consistency reasons. (camera_get_config): Implement date and time here. (camera_summary): I don't quite get it - this should read 2000 here instead of 0 for V3.10? If not, please revert this and correct both the remark in PDCDate and the code in camera_get_config. 2001-11-14 Greg Ingram * camlibs/polaroid/pdc700.c: - boosted the preferred baudrate to 115200 - discovered the self-timer state datum - discovered how to set the camera's configuration, added camera_get_config() and camera_set_config() routines and flagged the config operation - added some delaying tactics in pdc700_capture() - added usb vendor/product ids (no, usb doesn't work yet) 2001-11-14 Lutz Müller * cammlibs/agfa/agfa.c: Initialize a.speed[0] to 0 instead of leaving it uninitialized. 2001-11-13 Hubert Figuiere * camlibs/kodak/dc240/library.c: Handle GP_ERROR_IO_TIMEOUT errors. Better handling of checksums. (patch by Peter Fales ) * camlibs/kodak/dc240/dc240.c (camera_init): camera reset sends garbage within the 1500ms timeout. Handle that properly with 2 read. (patch by Peter Fales ) 2001-11-13 Lutz Müller * libgphoto2/gphoto2-filesys.c: Adjust filename only for thumbnails, audio files, etc, not for normal pictures. 2001-11-12 Lutz Müller * configure.in: * libgphoto2/libgphoto-2.0.pc.in: Renamed to ... * libgphoto2/libgphoto2.pc.in: ... this. It seems that people really want our project to be called libgphoto2 and not libgphoto... Therefore, be consistent here, too. 2001-11-11 Lutz Müller * frontends/command-line/main.c: Add a switch for GP_FILE_TYPE_AUDIO. 2001-11-10 Dan Fandrich * libgphoto2/jpeg.[ch]: moved array definitions from .h to .c * libgphoto2_port/serial/unix.c: changed serial port prefix for Darwin 2001-11-10 Hans Ulrich Niedermann * libghoto2_port/doc/Makefile.am * doc/api/Makefile.am: fixed condition rules (added else targets) 2001-11-10 Fredrik * camlibs/canon/canon.c: Clear all of camera->pl right after malloc(). psa50_eot needed explicit clearing. This was causing problems with serial communication. * camlibs/canon/psa50.c: Don't free psa50_serial_dialogue()'s receive buffer in psa50_get_disk(). This caused us to dump core when accessing serial canon cameras. 2001-11-10 Lutz Müller * camlibs/polaroid/pdc700.c: PPM-thumbnails are 9600 bytes, not 4800. Sorry, guys. Should work again. 2001-11-10 Greg Ingram * camlibs/polaroid/pdc700.c: Report memory size, power source, mode, and auto-power-off time in the camera_summary. 2001-11-09 Lutz Müller Patch from Greg Ingram , unfortunatelly without ChangeLog entry... * camlibs/polaroid/pdc700.c: Report lcd state and caption (?) in the camera_summary. 2001-11-09 Lutz Müller * camlibs/sierra: Clean up header files (hide internals, make functions static) 2001-11-08 Lutz Müller * camlibs/sierra: Improve error reporting. Use register 47 for pic-info retrieval. Support GP_FILE_TYPE_AUDIO. 2001-11-08 Chris Pinkham * camlibs/jamcam/README camlibs/jamcam/jamcam.c camlibs/jamcam/library.h camlibs/jamcam/library.c: made downloading images more robust and added better error recovery. Added support for downloading images from MMC card. Changed summary info to show support for v2 cameras. Fixed gp_camera_progress percentage argument to be >0 and <1. 2001-11-08 Lutz Müller * libgphoto2/gphoto2-filesys.h: Expand CameraFileInfo to include information about audio data, too. 2001-11-08 Lutz Müller Patches from Greg Ingram : * camlibs/polaroid/pdc700.c: Lots of new stuff 2001-11-06 Lutz Müller * gphoto2-file.c: Added GP_FILE_TYPE_AUDIO for cameras that can attach audio data to a picture. 2001-11-06 Lutz Müller Patch by Peter Jay Salzmann (slightly adapted): * camlibs/polaroid/pdc700.c: Tell the user about the current image quality setting. 2001-11-06 Lutz Müller * libgphoto2/gphoto2-filesys.c: Don't trust the camera libraries, set name, type, and adjust name for mime type after getting a file. 2001-11-06 Lutz Müller Chris Pinkham decoded the thumbnails: * camlibs/polaroid/pdc700.c: Convert the thumbnails from YUV 2:1:1 to PPM. 2001-11-06 Lutz Müller * camlibs/polaroid/pdc700.c: Fix memmove (third parameter is # of bytes to be moved). Display version information in camera_summary. 2001-11-05 Colin Marquardt * po/de.po: Update. Convert quote signs to the ones recommended by the folks at de@li.org. 2001-11-05 Chris Pinkham * camlibs/jamcam/jamcam.c camlibs/jamcam/library.c: added initial support for MMC card on Jamcam v3 cameras. added more error checking. changed camera model string to "KBGear JamCam" instead of "KBGear JamCam v3.0" since driver supports both v2 and v3 cameras now. 2001-11-05 Marcus Meissner * camlibs/jd11: Implemented progress reporting. 2001-11-05 Lutz Müller * camlibs/polaroid/pdc700.c: Checksum is only 1 byte long. 2001-11-05 Chris Pinkham * camlibs/panasonic/coolshot/coolshot.c camlibs/panasonic/coolshot/library.c camlibs/jamcam/jamcam.c camlibs/jamcam/library.c: added support for gp_camera_progress(). Fixed bug in jamcam driver jamcam_file_count() routine. 2001-11-05 Lutz Müller * camlibs/polaroid/pdc700.c: Timeout = 2sec, try each speed 2 times. 2001-11-05 Lutz Müller * camlibs/sierra/PROTOCOL: Updated (upload). 2001-11-04 Lutz Müller * camlibs/polaroid/pdc700.c: While searching the archives, I found some dumps and saw that there is something wrong with the logic in pcd700_read. Why didn't anyone fix? 2001-11-04 Stephane Castejon * liggphoto2/gphoto2-result.c,h : remove GP_ERROR_LOW_BATTERY * camlibs/sierra/library.c : add an error message regarding the low battery level. 2001-11-04 Hans Ulrich Niedermann * frontends/command-line/interface.c: clarified comment * frontends/command-line/main.c: added note for user that the error msg from _set_error may be unrelated to real error * libgphoto2/gphoto2-filesys.c: improved comment for gp_filesystem_set_file_funcs() * libgphoto2_port/doc/Makefile.am: added dependencies like in doc/api/Makefile.am - rebuilds docs now * libgphoto2_port/doc/gphoto2-port-sections.txt * libgphoto2_port/libgphoto2_port/gphoto2-port-log.c * libgphoto2_port/libgphoto2_port/gphoto2-port-log.h: reintroduced GPLogLevel for log levels instead of int. maintains source compatibility. * libgphoto2_port/usb/libusb.c: fixed classification of success msg; clarified one error message * camlibs/sonydscf55/sony.c: prepare for building docs * camlibs/canon/canon.c: - models[] now ends with { NULL, 0, 0, 0 } instead of { 0, 0, 0 } - is_image now is true for both .JPG and .CRW images - changed several calls to gp_debug* to GP_DEBUG - added lots of comments and made existing ones gtkdoc-able - added debug code to _get_file_path * camlibs/canon/canon.h: #define GP_MODULE "canon" * camlibs/canon/psa50.c: - added, improved and gtkdoc-abled comments for functions that are likely to survive restructuring - changed several calls to gp_debug* to GP_DEBUG 2001-11-03 Stephane Castejon * camlibs/sierra/sierra.c,h * camlibs/sierra/library.c,h Add support for the upload feature. Replace gp_port_settings_[get/set] by gp_port_[get/set]_settings * liggphoto2/gphoto2-result.c,h : add GP_ERROR_LOW_BATTERY 2001-11-03 Marcus Meissner * camlibs/template/template.c: Make it compile with current libraries. Added NLS macros, missing functions, etc. 2001-11-03 Marcus Meissner * camlibs/agfa/agfa.c * camlibs/barbie/barbie.c * camlibs/canon/psa50.c * camlibs/digita/digita.c * camlibs/dimera/dimera3500.c * camlibs/jamcam/jamcam.c * camlibs/jd11/jd11.c * camlibs/panasonic/dc1000.c * camlibs/panasonic/dc1580.c: If we check for 'ENABLE_NLS', we need to include . Fix 'redefinition of _' compile warnings due to broken copy & pasted macro. 2001-11-01 Marcus Meissner * camlibs/jd11: - added Bayer interpolation, kept old mode as 'raw'. - added configuration widgets and calls for Bulb Exposure Time and Color Weighting - fixed number of images for 0 images (was returning 1) - cleaned up several functions in regard to GP_ return values. - added resend commands to the packet reader. - Added the I/O Magic MagicImage 420 as compatible camera. * camlibs/jd11/jd11.html: Added more information gained from the Twain drivers. 2001-11-01 Marcus Meissner * frontends/command-line/main.c: x was not set to 0 before listing serial speeds leading to corrupt output. 2001-11-01 Lutz Müller * libgphoto2/gphoto2-filesys.c: Fix bug (folder deletion) 2001-11-01 Lutz Müller Patch from Chris : * frontends/command-line/main.c: Don't gp_file_free twice 2001-10-28 Hans Ulrich Niedermann * packaging/rpm/package.spec.in: cleaned up file lists, moved .a and .la to -devel 2001-10-31 Dan Fandrich * camlibs/agfa/Makefile.am * camlibs/barbie/Makefile.am * camlibs/canon/Makefile.am * camlibs/casio/Makefile.am * camlibs/digita/Makefile.am * camlibs/dimera/Makefile.am * camlibs/directory/Makefile.am * camlibs/fuji/Makefile.am * camlibs/jamcam/Makefile.am * camlibs/jd11/Makefile.am * camlibs/jd350e/Makefile.am * camlibs/kodak/dc120/Makefile.am * camlibs/kodak/dc210/Makefile.am * camlibs/kodak/dc240/Makefile.am * camlibs/kodak/dc3200/Makefile.am * camlibs/konica/Makefile.am * camlibs/minolta/dimagev/Makefile.am * camlibs/panasonic/Makefile.am * camlibs/panasonic/coolshot/Makefile.am * camlibs/panasonic/l859/Makefile.am * camlibs/polaroid/Makefile.am * camlibs/samsung/Makefile.am * camlibs/sierra/Makefile.am * camlibs/sonydscf1/Makefile.am * camlibs/sonydscf55/Makefile.am * camlibs/stv0680/Makefile.am * camlibs/template/Makefile.am * libgphoto2_port/serial/Makefile.am * libgphoto2_port/usb/Makefile.am: added -module flag to libtool link command for each library that is dlopen'ed 2001-10-31 Lutz Müller * libgphoto2/bayer.c: Remove unused variable * libgphoto2/gphoto2-camera.c: Use the library handle in order to check if the camera has been initialized. Make it possible to call gp_camera_set_[port_info,abilities] on an already initialized camera. 2001-10-31 Dan Fandrich * camlibs/dimera/*.c: use renamed get/set functions, gp_camera_set_error 2001-10-30 Hubert Figuiere * README: added a few USB Mass storage cameras. 2001-10-30 Lutz Müller * camlibs/polaroid/pdc640.c: If you malloc memory for camera->pl, free it in camera_exit. 2001-10-30 Lutz Müller * frontends/command-line/gphoto2-cmd-config.c: Implement GP_WIDGET_TEXT and GP_WIDGET_TOGGLE * camlibs/directory/directory.c: Expand configuration dialog for testing purposes. Additions #ifdef'd out. 2001-10-30 Fredrik * frontends/command-line/interface.c: Since status messages are now written to stderr, flush stderr instead of stdout. 2001-10-30 Lutz Müller * frontends/command-line/main.c: Be more elaborate about wrong ports. Fixes #475320 2001-10-30 Lutz Müller * frontends/command-line/main.[c,h]: Fix --capture-image 2001-10-29 Lutz Müller * frontends/command-line/interface.c: Suppress empty status messages. Those indicate that we should _clear_ the status and not print _anything_. * frontends/command-line/main.c: No need for gp_camera_init anymore * libgphoto2/gphoto2-camera.c: Make sure the camera is initialized. 2001-10-29 Lutz Müller * libgphoto2/gphoto2-abilities-list.c: Additional debug message. Spews a lot of output, but people get segfaults when loading camera libraries and we need to know on which library. 2001-10-29 Marcus Meissner * camlibs/jd11/jd11.c: Added Quark Probe 99, Argus DC-100 and DC-2000 as compatible models. Reported by Russ Burdick. 2001-10-28 Hans Ulrich Niedermann * TESTERS: added list of volunteer testers to the source distribution * frontends/command-line/interface.c: moved status msgs to stderr * libgphoto2/gphoto2-abilities-list.c: don't scan USB for ID 0, better (?) error handling and reporting * libgphoto2_port/libgphoto2_port/gphoto2-port.c: removed report about param that is only passed on * libgphoto2_port/usb/libusb.c: improved error reporting * packaging/usbcam.console: improved chown/chmod handling (race condition removed) * packaging/rpm/package.spec.in: begun support for automatic file lists 2001-10-27 Marcus Meissner * camlibs/jd11: New Jenoptik JD11 driver for gphoto2. * configure.in: added jd11 subdirs * MAINTAINERS: added myself 2001-10-27 Lutz Müller * camlibs/canon/canon.c: rmdir/mkdir support * camlibs/canon/psa50.c (psa50_directory_operations): Consistently return a gphoto2 error code. * camlibs/directory: Add rmdir/mkdir support * libgphoto2/gphoto2-camera.[c,h] * libgphoto2/gphoto2-filesys.[c,h]: Add rmdir/mkdir support 2001-10-26 Hans Ulrich Niedermann * Makefile.am: moved spec file to packaging/rpm/ * Makefile.am: added CDPATH warning, rpm target and cvs-tags target * gphoto.spec.in: moved spec file to packaging/rpm/package.spec.in * configure.in: added packaging/rpm/Makefile.am * configure.in: moved spec file to packaging/rpm/ * packaging/Makefile.am: added rpm/, removed README.rpm * packaging/rpm/: new directory with Makefile.am and .cvsignore * packaging/Makefile.am: use @PACKAGE@-@VERSION@.spec for the SRPM file * packaging/README.rpm: removed obsolete how-to-build-a-RPM docs * packaging/rpm/README.rpm: added new this-is-how-our-RPM-works-internally docs * libgphoto2_port/po/POTFILES.in: gphoto2-port.c, not gp_port.c 2001-10-26 Lutz Müller * camlibs/canon/serial.c: gp_port_pin_get -> gp_port_get_pin 2001-10-26 Hans Ulrich Niedermann * libgphoto2/gphoto2-debug.h: reformatted a little bit (more comments) * packaging/Makefile.am: fixed typo resulting in wrong dir creation * camlibs/fuji/.cvsignore: added (copied .cvsignore from camlib/canon) * doc/api/.cvsignore: added scan * intl/.cvsignore: added po2tbl.sed * libgphoto2_port/intl/.cvsignore: added po2tbl.sed * libgphoto2_port/doc/.cvsignore: added scan and tmpl * camlibs/canon/util.c: added explanatory comment * camlibs/samsung/samsung.c: added #include * camlibs/canon/psa50.c: added function prototypes * libgphoto2/exif.c: added function prototypes * tests/test-gphoto2.c_ replaced exit() by return() in main() 2001-10-26 Fredrik * camlibs/canon/.indent.pro: Added -T GPPort and some other types * camlibs/canon/psa50.c: * camlibs/canon/psa50.h: * camlibs/canon/canon.c: * camlibs/canon/serial.c: * camlibs/canon/util.c: Moved all global variables into camera->pl. Re-indented. Fixed small memory leak in update_disk_cache(). Renamed psa50_dir to canon_dir since a comment said to do so when merging with more camera models (something that was done a long time ago). Added some comments. Added/improved debugging output. Cleaned out some superfluous debugging I forgot in my last big patch. 2001-10-26 Lutz Müller * include: Move everything from here ... * libgphoto2: ... to here. 2001-10-26 Lutz Müller * libgphoto2: Adapt to changes in libgphoto2_port 2001-10-26 Lutz Müller * frontends/command-line/gphoto2-cmd-capture.c: Adjust brighness and contrast with arrow keys 2001-10-26 Dan Fandrich * libgphoto2_port/include/gphoto2-portability.h: * libgphoto2_port/include/gphoto2-port-parallel.h: * libgphoto2_port/include/gphoto2-port-serial.h: * libgphoto2_port/serial/unix.c: * libgphoto2/jpeg.c: Preliminary support for OS X/Darwin 2001-10-26 Lutz Müller * configure.in: Check for jpeglib and aalib. * frontends/command-line/main.c * frontends/command-line/Makefile.am * frontends/command-line/gphoto2-cmd-capture.[c,h]: New. Display the preview prior saving it. 2001-10-24 Hans Ulrich Niedermann * gphoto.spec.in: hotplug dependency is a prereq not a requires (patch by Tim Waugh ) 2001-10-25 Lutz Müller * camlibs/canon/serial.[c,h]: No need to set the port path anywhere. This is fully handled by gphoto2. That is: gp_settings_get, adjust what needs to be adjusted, and then gp_settings_set. * camlibs/canon/canon.c: Adjust parameters to canon_serial_init * camlibs/digita/serial.c: there is no dev->device_fd any more 2001-10-25 Lutz Müller * frontends/command-line/main.c: Remember --camera and --port 2001-10-25 Lutz Müller * frontends/command-line/main.c: Adapt to changes in gphoto2-port * libgphoto2: Here, too. 2001-10-24 Lutz Müller * configure.in * acconfig.h: Check for CDK * frontends/command-line/Makefile.am * frontends/command-line/gphoto2-cmd-config.[c,h]: New * frontends/command-line/main.c: Hook up --config 2001-10-25 Colin Marquardt * (Repository): s/retreiv/retriev/g 2001-10-24 Hans Ulrich Niedermann * camlibs/jamcam/library.h: removed completely unnecessary compiler warning * camlibs/sonydscf1/command.c: added #include and hopefully fixed calls to strndup * frontends/command-line/main.c: added debug output of guessed port, moved debugging interface to final log level handling, output logging information on stderr instead of stdout * libgphoto2/exif.[ch]: moved definition of tagnames[]= from exif.h to exif.c, left an extern decl * libgphoto2/gphoto2-debug.c: simplified gp_debug_printf by using gp_logv instead of gp_log * libgphoto2_port/libgphoto2_port/gphoto2-port-log.c: moved to final log level mechanism, undefine HEXDUMP_ constants after use * libgphoto2_port/libgphoto2_port/gphoto2-port-log.h: moved to final log level mechanism using lots of comments 2001-10-24 Colin Marquardt * po/de.po: Update. 2001-10-24 Hans Ulrich Niedermann * doc/gphoto.txt: adapted to new hotplug scripts * packaging/Makefile.am: add hotplug scripts to docs when installing * packaging/Makefile.am: add README.rpm * packaging/README.rpm: added RPM build instructions 2001-10-23 Lutz Müller Bug reported by David Robert : * frontends/command-line/shell.c: Fix bug (leading blanks with filenames) 2001-10-23 Lutz Müller * libgphoto2/gphoto2-core.[c,h]: Removed. All functions redirected to gphoto2-abilities-list. Caching of this list should be done in the frontend. * frontends/command-line/main.c: Don't use gp_autodetect. * libgphoto2/setting.c: Move some initialization stuff from gphoto2-core to here. 2001-10-23 Lutz Müller * camlibs: Remove every reference to gp_camera_result_as_string including camera->functions->result_as_string. It was mostly unused anyways. * frontends/command-line/main.c: No history any more * libgphoto2/gphoto2-camera.[c,h] (gp_camera_[get,set]_error): New 2001-10-23 Hans Ulrich Niedermann * camlibs/canon/util.c: made canon debug use gp_log. this makes canon drv to compile again 2001-10-23 Lutz Müller Patch from Fredrik : * libgphoto2/gphoto2-debug.c: Bug fix 2001-10-23 Lutz Müller Patch from Carsten Weinholz , slightly modified (removed unnecessary //-comments, indentation): * camlibs/stv0680: Added support for "Aiptek PenCam Trio" 2001-10-22 Hans Ulrich Niedermann * packages/usbcam.group: added. linux-hotplug script * packages/usbcam.console: added. linux-hotplug script * packages/Makefile.am: added. * packages/.cvsignore: added. * gphoto.spec.in: simplified a bit (only gphoto and gphoto-devel, no lib* packages any more). added hotplug support. * configure.in: added packaging/ * Makefile.am: added packaging/, added .tar.bz2 dist support 2001-10-22 Lutz Müller * frontends/command-line/main.c: Don't use gphoto2-core.h - use gphoto2-abilities-list.h. 2001-10-22 Lutz Müller * frontends/command-line/main.c: Adjust to changes in gphoto2-port-log.h. 2001-10-22 Lutz Müller * camlibs/canon: Use camera->pl instead of camera->camlib_data. Add warning about use of global variables. * libgphoto2/gphoto2-camera.h: Remove camera->camlib_data. 2001-10-22 Lutz Müller * camlibs/canon/canon.c: Use the CameraFilesystem. Declare some functions static. * libgphoto2/gphoto2-camera.[c,h]: We now use the CameraFilesystem exclusively - major cleanup. 2001-10-22 Lutz Müller * libgphoto2/gphoto2-camera.c: Autodetect also in case of camera->port != NULL. * frontends/command-line/main.c: Only call gp_camera_set_abilities if a model has been specified. Same with gp_camera_set_port_path. 2001-10-22 Fredrik * camlibs/canon/psa50.c: Added all USB commands to a nice structure so that you call psa50_usb_dialogue() with a function identifier and don't have to keep track of cmd1,cmd2,cmd3 and length of camera reply. * camlibs/canon/psa50.c: Separated the "returns L (long) data" commands from psa50_usb_dialogue() and made a new psa50_usb_long_dialogue() that handles these correctly. This should fix a number of problems with those kinds of transfers (I previously fixed this for get_file, now it is fixed for all functions using this). Large directorys filling more than one USB bulk packet probably never worked before, but should work now. * camlibs/canon/canon.c: * camlibs/canon/psa50.c: * camlibs/canon/serial.c: * camlibs/canon/usb.c: Improved function error reporting for fetching of thumbnails and pictures and at the same time fixed a one-byte-per-pic-downloaded memory leak ;) Added lots of error checking and better debug result reporting to various functions. Changed hard-coded attribute values to easier-to-understand-and-maintain defines. Changed a bunch of fprintf() and perror() to gp_debug_printf(). 2001-10-21 Lutz Müller * doc/api: Some additions * libgphoto2/Makefile.am * libgphoto2/gphoto2-library.c: Dummy file, needed by gtk-doc * libgphoto2/gphoto2-camera.[c,h]: Updated documentation 2001-10-21 Hans Ulrich Niedermann * libgphoto2_port/libgphoto2_port/gp_port.c: log USB IDs in hex instead of decimal 2001-10-20 Lutz Müller * camlibs/kodak/dc120: Prepare for camera->camlib_data removal. Fix compile warnings 2001-10-20 Lutz Müller * camlibs/kodak/dc3200: Prepare for camera->camlib_data removal. 2001-10-20 Lutz Müller * camlibs/panasonic: Prepare for camera->camlib_data removal. Fix lots of compile warnings. Remove gp_port_[close,free,new] (sic). 2001-10-20 Lutz Müller * camlibs/agfa/commands.h: Unused -> removed. * camlibs/agfa/Makefile.am: Reflect above. * camlibs/agfa/agfa.[c,h]: Use camera->pl instead of camera->camlib_data. Fix small memory leak in camera_init (in case of error). 2001-10-20 Lutz Müller * camlibs/minolta/dimagev/dimagev.[c,h]: Prepare for removal of camera->camlib_data. Fix memory leaks (in case of errors). 2001-10-20 Lutz Müller * camlibs/digita: * camlibs/dimera: Prepare for elimination of camera->camlib_data. * camlibs/konica: Some additional debugging messages 2001-10-20 Lutz Müller * libgphoto2/gphoto2-camera.[c,h] (gp_camera_get_port_speed): New 2001-10-20 Lutz Müller * camlibs/kodak/dc240/library.c: Don't access a CameraFile directly. This lets us ... * libgphoto2/gphoto2-file.[c,h]: ... make internals of CameraFile private. Header file moved from include over to here in order to prepare for documentation 2001-10-20 Lutz Müller * camlibs: Instead of camera->port_info->speed, use settings.serial.speed. That lets us ... * libgphoto2/gphoto2-camera.[c,h]: ... remove camera->port_info 2001-10-20 Hans Ulrich Niedermann * gphoto.spec.in: made RPM spec file work for 1st time 2001-10-20 Hans Ulrich Niedermann * configure.in * include/.cvsignore * libgphoto2_port/configure.in * libgphoto2_port/include/.cvsignore: moved config.h and stamp-h to include/ 2001-10-20 Hans Ulrich Niedermann * libgphoto2_port/stamp-h.in: removed as file is generated automatically anyway * libgphoto2_port/doc/Makefile.am * doc/api/Makefile.am: added DESTDIR to installation of html files * gphoto.spec.in: use DESTDIR for installation * .cvsignore: ignore *.tar.{bz2,gz} * HACKING: added licensing paragraph (LGPL vs. GPL) 2001-10-20 Hans Ulrich Niedermann * Makefile.am * camlibs/agfa/Makefile.am * camlibs/barbie/Makefile.am * camlibs/canon/Makefile.am * camlibs/digita/Makefile.am * camlibs/dimera/Makefile.am * camlibs/directory/Makefile.am * camlibs/jd350e/Makefile.am * camlibs/kodak/Makefile.am * camlibs/kodak/dc120/Makefile.am * camlibs/kodak/dc240/Makefile.am * camlibs/kodak/dc3200/Makefile.am * camlibs/konica/Makefile.am * camlibs/minolta/Makefile.am * camlibs/minolta/dimagev/Makefile.am * camlibs/panasonic/Makefile.am * camlibs/polaroid/Makefile.am * camlibs/sierra/Makefile.am * camlibs/sonydscf1/Makefile.am * camlibs/stv0680/Makefile.am * doc/api/Makefile.am * frontends/command-line/Makefile.am * libgphoto2_port/Makefile.am * libgphoto2_port/doc/Makefile.am * libgphoto2_port/include/Makefile.am * libgphoto2_port/libgphoto2_port/Makefile.am * libgphoto2_port/serial/Makefile.am * libgphoto2_port/usb/Makefile.am * camlibs/Makefile.am: added missing files to EXTRA_DIST and/or *_SOURCES 2001-10-19 Hans Ulrich Niedermann * libgphoto2_port/libgphoto2_port/Makefile.am: use $(libdir) as library directory * libgphoto2/Makefile.am: moved docs to DOC_DIR * libgphoto2_port/Makefile.am: added m4/ directory, moved docs to DOC_DIR * libgphoto2_port/autogen.sh: add m4/ dir for aclocal * libgphoto2_port/configure.in: add m4/ dir, sourced out doc stuff, new version, check for install * libgphoto2_port/doc/Makefile.am: moved to $(htmldir) * libgphoto2_port/m4/documentation.m4: added sourced out doc stuff * libgphoto2_port/m4/Makefile.am: added * doc/Makefile.am: added docs in DOC_DIR * doc/api/Makefile.am: moved to $(htmldir) * configure.in: sourced out doc stuff, check for install 2001-10-19 Dan Fandrich * frontends/command-line/main.c: Added automatic port type guessing when the type isn't specified 2001-10-19 Lutz Müller * camlibs/casio * camlibs/polaroid * camlibs/barbie * camlibs/dimera * camlibs/jamcam * camlibs/panasonic/coolshot * camlibs/samsung: Use camera-fs and get_file_func 2001-10-19 Lutz Müller * camlibs/kodak/dc240: Use camera->fs - this should fix file deletion that I broke earlier. * camlibs/kodak/dc3200: Use camera->fs. Don't use gp_port_[new,free,open,close]. Declare some functions static in order to fix compile warnings. 2001-10-18 Lutz Müller * frontends/command-line/main.c: Port to gp_log * libgphoto2/gphoto2-debug.[c,h]: Clean up even more. * po/POTFILES.in: Add frontends/command-line/main.c 2001-10-18 Lutz Müller * camlibs/digita/digita.c: Fix compile warnings ("static ..."). Use camera->fs. 2001-10-18 Fredrik * frontends/command-line/main.c: Only try to set port speed if port begins with 'serial' since gp_camera_set_port_speed() now fails if called for non-serial port. 2001-10-18 Lutz Müller * camlibs/canon.c: Don't use camera->model. * libgphoto2/gphoto2-camera.[c,h]: Remove camera->model. 2001-10-18 Lutz Müller * camlibs/polaroid/pdc320.[c,h]: Don't use camera->model. 2001-10-18 Lutz Müller * camlibs/sonydscf55: Use camera->pl, fix compile warnings 2001-10-18 Lutz Müller * camlibs/panasonic/l859 * camlibs/sierra: Use camera->pl 2001-10-17 Lutz Müller * camlibs: Don't use camera->port_info->path. This one has already be set by gphoto2 2001-10-17 Lutz Müller * camlibs/directory/directory.c: Use camera->fs exclusively. 2001-10-17 Lutz Müller * camlibs/jd350e: Use camera->port directly. 2001-10-17 Lutz Müller * camlibs/stv0680: Make direct use of camera->port. Kill compile warnings by declaring some functions static. 2001-10-17 Lutz Müller * camlibs/konica/library.c: Use camera->pl * libgphoto2/gphoto2-camera.[c,h]: Move lots of internals into camera->pc (for core use only) and offer hook for camera libraries (camera->pl) and frontends (camera->pf) 2001-10-17 Lutz Müller * frontends/command-line/main.c: Use gp_log. * libgphoto2/gphoto2-debug.[c,h]: Use gp_log. 2001-10-17 Lutz Müller * libgphoto2/gphoto2-debug.c: Make tranition to gp_log_* * camlibs/sierra: Adjust parameters of camera_capture 2001-10-17 Lutz Müller * README: no glib-dependency any more * camlibs: gp_abilities_new doesn't exist any more * doc/api: Even more documentation * libgphoto2/gphoto2-abiltiies.h: Cleaned up. * libgphoto2/gphoto2-abilities-list.c: Documented 2001-10-16 Lutz Müller Patch from Dan Fandrich : * libgphoto2/gphoto2-abilities-list.c: * libgphoto2/gphoto2-camera.c: Make models case-insensitive. 2001-10-16 Lutz Müller * libgphoto2/gphoto2-camera.[c,h]: Documented 2001-10-16 Dan Fandrich * camlibs/dimera/*: added i18n support; improved error returning * po/POTFILES.in: added dimera3500.c 2001-10-16 Hans Ulrich Niedermann * doc/api/.cvsignore: added tmpl directory and .cvsignore~ 2001-10-16 Hans Ulrich Niedermann * camlibs/casio/casio-qv.c: * camlibs/dimera/dimera3500.c: * camlibs/dimera/mesalib.c: * camlibs/sonydscf55/sony.c: * libgphoto2/abilities.c: * libgphoto2/gphoto2-abilities-list.c: * tests/test-filesys.c: added #include lines that should have already been there 2001-10-16 Hans Ulrich Niedermann * frontends/command-line/main.c: added package and version to debug msgs * frontends/command-line/main.c: added --print-usb-usermap command * frontends/command-line/main.h: added definition name of hotplug script 2001-10-16 Lutz Müller * frontends/command-line/main.c: Use gp_camera_set_abilities. * include/gphoto2-camera.h: * libgphoto2/camera.c:Introduce gp_camera_[set,get]_abilities. 2001-10-16 Lutz Müller * libgphoto2/gphoto2-result.[c,h]: GP_ERROR_NOT_SUPPORTED now in libgphoto2_port. 2001-10-16 Lutz Müller * libgphoto2/camera.c: * camlibs/konica/library.c: * camlibs/kodak/dc240/dc240.c: * camlibs/sierra: GP_ERROR_IO_UNKNOWN_PORT -> GP_ERROR_UNKNOWN_PORT * frontends/command-line: Kill warnings * configure.in: There are now some header files in libgphoto2_port/libgphoto2_port * include/gphoto2-camera.h: Use the new GPPort and GPPortInfo 2001-10-16 Lutz Müller Bug found by Fredrik : * doc/api/Makefile.am: Don't if-out everything. 2001-10-16 Lutz Müller Bug found by Colin Marquardt : * doc/api/Makefile.am: Don't generate documentation if not ENABLE_GTK_DOC 2001-10-15 Lutz Müller * libgphoto2/gphoto2-debug.[c,h]: Documented. 2001-10-15 Lutz Müller Patch approved by Gus Hartmann : * camlibs/minolta/dimagev/download.c * camlibs/minolta/dimagev/upload.c: Don't access the CameraFile struct directly. 2001-10-14 Lutz Müller * include/gphoto2-library.h: Moved to ... * libgphoto2/gphoto2-libary.h: ... here. 2001-10-14 Lutz Müller * camlibs/polaroid/pdc640.c: Remove non-existant GP_ERROR_NO_CAMERA_FOUND. 2001-10-14 Lutz Müller * libgphoto2/gphoto2-result.[c,h]: Documented. 2001-10-14 Lutz Müller * libgphoto2/gphoto2-list.[c,h]: Documented. 2001-10-13 Lutz Müller * libgphoto2/gphoto2-abilities-list.[c,h]: Simplified, expose fewer functions. 2001-10-12 Hans Ulrich Niedermann * libgphoto2_port/libgphoto2_port/gp_port.c: more detailed debug output for *_write and *_read * libgphoto2_port/usb/libusb.c: removed the last fprintf, fixed missing "%s" in string * libgphoto2_port/usb/libusb.c: added call notification at GP_DEBUG_HIGH for most methods 2001-10-12 Hans Ulrich Niedermann * frontends/command-line/main.c: added package and version to debug msgs * frontends/command-line/main.c: added --print-usb-usermap command * frontends/command-line/main.h: added definition name of hotplug script 2001-10-12 Hans Ulrich Niedermann * HACKING: reformatted, added not for emacs users * README: added hint to gphoto2-cli.txt * AUTHORS: fixed typo 2001-10-12 Hans Ulrich Niedermann * camlibs/canon/canon.c: added is_crw() function * camlibs/canon/canon.c: moved to 1-bit power source detection * camlibs/canon/psa50.h: moved to 1-bit power source detection * camlibs/canon/Protocol: 1-bit power source detection seems to work better * camlibs/canon/Makefile.am: removed util.[ch] from canon driver * camlibs/canon/serial.c: removed dump_hex() and "util.h", added "serial.h" * camlibs/canon/serial.h: added prototype for canon_usb_camera_init() 2001-10-12 Fredrik * camlibs/canon/psa50.c: more debug output in psa50_usb_dialogue() and cleanups to psa50_get_file_usb() (fixes downloading of small files (read: thumbnails)). 2001-10-12 Lutz Müller * include * libgphoto2: More renaming in order to make gtk-doc happy. 2001-10-12 Lutz Müller * include/gphoto2-widget.h * include/gphoto2-filesys.h: Moved to ... * libgphoto2/gphoto2-widget.h * libgphoto2/gphoto2-filesys.h: ... here. * libgphoto2/widget.c * libgphoto2/filesys.c: Moved to ... * libgphoto2/gphoto2-widget.c * libgphoto2/gphoto2-widget.h: ... here. * include/Makefile.am * libgphoto2/Makefile.am: Updated. * camlibs/.../Makefile.am: Updated to reflect changes above 2001-10-11 Lutz Müller * libgphoto2/libgphoto-2.0.pc.in: -I${includedir} 2001-10-11 Lutz Müller * camlibs/directory/directory.h: Removed. * camlibs/directory/directory.c: Remove cruft 2001-10-11 Lutz Müller * camlibs/canon/psa50.c * camlibs/dimera/dimera3500.c: * camlibs/kodak/dc120/library.c: * camlibs/kodak/dc240/library.c: * camlibs/kodak/dc3200/library.c: * camlibs/panasonic/dc1000.c: * camlibs/panasonic/dc1580.c: * camlibs/panasonic/l859/l859.c: * camlibs/sierra/library.c: * frontends/command-line/interface.c: Unify percentage handling and define 0.0 <= percentage <= 1.0. 2001-10-11 Hans Ulrich Niedermann * docs/, doc/: moved all documentation to doc/ * doc/gphoto2.txt, doc/gphoto2-cli.txt: added to distribution 2001-10-11 Lutz Müller * include/gphoto2-widget.h * libgphoto2/exif.[c,h] * libgphoto2/widget.c: Fix stuff gtk-doc was complaining about. 2001-10-10 Lutz Müller * configure.in: Give some feedback (gtk-doc: yes/no?) 2001-10-10 Lutz Müller * libgphoto2/filesys.c: Documented. 2001-10-10 Lutz Müller * camlibs/template/template.c: Updated. 2001-10-10 Lutz Müller * frontends/command-line/interface.c: Don't jump to the next line for status messages - this disturbs the nice formatting of listings. 2001-10-09 Lutz Müller * camlibs/casio/casio-qv.c: On capture, append the file to the filesystem * camlibs/polaroid/pdc640.c: Here, too. * include/gphoto2-camera.h: Add some more warnings * libgphoto2/filesys.c: * include/gphoto2-filesys.h: We don't need to expose gp_filesystem_folder_number, that doesn't make sense 2001-10-09 Lutz Müller Shift the whole library towards exclusively using the CameraFilesystem: * camlibs/agfa/agfa.c: delete_file_func, get_file_func * camlibs/canon/canon.c: Add warning that upload and deletion is broken * camlibs/jd350e/jd350e.c: Tiny update * camlibs/kodak/dc120/dc120.c: folder_list_func, file_list_func, get_file_func, delete_file_func * camlibs/kodak/dc240.c: Add warning that changes have to be made * camlibs/konica/library.c: delete_all_func, delete_file_func * camlibs/minolta/dimagev/dimagev.c: delete_file_func, put_file_func, * camlibs/panasonic/dc1000.c: file_list_func, get_file_func, put_file_func, delete_file_func * camlibs/panasonic/dc1580.c: get_file_func, put_file_func, delete_file_func * camlibs/panasonic/l859.c: delete_file_func, delete_all_func * camlibs/polaroid/pdc320.c: get_file_func, delete_all_func * camlibs/polaroid/pdc640.c: get_file_func, delete_file_func * camlibs/sierra/library.c: * camlibs/sierra/sierra.c: delete_all_func, delete_file_func * camlibs/sonydscf1/sonydscf1.c: delete_file_func * camlibs/sonydscf55/sonydscf55.c: Tiny update * camlibs/stv0680/stv0680.c: Tiny update * frontens/command-line/interface.c: Don't show "" status and 0.0 progress * libgphoto2/camera.c: * include/gphoto2-camera.h: Remove put_file, delete_all and delete - this should all be done using the filesystem. In the future, file_get and the listing functions will also disappear. * include/gphoto2-filesys.h: * libgphoto2/filesys.c: Add deletion and upload. * libgphoto2/jpeg.c: Kill unused variable * tests/test-filesys.c: Update 2001-10-09 Lutz Müller * camlibs/sonydscf1: Clean up a bit. This camera uses globals and won't work with big frontends... Use camera->port and camera->fs. 2001-10-09 Lutz Müller * camlibs/stv0680/stv0680.[c,h]: Fix compile warnings by declaring some functions static. Use camera->port and camera->fs. 2001-10-09 Lutz Müller * camlibs/sonydscf55/camera.c: Fix compile warnings by declaring some functions static. Use camera->port and camera->fs. 2001-10-09 Lutz Müller * camlibs/minolta/dimagev/dimagev.[c,h]: Fix compile warnings by declaring some functions static. Use camera->port and camera->fs. 2001-10-09 Lutz Müller * camlibs/panasonic/l859/l859.[c,h]: Fix compile warnings by declaring some functions static. Use camera->port and camera->fs. (l859_debug): Removed. Now in libgphoto2_port 2001-10-09 Lutz Müller * camlibs/jd3503/library.c: Fix compile warnings by declaring some functions static. * camlibs/jd350e.c: Here, too. #include . Use camera->port and camera->fs. First in order to avoid problems with port locking and second for caching. * camlibs/jd350e.h: No filesystem here. Use camera->fs. 2001-10-09 Lutz Müller * camlibs/konica/library.c: Remove reference to gphoto2-frontend.h. 2001-10-08 Lutz Müller * include/gphoto2-frontend.h * libgphoto2/frontend.c: Removed * frontends/command-line * include/Makefile.am * libgphoto2: Remove references to above 2001-10-08 Lutz Müller * camlibs/panasonic/dc.c: gp_frontend_status -> gp_camera_status 2001-10-08 Lutz Müller * camlibs/kodak/dc240/library.c: gp_frontend_status -> gp_camera_status 2001-10-08 Lutz Müller * include/gphoto2-[camera,frontend].h * libgphoto2/[camera,frontend].c: gp_frontend_message -> gp_camera_message * camlibs: Reflect above 2001-10-08 Lutz Müller * camlibs/polaroid/pdc640.c: Patch from Chris. Don't know what's inside... 2001-10-08 Lutz Müller * include/gphoto2-frontend.h * libgphoto2/frontend.c * camlibs: gp_frontend_progress -> gp_camera_progress, gp_frontend_status -> gp_camera_status 2001-10-08 Lutz Müller * libgphoto2/camera.c: Correctly initialize on gp_camera_new * frontends/command-line: Use the new gp_camera_[status,progress] 2001-10-08 Lutz Müller * libgphoto2/camera.c * include/gphoto2-camera.h (gp_camera_status*), (gp_camera_progress*): New 2001-10-08 Lutz Müller * include/gphoto2-frontend.h * libgphoto2/frontend.c: Remove gp_frontend_prompt. This and the other gp_frontend functions will reappear some day in gphoto2-camera. 2001-10-07 Hans Ulrich Niedermann * configure.in: remove unnecessary variables at the beginning 2001-10-08 Lutz Müller * libgphoto2/camera.c: Additional debugging messages 2001-10-07 Lutz Müller * camlibs/jamcam: Use libgphoto2/bayer.h and libgphoto2/gamma.h * libgphoto2/Makefile.am: LIBADD -lm 2001-10-07 Lutz Müller * configure.in: -lm * libgphoto2/Makefile.am * libgphoto2/bayer.[c,h] * libgphoto2/gamma.[c,h]: New * camlibs/polaroid/pdc640.c: Use above 2001-10-07 Lutz Müller Patch from Chris Byrne : * camlibs/polaroid/pdc640.c: Updated 2001-10-07 Lutz Müller Patch from David Faure * libgphoto2/core.c: Fix logic 2001-10-06 Lutz Müller * configure.in: Bump version up to 2.0beta3 2001-10-06 Lutz Müller Patch from Hans Ulrich Niedermann : * frontends/command-line: Add --version 2001-10-06 Lutz Müller * include/gphoto2-list.h * libgphoto2/list.c (gp_list_ref), (gp_list_unref): New 2001-10-06 Lutz Müller * include/gphoto2-debug.h * libgphoto2/debug.c (gp_debug_history_get_size): New 2001-10-06 Lutz Müller * libgphoto2/debug.c: Use the debug level from libgphoto2_port instead of keeping an own global variable 2001-10-05 Lutz Müller * configure.in: Check for vsnprintf, too. * libgphoto2/debug.c: Use vsnprintf if available. 2001-10-05 Fabrice Bellet * frontends/command-line/actions.c: * frontends/command-line/foreach.c: * frontends/command-line/main.c: Print directory names at each step of the recursion when using '--list-folders --recurse'. 2001-10-05 Fabrice Bellet * frontends/command-line/actions.c: * frontends/command-line/actions.h: * frontends/command-line/foreach.c: * frontends/command-line/main.c: The --recurse option should now work with --get-all-thumbnails, --get-all-images, --get-all-raw-data, --list-files and --list-folders. 2001-10-04 Lutz Müller * libgphoto2/filesys.c: Only spew debugging messages in case of error - there don't seem to be serious bugs in there any more. 2001-10-04 Hubert Figuiere * camlibs/kodak/dc240/library.c: patch by Peter Fales compute the packet checksum and ask to resend it. 2001-10-04 Lutz Müller * include/gphoto2-debug.h: #include * include/gphoto2-result.h: #include * libgphoto2/debug.c: #include 2001-10-04 Lutz Müller * libgphoto2/debug.c: Move debugging stuff to libgphoto2_port so that those messages get saved, too. 2001-10-04 Lutz Müller * camlibs/konica/library.c: const * frontents/command-line/main.c: Print out last debugging messages on error * include/gphoto2-debug.h: * libgphoto2/debug.c: Remember history * include/gphoto2-result.h: * libgphoto2/result.c: Revert the result_as_description thing 2001-10-04 Lutz Müller * libgphoto2/result.c: * libgphoto2/camera.c: * include/gphoto2-camera.h: * include/gphoto2-result.h: Put in some consts. 2001-10-03 Hubert Figuiere * camlibs/kodak/CAMERAS: added latest Kodak DX models. 2001-10-03 Lutz Müller * frontends/command-line/main.c: Print out additional information on error. * include/gphoto2-result.h: * libgphoto2/result.c (gp_result_as_description): New. 2001-10-03 Lutz Müller * libgphoto2/camera.c: Check the result of gp_port_open. 2001-10-01 Lutz Müller * camlibs/konica/localization/Makefile.am: EXTRA_DIST the localization data to get the stuff included in the dist tarball. 2001-10-01 Lutz Müller * camlibs/konica: Rejoice, we no longer have a glib dependency! 2001-10-01 Lutz Müller * camlibs/konica/konica.[c,h]: * camlibs/konica/library.c: Moving towards glib-free code... 2001-09-27 Lutz Müller * camlibs/sierra/protocol.c: * camlibs/sierra/sierra.c: Gilles Grandou figured out how to retrieve date and software revision. * configure.in: * camlibs/jd350e: New driver from Michael Trawny 2001-09-25 Lutz Müller * libgphoto2/jpeg.h: Fix a warning * libgphoto2/camera.c: Fix locking problem in gp_camera_folder_delete_all. 2001-09-24 Nathan Stenzel * camlibs/polaroid/pdc320.h: * camlibs/polaroid/pdc320.c: now uses jpeg.c and jpeg.h * libgphoto2/jpeg.h: * libgphoto2/jpeg.c: Can now create and write jpeg files (except for actual encoding of compressed data) 2001-09-24 Lutz Müller * libgphoto2/jpeg.h: * camlibs/polaroid/pdc320.c: Adapt to changes jpeg_* -> gp_jpeg_* * libgphoto2/jpeg.h: Kill yet another warning. 2001-09-24 Lutz Müller * libgphoto2/jpeg.[c,h]: Respect the namespace of libjpeg. Otherwise, gtkam and other graphical frontends will horribly fail. 2001-09-24 Lutz Müller * libgphoto2/core.c: have_initted is no longer needed. 2001-09-24 Lutz Müller * camlibs/sonydscf1/sonydscf1.c: * libgphoto2/debug.c: glob_debug is now static in libgphoto2 2001-09-24 Lutz Müller * frontends/command-line/main.c: glob_debug is now static in libgphoto2 2001-09-24 Lutz Müller * libgphoto2/jpeg.c: #define CHECK_RESULT(...) (...) 2001-09-23 Nathan Stenzel * libgphoto2/jpeg.h * libgphoto2/jpeg.c: Quantization table handling is much easier to do. 2001-09-23 Chris Pinkham * camlibs/jamcam/jamcam.c camlibs/jamcam/library.h camlibs/jamcam/library.c: Added support for low-res images. 2001-09-22 Lutz Müller * libgphoto2/filesys.c: Fix two small bugs. 2001-09-22 Lutz Müller * camlibs/jamcam/.cvsignore: * camlibs/sonydscf55/.cvsignore: New * include/gphoto2-debug.h: * libgphoto2/debug.c: Debugging stuff can be found here. * frontends/command-line/main.c: Use gp_debug_set_level and don't use gp_init any more (this is done automatically). * include/Makefile.am: * libgphoto2/Makefile.am: Add the debugging files * include/gphoto2-core.h: Remove debugging and initialization stuff * libgphoto2/core.c: Make gp_init a static function. * (...) Various smaller changes regarding gp_init and gp_debug_*. 2001-09-22 Raymond Penners * camlibs/sonydscf55/*: Fixes & eliminated compiler warnings. 2001-09-22 Lutz Müller Patch from Carsten Pfeiffer * camlibs/sonydscf1.sonydscf1.c: * include/gphoto2-core.h: * include/gphoto2-file.h: * include/gphoto2-filesys.h: * libgphoto2/core.c: * libgphoto2/file.c: * libgphoto2/filesys.c: char *whatever -> const char *whatever. 2001-09-22 Lutz Müller Patch from Ilya Konstantinov : * camlibs/sierra/sierra.c (get_info_func): Set the filename. 2001-09-21 Raymond Penners * AUTHORS MAINTAINERS configure.in camlibs/sonydscf55/*: added camera library for Sony DSC-F55 and Sony's Serial Port Adaptor MSAC-SR1 for the Sony DCR-PC100. 2001-09-18 Chris Pinkham * camlibs/canon/psa50.c camlibs/canon/serial.c libgphoto2_port/include/gphoto2-port.h libgphoto2_port/libgphoto2_port/gp_port.c libgphoto2_port/usb/libusb.c: changed *usb_msg_read* and *usb_msg_write* functions to allow passing in of request and index values. * MAINTAINERS configure.in camlibs/jamcam/Makefile.am camlibs/jamcam/jamcam.c camlibs/jamcam/library.c camlibs/jamcam/library.h: added camera library for KBGear JamCam v3.0 2001-09-12 Lutz Müller * libgphoto2/core.c: Add some CHECK_INITs. 2001-09-11 Nathan Stenzel * libgphoto2/jpeg.c: New * libgphoto2/jpeg.h: New 2001-09-10 Hubert Figuiere * libgphoto2_port/usb/libusb.c (gp_port_usb_find_device_lib): if device and vendor IDs are 0, return not found. 2001-09-10 Lutz Müller * camlibs/kodak/dc240/dc240.c (camera_init): Don't open/close the port. This is done by libgphoto2. 2001-09-10 Lutz Müller * libgphoto2/camera.c (gp_camera_init): Do a simple CHECK_RESULT_OPEN_CLOSE on the init_func (gp_camera_set_port): Set the path if the port is a serial one. * camlibs/template/template.c: * camlibs/sierra/sierra.c: * camlibs/samsung/samsung.c: * camlibs/polaroid/pdc700.c: * camlibs/polaroid/pdc320.c: * camlibs/panasonic/coolshot/coolshot.c: * camlibs/konica/library.c: * camlibs/dimera/mesalib.c: * camlibs/digita/usb.c: * camlibs/digita/serial.c: * camlibs/casio/casio-qv.c: * camlibs/canon/serial.c: * camlibs/barbie/barbie.c: * camlibs/agfa-cl18/agfa.c: Don't open the port. This is always done by libgphoto2. 2001-09-10 Lutz Müller * libgphoto2/camera.c (gp_camera_list_folders), (gp_camera_list_files): Return the result instead of GP_OK if anything goes wrong * libgphoto2/filesys.c: Check if path to folder is absolute. If not, return GP_ERROR_PATH_NOT_ABSOLUTE. * libgphoto2/result.c: * include/gphoto2-result.h: GP_ERROR_PATH_NOT_ABSOLUTE: New error. 2001-09-10 Lutz Müller * camlibs/sierra/sierra.c (get_info_func): Fix copy & paste bug. 2001-09-10 Lutz Müller * libgphoto2/core.c: Additional debugging stuff. 2001-09-09 Lutz Müller * libgphoto2/core.c: Use "... == GP_OK" instead of "!...". That should prevent that every USB camera shows up on gp_autodetect... 2001-09-07 Hubert Figuiere * libgphoto2_port/usb/libusb.c (gp_port_usb_close): Fixed a segfault when passed device handle was NULL. 2001-09-07 Lutz Müller * libgphoto2/filesys.c (gp_filesystem_format): Don't request any listings here. 2001-09-07 Lutz Müller * camlibs/polaroid/pdc640.c: New * camlibs/polaroid/Makefile.am: Added pdc640 2001-09-06 Lutz Müller * MAINTAINERS: Added Marius for panasonic * camlibs/panasonic/coolshot/Makefile.am: @dotlibs 2001-09-06 Chris Pinkham * camlibs/panasonic/coolshot/README camlibs/panasonic/coolshot/coolshot.c camlibs/panasonic/coolshot/library.c: changed thumbnail code to properly decode thumbnails after discovering they are encoded in YUV 4:1:1 format. 2001-09-05 Lutz Müller * camlibs/polaroid/pdc320.c: Bug fixes from Nathan Stenzel 2001-09-03 Chris Pinkham * camlibs/panasonic/coolshot/README camlibs/panasonic/coolshot/coolshot.c camlibs/panasonic/coolshot/library.h camlibs/panasonic/coolshot/library.c: added thumbnail support. 2001-09-02 Chris Pinkham * camlibs/panasonic/coolshot/coolshot.c camlibs/panasonic/coolshot/library.c: code cleanup * camlibs/panasonic/coolshot/README: added TODO list for driver 2001-09-02 Lutz Müller * include/gphoto2-filesys.h: * libgphoto2/filesys.c: Cache files, too. * libgphoto2/camera.c: Use cached files if exist. * camlibs/konica/library.c: * camlibs/sierra/sierra.c: Cache files in the filesystem. 2001-09-02 Lutz Müller * camlibs/panasonic/coolshot/coolshot.c: Use gp_list_populate instead of accessing the filesystem. The filesystem is clever enough to do that itself. 2001-09-02 Lutz Müller * camlibs/stv0680/pattrec.[c,h]: Move those files ... * libgphoto2/pattrec.[c,]: ...here. 2001-09-02 Lutz Müller * frontends/command-line/options.c: #include 2001-09-01 Chris Pinkham * configure.in: added line to generate camlibs/panasonic/coolshot/Makefile * MAINTAINERS: added line for camlibs/panasonic/coolshot driver * camlibs/panasonic/Makefile.am: added coolshot to SUBDIRS declaration * camlibs/panasonic/coolshot/Makefile.am * camlibs/panasonic/coolshot/README * camlibs/panasonic/coolshot/TODO * camlibs/panasonic/coolshot/coolshot.[c,h] * camlibs/panasonic/coolshot/library.[c,h]:added files to support Panasonic Coolshot KXL-600A & KXL-601A digital cameras. 2001-09-01 Lutz Müller * camlibs/casio: New * configure.in: Add casio. Like the polaroid and samsung, those drivers DON'T WORK and therefore are signed as EXPERIMENTAL. I add those only to give you a basic framework on which to build. 2001-08-31 Lutz Müller * camlibs/polaroid/pdc700.c: New 2001-08-31 Lutz Müller * configure.in: Added polaroid. * camlibs/samsung/samsung.c: Added GP_DRIVER_STATUS_EXPERIMENTAL; * frontends/command-line/main.c: print the EXPERIMENTAL/TESTING flag * include/gphoto2-abilities.h: * libgphoto2/abilities.c: Added CameraDriverStatus * camlibs/polaroid/pdc320.c: * camlibs/polaroid/Makefile.am: New 2001-08-31 Lutz Müller * camlibs/samsung/Makefile.am: * camlibs/samsung/samsung.c: New but untested. (Just ported it from old gphoto). * configure.in: Added samsung 2001-08-31 Lutz Müller * libgphoto2/camera.c: Add debugging messages 2001-08-31 Lutz Müller * camlibs/agfa-cl18/agfa.c: Remove gp_port_usb_find_device, that's in libgphoto2/camera.c now. * camlibs/canon/canon.c: Move the declaration of the models struct here. * camlibs/canon/canon.h: The models struct is no longer needed here. * camlibs/psa50.[c,h]: cs->gdev is now camera->port. * camlibs/canon/serial.[c,h] (canon_usb_probe): Removed. Now in libgphoto2/camera.c (canon_serial_init): Don't create/free a port here. Use camera->port. (canon_serial_close): Removed. No longer needed. Handled by libgphoto2 (canon_serial_restore): Same here. * digita/commands.c: Indicate usb product/vendor in the abilities so that gphoto2 can autodetect. Use camera->port. * camlibs/digita/serial.c: Don't create/free the port here. Handled by libgphoto2 * camlibs/digita/usb.c: No probe, no port creation (->libgphoto2) * camlibs/directory/directory.c: Declare lots of functions static. * camlibs/kodak/dc240/library.[c,h]: * camlibs/kodak/dc240/dc240.[c,h]: Use camera->port * camlibs/konica/library.c: No gp_port_usb_find_device here. * libgphoto2/camera.c (gp_camera_init): In case of USB, find the device. That removes redundancy in the camera libraries. 2001-08-30 Dan Fandrich * libgphoto2/file.c: * include/gphoto2-file.h: * camlibs/dimera/dimera3500.c: removed traces of the PNM pseudo-file type and added PGM. 2001-08-30 Lutz Müller * camlibs/dimera/dimera3500.c (camera_file_get): Use gp_file_adjust_name_for_mime_type * libgphoto2/file.c (gp_file_adjust_name_for_mime_type): GP_MIME_RAW -> *.raw 2001-08-30 Lutz Müller * camlibs/agfa.c: * camlibs/commands.c: * camlibs/commands.h: Use a macro CHECK for most of the simple error checks. That makes the code much cleaner. 2001-08-30 Lutz Müller * camlibs/agfa-cl18/agfa.h: Renamed to * camlibs/agfa-cl18/commands.h * camlibs/Makefile.am: Reflect this change. * camlibs/commands.c: * camlibs/agfa.c: Improve error reporting. 2001-08-30 Lutz Müller * camlibs/agfa-cl18/*: Bring it up to date (camera->port and camera->fs) 2001-08-29 Lutz Müller * camlibs/barbie/*: Use camera->port and camera->fs. * camlibs/dimera/dimera3500.c (populate_filesystem): Removed. (camera_folder_list_folders): Removed. We don't support folders anyways (camera_folder_list_files): Renamed to (file_list_func): Don't access the CameraFilesystem here. Just populate the list. The CameraFilesystem will get updated by libgphoto2. (camera_file_get_info): Renamed to (get_info_func): New (camera_file_set_info): Removed. Not supported. (camera_init): Correctly gp_filesystem_set_list_funcs and gp_filesystem_set_info_funcs so that the CameraFilesystem has full control over the information * include/gphoto2-list.h: * libgphoto2/list.c: (gp_list_populate): New. Please use this function to populate the list passed to you on file_list_func. * libgphoto2/filesys.c: Don't remove the dirty flag on folders on gp_filesystem_append (thanks, Dan!) 2001-08-29 Lutz Müller * camlibs/template/*: Updated * include/gphoto2-camera.h: Add a note about c_folder_list_folders and c_folder_list_files not to be used. Same with [get,set]_info. * include/gphoto2-filesys.h: Remove an uneeded typedef. * libgphoto2/filesys.c: Here, too. 2001-08-29 Lutz Müller Dan Fandrich found this bug: * libgphoto2/camera.c (list_files, list_folders): If gp_filesystem_list_files returns 0 files, try the old method. Same with folders. 2001-08-29 Lutz Müller Fabrice did it again: * camlibs/sierra/*: Actually use camera->fs. 2001-08-29 Lutz Müller * include/gphotoos2.h: * include/gphoto2-portability-os2.h: Removed. Contents are now ... * include/gphoto2.h: ... here. 2001-08-29 Lutz Müller * gphoto2-library.h: Clean up this file. * gphoto2-camera.h: We don't need camera_init, camera_abilities, and camera_id here. That belongs into gphoto2-library.h. * libgphoto2/camera.c: * libgphoto2/core.c: Adapt * camlibs/*: Move camera_init to the bottom of the file. Camera driver authors, could you please declare the functions above static? Except camera_id and camera_abilities. 2001-08-29 Lutz Müller All work from Fabrice Bellet : * libgphoto2/filesys.c (gp_filesystem_number): Check if the folder is dirty (like in gp_filesystem_folder_number). 2001-08-29 Lutz Müller * camlibs/sierra/*: * camlibs/directory/directory.c (camera_folder_list_folders), (camera_folder_list_files), (camera_file_[get,set]_info): Removed. Use the camera->fs. Use camera->port. * camlibs/*: camera->port->* -> camera->port_info->* * include/gphoto2-camera.h: * libgphoto2/camera.c: Open the port before accessing a camera, close it after. 2001-08-28 Hubert Figuiere * include/gphoto2-file.h (GP_MIME_BMP): added this mime type. 2001-08-29 Lutz Müller * include/gphoto2-file.h: Add a note about the crappy API * include/gphoto2-abilities-list.h: * libgphoto2/abilities-list.c: * libgphoto2/core.c: Don't access the CameraAbilitiesList directly any more. 2001-08-29 Lutz Müller Another patch from Ilya Konstantinov : * libgphoto2/camera.c (gp_camera_new): Correctly initialize the speed to 0 2001-08-28 Lutz Müller * camlibs/canon/psa50.c: * camlibs/kodak/dc120/library.c: * camlibs/minolta/dimagev/dimagev.c: * camlibs/panasonic/dc1000.c: * camlibs/panasonic/dc1580.c: * camlibs/sonydscf1/sonydscf1.c: Remove direct accesses to the CameraFile struct. 2001-08-27 Lutz Müller Patch from Fabrice Bellet : * camlibs/sierra/library.[c,h]: * camlibs/sierra/sierra.c: Use the new filesystem to cache file information and for listing files/folders. * include/gphoto2-file.h: * libgphoto2/file.c (gp_file_detect_mime_type), (gp_file_adjust_name_for_mime_type): New * libgphoto2/camera.c: list->count = 0; * libpghoto2/filesys.c (gp_filesystem_number): If this function is called, scan the whole filesystem. * tests/test-filesys.c: Test gp_filesystem_get_folder, too. 2001-08-27 Lutz Müller * camlibs/sierra/sierra.c: Now that libgphoto2_port is patched, we can revert the quick fix from two hours ago. 2001-08-27 Lutz Müller * libgphoto2/camera.c * libgphoto2/file.c: strcpy -> strncpy 2001-08-27 Lutz Müller * include/gphoto2-filesys.h: * libgphoto2/filesys.c: Cache folders and files, too (that is, only query them from the camera when needed. * frontends/command-line/main.c: Don't require a port with "Directory Browse". * camlibs/konica/library.c: Use the new functions * camlibs/directory/directory.[c,h]: Use the filesystem * tests/test-filesys.c: Demonstrate the use of the new functions. 2001-08-27 Lutz Müller * camlibs/sierra/sierra.c: And correctly use the macros CHECK (won't stop the camera) and CHECK_STOP (after the connection has been started). 2001-08-27 Lutz MÜller * camlibs/sierra/sierra.c: Until I can fix the bug in libgphoto2_port, don't close the USB port. 2001-08-27 Lutz Müller Suggestion from Ilya Konstantinov : * include/gphoto2-camera.h: * libgphoto2/camera.c (gp_camera_[get,set]_port_name) and (gp_camera_[get,set]_port_path): New * frontends/command-line/main.c: Call those functions. 2001-08-27 Lutz Müller * include/gphoto2-filesys.h: * libgphoto2/filesys.c: Implement caching for file information. * tests/test-filesys.c: Test it here. * camlibs/konica/library.c: Use gp_filesystem_[get,set]_info. This stuff is really incredibly fast. 2001-08-27 Lutz Müller Daniel Resare suggested using AC_CONFIG_SUBDIRS: * configure.in: Use AC_CONFIG_SUBDIRS(libgphoto2_port). * Makefile.am: build.sh isn't needed any more * INSTALL: Update installation instructions * doc/Makefile.am: Removed OVERVIEW and NOTES. This should have happened a long time ago. 2001-08-27 Lutz Müller Ilya Konstantinov pointed me to this bug: * camlibs/sierra/sierra.c (camera_file_get): Add a break in the switch statement so that people can download files instead of getting errors. 2001-08-27 Lutz Müller * include/gphoto2-core.h: * libgphoto2/core.c (gp_autodetect): Revert an API change I committed by error. Sorry. * libgphoto2/camera.c: * frontends/command-line/main.c: Here too. 2001-08-27 Lutz Müller Suggestions from Fabrice Bellet : * camlibs/sierra/library.c (sierra_change_folder): Just return if we are already in the requested folder. (sierra_update_fs_for_folder): Dont jump into the folder twice. * camlibs/sierra/sierra.c (camera_init): Use camera_start here instead of reimplementing everything again. 2001-08-26 Hubert Figuiere * configure.in: fixed a typo in the dotlibs value. 2001-08-26 Lutz Müller * include/gphoto2-camera.h: * libgphoto2/camera.c: Add gp_camera_[set,get]_model. Please use those functions instead of directly accessing camera->model. * libgphoto2/core.c: On exit, set glob_abilities_list = NULL * tests/test-gphoto2.c: Add lots of documentation. 2001-08-26 Lutz Müller * camlibs/dimera/dimera3500.c: explicitly set the conversion method to GP_FILE_CONVERSION_METHOD_CHUCK. * camlibs/digita/digita.c: Move the conversion raw -> ppm to ... * include/gphoto2-file.h: * libgphoto2/file.c: ... here. * include/gphoto2-filesystem.h: * libgphoto2/filesys.c: Implement "dirty" folders. 2001-08-26 Lutz Müller * camlibs/dimera3500.c: Move the raw->pnm conversion ... * include/gphoto2-file.h: * libgphto2/file.c: ... here. Now, other camera drivers can use this, too. * include/gphoto2-core.c: * libgphoto2/core.c: Small change to make the API consistent. * frontends/command-line/main.c: Add possibility for download of raw data. 2001-08-25 Lutz Müller * include/gphoto2-file.h: * include/gphoto2-library.h: * include/gphoto2-camera.h: Support for raw data. * libpghoto2/file.c: Adjust to above changes. * libgphoto2/frontend.c: Kill a warning. * libgphoto2/libgphoto-2.0.pc.in: CFlags -> Cflags * libgphoto2/widget.c: Include gphoto2-result.h instead of gphoto2.h * camlibs/*: Prepare support for download of raw data. Remove lots of redundant code (people just copied & pasted the code for file_get and file_get_preview...). I hope everything works as it did before. * frontend/command-line/*: Prepare support for download of raw data 2001-08-24 Lutz Müller * libgphoto2/abilities.c: * include/gphoto2-abilities.h: Let gp_abilities_new return an error code. This was the last one. * camlibs/*: Adjust to above change. * camlibs/canon/canon.c: #if 0 some code to kill some warnings 2001-08-24 Lutz Müller * include/gphoto2-abilities-list.h: Make gp_abilities_list_new return an error code. Introduce gp_abilities_list_sort and gp_abilities_list_count. * libgphoto2/abilities-list.c: See above. * libgphoto2/core.c: Sorting code now is in abilibies-list. * libgphoto2/file.c: "image/x-png" -> "image/png" 2001-08-24 Lutz Müller * camlibs/sierra/library.c: Remove some unnecessary casts, put in some CHECKs * camlibs/kodak/dc120/dc120.c: * camlibs/kodak/dc210/library.c: * camlibs/kodak/dc240/library.c: Use gp_file_* instead of directly accessing the struct. * libgphoto2/filesys.c: Remove lots of redundancy, always check if folder has a trailing slash (and ignore it if this is the case). 2001-08-24 Lutz Müller * camlibs/agfa-cl18/agfa.c: Use gp_file_* instead of directly accessing the struct. * camlibs/barbie/barbie.c: And here. * camlibs/directory/directory.c: And here. * camlibs/konica/library.c: And here. * camlibs/sierra/sierra.c: And here. * camlibs/panasonic/l859/l859.c: And here. * camlibs/dimera/dimera3500.c: And here. * camlibs/stv0680/stv0680.c: And here. * frontends/command-line/main.c: And here. * libgphoto2/camera.c: And here. * libgphoto2/file.c: * include/gphoto2-file.h: Introduce some more gp_file_* functions. 2001-08-24 Lutz Müller * include/gphoto2-file.h: Make gp_file_new return an error code. * */*: Adjust everything for above change. 2001-08-23 Lutz Müller * libgphoto2/list.c (gp_list_new): memset on *list instead of list. 2001-08-22 Hubert Figuiere * camlibs/dimera/dimera3500.c: removed * / * embedded inside comments that issued warnings and broke the build... * camlibs/kodak/dc240/library.c (dc240_wait_for_busy_completion): cast a const to a char to avoid a serious warning on Solaris sparc gcc. Fix bug #454183 2001-08-22 Stephane Castejon * frontends/command-line/main.c : fix option --debug so that it really put the GP_DEBUG_HIGH mode. 2001-08-22 Lutz Müller * */*: Small parameter changes to make gphoto2 API more consistent. More to follow. 2001-08-22 Lutz Müller * README: Update USB Mass Storage list 2001-08-21 Lutz Müller * libgphoto2/camera.c (gp_camera_file_get_info): Fix logic. 2001-08-21 Lutz Müller * libgphoto2/camera.c: * libgphoto2/core.c: * libgphoto2/widget.c: Introduce CHECK_NULL and CHECK_RESULT for better error recovery and reporting 2001-08-22 Hubert Figuiere * MAINTAINERS: take over DC240 maintenance. * camlibs/kodak/dc240/library.h: removed unused functions. * camlibs/kodak/dc240/library.c: moved lot of functions to static. (dc240_wait_for_busy_completion): implemented. (NEW) (dc240_capture): finished implementation and prototype update. * camlibs/kodak/dc240/dc240.c (camera_init): activate capture_image (camera_capture): reimplemented and updated prototype 2001-08-21 Lutz Müller * libgphoto2/camera.c (gp_camera_file_get_info): Make sure the field name is always set. 2001-08-21 Lutz Müller * README: Updated list of USB Mass Storage cameras. Thanks Hubert! 2001-08-21 Stephane Castejon * Removing unused variables 2001-08-21 Stephane Castejon Correct following bugs in the sierra driver : * Could not retrieve movies from the cameras (got the image having the same base name instead). Same behaviour for movie thumbnails, * After correction of problem 1, got movie thumbnails that do not fit the JPEG format. * After correction of problem 1 & 2, part of some movie thumbnails had a very bad quality! The phenomenon was aleatory. In camlibs/sierra/library.c,h : * Rewrite the sierra_read_packet routine : now it downloads movie thumbnails correctly (third bug). * Correction in the sierra_capture routine to make it generic regarding name of the folder the captured image is stored in. * Move update_fs_for_folder and sierra_change_folder from sierra.c to here. * Plus various other minor changes to try to be consistent between the different routines (when do we need to retry, error codes). Still work to be done there. * Add gp_filesystem_delete_all at the beginning of update_fs_for_folder. * Start documenting routines. In camlibs/sierra/sierra.c : * Add call to sierra_change_folder in camera_file_get_generic, camera_file_get_info, camera_folder_delete_all, camera_file_delete. Remove sierra_folder_set from camera_start (then delete the routine since it is not used anymore). * Correct camera_file_get_generic to handle movie thumbnails correctly. * Correction in camera_file_get_generic regarding the properties (type and name) of the return file : it is always jpeg for thumbnails. * Move update_fs_for_folder and sierra_change_folder to library.c. * Remove formatting of the filesystem from camera_folder_delete_all : it is now performed by sierra_update_fs_for_folder. * Add a camera specific error code GP_ERROR_BAD_CONDITION which is raised when a picture cannot be captured (for instance if the lens protection was not removed, or the memory card is full). * Start documenting routines. 2001-08-20 Lutz Müller * doc/OVERVIEW: Cruft, not up to date, incorrect. Removed. * doc/NOTES: Redundant. Removed. * libgphoto2/camera.c: Be nice to frontend-writers, call gp_init if it hasn't been called yet on gp_camera_new. * libgphoto2/core.c: Same here with gp_autodetect and gp_camera_count. * include/gphoto2-core.h: Kill compile warning 2001-08-20 Lutz MÜller * libpghoto2/camera.c: Kill compile warning by declaring gp_camera_exit static 2001-08-20 Lutz MÜller * MAINTAINERS: New 2001-08-20 Lutz Müller * camlibs/sierra/sierra.c (camera_file_get_generic): Documentation update 2001-08-20 Lutz Müller * camlibs/sierra/sierra.c (camera_file_get_generic): Fix detection of TIFF images 2001-08-19 Lutz Müller * configure.in: -Wmissing-prototypes -Wmissing-declarations * camlibs/agfa-cl18/commands.c: * camlibs/agfa-cl18/usb.c: * frontends/command-line/foreach.c: * frontends/command-line/interface.c: * frontends/command-line/main.c: * frontends/command-line/options.c: * frontends/command-line/range.c: * frontends/command-line/shell.h: * include/gphoto2-file.h: * libgphoto2/file.c: First step towards a compilation with -Werror 2001-08-19 Lutz Müller * camlibs/konica/library.c: Format the filesystem before updating it. 2001-08-19 Lutz Müller * tests/test-filesys.c: Even more tests * libgphoto2/filesys.c: Fix remaining bugs. It should work now... 2001-08-19 Lutz Müller * tests/test-filesys.c: New * tests/Makefile.am: Compile test-filesys.c * libgphoto2/filesys.c: Several bugfixes - there are still bugs in there. 2001-08-19 Lutz Müller * configure.in: Don't generate camlibs/template/Makefile * libgphoto2/filesys.c: * include/gphoto2-filesys.h (gp_filesystem_delete_all): New 2001-08-19 Lutz Müller * libgphoto2/filesys.c (gp_filesystem_format): Fix bug found by Stéphane Castejon. 2001-08-19 Lutz Müller * libgphoto2/globals.h: Unused. Removed. 2001-08-19 Lutz Müller * include/gphoto2-filesys.h: * libgphoto2/filesys.c (gp_filesystem_get_folder): New * libgphoto2/widget.c (gp_widget_get_parent): Corrected typo 2001-08-18 Lutz Müller * include/gphoto2-widget.h: * libgphoto2/widget.c (gp_widget_get_parent): New function 2001-08-18 Lutz Müller * include/Makefile.am: Oops, add gphoto2-result.h. 2001-08-18 Lutz Müller * po/POTFILES.in: Add core.c, camera.c and result.c 2001-08-18 Lutz Müller * README: Add notice about USB Mass Storage cameras. * include/*: * libgphoto2/*: Major cleanup - add licence notice to begin of each file, remove unused files/functions, ... * camlibs/konica/Makefile.am: There's no ChangeLog here... * tests/test-gphoto2.c: Adjust headers 2001-08-17 Lutz Müller * include/gphoto2-camera.h: * include/gphoto2-file.h: * include/gphoto2-widget.h: Sort some stuff, put in LGPL notice. * libgphoto2/widget.c: Hide CameraWidget internals here. No need to publish all that stuff. 2001-08-17 Lutz Müller * include/gphoto2-datatypes.h: Move the declaration of the lists to ... * include/gphoto2-lists.h: ... here. This is a first step towards cleaning up the include-mess. Realized that CameraListType isn't needed at all - removed. * include/gphoto2-filesys.h: Hide the actual contents of the CameraFilesystem ... * libgphoto2/filesys.c ... here. The normal user doesn't need to know what's inside. * libgphoto2/core.c: * libgphoto2/lists.c: * camlibs/*: Reflect above changes 2001-08-17 Lutz Müller * configure.in: Add libgphoto-2.0.pc * libgphoto2/Makefile.am: Remove the old GNOME configuration stuff. GNOME uses pkgconfig now: * libgphoto2/libgphoto2Conf.sh.in: Removed * libgphoto2/libgphoto-2.0.pc.in: New 2001-08-17 Lutz Müller * tests/*: New * configure.in: * Makefile.am: Add tests to SUBDIRS and generate the Makefile * frontents/command-line/test.[c,h]: Removed * frontends/command-line/main.c: * frontents/command-line/Makefile.am: Reflect changes 2001-08-17 Lutz Müller * frontents/gtk/macros/*: Removed. 2001-08-17 Lutz Müller * frontents/Makefile.am: Remove libpghoto2_frontend from SUBDIRS. * frontents/gtk/*: Removed those ancient files. For GUI frontends, refer to gtkam or GnoCam. They are distributed separately. 2001-08-17 Lutz Müller * frontends/command-line/Makefile.am: Remove reference to libgphoto2_frontend.la which wasn't needed anyways. 2001-08-17 Lutz Müller * frontents/libgphoto2_frontend/*: Removed. Those files were mainly empty functions and nowhere needed. 2001-08-17 Hubert Figuiere * camlibs/kodak/dc210/dc210.c, camlibs/kodak/dc210/dc210.h, camlibs/kodak/dc210/library.c, camlibs/kodak/dc210/library.h, camlibs/kodak/dc210/Makefile.am, camlibs/kodak/dc210/README: Initial release of DC210 driver port. 2001-08-16 Christophe Barbe * configure.in, camlibs/agfa-cl18/Makefile.am, camlibs/barbie/Makefile.am, camlibs/canon/Makefile.am, camlibs/digita/Makefile.am, camlibs/dimera/Makefile.am, camlibs/directory/Makefile.am, camlibs/kodak/dc120/Makefile.am, camlibs/kodak/dc240/Makefile.am, camlibs/kodak/dc3200/Makefile.am, camlibs/konica/Makefile.am, camlibs/minolta/dimagev/Makefile.am, camlibs/panasonic/Makefile.am, camlibs/panasonic/l859/Makefile.am, camlibs/sierra/Makefile.am, camlibs/sonydscf1/Makefile.am, camlibs/stv0680/Makefile.am, camlibs/template/Makefile.am: It adds code in configure.in to detect when '.libs' is not detected and in this case defined a variable "dotlibs" which is then substitued in all Makefile.in. This fix a build problem with newer libtool (1.4) 2001-08-15 Hubert Figuiere * camlibs/kodak/dc240/dc240.c (camera_about): Changed a typo in supported camera models. 2001-08-14 Lutz Müller * camlibs/sierra/sierra.c: Set timeout to TIMEOUT before updating folder. Thanks to Stéphane Castejon who found this bug. 2001-08-13 Hubert Figuiere * libgphoto2_port/usb/libusb.c (gp_port_usb_open): fix bug #438062: a NULL usb_device* was passed to usb_dev_handle. 2001-08-12 Hubert Figuiere * camlibs/kodak/dc240/library.c (dc240_file_action): fix bug #440162 2001-08-08 Lutz Müller * camlibs/sierra/library.c: (sierra_delete_all): Move notice about cameras ignoring delete_all to ... * camlibs/sierra/sierra.c: (camera_folder_delete_all): ... here. And update the filesystem - without that, gphoto2 won't be able to fix the behaviour of some cameras (ignoring delete_all). 2001-08-08 Lutz Müller * camlibs/panasonic/Makefile.am: SUBDIRS = l859 2001-08-08 Lutz Müller * camlibs/konica/library.c: (camera_init): Update the filesystem once at camera_init (camera_folder_list_folders): Use gp_filesystem_list_folders (camera_folder_list_files): Use gp_filesystem_list_files 2001-08-08 Lutz Müller * camlibs/sierra/library.[c,h]: (do_capture): Return the right location of the picture (on my camera, it is in /DCIM/100OLYMP) (sierra_file_count): Move that function into ... * camlibs/sierra/sierra.c: (update_fs_for_folder): New. Check the contents of the camera once at the beginning (init), then don't access the card anymore. (camera_init): Populate the filesystem (camera_folder_list_files): Use gp_filesystem_list_files (camera_folder_list_folders): Use gp_filesystem_list_folders (camera_file_get_info): The thumbnails aren't in quicktime format (camera_capture): Add the picture to the filesystem * include/gphoto2-filesys.h: * libgphoto2/filesys.c: (gp_filesystem_append): Allow filename == NULL for appending just folders (gp_filesystem_dump): New (gp_filesystem_list_files): New (gp_filesystem_list_folders): New 2001-08-04 Lutz Müller * camlibs/sierra/sierra.c: The C-2100UZ is supported, too. Unfortunatelly, the product id is the same for the C-2100UZ, the C-3000Z, and the C-3030Z. This results in three entries for this camera ("gphoto2 --auto-detect"). This has to be fixed somehow, sometime. 2001-08-03 Lutz Müller * camlibs/sierra/sierra.c: Remove the Panasonic Coolshot KXI-600A from the list of supported cameras - Chris Pinkham figured out that this camera uses a totally different protocol. 2001-08-03 Lutz Müller * camlibs/sierra/library.c: Add a note that the Nikon CoolPix 880 simply ignores (!) the delete_all command. Thanks to Mick Grant for figuring this out. 2001-08-03 Lutz Müller * libgphoto2/camera.c: Even if the camera reports success on delete_all, check if all pictures have been deleted. 2001-08-03 Lutz Müller * libgphoto2/camera.c: Not all cameras implement delete_all - fall back to deletion one by one then. 2001-07-25 Hubert Figuiere * camlibs/kodak/CAMERAS: initial revision. 2001-07-09 Hubert Figuiere * camlibs/kodak/dc240/dc240.c: * camlibs/kodak/dc240/library.[c,h]: stricter typing of prototypes using const. 2001-07-09 Hubert Figuiere * camlibs/kodak/dc240/dc240.c: added USB support for DC280, DC3400 and DC5000. 2001-07-04 Hubert Figuiere * camlibs/kodak/dc240/library.c: close bugs #438161 and #438155. 2000-08-20 15:47 scottf * libgphoto2/library.c: minor formatting changes 2000-08-20 15:44 scottf * libgphoto2/: core.c, file.c, settings.c: added mallocs for NULL reallocs 2000-08-20 13:29 jgangemi * frontends/gtk/configure.in: - now checks for gnome libs > 1.2.4 (needed for libglade to work) 2000-08-20 08:13 philm * camlibs/canon/: Changelog, canon.c, psa50.c: make use of gp_config_set/get instead of own file to save settings 2000-08-20 06:44 philm * camlibs/canon/: Changelog, TODO, canon.c, serial.c: USB now works thanks to the help of James Tappin and Tuomas Jormola. 2000-08-19 11:53 jgangemi * frontends/gtk/src/main.c: - gphoto-backend correctly initalized 2000-08-19 11:52 jgangemi * frontends/gtk/src/Makefile.am: - now we look in the dialogs directory too! 2000-08-19 11:51 jgangemi * frontends/gtk/configure.in: - added src/dialogs/Makefile 2000-08-19 11:22 philm * camlibs/canon/serial.c: fixed another type in serial.c 2000-08-19 11:13 jgangemi * frontends/gtk/configure.in: - more verbose output if libglade fails 2000-08-19 10:33 philm * camlibs/canon/serial.c: fixed a typo in serial.c 2000-08-19 04:34 scottf * camlibs/fujitsu/fujitsu.c: updated the supported camera list 2000-08-18 20:47 jgangemi * frontends/gtk/src/main.c: - adding gnome support (by by Lutz_Müller) 2000-08-18 20:45 jgangemi * frontends/gtk/src/Makefile.am: - adding gnome support (by Lutz_Müller) - now uses gpio-config 2000-08-18 20:44 jgangemi * frontends/gtk/: acconfig.h, configure.in: - adding gnome support (by Lutz_Müller) 2000-08-18 17:24 scottf * configure.in, libgphoto2/core.c, libgphoto2/core.h, libgphoto2/settings.c: implemented id-based settings system 2000-08-18 12:35 scottf * frontends/gtk-old/src/util.c: removed debug statement. whoops. :P 2000-08-18 12:33 scottf * frontends/gtk-old/src/: callbacks.c, interface.c, util.c, util.h: added option to open image in viewer/editor after download 2000-08-18 11:34 scottf * camlibs/canon/serial.c: minor update in serial.c for latest libusb (usb_device members names changed) 2000-08-17 17:08 scottf * camlibs/directory/directory.def: whoops. overwrote the directory.def file. fixed 2000-08-17 17:06 scottf * camlibs/directory/directory.c, camlibs/directory/directory.def, frontends/command-line/main.c: fixing directory browse lib 2000-08-17 15:48 scottf * camlibs/directory/directory.c, frontends/gtk-old/src/main.c: directory browse now uses GPIO_DIR macros for portability. gphoto2_gtk updated for frontend_register functionality 2000-08-17 15:18 scottf * camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/library.c, libgphoto2/file.c: minor edits 2000-08-17 10:54 scottf * camlibs/directory/Makefile.am, camlibs/directory/directory.c, frontends/command-line/interface.h, frontends/command-line/main.c, include/gphoto2-datatypes.h, libgphoto2/core.c: fixed frontend_register function (name-space conflict) 2000-08-17 10:35 scottf * camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/library.c, camlibs/fujitsu/library.h, frontends/command-line/main.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2.h, libgphoto2/core.c, libgphoto2/library.c, libgphoto2/settings.c: fixing little things 2000-08-17 06:36 philm * frontends/gtk-old/src/Makefile.am: fixed Makefile.am to use gpio-config 2000-08-17 04:30 mariusz * configure.in: Solaris workaround for tr and grep fixed 2000-08-17 03:05 philm * camlibs/canon/: Changelog, canon.c, psa50.c, serial.c: fixed USB compilation, but does it work? 2000-08-16 15:12 scottf * include/gphoto2.h, libgphoto2/core.c, libgphoto2/exif.h, libgphoto2/library.c, libgphoto2/library.h: fixed minor issues 2000-08-16 07:46 mariusz * configure.in: fixed problems with Solaris tr (ranges) and grep (-E option) 2000-08-16 07:40 mariusz * frontends/command-line/main.c: reverse order for image deleting in cli 2000-08-15 19:33 jgangemi * frontends/gtk/src/: gp_util.c, gp_util.h: - added gp_idle - completed gp_interface_message_long - create_message_win_long unimplemented - completed gp_interface_message - create_message_win unimplemented 2000-08-15 19:28 jgangemi * frontends/gtk/src/: interface.c, interface.h: - added create_message_win_long stub - added create_message_win stub 2000-08-15 13:49 scottf * libgphoto2/: library.c, library.h: quick define changes 2000-08-15 11:42 philm * camlibs/canon/: Changelog, TODO, canon.c, psa50.c, psa50.h, serial.c, serial.h, util.c, util.h: created a working camera_config_set functions (saves debug level and owner name). modified heavily the driver to use the camlib_data struct to store all the variables which were previously global. The driver should now be able to use more than one Canon camera at a time (not tested). 2000-08-14 20:35 jgangemi * frontends/gtk/src/camera_util.h: - finished config_camera_cb - still need to add gp_message calls and implement build/retrieve rec routines 2000-08-14 20:31 jgangemi * frontends/gtk/src/callbacks.c: - finished config_camera_cb - still need to add gp_message calls and implement the build/retrieve routines 2000-08-14 20:30 jgangemi * frontends/gtk/src/camera_util.c: - moved gp_gtk_camera* to gp_util 2000-08-14 20:29 jgangemi * frontends/gtk/src/: gp_util.c, gp_util.h: - new files : contains all gp_* routines - added stubs for some routines so interface compiles - gp_debug_print now functional 2000-08-14 20:27 jgangemi * frontends/gtk/src/Makefile.am: - added a few more files to compile 2000-08-13 21:45 jgangemi * frontends/gtk/src/interface.c: - added some interface menus, work on local file listings 2000-08-13 21:44 jgangemi * frontends/gtk/src/: callbacks.c, callbacks.h: - added some new callbacks 2000-08-13 21:43 jgangemi * frontends/gtk/src/globals.h: - global vars here 2000-08-13 21:42 jgangemi * frontends/gtk/src/: tree_list_util.c, tree_list_util.h: - all functions involving trees reside here - these mainly deal w/ the directory structures and manipulation of the local and camera file system 2000-08-13 21:41 jgangemi * frontends/gtk/src/: camera_util.c, camera_util.h: - all interface funcs to the camera will reside here - see the README file one level up 2000-08-13 21:39 jgangemi * frontends/gtk/src/Makefile.am: added files for compiling 2000-08-13 21:39 jgangemi * frontends/gtk/README: read me - i've got some "standards" listed here 2000-08-12 13:06 scottf * camlibs/konica/: konica.c, konica.h, library.c, lowlevel.c, localization/data_english.c30, localization/data_french.c30: added patches from Lutz. now supports localization 2000-08-11 04:24 simpson2 * camlibs/makefile.os2, camlibs/barbie/makefile.os2, camlibs/canon/makefile.os2, camlibs/canon/serial.c, camlibs/digita/makefile.os2, camlibs/directory/makefile.os2, camlibs/sonydscf1/Makefile.am, camlibs/sonydscf1/chotplay.c, camlibs/sonydscf1/makefile.os2, camlibs/sonydscf1/sonydscf1.c, frontends/command-line/makefile.os2, frontends/libgphoto2_frontend/makefile.os2, include/gphotoos2.h, libgphoto2/core.c, libgphoto2/file.c, libgphoto2/fs.c, libgphoto2/makefile.os2: bvl: Updated OS/2 makefile and made a start with modifying the sony lib 2000-08-10 17:16 scottf * camlibs/canon/serial.c: removed reference to gpio/gpio.h in favor of just gpio.h 2000-08-10 16:36 scottf * camlibs/fujitsu/: fujitsu.c, fujitsu.h: added generic USB support to fujitsu library. just put in vendor/product/endpoints for any camera and it will be supported 2000-08-10 16:19 scottf * camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/fujitsu.h, camlibs/fujitsu/library.c, frontends/command-line/main.c, include/gphoto2-datatypes.h: optimized the fujitsu USB support. little change in folder-display in the cli 2000-08-10 16:04 scottf * camlibs/canon/canon.c: quick typecast change 2000-08-10 15:48 scottf * libgphoto2/fs.c: fixed filesystem deletion bug (yuck) 2000-08-10 14:48 philm * camlibs/canon/: Changelog, canon.c, psa50.c: changed camera_summary to report battery status. 2000-08-10 13:43 philm * camlibs/canon/: Changelog, TODO, canon.c, psa50.c, psa50.h: added psa50_set_time. added some widget to the config dialog box. 2000-08-09 18:22 philm * camlibs/canon/: Changelog, Protocol, canon.c, psa50.c: changed timeout for initialization from 1000 to 900 because with 1000 it was working on command line but not GUI. started a configure dialog box. changed gp_file_list to use gp_list_append. 2000-08-09 18:17 scottf * camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/fujitsu.h, camlibs/fujitsu/library.c, camlibs/fujitsu/library.h, camlibs/panasonic/.cvsignore, libgphoto2/fs.c: added USB support to the fujitsu library 2000-08-09 14:44 philm * camlibs/canon/canon.c: changed a sprintf to strcpy in canon.c (avoids a coredumps (?)) 2000-08-09 14:14 scottf * camlibs/fujitsu/: fujitsu.c, fujitsu.h, library.c: adding USB support to fujitsu. it's failing right now. blech. 2000-08-08 19:35 scottf * include/gphoto2-datatypes.h: modified cameralistentry 2000-08-08 15:43 scottf * camlibs/konica/: konica.c, konica.h, library.c, library.h, lowlevel.c, lowlevel.h: added Lutz's patches for filename-centric API 2000-08-08 15:33 philm * camlibs/canon/serial.c: Fixed typo in serial.c 2000-08-08 15:04 scottf * frontends/command-line/main.c: fixed get-all-pictures bug that crashed the CLI (for_each_image was being called with NULL folder) 2000-08-08 15:00 scottf * frontends/gtk-old/src/: callbacks.c, interface.c: updated gtk-old to new API 2000-08-08 14:59 philm * camlibs/canon/: TODO, canon.c, psa50.c, psa50.h, serial.c: Upload preliminary support for testing. 2000-08-08 12:56 philm * camlibs/canon/: Changelog, TODO: TODO and Changelog files created. 2000-08-08 12:38 philm * camlibs/canon/: canon.c, serial.c: Bug for setting attributes corrected. changed canon_serial_send to speed up for all cameras but A50 which does not like getting too much data in a row. 2000-08-08 12:10 mariusz * camlibs/panasonic/dc1580.c: bug related to abilities fixed 2000-08-06 06:01 mariusz * camlibs/panasonic/: README, dc1000.c, dc1580.c: abilities accomodated to the new API 2000-08-05 09:57 mariusz * camlibs/panasonic/: README, dc.h, dc1000.c, dc1580.c: filename based communication between library and core 2000-08-05 05:35 philm * camlibs/canon/canon.c: camera_file_delete updated to the filename API 2000-08-05 04:55 philm * camlibs/canon/: Makefile.am, README, canon.c, psa50.c, serial.c, serial.h: Updated library to the filename based API. PowerShot A5 support must be updated to the new API. Deletion of pics does not yet work. USB is not updated to the changes in libgpio. 2000-08-04 20:29 scottf * docs/: camlib_devel.sgml, camlib_devel.txt: updated linuxdoc and plaintext camlib developer docs 2000-08-04 18:09 scottf * camlibs/barbie/barbie.c, camlibs/digita/digita.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, docs/camlib_devel.lyx, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/globals.h, libgphoto2/library.c: changed camera_id and camera_abilities prototypes. this should be the start of stability for the API 2000-08-04 17:09 jerdfelt * include/gphoto2-datatypes.h: Clean up type definitions and prototypes. Some minor formatting changes for consistency 2000-08-04 17:07 jerdfelt * camlibs/digita/: digita.c, usb.c: Get it to atleast compile again 2000-08-04 17:04 jerdfelt * camlibs/: canon/.cvsignore, konica/.cvsignore: Update .cvsignore 2000-08-04 17:04 jerdfelt * camlibs/canon/canon.c: Spaces to TABs 2000-08-04 17:02 jerdfelt * libgphoto2/.cvsignore: Wildcard .lo 2000-08-04 17:01 jerdfelt * configure.in: Fix alignment for camera help 2000-08-04 17:01 jerdfelt * camlibs/sonydscf1/: .cvsignore, Makefile.am: Standard files 2000-08-04 15:32 scottf * camlibs/barbie/barbie.c, camlibs/canon/canon.c, camlibs/digita/digita.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/library.c, camlibs/konica/library.c, camlibs/panasonic/dc1000.c, camlibs/panasonic/dc1580.c, camlibs/sonydscf1/sonydscf1.c, camlibs/template/template.c, docs/camlib_devel-portmon.eps, docs/camlib_devel-repeater.eps, docs/camlib_devel-y.eps, docs/camlib_devel.lyx, docs/camlib_devel.txt, include/gphoto2-library.h, libgphoto2/library.c: changed prototype for camera_id to use CameraText (sorry everyone\!) 2000-08-04 14:59 jerdfelt * libgphoto2/core.c: Standardize formatting a little bit 2000-08-04 14:52 jerdfelt * include/gphoto2-datatypes.h: Tabs before everything? Call me anal, but I think this is more readable :) 2000-08-04 11:38 scottf * frontends/command-line/main.c: fixed thumbnail naming buggy 2000-08-03 17:47 scottf * camlibs/barbie/barbie.c, camlibs/barbie/barbie.h, camlibs/barbie/library.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, frontends/command-line/main.c, frontends/gtk-old/src/callbacks.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/fs.c: changed to newer API version. completely filename based, more atomic to make way for camera locking 2000-08-03 16:13 scottf * configure.in, camlibs/NOTES, camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/fujitsu.h, camlibs/sonydscf1/chotplay.c, camlibs/sonydscf1/sonydscf1.c, frontends/command-line/main.c: moved to filename-based system. tested (pretty well) and working with barbie, directory, and fujitsu libraries 2000-08-02 10:38 scottf * DAEMON, camlibs/barbie/Makefile.am, camlibs/barbie/barbie.c, camlibs/barbie/barbie.h, camlibs/barbie/library.c, camlibs/barbie/library.h, camlibs/barbie/makefile.os2, frontends/command-line/main.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/Makefile.am, libgphoto2/core.c, libgphoto2/fs.c, libgphoto2/fs.h, libgphoto2/library.c: changing to filename based system 2000-08-01 15:03 scottf * camlibs/directory/directory.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, libgphoto2/widget.c: revised widget system (a little) 2000-08-01 15:00 scottf * frontends/gtk-old/src/callbacks.c: fixed configuration bug (radio buttons). updated to newer widget revision 2000-08-01 12:31 scottf * camlibs/fujitsu/fujitsu.c: added folder support patch from Veros Kaplan (thanks Veros\!) 2000-08-01 12:17 scottf * include/gphoto2-datatypes.h: fixed abilities bug 2000-07-31 19:10 scottf * camlibs/: canon/psa50.c, canon/serial.c, digita/digita.c, digita/usb.c: updated for new dynamic libgpio 2000-07-31 14:47 scottf * camlibs/panasonic/.cvsignore: updated .cvsignore 2000-07-31 14:46 scottf * camlibs/panasonic/: README, dc1000.c, dc1000.h: added missing panasonic files 2000-07-31 14:45 scottf * frontends/command-line/main.c, libgphoto2/Makefile.am, libgphoto2/core.c: fixed CAMLIBS directory bug 2000-07-31 11:16 scottf * camlibs/fujitsu/fujitsu.c: fixed camera_init conditional placemente (noted by Veros Kaplan) 2000-07-31 05:16 simpson2 * camlibs/digita/: digita.c, digita.h, serial.c: bvl: init structure passed to digita seial init, for serial path and speed 2000-07-30 12:59 scottf * camlibs/konica/: konica.c, konica.h, library.c: added patch from lutz to konica 2000-07-30 06:34 simpson2 * docs/build_OS2.txt: bvl: start of information on OS/2 Build 2000-07-30 05:10 simpson2 * AUTHORS, camlibs/makefile.os2, camlibs/barbie/makefile.os2, camlibs/canon/makefile.os2, camlibs/digita/makefile.os2, camlibs/directory/makefile.os2, camlibs/fujitsu/makefile.os2, camlibs/konica/makefile.os2, camlibs/panasonic/makefile.os2, camlibs/sonydscf1/makefile.os2, frontends/command-line/makefile.os2: bvl: updated OS/2 makefiles, there was a stupid machine dependant declaration in them 2000-07-29 13:28 scottf * AUTHORS: added mariusz to the AUTHORS file 2000-07-29 12:06 scottf * camlibs/: canon/canon.c, panasonic/Makefile.am, panasonic/dc.c, panasonic/dc.h, panasonic/dc1580.c, panasonic/dc1580.h: applied patches from Mariusz(panasonic) and Phillipe (canon) 2000-07-29 04:41 simpson2 * camlibs/barbie/makefile.os2, frontends/libgphoto2_frontend/makefile.os2: bvl: updated OS/2 support 2000-07-29 04:32 simpson2 * camlibs/.cvsignore: bvl: updated 2000-07-29 04:31 simpson2 * camlibs/konica/: .cvsignore, konica.df, makefile.os2: bvl: added files needed to build DLL on OS/2 2000-07-29 04:30 simpson2 * camlibs/fujitsu/.cvsignore: [no log message] 2000-07-29 04:29 simpson2 * camlibs/fujitsu/: fujitsu.df, makefile.os2: bvl: Files needed to build DLL on OS/2 2000-07-29 04:28 simpson2 * camlibs/makefile.os2, camlibs/directory/makefile.os2, frontends/command-line/makefile.os2, include/gphotoos2.h, libgphoto2/makefile.os2: bvl: various changes and updates to OS/2 specific files 2000-07-29 04:27 simpson2 * camlibs/sonydscf1/: readme, todo: [no log message] 2000-07-29 04:25 simpson2 * camlibs/sonydscf1/: chotplay.c, chotplay.h, command.c, command.h, common.h, config.h, dsc_f1.c, getuint.c, getuint.h, makefile.os2, pmp.h, sonydscf1.c, sonydscf1.df, sonydscf1.h: bvl: Support for the Sony DSC-F1, modified library from gphoto1 only tested and compiled on OS/2 2000-07-29 04:20 simpson2 * camlibs/canon/: canon.c, psa50.c, serial.c: bvl: changed include to as discussed earlier 2000-07-29 04:17 simpson2 * camlibs/: barbie/barbie.df, barbie/makefile.os2, canon/canon.df, canon/makefile.os2: bvl: added files to build DLL on OS/2 2000-07-29 04:16 simpson2 * camlibs/panasonic/: dc.c, dc1580.c, makefile.os2, panasonic.df: bvl: dc.c, dc1580.c added db.h include, to make it compile on OS/2 makefile.os2 panansonic.df files needed to build dll on OS/2 2000-07-29 04:14 simpson2 * camlibs/digita/digita.df: bvl: digita.df, module defenition file to create DLL on OS/2 2000-07-29 04:13 simpson2 * camlibs/digita/makefile.os2: bvl: makefile for OS/2 2000-07-29 04:13 simpson2 * camlibs/digita/: commands.c, digita.c, digita.h, serial.c, usb.c: bvl: Changed include file from to 2000-07-28 23:09 scottf * include/gphoto2-datatypes.h: fixed abilities->port macros to reflect renumbering of CameraPortType 2000-07-28 16:54 scottf * camlibs/panasonic/dc1580.c: replace gp_message in panasonic lib with gp_camera_message 2000-07-28 13:20 scottf * camlibs/canon/canon.c, camlibs/canon/canon.h, camlibs/canon/psa50.c, camlibs/canon/psa50.h, camlibs/fujitsu/fujitsu.c, frontends/command-line/main.c, frontends/gtk-old/src/callbacks.c, include/gphoto2-datatypes.h, libgphoto2/core.c, libgphoto2/globals.h, libgphoto2/library.c: added patch from mariusz to fix deleting bug. added canon patch from phillipe to fix thumbnailing bug and add detection of IXUS 2000-07-27 13:00 scottf * camlibs/canon/canon.c, camlibs/canon/serial.c, camlibs/konica/library.c, libgphoto2/library.c: fixed 'not a library' bug for konica and canon libraries 2000-07-27 12:30 scottf * camlibs/konica/library.c: added patch from Lutz fixing exit, and removing unneeded struct 2000-07-27 03:31 scottf * ChangeLog: updated ChangeLog 2000-07-27 00:38 scottf * frontends/gtk/configure.in: changed name of gtk from project5 to gphoto2_gtk2 for now 2000-07-27 00:37 scottf * frontends/gtk/: install-sh, missing, mkinstalldirs, intl/ChangeLog, intl/VERSION, intl/bindtextdom.c, intl/cat-compat.c, intl/dcgettext.c, intl/dgettext.c, intl/explodename.c, intl/finddomain.c, intl/gettext.c, intl/gettext.h, intl/gettextP.h, intl/hash-string.h, intl/intl-compat.c, intl/l10nflist.c, intl/libgettext.h, intl/linux-msg.sed, intl/loadinfo.h, intl/loadmsgcat.c, intl/localealias.c, intl/po2tbl.sed.in, intl/textdomain.c, intl/xopen-msg.sed: remove intl directory 2000-07-27 00:35 scottf * frontends/gtk/: aclocal.m4, config.h.in, configure, po/Makefile.in.in, po/cat-id-tbl.c, po/project5.pot, po/stamp-cat-id, src/Makefile.am: removed unnecessary files 2000-07-27 00:25 scottf * frontends/gtk/src/: tree_list_util.c, tree_list_util.h: added missing files to the gtk frontend 2000-07-26 22:46 scottf * camlibs/digita/digita.c: fixed small bug in digita abilities code (incremented pointer location, not value for some reason :P) 2000-07-26 22:44 scottf * camlibs/template/template.c: corrected template directory's port ability 2000-07-26 22:42 scottf * camlibs/: canon/.cvsignore, konica/.cvsignore: mod'd cvsignore files 2000-07-26 22:41 scottf * camlibs/digita/digita.c, camlibs/digita/digita.h, camlibs/digita/serial.c, camlibs/digita/usb.c, frontends/command-line/Makefile.am, frontends/command-line/main.c, include/gphoto2-datatypes.h, include/gphoto2.h: added digita library and command-line patch from Johannes 2000-07-26 21:33 scottf * camlibs/: canon/Makefile, canon/Makefile.in, konica/Makefile.in: removed Makefile[.in] from canon and konica libs 2000-07-26 21:06 scottf * docs/: .cvsignore, camlib_devel.lyx, camlib_devel.sgml, camlib_devel.txt, frontend_devel.lyx, frontend_devel.sgml, frontend_devel.txt: starting to write the docs. outlined structure 2000-07-26 20:43 scottf * docs/: camlib_devel.lyx, camlib_devel.sgml, frontend_devel.lyx, frontend_devel.sgml: adding skeletons for the docs 2000-07-26 20:26 scottf * docs/: camlib_devel.txt, frontend_devel.txt: starting developer documentation 2000-07-26 20:22 scottf * frontends/gtk/src/Makefile.am: small Makefile.am change to gtk 2000-07-26 19:55 scottf * frontends/gtk-old/files.list: removed files.list 2000-07-26 14:36 scottf * frontends/gtk/autogen.sh: added autogen.sh 2000-07-26 14:34 scottf * frontends/gtk/: ABOUT-NLS, AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am, NEWS, README, acconfig.h, aclocal.m4, config.h.in, configure, configure.in, install-sh, missing, mkinstalldirs, stamp-h.in, intl/ChangeLog, intl/VERSION, intl/bindtextdom.c, intl/cat-compat.c, intl/dcgettext.c, intl/dgettext.c, intl/explodename.c, intl/finddomain.c, intl/gettext.c, intl/gettext.h, intl/gettextP.h, intl/hash-string.h, intl/intl-compat.c, intl/l10nflist.c, intl/libgettext.h, intl/linux-msg.sed, intl/loadinfo.h, intl/loadmsgcat.c, intl/localealias.c, intl/po2tbl.sed.in, intl/textdomain.c, intl/xopen-msg.sed, pixmaps/camera.xpm, pixmaps/close_image.xpm, pixmaps/configure.xpm, pixmaps/delete_images.xpm, pixmaps/exit.xpm, pixmaps/fliph.xpm, pixmaps/flipv.xpm, pixmaps/folder.xpm, pixmaps/get_index.xpm, pixmaps/get_index_empty.xpm, pixmaps/get_selected_images.xpm, pixmaps/no_thumbnail.xpm, pixmaps/open_image.xpm, pixmaps/print_image.xpm, pixmaps/refresh.xpm, pixmaps/resize.xpm, pixmaps/rotc.xpm, pixmaps/save_current_image.xpm, po/ChangeLog, po/Makefile.in.in, po/POTFILES.in, po/cat-id-tbl.c, po/project5.pot, po/stamp-cat-id, src/Makefile.am, src/callbacks.c, src/callbacks.h, src/interface.c, src/interface.h, src/main.c, src/support.c, src/support.h: added new gtk inteface beginning code 2000-07-26 14:25 scottf * frontends/gtk-old/: po/.cvsignore, src/.cvsignore: whoops. fixed cvsignore in gtk-old 2000-07-26 14:24 scottf * camlibs/: canon/.cvsignore, konica/.cvsignore, konica/localization/data_english.c30, konica/localization/data_french.c30, panasonic/.cvsignore: updated all .cvsignore files 2000-07-26 14:21 scottf * frontends/gtk-old/: .cvsignore, po/.cvsignore, src/.cvsignore: updated .cvsignore files 2000-07-26 14:14 scottf * configure.in, camlibs/barbie/barbie.c, camlibs/canon/Makefile, camlibs/canon/Makefile.am, camlibs/canon/Makefile.in, camlibs/directory/directory.c, camlibs/konica/konica.c, camlibs/konica/konica.h, camlibs/konica/library.c, camlibs/konica/lowlevel.c, camlibs/konica/lowlevel.h, frontends/command-line/main.c, frontends/gtk-old/src/callbacks.c, frontends/gtk-old/src/globals.h, frontends/gtk-old/src/interface.c, frontends/gtk-old/src/interface.h, frontends/gtk-old/src/main.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2.h, libgphoto2/core.c, libgphoto2/library.c: updated gtk-old interface to new object-oriented API 2000-07-25 16:58 ole * camlibs/canon/Makefile.am: Fix libgphoto2_canon_la_LDFLAGS 2000-07-25 14:26 scottf * include/gphoto2-core.h, include/gphoto2-datatypes.h, libgphoto2/core.c: added gp_camera_free(). added some error checking 2000-07-25 14:03 scottf * configure.in, camlibs/barbie/barbie.c, camlibs/barbie/barbie.h, camlibs/canon/Makefile, camlibs/canon/canon.c, camlibs/canon/psa50.c, camlibs/canon/psa50.h, camlibs/canon/serial.c, camlibs/digita/digita.c, camlibs/directory/directory.c, camlibs/directory/directory.h, camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/fujitsu.h, camlibs/fujitsu/library.c, camlibs/fujitsu/library.h, camlibs/konica/library.c, camlibs/panasonic/dc1580.c, camlibs/template/template.c, frontends/command-line/interface.c, frontends/command-line/main.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-interface.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/core.h, libgphoto2/file.c, libgphoto2/globals.h, libgphoto2/library.c, libgphoto2/library.h: moved to object-oriented Camera* design 2000-07-25 13:02 scottf * camlibs/canon/: Makefile, Makefile.am, Makefile.in, Protocol, README, canon.c, canon.h, crc.c, crc.h, mkpatch, psa50.c, psa50.h, serial.c, serial.h, util.c, util.h, ps350/COPYING, ps350/README, ps350/SerialIn, ps350/compu1, ps350/compu3, ps350/compu3c, ps350/compu3d, ps350/compu3e-4, ps350/compu3f, ps350/compu5, ps350/compu6, ps350/notes.txt, ps350/ps350chk.c, ps350/ps350init, ps350/ps350proto.txt, ps350/renamejpg.c: added canon lib\!\! 2000-07-24 13:43 scottf * configure.in: added comma :P 2000-07-24 03:47 simpson2 * makefile.os2, camlibs/makefile.os2, camlibs/directory/directory.def, camlibs/directory/makefile.os2, frontends/command-line/main.c, frontends/command-line/makefile.os2, include/gphoto2.h, include/gphotoos2.h, libgphoto2/library.c, libgphoto2/makefile.os2: bvl: Made some linebreak statments, and ifdef correction on behalf of the OS/2 port 2000-07-22 14:47 scottf * camlibs/: directory/directory.c, fujitsu/fujitsu.c: minor config_set/get bug fix 2000-07-22 14:34 scottf * camlibs/fujitsu/fujitsu.c, frontends/gtk-old/src/callbacks.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, libgphoto2/core.c, libgphoto2/widget.c: added dynamic configuration support. 2000-07-21 21:59 scottf * frontends/gtk-old/src/callbacks.c, frontends/gtk-old/src/util.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, libgphoto2/widget.c: fixed nasty recursive gp_widget_free bug. blech. 2000-07-21 20:06 scottf * camlibs/fujitsu/fujitsu.c, frontends/gtk-old/src/callbacks.c, include/gphoto2-datatypes.h, libgphoto2/widget.c: reworked widget system a little. added more functions 2000-07-21 16:14 scottf * frontends/gtk-old/src/callbacks.c, libgphoto2/widget.c: adding configuration support to GTK frontend 2000-07-21 14:55 scottf * camlibs/fujitsu/fujitsu.c, frontends/command-line/test.c, frontends/gtk-old/src/callbacks.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, libgphoto2/core.c, libgphoto2/widget.c: widget system is now working\! adding support to GTK frontend 2000-07-21 14:15 scottf * acconfig.h, configure.in, camlibs/Makefile.am, camlibs/konica/Makefile.in, camlibs/panasonic/dc.c, camlibs/panasonic/dc.h, camlibs/panasonic/dc1580.c, camlibs/panasonic/dc1580.h, frontends/command-line/.cvsignore, libgphoto2/file.c, libgphoto2/library.c: added a bunch of patchs from Johannes and Mariusz 2000-07-21 14:15 scottf * camlibs/digita/: .cvsignore, Makefile.am, commands.c, digita.c, digita.h, serial.c, usb.c: adding .cvsignor for digita driver dir 2000-07-19 21:55 scottf * camlibs/directory/directory.c: added more image file types to directory browse lib 2000-07-19 21:43 scottf * camlibs/fujitsu/fujitsu.c, frontends/gtk-old/src/callbacks.c: added more cameras to the supported camera list 2000-07-19 21:37 scottf * camlibs/barbie/barbie.c: renamed the camera models 2000-07-19 21:20 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/konica/library.c, camlibs/panasonic/dc1580.c, camlibs/template/template.c, frontends/command-line/main.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/core.h: changed _manual, _about, and _summary to use CameraText to guarantee 32k of text space 2000-07-19 20:59 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/konica/library.c, camlibs/panasonic/dc1580.c, frontends/command-line/main.c, include/gphoto2-datatypes.h, libgphoto2/util.c: changed abilities.(serial, parallel, usb, ...) to just ORing of abilities.port 2000-07-19 20:36 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/panasonic/dc1580.c, camlibs/template/template.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/core.h: updated camera_capture prototype 2000-07-19 20:23 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/konica/library.c, camlibs/panasonic/dc1580.c, camlibs/template/template.c, frontends/libgphoto2_frontend/cache.c, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/file.c: converted over to using mime types in CameraFile->type 2000-07-19 20:07 scottf * configure.in, camlibs/konica/COPYING, camlibs/konica/ChangeLog, camlibs/konica/EXPERTS, camlibs/konica/Makefile.am, camlibs/konica/Makefile.in, camlibs/konica/README, camlibs/konica/TODO, camlibs/konica/konica.c, camlibs/konica/konica.h, camlibs/konica/library.c, camlibs/konica/lowlevel.c, camlibs/konica/lowlevel.h: added konica library. thanx Lutz\! 2000-07-19 19:24 scottf * camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/library.c, frontends/gtk-old/src/callbacks.c, frontends/gtk-old/src/interface.c, libgphoto2/core.c, libgphoto2/library.c, libgphoto2/util.c: fixed camera abilities bug. finishing gtk frontend. fixed minor bug in fujitsu lib 2000-07-19 18:58 scottf * camlibs/fujitsu/fujitsu.c: added camera_stop to the end of _init 2000-07-19 18:45 scottf * camlibs/fujitsu/README: updated README 2000-07-19 18:44 scottf * camlibs/fujitsu/library.c: hell. removed all usleeps and it's much quicker now. errors are recovered (if they ever pop up) 2000-07-19 18:41 scottf * camlibs/fujitsu/fujitsu.c: removed guts of camera_exit. not needed now. 2000-07-19 18:39 scottf * camlibs/fujitsu/fujitsu.c: wrapped folder_set and file_count in start/stop functions 2000-07-19 18:36 scottf * camlibs/fujitsu/fujitsu.c, frontends/gtk-old/src/callbacks.c: gtk-old is working. good to go\! 2000-07-19 18:30 scottf * camlibs/fujitsu/library.c: scaled percentage value 2000-07-19 18:28 scottf * camlibs/fujitsu/library.c: reduced timeout. faster now. 2000-07-19 18:27 scottf * camlibs/fujitsu/: fujitsu.c, library.c: error recovery is a good thing. now nak's incomplete packets and reads again 2000-07-19 18:00 scottf * camlibs/fujitsu/library.c: increased timeout to let camera catch up 2000-07-19 17:56 scottf * camlibs/fujitsu/fujitsu.c: hacked around idle camera bug. camera didn't like sitting idle between operations. 2000-07-19 16:53 scottf * camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/library.c, frontends/command-line/main.c, frontends/gtk-old/AUTHORS, frontends/gtk-old/MANUAL, frontends/gtk-old/src/callbacks.c, frontends/gtk-old/src/callbacks.h, frontends/gtk-old/src/gtkiconlist.c, frontends/gtk-old/src/gtkitementry.c, frontends/gtk-old/src/interface.c, frontends/gtk-old/src/interface.h, frontends/gtk-old/src/util.c, frontends/gtk-old/src/util.h: almost done on new gtk-old interface. fixing fujitsu library bugs. 2000-07-19 15:07 scottf * camlibs/directory/directory.c: fixed preview naming bug 2000-07-19 13:08 scottf * libgphoto2/file.c: null terminater the file->data in gp_file_open 2000-07-19 11:35 scottf * frontends/gtk-old/src/: callbacks.c, callbacks.h, interface.c: finished the save dialog. just need to save now 2000-07-19 11:04 scottf * frontends/gtk-old/acinclude.m4: added DOCDIC macro to build (thanks Ole) 2000-07-19 11:03 scottf * frontends/gtk-old/pixmaps/refresh.xpm: added refresh button 2000-07-18 20:08 scottf * frontends/gtk-old/src/: callbacks.c, interface.c, interface.h, util.c, util.h: finishing up gtk-old. adding saving functionality. 2000-07-18 17:28 scottf * frontends/gtk-old/src/: callbacks.c, gtkiconlist.lo, interface.c: how'd that object file get in there? whoops. it was me. :P 2000-07-18 17:22 scottf * COPYING: Put in copy of LGPL 2000-07-18 17:21 scottf * camlibs/directory/directory.c: added manual and summary to directory lib 2000-07-18 17:08 scottf * frontends/gtk-old/: AUTHORS, acconfig.h, configure.in, src/callbacks.c, src/interface.c, src/interface.h: added help menu items 2000-07-18 16:22 scottf * include/gphoto2.h: removed gpio.h reference from gphoto2.h (didn't need it) 2000-07-18 16:17 scottf * frontends/gtk-old/: COPYING, INSTALL: whoops. needed to add COPYING file and INSTALL :P 2000-07-18 16:17 scottf * frontends/gtk-old/: Makefile.am, src/callbacks.c: updated COPYING file and INSTALL 2000-07-18 16:12 scottf * camlibs/fujitsu/library.c, camlibs/template/template.c, include/gphoto2.h: finished replacing with 2000-07-18 16:10 scottf * camlibs/barbie/barbie.c, camlibs/fujitsu/fujitsu.c, camlibs/panasonic/dc.h, frontends/gtk-old/MANUAL, frontends/gtk-old/Makefile.am, frontends/gtk-old/src/callbacks.c, frontends/gtk-old/src/interface.c, libgphoto2/Makefile.am, libgphoto2/core.c: replaced all #include with #include for portability (so other non-development oriented platforms can compile without installing) 2000-07-18 15:31 scottf * frontends/gtk-old/.cvsignore: added cvsignore to gtk-old 2000-07-18 14:38 scottf * AUTHORS: minor AUTHORS change. 2000-07-18 14:38 scottf * frontends/gtk-old/configure.in, frontends/gtk-old/src/callbacks.c, frontends/gtk-old/src/interface.c, frontends/gtk-old/src/interface.h, libgphoto2/file.c: added AUTHORS file to install. 2000-07-18 14:13 scottf * .cvsignore, AUTHORS, Makefile.am, acconfig.h, configure.in, camlibs/.cvsignore, camlibs/Makefile.am, camlibs/NOTES, camlibs/barbie/.cvsignore, camlibs/directory/.cvsignore, camlibs/fujitsu/.cvsignore, frontends/.cvsignore, frontends/command-line/.cvsignore, frontends/command-line/main.c, frontends/gtk-old/configure.in, frontends/gtk-old/src/callbacks.c, frontends/gtk-old/src/interface.c, frontends/libgphoto2_frontend/.cvsignore, include/.cvsignore, libgphoto2/Makefile.am: added patch for --get-picture (correctly reports error message now) from Mariusz. patched cvsignore patch from Johannes. 2000-07-18 13:25 scottf * camlibs/panasonic/dc.c, camlibs/panasonic/dc.h, camlibs/panasonic/dc1580.c, camlibs/panasonic/dc1580.h, frontends/command-line/main.c, libgphoto2/core.c: updated panansonic library. Thanx Mariusz 2000-07-17 19:28 scottf * frontends/gtk-old/src/: callbacks.c, callbacks.h, gtkiconlist.c, gtkiconlist.h: fixed nasty bug with gtkiconlist. not thread safe. 2000-07-17 16:44 scottf * frontends/gtk-old/src/: callbacks.c, callbacks.h, interface.c: rearranged toolbar. added refresh button. removed index buttons. 2000-07-17 12:46 ole * libgphoto2/core.c: Added #ifdef's for GPIO_USB, GPIO_IEEE1394 and GPIO_NETWORK 2000-07-17 12:43 ole * frontends/command-line/main.c: Replaced conflicting delacaration of 'daemon' in unistd.h with 'daemonmode' 2000-07-17 12:26 scottf * include/gphotoos2.h: edited gphotoos2.h. 2000-07-17 12:11 scottf * configure.in, makefile.os2, camlibs/makefile.os2, camlibs/directory/directory.c, camlibs/directory/directory.def, camlibs/directory/makedll.cmd, camlibs/directory/makefile.os2, camlibs/fujitsu/fujitsu.c, camlibs/panasonic/dc1580.c, frontends/command-line/main.c, frontends/command-line/makefile.os2, include/gphoto2.h, include/gphotoos2.h, libgphoto2/library.c, libgphoto2/makefile.os2: added os2 support. Thank Bart a lot, OS2 users :) 2000-07-17 11:54 scottf * camlibs/panasonic/: dc.c, dc1580.c: small workaround for uint8_t and uint32_t (#defines) 2000-07-17 11:45 scottf * camlibs/: Makefile.am, panasonic/Makefile.am, panasonic/dc.c, panasonic/dc.h, panasonic/dc1580.c, panasonic/dc1580.h: Added panasonic library. Thanx Mariusz. 2000-07-14 21:27 scottf * frontends/gtk-old/src/: callbacks.c, callbacks.h, globals.h, interface.c, main.c: added file deletion to gtk-old. now icon list updates on resizing (neat). only a couple things left :) 2000-07-14 19:08 scottf * frontends/gtk-old/src/: callbacks.c, gtkiconlist.c, gtkitementry.c, interface.c: selecting thumbnails works (small hack in gtkiconlist.c) 2000-07-14 17:55 scottf * frontends/gtk-old/src/: callbacks.c, callbacks.h, globals.h, interface.c, interface.h, main.c: wow. folder listing is working nicely. added new progress window (percent and message included with cancel button). 2000-07-14 17:53 scottf * libgphoto2/core.c: core will now sort the folder list before passing it back to the front-end (how nice ;) 2000-07-14 15:32 scottf * camlibs/directory/directory.c: fixed getting multiple indexes error 2000-07-14 15:14 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/fujitsu.h, camlibs/fujitsu/library.c, camlibs/fujitsu/library.h, camlibs/template/template.c, frontends/command-line/main.c, frontends/command-line/test.c, frontends/gtk-old/src/main.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/core.h, libgphoto2/library.c, libgphoto2/util.c, libgphoto2/util.h: remove camera_debug_set function, moved to CameraInit flag 2000-07-13 20:06 scottf * frontends/gtk-old/src/callbacks.c: whoops. file_get changed to file_get_preview in the indexing function :P MUCH faster now. sheesh. 2000-07-13 20:01 scottf * frontends/gtk-old/src/: callbacks.c, gtkiconlist.c, gtkiconlist.h, interface.c, util.c, util.h: indexing is working. camera folder browsing is working. directory browse works (will index any directory) 2000-07-13 16:33 scottf * libgphoto2/: core.c, library.c: fixed previous sorting error (forgot to sort the camera abilities with the camera list). blech blech blech 2000-07-13 16:09 scottf * libgphoto2/library.c: camera list is now sorted 2000-07-13 16:01 scottf * camlibs/directory/directory.c, include/gphoto2-datatypes.h: sped up directory browse functionality overall 2000-07-13 16:00 scottf * frontends/gtk-old/src/: callbacks.c, callbacks.h, interface.c, main.c: folder browsing and setting now working 2000-07-13 15:09 scottf * camlibs/directory/directory.c: fixed crashing from NULL pointer 2000-07-13 13:37 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, frontends/gtk-old/pixmaps/folder.xpm, frontends/gtk-old/src/callbacks.c, frontends/gtk-old/src/callbacks.h, frontends/gtk-old/src/interface.c, include/gphoto2-library.h: removed camerafolderlist entry requirement (was silly) 2000-07-13 13:29 scottf * frontends/gtk-old/pixmaps/: camera.xpm, folder.xpm, no_thumbnail.xpm: whoops. forgot pixmaps 2000-07-13 13:29 scottf * frontends/gtk-old/src/: callbacks.c, callbacks.h, interface.c, main.c: adding folder tree on left 2000-07-12 20:55 scottf * frontends/gtk-old/src/: callbacks.c, gtkiconlist.c, gtkiconlist.h, gtkiconlist.lo, gtkitementry.c, gtkitementry.h, interface.c: added icon list from gtkiconlist and some beginning index code (not much) 2000-07-12 17:45 scottf * camlibs/fujitsu/fujitsu.c, frontends/command-line/main.c, frontends/gtk-old/src/Makefile.am, frontends/gtk-old/src/callbacks.c, frontends/gtk-old/src/interface.c: starting thumbnail index. gdk-pixbuf rocks. 2000-07-12 17:44 scottf * libgphoto2/settings.c: fixed load_settings bug that let null values crash the core (blech) 2000-07-11 19:33 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, frontends/command-line/main.c, frontends/command-line/test.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, libgphoto2/core.c, libgphoto2/core.h, libgphoto2/library.c: done for the day 2000-07-11 19:33 scottf * frontends/gtk-old/src/: callbacks.c, callbacks.h, main.c, util.c: camera changes go smoothly. 2000-07-11 19:32 scottf * camlibs/fujitsu/: fujitsu.c, library.c: fixed detection of folders 2000-07-11 18:19 scottf * camlibs/fujitsu/fujitsu.c: fixed timing issues (slowed down read/write) 2000-07-11 18:00 scottf * frontends/gtk-old/src/: Makefile.am, callbacks.c, globals.h, interface.c, interface.h, main.c, util.c: camera info/manual/about working. doesn't init() at start-up (waits for camera-related function 2000-07-11 17:26 scottf * camlibs/fujitsu/fujitsu.c: fixed get_int_register bug (no ack) 2000-07-11 16:06 scottf * camlibs/fujitsu/: fujitsu.c, library.c: added 460Z to list of supported cameras 2000-07-11 15:32 scottf * camlibs/fujitsu/: fujitsu.c, library.c: fixed camera_exit bug 2000-07-11 14:31 scottf * frontends/gtk-old/src/: callbacks.c, globals.h, interface.c, main.c: camera selection dialog working 2000-07-10 19:16 scottf * frontends/gtk-old/src/: callbacks.c, callbacks.h, globals.h, interface.c, main.c, util.c, util.h: diggin in to the old gtk interface. camera/selection working (well, sort of) 2000-07-10 17:52 scottf * DAEMON, frontends/command-line/main.c: added daemon description, and flag for command-line 2000-07-10 15:08 scottf * frontends/command-line/Makefile.am, frontends/command-line/interface.c, frontends/command-line/main.c, frontends/gtk-old/src/interface.c, frontends/gtk-old/src/interface.h, frontends/libgphoto2_frontend/cache.c, frontends/libgphoto2_frontend/gphoto2-frontend.h, frontends/libgphoto2_frontend/helpers.c, frontends/libgphoto2_frontend/image.c, frontends/libgphoto2_frontend/script.c, include/gphoto2-interface.h, libgphoto2/core.c: renamed interface_* to gp_interface_*. changed command-line numbering to begin at 1 2000-07-10 10:27 scottf * frontends/libgphoto2_frontend/: Makefile.am, cache.c, cache.h, gphoto2-frontend.h, helpers.h, image.c, image.h, script.c: adding gPhoto scripting 2000-07-08 13:20 ole * libgphoto2/: .cvsignore, Makefile.am: Shut up, cvs... 2000-07-08 12:41 ole * configure.in: Added check for gpio and LIBGPHOTO_* globals 2000-07-08 11:36 ole * libgphoto2/: Makefile.am, libgphoto2Conf.sh.in: Added configuration file for using libgphoto2 in GNOME applications 2000-07-07 18:58 scottf * frontends/gtk-old/src/: util.c, util.h: whoops. needed to remove old gPhoto ref's 2000-07-07 18:54 scottf * frontends/gtk-old/src/Makefile.am: final commit for the day 2000-07-07 18:52 scottf * frontends/gtk-old/src/: callbacks.c, callbacks.h, interface.c, main.c, util.c, util.h: added util.[ch] 2000-07-07 18:19 scottf * frontends/gtk-old/configure.in, frontends/gtk-old/src/Makefile.am, frontends/gtk-old/src/interface.c, frontends/gtk-old/src/interface.h, frontends/gtk-old/src/main.c, libgphoto2/Makefile.am: linked libgphoto2 to libgpio. 2000-07-07 17:57 scottf * Makefile.am, configure.in, gphoto2-config.in, frontends/gtk-old/src/Makefile.am, frontends/gtk-old/src/main.c: added gphoto2-config script to make adding frontends and libraries easier 2000-07-07 17:28 scottf * frontends/gtk-old/: AUTHORS, ChangeLog, Makefile.am, NEWS, README, acconfig.h, autogen.sh, configure.in, files.list, gphoto2-gtk.glade, gphoto2-gtk.glade.bak, stamp-h.in, pixmaps/close_image.xpm, pixmaps/configure.xpm, pixmaps/delete_images.xpm, pixmaps/exit.xpm, pixmaps/fliph.xpm, pixmaps/flipv.xpm, pixmaps/get_index.xpm, pixmaps/get_index_empty.xpm, pixmaps/get_selected_images.xpm, pixmaps/open_image.xpm, pixmaps/print_image.xpm, pixmaps/resize.xpm, pixmaps/rotc.xpm, pixmaps/save_current_image.xpm, po/ChangeLog, po/POTFILES.in, src/Makefile.am, src/callbacks.c, src/callbacks.h, src/interface.c, src/interface.h, src/main.c, src/support.c, src/support.h: Adding older gtk interface to frontends 2000-07-06 17:33 scottf * camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/fujitsu.h, camlibs/fujitsu/library.c, include/gphoto2-library.h: added DC1 error checking to fujitsu library 2000-07-06 16:59 scottf * camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/library.c, frontends/command-line/main.c, include/gphoto2-library.h: fujitsu camera summary working. 2000-07-06 15:27 scottf * camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/fujitsu.h, camlibs/fujitsu/library.c, frontends/command-line/interface.c, frontends/command-line/main.c: fujitsu library working nicely. 99% functional. 2000-07-05 20:11 scottf * camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/fujitsu.h, camlibs/fujitsu/library.c, frontends/command-line/main.c: fujitsu lib 90% working. 2000-07-05 12:55 scottf * configure.in: minor changes. version change. 2000-07-03 19:16 scottf * camlibs/fujitsu/: fujitsu.c, fujitsu.h, library.c: reading/writing int32 registers supported (fujitsu) 2000-07-03 14:58 scottf * camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/fujitsu.h, camlibs/fujitsu/library.c, frontends/command-line/main.c: working on fujitsu. fixed debug output in command-line 2000-06-30 20:23 scottf * camlibs/fujitsu/: README, fujitsu.c, library.c: done for the week. fujitsu still being worked on 2000-06-30 13:43 scottf * camlibs/fujitsu/: fujitsu.c, fujitsu.h, library.c, library.h: continuing adding fujitsu lib. 2000-06-30 13:24 scottf * camlibs/fujitsu/: Makefile.am, fujitsu.c, fujitsu.h, library.c, library.h: renamed gphoto.[ch] to library.[ch] 2000-06-29 20:01 scottf * camlibs/fujitsu/: fujitsu.c, fujitsu.h: fujitsu's camera_init is working 2000-06-29 16:07 scottf * camlibs/fujitsu/Makefile.am, camlibs/fujitsu/fujitsu.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, libgphoto2/util.c, libgphoto2/widget.c: starting fujitsu library. fixed widget errors. 2000-06-29 15:36 scottf * libgphoto2/widget.c: added gp_widget_* code 2000-06-29 14:01 scottf * libgphoto2/: Makefile.am, interface.c, interface.h, widget.c, widget.h: rename interface.[ch] to widget.[ch] 2000-06-29 13:56 scottf * camlibs/CONFIG_DIALOG, camlibs/NOTES, camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/template/template.c, frontends/command-line/main.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/core.h, libgphoto2/library.c: transferred another image. adding configuration dialog widgets. command-line is usable (yay) 2000-06-29 13:47 scottf * camlibs/barbie/barbie.c: fixed init bug. 2000-06-29 13:19 scottf * libgphoto2/: Makefile.am, interface.c, interface.h: adding beginning of toolkit-independent interface code 2000-06-28 14:17 scottf * camlibs/CONFIG_DIALOG, libgphoto2/file.c, libgphoto2/file.h: whoops. added file.[ch] in libgphoto2/. added another spec to the CONFIG_DIALOG file 2000-06-27 19:48 scottf * camlibs/NOTES, camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/template/template.c, include/gphoto2-core.h, include/gphoto2-library.h, libgphoto2/core.h, libgphoto2/library.c: added camera_config_query function. touched up API. 2000-06-27 19:44 scottf * camlibs/CONFIG_DIALOG: Added configuration dialog spec 2000-06-27 18:09 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/template/template.c, frontends/command-line/main.c, include/gphoto2-datatypes.h, include/gphoto2-interface.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/core.h, libgphoto2/library.c: renamed camera_config to camera_config_set and added camera_config_get to facilitate multiple configuration dialogs. added error checking to the front-end. 2000-06-27 17:48 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, frontends/command-line/interface.c, frontends/command-line/main.c, frontends/command-line/test.c, include/gphoto2-core.h, include/gphoto2-interface.h, libgphoto2/core.c: rename gp_update_* to just gp_*. added image upload functionality to command-line front-end. note to self: my slow camera sucks ass 2000-06-27 15:02 scottf * frontends/command-line/main.c: added -n/--num-pictures functionality to command-line 2000-06-27 14:54 scottf * frontends/libgphoto2_frontend/: Makefile, Makefile.in, cache.lo, cache.o, helpers.lo, helpers.o, image.lo, image.o, libgphoto2_util.la: crap. removed object files. i suck. 2000-06-27 14:52 scottf * frontends/command-line/main.c, frontends/libgphoto2_frontend/cache.lo, frontends/libgphoto2_frontend/cache.o, frontends/libgphoto2_frontend/helpers.lo, frontends/libgphoto2_frontend/helpers.o, frontends/libgphoto2_frontend/image.lo, frontends/libgphoto2_frontend/image.o, include/gphoto2-datatypes.h, libgphoto2/core.c: added delete_picture function to command-line. worked on command-line options system. fixed directory browse bug. 2000-06-26 20:28 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, frontends/command-line/main.c, include/gphoto2-core.h: added --get-picture functionality to command-line. first successful download... 2000-06-26 18:29 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/template/template.c, frontends/command-line/main.c, frontends/libgphoto2_frontend/Makefile, frontends/libgphoto2_frontend/Makefile.am, frontends/libgphoto2_frontend/Makefile.in, frontends/libgphoto2_frontend/cache.lo, frontends/libgphoto2_frontend/cache.o, frontends/libgphoto2_frontend/helpers.lo, frontends/libgphoto2_frontend/helpers.o, frontends/libgphoto2_frontend/image.lo, frontends/libgphoto2_frontend/image.o, frontends/libgphoto2_frontend/libgphoto2_util.la, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/core.h, frontends/command-line/main.c: added list/set folders to command-line options 2000-06-26 13:37 scottf * frontends/command-line/Makefile.am: (hopefully) last change for renaming of libgphoto2_util 2000-06-26 13:36 scottf * configure.in: whoops. changed configure.in to reflect libgphoto2_util renaming 2000-06-26 13:35 scottf * frontends/: Makefile.am, command-line/Makefile.am: changed libgphoto2_util references to libgphoto2_frontend 2000-06-26 13:34 scottf * frontends/: libgphoto2_frontend/Makefile, libgphoto2_frontend/Makefile.am, libgphoto2_frontend/Makefile.in, libgphoto2_frontend/cache.c, libgphoto2_frontend/cache.h, libgphoto2_frontend/cache.lo, libgphoto2_frontend/cache.o, libgphoto2_frontend/helpers.c, libgphoto2_frontend/helpers.h, libgphoto2_frontend/helpers.lo, libgphoto2_frontend/helpers.o, libgphoto2_frontend/image.c, libgphoto2_frontend/image.h, libgphoto2_frontend/image.lo, libgphoto2_frontend/image.o, libgphoto2_frontend/libgphoto2_util.la, libgphoto2_util/Makefile.am, libgphoto2_util/cache.c, libgphoto2_util/cache.h, libgphoto2_util/helpers.c, libgphoto2_util/helpers.h, libgphoto2_util/image.c, libgphoto2_util/image.h: renamed libgphoto2_util to libgphoto2_frontend 2000-06-23 20:48 scottf * configure.in, camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/template/template.c, frontends/command-line/main.c, include/gphoto2-datatypes.h, libgphoto2/util.c: readded serial/usb/parallel/ieee1394 flags in CameraAbilities struct. works much nicer 2000-06-23 19:39 scottf * camlibs/barbie/barbie.c, camlibs/fujitsu/fujitsu.c, camlibs/template/template.c, frontends/command-line/Makefile.am, frontends/command-line/main.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2.h, libgphoto2/core.c: *added listing of cameras/port to front-end. *added gpio wrapper for device_count/info 2000-06-22 19:05 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/template/template.c, frontends/command-line/main.c, frontends/command-line/main.h, frontends/command-line/test.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, libgphoto2/core.c, libgphoto2/util.c: reworked abilities (again). more abstract. 2000-06-22 15:57 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/template/template.c, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/util.c: removed cancel and lock abilities for now. updated library API to reflect the changes. Need to figure out a way to consolidate specialized features. 2000-06-22 15:46 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, camlibs/template/template.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/core.h, libgphoto2/util.c: changed camera_config call. Removed CameraConfigSetting in place of an array of CameraSetting's. 2000-06-22 13:06 scottf * AUTHORS, INSTALL, README, camlibs/NOTES, camlibs/barbie/Makefile.am, camlibs/barbie/barbie.c, camlibs/directory/Makefile.am, camlibs/directory/directory.c, camlibs/fujitsu/Makefile.am, camlibs/fujitsu/fujitsu.c, camlibs/template/Makefile.am, camlibs/template/template.c, frontends/command-line/main.c, frontends/command-line/test.c, frontends/libgphoto2_util/Makefile.am, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/Makefile.am, libgphoto2/core.c, libgphoto2/core.h, libgphoto2/library.c, libgphoto2/library.h, libgphoto2/util.c, libgphoto2/util.h: *revamped CameraAbilities (no more reset/sleep) *making command-line functional *adding error-checking *removed camera_open/close *added camera_debug_set to get more verbose output *other misc. 2000-06-21 18:20 scottf * include/gphoto2-library.h, libgphoto2/core.c: adding documentation to API 2000-06-21 17:09 scottf * NOTES, camlibs/directory/directory.c, frontends/command-line/main.c, frontends/command-line/main.h, include/gphoto2-core.h, libgphoto2/core.c, libgphoto2/library.c: improving command-line parser. debug checking and more verbose output 2000-06-21 12:55 scottf * libgphoto2/: Makefile.am, core.c, exif.c, globals.h, library.c, settings.c: clean-up in the exif lib. -Wall is damn grumpy. 2000-06-21 11:34 scottf * camlibs/barbie/barbie.c, libgphoto2/Makefile.am, libgphoto2/exif.c, libgphoto2/exif.h: added exif lib 2000-06-20 18:01 scottf * frontends/command-line/main.c: aesthetic changes to command-line parser 2000-06-20 17:43 scottf * frontends/command-line/: Makefile.am, main.c, main.h, test.c, test.h: added command-line option parser. weird but neat. 2000-06-20 15:48 scottf * frontends/command-line/: main.c, main.h: whoops. re-added main.c/h 2000-06-20 15:47 scottf * frontends/command-line/Makefile.am: command-line parsing routines added. rearranging of code 2000-06-20 14:36 scottf * frontends/command-line/: Makefile.am, main.c, main.h, test.c, test.h: starting command-line interface. moving files. 2000-06-20 13:28 scottf * include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/core.h, libgphoto2/library.c: added camera_file_put() to camera API 2000-06-20 13:28 scottf * camlibs/: barbie/barbie.c, directory/directory.c, fujitsu/fujitsu.c, template/Makefile.am, template/README, template/template.c, template/template.h: added template directory for new camera libraries 2000-06-19 15:41 scottf * camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, frontends/command-line/main.c, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-library.h, libgphoto2/core.c, libgphoto2/core.h, libgphoto2/library.c: folder listing has changed. now more optimized for serial connections 2000-06-19 14:24 scottf * camlibs/NOTES, camlibs/barbie/barbie.c, camlibs/directory/directory.c, camlibs/fujitsu/fujitsu.c, include/Makefile.am, include/gphoto2-datatypes.h, include/gphoto2-library.h, include/gphoto2.h, libgphoto2/Makefile.am, libgphoto2/core.c, libgphoto2/core.h, libgphoto2/library.c, libgphoto2/library.h: added camera library id's. enumerated camera differently (abilities per-camera now). 2000-06-19 12:32 scottf * frontends/command-line/gphoto2, include/gphoto2-core.h, include/gphoto2-datatypes.h, include/gphoto2-interface.h, include/gphoto2-library.h: finished renaming include files 2000-06-19 12:31 scottf * configure.in, camlibs/barbie/barbie.c, frontends/Makefile.am, frontends/command-line/Makefile.am, frontends/command-line/gphoto2, frontends/command-line/main.c, include/gphoto-core.h, include/gphoto-datatypes.h, include/gphoto-interface.h, include/gphoto-library.h, libgphoto2/core.c: renamed include files. fixed compile problems with libgphoto2_util. 2000-06-19 12:20 scottf * frontends/: Makefile.am, libgphoto2_util/Makefile.am, libgphoto2_util/cache.c, libgphoto2_util/cache.h, libgphoto2_util/helpers.c, libgphoto2_util/helpers.h, libgphoto2_util/image.c, libgphoto2_util/image.h: finish renaming libgphoto2_util 2000-06-19 12:19 scottf * frontends/libgphoto2-util/: Makefile.am, cache.c, cache.h, image.c, image.h: renaming libgphoto2-util to libgphoto2_util (Automake don't like dashes) 2000-06-19 12:06 scottf * libgphoto2/: Makefile.am, cache.c, cache.h, core.c, helpers.c, helpers.h: moving around files 2000-06-19 12:01 scottf * frontends/: Makefile.am, command-line/Makefile.am, libgphoto2-util/Makefile.am, libgphoto2-util/cache.c, libgphoto2-util/cache.h, libgphoto2-util/image.c, libgphoto2-util/image.h: added beginining of gphoto2 utility library for frontends 2000-06-16 14:48 scottf * AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am, NEWS, NOTES, OVERVIEW, README, TODO, autogen.sh, configure.in, include/gphoto-core.h, include/gphoto-datatypes.h, include/gphoto-interface.h, camlibs/Makefile.am, camlibs/barbie/Makefile.am, camlibs/barbie/README, camlibs/directory/Makefile.am, camlibs/directory/directory.c, camlibs/directory/directory.h, include/Makefile.am, include/gphoto-library.h, include/gphoto2.h, camlibs/barbie/barbie.c, camlibs/barbie/barbie.h, camlibs/barbie/compile, camlibs/barbie/main.c, camlibs/fujitsu/Makefile.am, camlibs/fujitsu/README, camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/fujitsu.h, libgphoto2/cache.c, libgphoto2/cache.h, libgphoto2/core.c, frontends/Makefile.am, frontends/command-line/Makefile.am, frontends/command-line/interface.c, frontends/command-line/interface.h, frontends/command-line/main.c, frontends/command-line/main.h, libgphoto2/Makefile.am, libgphoto2/TODO, libgphoto2/core.h, libgphoto2/helpers.c, libgphoto2/helpers.h, libgphoto2/library.c, libgphoto2/library.h, libgphoto2/settings.c, libgphoto2/settings.h, libgphoto2/util.c, libgphoto2/util.h, frontends/command-line/gphoto2: Initial revision 2000-06-16 14:48 scottf * AUTHORS, COPYING, ChangeLog, INSTALL, Makefile.am, NEWS, NOTES, OVERVIEW, README, TODO, autogen.sh, configure.in, include/gphoto-core.h, include/gphoto-datatypes.h, include/gphoto-interface.h, camlibs/Makefile.am, camlibs/barbie/Makefile.am, camlibs/barbie/README, camlibs/directory/Makefile.am, camlibs/directory/directory.c, camlibs/directory/directory.h, include/Makefile.am, include/gphoto-library.h, include/gphoto2.h, camlibs/barbie/barbie.c, camlibs/barbie/barbie.h, camlibs/barbie/compile, camlibs/barbie/main.c, camlibs/fujitsu/Makefile.am, camlibs/fujitsu/README, camlibs/fujitsu/fujitsu.c, camlibs/fujitsu/fujitsu.h, libgphoto2/cache.c, libgphoto2/cache.h, libgphoto2/core.c, frontends/Makefile.am, frontends/command-line/Makefile.am, frontends/command-line/interface.c, frontends/command-line/interface.h, frontends/command-line/main.c, frontends/command-line/main.h, libgphoto2/Makefile.am, libgphoto2/TODO, libgphoto2/core.h, libgphoto2/helpers.c, libgphoto2/helpers.h, libgphoto2/library.c, libgphoto2/library.h, libgphoto2/settings.c, libgphoto2/settings.h, libgphoto2/util.c, libgphoto2/util.h, frontends/command-line/gphoto2: gPhoto2: digital camera access libraries and application libgphoto2-2.5.9/configure.ac0000644000175000001440000005364512623156001013014 00000000000000dnl Process this file with autoreconf to produce a configure script. AC_PREREQ(2.59) dnl NOTE: Be version style _higher_ than the last release. dnl So lastversion.X.trunk for instance. Bump X if necessary. dnl ******* THE NEXT RELEASE VERSION MUST BE 2.5.10 at least or higher! AC_INIT([libgphoto2 photo camera library], [2.5.9], [gphoto-devel@lists.sourceforge.net], [libgphoto2]) AC_CONFIG_SRCDIR([libgphoto2/gphoto2-version.c]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([auto-m4]) AC_CONFIG_AUX_DIR([auto-aux]) dnl Working around bug in automake <= 1.9.6: dnl - Please do not add filename-length-max=99 here. dnl - Otherwise "make distdir" will fail in gphoto-suite dnl The generated Makefile rule fails to remove the absolute part at dnl the beginning of the /path/to/buildroot/PACKAGE-VERSION/foo/bar dnl before determining the string length. However, the only relevant dnl string to determine the length of would be PACKAGE-VERSION/foo/bar AM_INIT_AUTOMAKE([-Wall foreign 1.9 dist-bzip2 check-news subdir-objects]) # Use the silent-rules feature when possible. m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])]) AM_SILENT_RULES([no]) GP_CHECK_SHELL_ENVIRONMENT GP_CONFIG_MSG([Build]) GP_CONFIG_MSG([Source code location],[${srcdir}]) dnl --------------------------------------------------------------------------- dnl Advanced information about versioning: dnl * "Writing shared libraries" by Mike Hearn dnl http://navi.cx/~mike/writing-shared-libraries.html dnl * libtool.info chapter "Versioning" dnl * libtool.info chapter "Updating library version information" dnl --------------------------------------------------------------------------- dnl Versioning: dnl - AGE (Micro): Increment if any interfaces have been added; set to 0 dnl if any interfaces have been removed. Removal has dnl precedence over adding, so set to 0 if both happened. dnl It denotes upward compatibility. dnl - REVISION (Minor): Increment any time the source changes; set to dnl 0 if you incremented CURRENT. dnl - CURRENT (Major): Increment if the interface has changes. AGE is always dnl *changed* at the same time. dnl dnl To summarize. Any interface *change* increment CURRENT. If that interface dnl change does not break upward compatibility (ie it is an addition), dnl increment AGE, Otherwise AGE is reset to 0. If CURRENT has changed, dnl REVISION is set to 0, otherwise REVISION is incremented. dnl --------------------------------------------------------------------------- dnl A:R:C=1:1:3 libgphoto2-2.2 dnl A:R:C=2:0:4 libgphoto2-2.3 (since libgphoto2-2.2.1.5.trunk) dnl A:R:C=2:1:4 libgphoto2-2.3.1 (since libgphoto2-2.3.0.1.trunk) dnl A:R:C=3:0:5 libgphoto2-2.3.0.3.trunk (new gp_file_new_from_fd() function) dnl libgphoto2-2.3.1.1.trunk (new gp_file_slurp() function) dnl libgphoto2-2.3.1.2.trunk (new gp_camera_get_storageinfo() function + enums + struct) dnl A:R:C=0:0:6 libgphoto2-2.5.0 (fixed CameraList API, ... ) AC_SUBST([LIBGPHOTO2_AGE], [0]) AC_SUBST([LIBGPHOTO2_REVISION], [0]) AC_SUBST([LIBGPHOTO2_CURRENT], [6]) AC_SUBST([LIBGPHOTO2_CURRENT_MIN], [`expr $LIBGPHOTO2_CURRENT - $LIBGPHOTO2_AGE`]) AC_SUBST([LIBGPHOTO2_VERSION_INFO], [$LIBGPHOTO2_CURRENT:$LIBGPHOTO2_REVISION:$LIBGPHOTO2_AGE]) dnl --------------------------------------------------------------------------- dnl Checks for programs. dnl --------------------------------------------------------------------------- AC_PROG_CC AC_PROG_CPP AC_PROG_CXX AC_PROG_INSTALL AM_PROG_CC_C_O m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) dnl Something with the sequences is not quite alright yet. dnl SED is supposed to be set in AC_LIBTOOL_SETUP, but the dnl sequence seems to get mixed up. SED=${SED-sed} dnl --------------------------------------------------------------------------- dnl Turn on (almost) all warnings when using gcc dnl --------------------------------------------------------------------------- if test "x$GCC" = "xyes"; then # CFLAGS="$CFLAGS --std=c99 -Wall -Wextra -Werror -pedantic" CFLAGS="$CFLAGS -Wall -Wmissing-declarations -Wmissing-prototypes" LDFLAGS="$LDFLAGS" AC_SUBST([NO_UNUSED_CFLAGS], [-Wno-unused]) fi AM_CONDITIONAL([HAVE_GCC], [test "x$GCC" = "xyes"]) # Activate internal code AM_CPPFLAGS="$AM_CPPFLAGS -D_GPHOTO2_INTERNAL_CODE" # CPPFLAGS: C PreProcessor flags AC_SUBST([AM_CPPFLAGS]) # CFLAGS: C compiler flags AC_SUBST([AM_CFLAGS]) # CXXFLAGS: C++ compiler flags AC_SUBST([AM_CXXFLAGS]) # LDFLAGS: Linker flags AC_SUBST([AM_LDFLAGS]) # Check for va_copy() GP_VA_COPY # Note: Do NOT add specific libraries and stuff to the generic _FLAGS. # Put these into LIBFOO_CFLAGS and LIBFOO_LIBS instead. try_gp2ddb=false msg_gp2ddb="" gp_msg_dp2ddb="no" AC_ARG_ENABLE([gp2ddb], [AS_HELP_STRING([--enable-gp2ddb], [enable EXPERIMENTAL PRE-ALPHA gphoto2 device database code])],[ if test "x$enableval" = "xyes"; then try_gp2ddb=true msg_dp2ddb="(--enable-gp2ddb detected)" elif test "x$enableval" = "xno"; then try_gp2ddb=false msg_dp2ddb="(--disable-gp2ddb detected)" fi ]) AC_PATH_PROG([FLEX], [flex]) AC_SUBST([FLEX]) AC_PATH_PROG([BISON], [bison]) AC_SUBST([BISON]) AC_MSG_CHECKING([whether to enable GP2DDB]) if "$try_gp2ddb"; then if test -x "$FLEX" && test -x "$BISON"; then gp_msg_dp2ddb="yes $msg_dp2ddb" else AC_MSG_ERROR([Fatal: GP2DDB support requires flex and bison! Aborting configuration. Install flex and bison into your PATH or run configure with --disable-gp2ddb to disable GP2DDB support. ]) fi else gp_msg_dp2ddb="no $msg_dp2ddb" fi AC_MSG_RESULT([${gp_msg_gp2ddb}]) AM_CONDITIONAL([ENABLED_GP2DDB], ["$try_gp2ddb" && test -x "$FLEX" && test -x "$BISON"]) if "$try_gp2ddb" && test -x "$FLEX" && test -x "$BISON"; then gp_msg_gp2ddb="yes $msg_gp2ddb" AC_DEFINE([ENABLED_GP2DDB], [1], [Whether we have flex and bison for GP2DDB]) else gp_msg_gp2ddb="no $msg_gp2ddb" fi GP_CONFIG_MSG([GP2DDB support], [${gp_msg_gp2ddb} (EXPERIMENTAL)]) GP_PKG_CONFIG dnl check for/set up libtool and libltdl dnl AC_DISABLE_STATIC dnl AC_DISABLE_SHARED dnl AC_LIBLTDL_CONVENIENCE([libltdl]) dnl AC_WITH_LTDL dnl AC_LIB_LTDL AC_DISABLE_STATIC AC_LIBTOOL_WIN32_DLL AC_LIBTOOL_DLOPEN AC_PROG_LIBTOOL dnl We are using our own libltdl checks instead of AC_WITH_LTDL dnl because we do not want to ship our own copy of libltdl any more. dnl Not shipping libltdl makes it possible to ditch our own autogen.sh dnl and relying on standard autoconf's "autoreconf". GP_LIB_LTDL # report on compiler/libtool setup GP_CONFIG_MSG([Compiler],[${CC}]) GP_CONFIG_MSG([libltdl includes],[$LTDLINCL]) GP_CONFIG_MSG([libltdl library],[$LIBLTDL]) AC_DEFINE_UNQUOTED(HAVE_CC,"$CC",[The C compiler we're using]) dnl --------------------------------------------------------------------------- dnl Reference definitions dnl required before we do the Makevars hack! dnl --------------------------------------------------------------------------- GP_REFERENCES()dnl GP_CONFIG_MSG([Features]) dnl --------------------------------------------------------------------------- dnl i18n support (including some hacks) dnl --------------------------------------------------------------------------- ALL_LINGUAS="cs da de es eu fr hu it ja nl pl ru sv uk vi zh_CN" GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2_CURRENT_MIN}],[The gPhoto Team],[${MAIL_GPHOTO_TRANSLATION}]) AM_GNU_GETTEXT_VERSION([0.14.1]) AM_GNU_GETTEXT([external]) AM_PO_SUBDIRS() AM_ICONV() GP_GETTEXT_FLAGS() dnl FIXME: We have to make sure this works first dnl AC_CHECK_FUNC(gettext, gettext_without_libintl=true) # same trick as with libdl: # if gettext() doesn't require linking against libintl, # we don't have to check for gettext in libintl. Otherwise # we may even require libintl. dnl if test "$gettext_without_libintl" != "true" -a "$USE_NLS" = "yes"; then dnl AC_CHECK_LIB([intl], [gettext], [INTLLIBS="$INTLLIBS -lintl"]) dnl fi AC_SUBST([localedir],["\$(datadir)/locale"]) AM_CPPFLAGS="$AM_CPPFLAGS -DLOCALEDIR=\\\"${localedir}\\\"" AC_SYS_LARGEFILE AC_MSG_CHECKING([for asm .symver support]) AC_COMPILE_IFELSE([dnl AC_LANG_PROGRAM([[]],[[ int f1() { } int f2() { } asm(".symver f1, f@VER1"); asm(".symver f2, f@@VER2"); int main(int argc, char **argv) { } ]])dnl ],[ AC_DEFINE([HAVE_ASM_SYMVERS],1,[Define if there is asm .symver support.]) VERSIONMAPLDFLAGS="-Wl,--version-script=\$(srcdir)/libgphoto2.ver" AC_MSG_RESULT(yes) ],[ VERSIONMAPLDFLAGS="" AC_MSG_RESULT(no) ]) AC_SUBST(VERSIONMAPLDFLAGS) dnl --------------------------------------------------------------------------- dnl FIXME: What is this good for? dnl Replace `main' with a function in -libs: dnl --------------------------------------------------------------------------- AC_CHECK_LIB(ibs, main) dnl --------------------------------------------------------------------------- dnl check for libjpeg dnl --------------------------------------------------------------------------- LIBJPEG="" libjpeg_msg="no" AC_SUBST(LIBJPEG) AC_ARG_WITH([jpeg], AS_HELP_STRING([--without-jpeg], [Build without jpeg library (default: no)])) AS_IF([test "x$with_jpeg" != "xno"], [ AC_CHECK_LIB(jpeg,jpeg_start_decompress,[ AC_CHECK_HEADER(jpeglib.h,[ AC_DEFINE(HAVE_LIBJPEG,1,[define if we found LIBJPEG and its headers]) LIBJPEG="-ljpeg" libjpeg_msg="yes" ]) ]) ]) GP_CONFIG_MSG([JPEG mangling support],[${libjpeg_msg}]) dnl --------------------------------------------------------------------------- dnl check for libxml2 dnl --------------------------------------------------------------------------- GP_CHECK_LIBRARY([LIBXML2],[libxml-2.0],[>= 2.0], [libxml/parser.h],[xmlFirstElementChild],[],[], [default-on], [http://xmlsoft.org] ) GP_CONFIG_MSG([XML support for Olympus E series],[${have_LIBXML2}]) dnl --------------------------------------------------------------------------- dnl check for libgd dnl they call it "gdlib" ... confusing. dnl --------------------------------------------------------------------------- GP_CHECK_LIBRARY([LIBGD],[gdlib],[>= 2.0],[gd.h],[gdImageCreateTrueColor],[ # gdlib-config --libs upstream does not include -lgd, but only the dependencies LIBGD_LIBS="-lgd $LIBGD_LIBS" ],[],[default-on],[http://www.libgd.org/]) GP_CONFIG_MSG([libGD conversion support],[${have_LIBGD}]) dnl --------------------------------------------------------------------------- dnl Checks for header files. dnl --------------------------------------------------------------------------- AC_HEADER_DIRENT # before _HEADER_STDC AC_HEADER_STDC # after _HEADER_STDC AC_CHECK_HEADERS([sys/param.h sys/mman.h sys/select.h locale.h memory.h getopt.h unistd.h mcheck.h limits.h sys/time.h langinfo.h]) AC_C_INLINE([]) AC_C_CONST([]) dnl FIXME: AC_STRUCT_TIMEZONE dnl --------------------------------------------------------------------------- dnl more header/function/def checks dnl --------------------------------------------------------------------------- dnl Checks for typedefs, structures, and compiler characteristics. AC_TYPE_SIZE_T dnl Checks for library functions. AC_CHECK_FUNCS([getopt getopt_long mkdir strdup strncpy strcpy snprintf sprintf vsnprintf gmtime_r statfs localtime_r lstat inet_aton rand_r]) dnl Find out how to get struct tm AC_STRUCT_TM dnl Check for tm_gmtoff in struct tm AC_MSG_CHECKING([for tm_gmtoff in struct tm]) AC_COMPILE_IFELSE([dnl AC_LANG_PROGRAM([[ #include #include <$ac_cv_struct_tm> ]], [[ struct tm tm; tm.tm_gmtoff; ]])dnl ],[ AC_DEFINE(HAVE_TM_GMTOFF,1,whether struct tm has tm_gmtoff field) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) ]) AC_CHECK_HEADERS([sys/mount.h sys/statfs.h sys/user.h sys/vfs.h],,,[ #include #if HAVE_SYS_PARAM_H # include #endif ]) dnl Check for statfs members AC_CHECK_MEMBERS([struct statfs.f_bfree, struct statfs.f_bavail, struct statfs.f_favail],,,[ #include #ifdef HAVE_SYS_PARAM_H # include #endif #ifdef HAVE_SYS_MOUNT_H # include #endif #ifdef HAVE_SYS_VFS_H # include #endif #ifdef HAVE_SYS_STATFS_H # include #endif ]) AC_CHECK_MEMBERS([struct statvfs.f_blocks],,,[ #ifdef HAVE_SYS_STATVFS_H # include #endif ]) dnl --------------------------------------------------------------------------- dnl Checks for integer types. dnl --------------------------------------------------------------------------- dnl dnl FIXME: Test AC_TYPE_UINT32_T & Co and check whether that could work for us. dnl Potential problem: The required autoconf version. dnl Note: We are already using AC_TYPE_SIZE_T somewhere else in here. dnl Create a stdint.h-like file containing size-specific integer definitions dnl that will always be available AX_NEED_STDINT_H([libgphoto2/_stdint.h]) dnl Create a header file containing NetBSD-style byte swapping macros AC_NEED_BYTEORDER_H([libgphoto2/gphoto2-endian.h]) dnl --------------------------------------------------------------------------- dnl Old libtool stuff left here for reference purposes. For now. dnl dnl --------------------------------------------------------------------------- dnl dnl Check for libtool: lt_dlforeachfile has been introduced in dnl dnl libtool-1.4. However, there are still systems out dnl dnl there running libtool-1.3. For those, we will need dnl dnl dlopen. Note that on some systems (e.g. FreeBSD) dnl dnl -ldl isn't needed. dnl dnl --------------------------------------------------------------------------- dnl AC_PROG_LIBTOOL dnl have_ltdl=false dnl ltdl_msg="no" dnl try_ltdl=false dnl AC_ARG_WITH(ltdl, [ --with-ltdl Use ltdl],[ dnl if test x$withval = xyes; then dnl try_ltdl=true dnl fi]) dnl if $try_ltdl; then dnl AC_CHECK_LIB(ltdl, lt_dlforeachfile,[ dnl AC_CHECK_HEADER(ltdl.h,[ dnl AC_DEFINE(HAVE_LTDL,1,[whether we use libltdl]) dnl LTDL_LIBS="-lltdl" dnl ltdl_msg="yes" dnl have_ltdl=true])]) dnl fi dnl if ! $have_ltdl; then dnl AC_CHECK_FUNC(dlopen,,[ dnl AC_CHECK_LIB(dl, dlopen,[LTDL_LIBS="-ldl"],[AC_ERROR([ dnl *** Could not determine how to handle dnl *** shared libraries!])])]) dnl fi dnl AC_SUBST(LTDL_LIBS) dnl should be obsolete (we're not using grep and tr any more) dnl dnl Solaris hack for grep and tr dnl [ dnl if test -n "`echo $host_os | grep '[sS]olaris'`"; then dnl TR=/usr/xpg4/bin/tr dnl GREP=/usr/xpg4/bin/grep dnl else dnl TR=tr dnl GREP=grep dnl fi dnl ] dnl --------------------------------------------------------------------------- dnl utility installation directory dnl dnl If your system wants utilities installed into ${libexecdir} instead, then dnl run configure with 'utilsdir=${libexecdir}/${PACKAGE_TARNAME}'. dnl --------------------------------------------------------------------------- AC_SUBST([PACKAGE_TARNAME]) if test "x${utilsdir}" = "x"; then utilsdir="\${libdir}/\${PACKAGE_TARNAME}"; fi AC_ARG_VAR([utilsdir],[Directory where utilities like print-camera-list will be installed]) AC_SUBST([utilsdir]) GP_UDEV([true]) dnl --------------------------------------------------------------------------- dnl camlib installation directory dnl --------------------------------------------------------------------------- AC_MSG_CHECKING([where to install camlibs]) AC_ARG_WITH([camlibdir],[AS_HELP_STRING( [--with-camlibdir=], [install camlibs in directory ])dnl ],[ camlibdir="$withval" ],[ camlibdir="\${libdir}/${PACKAGE_TARNAME}/${PACKAGE_VERSION}" ]) AC_MSG_RESULT([${camlibdir}]) AC_SUBST([camlibdir]) AM_CPPFLAGS="$AM_CPPFLAGS -DCAMLIBS=\\\"\$(camlibdir)\\\"" dnl --------------------------------------------------------------------------- dnl Camera drivers (camlibs) dnl --------------------------------------------------------------------------- dnl * See m4m/gp-camlibs.m4 for usage details, e.g. for marking camlibs as dnl unlisted. dnl * Please add new camlibs in alphabetical order. dnl * Selective build: dnl $ make -C camlibs canon.la ptp2.la dnl * Selective install: dnl $ make CAMLIBS="canon.la ptp2.la" install-camlibs GP_CAMLIB([adc65])dnl GP_CAMLIB([agfa_cl20])dnl GP_CAMLIB([aox])dnl GP_CAMLIB([ax203])dnl GP_CAMLIB([barbie])dnl GP_CAMLIB([canon])dnl GP_CAMLIB([casio_qv])dnl GP_CAMLIB([clicksmart310])dnl GP_CAMLIB([digigr8])dnl GP_CAMLIB([digita])dnl GP_CAMLIB([dimera3500])dnl GP_CAMLIB([directory])dnl GP_CAMLIB([enigma13])dnl GP_CAMLIB([fuji])dnl GP_CAMLIB([gsmart300])dnl GP_CAMLIB([hp215])dnl GP_CAMLIB([iclick])dnl GP_CAMLIB([jamcam])dnl GP_CAMLIB([jd11])dnl GP_CAMLIB([jl2005a])dnl GP_CAMLIB([jl2005c])dnl GP_CAMLIB([kodak_dc120])dnl GP_CAMLIB([kodak_dc210])dnl GP_CAMLIB([kodak_dc240])dnl GP_CAMLIB([kodak_dc3200])dnl GP_CAMLIB([kodak_ez200])dnl GP_CAMLIB([konica])dnl GP_CAMLIB([konica_qm150])dnl GP_CAMLIB([largan])dnl GP_CAMLIB([lg_gsm])dnl GP_CAMLIB([mars])dnl GP_CAMLIB([dimagev])dnl GP_CAMLIB([mustek])dnl GP_CAMLIB([panasonic_coolshot])dnl GP_CAMLIB([panasonic_l859])dnl GP_CAMLIB([panasonic_dc1000])dnl GP_CAMLIB([panasonic_dc1580])dnl GP_CAMLIB([pccam300])dnl GP_CAMLIB([pccam600])dnl GP_CAMLIB([pentax])dnl GP_CAMLIB([polaroid_pdc320])dnl GP_CAMLIB([polaroid_pdc640])dnl GP_CAMLIB([polaroid_pdc700])dnl GP_CAMLIB([ptp2])dnl GP_CAMLIB([ricoh])dnl GP_CAMLIB([ricoh_g3])dnl GP_CAMLIB([samsung])dnl GP_CAMLIB([sierra])dnl GP_CAMLIB([sipix_blink], [unlisted])dnl did not find out the correct decompressor, unfinished GP_CAMLIB([sipix_blink2])dnl GP_CAMLIB([sipix_web2])dnl GP_CAMLIB([smal])dnl GP_CAMLIB([sonix])dnl GP_CAMLIB([sony_dscf1])dnl GP_CAMLIB([sony_dscf55])dnl GP_CAMLIB([soundvision])dnl GP_CAMLIB([spca50x])dnl GP_CAMLIB([sq905])dnl GP_CAMLIB([st2205])dnl GP_CAMLIB([stv0674])dnl GP_CAMLIB([stv0680])dnl GP_CAMLIB([sx330z])dnl GP_CAMLIB([template], [unlisted])dnl GP_CAMLIB([topfield])dnl GP_CAMLIB([toshiba_pdrm11])dnl GP_CAMLIB([tp6801])dnl dnl GP_CAMLIBS_DEFINE()dnl GP_CONFIG_MSG([Camlibs],[${camlibs}]) dnl -------------------------------------------------------------------- dnl documentation dnl -------------------------------------------------------------------- GP_CHECK_DOC_DIR()dnl GP_CHECK_DOXYGEN()dnl GP_INTERNAL_DOCS()dnl GP_BUILD_GTK_DOCS()dnl AC_SUBST([camlibdocdir], ['${docdir}/camlibs']) dnl -------------------------------------------------------------------- dnl initialize convenience packaging dnl -------------------------------------------------------------------- GPKG_CHECK_RPM()dnl Check wether to package for a system using RPM GPKG_CHECK_LINUX()dnl Check wether to package for a linux system dnl -------------------------------------------------------------------- dnl guess directory to install *.pc into dnl -------------------------------------------------------------------- pkgconfigdir='${libdir}/pkgconfig' AC_SUBST([pkgconfigdir]) dnl --------------------------------------------------------------------------- dnl libexif: The CameraFilesystem can use libexif for extracting thumbnails dnl out of EXIF data. Similarly, it can extract the mtime of dnl a file. dnl libexif is available from dnl http://www.sourceforge.net/projects/libexif dnl --------------------------------------------------------------------------- GP_CHECK_LIBRARY([LIBEXIF],[libexif],[>= 0.6.13], [libexif/exif-data.h],[exif_data_new],[ AC_MSG_CHECKING([whether we use a version of libexif with ExifData.ifd[[]]]) # Check for libexif version dnl FIXME: Use AC_CHECK_MEMBER? CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="$LIBEXIF_CFLAGS" AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ /* CC=$CC */ /* CPPFLAGS=${CPPFLAGS} */ /* LDFLAGS=${LDFLAGS} */ #include #include ]],[[ ExifData ed; ExifContent *ec0, *ec1; ec0 = &ed.ifd[0]; ec1 = &ed.ifd[1]; ]])], [ AC_DEFINE([HAVE_LIBEXIF_IFD],1, [whether we use a version of libexif with ExifData.ifd[[]]]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) CPPFLAGS="$CPPFLAGS_save" ],[],[default-on],[http://www.sourceforge.net/projects/libexif])dnl dnl FIXME: Is this accurate? AM_CONDITIONAL([HAVE_CXX], [test -n "$CXX" && test "X$CXX" != "Xno"]) dnl --------------------------------------------------------------------------- dnl Configure subprojects dnl --------------------------------------------------------------------------- if test -d "$srcdir/libgphoto2_port"; then AC_CONFIG_SUBDIRS([libgphoto2_port]) else AC_MSG_ERROR([ *** Hey, where have you hidden my libgphoto2_port? *** I needed that! ]) fi # --------------------------------------------------------------------------- # Create output files # --------------------------------------------------------------------------- AC_CONFIG_FILES([ README Makefile gphoto2-config camlibs/Makefile camlibs/canon/doc/Makefile camlibs/konica/localization/Makefile gphoto-m4/Makefile libgphoto2/Makefile libgphoto2.pc libgphoto2-uninstalled.pc examples/Makefile tests/Makefile tests/ddb/Makefile tests/ddb/check-ddb.sh packaging/Makefile packaging/linux-hotplug/Makefile packaging/generic/Makefile packaging/rpm/Makefile packaging/rpm/package.spec po/Makefile.in doc/Makefile doc/Doxyfile doc/Doxyfile-internals doc/api/Makefile ],[ dnl This relies on this code being called for each of the above files dnl with ac_file set to the filename. if echo "$ac_file" | grep '.sh$' > /dev/null; then if test -f "$ac_file"; then chmod +x "$ac_file" fi fi ]) AC_OUTPUT if test "x$CDPATH" != "x" then echo echo "***********************************************************" echo "* You have CDPATH set. You may have to run \"unset CDPATH\" *" echo "* before running \"make dist\" or \"make rpm\". *" echo "***********************************************************" fi GP_CONFIG_OUTPUT dnl Catch the Gentoo folks about to shoot themselves in the foot. dnl Just enabling "foo" often does not make a camera made by dnl manufacturer "Foo" work. if test "x$camlibs" = "xall"; then : else GP_CAMLIBS_WARNING fi echo "Please check whether the configuration I detected matches what you would like to have. E.g. make sure that USB support is there if you intend to use USB cameras with $PACKAGE_NAME. Please also check that PKG_CONFIG_PATH contains ${pkgconfigdir} before compiling any libgphoto2 frontend. " libgphoto2-2.5.9/auto-m4/0000755000175000001440000000000012623156263012071 500000000000000libgphoto2-2.5.9/auto-m4/ltoptions.m40000644000175000001440000003426212615454336014320 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 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 8 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_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT 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* | *-*-cegcc*) 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], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [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_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --with-aix-soname flag, and support the `aix-soname=aix' # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT # is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_WITH([aix-soname], [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) with_aix_soname=$lt_cv_with_aix_soname]) AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _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@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [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], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## 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])]) libgphoto2-2.5.9/auto-m4/ltversion.m40000644000175000001440000000127312615454336014306 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 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. # @configure_input@ # serial 4179 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.6]) m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) libgphoto2-2.5.9/auto-m4/po.m40000644000175000001440000004265212557123417012703 00000000000000# po.m4 serial 3 (gettext-0.14) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AM_NLS])dnl dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU msgfmt. if test "$GMSGFMT" != ":"; then dnl If it is no GNU msgfmt we define it as : so that the dnl Makefiles still can work. if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` AC_MSG_RESULT( [found $GMSGFMT program is not GNU msgfmt; ignore it]) GMSGFMT=":" fi fi dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po fi AC_OUTPUT_COMMANDS([ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" < #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) libgphoto2-2.5.9/auto-m4/libtool.m40000644000175000001440000112475312615454336013737 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 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) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 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 this program. If not, see . ]) # serial 58 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.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl 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 _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) 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' 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_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _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 AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl 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_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that 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 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 set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=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_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify 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' ]) # _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 ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # 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], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _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], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [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 "$][$1" | $SED "$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 "$" | $SED "$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' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) 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 \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_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]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false 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) 2011 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. lt_cl_success=: test yes = "$silent" && 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) ])# 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 that 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 # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _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 set != "${COLLECT_NAMES+set}"; 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 '$q' "$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' 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)], [Go], [_LT_LANG(GO)], [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 m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _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([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) 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)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) 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], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _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 there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; 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 ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) 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 yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; 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" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # 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 if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _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 yes != "$lt_cv_apple_cc_single_mod"; 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([TAGNAME]) # ---------------------------------- # 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. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`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 "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _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 no = "$enable_libtool_lock" || 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 what ABI is being produced by ac_compile, and set mode # options accordingly. 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 what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; 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* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. 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*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; 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" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; 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 yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. 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*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) 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_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR 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 bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _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_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _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" ## exclude from sc_useless_quotes_in_assignment # 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:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 yes = "[$]$2"; 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 "$_lt_linker_boilerplate" | $SED '/^$/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 yes = "[$]$2"; 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* | cegcc*) # 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; ;; mint*) # On MiNT this can take a long time and run out of memory. 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; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # 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 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; 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" && \ test undefined != "$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`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 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 yes = "$cross_compiling"; 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 $LINENO "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 /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 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; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return 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 yes != "$enable_dlopen"; 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* | cegcc*) 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 ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) 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 no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && 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 yes = "$lt_cv_dlopen_self"; 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:$LINENO: $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:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; 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 no = "$hard_links"; 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 where 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 yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; 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 relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; 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_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _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_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # 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 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # 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` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac 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" elif test -n "$lt_multi_os_dir"; then 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; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` 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 AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; 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 # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # 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' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # 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' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac 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=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $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 # correct to gnu/linux during the next big refactor 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* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc 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' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; 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 dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. 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 # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # 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' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # 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 # correct to gnu/linux during the next big refactor 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 ;; 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[[23]].*) 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$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' 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 ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" 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=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' 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 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; 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' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor 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 yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor 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 ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor 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 AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no 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], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # 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 # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) 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;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 # correct to gnu/linux during the next big refactor 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* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi 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 shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec 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' ;; 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 # correct to gnu/linux during the next big refactor 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 yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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=sco 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 yes = "$with_gnu_ld"; 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_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 # correct to gnu/linux during the next big refactor 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 no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _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([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _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], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that 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 that 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 m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; 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 yes = "$with_gnu_ld"; 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 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [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 # that 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 # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; 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 ;; haiku*) 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])(-bit)?( [LM]SB)? 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 glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; 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 ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi 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_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob 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 # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) 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 no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi 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:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $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:$LINENO: 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_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-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 yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _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([AC_PROG_AWK])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* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; 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 if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= 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"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$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"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/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, # D for any global variable and I for any imported 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};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,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 lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # 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 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #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. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$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_globsym_save_LIBS=$LIBS lt_globsym_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_globsym_save_LIBS CFLAGS=$lt_globsym_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 yes = "$pipe_works"; 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 # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' 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_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _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_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _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)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; 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* | cegcc*) # 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']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; 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)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $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 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _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 ia64 = "$host_cpu"; 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 ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # 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']) ;; 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 ia64 != "$host_cpu"; 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 | kopensolaris*-gnu | 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' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _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* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _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* | sunCC*) # 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 yes = "$GCC"; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; 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* | cegcc*) # 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']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; 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' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +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 case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; 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 ia64 = "$host_cpu"; 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 ;; 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' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # 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']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; 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 | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny 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)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # 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* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _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\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # 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)='' ;; *Sun\ F* | *Sun*Fortran*) _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 ' ;; *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,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; 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* | sunf77* | sunf90* | sunf95*) _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 that 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_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # 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]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # 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_PATH_MANIFEST_TOOL])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' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] 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 GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX 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") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ 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_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* | cegcc*) # 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 yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; 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 | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[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 ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, 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 install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _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* | cegcc*) # _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(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _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/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] 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, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); 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 ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; 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 | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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 no = "$tmp_diet" then tmp_addflag=' $pic_flag' 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; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # 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; func_echo_all \"$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' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; 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; func_echo_all \"$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 yes = "$supports_anon_versioning"; 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 tcc*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # 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)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; 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 $linker_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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $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 cannot *** 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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $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 no = "$_LT_TAGVAR(ld_shlibs, $1)"; 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 yes = "$GCC" && 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 ia64 = "$host_cpu"; 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 GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX 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") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; 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 yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; 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([$1]) _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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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([$1]) _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' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' 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* | cegcc*) # 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. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # 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 $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _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' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _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 `func_echo_all "$deplibs" | $SED '\''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(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; 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 ;; # 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 $pic_flag -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 yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$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 "x$output_objdir/$soname" = "x$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 yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $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 no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$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 yes,no = "$GCC,$with_gnu_ld"; 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 $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $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' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_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 no = "$with_gnu_ld"; 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 yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $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. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -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" && func_echo_all "-set_version $verstring"` -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 ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; 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* | bitrig*) 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__`"; 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 _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' 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 shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) if test yes = "$GCC"; 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" && func_echo_all "$wl-set_version $wl$verstring"` $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" && func_echo_all "-set_version $verstring"` -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 yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $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" && func_echo_all "-set_version $verstring"` -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 "-set_version $verstring"` -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 yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $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 $pic_flag $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 yes = "$GCC"; 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 sequent = "$host_vendor"; 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 yes = "$GCC"; 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 CANNOT 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 yes = "$GCC"; 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 sni = "$host_vendor"; 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 no = "$_LT_TAGVAR(ld_shlibs, $1)" && 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 yes,yes = "$GCC,$enable_shared"; 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_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$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_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_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* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_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_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([], [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([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _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 ## 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_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 what 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 no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac 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 yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _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], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi 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_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(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_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 yes != "$_lt_caught_CXX_error"; 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_CFLAGS=$CFLAGS 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++"} CFLAGS=$CXXFLAGS 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 yes = "$GXX"; 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 yes = "$GXX"; 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 yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -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 -v "^Configured with:" | $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 ia64 = "$host_cpu"; 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive 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 if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; 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 yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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([$1]) _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' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' 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* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # 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 _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # 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 $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _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(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _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, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); 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 ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; 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 ;; freebsd2.*) # 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 ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; 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 "x$output_objdir/$soname" = "x$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; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$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 no = "$with_gnu_ld"; 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; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; 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 $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $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" && func_echo_all "-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_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -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 | kopensolaris*-gnu | 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; func_echo_all "$list"' _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 | sort | $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 | sort | $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 | sort | $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 | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above 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; func_echo_all \"$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=`func_echo_all "$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; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # 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 yes = "$supports_anon_versioning"; 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; func_echo_all \"$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='func_echo_all' # 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 ;; openbsd* | bitrig*) 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__`"; 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=func_echo_all 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" && func_echo_all "$wl-set_version $verstring"` -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" && func_echo_all "-set_version $verstring"` -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 "-set_version $verstring"` -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=`func_echo_all "$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; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; 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" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $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 -v "^Configured with:" | $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* | sunCC*) # 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='func_echo_all' # 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 yes,no = "$GXX,$with_gnu_ld"; 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 $pic_flag -nostdlib $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 $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -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 -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $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 $wl-h $wl$soname -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 -v "^Configured with:" | $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 CANNOT 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(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _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 no = "$_LT_TAGVAR(ld_shlibs, $1)" && 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 CFLAGS=$lt_save_CFLAGS 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 yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf 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). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _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 AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])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 ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac 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 $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev 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 prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$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 no = "$pre_test_object_deps_done"; 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 CFLAGS=$_lt_libdeps_save_CFLAGS # 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)= ;; 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_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_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _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_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(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_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 yes != "$_lt_disable_F77"; 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 lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS 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 no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac 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 yes = "$enable_shared" || 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 CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _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_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _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_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(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_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 yes != "$_lt_disable_FC"; 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 lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS 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 no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac 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 yes = "$enable_shared" || 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 CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" 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_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS 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 _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_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... 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 CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # 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_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go 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 _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_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... 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 CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_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_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= 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 CFLAGS=$lt_save_CFLAGS ])# _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 set = "${GCJFLAGS+set}" || 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_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # 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_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _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 10 -lt "$lt_ac_count" && 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], [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_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS libgphoto2-2.5.9/auto-m4/progtest.m40000644000175000001440000000563412557123417014133 00000000000000# progtest.m4 serial 3 (gettext-0.12) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) libgphoto2-2.5.9/auto-m4/lib-link.m40000644000175000001440000005534312557123416013766 00000000000000# lib-link.m4 serial 4 (gettext-0.12) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, dnl hardcode_direct, hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib$1-prefix], [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib$1-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) libgphoto2-2.5.9/auto-m4/gettext.m40000644000175000001440000004513012557123416013742 00000000000000# gettext.m4 serial 28 (gettext-0.13) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define(gt_included_intl, ifelse([$1], [external], [no], [yes])) define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Set USE_NLS. AM_NLS ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. dnl Add a version number to the cache macros. define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, [AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], gt_cv_func_gnugettext_libc=yes, gt_cv_func_gnugettext_libc=no)]) if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], gt_cv_func_gnugettext_libintl, [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], gt_cv_func_gnugettext_libintl=yes, gt_cv_func_gnugettext_libintl=no) dnl Now see whether libintl exists and depends on libiconv. if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext_libintl=yes ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if test "$gt_cv_func_gnugettext_libc" = "yes" \ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl For backward compatibility. Some Makefiles may be using this. if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST(INTLOBJS) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl Checks for all prerequisites of the intl subdirectory, dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. AC_DEFUN([AM_INTL_SUBDIR], [ AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_ISC_POSIX])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_C_CONST])dnl AC_REQUIRE([bh_C_SIGNED])dnl AC_REQUIRE([AC_C_INLINE])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([jm_AC_TYPE_LONG_LONG])dnl AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl AC_REQUIRE([gt_TYPE_WCHAR_T])dnl AC_REQUIRE([gt_TYPE_WINT_T])dnl AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) AC_REQUIRE([gt_TYPE_INTMAX_T]) AC_REQUIRE([gt_PRINTF_POSIX]) AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_REQUIRE([jm_GLIBC21])dnl AC_REQUIRE([gt_INTDIV0])dnl AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl AC_REQUIRE([gt_INTTYPES_PRI])dnl AC_REQUIRE([gl_XSIZE])dnl AC_CHECK_TYPE([ptrdiff_t], , [AC_DEFINE([ptrdiff_t], [long], [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) ]) AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ __fsetlocking]) dnl Use the _snprintf function only if it is declared (because on NetBSD it dnl is defined as a weak alias of snprintf; we prefer to use the latter). gt_CHECK_DECL(_snprintf, [#include ]) gt_CHECK_DECL(_snwprintf, [#include ]) dnl Use the *_unlocked functions only if they are declared. dnl (because some of them were defined without being declared in Solaris dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built dnl on Solaris 2.5.1 to run on Solaris 2.6). dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. gt_CHECK_DECL(feof_unlocked, [#include ]) gt_CHECK_DECL(fgets_unlocked, [#include ]) gt_CHECK_DECL(getc_unlocked, [#include ]) case $gt_cv_func_printf_posix in *yes) HAVE_POSIX_PRINTF=1 ;; *) HAVE_POSIX_PRINTF=0 ;; esac AC_SUBST([HAVE_POSIX_PRINTF]) if test "$ac_cv_func_asprintf" = yes; then HAVE_ASPRINTF=1 else HAVE_ASPRINTF=0 fi AC_SUBST([HAVE_ASPRINTF]) if test "$ac_cv_func_snprintf" = yes; then HAVE_SNPRINTF=1 else HAVE_SNPRINTF=0 fi AC_SUBST([HAVE_SNPRINTF]) if test "$ac_cv_func_wprintf" = yes; then HAVE_WPRINTF=1 else HAVE_WPRINTF=0 fi AC_SUBST([HAVE_WPRINTF]) AM_ICONV AM_LANGINFO_CODESET if test $ac_cv_header_locale_h = yes; then AM_LC_MESSAGES fi dnl intl/plural.c is generated from intl/plural.y. It requires bison, dnl because plural.y uses bison specific features. It requires at least dnl bison-1.26 because earlier versions generate a plural.c that doesn't dnl compile. dnl bison is only needed for the maintainer (who touches plural.y). But in dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put dnl the rule in general Makefile. Now, some people carelessly touch the dnl files or have a broken "make" program, hence the plural.c rule will dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not dnl present or too old. AC_CHECK_PROGS([INTLBISON], [bison]) if test -z "$INTLBISON"; then ac_verc_fail=yes else dnl Found it, now check the version. AC_MSG_CHECKING([version of bison]) changequote(<<,>>)dnl ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) changequote([,])dnl ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac AC_MSG_RESULT([$ac_prog_version]) fi if test $ac_verc_fail = yes; then INTLBISON=: fi ]) dnl gt_CHECK_DECL(FUNC, INCLUDES) dnl Check whether a function is declared. AC_DEFUN([gt_CHECK_DECL], [ AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, [AC_TRY_COMPILE([$2], [ #ifndef $1 char *p = (char *) $1; #endif ], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) if test $ac_cv_have_decl_$1 = yes; then gt_value=1 else gt_value=0 fi AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) libgphoto2-2.5.9/auto-m4/lib-ld.m40000644000175000001440000000675612557123416013434 00000000000000# lib-ld.m4 serial 3 (gettext-0.13) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 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 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 GCC]) 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. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path 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(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) libgphoto2-2.5.9/auto-m4/nls.m40000644000175000001440000000350512557123417013053 00000000000000# nls.m4 serial 1 (gettext-0.12) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ]) AC_DEFUN([AM_MKINSTALLDIRS], [ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but $(top_srcdir). dnl Try to locate it. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) ]) libgphoto2-2.5.9/auto-m4/lib-prefix.m40000644000175000001440000001250712557123416014321 00000000000000# lib-prefix.m4 serial 3 (gettext-0.13) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) libgphoto2-2.5.9/auto-m4/ltsugar.m40000644000175000001440000001044012615454336013736 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 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 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. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # 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 ]) libgphoto2-2.5.9/INSTALL0000644000175000001440000001720012610415617011551 00000000000000######################################################################## # This file describes how to compile and install libgphoto2. ######################################################################## Follow these steps to build and install libgphoto2 from the source code. You don't have to run most of these steps as root, except when explicitly required. In fact, you really shouldn't. In order to get libgphoto2 running after installation, you will probably want to read The gPhoto2 Manual. It is available from the homepage: http://gphoto.org/ http://gphoto.com/ http://gphoto.sourceforge.net/ At lease one of these should work at any time. =============================== Step 0: Preparing configuration =============================== If you have obtained your copy of gphoto2 packaged from a .tar.gz or .tar.bz2 tarball, SKIP THIS STEP. If you have obtained libgphoto2 from SVN, then you will have to prepare for step 1 (the configuration of the sources) by running the autoreconf program. For autoreconf to succeed, you require the following tools: automake autoconf autopoint (needed if installing from github) gettext (possibly from -dev or -devel package) libtool (possibly from -dev or -devel package) in versions compatible with each other and with libgphoto2. Most combinations on current GNU/Linux systems work, whereas BSD systems tend to have some compatibility problems. We recommend you call autoreconf like this: $ autoreconf --install --symlink ============================= Step 1: Configure the sources ============================= $ ./configure --prefix=/usr/local to prepare a tarball source tree for installation in (e.g.) /usr/local or run ./configure --help in order to find out about more configuration parameters. See Appendix A at the end of this file for some hints on configuring for certain platforms. The following software components are optional, and will improve the libraries' and/or command-line client's functionality if present: libusb (ver. >= 0.1.6a) -- Universal Serial Bus camera support gettext (ver. >= 0.10.40) -- internationalization using shared library gtk-doc -- documentation built in doc/api/ libexif - EXIF tag support Please check the output of the configure script for whether all desired libraries have been detected correctly. E.g., you might have to add the path where libusb-config resides to your PATH before running configure. =========================== Step 2: Compile the program =========================== You will probably be best off running GNU make. On GNU/Linux linux systems, you can run "make", on other systems (such as *BSD), you will have to run "gmake" or something similar. The classic way to compile the program is just to run $ make or $ make -jN (if you have N CPU cores) and wait until the source is built. If you want to compile only one or two specific camlibs, run something like $ make -C camlibs canon.la ptp2.la ============================== Step 3: Installing the program ============================== To install the stuff you just compiled by running "make", you can just run $ make install now. If installing to a directory which is not writable by your current user, you will have to run it as root. This installs the software and documentation into the proper directories on your system. If you want to install only one or two specific camlibs, run something like $ make CAMLIBS="canon.la ptp2.la" install-camlibs On Linux, the installed libtool .la files are not needed and can be removed. ==================================================== Step 4: Installation is finished - now what do I do? ==================================================== Note that libgphoto2 is not designed to be run by a setuid/setgid program. Running ANY libgphoto2 frontend as root or setuid root or in a similar fashion will open up a SECURITY HOLE in your system! If you run into problems, please read the FAQ (at the website) first. For more general information about how to configure libgphoto2, read The gPhoto2 Manual (at the website). If you have permission problems when accessing your camera, read the chapter on Permission Setup -- you will probably want to create a new user group for the users that are to have camera access and change the permissions of the serial or USB device to match. =============================================== Appendix A: Platform specific compilation hints =============================================== libgphoto2 has been successfully used on many system. Some systems where it has been reported to successfully compile are listed below. Not all, or even any, camera libraries have been tested on these systems, so there may be endian other other issues that prevent some camera libraries from working. Please report any changes to this list to the gphoto developer mailing list. As of this writing, USB support is only available on Linux and FreeBSD as those are the only systems on which libusb is available. General Hints: - If you have build problems in the intl or po directories, try re-running configure with the --disable-nls flag. - If configure stops due to an error with 'test', try re-running configure with the --without-usb flag. - If 'make' reports an error, try using GNU make (often called gmake or gnumake) instead of the make that comes with your system. - If one camera driver (camlib) has compilation errors, re-run configure with an appropriate --with-camlibs= flag to prevent that specific camlib from being compiled. The list of working systems is a little outdated as of 2002-11-20, but we have still left it here as a reference. i386: Debian GNU/Linux 2.2 Red Hat Linux 7.1 Red Hat Linux 4.2 TurboLinux 6.5 Slackware Linux 8.0 FreeBSD 4.3 Try the following to configure the optional libraries: env CFLAGS="-I/usr/local/include" CPPFLAGS="-I/usr/local/include" \ LDFLAGS="-I/usr/local/lib" ./configure (you may also need to append the flag --disable-nls). Use GNU make to build (gmake). Alpha: Debian GNU/Linux 2.2 OpenBSD 3.0 NetBSD 1.5.1 Configure with this command: ./configure --disable-nls Use GNU make to build (gmake). Tru64 5.1A Configure with this command: env CFLAGS='-D__STDC_VERSION__=0' ./configure --disable-nls Use GNU make to build (gnumake). PowerPC: Debian GNU/Linux 2.2 Apple Darwin/OS X Need dlcompat from Configure with this command: env CFLAGS="-I/path/to/dlcompat -no-cpp-precomp" \ LDFLAGS="-L/path/to/dlcompat" ./configure --disable-nls Need libtool ver. >= 1.4.2a Sparc: Debian GNU/Linux 2.2 Solaris 8 (gcc) Configure with this command: ./configure --without-usb and use GNU make to build (gmake). StrongARM: Intimate+Debian iPAQ GNU/Linux (native gcc) Linux (cross-compiled gcc) Itanium: Red Hat Linux 7.1 (gcc) The following systems have some problems compiling, but may be made to work with some effort: Itanium: Red Hat Linux 7.1 (Intel ecc) There is a bug in ver. 5.0.1 of this compiler tickled by gphoto2 that prevents full compilation. Need better libtool support (newer than version 1.4.2). Red Hat Linux 7.1 (sgicc) Need better libtool support (newer than version 1.4.2). Sparc: Solaris 8 (cc) Sun's cc doesn't support #warning or # or ## macro features, which occur several times in the code. MIPS: IRIX (cc) MIPSpro C doesn't support #warning. Thanks go to SourceForge for their compile farm, and Compaq for their TestDrive program which allowed gphoto2 to be tested on many of these systems. libgphoto2-2.5.9/po/0000755000175000001440000000000012623156275011224 500000000000000libgphoto2-2.5.9/po/insert-header.sin0000644000175000001440000000124012557123417014404 00000000000000# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } libgphoto2-2.5.9/po/ja.gmo0000644000175000001440000033116312623156274012250 00000000000000Þ•ž %+üI¨b©bÁbÖb#çb c#%cIc^cqcŠchœcdd7d4Rd‡dFŸdædîdõd ûdbe;ke§e¶eÅÒeO˜f ègòg÷güghh hhhhh"h+h/h3h8h=hAhFhJhOhSh [hfh lhwh |h‡h h˜h›h £h ®h¹h¼h ¾hÈhÌhÒh ×hâhæhìhïh òh ýhiii ii#i&i -i 7iAiEiKiQiTi Yi cimipitiwiyi ~iˆi‹iŽi‘i ši¥i¿i Ýi èiõiýi j j j *j 7jDjLjRjWj\jajwjzj €jŒj“j'šjÂj Ëj.Öj-k 3k?k9Hk‚k‹kœk£k ·kÄk Ék×kékòkl -l;lTlgl|l‘l¦l¾lÍl Þl èlólm(mAm\momwm{m/ƒm+³m1ßm'n(9nbn €nŽo¡o³o »ooÉo9p Kp Xpep*„p#¯pÓp Øpâpôpýpq q )q 7q EqQq aq mqyqq„q‹q“q ›q ¦q ²q¾q Òq Þqêqýqr rr$r6r:rCrJrYrhr}rOŒr Ür èrõr s ss/sIs8is#¢s8Æs9ÿs9t+Mt(yt@¢t ãtu1 uRuou#„u¨uÅuÝuüuv#v:vTvhvv)˜v$Âv>çv&w.w?wNwlwqw€w™w¯w ÀwÍw(æwx#x ?xKx[x bxnx ˆx’x¤x­x ¼xÊxÑx ×x âx íxùx yy&yDyYyoy…y<›yØyõyz z&z :z"Hzkzz ˆz ’z œz¦zÅzÔz:ãz<{[{x{“{­{È{ä{||;|!U|'w|Ÿ|¾|Ú|ñ|/ }<=}<z}·}(Ñ}ú}~ 2~-S~4~;¶~0ò~#8Ws5Œ=Â5€s6€ª€Ç€Û€kä€EP–±ÎÕ í ø‚ ‚ *‚6‚ M‚[‚ o‚ÿ|‚|ƒ…ƒ”ƒƒ£ƒ¨ƒ×¸ƒ… —…¥…¸…Ñ… â….î… † *† 7†ED†І›†¯†ņµÜ†ª’‡,=ˆj‰z‰Œ‰ ‰¹‰Ήâ‰ö‰ Š!Š6ŠOŠ^ŠeŠ uŠŠ–Š<«ŠèŠ‹‹4‹N‹j‹‰‹‹“‹ ›‹§‹­‹ ¾‹É‹Þ‹æ‹ì‹ŒŒ(-ŒVŒ'jŒ’Œ ¥Œ1°Œ:âŒ4-R€‰¤ºÚìŽ Ž'Ž=ŽWŽ fŽtŽ}Ž€Ž…ŽŠŽŽ’Ž5•ŽËŽÞŽîŽ,óŽ = MZ kw†–U¦ ü_z ¥®NÅ‘.‘?‘Z‘k‘s‘y‘‘ ‘ ›‘ ¦‘´‘Ñ Õ‘à‘ó‘’’ +’5’ >’I’$[’€’‘’"¡’Ä’Û’ ä’ ð’ý’“!“'“7“ F“Q“ e“p“ƒ“’“¡“¼±“n— t——¡—¶—Å—Ö—î—˜˜ ˜ ˜#˜3˜;˜B˜ X˜c˜s˜ƒ˜ ”˜¢˜»˜˘à˜"ð˜™.(™W™]™b™t™Øˆ™ašQ{šUÍš2#›V›]›m›p› Œ›–›¨›®›³›Æ›Ì› ê›ø› œ œ $œ /œ =œHœ]œoœ‡œ˜œ/¨œØœôœ! (5> P%\‚ –1£Õé*ý(ž0žJž`žyž“ž®žÉžæž ŸŸŸšŸ­Ÿ ²Ÿ½Ÿ ÕŸ ߟëŸôŸÿ    ¡¢Ò—¢^j£?É£ ¤£¤g¤*¥1¥5¥O¥k¥z¥ ƒ¥¥;™¥ Õ¥ߥè¥í¥ õ¥ ÿ¥ ¦ ¦*¦H¦_¦e¦u¦ˆ¦—¦°¦#˦ï¦ õ¦§§9§EU§›§ ²§Ó§×§ç§ ú§%¨-¨ 1¨<¨ K¨V¨\¨b¨ i¨ v¨Bƒ¨ƨSͨ!©)© G©R©c©j©~©–© ­©¹©Ö©ò© ªª+ªp3ª¤ªK­ªùªt«,v«ˆ£«,¬B¬S¬ [¬f¬ u¬ €¬ ‹¬ •¬Ÿ¬ ¨¬³¬¬!Ǭ5é¬G­ g­$s­ ˜­¥­­­²­­€Ñ­ñR¯D°G° g°t°“°¦°¶°¿°ΰã°ù°#±8±U±]±q±‚±™±­±űܱ á±ï±ö±þ±.²6² G²Q²9Z²”²ª²Á²+Ù²³ ³ ³ ³0³4³;³>³T³Mg³ µ³³ѳå³ë³ú³ ´!´ A´b´ j´u´ˆ´Œ´ž´½´Í´ë´ý´µ-µLµjµ‰µ£µ¹µÓµêµ¶¶7¶?¶Z¶v¶’¶§¶»¶жë¶'·,(·U·d·|· ·œ·µ·É·¬á·­Ž¸Y<¹ –¹ ¢¹ ®¹º¹̹ à¹í¹ºº)º2ºJº OºYº kºvºº …º’º¤º«º½ºƺ!ຠ»#» 8»Y»*r»»·» ͻڻê»î»÷»¼C¼[¼3a¼*•¼À¼à¼ý¼½ ½ "½.½ 2½@½R½d½k½~½ š½ ¨½Z²½ ¾ ¾'¾ =¾H¾Z¾‹o¾–û¾’¿˜¿$¨¿Í¿NÓ¿Ž"Àü±À ®Á ¸ÁÃÁâÁòÁ   & 1Â?ÂRÂn‚Â,ˆÂµÂ»Â ÃÂÍ ÜÂê úÂÃ$#Ã#HÃlÃ^‚Ãáà èà ôÃjÄkÄ}Ä†Ä šÄ ¤Äz®Ä)Å.Å5ÅHÅ.XÆ;‡ÇµÃÇÌyÈ7FÉ3~ɲÉ3¸É/ìÉÊ$ÊH?ʈÊÊ”Ê§Ê¯Ê¸Ê ËÊÙÊ õÊÿÊË()Ë RË `ËkËoËr˃ËGŸËÙçËèÁÌìªÍL—Î&äÎ, Ï%8Ï»^Ï-Ð9HÐ)‚ÐM¬Ð0úÐ7+Ñ,cÑ7Ñ,ÈÑõÑ=Ò•RÒ%èÒÓ:+Ó;fÓ'¢ÓÊÓãÔ ÿÔ ÕÕ3Õ HÕTÕkÕ~Õ0ÕÀÕÆÕ ÕÕ âÕ îÕùÕÖÖDÖdÖ/}Ö­ÖJÇÖ9×L×h× q× |× ˆ× ’×œ×¯×Æ× Î×Ù× öרØ)Ø AØOØ bØpØƒØ˜Ø ®Ø¼ØÍØãØóØAÙDJÙ Ù-šÙÈÙÚÙíÙ ÚÚ&Ú5ÚDÚ!SÚuÚ ŠÚ ”Ú ¡Ú «ÚµÚ»Ú ÍÚ ÚÚ æÚ ñÚ üÚ ÛÛ 1Û<ÛLÛ6\Û“Û ˜Û ¦Û ²Û ÀÛ ÌÛ ØÛåÛêÛÿÛÜ3Ü IÜ UÜ`ÜoÜls܃àÜndÝ6ÓÝ ÞÞ%Þ 8Þ EÞ RÞ _Þ lÞ yÞ †Þr’Þß ß%ß -ß-;ßNißQ¸ßL àPWà?¨à?èàD(á@máI®á?øá<8âQuâVÇâVãXuãXÎã8'ä`äfäyä•ä¨ä °ä»äÃä’Èäï[æKçZç7mç¥ç ªç·ç ÀçËç=Üçè,è 5èCèUèjèoèƒèˆèè¡è¥è¨è Áè6Ìèéé é é %é/é5éJ<é‡é›é®éÂé;Ôé<êMê Vê`êsê"|ê Ÿê©êÀêÑêêê ë ëëëN&ëšuëí)í%Cí)ií“í²íÐíêí î(îqHîºî'Óî(ûî@$ï%eï_‹ïëï óïýï ð`ðXpð Éð×ðñð ÷ñô ôôôô!ô%ô+ô/ô5ô7ô=ôCôGôKôPôUôYô^ôbôgôkôrôyôô†ô ‹ô–ô œô§ôªô±ô¸ô¿ôÂôÄôÊôÎôÔôÙôàôäôêôíôðô÷ôþôõõ õõõõõ$õ*õ.õ4õ:õ=õBõ HõRõUõYõ\õ^õcõiõlõoõ võ€õ+õ4¼õñõö ö $ö1öAöWöjö}ö ö ö§ö¬ö±ö¶öÓöÖöÜöòöùö' ÷1÷:÷@J÷H‹÷ Ô÷ á÷=î÷,ø3øOøVø uøø †ø “ø ´ø'¿ø%çø ùù>ù,Tù&ù,¨ùÕùìù* ú6ú=úEúdú$zú*ŸúÊúâúéúíúGþúZFûb¡ûQüWVü+®üBÚü$þ!Bþdþtþ‡þÿ6ÿOÿGhÿ>°ÿ ïÿ '0Xh x>‚ Á ÎÛ âï ö    , 6 CPm~ ¥²È Øâûÿ -CV_kËÞñ #9'L!td–'ûK#No(¾QçF9h€é$ú6<V'“J»71>%p–±%Ê'ð!*:%e6‹<Â<ÿ< L b <u  ² ¼ $Ñ 3ö !* L 3k >Ÿ -Þ 9  F S c  j 7w ¯ ¶  Ì Ö õ     , ?  O  \  f 0p -¡ Ï á ó T @Z *› Æ Ö Ý í ô  %8Nd$wœ¯aÅj'+’+¾'ê3=F9„6¾3õ-)9WB‘:Ô00@*q9œnÖfE6¬;ã74W<ŒIÉ\\pPÍ#:B0}1®Yàf:?¡Íá3¯ ãi Ew*½$è - HS!k­½Íã\ó P [g n{"‚¥ÁÈä$)GE`¦¿ØUî$D *i -” ! /ä þ"}#$‘$/¶$ æ$)%!1%$S%'x%+ %!Ì%!î%*&;& T&a&z&.“&#Â&Pæ&57'/m'/')Í'5÷'8-(f(j(p(€((”( °(º(Ð( ×('á( )6()-_)$)&²)+Ù)*F*l_*lÌ*l9+¦+­+ É+4Ó+ ,,!+, M, Z,!d,†, œ,©,²,µ,º,¿,Â,Ç,GÊ,5-H- ^-Bk--®-Ü-"õ-.+.$J.*o.š.l³. /66/˜m/!0(0 F0S0,i0œ–0/31'c11‹1½1Û1â1é1$ÿ1$2=2W2p2‰2¥2.»2$ê2$3"43W3m3ƒ3!™36»3ò342/4!b4„4 4—4°4Ì4ë4%û4!5:5T5s5-5½5Ó5$ì5Ê6 Ü; é;?÷;-7<e<<!œ<¾<Ó< ã<ð< = == $=!1=S=!o=‘=®=Í=æ=ü=!>7>-S>>T >õ>ù>?? '?$2@]W@?µ@Kõ@ AANA_A&bA‰AšA ºAÇA!×AùACBDBZBjB €BBB­B½BÓB-èB$C;C@PC7‘C3ÉCýC D D#D'DAD%HDnD ŠD?•DÕDóD/EAE+HEtE'‹E6³E=êE<(F0eF6–F!ÍFïF²ÿF ²G¾G ÃGÏGêG üG H6H=IH‡I•Kî­KkœLEMNM¶_M…N œN¦N'¶N$ÞNOO/O>O?NO ŽO˜OŸO £O°OÃOÖOïOLP"OPrP$yP žP¿P/ØP/Q88Q qQ ~Q*‹Q'¶Q3ÞQKR^R0wR¨R¬R¼RÏR!åRS S S #S.S 4S>STSsSR’SåShøSaThT€T!–T¸T¼TÍT*ÝTU)U+IUuU‹U›U±U¸U FVuPVÆV˜ÏV.hWË—WcXzX ŒX –X £X ¯X ¼X ÉX ÓXàX óXYY@!YEbYY¨YZ3ZIZfZvZ }Z‡Z° ZQ\ o]Fy]À]<Ù]^(5^^^t^Š^.£^'Ò^Eú^1@_r_+Ž_º_*Ù_`'`-B`p`!w`™` ` ¨`7²`ê`ÿ` araŒaža¯a<Áaþabb@bIb MbZb]bpb{‰bcc.c McWc6jc¡c;Àc9üc6d=d!Pdrd.vd+¥dÑd4ïd$e(Aeje(Še%³e1Ùe% f1fQf"qf+”f+Àf(ìfg=g)[g2…g¸gÒg(íg4h1Kh/}h2­h%àhi#iCi=Zi˜i+²iÕÞiØ´j_kíkökÿkl!l=lMlclxlˆll­l´l ÄlÑl êlôlûlm*m!:m\m<cm6 m9×m?nTQn6¦nBÝnB ocoxo Žoœo  o®o ÁofÌo 3pT=pD’p/×p-q5qNqUqequqyq•q¨q »q Èq/éqr 0rl=rªrÆrâr s s$s¤:sØßs¸t¼t,Ôtuou×wu?Ovw¥w*»wæwxx%x :xDxVxix-x$¯x ÔxEáx 'y4y DyNydyzyy%¦y1Ìy1þy*0zq[z ÍzÚzðzw{{{—{$ž{Ã{Ù{Šï{ z| „|)‘|v»|‹2~K¾ù €:r?‚l²‚ ƒ9,ƒ-fƒ”ƒ@¤ƒ^åƒ D„Q„X„ n„x„„$›„À„Ú„3ó„'…(E…!n… …›…Ÿ…¢…'µ…aÝ…?†]‡`mˆXΉ<'ŠNdŠ@³ŠÐôŠDÅ‹k Œ?vŒW¶Œccr`Öf7Ž;žŽ!ÚŽ]üލZH6LBƒcÆ?*‘j‘-ú’(“8“ V“w“’“'¢“Ê“ã“Zö“ Q”^”z””¥”¸”$È”í”Uñ”,G•It•#¾•mâ•NP–Ÿ–¸–¿–Ó– æ– ò–ü– —-— 4—.A—p—$ƒ—(¨—(Ñ—ú— ˜˜2˜K˜ f˜ ‡˜•˜¤˜Ø0â˜e™ty™î™K š'Wš!š+¡šÍšBæš)›>›S› h›‰›¤›¶›Ë›Û›ë›ñ›œœ/œ @œKœ`œ'xœ  œ­œ¿œ^Ñœ07PWpw ©³ ÈÕnî ]ž hž sžž˜†žßŸ­ÿŸI­  ÷ ¡'¡B¡T¡f¡x¡Š¡›¡±¡…Ä¡J¢Q¢g¢ w¢L„¢sÑ¢qE£\·£j¤V¤VÖ¤m-¥S›¥]ï¥ZM¦Y¨¦f§wi§qá§yS¨sͨGA©‰©©3­©*á© ªª#ª 3ªÀ@ªó¬õ¬ ­C­V­[­p­t­{­M–­*ä­ ®® ,®9® I®0V®‡®Ž®•®¦®ª®­®¿®=Õ®¯ ¯ %¯/¯ B¯ O¯\¯nc¯.Ò¯.° 0°=°HY°I¢°ì°ó°- ±:±)M± w±± ±°±Ʊ Þ± é±ô±û±p²ýÊ é3¯ð¨çS¹“‚ëwÜéxþüDÄ{"fö’kL&?SMQ^!zØL¨l–pðeñ`éeCY3„†72râAÎj‡žv‚]Ûš” f~¸›h±êXu¢,U-Œ è}Æt5Áîz'rTvËLZU±2°’@Üy÷Ñ£ú•ßc–šñ>ª< Æ ¶ŸdV“xŒµ†QÝ9½$qpšdš›øDoÖîIl:›ey‡ÀÓBp@'û+øÒw ˜áœ_}gÛ&6È¿ÎeÀcœ£~dö˜cÂ\iBƒGÁPÛi"D ¹uüÇÈ>D#Ê&U<%à‘‡¤øœ rŠ~RŒŽÙá[Ò wIæ.ò»ÄàHy.ÐÂØU,Ü/«íHFº õ–åT-Õ3%.îäF"ÌJfh$ˆTú¼ÑA’ä¡}[‹t«Ý›’x™¨åÛ¾(Ä80Ø·oÃEï(Šx0Xð¦‹1í€8‰×ìáËW0\^9!>T‹|¢Y™Í:¡‘È9m´ Fô¨ºm‰ !/ C&½nžå¯A ;• ·îüùGÇlŸf`—V•_iE"ˆ¥öõE‰ëÝÔéÞ•ç6ɳZvŠ„£¾~,ÿajy)-=—о”½]²j|ØzÖÕ²r64ÖNxÓûs7gk‹¯X)Ï  *ˆµáõór±à-/Î1Ú¸sFtm€ÅÉ^*­;"wa.IuìÉ;‚ÐvÖ{\…kdо–)3z¢Þt­‚¦@œi¼“a!×:`“­ß¦>‡»RÌ©Yíܵ.:IqªÏiuÓÍe%ò7VPqX¤MH')h+õƒý!”¬žö$ï®Wùó`‚b|RÔb{Õ¿>´?¶ÚßuN¬û G Œ„—Ù§=§EqêL¡S*j;X9‘à=A hs” 4?46AWLj5ûÔK=*¤[ÃP÷b‡_·z(“Ž]|~» aì/ë½jކ†bãI9²7º$,€·®<ÏšE™\ˆœ™ÔâË_µ±´ VŸ®È­*«Uÿí5ðÓ Þžý—{ËNm@¸€{âc[ƒ}&@CÚübw(þ³…Ogæþè¥ß#ø•òÙ¹ Z,n2Õ'B4ÁÏ_N\Ò™Hªk;ªú˜7´ …RÅÅÆ¥C›ÇD©ëç45C³¦¼ÞÍŒ³»¥…-6׿Yy…¿Ê%8RM”êaJOH3n¬d pïý? (§G012vQV‰Q÷ž˜g:„KÅJÄ8|`†ìn?âñ^׎ôYÀZKK=æh/K€<Ñ^©nã<Ñôs‘ùÿPä1Á$¯‘Š£¹+ÒMs)òPW8#¶mSÚ5ñÌ访°ºó#¼ZóOÊlT«¤Îþ'°F˜qãúÍ’#GOJQ‹+¶ŠLŽcÀ¬o–÷§+WÆkp ãgä ÃSÉ]ƒ0©M¸²ïÙÂù¢1B l[tÌô çÿ}—‰ÃJèÝ „f2]êo°N¡%åB oƒOŸ Access Capability: %s Canon Wifi support File Download, Free Space (Bytes): %llu (%lu MB) Free Space (Images): %d Maximum Capability: %llu (%lu MB) Nikon Wifi support Storage Type: %s StorageDescription: %s VolumeLabel: %s Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Device Capabilities: Device Property Summary: Storage Devices Summary: Drive %s %11s bytes total %11s bytes available (battery is %d%% full) Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d%.0f mm%0.4fs%d mm%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)(Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 min1 minute1.01.51.6x1/151/21/301/41/601/810 mins10 minutes10 mm10 seconds100%1152 x 86412 mm1280 x 9601515 mins15 minutes16 seconds1x22 seconds2.02.0 m2.5x20 seconds25%29 mm2x3030 minutes30 seconds34 mm3x44 seconds41 mm4x5 mins5 minutes5 seconds50%51 mm58 mm5x6 mm6 seconds640 x 4806x75%7x88 mm8 seconds8x9xACAC PowerAC adapterAC adapter is connected. AC adapter is not connected. AE & FlashAE Lock onlyAE onlyAE-lockAE/AF LockAF Beep ModeAF Lock HoldAF Lock OnlyAF Lock onlyAF ModeAF OnAF-AAF-CAF-SASIC Revision: %d.%d AVA_DEPAccess modeActionAd-hocAdc65 Benjamin Moos AdobeRGBAlbum nameAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Anti-redeyeAnywhereAox generic driver Theodore Kilgore ApertureAperture changedArtistAssign Func. ButtonAssist LightAutoAuto ApertureAuto Focus Mode 2Auto ISOAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off TimeAuto Power Off (minutes)Auto exposure lockAuto focus: AI focusAuto focus: AI servoAuto focus: one-shotAuto, red-eye reductionAutofocus ModeAutofocus error.AutomaticAutomatic Automatic (No Flash)Automatic FlashAutomatic exposure adjustment on previewAutomatic flash on captureAvailable memory: AverageB/WBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery LevelBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery Life: %i Battery ModeBattery TypeBattery exhausted, camera off.Battery level: %.1f Volts. Revision: %08x.Battery status: %s, AC Adapter: %s BeepBeep ModeBeep mode changedBeep offBeep onBestBit rate %ld is not supported.Black & WhiteBlack & whiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlueBottomBright+Bright-BrightnessBrightness+Brightness-Brightness/ContrastBuiltin RAMBuiltin ROMBulb Exposure TimeBurstBurst IntervalBurst NumberBusyButtons and DialsCRWCSM MenuCameraCamera ActionsCamera Body IDCamera ConfigurationCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ModeCamera ModelCamera Model: %s Camera OK.Camera OwnerCamera SettingsCamera Status InformationCamera and Driver ConfigurationCamera busy. If the problem persists, please contact %s.Camera could not complete operationCamera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera unavailable: %sCamera was already activeCamera was woken upCan't delete all images.Can't delete image %s.Cannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCaptureCapture SettingsCapture TargetCapture type is not supportedCardCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card name: %s Free space on card: %d kB Card not supported.Card removed during access.Center SpotCenter-WeightedCentreCentre-spotChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorClose sessionCloudyColorColor GainColor ModeColor ModelColor SettingsColor SpaceColor TemperatureCommand can not be cancelled.Command order error.Communication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompatibility ModeCompressionCompression SettingConfigurationConfiguration for your FUJI cameraConnected to cameraContrastContrast+Contrast-CopyrightCopyright (max. 20 characters)Copyright InfoCorrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not change ISO speedCould not change apertureCould not change beep modeCould not change flash modeCould not change focus modeCould not change shutter speedCould not change zoom levelCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file.Could not detect any cameraCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Create Wifi profileCreativeCreative PC-CAM 300 Authors: Till Adam and: Miah Gregory Creative PC-CAM600 Author: Peter Kajberg Current Mode: Camera Mode Current Mode: Playback Mode CustomCustomise Command DialsDD/MM/YYYYDPOF VersionData has been corrupted.Date & TimeDate FormatDate Time Stamp FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDate: %sDay/Month/YearDaylightDebugDeepDefault gatewayDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. DeleteDelete objectDeleting image %s.Detected a "%s" aka "%s"Detected a '%s'.Device IconDigita Johannes Erdfelt Digital ZoomDigital zoomDirect PrintDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisconnecting camera.Do not display TV menuDownload program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy to port your driver on this cam! Download program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading %s...Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...DriverDriver SettingsDual IrisEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.ESPESSIDEconomyEffect ModeEmptyEnable CopyrightEncryptionEncryption key (hex)EnglishErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationEvent Emulate ModeEverywhereExecute predefined command with parameter values.Expected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.ExposureExposure Bias CompensationExposure CompensationExposure Index (film speed ISO)Exposure MeteringExposure Metering ModeExposure Program ModeExposure TimeExposure compensationExposure level on previewExternal FlashExternal syncF-NumberF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d Factory DefaultFileFile '%s' could not be found in folder '%s'.File '%s/%s' does not exist.File Deletion, File Upload File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.Filetype: FlashPix (Filetype: JPEG (FineFirmwareFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware VersionFirmware version: %d.%02d Firmware: %d.%d FisheyeFixedFlashFlash Level LockFlash LockFlash ModeFlash SettingFlash SettingsFlash Sync. SpeedFlash autoFlash mode changedFlash mode: auto, Flash mode: force, Flash mode: off Flash offFlash onFlash onlyFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFluorescentFocal LengthFocal Length TeleFocal Length WideFocusFocus Area ZoneFocus DistanceFocus LockFocus Metering ModeFocus ModeFocus mode changedFocus positionFocusing PointFocusing error.For cameras with S&Q Technologies chip. Should work with gtkam. Photos will be saved in PPM format. All known S&Q cameras have two resolution settings. What those are, will depend on your particular camera. A few of these cameras allow deletion of all photos. Most do not. Uploading of data to the camera is not supported. The photo compression mode found on many of the S&Q cameras is supported, to some extent. If present on the camera, video clips are seen as subfolders. Gtkam will download these separately. When clips are present on the camera, there is a little triangle before the name of the camera. If no folders are listed, click on the little triangle to make them appear. Click on a folder to enter it and see the frames in it, or to download them. The frames will be downloaded as separate photos, with special names which specify from which clip they came. Thus, you may freely choose to save clip frames in separate directories. or not. ForceForce Flash Format card and set album name.Format compact flashFormat storageFrames Left: %i Frames Taken : %4d Frames Taken: %i FrenchFullFull ImageFull ManualFunctional ModeGeneralGermanGet number of objectsGet objectGet object infoGet storage IDsGet storage infoGet thumbnailGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.GreenHighHigh (1152 x 872)High (good quality)Host Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?HyPictI/O in progressIDIP address (empty for DHCP)ISO SpeedISO speed changedIconsIdleIllegal parameter.ImageImage %s is delete protected.Image & SoundImage AdjustmentImage CommentImage FormatImage ModeImage QualityImage SizeImage format changedImage height: %d Image number not valid.Image protected.Image size: %d Image type %d is not supported by this camera !Image type %d not supportedImage type is not supportedImage width: %d In useIncandescentInfinityInfinity/Fish-eyeInformationInformation on STV0680-based camera: Initializing CameraInternal RAMInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal memory: %d MB total, %d MB free. InvalidInvalid ISO speed settingInvalid Value ( %d ) Invalid aperture settingInvalid beep mode settingInvalid flash mode settingInvalid focus mode settingInvalid image format settingInvalid shutter speed settingIris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JD11 ConfigurationJPEGJPEG BasicJPEG Compression PolicyJPEG FineJPEG NormalJapaneseKeep filename on uploadKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BrightnessLCD ModeLCD Off TimeLED ModeLG GSM generic driver Guillaume Bedot LandscapeLanguageLeftLens IDLens ModeLens NameLens SortLens TypeLens direction does not match flash light Lens is not connected LightLight too dark.List Wifi profilesList all filesListing files in '%s'...Listing folders in '%s'...Loading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!Logitech Clicksmart 310 driver Theodore Kilgore Looking for camera ...Looks like a modem, not a cameraLowLow (576 x 436)Low (best quality)Low contrastLower case letters in %s not allowed.M4AMF (fixed)MF (selection)MM/DD/YYYYM_DEPMacroManualManual FocusManual focusMars MR97310 camera library Theodore Kilgore MatrixMatthew G. Martin Based on fujiplay by Thierry Bousch MaximalMaximum number of Images: %d Media CardMedia Card GroupMediumMedium (1152 x 872)Medium (better quality)Memory Left: %i bytes Memory cardMemory card status (%d): %s Memory in camera: %d Mbit. Menus and PlaybackMetering ModeMicrosoft Word DocumentMinimalMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Model IDModel: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Capacity: %i Mb Power: %s Auto Off Time: %i min Mode: %s Images: %i/%i Date display: %s Date and Time: %s Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s MonitorMonochromeMonth/Day/YearMulti SpotMulti-spotNEF (Raw)NEF+BasicNEF+FineNEF+NormalNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName '%s' (%li characters) too long, maximum 30 characters are allowed.Name PrefixName to set on card when formatting.Network maskNeutralNextNight LandscapeNight PortraitNikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. NoNo Compact Flash Card detected No Dual IrisNo EXIF data available for %s.No File Deletion, No File Upload No FlashNo Power LightNo Resolution SwitchNo SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card in camera. No card present.No memory card presentNo reason availableNo response from cameraNo space left on card.NoneNone selectedNormalNormal Not FullNot enough memory available on the memory cardNot in fill modeNot readyNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOS error in camera communicationOffOfficeOnOn, red-eye reductionOne-push AutomaticOnly root folder is supported - you requested a file listing for folder '%s'.Open sessionOperation ModeOperation cancelledOtherOther SettingsOther command executing.Out of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner NameOwner name changedPALPTP Access DeniedPTP Capture Already TerminatedPTP Device BusyPTP Device Prop Not SupportedPTP General ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Property 0x%04xPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP TimeoutPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic DC1580 gPhoto2 library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk Parameter 1Parameter 2Parameter 3Path not absolutePersistent SettingsPhoto EffectPhoto Info. PlaybackPhotos on camera: %d Picture SettingsPicturesPictures in camera: %d PlayPlay modePlayback PositionPort speedPortraitPowerPower SavingPre-Capture DelayPresetPreview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProduct ID: %02x%02x Profile nameProhibit Flash RAWRGB GainRTC Status: %d Raw CompressionRead-only file attributes like width and height can not be changed.ReadyReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRedRed eye flashRed-eye ReductionRed-eye automaticRemoteRemote API VersionRemovable RAM (memory card)Removable ROMRepeatingRequested information about picture %i (= 0x%x), but got information about picture %i backReset Bank 0Reset deviceResetting protocol...ResolutionResolution SwitchResolution plus SizeRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. RightSD Card ID: %s SD memory: %d MB total, %d MB free. SDRAMSDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Self TimeSelf TimerSelf Timer (next picture only)Self Timer TimeSending data...SensitivitySensor ID: %d.%d SepiaSequence 9Serial NumberSerial Number: %s Session-persistent SettingsSet clock in cameraShadeShall the camera beep when taking a picture?SharpSharperSharpnessShooting SpeedShot SettingsShutter CounterShutter SpeedShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed microseconds (0 auto)Shutter speed changedSiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SingleSingle AreaSingle ShotSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Size Quality ModeSkylightSlide Show IntervalSlow SyncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SoftSofterSoftware Rev.: %s Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to the gphoto developer mailing list (in English) Sonix camera library Theodore Kilgore Sony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners Sorry, your Canon camera does not support Canon captureSorry, your camera does not support generic captureSoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSportsSpotSpot Metering ModeSpot-AFStandardStill Capture ModeStrobe error.Summary for Mustek MDC800: SuperFineSupported Thumb SizeSwitching Camera OffSynchronize camera date and time with PCSystem error.TIFF (RGB)TTLTVTV Output FormatTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The requested port type (%i) is not supported by this driver.There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.This camera can not capture previews.This camera can not capture.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.This preview doesn't exist.ThumbnailThumbnail height: %d Thumbnail size: %d Thumbnail width: %d Time formatTime: %a, %d %b %Y %T Timelapse IntervalTimelapse NumberTimeout even after 2 retries. Please contact %s.TimerTimer + RemoteTimer 10 secTimer 2 secToo brightToo darkToo many retries failed.TopToshiba David Hogue Toshiba pdr-m11 driver. Total flashes fired: %d Total pictures captured: %d, Flashes fired: %d Total pictures taken: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Trying to contact camera...TungstenTurbo modeUI LanguageUNIX TimeUndefinedUndefined DocumentUndefined PTP PropertyUnknownUnknown %dUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown flash mode %d, Unknown modelUnknown model "%s"Unknown valueUnknown value %04xUnknown value 0x%04xUnknown zoom mode %d Unknown(%04x)Unknown: 0x%04x Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. Upload URLUpload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...User canceled downloadUser defined 1User defined 2User defined 3Vendor Extension Description: %s Vendor ID: %02x%02x Version: Version: %s Video OUTVideo OutVividVolatile SettingsVolume LevelWEP 128-bitWEP 64-bitWIFI ESSIDWIFI channelWIFI profilesWaiting for completion...Waiting...Warning Level 0Warning Level 1We expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite BoardWhite balanceWhite boardWhite levelWhiteBalanceWideWindows Image FormatWriteWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.XMLDocumentYYYY/MM/DDYear/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.Your USB camera has a S&Q chipset. The total number of pictures taken is %i Some of these could be clips containing several frames Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i ZoomZoom (in millimeters)Zoom level changedZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autoauto + red eye suppressionbatteryblack & whitecamera inactive for > 9 seconds, re-initing. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_int_capture_image: initial canon_usb_list_all_dirs() failed with status %licanon_int_list_directory: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: Reached end of packet while examining the first direntcanon_int_list_directory: truncated directory entry encounteredcanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Initial dirent packet too short (only %i bytes)canon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_set_file_attributes: canon_usb_dialogue failedcolorcoolshot library vcould not change owner namecould not set timeeconomyexternallyfill infinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)high compression, iClick 5X driver Theodore Kilgore iTTLin fill modeinfiniteinternallyjamcam library vjl2005a camera library Theodore Kilgore lock keys failed.losslesslow (320x240)low compression, medium compression, menuno status reported.nonenormalnot available: %soffonon + red eye suppressionon batterypccam600_get_file:got index %d but expected index > %dplaypower OKpower badread onlyreadwritereadyrecordrecursive calls are not supported by the sierra driver! Please contact %s.red eye flash off. red eye flash on. red eye suppressionspca50x library vsq905 generic driver Theodore Kilgore sq905C generic driver Theodore Kilgore standardsuperfinesx330z is USB onlytime setunable to guess initial CRC value undefinedunexpected datatype %iunknown (0x%02x)unknown compression %d, unknown resolution %d) vCalendar1vCalendar2vCard2vCard3warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2 2.4.7 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2009-09-23 04:00+0900 Last-Translator: Tadashi Jokagi Language-Team: Japanese Language: ja MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit アクセス能力: %s Canon Wifi サãƒãƒ¼ãƒˆ ファイルã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã€ 空ãå®¹é‡ (ãƒã‚¤ãƒˆ): %llu (%lu MB) 空ãå®¹é‡ (ç”»åƒæ•°): %d 最大能力: %llu (%lu MB) Nikon Wifi サãƒãƒ¼ãƒˆ ストレージã®ç¨®é¡ž: %s ストレージã®èª¬æ˜Ž: %s ボリューム ラベル: %s ã‚«ãƒ¡ãƒ©ã®æƒ…å ±: åž‹å¼: %s 所有者: %s é›»æº: %s フラッシュディスク情報: %s 時刻: %s デãƒã‚¤ã‚¹ã®èƒ½åŠ›: デãƒã‚¤ã‚¹ãƒ—ロパティã®è¦ç´„: ストレージ デãƒã‚¤ã‚¹ã®è¦ç´„: ドライブ %s åˆè¨ˆ %11s ãƒã‚¤ãƒˆ %11s ãƒã‚¤ãƒˆæœ‰åй (ãƒãƒƒãƒ†ãƒªãƒ¼å®¹é‡: 残り %d%%) メモリーã®åˆè¨ˆ = %8d ãƒã‚¤ãƒˆ 空ãメモリー = %8d ãƒã‚¤ãƒˆ ファイル数: %d%.0f mm%0.4f ç§’%d mm%i (䏿˜Ž)%i ãƒã‚¤ãƒˆã®ä¸æ˜Žãªç”»åƒå½¢å¼ã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã¾ã§é€£çµ¡ã—ã¦ä¸‹ã•ã„。書ãè¾¼ã¿ä¿è­·ãŒã‹ã‹ã£ã¦ã„ã‚‹ %i 個ã®å†™çœŸã‚’削除ã§ãã¾ã›ã‚“ã§ã—ãŸ%lld (䏿˜Ž)%s (host 時間 %s%i ç§’)(Traveler) SX330z ライブラリ (å«ã‚€ã€ãã®ä»–ã® Aldi-cams)。 Jenoptikã€Skanhexã€Maginon ã®ã‚ˆã†ãªä»–ã®è£½å“ã§ã‚‚動作ã—ã¾ã™ã€‚ ãƒã‚°å ±å‘Šã¨ã‚³ãƒ¡ãƒ³ãƒˆã¯æ¬¡ã«ã¸ãƒ¡ãƒ¼ãƒ«ã—ã¦ä¸‹ã•ã„: Dominik Kuhlen * ã»ã¨ã‚“ã©ã®å ´åˆã€ç”»åƒã®æ¬ æã‚„通信上ã®å•題㯠ãƒãƒƒãƒ†ãƒªãƒ¼ä¸è¶³ãŒåŽŸå› ã§ã™ã€‚ * ã“ã®ã‚«ãƒ¡ãƒ©ã§ãƒªãƒ¢ãƒ¼ãƒˆãƒ»ã‚­ãƒ£ãƒ—ãƒãƒ£ã•れãŸç”»åƒã¯ フラッシュメモリー・カードã§ã¯ãªã一時的㫠RAM 上ã«ä¿å­˜ã•れã¦ã„ã¾ã™ã€‚ * 全画åƒã®ã‚­ãƒ£ãƒ—ãƒãƒ£ä¸­ã®éœ²å‡ºã®åˆ¶å¾¡ã¯ã‚­ãƒ£ãƒ—ãƒãƒ£ãƒ»ãƒ—レビュー機能ã«ã‚ˆã£ã¦ 自動的ã«ã‚»ãƒƒãƒˆã•れã¾ã™ã€‚ * ç”»åƒã®å“質ã¯ä»Šã®ã¨ã“ã‚å¯èƒ½ãªãƒ¬ãƒ™ãƒ«ã‚ˆã‚Šã‚‚低ã„ã‚‚ã®ã«ãªã£ã¦ã„ã¾ã™ã€‚ *䏿˜Ž*-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 分1 分1.01.5x1.61/151/21/301/41/601/810 分10 分10 mm10 ç§’100%1152 x 86412 mm1280 x 9601515 分15 分16 ç§’x122 ç§’2.02.0 mx2.520 ç§’25%29 mm2x3030 分30 ç§’34 mm3x44 ç§’41 mm4x5 分5 分5 ç§’50%51 mm58 mm5x6 mm6 ç§’640 x 4806x75%7x88 mm8 ç§’8x9xé›»æºAC é›»æºAC アダプタAC アダプターを接続ã—ã¾ã—ãŸã€‚ AC ã‚¢ãƒ€ãƒ—ã‚¿ãƒ¼ãŒæŽ¥ç¶šã•れã¦ã„ã¾ã›ã‚“。 AE ã¨ãƒ•ラッシュAE ロックã®ã¿AE ã®ã¿AE-ロックAE/AF ロックAF ビープモードAF ロック維æŒAF ロックã®ã¿AF ロックã®ã¿AF モードAF オンAF-AAF-CAF-SASIC リビジョン: %d.%d AVA_DEPアクセスモードæ“作アドホックAdc65 Benjamin Moos AdobeRGBアルãƒãƒ åI/O ライブラリ ('%s') ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s䏿˜Žãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。赤目対策ã©ã“ã§ã‚‚Aox 汎用ドライムTheodore Kilgore 絞り開å£ã‚’変更ã—ã¾ã—ãŸä½œè€…ãƒœã‚¿ãƒ³ã®æ©Ÿèƒ½å‰²ã‚Šå½“ã¦è£œåŠ©å…‰è‡ªå‹•è‡ªå‹•é–‹å£è‡ªå‹•フォーカスモード 2自動 ISO自動パワーオフ (屋外) (秒後)自動パワーオフ (host) (秒後)自動 OFF 時間自動パワーオフ (分後)自動露出ロックオートフォーカス: AI フォーカスオートフォーカス: AI サーボオートフォーカス: ワンショット自動, Red-Eye 減少自動フォーカスモード自動フォーカスã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚自動自動 自動 (フラッシュãªã—)自動フラッシュ自動露出調整ã®ãƒ—レビューキャプãƒãƒ£æ™‚ã®è‡ªå‹•フラッシュ有効ãªãƒ¡ãƒ¢ãƒªãƒ¼: å¹³å‡B/WãŠã‹ã—㪠EOTãŠã‹ã—ãªæ–‡å­— (0x%x, 0x%x) ã§ã™ã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。ãƒã‚§ãƒƒã‚¯ã‚µãƒ ãŒãŠã‹ã—ã„ã§ã™ - 0x%02x ã‚’å–å¾—ã—ã¾ã—㟠(期待値: 0x%02x)データãŒãŠã‹ã—ã„ã§ã™ - 0x%02x ã‚’å–å¾—ã—ã¾ã—㟠(期待値: 0x%02x ã¾ãŸã¯ 0x%02x)データãŒãŠã‹ã—ã„ã§ã™ - 0x%02x ã‚’å–å¾—ã—ã¾ã—㟠(期待値: 0x%02x)露出ãŒãŠã‹ã—ã„ã§ã™ (ãŠãらãフラッシュãŒå分ã§ã¯ã‚りã¾ã›ã‚“)レンズã®çŠ¶æ…‹ãŒãŠã‹ã—ã„ã§ã™ %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev ç”»åƒãƒ‡ãƒ¼ã‚¿ã®ãƒªãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ãƒªãƒ³ã‚°æ‹…当: Jeff Laing WEB 上ã«å®Ÿè£…済ã¿ã®ä½¿ç”¨æ–¹æ³•ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ ãŒã‚りã¾ã™ã€‚Vision ã®æ‰¿è«¾æ¸ˆã¿ã€‚ãƒãƒƒãƒ†ãƒªãƒ¼ãŒå°‘ãªã„ã§ã™ã€‚ãƒãƒƒãƒ†ãƒªãƒ¼ã¯å……分ã§ã™ã€‚ãƒãƒƒãƒ†ãƒªãƒ¼ãƒãƒƒãƒ†ãƒªãƒ¼ã®ãƒ¬ãƒ™ãƒ«ãƒãƒƒãƒ†ãƒªãƒ¼ãƒ¬ãƒ™ãƒ«: %s ç”»åƒã®ç•ªå·: %d 残り容é‡: %d 動作モード: %s フラッシュ充電: %s レンズã®çŠ¶æ…‹: ãƒãƒƒãƒ†ãƒªãƒ¼ã®å¯¿å‘½: %i ãƒãƒƒãƒ†ãƒªãƒ¼ãƒ¢ãƒ¼ãƒ‰ãƒãƒƒãƒ†ãƒªãƒ¼ã®ç¨®é¡žãƒãƒƒãƒ†ãƒªãƒ¼ãŒæ¶ˆè€—ã—ã¾ã—ãŸã€‚カメラを OFF ã«ã—ã¾ã™ã€‚ãƒãƒƒãƒ†ãƒªãƒ¼ãƒ¬ãƒ™ãƒ«: %.1f ボルト リビジョン: %08xé›»æº: %s AC アダプタ: %s ビープ音ビープモードビープモードを変更ã—ã¾ã—ãŸãƒ“ープãªã—ビープã‚りベストビットレート %ld ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。モノクロモノクロ黒æ¿ãƒ¢ãƒŽã‚¯ãƒ­é»’æ¿ãƒ¢ãƒŽã‚¯ãƒ­ç‚¹æ»…é’下明るã•(+)明るã•(-)æ˜Žã‚‹ã•æ˜Žã‚‹ã•(+)明るã•(-)明るã•/コントラスト組ã¿è¾¼ã¿ RAM組ã¿è¾¼ã¿ ROMãƒãƒ«ãƒ–露出時間ãƒãƒ¼ã‚¹ãƒˆãƒãƒ¼ã‚¹ãƒˆã®é–“éš”ãƒãƒ¼ã‚¹ãƒˆæ•°å‹•作中ボタンã¨ãƒ€ã‚¤ã‚¢ãƒ«CRWCSM ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚«ãƒ¡ãƒ©ã‚«ãƒ¡ãƒ©ã®æ“作カメラ本体㮠IDカメラã®è¨­å®šã‚«ãƒ¡ãƒ©ã® ID: %s Kodak DC215 ズーム・カメラ用ã®ãƒ©ã‚¤ãƒ–ラリã§ã™ã€‚ Michael Koltan カメラモードカメラã®åž‹å¼ã‚«ãƒ¡ãƒ©ã®åž‹å¼: %s カメラ㯠OK ã§ã™ã€‚ã‚«ãƒ¡ãƒ©ã®æ‰€æœ‰è€…カメラã®è¨­å®šã‚«ãƒ¡ãƒ©ã®çŠ¶æ…‹ã«ã¤ã„ã¦ã®æƒ…報カメラã¨ãƒ‰ãƒ©ã‚¤ãƒã®è¨­å®šã‚«ãƒ¡ãƒ©ãŒãƒ“ジーã§ã™ã€‚ã“ã®çŠ¶æ…‹ãŒé•·ãç¶šã„ãŸå ´åˆã¯ %s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。æ“作を完了ã§ãã¾ã›ã‚“ã§ã—ãŸã‚«ãƒ¡ãƒ©ãŒå¼•æ•°ã‚’å—ã‘å–りã¾ã›ã‚“。%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。カメラã®ãƒ‰ãƒ©ã‚¤ãƒ '%s' ã«ã¯ 'camera_init' 関数ãŒã‚りã¾ã›ã‚“。メモリーを内蔵ã—ã¦ã„ã¾ã™ã€‚ カメラãŒé–“é•ã£ãŸãƒ¢ãƒ¼ãƒ‰ã«ã‚りã¾ã™ã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„ã€‚ã‚«ãƒ¡ãƒ©ã®æº–å‚™ãŒã§ãã¦ã„ã¾ã›ã‚“ (get_battery ã«å¤±æ•—): %sã‚«ãƒ¡ãƒ©ã®æº–å‚™ãŒã§ãã¦ã„ã¾ã›ã‚“。複数回 "カメラ情報" è¦æ±‚ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s白黒ã§ã™ã€‚ カメラã®ãƒ‘ワーセーブ (ç§’)æŽ¥ç¶šã‚’ä¿æŒã™ã‚‹ã®ã«ï¼“回失敗ã—ã¾ã—ãŸã€‚カメラãŒã‚³ãƒžãƒ³ãƒ‰ã‚’å—ã‘付ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚カメラãŒãƒªã‚»ãƒƒãƒˆã—ã¾ã—ãŸã€‚カメラãŒäºˆæœŸã—ãªã„ãƒã‚¤ãƒˆ 0x%02x ã‚’é€ä¿¡ã—ã¦ãã¾ã—ãŸã€‚サムãƒã‚¤ãƒ«å½¢å¼ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ ビデオ形å¼ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ サãƒãƒ¼ãƒˆæ¸ˆã¿ã®ãƒ“デオ形å¼:ã‚«ãƒ¡ãƒ©ã®æ™‚刻: %s %s カメラãŒç„¡åйã§ã™ã‚«ãƒ¡ãƒ©ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“: %sã‚«ãƒ¡ãƒ©ã¯æ—¢ã«ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã§ã™ã‚«ãƒ¡ãƒ©ãŒèµ·å‹•ã•れã¾ã—ãŸå…¨ã¦ã®ç”»åƒã‚’削除ã§ãã¾ã›ã‚“ã€‚ç”»åƒ %s を削除ã§ãã¾ã›ã‚“。有効ãªãƒ¡ãƒ¢ãƒªãƒ¼æ®‹é‡ã‚’å–å¾—ã§ãã¾ã›ã‚“。ãƒãƒƒãƒ†ãƒªãƒ¼å®¹é‡ã‚’å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“写真を格ç´ã™ã‚‹ãƒ•ォルダåãŒå–å¾—ã§ãã¾ã›ã‚“キャプãƒãƒ£å–り込ã¿ã®è¨­å®šå–り込ã¿å¯¾è±¡ã‚­ãƒ£ãƒ—ãƒãƒ£ã®ç¨®é¡žãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“カードカードã®çŠ¶æ…‹: ã‚«ãƒ¼ãƒ‰ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“。カードãŒãƒ•ォーマットã•れã¦ã„ã¾ã›ã‚“カードãŒé–‰ã¾ã£ã¦ã„ã¾ã™ã‚«ãƒ¼ãƒ‰ãŒç©ºã„ã¦ã„ã¾ã™ã‚«ãƒ¼ãƒ‰ã¸ã®æ›¸ãè¾¼ã¿ä¿è­·ãŒæœ‰åйã§ã™ã€‚カードå: %s カードã®ç©ºã容é‡: %d キロãƒã‚¤ãƒˆ カードをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。カードãŒã‚¢ã‚¯ã‚»ã‚¹ä¸­ã«æŠœãå–られã¾ã—ãŸã€‚中央焦点中央部é‡ç‚¹ä¸­å¤®ä¸­å¤®ç„¦ç‚¹ã‚¹ãƒ”ードã®å¤‰æ›´ä¸­... 少々ãŠå¾…ã¡ä¸‹ã•ã„...文字文字ã¨ã‚µã‚¦ãƒ³ãƒ‰å……電中ãƒã‚§ãƒƒã‚¯ã‚µãƒ ãƒ»ã‚¨ãƒ©ãƒ¼ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’é–‰ã˜ã‚‹æ›‡å¤©è‰²å½©è‰²ã‚²ã‚¤ãƒ³ã‚«ãƒ©ãƒ¼ãƒ¢ãƒ¼ãƒ‰ã‚«ãƒ©ãƒ¼å½¢å¼è‰²ã®è¨­å®šè‰²ç©ºé–“色温度コマンドã¯ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã§ãã¾ã›ã‚“。コマンドã®å®Ÿè¡Œé †ã§ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚通信エラー 1通信エラー 2通信エラー 3二回トライã—ã¾ã—ãŸãŒé€šä¿¡ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。コンパクトフラッシュ・カードを検出ã—ã¾ã—㟠コンパクトフラッシュ・カード互æ›ãƒ¢ãƒ¼ãƒ‰åœ§ç¸®åœ§ç¸®ã®è¨­å®šè¨­å®šFUJI カメラã®è¨­å®šã‚«ãƒ¡ãƒ©ã«æŽ¥ç¶šæ¸ˆã¿ã‚³ãƒ³ãƒˆãƒ©ã‚¹ãƒˆã‚³ãƒ³ãƒˆãƒ©ã‚¹ãƒˆ(+)コントラスト(-)コピーライトコピーライト (最大 20文字)コピーライトãŠã‹ã—ãªãƒ‡ãƒ¼ã‚¿ç”»åƒã‚’ダウンロードã™ã‚‹ã®ã«å¿…è¦ãª %i ãƒã‚¤ãƒˆã‚’確ä¿ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚サムãƒã‚¤ãƒ«ã‚’ダウンロードã™ã‚‹ã®ã«å¿…è¦ãª %i ãƒã‚¤ãƒˆã‚’確ä¿ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚USB 設定をé©ç”¨ã§ãã¾ã›ã‚“ã§ã—ãŸISO 速度を変更ã§ãã¾ã›ã‚“ã§ã—ãŸé–‹å£ã‚’変更ã§ãã¾ã›ã‚“ã§ã—ãŸãƒ“ープモードを変更ã§ãã¾ã›ã‚“ã§ã—ãŸãƒ•ラッシュ モードã®å¤‰æ›´ãŒã§ãã¾ã›ã‚“ã§ã—ãŸãƒ•ォーカスモードを変更ã§ãã¾ã›ã‚“ã§ã—ãŸã‚·ãƒ£ãƒƒã‚¿ãƒ¼é€Ÿåº¦ã‚’変更ã§ãã¾ã›ã‚“ã§ã—ãŸã‚ºãƒ¼ãƒ ãƒ¬ãƒ™ãƒ«ã‚’変更ã§ãã¾ã›ã‚“ã§ã—ãŸã‚«ãƒ¡ãƒ©ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\DCIM ディレクトリを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸå¯¾è±¡ã¨ãªã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª %s を生æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚フォルダを生æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ファイルを削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚カメラを検出ã§ãã¾ã›ã‚“ã§ã—ãŸã‚«ãƒ¡ãƒ©ã¨åˆæœŸæŽ¥ç¶šã‚’確立ã§ãã¾ã›ã‚“ã§ã—ãŸãƒ‡ãƒ¼ã‚¿ã‹ã‚‰ JPEG サムãƒã‚¤ãƒ«ã¸å±•é–‹ã§ãã¾ã›ã‚“ã§ã—ãŸ: データ㯠JFIF ã§ã¯ã‚りã¾ã›ã‚“データã‹ã‚‰ JPEG サムãƒã‚¤ãƒ«ã¸å±•é–‹ã§ãã¾ã›ã‚“ã§ã—ãŸ: é–‹å§‹/終端ãŒã‚りã¾ã›ã‚“ファイル '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚'%s' ã«æ—¥æœ¬èªžãƒ‡ãƒ¼ã‚¿ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸãƒ‡ã‚£ã‚¹ã‚¯æƒ…報をå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ: %sディスクåã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ: %sフラッシュドライブをå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸãƒ¬ã‚¸ã‚¹ã‚¿ %i ã‚’å–å¾—ã§ãã¾ã›ã‚“。%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。string 型レジスタ %i ã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„ã€‚ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—㟠(カメラã‹ã‚‰ã®å¿œç­”: 0x%02x)。必è¦ãªã‚«ãƒ¡ãƒ©ã®ãƒ‰ãƒ©ã‚¤ãƒ '%s' (%s) ãŒèª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚'%s' ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚ディレクトリ %s を削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚フォルダを削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚カメラをリセットã§ãã¾ã›ã‚“ã§ã—㟠スピードを %i ã«ã‚»ãƒƒãƒˆã§ãã¾ã›ã‚“ã§ã—㟠(カメラã‹ã‚‰ã®å¿œç­”: %i)。パケットをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—㟠(エラーコード %i)。%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。リトライ後もパケットé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚アップロードã§ãã¾ã›ã‚“ã§ã—ãŸã€‚使ã‚れã¦ã„ãªã„フォルダåãŒã‚りã¾ã›ã‚“ï¼ ãƒ•ã‚©ãƒ«ãƒ€ 999CANON ã¯æ—¢ã«å­˜åœ¨ã—ã¦ãŠã‚Šã€ç”»åƒ AUT_9999.JPG ãŒãã®ä¸­ã«ã‚りã¾ã™ã€‚ファイル "%s" を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸWIFI プロファイルã®ä½œæˆCreativeCreative PC-CAM 300 作者: Till Adam 㨠Miah Gregory Creative PC-CAM600 作者: Peter Kajberg ç¾åœ¨ã®ãƒ¢ãƒ¼ãƒ‰: カメラ・モード ç¾åœ¨ã®ãƒ¢ãƒ¼ãƒ‰: å†ç”Ÿãƒ¢ãƒ¼ãƒ‰ カスタムコマンドダイアルã®ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºDD/MM/YYYYDPOF ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ‡ãƒ¼ã‚¿ãŒå£Šã‚Œã¦ã„ã¾ã™ã€‚æ—¥ä»˜ã¨æ™‚é–“ãƒ‡ãƒ¼ã‚¿å½¢å¼æ—¥æ™‚ã®æ›¸å¼æ—¥ä»˜ã¨æ™‚é–“æ—¥ä»˜ã¨æ™‚é–“ (GMT)日付ã®è¡¨ç¤ºæ—¥ä»˜: %i/%02i/%02i %02i:%02i:%02i 記録ã—ãŸå†™çœŸæ•°: %i 残りã®è¨˜éŒ²å¯èƒ½æ•°: %i ソフトウェア・ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %s Baudrate: %s 残りメモリー: %i Mãƒã‚¤ãƒˆ カメラ・モード: %s ç”»åƒã®å“質: %s フラッシュã®è¨­å®š: %s 情報: %s タイマー: %s 液晶モニタ: %s 自動パワーオフ: %i 分後 é›»æºå…ƒ: %s日付: %sæ—¥/月/年晴天デãƒãƒƒã‚°æ·±ã•デフォルト ゲートウェイデフォルト Sierra ドライãƒ: ã“れã¯ãƒ‡ãƒ•ォルト㮠Sierra ドライãƒã§ã€ ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã‹ã‚‰å†™çœŸã‚’ダウンロードã—㦠å‚ç…§ã™ã‚‹æ©Ÿèƒ½ã‚’æä¾›ã—ã¦ã„ã¾ã™ã€‚ カメラã®è¨­å®šã¯ Olympus 3040 をベースã«ã—ã¦ã„ã¾ã™ãŒã€ ãŠãらãä¸å®Œå…¨ã§ã™ã€‚ ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©è¨­å®šã‚’テストã—ãŸã‚Šã€ 設定機能を完全ã«ã™ã‚‹ãŸã‚ã«é–‹ç™ºã«å”力ã—ã¦ãれるã®ãªã‚‰ã° 開発者ã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒ»ãƒªã‚¹ãƒˆã¾ã§é€£çµ¡ã—ã¦ä¸‹ã•ã„。 削除オブジェクトã®å‰Šé™¤ç”»åƒ %s を削除ã—ã¾ã™ã€‚"%s" ("%s") を検出ã—ã¾ã—ãŸã€‚'%s' を検出ã—ã¾ã—ãŸã€‚デãƒã‚¤ã‚¹ã‚¢ã‚¤ã‚³ãƒ³Digita gPhoto ライブラリ Johannes Erdfelt デジタル・ズームデジタル・ズームダイレクトå°åˆ·ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå‚照モード - Scott Fritzinger æ°ã®æä¾›ã€‚ディレクトリãŒå­˜åœ¨ã—ã¾ã™ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒã¿ã¤ã‹ã‚Šã¾ã›ã‚“カメラã¨ã®æŽ¥ç¶šãŒåˆ‡ã‚Œã¦ã„ã¾ã™ã€‚TV メニューを表示ã—ãªã„Digital Dream Enigma 1.3 用ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒ—ログラムã§ã™ã€‚作者㯠ã§ã€Spca50x ドライãƒã‚’使ã£ãŸãƒãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚‚行ã„ã¾ã—ãŸã€‚Spca50x 開発ãƒãƒ¼ãƒ ã«æ„Ÿè¬ã—ã¾ã™ã€‚ã“ã®ã‚«ãƒ¡ãƒ©ç”¨ã®ãƒ‰ãƒ©ã‚¤ãƒã‚’ç°¡å˜ã«ãƒãƒ¼ãƒˆã§ãã¾ã—ãŸï¼Polaroid DC700 カメラã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒ»ãƒ—ログラムã§ã™ã€‚gPhoto-4.x å‘ã‘ã®ã‚ªãƒªã‚¸ãƒŠãƒ«ã®ä½œè€…㯠Ryan Lantzer ã§ã™ã€‚gPhoto2 ã¸ã®ãƒãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã¯ Lutz Mueller ãŒæ‹…当ã—ã¾ã—ãŸã€‚Plolaroid カメラã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒ»ãƒ—ログラムã§ã™ã€‚オリジナルã®ä½œè€…㯠Peter Desnoyers ã€gPhoto2 ã¸ã®ãƒãƒ¼ãƒ†ã‚£ãƒ³ã‚°æ‹…当㯠Nathan Stenzel 㨠Lutz Mueller ã§ã™ã€‚ Polaroid 640SE を使ã£ãŸãƒ†ã‚¹ãƒˆã¯ Michael Golden ãŒæ‹…当ã—ã¾ã—ãŸã€‚%s ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­ã§ã™ã€‚「%sã€ã‚’ダウンロードã—ã¦ã„ã¾ã™...'%s' ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­...EXIF データã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­...音声ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­...データã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­...ファイルã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­...ç”»åƒ %s ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­ã§ã™ã€‚ç”»åƒã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­...å‹•ç”»ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­...サムãƒã‚¤ãƒ«ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­...ダウンロード中...ドライãƒãƒ‰ãƒ©ã‚¤ãƒãƒ¼ã®è¨­å®šãƒ‡ãƒ¥ã‚¢ãƒ« Iris ã‚りEEPROM ãƒã‚§ãƒƒã‚¯ã‚µãƒ ãƒ»ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚エラー: %d ã¯å¤§ãã™ãŽã¾ã™ã‚¨ãƒ©ãƒ¼: 致命的ãªã‚¨ãƒ©ãƒ¼ã‚’検出ã—ã¾ã—ãŸã€‚続行ã§ãã¾ã›ã‚“。エラー: メッセージ書å¼ã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚エラー: メッセージã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ãƒ³ã‚¨ãƒ©ãƒ¼: シーケンスを越ãˆã¾ã—ãŸã€‚エラー: 予期ã—ãªã„メッセージエラー: 予期ã—ãªã„メッセージ 2 ã§ã™ã€‚エラー: 予期ã—ãªã„パケットã®ç¨®é¡žã§ã™ã€‚ESPESSIDã‚¨ã‚³ãƒŽãƒŸãƒ¼åŠ¹æžœãƒ¢ãƒ¼ãƒ‰ç©ºã‚³ãƒ”ãƒ¼ãƒ©ã‚¤ãƒˆã®æœ‰åŠ¹æš—å·åŒ–æš—å·éµ (16 進数)英語エラー画åƒã®ã‚­ãƒ£ãƒ—ãƒãƒ£ä¸­ã«ã‚¨ãƒ©ãƒ¼ã‚¹ãƒ”ード変更ã§ã‚¨ãƒ©ãƒ¼ã‚¹ãƒ”ード変更ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚共有サムãƒã‚¤ãƒ«ã®å‰Šé™¤ä¸­ã«ã‚¨ãƒ©ãƒ¼ãƒ•ァイルã®å‰Šé™¤ä¸­ã«ã‚¨ãƒ©ãƒ¼åˆæœŸåŒ–中㮠ACK å¾…ã¡ã§ã‚¨ãƒ©ãƒ¼ã‚¤ãƒ™ãƒ³ãƒˆã®ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ãƒˆ モード場所をå•ã‚ãšå¼•数を付ã‘㦠å‰ã«å®šç¾©ã—ãŸã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚%i ãƒã‚¤ãƒˆã‚’期待ã—ã¾ã—ãŸãŒã€%i ãƒã‚¤ãƒˆã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。%i ãƒã‚¤ãƒˆã‚’期待ã—ã¾ã—ãŸãŒã€%i ãƒã‚¤ãƒˆã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。32 ãƒã‚¤ãƒˆã‚’期待ã—ã¾ã—ãŸãŒã€%i ãƒã‚¤ãƒˆã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。露出露出ãƒã‚¤ã‚¢ã‚¹ã®ä»£å„Ÿéœ²å‡ºåº¦éœ²å‡ºã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ (フィルム速度 ISO)露出補正露出補正モード露出プログラム・モード露出時間露出度露出レベルã®ãƒ—ãƒ¬ãƒ“ãƒ¥ãƒ¼å¤–éƒ¨ãƒ•ãƒ©ãƒƒã‚·ãƒ¥å¤–éƒ¨åŒæœŸF-番å·F2F2.3F2.8F4F5.6F8致命的ãªã‚¨ãƒ©ãƒ¼: CRC ã®åˆæœŸå€¤ (サイズ %d) ãŒä¸æ˜Žã§ã™ フラッシュ・メモリー: ファイル数: %d å·¥å ´å‡ºè·æ™‚ã®å€¤ãƒ•ァイルファイル '%s' ãŒãƒ•ォルダ '%s' ã®ä¸­ã«ã‚りã¾ã›ã‚“。ファイル '%s/%s' ã¯å­˜åœ¨ã—ã¾ã›ã‚“。ファイルã®å‰Šé™¤ã€ãƒ•ァイルã®ã‚¢ãƒƒãƒ—ロード ファイル圧縮ファイルãŒå­˜åœ¨ã—ã¾ã™ãƒ•ァイルãŒã¿ã¤ã‹ã‚Šã¾ã›ã‚“ファイルãŒä¿è­·ã•れã¦ã„ã¾ã™ã€‚ファイルã®è§£åƒåº¦ãƒ•ァイルサイズ㯠%ld ãƒã‚¤ãƒˆã§ã™ã€‚アップロードå¯èƒ½ãªã‚µã‚¤ã‚ºã¯ %i ãƒã‚¤ãƒˆã§ã™ã€‚ファイルã®ç¨®é¡žãƒ•ァイルã®ã‚¢ãƒƒãƒ—ロードã«å¤±æ•—ã—ã¾ã—ãŸãƒ•ァイルãŒå¤§ãã™ãŽã¾ã™ã€‚ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã®é›»æºã‚’ OFF ã«ã—ã¦ã€ãƒ•ァイルをアップロードã™ã‚‹å‰ã«æˆ»ã—ã¦ä¸‹ã•ã„。ファイルã®ç¨®é¡ž: FlashPix (ファイルã®ç¨®é¡ž: JPEG (ファインファームウェアファームウェアã®ãƒªãƒ“ジョン: %8sファイヤーワイヤーã®ãƒªãƒ“ジョン: %8s 写真ã®åˆè¨ˆ: %i メモリーã®åˆè¨ˆ: %i Kãƒã‚¤ãƒˆ 空ãメモリーã®åˆè¨ˆ: %i Kãƒã‚¤ãƒˆ ファームウェア・リビジョン: %d.%d ファームウェアã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ァームウェアã®ãƒªãƒ“ジョン: %d.%02d ファームウェア: %d.%d 魚眼固定フラッシュã‚りフラッシュレベルã®ãƒ­ãƒƒã‚¯ãƒ•ラッシュロックフラッシュ モードフラッシュã®è¨­å®šãƒ•ラッシュã®è¨­å®šãƒ•ãƒ©ãƒƒã‚·ãƒ¥åŒæœŸé€Ÿåº¦è‡ªå‹•フラッシュフラッシュ モードを変更ã—ã¾ã—ãŸãƒ•ラッシュ モード: 自動ã€ãƒ•ラッシュ モード: 強制ã€ãƒ•ラッシュ モード: オフ フラッシュãªã—フラッシュã‚りフラッシュã®ã¿ãƒ•ラッシュライト : 自動フラッシュライト : 自動 (赤目軽減発光)フラッシュライト : OFFフラッシュライト : ONフラッシュライト : ON (赤目軽減発光)フラッシュライト : ãªã—FlashPixè›å…‰ç¯ãƒ•ォーカスã®é•·ã•テレã®ãƒ•ォーカス長ワイドã®ãƒ•ォーカス長フォーカスフォーカス エリアã®ã‚¾ãƒ¼ãƒ³ãƒ•ォーカスã®è·é›¢ãƒ•ォーカス ロックフォーカス測光モードフォーカス・モードフォーカスモードを変更ã—ã¾ã—ãŸãƒ•ォーカスä½ç½®ãƒ•ォーカスã®ç„¦ç‚¹ãƒ•ォーカスã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚S&Q テクノロジーã®ãƒãƒƒãƒ—ã‚’æ­è¼‰ã—ãŸã‚«ãƒ¡ãƒ©ã®ãƒ‰ãƒ©ã‚¤ãƒã€‚ gtkam ã§å‹•作ã—ã¾ã™ã€‚写真㯠PPM フォーマットã§ä¿å­˜ã•れã¾ã™ã€‚ S&Q ã¨çŸ¥ã‚‰ã‚Œã‚‹å…¨ã¦ã®ã‚«ãƒ¡ãƒ©ã«ã¯è§£åƒåº¦ã®è¨­å®šãŒäºŒã¤ã‚りã¾ã™ã€‚ ã“ã®è¨­å®šã¯ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã«ä¾å­˜ã—ã¾ã™ã€‚ ã“ã®ã‚«ãƒ¡ãƒ©ã®ã„ãã¤ã‹ã®ç¨®é¡žã§ã¯å…¨ã¦ã®å†™çœŸã‚’削除ã™ã‚‹æ©Ÿèƒ½ã‚‚æä¾›ã—ã¦ã„ã¾ã™ã€‚ カメラã¸ç”»åƒãƒ‡ãƒ¼ã‚¿ã‚’アップロードã™ã‚‹æ©Ÿèƒ½ã¯æä¾›ã•れã¦ã„ã¾ã›ã‚“。 多ãã® S&Q カメラã§ã¯å†™çœŸã®ç”»åƒåœ§ç¸®ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ãŒå‹•ç”»ã®ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’æä¾›ã—ã¦ã„ã‚‹å ´åˆã€ ビデオ・クリップã¯ã‚µãƒ–ãƒ•ã‚©ãƒ«ãƒ€ã«æ ¼ç´ã•れã¾ã™ã€‚ Gtkam を使ãˆã°ã€ãれãžã‚Œå€‹åˆ¥ã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ãã¾ã™ã€‚ ビデオ・クリップãŒå­˜åœ¨ã—ã¦ã„ã‚‹å ´åˆã¯ã€ カメラã®åå‰ã®ç›´å‰ã«å°ã•ãªâ–²ãƒžãƒ¼ã‚¯ãŒè¡¨ç¤ºã•れã¾ã™ã€‚ フォルダãŒè¡¨ç¤ºã•れãªã„å ´åˆã¯ã€ã“ã®â–²ãƒžãƒ¼ã‚¯ã‚’クリックã—ã¦ã¿ã¦ä¸‹ã•ã„。 フォルダをクリックã™ã‚‹ã¨ã€ã‚¯ãƒªãƒƒãƒ—ãŒè¡¨ç¤ºã•れるã®ã§ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ãã¾ã™ã€‚ ビデオ・クリップã¯å†™çœŸã‚’分解ã—ãŸãƒ•レームã¨ã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™ã€‚ ダウンロードã—ãŸãƒ•レームã«ã¯ã‚¯ãƒªãƒƒãƒ—åã‹ã‚‰ç”Ÿæˆã—ãŸç‰¹åˆ¥ãªåå‰ãŒä»˜ä¸Žã•れã¾ã™ã€‚ ãã®ãŸã‚ã‚¯ãƒªãƒƒãƒ—ã‚’é¸æŠžã—ã¦ã€ãれãžã‚Œåˆ¥ã®ãƒ•ォルダã«ä¿å­˜ã§ãã¾ã™ã€‚ 強制発光強制発光 ã‚«ãƒ¼ãƒ‰ã‚’åˆæœŸåŒ–ã—ã¦ã‚¢ãƒ«ãƒãƒ åを付与ã—ã¾ã™ã€‚コンパクト・フラッシュã®åˆæœŸåŒ–ストレージã®åˆæœŸåŒ–残りフレーム数: %i 撮影ã—ãŸãƒ•レーム数: %4d フレーム数: %i フランス語フル充電完全ãªç”»åƒå®Œå…¨æ‰‹å‹•æ“作モード全般ドイツ語オブジェクト番å·ã®å–得オブジェクトã®å–得オブジェクト情報ã®å–得ストレージ ID ã®å–得ストレージ情報ã®å–得サムãƒã‚¤ãƒ«ã®å–得設定ã®å–得中...データã®å–得中...ファイル一覧ã®å–得中...ファイルã®å–得中...%i 個ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®æƒ…報をå–得中...サムãƒã‚¤ãƒ«ã®å–得中...予期ã—ãªã„çµæžœ 0x%x ã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。緑高ã„高 (1152 x 872)高 (普通ã®å“質)ホストモード: %s 露出ã®å–å¾—: %s 露出データ: %d データ整åˆ: %s 日付: %d/%02d/%02d %02d:%02d:%02d セルフタイマー: %s è§£åƒåº¦ã®è¨­å®š: %s å†ç”Ÿ/記録モード:%s カードIDæ•´åˆ: %s カードID: %d フラッシュ モード: ホストã®ãƒ‘ワーセーブ (ç§’)ã‚³ãƒ³ãƒ”ãƒ¥ãƒ¼ã‚¿ã«æŽ¥ç¶šã—ãŸæ™‚ã«è‡ªå‹•çš„ã«ãƒ‘ワーオフã™ã‚‹ã¾ã§ã®æ™‚é–“ã§ã™å±‹å¤–ã§è‡ªå‹•çš„ã«ãƒ‘ワーオフã™ã‚‹ã¾ã§ã®æ™‚é–“ã§ã™ã‚«ãƒ¡ãƒ©ã‚’パワーオフã™ã‚‹ã¾ã§ã®æ™‚間を指定ã—ã¦ä¸‹ã•ã„。高解åƒåº¦é€²è¡Œä¸­ã® I/OIDIP アドレス (DHCP ã®å ´åˆã¯ç©º)ISO スピードISO 速度を変更ã—ã¾ã—ãŸã‚¢ã‚¤ã‚³ãƒ³ã‚¢ã‚¤ãƒ‰ãƒ«ä¸­ä¸æ­£ãªãƒ‘ラメータã§ã™ã€‚ç”»åƒç”»åƒ %s ã¯ãƒ—ロテクトã•れã¦ãŠã‚Šå‰Šé™¤ã§ãã¾ã›ã‚“。画åƒã¨ã‚µã‚¦ãƒ³ãƒ‰ç”»åƒã®èª¿æ•´ç”»åƒã®ã‚³ãƒ¡ãƒ³ãƒˆç”»åƒå½¢å¼ç”»åƒãƒ¢ãƒ¼ãƒ‰ç”»åƒã®å“質画åƒã‚µã‚¤ã‚ºç”»åƒå½¢å¼ã®å¤‰æ›´ç”»åƒã®é«˜ã•: %d ç”»åƒã®ç•ªå·ãŒæ­£ã—ãã‚りã¾ã›ã‚“。画åƒãŒä¿è­·ã•れã¦ã„ã¾ã™ã€‚ç”»åƒã‚µã‚¤ã‚º: %d ã“ã®ç”»åƒã®ç¨®é¡ž %d ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ï¼ç”»åƒã®ç¨®é¡ž %d ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ç”»åƒã®ç¨®é¡žãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ç”»åƒã®å¹…: %d 使用中白熱ç¯âˆžâˆž/フラッシュアイ情報STV0680 ベースã®ã‚«ãƒ¡ãƒ©æƒ…å ±: カメラã®åˆæœŸåŒ–中...内部 RAM関数 get_file_func() ã§å†…部エラー #1 (%2$i 行㮠%1$s)内部エラー (1) ã§ã™ã€‚内部エラー (2) ã§ã™ã€‚内部メモリー: åˆè¨ˆ %d MB, 空ã %d MB 䏿­£ISO é€Ÿåº¦è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“ãŠã‹ã—ãªå€¤ ( %d) é–‹å£è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“ビープモードã®è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“フラッシュ モードã®è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“フォーカスモードã®è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“ç”»åƒå½¢å¼ã®è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“ã‚·ãƒ£ãƒƒã‚¿ãƒ¼é€Ÿåº¦è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“アイリスã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚イタリア語JD11 Marcus Meissner Jenoptik JD11 カメラ用ã®ãƒ‰ãƒ©ã‚¤ãƒæ‹…当。 WINE 㨠IDA を使用ã—ã¦ãƒªãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ã•れãŸãƒ—ロトコル。JD11 設定JPEGJPEG 基本JPEG 圧縮ã®ãƒãƒªã‚·ãƒ¼JPEG ファインJPEG 標準日本語アップロード時ã«ãƒ•ァイルåã‚’ä¿æŒã™ã‚‹æ—¢çŸ¥ã®å•題: 1. Kodak DC3200 ãŒæœ€ä½Ž 10 ç§’é–“éš”ã§ã‚³ãƒžãƒ³ãƒ‰ã‚’å—ä¿¡ã—ãªã‹ã£ãŸã‚‰ã€ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¦ã„ã‚‹ã®ã§ã€å†åˆæœŸåŒ–ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚カメラã«å応ãŒãªã‹ã£ãŸã‚‰ã€ã‚«ãƒ¡ãƒ©ã‚’å†é¸æŠžã™ã‚‹ã ã‘ã§ã‚ˆã„ã§ãŒã€ã“ã®å ´åˆã‚‚å†åˆæœŸåŒ–ã—ã¦ä¸‹ã•ã„。既知ã®å•題: 通信エラーãŒç™ºç”Ÿã—ãŸå ´åˆã€ã‚«ãƒ¡ãƒ©ã®é›»æºã‚’リセットã—ã¦ã‚¢ãƒ—リケーションをå†èµ·å‹•ã—ã¦ä¸‹ã•ã„。ドライãƒã¯ã“ã®ã‚ˆã†ãªçŠ¶æ…‹ã‹ã‚‰å¾©æ´»ã§ãã‚‹ã»ã©ã—ã£ã‹ã‚Šã—ãŸä½œã‚Šã«ãªã£ã¦ã„ã¾ã›ã‚“。特ã«å•題ãŒç™ºç”Ÿã—ãŸå ´åˆã¯ã‚«ãƒ¡ãƒ©ã¯é€šä¿¡é€Ÿåº¦ 9600 よりも高ã„状態ã§å¼·åˆ¶çµ‚了ã™ã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。Kodak DC120 カメラ・ライブラリ Scott Fritzinger Kodak DC120 カメラ用ã®ãƒ©ã‚¤ãƒ–ラリ (ã‚„ã£ã¨æ™®åŠã—ãŸã®ã§)Kodak DC240 カメラ・ライブラリ Scott Fritzinger 㨠Hubert Figuiere Kodak DC240, DC280, DC3400 and DC5000 カメラ用ã®ãƒ©ã‚¤ãƒ–ラリ担当。 gPhoto2 å‘ã‘ã«æ›¸ãç›´ã—ã¨æ›´æ–°ã€‚Kodak DC3200 ドライムDonn Morrison 質å•やコメントã¯å¤§æ­“迎ã§ã™ã€‚Kodak EZ200 ドライムBucas Jean-Francois Konica ã®è¨­å®šKonica Q-M150 ライブラリ Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com フランス製 Konica Q-M150 ã®ã‚µãƒãƒ¼ãƒˆã€‚Konica ライブラリ Lutz Mueller Konika 全機種ã¨å¹¾ã¤ã‹ã® HP カメラã®ã‚µãƒãƒ¼ãƒˆæ‹…当。韓国語液晶モニタ液晶モニタã®è‡ªå‹•オフ (秒後)液晶モニタã®è‡ªå‹•オフ (ç§’)æ¶²æ™¶ãƒ¢ãƒ‹ã‚¿ã®æ˜Žã‚‹ã•液晶モードLCD OFF 時間液晶モードLG GSM 汎用ドライムGuillaume Bedot 横å‘ã言語左レンズ IDレンズモードレンズã®åå‰ãƒ¬ãƒ³ã‚ºã®ä¸¦ã³æ›¿ãˆãƒ¬ãƒ³ã‚ºã®ç¨®é¡žãƒ¬ãƒ³ã‚ºã®å‘ããŒãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã®æ–¹å‘ã¨åŒã˜ã§ã¯ã‚りã¾ã›ã‚“ レンズãŒã¤ã„ã¦ã„ã¾ã›ã‚“ å…‰æºãƒ•ãƒ©ãƒƒã‚·ãƒ¥ãŒæš—ã™ãŽã¾ã™ã€‚WIFI プロファイルã®ä¸€è¦§å…¨ãƒ•ァイルã®ä¸€è¦§'%s' ã«ã‚るファイル一覧を作æˆä¸­...'%s' ã«ã‚るフォルダ一覧ã®ä½œæˆä¸­...'%s' ã‹ã‚‰ã‚«ãƒ¡ãƒ©ã®ãƒ‰ãƒ©ã‚¤ãƒã‚’読ã¿è¾¼ã¿ä¸­...ローカル日本語化日本語データãŒãŠã‹ã—ã„ã§ã™ã€‚日本語データãŒé•·ã™ãŽã¾ã™ã€‚ローカライズファイルãŒé•·ã™ãŽã¾ã™ï¼Logitech Clicksmart 310 ドライムTheodore Kilgore ã‚«ãƒ¡ãƒ©ã®æ¤œå‡ºä¸­...カメラã§ã¯ãªãã€ãƒ¢ãƒ‡ãƒ ã®ã‚ˆã†ã§ã™ä½Žä½Ž (576 x 436)低 (最高å“質)低コントラスト%s ã«å°æ–‡å­—ãŒã‚りã¾ã™ã€‚M4AMF (固定)MF (é¸æŠž)MM/DD/YYYYM_DEPマクロå–り扱ã„説明書マニュアルフォーカスマニュアルフォーカスMars MR97310 カメラã®ãƒ©ã‚¤ãƒ–ラリ。 Theodore Kilgore マトリックスMatthew G. Martin æ° Thierry Bousch 作㮠fujiplay ãŒãƒ™ãƒ¼ã‚¹ã§ã™ã€‚ 最大画åƒã®æœ€å¤§æ•°: %d メディアカードメディアカードグループ中中 (1152 x 872)中 (高å“質)メモリーã®ç©ºã容é‡: %i ãƒã‚¤ãƒˆ メモリー カードメモリー カードã®çŠ¶æ…‹ (%d): %s カメラ内蔵メモリー: %d Mビット メニューã¨å†ç”Ÿæ¸¬å…‰ãƒ¢ãƒ¼ãƒ‰Microsoft Word 書類最å°Minolta Dimage V gPhoto ライブラリ %s Gus Hartmann ミノルタ(æ ª) ã‹ã‚‰ã®ä»•様æä¾›ã«æ„Ÿè¬ã—ã¾ã™ã€‚åž‹å¼ IDåž‹å¼: Minolta Dimage V (%s) ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãƒ»ãƒªãƒ“ジョン: %s ファームウェア・リビジョン: %s åž‹å¼: åž‹å¼: %s 容é‡: %i メガãƒã‚¤ãƒˆ é›»æº: %s 自動 OFF ã®æ™‚é–“: %i 分 モード: %s ç”»åƒã®æ•°: %i/%i 日付ã®è¡¨ç¤º: %s æ—¥ä»˜ã¨æ™‚刻: %s åž‹å¼: %s メモリー: %d/%d ãƒã‚¤ãƒˆæœ‰åŠ¹åž‹å¼: %s シリアル番å·: %s ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãƒ»ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %i.%i ソフトウェア・ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %i.%i テスト用ソフトウェア・ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %i.%i åç§°: %s 製造元: %s åž‹å¼: %x, %x, %x, %xåž‹å¼: Kodak %s モニタモノクロ月/æ—¥/年複数焦点複数焦点NEF (Raw)NEF + 基本NEF + ファインNEF + 標準èªè­˜ã•れã¦ã„ã¾ã›ã‚“NTSC%3$i 行㮠%2$s ã«ã‚るパラメータ "%1$s" ㌠NULL ã§ã™ã‚«ãƒ¡ãƒ©ã®åå‰ "%s" ãŒæ—¢å­˜ã®ã‚«ãƒ¡ãƒ©åã«ä¸€è‡´ã—ã¾ã›ã‚“åå‰ '%s' (%li å€‹ã®æ–‡å­—) ã¯é•·ã™ãŽã¾ã™ã€‚最大 30 文字ã¾ã§æœ‰åйã§ã™ã€‚åå‰ã®æŽ¥é ­è¾žåˆæœŸåŒ–時ã«ã¤ã‘るカードã®åå‰ã§ã™ã€‚ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ マスクナãƒãƒ¥ãƒ©ãƒ«é€²ã‚€å¤œé¢¨æ™¯å¤œé–“ãƒãƒ¼ãƒˆãƒ¬ãƒ¼ãƒˆNikon Coolpix 880: カメラã®è¨­å®š: 光学ズーム㯠ãŠãã‚‰ãæ©Ÿèƒ½ã—ã¾ã›ã‚“。 å…¨ã¦ã®è¨­å®šã¯ãŠãらã 読ã¿è¾¼ã¿/書ãè¾¼ã¿ã§ãã¾ã›ã‚“。 例ãˆã°ã€ãƒ›ãƒ¯ã‚¤ãƒˆãƒ»ãƒãƒ©ãƒ³ã‚¹ã®ãƒ•ァイン・ãƒãƒ¥ãƒ¼ãƒ³è¨­å®šã‚„ 言語設定ã§ã™ã€‚ シャッター・スピードをセットã™ã‚‹å ´åˆã¯ 'M' モードã«ã—ã¦ä¸‹ã•ã„。 Nikon Coolpix 995: ã“ã®ã‚«ãƒ¡ãƒ©ã®è¨­å®šã¯ä¸å®Œå…¨ã§ã™ã€‚ ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã«å¯¾ã—ã¦å”力ã—ãŸã„ã¨ ãŠæ€ã„ãªã‚‰ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒ»ãƒªã‚¹ãƒˆã®é–‹ç™ºè€…㫠連絡ã—ã¦ä¸‹ã•ã„。 ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¯æ­£ã—ãæ©Ÿèƒ½ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ ã„ã„ãˆã‚³ãƒ³ãƒ‘クトフラッシュ・カードãŒã‚りã¾ã›ã‚“ã§ã—㟠デュアル Iris ãªã—%s ã§åˆ©ç”¨å¯èƒ½ãª EXIF データã§ã¯ã‚りã¾ã›ã‚“。ファイルã®å‰Šé™¤ãªã—ã€ãƒ•ァイルã®ã‚¢ãƒƒãƒ—ロードãªã— フラッシュãªã—é›»æºãƒ©ãƒ³ãƒ—ãªã—è§£åƒåº¦åˆ‡æ›¿ãˆãªã—SD カードãŒè£…ç€ã•れã¦ã„ã¾ã›ã‚“。 カメラã‹ã‚‰å¿œç­”ãŒã‚りã¾ã›ã‚“%s ã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒ»ãƒ•ァイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸå–り扱ã„説明書ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。 カードãŒã‚りã¾ã›ã‚“カメラã«ã‚«ãƒ¼ãƒ‰ãŒã‚りã¾ã›ã‚“。 カードãŒã‚りã¾ã›ã‚“。メモリー・カードãŒã‚りã¾ã›ã‚“使用ä¸å¯ã®ç†ç”±ã‚«ãƒ¡ãƒ©ã‹ã‚‰å応ãŒã‚りã¾ã›ã‚“ã‚«ãƒ¼ãƒ‰ã«æ®‹ã‚Šå®¹é‡ãŒã‚りã¾ã›ã‚“。ãªã—ä½•ã‚‚é¸æŠžã•れã¦ã„ã¾ã›ã‚“標準標準 使用中メモリー カードã«ç©ºã容é‡ãŒã‚りã¾ã›ã‚“Fill モードãªã—準備未完了未使用注æ„: メモリー・カードãŒã‚りã¾ã›ã‚“。ã„ãã¤ã‹ã®å€¤ãŒä¸æ­£ã«ãªã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。 å†™çœŸã®æ•°: %d å†™çœŸã®æ•°: %då†™çœŸã®æ•°: %d å†™çœŸã®æ•°: %i ファームウェア・ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %sOFFOKONカメラã¨ã®é€šä¿¡ä¸­ã« OS ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸOFFオフィスONON, Red-Eye 減少ワンプッシュ自動ルートã®ãƒ•ォルダã®ã¿ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ - フォルダ '%s' ã®ãƒ•ã‚¡ã‚¤ãƒ«ä¸€è¦§ã‚’è¦æ±‚ã—ã¾ã—ãŸã€‚ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’é–‹ãæ“ä½œãƒ¢ãƒ¼ãƒ‰æ“作をå–り消ã—ã¾ã—ãŸãã®ä»–ãã®ä»–ã®è¨­å®šä»–ã®ã‚³ãƒžãƒ³ãƒ‰ã®å®Ÿè¡ŒãŒä¸­æ­¢ã•れã¾ã—ãŸã€‚メモリーãŒè¶³ã‚Šã¾ã›ã‚“メモリーãŒè¶³ã‚Šã¾ã›ã‚“: %d ãƒã‚¤ãƒˆå¿…è¦ã§ã™ã€‚メモリーãŒè¶³ã‚Šã¾ã›ã‚“: %ld ãƒã‚¤ãƒˆå¿…è¦ã§ã™å±‹å¤–所有者ã®å剿‰€æœ‰è€…ãŒå¤‰æ›´ã•れã¾ã—ãŸPALPTP ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãŒæ‹’å¦ã•れã¾ã—ãŸPTP ã®ã‚­ãƒ£ãƒ—ãƒãƒ£ã¯ä¸­æ–­ã—ã¾ã—ãŸPTP ã®ãƒ‡ãƒã‚¤ã‚¹ ビジーサãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ PTP デãƒã‚¤ã‚¹ PropPTP ã®ä¸€èˆ¬çš„ãªã‚¨ãƒ©ãƒ¼PTP ã®è»¢é€ãŒå®Œäº†ã—ã¦ã„ã¾ã›ã‚“PTP ã®ä¸æ­£ãªã‚³ãƒ¼ãƒ‰æ›¸å¼PTP ã®ä¸æ­£ãªãƒ‡ãƒã‚¤ã‚¹ Prop 書å¼PTP ã®ä¸æ­£ãªãƒ‡ãƒã‚¤ã‚¹ Prop 値PTP ã®ä¸æ­£ãªã‚ªãƒ–ジェクト書å¼ã‚³ãƒ¼ãƒ‰PTP 䏿­£ãªã‚ªãƒ–ジェクトæ“作PTP ã®ä¸æ­£ãªãƒ‘ラメータPTP 䏿­£ãªã‚ªãƒ–ジェクトPTP ã®ä¸æ­£ãªã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ IDPTP ã®ä¸æ­£ãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ IDPTP ã«ã¯ã‚µãƒ ãƒã‚¤ãƒ«ãŒã‚りã¾ã›ã‚“PTP ã®ä¸æ­£ãªã‚ªãƒ–ジェクト情報PTP OK!PTP オブジェクトã¸ã®æ›¸ãè¾¼ã¿ä¿è­·ãŒæœ‰åйã§ã™ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ PTP æ“作サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ PTP パラメータPTP ã®éƒ¨åˆ†çš„ãªå‰Šé™¤PTP プロパティ 0x%04xPTP ã®è‡ªå·±è¨ºæ–­ã«å¤±æ•—ã—ã¾ã—ãŸPTP ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¯ã‚ªãƒ¼ãƒ—ンã—ã¦ã„ã¾ã™PTP ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒé–‹ã‹ã‚Œã¦ã„ã¾ã›ã‚“サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ PTP 書å¼ã®æŒ‡å®šã‚µãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ PTP 転é€å…ˆã®æŒ‡å®šPTP ã®ç©ºã容é‡ãŒã‚りã¾ã›ã‚“PTP ã«æ ¼ç´ã§ãã¾ã›ã‚“PTP ã¯èª­ã¿è¾¼ã¿å°‚用ã§ã™PTP タイムアウトPTP トランザクションãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•れã¾ã—ãŸPTP ã®ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼PTP ã®ä¸æ˜Žãªãƒ™ãƒ³ãƒ€ãƒ¼ã‚³ãƒ¼ãƒ‰ã§ã™Panasonic DC1000 gPhoto ライブラリ Mariusz Zynel Fredrik Roubert æ° ã¨ Galen Brooks æ° ãŒ ä½œæˆã—㟠dc1000 プログラムãŒãƒ™ãƒ¼ã‚¹ã§ã™ã€‚Panasonic DC1580 gPhoto2 ライブラリ Mariusz Zynel dc1000 プログラムを基ã«ã—㦠Fredrik Roubert æ° ã¨ Galen Brooks æ° ãŒä½œæˆã—ã¾ã—ãŸã€‚Panasonic PV-L859-K/PV-L779-K Palmcorder ドライムAndrew Selkirk 引数 1引数 2引数 3パスåãŒç„¡åйã§ã™å…¨æ©Ÿç¨®ã«å…±é€šãªè¨­å®šå†™çœŸã®åŠ¹æžœå†ç”Ÿãƒ•ォト情報写真ã®åˆè¨ˆ: %d 写真ã®è¨­å®šå†™çœŸã‚«ãƒ¡ãƒ©å†…ã®å†™çœŸæ•°: %d å†ç”Ÿå†ç”Ÿãƒ¢ãƒ¼ãƒ‰å†ç”Ÿä½ç½®ãƒãƒ¼ãƒˆã®ã‚¹ãƒ”ード縦å‘ãé›»æºãƒ‘ワー・セーブキャプãƒãƒ£ã®é…れプリセットサムãƒã‚¤ãƒ«ã®ãƒ—レビュー戻る画åƒã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸç”»åƒæƒ…å ±ã®å–得中ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸç”»åƒã®ç•ªå·ã®å–得中ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸãƒãƒ¼ãƒˆã‚’é–‹ã„ã¦ã„る最中ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸãƒ•ラッシュカードã‹ã‚‰ç”»åƒã®èª­ã¿è¾¼ã¿ä¸­ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã‚«ãƒ¡ãƒ©ã®å†è¨­å®šä¸­ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸã‚«ãƒ¡ãƒ©ã®é€šä¿¡é€Ÿåº¦ã®è¨­å®šä¸­ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ ç”»åƒã®å–得中ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸè£½å“ ID: %02x%02x プロファイルåç™ºå…‰ç¦æ­¢ RAWRGB ゲインRTC ã®çŠ¶æ…‹: %d RAW 圧縮ファイルã®å¹…ã¨é«˜ã•ãªã©ã®èª­ã¿è¾¼ã¿å°‚用属性を変更ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。準備 OK予期ã—ãªã„çµæžœ (%i) ã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。予期ã—ãªã„データをå—ã‘å–りã¾ã—㟠(0x%02x, 0x%02x)ã€‚ä¸æ˜Žãªãƒ˜ãƒƒãƒ€ã‚’å—ã‘å–りã¾ã—㟠(%i)予期ã—ãªã„å応をå—ã‘å–りã¾ã—ãŸãƒ‡ãƒ¼ã‚¿ã®å—信中...記録記録モード記録モード赤赤目軽減フラッシュ赤目軽減発光自動赤目軽減リモートリモート API ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒªãƒ ãƒ¼ãƒãƒ–ル RAM (メモリー カード)リムーãƒãƒ–ル ROM繰り返ã—写真 %i ã«ã¤ã„ã¦ã®æƒ…å ± (= 0x%x) ã‚’è¦æ±‚ã—ã¾ã—ãŸãŒã€å†™çœŸ %i ã®æƒ…報をå–å¾—ã—ã¾ã—ãŸãƒãƒ³ã‚¯ 0 ã®ãƒªã‚»ãƒƒãƒˆãƒ‡ãƒã‚¤ã‚¹ã®ãƒªã‚»ãƒƒãƒˆãƒ—ロトコルã®å†è¨­å®š...è§£åƒåº¦è§£åƒåº¦åˆ‡æ›¿ãˆã‚り解åƒåº¦ã®å¢—分値Bob Paauwe æ°ã®ãƒ‰ãƒ©ã‚¤ãƒãŒãƒ™ãƒ¼ã‚¹ã® Lutz Mueller , Martin Fischer 作㮠Ricoh / Philips ドライムRicoh Caplio G3 ドライãƒã€‚ Marcus Meissner USB スヌープを利用ã—ãŸãƒªãƒãƒ¼ã‚¹ãƒ»ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ãƒªãƒ³ã‚°ã€ ファイヤーワイヤーã®ç”»åƒæ›´æ–°ã¨è¦‹å½“é•ã„ã®æ†¶æ¸¬ã€‚ å³SD カード㮠ID: %s SD メモリー: åˆè¨ˆ %d MB, 空ã %d MB SDRAMSDRAM: ファイル数: %d å†™çœŸã®æ•°: %4d å‹•ç”»ã®æ•°: %4d 使用済ã¿ã®å®¹é‡: %8d 空ã容é‡: %8d STV0674 Vincent Sanders STV0674 プロセッサ㮠ASIC 回路をæ­è¼‰ã—ãŸã‚«ãƒ¡ãƒ©ã®ãƒ‰ãƒ©ã‚¤ãƒã§ã™ã€‚ SnoopyPro を使ã£ã¦ãƒ—ロトコルをリãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ã—ã¾ã—ãŸã€‚ STV0680 Adam Harrison STV0680 (プロセッサ ASIC æ­è¼‰) を使用ã™ã‚‹ã‚«ãƒ¡ãƒ©ã®ãƒ‰ãƒ©ã‚¤ãƒæ‹…当。 CommLite Beta 5 ã® Protocol Reverse Engineered 㯠Carsten Weinholz æ°ãŒæ‹…当。 Aiptek PenCam ã®æ‹¡å¼µã¨ãã®ä»–ã® STM USB Dual-mode カメラを担当。セルフタイマーセルフタイマーセルフタイマー (次ã®å†™çœŸã®ã¿)ã‚»ãƒ«ãƒ•ã‚¿ã‚¤ãƒžãƒ¼ã®æ™‚間データã®é€ä¿¡ä¸­...感度センサ ID: %d.%d セピアシーケンス 9シリアル番å·ã‚·ãƒªã‚¢ãƒ«ç•ªå·: %s 全機種ã«å…±é€šãªã‚»ãƒƒã‚·ãƒ§ãƒ³ã®è¨­å®šã‚«ãƒ¡ãƒ©ã®å†…蔵時計ã®ã‚»ãƒƒãƒˆã‚·ã‚§ãƒ¼ãƒ‰å†™çœŸã‚’撮る時ã«ã‚«ãƒ¡ãƒ©ã®ãƒ“ープ音を鳴らã—ã¾ã™ã‹ï¼Ÿã‚·ãƒ£ãƒ¼ãƒ—シャープã«é®®æ˜Žåº¦ã‚·ãƒ£ãƒƒã‚¿ãƒ¼é€Ÿåº¦ã‚·ãƒ§ãƒƒãƒˆã®è¨­å®šã‚·ãƒ£ãƒƒã‚¿ãƒ¼å›žæ•°ã‚·ãƒ£ãƒƒã‚¿ãƒ¼é€Ÿåº¦ã‚·ãƒ£ãƒƒã‚¿ãƒ¼é€Ÿåº¦ (ç§’, 0:自動)シャッター速度 (マイクロ秒, 0:自動)シャッター速度 (マイクロ秒, 0:自動)シャッター速度を変更ã—ã¾ã—ãŸSiPix Web2 Marcus Meissner SiPix Web2 カメラã¸ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãƒ‰ãƒ©ã‚¤ãƒã§ã™ã€‚シングルシングルエリアå˜ä¸€ã‚·ãƒ§ãƒƒãƒˆSipix StyleCam Blink ドライムVincent Sanders æ° Marcus Meissner æ° ã‚µã‚¤ã‚ºã¨å“質モード晴天スライドショーã®è¡¨ç¤ºé–“隔スローシンクロスローシンクロSmal Ultrapocket ドライãƒã€‚ Lee Benfield Smal Ultrapocket カメラå‘ã®ãƒ‰ãƒ©ã‚¤ãƒã§ã€OEM 版ã§ã™ (slimshot)。ソフトソフトã«ã‚½ãƒ•トウェアã®ãƒªãƒ“ジョン: %s Epson 製 カメラã«ã¤ã„ã¦: - 以下ã®ãƒ‘ラメータã¯ãƒªãƒ¢ãƒ¼ãƒˆã§åˆ¶å¾¡ã§ãã¾ã›ã‚“: * ズーム * フォーカス * ホワイト・ãƒãƒ©ãƒ³ã‚¹ã®ã‚«ã‚¹ã‚¿ãƒ è¨­å®š - 設定㯠PhotoPC 3000z ã§ãƒªãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ã•れã¾ã—ãŸã€‚ ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ãŒãŠã‹ã—ãªå‹•ãã‚’ã—ãŸå ´åˆã¯ %s ã¾ã§ (英語ã§) 連絡ã—ã¦ä¸‹ã•ã„。 Epson 製 カメラã«ã¤ã„ã¦: - 次ã®ãƒ‘ラメータã¯ãƒªãƒ¢ãƒ¼ãƒˆã§åˆ¶å¾¡ã§ãã¾ã›ã‚“: * ズーム * フォーカス * ホワイト・ãƒãƒ©ãƒ³ã‚¹ã®ã‚«ã‚¹ã‚¿ãƒ è¨­å®š - 設定㯠PhotoPC 3000z ã§ãƒªãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ã•れã¾ã—ãŸã€‚ ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ãŒãŠã‹ã—ãªå‹•ãã‚’ã—ãŸå ´åˆã¯ メーリング・リストã¾ã§ (英語ã§) 連絡ã—ã¦ä¸‹ã•ã„。 Sonix カメラã®ãƒ©ã‚¤ãƒ–ラリ。 Theodore Kilgore SONY DSC-F1 デジタルカメラã®ã‚µãƒãƒ¼ãƒˆæ‹…当 M. Adam Kendall Kenichi Hayashi æ°ã‹ã‚‰ chotplay CLI インタフェース部をæä¾›ã—ã¦è²°ã„ã¾ã—㟠Gphoto2 å®Ÿè£…ã®æ‹…当㯠Bart van Leeuwen Sony DSC-F55/505 gPhoto ライブラリ Sony MSAC-SR1 㨠DCR-PC100 ãŒä½¿ç”¨ã™ã‚‹ãƒ¡ãƒ¢ãƒªãƒ¼ãƒ»ã‚¹ãƒ†ãƒƒã‚¯ã®ã‚µãƒãƒ¼ãƒˆ Mark Davies æ° ãŒä½œæˆã—ãŸã‚‚ã®ãŒãƒ™ãƒ¼ã‚¹ã§ã™ã€‚ gPhoto2 ã¸ã®ãƒãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã¯ Raymond Penners æ° ãŒæ‹…当ã—ã¾ã—ãŸã€‚ã™ã¿ã¾ã›ã‚“ã€ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯ã‚­ãƒ¤ãƒŽãƒ³ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。ã™ã¿ã¾ã›ã‚“ã€ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯æ±Žç”¨ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。サウンドSoundvision ドライムVince Weaver 残り空ã容é‡: 高: %d 中: %d, 低: %d スペイン語シャッター速度 %i ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ï¼ã“ã®ã‚«ãƒ¡ãƒ©ã«ã‚¹ãƒ”ード 57600 以上ã§ã‚¢ãƒƒãƒ—ロードã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“スãƒãƒ¼ãƒ„焦点焦点測光モード焦点 AF標準キャプãƒãƒ£ãƒ»ãƒ¢ãƒ¼ãƒ‰ã‚¹ãƒˆãƒ­ãƒ¼ãƒ–ã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚Mustek MDC800 ã®æ¦‚è¦: スーパーファインサãƒãƒ¼ãƒˆã—ã¦ã„るサムãƒã‚¤ãƒ«ã®å¤§ãã•カメラを OFF ã«ã—ã¾ã™ã‚«ãƒ¡ãƒ©ã®æ—¥æ™‚㨠PC ã‚’åŒæœŸã™ã‚‹ã‚·ã‚¹ãƒ†ãƒ ã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚TIFF (RGB)TTLTVTV 出力ã®å½¢å¼ç•°ãªã‚‹ã‚¹ãƒ”ードã§ãƒ†ã‚¹ãƒˆä¸­...ディレクトリå‚ç…§ "camera" ã¯ã‚³ãƒ³ãƒ”ュータ上ã®å†™çœŸã®ç›®éŒ²ã‚’作æˆã—ã¾ã™ã€‚ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã®å‘上より㯠JD11 カメラ関係ã®ä½œæ¥­ã‚’担当。 RS232 インタフェース @ 115 kbit ã¯ç”»åƒè»¢é€ã§å¿…è¦ã§ã™ã€‚ ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã®é©ç”¨ç¯„囲: - サムãƒã‚¤ãƒ« (64x48 PGM フォーマット) - ç”»åƒ (640x480 PPM フォーマット) Kodak DC120 カメラã¯ç”»åƒã‚’ä¿å­˜ã™ã‚‹ã®ã« KDC ファイル形å¼ã‚’使用ã—ã¾ã™ã€‚カメラã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¦ç”»åƒã‚’表示ã™ã‚‹å ´åˆã¯ã€"kdc2tiff" プログラムを http://kdc2tiff.sourceforge.net ã‹ã‚‰å…¥æ‰‹ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚サムソン digimax 800k å‘ã‘ã® gPhoto2 用ドライãƒã¯ James Mckenzie æ° ãŒé–‹ç™ºã‚’担当ã—ã¾ã—ãŸã€‚Lutz Mueller æ°ã¯ãれを gphoto2 å‘ã‘ã«å®Ÿè£…ã—ç›´ã—ã¾ã—ãŸã€‚Marcus Meissner æ° æ°ã¯ãƒã‚°ãƒ•ã‚£ãƒƒã‚¯ã‚¹ã¨æ‹¡å¼µæ©Ÿèƒ½ã‚’担当ã—ã¾ã—ãŸã€‚カメラã®ãƒãƒƒãƒ†ãƒªãƒ¼æ®‹é‡ãŒä½Žã™ãŽã¾ã™ (%d%%)。æ“作を中止ã—ã¾ã™ã€‚カメラã¯ã‚³ãƒžãƒ³ãƒ‰ã‚’å—ã‘付ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚カメラã¯ãƒ•ァイルåã¨ã—㦠'%s' ã‚’å—ã‘付ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚カメラã¯ã‚¹ãƒ”ード %i をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。カメラãŒä¸æ˜Žãªã‚¨ãƒ©ãƒ¼ã‚’è¿”ã—ã¦ãã¾ã—ãŸã€‚ã“ã®ã‚¨ãƒ©ãƒ¼ã‚’å†ç¾ã™ã‚‹æ–¹æ³•を追加ã—ãŸãƒã‚°ãƒ»ãƒ¬ãƒãƒ¼ãƒˆã‚’ %s ã¾ã§å ±å‘Šã—ã¦ä¸‹ã•ã„ (0x%x,0x%x)。ã”å”åŠ›ã«æ„Ÿè¬ã—ã¾ã™ï¼ã‚«ãƒ¡ãƒ©ãŒäºˆæœŸã—ãªã„サイズ以上をé€ä¿¡ã—ã¾ã—㟠(%i)カメラ㌠%i ãƒã‚¤ãƒˆã®ã¿é€ä¿¡ã—ã¾ã—ãŸãŒã€å¿…è¦ãªãƒã‚¤ãƒˆæ•°ã¯å°‘ãªãã¨ã‚‚ %i ã§ã™ã€‚アップロードã—ãŸãƒ•ァイルã®ã‚µã‚¤ã‚ºãŒ NULL ã§ã™ãƒ•ァイルå㯠12文字以内ã«ã—ã¦ä¸‹ã•ã„ ('%s' 㯠%i 文字ã‚りã¾ã™)。ファイルシステムã§ã¯ãƒ•ァイルã®ã‚¢ãƒƒãƒ—ロードをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。ファイルシステムã¯ã“ã®å½¢å¼ã®ãƒ•ァイル情報å–得をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“ファイルシステムã¯ã“ã®å½¢å¼ã®ãƒ•ァイルå–得をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。ファイルシステムã¯ã“ã®å½¢å¼ã®ãƒ•ァイル情報ã®è¨­å®šã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“最åˆã«å—ã‘å–ã£ãŸãƒ‡ãƒ¼ã‚¿ (0x%x) ã¯ç„¡åйã§ã™ã€‚パスå '%s' ãŒç„¡åйã§ã™ã€‚ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã§ã¯è¦æ±‚ã—ãŸãƒãƒ¼ãƒˆåž‹å¼ (%i) をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。ç¾åœ¨æ“作ãŒé€²è¡Œä¸­ã§ã™ã€‚ã“ã®ã‚«ãƒ¡ãƒ©ã®ã¿åŒæ™‚ã«ä¸€ã¤ã®æ“作をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ç¾åœ¨ã®æ“作ãŒçµ‚了ã™ã‚‹ã¾ã§ãŠå¾…ã¡ä¸‹ã•ã„。ã“ã®ã‚«ãƒ¡ãƒ©ã¯ã‚­ãƒ£ãƒ—ãƒãƒ£ã®ãƒ—レビューãŒã§ãã¾ã›ã‚“。ã“ã®ã‚«ãƒ¡ãƒ©ã§ã¯ã‚­ãƒ£ãƒ—ãƒãƒ£ã§ãã¾ã›ã‚“。ã“ã®ã‚«ãƒ¡ãƒ©ã¯ãƒ‰ãƒ©ã‚¤ãƒæƒ…報をæä¾›ã—ã¦ã„ã¾ã›ã‚“。ã“ã®ã‚«ãƒ¡ãƒ©ã§ã¯è¨­å®šã—ãŸã„ãã¤ã‹ã®ã‚ªãƒ—ションをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。ã“ã®ã‚«ãƒ¡ãƒ©ã¯ã‚µãƒžãƒªã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ©ã‚¤ãƒ–ラリ㯠Kodak DC 215 ズーム・カメラを使ã£ã¦ãƒ†ã‚¹ãƒˆã•れã¦ã„ã¾ã™ã€‚ãŠãらã DC 200 㨠DC 210 カメラã§ã‚‚動作ã™ã‚‹ã“ã¨ã§ã—ょã†ã€‚ã‚‚ã—ãã®ã‚ˆã†ãªã‚«ãƒ¡ãƒ©ã‚’ãŠæŒã¡ã§ã€ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã®ãƒ©ã‚¤ãƒ–ラリを使ã£ã¦å•題ãŒç™ºç”Ÿã—ãŸã‚Šã€æ­£ã—ã動作ã—ãŸãªã©ã®çжæ³ã‚’ koltan@gmx.de ã¾ã§ãƒ¡ãƒ¼ãƒ«ã§çŸ¥ã‚‰ã›ã¦ä¸‹ã•ã„。ã“ã®ãƒ—レビューã¯å­˜åœ¨ã—ã¾ã›ã‚“。サムãƒã‚¤ãƒ«ã‚µãƒ ãƒã‚¤ãƒ«ã®é«˜ã•: %d サムãƒã‚¤ãƒ«ã®ã‚µã‚¤ã‚º: %d サムãƒã‚¤ãƒ«ã®å¹…: %d 時刻ã®å½¢å¼æ™‚é–“: %Y å¹´ %-m 月 %-d æ—¥ (%a) %T 低速度撮影ã®é–“隔低速度撮影数二回リトライã—ã¾ã—ãŸãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã§ã™ã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。タイマータイマーã¨ãƒªãƒ¢ãƒ¼ãƒˆ10 ç§’ã®ã‚¿ã‚¤ãƒžãƒ¼2 ç§’ã®ã‚¿ã‚¤ãƒžãƒ¼æ˜Žã‚‹ã™ãŽã¾ã™æš—ã™ãŽã¾ã™ãƒªãƒˆãƒ©ã‚¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚上Toshiba David Hogue Toshiba pdr-m11 å‘ã‘ã®ãƒ‰ãƒ©ã‚¤ãƒã€‚ フラッシュを発光ã—ãŸåˆè¨ˆæ•°: %d キャプãƒãƒ£ã—ãŸå†™çœŸã®åˆè¨ˆ: %d フラッシュã®ç™ºå…‰æ•°: %d å–å¾—ã—ãŸå†™çœŸã®åˆè¨ˆæ•°: %d パケットを %i 回é€ä¿¡ã—ã¾ã—ãŸãŒã€ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。二回å†é€ã—ã¾ã—ãŸãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸã€‚終了ã—ã¾ã™...カメラã¨é€šä¿¡ä¸­...é›»çƒã‚¿ãƒ¼ãƒœ モード使用ã™ã‚‹è¨€èªžUNIX æ™‚åˆ»æœªå®šç¾©ä¸æ˜Žãªæ›¸é¡žæœªå®šç¾©ã® PTP ãƒ—ãƒ­ãƒ‘ãƒ†ã‚£ä¸æ˜Žä¸æ˜Žãª %dカメラ ライブラリã®ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼ã‚¨ãƒ©ãƒ¼ã‚’特定ã§ãã¾ã›ã‚“ã€‚ä¸æ˜Žãªãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ %i ã§ã™ã€‚䏿˜Žãªãƒ•ラッシュ モード %dã€ä¸æ˜Žãªåž‹å¼ä¸æ˜Žãªåž‹å¼ "%s"䏿˜Žãªå€¤ã§ã™ä¸æ˜Žãªå€¤ %04x ã§ã™ä¸æ˜Žãªå€¤ 0x%04x ã§ã™ä¸æ˜Žãªã‚ºãƒ¼ãƒ  モード %d 䏿˜Ž (%04x)䏿˜Ž (%04x) èªè­˜ã§ããªã„å応ã§ã™ã‚µãƒãƒ¼ãƒˆã—ãªã„カードサãƒãƒ¼ãƒˆã—ã¦ã„ãªã„コマンドã§ã™ã€‚未サãƒãƒ¼ãƒˆã®ãƒãƒ¼ãƒˆã®ç¨®é¡ž %i = 0x%x ãŒæŒ‡å®šã•れã¾ã—ãŸã€‚åˆæœŸåŒ–ã§ãã¾ã›ã‚“。サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ãƒãƒ¼ãƒˆã®ç¨®é¡ž: %d ã€ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã¯ USB カメラã§ã®ã¿å‹•作ã—ã¾ã™ã€‘ アップロードã™ã‚‹ URLフォルダ '%s' ã¸ã®ã‚¢ãƒƒãƒ—ロードã®ã¿ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ãƒ•ァイルã®ã‚¢ãƒƒãƒ—ロード中...ç”»åƒã®ã‚¢ãƒƒãƒ—ロード中...ç”»åƒ %s ã®ã‚¢ãƒƒãƒ—ロード中ã§ã™ã€‚アップロード中...ユーザã«ã‚ˆã£ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒå–り消ã•れã¾ã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼å®šç¾© 1ユーザー定義 2ユーザー定義 3ベンダー拡張ã®è©³ç´°: %s ベンダー ID: %02x%02x ãƒãƒ¼ã‚¸ãƒ§ãƒ³: ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %s ビデオ出力ビデオ出力VividVolatile ã®è¨­å®šãƒœãƒªãƒ¥ãƒ¼ãƒ ãƒ¬ãƒ™ãƒ«WEP 128 ビットWEP 64 ビットWIFI ESSIDWIFI ãƒãƒ£ãƒ³ãƒãƒ«WIFI プロファイル完了ã™ã‚‹ã®ã‚’å¾…ã£ã¦ã„ã¾ã™...待機中...警告レベル 0警告レベル 10x%x を期待ã—ã¾ã—ãŸãŒã€0x%x ã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。弱ã„ホワイトãƒãƒ©ãƒ³ã‚¹ç™½æ¿ãƒ›ãƒ¯ã‚¤ãƒˆãƒãƒ©ãƒ³ã‚¹ç™½æ¿ãƒ›ãƒ¯ã‚¤ãƒˆãƒãƒ©ãƒ³ã‚¹ãƒ›ãƒ¯ã‚¤ãƒˆãƒãƒ©ãƒ³ã‚¹ãƒ¯ã‚¤ãƒ‰Windows ç”»åƒå½¢å¼æ›¸ãè¾¼ã¿æ›¸ãè¾¼ã¿ä¿è­·ã¤ãエスケープ・シーケンスãŒé–“é•ã£ã¦ã„ã¾ã™: 0x%02x ãªã®ã« 0x%02x ã‚’å—ã‘å–りã¾ã—ãŸã€‚XML 書類YYYY/MM/DDå¹´/月/æ—¥ã¯ã„'%s' をフォルダ '%s' ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã—ã¾ã—ãŸãŒã€ãƒ•ァイルシステムã¯ãƒ•ァイルã®å‰Šé™¤ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。ãŠä½¿ã„ã® USB カメラã«ã¯ S&Q ãƒãƒƒãƒ—ã‚»ãƒƒãƒˆãŒæ­è¼‰ã•れã¦ã„ã¾ã™ã€‚ 撮影ã—ãŸå†™çœŸã®åˆè¨ˆ = %i ã“れらã®å†™çœŸã¯è¤‡æ•°ã®ãƒ•レームを格ç´ã—ãŸã‚¯ãƒªãƒƒãƒ—ã« ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ ãŠä½¿ã„ã® USB カメラã«ã¯ Aox ãƒãƒƒãƒ—ã‚»ãƒƒãƒˆãŒæ­è¼‰ã•れã¦ã„ã¾ã™ã€‚ 低解åƒåº¦ã®å†™çœŸã®æ•° = %i 高解åƒåº¦ã®å†™çœŸã®æ•° = %i 写真ã®åˆè¨ˆ = %i ãŠä½¿ã„ã® USB カメラ㯠Kodak EZ200 ã§ã™ã€‚ 写真ã®åˆè¨ˆ = %i ズームズーム (ミリå˜ä½)ズームレベルを変更ã—ã¾ã—ãŸã‚ºãƒ¼ãƒ : 29 mm ズーム: 34 mm ズーム: 41 mm ズーム: 51 mm ズーム: 58mm ズーム: マクロ é›»æºã‚¢ãƒ€ãƒ—ã‚¿agfa_cl20 Agfa CL20 Linux ドライãƒã®æä¾›è€…ï¼ Email us at cl20@poeml.de ホームページ㯠http://cl20.poeml.de 自動自動ã€èµ¤ç›®è»½æ¸›ãƒãƒƒãƒ†ãƒªãƒ¼ãƒ¢ãƒŽã‚¯ãƒ­ã‚«ãƒ¡ãƒ©ãŒ 9 秒以上動作ã—ã¦ã„ã¾ã›ã‚“。å†åˆæœŸåŒ–ã—ã¾ã™ã€‚ canon_int_capture_image: 関数 canon_usb_list_all_dirs() ã®çµ‚了処ç†ã«å¤±æ•—ã—ã¾ã—㟠(ステータス %i)canon_int_capture_image: 関数 canon_usb_list_all_dirs() ã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—㟠(ステータス %li)canon_int_list_directory: ERROR: åˆæœŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒçŸ­ã™ãŽã¾ã™ (%i < 最å°å€¤ %i)canon_int_list_directory: 最åˆã® dirent を調査ã™ã‚‹éš›ã«ãƒ‘ケットã®çµ‚端ã«åˆ°é”ã—ã¾ã—ãŸcanon_int_list_directory: 切りã¤ã‚られãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«é­é‡ã—ã¾ã—ãŸcanon_serial_get_dirents: %i ãƒã‚¤ãƒˆã®ãƒ¡ãƒ¢ãƒªãƒ¼ã‚’確ä¿ã§ãã¾ã›ã‚“ã§ã—ãŸcanon_serial_get_dirents: dirent ã®ãƒãƒƒãƒ•ァ・サイズを %i ãƒã‚¤ãƒˆã«å¤‰æ›´ã§ãã¾ã›ã‚“ã§ã—ãŸcanon_serial_get_dirents: 別ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸcanon_serial_get_dirents: dirent ã®åˆæœŸãƒ‘ケットãŒçŸ­ã™ãŽã¾ã™ (%i ãƒã‚¤ãƒˆã ã‘)canon_serial_get_dirents: dirent ãŒå¤šã™ãŽã¾ã™ (ループã›ã–ã‚‹ã‚’å¾—ãªã„ã§ã™)canon_serial_get_dirents: 切りã¤ã‚られãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’å—ã‘å–りã¾ã—ãŸcanon_serial_get_dirents: canon_serial_dialogue ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸcanon_usb_get_dirents: ãƒãƒƒãƒ•ã‚¡ã«èª­ã¿è¾¼ã‚ã¾ã›ã‚“。切りã¤ã‚ãŸã‚µã‚¤ã‚º '%.96s' ãŒå¤§ãã™ãŽã¾ã™ã€‚canon_usb_get_dirents: canon_usb_long_dialogue ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®å–å¾—ã«å¤±æ•—ã—ã¾ã—㟠(返り値 %i)canon_usb_list_all_dirs: ãƒãƒƒãƒ•ã‚¡ã«èª­ã¿è¾¼ã‚ã¾ã›ã‚“。切りã¤ã‚ãŸã‚µã‚¤ã‚º '%.96s' ãŒå¤§ãã™ãŽã¾ã™ã€‚canon_usb_list_all_dirs: canon_usb_long_dialogue ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®å–å¾—ã«å¤±æ•—ã—ã¾ã—㟠(返り値 %i)canon_usb_set_file_attributes: canon_usb_dialogue ã«å¤±æ•—ã—ã¾ã—ãŸè‰²å½©coolshot ライブラリ Ver所有者ã®åå‰ã‚’変更ã§ãã¾ã›ã‚“ã§ã—ãŸæ™‚刻をセットã§ãã¾ã›ã‚“ã§ã—ãŸã‚¨ã‚³ãƒŽãƒŸãƒ¼å¤–部フィルインファインgPhoto2 Mustek VDC-3500/Relisys Dimera 3500 ã“ã®ã‚½ãƒ•トウェア㯠StarDot Technologies ç¤¾ãŒ æ‰€æœ‰æ¨©ã‚’ã‚‚ã¤æƒ…å ±ã‹ã‚‰ä½œæˆã•れã¾ã—ãŸã€‚ 作者: Brian Beattie å”力者: Chuck Homic ãƒ—ãƒ­ãƒˆã‚³ãƒ«ã®æƒ…å ±ã€ç”Ÿç”»åƒã®å½¢å¼ã€ gPhoto2 ã¸ã®ç§»æ¤æ‹…当 gsmart300 å‘ã‘ã®ãƒ©ã‚¤ãƒ–ラリ。 Till Adam Jerome Lodewyck Mustek gSmart 300 デジタル・カメラå‘ã‘ã® gPhoto2 camlib モジュール㨠Mustek ãŒæä¾›ã—ã¦ãれãŸä»•様。 高 (640 x 480)高圧縮ã€iClick 5X å‘ã‘ドライムTheodore Kilgore iTTLFill モードã‚り∞内部jamcam ライブラリ Verjl2005a カメラå‘ã‘ライブラリ Theodore Kilgore キーã®ãƒ­ãƒƒã‚¯ã«å¤±æ•—ã—ã¾ã—ãŸã€‚劣化ãªã—低 (320 x 240)低圧縮ã€é€šå¸¸åœ§ç¸®ã€ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãŒå ±å‘Šã•れã¦ã„ã¾ã›ã‚“。ãªã—標準使用ä¸å¯: %sOFFONONã€èµ¤ç›®è»½æ¸›ãƒãƒƒãƒ†ãƒªãƒ¼å®¹é‡pccam600_get_file: インデックス %d å€‹ã€æœŸå¾…値 > %då†ç”Ÿé›»æº â—‹é›»æº Ã—èª­ã¿è¾¼ã¿ã®ã¿èª­ã¿æ›¸ã準備完了記録Sierra ドライãƒã§ã¯å†å¸°å‘¼ã³å‡ºã—ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“ï¼ %s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。赤目軽減フラッシュã¯ã‚ªãƒ•ã§ã™ã€‚ 赤目軽減フラッシュã¯ã‚ªãƒ³ã§ã™ã€‚ 赤目軽減spca50x ライブラリ Versq905 å‘ã‘æ±Žç”¨ãƒ‰ãƒ©ã‚¤ãƒã€‚ Theodore Kilgore sq905C å‘ã‘æ±Žç”¨ãƒ‰ãƒ©ã‚¤ãƒã€‚ Theodore Kilgore 標準スーパーファインsx330z 㯠USB ã«ã®ã¿å¯¾å¿œã—ã¦ã„ã¾ã™æ™‚刻ã®ã‚»ãƒƒãƒˆCRC ã®åˆæœŸå€¤ã‚’推測ã§ãã¾ã›ã‚“ 未定義予期ã—ãªã„データ種 %i䏿˜Ž (0x%02x)䏿˜Žãªåœ§ç¸® %dã€ä¸æ˜Žãªè§£åƒåº¦ %d) vCalendar1vCalendar2vCard2vCard3警告: CRC ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã¾ã›ã‚“ (サイズ %d, 値 0x%04x ã®è¿½åŠ ) ######################### libgphoto2-2.5.9/po/Rules-quot0000644000175000001440000000337612557123417013156 00000000000000# Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header libgphoto2-2.5.9/po/zh_CN.gmo0000644000175000001440000013501712623156275012660 00000000000000Þ•B,<$P0hQ04º0ï0 1;1P1_1{1€1…1Š11“1—1›1Ÿ1 ¤1 ¯1º1½1Á1Æ1Ì1Ï1Õ1Ø1Þ1á1ç1í1 ð1ú1ý122 22 '2.22a2j2o22 ª2¸2Ñ2ä2ü2 33+3+331_3'‘3(¹3â3 45!5o35£5#Â5æ5ë5 ð5 þ5 666#6+6?6R6W6^6Os6Ã6Ó69ó6-7@A7 ‚71£7Õ7ò7#8+8H8`88)’8$¼8>á8 9(9F9U9n9„9 •9¢9»9Ï9ë9 ::!:*:9: @:K:Z:x::£:¹:Ï:ì: þ: ;";;; O; Y; c;m;Œ;:›;<Ö;<0<!J<'l<”<°<(Ê<ó<= +=;L=0ˆ=¹=Î=5ç=5>sS>Ç>â>ÿ> ? ? ?,?ÿ@?@@O@U@h@.y@ ¨@ µ@EÂ@AA-ACAZAjA~A’A¦A¼AÑAêAùA B B!B>BUBmB‡B£BÂBÈBÐBÖBìBC(C@C'TC1|C®C·CÍCßCõCøCýCDD D D,D?D PD\DkD{D ‹D_•DõDúDE/E5E ;E FETEcE$uEšE«E"»EÞE õEF FF!F1F 7FDFdFyF€F…FF”F­F½FÒF"âFGG G%G7GØKGQ$HUvH2ÌHÿHI III+I 1I?I PI ^IiI{I“I¤I´IÐIáIèI úIJJ.J6J LJXJ`JâJçJðJÿK LMÒ“M^fNÅNgÚNBOIOMOgOƒO’O›O¤O ­O*·OâOùO PP1P#LPpP vPƒPžPºPÖP íPQQ"Q5QS;QQ—QµQ¼QÐQèQR!Rp)RKšRæR,îRˆS¤SµSÄS$ÉS€îSoUrU’UšU«UÂUÖUîUV VVV'V.0V_V9hV¢V¸VÏV+çVWWWW!W$WM:WˆW—W«W±WÀW ÙWçWïWXXX7XUXgXX—X¶XÔXóX Y#Y=YTYoYˆY¡Y©YÄYàYüYZ&ZAZ'VZ,~Z«ZºZÒZæZÿZ[¬+[YØ[ 2\ >\ J\V\h\|\\–\ ›\¦\!À\ â\] ]9]*R]}]—]­]C½]^*^2^R^o^^ ˆ^”^ ˜^¦^¸^Z¿^_ 0_;_M_‹b_üî_ ë`ö`a%a5aGaMaia,}a ªa¸a$Óa#øa^bj{bæbïb cµ cÌÃcd3–d/ÊdúdeHefeye ‚ee ¬e¶e ËeÙeêeGfÙNfè(gìhLþh&Ki,ri%Ÿi-Åi9ói)-jMWj0¥j7Öj,k7;k,sk k=¿k•ýk%“l¹l:Öl;m'MmumŽn¤n¸n ÍnÙn/òn9"o\oxoo žo¬o»o ÑoßoõopApD\p-¡pÏpáp öpqq /q9qKq eqpq uq ƒq q›q3«qßqîqlòq_rdr zr†r‹r “r-¡rÏrÕrèrs s"s’'sºt Ét Ötát òtuuu u2u6u 9uDuIu Ru\ubu iusu†uuv ujw8‚w»w Îw:Úw x#x>xCxHxMxRxVxZx^xbx gx rx}x€x„x‰xx’x˜x›x¡x¤xªx°x ³x½xÀxÃxÆxÉx!Ùx ûx&y/y6y=y\yxy‹y¡y±yÄyÚyây õy5z=9z2wz-ªzØzõzþ{|{!||)¼|æ|í|ô|û|} } }}}.}D}H} O}N\} «}¸}:Ñ} ~> ~_~0~°~Æ~(Ü~6Ue„*ÈÏè÷ € € *€7€J€]€"s€–€€ ­€º€Ê€ Ñ€ Þ€ë€)8G [elsŒ Ÿ ªµ¼Ù4ì7!‚Y‚q‚‚¬‚È‚ä‚&ƒ)ƒGƒbƒ.ƒ6°ƒçƒÿƒ0„'G„‘o„…!…>…E… U…b…r… ˆ… ’†ž†¥†¾†.܆ ‡ ‡D%‡ j‡w‡!‡‡©‡‡Õ‡í‡ˆˆ2ˆHˆaˆ qˆ {ˆ…ˆŸˆ¾ˆ׈ðˆ ‰!,‰N‰R‰Y‰`‰s‰†‰!œ‰¾‰ щ%ò‰Š Š ,Š 9ŠFŠIŠNŠSŠVŠ[Š^Š8eŠ žŠ «Š¸ŠÈŠአñŠTþŠS‹Z‹p‹ˆ‹ ‹™‹©‹¹‹É‹Ü‹û‹ ŒŒ7ŒMŒTŒ [Œ hŒuŒ…Œ ŒŒ$šŒ¿ŒÏŒÖŒÚŒáŒèŒþŒ0(FoˆŒ¡ù´K®ŽEúŽ*@ kx {†Šš¡ ± ¾ ËØë0F Y cqxŒ §¹ ɃÖZ‘_‘f‘ã‘õc’pY“ÇÊ“Z’”í”jý”h•o•"s•–• ­• ¸• ÕΕ Õ•(â• ––,– ?–#`–,„–±– ¸––Û–ô– —-#—Q—U—e—x—R— Ò—Ü—õ—ù— ˜˜"8˜ [˜ne˜MÔ˜ "™),™}V™Ô™ è™ô™'ù™G!ši›m›„› ‹›˜› ¨›µ›Å›á› å›ï›ö›þ›!œ 'œ71œiœ|œŽœ#¡œÅœÉœМԜ؜ܜAìœ .;K R_ {ˆ¨¬ÀÔòžž 6žWž už–ž±žÆžÞžöžŸ &Ÿ GŸQŸhŸ€Ÿ˜Ÿ©ŸºŸΟ⟠ / C X l „ ¦Ÿ \F¡£¡¬¡µ¡¾¡ ס ä¡ñ¡ø¡ ÿ¡ ¢"¢A¢`¢v¢•¢!«¢Í¢é¢ ÿ¢< £J£*Q£|£”£§£½£ ģѣգ å£ï£Vö£M¤ c¤m¤}¤ž¤ /¥ ;¦'H¦p¦†¦œ¦ ²¦¼¦Ϧ0⦠§ §&3§&Z§c§på§V¨]¨ s¨À}¨É>©ª9ª.Iª xª…ª1›ªͪઠçª"ôª « !«.«>«Q«Hp«Ê¹«Ô„¬ùY­+S®®,˜®Å®,ä®>¯!P¯Mr¯$À¯'å¯! °'/°)W°#°5¥°xÛ°$T±y±0˜±'ɱñ± ² ³6³L³ b³o³5…³0»³ì³´ ´%´5´H´ d´q´‡´—´:­´Jè´#3µWµmµˆµ˜µ«µ Áµ ˵صèµøµ üµ¶ ¶ ¶7!¶ Y¶e¶\i¶ƶͶݶí¶ô¶û¶=·@·G·V·r·…·Œ·ˆ“· ¹*¹=¹ D¹ Q¹_¹f¹y¹€¹¹“¹ —¹¤¹ «¹ ¸¹Ź̹ Ó¹ݹ ò¹ÿ¹'&7ªúJ}TÉ'Æè ™¤S¢A“Ù ©½î #"Ì>-C™1Ï(”ÕŸ¨nçOˆ’ƒØ¸&EäÊ¡Öc6r+?—ó0[fm¹hþsOÓqÎûnuî³G°Í4³-»-)¦‘jN7VÉMÿ79ltubpöåz÷KД:• =Fá!¢5¶ ÔB –! Â_©ß‘*vè"~€$.BX@Î#weo¹y, b8$]ü"X1Ì~àã¼?R ý;쯜²¿—‡%\2Ãq:Íh@p§všòÛ/Œ#½´=Ò`ÅCë|êx„*Ž.çV%eY¨+&‹ 3>Ü¡wºäËUÈ5ð®ôÇÜÊ0I%ˆ|}‚ T·4Zëoù(ᣵ@øÃi1ôÖÿãa È3öüý^÷‚D¿€Úû„ÏÔ«)±ÚИ?sH:<Šõ¶,´P,ž5ê$ïÀ¾Ò6þ˲Á )r†{_œÇ–>L¥H úâÄA^¬†Ÿ0<›˜i*6Jò.Øf­gó3‰ŠEâkø­QaZ¬ı=ÂчW]x¥…A8;Áé!ù§Uc’¯z<gÞÑYD·í2 ‰ƒRŽ›Ùå`£×šŒ9/Õ8Qð+“žy {õÅßI…í•P Þ×°Æ«9 » ¤MñWìïFGÛK(N'mæ[LÓµÝàÝ/ÀB;jñdS¼t4®ºé¾¸d‹2ªæl¦ \k Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Drive %s %11s bytes total %11s bytes available (battery is %d%% full)%i (unknown)%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)-0.5-1.0-1.5-2.00.00.51.01.51.6x1152 x 8641280 x 9601x2.02.5x29 mm2x34 mm3x41 mm4x51 mm58 mm5x640 x 4806x7x8x9xAC adapterASIC Revision: %d.%d Album nameAn error occurred in the io-library ('%s'): %sApertureAutoAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off TimeAuto Power Off (minutes)Auto exposure lockAuto, red-eye reductionAutofocus error.Automatic Available memory: Bad EOTBad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.Battery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery exhausted, camera off.Battery status: %s, AC Adapter: %s BeepBestBlack & WhiteBlack BoardBlack/WhiteBlueBright+Bright-Brightness/ContrastBulb Exposure TimeBusyCameraCamera ConfigurationCamera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera SettingsCamera and Driver ConfigurationCamera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera unavailableCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCaptureCapture type is not supportedCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card not supported.Card removed during access.Changing speed... wait...CharacterCharacter & SoundChargingChecksum errorCloudyColor ModeColor SettingsCommand can not be cancelled.Command order error.Communication error 1Communication error 2Communication error 3Compact Flash Card detected CompactFlash CardCompressionConfigurationConfiguration for your FUJI cameraConnected to cameraContrast+Contrast-CopyrightCopyright (max. 20 characters)Corrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not detect any cameraCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Current Mode: Camera Mode Current Mode: Playback Mode CustomDate & TimeDate FormatDate and TimeDate and time (GMT)Date: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDay/Month/YearDebugDeleting image %s.Detected a '%s'.Digita Johannes Erdfelt Digital ZoomDigital zoomDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisconnecting camera.Do not display TV menuDownloading %s.Downloading '%s'...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading thumbnail...Downloading...DriverDual IrisEEPROM checksum error.ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.EmptyEnglishErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationExecute predefined command with parameter values.ExposureExposure CompensationExposure MeteringExposure compensationF2F2.3F2.8F4F5.6F8FileFile '%s' could not be found in folder '%s'.File compressionFile existsFile not foundFile protected.File resolutionFile typeFile was too big. You may have to turn your camera off and back on before uploading more files.FineFirmware Revision: %d.%d Firmware version: %d.%02d FixedFlashFlash ModeFlash SettingFlash SettingsFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFluorescentFocusFocus ModeFocus positionFocusing error.ForceForce Flash Format card and set album name.Format compact flashFrenchFullGeneralGermanGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...GreenHighHigh (1152 x 872)High (good quality)Host Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?HyPictIDISO SpeedIdleIllegal parameter.ImageImage & SoundImage AdjustmentImage QualityImage SizeImage height: %d Image number not valid.Image protected.Image size: %d Image type is not supportedImage width: %d In useInfinity/Fish-eyeInformationInternal error (1).Internal error (2).InvalidInvalid Value ( %d ) Iris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JPEGJapaneseKeep filename on uploadKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Konica ConfigurationKonica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BrightnessLCD ModeLED ModeLanguageLens ModeLens direction does not match flash light Lens is not connected Light too dark.List all filesListing files in '%s'...Listing folders in '%s'...Loading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!Looking for camera ...Looks like a modem, not a cameraLowLow (576 x 436)Low (best quality)MacroMatthew G. Martin Based on fujiplay by Thierry Bousch MaximalMaximum number of Images: %d MediumMedium (1152 x 872)Medium (better quality)Memory card status (%d): %s Memory in camera: %d Mbit. MinimalMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Model: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: Kodak %s Month/Day/YearNTSCName to set on card when formatting.Nikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. NoNo Compact Flash Card detected No cardNo card present.No memory card presentNo reason availableNo response from cameraNo space left on card.NoneNone selectedNormalNormal Not FullNot enough memory available on the memory cardNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOffOnOn, red-eye reductionOnly root folder is supported - you requested a file listing for folder '%s'.Operation ModeOperation cancelledOtherOther SettingsOther command executing.Out of memoryOutdoorOwner name changedPALPTP Access DeniedPTP Capture Already TerminatedPTP Device Prop Not SupportedPTP General ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk Parameter 1Parameter 2Parameter 3Path not absolutePersistent SettingsPicture SettingsPicturesPlayPort speedProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProduct ID: %02x%02x Prohibit Flash Read-only file attributes like width and height can not be changed.ReadyReceived unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRedRed eye flashRed-eye ReductionRemoteRequested information about picture %i (= 0x%x), but got information about picture %i backResetting protocol...ResolutionResolution SwitchResolution plus SizeRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Self TimerSelf Timer (next picture only)Self Timer TimeSending data...Sensor ID: %d.%d SepiaSession-persistent SettingsSet clock in cameraShall the camera beep when taking a picture?Shot SettingsShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed microseconds (0 auto)SiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.Sipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . SkylightSlide Show IntervalSlow SyncSony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners SoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSpot Metering ModeStandardStrobe error.Summary for Mustek MDC800: SuperFineSwitching Camera OffSystem error.TV Output FormatTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The requested port type (%i) is not supported by this driver.There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.This camera can not capture previews.This camera can not capture.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.Thumbnail height: %d Thumbnail size: %d Thumbnail width: %d Time formatToo many retries failed.Total pictures captured: %d, Flashes fired: %d Transmission timed out even after 2 retries. Giving up...Trying to contact camera...TungstenUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown modelUnrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. Upload is supported into the '%s' folder onlyUploading file...Uploading image: %s.Uploading...User canceled downloadVendor ID: %02x%02x Version: Volatile SettingsWaiting for completion...Waiting...WeakWhite BalanceWhite BoardWhite levelWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.Year/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.ZoomZoom (in millimeters)a/c adaptorautobatteryblack & whitecamera inactive for > 9 seconds, re-initing. colorcoolshot library vcould not change owner namecould not set timeexternallyfinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port high (640x480)in fill modeinternallyjamcam library vlow (320x240)menuno status reported.normalnot available: %soffonon batteryplaypower OKpower badreadyrecordsuperfinesx330z is USB onlytime setunknown (0x%02x)Project-Id-Version: gphoto2 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2002-11-21 11:02+0800 Last-Translator: Wang Li Language-Team: zh_CN Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 相机鉴定: åž‹å·ï¼š%s 所有者:%s 电æºçжæ€ï¼š%s 闪存ç£ç›˜ä¿¡æ¯ï¼š %s 时间:%s 驱动器 %s 共计 %11s 字节 å¯ç”¨ %11s 字节 (电池 %d%% 满)%i (未知)由于有 %i ä¸ªç…§ç‰‡å·²è¢«ä¿æŠ¤ï¼Œæ‰€ä»¥æ— æ³•è¢«åˆ é™¤%lld (未知)%s (主机时间 %s%i ç§’)-0.5-1.0-1.5-2.00.00.51.01.51.6x1152 x 8641280 x 9601x2.02.5x29 mm2x34 mm3x41 mm4x51 mm58 mm5x640 x 4806x7x8x9x交æµå˜åŽ‹å™¨ä¸“ç”¨é›†æˆç”µè·¯ç‰ˆæœ¬ï¼š%d.%d 相册åç§°io-库 (“%sâ€) 中出现错误:%s光圈自动自动关机 (未连接) (ç§’)自动关机 (连接) (ç§’)自动关机时间自动关机 (分钟)自动æ›å…‰é”自动,消红眼自动èšç„¦é”™è¯¯ã€‚自动 å¯ç”¨çš„内存:错误的 EOT错误的校验和 - 得到 0x%02x,应为 0x%02xã€‚é”™è¯¯çš„æ•°æ® - 得到 0x%02x,应为 0x%02x 或 0x%02xã€‚é”™è¯¯çš„æ•°æ® - 得到 0x%02x,应为 0x%02x。æ›å…‰å¤±è´¥ (å¯èƒ½æ˜¯æ²¡æœ‰å……足的光线)错误的镜头状æ€å€¼ %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev ç”±æ­¤äººå¯¹å›¾åƒæ•°æ®è¿›è¡Œäº†åå‘工程: Jeff Laing æ ¹æ®ç½‘上找到的文档实现。由 Vision 授æƒã€‚电池低电é‡ã€‚电池就绪。电池电é‡ï¼š %s å›¾åƒæ•°é‡ï¼š %d 剩余最å°å®¹é‡ï¼š %d 忙: %s é—ªå…‰ç¯æ­£åœ¨å……电: %s 镜头状æ€ï¼š 电池没电,关闭相机。电池状æ€ï¼š%s,交æµå˜åŽ‹å™¨ï¼š%s 鸣笛最佳黑白黑æ¿é»‘白è“亮度+亮度-亮度/对比度闪光ç¯é—ªå…‰æ—¶é—´å¿™ç›¸æœºç›¸æœºé…置用于柯达 DC215 缩放相机的相机库。 Michael Koltan 相机设置相机åŠé©±åЍ噍é…置相机驱动程åºâ€œ%sâ€ç¼ºå°‘“camera_initâ€å‡½æ•°ã€‚相机有内存。 相机未就绪,多个“鉴别相机â€è¯·æ±‚å‡å¤±è´¥ï¼š%s相机照片为黑白照片。 相机三次拒ç»ä¿æŒè¿žæŽ¥æ‰“开的请求。相机拒ç»å‘½ä»¤ã€‚相机自行é‡ç½®ã€‚相机å‘é€äº†æ„外的字节 0x%02x。相机支æŒç¼©ç•¥å›¾ã€‚ 相机支æŒè§†é¢‘。 相机支æŒçš„视频格å¼ï¼šç›¸æœºä¸å¯ç”¨æ— æ³•检索剩余å¯ç”¨å†…å­˜æ— æ³•æ£€ç´¢ç”µæ± å®¹é‡æ— æ³•æ£€ç´¢å«æœ‰ç…§ç‰‡çš„æ–‡ä»¶å¤¹åç§°å…‰åœˆä¸æ”¯æŒçš„æ•æ‰ç±»åž‹å¡çжæ€ï¼š 无法写入å¡ã€‚å¡å°šæœªæ ¼å¼åŒ–塿œªæ‰“å¼€å¡å·²æ‰“å¼€å¡å·²å†™ä¿æŠ¤ã€‚䏿”¯æŒçš„å¡ã€‚访问使å–出å¡ã€‚正在改å˜é€Ÿåº¦... 请等待...人物人物和音效正在充电校验和错误多云彩色模å¼è‰²å½©è®¾ç½®å‘½ä»¤ä¸èƒ½è¢«å–消。命令顺åºé”™è¯¯ã€‚通讯错误 1通讯错误 2通讯错误 3æŽ¢æµ‹åˆ°é—ªå­˜å¡ é—ªå­˜å¡åŽ‹ç¼©é…ç½®é…置您的 FUJI 相机已连接到相机对比度+对比度-版æƒç‰ˆæƒ (最多 20 个字符)å·²æ¯åçš„æ•°æ®æ— æ³•ä¸ºæ­£åœ¨ä¸‹è½½çš„å›¾ç‰‡åˆ†é… %i ä¸ªå­—èŠ‚ã€‚æ— æ³•ä¸ºæ­£åœ¨ä¸‹è½½çš„ç¼©ç•¥å›¾åˆ†é… %i 个字节。无法应用 USB 设置无法检测到任何相机。无法创建目录 \DCIM。无法创建目标目录。无法检测到任何相机无法找到文件“%sâ€ã€‚无法在“%sâ€æ‰¾åˆ°æœ¬åœ°åŒ–æ•°æ®æ— æ³•获å–ç£ç›˜ä¿¡æ¯ï¼š%s无法获å–ç£ç›˜å:%s无法获å–闪存驱动字符无法åˆå§‹åŒ–上载 (相机应答 0x%02x)。无法装入必须的相机驱动程åºâ€œ%sâ€(%s)。无法打开“%sâ€ã€‚无法é‡ç½®ç›¸æœºã€‚ 无法将速度设置为 %i (相机应答 %i)。在几次é‡è¯•åŽä»ä¸èƒ½ä¼ è¾“包。无法上载,没有å¯ç”¨çš„ç©ºé—²æ–‡ä»¶å¤¹äº†ï¼ å·²æœ‰ 999 个佳能文件夹å称存在而且æ¯ä¸ªæ–‡ä»¶å¤¹ä¸­éƒ½æœ‰ç…§ç‰‡ AUT_9999.JPGã€‚å½“å‰æ¨¡å¼ï¼šç…§ç›¸æœºæ¨¡å¼ 当剿¨¡å¼ï¼šå›žæ”¾æ¨¡å¼ å®šåˆ¶æ—¥æœŸå’Œæ—¶é—´æ—¥æœŸæ ¼å¼æ—¥æœŸå’Œæ—¶é—´æ—¥æœŸå’Œæ—¶é—´ (GMT)日期:%i/%02i/%02i %02i:%02i:%02i æ‹æ‘„照片数:%i å…费照片数:%i 软件版本:%s 带宽:%s 内存:%i 兆字节 相机模å¼ï¼š%s 图åƒè´¨é‡ï¼š%s 闪光ç¯è®¾ç½®ï¼š%s ä¿¡æ¯ï¼š%s 计时器:%s LCD: %s 自动关机:%i 分钟 ç”µæºæ¥æºï¼š%sæ—¥/月/å¹´è°ƒè¯•æ­£åœ¨åˆ é™¤å›¾åƒ %s。已监测到一个“%sâ€ã€‚Digita Johannes Erdfelt 数字缩放数字缩放目录æµè§ˆæ¨¡å¼ - ç”± Scott Fritzinger 编制。目录存在找ä¸åˆ°ç›®å½•正在断开与相机的连接。请勿显示电视èœå•正在下载 %s。正在下载“%sâ€...正在下载数æ®...正在下载文件...æ­£åœ¨ä¸‹è½½å›¾åƒ %s。正在下载图åƒ...正在下载缩略图...正在下载...驱动器åŒå…‰åœˆEEPROM æ ¡éªŒå’Œé”™è¯¯ã€‚é”™è¯¯ï¼šæ¶ˆæ¯æ ¼å¼é”™è¯¯ã€‚错误:过多的消æ¯é”™è¯¯ï¼šé¡ºåºé”™è¯¯ã€‚错误:未预期的消æ¯é”™è¯¯ï¼šæœªé¢„期的消æ¯2。错误:未预期的包类型。空英语错误æ•获图åƒå‡ºé”™æ”¹å˜é€Ÿåº¦å‡ºé”™æ”¹å˜é€Ÿåº¦å‡ºé”™ã€‚删除相关缩略图文件出错删除文件出错åˆå§‹åŒ–中等待 ACK æ—¶å‡ºé”™å¸¦å‚æ•°å€¼è¿è¡Œ 预定义命令。æ›å…‰æ›å…‰è¡¥å¿æ›å…‰æµ‹å®šæ›å…‰è¡¥å¿F2F2.3F2.8F4F5.6F8文件在文件夹“%2$sâ€ä¸­æ— æ³•找到文件“%1$sâ€ã€‚文件压缩文件存在找ä¸åˆ°æ–‡ä»¶æ–‡ä»¶å·²å—åˆ°ä¿æŠ¤ã€‚æ–‡ä»¶åˆ†è¾¨çŽ‡æ–‡ä»¶ç±»åž‹æ–‡ä»¶å¤ªå¤§ã€‚ä½ å¯èƒ½éœ€è¦å°†ç›¸æœºå…³é—­å†æ‰“开,æ‰èƒ½ä¸Šä¼ æ›´å¤šæ–‡ä»¶ã€‚精细固件版本:%d.%d 固件版本:%d.%02d 固定闪光ç¯é—ªå…‰ç¯æ¨¡å¼é—ªå…‰ç¯è®¾ç½®é—ªå…‰ç¯è®¾ç½®é—ªå…‰ç¯ï¼šè‡ªåŠ¨é—ªå…‰ç¯ï¼šè‡ªåЍ (消红眼)闪光ç¯ï¼šå…³é—ªå…‰ç¯ï¼šå¼€é—ªå…‰ç¯ï¼šå¼€ (消红眼)闪光ç¯ï¼šæœªå®šä¹‰è§å…‰èšç„¦èšç„¦æ¨¡å¼èšç„¦ä½ç½®èšç„¦é”™è¯¯ã€‚强制强制闪光 æ ¼å¼åŒ–å¡ç‰‡å¹¶è®¾ç½®ç›¸å†Œå。格å¼åŒ–闪存法语满普通德语正在获å–é…ç½®...æ­£åœ¨èŽ·å–æ•°æ®...æ­£åœ¨èŽ·å–æ–‡ä»¶åˆ—表...æ­£åœ¨èŽ·å–æ–‡ä»¶...正在获å–第 %i 个文件的信æ¯...正在获å–缩略图...绿高高 (1152 x 872)高 (普通质é‡)主机型å·ï¼š %s æ›å…‰æ ¡æ­£ï¼š %s æ›å…‰æ•°æ®ï¼š %d 有效数æ®ï¼š %s 日期: %d/%02d/%02d %02d:%02d:%02d 自动定时器设置: %s è´¨é‡è®¾å®šï¼š %s 播放/录制模å¼ï¼š %s æœ‰æ•ˆå¡ ID: %s å¡ ID: %d é—ªå…‰ç¯æ¨¡å¼ï¼š 在相机连接到计算机以åŽï¼Œé¡»ç­‰å¾…多长时间å†è‡ªåŠ¨å…³æœºï¼Ÿåœ¨æœªè¿žæŽ¥åˆ°è®¡ç®—æœºæ—¶ï¼Œé¡»ç­‰å¾…å¤šé•¿æ—¶é—´å†è‡ªåŠ¨å…³æœºï¼Ÿåœ¨ç›¸æœºå…³æœºå‰é¡»ç­‰å¾…å¤šé•¿æ—¶é—´ï¼Ÿåˆæˆç…§ç‰‡IDISO é€Ÿåº¦é—²éžæ³•傿•°ã€‚图åƒå›¾åƒå’ŒéŸ³æ•ˆå›¾åƒè°ƒæ•´å›¾åƒè´¨é‡å›¾åƒå¤§å°å›¾åƒé«˜åº¦ï¼š%d å›¾åƒæ•°é‡ä¸åˆæ³•。图åƒå·²å—åˆ°ä¿æŠ¤ã€‚å›¾åƒå¤§å°ï¼š%d 图åƒç±»åž‹ä¸æ”¯æŒå›¾åƒå®½åº¦ï¼š%d 使用中无é™/鱼眼信æ¯å†…部错误 (1)。内部错误 (2)ã€‚éžæ³•éžæ³•值 ( %d ) 光圈错误。æ„大利语JD11 Marcus Meissner Jenoptik JD11 相机驱动程åºã€‚ 使用 WINE å’Œ IDA 对å议进行åå‘工程。JPEGæ—¥è¯­ä¸Šä¼ æ—¶ä¿æŒæ–‡ä»¶å已知问题: 1. 如果柯达 DC3200 没有在 10 ç§’å†…æ”¶åˆ°è‡³å°‘ä¸€ä¸ªå‘½ä»¤ï¼Œå®ƒå°±å°†è¶…æ—¶ï¼Œå¹¶å¿…é¡»é‡æ–°åˆå§‹åŒ–。如果您å‘çŽ°ç›¸æœºæ²¡æœ‰åº”ç­”ï¼Œè¯·é‡æ–°é€‰æ‹©ç›¸æœºã€‚è¿™å°†å¯¼è‡´ç›¸æœºé‡æ–°åˆå§‹åŒ–。已知的问题: 如果通讯出现问题,é‡ç½®ç›¸æœºå¹¶é‡æ–°å¯åŠ¨åº”ç”¨ç¨‹åºã€‚驱动程åºè¿˜æ²¡æœ‰å¥å£®åˆ°èƒ½å¤Ÿä»Žè¿™äº›æƒ…况下æ¢å¤è¿‡æ¥ï¼Œç‰¹åˆ«æ˜¯å¦‚果是在速度高于 9600 时出现问题而相机没有正常关闭时。柯达 DC120 相机库 Scott Fritzinger 柯达 DC120 相机库。 (它有广泛的需求)。柯达 DC240 相机库 Scott Fritzinger å’Œ Hubert Figuiere æ”¯æŒæŸ¯è¾¾ DC240, DC280, DC3400 åŠ DC5000 相机的相机库。 为 gPhoto2 é‡å†™å¹¶æ›´æ–°ã€‚柯达 DC3200 é©±åŠ¨ç¨‹åº Donn Morrison 欢迎问题和评论。柯尼å¡é…置柯尼å¡åº“ Lutz Mueller æ”¯æŒæ‰€æœ‰æŸ¯å°¼å¡ç›¸æœºå’Œå‡ ç§æƒ æ™®ç›¸æœºã€‚韩语LCDLCD 自动关闭 (以秒为å•ä½)LCD 自动关闭 (ç§’)LCD 亮度LCD 模å¼LED 模å¼è¯­è¨€é•œå¤´æ¨¡å¼é•œå¤´æ–¹å‘ä¸Žé—ªå…‰ç¯æ–¹å‘ä¸åŒ¹é… 镜头未连接 光线太暗。列出所有文件正在“%sâ€ä¸­åˆ—举文件...正在“%sâ€ä¸­åˆ—举文件夹...正在从“%sâ€è£…入相机驱动程åº...本地本地化本地化数æ®å´©æºƒã€‚本地化数æ®å¤ªé•¿ã€‚æœ¬åœ°åŒ–æ–‡ä»¶å¤ªå¤§ï¼æ­£åœ¨å¯»æ‰¾ç›¸æœº...看起æ¥è±¡è°ƒåˆ¶è§£è°ƒå™¨ï¼Œè€Œä¸è±¡ç›¸æœºä½Žä½Ž (576 x 436)低 (最佳质é‡)巨大Matthew G. Martin 基于 Thierry Bousch çš„ fujiplay æœ€å¤§çš„æœ€å¤§å›¾åƒæ•°é‡ï¼š%d 中中 (1152 x 872)中 (良好质é‡)存储å¡çŠ¶æ€ (%d):%s 相机内置内存:%d å…†ä½ã€‚ 最å°çš„Minolta Dimage V 相机库 %s Gus Hartmann 特别感谢 Minolta æä¾›ç›¸æœºè§„范。型å·ï¼š Minolta Dimage V (%s) 硬件版本å·ï¼š %s 固件版本å·ï¼š %s åž‹å·ï¼šåž‹å·ï¼š%s 内存:%d(字节)/%d å¯ç”¨åž‹å·ï¼š%s åºåˆ—å·ï¼š%s, 硬件版本:%i.%i 软件版本:%i.%i 测试软件版本:%i.%i å称:%s, 制造商:%s åž‹å·ï¼šæŸ¯è¾¾ %s 月/æ—¥/å¹´NTSCæ ¼å¼åŒ–时在å¡ä¸Šè®¾ç½®çš„å称。尼康 Coolpix 880: 相机é…ç½® (或首选项): 光学缩放尚未正常 工作。 䏿˜¯æ‰€æœ‰çš„é…ç½®ä¿¡æ¯ éƒ½èƒ½å¤Ÿæ­£ç¡®è¯»å…¥æˆ–å†™å‡ºï¼Œ 例如,微调白平衡, 和语言设置。 将相机设置为 'M' æ¨¡å¼ ä»¥ä¾¿è®¾ç½®å¿«é—¨é€Ÿåº¦ã€‚ 妿œªæŽ¢æµ‹åˆ°é—ªå­˜å¡ æ— å¡æœªæ’å¡ã€‚未æ’内存å¡ä¸çŸ¥ç¼˜ç”±ç›¸æœºæ— åº”ç­”å¡ä¸Šæ²¡æœ‰å‰©ä½™ç©ºé—´ã€‚无未选择普通普通 未满内存å¡ä¸Šæ²¡æœ‰è¶³å¤Ÿçš„内存未使用注æ„:没有内存å¡ï¼Œæœ‰äº›å€¼å¯èƒ½æ˜¯æ— æ•ˆçš„ å›¾åƒæ•°é‡ï¼š%d 照片数é‡ï¼š%d照片数é‡ï¼š%d 照片数é‡ï¼š%i 固件版本:%så…³ç¡®è®¤å¼€å…³å¼€å¼€ï¼Œæ¶ˆçº¢çœ¼ä»…æ”¯æŒæ ¹æ–‡ä»¶å¤¹ - 您请求文件“%sâ€çš„æ–‡ä»¶åˆ—表。æ“ä½œæ¨¡å¼æ“ä½œå·²å–æ¶ˆå…¶å®ƒå…¶å®ƒè®¾ç½®æ­£åœ¨æ‰§è¡Œå…¶å®ƒå‘½ä»¤ã€‚内存耗尽户外所有者姓å已改å˜PALPTP è®¿é—®é­æ‹’ç»PTP æ•èŽ·å·²ç»ˆæ­¢ä¸æ”¯æŒçš„ PTP 设备属性PTP 通用错误未完æˆçš„ PTP ä¼ è¾“éžæ³•çš„ PTP ä»£ç æ ¼å¼éžæ³•çš„ PTP 设备属性格å¼éžæ³•çš„ PTP è®¾å¤‡å±žæ€§å€¼éžæ³•çš„ PTP 对象格å¼ä»£ç éžæ³•çš„ PTP å¯¹è±¡å¥æŸ„éžæ³•çš„ PTP 傿•°éžæ³•çš„ PTP çˆ¶å¯¹è±¡éžæ³•çš„ PTP 存储 IDéžæ³•çš„ PTP 传输 IDä¸å­˜åœ¨ PTP ç¼©ç•¥å›¾æ²¡æœ‰åˆæ³•çš„ PTP 对象信æ¯PTP OKï¼PTP å¯¹è±¡å·²å†™ä¿æŠ¤ä¸æ”¯æŒçš„ PTP æ“ä½œä¸æ”¯æŒçš„ PTP 傿•°PTP 部分删除PTP 自检失败PTP 会è¯å·²æ‰“å¼€PTP ä¼šè¯æœªæ‰“开䏿”¯æŒçš„ PTP æ ¼å¼è§„èŒƒä¸æ”¯æŒçš„ PTP 目标规范PTP 存储已满PTP 存储ä¸å¯ç”¨åªè¯»çš„ PTP 存储PTP ä¼ è¾“å·²å–æ¶ˆæœªå®šä¹‰çš„ PTP 错误未知的 PTP åŽ‚å®¶ä»£ç æ¾ä¸‹ DC1000 gPhoto 库 Mariusz Zynel 基于由 Fredrik Roubert å’Œ Galen Brooks 编制的 dc1000 程åºã€‚æ¾ä¸‹ PV-L859-K/PV-L779-K Palmcorder é©±åŠ¨ç¨‹åº Andrew Selkirk 傿•° 1傿•° 2傿•° 3è·¯å¾„ä¸æ˜¯ç»å¯¹è·¯å¾„永久设置照片设置照片播放端å£é€Ÿåº¦ä¸‹è½½å›¾åƒå‡ºé—®é¢˜èŽ·å–图åƒä¿¡æ¯æ—¶å‡ºé—®é¢˜èŽ·å–å›¾åƒæ•°é‡æ—¶å‡ºé—®é¢˜æ‰“开端å£å‡ºé—®é¢˜ä»Žé—ªå­˜è¯»å–图åƒå‡ºé—®é¢˜é‡ç½®ç›¸æœºå‡ºé—®é¢˜è®¾ç½®ç›¸æœºé€šè®¯é€Ÿåº¦å‡ºé—®é¢˜èŽ·å–çŽ°åœºå›¾åƒæœ‰é—®é¢˜äº§å“ ID:%02x%02x ç¦æ­¢é—ªå…‰ 无法改å˜åƒå®½åº¦å’Œé«˜åº¦è¿™æ ·çš„åªè¯»æ–‡ä»¶å±žæ€§ã€‚就绪收到æ„å¤–çš„æ•°æ® (0x%02x,0x%02x)。收到æ„外的头 (%i)收到æ„外应答正在接收数æ®...录制录制模å¼çº¢çº¢çœ¼é—ªå…‰ç¯æ¶ˆçº¢çœ¼è¿œç¨‹è¯·æ±‚关于照片 %i (= 0x%x) 的信æ¯ï¼Œä½†å¾—到了关于照片 %i çš„è¿”å›žä¿¡æ¯æ­£åœ¨é‡ç½®åè®®...分辨率分辨率切æ¢åˆ†è¾¨çŽ‡åŠ å°ºå¯¸å°¼åº· / è²åŠ›æµ¦é©±åŠ¨ç¨‹åºç”± Lutz Mueller , Martin Fischer , æ ¹æ® Bob Paauwe 的驱动程åºç¼–制 STV0680 Adam Harrison 使用 STV0680 处ç†å™¨ä¸“用芯片的相机驱动程åºã€‚ 使用 CommLite Beta 5 对å议进行åå‘工程 Carsten Weinholz 为 Aiptek PenCam 和其它 STM USB åŒæ¨¡å¼ç›¸æœºè¿›è¡Œäº†æ‰©å±•。自动定时自动定时 (仅用于下一张照片)自动定时器时间正在å‘逿•°æ®...感应器 ID:%d.%d 棕è¤è‰²ä¼šè¯æ°¸ä¹…设置设置相机时钟相机是å¦è¦åœ¨æ‹æ‘„ä¸€å¼ ç…§ç‰‡æ—¶é¸£ç¬›ï¼Ÿæ‹æ‘„设置快门速度 (ç§’)快门速度 (微秒,0 表示自动)快门速度 (微秒,0 表示自动)SiPix Web2 Marcus Meissner 用于访问 SiPix Web2 相机的驱动程åºã€‚Sipix StyleCam Blink é©±åŠ¨ç¨‹åº Vincent Sanders Marcus Meissner . 日光幻ç¯ç‰‡æ˜¾ç¤ºé—´é𔿅¢åŒæ­¥ç´¢å°¼ DSC-F1 æ•°ç ç›¸æœºæ”¯æŒ M. Adam Kendall 基于 chotplay CLI 界é¢ã€‚è¯¥ç•Œé¢æ¥è‡ªäºŽ Ken-ichi Hayashi ç”± Bart van Leeuwen ç§»æ¤åˆ° gphoto2索尼 DSC-F55/505 gPhoto 库 æ”¯æŒ ç´¢å°¼ MSAC-SR1 å’Œ DCR-PC100 使用的存储体 最åˆç”± Mark Davies 编写 ç”± Raymond Penners ç§»æ¤åˆ° gphoto2音效Soundvision é©±åŠ¨ç¨‹åº Vince Weaver 剩余空间:高:%d,中:%d,低:%d 西ç­ç‰™è¯­ä¸æ”¯æŒé€Ÿåº¦ %iï¼è¯¥ç›¸æœºä¸æ”¯æŒé«˜äºŽ 57600 çš„é€Ÿåº¦çš„ä¸Šè½½åœºæ™¯æµ‹é‡æ¨¡å¼æ ‡å‡†é—ªå…‰ç¯ã€‚关于 Mustek MDC800 的概è¦ï¼š è¶…ç²¾ç»†å…³é—­ç›¸æœºç³»ç»Ÿé”™è¯¯ã€‚ç”µè§†è¾“å‡ºæ ¼å¼æ­£åœ¨æµ‹è¯•ä¸åŒçš„速度...目录æµè§ˆâ€œç›¸æœºâ€å…许您为您硬盘上的照片编制索引。JD11 相机使用该驱动程åºå·¥ä½œå¾—更好。 图åƒä¼ è¾“需è¦ä¸€ä¸ª 115 åƒä½çš„ RS232 接å£ã€‚ 驱动程åºå…è®¸æ‚¨èŽ·å– - 缩略图 (64x48 PGM æ ¼å¼) - 全图 (640x480 PPM æ ¼å¼) 柯达 DC120 相机使用 KDC 文件格å¼å­˜å‚¨å›¾åƒã€‚如果您希望æµè§ˆæ‚¨ä»Žç›¸æœºä¸­ä¸‹è½½çš„图åƒï¼Œæ‚¨å°±éœ€è¦ä¸‹è½½ç¨‹åºâ€œkdc2tiffâ€ã€‚该程åºå¯ä»¥ä»Ž http://kdc2tiff.sourceforge.net 得到。三星 digimax 800k é©±åŠ¨ç¨‹åºæ˜¯ç”± James McKenzie 为 gphoto 编写的。Lutz Mueller 将它移æ¤åˆ° gphoto2。Marcus Meissner 修正并增强了移æ¤åŽçš„版本。相机电é‡å¤ªä½Ž (%d%%)。æ“ä½œå–æ¶ˆã€‚ç›¸æœºä¸æŽ¥å—å‘½ä»¤ã€‚ç›¸æœºä¸æŽ¥å—作为文件å的“%sâ€ã€‚è¯¥ç›¸æœºä¸æ”¯æŒé€Ÿåº¦ %i。相机å‘é€äº†æ¯”预期更多的字节 (%i)相机åªå‘é€ %i ä¸ªå­—èŠ‚ï¼Œä½†æˆ‘ä»¬è‡³å°‘éœ€è¦ %i 个。è¦ä¸Šè½½çš„æ–‡ä»¶å…·æœ‰ç©ºé•¿åº¦æ–‡ä»¶å的长度ä¸èƒ½è¶…过 12 个字符 (“%sâ€ å«æœ‰ %i 个字符)ã€‚æ–‡ä»¶ç³»ç»Ÿä¸æ”¯æŒä¸Šè½½æ–‡ä»¶ã€‚æ–‡ä»¶ç³»ç»Ÿä¸æ”¯æŒèŽ·å–æ–‡ä»¶ä¿¡æ¯æ–‡ä»¶ç³»ç»Ÿä¸æ”¯æŒèŽ·å–æ–‡ä»¶æ–‡ä»¶ç³»ç»Ÿä¸æ”¯æŒè®¾ç½®æ–‡ä»¶ä¿¡æ¯æŽ¥æ”¶çš„第一个字节 (0x%x) éžæ³•。路径“%sâ€ä¸æ˜¯ç»å¯¹è·¯å¾„。该驱动程åºä¸æ”¯æŒè¯·æ±‚的端å£ç±»åž‹ (%i)。现在正有一个æ“作在进行。该相机在åŒä¸€æ—¶åˆ»ä»…支æŒä¸€ä¸ªæ“ä½œã€‚è¯·ç­‰å¾…ç›´åˆ°å½“å‰æ“作完æˆã€‚该相机ä¸èƒ½é¢„è§ˆè§†é¢‘æ•æ‰ã€‚该相机ä¸èƒ½è§†é¢‘æ•æ‰ã€‚è¯¥ç›¸æœºä¸æä¾›å…³äºŽé©±åŠ¨ç¨‹åºçš„ä¿¡æ¯ã€‚è¯¥ç›¸æœºä¸æ”¯æŒè®¾ç½®é…ç½®é€‰é¡¹ã€‚è¯¥ç›¸æœºä¸æ”¯æŒæ¦‚è¦ã€‚该库已ç»åœ¨æŸ¯è¾¾ DC 215 缩放相机上进行过测试。它å¯èƒ½å¯ä»¥åœ¨ DC200 å’Œ DC210 上工作。如果您碰巧拥有这样的相机,请给 koltan@gmx.de å‘é€é‚®ä»¶ä»¥ä¾¿è®©æˆ‘çŸ¥é“æ‚¨æ˜¯å¦åœ¨ä½¿ç”¨è¯¥é©±åŠ¨ç¨‹åºæ—¶é‡åˆ°äº†éº»çƒ¦ï¼Œæˆ–者一切正常。缩略图高度:%d 缩略图大å°ï¼š%d 缩略图宽度:%d æ—¶é—´æ ¼å¼é‡è¯•失败过多。æ•获照片总数:%d,闪光ç¯é—ªå…‰æ¬¡æ•°ï¼š%d 在两次é‡è¯•åŽä¼ è¾“ä»ç„¶è¶…时。放弃...正试图与相机è”络...钨未知的相机库错误未知的错误未知的错误。未知的文件类型 %i。未知型å·ä¸å¯è¯†åˆ«çš„应答ä¸é€‚当的å¡ä¸æ”¯æŒçš„命令。给出未知端å£ç±»åž‹ %i = 0x%x。ä¸å¯èƒ½åˆå§‹åŒ–ã€‚ä¸æ”¯æŒçš„端å£ç±»åž‹ï¼š%d。该驱动程åºåªæ”¯æŒ USB 照相机。 åªæ”¯æŒä¸Šè½½åˆ°æ–‡ä»¶å¤¹â€œ%sâ€æ­£åœ¨ä¸Šè½½æ–‡ä»¶...正在上载图åƒï¼š%s。正在上载...ç”¨æˆ·å–æ¶ˆä¸‹è½½åނ家 ID:%02x%02x 版本:临时设定等待完æˆ...正在等待...弱白平衡白æ¿ç™½å¹³è¡¡å†™ä¿æŠ¤é”™è¯¯çš„ ESC åºåˆ—:应为 0x%02x,得到 0x%02x。年/月/日是您试图从文件夹“%2$sâ€ä¸­åˆ é™¤â€œ%1$sâ€ï¼Œä½†æ–‡ä»¶ç³»ç»Ÿä¸æ”¯æŒåˆ é™¤æ–‡ä»¶ã€‚缩放缩放 (毫米)交æµå˜åŽ‹å™¨è‡ªåŠ¨ç”µæ± é»‘ç™½ç›¸æœºéžæ´»è·ƒæ—¶é—´å¤§äºŽ 9 ç§’ï¼Œæ­£åœ¨é‡æ–°åˆå§‹åŒ–。 彩色coolshot 库 væ— æ³•æ”¹å˜æ‰€æœ‰è€…å§“åæ— æ³•设置时间外部精细gPhoto2 Mustek VDC-3500/Relisys Dimera 3500 该软件是在属于 StarDot ç§‘æŠ€çš„ç§æœ‰ä¿¡æ¯çš„帮助下 编制的。 作者: Brian Beattie 贡献者: Chuck Homic 将原始相机图åƒè½¬æ¢ä¸º RGB æ ¼å¼ Dan Fandrich 关于åè®®ã€åŽŸå§‹æ•°æ®æ ¼å¼çš„ä¿¡æ¯ã€‚ ç§»æ¤åˆ° gphoto2 高 (640x480)处于填充模å¼å†…部jamcam 库 v低 (320x240)èœå•无报告状æ€ã€‚普通ä¸å¯ç”¨ï¼š%s关开使用电池播放电力充足电力ä¸è¶³å°±ç»ªå½•制超精细sx330z åªæ”¯æŒ USB时间设置未知 (0x%02x)libgphoto2-2.5.9/po/fr.gmo0000644000175000001440000063474312623156274012277 00000000000000Þ• ´H% L‘àÁáÁùÁÂÂ#4ÂXÂrÂ#‹Â¯ÂÄÂØÂëÂÃhÃÒéÃÄÃ4ßÃÄ)Ä8ÄPÄFiİÄÄÄÔÄ ÜÄçÄîÄ÷ÄÅÅ"Å %Åb2Å;•ÅÑÅàÅüÅÆ)ÆÅ<ÆOÇ RÈ \ÈgÈlÈqÈvÈ{ÈȅȉÈÈ ‘țȠȦȬȵÈÉÈÍÈÒÈÖÈÛÈàÈçÈîÈöÈýÈÉ ÉÉÉÉ#É+É2É6É=ÉEÉLÉRÉZÉaÉrÉxÉ}ɂɈÉɗɨɭɱɹÉÀÉÆÉËÉÓÉÚÉàÉåÉêÉðÉøÉÿÉÊÊÊÊÊ"Ê)Ê 1Ê<Ê BÊMÊRÊVÊ ]ÊhÊ nÊyÊ}Ê€Ê ˆÊ“Ê —Ê¢Ê§ÊªÊ­Ê¯Ê´Ê ºÊÄÊÈÊÎÊÓÊ ØÊãÊ çÊñÊõÊùÊÿÊË ËËËË Ë )Ë4Ë8Ë>Ë BËNËQËTËVË \ËfËlËoËrË{ËË ˆË ’ËœË¢Ë¦Ë ¬Ë¶ËÅËËËÎËÑË×Ë ÜËæË ìËöËùËüËÌÌ Ì ÌÌ Ì Ì#Ì&Ì,Ì5Ì8Ì>ÌOÌ`Ì oÌyÌ|Ì …Ì̪ÌÈÌ ×ÌâÌ êÌ ÷ÌÍÍ+Í :ÍGÍOÍ^Í fÍ qÍ|ÍÍ ©Í·Í ÌÍÚÍ éÍ öÍÎ Î !Î ,Î 9Î FÎPÎXÎ ^Î kÎxÎ}Î‚Î•Î›Î Î³Î¸Î½ÎÆÎÏÎ åÎòÎ÷ÎúÎ Ïϙϭ³ÏaÐgÐkрјѶÑÍÑëÑüÑÒ%Ò:ÒMÒ^ÒvÒÒ¥Ò ½ÒÉÒäÒëÒüÒÓ#Ó'*ÓRÓ[Ó tÓÓ.’Ó-ÁÓ ïÓ ûÓÔÔ9!Ô[ÔdÔuÔ‡Ô˜Ô©Ô¼ÔÏÔ ÖÔ âÔïÔÕÕ ,Õ9ÕKÕPÕ kÕyÕ ÕÕµÕÑÕêÕòÕÖÖ$ÖBÖ[ÖoÖÖ ªÖ ¸ÖÆÖ ÕÖãÖóÖ××*×B×U×j××”×¥×½×Ì× Ý× ç×òרØ'ØBØ(^Ø‡Ø—Ø ²ØÀØÃØ ÊØÖØ ÞØëØûØÙÙ(Ù9Ù=Ù @ÙLÙ]Ù mÙ zÙ…Ù/Ù+½Ù1éÙ'Ú(CÚlÚ‰Ú §ÚµÛÈÛÚÛâÛ ôÛoÜrÜ „Ü Ü ÜªÜ*ÉÜ#ôÜÝ Ý)Ý .Ý8ÝJÝSÝ[ÝmÝrÝ ‘Ý ŸÝ ­Ý¹Ý ÉÝ ÕÝáÝçÝïÝôÝ ûÝ Þ Þ "Þ-ÞDÞ[ÞrÞ‰Þ Þ²ÞÎÞåÞüÞß*ßAßRßcßtß|ß „ß ß ›ß§ß »ß ÇßÓßØß ëßõßûß ààà .à9à Kà"Wàzà~à‡àŽàà¬àÁàÖàOåà5á IáUá táá“á ¤á¯á Âá ÐáÝáíáâk'â8“â#Ìâ8ðâ9)ãcãAwã4¹ã+îã(ä@Cä „ä¥ä1Áäóäå#%åIåfå~åå±åÄåÛåõå' æ1æJæ=aæŸæ »æ)Çæ$ñæ>çUç nç|ç‘ç£ç4¼ç7ñç6)èD`èE¥èëèé%é&>éeézé‰éСérê†ê¦ê!Åêçê ïêýêë!ë0ëFëaëë„ë“ë¬ëÂë Óëàë(ùë"ì6ìRìeììì ¶ìÂìÕìåìýì íí )íJící{í”í›í ®íºíÔíéí î îî(î7î=îFî_îzî îšî«î ¿îÍîÖîæîîîõîï ï ï +ï7ï FïRïdï {ïˆïšï¸ï Íï×ïíïð<ðVðsð…ð ˜ð¤ð ¸ð"Æðéð ýðñ'ñ<ñZñnññ¬ñÂñØñíñÿñò ò &ò 0ò <òFòeòtòŠò:™ò<Ôòó.óIócó&~ó¥óÁóÝóûóô09ôjô†ô! ô'Âôêô õ>%õdõ{õ&—õ/¾õ<îõ<+öhö(‚ö«öÇö ãö*÷2/÷-b÷4÷;Å÷0ø2øGøfø‚ø5›ø=Ñø5ùsEù¹ùÖù&êùúkúE†úÌúçú…ûUŠûàûçûûûü-üFü ^üiü mü züˆü ¡ü ­ü¹ü ÐüÞü òüÿÿüÿýþþ þ<þBþGþ×Wþ/> ESfuŽŸ¸Ñê ý 2,K.x§ ÄÑ ì úÓ ÛEè.?Ss‰ ‘¥ ·ÄLÛµ(HÞª',Òÿ!5Ncw‹¡¶Ëäó  , 7 R p w  ‡  ’ œ  ¡ « À Ð â ô  - C Z <o ¬ É à ø  . M Q W _ h {   ˜ ¤  ¬ ¶ ¼ Í â      $ 9 I i q z € – « (Á ê 'þ 5& \g{ Ž1™:Ë4-; iv–«ÀÓî #9Th€’²Ì åó+< R `n„¢½Øì-I]q ‡ • ©¬±¶¹¾5Á÷  !):FJ‘š¡§­ ³½ ÍÚ,ß )9 P] nz‰™U© ÿ _}¡³È Ùä÷ üN&u »ÌÔÚ àî  6Sh~”´Ìåú#? P[o† š¥À Ø âí  3>P it‡š® ¿É ÒÝ ìø $DU"eˆŸ¨¹ Ë×è 5 AObuˆ›®Íæÿ2I_ w„²ÇÙë ñü  ( 7 BM\ p {ˆ›®½#Ì%ðL&s{f€¼ç‡¤",% 2%?%_%t%ƒ%”%¬% ¾%Ë%Ò%ç%ú% ÿ% &&,&?&Q&a&z& ‚&&¤&«&!¿&á&ù&'!1'S's'''µ'Ç'Û'î' (("(2(R(r(‹(¥(»(Î(è()) ") 0)>)^)w)‡)œ)"¬)Ï).ä) * *(* .*<*K*\* e*s*†*•*š*Ÿ*¤*¶*Ê*Ñ*ê* +++*+=+Z+Ø_+8,QR,U¤,2ú,--<-C-S-V-r-v--‘- ¥-¯-Á-Ç-Ì- ß-í-ó- .. 0.>.S.h. z.‡.—.«. ». Æ.Ô. ä.ñ.// #/./B/W/i// ’///­/Ý/ù/0 &0 40>0 E0R0d0k0t0†0˜0 ²0%¾0.ä0)2=2Q2b2x2‰2 ¤21±2ã2÷2: 3*F3q3y3“3¢3¸3Ñ3"ë3%444O4j4‡4¥4 Ã4Ï4×4Y5l5 q5|5 ”5 ž5 ¨5´5½5 Õ5ÿã5 ã6î7Òn8^A9? 9à9£õ9g™:;; ;&; B;P;o;~;; ˜;¥;;®; ê;ô;4ý;2<8<H<Z<_<r<Ž<–< ¶< À< Ê< Ô<*Þ< = = &= 2=@=P=c=r=‹= ¦=²=Ä=×=é=þ=>(>E>#V>z> €>>¨>Ä>à>Eå>+?D? b?o? †?§?°?¶?º?Ê?Ý? ã?í? @@@,@;@(M@%v@œ@ž@ ¤@±@ µ@À@Ï@ ê@ õ@ AAAA"A)A 2A?AVAkA ‚AAB¡A_äADBKBS[B"¯B"ÒBõBC(C(8C aCoCŠC ¨C³C ÄCÏCÖCêCD DDD .D :DED XDdDwD ŽDšD·DÓDäDõDEE(*ESE bEpE‚E žE©E"¸EÛE÷EF!F2F:FpPF ÁFËFÞFúF GG*G:GKCGG —Gt¢G,HˆDHÍHãHôHIII$I 6IAI PI\I bIpI€I ‘IŸI°I ÂI ÎIÚI öI J J J!+JMJ3mJ ¡JÂJ áJ ïJ§ýJ¥K ®K ¸KÂK ËKÖKðKÿK!L5&LG\L ¤L$°LÕLÝLäLëL òLÿLM MM*M:M IM UM `MmM }M‰M˜M€¨Mñ)OP/P@P$QP/vP¦PÄPáP&þP/%QUQXQkQ ‹Q˜Q·QÊQÚQãQõQRR/R#JRnR‹R“R§R¸RÏRãRFûRBSYSuS zSˆSS —S¤S³S¼S.ÒSTT "T,T95ToT…TœT+´TàTäTçT êT UUGU^WVuWÌWÏWêWXX(X1XMDX’X¡X ´XÁXÐXâXöXY Y!Y'YCYRY kY xY†Y ¦YÇY ÏYÚYíYïYóY öYZZ(ZGZYZiZ‡Z ™Z§Z¿Z×ZöZ[3[M[c[}[”[¯[È[á[é[\ \<\Q\e\{\\«\'À\,è\]2]A]Y] m]y]’]¦] ¾]Ê]1Ð^ _ _¬_­Â_åp`YVb°b ¹b Åb Ñb Ýb9ëb%c-c >cKc]csc ‡c ”c¡c¶cÅcÛcêcd d%d.dFd KdUd^dwd‡d ™d§d ·dÂdËd Ñd Üd édôdeee/e?eOe_eoewee ‡e ’ee¥e´eÅe×eàe!úe f=f Rfsf*Œf·fÑfäf úfggg.gDg Vgdghgyg‰g›g±gÉgàgùgh'h-h6h?h Oh\hlh ‹h •hC hähêhühi,i3Hi*|i§iÇiäiöi ýi jj+j;j?j Sjajsj‘j £j°jÃj Õjöjþj k k "k ,k 9k FkSkkkrk…k –k¢k±k Ík ÛkåkûkZl ql~l Žl›l·lÓl élôlmm0mCm‹Sm–ßmvn|n ‹n™n¨n$¸nÝnNãn2oš8o®ÓoŽ‚püqr r*r 0r;r Cr Or\r lr vrr r±rÈrØr ér ôr sss3sKses!ƒs¥s»sÑs ìsøs t#t 3t?tQt Wt btptƒtšt¶tÐtétuu/uIu^uwu‘u§u ½u Çu Ñu Ûuåuëuòu, v8v >vIv Qv [viv~v“v¨v ½vËv Úvèv þv ww %w3w$Nwswƒw#–w ºwÈw Þw^ìw KxVx ]x ix ux ‚xx¦x¶xÅxjÕx @yNy`y}y!y¿yÈyÜyíyòy z z z (zz2z­z³zÃzÕz Üzæzëzðz÷z {.|ÂI}Á €;΂Q ƒ \ƒµiƒÌ„Aì„:.…Bi…;¬…?è…7(†N`†7¯†1ç†3‡M‡3S‡/‡‡·‡¿‡HÚ‡#ˆ *ˆ8ˆ =ˆ'Kˆsˆ †ˆ'”ˆ¼ˆĈ͈툉 ‰Z ‰N{‰TʉLŠMlŠAºŠ:üŠ7‹ J‹ V‹d‹x‹”‹ ›‹ §‹ ±‹!¿‹á‹ö‹ŒŒ(2Œ'[Œ ƒŒ‘Œ•Œ žŒ©Œ­Œ°ŒÀŒ#ÑŒõŒ(GDÙŒèfŽìOL<b‰&ì,‘%@‘»f‘-"’9P’)Š’M´’0“73“,k“:˜“7Ó“, ”8”3W”4‹”=À”Fþ”KE•J‘••Ü™jrš%Ýš›$ ›SE›R™›&ì›7œ:Kœ;†œ'œ&ꜞ졟-Ž¡ì¼£©¦§ Þ§è§þ§¨ '¨ 2¨>¨ U¨_¨r¨0ƒ¨´¨º¨Ò¨ ᨠî¨ú¨ ©© ©9©®=©Dì©1ª/JªzªJ”ª9ߪ«)«E« ]« k« y« ‡« •«£«¬« ȫӫ֫è«ë« î«ú« ¬ ¬¬¬ '¬ 1¬ <¬F¬V¬n¬ƒ¬•¬¨¬º¬Ѭᬠþ¬ ­­ ­(­8­ U­c­r­ˆ­  ­®­ Á­Ï­â­õ­ ® ®.®?®U®e®Az®D¼®¯¯ ¯-*¯X¯j¯}¯ ’¯Ÿ¯§¯¯¯ƯÕ¯ä¯ó¯!°"&°I° ^° h°u° „° ° ™°£°³°˰ç°ø°þ° ± ± +± 7± B± M± Z± h±u± ±š±ª±º±ʱeÙ±?²6E²|² ²²«²Dzã²ÿ²³8³V³ q³’³®³ʳæ³´´:´W´t´‘´®´ Ë´ ×´ å´ ñ´ ý´ µ µ6µGµXµqµ vµƒµ ˜µ¦µ¬µ3¼µ ðµ üµ¶¶l¶?‡¶-Ƕ<õ¶h2·ƒ›·n¸6ޏJŸH¹+Y¹,…¹`²¹º&º<ºMºaºyº‘º©ºÁºÙºÞºôº » » !» .» ;» H» U»ra»Ô»Ù»ô» ü» ¼-¼=¼NQ¼Q ¼Kò¼L>½P‹½?ܽ?¾D\¾@¡¾Iâ¾?,¿<l¿Q©¿Nû¿VJÀV¡ÀXøÀXQÁGªÁaòÁ8TÂIÂ×ÂÝÂð Ãà 'Ã2Ã:Ã’?ÃïÒÄÂÅÑÅÓäÅ7¸ÆðÆ õÆÇ ÇÇ='Ç?eÇ¥Ç·Ç ÀÇÎÇàÇåÇüÇÈ-ÈGÈ^ÈwȌȑȥȪȱÈÃÈÇÈÊÈ ãÈGîÈ16É6hÉ(ŸÉ*ÈÉóÉøÉ Ê Ê ÊÊ%ÊJ,ÊwʋʞʲʷÊÎÊçÊÿÊË0ËIË NË\ËlËpÌ;‚Ì<¾ÌûÌ ÍÍ!Í"*Í MÍWÍnÍÍ˜Í °Í »ÍÆÍÍÍNÔ͸#ÎÜÏ ÷ÏÐ$1Ð4VÐ2‹Ð"¾Ð&áÐ Ñ)ÑBÑ[Ñ{Ñ’‘Ñ$Ò?Ò,]Ò(ŠÒ>³ÒòÒ Ó%Ó$DÓsiÓ ÝÓþÓÔ Ô-Ô6Ô"?ÔbÔiÔoÔ rÔ`ÔBàÔ#Õ$2Õ&WÕ~Õ‘Õ÷¥ÕÆÖ dØ nØzØØ„Ø‰ØŽØ’Ø™ØØ¤Ø ¦Ø°ØµØ¼Ø ÃØÍØéØíØôØøØÿØÙ Ù Ù Ù)Ù 1Ù;ÙDÙLÙQÙ YÙcÙlÙpÙ yكٌ٠”ÙžÙ2§ÙÚÙâÙéÙîÙ öÙÚ2 Ú<ÚCÚ GÚQÚZÚbÚ iÚsÚ|Ú„Ú‹ÚÚ ˜Ú¢Ú«Ú²Ú ¶ÚÀÚÉÚÑÚØÚàÚ èÚôÚ ûÚÛÛÛ Û)Û 0Û<ÛBÛEÛ MÛYÛ _ÛlÛqÛvÛyÛ{Û€Û ‡Û“Û—ÛžÛ¥Û ªÛ·Û ½ÛÈÛÎÛÔÛÛÛàÛ ãÛîÛóÛúÛ ýÛ ÜÜÜ#Ü 'Ü3Ü8Ü;Ü=Ü DÜPÜWÜ\Ü_ÜhÜoÜ vÜ ÜÜ”ÜšÜ ¡Ü¬Ü¼ÜÃÜÈÜËÜÒÜ ØÜäÜ ëÜöÜûÜþÜÝ ÝÝÝÝ Ý)Ý.Ý1Ý 8ÝBÝEÝKÝ\ÝmÝ |Ý†ÝŽÝ§Ý ¶Ý'×Ý$ÿÝ$Þ%DÞ1jÞ#œÞ4ÀÞKõÞ4Aß1vß!¨ßÊß%Ùß9ÿß99àDsà¸à*Ôà2ÿà,2á4_á(”á%½á0ãá4â1Iâ3{â3¯â&ãâ! ã",ã3Oã3ƒã·ã¼ãÁã"Øãûãäää!ä*ä3äQäfäkä4nä!£äÅä˜åäÁ~å@æ(Fæoç‰ç#¤ç&Èçïçè#èAèVè rè“è#§èËèëèé"é02écé,jé—é¨éÅé'Ìéôéýéê,êQ?ê8‘êÊêÙêêêë=ë Të&^ë…ëžë²ëÇëÞëõëýëìì?ì'_ì‡ìŸì ±ì(½ì#æì! í,í#Fí*jí$•í'ºí!âí#î(î/8î hî‰î&¨î)Ïî%ùîï$:ï_ï ~ïŸï®ï!Éïëï' ð2ðHð^ðtð(ð!¶ð$Øð ýð ññ6ñHñZñ'wñ;ŸñÛñ'íñò(ò!+ò-Mò{ò*›òÆòàòøòóó+ó/ó3ó"KónóŽó¤óµó8Ïó=ô>Fô4…ô5ºô.ðô1õ*Qõ|öö«ö´öÐö£ãö#‡÷«÷À÷Ñ÷,â÷8ø,Høuø{øŠø Žøšø¯ø ¿øËø éø)óø ù +ù 9ù Fù Tù aùlù uùƒùˆùŒùœù­ù ½ùÈùåùúú<úYúlúŒú©úÆúãúû&û&Dûkû €û Šû ”û  û ­ûºûÍûÜû ëû!÷ûü*ü$1üVüpüxü ü™ü ²ü2¾üñüõüþü#ý&+ýRýný ŠýO«ýûýþI&þ$pþ•þ²þ ÅþÒþïþ ÿ&(ÿ(Oÿ(xÿ¡ÿH/0xC©Gí5LSD =å/#VS+ª.Ö?!E&g.Ž ½Þ3û/Ld‚¡;¾*ú#%MIJ—â=õ03?d%¤ ÊØðNQmP¿UVf!½3ß) 5= s ‹  á»  *¸ %ã 2  < H ] z ™ !­ (Ï .ø ' - "D g „ œ ± :Ð " ". Q %n *” %¿  å ó   ; IW"kŽ©Åàç ,;%Y Šœ³Ð× ß)*FZy“ ¥¯ ÄÎÖñù (:Ld}‘*©Ôòû/VI ¿Ò éõ &;b%j%©Ï'å& 4Nh/” Ä Î Ùä ó*ý(&7^FrJ¹(%-"S%v1œ'Î/ö(&.O'~J¦(ñ)*D3o'£$Ëbð#S%w4@ÒWNk,º@ç;(+d3<ÄL;NFŠKÑGe*…'°)ØBLEA’’Ô(g;§ãnìG[ £ Á áÙ Y»! "#"$@"$e"$Š"%¯" Õ"à"ä"ô""# (#6#E# Y#g#{#ƒ# %%0%C% b% l%w%Ž%©' Ç'Ñ'ã'þ'&(9(O(o((¯(Ï(è(B)KE).‘),À)í)$ý)"*3*C*K+Si+½+Ó+3ë+,;,'[, ƒ,,¥,º,gÕ,×=-~.Á”/RV0©1Á1!Û1%ý1#2 =2^2}22¹2"Õ2ø2H 3EU3›3H¬3Eõ3;4B4.V4…5 —5£5#·5+Û566/60B6Ys6$Í6ò6T7&c7Š7¦7Á7Ý7#û78#8)8G8#P8t8 ‘8 8¨8 ¯8½8Â8"Þ8/9 19<9 P9%\9‚99»9 Ã9Í9Ô9!ñ9":56: l:A:SÏ: #;/; B;c;Ek;F±;?ø;68<o< …<(<¹<Õ<ò</ =$==!b=„=-œ="Ê=!í=>+'>!S> u>–>²>É>à>ÿ>?6? J?X?!p?’?±?"Ð?(ó? @*@,B@o@…@¥@¼@ Ô@ â@AA AAAACA_A3yA­AÊA4êABp3B¤B¬BµB½BÅBÍBßBûBCKC&cCŠCžC¼CÍCäCöC D*DgAD©D¹DyÔDNEhEEœEºEÔEåEFF F"Fg@F ¨FÉF ÞFÿFGG G &G!4GVGrG!G²GÎGìG+H%3H'YHH›H¹H$ÍHòHI*(I.SI(‚I «I%¹I ßIJ J J?JQJcJ|J#’J¶JÏJáJøJK1KOK aKoK€K KžK¶K2ËKþKL,"LOLdLmL€L žLªLB»LBþLCAM …M‘M¥MºMÏMäMùMNA-NAoNB±NôNO)OIOdO tO•O®O&ÇOîO PP$-PRPhPP™P·PÕPíP Q#Q);QeQ„QžQ-µQ*ãQRe'R R —Rº¤Rª_S‹ X–[ [0«[Ü[û[\&\>\S\ e\o\!Ž\°\·\Æ\"Ø\3û\/]E]Y] x]‚]“]­]"¶],Ù]"^%)^(O^0x^7©^3á^5_K_i_"†_©_Ã_&Ó_'ú_4"`2W`,Š`-·`#å` a/!a/Qa-a5¯a#åa b3$b%Xb~b*™bÄb,áb c0/c`cpc€c…c–c©c!Æc'ècd*d=dDdKdQded d#Šd#®dÒd ädðde5ePeQXe+ªf\Öf`3g0”gÅgÝg äg ñgýghh-hLh khwhh•h›h±hËh+Ñh ýh i i7iSigi}iŒi!žiÀiÒiáiòijj-jMjbjqj‡jŸj¶jÑjãjòj= kIk(ekŽk¥k ÃkÍk äkñk lll&)l,Pl}l9Œl~Æl7En}nšn´nÒn"ên o:oYomo_o3áo p#pCpSp kp#Œp4°p.åp%q+:q&fq,q%ºqàqöqƒþq‚r˜r rªrÈr Ñr Ýrér.òr!s4sQOt•¡uå7v_w?}w½w·ÒwyŠxy y/y5@yvy:’yÍyëyýy"z)z?2zrzzz4z¶z¼zËzÝzäz'{*{5D{z{{œ{­{E½{|| $|/|@|W|o|#Š|'®| Ö|Bâ|:%}B`}&£}8Ê}~4!~&V~+}~©~ ¯~$¼~&á~#,E3,y*¦Ñä3ÿ3€L€^€e€x€ ”€ž€®€Ì€ Ý€è€û€ -+Lxz€• ™£³ ÎÙîÿ‚ ‚‚ !‚+‚B‚Y‚*q‚œ‚³‚NÄ‚fƒzƒ‚ƒT”ƒ1éƒ1„M„f„.n„.„̄℅ !…/…J…_…g…}… –…  … ª…´…Ã… Ô…â…ô…† †;†J†&h††«†džã†ÿ†D‡U‡m‡|‡ ˜‡ ¹‡ć(Û‡ˆ ˆ8ˆQˆaˆiˆ‹ˆ ‰‰-8‰f‰v‰F‰&׉þ‰\Š uŠŠ¡Š;2‹¢n‹Œ+Œ@ŒWŒnŒwŒ€Œ  Œ«Œ¼ŒÎŒÓŒçŒ(< W cp¡²Î-ß- Ž;;Ž-wŽ.¥ŽÔŽäŽÀóŽ ´ ÀË Ú å$ó $-)EWQï-ÿ -‘ 8‘ B‘ L‘V‘h‘o‘w‘†‘•‘¥‘¶‘ őёá‘ñ‘’’Ë!’í“ •"•6•EJ•r•C–>G–-†–2´–Wç–?—#C—"g—Š—)£—Í—è— ˜ ˜%'˜-M˜{˜—˜.¶˜%å˜ ™'™ @™N™e™~™aœ™þ™,šGšNšdškš*sš*žš ÉšÔš6çš$›C› [› e›Nr›Á›Ø›î›0œ 6œCœ FœFSœ šœ¦œ-­œÛŸ‘òŸ„ $Œ $± Ö  ì  ¡¡e1¡—¡®¡È¡Ú¡î¡¢¢(¢ :¢F¢)L¢v¢%‡¢­¢â,Ô¢-£ /£:£!O£q£s£w£z££¢£ ¹£Ú£ñ£5 ¤B¤X¤t¤Œ¤5©¤6ߤ$¥$;¥`¥y¥%“¥(¹¥â¥.¦/¦ ?¦"`¦!ƒ¦¥¦¼¦Ó¦é¦§#§1;§8m§!¦§ȧä§þ§¨1¨I¨a¨¨ލK•©á©û©½ª¾Óª7’«dÊ­/® 8® F® T®b®Uu® ˮծæ®#ú®¯5¯M¯_¯-r¯ ¯$¶¯Û¯!ë¯ °"°3°:°X°`°v° ~°Ÿ°°°İÔ°í°ý° ± ±±2±D±`±z±"‰±"¬±"ϱ"ò±"² 8² F² T²b²x²‹²²¹²ز ö²%³7(³.`³³2­³,à³F ´(T´}´#–´ º´È´Ø´á´!ñ´µ,µDµIµ\µmµµ˜µ²µɵãµúµ¶ ¶)¶:¶K¶\¶%n¶ ”¶¢¶[·¶·#·<=·#z·>ž·0Ý·0¸$?¸$d¸‰¸¤¸³¸˸㸹¹¹:¹V¹4r¹'§¹&Ϲ!ö¹º64º kºxº –º ¢º ®ºººÒºçº%üº"»"*»$M»r» †»”» ²»¿»λ,ë»_¼%x¼$ž¼ ü9ä¼/½!N½ p½'|½¤½ º½Û½ô½’¾¹¥¾_¿f¿x¿¿£¿.¿ñ¿f÷¿^À™dÀÂþÀ›ÁÁ]Âyà ’Ãà ¤Ã°Ã¸ÃÏÃäÃùà Ä'ÄEÄ([Ä„Ä™Ä ¸ÄÄÄÖÄçÄýÄ$Å%:Å(`Å0‰ÅºÅØÅöÅÆ&$Æ,KÆxÆ Æ šÆ»ÆÂÆÙÆëÆ*Ç"/Ç'RÇ6zÇ&±Ç.ØÇÈ3%È"YÈ-|È.ªÈ!ÙÈ$ûÈ É ,É 8É DÉPÉVÉ\É7uÉ­É±É ºÉÅÉÍÉ$éÉ$Ê$3Ê$XÊ}ʒʪʿÊÝÊùÊË Ë)Ë,DËqËË,žË ËËÙË3ðË`$Ì …ÌÌ—Ì ¦Ì³ÌÃÌÖÌ,íÌ,Í,GÍjtÍßÍ$óÍ-Î/FÎ4vΫÎ(¾Î!çÎ ÏÏ.ÏDÏWÏmÏ{ƒÏÿÏÐÐ 'Ð!1ÐSÐYÐ ^ÐhЗ…ЮÒëÌÓÒ¸×M‹ÛXÙÛ 2Üè?Ü(ÝI0ÞGzÞGÂÞ5 ßB@ß7ƒß\»ßJà7cà=›àÙà3Ýà:áLá$UáUzáÐá×áèáíáBâCâ[â>nâ&­âÔâ%Ýâ$ã (ã3ãlHãhµãbäfäièäPRåU£åùå æ$æ,;æhæˆæ šæ ¦æ±æ2Èæ"ûæç/çDçIdç;®çêçûç ÿç èèè%èAè6Uè?Œè#Ìè ðèZéléümêùjëGdìi¬ì!í68í-oí¸í2VîC‰î+Íîcùî:]ïW˜ïAðï[2ðSŽð0âð/ñICñJñ=Øñaòkxò3äò˜øœ±ø?Nù)Žù8¸ù\ñù[Nú&ªú6Ñú:û$Cû2hûz›û ýv!ÿŸ˜{8J´%ÿ% . L i ‡ – ¨ à 2Ô & Y.  ˆ &” » Û ÷   &  1 != _ Ád D& +k @— #Ø Nü 9K … %– "¼ ß ÿ ?_ Š ¨³¶ÈË!Î&ð, DOXa u ‚$ ÅÝñ7Kk |‡ œ3®âò:Jeu‹¡¹ Òàó L>R‹ Þ)é Hh ¸ÁÊ*Óþ6Ri)‰%³ Ùå,ô ! - ;I[y—¯µ Í Û ü  & 2@$U z…Ÿ°ÁbÐ3C7{‚$•$º$ß$$),N*{'¦-Î1ü1.1`1’1Ä2ö4)4^4“4È4ý 2@ Sat‡§ÇÞ1õ'(-Vm †B¨ ë ø†;Ÿ?ÛDt`Õ‘sN BT T— )ì *!sA!µ!!Ô!ö!"#1"#U"#y"#"$Á"æ"ë"##)#9#I#Y#i#x#u€# ö#1$4$ =$ K$@W$˜$T¶$W %Qc%Rµ%b&Kk&G·&[ÿ&O['S«'Dÿ'CD(hˆ(\ñ(pN)w¿)r7*yª*N$+ps+=ä+P",s,{,.”,Ã, ã,ð, ø,-À -Ê.Ì/Ý/Ëô/7À0ø0ý011 1H71J€1#Ë1ï122.232J2d2{2•2¬2Æ2Ü2á2ý23 3 3*3-23 `3Nm3:¼3S÷3.K46z4±4¹4Ï4 è4ö4 55W 5)x5%¢5È5æ5ë56636M6d6~6 ƒ6‘6D¡6æ7?þ7@>88 ˆ8“8­81½8 ï8ú89)9C9 \9 g9r9y9b€9ùÁÒAçJ­¨ÓÁ¿Þ¼ ˆ¾SÂrµ4£]–kï8‡°£,šÀë+ šd3Ôª@A™äÔÈs#U`.^•Èv— Ÿö×õ T´(»L'pÿ­fgŽÁ;žJï(ÒX_[Y?‹ Û‰¤7Žk©dƒ/ø‹%½  Ræ&Òáþ.[yÓû\hÍô‰îÏš OnKž;Ð\]åà©%QQn(ÚIçI‚èSߺ‚‰âìã€Ù mÞèÜ0ç`f9K »éuÛ;—¥âáªÑÓÿ›æw…—Æ«¸§ý݆Åà¥mCÐþtUk9Zn¬…šsüëŠnj€Jî”ÙÎÂ/ô…Š:ñfÿa&™xæ ÕÕó®Ùuv☼/9!z•¿+´ŠSçÈ:íHhow8VÇ*)‰Ãù<U¶Ò² ¹‰ÅÑÞ³òKÌÿAÛ¡¢¯âÕ<X‘ò58%=½M)ñJ*$Þ˜©1Ö\³ù&&ÝMïË£“zÇ´pÊÉ…bA2X¼)Œw•ôær¨Í}­åU4œ mR:¾@Nù¶pÀ¯%ã: ï<ñäòÚóÇ„vÌøèrá"°éj|p$r¶U$á4÷o26¿^G˜D]K=Ÿ-×¾—ä¯vT…V78ç¯Â_ ø³ÑþcNTýÕ™#OL iYÀWx±k ë\}ªø=À—´Oõ·íB´âR÷ÌB¡tûLJð{ÙX¢ !"#ûM<»E2×~ö‡Q¿ÛBÎ6£ŸÒE=ûÍÅ!F  ð âÿ0YÊúõé§Àl¶}}[DÎöQu¥ùÃtf­„‘Ds¥¾Ú¦ú +ã1i‹š?'0±Zü5ýùï:7aƒýl£Üo?¬V}Aš…]Mh†a$yP`Ѷ•n–ýϽ[HDsú”„¡7T…¢Q“¤ §K¿¨O&-­%ejv´‘_,µé„Œ[»'€h¼*• y„Lô6H¿¢  $”=Ñ0Ä;2Å]Õà’c~ocÈ—'!É~x#í °ë•Àþ®N„ ë5¬ÖžAñ‚á·|Rh÷CË>¹Èzß’‚=îk/0¿­K iÎ)ùkq‹±‘ úÅÒvH –¥À^áÂõ(®Iqž‹ ˆYñ™Ûf~šž· 2üjLnͤo3õWcÑ áª˜ †™!FG$ C·ÃîWÆ«8óà;Ög2Fa‡ì“+e‘ RgÎÓ ƒã’òq¿°êaò5éJèã*»Ç «™?ÊXY£ZeØÉÏuqGûõ¶Ì¦8ÝLúÐÕ]!`/æ(é'Ú“½tŒœ@É{äüi”3¬‡gO -Ôü ¹Å-“‰SçYŒ4lë£ mìÏ ¯NogbvWEVØe$ò€lº¡xMË"¶Ògè:Sð«P,9¨W@eÉÜZÈ<÷bÜdÇ’Ù¡ísØ9W|-;[Üûf›|Ÿ·ØIЀn`h>TãéPSö´;Éê¾ÊŠó„¤00Ÿ®UÄñ™·’^ˆƒ=Ä—§â²܉¨-I¼©y×.’HÿÒ^TGïY(Ç–ý6R.è%¨ •"Šußä\h|ñ;\7­øö‚5ò«Æ1§·gDî¬Õ°ƒ÷÷½Ç»œžÔI“ ²†é}½VŽˆ˜{˰jêÊ—JÆLõÃkªÆ{dcŠe<ʦ”×{…7Px~cžŸ `¨ÝA”Ä Læ‹Qr¸fŸŽã›þª#E"˜ `ÖñB£yÐq†Œ1¹ÕÖ2¹Äçôÿ[ mFÝéäGºö8\Ö/FŠƒ¬«ÅrÓðˆÑk)÷l¢›t,ÝÞ¸/î1æK ¬¡<Ú NpŸQÍßz—&¥!õpì4]@Þ€®ˆ,+áJc²±ïÏÁ¢ Á“‡aEˆ ¯büó.pvÌû¦öU²àÙ”6êåFàÓ‚6ØE.3%<ÙêÕ¬cË@*3ö†:Ø Nn[ÐúÀdÙ5ó¿ôÐìOêͪ3°ŒH’÷UyBÎzõ_C­Z1Ù?ZDÚQËå12ù÷5>í s~=‚XSå9äaf_#®º<Ã㞘¤º#VE™ý‡©1A¹‡øŒx?PHd!êúÔ‘^¾0ÖÆb¯Jî_V{ϺLÉൠÆwB>‘ÆDÎxg E²±GZßpð.4ºË$~qw¼–6š‹ùÄÂŽÁ&Ô ð{¦tƒ¾iŸY¥›ÌÞ\>ü@_c?ÛxqŒœ lBÆTd+âç(:,¡×ÈÝyhÉEÖ·'*µº ×ú§m¸PR‚uóõ쪳‹ „±½r;0e›tim«ÿ'ÿ=DÁ ¸Ø¡XîÊ w@›£è9_-Fàb«`zx›C4…Äí©U7j½l’Ø ×OdOkœËöû»" ³ª¥ Ûµ´1µh/ êMø¶?±¹tKó¾»ržÁ_pðí¡3>Søä±iyþµÁ¤ÝCZœGzæ]C!©ÂtmPW²H(*GIGº¶¾µR´è}2F*Vц>ÃN׳Ë,5Ô\ÌÔÌ^ϸ:­ÌÛ+®$WP‘.½ïÝ8M6‡ò¬Ñnì'PÊ%Çœ ®Íeo°låÃHÜÓ¼Ž[+Þ}ßðJ–Íý(IX'}•¼û§Òå“4sYÛ¦ “¥"¤lÜVX+5Ú^uåü 3|€ÄF?îà,o”*Äyjè§À³Þ7Êm ŠI„)ÅwÈBAˆ- ë,þ©~#3 4w•˜¢9Ô¸-±†ô)ð®C LM NOô KßT§ «üb~ßÓ¦‹ ¤| "]¨D{| ¦¯‰ †þýëæÅ €SÏÂóñ>aâíš–áã&q”¯ôÚaÍ{&uê9ò˜Rïiœ/çˆ^¸’uw¼jBsiq`ƒ>·NÐgWþz¹%6MÚŒj#@fZÖse¸rÈØëÜìƒ8Žv‘²ÎC œÓd»Š7‰²¨Ð‚)TÉ›.™¦ÎbÏŽÂäìú–oQøí¹å¢ß€³"b¤z)é|°Ž¢³– Access Capability: %s Canon Wifi support File Download, Filesystemtype: %s Free Space (Bytes): %llu (%lu MB) Free Space (Images): %d Generic Image Capture, Maximum Capability: %llu (%lu MB) Nikon Wifi support No Image Capture, Storage Type: %s StorageDescription: %s VolumeLabel: %s Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Capture Formats: Device Capabilities: Device Property Summary: Storage Devices Summary: Drive %s %11s bytes total %11s bytes available Serial Number: %s Version: %s (battery is %d%% full) PTP error %04x on query Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d error %x on query. not read out. %.0f mm%.1f stops%0.4fs%d %d/%d%d Multi Frame Noise Reduction%d mm%d/%d%f%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)%sCanon EOS Shutter Button%sNikon Capture 2%sNikon Capture 3 (Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*+NEF (RAW)-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 (Short)1 EV1 fps1 min1 minute1 step spd/aperture1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/250s (Auto FP)1/25s1/2s1/301/30s1/3200s1/320s1/320s (Auto FP)1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 mins10 minutes10 mm10 seconds100%10s11 fps1152 x 86412 mm1280 x 96013s1515 mins15 minutes15s16 seconds16:91s1x22 EV2 fps2 seconds2.02.0 m2.5s2.5x20 seconds20s21 points25%25s29 mm2s2x3 (Normal)3 EV3 fps3030 minutes30 seconds30s34 mm3:23D Tracking3s3x44 fps4 seconds41 mm4s4x5 (Long)5 fps5 mins5 minutes5 seconds50 Hz50%51 mm51 points51 points (3D)58 mm5s5x6 fps6 mm6 seconds60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 seconds8s8x9 fps9 points9xA-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)AB FilterACAC PowerAC adapterAC adapter is connected. AC adapter is not connected. ADL bracketingAE & FlashAE LockAE Lock onlyAE LockedAE lock (Hold)AE lock (Reset on release)AE lock (hold)AE lock onlyAE onlyAE-L/AF-L ModeAE-lockAE/AF LockAE/AF lockAEAF Lock Button 2AEB Exposure CompensationAF ActivationAF Area IlluminationAF Area PointAF Assist LampAF Beep ModeAF DistanceAF LCD Top Mode 2AF Lock HoldAF Lock OnAF Lock OnlyAF Lock onlyAF LockedAF ModeAF OnAF On ButtonAF lock onlyAF-AAF-CAF-C Mode PriorityAF-ONAF-SAF-S Mode PriorityAF11AF51AI FocusAI ServoASIC Revision: %d.%d ASX PlaylistAUTOAVAV Lock SettingAV MaxAV OpenAX203 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.AX203 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.A_DEPAbout Konica Q-M150: This camera does not allow any changes from the outside. So in the configuration, you can only see what it is configured on the camera but you can not change anything. If you have some issues with this driver, please e-mail its authors. Abstract Audio AlbumAbstract Audio PlaylistAbstract Audio Video PlaylistAbstract Calendar ItemAbstract Chaptered ProductionAbstract ContactAbstract Contact GroupAbstract DocumentAbstract Image AlbumAbstract MediacastAbstract MessageAbstract Message FolderAbstract Multimedia AlbumAbstract Video AlbumAbstract Video PlaylistAccess modeAccess top item in MY MENUActionActive AF SensorActive D-LightingActive Pic Ctrl ItemAd-hocAdc65 Benjamin Moos AdobeRGBAdvanced Transfer CancelAlbum nameAlkalium manganeseAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Angle LevelAnti-redeyeAnti-redeye FillAnywhereAox generic driver Theodore Kilgore ApertureAperture SettingAperture SettingsAperture changedApplication ModeApplication Mode 0Application Mode 1ArtistArtist NameAspect RatioAssign Func ButtonAssign Func. ButtonAssign Preview ButtonAssist LightAudible.com CodecAutoAuto + Red Eye SuppressionAuto ApertureAuto Bracket SelectionAuto DX CropAuto Distortion ControlAuto Exposure Bracket CountAuto Exposure BracketingAuto FPAuto Focus AreaAuto Focus Mode 2Auto ISOAuto ISO Multi Frame Noise ReductionAuto ISO P/A/DVP SettingAuto Meter Off TimeAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off InfoAuto Off MenuAuto Off PhotoAuto Off TimeAuto Off TimersAuto Power OffAuto Power Off (minutes)Auto Slow SyncAuto White Balance BiasAuto exposure lockAuto focus: AI focusAuto focus: AI servoAuto focus: one-shotAuto sensitivityAuto, red-eye reductionAutofocus ModeAutofocus error.AutomaticAutomatic Automatic (No Flash)Automatic FlashAutomatic MacroAutomatic Macro (close-up)Automatic Red-eye ReductionAutomatic exposure adjustment on previewAutomatic flashAutomatic flash on captureAutumn colorsAvAv MaxAv Max ApexAv OpenAv Open ApexAvailable ShotsAvailable memory: AverageAverage FilesizesAverage MeteringB/WBWBW ContrastBW Filler EffectBW Setting TypeBW SharpnessBack LightBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for card status %dBad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery Cell KindBattery LevelBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery Life: %i Battery LowBattery ModeBattery TypeBattery exhausted, camera off.Battery level: %.1f Volts. Revision: %08x.Battery status: %s, AC Adapter: %s BeachBeach/SnowBeepBeep ModeBeep mode changedBeep offBeep onBegin Edit ObjectBestBit rate %ld is not supported.Black & WhiteBlack & whiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlossomBlueBottomBracket ModeBracket OrderBracket SetBracketingBracketing C 0.3 StepsBracketing C 0.7 StepsBracketing C 1.0 StepsBracketing C 2.0 StepsBracketing C 3.0 StepsBracketing EnableBracketing Frames and StepsBracketing S 0.3 StepsBracketing S 0.7 StepsBracketing S 1.0 StepsBracketing S 2.0 StepsBracketing S 3.0 StepsBracketing WB HiBracketing WB LoBracketing burstBright+Bright-BrightnessBrightness+Brightness-Brightness/ContrastBuiltin RAMBuiltin ROMBulbBulb Exposure TimeBulb ModeBurstBurst IntervalBurst NumberBusyButtons and DialsCCD NumberCCD Serial NumberCHDK ScriptCHDK did not leave recording mode.CRWCSM MenuCameraCamera ActionsCamera Body IDCamera ConfigurationCamera Date and TimeCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ManufacturerCamera ModeCamera Mode Not Adjust FNumberCamera ModelCamera Model: %s Camera Not ReadyCamera OK.Camera OrientationCamera OutputCamera OwnerCamera SettingsCamera Status InformationCamera and Driver ConfigurationCamera appears to not be using CompactFlash storage Unfortunately we do not support that at the moment :-( Camera busy. If the problem persists, please contact %s.Camera could not complete operationCamera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera has taken %d pictures, and is using CompactFlash storage. Camera is configured for lights flickering by %dHz. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera unavailable: %sCamera was already activeCamera was woken upCan't capture new images. Unknown errorCan't delete all images.Can't delete image %s.Can't upload this image to the camera. An error has occurred.Cancel Canon DSLR AutofocusCandlelightCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCanon Auto Exposure ModeCanon CaptureCanon Capture failedCanon EOS CaptureCanon EOS Capture failedCanon EOS Capture failed to release: Card read-only?Canon EOS Capture failed to release: Perhaps mirror up?Canon EOS Capture failed to release: Perhaps no focus?Canon EOS Capture failed to release: Perhaps no more memory on card?Canon EOS Capture failed to release: Unknown error %d, please report.Canon EOS Capture failed: %xCanon EOS Get Changes failedCanon EOS Remote ReleaseCanon EOS Trigger Capture failed: 0x%xCanon EOS ViewfinderCanon EOS ZoomCanon EOS Zoom PositionCanon PowerShot series driver by Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5 additions by Ole W. Saastad Additional enhancements by Holger Klemm Stephen H. WestinCanon Shooting ModeCanon disable viewfinder failedCanon enable viewfinder failedCanon get viewfinder image failedCaptureCapture DelayCapture SettingsCapture Size ClassCapture TargetCapture Transfer ModeCapture size class changedCapture type is not supportedCardCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card name: %s Free space on card: %d kB Card not supported.Card removed during access.Cell Kind PriorityCenter Button Playback ModeCenter Button Shooting ModeCenter Button Zoom RatioCenter SpotCenter Weight AreaCenter WeightedCenter Weighted AverageCenter-WeightedCenter-spotCenter-weightedCenter-weighted Average MeteringCenter-weighted MeteringCenter-weighted averageCenter-weighted meteringCentreCentre Weight AreaCentre-spotChange Camera Mode FailedChange Pic Ctrl ItemChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorChildChildrenChoose Color TemperatureChoose non-CPU lens numberClean Image SensorClean SensorClean data storeClose Media SessionClose sessionClose upClosest SubjectCloseupCloudyCloudy White Balance BiasColorColor GainColor ModeColor ModelColor SettingsColor SpaceColor TemperatureColor or Function ModeColor sketchColor temperatureCommand can not be cancelled.Command order error.CommanderCommunication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompatibility ModeCompressionCompression SettingConfigurationConfiguration for your FUJI cameraConnected to cameraContinuousContinuous High-speed ShootingContinuous Low SpeedContinuous Low-speed ShootingContinuous ShootingContinuous Shooting Speed HighContinuous Shooting Speed SlowContinuous Speed HighContinuous high speedContinuous low speedContinuous silentContinuous-Servo AFContrastContrast+Contrast-Copy objectCopyrightCopyright (max. 20 characters)Copyright InfoCopyright InformationCorrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not change ISO speedCould not change apertureCould not change beep modeCould not change exposure compensationCould not change flash modeCould not change focus modeCould not change image formatCould not change shooting modeCould not change shutter speedCould not change time of file '%s' in '%s' (%s).Could not change zoom levelCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file '%s' in folder '%s' (error code %i: %s).Could not delete file.Could not detect any cameraCould not detect any camera at port %sCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get information about '%s' (%s).Could not get information about '%s' in '%s' (%s).Could not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Create Wifi profileCreation date: %s, Last usage date: %sCreativeCreative PC-CAM 300 Authors: Till Adam and: Miah Gregory Creative PC-CAM600 Author: Peter Kajberg Current Mode: Camera Mode Current Mode: Playback Mode Current camera time: %04d-%02d-%02d %02d:%02d Free card memory: %d Images on card: %d Free space (Images): %d Battery level: %d %%.Currently, PTP is only implemented for USB and PTP/IP cameras currently, port type %xCustomCustom Functions ExCustom Whitebalance PC-1Custom Whitebalance PC-2Custom Whitebalance PC-3Customise Command DialsDD/MM/YYYYDEPDPOF VersionDark on lightData has been corrupted.Date & TimeDate FormatDate Time Stamp FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDate: %sDay/Month/YearDaylightDaylight White Balance BiasDebugDeepDefault gatewayDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. Delayed RemoteDeleteDelete objectDeleting image %s.Depth of FieldDetected a "%s" aka "%s"Detected a '%s'.Development Parameters 1Development Parameters 2Development Parameters 3Device CertificateDevice IconDevice VersionDevice does not support setting object protection.Device failed to set object protection to %dDigita Johannes Erdfelt Digital Camera Layout (DCIM)Digital ZoomDigital Zoom MagnificationDigital macroDigital zoomDimera 3500 ver. %s %d/%d %d:%d. %d pictures used of approximately %d (high res) or %d (low res). Camera features: %s, %s, %s, %s. Flash is %s, is %s and is %s. Resolution is set to %s. Camera is %s powered %s. Direct PrintDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisable trusted file operationsDisconnecting camera.Disp AvDisp Av MaxDisplayDisplay Formats: Distant ViewDo not display TV menuDon't know how to handle camera->port->type value %i aka 0x%x in %s line %i.Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy to port your driver on this cam! Download program for GrandTek 98x based cameras. Originally written by Chris Byrne , and adapted for gphoto2 by Lutz Mueller .Protocol enhancements and postprocessing for Jenoptik JD350e by Michael Trawny . Bugfixes by Marcus Meissner .Download program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading %s...Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...Drive Canon DSLR AutofocusDrive Canon DSLR Manual focusDrive ModeDrive Nikon DSLR AutofocusDrive Nikon DSLR Manual focusDriverDriver SettingsDriver framework written by Lutz Mueller . This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro "itojun" Itoh . Integration of QVplay by Michael Haardt .Dual IrisDuskDusk/DawnDust Reference ErrorDynamic AF AreaDynamic Area (21)Dynamic Area (51)Dynamic Area (9)Dynamic-area AFDynamic-area AF with closest subject priorityEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.ESPESSIDEV StepEVF ModeEZoom Size of TeleEZoom Start PositionEconomyEffect ModeEffectsEmergencyEmptyEnable CopyrightEnable Image CommentEnable trusted file operationsEncounterEncounter BoxEncryptionEncryption key (hex)End Edit ObjectEnd trusted application sessionEnglishEnhancedErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationError waiting for ACK during initialization, retryingEvaluativeEvaluative MeteringEvent Emulate ModeEverywhereExecute predefined command with parameter values.Expected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.Expose IndexExposureExposure Aperture LockExposure Base CenterExposure Base MatrixExposure Base SpotExposure Bias CompensationExposure Bracketing ProgramExposure Bracketing StepExposure CompensationExposure Compensation (EV)Exposure Delay ModeExposure Display StatusExposure ISO StepExposure Index (film speed ISO)Exposure Indicate LightupExposure Indicate StatusExposure LockExposure MeterExposure MeteringExposure Metering ModeExposure ProgramExposure Program ModeExposure StepExposure TimeExposure compensationExposure compensation changedExposure compensation: %d Exposure compensation: %s Exposure delay modeExposure level on previewExternal FlashExternal Flash AttachedExternal Flash CompensationExternal Flash ModeExternal Flash SortExternal Flash StatusExternal syncExtra highF-NumberF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d FNumber LockFV LockedFV lockFace-priority AFFactory DefaultFailed to enable liveview on a Nikon 1, but it is required for captureFaithfulFar %dFar 1Far 2Far 3Far sceneFast FilesystemFast shutterFileFile '%s' could not be found in folder '%s'.File '%s/%s' does not exist.File Deletion, File Number SequencingFile Upload File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.Filename ConflictsFilename InvalidFilename RequiredFiletype: FlashPix (Filetype: JPEG (Fill flashFinder ISO DisplayFineFireworksFirmwareFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware VersionFirmware version: %d.%02d Firmware: %d.%d FisheyeFixedFlashFlash ChargedFlash Command A CompensationFlash Command A ModeFlash Command A ValueFlash Command B CompensationFlash Command B ModeFlash Command B ValueFlash Command ChannelFlash Command Self CompensationFlash Command Self ModeFlash Command Self ValueFlash Commander ModeFlash Commander PowerFlash CompensationFlash Exposure CompensationFlash Level LockFlash LockFlash MRepeat CountFlash MRepeat IntervalFlash MRepeat ValueFlash ModeFlash Mode Commander PowerFlash Mode Manual PowerFlash OffFlash OpenFlash Quantity CountFlash SettingFlash SettingsFlash Shutter SpeedFlash SignFlash Sync. SpeedFlash White Balance BiasFlash autoFlash mode changedFlash mode: auto, Flash mode: force, Flash mode: off Flash offFlash onFlash onlyFlash/apertureFlash/speedFlash/speed/apertureFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFlexible ProgramFlicker ReductionFlourescentFlourescent TypeFlourescent-1-home-6700KFlourescent-2-desk-5000KFlourescent-3-office-4200KFluorescentFluorescent HFluorescent Lamp 1Fluorescent Lamp 2Fluorescent Lamp 3Fluorescent Lamp 4Fluorescent Lamp 5Fluorescent White Balance BiasFluorescent-1-home-6700KFluorescent-2-desk-5000KFluorescent-3-office-4200KFluorescent: Cold WhiteFluorescent: Day WhiteFluorescent: DaylightFluorescent: Warm WhiteFocal LengthFocal Length DenominatorFocal Length MaximumFocal Length MinimumFocal Length TeleFocal Length WideFocusFocus AreaFocus Area WrapFocus Area ZoneFocus AreasFocus DistanceFocus InfoFocus LockFocus MeteringFocus Metering ModeFocus ModeFocus Mode 2Focus Point BrightFocus mode changedFocus positionFocusing PointFocusing Point on Center Only, AutoFocusing Point on Center Only, ManualFocusing error.Folder '%s' only contains %i files, but you requested a file with number %i.FoliageFoodFor bulb capture to work, make sure the mode dial is switched to 'M' and set 'shutterspeed' to 'bulb'.For cameras with S&Q Technologies chip. Should work with gtkam. Photos will be saved in PPM format. All known S&Q cameras have two resolution settings. What those are, will depend on your particular camera. A few of these cameras allow deletion of all photos. Most do not. Uploading of data to the camera is not supported. The photo compression mode found on many of the S&Q cameras is supported, to some extent. If present on the camera, video clips are seen as subfolders. Gtkam will download these separately. When clips are present on the camera, there is a little triangle before the name of the camera. If no folders are listed, click on the little triangle to make them appear. Click on a folder to enter it and see the frames in it, or to download them. The frames will be downloaded as separate photos, with special names which specify from which clip they came. Thus, you may freely choose to save clip frames in separate directories. or not. For cameras with insides from S&Q Technologies, which have the USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051, 0x9052, or 0x913D. Photos are saved in PPM format. Some of these cameras allow software deletion of all photos. Others do not. No supported camera can do capture-image. All can do capture-preview (image captured and sent to computer). If delete-all does work for your camera, then capture-preview will have the side-effect that it also deletes what is on the camera. File uploading is not supported for these cameras. Also, none of the supported cameras allow deletion of individual photos by use of a software command. ForceForce Flash Format card and set album name.Format compact flashFormat storageFrames Left: %i Frames Taken : %4d Frames Taken: %i Framing gridFrenchFriendly Device NameFront-curtain syncFullFull ImageFull ManualFull View File FormatFull-time-servo AFFunction Button 2Functional ModeFunctional Mode: 0x%04x GeneralGeneric FlatGeneric HierarchicalGermanGet Next Data BlockGet Partial Object (64bit Offset)Get Proximity ChallengeGet Registration ResponseGet WMDRM-ND License ResponseGet WMDRM-PD Application ResponseGet device property descriptionGet device property valueGet interdependent property descriptionGet license stateGet meter challengeGet meter responseGet number of objectsGet objectGet object handlesGet object infoGet object properties supportedGet object property descriptionGet object property listGet object property valueGet object referencesGet partial objectGet secure time challengeGet secure time responseGet storage IDsGet storage infoGet sync listGet thumbnailGet transferable playlist typesGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.Gray scaleGrayscaleGreenGroup DynamicGroup PTN TypeHDR High DynamicHDR ModeHDR SmoothingHand-held TwilightHardware ErrorHi 1Hi 2HighHigh (1152 x 872)High (good quality)High 2High ISO Noise ReductionHigh ISO noise reductionHigh controlHigh keyHigh sensitivityHigh-Speed ShutterHighlight active focus pointHoldHost Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?Hue AdjustmentHyPictI/O in progressIDIP address (empty for DHCP)ISOISO AutoISO Auto Hi LimitISO Auto High LimitISO SpeedISO speed changedIconsIdleIllegal parameter.Illum SettingImageImage %s is delete protected.Image & SoundImage AdjustmentImage CommentImage Comment EnableImage Comment StringImage CompressionImage FormatImage Format CFImage Format Ext HDImage Format SDImage ModeImage QualityImage Quality 2Image ReviewImage RotationImage Rotation FlagImage SettingsImage SizeImage StabilizationImage format changedImage height: %d Image number not valid.Image protected.Image sizeImage size: %d Image type %d is not supported by this camera !Image type %d not supportedImage type is not supportedImage width: %d Img Conf TimeImmediateIn useIncandescentIndicator DisplayIndoorInfinityInfinity/Fish-eyeInfo Disp SettingInfo Display Error StatusInformationInformation on STV0680-based camera: Information regarding cameras with ID 0x2770:0x9153. We do not recommend the use of a GUI program to access this camera, unless you are just having fun or trying to see if you can blow a fuse. For production use, try gphoto2 -P from the command line. Note: it is not possible to download video clips. Initial camera response '%c' unrecognizedInitializing CameraInitiate captureInitiate open captureIntelligent AutoIntelligent Auto Flash OffInternal RAMInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal error looking for camlibs. (path names too long?)Internal memory: %d MB total, %d MB free. InvalidInvalid ISO speed settingInvalid StatusInvalid Value ( %d ) Invalid aperture settingInvalid beep mode settingInvalid capture size class settingInvalid exposure compensation settingInvalid flash mode settingInvalid focus mode settingInvalid image format settingInvalid shooting mode settingInvalid shutter speed settingIris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JD11 ConfigurationJPEGJPEG BasicJPEG Compression PolicyJPEG FineJPEG NormJPEG NormalJapaneseKeep filename on uploadKids and petsKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BacklightLCD Backlight and Info DisplayLCD BrightnessLCD IlluminationLCD ModeLCD Off TimeLED ModeLG GSM generic driver Guillaume Bedot LandscapeLanguageLargan driver Hubert Figuiere LargeLarge Fine JPEGLarge Normal JPEGLeftLens Cover PresentLens Focal Length (Non CPU)Lens IDLens Maximum Aperture (Non CPU)Lens ModeLens NameLens SortLens TypeLens direction does not match flash light Lens is not connected LightLight MeterLight on darkLight too dark.List Wifi profilesList all filesListing files in '%s'...Listing folders in '%s'...Lithium IonLive View AF AreaLive View AF FocusLive View AF ModeLive View Drive ModeLive View Image Zoom RatioLive View ModeLive View Prohibit ConditionLive View StatusLoading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!LockLogitech Clicksmart 310 driver Theodore Kilgore Long Exp Noise ReductionLong Exposure Noise ReductionLong shutterLooking for camera ...Looks like a modem, not a cameraLosslessLossyLowLow (576 x 436)Low (best quality)Low 2Low LightLow Speed SynchronizationLow contrastLow keyLow sensitivityLow sharpeningLow-Speed ShutterLow-speed shutter function not availableLower case letters in %s not allowed.MM-DEPM3U PlaylistM4AMF (fixed)MF (selection)MHT Compiled HTML DocumentMM/DD/YYYYMPL PlaylistMTR > UnderM_DEPMacroManagedManualManual 2Manual FocusManual Mode BracketingManual Movie SettingManual Set Lens NumberManual focusManufacturer: %s Mars MR97310 camera library Theodore Kilgore Mars MR97310 camera. There is %i photo in it. Mars MR97310 camera. There are %i photos in it. MatrixMatrix meteringMatthew G. Martin Based on fujiplay by Thierry Bousch Max. Aperture at Max. Focal LengthMax. Aperture at Min. Focal LengthMax. Focal LengthMaximalMaximum Aperture at Focal Length MaximumMaximum Aperture at Focal Length MinimumMaximum ShotsMaximum continuous releaseMaximum number of Images: %d Media CardMedia Card GroupMedia CastMediumMedium (1152 x 872)Medium (better quality)Medium 1Medium 2Medium 3Medium Fine JPEGMedium HighMedium LowMedium Normal JPEGMedium highMedium sensitivityMemory Left: %i bytes Memory cardMemory card status (%d): %s Memory in camera: %d Mbit. Menu Bank Name AMenu Bank Name BMenu Bank Name CMenu Bank Name DMenus and PlaybackMetadata only supported for MTP devices.Meter Off TimeMetering ModeMf Drive Step EndMf Drive Step InsufficiencyMicrophoneMicrophone offMicrosoft Excel Spreadsheet (.xls)Microsoft Powerpoint (.ppt)Microsoft Word DocumentMin. Focal LengthMiniature effectMinimalMinimum Shutter SpeedMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Mirror UpMirror Up SequenceMisc exposure/lens settingsMissing NumberMl Spot PositionMlSpotPosAfLinkMlSpotPosCenterModel IDModel: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Model: %s Capacity: %i Mb Power: %s Auto Off Time: %i min Mode: %s Images: %i/%i Date display: %s Date and Time: %s Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s Modeling FlashModelling FlashModerateMonitorMonitor Off DelayMonochromeMonth/Day/YearMove objectMovieMovie CaptureMovie Card SlotMovie MicrophoneMovie QualityMovie ResolutionMovie Screen SizeMovie SoundMovie VoiceMulti Frame Noise ReductionMulti SpotMulti spotMulti-Spot MeteringMulti-spotMultiple Focusing Points (Center)Multiple Focusing Points (Left)Multiple Focusing Points (No Specification), ManualMultiple Focusing Points (Right)Multiple Focusing Points, AutoMultiselectorMup Mirror upMustek MDC-800 gPhoto2 Library Henning Zabel Ported to gphoto2 by Marcus Meissner Supports Serial and USB Protocols.MyColorsNEF (Raw)NEF+BasicNEF+FineNEF+NormalNIKON Auto Bracketing SetNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName '%s' (%li characters) too long, maximum 30 characters are allowed.Name PrefixName to set on card when formatting.Near %dNear 1Near 2Near 3Network maskNeutralNextNickel cadmiumNickel hydrideNight LandscapeNight PortraitNight SceneNight ViewNight VisionNight landscapeNight sceneNight snapshotNikon Capture 1Nikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. Nikon Exposure TimeNikon Flash ModeNikon ViewfinderNikon autofocus drive did not focus.Nikon changeafarea works only in LiveView mode.Nikon disable liveview failedNikon enable liveview failedNikon manual focus at limit.Nikon manual focus stepping too small.Nikon manual focus works only in LiveView mode.NoNo CF Card ReleaseNo Compact Flash Card detected No Dual IrisNo EXIF data available for %s.No File Deletion, No File Upload No FlashNo Open Capture, No Power LightNo Resolution SwitchNo SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card in camera. No card present.No memory card presentNo reason availableNo response from cameraNo space available to capture new images. You must delete some images.No space left on card.No vendor specific capture NoneNone selectedNormalNormal Normal AF OnNormal-area AFNot FullNot enough free spaceNot enough memory available on the memory cardNot in LiveviewNot in fill modeNot readyNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOS error in camera communicationOffOfficeOlympus 750 Ultra Zoom: (1) Olympus 750UZ has a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both the 'OK' and 'quickview' buttons until the camera control menu appears. Set it to control mode. (2) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Olympus E XML Capture Olympus wrapped XML support is currently only available with libxml2 support built in.OnOn (image review excluded)On + Red Eye SuppressionOn screen tipsOn, red-eye reductionOne ShotOne-push AutomaticOnly root folder is supported - you requested a file listing for folder '%s'.Open Capture, Open Media SessionOpen sessionOperation ModeOperation RefusedOperation cancelledOptimal qualityOptimize ImageOrientationOtherOther PTP Device PropertiesOther SettingsOther command executing.Out of FocusOut of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner NameOwner name changedPPALPCPLS PlaylistPTP Access DeniedPTP Cancel RequestPTP Capture Already TerminatedPTP Data ExpectedPTP Device BusyPTP Device Prop Not SupportedPTP General ErrorPTP I/O ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Property 0x%04xPTP Response ExpectedPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Standard Version: %d.%d PTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP TimeoutPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePTP VersionPTP2 driver (c) 2001-2005 by Mariusz Woloszyn . (c) 2003-%d by Marcus Meissner . This driver supports cameras that support PTP or PictBridge(tm), and Media Players that support the Media Transfer Protocol (MTP). Enjoy!Packet was rejected by camera. Please contact %s.Pan FocusPanFocusPanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic DC1580 gPhoto2 library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic introduced image capturing technology called PHOTOSHOT for the first time, in this series of Palmcorders. Images are stored in JPEG format on an internal flashcard and can be transferred to a computer through the built-in serial port. Images are saved in one of two resolutions; NORMAL is 320x240 and FINE is 640x480. The CCD device which captures the images from the lens is only 300K and thus produces only low quality pictures.Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk PanoramaParameter 1Parameter 2Parameter 3Parameter SetParsing the value of widget '%s' / 0x%04x failed with %d.PartialPartial MeteringParty/IndoorPath not absolutePerceived Device TypePersistent SettingsPet PortraitPhoto EffectPhoto Info. PlaybackPhoto in moviePhotos on camera: %d Picture EffectPicture Frame ConfigurationPicture SettingsPicture StylePicturesPictures in camera: %d PlayPlay modePlaybackPlayback Container IndexPlayback ObjectPlayback PositionPlayback RatePlaysForSure IDPort speedPortraitPowerPower DownPower SavingPower WindPower down devicePre-Capture DelayPresetPreset Custom 1Preset Custom 2Preset Custom 3Preset Custom 4Preset Custom 5Press 1Press 2Press 3Press FullPress HalfPreviewPreview ButtonPreview Button 2Preview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProcess WFC ObjectProduct ID: %02x%02x Profile nameProhibit Flash QualityQuick ResponseQuick Response RemoteQuick Review TimeQuiet ReleaseRAWRAW + JPEG BasicRAW + JPEG FineRAW + JPEG NormalRAW + Large Fine JPEGRAW + Large Normal JPEGRAW + Medium Fine JPEGRAW + Medium Normal JPEGRAW + Small Fine JPEGRAW + Small Normal JPEGRAW 2RAW+JPEGRGB GainRTC Status: %d Raw Bit ModeRaw CompressionRead Only with Object deletionRead-OnlyRead-WriteRead-only file attributes like width and height can not be changed.ReadyRear Curtain SyncRear Curtain Sync + Slow SyncRear-curtain syncRear-curtain with slow syncReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRecording DestinationRecording MediaRedRed Eye SuppressionRed eye flashRed-eye ReductionRed-eye Reduction + Slow SyncRed-eye automaticRed-eye fillRed-eye fill flashRed-eye reductionRed-eye reduction with slow syncReleaseRelease + FocusRelease 1Release 2Release 3Release FullRelease HalfRelease ModeRelease without CF cardRemoteRemote API VersionRemote Mirror UpRemote ModeRemote TimeoutRemovable RAM (memory card)Removable ROMRepeatingReport Acquired ItemsReport Added/Deleted ItemsRequested information about picture %i (= 0x%x), but got information about picture %i backReset Bank 0Reset Menu BankReset deviceReset device property valueReset focus point to centerResetting protocol...ResolutionResolution SwitchResolution plus SizeReverse Command DialReverse IndicatorsRevocation InfoRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. RightRotation AngleRotation FlagRotation SceneSD Card ID: %s SD memory: %d MB total, %d MB free. SDRAMSDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d SDRamST2205 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.ST2205 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Samsung PlaylistSaturationSceneScene ModeSectionSecure TimeSelect ColorSelective colorSelf TimeSelf TimerSelf Timer (next picture only)Self Timer DelaySelf Timer Shot NumberSelf Timer TimeSelf test deviceSelf-timerSelftimer 10sSelftimer 2sSelftimer DelaySend Partial ObjectSend Proximity ResponseSend Registration RequestSend WMDRM-ND License RequestSend WMDRM-PD Application RequestSend WMDRM-PD CommandSend WMDRM-PD RequestSend meter challenge querySend objectSend object infoSend object property listSending data...SensitivitySensor ID: %d.%d SepiaSequence 9Serial NumberSerial Number: %s Session Initiator InfoSession-persistent SettingsSet Current Time PositionSet Nikon Autofocus areaSet Nikon Control ModeSet Property Not SupportedSet clock in cameraSet device property valueSet license responseSet object property listSet object property valueSet object protectionSet object referencesSetting 4Setting 5Setting 6Setting 7ShadeShadowShady White Balance BiasShall the camera beep when taking a picture?SharpSharpeningSharperSharpnessShooting BankShooting Bank Name AShooting Bank Name BShooting Bank Name CShooting Bank Name DShooting ModeShooting SpeedShooting modeShooting mode changedShot SettingsShutdownShutter CounterShutter SpeedShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed 2Shutter Speed BulbShutter Speed microseconds (0 auto)Shutter speedShutter speed changedShutter/AF-ONSiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SilhouetteSingleSingle AreaSingle ShotSingle frameSingle silentSingle-Frame ShootingSingle-Servo AFSingle-area AFSingle-servo AFSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Size PrioritySize Quality ModeSize of Input Data to CameraSize of Output Data from CameraSkip to next position in playlistSkylightSlide Show IntervalSlot 2 Save ModeSlowSlow Shutter SettingSlow SyncSlow shutterSlow syncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SmallSmall Fine JPEGSmall Normal JPEGSmoothSmoothingSnowSoftSofterSoftware Rev.: %s Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to the gphoto developer mailing list (in English) Some notes about Olympus cameras (and others?): (1) Camera Configuration: A value of 0 will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch to this mode, turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you cannot use the camera's buttons. If you end up in this state, you should reconnect the camera to the PC and switch LCD to 'Off'.Some notes about Olympus cameras: (1) Camera Configuration: A zero value will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Sonix camera library Theodore Kilgore Sonix camera. There is %i photo in it. Sonix camera. There are %i photos in it. Sony CaptureSony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners Sorry, initializing your camera did not work. Please report this.Sorry, the property '%s' / 0x%04x is currently ready-only.Sorry, your Canon camera does not support Canon Capture initiationSorry, your Canon camera does not support Canon EOS CaptureSorry, your Canon camera does not support Canon Viewfinder modeSorry, your Canon camera does not support Canon captureSorry, your Nikon camera does not seem to return a JPEG image in LiveView modeSorry, your Nikon camera does not support LiveView modeSorry, your camera does not support Nikon captureSorry, your camera does not support generic captureSoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSportsSports ActionSpotSpot MeteringSpot Metering Interlocked with AF FrameSpot Metering ModeSpot meteringSpot metering interlocked with AF frameSpot-AFStandardStandard Development ParametersStart movie recordingStartupStartup and ShutdownStep #2 of initialization failed! (returned %i bytes, expected %i). Camera not operationalStep #2 of initialization failed: ("%s" on read of %i). Camera not operationalStep #3 of initialization failed! (returned %i, expected %i). Camera not operationalStep #3 of initialization failed: "%s" on read of %i. Camera not operationalStep #3 of initialization failed: "%s" on write of %i. Camera not operationalStep #4 failed (returned %i, expected %i). Camera not operationalStep #4 failed: "%s" on read of %i. Camera not operationalStill Capture ModeStill ImageStrobe error.Subject-tracking AFSummary for Mustek MDC800: SunsetSuper macroSuperFineSuperior AutoSupported MTP Object Properties: Supported Thumb SizeSweep PanoramaSwitching Camera OffSynchronization PartnerSynchronize camera date and time with PCSynchronize frame data and time with PCSystem error.TFTTFT + PCTIFF (RGB)TTLTVTV Lock SettingTV Output FormatTarget value is not in enumeration.Tele-zoom Cont. Priority AETerminate open captureTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera could not be contacted. Please make sure it is connected to the computer and turned on.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support getting storage informationThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The property '%s' / 0x%04x was not set (0x%04x: %s)The property '%s' / 0x%04x was not set (0x%04x: %s).The requested port type (%i) is not supported by this driver.There are still files in folder '%s/%s' that you are trying to remove.There are still subfolders in folder '%s/%s' that you are trying to remove.There are two resolution settings, 352x288 and 176x144. Photo data is in JPEG format when downloaded and thus has no predetermined size. Therefore, the advertised maximum number of photos the camera can hold must be understood as an approximation. All gphoto2 options will work, except for the following which the hardware will not support: Deletion of individual or selected photos (gphoto2 -d) Capture (gphoto2 --capture or --capture-image) However, capture is possible using the webcam interface, supported by the spca50x kernel module. GUI access using gtkam has been tested, and works. However, the camera does not produce separate thumbnails. Since the images are in any event already small and of low resolution, the driver merely downloads the actual images to use as thumbnails. The camera can shoot in 'video clip' mode. The resulting frames are saved here as a succession of still photos. The user can animate them using (for example) ImageMagick's 'animate' function. For more details on the camera's functions, please consult libgphoto2/camlibs/clicksmart310/README.clicksmart310. There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.There is space for another %d low compressed %d medium compressed or %d high compressed pictures This camera can not capture previews.This camera can not capture.This camera can not trigger capture.This camera contains a Jeilin JL2005%c chipset. The number of photos in it is %i. This camera contains a Jeilin JL2005A chipset. The number of photos in it is %i. This camera does not provide a manual.This camera does not provide any configuration options.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This driver supports cameras with Jeilin JL2005B or C or D chip These cameras do not support deletion of photos, nor uploading of data. If present on the camera, video clip frames are downloaded as consecutive still photos. For more details please consult libgphoto2/camlibs/README.jl2005c This driver supports cameras with Jeilin jl2005a chip These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README.jl2005a This driver supports cameras with Mars MR97310 chip (and direct equivalents ??Pixart PACx07??). These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. Photo data processing for Argus QuickClix is NOT SUPPORTED. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README. This driver supports some cameras that use the Sonix sn9c2028 chip. The following operations are supported: - thumbnails for a GUI frontend - full images in PPM format - delete all images - delete last image (not all of the Sonix cameras can do this) - image capture to camera ( ditto ) If present on the camera, video clip frames are downloaded as consecutive still photos or as AVI files, depending on the model. Thumbnails for AVIs are still photos made from the first frame. A single image cannot be deleted unless it is the last one. This is the driver for Canon PowerShot, Digital IXUS, IXY Digital, and EOS Digital cameras in their native (sometimes called "normal") mode. It also supports a small number of Canon digital camcorders with still image capability. It includes code for communicating over a serial port or USB connection, but not (yet) over IEEE 1394 (Firewire). It is designed to work with over 70 models as old as the PowerShot A5 and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of 2005. It has not been verified against the EOS 1D or EOS 1Ds. For the A50, using 115200 bps may effectively be slower than using 57600 If you experience a lot of serial transmission errors, try to have your computer as idle as possible (i.e. no disk activity) This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.This preview doesn't exist.ThumbnailThumbnail height: %d Thumbnail size: %d Thumbnail width: %d Tilt-ShiftTime formatTime: %a, %d %b %Y %T TimelapseTimelapse IntervalTimelapse NumberTimeout even after 2 retries. Please contact %s.TimerTimer (Single) ShootingTimer + RemoteTimer 10 secTimer 2 secTone CompensationToo brightToo darkToo many retries failed.TopTopfield TF5000PVR Marcus Meissner Library to download / upload files from a Topfield PVR. Ported from puppy (c) Peter Urbanec Toshiba David Hogue Toshiba pdr-m11 driver. Total flashes fired: %d Total pictures captured: %d, Flashes fired: %d Total pictures taken: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Truncate ObjectTrying to contact camera...Tune Colour TemperatureTune Preset 0Tune Preset 1Tune Preset 2Tune Preset 3Tune Preset 4TungstenTungsten White Balance BiasTurbo modeTvType of SlideshowU1U2UI LanguageUI LockUILockTypeUNIX TimeUSB 1.1USB 2.0USB SpeedUnassignedUndefinedUndefined AudioUndefined Calendar ItemUndefined CollectionUndefined ContactUndefined DocumentUndefined MessageUndefined PTP PropertyUndefined VideoUndefined Windows ExecutableUnder > MTRUnderwaterUnknownUnknown %dUnknown CommandUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown flash mode %d, Unknown modelUnknown model "%s"Unknown valueUnknown value %04dUnknown value %04xUnknown value 0x%04xUnknown zoom mode %d Unknown(%04x)Unknown: 0x%04x Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. UnusedUpdate device firmwareUpload URLUpload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...Upper 1Upper 2User canceled downloadUser defined 1User defined 2User defined 3Vendor ExtensionVendor Extension Description: %s Vendor Extension ID: 0x%x (%d.%d) Vendor ID: %02x%02x Version: Version: %s Vertical AF OnVideo ModeVideo OUTVideo OutViewfinder GridViewfinder Grid DisplayViewfinder virtual horizontVignette ControlVividVolatile SettingsVolume LevelWB bracketingWEP 128-bitWEP 64-bitWIFI ESSIDWIFI channelWIFI profilesWPL PlaylistWaiting for completion...Waiting...Warning DisplayWarning Level 0Warning Level 1Warning StatusWarning in canon_usb_set_file_attributes: canon_usb_dialogue returned error status 0x%08x from cameraWaterWe expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite Balance Bias Preset 0White Balance Bias Preset 1White Balance Bias Preset 2White Balance Bias Preset 3White Balance Bias Preset 4White Balance Bias Preset NrWhite Balance Bracket ProgramWhite Balance Bracket StepWhite Balance Colour TemperatureWhite Balance Preset Name 0White Balance Preset Name 1White Balance Preset Name 2White Balance Preset Name 3White Balance Preset Name 4White Balance Preset NumberWhite Balance Preset Value 0White Balance Preset Value 1White Balance Preset Value 2White Balance Preset Value 3White Balance Preset Value 4White BoardWhite balanceWhite boardWhite levelWhiteBalanceWhiteBalance Adjust AWhiteBalance Adjust BWhiteBalance X AWhiteBalance X BWhitebalance Reset ErrorWideWide-area AFWindows Image FormatWireless SyncWriteWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.XMLDocumentYYYY/MM/DDYear/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.You have to set the port prior to initialization of the camera.You must be in record mode to capture images.You need to specify a folder starting with /store_xxxxxxxxx/Your Logitech Clicksmart 310 has %i picture in it. Your Logitech Clicksmart 310 has %i pictures in it. Your USB camera has a S&Q chipset. The total number of pictures taken is %i Some of these could be clips containing several frames Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i Your USB camera is an iClick 5X. The total number of pictures taken is %i Your USB camera seems to be a LG GSM. Firmware: %s Firmware Version: %s Your USB picture frame has a AX203 chipset Your USB picture frame has a ST2205 chipset Your camera only supports deleting the last file on the camera. In this case, this is file '%s'.Zone Focus (Close)Zone Focus (Close-up)Zone Focus (Far)Zone Focus (Medium)Zone Focus (Reserved 1)Zone Focus (Reserved 2)Zone Focus (Reserved 3)Zone Focus (Reserved 4)Zone Focus (Very Close)ZoomZoom (in millimeters)Zoom level changedZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autoauto + red eye suppressionbatteryblack & whitebulbcamera inactive for > 9 seconds, re-initing. cannot be queried. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_int_capture_image: initial canon_usb_list_all_dirs() failed with status %licanon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: Reached end of packet while examining the first direntcanon_int_list_directory: truncated directory entry encounteredcanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Initial dirent packet too short (only %i bytes)canon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_body_id: Unexpected data length returned (%i bytes, expected %i)canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)canon_usb_lock_keys: Unexpected length returned from "lock keys" function (%i bytes, expected %i)canon_usb_set_file_attributes: canon_usb_dialogue failedcanon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)colorcoolshot library vcould not change owner namecould not set timeeconomyexternallyfill infinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)high compression, hp215 Marcus Meissner Driver to access the HP Photosmart 215 camera. Merged from the standalone hp215 program. This driver allows download of images and previews, and deletion of images. iClick 5X driver Theodore Kilgore iTTLin fill modeinfiniteinternallyjamcam library vjl2005a camera library Theodore Kilgore jl2005bcd camera library Theodore Kilgore lock keys failed.losslesslow (320x240)low compression, mRAWmRAW + Large Fine JPEGmRAW + Large Normal JPEGmRAW + Medium Fine JPEGmRAW + Medium Normal JPEGmRAW + Small Fine JPEGmRAW + Small Normal JPEGmedium compression, menuno status reported.nonenormalnot available: %soffonon + red eye suppressionon batterypccam600 init: Unexpected error: gp_port_read returned %d instead of %dpccam600_close: return value was %d instead of %dpccam600_get_file:got index %d but expected index > %dpccam600_init: Expected %d blocks got %dpccam600_init: Expected > %d blocks got %dplaypower OKpower badread onlyreadwritereadyrecordrecursive calls are not supported by the sierra driver! Please contact %s.red eye flash off. red eye flash on. red eye suppressionsRAWsRAW + Large Fine JPEGsRAW + Large Normal JPEGsRAW + Medium Fine JPEGsRAW + Medium Normal JPEGsRAW + Small Fine JPEGsRAW + Small Normal JPEGsRGBsRGB (nature)sRGB (portrait)sierra SPARClite library Scott Fritzinger Support for sierra-based digital cameras including Olympus, Nikon, Epson, and Pentax. Thanks to Data Engines (www.dataengines.com) for the use of their Olympus C-3030Z for USB support implementation.spca50x library vsq905 generic driver Theodore Kilgore sq905C generic driver Theodore Kilgore standardsuperfinesx330z is USB onlytime setunable to guess initial CRC value undefinedunexpected datatype %iunknown (0x%02x)unknown compression %d, unknown resolution %d) vCalendar1vCalendar2vCard2vCard3warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2 2.5.6 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-12-23 10:22-0400 Last-Translator: David Prévot Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 1.5 Plural-Forms: nplurals=2; plural=(n != 1); Capacité d'accès : %s Prise en charge du Wi-Fi Canon Fichier téléchargé, Type de système de fichiers : %s Espace mémoire libre (en octet) : %llu (%lu Mo) Espace mémoire libre (en nombre d'images) : %d Acquisition d'image générique, Capacité maximale : %llu (%lu Mo) Prise en charge du Wi-Fi Nikon Pas d'image capturée, Type de stockage : %s Description du stockage : %s Nom de volume : %s Identification de l'appareil : Modèle : %s Propriétaire : %s État énergie : %s Renseignements de mémoire flash : %s Heure : %s Formats d'acquisition : Capacités de l'appareil : Résumé des propriétés de l'appareil : Résumé du dispositifs de stockage : Disque %s %11s octets au total %11s octets disponibles Numéro de série : %s Version : %s (la batterie est chargée à %d %%) Erreur PTP %04x pour cette requête L'espace mémoire total est de %8d octets. L'espace mémoire libre est de %8d octets. Nombre de fichiers : %d erreur %x pour cette requête. n'a pas pu être lue. %.0f mm%.1f arrêts%0.4f s%d %d/%dRéduction du bruit multi-image %d%d mm%d/%d%f%i (inconnu)%i octets reçus d'une image de format inconnu. Veuillez écrire à %s pour demander de l'aide.%i images n'ont pas pu être effacées car elles sont protégées%lld (inconnu)%s (heure de l'hôte %s%i secondes)%sBouton de temps de pose de Canon EOS%sCapture 2 Nikon%sCapture 3 Nikon Bibliothèque SX330z (Traveler) (et autres appareils Aldi). D'autres appareils comme les Jenoptik, Skanhex, Maginon devraient fonctionner. Veuillez envoyer les rapports de bogue et commentaires à : Dominik Kuhlen * Les petits problèmes d'image ou de communication sont souvent causés par une batterie déchargée. * Les images acquises à distance sur cet appareil sont stockées en mémoire temporaire et non sur la carte mémoire Flash. * Le contrôle de l'exposition lors de l'acquisition des images peut être réglé manuellement ou configuré en mode automatique * La qualité de l'image est actuellement inférieure à ce qu'elle pourrait être. *inconnu*+NEF (brut)-0,5-1,0-1,5-2,00,00,1 m0,50,5 m11 (court)1 EV1 fps1 min1 minuteUn pas de vitesse/ouverture1,01,3 s1,51,6 s1.6x1/1,3 s1/1,6 s1/1000 s1/100 s1/10 s1/1250 s1/125 s1/13 s1/151/15 s1/1600 s1/160 s1/21/2,5 s1/2000 s1/200 s1/20 s1/2500 s1/250 s1/250 s (synchronisation ultrarapide automatique)1/25 s1/2 s1/301/30 s1/3200 s1/320 s1/320 s (synchronisation ultrarapide automatique)1/3 s1/41/4000 s1/400 s1/40 s1/4 s1/5000 s1/500 s1/50 s1/5 s1/601/60 s1/6400 s1/640 s1/6 s1/81/8000 s1/800 s1/80 s1/8 s10 fps10 min10 minutes10 mm10 secondes100 %10 s11 fps1152 × 86412 mm1280 × 96013 s1515 min15 minutes15 s16 secondes16:91 s1x22 EV2 fps2 secondes2,02,0 m2,5 s2.5x20 secondes20 s21 points25 %25 s29 mm2 s2x3 (normal)3 EV3 fps3030 minutes30 secondes30 s34 mm3:2Suivi en 3D3 s3x44 fps4 secondes41 mm4 s4x5 (long)5 fps5 min5 minutes5 secondes50 Hz50 %51 mm51 points51 points (3D)58 mm5 s5x6 fps6 mm6 secondes60 Hz640 × 4806 s6x7 fps75 %7x88 fps8 mm8 secondes8 s8x9 fps9 points9xA-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)Filtre ABSecteurAlimentation sur secteurTransformateurLe transformateur est connecté Le transformateur n'est pas connecté. D-Lighting actif (ADL) du bracketingExposition automatique et flashVerrouillage d'exposition automatiqueVerrouillage d’exposition automatique seulementExposition automatique verrouilléeVerrouillage d’exposition automatique (en attente)Verrouillage d’exposition automatique (réinitialisation au relâchement)Verrouillage d’exposition automatique (en attente)Verrouillage d’exposition automatique seulementExposition automatique uniquementMode AE-L/AF-LVerrouillage d'exposition automatiqueVerrouillage d’exposition ou mise au point automatiquesVerrouillage d’exposition ou mise au point automatiquesBouton 2 de verrouillage d'exposition ou mise au point automatiquesCorrection d'exposition AEBActivation de la mise au point automatiqueÉclairage de la zone de mise au point automatiqueZone ponctuelle de mise au point automatiqueÉclairage d'assistance de mise au point automatiqueMode sonore de mise au point automatiqueLongueur de mise au point automatiqueMode 2 de mise au point automatique LCD en hautVerrouillage de mise au point automatique en attenteVerrouillage de mise au point automatique activéVerrouillage de mise au point automatique seulementVerrouillage de mise au point automatique seulementMise au point automatique verrouilléeMode de mise au point automatiqueMise au point automatique activéeBouton d'activation de la mise au point automatiqueVerrouillage de mise au point automatique seulementAF-AAF-Cpriorité au mode AF-CMise au point automatique activéeAF-Spriorité au mode AF-SAF11AF51AI FocusAI ServoRévision de l'ASIC : %d.%d Liste de lecture ASXAUTOAVRéglage du verrouillage de priorité à l'ouverturePriorité à l'ouverture maximalePriorité à l'ouverture activePilote de cadre numérique USB AX203 Hans de Goede Ce pilote permet d'envoyer, recevoir et effacer des images du cadre numérique.Les cadres numériques basés sur AX203 existent avec de nombreuses résolutions. Le pilote gPhoto pour ces périphériques permet d'envoyer, recevoir et effacer des images du cadre numérique.A_DEPÀ propos du Konica Q-M150 : Cet appareil ne permet aucune modification de l'extérieur. Par conséquent, le système de configuration ne permet que de consulter la configuration, sans pouvoir la modifier. Si vous avez des problèmes avec ce pilote, veuillez envoyer un message à ses auteurs. Résumé audio de l'albumRésumé de la liste audioRésumé de lecture audio et vidéoRésumé de l'objet dans le calendrierRésumé du chapitre productionRésumé du contactRésumé du groupe de contactRésumé du documentRésumé d'image de l'albumRésumé du support de diffusionRésumé du messageRésumé du répertoire de messagesRésumé multimédia de l'albumRésumé vidéo de l'albumRésumé de la liste vidéoMode d’accèsAccéder aux éléments principaux dans MON MENUActionCapteur de mise au point automatique activéD-Lighting actifActiver le contrôle d'imageAd-hocAdc65 Benjamin Moos AdobeRVBAnnulation du transfert avancéNom de l'albumAlkalium manganeseUne erreur est survenue dans la bibliothèque d'entrée sortie (« %s ») : %sUne erreur inconnue est survenue. Veuillez contacter %s.Niveau d'angleAnti yeux rougesAnti yeux rouges en appointN’importe oùPilote générique Aox Theodore Kilgore OuvertureRéglages de l'ouverture du diaphragmeRéglages de l'ouvertureOuverture modifiéeMode d’applicationMode d’application 0Mode d’application 1ArtisteNom de l'artisteFormat d’imageAssigner une touche de fonctionAssigner une touche de fonctionAssigner un bouton de prévisualisationÉclairage d'assistanceCodec Audible.comAutomatiqueAutomatique + suppression des yeux rougeOuverture automatique du diaphragmeSélection de bracket automatiqueDX automatiquement rognéContrôle de distorsion automatiqueMesure d'exposition automatique de bracketExposition automatique du bracketingSynchronisation ultrarapide automatiqueZone de mise au point automatiqueMode de mise au point automatique 2Automatique ISORéduction du bruit multi-image ISO automatiqueRéglage automatique ISO P/A/DVPMesure automatique hors délaiArrêt automatique (test) (en seconde)Arrêt automatique (serveur) (en seconde)Arrêt automatique des renseignementsArrêt automatique du menuArrêt automatique des photographiesHeure d'extinction automatiqueDélais d'extinction automatiqueAutoextinctionAutoextinction (en minute)Synchronisation automatique lenteBalance des blancs automatiqueVerrouillage d’exposition automatiqueAutofocus : AI focusAutofocus : AI servoAutofocus : one-shotSensibilité automatiqueAutomatique, dispositif anti yeux rougesMode de mise au point automatiqueErreur de mise au point automatique.AutomatiqueAutomatique Automatique (flash désactivé)Flash automatiqueMacro automatiqueMacro automatique (bloquée)Dispositif anti yeux rouges automatiqueAjustement automatique de l'exposition en prévisualisationFlash automatiqueFlash automatique lors de l'acquisitionCouleurs d'automneAvPriorité à l'ouverture maximalePriorité à l'ouverture de l'Apex au maximumPriorité à l'ouverture activePriorité à l'ouverture de l'Apex ouvertePrises de vue disponiblesMémoire disponible : MoyenneTaille moyenne des fichiersMesure moyenneN/BN/BContraste noir et blancEffet de remplissage noir et blancType de réglages noir et blancDureté noir et blancRétroéclairageMauvaise fin de transfertMauvais caractères (0x%x, 0x%x). Veuillez contacter %s.Mauvaise somme de contrôle — 0x%02x reçu, 0x%02x attendu.Mauvaises données — 0x%02x reçu, 0x%02x ou 0x%02x attendu.Mauvaises données — 0x%02x reçu, 0x%02x attendu.Mauvaise exposition (probablement manque de lumière)Valeur incorrecte pour l'état %d de la carteValeur incorrecte pour l'état %d de l'objectif Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Rétroconception des données d'images par : Jeff Laing Mis en Å“uvre en utilisant des documents trouvés sur le web. Permission accordée par Vision.Batteries faibles.Batteries opérationnelles.BatterieType de cellule de batterieNiveau de batterieNiveau de la batterie : %s Nombre de fichiers : %d Capacité minimale restante : %d Disponibilité : %s Chargement du flash : %s État de l'objectif : Durée de vie de la batterie : %i Batterie déchargéeMode de batterieType de batterieBatteries à plat, extinction de l'appareil.Niveau de la batterie : %.1f volts. Révision : %08x.État des piles : %s, transformateur : %s PlagePlage ou neigeSonMode SonoreMode sonore modifiéSon désactivéSon activéDébut d’édition d’objetMeilleureLe débit binaire %ld n'est pas possible.Noir et blancNoir et blancTableau noirNoir et blancTableau noirNoir/BlancClignoteFleurissementBleuBasMode de bracketOrdre de bracketBracket définiBracketingPaliers du bracketing C 0,3Paliers du bracketing C 0,7Paliers du bracketing C 1,0Paliers du bracketing C 2,0Paliers du bracketing C 3,0Bracketing activéImages et paliers du bracketingPaliers du bracketing S 0,3Paliers du bracketing S 0,7Paliers du bracketing S 1,0Paliers du bracketing S 2,0Paliers du bracketing S 3,0Balance des blancs du bracketing hauteBalance des blancs du bracketing basseBracketing en rafaleLumière+Lumière-LuminositéLuminosité+Luminosité-Lumière/ContrasteRAM intégréeROM intégréePose longueTemps d'exposition en pose longueMode pose longueRafaleIntervalle de prise de vue en rafaleNombre d'images en rafaleOccupéBoutons et commandesNuméro CCDNuméro de série du CCDScript CHDKCHDK n’a pas quitté le mode d’enregistrement.CRWMenu CSMAppareilAction de l'appareil photographiqueIdentifiant du matériel de l'appareilConfiguration de l'appareilDate et heure de l'appareilIdentifiant de l'appareil : %s Bibliothèque pour l'appareil Kodak DC215 Zoom. Michael Koltan Fabricant de l'appareilMode de l'appareilMode de l'appareil sans ajustement de la valeur d'ouverture du diaphragmeModèle de l'appareil photographiqueModèle de l'appareil : %s Appareil non prêtAppareil OK.Orientation de la l'appareilType de sortie de l'appareilPropriétaire de l'appareilRéglages de l'appareil photographiqueRenseignements sur l'état de l'appareilConfiguration de l'appareil et du piloteL'appareil photographique ne semble pas utiliser de mémoire CompactFlash Malheureusement, ce n'est pas encore pris en charge pour le moment L'appareil est occupé. Si le problème persiste, veuillez contacter %s.Impossible de finir l'opération avec l'appareilL'appareil n'a pas accepté les paramètres. Veuillez contacter %s.La fonction « camera_init » manque au pilote d'appareil « %s ».L'appareil a de la mémoire. L'appareil a pris %d photographies et utilise de la mémoire CompactFlash. L'appareil est configuré pour une lumière scintillante à %d Hz. L'appareil n'est pas dans le bon mode. Veuillez contacter %s.Appareil non prêt, échec de get_battery : %sAppareil non prêt, échec de plusieurs requêtes d'identification de l'appareil : %sLes images de l'appareil sont monochromes. Économie d'énergie pour l'appareil (seconde)L'appareil a refusé trois fois de garder la connexion ouverte.L'appareil a refusé la commande.L'appareil se réinitialise lui-même.L'appareil a envoyé l'octet 0x%02x inattendu.L'appareil gère les vignettes. L'appareil gère la vidéo. L'appareil permet d'utiliser les formats vidéo : Date de l'appareil : %s %s Appareil non disponibleAppareil non disponible : %sL'appareil était déjà actifL'appareil était réveilléImpossible d'acquérir de nouvelles images. Erreur inconnueImpossible de supprimer toutes les images.Impossible de supprimer l'image %s.Impossible de charger cette image dans l'appareil. Une erreur s'est produite.Annulation de mise au point automatique d'appareil reflex numérique CanonLumière de bougieImpossible de récupérer la quantité de mémoire disponibleImpossible d'obtenir la capacité de la batterieImpossible d'obtenir le nom du répertoire contenant les imagesMode d’exposition automatique CanonCanon CaptureÉchec de Canon CaptureCapture Canon EOSÉchec de Capture EOS CanonCapture EOS Canon n'a pas pu déclencher : carte peut-être en lecture seule.Capture EOS Canon n'a pas pu déclencher : possible problème de miroir relevé.Capture EOS Canon n'a pas pu déclencher : possible problème de mise au point.Capture EOS Canon n'a pas pu déclencher : possible manque de mémoire sur la carte.Capture EOS Canon n'a pas pu déclencher : erreur %d inconnue, veuillez le signaler.Échec de Capture EOS Canon : %xImpossible d'obtenir les modifications de Canon EOSTélécommande de déblocage du Canon EOSÉchec du déclenchement de Capture EOS Canon : 0x%xViewfinder de Canon EOSZoom de Canon EOSPosition du zoom de Canon EOSPilote pour Canon PowerShot par Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, Ajouts du modèle A5 par Ole W. Saastad Améliorations supplémentaires par Holger Klemm Stephen H. WestinMode de prise de vue CanonImpossible de désactiver Canon viewfinderImpossible d'activer Canon viewfinderImpossible d'obtenir l'image dans Canon viewfinderAcquisitionRetard d'acquisitionRéglages de capture d'imageClasse de taille d'acquisitionCible d'acquisitionMode de transfert de prise de vueClasse de taille d'acquisition modifiéeLe type d'acquisition n'est pas pris en chargeCarteÉtat de la carte : Impossible d'écrire sur la carte.La carte n'est pas formatéeCarte n'est pas ouverteLa carte est ouverteCarte protégée en écriture.Nom de la carte : %s Espace libre sur la carte : %d ko Type de carte non prise en charge.Carte enlevée lors de son accès.Priorité de type de celluleMode de lecture par le bouton centralMode de prise de vue par le bouton centralRapport du zoom par le bouton centralPoint centralZone pondérée centralePondérée centréMoyenne pondérée centralePoids centréPoint centralPondérée centraleMesure pondérée centrale moyenneMesure pondérée centraleMoyenne pondérée centraleMesure pondérée centraleCentreZone pondérée centralePoint centralÉchec de modification du mode de l'appareilModifier le contrôle d'imageModification de vitesse… Attente…PersonnagePersonnage et sonEn cours de chargementErreur de somme de contrôleEnfantEnfantsChoix de température de couleurChoisir un numéro d’objectif (non CPU)Nettoyer le capteur d'imageNettoyer le capteurEffacer les données stockéesFermer une session médiaFermer la sessionGros planSujet le plus procheGros planNuageuxBalance des blancs nuageuxCouleurGain des couleursMode couleurMode de couleurRéglages couleurEspace de couleurTempérature de couleurMode couleur ou fonctionEsquisse en couleurTempérature de couleurCette commande ne peut pas être annulée.Erreur d'ordre de commandes. CommandeErreur de communication 1Erreur de communication 2Erreur de communication 3Erreur de communication même après deux nouvelles tentatives. Veuillez contacter %s.Carte CompactFlash détectée Carte CompactFlashMode de compatibilitéCompressionParamètre de compressionConfigurationConfiguration d'appareil FUJIConnecté à l'appareil photographiqueContinuPrise de vue continue (haute vitesse)Continu à vitesse lentePrise de vue continue (basse vitesse)Prise de vue continueVitesse rapide de prise de vue continueVitesse lente de prise de vue continueContinu à vitesse rapideContinu à vitesse rapideContinu à vitesse lenteContinu silencieuxMise au point automatique avec servo en continuContrasteContraste+Contraste-Copier l'objetCopyrightDroit d’auteur (20 caractères maximum)Droit d'auteurRenseignements sur les droits d'auteurDonnées corrompuesImpossible d'allouer %i octet(s) pour le téléchargement de l'image.Impossible d'allouer %i octet(s) pour le téléchargement de la vignette.Impossible d'appliquer les réglages USBImpossible de modifier la vitesse ISOImpossible de modifier l'ouvertureImpossible de modifier le mode sonoreImpossible de modifier la correction d'expositionImpossible de modifier le mode de flashImpossible de modifier le mode de mise au pointImpossible de modifier le format d'imageImpossible de modifier le mode de prise de vueImpossible de modifier le temps de poseImpossible de modifier l'heure du fichier « %s » dans « %s » (%s).Impossible de modifier le niveau du zoomImpossible de contacter l'appareil photo.Impossible de créer le répertoire \DCIM.Impossible de créer le répertoire de destination.Impossible de créer le répertoire %s.Impossible de créer le répertoire.Impossible de supprimer le fichier « %s » du répertoire « %s » (code d'erreur %i : %s).Impossible de supprimer le fichier.Aucun appareil n'a pu être détectéAucun appareil n'a pu être détecté sur le port %sImpossible d'établir une initiation de connexion à l'appareil.Impossible d'extraire la vignette JPEG des données : les données ne sont pas en JFIFImpossible d'extraire la vignette JPEG des données : pas de début ou de finImpossible de trouver le fichier « %s ».Impossible de trouver les données de localisation en « %s »Impossible d'obtenir des renseignements sur le disque : %sImpossible d'obtenir le nom du disque : %sImpossible d'obtenir la lettre de la mémoire flashImpossible d'obtenir des renseignements sur « %s » (%s).Impossible d'obtenir des renseignements sur « %s » dans « %s » (%s).Impossible d'obtenir le registre %i. Veuillez contacter %s.Impossible d'obtenir la chaîne de registre %i. Veuillez contacter %s.Impossible d'initialiser le chargement (l'appareil a répondu avec 0x%02x).Impossible de charger le pilote d'appareil « %s » nécessaire (%s).Impossible d'ouvrir « %s ».Impossible de supprimer le répertoire %s.Impossible de supprimer le répertoire.Impossible de réinitialiser l'appareil. Impossible de régler la vitesse à %i (l'appareil a répondu %i).Impossible de transmettre un paquet (code erreur %i). Veuillez contacter %s.Impossible de transmettre un paquet malgré plusieurs tentatives.Impossible de télécharger, pas de nom de répertoire libre disponible. Le répertoire 999CANON existe et contient déjà une image AUT_9999.JPG.Impossible de lire le fichier « %s »Créer un profil Wi-FiDate de création : %s, dernière date d'utilisation : %sCreativeCreative PC-CAM 300 Auteurs : Till Adam et : Miah Gregory Creative PC-CAM600 Auteur : Peter Kajberg Mode actuel : prise de vues Mode actuel : lecture Date actuelle sur l'appareil : %3$02d/%2$02d/%1$04d %4$02d:%5$02d Capacité de la carte mémoire : %6$d Nombre d'images sur la carte : %7$d Estimation du nombre d'image disponible : %8$d Niveau de la batterie : %9$d %%.PTP n'est actuellement implémenté que pour les appareils USB et PTP/IP, type de port %xPersonnaliséFonctions Ex personnaliséesBalance des blancs, réglage nº 1 Balance des blancs, réglage nº 2 Balance des blancs, réglage nº 3 Personnaliser les boutons de commandeJJ/MM/AAAADEPVersion de DPOFFoncé sur clairLes données ont été corrompues.Date et heureFormat de dateFormat d'horodatageDate et heureDate et heure (GMT)Affichage de la dateDate : %3$02i/%2$02i/%1$i %4$02i:%5$02i:%6$02i Nombre d'images prises : %7$i Nombre d'images libres : %8$i Version du logiciel : %9$s Débit : %10$s bauds Mémoire : %11$i mégaoctets Mode : %12$s Qualité de l'image : %13$s Réglage du flash : %14$s Renseignements : %15$s Retardateur : %16$s LCD : %17$s Extinction automatique : %18$i minutes Source d'énergie : %19$sDate : %sJour/Mois/AnnéeLumière naturelleBalance des blancs ensoleilléDébogageProfondeurPasserelle par défautPilote sierra par défaut : c'est le pilote sierra par défaut, il devrait permettre la récupération et la lecture des images de l'appareil ; les réglages de configuration de l'appareil (ou préférences) sont basés sur l'Olympus 3040, et sont sûrement incomplets. Si vous constatez que les paramètres de configuration sont complets pour votre appareil, ou si pouvez fournir du code pour permettre une configuration complète, veuillez contacter la liste de diffusion des développeurs. Télécommande à retardateurSupprimerSupprimer l'objetSuppression de l'image %s.Profondeur de champ« %s » détecté, alias « %s »« %s » détecté.Paramètre 1 de développementParamètre 2 de développementParamètre 3 de développementCertification du périphériqueIcône du périphériqueVersion du périphériqueCe périphérique ne permet pas de définir la protection d'objet.Impossible de définir la protection de l'objet à %d sur le périphériqueDigita Johannes Erdfelt Disposition de l'appareil numérique (DCIM) Zoom numériqueZoom numérique avec loupe de viséeMacro numériqueZoom numériqueDimera 3500 ver. %s %d/%d %d:%d. %d images utilisées sur environ %d (haute résolution) ou %d (basse résolution). Caractéristiques de l'appareil : %s, %s, %s, %s? Le flash est %s, %s et %s La résolution est positionnée à %s L'appareil fonctionne sur %s %s Directement pour l'impressionMode de navigation de répertoire — écrit par Scott Fritzinger .Le répertoire existeRépertoire non trouvéDésactiver les opérations de fichier de confianceDéconnexion de l'appareil.Afficher la valeur d'ouverture Afficher la valeur d'ouverture maximaleAffichageFormats d'affichage : Afficher la distanceNe pas afficher le menu TVLe programme ne sait pas comment gérer la valeur camera->port->type %i, alias 0x%x dans %s, ligne %i.Programme de téléchargement pour Digital Dream Enigma 1.3 par , adapté du pilote spca50x. Remerciements à l'équipe spca50x, dont le portage du pilote a été facile pour cet appareil. Programme de téléchargement pour les appareils basés sur le GrandTek 98x. Écrit initialement par Chris Byrne et adapté pour gPhoto2 par Lutz Mueller . Améliorations du protocole et posttraitement pour Jenoptik JD350e par Michael Trawny . Corrections de bogues par Marcus Meissner .Programme de téléchargement pour appareil Polaroid DC700. Écrit initialement par Ryan Lantzer pour gPhoto 4.x. Adapté pour gPhoto2 par Lutz Mueller .Programme de téléchargement pour plusieurs appareils Polaroid. Écrit initialement par Peter Desnoyers et adapté pour gPhoto2 par Nathan Stenzel et Lutz Mueller . Les tests du Polaroid 640SE ont été effectués par Michael Golden .Téléchargement de %s.Téléchargement de %s…Téléchargement de « %s »…Téléchargement des données EXIF…Téléchargement audio…Téléchargement des données…Téléchargement de fichier…Téléchargement de l'image %s.Téléchargement d'image…Téléchargement du film…Téléchargement de la vignette…Téléchargement…Fonction de mise au point automatique d'appareil reflex numérique CanonFonction de mise au point manuelle d'appareil reflex numérique CanonMode de commandeFonction de mise au point automatique d'appareil reflex numérique NikonFonction de mise au point manuelle d'appareil reflex numérique NikonPiloteRéglages du piloteCadre du pilote écrit par Lutz Mueller . Ce programme contient du code source de QVplay, écrit par Ken-ichi HAYASHI < xg2k-hys@asahi-net.or.jp> et Jun-ichiro « itojun » Itoh . L'intégration de QVplay a été réalisée par Michael Haardt .Double diaphragmeCrépusculeCrépuscule ou aubeErreur de référence de poussièreZone dynamique de mise au point automatiqueZone dynamique (21)Zone dynamique (51)Zone dynamique (9)Mise au point automatique sur une zone dynamiqueMise au point automatique sur une zone dynamique avec priorité à l'objet le plus procheErreur de somme de contrôle EEPROM.Erreur : %d est trop grandErreur : une condition d'erreur fatale a été détectée, impossible de continuer Erreur : erreur de format du message.Erreur : message dépasséErreur : désynchronisé.Erreur : message inattenduErreur : message2 inattendu.Erreur : type de paquet inattendu.ESPESSIDPalier de valeur d'expositionMode EVFTaille du téléobjectif de l'EZoomPosition initiale de l'EZoomÉconomiqueMode effetEffetsCas d'urgenceVideActiver les droits d'auteurPermettre les commentaires d'imageActiver les opérations de fichier de confianceRencontrerBoîte de rencontreChiffrementClef de chiffrement (en hexadécimal)Fin d’édition d’objetFin de la session sécuriséeanglaisRenforcéErreurErreur d'acquisition d'imageErreur de modification de vitesseErreur de modification de vitesse.Erreur de suppression du fichier de vignette associéErreur de suppression de fichierErreur d'attente d'accusé de réception pendant l'initialisationErreur d'attente d'accusé de réception pendant l'initialisation, nouvel tentativeÉvaluativeMesure évaluativeMode émulation de l'événementPartoutExécuter une commande prédéfinie avec les valeurs des paramètres.%i octets attendus, %i reçus. Veuillez signaler cette erreur à %s.%i attendus, %i reçus. Veuillez signaler cette erreur à %s.32 octets attendus, %i reçus. Veuillez contacter %s.Indice d’expositionExpositionVerrouillage de l'ouverture d'expositionCentre de base d'expositionMatrice de base d'expositionPoint de base d'expositionCorrection d’exposition de balance des blancsProgramme d'exposition du bracketingPalier d'exposition du bracketingCorrection d'expositionCorrection d'exposition (valeur d'exposition)Mode de temporisation d'expositionAffichage de l'état d'expositionPalier d'exposition ISOIndice d’exposition (vitesse ISO du film)L'éclairage indique l'expositionÉtat d'indicateur d'exposition Verrouillage d’expositionMesure de l'expositionMesure de l'expositionMode de mesure de l'expositionProgramme d'expositionMode d’exposition programmé Palier d'expositionTemps de poseCorrection d'expositionCorrection d'exposition modifiéeCorrection d'exposition : %d Correction d'exposition : %s Mode de temporisation d'expositionNiveau d'exposition en prévisualisationFlash externeFlash externe connectéCorrection d'exposition par le flash externeMode de flash externeSpécification du flash externeÉtat du flash externeSynchronisation externeTrès élevéValeur d'ouverture du diaphragmeF2F2.3F2.8F4F5.6F8Erreur fatale : valeur CRC initiale pour la longueur %d inconnue FLASH : Fichiers : %d Verrouillage de la valeur d'ouverture du diaphragmeValeur de flash verrouilléeVerrouillage de valeur de flashMise au point automatique en priorité sur le visageParamètres d'usineImpossible d'activer le mode de visée par l’écran sur un Nikon 1, mais c’est nécessaire pour la capture.FidèleLoin %dLoin 1Loin 2Loin 3Scène éloignéeSystème de fichiers rapideTemps de pose courtFichierLe fichier « %s » n'a pas été trouvé dans le répertoire « %s ».Le fichier « %s/%s » n'existe pas.Fichier supprimé, Numéro de fichier séquencéFichier envoyé Compression du fichierLe fichier existeFichier non trouvéFichier protégé en écriture.Résolution du fichierLa taille du fichier est de %ld octets. La taille du fichier envoyé ne peut pas dépasser %i octets.Type de fichierÉchec d'envoi de fichier.Fichier trop grand. Vous pourriez ayez besoin d'éteindre puis de rallumer l'appareil avant de charger d'autres fichiers.Conflit de nom de fichierNom de fichier incorrectNom de fichier nécessaireType de fichier : FlashPix (Type de fichier : JPEG (Flash en appointAfficher la découverte d'ISOFineFeux d'artificeMicrocodeRévision du microcode : %8sRévision de microcode : %8s Images : %i Mémoire totale : %i ko Mémoire libre : %i ko Révision du microcode : %d.%d Version de microcodeVersion de microcode : %d.%02d Microcode : %d.%d FisheyeFixeFlashFlash chargéCorrection A de commande du flashMode A de commande du flashValeur A de commande du flashCorrection B de commande du flashMode B de commande du flashValeur B de commande du flashCanal de commande du flashCorrection de commande automatique du flashMode automatique de commande du flashValeur automatique de commande du flashMode de commande du flashÉnergie de commande du flashCorrection du flashCorrection d'exposition par le flashVerrouillage de niveau de flashVerrouillage du flashNombre de répétitions manuelles du flashIntervalle de répétitions manuelles du flashValeur de répétition manuelle du flashMode de flashÉnergie du mode de commande du flashÉnergie du mode manuel du flashFlash désactivéFlash activéQuantité du flash énuméréeRéglage du flashRéglage du flashTemps de pose avec flashAuthentifier le flashVitesse de synchronisation du flashBalance des blancs flashFlash automatiqueMode de flash modifiéMode de flash : automatique, Mode de flash : forcé, Mode de flash : désactivé Flash désactivéFlash activéFlash uniquementFlash/ouvertureFlash/vitesseFlash/vitesse/ouvertureFlash : automatiqueFlash : automatique (dispositif anti yeux rouges)Flash : désactivéFlash : actifFlash : actif (dispositif anti yeux rouges)Flash : non définiFlashPixProgramme flexibleDispositif anti scintillementFluorescentType fluorescentTubes fluorescent nº 1 (maison, température de couleur 6700 K)Tubes fluorescent nº 2 (bureau, température de couleur 5000 K)Tubes fluorescent nº 3 (travail, température de couleur 4200 K)FluorescentFluorescent élevéLampe fluorescente 1Lampe fluorescente 2Lampe fluorescente 3Lampe fluorescente 4Lampe fluorescente 5Balance des blancs fluorescentTube fluorescent nº 1 (maison, température de couleur 6700 K)Tube fluorescent nº 2 (bureau, température de couleur 5000 K)Tube fluorescent nº 3 (travail, température de couleur 4200 K)Fluorescent : blanc froidFluorescent : blanc jourFluorescent : lumière du jourFluorescent : blanc chaudDistance focaleDénominateur de distance focaleDistance focale maximaleDistance focale minimaleDistance focale de type téléobjectifLargeur de distance focaleMise au pointZone de mise au pointCollimateur de zone de mise au pointZone de mise au pointZones de mise au pointLongueur de mise au pointInformations de mise au pointVerrouillage de mise au pointMesure de mise au pointMode de mesure de mise au pointMode de mise au pointMode de mise au point 2Luminosité de l'endroit de mise au pointMode de mise au point modifiéPosition de mise au pointPoint de mise au pointMise au point automatique seulement au centreMise au point manuelle seulement au centreErreur de mise au point.Le répertoire « %s » ne contient que %i fichiers, mais un fichier numéro %i a été demandé.FeuillageAlimentationPour faire fonctionner l'acquisition en pose longue, assurez-vous que le mode de connexion est commuté sur « M » et d'avoir réglé le « temps de pose » sur « pose longue ».Pour les appareils basés sur les puces S&Q Technologies. Ils devraient normalement fonctionner avec gtkam. Les photographies seront enregistrées au format PPM. Tous les appareils S&Q connus ont deux types de réglages de résolution. Ces résolutions dépendront de l'appareil utilisé. Quelques un permettent de supprimer toutes les images. La plupart ne le permettent pas. L'envoi de données à l'appareil n'est pas possible. Le mode de compression d'images trouvé dans la plupart des appareils S&Q est pris en charge, à un certain degré. S'il y en a sur l'appareil, les extraits vidéos sont vus comme des sous-dossiers. Gtkam les téléchargera séparément. Quand des extraits vidéo sont présents sur l'appareil, un petit triangle est présent avant le nom de l'appareil. Si aucun dossier n'est affiché, cliquez sur le petit triangle pour le faire apparaître. Cliquer sur le dossier pour le parcourir et y voir les images ou les télécharger. Les images seront téléchargées séparément, avec des noms spécifiques à l'extrait vidéo d'où elles proviennent. Ainsi, vous pourriez librement choisir de sauvegarder les extraits vidéo dans des répertoires séparés ou non. Pour les appareils faits de pièces de S&Q Technologies, qui ont comme identifiant de fabricant USB 0x2770 et identifiant de produit 0x905C, 0x9050, 0x9051, 0x9052 ou 0x913D. Les photographies sont sauvegardées au format PPM. Certains de ces appareils permettent la suppression logicielle de toutes les photographies. D'autre ne le permettent pas. Aucun des appareils pris en charge ne permet l'acquisition d'images. Tous peuvent faire de l'acquisition de prévisualisation (image acquise puis envoyée à l'ordinateur). Si la suppression de toutes les images n'est pas possible avec cet appareil, alors l'acquisition de prévisualisation aura pour effet de supprimer aussi ce qui est sur l'appareil Le chargement de fichiers n'est pas possible pour ces appareils. De plus, aucun des appareils pris en charge ne permet la suppression de photographies individuelles en utilisant une commandes logicielle. ForcerFlash forcé Formater la carte et définir le nom de l'album.Formater la carte CompactFlashFormat de stockageImages restantes : %i Vues prises : %4d Images prises : %i Grille de cadragefrançaisNom du périphérique familierSynchronisation au premier rideauPleineImage entièreTotalement manuelVue complète du format de fichierMise au point automatique avec servo à plein tempsBouton de fonction 2Mode d’opérationMode d’opération : 0x%04x GénéralGénérique platGénérique hiérarchiqueallemandObtenir le bloc de donnée suivantObtenir l'objet partiel (offset de 64 bits)Obtenir une requête de proximitéObtenir une réponse d'enregistrementObtenir une réponse de licence WMDRM-NDObtenir une réponse WMDRM-PD pour l'applicationObtenir la description de propriété du périphériqueObtenir la valeur de propriété du périphérique Obtenir les propriétés interdépendantes de l'objetObtenir l'état de la licenceObtenir la demande de mesureObtenir une réponse sur la mesureObtenir le nombre d'objetObtenir l'objetObtenir les identificateurs de l'objetObtenir les renseignements sur l'objet Obtenir les propriétés de l'objet prises en chargeObtenir la description des propriétés de l'objetObtenir la liste des propriétés de l'objetObtenir la valeur des propriétés de l'objetObtenir les références de l'objetObtenir l'objet partielObtenir une requête sur le temps de sécuritéObtenir une réponse sur le temps de sécuritéObtenir l'identifiant du support de stockage Obtenir les renseignements sur le support de stockageObtenir la liste de synchronisationRécupération de vignetteObtenir les types de liste de lecture transférableRécupération de la configuration…Réception des données…Récupération de la liste des fichiers…Récupération du fichier…Obtention d'informations sur %i fichiers…Récupération de la vignette…Résultat inattendu 0x%x. Veuillez contacter %s.Niveaux de grisNiveaux de grisVertGroupe dynamiqueType PTN du groupeGrande gamme dynamique (HDR)Mode grande gamme dynamique (HDR)Lissage de grande gamme dynamique (HDR)Crépuscule sans trépiedErreur matérielleHaut 1Haut 2HauteHaute (1152 × 872)Haute (qualité correcte)Élevé 2Réduction du bruit pour grande ISORéduction du bruit pour grande ISOContrôle élevéTouche hautSensibilité élevéeTemps de pose courtMise en évidence de l'endroit de mise au point actifAttenteMode de connexion : %1$s Correction d'exposition : %2$s Données d'exposition : %3$d Validité de la date : %4$s Date : /%7$02d/%6$02d/%5$d %8$02d:%9$02d:%10$02d Retardateur : %11$s Paramètres de qualité : %12$s Mode : %13$s Validité de l'ident. de carte : %14$s Identifiant de carte : %15$d Mode de flash : Économie d'énergie pour l'hôte (seconde)Combien de temps sera nécessaire à l'extinction de l'appareil connecté à l'ordinateur ?Combien de temps sera nécessaire à l'extinction de l'appareil non connecté à l'ordinateur ?Combien de temps avant l'arrêt de l'appareil ?Ajustement de le nuanceHyPictE/S en coursIdentifiantAdresse IP (vide pour DHCP)ISOISO automatiqueLimite haute d'ISO automatiqueLimite haute d'ISO automatiqueVitesse ISOVitesse ISO modifiéeIcônesLibreParamètre incorrect.Réglages de l'éclairageImageImage %s protégée contre la suppression.Image et sonAjustement de l'imageCommentaire de l'imageCommentaire d'image activéCommentaire d'imageCompression d’imageFormat d'imageFormat d'image CFFormat d'image disque dur externeFormat d'image SDMode d’imageQualité d'imageQualité d'image 2Affichage d’imageRotation de l'imageAttribut de rotation de l'imageRéglages de l'imageTaille d'imageStabilisation d'imageFormat d'image modifiéHauteur d'image : %d Numéro d'image incorrect.Image protégée.Taille d'imageTaille de l'image : %d Le type %d de photographie n'est pas géré par cet appareil.Type %d d'image non géréLe type d'image n'est pas pris en chargeLargeur d'image : %d Configuration de date d'imageImmédiatEn cours d'utilisationIncandescentAffichage d'indicateurIntérieurInfiniInfini/FisheyeRéglage d'affichage de renseignementsÉtat d'erreur d'affichage de renseignementsRenseignementsInformations pour les appareils basés sur le STV0680 : Renseignements à propos des appareils ayant pour identifiant 0x2770:0x9153. L'utilisation d'un programme à interface graphique pour accéder à cet appareil n'est pas recommandée, sauf pour s'amuser ou pour essayer de faire sauter un fusible. En production, utilisez plutôt gphoto2 -P en ligne de commande. Remarque : le téléchargement d'extraits vidéo n'est pas possible. Réponse initiale « %c » de l'appareil non reconnueInitialisation de l'appareilInitialiser l'acquisitionInitier l'acquisition ouverteAutomatique intelligentAutomatique intelligent sans flashMémoire interneErreur interne nº 1 dans get_file_func() (%s, ligne %i)Erreur interne (1).Erreur interne (2).Erreur interne lors de la rechercher de camlibs (noms de chemin d'accès peut-être trop long).Mémoire interne : %d Mo au total, %d Mo libre. IncorrectParamètre de vitesse ISO incorrectÉtat incorrectValeur incorrecte (%d) Paramètre d'ouverture incorrectParamètre de mode sonore incorrectRéglage de classe de taille d'acquisition incorrectParamètre de correction d'ouverture incorrectParamètre du mode de flash incorrectRéglage du mode de mise au point incorrectParamètre de format d'image incorrectParamètre du mode de prise de vue incorrectParamètre de temps de pose incorrectErreur de diaphragme.italienJD11 Marcus Meissner Pilote pour l'appareil Jenoptik JD11. Protocole rétroconçu en utilisant WINE et IDA.Configuration du JD11JPEGJPEG de basepolitique de compression JPEGJPEG finJPEG NormalJPEG normaljaponaisConserver le nom du fichier lors du chargementEnfants et animauxProblèmes connus : 1. Si le Kodak DC3200 ne reçoit pas de commande pendant au moins 10 secondes, il atteint son délai d'expiration et doit être réinitialisé. Si vous remarquez que l'appareil ne répond plus, resélectionnez l'appareil. Cela provoquera sa réinitialisation.Problèmes connus : Si des problèmes de communication surviennent, réinitialisez l'appareil et redémarrez l'application. Le pilote n'est pas encore assez robuste pour récupérer ces situations, en particulier si un problème survient alors que l'appareil n'est pas correctement arrêté à des vitesses supérieures à 9600 bauds.Bibliothèque pour l'appareil Kodak DC120 Scott Fritzinger Bibliothèque pour l'appareil Kodak DC120. (à la demande générale).Bibliothèque pour l'appareil Kodak DC240 Scott Fritzinger et Hubert Figuiere Bibliothèque pour les appareils Kodak DC240, DC280, DC3400 et DC5000. Réécrit et mis à jour pour gPhoto2.Pilote Kodak DC3200 Donn Morrison Questions et commentaires bienvenus.Pilote Kodak EZ200 Jean-Francois Bucas Configuration KonicaBibliothèque pour Konica Q-M150 Marcus Meissner Aurélien Croc (AP2C) http://www.ap2c.com Prise en charge du Konica Q-M150 français.Bibliothèque Konica Lutz Müller Gère tous les appareils Konica et plusieurs appareils HP.coréenLCDArrêt automatique de l'écran LCD (en seconde)Extinction automatique de l’écran LCD (en seconde)Luminosité de l'écran LCDLuminosité de l'écran LCD et affichage de renseignementsLuminosité de l’écran LCDÉclairage du LCDMode LCDTemps d'extinction de l'écran LCDMode LEDPilote générique LG GSM Guillaume Bedot PaysageLanguePilote Largan Hubert Figuiere LargeGrand JPEG finGrand JPEG normalGauchePrésence du cache d'objectifDistance focale de l'objectif (non CPU)Identifiant de l'objectifOuverture relative au maximum de l'objectif (non CPU)Mode de l'objectifNom d'objectifGenre d'objectifType d'objectifLa direction de l'objectif ne correspond pas à la lumière du flash Objectif non connecté LumièrePosemètreClair sur foncéPas assez de lumière.Liste des profils Wi-FiAfficher tous les fichiersListe des fichiers de « %s »…Liste des répertoires de « %s »…Lithium IonZone de mise au point automatique en mode de visée par l’écranMise au point automatique en mode de visée par l’écranMode de mise au point automatique en mode de visée par l’écranFonction mode de visée par l’écranRapport du zoom d'image en mode de visée par l’écranMode de visée par l’écranCondition interdite en mode de visée par l’écranÉtat du mode de visée par l’écranChargement des pilotes depuis « %s »…LocalLocalisationDonnées de localisation corrompues.Données de localisation trop grandes.Fichier de localisation trop grand.VerrouPilote Logitech Clicksmart 310 Theodore Kilgore Réduction du bruit pour l'exposition longueRéduction du bruit pour exposition longueTemps de pose longRecherche de l'appareil…Ça ressemble à un modem, pas à un appareil photoAucune perte de qualitéPerte de qualitéFaibleBasse (576 × 436)Faible (meilleure qualité)Faible 2Lumière faibleSynchronisation basse vitesseFaible contrasteTouche basSensibilité basseNetteté faibleTemps de pose longFonction de temps de pose long non disponibleLettres minuscules dans %s non autorisées.MM-DEPListe de lecture M3UM4AMF (fixe)MF (sélection)Document HTML compilé MHTMM/JJ/AAAAListe de lecture MPLMTR > au-dessousM_DEPMacroPris en chargeManuelManuel 2Mise au point manuelleMode bracketing manuelRéglage de film manuelDéfinition manuelle du nombre d'objectifsMise au point manuelleFabricant : %s Bibliothèque d'appareils Mars MR97310 Theodore Kilgore Appareil Mars MR97310. %i image y est contenue. Appareil Mars MR97310. %i images y sont contenues. MatriceMesure en matriceMatthew G. Martin Basé sur fujiplay de Thierry Bousch Ouverture minimale à la distance focale maximaleOuverture maximale à la distance focale minimaleDistance focale maximaleMaximalOuverture minimale à distance focale maximaleOuverture maximale à distance focale minimalePrise de vue maximum Maximum de relâchement continuNombre maximal d'images : %d Carte supportGroupe de la carte supportSupport de diffusionMoyenneMoyenne (1152 × 872)Moyenne (bonne qualité)Moyenne 1Moyenne 2Moyenne 3Moyen JPEG finMoyenne élevéeMoyenne basseMoyen JPEG normalMoyenne élevéeSensibilité moyenneMémoire restante : %i octets Carte mémoireÉtat de la carte (%d) : %s Mémoire dans l'appareil : %d Mbit. Nom de menu personnalisé ANom de menu personnalisé BNom de menu personnalisé CNom de menu personnalisé DMenus et lectureLes métadonnée ne sont prises en charge que par les appareils MTP.Temps de mesure expiréMode de mesureFin de palier de lecteur MfPalier de lecteur Mf insuffisantMicrophoneMicrophone désactivéFeuille de calcul Microsoft Excel (.xls)Microsoft Powerpoint (.ppt)Document Microsoft WordDistance focale minimaleEffet miniatureMinimalTemps de pose minimalBibliothèque pour l'appareil Minolta Dimage V %s Gus Hartmann Remerciements à Minolta pour les spécifications .Miroir relevéSéquence avec miroir relevéParamètres divers d'exposition et d'objectifNombre manquantPosition plusieurs pointsPosition sur plusieurs point attachés à la mise au point automatiquePosition sur plusieurs points centrésIdentifiant du modèle :Modèle : Minolta Dimage V (%s) Révision de matériel : %s Révision de microcode : %s Modèle : Modèle : %s Modèle : %s Capacité : %i Mo Alimentation : %s Extinction automatique : %i min Mode : %s Images : %i/%i Affichage de la date : %s Date et heure : %s Modèle : %s Mémoire : %d octet(s) sur %d disponible(s)Modèle : %s Numéro de série : %s, Version du matériel : %i.%i Version du logiciel : %i.%i Version du logiciel de test : %i.%i Nom : %s, Fabricant : %s Modèle : %x, %x, %x, %xModèle : Kodak %s Modélisation du flashModélisation du flashModéréMoniteurRetard d'extinction du moniteurMonochromeMois/Jour/AnnéeDéplacer l'objetFilmAcquisition de filmEmplacement de carte du filmMicrophone du filmQualité du filmRésolution du filmTaille de l'écran de filmSon du filmVoix du filmRéduction du bruit multi-imagePlusieurs pointsPlusieurs pointsMesure sur plusieurs pointsPlusieurs pointsPlusieurs points de mise au point (au centre)Plusieurs points de mise au point (à gauche)Mise au point manuelle sur plusieurs points (non indiqués)Plusieurs points de mise au point (à droite)Mise au point automatique sur plusieurs pointsMultisélecteurMiroir relevéBibliothèque gPhoto2 pour Mustek MDC-800 Henning Zabel Porté pour gPhoto2 par Marcus Meissner Prise en charge des protocoles série et USB.MesCouleursNEF (brut)NEF et de baseNEF et finNEF et normalBracketing Nikon automatique régléNon reconnuNTSCParamètre « %s » NULL dans %s, ligne %iLe nom de l'appareil « %s » ne correspond à aucun appareil connuNom « %s » (%li caractères) trop long, au plus 30 caractères sont permis.Préfixe du nomNom à mettre sur la carte lors du formatage.Proche %dProche 1Proche 2Proche 3Masque du réseauNeutreSuivantNickel cadmiumNickel hydridePaysage de nuitPortrait de nuitScène de nuitVue de nuitVision nocturnePaysage de nuitScène de nuitCliché de nuitCapture 1 NikonNikon Coolpix 880 : configuration (ou préférences) de l'appareil : le zoom optique ne fonctionne pas convenablement ; les paramètres de configuration ne peuvent pas tous être correctement lus ou écrits. Par exemple, le paramétrage précis de la balance des blancs, ou le paramétrage de la langue ; placez l'appareil en mode « M » pour pouvoir paramétrer le temps de pose. Nikon Coolpix 995 : la configuration (les préférences) pour cet appareil est incomplète, contactez la liste de diffusion des développeurs de gPhoto si vous désirez contribuer à ce pilote ; la récupération des images devrait fonctionner correctement. Temps de pose du NikonMode de flash NikonViewfinder de NikonLa fonction de mise au point automatique Nikon n’a pas fonctionné.La modification de zone de mise au point automatique de Nikon ne fonctionne qu’en mode de visée par l’écran.Impossible de désactiver le mode de visée par l’écran de NikonImpossible d'activer le mode de visée par l’écran de NikonMise au point manuelle de Nikon à la limite.Pas de mise au point manuelle de Nikon trop petit.La mise au point manuelle de Nikon ne fonctionne qu’en mode de visée par l’écran.NonPas de carte CompactFlash libéréeCarte CompactFlash non détectée Pas de double diaphragmePas de données EXIF disponibles pour %s.Pas de fichier supprimé, Pas de fichier envoyé Pas de flashPas de capture possible, Pas d'indicateur de mise sous tensionPas d'interrupteur de choix de la résolutionPas de carte SD insérée. Pas de réponse de l'appareil.Impossible de trouver un fichier audio pour %sManuel de l'appareil non disponible. Pas de cartePas de carte mémoire dans l'appareil. Pas de carte.Pas de carte présenteAucune raison disponiblePas de réponse de l'appareilAucune place disponible pour acquérir de nouvelles images. Vous devez supprimer quelques images.Plus d'espace sur la carte.Aucune acquisition spécifique au fabricant AucuneAucune sélectionnéeNormalNormal Mise au point automatique normale activéeMise au point automatique sur zone normaleNon pleinePas assez d'espacePas assez de mémoire disponible sur la carte mémoirePas en mode de visée par l’écranPas en mode remplissagePas prêtNon utiliséNote : absence de carte mémoire, quelques valeurs peuvent être incorrectes Nombre d'images : %d Nombre d'images : %dNombre d'images : %d Nombre d'images : %i Version de microcode : %sHors tensionOKSous tensionErreur de communication entre l'appareil et le système d'exploitationDésactivéBureauOlympus 750 Ultra Zoom : (1) L'Olympus 750UZ a un mode de contrôle USB par le PC. Afin d'utiliser ce mode, l'appareil doit être mis en mode « USB PC control ». Pour obtenir le menu de changement de mode, allumez l'appareil, ouvrez la trappe d'accès à la carte mémoire et appuyez sur les boutons « OK » et « quickview » en les maintenant jusqu'à ce que le menu de contrôle de l'appareil apparaisse. Placez-le en mode de contrôle ; (2) si vous passez du mode « LCD » à « Moniteur » ou « Normal », n'oubliez pas de le remettre sur « Off » avant la déconnexion. Sinon vous ne pourriez plus utiliser les boutons de l'appareil. Si vous êtes bloqué dans cet état, vous devrez reconnecter l'appareil au PC et repasser LCD sur « Off ».Capture Olympus E XML La prise en charge du XML encapsulé d’Olympus n’est actuellement disponible qu’avec la prise en charge de libxml2 lors de la construction.ActivéActivé (affichage d’image exclue)Activé + suppression des yeux rougeConseils sur l'écranOui, dispositif anti yeux rougesUn coupAutomatique en une pressionSeul le dossier racine est géré, la liste des fichiers du répertoire « %s » a été demandée.Prise de vue ouverte, Ouvrir une session médiaOuvrir la sessionMode d’opérationOpération refuséeOpération annuléeQualité optimaleOptimiser l'imageOrientationAutreAutres propriétés de périphérique PTPAutres réglagesAutre commande en cours d'exécution.Hors de mise au pointPlus de mémoirePlus de mémoire : %d octets nécessaires.Plus de mémoire : %ld octets nécessaires.ExtérieurNom du propriétaireLe nom du propriétaire a changéPPALPCListe de lecture PLSAccès PTP refuséAnnuler la demande PTPAcquisition PTP déjà terminéeDonnées PTP attenduesPériphérique PTP occupéPropriété de périphérique PTP non prise en chargeErreur générale PTPErreur d'entrée sortie PTPTransfert PTP incompletFormat de code PTP incorrectFormat de propriété de périphérique PTP incorrectValeur de propriété de périphérique PTP incorrecteCode de format d'objet PTP incorrectIdentificateur d'objet PTP incorrectParamètre PTP incorrectObjet PTP père incorrectIdentifiant de stockage PTP incorrectIdentifiant de transaction PTP incorrectPas de vignette PTP présentePas de renseignements PTP corrects sur l'objetPTP fonctionnelObjet PTP protégé en écritureOpération PTP non prise en chargeParamètre PTP non pris en chargeEffacement PTP partielPropriété PTP 0x%04xRéponse PTP attendueÉchec du test PTP automatiqueSession PTP déjà ouverteSession PTP non ouverteSpécification PTP par format non prise en chargeSpécification PTP de la destination non prise en chargeVersion standard de PTP : %d.%d Pas d'espace PTP disponibleEspace PTP non disponibleMémoire PTP en lecture seuleDélai d'attente PTPOpération PTP annuléeErreur PTP non définieCode de fabricant PTP inconnuVersion de PTPPilote PTP2 © 2001-2005 par Mariusz Woloszyn . © 2003-%d par Marcus Meissner . Ce Pilote permet d'utiliser les appareils compatibles PTP ou PictBridge et les lecteur multimédia utilisant MTP (Media Transfer Protocol).Le paquet de donnée a été rejeté par l'appareil. Veuillez contacter %s.Mise au point panoramiqueMise au point panoramiqueBibliothèque gPhoto pour Panasonic DC1000 Mariusz Zynel Basée sur le programme dc1000 écrit par Fredrik Roubert et Galen Brooks .Bibliothèque gPhoto2 pour Panasonic DC1580 Mariusz Zynel Basée sur le programme dc1000 écrit par Fredrik Roubert et Galen Brooks .Mini caméscope PV-L859-K/PV-L779-K Panasonic Panasonic a introduit la technologie d'acquisition d'images appelée PHOTOSHOT pour la première fois dans cette série de mini caméscopes. Les fichiers sont stockées au format JPEG sur une carte flash interne, et peuvent être transférées par l'intermédiaire du port série intégré. Les fichiers sont enregistrées dans l'une des deux résolutions : NORMALE (320×240) ou FINE (640×480). Le capteur CCD derrière l'objectif ne possède que 300 000 pixels, et ne produit donc que des images de basse qualité.Pilote de mini caméscope Panasonic PV-L859-K ou PV-L779-K Andrew Selkirk PanoramaParamètre 1Paramètre 2Paramètre 3Jeu de paramètresÉchec d'analyse de la valeur de l'élément graphique « %s » sur 0x%04x avec %d.PartielleMesure partielleFête ou intérieurLe chemin d'accès n'est pas absoluType d'appareil perçuParamètres persistantsPortrait d'animalEffet photographieLecture des renseignements de la photographiePhotographies en filmPhotographies sur l'appareil : %d. Effet d’imageConfiguration du cadre numériqueRéglages de l'imageStyle de l'imageImagesImages dans l'appareil : %d LectureMode de visualisationLectureLecture de l'indice du conteneurLecture d'objetsPosition de lectureTaux de lectureIdentifiant PlaysForSureVitesse du portPortraitAlimentationÉteindreÉconomie d'énergiePuissance du ventÉteindre le périphériqueRetard de préacquisitionPréconfiguréPréconfiguration personnalisée 1Préconfiguration personnalisée 2Préconfiguration personnalisée 3Préconfiguration personnalisée 4Préconfiguration personnalisée 5Appuyez sur 1Appuyez sur 2Appuyez sur 3Appuyez complètementAppuyez à moitiéPrévisualisationBouton de prévisualisationBouton de prévisualisation 2Prévisualisation de vignettePrécédentProblème de téléchargement d'imageProblème à l'obtention des renseignements sur l'imageProblème à l'obtention du nombre de fichiersProblème d'ouverture de portProblème de lecture d'image sur la mémoire flashProblème de réinitialisation de l'appareilProblème de configuration de vitesse de communication avec l'appareilProblème de prise de vue en temps réelProcessus de l'objet WFCIdentifiant de produit : %02x%02x Nom du profilFlash interdit QualitéRéponse rapideTélécommande à réponse rapideTemps d'affichage rapideRelâchement silencieuxBrutRAW + JPEG de baseBrut et JPEG finBrut et JPEG normalBrut et grand JPEG finBrut et grand JPEG normalBrut et moyen JPEG finBrut et moyen JPEG normalBrut et petit JPEG finBrut et petit JPEG normalBrut 2Brut et JPEGAugmentation RVBÉtat RTC : %d Mode de bit brutCompression bruteLecture seul avec suppression d'objetLecture seuleLecture et écritureLes attributs en lecture seule (comme la hauteur et la largeur) ne peuvent être modifiés.PrêtSynchronisation au deuxième rideauSynchronisation au deuxième rideau et synchronisation lenteSynchronisation au deuxième rideauSynchronisation au deuxième rideau avec synchronisation lenteRéponse inattendue (%i). Veuillez contacter %s.Réception d'en-tête imprévu (0x%02x, 0x%02x).Réception d'en-tête inattendu (%i)Réception d'une réponse inattendueRéception des données…EnregistrementMode d’enregistrementMode d’enregistrementDestination d'enregistrementSupport d'enregistrementRougeSuppression des yeux rougeDispositif anti yeux rougesDispositif anti yeux rougesDispositif anti yeux rouges et synchronisation lenteDispositif anti yeux rouges automatiqueDispositif anti yeux rouges en appointFlash anti yeux rouges en appointDispositif anti yeux rougesDispositif anti yeux rouges avec synchronisation lenteRelâchementRelâchement et mise au pointRelâchez 1Relâchez 2Relâchez 3Relâchez complètementRelâchez à moitiéMode de relâchementDébloquer sans la carte CompactFlashDistantVersion d'API de la télécommandeMiroir relevé par la télécommandeMode télécommandeTemporisationRAM amovible (carte mémoire)ROM amovibleStroboscopiqueSignaler les articles acquisSignaler les articles ajoutés ou supprimésDemande de renseignements sur l'image %i (= 0x%x), mais renseignements sur l'image %i reçus.Réinitialiser la personnalisation 0Réinitialiser le menu personnaliséRéinitialiser le périphériqueRéinitialiser la valeur de propriété du périphériqueRéinitialisation de la mise au point au centreRéinitialisation du protocole…RésolutionInterrupteur de choix de la résolutionRésolution et tailleInverser les boutons de commandeInverser les indicateursRévocation de renseignementsPilote Ricoh ou Philips par Lutz Mueller , Martin Fischer , basé sur le pilote de Bob Paauwe Ricoh Caplio G3. Marcus Meissner Rétroconception en utilisant USB Snoopy, en observant l'image de mise à jour du microcode et en faisant des essais au hasard. DroiteAngle de rotationAttribut de rotationRotation de la scèneIdentifiant de carte SD : %s Mémoire SD : %d Mo au total, %d Mo libre. SDRAMSDRAM : Fichiers : %d Images : %4d Films : %4d Espace utilisé : %8d Espace libre : %8d SDRAMPilote de cadre numérique USB ST2205 Hans de Goede Ce pilote permet d'envoyer, recevoir et effacer des images du cadre numérique.Les cadres numériques basés sur ST2205 existent avec de nombreuses résolutions. Le pilote gPhoto pour ces périphériques permet d'envoyer, recevoir et effacer des images du cadre numérique.STV0674 Vincent Sanders Pilote pour les appareils utilisant le processeur ASIC STV0674. Protocole rétroconçu en utilisant SnoopyPro STV0680 Adam Harrison Pilote pour les appareils utilisant le processeur ASIC STV0680. Protocole rétroconçu en utilisant CommLite Beta 5 Carsten Weinholz Étendu les appareils Aiptek PenCam et autres appareils en mode double USB STM.Liste de lecture SamsungSaturationScèneMode scèneSectionRetardateur sécuriséCouleurs sélectivesCouleurs sélectivesRetardateur automatiqueRetardateurRetardateur (image suivante uniquement)Délai du retardateurNombre de prises de vue avec retardateurHeure du retardateurTest automatique du dispositifRetardateurRetardateur 10 sRetardateur 2 sDélai du retardateurEnvoyer l'objet partielEnvoyer d'une réponse de proximitéEnvoyer une requête d'enregistrementEnvoyer une requête de licence WMDRM-NDEnvoyer une requête WMDRM-PD pour l'applicationEnvoyer une commande WMDRM-PDEnvoyer une requête WMDRM-PDEnvoyer une demande de mesureEnvoyer l'objetEnvoyer des renseignements sur l'objetEnvoyer la liste des propriétés de l'objetEnvoi de données…SensibilitéIdentifiant du capteur : %d.%d SépiaSéquence de 9 imagesNuméro de sérieNuméro de série : %s Renseignements sur l'initiateur de sessionParamètres persistants de sessionRégler l'heure de la position actuelleDéfinition de zone de mise au point automatique NikonDéfinition du mode de contrôle NikonDéfinition de propriété non prise en chargeRégler l'heure de l'appareilRéglage de valeur de propriété du périphériqueDéfinir la réponse de la licenceDéfinir la liste des propriétés de l'objetDéfinir la valeur des propriétés de l'objetDéfinir la protection de l'objetDéfinir les références de l'objetRéglage 4Réglage 5Réglage 6Réglage 7OmbreOmbreBalance des blancs ombreL'appareil doit-il émettre un son à la prise de vue ?DurNettetéPlus netteDuretéPrise de vue personnaliséeNom de prise de vue personnalisée ANom de prise de vue personnalisée BNom de prise de vue personnalisée CNom de prise de vue personnalisée DMode de prise de vueVitesse de prise du vueMode de prise de vueMode de prise de vue modifiéRéglage de la prise de vueArrêtDécompte du temps de poseTemps de poseTemps de pose (en seconde)Temps de pose (en microseconde, 0 pour auto)Temps de pose 2Temps de pose en pose longueTemps de pose (en microseconde, 0 pour auto)Temps de poseTemps de pose modifiéTemps de pose ou mise au point automatique activésSiPix Web2 Marcus Meissner Pilote de contrôle de l'appareil SiPix Web2.SilhouetteUniqueUne seule zoneUn seul coupUne seule priseUn seul silencieuxUne seule prise de vueMise au point automatique avec un seul servoMise au point automatique sur une seule zoneMise au point automatique avec un seul servoPilote Sipix StyleCam Blink Vincent Sanders Marcus Meissner . Priorité de tailleMode de qualité des tailles d'imageTaille d'entrée des données vers l'appareilTaille de sortie des données depuis l'appareilAller à la position suivante de la liste de lectureLumière naturelleIntervalle du projecteur de diapositivesMode de sauvegarde emplacement 2LenteRéglage du temps de pose longSynchronisation lenteTemps de pose longSynchronisation lenteSynchronisation lenteSmal Ultrapocket Lee Benfield Pilote de contrôle des appareils Smal Ultrapocket, et versions OEM (slimshot)PetitePetit JPEG finPetit JPEG normalRégulierLissage de grande gamme dynamiqueNeigeDouxPlus DouxRévision du logiciel : %s Quelques notes à propos des appareils Epson : - certains paramètres ne sont pas configurables à distance : * le zoom ; * la mise au point ; * la configuration personnalisée de la balance des blancs ; - la configuration a été rétroconçue avec un appareil PhotoPC 3000z, au cas où le vôtre se comporterait différemment, veuillez contacter %s par courrier électronique (en anglais) Quelques notes à propos des appareils Epson : - certains paramètres ne sont pas configurables à distance : * le zoom ; * la mise au point ; * la configuration personnalisée de la balance des blancs ; - la configuration a été rétroconçue avec un appareil PhotoPC 3000z, au cas où le vôtre se comporterait différemment, veuillez contacter la liste de développement par courrier électronique (en anglais) Quelques notes à propos des appareils photographiques Olympus (et peut-être d'autres) : (1) configuration de l'appareil : une valeur équivaut à la valeur par défaut (automatique) ; (2) l'Olympus C-3040Z (et éventuellement le C-2040Z, voire d'autres) ont un mode de contrôle USB par le PC. Afin d'utiliser ce mode, l'appareil doit être mis en mode « USB PC control ». Pour obtenir le menu de changement de mode, allumez l'appareil, ouvrez la trappe d'accès à la carte mémoire et appuyez sur les boutons LCD et menu en les maintenant jusqu'à ce que le menu de contrôle de l'appareil apparaisse. Placez-le sur ON ; (3) si vous passez du mode « LCD » à « Moniteur » ou « Normal », n'oubliez pas de le remettre sur « Off » avant la déconnexion. Sinon vous ne pourriez plus utiliser les boutons de l'appareil. Si vous êtes bloqué dans cet état, vous devrez reconnecter l'appareil au PC et repasser LCD sur « Off ».Quelques notes à propos des appareils photographiques Olympus : (1) configuration de l'appareil : une valeur équivaut à la valeur par défaut (automatique) ; (2) l'Olympus C-3040Z (et éventuellement le C-2040Z, voire d'autres) ont un mode de contrôle USB par le PC. Afin d'utiliser ce mode, l'appareil doit être mis en mode « USB PC control ». Pour obtenir le menu de changement de mode, allumez l'appareil, ouvrez la trappe d'accès à la carte mémoire et appuyez sur les boutons LCD et menu en les maintenant jusqu'à ce que le menu de contrôle de l'appareil apparaisse. Placez-le sur ON ; (3) si vous passez du mode « LCD » à « Moniteur » ou « Normal », n'oubliez pas de le remettre sur « Off » avant la déconnexion. Sinon vous ne pourriez plus utiliser les boutons de l'appareil. Si vous êtes bloqué dans cet état, vous devrez reconnecter l'appareil au PC et repasser LCD sur « Off ».Bibliothèque pour les appareils Sonix Theodore Kilgore Appareil Sonix. %i image y est contenue. Appareil Sonix. %i images y sont contenues. Capture SonyPrise en charge des appareils numériques Sony DSC-F1 M. Adam Kendall Basé sur l'interface ligne de commande chotplay de Ken-ichi Hayashi Adaptation à gPhoto2 réalisée par Bart van Leeuwen Bibliothèque gPhoto pour Sony DSC-F55/505 Prise en charge du Sony MSAC-SR1 et du Memory Stick utilisé par le DCR-PC100 Version initiale écrite par Mark Davies Adaptation à gPhoto2 réalisée par Raymond Penners L'initialisation de cet appareil ne fonctionne pas. Veuillez le signaler.La propriété « %s » sur 0x%04x est actuellement en lecture seule.Cet appareil Canon ne prend pas en charge l'initiation de Canon CaptureCet appareil ne prend pas en charge Capture EOS CanonCet appareil Canon ne prend pas en charge le mode Canon viewfinderCet appareil Canon ne prend pas en charge Canon CaptureCet appareil Nikon n'a pas l'air de renvoyer une image JPEG en mode de visée par l’écranCet appareil Nikon ne prend pas en charge le mode de visée par l’écranCet appareil ne prend pas en charge l'acquisition NikonCet appareil ne prend pas en charge l'acquisition génériqueSonPilote Soundvision Vince Weaver Espace restant : haute : %d, moyenne : %d, basse : %d espagnolLa vitesse %i n'est pas autorisée.Les vitesses supérieures à 57600 ne sont pas possibles pour envoyer vers l'appareilSportsSports et actionSpotMesure de positionMesure de position associée au cadre de mise au point automatiqueMode de mesure de pointMesure de positionPoint de mesure associé au cadre de mise au point automatiqueMise au point automatique sur un pointStandardParamètre standard de développementDémarrer l’enregistrement de filmDémarrageDémarrage et arrêtÉchec de l'étape nº 2 d'initialisation. (%i octets renvoyés, %i attendus). Appareil non opérationnel.Échec de l'étape nº 2 d'initialisation : (« %s » en lecture de %i). Appareil non opérationnel.Échec de l'étape nº 3 d'initialisation. (%i renvoyé, %i attendu). Appareil non opérationnel.Échec de l'étape nº 3 d'initialisation : « %s » en lecture de %i. Appareil non opérationnel.Échec de l'étape nº 3 d'initialisation : « %s » en écriture sur %i. Appareil non opérationnel.Échec de l'étape nº 4 (%i renvoyé, %i attendu). Appareil non opérationnel.Échec de l'étape nº 4 : « %s » en lecture de %i. Appareil non opérationnel.Mode d’acquisition de clichéImage fixeErreur de stroboscope.Mise au point automatique avec suivi d'objetRésumé pour Mustek MDC800 : Coucher de soleilSuper macroTrès fineAutomatique supérieurPropriétés de la prise en charge d'objet MTP : Taille de vignette prise en chargePanorama glisséÉteindre l'appareilSynchronisation des partenairesSynchroniser la date et l'heure de l'appareil avec celles de l'ordinateurSynchroniser les données et date d'image avec l'ordinateurErreur système.TFTTFT et PCTIFF (RVB)TTLTVRéglage du verrouillage télévisionFormat de sortie TVLa valeur de cible n’est pas dans l’énumération.Téléobjectif continu, priorité à l’exposition automatiqueMettre fin à l'acquisition ouverteTest de différentes vitesses…Le navigateur de répertoire « camera » permet d'indexer les photographies sur disque.L'appareil JD11 fonctionne relativement bien avec ce pilote. Une interface RS232 à 115 kbit/s est nécessaire au transfert d'images. Le pilote permet d'obtenir les : - vignettes (format PGM 64×48 ormat) - images complètes (format PPM 640×480) L'appareil Kodak DC120 utilise le format de fichier KDC pour enregistrer les images. Pour visualiser les images téléchargées de l'appareil, vous devrez télécharger le programme « kdc2tiff ». Il est disponible en http://kdc2tiff.sourceforge.netLe pilote pour Samsung digimax 800k driver a été écrit pour gPhoto par James McKenzie . Lutz Müller l'a porté pour gPhoto2. Marcus Meißner l'a corrigé et amélioré.Le niveau de la batterie est trop faible (%d %%). Opération annulée.L'appareil n'a pas pu être contacté. Veuillez vérifier qu'il est connecté à l'ordinateur et allumé.L'appareil a refusé la commande.L'appareil n'accepte pas le nom de fichier « %s ».Cet appareil ne ne permet pas la vitesse %i.L'appareil vient de renvoyer une erreur inconnue. Veuillez signaler cela à l'équipe de développement %s en expliquant comment reproduire cette erreur : (0x%x,0x%x). Merci d'avance.L'appareil a envoyé plus d'octets que prévu (%i)L'appareil n'a envoyé que %i octet(s), mais %i sont nécessaires.Le fichier à envoyer est de longueur nulleLa longueur du fichier ne doit pas dépasser 12 caractères (« %s » contient %i caractères).Ce système de fichiers ne permet pas l'envoi de fichiers.Ce système de fichiers ne permet pas la récupération d'informations sur les fichiersCe système de fichiers ne permet pas de récupérer des fichiersCe système de fichiers ne permet pas de récupérer d'informations sur le type de stockageCe système de fichiers ne permet pas de modifier les informations sur les fichiersLe premier octet reçu (0x%x) n'est pas valable.Le chemin d'accès « %s » n'est pas absolu.La propriété « %s » sur 0x%04x n'était pas définie (0x%04x : %s)La propriété « %s » sur 0x%04x n'était pas définie (0x%04x : %s).Le type de port demandé (%i) n'est pas géré par ce pilote.Des fichier sont toujours présents dans le répertoire « %s/%s » que vous essayez d'effacer.Des sous-répertoires sont toujours présents dans le répertoire « %s/%s » que vous essayez d'effacer.Deux réglages de résolution sont possibles : 352×288 et 176×144. Les données photographiques sont au format JPEG au téléchargement, leur taille n'est donc pas prédéterminée. Par conséquent, le nombre maximal de photographies annoncé n'est qu'une approximation. Toutes les options de gPhoto2 fonctionneront, sauf les suivantes qui ne sont pas prises en charge par le matériel. Options non prises en charge : Suppression de photographies individuelles ou sélectionnées (gphoto2 -d) Acquisition (gphoto2 --capture ou --capture-image) Cependant, l'acquisition est possible en utilisant l'interface webcam, prise en charge par le module de noyau spca50x. L'interface graphique utilisant GTKam a été testée et fonctionne. Cependant, l'appareil ne produit pas de vignette séparée. Puisque les images sont de toute façon déjà petites et en basse résolution, le pilote télécharge simplement l'image actuelle pour l'utiliser en vignette. L'appareil permet d'acquérir en mode « extrait vidéo ». Les clichés sont enregistrées comme une succession d'image. L'utilisateur peut ensuite les animer avec (par exemple) la fonction « animate » d'ImageMagick. Plus de précisions sur les fonctions de cet appareil photographique sont disponibles dans libgphoto2/camlibs/clicksmart310/README.clicksmart310. Une opération est actuellement en cours. Cet appareil n'en gère qu'une seule de façon concurrente, Veuillez attendre la fin de l'opération en cours.De l'espace est disponible pour soit : %d images en compression faible ; %d images en compression moyenne ; %d images en compression élevé Cet appareil ne permet pas l'acquisition de prévisualisations.Cet appareil ne permet pas l'acquisition.Cet appareil ne permet pas de déclencher l'acquisition.Cet appareil contient une puce Jeilin JL2005%c. Le nombre de photographies contenues est %i Cet appareil contient une puce Jeilin JL2005A. Le nombre de photographies contenues est %i Cet appareil ne fournit pas de manuel.Cet appareil ne fournit pas d'option de configuration.Cet appareil ne fournit aucun renseignement sur le pilote.Cet appareil n'est pas configurable.Cet appareil ne permet pas d'utiliser de résumé.Ce pilote permet de gérer les appareils avec une puce Jeilin JL2005B, C ou D. Ces appareils ne permettent pas la suppressions de photographies, ni l'envoi de données. Si possible avec l'appareil, les images d'extraits vidéo sont téléchargés comme une séquence d'images consécutives. Pour obtenir plus de précisions, veuillez consulter libgphoto2/camlibs/README.jl2005c Ce pilote permet de gérer les appareils avec une puce Jeilin jl2005a. Ces appareils ne permettent pas la suppressions de photographies, ni l'envoi de données. Le décodage de photographies décompressées pourraient ne pas bien fonctionner et ne fonctionne pas aussi bien sur tous les appareils pris en charge. Si possible avec l'appareil, les images d'extraits vidéo sont téléchargés comme une séquence d'images consécutives. Pour obtenir plus de précisions, veuillez consulter libgphoto2/camlibs/README.jl2005a Ce pilote prend en charge les appareils avec une puce Mars MR97310 (et les équivalent directs « Pixart PACx07 »). Ces appareils ne permettent pas la suppressions de photographies, ni l'envoi de données. Le décodage de photographies décompressées pourraient ne pas bien fonctionner et ne fonctionne pas aussi bien sur tous les appareils pris en charge. Le traitement de données de l'Argus QuickClix n'est PAS GÉRÉ Si possible avec l'appareil, les images d'extraits vidéo sont téléchargées comme une séquence d'images consécutives. Pour obtenir plus de précisions, veuillez consulter libgphoto2/camlibs/README. Ce pilote permet d'utiliser certains appareils dotés d'une puce Sonix sn9c2028. Il gère les options suivante : - les vignettes pour une interface graphique ; - les images au format PPM ; - la suppression de toutes les images ; - la suppression de la dernière image (les appareils Sonix ne permettent pas tous de le faire) ; - l'acquisition d'images par l'appareil (de même). S'il y en a sur l'appareil, les extraits vidéos sont téléchargés comme images consécutives ou fichier AVI suivant le modèle. Les vignettes des vidéos AVI sont prise de la première image. Une seule image ne peut pas être supprimé sauf si c'est la dernière. C'est le pilote pour les appareils Canon PowerShot, Digital IXUS, IXY Digital et EOS Digital en mode natif (parfois appelé « normal »). Ce pilote peut aussi être utilisé avec quelques caméras numériques Canon permettant de prendre des clichés. Il contient le code de communication par port série ou USB, mais pas encore pour la connexion Firewire (IEEE 1394). Il est conçu pour fonctionner avec plus de 70 modèles aussi anciens que le PowerShot A5 et le Pro70 de 1998 et des plus récents comme le PowerShot A510 et l'EOS 350D de 2005. Il n'a pas été vérifié avec les modèles EOS 1D et EOS1Ds. Pour l'appareil A50, une vitesse de 115200 bps peut rendre les opérations plus lentes qu'à 57600 bps. Si vous remarquez beaucoup d'erreurs de transmission, essayer de minimiser l'activité des disques (en fermant tous les programmes non nécessaires par exemple). Cette bibliothèque a été testée avec un appareil Kodak DC 215 Zoom. Elle devrait également fonctionner avec les appareils DC 200 et DC 210. Si vous possédez un de ces appareils, veuillez envoyer un message à koltan@gmx.de pour signaler d'éventuels problèmes avec cette bibliothèque ou si tout fonctionne correctement.Cette prévisualisation n'existe pas.VignetteHauteur de la vignette : %d Taille de la vignette : %d Largeur de la vignette : %d Effet maquetteFormat de l'heureHeure : %a %d %b %Y %T IntervallomètreIntervalle de prise de vue pour l'intervallomètreNombre d'image pour l'intervallomètreDélai d'attente dépassé même après deux nouvelles tentatives. Veuillez contacter %s.RetardateurRetardateur pour une seul prise de vueRetardateur avec télécommandeRetardateur de 10 secondesRetardateur de 2 secondesCorrection des tonsTrop clairTrop sombreTrop de tentatives infructueuses.HautTopfield TF5000PVR Marcus Meissner Bibliothèque pour télécharger et envoyer des fichiers de Topfield PVR. Porté depuis puppy © Peter Urbanec Toshiba David Hogue Pilote Toshiba pdr-m11. Nombre total d'utilisations du flash : %d Nombre total de prises de vue : %d, utilisation du flash : %d Nombre total d'images prises : %d La transmission du paquet a échoué après %i essais. Veuillez contacter %s.La transmission a échoué après deux essais. Abandon…Tronquer l'objetTentative de contact de l'appareil…Ajuster la température de couleurAjuster la préconfiguration 0Ajuster la préconfiguration 1Ajuster la préconfiguration 2Ajuster la préconfiguration 3Ajuster la préconfiguration 4TungstèneBalance des blancs tungstèneMode turboTvType de diaporamaU1U2Langue de l'interface utilisateurVerrouillage d’interface utilisateurType de verrouillage d'interface utilisateurTemps UNIXUSB 1.1USB 2.0Vitesse du port USBNon assignéIndéfinieAudio non définieObjet non défini dans le calendrierCollection non définieContact non définiDocument non définiMessage non définiPropriété PTP non définieVidéo non définieExécutable Windows non définiAu-dessous > MTRSous-marinInconnueInconnue %dCommande inconnueErreur inconnue dans la bibliothèque de l'appareilErreur inconnueErreur inconnue.Type de fichier %i inconnu.Mode de flash %d inconnu, Modèle inconnuModèle « %s » inconnuValeur inconnueValeur %04d inconnueValeur %04x inconnueValeur inconnu (0x%04x)Mode de zoom %d inconnu inconnu(%04x)Inconnu : 0x%04x Réponse non reconnueCarte non convenableCommandes non prises en charge.Type %i = 0x%x de port donné non pris en charge. Initialisation impossible.Type de port non géré : %d. Ce pilote ne fonctionne qu'avec des appareils USB. InutiliséMettre à jour le microcode de l'appareilURL d'envoiLe téléchargement est géré uniquement dans le répertoire « %s »Chargement du fichier…Téléchargement de l'image…Envoi de l'image : %s.Envoi…Haute 1Haute 2Téléchargement annulé par l'utilisateurDéfini par d'utilisateur 1Défini par d'utilisateur 2Défini par d'utilisateur 3Extension du fabricantDescription du fabricant : %s Identifiant du fabricant : 0x%x (%d.%d) Identifiant du fabricant : %02x%02x Version : Version : %s Mise au point automatique verticale activéeMode vidéoSortie vidéoSortie vidéoGrille viewfinderAfficher la grille viewfinderHorizon virtuel de viewfinderContrôle des vignettesVividParamètres temporairesNiveau sonoreBalance des blancs du bracketingWEP 128 bitsWEP 64 bitsESSID du Wi-FiCanal Wi-FiProfils Wi-FiListe de lecture WPLAttente de la fin de l'opération…Attente…Affichage d'avertissementAlerte niveau 0Alerte niveau 1État d'alertecanon_usb_set_file_attributes : canon_usb_dialogue renvoie un état d'erreur 0x%08x de l'appareilEau0x%x était attendu mais 0x%x a été reçu. Veuillez contacter %s.FaibleBalance des blancsBalance des blancs pré-configuré 0Balance des blancs pré-configuré 1Balance des blancs pré-configuré 2Balance des blancs pré-configuré 3Balance des blancs pré-configuré 4Nombre de Balance des blancs pré-configuréProgramme de balance des blancs du bracketPalier de balance des blancs du bracketTempérature de couleur de balance des blancsNom 0 de préconfiguration de balance des blancsNom 1 de préconfiguration de balance des blancsNom 2 de préconfiguration de balance des blancsNom 3 de préconfiguration de balance des blancsNom 4 de préconfiguration de balance des blancsNuméro de préconfiguration de balance des blancsValeur 0 de préconfiguration de balance des blancsValeur 1 de préconfiguration de balance des blancsValeur 2 de préconfiguration de balance des blancsValeur 3 de préconfiguration de balance des blancsValeur 4 de préconfiguration de balance des blancsTableau blancBalance des blancsTableau blancBalance des blancsBalance des blancsBalance des blancs ajustement ABalance des blancs ajustement BBalance des blancs X ABalance des blancs X BErreur de réinitialisation de balance des blancsLargeMise au point automatique sur zone largeFormat d'image WindowsSynchronisation sans filÉcritureProtection en écritureMauvaise séquence d'échappement : 0x%02x attendu, 0x%02x reçu.Document XMLAAAA/MM/JJAnnée/Mois/JourOuiVous avez essayé d'effacer « %s » du répertoire « %s », mais le système de fichiers ne permet pas l'effacement de fichiers.Vous devez indiquer un port avant d'initialiser l'appareil.Il faut être en mode enregistrement pour acquérir des images.Vous devez indiquer un répertoire commençant par /store_xxxxxxxxx/Le ClickSmart 310 de Logitech contient %i photographie. Le ClickSmart 310 de Logitech contient %i photographies. L'appareil USB a une puce S&Q Le nombre total d'images prises est %i Certaines d'entre elles pourraient être des extraits vidéo contenant plusieurs images L'appareil photographique USB a une puce Aox. Nombre d'images basse résolution = %i Nombre d'images haute résolution = %i Nombre d'images = %i Cet appareil USB est un Kodak EZ200. Le nombre de photographies prises est %i L'appareil USB est un iClick 5X. Le nombre d'images prises est %i Cet appareil USB semble être un LG GSM. Microcode : %s Version de microcode : %s Le cadre numérique USB a une puce AX203 Le cadre numérique USB a une puce ST2205 L'appareil ne permet que la suppression du dernier fichier de l'appareil. Dans ce cas, c'est le fichier « %s ».Zone de mise au point (proche)Zone de mise au point (gros plan)Zone de mise au point (loin)Zone de mise au point (moyen)Zone de mise au point (réservé 1)Zone de mise au point (réservé 2)Zone de mise au point (réservé 3)Zone de mise au point (réservé 4)Zone de mise au point (très proche)ZoomZoom (en millimètre)Niveau de zoom modifiéZoom : 29 mm Zoom : 34 mm Zoom : 41 mm Zoom : 51 mm Zoom : 58 mm Zoom : macro secteuragfa_cl20 L'équipe du pilote Linux Agfa CL20 Écrivez-nous à cl20@poeml.de Venez sur http://cl20.poeml.de automatiqueautomatique et suppression de l'effet yeux rougesbatterienoir et blancpose longueappareil inactif depuis plus de 9 secondes, réinitialisation. impossible d'être demandé. canon_int_capture_image : échec de canon_usb_list_all_dirs() final avec l'état %icanon_int_capture_image : échec de canon_usb_list_all_dirs() initial avec l'état %licanon_int_get_info_func : erreur : message initial trop court (%i < minimum %i)canon_int_list_directory : erreur : message initial trop court (%i < minimum %i)canon_int_list_directory : fin du paquet atteinte en examinant la première entré du répertoireanon_int_list_directory : rencontre d'une entrée de répertoire tronquéecanon_serial_get_dirents : impossible d'allouer %i octets de mémoirecanon_serial_get_dirents : impossible de modifier la taille du tampon dirent à %i octetscanon_serial_get_dirents : impossible de lire une autre entrée de répertoirecanon_serial_get_dirents : paquet dirent initial trop petit (seulement %i octets)canon_serial_get_dirents : trop d'entrées, probablement en boucle.canon_serial_get_dirents : entrée de répertoire tronquée reçuecanon_serial_get_dirents : canon_serial_dialogue n'a pas réussi à obtenir les entrées du répertoirecanon_usb_get_body_id : longueur de données renvoyée inattendue (%i octets, %i attendus)canon_usb_get_dirents : impossible de faire tenir la charge dans le tampon, « %.96s » (tronqué) trop long.canon_usb_get_dirents : échec de récupération des entrées de répertoires par canon_usb_long_dialogue, %i renvoyécanon_usb_list_all_dirs : impossible de faire tenir la charge dans le tampon, « %.96s » (tronqué) trop long.canon_usb_list_all_dirs : échec de récupération des entrées de répertoires par canon_usb_long_dialogue, %i renvoyécanon_usb_lock_keys : longueur renvoyée inattendue (%i octets, %i attendus)canon_usb_lock_keys : longueur inattendue renvoyée par la fonction « lock keys » (%i octets, %i attendus)canon_usb_set_file_attributes : échec de canon_usb_dialoguecanon_usb_unlock_keys : longueur renvoyée inattendue (%i octets, %i attendus)couleurBibliothèque coolshot vimpossible de modifier le nom du propriétaireimpossible de mettre à l'heureéconomique externeéquilibrerfinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 Ce logiciel a été créé à l'aide de renseignements propriétaires appartenant à StarDot Technologies. Auteur : Brian Beattie Contributeurs : Chuck Homic Conversion des images brutes de l'appareil en RVB Dan Fandrich Renseignements sur le protocole, format d'images brutes, portage gPhoto2 Bibliothèque gsmart300 Till Adam Jérôme Lodewyck Prise en charge des appareils Mustek gSmart 300 basée sur plusieurs autres modules camlib gPhoto2 et les spécifications gentiment fournies par Mustek. haute (640×480)compression élevée, hp215 Marcus Meissner Pilote pour accéder à l'appareil HP Photosmart 215. Adapté du programme hp215. Ce pilote permet de télécharger, prévisualiser et supprimer des images. pilote iClick 5X Theodore Kilgore iTTLen mode remplissageInfiniinterneBibliothèque jamcam vBibliothèque d'appareils jl2005a Theodore Kilgore Bibliothèque d'appareils jl2005bcd Theodore Kilgore échec du verrouillage des touches.aucune perte de qualitébasse (320×240)compression faible, mRAWmRAW et grand JPEG finmRAW et grand JPEG normalmRAW et moyen JPEG finmRAW et moyen JPEG normalmRAW et petit JPEG finmRAW et petit JPEG normalcompression moyenne, menuPas de signalement d'état.AucunnormaleIndisponible : %sdésactivéactivéactivé et suppression de l'effet yeux rougessur batteriepccam600 init : erreur inattendue : gp_port_read a renvoyé %d au lieu de %dpccam600_close : la valeur de retour est %d au lieu de %dpccam600_get_file : indice %d, alors qu'un indice supérieur à %d était attendupccam600_init : %d blocs attendus, %d reçuspccam600_init : plus de %d blocs attendus, %d reçuslecturealimentation : bonnealimentation : mauvaiselecture seulelecture et écritureprêtenregistrementLes appels récursifs ne sont pas gérées par le pilote sierra. Veuillez contacter %s.dispositif anti yeux rouges désactivé. dispositif anti yeux rouges activé. Supprimer l'effet yeux rougessRAWsRAW et grand JPEG finsRAW et grand JPEG normalsRAW et moyen JPEG finsRAW et moyen JPEG normalsRAW et petit JPEG finsRAW et petit JPEG normalsRVBsRVB (nature)sRVB (portrait)Bibliothèque sierra SPARClite Scott Fritzinger Prise en charge des appareils numériques basés sur les composants sierra dont les Olympus, Nikon, Epson, et Pentax. Merci à Data Engines (www.dataengines.com) pour l'utilisation de leur implémentation de la prise en charge de l'USB pour Olympus C-3030Z.Bibliothèque spca50x vPilote générique sq905 Theodore Kilgore Pilote générique sq905C Theodore Kilgore standardtrès finesx330z ne gère que l'USBmise à l'heureImpossible de déterminer la valeur CRC initiale indéfinietype de données %i inattenduinconnu (0x%02x)compression inconnue %d, résolution inconnu %d) vCalendar1vCalendar2vCard2vCard3Avertissement : CRC non vérifié (ajout longueur %d, valeur 0x%04x) ######################### libgphoto2-2.5.9/po/de.po0000644000175000001440000122013412623156272012074 00000000000000# German Translation of libgphoto2. # Copyright © 2000-2002 Scott Fritzinger et al. # # [Please leave these here: öäüßÖÄÜ] # # Lutz Müller , 2000. # Colin Marquardt , 2001, 2002. # Marcus Meissner , 2003, 2004, 2005, 2006, 2007, 2008, 2009. 2010, 2011, 2012, 2013, 2014. # Christian Kirbach , 2015. msgid "" msgstr "" "Project-Id-Version: libgphoto2 master\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2015-10-03 23:37+0200\n" "Last-Translator: Christian Kirbach \n" "Language-Team: gnome-de \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-SourceCharset: UTF-8\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" "Adc65\n" "Benjamin Moos " #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" "Kamera scheint keinen CompactFlash Speicher zu benutzen.\n" "Dies wird derzeit noch nicht unterstützt.\n" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "Kamera hat %d Bilder aufgenommen und benutzt CompactFlash Speicher.\n" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "Die Agfa CL20 Linux Treiber Schreiber!\n" "****Email an cl20@poeml.de***\n" "*Besuchen Sie uns auf http://cl20.poeml.de/*" #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "Ihre USB Kamera hat einen Aox Chipsatz.\n" "Anzahl kleiner Bilder = %i\n" "Anzahl großer Bilder = %i\n" "Anzahl Bilder = %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Generischer Aox Treiber\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "Der USB-Bilderrahmen hat einen AX203 Chipsatz.\n" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 msgid "Picture Frame Configuration" msgstr "Konfiguration des Bilderrahmens" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "Synchronisiere Datum und Zeit des Rahmens mit dem PC" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "Anzahl der Bilder: %i\n" "Firmware-Version: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Rückentwicklung der Bilddaten von\n" "Jeff Laing \n" "\n" "Implementiert mit Hilfe von Dokumenten\n" "aus dem Web. Mit Erlaubnis von Vision." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "Konnte Ordner »%s« nicht anlegen." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "Konnte Ordner »%s« nicht löschen." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "könnte Tasten nicht sperren." #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*UNBEKANNT*" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image: erste canon_usb_list_all_dirs() fehlgeschlagen mit " "status %li" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image: finalletzte canon_usb_list_all_dirs() " "fehlgeschlagen mit status %i" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "Name »%s« (%li Zeichen) ist zu lang, maximal 30 Zeichen erlaubt." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "Kleingeschriebene Buchstaben sind in %s nicht erlaubt." #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory: ERROR: erste Meldung zu kurz (%i < minimum %i)" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_directory: Ende des Pakets erreicht als erstes Ordnerelement " "untersucht wurde" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "canon_int_list_directory: verkürzte Ordnerelemente gefunden" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Datei geschützt." #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_get_info_func: ERROR: erste Meldung zu kurz (%i < minimum %i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "Könnte JPEG Vorschaubild von Daten nicht ausziehen: keine Anfang/Ende" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "" "Könnte JPEG Vorschaubild von Daten nicht ausziehen: Daten sind nicht JFIF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "NULL Parameter \"%s\" in %s, Zeile %i" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "Kann den Porttypen %i aka 0x%x in %s Zeile %i nicht behandeln." #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "Fataler Fehler: Initialier CRC Wert für Länge %d unbekannt.\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "Kann initialien CRC Wert nicht raten.\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "Warnung: CRC nicht verglichen (Länge %d, Wert 0x%04x) " "##########################\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "Kompatibilitätsmodus" #: camlibs/canon/library.c:98 msgid "Thumbnail" msgstr "Vorschau" #: camlibs/canon/library.c:99 msgid "Full Image" msgstr "Vollbild" # Langzeitbelichtung? #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "Langzeitbelichtung" #: camlibs/canon/library.c:216 msgid "Auto focus: one-shot" msgstr "Autofokus: einmal" #: camlibs/canon/library.c:217 msgid "Auto focus: AI servo" msgstr "Autofokus: kontinuierlich" #: camlibs/canon/library.c:218 msgid "Auto focus: AI focus" msgstr "Autofokus: AI Fokus" #: camlibs/canon/library.c:219 msgid "Manual focus" msgstr "Manueller Fokus" #: camlibs/canon/library.c:224 msgid "Beep off" msgstr "Ton aus" #: camlibs/canon/library.c:225 msgid "Beep on" msgstr "Ton an" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 msgid "Flash off" msgstr "Blitz aus" #: camlibs/canon/library.c:231 msgid "Flash on" msgstr "Blitz an" #: camlibs/canon/library.c:232 msgid "Flash auto" msgstr "Blitz automatisch" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "AUTO" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "P" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "Tv" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "Av" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "M" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "A-DEP" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "M-DEP" #: camlibs/canon/library.c:267 msgid "Manual 2" msgstr "Manuell 2" #: camlibs/canon/library.c:268 msgid "Far scene" msgstr "Entfernte Szene" #: camlibs/canon/library.c:269 msgid "Fast shutter" msgstr "Schnelle Belichtung" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "Langsame Belichtung" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "Nachtlandschaft" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "Graustufen" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Sepia" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 msgid "Portrait" msgstr "Portrait" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Punkt" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Makro" #: camlibs/canon/library.c:277 msgid "BW" msgstr "S/W" #: camlibs/canon/library.c:278 msgid "PanFocus" msgstr "Pan Fokus" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "Lebhaft" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 msgid "Neutral" msgstr "Neutral" #: camlibs/canon/library.c:282 msgid "Long shutter" msgstr "Lange Auslösung " #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "Super Macro" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "Gebüsch" #: camlibs/canon/library.c:285 msgid "Indoor" msgstr "Innenraum" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "Feuerwerk" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "Strand" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "Unterwasser" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "Schnee" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "Kinder und Tiere" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "Nachtschnapschuss" #: camlibs/canon/library.c:292 msgid "Digital macro" msgstr "Digital Macro" #: camlibs/canon/library.c:293 msgid "MyColors" msgstr "MyColors" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "Foto im Film" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "RAW" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "RAW 2" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "Small Normal JPEG" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "Small Fine JPEG" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "Medium Normal JPEG" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "Medium Fine JPEG" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "Large Normal JPEG" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "Large Fine JPEG" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "RAW + Small Normal JPEG" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "RAW + Small Fine JPEG" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "RAW + Medium Normal JPEG" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "RAW + Medium Fine JPEG" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "RAW + Large Normal JPEG" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "RAW + Large Fine JPEG" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" "Dies ist der Treiber für Canon PowerShot, Digital IXUS, IXY Digital,\n" "und EOS Digtial Kameras in ihrem nativem Modus (manchmal auch als \"normal\" " "bezeichnet)\n" "Es unterstützt auch eine kleine Anzahl von digitalen Canon Kamerarekordern " "mit Fotofähigkeiten.\n" "Es beinhaltet Programmcode zur Kommunikation über serielle Ports oder USB " "Verbindungen,\n" "und später evt über IEEE 1394 (FireWire).\n" "Der Treiber arbeitet mit über 70 Modellen bis hin zur PowerShot A5\n" "und Pro70 (1998) und bis hin zur PowerShot A510 und EOS 350D von 2005.\n" "Es wurde nicht mit der EOS 1D oder EOS 1Ds getestet.\n" "Für die A50, benutzen von 115200 bps kann evt. schneller sein als 57600.\n" "Wenn viele serielle Transmissionsfehler auftreten, probieren sie den Rechner " "so idle wie möglich zu haben (z.B. keine Plattenaktivität)\n" #: camlibs/canon/library.c:497 #, c-format msgid "Camera unavailable: %s" msgstr "Kamera nicht verfügbar: %s" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Schalte Kamera aus" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Fehler beim Aufnehmen des Bildes" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Konnte Plattennamen nicht holen: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Kein Grund verfügbar" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Konnte Platteninfo nicht holen: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "Interne Fehler nr.1 in get_file_func() (%s Zeile %i)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "Keine Tondatei für »%s« konnte gefunden werden." #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " Laufwerk %s\n" " %11s bytes gesamt\n" " %11s bytes verfügbar" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "Netzadapter " #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "mit Batterie " #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "Energieversorgung OK" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "Energieversorgung nicht OK" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "nicht verfügbar: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (Zeit am PC %s%i Sekunden)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Kameraidentifizierung:\n" " Modell: %s\n" " Eigentümer: %s\n" "\n" "Energiestatus: %s\n" "\n" "Flash Disk-Information:\n" "%s\n" "\n" "Zeit: %s\n" #: camlibs/canon/library.c:1145 msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Canon PowerShot-Treiber von \n" "Wolfgang G. Reissnegger,\n" "Werner Almesberger,\n" "Edouard Lafargue,\n" "Philippe Marzouk,\n" "A5-Zusätze von Ole W. Saastad\n" "Weitere Verbesserungen von:Holger Klemm\n" "Stephen H. Westin" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Fehler beim Löschen der Datei" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Fehler beim Löschen des zugehörigen Vorschaubildes" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "" "Raten über 57600 sind mit dieser Kamera nicht für das Hochladen unterstützt" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Konnte keinen Laufwerksbuchstaben für das Flash-Laufwerk bekommen" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "Kann nicht Hochladen, kein freier Ordnername verfügbar!\n" "Der Ordnername 999CANON existiert und enthält eine Datei namens AUT_9999.JPG." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Konnte Ordner \\DCIM nicht anlegen." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Konnte Zielverzeichnis nicht anlegen." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "Kamera- und Treiber-Konfiguration" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Kameraeinstellungen" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 msgid "Owner Name" msgstr "Eigentümername" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 msgid "Capture Size Class" msgstr "Aufnahme Grössen Klasse" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "ISO-Empfindlichkeit" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "Unbekannt" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 msgid "Shooting mode" msgstr "Aufnahmemodus" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 msgid "Shutter Speed" msgstr "Belichtungszeit" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "Zoom" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "Blende" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Belichtungskorrektur" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 msgid "Image Format" msgstr "Bild Format" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Fokusmodus" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Blitzmodus" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Ton" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 msgid "Camera Actions" msgstr "Kameraaktionen" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "Kamera Datum und Zeit mit dem PC synchronisieren" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 msgid "Camera Status Information" msgstr "Statusinformationen der Kamera" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "Kameramodell" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Datum und Zeit" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Fehler" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 msgid "Firmware Version" msgstr "Firmware-Version" #: camlibs/canon/library.c:1956 msgid "Power" msgstr "Netzanschluss" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Treiber" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Alle Dateien auflisten" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Dateinamen beim Hochladen beibehalten" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Kamera nicht verfügbar" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Eigentümername geändert" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "Konnte Eigentümernamen nicht ändern" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "Aufnahmeart geändert" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "Ungültige Aufnahmeart" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "Ungültige ISO-Empfindlichkeit" #: camlibs/canon/library.c:2056 msgid "ISO speed changed" msgstr "ISO-Empfindlichkeit geändert" #: camlibs/canon/library.c:2058 msgid "Could not change ISO speed" msgstr "ISO-Empfindlichkeit konnte nicht geändert werden" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "Ungültiger Aufnahmemodus" #: camlibs/canon/library.c:2085 msgid "Shooting mode changed" msgstr "Aufnahmemodus geändert" #: camlibs/canon/library.c:2087 msgid "Could not change shooting mode" msgstr "Konnte Aufnahmemodus nicht ändern" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "Ungültige Belichtungszeit" #: camlibs/canon/library.c:2114 msgid "Shutter speed changed" msgstr "Belichtungszeit geändert" #: camlibs/canon/library.c:2116 msgid "Could not change shutter speed" msgstr "Konnte Belichtungszeit nicht ändern" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 msgid "Invalid aperture setting" msgstr "Ungültige Blende" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 msgid "Aperture changed" msgstr "Blende geändert" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 msgid "Could not change aperture" msgstr "Konnte Blende nicht ändern" #: camlibs/canon/library.c:2167 msgid "Invalid exposure compensation setting" msgstr "Ungültige Belichtungskorrektur" #: camlibs/canon/library.c:2170 msgid "Exposure compensation changed" msgstr "Belichtungskorrektur geändert" #: camlibs/canon/library.c:2172 msgid "Could not change exposure compensation" msgstr "Konnte Belichtungskorrektur nicht ändern" #: camlibs/canon/library.c:2194 msgid "Invalid image format setting" msgstr "Ungültiges Bildformat" #: camlibs/canon/library.c:2198 msgid "Image format changed" msgstr "Bildformat geändert" #: camlibs/canon/library.c:2200 msgid "Could not change image format" msgstr "Konnte Bildformat nicht ändern" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "Ungültiger Fokusmodus" #: camlibs/canon/library.c:2226 msgid "Focus mode changed" msgstr "Fokusmodus geändert" #: camlibs/canon/library.c:2228 msgid "Could not change focus mode" msgstr "Konnte Fokusmodus nicht ändern" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "Ungültiger Tonmodus" #: camlibs/canon/library.c:2255 msgid "Beep mode changed" msgstr "Tonmodus geändert" #: camlibs/canon/library.c:2257 msgid "Could not change beep mode" msgstr "Konnte Tonmodus nicht ändern" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "Zoomwert geändert" #: camlibs/canon/library.c:2276 msgid "Could not change zoom level" msgstr "Konnte Zoom nicht ändern" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "Ungültiger Blitzmodus" #: camlibs/canon/library.c:2332 msgid "Flash mode changed" msgstr "Blitzmodus geändert" #: camlibs/canon/library.c:2334 msgid "Could not change flash mode" msgstr "Konnte Blitzmodus nicht ändern" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "Zeit gesetzt" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "konnte Zeit nicht setzen" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "" "Nichtunterstützter Port-Typ %i = 0x%x angegeben. Initialisierung nicht " "möglich." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Batterie leer, Kamera aus." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "Fehler: unerwartete Meldung" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "Fehler: Meldungsüberlauf" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "Fehler: aus der Reihe." #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "Fehler: unerwarteter Pakettyp." #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "Fehler: Meldungsformatfehler." #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "Fehler: unerwartete Meldung2." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Lade Bild hoch..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Hole Datei..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "\"canon_serial_get_dirents: canon_serial_dialogue könnte Ordnerelemente " "nicht holen \"" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" "canon_serial_get_dirents: Anfangend Ordnerelementepaket zu kurz (nur %i " "bytes)" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "" "canon_serial_get_dirents: %i Byte Arbeitsspeicher konnten nicht reserviert " "werden" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "" "canon_serial_get_dirents: Lesen eines weiteren Ordnereintrags schlug fehl" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "canon_serial_get_dirents: Abgeschnittene Ordnereinträge erhalten" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" "canon_serial_get_dirents: Zu viele Ordnerelemente, wir müssen in einem " "Teufelskreis geraten sein." #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents: Könnte Größe des Ordnerelementspuffers nicht auf " "%i bytes verändern" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Fehler beim Ändern der Datenrate." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Protokoll zurücksetzen..." #: camlibs/canon/serial.c:1311 msgid "Camera OK." msgstr "Kamera OK." #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Nach Kamera suchen..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Versuche, Kamera zu kontaktieren..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Kommunikationsfehler 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Keine Antwort von Kamera" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Nicht erkannte Antwort" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "Erkannte eine »%s« alias »%s«" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "Unbekanntes Modell »%s«" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "Fehlerhafter EOT" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Kommunikationsfehler 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Kommunikationsfehler 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Ändere Datenrate... Warte..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Fehler beim Ändern der Datenrate" #: camlibs/canon/serial.c:1454 msgid "Error waiting for ACK during initialization, retrying" msgstr "Fehler beim Warten auf ACK, probiere weiter" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Fehler beim Warten auf ACK während der Initialisierung" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Mit Kamera verbunden" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "FEHLER: eine Fatalfehler würde empfindet, kann nicht weitermachen" #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "FEHLER: %d ist zu groß" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Vorschaubild holen..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "UNBEKANNT" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "Konnte Kamera nicht anfänglich kontaktieren." #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "Kamera war schon aktiv" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "Kamera wurde aufgeweckt" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "Erste Kameraantwort %c/ nicht erkannt" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" "Stufe 2 der Kamerainitialisierung fehlgeschlagen: (»%s« beim Lesen von %i) " "Kamera funktioniert nicht" #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "Stufe 2 der Kamerainitialisierung fehlgeschlagen! (%i Bytes erhalten, %i " "erwartet) Kamera funktioniert nicht" #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" "Stufe 3 der Kamerainitialisierung fehlgeschlagen: »%s« beim Lesen von %i. " "Kamera funktioniert nicht" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" "Stufe 3 der Kamerainitialisierung fehlgeschlagen! (%i erhalten, %i erwartet) " "Kamera funktioniert nicht" #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" "Stufe 3 der Kamerainitialisierung fehlgeschlagen: %s beim Schreiben von %i. " "Kamera funktioniert nicht" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" "Stufe nr.4 fehlgeschlagen: %s beim Lesen von %i. Kamera funktioniert nicht" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" "Stufe 4 fehlgeschlagen! (%i erhalten, %i erwartet) Kamera funktioniert nicht" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "Kamera nicht bereit, mehrere »Identify camera«-Anfragen fehlgeschlagen: %s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "Kamera nicht bereit, get_battery-Anfrage fehlgeschlagen: %s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Unerwartete Länge von »lock_keys« erhalten (%i " "erhalten, %i erwartet)" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Unerwartete Länge erhalten (%i erhalten, %i erwartet)" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_unlock_keys: Unerwartete Länge erhalten (%i erhalten, %i erwartet)" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_get_body_id: Unerwartete Datenlänge erhalten (%i erhalten, %i " "erwartet)" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Empfange Daten..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "Speicherplatz fehlt: %d bytes benötigt." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes: canon_usb_dialogue fehlgeschlagen" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "canon_usb_set_file_attributes: canon_usb_dialogue gibt Status 0x%08x von der " "Kamera zurück" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "Konnte Daten vom Datei »%s« nicht holen" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "Speicherplatz fehlt: %ld bytes benötigt." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "Bildhochladung fehlgeschlagen." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "Datei war zu groß. Möglicherweise müssen Sie ihre Kamera aus- und wieder " "einschalten, um weitere Dateien hochzuladen." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" "canon_usb_get_dirents: Nutzlast passt nicht in Puffer, '%.96s' (verkurzt)" #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents: canon_usb_long_dialogue könnte keine Ordnerelemente " "holen, status %i" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" "canon_usb_list_all_dirs: Nutzlast passt nicht in Puffer, »%.96s« (verkurtzt) " "zu lang." #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs: canon_usb_long_dialogue könnte keine Ordnerelemente " "holen, status %i" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "Erkannte eine »%s«." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "Name »%s« passt mit keinem bekanntes Modell" #: camlibs/casio/casio-qv.c:152 #, c-format msgid "Image type %d not supported" msgstr "Bildtyp %d nicht unterstützt" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "Bild %s ist vor Löschen geschützt." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" "Treiber Framework geschrieben von Lutz Müller .\n" "Diese Software hat benutzt Teile des QVplay Sourcecodes, geschrieben von Ken-" "ichi HAYASHI und Jun-ichiro \"itojun\" Itoh " ".\n" "Integration von QVplay durch Michael Haardt ." #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "Batterieladung: %1f Volt. Revision: %08x" #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "Kamera-Konfiguration" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "Batterie" #: camlibs/casio/casio-qv.c:275 msgid "Brightness" msgstr "Helligkeit" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 msgid "Too bright" msgstr "Zu hell" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 msgid "Too dark" msgstr "Zu dunkel" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "OK" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "Die Logitech Clicksmart 310 hat %i Bild im Speicher.\n" msgstr[1] "Die Logitech Clicksmart 310 hat %i Bilder im Speicher.\n" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" "Zwei Aufösungen, 352x288 und 176x144. Bilddaten\n" "werden im JPEG Format runtergeladen und haben daher keine vorbestimmbare\n" "Größe. Deshalb ist die maximale Anzahl an Bildern auf der Kamera nur ein\n" "Näherungswert.\n" "Alle gphoto2 Optionen funktionieren, außer den folgenden, die die Kamera " "nicht\n" "unterstützt:\n" "\tLöschen von einzelnen Fotos (gphoto2 -d)\n" "\tAufnahme (gphoto2 --capture oder --capture-image)\n" "Allerdings ist Aufnahme über den Webcam Modus möglich,\n" "der durch das spca50x Kernel Modul unterstützt wird.\n" "GUI Zugriff mit gtkam wurde getestet und funktioniert. Allerdings\n" "erstellt die Kamera keine seperaten Vorschaubilder. Da die Bilder\n" "bereits geringe Größe haben, lädt der Treiber einfach die normalen Bilder\n" "als Vorschaubilder herunter.\n" "Die Kamera kann in einem 'Videoclip' Modus aufnehmen. Die entstehenden " "Einzelbilder\n" "werden als Folge von normalen Bildern gespeichert. Der Benutzer kann sie " "dann \n" "selber animieren mit z.B. ImageMagick's 'animate' Funktion.\n" "Frü mehr Details ,ber die Kamerafunktionen konsultieren sie\n" "bitte libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "Logitech Clicksmart 310 Treiber\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "Generischer sq905C Treiber\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Bildtyp nicht unterstützt" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "Anzahl der Bilder: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "Nur das Wurzelverzeichnis wird unterstützt - Sie forderten eine Dateiliste " "für Ordner »%s«." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Problem beim Holen der Anzahl der Bilder" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Problem beim Holen der Bildinformation" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Aufnahmetyp nicht unterstützt" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (Batterie ist zu %d%% voll)" #: camlibs/dimera/dimera3500.c:455 #, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 Ver. %s %d/%d %d:%d.\n" "%d Bilder von etwa %d (hohe Aufl.) oder %d (niedrige Aufl.).\n" "Kamera-Features: %s, %s, %s, %s.\n" "Blitz ist %s, ist %s und %s.\n" "Auflösung ist auf %s gesetzt.\n" "Kamera wird %s-betrieben%s.\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Blitz" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 msgid "No Flash" msgstr "Kein Blitz" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Dual-Iris" #: camlibs/dimera/dimera3500.c:468 msgid "No Dual Iris" msgstr "Keine Dual-Iris" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "Auflösungsumschaltung" #: camlibs/dimera/dimera3500.c:470 msgid "No Resolution Switch" msgstr "Keine Auflösungsumschaltung" #: camlibs/dimera/dimera3500.c:472 msgid "No Power Light" msgstr "Keine Powerlampe" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "An" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "Aus" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "Bereit" #: camlibs/dimera/dimera3500.c:476 msgid "Not ready" msgstr "Nicht bereit" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "Im Füllmodus" #: camlibs/dimera/dimera3500.c:478 msgid "Not in fill mode" msgstr "Nicht im Füllmodus" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "niedrig (320x240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "hoch (640x480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "extern" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "intern" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* Bildstörungen oder Probleme mit der Kommunikation\n" "sind häufig auf einen niedrigen Batteriestand zurückzuführen.\n" "* Bilder, die über Fernsteuerung aufgenommen wurden werden \n" "in einem temporären RAM gespeichert, nicht auf der Flash-Karte.\n" "* Die Belichtungskontrolle beim Bildaufnehmen kann manuell eingestellt,\n" "oder automatisch von der Aufnahmevorschau-Funktion gesetzt werden.\n" "* Die Bildqualität ist im Moment geringer als sie sein könnte.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "Diese Software wurde mit der Hilfe von proprietären \n" "Informationen geschrieben, die der Firma\n" "StarDot Technologies gehören.\n" "\n" "Autor:\n" " Brian Beattie \n" "Beteiligte:\n" " Chuck Homic \n" " Konvertierung von rohen Kamerabildern nach RGB\n" " Dan Fandrich \n" " Informationen über Protokoll und Rohbildformat,\n" " gphoto2-Portierung\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Problem beim Lesen des Bildes vom Speicher" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Kein Speicherplatz vorhanden" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "Lade Bild herunter..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Problem beim Herunterladen des Bildes" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "Benutzerabbruch beim Herunterladen" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Problem bei der Aufnahme eines Live-Bildes" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Belichtung" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "Automatische Belichtungskorrektur in der Vorschau" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "Belichtungswert in der Vorschau" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "Automatischer Blitz bei Aufnahme" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Problem beim Öffnen des Ports" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Problem beim Kamera-Reset" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Problem beim Setzen der Kameradatenrate" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Sieht wie ein Modem aus, nicht wie eine Kamera" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "Liste Dateien in »%s«..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "Liste Ordnerse in »%s«..." #: camlibs/directory/directory.c:381 #, c-format msgid "Could not get information about '%s' (%s)." msgstr "Konnte keine Informationen über »%s« bekommen (%s)." #: camlibs/directory/directory.c:414 #, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Konnte keine Informationen über »%s« in »%s« bekommen (%s)." #: camlibs/directory/directory.c:462 #, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Konnte die Zeit von Datei »%s« in »%s« nicht ändern (%s)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Konnte »%s« nicht öffnen." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" "Der \"Kamera\" Ordnermodus erlaubt es Ihnen, \n" "Bilder auf der Festplatte zu indexieren." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "Ordner-Modus - geschrieben von Scott Fritzinger ." #: camlibs/directory/directory.c:671 #, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "Konnte die Datei »%s« in Ordner »%s« nicht löschen (Fehler: %i:%s)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" "Download Programm f?r die Digital Dream Enigma 1.3 durch " ", angepaßt vom spca50x Treiber. Danke, spca50x " "Team, es war einfach den Treiber auf diese Kamera zu portieren!" #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "Die Kamera sendete nur %i Bytes, aber wenigstens %i werden benötigt." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Konnte Kamera nicht kontaktieren." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Unerwartete Daten erhalten (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "Falsche Escape Sequenz: erwartet 0x%02x, erhalten 0x%02x." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Falsche Daten - erhalten 0x%02x, erwartet 0x%02x." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "Falsche Daten - erhalten 0x%02x, erwartet 0x%02x oder 0x%02x." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "Falsche Checksumme - erhalten 0x%02x, erwartet 0x%02x." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "Die Kamera hat das Kommando nicht akzeptiert." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "Kamera hat sich selbst zurückgesetzt." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "Kamera hat unerwartetes Byte 0x%02x geschickt." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Lade herunter..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "Konnte nicht %i Bytes für den Download des Thumbnails anfordern." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "Konnte nicht %i Bytes für den Download des Bildes anfordern." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "Die Kamera hat »%s« nicht als Dateinamen akzeptiert." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "Konnte Upload nicht initialisieren (Kamera antwortete mit 0x%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "Die Kamera unterstützt die Geschwindigkeit %i nicht." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "Konnte die Baudrate nicht auf %i setzen (Kamera antwortete mit %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Basierend auf fujiplay Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "Bitrate %ld wird nicht unterstützt." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Konfiguration der FUJI Kamera." #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Datum und Zeit" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Version: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Modell:" #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "Verfügbarer Speicher:" #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "gsmart300 Kamerabibliothek\n" "Till Adam \n" "Jérôme Lodewyck \n" "Unterstützung für die Mustek gSmart 300-Digitalkameras, basierend auf\n" "verschiedenen anderen gphoto2-Bibliotheken und den Spezifikationen, die\n" "freundlicherweise von Mustek zur Verfügung gestellt wurde.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Nichtunterstützter Porttyp: %d. Dieser Treiber unterstützt nur USB-Kameras.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Konnte Kamera nicht zurücksetzen.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Diese Kamera kann nur die jeweils letzte Datei löschen. In diesem Fall ist " "dies Datei »%s«." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" "Aktuelle Kamerazeit: %04d-%02d-%02d %02d:%02d\n" "Freier Speicher: %d\n" "Bilder auf der Karte: %d\n" "Freie Bilder auf der Karte: %d\n" "Batterie Status: %d %%" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" "hp215\n" "Marcus Meißner \n" "Treiber für die HP Photosmart 215 Kamera.\n" "Entwickelt auf Basis des hp215 Programmes.\n" "Dieser Treiber erlaubt Download von Bildern und Previews, sowie das Löschen " "von Bildern.\n" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "Ihre USB Kamera ist eine iClick 5X.\n" "Die Anzahl an Bildern auf der Kamera ist %i\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" "Für Benutzer von Kameras mit der ID 0x2770:0x9153.\n" "\n" "Wir raten derzeit noch von der Verwendung von GUI Programmen ab.\n" "Bitte benutzen sie das Kommandozeilentool \"gphoto2\".\n" "Das Herunterladen von Videoclips funktioniert noch nicht.\n" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "iClick 5XTreiber\n" "Theodore Kilgore \n" # Haesslich [Colin] #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Aufgenommene Bilder: %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "jamcam-Bibliothek v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "Daten herunterladen..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "Vorschaubild herunterladen..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "Die JD11-Kamera funktioniert mit diesem Treiber ziemlich gut.\n" "Eine RS232 (serielle)-Schnittstelle mit 115kbit Datenrate ist für\n" "den Bildtransfer erforderlich.\n" "Mit dem Treiber können\n" "\n" " - Vorschaubilder (64x48 PGM-Format)\n" " - Volle Bilder (640x480 PPM-Format)\n" "\n" "heruntergeladen werden.\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meißner \n" "Treiber für die Jenoptik JD11-Kamera.\n" "Protokoll mit WINE und IDA rückentwickelt." #: camlibs/jd11/jd11.c:186 msgid "JD11 Configuration" msgstr "JD11 Konfiguration" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Weitere Einstellungen" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Belichtungszeit bei Langzeitbelichtung" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Farbeinstellungen" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "Rot" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Grün" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Blau" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Ihre USB Kamera hat einen Jeilin JL2005A Chipsatz.\n" "Die Anzahl an Bildern auf der Kamera ist %i.\n" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" "Dieser Treiber unterstützt Kameras mit dem Jeilin jl3005a Chip.\n" "Diese Kameras erlauben es nicht, Dateien zu löschen oder vom\n" "Computer auf die Kamera zu kopieren.\n" "Die Decodierung komprimierter Bilder kann funktionieren (oder auch\n" "nicht) und funktioniert nicht mit allen unterstützten Kameras gleich\n" "gut.\n" "Weitere Details finden Sie in libgphoto2/camlibs/jl2005a/README.jl2005a\n" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "jl2005a Kamera Treiber\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Ihre USB Kamera hat einen Jeilin JL2005%c Chipsatz.\n" "Die Anzahl an Bildern auf der Kamera ist %i.\n" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" "Dieser Treiber unterstützt Kameras mit dem Jeilin jl2005b Chip.\n" "Diese Kameras erlauben es nicht, Dateien zu löschen oder vom\n" "Computer auf die Kamera zu kopieren.\n" "Die Decodierung komprimierter Bilder kann funktionieren (oder auch\n" "nicht) und funktioniert nicht mit allen unterstützten Kameras gleich\n" "gut.\n" "Weitere Details finden Sie in libgphoto2/camlibs/jl2005c/README.jl2005c\n" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "jl2005bcd Kamera Treiber\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "CompactFlash-Karte" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "Die Kodak DC120 verwendet das KDC-Dateiformat, um Bilder zu speichern. Zum " "Ansehen der Kamerabilder benötigen Sie das \"kdc2tiff\"-Programm von http://" "kdc2tiff.sourceforge.net" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Kodak DC120 Kamera-Bibliothek\n" "Scott Fritzinger \n" "(aufgrund öffentlichen Interesses)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Hole Daten..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "Warte auf Beendigung..." #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Datei" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Dateityp" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Dateiauflösung" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Dateikomprimierung" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Niedrig (beste Qualität)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Mittel (bessere Qualität)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "Hoch (gute Qualität)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Aufnahme" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Belichtungskorrektur" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Auto" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Immer" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Keine" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Rote-Augen-Blitz" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "An" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Aus" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Anderer" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Setze Uhr in Kamera" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "Portgeschwindigkeit" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Albumname" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Name, der beim Formatieren der Karte gesetzt wird." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "Formatiere CompactFlash-Karte" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Formatiere Karte und setze Albumnamen." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Debug" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Führe vordefiniertes Kommando\n" "mit Parameterwerten aus." #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "Fotos in der Kamera: %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" "Es gibt Platz für weitere:\n" " %d niedrig,\n" " %d mittlere, und\n" " %d hoch komprimierte Bilder\n" #: camlibs/kodak/dc210/dc210.c:506 #, c-format msgid "Total pictures taken: %d\n" msgstr "Aufnahmen: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "Blitzaufnahmen:%d\n" #: camlibs/kodak/dc210/dc210.c:514 #, c-format msgid "Firmware: %d.%d\n" msgstr "Firmware: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, c-format msgid "Filetype: JPEG (" msgstr "Dateityp: JPEG (" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "Dateityp: FlashPix (" #: camlibs/kodak/dc210/dc210.c:527 #, c-format msgid "low compression, " msgstr "niedrige Kompression," #: camlibs/kodak/dc210/dc210.c:529 #, c-format msgid "medium compression, " msgstr "mittlere Kompression, " #: camlibs/kodak/dc210/dc210.c:531 #, c-format msgid "high compression, " msgstr "hohe Kompression, " #: camlibs/kodak/dc210/dc210.c:533 #, c-format msgid "unknown compression %d, " msgstr "unbekannte Komprimierung %d, " #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "unbekannte Auflösung %d)\n" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "Netzanschluss angeschlossen.\n" #: camlibs/kodak/dc210/dc210.c:558 #, c-format msgid "AC adapter is not connected.\n" msgstr "Netzanschluss nicht angeschlossen\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "Zeit: %a, %d %b %Y %T\n" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "Zoom: 58 mm\n" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "Zoom: 51 mm\n" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "Zoom: 41 mm\n" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "Zoom: 34 mm\n" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "Zoom: 29 mm\n" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "Zoom: Makro\n" #: camlibs/kodak/dc210/dc210.c:580 #, c-format msgid "Unknown zoom mode %d\n" msgstr "Unbekannter Zoom-Modus %d\n" #: camlibs/kodak/dc210/dc210.c:586 #, c-format msgid "Exposure compensation: %s\n" msgstr "Belichtungskorrektur: %s\n" #: camlibs/kodak/dc210/dc210.c:588 #, c-format msgid "Exposure compensation: %d\n" msgstr "Belichtungskorrektur: %d\n" #: camlibs/kodak/dc210/dc210.c:593 #, c-format msgid "Flash mode: auto, " msgstr "Blitzmodus: automatisch" #: camlibs/kodak/dc210/dc210.c:595 #, c-format msgid "Flash mode: force, " msgstr "Blitzmodus: erzwungener Blitz" #: camlibs/kodak/dc210/dc210.c:597 #, c-format msgid "Flash mode: off\n" msgstr "Blitzmodus: Aus\n" #: camlibs/kodak/dc210/dc210.c:599 #, c-format msgid "Unknown flash mode %d, " msgstr "Unbekannter Blitzmodus %d," #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "Rote-Augen-Blitz an.\n" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "Rote-Augen-Blitz aus.\n" #: camlibs/kodak/dc210/dc210.c:615 #, c-format msgid "No card in camera.\n" msgstr "Keine Speicherkarte in der Kamera.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" "Kartenname: %s\n" "Freier Speicher auf der Karte: %d kB\n" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "Diese Bibliothek wurde mit einer Kodak DC 215 Zoom getestet. Sie könnte auch " "mit der DC 200 und DC 210 funktionieren. Wenn Sie eine solche Kamera " "besitzen, dann lassen Sie mich unter wissen, ob alles " "funktioniert oder ob Sie irgendwelche Probleme haben." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Kamerabibliothek für die Kodak DC215 Zoom.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "Warten..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Parameter 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Parameter 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Parameter 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Modell: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "Firmware-Revision: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Batteriestatus: %s, Netzteil: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "Anzahl der Bilder: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "Verbleibender Platz: hoch: %d, mittel: %d, niedrig: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "Speicherkartenstatus (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "Aufnahmen, gesamt: %d; Blitz verwendet: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Kodak DC240 Kamera-Bibliothek\n" "Scott Fritzinger und Hubert Figuiere \n" "Bibliothek für die Kameras Kodak DC240, DC280, DC3400 und DC5000.\n" "Neu geschrieben und aktualisiert für gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Schwach" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Leer" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Ungültig" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Nicht benutzt" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "Benutzt" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "Karte ist geöffnet" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "Karte ist nicht geöffnet" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "Karte ist nicht formatiert" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Keine Karte vorhanden" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "Eine Operation ist im Moment aktiv. Diese Kamera unterstützt nur jeweils " "eine \n" "aktive Operation. Bitte warten Sie, bis die aktuelle Operation beendet wurde." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "Kamera inaktiv für > 9 Sekunden, initialisiere neu.\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Bekannte Probleme:\n" "\n" "1. Wenn die Kodak DC3200 nicht wenigstens alle 10 Sekunden einen Befehl " "erhält, \n" "dann muss sie neu initialisiert werden. Wenn die Kamera nicht reagiert, \n" "dann wählen Sie die Kamera erneut an. Dies initialisiert die Kamera neu." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Kodak DC3200-Treiber\n" "Donn Morrison \n" "\n" "Fragen und Kommentare werden geschätzt." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "Ihre USB Kamera ist eine Kodaz EZ200.\n" "Anzahl Bilder= %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "Kodak EZ200 Treiber\n" "Bucas Jean Francois \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Fehler beim fokussieren." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Iris Fehler." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Blitzfehler." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "EEPROM-Prüfsummenfehler." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "Interner Fehler (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "Interner Fehler (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Keine Karte vorhanden." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "Speicherkarte nicht unterstützt." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "Speicherkarte während Zugriff entnommen." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Bildnummer ungültig." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "Speicherkarte kann nicht geschrieben werden." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "Datei ist schreibgeschützt." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "Kein freier Speicher auf der Karte." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Bild ist geschützt." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "Nicht genügend Licht." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Autofokus Fehler." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Systemfehler." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Illegaler Parameter." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "Kommando kann nicht abgebrochen werden." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Lokalisierungsdatei zu lang." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Lokalisierungsdaten fehlerhaft." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Nicht unterstütztes Kommando." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "Ein anderes Kommando wird bereits ausgeführt." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Fehler in Kommandoreihenfolge." #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Unbekannter Fehler." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "Diese Kamera hat gerade einen unbekannten Fehlercode geschickt. Bitte " "berichten sie folgenden Fehlercode an %s mit weiteren Information, wie " "dieser Fehler aufgetreten ist: (0x%x, 0x%x). Vielen Dank!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Hole Dateiliste..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "Teste verschiedene Datenraten..." #: camlibs/konica/library.c:338 msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "Konnte nicht mit der Kamera verbinden. Bitte stellen Sie sicher, daß die " "Kamera mit dem Computer verbunden und angeschaltet ist." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "%i Bilder konnten nicht gelöscht werden, da sie geschützt sind" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Modell: %s\n" "Seriennummer: %s,\n" "Hardware-Version: %i.%i\n" "Software-Version: %i.%i\n" "Testsoftware-Version: %i.%i\n" "Name: %s,\n" "Hersteller: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Konica-Bibliothek\n" "Lutz Müller \n" "Unterstützung für alle Konica- und verschiedene HP-Kameras." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Lade Kamera-Konfiguration..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Konica-Konfiguration" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Dauerhafte Einstellungen" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "Soll die Kamera einen Ton spielen, wenn ein Bild aufgenommen wird?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Selbstauslöserzeit" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Zeit für automatische Abschaltung" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Diashow-Intervall" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Auflösung" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Niedrig (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Mittel (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Hoch (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Lokalisierung" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Sprache" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Keine ausgewählt" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "TV-Ausgabeformat" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "TV-Menü nicht anzeigen" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Datumsformat" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "Monat/Tag/Jahr" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "Tag/Monat/Jahr" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Jahr/Monat/Tag" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Sitzungsdauerhafte Einstellungen" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "An, Rote-Augen-Vermeidung" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Auto, Rote-Augen-Vermeidung" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Fokus" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "Fest eingestellt" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Flüchtige Einstellungen" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "Selbstauslöser" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "Selbstauslöser (nur nächstes Bild)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Normal" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Konnte Lokalisierungsdaten nicht in »%s« finden" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "Lokalisierungsdatei zu lang!" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "Dieses Varschaubild existiert nicht." #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "Daten würden beschädigt." #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "Bildtyp %d wird nicht von dieser Kamera unterstützt!" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "Kann Bild Bild »%s« nicht löschen." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "Kann nicht alle Bilder löschen." #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "Lade Bild hoch..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "Kann dieses Bild nicht zur Kamera hochladen. Eine Fehler ist passiert." #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "Sie müssen im Aufnahmemodus sein, um Bilder aufzunehmen." #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "Kein Platz für weitere Aufnahmen vorhanden. Sie müssen Bilder löschen." #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "Kann kein neues Bild aufnehmen. Unbekannter Fehler." #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "Keine Antwort von der Kamera." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Niedrig" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Mittel" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Hoch" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Ikonen" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "2.0 m" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "0.5 m" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "0.1 m" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Weißabgleich" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "Büro" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "Tageslicht" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "Schärfe" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "Schärfe" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "Weich" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "farbig" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "Hell" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "Tiefe" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "schwarz/weiß" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "Einzelbild" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "9 Bilder Reihe" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "Datumsanzeige" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "Überall" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "Wiedergabemodus" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "Aufnahmemodus" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "Überall" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "Netz" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "Wiedergabe" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Aufnahme" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "TT/MM/JJJJ" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "JJJJ/MM/AA" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "MM/TT/JJJJ" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Modell: %s\n" "Speicherkapazität: %i MB\n" "Stromversorgung: %s\n" "Autoabschaltszeit: %i min\n" "Mode: %s\n" "Bilder: %i/%i\n" "Datumsanzeige: %s\n" "Datum und Zeit: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Ünterstützung für die französische Konica Q-M150." #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "Über Konica Q-M150:\n" "Diese Kamera erlaubt keine Einstellungen per Computer.\n" "In der Konfiguration kann man daher nur sehen, wie die\n" "Kamera eingestellt ist, aber nichts verändern.\n" "\n" "Wenn Sie irgendwelche Probleme mit diesem Treiber\n" "haben, schicken Sie bitte eine E-Mail an die Autoren\n" "dieses Treibers.\n" #: camlibs/largan/lmini/largan.c:228 msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Largan Treiber\n" "Hubert Figuiere \n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" "Ihre USB Kamera scheint eine LG GSM Kamera zu sein.\n" "Firmware: %s\n" "Firmware Version: %s\n" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" "Generischer Treiber für LG GSM\n" "Guillaume Bedot \n" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Mars MR97310 Kamera.\n" "Es ist %i Foto auf der Kamera.\n" msgstr[1] "" "Mars MR97310 Kamera.\n" "Es sind %i Fotos auf der Kamera.\n" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" "Dieser Treiber unterstützt Kameras mit dem Mars MR97310 Chip (und\n" "direkten Äquivalenten ??Pixart PAC0x7??).\n" "Diese Kameras erlauben es nicht, Dateien zu löschen oder vom\n" "Computer auf die Kamera zu kopieren.\n" "Die Decodierung komprimierter Bilder kann funktionieren (oder auch\n" "nicht) und funktioniert nicht mit allen unterstützten Kameras gleich\n" "gut.\n" "Die Verarbeitung von Daten für die Argus QuickClix ist NICHT unterstützt.\n" "Falls auf der Kamera vorhanden, werden die Rahmen von Videoclips als\n" "einzelne Standbilder heruntergeladen.\n" "Weitere Details finden Sie in libgphoto2/camlibs/mars/README.mars.\n" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "Mars MR97310 Kamera Treiber\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Modell:\t\t\tMinolta Dimage V (%s)\n" "Hardware-Revision:\t%s\n" "Firmware-Revision:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Host-Modus:\t\t%s\n" "Belichtungskorrektur:\t%s\n" "Belichtungsdaten:\t%d\n" "Datum gültig:\t\t%s\n" "Datum:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Selbstauslöser gesetzt:\t%s\n" "Qualität:\t\t%s\n" "Wiedergabe/Aufnahme:\t%s\n" "Karten-ID gültig:\t%s\n" "Karten-ID:\t\t%d\n" "Blitzmodus:\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Entfernt" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Lokal" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Ja" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "Nein" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Fein" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Standard" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Automatisch\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Erzwinge Blitz\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Verbiete Blitz\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Ungültiger Wert ( %d )\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "Batteriepegel:\t\t%s\n" "Anzahl der Bilder:\t%d\n" "Min verbl. Kapazität: %d\n" "Beschäftigt:\t\t%s\n" "Blitz ladend:\t\t%s\n" "Linsenstatus:\t\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "Nicht voll" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Voll" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "Beschäftigt" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "Nicht beschäftigt" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "Ladend" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Bereit" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Normal\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "Linsenrichtung paßt nicht zum Blitz\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "Linse nicht angeschlossen\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "Falscher Wert für Linsenstatus %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "Kartenstatus:\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Schreibgeschützt" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "Nicht passende Karte" #: camlibs/minolta/dimagev/dimagev.c:406 #, c-format msgid "Bad value for card status %d" msgstr "Falscher Wert für Kartenstatus %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Minolta Dimage V Kamera-Bibliothek\n" "%s\n" "Gus Hartmann \n" "Besonderen Dank an Minolta für die Spezifikation." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Blitz: Auto (Rote-Augen-Vermeidung)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Blitz: Auto" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Blitz: An (Rote-Augen-Vermeidung)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Blitz: An" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Blitz: Aus" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Blitz: undefiniert" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Zusammenfassung für Mustek MDC800:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "kein Status ausgegeben." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "CompactFlash-Karte erkannt\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Keine CompactFlash-Karte erkann\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "Aktueller Modus: Kameramodus\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Aktueller Modus: Wiedergabemodus\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Batterien sind okay." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Batterien sind schwach." #: camlibs/mustek/mdc800.c:264 msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Mustek MDC-800 gPhoto2-Bibliothek\n" "Henning Zabel \n" "Portiert auf gphoto2 von Marcus Meißner \n" "Unterstützt das serielle und das USB-Protokoll." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "coolshot-Bibliothek v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Schließe Verbindung zu Kamera." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "Lade Bild »%s« herunter." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Lade Bild »%s« hoch." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "Dateigröße ist %ld bytes. Größtmögliche Datei für das Hochladen ist %i bytes." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Lade Bild hoch..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "Lösche Bild »%s«." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1000 gPhoto-Bibliothek\n" "Mariusz Zynel \n" "\n" "Basierend auf dem dc1000-Programm von\n" "Fredrik Roubert und\n" "Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "Lade »%s« herunter." #: camlibs/panasonic/dc1580.c:627 msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1580 gPhoto-Bibliothek\n" "Mariusz Zynel \n" "\n" "Basierend auf dem dc1000-Programm von\n" "Fredrik Roubert und\n" "Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "Lade »%s« herunter..." #: camlibs/panasonic/l859/l859.c:582 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic hat Bildaufnahme (genannt PHOTOSHOT) zum ersten Mal in\n" "dieser Serie von Palmcordern implementiert. Bilder sind im\n" "JPEG-Format auf einer internen Flashkarte gespeichert und können\n" "über den seriellen Port zum Computer übertragen werden. Bilder sind\n" "iin zwei Formaten gespeichert: NORMAL ist 320x240 und FINE ist\n" "640x480. Das CCD, welches die Bilder von der Linse aufnimmt, hat\n" "nur 300K Pixel und produziert so nur Bilder mit niedriger Qualität." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Bekannte Probleme:\n" "\n" "Wenn Kommunikationsfehler auftreten, setzen Sie die Kamera zurück\n" "und starten Sie die Anwendung neu. Der Treiber ist noch nicht robust\n" "genug, um solche Situationen zu überstehen, besonders, wenn die\n" "Kamera bei Problemen nicht ordnungsgemäß ausgeschaltet wurde und die\n" "Datenrate über 9600 bps liegt." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder-Treiber\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " Vorhandener Speicher: %8d Byte(s).\n" " Freier Speicher: %8d Byte(s).\n" " Anzahl Dateien: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" "Autoren: Till Adam \n" "und: Miah Gregory " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "Lade Datei herunter..." #: camlibs/pccam600/library.c:249 msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" " Autor: Peter Kajberg \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "pccam600_init: Erwartete > %d Blöcke, erhielt %d" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "pccam600_get_file: Erhielt Index %d, erwarteter Index > %d" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "pccam600_close: Return Wert war %d statt %d" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "pccam600_init: Erwartete %d Blöcke, erhielt %d" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "pccam600_init: Unerwarteter Fehler: gp_port_read lieferte %d statt %d" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Bibliothek zum Zugriff auf verschiedene Polaroid Kameras.\n" "Originalauthor Peter Desnoyers , angepaßt für " "gphoto2 durch Nathan Stenzel und Lutz " "Müller .\n" "Polaroid 640SE Tests durch Michael Golden ." #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Modell: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "Bibliothek zum Zugriff auf GrandTek 98x basierte Kameras.Original Author: " "Chris Byrne , Anpassung für gphoto2 durch Lutz Müller " ". Verbesserung im Protokoll und Bild Nachbearbeitung für " "Jenoptik JD350e durch Michael Trawny . " "Bugfixes von Marcus Meißner ." #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "Bildqualität" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Bildgröße" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Blitzeinstellungen" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Autom. Abschaltung (in Minuten)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Informationen" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "normal" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "fein" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "superfein" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "auto" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "an" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "aus" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "Wiedergabe" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "Aufnahme" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "Menü" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "Batterie " #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "Netzadapter " #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Unerwarteten Header erhalten (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Unerwartete Antwort erhalten" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Prüfsummenfehler" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "Die Kamera hat das Kommando nicht akzeptiert." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "Die Kamera sendete mehr Bytes als erwartet (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "Forderte Informationen über Bild %i (= 0x%x) an, erhielt jedoch " "Informationen über Bild %i" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "%i Bytes eines unbekannten Bildformates erhalten. Bitte schreiben Sie an %s " "(auf Englisch) für Unterstützung." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Bibliothek zum Zugriff auf die Polaroid DC700 Kamera. Originaler Author Ryan " "Lantzer für gphoto 4.x. Angepaßt für gphoto2 durch Lutz " "Müller ." #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Kamera" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "Wie lange soll es dauern, bis die Kamera abschaltet?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Bild" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Datum: %i/%02i/%02i %02i:%02i:%02i\n" "Aufgenommene Bilder: %i\n" "Verbleibende Aufnahmen: %i\n" "Software-Version: %s\n" "Baudrate: %s\n" "Speicher: %i Megabytes\n" "Kameramodus: %s\n" "Bildqualität: %s\n" "Blitzeinstellung: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Automat. Ausschalten: %i Minuten\n" "Stromquelle: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "" "Der angeforderte Port-Typ (%i) wird von diesem Treiber nicht unterstützt." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Diese Canon Kamera unterstützt nicht den Canon Aufnahme Modus" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, c-format msgid "Unknown value %04x" msgstr "Unbekannter Wert %04x" #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, c-format msgid "Unknown value %04d" msgstr "Unbekannter Wert %04d" #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "unerwarteter Datentyp %i" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "Manuell" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 msgid "Automatic" msgstr "Automatisch" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 msgid "One-push Automatic" msgstr "Vollautomatik" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "Kunstlicht - Fluoreszenzlampe" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Kunstlicht - Glühlampe" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Wolkig" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "Schatten" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "Farbtemperatur" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "Voreinstellung" #: camlibs/ptp2/config.c:1415 msgid "Fluorescent Lamp 1" msgstr "Fluoreszenz Licht 1" #: camlibs/ptp2/config.c:1416 msgid "Fluorescent Lamp 2" msgstr "Fluoreszenz Licht 2" #: camlibs/ptp2/config.c:1417 msgid "Fluorescent Lamp 3" msgstr "Fluoreszenz Licht 3" #: camlibs/ptp2/config.c:1418 msgid "Fluorescent Lamp 4" msgstr "Fluoreszenz Licht 4" #: camlibs/ptp2/config.c:1419 msgid "Fluorescent Lamp 5" msgstr "Fluoreszenz Licht 5" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "Wähle Farbtemperatur" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "Preset Custom 1" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "Preset Custom 2" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "Preset Custom 3" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "Preset Custom 4" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "Preset Custom 5" #: camlibs/ptp2/config.c:1430 msgid "Fluorescent: Warm White" msgstr "Fluoreszenz : Warmweiss" #: camlibs/ptp2/config.c:1431 msgid "Fluorescent: Cold White" msgstr "Fluoreszenz: Kaltweiss" #: camlibs/ptp2/config.c:1432 msgid "Fluorescent: Day White" msgstr "Fluoreszenz: Tagweiss" #: camlibs/ptp2/config.c:1433 msgid "Fluorescent: Daylight" msgstr "Fluoreszenz: Tageslicht" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 msgid "JPEG Fine" msgstr "JPEG Fein" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 msgid "JPEG Normal" msgstr "JPEG Normal" #: camlibs/ptp2/config.c:1443 msgid "RAW + JPEG Fine" msgstr "RAW + JPEG Fein" #: camlibs/ptp2/config.c:1444 msgid "RAW + JPEG Normal" msgstr "RAW + JPEG Normal" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "Einzelbild" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "Kontinuierliche Langsame Geschwindigkeit" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "Kontinuierliche Hohe Geschwindigkeit" #: camlibs/ptp2/config.c:1452 msgid "Self-timer" msgstr "Selbstauslöser" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "Spiegel hochklappen" #: camlibs/ptp2/config.c:1735 msgid "undefined" msgstr "Undefiniert" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "ökonomisch" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "verlustlos" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 msgid "Undefined" msgstr "Undefiniert" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "CRW" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "TV" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "AV" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "A_DEP" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "M_DEP" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "DEP" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "Benutzerdefiniert" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "Lock" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "Nachtportrait" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "Sport" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "Landschaft" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "Nahaufnahme" #: camlibs/ptp2/config.c:1780 msgid "Flash Off" msgstr "Blitz aus" #: camlibs/ptp2/config.c:1788 msgid "red eye suppression" msgstr "Rote-Augen-Vermeidung" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "Auffüllblitz" #: camlibs/ptp2/config.c:1790 msgid "auto + red eye suppression" msgstr "Auto + Rote-Augen-Vermeidung" #: camlibs/ptp2/config.c:1791 msgid "on + red eye suppression" msgstr "An + Rote-Augen-Vermeidung" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "iTTL" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 msgid "Commander" msgstr "Commander" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "Wiederholend" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "TTL" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 msgid "Auto Aperture" msgstr "Automatische Blende" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 msgid "Full Manual" msgstr "Voll Manuell" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "AF-S" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "AF-C" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "AF-A" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 msgid "MF (fixed)" msgstr "MF (fest)" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "MF (selektiert)" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "Mittelpunkt/Gewichtet" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "Durchschnitt" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "Berechnend" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "Partiell" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "Mittelpunkt/Gewichtete Messung" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "Punktmessung mit AutoFokus Rahmen" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "Mehrpunkt" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "Treu" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "Einfarbig" #: camlibs/ptp2/config.c:1947 msgid "User defined 1" msgstr "Benutzerdefiniert 1" #: camlibs/ptp2/config.c:1948 msgid "User defined 2" msgstr "Benutzerdefiniert 2" #: camlibs/ptp2/config.c:1949 msgid "User defined 3" msgstr "Benutzerdefiniet 3" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "Fokuspunkt nur im Zentrum, Manuell" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "Fokuspunkt nur im Zentrum, Automatisch" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "Mehrere Fokuspunkte (keine Spezifikation), Manuell" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 msgid "Multiple Focusing Points, Auto" msgstr "Mehrere Fokuspunkte, Automatisch" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 msgid "Multiple Focusing Points (Right)" msgstr "Mehrere Fokuspunkte (Rechts)" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "Mehrere Fokuspunkt e(Mitte)" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 msgid "Multiple Focusing Points (Left)" msgstr "Mehrere Fokuspunkt (Links)" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 msgid "Large" msgstr "Groß" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 msgid "Medium 1" msgstr "Mittel 1" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 msgid "Medium 2" msgstr "Mittel 2" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 msgid "Medium 3" msgstr "Mittel 3" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "Klein" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "16:9" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "3:2" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "10 Sekunden" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "2 Sekunden" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "TFT" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "PC" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "TFT + PC" #: camlibs/ptp2/config.c:2092 msgid "Setting 4" msgstr "Einstellung 4" #: camlibs/ptp2/config.c:2093 msgid "Setting 5" msgstr "Einstellung 5" #: camlibs/ptp2/config.c:2094 msgid "Setting 6" msgstr "Einstellung 6" #: camlibs/ptp2/config.c:2095 msgid "Setting 7" msgstr "Einstellung 7" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "Speicherkarte" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "Video OUT" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, c-format msgid "Unknown %d" msgstr "Unbekannt %d" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "Werkseinstellung" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "mRAW" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "sRAW" #: camlibs/ptp2/config.c:2246 #, fuzzy msgid "Smaller JPEG" msgstr "Kleineres JPEG (S2)" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "Kleines JPEG (S3)" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "mRAW + Sehr Feines JPEG" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "sRAW + Sehr Feines JPEG" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "mRAW + Mittel Feines JPEG" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "sRAW + Mittel Feines JPEG" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "mRAW + Kleines Feines JPEG" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "sRAW + Kleines Feines JPEG" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "mRAW + Large Normal JPEG" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "sRAW + Large Normal JPEG" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "mRAW + Medium Normal JPEG" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "sRAW + Medium Normal JPEG" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "mRAW + Small Normal JPEG" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "sRAW + Small Normal JPEG" #: camlibs/ptp2/config.c:2272 #, fuzzy msgid "RAW + Smaller JPEG" msgstr "RAW + Small Fine JPEG (S2)" #: camlibs/ptp2/config.c:2273 #, fuzzy msgid "mRAW + Smaller JPEG" msgstr "mRAW + Kleines Feines JPEG (S2)" #: camlibs/ptp2/config.c:2274 #, fuzzy msgid "sRAW + Smaller JPEG" msgstr "sRAW + Kleines Feines JPEG (S2)" #: camlibs/ptp2/config.c:2275 #, fuzzy msgid "RAW + Tiny JPEG" msgstr "RAW + Small Fine JPEG (S3)" #: camlibs/ptp2/config.c:2276 #, fuzzy msgid "mRAW + Tiny JPEG" msgstr "mRAW + Sehr Feines JPEG (S3)" #: camlibs/ptp2/config.c:2277 #, fuzzy msgid "sRAW + Tiny JPEG" msgstr "sRAW + Sehr Feines JPEG (S3)" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "Kontinuierlich" #: camlibs/ptp2/config.c:2305 msgid "Timer 10 sec" msgstr "Selbstauslöser 10 Sekunden" #: camlibs/ptp2/config.c:2306 msgid "Timer 2 sec" msgstr "Selbstauslöser 2 Sekunden" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "Einzelbild leise" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "Kontinuierlich leise" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, c-format msgid "Auto ISO" msgstr "Auto ISO" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "Rauschunterdrückung bei Auto ISO Mehr Bild" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, c-format msgid "%d Multi Frame Noise Reduction" msgstr "%d Mehr Bild Rauschunterdrückung" #: camlibs/ptp2/config.c:2453 msgid "Multi Frame Noise Reduction" msgstr "Mehr Bild Rauschunterdrückung" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Selbstauslöser" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "%0.4fs" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "%d %d/%d" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "%d/%d" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "%f" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "Kreativ" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "Aktion" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "Nachtlandschaft" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "Kinder" #: camlibs/ptp2/config.c:2868 msgid "Automatic (No Flash)" msgstr "Automatischer (Kein Blitz)" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "Film" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 msgid "Sports Action" msgstr "Sport" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "Sonnenuntergang" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "Nachtlandschaft" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "Freihand bei Dämmerung" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 msgid "Picture Effect" msgstr "Bild Effekt" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "Nachtlandschaft" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "Party/Innenraum" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "Strand/Schnee" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "Dämmerung" #: camlibs/ptp2/config.c:2893 msgid "Pet Portrait" msgstr "Tierportrait" #: camlibs/ptp2/config.c:2894 msgid "Candlelight" msgstr "Kerzenlicht" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "Blume" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "Herbstfarben" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "Essen" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "Kinder" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "Nahaufnahme" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "A6400 (160-6400)" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "A3200 (160-3200)" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "A800 (160-800)" #: camlibs/ptp2/config.c:3032 msgid "Flourescent" msgstr "Kunstlicht - Fluoreszenzlampe" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "Wasser" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "1 EV" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "2 EV" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "3 EV" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "Extra hoch" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "Szene" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 msgid "Effects" msgstr "Effekte" #: camlibs/ptp2/config.c:3075 msgid "U1" msgstr "U1" #: camlibs/ptp2/config.c:3076 msgid "U2" msgstr "U2" #: camlibs/ptp2/config.c:3104 msgid "Back Light" msgstr "Gegenlicht" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "Panorama" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "Weichzeichnen" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "Tilt-Shift" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "Farbe auswählen" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "Einzelbild" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "Mehrbild" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "Zeitraffer" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "Kontinuierlicher Langsame Geschwindigkeit" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 msgid "Timer" msgstr "Selbstauslöser" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "Spiegel hochklappen" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "Schnellreagierende Fernbedienung" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 msgid "Delayed Remote" msgstr "Verzögerte Fernsteuerung" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "Leises Auslösen" #: camlibs/ptp2/config.c:3125 msgid "Selftimer 2s" msgstr "Selbstauslöser 2s" #: camlibs/ptp2/config.c:3126 msgid "Selftimer 10s" msgstr "Selbstauslöser 10s" #: camlibs/ptp2/config.c:3127 #, fuzzy msgid "Bracketing C 0.3 Steps" msgstr "Belichtungsreihe Anzahl und Schritte" #: camlibs/ptp2/config.c:3128 #, fuzzy msgid "Bracketing C 0.7 Steps" msgstr "Belichtungsreihe Anzahl und Schritte" #: camlibs/ptp2/config.c:3129 #, fuzzy msgid "Bracketing C 1.0 Steps" msgstr "Belichtungsreihe Anzahl und Schritte" #: camlibs/ptp2/config.c:3130 #, fuzzy msgid "Bracketing C 2.0 Steps" msgstr "Belichtungsreihe Anzahl und Schritte" #: camlibs/ptp2/config.c:3131 #, fuzzy msgid "Bracketing C 3.0 Steps" msgstr "Belichtungsreihe Anzahl und Schritte" #: camlibs/ptp2/config.c:3132 #, fuzzy msgid "Bracketing S 0.3 Steps" msgstr "Belichtungsreihe Anzahl und Schritte" #: camlibs/ptp2/config.c:3133 #, fuzzy msgid "Bracketing S 0.7 Steps" msgstr "Belichtungsreihe Anzahl und Schritte" #: camlibs/ptp2/config.c:3134 #, fuzzy msgid "Bracketing S 1.0 Steps" msgstr "Belichtungsreihe Anzahl und Schritte" #: camlibs/ptp2/config.c:3135 #, fuzzy msgid "Bracketing S 2.0 Steps" msgstr "Belichtungsreihe Anzahl und Schritte" #: camlibs/ptp2/config.c:3136 #, fuzzy msgid "Bracketing S 3.0 Steps" msgstr "Belichtungsreihe Anzahl und Schritte" #: camlibs/ptp2/config.c:3137 #, fuzzy msgid "Bracketing WB Lo" msgstr "Abstufung" #: camlibs/ptp2/config.c:3138 #, fuzzy msgid "Bracketing WB Hi" msgstr "Abstufung" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 msgid "Centre-spot" msgstr "Zentral Punkt" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "Mehrpunkt" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "Einzelbereich" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "Nächstes Subjekt" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "Gruppendynamik" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "Einzelbereich AF" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "Dynamischer Bereich AF" #: camlibs/ptp2/config.c:3154 #, fuzzy msgid "Group-dynamic AF" msgstr "Gruppendynamischer AF" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "Dynamischer Bereich AF mit nächstem Motiv Priorität" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "Dynamischer AF Bereich (9)" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "Dynamischer AF Bereich (21)" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "Dynamischer AF Bereich (51)" #: camlibs/ptp2/config.c:3165 msgid "3D Tracking" msgstr "3D Verfolgung" #: camlibs/ptp2/config.c:3171 msgid "sRGB (portrait)" msgstr "sRGB (Portrait optimiert)" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "AdobeRGB" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "sRGB (Natur optimiert)" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "sRGB" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "Unbekannter Wert 0x%04x" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 msgid "Centre" msgstr "Zentrum" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "Oben" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 msgid "Bottom" msgstr "Unten" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "Links" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 msgid "Right" msgstr "Rechts" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "Mittelpunkt/Gewichtet" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "Mehrpunkt" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "Zentral Punkt" #: camlibs/ptp2/config.c:3266 msgid "Automatic Flash" msgstr "Automatischer Blitz" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 msgid "Fill flash" msgstr "Auffüll Blitz" #: camlibs/ptp2/config.c:3269 msgid "Red-eye automatic" msgstr "automatische Rote-Augen-Vermeidung" #: camlibs/ptp2/config.c:3270 msgid "Red-eye fill" msgstr "Rote-Augen-Blitz Füllmodus" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 msgid "External sync" msgstr "Externer Sync" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 msgid "Auto Slow Sync" msgstr "Automatischer Langsamer Sync" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "Hinterer Vorhang Sync+Langsamer Sync" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 msgid "Red-eye Reduction + Slow Sync" msgstr "Rote-Augen-Vermeidung + Langsamer Sync" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "Vorderer Vorhang Sync" #: camlibs/ptp2/config.c:3277 msgid "Red-eye reduction" msgstr "Rote-Augen-Vermeidung" #: camlibs/ptp2/config.c:3278 msgid "Red-eye reduction with slow sync" msgstr "Rote-Augen-Vermeidung + Langsamer Sync" #: camlibs/ptp2/config.c:3279 msgid "Slow sync" msgstr "Langsamer Sync" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "Hinterer Vorhang Sync+Langsamer Sync" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "Hinterer Vorhang Sync" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "Hinterer Vorhang Sync" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Langsamer Sync" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Schwarz & Weiß" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "Nachtsicht" #: camlibs/ptp2/config.c:3298 msgid "Color sketch" msgstr "Farbmalmodus" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "Miniatur Effekt" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "Selektive Farbe" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "Silhouette" #: camlibs/ptp2/config.c:3302 msgid "High key" msgstr "High Key" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "Low Key" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 msgid "infinite" msgstr "unendlich" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "%d mm" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "AF mit Gesichts-Priorität" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "Weitwinkel AF" #: camlibs/ptp2/config.c:3772 msgid "Normal-area AF" msgstr "Normaler Bereich AF" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "Subjektfolgender AF" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "Einzel AF" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "Kontinuierlicher AF" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 msgid "Manual Focus" msgstr "Manueller Fokus" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 msgid "AE/AF Lock" msgstr "AE/AF Lock" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "nur AE Lock" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "Nur AF Lock" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "AF Lock halten" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "AF an" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "Blitzstärke Lock" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "20 Sekunden" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 msgid "1 minute" msgstr "1 Minute" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "5 Minuten" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 msgid "10 minutes" msgstr "10 Minuten" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "5 Sekunden" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "Kamera SDRAM" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "6 mm" #: camlibs/ptp2/config.c:3828 msgid "8 mm" msgstr "8 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "10 mm" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "12 mm" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "1/60" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "1/30" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "1/15" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "1/8" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "1/4" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "1/2" #: camlibs/ptp2/config.c:3842 msgid "1" msgstr "1" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 msgid "2" msgstr "2" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 msgid "4" msgstr "4" #: camlibs/ptp2/config.c:3845 msgid "8" msgstr "8" #: camlibs/ptp2/config.c:3846 msgid "15" msgstr "15" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "30" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "Langzeitbelichtung" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "30s" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "25s" #: camlibs/ptp2/config.c:3855 msgid "20s" msgstr "20s" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 msgid "15s" msgstr "15s" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "13s" #: camlibs/ptp2/config.c:3858 msgid "10s" msgstr "10s" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "8s" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "6s" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "5s" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "4s" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "3s" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "2.5s" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "2s" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "1.6s" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "1.3s" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "1s" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "1/1.3s" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "1/1.6s" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "1/2s" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "1/2.5s" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "1/3s" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "1/4s" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "1/5s" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "1/6s" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "1/8s" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "1/10s" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "1/13s" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "1/15s" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "1/20s" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "1/25s" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "1/30s" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "1/40s" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "1/50s" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "1/60s" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "1/80s" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "1/100s" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "1/125s" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "1/160s" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "1/200s" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "1/250s" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "1/320s" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "1/400s" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "1/500s" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "1/640s" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "1/800s" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "1/1000s" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "1/1250s" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "1/1600s" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "1/2000s" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "1/2500s" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "1/3200s" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "1/4000s" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "1/5000s" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "1/6400s" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "1/8000s" #: camlibs/ptp2/config.c:3916 msgid "15 minutes" msgstr "15 Minuten" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 msgid "Sharper" msgstr "Schärfer" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "Weicher" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 msgid "Direct Print" msgstr "Direkt Druck" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 msgid "Medium Low" msgstr "Mittel Niedrig" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 msgid "Medium high" msgstr "Mittel Hoch" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 msgid "Low contrast" msgstr "Niedriger Kontrast" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 msgid "Medium High" msgstr "Mittel Hoch" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "Hoch kontrolliert" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "Fokuszone Nahaufnahme" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "Fokuszone Sehr Nah" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "Fokuszone Nah" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "Fokuszone Mitte" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "Fokuszone Weit" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "Fokuszone (Reserviert 1)" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "Fokuszone (Reserviert 2)" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "Fokuszone (Reserviert 3)" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "Fokuszone (Reserviert 4)" #: camlibs/ptp2/config.c:3976 msgid "Automatic Macro" msgstr "Automatischer Makro" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "Einzel AF" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "Kontinuierlicher AF" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "Einzel AF" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "AI Servo" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 msgid "AI Focus" msgstr "AI Fokus" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "4 Sekunden" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "8 Sekunden" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "Halten" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 msgid "Fluorescent H" msgstr "Fluoreszenz H" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 msgid "Custom Whitebalance PC-1" msgstr "Benutzerdefinierter Weißabgleich PC-1" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 msgid "Custom Whitebalance PC-2" msgstr "Benutzerdefinierter Weißabgleich PC-2" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 msgid "Custom Whitebalance PC-3" msgstr "Benutzerdefinierter Weißabgleich PC-3" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "Fehlende Zahl" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "Schatten" #: camlibs/ptp2/config.c:4118 msgid "Low sharpening" msgstr "Wenig Schärfe" #: camlibs/ptp2/config.c:4120 msgid "Black & white" msgstr "Schwarz und Weiss" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 msgid "AE & Flash" msgstr "AE & Blitz" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 msgid "AE only" msgstr "nur AE" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 msgid "Flash only" msgstr "nur Blitz" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 msgid "WB bracketing" msgstr "Weißabgleichabstufung" #: camlibs/ptp2/config.c:4221 msgid "ADL bracketing" msgstr "ADL Abstufung" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "Einschalten" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "Abschalten" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "Ein- und Abschalten" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "50 Hz" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "60 Hz" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "Schnelle Reaktion" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 msgid "Remote Mirror Up" msgstr "Entfernt Spiegel hochklappen" #: camlibs/ptp2/config.c:4248 msgid "Application Mode 0" msgstr "Applikationsmodus 0" #: camlibs/ptp2/config.c:4249 msgid "Application Mode 1" msgstr "Applikationsmodus 1" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "Mittel" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "Erweitert" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "MTR > Unter" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "Unter > MTR" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "Auto Empfindlichkeit" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "Hohe Empfindlichkeit" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "Mittlere Empfindlichkeit" #: camlibs/ptp2/config.c:4286 msgid "Low sensitivity" msgstr "Niedrige Empfindlichkeit" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "Mikrofon aus" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "Hoch 1" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "Hoch 2" #: camlibs/ptp2/config.c:4378 msgid "Flash/speed" msgstr "Blitz/Belichtungszeit" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "Blitz/Belichtungszeit/Blende" #: camlibs/ptp2/config.c:4380 msgid "Flash/aperture" msgstr "Blitz/Blende" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "JPEG Basic" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 msgid "NEF+Fine" msgstr "NEF+Fein" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "NEF (Raw)" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "NEF+Basic" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 msgid "NEF+Normal" msgstr "NEF+Normal" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "TIFF (RGB)" #: camlibs/ptp2/config.c:4575 msgid "RAW+JPEG" msgstr "RAW+JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "6 Sekunden" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "16 Sekunden" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "30 Sekunden" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "30 Minuten" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "Verlustlos" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "Verlustbehaftet" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "Grössen Priorität" #: camlibs/ptp2/config.c:4642 msgid "Optimal quality" msgstr "Optimale Qualität" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "1/250s (Auto FP)" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "1/320s (Auto FP)" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "Auslösen" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "Auslösen + Fokussieren" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "9 Punkte" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "21 Punkte" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "51 Punkte" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "51 Punkte (3D)" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "5 (lang)" #: camlibs/ptp2/config.c:4695 msgid "3 (Normal)" msgstr "3 (Normal)" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "1 (Kurz)" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "Auslöser/AF-ON" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "AF-AN" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "AF51" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "AF11" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "AE/AF Lock" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "nur AE Lock" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "AE LOck (Löschen beim Auslösen)" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "AE Lock halten" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "nur AF Lock" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "4 fps" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "3 fps" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "2 fps" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "1 fps" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "6 fps" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "5 fps" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "9 pfs" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "8 fps" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "7 fps" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "11 fps" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "10 fps" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "Nicht zugeordnet" #: camlibs/ptp2/config.c:4780 msgid "Preview" msgstr "Vorschau" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "FV Lock" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "AE Lock halten" #: camlibs/ptp2/config.c:4788 #, fuzzy msgid "Bracketing burst" msgstr "Belichtungsreihe" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "Matrix Messung" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "Mittelpunkt/Gewichtete Messung" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/config.c:4791 msgid "Spot metering" msgstr "Spotmessung" #: camlibs/ptp2/config.c:4792 msgid "Playback" msgstr "Anzeigen" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "+NEF (Raw)" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "Aktives D-Lighting" #: camlibs/ptp2/config.c:4797 #, fuzzy msgid "1 step spd/aperture" msgstr "Blitz/Belichtungszeit/Blende" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "Nicht CPU Objektiv Nummer" #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "Virtueller Horizont im Sucher" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "Starte Filmaufnahme" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "50%" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "100%" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "75%" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "25%" #: camlibs/ptp2/config.c:4871 msgid "Unknown value" msgstr "Unbekannter Wert" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "Nikon autofokus erhielt keinen Fokus." #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "Der manuelle Fokus funktioniert nur im LiveView Modus." #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "Der manuelle Fokus ist am Anschlag." #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "Das Fokus Stepping ist zu gering." #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "Halb durchdrücken" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 msgid "Press Full" msgstr "Voll durchdrücken" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "Halb durchdrücken" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "Voll auslösen" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "Sofort" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 #, fuzzy msgid "Press 1" msgstr "Halb durchdrücken" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 #, fuzzy msgid "Press 2" msgstr "Halb durchdrücken" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 #, fuzzy msgid "Press 3" msgstr "Halb durchdrücken" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 #, fuzzy msgid "Release 1" msgstr "Auslösen" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 #, fuzzy msgid "Release 2" msgstr "Auslösen" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 #, fuzzy msgid "Release 3" msgstr "Auslösen" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "Nah 1" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "Nah 2" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "Nah 3" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "Weit 1" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "Weit 2" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "Weit 3" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "Nah %d" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "Weit %d" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "Anschalten der Nikon LiveView fehlgeschlagen" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" "Um Langzeit Aufnahmen zu ermöglichen, muss das Mode Rad auf 'M' stehen und " "die Belichtungszeit auf 'bulb'." #: camlibs/ptp2/config.c:5923 msgid "Internal RAM" msgstr "interner Speicher" #: camlibs/ptp2/config.c:5924 msgid "Memory card" msgstr "Speicherkarte" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "ESSID" #: camlibs/ptp2/config.c:6092 msgid "Display" msgstr "Anzeige" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "Anlegedatum: %s, Letzte Benutzung: %s" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "Löschen" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "WEP 64-bit" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "WEP 128-bit" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "Managed" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "Ad-hoc" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "Profilname" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "WIFI ESSID" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "IP Addresse (leer bei DHCP)" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "Netzwerkmaske" #: camlibs/ptp2/config.c:6359 msgid "Default gateway" msgstr "Default gateway" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "Zugriffsmodus" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "WiFi Kanal" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "Verschlüsselung" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "Kryptographischer Schlüssel (hex)" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "Schreiben" #: camlibs/ptp2/config.c:6412 msgid "List Wifi profiles" msgstr "Liste aller WLAN-Profile" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "Lege WiFI Profil an" #: camlibs/ptp2/config.c:6521 msgid "Power Down" msgstr "Abschalten" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 msgid "Focus Lock" msgstr "Fokus Lock" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 msgid "Bulb Mode" msgstr "Langzeit Belichtungsmodus" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "UILock" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "Fahre NIKON DSLR Autofokus" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "Fahre Canon DSLR Autofokus" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "Fahre NIKON DSLR manuellen Fokus" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "Setze den NIKON Autofokusbereich" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "Setze Nikon Kontrollmodus" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "Fahre Canon DSLR manuellen Fokus" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "Breche Canon DSLR Autofokus ab" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "Canon EOS Zoom" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "Canon EOS Zoom Position" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "Canon EOS Viewfinder" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "Nikon Viewfinder" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "Canon EOS Auslöser" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "CHDK Script" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 msgid "Movie Capture" msgstr "Film Aufnahme" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 msgid "Serial Number" msgstr "Seriennummer" #: camlibs/ptp2/config.c:6548 msgid "Camera Manufacturer" msgstr "Kamera Hersteller" #: camlibs/ptp2/config.c:6550 msgid "Device Version" msgstr "Version des Gerätes" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "Hersteller Erweiterung" #: camlibs/ptp2/config.c:6556 msgid "PTP Version" msgstr "PTP Version" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 msgid "DPOF Version" msgstr "DPOF Version" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "Netzanschluss" #: camlibs/ptp2/config.c:6559 msgid "External Flash" msgstr "Externer Blitz" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "Batterie Ladezustand" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 msgid "Camera Orientation" msgstr "Kameraausrichtung" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 msgid "Flash Open" msgstr "Blitz offen" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 msgid "Flash Charged" msgstr "Blitz geladen" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 msgid "Lens Name" msgstr "Objektivbezeichnung" #: camlibs/ptp2/config.c:6570 msgid "Shutter Counter" msgstr "Auslöseanzahl" #: camlibs/ptp2/config.c:6571 msgid "Available Shots" msgstr "Verfügbarer Aufnahmen" #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "minimale Fokus Tiefe" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "maximale Fokus Tiefe" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "Maximale Blende bei Minimaler Brennweite" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "Maximale Blende bei Maximaler Brennweite" #: camlibs/ptp2/config.c:6576 msgid "Low Light" msgstr "Wenig Licht" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 msgid "Light Meter" msgstr "Belichtungsmesser" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 msgid "AF Locked" msgstr "AF Lock an" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "AE Lock an" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 msgid "FV Locked" msgstr "FV Lock an" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 msgid "Camera Date and Time" msgstr "Kamera Datum und Zeit" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "Signalton Modus" #: camlibs/ptp2/config.c:6591 msgid "Image Comment" msgstr "Bild Kommentar" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 msgid "Enable Image Comment" msgstr "Schalte Bild Kommentar ein" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 msgid "LCD Off Time" msgstr "Zeit für automatische Abschaltung des LCD" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 msgid "Recording Media" msgstr "Aufnahmemedium" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "Schnellansicht Zeit" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "CSM Menü" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "Umgedrehtes Kommando Rad" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 msgid "Camera Output" msgstr "Kamera Output" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "Aufnahmemedium" #: camlibs/ptp2/config.c:6602 msgid "EVF Mode" msgstr "EVF Modus" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "Künstler" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "CCD Seriennummer" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Copyright" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "Reinige Sensor" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 msgid "Flicker Reduction" msgstr "Flimmer Vermeidung" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "Custom Functions Ex" #: camlibs/ptp2/config.c:6613 msgid "Focus Info" msgstr "Fokusinformation" #: camlibs/ptp2/config.c:6614 msgid "Focus Area" msgstr "Fokus Bereich" #: camlibs/ptp2/config.c:6615 msgid "Auto Power Off" msgstr "Autom. Abschaltung" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "Menüs und Abspielen" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "Schnelles Dateisystem" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 msgid "Capture Target" msgstr "Aufnahmeziel" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 msgid "Image Format SD" msgstr "Bild Format SD" #: camlibs/ptp2/config.c:6634 msgid "Image Format CF" msgstr "Bild Format CF" #: camlibs/ptp2/config.c:6636 msgid "Image Format Ext HD" msgstr "Bild Format Externe HD" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "ISO-Empfindlichkeit" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 msgid "ISO Auto" msgstr "ISO Auto" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 msgid "WhiteBalance" msgstr "Weißabgleich" #: camlibs/ptp2/config.c:6654 msgid "WhiteBalance Adjust A" msgstr "Weißabgleich Anpassung A" #: camlibs/ptp2/config.c:6655 msgid "WhiteBalance Adjust B" msgstr "Weißabgleich Anpassung B" #: camlibs/ptp2/config.c:6656 msgid "WhiteBalance X A" msgstr "Weißabgleich X A" #: camlibs/ptp2/config.c:6657 msgid "WhiteBalance X B" msgstr "Weißabgleich X B" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "Foto Effekt" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 msgid "Color Model" msgstr "Farbmodell" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 msgid "Color Space" msgstr "Farbraum" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "Rauschunterdrückung bei Langzeit Aufnahme" #: camlibs/ptp2/config.c:6669 msgid "Auto Focus Mode 2" msgstr "Autofokusmodus 2" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "Autofokus Hilfslicht" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "Rotationsmarkierung" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 msgid "Flash Compensation" msgstr "Blitzkorrektur" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 msgid "AEB Exposure Compensation" msgstr "AEB automatische Belichtungskorrektur" #: camlibs/ptp2/config.c:6685 msgid "Nikon Flash Mode" msgstr "Nikon Blitzmodus" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 msgid "Flash Commander Mode" msgstr "Blitz Commander Modus" #: camlibs/ptp2/config.c:6687 msgid "Flash Commander Power" msgstr "Blitz Commander Modus Energie" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "Blitz Commander Kanal" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 msgid "Flash Command Self Mode" msgstr "Blitz Commander eigener Modus" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 msgid "Flash Command Self Compensation" msgstr "Blitz Commander eigene Belichtungskorrektur" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "Blitz Commander Selbst Wert" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 msgid "Flash Command A Mode" msgstr "Blitz Commander A Modus" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 msgid "Flash Command A Compensation" msgstr "Blitz Commander A Belichtungskorrektur" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "Blitz Commander A Wert" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 msgid "Flash Command B Mode" msgstr "Blitz Commander B Modus" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 msgid "Flash Command B Compensation" msgstr "Blitz Commander B Belichtungskorrektur" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "Blitz Commander B Wert" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "AF Bereich Aufhellung" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "AF Signalton Modus" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "F-Nummer" #: camlibs/ptp2/config.c:6702 #, fuzzy msgid "Movie F-Number" msgstr "F-Nummer" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "Flexibles Programm" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "Fokus Entfernung" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "Fokus Tiefe" #: camlibs/ptp2/config.c:6710 msgid "Focus Mode 2" msgstr "Fokusmodus 2" #: camlibs/ptp2/config.c:6712 #, fuzzy msgid "Continuous AF" msgstr "Kontinuierlich" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "Effektmodus" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 msgid "Exposure Program" msgstr "Belichtungs Programm" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 msgid "Scene Mode" msgstr "Szenen Modus" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "Seitenverhältnis" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 msgid "HDR Mode" msgstr "HDR Modus" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "HDR Hoch Dynamisch" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "HDR Weichzeichnen" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "Bildaufnahme Modus" #: camlibs/ptp2/config.c:6725 msgid "Canon Shooting Mode" msgstr "Canon Aufnahme Modus" # Is this correct? #: camlibs/ptp2/config.c:6726 msgid "Canon Auto Exposure Mode" msgstr "Canon Automatischer Belichtungsmodus" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 msgid "Drive Mode" msgstr "Auslöse Modus" #: camlibs/ptp2/config.c:6728 msgid "Picture Style" msgstr "Bild Style" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "Entfernungs Messungs Modus" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "Belichtungsmessmodus" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "AV Open" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "AV Max" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "Fokuspunkt" #: camlibs/ptp2/config.c:6738 msgid "Capture Delay" msgstr "Aufnahmeverzögerung" #: camlibs/ptp2/config.c:6742 msgid "Shutter Speed 2" msgstr "Belichtungszeit 2" #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "Belichtungszeit 2" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "Spotmessung" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 msgid "AF Distance" msgstr "Autofokus Entfernung" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 msgid "Focus Area Wrap" msgstr "Fokus Bereich Wraparound" #: camlibs/ptp2/config.c:6751 msgid "Exposure Delay Mode" msgstr "Belichtungs Verzögerungs Modus" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 msgid "Exposure Lock" msgstr "Belichtungs Lock" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "AE-L/AF-L Modus" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "Live View AF Modus" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "Live View AF Fokus" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "Bildnummer Zählung" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 msgid "Flash Sign" msgstr "Blitzzeichen" #: camlibs/ptp2/config.c:6759 msgid "Modelling Flash" msgstr "Modellierblitz" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "Gitterlinien im Sucher" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 msgid "Image Review" msgstr "BIldvorschau" #: camlibs/ptp2/config.c:6762 msgid "Image Rotation Flag" msgstr "Rotationsmarkierung" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "Auslösen ohne CF Karte" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 msgid "Flash Mode Manual Power" msgstr "Blitzmodus mit manuelle Energie" #: camlibs/ptp2/config.c:6765 msgid "Auto Focus Area" msgstr "Autofokusbereich" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 msgid "Flash Exposure Compensation" msgstr "Blitz Belichtungskorrektur" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 msgid "Bracketing" msgstr "Abstufung" #: camlibs/ptp2/config.c:6769 msgid "Bracket Mode" msgstr "Abstufungsmodus" #: camlibs/ptp2/config.c:6770 msgid "EV Step" msgstr "EV-Schritt" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 msgid "Bracket Set" msgstr "Abstufungsbereich" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "Abstufungsrichtung" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "Bildzahl im Burstmodus" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "Burst Abstand" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "Maximale Bildanzahl" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 msgid "Auto White Balance Bias" msgstr "Automatische Weißabgleich Abweichung" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 msgid "Tungsten White Balance Bias" msgstr "Tungsten Weißabgleich Abweichung" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 msgid "Fluorescent White Balance Bias" msgstr "Floureszierend Weißabgleich Abweichung" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 msgid "Daylight White Balance Bias" msgstr "Tageslicht Weißabgleich Abweichung" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 msgid "Flash White Balance Bias" msgstr "Blitz Weißabgleich Abweichung" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 msgid "Cloudy White Balance Bias" msgstr "Wolkig Weißabgleich Abweichung" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 msgid "Shady White Balance Bias" msgstr "Schattig Weißabgleich Abweichung" #: camlibs/ptp2/config.c:6794 msgid "White Balance Bias Preset Nr" msgstr "Weißabgleich Abweichung Preset Nr" #: camlibs/ptp2/config.c:6795 msgid "White Balance Bias Preset 0" msgstr "Weißabgleich Abweichung Preset 0" #: camlibs/ptp2/config.c:6796 msgid "White Balance Bias Preset 1" msgstr "Weißabgleich Abweichung Preset 1" #: camlibs/ptp2/config.c:6797 msgid "White Balance Bias Preset 2" msgstr "Weißabgleich Abweichung Preset 2" #: camlibs/ptp2/config.c:6798 msgid "White Balance Bias Preset 3" msgstr "Weißabgleich Abweichung Preset 3" #: camlibs/ptp2/config.c:6799 msgid "White Balance Bias Preset 4" msgstr "Weißabgleich Abweichung Preset 4" #: camlibs/ptp2/config.c:6800 msgid "Selftimer Delay" msgstr "Selbstauslöserzeit" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "Mittelpunkt/Gewichtet Bereich" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 msgid "Flash Shutter Speed" msgstr "Blitz Belichtungszeit" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 msgid "Remote Timeout" msgstr "Fernsteuerungsabschaltzeit" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 msgid "Remote Mode" msgstr "Entfernter Modus" #: camlibs/ptp2/config.c:6805 msgid "Application Mode" msgstr "Applikationsmodus" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "Bild Optimierung" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 msgid "Sharpening" msgstr "Schärfen" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 msgid "Tone Compensation" msgstr "Ton Anpassung" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 msgid "Saturation" msgstr "Sättigung" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 msgid "Hue Adjustment" msgstr "Farbton Anpassung" #: camlibs/ptp2/config.c:6811 msgid "Auto Exposure Bracketing" msgstr "Automatische Belichtungs Abstufung" #: camlibs/ptp2/config.c:6812 msgid "Movie Sound" msgstr "Film Sound" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 msgid "Manual Movie Setting" msgstr "Manuelle Filmeinstellung" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "Mikrofon" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "Vertauschte Indikatoren" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "Automatische Verzerrungs Kontrolle" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 msgid "Video Mode" msgstr "Video Modus" #: camlibs/ptp2/config.c:6835 msgid "Meter Off Time" msgstr "Sensorabschaltzeit" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "Weise Func. Button zu" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "Weise Vorschau Knopf zu" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 msgid "Movie Quality" msgstr "Filmqualität" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 msgid "Minimum Shutter Speed" msgstr "Minimale Belichtungszeit" #: camlibs/ptp2/config.c:6862 msgid "Movie Resolution" msgstr "Filmauflösung" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 msgid "Continuous Shooting Speed Slow" msgstr "Langsame Kontinuierliche Aufname" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "Hohes Limit für Auto ISO" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "Blitzsynchronisations Geschwindigkeit" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/config.c:6869 msgid "Focus Metering" msgstr "Fokus Messung" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 msgid "High ISO Noise Reduction" msgstr "Rauschunterdrückung bei hohen ISO" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 msgid "Continuous Shooting Speed High" msgstr "Schnelle kontinuierliche Aufnahme" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 msgid "JPEG Compression Policy" msgstr "Richtlinie der JPEG-Kompression" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "AF-C Modus Priorität" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "AF-S Modus Priorität" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "AF Aktivierung" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "Dynamischer AF-Bereich" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 msgid "AF Lock On" msgstr "AF-Sperre An" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "AF-Bereichspunkt" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "AF-Einschaltknopf" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "Rauschunterdrückung bei hohen ISO" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "Maximum an kontinuierlichen Aufnahmen" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 msgid "Raw Compression" msgstr "RAW.Komprimierung" #: camlibs/ptp2/config.c:6922 msgid "Image Quality 2" msgstr "Bildqualität 2" #: camlibs/ptp2/config.c:6944 msgid "Image Settings" msgstr "Bildeinstellungen" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "Aufnahmeeinstellungen" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "WLAN-Profile" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 msgid "Other PTP Device Properties" msgstr "Andere PTP Geräte Settings" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "PTP Setting 0x%04x" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "Die Property »%s« / 0x%04x is derzeit read-only." #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "Die Property »%s« / 0x%04x wurde nicht gesetzt, (0x%04x: %s)." #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "Die Property »%s« / 0x%04x wurde nicht gesetzt, (0x%04x: %s)." #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "Parsen des Wertes von Widget »%s« / 0x%04x fehlgeschalten mit %d." #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "Es muss ein mit /store_xxxxxxxx/ beginnender Folder angegeben werden." #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" "PTP2 driver\n" "(c)2001-2005 Mariusz Woloszyn .\n" "(c)2003-%d Marcus Meißner .\n" "Dieser Treiber unterstützt Kamera die PTP oder PictBridge(tm) kompatibel " "sind, und\n" "MP3 Player die das Media Transfer Protokol (MTP) unterstützen.\n" "\n" "Viel Spaß!" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "Anschalten des Viewfinder fehlgeschlagen" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "Holen des Viewfinder Bildes fehlgeschlagend" #: camlibs/ptp2/library.c:2537 msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "Diese Kamera unterstützt nicht den Canon Viewfinder Modus" #: camlibs/ptp2/library.c:2545 msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "Diese Nikon Kamera unterstützt nicht den LiveView Modus" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "Diese Nikon Kamera scheint kein JPEG im LiveView Modus zu holen" #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "Beenden der LiveView fehlgeschlagen" #: camlibs/ptp2/library.c:2799 msgid "Sorry, your camera does not support Nikon capture" msgstr "Diese Kamera unterstützt keine Nikon spezifische Aufnahme von Bildern" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Diese Canon Kamera unterstützt nicht den Canon EOS Aufnahme Modus" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 #, fuzzy msgid "Canon EOS Half-Press failed" msgstr "Canon EOS Aufnahme fehlgeschlagen" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "Canon EOS Event Abfrage fehlgeschlagen" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "Canon EOS Aufnahme fehlgeschlagen: Evt kein Fokus?" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 #, fuzzy msgid "Canon EOS Half-Release failed" msgstr "Canon EOS Aufnahme fehlgeschlagen" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 #, fuzzy msgid "Canon EOS Full-Press failed" msgstr "Canon EOS Aufnahme fehlgeschlagen" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 #, fuzzy msgid "Canon EOS Full-Release failed" msgstr "Canon EOS Aufnahme fehlgeschlagen" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "Canon EOS Aufnahme fehlgeschlagen" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "Canon EOS Aufnahme fehlgeschlagen: %x" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "Canon EOS Aufnahme fehlgeschlagen: Evt Spiegel hochgeklappt?" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "Canon EOS Aufnahme fehlgeschlagen: Karte voll?" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "Canon EOS Aufnahme fehlgeschlagen: Karte read-only?" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" "Canon EOS Aufnahme fehlgeschlagen: Unbekannter Fehler %d, bitte berichten." #: camlibs/ptp2/library.c:3332 msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "" "Diese Kamera versteht leider den Canon-Befehl zum Beginn von Aufnahmen per " "Fernauslöser nicht" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "Abschalten des Viewfinders fehlgeschlagen" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 msgid "Canon Capture failed" msgstr "Canon Aufnahme fehlgeschlagen" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "Diese Kamera unterstützt keine Aufnahme von Bildern" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "Canon EOS Aufnahme triggern fehlgeschlagen: 0x%x" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" "Das Initialisieren Ihrer Kamera hat nicht funktioniert. Bitte reporten Sie " "dies." #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "schreibgeschützt" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "schreibbar" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, c-format msgid "Manufacturer: %s\n" msgstr "Hersteller: %s\n" #: camlibs/ptp2/library.c:4800 #, c-format msgid "Model: %s\n" msgstr "Modell: %s\n" #: camlibs/ptp2/library.c:4802 #, c-format msgid " Version: %s\n" msgstr " Version: %s\n" #: camlibs/ptp2/library.c:4805 #, c-format msgid " Serial Number: %s\n" msgstr " Seriennummer: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "Vendor Extension ID: 0x%x (%d.%d)\n" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "Beschreibung der Vendor Extension: %s\n" #: camlibs/ptp2/library.c:4821 #, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "Version des PTP Standards: %d.%d\n" #: camlibs/ptp2/library.c:4828 #, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Funktionsmodus: 0x%04x\n" #: camlibs/ptp2/library.c:4833 #, c-format msgid "" "\n" "Capture Formats: " msgstr "" "\n" "Aufnahmeformate: " #: camlibs/ptp2/library.c:4847 #, c-format msgid "Display Formats: " msgstr "Anzeigeformate: " #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "Unterstützte MTP Object Properties:\n" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr "PTP Fehler %04x beim Abfragen" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" "\n" "Fähigkeiten des Geräts:\n" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "\tDateien Download, " #: camlibs/ptp2/library.c:4902 #, c-format msgid "File Deletion, " msgstr "Löschen von Dateien, " #: camlibs/ptp2/library.c:4904 #, c-format msgid "No File Deletion, " msgstr "kein Löschen von Dateien, " #: camlibs/ptp2/library.c:4908 #, c-format msgid "File Upload\n" msgstr "Hochladen von Dateien\n" #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "kein Hochladen von Dateien\n" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "\tGenerische Bild Aufnahme, " #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "\tKeine Aufnahme von Bildern, " #: camlibs/ptp2/library.c:4920 #, c-format msgid "Open Capture, " msgstr "Offene Aufnahme, " #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "keine Offene Aufnahme, " #: camlibs/ptp2/library.c:4929 #, c-format msgid "Canon Capture" msgstr "Canon Aufnahme" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "Canon EOS Aufnahme" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "%sCanon EOS Auslöser" #: camlibs/ptp2/library.c:4947 #, c-format msgid "Nikon Capture 1" msgstr "Nikon Aufnahme 1" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "%sNikon Aufname 2" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "%sNikon Aufnahme 3" #: camlibs/ptp2/library.c:4965 #, c-format msgid "Sony Capture" msgstr "Sony Aufnahme" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "Olympus E XML Aufnahme\n" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "Kein Vendor spezifischer Aufnahmemodus\n" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "\tNikon WiFi Unterstützung\n" #: camlibs/ptp2/library.c:4991 #, c-format msgid "\tCanon Wifi support\n" msgstr "\tCanon WiFI Unterstützung\n" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" "\n" "Informationen über Speichermedium:\n" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "\tBeschreibung des Speichergeräts: %s\n" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "\tLabel des Speichergerätes: %s\n" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "Eingebautes ROM" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "Entfernbares ROM" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "Eingebauter Speicher" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "Entfernbarer Speicher (Karte)" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, c-format msgid "Unknown: 0x%04x\n" msgstr "Unbekannt: 0x%04x\n" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "\tSpeichertyp: %s\n" #: camlibs/ptp2/library.c:5043 msgid "Generic Flat" msgstr "Generisch flacher Modus" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "Generisch hierarchischer Modus" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "Standard Digital Kamera Layout (DCIM)" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "\tTyp des Dateisystems: %s\n" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "Lesen und Schreiben" #: camlibs/ptp2/library.c:5056 msgid "Read-Only" msgstr "nur Lesen" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "Nur Lesen und Löschen" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "\tZugriffsmöglichkeiten: %s\n" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "\tMaximale Kapazität: %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "\tFreier Platz (Bytes): %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5075 #, c-format msgid "\tFree Space (Images): %d\n" msgstr "\tFreier Speicher (Bilder): %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" "\n" "Properties des Geräts:\n" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr " nicht ausgelesen.\n" #: camlibs/ptp2/library.c:5116 #, c-format msgid "cannot be queried.\n" msgstr "kann nicht abgefragt werden.\n" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr "PTP Fehler %x beim Abfragen" #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "Datei »%s/%s« existiert nicht" #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "Der Metadaten Dateityp ist nur für MTP Geräte unterstützt." #: camlibs/ptp2/library.c:6414 msgid "Device does not support setting object protection." msgstr "Diese Kamera unterstützt kein Setzen von Bildschutz." #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "Das Gerät konnte Object Protection nicht auf %d setzen" #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Initialisiere Kamera" #: camlibs/ptp2/library.c:7254 #, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "" "Derzeit ist PTP nur für USB und PTP/IP Kameras implementiert, Port Typ ist " "%x." #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" "Olympus E series XML Unterstützung ist derzeit nur mit libxml2 moeglich." #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "PTP- Undefinierter Fehler" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP-OK!" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "PTP-Allgemeiner Fehler" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP-Sitzung nicht geöffnet" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP-Fehlerhafte Transaktions-ID" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "PTP-Operation nicht unterstützt" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "PTP-Parameter nicht unterstützt" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP-Unvollständiger Transfer" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP-Fehlerhafte Storage-ID" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "PTP-Ungültiges Object Handle" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "PTP-Geräteeigenschaft nicht unterstützt" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP-Ungültiger Object Formatcode" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP-Speicher voll" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP-Objekt schreibgeschützt" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "PTP-Speicher-schreibgeschützt" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP-Zugriff verweigert" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP-Kein Thumbnail vorhanden" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP-Selbsttest fehlgeschlagen" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP-Partiell gelöscht" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "PTP- Speicher nicht verfügbar" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "PTP- Spezifikation durch Format nicht unterstützt" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "PTP-Keine gültige Object Information" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP-Ungültiges Codeformat" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "PTP-Unbekannter Händlercode" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP-Aufnahme bereits beendet" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "PTP-Device belegt" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "PTP-Ungültiges Vaterobjekt" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "PTP-Ungültiges Geräteeigenschaften Format" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "PTP-Ungültiger Geräteeigenschaftswert" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "PTP-Ungültiger Parameter" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP- Sitzung bereits geöffnet." #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP-Transaktion abgebrochen" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "PTP-Spezifikation des Zieles nicht unterstützt" #: camlibs/ptp2/ptp.c:4047 msgid "Filename Required" msgstr "Dateiname erforderlich" #: camlibs/ptp2/ptp.c:4048 msgid "Filename Conflicts" msgstr "Dateinamenskonflikt" #: camlibs/ptp2/ptp.c:4049 msgid "Filename Invalid" msgstr "Dateiname ungültig" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "Hardware Fehler" #: camlibs/ptp2/ptp.c:4052 msgid "Out of Focus" msgstr "Nicht im Fokus" #: camlibs/ptp2/ptp.c:4053 msgid "Change Camera Mode Failed" msgstr "Ändern des Kameramodells fehlgeschlagen" #: camlibs/ptp2/ptp.c:4054 msgid "Invalid Status" msgstr "Ungültiger Status" #: camlibs/ptp2/ptp.c:4055 msgid "Set Property Not Supported" msgstr "Setzen der PTP-Geräteeigenschaft nicht unterstützt" #: camlibs/ptp2/ptp.c:4056 msgid "Whitebalance Reset Error" msgstr "Fehler beim Zurücksetzen des Weißabgleichs" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "Staubreferenzfehler" #: camlibs/ptp2/ptp.c:4058 msgid "Shutter Speed Bulb" msgstr "Belichtungszeit bei Langzeitbelichtung" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "Spiegel hochklappen" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "Kamera Modus FNummer nicht anpassen" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "Nicht im Liveview Modus" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "MF am Anschlag" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "MF Schritt zu klein" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "Abbruch des erweiterten Transfers" #: camlibs/ptp2/ptp.c:4066 msgid "Unknown Command" msgstr "Unbekanntes Kommando" #: camlibs/ptp2/ptp.c:4067 msgid "Operation Refused" msgstr "Operation abgelehnt" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "Objektivkappe aufgesetzt" #: camlibs/ptp2/ptp.c:4069 msgid "Battery Low" msgstr "Batterie fast leer" #: camlibs/ptp2/ptp.c:4070 msgid "Camera Not Ready" msgstr "Kamera nicht bereit" #: camlibs/ptp2/ptp.c:4072 msgid "PTP Timeout" msgstr "PTP Timeout" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "PTP Abbruch Anfrage" #: camlibs/ptp2/ptp.c:4075 msgid "PTP Response Expected" msgstr "PTP-Protokollfehler: Antwort erwartet" #: camlibs/ptp2/ptp.c:4076 msgid "PTP Data Expected" msgstr "PTP-Protokollfehler: Daten erwartet" #: camlibs/ptp2/ptp.c:4077 msgid "PTP I/O Error" msgstr "PTP-Ein/Ausgabefehler" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "Undefinierte PTP Property" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "Funktionsmodus" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "Kompressionseinstellung" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Weißabgleich" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "RGB-Verstärkung" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "Belichtungszeit" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "Belichtungsprogrammmodus" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "Belichtungsindex (ISO-Filmempfindlichkeit)" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "Belichtungskorrektur" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "Aufnahmeverzögerung" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "Kontrast" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Digitalzoom" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "Zeitraffer Nummer" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "Zeitraffer Intervall" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "Upload URL" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "Copyright Information" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "Unterstützte Thumbnail Größe" #: camlibs/ptp2/ptp.c:4136 #, fuzzy msgid "Enabled Streams" msgstr "Ungültiger Status" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Datumsformat" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Filmauflösung" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "Filmqualität" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Kontrast" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "Helligkeit" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Datumsformat" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "Datums- und Zeitformat" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "Video Ausgang" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "Stromsparmodus" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "Benutzerinterface Sprache" #: camlibs/ptp2/ptp.c:4169 msgid "Battery Type" msgstr "Batterietyp" #: camlibs/ptp2/ptp.c:4170 msgid "Battery Mode" msgstr "Batteriemodus" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "UILockType" #: camlibs/ptp2/ptp.c:4172 msgid "Camera Mode" msgstr "Kameramodus" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "Volles Anzeige Dateiformat" #: camlibs/ptp2/ptp.c:4176 msgid "Self Time" msgstr "Selbstauslöser" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 msgid "Shooting Mode" msgstr "Aufnahme Modus" #: camlibs/ptp2/ptp.c:4180 msgid "Image Mode" msgstr "Bildmodus" #: camlibs/ptp2/ptp.c:4187 msgid "Slow Shutter Setting" msgstr "Langsame Aufnahme Einstellung" #: camlibs/ptp2/ptp.c:4188 msgid "AF Mode" msgstr "AF Modus" #: camlibs/ptp2/ptp.c:4189 msgid "Image Stabilization" msgstr "Bildstabilisierung" #: camlibs/ptp2/ptp.c:4191 msgid "Color Gain" msgstr "Farbverstärkung" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "Empfindlichkeit" #: camlibs/ptp2/ptp.c:4194 msgid "Parameter Set" msgstr "Parameter Set" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "Av Open" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "Av Max" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "Fokus Tiefe Tele" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "Fokus Tiefe Weit" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "Fokus Tiefe Nenner" #: camlibs/ptp2/ptp.c:4207 msgid "Capture Transfer Mode" msgstr "Aufnahmespeicherziel" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "Namensprefix" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "Bildgröße und -qualität" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "Unterstützte Thumbnail Größe" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "Datengröße beim Transfer von der Kamera" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "Datengröße beim Transfer zur Kamera" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "Kamera API Version" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "Kamerabesitzer" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "UNIX Zeit" #: camlibs/ptp2/ptp.c:4219 msgid "Camera Body ID" msgstr "Kamera Body ID" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "Disp Av" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "Av Open Apex" #: camlibs/ptp2/ptp.c:4223 msgid "Digital Zoom Magnification" msgstr "Digitalzoom Vergrößerung" #: camlibs/ptp2/ptp.c:4224 msgid "Ml Spot Position" msgstr "MI Punkt Position" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "Disp Av Max" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "Av Max Apex" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "EZoom Start Position" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "EZoom Größe des Teles" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "Blitzanzahl" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "Rotationswinkel" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "Rotationsszene" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "Event Emulations Modus" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "Art der Slideshow" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "Durchschnittliche Dateigröße" #: camlibs/ptp2/ptp.c:4239 msgid "Model ID" msgstr "Modell ID" #: camlibs/ptp2/ptp.c:4248 msgid "Shooting Bank" msgstr "Aufnahme Bank" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "Aufnahme Bankname A" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "Aufnahme Bankname B" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "Aufnahme Bankname C" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "Aufnahme Bankname D" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "Setze Menübank 0 zurück" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "Weißabgleich Farbtemperatur" #: camlibs/ptp2/ptp.c:4278 msgid "White Balance Preset Number" msgstr "Voreinstellung Weißabgleich Nummer" #: camlibs/ptp2/ptp.c:4280 msgid "White Balance Preset Name 0" msgstr "Voreinstellung des Weißabgleichs Name 0" #: camlibs/ptp2/ptp.c:4282 msgid "White Balance Preset Name 1" msgstr "Voreinstellung des Weißabgleichs Name 1" #: camlibs/ptp2/ptp.c:4284 msgid "White Balance Preset Name 2" msgstr "Voreinstellung des Weißabgleichs Name 2" #: camlibs/ptp2/ptp.c:4286 msgid "White Balance Preset Name 3" msgstr "Voreinstellung des Weißabgleichs Name 3" #: camlibs/ptp2/ptp.c:4288 msgid "White Balance Preset Name 4" msgstr "Voreinstellung des Weißabgleichs Name 4" #: camlibs/ptp2/ptp.c:4290 msgid "White Balance Preset Value 0" msgstr "Voreinstellung des Weißabgleichs Wert 0" #: camlibs/ptp2/ptp.c:4292 msgid "White Balance Preset Value 1" msgstr "Voreinstellung des Weißabgleichs Wert 1" #: camlibs/ptp2/ptp.c:4294 msgid "White Balance Preset Value 2" msgstr "Voreinstellung des Weißabgleichs Wert 2" #: camlibs/ptp2/ptp.c:4296 msgid "White Balance Preset Value 3" msgstr "Voreinstellung des Weißabgleichs Wert 3" #: camlibs/ptp2/ptp.c:4298 msgid "White Balance Preset Value 4" msgstr "Voreinstellung des Weißabgleichs Wert 4" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "Fokus Tiefe der Linse (Nicht CPU)" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "Maximale Blende der Linse (Nicht CPU)" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "Automatisches DX Crop" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "Menübank Name A" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "Menübank Name B" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "Menübank Name C" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "Menübank Name D" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "Setze Menübank zurück" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "Vertikaler Autofokus An" #: camlibs/ptp2/ptp.c:4360 msgid "Focus Area Zone" msgstr "Fokus Bereich Zone" #: camlibs/ptp2/ptp.c:4362 msgid "Enable Copyright" msgstr "Copyright aktivieren" #: camlibs/ptp2/ptp.c:4366 msgid "Exposure ISO Step" msgstr "Belichtungs ISO Schritt" #: camlibs/ptp2/ptp.c:4368 msgid "Exposure Step" msgstr "Belichtungszeitschritt" #: camlibs/ptp2/ptp.c:4370 msgid "Exposure Compensation (EV)" msgstr "Belichtungskorrektur (EV)" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "Mittelpunkt/Gewichtet Bereich" #: camlibs/ptp2/ptp.c:4376 msgid "Exposure Base Matrix" msgstr "Belichtungs Basis Matrix" #: camlibs/ptp2/ptp.c:4378 msgid "Exposure Base Center" msgstr "Belichtungs Basis Zentrum" #: camlibs/ptp2/ptp.c:4380 msgid "Exposure Base Spot" msgstr "Belichtungs Basis Punkt" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "Liveview AF Bereich" #: camlibs/ptp2/ptp.c:4390 msgid "Auto Meter Off Time" msgstr "Zeit für automatische Sensor Abschaltung" #: camlibs/ptp2/ptp.c:4392 msgid "Self Timer Delay" msgstr "Selbstauslöserzeit" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "Img Conf Time" #: camlibs/ptp2/ptp.c:4398 msgid "Auto Off Timers" msgstr "Zeit für automatische Abschaltung" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "Neigung" #: camlibs/ptp2/ptp.c:4402 msgid "Shooting Speed" msgstr "Abstand bei Mehrfachbelichtung" #: camlibs/ptp2/ptp.c:4406 msgid "Exposure delay mode" msgstr "Belichtungs Verzögerungs Modus" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 msgid "Long Exposure Noise Reduction" msgstr "Langzeitbelichtungsrauschkompensation" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "LCD Beleuchtung" #: camlibs/ptp2/ptp.c:4418 msgid "High ISO noise reduction" msgstr "Rauschunterdrückung bei hohen ISO" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "Tips auf dem Bildschirm" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "Künstlername" #: camlibs/ptp2/ptp.c:4424 msgid "Copyright Information" msgstr "Copyright Information" #: camlibs/ptp2/ptp.c:4432 msgid "Modeling Flash" msgstr "Modellierblitz" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "Manueller Abstufungsmodus" #: camlibs/ptp2/ptp.c:4440 msgid "Auto Bracket Selection" msgstr "Automatischer Abstufungsselektion" #: camlibs/ptp2/ptp.c:4441 msgid "NIKON Auto Bracketing Set" msgstr "NIKON Automatischer Abstufungsselektion" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/ptp.c:4443 msgid "Center Button Shooting Mode" msgstr "Mittlerer Button Aufnahme Modus" #: camlibs/ptp2/ptp.c:4445 msgid "Center Button Playback Mode" msgstr "Mittlerer Button Playback Modus" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "Multiselektor" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "Photo Info. Playback" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "Weise Func. Button zu" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "Passe Kommando Dials an" #: camlibs/ptp2/ptp.c:4457 msgid "Aperture Setting" msgstr "Blendeneinstellung" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "Knöpfe und Räder" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "Auslösen ohne CF Karte" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/ptp.c:4465 msgid "Center Button Zoom Ratio" msgstr "Mittlerer Button Zoom Faktor" #: camlibs/ptp2/ptp.c:4467 msgid "Function Button 2" msgstr "Funktions Knopf 2" #: camlibs/ptp2/ptp.c:4471 msgid "Normal AF On" msgstr "Normaler Autofokus An" #: camlibs/ptp2/ptp.c:4473 msgid "Clean Image Sensor" msgstr "Säubere Bildsensor" #: camlibs/ptp2/ptp.c:4475 msgid "Image Comment String" msgstr "Bild Kommentar" #: camlibs/ptp2/ptp.c:4477 msgid "Image Comment Enable" msgstr "Bild Kommentar anschalten" #: camlibs/ptp2/ptp.c:4479 msgid "Image Rotation" msgstr "Bildrotationsflag" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "Manuell gesetzte Objektivnummer" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "Film Bildschirmgrösse" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "Film Stimme" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "Film Mikrofon" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "Film Kartenslot" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "Bildschirmabschaltverzögerung" #: camlibs/ptp2/ptp.c:4497 msgid "Bracketing Enable" msgstr "Aktivierung der Abstufung" #: camlibs/ptp2/ptp.c:4499 msgid "Exposure Bracketing Step" msgstr "Belichtungs Abstufung Schritt" #: camlibs/ptp2/ptp.c:4501 msgid "Exposure Bracketing Program" msgstr "Belichtungs Abstufung Programm" #: camlibs/ptp2/ptp.c:4503 msgid "Auto Exposure Bracket Count" msgstr "Automatische Belichtungs Abstufung Anzahl" #: camlibs/ptp2/ptp.c:4504 msgid "White Balance Bracket Step" msgstr "Automatische Weißabgleich Abweichung Schritt" #: camlibs/ptp2/ptp.c:4505 msgid "White Balance Bracket Program" msgstr "Automatische Weißabgleich Abweichung Programm" #: camlibs/ptp2/ptp.c:4507 msgid "Lens ID" msgstr "Objektiv Kennung" #: camlibs/ptp2/ptp.c:4509 msgid "Lens Sort" msgstr "Objektivart" #: camlibs/ptp2/ptp.c:4511 msgid "Lens Type" msgstr "Objektivtyp" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "Minimale Brennweite" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "Maximale Brennweite" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "Maximale Blende bei Minimaler Brennweite" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "Maximale Blende bei maximaler Brennweite" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "ISO Anzeige im Sucher" #: camlibs/ptp2/ptp.c:4523 msgid "Auto Off Photo" msgstr "Abschaltzeit für Fotoanzeige" #: camlibs/ptp2/ptp.c:4525 msgid "Auto Off Menu" msgstr "Abschaltzeit für Menü" #: camlibs/ptp2/ptp.c:4527 msgid "Auto Off Info" msgstr "Abschaltzeit Information" #: camlibs/ptp2/ptp.c:4529 msgid "Self Timer Shot Number" msgstr "Selbstauslöser Aufnahmenummer" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "Vignette Einstellungen" #: camlibs/ptp2/ptp.c:4537 msgid "Nikon Exposure Time" msgstr "Nikon Belichtungszeit" #: camlibs/ptp2/ptp.c:4539 msgid "Warning Status" msgstr "Warn Status" #: camlibs/ptp2/ptp.c:4546 msgid "AF LCD Top Mode 2" msgstr "AF LCD Top Modus 2" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "Aktiver AF Sensor" #: camlibs/ptp2/ptp.c:4552 msgid "Exposure Meter" msgstr "Belichtungsmesser" #: camlibs/ptp2/ptp.c:4556 msgid "USB Speed" msgstr "USB Geschwindigkeit" #: camlibs/ptp2/ptp.c:4558 msgid "CCD Serial Number" msgstr "CCD Seriennummer" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "Gruppen PTN Typ" #: camlibs/ptp2/ptp.c:4564 msgid "FNumber Lock" msgstr "F-Nummer Lock" #: camlibs/ptp2/ptp.c:4566 msgid "Exposure Aperture Lock" msgstr "Belichtung Blende Lock" #: camlibs/ptp2/ptp.c:4568 msgid "TV Lock Setting" msgstr "TV Lock Einstellungen" #: camlibs/ptp2/ptp.c:4570 msgid "AV Lock Setting" msgstr "AV Lock Einstellungen" #: camlibs/ptp2/ptp.c:4572 msgid "Illum Setting" msgstr "Illum Einstellung" #: camlibs/ptp2/ptp.c:4574 msgid "Focus Point Bright" msgstr "Fokuspunkt beleuchtet" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "Externer Blitz angesteckt" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "Status Externer Blitz" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "Art des externen Blitz" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 msgid "External Flash Mode" msgstr "Externer Blitzmodus" #: camlibs/ptp2/ptp.c:4584 msgid "External Flash Compensation" msgstr "Belichtungskorrektur des externen Blitzes" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "Schwarz/Weiss Filtereffekt" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "Schwarz/Weiss Schärfe" #: camlibs/ptp2/ptp.c:4604 msgid "BW Contrast" msgstr "Schwarz/Weiss Kontrast" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "Schwarz/Weiss Einstellungsart" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "Slot 2 Speichermodus" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "RAW Bit Modus" #: camlibs/ptp2/ptp.c:4614 msgid "Flourescent Type" msgstr "Fluoreszenztyp" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "Farbtemperatur einstellen" #: camlibs/ptp2/ptp.c:4618 msgid "Tune Preset 0" msgstr "Voreinstellung 0" #: camlibs/ptp2/ptp.c:4620 msgid "Tune Preset 1" msgstr "Voreinstellung 1" #: camlibs/ptp2/ptp.c:4622 msgid "Tune Preset 2" msgstr "Voreinstellung 2" #: camlibs/ptp2/ptp.c:4624 msgid "Tune Preset 3" msgstr "Voreinstellung 3" #: camlibs/ptp2/ptp.c:4626 msgid "Tune Preset 4" msgstr "Voreinstellung 4" #: camlibs/ptp2/ptp.c:4630 msgid "Autofocus Mode" msgstr "Autofokus Modus" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "Autofokus Hilfslicht" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "Auto ISO P/A/DVP Einstellung" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "Gitterlinien im Sucher" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "Blitzkommandomodus Energie" #: camlibs/ptp2/ptp.c:4656 msgid "Auto FP" msgstr "Auto FP" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "Warnungs Anzeige" #: camlibs/ptp2/ptp.c:4662 msgid "Battery Cell Kind" msgstr "Batterietyp" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "ISO Auto High Limit" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "Kontinuierliche Aufnahme schnell" #: camlibs/ptp2/ptp.c:4670 msgid "Info Disp Setting" msgstr "Info Anzeige Einstellung" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "Vorschau Knopf" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "Vorschau Knopf 2" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "AEAF Lock Knopf 2" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "Anzeige" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "Battery Typ Priorität" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "Belichtungsreihe Anzahl und Schritte" #: camlibs/ptp2/ptp.c:4684 msgid "Live View Mode" msgstr "Live View Modus" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "Live View Auslöse Modus" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "Live View Status" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "Live View Zoom Faktor" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "Live View Verhinderungszustand" #: camlibs/ptp2/ptp.c:4694 msgid "Exposure Display Status" msgstr "Belichtungs Anzeige Status" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "Belichtungs Indikator Status" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "Info Anzeige Fehler Status" #: camlibs/ptp2/ptp.c:4700 msgid "Exposure Indicate Lightup" msgstr "Belichtungs Indikator Aufleuchten" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "Blitz MRepeat Wert" #: camlibs/ptp2/ptp.c:4708 msgid "Flash MRepeat Count" msgstr "Blitz MRepeat Nummer" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "Zeitraffer Intervall" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "Aktiviertes Pic Ctrl Item" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "Ändere Pic Ctrl Item" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "ISO" #: camlibs/ptp2/ptp.c:4749 msgid "Image Compression" msgstr "Bild Komprimierung" #: camlibs/ptp2/ptp.c:4758 msgid "Secure Time" msgstr "Sichere Zeit" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "Geräte Zertifikat" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "Revokationsinformation" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "Synchronisationspartner" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "Anzeigbarer Gerätename" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "Lautstärke" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "Geräte Icon" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "Session Initiator Information" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "Angenommener Gerätetyp" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "Abspielgeschwindigkeit" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "Abgespieltes Objekt" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "Abspiel Container Index" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "Abspielposition" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "PlaysForSure ID" #: camlibs/ptp2/ptp.c:4782 msgid "Quality" msgstr "Qualität" #: camlibs/ptp2/ptp.c:4783 msgid "Release Mode" msgstr "Aufnahme Modus" #: camlibs/ptp2/ptp.c:4784 msgid "Focus Areas" msgstr "Fokus Bereich" #: camlibs/ptp2/ptp.c:4785 msgid "AE Lock" msgstr "AE Lock" #: camlibs/ptp2/ptp.c:4797 msgid "Image size" msgstr "Bildgröße" #: camlibs/ptp2/ptp.c:4798 msgid "Shutter speed" msgstr "Belichtungszeit" #: camlibs/ptp2/ptp.c:4799 msgid "Color temperature" msgstr "Farbtemperatur" #: camlibs/ptp2/ptp.c:4802 #, fuzzy msgid "Expose Index" msgstr "Belichtungszeit" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 msgid "Still Image" msgstr "Standbild" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "%.1f Blendenstufen" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "%.0f mm" #: camlibs/ptp2/ptp.c:4940 msgid "JPEG Norm" msgstr "JPEG Normal" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "RAW + JPEG Basic" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Kunstlicht - Glühlampe" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "Automatischer Makro (nah)" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "Mittelpunkt/Gewichtet" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "Zentral Punkt" #: camlibs/ptp2/ptp.c:4966 msgid "Automatic flash" msgstr "Automatischer Blitz" #: camlibs/ptp2/ptp.c:4969 msgid "Automatic Red-eye Reduction" msgstr "Auto Rote-Augen-Vermeidung" #: camlibs/ptp2/ptp.c:4970 msgid "Red-eye fill flash" msgstr "Rote-Augen-Blitz Füllmodus" #: camlibs/ptp2/ptp.c:4988 msgid "Power Wind" msgstr "Schnellaufzug" #: camlibs/ptp2/ptp.c:4994 msgid "Timer + Remote" msgstr "Selbstauslöser + Entfernt" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "nur AF Lock" #: camlibs/ptp2/ptp.c:5056 msgid "Flash Lock" msgstr "Blitz Lock" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "Setze Fokus Punkt ins Zentrum" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "Highlight auf aktiven Fokuspunkt" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "Unbenutzt" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "SDRam" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "USB 1.1" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "USB 2.0" #: camlibs/ptp2/ptp.c:5169 msgid "LCD Backlight" msgstr "LCD-Hintergrundbeleuchtung" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "LCD-Hintergrundlicht und Informationsdisplay" #: camlibs/ptp2/ptp.c:5228 msgid "1 min" msgstr "1 Minute" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "5 Minuten" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "10 Minuten" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "15 Minuten" #: camlibs/ptp2/ptp.c:5266 msgid "Dark on light" msgstr "Dunkel auf Hell" #: camlibs/ptp2/ptp.c:5267 msgid "Light on dark" msgstr "Hell auf Dunkel" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "Lithium Ionen" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "Nickel Hydrid" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "Nickel Cadmium" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "Alkalium Mangan" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "Warnstufe 1" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "Notfall" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "Warnstufe 0" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "Sparmodus" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "Superfein" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "Rote-Augen-Vermeidung" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "Langsame Synchronisation" #: camlibs/ptp2/ptp.c:5345 msgid "Auto + Red Eye Suppression" msgstr "Automatische Rote-Augen-Vermeidung" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "An + Rote-Augen-Vermeidung" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "Fernaufnahme" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "Schneller Verschluss" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "Langsamer Verschluss" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "Nachtansicht" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "Graustufen" #: camlibs/ptp2/ptp.c:5370 msgid "Pan Focus" msgstr "Pan Fokus" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "Einzelbildaufnahme" #: camlibs/ptp2/ptp.c:5375 msgid "Continuous Shooting" msgstr "Kontinuierliche Aufnamen" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "Timer (Einzel) Aufnahme" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "Kontinuierlicher Langsame Geschwindigkeit Aufnahme" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "Kontinuierlicher Schnelle Geschwindigkeit Aufnahme" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "Weich" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "Mittelpunktgewichtete Messung" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/ptp.c:5386 msgid "Spot Metering" msgstr "Spotmessung" #: camlibs/ptp2/ptp.c:5387 msgid "Average Metering" msgstr "Mittelwertmessung" #: camlibs/ptp2/ptp.c:5388 msgid "Evaluative Metering" msgstr "Berechnetes Messen" #: camlibs/ptp2/ptp.c:5389 msgid "Partial Metering" msgstr "Partielle Messung" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "Mittelpunkt/Gewichtete Messung" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "Punktmessung geschnitten mit AF Rahmen" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/ptp.c:5392 msgid "Multi-Spot Metering" msgstr "Mehrpunktmessung" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "Langsame Verschlussfunktion nicht verfügbar" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "Niedrig 2" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 msgid "High 2" msgstr "Hoch 2" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "Höher 1" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "Höher 2" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "Standart Entwicklungsparameter" #: camlibs/ptp2/ptp.c:5462 msgid "Development Parameters 1" msgstr "Entwicklungsparameter 1" #: camlibs/ptp2/ptp.c:5463 msgid "Development Parameters 2" msgstr "Entwicklungsparameter 2" #: camlibs/ptp2/ptp.c:5464 msgid "Development Parameters 3" msgstr "Entwicklungsparameter 3" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "MI Punkt Position Zentrum" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "MI Punkt Position Autofokuskopplung" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "Media Card" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "Mediacard Gruppe" #: camlibs/ptp2/ptp.c:5600 #, fuzzy msgid "Encounter" msgstr "Encounter" #: camlibs/ptp2/ptp.c:5601 #, fuzzy msgid "Encounter Box" msgstr "Encounter Box" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "M4A" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "Firmware" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "Windows Bild Format" #: camlibs/ptp2/ptp.c:5605 msgid "Undefined Audio" msgstr "Undefiniertes Audioformat" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "Audible.com Codec" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "Samsung Wiedergabeliste" #: camlibs/ptp2/ptp.c:5612 msgid "Undefined Video" msgstr "Undefiniertes Videoformat" #: camlibs/ptp2/ptp.c:5617 msgid "Undefined Collection" msgstr "Undefinierte Sammlung" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "Abstraktes Multimedia Album" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "Abstraktes Bild Album" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "Abstraktes Musik Album" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "Abstraktes Video Album" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "Abstrakte Audio Video Wiedergabeliste" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "Abstrakte Addressen Gruppe" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "Abstrakter Nachrichten Ordner" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "Abstrakte Produktion mit Kapiteln" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "Astrakte Audio Wiedergabeliste" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "Astrakte Video Wiedergabeliste" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "Abstrakter MediaCast" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "WPL Wiedergabeliste" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "M3U Wiedergabeliste" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "MPL Wiedergabeliste" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "ASX Wiedergabeliste" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "PLS Wiedergabeliste" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "Undefiniertes Dokument" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "Abstraktes Dokument" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "XMLDokument" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "Microsoft Word Dokument" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "MHT Kompiliertes HTML Dokument" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "Microsoft Excel Tabelle (.xls)" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "Microsoft PowerPoint (.ppt)" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "Undefinierte Nachricht" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "Abstrakte Nachricht" #: camlibs/ptp2/ptp.c:5643 msgid "Undefined Contact" msgstr "Undefinierter Addressbucheintrag" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "Abstrakter Adressbucheintrag" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "vCard2" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "vCard3" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "Undefinierte Kalendereintrag" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "Abstrakter Kalendereintrag" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "vCalendar1" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "vCalendar2" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "Undefiniertes Windows Executable" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "Mediacast" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "Sektion" #: camlibs/ptp2/ptp.c:5692 #, c-format msgid "Unknown(%04x)" msgstr "Unbekannt (%04x)" #: camlibs/ptp2/ptp.c:5702 #, fuzzy msgid "Get device info" msgstr "Get Device Info" #: camlibs/ptp2/ptp.c:5703 #, fuzzy msgid "Open session" msgstr "Open Session" #: camlibs/ptp2/ptp.c:5704 #, fuzzy msgid "Close session" msgstr "Close Session" #: camlibs/ptp2/ptp.c:5705 #, fuzzy msgid "Get storage IDs" msgstr "Get storage IDs" #: camlibs/ptp2/ptp.c:5706 #, fuzzy msgid "Get storage info" msgstr "Get storage info" #: camlibs/ptp2/ptp.c:5707 #, fuzzy msgid "Get number of objects" msgstr "Get number of objects" #: camlibs/ptp2/ptp.c:5708 #, fuzzy msgid "Get object handles" msgstr "Get object handles" #: camlibs/ptp2/ptp.c:5709 #, fuzzy msgid "Get object info" msgstr "Get object info" #: camlibs/ptp2/ptp.c:5710 #, fuzzy msgid "Get object" msgstr "Get object" #: camlibs/ptp2/ptp.c:5711 #, fuzzy msgid "Get thumbnail" msgstr "Get thumbnail" #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "Objekt löschen" #: camlibs/ptp2/ptp.c:5713 #, fuzzy msgid "Send object info" msgstr "Send object info" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "Objekt senden" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "Aufnahme auslösen" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "Speicher formatieren" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "Gerät zurücksetzen" #: camlibs/ptp2/ptp.c:5718 msgid "Self test device" msgstr "Geräteselbsttest" #: camlibs/ptp2/ptp.c:5719 #, fuzzy msgid "Set object protection" msgstr "Set object protection" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "Gerät ausschalten" #: camlibs/ptp2/ptp.c:5721 #, fuzzy msgid "Get device property description" msgstr "Get device property description" #: camlibs/ptp2/ptp.c:5722 #, fuzzy msgid "Get device property value" msgstr "Get device property value" #: camlibs/ptp2/ptp.c:5723 #, fuzzy msgid "Set device property value" msgstr "Set device property value" #: camlibs/ptp2/ptp.c:5724 #, fuzzy msgid "Reset device property value" msgstr "Reset device property value" #: camlibs/ptp2/ptp.c:5725 #, fuzzy msgid "Terminate open capture" msgstr "Terminate open capture" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "Objekt verschieben" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "Objekt kopieren" #: camlibs/ptp2/ptp.c:5728 #, fuzzy msgid "Get partial object" msgstr "Get partial object" #: camlibs/ptp2/ptp.c:5729 #, fuzzy msgid "Initiate open capture" msgstr "Initiate open capture" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 #, fuzzy msgid "Get Vendor Extension Maps" msgstr "Hersteller Erweiterung" #: camlibs/ptp2/ptp.c:5735 #, fuzzy msgid "Get Vendor Device Info" msgstr "Get Device Info" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 #, fuzzy msgid "Get Filesystem Manifest" msgstr "Schnelles Dateisystem" #: camlibs/ptp2/ptp.c:5738 #, fuzzy msgid "Get Stream Info" msgstr "Get storage info" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 #, fuzzy msgid "Get object properties supported" msgstr "Get object properties supported" #: camlibs/ptp2/ptp.c:5744 #, fuzzy msgid "Get object property description" msgstr "Get object property description" #: camlibs/ptp2/ptp.c:5745 #, fuzzy msgid "Get object property value" msgstr "Get object property value" #: camlibs/ptp2/ptp.c:5746 #, fuzzy msgid "Set object property value" msgstr "Setze Object Property Wert" #: camlibs/ptp2/ptp.c:5747 #, fuzzy msgid "Get object property list" msgstr "Hole Object Property Liste" #: camlibs/ptp2/ptp.c:5748 #, fuzzy msgid "Set object property list" msgstr "Setze Object Property Liste" #: camlibs/ptp2/ptp.c:5749 #, fuzzy msgid "Get interdependent property description" msgstr "Get interdependent property description" #: camlibs/ptp2/ptp.c:5750 #, fuzzy msgid "Send object property list" msgstr "Sende Object Property Liste" #: camlibs/ptp2/ptp.c:5751 #, fuzzy msgid "Get object references" msgstr "Hole Object References" #: camlibs/ptp2/ptp.c:5752 #, fuzzy msgid "Set object references" msgstr "Setze object references" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "Firmware des Geräts aktualisieren" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "Skip zur nächsten Position in der Wiedergabeliste" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "Hole Secure Time Challenge" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "Hole Secure Time Anfrage" #: camlibs/ptp2/ptp.c:5759 msgid "Set license response" msgstr "Setze Lizenz Antwort" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "Hole Sync List" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "Sende Meter Challenge Anfrage" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "Hole Meter Challenge" #: camlibs/ptp2/ptp.c:5763 msgid "Get meter response" msgstr "Hole Meter Response" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "Lösche Daten Store" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "Hole Lizenz Status" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "Sende WMDRM-PD Kommando" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "Sende WMDRM-PD Anfrage" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "Hinzugefügte/gelöschte Objekte berichten" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "Erworbene Objekte berichten" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "Typen übertragbarer Wiedergabelisten holen" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "WMDRM-PD Applikationsanfrage senden" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "Hole WMDRM-PD Applikations Antwort" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "Schalte Trusted File Operationen an" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "Schalte Trusted File Operations aus" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "Beende Trusted Application Sitzung" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "Media-Sitzung öffnen" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "Media-Sitzung schließen" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "Hole nächsten Daten Block" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "Setze derzeitige Zeitposition" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "Sende Registrierungs Request" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "Hole Registrierungsantwort" #: camlibs/ptp2/ptp.c:5790 #, fuzzy msgid "Get Proximity Challenge" msgstr "Hole Proximity Challenge" #: camlibs/ptp2/ptp.c:5791 #, fuzzy msgid "Send Proximity Response" msgstr "Sende Proximity Challenge" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "Sende WMDRM-ND Lizenz Anfrage" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "Hole WMDRM-ND Lizenz Antwort" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "Bearbeite WFC Objekt" #: camlibs/ptp2/ptp.c:5799 #, fuzzy msgid "Get Partial Object (64bit Offset)" msgstr "Get partial object (64bit Offset)" #: camlibs/ptp2/ptp.c:5800 #, fuzzy msgid "Send Partial Object" msgstr "Send partial object" #: camlibs/ptp2/ptp.c:5801 #, fuzzy msgid "Truncate Object" msgstr "Truncate Objekt" #: camlibs/ptp2/ptp.c:5802 #, fuzzy msgid "Begin Edit Object" msgstr "Begin Edit Object" #: camlibs/ptp2/ptp.c:5803 #, fuzzy msgid "End Edit Object" msgstr "End Edit Object" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "Unbekannt %d" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "Hersteller Erweiterung" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "Film herunterladen..." #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "Audio herunterladen..." #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "EXIF-Daten herunterladen..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "Keine EXIF-Daten für %s verfügbar." #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "Konnte Datei nicht löschen." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "Konnte Ordner nicht löschen." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "Konnte Ordner nicht anlegen." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "Version: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "RTC Status: %d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "Kamera Zeit: %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "Kamera-ID: %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "SD Speicherkarte nicht eingelegt.\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "SD Karten-ID: %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "Fotos in Kamera: %d\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "SD Speicher: %d MB total, %d MB frei.\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "Interner Speicher: %d MB total, %d MB frei.\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3.\n" "Marcus Meißner \n" "Rückentwickelt mittels USB Snoopy, anschauen des Firmware Updates und wildem " "Ratens.\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Ricoh / Philips-Treiber von\n" "Lutz Müller ,\n" "Martin Fischer ,\n" "basierend auf Bob Paauwes Treiber\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "unbekannt (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Modell: %s\n" "Speicherplatz: %d Byte(s) von %d frei" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2.0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1.5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1.0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0.5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0.0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0.5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1.0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1.5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2.0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Im Freien" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Maximal" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Minimal" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Charakter" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Sound" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Bild & Sound" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Charakter & Sound" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Konfiguration" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Allgemein" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Copyright (max. 20 Zeichen)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "Bilder" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Weißlevel" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Aufnahmemodus" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Kompression" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "Aufnahmegeschwindigkeit %i wird nicht unterstützt!" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "%i erwartet, %i erhalten. Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "" "%i Bytes erwartet, %i erhalten. Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "" "Wir haben 0x%x erwartet, aber 0x%x erhalten. Bitte kontaktieren Sie %s mit " "diesen und möglichen weiteren Debuginformationen (auf Englisch)." #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "" "Fehlerhafte Zeichen (0x%x, 0x%x). Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "" "Kamera beschäftigt. Wenn dieses Problem länger auftritt, kontaktieren Sie " "bitte %s (auf Englisch)." #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "" "Time-Out selbst nach 2 Versuchen.\n" "Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "" "Kommunikationsproblem selbst nach 2 Versuchen.\n" "Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "" "Kamera ist im falschen Modus.\n" "Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "" "Kamera akzeptierte die Parameter nicht.\n" "Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "" "Ein unbekannter Fehler trat auf.\n" "Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "" "Die Länge des Dateinamens darf 12 Zeichen nicht überschreiten (»%s« hat %i " "Zeichen)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "Der Samsung digimax 800k-Treiber wurde von James McKenzie für gphoto geschrieben. Lutz Müller " "portierte den Treiber nach gphoto2. Marcus Meißner " "vollendete und verbesserte die Portierung." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Auflösung und Größe" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Datum und Zeit (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 msgid "Aperture Settings" msgstr "Blendeneinstellungen" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Farbmodus" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Rote-Augen-Vermeidung" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Blitzeinstellungen" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "Stromsparmodus am PC (in Sekunden)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Stromsparmodus der Kamera (in Sekunden)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Objektivmodus" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "Koreanisch" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "Englisch" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "Französisch" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "Deutsch" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "Italienisch" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "Japanisch" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "Spanisch" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "Portugiesisch" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Bildeinstellungen" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "Einige Kommentare über Epson-Kameras:\n" "- einige Parameter sind nicht fernsteuerbar:\n" " * Zoom\n" " * Fokus\n" " * Benutzer-Weißabgleich\n" "- Die Konfiguration wurde mit einer PhotoPC 3000z rückentwickelt.\n" " Wenn Ihre Kamera anders reagiert, dann senden Sie bitte\n" " eine Mail an die gphoto developer Mailing Liste (auf Englisch).\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Keine Speicherkarte vorhanden" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "Kann die Batteriekapazität nicht bekommen" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "" "Der Batteriestand der Kamera ist zu niedrig (%d%%). Befehl wird abgebrochen." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Kann verbleibenden Speicherplatz nicht abfragen" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "Kamera hat 3 Versuche die Verbindung offen zu halten abgelehnt." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "Das erste empfangene Byte (0x%x) ist nicht gültig." #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "Time-Out für Übertragung des Datenpakets nach %i Versuchen. \n" "Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Konnte Paket auch nach mehreren Versuchen nicht senden." #: camlibs/sierra/library.c:789 #, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "" "Datenpaket wurde von der Kamera abgelehnt. Bitte kontaktieren Sie %s (auf " "Englisch)." #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "" "Konnte Datenpaket nicht übertragen (Fehlercode %i).\n" "Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "Time-Out für Übertragung auch noch 2 Versuchen. Gebe auf..." #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "" "Unerwartetes Resultat (Fehlercode 0x%x) erhalten. Bitte kontaktieren Sie %s " "(auf Englisch)." #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "" "Unerwartete Antwort (Fehlercode %i) erhalten. Bitte kontaktieren Sie %s (auf " "Englisch)." #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "" "Konnte Register %i nicht holen. Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "Zu viele Versuche misslungen." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Sende Daten..." #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "Rekursive Aufrufe werden vom Sierra-Treiber nicht unterstützt.\n" "Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "" "Konnte String-Register %i nicht lesen. \n" "Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "" "32 Bytes erwartet, %i erhalten. Bitte kontaktieren Sie %s (auf Englisch)." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "Belichtungszeit (Mikrosekunden, 0 automatisch)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "Belichtungszeit (in Sekunden)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "S/W" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Anti-Rotaugen" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "Langsame Synchronisation" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "Kontrast+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Kontrast-" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "Helligkeit+" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "Helligkeit-" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Bildjustierung" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "Blinkend" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "LED-Modus" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "Unendlich" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "Vorschau Modus" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "Nächstes" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "Vorheriges" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Kameramodus" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "LCD-Helligkeit" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "Autom. Abschaltung des LCD (in Sekunden)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "Mittelpunkt/Gewichtet" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "Matrix" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Punkt-AF" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Belichtungsmessung" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "Zoom (in Millimetern)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "kein" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "Automatische Belichtungsnachführung" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "Fischauge" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Weit" #: camlibs/sierra/nikon-desc.c:558 msgid "Misc exposure/lens settings" msgstr "Andere Belichtungs-/Objektiveinstellungen" # Is this correct? #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Automatische Belichtungsnachführung" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " Kamerakonfiguration:\n" "\n" " Der optische Zoom funktioniert nicht richtig.\n" "\n" " Nicht alle Konfigurationseinstllungen\n" " können korrekt gelesen oder geschrieben werden,\n" " z.B. die Feineinstellung des Weißabgleichs oder\n" " die Spracheinstellung.\n" "\n" " Setzen Sie die Kamera in den »M«-Modus, um die\n" " Belichtungszeit einzustellen.\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995:\n" " Kamerakonfiguration für diese Kamera ist\n" " unvollständig, bitten kontaktieren Sie die\n" " Entwickler auf der gphoto Entwickler Mailingliste,\n" " wenn Sie mithelfen möchten.\n" "\n" " Das Herunterladen sollte korrekt funktionieren.\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "White Board" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "Black Board" #: camlibs/sierra/olympus-desc.c:489 msgid "Color or Function Mode" msgstr "Farb Funktions Modus" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 msgid "Slow" msgstr "Langsam" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "Anti-Rotaugen-Filler" #: camlibs/sierra/olympus-desc.c:596 msgid "Fluorescent-1-home-6700K" msgstr "Floureszierend-1-Wohnung-6700K" #: camlibs/sierra/olympus-desc.c:597 msgid "Fluorescent-2-desk-5000K" msgstr "Fluoreszierend-2-Tisch-5000K" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "Fluoreszierend-3-Büro-4200K" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "Floureszierend-1-Wohnung-6700K" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "Fluoreszierend-2-Tisch-5000K" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "Fluoreszierend-3-Büro-4200K" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "Dämmerung" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Monitor" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "LCD-Modus" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "ESP" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Digitalzoom" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "Fokusposition" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Zeitformat" #: camlibs/sierra/olympus-desc.c:1147 msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Einige Bemerkungen über Olympus-Kameras:\n" "(1) Kamera-Konfiguration:\n" " Ein Wert von 0 verwendet die Vorgabe (Auto).\n" "(2) Olympus C-3040Z (und möglicherweise die C-2040Z\n" " und andere) haben einen USB-Steuermodus. Um \n" " diesen Modus zu benutzen, muss die Kamera auf \n" " »USB PC control mode« geschaltet sein. Um zum Menü\n" " für diese Einstellung zu gelangen, öffnen sie die\n" " Klappe für die Speicherkarte und halten Sie sowohl\n" " die Menü- als auch LCD-Taste gedrückt, bis das\n" " Kontrollmenü erscheint. Schalten Sie es auf »ON«.\n" "(3) Wenn Sie den LCD-Modus auf »Monitor« oder »Normal« \n" " setzen, dann vergessen Sie nicht, ihn wieder auf\n" " »Aus« zu setzen, bevor Sie die Verbindung zur Kamera\n" " trennen. Ansonsten können Sie die Bedienelemente \n" " der Kamera nicht mehr benutzen. In diesem Fall müssen\n" " Sie die Kamera wieder mit dem PC verbinden und den \n" " LCD-Modus auf »Aus« setzen." #: camlibs/sierra/olympus-desc.c:1166 msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus 750 Ultra Zoom:\n" "(1) Die Olympus 750UZ hat einen USB einen USB-Steuermodus.\n" " Um diesen Modus zu benutzen, muss die Kamera auf \n" " »USB PC control mode« eingestellt sein. Um zum Menü\n" " für diese Einstellung zu gelangen, schalten Sie die\n" " Kamera an, öffnen Sie die Klappe für die Speicherkarte\n" " und halten Sie sowohl den »ON«- als auch den\n" " »quickview«-Knopf gedrückt, bis das das Kontrollmenü\n" " erscheint. Setzen Sie dieses auf Control Mode.\n" "(2) Wenn Sie den LCD-Modus auf »Monitor« oder »Normal« \n" " setzen, dann vergessen Sie nicht, ihn wieder auf\n" " »Aus« zu setzen, bevor Sie die Verbindung zur Kamera\n" " trennen. Anderenfalls können Sie die Bedienelemente \n" " der Kamera nicht mehr benutzen. In diesem Fall müssen\n" " Sie die Kamera wieder mit dem PC verbinden und den \n" " LCD-Modus auf »Aus« setzen." #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Standard-Sierra-Treiber:\n" "\n" " Dies ist der Standard-Sierra-Treiber.\n" " Er sollte Herunterladen und Durchsuchen\n" " von Bildern auf der Kamera unterstützen.\n" "\n" " Kamerakonfigurationen (und Einstellungen)\n" " basieren auf der Olympus 3040 und sind\n" " wahrscheinlich unvollständig. Wenn Sie \n" " feststellen, daß die Konfigurationseinstellungen\n" " für Ihre Kamera vollständig sind, oder Sie \n" " Programmcode für eine vollständige Konfiguration \n" " haben, dann setzen Sie sich bitte mit der\n" " Entwickler-Mailingliste in Verbindung.\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "Die hochzuladende Datei hat eine Größe von null Bytes" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "Nicht genügend Speicherplatz auf der Karte vorhanden" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Kann den Namen des Ordnerses mit den Bildern nicht bekommen" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "Hochladen ist nur in das Ordner »%s« unterstützt" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Beste" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (unbekannt)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "Belichtungszeit (Mikrosekunden, 0 automatisch)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Schwarz/Weiß" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "White Board-Effekt" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Black Board-Effekt" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "Helligkeit/Kontrast" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "Hell+" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "Hell-" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Tageslicht" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "Unendlich/Fischauge" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "Spotmessung" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1.6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2.5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "Autom. Abschaltung (am PC) (in Sekunden)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "Wie lange soll es dauern, bis die Kamera abschaltet, wenn sie an den " "Computer angeschlossen ist?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "Autom. Abschaltung (nicht am PC) (in Sekunden)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "Wie lange soll es dauern, bis die Kamera abschaltet, wenn sie nicht an den " "Computer angeschlossen ist?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "Autom. Abschaltung des LCD (in Sekunden)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Aufnahme-Einstellungen" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 msgid "standard" msgstr "Standard" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "HyPict" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "farbig" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "schwarz/weiß" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" "Note: keine Speicherkarte vorhanden, einige Werte können ungültig sein\n" #: camlibs/sierra/sierra.c:1948 #, c-format msgid "Camera Model: %s\n" msgstr "Kameramodell: %s\n" #: camlibs/sierra/sierra.c:1957 #, c-format msgid "Serial Number: %s\n" msgstr "Seriennummer: %s\n" #: camlibs/sierra/sierra.c:1960 #, c-format msgid "Software Rev.: %s\n" msgstr "Software-Revision: %s\n" # Haesslich [Colin] #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, c-format msgid "Frames Taken: %i\n" msgstr "Aufgenommene Bilder: %i\n" # Haesslich... [Colin] #: camlibs/sierra/sierra.c:1971 #, c-format msgid "Frames Left: %i\n" msgstr "Verbleibende Bilder: %i\n" #: camlibs/sierra/sierra.c:1973 #, c-format msgid "Battery Life: %i\n" msgstr "Batterielebensdauer: %i\n" #: camlibs/sierra/sierra.c:1975 #, c-format msgid "Memory Left: %i bytes\n" msgstr "Verbleibender Speicher: %i bytes\n" #: camlibs/sierra/sierra.c:1980 #, c-format msgid "Date: %s" msgstr "Datum: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "Keine Kamera Hilfe verfügbar.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "Einige Kommentare über Epson-Kameras:\n" "- einige Parameter sind nicht fernsteuerbar:\n" " * Zoom\n" " * Fokus\n" " * Benutzer-Weißabgleich\n" "- Die Konfiguration wurde mit einer PhotoPC 3000z rückentwickelt.\n" " Wenn Ihre Kamera anders reagiert, dann senden Sie bitte\n" " eine Mail an %s (auf Englisch).\n" #: camlibs/sierra/sierra.c:2060 msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Einige Bemerkungen:\n" "(1) Kamera-Konfiguration:\n" " Ein Wert von 0 verwendet die Vorgabe (Auto).\n" "(2) Olympus C-3040Z (und möglicherweise die C-2040Z\n" " und andere) haben einen USB-Kontrollmodus. Um \n" " diesen Modus zu benutzen, muss die Kamera auf \n" " »USB PC control mode« geschaltet sein. Um zum Menü\n" " für diese Einstellung zu gelangen, öffnen sie die\n" " Klappe für die Speicherkarte und halten Sie beide\n" " Menütasten gedrückt, bis das Kontrollmenü erscheint.\n" " Schalten Sie es auf »ON«.\n" "(3) Wenn Sie den LCD-Modus auf »Monitor« oder »Normal« \n" " setzen, dann vergessen Sie nicht, ihn wieder auf\n" " »Aus« zu setzen, bevor Sie die Verbindung zur Kamera\n" " trennen. Anderenfalls können Sie die Bedienelemente \n" " der Kamera nicht mehr benutzen. In diesem Fall müssen\n" " Sie die Kamera wieder mit dem PC verbinden und den \n" " LCD-Modus auf »Aus« setzen." # Ist "Freigabe" richtig? [Colin] #: camlibs/sierra/sierra.c:2087 msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "sierra SPARClite-Bibliothek\n" "Scott Fritzinger \n" "Unterstützung für Sierra-basierte Digitalkameras\n" "incl. Olympus, Nikon, Epson, Pentax, und andere.\n" "\n" "Dank an Data Engines (www.dataengines.com) für die\n" "Freigabe ihrer Olympus C-3030Z for USB-Implementierung." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (unbekannt)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Sipix StyleCam Blink-Treiber\n" "Vincent Sanders \n" "Marcus Meißner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Konnte USB-Einstellungen nicht setzen" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meißner \n" "Treiber für die SiPix Web2-Kamera." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket\n" "Lee Benfiel \n" "Bibliothek zum Zugriff auf die Smal Ultrapocket Kamera und ihre OEM " "Versionen (slimshot)." #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Sonix Kamera.\n" "Es ist %i Foto auf der Kamera.\n" msgstr[1] "" "Sonix Kamera.\n" "Es sind %i Fotos auf der Kamera.\n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" "Dieser Treiber unterstützt einige Kameras mit Sonix sn9c2028 Chip.\n" "Die folgenden Operationen sind unterstützt:\n" " - Thumbnails für GUI Programme\n" " - volle Bilder im PPM Format\n" " - Lösche alle Bilder\n" " - Lösche letztes Bild (muss nicht mit allen Sonix Kameras funktionieren)\n" " - Bildaufnahme auf Kamera (\t\tditto\t\t)\n" "Video Clips werden runtergeladen wenn sie als fortlaufende Bilder oder\n" "als AVI Dateien auf der Kamera sind, abhängig vom Modell.\n" "Thumbnails für AVIs sind normale Bilder vom ersten Bild.\n" "Bilder können nur gelöscht werden, wenn sie die letzten sind.\n" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "Sonix Kamera Treiber\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "Sony DSC-F1 Digitalkamera-Unterstützung\n" "M. Adam Kendall \n" "Basierend auf dem chotplay CLI-Interface von\n" "Ken-ichi Hayashi\n" "Gphoto2-Portierung von Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Sony DSC-F55/505 gPhoto Bibliothek\n" "Unterstützt Sony MSAC-SR1 und Memory Stick von DCR-PC100\n" "Erste Implementation durch Mark Davies \n" "gPhoto2 Portierung durch Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "Firmware-Revision: %8s\n" "Bilder: %i\n" "Speicher: %ikB\n" "Freier Speicher: %ikB\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "Firmware-Revision: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Soundvision-Treiber\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "Flash Speicher:\n" " Dateien: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM Speicher:\n" " Dateien: %d\n" " Bilder: %4d\n" " Filme: %4d\n" "Benutzter Speicher: %8d\n" "Freier Speicher: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "spca50x-Bibliothek v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" "Ihre USB Kamera hat einen S&Q Chipsatz.\n" "Die totale Anzahl der Bilder ist %i.\n" "Einige dieser Bilder könnten Videoclips mit weiteren Bildern sein.\n" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" "F?r Kameras mit S&Q Technologies Chipsatz.\n" "Sollte mit gtkam funktionieren. Bilder werden im PPM Format abgespeichert.\n" "\n" "Alle bekannten S&Q Kameras haben zwei Auflösungen. Welche dies sind\n" "ist abhängig von der speziellen Kamera.\n" "Einige dieser Kameras erlauben das Löschen aller Bilder, die meisten unterst?" "tzen\n" "dies aber nicht.\n" "Wenn Videoclips auf der Kamera vorhanden sind, werden diese als " "Unterverzeichnisse\n" "dargestellt. In gtkam ist dies durch ein Dreieck vor dem Namen " "gekennzeichnet.\n" "Öffnen sie diese wie gewohnt um die enthaltenen Bilder des Clips " "runterzuladen.\n" "Diese Bilder haben spezielle Namen die bezeichnen zu welchem Videoclip sie " "gehören.\n" "So können Sie diese in verschiedene Ordnerse abspeichern oder auch nicht.\n" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "Generischer sq905 Treiber\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "Der USB Bilder Rahmer hat einen ST2205 Chipsatz.\n" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "ST2205 basierte Bilderrahmen haben viele mögliche Auflösungen.\n" "Dieser Treiber erlaubt das Herunterladen, Hochladen und Löschen von Bildern\n" "vom Bilderrahmen." #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "Treiber für ST2205 USB Bilder Rahmen\n" "Hans de Goede \n" "Dieser Treiber erlaubt das Herunterladen, Hochladen und Löschen von Bildern\n" "vom Bilderrahmen." #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "Kameraausrichtung" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "Treiber für Kameras mit dem STV0674 ASIC.\n" "Protokoll wurdde mit Snoopy Pro reverse engineered.\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "Fehlbelichtung (wahrscheinlich nicht genug Licht)" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "Informationen für STV0680-basierte Kamera:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Firmware-Revision: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "ASIC-Revision: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "Sensor-ID: %d.%d\n" #: camlibs/stv0680/library.c:562 #, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "Die Kamera ist für Kunstlicht mit %dHz konfiguriert.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Speicher in Kamera: %d Mbit.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "Kamera unterstützt Vorschaubilder.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "Kamera unterstützt Video.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "Kamerabilder sind monochrom.\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "Kamera hat Speicher.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "Kamera unterstützt folgende Videoformate: " #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "Hersteller-ID: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "Produkt-ID: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "Anzahl der Bilder: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "Maximale Anzahl der Bilder: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Bildbreite: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "Bildhöhe: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "Bildgröße: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Vorschaubildbreite: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Vorschaubildhöhe: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Vorschaubildgröße: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Treiber für Kameras mit dem STV0680-ASIC.\n" "Rückentwicklung des Protokolls mit CommLite Beta 5\n" "Carsten Weinholz \n" "Erweitert für Aiptek PenCam und andere STM USB Dual-Mode-Kameras." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Hole Informationen über %i Dateien..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "(Traveler) SX330z Bibliothek (Und andere ALDI-Kameras).\n" "Auch andere Hersteller, wie Jenoptik, SkanHex, Maginon sollten " "funktionieren.\n" "Bitte senden sie Fehler und Kommentare.\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z ist nur-USB" #: camlibs/topfield/puppy.c:553 msgid "Driver Settings" msgstr "Treiber Einstellungen" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "Turbo Modus" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Bilbiothek um Dateien von einem Topfield PVR herunter- oder hochzuladen.\n" "Portiert von puppy (c) Peter Urbanec \n" #: camlibs/topfield/puppy.c:659 #, c-format msgid "Downloading %s..." msgstr "Lade »%s« herunter..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 Treiber.\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" "Interner Fehler beim Suchen der Kamerabibliotheken (Pfadnamen zu lang?)" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Lade Kameratreiber von »%s«..." #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "Ein Fehler trat in der IO-Bibliothek auf (»%s«): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Konnte keine Kamera finden" #: libgphoto2/gphoto2-camera.c:750 #, c-format msgid "Could not detect any camera at port %s" msgstr "Konnte keine Kamera am Port %s finden" #: libgphoto2/gphoto2-camera.c:774 msgid "You have to set the port prior to initialization of the camera." msgstr "" "Sie müssen einen Port setzen, bevor Sie die Kamera initialisieren können" #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Konnte erforderlichen Kameratreiber »%s« (%s) nicht laden." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "Kameratreiber »%s« hat keine Funktion »camera_init«." #: libgphoto2/gphoto2-camera.c:864 msgid "This camera does not provide any configuration options." msgstr "Diese Kamera bietet keine Konfigurationsoptionen." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "Diese Kamera unterstützt kein Setzen von Konfigurationsoptionen." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Diese Kamera unterstützt keine Zusammenfassung." #: libgphoto2/gphoto2-camera.c:960 msgid "This camera does not provide a manual." msgstr "Für diese Kamera existiert kein Handbuch." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "Diese Kamera liefert keine Information über den Treiber." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Diese Kamera kann keine Aufnahme machen." #: libgphoto2/gphoto2-camera.c:1056 msgid "This camera can not trigger capture." msgstr "Diese Kamera kann keine Aufnahme machen." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Diese Kamera kann keine Vorschaubilder machen." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "Die Pfadangabe »%s« ist nicht absolut." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "Sie versuchen, »%s« aus dem Ordner »%s« zu löschen, aber das Dateisystem " "unterstützt kein Löschen von Dateien." #: libgphoto2/gphoto2-filesys.c:1259 #, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "" "Im Ordner »%s/%s«, das Sie zu Löschen versuchen, befinden sich immer noch " "Unterverzeichnisse." #: libgphoto2/gphoto2-filesys.c:1264 #, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "" "Im Ordner »%s/%s«, das Sie zu Löschen versuchen, befinden sich immer noch " "Dateien." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Das Dateisystem unterstützt kein Hochladen von Dateien." #: libgphoto2/gphoto2-filesys.c:1359 #, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "Ordner »%s« enthält nur %i Dateien, aber Sie verlangten eine Datei mit der " "Nummer %i." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Datei »%s« konnte nicht im Ordner »%s« gefunden werden." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Konnte Datei »%s« nicht finden." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "Das Dateisystem unterstützt kein Holen von Dateien." #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Unbekannter Dateityp %i." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "Das Dateisystem unterstützt das Holen von Dateiinformationen nicht" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "Das Dateisystem unterstützt das Setzen von Dateiinformationen nicht" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "" "\"Nur-Lesen\"-Dateiattribute wie Höhe und Breite können nicht geändert " "werden." #: libgphoto2/gphoto2-filesys.c:2455 msgid "The filesystem doesn't support getting storage information" msgstr "Das Dateisystem unterstützt das Holen von Speicherinformationen nicht" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Korrupte Daten" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Datei existiert bereits" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Unbekanntes Modell" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Ordner nicht gefunden" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Datei nicht gefunden" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "Ordner existiert bereits" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "I/O Operation in Arbeit" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "Pfadangabe nicht absolut" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Operation abgebrochen" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "Kamera konnte die Operation nicht vollenden" #: libgphoto2/gphoto2-result.c:57 msgid "OS error in camera communication" msgstr "Fehler in der Kamerakommunikation" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "Nicht genug Plattenplatz" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Unbekannter Fehler des Kamera-Treibers" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Unbekannter Fehler" #~ msgid "Small Fine JPEG (S1 Fine)" #~ msgstr "Small Fine JPEG (S1 Fein)" #~ msgid "Small Normal JPEG (S1 Normal)" #~ msgstr "Small Normal JPEG (S1 Normal)" #~ msgid "RAW + Small Fine JPEG (S1 Fine)" #~ msgstr "RAW + Kleines Feines JPEG (S1 Fein)" #~ msgid "mRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "mRAW + Kleines Feines JPEG (S1 Fein)" #~ msgid "sRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "sRAW + Kleines Feines JPEG (S1 Fine)" #~ msgid "RAW + Small Normal JPEG (S1 Normal)" #~ msgstr "RAW + Small Normal JPEG (S1 Normal)" #~ msgid "mRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "mRAW + Small Normal JPEG (S1 Normal)" #~ msgid "sRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "sRAW + Small Normal JPEG (S1 Normal)" #~ msgid "Unknown (%04x)" #~ msgstr "Unbekannt (%04x)" #~ msgid "Canon EOS Trigger Capture failed to release: Perhaps no focus?" #~ msgstr "Canon EOS Aufnahme triggern fehlgeschlagen: Kein Fokus?" #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Perhaps no more memory on " #~ "card?" #~ msgstr "Canon EOS Aufnahme triggern fehlgeschlagen: Speicherkarte voll?" #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Unknown error %d, please " #~ "report." #~ msgstr "" #~ "Canon EOS Aufnahme triggern fehlgeschlagen: Unbekannter Fehler %d, bitte " #~ "berichten." #~ msgid "Disabled" #~ msgstr "Abgeschaltet" #~ msgid "Deleting '%s' from folder '%s'..." #~ msgstr "Lösche »%s« aus Verzeichnis »%s«..." #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "Lade »%s« aus Verzeichnis »%s«..." #~ msgid "160" #~ msgstr "160" #~ msgid "200" #~ msgstr "200" #~ msgid "400" #~ msgstr "400" #~ msgid "800" #~ msgstr "800" #~ msgid "1600" #~ msgstr "1600" #~ msgid "3200" #~ msgstr "3200" #~ msgid "6400" #~ msgstr "6400" #~ msgid "CHDK Reboot" #~ msgstr "CHDK Reboot" #~ msgid "PTP Error: bad parameter" #~ msgstr "PTP- Fehler: Ungültiger Parameter" #~ msgid "Canon Capture failed: 0x%04x" #~ msgstr "Canon Aufnahme fehlgeschlagen: 0x%04x" #~ msgid "No event received, error %x." #~ msgstr "Kein Event empfangen, Fehler %x." #~ msgid "Canon EOS Trigger Capture failed: 0x%x (result 0x%x)" #~ msgstr "Canon EOS Aufnahme triggern fehlgeschlagen: 0x%x (Resultat 0x%x)" #~ msgid "PTP: Undefined Error" #~ msgstr "PTP: Undefinierter Fehler" #~ msgid "PTP: OK!" #~ msgstr "PTP: OK!" #~ msgid "PTP: General Error" #~ msgstr "PTP: Allgemeiner Fehler" #~ msgid "PTP: Session Not Open" #~ msgstr "PTP: Sitzung nicht geöffnet" #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP: Fehlerhafte Transaktions-ID" #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP: Operation nicht unterstützt" #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP: Parameter nicht unterstützt" #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP :Unvollständiger Transfer" #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP: Fehlerhafte Storage-ID" #~ msgid "PTP: Invalid Object Handle" #~ msgstr "PTP: Ungültiges Object Handle" #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "PTP: Geräteeigenschaft nicht unterstützt" #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP: Ungültiger Object Formatcode" #~ msgid "PTP: Store Full" #~ msgstr "PTP: Speicher voll" #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP: Objekt schreibgeschützt" #~ msgid "PTP: Store Read Only" #~ msgstr "PTP: Speicher-schreibgeschützt" #~ msgid "PTP: Access Denied" #~ msgstr "PTP: Zugriff verweigert" #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP: Kein Thumbnail vorhanden" #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP: Selbsttest fehlgeschlagen" #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP: Partiell gelöscht" #~ msgid "PTP: Store Not Available" #~ msgstr "PTP: Speicher nicht verfügbar" #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "PTP: Spezifikation durch Format nicht unterstützt" #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP: Keine gültige Object Information" #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP: Ungültiges Codeformat" #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "PTP: Unbekannter Händlercode" #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP: Aufnahme bereits beendet" #~ msgid "PTP: Device Busy" #~ msgstr "PTP: Device belegt" #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP: Ungültiges Vaterobjekt" #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP: Ungültiges Geräteeigenschaften Format" #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP: Ungültiger Geräteeigenschaftswert" #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP: Ungültiger Parameter" #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP: Sitzung bereits geöffnet." #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP: Transaktion abgebrochen" #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "PTP: Spezifikation des Zieles nicht unterstützt" #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP: EK-Filename erforderlich" #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP: EK Filenamenskonflikt" #~ msgid "PTP: EK Filename Invalid" #~ msgstr "PTP: EK-Filename ungültig" #~ msgid "PTP: I/O error" #~ msgstr "PTP: Ein/Ausgabefehler" #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP: Fehler: Ungültiger Parameter" #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP: Protokollfehler: Daten erwartet" #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP: Protokollfehler: Antwort erwartet" #~ msgid "Could not find any driver for '%s'" #~ msgstr "Konnte keinen Treiber für »%s« finden." #~ msgid "No additional information available." #~ msgstr "Keine zusätzlichen Informationen verfügbar." #, fuzzy #~ msgid "" #~ "Canon EOS Trigger Capture failed: CameraStatus 1, busy from previous " #~ "capture?" #~ msgstr "Canon EOS Aufnahme triggern fehlgeschlagen: Kein Fokus?" #~ msgid "Movie Recording" #~ msgstr "Film Aufnahmeziel" #~ msgid "Unknown (some kind of error)" #~ msgstr "Unbekannte Antwort (Kamerafehler)" #~ msgid "ISO Auto Time" #~ msgstr "ISO Auto Zeit" #~ msgid "%s is a file type for which no thumbnail is provided" #~ msgstr "%s ist ein Filetyp für den keine Preview angeboten wird" #~ msgid "" #~ "canon_usb_poll_interrupt_pipe: interrupt read failed after %i tries, " #~ "%6.3f sec \"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_pipe: lesen von Interrupt Pipe fehlgeschlagen " #~ "nach %i Versuchen, %6.3f Sekunden %s» «" #~ msgid "" #~ "canon_usb_poll_interrupt_multiple: interrupt read failed after %i tries, " #~ "\"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_pipe: lesen vom Interruptrohr fehlgeschlagen " #~ "nach %i versuchen, »%s«" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for thumbnail size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: Falsche Paketlänge 0x%04x füer " #~ "Vorschaubildslänge" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for full image size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: Falsche Paketlänge 0x%04x für Bildslänge" #~ msgid "canon_usb_capture_dialogue: secondary image descriptor received" #~ msgstr "canon_usb_capture_dialogue: zweiter Bilddescriptor empfangen" #~ msgid "canon_usb_capture_dialogue: first interrupt read out of sequence" #~ msgstr "canon_usb_capture_dialogue: erste Interruptspaket außer Reihenfolge" #~ msgid "canon_usb_capture_dialogue: second interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: zweite Interruptspaket außer Reihenfolge" #~ msgid "" #~ "canon_usb_capture_dialogue: photographic failure signaled, code = 0x%08x" #~ msgstr "" #~ "canon_usb_capture_dialogue: Aufnahme photographisch fehlgeschlagen, " #~ "code=0x%08x" #~ msgid "canon_usb_capture_dialogue: third EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: dritte EOS Interruptspaket außer Reihenfolge" #~ msgid "" #~ "canon_usb_capture_dialogue: fourth EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: zweite EOS Interruptspaket außer Reihenfolge" #~ msgid "canon_usb_dialogue: payload too big, won't fit into buffer (%i > %i)" #~ msgstr "" #~ "canon_usb_dialogue: Nutzlast zu groß, passt nicht in Puffer (%i > %i)" #~ msgid "canon_usb_dialogue: expected 0x%x bytes, but camera reports 0x%x" #~ msgstr "canon_usb_dialogue: 0x%x Byte erwartet, aber Kamera berichtet 0x%x" #~ msgid "Unavailable" #~ msgstr "Nicht verfügbar" #~ msgid "sRAW2" #~ msgstr "sRAW2" #~ msgid "sRAW2 + Large Fine JPEG" #~ msgstr "sRAW2 + Large Fine JPEG" #~ msgid "sRAW2 + Medium Fine JPEG" #~ msgstr "sRAW2 + Medium Fine JPEG" #~ msgid "sRAW2 + Small Fine JPEG" #~ msgstr "sRAW2 + Small Fine JPEG" #~ msgid "sRAW2 + Large Normal JPEG" #~ msgstr "sRAW2 + Large Normal JPEG" #~ msgid "sRAW2 + Medium Normal JPEG" #~ msgstr "sRAW2 + Medium Normal JPEG" #~ msgid "sRAW2 + Small Normal JPEG" #~ msgstr "sRAW2 + Small Normal JPEG" #~ msgid "No zoom" #~ msgstr "Kein Zoom" #~ msgid "Zoom 1" #~ msgstr "Zoom 1" #~ msgid "Zoom 2" #~ msgstr "Zoom 2" #~ msgid "Zoom 3" #~ msgstr "Zoom 3" #~ msgid "Zoom 4" #~ msgstr "Zoom 4" #~ msgid "Zoom 5" #~ msgstr "Zoom 5" #~ msgid "Zoom 6" #~ msgstr "Zoom 6" #~ msgid "Zoom 7" #~ msgstr "Zoom 7" #~ msgid "Zoom 8" #~ msgstr "Zoom 8" #~ msgid "Zoom 9" #~ msgstr "Zoom 9" #~ msgid "Invalid zoom level" #~ msgstr "Ungültiger Zoomwert" #, fuzzy #~ msgid "" #~ "This driver supports cameras with Jeilin jl3005c chip \n" #~ "These cameras do not support deletion of photos, nor uploading\n" #~ "of data. \n" #~ "Decoding of compressed photos may or may not work well\n" #~ "and does not work equally well for all supported cameras.\n" #~ "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" #~ "If present on the camera, video clip frames are downloaded \n" #~ "as consecutive still photos.\n" #~ "For further details please consult libgphoto2/camlibs/README.jl2005c\n" #~ msgstr "" #~ "Dieser Treiber unterstützt Kameras mit dem Mars MR97310 Chip (und\n" #~ "direkten Äquivalenten ??Pixart PAC0x7??).\n" #~ "Diese Kameras erlauben es nicht, Dateien zu löschen oder vom\n" #~ "Computer auf die Kamera zu kopieren.\n" #~ "Die Decodierung komprimierter Bilder kann funktionieren (oder auch\n" #~ "nicht) und funktioniert nicht mit allen unterstützten Kameras gleich\n" #~ "gut.\n" #~ "Die Verarbeitung von Daten für die Argus QuickClix ist NICHT " #~ "unterstützt.\n" #~ "Falls auf der Kamera vorhanden, werden die Rahmen von Videoclips als\n" #~ "einzelne Standbilder heruntergeladen.\n" #~ "Weitere Details finden Sie in libgphoto2/camlibs/mars/README.mars.\n" #~ msgid "spot" #~ msgstr "Punkt" #~ msgid "average" #~ msgstr "Durchschnitt" #~ msgid "multi spot metering" #~ msgstr "Mehrpunkt Messung" #~ msgid "large" #~ msgstr "groß" #~ msgid "medium 1" #~ msgstr "mittel 1" #~ msgid "medium 2" #~ msgstr "mittel 2" #~ msgid "medium 3" #~ msgstr "mittel 3" #~ msgid "small" #~ msgstr "klein" #~ msgid "Timer + Remote 2" #~ msgstr "Selbstauslöser + Entfernt 2" #~ msgid "Default" #~ msgstr "Standard" #~ msgid "Auto ISO PADV Time" #~ msgstr "Auto ISO P/A/DVP Zeit" #~ msgid "This camera does not support event handling." #~ msgstr "Die Kamera unterstützt Ereignissbehandlung nicht." #~ msgid "" #~ "Could not append '%s' to folder '%s' because this file already exists." #~ msgstr "" #~ "Konnte »%s« nicht an Verzeichnis »%s« anhängen, da diese Datei bereits " #~ "existiert." libgphoto2-2.5.9/po/ja.po0000644000175000001440000123741312623156273012107 00000000000000# ja.po for libgphoto2. # This file is distributed under the same license as the libgphoto2 package. # # Yukihiro Nakai , 2000. # Takeshi Aihana , 2001-2002, 2004. # AMANO Kazuhiro , 2002. # Tadashi Jokagi , 2008-2009. # msgid "" msgstr "" "Project-Id-Version: libgphoto2 2.4.7\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2009-09-23 04:00+0900\n" "Last-Translator: Tadashi Jokagi \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" "Adc65\n" "Benjamin Moos " #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "Agfa CL20 Linux ドライãƒã®æä¾›è€…ï¼\n" " Email us at cl20@poeml.de \n" " ホームページ㯠http://cl20.poeml.de " #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "ãŠä½¿ã„ã® USB カメラã«ã¯ Aox ãƒãƒƒãƒ—ã‚»ãƒƒãƒˆãŒæ­è¼‰ã•れã¦ã„ã¾ã™ã€‚\n" "低解åƒåº¦ã®å†™çœŸã®æ•° = %i\n" "高解åƒåº¦ã®å†™çœŸã®æ•° = %i\n" "写真ã®åˆè¨ˆ = %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Aox 汎用ドライãƒ\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 #, fuzzy msgid "Picture Frame Configuration" msgstr "カメラã®è¨­å®š" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 #, fuzzy msgid "Synchronize frame data and time with PC" msgstr "ã‚«ãƒ¡ãƒ©ã®æ—¥æ™‚㨠PC ã‚’åŒæœŸã™ã‚‹" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "å†™çœŸã®æ•°: %i\n" "ファームウェア・ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "ç”»åƒãƒ‡ãƒ¼ã‚¿ã®ãƒªãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ãƒªãƒ³ã‚°æ‹…当:\n" "Jeff Laing \n" "\n" "WEB 上ã«å®Ÿè£…済ã¿ã®ä½¿ç”¨æ–¹æ³•ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆ\n" "ãŒã‚りã¾ã™ã€‚Vision ã®æ‰¿è«¾æ¸ˆã¿ã€‚" #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "ディレクトリ %s を生æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "ディレクトリ %s を削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "キーã®ãƒ­ãƒƒã‚¯ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*䏿˜Ž*" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image: 関数 canon_usb_list_all_dirs() ã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—" "㟠(ステータス %li)" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image: 関数 canon_usb_list_all_dirs() ã®çµ‚了処ç†ã«å¤±æ•—ã—ã¾" "ã—㟠(ステータス %i)" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "åå‰ '%s' (%li å€‹ã®æ–‡å­—) ã¯é•·ã™ãŽã¾ã™ã€‚最大 30 文字ã¾ã§æœ‰åйã§ã™ã€‚" #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "%s ã«å°æ–‡å­—ãŒã‚りã¾ã™ã€‚" #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory: ERROR: åˆæœŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒçŸ­ã™ãŽã¾ã™ (%i < 最å°å€¤ %i)" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_directory: 最åˆã® dirent を調査ã™ã‚‹éš›ã«ãƒ‘ケットã®çµ‚端ã«åˆ°é”ã—" "ã¾ã—ãŸ" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "canon_int_list_directory: 切りã¤ã‚られãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«é­é‡ã—ã¾ã—ãŸ" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "ファイルãŒä¿è­·ã•れã¦ã„ã¾ã™ã€‚" #: camlibs/canon/canon.c:3717 #, fuzzy, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory: ERROR: åˆæœŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒçŸ­ã™ãŽã¾ã™ (%i < 最å°å€¤ %i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "" "データã‹ã‚‰ JPEG サムãƒã‚¤ãƒ«ã¸å±•é–‹ã§ãã¾ã›ã‚“ã§ã—ãŸ: é–‹å§‹/終端ãŒã‚りã¾ã›ã‚“" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "" "データã‹ã‚‰ JPEG サムãƒã‚¤ãƒ«ã¸å±•é–‹ã§ãã¾ã›ã‚“ã§ã—ãŸ: データ㯠JFIF ã§ã¯ã‚りã¾ã›" "ã‚“" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "%3$i 行㮠%2$s ã«ã‚るパラメータ \"%1$s\" ㌠NULL ã§ã™" #: camlibs/canon/canon.h:638 #, fuzzy, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" "%4$i 行㮠%3$s ã«ã‚ã‚‹ camera->port->type ã®å€¤ %1$i (0x%2$x) を扱ãˆã¾ã›ã‚“。" #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "致命的ãªã‚¨ãƒ©ãƒ¼: CRC ã®åˆæœŸå€¤ (サイズ %d) ãŒä¸æ˜Žã§ã™\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "CRC ã®åˆæœŸå€¤ã‚’推測ã§ãã¾ã›ã‚“\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "警告: CRC ãŒãƒã‚§ãƒƒã‚¯ã•れã¦ã„ã¾ã›ã‚“ (サイズ %d, 値 0x%04x ã®è¿½åŠ ) " "#########################\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "互æ›ãƒ¢ãƒ¼ãƒ‰" #: camlibs/canon/library.c:98 msgid "Thumbnail" msgstr "サムãƒã‚¤ãƒ«" #: camlibs/canon/library.c:99 msgid "Full Image" msgstr "完全ãªç”»åƒ" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "" #: camlibs/canon/library.c:216 msgid "Auto focus: one-shot" msgstr "オートフォーカス: ワンショット" #: camlibs/canon/library.c:217 msgid "Auto focus: AI servo" msgstr "オートフォーカス: AI サーボ" #: camlibs/canon/library.c:218 msgid "Auto focus: AI focus" msgstr "オートフォーカス: AI フォーカス" #: camlibs/canon/library.c:219 msgid "Manual focus" msgstr "マニュアルフォーカス" #: camlibs/canon/library.c:224 msgid "Beep off" msgstr "ビープãªã—" #: camlibs/canon/library.c:225 msgid "Beep on" msgstr "ビープã‚り" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 msgid "Flash off" msgstr "フラッシュãªã—" #: camlibs/canon/library.c:231 msgid "Flash on" msgstr "フラッシュã‚り" #: camlibs/canon/library.c:232 msgid "Flash auto" msgstr "自動フラッシュ" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "" #: camlibs/canon/library.c:267 #, fuzzy msgid "Manual 2" msgstr "å–り扱ã„説明書" #: camlibs/canon/library.c:268 #, fuzzy msgid "Far scene" msgstr "è›å…‰ç¯" #: camlibs/canon/library.c:269 #, fuzzy msgid "Fast shutter" msgstr "シャッター速度" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "" #: camlibs/canon/library.c:271 #, fuzzy msgid "Night scene" msgstr "夜風景" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "セピア" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 msgid "Portrait" msgstr "縦å‘ã" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "焦点" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "マクロ" #: camlibs/canon/library.c:277 #, fuzzy msgid "BW" msgstr "B/W" #: camlibs/canon/library.c:278 #, fuzzy msgid "PanFocus" msgstr "マニュアルフォーカス" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "Vivid" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 msgid "Neutral" msgstr "ナãƒãƒ¥ãƒ©ãƒ«" #: camlibs/canon/library.c:282 #, fuzzy msgid "Long shutter" msgstr "フォーカスã®è·é›¢" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "" #: camlibs/canon/library.c:285 #, fuzzy msgid "Indoor" msgstr "屋外" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "" #: camlibs/canon/library.c:291 #, fuzzy msgid "Night snapshot" msgstr "夜風景" #: camlibs/canon/library.c:292 #, fuzzy msgid "Digital macro" msgstr "デジタル・ズーム" #: camlibs/canon/library.c:293 #, fuzzy msgid "MyColors" msgstr "色彩" #: camlibs/canon/library.c:294 #, fuzzy msgid "Photo in movie" msgstr "Fill モードãªã—" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "RAW" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" #: camlibs/canon/library.c:497 #, c-format msgid "Camera unavailable: %s" msgstr "カメラãŒåˆ©ç”¨ã§ãã¾ã›ã‚“: %s" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "カメラを OFF ã«ã—ã¾ã™" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "ç”»åƒã®ã‚­ãƒ£ãƒ—ãƒãƒ£ä¸­ã«ã‚¨ãƒ©ãƒ¼" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "ディスクåã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "使用ä¸å¯ã®ç†ç”±" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "ディスク情報をå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "関数 get_file_func() ã§å†…部エラー #1 (%2$i 行㮠%1$s)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "%s ã®ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒ»ãƒ•ァイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " ドライブ %s\n" " åˆè¨ˆ %11s ãƒã‚¤ãƒˆ\n" " %11s ãƒã‚¤ãƒˆæœ‰åй" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "AC アダプタ" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼å®¹é‡" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "é›»æº â—‹" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "é›»æº Ã—" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "使用ä¸å¯: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (host 時間 %s%i ç§’)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "ã‚«ãƒ¡ãƒ©ã®æƒ…å ±:\n" " åž‹å¼: %s\n" " 所有者: %s\n" "\n" "é›»æº: %s\n" "\n" "フラッシュディスク情報:\n" "%s\n" "\n" "時刻: %s\n" #: camlibs/canon/library.c:1145 #, fuzzy msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Cannon PowerShot シリーズã®ãƒ‰ãƒ©ã‚¤ãƒã€‚\n" "Wolfgang G.Reissnegger æ°ã€\n" "Werner Almesberger æ°ã€\n" "Edouard Lafargue æ°ã€\n" "Philippe Marzouk æ°ãŒæä¾›\n" "A5 追加㯠Ole W. Saastad\n" "Holger Klemm\n" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "ファイルã®å‰Šé™¤ä¸­ã«ã‚¨ãƒ©ãƒ¼" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "共有サムãƒã‚¤ãƒ«ã®å‰Šé™¤ä¸­ã«ã‚¨ãƒ©ãƒ¼" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã«ã‚¹ãƒ”ード 57600 以上ã§ã‚¢ãƒƒãƒ—ロードã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "フラッシュドライブをå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "アップロードã§ãã¾ã›ã‚“ã§ã—ãŸã€‚使ã‚れã¦ã„ãªã„フォルダåãŒã‚りã¾ã›ã‚“ï¼\n" "フォルダ 999CANON ã¯æ—¢ã«å­˜åœ¨ã—ã¦ãŠã‚Šã€ç”»åƒ AUT_9999.JPG ãŒãã®ä¸­ã«ã‚りã¾ã™ã€‚" #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "\\DCIM ディレクトリを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "対象ã¨ãªã‚‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "カメラã¨ãƒ‰ãƒ©ã‚¤ãƒã®è¨­å®š" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "カメラã®è¨­å®š" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 msgid "Owner Name" msgstr "所有者ã®åå‰" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 #, fuzzy msgid "Capture Size Class" msgstr "キャプãƒãƒ£ã‚µã‚¤ã‚ºã®ã‚¯ãƒ©ã‚¹" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "ISO スピード" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "䏿˜Ž" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 #, fuzzy msgid "Shooting mode" msgstr "測光モード" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 msgid "Shutter Speed" msgstr "シャッター速度" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "ズーム" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "絞り" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "露出度" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 msgid "Image Format" msgstr "ç”»åƒå½¢å¼" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "フォーカス・モード" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "フラッシュ モード" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "ビープ音" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 msgid "Camera Actions" msgstr "ã‚«ãƒ¡ãƒ©ã®æ“作" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "ã‚«ãƒ¡ãƒ©ã®æ—¥æ™‚㨠PC ã‚’åŒæœŸã™ã‚‹" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 msgid "Camera Status Information" msgstr "カメラã®çŠ¶æ…‹ã«ã¤ã„ã¦ã®æƒ…å ±" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "カメラã®åž‹å¼" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "æ—¥ä»˜ã¨æ™‚é–“" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "エラー" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 msgid "Firmware Version" msgstr "ファームウェアã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³" #: camlibs/canon/library.c:1956 msgid "Power" msgstr "é›»æº" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "ドライãƒ" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "全ファイルã®ä¸€è¦§" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "アップロード時ã«ãƒ•ァイルåã‚’ä¿æŒã™ã‚‹" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "カメラãŒç„¡åйã§ã™" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "所有者ãŒå¤‰æ›´ã•れã¾ã—ãŸ" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "所有者ã®åå‰ã‚’変更ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "ISO é€Ÿåº¦è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“" #: camlibs/canon/library.c:2056 msgid "ISO speed changed" msgstr "ISO 速度を変更ã—ã¾ã—ãŸ" #: camlibs/canon/library.c:2058 msgid "Could not change ISO speed" msgstr "ISO 速度を変更ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2082 #, fuzzy msgid "Invalid shooting mode setting" msgstr "フラッシュ モードã®è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“" #: camlibs/canon/library.c:2085 #, fuzzy msgid "Shooting mode changed" msgstr "フォーカスモードを変更ã—ã¾ã—ãŸ" #: camlibs/canon/library.c:2087 #, fuzzy msgid "Could not change shooting mode" msgstr "フラッシュ モードã®å¤‰æ›´ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "ã‚·ãƒ£ãƒƒã‚¿ãƒ¼é€Ÿåº¦è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“" #: camlibs/canon/library.c:2114 msgid "Shutter speed changed" msgstr "シャッター速度を変更ã—ã¾ã—ãŸ" #: camlibs/canon/library.c:2116 msgid "Could not change shutter speed" msgstr "シャッター速度を変更ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 msgid "Invalid aperture setting" msgstr "é–‹å£è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 msgid "Aperture changed" msgstr "é–‹å£ã‚’変更ã—ã¾ã—ãŸ" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 msgid "Could not change aperture" msgstr "é–‹å£ã‚’変更ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2167 #, fuzzy msgid "Invalid exposure compensation setting" msgstr "è§£åƒåº¦è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“" #: camlibs/canon/library.c:2170 #, fuzzy msgid "Exposure compensation changed" msgstr "露出度" #: camlibs/canon/library.c:2172 #, fuzzy msgid "Could not change exposure compensation" msgstr "è§£åƒåº¦ã‚’変更ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2194 msgid "Invalid image format setting" msgstr "ç”»åƒå½¢å¼ã®è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“" #: camlibs/canon/library.c:2198 msgid "Image format changed" msgstr "ç”»åƒå½¢å¼ã®å¤‰æ›´" #: camlibs/canon/library.c:2200 #, fuzzy msgid "Could not change image format" msgstr "é–‹å£ã‚’変更ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "フォーカスモードã®è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“" #: camlibs/canon/library.c:2226 msgid "Focus mode changed" msgstr "フォーカスモードを変更ã—ã¾ã—ãŸ" #: camlibs/canon/library.c:2228 msgid "Could not change focus mode" msgstr "フォーカスモードを変更ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "ビープモードã®è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“" #: camlibs/canon/library.c:2255 msgid "Beep mode changed" msgstr "ビープモードを変更ã—ã¾ã—ãŸ" #: camlibs/canon/library.c:2257 msgid "Could not change beep mode" msgstr "ビープモードを変更ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "ズームレベルを変更ã—ã¾ã—ãŸ" #: camlibs/canon/library.c:2276 msgid "Could not change zoom level" msgstr "ズームレベルを変更ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "フラッシュ モードã®è¨­å®šãŒæ­£ã—ãã‚りã¾ã›ã‚“" #: camlibs/canon/library.c:2332 msgid "Flash mode changed" msgstr "フラッシュ モードを変更ã—ã¾ã—ãŸ" #: camlibs/canon/library.c:2334 msgid "Could not change flash mode" msgstr "フラッシュ モードã®å¤‰æ›´ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "時刻ã®ã‚»ãƒƒãƒˆ" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "時刻をセットã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "" "未サãƒãƒ¼ãƒˆã®ãƒãƒ¼ãƒˆã®ç¨®é¡ž %i = 0x%x ãŒæŒ‡å®šã•れã¾ã—ãŸã€‚åˆæœŸåŒ–ã§ãã¾ã›ã‚“。" #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ãŒæ¶ˆè€—ã—ã¾ã—ãŸã€‚カメラを OFF ã«ã—ã¾ã™ã€‚" #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "エラー: 予期ã—ãªã„メッセージ" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "エラー: メッセージã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ãƒ³" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "エラー: シーケンスを越ãˆã¾ã—ãŸã€‚" #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "エラー: 予期ã—ãªã„パケットã®ç¨®é¡žã§ã™ã€‚" #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "エラー: メッセージ書å¼ã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "エラー: 予期ã—ãªã„メッセージ 2 ã§ã™ã€‚" #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "ファイルã®ã‚¢ãƒƒãƒ—ロード中..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "ファイルã®å–得中..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "canon_serial_get_dirents: canon_serial_dialogue ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’å–å¾—ã§ãã¾ã›" "ã‚“ã§ã—ãŸ" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" "canon_serial_get_dirents: dirent ã®åˆæœŸãƒ‘ケットãŒçŸ­ã™ãŽã¾ã™ (%i ãƒã‚¤ãƒˆã ã‘)" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "canon_serial_get_dirents: %i ãƒã‚¤ãƒˆã®ãƒ¡ãƒ¢ãƒªãƒ¼ã‚’確ä¿ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "canon_serial_get_dirents: 別ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "canon_serial_get_dirents: 切りã¤ã‚られãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’å—ã‘å–りã¾ã—ãŸ" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" "canon_serial_get_dirents: dirent ãŒå¤šã™ãŽã¾ã™ (ループã›ã–ã‚‹ã‚’å¾—ãªã„ã§ã™)" #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents: dirent ã®ãƒãƒƒãƒ•ァ・サイズを %i ãƒã‚¤ãƒˆã«å¤‰æ›´ã§ãã¾ã›" "ã‚“ã§ã—ãŸ" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "スピード変更ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "プロトコルã®å†è¨­å®š..." #: camlibs/canon/serial.c:1311 msgid "Camera OK." msgstr "カメラ㯠OK ã§ã™ã€‚" #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "ã‚«ãƒ¡ãƒ©ã®æ¤œå‡ºä¸­..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "カメラã¨é€šä¿¡ä¸­..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "通信エラー 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "カメラã‹ã‚‰å応ãŒã‚りã¾ã›ã‚“" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "èªè­˜ã§ããªã„å応ã§ã™" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "\"%s\" (\"%s\") を検出ã—ã¾ã—ãŸã€‚" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "䏿˜Žãªåž‹å¼ \"%s\"" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "ãŠã‹ã—㪠EOT" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "通信エラー 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "通信エラー 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "スピードã®å¤‰æ›´ä¸­... 少々ãŠå¾…ã¡ä¸‹ã•ã„..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "スピード変更ã§ã‚¨ãƒ©ãƒ¼" #: camlibs/canon/serial.c:1454 #, fuzzy msgid "Error waiting for ACK during initialization, retrying" msgstr "å†åˆæœŸåŒ–中㮠ACK å¾…ã¡ã§ã‚¨ãƒ©ãƒ¼" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "åˆæœŸåŒ–中㮠ACK å¾…ã¡ã§ã‚¨ãƒ©ãƒ¼" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "ã‚«ãƒ¡ãƒ©ã«æŽ¥ç¶šæ¸ˆã¿" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "エラー: 致命的ãªã‚¨ãƒ©ãƒ¼ã‚’検出ã—ã¾ã—ãŸã€‚続行ã§ãã¾ã›ã‚“。" #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "エラー: %d ã¯å¤§ãã™ãŽã¾ã™" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "サムãƒã‚¤ãƒ«ã®å–得中..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "èªè­˜ã•れã¦ã„ã¾ã›ã‚“" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "カメラã¨åˆæœŸæŽ¥ç¶šã‚’確立ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "ã‚«ãƒ¡ãƒ©ã¯æ—¢ã«ã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã§ã™" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "カメラãŒèµ·å‹•ã•れã¾ã—ãŸ" #: camlibs/canon/usb.c:252 #, fuzzy, c-format msgid "Initial camera response '%c' unrecognized" msgstr "カメラã®åˆæœŸå¿œç­” %c/'%s' ã‚’èªè­˜ã§ãã¾ã›ã‚“" #: camlibs/canon/usb.c:264 #, fuzzy, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" "ステップ #3 ã§åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—㟠(返り値 %i, 期待値 %i)。カメラをæ“作ã§ãã¾" "ã›ã‚“ï¼" #: camlibs/canon/usb.c:269 #, fuzzy, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "ステップ #3 ã§åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—㟠(返り値 %i, 期待値 %i)。カメラをæ“作ã§ãã¾" "ã›ã‚“ï¼" #: camlibs/canon/usb.c:288 #, fuzzy, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" "ステップ #3 ã§åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—㟠(返り値 %i, 期待値 %i)。カメラをæ“作ã§ãã¾" "ã›ã‚“ï¼" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, fuzzy, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" "ステップ #3 ã§åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—㟠(返り値 %i, 期待値 %i)。カメラをæ“作ã§ãã¾" "ã›ã‚“ï¼" #: camlibs/canon/usb.c:315 #, fuzzy, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" "ステップ #3 ã§åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—㟠(返り値 %i, 期待値 %i)。カメラをæ“作ã§ãã¾" "ã›ã‚“ï¼" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, fuzzy, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" "ステップ #4.1 ã§å¤±æ•—ã—ã¾ã—㟠(返り値 %i, 期待値 %i)。カメラをæ“作ã§ãã¾ã›ã‚“ï¼" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, fuzzy, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" "ステップ #4.1 ã§å¤±æ•—ã—ã¾ã—㟠(返り値 %i, 期待値 %i)。カメラをæ“作ã§ãã¾ã›ã‚“ï¼" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "ã‚«ãƒ¡ãƒ©ã®æº–å‚™ãŒã§ãã¦ã„ã¾ã›ã‚“。複数回 \"カメラ情報\" è¦æ±‚ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "ã‚«ãƒ¡ãƒ©ã®æº–å‚™ãŒã§ãã¦ã„ã¾ã›ã‚“ (get_battery ã«å¤±æ•—): %s" #: camlibs/canon/usb.c:632 #, fuzzy, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: 期待ã—ã¦ã„ãªã„サイズã®ãƒ‡ãƒ¼ã‚¿ã‚’å—ã‘å–りã¾ã—㟠(%i ãƒã‚¤" "ト, 期待値 %i)" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, fuzzy, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: 期待ã—ã¦ã„ãªã„サイズã®ãƒ‡ãƒ¼ã‚¿ã‚’å—ã‘å–りã¾ã—㟠(%i ãƒã‚¤" "ト, 期待値 %i)" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, fuzzy, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_unlock_keys: 期待ã—ã¦ã„ãªã„サイズã®ãƒ‡ãƒ¼ã‚¿ã‚’å—ã‘å–りã¾ã—㟠(%i ãƒã‚¤" "ト, 期待値 %i)" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, fuzzy, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_lock_keys: 期待ã—ã¦ã„ãªã„サイズã®ãƒ‡ãƒ¼ã‚¿ã‚’å—ã‘å–りã¾ã—㟠(%i ãƒã‚¤" "ト, 期待値 %i)" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "データã®å—信中..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "メモリーãŒè¶³ã‚Šã¾ã›ã‚“: %d ãƒã‚¤ãƒˆå¿…è¦ã§ã™ã€‚" #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes: canon_usb_dialogue ã«å¤±æ•—ã—ã¾ã—ãŸ" #: camlibs/canon/usb.c:2173 #, fuzzy, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "canon_usb_set_file_attributes: canon_usb_dialogue ãŒã‚¨ãƒ©ãƒ¼ãƒ»ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ 0x" "%08x ã‚’å—ã‘å–りã¾ã—ãŸ" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "ファイル \"%s\" を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "メモリーãŒè¶³ã‚Šã¾ã›ã‚“: %ld ãƒã‚¤ãƒˆå¿…è¦ã§ã™" #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "ファイルã®ã‚¢ãƒƒãƒ—ロードã«å¤±æ•—ã—ã¾ã—ãŸ" #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "ファイルãŒå¤§ãã™ãŽã¾ã™ã€‚ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã®é›»æºã‚’ OFF ã«ã—ã¦ã€ãƒ•ァイルをアップ" "ロードã™ã‚‹å‰ã«æˆ»ã—ã¦ä¸‹ã•ã„。" #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" "canon_usb_get_dirents: ãƒãƒƒãƒ•ã‚¡ã«èª­ã¿è¾¼ã‚ã¾ã›ã‚“。切りã¤ã‚ãŸã‚µã‚¤ã‚º '%.96s' ãŒ" "大ãã™ãŽã¾ã™ã€‚" #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents: canon_usb_long_dialogue ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®å–å¾—ã«å¤±æ•—ã—ã¾" "ã—㟠(返り値 %i)" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" "canon_usb_list_all_dirs: ãƒãƒƒãƒ•ã‚¡ã«èª­ã¿è¾¼ã‚ã¾ã›ã‚“。切りã¤ã‚ãŸã‚µã‚¤ã‚º '%.96s' " "ãŒå¤§ãã™ãŽã¾ã™ã€‚" #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs: canon_usb_long_dialogue ã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®å–å¾—ã«å¤±æ•—ã—" "ã¾ã—㟠(返り値 %i)" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "'%s' を検出ã—ã¾ã—ãŸã€‚" #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "カメラã®åå‰ \"%s\" ãŒæ—¢å­˜ã®ã‚«ãƒ¡ãƒ©åã«ä¸€è‡´ã—ã¾ã›ã‚“" #: camlibs/casio/casio-qv.c:152 #, c-format msgid "Image type %d not supported" msgstr "ç”»åƒã®ç¨®é¡ž %d ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "ç”»åƒ %s ã¯ãƒ—ロテクトã•れã¦ãŠã‚Šå‰Šé™¤ã§ãã¾ã›ã‚“。" #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ãƒ¬ãƒ™ãƒ«: %.1f ボルト リビジョン: %08x" #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "カメラã®è¨­å®š" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼" #: camlibs/casio/casio-qv.c:275 msgid "Brightness" msgstr "明るã•" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 msgid "Too bright" msgstr "明るã™ãŽã¾ã™" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 msgid "Too dark" msgstr "æš—ã™ãŽã¾ã™" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "OK" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "Logitech Clicksmart 310 ドライãƒ\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "sq905C å‘ã‘æ±Žç”¨ãƒ‰ãƒ©ã‚¤ãƒã€‚\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "ç”»åƒã®ç¨®é¡žãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "å†™çœŸã®æ•°: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita gPhoto ライブラリ\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "ルートã®ãƒ•ォルダã®ã¿ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ - フォルダ '%s' ã®ãƒ•ã‚¡ã‚¤ãƒ«ä¸€è¦§ã‚’è¦æ±‚ã—" "ã¾ã—ãŸã€‚" #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "ç”»åƒã®ç•ªå·ã®å–得中ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "ç”»åƒæƒ…å ±ã®å–得中ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "キャプãƒãƒ£ã®ç¨®é¡žãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (ãƒãƒƒãƒ†ãƒªãƒ¼å®¹é‡: 残り %d%%)" #: camlibs/dimera/dimera3500.c:455 #, fuzzy, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s %d/%d %d:%d\n" "ç´„ %d 個ã®å†™çœŸ: %d (高解åƒåº¦) ã¾ãŸã¯ %d (低解åƒåº¦)\n" "ã‚«ãƒ¡ãƒ©ã®æ©Ÿèƒ½: %s, %s, %s, %s\n" "ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã®æœ‰ç„¡: %s, (%s 㨠%s)\n" "è§£åƒåº¦: %s\n" "カメラ㯠%s (é›»æº%s)\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "フラッシュã‚り" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 msgid "No Flash" msgstr "フラッシュãªã—" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "デュアル Iris ã‚り" #: camlibs/dimera/dimera3500.c:468 msgid "No Dual Iris" msgstr "デュアル Iris ãªã—" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "è§£åƒåº¦åˆ‡æ›¿ãˆã‚り" #: camlibs/dimera/dimera3500.c:470 msgid "No Resolution Switch" msgstr "è§£åƒåº¦åˆ‡æ›¿ãˆãªã—" #: camlibs/dimera/dimera3500.c:472 msgid "No Power Light" msgstr "é›»æºãƒ©ãƒ³ãƒ—ãªã—" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "ON" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "OFF" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "準備完了" #: camlibs/dimera/dimera3500.c:476 msgid "Not ready" msgstr "準備未完了" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "Fill モードã‚り" #: camlibs/dimera/dimera3500.c:478 msgid "Not in fill mode" msgstr "Fill モードãªã—" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "低 (320 x 240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "高 (640 x 480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "外部" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "内部" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* ã»ã¨ã‚“ã©ã®å ´åˆã€ç”»åƒã®æ¬ æã‚„通信上ã®å•題ã¯\n" " ãƒãƒƒãƒ†ãƒªãƒ¼ä¸è¶³ãŒåŽŸå› ã§ã™ã€‚\n" "* ã“ã®ã‚«ãƒ¡ãƒ©ã§ãƒªãƒ¢ãƒ¼ãƒˆãƒ»ã‚­ãƒ£ãƒ—ãƒãƒ£ã•れãŸç”»åƒã¯\n" " フラッシュメモリー・カードã§ã¯ãªã一時的㫠RAM 上ã«ä¿å­˜ã•れã¦ã„ã¾ã™ã€‚\n" "* 全画åƒã®ã‚­ãƒ£ãƒ—ãƒãƒ£ä¸­ã®éœ²å‡ºã®åˆ¶å¾¡ã¯ã‚­ãƒ£ãƒ—ãƒãƒ£ãƒ»ãƒ—レビュー機能ã«ã‚ˆã£ã¦\n" " 自動的ã«ã‚»ãƒƒãƒˆã•れã¾ã™ã€‚\n" "* ç”»åƒã®å“質ã¯ä»Šã®ã¨ã“ã‚å¯èƒ½ãªãƒ¬ãƒ™ãƒ«ã‚ˆã‚Šã‚‚低ã„ã‚‚ã®ã«ãªã£ã¦ã„ã¾ã™ã€‚\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "ã“ã®ã‚½ãƒ•トウェア㯠StarDot Technologies 社ãŒ\n" "æ‰€æœ‰æ¨©ã‚’ã‚‚ã¤æƒ…å ±ã‹ã‚‰ä½œæˆã•れã¾ã—ãŸã€‚\n" "\n" "作者:\n" " Brian Beattie \n" "å”力者:\n" " Chuck Homic \n" " ãƒ—ãƒ­ãƒˆã‚³ãƒ«ã®æƒ…å ±ã€ç”Ÿç”»åƒã®å½¢å¼ã€\n" " gPhoto2 ã¸ã®ç§»æ¤æ‹…当\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "フラッシュカードã‹ã‚‰ç”»åƒã®èª­ã¿è¾¼ã¿ä¸­ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "メモリーãŒè¶³ã‚Šã¾ã›ã‚“" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "ç”»åƒã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "ç”»åƒã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "ユーザã«ã‚ˆã£ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãŒå–り消ã•れã¾ã—ãŸ" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "リアルタイム画åƒã®å–得中ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "露出" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "自動露出調整ã®ãƒ—レビュー" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "露出レベルã®ãƒ—レビュー" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "キャプãƒãƒ£æ™‚ã®è‡ªå‹•フラッシュ" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "ãƒãƒ¼ãƒˆã‚’é–‹ã„ã¦ã„る最中ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "カメラã®å†è¨­å®šä¸­ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "カメラã®é€šä¿¡é€Ÿåº¦ã®è¨­å®šä¸­ã«å•題ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "カメラã§ã¯ãªãã€ãƒ¢ãƒ‡ãƒ ã®ã‚ˆã†ã§ã™" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "'%s' ã«ã‚るファイル一覧を作æˆä¸­..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "'%s' ã«ã‚るフォルダ一覧ã®ä½œæˆä¸­..." #: camlibs/directory/directory.c:381 #, fuzzy, c-format msgid "Could not get information about '%s' (%s)." msgstr "'%s' (%m) ã®æƒ…報をå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/directory/directory.c:414 #, fuzzy, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "'%s' ('%s' ã®ä¸­ã«ã‚ã‚‹) (%m) ã®æƒ…報をå–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/directory/directory.c:462 #, fuzzy, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "ファイル '%s' ('%s' ã®ä¸­ã«ã‚ã‚‹) (%m) ã®æ™‚刻を変更ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "'%s' ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "ディレクトリå‚ç…§ \"camera\" ã¯ã‚³ãƒ³ãƒ”ュータ上ã®å†™çœŸã®ç›®éŒ²ã‚’作æˆã—ã¾ã™ã€‚" #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "ディレクトリå‚照モード - Scott Fritzinger æ°ã®æä¾›ã€‚" #: camlibs/directory/directory.c:671 #, fuzzy, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "" "ファイル '%s' (フォルダ '%s' ã®ä¸­ã«ã‚ã‚‹) を削除ã§ãã¾ã›ã‚“ã§ã—㟠(エラーコー" "ド %i:%m)。" #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" "Digital Dream Enigma 1.3 用ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒ—ログラムã§ã™ã€‚作者㯠" " ã§ã€Spca50x ドライãƒã‚’使ã£ãŸãƒãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚‚行ã„ã¾ã—" "ãŸã€‚Spca50x 開発ãƒãƒ¼ãƒ ã«æ„Ÿè¬ã—ã¾ã™ã€‚ã“ã®ã‚«ãƒ¡ãƒ©ç”¨ã®ãƒ‰ãƒ©ã‚¤ãƒã‚’ç°¡å˜ã«ãƒãƒ¼ãƒˆã§ã" "ã¾ã—ãŸï¼" #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "" "カメラ㌠%i ãƒã‚¤ãƒˆã®ã¿é€ä¿¡ã—ã¾ã—ãŸãŒã€å¿…è¦ãªãƒã‚¤ãƒˆæ•°ã¯å°‘ãªãã¨ã‚‚ %i ã§ã™ã€‚" #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "ã‚«ãƒ¡ãƒ©ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "予期ã—ãªã„データをå—ã‘å–りã¾ã—㟠(0x%02x, 0x%02x)。" #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "" "エスケープ・シーケンスãŒé–“é•ã£ã¦ã„ã¾ã™: 0x%02x ãªã®ã« 0x%02x ã‚’å—ã‘å–りã¾ã—" "ãŸã€‚" #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "データãŒãŠã‹ã—ã„ã§ã™ - 0x%02x ã‚’å–å¾—ã—ã¾ã—㟠(期待値: 0x%02x)" #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "" "データãŒãŠã‹ã—ã„ã§ã™ - 0x%02x ã‚’å–å¾—ã—ã¾ã—㟠(期待値: 0x%02x ã¾ãŸã¯ 0x%02x)" #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "ãƒã‚§ãƒƒã‚¯ã‚µãƒ ãŒãŠã‹ã—ã„ã§ã™ - 0x%02x ã‚’å–å¾—ã—ã¾ã—㟠(期待値: 0x%02x)" #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "カメラãŒã‚³ãƒžãƒ³ãƒ‰ã‚’å—ã‘付ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "カメラãŒãƒªã‚»ãƒƒãƒˆã—ã¾ã—ãŸã€‚" #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "カメラãŒäºˆæœŸã—ãªã„ãƒã‚¤ãƒˆ 0x%02x ã‚’é€ä¿¡ã—ã¦ãã¾ã—ãŸã€‚" #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "ダウンロード中..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "" "サムãƒã‚¤ãƒ«ã‚’ダウンロードã™ã‚‹ã®ã«å¿…è¦ãª %i ãƒã‚¤ãƒˆã‚’確ä¿ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "ç”»åƒã‚’ダウンロードã™ã‚‹ã®ã«å¿…è¦ãª %i ãƒã‚¤ãƒˆã‚’確ä¿ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "カメラã¯ãƒ•ァイルåã¨ã—㦠'%s' ã‚’å—ã‘付ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "ã‚¢ãƒƒãƒ—ãƒ­ãƒ¼ãƒ‰ã‚’åˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—㟠(カメラã‹ã‚‰ã®å¿œç­”: 0x%02x)。" #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "カメラã¯ã‚¹ãƒ”ード %i をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "スピードを %i ã«ã‚»ãƒƒãƒˆã§ãã¾ã›ã‚“ã§ã—㟠(カメラã‹ã‚‰ã®å¿œç­”: %i)。" #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin æ°\n" "Thierry Bousch 作㮠fujiplay ãŒãƒ™ãƒ¼ã‚¹ã§ã™ã€‚\n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "ビットレート %ld ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。" #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "FUJI カメラã®è¨­å®š" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "æ—¥ä»˜ã¨æ™‚é–“" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "åž‹å¼: " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "有効ãªãƒ¡ãƒ¢ãƒªãƒ¼: " #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "gsmart300 å‘ã‘ã®ãƒ©ã‚¤ãƒ–ラリ。\n" "Till Adam \n" "Jerome Lodewyck \n" "Mustek gSmart 300 デジタル・カメラå‘ã‘ã®\n" "gPhoto2 camlib モジュール㨠Mustek ãŒæä¾›ã—ã¦ãれãŸä»•様。\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ãƒãƒ¼ãƒˆã®ç¨®é¡ž: %d ã€ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã¯ USB カメラã§ã®ã¿å‹•作ã—ã¾" "ã™ã€‘\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "カメラをリセットã§ãã¾ã›ã‚“ã§ã—ãŸ\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, fuzzy, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã§ã¯æœ€å¾Œã®ãƒ•ァイルã®å‰Šé™¤ã®ã¿ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ç¾åœ¨ã“ã®ãƒ•ァイ" "ル㯠'%s' ã«è©²å½“ã—ã¾ã™ã€‚" #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" #: camlibs/iclick/library.c:104 #, fuzzy, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "ãŠä½¿ã„ã® USB カメラ㯠Kodak EZ200 ã§ã™ã€‚\n" "写真ã®åˆè¨ˆ = %i\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "iClick 5X å‘ã‘ドライãƒ\n" "Theodore Kilgore \n" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "撮影ã—ãŸãƒ•レーム数: %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "jamcam ライブラリ Ver" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "データã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "サムãƒã‚¤ãƒ«ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã®å‘上より㯠JD11 カメラ関係ã®ä½œæ¥­ã‚’担当。\n" "RS232 インタフェース @ 115 kbit ã¯ç”»åƒè»¢é€ã§å¿…è¦ã§ã™ã€‚\n" "ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã®é©ç”¨ç¯„囲:\n" "\n" " - サムãƒã‚¤ãƒ« (64x48 PGM フォーマット)\n" " - ç”»åƒ (640x480 PPM フォーマット)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Jenoptik JD11 カメラ用ã®ãƒ‰ãƒ©ã‚¤ãƒæ‹…当。\n" "WINE 㨠IDA を使用ã—ã¦ãƒªãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ã•れãŸãƒ—ロトコル。" #: camlibs/jd11/jd11.c:186 msgid "JD11 Configuration" msgstr "JD11 設定" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "ãã®ä»–ã®è¨­å®š" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "ãƒãƒ«ãƒ–露出時間" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "色ã®è¨­å®š" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "赤" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "ç·‘" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "é’" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "jl2005a カメラå‘ã‘ライブラリ\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005c/library.c:146 #, fuzzy msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" "ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã¯ Mars MR97310 ãƒãƒƒãƒ—ã‚’æ­è¼‰ã—ãŸã‚«ãƒ¡ãƒ©\n" "(ã¨ã€??Pixart PACx07?? ã«ç­‰ä¾¡ãªã‚‚ã®) をサãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã€\n" "gtkam も利用ã§ãã¾ã™ã€‚\n" "ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã¯æ¬¡ã®ã‚ˆã†ãªæ©Ÿèƒ½ã‚’æä¾›ã—ã¦ã„ã¾ã™:\n" " - gtkam å‘ã‘ã®ã‚µãƒ ãƒã‚¤ãƒ«ç”Ÿæˆ\n" " - ãƒ•ãƒ«ç”»åƒ (640x480 ã¾ãŸã¯ 320x240 PPM) (??352x288 & 176x144??)\n" "ã“ã®ãƒãƒƒãƒ—ã‚’æ­è¼‰ã—ãŸã‚«ãƒ¡ãƒ©ã§ã¯ã€å†™çœŸã®å‰Šé™¤ã€ç”»åƒãƒ‡ãƒ¼ã‚¿ã®ã‚¢ãƒƒãƒ—ロード\n" "ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã§ã¯ã€ã‚ªãƒ—ションã§ã‚ã‚‹\n" "写真ã®åœ§ç¸®ãƒ¢ãƒ¼ãƒ‰ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" "ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ãŒå‹•ç”»ã®ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’æä¾›ã—ã¦ã„ã‚‹å ´åˆã€\n" "ビデオ・クリップã®ãƒ•レームã¯é€£ç¶šã—ãŸå†™çœŸã¨ã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™ã€‚\n" #: camlibs/jl2005c/library.c:161 #, fuzzy msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "jl2005c カメラã®ãƒ©ã‚¤ãƒ–ラリ\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "コンパクトフラッシュ・カード" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "Kodak DC120 カメラã¯ç”»åƒã‚’ä¿å­˜ã™ã‚‹ã®ã« KDC ファイル形å¼ã‚’使用ã—ã¾ã™ã€‚カメラã‹" "らダウンロードã—ã¦ç”»åƒã‚’表示ã™ã‚‹å ´åˆã¯ã€\"kdc2tiff\" プログラムを http://" "kdc2tiff.sourceforge.net ã‹ã‚‰å…¥æ‰‹ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Kodak DC120 カメラ・ライブラリ\n" "Scott Fritzinger \n" "Kodak DC120 カメラ用ã®ãƒ©ã‚¤ãƒ–ラリ\n" "(ã‚„ã£ã¨æ™®åŠã—ãŸã®ã§)" #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "データã®å–得中..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "完了ã™ã‚‹ã®ã‚’å¾…ã£ã¦ã„ã¾ã™..." #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "ファイル" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "ファイルã®ç¨®é¡ž" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "ファイルã®è§£åƒåº¦" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "ファイル圧縮" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "低 (最高å“質)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "中 (高å“質)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "高 (普通ã®å“質)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "キャプãƒãƒ£" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "露出度" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "自動" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "強制発光" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "ãªã—" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "赤目軽減フラッシュ" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "ON" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "OFF" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "ãã®ä»–" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "カメラã®å†…蔵時計ã®ã‚»ãƒƒãƒˆ" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "ãƒãƒ¼ãƒˆã®ã‚¹ãƒ”ード" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "アルãƒãƒ å" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "åˆæœŸåŒ–時ã«ã¤ã‘るカードã®åå‰ã§ã™ã€‚" #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "コンパクト・フラッシュã®åˆæœŸåŒ–" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "ã‚«ãƒ¼ãƒ‰ã‚’åˆæœŸåŒ–ã—ã¦ã‚¢ãƒ«ãƒãƒ åを付与ã—ã¾ã™ã€‚" #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "デãƒãƒƒã‚°" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "引数を付ã‘ã¦\n" "å‰ã«å®šç¾©ã—ãŸã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¾ã™ã€‚" #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "カメラ内ã®å†™çœŸæ•°: %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:506 #, c-format msgid "Total pictures taken: %d\n" msgstr "å–å¾—ã—ãŸå†™çœŸã®åˆè¨ˆæ•°: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "フラッシュを発光ã—ãŸåˆè¨ˆæ•°: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, c-format msgid "Firmware: %d.%d\n" msgstr "ファームウェア: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, c-format msgid "Filetype: JPEG (" msgstr "ファイルã®ç¨®é¡ž: JPEG (" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "ファイルã®ç¨®é¡ž: FlashPix (" #: camlibs/kodak/dc210/dc210.c:527 #, c-format msgid "low compression, " msgstr "低圧縮ã€" #: camlibs/kodak/dc210/dc210.c:529 #, c-format msgid "medium compression, " msgstr "通常圧縮ã€" #: camlibs/kodak/dc210/dc210.c:531 #, c-format msgid "high compression, " msgstr "高圧縮ã€" #: camlibs/kodak/dc210/dc210.c:533 #, c-format msgid "unknown compression %d, " msgstr "䏿˜Žãªåœ§ç¸® %dã€" #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "䏿˜Žãªè§£åƒåº¦ %d)\n" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "AC アダプターを接続ã—ã¾ã—ãŸã€‚\n" #: camlibs/kodak/dc210/dc210.c:558 #, c-format msgid "AC adapter is not connected.\n" msgstr "AC ã‚¢ãƒ€ãƒ—ã‚¿ãƒ¼ãŒæŽ¥ç¶šã•れã¦ã„ã¾ã›ã‚“。\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "時間: %Y å¹´ %-m 月 %-d æ—¥ (%a) %T\n" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "ズーム: 58mm\n" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "ズーム: 51 mm\n" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "ズーム: 41 mm\n" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "ズーム: 34 mm\n" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "ズーム: 29 mm\n" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "ズーム: マクロ\n" #: camlibs/kodak/dc210/dc210.c:580 #, c-format msgid "Unknown zoom mode %d\n" msgstr "䏿˜Žãªã‚ºãƒ¼ãƒ  モード %d\n" #: camlibs/kodak/dc210/dc210.c:586 #, fuzzy, c-format msgid "Exposure compensation: %s\n" msgstr "露出度" #: camlibs/kodak/dc210/dc210.c:588 #, fuzzy, c-format msgid "Exposure compensation: %d\n" msgstr "露出度" #: camlibs/kodak/dc210/dc210.c:593 #, c-format msgid "Flash mode: auto, " msgstr "フラッシュ モード: 自動ã€" #: camlibs/kodak/dc210/dc210.c:595 #, c-format msgid "Flash mode: force, " msgstr "フラッシュ モード: 強制ã€" #: camlibs/kodak/dc210/dc210.c:597 #, c-format msgid "Flash mode: off\n" msgstr "フラッシュ モード: オフ\n" #: camlibs/kodak/dc210/dc210.c:599 #, c-format msgid "Unknown flash mode %d, " msgstr "䏿˜Žãªãƒ•ラッシュ モード %dã€" #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "赤目軽減フラッシュã¯ã‚ªãƒ³ã§ã™ã€‚\n" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "赤目軽減フラッシュã¯ã‚ªãƒ•ã§ã™ã€‚\n" #: camlibs/kodak/dc210/dc210.c:615 #, c-format msgid "No card in camera.\n" msgstr "カメラã«ã‚«ãƒ¼ãƒ‰ãŒã‚りã¾ã›ã‚“。\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" "カードå: %s\n" "カードã®ç©ºã容é‡: %d キロãƒã‚¤ãƒˆ\n" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "ã“ã®ãƒ©ã‚¤ãƒ–ラリ㯠Kodak DC 215 ズーム・カメラを使ã£ã¦ãƒ†ã‚¹ãƒˆã•れã¦ã„ã¾ã™ã€‚ãŠã" "らã DC 200 㨠DC 210 カメラã§ã‚‚動作ã™ã‚‹ã“ã¨ã§ã—ょã†ã€‚ã‚‚ã—ãã®ã‚ˆã†ãªã‚«ãƒ¡ãƒ©ã‚’" "ãŠæŒã¡ã§ã€ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã®ãƒ©ã‚¤ãƒ–ラリを使ã£ã¦å•題ãŒç™ºç”Ÿã—ãŸã‚Šã€æ­£ã—ã動作ã—ãŸãª" "ã©ã®çжæ³ã‚’ koltan@gmx.de ã¾ã§ãƒ¡ãƒ¼ãƒ«ã§çŸ¥ã‚‰ã›ã¦ä¸‹ã•ã„。" #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Kodak DC215 ズーム・カメラ用ã®ãƒ©ã‚¤ãƒ–ラリã§ã™ã€‚\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "待機中..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "引数 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "引数 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "引数 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "åž‹å¼: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "ファームウェアã®ãƒªãƒ“ジョン: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "é›»æº: %s AC アダプタ: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "å†™çœŸã®æ•°: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "残り空ã容é‡: 高: %d 中: %d, 低: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "メモリー カードã®çŠ¶æ…‹ (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "キャプãƒãƒ£ã—ãŸå†™çœŸã®åˆè¨ˆ: %d フラッシュã®ç™ºå…‰æ•°: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Kodak DC240 カメラ・ライブラリ\n" "Scott Fritzinger 㨠Hubert Figuiere \n" "Kodak DC240, DC280, DC3400 and DC5000 カメラ用ã®ãƒ©ã‚¤ãƒ–ラリ担当。\n" "gPhoto2 å‘ã‘ã«æ›¸ãç›´ã—ã¨æ›´æ–°ã€‚" #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "å¼±ã„" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "空" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "䏿­£" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "未使用" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "使用中" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "カードãŒç©ºã„ã¦ã„ã¾ã™" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "カードãŒé–‰ã¾ã£ã¦ã„ã¾ã™" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "カードãŒãƒ•ォーマットã•れã¦ã„ã¾ã›ã‚“" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "カードãŒã‚りã¾ã›ã‚“" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "ç¾åœ¨æ“作ãŒé€²è¡Œä¸­ã§ã™ã€‚ã“ã®ã‚«ãƒ¡ãƒ©ã®ã¿åŒæ™‚ã«ä¸€ã¤ã®æ“作をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ç¾" "åœ¨ã®æ“作ãŒçµ‚了ã™ã‚‹ã¾ã§ãŠå¾…ã¡ä¸‹ã•ã„。" #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "カメラ㌠9 秒以上動作ã—ã¦ã„ã¾ã›ã‚“。å†åˆæœŸåŒ–ã—ã¾ã™ã€‚\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "既知ã®å•題:\n" "\n" "1. Kodak DC3200 ãŒæœ€ä½Ž 10 ç§’é–“éš”ã§ã‚³ãƒžãƒ³ãƒ‰ã‚’å—ä¿¡ã—ãªã‹ã£ãŸã‚‰ã€ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—" "ã¦ã„ã‚‹ã®ã§ã€å†åˆæœŸåŒ–ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚カメラã«å応ãŒãªã‹ã£ãŸã‚‰ã€ã‚«ãƒ¡ãƒ©ã‚’å†" "é¸æŠžã™ã‚‹ã ã‘ã§ã‚ˆã„ã§ãŒã€ã“ã®å ´åˆã‚‚å†åˆæœŸåŒ–ã—ã¦ä¸‹ã•ã„。" #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Kodak DC3200 ドライãƒ\n" "Donn Morrison \n" "\n" "質å•やコメントã¯å¤§æ­“迎ã§ã™ã€‚" #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "ãŠä½¿ã„ã® USB カメラ㯠Kodak EZ200 ã§ã™ã€‚\n" "写真ã®åˆè¨ˆ = %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "Kodak EZ200 ドライãƒ\n" "Bucas Jean-Francois \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "フォーカスã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "アイリスã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "ストローブã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "EEPROM ãƒã‚§ãƒƒã‚¯ã‚µãƒ ãƒ»ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "内部エラー (1) ã§ã™ã€‚" #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "内部エラー (2) ã§ã™ã€‚" #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "カードãŒã‚りã¾ã›ã‚“。" #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "カードをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "カードãŒã‚¢ã‚¯ã‚»ã‚¹ä¸­ã«æŠœãå–られã¾ã—ãŸã€‚" #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "ç”»åƒã®ç•ªå·ãŒæ­£ã—ãã‚りã¾ã›ã‚“。" #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "ã‚«ãƒ¼ãƒ‰ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“。" #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "カードã¸ã®æ›¸ãè¾¼ã¿ä¿è­·ãŒæœ‰åйã§ã™ã€‚" #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "ã‚«ãƒ¼ãƒ‰ã«æ®‹ã‚Šå®¹é‡ãŒã‚りã¾ã›ã‚“。" #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "ç”»åƒãŒä¿è­·ã•れã¦ã„ã¾ã™ã€‚" #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ãŒæš—ã™ãŽã¾ã™ã€‚" #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "自動フォーカスã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" #: camlibs/konica/konica.c:110 msgid "System error." msgstr "システムã®ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "䏿­£ãªãƒ‘ラメータã§ã™ã€‚" #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "コマンドã¯ã‚­ãƒ£ãƒ³ã‚»ãƒ«ã§ãã¾ã›ã‚“。" #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "日本語データãŒé•·ã™ãŽã¾ã™ã€‚" #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "日本語データãŒãŠã‹ã—ã„ã§ã™ã€‚" #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„コマンドã§ã™ã€‚" #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "ä»–ã®ã‚³ãƒžãƒ³ãƒ‰ã®å®Ÿè¡ŒãŒä¸­æ­¢ã•れã¾ã—ãŸã€‚" #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "コマンドã®å®Ÿè¡Œé †ã§ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "エラーを特定ã§ãã¾ã›ã‚“。" #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "カメラãŒä¸æ˜Žãªã‚¨ãƒ©ãƒ¼ã‚’è¿”ã—ã¦ãã¾ã—ãŸã€‚ã“ã®ã‚¨ãƒ©ãƒ¼ã‚’å†ç¾ã™ã‚‹æ–¹æ³•を追加ã—ãŸãƒ" "グ・レãƒãƒ¼ãƒˆã‚’ %s ã¾ã§å ±å‘Šã—ã¦ä¸‹ã•ã„ (0x%x,0x%x)。ã”å”åŠ›ã«æ„Ÿè¬ã—ã¾ã™ï¼" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "ファイル一覧ã®å–得中..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "ç•°ãªã‚‹ã‚¹ãƒ”ードã§ãƒ†ã‚¹ãƒˆä¸­..." #: camlibs/konica/library.c:338 #, fuzzy msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "カメラã¨é€šä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ã‚³ãƒ³ãƒ”ãƒ¥ãƒ¼ã‚¿ã«æŽ¥ç¶šã—ã¦ã‹ã‚‰é›»æºã‚’投入ã—ã¦ä¸‹ã•" "ã„。" #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "書ãè¾¼ã¿ä¿è­·ãŒã‹ã‹ã£ã¦ã„ã‚‹ %i 個ã®å†™çœŸã‚’削除ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "åž‹å¼: %s\n" "シリアル番å·: %s\n" "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãƒ»ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %i.%i\n" "ソフトウェア・ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %i.%i\n" "テスト用ソフトウェア・ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %i.%i\n" "åç§°: %s\n" "製造元: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Konica ライブラリ\n" "Lutz Mueller \n" "Konika 全機種ã¨å¹¾ã¤ã‹ã® HP カメラã®ã‚µãƒãƒ¼ãƒˆæ‹…当。" #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "設定ã®å–得中..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Konica ã®è¨­å®š" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "全機種ã«å…±é€šãªè¨­å®š" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "写真を撮る時ã«ã‚«ãƒ¡ãƒ©ã®ãƒ“ープ音を鳴らã—ã¾ã™ã‹ï¼Ÿ" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "ã‚»ãƒ«ãƒ•ã‚¿ã‚¤ãƒžãƒ¼ã®æ™‚é–“" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "自動 OFF 時間" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "スライドショーã®è¡¨ç¤ºé–“éš”" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "è§£åƒåº¦" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "低 (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "中 (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "高 (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "日本語化" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "言語" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "ä½•ã‚‚é¸æŠžã•れã¦ã„ã¾ã›ã‚“" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "TV 出力ã®å½¢å¼" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "TV メニューを表示ã—ãªã„" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "データ形å¼" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "月/æ—¥/å¹´" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "æ—¥/月/å¹´" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "å¹´/月/æ—¥" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "全機種ã«å…±é€šãªã‚»ãƒƒã‚·ãƒ§ãƒ³ã®è¨­å®š" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "ON, Red-Eye 減少" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "自動, Red-Eye 減少" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "フォーカス" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "固定" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Volatile ã®è¨­å®š" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "セルフタイマー" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "セルフタイマー (次ã®å†™çœŸã®ã¿)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "標準" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "'%s' ã«æ—¥æœ¬èªžãƒ‡ãƒ¼ã‚¿ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "ローカライズファイルãŒé•·ã™ãŽã¾ã™ï¼" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "ã“ã®ãƒ—レビューã¯å­˜åœ¨ã—ã¾ã›ã‚“。" #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "データãŒå£Šã‚Œã¦ã„ã¾ã™ã€‚" #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "ã“ã®ç”»åƒã®ç¨®é¡ž %d ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ï¼" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "ç”»åƒ %s を削除ã§ãã¾ã›ã‚“。" #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "å…¨ã¦ã®ç”»åƒã‚’削除ã§ãã¾ã›ã‚“。" #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "ç”»åƒã®ã‚¢ãƒƒãƒ—ロード中..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 #, fuzzy msgid "Can't upload this image to the camera. An error has occurred." msgstr "エラーãŒç™ºç”Ÿã—ãŸã®ã§ã€ã“ã®ç”»åƒã‚’カメラã¸ã‚¢ãƒƒãƒ—ロードã§ãã¾ã›ã‚“。" #: camlibs/konica/qm150.c:634 #, fuzzy msgid "You must be in record mode to capture images." msgstr "ç”»åƒã‚’キャプãƒãƒ£ã™ã‚‹ã«ã¯è¨˜éŒ²ãƒ¢ãƒ¼ãƒ‰ã«åˆ‡ã‚Šæ›¿ãˆã¦ä¸‹ã•ã„。" #: camlibs/konica/qm150.c:637 #, fuzzy msgid "No space available to capture new images. You must delete some images." msgstr "" "æ–°ã—ã„ç”»åƒã‚’ä¿å­˜ã™ã‚‹ãŸã‚ã®ç©ºã容é‡ãŒã‚りã¾ã›ã‚“。何ã‹ç”»åƒã‚’削除ã—ã¦ä¸‹ã•ã„。" #: camlibs/konica/qm150.c:641 #, fuzzy msgid "Can't capture new images. Unknown error" msgstr "䏿˜Žãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸã®ã§ã€æ–°ã—ã„ç”»åƒã‚’ä¿å­˜ã§ãã¾ã›ã‚“。" #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "カメラã‹ã‚‰å¿œç­”ãŒã‚りã¾ã›ã‚“" #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "低" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "中" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "高ã„" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "液晶モニタ" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "アイコン" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "2.0 m" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "0.5 m" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "0.1 m" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "オフィス" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "晴天" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "鮮明度" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "シャープ" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "ソフト" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "色彩" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "å…‰æº" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "æ·±ã•" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "モノクロ" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "シングル" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "シーケンス 9" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "日付ã®è¡¨ç¤º" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "ã©ã“ã§ã‚‚" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "å†ç”Ÿãƒ¢ãƒ¼ãƒ‰" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "記録モード" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "場所をå•ã‚ãš" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "é›»æº" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "å†ç”Ÿ" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "記録" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "DD/MM/YYYY" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "YYYY/MM/DD" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "MM/DD/YYYY" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "åž‹å¼: %s\n" "容é‡: %i メガãƒã‚¤ãƒˆ\n" "é›»æº: %s\n" "自動 OFF ã®æ™‚é–“: %i 分\n" "モード: %s\n" "ç”»åƒã®æ•°: %i/%i\n" "日付ã®è¡¨ç¤º: %s\n" "æ—¥ä»˜ã¨æ™‚刻: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Konica Q-M150 ライブラリ\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "フランス製 Konica Q-M150 ã®ã‚µãƒãƒ¼ãƒˆã€‚" #: camlibs/konica/qm150.c:1203 #, fuzzy, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "About Konica Q-M150:\n" "ã“ã®ã‚«ãƒ¡ãƒ©ã¯å¤–部ã‹ã‚‰ã®è¨­å®šå¤‰æ›´ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" "ãã®ãŸã‚カメラã®è¨­å®šæƒ…報を表示ã™ã‚‹ã“ã¨ã—ã‹ã§ããšã€\n" "何も変更ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。\n" "\n" "ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã‚’使ã£ã¦ã„ã‚‹éš›ã«ä½•ã‹å•題ãŒç™ºç”Ÿã—ãŸã‚‰ã€\n" "ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã®ä½œè€…ã¸ãƒ¡ãƒ¼ãƒ«ã—ã¦ä¸‹ã•ã„。\n" "\n" "GPhoto2 㨠UNIX/Linux を使ã£ã¦ãれã¦ã‚りãŒã¨ã†ã€‚\n" #: camlibs/largan/lmini/largan.c:228 #, fuzzy msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Largan ドライãƒ\n" "Hubert Figuiere \n" "\n" "Largan Lmini ã‚«ãƒ¡ãƒ©ã®æ“作用ã§ã™ã€‚\n" #: camlibs/lg_gsm/library.c:102 #, fuzzy, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" "USB カメラ㯠LG GSM ã«è¦‹ãˆã¾ã™ã€‚\n" "ファームウェア: %s\n" "ファームウェアãƒãƒ¼ã‚¸ãƒ§ãƒ³: %s\n" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" "LG GSM 汎用ドライãƒ\n" "Guillaume Bedot \n" #: camlibs/mars/library.c:124 #, fuzzy, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Mars MR97310 カメラ。\n" "写真ã®åˆè¨ˆ = %i\n" msgstr[1] "" "Mars MR97310 カメラ。\n" "写真ã®åˆè¨ˆ = %i\n" #: camlibs/mars/library.c:135 #, fuzzy msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" "ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã¯ Mars MR97310 ãƒãƒƒãƒ—ã‚’æ­è¼‰ã—ãŸã‚«ãƒ¡ãƒ©\n" "(ã¨ã€??Pixart PACx07?? ã«ç­‰ä¾¡ãªã‚‚ã®) をサãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã€\n" "gtkam も利用ã§ãã¾ã™ã€‚\n" "ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã¯æ¬¡ã®ã‚ˆã†ãªæ©Ÿèƒ½ã‚’æä¾›ã—ã¦ã„ã¾ã™:\n" " - gtkam å‘ã‘ã®ã‚µãƒ ãƒã‚¤ãƒ«ç”Ÿæˆ\n" " - ãƒ•ãƒ«ç”»åƒ (640x480 ã¾ãŸã¯ 320x240 PPM) (??352x288 & 176x144??)\n" "ã“ã®ãƒãƒƒãƒ—ã‚’æ­è¼‰ã—ãŸã‚«ãƒ¡ãƒ©ã§ã¯ã€å†™çœŸã®å‰Šé™¤ã€ç”»åƒãƒ‡ãƒ¼ã‚¿ã®ã‚¢ãƒƒãƒ—ロード\n" "ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã§ã¯ã€ã‚ªãƒ—ションã§ã‚ã‚‹\n" "写真ã®åœ§ç¸®ãƒ¢ãƒ¼ãƒ‰ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" "ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ãŒå‹•ç”»ã®ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’æä¾›ã—ã¦ã„ã‚‹å ´åˆã€\n" "ビデオ・クリップã®ãƒ•レームã¯é€£ç¶šã—ãŸå†™çœŸã¨ã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™ã€‚\n" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "Mars MR97310 カメラã®ãƒ©ã‚¤ãƒ–ラリ。\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "åž‹å¼:\t\t\tMinolta Dimage V (%s)\n" "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãƒ»ãƒªãƒ“ジョン:\t%s\n" "ファームウェア・リビジョン:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "ホストモード:\t%s\n" "露出ã®å–å¾—:\t\t%s\n" "露出データ:\t\t%d\n" "データ整åˆ:\t\t%s\n" "日付:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "セルフタイマー:\t%s\n" "è§£åƒåº¦ã®è¨­å®š:\t%s\n" "å†ç”Ÿ/記録モード:%s\n" "カードIDæ•´åˆ:\t%s\n" "カードID:\t\t%d\n" "フラッシュ モード:\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "リモート" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "ローカル" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "ã¯ã„" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "ã„ã„ãˆ" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "ファイン" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "標準" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "自動\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "強制発光\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "ç™ºå…‰ç¦æ­¢\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "ãŠã‹ã—ãªå€¤ ( %d)\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "ãƒãƒƒãƒ†ãƒªãƒ¼ãƒ¬ãƒ™ãƒ«:\t%s\n" "ç”»åƒã®ç•ªå·:\t\t%d\n" "残り容é‡:\t\t%d\n" "動作モード:\t\t%s\n" "フラッシュ充電:\t%s\n" "レンズã®çŠ¶æ…‹:\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "使用中" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "フル充電" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "動作中" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "アイドル中" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "充電中" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "準備 OK" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "標準\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "レンズã®å‘ããŒãƒ•ãƒ©ãƒƒã‚·ãƒ¥ã®æ–¹å‘ã¨åŒã˜ã§ã¯ã‚りã¾ã›ã‚“\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "レンズãŒã¤ã„ã¦ã„ã¾ã›ã‚“\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "レンズã®çŠ¶æ…‹ãŒãŠã‹ã—ã„ã§ã™ %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "カードã®çŠ¶æ…‹:\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "書ãè¾¼ã¿ä¿è­·ã¤ã" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "サãƒãƒ¼ãƒˆã—ãªã„カード" #: camlibs/minolta/dimagev/dimagev.c:406 #, fuzzy, c-format msgid "Bad value for card status %d" msgstr "カード %d ã®çŠ¶æ…‹ãŒãŠã‹ã—ã„値" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Minolta Dimage V gPhoto ライブラリ\n" "%s\n" "Gus Hartmann \n" "ミノルタ(æ ª) ã‹ã‚‰ã®ä»•様æä¾›ã«æ„Ÿè¬ã—ã¾ã™ã€‚" #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "フラッシュライト : 自動 (赤目軽減発光)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "フラッシュライト : 自動" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "フラッシュライト : ON (赤目軽減発光)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "フラッシュライト : ON" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "フラッシュライト : OFF" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "フラッシュライト : ãªã—" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Mustek MDC800 ã®æ¦‚è¦:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "ステータスãŒå ±å‘Šã•れã¦ã„ã¾ã›ã‚“。" #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "コンパクトフラッシュ・カードを検出ã—ã¾ã—ãŸ\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "コンパクトフラッシュ・カードãŒã‚りã¾ã›ã‚“ã§ã—ãŸ\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "ç¾åœ¨ã®ãƒ¢ãƒ¼ãƒ‰: カメラ・モード\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "ç¾åœ¨ã®ãƒ¢ãƒ¼ãƒ‰: å†ç”Ÿãƒ¢ãƒ¼ãƒ‰\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ã¯å……分ã§ã™ã€‚" #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ãŒå°‘ãªã„ã§ã™ã€‚" #: camlibs/mustek/mdc800.c:264 #, fuzzy msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Mustek MDC-800 gPhoto2 ライブラリ\n" "Henning Zabel æ° ,\n" "Marcus Meissner æ° ã«ã‚ˆã‚‹ãƒãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã€‚\n" "シリアル㨠USB プロトコルをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚" #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "coolshot ライブラリ Ver" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "カメラã¨ã®æŽ¥ç¶šãŒåˆ‡ã‚Œã¦ã„ã¾ã™ã€‚" #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "ç”»åƒ %s ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­ã§ã™ã€‚" #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "ç”»åƒ %s ã®ã‚¢ãƒƒãƒ—ロード中ã§ã™ã€‚" #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "ファイルサイズ㯠%ld ãƒã‚¤ãƒˆã§ã™ã€‚アップロードå¯èƒ½ãªã‚µã‚¤ã‚ºã¯ %i ãƒã‚¤ãƒˆã§ã™ã€‚" #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "アップロード中..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "ç”»åƒ %s を削除ã—ã¾ã™ã€‚" #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1000 gPhoto ライブラリ\n" "Mariusz Zynel \n" "\n" "Fredrik Roubert æ° ã¨\n" "Galen Brooks æ° ãŒ\n" "作æˆã—㟠dc1000 プログラムãŒãƒ™ãƒ¼ã‚¹ã§ã™ã€‚" #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "%s ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­ã§ã™ã€‚" #: camlibs/panasonic/dc1580.c:627 msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1580 gPhoto2 ライブラリ\n" "Mariusz Zynel \n" "\n" "dc1000 プログラムを基ã«ã—ã¦\n" "Fredrik Roubert æ° ã¨\n" "Galen Brooks æ° ãŒä½œæˆã—ã¾ã—ãŸã€‚" #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "'%s' ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­..." #: camlibs/panasonic/l859/l859.c:582 #, fuzzy msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic 㯠Palmcorder シリーズ㧠PHOTOSHOT ã¨å‘¼ã°ã‚Œã‚‹ç”»åƒã‚­ãƒ£ãƒ—ãƒãƒ£æŠ€è¡“ã‚’ã¯" "ã˜ã‚ã¦ç´¹ä»‹ã—ã¾ã—ãŸã€‚ç”»åƒã¯å†…蔵ã®ãƒ•ラッシュカード㫠JPEG å½¢å¼ã§æ ¼ç´ã•れã€å†…蔵" "シリアルãƒãƒ¼ãƒˆã§ãƒ‘ソコンã«ç”»åƒã‚’転é€ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ç”»åƒã®ä¿å­˜å½¢å¼ã¯äºŒã¤" "ã‚りã¾ã™; '標準' 㯠320x240 'ファイン' 㯠640x480 ã§ã™ã€‚動画をキャプãƒãƒ£ã™ã‚‹ " "CCD デãƒã‚¤ã‚¹ã¯ 300K ã®ã¿ã§ã€ä½Žè§£åƒåº¦ã®å†™çœŸã®ã¿æä¾›ã—ã¾ã™ã€‚" #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "既知ã®å•題:\n" "\n" "通信エラーãŒç™ºç”Ÿã—ãŸå ´åˆã€ã‚«ãƒ¡ãƒ©ã®é›»æºã‚’リセットã—ã¦ã‚¢ãƒ—リケーションをå†èµ·å‹•" "ã—ã¦ä¸‹ã•ã„。ドライãƒã¯ã“ã®ã‚ˆã†ãªçŠ¶æ…‹ã‹ã‚‰å¾©æ´»ã§ãã‚‹ã»ã©ã—ã£ã‹ã‚Šã—ãŸä½œã‚Šã«ãªã£" "ã¦ã„ã¾ã›ã‚“。特ã«å•題ãŒç™ºç”Ÿã—ãŸå ´åˆã¯ã‚«ãƒ¡ãƒ©ã¯é€šä¿¡é€Ÿåº¦ 9600 よりも高ã„状態ã§å¼·" "制終了ã™ã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。" #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder ドライãƒ\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " メモリーã®åˆè¨ˆ = %8d ãƒã‚¤ãƒˆ\n" " 空ãメモリー = %8d ãƒã‚¤ãƒˆ\n" " ファイル数: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" " 作者: Till Adam\n" "\n" "㨠Miah Gregory\n" " " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "ファイルã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­..." #: camlibs/pccam600/library.c:249 msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" "作者: Peter Kajberg \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, fuzzy, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "pccam600_init: 期待値 > %d 個ã®ãƒ–ロック, 返り値 %d 個" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "pccam600_get_file: インデックス %d å€‹ã€æœŸå¾…値 > %d" #: camlibs/pccam600/pccam600.c:180 #, fuzzy, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "pccam600_close: 返り値 %d, 期待値 %d" #: camlibs/pccam600/pccam600.c:213 #, fuzzy, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "pccam600_init: 期待値 %d ã®ãƒ–ロック, 返り値 %d 個ã®ãƒ–ロック" #: camlibs/pccam600/pccam600.c:224 #, fuzzy, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" "pccam600 init: 予期ã—ãªã„エラー: gp_port_read ㌠%2$d ã§ã¯ãªã %1$d ã‚’è¿”ã—ã¾" "ã—ãŸ" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Plolaroid カメラã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒ»ãƒ—ログラムã§ã™ã€‚オリジナルã®ä½œè€…㯠Peter " "Desnoyers ã€gPhoto2 ã¸ã®ãƒãƒ¼ãƒ†ã‚£ãƒ³ã‚°æ‹…当㯠Nathan " "Stenzel 㨠Lutz Mueller ã§ã™ã€‚\n" "Polaroid 640SE を使ã£ãŸãƒ†ã‚¹ãƒˆã¯ Michael Golden ãŒæ‹…当ã—ã¾" "ã—ãŸã€‚" #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "åž‹å¼: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 #, fuzzy msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "GrandTek 98x ç³»ã®ã‚«ãƒ¡ãƒ©ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒ»ãƒ—ログラムã§ã™ã€‚オリジナルã®ä½œè€…㯠" "Chris Byrne ã€gPhoto2 ã¸ã®ãƒãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã¯ Lutz Mueller " " ã§ã™ã€‚Jenoptik JD350e ã®ãƒ—ãƒ­ãƒˆã‚³ãƒ«ã®æ‹¡å¼µã¨å‰å‡¦ç†ã¯ " "Michael Trawny ãŒæ‹…当ã—ã¾ã—ãŸã€‚ãƒã‚°ä¿®æ­£ã¯ " "Marcus Meissner ãŒæ‹…当ã—ã¾ã—ãŸã€‚" #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "ç”»åƒã®å“質" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "ç”»åƒã‚µã‚¤ã‚º" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "フラッシュã®è¨­å®š" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "自動パワーオフ (分後)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "情報" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "標準" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "ファイン" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "スーパーファイン" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "自動" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "ON" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "OFF" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "å†ç”Ÿ" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "記録" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "メニュー" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "é›»æºã‚¢ãƒ€ãƒ—ã‚¿" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "䏿˜Žãªãƒ˜ãƒƒãƒ€ã‚’å—ã‘å–りã¾ã—㟠(%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "予期ã—ãªã„å応をå—ã‘å–りã¾ã—ãŸ" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "ãƒã‚§ãƒƒã‚¯ã‚µãƒ ãƒ»ã‚¨ãƒ©ãƒ¼" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "カメラã¯ã‚³ãƒžãƒ³ãƒ‰ã‚’å—ã‘付ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "カメラãŒäºˆæœŸã—ãªã„サイズ以上をé€ä¿¡ã—ã¾ã—㟠(%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "写真 %i ã«ã¤ã„ã¦ã®æƒ…å ± (= 0x%x) ã‚’è¦æ±‚ã—ã¾ã—ãŸãŒã€å†™çœŸ %i ã®æƒ…報をå–å¾—ã—ã¾ã—" "ãŸ" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "%i ãƒã‚¤ãƒˆã®ä¸æ˜Žãªç”»åƒå½¢å¼ã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã¾ã§é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Polaroid DC700 カメラã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒ»ãƒ—ログラムã§ã™ã€‚gPhoto-4.x å‘ã‘ã®ã‚ªãƒªã‚¸" "ナルã®ä½œè€…㯠Ryan Lantzer ã§ã™ã€‚gPhoto2 ã¸ã®ãƒãƒ¼ãƒ†ã‚£ãƒ³ã‚°" "㯠Lutz Mueller ãŒæ‹…当ã—ã¾ã—ãŸã€‚" #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "カメラ" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "カメラをパワーオフã™ã‚‹ã¾ã§ã®æ™‚間を指定ã—ã¦ä¸‹ã•ã„。" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "ç”»åƒ" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "日付: %i/%02i/%02i %02i:%02i:%02i\n" "記録ã—ãŸå†™çœŸæ•°: %i\n" "残りã®è¨˜éŒ²å¯èƒ½æ•°: %i\n" "ソフトウェア・ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %s\n" "Baudrate: %s\n" "残りメモリー: %i Mãƒã‚¤ãƒˆ\n" "カメラ・モード: %s\n" "ç”»åƒã®å“質: %s\n" "フラッシュã®è¨­å®š: %s\n" "情報: %s\n" "タイマー: %s\n" "液晶モニタ: %s\n" "自動パワーオフ: %i 分後\n" "é›»æºå…ƒ: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã§ã¯è¦æ±‚ã—ãŸãƒãƒ¼ãƒˆåž‹å¼ (%i) をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "" "ã™ã¿ã¾ã›ã‚“ã€ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯ã‚­ãƒ¤ãƒŽãƒ³ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, c-format msgid "Unknown value %04x" msgstr "䏿˜Žãªå€¤ %04x ã§ã™" #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, fuzzy, c-format msgid "Unknown value %04d" msgstr "䏿˜Žãªå€¤ %04x ã§ã™" #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "予期ã—ãªã„データ種 %i" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "å–り扱ã„説明書" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 msgid "Automatic" msgstr "自動" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 msgid "One-push Automatic" msgstr "ワンプッシュ自動" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "é›»çƒ" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "曇天" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "シェード" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "色温度" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "プリセット" #: camlibs/ptp2/config.c:1415 #, fuzzy msgid "Fluorescent Lamp 1" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:1416 #, fuzzy msgid "Fluorescent Lamp 2" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:1417 #, fuzzy msgid "Fluorescent Lamp 3" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:1418 #, fuzzy msgid "Fluorescent Lamp 4" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:1419 #, fuzzy msgid "Fluorescent Lamp 5" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 #, fuzzy msgid "Choose Color Temperature" msgstr "色温度" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "" #: camlibs/ptp2/config.c:1430 #, fuzzy msgid "Fluorescent: Warm White" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:1431 #, fuzzy msgid "Fluorescent: Cold White" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:1432 #, fuzzy msgid "Fluorescent: Day White" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:1433 #, fuzzy msgid "Fluorescent: Daylight" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 msgid "JPEG Fine" msgstr "JPEG ファイン" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 msgid "JPEG Normal" msgstr "JPEG 標準" #: camlibs/ptp2/config.c:1443 #, fuzzy msgid "RAW + JPEG Fine" msgstr "JPEG ファイン" #: camlibs/ptp2/config.c:1444 #, fuzzy msgid "RAW + JPEG Normal" msgstr "JPEG 標準" #: camlibs/ptp2/config.c:1449 #, fuzzy msgid "Single frame" msgstr "シングルエリア" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 #, fuzzy msgid "Continuous low speed" msgstr "測光モード" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 #, fuzzy msgid "Continuous high speed" msgstr "測光モード" #: camlibs/ptp2/config.c:1452 #, fuzzy msgid "Self-timer" msgstr "セルフタイマー" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "" #: camlibs/ptp2/config.c:1735 msgid "undefined" msgstr "未定義" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "エコノミー" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "劣化ãªã—" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 msgid "Undefined" msgstr "未定義" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "CRW" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "TV" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "AV" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "A_DEP" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "M_DEP" #: camlibs/ptp2/config.c:1771 #, fuzzy msgid "DEP" msgstr "A_DEP" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "カスタム" #: camlibs/ptp2/config.c:1773 #, fuzzy msgid "Lock" msgstr "AF ロック維æŒ" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "夜間ãƒãƒ¼ãƒˆãƒ¬ãƒ¼ãƒˆ" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "スãƒãƒ¼ãƒ„" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "横å‘ã" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "" #: camlibs/ptp2/config.c:1780 #, fuzzy msgid "Flash Off" msgstr "フラッシュãªã—" #: camlibs/ptp2/config.c:1788 msgid "red eye suppression" msgstr "赤目軽減" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "フィルイン" #: camlibs/ptp2/config.c:1790 msgid "auto + red eye suppression" msgstr "自動ã€èµ¤ç›®è»½æ¸›" #: camlibs/ptp2/config.c:1791 msgid "on + red eye suppression" msgstr "ONã€èµ¤ç›®è»½æ¸›" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "iTTL" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 #, fuzzy msgid "Commander" msgstr "コマンドã®å®Ÿè¡Œé †ã§ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "繰り返ã—" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "TTL" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 msgid "Auto Aperture" msgstr "自動開å£" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 msgid "Full Manual" msgstr "完全手動" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "AF-S" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "AF-C" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "AF-A" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 msgid "MF (fixed)" msgstr "MF (固定)" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "MF (é¸æŠž)" #: camlibs/ptp2/config.c:1928 #, fuzzy msgid "Center-weighted" msgstr "中央部é‡ç‚¹" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "å¹³å‡" #: camlibs/ptp2/config.c:1931 #, fuzzy msgid "Evaluative" msgstr "Volatile ã®è¨­å®š" #: camlibs/ptp2/config.c:1932 #, fuzzy msgid "Partial" msgstr "引数 1" #: camlibs/ptp2/config.c:1933 #, fuzzy msgid "Center-weighted average" msgstr "中央部é‡ç‚¹" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "" #: camlibs/ptp2/config.c:1935 #, fuzzy msgid "Multi spot" msgstr "複数焦点" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "モノクロ" #: camlibs/ptp2/config.c:1947 msgid "User defined 1" msgstr "ユーザー定義 1" #: camlibs/ptp2/config.c:1948 msgid "User defined 2" msgstr "ユーザー定義 2" #: camlibs/ptp2/config.c:1949 msgid "User defined 3" msgstr "ユーザー定義 3" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 #, fuzzy msgid "Multiple Focusing Points, Auto" msgstr "フォーカスã®ç„¦ç‚¹" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 #, fuzzy msgid "Multiple Focusing Points (Right)" msgstr "フォーカスã®ç„¦ç‚¹" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 #, fuzzy msgid "Multiple Focusing Points (Left)" msgstr "フォーカスã®ç„¦ç‚¹" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 #, fuzzy msgid "Large" msgstr "大ãã„" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 #, fuzzy msgid "Medium 1" msgstr "中" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 #, fuzzy msgid "Medium 2" msgstr "中" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 #, fuzzy msgid "Medium 3" msgstr "中" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 #, fuzzy msgid "Small" msgstr "å°ã•ã„" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "10 ç§’" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "2 ç§’" #: camlibs/ptp2/config.c:2088 #, fuzzy msgid "TFT" msgstr "TTL" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "" #: camlibs/ptp2/config.c:2092 #, fuzzy msgid "Setting 4" msgstr "フラッシュã®è¨­å®š" #: camlibs/ptp2/config.c:2093 #, fuzzy msgid "Setting 5" msgstr "フラッシュã®è¨­å®š" #: camlibs/ptp2/config.c:2094 #, fuzzy msgid "Setting 6" msgstr "フラッシュã®è¨­å®š" #: camlibs/ptp2/config.c:2095 #, fuzzy msgid "Setting 7" msgstr "フラッシュã®è¨­å®š" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "カード" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "ビデオ出力" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, c-format msgid "Unknown %d" msgstr "䏿˜Žãª %d" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "å·¥å ´å‡ºè·æ™‚ã®å€¤" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "" #: camlibs/ptp2/config.c:2237 #, fuzzy msgid "sRAW" msgstr "sRAW1" #: camlibs/ptp2/config.c:2246 msgid "Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2272 msgid "RAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2273 msgid "mRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2274 msgid "sRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2275 msgid "RAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2276 msgid "mRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2277 msgid "sRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "" #: camlibs/ptp2/config.c:2305 msgid "Timer 10 sec" msgstr "10 ç§’ã®ã‚¿ã‚¤ãƒžãƒ¼" #: camlibs/ptp2/config.c:2306 msgid "Timer 2 sec" msgstr "2 ç§’ã®ã‚¿ã‚¤ãƒžãƒ¼" #: camlibs/ptp2/config.c:2307 #, fuzzy msgid "Single silent" msgstr "å˜ä¸€ã‚·ãƒ§ãƒƒãƒˆ" #: camlibs/ptp2/config.c:2308 #, fuzzy msgid "Continuous silent" msgstr "測光モード" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, c-format msgid "Auto ISO" msgstr "自動 ISO" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, fuzzy, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "露出ãƒã‚¤ã‚¢ã‚¹ã®ä»£å„Ÿ" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, fuzzy, c-format msgid "%d Multi Frame Noise Reduction" msgstr "露出ãƒã‚¤ã‚¢ã‚¹ã®ä»£å„Ÿ" #: camlibs/ptp2/config.c:2453 #, fuzzy msgid "Multi Frame Noise Reduction" msgstr "露出ãƒã‚¤ã‚¢ã‚¹ã®ä»£å„Ÿ" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "タイマー" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "%0.4f ç§’" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "" #: camlibs/ptp2/config.c:2688 #, fuzzy, c-format msgid "%f" msgstr "%f ç§’" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "Creative" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "æ“作" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "夜風景" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "" #: camlibs/ptp2/config.c:2868 msgid "Automatic (No Flash)" msgstr "自動 (フラッシュãªã—)" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 #, fuzzy msgid "Sports Action" msgstr "æ“作" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "" #: camlibs/ptp2/config.c:2880 #, fuzzy msgid "Night Scene" msgstr "å…‰æº" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 #, fuzzy msgid "Picture Effect" msgstr "写真ã®åŠ¹æžœ" #: camlibs/ptp2/config.c:2888 #, fuzzy msgid "Night landscape" msgstr "夜風景" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "" #: camlibs/ptp2/config.c:2893 #, fuzzy msgid "Pet Portrait" msgstr "縦å‘ã" #: camlibs/ptp2/config.c:2894 #, fuzzy msgid "Candlelight" msgstr "晴天" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "" #: camlibs/ptp2/config.c:3032 #, fuzzy msgid "Flourescent" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 #, fuzzy msgid "Effects" msgstr "効果モード" #: camlibs/ptp2/config.c:3075 #, fuzzy msgid "U1" msgstr "1" #: camlibs/ptp2/config.c:3076 #, fuzzy msgid "U2" msgstr "2" #: camlibs/ptp2/config.c:3104 #, fuzzy msgid "Back Light" msgstr "晴天" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "" #: camlibs/ptp2/config.c:3106 #, fuzzy msgid "Smoothing" msgstr "ソフト" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "å˜ä¸€ã‚·ãƒ§ãƒƒãƒˆ" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "ãƒãƒ¼ã‚¹ãƒˆ" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 msgid "Timer" msgstr "タイマー" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 #, fuzzy msgid "Delayed Remote" msgstr "リモート" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "" #: camlibs/ptp2/config.c:3125 #, fuzzy msgid "Selftimer 2s" msgstr "ã‚»ãƒ«ãƒ•ã‚¿ã‚¤ãƒžãƒ¼ã®æ™‚é–“" #: camlibs/ptp2/config.c:3126 #, fuzzy msgid "Selftimer 10s" msgstr "ã‚»ãƒ«ãƒ•ã‚¿ã‚¤ãƒžãƒ¼ã®æ™‚é–“" #: camlibs/ptp2/config.c:3127 #, fuzzy msgid "Bracketing C 0.3 Steps" msgstr "露出補正" #: camlibs/ptp2/config.c:3128 #, fuzzy msgid "Bracketing C 0.7 Steps" msgstr "露出補正" #: camlibs/ptp2/config.c:3129 #, fuzzy msgid "Bracketing C 1.0 Steps" msgstr "露出補正" #: camlibs/ptp2/config.c:3130 #, fuzzy msgid "Bracketing C 2.0 Steps" msgstr "露出補正" #: camlibs/ptp2/config.c:3131 #, fuzzy msgid "Bracketing C 3.0 Steps" msgstr "露出補正" #: camlibs/ptp2/config.c:3132 #, fuzzy msgid "Bracketing S 0.3 Steps" msgstr "露出補正" #: camlibs/ptp2/config.c:3133 #, fuzzy msgid "Bracketing S 0.7 Steps" msgstr "露出補正" #: camlibs/ptp2/config.c:3134 #, fuzzy msgid "Bracketing S 1.0 Steps" msgstr "露出補正" #: camlibs/ptp2/config.c:3135 #, fuzzy msgid "Bracketing S 2.0 Steps" msgstr "露出補正" #: camlibs/ptp2/config.c:3136 #, fuzzy msgid "Bracketing S 3.0 Steps" msgstr "露出補正" #: camlibs/ptp2/config.c:3137 #, fuzzy msgid "Bracketing WB Lo" msgstr "露出補正" #: camlibs/ptp2/config.c:3138 #, fuzzy msgid "Bracketing WB Hi" msgstr "露出補正" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 msgid "Centre-spot" msgstr "中央焦点" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "複数焦点" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "シングルエリア" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "" #: camlibs/ptp2/config.c:3152 #, fuzzy msgid "Single-area AF" msgstr "シングルエリア" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "" #: camlibs/ptp2/config.c:3154 msgid "Group-dynamic AF" msgstr "" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "" #: camlibs/ptp2/config.c:3165 #, fuzzy msgid "3D Tracking" msgstr "露出補正" #: camlibs/ptp2/config.c:3171 msgid "sRGB (portrait)" msgstr "" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "AdobeRGB" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "䏿˜Žãªå€¤ 0x%04x ã§ã™" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 msgid "Centre" msgstr "中央" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "上" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 msgid "Bottom" msgstr "下" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "å·¦" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 msgid "Right" msgstr "å³" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 #, fuzzy msgid "Center Weighted" msgstr "中央部é‡ç‚¹" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "複数焦点" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "中央焦点" #: camlibs/ptp2/config.c:3266 msgid "Automatic Flash" msgstr "自動フラッシュ" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 #, fuzzy msgid "Fill flash" msgstr "フラッシュã‚り" #: camlibs/ptp2/config.c:3269 msgid "Red-eye automatic" msgstr "自動赤目軽減" #: camlibs/ptp2/config.c:3270 #, fuzzy msgid "Red-eye fill" msgstr "赤目軽減フラッシュ" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 msgid "External sync" msgstr "å¤–éƒ¨åŒæœŸ" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 #, fuzzy msgid "Auto Slow Sync" msgstr "スローシンクロ" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 #, fuzzy msgid "Red-eye Reduction + Slow Sync" msgstr "赤目軽減発光" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3277 #, fuzzy msgid "Red-eye reduction" msgstr "赤目軽減発光" #: camlibs/ptp2/config.c:3278 #, fuzzy msgid "Red-eye reduction with slow sync" msgstr "赤目軽減発光" #: camlibs/ptp2/config.c:3279 #, fuzzy msgid "Slow sync" msgstr "スローシンクロ" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "スローシンクロ" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "モノクロ" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "" #: camlibs/ptp2/config.c:3298 #, fuzzy msgid "Color sketch" msgstr "カラーモード" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "" #: camlibs/ptp2/config.c:3302 #, fuzzy msgid "High key" msgstr "高ã„" #: camlibs/ptp2/config.c:3303 #, fuzzy msgid "Low key" msgstr "低" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 msgid "infinite" msgstr "∞" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "%d mm" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "" #: camlibs/ptp2/config.c:3772 #, fuzzy msgid "Normal-area AF" msgstr "標準" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "" #: camlibs/ptp2/config.c:3778 #, fuzzy msgid "Single-servo AF" msgstr "シングルエリア" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 msgid "Manual Focus" msgstr "マニュアルフォーカス" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 msgid "AE/AF Lock" msgstr "AE/AF ロック" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "AE ロックã®ã¿" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "AF ロックã®ã¿" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "AF ロック維æŒ" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "AF オン" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "フラッシュレベルã®ãƒ­ãƒƒã‚¯" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "20 ç§’" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 msgid "1 minute" msgstr "1 分" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "5 分" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 msgid "10 minutes" msgstr "10 分" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "5 ç§’" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "SDRAM" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "6 mm" #: camlibs/ptp2/config.c:3828 msgid "8 mm" msgstr "8 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "10 mm" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "12 mm" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "1/60" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "1/30" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "1/15" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "1/8" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "1/4" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "1/2" #: camlibs/ptp2/config.c:3842 msgid "1" msgstr "1" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 msgid "2" msgstr "2" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 msgid "4" msgstr "4" #: camlibs/ptp2/config.c:3845 msgid "8" msgstr "8" #: camlibs/ptp2/config.c:3846 msgid "15" msgstr "15" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "30" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 #, fuzzy msgid "30s" msgstr "30" #: camlibs/ptp2/config.c:3854 #, fuzzy msgid "25s" msgstr "25%" #: camlibs/ptp2/config.c:3855 #, fuzzy msgid "20s" msgstr "2.0" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 #, fuzzy msgid "15s" msgstr "15" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "" #: camlibs/ptp2/config.c:3858 #, fuzzy msgid "10s" msgstr "1.0" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 #, fuzzy msgid "8s" msgstr "8" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 #, fuzzy msgid "4s" msgstr "4" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 #, fuzzy msgid "2s" msgstr "2" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 #, fuzzy msgid "1s" msgstr "1" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 #, fuzzy msgid "1/15s" msgstr "1/15" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 #, fuzzy msgid "1/30s" msgstr "1/30" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 #, fuzzy msgid "1/60s" msgstr "1/60" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "" #: camlibs/ptp2/config.c:3916 msgid "15 minutes" msgstr "15 分" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 msgid "Sharper" msgstr "シャープã«" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "ソフトã«" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 msgid "Direct Print" msgstr "ダイレクトå°åˆ·" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 #, fuzzy msgid "Medium Low" msgstr "中" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 #, fuzzy msgid "Medium high" msgstr "中" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 msgid "Low contrast" msgstr "低コントラスト" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 #, fuzzy msgid "Medium High" msgstr "中" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 #, fuzzy msgid "Zone Focus (Close)" msgstr "自動フォーカスモード" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "" #: camlibs/ptp2/config.c:3976 #, fuzzy msgid "Automatic Macro" msgstr "自動マクロ" #: camlibs/ptp2/config.c:3980 #, fuzzy msgid "Single-Servo AF" msgstr "å˜ä¸€ã‚·ãƒ§ãƒƒãƒˆ" #: camlibs/ptp2/config.c:3981 #, fuzzy msgid "Continuous-Servo AF" msgstr "測光モード" #: camlibs/ptp2/config.c:3989 #, fuzzy msgid "One Shot" msgstr "å˜ä¸€ã‚·ãƒ§ãƒƒãƒˆ" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 #, fuzzy msgid "AI Focus" msgstr "フォーカス" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "4 ç§’" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "8 ç§’" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 #, fuzzy msgid "Fluorescent H" msgstr "è›å…‰ç¯" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 #, fuzzy msgid "Custom Whitebalance PC-1" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 #, fuzzy msgid "Custom Whitebalance PC-2" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 #, fuzzy msgid "Custom Whitebalance PC-3" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 #, fuzzy msgid "Missing Number" msgstr "ãƒãƒ¼ã‚¹ãƒˆæ•°" #: camlibs/ptp2/config.c:4034 #, fuzzy msgid "Shadow" msgstr "シェード" #: camlibs/ptp2/config.c:4118 #, fuzzy msgid "Low sharpening" msgstr "充電中" #: camlibs/ptp2/config.c:4120 msgid "Black & white" msgstr "モノクロ" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 msgid "AE & Flash" msgstr "AE ã¨ãƒ•ラッシュ" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 msgid "AE only" msgstr "AE ã®ã¿" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 msgid "Flash only" msgstr "フラッシュã®ã¿" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 #, fuzzy msgid "WB bracketing" msgstr "露出補正" #: camlibs/ptp2/config.c:4221 #, fuzzy msgid "ADL bracketing" msgstr "露出補正" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 #, fuzzy msgid "Remote Mirror Up" msgstr "æ—¥ä»˜ã¨æ™‚é–“" #: camlibs/ptp2/config.c:4248 #, fuzzy msgid "Application Mode 0" msgstr "æ“作モード" #: camlibs/ptp2/config.c:4249 #, fuzzy msgid "Application Mode 1" msgstr "æ“作モード" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "" #: camlibs/ptp2/config.c:4283 #, fuzzy msgid "Auto sensitivity" msgstr "感度" #: camlibs/ptp2/config.c:4284 #, fuzzy msgid "High sensitivity" msgstr "感度" #: camlibs/ptp2/config.c:4285 #, fuzzy msgid "Medium sensitivity" msgstr "感度" #: camlibs/ptp2/config.c:4286 #, fuzzy msgid "Low sensitivity" msgstr "感度" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "" #: camlibs/ptp2/config.c:4378 #, fuzzy msgid "Flash/speed" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "" #: camlibs/ptp2/config.c:4380 #, fuzzy msgid "Flash/aperture" msgstr "絞り" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "JPEG 基本" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 msgid "NEF+Fine" msgstr "NEF + ファイン" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "NEF (Raw)" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "NEF + 基本" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 msgid "NEF+Normal" msgstr "NEF + 標準" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "TIFF (RGB)" #: camlibs/ptp2/config.c:4575 #, fuzzy msgid "RAW+JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "6 ç§’" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "16 ç§’" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "30 ç§’" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "30 分" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "" #: camlibs/ptp2/config.c:4642 #, fuzzy msgid "Optimal quality" msgstr "ç”»åƒã®å“質" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 #, fuzzy msgid "1/250s (Auto FP)" msgstr "自動" #: camlibs/ptp2/config.c:4659 #, fuzzy msgid "1/320s (Auto FP)" msgstr "自動" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "" #: camlibs/ptp2/config.c:4695 #, fuzzy msgid "3 (Normal)" msgstr "標準" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 #, fuzzy msgid "AE/AF lock" msgstr "AE/AF ロック" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 #, fuzzy msgid "AE lock only" msgstr "AE ロックã®ã¿" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "" #: camlibs/ptp2/config.c:4719 #, fuzzy msgid "AE lock (Hold)" msgstr "AF ロック維æŒ" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 #, fuzzy msgid "AF lock only" msgstr "AF ロックã®ã¿" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "" #: camlibs/ptp2/config.c:4780 #, fuzzy msgid "Preview" msgstr "サムãƒã‚¤ãƒ«ã®ãƒ—レビュー" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "" #: camlibs/ptp2/config.c:4785 #, fuzzy msgid "AE lock (hold)" msgstr "AE ロックã®ã¿" #: camlibs/ptp2/config.c:4788 #, fuzzy msgid "Bracketing burst" msgstr "露出補正" #: camlibs/ptp2/config.c:4789 #, fuzzy msgid "Matrix metering" msgstr "引数 1" #: camlibs/ptp2/config.c:4790 #, fuzzy msgid "Center-weighted metering" msgstr "中央部é‡ç‚¹" #: camlibs/ptp2/config.c:4791 #, fuzzy msgid "Spot metering" msgstr "焦点測光モード" #: camlibs/ptp2/config.c:4792 #, fuzzy msgid "Playback" msgstr "å†ç”Ÿ" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 #, fuzzy msgid "+NEF (RAW)" msgstr "NEF (Raw)" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "" #: camlibs/ptp2/config.c:4799 #, fuzzy msgid "Viewfinder virtual horizont" msgstr "ビューファインダーモード" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "50%" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "100%" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "75%" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "25%" #: camlibs/ptp2/config.c:4871 msgid "Unknown value" msgstr "䏿˜Žãªå€¤ã§ã™" #: camlibs/ptp2/config.c:4999 #, fuzzy msgid "Nikon changeafarea works only in LiveView mode." msgstr "" "ã™ã¿ã¾ã›ã‚“ã€ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯æ±Žç”¨ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。" #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "" #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "" #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "" #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 #, fuzzy msgid "Press Full" msgstr "PTP ã®ç©ºã容é‡ãŒã‚りã¾ã›ã‚“" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 #, fuzzy msgid "Press 1" msgstr "プリセット" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 #, fuzzy msgid "Press 2" msgstr "プリセット" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 #, fuzzy msgid "Press 3" msgstr "プリセット" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" #: camlibs/ptp2/config.c:5923 msgid "Internal RAM" msgstr "内部 RAM" #: camlibs/ptp2/config.c:5924 msgid "Memory card" msgstr "メモリー カード" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "ESSID" #: camlibs/ptp2/config.c:6092 #, fuzzy msgid "Display" msgstr "日付ã®è¡¨ç¤º" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "削除" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "WEP 64 ビット" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "WEP 128 ビット" #: camlibs/ptp2/config.c:6215 #, fuzzy msgid "Managed" msgstr "言語" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "アドホック" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "プロファイルå" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "WIFI ESSID" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "IP アドレス (DHCP ã®å ´åˆã¯ç©º)" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ マスク" #: camlibs/ptp2/config.c:6359 msgid "Default gateway" msgstr "デフォルト ゲートウェイ" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "アクセスモード" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "WIFI ãƒãƒ£ãƒ³ãƒãƒ«" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "æš—å·åŒ–" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "æš—å·éµ (16 進数)" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "書ãè¾¼ã¿" #: camlibs/ptp2/config.c:6412 msgid "List Wifi profiles" msgstr "WIFI プロファイルã®ä¸€è¦§" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "WIFI プロファイルã®ä½œæˆ" #: camlibs/ptp2/config.c:6521 #, fuzzy msgid "Power Down" msgstr "パワー・セーブ" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 msgid "Focus Lock" msgstr "フォーカス ロック" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 #, fuzzy msgid "Bulb Mode" msgstr "ビープモード" #: camlibs/ptp2/config.c:6526 #, fuzzy msgid "UI Lock" msgstr "AF ロック維æŒ" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6530 #, fuzzy msgid "Set Nikon Autofocus area" msgstr "フォーカス・モード" #: camlibs/ptp2/config.c:6531 #, fuzzy msgid "Set Nikon Control Mode" msgstr "キャプãƒãƒ£ãƒ»ãƒ¢ãƒ¼ãƒ‰" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "" #: camlibs/ptp2/config.c:6535 #, fuzzy msgid "Canon EOS Zoom Position" msgstr "フォーカスä½ç½®" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6537 #, fuzzy msgid "Nikon Viewfinder" msgstr "ビューファインダーモード" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 #, fuzzy msgid "Movie Capture" msgstr "キャプãƒãƒ£" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 msgid "Serial Number" msgstr "シリアル番å·" #: camlibs/ptp2/config.c:6548 #, fuzzy msgid "Camera Manufacturer" msgstr "%s製造: %s\n" #: camlibs/ptp2/config.c:6550 #, fuzzy msgid "Device Version" msgstr "デãƒã‚¤ã‚¹ã‚¢ã‚¤ã‚³ãƒ³" #: camlibs/ptp2/config.c:6551 #, fuzzy msgid "Vendor Extension" msgstr "ベンダー拡張ã®è©³ç´°: %s\n" #: camlibs/ptp2/config.c:6556 #, fuzzy msgid "PTP Version" msgstr "DPOF ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 msgid "DPOF Version" msgstr "DPOF ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "AC é›»æº" #: camlibs/ptp2/config.c:6559 msgid "External Flash" msgstr "外部フラッシュ" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ã®ãƒ¬ãƒ™ãƒ«" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 #, fuzzy msgid "Camera Orientation" msgstr "カメラã®è¨­å®š" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 #, fuzzy msgid "Flash Open" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 #, fuzzy msgid "Flash Charged" msgstr "コンパクトフラッシュ・カード" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 msgid "Lens Name" msgstr "レンズã®åå‰" #: camlibs/ptp2/config.c:6570 msgid "Shutter Counter" msgstr "シャッター回数" #: camlibs/ptp2/config.c:6571 #, fuzzy msgid "Available Shots" msgstr "有効ãªãƒ¡ãƒ¢ãƒªãƒ¼: " #: camlibs/ptp2/config.c:6572 #, fuzzy msgid "Focal Length Minimum" msgstr "フォーカスã®é•·ã•" #: camlibs/ptp2/config.c:6573 #, fuzzy msgid "Focal Length Maximum" msgstr "フォーカスã®é•·ã•" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6576 #, fuzzy msgid "Low Light" msgstr "å…‰æº" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 #, fuzzy msgid "Light Meter" msgstr "å…‰æº" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 #, fuzzy msgid "AF Locked" msgstr "AF ロック維æŒ" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 #, fuzzy msgid "AE Locked" msgstr "AE/AF ロック" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 #, fuzzy msgid "FV Locked" msgstr "AF ロック維æŒ" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 #, fuzzy msgid "Camera Date and Time" msgstr "æ—¥ä»˜ã¨æ™‚é–“" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "ビープモード" #: camlibs/ptp2/config.c:6591 msgid "Image Comment" msgstr "ç”»åƒã®ã‚³ãƒ¡ãƒ³ãƒˆ" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 #, fuzzy msgid "Enable Image Comment" msgstr "ç”»åƒã®ã‚³ãƒ¡ãƒ³ãƒˆ" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 msgid "LCD Off Time" msgstr "LCD OFF 時間" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 #, fuzzy msgid "Recording Media" msgstr "記録モード" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "CSM メニュー" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 #, fuzzy msgid "Camera Output" msgstr "カメラ㯠OK ã§ã™ã€‚\n" #: camlibs/ptp2/config.c:6601 #, fuzzy msgid "Recording Destination" msgstr "記録モード" #: camlibs/ptp2/config.c:6602 #, fuzzy msgid "EVF Mode" msgstr "AF モード" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "作者" #: camlibs/ptp2/config.c:6607 #, fuzzy msgid "CCD Number" msgstr "%sシリアル番å·: %s\n" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "コピーライト" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 #, fuzzy msgid "Flicker Reduction" msgstr "赤目軽減発光" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "" #: camlibs/ptp2/config.c:6613 #, fuzzy msgid "Focus Info" msgstr "フォーカス・モード" #: camlibs/ptp2/config.c:6614 #, fuzzy msgid "Focus Area" msgstr "フォーカス・モード" #: camlibs/ptp2/config.c:6615 #, fuzzy msgid "Auto Power Off" msgstr "自動パワーオフ (分後)" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "メニューã¨å†ç”Ÿ" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 msgid "Capture Target" msgstr "å–り込ã¿å¯¾è±¡" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 #, fuzzy msgid "Image Format SD" msgstr "ç”»åƒå½¢å¼" #: camlibs/ptp2/config.c:6634 #, fuzzy msgid "Image Format CF" msgstr "ç”»åƒå½¢å¼" #: camlibs/ptp2/config.c:6636 #, fuzzy msgid "Image Format Ext HD" msgstr "ç”»åƒå½¢å¼" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "ISO スピード" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 #, fuzzy msgid "ISO Auto" msgstr "自動" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 msgid "WhiteBalance" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6654 #, fuzzy msgid "WhiteBalance Adjust A" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6655 #, fuzzy msgid "WhiteBalance Adjust B" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6656 #, fuzzy msgid "WhiteBalance X A" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6657 #, fuzzy msgid "WhiteBalance X B" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "写真ã®åŠ¹æžœ" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 msgid "Color Model" msgstr "カラー形å¼" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 msgid "Color Space" msgstr "色空間" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6669 msgid "Auto Focus Mode 2" msgstr "自動フォーカスモード 2" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "補助光" #: camlibs/ptp2/config.c:6672 #, fuzzy msgid "Rotation Flag" msgstr "カメラã®è¨­å®š" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 #, fuzzy msgid "Flash Compensation" msgstr "露出度" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 #, fuzzy msgid "AEB Exposure Compensation" msgstr "露出度" #: camlibs/ptp2/config.c:6685 #, fuzzy msgid "Nikon Flash Mode" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 #, fuzzy msgid "Flash Commander Mode" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6687 #, fuzzy msgid "Flash Commander Power" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 #, fuzzy msgid "Flash Command Channel" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 #, fuzzy msgid "Flash Command Self Mode" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 #, fuzzy msgid "Flash Command Self Compensation" msgstr "露出度" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 #, fuzzy msgid "Flash Command Self Value" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 #, fuzzy msgid "Flash Command A Mode" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 #, fuzzy msgid "Flash Command A Compensation" msgstr "露出度" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 #, fuzzy msgid "Flash Command A Value" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 #, fuzzy msgid "Flash Command B Mode" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 #, fuzzy msgid "Flash Command B Compensation" msgstr "露出度" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 #, fuzzy msgid "Flash Command B Value" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "AF ビープモード" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "F-番å·" #: camlibs/ptp2/config.c:6702 #, fuzzy msgid "Movie F-Number" msgstr "F-番å·" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 #, fuzzy msgid "Flexible Program" msgstr "露出プログラム・モード" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "フォーカスã®è·é›¢" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "フォーカスã®é•·ã•" #: camlibs/ptp2/config.c:6710 #, fuzzy msgid "Focus Mode 2" msgstr "フォーカス・モード" #: camlibs/ptp2/config.c:6712 #, fuzzy msgid "Continuous AF" msgstr "測光モード" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "効果モード" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 #, fuzzy msgid "Exposure Program" msgstr "露出プログラム・モード" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 #, fuzzy msgid "Scene Mode" msgstr "ビープモード" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 #, fuzzy msgid "HDR Mode" msgstr "液晶モード" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 #, fuzzy msgid "HDR Smoothing" msgstr "ソフト" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "キャプãƒãƒ£ãƒ»ãƒ¢ãƒ¼ãƒ‰" #: camlibs/ptp2/config.c:6725 #, fuzzy msgid "Canon Shooting Mode" msgstr "測光モード" #: camlibs/ptp2/config.c:6726 #, fuzzy msgid "Canon Auto Exposure Mode" msgstr "自動露出ロック" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 #, fuzzy msgid "Drive Mode" msgstr "液晶モード" #: camlibs/ptp2/config.c:6728 #, fuzzy msgid "Picture Style" msgstr "写真ã®è¨­å®š" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "フォーカス測光モード" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "露出補正モード" #: camlibs/ptp2/config.c:6733 #, fuzzy msgid "AV Open" msgstr "AF オン" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "フォーカスã®ç„¦ç‚¹" #: camlibs/ptp2/config.c:6738 #, fuzzy msgid "Capture Delay" msgstr "キャプãƒãƒ£ã®é…れ" #: camlibs/ptp2/config.c:6742 #, fuzzy msgid "Shutter Speed 2" msgstr "シャッター速度" #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "シャッター速度" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "測光モード" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 #, fuzzy msgid "AF Distance" msgstr "フォーカスã®è·é›¢" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 #, fuzzy msgid "Focus Area Wrap" msgstr "フォーカス・モード" #: camlibs/ptp2/config.c:6751 #, fuzzy msgid "Exposure Delay Mode" msgstr "露出プログラム・モード" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 #, fuzzy msgid "Exposure Lock" msgstr "露出" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 #, fuzzy msgid "Live View AF Mode" msgstr "液晶モード" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 #, fuzzy msgid "Live View AF Focus" msgstr "液晶モード" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 #, fuzzy msgid "Flash Sign" msgstr "フラッシュã®è¨­å®š" #: camlibs/ptp2/config.c:6759 #, fuzzy msgid "Modelling Flash" msgstr "強制発光\n" #: camlibs/ptp2/config.c:6760 #, fuzzy msgid "Viewfinder Grid" msgstr "ビューファインダーモード" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 #, fuzzy msgid "Image Review" msgstr "ç”»åƒã‚µã‚¤ã‚º" #: camlibs/ptp2/config.c:6762 #, fuzzy msgid "Image Rotation Flag" msgstr "カメラã®è¨­å®š" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 #, fuzzy msgid "Flash Mode Manual Power" msgstr "フラッシュ モード" #: camlibs/ptp2/config.c:6765 #, fuzzy msgid "Auto Focus Area" msgstr "フォーカス・モード" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 #, fuzzy msgid "Flash Exposure Compensation" msgstr "露出度" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 #, fuzzy msgid "Bracketing" msgstr "露出補正" #: camlibs/ptp2/config.c:6769 #, fuzzy msgid "Bracket Mode" msgstr "自動, Red-Eye 減少" #: camlibs/ptp2/config.c:6770 #, fuzzy msgid "EV Step" msgstr "ISO ステップ" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 #, fuzzy msgid "Bracket Set" msgstr "自動, Red-Eye 減少" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "ãƒãƒ¼ã‚¹ãƒˆæ•°" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "ãƒãƒ¼ã‚¹ãƒˆã®é–“éš”" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 #, fuzzy msgid "Auto White Balance Bias" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 #, fuzzy msgid "Tungsten White Balance Bias" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 #, fuzzy msgid "Fluorescent White Balance Bias" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 #, fuzzy msgid "Daylight White Balance Bias" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 #, fuzzy msgid "Flash White Balance Bias" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 #, fuzzy msgid "Cloudy White Balance Bias" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 #, fuzzy msgid "Shady White Balance Bias" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6794 #, fuzzy msgid "White Balance Bias Preset Nr" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6795 #, fuzzy msgid "White Balance Bias Preset 0" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6796 #, fuzzy msgid "White Balance Bias Preset 1" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6797 #, fuzzy msgid "White Balance Bias Preset 2" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6798 #, fuzzy msgid "White Balance Bias Preset 3" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6799 #, fuzzy msgid "White Balance Bias Preset 4" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/config.c:6800 #, fuzzy msgid "Selftimer Delay" msgstr "ã‚»ãƒ«ãƒ•ã‚¿ã‚¤ãƒžãƒ¼ã®æ™‚é–“" #: camlibs/ptp2/config.c:6801 #, fuzzy msgid "Center Weight Area" msgstr "中央部é‡ç‚¹" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 #, fuzzy msgid "Flash Shutter Speed" msgstr "シャッター速度" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 #, fuzzy msgid "Remote Timeout" msgstr "æ—¥ä»˜ã¨æ™‚é–“" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 #, fuzzy msgid "Remote Mode" msgstr "記録モード" #: camlibs/ptp2/config.c:6805 #, fuzzy msgid "Application Mode" msgstr "æ“作モード" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 #, fuzzy msgid "Sharpening" msgstr "充電中" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 #, fuzzy msgid "Tone Compensation" msgstr "露出度" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 #, fuzzy msgid "Saturation" msgstr "設定" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 #, fuzzy msgid "Hue Adjustment" msgstr "ç”»åƒã®èª¿æ•´" #: camlibs/ptp2/config.c:6811 #, fuzzy msgid "Auto Exposure Bracketing" msgstr "露出補正" #: camlibs/ptp2/config.c:6812 #, fuzzy msgid "Movie Sound" msgstr "サウンド" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 #, fuzzy msgid "Manual Movie Setting" msgstr "å–り込ã¿ã®è¨­å®š" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 #, fuzzy msgid "Video Mode" msgstr "液晶モード" #: camlibs/ptp2/config.c:6835 #, fuzzy msgid "Meter Off Time" msgstr "自動 OFF 時間" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 #, fuzzy msgid "Assign Func Button" msgstr "ãƒœã‚¿ãƒ³ã®æ©Ÿèƒ½å‰²ã‚Šå½“ã¦" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 #, fuzzy msgid "Assign Preview Button" msgstr "サムãƒã‚¤ãƒ«ã®ãƒ—レビュー" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 #, fuzzy msgid "Movie Quality" msgstr "ç”»åƒã®å“質" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 #, fuzzy msgid "Minimum Shutter Speed" msgstr "シャッター速度" #: camlibs/ptp2/config.c:6862 #, fuzzy msgid "Movie Resolution" msgstr "ファイルã®è§£åƒåº¦" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 #, fuzzy msgid "Continuous Shooting Speed Slow" msgstr "測光モード" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 #, fuzzy msgid "ISO Auto Hi Limit" msgstr "自動 OFF 時間" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "ãƒ•ãƒ©ãƒƒã‚·ãƒ¥åŒæœŸé€Ÿåº¦" #: camlibs/ptp2/config.c:6869 #, fuzzy msgid "Focus Metering" msgstr "フォーカス測光モード" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 #, fuzzy msgid "High ISO Noise Reduction" msgstr "露出ãƒã‚¤ã‚¢ã‚¹ã®ä»£å„Ÿ" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 #, fuzzy msgid "Continuous Shooting Speed High" msgstr "測光モード" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 msgid "JPEG Compression Policy" msgstr "JPEG 圧縮ã®ãƒãƒªã‚·ãƒ¼" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6894 #, fuzzy msgid "AF Activation" msgstr "æ“作" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 #, fuzzy msgid "AF Lock On" msgstr "AF ロックã®ã¿" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "" #: camlibs/ptp2/config.c:6898 #, fuzzy msgid "AF On Button" msgstr "AE ロックã®ã¿" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "露出ãƒã‚¤ã‚¢ã‚¹ã®ä»£å„Ÿ" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 msgid "Raw Compression" msgstr "RAW 圧縮" #: camlibs/ptp2/config.c:6922 #, fuzzy msgid "Image Quality 2" msgstr "ç”»åƒã®å“質" #: camlibs/ptp2/config.c:6944 #, fuzzy msgid "Image Settings" msgstr "カメラã®è¨­å®š" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "å–り込ã¿ã®è¨­å®š" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "WIFI プロファイル" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 #, fuzzy msgid "Other PTP Device Properties" msgstr "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ PTP デãƒã‚¤ã‚¹ Prop" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "PTP プロパティ 0x%04x" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "" #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "" #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "" #: camlibs/ptp2/library.c:2537 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "" "ã™ã¿ã¾ã›ã‚“ã€ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯æ±Žç”¨ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。" #: camlibs/ptp2/library.c:2545 #, fuzzy msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "" "ã™ã¿ã¾ã›ã‚“ã€ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯æ±Žç”¨ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 #, fuzzy msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "" "ã™ã¿ã¾ã›ã‚“ã€ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯æ±Žç”¨ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。" #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "" #: camlibs/ptp2/library.c:2799 #, fuzzy msgid "Sorry, your camera does not support Nikon capture" msgstr "" "ã™ã¿ã¾ã›ã‚“ã€ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯æ±Žç”¨ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 #, fuzzy msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "" "ã™ã¿ã¾ã›ã‚“ã€ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯æ±Žç”¨ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 msgid "Canon EOS Half-Press failed" msgstr "" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 msgid "Canon EOS Half-Release failed" msgstr "" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 msgid "Canon EOS Full-Press failed" msgstr "" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 msgid "Canon EOS Full-Release failed" msgstr "" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" #: camlibs/ptp2/library.c:3332 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "" "ã™ã¿ã¾ã›ã‚“ã€ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯æ±Žç”¨ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 #, fuzzy msgid "Canon Capture failed" msgstr "Canon ç”»åƒã®å¤§ãã•" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "" "ã™ã¿ã¾ã›ã‚“ã€ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯æ±Žç”¨ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "読ã¿è¾¼ã¿ã®ã¿" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "èª­ã¿æ›¸ã" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, fuzzy, c-format msgid "Manufacturer: %s\n" msgstr "%s製造: %s\n" #: camlibs/ptp2/library.c:4800 #, fuzzy, c-format msgid "Model: %s\n" msgstr "åž‹å¼: " #: camlibs/ptp2/library.c:4802 #, fuzzy, c-format msgid " Version: %s\n" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %s\n" #: camlibs/ptp2/library.c:4805 #, fuzzy, c-format msgid " Serial Number: %s\n" msgstr "%sシリアル番å·: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "ベンダー拡張ã®è©³ç´°: %s\n" #: camlibs/ptp2/library.c:4821 #, fuzzy, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "ファームウェアã®ãƒªãƒ“ジョン: %d.%02d\n" #: camlibs/ptp2/library.c:4828 #, fuzzy, c-format msgid "Functional Mode: 0x%04x\n" msgstr "æ“作モード" #: camlibs/ptp2/library.c:4833 #, fuzzy, c-format msgid "" "\n" "Capture Formats: " msgstr "データ形å¼" #: camlibs/ptp2/library.c:4847 #, fuzzy, c-format msgid "Display Formats: " msgstr "データ形å¼" #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr "" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" "\n" "デãƒã‚¤ã‚¹ã®èƒ½åŠ›:\n" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "\tファイルã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã€" #: camlibs/ptp2/library.c:4902 #, c-format msgid "File Deletion, " msgstr "ファイルã®å‰Šé™¤ã€" #: camlibs/ptp2/library.c:4904 #, c-format msgid "No File Deletion, " msgstr "ファイルã®å‰Šé™¤ãªã—ã€" #: camlibs/ptp2/library.c:4908 #, c-format msgid "File Upload\n" msgstr "ファイルã®ã‚¢ãƒƒãƒ—ロード\n" #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "ファイルã®ã‚¢ãƒƒãƒ—ロードãªã—\n" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4920 #, fuzzy, c-format msgid "Open Capture, " msgstr "キャプãƒãƒ£" #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4929 #, fuzzy, c-format msgid "Canon Capture" msgstr "キャプãƒãƒ£" #: camlibs/ptp2/library.c:4933 #, fuzzy, c-format msgid "Canon EOS Capture" msgstr "絞り" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "" #: camlibs/ptp2/library.c:4947 #, fuzzy, c-format msgid "Nikon Capture 1" msgstr "キャプãƒãƒ£" #: camlibs/ptp2/library.c:4951 #, fuzzy, c-format msgid "%sNikon Capture 2" msgstr "キャプãƒãƒ£" #: camlibs/ptp2/library.c:4955 #, fuzzy, c-format msgid "%sNikon Capture 3 " msgstr "キャプãƒãƒ£" #: camlibs/ptp2/library.c:4965 #, fuzzy, c-format msgid "Sony Capture" msgstr "キャプãƒãƒ£" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "\tNikon Wifi サãƒãƒ¼ãƒˆ\n" #: camlibs/ptp2/library.c:4991 #, c-format msgid "\tCanon Wifi support\n" msgstr "\tCanon Wifi サãƒãƒ¼ãƒˆ\n" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" "\n" "ストレージ デãƒã‚¤ã‚¹ã®è¦ç´„:\n" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "\tストレージã®èª¬æ˜Ž: %s\n" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "\tボリューム ラベル: %s\n" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "組ã¿è¾¼ã¿ ROM" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "リムーãƒãƒ–ル ROM" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "組ã¿è¾¼ã¿ RAM" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "リムーãƒãƒ–ル RAM (メモリー カード)" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, c-format msgid "Unknown: 0x%04x\n" msgstr "䏿˜Ž (%04x)\n" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "\tストレージã®ç¨®é¡ž: %s\n" #: camlibs/ptp2/library.c:5043 #, fuzzy msgid "Generic Flat" msgstr "全般" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "" #: camlibs/ptp2/library.c:5055 #, fuzzy msgid "Read-Write" msgstr "èª­ã¿æ›¸ã" #: camlibs/ptp2/library.c:5056 #, fuzzy msgid "Read-Only" msgstr "準備 OK" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "\tアクセス能力: %s\n" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "\t最大能力: %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "\t空ãå®¹é‡ (ãƒã‚¤ãƒˆ): %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5075 #, c-format msgid "\tFree Space (Images): %d\n" msgstr "\t空ãå®¹é‡ (ç”»åƒæ•°): %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" "\n" "デãƒã‚¤ã‚¹ãƒ—ロパティã®è¦ç´„:\n" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr "" #: camlibs/ptp2/library.c:5116 #, fuzzy, c-format msgid "cannot be queried.\n" msgstr "ã‚«ãƒ¼ãƒ‰ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“。" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr "" #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "ファイル '%s/%s' ã¯å­˜åœ¨ã—ã¾ã›ã‚“。" #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "" #: camlibs/ptp2/library.c:6414 #, fuzzy msgid "Device does not support setting object protection." msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã§ã¯è¨­å®šã—ãŸã„ãã¤ã‹ã®ã‚ªãƒ—ションをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: camlibs/ptp2/library.c:6418 #, fuzzy, c-format msgid "Device failed to set object protection to %d" msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã§ã¯è¨­å®šã—ãŸã„ãã¤ã‹ã®ã‚ªãƒ—ションをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "カメラã®åˆæœŸåŒ–中..." #: camlibs/ptp2/library.c:7254 #, fuzzy, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "PTP 㯠USB カメラã®ã¿ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚" #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "PTP ã®ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP OK!" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "PTP ã®ä¸€èˆ¬çš„ãªã‚¨ãƒ©ãƒ¼" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒé–‹ã‹ã‚Œã¦ã„ã¾ã›ã‚“" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP ã®ä¸æ­£ãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ ID" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ PTP æ“作" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ PTP パラメータ" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP ã®è»¢é€ãŒå®Œäº†ã—ã¦ã„ã¾ã›ã‚“" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP ã®ä¸æ­£ãªã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ ID" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "PTP 䏿­£ãªã‚ªãƒ–ジェクトæ“作" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ PTP デãƒã‚¤ã‚¹ Prop" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP ã®ä¸æ­£ãªã‚ªãƒ–ジェクト書å¼ã‚³ãƒ¼ãƒ‰" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP ã®ç©ºã容é‡ãŒã‚りã¾ã›ã‚“" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP オブジェクトã¸ã®æ›¸ãè¾¼ã¿ä¿è­·ãŒæœ‰åйã§ã™" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "PTP ã¯èª­ã¿è¾¼ã¿å°‚用ã§ã™" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãŒæ‹’å¦ã•れã¾ã—ãŸ" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP ã«ã¯ã‚µãƒ ãƒã‚¤ãƒ«ãŒã‚りã¾ã›ã‚“" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP ã®è‡ªå·±è¨ºæ–­ã«å¤±æ•—ã—ã¾ã—ãŸ" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP ã®éƒ¨åˆ†çš„ãªå‰Šé™¤" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "PTP ã«æ ¼ç´ã§ãã¾ã›ã‚“" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ PTP 書å¼ã®æŒ‡å®š" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "PTP ã®ä¸æ­£ãªã‚ªãƒ–ジェクト情報" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP ã®ä¸æ­£ãªã‚³ãƒ¼ãƒ‰æ›¸å¼" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "PTP ã®ä¸æ˜Žãªãƒ™ãƒ³ãƒ€ãƒ¼ã‚³ãƒ¼ãƒ‰ã§ã™" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP ã®ã‚­ãƒ£ãƒ—ãƒãƒ£ã¯ä¸­æ–­ã—ã¾ã—ãŸ" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "PTP ã®ãƒ‡ãƒã‚¤ã‚¹ ビジー" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "PTP 䏿­£ãªã‚ªãƒ–ジェクト" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "PTP ã®ä¸æ­£ãªãƒ‡ãƒã‚¤ã‚¹ Prop 書å¼" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "PTP ã®ä¸æ­£ãªãƒ‡ãƒã‚¤ã‚¹ Prop 値" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "PTP ã®ä¸æ­£ãªãƒ‘ラメータ" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¯ã‚ªãƒ¼ãƒ—ンã—ã¦ã„ã¾ã™" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP トランザクションãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•れã¾ã—ãŸ" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ PTP 転é€å…ˆã®æŒ‡å®š" #: camlibs/ptp2/ptp.c:4047 #, fuzzy msgid "Filename Required" msgstr "PTP EK ファイルåãŒå¿…è¦ã§ã™" #: camlibs/ptp2/ptp.c:4048 #, fuzzy msgid "Filename Conflicts" msgstr "PTP EK ファイルåãŒé‡è¤‡ã—ã¦ã„ã¾ã™" #: camlibs/ptp2/ptp.c:4049 #, fuzzy msgid "Filename Invalid" msgstr "PTP EK 䏿­£ãªãƒ•ァイルåã§ã™" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "" #: camlibs/ptp2/ptp.c:4052 #, fuzzy msgid "Out of Focus" msgstr "自動フォーカスモード" #: camlibs/ptp2/ptp.c:4053 #, fuzzy msgid "Change Camera Mode Failed" msgstr "カメラã®åž‹å¼" #: camlibs/ptp2/ptp.c:4054 #, fuzzy msgid "Invalid Status" msgstr "䏿­£" #: camlibs/ptp2/ptp.c:4055 #, fuzzy msgid "Set Property Not Supported" msgstr "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ PTP デãƒã‚¤ã‚¹ Prop" #: camlibs/ptp2/ptp.c:4056 #, fuzzy msgid "Whitebalance Reset Error" msgstr "色温度" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "" #: camlibs/ptp2/ptp.c:4058 #, fuzzy msgid "Shutter Speed Bulb" msgstr "シャッター速度" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "" #: camlibs/ptp2/ptp.c:4066 #, fuzzy msgid "Unknown Command" msgstr "䏿˜Žãª %d" #: camlibs/ptp2/ptp.c:4067 #, fuzzy msgid "Operation Refused" msgstr "æ“作をå–り消ã—ã¾ã—ãŸ" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "" #: camlibs/ptp2/ptp.c:4069 #, fuzzy msgid "Battery Low" msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ãƒ¢ãƒ¼ãƒ‰" #: camlibs/ptp2/ptp.c:4070 #, fuzzy msgid "Camera Not Ready" msgstr "カメラモード" #: camlibs/ptp2/ptp.c:4072 msgid "PTP Timeout" msgstr "PTP タイムアウト" #: camlibs/ptp2/ptp.c:4073 #, fuzzy msgid "PTP Cancel Request" msgstr "PTP å–り消ã—ã®è¦æ±‚" #: camlibs/ptp2/ptp.c:4075 #, fuzzy msgid "PTP Response Expected" msgstr "PTP プロトコル・エラー (期待値: 応答)" #: camlibs/ptp2/ptp.c:4076 #, fuzzy msgid "PTP Data Expected" msgstr "PTP プロトコル・エラー (期待値: データ)" #: camlibs/ptp2/ptp.c:4077 #, fuzzy msgid "PTP I/O Error" msgstr "PTP I/O エラーã§ã™" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "未定義㮠PTP プロパティ" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "æ“作モード" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "圧縮ã®è¨­å®š" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "RGB ゲイン" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "露出時間" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "露出プログラム・モード" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "露出ã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ (フィルム速度 ISO)" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "露出ãƒã‚¤ã‚¢ã‚¹ã®ä»£å„Ÿ" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "キャプãƒãƒ£ã®é…れ" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "コントラスト" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "デジタル・ズーム" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "低速度撮影数" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "低速度撮影ã®é–“éš”" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "アップロードã™ã‚‹ URL" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "コピーライト" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„るサムãƒã‚¤ãƒ«ã®å¤§ãã•" #: camlibs/ptp2/ptp.c:4136 msgid "Enabled Streams" msgstr "" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "データ形å¼" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "ファイルã®è§£åƒåº¦" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "ビデオ出力" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "コントラスト" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "明るã•" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "データ形å¼" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "æ—¥æ™‚ã®æ›¸å¼" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "ビデオ出力" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "パワー・セーブ" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "使用ã™ã‚‹è¨€èªž" #: camlibs/ptp2/ptp.c:4169 msgid "Battery Type" msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ã®ç¨®é¡ž" #: camlibs/ptp2/ptp.c:4170 msgid "Battery Mode" msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ãƒ¢ãƒ¼ãƒ‰" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "" #: camlibs/ptp2/ptp.c:4172 msgid "Camera Mode" msgstr "カメラモード" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "" #: camlibs/ptp2/ptp.c:4176 msgid "Self Time" msgstr "セルフタイマー" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 msgid "Shooting Mode" msgstr "" #: camlibs/ptp2/ptp.c:4180 msgid "Image Mode" msgstr "ç”»åƒãƒ¢ãƒ¼ãƒ‰" #: camlibs/ptp2/ptp.c:4187 msgid "Slow Shutter Setting" msgstr "" #: camlibs/ptp2/ptp.c:4188 msgid "AF Mode" msgstr "AF モード" #: camlibs/ptp2/ptp.c:4189 #, fuzzy msgid "Image Stabilization" msgstr "カメラã®è¨­å®š" #: camlibs/ptp2/ptp.c:4191 msgid "Color Gain" msgstr "色ゲイン" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "感度" #: camlibs/ptp2/ptp.c:4194 msgid "Parameter Set" msgstr "" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "テレã®ãƒ•ォーカス長" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "ワイドã®ãƒ•ォーカス長" #: camlibs/ptp2/ptp.c:4206 #, fuzzy msgid "Focal Length Denominator" msgstr "フォーカスã®é•·ã•" #: camlibs/ptp2/ptp.c:4207 #, fuzzy msgid "Capture Transfer Mode" msgstr "キャプãƒãƒ£ãƒ»ãƒ¢ãƒ¼ãƒ‰" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "åå‰ã®æŽ¥é ­è¾ž" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "サイズã¨å“質モード" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„るサムãƒã‚¤ãƒ«ã®å¤§ãã•" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "リモート API ãƒãƒ¼ã‚¸ãƒ§ãƒ³" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "ã‚«ãƒ¡ãƒ©ã®æ‰€æœ‰è€…" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "UNIX 時刻" #: camlibs/ptp2/ptp.c:4219 msgid "Camera Body ID" msgstr "カメラ本体㮠ID" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "" #: camlibs/ptp2/ptp.c:4223 #, fuzzy msgid "Digital Zoom Magnification" msgstr "デジタル・ズーム" #: camlibs/ptp2/ptp.c:4224 #, fuzzy msgid "Ml Spot Position" msgstr "フォーカスä½ç½®" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "イベントã®ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ãƒˆ モード" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "" #: camlibs/ptp2/ptp.c:4239 msgid "Model ID" msgstr "åž‹å¼ ID" #: camlibs/ptp2/ptp.c:4248 #, fuzzy msgid "Shooting Bank" msgstr "シャッター速度" #: camlibs/ptp2/ptp.c:4250 #, fuzzy msgid "Shooting Bank Name A" msgstr "シャッター速度" #: camlibs/ptp2/ptp.c:4252 #, fuzzy msgid "Shooting Bank Name B" msgstr "シャッター速度" #: camlibs/ptp2/ptp.c:4254 #, fuzzy msgid "Shooting Bank Name C" msgstr "シャッター速度" #: camlibs/ptp2/ptp.c:4256 #, fuzzy msgid "Shooting Bank Name D" msgstr "シャッター速度" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "ãƒãƒ³ã‚¯ 0 ã®ãƒªã‚»ãƒƒãƒˆ" #: camlibs/ptp2/ptp.c:4276 #, fuzzy msgid "White Balance Colour Temperature" msgstr "色温度" #: camlibs/ptp2/ptp.c:4278 #, fuzzy msgid "White Balance Preset Number" msgstr "色温度" #: camlibs/ptp2/ptp.c:4280 #, fuzzy msgid "White Balance Preset Name 0" msgstr "色温度" #: camlibs/ptp2/ptp.c:4282 #, fuzzy msgid "White Balance Preset Name 1" msgstr "色温度" #: camlibs/ptp2/ptp.c:4284 #, fuzzy msgid "White Balance Preset Name 2" msgstr "色温度" #: camlibs/ptp2/ptp.c:4286 #, fuzzy msgid "White Balance Preset Name 3" msgstr "色温度" #: camlibs/ptp2/ptp.c:4288 #, fuzzy msgid "White Balance Preset Name 4" msgstr "色温度" #: camlibs/ptp2/ptp.c:4290 #, fuzzy msgid "White Balance Preset Value 0" msgstr "色温度" #: camlibs/ptp2/ptp.c:4292 #, fuzzy msgid "White Balance Preset Value 1" msgstr "色温度" #: camlibs/ptp2/ptp.c:4294 #, fuzzy msgid "White Balance Preset Value 2" msgstr "色温度" #: camlibs/ptp2/ptp.c:4296 #, fuzzy msgid "White Balance Preset Value 3" msgstr "色温度" #: camlibs/ptp2/ptp.c:4298 #, fuzzy msgid "White Balance Preset Value 4" msgstr "色温度" #: camlibs/ptp2/ptp.c:4308 #, fuzzy msgid "Lens Focal Length (Non CPU)" msgstr "フォーカスã®é•·ã•" #: camlibs/ptp2/ptp.c:4310 #, fuzzy msgid "Lens Maximum Aperture (Non CPU)" msgstr "フォーカスã®é•·ã•" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "" #: camlibs/ptp2/ptp.c:4360 msgid "Focus Area Zone" msgstr "フォーカス エリアã®ã‚¾ãƒ¼ãƒ³" #: camlibs/ptp2/ptp.c:4362 msgid "Enable Copyright" msgstr "ã‚³ãƒ”ãƒ¼ãƒ©ã‚¤ãƒˆã®æœ‰åй" #: camlibs/ptp2/ptp.c:4366 #, fuzzy msgid "Exposure ISO Step" msgstr "露出時間" #: camlibs/ptp2/ptp.c:4368 #, fuzzy msgid "Exposure Step" msgstr "露出時間" #: camlibs/ptp2/ptp.c:4370 #, fuzzy msgid "Exposure Compensation (EV)" msgstr "露出度" #: camlibs/ptp2/ptp.c:4374 #, fuzzy msgid "Centre Weight Area" msgstr "中央部é‡ç‚¹" #: camlibs/ptp2/ptp.c:4376 #, fuzzy msgid "Exposure Base Matrix" msgstr "露出補正" #: camlibs/ptp2/ptp.c:4378 #, fuzzy msgid "Exposure Base Center" msgstr "露出補正" #: camlibs/ptp2/ptp.c:4380 #, fuzzy msgid "Exposure Base Spot" msgstr "露出補正" #: camlibs/ptp2/ptp.c:4382 #, fuzzy msgid "Live View AF Area" msgstr "液晶モード" #: camlibs/ptp2/ptp.c:4390 #, fuzzy msgid "Auto Meter Off Time" msgstr "自動 OFF 時間" #: camlibs/ptp2/ptp.c:4392 #, fuzzy msgid "Self Timer Delay" msgstr "ã‚»ãƒ«ãƒ•ã‚¿ã‚¤ãƒžãƒ¼ã®æ™‚é–“" #: camlibs/ptp2/ptp.c:4396 #, fuzzy msgid "Img Conf Time" msgstr "ç”»åƒã®ã‚³ãƒ¡ãƒ³ãƒˆ" #: camlibs/ptp2/ptp.c:4398 #, fuzzy msgid "Auto Off Timers" msgstr "自動 OFF 時間" #: camlibs/ptp2/ptp.c:4400 #, fuzzy msgid "Angle Level" msgstr "ボリュームレベル" #: camlibs/ptp2/ptp.c:4402 msgid "Shooting Speed" msgstr "シャッター速度" #: camlibs/ptp2/ptp.c:4406 #, fuzzy msgid "Exposure delay mode" msgstr "露出プログラム・モード" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 #, fuzzy msgid "Long Exposure Noise Reduction" msgstr "露出ãƒã‚¤ã‚¢ã‚¹ã®ä»£å„Ÿ" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "" #: camlibs/ptp2/ptp.c:4418 #, fuzzy msgid "High ISO noise reduction" msgstr "露出ãƒã‚¤ã‚¢ã‚¹ã®ä»£å„Ÿ" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "" #: camlibs/ptp2/ptp.c:4422 #, fuzzy msgid "Artist Name" msgstr "作者" #: camlibs/ptp2/ptp.c:4424 #, fuzzy msgid "Copyright Information" msgstr "コピーライト" #: camlibs/ptp2/ptp.c:4432 #, fuzzy msgid "Modeling Flash" msgstr "強制発光\n" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "" #: camlibs/ptp2/ptp.c:4440 #, fuzzy msgid "Auto Bracket Selection" msgstr "自動, Red-Eye 減少" #: camlibs/ptp2/ptp.c:4441 #, fuzzy msgid "NIKON Auto Bracketing Set" msgstr "自動, Red-Eye 減少" #: camlibs/ptp2/ptp.c:4443 #, fuzzy msgid "Center Button Shooting Mode" msgstr "測光モード" #: camlibs/ptp2/ptp.c:4445 #, fuzzy msgid "Center Button Playback Mode" msgstr "ç¾åœ¨ã®ãƒ¢ãƒ¼ãƒ‰: å†ç”Ÿãƒ¢ãƒ¼ãƒ‰\n" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "å†ç”Ÿãƒ•ォト情報" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "ãƒœã‚¿ãƒ³ã®æ©Ÿèƒ½å‰²ã‚Šå½“ã¦" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "コマンドダイアルã®ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚º" #: camlibs/ptp2/ptp.c:4457 #, fuzzy msgid "Aperture Setting" msgstr "外観ã®è¨­å®š" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "ボタンã¨ãƒ€ã‚¤ã‚¢ãƒ«" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "" #: camlibs/ptp2/ptp.c:4465 #, fuzzy msgid "Center Button Zoom Ratio" msgstr "測光モード" #: camlibs/ptp2/ptp.c:4467 #, fuzzy msgid "Function Button 2" msgstr "æ“作モード" #: camlibs/ptp2/ptp.c:4471 #, fuzzy msgid "Normal AF On" msgstr "標準" #: camlibs/ptp2/ptp.c:4473 #, fuzzy msgid "Clean Image Sensor" msgstr "Canon ç”»åƒã®å¤§ãã•" #: camlibs/ptp2/ptp.c:4475 #, fuzzy msgid "Image Comment String" msgstr "ç”»åƒã®èª¿æ•´" #: camlibs/ptp2/ptp.c:4477 #, fuzzy msgid "Image Comment Enable" msgstr "ç”»åƒã®ã‚³ãƒ¡ãƒ³ãƒˆ" #: camlibs/ptp2/ptp.c:4479 #, fuzzy msgid "Image Rotation" msgstr "カメラã®è¨­å®š" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "" #: camlibs/ptp2/ptp.c:4497 #, fuzzy msgid "Bracketing Enable" msgstr "露出補正" #: camlibs/ptp2/ptp.c:4499 #, fuzzy msgid "Exposure Bracketing Step" msgstr "露出補正" #: camlibs/ptp2/ptp.c:4501 #, fuzzy msgid "Exposure Bracketing Program" msgstr "露出補正" #: camlibs/ptp2/ptp.c:4503 #, fuzzy msgid "Auto Exposure Bracket Count" msgstr "露出補正" #: camlibs/ptp2/ptp.c:4504 #, fuzzy msgid "White Balance Bracket Step" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/ptp.c:4505 #, fuzzy msgid "White Balance Bracket Program" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ptp2/ptp.c:4507 msgid "Lens ID" msgstr "レンズ ID" #: camlibs/ptp2/ptp.c:4509 msgid "Lens Sort" msgstr "レンズã®ä¸¦ã³æ›¿ãˆ" #: camlibs/ptp2/ptp.c:4511 msgid "Lens Type" msgstr "レンズã®ç¨®é¡ž" #: camlibs/ptp2/ptp.c:4513 #, fuzzy msgid "Min. Focal Length" msgstr "フォーカスã®é•·ã•" #: camlibs/ptp2/ptp.c:4515 #, fuzzy msgid "Max. Focal Length" msgstr "フォーカスã®é•·ã•" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4521 #, fuzzy msgid "Finder ISO Display" msgstr "ビューファインダーモード" #: camlibs/ptp2/ptp.c:4523 #, fuzzy msgid "Auto Off Photo" msgstr "自動 OFF 時間" #: camlibs/ptp2/ptp.c:4525 #, fuzzy msgid "Auto Off Menu" msgstr "自動 OFF 時間" #: camlibs/ptp2/ptp.c:4527 #, fuzzy msgid "Auto Off Info" msgstr "自動 OFF 時間" #: camlibs/ptp2/ptp.c:4529 #, fuzzy msgid "Self Timer Shot Number" msgstr "ã‚»ãƒ«ãƒ•ã‚¿ã‚¤ãƒžãƒ¼ã®æ™‚é–“" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "" #: camlibs/ptp2/ptp.c:4537 #, fuzzy msgid "Nikon Exposure Time" msgstr "露出時間" #: camlibs/ptp2/ptp.c:4539 #, fuzzy msgid "Warning Status" msgstr "カードã®çŠ¶æ…‹:\t" #: camlibs/ptp2/ptp.c:4546 #, fuzzy msgid "AF LCD Top Mode 2" msgstr "液晶モード" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "" #: camlibs/ptp2/ptp.c:4552 #, fuzzy msgid "Exposure Meter" msgstr "露出補正" #: camlibs/ptp2/ptp.c:4556 #, fuzzy msgid "USB Speed" msgstr "ISO スピード" #: camlibs/ptp2/ptp.c:4558 #, fuzzy msgid "CCD Serial Number" msgstr "%sシリアル番å·: %s\n" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "" #: camlibs/ptp2/ptp.c:4564 #, fuzzy msgid "FNumber Lock" msgstr "F-番å·" #: camlibs/ptp2/ptp.c:4566 #, fuzzy msgid "Exposure Aperture Lock" msgstr "露出補正モード" #: camlibs/ptp2/ptp.c:4568 #, fuzzy msgid "TV Lock Setting" msgstr "TV A/V 設定" #: camlibs/ptp2/ptp.c:4570 #, fuzzy msgid "AV Lock Setting" msgstr "TV A/V 設定" #: camlibs/ptp2/ptp.c:4572 #, fuzzy msgid "Illum Setting" msgstr "カメラã®è¨­å®š" #: camlibs/ptp2/ptp.c:4574 #, fuzzy msgid "Focus Point Bright" msgstr "フォーカスã®ç„¦ç‚¹" #: camlibs/ptp2/ptp.c:4576 #, fuzzy msgid "External Flash Attached" msgstr "å¤–éƒ¨åŒæœŸ" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "" #: camlibs/ptp2/ptp.c:4580 #, fuzzy msgid "External Flash Sort" msgstr "å¤–éƒ¨åŒæœŸ" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 #, fuzzy msgid "External Flash Mode" msgstr "フラッシュ モード" #: camlibs/ptp2/ptp.c:4584 #, fuzzy msgid "External Flash Compensation" msgstr "露出度" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "" #: camlibs/ptp2/ptp.c:4602 #, fuzzy msgid "BW Sharpness" msgstr "鮮明度" #: camlibs/ptp2/ptp.c:4604 #, fuzzy msgid "BW Contrast" msgstr "コントラスト" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "" #: camlibs/ptp2/ptp.c:4614 #, fuzzy msgid "Flourescent Type" msgstr "è›å…‰ç¯" #: camlibs/ptp2/ptp.c:4616 #, fuzzy msgid "Tune Colour Temperature" msgstr "色温度" #: camlibs/ptp2/ptp.c:4618 #, fuzzy msgid "Tune Preset 0" msgstr "プリセット" #: camlibs/ptp2/ptp.c:4620 #, fuzzy msgid "Tune Preset 1" msgstr "プリセット" #: camlibs/ptp2/ptp.c:4622 #, fuzzy msgid "Tune Preset 2" msgstr "プリセット" #: camlibs/ptp2/ptp.c:4624 #, fuzzy msgid "Tune Preset 3" msgstr "プリセット" #: camlibs/ptp2/ptp.c:4626 #, fuzzy msgid "Tune Preset 4" msgstr "プリセット" #: camlibs/ptp2/ptp.c:4630 msgid "Autofocus Mode" msgstr "自動フォーカスモード" #: camlibs/ptp2/ptp.c:4632 #, fuzzy msgid "AF Assist Lamp" msgstr "補助光" #: camlibs/ptp2/ptp.c:4634 #, fuzzy msgid "Auto ISO P/A/DVP Setting" msgstr "TV A/V 設定" #: camlibs/ptp2/ptp.c:4650 #, fuzzy msgid "Viewfinder Grid Display" msgstr "ビューファインダーモード" #: camlibs/ptp2/ptp.c:4654 #, fuzzy msgid "Flash Mode Commander Power" msgstr "フラッシュ モード" #: camlibs/ptp2/ptp.c:4656 #, fuzzy msgid "Auto FP" msgstr "自動" #: camlibs/ptp2/ptp.c:4660 #, fuzzy msgid "Warning Display" msgstr "日付ã®è¡¨ç¤º" #: camlibs/ptp2/ptp.c:4662 #, fuzzy msgid "Battery Cell Kind" msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ã®ãƒ¬ãƒ™ãƒ«" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "" #: camlibs/ptp2/ptp.c:4668 #, fuzzy msgid "Continuous Speed High" msgstr "測光モード" #: camlibs/ptp2/ptp.c:4670 #, fuzzy msgid "Info Disp Setting" msgstr "フラッシュã®è¨­å®š" #: camlibs/ptp2/ptp.c:4672 #, fuzzy msgid "Preview Button" msgstr "サムãƒã‚¤ãƒ«ã®ãƒ—レビュー" #: camlibs/ptp2/ptp.c:4674 #, fuzzy msgid "Preview Button 2" msgstr "サムãƒã‚¤ãƒ«ã®ãƒ—レビュー" #: camlibs/ptp2/ptp.c:4676 #, fuzzy msgid "AEAF Lock Button 2" msgstr "AE ロックã®ã¿" #: camlibs/ptp2/ptp.c:4678 #, fuzzy msgid "Indicator Display" msgstr "日付ã®è¡¨ç¤º" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "" #: camlibs/ptp2/ptp.c:4684 #, fuzzy msgid "Live View Mode" msgstr "液晶モード" #: camlibs/ptp2/ptp.c:4686 #, fuzzy msgid "Live View Drive Mode" msgstr "液晶モード" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "" #: camlibs/ptp2/ptp.c:4694 #, fuzzy msgid "Exposure Display Status" msgstr "露出時間" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "" #: camlibs/ptp2/ptp.c:4698 #, fuzzy msgid "Info Display Error Status" msgstr "露出時間" #: camlibs/ptp2/ptp.c:4700 #, fuzzy msgid "Exposure Indicate Lightup" msgstr "露出時間" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "" #: camlibs/ptp2/ptp.c:4708 #, fuzzy msgid "Flash MRepeat Count" msgstr "露出度" #: camlibs/ptp2/ptp.c:4710 #, fuzzy msgid "Flash MRepeat Interval" msgstr "低速度撮影ã®é–“éš”" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "" #: camlibs/ptp2/ptp.c:4749 #, fuzzy msgid "Image Compression" msgstr "RAW 圧縮" #: camlibs/ptp2/ptp.c:4758 #, fuzzy msgid "Secure Time" msgstr "セルフタイマ" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "ボリュームレベル" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "デãƒã‚¤ã‚¹ã‚¢ã‚¤ã‚³ãƒ³" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "å†ç”Ÿä½ç½®" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "" #: camlibs/ptp2/ptp.c:4782 #, fuzzy msgid "Quality" msgstr "ç”»åƒã®å“質" #: camlibs/ptp2/ptp.c:4783 #, fuzzy msgid "Release Mode" msgstr "フラッシュ モード" #: camlibs/ptp2/ptp.c:4784 #, fuzzy msgid "Focus Areas" msgstr "フォーカス・モード" #: camlibs/ptp2/ptp.c:4785 #, fuzzy msgid "AE Lock" msgstr "AE/AF ロック" #: camlibs/ptp2/ptp.c:4797 #, fuzzy msgid "Image size" msgstr "ç”»åƒã‚µã‚¤ã‚º" #: camlibs/ptp2/ptp.c:4798 #, fuzzy msgid "Shutter speed" msgstr "シャッター速度" #: camlibs/ptp2/ptp.c:4799 #, fuzzy msgid "Color temperature" msgstr "色温度" #: camlibs/ptp2/ptp.c:4802 #, fuzzy msgid "Expose Index" msgstr "露出時間" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 #, fuzzy msgid "Still Image" msgstr "完全ãªç”»åƒ" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "%.0f mm" #: camlibs/ptp2/ptp.c:4940 #, fuzzy msgid "JPEG Norm" msgstr "JPEG" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "白熱ç¯" #: camlibs/ptp2/ptp.c:4957 #, fuzzy msgid "Automatic Macro (close-up)" msgstr "自動マクロ" #: camlibs/ptp2/ptp.c:4962 #, fuzzy msgid "Center Weighted Average" msgstr "中央部é‡ç‚¹" #: camlibs/ptp2/ptp.c:4964 #, fuzzy msgid "Center-spot" msgstr "中央焦点" #: camlibs/ptp2/ptp.c:4966 #, fuzzy msgid "Automatic flash" msgstr "自動フラッシュ" #: camlibs/ptp2/ptp.c:4969 #, fuzzy msgid "Automatic Red-eye Reduction" msgstr "自動, Red-Eye 減少" #: camlibs/ptp2/ptp.c:4970 #, fuzzy msgid "Red-eye fill flash" msgstr "赤目軽減フラッシュ" #: camlibs/ptp2/ptp.c:4988 #, fuzzy msgid "Power Wind" msgstr "パワー・セーブ" #: camlibs/ptp2/ptp.c:4994 msgid "Timer + Remote" msgstr "タイマーã¨ãƒªãƒ¢ãƒ¼ãƒˆ" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "AF ロックã®ã¿" #: camlibs/ptp2/ptp.c:5056 msgid "Flash Lock" msgstr "フラッシュロック" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "" #: camlibs/ptp2/ptp.c:5109 #, fuzzy msgid "Unused" msgstr "使用中" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "" #: camlibs/ptp2/ptp.c:5157 #, fuzzy msgid "USB 2.0" msgstr "2.0" #: camlibs/ptp2/ptp.c:5169 #, fuzzy msgid "LCD Backlight" msgstr "晴天" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "" #: camlibs/ptp2/ptp.c:5228 msgid "1 min" msgstr "1 分" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "5 分" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "10 分" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "15 分" #: camlibs/ptp2/ptp.c:5266 #, fuzzy msgid "Dark on light" msgstr "晴天" #: camlibs/ptp2/ptp.c:5267 #, fuzzy msgid "Light on dark" msgstr "ãƒ•ãƒ©ãƒƒã‚·ãƒ¥ãŒæš—ã™ãŽã¾ã™ã€‚" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "警告レベル 1" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "警告レベル 0" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "エコノミー" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "スーパーファイン" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "" #: camlibs/ptp2/ptp.c:5345 #, fuzzy msgid "Auto + Red Eye Suppression" msgstr "自動, Red-Eye 減少" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5360 #, fuzzy msgid "Distant View" msgstr "フォーカスã®è·é›¢" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "" #: camlibs/ptp2/ptp.c:5370 #, fuzzy msgid "Pan Focus" msgstr "マニュアルフォーカス" #: camlibs/ptp2/ptp.c:5374 #, fuzzy msgid "Single-Frame Shooting" msgstr "å˜ä¸€ã‚·ãƒ§ãƒƒãƒˆ" #: camlibs/ptp2/ptp.c:5375 #, fuzzy msgid "Continuous Shooting" msgstr "測光モード" #: camlibs/ptp2/ptp.c:5376 #, fuzzy msgid "Timer (Single) Shooting" msgstr "å˜ä¸€ã‚·ãƒ§ãƒƒãƒˆ" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 #, fuzzy msgid "Smooth" msgstr "ソフト" #: camlibs/ptp2/ptp.c:5385 #, fuzzy msgid "Center-weighted Metering" msgstr "中央部é‡ç‚¹" #: camlibs/ptp2/ptp.c:5386 #, fuzzy msgid "Spot Metering" msgstr "焦点測光モード" #: camlibs/ptp2/ptp.c:5387 #, fuzzy msgid "Average Metering" msgstr "露出補正" #: camlibs/ptp2/ptp.c:5388 #, fuzzy msgid "Evaluative Metering" msgstr "Volatile ã®è¨­å®š" #: camlibs/ptp2/ptp.c:5389 #, fuzzy msgid "Partial Metering" msgstr "引数 1" #: camlibs/ptp2/ptp.c:5390 #, fuzzy msgid "Center-weighted Average Metering" msgstr "中央部é‡ç‚¹" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "" #: camlibs/ptp2/ptp.c:5392 #, fuzzy msgid "Multi-Spot Metering" msgstr "焦点測光モード" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 #, fuzzy msgid "Low 2" msgstr "低" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 #, fuzzy msgid "High 2" msgstr "高ã„" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "" #: camlibs/ptp2/ptp.c:5462 #, fuzzy msgid "Development Parameters 1" msgstr "引数 1" #: camlibs/ptp2/ptp.c:5463 #, fuzzy msgid "Development Parameters 2" msgstr "引数 2" #: camlibs/ptp2/ptp.c:5464 #, fuzzy msgid "Development Parameters 3" msgstr "引数 3" #: camlibs/ptp2/ptp.c:5493 #, fuzzy msgid "MlSpotPosCenter" msgstr "フォーカスä½ç½®" #: camlibs/ptp2/ptp.c:5494 #, fuzzy msgid "MlSpotPosAfLink" msgstr "フォーカスä½ç½®" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "メディアカード" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "メディアカードグループ" #: camlibs/ptp2/ptp.c:5600 #, fuzzy msgid "Encounter" msgstr "キャプãƒãƒ£" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "M4A" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "ファームウェア" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "Windows ç”»åƒå½¢å¼" #: camlibs/ptp2/ptp.c:5605 #, fuzzy msgid "Undefined Audio" msgstr "PTP ã®ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5612 #, fuzzy msgid "Undefined Video" msgstr "PTP ã®ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼" #: camlibs/ptp2/ptp.c:5617 #, fuzzy msgid "Undefined Collection" msgstr "PTP 未定義ã®ãƒ—ロパティ" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "䏿˜Žãªæ›¸é¡ž" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "XML 書類" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "Microsoft Word 書類" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "" #: camlibs/ptp2/ptp.c:5643 #, fuzzy msgid "Undefined Contact" msgstr "PTP 未定義ã®ãƒ—ロパティ" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "vCard2" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "vCard3" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "vCalendar1" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "vCalendar2" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "" #: camlibs/ptp2/ptp.c:5692 #, c-format msgid "Unknown(%04x)" msgstr "䏿˜Ž (%04x)" #: camlibs/ptp2/ptp.c:5702 #, fuzzy msgid "Get device info" msgstr "デãƒã‚¤ã‚¹æƒ…å ±ã®å–å¾—" #: camlibs/ptp2/ptp.c:5703 msgid "Open session" msgstr "セッションを開ã" #: camlibs/ptp2/ptp.c:5704 msgid "Close session" msgstr "セッションを閉ã˜ã‚‹" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "ストレージ ID ã®å–å¾—" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "ストレージ情報ã®å–å¾—" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "オブジェクト番å·ã®å–å¾—" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "オブジェクト情報ã®å–å¾—" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "オブジェクトã®å–å¾—" #: camlibs/ptp2/ptp.c:5711 msgid "Get thumbnail" msgstr "サムãƒã‚¤ãƒ«ã®å–å¾—" #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "オブジェクトã®å‰Šé™¤" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "ストレージã®åˆæœŸåŒ–" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "デãƒã‚¤ã‚¹ã®ãƒªã‚»ãƒƒãƒˆ" #: camlibs/ptp2/ptp.c:5718 #, fuzzy msgid "Self test device" msgstr "PTP ã®è‡ªå·±è¨ºæ–­ã«å¤±æ•—ã—ã¾ã—ãŸ" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 #, fuzzy msgid "Get Vendor Extension Maps" msgstr "ベンダー拡張ã®è©³ç´°: %s\n" #: camlibs/ptp2/ptp.c:5735 #, fuzzy msgid "Get Vendor Device Info" msgstr "デãƒã‚¤ã‚¹æƒ…å ±ã®å–å¾—" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 msgid "Get Filesystem Manifest" msgstr "" #: camlibs/ptp2/ptp.c:5738 #, fuzzy msgid "Get Stream Info" msgstr "ストレージ情報ã®å–å¾—" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "" #: camlibs/ptp2/ptp.c:5759 #, fuzzy msgid "Set license response" msgstr "èªè­˜ã§ããªã„å応ã§ã™" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "" #: camlibs/ptp2/ptp.c:5763 #, fuzzy msgid "Get meter response" msgstr "予期ã—ãªã„å応をå—ã‘å–りã¾ã—ãŸ" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "" #: camlibs/ptp2/ptp.c:5800 #, fuzzy msgid "Send Partial Object" msgstr "PTP 䏿­£ãªã‚ªãƒ–ジェクト" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "䏿˜Žãª %d" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "PTP ã®ä¸æ˜Žãªãƒ™ãƒ³ãƒ€ãƒ¼ã‚³ãƒ¼ãƒ‰ã§ã™" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "å‹•ç”»ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­..." #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "音声ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­..." #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "EXIF データã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "%s ã§åˆ©ç”¨å¯èƒ½ãª EXIF データã§ã¯ã‚りã¾ã›ã‚“。" #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "ファイルを削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "フォルダを削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "フォルダを生æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "RTC ã®çŠ¶æ…‹: %d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "ã‚«ãƒ¡ãƒ©ã®æ™‚刻: %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "カメラ㮠ID: %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "SD カードãŒè£…ç€ã•れã¦ã„ã¾ã›ã‚“。\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "SD カード㮠ID: %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "写真ã®åˆè¨ˆ: %d\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "SD メモリー: åˆè¨ˆ %d MB, 空ã %d MB\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "内部メモリー: åˆè¨ˆ %d MB, 空ã %d MB\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3 ドライãƒã€‚\n" "Marcus Meissner \n" "USB スヌープを利用ã—ãŸãƒªãƒãƒ¼ã‚¹ãƒ»ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ãƒªãƒ³ã‚°ã€\n" "ファイヤーワイヤーã®ç”»åƒæ›´æ–°ã¨è¦‹å½“é•ã„ã®æ†¶æ¸¬ã€‚\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Bob Paauwe æ°ã®ãƒ‰ãƒ©ã‚¤ãƒãŒãƒ™ãƒ¼ã‚¹ã®\n" "Lutz Mueller ,\n" "Martin Fischer 作ã®\n" "Ricoh / Philips ドライãƒ\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "䏿˜Ž (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "åž‹å¼: %s\n" "メモリー: %d/%d ãƒã‚¤ãƒˆæœ‰åй" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2.0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1.5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1.0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0.5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0.0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0.5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1.0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1.5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2.0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "屋外" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "最大" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "最å°" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "文字" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "サウンド" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "ç”»åƒã¨ã‚µã‚¦ãƒ³ãƒ‰" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "文字ã¨ã‚µã‚¦ãƒ³ãƒ‰" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "設定" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "全般" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "コピーライト (最大 20文字)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "写真" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "ホワイトãƒãƒ©ãƒ³ã‚¹" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "記録モード" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "圧縮" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "シャッター速度 %i ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“ï¼" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "" "%i ãƒã‚¤ãƒˆã‚’期待ã—ã¾ã—ãŸãŒã€%i ãƒã‚¤ãƒˆã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "" "%i ãƒã‚¤ãƒˆã‚’期待ã—ã¾ã—ãŸãŒã€%i ãƒã‚¤ãƒˆã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "0x%x を期待ã—ã¾ã—ãŸãŒã€0x%x ã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "ãŠã‹ã—ãªæ–‡å­— (0x%x, 0x%x) ã§ã™ã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "カメラãŒãƒ“ジーã§ã™ã€‚ã“ã®çŠ¶æ…‹ãŒé•·ãç¶šã„ãŸå ´åˆã¯ %s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "二回リトライã—ã¾ã—ãŸãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã§ã™ã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "二回トライã—ã¾ã—ãŸãŒé€šä¿¡ã‚¨ãƒ©ãƒ¼ã§ã™ã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "カメラãŒé–“é•ã£ãŸãƒ¢ãƒ¼ãƒ‰ã«ã‚りã¾ã™ã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "カメラãŒå¼•æ•°ã‚’å—ã‘å–りã¾ã›ã‚“。%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "䏿˜Žãªã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "ファイルå㯠12文字以内ã«ã—ã¦ä¸‹ã•ã„ ('%s' 㯠%i 文字ã‚りã¾ã™)。" #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "サムソン digimax 800k å‘ã‘ã® gPhoto2 用ドライãƒã¯ James Mckenzie æ° " " ãŒé–‹ç™ºã‚’担当ã—ã¾ã—ãŸã€‚Lutz Mueller æ°ã¯ãれを gphoto2 å‘ã‘ã«å®Ÿè£…ã—ç›´ã—ã¾ã—ãŸã€‚Marcus Meissner " "æ° æ°ã¯ãƒã‚°ãƒ•ã‚£ãƒƒã‚¯ã‚¹ã¨æ‹¡å¼µæ©Ÿèƒ½ã‚’担当ã—ã¾ã—ãŸã€‚" #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "è§£åƒåº¦ã®å¢—分値" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "æ—¥ä»˜ã¨æ™‚é–“ (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 #, fuzzy msgid "Aperture Settings" msgstr "外観ã®è¨­å®š" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "カラーモード" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "赤目軽減発光" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "フラッシュã®è¨­å®š" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "ホストã®ãƒ‘ワーセーブ (ç§’)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "カメラã®ãƒ‘ワーセーブ (ç§’)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "レンズモード" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "韓国語" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "英語" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "フランス語" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "ドイツ語" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "イタリア語" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "日本語" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "スペイン語" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "ãƒãƒ«ãƒˆã‚¬ãƒ«èªž" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "写真ã®è¨­å®š" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "Epson 製 カメラã«ã¤ã„ã¦:\n" "- 次ã®ãƒ‘ラメータã¯ãƒªãƒ¢ãƒ¼ãƒˆã§åˆ¶å¾¡ã§ãã¾ã›ã‚“:\n" " * ズーム\n" " * フォーカス\n" " * ホワイト・ãƒãƒ©ãƒ³ã‚¹ã®ã‚«ã‚¹ã‚¿ãƒ è¨­å®š\n" "- 設定㯠PhotoPC 3000z ã§ãƒªãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ã•れã¾ã—ãŸã€‚\n" " ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ãŒãŠã‹ã—ãªå‹•ãã‚’ã—ãŸå ´åˆã¯\n" " メーリング・リストã¾ã§ (英語ã§) 連絡ã—ã¦ä¸‹ã•ã„。\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "メモリー・カードãŒã‚りã¾ã›ã‚“" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼å®¹é‡ã‚’å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "カメラã®ãƒãƒƒãƒ†ãƒªãƒ¼æ®‹é‡ãŒä½Žã™ãŽã¾ã™ (%d%%)。æ“作を中止ã—ã¾ã™ã€‚" #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "有効ãªãƒ¡ãƒ¢ãƒªãƒ¼æ®‹é‡ã‚’å–å¾—ã§ãã¾ã›ã‚“。" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "æŽ¥ç¶šã‚’ä¿æŒã™ã‚‹ã®ã«ï¼“回失敗ã—ã¾ã—ãŸã€‚" #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "最åˆã«å—ã‘å–ã£ãŸãƒ‡ãƒ¼ã‚¿ (0x%x) ã¯ç„¡åйã§ã™ã€‚" #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "パケットを %i 回é€ä¿¡ã—ã¾ã—ãŸãŒã€ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "リトライ後もパケットé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: camlibs/sierra/library.c:789 #, fuzzy, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "パケットãŒã‚«ãƒ¡ãƒ©ã«æ‹’å¦ã•れã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "" "パケットをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—㟠(エラーコード %i)。%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "二回å†é€ã—ã¾ã—ãŸãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸã€‚終了ã—ã¾ã™..." #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "予期ã—ãªã„çµæžœ 0x%x ã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "予期ã—ãªã„çµæžœ (%i) ã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "レジスタ %i ã‚’å–å¾—ã§ãã¾ã›ã‚“。%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "リトライã«å¤±æ•—ã—ã¾ã—ãŸã€‚" #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "データã®é€ä¿¡ä¸­..." #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "Sierra ドライãƒã§ã¯å†å¸°å‘¼ã³å‡ºã—ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“ï¼ %s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "string 型レジスタ %i ã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "" "32 ãƒã‚¤ãƒˆã‚’期待ã—ã¾ã—ãŸãŒã€%i ãƒã‚¤ãƒˆã‚’å—ã‘å–りã¾ã—ãŸã€‚%s ã«é€£çµ¡ã—ã¦ä¸‹ã•ã„。" #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "シャッター速度 (マイクロ秒, 0:自動)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "シャッター速度 (ç§’, 0:自動)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "B/W" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "赤目対策" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "スローシンクロ" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "コントラスト(+)" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "コントラスト(-)" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "明るã•(+)" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "明るã•(-)" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "ç”»åƒã®èª¿æ•´" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "点滅" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "液晶モード" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "∞" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "サムãƒã‚¤ãƒ«ã®ãƒ—レビュー" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "進む" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "戻る" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "æ“作モード" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "æ¶²æ™¶ãƒ¢ãƒ‹ã‚¿ã®æ˜Žã‚‹ã•" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "液晶モニタã®è‡ªå‹•オフ (ç§’)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "中央部é‡ç‚¹" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "マトリックス" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "焦点 AF" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "露出補正" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "ズーム (ミリå˜ä½)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "ãªã—" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "AE-ロック" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "魚眼" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "ワイド" #: camlibs/sierra/nikon-desc.c:558 #, fuzzy msgid "Misc exposure/lens settings" msgstr "ãã®ä»–ã®éœ²å‡º/レンズã®è¨­å®š" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "自動露出ロック" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " カメラã®è¨­å®š:\n" "\n" " 光学ズームã¯\n" " ãŠãã‚‰ãæ©Ÿèƒ½ã—ã¾ã›ã‚“。\n" "\n" " å…¨ã¦ã®è¨­å®šã¯ãŠãらã\n" " 読ã¿è¾¼ã¿/書ãè¾¼ã¿ã§ãã¾ã›ã‚“。\n" " 例ãˆã°ã€ãƒ›ãƒ¯ã‚¤ãƒˆãƒ»ãƒãƒ©ãƒ³ã‚¹ã®ãƒ•ァイン・ãƒãƒ¥ãƒ¼ãƒ³è¨­å®šã‚„\n" " 言語設定ã§ã™ã€‚\n" "\n" " シャッター・スピードをセットã™ã‚‹å ´åˆã¯\n" " 'M' モードã«ã—ã¦ä¸‹ã•ã„。\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995:\n" " ã“ã®ã‚«ãƒ¡ãƒ©ã®è¨­å®šã¯ä¸å®Œå…¨ã§ã™ã€‚\n" " ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã«å¯¾ã—ã¦å”力ã—ãŸã„ã¨\n" " ãŠæ€ã„ãªã‚‰ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒ»ãƒªã‚¹ãƒˆã®é–‹ç™ºè€…ã«\n" " 連絡ã—ã¦ä¸‹ã•ã„。\n" "\n" " ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¯æ­£ã—ãæ©Ÿèƒ½ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "白æ¿" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "é»’æ¿" #: camlibs/sierra/olympus-desc.c:489 #, fuzzy msgid "Color or Function Mode" msgstr "æ“作モード" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 #, fuzzy msgid "Slow" msgstr "スローシンクロ" #: camlibs/sierra/olympus-desc.c:540 #, fuzzy msgid "Anti-redeye Fill" msgstr "赤目対策" #: camlibs/sierra/olympus-desc.c:596 #, fuzzy msgid "Fluorescent-1-home-6700K" msgstr "è›å…‰ç¯" #: camlibs/sierra/olympus-desc.c:597 #, fuzzy msgid "Fluorescent-2-desk-5000K" msgstr "è›å…‰ç¯" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "モニタ" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "液晶モード" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "ESP" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "デジタル・ズーム" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "フォーカスä½ç½®" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "時刻ã®å½¢å¼" #: camlibs/sierra/olympus-desc.c:1147 #, fuzzy msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus ã‚«ãƒ¡ãƒ©ã®æ³¨æ„事項 (ä»–ã®ã‚«ãƒ¡ãƒ©ã‚‚?):\n" "(1) カメラã®è¨­å®š\n" " 値を '0' ã«ã™ã‚‹ã¨ãƒ‡ãƒ•ォルト値 (自動) ãŒä½¿ç”¨ã•れã¾ã™ã€‚\n" "(2) Olympus C-3040Z (å«ã‚€ C-2040Z ã¨ãã®ä»–) ã«ã¯ \n" " USB PC 制御モードãŒã‚りã¾ã™ã€‚ ã“ã®ãƒ¢ãƒ¼ãƒ‰ã‚’使用ã™ã‚‹ã«ã¯\n" " カメラå´ã§ 'USB PC 制御モード' ã«åˆ‡ã‚Šæ›¿ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚\n" " メニューã§ãƒ¢ãƒ¼ãƒ‰ã‚’切り替ãˆã‚‹ã«ã¯ã€ãƒ¡ãƒ¢ãƒªãƒ¼ カードã®\n" " アクセス・カãƒãƒ¼ã‚’é–‹ã„ã¦ã€ã‚«ãƒ¡ãƒ©ã®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãŒ\n" " 表示ã•れるã¾ã§ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒœã‚¿ãƒ³ã‚’押ã—ãŸã¾ã¾ã«ã—ã¦ä¸‹ã•ã„。\n" " ãれã‹ã‚‰ 'USB PC 制御モード' ã‚’ ON ã«ã—ã¦ä¸‹ã•ã„。\n" "(3) 液晶モードã‹ã‚‰ãƒ¢ãƒ‹ã‚¿ãƒ¢ãƒ¼ãƒ‰ã€ã¾ãŸã¯é€šå¸¸ãƒ¢ãƒ¼ãƒ‰ã«å¤‰æ›´ã—ãŸå ´åˆã€\n" " 接続を切るå‰ã«ã€å¿˜ã‚Œãšã«ãれらを \"OFF\" ã«æˆ»ã—ã¦ä¸‹ã•ã„。\n" " ã•ã‚‚ãªã„ã¨ã€ã‚«ãƒ¡ãƒ©ã®ãƒœã‚¿ãƒ³ãŒæŠ¼ã›ãªããªã‚Šã¾ã™ã€‚\n" " ã‚‚ã—ã“ã®ã‚ˆã†ãªçŠ¶æ…‹ã«ãªã£ãŸã‚‰ã€PC ã‹ã‚‰å–り外ã—ã—ã¦å†ã³æŽ¥ç¶šã—\n" " 液晶を \"OFF\" ã«åˆ‡ã‚Šæ›¿ãˆã¦ä¸‹ã•ã„。" #: camlibs/sierra/olympus-desc.c:1166 #, fuzzy msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus 750 Ultra ズーム:\n" "(1) Olympus 750UZ ã«ã¯ USB を利用ã—㟠PC åˆ¶å¾¡ãƒ¢ãƒ¼ãƒ‰ãŒæ­è¼‰ã•れã¦ã„ã¾ã™ã€‚\n" " ã“ã®ãƒ¢ãƒ¼ãƒ‰ã‚’使用ã™ã‚‹ã«ã¯ã€ã‚«ãƒ¡ãƒ©å´ã§ 'USB PC 制御モード' ã«\n" " 切り替ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚\n" " モードを切り替ãˆã‚‹ã«ã¯ã€ãƒ¡ãƒ¢ãƒªãƒ¼ カードã®\n" " アクセス・カãƒãƒ¼ã‚’é–‹ã„ã¦ã€ã‚«ãƒ¡ãƒ©ã®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãŒ\n" " 表示ã•れるã¾ã§ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒœã‚¿ãƒ³ã‚’押ã—ãŸã¾ã¾ã«ã—ã¦ä¸‹ã•ã„。\n" " ãれã‹ã‚‰ 'USB PC 制御モード' ã‚’ ON ã«ã—ã¦ä¸‹ã•ã„。\n" "(3) 液晶モードã‹ã‚‰ãƒ¢ãƒ‹ã‚¿ãƒ¢ãƒ¼ãƒ‰ã€ã¾ãŸã¯é€šå¸¸ãƒ¢ãƒ¼ãƒ‰ã«å¤‰æ›´ã—ãŸå ´åˆã€\n" " 接続を切るå‰ã«ã€å¿˜ã‚Œãšã«ãれらを \"OFF\" ã«æˆ»ã—ã¦ä¸‹ã•ã„。\n" " ã•ã‚‚ãªã„ã¨ã€ã‚«ãƒ¡ãƒ©ã®ãƒœã‚¿ãƒ³ãŒæŠ¼ã›ãªããªã‚Šã¾ã™ã€‚\n" " ã‚‚ã—ã“ã®ã‚ˆã†ãªçŠ¶æ…‹ã«ãªã£ãŸã‚‰ã€PC ã‹ã‚‰å–り外ã—ã—ã¦å†ã³æŽ¥ç¶šã—\n" " 液晶を \"OFF\" ã«åˆ‡ã‚Šæ›¿ãˆã¦ä¸‹ã•ã„。" #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "デフォルト Sierra ドライãƒ:\n" "\n" " ã“れã¯ãƒ‡ãƒ•ォルト㮠Sierra ドライãƒã§ã€\n" " ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã‹ã‚‰å†™çœŸã‚’ダウンロードã—ã¦\n" " å‚ç…§ã™ã‚‹æ©Ÿèƒ½ã‚’æä¾›ã—ã¦ã„ã¾ã™ã€‚\n" "\n" " カメラã®è¨­å®šã¯ Olympus 3040 をベースã«ã—ã¦ã„ã¾ã™ãŒã€\n" " ãŠãらãä¸å®Œå…¨ã§ã™ã€‚\n" " ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©è¨­å®šã‚’テストã—ãŸã‚Šã€\n" " 設定機能を完全ã«ã™ã‚‹ãŸã‚ã«é–‹ç™ºã«å”力ã—ã¦ãれるã®ãªã‚‰ã°\n" " 開発者ã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒ»ãƒªã‚¹ãƒˆã¾ã§é€£çµ¡ã—ã¦ä¸‹ã•ã„。\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "アップロードã—ãŸãƒ•ァイルã®ã‚µã‚¤ã‚ºãŒ NULL ã§ã™" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "メモリー カードã«ç©ºã容é‡ãŒã‚りã¾ã›ã‚“" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "写真を格ç´ã™ã‚‹ãƒ•ォルダåãŒå–å¾—ã§ãã¾ã›ã‚“" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "フォルダ '%s' ã¸ã®ã‚¢ãƒƒãƒ—ロードã®ã¿ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "ベスト" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (䏿˜Ž)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "シャッター速度 (マイクロ秒, 0:自動)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "モノクロ" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "白æ¿" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "é»’æ¿" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "明るã•/コントラスト" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "明るã•(+)" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "明るã•(-)" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "晴天" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "∞/フラッシュアイ" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "焦点測光モード" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "x1" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "x1.6" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "x2.5" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "自動パワーオフ (host) (秒後)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "ã‚³ãƒ³ãƒ”ãƒ¥ãƒ¼ã‚¿ã«æŽ¥ç¶šã—ãŸæ™‚ã«è‡ªå‹•çš„ã«ãƒ‘ワーオフã™ã‚‹ã¾ã§ã®æ™‚é–“ã§ã™" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "自動パワーオフ (屋外) (秒後)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "屋外ã§è‡ªå‹•çš„ã«ãƒ‘ワーオフã™ã‚‹ã¾ã§ã®æ™‚é–“ã§ã™" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "液晶モニタã®è‡ªå‹•オフ (秒後)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "ショットã®è¨­å®š" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 msgid "standard" msgstr "標準" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "高解åƒåº¦" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "色彩" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "モノクロ" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" "注æ„: メモリー・カードãŒã‚りã¾ã›ã‚“。ã„ãã¤ã‹ã®å€¤ãŒä¸æ­£ã«ãªã‚‹ã‹ã‚‚ã—れã¾ã›" "ん。\n" #: camlibs/sierra/sierra.c:1948 #, c-format msgid "Camera Model: %s\n" msgstr "カメラã®åž‹å¼: %s\n" #: camlibs/sierra/sierra.c:1957 #, c-format msgid "Serial Number: %s\n" msgstr "シリアル番å·: %s\n" #: camlibs/sierra/sierra.c:1960 #, c-format msgid "Software Rev.: %s\n" msgstr "ソフトウェアã®ãƒªãƒ“ジョン: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, c-format msgid "Frames Taken: %i\n" msgstr "フレーム数: %i\n" #: camlibs/sierra/sierra.c:1971 #, c-format msgid "Frames Left: %i\n" msgstr "残りフレーム数: %i\n" #: camlibs/sierra/sierra.c:1973 #, c-format msgid "Battery Life: %i\n" msgstr "ãƒãƒƒãƒ†ãƒªãƒ¼ã®å¯¿å‘½: %i\n" #: camlibs/sierra/sierra.c:1975 #, c-format msgid "Memory Left: %i bytes\n" msgstr "メモリーã®ç©ºã容é‡: %i ãƒã‚¤ãƒˆ\n" #: camlibs/sierra/sierra.c:1980 #, c-format msgid "Date: %s" msgstr "日付: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "å–り扱ã„説明書ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "Epson 製 カメラã«ã¤ã„ã¦:\n" "- 以下ã®ãƒ‘ラメータã¯ãƒªãƒ¢ãƒ¼ãƒˆã§åˆ¶å¾¡ã§ãã¾ã›ã‚“:\n" " * ズーム\n" " * フォーカス\n" " * ホワイト・ãƒãƒ©ãƒ³ã‚¹ã®ã‚«ã‚¹ã‚¿ãƒ è¨­å®š\n" "- 設定㯠PhotoPC 3000z ã§ãƒªãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ã•れã¾ã—ãŸã€‚\n" " ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ãŒãŠã‹ã—ãªå‹•ãã‚’ã—ãŸå ´åˆã¯\n" " %s ã¾ã§ (英語ã§) 連絡ã—ã¦ä¸‹ã•ã„。\n" #: camlibs/sierra/sierra.c:2060 #, fuzzy msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Olympus ã‚«ãƒ¡ãƒ©ã®æ³¨æ„事項 (ä»–ã®ã‚«ãƒ¡ãƒ©ã‚‚?):\n" "(1) カメラã®è¨­å®š\n" " 値を '0' ã«ã™ã‚‹ã¨ãƒ‡ãƒ•ォルト値 (自動) を使用ã—ã¾ã™ã€‚\n" "(2) Olympus C-3040Z (å«ã‚€ C-2040Z ã¨ãã®ä»–) ã«ã¯ \n" " USB PC 制御モードãŒã‚りã¾ã™ã€‚ ã“ã®ãƒ¢ãƒ¼ãƒ‰ã‚’使用ã™ã‚‹ã«ã¯\n" " カメラå´ã§ 'USB PC 制御モード' ã«åˆ‡ã‚Šæ›¿ãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚\n" " メニューã§ãƒ¢ãƒ¼ãƒ‰ã‚’切り替ãˆã‚‹ã«ã¯ã€ãƒ¡ãƒ¢ãƒªãƒ¼ カードã®\n" " アクセス・カãƒãƒ¼ã‚’é–‹ã„ã¦ã€ã‚«ãƒ¡ãƒ©ã®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãŒ\n" " 表示ã•れるã¾ã§ãƒ¡ãƒ‹ãƒ¥ãƒ¼ãƒœã‚¿ãƒ³ã‚’押ã—ãŸã¾ã¾ã«ã—ã¦ä¸‹ã•ã„。\n" " ãれã‹ã‚‰ 'USB PC 制御モード' ã‚’ ON ã«ã—ã¦ä¸‹ã•ã„。\n" "(3) 液晶モードã‹ã‚‰ãƒ¢ãƒ‹ã‚¿ãƒ¢ãƒ¼ãƒ‰ã€ã¾ãŸã¯é€šå¸¸ãƒ¢ãƒ¼ãƒ‰ã«å¤‰æ›´ã—ãŸå ´åˆã€\n" " 接続を切るå‰ã«ã€å¿˜ã‚Œãšã«ãれらを \"OFF\" ã«æˆ»ã—ã¦ä¸‹ã•ã„。\n" " ã•ã‚‚ãªã„ã¨ã€ã‚«ãƒ¡ãƒ©ã®ãƒœã‚¿ãƒ³ãŒæŠ¼ã›ãªããªã‚Šã¾ã™ã€‚\n" " ã‚‚ã—ã“ã®ã‚ˆã†ãªçŠ¶æ…‹ã«ãªã£ãŸã‚‰ã€PC ã‹ã‚‰å–り外ã—ã—ã¦å†ã³æŽ¥ç¶šã—\n" " 液晶を \"OFF\" ã«åˆ‡ã‚Šæ›¿ãˆã¦ä¸‹ã•ã„。" #: camlibs/sierra/sierra.c:2087 #, fuzzy msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "Sierra SPARClite ライブラリ\n" "Scott Fritzinger \n" "Olymus, Nikon, Epson ä»–ã‚’å«ã‚€\n" "Sierra ベースã®ãƒ‡ã‚¸ã‚¿ãƒ«ã‚«ãƒ¡ãƒ©ã®ã‚µãƒãƒ¼ãƒˆæ‹…当\n" "\n" "Olymus C-3030Z ã® USB サãƒãƒ¼ãƒˆã®å®Ÿè£…ã§ã¯\n" "Data Engines æ° (www.dataengines.com)\n" "ã«æ„Ÿè¬ã—ã¾ã™ã€‚" #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (䏿˜Ž)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Sipix StyleCam Blink ドライãƒ\n" "Vincent Sanders æ° \n" "Marcus Meissner æ° \n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "USB 設定をé©ç”¨ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "SiPix Web2 カメラã¸ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãƒ‰ãƒ©ã‚¤ãƒã§ã™ã€‚" #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket ドライãƒã€‚\n" "Lee Benfield \n" "Smal Ultrapocket カメラå‘ã®ãƒ‰ãƒ©ã‚¤ãƒã§ã€OEM 版ã§ã™ (slimshot)。" #: camlibs/sonix/library.c:122 #, fuzzy, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Mars MR97310 カメラ。\n" "写真ã®åˆè¨ˆ = %i\n" msgstr[1] "" "Mars MR97310 カメラ。\n" "写真ã®åˆè¨ˆ = %i\n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "Sonix カメラã®ãƒ©ã‚¤ãƒ–ラリ。\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "SONY DSC-F1 デジタルカメラã®ã‚µãƒãƒ¼ãƒˆæ‹…当\n" "M. Adam Kendall \n" "Kenichi Hayashi æ°ã‹ã‚‰ chotplay CLI \n" "インタフェース部をæä¾›ã—ã¦è²°ã„ã¾ã—ãŸ\n" "Gphoto2 å®Ÿè£…ã®æ‹…当㯠Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Sony DSC-F55/505 gPhoto ライブラリ\n" "Sony MSAC-SR1 㨠DCR-PC100 ãŒä½¿ç”¨ã™ã‚‹ãƒ¡ãƒ¢ãƒªãƒ¼ãƒ»ã‚¹ãƒ†ãƒƒã‚¯ã®ã‚µãƒãƒ¼ãƒˆ\n" "Mark Davies æ° ãŒä½œæˆã—ãŸã‚‚ã®ãŒãƒ™ãƒ¼ã‚¹ã§ã™ã€‚\n" "gPhoto2 ã¸ã®ãƒãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã¯ Raymond Penners æ° ãŒæ‹…当" "ã—ã¾ã—ãŸã€‚" #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "ファイヤーワイヤーã®ãƒªãƒ“ジョン: %8s\n" "写真ã®åˆè¨ˆ: %i\n" "メモリーã®åˆè¨ˆ: %i Kãƒã‚¤ãƒˆ\n" "空ãメモリーã®åˆè¨ˆ: %i Kãƒã‚¤ãƒˆ\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "ファームウェアã®ãƒªãƒ“ジョン: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Soundvision ドライãƒ\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "フラッシュ・メモリー:\n" " ファイル数: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM:\n" " ファイル数: %d\n" " å†™çœŸã®æ•°: %4d\n" " å‹•ç”»ã®æ•°: %4d\n" "使用済ã¿ã®å®¹é‡: %8d\n" "空ã容é‡: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "spca50x ライブラリ Ver" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" "ãŠä½¿ã„ã® USB カメラã«ã¯ S&Q ãƒãƒƒãƒ—ã‚»ãƒƒãƒˆãŒæ­è¼‰ã•れã¦ã„ã¾ã™ã€‚\n" "撮影ã—ãŸå†™çœŸã®åˆè¨ˆ = %i\n" "ã“れらã®å†™çœŸã¯è¤‡æ•°ã®ãƒ•レームを格ç´ã—ãŸã‚¯ãƒªãƒƒãƒ—ã«\n" "ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚\n" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" "S&Q テクノロジーã®ãƒãƒƒãƒ—ã‚’æ­è¼‰ã—ãŸã‚«ãƒ¡ãƒ©ã®ãƒ‰ãƒ©ã‚¤ãƒã€‚\n" "gtkam ã§å‹•作ã—ã¾ã™ã€‚写真㯠PPM フォーマットã§ä¿å­˜ã•れã¾ã™ã€‚\n" "\n" "S&Q ã¨çŸ¥ã‚‰ã‚Œã‚‹å…¨ã¦ã®ã‚«ãƒ¡ãƒ©ã«ã¯è§£åƒåº¦ã®è¨­å®šãŒäºŒã¤ã‚りã¾ã™ã€‚\n" "ã“ã®è¨­å®šã¯ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã«ä¾å­˜ã—ã¾ã™ã€‚\n" "ã“ã®ã‚«ãƒ¡ãƒ©ã®ã„ãã¤ã‹ã®ç¨®é¡žã§ã¯å…¨ã¦ã®å†™çœŸã‚’削除ã™ã‚‹æ©Ÿèƒ½ã‚‚æä¾›ã—ã¦ã„ã¾ã™ã€‚\n" "カメラã¸ç”»åƒãƒ‡ãƒ¼ã‚¿ã‚’アップロードã™ã‚‹æ©Ÿèƒ½ã¯æä¾›ã•れã¦ã„ã¾ã›ã‚“。\n" "多ãã® S&Q カメラã§ã¯å†™çœŸã®ç”»åƒåœ§ç¸®ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚\n" "ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ãŒå‹•ç”»ã®ã‚­ãƒ£ãƒ—ãƒãƒ£æ©Ÿèƒ½ã‚’æä¾›ã—ã¦ã„ã‚‹å ´åˆã€\n" "ビデオ・クリップã¯ã‚µãƒ–ãƒ•ã‚©ãƒ«ãƒ€ã«æ ¼ç´ã•れã¾ã™ã€‚\n" "Gtkam を使ãˆã°ã€ãれãžã‚Œå€‹åˆ¥ã«ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ãã¾ã™ã€‚\n" "ビデオ・クリップãŒå­˜åœ¨ã—ã¦ã„ã‚‹å ´åˆã¯ã€\n" "カメラã®åå‰ã®ç›´å‰ã«å°ã•ãªâ–²ãƒžãƒ¼ã‚¯ãŒè¡¨ç¤ºã•れã¾ã™ã€‚\n" "フォルダãŒè¡¨ç¤ºã•れãªã„å ´åˆã¯ã€ã“ã®â–²ãƒžãƒ¼ã‚¯ã‚’クリックã—ã¦ã¿ã¦ä¸‹ã•ã„。\n" "フォルダをクリックã™ã‚‹ã¨ã€ã‚¯ãƒªãƒƒãƒ—ãŒè¡¨ç¤ºã•れるã®ã§ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã§ãã¾ã™ã€‚\n" "ビデオ・クリップã¯å†™çœŸã‚’分解ã—ãŸãƒ•レームã¨ã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ã¾ã™ã€‚\n" "ダウンロードã—ãŸãƒ•レームã«ã¯ã‚¯ãƒªãƒƒãƒ—åã‹ã‚‰ç”Ÿæˆã—ãŸç‰¹åˆ¥ãªåå‰ãŒä»˜ä¸Žã•れã¾" "ã™ã€‚\n" "ãã®ãŸã‚ã‚¯ãƒªãƒƒãƒ—ã‚’é¸æŠžã—ã¦ã€ãれãžã‚Œåˆ¥ã®ãƒ•ォルダã«ä¿å­˜ã§ãã¾ã™ã€‚\n" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "sq905 å‘ã‘æ±Žç”¨ãƒ‰ãƒ©ã‚¤ãƒã€‚\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 #, fuzzy msgid "Orientation" msgstr "カメラã®è¨­å®š" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "STV0674 プロセッサ㮠ASIC 回路をæ­è¼‰ã—ãŸã‚«ãƒ¡ãƒ©ã®ãƒ‰ãƒ©ã‚¤ãƒã§ã™ã€‚\n" "SnoopyPro を使ã£ã¦ãƒ—ロトコルをリãƒãƒ¼ã‚¹ã‚¨ãƒ³ã‚¸ãƒ‹ã‚¢ã—ã¾ã—ãŸã€‚\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "露出ãŒãŠã‹ã—ã„ã§ã™ (ãŠãらãフラッシュãŒå分ã§ã¯ã‚りã¾ã›ã‚“)" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "STV0680 ベースã®ã‚«ãƒ¡ãƒ©æƒ…å ±:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "ファームウェア・リビジョン: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "ASIC リビジョン: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "センサ ID: %d.%d\n" #: camlibs/stv0680/library.c:562 #, fuzzy, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "カメラã®ãƒ•ラッシュ設定㯠%dHz ã§ã™ã€‚\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "カメラ内蔵メモリー: %d Mビット\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "サムãƒã‚¤ãƒ«å½¢å¼ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "ビデオ形å¼ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "白黒ã§ã™ã€‚\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "メモリーを内蔵ã—ã¦ã„ã¾ã™ã€‚\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "サãƒãƒ¼ãƒˆæ¸ˆã¿ã®ãƒ“デオ形å¼:" #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "ベンダー ID: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "è£½å“ ID: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "å†™çœŸã®æ•°: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "ç”»åƒã®æœ€å¤§æ•°: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "ç”»åƒã®å¹…: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "ç”»åƒã®é«˜ã•: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "ç”»åƒã‚µã‚¤ã‚º: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "サムãƒã‚¤ãƒ«ã®å¹…: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "サムãƒã‚¤ãƒ«ã®é«˜ã•: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "サムãƒã‚¤ãƒ«ã®ã‚µã‚¤ã‚º: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "STV0680 (プロセッサ ASIC æ­è¼‰) を使用ã™ã‚‹ã‚«ãƒ¡ãƒ©ã®ãƒ‰ãƒ©ã‚¤ãƒæ‹…当。\n" "CommLite Beta 5 ã® Protocol Reverse Engineered ã¯\n" "Carsten Weinholz æ°ãŒæ‹…当。\n" "Aiptek PenCam ã®æ‹¡å¼µã¨ãã®ä»–ã® STM USB Dual-mode カメラを担当。" #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "%i 個ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®æƒ…報をå–得中..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "(Traveler) SX330z ライブラリ (å«ã‚€ã€ãã®ä»–ã® Aldi-cams)。\n" "Jenoptikã€Skanhexã€Maginon ã®ã‚ˆã†ãªä»–ã®è£½å“ã§ã‚‚動作ã—ã¾ã™ã€‚\n" "ãƒã‚°å ±å‘Šã¨ã‚³ãƒ¡ãƒ³ãƒˆã¯æ¬¡ã«ã¸ãƒ¡ãƒ¼ãƒ«ã—ã¦ä¸‹ã•ã„:\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z 㯠USB ã«ã®ã¿å¯¾å¿œã—ã¦ã„ã¾ã™" #: camlibs/topfield/puppy.c:553 msgid "Driver Settings" msgstr "ドライãƒãƒ¼ã®è¨­å®š" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "ターボ モード" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" #: camlibs/topfield/puppy.c:659 #, c-format msgid "Downloading %s..." msgstr "「%sã€ã‚’ダウンロードã—ã¦ã„ã¾ã™..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 å‘ã‘ã®ãƒ‰ãƒ©ã‚¤ãƒã€‚\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "'%s' ã‹ã‚‰ã‚«ãƒ¡ãƒ©ã®ãƒ‰ãƒ©ã‚¤ãƒã‚’読ã¿è¾¼ã¿ä¸­..." #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "I/O ライブラリ ('%s') ã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "カメラを検出ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: libgphoto2/gphoto2-camera.c:750 #, fuzzy, c-format msgid "Could not detect any camera at port %s" msgstr "カメラを検出ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: libgphoto2/gphoto2-camera.c:774 #, fuzzy msgid "You have to set the port prior to initialization of the camera." msgstr "カメラã®åˆæœŸåŒ–を行ã†å‰ã«å…ˆã«ãƒãƒ¼ãƒˆã‚’セットã—ã¦ä¸‹ã•ã„。" #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "å¿…è¦ãªã‚«ãƒ¡ãƒ©ã®ãƒ‰ãƒ©ã‚¤ãƒ '%s' (%s) ãŒèª­ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚" #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "カメラã®ãƒ‰ãƒ©ã‚¤ãƒ '%s' ã«ã¯ 'camera_init' 関数ãŒã‚りã¾ã›ã‚“。" #: libgphoto2/gphoto2-camera.c:864 #, fuzzy msgid "This camera does not provide any configuration options." msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã§ã¯ã„ãã¤ã‹ã®ã‚ªãƒ—ションをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã§ã¯è¨­å®šã—ãŸã„ãã¤ã‹ã®ã‚ªãƒ—ションをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã¯ã‚µãƒžãƒªã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: libgphoto2/gphoto2-camera.c:960 #, fuzzy msgid "This camera does not provide a manual." msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã¯å–り扱ã„説明書をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã¯ãƒ‰ãƒ©ã‚¤ãƒæƒ…報をæä¾›ã—ã¦ã„ã¾ã›ã‚“。" #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã§ã¯ã‚­ãƒ£ãƒ—ãƒãƒ£ã§ãã¾ã›ã‚“。" #: libgphoto2/gphoto2-camera.c:1056 #, fuzzy msgid "This camera can not trigger capture." msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã§ã¯ã‚­ãƒ£ãƒ—ãƒãƒ£ã§ãã¾ã›ã‚“。" #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã¯ã‚­ãƒ£ãƒ—ãƒãƒ£ã®ãƒ—レビューãŒã§ãã¾ã›ã‚“。" #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "パスå '%s' ãŒç„¡åйã§ã™ã€‚" #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "'%s' をフォルダ '%s' ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã—ã¾ã—ãŸãŒã€ãƒ•ァイルシステムã¯ãƒ•ァイルã®" "削除をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: libgphoto2/gphoto2-filesys.c:1259 #, fuzzy, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "削除ã—よã†ã¨ã—ãŸãƒ•ォルダ '%s' ã®ä¸­ã«ã‚µãƒ–フォルダãŒå­˜åœ¨ã—ã¾ã™ã€‚" #: libgphoto2/gphoto2-filesys.c:1264 #, fuzzy, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "削除ã—よã†ã¨ã—ãŸãƒ•ォルダ '%s' ã®ä¸­ã«ãƒ•ァイルãŒå­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚" #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "ファイルシステムã§ã¯ãƒ•ァイルã®ã‚¢ãƒƒãƒ—ロードをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: libgphoto2/gphoto2-filesys.c:1359 #, fuzzy, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "フォルダ '%s' ã«ã¯ %i 個ã®ãƒ•ァイルãŒã‚りã¾ã™ãŒã€è¦æ±‚ã—ãŸç•ªå·ã¯ %i ã§ã™ã€‚" #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "ファイル '%s' ãŒãƒ•ォルダ '%s' ã®ä¸­ã«ã‚りã¾ã›ã‚“。" #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "ファイル '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "ファイルシステムã¯ã“ã®å½¢å¼ã®ãƒ•ァイルå–得をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "䏿˜Žãªãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ %i ã§ã™ã€‚" #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "ファイルシステムã¯ã“ã®å½¢å¼ã®ãƒ•ァイル情報å–得をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "ファイルシステムã¯ã“ã®å½¢å¼ã®ãƒ•ァイル情報ã®è¨­å®šã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "ファイルã®å¹…ã¨é«˜ã•ãªã©ã®èª­ã¿è¾¼ã¿å°‚用属性を変更ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" #: libgphoto2/gphoto2-filesys.c:2455 #, fuzzy msgid "The filesystem doesn't support getting storage information" msgstr "ファイルシステムã¯ã“ã®å½¢å¼ã®ãƒ•ァイル情報å–得をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "ãŠã‹ã—ãªãƒ‡ãƒ¼ã‚¿" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "ファイルãŒå­˜åœ¨ã—ã¾ã™" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "䏿˜Žãªåž‹å¼" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "ディレクトリãŒã¿ã¤ã‹ã‚Šã¾ã›ã‚“" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "ファイルãŒã¿ã¤ã‹ã‚Šã¾ã›ã‚“" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "ディレクトリãŒå­˜åœ¨ã—ã¾ã™" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "進行中㮠I/O" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "パスåãŒç„¡åйã§ã™" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "æ“作をå–り消ã—ã¾ã—ãŸ" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "æ“作を完了ã§ãã¾ã›ã‚“ã§ã—ãŸ" #: libgphoto2/gphoto2-result.c:57 msgid "OS error in camera communication" msgstr "カメラã¨ã®é€šä¿¡ä¸­ã« OS ã®ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "カメラ ライブラリã®ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "䏿˜Žãªã‚¨ãƒ©ãƒ¼" #~ msgid "No zoom" #~ msgstr "ズームãªã—" #~ msgid "Zoom 1" #~ msgstr "ズーム 1" #~ msgid "Zoom 2" #~ msgstr "ズーム 2" #~ msgid "Zoom 3" #~ msgstr "ズーム 3" #~ msgid "Zoom 4" #~ msgstr "ズーム 4" #~ msgid "Zoom 5" #~ msgstr "ズーム 5" #~ msgid "Zoom 6" #~ msgstr "ズーム 6" #~ msgid "Zoom 7" #~ msgstr "ズーム 7" #~ msgid "Zoom 8" #~ msgstr "ズーム 8" #~ msgid "Zoom 9" #~ msgstr "ズーム 9" #~ msgid "%s is a file type for which no thumbnail is provided" #~ msgstr "サムãƒã‚¤ãƒ«ã§ã¯ãªã„ファイル %s ãŒæŒ‡å®šã•れã¾ã—ãŸ" #~ msgid "Unavailable" #~ msgstr "使用ä¸å¯" #~ msgid "Invalid zoom level" #~ msgstr "ã‚ºãƒ¼ãƒ ãƒ¬ãƒ™ãƒ«ãŒæ­£ã—ãã‚りã¾ã›ã‚“" #, fuzzy #~ msgid "Unknown (some kind of error)" #~ msgstr "䏿˜Žãªã‚¨ãƒ©ãƒ¼ (è©³ç´°ä¸æ˜Ž)" #, fuzzy #~ msgid "" #~ "canon_usb_poll_interrupt_pipe: interrupt read failed after %i tries, " #~ "%6.3f sec \"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_pipe: %i 回試行ã—ã¾ã—ãŸãŒå‰²ã‚Šè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—㟠" #~ "(\"%s\")" #~ msgid "" #~ "canon_usb_poll_interrupt_multiple: interrupt read failed after %i tries, " #~ "\"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_multiple: %i 回試行ã—ã¾ã—ãŸãŒå‰²ã‚Šè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—" #~ "㟠(\"%s\")" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for thumbnail size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: サムãƒã‚¤ãƒ«ã®ãƒ‘ケット・サイズãŒãŠã‹ã—ã„ã§ã™ (0x" #~ "%04x)" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for full image size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: ç”»åƒãƒ‘ケットã®åˆè¨ˆã‚µã‚¤ã‚ºãŒãŠã‹ã—ã„ã§ã™ (0x" #~ "%04x)" #, fuzzy #~ msgid "canon_usb_capture_dialogue: secondary image descriptor received" #~ msgstr "" #~ "canon_usb_capture_dialogue: シーケンスã®å¤–ã§äºŒå›žç›®ã®å‰²ã‚Šè¾¼ã¿ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #~ msgid "canon_usb_capture_dialogue: first interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: シーケンスã®å¤–ã§ä¸€å›žç›®ã®å‰²ã‚Šè¾¼ã¿ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #~ msgid "canon_usb_capture_dialogue: second interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: シーケンスã®å¤–ã§äºŒå›žç›®ã®å‰²ã‚Šè¾¼ã¿ãŒç™ºç”Ÿã—ã¾ã—ãŸ" #~ msgid "" #~ "canon_usb_capture_dialogue: photographic failure signaled, code = 0x%08x" #~ msgstr "" #~ "canon_usb_capture_dialogue: 写真ã®ã‚·ã‚°ãƒŠãƒ«å—ä¿¡ã«å¤±æ•—ã—ã¾ã—㟠(コード = 0x" #~ "%08x)" #~ msgid "canon_usb_capture_dialogue: third EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: シーケンスã®å¤–ã§ä¸‰å›žç›®ã®å‰²ã‚Šè¾¼ã¿ãŒç™ºç”Ÿã—ã¾ã—" #~ "㟠(EOS)" #~ msgid "" #~ "canon_usb_capture_dialogue: fourth EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: シーケンスã¨ã®å¤–ã§å››å›žç›®ã®å‰²ã‚Šè¾¼ã¿ãŒç™ºç”Ÿã—ã¾ã—" #~ "㟠(EOS)" #~ msgid "canon_usb_dialogue: payload too big, won't fit into buffer (%i > %i)" #~ msgstr "" #~ "canon_usb_dialogue: サイズãŒå¤§ãã™ãŽã¾ã™ã€‚ãƒãƒƒãƒ•ã‚¡ã«å–り込ã‚ã¾ã›ã‚“ (%i > " #~ "%i)" #~ msgid "canon_usb_dialogue: expected 0x%x bytes, but camera reports 0x%x" #~ msgstr "" #~ "canon_usb_dialogue: 0x%x ãƒã‚¤ãƒˆã‚’期待ã—ãŸãŒã€ã‚«ãƒ¡ãƒ©ã¯ 0x%x ã‚’è¿”ã—ã¾ã—ãŸ" #~ msgid "Your camera does not support changing filenames." #~ msgstr "ãŠä½¿ã„ã®ã‚«ãƒ¡ãƒ©ã¯ãƒ•ァイルå変更機能をサãƒãƒ¼ãƒˆã—ã¦ãŠã‚Šã¾ã›ã‚“。" #~ msgid "spot" #~ msgstr "スãƒãƒƒãƒˆ" #~ msgid "average" #~ msgstr "å¹³å‡" #, fuzzy #~ msgid "multi spot metering" #~ msgstr "Volatile ã®è¨­å®š" #~ msgid "large" #~ msgstr "大ãã„" #~ msgid "medium 1" #~ msgstr "中 1" #~ msgid "medium 2" #~ msgstr "中 2" #~ msgid "medium 3" #~ msgstr "中 3" #~ msgid "small" #~ msgstr "å°ã•ã„" #~ msgid "sRAW2" #~ msgstr "sRAW2" #~ msgid "Timer + Remote 2" #~ msgstr "タイマーã¨ãƒªãƒ¢ãƒ¼ãƒˆ 2" #~ msgid "Default" #~ msgstr "標準" #, fuzzy #~ msgid "Auto ISO PADV Time" #~ msgstr "TV A/V 設定" #~ msgid "PTP Error: bad parameter" #~ msgstr "PTP エラー: ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãŒæ­£ã—ãã‚りã¾ã›ã‚“" #~ msgid "PTP: Undefined Error" #~ msgstr "PTP: 未定義ã®ã‚¨ãƒ©ãƒ¼" #~ msgid "PTP: OK!" #~ msgstr "PTP: OK!" #~ msgid "PTP: General Error" #~ msgstr "PTP: 一般エラー" #~ msgid "PTP: Session Not Open" #~ msgstr "PTP: セッションãŒã‚ªãƒ¼ãƒ—ンã•れã¦ã„ã¾ã›ã‚“" #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP: 䏿­£ãªãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ ID" #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP: サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„æ“作" #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP: サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„パラメータ" #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP: 転é€ãŒå®Œäº†ã—ã¦ã„ã¾ã›ã‚“" #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP: 䏿­£ãªã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ ID" #~ msgid "PTP: Invalid Object Handle" #~ msgstr "PTP: 䏿­£ãªã‚ªãƒ–ジェクトæ“作" #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "PTP: サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„デãƒã‚¤ã‚¹ Prop" #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP: 䏿­£ãªã‚ªãƒ–ジェクト書å¼ã‚³ãƒ¼ãƒ‰" #~ msgid "PTP: Store Full" #~ msgstr "PTP: 空ã容é‡ãŒã‚りã¾ã›ã‚“" #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP: オブジェクトã¸ã®æ›¸ãè¾¼ã¿ä¿è­·ãŒæœ‰åйã§ã™" #~ msgid "PTP: Store Read Only" #~ msgstr "PTP: 読ã¿è¾¼ã¿å°‚用ã§ã™" #~ msgid "PTP: Access Denied" #~ msgstr "PTP: ã‚¢ã‚¯ã‚»ã‚¹ãŒæ‹’å¦ã•れã¾ã—ãŸ" #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP: サムãƒã‚¤ãƒ«ãŒã‚りã¾ã›ã‚“" #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP: 自己診断ã«å¤±æ•—ã—ã¾ã—ãŸ" #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP: 部分的ãªå‰Šé™¤" #~ msgid "PTP: Store Not Available" #~ msgstr "PTP: æ ¼ç´ã§ãã¾ã›ã‚“" #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "PTP: サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„書å¼ã‚’指定ã—ã¾ã—ãŸ" #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP: 䏿­£ãªã‚ªãƒ–ジェクト情報" #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP: 䏿­£ãªã‚³ãƒ¼ãƒ‰æ›¸å¼" #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "PTP: 䏿˜Žãªãƒ™ãƒ³ãƒ€ãƒ¼ã‚³ãƒ¼ãƒ‰ã§ã™" #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP: キャプãƒãƒ£ã‚’中断ã—ã¾ã—ãŸ" #~ msgid "PTP: Device Busy" #~ msgstr "PTP: デãƒã‚¤ã‚¹ ビージー" #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP: 䏿­£ãªè¦ªã‚ªãƒ–ジェクト" #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP: 䏿­£ãªãƒ‡ãƒã‚¤ã‚¹ Prop 書å¼" #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP: 䏿­£ãªãƒ‡ãƒã‚¤ã‚¹ Prop 値" #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP: 䏿­£ãªãƒ‘ラメータ" #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP: セッションã¯ã‚ªãƒ¼ãƒ—ンã—ã¦ã„ã¾ã™" #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP: トランザクションãŒã‚­ãƒ£ãƒ³ã‚»ãƒ«ã•れã¾ã—ãŸ" #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "PTP: サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„転é€å…ˆã‚’指定ã—ã¾ã—ãŸ" #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP: EK ファイルåãŒå¿…è¦ã§ã™" #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP: EK ファイルåãŒé‡è¤‡ã—ã¦ã„ã¾ã™" #~ msgid "PTP: EK Filename Invalid" #~ msgstr "PTP: EK 䏿­£ãªãƒ•ァイルåã§ã™" #~ msgid "PTP: I/O error" #~ msgstr "PTP: I/O エラーã§ã™" #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP: エラー: ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ãŒæ­£ã—ãã‚りã¾ã›ã‚“" #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP: プロトコル・エラー (期待値: データ)" #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP: プロトコル・エラー (期待値: 応答)" #~ msgid "Unknown (%04x)" #~ msgstr "䏿˜Ž (%04x)" #~ msgid "Could not find any driver for '%s'" #~ msgstr "'%s' 用ã®ãƒ‰ãƒ©ã‚¤ãƒãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #~ msgid "No additional information available." #~ msgstr "有効ãªè¿½åŠ æƒ…å ±ã¯ã‚りã¾ã›ã‚“。" #~ msgid "This camera does not support event handling." #~ msgstr "カメラã¯ã‚¤ãƒ™ãƒ³ãƒˆã®ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。" #~ msgid "" #~ "Could not append '%s' to folder '%s' because this file already exists." #~ msgstr "" #~ "ファイル '%s' ãŒæ—¢ã«å­˜åœ¨ã—ã¦ã„ã‚‹ã®ã§ãƒ•ォルダ '%s' ã«è¿½åŠ ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #~ msgid "Deleting '%s' from folder '%s'..." #~ msgstr "'%s' をフォルダ '%s' ã‹ã‚‰å‰Šé™¤ä¸­..." #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "'%s' をフォルダ '%s' ã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ä¸­..." #~ msgid "Camera Model (readonly)" #~ msgstr "カメラã®åž‹å¼ (読ã¿å–りã®ã¿)" #~ msgid "ISO speed" #~ msgstr "ISO スピード" #~ msgid "Flash mode" #~ msgstr "フラッシュ モード" #~ msgid "Date and Time (readonly)" #~ msgstr "æ—¥ä»˜ã¨æ™‚刻 (読ã¿å–りã®ã¿)" #~ msgid "Set camera date to PC date" #~ msgstr "ã‚«ãƒ¡ãƒ©ã®æ—¥ä»˜ã‚’ PC ã®æ—¥ä»˜ã«ã‚»ãƒƒãƒˆã—ã¾ã™" #~ msgid "Firmware revision (readonly)" #~ msgstr "ファームウェアã®ãƒªãƒ“ジョン (読ã¿å–りã®ã¿)" #~ msgid "Power (readonly)" #~ msgstr "é›»æº (読ã¿å–りã®ã¿)" #~ msgid "Resolution changed" #~ msgstr "è§£åƒåº¦ã‚’変更ã—ã¾ã—ãŸ" #~ msgid "Unsupported image type" #~ msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ç”»åƒã®ç¨®é¡ž" #~ msgid "Camera Time" #~ msgstr "ã‚«ãƒ¡ãƒ©ã®æ™‚刻" #, fuzzy #~ msgid "Set camera time to PC time" #~ msgstr "ã‚«ãƒ¡ãƒ©ã®æ—¥ä»˜ã‚’ PC ã®æ—¥ä»˜ã«ã‚»ãƒƒãƒˆã—ã¾ã™" #~ msgid "Canon Image Quality" #~ msgstr "Canon ç”»åƒã®å“質" #~ msgid "EOS ISO Speed" #~ msgstr "EOS ISO 速度" #~ msgid "EOS WhiteBalance" #~ msgstr "EOS ホワイトãƒãƒ©ãƒ³ã‚¹" #, fuzzy #~ msgid "EOS Exposure Compensation" #~ msgstr "露出度" #, fuzzy #~ msgid "EOS Shutter Speed" #~ msgstr "シャッター速度" #~ msgid "ISO Step" #~ msgstr "ISO ステップ" #~ msgid "Could not find folder '%s'." #~ msgstr "フォルダ '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚" #~ msgid "Folder '%s' does not contain a folder '%s'." #~ msgstr "フォルダ '%s' ã®ä¸­ã«ãƒ•ォルダ '%s' ãŒã‚りã¾ã›ã‚“。" #, fuzzy #~ msgid "" #~ "canon_usb_init: Unexpected return of %i bytes (expected %i) from \"get " #~ "picture abilities.\"" #~ msgstr "" #~ "canon_usb_lock_keys: 期待ã—ã¦ã„ãªã„返り値 %i ãƒã‚¤ãƒˆ (期待値 %i) ã‚’ \"get " #~ "picture abilities\" ã‹ã‚‰å—ã‘å–りã¾ã—ãŸ" #, fuzzy #~ msgid "" #~ "canon_usb_lock_keys: Unexpected return of %i bytes (expected %i) from " #~ "\"get picture abilities.\" We will continue." #~ msgstr "" #~ "canon_usb_lock_keys: 期待ã—ã¦ã„ãªã„返り値 %i ãƒã‚¤ãƒˆ (期待値 %i) ã‚’ \"get " #~ "picture abilities\" ã‹ã‚‰å—ã‘å–りã¾ã—ãŸ" #, fuzzy #~ msgid "" #~ "Download program for Casio QV cameras. Originally written for gphoto-0.4. " #~ "Adapted for gphoto2 by Lutz Mueller ." #~ msgstr "" #~ "Polaroid DC700 カメラã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒ»ãƒ—ログラムã§ã™ã€‚gPhoto-4.x å‘ã‘ã®ã‚ªãƒª" #~ "ジナルã®ä½œè€…㯠Ryan Lantzer ã§ã™ã€‚gPhoto2 ã¸ã®ãƒãƒ¼ãƒ†ã‚£" #~ "ング㯠Lutz Mueller ãŒæ‹…当ã—ã¾ã—ãŸã€‚" #~ msgid "Could not follow the link '%s' (%m)." #~ msgstr "リンク '%s' (%m) ã‚’å‚ç…§ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #~ msgid "Could not follow the link '%s' in '%s' (%m)." #~ msgstr "'%s' ('%s' ã®ä¸­ã«ã‚ã‚‹) (%m) ã®ãƒªãƒ³ã‚¯ã‚’å‚ç…§ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #~ msgid "Directory Browse" #~ msgstr "ディレクトリã®å‚ç…§" #~ msgid "View hidden directories" #~ msgstr "éš ã—ディレクトリ(.XXX)ã®è¡¨ç¤º" #, fuzzy #~ msgid "Unsupported port type: %d. This driver only works with USBcameras.\n" #~ msgstr "" #~ "サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ãƒãƒ¼ãƒˆã®ç¨®é¡ž: %d ã€ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã¯ USB カメラã§ã®ã¿å‹•作ã—" #~ "ã¾ã™ã€‘\n" #~ msgid " " #~ msgstr " " #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for KBGear JamCam v2.0 & v3.0 digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Reverse Engineering serial protocol をベースã«ã—ãŸ\n" #~ "KBGear JamCam v2.0 & v3.0 ディジタルカメラã®ã‚µãƒãƒ¼ãƒˆ\n" #~ "\n" #~ msgid "Self Timer (only next picture)" #~ msgstr "セルフタイマー (次ã®å†™çœŸã®ã¿)" #~ msgid "Day-lt" #~ msgstr "屋外" #~ msgid "There is nothing to summarize for this camera." #~ msgstr "ã“ã®ã‚«ãƒ¡ãƒ©ã«å¯¾ã™ã‚‹èª¬æ˜Žã¯ã‚りã¾ã›ã‚“。" #~ msgid "No manual" #~ msgstr "å–り扱ã„説明書ãªã—" #~ msgid "" #~ "Mars MR97310 camera.\n" #~ "There are %i photos in it. \n" #~ msgstr "" #~ "Mars MR97310 カメラ。\n" #~ "写真ã®åˆè¨ˆ = %i\n" #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for Panasonic Coolshot digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Reverse Engineering Serial プロトコルをベースã«ã—ãŸ\n" #~ "Panasonic 製 Coolshot ディジタルカメラã®ã‚µãƒãƒ¼ãƒˆæ‹…当。\n" #~ "\n" #~ msgid "Manual Not Implemented Yet" #~ msgstr "å–り扱ã„èª¬æ˜Žæ›¸ã¯æœªã å®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“。" #~ msgid "" #~ "PTP2 driver\n" #~ "(c)2001-2003 by Mariusz Woloszyn .\n" #~ "Enjoy!" #~ msgstr "" #~ "PTP2 ドライム(C) 2001-2003。\n" #~ "Mariusz Woloszyn æ° ãŒæ‹…当ã—ã¾ã—ãŸã€‚\n" #~ "Enjoy! ã—ã¦ä¸‹ã•ã„。" #~ msgid "Capture command completed, but no confirmation received" #~ msgstr "" #~ "キャプãƒãƒ£ãƒ»ã‚³ãƒžãƒ³ãƒ‰ãŒå®Œäº†ã—ã¾ã—ãŸãŒã€ç¢ºèªã‚¤ãƒ™ãƒ³ãƒˆã¯å—ã‘å–りã¾ã›ã‚“ã§ã—ãŸ" #~ msgid "Received event 0x%04x" #~ msgstr "å—ä¿¡ã—ãŸã‚¤ãƒ™ãƒ³ãƒˆ 0x%04x" #~ msgid "" #~ "Model: %s\n" #~ " device version: %s\n" #~ " serial number: %s\n" #~ "Vendor extension ID: 0x%08x\n" #~ "Vendor extension description: %s\n" #~ msgstr "" #~ "åž‹å¼: %s\n" #~ " デãƒã‚¤ã‚¹ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %s\n" #~ " シリアル番å·: %s\n" #~ "ãƒ™ãƒ³ãƒ€ã®æ‹¡å¼µ ID: 0x%08x\n" #~ "ãƒ™ãƒ³ãƒ€ã®æ‹¡å¼µæƒ…å ±: %s\n" #~ msgid "auto red eye" #~ msgstr "自動赤目対策" #, fuzzy #~ msgid "on red eye" #~ msgstr "赤目対策" #~ msgid "Macro Mode" #~ msgstr "マクロモード" #~ msgid "Number of values" #~ msgstr "å€¤ã®æ•°" #~ msgid "Current value" #~ msgstr "ç¾åœ¨ã®å€¤" #~ msgid "Date Time" #~ msgstr "æ—¥ä»˜ã¨æ™‚é–“" #~ msgid "ShutterSpeed" #~ msgstr "シャッター速度" #~ msgid "Real Image Width" #~ msgstr "実画åƒã®å¹…" #, fuzzy #~ msgid "Colour Mode" #~ msgstr "カラーモード" #, fuzzy #~ msgid "Exposure Bracketing Distance" #~ msgstr "露出補正モード" #, fuzzy #~ msgid "Incadescent" #~ msgstr "白熱ç¯" #~ msgid "%sCamera ID: %s\n" #~ msgstr "%sカメラID: %s\n" #~ msgid "Sorry, this function not implemented..." #~ msgstr "ã™ã¿ã¾ã›ã‚“ã€ã“ã®æ©Ÿèƒ½ã¯æœªã å®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“..." #~ msgid "Sorry, nothing to configure..." #~ msgstr "ã™ã¿ã¾ã›ã‚“ã€è¨­å®šã™ã‚‹ã‚‚ã®ã¯ã‚りã¾ã›ã‚“..." #~ msgid "Sorry, taking pictures is not implemented..." #~ msgstr "ã™ã¿ã¾ã›ã‚“ã€å†™çœŸã®æ’®å½±ã¯å®Ÿè£…ã•れã¦ã„ã¾ã›ã‚“..." #~ msgid "Couldn't open camera.\n" #~ msgstr "カメラをオープンã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n" #~ msgid "Error opening camera\n" #~ msgstr "カメラをオープンã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚\n" #~ msgid "Picture number is too large.\n" #~ msgstr "写真ã®ç•ªå·ãŒå¤§ãã™ãŽã¾ã™ã€‚\n" #~ msgid "" #~ "Sony DSC-F1 Digital Camera Support\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Based on the chotplay CLI interface from\n" #~ "Ken-ichi Hayashi\n" #~ "\n" #~ "This lib may not work. YMMV\n" #~ msgstr "" #~ "SONY DSC-F1 デジタル・カメラã®ã‚µãƒãƒ¼ãƒˆæ‹…当\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Kenichi Hayashi æ°ã‹ã‚‰ chotplay CLI \n" #~ "インタフェース部をæä¾›ã—ã¦è²°ã„ã¾ã—ãŸ\n" #~ "\n" #~ "ã“ã®ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã¯æ—¨ã動作ã—ãªã„ã‹ã‚‚。YMMV\n" #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for digital cameras with a sunplus spca50x chip based on several " #~ "other gphoto2 camlib modules and the information kindly provided by " #~ "Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \n" #~ "ã„ãã¤ã‹ã® gPhoto2 camlib モジュールをベースã«ã—㟠sunplus spca50x ãƒãƒƒãƒ—" #~ "ã‚’æ­è¼‰ã—ãŸãƒ‡ã‚£ã‚¸ã‚¿ãƒ«ãƒ»ã‚«ãƒ¡ãƒ©ã¨ Mustek 社ã‹ã‚‰æä¾›ã—ã¦é ‚ã„ãŸæƒ…報をサãƒãƒ¼" #~ "ト。\n" #~ "\n" #~ msgid "Could not open '%s'" #~ msgstr "'%s' ã‚’é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ" #~ msgid "Could not load required camera driver '%s'." #~ msgstr "指定ã—ãŸã‚«ãƒ¡ãƒ©ã®ãƒ‰ãƒ©ã‚¤ãƒ '%s' を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚" #~ msgid "Could not append folder '%s' as this folder already exists." #~ msgstr "フォルダ '%s' ãŒæ—¢ã«å­˜åœ¨ã—ã¦ã„ã‚‹ã®ã§è¿½åŠ ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #~ msgid "" #~ "Could not open '/proc/meminfo' for reading ('%m'). Make sure the proc " #~ "filesystem is mounted." #~ msgstr "" #~ "'/proc/meminfo' ã‚’ ('%m') を読ã¿è¾¼ã‚€ãŸã‚ã«é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸã€‚proc ファイル" #~ "システムãŒå­˜åœ¨ã™ã‚‹ã‹ç¢ºèªã—ã¦ä¸‹ã•ã„。" #~ msgid "An error occured while reading '/proc/meminfo' ('%m')." #~ msgstr "'/proc/meminfo' ('%m') ã®èª­ã¿è¾¼ã¿ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" #~ msgid "sysctl call failed ('%m')." #~ msgstr "システムコールã®å‘¼ã³å‡ºã—ã«å¤±æ•—ã—ã¾ã—㟠('%m')。" #~ msgid "sysconf call failed ('%m')." #~ msgstr "sysconf コールã®å‘¼ã³å‡ºã—ã«å¤±æ•—ã—ã¾ã—㟠('%m')。" #~ msgid "swapctl call failed ('%m')." #~ msgstr "swapctl コールã®å‘¼ã³å‡ºã—ã«å¤±æ•—ã—ã¾ã—㟠('%m')。" #~ msgid "" #~ "Step #2 of initialization failed for PowerShot camera! (returned %i, " #~ "expected %i) Camera not operational" #~ msgstr "" #~ "ステップ #2 ã§ PowerShot カメラã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—㟠(返り値 %i, 期待値 " #~ "%i)。カメラをæ“作ã§ãã¾ã›ã‚“ï¼" #~ msgid "" #~ "EOS Step #3 of initialization failed! (returned %i, expected %i) Camera " #~ "not operational" #~ msgstr "" #~ "ステップ #3 ã§ EOS ã®åˆæœŸåŒ–ã«å¤±æ•—ã—ã¾ã—㟠(返り値 %i, 期待値 %i)。カメラを" #~ "æ“作ã§ãã¾ã›ã‚“ï¼" #~ msgid "" #~ "For the A50, using 115200 may effectively be slower than using 57600\n" #~ "If you experience a lot of serial transmission errors, try to have your " #~ "computer as idle as possible\n" #~ " (i.e. no disk activity)\n" #~ msgstr "" #~ "A50 ã‚„ 115200 ã ã¨ 576000 よりもé…ããªã‚Šã¾ã™ã€‚\n" #~ "フォルダã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“。\n" #~ "ãŸãã•ã‚“ã®ãƒˆãƒ©ãƒ³ã‚¹ãƒŸãƒƒã‚·ãƒ§ãƒ³ãƒ»ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸå ´åˆã¯ã€ã‚¢ã‚¤ãƒ‰ãƒ«ä¸­ã®ã‚³ãƒ³" #~ "ピュータã§å¯èƒ½ãªé™ã‚Šå¾…ã£ã¦ã¿ã¦ä¸‹ã•ã„。\n" #~ "(ディスクアクセスã—ãªã„)\n" #~ msgid "Unsupported port type: %d.This driver only works with USBcameras.\n" #~ msgstr "" #~ "サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„ãƒãƒ¼ãƒˆã®ç¨®é¡ž: %d ã€ã“ã®ãƒ‰ãƒ©ã‚¤ãƒã¯ USB カメラã§ã®ã¿å‹•作ã—" #~ "ã¾ã™ã€‘\n" #, fuzzy #~ msgid "Incadesent" #~ msgstr "白熱ç¯" #, fuzzy #~ msgid "Could not find any driver for '%s' / '%s'" #~ msgstr "'%s' 用ã®ãƒ‰ãƒ©ã‚¤ãƒãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #~ msgid "Center" #~ msgstr "中央" #~ msgid "20 mm" #~ msgstr "20 mm" #, fuzzy #~ msgid "EOS Metering Mode" #~ msgstr "測光モード" #, fuzzy #~ msgid "Exposure Bracketing Number" #~ msgstr "露出補正モード" libgphoto2-2.5.9/po/ru.gmo0000644000175000001440000021275412623156275012311 00000000000000Þ•D<\$p0hq04Ú01F'1n1ÅŠ1OP2  3ª3¯3´3¹3¾3Â3Æ3Ê3Î3 Ó3 Þ3é3ì3ð3õ3û3þ344 4444 4)4,4/42454 84C4'K4 s4 ~4Š49“4Í4Ö4 Ý4ê4ï4 5 *585Q5d5|5 5(˜5Á5Ü5ï5 ó577&7 .7o<7¬7#Ë7ï7ô7ù7 8 &828 B8 N8Z8`8 e8 q8}88•8œ8±8OÀ8 9 9*9J9(^9@‡9È9ä9::):C:W:_:}:Œ:¢: ³:À:Ù:í:ý: ;!;3;<;K;R; X;c;r;„;š;°;Æ; Ø;ä; ø;<< #< -< 7<A<`<o<~<›<!µ<'×<ÿ<=:=Q=/m=<=<Ú=>(1>Z>v> ’>-³>0á>?'?F?b?{?k˜?@ @@ /@ ;@ G@U@ i@ÿv@vA…AŽA”A×™AqC„CC.®C ÝC êC÷CDD2DµIDªÿD,ªE×FçFûFG)G=GQGgG|G‘GªG¹G ÀGÊGáG<öG3HPHgHH™HµHÔHÚHâHèHþHI()IRI'fI ŽI1™IËIÔIïIJ%J7JNJ dJrJŒJ•J˜JJ¢J¥JªJ­JÀJ,ÅJòJ KKK.KU>K ”KžK²K·KNÎKL7LRLZL`L fL qLL$‘L¶LÇL"×LúLM M &M3M9M HMSMbM¼rM /Q˜f˜€˜š˜´˜ ̘Ù˜ù˜)™<™M™_™ q™&{™¢™!À™Dâ™]'š9…šA¿š6›38›-l›.š›\É›&œm¦œ.?CLƒ;Ð] ž{jžZæž)AŸ6kŸ3¢ŸSÖŸ3* o^  Πï "¡%¡<¡R¡i¡†¡Ð¦¡w£’£ª£¹£ZÊ£-%§#S§w§.§%¿§%å§# ¨ /¨.P¨'¨I§¨þñ©‹ðª|¬•¬)²¬*ܬ$­ ,­/M­.}­.¬­*Û­® ®2/®7b®*š®„Å®>J¯3‰¯E½¯7°8;°8t° ­°¸° Ͱ2Ú°0 ±1>±Pp±(Á±[ê± F²]Q²¯²À²'ݲA³G³!\³:~³¹³mÕ³ C´P´S´X´]´`´e´h´…´*Ž´¹´Ñ´ï´ µ#µ•8µε.൶"$¶‰G¶%Ѷ'÷¶· 3·=·L·!f·ˆ·?¢·â·ý·?¸*V¸¸'Џ²¸ ʸ%Õ¸!û¸!¹$?¹{d¹,à¿( À6À MÀZÀ.kÀ"šÀ/½À íÀ9Á(HÁqÁ €ÁŒÁ0¨Á~ÙÁ_Xú¸Ã¿sÄ?3ÅsÅvÅ ‹Å˜Å*©ÅÔÅAëÅ"-Æ'PÆ#xÆ(œÆeÅÆR+Ç~Ç!•Ç·Ç.ÒÇ3ÈZ5È&È&·È ÞÈ0ëÈɺ3ÉîÉóÉ:Ê´?Ê ôËèÎ&éΙÐGªÐòÐРѤÝтҕÒ@šÒ ÛÒüÒÓ,Ó5ÓSÓ-bÓ2Ó;ÃÓ5ÿÓ5ÔNÔ>eÔ&¤ÔFËÔ ÕÕ27ÕHjÕ³Õ ÆÕ ÑÕhÞÕGÖ^ZÖ ¹Ö ÃÖÏÖ6ëÖ"×:×ÝB×n Ø ØKØýéØçÙÚÚ+ÚFÚ`ÚyeÚßÚuòÚ€hÝéÞ#ðÞ2ß;Gß_ƒßãßà"à#Aà1eà—àžà °àºàÐàáà0öà/'á0WáQˆáÚáãáèáïáøáâ6â™?âÙâ!ñâã%3ãNYãO¨ãøã* ä6ä6:äéqäa[å½åÐåãå!öå'æ)@æjææ)•æ¿æÛæ ûæç>çP\çE­ç(óçKèEhèn®èé7éVésé ˆé0“é&Äé ëéøéê(ê;7êsê ˆê©ê-¾ê*ìê¦ëÕ¾ë”ìÙí\îíKï8^ï—ï ·ïØï òï&ýï $ð/ðs@ð´ðrÐðCñ,[ñ1ˆñ1ºñ›ìñ ˆò-“òZÁô÷/øGù;PùŒù6ŸùŠÖùaú(rú#›ú¿ú-Öú û#%û“Iû[Ýü99þƒsÿI÷ÿAZ_]ºoˆàŽ$o”L°Dý#Bf„”M©#÷$,@#m(‘'º%â0}9·(Ô*ý( B: (}  ¦ ´ %Æ ì   ' = W m ‰ "¦ É ä  é  ö m r 2‰ ¼ ›Ô py™?¹4ù.=ˆLnÕD$^ ƒ§°·Ìäíô *> Vw ” ŸJ¬÷! -,‘Z*6ªS~æ/]D  Ù£²Ð±¡Nû.„1ÊOG"éb4J¢)L¶øÞr˜tH©µ#Øh¨†©Î5 Ç®õAg þšN”c¡@Ýaj(ô•Ï%›Z¬ ¹ì@KrzÉi»ë6à,Ñ£,.Q³’„`üq8VÈ_xy°Žumî>=žð^˜ØŒ! º2Ž÷4Ì óeBž"!ÒwÙd¶ÉÀƒ)“#‚…%ª 35Io$Ûi–Ã.Âv¼‰7%†CF8;!Öùgî·ÒE+] (òç¾ Õ ‹'…1u¯ÚnYß×F>E¨*8ò:µÓ&•êÓ¿CðeÞfá+\lb[ëM/Ú€;{‚X2I-A¯Tþ°zÐï_å õÂáäåç7R‡€ 0Ý2ÍUÀtöKÈ|Ëú‘?äÜýˆBó ^Ì`"÷9íO¸L¼üߢAw6‘YBéÊvÆH)'4cÍ7‡¬:Ʀ™ÿ/Œ#ê¥CŸ D³j G-¿‰®R@¤—ym1$l ›Pè;s¸&«<º0 íúñãxfƒ«ÜÅ>»Ï*ö{²ˆd|ÁâZ+×ìŸDš´$Š-\5&SkÿïMÁ“­9­’(—¦ Ç3Îæ¤QñWÔ[aô§}Š<”â~k¥Û9Ñ?·øÄ=¾XűW Vã™pýTsJqœUà=çÖ?ùnh}½Õ–3<¹ÄœÔ:‹ûP˽'p´,è0o Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Drive %s %11s bytes total %11s bytes available (battery is %d%% full) Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d%s (host time %s%i seconds)(Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*-0.5-1.0-1.5-2.00.00.51.01.51.6x1152 x 8641280 x 9601x2.02.5x29 mm2x34 mm3x41 mm4x51 mm58 mm5x640 x 4806x7x8x9xACAC adapterAE-lockAdc65 Benjamin Moos Album nameAnti-redeyeAnywhereAox generic driver Theodore Kilgore ApertureArtistAssist LightAutoAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off TimeAuto Power Off (minutes)Auto exposure lockAuto, red-eye reductionAutofocus error.Automatic Automatic exposure adjustment on previewAutomatic flash on captureAvailable memory: B/WBarbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery LevelBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery exhausted, camera off.Battery status: %s, AC Adapter: %s BeepBestBit rate %ld is not supported.Black & WhiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlueBrightness+Brightness-Bulb Exposure TimeBusyCameraCamera ConfigurationCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ModelCamera OwnerCamera and Driver ConfigurationCamera has memory. Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera power save (seconds)Camera rejected the command.Camera reset itself.Camera unavailableCamera was already activeCamera was woken upCaptureCapture type is not supportedCard Status: Card is not formattedCard is not openCard is openCard is write protected.Card not supported.Center-WeightedChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorCloudyColorColor ModeColor SettingsColor TemperatureCommunication error 1Communication error 2Communication error 3CompactFlash CardCompressionCompression SettingConfigurationConnected to cameraContrastContrast+Contrast-CopyrightCopyright (max. 20 characters)Copyright InfoCorrupted dataCould not apply USB settingsCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file.Could not detect any cameraCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get register %i. Please contact %s.Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Couldn't read from file "%s"Creative PC-CAM 300 Authors: Till Adam and: Miah Gregory CustomDD/MM/YYYYData has been corrupted.Date & TimeDate FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDay/Month/YearDaylightDebugDeepDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. Deleting image %s.Detected a "%s" aka "%s"Detected a '%s'.Digita Johannes Erdfelt Digital ZoomDigital zoomDirectory existsDirectory not foundDisconnecting camera.Do not display TV menuDownload program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy to port your driver on this cam! Download program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...DriverDual IrisEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.EmptyEnglishErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationEverywhereExecute predefined command with parameter values.ExposureExposure Bias CompensationExposure CompensationExposure Index (film speed ISO)Exposure MeteringExposure Metering ModeExposure Program ModeExposure TimeExposure level on previewF-NumberF2F2.3F2.8F4F5.6F8FLASH: Files: %d FileFile '%s' could not be found in folder '%s'.File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.FineFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware version: %d.%02d FisheyeFixedFlashFlash ModeFlash SettingFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFluorescentFocal LengthFocusFocus DistanceFocus ModeFocusing PointFocusing error.For cameras with S&Q Technologies chip. Should work with gtkam. Photos will be saved in PPM format. All known S&Q cameras have two resolution settings. What those are, will depend on your particular camera. A few of these cameras allow deletion of all photos. Most do not. Uploading of data to the camera is not supported. The photo compression mode found on many of the S&Q cameras is supported, to some extent. If present on the camera, video clips are seen as subfolders. Gtkam will download these separately. When clips are present on the camera, there is a little triangle before the name of the camera. If no folders are listed, click on the little triangle to make them appear. Click on a folder to enter it and see the frames in it, or to download them. The frames will be downloaded as separate photos, with special names which specify from which clip they came. Thus, you may freely choose to save clip frames in separate directories. or not. Force Flash Frames Taken : %4d FrenchFullGermanGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...GreenHighHigh (1152 x 872)High (good quality)Host Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?I/O in progressIDISO SpeedIconsIdleIllegal parameter.ImageImage %s is delete protected.Image & SoundImage QualityImage SizeImage protected.Image type %d is not supported by this camera !Image type is not supportedIn useIncandescentInfinityInfinity/Fish-eyeInitializing CameraInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).InvalidIris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JPEGJapaneseKeep filename on uploadKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Shut Off (seconds)LCD BrightnessLCD ModeLED ModeLanguageLens ModeLightLight too dark.List all filesListing files in '%s'...Listing folders in '%s'...LocalLocalizationLocalization file too long!Looking for camera ...Looks like a modem, not a cameraLowLow (576 x 436)Low (best quality)Lower case letters in %s not allowed.MM/DD/YYYYMacroManualMars MR97310 camera library Theodore Kilgore MatrixMatthew G. Martin Based on fujiplay by Thierry Bousch MaximalMediumMedium (1152 x 872)Medium (better quality)Metering ModeMinimalMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Model: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s MonitorMonth/Day/YearNOT RECOGNIZEDNTSCName "%s" from camera does not match any known cameraNextNikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. NoNo EXIF data available for %s.No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card present.No memory card presentNo reason availableNo response from cameraNoneNone selectedNormalNormal Not FullNot usedNumber of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOffOfficeOnOn, red-eye reductionOnly root folder is supported - you requested a file listing for folder '%s'.Operation ModeOperation cancelledOther SettingsOut of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner name changedPALPTP Parameter Not SupportedPanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk Parameter 1Parameter 2Parameter 3Path not absolutePersistent SettingsPicture SettingsPicturesPlayPlay modePort speedPower SavingPresetPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProduct ID: %02x%02x Prohibit Flash RGB GainReadyReceived unexpected responseReceiving data...RecordRecord ModeRecord modeRedRed-eye ReductionRemoteResetting protocol...ResolutionResolution SwitchResolution plus SizeRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. SDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Self TimerSelf Timer (next picture only)Self Timer TimeSending data...Sensor ID: %d.%d SepiaSequence 9SharpSharpnessSiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SingleSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . SkylightSlide Show IntervalSlow SyncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SoftSome notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to the gphoto developer mailing list (in English) Sony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners SoundSoundvision Driver Vince Weaver SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSpotSpot Metering ModeSpot-AFStandardSwitching Camera OffSystem error.TV Output FormatThe JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The filesystem does not support upload of files.The filesystem doesn't support getting filesThe filesystem doesn't support setting file informationThere is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.Thumbnail size: %d Time formatToshiba David Hogue Toshiba pdr-m11 driver. Trying to contact camera...TungstenUI LanguageUNIX TimeUnknownUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown modelUnknown model "%s"Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Uploading file...Uploading image...Uploading image: %s.Uploading...User canceled downloadVendor ID: %02x%02x Version: Version: %s Volatile SettingsWaiting...WeakWhite BalanceWhite BoardWhite balanceWhite boardWhite levelWideWrite-protectedYear/Month/DayYesYour USB camera has a S&Q chipset. The total number of pictures taken is %i Some of these could be clips containing several frames Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i ZoomZoom (in millimeters)a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autobatterycolorcoolshot library vcould not change owner namecould not set timeexternallyfinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)in fill modeinternallylow (320x240)menunonenormalnot available: %soffonon batteryplaypower OKpower badread onlyreadwritereadyrecordsq905 generic driver Theodore Kilgore superfinetime setunexpected datatype %iwarning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2 2.4.13 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2012-03-30 14:41+0200 Last-Translator: Pavel Maryanov Language-Team: Russian Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Определение фотоаппарата: Модель: %s Владелец: %s Питание: %s Карта памÑти: %s ВремÑ: %s ДиÑк %s %11s байт вÑего %11s байт Ñвободно (аккумулÑтор зарÑжен на %d%%) Ð’Ñего памÑти %8d байт. Свободно памÑти %8d байт. ЧиÑло файлов: %d%s (Ð²Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð° %s%i Ñекунд)Библиотека Ð´Ð»Ñ (Traveler) SX330z (И других фотоаппаратов Aldi). Также должны работать аппараты таких производителей, как Jenoptik, Skanhex, Maginon. Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках и отзывы шлите по адреÑу: Dominik Kuhlen * ЧаÑто артефакты на изображениÑÑ… или Ñбои передачи данных возникают из-за недоÑтаточного зарÑда аккумулÑтора. * Сделанные Ñти аппаратом по удалённой команде Ñнимки хранÑÑ‚ÑÑ Ð²Ð¾ временном ОЗУ, и не запиÑываютÑÑ Ð½Ð° карту памÑти. * Выдержка при Ñъёмке фотографий может быть задана вручную или определÑтьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки. * Пока что качеÑтво изображений уÑтупает возможному. *ÐЕИЗВЕСТÐО*-0,5-1,0-1,5-2,00,00,51,01,51,6x1152 x 8641280 x 9601x2,02,5x29 мм2x34 мм3x41 мм4x51 мм58 мм5x640 x 4806x7x8x9xБлок питаниÑблок питаниÑФикÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸Adc65 Benjamin Moos Ðазвание альбомаПротив краÑных глазГде угодноБазовый драйвер Aox Theodore Kilgore ДиафрагмаÐвторВÑпомогательное оÑвещениеÐвтоÐвтовыключение (автономн.) (в Ñекундах)ÐвтоматичеÑкое отключение (компьютер) (в Ñекундах)Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸ÑÐвтоматичеÑкое отключение (минуты)Запоминание наÑтроек выдержкиÐвто, уменьшение краÑноты глазОшибка автофокуÑировкиÐвтомат ÐвтоматичеÑÐºÐ°Ñ Ð½Ð°Ñтройка выдержки во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ проÑмотраÐвтовÑпышка при ÑъёмкеДоÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð¿Ð°Ð¼Ñть:Ч/БBarbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Формат изображений иÑÑледовал: Jeff Laing Реализовано Ð±Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ð¸ доÑтупной в Интернете Ñ ÑоглаÑÐ¸Ñ Vision.ЗарÑд аккумулÑтора недоÑтаточен.ЗарÑд аккумулÑтора в норме.ÐккумулÑторЗарÑдка аккумулÑтораЗарÑдка аккумулÑтора: %s ЧиÑло изображений: %d Минимальный оÑтавшийÑÑ Ð¾Ð±ÑŠÑ‘Ð¼: %d ЗанÑто: %s ЗарÑдка вÑпышки: %s СоÑтоÑние объектива: ÐкуумулÑтор разрÑжен, фотоаппарат выключен.СоÑтоÑние аккумулÑтора: %s, Блок питаниÑ: %s Ð¡Ð¸Ð³Ð½Ð°Ð»Ð›ÑƒÑ‡ÑˆÐµÐµÐ‘Ð¸Ñ‚Ð¾Ð²Ð°Ñ ÑкороÑть %ld не поддерживаетÑÑ.Чёрно-Ð±ÐµÐ»Ñ‹Ð¹Ð§Ñ‘Ñ€Ð½Ð°Ñ Ð´Ð¾ÑкаЧёрно-Ð±ÐµÐ»Ñ‹Ð¹Ð§Ñ‘Ñ€Ð½Ð°Ñ Ð´Ð¾ÑкаЧёрный/белыйМигатьСинийЯркоÑть+ЯркоÑть-ПродолжительноÑть Ñверхдлинной выдержкиЗанÑÑ‚Ð¾Ð¤Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°ID фотоаппарата: %s Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° Kodak DC215 Zoom. Michael Koltan Модель фотоаппаратаВладелец Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° и драйвера Фотоаппарат имеет памÑть. Фотоаппарат не готов, %sФотоаппарат не готов, неÑколько запроÑов идентификации завершилиÑÑŒ ошибкой: %sÐ’Ñ€ÐµÐ¼Ñ Ð´Ð¾ перехода фотоаппарата в ÑпÑщий режим (Ñекунд)Фотоаппарат отклонил команду.Самопроизвольный ÑÐ±Ñ€Ð¾Ñ ÑоÑтоÑÐ½Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°.Фотоаппарат недоÑтупенФотоаппарат уже был активенФотоаппарат выведен из ÑпÑщего режимаСъёмкаÐеподдерживаемый метод ÑъёмкиСоÑтоÑние карты: Карта памÑти не отформатированаКарта памÑти не открытаКарта памÑти вынутаКарта памÑти защищена от запиÑиÐÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð° памÑтиЦентрально-взвешенныйИзменение ÑкороÑти... подождите...ТекÑÑ‚Character & SoundЗарÑдкаОшибка контрольной ÑуммыОблачноÑтьЦветРежим цветаÐаÑтройки Ñ†Ð²ÐµÑ‚Ð°Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°ÐžÑˆÐ¸Ð±ÐºÐ° ÑвÑзи 1Ошибка ÑвÑзи 2Ошибка ÑвÑзи 3Карта CompactFlashСжатиеПараметры ÑжатиÑКонфигурациÑФотоаппарат подключенКонтраÑтКонтраÑÑ‚+КонтраÑÑ‚-CopyrightCopyright (макÑ.. 20 знаков)Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ CopyrightДанные поврежденыÐевозможно применить конфигурацию USBÐевозможно уÑтановить Ñоединение Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼.Ðевозможно Ñоздать каталог \DCIM.Ðевозможно Ñоздать целевой каталогÐевозможно Ñоздать каталог %s.Ðевозможно Ñоздать каталог.Ðевозможно удалить файл.Фотоаппарат не обнаруженÐевозможно уÑтановить Ñоединение Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼Ðевозможно получить миниатюру JPEG: Данные не ÑоответÑтвуют формату JFIFÐевозможно получить миниатюру JPEG: ОтÑутÑтвует начало/конецÐевозможно найти файл '%s'.Ðе найдены данные локализации в '%s'Ðевозможно получить информацию о диÑке: %sÐевозможно получить Ð¸Ð¼Ñ Ð´Ð¸Ñка: %sÐевозможно получить букву уÑтройÑтва карты памÑтиÐевозможно получить значение региÑтра %i. ПожалуйÑта, ÑвÑжитеÑÑŒ Ñ %s.Ðевозможно загрузить драйвер фотоаппарата '%s' (%s).Ðевозможно открыть '%s'.Ðевозможно удалить каталог %s.Ðевозможно удалить каталог.Ðевозможно ÑброÑить ÑоÑтоÑние фотоаппарата. Ðевозможно прочеÑть файл "%s"Creative PC-CAM 300 Ðвторы: Till Adam и: Miah Gregory ПользовательÑкийДД/ММ/ГГГГДанные повреждены.Дата и времÑФормат датыДата и времÑДата и Ð²Ñ€ÐµÐ¼Ñ (GMT)Отображение датыДата: %i/%02i/%02i %02i:%02i:%02i Сделано Ñнимков: %i ОÑталоÑÑŒ Ñнимков: %i ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹: %s СкороÑть: %s ПамÑть: %i мегабайт Режим фотоаппарата: %s Уровень качеÑтва: %s Параметры вÑпышки: %s ИнформациÑ: %s Таймер: %s ЖК: %s ÐвтоматичеÑкое выключение: %i минут ИÑточник питаниÑ: %sДень/МеÑÑц/ГодДневной ÑветОтладкаГлубокийСтандартный драйвер sierra: Этот драйвер sierra иÑпользуетÑÑ Ð¿Ð¾ умолчанию. Он должен поддерживать копирование изображений и проÑмотр файлов в памÑти фотоаппарата. ÐаÑтройки фотоаппарата (или предпочтениÑ) оÑнованы на Olympus 3040 и Ñкорее вÑего неполны. ЕÑли вы можете подтвердить, что ÑпиÑок наÑтроек вашего аппарата полон или Ñможете добавить Ñвой код Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ вÑех имеющихÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð², напишите, пожа- луйÑта в ÑпиÑок раÑÑылки Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð². УдалÑетÑÑ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ %s.Обнаружен "%s" или "%s"Обнаружен '%s'.Digita Johannes Erdfelt Цифровое увеличениеЦифровое увеличениеКаталог ÑущеÑтвуетКаталог не найденОтключение фотоаппарата.Ðе показывать ТВ менюПрограмма ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñнимков Ð´Ð»Ñ Digital Dream Enigma 1.3. от , Ñделана на оÑнове драйвера spca50x.СпаÑибо авторам spca50x! Ðдаптировать ваш драйвер Ð´Ð»Ñ Ñтого аппарата было нетрудно! Программа ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹ Ð´Ð»Ñ Polaroid DC700. Первоначально напиÑана - Ryan Lantzer Ð´Ð»Ñ gphoto-4.x. ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ gphoto2 - Lutz Mueller .Программа ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñнимков Ð´Ð»Ñ Ð½ÐµÑкольких моделей PolaroidПервоначальный автор - Peter Desnoyers , Ð°Ð´Ð°Ð¿Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ gphoto2 - Nathan Stenzel и Lutz Mueller . ТеÑтирование Polaroid 640SE - Michael Golden .КопируетÑÑ %s.КопируетÑÑ '%s'...КопируетÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ EXIF...КопируетÑÑ Ð·Ð²ÑƒÐºÐ¾Ð¿Ð¸ÑÑŒ...КопируютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ...КопируетÑÑ Ñ„Ð°Ð¹Ð»...КопируетÑÑ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ %s.КопируетÑÑ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ...КопируетÑÑ Ð²Ð¸Ð´ÐµÐ¾Ð·Ð°Ð¿Ð¸ÑÑŒ...КопируетÑÑ Ð¼Ð¸Ð½Ð¸Ð°Ñ‚ÑŽÑ€Ð°...Копирование...Ð”Ñ€Ð°Ð¹Ð²ÐµÑ€Ð”Ð²Ð¾Ð¹Ð½Ð°Ñ Ð¸Ñ€Ð¸ÑÐ¾Ð²Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°ÐžÑˆÐ¸Ð±ÐºÐ° контрольной Ñуммы ППЗУОШИБКÐ: %d Ñлишком великОШИБКÐ: обнаружены признаки неиÑправимой ошибки. Ðевозможно продолжатьОШИБКÐ: неверный формат ÑообщениÑОШИБКÐ: наÑлоение ÑообщенийОШИБКÐ: нарушение поÑледовательноÑтиОШИБКÐ: неожиданное ÑообщениеОШИБКÐ: неожиданное Ñообщение2ОШИБКÐ: неожиданный тип пакетаПуÑтоÐнглийÑкийОшибкаОшибка захвата изображениÑОшибка Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑкороÑтиОшибка Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑкороÑти.Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑвÑзанного файла миниатюрыОшибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°ÐžÑˆÐ¸Ð±ÐºÐ° Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñигнала ACK во Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸Ð’ÐµÐ·Ð´ÐµÐ’Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ предопределённую команду Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸.ВыдержкаЭкÑпокоррекциÑКомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸Ð˜Ð½Ð´ÐµÐºÑ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸ (ISO ÑкороÑть плёнки)ЭкÑпозамерРежим ÑкÑпозамераРежим программируемой Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸Ð”Ð»Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñть выдержки во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ проÑмотраЧиÑло FF2F2,3F2,8F4F5,6F8ППЗУ: Файлов: %d ФайлФайла '%s' нет в папке '%s'.Сжатие файлаФайл ÑущеÑтвуетФайл не найденФайл защищен.РазрешениеРазмер файла ÑоÑтавлÑет %ld байт. МакÑимально возможный размер Ð´Ð»Ñ Ð·Ð°ÐºÐ°Ñ‡ÐºÐ¸: %i байт.Тип файлаЗакачка файла не удалаÑÑŒ.УлучшенныйВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %8sВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %8s ИзображениÑ: %i Ð’Ñего памÑти: %iкб Свободно памÑти: %iкб ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %d.%d ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %d.%02d Рыбий глазФикÑ.Ð’ÑпышкаРежим вÑпышкиПараметры вÑпышкиВÑпышка : ÐвтоВÑпышка: Ðвто (Против краÑных глаз)Ð’Ñпышка : Выкл.Ð’Ñпышка : Вкл.Ð’Ñпышка : Вкл. (Против краÑных глаз)Ð’Ñпышка : не определеноFlashPixФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°Ð”Ð»Ð¸Ð½Ð° фокуÑаФокуÑФокуÑное раÑÑтоÑниеРежим фокуÑировкиТочка фокуÑировкиОшибка фокуÑировки.Ð”Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð² Ñ Ð¼Ð¸ÐºÑ€Ð¾Ñхемой S&Q Technologies. Работает Ñ gtkam. Снимки ÑохранÑÑŽÑ‚ÑÑ Ð² формате PPM. Ð’Ñе извеÑтные аппараты S&Q имеют два разрешениÑ. Каковы они, завиÑит от конкретной модели. Ðекоторые из Ñтих·фотоаппаратов позволÑÑŽÑ‚ удалÑть любые Ñнимки, но большинÑтво·-·нет. Закачка данных в памÑть не поддер- живаетÑÑ.·Режим·ÑжатиÑ, имеющийÑÑ Ñƒ многих аппаратов S&Q·отчаÑти·поддерживаетÑÑ. ЕÑли фотоаппарат позволÑет, видеозапиÑи предÑтавлÑÑŽÑ‚ÑÑ. в виде подкаталогов. Gtkam копирует их раздельно.При наличии видеозапиÑей перед названием аппарата поÑвлÑетÑÑ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ð¹ треугольник. ЕÑли в ÑпиÑке нет папок, щёлкните на треугольнике, чтобы отобразить их. Щёлкните папку, чтобы войти в неё и увидеть или копировать кадры. Кадры извлекаютÑÑ ÐºÐ°Ðº отдельные изображениÑ, имена которых Ñообщают, к какой видеопоÑледовательноÑти они отноÑÑÑ‚ÑÑ. Таким образом можно выбрать, ÑохранÑть ли кадры в отдельных каталогах или нет. ÐŸÑ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð²Ñпышка Сделано Ñнимков : %4d ФранцузÑкийПолнаÑÐемецкийПолучение конфигурации...Получение данных...Получение ÑпиÑка файлов...Получение файла...Получение Ñведений о %i файлах...Получение миниатюры...ЗелёныйВыÑок.выÑокое (1152 x 872)выÑокое (хорошее качеÑтво)Режим работы: %s ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸: %s Данные выдержки: %d Дата указана: %s Дата: %d/%02d/%02d %02d:%02d:%02d Задержка ÑпуÑка: %s Уровень качеÑтва: %s Режим воÑпроизведениÑ/запиÑи: %s ID карты указан: %s ID карты: %d Режим вÑпышки: Ð’Ñ€ÐµÐ¼Ñ Ð´Ð¾ перехода компьютера в ÑпÑщий режим (Ñекунд)Сколько времени пройдёт до автоматичеÑкого Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°,когда он подключён к компьютеру?Сколько времени пройдёт до автоматичеÑкого Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°,когда он не подключён к компьютеру?ВыполнÑетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°-выводаIDСкороÑть ISOЗначкиСвободноÐедопуÑтимый параметр:ИзображениеИзображение %s защищено от удалениÑ.Изображение и звукКачеÑтво изображениÑРазмер изображениÑИзображение защищено.Формат Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ %d не поддерживаетÑÑ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼ !Данный формат Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ поддерживаетÑÑПодÑоединёнЛампа накаливаниÑБеÑконечноÑтьБеÑконечноÑть/Рыбий Ð³Ð»Ð°Ð·Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°Ð’Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° 1 в функции get_file_func() (%s Ñтрока %i)ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° (1).ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° (2).ОшибкаОшибка ириÑовой диафрагмыИтальÑнÑкийJD11 Marcus Meissner Драйвер фотоаппарата Jenoptik JD11. Ð”Ð»Ñ Ð¸ÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ð° применÑлиÑÑŒ WINE и IDA.JPEGЯпонÑкийСохранить Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° при закачкеИзвеÑтные проблемы: 1. ЕÑли Kodak DC3200 не получает команд в течение 10 Ñекунд, Произойдёт тайм-аут и потребуетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ. ЕÑли аппарат переÑтаёт реагировать, проÑто заново выберите его. При Ñтом произойдёт Ð½Ð¾Ð²Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ.ИзвеÑтные проблемы: При возникновении ошибок передачи данных выполните ÑÐ±Ñ€Ð¾Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° и перезапуÑтите программу. Драйвер пока не может ÑамоÑтоÑтельно выходить из таких положений, оÑобенно, еÑли проблема возникает при ÑкороÑÑ‚ÑÑ… больших чем 9600 и аппарат не выключаетÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ñтью.Библиотека поддержки Kodak DC120 Scott Fritzinger Библиотека Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼ Kodak DC120. (по многочиÑленным требованиÑм).Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° Kodak DC240 Scott Fritzinger и Hubert Figuiere Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð² Kodak DC240, DC280, DC3400 и DC5000. Обновлено и перепиÑано Ð´Ð»Ñ gPhoto2.Драйвер Kodak DC3200 Donn Morrison ВопроÑÑ‹ и отзывы принимаютÑÑ Ñ Ð±Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€Ð½Ð¾Ñтью.Драйвер Kodak EZ200 Bucas Jean-Francois ÐаÑтройка KonicaБиблиотека Konica Q-M150 Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Поддержка французÑкой верÑии Konica Q-M150.Библиотека Konica Lutz Mueller Поддержка вÑех аппаратов Konica и некоторых моделей HP.КорейÑкийЖКÐвтоматичеÑкое отключение ЖК (Ñек.)ЯркоÑть ЖК-ÑкранаРежим ЖК ÑкранаСветодиодЯзыкРежим объективаСветлыйÐедоÑтаточное оÑвещениеПоказатьÑпиÑок вÑех файловСоÑтавление ÑпиÑка файлов в '%s'...Получение ÑпиÑка папок в '%s'...ПодключённыйЛокализациÑСлишком длинный файл локализации!ПоиÑк фотоаппарата...Похоже, что Ñто модем, а не фотоаппаратÐизк.выÑокое (576 x 436)Ñлабое (наилучшее качеÑтво)ÐÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñтрочные буквы в %s.ММ/ДД/ГГГГМакроРучнойБиблиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° Mars MR97310 Theodore Kilgore МатричныйMatthew G. Martin Ðа оÑнове fujiplay от Thierry Bousch МакÑ.Средн.Ñреднее (1152 x 872)Ñреднее (повышенное качеÑтво)Режим замераМин.Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° Minolta Dimage V %s Gus Hartmann ОÑобо благодарю фирму Minolta за предоÑтавленные Ñпецификации.Модель: Minolta Dimage V (%s) ВерÑÐ¸Ñ ÑƒÑтройÑтва: %s ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %s Модель:Модель: %s ПамÑть: %d байт(ов) из %d доÑтупныхМодель: %s Серийный номер: %s, ВерÑÐ¸Ñ ÑƒÑтройÑтва: %i.%i ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹: %i.%i ВерÑÐ¸Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑтичеÑкой программы: %i.%i Ðазвание: %s, Производитель: %s Модель: %x, %x, %x, %xМодель: Kodak %s МониторМеÑÑц/День/ГодÐЕ РÐСПОЗÐÐÐОNTSCСообщаемого фооаппаратом Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ "%s" нет Ñреди извеÑтных моделейСледующийNikon Coolpix 880: ÐаÑтройка фотоаппарата (предпочтениÑ): ОптичеÑкое приближение работает неправильно. Ðе вÑе параметры наÑтройки можно как Ñледует читать и изменÑть например, Ñто отноÑитÑÑ Ðº тонкой наÑтройке баланÑа белого и наÑтройкам Ñзыка. Переведите аппарат в режим 'M', еÑли хотите задать ÑкороÑть затвора. Nikon Coolpix 995: Ðабор параметров наÑтройки Ñтого аппарата неполон, напишите в ÑпиÑок раÑÑылки разработчиков gphoto, еÑли хотите внеÑти поправки·в·Ñтот·драйвер. Копирование Ñнимков должно работать верно. ÐетÐет данных EXIF Ð´Ð»Ñ %s.Ðет ответа от фотоаппарата.Ðе найден файл звукозапиÑи Ð´Ð»Ñ %sРуководÑтво Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° недоÑтупно. Ðет карты памÑтиÐет карты памÑти.Ðет карты памÑтиПричина неизвеÑтнаÐет ответа от фотоаппаратаÐетÐе выбранÐорм.Ðормальный ÐеполнаÑОтÑоединёнКоличеÑтво изображений: %d КоличеÑтво изображений: %dКоличеÑтво изображений: %d КоличеÑтво изображений: %i ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %sВЫКЛОКВКЛВыклОфиÑВклВкл, уменьшение краÑноты глазПоддерживаетÑÑ Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в корневую папку - запрошен ÑпиÑок файлов папки '%s'.Режим работыДейÑтвие отмененоПрочие параметрыÐедоÑтаточно памÑтиÐедоÑтаточно памÑти: необходимо %d байт(ов).ÐедоÑтаточно памÑти: необходимо %ld байт(ов).Ð¡Ð¾Ð»Ð½ÐµÑ‡Ð½Ñ‹Ð¹Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð° измененоPALPTP Параметр не поддерживаетÑÑБиблиотека gPhoto Ð´Ð»Ñ Panasonic DC1000 Mariusz Zynel ОÑнована на программе Ð´Ð»Ñ dc1000, напиÑанной Fredrik Roubert и Galen Brooks .Драйвер Panasonic PV-L859-K/PV-L779-K Palmcorder Andrew Selkirk Параметр 1Параметр 2Параметр 3ÐеабÑолютный путьПоÑтоÑнные наÑтройкиÐаÑтройки изображениÑИзображениÑВоÑпроизв.Режим воÑпроизведениÑСкороÑть Ð¿Ð¾Ñ€Ñ‚Ð°Ð­ÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ ÑнергииШаблонПредыдущийПроблема ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÑПроблема Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñведений об изображенииПроблема Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñла изображенийОшибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¿Ð¾Ñ€Ñ‚Ð°ÐžÑˆÐ¸Ð±ÐºÐ° Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ ÐºÐ°Ñ€Ñ‚Ñ‹ памÑтиОшибка ÑброÑа ÑоÑтоÑÐ½Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°ÐŸÑ€Ð¾Ð±Ð»ÐµÐ¼Ð° уÑтановки ÑкороÑти обмена данными Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼ÐžÑˆÐ¸Ð±ÐºÐ° ÑъёмкиID продукта: %02x%02x Запрет вÑпышки УÑиление RGBГотовПолучен неожиданный ответПринимаютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ...ЗапиÑьРежим запиÑиРежим запиÑиКраÑныйУменьшение Ñффекта краÑных глазÐÐ²Ñ‚Ð¾Ð½Ð¾Ð¼Ð½Ñ‹Ð¹Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ð°...РазрешениеПереключение разрешениÑРазрешение Ð¿Ð»ÑŽÑ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð”Ñ€Ð°Ð¹Ð²ÐµÑ€ Ricoh / Philips Lutz Mueller , Martin Fischer , на оÑнове драйвера от Bob Paauwe Ricoh Caplio G3. Marcus Meissner ИÑÑледование протокола проведено Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ USB Snoopy, декомпилÑции прошивки и интуиции. SDRAM: Файлов: %d Изображений: %4d ВидеозапиÑей: %4d ЗанÑто: %8d Свободно: %8d STV0674 Vincent Sanders Драйвер Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð² Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑором STV0674. Ð”Ð»Ñ Ð¸ÑÑледование протокола иÑпользовалÑÑ SnoopyPro STV0680 Adam Harrison Драйвер Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑором STV0680. ИÑÑледование протокола выполнено Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ CommLite Beta 5 Carsten Weinholz РаÑширено Ð´Ð»Ñ Aiptek PenCam и других двурежимных USB фотоаппаратов STM.ÐвтоÑпуÑкÐвтоÑпуÑк (Ñлед. Ñнимок только)Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾ÑпуÑкаПередача данных...ID ÑенÑора: %d.%d СепиÑПоÑледовательноÑть 9РезкоЧёткоÑтьSiPix Web2 Marcus Meissner Драйвер доÑтупа к веб-камере SiPix Web2.Одиночный кадрДрайвер Sipix StyleCam Blink Vincent Sanders Marcus Meissner . Дневной ÑветИнтервал между ÑÐ»Ð°Ð¹Ð´Ð°Ð¼Ð¸Ð—Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑÐ—Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑSmal Ultrapocket Lee Benfield Драйвер доÑтупа к аппарату Smal Ultrapocket и его OEM вариантам (slimshot)МÑгкоÐеÑколько замечаний о фотоаппаратах Epson: - Отдельными параметрами Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñть удалённо: * приближение * Ñ„Ð¾ÐºÑƒÑ * пользовательÑкие наÑтройки баланÑа белого - ДекомпилÑÑ†Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² конфигурации производилаÑÑŒ Ñ PhotoPC 3000z. ЕÑли ваш аппарат работает иначе, напишите, пожалуйÑта по адреÑу %s (по английÑки) ÐеÑколько замечаний о фотоаппаратах Epson: - Отдельными параметрами Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñть удалённо: * приближение * Ñ„Ð¾ÐºÑƒÑ * пользовательÑкие наÑтройки баланÑа белого - ДекомпилÑÑ†Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² конфигурации производилаÑÑŒ Ñ PhotoPC 3000z, еÑли ваш аппарат работает иначе, напишите об Ñтом в ÑпиÑок раÑÑылки Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð² gphoto (по английÑки) Поддержка фотоаппарата Sony DSC-F1 M. Adam Kendall Ðа оÑнове конÑольной верÑии chotplay от Кен-Ичи ХайÑши Портирование в Gphoto2 выполнил Bart van Leeuwen Библиотека gPhoto Ð´Ð»Ñ Sony DSC-F55/505 Поддерживает Sony MSAC-SR1 и карты Memory Stick от DCR-PC100 Изначально напиÑана Mark Davies ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ð¸Ñ Ðº gPhoto2 - Raymond Penners ЗвукДрайвер Soundvision Vince Weaver ИÑпанÑкийСкороÑть %i не поддерживаетÑÑ!Превышающие 57600 ÑкороÑти не поддерживаютÑÑ Ð¿Ñ€Ð¸ загрузке в Ñтот фотоаппаратТочечныйТочечный режим замераТочечный автофокуÑСтандартныйФотоаппарат выключаетÑÑСиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°.Формат вывода на ТВФотоаппарат JD11 доÑтаточно хорошо работает Ñ Ñтим драйвером. Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹ необходим Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ RS232 Ñо ÑкороÑтью 115 Кбит. Драйвер позволÑет копировать - миниатюры (64x48, формат PGM ) - фотографии (640x480, формат PPM) Фотоаппарат Kodak DC120 иÑпользует формат KDC Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи изображений. Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñмотра полученных из аппарата изображений понадобитÑÑ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° "kdc2tiff". Её можно загрузить по адреÑу http://kdc2tiff.sourceforge.netДрайвер Samsung digimax 800k напиÑан James McKenzie Ð´Ð»Ñ gphoto. Lutz Mueller портировал его в gphoto2. Marcus Meissner иÑправлÑл ошибки и вноÑил уÑовершенÑтвованиÑ.Слишком Ñлабый зарÑд аккумулÑтора фотоаппарата (%d%%). ДейÑтвие прервано.Фотоаппарат не поддерживает ÑкороÑть %i.Фотоаппарат только что Ñообщил об нераÑпознанной ошибке. ПожалуйÑта, Ñообщите об Ñтом %s и опишите, как и когда произошла Ñта ошибка: (0x%x,0x%x). Большое ÑпаÑибо!Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема не поддерживает закачку файлов.Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема не поддерживает получение Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема не поддерживает изменение Ñведений о файлеВыполнÑетÑÑ Ð´ÐµÐ¹Ñтвие. Данный фотоаппарат не поддерживает одновременное выполнение неÑкольких команд. ДождитеÑÑŒ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ операции..РаботоÑпоÑобноÑть драйвера проверена Ñ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼ Kodak DC 215 Zoom Возможно он подойдёт Ð´Ð»Ñ DC 200 и DC 210. ЕÑли у Ð²Ð°Ñ ÐµÑть один из перечиÑленных фотоаппаратов, напишите, пожалуйÑта по адреÑу koltan@gmx.de и Ñообщите, вÑе ли функции доÑтупны Ñ Ñтим драйвером, и нет ли Ñ Ð½Ð¸Ð¼ проблем.Размер миниатюры: %d Формат времениToshiba David Hogue Драйвер Toshiba pdr-m11. УÑтановление ÑвÑзи Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼...Ð’Ð¾Ð»ÑŒÑ„Ñ€Ð°Ð¼Ð¾Ð²Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°Ð¯Ð·Ñ‹Ðº интерфейÑÐ°Ð’Ñ€ÐµÐ¼Ñ UNIXÐеизвеÑтноÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° драйвера фотоаппаратаÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°.ÐеизвеÑтный тип файла %i.ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒÐеизвеÑÑ‚Ð½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ "%s"ÐераÑпознанный ответÐеÑовмеÑÑ‚Ð¸Ð¼Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð°ÐÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.Получен неподдерживаемый тип порта %i = 0x%x. Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°.Закачка файла...Закачка изображениÑ...Закачка изображениÑ: %s.Закачка...Копирование прервано пользователемID производителÑ: %02x%02x ВерÑиÑ:ВерÑиÑ: %s Временные наÑтройкиОжидание...СлабаÑÐ‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾Ð‘ÐµÐ»Ð°Ñ Ð´Ð¾ÑÐºÐ°Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾Ð‘ÐµÐ»Ð°Ñ Ð´Ð¾ÑкаУровень белогоШирокоугольныйЗащищена от запиÑиГод/МеÑÑц/ДеньДаВаш USB фотоаппарат имеет м/Ñ Ð½Ð°Ð±Ð¾Ñ€ S&Q. Общее чиÑло Ñделанных Ñнимков - %i Ðекоторые из них могут быть видеозапиÑÑми, ÑоÑтоÑщими из неÑкольких кадров. Ваш USB-фотоаппарат оÑнован на м/Ñ Ð½Ð°Ð±Ð¾Ñ€Ðµ Aox. ЧиÑло изображений низкого Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ = %i ЧиÑло изображений выÑокого Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ = %i ЧиÑло изображений = %i Модель вашего USB-фотоаппарата - Kodak EZ200. ЧиÑло изображений = %i ПриближениеПриближение (в миллиметрах)блок питаниÑagfa_cl20 Разработчики драйвера Agfa CL20 Ð´Ð»Ñ Linux! Э-почта - cl20@poeml.de Веб-Ð°Ð´Ñ€ÐµÑ http://cl20.poeml.de автоаккумулÑторцветБиблиотека coolshot vневозможно изменить Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ уÑтановить времÑÑнаруживыÑокоеgPhoto2 Mustek VDC-3500/Relisys Dimera 3500 При Ñоздании Ñтой программы иÑпользовалаÑÑŒ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ, Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ‰Ð°Ñ Ñ„Ð¸Ñ€Ð¼Ðµ StarDot Technologies. Ðвтор: Brian Beattie Помощь оказывали: Chuck Homic Преобразование иÑходных данных Ñнимков в формат RGB Dan Fandrich Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ протоколе обмена, формате иÑходных данных, портирование Ð´Ð»Ñ gphoto2 Библиотека gsmart300 Till Adam Jerome Lodewyck Поддержка фотоаппаратов Mustek gSmart 300 оÑновываетÑÑ Ð½Ð° неÑкольких модулÑÑ… gphoto2 и ÑпецификациÑÑ…, которые были любезно предоÑтавлены фирмой Mustek. выÑокое (640x480)в режиме заполнениÑвнутринизкое (320x240)менюнетнормальноенет данных: %sвыклвклаккумулÑторвоÑпроизведениепитание ОКÑбой питаниÑтолько Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñчтение и запиÑьготовзапиÑьБазовый драйвер sq905 Theodore Kilgore Ð½Ð°Ð¸Ð»ÑƒÑ‡ÑˆÐµÐµÐ²Ñ€ÐµÐ¼Ñ ÑƒÑтановленонеожиданный тип данных %iвнимание: ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма не проверена (+ длина %d, значение 0x%04x) ######################### libgphoto2-2.5.9/po/sv.po0000644000175000001440000112015012623156273012132 00000000000000# Swedish translation of gPhoto # Copyright (C) 2000 Free Software Foundation, Inc. # Andreas Hyden 2000. # Stefan Björnelund 2002. # Sverker Wiberg 2002. # msgid "" msgstr "" "Project-Id-Version: gphoto 0.4.3\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2003-01-09 08:13+0100\n" "Last-Translator: Stefan Björnelund \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 #, fuzzy msgid "Picture Frame Configuration" msgstr "Kamerakonfiguration" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "Antal bilder: %i\n" "Firmware Version: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering av bilddata av:\n" "Jeff Laing \n" "\n" "Implementerat med hjälp av dokument från\n" "nätet. Med tillstånd från Vision." #: camlibs/canon/canon.c:645 #, fuzzy, c-format msgid "Could not create directory %s." msgstr "Kunde inte skapa \\DCIM-katalogen." #: camlibs/canon/canon.c:648 #, fuzzy, c-format msgid "Could not remove directory %s." msgstr "Kunde inte skapa \\DCIM-katalogen." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "" #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" #: camlibs/canon/canon.c:2554 #, fuzzy, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "" "Namnet '%s' (%i tecken) är för långt (%i tecken), maximalt 30 tecken tillåts." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "" #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Filen skyddad." #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "" #: camlibs/canon/library.c:98 #, fuzzy msgid "Thumbnail" msgstr "Minibildstorlek: %d\n" #: camlibs/canon/library.c:99 #, fuzzy msgid "Full Image" msgstr "Bild" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "" #: camlibs/canon/library.c:216 #, fuzzy msgid "Auto focus: one-shot" msgstr "Autofokus fel." #: camlibs/canon/library.c:217 #, fuzzy msgid "Auto focus: AI servo" msgstr "Autofokus fel." #: camlibs/canon/library.c:218 #, fuzzy msgid "Auto focus: AI focus" msgstr "Autofokus fel." #: camlibs/canon/library.c:219 #, fuzzy msgid "Manual focus" msgstr "Ingen manual" #: camlibs/canon/library.c:224 #, fuzzy msgid "Beep off" msgstr "LED-läge" #: camlibs/canon/library.c:225 #, fuzzy msgid "Beep on" msgstr "LED-läge" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 #, fuzzy msgid "Flash off" msgstr "Blixt Läge" #: camlibs/canon/library.c:231 #, fuzzy msgid "Flash on" msgstr "Blixt Läge" #: camlibs/canon/library.c:232 #, fuzzy msgid "Flash auto" msgstr "Blixt Läge" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "" #: camlibs/canon/library.c:267 #, fuzzy msgid "Manual 2" msgstr "Ingen manual" #: camlibs/canon/library.c:268 #, fuzzy msgid "Far scene" msgstr "Lysrör" #: camlibs/canon/library.c:269 #, fuzzy msgid "Fast shutter" msgstr "Slutartid sekunder (0 auto)" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Sepiabrunt" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 #, fuzzy msgid "Portrait" msgstr "Kontrast-" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Makro" #: camlibs/canon/library.c:277 msgid "BW" msgstr "" #: camlibs/canon/library.c:278 #, fuzzy msgid "PanFocus" msgstr "Fokus" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 #, fuzzy msgid "Neutral" msgstr "Normal" #: camlibs/canon/library.c:282 #, fuzzy msgid "Long shutter" msgstr "Fokusläge" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "" #: camlibs/canon/library.c:285 #, fuzzy msgid "Indoor" msgstr "Utomhus" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "" #: camlibs/canon/library.c:292 #, fuzzy msgid "Digital macro" msgstr "Digital Zoom" #: camlibs/canon/library.c:293 #, fuzzy msgid "MyColors" msgstr "färger" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" #: camlibs/canon/library.c:497 #, fuzzy, c-format msgid "Camera unavailable: %s" msgstr "Kameran ej tillgänglig" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Stänger av kameran" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Fel vid fotografering" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Kunde inte få tag på disk namn: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Ingen anledning tillgänglig" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Kunde inte få tag på disk info: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "" #: camlibs/canon/library.c:777 #, fuzzy, c-format msgid "No audio file could be found for %s" msgstr "Filen '%s' kunde inte hittas i mappen '%s'." #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " Enhet %s\n" " %11s bytes totalt\n" " %11s bytes tillgängliga" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "Nätadapter" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "på batteri" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "kraft OK" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "kraft dålig" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "ej tillgänglig: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (värdtid %s%i sekunder)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Kamera identifiering:\n" " Modell: %s\n" " Ägare: %s\n" "\n" "Kraftstatus: %s\n" "\n" "Flashdisk-information:\n" "%s\n" "\n" "Tid: %s\n" #: camlibs/canon/library.c:1145 #, fuzzy msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Drivrutin för Canon PowerShot familjen av\n" "Wolfgang G. Reissnegger,\n" "Werner Almesberger,\n" "Edouard Lafargue,\n" "Philippe Marzouk,\n" "A5-tillägg av Ole W. Saastad\n" "Holger Klemm\n" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Fel vid filradering" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Fel vid radering av associerad minibild till fil" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "Kameran stöder inte hastigheter överstigande 57600 vid uppladdning." #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Kunde inte få tag på flash-enhetens enhetsbokstav" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "Kunde inte ladda upp, inget ledigt mappnamn tillgängligt!\n" "Mappnamnet 999CANON existerar och har en bild AUT_9999.JPG." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Kunde inte skapa \\DCIM-katalogen." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Kunde inte skapa destinationskatalogen." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "Kamera- och drivrutinskonfiguration" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Kamerainställningar" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 #, fuzzy msgid "Owner Name" msgstr "Ägarnamn" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 #, fuzzy msgid "Capture Size Class" msgstr "Bildinställningar" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "ISO hastighet" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 #, fuzzy msgid "Unknown" msgstr "%i (okänd)" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 #, fuzzy msgid "Shooting mode" msgstr "Slutartid sekunder (0 auto)" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 #, fuzzy msgid "Shutter Speed" msgstr "Slutartid sekunder (0 auto)" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "Zoom" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "Bländare" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Exponeringskompensation" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 #, fuzzy msgid "Image Format" msgstr "Datumformat" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Fokusläge" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Blixt Läge" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Pip" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 #, fuzzy msgid "Camera Actions" msgstr "Kamerainställningar" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 #, fuzzy msgid "Camera Status Information" msgstr "Kamerakonfiguration" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 #, fuzzy msgid "Camera Model" msgstr "%sKameramodell: %s\n" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Datum och Tid" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Fel" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 #, fuzzy msgid "Firmware Version" msgstr "Fastvaru-revision: %d.%d\n" #: camlibs/canon/library.c:1956 #, fuzzy msgid "Power" msgstr "EJ extraljus" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Drivrutin" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Lista alla filer" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Behåll filnamnet vid uppladdning" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Kameran ej tillgänglig" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Ägarnamnet ändrat" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "kunde inte ändra ägarnamnet" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "" #: camlibs/canon/library.c:2056 #, fuzzy msgid "ISO speed changed" msgstr "Ägarnamnet ändrat" #: camlibs/canon/library.c:2058 #, fuzzy msgid "Could not change ISO speed" msgstr "kunde inte ändra ägarnamnet" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "" #: camlibs/canon/library.c:2085 #, fuzzy msgid "Shooting mode changed" msgstr "Slutartid sekunder (0 auto)" #: camlibs/canon/library.c:2087 #, fuzzy msgid "Could not change shooting mode" msgstr "kunde inte ändra ägarnamnet" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "" #: camlibs/canon/library.c:2114 #, fuzzy msgid "Shutter speed changed" msgstr "Slutartid sekunder (0 auto)" #: camlibs/canon/library.c:2116 #, fuzzy msgid "Could not change shutter speed" msgstr "kunde inte ändra ägarnamnet" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 #, fuzzy msgid "Invalid aperture setting" msgstr "Bildinställningar" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 #, fuzzy msgid "Aperture changed" msgstr "Bildinställningar" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 #, fuzzy msgid "Could not change aperture" msgstr "kunde inte ändra ägarnamnet" #: camlibs/canon/library.c:2167 #, fuzzy msgid "Invalid exposure compensation setting" msgstr "Exponerings kompensation" #: camlibs/canon/library.c:2170 #, fuzzy msgid "Exposure compensation changed" msgstr "Exponerings kompensation" #: camlibs/canon/library.c:2172 #, fuzzy msgid "Could not change exposure compensation" msgstr "Exponerings kompensation" #: camlibs/canon/library.c:2194 #, fuzzy msgid "Invalid image format setting" msgstr "Kamerainställningar" #: camlibs/canon/library.c:2198 #, fuzzy msgid "Image format changed" msgstr "Filen skyddad." #: camlibs/canon/library.c:2200 #, fuzzy msgid "Could not change image format" msgstr "kunde inte ändra ägarnamnet" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "" #: camlibs/canon/library.c:2226 #, fuzzy msgid "Focus mode changed" msgstr "Fokusläge" #: camlibs/canon/library.c:2228 #, fuzzy msgid "Could not change focus mode" msgstr "kunde inte ändra ägarnamnet" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "" #: camlibs/canon/library.c:2255 #, fuzzy msgid "Beep mode changed" msgstr "Ägarnamnet ändrat" #: camlibs/canon/library.c:2257 #, fuzzy msgid "Could not change beep mode" msgstr "kunde inte ändra ägarnamnet" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "" #: camlibs/canon/library.c:2276 #, fuzzy msgid "Could not change zoom level" msgstr "kunde inte ändra ägarnamnet" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "" #: camlibs/canon/library.c:2332 #, fuzzy msgid "Flash mode changed" msgstr "CompactFlash kort" #: camlibs/canon/library.c:2334 #, fuzzy msgid "Could not change flash mode" msgstr "Kunde inte få tag på flash-enhetens enhetsbokstav" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "tiden inställd" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "kunde inte ställa in tiden" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "Ej stödd port typ %i = 0x%x given. Initialisering omöjlig." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Batteriet slut, kameran avstängd." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "FEL: oväntat medelande" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "FEL: medelande överkört" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "FEL: ej i sekvens." #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "FEL: oväntad pakettyp." #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "FEL: formatfel i medelande" #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "FEL: oväntat medelande2." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Laddar upp fil..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Hämtar fil..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Fel vid ändring av hastighet." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Nollställer protokoll..." #: camlibs/canon/serial.c:1311 #, fuzzy msgid "Camera OK." msgstr "Kamera OK.\n" #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Söker efter kamera ..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Försöker kontakta kamera..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Kommunikationsfel 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Ingen svar från kamera" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Ej igenkänd respons" #: camlibs/canon/serial.c:1376 #, fuzzy, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "Detekterade ett '%s'." #: camlibs/canon/serial.c:1384 #, fuzzy, c-format msgid "Unknown model \"%s\"" msgstr "Okänd modell" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "Dålig EOT" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Kommunikationsfel 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Kommunikationsfel 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Ändrar hastighet... vänta..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Fel vid ändring av hastighet" #: camlibs/canon/serial.c:1454 #, fuzzy msgid "Error waiting for ACK during initialization, retrying" msgstr "Fel väntande ACK under initialisering, försöker igen " #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Fel väntande ACK under initialisering" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Ansluten till kamera" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "" #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Hämtar minibild..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "" #: camlibs/canon/usb.c:236 #, fuzzy msgid "Could not establish initial contact with camera" msgstr "Kunde inte kontakta kameran." #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "Kamera ej redo, flera 'Identifiera kamera'-förfrågningar misslyckades: %s\"" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, fuzzy, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "" "Kamera ej redo, flera 'Identifiera kamera'-förfrågningar misslyckades: %s\"" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Tar emot data..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "" #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" #: camlibs/canon/usb.c:2263 #, fuzzy, c-format msgid "Couldn't read from file \"%s\"" msgstr "Kunde inte få tag på disk info: %s" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "" #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 #, fuzzy msgid "File upload failed." msgstr "Laddar upp fil..." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "Filen var för stor. Du kan behöva stänga av kameran och slå på den ingen " "innan du kan ladda upp mer filer." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "Detekterade ett '%s'." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "" #: camlibs/casio/casio-qv.c:152 #, fuzzy, c-format msgid "Image type %d not supported" msgstr "Bildtypen stöds ej" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, fuzzy, c-format msgid "Image %s is delete protected." msgstr "Filen skyddad." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "" #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "Kamerakonfiguration" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, fuzzy, c-format msgid "Battery" msgstr "batteri" #: camlibs/casio/casio-qv.c:275 #, fuzzy msgid "Brightness" msgstr "LCD Ljusstyrka" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 #, fuzzy msgid "Too bright" msgstr "Copyright" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 #, fuzzy msgid "Too dark" msgstr "Ljuset för mörkt" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "OK" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Bildtypen stöds ej" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "Antal bilder: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "Enbart rot-mappen stöds - du begärde en fillistning för mappen '%s'." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Problem med att hämta antalet bilder" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Problem att hämta bildinformation" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Tagningstypen stöds ej" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (batteriet är %d%% fullt)" #: camlibs/dimera/dimera3500.c:455 #, fuzzy, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 ver. %s %d/%d %d:%d\n" "%d fotografier använda av approximativt %d (hög upplösning) eller %d (låg " "upplösning)\n" "Kamera funktioner: %s, %s, %s, %s\n" "Blixt är %s, är %s och är %s\n" "Upplösningen är satt till %s\n" "Kamera är %s kraft%s\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Blixt" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 #, fuzzy msgid "No Flash" msgstr "EJ Blixt" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Dubbel bländare" #: camlibs/dimera/dimera3500.c:468 #, fuzzy msgid "No Dual Iris" msgstr "Ej Dubbel bländare" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "Upplösnings byte" #: camlibs/dimera/dimera3500.c:470 #, fuzzy msgid "No Resolution Switch" msgstr "EJ Upplösningsbyte" #: camlibs/dimera/dimera3500.c:472 #, fuzzy msgid "No Power Light" msgstr "EJ extraljus" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "PÅ" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "AV" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "redo" #: camlibs/dimera/dimera3500.c:476 #, fuzzy msgid "Not ready" msgstr "EJ redo" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "i fyll läge" #: camlibs/dimera/dimera3500.c:478 #, fuzzy msgid "Not in fill mode" msgstr "EJ i fyll läge" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "låg (320x240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "hög (640x480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "externt" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "internt" #: camlibs/dimera/dimera3500.c:492 #, fuzzy msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* Bildtekniska fel eller problem med kommunikation\n" " orsakas ofta av dåliga batterier.\n" "* Bilder tagna fjärrstyrt med denna kamera lagras\n" " tillfälligt i minnet och inte på flashminnes-kortet.\n" "* Exponeringskontroll under kontinuerlig fotografering,\n" " sätts automatiskt av förhandvisningsfunktionen.\n" "* Bildkvalitén är f.n. lägre än den kunde vara.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "Denna mjukvara skapades med hjälp av properitär\n" "information som tillhör StarDot Technologies.\n" "\n" "Skapare:\n" " Brian Beattie \n" "Bidragsgivare:\n" " Chuck Homic \n" " Konvertering av rå kamerabild till RGB\n" " Dan Fandrich \n" " Information om protokoll, råa bildformatet,\n" " gphoto2 portering\\n\"\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Problem med att läsa bild från flashminne" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Slut på minne" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "Nerladdning av bild..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Problem med nerladdningen av bild" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "Användare avbröt nerladdningen" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Problem med att ta aktuell bild" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Exponering" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 #, fuzzy msgid "Exposure level on preview" msgstr "Exponeringsmätning" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Problem med att öppna port" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Problem med att nollställa kamera" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Problem att sätta kamerans kommunikationshastighet" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Ser ut som ett modem, inte en kamera" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "Listar filer i '%s'..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "Listar mappar i '%s'..." #: camlibs/directory/directory.c:381 #, fuzzy, c-format msgid "Could not get information about '%s' (%s)." msgstr "Kunde inte hämta information om '%s' (%m)." #: camlibs/directory/directory.c:414 #, fuzzy, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Kunde inte hämta information om '%s' i '%s' (%m)." #: camlibs/directory/directory.c:462 #, fuzzy, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Kunde inte ändra tiden på fil '%s' i '%s' (%m)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Kunde inte öppna '%s'." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" "Katalogbläddring \"camera\" låter dig indexera bilderna på din hårddisk." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "Katalogbläddring - skrivet av Scott Fritzinger ." #: camlibs/directory/directory.c:671 #, fuzzy, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "Kunde inte radera filen '%s' i mappen '%s' (felkod %i: %m)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "Kameran skickade bara %i byte(s), men vi behöver minst %i." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Kunde inte kontakta kameran." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Mottog oväntat data (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "Fel utbrytnings sekvens: förväntade 0x%02x, fick 0x%02x." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Dåliga data - fick 0x%02x, förväntade 0x%02x." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "Dåliga data - fick 0x%02x, förväntade 0x%02x eller 0x%02x." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "Dålig kontrollsumma - fick 0x%02x, förväntade 0x%02x." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "Kameran avvisade kommandot." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "Kameran återställde sigsjälv." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "Kameran skickade oväntad byte 0x%02x." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Nerladdning..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "Kunde inte allokera %i byte(s) för nerladdning av minibild." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "Kunde inte allokera %i byte(s) för nerladdning av bilden." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "Kameran accepterar inte '%s' som filnamn." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "Kunde inte initiera uppladdning (kameran svarade med 0x%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "Kamera stödjer inte hastigheten %i." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "Kunde inte sätta hastigheten till %i (kameran svarade med %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Baserad på fujiplay av Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, fuzzy, c-format msgid "Bit rate %ld is not supported." msgstr "Bit hastigheten %i stöds ej." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Konfiguration för din FUJI kamera" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Datum & Tid" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Version: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Modell: " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "Tillgängligt Minne: " #: camlibs/gsmart300/library.c:166 #, fuzzy msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "\n" "Till Adam \\n\"\n" "Stöd för Mustek gSmart mini serien av digital kameror baserade på\n" "flera andra gphoto2 kamerabiblioteks moduler och windows källkoden \n" "vänligen tillhandahållen av Mustek.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Porttypen stöds ej: %d. Denna drivrutin fungerar bara med USB kamror.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Kunde inte nollställa kameran.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, fuzzy, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Din kamera stödjer radering av den senaste filen på kameran. I detta fall, " "denhär filen '%s'." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/jamcam/jamcam.c:277 #, fuzzy, c-format msgid "Frames Taken : %4d\n" msgstr "%sbilder tagna: %i\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "jamcam bibliotek v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "Nerladdning av data..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "Nerladdning av minibild..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "JD11-kamerorna fungerar ganska bra med denna drivrutin.\n" "Ett RS232-gränssnitt @ 115 kbit krävs för bildöverföring.\n" "Drivrutinen tillåter dig att få\n" "\n" " - minibilder (64x48 PGM format)\n" " - hela bilder (640x480 PPM format)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Drivrutin för Jenoptik JD11 kameror.\n" "Protokoll reverse engineered m.h.a. WINE och IDA." #: camlibs/jd11/jd11.c:186 #, fuzzy msgid "JD11 Configuration" msgstr "Konfiguration" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Andra inställningar" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Exponering med bollslutare" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Färginställningar" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "Röd" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Grön" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Blå" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "CompactFlash kort" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "Kodak DC120-kameran använder filformatet KDC för att lagra bilder. Om du " "vill visa bilderna du laddade ner från din kamera, behöver du ladda ner " "\"kdc2tiff\" programmet. Det finns tillgängligt på http://kdc2tiff." "sourceforge.net" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Kodak DC120 kamera-bibliotek\n" "Scott Fritzinger \n" "Kamera-bibliotek för Kodak DC120-kameror.\n" "(på allmän begäran)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Hämtar data..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "Väntar på att bli klar..." #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Fil:" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Filtyp" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Fil upplösning" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Fil kompression" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Låg (bäst kvalité)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Medium (bättre kvalité)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "Hög (god kvalité)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Foto" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Exponerings kompensation" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Auto" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Tvinga" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Ingen" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Röda ögon reduktion" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "På" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Av" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Övrigt" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Sätt kamerans klocka." #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "Porthastighet" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Albumnamn" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Namn att sätta på kortet vid formatering." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "Formatera CompactFlash" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Formatera kort och sätt albumnamn" #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Avlusning" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Exekvera fördefinierat kommando\n" "med parametervärden." #: camlibs/kodak/dc210/dc210.c:498 #, fuzzy, c-format msgid "Pictures in camera: %d\n" msgstr "Minne i kameran: %d Mbit.\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:506 #, fuzzy, c-format msgid "Total pictures taken: %d\n" msgstr "Totalt bilder tagna: %d, Blixtar avfyrade: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, fuzzy, c-format msgid "Total flashes fired: %d\n" msgstr "Totalt bilder tagna: %d, Blixtar avfyrade: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, fuzzy, c-format msgid "Firmware: %d.%d\n" msgstr "Fastvaru-revision: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, fuzzy, c-format msgid "Filetype: JPEG (" msgstr "Filtyp" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "" #: camlibs/kodak/dc210/dc210.c:527 #, fuzzy, c-format msgid "low compression, " msgstr "Fil kompression" #: camlibs/kodak/dc210/dc210.c:529 #, fuzzy, c-format msgid "medium compression, " msgstr "Fil kompression" #: camlibs/kodak/dc210/dc210.c:531 #, fuzzy, c-format msgid "high compression, " msgstr "Fil kompression" #: camlibs/kodak/dc210/dc210.c:533 #, fuzzy, c-format msgid "unknown compression %d, " msgstr "Fil kompression" #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:556 #, fuzzy, c-format msgid "AC adapter is connected.\n" msgstr "Linsen är inte ansluten\n" #: camlibs/kodak/dc210/dc210.c:558 #, fuzzy, c-format msgid "AC adapter is not connected.\n" msgstr "Linsen är inte ansluten\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:580 #, fuzzy, c-format msgid "Unknown zoom mode %d\n" msgstr "Okänd modell" #: camlibs/kodak/dc210/dc210.c:586 #, fuzzy, c-format msgid "Exposure compensation: %s\n" msgstr "Exponerings kompensation" #: camlibs/kodak/dc210/dc210.c:588 #, fuzzy, c-format msgid "Exposure compensation: %d\n" msgstr "Exponerings kompensation" #: camlibs/kodak/dc210/dc210.c:593 #, fuzzy, c-format msgid "Flash mode: auto, " msgstr "Blixt Läge" #: camlibs/kodak/dc210/dc210.c:595 #, fuzzy, c-format msgid "Flash mode: force, " msgstr "Blixt Läge" #: camlibs/kodak/dc210/dc210.c:597 #, fuzzy, c-format msgid "Flash mode: off\n" msgstr "Blixt Läge" #: camlibs/kodak/dc210/dc210.c:599 #, fuzzy, c-format msgid "Unknown flash mode %d, " msgstr "Okänd modell" #: camlibs/kodak/dc210/dc210.c:607 #, fuzzy, c-format msgid "red eye flash on.\n" msgstr "Röda ögon reduktion" #: camlibs/kodak/dc210/dc210.c:610 #, fuzzy, c-format msgid "red eye flash off.\n" msgstr "Röda ögon reduktion" #: camlibs/kodak/dc210/dc210.c:615 #, fuzzy, c-format msgid "No card in camera.\n" msgstr "Fel vid öppning av kameran.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "Detta bibliotek har testats med en Kodak DC 215 Zoom kamera. Det kan " "fungera\n" "också med DC 200 och DC 210 kameror. Om du råkar ha en sådan kamera,\n" "vänligen skicka ett meddelade till koltan@gmx.de för att låta mig veta, om " "du\n" "har några problem med detta drivrutinsbibliotek eller om allt fungerar bra." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Kamera bibliotek för Kodak DC215 Zoom kameror.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "Väntar..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Parameter 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Parameter 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Parameter 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Modell: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "Fastvaruversion: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Batteristatus: %s, Nätadapter: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "Antal bilder: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "Utrymme kvar: Hög: %d, Medium: %d, Låg: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "Minneskortets status (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "Totalt bilder tagna: %d, Blixtar avfyrade: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Kodak DC240 kamera-bibliotek\n" "Scott Fritzinger och Hubert Figuiere \n" "Kamera-bibliotek för Kodak DC240, DC280, DC3400 och DC5000 kameror.\n" "Omskriven och uppdaterad för gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Svag" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Tomt" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Ogiltigt" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Inte använt" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "I bruk" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "Kortet är öppet" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "Kortet inte öppet" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "Kortet är inte formaterat" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Inget kort" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "Det finns pågår f.n. en operation. Denna kamera klarar endast att utföra en " "operation i taget. Vänligen vänta tills den nuvarande operationen har " "avslutats." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "kameran inaktiv för > 9 sekunder, återinitialiseras.\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Kända problem:\n" "\n" "1. Om Kodak DC3200 inte tar emot ett kommando minst var 10 sekund, kommer " "den att lösa ut, och måste återinitialiseras. Om du upptäcker att kameran " "inte svarar, så behöver du bara välja om kameran. Detta kommer orsaka att " "den återinitialiseras." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Frågor och kommentarter uppskattas." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Fokuseringsfel." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Bländarfel." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Blixtfel." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "EEPROM kontrollsumma fel." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "Internt fel (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "Internt fel (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Inget kort isatt." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "Kort stöds ej." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "Kort borttaget under åtkomst." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Bildnummer ej giltigt." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "Kortet kan ej skrivas." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "Kortet är skrivskyddat." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "Inge plats kvar på kortet." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Filen skyddad." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "Ljuset för mörkt" #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Autofokus fel." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Systemfel." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Ogiltig parameter." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "Kommandot kan ej avbrytas." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Lokaliseringsdata för lång." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Lokaliseringsdata korrupt." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Ej stött kommando." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "Annat kommando utförs redan." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Kommando ordnings fel." #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Okänt fel." #: camlibs/konica/konica.c:137 #, fuzzy, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "Kameran har precis skickat ett en felkod som inte tidigare har upptäckts. " "Vänligen rapportera det följande till < " "med informationen om hur du fick det följande felet: (0x%x,0x%x). Tack så " "mycket!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Hämtar fillista..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "Testar olika hastigheter" #: camlibs/konica/library.c:338 #, fuzzy msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "Kameran kunde inte kontaktas. Vänligen kontrollera att den är påslagen och " "ansluten till datorn." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "%i bilder kunde inte raderas eftersom de är skrivskyddade" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Modell: %s\n" "Serienummer: %s,\n" "Hårdvaruversion: %i.%i\n" "Mjukvaruversion: %i.%i\n" "Testnings mjukvaruversion: %i.%i\n" "Namn: %s,\n" "Tillverkare: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Konica kamera-biblioteket\n" "Lutz Müller \n" "Stöd för alla Konica och flera HP kameror." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Hämtar konfiguration..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Konica konfiguration" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Ihållande Inställningar" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "Skall kameran pipa när den tar en bild?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Självutlösningstid" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Auto Av tid" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Bildspelsintervall" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Upplösning" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Låg (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Medium (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Hög (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Lokalisering" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Språk" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Inget valt" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "TV Utdata format" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "Visa inte TV menyn" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Datumformat" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "Månad/Dag/År" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "Dag/Månad/År" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "År/Månad/Dag" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Residenta Inställningar" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "På, röda-ögon-reduktion" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Auto, röda-ögon reduktion" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Fokus" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "Fast" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Flyktiga inställningar" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "Självutlösare" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "Självutlösare (nästa bild endast)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Normal" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Kunde inte finna lokaliseringsdata vid '%s'" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "Lokaliseringsfil för lång!" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "" #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "" #: camlibs/konica/qm150.c:399 #, fuzzy, c-format msgid "Image type %d is not supported by this camera !" msgstr "Bildtypen stöds ej" #: camlibs/konica/qm150.c:453 #, fuzzy, c-format msgid "Can't delete image %s." msgstr "Raderar bilden %s." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "" #: camlibs/konica/qm150.c:517 #, fuzzy msgid "Uploading image..." msgstr "Laddar upp fil..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "" #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "" #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "" #: camlibs/konica/qm150.c:653 #, fuzzy msgid "No answer from the camera." msgstr "Ingen svar från kamera" #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Låg" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Medium" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Hög" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "" #: camlibs/konica/qm150.c:957 #, fuzzy msgid "White balance" msgstr "Vitbalans" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 #, fuzzy msgid "Office" msgstr "Av" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 #, fuzzy msgid "Daylight" msgstr "Dagsljus" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 #, fuzzy msgid "Color" msgstr "färger" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 #, fuzzy msgid "Light" msgstr "Hög" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 #, fuzzy msgid "Deep" msgstr "Pip" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 #, fuzzy msgid "Black and White" msgstr "Svartvit" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 #, fuzzy msgid "Play mode" msgstr "Blixt Läge" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 #, fuzzy msgid "Record mode" msgstr "Inspelningsläge" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "Spela upp" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Spela in" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" #: camlibs/largan/lmini/largan.c:228 #, fuzzy msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Largan drivrutin\n" "Hubert Figuiere \n" "\n" "Hanterar Largan Lmini kamror.\n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Modell:\t\t\tMinolta Dimage V (%s)\\n\"\n" "Hårdvaru-revision:\t%s\n" "Fastvaru-revision:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Värd Mode:\t\t%s\n" "Exponeringskorrektion:\t%s\n" "Exponeringsdata:\t%d\n" "Giltigt datum:\t\t%s\n" "Datum:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Självutlösare:\t\t%s\n" "Kvalitetsinställning:\t%s\n" "Spela/Spara läge:\t%s\n" "Giltigt kort-ID:\t%s\n" "Kort-ID:\t\t%d\n" "Blixtläge:\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Fjärr" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Lokal" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Ja" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "Nej" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Fin" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Standard" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Automatisk\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Alltid blixt\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Aldrig blixt\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Ogiltigt värde ( %d )\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "Batterinivå:\t\t%s\n" "Antal bilder:\t\t%d\n" "Minsta kapacitet kvar:\t%d\n" "Upptagen:\t\t%s\n" "Blixten laddas:\t\t%s\n" "Linsstatus:\t\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "Inte full" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Full" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "Upptagen" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "Ledig" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "Laddar" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Klar" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Normal\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "Linsriktningen överensstämmer inte med blixtljuset\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "Linsen är inte ansluten\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "Felaktigt värde för linsstatus %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "Kortstatus:\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Skrivskyddad" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "Olämpligt kort" #: camlibs/minolta/dimagev/dimagev.c:406 #, fuzzy, c-format msgid "Bad value for card status %d" msgstr "Dåligt värde för kort status %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Minolta Dimage V kamera-bibliotek\n" "%s\n" "Gus Hartmann \n" "Speciellt tack till Minolta för specifikationen." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Blixt : Auto (röda-ögon reduktion)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Blixt : Auto" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Blixt : På (röda-ögon reduktion)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Blixt : På" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Blixt : Av" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Blixt : odefinierat" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Summering för Mustek MDC800:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "ingen status rapporterad." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "CompactFlash kort detekterat\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Inget CompactFlash kort detekterat\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "Nuvarande läge: Kameraläge\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Nuvarande läge: Uppspelningsläge\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Batterierna är ok." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Batterierna är låga." #: camlibs/mustek/mdc800.c:264 #, fuzzy msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Mustek MDC-800 gPhoto2 bibliotek\n" "Henning Zabel \n" "Konverterat till gphoto2 av Marcus Meissner \n" "Stödjer seriella and USB protokoll." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "coolshot library v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Frånkopplar kamera." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "Nerladdning av bild %s." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Uppladning av bild: %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, fuzzy, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "Filstorleken är %i bytes. Den största fil som kan laddas upp är: %i bytes." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Uppladdning..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "Raderar bilden %s." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1000 gPhoto bibliotek\n" "Mariusz Zynel \n" "\n" "Baserat på dc1000 programmet skrivet av\n" "Fredrik Roubert och\n" "Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "Laddar ner %s." #: camlibs/panasonic/dc1580.c:627 #, fuzzy msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1580 gPhoto bibliotek\n" "Mariusz Zynel \n" "\n" "Baserat på dc1000 programmet skrivet av\n" "Fredrik Roubert och\n" "Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "Laddar ner '%s'..." #: camlibs/panasonic/l859/l859.c:582 #, fuzzy msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introducerade en bildtagningsteknik som kallas PHOTOSHOT för den " "första gången till denna serie av Palmcorders. Bilderna sparas i JPEG-format " "på ett internt flash-kort och kan överföras till en dator genom den inbygga " "serieporten. Bilder sparas i endera av två möjliga upplösningar: NORMAL är " "320x240 och FIN är 640x480. CCD enheten som tar bilderna från linsen är " "endast 300K och producerar endast bilder med låg kvalité." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Kända problem:\n" "\n" "Om kommunikationsproblem uppstår, nollställ kameran och starta om " "applikationen. Drivrutinen kan ännu inte hantera dessa situationer, " "speciellt om problem uppstår och kameran inte är korrekt avstängd vid " "hastigheter över 9600 bps." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder dirvrutin\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "Nerladdning av fil..." #: camlibs/pccam600/library.c:249 #, fuzzy msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" " Författare: Peter Kajberg\n" " e-post: \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "Bildkvalitet" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Bildstorlek" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Blixtinställning" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Automatisk avstängning (minuter)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Information" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "normal" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "fin" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "extrafin" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "auto" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "på" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "av" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "spela upp" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "spela in" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "meny" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "batteri" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "nätadapter" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Mottog oväntat huvud (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Mottog oväntat svar" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Kontrollsummefel" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "Kameran accepterade inte kommandot." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "Kameran skickade med data än förväntat (%i)." #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "Begärde informationen om bild %i (= 0x%x), men fick information om bild %i " "tillbaka" #: camlibs/polaroid/pdc700.c:916 #, fuzzy, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "%i bytes av okänd bildformat har mottagits. Vänligen skriv till för assistans." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Kamera" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "Hur lång tid det tar innan kameran stängs av?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Bild" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Datum: %i-%02i-%02i %02i:%02i:%02i\n" "Bilder tagna: %i\n" "Lediga bilder: %i\n" "Mjukvaru-version: %s\n" "Baudrate: %s\n" "Minne: %i megabyte\n" "Kameraläge: %s\n" "Bildkvalité: %s\n" "Blixtinställning: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto kraft av: %i minuter\n" "Kraftkälla: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "Den begärda porttypen (%i) stöds ej av denna drivrutin." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 #, fuzzy msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Din kamera stödjer inte ändring av filnamn." #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, fuzzy, c-format msgid "Unknown value %04x" msgstr "Okänd filtyp %i." #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, fuzzy, c-format msgid "Unknown value %04d" msgstr "Okänd filtyp %i." #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, fuzzy, c-format msgid "unexpected datatype %i" msgstr "FEL: oväntad pakettyp." #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 #, fuzzy msgid "Manual" msgstr "Ingen manual" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 #, fuzzy msgid "Automatic" msgstr "Automatisk\n" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 #, fuzzy msgid "One-push Automatic" msgstr "Automatisk\n" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "Lysrör" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Glödlampa" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Mulet" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 #, fuzzy msgid "Preset" msgstr "Portugiska" #: camlibs/ptp2/config.c:1415 #, fuzzy msgid "Fluorescent Lamp 1" msgstr "Lysrör" #: camlibs/ptp2/config.c:1416 #, fuzzy msgid "Fluorescent Lamp 2" msgstr "Lysrör" #: camlibs/ptp2/config.c:1417 #, fuzzy msgid "Fluorescent Lamp 3" msgstr "Lysrör" #: camlibs/ptp2/config.c:1418 #, fuzzy msgid "Fluorescent Lamp 4" msgstr "Lysrör" #: camlibs/ptp2/config.c:1419 #, fuzzy msgid "Fluorescent Lamp 5" msgstr "Lysrör" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "" #: camlibs/ptp2/config.c:1430 #, fuzzy msgid "Fluorescent: Warm White" msgstr "Lysrör" #: camlibs/ptp2/config.c:1431 #, fuzzy msgid "Fluorescent: Cold White" msgstr "Lysrör" #: camlibs/ptp2/config.c:1432 #, fuzzy msgid "Fluorescent: Day White" msgstr "Lysrör" #: camlibs/ptp2/config.c:1433 #, fuzzy msgid "Fluorescent: Daylight" msgstr "Lysrör" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 #, fuzzy msgid "JPEG Fine" msgstr "JPEG" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 #, fuzzy msgid "JPEG Normal" msgstr "Normal" #: camlibs/ptp2/config.c:1443 #, fuzzy msgid "RAW + JPEG Fine" msgstr "JPEG" #: camlibs/ptp2/config.c:1444 #, fuzzy msgid "RAW + JPEG Normal" msgstr "Normal" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "" #: camlibs/ptp2/config.c:1452 #, fuzzy msgid "Self-timer" msgstr "Självutlösare" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "" #: camlibs/ptp2/config.c:1735 #, fuzzy msgid "undefined" msgstr "extrafin" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 #, fuzzy msgid "Undefined" msgstr "PTP odefinierat fel" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "Annan" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "" #: camlibs/ptp2/config.c:1780 #, fuzzy msgid "Flash Off" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:1788 #, fuzzy msgid "red eye suppression" msgstr "På, röda-ögon-reduktion" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "" #: camlibs/ptp2/config.c:1790 #, fuzzy msgid "auto + red eye suppression" msgstr "Auto, röda-ögon reduktion" #: camlibs/ptp2/config.c:1791 #, fuzzy msgid "on + red eye suppression" msgstr "På, röda-ögon-reduktion" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 #, fuzzy msgid "Commander" msgstr "Kommando ordnings fel." #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 #, fuzzy msgid "Auto Aperture" msgstr "Bländare" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 #, fuzzy msgid "Full Manual" msgstr "Ingen manual" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 #, fuzzy msgid "MF (fixed)" msgstr "Fast" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "" #: camlibs/ptp2/config.c:1947 #, fuzzy msgid "User defined 1" msgstr "extrafin" #: camlibs/ptp2/config.c:1948 #, fuzzy msgid "User defined 2" msgstr "extrafin" #: camlibs/ptp2/config.c:1949 #, fuzzy msgid "User defined 3" msgstr "extrafin" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 #, fuzzy msgid "Multiple Focusing Points, Auto" msgstr "Fokuseringsfel." #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 #, fuzzy msgid "Multiple Focusing Points (Right)" msgstr "Fokuseringsfel." #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 #, fuzzy msgid "Multiple Focusing Points (Left)" msgstr "Fokuseringsfel." #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 #, fuzzy msgid "Large" msgstr "Bild" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 #, fuzzy msgid "Medium 1" msgstr "Medium" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 #, fuzzy msgid "Medium 2" msgstr "Medium" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 #, fuzzy msgid "Medium 3" msgstr "Medium" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "" #: camlibs/ptp2/config.c:2092 #, fuzzy msgid "Setting 4" msgstr "Blixtinställning" #: camlibs/ptp2/config.c:2093 #, fuzzy msgid "Setting 5" msgstr "Blixtinställning" #: camlibs/ptp2/config.c:2094 #, fuzzy msgid "Setting 6" msgstr "Blixtinställning" #: camlibs/ptp2/config.c:2095 #, fuzzy msgid "Setting 7" msgstr "Blixtinställning" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, fuzzy, c-format msgid "Unknown %d" msgstr "%i (okänd)" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 #, fuzzy msgid "Factory Default" msgstr "Dagsljus" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "" #: camlibs/ptp2/config.c:2246 msgid "Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2272 msgid "RAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2273 msgid "mRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2274 msgid "sRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2275 msgid "RAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2276 msgid "mRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2277 msgid "sRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "" #: camlibs/ptp2/config.c:2305 #, fuzzy msgid "Timer 10 sec" msgstr "Fjärr" #: camlibs/ptp2/config.c:2306 #, fuzzy msgid "Timer 2 sec" msgstr "Fjärr" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, fuzzy, c-format msgid "Auto ISO" msgstr "Auto" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, fuzzy, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, fuzzy, c-format msgid "%d Multi Frame Noise Reduction" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:2453 #, fuzzy msgid "Multi Frame Noise Reduction" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Självutlösare" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "" #: camlibs/ptp2/config.c:2868 #, fuzzy msgid "Automatic (No Flash)" msgstr "Automatisk\n" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 msgid "Sports Action" msgstr "" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 #, fuzzy msgid "Picture Effect" msgstr "Bildinställningar" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "" #: camlibs/ptp2/config.c:2893 #, fuzzy msgid "Pet Portrait" msgstr "Kontrast-" #: camlibs/ptp2/config.c:2894 #, fuzzy msgid "Candlelight" msgstr "Dagsljus" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "" #: camlibs/ptp2/config.c:3032 #, fuzzy msgid "Flourescent" msgstr "Lysrör" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 #, fuzzy msgid "Effects" msgstr "Inspelningsläge" #: camlibs/ptp2/config.c:3075 msgid "U1" msgstr "" #: camlibs/ptp2/config.c:3076 msgid "U2" msgstr "" #: camlibs/ptp2/config.c:3104 #, fuzzy msgid "Back Light" msgstr "Hög" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 #, fuzzy msgid "Timer" msgstr "Självutlösare" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 #, fuzzy msgid "Delayed Remote" msgstr "Fjärr" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "" #: camlibs/ptp2/config.c:3125 #, fuzzy msgid "Selftimer 2s" msgstr "Självutlösare" #: camlibs/ptp2/config.c:3126 #, fuzzy msgid "Selftimer 10s" msgstr "Självutlösare" #: camlibs/ptp2/config.c:3127 msgid "Bracketing C 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3128 msgid "Bracketing C 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3129 msgid "Bracketing C 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3130 msgid "Bracketing C 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3131 msgid "Bracketing C 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3132 msgid "Bracketing S 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3133 msgid "Bracketing S 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3134 msgid "Bracketing S 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3135 msgid "Bracketing S 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3136 msgid "Bracketing S 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3137 msgid "Bracketing WB Lo" msgstr "" #: camlibs/ptp2/config.c:3138 msgid "Bracketing WB Hi" msgstr "" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 #, fuzzy msgid "Centre-spot" msgstr "Foto" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "" #: camlibs/ptp2/config.c:3154 msgid "Group-dynamic AF" msgstr "" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "" #: camlibs/ptp2/config.c:3165 msgid "3D Tracking" msgstr "" #: camlibs/ptp2/config.c:3171 #, fuzzy msgid "sRGB (portrait)" msgstr "Kontrast-" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "" #: camlibs/ptp2/config.c:3226 #, fuzzy, c-format msgid "Unknown value 0x%04x" msgstr "okänd (0x%02x)" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 #, fuzzy msgid "Centre" msgstr "Foto" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 #, fuzzy msgid "Bottom" msgstr "Zoom" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 #, fuzzy msgid "Right" msgstr "Hög" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "" #: camlibs/ptp2/config.c:3266 #, fuzzy msgid "Automatic Flash" msgstr "Automatisk\n" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 #, fuzzy msgid "Fill flash" msgstr "Blixt" #: camlibs/ptp2/config.c:3269 #, fuzzy msgid "Red-eye automatic" msgstr "Röda-Ögon Reduktion" #: camlibs/ptp2/config.c:3270 #, fuzzy msgid "Red-eye fill" msgstr "Röda ögon reduktion" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 #, fuzzy msgid "External sync" msgstr "externt" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 #, fuzzy msgid "Auto Slow Sync" msgstr "Långsam Synk" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 #, fuzzy msgid "Red-eye Reduction + Slow Sync" msgstr "Röda-Ögon Reduktion" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3277 #, fuzzy msgid "Red-eye reduction" msgstr "Röda-Ögon Reduktion" #: camlibs/ptp2/config.c:3278 #, fuzzy msgid "Red-eye reduction with slow sync" msgstr "Röda-Ögon Reduktion" #: camlibs/ptp2/config.c:3279 #, fuzzy msgid "Slow sync" msgstr "Långsam Synk" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Långsam Synk" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Svartvit" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "" #: camlibs/ptp2/config.c:3298 #, fuzzy msgid "Color sketch" msgstr "Färgläge" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "" #: camlibs/ptp2/config.c:3302 #, fuzzy msgid "High key" msgstr "Hög" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 #, fuzzy msgid "infinite" msgstr "Oändlighet/fiskögeobjektiv" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "" #: camlibs/ptp2/config.c:3772 #, fuzzy msgid "Normal-area AF" msgstr "Normal" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 #, fuzzy msgid "Manual Focus" msgstr "Ingen manual" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 #, fuzzy msgid "AE/AF Lock" msgstr "Fokusläge" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 #, fuzzy msgid "1 minute" msgstr "41 mm" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 #, fuzzy msgid "10 minutes" msgstr "41 mm" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "" #: camlibs/ptp2/config.c:3828 #, fuzzy msgid "8 mm" msgstr "58 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "" #: camlibs/ptp2/config.c:3842 #, fuzzy msgid "1" msgstr "1x" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 #, fuzzy msgid "2" msgstr "2x" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 #, fuzzy msgid "4" msgstr "4x" #: camlibs/ptp2/config.c:3845 #, fuzzy msgid "8" msgstr "8x" #: camlibs/ptp2/config.c:3846 #, fuzzy msgid "15" msgstr "1.5" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "" #: camlibs/ptp2/config.c:3855 #, fuzzy msgid "20s" msgstr "2.0" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 #, fuzzy msgid "15s" msgstr "1.5" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "" #: camlibs/ptp2/config.c:3858 #, fuzzy msgid "10s" msgstr "1.0" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "" #: camlibs/ptp2/config.c:3916 #, fuzzy msgid "15 minutes" msgstr "41 mm" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 #, fuzzy msgid "Sharper" msgstr "Laddar" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 #, fuzzy msgid "Direct Print" msgstr "Katalogen finns" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 #, fuzzy msgid "Medium Low" msgstr "Medium" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 #, fuzzy msgid "Medium high" msgstr "Medium" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 #, fuzzy msgid "Low contrast" msgstr "Kontrast-" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 #, fuzzy msgid "Medium High" msgstr "Medium" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "" #: camlibs/ptp2/config.c:3976 #, fuzzy msgid "Automatic Macro" msgstr "Automatisk\n" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 #, fuzzy msgid "AI Focus" msgstr "Fokus" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 #, fuzzy msgid "Fluorescent H" msgstr "Lysrör" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 #, fuzzy msgid "Custom Whitebalance PC-1" msgstr "Vitbalans" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 #, fuzzy msgid "Custom Whitebalance PC-2" msgstr "Vitbalans" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 #, fuzzy msgid "Custom Whitebalance PC-3" msgstr "Vitbalans" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "" #: camlibs/ptp2/config.c:4118 #, fuzzy msgid "Low sharpening" msgstr "Laddar" #: camlibs/ptp2/config.c:4120 #, fuzzy msgid "Black & white" msgstr "Svartvit" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 #, fuzzy msgid "AE & Flash" msgstr "EJ Blixt" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 #, fuzzy msgid "AE only" msgstr "redo" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 #, fuzzy msgid "Flash only" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 #, fuzzy msgid "WB bracketing" msgstr "Exponeringsmätning" #: camlibs/ptp2/config.c:4221 #, fuzzy msgid "ADL bracketing" msgstr "Exponeringsmätning" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 #, fuzzy msgid "Remote Mirror Up" msgstr "Datum & Tid" #: camlibs/ptp2/config.c:4248 #, fuzzy msgid "Application Mode 0" msgstr "Operationsläge." #: camlibs/ptp2/config.c:4249 #, fuzzy msgid "Application Mode 1" msgstr "Operationsläge." #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "" #: camlibs/ptp2/config.c:4286 #, fuzzy msgid "Low sensitivity" msgstr "Låg (bäst kvalité)" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "" #: camlibs/ptp2/config.c:4378 #, fuzzy msgid "Flash/speed" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "" #: camlibs/ptp2/config.c:4380 #, fuzzy msgid "Flash/aperture" msgstr "Bländare" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 #, fuzzy msgid "NEF+Fine" msgstr "Fin" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 #, fuzzy msgid "NEF+Normal" msgstr "Normal" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "" #: camlibs/ptp2/config.c:4575 #, fuzzy msgid "RAW+JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "" #: camlibs/ptp2/config.c:4642 #, fuzzy msgid "Optimal quality" msgstr "Bildkvalitet" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "" #: camlibs/ptp2/config.c:4695 #, fuzzy msgid "3 (Normal)" msgstr "Normal" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "" #: camlibs/ptp2/config.c:4780 msgid "Preview" msgstr "" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "" #: camlibs/ptp2/config.c:4788 #, fuzzy msgid "Bracketing burst" msgstr "Exponeringsmätning" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "" #: camlibs/ptp2/config.c:4791 #, fuzzy msgid "Spot metering" msgstr "Punktmätningsläge" #: camlibs/ptp2/config.c:4792 #, fuzzy msgid "Playback" msgstr "Spela upp" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "" #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "" #: camlibs/ptp2/config.c:4871 #, fuzzy msgid "Unknown value" msgstr "%i (okänd)" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "" #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "" #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "" #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 #, fuzzy msgid "Press Full" msgstr "PTP lagring full" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 #, fuzzy msgid "Press 1" msgstr "Portugiska" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 #, fuzzy msgid "Press 2" msgstr "Portugiska" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 #, fuzzy msgid "Press 3" msgstr "Portugiska" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" #: camlibs/ptp2/config.c:5923 #, fuzzy msgid "Internal RAM" msgstr "internt" #: camlibs/ptp2/config.c:5924 #, fuzzy msgid "Memory card" msgstr "Inget kort" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "" #: camlibs/ptp2/config.c:6092 #, fuzzy msgid "Display" msgstr "spela upp" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "" #: camlibs/ptp2/config.c:6359 #, fuzzy msgid "Default gateway" msgstr "Dagsljus" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "" #: camlibs/ptp2/config.c:6412 #, fuzzy msgid "List Wifi profiles" msgstr "Lista alla filer" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "" #: camlibs/ptp2/config.c:6521 #, fuzzy msgid "Power Down" msgstr "EJ extraljus" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 #, fuzzy msgid "Focus Lock" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 #, fuzzy msgid "Bulb Mode" msgstr "LED-läge" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 #, fuzzy msgid "Movie Capture" msgstr "Foto" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 #, fuzzy msgid "Serial Number" msgstr "%sSerienummer: %s\n" #: camlibs/ptp2/config.c:6548 #, fuzzy msgid "Camera Manufacturer" msgstr "Kamera OK.\n" #: camlibs/ptp2/config.c:6550 #, fuzzy msgid "Device Version" msgstr "Version: " #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "" #: camlibs/ptp2/config.c:6556 #, fuzzy msgid "PTP Version" msgstr "Version: " #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 #, fuzzy msgid "DPOF Version" msgstr "Version: " #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 #, fuzzy msgid "AC Power" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:6559 #, fuzzy msgid "External Flash" msgstr "externt" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 #, fuzzy msgid "Battery Level" msgstr "%sBatteritid: %i\n" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 #, fuzzy msgid "Camera Orientation" msgstr "Kamerainställningar" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 #, fuzzy msgid "Flash Open" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 #, fuzzy msgid "Flash Charged" msgstr "CompactFlash kort" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 #, fuzzy msgid "Lens Name" msgstr "Linsläge" #: camlibs/ptp2/config.c:6570 #, fuzzy msgid "Shutter Counter" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/config.c:6571 #, fuzzy msgid "Available Shots" msgstr "Tillgängligt Minne: " #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6576 #, fuzzy msgid "Low Light" msgstr "Hög" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 #, fuzzy msgid "Light Meter" msgstr "Hög" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 #, fuzzy msgid "AF Locked" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 #, fuzzy msgid "FV Locked" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 #, fuzzy msgid "Camera Date and Time" msgstr "Datum och Tid" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 #, fuzzy msgid "Beep Mode" msgstr "LED-läge" #: camlibs/ptp2/config.c:6591 #, fuzzy msgid "Image Comment" msgstr "Bildjustering" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 #, fuzzy msgid "Enable Image Comment" msgstr "Bildjustering" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 #, fuzzy msgid "LCD Off Time" msgstr "Auto Av tid" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 #, fuzzy msgid "Recording Media" msgstr "Inspelningsläge" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 #, fuzzy msgid "Camera Output" msgstr "Kamera OK.\n" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "" #: camlibs/ptp2/config.c:6602 #, fuzzy msgid "EVF Mode" msgstr "LED-läge" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Copyright" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 #, fuzzy msgid "Flicker Reduction" msgstr "Röda-Ögon Reduktion" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "" #: camlibs/ptp2/config.c:6613 #, fuzzy msgid "Focus Info" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6614 #, fuzzy msgid "Focus Area" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6615 #, fuzzy msgid "Auto Power Off" msgstr "Automatisk avstängning (minuter)" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 #, fuzzy msgid "Capture Target" msgstr "Bildinställningar" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 #, fuzzy msgid "Image Format SD" msgstr "Datumformat" #: camlibs/ptp2/config.c:6634 #, fuzzy msgid "Image Format CF" msgstr "Datumformat" #: camlibs/ptp2/config.c:6636 #, fuzzy msgid "Image Format Ext HD" msgstr "Datumformat" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "ISO hastighet" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 #, fuzzy msgid "ISO Auto" msgstr "Auto" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 #, fuzzy msgid "WhiteBalance" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6654 #, fuzzy msgid "WhiteBalance Adjust A" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6655 #, fuzzy msgid "WhiteBalance Adjust B" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6656 #, fuzzy msgid "WhiteBalance X A" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6657 #, fuzzy msgid "WhiteBalance X B" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 #, fuzzy msgid "Color Model" msgstr "Färgläge" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 #, fuzzy msgid "Color Space" msgstr "Färgläge" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6669 #, fuzzy msgid "Auto Focus Mode 2" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 #, fuzzy msgid "Flash Compensation" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 #, fuzzy msgid "AEB Exposure Compensation" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:6685 #, fuzzy msgid "Nikon Flash Mode" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 #, fuzzy msgid "Flash Commander Mode" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:6687 #, fuzzy msgid "Flash Commander Power" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 #, fuzzy msgid "Flash Command Self Mode" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 #, fuzzy msgid "Flash Command Self Compensation" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 #, fuzzy msgid "Flash Command A Mode" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 #, fuzzy msgid "Flash Command A Compensation" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 #, fuzzy msgid "Flash Command B Mode" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 #, fuzzy msgid "Flash Command B Compensation" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 #, fuzzy msgid "AF Beep Mode" msgstr "LED-läge" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "" #: camlibs/ptp2/config.c:6702 msgid "Movie F-Number" msgstr "" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 #, fuzzy msgid "Focus Distance" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "" #: camlibs/ptp2/config.c:6710 #, fuzzy msgid "Focus Mode 2" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6712 msgid "Continuous AF" msgstr "" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 #, fuzzy msgid "Effect Mode" msgstr "Inspelningsläge" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 #, fuzzy msgid "Exposure Program" msgstr "Exponeringsmätning" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 #, fuzzy msgid "Scene Mode" msgstr "LED-läge" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 #, fuzzy msgid "HDR Mode" msgstr "LED-läge" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "" #: camlibs/ptp2/config.c:6725 #, fuzzy msgid "Canon Shooting Mode" msgstr "Punktmätningsläge" #: camlibs/ptp2/config.c:6726 #, fuzzy msgid "Canon Auto Exposure Mode" msgstr "Auto exponeringslås" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 #, fuzzy msgid "Drive Mode" msgstr "LED-läge" #: camlibs/ptp2/config.c:6728 #, fuzzy msgid "Picture Style" msgstr "Bildinställningar" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 #, fuzzy msgid "Focus Metering Mode" msgstr "Punktmätningsläge" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 #, fuzzy msgid "Exposure Metering Mode" msgstr "Exponeringsmätning" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 #, fuzzy msgid "Focusing Point" msgstr "Fokuseringsfel." #: camlibs/ptp2/config.c:6738 #, fuzzy msgid "Capture Delay" msgstr "Foto" #: camlibs/ptp2/config.c:6742 #, fuzzy msgid "Shutter Speed 2" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 #, fuzzy msgid "Metering Mode" msgstr "Punktmätningsläge" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 #, fuzzy msgid "AF Distance" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 #, fuzzy msgid "Focus Area Wrap" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6751 #, fuzzy msgid "Exposure Delay Mode" msgstr "Exponeringsmätning" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 #, fuzzy msgid "Exposure Lock" msgstr "Exponering" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 #, fuzzy msgid "Flash Sign" msgstr "Blixtinställning" #: camlibs/ptp2/config.c:6759 #, fuzzy msgid "Modelling Flash" msgstr "Alltid blixt\n" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 #, fuzzy msgid "Image Review" msgstr "Bildstorlek" #: camlibs/ptp2/config.c:6762 #, fuzzy msgid "Image Rotation Flag" msgstr "Kamerainställningar" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 #, fuzzy msgid "Flash Mode Manual Power" msgstr "Blixt Läge" #: camlibs/ptp2/config.c:6765 #, fuzzy msgid "Auto Focus Area" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 #, fuzzy msgid "Flash Exposure Compensation" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 #, fuzzy msgid "Bracketing" msgstr "Exponeringsmätning" #: camlibs/ptp2/config.c:6769 #, fuzzy msgid "Bracket Mode" msgstr "LED-läge" #: camlibs/ptp2/config.c:6770 #, fuzzy msgid "EV Step" msgstr "ISO hastighet" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 #, fuzzy msgid "Bracket Set" msgstr "Auto, röda-ögon reduktion" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 #, fuzzy msgid "Auto White Balance Bias" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 #, fuzzy msgid "Tungsten White Balance Bias" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 #, fuzzy msgid "Fluorescent White Balance Bias" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 #, fuzzy msgid "Daylight White Balance Bias" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 #, fuzzy msgid "Flash White Balance Bias" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 #, fuzzy msgid "Cloudy White Balance Bias" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 #, fuzzy msgid "Shady White Balance Bias" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6794 #, fuzzy msgid "White Balance Bias Preset Nr" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6795 #, fuzzy msgid "White Balance Bias Preset 0" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6796 #, fuzzy msgid "White Balance Bias Preset 1" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6797 #, fuzzy msgid "White Balance Bias Preset 2" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6798 #, fuzzy msgid "White Balance Bias Preset 3" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6799 #, fuzzy msgid "White Balance Bias Preset 4" msgstr "Vitbalans" #: camlibs/ptp2/config.c:6800 #, fuzzy msgid "Selftimer Delay" msgstr "Självutlösningstid" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 #, fuzzy msgid "Flash Shutter Speed" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 #, fuzzy msgid "Remote Timeout" msgstr "Datum & Tid" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 #, fuzzy msgid "Remote Mode" msgstr "Inspelningsläge" #: camlibs/ptp2/config.c:6805 #, fuzzy msgid "Application Mode" msgstr "Operationsläge." #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 #, fuzzy msgid "Sharpening" msgstr "Laddar" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 #, fuzzy msgid "Tone Compensation" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 #, fuzzy msgid "Saturation" msgstr "Konfiguration" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 #, fuzzy msgid "Hue Adjustment" msgstr "Bildjustering" #: camlibs/ptp2/config.c:6811 #, fuzzy msgid "Auto Exposure Bracketing" msgstr "Exponeringsmätning" #: camlibs/ptp2/config.c:6812 #, fuzzy msgid "Movie Sound" msgstr "Ljud" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 #, fuzzy msgid "Manual Movie Setting" msgstr "Bildinställningar" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 #, fuzzy msgid "Video Mode" msgstr "Inspelningsläge" #: camlibs/ptp2/config.c:6835 #, fuzzy msgid "Meter Off Time" msgstr "Auto Av tid" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 #, fuzzy msgid "Movie Quality" msgstr "Bildkvalitet" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 #, fuzzy msgid "Minimum Shutter Speed" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/config.c:6862 #, fuzzy msgid "Movie Resolution" msgstr "Fil upplösning" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 #, fuzzy msgid "Continuous Shooting Speed Slow" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "" #: camlibs/ptp2/config.c:6869 #, fuzzy msgid "Focus Metering" msgstr "Punktmätningsläge" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 #, fuzzy msgid "High ISO Noise Reduction" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 #, fuzzy msgid "Continuous Shooting Speed High" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 #, fuzzy msgid "JPEG Compression Policy" msgstr "Kompression" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 #, fuzzy msgid "AF Lock On" msgstr "Fokusläge" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "Exponeringskompensation" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 #, fuzzy msgid "Raw Compression" msgstr "Kompression" #: camlibs/ptp2/config.c:6922 #, fuzzy msgid "Image Quality 2" msgstr "Bildkvalitet" #: camlibs/ptp2/config.c:6944 #, fuzzy msgid "Image Settings" msgstr "Kamerainställningar" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 #, fuzzy msgid "Capture Settings" msgstr "Bildinställningar" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 #, fuzzy msgid "Other PTP Device Properties" msgstr "PTP enhet egenskap stöds ej" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "" #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "" #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "" #: camlibs/ptp2/library.c:2537 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "Din kamera stödjer inte ändring av filnamn." #: camlibs/ptp2/library.c:2545 #, fuzzy msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "Din kamera stödjer inte ändring av filnamn." #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 #, fuzzy msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "Din kamera stödjer inte ändring av filnamn." #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "" #: camlibs/ptp2/library.c:2799 #, fuzzy msgid "Sorry, your camera does not support Nikon capture" msgstr "Din kamera stödjer inte ändring av filnamn." #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 #, fuzzy msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Din kamera stödjer inte ändring av filnamn." #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 msgid "Canon EOS Half-Press failed" msgstr "" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 msgid "Canon EOS Half-Release failed" msgstr "" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 msgid "Canon EOS Full-Press failed" msgstr "" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 msgid "Canon EOS Full-Release failed" msgstr "" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" #: camlibs/ptp2/library.c:3332 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "Din kamera stödjer inte ändring av filnamn." #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 msgid "Canon Capture failed" msgstr "" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 #, fuzzy msgid "Sorry, your camera does not support generic capture" msgstr "Din kamera stödjer inte ändring av filnamn." #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" #: camlibs/ptp2/library.c:4668 #, fuzzy msgid "read only" msgstr "redo" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, fuzzy, c-format msgid "Manufacturer: %s\n" msgstr "%sTillverkare: %s\n" #: camlibs/ptp2/library.c:4800 #, fuzzy, c-format msgid "Model: %s\n" msgstr "Modell: " #: camlibs/ptp2/library.c:4802 #, fuzzy, c-format msgid " Version: %s\n" msgstr "Version: " #: camlibs/ptp2/library.c:4805 #, fuzzy, c-format msgid " Serial Number: %s\n" msgstr "%sSerienummer: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "" #: camlibs/ptp2/library.c:4821 #, fuzzy, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "Fastvaruversion: %d.%02d\n" #: camlibs/ptp2/library.c:4828 #, fuzzy, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Operationsläge." #: camlibs/ptp2/library.c:4833 #, fuzzy, c-format msgid "" "\n" "Capture Formats: " msgstr "Datumformat" #: camlibs/ptp2/library.c:4847 #, fuzzy, c-format msgid "Display Formats: " msgstr "Datumformat" #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr "" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "" #: camlibs/ptp2/library.c:4902 #, fuzzy, c-format msgid "File Deletion, " msgstr "Fil upplösning" #: camlibs/ptp2/library.c:4904 #, fuzzy, c-format msgid "No File Deletion, " msgstr "Fil upplösning" #: camlibs/ptp2/library.c:4908 #, fuzzy, c-format msgid "File Upload\n" msgstr "Laddar upp fil..." #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4920 #, fuzzy, c-format msgid "Open Capture, " msgstr "Foto" #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4929 #, fuzzy, c-format msgid "Canon Capture" msgstr "Foto" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "" #: camlibs/ptp2/library.c:4947 #, fuzzy, c-format msgid "Nikon Capture 1" msgstr "Foto" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "" #: camlibs/ptp2/library.c:4965 #, fuzzy, c-format msgid "Sony Capture" msgstr "Foto" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "" #: camlibs/ptp2/library.c:4991 #, fuzzy, c-format msgid "\tCanon Wifi support\n" msgstr "Kort stöds ej." #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, fuzzy, c-format msgid "Unknown: 0x%04x\n" msgstr "okänd (0x%02x)" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "" #: camlibs/ptp2/library.c:5043 #, fuzzy msgid "Generic Flat" msgstr "Generellt" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "" #: camlibs/ptp2/library.c:5056 #, fuzzy msgid "Read-Only" msgstr "Klar" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5075 #, fuzzy, c-format msgid "\tFree Space (Images): %d\n" msgstr "Antal bilder: %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr "" #: camlibs/ptp2/library.c:5116 #, fuzzy, c-format msgid "cannot be queried.\n" msgstr "Kortet kan ej skrivas." #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr "" #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "" #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "" #: camlibs/ptp2/library.c:6414 #, fuzzy msgid "Device does not support setting object protection." msgstr "Denna kamera stödjer inte sättning av konfigurationsparametrar." #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "" #: camlibs/ptp2/library.c:6870 #, fuzzy msgid "Initializing Camera" msgstr "Stänger av kameran" #: camlibs/ptp2/library.c:7254 #, fuzzy, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "PTP endast implementerat för USB kamror." #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "PTP odefinierat fel" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP OK!" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "PTP generellt fel" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP sessionen inte öppen" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP ogiltig transaktion" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "PTP operationen stöds ej" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "PTP parameter stöds ej" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP ofullständig överföring" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP ogiltig lagrings ID" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "PTP ogiltigt objekt hantag" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "PTP enhet egenskap stöds ej" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP ogiltigt objektformatkod" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP lagring full" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP objekt skrivskyddat" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "PTP lagring skrivskyddad" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP åtkomst nekad" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP ingen minibild tillgänglig" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP självtest misslyckades" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP delvis radering" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "PTP lagring inte tillgänglig" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "PTP specifikation av format stöds ej" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "PTP ingen giltig objekt information" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP ogiltig format kod" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "PTP okänd tillvekarkod" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP fotografering redan avslutad" #: camlibs/ptp2/ptp.c:4038 #, fuzzy msgid "PTP Device Busy" msgstr "PTP enhets buss" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "PTP ogiltigt förändra objekt" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "PTP ogiltig enhets parameter format" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "PTP ogiltigt enhets parameter värde" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "PTP ogiltig parameter" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP sessionen redan öppen" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP transaktionen avbruten" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "PTP specifikationen av mottagare stöds ej" #: camlibs/ptp2/ptp.c:4047 #, fuzzy msgid "Filename Required" msgstr "PTP EK filnamn krävs" #: camlibs/ptp2/ptp.c:4048 #, fuzzy msgid "Filename Conflicts" msgstr "PTP EK filnamns konflikt" #: camlibs/ptp2/ptp.c:4049 #, fuzzy msgid "Filename Invalid" msgstr "PTP EK filnamn ogiltigt" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "" #: camlibs/ptp2/ptp.c:4052 #, fuzzy msgid "Out of Focus" msgstr "Slut på minne" #: camlibs/ptp2/ptp.c:4053 #, fuzzy msgid "Change Camera Mode Failed" msgstr "%sKameramodell: %s\n" #: camlibs/ptp2/ptp.c:4054 #, fuzzy msgid "Invalid Status" msgstr "Ogiltigt" #: camlibs/ptp2/ptp.c:4055 #, fuzzy msgid "Set Property Not Supported" msgstr "PTP enhet egenskap stöds ej" #: camlibs/ptp2/ptp.c:4056 #, fuzzy msgid "Whitebalance Reset Error" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "" #: camlibs/ptp2/ptp.c:4058 #, fuzzy msgid "Shutter Speed Bulb" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "" #: camlibs/ptp2/ptp.c:4066 #, fuzzy msgid "Unknown Command" msgstr "Okänd modell" #: camlibs/ptp2/ptp.c:4067 #, fuzzy msgid "Operation Refused" msgstr "Operationen avbruten." #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "" #: camlibs/ptp2/ptp.c:4069 #, fuzzy msgid "Battery Low" msgstr "batteri" #: camlibs/ptp2/ptp.c:4070 #, fuzzy msgid "Camera Not Ready" msgstr "Kameramodell (skrivskyddad)" #: camlibs/ptp2/ptp.c:4072 #, fuzzy msgid "PTP Timeout" msgstr "Datum & Tid" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "" #: camlibs/ptp2/ptp.c:4075 #, fuzzy msgid "PTP Response Expected" msgstr "PTP protokollfel, svar förväntat" #: camlibs/ptp2/ptp.c:4076 #, fuzzy msgid "PTP Data Expected" msgstr "PTP protokollfel, data föråldrat" #: camlibs/ptp2/ptp.c:4077 #, fuzzy msgid "PTP I/O Error" msgstr "PTP I/O fel" #: camlibs/ptp2/ptp.c:4101 #, fuzzy msgid "Undefined PTP Property" msgstr "PTP odefinierat fel" #: camlibs/ptp2/ptp.c:4103 #, fuzzy msgid "Functional Mode" msgstr "Operationsläge." #: camlibs/ptp2/ptp.c:4105 #, fuzzy msgid "Compression Setting" msgstr "Kompression" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "" #: camlibs/ptp2/ptp.c:4114 #, fuzzy msgid "Exposure Time" msgstr "Exponering med bollslutare" #: camlibs/ptp2/ptp.c:4115 #, fuzzy msgid "Exposure Program Mode" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "" #: camlibs/ptp2/ptp.c:4119 #, fuzzy msgid "Exposure Bias Compensation" msgstr "Exponeringskompensation" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 #, fuzzy msgid "Contrast" msgstr "Kontrast-" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Digital Zoom" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "" #: camlibs/ptp2/ptp.c:4134 #, fuzzy msgid "Copyright Info" msgstr "Copyright" #: camlibs/ptp2/ptp.c:4135 msgid "Supported Streams" msgstr "" #: camlibs/ptp2/ptp.c:4136 msgid "Enabled Streams" msgstr "" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Datumformat" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Fil upplösning" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "Bildkvalitet" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Kontrast-" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "LCD Ljusstyrka" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Datumformat" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 #, fuzzy msgid "Date Time Stamp Format" msgstr "Datumformat" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "" #: camlibs/ptp2/ptp.c:4159 #, fuzzy msgid "Power Saving" msgstr "EJ extraljus" #: camlibs/ptp2/ptp.c:4160 #, fuzzy msgid "UI Language" msgstr "Språk" #: camlibs/ptp2/ptp.c:4169 #, fuzzy msgid "Battery Type" msgstr "batteri" #: camlibs/ptp2/ptp.c:4170 #, fuzzy msgid "Battery Mode" msgstr "batteri" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "" #: camlibs/ptp2/ptp.c:4172 #, fuzzy msgid "Camera Mode" msgstr "%sKameramodell: %s\n" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "" #: camlibs/ptp2/ptp.c:4176 #, fuzzy msgid "Self Time" msgstr "Självutlösare" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 #, fuzzy msgid "Shooting Mode" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/ptp.c:4180 #, fuzzy msgid "Image Mode" msgstr "Bildstorlek" #: camlibs/ptp2/ptp.c:4187 #, fuzzy msgid "Slow Shutter Setting" msgstr "Foto-inställningar" #: camlibs/ptp2/ptp.c:4188 #, fuzzy msgid "AF Mode" msgstr "LED-läge" #: camlibs/ptp2/ptp.c:4189 #, fuzzy msgid "Image Stabilization" msgstr "Kamerainställningar" #: camlibs/ptp2/ptp.c:4191 #, fuzzy msgid "Color Gain" msgstr "Färginställningar" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "" #: camlibs/ptp2/ptp.c:4194 #, fuzzy msgid "Parameter Set" msgstr "Parameter 1" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "" #: camlibs/ptp2/ptp.c:4207 #, fuzzy msgid "Capture Transfer Mode" msgstr "%sKameramodell: %s\n" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "" #: camlibs/ptp2/ptp.c:4210 #, fuzzy msgid "Size Quality Mode" msgstr "Bildkvalitet" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "" #: camlibs/ptp2/ptp.c:4217 #, fuzzy msgid "Camera Owner" msgstr "Kamera OK.\n" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "" #: camlibs/ptp2/ptp.c:4219 #, fuzzy msgid "Camera Body ID" msgstr "%sKameramodell: %s\n" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "" #: camlibs/ptp2/ptp.c:4223 #, fuzzy msgid "Digital Zoom Magnification" msgstr "Digital Zoom" #: camlibs/ptp2/ptp.c:4224 #, fuzzy msgid "Ml Spot Position" msgstr "Fokusläge" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "" #: camlibs/ptp2/ptp.c:4239 #, fuzzy msgid "Model ID" msgstr "Modell: " #: camlibs/ptp2/ptp.c:4248 #, fuzzy msgid "Shooting Bank" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "" #: camlibs/ptp2/ptp.c:4278 #, fuzzy msgid "White Balance Preset Number" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4280 #, fuzzy msgid "White Balance Preset Name 0" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4282 #, fuzzy msgid "White Balance Preset Name 1" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4284 #, fuzzy msgid "White Balance Preset Name 2" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4286 #, fuzzy msgid "White Balance Preset Name 3" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4288 #, fuzzy msgid "White Balance Preset Name 4" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4290 #, fuzzy msgid "White Balance Preset Value 0" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4292 #, fuzzy msgid "White Balance Preset Value 1" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4294 #, fuzzy msgid "White Balance Preset Value 2" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4296 #, fuzzy msgid "White Balance Preset Value 3" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4298 #, fuzzy msgid "White Balance Preset Value 4" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "" #: camlibs/ptp2/ptp.c:4360 #, fuzzy msgid "Focus Area Zone" msgstr "Fokusläge" #: camlibs/ptp2/ptp.c:4362 #, fuzzy msgid "Enable Copyright" msgstr "Copyright" #: camlibs/ptp2/ptp.c:4366 #, fuzzy msgid "Exposure ISO Step" msgstr "Exponering med bollslutare" #: camlibs/ptp2/ptp.c:4368 #, fuzzy msgid "Exposure Step" msgstr "Exponering med bollslutare" #: camlibs/ptp2/ptp.c:4370 #, fuzzy msgid "Exposure Compensation (EV)" msgstr "Exponeringskompensation" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "" #: camlibs/ptp2/ptp.c:4376 #, fuzzy msgid "Exposure Base Matrix" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:4378 #, fuzzy msgid "Exposure Base Center" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:4380 #, fuzzy msgid "Exposure Base Spot" msgstr "Exponering med bollslutare" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "" #: camlibs/ptp2/ptp.c:4390 #, fuzzy msgid "Auto Meter Off Time" msgstr "Auto Av tid" #: camlibs/ptp2/ptp.c:4392 #, fuzzy msgid "Self Timer Delay" msgstr "Självutlösningstid" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "" #: camlibs/ptp2/ptp.c:4398 #, fuzzy msgid "Auto Off Timers" msgstr "Auto Av tid" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "" #: camlibs/ptp2/ptp.c:4402 #, fuzzy msgid "Shooting Speed" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/ptp.c:4406 #, fuzzy msgid "Exposure delay mode" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 #, fuzzy msgid "Long Exposure Noise Reduction" msgstr "Exponeringskompensation" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "" #: camlibs/ptp2/ptp.c:4418 #, fuzzy msgid "High ISO noise reduction" msgstr "Exponeringskompensation" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "" #: camlibs/ptp2/ptp.c:4424 #, fuzzy msgid "Copyright Information" msgstr "Copyright" #: camlibs/ptp2/ptp.c:4432 #, fuzzy msgid "Modeling Flash" msgstr "Alltid blixt\n" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "" #: camlibs/ptp2/ptp.c:4440 #, fuzzy msgid "Auto Bracket Selection" msgstr "Auto, röda-ögon reduktion" #: camlibs/ptp2/ptp.c:4441 #, fuzzy msgid "NIKON Auto Bracketing Set" msgstr "Auto, röda-ögon reduktion" #: camlibs/ptp2/ptp.c:4443 #, fuzzy msgid "Center Button Shooting Mode" msgstr "Punktmätningsläge" #: camlibs/ptp2/ptp.c:4445 #, fuzzy msgid "Center Button Playback Mode" msgstr "Nuvarande läge: Uppspelningsläge\n" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "" #: camlibs/ptp2/ptp.c:4457 #, fuzzy msgid "Aperture Setting" msgstr "Bildinställningar" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "" #: camlibs/ptp2/ptp.c:4465 #, fuzzy msgid "Center Button Zoom Ratio" msgstr "Punktmätningsläge" #: camlibs/ptp2/ptp.c:4467 #, fuzzy msgid "Function Button 2" msgstr "Operationsläge." #: camlibs/ptp2/ptp.c:4471 #, fuzzy msgid "Normal AF On" msgstr "Normal" #: camlibs/ptp2/ptp.c:4473 #, fuzzy msgid "Clean Image Sensor" msgstr "Kamerainställningar" #: camlibs/ptp2/ptp.c:4475 #, fuzzy msgid "Image Comment String" msgstr "Bildjustering" #: camlibs/ptp2/ptp.c:4477 #, fuzzy msgid "Image Comment Enable" msgstr "Bildjustering" #: camlibs/ptp2/ptp.c:4479 #, fuzzy msgid "Image Rotation" msgstr "Kamerainställningar" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "" #: camlibs/ptp2/ptp.c:4497 #, fuzzy msgid "Bracketing Enable" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:4499 #, fuzzy msgid "Exposure Bracketing Step" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:4501 #, fuzzy msgid "Exposure Bracketing Program" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:4503 #, fuzzy msgid "Auto Exposure Bracket Count" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:4504 #, fuzzy msgid "White Balance Bracket Step" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4505 #, fuzzy msgid "White Balance Bracket Program" msgstr "Vitbalans" #: camlibs/ptp2/ptp.c:4507 #, fuzzy msgid "Lens ID" msgstr "Linsläge" #: camlibs/ptp2/ptp.c:4509 #, fuzzy msgid "Lens Sort" msgstr "Linsläge" #: camlibs/ptp2/ptp.c:4511 #, fuzzy msgid "Lens Type" msgstr "Linsläge" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "" #: camlibs/ptp2/ptp.c:4523 #, fuzzy msgid "Auto Off Photo" msgstr "Auto Av tid" #: camlibs/ptp2/ptp.c:4525 #, fuzzy msgid "Auto Off Menu" msgstr "Auto Av tid" #: camlibs/ptp2/ptp.c:4527 #, fuzzy msgid "Auto Off Info" msgstr "Auto Av tid" #: camlibs/ptp2/ptp.c:4529 #, fuzzy msgid "Self Timer Shot Number" msgstr "Självutlösningstid" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "" #: camlibs/ptp2/ptp.c:4537 #, fuzzy msgid "Nikon Exposure Time" msgstr "Exponering med bollslutare" #: camlibs/ptp2/ptp.c:4539 #, fuzzy msgid "Warning Status" msgstr "Kortstatus:\t\t" #: camlibs/ptp2/ptp.c:4546 #, fuzzy msgid "AF LCD Top Mode 2" msgstr "LCD-läge" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "" #: camlibs/ptp2/ptp.c:4552 #, fuzzy msgid "Exposure Meter" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:4556 #, fuzzy msgid "USB Speed" msgstr "ISO hastighet" #: camlibs/ptp2/ptp.c:4558 #, fuzzy msgid "CCD Serial Number" msgstr "%sSerienummer: %s\n" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "" #: camlibs/ptp2/ptp.c:4564 #, fuzzy msgid "FNumber Lock" msgstr "Fokusläge" #: camlibs/ptp2/ptp.c:4566 #, fuzzy msgid "Exposure Aperture Lock" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:4568 #, fuzzy msgid "TV Lock Setting" msgstr "Foto-inställningar" #: camlibs/ptp2/ptp.c:4570 #, fuzzy msgid "AV Lock Setting" msgstr "Foto-inställningar" #: camlibs/ptp2/ptp.c:4572 #, fuzzy msgid "Illum Setting" msgstr "Kamerainställningar" #: camlibs/ptp2/ptp.c:4574 #, fuzzy msgid "Focus Point Bright" msgstr "Fokuseringsfel." #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 #, fuzzy msgid "External Flash Mode" msgstr "Blixt Läge" #: camlibs/ptp2/ptp.c:4584 #, fuzzy msgid "External Flash Compensation" msgstr "Exponeringskompensation" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "" #: camlibs/ptp2/ptp.c:4604 #, fuzzy msgid "BW Contrast" msgstr "Kontrast-" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "" #: camlibs/ptp2/ptp.c:4614 #, fuzzy msgid "Flourescent Type" msgstr "Lysrör" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "" #: camlibs/ptp2/ptp.c:4618 #, fuzzy msgid "Tune Preset 0" msgstr "Portugiska" #: camlibs/ptp2/ptp.c:4620 #, fuzzy msgid "Tune Preset 1" msgstr "Portugiska" #: camlibs/ptp2/ptp.c:4622 #, fuzzy msgid "Tune Preset 2" msgstr "Portugiska" #: camlibs/ptp2/ptp.c:4624 #, fuzzy msgid "Tune Preset 3" msgstr "Portugiska" #: camlibs/ptp2/ptp.c:4626 #, fuzzy msgid "Tune Preset 4" msgstr "Portugiska" #: camlibs/ptp2/ptp.c:4630 #, fuzzy msgid "Autofocus Mode" msgstr "Fokusläge" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "" #: camlibs/ptp2/ptp.c:4656 #, fuzzy msgid "Auto FP" msgstr "Auto" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "" #: camlibs/ptp2/ptp.c:4662 #, fuzzy msgid "Battery Cell Kind" msgstr "%sBatteritid: %i\n" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "" #: camlibs/ptp2/ptp.c:4670 #, fuzzy msgid "Info Disp Setting" msgstr "Blixtinställning" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "" #: camlibs/ptp2/ptp.c:4684 #, fuzzy msgid "Live View Mode" msgstr "LED-läge" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "" #: camlibs/ptp2/ptp.c:4694 #, fuzzy msgid "Exposure Display Status" msgstr "Exponering med bollslutare" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "" #: camlibs/ptp2/ptp.c:4700 #, fuzzy msgid "Exposure Indicate Lightup" msgstr "Exponering med bollslutare" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "" #: camlibs/ptp2/ptp.c:4708 #, fuzzy msgid "Flash MRepeat Count" msgstr "Blixt Läge" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "" #: camlibs/ptp2/ptp.c:4749 #, fuzzy msgid "Image Compression" msgstr "Kompression" #: camlibs/ptp2/ptp.c:4758 #, fuzzy msgid "Secure Time" msgstr "Exponering med bollslutare" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "" #: camlibs/ptp2/ptp.c:4782 #, fuzzy msgid "Quality" msgstr "Bildkvalitet" #: camlibs/ptp2/ptp.c:4783 #, fuzzy msgid "Release Mode" msgstr "Blixt Läge" #: camlibs/ptp2/ptp.c:4784 #, fuzzy msgid "Focus Areas" msgstr "Fokusläge" #: camlibs/ptp2/ptp.c:4785 #, fuzzy msgid "AE Lock" msgstr "Exponering" #: camlibs/ptp2/ptp.c:4797 #, fuzzy msgid "Image size" msgstr "Bildstorlek" #: camlibs/ptp2/ptp.c:4798 #, fuzzy msgid "Shutter speed" msgstr "Slutartid sekunder (0 auto)" #: camlibs/ptp2/ptp.c:4799 msgid "Color temperature" msgstr "" #: camlibs/ptp2/ptp.c:4802 #, fuzzy msgid "Expose Index" msgstr "Exponering med bollslutare" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 #, fuzzy msgid "Still Image" msgstr "Bild" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "" #: camlibs/ptp2/ptp.c:4940 #, fuzzy msgid "JPEG Norm" msgstr "JPEG" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Bländande" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "" #: camlibs/ptp2/ptp.c:4966 #, fuzzy msgid "Automatic flash" msgstr "Automatisk\n" #: camlibs/ptp2/ptp.c:4969 #, fuzzy msgid "Automatic Red-eye Reduction" msgstr "Auto, röda-ögon reduktion" #: camlibs/ptp2/ptp.c:4970 #, fuzzy msgid "Red-eye fill flash" msgstr "Röda ögon reduktion" #: camlibs/ptp2/ptp.c:4988 #, fuzzy msgid "Power Wind" msgstr "EJ extraljus" #: camlibs/ptp2/ptp.c:4994 #, fuzzy msgid "Timer + Remote" msgstr "Fjärr" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "" #: camlibs/ptp2/ptp.c:5056 #, fuzzy msgid "Flash Lock" msgstr "Blixt Läge" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "" #: camlibs/ptp2/ptp.c:5169 #, fuzzy msgid "LCD Backlight" msgstr "LCD Ljusstyrka" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "" #: camlibs/ptp2/ptp.c:5228 #, fuzzy msgid "1 min" msgstr "41 mm" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "" #: camlibs/ptp2/ptp.c:5266 #, fuzzy msgid "Dark on light" msgstr "Dagsljus" #: camlibs/ptp2/ptp.c:5267 #, fuzzy msgid "Light on dark" msgstr "Ljuset för mörkt" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "SuperFin" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "" #: camlibs/ptp2/ptp.c:5345 #, fuzzy msgid "Auto + Red Eye Suppression" msgstr "Auto, röda-ögon reduktion" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "" #: camlibs/ptp2/ptp.c:5370 #, fuzzy msgid "Pan Focus" msgstr "Ingen manual" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5375 #, fuzzy msgid "Continuous Shooting" msgstr "Punktmätningsläge" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "" #: camlibs/ptp2/ptp.c:5386 #, fuzzy msgid "Spot Metering" msgstr "Punktmätningsläge" #: camlibs/ptp2/ptp.c:5387 #, fuzzy msgid "Average Metering" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:5388 #, fuzzy msgid "Evaluative Metering" msgstr "Exponeringsmätning" #: camlibs/ptp2/ptp.c:5389 #, fuzzy msgid "Partial Metering" msgstr "PTP delvis radering" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "" #: camlibs/ptp2/ptp.c:5392 #, fuzzy msgid "Multi-Spot Metering" msgstr "Punktmätningsläge" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 #, fuzzy msgid "High 2" msgstr "Hög" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "" #: camlibs/ptp2/ptp.c:5462 #, fuzzy msgid "Development Parameters 1" msgstr "Parameter 1" #: camlibs/ptp2/ptp.c:5463 #, fuzzy msgid "Development Parameters 2" msgstr "Parameter 2" #: camlibs/ptp2/ptp.c:5464 #, fuzzy msgid "Development Parameters 3" msgstr "Parameter 3" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "" #: camlibs/ptp2/ptp.c:5600 #, fuzzy msgid "Encounter" msgstr "Foto" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "" #: camlibs/ptp2/ptp.c:5605 #, fuzzy msgid "Undefined Audio" msgstr "PTP odefinierat fel" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5612 #, fuzzy msgid "Undefined Video" msgstr "PTP odefinierat fel" #: camlibs/ptp2/ptp.c:5617 #, fuzzy msgid "Undefined Collection" msgstr "PTP odefinierat fel" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5634 #, fuzzy msgid "Undefined Document" msgstr "PTP odefinierat fel" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "" #: camlibs/ptp2/ptp.c:5643 #, fuzzy msgid "Undefined Contact" msgstr "PTP odefinierat fel" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "" #: camlibs/ptp2/ptp.c:5692 #, fuzzy, c-format msgid "Unknown(%04x)" msgstr "okänd (0x%02x)" #: camlibs/ptp2/ptp.c:5702 msgid "Get device info" msgstr "" #: camlibs/ptp2/ptp.c:5703 #, fuzzy msgid "Open session" msgstr "Kompression" #: camlibs/ptp2/ptp.c:5704 #, fuzzy msgid "Close session" msgstr "Kompression" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "" #: camlibs/ptp2/ptp.c:5711 #, fuzzy msgid "Get thumbnail" msgstr "Hämtar minibild..." #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "" #: camlibs/ptp2/ptp.c:5718 #, fuzzy msgid "Self test device" msgstr "PTP självtest misslyckades" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 msgid "Get Vendor Extension Maps" msgstr "" #: camlibs/ptp2/ptp.c:5735 msgid "Get Vendor Device Info" msgstr "" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 msgid "Get Filesystem Manifest" msgstr "" #: camlibs/ptp2/ptp.c:5738 msgid "Get Stream Info" msgstr "" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "" #: camlibs/ptp2/ptp.c:5759 #, fuzzy msgid "Set license response" msgstr "Ej igenkänd respons" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "" #: camlibs/ptp2/ptp.c:5763 #, fuzzy msgid "Get meter response" msgstr "Mottog oväntat svar" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "" #: camlibs/ptp2/ptp.c:5800 #, fuzzy msgid "Send Partial Object" msgstr "PTP ogiltigt förändra objekt" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "%i (okänd)" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "PTP okänd tillvekarkod" #: camlibs/ricoh/g3.c:357 #, fuzzy msgid "Downloading movie..." msgstr "Nerladdning av fil..." #: camlibs/ricoh/g3.c:363 #, fuzzy msgid "Downloading audio..." msgstr "Nerladdning..." #: camlibs/ricoh/g3.c:378 #, fuzzy msgid "Downloading EXIF data..." msgstr "Nerladdning av data..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, fuzzy, c-format msgid "No EXIF data available for %s." msgstr "ej tillgänglig: %s" #: camlibs/ricoh/g3.c:484 #, fuzzy msgid "Could not delete file." msgstr "Kunde inte hitta filen '%s'." #: camlibs/ricoh/g3.c:512 #, fuzzy msgid "Could not remove directory." msgstr "Kunde inte skapa \\DCIM-katalogen." #: camlibs/ricoh/g3.c:540 #, fuzzy msgid "Could not create directory." msgstr "Kunde inte skapa \\DCIM-katalogen." #: camlibs/ricoh/g3.c:559 #, fuzzy, c-format msgid "Version: %s\n" msgstr "Version: " #: camlibs/ricoh/g3.c:564 #, fuzzy, c-format msgid "RTC Status: %d\n" msgstr "Kortstatus:\t\t" #: camlibs/ricoh/g3.c:570 #, fuzzy, c-format msgid "Camera time: %s %s\n" msgstr "%sKamera ID: %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, fuzzy, c-format msgid "Camera ID: %s\n" msgstr "%sKamera ID: %s\n" #: camlibs/ricoh/g3.c:582 #, fuzzy, c-format msgid "No SD Card inserted.\n" msgstr "Kort stöds ej." #: camlibs/ricoh/g3.c:585 #, fuzzy, c-format msgid "SD Card ID: %s\n" msgstr "%sKamera ID: %s\n" #: camlibs/ricoh/g3.c:593 #, fuzzy, c-format msgid "Photos on camera: %d\n" msgstr "Minne i kameran: %d Mbit.\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Ricoh / Philips drivrutin av\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "baserat på Bob Paauwes drivrutin\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "okänd (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Modell: %s\n" "Minne: %d byte(s) av %d tillgängliga" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2.0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1.5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1.0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0.5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0.0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0.5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1.0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1.5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2.0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "128 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Utomhus" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Maximal" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Minimal" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Karaktär" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Ljud" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Bild & Ljud" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Karaktär & Ljud" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Konfiguration" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Generellt" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Copyright (max. 20 tecken)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "Bilder" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Vitbalans" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Inspelningsläge" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Kompression" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "Hastighet %i stöds ej!" #: camlibs/ricoh/ricoh.c:67 #, fuzzy, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "" "Förväntade %i bytes, fick %i. Vänligen rapportera felet till ." #: camlibs/ricoh/ricoh.c:76 #, fuzzy, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "" "Förväntade %i bytes, fick %i. Vänligen rapportera felet till ." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, fuzzy, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "" "Vi Förväntade 0x%x ben mottog 0x%x. Vänligen kontakta ." #: camlibs/ricoh/ricoh.c:221 #, fuzzy, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "" "Dåligt tecken (0x%xm 0x%x). Vänligen kontakta ." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, fuzzy, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "" "Kameran upptagen. Om problemet kvarstår, vänligen kontakta ." #: camlibs/ricoh/ricoh.c:297 #, fuzzy, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "" "Timeout även efter 2 försök. Vänligen kontakta ." #: camlibs/ricoh/ricoh.c:313 #, fuzzy, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "" "Kommunikationsfel även efter 2 försök. Vänligen kontakta ." #: camlibs/ricoh/ricoh.c:351 #, fuzzy, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "" "Kameran är i fel läge. Vänligen kontakta ." #: camlibs/ricoh/ricoh.c:360 #, fuzzy, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "" "Kameran accepterade inte parametrarna. Vänligen kontakta ." #: camlibs/ricoh/ricoh.c:366 #, fuzzy, c-format msgid "An unknown error occurred. Please contact %s." msgstr "" "Ett okänt fel uppstod. Vänligen kontakta ." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "Filnamnets längd kan inte överstiga 12 tecken (%s) har %i tecken)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "Samsung digimax 800k drivrutinen har skrivits av James Mckenzie " " för gphoto. Lutz Müller " "konverterade den till gphoto2. Marcus Meïssner " "fixade och förbättrade konverteringen." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Upplösning plus Storlek" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Datum och Tid (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 #, fuzzy msgid "Aperture Settings" msgstr "Bildinställningar" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Färgläge" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Röda-Ögon Reduktion" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Blixtinställningar" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "Värd kraft besparing (sekunder)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Kamera kraft besparing (skrivskyddad)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Linsläge" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "Koreanska" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "Engelska" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "Franska" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "Tyska" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "Italienska" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "Japanska" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "Spanska" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "Portugiska" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Bildinställningar" #: camlibs/sierra/epson-desc.c:289 #, fuzzy msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "Några anteckningar om Epson kameror:\n" "- Vissa parametrar går inte fjärrstyra:\n" " * zoom\n" " * fokus\n" " * särskild vitbalans-inställning\n" "- Konfigurationen har blivit reverse-engineered med\n" " en PhotoPC 3000z, om din kamera beter sig annorlunda\n" " vanligen skriv ett brev till (på " "Engelska)\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Inget minnes kort isatt." #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "Kan inte hämta batterikapaciteten" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "Batterinivån hos kameran är för låg (%d%%). Operationen avbröts." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Kan inte hämta hur mycket tillgängligt minne som finns kvar" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "Kameran 3 gånger att hålla förbindelsen öppen." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "Den första byten mottogs (0x%x) är inte giltig." #: camlibs/sierra/library.c:738 #, fuzzy, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "Överförringen av paketet avbröts efter %i försök. Vänligen kontakta ." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Kunde inte skicka paketet även efter flera försök." #: camlibs/sierra/library.c:789 #, fuzzy, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "" "Paketet blev avvisat av kameran. Vänligen kontakta ." #: camlibs/sierra/library.c:816 #, fuzzy, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "" "Kunde inte skicka paket (felkod %i). Vänligen kontakta ." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "Överförringen tog för lång tid och avbröts efter %i försök. Ger upp..." #: camlibs/sierra/library.c:926 #, fuzzy, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "" "Fick oväntat resultat 0x%x. Vänligen kontakta ." #: camlibs/sierra/library.c:1025 #, fuzzy, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "" "Mottog oväntat resultat %i. Vänligen kontakta ." #: camlibs/sierra/library.c:1088 #, fuzzy, c-format msgid "Could not get register %i. Please contact %s." msgstr "" "Kunde inte hämta register %i. Vänligen kontakta ." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "För många försök misslyckades." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Hämtar data..." #: camlibs/sierra/library.c:1226 #, fuzzy, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "rekursiva anrop stöds ej av sierra drivrutinen. Vänligen kontakta ." #: camlibs/sierra/library.c:1280 #, fuzzy, c-format msgid "Could not get string register %i. Please contact %s." msgstr "" "Kunde inte hämta sträng register %i. Vänligen kontakta ." #: camlibs/sierra/library.c:1519 #, fuzzy, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "" "Förväntade 32 bytes, fick %i. Vänligen kontakta ." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "Slutartid mikrosekunder (0 auto)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "Slutartid sekunder (0 auto)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "" #: camlibs/sierra/nikon-desc.c:238 #, fuzzy msgid "Slow-sync" msgstr "Långsam Synk" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "Kontrast+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Kontrast-" #: camlibs/sierra/nikon-desc.c:256 #, fuzzy msgid "Brightness+" msgstr "LCD Ljusstyrka" #: camlibs/sierra/nikon-desc.c:257 #, fuzzy msgid "Brightness-" msgstr "LCD Ljusstyrka" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Bildjustering" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "LED-läge" #: camlibs/sierra/nikon-desc.c:326 #, fuzzy msgid "Infinity" msgstr "Oändlighet/fiskögeobjektiv" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Operationsläge." #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "LCD Ljusstyrka" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "LCD Automatisk avstängning (sekunder)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Exponeringsmätning" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "Zoom (i millimeter)" #: camlibs/sierra/nikon-desc.c:543 #, fuzzy msgid "none" msgstr "Ingen" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "" #: camlibs/sierra/nikon-desc.c:547 #, fuzzy msgid "Fisheye" msgstr "Filtyp" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "" #: camlibs/sierra/nikon-desc.c:558 #, fuzzy msgid "Misc exposure/lens settings" msgstr "Diverse exponerings- och linsinställningar" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Auto exponeringslås" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " Kamera konfiguration (eller preferenser):\n" "\n" " Den optiska zoomen fungerar inte helt\n" " korrekt.\n" "\n" " Alla konfigurations inställningar kan\n" " inte läsas eller sättas korrekt, till\n" " exempel, fininställning av vitbalansen,\n" " och språkinställningarna.\n" "\n" " Sätt kameran i 'M'-läge för att sätta\n" " slutarhastigheten.\n" #: camlibs/sierra/nikon-desc.c:743 #, fuzzy msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995:\n" " Kamera konfiguration (preferenser) för denna\n" " kamera är ej kompletta, kontakta gphoto\\n\"\n" " utvecklarna på gphoto-devel@gphoto.net\\n\"\n" " om du skulle vilja bidra till denna drivrutin.\n" "\n" " Nerladdningen bör fungera korrekt.\n" #: camlibs/sierra/olympus-desc.c:483 #, fuzzy msgid "White board" msgstr "Vit tavla" #: camlibs/sierra/olympus-desc.c:484 #, fuzzy msgid "Black board" msgstr "Svart tavla" #: camlibs/sierra/olympus-desc.c:489 #, fuzzy msgid "Color or Function Mode" msgstr "Operationsläge." #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 #, fuzzy msgid "Slow" msgstr "Långsam Synk" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "" #: camlibs/sierra/olympus-desc.c:596 #, fuzzy msgid "Fluorescent-1-home-6700K" msgstr "Lysrör" #: camlibs/sierra/olympus-desc.c:597 #, fuzzy msgid "Fluorescent-2-desk-5000K" msgstr "Lysrör" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "LCD-läge" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Digital zoom" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "Fokusläge" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Tidsformat" #: camlibs/sierra/olympus-desc.c:1147 #, fuzzy msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Några noteringa om Olympus kameror (och andra?):\n" "(1) Kamera-konfiguration:\n" " Ett värde av 0 innebär standardvärdet (auto)\n" "(2) Olympus C-3040Z (och möjligen också C-2040Z och andra)\n" " har ett USB PC-kontroll-läge. För att använda detta\n" " läge, måste kameran vara inställd på 'USB PC control mode'.\n" " För att komma till menyn för att byta lägen, öppna\n" " luckan för minneskortet och tryck och håll nere\n" " båda menyknapparna och LCD knapparna tills kamera kontroll\n" " menyn framträder. Sätt den till på ('ON').\n" "(3) Om du byter 'LCD-läge' till 'Monitor' eller\n" " 'Normal', glöm inte att byta tillbaka till 'Av'\n" " innan du kopplar loss kameran. Annars kan du inte använda\n" " kamerans knappar. Om du hamnar i detta läge, bör du\n" " återansluta kameran till PC:n och ändra LCD till 'Av'." #: camlibs/sierra/olympus-desc.c:1166 #, fuzzy msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Några noteringa om Olympus kameror (och andra?):\n" "(1) Kamera-konfiguration:\n" " Ett värde av 0 innebär standardvärdet (auto)\n" "(2) Olympus C-3040Z (och möjligen också C-2040Z och andra)\n" " har ett USB PC-kontroll-läge. För att använda detta\n" " läge, måste kameran vara inställd på 'USB PC control mode'.\n" " För att komma till menyn för att byta lägen, öppna\n" " luckan för minneskortet och tryck och håll nere\n" " båda menyknapparna och LCD knapparna tills kamera kontroll\n" " menyn framträder. Sätt den till på ('ON').\n" "(3) Om du byter 'LCD-läge' till 'Monitor' eller\n" " 'Normal', glöm inte att byta tillbaka till 'Av'\n" " innan du kopplar loss kameran. Annars kan du inte använda\n" " kamerans knappar. Om du hamnar i detta läge, bör du\n" " återansluta kameran till PC:n och ändra LCD till 'Av'." #: camlibs/sierra/olympus-desc.c:1182 #, fuzzy msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Standard sierra drivrutinen:\n" "\n" " Detta är standard sierra drivrutinen, den\n" " bör vara kapabel att stödja nerladdning och\n" " och bläddring av bilder på din kamera.\n" "\n" " Kamera konfiguration (eller preferenser)\n" " inställningar är baserade på Olympus 3040,\n" " och är sannolikt ej kompletta. Om du\n" " verifierar att konfiguration inställningarna\n" " är kompletta för din kamera, eller du kan bidra\n" " kod för att stödja en komplett konfiguration,\n" " vänligen kontakta gphoto-devel@gphoto.net\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "Filen som skall laddas upp har längd noll" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "Inte tillräckligt med minne tillgängligt på minneskortet" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Kan inte hämta namnet på mappen som innehåller bilderna" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "Uppladdning stöds endast till '%s' mappen." #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Bäst" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (okänd)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "Slutartid (mikrosekunder, 0 auto)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Svartvitt" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "Vit tavla" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Svart tavla" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "Ljusstyrka/Kontrast" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "Ljus+" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "Ljus-" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Dagsljus" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "Oändlighet/fiskögeobjektiv" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "Punktmätningsläge" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1.6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2.5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "Auto av (värd) (i sekunder)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "Hur lång tid tar det tills kameran stänger av sig när den är ansluten till " "datorn?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "Auto av (fält) (i sekunder)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "Hur lång tid tar det tills kameran stänger av sig när den inte ansluten till " "datorn?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "Auto av (i sekunder)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Foto-inställningar" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 #, fuzzy msgid "standard" msgstr "Standard" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "HyPict" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "färger" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "svartvitt" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" "Notera: inget minneskort tillgängligt, vissa värden kan vara ogiltiga\n" #: camlibs/sierra/sierra.c:1948 #, fuzzy, c-format msgid "Camera Model: %s\n" msgstr "%sKameramodell: %s\n" #: camlibs/sierra/sierra.c:1957 #, fuzzy, c-format msgid "Serial Number: %s\n" msgstr "%sSerienummer: %s\n" #: camlibs/sierra/sierra.c:1960 #, fuzzy, c-format msgid "Software Rev.: %s\n" msgstr "%sMjukvaru-revision: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, fuzzy, c-format msgid "Frames Taken: %i\n" msgstr "%sbilder tagna: %i\n" #: camlibs/sierra/sierra.c:1971 #, fuzzy, c-format msgid "Frames Left: %i\n" msgstr "%sbilder kvar: %i\n" #: camlibs/sierra/sierra.c:1973 #, fuzzy, c-format msgid "Battery Life: %i\n" msgstr "%sBatteritid: %i\n" #: camlibs/sierra/sierra.c:1975 #, fuzzy, c-format msgid "Memory Left: %i bytes\n" msgstr "%sMinne kvar: %i byte\n" #: camlibs/sierra/sierra.c:1980 #, fuzzy, c-format msgid "Date: %s" msgstr "%sDatum: %s" #: camlibs/sierra/sierra.c:2041 #, fuzzy msgid "No camera manual available.\n" msgstr "Kameran ej tillgänglig" #: camlibs/sierra/sierra.c:2048 #, fuzzy, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "Några anteckningar om Epson kameror:\n" "- Vissa parametrar går inte fjärrstyra:\n" " * zoom\n" " * fokus\n" " * särskild vitbalans-inställning\n" "- Konfigurationen har blivit reverse-engineered med\n" " en PhotoPC 3000z, om din kamera beter sig annorlunda\n" " vanligen skriv ett brev till (på " "Engelska)\n" #: camlibs/sierra/sierra.c:2060 #, fuzzy msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Några noteringa om Olympus kameror (och andra?):\n" "(1) Kamera-konfiguration:\n" " Ett värde av 0 innebär standardvärdet (auto)\n" "(2) Olympus C-3040Z (och möjligen också C-2040Z och andra)\n" " har ett USB PC-kontroll-läge. För att använda detta\n" " läge, måste kameran vara inställd på 'USB PC control mode'.\n" " För att komma till menyn för att byta lägen, öppna\n" " luckan för minneskortet och tryck och håll nere\n" " båda menyknapparna och LCD knapparna tills kamera kontroll\n" " menyn framträder. Sätt den till på ('ON').\n" "(3) Om du byter 'LCD-läge' till 'Monitor' eller\n" " 'Normal', glöm inte att byta tillbaka till 'Av'\n" " innan du kopplar loss kameran. Annars kan du inte använda\n" " kamerans knappar. Om du hamnar i detta läge, bör du\n" " återansluta kameran till PC:n och ändra LCD till 'Av'." #: camlibs/sierra/sierra.c:2087 #, fuzzy msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "sierra SPARClite bibliotek\n" "Scott Fritzinger \n" "Stöd för sierra-baserade digital kamror\n" "inklusive Olympus, Nikon, Epson, och andra.\n" "\n" "Tack till Data Engines (www.dataengines.com)\n" "för användingen av deras Olympus C-3030Z för USB-stödet." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (okänd)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Sipix StyleCam Blink drivrutin\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Kunde inte applicera USB inställningar" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "Drivrutin för åtkomst av SiPix Web2 kameror." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "Sony DSC-F1 Digital Kamera Stöd\n" "M. Adam Kendall \n" "Baserad på chotplay CLI-gränssnittet av\n" "Ken-ichi Hayashi\n" "Gphoto2-konvertering av Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Sony DSC-F55/505 gPhoto bibliotek\n" "Stödjer Sony MSAC-SR1 och Memory Stick använt av DCR-PC100\n" "Ursprungligen skriven av Mark Davies \n" "gPhoto2 anpassning av Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" #: camlibs/soundvision/soundvision.c:339 #, fuzzy, c-format msgid "Firmware Revision: %8s" msgstr "Fastvaru-revision: %d.%d\n" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Soundvision drivrutin\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" #: camlibs/spca50x/library.c:295 #, fuzzy msgid "spca50x library v" msgstr "gsmart bibliotek v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "Dålig exponering (inte tillräckligt med ljus troligen)" #: camlibs/stv0680/library.c:543 #, fuzzy msgid "Information on STV0680-based camera:\n" msgstr "Information för STV0680-baserad kamera:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Fastvaru-revision: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "ASIC-revision: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "Sensor-ID: %d.%d\n" #: camlibs/stv0680/library.c:562 #, fuzzy, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "Kameran är konfigurerad för blinkande ljus med %dHz.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Minne i kameran: %d Mbit.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "Kameran stöder minibilder.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "Kameran stödjer Video.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "Kamerabilder är svartvita\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "Kameran har minne.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "Kameran stödjer videoformaten: " #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "Försäljar-ID: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "Produkt ID: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "Antal bilder: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "Maximalt antal bilder: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Bildbredd: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "Bildhöjd: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "Bildstorlek: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Minibildbredd: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Minibildhöjd: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Minibildstorlek: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Drivrutin för kameror som använder STV0680-processor-ASIC.\n" "Protokoll reverse engineered m.h.a. CommLite Beta 5\n" "Carsten Weinholz \n" "Utökad för Aiptek PenCam och andra STM USB dubbel-läges kameror." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Hämtar information om %i filer..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z är USB enbart" #: camlibs/topfield/puppy.c:553 #, fuzzy msgid "Driver Settings" msgstr "Andra inställningar" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" #: camlibs/topfield/puppy.c:659 #, fuzzy, c-format msgid "Downloading %s..." msgstr "Laddar ner '%s'..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Laddar kamera-drivrutiner från '%s'..." #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "Ett fel uppstod i io-biblioteket ('%s'): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Kunde inte finna någon kamera." #: libgphoto2/gphoto2-camera.c:750 #, fuzzy, c-format msgid "Could not detect any camera at port %s" msgstr "Kunde inte finna någon kamera." #: libgphoto2/gphoto2-camera.c:774 #, fuzzy msgid "You have to set the port prior to initialization of the camera." msgstr "Du måste sätta porten innan du initialiserar kameran." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Kunde inte ladda nödvändig kameradrivrutin '%s' (%s)." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "Kameradrivrutinen '%s' saknar 'camera_init' funktionen." #: libgphoto2/gphoto2-camera.c:864 #, fuzzy msgid "This camera does not provide any configuration options." msgstr "Denna kamera erbjuder inga konfigurationsalternativ." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "Denna kamera stödjer inte sättning av konfigurationsparametrar." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Denna kamera stödjer inte sammanfattningar." #: libgphoto2/gphoto2-camera.c:960 #, fuzzy msgid "This camera does not provide a manual." msgstr "Denna kamera erbjuder inte en bruksanvisning." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "Denna kamera erbjuder inte information om drivrutinen." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Denna kamera kan inte ta bilder." #: libgphoto2/gphoto2-camera.c:1056 #, fuzzy msgid "This camera can not trigger capture." msgstr "Denna kamera kan inte ta bilder." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Denna kamera kan inte ta förgranskningsbilder." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "Sökvägen '%s' är inte absolut." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "Du har försökt att radera '%s' från mappen '%s', men filsystemet stödjer " "inte radering av filer." #: libgphoto2/gphoto2-filesys.c:1259 #, fuzzy, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "" "Det finns fortfarande undermappar i mappen '%s' som du försöker ta bort." #: libgphoto2/gphoto2-filesys.c:1264 #, fuzzy, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "Det finns fortfarande filer i mappen '%s' som du försöker ta bort." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Filsystemet stödjer inte uppladdning av filer." #: libgphoto2/gphoto2-filesys.c:1359 #, fuzzy, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "Mappen '%s' innehåller endast %i filer, men du begärde en fil med nummer %i." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Filen '%s' kunde inte hittas i mappen '%s'." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Kunde inte hitta filen '%s'." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "Filsystemet stödjer inte nerladdning av filer." #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Okänd filtyp %i." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "Filsystemet har inget stöd för att hämta filinformation" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "Filsystemet har inget stöd för att sätta filinformation" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "Skrivskyddade filattribut som bredd och höjd kan inte ändras." #: libgphoto2/gphoto2-filesys.c:2455 #, fuzzy msgid "The filesystem doesn't support getting storage information" msgstr "Filsystemet har inget stöd för att hämta filinformation" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Skadade data" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Filen finns" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Okänd modell" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Katalogen inte funnen" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Filen inte funnen" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "Katalogen finns" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "Sökvägen är inte absolut" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Operationen avbruten." #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "" #: libgphoto2/gphoto2-result.c:57 #, fuzzy msgid "OS error in camera communication" msgstr "Problem att sätta kamerans kommunikationshastighet" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Okänt kamerabiblioteksfel" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Okänt fel" #~ msgid "Date and Time (readonly)" #~ msgstr "Datum och Tid (skrivskyddad)" #~ msgid "Unavailable" #~ msgstr "Otillgänglig" #~ msgid "Set camera date to PC date" #~ msgstr "Sätt kamerans datum till datorns datum" #~ msgid "Firmware revision (readonly)" #~ msgstr "Fastvarurevision (skrivskyddad)" #~ msgid "Power (readonly)" #~ msgstr "Kraft (skrivskyddad)" #, fuzzy #~ msgid "Unknown (some kind of error)" #~ msgstr "Okänt kamerabiblioteksfel" #~ msgid "Unsupported image type" #~ msgstr "Ej bildformatet stöds ej." #~ msgid "Could not follow the link '%s' (%m)." #~ msgstr "Kunde inte följa länken '%s' (%m)." #~ msgid "Could not follow the link '%s' in '%s' (%m)." #~ msgstr "Kunde inte följa länken '%s' i '%s' (%m)." #~ msgid "Directory Browse" #~ msgstr "Katalogbläddring" #~ msgid "View hidden directories" #~ msgstr "Visa dolda kataloger" #, fuzzy #~ msgid "Unsupported port type: %d. This driver only works with USBcameras.\n" #~ msgstr "" #~ "Porttypen stöds ej: %d. Denna drivrutin fungerar bara med USB kamror.\n" #~ msgid " " #~ msgstr " " #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for KBGear JamCam v2.0 & v3.0 digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Stöd för KBGear JamCam v2.0 & v3.0 digitalkameror\n" #~ "baseras på reverse engineering av serieprotokollet.\n" #~ "\n" #~ msgid "Your camera does not support changing filenames." #~ msgstr "Din kamera stödjer inte ändring av filnamn." #~ msgid "Self Timer (only next picture)" #~ msgstr "Självutlösare (endast nästa bild)" #, fuzzy #~ msgid "2.0m" #~ msgstr "2.0" #, fuzzy #~ msgid "0.5m" #~ msgstr "0.5" #, fuzzy #~ msgid "Day-lt" #~ msgstr "Dagsljus" #~ msgid "There is nothing to summarize for this camera." #~ msgstr "Det finns inget att summera för denna kamera." #~ msgid "No manual" #~ msgstr "Ingen manual" #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for Panasonic Coolshot digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Stöd för Panasonic Coolshot digital kameror\n" #~ "baserad på \"reverse engineering\" av serieprotokollet.\n" #~ "\n" #~ msgid "Manual Not Implemented Yet" #~ msgstr "Manual inte implementerat ännu" #~ msgid "PTP Error: bad parameter" #~ msgstr "PTP fel: felaktig parameter" #, fuzzy #~ msgid "" #~ "PTP2 driver\n" #~ "(c)2001-2003 by Mariusz Woloszyn .\n" #~ "Enjoy!" #~ msgstr "Skrivet av Mariusz Woloszyn . Njut!" #, fuzzy #~ msgid "Camera Time" #~ msgstr "Kamera" #, fuzzy #~ msgid "Macro Mode" #~ msgstr "Inspelningsläge" #, fuzzy #~ msgid "Number of values" #~ msgstr "Antal bilder: %d\n" #, fuzzy #~ msgid "PTP: Undefined Error" #~ msgstr "PTP odefinierat fel" #, fuzzy #~ msgid "PTP: OK!" #~ msgstr "PTP OK!" #, fuzzy #~ msgid "PTP: General Error" #~ msgstr "PTP generellt fel" #, fuzzy #~ msgid "PTP: Session Not Open" #~ msgstr "PTP sessionen inte öppen" #, fuzzy #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP ogiltig transaktion" #, fuzzy #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP operationen stöds ej" #, fuzzy #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP parameter stöds ej" #, fuzzy #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP ofullständig överföring" #, fuzzy #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP ogiltig lagrings ID" #, fuzzy #~ msgid "PTP: Invalid Object Handle" #~ msgstr "PTP ogiltigt objekt hantag" #, fuzzy #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "PTP enhet egenskap stöds ej" #, fuzzy #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP ogiltigt objektformatkod" #, fuzzy #~ msgid "PTP: Store Full" #~ msgstr "PTP lagring full" #, fuzzy #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP objekt skrivskyddat" #, fuzzy #~ msgid "PTP: Store Read Only" #~ msgstr "PTP lagring skrivskyddad" #, fuzzy #~ msgid "PTP: Access Denied" #~ msgstr "PTP åtkomst nekad" #, fuzzy #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP ingen minibild tillgänglig" #, fuzzy #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP självtest misslyckades" #, fuzzy #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP delvis radering" #, fuzzy #~ msgid "PTP: Store Not Available" #~ msgstr "PTP lagring inte tillgänglig" #, fuzzy #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "PTP specifikation av format stöds ej" #, fuzzy #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP ingen giltig objekt information" #, fuzzy #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP ogiltig format kod" #, fuzzy #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "PTP okänd tillvekarkod" #, fuzzy #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP fotografering redan avslutad" #, fuzzy #~ msgid "PTP: Device Busy" #~ msgstr "PTP enhets buss" #, fuzzy #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP ogiltigt förändra objekt" #, fuzzy #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP ogiltig enhets parameter format" #, fuzzy #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP ogiltigt enhets parameter värde" #, fuzzy #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP ogiltig parameter" #, fuzzy #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP sessionen redan öppen" #, fuzzy #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP transaktionen avbruten" #, fuzzy #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "PTP specifikationen av mottagare stöds ej" #, fuzzy #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP EK filnamn krävs" #, fuzzy #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP EK filnamns konflikt" #, fuzzy #~ msgid "PTP: EK Filename Invalid" #~ msgstr "PTP EK filnamn ogiltigt" #, fuzzy #~ msgid "PTP: I/O error" #~ msgstr "PTP I/O fel" #, fuzzy #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP fel: felaktig parameter" #, fuzzy #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP protokollfel, data föråldrat" #, fuzzy #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP protokollfel, svar förväntat" #, fuzzy #~ msgid "Date Time" #~ msgstr "Datum & Tid" #, fuzzy #~ msgid "ShutterSpeed" #~ msgstr "Slutartid sekunder (0 auto)" #, fuzzy #~ msgid "Real Image Width" #~ msgstr "Bildbredd: %d\n" #, fuzzy #~ msgid "Colour Mode" #~ msgstr "Färgläge" #, fuzzy #~ msgid "Exposure Bracketing Distance" #~ msgstr "Exponeringsmätning" #, fuzzy #~ msgid "Incadescent" #~ msgstr "Bländande" #~ msgid "%sCamera ID: %s\n" #~ msgstr "%sKamera ID: %s\n" #~ msgid "Sorry, this function not implemented..." #~ msgstr "Ledsen, denna funktion är inte implementerad..." #~ msgid "Sorry, nothing to configure..." #~ msgstr "Ledsen, inget att konfigurera..." #~ msgid "Sorry, taking pictures is not implemented..." #~ msgstr "Ledsen, att ta bilder är inte implementerat..." #~ msgid "Couldn't open camera.\n" #~ msgstr "Kunde inte öppna kameran.\n" #~ msgid "Error opening camera\n" #~ msgstr "Fel vid öppning av kamera\n" #~ msgid "Picture number is too large.\n" #~ msgstr "Bildnumret är för stort.\n" #~ msgid "" #~ "Sony DSC-F1 Digital Camera Support\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Based on the chotplay CLI interface from\n" #~ "Ken-ichi Hayashi\n" #~ "\n" #~ "This lib may not work. YMMV\n" #~ msgstr "" #~ "Sony DSC-F1 digital kamera stöd\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Baserad på chotplay CLI-gränssnittet av\n" #~ "Ken-ichi Hayashi\n" #~ "\n" #~ "Detta lib kanske inte fungerar. YMMV\n" #, fuzzy #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for digital cameras with a sunplus spca50x chip based on several " #~ "other gphoto2 camlib modules and the information kindly provided by " #~ "Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \\n\"\n" #~ "Stöd för Mustek gSmart mini serien av digital kameror baserade på\n" #~ "flera andra gphoto2 kamerabiblioteks moduler och windows källkoden \n" #~ "vänligen tillhandahållen av Mustek.\n" #~ "\n" #~ msgid "Could not open '%s'" #~ msgstr "Kunde inte öppna '%s'" #~ msgid "Could not find any driver for '%s'" #~ msgstr "Kunde inte finna någon drivrutin för '%s'" #~ msgid "No additional information available." #~ msgstr "Ingen ytterligare information tillgänglig." #~ msgid "Could not load required camera driver '%s'." #~ msgstr "Kunde inte ladda nödvändig kameradrivrutin '%s'." #~ msgid "Could not append folder '%s' as this folder already exists." #~ msgstr "" #~ "Kunde inte lägga till mappen '%s' eftersom denna mapp redan existerar." #~ msgid "Could not find folder '%s'." #~ msgstr "Kunde inte hitta mapp '%s'" #~ msgid "Folder '%s' does not contain a folder '%s'." #~ msgstr "Mapp '%s' innehåller inte någon mapp '%s'." #~ msgid "" #~ "Could not append '%s' to folder '%s' because this file already exists." #~ msgstr "" #~ "Kunde inte lägga till '%s' till mapp '%s' eftersom denna fil redan " #~ "existerar." #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "Laddar ner '%s' från mappen '%s'..." #~ msgid "" #~ "Could not open '/proc/meminfo' for reading ('%m'). Make sure the proc " #~ "filesystem is mounted." #~ msgstr "" #~ "Kunde inte öppna '/proc/meminfo' för läsning ('%m'). Se till att proc-" #~ "filsystemet är monterat." #~ msgid "An error occured while reading '/proc/meminfo' ('%m')." #~ msgstr "Ett fel uppstod vid läsning av '/proc/meminfo' ('%m')." #~ msgid "sysctl call failed ('%m')." #~ msgstr "sysctl anropet misslyckades ('%m')." #, fuzzy #~ msgid "sysconf call failed ('%m')." #~ msgstr "sysctl anropet misslyckades ('%m')." #, fuzzy #~ msgid "swapctl call failed ('%m')." #~ msgstr "sysctl anropet misslyckades ('%m')." #, fuzzy #~ msgid "" #~ "For the A50, using 115200 may effectively be slower than using 57600\n" #~ "If you experience a lot of serial transmission errors, try to have your " #~ "computer as idle as possible\n" #~ " (i.e. no disk activity)\n" #~ msgstr "" #~ "För A50, kan 115200 vara långsammare än 57600\n" #~ "Mappar stöds INTE\n" #~ "om du märker många överföringsfel, försök att ha datorn så lätt lastad " #~ "som möjligt (d.v.s. ingen diskettaktivitet)" #, fuzzy #~ msgid "Unsupported port type: %d.This driver only works with USBcameras.\n" #~ msgstr "" #~ "Porttypen stöds ej: %d. Denna drivrutin fungerar bara med USB kamror.\n" #, fuzzy #~ msgid "Incadesent" #~ msgstr "Bländande" #, fuzzy #~ msgid "Could not find any driver for '%s' / '%s'" #~ msgstr "Kunde inte finna någon drivrutin för '%s'" #, fuzzy #~ msgid "No thumbnail could be found for %s" #~ msgstr "Filen '%s' kunde inte hittas i mappen '%s'." #~ msgid "gsmart library v" #~ msgstr "gsmart bibliotek v" #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for the Mustek gSmart mini series of digital cameras based on " #~ "several other gphoto2 camlib modules and the windows driver source kindly " #~ "provided by Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \\n\"\n" #~ "Stöd för Mustek gSmart mini serien av digital kameror baserade på\n" #~ "flera andra gphoto2 kamerabiblioteks moduler och windows källkoden \n" #~ "vänligen tillhandahållen av Mustek.\n" #~ "\n" #~ msgid "Written by Mariusz Woloszyn . Enjoy!" #~ msgstr "Skrivet av Mariusz Woloszyn . Njut!" #~ msgid "" #~ "Expected %i, got %i. Please report this error to ." #~ msgstr "" #~ "Förväntade %i, fick %i. Vänligen rapprotera detta fel till ." #, fuzzy #~ msgid "" #~ "Expected %i bytes, got %i. Please report this error to ." #~ msgstr "" #~ "Förväntade %i, fick %i. Vänligen rapprotera detta fel till ." #, fuzzy #~ msgid "" #~ "Communication error even after 2 retries. Please contact ." #~ msgstr "" #~ "Timeout även efter 2 försök. Vänligen kontakta ." #~ msgid "" #~ "spca504_flash camlib\n" #~ " Authors: Till Adam\n" #~ " \n" #~ "based on work by Matthias Krauss\n" #~ "and Mark A. Zimmerman " #~ msgstr "" #~ "spca504_flash kamera bibliotek\n" #~ "Upphovsman: Till Adam \n" #~ "baserat på arbete av Matthias Krauss\n" #~ "och Mark A. Zimmerman " #, fuzzy #~ msgid "remove" #~ msgstr "Fjärr" #, fuzzy #~ msgid "Could not identify camera based on name \"%s\"" #~ msgstr "Kunde inte få tag på disk namn: %s" #, fuzzy #~ msgid "Driver Configuration" #~ msgstr "Kamerakonfiguration" #, fuzzy #~ msgid "(ptp2) Written by Mariusz Woloszyn . Enjoy!" #~ msgstr "Skrivet av Mariusz Woloszyn . Njut!" #~ msgid "Camera not ready, could not lock camera keys: %s" #~ msgstr "Kamera inte redo, kunde inte låsa kameratangenter: %s" #~ msgid "Revision: %8s" #~ msgstr "Revision: %8s" #~ msgid "" #~ "0.1 Traveler SX330z ALDI-cam\n" #~ "(many other vendors, like Jenoptik, Skanhex, Maginon should work too.\n" #~ "Even the 4100 Cameras could work.\n" #~ "Not tested, please report if this driver works with them!)\n" #~ msgstr "" #~ "0.1 Traveler SX330z ALDI-cam\n" #~ "(många andra tillverkare, som Jenoptik, Skanhex, Maginon bör fungera " #~ "också.\n" #~ "Även '4100' kamerorna kan fungera.\n" #~ "Inte testat, vänligen rapportera om drivrutinen även fungerar med " #~ "dessa!)\n" #~ "\n" #~ msgid "" #~ "(Traveler) SX330z Library\n" #~ "See summary for more information\n" #~ "Dominik Kuhlen \n" #~ msgstr "" #~ "(Traveler) SX330z bibliotek\n" #~ "Se summering för mer information.\n" #~ "Dominik Kuhlen \n" #~ msgid "Not implemented!" #~ msgstr "Inte implementerat!" #~ msgid "%s" #~ msgstr "%s" #~ msgid "9600" #~ msgstr "9600" #~ msgid "19200" #~ msgstr "19200" #~ msgid "38400" #~ msgstr "38400" #~ msgid "57600" #~ msgstr "57600" #~ msgid "115200" #~ msgstr "115200" #~ msgid "VGA (640x480)" #~ msgstr "VGA (640x480)" #~ msgid "XGA (1024x768" #~ msgstr "XGA (1024x768" libgphoto2-2.5.9/po/POTFILES.in0000644000175000001440000000462212561423352012717 00000000000000camlibs/adc65/adc65.c camlibs/agfa-cl20/agfa_cl20.c camlibs/aox/library.c camlibs/ax203/library.c camlibs/barbie/barbie.c camlibs/canon/canon.c camlibs/canon/canon.h camlibs/canon/crc.c camlibs/canon/library.c camlibs/canon/serial.c camlibs/canon/usb.c camlibs/casio/casio-qv.c camlibs/clicksmart310/library.c camlibs/digigr8/library.c camlibs/digita/digita.c camlibs/dimera/dimera3500.c camlibs/directory/directory.c camlibs/enigma13/enigma13.c camlibs/fuji/fuji.c camlibs/fuji/library.c camlibs/gsmart300/library.c camlibs/hp215/hp215.c camlibs/iclick/library.c camlibs/jamcam/jamcam.c camlibs/jamcam/library.c camlibs/jd11/jd11.c camlibs/jd11/serial.c camlibs/jl2005a/library.c camlibs/jl2005c/library.c camlibs/kodak/dc120/dc120.c camlibs/kodak/dc120/library.c camlibs/kodak/dc210/dc210.c camlibs/kodak/dc210/library.c camlibs/kodak/dc240/dc240.c camlibs/kodak/dc240/library.c camlibs/kodak/dc3200/dc3200.c camlibs/kodak/dc3200/library.c camlibs/kodak/ez200/ez200.c camlibs/konica/konica.c camlibs/konica/library.c camlibs/konica/lowlevel.c camlibs/konica/qm150.c camlibs/largan/lmini/largan.c camlibs/lg_gsm/library.c camlibs/mars/library.c camlibs/minolta/dimagev/dimagev.c camlibs/mustek/core.c camlibs/mustek/mdc800.c camlibs/panasonic/coolshot/coolshot.c camlibs/panasonic/coolshot/library.c camlibs/panasonic/dc1000.c camlibs/panasonic/dc1580.c camlibs/panasonic/l859/l859.c camlibs/pccam300/library.c camlibs/pccam600/library.c camlibs/pccam600/pccam600.c camlibs/polaroid/pdc320.c camlibs/polaroid/pdc640.c camlibs/polaroid/pdc700.c camlibs/ptp2/config.c camlibs/ptp2/library.c camlibs/ptp2/ptp.c camlibs/ricoh/g3.c camlibs/ricoh/library.c camlibs/ricoh/ricoh.c camlibs/samsung/samsung.c camlibs/sierra/epson-desc.c camlibs/sierra/library.c camlibs/sierra/nikon-desc.c camlibs/sierra/olympus-desc.c camlibs/sierra/sierra.c camlibs/sierra/sierra-desc.c camlibs/sipix/blink2.c camlibs/sipix/blink.c camlibs/sipix/web2.c camlibs/smal/smal.c camlibs/smal/ultrapocket.c camlibs/sonix/library.c camlibs/sonydscf1/sonydscf1.c camlibs/sonydscf55/camera.c camlibs/soundvision/soundvision.c camlibs/spca50x/library.c camlibs/sq905/library.c camlibs/st2205/library.c camlibs/stv0674/stv0674.c camlibs/stv0680/library.c camlibs/stv0680/stv0680.c camlibs/sx330z/library.c camlibs/topfield/puppy.c camlibs/toshiba/pdrm11/library.c libgphoto2/gphoto2-abilities-list.c libgphoto2/gphoto2-camera.c libgphoto2/gphoto2-filesys.c libgphoto2/gphoto2-result.c libgphoto2-2.5.9/po/es.po0000644000175000001440000116104312623156272012116 00000000000000# Translation of libgphoto2 to Spanish # Traducción al castellano de libgphoto2 # Copyright © 2002-2003 Fabian Mandelbaum # Quique , 2004. # msgid "" msgstr "" "Project-Id-Version: libgphoto2 2.1.4\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2004-05-11 13:12+0200\n" "Last-Translator: Quique \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.3.1\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "El equipo del controlador de Agfa CL20 para Linux\n" " Escríbanos a cl20@poeml.de \n" " Visítenos en http://cl20.poeml.de " #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 #, fuzzy msgid "Picture Frame Configuration" msgstr "Configuración de la cámara" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "Cantidad de fotos: %i\n" "Versión del firmware: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Ingeniería inversa de los datos de imagen por:\n" "Jeff Laing \n" "\n" "Implementado utilizando documentos encontrados\n" "en la web. Permiso concedido por Vision." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "No se ha podido crear el directorio %s." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "No se ha podido eliminar el directorio %s." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "ha fallado el bloqueo de teclas." #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*DESCONOCIDO*" #: camlibs/canon/canon.c:1490 #, fuzzy, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image: la llamada inicial a canon_usb_list_all_dirs() ha " "fallado con el estado %i" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image: la llamada final a canon_usb_list_all_dirs() ha " "fallado con estado %i" #: camlibs/canon/canon.c:2554 #, fuzzy, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "" "El nombre «%s» (%i caracteres) es demasiado largo (%i caracteres), el máximo " "permitido es de 30 caracteres." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "" #: camlibs/canon/canon.c:3150 #, fuzzy, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_dir: ERROR: mensaje inicial demasiado corto (%i < mínimo %i)" #: camlibs/canon/canon.c:3172 #, fuzzy msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_dir: Se ha llegado al final del paquete mientras se examinaba " "la primera entrada de directorio" #: camlibs/canon/canon.c:3257 #, fuzzy msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "" "canon_int_list_dir: se ha encontrado una entrada de directorio truncada" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Fichero protegido." #: camlibs/canon/canon.c:3717 #, fuzzy, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_dir: ERROR: mensaje inicial demasiado corto (%i < mínimo %i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "" "No se ha podido extraer la miniatura JPEG de los datos: No hay comienzo/fin" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "" "No se ha podido extraer la miniatura JPEG de los datos: Los datos no están " "en JFIF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "Parámetro NULL \"%s\" en %s línea %i" #: camlibs/canon/canon.h:638 #, fuzzy, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" "No se sabe como manejar el valor camera->port->type %i también conocido como " "0x%xin %s línea %i." #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "ERROR FATAL: valor CRC inicial para la longitud %d desconocido\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "no es posible suponer el valor CRC inicial\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "advertencia: CRC no comprobada (añada longitud %d, valor 0x%04x) " "############\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "" #: camlibs/canon/library.c:98 #, fuzzy msgid "Thumbnail" msgstr "Previsualizar la miniatura" #: camlibs/canon/library.c:99 #, fuzzy msgid "Full Image" msgstr "Imagen" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "" #: camlibs/canon/library.c:216 #, fuzzy msgid "Auto focus: one-shot" msgstr "Error de autofocus." #: camlibs/canon/library.c:217 #, fuzzy msgid "Auto focus: AI servo" msgstr "Error de autofocus." #: camlibs/canon/library.c:218 #, fuzzy msgid "Auto focus: AI focus" msgstr "Error de autofocus." #: camlibs/canon/library.c:219 #, fuzzy msgid "Manual focus" msgstr "Manual" #: camlibs/canon/library.c:224 #, fuzzy msgid "Beep off" msgstr "Modo de la lente" #: camlibs/canon/library.c:225 #, fuzzy msgid "Beep on" msgstr "Modo de la lente" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 #, fuzzy msgid "Flash off" msgstr "Modo del flash" #: camlibs/canon/library.c:231 #, fuzzy msgid "Flash on" msgstr "Modo del flash" #: camlibs/canon/library.c:232 #, fuzzy msgid "Flash auto" msgstr "Modo del flash" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "" #: camlibs/canon/library.c:267 #, fuzzy msgid "Manual 2" msgstr "Manual" #: camlibs/canon/library.c:268 #, fuzzy msgid "Far scene" msgstr "Fluorescente" #: camlibs/canon/library.c:269 #, fuzzy msgid "Fast shutter" msgstr "Velocidad del obturador (en segundos)" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Sepia" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 #, fuzzy msgid "Portrait" msgstr "Contraste-" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Spot" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Macro" #: camlibs/canon/library.c:277 #, fuzzy msgid "BW" msgstr "B/N" #: camlibs/canon/library.c:278 #, fuzzy msgid "PanFocus" msgstr "Foco" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 #, fuzzy msgid "Neutral" msgstr "Normal" #: camlibs/canon/library.c:282 #, fuzzy msgid "Long shutter" msgstr "Posición del foco" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "" #: camlibs/canon/library.c:285 #, fuzzy msgid "Indoor" msgstr "Exteriores" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "" #: camlibs/canon/library.c:292 #, fuzzy msgid "Digital macro" msgstr "Zoom digital" #: camlibs/canon/library.c:293 #, fuzzy msgid "MyColors" msgstr "Color" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" #: camlibs/canon/library.c:497 #, fuzzy, c-format msgid "Camera unavailable: %s" msgstr "Cámara no disponible" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Apagando la cámara" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Error al capturar imagen" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "No se puede obtener el nombre del disco: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Razón desconocida" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "No se puede obtener información del disco: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "error interno #1 en get_file_func() (%s línea %i)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "No se ha podido encontrar ningún fichero de audio para %s" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " Disco %s\n" " %11s bytes en total\n" " %11s bytes disponibles" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "Transformador de CA" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "con baterías" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "energía OK" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "energía no-OK" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "no disponible: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (hora de la máquina %s%i segundos)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Identificación de la cámara:\n" " Modelo: %s\n" " Propietario: %s\n" "\n" "Estado de energía: %s\n" "\n" "Información del disco Flash:\n" "%s\n" "\n" "Hora: %s\n" #: camlibs/canon/library.c:1145 #, fuzzy msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Controlador de la serie Canon PowerShot por\n" "Wolfgang G. Reissnegger,\n" "Werner Almesberger,\n" "Edouard Lafargue,\n" "Philippe Marzouk,\n" "Añadidos para el modelo A5 por Ole W. Saastad\n" "Holger Klemm\n" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Error al borrar el fichero" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Error al borrar la miniatura asociada" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "Esta cámara no soporta recibir a velocidades superiores a 57600" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "No se puede obtener la letra del disco Flash" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "No se puede enviar, no hay disponible ninguna carpeta libre\n" "Existe la carpeta 999CANON y contiene una imagen AUT_9999.JPG." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "No se puede crear el directorio \\DCIM." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "No se puede crear el directorio de destino." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "Configuración del controlador y de la cámara" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Opciones de la cámara" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 #, fuzzy msgid "Owner Name" msgstr "Nombre del propietario" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 #, fuzzy msgid "Capture Size Class" msgstr "Opciones de apertura" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "Velocidad ISO" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 #, fuzzy msgid "Unknown" msgstr "Error desconocido" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 #, fuzzy msgid "Shooting mode" msgstr "Velocidad del obturador (en segundos)" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 #, fuzzy msgid "Shutter Speed" msgstr "Velocidad del obturador (en segundos)" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "Ampliación" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "Apertura" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Compensación de la exposición" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 #, fuzzy msgid "Image Format" msgstr "Formato de la fecha" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Modo del enfoque" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Modo del flash" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Pitido" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 #, fuzzy msgid "Camera Actions" msgstr "Opciones de la cámara" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 #, fuzzy msgid "Camera Status Information" msgstr "Configuración de la cámara" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 #, fuzzy msgid "Camera Model" msgstr "%sModelo de la cámara: %s\n" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Fecha y hora" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Error" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 #, fuzzy msgid "Firmware Version" msgstr "Revisión del firmware: %8s" #: camlibs/canon/library.c:1956 #, fuzzy msgid "Power" msgstr "SIN indicador de energía" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Controlador" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Lista de todos los ficheros" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Mantener el nombre de fichero al enviar" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Cámara no disponible" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Se ha cambiado el nombre del propietario" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "no se ha podido cambiar el nombre del propietario" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "" #: camlibs/canon/library.c:2056 #, fuzzy msgid "ISO speed changed" msgstr "Se ha cambiado el nombre del propietario" #: camlibs/canon/library.c:2058 #, fuzzy msgid "Could not change ISO speed" msgstr "no se ha podido cambiar el nombre del propietario" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "" #: camlibs/canon/library.c:2085 #, fuzzy msgid "Shooting mode changed" msgstr "Velocidad del obturador (en segundos)" #: camlibs/canon/library.c:2087 #, fuzzy msgid "Could not change shooting mode" msgstr "no se ha podido cambiar el nombre del propietario" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "" #: camlibs/canon/library.c:2114 #, fuzzy msgid "Shutter speed changed" msgstr "Velocidad del obturador (en segundos)" #: camlibs/canon/library.c:2116 #, fuzzy msgid "Could not change shutter speed" msgstr "no se ha podido cambiar el nombre del propietario" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 #, fuzzy msgid "Invalid aperture setting" msgstr "Opciones de apertura" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 #, fuzzy msgid "Aperture changed" msgstr "Opciones de apertura" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 #, fuzzy msgid "Could not change aperture" msgstr "no se ha podido cambiar el nombre del propietario" #: camlibs/canon/library.c:2167 #, fuzzy msgid "Invalid exposure compensation setting" msgstr "Compensación de la exposición" #: camlibs/canon/library.c:2170 #, fuzzy msgid "Exposure compensation changed" msgstr "Compensación de la exposición" #: camlibs/canon/library.c:2172 #, fuzzy msgid "Could not change exposure compensation" msgstr "Compensación de la exposición" #: camlibs/canon/library.c:2194 #, fuzzy msgid "Invalid image format setting" msgstr "Opciones de la cámara" #: camlibs/canon/library.c:2198 #, fuzzy msgid "Image format changed" msgstr "Imagen protegida." #: camlibs/canon/library.c:2200 #, fuzzy msgid "Could not change image format" msgstr "no se ha podido cambiar el nombre del propietario" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "" #: camlibs/canon/library.c:2226 #, fuzzy msgid "Focus mode changed" msgstr "Modo del enfoque" #: camlibs/canon/library.c:2228 #, fuzzy msgid "Could not change focus mode" msgstr "no se ha podido cambiar el nombre del propietario" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "" #: camlibs/canon/library.c:2255 #, fuzzy msgid "Beep mode changed" msgstr "Se ha cambiado el nombre del propietario" #: camlibs/canon/library.c:2257 #, fuzzy msgid "Could not change beep mode" msgstr "no se ha podido cambiar el nombre del propietario" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "" #: camlibs/canon/library.c:2276 #, fuzzy msgid "Could not change zoom level" msgstr "no se ha podido cambiar el nombre del propietario" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "" #: camlibs/canon/library.c:2332 #, fuzzy msgid "Flash mode changed" msgstr "Tarjeta CompactFlash" #: camlibs/canon/library.c:2334 #, fuzzy msgid "Could not change flash mode" msgstr "No se puede obtener la letra del disco Flash" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "hora configurada" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "no se ha podido configurar la hora" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "" "Proporcionado tipo de puerto no soportado %i = 0x%x. Inicialización " "imposible." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Se ha agotado la batería, cámara apagada." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "ERROR: mensaje inesperado" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "ERROR: exceso de mensajes" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "ERROR: fuera de secuencia." #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "ERROR: tipo de paquete inesperado." #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "ERROR: formato erróneo del mensaje." #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "ERROR: mensaje2 inesperado." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Enviando fichero..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Obteniendo fichero..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "canon_serial_get_dirents: canon_serial_dialogue ha fallado al obtener las " "entradas de directorio" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" "canon_serial_get_dirents: Paquete inicial de entradas de directorio " "demasiado corto (sólo %i bytes)" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "canon_serial_get_dirents: No se han podido asignar %i bytes de memoria" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "canon_serial_get_dirents: Fallo al leer otra entrada de directorio" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "" "canon_serial_get_dirents: Se ha recibido una entrada de directorio truncada" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" "canon_serial_get_dirents: Demasiadas entradas de directorio, se debe de " "estar en un bucle." #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents: No se ha podido redimensionar el búfer de entradas " "de directorio a %i bytes" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Error al cambiar la velocidad." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Reinicializando el protocolo..." #: camlibs/canon/serial.c:1311 #, fuzzy msgid "Camera OK." msgstr "Cámara OK.\n" #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Buscando la cámara..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Intentando contactar con la cámara..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Error de comunicación 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "No hay respuesta de la cámara" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Respuesta no reconocida" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "Se ha detectado una \"%s\" también conocida como \"%s\"" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "Modelo desconocido \"%s\"" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "Fin de la transmisión (EOT) no válido" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Error de comunicación 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Error de comunicación 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Cambiando la velocidad... espere..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Error al cambiar la velocidad" #: camlibs/canon/serial.c:1454 #, fuzzy msgid "Error waiting for ACK during initialization, retrying" msgstr "" "Error esperando acuse de recibo (ACK) durante el reintento de inicialización" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Error esperando acuse de recibo (ACK) durante la inicialización" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Conectado a la cámara" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "" "ERROR: se ha detectado una condición de error fatal, no se puede continuar " #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "ERROR: %d es demasiado grande" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Obteniendo miniaturas..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "NO RECONOCIDO" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "No se puede establecer contacto inicial con la cámara" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "La cámara ya estaba activa" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "Se ha activado la cámara" #: camlibs/canon/usb.c:252 #, fuzzy, c-format msgid "Initial camera response '%c' unrecognized" msgstr "Respuesta inicial de lacámara %c/'%s' no reconocida)" #: camlibs/canon/usb.c:264 #, fuzzy, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" "El paso 3 de la inicialización ha fallado. (ha devuelto %i, se esperaba %i) " "Cámara no operativa" #: camlibs/canon/usb.c:269 #, fuzzy, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "El paso 3 de la inicialización ha fallado. (ha devuelto %i, se esperaba %i) " "Cámara no operativa" #: camlibs/canon/usb.c:288 #, fuzzy, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" "El paso 3 de la inicialización ha fallado. (ha devuelto %i, se esperaba %i) " "Cámara no operativa" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, fuzzy, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" "El paso 3 de la inicialización ha fallado. (ha devuelto %i, se esperaba %i) " "Cámara no operativa" #: camlibs/canon/usb.c:315 #, fuzzy, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" "El paso 3 de la inicialización ha fallado. (ha devuelto %i, se esperaba %i) " "Cámara no operativa" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, fuzzy, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" "El paso 4.1 ha fallado. (ha devuelto %i, se esperaba %i) Cámara no operativa" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, fuzzy, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" "El paso 4.1 ha fallado. (ha devuelto %i, se esperaba %i) Cámara no operativa" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "La cámara no está preparada, han fallado varios intentos de petición de " "identificación de la cámara: %s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "La cámara no está preparada, get_battery ha fallado: %s" #: camlibs/canon/usb.c:632 #, fuzzy, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Se ha devuelto una cantidad de datos no esperada (%i " "bytes, se esperaba %i)" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, fuzzy, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Se ha devuelto una cantidad de datos no esperada (%i " "bytes, se esperaba %i)" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, fuzzy, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_unlock_keys: cantidad de datos devueltos inesperada (%i bytes, se " "esperaba %i)" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, fuzzy, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_lock_keys: Se ha devuelto una cantidad de datos no esperada (%i " "bytes, se esperaba %i)" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Recibiendo datos..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "Fuera de memoria: %d bytes necesarios." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes: canon_usb_dialogue ha fallado" #: camlibs/canon/usb.c:2173 #, fuzzy, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "canon_usb_set_file_attributes: canon_usb_dialogue ha devuelto el estado de " "error 0x%08x de la cámara" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "No se puede leer desde el fichero \"%s\"" #: camlibs/canon/usb.c:2273 #, fuzzy, c-format msgid "Out of memory: %ld bytes needed." msgstr "Fuera de memoria: %d bytes necesarios." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "El envío de fichero ha fallado." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "El fichero era demasiado grande. Puede tener que apagar su cámara y volver a " "encenderla antes de enviar más ficheros." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" "canon_usb_get_dirents: la carga no cabe en el búfer, '%.96s' (truncado) es " "demasiado largo." #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents: canon_usb_long_dialogue ha fallado al obtener " "entradas de directorio, ha devuelto %i" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" "canon_usb_list_all_dirs: la carga no cabe en el búfer, '%.96s' (truncado) es " "demasiado largo." #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs: canon_usb_long_dialogue ha fallado al obtener " "entradas de directorio, ha devuelto %i" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "Se ha detectado una '%s'." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "El nombre \"%s\" de la cámara no coincide con ninguna cámara conocida" #: camlibs/casio/casio-qv.c:152 #, fuzzy, c-format msgid "Image type %d not supported" msgstr "Tipo de imagen no soportado" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "La imagen %s está protegida contra borrado." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "" #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "Configuración de la cámara" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "Batería" #: camlibs/casio/casio-qv.c:275 #, fuzzy msgid "Brightness" msgstr "Brillo-" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 #, fuzzy msgid "Too bright" msgstr "Copyright" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 #, fuzzy msgid "Too dark" msgstr "Luz demasiado oscura." #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "OK" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Tipo de imagen no soportado" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "Cantidad de imágenes: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "Sólo se soporta el directorio raíz, - usted ha pedido una lista de ficheros " "del directorio '%s'." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Problema al obtener el número de imágenes" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Problema al obtener la información de la imagen" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Tipo de captura no soportado" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (la batería está cargada al %d%%)" # FIXME #: camlibs/dimera/dimera3500.c:455 #, fuzzy, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 ver. %s %d/%d %d:%d\n" "%d imágenes utilizadas de aproximadamente %d (alta resolución) o %d (baja " "resolución)\n" "Características de la cámara: %s, %s, %s, %s\n" "El Flash es %s, %s y %s\n" "La resolución está configurada a %s\n" "La camara funciona con %s %s\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Flash" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 #, fuzzy msgid "No Flash" msgstr "SIN Flash" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Doble diafragma" #: camlibs/dimera/dimera3500.c:468 #, fuzzy msgid "No Dual Iris" msgstr "SIN doble diafragma" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "Interruptor de selección de la resolución" #: camlibs/dimera/dimera3500.c:470 #, fuzzy msgid "No Resolution Switch" msgstr "SIN interruptor de selección de la resolución" #: camlibs/dimera/dimera3500.c:472 #, fuzzy msgid "No Power Light" msgstr "SIN indicador de energía" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "ENCENDIDA" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "APAGADA" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "preparada" #: camlibs/dimera/dimera3500.c:476 #, fuzzy msgid "Not ready" msgstr "NO preparada" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "en modo de carga" #: camlibs/dimera/dimera3500.c:478 #, fuzzy msgid "Not in fill mode" msgstr "NO en modo de carga" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "baja (320x240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "alta (640x480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "externamente" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "internamente" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* Los pequeños problemas de imagen o de comunicación frecuentemente\n" " se deben a una batería con poca carga.\n" "* Las imágenes capturadas remotamente en esta cámara se almacenan\n" " en memoria temporal y no en la tarjeta de memoria Flash.\n" "* El control de la exposición cuando se capturan imágenes puede\n" " configurarse manualmente o ponerse en modo automático.\n" "* La calidad de la imagen es actualmente menor de lo que podría ser.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "Este software se creó con ayuda de\n" "información propietaria perteneciente a\n" "StarDot Technologies.\n" "\n" "Autor :\n" " Brian Beattie \n" "Contribuidores:\n" " Chuck Homic \n" " Conversión de las imágenes en bruto de la cámara a RGB\n" " Dan Fandrich \n" " Información sobre el protocolo, formato de imagen en bruto,\n" " y adaptación a gphoto2\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Problema al leer la imagen de la memoria flash" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Sin memoria" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "Descargando imagen..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Problema durante la descarga de la imagen" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "El usuario ha cancelado la descarga" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Problema al tomar imagen en tiempo real" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Exposición" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "Ajuste automático de la exposición en la previsualización" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "Nivel de exposición en la previsualización" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "Flash automático en la captura" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Problema al abrir el puerto" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Problema al reinicializar la cámara" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Problema al configurar la velocidad de comunicación de la cámara" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Parece un módem, no una cámara" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "Listando los ficheros que hay en '%s'..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "Listado de las carpetas que hay en '%s'..." #: camlibs/directory/directory.c:381 #, fuzzy, c-format msgid "Could not get information about '%s' (%s)." msgstr "No se puede obtener información acerca de '%s' (%m)." #: camlibs/directory/directory.c:414 #, fuzzy, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "No se puede obtener información acerca de '%s' en '%s' (%m)." #: camlibs/directory/directory.c:462 #, fuzzy, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "No se puede cambiar la fecha del fichero '%s' en '%s' (%m)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "No se puede abrir '%s'." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" "La \"cámara\" 'Examinar el directorio' le permite indexar las fotos que hay " "en su disco duro." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "" "Modo Examinar el directorio - escrito por Scott Fritzinger ." #: camlibs/directory/directory.c:671 #, fuzzy, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "" "No se puede borrar el fichero '%s' de la carpeta '%s' (código de error %i: " "%m)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "La cámara ha enviado sólo %i byte(s), pero se necesitan al menos %i." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "No se puede contactar con la cámara." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Se han recibido datos inesperados (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "" "Secuencia de escape incorrecta: se esperaba 0x%02x, se ha recibido 0x%02x." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Datos incorrectos - se ha recibido 0x%02x, se esperaba 0x%02x." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "" "Datos incorrectos - se ha recibido 0x%02x, se esperaba 0x%02x o 0x%02x." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "" "Suma de comprobación incorrecta - se ha recibido 0x%02x, se esperaba 0x%02x." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "La cámara ha rechazado el mandato." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "La cámera se ha reiniciado sola." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "La cámara ha enviado un byte 0x%02x no esperado." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Descargando..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "No se pueden asignar %i byte(s) para descargar la miniatura." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "No se pueden asignar %i byte(s) para descargar la foto." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "La cámara no acepta '%s' como nombre de fichero." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "" "No se ha podido inicializar el envío (la cámara ha respondido con 0x%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "La cámara no soporta la velocidad %i." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "" "No se ha podido ajustar la velocidad a %i (la cámara ha respondido con %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Basado en fujiplay por Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, fuzzy, c-format msgid "Bit rate %ld is not supported." msgstr "No se soporta la tasa de bits %i." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Configuración para su cámara FUJI" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Fecha y hora" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Versión: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Modelo: " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "Memoria disponible: " #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "biblioteca gsmart300 \n" "Till Adam \n" "Jerome Lodewyck \n" "Soporte para las cámaras digitales Mustek gSmart 300\n" "basado en varios otros módulos camlib de gphoto2 y las especificaciones " "amablemente proporcionadas por Mustek.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Tipo de puerto no soportado: %d. Este controlador sólo funciona con cámaras " "USB.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "No se puede reinicializar la cámara.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, fuzzy, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Su cámara no soporta borrar el último fichero que hay en la cámara. En este " "caso, se trata del fichero '%s'." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" # Haesslich [Colin] #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Fotogramas tomados: %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "Biblioteca jamcam v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "Descargando los datos..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "Descargando la miniatura..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "La cámara JD11 funciona bastante bien con este controlador.\n" "Se necesita una interfaz RS232 a 115 kbps para transferir las imágenes.\n" "El controlador le permite obtener\n" "\n" " - miniaturas (64x48, formato PGM)\n" " - imágenes completas (640x480, formato PPM)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meißner \n" "Controlador para la cámara Jenoptik JD11.\n" "Ingeniería inversa del protocolo usando WINE e IDA." #: camlibs/jd11/jd11.c:186 #, fuzzy msgid "JD11 Configuration" msgstr "Configuración" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Otras configuraciones" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Tiempo de exposición de la lámpara" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Configuración del color" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "Rojo (R)" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Verde (G)" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Azul (B)" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "Tarjeta CompactFlash" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "La cámara Kodak DC120 utiliza el formato de fichero KDC para almacenar las " "imágenes. Si desea ver las imágenes que transfiere desde la cámara, " "necesitará descargar el programa \"kdc2tiff\". Está disponible en http://" "kdc2tiff.sourceforge.net" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Biblioteca para la cámara Kodak DC120\n" "Scott Fritzinger \n" "Biblioteca para la cámara Kodak DC120\n" "(a petición popular)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Obteniendo los datos..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "Esperando que finalice la operación..." #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Fichero" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Tipo de fichero" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Resolución del fichero" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Compresión del fichero" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Baja (la mejor calidad)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Media (mejor calidad)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "Alta (buena calidad)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Captura" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Compensación de la exposición" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Automática" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Forzar" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Ninguno" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Flash anti ojos rojos" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Sí" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "No" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Otro" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Ajustar el reloj de la cámara" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "Velocidad del puerto" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Nombre del álbum" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Nombre a poner a la tarjeta al formatearla." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "Formatear compact flash" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Formatear la tarjeta y establecer el nombre del álbum." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Depurar" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Ejecutar mandato predefinido\n" "con los valores de los parámetros." #: camlibs/kodak/dc210/dc210.c:498 #, fuzzy, c-format msgid "Pictures in camera: %d\n" msgstr "Fotos que hay en la cámara: %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:506 #, fuzzy, c-format msgid "Total pictures taken: %d\n" msgstr "Cantidad total de fotos capturadas: %d, iluminaciones del flash: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, fuzzy, c-format msgid "Total flashes fired: %d\n" msgstr "Cantidad total de fotos capturadas: %d, iluminaciones del flash: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, fuzzy, c-format msgid "Firmware: %d.%d\n" msgstr "Revisión del firmware: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, fuzzy, c-format msgid "Filetype: JPEG (" msgstr "Tipo de fichero" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "" #: camlibs/kodak/dc210/dc210.c:527 #, fuzzy, c-format msgid "low compression, " msgstr "Compresión del fichero" #: camlibs/kodak/dc210/dc210.c:529 #, fuzzy, c-format msgid "medium compression, " msgstr "Compresión del fichero" #: camlibs/kodak/dc210/dc210.c:531 #, fuzzy, c-format msgid "high compression, " msgstr "Compresión del fichero" #: camlibs/kodak/dc210/dc210.c:533 #, fuzzy, c-format msgid "unknown compression %d, " msgstr "Compresión del fichero" #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:556 #, fuzzy, c-format msgid "AC adapter is connected.\n" msgstr "La lente no está conectada\n" #: camlibs/kodak/dc210/dc210.c:558 #, fuzzy, c-format msgid "AC adapter is not connected.\n" msgstr "La lente no está conectada\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:580 #, fuzzy, c-format msgid "Unknown zoom mode %d\n" msgstr "Modelo desconocido \"%s\"" #: camlibs/kodak/dc210/dc210.c:586 #, fuzzy, c-format msgid "Exposure compensation: %s\n" msgstr "Compensación de la exposición" #: camlibs/kodak/dc210/dc210.c:588 #, fuzzy, c-format msgid "Exposure compensation: %d\n" msgstr "Compensación de la exposición" #: camlibs/kodak/dc210/dc210.c:593 #, fuzzy, c-format msgid "Flash mode: auto, " msgstr "Modo del flash" #: camlibs/kodak/dc210/dc210.c:595 #, fuzzy, c-format msgid "Flash mode: force, " msgstr "Modo del flash" #: camlibs/kodak/dc210/dc210.c:597 #, fuzzy, c-format msgid "Flash mode: off\n" msgstr "Modo del flash" #: camlibs/kodak/dc210/dc210.c:599 #, fuzzy, c-format msgid "Unknown flash mode %d, " msgstr "Modelo desconocido \"%s\"" #: camlibs/kodak/dc210/dc210.c:607 #, fuzzy, c-format msgid "red eye flash on.\n" msgstr "Flash anti ojos rojos" #: camlibs/kodak/dc210/dc210.c:610 #, fuzzy, c-format msgid "red eye flash off.\n" msgstr "Flash anti ojos rojos" #: camlibs/kodak/dc210/dc210.c:615 #, fuzzy, c-format msgid "No card in camera.\n" msgstr "Problema al reinicializar la cámara" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "Esta biblioteca se ha probado con una cámara Kodak DC 215 Zoom. Puede que " "también funcione con las cámaras DC 200 y DC 210. Si tiene alguna de esas " "cámaras, por favor envíe un mensaje a koltan@gmx.de para comentarme si tiene " "algún problema con esta biblioteca de controlador o si todo va bien." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Biblioteca para la cámara Kodak DC215 Zoom.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "Esperando..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Parámetro 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Parámetro 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Parámetro 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Modelo: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "Revisión del firmware: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Estado de la batería: %s, transformador CA: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "Cantidad de imágenes: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "Espacio restante: Alta: %d, Media: %d, Baja: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "Estado de la tarjeta de memoria (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "Cantidad total de fotos capturadas: %d, iluminaciones del flash: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Biblioteca para la cámara Kodak DC240\n" "Scott Fritzinger y Hubert Figuiere \n" "Biblioteca para la cámara Kodak DC240, DC280, DC3400 y DC5000.\n" "Reescrito y actualizado para gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Débil" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Vacía" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "No válida" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "No utilizada" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "En uso" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "La tarjeta está abierta" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "La tarjeta no está abierta" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "La tarjeta no está formateada" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Sin tarjeta" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "Actualmente hay una operación en curso. Esta cámara sólo soporta una " "operación a la vez. Por favor, espere a que haya finalizado la operación en " "curso." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "cámara inactiva por más de 9 segundos, volviendo a inicializar.\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Problemas conocidos:\n" "\n" "1. Si la Kodak DC3200 no recibe un mandato al menos cada 10 segundos, " "expirará el tiempo concedido, y tendrá que ser reiniciada. Si nota que la " "cámara no responde, simplemente vuelva a seleccionarla. Esto provocará la " "reinicialización." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Controlador de la Kodak DC3200\n" "Donn Morrison \n" "\n" "Sus preguntas y comentarios serán bienvenidos." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Error de enfoque." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Error del iris." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Error del estrosboscopio." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "Error de la suma de validación de la EEPROM." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "Error interno (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "Error interno (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "No hay ninguna tarjeta." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "No se soporta la tarjeta." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "Se ha quitado la tarjeta durante el acceso." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "El número de la imagen no es válido." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "No se puede escribir la tarjeta." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "La tarjeta está protegida contra escritura." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "No queda espacio en la tarjeta." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Imagen protegida." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "Luz demasiado oscura." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Error de autofocus." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Error del sistema." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Parámetro no válido." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "No se puede cancelar el mandato." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Datos de localización demasiado largos." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Datos de localización corruptos." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Mandato no soportado." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "Se está ejecutando otro mandato." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Error en el orden de los mandatos." #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Error desconocido." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "La cámara acaba de enviar un error que todavía no ha sido descubierto. Por " "favor, informe de lo siguiente a %s con información adicional acerca de cómo " "ha obtenido este error: (0x%x,0x%x). ¡Muchísimas gracias!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Obteniendo la lista de ficheros..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "Probando diferentes velocidades..." #: camlibs/konica/library.c:338 #, fuzzy msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "No se puede contactar con la cámara. Por favor, asegúrese de que está " "conectada a la computadora y está encendida." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "no se pudieron borrar %i imágenes porque están protegidas" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Modelo: %s\n" "Número de serie: %s,\n" "Versión del hardware: %i.%i\n" "Versión del software: %i.%i\n" "Versión del software de prueba: %i.%i\n" "Nombre: %s,\n" "Fabricante: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Bibilioteca Konica\n" "Lutz Müller \n" "Soporta todas las cámaras Konica y varias cámaras HP." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Obteniendo la configuración..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Configuración de Konica" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Parámetros persistentes" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "¿La cámara debe emitir un pitido cuando se tome una foto?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Hora del temporizador" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Hora de apagado automático" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Intervalo del carrusel" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Resolución" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Baja (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Media (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Alta (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Localización" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Idioma" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Ninguno selecccionado" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "Formato de salida de TV" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "No mostrar el menú TV" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Formato de la fecha" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "Mes/Día/Año" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "Día/Mes/Año" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Año/Mes/Día" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Parámetros de la sesión persistente" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Sí, reducción de ojos rojos" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Automática, reducción de ojos rojos" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Foco" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "Fijo" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Parámetros temporales" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "Temporizador" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "Temporizador (sólo la foto siguiente)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Normal" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "No se puede encontrar los datos de localización en '%s'" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "¡Fichero de localización demasiado largo!" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "Esta previsualización no existe." #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "Los datos se han corrompido." #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "¡Esta cámara no soporta el tipo de imagen %d!" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "No se puede borrar la imagen %s." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "No se pueden borrar todas las imágenes." #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "Enviando imagen..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 #, fuzzy msgid "Can't upload this image to the camera. An error has occurred." msgstr "No se puede enviar esta imagen a la cámara. Se ha producido un error." #: camlibs/konica/qm150.c:634 #, fuzzy msgid "You must be in record mode to capture images." msgstr "Debe estar en modo de grabación para capturar una imagen." #: camlibs/konica/qm150.c:637 #, fuzzy msgid "No space available to capture new images. You must delete some images." msgstr "" "No hay espacio disponible para capturar una nueva imagen. Debe borrar " "algunas imágenes." #: camlibs/konica/qm150.c:641 #, fuzzy msgid "Can't capture new images. Unknown error" msgstr "No se puede capturar una nueva imagen. Error desconocido" #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "No hay respuesta de la cámara." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Baja" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Media" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Alta" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Iconos" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Balance de blancos" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "Oficina" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "Luz natural" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "Nitidez" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "Nítida" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "Suave" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "Color" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "Suave" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "Profundo" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "Blanco y negro" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "Única" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "Secuencia 9" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "Mostrar fecha" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "En cualquier lugar" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "Modo de reproducción" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "Modo de grabación" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "En todos lados" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "CA" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "Reproducción" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Grabación" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "DD/MM/AAAA" #: camlibs/konica/qm150.c:1157 #, fuzzy, c-format msgid "YYYY/MM/DD" msgstr "AAAA/MM/DD" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "MM/DD/AAAA" #: camlibs/konica/qm150.c:1165 #, fuzzy, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Modelo: %s\n" "Capacidad: %iMB\n" "Energía: %s\n" "Apagado auto.: %imin\n" "Modo: %s\n" "Imágenes: %i/%i\n" "Mostrar fecha: %s\n" "Fecha y hora: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Soporte para la Konica Q-M150 francesa." #: camlibs/konica/qm150.c:1203 #, fuzzy, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "Acerca de Konica Q-M150:\n" "Esta cámara no soporte realizar ningún cambio\n" "desde el exterior. Así pues, sólo puede ver en la configuración\n" "lo que está configurado en la cámara, pero no puede\n" "cambiar nada.\n" "\n" "Si tiene algún problema con este controlador, por favor\n" "envíe un correo electrónico a los autores del mismo.\n" "\n" "Gracias por usar GPhoto2 y los sistemas operativos UNIX/Linux.\n" #: camlibs/largan/lmini/largan.c:228 #, fuzzy msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Controlador Largan\n" "Hubert Figuiere \n" "\n" "Controla la cámara Largan Lmini.\n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Modelo:\t\t\tMinolta Dimage V (%s)\n" "Revisión de hardware:\t%s\n" "Revisión de firmware:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Modo de conexión:\t\t%s\n" "Corrección de la exposición:\t%s\n" "Datos de la exposición:\t\t%d\n" "Fecha válida:\t\t%s\n" "Fecha:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Temporizador:\t\t%s\n" "Parámetros de calidad:\t%s\n" "Modo de reproducción/grabación:\t%s\n" "Identificador de tarjeta válido:\t\t%s\n" "Identificador de tarjeta:\t\t%d\n" "Modo del flash:\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Remota" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Local" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Sí" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "No" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Fina" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Estándar" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Automática\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Forzar el flash\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Prohibir el flash\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Valor no válido (%d)\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "Nivel de batería:\t\t%s\n" "Cantidad de imágenes:\t%d\n" "Capacidad mínima restante:\t%d\n" "Ocupado:\t\t\t%s\n" "Cargando el flash:\t\t%s\n" "Estado de la lente:\t\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "No llena" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Llena" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "Ocupado" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "Libre" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "Cargando" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Preparada" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Normal\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "La dirección de la lente no coincide con la luz del flash\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "La lente no está conectada\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "Valor incorrecto para el estado de la lente %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "Estado de la tarjeta:\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Protegida contra escritura" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "Tarjeta no conveniente" #: camlibs/minolta/dimagev/dimagev.c:406 #, fuzzy, c-format msgid "Bad value for card status %d" msgstr "Valor no válido para el estado de la tarjeta %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Biblioteca para la cámara Minolta Dimage V\n" "%s\n" "Gus Hartmann \n" "Agradecimientos especiales a Minolta por las especificaciones." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Luz del flash: Automática (reducción de ojos rojos)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Luz del flash: Automática" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Luz del flash: Sí (reducción de ojos rojos)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Luz del flash: Sí" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Luz del flash: No" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Luz del flash: indefinida" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Resumen para Mustek MDC800:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "no se ha informado del estado." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "Se ha detectado una tarjeta Compact Flash\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "No se ha detectado ninguna tarjeta Compact Flash\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "Modo actual: Modo de cámara\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Modo actual: Modo de reproducción\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Las baterías están bien." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Las baterías están descargadas." #: camlibs/mustek/mdc800.c:264 #, fuzzy msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Biblioteca gPhoto2 para Mustek MDC-800\n" "Henning Zabel \n" "Adaptada a gphoto2 por Marcus Meissner \n" "Soporta los protocolos serie y USB." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "Biblioteca coolshot v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Desconectando la cámara." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "Descargando la imagen %s." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Enviando la imagen: %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, fuzzy, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "El tamaño del fichero es %i bytes. El tamaño máximo de fichero a enviar es " "de: %i bytes." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Enviando..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "Borrando la imagen %s." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Biblioteca gPhoto para la cámara Panasonic DC1000\n" "Mariusz Zynel \n" "\n" "Basada en el programa dc1000 escrito por\n" "Fredrik Roubert y\n" "Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "Descargando %s." #: camlibs/panasonic/dc1580.c:627 #, fuzzy msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Biblioteca gPhoto para la cámara Panasonic DC1580\n" "Mariusz Zynel \n" "\n" "Basada en el programa dc1000 escrito por\n" "Fredrik Roubert y\n" "Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "Descargando '%s'..." #: camlibs/panasonic/l859/l859.c:582 #, fuzzy msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic ha presentado la tecnología de captura de imágenes PHOTOSHOT por " "primera vez para esta serie de Palmcorders. Las imágenes se almacenan en el " "formato JPEG en una tarjeta Flash interna y se pueden transferir a una " "computadora a través del puerto serie integrado. Las imágenes se guardan en " "una de dos resoluciones; NORMAL es 320x240 y FINA es 640x480. El dispositivo " "CCD que captura las imágenes de la lente solo tiene 300.000 pixels, y por lo " "tanto sólo produce imágenes de calidad baja." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Problemas conocidos:\n" "\n" "Si se producen problemas de comunicaciones, reinicialice la cámara y vuelva " "a iniciar la aplicación. El controlador no es lo suficientemente robusto " "como para recuperarse de estas situaciones, especialmente si se produce un " "problema y la cámara no se apaga adecuadamente a velocidades mayores a 9600." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Controlador para Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " Memoria total es %8d bytes.\n" " Memoria libre es %8d bytes.\n" " Cuenta de ficheros: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" " Autores: Till Adam\n" "\n" "y: Miah Gregory\n" " " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "Descargando fichero..." #: camlibs/pccam600/library.c:249 #, fuzzy msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" " Author: Peter Kajberg\n" " correo electrónico: \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Programa de descarga para varias cámaras Polaroid. Escrito originalmente por " "Peter Desnoyers , y adaptado para gphoto2 por " "Nathan Stenzel y Lutz Mueller " ".\n" "La prueba con una Polaroid 640SE fue realizada por Michael Golden " "." #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Modelo: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 #, fuzzy msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "Programa de descarga para cámaras basadas en GrandTek 98x. Escrito " "originalmente por Chris Byrne , y adaptado para gphoto2 " "por Lutz Mueller .Mejoras en el protocolo y post-" "procesamiento para Jenoptik JD350e por Michael Trawny . Corrección de errores por Marcus Meissner ." #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "Calidad de imagen" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Tamaño de la imagen" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Configuración del flash" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Apagado automático (en minutos)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Información" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "normal" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "fina" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "superfina" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "automática" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "activa" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "inactiva" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "lectura" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "escritura" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "menú" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "batería" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "transformador CA" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Se ha recibido un encabezado no esperado (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Se ha recibido una respuesta no esperada" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Error de la suma de comprobación" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "La cámara no ha aceptado el mandato." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "La cámara ha enviado más bytes que lo esperado (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "Se ha pedido información sobre la imagen %i (= 0x%x), pero se ha obtenido " "información sobre la imagen %i" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "se han recibido %i bytes de un formato de imágen desconocido. Por favor, " "escriba a %s y pida ayuda." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Programa de descarga para la cámara Polaroid DC700. Escrito originalmente " "por Ryan Lantzer para gphoto-4.x. Adaptado para gphoto2 " "por Lutz Mueller ." #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Cámara" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "¿Cuanto tiempo debería pasar hasta que la cámara se apague?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Imagen" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Fecha: %i/%02i/%02i %02i:%02i:%02i\n" "Imágenes tomadas: %i\n" "Imágenes libres: %i\n" "Versión del software: %s\n" "Velocidad (baudios): %s\n" "Memoria: %i megabytes\n" "Modo de la cámara: %s\n" "Calidad de la imagen: %s\n" "Configuración del flash: %s\n" "Información: %s\n" "Temporizador: %s\n" "LCD: %s\n" "Apagado automático: %i minutos\n" "Fuente de energía: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "Este controlador no soporta el tipo de puerto solicitado (%i)." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 #, fuzzy msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Su cámara no soporta cambiar los nombres de fichero." #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, fuzzy, c-format msgid "Unknown value %04x" msgstr "Tipo de fichero %i desconocido." #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, fuzzy, c-format msgid "Unknown value %04d" msgstr "Tipo de fichero %i desconocido." #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, fuzzy, c-format msgid "unexpected datatype %i" msgstr "ERROR: tipo de paquete inesperado." #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "Manual" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 #, fuzzy msgid "Automatic" msgstr "Automática\n" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 #, fuzzy msgid "One-push Automatic" msgstr "Automática\n" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "Fluorescente" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Tungsteno" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Nublado" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 #, fuzzy msgid "Shade" msgstr "Nítida" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "Preconfigurado" #: camlibs/ptp2/config.c:1415 #, fuzzy msgid "Fluorescent Lamp 1" msgstr "Fluorescente" #: camlibs/ptp2/config.c:1416 #, fuzzy msgid "Fluorescent Lamp 2" msgstr "Fluorescente" #: camlibs/ptp2/config.c:1417 #, fuzzy msgid "Fluorescent Lamp 3" msgstr "Fluorescente" #: camlibs/ptp2/config.c:1418 #, fuzzy msgid "Fluorescent Lamp 4" msgstr "Fluorescente" #: camlibs/ptp2/config.c:1419 #, fuzzy msgid "Fluorescent Lamp 5" msgstr "Fluorescente" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "" #: camlibs/ptp2/config.c:1430 #, fuzzy msgid "Fluorescent: Warm White" msgstr "Fluorescente" #: camlibs/ptp2/config.c:1431 #, fuzzy msgid "Fluorescent: Cold White" msgstr "Fluorescente" #: camlibs/ptp2/config.c:1432 #, fuzzy msgid "Fluorescent: Day White" msgstr "Fluorescente" #: camlibs/ptp2/config.c:1433 #, fuzzy msgid "Fluorescent: Daylight" msgstr "Fluorescente" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 #, fuzzy msgid "JPEG Fine" msgstr "JPEG" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 #, fuzzy msgid "JPEG Normal" msgstr "Normal" #: camlibs/ptp2/config.c:1443 #, fuzzy msgid "RAW + JPEG Fine" msgstr "JPEG" #: camlibs/ptp2/config.c:1444 #, fuzzy msgid "RAW + JPEG Normal" msgstr "Normal" #: camlibs/ptp2/config.c:1449 #, fuzzy msgid "Single frame" msgstr "Única" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "" #: camlibs/ptp2/config.c:1452 #, fuzzy msgid "Self-timer" msgstr "Temporizador" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "" #: camlibs/ptp2/config.c:1735 #, fuzzy msgid "undefined" msgstr "superfina" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 #, fuzzy msgid "Undefined" msgstr "Error no definido de PTP" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "Personalizada" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 #, fuzzy msgid "Sports" msgstr "Spot" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "" #: camlibs/ptp2/config.c:1780 #, fuzzy msgid "Flash Off" msgstr "Modo del flash" #: camlibs/ptp2/config.c:1788 #, fuzzy msgid "red eye suppression" msgstr "Sí, reducción de ojos rojos" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "" #: camlibs/ptp2/config.c:1790 #, fuzzy msgid "auto + red eye suppression" msgstr "Automática, reducción de ojos rojos" #: camlibs/ptp2/config.c:1791 #, fuzzy msgid "on + red eye suppression" msgstr "Sí, reducción de ojos rojos" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 #, fuzzy msgid "Commander" msgstr "Error en el orden de los mandatos." #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 #, fuzzy msgid "Auto Aperture" msgstr "Apertura" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 #, fuzzy msgid "Full Manual" msgstr "Manual" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 #, fuzzy msgid "MF (fixed)" msgstr "Fijo" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "" #: camlibs/ptp2/config.c:1928 #, fuzzy msgid "Center-weighted" msgstr "Centrado en el medio" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "" #: camlibs/ptp2/config.c:1933 #, fuzzy msgid "Center-weighted average" msgstr "Centrado en el medio" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "" #: camlibs/ptp2/config.c:1947 #, fuzzy msgid "User defined 1" msgstr "superfina" #: camlibs/ptp2/config.c:1948 #, fuzzy msgid "User defined 2" msgstr "superfina" #: camlibs/ptp2/config.c:1949 #, fuzzy msgid "User defined 3" msgstr "superfina" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 #, fuzzy msgid "Multiple Focusing Points, Auto" msgstr "Error de enfoque." #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 #, fuzzy msgid "Multiple Focusing Points (Right)" msgstr "Error de enfoque." #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 #, fuzzy msgid "Multiple Focusing Points (Left)" msgstr "Error de enfoque." #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 #, fuzzy msgid "Large" msgstr "Imagen" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 #, fuzzy msgid "Medium 1" msgstr "Media" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 #, fuzzy msgid "Medium 2" msgstr "Media" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 #, fuzzy msgid "Medium 3" msgstr "Media" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "" #: camlibs/ptp2/config.c:2092 #, fuzzy msgid "Setting 4" msgstr "Configuración del flash" #: camlibs/ptp2/config.c:2093 #, fuzzy msgid "Setting 5" msgstr "Configuración del flash" #: camlibs/ptp2/config.c:2094 #, fuzzy msgid "Setting 6" msgstr "Configuración del flash" #: camlibs/ptp2/config.c:2095 #, fuzzy msgid "Setting 7" msgstr "Configuración del flash" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, fuzzy, c-format msgid "Unknown %d" msgstr "Error desconocido" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 #, fuzzy msgid "Factory Default" msgstr "Luz natural" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "" #: camlibs/ptp2/config.c:2246 msgid "Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2272 msgid "RAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2273 msgid "mRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2274 msgid "sRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2275 msgid "RAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2276 msgid "mRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2277 msgid "sRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "" #: camlibs/ptp2/config.c:2305 #, fuzzy msgid "Timer 10 sec" msgstr "Remota" #: camlibs/ptp2/config.c:2306 #, fuzzy msgid "Timer 2 sec" msgstr "Remota" #: camlibs/ptp2/config.c:2307 #, fuzzy msgid "Single silent" msgstr "Única" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, fuzzy, c-format msgid "Auto ISO" msgstr "Automática" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, fuzzy, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, fuzzy, c-format msgid "%d Multi Frame Noise Reduction" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:2453 #, fuzzy msgid "Multi Frame Noise Reduction" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Temporizador" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "" #: camlibs/ptp2/config.c:2868 #, fuzzy msgid "Automatic (No Flash)" msgstr "Automática\n" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 #, fuzzy msgid "Sports Action" msgstr "Spot" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 #, fuzzy msgid "Picture Effect" msgstr "Opciones de la imagen" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "" #: camlibs/ptp2/config.c:2893 #, fuzzy msgid "Pet Portrait" msgstr "Contraste-" #: camlibs/ptp2/config.c:2894 #, fuzzy msgid "Candlelight" msgstr "Luz natural" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "" #: camlibs/ptp2/config.c:3032 #, fuzzy msgid "Flourescent" msgstr "Fluorescente" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 #, fuzzy msgid "Effects" msgstr "Modo de grabación" #: camlibs/ptp2/config.c:3075 msgid "U1" msgstr "" #: camlibs/ptp2/config.c:3076 msgid "U2" msgstr "" #: camlibs/ptp2/config.c:3104 #, fuzzy msgid "Back Light" msgstr "Suave" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 #, fuzzy msgid "Single Shot" msgstr "Única" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 #, fuzzy msgid "Timer" msgstr "Temporizador" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 #, fuzzy msgid "Delayed Remote" msgstr "Remota" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "" #: camlibs/ptp2/config.c:3125 #, fuzzy msgid "Selftimer 2s" msgstr "Temporizador" #: camlibs/ptp2/config.c:3126 #, fuzzy msgid "Selftimer 10s" msgstr "Temporizador" #: camlibs/ptp2/config.c:3127 msgid "Bracketing C 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3128 msgid "Bracketing C 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3129 msgid "Bracketing C 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3130 msgid "Bracketing C 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3131 msgid "Bracketing C 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3132 msgid "Bracketing S 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3133 msgid "Bracketing S 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3134 msgid "Bracketing S 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3135 msgid "Bracketing S 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3136 msgid "Bracketing S 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3137 msgid "Bracketing WB Lo" msgstr "" #: camlibs/ptp2/config.c:3138 msgid "Bracketing WB Hi" msgstr "" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 #, fuzzy msgid "Centre-spot" msgstr "Captura" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 #, fuzzy msgid "Single Area" msgstr "Única" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "" #: camlibs/ptp2/config.c:3152 #, fuzzy msgid "Single-area AF" msgstr "Única" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "" #: camlibs/ptp2/config.c:3154 msgid "Group-dynamic AF" msgstr "" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "" #: camlibs/ptp2/config.c:3165 msgid "3D Tracking" msgstr "" #: camlibs/ptp2/config.c:3171 #, fuzzy msgid "sRGB (portrait)" msgstr "Contraste-" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "" #: camlibs/ptp2/config.c:3226 #, fuzzy, c-format msgid "Unknown value 0x%04x" msgstr "desconocido (0x%02x)" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 #, fuzzy msgid "Centre" msgstr "Captura" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 #, fuzzy msgid "Bottom" msgstr "Ampliación" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 #, fuzzy msgid "Right" msgstr "Suave" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 #, fuzzy msgid "Center Weighted" msgstr "Centrado en el medio" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "" #: camlibs/ptp2/config.c:3259 #, fuzzy msgid "Center Spot" msgstr "Centrado en el medio" #: camlibs/ptp2/config.c:3266 #, fuzzy msgid "Automatic Flash" msgstr "Automática\n" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 #, fuzzy msgid "Fill flash" msgstr "Flash" #: camlibs/ptp2/config.c:3269 #, fuzzy msgid "Red-eye automatic" msgstr "Reducción de ojos rojos" #: camlibs/ptp2/config.c:3270 #, fuzzy msgid "Red-eye fill" msgstr "Flash anti ojos rojos" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 #, fuzzy msgid "External sync" msgstr "externamente" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 #, fuzzy msgid "Auto Slow Sync" msgstr "Sincronización lenta" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 #, fuzzy msgid "Red-eye Reduction + Slow Sync" msgstr "Reducción de ojos rojos" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3277 #, fuzzy msgid "Red-eye reduction" msgstr "Reducción de ojos rojos" #: camlibs/ptp2/config.c:3278 #, fuzzy msgid "Red-eye reduction with slow sync" msgstr "Reducción de ojos rojos" #: camlibs/ptp2/config.c:3279 #, fuzzy msgid "Slow sync" msgstr "Sincronización lenta" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Sincronización lenta" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Blanco y Negro" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "" #: camlibs/ptp2/config.c:3298 #, fuzzy msgid "Color sketch" msgstr "Modo de color" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "" #: camlibs/ptp2/config.c:3302 #, fuzzy msgid "High key" msgstr "Alta" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 #, fuzzy msgid "infinite" msgstr "Infinito" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "" #: camlibs/ptp2/config.c:3772 #, fuzzy msgid "Normal-area AF" msgstr "Normal" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "" #: camlibs/ptp2/config.c:3778 #, fuzzy msgid "Single-servo AF" msgstr "Única" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 #, fuzzy msgid "Manual Focus" msgstr "Manual" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 #, fuzzy msgid "AE/AF Lock" msgstr "Modo del enfoque" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 #, fuzzy msgid "1 minute" msgstr "41 mm" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 #, fuzzy msgid "10 minutes" msgstr "41 mm" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "" #: camlibs/ptp2/config.c:3828 #, fuzzy msgid "8 mm" msgstr "58 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "" #: camlibs/ptp2/config.c:3842 #, fuzzy msgid "1" msgstr "1x" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 #, fuzzy msgid "2" msgstr "2x" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 #, fuzzy msgid "4" msgstr "4x" #: camlibs/ptp2/config.c:3845 #, fuzzy msgid "8" msgstr "8x" #: camlibs/ptp2/config.c:3846 #, fuzzy msgid "15" msgstr "1,5" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "" #: camlibs/ptp2/config.c:3855 #, fuzzy msgid "20s" msgstr "2,0" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 #, fuzzy msgid "15s" msgstr "1,5" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "" #: camlibs/ptp2/config.c:3858 #, fuzzy msgid "10s" msgstr "1,0" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "" #: camlibs/ptp2/config.c:3916 #, fuzzy msgid "15 minutes" msgstr "41 mm" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 #, fuzzy msgid "Sharper" msgstr "Nítida" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 #, fuzzy msgid "Softer" msgstr "Suave" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 #, fuzzy msgid "Direct Print" msgstr "El directorio existe" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 #, fuzzy msgid "Medium Low" msgstr "Media" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 #, fuzzy msgid "Medium high" msgstr "Media" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 #, fuzzy msgid "Low contrast" msgstr "Contraste-" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 #, fuzzy msgid "Medium High" msgstr "Media" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "" #: camlibs/ptp2/config.c:3976 #, fuzzy msgid "Automatic Macro" msgstr "Automática\n" #: camlibs/ptp2/config.c:3980 #, fuzzy msgid "Single-Servo AF" msgstr "Única" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3989 #, fuzzy msgid "One Shot" msgstr "Única" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 #, fuzzy msgid "AI Focus" msgstr "Foco" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 #, fuzzy msgid "Fluorescent H" msgstr "Fluorescente" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 #, fuzzy msgid "Custom Whitebalance PC-1" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 #, fuzzy msgid "Custom Whitebalance PC-2" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 #, fuzzy msgid "Custom Whitebalance PC-3" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "" #: camlibs/ptp2/config.c:4034 #, fuzzy msgid "Shadow" msgstr "Nítida" #: camlibs/ptp2/config.c:4118 #, fuzzy msgid "Low sharpening" msgstr "Cargando" #: camlibs/ptp2/config.c:4120 #, fuzzy msgid "Black & white" msgstr "Blanco y Negro" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 #, fuzzy msgid "AE & Flash" msgstr "SIN Flash" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 #, fuzzy msgid "AE only" msgstr "preparada" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 #, fuzzy msgid "Flash only" msgstr "Modo del flash" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 #, fuzzy msgid "WB bracketing" msgstr "Medida de la exposición" #: camlibs/ptp2/config.c:4221 #, fuzzy msgid "ADL bracketing" msgstr "Medida de la exposición" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 #, fuzzy msgid "Remote Mirror Up" msgstr "Fecha y hora" #: camlibs/ptp2/config.c:4248 #, fuzzy msgid "Application Mode 0" msgstr "Modo de operación" #: camlibs/ptp2/config.c:4249 #, fuzzy msgid "Application Mode 1" msgstr "Modo de operación" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "" #: camlibs/ptp2/config.c:4286 #, fuzzy msgid "Low sensitivity" msgstr "Baja (la mejor calidad)" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "" #: camlibs/ptp2/config.c:4378 #, fuzzy msgid "Flash/speed" msgstr "Modo del flash" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "" #: camlibs/ptp2/config.c:4380 #, fuzzy msgid "Flash/aperture" msgstr "Apertura" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 #, fuzzy msgid "NEF+Fine" msgstr "Fina" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 #, fuzzy msgid "NEF+Normal" msgstr "Normal" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "" #: camlibs/ptp2/config.c:4575 #, fuzzy msgid "RAW+JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "" #: camlibs/ptp2/config.c:4642 #, fuzzy msgid "Optimal quality" msgstr "Calidad de imagen" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "" #: camlibs/ptp2/config.c:4695 #, fuzzy msgid "3 (Normal)" msgstr "Normal" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 #, fuzzy msgid "AE/AF lock" msgstr "Bloqueo AE" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 #, fuzzy msgid "AE lock only" msgstr "Bloqueo AE" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "" #: camlibs/ptp2/config.c:4780 #, fuzzy msgid "Preview" msgstr "Anterior" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "" #: camlibs/ptp2/config.c:4788 #, fuzzy msgid "Bracketing burst" msgstr "Medida de la exposición" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "" #: camlibs/ptp2/config.c:4790 #, fuzzy msgid "Center-weighted metering" msgstr "Centrado en el medio" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/config.c:4791 #, fuzzy msgid "Spot metering" msgstr "Modo de medición de punto" #: camlibs/ptp2/config.c:4792 #, fuzzy msgid "Playback" msgstr "Reproducción" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "" #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "" #: camlibs/ptp2/config.c:4871 #, fuzzy msgid "Unknown value" msgstr "Error desconocido" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "" #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "" #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "" #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 #, fuzzy msgid "Press Full" msgstr "PTP. Almacén completo" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 #, fuzzy msgid "Press 1" msgstr "Preconfigurado" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 #, fuzzy msgid "Press 2" msgstr "Preconfigurado" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 #, fuzzy msgid "Press 3" msgstr "Preconfigurado" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" #: camlibs/ptp2/config.c:5923 #, fuzzy msgid "Internal RAM" msgstr "internamente" #: camlibs/ptp2/config.c:5924 #, fuzzy msgid "Memory card" msgstr "Sin tarjeta" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "" #: camlibs/ptp2/config.c:6092 #, fuzzy msgid "Display" msgstr "Mostrar fecha" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "" #: camlibs/ptp2/config.c:6359 #, fuzzy msgid "Default gateway" msgstr "Luz natural" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "" #: camlibs/ptp2/config.c:6412 #, fuzzy msgid "List Wifi profiles" msgstr "Lista de todos los ficheros" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "" #: camlibs/ptp2/config.c:6521 #, fuzzy msgid "Power Down" msgstr "SIN indicador de energía" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 #, fuzzy msgid "Focus Lock" msgstr "Modo del enfoque" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 #, fuzzy msgid "Bulb Mode" msgstr "Modo de la lente" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 #, fuzzy msgid "Movie Capture" msgstr "Captura" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 #, fuzzy msgid "Serial Number" msgstr "%sNúmero de serie: %s\n" #: camlibs/ptp2/config.c:6548 #, fuzzy msgid "Camera Manufacturer" msgstr "Cámara OK.\n" #: camlibs/ptp2/config.c:6550 #, fuzzy msgid "Device Version" msgstr "Versión: " #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "" #: camlibs/ptp2/config.c:6556 #, fuzzy msgid "PTP Version" msgstr "Versión: " #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 #, fuzzy msgid "DPOF Version" msgstr "Versión: " #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 #, fuzzy msgid "AC Power" msgstr "Modo del flash" #: camlibs/ptp2/config.c:6559 #, fuzzy msgid "External Flash" msgstr "externamente" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 #, fuzzy msgid "Battery Level" msgstr "Batería" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 #, fuzzy msgid "Camera Orientation" msgstr "Opciones de la cámara" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 #, fuzzy msgid "Flash Open" msgstr "Modo del flash" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 #, fuzzy msgid "Flash Charged" msgstr "Tarjeta CompactFlash" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 #, fuzzy msgid "Lens Name" msgstr "Modo de la lente" #: camlibs/ptp2/config.c:6570 #, fuzzy msgid "Shutter Counter" msgstr "Velocidad del obturador (en segundos)" #: camlibs/ptp2/config.c:6571 #, fuzzy msgid "Available Shots" msgstr "Memoria disponible: " #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6576 #, fuzzy msgid "Low Light" msgstr "Suave" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 #, fuzzy msgid "Light Meter" msgstr "Suave" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 #, fuzzy msgid "AF Locked" msgstr "Modo del enfoque" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 #, fuzzy msgid "FV Locked" msgstr "Modo del enfoque" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 #, fuzzy msgid "Camera Date and Time" msgstr "Fecha y hora" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 #, fuzzy msgid "Beep Mode" msgstr "Modo de la lente" #: camlibs/ptp2/config.c:6591 #, fuzzy msgid "Image Comment" msgstr "Ajuste de la imagen" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 #, fuzzy msgid "Enable Image Comment" msgstr "Ajuste de la imagen" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 #, fuzzy msgid "LCD Off Time" msgstr "Hora de apagado automático" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 #, fuzzy msgid "Recording Media" msgstr "Modo de grabación" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 #, fuzzy msgid "Camera Output" msgstr "Cámara OK.\n" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "" #: camlibs/ptp2/config.c:6602 #, fuzzy msgid "EVF Mode" msgstr "Modo LED" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Copyright" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 #, fuzzy msgid "Flicker Reduction" msgstr "Reducción de ojos rojos" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "" #: camlibs/ptp2/config.c:6613 #, fuzzy msgid "Focus Info" msgstr "Modo del enfoque" #: camlibs/ptp2/config.c:6614 #, fuzzy msgid "Focus Area" msgstr "Modo del enfoque" #: camlibs/ptp2/config.c:6615 #, fuzzy msgid "Auto Power Off" msgstr "Apagado automático (en minutos)" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 #, fuzzy msgid "Capture Target" msgstr "Opciones de apertura" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 #, fuzzy msgid "Image Format SD" msgstr "Formato de la fecha" #: camlibs/ptp2/config.c:6634 #, fuzzy msgid "Image Format CF" msgstr "Formato de la fecha" #: camlibs/ptp2/config.c:6636 #, fuzzy msgid "Image Format Ext HD" msgstr "Formato de la fecha" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "Velocidad ISO" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 #, fuzzy msgid "ISO Auto" msgstr "Automática" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 #, fuzzy msgid "WhiteBalance" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6654 #, fuzzy msgid "WhiteBalance Adjust A" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6655 #, fuzzy msgid "WhiteBalance Adjust B" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6656 #, fuzzy msgid "WhiteBalance X A" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6657 #, fuzzy msgid "WhiteBalance X B" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 #, fuzzy msgid "Color Model" msgstr "Modo de color" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 #, fuzzy msgid "Color Space" msgstr "Modo de color" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6669 #, fuzzy msgid "Auto Focus Mode 2" msgstr "Modo del enfoque" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 #, fuzzy msgid "Flash Compensation" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 #, fuzzy msgid "AEB Exposure Compensation" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:6685 #, fuzzy msgid "Nikon Flash Mode" msgstr "Modo del flash" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 #, fuzzy msgid "Flash Commander Mode" msgstr "Modo del flash" #: camlibs/ptp2/config.c:6687 #, fuzzy msgid "Flash Commander Power" msgstr "Modo del flash" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 #, fuzzy msgid "Flash Command Self Mode" msgstr "Modo del flash" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 #, fuzzy msgid "Flash Command Self Compensation" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 #, fuzzy msgid "Flash Command A Mode" msgstr "Modo del flash" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 #, fuzzy msgid "Flash Command A Compensation" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 #, fuzzy msgid "Flash Command B Mode" msgstr "Modo del flash" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 #, fuzzy msgid "Flash Command B Compensation" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 #, fuzzy msgid "AF Beep Mode" msgstr "Modo de la lente" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "" #: camlibs/ptp2/config.c:6702 msgid "Movie F-Number" msgstr "" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 #, fuzzy msgid "Focus Distance" msgstr "Posición del foco" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "" #: camlibs/ptp2/config.c:6710 #, fuzzy msgid "Focus Mode 2" msgstr "Modo del enfoque" #: camlibs/ptp2/config.c:6712 msgid "Continuous AF" msgstr "" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 #, fuzzy msgid "Effect Mode" msgstr "Modo de grabación" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 #, fuzzy msgid "Exposure Program" msgstr "Tiempo de exposición de la lámpara" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 #, fuzzy msgid "Scene Mode" msgstr "Modo de la lente" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 #, fuzzy msgid "HDR Mode" msgstr "Modo LED" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/config.c:6725 #, fuzzy msgid "Canon Shooting Mode" msgstr "Modo de medición de punto" #: camlibs/ptp2/config.c:6726 #, fuzzy msgid "Canon Auto Exposure Mode" msgstr "Bloqueo de exposición automática" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 #, fuzzy msgid "Drive Mode" msgstr "Modo LED" #: camlibs/ptp2/config.c:6728 #, fuzzy msgid "Picture Style" msgstr "Opciones de la imagen" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 #, fuzzy msgid "Focus Metering Mode" msgstr "Modo de medición de punto" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 #, fuzzy msgid "Exposure Metering Mode" msgstr "Medida de la exposición" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 #, fuzzy msgid "Focusing Point" msgstr "Error de enfoque." #: camlibs/ptp2/config.c:6738 #, fuzzy msgid "Capture Delay" msgstr "Captura" #: camlibs/ptp2/config.c:6742 #, fuzzy msgid "Shutter Speed 2" msgstr "Velocidad del obturador (en segundos)" #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "Velocidad del obturador (en segundos)" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 #, fuzzy msgid "Metering Mode" msgstr "Modo de medición de punto" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 #, fuzzy msgid "AF Distance" msgstr "Posición del foco" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 #, fuzzy msgid "Focus Area Wrap" msgstr "Modo del enfoque" #: camlibs/ptp2/config.c:6751 #, fuzzy msgid "Exposure Delay Mode" msgstr "Medida de la exposición" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 #, fuzzy msgid "Exposure Lock" msgstr "Exposición" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 #, fuzzy msgid "Flash Sign" msgstr "Configuración del flash" #: camlibs/ptp2/config.c:6759 #, fuzzy msgid "Modelling Flash" msgstr "Forzar el flash\n" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 #, fuzzy msgid "Image Review" msgstr "Tamaño de la imagen" #: camlibs/ptp2/config.c:6762 #, fuzzy msgid "Image Rotation Flag" msgstr "Opciones de la cámara" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 #, fuzzy msgid "Flash Mode Manual Power" msgstr "Modo del flash" #: camlibs/ptp2/config.c:6765 #, fuzzy msgid "Auto Focus Area" msgstr "Modo del enfoque" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 #, fuzzy msgid "Flash Exposure Compensation" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 #, fuzzy msgid "Bracketing" msgstr "Medida de la exposición" #: camlibs/ptp2/config.c:6769 #, fuzzy msgid "Bracket Mode" msgstr "Modo de la lente" #: camlibs/ptp2/config.c:6770 #, fuzzy msgid "EV Step" msgstr "Velocidad ISO" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 #, fuzzy msgid "Bracket Set" msgstr "Automática, reducción de ojos rojos" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 #, fuzzy msgid "Auto White Balance Bias" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 #, fuzzy msgid "Tungsten White Balance Bias" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 #, fuzzy msgid "Fluorescent White Balance Bias" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 #, fuzzy msgid "Daylight White Balance Bias" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 #, fuzzy msgid "Flash White Balance Bias" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 #, fuzzy msgid "Cloudy White Balance Bias" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 #, fuzzy msgid "Shady White Balance Bias" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6794 #, fuzzy msgid "White Balance Bias Preset Nr" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6795 #, fuzzy msgid "White Balance Bias Preset 0" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6796 #, fuzzy msgid "White Balance Bias Preset 1" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6797 #, fuzzy msgid "White Balance Bias Preset 2" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6798 #, fuzzy msgid "White Balance Bias Preset 3" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6799 #, fuzzy msgid "White Balance Bias Preset 4" msgstr "Balance de blancos" #: camlibs/ptp2/config.c:6800 #, fuzzy msgid "Selftimer Delay" msgstr "Hora del temporizador" #: camlibs/ptp2/config.c:6801 #, fuzzy msgid "Center Weight Area" msgstr "Centrado en el medio" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 #, fuzzy msgid "Flash Shutter Speed" msgstr "Velocidad del obturador (en segundos)" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 #, fuzzy msgid "Remote Timeout" msgstr "Fecha y hora" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 #, fuzzy msgid "Remote Mode" msgstr "Modo de grabación" #: camlibs/ptp2/config.c:6805 #, fuzzy msgid "Application Mode" msgstr "Modo de operación" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 #, fuzzy msgid "Sharpening" msgstr "Cargando" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 #, fuzzy msgid "Tone Compensation" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 #, fuzzy msgid "Saturation" msgstr "Configuración" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 #, fuzzy msgid "Hue Adjustment" msgstr "Ajuste de la imagen" #: camlibs/ptp2/config.c:6811 #, fuzzy msgid "Auto Exposure Bracketing" msgstr "Medida de la exposición" #: camlibs/ptp2/config.c:6812 #, fuzzy msgid "Movie Sound" msgstr "Sonido" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 #, fuzzy msgid "Manual Movie Setting" msgstr "Opciones de apertura" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 #, fuzzy msgid "Video Mode" msgstr "Modo de grabación" #: camlibs/ptp2/config.c:6835 #, fuzzy msgid "Meter Off Time" msgstr "Hora de apagado automático" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 #, fuzzy msgid "Movie Quality" msgstr "Calidad de imagen" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 #, fuzzy msgid "Minimum Shutter Speed" msgstr "Velocidad del obturador (en segundos)" #: camlibs/ptp2/config.c:6862 #, fuzzy msgid "Movie Resolution" msgstr "Resolución del fichero" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 #, fuzzy msgid "Continuous Shooting Speed Slow" msgstr "Velocidad del obturador (en segundos)" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/config.c:6869 #, fuzzy msgid "Focus Metering" msgstr "Modo de medición de punto" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 #, fuzzy msgid "High ISO Noise Reduction" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 #, fuzzy msgid "Continuous Shooting Speed High" msgstr "Velocidad del obturador (en segundos)" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 #, fuzzy msgid "JPEG Compression Policy" msgstr "Compresión" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 #, fuzzy msgid "AF Lock On" msgstr "Modo del enfoque" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "Compensación de la exposición" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 #, fuzzy msgid "Raw Compression" msgstr "Compresión" #: camlibs/ptp2/config.c:6922 #, fuzzy msgid "Image Quality 2" msgstr "Calidad de imagen" #: camlibs/ptp2/config.c:6944 #, fuzzy msgid "Image Settings" msgstr "Opciones de la cámara" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 #, fuzzy msgid "Capture Settings" msgstr "Opciones de apertura" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 #, fuzzy msgid "Other PTP Device Properties" msgstr "Propiedad de dispositivo PTP no soportada" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "" #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "" #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "" #: camlibs/ptp2/library.c:2537 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "Su cámara no soporta cambiar los nombres de fichero." #: camlibs/ptp2/library.c:2545 #, fuzzy msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "Su cámara no soporta cambiar los nombres de fichero." #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 #, fuzzy msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "Su cámara no soporta cambiar los nombres de fichero." #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "" #: camlibs/ptp2/library.c:2799 #, fuzzy msgid "Sorry, your camera does not support Nikon capture" msgstr "Su cámara no soporta cambiar los nombres de fichero." #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 #, fuzzy msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Su cámara no soporta cambiar los nombres de fichero." #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 msgid "Canon EOS Half-Press failed" msgstr "" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 msgid "Canon EOS Half-Release failed" msgstr "" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 msgid "Canon EOS Full-Press failed" msgstr "" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 msgid "Canon EOS Full-Release failed" msgstr "" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" #: camlibs/ptp2/library.c:3332 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "Su cámara no soporta cambiar los nombres de fichero." #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 msgid "Canon Capture failed" msgstr "" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 #, fuzzy msgid "Sorry, your camera does not support generic capture" msgstr "Su cámara no soporta cambiar los nombres de fichero." #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" #: camlibs/ptp2/library.c:4668 #, fuzzy msgid "read only" msgstr "preparada" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, fuzzy, c-format msgid "Manufacturer: %s\n" msgstr "%sFabricante : %s\n" #: camlibs/ptp2/library.c:4800 #, fuzzy, c-format msgid "Model: %s\n" msgstr "Modelo: " #: camlibs/ptp2/library.c:4802 #, fuzzy, c-format msgid " Version: %s\n" msgstr "Versión: %s\n" #: camlibs/ptp2/library.c:4805 #, fuzzy, c-format msgid " Serial Number: %s\n" msgstr "%sNúmero de serie: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "" #: camlibs/ptp2/library.c:4821 #, fuzzy, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "Revisión del firmware: %d.%02d\n" #: camlibs/ptp2/library.c:4828 #, fuzzy, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Modo de operación" #: camlibs/ptp2/library.c:4833 #, fuzzy, c-format msgid "" "\n" "Capture Formats: " msgstr "Formato de la fecha" #: camlibs/ptp2/library.c:4847 #, fuzzy, c-format msgid "Display Formats: " msgstr "Formato de la fecha" #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr "" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "" #: camlibs/ptp2/library.c:4902 #, fuzzy, c-format msgid "File Deletion, " msgstr "Resolución del fichero" #: camlibs/ptp2/library.c:4904 #, fuzzy, c-format msgid "No File Deletion, " msgstr "Resolución del fichero" #: camlibs/ptp2/library.c:4908 #, fuzzy, c-format msgid "File Upload\n" msgstr "El envío de fichero ha fallado." #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4920 #, fuzzy, c-format msgid "Open Capture, " msgstr "Captura" #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4929 #, fuzzy, c-format msgid "Canon Capture" msgstr "Captura" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "" #: camlibs/ptp2/library.c:4947 #, fuzzy, c-format msgid "Nikon Capture 1" msgstr "Captura" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "" #: camlibs/ptp2/library.c:4965 #, fuzzy, c-format msgid "Sony Capture" msgstr "Captura" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "" #: camlibs/ptp2/library.c:4991 #, fuzzy, c-format msgid "\tCanon Wifi support\n" msgstr "No se soporta la tarjeta." #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, fuzzy, c-format msgid "Unknown: 0x%04x\n" msgstr "desconocido (0x%02x)" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "" #: camlibs/ptp2/library.c:5043 #, fuzzy msgid "Generic Flat" msgstr "General" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "" #: camlibs/ptp2/library.c:5056 #, fuzzy msgid "Read-Only" msgstr "Preparada" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5075 #, fuzzy, c-format msgid "\tFree Space (Images): %d\n" msgstr "Cantidad de imágenes: %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr "" #: camlibs/ptp2/library.c:5116 #, fuzzy, c-format msgid "cannot be queried.\n" msgstr "No se puede escribir la tarjeta." #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr "" #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "" #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "" #: camlibs/ptp2/library.c:6414 #, fuzzy msgid "Device does not support setting object protection." msgstr "Esta cámara no soporta la configuración de las opciones." #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "" #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Inicializando la cámara" #: camlibs/ptp2/library.c:7254 #, fuzzy, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "PTP está implementado sólo para cámaras USB." #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "Error no definido de PTP" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP ok." #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "Error general de PTP" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "Sesión PTP no abierta" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP ID de transacción no válido" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "Operación PTP no soportada" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "Parámetro PTP no soportado" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP. Transferencia incompleta" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP. ID de almacenamiento no válido" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "PTP. Manejador de objeto no válido" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "Propiedad de dispositivo PTP no soportada" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP. Código de formato de objeto no válido" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP. Almacén completo" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP. Objeto protegido contra escritura" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "PTP. Almacén de sólo lectura" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP. Acceso denegado" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP. Sin miniatura presente" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP. Falló la auto-comprobación" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP. Borrado parcial" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "PTP. Almacén no disponible" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "PTP. No se soporta especificación por formato" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "PTP. No hay información válida del objeto" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP. Formato de código no válido" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "PTP. Código de fabricante desconocido" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP. Captura ya terminada" #: camlibs/ptp2/ptp.c:4038 #, fuzzy msgid "PTP Device Busy" msgstr "PTP. Bus del dispositivo" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "PTP. Objeto padre no válido" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "PTP. Formato de propiedad del dispositivo no válido" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "PTP. Valor de propiedad del dispositivo no válido" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "PTP. Parámetro no válido" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP. La sesión ya está abierta" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP. Transacción cancelada" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "PTP. No se soporta especificación del destino" #: camlibs/ptp2/ptp.c:4047 #, fuzzy msgid "Filename Required" msgstr "PTP. Se necesita nombre de fichero EK" #: camlibs/ptp2/ptp.c:4048 #, fuzzy msgid "Filename Conflicts" msgstr "PTP. Conflictos con nombre de fichero EK" #: camlibs/ptp2/ptp.c:4049 #, fuzzy msgid "Filename Invalid" msgstr "PTP. Nombre de fichero EK no válido" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "" #: camlibs/ptp2/ptp.c:4052 #, fuzzy msgid "Out of Focus" msgstr "Sin memoria" #: camlibs/ptp2/ptp.c:4053 #, fuzzy msgid "Change Camera Mode Failed" msgstr "%sModelo de la cámara: %s\n" #: camlibs/ptp2/ptp.c:4054 #, fuzzy msgid "Invalid Status" msgstr "No válida" #: camlibs/ptp2/ptp.c:4055 #, fuzzy msgid "Set Property Not Supported" msgstr "Propiedad de dispositivo PTP no soportada" #: camlibs/ptp2/ptp.c:4056 #, fuzzy msgid "Whitebalance Reset Error" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "" #: camlibs/ptp2/ptp.c:4058 #, fuzzy msgid "Shutter Speed Bulb" msgstr "Velocidad del obturador (en segundos)" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "" #: camlibs/ptp2/ptp.c:4066 #, fuzzy msgid "Unknown Command" msgstr "Modelo desconocido" #: camlibs/ptp2/ptp.c:4067 #, fuzzy msgid "Operation Refused" msgstr "Operación cancelada" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "" #: camlibs/ptp2/ptp.c:4069 #, fuzzy msgid "Battery Low" msgstr "Batería" #: camlibs/ptp2/ptp.c:4070 #, fuzzy msgid "Camera Not Ready" msgstr "Modelo de cámara (sólo lectura)" #: camlibs/ptp2/ptp.c:4072 #, fuzzy msgid "PTP Timeout" msgstr "Fecha y hora" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "" #: camlibs/ptp2/ptp.c:4075 #, fuzzy msgid "PTP Response Expected" msgstr "PTP. Error de protocolo, se esperaba respuesta" #: camlibs/ptp2/ptp.c:4076 #, fuzzy msgid "PTP Data Expected" msgstr "PTP. Error de protocolo, se esperaban datos" #: camlibs/ptp2/ptp.c:4077 #, fuzzy msgid "PTP I/O Error" msgstr "PTP. Error de E/S" #: camlibs/ptp2/ptp.c:4101 #, fuzzy msgid "Undefined PTP Property" msgstr "Error no definido de PTP" #: camlibs/ptp2/ptp.c:4103 #, fuzzy msgid "Functional Mode" msgstr "Modo de operación" #: camlibs/ptp2/ptp.c:4105 #, fuzzy msgid "Compression Setting" msgstr "Compresión" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "" #: camlibs/ptp2/ptp.c:4114 #, fuzzy msgid "Exposure Time" msgstr "Tiempo de exposición de la lámpara" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "" #: camlibs/ptp2/ptp.c:4119 #, fuzzy msgid "Exposure Bias Compensation" msgstr "Compensación de la exposición" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 #, fuzzy msgid "Contrast" msgstr "Contraste-" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Zoom digital" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "" #: camlibs/ptp2/ptp.c:4134 #, fuzzy msgid "Copyright Info" msgstr "Copyright" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "Valores soportados" #: camlibs/ptp2/ptp.c:4136 msgid "Enabled Streams" msgstr "" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Formato de la fecha" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Resolución del fichero" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "Calidad de imagen" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Contraste-" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "Brillo-" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Formato de la fecha" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 #, fuzzy msgid "Date Time Stamp Format" msgstr "Formato de la fecha" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "" #: camlibs/ptp2/ptp.c:4159 #, fuzzy msgid "Power Saving" msgstr "SIN indicador de energía" #: camlibs/ptp2/ptp.c:4160 #, fuzzy msgid "UI Language" msgstr "Idioma" #: camlibs/ptp2/ptp.c:4169 #, fuzzy msgid "Battery Type" msgstr "Batería" #: camlibs/ptp2/ptp.c:4170 #, fuzzy msgid "Battery Mode" msgstr "Batería" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "" #: camlibs/ptp2/ptp.c:4172 #, fuzzy msgid "Camera Mode" msgstr "%sModelo de la cámara: %s\n" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "" #: camlibs/ptp2/ptp.c:4176 #, fuzzy msgid "Self Time" msgstr "Temporizador" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 #, fuzzy msgid "Shooting Mode" msgstr "Velocidad del obturador (en segundos)" #: camlibs/ptp2/ptp.c:4180 #, fuzzy msgid "Image Mode" msgstr "Tamaño de la imagen" #: camlibs/ptp2/ptp.c:4187 #, fuzzy msgid "Slow Shutter Setting" msgstr "Configuración de la toma" #: camlibs/ptp2/ptp.c:4188 #, fuzzy msgid "AF Mode" msgstr "Modo de la lente" #: camlibs/ptp2/ptp.c:4189 #, fuzzy msgid "Image Stabilization" msgstr "Opciones de la cámara" #: camlibs/ptp2/ptp.c:4191 #, fuzzy msgid "Color Gain" msgstr "Configuración del color" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "" #: camlibs/ptp2/ptp.c:4194 #, fuzzy msgid "Parameter Set" msgstr "Parámetro 1" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "" #: camlibs/ptp2/ptp.c:4207 #, fuzzy msgid "Capture Transfer Mode" msgstr "%sModelo de la cámara: %s\n" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "" #: camlibs/ptp2/ptp.c:4210 #, fuzzy msgid "Size Quality Mode" msgstr "Calidad de imagen" #: camlibs/ptp2/ptp.c:4211 #, fuzzy msgid "Supported Thumb Size" msgstr "Valores soportados" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "" #: camlibs/ptp2/ptp.c:4217 #, fuzzy msgid "Camera Owner" msgstr "Cámara OK.\n" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "" #: camlibs/ptp2/ptp.c:4219 #, fuzzy msgid "Camera Body ID" msgstr "%sModelo de la cámara: %s\n" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "" #: camlibs/ptp2/ptp.c:4223 #, fuzzy msgid "Digital Zoom Magnification" msgstr "Zoom digital" #: camlibs/ptp2/ptp.c:4224 #, fuzzy msgid "Ml Spot Position" msgstr "Posición del foco" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "" #: camlibs/ptp2/ptp.c:4239 #, fuzzy msgid "Model ID" msgstr "Modelo: " #: camlibs/ptp2/ptp.c:4248 #, fuzzy msgid "Shooting Bank" msgstr "Velocidad del obturador (en segundos)" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "" #: camlibs/ptp2/ptp.c:4278 #, fuzzy msgid "White Balance Preset Number" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4280 #, fuzzy msgid "White Balance Preset Name 0" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4282 #, fuzzy msgid "White Balance Preset Name 1" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4284 #, fuzzy msgid "White Balance Preset Name 2" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4286 #, fuzzy msgid "White Balance Preset Name 3" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4288 #, fuzzy msgid "White Balance Preset Name 4" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4290 #, fuzzy msgid "White Balance Preset Value 0" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4292 #, fuzzy msgid "White Balance Preset Value 1" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4294 #, fuzzy msgid "White Balance Preset Value 2" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4296 #, fuzzy msgid "White Balance Preset Value 3" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4298 #, fuzzy msgid "White Balance Preset Value 4" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "" #: camlibs/ptp2/ptp.c:4360 #, fuzzy msgid "Focus Area Zone" msgstr "Modo del enfoque" #: camlibs/ptp2/ptp.c:4362 #, fuzzy msgid "Enable Copyright" msgstr "Copyright" #: camlibs/ptp2/ptp.c:4366 #, fuzzy msgid "Exposure ISO Step" msgstr "Tiempo de exposición de la lámpara" #: camlibs/ptp2/ptp.c:4368 #, fuzzy msgid "Exposure Step" msgstr "Tiempo de exposición de la lámpara" #: camlibs/ptp2/ptp.c:4370 #, fuzzy msgid "Exposure Compensation (EV)" msgstr "Compensación de la exposición" #: camlibs/ptp2/ptp.c:4374 #, fuzzy msgid "Centre Weight Area" msgstr "Centrado en el medio" #: camlibs/ptp2/ptp.c:4376 #, fuzzy msgid "Exposure Base Matrix" msgstr "Medida de la exposición" #: camlibs/ptp2/ptp.c:4378 #, fuzzy msgid "Exposure Base Center" msgstr "Medida de la exposición" #: camlibs/ptp2/ptp.c:4380 #, fuzzy msgid "Exposure Base Spot" msgstr "Tiempo de exposición de la lámpara" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "" #: camlibs/ptp2/ptp.c:4390 #, fuzzy msgid "Auto Meter Off Time" msgstr "Hora de apagado automático" #: camlibs/ptp2/ptp.c:4392 #, fuzzy msgid "Self Timer Delay" msgstr "Hora del temporizador" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "" #: camlibs/ptp2/ptp.c:4398 #, fuzzy msgid "Auto Off Timers" msgstr "Hora de apagado automático" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "" #: camlibs/ptp2/ptp.c:4402 #, fuzzy msgid "Shooting Speed" msgstr "Velocidad del obturador (en segundos)" #: camlibs/ptp2/ptp.c:4406 #, fuzzy msgid "Exposure delay mode" msgstr "Tiempo de exposición de la lámpara" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 #, fuzzy msgid "Long Exposure Noise Reduction" msgstr "Compensación de la exposición" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "" #: camlibs/ptp2/ptp.c:4418 #, fuzzy msgid "High ISO noise reduction" msgstr "Compensación de la exposición" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "" #: camlibs/ptp2/ptp.c:4424 #, fuzzy msgid "Copyright Information" msgstr "Copyright" #: camlibs/ptp2/ptp.c:4432 #, fuzzy msgid "Modeling Flash" msgstr "Forzar el flash\n" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "" #: camlibs/ptp2/ptp.c:4440 #, fuzzy msgid "Auto Bracket Selection" msgstr "Automática, reducción de ojos rojos" #: camlibs/ptp2/ptp.c:4441 #, fuzzy msgid "NIKON Auto Bracketing Set" msgstr "Automática, reducción de ojos rojos" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/ptp.c:4443 #, fuzzy msgid "Center Button Shooting Mode" msgstr "Modo de medición de punto" #: camlibs/ptp2/ptp.c:4445 #, fuzzy msgid "Center Button Playback Mode" msgstr "Modo actual: Modo de reproducción\n" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "" #: camlibs/ptp2/ptp.c:4457 #, fuzzy msgid "Aperture Setting" msgstr "Opciones de apertura" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/ptp.c:4465 #, fuzzy msgid "Center Button Zoom Ratio" msgstr "Modo de medición de punto" #: camlibs/ptp2/ptp.c:4467 #, fuzzy msgid "Function Button 2" msgstr "Modo de operación" #: camlibs/ptp2/ptp.c:4471 #, fuzzy msgid "Normal AF On" msgstr "Normal" #: camlibs/ptp2/ptp.c:4473 #, fuzzy msgid "Clean Image Sensor" msgstr "Opciones de la cámara" #: camlibs/ptp2/ptp.c:4475 #, fuzzy msgid "Image Comment String" msgstr "Ajuste de la imagen" #: camlibs/ptp2/ptp.c:4477 #, fuzzy msgid "Image Comment Enable" msgstr "Ajuste de la imagen" #: camlibs/ptp2/ptp.c:4479 #, fuzzy msgid "Image Rotation" msgstr "Opciones de la cámara" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "" #: camlibs/ptp2/ptp.c:4497 #, fuzzy msgid "Bracketing Enable" msgstr "Medida de la exposición" #: camlibs/ptp2/ptp.c:4499 #, fuzzy msgid "Exposure Bracketing Step" msgstr "Medida de la exposición" #: camlibs/ptp2/ptp.c:4501 #, fuzzy msgid "Exposure Bracketing Program" msgstr "Medida de la exposición" #: camlibs/ptp2/ptp.c:4503 #, fuzzy msgid "Auto Exposure Bracket Count" msgstr "Medida de la exposición" #: camlibs/ptp2/ptp.c:4504 #, fuzzy msgid "White Balance Bracket Step" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4505 #, fuzzy msgid "White Balance Bracket Program" msgstr "Balance de blancos" #: camlibs/ptp2/ptp.c:4507 #, fuzzy msgid "Lens ID" msgstr "Modo de la lente" #: camlibs/ptp2/ptp.c:4509 #, fuzzy msgid "Lens Sort" msgstr "Modo de la lente" #: camlibs/ptp2/ptp.c:4511 #, fuzzy msgid "Lens Type" msgstr "Modo de la lente" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "" #: camlibs/ptp2/ptp.c:4523 #, fuzzy msgid "Auto Off Photo" msgstr "Hora de apagado automático" #: camlibs/ptp2/ptp.c:4525 #, fuzzy msgid "Auto Off Menu" msgstr "Hora de apagado automático" #: camlibs/ptp2/ptp.c:4527 #, fuzzy msgid "Auto Off Info" msgstr "Hora de apagado automático" #: camlibs/ptp2/ptp.c:4529 #, fuzzy msgid "Self Timer Shot Number" msgstr "Hora del temporizador" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "" #: camlibs/ptp2/ptp.c:4537 #, fuzzy msgid "Nikon Exposure Time" msgstr "Tiempo de exposición de la lámpara" #: camlibs/ptp2/ptp.c:4539 #, fuzzy msgid "Warning Status" msgstr "Estado de la tarjeta:\t\t" #: camlibs/ptp2/ptp.c:4546 #, fuzzy msgid "AF LCD Top Mode 2" msgstr "Modo LCD" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "" #: camlibs/ptp2/ptp.c:4552 #, fuzzy msgid "Exposure Meter" msgstr "Medida de la exposición" #: camlibs/ptp2/ptp.c:4556 #, fuzzy msgid "USB Speed" msgstr "Velocidad ISO" #: camlibs/ptp2/ptp.c:4558 #, fuzzy msgid "CCD Serial Number" msgstr "%sNúmero de serie: %s\n" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "" #: camlibs/ptp2/ptp.c:4564 #, fuzzy msgid "FNumber Lock" msgstr "Modo del enfoque" #: camlibs/ptp2/ptp.c:4566 #, fuzzy msgid "Exposure Aperture Lock" msgstr "Medida de la exposición" #: camlibs/ptp2/ptp.c:4568 #, fuzzy msgid "TV Lock Setting" msgstr "Configuración de la toma" #: camlibs/ptp2/ptp.c:4570 #, fuzzy msgid "AV Lock Setting" msgstr "Configuración de la toma" #: camlibs/ptp2/ptp.c:4572 #, fuzzy msgid "Illum Setting" msgstr "Opciones de la cámara" #: camlibs/ptp2/ptp.c:4574 #, fuzzy msgid "Focus Point Bright" msgstr "Error de enfoque." #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 #, fuzzy msgid "External Flash Mode" msgstr "Modo del flash" #: camlibs/ptp2/ptp.c:4584 #, fuzzy msgid "External Flash Compensation" msgstr "Compensación de la exposición" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "" #: camlibs/ptp2/ptp.c:4602 #, fuzzy msgid "BW Sharpness" msgstr "Nitidez" #: camlibs/ptp2/ptp.c:4604 #, fuzzy msgid "BW Contrast" msgstr "Contraste-" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "" #: camlibs/ptp2/ptp.c:4614 #, fuzzy msgid "Flourescent Type" msgstr "Fluorescente" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "" #: camlibs/ptp2/ptp.c:4618 #, fuzzy msgid "Tune Preset 0" msgstr "Preconfigurado" #: camlibs/ptp2/ptp.c:4620 #, fuzzy msgid "Tune Preset 1" msgstr "Preconfigurado" #: camlibs/ptp2/ptp.c:4622 #, fuzzy msgid "Tune Preset 2" msgstr "Preconfigurado" #: camlibs/ptp2/ptp.c:4624 #, fuzzy msgid "Tune Preset 3" msgstr "Preconfigurado" #: camlibs/ptp2/ptp.c:4626 #, fuzzy msgid "Tune Preset 4" msgstr "Preconfigurado" #: camlibs/ptp2/ptp.c:4630 #, fuzzy msgid "Autofocus Mode" msgstr "Modo del enfoque" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "" #: camlibs/ptp2/ptp.c:4656 #, fuzzy msgid "Auto FP" msgstr "Automática" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "" #: camlibs/ptp2/ptp.c:4662 #, fuzzy msgid "Battery Cell Kind" msgstr "Batería" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "" #: camlibs/ptp2/ptp.c:4670 #, fuzzy msgid "Info Disp Setting" msgstr "Configuración del flash" #: camlibs/ptp2/ptp.c:4672 #, fuzzy msgid "Preview Button" msgstr "Previsualizar la miniatura" #: camlibs/ptp2/ptp.c:4674 #, fuzzy msgid "Preview Button 2" msgstr "Previsualizar la miniatura" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4678 #, fuzzy msgid "Indicator Display" msgstr "Mostrar fecha" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "" #: camlibs/ptp2/ptp.c:4684 #, fuzzy msgid "Live View Mode" msgstr "Modo de la lente" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "" #: camlibs/ptp2/ptp.c:4694 #, fuzzy msgid "Exposure Display Status" msgstr "Tiempo de exposición de la lámpara" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "" #: camlibs/ptp2/ptp.c:4700 #, fuzzy msgid "Exposure Indicate Lightup" msgstr "Tiempo de exposición de la lámpara" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "" #: camlibs/ptp2/ptp.c:4708 #, fuzzy msgid "Flash MRepeat Count" msgstr "Modo del flash" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "" #: camlibs/ptp2/ptp.c:4749 #, fuzzy msgid "Image Compression" msgstr "Compresión" #: camlibs/ptp2/ptp.c:4758 #, fuzzy msgid "Secure Time" msgstr "Tiempo de exposición de la lámpara" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "" #: camlibs/ptp2/ptp.c:4782 #, fuzzy msgid "Quality" msgstr "Calidad de imagen" #: camlibs/ptp2/ptp.c:4783 #, fuzzy msgid "Release Mode" msgstr "Modo del flash" #: camlibs/ptp2/ptp.c:4784 #, fuzzy msgid "Focus Areas" msgstr "Modo del enfoque" #: camlibs/ptp2/ptp.c:4785 #, fuzzy msgid "AE Lock" msgstr "Exposición" #: camlibs/ptp2/ptp.c:4797 #, fuzzy msgid "Image size" msgstr "Tamaño de la imagen" #: camlibs/ptp2/ptp.c:4798 #, fuzzy msgid "Shutter speed" msgstr "Velocidad del obturador (en segundos)" #: camlibs/ptp2/ptp.c:4799 msgid "Color temperature" msgstr "" #: camlibs/ptp2/ptp.c:4802 #, fuzzy msgid "Expose Index" msgstr "Tiempo de exposición de la lámpara" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 #, fuzzy msgid "Still Image" msgstr "Imagen" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "" #: camlibs/ptp2/ptp.c:4940 #, fuzzy msgid "JPEG Norm" msgstr "JPEG" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Incandescente" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "" #: camlibs/ptp2/ptp.c:4962 #, fuzzy msgid "Center Weighted Average" msgstr "Centrado en el medio" #: camlibs/ptp2/ptp.c:4964 #, fuzzy msgid "Center-spot" msgstr "Centrado en el medio" #: camlibs/ptp2/ptp.c:4966 #, fuzzy msgid "Automatic flash" msgstr "Automática\n" #: camlibs/ptp2/ptp.c:4969 #, fuzzy msgid "Automatic Red-eye Reduction" msgstr "Automática, reducción de ojos rojos" #: camlibs/ptp2/ptp.c:4970 #, fuzzy msgid "Red-eye fill flash" msgstr "Flash anti ojos rojos" #: camlibs/ptp2/ptp.c:4988 #, fuzzy msgid "Power Wind" msgstr "SIN indicador de energía" #: camlibs/ptp2/ptp.c:4994 #, fuzzy msgid "Timer + Remote" msgstr "Remota" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "" #: camlibs/ptp2/ptp.c:5056 #, fuzzy msgid "Flash Lock" msgstr "Modo del flash" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "" #: camlibs/ptp2/ptp.c:5169 #, fuzzy msgid "LCD Backlight" msgstr "Brillo del LCD" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "" #: camlibs/ptp2/ptp.c:5228 #, fuzzy msgid "1 min" msgstr "41 mm" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "" #: camlibs/ptp2/ptp.c:5266 #, fuzzy msgid "Dark on light" msgstr "Luz natural" #: camlibs/ptp2/ptp.c:5267 #, fuzzy msgid "Light on dark" msgstr "Luz demasiado oscura." #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "SuperFina" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "" #: camlibs/ptp2/ptp.c:5345 #, fuzzy msgid "Auto + Red Eye Suppression" msgstr "Automática, reducción de ojos rojos" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "" #: camlibs/ptp2/ptp.c:5370 #, fuzzy msgid "Pan Focus" msgstr "Manual" #: camlibs/ptp2/ptp.c:5374 #, fuzzy msgid "Single-Frame Shooting" msgstr "Única" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/ptp.c:5375 #, fuzzy msgid "Continuous Shooting" msgstr "Modo de medición de punto" #: camlibs/ptp2/ptp.c:5376 #, fuzzy msgid "Timer (Single) Shooting" msgstr "Única" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "" #: camlibs/ptp2/ptp.c:5385 #, fuzzy msgid "Center-weighted Metering" msgstr "Centrado en el medio" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/ptp.c:5386 #, fuzzy msgid "Spot Metering" msgstr "Modo de medición de punto" #: camlibs/ptp2/ptp.c:5387 #, fuzzy msgid "Average Metering" msgstr "Medida de la exposición" #: camlibs/ptp2/ptp.c:5388 #, fuzzy msgid "Evaluative Metering" msgstr "Medida de la exposición" #: camlibs/ptp2/ptp.c:5389 #, fuzzy msgid "Partial Metering" msgstr "PTP. Borrado parcial" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/ptp2/ptp.c:5392 #, fuzzy msgid "Multi-Spot Metering" msgstr "Modo de medición de punto" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 #, fuzzy msgid "High 2" msgstr "Alta" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "" #: camlibs/ptp2/ptp.c:5462 #, fuzzy msgid "Development Parameters 1" msgstr "Parámetro 1" #: camlibs/ptp2/ptp.c:5463 #, fuzzy msgid "Development Parameters 2" msgstr "Parámetro 2" #: camlibs/ptp2/ptp.c:5464 #, fuzzy msgid "Development Parameters 3" msgstr "Parámetro 3" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "" #: camlibs/ptp2/ptp.c:5600 #, fuzzy msgid "Encounter" msgstr "Captura" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "" #: camlibs/ptp2/ptp.c:5605 #, fuzzy msgid "Undefined Audio" msgstr "Error no definido de PTP" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5612 #, fuzzy msgid "Undefined Video" msgstr "Error no definido de PTP" #: camlibs/ptp2/ptp.c:5617 #, fuzzy msgid "Undefined Collection" msgstr "Error no definido de PTP" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5634 #, fuzzy msgid "Undefined Document" msgstr "Error no definido de PTP" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "" #: camlibs/ptp2/ptp.c:5643 #, fuzzy msgid "Undefined Contact" msgstr "Error no definido de PTP" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "" #: camlibs/ptp2/ptp.c:5692 #, fuzzy, c-format msgid "Unknown(%04x)" msgstr "desconocido (0x%02x)" #: camlibs/ptp2/ptp.c:5702 msgid "Get device info" msgstr "" #: camlibs/ptp2/ptp.c:5703 #, fuzzy msgid "Open session" msgstr "Compresión" #: camlibs/ptp2/ptp.c:5704 #, fuzzy msgid "Close session" msgstr "Compresión" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "" #: camlibs/ptp2/ptp.c:5711 #, fuzzy msgid "Get thumbnail" msgstr "Obteniendo miniaturas..." #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "" #: camlibs/ptp2/ptp.c:5718 #, fuzzy msgid "Self test device" msgstr "PTP. Falló la auto-comprobación" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 msgid "Get Vendor Extension Maps" msgstr "" #: camlibs/ptp2/ptp.c:5735 msgid "Get Vendor Device Info" msgstr "" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 msgid "Get Filesystem Manifest" msgstr "" #: camlibs/ptp2/ptp.c:5738 msgid "Get Stream Info" msgstr "" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "" #: camlibs/ptp2/ptp.c:5759 #, fuzzy msgid "Set license response" msgstr "Respuesta no reconocida" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "" #: camlibs/ptp2/ptp.c:5763 #, fuzzy msgid "Get meter response" msgstr "Se ha recibido una respuesta no esperada" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "" #: camlibs/ptp2/ptp.c:5800 #, fuzzy msgid "Send Partial Object" msgstr "PTP. Objeto padre no válido" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "Error desconocido" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "PTP. Código de fabricante desconocido" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "Descargando película..." #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "Descargando audio..." #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "Descargando los datos EXIF..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "No hay datos EXIF disponibles para %s." #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "No se puede borrar el fichero." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "No se ha podido eliminar el directorio." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "No se ha podido crear el directorio." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "Versión: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "Estado RTC: %d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "Hora de la cámara: %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "Identificador de la cámara: %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "No hay insertada ninguna tarjeta SD.\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "Identificador de la tarjeta SD: %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "Fotos que hay en la cámara: %d\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "Memoria SD: %d MB total, %d MB libres.\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "Memoria interna: %d MB total, %d MB libres.\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Ingeniería inversa usando USB Snoopy, mirando\n" "la imagen de actualización del firmware e imaginación\n" "salvaje.\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Controlador Ricoh / Philips por\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "basado en el controlador de Bob Paauwe\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "desconocido (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Modelo: %s\n" "Memoria: %d byte(s) de %d disponibles" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2,0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1,5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1,0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0,5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0,0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0,5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1,0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1,5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2,0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Exteriores" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Máximo" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Mínimo" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Carácter" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Sonido" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Imagen y sonido" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Carácter y sonido" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Configuración" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "General" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Copyright (máx. 20 caracteres)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "Imágenes" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Nivel de blancos" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Modo de grabación" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Compresión" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "No se soporta la velocidad %i." #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "" "Se esperaba %i, se ha recibido %i. Por favor, informe de este error a %s." #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "" "Se esperaban %i bytes, se han recibido %i. Por favor, informe de este error " "a %s." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "" "Se esperaban 0x%x pero se han recibido 0x%x. Por favor, contacte con %s." #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "Caracteres no válidos (0x%x, 0x%x). Por favor, contace con %s." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "" "La cámara está ocupada. Si el problema persiste, por favor contacte con %s." #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "" "Tiempo de espera superado incluso después de 2 reintentos. Por favor, " "contacte con %s." #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "" "Tiempo de espera superado incluso después de 2 reintentos. Por favor, " "contacte con %s." #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "La cámara está en un modo incorrecto. Por favor, contacte con %s." #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "La cámara no ha aceptado los parámetros. Por favor, contacte con %s." #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "Se ha producido un error desconocido. Por favor, contacte con %s." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "" "La longitud del nombre de fichero no debe exceder de 12 caracteres ('%s' " "tiene %i caracteres)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "El controlador para la Samsung digimax 800k fue escrito por James McKenzie " ". Lutz M\"uller lo " "adaptó a gphoto2. Marcus Meissner lo corrigió y " "mejoró." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Resolución más tamaño" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Fecha y hora (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 #, fuzzy msgid "Aperture Settings" msgstr "Opciones de apertura" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Modo de color" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Reducción de ojos rojos" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Opciones del flash" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "Ahorro de energía de la máquina (segundos)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Ahorro de energía de la cámara (segundos)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Modo de la lente" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "Coreano" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "Inglés" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "Francés" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "Alemán" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "Italiano" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "Japonés" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "Castellano" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "Portugués" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Opciones de la imagen" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "Algunas notas acerca de las cámaras Epson:\n" "- Ciertos parámetros no se pueden controlar remotamente:\n" " * zoom\n" " * enfoque\n" " * la configuración de balance de blancos pesonalizada\n" "- La configuración fue hecha con ingeniería inversa con una cámara\n" " PhotoPC 3000z, si su cámara se comporta de manera diferente, por favor\n" " envíe un correo a la lista de desarrolladores de gphoto (en inglés)\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "No hay ninguna tarjeta de memoria" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "No se puede obtener la capacidad de la batería" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "" "El nivel de la batería de la cámara es muy bajo (%d%%). Se ha interrumpido " "la operación." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "No se puede obtener la cantidad de memoria disponible" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "La cámara se negó 3 veces a mantener una conexión abierta." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "El primer byte recibido (0x%x) no es válido." #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "La transmisión del paquete superó el tiempo de espera incluso después de %i " "reintentos. Por favor, contacte con %s." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "" "No se ha podido transmitir el paquete incluso después de varios intentos." #: camlibs/sierra/library.c:789 #, fuzzy, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "La cámara rechazó el paquete. Por favor, contacte con %s." #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "" "No se ha podido transmitir el paquete (código de error %i). Por favor, " "contacte con %s." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "" "La transmisión superó el tiempo de espera incluso después de 2 reintentos. " "Abandonando..." #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "" "Se ha obtenido el resultado inesperado 0x%x. Por favor, contacte con %s." #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "Recibida respuesta inesperada (%i). Por favor, contacte con %s." #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "No se ha podido obtener el registro %i. Por favor, contacte con %s." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "Demasiados reintentos fallidos." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Enviando datos..." #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "El controlador sierra no soporta llamadas recursivas. Por favor, contacte " "con %s." #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "" "No se puede obtener el registro de cadena %i. Por favor, contacte con %s." #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "Se esperaban 32 bytes, se han recibido %i. Por favor, contacte con %s." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "Velocidad del obturador en microsegundos (0 automática)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "Velocidad del obturador (en segundos)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "B/N" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Anti ojos rojos" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "Sincronización lenta" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "Contraste+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Contraste-" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "Brillo+" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "Brillo-" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Ajuste de la imagen" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "Parpadeo" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "Modo LED" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "Infinito" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "Previsualizar la miniatura" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "Siguiente" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "Anterior" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Modo de operación" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "Brillo del LCD" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "Apagado automático del LCD (en segundos)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "Centrado en el medio" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "Matriz" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Spot-AF" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Medida de la exposición" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "Zoom (en milímetros)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "ninguno" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "Bloqueo AE" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "Ojo de pez" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Amplio" #: camlibs/sierra/nikon-desc.c:558 #, fuzzy msgid "Misc exposure/lens settings" msgstr "Otros ajustes de exposición/lentes" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Bloqueo de exposición automática" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " Configuración (o preferencias) de la cámara:\n" "\n" " El zoom óptico no funciona\n" " debidamente.\n" "\n" " No todos los ajustes de configuración\n" " se pueden leer o escribir debidadamente,\n" " por ejemplo, el ajuste fino del balance\n" " de blancos, y la configuración del idioma.\n" "\n" " Ponga la cámara en modo 'M' para poder\n" " ajustar la velocidad del obturador.\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995:\n" " La configuración (preferencias) de la cámara\n" " para esta cámara no está completa, contacte\n" " con la lista de desarrolladores de gphoto\n" " si desea contribuir al desarrollo de este\n" " controlador.\n" "\n" " La descarga debería funcionar correctamente.\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "Pizarra blanca" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "Pizarra negra" #: camlibs/sierra/olympus-desc.c:489 #, fuzzy msgid "Color or Function Mode" msgstr "Modo de operación" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 #, fuzzy msgid "Slow" msgstr "Sincronización lenta" #: camlibs/sierra/olympus-desc.c:540 #, fuzzy msgid "Anti-redeye Fill" msgstr "Anti ojos rojos" #: camlibs/sierra/olympus-desc.c:596 #, fuzzy msgid "Fluorescent-1-home-6700K" msgstr "Fluorescente" #: camlibs/sierra/olympus-desc.c:597 #, fuzzy msgid "Fluorescent-2-desk-5000K" msgstr "Fluorescente" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Monitor" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "Modo LCD" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Zoom digital" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "Posición del foco" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Formato de la hora" #: camlibs/sierra/olympus-desc.c:1147 #, fuzzy msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Algunas notas sobre las cámaras Olympus:\n" "(1) Configuración de la cámara:\n" " El valor 0 definirá el valor predeterminado (automático)\n" "(2) La Olympus C-3040Z (y posiblemente también la C-2040Z,\n" " y otras) tienen un modo de control por USB. Para poder\n" " utilizar este modo, la cámara se debe colocar en\n" " 'USB PC control mode'. Para obtener el menú para cambiarlo,\n" " abra la puerta de acceso a la tarjeta de memoria\n" " y luego presione y sostenga el botón menú y LCD\n" " hasta que aparece el menú de control de cámara.\n" " Póngalo en ON.\n" "(3) Si cambia el modo LCD a 'Monitor' o 'Normal',\n" " no olvide de volver a cambiarlo a 'Off' antes de\n" " desconectar. De lo contrario, no podrá utilizar los\n" " botones de la cámara. Si termina en este estado,\n" " debería volver a conectar la cámara a la computadora\n" " y poner LCD en 'Off'." #: camlibs/sierra/olympus-desc.c:1166 #, fuzzy msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Algunas notas sobre las cámaras Olympus:\n" "(1) Configuración de la cámara:\n" " El valor 0 definirá el valor predeterminado (automático)\n" "(2) La Olympus C-3040Z (y posiblemente también la C-2040Z,\n" " y otras) tienen un modo de control por USB. Para poder\n" " utilizar este modo, la cámara se debe colocar en\n" " 'USB PC control mode'. Para obtener el menú para cambiarlo,\n" " abra la puerta de acceso a la tarjeta de memoria\n" " y luego presione y sostenga el botón menú y LCD\n" " hasta que aparece el menú de control de cámara.\n" " Póngalo en ON.\n" "(3) Si cambia el modo LCD a 'Monitor' o 'Normal',\n" " no olvide de volver a cambiarlo a 'Off' antes de\n" " desconectar. De lo contrario, no podrá utilizar los\n" " botones de la cámara. Si termina en este estado,\n" " debería volver a conectar la cámara a la computadora\n" " y poner LCD en 'Off'." #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Controlador sierra predeterminado:\n" "\n" " Este es el controlador sierra predeterminado,\n" " debería poder soportar la descarga y navegación\n" " de fotos en su cámara.\n" "\n" " La configuración (o preferencias) de la cámara\n" " están basadas en la Olympus 3040, y es posible\n" " que estén incompletas. Si verifica que los ajustes\n" " de configuración están completos para su cámara, o\n" " puede contribuir código para soportar la\n" " configuración completa, por favor contacte con\n" " la lista de distribución de los desarrolladores.\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "El fichero a enviar tiene longitud nula" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "No hay suficiente memoria disponible en la tarjeta de memoria" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "No se puede obtener el nombre del directorio que contiene las imágenes" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "Sólo se soporta el envío a la carpeta '%s'" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Mejor" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (desconocida)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "Velocidad del obturador (microsegundos, 0 automática)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Blanco y negro" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "Pizarra blanca" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Pizarra negra" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "Brillo/Contraste" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "Brillo+" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "Brillo-" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Luz de día" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "Infinito/Ojo de pez" # Translation thanks to Martin Kroeker. [Colin] #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "Modo de medición de punto" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1.6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2.5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "Apagado automático (en la máquina) (en segundos)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "¿Cuánto tiempo pasará hasta que la cámara se apague cuando esté conectada a " "la computadora?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "Apagado automático (en el campo) (en segundos)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "¿Cuánto tiempo pasará hasta que la cámara se apague cuando no esté conectada " "a la computadora?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "Apagado automático del LCD (en segundos)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Configuración de la toma" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 #, fuzzy msgid "standard" msgstr "Estándar" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "HyPict" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "color" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "blanco y negro" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" "Nota: no hay ninguna tarjeta de memoria, algunos valores pueden no ser " "válidos\n" #: camlibs/sierra/sierra.c:1948 #, fuzzy, c-format msgid "Camera Model: %s\n" msgstr "%sModelo de la cámara: %s\n" #: camlibs/sierra/sierra.c:1957 #, fuzzy, c-format msgid "Serial Number: %s\n" msgstr "%sNúmero de serie: %s\n" #: camlibs/sierra/sierra.c:1960 #, fuzzy, c-format msgid "Software Rev.: %s\n" msgstr "%sRevisión del software: %s\n" # Haesslich [Colin] #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, fuzzy, c-format msgid "Frames Taken: %i\n" msgstr "%sFotogramas tomados: %i\n" # Haesslich... [Colin] #: camlibs/sierra/sierra.c:1971 #, fuzzy, c-format msgid "Frames Left: %i\n" msgstr "%sFotogramas restantes: %i\n" #: camlibs/sierra/sierra.c:1973 #, fuzzy, c-format msgid "Battery Life: %i\n" msgstr "%sDuración de la batería: %i\n" #: camlibs/sierra/sierra.c:1975 #, fuzzy, c-format msgid "Memory Left: %i bytes\n" msgstr "%sMemoria restante: %i bytes\n" #: camlibs/sierra/sierra.c:1980 #, fuzzy, c-format msgid "Date: %s" msgstr "%sFecha: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "Manual de la cámara no disponible.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "Algunas notas acerca de las cámaras Epson:\n" "- Ciertos parámetros no se pueden controlar remotamente:\n" " * zoom\n" " * enfoque\n" " * configuración personalizada del balance de blancos\n" "- La configuración fue hecha mediante ingeniería reversa con una cámara\n" " PhotoPC 3000z, si su cámara se comporta de manera diferente, por favor\n" " envíe un correo a %s (en inglés)\n" #: camlibs/sierra/sierra.c:2060 #, fuzzy msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Algunas notas sobre las cámaras Olympus (¿y otras?):\n" "(1) Configuración de la cámara:\n" " El valor 0 definirá el valor predeterminado (automático)\n" "(2) La Olympus C-3040Z (y posiblemente también la C-2040Z,\n" " y otras) tienen un modo de control por USB. Para poder\n" " utilizar este modo, la cámara se debe colocar en\n" " 'USB PC control mode'. Para obtener el menú para cambiarlo,\n" " abra la puerta de acceso a la tarjeta de memoria\n" " y luego presione y sostenga el botón menú y LCD\n" " hasta que aparece el menú de control de cámara.\n" " Póngalo en ON.\n" "(3) Si cambia el modo LCD a 'Monitor' o 'Normal',\n" " no olvide de volver a cambiarlo a 'Off' antes de\n" " desconectar. De lo contrario, no podrá utilizar los\n" " botones de la cámara. Si termina en este estado,\n" " debería volver a conectar la cámara a la computadora\n" " y poner LCD en 'Off'." # Ist "Freigabe" richtig? [Colin] #: camlibs/sierra/sierra.c:2087 #, fuzzy msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "Biblioteca sierra SPARClite\n" "Scott Fritzinger \n" "Soporte para las cámaras digitales basadas en\n" "componentes sierra tales como Olympus,\n" "Nikon, Epson, y otras.\n" "\n" "Gracias a Data Engines (www.dataengines.com)\n" "por la utilización de su Olympus C-3030Z\n" "para la implementación del soporte USB." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (desconocida)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Controlador Sipix StyleCam Blink\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "No se pueden aplicar las opciones de USB" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "Controlador para acceder la cámara SiPix Web2." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket\n" "Lee Benfield \n" "Controlador para acceder a la cámara Smal Ultrapocket, y versiones OEM " "(slimshot)" #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "Soporte de las cámaras digitales Sony DSC-F1\n" "M. Adam Kendall \n" "Basado en la interfaz CLI chotplay de\n" "Ken-ichi Hayashi\n" "Adaptado a gPhoto2 por Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Biblioteca gPhoto para las Sony DSC-F55/505\n" "Soporta Sony MSAC-SR1 y el Memory Stick que utiliza la DCR-PC100\n" "Escrita originalmente por Mark Davies \n" "Adaptada a gPhoto2 por Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "Revisión del Firmware: %8s\n" "Imágenes: %i\n" "Memoria total: %ikB\n" "Memoria libre: %ikB\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "Revisión del firmware: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Controlador Soundvision\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "FLASH:\n" " Ficheros: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM:\n" " Ficheros: %d\n" " Imágenes: %4d\n" " Películas: %4d\n" "Espacio usado: %8d\n" "Espacio libre: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "Biblioteca spca50x v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "Controlador para cámaras que utilizan el procesador ASIC STV0674.\n" "Ingeniería inversa del protocolo usando una SnoopyPro\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "Exposición incorrecta (probablemente no haya luz suficiente)" #: camlibs/stv0680/library.c:543 #, fuzzy msgid "Information on STV0680-based camera:\n" msgstr "Información para la cámara basada en STV0680:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Revisión del firmware: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "Revisión del ASIC: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "ID del sensor: %d.%d\n" #: camlibs/stv0680/library.c:562 #, fuzzy, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "La cámara está configurada para una luz centelleante a %dHz.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Memoria en la cámara: %d Mbit.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "La cámara soporta miniaturas.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "La cámara soporta vídeo.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "Las fotos de la cámara son monocromáticas.\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "La cámara tiene memoria.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "La cámara soporta los formatos de vídeo: " #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "Identificador del fabricante: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "Identificador del producto: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "Cantidad de imágenes: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "Cantidad máxima de imágenes: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Anchura de la imagen: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "Altura de la imagen: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "Tamaño de la imagen: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Anchura de la miniatura: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Altura de la miniatura: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Tamaño de la miniatura: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Controlador para cámaras que utilizan el procesador ASIC STV0680.\n" "Protocolo basado en ingenería inversa utilizando CommLite Beta 5\n" "Carsten Weinholz \n" "Extendido para las Aiptek PenCam y otras cámaras USB de modo STM doble." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Obteniendo información de %i ficheros..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "Biblioteca (Traveler) SX330z (y otras cámaras Aldi).\n" "Incluso otros fabricantes como Jenoptik, Skanhex, Maginon deberían " "funcionar.\n" "Por favor envíe informes de errores y comentarios.\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z es sólo USB" #: camlibs/topfield/puppy.c:553 #, fuzzy msgid "Driver Settings" msgstr "Otras configuraciones" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" #: camlibs/topfield/puppy.c:659 #, fuzzy, c-format msgid "Downloading %s..." msgstr "Descargando '%s'..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Cargando los controladores para la cámara desde '%s'..." #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "Se ha producido un error en la biblioteca de entrada-salida ('%s'): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "No se ha podido detectar cámara alguna" #: libgphoto2/gphoto2-camera.c:750 #, fuzzy, c-format msgid "Could not detect any camera at port %s" msgstr "No se ha podido detectar cámara alguna" #: libgphoto2/gphoto2-camera.c:774 #, fuzzy msgid "You have to set the port prior to initialization of the camera." msgstr "Debe configurar el puerto antes de la inicialización de la cámara." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "" "No se ha podido cargar el controlador necesario de la cámara '%s' (%s)." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "Falta la función 'camera_init' en el controlador de la cámara '%s'." #: libgphoto2/gphoto2-camera.c:864 #, fuzzy msgid "This camera does not provide any configuration options." msgstr "Esta cámara no ofrece ninguna opcón de configuración." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "Esta cámara no soporta la configuración de las opciones." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Esta cámara no soporta resúmenes." #: libgphoto2/gphoto2-camera.c:960 #, fuzzy msgid "This camera does not provide a manual." msgstr "Esta cámara no ofrece manual." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "Esta cámara no brinda información acerca del controlador." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Esta cámara no puede capturar." #: libgphoto2/gphoto2-camera.c:1056 #, fuzzy msgid "This camera can not trigger capture." msgstr "Esta cámara no puede capturar." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Esta cámara no permite la pre-visualización de las capturas." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "La ruta '%s' no es absoulta." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "Ha estado intentando borrar '%s' de la carpeta '%s', pero el sistema de " "ficheros no soporta el borrado de ficheros." #: libgphoto2/gphoto2-filesys.c:1259 #, fuzzy, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "" "Todavía hay sub-carpetas en la carpeta '%s' que está intentando eliminar." #: libgphoto2/gphoto2-filesys.c:1264 #, fuzzy, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "Todavía hay ficheros en la carpeta '%s' que está intentando eliminar." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Este sistema de ficheros no soporta el envío de ficheros." #: libgphoto2/gphoto2-filesys.c:1359 #, fuzzy, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "La carpeta '%s' sólo contiene %i ficheros, pero usted ha pedido un fichero " "con número %i." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "No se ha podido encontrar el fichero '%s' en la carpeta '%s'." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "No se ha podido encontrar el fichero '%s'." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "El sistema de ficheros no soporta la obtención de ficheros" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Tipo de fichero %i desconocido." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "" "El sistema de ficheros no soporta la obtención de información sobre los " "ficheros" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "" "El sistema de ficheros no soporta la modificación de la información sobre " "los ficheros" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "" "Los atributos de sólo lectura como anchura y altura no se pueden cambiar." #: libgphoto2/gphoto2-filesys.c:2455 #, fuzzy msgid "The filesystem doesn't support getting storage information" msgstr "" "El sistema de ficheros no soporta la obtención de información sobre los " "ficheros" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Datos corruptos" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "El fichero existe" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Modelo desconocido" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Directorio no encontrado" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Fichero no encontrado" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "El directorio existe" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "E/S en curso" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "Ruta no absoluta" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Operación cancelada" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "" #: libgphoto2/gphoto2-result.c:57 #, fuzzy msgid "OS error in camera communication" msgstr "Problema al configurar la velocidad de comunicación de la cámara" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Error desonocido de la biblioteca de la cámara" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Error desconocido" #~ msgid "%s is a file type for which no thumbnail is provided" #~ msgstr "%s es un tipo de fichero para el que no se proporcionan miniaturas" #~ msgid "Date and Time (readonly)" #~ msgstr "Fecha y hora (sólo lectura)" #~ msgid "Unavailable" #~ msgstr "No disponible" #~ msgid "Set camera date to PC date" #~ msgstr "Configurar la fecha de la cámara con la de la computadora" #~ msgid "Firmware revision (readonly)" #~ msgstr "Revisión del firmware (sólo lectura)" #~ msgid "Power (readonly)" #~ msgstr "Energía (sólo lectura)" #, fuzzy #~ msgid "Unknown (some kind of error)" #~ msgstr "Desconocido (algún tipo de error))" #, fuzzy #~ msgid "" #~ "canon_usb_init: Unexpected return of %i bytes (expected %i) from \"get " #~ "picture abilities.\"" #~ msgstr "" #~ "canon_usb_lock_keys: Retorno inesperado de %i bytes (se esperaban %i) de " #~ "\"get picture abilities.\"" #, fuzzy #~ msgid "" #~ "canon_usb_lock_keys: Unexpected return of %i bytes (expected %i) from " #~ "\"get picture abilities.\" We will continue." #~ msgstr "" #~ "canon_usb_lock_keys: Retorno inesperado de %i bytes (se esperaban %i) de " #~ "\"get picture abilities.\"" #, fuzzy #~ msgid "" #~ "canon_usb_poll_interrupt_pipe: interrupt read failed after %i tries, " #~ "%6.3f sec \"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_pipe: la lectura de interrupción ha fallado " #~ "después de %i intentos, \"%s\"" #~ msgid "" #~ "canon_usb_poll_interrupt_multiple: interrupt read failed after %i tries, " #~ "\"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_multiple: la lectura de interrupción ha fallado " #~ "después de %i intentos, \"%s\"" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for thumbnail size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: longitud errónea 0x%04x del paquete de tamaño " #~ "de la miniatura" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for full image size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: longitud errónea 0x%04x del paquete de tamaño " #~ "de la imagen completa" #~ msgid "canon_usb_capture_dialogue: first interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: primera lectura de interrupción fuera de " #~ "secuencia" #~ msgid "canon_usb_capture_dialogue: second interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: segunda lectura de interrupción fuera de " #~ "secuencia" #~ msgid "" #~ "canon_usb_capture_dialogue: photographic failure signaled, code = 0x%08x" #~ msgstr "" #~ "canon_usb_capture_dialogue: se ha señalado un fallo fotográfico, código = " #~ "0x%08x" #~ msgid "canon_usb_capture_dialogue: third EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: tercera interrupción EOS leída fuera de " #~ "secuencia" #~ msgid "" #~ "canon_usb_capture_dialogue: fourth EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: cuarta interrupción EOS leída fuera de " #~ "secuencia" #~ msgid "canon_usb_dialogue: payload too big, won't fit into buffer (%i > %i)" #~ msgstr "" #~ "canon_usb_dialogue: carga demasiado grande, no cabrá en el búfer (%i > %i)" #, fuzzy #~ msgid "" #~ "Download program for Casio QV cameras. Originally written for gphoto-0.4. " #~ "Adapted for gphoto2 by Lutz Mueller ." #~ msgstr "" #~ "Programa de descarga para la cámara Polaroid DC700. Escrito originalmente " #~ "por Ryan Lantzer para gphoto-4.x. Adaptado para " #~ "gphoto2 por Lutz Mueller ." #~ msgid "Unsupported image type" #~ msgstr "Tipo de imagen no soportado" #~ msgid "Could not follow the link '%s' (%m)." #~ msgstr "No se puede seguir el enlace '%s' (%m)." #~ msgid "Could not follow the link '%s' in '%s' (%m)." #~ msgstr "No se puede seguir el enlace '%s' en '%s' (%m)." #~ msgid "Directory Browse" #~ msgstr "Examinar el directorio" #~ msgid "View hidden directories" #~ msgstr "Ver los directorios ocultos" #, fuzzy #~ msgid "Unsupported port type: %d. This driver only works with USBcameras.\n" #~ msgstr "" #~ "Tipo de puerto no soportado: %d. Este controlador sólo funciona con " #~ "cámaras USB.\n" #~ msgid " " #~ msgstr " " #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for KBGear JamCam v2.0 & v3.0 digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Soporte para las cámaras digitales KBGear JamCam v2.0 y v3.0\n" #~ "basado en la ingeniería inversa del protocolo serie.\n" #~ "\n" #~ msgid "Your camera does not support changing filenames." #~ msgstr "Su cámara no soporta cambiar los nombres de fichero." #~ msgid "Self Timer (only next picture)" #~ msgstr "Temporizador (sólo la foto siguiente)" #~ msgid "2.0m" #~ msgstr "2,0m" #~ msgid "0.5m" #~ msgstr "0,5m" #~ msgid "0.1m" #~ msgstr "0,1m" #~ msgid "Day-lt" #~ msgstr "Luz natural" #~ msgid "There is nothing to summarize for this camera." #~ msgstr "No hay nada que resumir para esta cámara." #~ msgid "No manual" #~ msgstr "Sin manual" #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for Panasonic Coolshot digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Soporte para las cámaras digitales Panasonic Coolshot\n" #~ "basado en ingeniería reversa del protocolo serie.\n" #~ "\n" #~ msgid "Manual Not Implemented Yet" #~ msgstr "Manual todavía no implementado" #~ msgid "PTP Error: bad parameter" #~ msgstr "PTP. Error: parámetro incorrecto" #~ msgid "" #~ "PTP2 driver\n" #~ "(c)2001-2003 by Mariusz Woloszyn .\n" #~ "Enjoy!" #~ msgstr "" #~ "Controlador PTP2\n" #~ "(c)2001-2003 por Mariusz Woloszyn .\n" #~ "¡Disfrute!" #~ msgid "" #~ "Model: %s\n" #~ " device version: %s\n" #~ " serial number: %s\n" #~ "Vendor extension ID: 0x%08x\n" #~ "Vendor extension description: %s\n" #~ msgstr "" #~ "Modelo: %s\n" #~ " versión del dispositivo: %s\n" #~ " número de serie : %s\n" #~ "ID extensión del fabricante: 0x%08x\n" #~ "Descripción extensión del fabricante: %s\n" #, fuzzy #~ msgid "auto red eye" #~ msgstr "Anti ojos rojos" #, fuzzy #~ msgid "on red eye" #~ msgstr "Anti ojos rojos" #, fuzzy #~ msgid "spot" #~ msgstr "Spot" #, fuzzy #~ msgid "Camera Time" #~ msgstr "Cámara" #, fuzzy #~ msgid "Macro Mode" #~ msgstr "Modo de grabación" #~ msgid "Number of values" #~ msgstr "Cantidad de valores" #~ msgid "Current value" #~ msgstr "Valor actual" #~ msgid "PTP: Undefined Error" #~ msgstr "PTP: Error no definido" #~ msgid "PTP: OK!" #~ msgstr "PTP: ¡OK!" #~ msgid "PTP: General Error" #~ msgstr "PTP: Error general" #~ msgid "PTP: Session Not Open" #~ msgstr "PTP: Sesión no abierta" #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP: ID de transacción no válido" #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP: Operación no soportada" #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP: Parámetro no soportado" #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP: Transferencia incompleta" #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP: ID de almacenamiento no válido" #~ msgid "PTP: Invalid Object Handle" #~ msgstr "PTP: Manejador de objeto no válido" #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "PTP: Propiedad del dispositivo no soportada" #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP: Código de formato de objeto no válido" #~ msgid "PTP: Store Full" #~ msgstr "PTP: Almacén completo" #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP: Objeto protegido contra escritura" #~ msgid "PTP: Store Read Only" #~ msgstr "PTP: Almacén de sólo lectura" #~ msgid "PTP: Access Denied" #~ msgstr "PTP: Acceso denegado" #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP: No hay ninguna miniatura" #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP: La auto-comprobación ha fallado" #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP: Borrado parcial" #~ msgid "PTP: Store Not Available" #~ msgstr "PTP: Almacén no disponible" #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "PTP: No se soporta especificación por formato" #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP: No hay información válida del objeto" #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP: Formato de código no válido" #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "PTP: Código de fabricante desconocido" #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP: Captura ya terminada" #, fuzzy #~ msgid "PTP: Device Busy" #~ msgstr "PTP: Bus del dispositivo" #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP: Objeto padre no válido" #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP: Formato de propiedad del dispositivo no válido" #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP: Valor de propiedad del dispositivo no válido" #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP: Parámetro no válido" #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP: La sesión ya está abierta" #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP: Transacción cancelada" #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "PTP: No se soporta la especificación del destino" #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP: Se necesita nombre de fichero EK" #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP: Conflictos con el nombre de fichero EK" #~ msgid "PTP: EK Filename Invalid" #~ msgstr "PTP: Nombre de fichero EK no válido" #~ msgid "PTP: I/O error" #~ msgstr "PTP: Error de E/S" #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP: Error: parámetro incorrecto" #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP: Error de protocolo, se esperaban datos" #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP: Error de protocolo, se esperaba respuesta" #, fuzzy #~ msgid "Date Time" #~ msgstr "Fecha y hora" #, fuzzy #~ msgid "ShutterSpeed" #~ msgstr "Velocidad del obturador (en segundos)" #, fuzzy #~ msgid "Real Image Width" #~ msgstr "Anchura de la imagen: %d\n" #, fuzzy #~ msgid "Colour Mode" #~ msgstr "Modo de color" #, fuzzy #~ msgid "Exposure Bracketing Distance" #~ msgstr "Medida de la exposición" #, fuzzy #~ msgid "Incadescent" #~ msgstr "Incandescente" #~ msgid "%sCamera ID: %s\n" #~ msgstr "%sIdentificador de la cámara: %s\n" #, fuzzy #~ msgid "Couldn't open camera.\n" #~ msgstr "No se puede reinicializar la cámara.\n" #, fuzzy #~ msgid "Error opening camera\n" #~ msgstr "Problema al reinicializar la cámara" #, fuzzy #~ msgid "" #~ "Sony DSC-F1 Digital Camera Support\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Based on the chotplay CLI interface from\n" #~ "Ken-ichi Hayashi\n" #~ "\n" #~ "This lib may not work. YMMV\n" #~ msgstr "" #~ "Soporte de las cámaras digitales Sony DSC-F1\n" #~ "M. Adam Kendall \n" #~ "Basado en la interfaz CLI chotplay de\n" #~ "Ken-ichi Hayashi\n" #~ "Adaptado a gPhoto2 por Bart van Leeuwen " #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for digital cameras with a sunplus spca50x chip based on several " #~ "other gphoto2 camlib modules and the information kindly provided by " #~ "Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \n" #~ "Soporte para cámaras digitales con un chip sunplus spca50x basado en " #~ "varios otros módulos camlib de gphoto2 y la información amablemente " #~ "proporcionada por Mustek.\n" #~ "\n" #~ msgid "Could not open '%s'" #~ msgstr "No se ha podido abrir '%s'" #~ msgid "Could not find any driver for '%s'" #~ msgstr "No se ha podido encontrar ningún controlador para '%s'" #~ msgid "No additional information available." #~ msgstr "No hay información adicional disponible." #~ msgid "Could not load required camera driver '%s'." #~ msgstr "No se ha podido cargar el controlador necesario de la cámara '%s'." #~ msgid "Could not append folder '%s' as this folder already exists." #~ msgstr "No se puede adjuntar la carpeta '%s' porque ésta ya existe." #~ msgid "Could not find folder '%s'." #~ msgstr "No se puede encontrar la carpeta '%s'." #~ msgid "Folder '%s' does not contain a folder '%s'." #~ msgstr "La carpeta '%s' no contiene una sub-carpeta '%s'." #~ msgid "" #~ "Could not append '%s' to folder '%s' because this file already exists." #~ msgstr "" #~ "No se puede adjuntar el fichero '%s' a la carpeta '%s' porque este " #~ "fichero ya existe." #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "Descargando '%s' de la carpeta '%s'..." #~ msgid "" #~ "Could not open '/proc/meminfo' for reading ('%m'). Make sure the proc " #~ "filesystem is mounted." #~ msgstr "" #~ "No se ha podido abrir '/proc/meminfo' para lectura ('%m') Asegúrese que " #~ "el sistema de ficheros proc esté montado." #~ msgid "An error occured while reading '/proc/meminfo' ('%m')." #~ msgstr "Se ha producido un error mientras se leía '/proc/meminfo' ('%m')." #~ msgid "sysctl call failed ('%m')." #~ msgstr "ha fallado la llamada sysctl ('%m')." #~ msgid "sysconf call failed ('%m')." #~ msgstr "ha fallado la llamada sysconf ('%m')." #~ msgid "swapctl call failed ('%m')." #~ msgstr "ha fallado la llamada sysctl ('%m')." #~ msgid "" #~ "Step #2 of initialization failed for PowerShot camera! (returned %i, " #~ "expected %i) Camera not operational" #~ msgstr "" #~ "El paso 2 de la inicialización de la cámara PowerShot ha fallado (ha " #~ "devuelto %i, se esperaba %i) Cámara no operativa" #~ msgid "" #~ "EOS Step #3 of initialization failed! (returned %i, expected %i) Camera " #~ "not operational" #~ msgstr "" #~ "El paso 3 de la inicialización EOS ha fallado. (ha devuelto %i, se " #~ "esperaba %i) Cámara no operativa" #~ msgid "" #~ "For the A50, using 115200 may effectively be slower than using 57600\n" #~ "If you experience a lot of serial transmission errors, try to have your " #~ "computer as idle as possible\n" #~ " (i.e. no disk activity)\n" #~ msgstr "" #~ "Para la A50, usar 115200 puede ser más lento que usar 57600\n" #~ "Si experimenta un montón de errores de transmisión por el puerto serie, " #~ "intente tener su computadora tan ociosa como sea posible\n" #~ " (ej: sin actividad de disco)\n" #~ msgid "Unsupported port type: %d.This driver only works with USBcameras.\n" #~ msgstr "" #~ "Tipo de puerto no soportado: %d. Este controlador sólo funciona con " #~ "cámaras USB.\n" #, fuzzy #~ msgid "Incadesent" #~ msgstr "Incandescente" #, fuzzy #~ msgid "Could not find any driver for '%s' / '%s'" #~ msgstr "No se ha podido encontrar ningún controlador para '%s'" #~ msgid "" #~ "Step #2 of initialization failed for EOS camera! (returned %i, expected " #~ "%i) Camera not operational" #~ msgstr "" #~ "El paso 2 de la inicialización para la cámara EOS ha fallado. (ha " #~ "devuelto %i, se esperaba %i) Cámara no operativa" libgphoto2-2.5.9/po/stamp-po0000644000175000001440000000001212623156275012620 00000000000000timestamp libgphoto2-2.5.9/po/eu.gmo0000644000175000001440000023203512623156274012265 00000000000000Þ•'ì1ˆBh‰B4òB'CF?C †Cb“C;öC2DADÅ]DO#E sF}F‚F‡FŒF‘F•F™FF¡F ¦F ±F¼F¿FÃFÈFÎFÑF×FÚFàFãFéFïF òFüFÿFGGG GGG 4G.?G-nG œG¨G9±GëGôG ûGH H+H HHVHoH‚HšH «H(¶HßHúH II/I+II1uI'§I(ÏIøI J$K7KIK QKo_KÏK#îKL L!L&L EL SL_L oL {L‡LL’LšL ¢L ®LºLÎLáL ðLýLM MMO-M }M ŠM—M§M8ÇM8N99NsN+‡N(³N@ÜN O>O1ZOŒO©O#¾OâOÿOP6PJP]PwP‹P¤P)»P$åP> QIQQQbQ€QQ¨Q¾Q ÏQÜQõQ R%R5R ORYRkRtRƒRŠR R›RªR¼RÚRïRSS<1SnS‹S S©S ½S"ËSîST T T T)THTWT:fT<¡TÞTûT!U'7U_U~UšU±U/ÍU<ýU<:VwV(‘VºVÖV òV-W4AW;vW0²WãWøWX3X5LX=‚X5ÀXsöXjYk‡YóYZ+Z 2Z=Z VZ bZnZ …Z“Z §Zÿ´Z´[Ã[Ì[Ò[××[¯]Â]Û].ì] ^ (^E5^{^Œ^ ^¶^µÍ^ªƒ_,.`[akaa˜a­aÁaÕaëabb.b=b DbNbeb<zb·bÔbëbcc9c XcdcjcrcxcŽc£c(¹câc'öc d1)d:[d4–d-Ëdùdee3eSeee|e ’e e¶eÐeÙeÜeáeæeéeîe5ñe'f:f,?flf }f‰f˜f¨fU¸f gg_,gŒg‘gN¨g÷gh,h4h:h @h KhYhhh$zhŸh°h"Àhãhúh i ii"i1i EiPi_ini¼~i;m AmNmnmƒm›m¢m§m·m¿mÆmßmïmn"n7n.Ln{nn†n˜nجn…oQŸoUño2Gpzpp‘p ”pžp¤p©p¼pÂp àpîp ÿp qq*qBqSq/cq“q¯qÀq ÇqÔqÝq ïqûq1rArUr*ir”rœr ²r¾rÆrHsMsVsÿns ntyuÒùu^Ìv?+wkw£€wg$xŒx“x—x±xÍxÜxåxîx ÷x*y,yCyIyYyhyy#œyÀy ÆyÓyîy z&z =z^zbzrz%…z «z¶z¼zBÃz{S {a{i{‡{Ž{¢{º{×{ ó{|p |Kz|Æ|,Î|ˆû|„}š}«}³}Â}Ñ}!Ö}5ø}$.~S~€X~ñÙË€΀î€ ##>b‡˜¯ÃÛò ÷‚ ‚‚.‚L‚9U‚‚¥‚¼‚+Ô‚ƒƒƒ ƒƒƒƒM.ƒ|ƒ‹ƒŸƒ¥ƒ´ƒ ̓Ûƒ ûƒ„$„7„;„M„l„Š„œ„´„Ì„ë„ …(…B…X…r…‰…¤…½…Ö…Þ…ù…†1†F†[†v†'‹†,³†à†ï†‡‡4‡H‡¬`‡Y ˆ gˆ sˆ ˆ‹ˆˆ ±ˆ¾ˆÔˆåˆîˆ óˆ ýˆ ‰‰'‰.‰@‰I‰!c‰ …‰¦‰ »‰܉*õ‰ Š:ŠPŠ`ŠiŠCyнŠ3Ê*÷Š"‹B‹_‹q‹ x‹ „‹‹ ”‹¢‹´‹Z»‹Œ ,Œ7ŒIŒ‹^Œ–êŒ$‘N¶ŽŽü”Ž ‘œ»ËÛí óþ,.[ a ky$”#¹^Ý<‘jC‘®‘À‘É‘ Ý‘ ç‘zñ‘l’q’.“µ°”Ìf•33–g–3m–/¡–Ñ–Ù–Hô–=—B—U—]—f— y—‡— £—­— —Зá—Gý—ÙE˜è™ìšLõš&B›,i›%–›»¼›-xœ9¦œ)àœM 0X7‰,Á7î,&žSž=rž•°ž%FŸlŸ:‰Ÿ;ÄŸ' ( A¡]¡s¡‡¡ œ¡¨¡»¡0Ì¡ý¡D¢/[¢J‹¢9Ö¢£,£ 5£ A£K£S£ p£~££ ££±£Ä£Ú£ê£Aÿ£DA¤ †¤-‘¤¿¤Ѥä¤ ù¤¥¥ 2¥ <¥ I¥S¥e¥ ¥6Š¥Á¥ Æ¥ Ô¥ à¥ î¥ ú¥¦ ¦3¦O¦^¦lb¦ƒÏ¦nS§6§ù§þ§ ¨r ¨“¨˜¨  ¨-®¨Nܨ?+©Dk©@°©Iñ©?;ª<{ªQ¸ªV «Va«X¸«X¬8j¬£¬©¬¼¬ج ë¬ö¬’û¬ïŽ®~¯ ¯ 𝥝¶¯ ȯÖ¯Û¯ï¯ô¯û¯ °° °6°V°[° d° n° x°‚°ˆ°J°Ú°;ì° (±2±E±"N±q±ˆ±N™±Ïè±u¸³9.´h´V„´Û´Pê´4;µpµ&µù¨µV¢¶ ù·¸ ¸¸¸¸¸!¸%¸)¸ .¸ 9¸D¸G¸K¸P¸V¸Y¸_¸b¸h¸k¸q¸w¸ z¸„¸‡¸Џ¸¸“¸ ¢¸­¸ɸ:Ù¸/¹D¹[¹Bb¹¥¹®¹ ¶¹ Ĺ,й/ý¹-º!Kº mº#Žº²º ɺ+Öº%»(»E»I»/i»:™»<Ô»1¼2C¼%v¼œ¼´½ɽÞ½ 潃ô½+x¾*¤¾ϾÞ¾í¾ ó¾ ¿ ¿ -¿ 9¿ F¿R¿Y¿`¿i¿r¿{¿„¿—¿´¿Ç¿ Ü¿æ¿í¿ÀOÀhÀwÀ‡À.›À?ÊÀ3 Á=>Á|Á*‘Á4¼ÁPñÁ'BÂ'jÂ7’ÂÊ æÂ-Ã&5Ã\Ã'yáøÃ!ÓÃõà Ä/Ä6JÄ$Ä4¦Ä ÛÄåÄ úÄÅ1ÅJÅhÅÅ)—ÅÁÅ(ÚÅÆÆ 5Æ@Æ VÆ`ÆzƃƋƜƭÆ$ÄÆéÆÇÇ.Ç<DÇ$Ç¦Ç ¼ÇÉÇ ÜÇ"êÇ È "È -È 9È EÈQÈqȇÈ4˜È;ÍÈ% É*/É%ZÉ)€É"ªÉÍÉ íÉ Ê1/ÊAaÊO£Ê%óÊ3Ë/MË)}Ë*§Ë2ÒË7ÌD=ÌA‚ÌÄÌ"ÝÌÍ Í?AÍCÍ=ÅÍ}Î'Îk©ÎÏ"0ÏSÏ cÏnÏˆÏ —Ï¥ÏÅÏÔÏéÏ2øÏ+Ñ <ÑJÑQÑìXÑEÓ1ZÓŒÓ.ŸÓ ÎÓ ÜÓMêÓ8ÔKÔeÔ|ÔÓ’Ô§fÕ-Ö<×M×b×~ו׬×Ç×ß×ö× Ø*Ø:ØJØ#_؃ØGœØäØÙÙ6ÙSÙ#rÙ –٣٩ٲٺÙÖÙñÙ- Ú;Ú=YÚ—Ú;¦ÚFâÚ<)Û4fÛ ›Û¦ÛÃÛ,ÛÛÜÜ7ÜPÜbÜzÜ –ܡܤܩܮܱܶÜ?¹ÜùÜ Ý3ÝQÝhÝzݓݩÝaÂÝ$Þ#3ÞsWÞËÞÐÞ`ïÞ!Pßrß ’ߟߦ߽߭ßÕßéß5à<à[à4wà¬àËà Ôà âàîàôàáá)á<áKáG\á¤ä¬ä/¼äìäå %å/å6åLåUå]åyå Žå¯å+Èåôå4æEæLæSægæ}æ*“çR¾çUè.gè–èè¶è ºèÇèÏèØèîè-õè#é5éDéXéjéé¡é¸é+Ïéûéê /ê:ê @êJê `êlê3ê³êÆê-Ùê ëë +ë9ë Bëãë èë#òëîìí} îá‰îukïHáï*ð¨Bðwëðcñkñ'oñ&—ñ¾ñ Íñ ×ñ áñëñ6ûñ2òNòTòhò!ƒò¥ò/Äòôò ûòó$(ó%Mósó‚ó›ó¢óµó*Ðó ûóô ôIô`ôWiôÁôÉôçôðôõ$ õEõbõrõƒzõ]þõ \ö,fö—“ö+÷C÷ V÷`÷q÷÷(†÷;¯÷0ë÷ øy&øÿ ù ú'£ú+Ëú÷úû30û-dû ’ûŸû²ûÍûèû"ü $ü/üDüLüTü6cü šüN§üöü ýý)2ý\ýeýjý rý€ý ˆý"“ý]¶ýþ#þ CþOþ%cþ ‰þ"—þ#ºþÞþíþÿ ÿ%ÿ(?ÿhÿ|ÿœÿ/¼ÿ-ìÿ'"Be~"œ ¿à5ü 2)<fƒ¡#¶Úñ- *9d x™%¹ß$û½ hÞ G U cq‡›«Ã × áï(DSlu,‘"¾á#ù/9i‰¥ ¶Ã[Ö2582n#¡Ååø%B YVcº Õ à ° °É z (’ d» ¼ .Ý  ' "C f z “  ™ ¦ à 2Ü  #$B8g7 `Ø9s?³ Ë Ùú$¤Q«iýÂgæ*-?<F9ƒ ½ÈJä/6 M W bp„¡ª»Ì!ìRaíhóVMJ˜0·#èš 0§DØ-\K8¨Lá8.Jg,²ß?ûz;-¶äB:G'‚ ª· Ï í  ! *!8!O!Fh!!¯!MÑ!:"ZZ"Wµ" # -# 8# E# P#&Z##’#¤#Á#Ò#è#û# $G*$^r$ Ñ$,Þ$ %#%7% M%1Z%Œ% «% ¶% Ä%Ò%å%÷%Fÿ%F&L& [&g& v&‚&‘&˜&:µ&ð&'j'{p'qì'2^(‘(—(¬(¼( M)Y) a)<m)[ª)B*bI*P¬*^ý*Q\+>®+^í+YL,k¦,[-mn-AÜ-.&."=.`.z.ƒ.§ˆ.÷00(1;1J1S1i1‡1š1 1 ¼1Ç1Ï1 ç1 õ1 25 2 C2 Q2^2m2€22–2Lž2ë2D3F3O3d3%s3™3±3XÄ3‹¨·V §^/_xK“Sã·>G¡ïØ,?ËÙ*Ódð+ôj¤áºH纜‰I÷Þ–Ô†âÖ[s6œ¹±¨.\o`ýaΠŸ)!Â$½hŠÇø©•wËjE Õ‚ú0ÆÔ9›f”¯¾îé¤-øÅc‡ ê„8lí'0}FCŦš€] øÑŽÃŒ÷sØþÒÛlÏp<5´¸Òo»&ÇêŒy\K¹+ BXàÐÕ%«>ægL(1vpª„ ®ëü 6*ïcðSÿƒ='A ˜OÐümŠÏ1 óV7¡_@À|<¸ÈLßáå|ù¥>Tt¬Ó6¦ò éK¾fÑ ³Zï…ÍÄLíWç·r—ž| àÏbÓOnš;öÌÜÆDP§ŠZ†¦-ß³NôŸD¢ãh}Œ¿GÖò]²ò”ƒ‘æ‘5ÇPÌ¿ñ®ˆ™¼.?rêe~ü©2ÉiiN‘ùÞAY÷Ý$Õ‰`U{áÉÿ…[z7 ,‹:½ è°w½aRdû"ÎO§ˆBvIYHv<ØXûSîÜGM¹!˜ûeýµ£bÐììAmÊÚÙþ8Wn®¡ Ÿa¥æÝ…ð3äpkÃ’qgͯây#ó* ܸ9Jb.¾o£¶"õÁqVµ¶‰wUšu8-˜°äù=(rTñ”“ ª];ãU=@Ž—¬}­Ý‡E¼C3‚â7~Ò—@‚åQ^›Þ¼F2¬£4x«ôÆÅík´ì)NÌB:RMy´uMúè~ËW’È4^çˆQ»¢ÙeJ±™Ä#fcÁun/&{I0–Áõ„"µ¨±¥sCTª»×4éizÊñ™•:2î,öÿ©ÊœúÛ%èqj3+•ó­ŽÚÃZX–tö %È ¤  ¢‹ÑgHý_ !­ß9D“É žÖ’õR$P{›;ƒmä °ÄÀ&l#žþ€dÚ¯ 'β¿[ëzh³×Y(º×`«xÛÀ?Íà)†J‡Ô\¶ë/å²EktÂQ1F5€ Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Drive %s %11s bytes total %11s bytes available (battery is %d%% full) Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)(Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*-0.5-1.0-1.5-2.00.00.51.01.51.6x1152 x 8641280 x 9601x2.02.5x29 mm2x34 mm3x41 mm4x51 mm58 mm5x640 x 4806x7x8x9xACAC adapterAE-lockASIC Revision: %d.%d Album nameAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Anti-redeyeAnywhereAox generic driver Theodore Kilgore ApertureArtistAssist LightAutoAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off TimeAuto Power Off (minutes)Auto exposure lockAuto, red-eye reductionAutofocus error.Automatic Automatic exposure adjustment on previewAutomatic flash on captureAvailable memory: B/WBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery LevelBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery exhausted, camera off.Battery status: %s, AC Adapter: %s BeepBeep ModeBestBit rate %ld is not supported.Black & WhiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlueBright+Bright-Brightness+Brightness-Brightness/ContrastBulb Exposure TimeBurst IntervalBurst NumberBusyCameraCamera ConfigurationCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ModelCamera OwnerCamera SettingsCamera and Driver ConfigurationCamera busy. If the problem persists, please contact %s.Camera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera was already activeCamera was woken upCan't delete all images.Can't delete image %s.Cannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCaptureCapture SettingsCapture type is not supportedCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card not supported.Card removed during access.Center-WeightedChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorCloudyColorColor ModeColor SettingsColor TemperatureCommand can not be cancelled.Command order error.Communication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompressionCompression SettingConfigurationConfiguration for your FUJI cameraConnected to cameraContrastContrast+Contrast-CopyrightCopyright (max. 20 characters)Copyright InfoCorrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file.Could not detect any cameraCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Creative PC-CAM 300 Authors: Till Adam and: Miah Gregory Current Mode: Camera Mode Current Mode: Playback Mode CustomDD/MM/YYYYData has been corrupted.Date & TimeDate FormatDate Time Stamp FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDay/Month/YearDaylightDebugDeepDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. Deleting image %s.Detected a "%s" aka "%s"Detected a '%s'.Digita Johannes Erdfelt Digital ZoomDigital zoomDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisconnecting camera.Do not display TV menuDownload program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy to port your driver on this cam! Download program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...DriverDual IrisEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.Effect ModeEmptyEnglishErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationEverywhereExecute predefined command with parameter values.Expected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.ExposureExposure Bias CompensationExposure CompensationExposure Index (film speed ISO)Exposure MeteringExposure Metering ModeExposure Program ModeExposure TimeExposure compensationExposure level on previewF-NumberF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d FileFile '%s' could not be found in folder '%s'.File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.FineFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware version: %d.%02d FisheyeFixedFlashFlash ModeFlash SettingFlash SettingsFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFluorescentFocal LengthFocusFocus DistanceFocus Metering ModeFocus ModeFocus positionFocusing PointFocusing error.For cameras with S&Q Technologies chip. Should work with gtkam. Photos will be saved in PPM format. All known S&Q cameras have two resolution settings. What those are, will depend on your particular camera. A few of these cameras allow deletion of all photos. Most do not. Uploading of data to the camera is not supported. The photo compression mode found on many of the S&Q cameras is supported, to some extent. If present on the camera, video clips are seen as subfolders. Gtkam will download these separately. When clips are present on the camera, there is a little triangle before the name of the camera. If no folders are listed, click on the little triangle to make them appear. Click on a folder to enter it and see the frames in it, or to download them. The frames will be downloaded as separate photos, with special names which specify from which clip they came. Thus, you may freely choose to save clip frames in separate directories. or not. ForceForce Flash Format card and set album name.Format compact flashFrames Taken : %4d FrenchFullFunctional ModeGeneralGermanGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.GreenHighHigh (1152 x 872)High (good quality)Host Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?HyPictI/O in progressIDISO SpeedIconsIdleIllegal parameter.ImageImage %s is delete protected.Image & SoundImage AdjustmentImage QualityImage SizeImage height: %d Image number not valid.Image protected.Image size: %d Image type %d is not supported by this camera !Image type is not supportedImage width: %d In useIncandescentInfinityInfinity/Fish-eyeInformationInitializing CameraInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal memory: %d MB total, %d MB free. InvalidInvalid Value ( %d ) Iris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JPEGJapaneseKeep filename on uploadKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BrightnessLCD ModeLED ModeLanguageLens ModeLens direction does not match flash light Lens is not connected LightLight too dark.List all filesListing files in '%s'...Listing folders in '%s'...Loading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!Looking for camera ...Looks like a modem, not a cameraLowLow (576 x 436)Low (best quality)Lower case letters in %s not allowed.MM/DD/YYYYMacroManualMars MR97310 camera library Theodore Kilgore MatrixMatthew G. Martin Based on fujiplay by Thierry Bousch MaximalMaximum number of Images: %d MediumMedium (1152 x 872)Medium (better quality)Memory card status (%d): %s Memory in camera: %d Mbit. Metering ModeMinimalMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Model: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s MonitorMonth/Day/YearNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName to set on card when formatting.NextNikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. NoNo Compact Flash Card detected No EXIF data available for %s.No SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card present.No memory card presentNo reason availableNo response from cameraNo space left on card.NoneNone selectedNormalNormal Not FullNot enough memory available on the memory cardNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOffOfficeOnOn, red-eye reductionOnly root folder is supported - you requested a file listing for folder '%s'.Operation ModeOperation cancelledOtherOther SettingsOther command executing.Out of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner name changedPALPTP Access DeniedPTP Capture Already TerminatedPTP Device Prop Not SupportedPTP General ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk Parameter 1Parameter 2Parameter 3Path not absolutePersistent SettingsPhoto EffectPhotos on camera: %d Picture SettingsPicturesPlayPlay modePort speedPower SavingPre-Capture DelayPresetPreview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProduct ID: %02x%02x Prohibit Flash RGB GainRTC Status: %d Read-only file attributes like width and height can not be changed.ReadyReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRedRed eye flashRed-eye ReductionRemoteRequested information about picture %i (= 0x%x), but got information about picture %i backResetting protocol...ResolutionResolution SwitchResolution plus SizeRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. SD Card ID: %s SD memory: %d MB total, %d MB free. SDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Self TimerSelf Timer (next picture only)Self Timer TimeSending data...Sensor ID: %d.%d SepiaSequence 9Session-persistent SettingsSet clock in cameraShall the camera beep when taking a picture?SharpSharpnessShot SettingsShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed microseconds (0 auto)SiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SingleSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Size Quality ModeSkylightSlide Show IntervalSlow SyncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SoftSome notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to the gphoto developer mailing list (in English) Sony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners Sorry, your camera does not support generic captureSoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSpotSpot Metering ModeSpot-AFStandardStill Capture ModeStrobe error.Summary for Mustek MDC800: SuperFineSwitching Camera OffSystem error.TV Output FormatTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The requested port type (%i) is not supported by this driver.There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.This camera can not capture previews.This camera can not capture.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.This preview doesn't exist.Thumbnail height: %d Thumbnail size: %d Thumbnail width: %d Time formatTimelapse IntervalTimelapse NumberTimeout even after 2 retries. Please contact %s.Too many retries failed.Toshiba David Hogue Toshiba pdr-m11 driver. Total pictures captured: %d, Flashes fired: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Trying to contact camera...TungstenUI LanguageUNIX TimeUnknownUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown modelUnknown model "%s"Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. Upload URLUpload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...User canceled downloadVendor ID: %02x%02x Version: Version: %s Video OutVolatile SettingsWaiting for completion...Waiting...We expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite BoardWhite balanceWhite boardWhite levelWideWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.Year/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.Your USB camera has a S&Q chipset. The total number of pictures taken is %i Some of these could be clips containing several frames Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i ZoomZoom (in millimeters)a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autobatteryblack & whitecamera inactive for > 9 seconds, re-initing. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Initial dirent packet too short (only %i bytes)canon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_set_file_attributes: canon_usb_dialogue failedcolorcoolshot library vcould not change owner namecould not set timeexternallyfinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)in fill modeinternallyjamcam library vlock keys failed.low (320x240)menuno status reported.nonenormalnot available: %soffonon batterypccam600_get_file:got index %d but expected index > %dplaypower OKpower badread onlyreadwritereadyrecordrecursive calls are not supported by the sierra driver! Please contact %s.spca50x library vsq905 generic driver Theodore Kilgore superfinesx330z is USB onlytime setunable to guess initial CRC value unexpected datatype %iunknown (0x%02x)warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: eu Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2005-05-12 16:52+0200 Last-Translator: Hizkuntza Politikarako Sailburuordetza Language-Team: Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.9.1 Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1); Kameraren identifikazioa: Modeloa: %s Jabea: %s Energia-egoera: %s Flash diskoaren informazioa: %s Ordua: %s Unitatea %s %11s byte guztira %11s byte erabilgarri (bateria %d%% dago beteta) Memoria osoak %8d byte ditu. %8d byteko memoria dago libre. Fitxategi-kontaketa: %d%i (ezezaguna)Irudi-formatu ezezaguneko %i byte jaso dira. Idatzi %s(e)ri eta eskatu laguntza.%i irudi ezin izan dira ezabatu, babestuta daudelako%lld (ezezaguna)%s (ostalariaren denbora %s%i segundo)(Traveler) SX330z liburutegia (eta beste Aldi kamera batzuk). Beste fabrikatzaile batzuekin ere, adibidez Jenoptik, Skanhex, Maginon, funtzionatu beharko luke. Eman erroreen berri eta bidali iruzkinak. Dominik Kuhlen * Irudi- eta komunikazio-arazoak askotan bateria baxuak eragiten ditu. * Kamera honetan urrunetik kapturatutako irudiak aldi baterako RAMen gordetzen dira eta ez Flash memoria txartelean. * Irudiak kapturatzeko esposizio-kontrola eskuz edo modu automatikoan konfigura daiteke. * Uneko irudi-kalitatea izan litekeena baino txikiagoa da. *EZEZAGUNA*-0.5-1.0-1.5-2.00.00.51.01.51.6x1152 x 8641280 x 9601x2.02.5x29 mm2x34 mm3x41 mm4x51 mm58 mm5x640 x 4806x7x8x9xACAC moldagailuaAE blokeoaASICen berrikuspena: %d.%d Albumaren izenaErrorea gertatu da sarrera-irteera liburutegian ('%s'): %sErrore ezezagun bat gertatu da. Jo %s(r)engana.Begi gorrien kontrakoaEdononAox kontrolatzaile orokorra Theodore Kilgore IrekieraArtistaArgi-laguntzaAutomatikoaAutomatikoki itzaltzea (eremua) (segundotan)Automatikoki itzaltzea (ostalaria) (segundotan)Automatikoki itzaltzeko orduaAutomatikoki itzaltzea (minutuak)Esposizio automatikoaren blokeoaAutomatikoa, begi gorriak gutxitzeaAutofokusaren errorea.Automatikoa Esposizioa automatikoki doitzea aurrebistanFlash automatikoa irudia kapturatzeanErabilgarri dagoen memoria: Z/BTransmisio-amaiera (EOT) okerraKaraktere okerrak (0x%x, 0x%x). Jo %s(r)engana.Kontrol-batura okerra - 0x%02x jaso da, 0x%02x espero zen.Datu okerrak - 0x%02x jaso da, 0x%02x edo 0x%02x espero zen.Datu okerrak - 0x%02x jaso da, 0x%02x espero zen.Esposizio okerra (baliteke nahikoa argi ez egotea)Balio okerra lentearen egoerarako %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Irudi-datuen ingeniaritza alderantzikatua: Jeff Laing Sarean topatutako dokumentuak erabiliz inplementatua. Baimena Vision-ek emana.Bateriak baxu daude.Bateriak ondo daude.BateriaBateria mailaBateria-maila: %s Irudi-kopurua: %d Geratzen den gutxieneko edukiera: %d Okupatuta: %s Flasha kargatzen: %s Lentearen egoera: Bateria agortu da, kamera itzali egingo da.Bateriaren egoera: %s, AC moldagailua: %s Soinu-seinaleaSoinu-seinaleaOnena%ld bit-abiadura ez da onartzen.Zuri-beltzaArbel beltzaZuri-beltzaArbel beltzaZuri-beltzaKeinuaUrdinaDistira+Distira-Distira+Distira-Distira/KontrasteaBonbilaren esposizio-denboraJarraitasun tarteaJarraitasun zenbakiaOkupatutaKameraKameraren konfigurazioaKameraren IDa: %s Kodak DC215 Zoom kamerarako kamera-liburutegia. Michael Koltan Kamera-modeloaKameraren jabeaKameraren ezarpenakKameraren eta kontrolatzailearen konfigurazioaKamera okupatuta dago. Arazoak jarraitzen badu, jo %s(r)engana.Kamerak ez ditu parametroak onartu. Jo %s(r)engana.'%s' kamera-kontrolatzailean 'camera_init' funtzioa falta da.Kamerak memoria du. Kamera modu okerrean dago. Jo %s(r)engana.Kamera ez dago prest, get_battery-k huts egin du: %sKamera ez dago prest, kamera identifikatzeko hainbat eskaerek huts egin dute: %sKamerako irudiak monokromatikoak dira. Kameraren energia aurreztea (segundoak)Kamerak 3 aldiz ukatu du konexio bat irekita edukitzea.Kamerak komandoa ezetsi du.Kamera bere kabuz berrezarri da.Kamerak espero ez zen 0x%02x bytea bidali du.Kamerak koadro txikiak onartzen ditu. Kamerak bideoa onartzen du. Kamerak bideo-formatuak onartzen ditu: Kamerako ordua: %s %s Kamera ez dago erabilgarriKamera lehendik aktibatuta zegoenKamera aktibatuta zegoenEzin dira irudi guztiak ezabatu.Ezin da %s irudia ezabatu.Ezin da berreskuratu geratzen den memoria erabilgarriaEzin da bateriaren ahalmena eskuratuEzin da berreskuratu irudiak dituen karpetaren izenaKapturatuKapturatze-ezarpenakKapturatze-mota hori ez onartzenTxartelaren egoera: Ezin da txartela idatzi.Txartela ez dago formateatutaTxartela ez dago irekitaTxartela irekita dagoTxartelak idazketaren kontrako babesa du.Txartela ez da onartzen.Txartela kendu egin da atzitu bitartean.Erdian zentratutaAbiadura aldatzen... itxaron...PertsonaiaPertsonaia eta soinuaKargatzenKontrol-baturaren erroreaLainotuaKoloreaKolorearen moduaKolore-ezarpenakKolorearen tenperaturaKomandoa ezin da bertan behera utzi.Komando-ordenan errorea.Komunikazio-errorea 1Komunikazio-errorea 2Komunikazio-errorea 3Komunikazio-errorea 2 saiakeren ondoren ere. Jo %s(r)engana.Compact Flash txartela detektatu da CompactFlash txartelaKonprimitzeaKonpresio-ezarpenaKonfigurazioaZure FUJI kamerarako konfigurazioaKamerara konektatutaKontrasteaKontrastea+Kontrastea-Copyright-aCopyright-a (geh. 20 karaktere)Copyright informazioaDatuak hondatutaEzin izan dira %i byte esleitu irudia deskargatzeko.Ezin izan dira %i byte esleitu koadro txikia deskargatzeko.Ezin izan dira USB ezarpenak aplikatuEzin izan da kamerarekin kontaktuan jarri.Ezin izan da \DCIM direktorioa sortu.Ezin izan da helburuko direktorioa sortu.Ezin izan da %s direktorioa sortu.Ezin izan da direktorioa sortu.Ezin izan da fitxategia ezabatu.Ezin izan da kamerarik detektatuEzin izan da hasierako kontaktua egin kamerarekinEzin izan da datuen JPEG koadro txikia atera: Datuak ez dira JFIFEzin izan da JPEG koadro txikia atera datuetatik: ez dago hasierarik/amaierarikEzin izan da '%s' fitxategia aurkitu.Ezin izan da lokalizatzeko daturik aurkitu '%s'(e)nEzin izan da diskoaren informazioa eskuratu: %sEzin izan da diskoaren izena eskuratu: %sEzin izan da flash unitatearen letra lortuEzin izan da %i erregistroa lortu. Jo %s(r)engana.Ezin izan da %i kate-erregistroa lortu. Jo %s(r)engana.Ezin izan da kargatzea hasieratu (kamerak 0x%02x(e)kin erantzun du).Ezin izan da kargatu eskatutako '%s' (%s) kamera-kontrolatzailea.Ezin izan da '%s' ireki.Ezin izan da %s direktorioa kendu.Ezin izan da direktorioa kendu.Ezin izan da kamera berrezarri. Ezin izan da %i abiadura ezarri (kamerak %i(e)kin erantzun du).Ezin izan da paketea transmititu (%i errore-kodea). Jo %s(r)engana.Ezin izan da paketea transmititu hainbat saiakera eginda ere.Ezin izan da kargatu, karpeta-izenik ez dago erabilgarri! 999CANON karpeta-izena badago eta AUT_9999.JPG argazkia du barruan.Ezin izan da "%s" fitxategitik irakurriCreative PC-CAM 300 Egileak: Till Adam eta: Miah Gregory Uneko modua: kamera-modua Uneko modua: erreproduzitze-modua PertsonalizatuaEE/HH/UUUUDatuak hondatu egin dira.Data eta orduaData-formatuaData-/denbora-markaren formatuaData eta orduaData eta ordua (GTM)Bistaratu dataData: %i/%02i/%02i %02i:%02i:%02i Egindako argazkiak: %i Argazki libreak: %i Software-bertsioa: %s Baud-abiadura: %s Memoria: %i megabyte Kameraren modua: %s Irudiaren kalitatea: %s Flasharen konfigurazioa: %s Informazioa: %s Tenporizadorea: %s LCD: %s Automatikoki itzaltzea: %i minutu Energia-iturria: %sEguna/Hila/UrteaArgi naturalaAraztuSakonaSierra kontrolatzaile lehenetsia: Hau sierra kontrolatzaile lehenetsia da, zure kameran irudiak deskargatzea eta arakatzea onartu beharko luke. Kameraren konfigurazio-ezarpenak (edo hobespenak) Olympus 3040en oinarrituta daude, eta baliteke bukatu gabe egotea. Konfigurazio-ezarpenak zure kamerarako bukatuta daudela egiaztatzen baduzu edo konfigurazioa osatzen laguntzeko kodea eman badezakezu, jarri harremanetan, garatzaileen posta-zerrendarekin. %s irudia ezabatzen."%s" detektatu da, "%s" izenez ere ezagutzen dena'%s' detektatu da.Digita Johannes Erdfelt Zoom digitalaZoom digitalaDirektorioa arakatzeko modua - Scott Fritzinger-ek idatzia, .Direktorioa badagoEz da direktorioa aurkituKamera deskonektatzen.Ez bistaratu TB menuaDigital Dream Enigma 1.3. programaren deskarga eta spca50x kontrolatzailetik egokitzea :. Eskerrik asko spca50x taldea, erraza izan da zuen korntolatzailea eogkitzea kamera honentzako.Polaroid DC700 kamerarako deskargatzeko programa. Ryan Lantzer-ek idatzia gphoto-4.x-rako. gphoto2rako Lutz Mueller-ek egokitua.Hainbat Polaroid kameretarako deskargatzeko programa. Peter Desnoyers-ek idatzia eta gphoto2rako Nathan Stenzel-ek eta Lutz Mueller-ek egokitua. Polaroid 640Seren proba Michael Golden-ek egin zuen .%s deskargatzen.'%s' deskargatzen...EXIF datuak deskargatzen...Audioa deskargatzen...Datuak deskargatzen...Fitxategia deskargatzen...%s irudia deskargatzen.Irudia deskargatzen...Filma deskargatzen...Koadro txikia deskargatzen...Deskargatzen...KontrolatzaileaIris-diafragma dualaEEPROMen kontrol-baturaren errorea.ERROREA: %d handiegia daERROREA: errore larriaren baldintza bat detektatu da, ezin da jarraitu ERROREA: mezu-formatu okerra.ERROREA: mezu gehiegiERROREA: sekuentziatik kanpo.ERROREA: espero ez zen mezuaERROREA: espero ez zen mezua2.ERROREA: espero ez zen pakete-mota.Efektu-moduaHutsaIngelesaErroreaErrorea irudia kapturatzeanErrorea abiadura aldatzeanErrorea abiadura aldatzean.Errorea asoziatutako koadro txikia ezabatzeanErrorea fitxategia ezabatzeanErrorea abiarazi bitartean hartu-agiriaren (ACK) zain dagoelaLeku guztietanExekutatu aurrez definitutako komandoa parametro-balioekin.%i byte espero ziren, %i jaso d(ir)a. Eman errore honen berri %s(e)ri.%i espero zen, %i jaso da. Eman erroren honen berri %s(e)ri.32 byte espero ziren, %i lortu dira. Jo %s(r)engana.EsposizioaEsposizio-konpentsazio joeraEsposizio-konpentsazioaEsposizio-indizea (pelikularen ISO abiadura)Esposizioa neurtzeaEsposizioa neurtzeko moduaEsposizio-programa moduaEsposizio-denboraEsposizio-konpentsazioaEsposizio-maila aurrebistanF-zenbakiaF2F2.3F2.8F4F5.6F8ERRORE LARRIA: %d luzerarako hasierako CRC balioa ezezaguna da FLASH: Fitxategiak: %d FitxategiaEzin izan da '%s' fitxategia aurkitu '%s' karpetan.Fitxategi-konprimitzeaFitxategia badagoEz da fitxategia aurkituFitxategia babestuta.Fitxategiaren bereizmenaFitxategiak %ld byteko tamaina du. Karga daitekeen fitxategi handienaren tamaina hau da: %i byte.Fitxategi-motaFitxategia kargatzeak huts egin du.Fitxategia handiegia zen. Agian kamera itzali eta berriro piztu beharko duzu fitxategi gehiago kargatu baino lehen.FinaFirmwarearen berrikuspena: %8sFirmwarearen berrikuspena: %8s Argazkiak: %i Memoria osoa: %ikB Libre dagoen memoria: %ikB Firmwarearen berrikuspena: %d.%d Firmwarearen bertsioa: %d.%02d Arrain-begiaFinkoaFlashaFlasharen moduaFlasharen konfigurazioaFlasharen ezarpenakFlasharen argia: automatikoaFlasharen argia: automatikoa (begi gorriak gutxitzea)Flasharen argia: desaktibatutaFlasharen argia: aktibatutaFlasharen argia: aktibatuta (begi gorriak gutxitzea)Flasharen argia: definitu gabeFlashPixFluoreszenteaFoku-luzeraFokuaFoku-distantziaFokua neurtzeko moduaFokuaren moduaFokuaren kokalekuaFokatze-puntuaFokatze-errorea.S&Q txipean oinarritutako kamerentzat. 'gtkam'ekin funtzionatu beharko luke. Argazkiak PPM formatuan gordeko dira. Ezagutzen diren S&Q kamera guztiek bi bereizmen ezarpen dituzte, eta kamera bakoitzaren arabera daude. Beste askok ez ordea. Datuak kameran kargatzea ez dago onartuta. Argazki konpresio modua S&Q kamera gehienetan onartuta egon arren, batzuk ez dute onartzen. Kamerak edukiz gero, bideoak azpikarpeten gisa ikusten dira, eta kameraren izenaren aurretik iruki txiki bat agertzen da. Karpetarik ez bada zerrendatzen, egin klik irukitxoan agertzeko. Egin klik karpetaren gainean bertan sartzeko, eta fotogramak ikusteko edo deskargatzeko. Fotogramak bereiztutako argazkien bezala deskargatuko dira, izen bereziekin datozten bideoei errefentzia eginez. Ondorioz, bideoko fotogramak bestelako direktorioetan gorde ditzakezu. BehartuBehartu flasha Formateatu txartela eta ezarri albumaren izena.Formateatu compact flashHartutako fotogramak : %4d FrantsesaBetetaFuntzionalitate-moduaOrokorraAlemanaKonfigurazioa eskuratzen...Datuak eskuratzen...Fitxategi-zerrenda eskuratzen...Fitxategia eskuratzen...%i fitxategietako informazioa eskuratzen...Koadro txikia eskuratzen...Espero ez zen emaitza lortu da 0x%x. Jo %s(r)engana.BerdeaHandiaHandia (1152 x 872)Handia (kalitate ona)Konexio-modua: %s Esposizioaren zuzenketa: %s Esposizioaren data: %d Baliozko data: %s Data: %d/%02d/%02d %02d:%02d:%02d Tenporizadorea: %s Kalitatearen konfigurazioa: %s Erreproduzitze-/Grabatze-modua: %s Txartelaren baliozko IDa: %s Txartelaren IDa: %d Flash-modua: Ostalariaren energia aurreztea (segundoak)Zenbat denbora pasatzen da kamera itzali arte ordenagailura konektatuta dagoenean?Zenbat denbora pasatzen da kamera itzali arte ordenagailura konektatuta ez dagoenean?Zenbat denbora pasatzen da kamera itzali arte?HyPictS/I eragiketa abian dagoIDaISO abiaduraIkonoakInaktiboParametro baliogabea.Irudia%s irudia ezabatzearen kontra babestuta dago.Irudia eta soinuaIrudia doitzeaIrudiaren kalitateaIrudiaren tamainaIrudiaren altuera: %d Irudi-zenbakia ez da baliozkoa.Irudia babestuta dago.Irudiaren tamaina: %d Kamerak honek ez du onartzen %d irudi-mota!Irudi-mota hori ez onartzenIrudiaren zabalera: %d ErabiltzenGoriaInfinituaInfinitua/ArrainbegiaInformazioaKamera hasieratzenBarne-errorea #1 get_file_func()-en (%s, %i lerroa)Barne-errorea (1).Barne-errorea (2).Barneko memoria: %d MB guztira, %d MB libre. BaliogabeaBalio baliogabea ( %d ) Iris-errorea.ItalieraJD11 Marcus Meissner Jenoptik JD11 kamerarako kontrolatzailea. Protokoloaren ingeniaritza alderantzikatua WINE eta IDA erabiliz egin da.JPEGJaponieraMantendu fitxategi-izena kargatzeanArazo ezagunak: 1. Kodak DC3200-k gutxienez 10 segundoz behin komando bat jasotzen ez badu, denboraz kanpo geratuko da eta berriro hasieratu beharko da. Kamerak erantzuten ez badu, hautatu berriro kamera. Ondorioz, berriro abiaraziko da.Arazo ezagunak: Komunikazio-arazoak badaude, berrabiarazi kamera eta aplikazioa. Kontrolatzailea ez da egoera hauetatik leheneratzeko behar bezain sendoa, batez ere arazoren bat badago eta kamera 9600 baino abiadura handiagoetan behar bezala itzaltzen ez bada.Kodak DC120 Camera Library Scott Fritzinger Kodak DC120 kamerarako kamera-liburutegia (jendeak eskatuta).Kodak DC240 kamerarako liburutegia Scott Fritzinger eta Hubert Figuiere Kodak DC240, DC280, DC3400 eta DC5000 kameretarako kamera-liburutegia. gPhoto2-rako berridatzia eta eguneratua.Kodak DC3200en kontrolatzailea Donn Morrison Galderak eta oharrak ongi etorriak izango dira.Kodak EZ200 kontrolatzailea Bucas Jean-Francois Konicaren konfigurazioaKonica Q-M150 liburutegia Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Konica Q-M150 frantseserako euskarria.Konica liburutegia Lutz Mueller Konica kamera guztiak eta hainbat HP kamera onartzen ditu.KoreeraLCDLCD automatikoki itzaltzea (segundotan)LCD automatikoki itzaltzea (segundoak)LCDren distiraLCD moduaLED moduaHizkuntzaLentearen moduaLentearen noranzkoa ez dator bat flasharen argiarekin Lentea ez dago konektatuta ArgiaArgi gutxiegi dago.Fitxategi guztien zerrenda'%s'(e)ko fitxategien zerrenda...'%s'(e)ko karpeten zerrenda...Kamera-kontrolatzaileak kargatzen '%s'(e)tik...LokalaLokalizazioaLokalizatzeko datuak hondatuta.Lokalizatzeko datuak luzeegiak dira.Lokalizatzeko fitxategia luzeegia da.Kamera bila...Modema dirudi, ez kameraTxikiaTxikia (576 x 436)Txikia (kalitaterik onena)%s-(e)n letra minuskulan ez dira onartzen.HH/EE/UUUUMakroaEskuzkoaMars MR97310 kameraren liburutegia Theodore Kilgore MatrizeaMatthew G. Martin Thierry Bousch-en (bousch@topo.math.u-psud.fr) fujiplay-n oinarritua MaximoaGehienezko irudi-kopurua: %d TartekoaTartekoa (1152 x 872)Tartekoa (kalitate hobea)Memoria-txartelaren egoera (%d): %s Kameraren memoria: %d Mbit. Neurtzeko moduaMinimoaMinolta Dimage V kameraren liburutegia %s Gus Hartmann Eskerrik asko bereziki Minoltari zehaztapenengatik.Modeloa: Minolta Dimage V (%s) Hardwarearen berrikuspena: %s Firmwarearen berrikuspena: %s Modeloa: Modeloa: %s Memoria: %d /%d byte erabilgarriModeloa: %s Serie-zenbakia: %s, Hardware-bertsioa: %i.%i Software-bertsioa: %i.%i Softwarearen bertsioa probatzen: %i.%i Izena: %s, Fabrikatzailea: %s Modeloa: %x, %x, %x, %xModeloa: Kodak %s MonitoreaHila/Eguna/UrteaEZ DA EZAGUTZENNTSC"%s" NULL parametroa %s(e)ko %i lerroan Kameraren "%s" izena ez dator bat ezagutzen diren kamerekinFormateatzean txartelean ezarri beharreko izena.HurrengoaNikon Coolpix 880: Kameraren konfigurazioa (edo hobespenak): Zoom optikoak ez du behar bezala funtzionatzen. Konfigurazio-ezarpen guztiak ezin dira behar bezala irakurri edo idatzi, adibidez zuri-balantzearen ezarpen fina eta hizkuntza ezarpenak. Jarri kamera 'M' moduan obturadorearen abiadura ezartzeko. Nikon Coolpix 995: Kamera honen konfigurazioa (hobespenak) ez dago bukatuta, jarri gphoto garatzaileen posta-zerrendarekin harremanetan kontrolatzaile hau garatzen lagundu nahi baduzu. Deskargatzeak ondo funtzionatu beharko luke. EzEz da Compact Flash txartela detektatu Ez dago EXIF daturik erabilgarri %s(e)rako.Ez dago SD txartelik sartuta. Kamerak ez du erantzuten.Ezin izan da audio-fitxategirik aurkitu %s-(e)ntzatKameraren eskulibururik ez dago erabilgarri. Txartelik ezEz dago txartelik.Ez dago memoria-txartelik.Ez da arrazoirik ezagutzenKamerak ez du erantzutenEz da lekurik geratzen txartelean.Bat ere ezBat ere ez hautatutaNormalaNormal Ez dago betetaEz dago nahikoa memoria erabilgarri memoria-txarteleanErabili gabeOharra: ez dago memoria-txartelik, baliteke balio batzuk baliozkoak ez izatea Irudi-kopurua: %d Argazki-kopurua: %dArgazki-kopurua: %d Argazki-kopurua: %i Firmware-bertsioa: %sITZALITAAdosPIZTUTADesaktibatutaBulegoaAktibatutaAktibatuta, begi gorriak gutxitzeaErroko karpeta bakarrik onartzen da; zuk '%s' karpetarako fitxategien zerrenda eskatu zenuen.Operazio-moduaEragiketa bertan behera utzi daBestelakoakBestelako ezarpenakBeste komando bat exekutatzen ari da.Memoriarik ezMemoriarik ez: %d byte behar dira.Memoriarik ez: %ld byte behar dira.Aire zabalekoaJabearen izena aldatu daPALPTP Atzipena ukatu egin daPTP Kapturatzea amaitu daPTP Gailuaren propietatea ez da onartzenPTP Errore orokorraPTP Osatu gabeko transferentziaPTP Kodearen formatu baliogabeaPTP Gailuaren propietatearen formatu baliogabeaPTP Gailuaren propietatearen balio baliogabeaPTP Objektu-formatuaren kode baliogabeaPTP Objektu baliogabeen heldulekuaPTP Parametro baliogabeaPTP Objektu guraso baliogabeaPTP Biltegiratze baliogabearen IDaPTP Transakzio baliogabearen IDaPTP Ez dago koadro txikirikPTP Ez dago objektuari buruzko baliozko informaziorikPTP Ondo!PTP Objektua idazketaren kontra babestutaPTP Eragiketa ez da onartzenPTP Parametroa ez da onartzenPTP Zatika ezabatzeaPTP Proba automatikoak huts egin duPTP Saioa irekita dagoPTP Saioa ez dago irekitaPTP Formatuaren zehaztapenak ez dira onartzenPTP Helburuaren zehaztapena ez da onartzenPTP Biltegia betetaPTP Biltegia ez dago erabilgarriPTP Biltegia irakurtzeko soilikPTP Transakzioa bertan behera utzi daPTP Definitu gabeko erroreaPTP Fabrikatzailearen kode ezezagunaPanasonic DC1000rako gPhoto liburutegia Mariusz Zynel Fredrik Roubert-ek eta Galen Brooks-ek (galen@nine.com)idatzitako dc1000 programan oinarritua.Panasonic PV-L859-K/PV-L779-K Palmcorder-erako kontrolatzailea Andrew Selkirk 1. parametroa2. parametroa3. parametroaBidea ez da absolutuaEzarpen iraunkorrakArgazki efektuaKamerako argazkiak: %d Irudiaren ezarpenakArgazkiakErreproduzituErreproduzitze-moduaAtakaren abiaduraEnergia aurrezteaAurre-kapturaren atzerapenaAurrez ezarriaAurreikusi koadro txikiaAurrekoaArazoa irudia deskargatzeanArazoa irudiari buruzko informazioa lortzeanIrudi-kopurua lortzeko arazoa dagoArazoa ataka irekitzeanArazoa irudia Flashetik irakurtzeanArazoa kamera berrezartzeanArazoa kameraren komunikazio-abiadura ezartzeanArazoa zuzeneko irudia hartzeanProduktuaren IDa: %02x%02x Debekatu flasha RGB irabaziaRTCren egoera: %d Irakurtzeko soilik fitxategien atributuak, adibidez zabalera eta altuera, ezin dira aldatu.PrestEspero ez zen erantzuna jaso da (%i). Jo %s(r)engana.Espero ez ziren datuak jaso dira (0x%02x, 0x%02x).Espero ez zen goiburua jaso da (%i)Espero ez zen erantzuna jaso daDatuak jasotzen...GrabatuGrabatze-moduaGrabatze-moduaGorriaBegi gorrien kontrako flashaBegi gorriak gutxitzeaUrrunekoa%i (= 0x%x) irudiari buruzko informazioa eskatu da, baina %i irudiari buruzkoa jaso daProtokoloa berrezartzen...BereizmenaBereizmena hautatzeko etengailuaBereizmena eta tamainaRicoh / Philips kontrolatzailea Lutz Mueller-en , eta Martin Fischer-en eskutik, Bob Paauwe-n kontrolatzailean oinarrituta Ricoh Caplio G3. Marcus Meissner Ingeniaritza alderantzikatua USB Snoopy erabiliz egin da, firmwarearen eguneratze-irudiari begira eta ausaz asmatzen. SD txartelaren IDa: %s SD memoria: %d MB guztira, %d MB libre. SDRAM: Fitxategiak: %d Irudiak: %4d Filmak: %4d Erabilitako lekua: %8d Libre dagoen lekua: %8d STV0674 Vincent Sanders ASIC STV0674 prozesadorea erabiltzen duten kameretarako kontrolatzailea. Protokoloaren ingeniaritza alderantzikatua SnoopyPro erabiliz egin da STV0680 Adam Harrison ASIC STV0680 prozesadorea erabiltzen duten kameretarako kontrolatzailea. Protokoloari ingeniaritza alderantzikatua aplikatu zaio, CommLite Beta 5 erabiliz Carsten Weinholz Aiptek PenCam eta STM USB modu dualeko kameretarako zabaldua.TenporizadoreaTenporizadorea (hurrengo irudia soilik)Tenporizadore automatikoaren orduaDatuak bidaltzen...Sentsorearen IDa: %d.%d SepiaSekuentzia 9Saioaren ezarpen iraunkorrakEzarri kameraren erlojuaKamerak soinua egin beharko luke argazkia egitean?GarbiaZorroztasunaArgazki-ateratzearen ezarpenakObturadorearen abiadura (segundotan)Obturadorearen abiadura (mikrosegundotan, 0 automatikoa)Obturadorearen abiadura mikrosegundotan (0 automatikoa)SiPix Web2 Marcus Meissner SiPix Web2 kamerara sartzeko kontrolatzailea.SoilaSipix StyleCam Blink kontrolatzailea Vincent Sanders Marcus Meissner . Tamaina-kalitatea moduaArgi naturalaDiapositiba-erakusketaren tarteaSinkronizazio motelaSinkronizazio motelaSmal Ultrapocket Lee Benfield Smal Ultrapocket kamerara eta OEM bertsioetara (slimshot) sartzeko kontrolatzaileaSuabeaEpson kamerei buruzko ohar batzuk: - Parametro batzuk ezin dira urrunetik kontrolatu: * zooma * fokua * zuri-balantzearen konfigurazio pertsonalizatua - Konfigurazioa ingeniaritza alderantzikatuaren bidez egin da PhotoPC 3000z kamerarekin, zure kamera beste modu batera portatzen bada, bidali mezu bat %s helbidera (ingelesez) Epson kamerei buruzko ohar batzuk: - Parametro batzuk ezin dira urrunetik kontrolatu: * zooma * fokua * zuri-balantzearen konfigurazio pertsonalizatua - Konfigurazioa ingeniaritza alderantzikatuaren bidez egin da PhotoPC 3000z kamerarekin, zure kamera beste modu batera portatzen bada, bidali mezu bat gphoto garatzaileen posta zerrendara (ingelesez) Sony DSC-F1 kamera digitaletarako euskarria M. Adam Kendall Ken-ichi Hayashi-ren chotplay CLI interfazean oinarritua Gphoto2ra Bart van Leeuwen-ek ekarriaSony DSC-F55/505 kameretarako gPhoto liburutegia Sony MSAC-SR1 eta DCR-PC100ek erabiltzen duen Memory Stick onartzen ditu Mark Davies-ek idatzia gPhoto2ra Raymond Penners-ek ekarriaZure kamerak ez du onartzen kaptura generikoaSoinuaSoundvision kontrolatzailea Vince Weaver Geratzen den lekua: Handia: %d, Tartekoa: %d, Txikia: %d Gaztelania%i abiadura ez da onartzen!57600 baino abiadura handiagoak ez dira onartzen kamera honetan kargatzekoPuntuaPuntua neurtzeko moduaPuntua-AFEstandarraKaptura moduaStrobe-ren errorea.Mustek MDC800ren laburpena: Oso finaKamera itzaltzenSistema-errorea.Telebistaren irteerako formatuaAbiadura desberdinak probatzen...Arakatu direktorioa "kameraren" bidez, argazkiak disko gogorrean indexa ditzakezu.JD11 kamerak nahiko ongi funtzionatzen du kontrolatzaile honekin. 115 kbiteko RS232 interfazea behar da irudiak transferitzeko. Kontrolatzailearen bidez hauek lor ditzakezu: - koadro txikiak (64 x 48, PGM formatua) - irudi osoak (640 x 480, PPM formatua) Kodak DC120 kamerak KDC fitxategi-formatua erabiltzen du irudiak gordetzeko. Kameratik deskargatzen dituzun irudiak ikusi nahi badituzu, "kdc2tiff" programa deskargatu behar duzu. http://kdc2tiff.sourceforge.net helbidean eskura daiteke.The Samsung digimax 800k kontrolatzailea James McKenzie-k idatzi du gphoto-rako. Lutz Mueller-ek eraman du gphoto2ra. Marcus Meissner-ek finkatu eta hobetu du ataka.Kameraren bateria-maila txikiegia da (%d%%). Eragiketa bertan behera utzi da.Kamerak ez du komandoa onartu.Kamerak ez du '%s' fitxategi-izen gisa onartzen.Kamerak ez du %i abiadura onartzen.Oraindik aurkitu ez den errore bat bidali berri du kamerak. Eman horren berri %s(e)ri eta adierazi nola agertu zaizun errore hau: (0x%x,0x%x). Mila esker!Kamerak uste baino byte gehiago bidali ditu (%i)Kamerak %i byte baino ez ditu bidali, eta gutxienez %i behar ditugu.Kargatu beharreko fitxategiak luzera nulua duFitxategi-izenak ez ditu 12 karaktere baino gehiago izan behar ('%s'(e)k %i karaktere ditu).Fitxategi-sistemak ez du onartzen fitxategiak kargatzea.Fitxategi-sistemak ez du onartzen fitxategiei buruzko informazioa eskuratzeaFitxategi-sistemak ez du onartzen fitxategiak eskuratzeaFitxategi-sistemak ez du onartzen fitxategiei buruzko informazioa ezartzeaJasotako lehen bytea (0x%x) ez da baliozkoa.'%s' bidea ez da absolutua.Kontrolatzaile honek ez du onartzen eskatutako ataka-mota (%i).Unean eragiketa bat egiten ari da. Kamera honek eragiketa bakarra onartzen du aldiko. Itxaron uneko eragiketa amaitu arte.Kamera honek ezin ditu aurrebistak kapturatu.Kamera honek ezin du kapturatu.Kamera honek ez du kontrolatzaileari buruzko informaziorik ematen.Kamera honek ez du konfigurazio-aukerak ezartzea onartzen.Kamera honek ez du laburpenik onartzen.Liburutegi hau Kodak DC 215 Zoom kamerarekin probatu da. DC 200 eta DC 210 kamerekin ere funtziona dezake. Kamera horietako bat baduzu, bidali mezu bat koltan@gmx.de helbidera kontrolatzailearen liburutegi honekin arazoren bat duzun edo dena ondo dagoen jakinarazteko.Aurrebista hau ez dago.Koadro txikiaren altuera: %d Koadro txikiaren tamaina: %d Koadro txikiaren zabalera: %d Ordu-formatuaDenbora-hutsune tarteaDenbora-hutsune zenbakiaDenbora-muga gainditu egin da 2 saiakeren ondoren ere. Jo %s(r)engana.Saiakera gehiegik egin dute huts.Toshiba David Hogue Toshiba pdr-m11 kontrolatzailea. Kapturatutako argazkiak guztira: %d, Flashez argituak: %d Paketearen transmisioak denbora-muga gainditu du %i saiakeren ondoren ere. Jo %s(r)engana.Transmisioaren denbora-muga gainditu egin da 2 saiakeren ondoren ere. Utzi egingo da...Kamera kontaktatzen saiatzen...TungstenoaUI hizkuntzaUNIX orduaEzezagunaKamera-liburutegiaren errore ezezagunaErrore ezezagunaErrore ezezaguna.%i fitxategi-mota ezezaguna.Modelo ezezagunaModelo ezezaguna "%s"Erantzun ezezagunaTxartel desegokiaKomando hori ez da onartzen.Onartzen ez den %i = 0x%x motako ataka adierazi duzu. Ezin da abiarazi.Onartzen ez den ataka-mota: %d. Kontrolatzaile honek USB kamerekin baino ez du funtzionatzen. Kargatu URLa'%s' karpetan kargatzea baino ez da onartzenFitxategia kargatzen...Irudia kargatzen...Irudia kargatzen: %s.Kargatzen...Erabiltzaileak bertan behera utzi du deskargatzeaHornitzailearen IDa: %02x%02x Bertsioa: Bertsioa: %s Bideo irteeraEzarpen aldakorrakBurutzeko zain...Zain...0x%x espero genuen, baina 0x%x jaso da. Jarri harremanetan %s(e)rekin.AhulaZuri-balantzeaArbel zuriaZuri-balantzeaArbel zuriaZuriaren mailaZabalaIdazketaren kontra babestutaIhes-sekuentzia okerra: 0x%02x espero zen, 0x%02x jaso da.Urtea/Hila/EgunaBai'%s' ezabatzen saiatu zara '%s' karpetatik, baina fitxategi-sistemak ez du onartzen fitxategiak ezabatzea.Zure USB kamerak S&Q txipa du. Hartutako argazki kopurua %i da Hauetariko batzuk hainbat fotograma dituzten bideoak dira. Zure USB kamerak Aox txipa du. Bereiz-baxuko IRUD kopurua = %i Bereiz-altuko IRUD kopurua = %i IRUD kopurua = %i Zure USB kamera Kodak EZ200 da. IRUD kopurua = %i ZoomaZooma (milimetrotan)a/c moldagailuaagfa_cl20 Agfa CL20 Linux Driver People! Idatzi helbide honetara: cl20@poeml.de Bisita gaitzazu helbide honetan: http://cl20.poeml.de automatikoabateriazuri-beltzakamera inaktibo egon da 9 segundoz, berrabiarazi egingo da. canon_int_capture_image: amaierako canon_usb_list_all_dirs()-ek huts egin du %i egoerarekincanon_serial_get_dirents: ezin izan dira memoriako %i byte esleitucanon_serial_get_dirents: ezin izan da direktorioaren sarreraren bufferra %i byteko tamainan jarricanon_serial_get_dirents: ezin izan da direktorioaren beste sarrera bat irakurricanon_serial_get_dirents: direktorio-sarreren hasierako paketea txikiegia da(%i byte bakarrik)canon_serial_get_dirents: direktorio-sarrera gehiegi, begizta batean egongo gara.canon_serial_get_dirents: direktorio-sarrera trunkatua jaso dacanon_serial_get_dirents: canon_serial_dialogue-k ezin izan ditu direktorioaren sarrerak hartucanon_usb_get_dirents: karga ez da bufferrean kabitzen, '%.96s' (trunkatua) handiegia da.canon_usb_get_dirents: canon_usb_long_dialogue-k ezin izan ditu direktorioaren sarrerak hartu, %i itzuli ducanon_usb_list_all_dirs: karga ez da bufferrean kabitzen, '%.96s' (trunkatua) handiegia da.canon_usb_list_all_dirs: canon_usb_long_dialogue-k ezin izan ditu direktorioaren sarrerak hartu, %i itzuli ducanon_usb_set_file_attributes: canon_usb_dialogue-ek huts egin dukoloreacoolshot liburutegia vezin izan da jabearen izena aldatuezin izan da ordua ezarrikanpotikfinagPhoto2 Mustek VDC-3500/Relisys Dimera 3500 Software hau StarDot Technologies-ena den jabetza-informazioaren laguntzarekin sortu da. Egilea: Brian Beattie Laguntzaileak: Chuck Homic Kamerako formaturik gabeko datuak RGB bihurtzea Dan Fandrich Protokoloari, formaturik gabeko irudiei, gphoto2 atakari buruzko informazioa gsmart300 liburutegia Till Adam Jerome Lodewyck Mustek gSmart 300 kamera digitaletarako euskarria beste hainbat gphoto2 camlib moduluetan oinarritua eta zehaztapenak Mustek-ek atseginez emanak. handia (640 x 480)betetze-moduanbarnetikjamcam liburutegia v blokeo-teklek huts egin dute.txikia (320 x 240)menuaez da egoeraren berri eman.bat ere eznormalaez dago erabilgarri: %sdesaktibatutaaktibatutabateriarekinpccam600_get_file: %d indize lortuta, %d espero zirenerreproduzituenergia ondoenergia gaizkiirakurtzeko soilikirakurri-idatziprestgrabatusierra kontrolatzaileak ez ditu dei errekurtsiboak onartzen! Jo %s(r)engana.spca50x liburutegia vsq905 kontrolatzaile orokorra Theodore Kilgore oso finasx330z USB da soilikordua ezarritaezin da hasierako CRC balioa aurkitu ustegabeko %i datu motaezezaguna (0x%02x)kontuz: CRC ez da egiaztatu (gehitu %d luzera, 0x%04x balioa) ######################### libgphoto2-2.5.9/po/Makefile.in.in0000644000175000001440000003020512557123417013614 00000000000000# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2004 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.14 PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ localedir = $(datadir)/locale gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = @MKINSTALLDIRS@ mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: all-@USE_NLS@ all-yes: stamp-po all-no: # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @echo "touch stamp-po" @echo timestamp > stamp-poT @mv stamp-poT stamp-po # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)' test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all $(mkinstalldirs) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: $(mkinstalldirs) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir); \ else \ cp -p $(srcdir)/$$file $(distdir); \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ $(SHELL) ./config.status force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libgphoto2-2.5.9/po/es.gmo0000644000175000001440000021716612623156274012273 00000000000000Þ•â,ß<.¸=h¹=4">W>Fo> ¶>bÃ>;&?b?q?Å?OS@ £A­A²A·A¼AÁAÅAÉAÍAÑA ÖA áAìAïAóAøAþABB BBBBB "B,B/B2B5B8B ;BFBNB dB.oB-žB ÌBØBáBêBïB C *C8CQCdC|C C(˜CÁCÜCïCóC/ûC++D1WD'‰D(±DÚD øDFF+Fo3F£F#ÂFæFëF ðF þF G G &G2G8G=GEG MG YGeGyGŒG‘G˜G­GO¼G HH8K¾KÆKäKóK L"L 3L@LYLmL‰L™L ³L½LÏLØLçLîL ôLÿLM,MAMWMmM<ƒMÀMÝM ïM ûM" N,N @N JN TN^N}N:ŒN<ÇNO!O!;O']O…O¤OÀO×O/óO<#P<`PP(·PàPüP Q-9Q4gQ;œQ0ØQ RR=RYR5rR=¨R5æRsSSk­ST4TQT XTcT |T ˆT ”T¢T ¶TÿÃTÃUÒUÛUáU׿U¾WÑWêW.ûW *X 7XEDXŠX›X¯XÅXªÜX,‡Y´ZÄZØZñZ[[.[D[Y[n[‡[–[ [§[¾[<Ó[\-\D\\\v\’\±\·\¿\Å\Û\ð\(]/]'C] k]1v]:¨]4ã]-^F^O^e^w^^§^ª^¯^´^·^¼^5¿^õ^_, _:_ K_W_f_v_ †___¤_` `N `o`‰`¤`¬`²` ¸` Ã`Ñ`à`$ò`a(a"8a[ara {a‡a a˜a§a·a ½aÊaêaÿabb#b+b2bKb[bpb"€b£b.¸bçbíbòbcØcñcQ dU]d2³dædídýd e eee(e.e LeZe ke ye„e–e®e¿e/Ïeÿef,f 3f@fIf [fgf1{f­fÁf*Õfgg g*g2g´g¹gÂgÿÚg ÚhåiÒej^8k—k£¬kgPl¸l¿lÃlÝlùlmmm #m*-mXmomum…m”m­m#Èmìm òmÿmn6nRn inŠnŽnžn ±n¼nÂnÉnSÐn$o,oJoQoeo}ošo¶op¾oK/p{p,ƒpˆ°p9qOq`qhqwq†q!‹q5­q$ãqr€ rñŽs€tƒt£tÂtØt#ótu4u…¹…¾….Άµý‡Ì³ˆ€‰3†‰/º‰ê‰ò‰H ŠVŠ[ŠnŠvŠ ŠŠ ©Š³Š ÈŠÖŠçŠG‹ÙK‹è%ŒìLû&HŽ,oŽ%œŽ»ÂŽ-~9¬)æM0^7,Ç7ô,,‘Y‘=x‘•¶‘%L’r’:’;Ê’'“.“G”c”y”” ¢”0®”ß”/ø”J(•9s•­•ɕҕ ï•ý• – "–0–C–Y–i–A~–DÀ–-—3—E—X— m—z—‘— ¦— °—½—Ï— é—6ô—+˜ 0˜ >˜ J˜ X˜ d˜p˜u˜3…˜¹˜Șl̘9™>™ T™r`™Ó™Ø™ à™-î™Nš?kšD«š@ðšI1›?{›<»›Qø›VJœV¡œXøœXQ8ªãéüž +ž6ž’;žïΟ¾  Í  Ú å ö  ¡¡¡/¡4¡;¡M¡Q¡ T¡_¡d¡ m¡w¡}¡J„¡Ï¡ á¡ë¡þ¡"¢*¢N;¢ˆŠ¢¤9“¤"ͤRð¤C¥cT¥9¸¥ò¥%¦å+¦¨§ º¨ȨͨÒ¨רܨà¨ä¨è¨ì¨ ñ¨ ü¨© ©©©©©"©%©+©.©4©:© =©G©J©M©P©S©V© j©u©©F ©Aç©)ª9ªLª Uª.`ª0ªÀªÛª ûª#«@« T«9`«š«¹«Ϋ%Ò«>ø«L7¬G„¬>̬< ­/H­$x­®½®Ö®‡Þ®)f¯/¯À¯ǯͯ ܯê¯ ù¯°°°(°0°8°@°H°"Y°|°„°‹°¦°Kư±,(±KU±D¡±Cæ±*²AD²7†²g¾²+&³)R³:|³"·³ Ú³0û³,´K´)e´´©´¾´Ù´'ò´ µ5;µ.qµF µçµïµ ¶ $¶E¶c¶~¶+–¶¶+ܶ·#·A·J·\· e·†·Ž· ”·¢· º·"Û·þ·¸.¸VF¸*¸ȸ ݸ è¸!ö¸¹ .¹ 9¹ D¹N¹m¹7}¹<µ¹(ò¹$º&@º+gº'“º$»ºàº&ÿº5&»R\»K¯»*û»7&¼-^¼+Œ¼,¸¼Cå¼I)½Js½G¾½¾*¾'I¾%q¾K—¾Wã¾I;¿z…¿&Ài'À‘À"®À ÑÀ ßÀêÀ ÁÁ (Á5Á HÁ;VÁ ’ žÂªÂ²Â»ÂÕÄ3ìÄ Å.:Å iÅ vÅLƒÅÐÅåÅþÅƺ-ÆCèÆ,È<ÈPÈnȃȜȳÈÍÈãÈûÈÉ &É2É,BÉoÉKÉ#ÙÉýÉÊ2ÊLÊ"hʋʑʘʞʷÊÕÊ%ôÊË?5ËuË?„ËQÄËIÌF`Ì §Ì²ÌÐÌèÌ*Í1Í4Í9Í>ÍAÍFÍ?I͉͟Í=§ÍåÍüÍÎ$Î7ÎNÎ^Îu~ÎôÎùÎUÏjÏˆÏ ¨Ï³Ï¸Ï¾ÏÍÏåÏøÏ3ÐFÐXÐ+jЖаР¹ÐÆÐËÐÜÐîÐÑÑ6ÑOÑgршюіÑѼÑ"ÔÑ÷Ñ( Ò6ÒHOÒ ˜Ò¢Ò§Ò¹Ò,ÎÒ*ûÓ[&Ô^‚Ô;áÔÕ $Õ1Õ 4ÕBÕIÕOÕdÕ+kÕ—Õ§Õ»ÕÍÕáÕ$úÕÖ1Ö-JÖxÖ”Ö®Ö µÖÃÖÌÖ àÖìÖ1×6×I×,\× ‰×“ש׹׉Â×LØQØ'YØØBƒÙ†ÆÚ×MÛt%ܚܥ²ÜqXÝÊÝÒÝ(ÖÝ(ÿÝ(Þ7Þ@ÞIÞPÞ:aޜ޸޾ÞÔÞ(ðÞ*ß7Dß|ß ‚ß ß'°ß)Øßàà7à<àMà eàpàvà}àU„àÚà áàááá)1á[á{á’‚áRâhâ0q♢â<ãSãeã mã yã‡ã"ŒãC¯ã+óã äœ)äÆåææ1éæ&ç%Bçhç9‡ç#Áç åçñç! è+è=è[è{èƒè™è è¨è=±è ïèOüèLéféé.™éÈéÐé ÓéÝéàéèéëé`êhêzêŽê“ê ©ê Êê&Öê ýê(ë1ë5ëJë)dëŽë£ë Áë3âë1ì*Hì"sì–ì¯ì#Ëìïìí)+íUí&]í„íŸíºíÏíïíî-$î-Rî€î–î±îÎîéî%ïÂ(ïcëï Oð [ð gðsð„ðœð¼ðÒð Ûðèðýðñ!ñ<ñ)Eñ/oñ)ŸñÉñ.åñ#ò@8ò'yò%¡òÇòÚòIêò 4ó?>ó3~ó-²ó(àó ô ô'ô9ôKôTôjô‚ôh‰ôòô õ)õGõ›]õ¦ùõ# ö'ÄöZìö¥G÷ í÷ ù%ùAùWùiùù …ù#‘ùµù9Óù úúú%5ú5[ú7‘úaÉú+ûo1û ¡û¬ûÃûØû~íûlüdrüƒ×ýÃ[ÿê 80J {†?¥åê / LVi|"”[·ûîáþXà$90^%ѵ3‡D»'^(9‡PÁ: VM ,¤ Ñ >î —- <Å  9! 8[ !” %¶  Ü ý  5 R Ve ¼ DÜ s!Y•%ï .N`s“¦¾ÖíNQR*¤Ïãö #'> f p}&“ ºHÇ)8KZkrJ Øäsç [f{ƒŒ #@2^sFÒeBcÂZ&K`Í[.kŠ]ömT<Âÿ1"M p}½‚@IX iv Š«º¿Þæíÿ  $ / = GQQ£ ¸ÂÕ+æN'︃Š9'íåøÛnþ/*t~(#š´ ‰§ Œ)'±^‚Â+´VD  ÚN=¤Úéˆ7æ{1·ÄZhà6ØÈú;CsÍx‹Tl%´mÆ_yHd*ðÃÄk²Ø,( bБà2³,ѯŠ$]»Ý…5V„ΪŜ½¤›P‚¹f¢<ó€Ò \ ß“£MMýÕï‘c:}ÙU#È’±Q€^†jG>¹˜Œñl܆09p —8̦M¿¶oA'•ƒIÙô?uU€¡¹}·|[zŒ:‘ÁõåL{À†ä`Ož– ؙ߬ã™ôÞJBRÿkÀÃ0‰êqù[ÌŸÍÔº„ ¾>ç²Ùw ¨‡y²v½mÄ×tÏu6¨r3f8P dýÓÑÓÁLhš5ÃKE¼Ó-Õ»gü­ê?.ÞAÇvÎúo·˜°Æ©=•iëZÌ;Fº¡Y¿ ˜T| C ™òK»ÂJ{—«ÉW]è>ª1Öráµx…¯(4î-«Ê\ŽlKU<)#„b*Â\ÊÇgC¢«ÁG®6Ч0S’Ýã¥4/fc2"Ågzøšä”.LQ‡½ºÀÍsËüeìq".)É£ÝÑO©¦a<D¡íóµ/Oî9cùœX¦Yÿ;žRŸ&¼jÆ-1©``Wб?ÛŽ®=ˆñ¥+£GÉVnæ~Ôakõ‰mnÕ×@®ÛËö³D­AWe‹“Y8×}ª|žav:Îrw›ßw¸ ›Ð ¯âz!Ú‹ËeÜX &Ï ¨ÒûtçƒòiE”•–¢s@þX7E‚Ò÷SâoN$µðÜŸÖPT°¥,¶ìp¸4³Ö¿—]q“ûF3áF¾§Zi[jxëö~@ _!QǶ7pHÏ"”÷R¼–œàyáÅBÊH­é+5¬ÞÔ‡âu_’I…Ž!dB°¤2bhȈ3$%¬èI %¾&^JSN Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Drive %s %11s bytes total %11s bytes available (battery is %d%% full) Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)(Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*-0.5-1.0-1.5-2.00.00.51.01.51.6x1152 x 8641280 x 9601x2.02.5x29 mm2x34 mm3x41 mm4x51 mm58 mm5x640 x 4806x7x8x9xACAC adapterAE-lockASIC Revision: %d.%d Album nameAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Anti-redeyeAnywhereApertureAutoAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off TimeAuto Power Off (minutes)Auto exposure lockAuto, red-eye reductionAutofocus error.Automatic Automatic exposure adjustment on previewAutomatic flash on captureAvailable memory: B/WBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery exhausted, camera off.Battery status: %s, AC Adapter: %s BeepBestBlack & WhiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlueBright+Bright-Brightness+Brightness-Brightness/ContrastBulb Exposure TimeBusyCameraCamera ConfigurationCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera SettingsCamera and Driver ConfigurationCamera busy. If the problem persists, please contact %s.Camera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera was already activeCamera was woken upCan't delete all images.Can't delete image %s.Cannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCaptureCapture type is not supportedCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card not supported.Card removed during access.Center-WeightedChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorCloudyColorColor ModeColor SettingsCommand can not be cancelled.Command order error.Communication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompressionConfigurationConfiguration for your FUJI cameraConnected to cameraContrast+Contrast-CopyrightCopyright (max. 20 characters)Corrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file.Could not detect any cameraCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Creative PC-CAM 300 Authors: Till Adam and: Miah Gregory Current Mode: Camera Mode Current Mode: Playback Mode CustomDD/MM/YYYYData has been corrupted.Date & TimeDate FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDay/Month/YearDaylightDebugDeepDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. Deleting image %s.Detected a "%s" aka "%s"Detected a '%s'.Digita Johannes Erdfelt Digital ZoomDigital zoomDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisconnecting camera.Do not display TV menuDownload program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...DriverDual IrisEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.EmptyEnglishErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationEverywhereExecute predefined command with parameter values.Expected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.ExposureExposure CompensationExposure MeteringExposure compensationExposure level on previewF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d FileFile '%s' could not be found in folder '%s'.File compressionFile existsFile not foundFile protected.File resolutionFile typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.FineFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware version: %d.%02d FisheyeFixedFlashFlash ModeFlash SettingFlash SettingsFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFluorescentFocusFocus ModeFocus positionFocusing error.ForceForce Flash Format card and set album name.Format compact flashFrames Taken : %4d FrenchFullGeneralGermanGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.GreenHighHigh (1152 x 872)High (good quality)Host Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?HyPictI/O in progressIDISO SpeedIconsIdleIllegal parameter.ImageImage %s is delete protected.Image & SoundImage AdjustmentImage QualityImage SizeImage height: %d Image number not valid.Image protected.Image size: %d Image type %d is not supported by this camera !Image type is not supportedImage width: %d In useIncandescentInfinityInfinity/Fish-eyeInformationInitializing CameraInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal memory: %d MB total, %d MB free. InvalidInvalid Value ( %d ) Iris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JPEGJapaneseKeep filename on uploadKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BrightnessLCD ModeLED ModeLanguageLens ModeLens direction does not match flash light Lens is not connected LightLight too dark.List all filesListing files in '%s'...Listing folders in '%s'...Loading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!Looking for camera ...Looks like a modem, not a cameraLowLow (576 x 436)Low (best quality)MM/DD/YYYYMacroManualMatrixMatthew G. Martin Based on fujiplay by Thierry Bousch MaximalMaximum number of Images: %d MediumMedium (1152 x 872)Medium (better quality)Memory card status (%d): %s Memory in camera: %d Mbit. MinimalMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Model: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s MonitorMonth/Day/YearNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName to set on card when formatting.NextNikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. NoNo Compact Flash Card detected No EXIF data available for %s.No SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card present.No memory card presentNo reason availableNo response from cameraNo space left on card.NoneNone selectedNormalNormal Not FullNot enough memory available on the memory cardNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOffOfficeOnOn, red-eye reductionOnly root folder is supported - you requested a file listing for folder '%s'.Operation ModeOperation cancelledOtherOther SettingsOther command executing.Out of memoryOut of memory: %d bytes needed.OutdoorOwner name changedPALPTP Access DeniedPTP Capture Already TerminatedPTP Device Prop Not SupportedPTP General ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk Parameter 1Parameter 2Parameter 3Path not absolutePersistent SettingsPhotos on camera: %d Picture SettingsPicturesPlayPlay modePort speedPresetPreview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProduct ID: %02x%02x Prohibit Flash RTC Status: %d Read-only file attributes like width and height can not be changed.ReadyReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRedRed eye flashRed-eye ReductionRemoteRequested information about picture %i (= 0x%x), but got information about picture %i backResetting protocol...ResolutionResolution SwitchResolution plus SizeRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. SD Card ID: %s SD memory: %d MB total, %d MB free. SDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Self TimerSelf Timer (next picture only)Self Timer TimeSending data...Sensor ID: %d.%d SepiaSequence 9Session-persistent SettingsSet clock in cameraShall the camera beep when taking a picture?SharpSharpnessShot SettingsShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed microseconds (0 auto)SiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SingleSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . SkylightSlide Show IntervalSlow SyncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SoftSome notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to the gphoto developer mailing list (in English) Sony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners SoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSpotSpot Metering ModeSpot-AFStandardStrobe error.Summary for Mustek MDC800: SuperFineSwitching Camera OffSystem error.TV Output FormatTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The requested port type (%i) is not supported by this driver.There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.This camera can not capture previews.This camera can not capture.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.This preview doesn't exist.Thumbnail height: %d Thumbnail size: %d Thumbnail width: %d Time formatTimeout even after 2 retries. Please contact %s.Too many retries failed.Total pictures captured: %d, Flashes fired: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Trying to contact camera...TungstenUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown modelUnknown model "%s"Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. Upload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...User canceled downloadVendor ID: %02x%02x Version: Version: %s Volatile SettingsWaiting for completion...Waiting...We expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite BoardWhite balanceWhite boardWhite levelWideWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.Year/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.ZoomZoom (in millimeters)a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autobatteryblack & whitecamera inactive for > 9 seconds, re-initing. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Initial dirent packet too short (only %i bytes)canon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_set_file_attributes: canon_usb_dialogue failedcolorcoolshot library vcould not change owner namecould not set timeexternallyfinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)in fill modeinternallyjamcam library vlock keys failed.low (320x240)menuno status reported.nonenormalnot available: %soffonon batteryplaypower OKpower badreadyrecordrecursive calls are not supported by the sierra driver! Please contact %s.spca50x library vsuperfinesx330z is USB onlytime setunable to guess initial CRC value unknown (0x%02x)warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2 2.1.4 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2004-05-11 13:12+0200 Last-Translator: Quique Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.3.1 Identificación de la cámara: Modelo: %s Propietario: %s Estado de energía: %s Información del disco Flash: %s Hora: %s Disco %s %11s bytes en total %11s bytes disponibles (la batería está cargada al %d%%) Memoria total es %8d bytes. Memoria libre es %8d bytes. Cuenta de ficheros: %d%i (desconocida)se han recibido %i bytes de un formato de imágen desconocido. Por favor, escriba a %s y pida ayuda.no se pudieron borrar %i imágenes porque están protegidas%lld (desconocida)%s (hora de la máquina %s%i segundos)Biblioteca (Traveler) SX330z (y otras cámaras Aldi). Incluso otros fabricantes como Jenoptik, Skanhex, Maginon deberían funcionar. Por favor envíe informes de errores y comentarios. Dominik Kuhlen * Los pequeños problemas de imagen o de comunicación frecuentemente se deben a una batería con poca carga. * Las imágenes capturadas remotamente en esta cámara se almacenan en memoria temporal y no en la tarjeta de memoria Flash. * El control de la exposición cuando se capturan imágenes puede configurarse manualmente o ponerse en modo automático. * La calidad de la imagen es actualmente menor de lo que podría ser. *DESCONOCIDO*-0,5-1,0-1,5-2,00,00,51,01,51.6x1152 x 8641280 x 9601x2,02.5x29 mm2x34 mm3x41 mm4x51 mm58 mm5x640 x 4806x7x8x9xCATransformador de CABloqueo AERevisión del ASIC: %d.%d Nombre del álbumSe ha producido un error en la biblioteca de entrada-salida ('%s'): %sSe ha producido un error desconocido. Por favor, contacte con %s.Anti ojos rojosEn cualquier lugarAperturaAutomáticaApagado automático (en el campo) (en segundos)Apagado automático (en la máquina) (en segundos)Hora de apagado automáticoApagado automático (en minutos)Bloqueo de exposición automáticaAutomática, reducción de ojos rojosError de autofocus.Automática Ajuste automático de la exposición en la previsualizaciónFlash automático en la capturaMemoria disponible: B/NFin de la transmisión (EOT) no válidoCaracteres no válidos (0x%x, 0x%x). Por favor, contace con %s.Suma de comprobación incorrecta - se ha recibido 0x%02x, se esperaba 0x%02x.Datos incorrectos - se ha recibido 0x%02x, se esperaba 0x%02x o 0x%02x.Datos incorrectos - se ha recibido 0x%02x, se esperaba 0x%02x.Exposición incorrecta (probablemente no haya luz suficiente)Valor incorrecto para el estado de la lente %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Ingeniería inversa de los datos de imagen por: Jeff Laing Implementado utilizando documentos encontrados en la web. Permiso concedido por Vision.Las baterías están descargadas.Las baterías están bien.BateríaNivel de batería: %s Cantidad de imágenes: %d Capacidad mínima restante: %d Ocupado: %s Cargando el flash: %s Estado de la lente: Se ha agotado la batería, cámara apagada.Estado de la batería: %s, transformador CA: %s PitidoMejorBlanco y NegroPizarra negraBlanco y negroPizarra negraBlanco y negroParpadeoAzul (B)Brillo+Brillo-Brillo+Brillo-Brillo/ContrasteTiempo de exposición de la lámparaOcupadoCámaraConfiguración de la cámaraIdentificador de la cámara: %s Biblioteca para la cámara Kodak DC215 Zoom. Michael Koltan Opciones de la cámaraConfiguración del controlador y de la cámaraLa cámara está ocupada. Si el problema persiste, por favor contacte con %s.La cámara no ha aceptado los parámetros. Por favor, contacte con %s.Falta la función 'camera_init' en el controlador de la cámara '%s'.La cámara tiene memoria. La cámara está en un modo incorrecto. Por favor, contacte con %s.La cámara no está preparada, get_battery ha fallado: %sLa cámara no está preparada, han fallado varios intentos de petición de identificación de la cámara: %sLas fotos de la cámara son monocromáticas. Ahorro de energía de la cámara (segundos)La cámara se negó 3 veces a mantener una conexión abierta.La cámara ha rechazado el mandato.La cámera se ha reiniciado sola.La cámara ha enviado un byte 0x%02x no esperado.La cámara soporta miniaturas. La cámara soporta vídeo. La cámara soporta los formatos de vídeo: Hora de la cámara: %s %s Cámara no disponibleLa cámara ya estaba activaSe ha activado la cámaraNo se pueden borrar todas las imágenes.No se puede borrar la imagen %s.No se puede obtener la cantidad de memoria disponibleNo se puede obtener la capacidad de la bateríaNo se puede obtener el nombre del directorio que contiene las imágenesCapturaTipo de captura no soportadoEstado de la tarjeta: No se puede escribir la tarjeta.La tarjeta no está formateadaLa tarjeta no está abiertaLa tarjeta está abiertaLa tarjeta está protegida contra escritura.No se soporta la tarjeta.Se ha quitado la tarjeta durante el acceso.Centrado en el medioCambiando la velocidad... espere...CarácterCarácter y sonidoCargandoError de la suma de comprobaciónNubladoColorModo de colorConfiguración del colorNo se puede cancelar el mandato.Error en el orden de los mandatos.Error de comunicación 1Error de comunicación 2Error de comunicación 3Tiempo de espera superado incluso después de 2 reintentos. Por favor, contacte con %s.Se ha detectado una tarjeta Compact Flash Tarjeta CompactFlashCompresiónConfiguraciónConfiguración para su cámara FUJIConectado a la cámaraContraste+Contraste-CopyrightCopyright (máx. 20 caracteres)Datos corruptosNo se pueden asignar %i byte(s) para descargar la foto.No se pueden asignar %i byte(s) para descargar la miniatura.No se pueden aplicar las opciones de USBNo se puede contactar con la cámara.No se puede crear el directorio \DCIM.No se puede crear el directorio de destino.No se ha podido crear el directorio %s.No se ha podido crear el directorio.No se puede borrar el fichero.No se ha podido detectar cámara algunaNo se puede establecer contacto inicial con la cámaraNo se ha podido extraer la miniatura JPEG de los datos: Los datos no están en JFIFNo se ha podido extraer la miniatura JPEG de los datos: No hay comienzo/finNo se ha podido encontrar el fichero '%s'.No se puede encontrar los datos de localización en '%s'No se puede obtener información del disco: %sNo se puede obtener el nombre del disco: %sNo se puede obtener la letra del disco FlashNo se ha podido obtener el registro %i. Por favor, contacte con %s.No se puede obtener el registro de cadena %i. Por favor, contacte con %s.No se ha podido inicializar el envío (la cámara ha respondido con 0x%02x).No se ha podido cargar el controlador necesario de la cámara '%s' (%s).No se puede abrir '%s'.No se ha podido eliminar el directorio %s.No se ha podido eliminar el directorio.No se puede reinicializar la cámara. No se ha podido ajustar la velocidad a %i (la cámara ha respondido con %i).No se ha podido transmitir el paquete (código de error %i). Por favor, contacte con %s.No se ha podido transmitir el paquete incluso después de varios intentos.No se puede enviar, no hay disponible ninguna carpeta libre Existe la carpeta 999CANON y contiene una imagen AUT_9999.JPG.No se puede leer desde el fichero "%s"Creative PC-CAM 300 Autores: Till Adam y: Miah Gregory Modo actual: Modo de cámara Modo actual: Modo de reproducción PersonalizadaDD/MM/AAAALos datos se han corrompido.Fecha y horaFormato de la fechaFecha y horaFecha y hora (GMT)Mostrar fechaFecha: %i/%02i/%02i %02i:%02i:%02i Imágenes tomadas: %i Imágenes libres: %i Versión del software: %s Velocidad (baudios): %s Memoria: %i megabytes Modo de la cámara: %s Calidad de la imagen: %s Configuración del flash: %s Información: %s Temporizador: %s LCD: %s Apagado automático: %i minutos Fuente de energía: %sDía/Mes/AñoLuz naturalDepurarProfundoControlador sierra predeterminado: Este es el controlador sierra predeterminado, debería poder soportar la descarga y navegación de fotos en su cámara. La configuración (o preferencias) de la cámara están basadas en la Olympus 3040, y es posible que estén incompletas. Si verifica que los ajustes de configuración están completos para su cámara, o puede contribuir código para soportar la configuración completa, por favor contacte con la lista de distribución de los desarrolladores. Borrando la imagen %s.Se ha detectado una "%s" también conocida como "%s"Se ha detectado una '%s'.Digita Johannes Erdfelt Zoom digitalZoom digitalModo Examinar el directorio - escrito por Scott Fritzinger .El directorio existeDirectorio no encontradoDesconectando la cámara.No mostrar el menú TVPrograma de descarga para la cámara Polaroid DC700. Escrito originalmente por Ryan Lantzer para gphoto-4.x. Adaptado para gphoto2 por Lutz Mueller .Programa de descarga para varias cámaras Polaroid. Escrito originalmente por Peter Desnoyers , y adaptado para gphoto2 por Nathan Stenzel y Lutz Mueller . La prueba con una Polaroid 640SE fue realizada por Michael Golden .Descargando %s.Descargando '%s'...Descargando los datos EXIF...Descargando audio...Descargando los datos...Descargando fichero...Descargando la imagen %s.Descargando imagen...Descargando película...Descargando la miniatura...Descargando...ControladorDoble diafragmaError de la suma de validación de la EEPROM.ERROR: %d es demasiado grandeERROR: se ha detectado una condición de error fatal, no se puede continuar ERROR: formato erróneo del mensaje.ERROR: exceso de mensajesERROR: fuera de secuencia.ERROR: mensaje inesperadoERROR: mensaje2 inesperado.ERROR: tipo de paquete inesperado.VacíaInglésErrorError al capturar imagenError al cambiar la velocidadError al cambiar la velocidad.Error al borrar la miniatura asociadaError al borrar el ficheroError esperando acuse de recibo (ACK) durante la inicializaciónEn todos ladosEjecutar mandato predefinido con los valores de los parámetros.Se esperaban %i bytes, se han recibido %i. Por favor, informe de este error a %s.Se esperaba %i, se ha recibido %i. Por favor, informe de este error a %s.Se esperaban 32 bytes, se han recibido %i. Por favor, contacte con %s.ExposiciónCompensación de la exposiciónMedida de la exposiciónCompensación de la exposiciónNivel de exposición en la previsualizaciónF2F2.3F2.8F4F5.6F8ERROR FATAL: valor CRC inicial para la longitud %d desconocido FLASH: Ficheros: %d FicheroNo se ha podido encontrar el fichero '%s' en la carpeta '%s'.Compresión del ficheroEl fichero existeFichero no encontradoFichero protegido.Resolución del ficheroTipo de ficheroEl envío de fichero ha fallado.El fichero era demasiado grande. Puede tener que apagar su cámara y volver a encenderla antes de enviar más ficheros.FinaRevisión del firmware: %8sRevisión del Firmware: %8s Imágenes: %i Memoria total: %ikB Memoria libre: %ikB Revisión del firmware: %d.%d Revisión del firmware: %d.%02d Ojo de pezFijoFlashModo del flashConfiguración del flashOpciones del flashLuz del flash: AutomáticaLuz del flash: Automática (reducción de ojos rojos)Luz del flash: NoLuz del flash: SíLuz del flash: Sí (reducción de ojos rojos)Luz del flash: indefinidaFlashPixFluorescenteFocoModo del enfoquePosición del focoError de enfoque.ForzarForzar el flash Formatear la tarjeta y establecer el nombre del álbum.Formatear compact flashFotogramas tomados: %4d FrancésLlenaGeneralAlemánObteniendo la configuración...Obteniendo los datos...Obteniendo la lista de ficheros...Obteniendo fichero...Obteniendo información de %i ficheros...Obteniendo miniaturas...Se ha obtenido el resultado inesperado 0x%x. Por favor, contacte con %s.Verde (G)AltaAlta (1152 x 872)Alta (buena calidad)Modo de conexión: %s Corrección de la exposición: %s Datos de la exposición: %d Fecha válida: %s Fecha: %d/%02d/%02d %02d:%02d:%02d Temporizador: %s Parámetros de calidad: %s Modo de reproducción/grabación: %s Identificador de tarjeta válido: %s Identificador de tarjeta: %d Modo del flash: Ahorro de energía de la máquina (segundos)¿Cuánto tiempo pasará hasta que la cámara se apague cuando esté conectada a la computadora?¿Cuánto tiempo pasará hasta que la cámara se apague cuando no esté conectada a la computadora?¿Cuanto tiempo debería pasar hasta que la cámara se apague?HyPictE/S en cursoIDVelocidad ISOIconosLibreParámetro no válido.ImagenLa imagen %s está protegida contra borrado.Imagen y sonidoAjuste de la imagenCalidad de imagenTamaño de la imagenAltura de la imagen: %d El número de la imagen no es válido.Imagen protegida.Tamaño de la imagen: %d ¡Esta cámara no soporta el tipo de imagen %d!Tipo de imagen no soportadoAnchura de la imagen: %d En usoIncandescenteInfinitoInfinito/Ojo de pezInformaciónInicializando la cámaraerror interno #1 en get_file_func() (%s línea %i)Error interno (1).Error interno (2).Memoria interna: %d MB total, %d MB libres. No válidaValor no válido (%d) Error del iris.ItalianoJD11 Marcus Meißner Controlador para la cámara Jenoptik JD11. Ingeniería inversa del protocolo usando WINE e IDA.JPEGJaponésMantener el nombre de fichero al enviarProblemas conocidos: 1. Si la Kodak DC3200 no recibe un mandato al menos cada 10 segundos, expirará el tiempo concedido, y tendrá que ser reiniciada. Si nota que la cámara no responde, simplemente vuelva a seleccionarla. Esto provocará la reinicialización.Problemas conocidos: Si se producen problemas de comunicaciones, reinicialice la cámara y vuelva a iniciar la aplicación. El controlador no es lo suficientemente robusto como para recuperarse de estas situaciones, especialmente si se produce un problema y la cámara no se apaga adecuadamente a velocidades mayores a 9600.Biblioteca para la cámara Kodak DC120 Scott Fritzinger Biblioteca para la cámara Kodak DC120 (a petición popular).Biblioteca para la cámara Kodak DC240 Scott Fritzinger y Hubert Figuiere Biblioteca para la cámara Kodak DC240, DC280, DC3400 y DC5000. Reescrito y actualizado para gPhoto2.Controlador de la Kodak DC3200 Donn Morrison Sus preguntas y comentarios serán bienvenidos.Configuración de KonicaKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Soporte para la Konica Q-M150 francesa.Bibilioteca Konica Lutz Müller Soporta todas las cámaras Konica y varias cámaras HP.CoreanoLCDApagado automático del LCD (en segundos)Apagado automático del LCD (en segundos)Brillo del LCDModo LCDModo LEDIdiomaModo de la lenteLa dirección de la lente no coincide con la luz del flash La lente no está conectada SuaveLuz demasiado oscura.Lista de todos los ficherosListando los ficheros que hay en '%s'...Listado de las carpetas que hay en '%s'...Cargando los controladores para la cámara desde '%s'...LocalLocalizaciónDatos de localización corruptos.Datos de localización demasiado largos.¡Fichero de localización demasiado largo!Buscando la cámara...Parece un módem, no una cámaraBajaBaja (576 x 436)Baja (la mejor calidad)MM/DD/AAAAMacroManualMatrizMatthew G. Martin Basado en fujiplay por Thierry Bousch MáximoCantidad máxima de imágenes: %d MediaMedia (1152 x 872)Media (mejor calidad)Estado de la tarjeta de memoria (%d): %s Memoria en la cámara: %d Mbit. MínimoBiblioteca para la cámara Minolta Dimage V %s Gus Hartmann Agradecimientos especiales a Minolta por las especificaciones.Modelo: Minolta Dimage V (%s) Revisión de hardware: %s Revisión de firmware: %s Modelo: Modelo: %s Memoria: %d byte(s) de %d disponiblesModelo: %s Número de serie: %s, Versión del hardware: %i.%i Versión del software: %i.%i Versión del software de prueba: %i.%i Nombre: %s, Fabricante: %s Modelo: %x, %x, %x, %xModelo: Kodak %s MonitorMes/Día/AñoNO RECONOCIDONTSCParámetro NULL "%s" en %s línea %iEl nombre "%s" de la cámara no coincide con ninguna cámara conocidaNombre a poner a la tarjeta al formatearla.SiguienteNikon Coolpix 880: Configuración (o preferencias) de la cámara: El zoom óptico no funciona debidamente. No todos los ajustes de configuración se pueden leer o escribir debidadamente, por ejemplo, el ajuste fino del balance de blancos, y la configuración del idioma. Ponga la cámara en modo 'M' para poder ajustar la velocidad del obturador. Nikon Coolpix 995: La configuración (preferencias) de la cámara para esta cámara no está completa, contacte con la lista de desarrolladores de gphoto si desea contribuir al desarrollo de este controlador. La descarga debería funcionar correctamente. NoNo se ha detectado ninguna tarjeta Compact Flash No hay datos EXIF disponibles para %s.No hay insertada ninguna tarjeta SD. No hay respuesta de la cámara.No se ha podido encontrar ningún fichero de audio para %sManual de la cámara no disponible. Sin tarjetaNo hay ninguna tarjeta.No hay ninguna tarjeta de memoriaRazón desconocidaNo hay respuesta de la cámaraNo queda espacio en la tarjeta.NingunoNinguno selecccionadoNormalNormal No llenaNo hay suficiente memoria disponible en la tarjeta de memoriaNo utilizadaNota: no hay ninguna tarjeta de memoria, algunos valores pueden no ser válidos Cantidad de imágenes: %d Cantidad de imágenes: %dCantidad de imágenes: %d Cantidad de fotos: %i Versión del firmware: %sAPAGADAOKENCENDIDANoOficinaSíSí, reducción de ojos rojosSólo se soporta el directorio raíz, - usted ha pedido una lista de ficheros del directorio '%s'.Modo de operaciónOperación canceladaOtroOtras configuracionesSe está ejecutando otro mandato.Sin memoriaFuera de memoria: %d bytes necesarios.ExterioresSe ha cambiado el nombre del propietarioPALPTP. Acceso denegadoPTP. Captura ya terminadaPropiedad de dispositivo PTP no soportadaError general de PTPPTP. Transferencia incompletaPTP. Formato de código no válidoPTP. Formato de propiedad del dispositivo no válidoPTP. Valor de propiedad del dispositivo no válidoPTP. Código de formato de objeto no válidoPTP. Manejador de objeto no válidoPTP. Parámetro no válidoPTP. Objeto padre no válidoPTP. ID de almacenamiento no válidoPTP ID de transacción no válidoPTP. Sin miniatura presentePTP. No hay información válida del objetoPTP ok.PTP. Objeto protegido contra escrituraOperación PTP no soportadaParámetro PTP no soportadoPTP. Borrado parcialPTP. Falló la auto-comprobaciónPTP. La sesión ya está abiertaSesión PTP no abiertaPTP. No se soporta especificación por formatoPTP. No se soporta especificación del destinoPTP. Almacén completoPTP. Almacén no disponiblePTP. Almacén de sólo lecturaPTP. Transacción canceladaError no definido de PTPPTP. Código de fabricante desconocidoBiblioteca gPhoto para la cámara Panasonic DC1000 Mariusz Zynel Basada en el programa dc1000 escrito por Fredrik Roubert y Galen Brooks .Controlador para Panasonic PV-L859-K/PV-L779-K Palmcorder Andrew Selkirk Parámetro 1Parámetro 2Parámetro 3Ruta no absolutaParámetros persistentesFotos que hay en la cámara: %d Opciones de la imagenImágenesReproducciónModo de reproducciónVelocidad del puertoPreconfiguradoPrevisualizar la miniaturaAnteriorProblema durante la descarga de la imagenProblema al obtener la información de la imagenProblema al obtener el número de imágenesProblema al abrir el puertoProblema al leer la imagen de la memoria flashProblema al reinicializar la cámaraProblema al configurar la velocidad de comunicación de la cámaraProblema al tomar imagen en tiempo realIdentificador del producto: %02x%02x Prohibir el flash Estado RTC: %d Los atributos de sólo lectura como anchura y altura no se pueden cambiar.PreparadaRecibida respuesta inesperada (%i). Por favor, contacte con %s.Se han recibido datos inesperados (0x%02x, 0x%02x).Se ha recibido un encabezado no esperado (%i)Se ha recibido una respuesta no esperadaRecibiendo datos...GrabaciónModo de grabaciónModo de grabaciónRojo (R)Flash anti ojos rojosReducción de ojos rojosRemotaSe ha pedido información sobre la imagen %i (= 0x%x), pero se ha obtenido información sobre la imagen %iReinicializando el protocolo...ResoluciónInterruptor de selección de la resoluciónResolución más tamañoControlador Ricoh / Philips por Lutz Mueller , Martin Fischer , basado en el controlador de Bob Paauwe Ricoh Caplio G3. Marcus Meissner Ingeniería inversa usando USB Snoopy, mirando la imagen de actualización del firmware e imaginación salvaje. Identificador de la tarjeta SD: %s Memoria SD: %d MB total, %d MB libres. SDRAM: Ficheros: %d Imágenes: %4d Películas: %4d Espacio usado: %8d Espacio libre: %8d STV0674 Vincent Sanders Controlador para cámaras que utilizan el procesador ASIC STV0674. Ingeniería inversa del protocolo usando una SnoopyPro STV0680 Adam Harrison Controlador para cámaras que utilizan el procesador ASIC STV0680. Protocolo basado en ingenería inversa utilizando CommLite Beta 5 Carsten Weinholz Extendido para las Aiptek PenCam y otras cámaras USB de modo STM doble.TemporizadorTemporizador (sólo la foto siguiente)Hora del temporizadorEnviando datos...ID del sensor: %d.%d SepiaSecuencia 9Parámetros de la sesión persistenteAjustar el reloj de la cámara¿La cámara debe emitir un pitido cuando se tome una foto?NítidaNitidezConfiguración de la tomaVelocidad del obturador (en segundos)Velocidad del obturador (microsegundos, 0 automática)Velocidad del obturador en microsegundos (0 automática)SiPix Web2 Marcus Meissner Controlador para acceder la cámara SiPix Web2.ÚnicaControlador Sipix StyleCam Blink Vincent Sanders Marcus Meissner . Luz de díaIntervalo del carruselSincronización lentaSincronización lentaSmal Ultrapocket Lee Benfield Controlador para acceder a la cámara Smal Ultrapocket, y versiones OEM (slimshot)SuaveAlgunas notas acerca de las cámaras Epson: - Ciertos parámetros no se pueden controlar remotamente: * zoom * enfoque * configuración personalizada del balance de blancos - La configuración fue hecha mediante ingeniería reversa con una cámara PhotoPC 3000z, si su cámara se comporta de manera diferente, por favor envíe un correo a %s (en inglés) Algunas notas acerca de las cámaras Epson: - Ciertos parámetros no se pueden controlar remotamente: * zoom * enfoque * la configuración de balance de blancos pesonalizada - La configuración fue hecha con ingeniería inversa con una cámara PhotoPC 3000z, si su cámara se comporta de manera diferente, por favor envíe un correo a la lista de desarrolladores de gphoto (en inglés) Soporte de las cámaras digitales Sony DSC-F1 M. Adam Kendall Basado en la interfaz CLI chotplay de Ken-ichi Hayashi Adaptado a gPhoto2 por Bart van Leeuwen Biblioteca gPhoto para las Sony DSC-F55/505 Soporta Sony MSAC-SR1 y el Memory Stick que utiliza la DCR-PC100 Escrita originalmente por Mark Davies Adaptada a gPhoto2 por Raymond Penners SonidoControlador Soundvision Vince Weaver Espacio restante: Alta: %d, Media: %d, Baja: %d CastellanoNo se soporta la velocidad %i.Esta cámara no soporta recibir a velocidades superiores a 57600SpotModo de medición de puntoSpot-AFEstándarError del estrosboscopio.Resumen para Mustek MDC800: SuperFinaApagando la cámaraError del sistema.Formato de salida de TVProbando diferentes velocidades...La "cámara" 'Examinar el directorio' le permite indexar las fotos que hay en su disco duro.La cámara JD11 funciona bastante bien con este controlador. Se necesita una interfaz RS232 a 115 kbps para transferir las imágenes. El controlador le permite obtener - miniaturas (64x48, formato PGM) - imágenes completas (640x480, formato PPM) La cámara Kodak DC120 utiliza el formato de fichero KDC para almacenar las imágenes. Si desea ver las imágenes que transfiere desde la cámara, necesitará descargar el programa "kdc2tiff". Está disponible en http://kdc2tiff.sourceforge.netEl controlador para la Samsung digimax 800k fue escrito por James McKenzie . Lutz M"uller lo adaptó a gphoto2. Marcus Meissner lo corrigió y mejoró.El nivel de la batería de la cámara es muy bajo (%d%%). Se ha interrumpido la operación.La cámara no ha aceptado el mandato.La cámara no acepta '%s' como nombre de fichero.La cámara no soporta la velocidad %i.La cámara acaba de enviar un error que todavía no ha sido descubierto. Por favor, informe de lo siguiente a %s con información adicional acerca de cómo ha obtenido este error: (0x%x,0x%x). ¡Muchísimas gracias!La cámara ha enviado más bytes que lo esperado (%i)La cámara ha enviado sólo %i byte(s), pero se necesitan al menos %i.El fichero a enviar tiene longitud nulaLa longitud del nombre de fichero no debe exceder de 12 caracteres ('%s' tiene %i caracteres).Este sistema de ficheros no soporta el envío de ficheros.El sistema de ficheros no soporta la obtención de información sobre los ficherosEl sistema de ficheros no soporta la obtención de ficherosEl sistema de ficheros no soporta la modificación de la información sobre los ficherosEl primer byte recibido (0x%x) no es válido.La ruta '%s' no es absoulta.Este controlador no soporta el tipo de puerto solicitado (%i).Actualmente hay una operación en curso. Esta cámara sólo soporta una operación a la vez. Por favor, espere a que haya finalizado la operación en curso.Esta cámara no permite la pre-visualización de las capturas.Esta cámara no puede capturar.Esta cámara no brinda información acerca del controlador.Esta cámara no soporta la configuración de las opciones.Esta cámara no soporta resúmenes.Esta biblioteca se ha probado con una cámara Kodak DC 215 Zoom. Puede que también funcione con las cámaras DC 200 y DC 210. Si tiene alguna de esas cámaras, por favor envíe un mensaje a koltan@gmx.de para comentarme si tiene algún problema con esta biblioteca de controlador o si todo va bien.Esta previsualización no existe.Altura de la miniatura: %d Tamaño de la miniatura: %d Anchura de la miniatura: %d Formato de la horaTiempo de espera superado incluso después de 2 reintentos. Por favor, contacte con %s.Demasiados reintentos fallidos.Cantidad total de fotos capturadas: %d, iluminaciones del flash: %d La transmisión del paquete superó el tiempo de espera incluso después de %i reintentos. Por favor, contacte con %s.La transmisión superó el tiempo de espera incluso después de 2 reintentos. Abandonando...Intentando contactar con la cámara...TungstenoError desonocido de la biblioteca de la cámaraError desconocidoError desconocido.Tipo de fichero %i desconocido.Modelo desconocidoModelo desconocido "%s"Respuesta no reconocidaTarjeta no convenienteMandato no soportado.Proporcionado tipo de puerto no soportado %i = 0x%x. Inicialización imposible.Tipo de puerto no soportado: %d. Este controlador sólo funciona con cámaras USB. Sólo se soporta el envío a la carpeta '%s'Enviando fichero...Enviando imagen...Enviando la imagen: %s.Enviando...El usuario ha cancelado la descargaIdentificador del fabricante: %02x%02x Versión: Versión: %s Parámetros temporalesEsperando que finalice la operación...Esperando...Se esperaban 0x%x pero se han recibido 0x%x. Por favor, contacte con %s.DébilBalance de blancosPizarra blancaBalance de blancosPizarra blancaNivel de blancosAmplioProtegida contra escrituraSecuencia de escape incorrecta: se esperaba 0x%02x, se ha recibido 0x%02x.Año/Mes/DíaSíHa estado intentando borrar '%s' de la carpeta '%s', pero el sistema de ficheros no soporta el borrado de ficheros.AmpliaciónZoom (en milímetros)transformador CAagfa_cl20 El equipo del controlador de Agfa CL20 para Linux Escríbanos a cl20@poeml.de Visítenos en http://cl20.poeml.de automáticabateríablanco y negrocámara inactiva por más de 9 segundos, volviendo a inicializar. canon_int_capture_image: la llamada final a canon_usb_list_all_dirs() ha fallado con estado %icanon_serial_get_dirents: No se han podido asignar %i bytes de memoriacanon_serial_get_dirents: No se ha podido redimensionar el búfer de entradas de directorio a %i bytescanon_serial_get_dirents: Fallo al leer otra entrada de directoriocanon_serial_get_dirents: Paquete inicial de entradas de directorio demasiado corto (sólo %i bytes)canon_serial_get_dirents: Demasiadas entradas de directorio, se debe de estar en un bucle.canon_serial_get_dirents: Se ha recibido una entrada de directorio truncadacanon_serial_get_dirents: canon_serial_dialogue ha fallado al obtener las entradas de directoriocanon_usb_get_dirents: la carga no cabe en el búfer, '%.96s' (truncado) es demasiado largo.canon_usb_get_dirents: canon_usb_long_dialogue ha fallado al obtener entradas de directorio, ha devuelto %icanon_usb_list_all_dirs: la carga no cabe en el búfer, '%.96s' (truncado) es demasiado largo.canon_usb_list_all_dirs: canon_usb_long_dialogue ha fallado al obtener entradas de directorio, ha devuelto %icanon_usb_set_file_attributes: canon_usb_dialogue ha falladocolorBiblioteca coolshot vno se ha podido cambiar el nombre del propietariono se ha podido configurar la horaexternamentefinagPhoto2 Mustek VDC-3500/Relisys Dimera 3500 Este software se creó con ayuda de información propietaria perteneciente a StarDot Technologies. Autor : Brian Beattie Contribuidores: Chuck Homic Conversión de las imágenes en bruto de la cámara a RGB Dan Fandrich Información sobre el protocolo, formato de imagen en bruto, y adaptación a gphoto2 biblioteca gsmart300 Till Adam Jerome Lodewyck Soporte para las cámaras digitales Mustek gSmart 300 basado en varios otros módulos camlib de gphoto2 y las especificaciones amablemente proporcionadas por Mustek. alta (640x480)en modo de cargainternamenteBiblioteca jamcam vha fallado el bloqueo de teclas.baja (320x240)menúno se ha informado del estado.ningunonormalno disponible: %sinactivaactivacon bateríaslecturaenergía OKenergía no-OKpreparadaescrituraEl controlador sierra no soporta llamadas recursivas. Por favor, contacte con %s.Biblioteca spca50x vsuperfinasx330z es sólo USBhora configuradano es posible suponer el valor CRC inicial desconocido (0x%02x)advertencia: CRC no comprobada (añada longitud %d, valor 0x%04x) ############ libgphoto2-2.5.9/po/nl.po0000644000175000001440000121050212623156273012114 00000000000000# Dutch translations for libgphoto2. # This file is distributed under the same license as the libgphoto2 package. # # "Tudi ti si le umetnost." # # Kurt De Bree , 2006. # Benno Schulenberg , 2008, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: libgphoto2-2.5.4\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-04-09 11:10+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" "Adc65-stuurprogramma\n" "Benjamin Moos " #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" "De camera lijkt geen CompactFlash-kaart te gebruiken.\n" "Helaas worden andere typen opslag nog niet ondersteund. :-(\n" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" "De camera heeft %d opnames gemaakt, en gebruikt een CompactFlash-kaart.\n" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "De Agfa CL20 Linux stuurprogramma-schrijvers!\n" " E-mail naar cl20@poeml.de \n" " Bezoek ons op http://cl20.poeml.de/" #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "Uw USB-camera heeft een Aox-chipset.\n" "Aantal kleine afbeeldingen = %i\n" "Aantal grote afbeeldingen = %i\n" "Aantal afbeeldingen = %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Generisch Aox-stuurprogramma\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "Uw USB-fotoframe heeft een AX203-chipset.\n" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "Fotoframes met een AX203-chip kunnen allerlei resoluties hebben.\n" "Het gphoto-stuurprogramma voor deze apparaten kan foto's van het\n" "fotoframe downloaden, ernaar uploaden, en ervan verwijderen." #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "AX203-stuurprogramma voor USB-fotoframes\n" "Hans de Goede \n" "Dit stuurprogramma kan foto's van het fotoframe downloaden,\n" "ernaar uploaden, en ervan verwijderen." #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 msgid "Picture Frame Configuration" msgstr "Fotoframeconfiguratie" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "Datum en tijd van fotoframe synchroniseren met PC" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "Aantal afbeeldingen: %i\n" "Firmware-versie: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Omgekeerde ontwikkeling van afbeeldingsdata door:\n" "Jeff Laing \n" "\n" "Geïmplementeerd met gebruik van documenten\n" "gevonden op het internet. Met permissie van Vision." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "Kan map %s niet aanmaken." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "Kan map %s niet verwijderen." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "Vergrendelen van toetsen is mislukt." #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*ONBEKEND*" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image: eerste canon_usb_list_all_dirs() is() is mislukt " "met status %li" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image: laatste canon_usb_list_all_dirs()() is mislukt met " "status %i" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "Naam '%s' (%li tekens) is te lang, maximum 30 tekens toegestaan." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "Kleine letters in %s zijn niet toegestaan." #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory: ERROR: eerste melding te kort (%i < minimum %i)" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_directory: Einde van het pakket bereikt tijdens onderzoek van " "het eerste dirent." #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "canon_int_list_directory: afgekapte mapingang tegengekomen" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Bestand is beveiligd." #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_get_info_func: ERROR: eerste melding te kort (%i < minimum %i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "" "Kan het JPEG-miniatuurvoorbeeld niet uit de data extraheren: geen begin/einde" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "" "Kan het JPEG-miniatuurvoorbeeld niet uit de data extraheren: data is geen " "JFIF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "NULL parameter \"%s\" in %s regel %i" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "Kan het poorttype %i (alias 0x%x) in %s regel %i niet behandelen." #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "FATALE FOUT: initiële CRC-waarde voor lengte %d is onbekend\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "kan de initiële CRC-waarde niet raden\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "waarschuwing: CRC is niet gecontroleerd (lengte %d, waarde 0x%04x) " "##########\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "Compatibiliteitsmodus" #: camlibs/canon/library.c:98 msgid "Thumbnail" msgstr "Miniatuur" #: camlibs/canon/library.c:99 msgid "Full Image" msgstr "Volledig beeld" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "Bulb" #: camlibs/canon/library.c:216 msgid "Auto focus: one-shot" msgstr "Autofocus: één opname" #: camlibs/canon/library.c:217 msgid "Auto focus: AI servo" msgstr "Autofocus: AI-servo" #: camlibs/canon/library.c:218 msgid "Auto focus: AI focus" msgstr "Autofocus: AI-focus" #: camlibs/canon/library.c:219 msgid "Manual focus" msgstr "Handmatige focus" #: camlibs/canon/library.c:224 msgid "Beep off" msgstr "Piep uit" #: camlibs/canon/library.c:225 msgid "Beep on" msgstr "Piep aan" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 msgid "Flash off" msgstr "Flits uit" #: camlibs/canon/library.c:231 msgid "Flash on" msgstr "Flits aan" #: camlibs/canon/library.c:232 msgid "Flash auto" msgstr "Flits auto" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "AUTO" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "P" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "Tv" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "Av" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "M" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "" #: camlibs/canon/library.c:267 msgid "Manual 2" msgstr "Handmatig 2" #: camlibs/canon/library.c:268 msgid "Far scene" msgstr "Grote afstand" #: camlibs/canon/library.c:269 msgid "Fast shutter" msgstr "Korte sluitertijd" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "Lange sluitertijd" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "Nachtopname" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "Grijswaarden" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Sepia" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 msgid "Portrait" msgstr "Portret" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Punt" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Macro" #: camlibs/canon/library.c:277 msgid "BW" msgstr "Z-W" #: camlibs/canon/library.c:278 msgid "PanFocus" msgstr "" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "Levendig" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 msgid "Neutral" msgstr "Neutraal" #: camlibs/canon/library.c:282 msgid "Long shutter" msgstr "Lange sluitertijd" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "Supermacro" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "Gebladerte" #: camlibs/canon/library.c:285 msgid "Indoor" msgstr "Binnenshuis" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "Vuurwerk" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "Strand" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "Onderwater" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "Sneeuw" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "Kinderen en dieren" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "Nachtopname" #: camlibs/canon/library.c:292 msgid "Digital macro" msgstr "Digitale macro" #: camlibs/canon/library.c:293 msgid "MyColors" msgstr "" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "Foto in film" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "RAW" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "RAW 2" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "Kleine, normale JPEG" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "Kleine, fijne JPEG" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "Gemiddelde, normale JPEG" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "Gemiddelde, fijne JPEG" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "Grote, normale JPEG" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "Grote, fijne JPEG" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "RAW + kleine, normale JPEG" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "RAW + kleine, fijne JPEG" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "RAW + gemiddelde, normale JPEG" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "RAW + gemiddelde, fijne JPEG" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "RAW + grote, normale JPEG" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "RAW + grote, fijne JPEG" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" "Dit is het stuurprogramma voor Canon PowerShot, Digital IXUS, IXY Digital,\n" " en EOS digitale camera's in hun eigen (soms \"normaal\" genoemde) modus.\n" " Het ondersteunt ook een klein aantal digitale camcorders van Canon met\n" " de mogelijkheid tot het opnemen van stilstaande beelden.\n" "Het bevat code voor communicatie via een seriële poort of USB-verbinding,\n" " maar (nog) niet voor IEEE 1394 (Firewire).\n" "Het ondersteunt meer dan 70 modellen, zowel oudere zoals de PowerShot A5 en\n" " Pro70 uit 1998, en nieuwere zoals de PowerShot A510 en EOS 350D uit 2005.\n" "Het is niet gecontroleerd voor de EOS 1D of EOS 1Ds.\n" "Bij de A50 kan het gebruik van 115200 bps effectief langzamer zijn dan het\n" " gebruik van 57600 bps.\n" "Als u veel seriële transmissiefouten ervaart, probeer uw computer dan zo\n" " inactief mogelijk te houden (dat wil zeggen geen schijfactiviteit).\n" #: camlibs/canon/library.c:497 #, c-format msgid "Camera unavailable: %s" msgstr "Camera is onbeschikbaar: %s" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Uitschakelen van camera" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Fout bij de beeldopname" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Kan de schijfnaam niet vinden: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Geen reden voorhanden" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Kan de schijfinformatie niet vinden: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "**Interne fout** #1 in get_file_func() (%s line %i)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "Er is geen geluidsbestand gevonden voor %s" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " Schijf %s\n" " %11s bytes totaal\n" " %11s bytes beschikbaar" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "netadapter" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "op accu" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "voeding is OK" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "voeding niet OK" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "niet beschikbaar: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (computertijd %s%i seconden)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Camera-identificatie:\n" " Model: %s\n" " Eigenaar: %s\n" "\n" "Status van voeding: %s\n" "\n" "Informatie over Flash-kaart:\n" "%s\n" "\n" "Tijd: %s\n" #: camlibs/canon/library.c:1145 msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Canon PowerShot-stuurprogramma door:\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5-toevoegingen door:\n" " Ole W. Saastad\n" "Verdere verbeteringen door:\n" " Holger Klemm\n" " Stephen H. Westin" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Fout bij verwijderen van bestand" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Fout bij verwijderen van bijbehorende miniatuurvoorbeeldbestand" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "" "Het uploaden naar deze camera met snelheden hoger dan 57600 wordt niet " "ondersteund" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Kan de flash-schijfletter niet vinden" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "Kan niet uploaden, geen vrije mapnaam beschikbaar!\n" "Mapnaam 999CANON bestaat al en bevat een afbeelding AUT_9999.JPG." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Kan de \\DCIM-map niet aanmaken." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Kan geen bestemmingsmap aanmaken." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "Configuratie van camera en stuurprogramma" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Camera-instellingen" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 msgid "Owner Name" msgstr "Naam van eigenaar" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 msgid "Capture Size Class" msgstr "Afmetingsklasse van opname" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "ISO-snelheid" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "(onbekend)" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 msgid "Shooting mode" msgstr "Opnamemodus" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 msgid "Shutter Speed" msgstr "Sluitertijd" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "Zoomen" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "Diafragma" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Belichtingscompensatie" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 msgid "Image Format" msgstr "Beeldindeling" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Focusmodus" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Flitsmodus" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Piep" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 msgid "Camera Actions" msgstr "Camera-acties" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "Datum en tijd van camera synchroniseren met PC" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 msgid "Camera Status Information" msgstr "Cameratoestandsinformatie" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "Cameramodel" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Datum en tijd" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Fout" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 msgid "Firmware Version" msgstr "Firmware-versie" #: camlibs/canon/library.c:1956 msgid "Power" msgstr "Voeding" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Stuurprogramma" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Alle bestanden tonen" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Bestandsnaam bij het uploaden behouden" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Camera is onbeschikbaar" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Naam van eigenaar is gewijzigd" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "Kan de naam van de eigenaar niet wijzigen" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "Afmetingsklasse van opname is gewijzigd" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "Ongeldige afmetingsklasse van opname" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "Ongeldige ISO-snelheid" #: camlibs/canon/library.c:2056 msgid "ISO speed changed" msgstr "ISO-snelheid is gewijzigd" #: camlibs/canon/library.c:2058 msgid "Could not change ISO speed" msgstr "Kan de ISO-snelheid niet wijzigen" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "Ongeldige opnamemodus" #: camlibs/canon/library.c:2085 msgid "Shooting mode changed" msgstr "Opnamemodus is gewijzigd" #: camlibs/canon/library.c:2087 msgid "Could not change shooting mode" msgstr "Kan de opnamemodus niet wijzigen" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "Ongeldige sluitertijd" #: camlibs/canon/library.c:2114 msgid "Shutter speed changed" msgstr "Sluitertijd is gewijzigd" #: camlibs/canon/library.c:2116 msgid "Could not change shutter speed" msgstr "Kan de sluitertijd niet wijzigen" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 msgid "Invalid aperture setting" msgstr "Ongeldige diafragma-instelling" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 msgid "Aperture changed" msgstr "Diafragma is gewijzigd" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 msgid "Could not change aperture" msgstr "Kan het diafragma niet wijzigen" #: camlibs/canon/library.c:2167 msgid "Invalid exposure compensation setting" msgstr "Ongeldige belichtingscompensatie" #: camlibs/canon/library.c:2170 msgid "Exposure compensation changed" msgstr "Belichtingscompensatie is gewijzigd" #: camlibs/canon/library.c:2172 msgid "Could not change exposure compensation" msgstr "Kan de belichtingscompensatie niet wijzigen" #: camlibs/canon/library.c:2194 msgid "Invalid image format setting" msgstr "Ongeldige beeldindeling" #: camlibs/canon/library.c:2198 msgid "Image format changed" msgstr "Beeldindeling is gewijzigd" #: camlibs/canon/library.c:2200 msgid "Could not change image format" msgstr "Kan de beeldindeling niet wijzigen" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "Ongeldige focusmodus" #: camlibs/canon/library.c:2226 msgid "Focus mode changed" msgstr "Focusmodus is gewijzigd" #: camlibs/canon/library.c:2228 msgid "Could not change focus mode" msgstr "Kan de focusmodus niet wijzigen" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "Ongeldige piepmodus" #: camlibs/canon/library.c:2255 msgid "Beep mode changed" msgstr "Piepmodus is gewijzigd" #: camlibs/canon/library.c:2257 msgid "Could not change beep mode" msgstr "Kan de piepmodus niet wijzigen" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "Zoomniveau is gewijzigd" #: camlibs/canon/library.c:2276 msgid "Could not change zoom level" msgstr "Kan het zoomniveau niet wijzigen" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "Ongeldige flitsmodus" #: camlibs/canon/library.c:2332 msgid "Flash mode changed" msgstr "Flitsmodus is gewijzigd" #: camlibs/canon/library.c:2334 msgid "Could not change flash mode" msgstr "Kan de flitsmodus niet wijzigen" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "tijd is ingesteld" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "kan de tijd niet instellen" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "" "Niet-ondersteund poorttype %i = 0x%x gegeven. Initialisatie is onmogelijk." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Accu is leeg, camera uit." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "FOUT: onverwacht bericht" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "FOUT: berichtoverloop" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "FOUT: niet op volgorde." #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "FOUT: onverwacht pakkettype." #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "FOUT: onjuiste berichtopmaak." #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "FOUT: onverwacht bericht (2)." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Uploaden van bestand..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Ophalen van bestand..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "canon_serial_get_dirents: Ophalen van mapitems door canon_serial_dialogue() " "is mislukt" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" "canon_serial_get_dirents: Eerste 'dirent'-pakket is te kort (slechts %i " "bytes)" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "canon_serial_get_dirents: Kan geen %i bytes geheugen reserveren" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "canon_serial_get_dirents: Kan volgende mapitem niet lezen" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "canon_serial_get_dirents: Afgekapt mapitem ontvangen" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "canon_serial_get_dirents: Te veel mapitems -- oneindige lus?" #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents: Kan grootte van mapitemsbuffer niet naar %i bytes " "wijzigen" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Fout bij wijzigen van snelheid." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Resetten van protocol..." #: camlibs/canon/serial.c:1311 msgid "Camera OK." msgstr "Camera is OK." #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Zoeken naar camera..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Verbinding maken met camera..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Communicatiefout 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Geen antwoord van camera" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Niet-herkend antwoord" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "Een \"%s\" is gedetecteerd, ook bekend als \"%s\"" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "Onbekend model \"%s\"" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "Onjuiste EOT" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Communicatiefout 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Communicatiefout 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Wijzigen van snelheid... even geduld..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Fout bij wijzigen van snelheid" #: camlibs/canon/serial.c:1454 msgid "Error waiting for ACK during initialization, retrying" msgstr "Fout bij wachten op ACK tijdens initialisatie -- nieuwe poging" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Fout bij wachten op ACK tijdens initialisatie" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Verbonden met de camera" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "FOUT: een fatale fouttoestand werd gevonden, kan niet verdergaan " #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "FOUT: %d is te groot" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Ophalen van miniatuur..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "NIET HERKEND" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "Kan geen eerste contact met camera maken" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "Camera was al actief" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "Camera werd gewekt" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "Eerste antwoord van camera '%c' is onbegrijpelijk" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" "Stap 2 van initialisatie is mislukt: (\"%s\" bij lezen van %i). Camera " "werkt niet" #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "Stap 2 van initialisatie is mislukt: (%i bytes ontvangen, %i verwacht). " "Camera werkt niet" #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" "Stap 3 van initialisatie is mislukt: (\"%s\" bij lezen van %i). Camera " "werkt niet" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" "Stap 3 van initialisatie is mislukt: (%i bytes ontvangen, %i verwacht). " "Camera werkt niet" #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" "Stap 3 van initialisatie is mislukt: (\"%s\" bij schrijven van %i). Camera " "werkt niet" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "Stap 4 is mislukt: (\"%s\" bij lezen van %i). Camera werkt niet" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "Stap 4 is mislukt: (%i ontvangen, %i verwacht). Camera werkt niet" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "Camera is niet gereed; meerdere camera-identificatie-aanvragen zijn mislukt: " "%s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "Camera is niet gereed; get_battery() is mislukt: %s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Onverwachte lengte teruggekregen van \"lock keys\"-" "functie (%i bytes ontvangen, %i verwacht)" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Onverwachte lengte teruggekregen (%i bytes ontvangen, " "%i verwacht)" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Onverwachte lengte teruggekregen (%i bytes ontvangen, " "%i verwacht)" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_get_body_id: Onverwachte data-lengte teruggekregen (%i bytes " "ontvangen, %i verwacht)" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Ontvangen van data..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "Onvoldoende geheugen beschikbaar: %d bytes nodig." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes: canon_usb_dialogue mislukt" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "Waarschuwing in canon_usb_set_file_attributes: canon_usb_dialogue geeft " "foute status 0x%08x van camera" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "Kan niet uit bestand \"%s\" lezen" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "Onvoldoende geheugen beschikbaar: %ld bytes nodig." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "Uploaden van bestand is mislukt." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "Het bestand was te groot. Het kan nodig zijn om uw camera uit en weer aan te " "zetten alvorens meer bestanden te uploaden." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" "canon_usb_get_dirents: Actiegedeelte past niet in de buffer, " "'%.96s' (afgekapt) te lang" #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents: canon_usb_long_dialogue mislukte bij het ophalen van " "lijstelementen, status %i" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" "canon_usb_list_all_dirs: Kon actiegedeelte niet in buffer laden, " "'%.96s' (afgekapt) te lang." #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs: canon_usb_long_dialogue mislukte bij het ophalen " "van lijstelementen, status %i" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "Een '%s' is gedetecteerd." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "" "Benaming \"%s\" van de camera komt niet overeen met een bekend type camera" #: camlibs/casio/casio-qv.c:152 #, c-format msgid "Image type %d not supported" msgstr "Beeldtype %d wordt niet ondersteund" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "Beeld %s is tegen verwijderen beschermd." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "Accustatus: %.1f Volt. Revisie: %08x." #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "Cameraconfiguratie" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "Accu" #: camlibs/casio/casio-qv.c:275 msgid "Brightness" msgstr "Helderheid" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 msgid "Too bright" msgstr "Te helder" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 msgid "Too dark" msgstr "Te donker" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "OK" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "Uw Logitech Clicksmart 310 bevat %i opname.\n" msgstr[1] "Uw Logitech Clicksmart 310 bevat %i opnames.\n" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "Logitech Clicksmart 310-stuurprogramma\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "Generisch sq905-stuurprogramma\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Beeldtype wordt niet ondersteund" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "Aantal afbeeldingen: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "Alleen de hoofdmap wordt ondersteund - u vroeg een bestandslijst voor de map " "'%s'." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Probleem bij het ophalen van het aantal beelden" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Probleem bij het ophalen van beeldinformatie" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Opnametype wordt niet ondersteund" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (accu is voor %d%% geladen)" #: camlibs/dimera/dimera3500.c:455 #, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 versie %s %d/%d %d:%d\n" "%d afbeeldingen gebruikt van ongeveer %d (hoge res.) of %d (lage res.)\n" "Camerafuncties: %s, %s, %s, %s.\n" "Flits is %s, is %s en is %s.\n" "Resolutie is gezet op %s.\n" "Camera is %s-gevoed %s.\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Flits" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 msgid "No Flash" msgstr "Geen flits" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Dual-iris" #: camlibs/dimera/dimera3500.c:468 msgid "No Dual Iris" msgstr "Geen dual-iris" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "Resolutieomschakeling" #: camlibs/dimera/dimera3500.c:470 msgid "No Resolution Switch" msgstr "Geen resolutieomschakeling" #: camlibs/dimera/dimera3500.c:472 msgid "No Power Light" msgstr "Geen voedingslampje" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "AAN" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "UIT" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "gereed" #: camlibs/dimera/dimera3500.c:476 msgid "Not ready" msgstr "Niet gereed" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "in vulmodus" #: camlibs/dimera/dimera3500.c:478 msgid "Not in fill mode" msgstr "Niet in vulmodus" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "laag (320x240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "hoog (640x480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "extern" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "intern" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* Beeldstoringen of problemen met de communicatie\n" " zijn veelal te wijten aan een bijna lege accu.\n" "* Beelden die met afstandsbediening worden opgenomen, worden\n" " tijdelijk in RAM opgeslagen en niet op de Flash-geheugenkaart.\n" "* De belichting bij het opnemen van beelden kan handmatig\n" " ingesteld worden, of op automatisch gezet worden.\n" "* De beeldkwaliteit is momenteel lager dan ze zou kunnen zijn.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "Deze software werd gemaakt met de hulp van\n" "niet-vrije informatie van StarDot Technologies\n" "\n" "Auteur:\n" " Brian Beattie \n" "Medewerkers:\n" " Chuck Homic \n" " Converteren van raw-camerabeelden naar RGB\n" " Dan Fandrich \n" " Informatie over protocol en raw-beeldformaat,\n" " gphoto2-poorten\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Problemen bij lezen van beeld van de flash-geheugenkaart" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Onvoldoende geheugen beschikbaar" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "Downloaden van beeld..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Problemen bij downloaden van beeld" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "Downloaden is door gebruiker gestopt" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Problemen bij opnemen van rechtstreeks beeld" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Belichting" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "Automatische belichtingscorrectie bij de voorbeeldweergave" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "Belichtingsniveau bij de voorbeeldweergave" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "Automatische flits bij opname" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Problemen bij het openen van de poort" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Problemen bij het terugzetten van de camerainstelling" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Problemen bij het instellen van de communicatiesnelheid van de camera" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Lijkt op een modem, niet op een camera" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "Inventariseren van bestanden in '%s'..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "Inventariseren van mappen in '%s'..." #: camlibs/directory/directory.c:381 #, c-format msgid "Could not get information about '%s' (%s)." msgstr "Kan geen informatie over '%s' krijgen (%s)." #: camlibs/directory/directory.c:414 #, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Kan geen informatie over '%s' in '%s' krijgen (%s)." #: camlibs/directory/directory.c:462 #, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Kan de tijd van het bestand '%s' in '%s' niet wijzigen (%s)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Kan '%s' niet openen." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "De maplijst \"camera\" laat u de foto's op de harde schijf indexeren." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "Maplijstmodus -- geschreven door Scott Fritzinger ." #: camlibs/directory/directory.c:671 #, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "Kan bestand '%s' in map '%s' niet verwijderen (foutcode %i: %s)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" "Downloadprogramma voor de Digital Dream Enigma 1.3.\n" "Geschreven door ,\n" "aangepast vanaf het spca50x-stuurprogramma.\n" "Bedankt, spca50x-team, het was eenvoudig om jullie\n" "stuurprogramma naar deze camera over te zetten. " #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "" "De camera verzond slechts %i byte(s), maar we hebben minstens %i nodig." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Kan geen contact maken met de camera." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Onverwachte data ontvangen (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "Verkeerde 'escape'-stuurcode: 0x%02x verwacht, 0x%02x ontvangen." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Onjuiste data -- 0x%02x ontvangen, 0x%02x werd verwacht." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "Onjuiste data -- 0x%02x ontvangen, 0x%02x of 0x%02x werd verwacht." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "Onjuiste controlesom -- 0x%02x ontvangen, 0x%02x werd verwacht." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "De camera heeft het commando geweigerd." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "De camera heeft zichzelf gereset." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "De camera verzond onverwachte byte 0x%02x." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Bezig met downloaden..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "Kan geen %i bytes reserveren voor het downloaden van de miniatuur." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "Kan geen %i bytes reserveren voor het downloaden van de afbeelding." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "De camera accepteert '%s' niet als bestandsnaam." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "Kan de upload niet starten (de camera antwoordde met 0x%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "Snelheid %i wordt niet door de camera ondersteund." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "Kan de snelheid niet op %i zetten (de camera antwoordde met %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Gebaseerd op fujiplay door Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "Transmissiesnelheid %ld wordt niet ondersteund." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Configuratie voor uw FUJI-camera" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Datum en tijd" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Versie: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Model: " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "Beschikbaar geheugen: " #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "gsmart300-bibliotheek \n" "Till Adam \n" "Jerome Lodewyck \n" "Ondersteuning voor Mustek gSmart 300 digitale camera's,\n" "gebaseerd op verscheidene andere gphoto2 camlib-modules\n" "en op de specificaties aangeleverd door Mustek.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Poorttype %d wordt niet ondersteund.\n" "Dit stuurprogramma werkt alleen met USB-camera's.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Kan de camera niet resetten.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Deze camera kan alleen het laatste bestand verwijderen. In dit geval is dit " "het bestand '%s'." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" "Huidige cameratijd: %04d-%02d-%02d %02d:%02d\n" "Vrij geheugen op de kaart: %d\n" "Afbeeldingen op de kaart: %d\n" "Nog ruimte voor %d afbeeldingen\n" "Accuniveau: %d%%." #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" "hp215\n" "Marcus Meissner \n" "Stuurprogramma voor de HP Photosmart 215-camera.\n" "Samengesteld uit het zelfstandige hp215-programma.\n" "Dit stuurprogramma ondersteunt het downloaden van afbeeldingen\n" "en miniaturen, en het verwijderen van afbeeldingen.\n" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "Deze USB-camera is een iClick 5X.\n" "Het bevat momenteel %i afbeeldingen.\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" "Informatie over camera's met ID 0x2770:0x9153.\n" "\n" "Het wordt afgeraden een GUI-programma te gebruiken voor toegang tot\n" "deze camera, tenzij u voor de lol bezig bent of de camera wilt opblazen.\n" "\n" "Gebruik 'gphoto2 -P' vanaf de opdrachtregel om uw foto's te downloaden.\n" "Opmerking: het is niet mogelijk om videoclips te downloaden.\n" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "iClick 5X-stuurprogramma\n" "Theodore Kilgore \n" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Opgenomen beelden : %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "jamcam bibliotheek v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "Downloaden van data..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "Downloaden van miniatuurvoorbeeld..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "De JD11-camera werkt redelijk goed met dit stuurprogramma.\n" "Een RS232-interface met 115 kbit/s is vereist voor de beeldoverdracht.\n" "Met het stuurprogramma kunt u\n" "\n" " - miniatuurvoorbeelden (64x48 PGM formaat)\n" " - volle beelden (640x480 PPM formaat)\n" "\n" "downloaden.\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Stuurprogramma voor de Jenoptik JD11-camera.\n" "Het protocol werd ontrafeld met behulp van WINE and IDA." #: camlibs/jd11/jd11.c:186 msgid "JD11 Configuration" msgstr "JD11-configuratie" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Andere instellingen" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Bulb-belichtingstijd" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Kleurinstellingen" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "Rood" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Groen" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Blauw" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Deze camera bevat een Jeilin JL2005A-chipset.\n" "Er staan %i foto's op de camera.\n" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" "Dit stuurprogramma ondersteunt camera's met de Jeilin jl2005a-chip\n" "Deze camera's ondersteunen noch het verwijderen van foto's,\n" "noch het uploaden van data.\n" "Het decoderen van gecomprimeerde foto's werkt mogelijk niet goed,\n" "en niet voor alle camera's even goed.\n" "Indien videoclips op de camera aanwezig zijn, worden deze\n" "als opeenvolgende stilstaande beelden gedownload.\n" "Voor verdere details, zie libgphoto2/camlibs/README.jl2005a\n" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "jl2005a-camerabibliotheek\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Deze camera bevat een Jeilin JL2005%c-chipset.\n" "Er staan %i foto's op de camera.\n" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" "Dit stuurprogramma ondersteunt camera's met de Jeilin JL2005B- of C- of D-" "chip.\n" "Deze camera's ondersteunen noch het verwijderen van foto's,\n" "noch het uploaden van data.\n" "Indien videoclips op de camera aanwezig zijn, worden deze\n" "als opeenvolgende stilstaande beelden gedownload.\n" "Voor verdere details, zie libgphoto2/camlibs/README.jl2005c\n" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "jl2005bcd-camerabibliotheek\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "CompactFlash-kaart" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "De Kodak DC120-camera gebruikt het KDC-bestandsformaat om beelden op te " "slaan. Om de beelden te bekijken dient u het \"kdc2tiff\"-programma te " "downloaden. Het is beschikbaar op http://kdc2tiff.sourceforge.net" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Kodak DC120-camerabibliotheek\n" "Scott Fritzinger \n" "Camerabibliotheek voor de Kodak DC120-camera.\n" "(Vanwege de grote interesse.)" #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Ophalen van data..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "Wacht op voltooiing..." #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Bestand" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Bestandstype" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Bestandsresolutie" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Bestandscompressie" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Laag (beste kwaliteit)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Gemiddeld (prima kwaliteit)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "Hoog (goede kwaliteit)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Opname" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Belichtingscompensatie" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Auto" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Altijd" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Geen" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Antirodeogenflits" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Aan" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Uit" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Overige" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Cameraklok instellen" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "Poortsnelheid" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Albumnaam" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Naam die bij het formatteren van de kaart gezet wordt." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "Formatteer compactflash-kaart" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Formatteer kaart en zet albumnaam." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Debug" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Voer een vooraf bepaald commando uit\n" "met parameterwaarden." #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "Foto's op de camera: %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" "Er is nog ruimte voor:n %d afbeeldingen met lage compressie,\n" " %d met gemiddelde compressie, of\n" " %d met hoge compressie.\n" #: camlibs/kodak/dc210/dc210.c:506 #, c-format msgid "Total pictures taken: %d\n" msgstr "Totaal aantal opgenomen afbeeldingen: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "Totaal aantal flitsen: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, c-format msgid "Firmware: %d.%d\n" msgstr "Firmware: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, c-format msgid "Filetype: JPEG (" msgstr "Bestandstype: JPEG (" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "Bestandstype: FlashPix (" #: camlibs/kodak/dc210/dc210.c:527 #, c-format msgid "low compression, " msgstr "lage compressie, " #: camlibs/kodak/dc210/dc210.c:529 #, c-format msgid "medium compression, " msgstr "gemiddelde compressie, " #: camlibs/kodak/dc210/dc210.c:531 #, c-format msgid "high compression, " msgstr "hoge compressie, " #: camlibs/kodak/dc210/dc210.c:533 #, c-format msgid "unknown compression %d, " msgstr "onbekende compressie %d, " #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "onbekende resolutie %d)\n" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "Netadapter is aangesloten.\n" #: camlibs/kodak/dc210/dc210.c:558 #, c-format msgid "AC adapter is not connected.\n" msgstr "Netadapter is niet aangesloten.\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "Tijd: %a, %d %b %Y %T\n" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "Zoom: 58 mm\n" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "Zoom: 51 mm\n" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "Zoom: 41 mm\n" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "Zoom: 34 mm\n" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "Zoom: 29 mm\n" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "Zoom: macro\n" #: camlibs/kodak/dc210/dc210.c:580 #, c-format msgid "Unknown zoom mode %d\n" msgstr "Onbekende zoommodus %d\n" #: camlibs/kodak/dc210/dc210.c:586 #, c-format msgid "Exposure compensation: %s\n" msgstr "Belichtingscompensatie: %s\n" #: camlibs/kodak/dc210/dc210.c:588 #, c-format msgid "Exposure compensation: %d\n" msgstr "Belichtingscompensatie: %d\n" #: camlibs/kodak/dc210/dc210.c:593 #, c-format msgid "Flash mode: auto, " msgstr "Flitsmodus: auto, " #: camlibs/kodak/dc210/dc210.c:595 #, c-format msgid "Flash mode: force, " msgstr "Flitsmodus: altijd, " #: camlibs/kodak/dc210/dc210.c:597 #, c-format msgid "Flash mode: off\n" msgstr "Flitsmodus: uit\n" #: camlibs/kodak/dc210/dc210.c:599 #, c-format msgid "Unknown flash mode %d, " msgstr "Onbekende flitsmodus %d, " #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "antirodeogenflits is ingeschakeld.\n" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "antirodeogenflits is uitgeschakeld.\n" #: camlibs/kodak/dc210/dc210.c:615 #, c-format msgid "No card in camera.\n" msgstr "Er zit geen gehuegenkaartje in de camera.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" "Kaartnaam: %s\n" "Vrije ruimte op de kaart: %d kB\n" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "Deze bibliotheek is getest met een Kodak DC 215 Zoom camera. Het kan ook " "werken met DC 200 and DC 210 camera's. Indien u zo'n type camera bezit, " "gelieve een bericht naar mij te sturen (koltan@gmx.de) om me op de hoogte te " "houden als alles werkt of als u enige problemen heeft met deze bibliotheek." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Camera-bibliotheek voor de Kodak DC215 Zoom camera.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "Wacht..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Parameter 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Parameter 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Parameter 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Model: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "Firmware versie: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Accustatus: %s, netadapter: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "Aantal afbeeldingen: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "Resterende opslagruimte: Hoog: %d, Gemiddeld: %d, Laag: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "Geheugenkaartstatus (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "Totaal opgenomen afbeeldingen: %d, aantal keren geflitst: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Kodak DC240 Camerabibliotheek\n" "Scott Fritzinger and Hubert Figuiere \n" "Camerabibliotheek voor de Kodak DC240, DC280, DC3400 and DC5000 camera's.\n" "Herschreven en geactualiseerd voor gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Zwak" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Leeg" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Ongeldig" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Niet gebruikt" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "In gebruik" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "Kaart is geopend" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "Kaart is niet geopend" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "Kaart is niet geformatteerd" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Geen kaart aanwezig" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "Momenteel is er een proces aan de gang. Deze camera ondersteunt slechts één " "actief proces. Gelieve te wachten tot het actieve proces afgelopen is." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "camera is langer dan 9 seconden inactief -- herinitialisatie.\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Bekende problemen:\n" "\n" "1. Als de Kodak DC3200 niet mintens om de 10 seconden een commando ontvangt, " "moet deze opnieuw geïnitialiseerd worden. Als de camera niet reageert, " "selecteer deze dan opnieuw. Dit herinitialiseert de camera." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Kodak DC3200-stuurprogramma\n" "Donn Morrison \n" "\n" "Vragen en commentaren worden gewaardeerd." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "Uw USB-camera is een Kodak EZ200.\n" "Aantal afbeeldingen = %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "Kodak EZ200-stuurprogramma\n" "Bucas Jean-Francois \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Fout tijdens het focussen." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Irisfout." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Flitsfout." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "EEPROM-controlesomfout." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "**Interne fout** (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "**Interne fout** (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Geen kaart aanwezig." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "Kaart wordt niet ondersteund." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "Kaart werd verwijderd tijdens de toegang." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Nummer van beeld is niet geldig." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "Kaart kan niet beschreven worden." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "Kaart is tegen schrijven beveiligd." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "Geen vrije opslagruimte op kaart." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Beeld is beveiligd." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "Niet genoeg licht." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Fout bij autofocus." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Systeemfout." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Ongeldige parameter." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "Het commando kan niet afgebroken worden." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Lokalisatiegegevens zijn te lang." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Lokalisatiegegevens zijn beschadigd." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Commando wordt niet ondersteund." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "Ander commando is in uitvoering." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Fout in commandovolgorde." #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Onbekende fout." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "De camera heeft zojuist een onbekende fout gemeld. Wilt u het volgende " "rapporteren aan %s met als bijkomende informatie hoe de fout is ontstaan: (0x" "%x,0x%x). Hartelijk bedankt!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Ophalen van bestandenlijst..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "Testen van verschillende snelheden..." #: camlibs/konica/library.c:338 msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "Kan geen verbinding maken met de camera. Verzeker u ervan dat de camera op " "de computer aangesloten is en ingeschakeld is." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "%i afbeeldingen konden niet worden verwijderd omdat ze beveiligd zijn" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Model: %s\n" "Serienummer: %s,\n" "Hardwareversie: %i.%i\n" "Softwareversie: %i.%i\n" "Testsoftwareversie: %i.%i\n" "Naam: %s,\n" "Fabrikant: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Konica-bibliotheek\n" "Lutz Mueller \n" "Ondersteuning voor alle Konica en meerdere HP camera's." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Ophalen van instellingen..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Konica-configuratie" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Permanente instellingen" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "Moet de camera een piep geven als er een opname gemaakt wordt?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Zelfontspannertijd" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Tijd tot automatische uitschakeling" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Diashowinterval" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Resolutie" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Laag (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Gemiddeld (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Hoog (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Lokalisatie" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Taal" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Niets geselecteerd" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "TV-signaal" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "Geen TV-menu tonen" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Datumopmaak" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "maand/dag/jaar" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "dag/maand/jaar" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "jaar/maand/dag" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Persistente instellingen" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Aan, rodeogenreductie" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Auto, rodeogenreductie" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Focus" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "Vast ingesteld" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Vluchtige instellingen" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "Zelfontspanner" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "Zelfontspanner (alleen volgende opname)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Normaal" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Kan de lokalisatiegegevens niet vinden in '%s'" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "Lokalisatiebestand is te lang!" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "Dit voorbeeld bestaat niet." #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "Gegevens zijn beschadigd." #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "Beeldtype %d wordt door deze camera niet ondersteund!" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "Kan beeld %s niet verwijderen." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "Kan niet alle beelden verwijderen." #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "Uploaden van beeld..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "" "Kan dit beeld niet uploaden naar de camera. Er is een fout opgetreden." #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "U moet in opnamemodus zijn om beelden op kunnen te nemen." #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" "Er is geen ruimte beschikbaar om nieuwe beelden op te slaan. U moet een " "aantal beelden verwijderen." #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "Kan geen nieuwe beelden opnemen. Onbekende fout" #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "Geen antwoord van de camera." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Laag" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Middel" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Hoog" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Pictogrammen" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "2,0 m" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "0,5 m" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "0,1 m" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Witbalans" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "Kantoor" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "Daglicht" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "Scherpte" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "Scherp" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "Zacht" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "Kleur" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "Licht" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "Diepte" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "Zwart-wit" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "Enkel" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "Reeks van 9" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "Datumweergave" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "Overal" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "Weergavemodus" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "Opnamemodus" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "Overal" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "AC" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "Weergave" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Opname" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "DD-MM-JJJJ" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "JJJJ-MM-DD" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "MM-DD-JJJJ" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Model: %s\n" "Capaciteit: %i MB\n" "Voeding: %s\n" "Auto-uitschakeling na: %i min\n" "Modus: %s\n" "Beelden: %i/%i\n" "Datumweergave: %s\n" "Datum en tijd: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Konica Q-M150-bibliotheek\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" " http://www.ap2c.com\n" "Ondersteuning voor de Franse Konica Q-M150." #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "Opmerkingen bij de Konica Q-M150:\n" "Deze camera ondersteunt geen wijzigingen van buiten.\n" "In de configuratie kan dus enkel bekeken worden wat er\n" "op de camera ingesteld is, maar u kunt niets wijzigen.\n" "\n" "Indien u problemen ondervindt met dit stuurprogramma,\n" "stuur dan een e-mail naar de ontwikkelaars ervan.\n" #: camlibs/largan/lmini/largan.c:228 msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Largan-stuurprogramma\n" "Hubert Figuiere \n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" "Uw USB-camera schijnt een LG GSM te zijn.\n" "Firmware: %s\n" "Firmware-versie: %s\n" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" "Generisch LG GSM-stuurprogramma\n" "Guillaume Bedot \n" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Mars MR97310-camera.\n" "Er staat %i foto op de camera. \n" msgstr[1] "" "Mars MR97310-camera.\n" "Er staan %i foto's op de camera. \n" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" "Dit stuurprogramma ondersteunt camera's met de Mars MR97310-chip\n" "(en directe equivalenten -- ??Pixart PACx07??).\n" "Deze camera's ondersteunen noch het verwijderen van foto's,\n" "noch het uploaden van data.\n" "Het decoderen van gecomprimeerde foto's werkt mogelijk niet goed,\n" "en niet voor alle camera's even goed.\n" "Voor de Argus QuickCli wordt fotodataverwerking NIET ONDERSTEUND.\n" "Indien videoclips op de camera aanwezig zijn, worden deze\n" "als opeenvolgende stilstaande beelden gedownload.\n" "Voor verdere details, zie libgphoto2/camlibs/README.\n" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "Mars MR97310-camerabibliotheek\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Model: Minolta Dimage V (%s)\n" "Hardware-revisie: %s\n" "Firmware-revisie: %s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Host-modus:\t\t%s\n" "Belichtingscorrectie:\t%s\n" "Belichtingsdata:\t\t%d\n" "Datum geldig:\t\t%s\n" "Datum:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Zelfontspanner gezet:\t\t%s\n" "Kwaliteitsinstelling:\t%s\n" "Weergave/Opname Modus:\t%s\n" "Kaart-ID geldig:\t\t%s\n" "Kaart-ID:\t\t%d\n" "Flitsmodus:\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Op afstand" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Lokaal" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Ja" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "Nee" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Fijn" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Standaard" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Automatisch\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Altijd flitsen\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Geen flits\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Ongeldige waarde ( %d )\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "Accustatus:\t\t%s\n" "Aantal beelden:\t%d\n" "Minimum restcapaciteit:\t%d\n" "Bezig:\t\t\t%s\n" "Laden van flits:\t\t%s\n" "Lensstatus:\t\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "Niet vol" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Vol" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "Bezig" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "Niet bezig" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "Bezig met laden" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Gereed" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Normaal\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "Lensrichting komt niet overeen met flitslicht\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "Lens is niet aangesloten\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "Onjuiste waarde voor lensstatus %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "Kaartstatus:\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Beveiligd tegen schrijven" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "Niet-passende kaart" #: camlibs/minolta/dimagev/dimagev.c:406 #, c-format msgid "Bad value for card status %d" msgstr "Onjuiste waarde voor kaartstatus %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Minolta Dimage V-camerabibliotheek\n" "%s\n" "Gus Hartmann \n" "Met bijzondere dank aan Minolta voor de specificaties." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Flits: Auto (rodeogenreductie)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Flits: Auto" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Flits: Aan (rodeogenreductie)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Flits: Aan" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Flits: Uit" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Flits: ongedefinieerd" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Samenvatting voor Mustek MDC800:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "geen status gerapporteerd." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "CompactFlash-kaart is gedetecteerd\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Geen CompactFlash-kaart gedetecteerd\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "Huidige modus: Cameramodus\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Huidige modus: Weergavemodus\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Batterijen zijn OK." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Batterijen zijn bijna leeg." #: camlibs/mustek/mdc800.c:264 msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Mustek MDC-800 gPhoto2-bibliotheek\n" "Henning Zabel \n" "Overgezet naar gphoto2 door Marcus Meissner \n" "Ondersteunt serieel en USB-protocol." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "coolshot-bibliotheek v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Verbreken van verbinding met camera." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "Downloaden van beeld %s." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Uploaden van beeld %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "Bestandsgrootte is %ld bytes. De maximale bestandsgrootte die geüpload kan " "worden is %i bytes." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Bezig met uploaden..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "Verwijderen van beeld %s." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1000 gPhoto-bibliotheek\n" "Mariusz Zynel \n" "\n" "Gebaseerd op het dc1000-programma geschreven\n" "door Fredrik Roubert \n" "en Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "Downloaden van %s." #: camlibs/panasonic/dc1580.c:627 msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1580 gPhoto-bibliotheek\n" "Mariusz Zynel \n" "\n" "Gebaseerd op het dc1000-programma geschreven\n" "door Fredrik Roubert \n" "en Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "Downloaden van %s..." #: camlibs/panasonic/l859/l859.c:582 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic heeft de beeldopnametechnologie genaamd PHOTOSHOT voor het eerst " "in deze serie Palmcorders geïmplementeerd. De beelden worden in JPEG-" "formaat op een interne Flash-kaart opgeslagen en kunnen via de ingebouwde " "seriële poort naar een computer worden overgedragen. De beelden kunnen in " "de resoluties NORMAAL (320x240) en FIJN (640x840) opgeslagen worden. De CCD " "die de beelden opneemt heeft slechts 300K pixels en produceert daardoor " "enkel beelden van lage kwaliteit." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Bekende problemen:\n" "\n" "Als er communicatieproblemen optreden, reset dan de camera en herstart het " "programma. Het stuurprogramma is nog niet robuust genoeg om met deze " "situaties om te gaan, in het bijzonder bij problemen waarbij de " "transmissiesnelheid boven 9600 lag en de camera niet behoorlijk afgesloten " "werd." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder-stuurprogramma\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " Totaal geheugen is %8d bytes.\n" " Vrij geheugen is %8d bytes.\n" " Aantal bestanden: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" "Auteurs: Till Adam \n" "en Miah Gregory " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "Downloaden van bestand..." #: camlibs/pccam600/library.c:249 msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600-stuurprogramma\n" "Auteur: Peter Kajberg \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "pccam600_init: Verwachtte > %d blokken, ontving %d" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "pccam600_get_file: Ontving index %d maar verwachtte index > %d" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "pccam600_close: Teruggekregen waarde was %d i.p.v. %d" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "pccam600_init: Verwachtte %d blokken, ontving %d" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "pccam600_init: Onverwachte fout: gp_port_read() gaf %d i.p.v. %d" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Downloadprogramma voor verscheidene Polaroidcamera's. Oorspronkelijk " "geschreven door Peter Desnoyers , aangepast voor " "gphoto2 door Nathan Stenzel en Lutz " "Mueller . Polaroid 640SE-tests werden uitgevoerd door " "Michael Golden ." #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Model: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "Downloadprogramma voor op GrandTek 98x gebaseerde camera's. Oorspronkelijk " "geschreven door Chris Byrne , en aangepast voor gphoto2 " "door Lutz Mueller . Verbetering van protocol en " "nabewerking voor de Jenoptik JD350e door Michael Trawny . Correcties door Marcus Meissner ." #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "Beeldkwaliteit" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Beeldgrootte" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Flitsinstelling" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Auto-uitschakeling (in minuten)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Informatie" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "normaal" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "fijn" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "superfijn" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "auto" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "aan" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "uit" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "weergave" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "opname" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "menu" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "accu" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "netadapter" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Onverwachte header ontvangen (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Onverwacht antwoord ontvangen" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Fout in controlesom" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "Het commando werd door de camera geweigerd." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "De camera verzond meer bytes dan verwacht (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "Heb informatie over afbeelding %i (= 0x%x) gevraagd, maar kreeg informatie " "over afbeelding %i" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "%i bytes ontvangen van een onbekend beeldformaat.\n" "Schrijf naar %s en vraag om assistentie." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Downloadprogramma voor Polaroid DC700-camera. Oorspronkelijk geschreven " "door Ryan Lantzer voor gphoto-4.x. Aangepast voor " "gphoto2 door Lutz Mueller ." #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Camera" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "Na hoeveel tijd moet de camera zichzelf uitschakelen?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Beeld" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Datum: %i/%02i/%02i %02i:%02i:%02i\n" "Aantal genomen afbeeldingen: %i\n" "Aantal resterende afbeeldingen: %i\n" "Softwareversie: %s\n" "Transmissiesneleid: %s\n" "Geheugen: %i megabytes\n" "Cameramodus: %s\n" "Beeldkwaliteit: %s\n" "Flitsinstelling: %s\n" "Informatie: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto-uitschakeling: %i minuten\n" "Voedingsbron: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "" "Het gevraagde poorttype (%i) wordt door dit stuurprogramma niet ondersteund." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Deze camera ondersteunt geen Canon-beeldopname" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, c-format msgid "Unknown value %04x" msgstr "Onbekende waarde %04x" #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, c-format msgid "Unknown value %04d" msgstr "Onbekende waarde %04d" #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "Onverwacht datatype %i" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "Handmatig" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 msgid "Automatic" msgstr "Automatisch" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 msgid "One-push Automatic" msgstr "Volautomatisch" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "TL-lamp" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Gloeilamp" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Bewolkt" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "Schaduw" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "Kleurtemperatuur" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "Voorinstelling" #: camlibs/ptp2/config.c:1415 msgid "Fluorescent Lamp 1" msgstr "TL-lamp 1" #: camlibs/ptp2/config.c:1416 msgid "Fluorescent Lamp 2" msgstr "TL-lamp 2" #: camlibs/ptp2/config.c:1417 msgid "Fluorescent Lamp 3" msgstr "TL-lamp 3" #: camlibs/ptp2/config.c:1418 msgid "Fluorescent Lamp 4" msgstr "TL-lamp 4" #: camlibs/ptp2/config.c:1419 msgid "Fluorescent Lamp 5" msgstr "TL-lamp 5" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "Kies kleurtemperatuur" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "Aangepaste voorinstelling 1" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "Aangepaste voorinstelling 2" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "Aangepaste voorinstelling 3" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "Aangepaste voorinstelling 4" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "Aangepaste voorinstelling 5" #: camlibs/ptp2/config.c:1430 msgid "Fluorescent: Warm White" msgstr "TL-lamp: warmwit" #: camlibs/ptp2/config.c:1431 msgid "Fluorescent: Cold White" msgstr "TL-lamp: koudwit" #: camlibs/ptp2/config.c:1432 msgid "Fluorescent: Day White" msgstr "TL-lamp: dagwit" #: camlibs/ptp2/config.c:1433 msgid "Fluorescent: Daylight" msgstr "TL-lamp: daglicht" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 msgid "JPEG Fine" msgstr "fijne JPEG" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 msgid "JPEG Normal" msgstr "normale JPEG" #: camlibs/ptp2/config.c:1443 msgid "RAW + JPEG Fine" msgstr "RAW + fijne JPEG" #: camlibs/ptp2/config.c:1444 msgid "RAW + JPEG Normal" msgstr "RAW + normale JPEG" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "Enkel-frame" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "Continu, lage snelheid" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "Continu, hoge snelheid" #: camlibs/ptp2/config.c:1452 msgid "Self-timer" msgstr "Zelfontspanner" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "Spiegel omhoog (Mup)" #: camlibs/ptp2/config.c:1735 msgid "undefined" msgstr "ongedefinieerd" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "economisch" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "verliesloos" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 msgid "Undefined" msgstr "Ongedefinieerd" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "TV" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "AV" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "Aangepast" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "Nachtportret" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "Sport" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "Landschap" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "Close-up" #: camlibs/ptp2/config.c:1780 msgid "Flash Off" msgstr "Flits uit" #: camlibs/ptp2/config.c:1788 msgid "red eye suppression" msgstr "rodeogenreductie" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "invulflits" #: camlibs/ptp2/config.c:1790 msgid "auto + red eye suppression" msgstr "auto + rodeogenreductie" #: camlibs/ptp2/config.c:1791 msgid "on + red eye suppression" msgstr "aan + rodeogenreductie" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 msgid "Commander" msgstr "" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 msgid "Auto Aperture" msgstr "Automatisch diafragma" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 msgid "Full Manual" msgstr "Volledig handmatig" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 msgid "MF (fixed)" msgstr "" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "Centrum-gewogen" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "Gemiddeld" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "Evaluatief" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "Gedeeltelijk" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "Centrumgericht gemiddelde" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "Puntsmeting gecombineerd met AF-frame" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "Meerdere punten" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "Getrouw" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "Monochroom" #: camlibs/ptp2/config.c:1947 msgid "User defined 1" msgstr "Gebruikersinstelling 1" #: camlibs/ptp2/config.c:1948 msgid "User defined 2" msgstr "Gebruikersinstelling 2" #: camlibs/ptp2/config.c:1949 msgid "User defined 3" msgstr "Gebruikersinstelling 3" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "Focuspunt alleen in midden, handmatig" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "Focuspunt alleen in midden, automatisch" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "Meerdere focuspunten (geen specificatie), handmatig" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 msgid "Multiple Focusing Points, Auto" msgstr "Meerdere focuspunten, automatisch" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 msgid "Multiple Focusing Points (Right)" msgstr "Meerdere focuspunten (rechts)" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "Meerdere focuspunten (midden)" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 msgid "Multiple Focusing Points (Left)" msgstr "Meerdere focuspunten (links)" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 msgid "Large" msgstr "Groot" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 msgid "Medium 1" msgstr "Medium 1" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 msgid "Medium 2" msgstr "Medium 2" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 msgid "Medium 3" msgstr "Medium 3" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "Klein" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "16:9" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "3:2" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "10 seconden" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "2 seconden" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "TFT" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "PC" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "TFT + PC" #: camlibs/ptp2/config.c:2092 msgid "Setting 4" msgstr "Instelling 4" #: camlibs/ptp2/config.c:2093 msgid "Setting 5" msgstr "Instelling 5" #: camlibs/ptp2/config.c:2094 msgid "Setting 6" msgstr "Instelling 6" #: camlibs/ptp2/config.c:2095 msgid "Setting 7" msgstr "Instelling 7" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "kaart" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "Video-uit" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, c-format msgid "Unknown %d" msgstr "onbekend %d" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "Fabrieksinstellingen" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "mRAW" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "sRAW" #: camlibs/ptp2/config.c:2246 #, fuzzy msgid "Smaller JPEG" msgstr "Kleinere JPEG (S2)" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "Minieme JPEG (S3)" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "mRAW + grote, fijne JPEG" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "sRAW + grote, fijne JPEG" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "mRAW + gemiddelde, fijne JPEG" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "sRAW + gemiddelde, fijne JPEG" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "mRAW + kleine, fijne JPEG" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "sRAW + kleine, fijne JPEG" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "mRAW + grote, normale JPEG" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "sRAW + grote, normale JPEG" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "mRAW + gemiddelde, normale JPEG" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "sRAW + gemiddelde, normale JPEG" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "mRAW + kleine, normale JPEG" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "sRAW + kleine, normale JPEG" #: camlibs/ptp2/config.c:2272 #, fuzzy msgid "RAW + Smaller JPEG" msgstr "RAW + kleine, fijne JPEG (S2)" #: camlibs/ptp2/config.c:2273 #, fuzzy msgid "mRAW + Smaller JPEG" msgstr "mRAW + kleine, fijne JPEG (S2)" #: camlibs/ptp2/config.c:2274 #, fuzzy msgid "sRAW + Smaller JPEG" msgstr "sRAW + kleine, fijne JPEG (S2)" #: camlibs/ptp2/config.c:2275 #, fuzzy msgid "RAW + Tiny JPEG" msgstr "RAW + minieme JPEG (S3)" #: camlibs/ptp2/config.c:2276 #, fuzzy msgid "mRAW + Tiny JPEG" msgstr "mRAW + minieme JPEG (S3)" #: camlibs/ptp2/config.c:2277 #, fuzzy msgid "sRAW + Tiny JPEG" msgstr "sRAW + minieme JPEG (S3)" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "Continu" #: camlibs/ptp2/config.c:2305 msgid "Timer 10 sec" msgstr "" #: camlibs/ptp2/config.c:2306 msgid "Timer 2 sec" msgstr "" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "Enkele opname, stil" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "Continu, stil" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, c-format msgid "Auto ISO" msgstr "Auto-ISO" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, fuzzy, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "Ruisonderdrukking bij lange belichting" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, fuzzy, c-format msgid "%d Multi Frame Noise Reduction" msgstr "Ruisonderdrukking bij lange belichting" #: camlibs/ptp2/config.c:2453 #, fuzzy msgid "Multi Frame Noise Reduction" msgstr "Ruisonderdrukking bij lange belichting" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Tijdsspanne" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "%d %d/%d" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "%d/%d" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "%f" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "Creatief" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "Actie" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "Nachtlandschap" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "Kinderen" #: camlibs/ptp2/config.c:2868 msgid "Automatic (No Flash)" msgstr "Automatisch (geen flits)" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 #, fuzzy msgid "Movie" msgstr "Filmgeluid" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 #, fuzzy msgid "Sports Action" msgstr "Sport" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "Zonsondergang" #: camlibs/ptp2/config.c:2880 #, fuzzy msgid "Night Scene" msgstr "Nachtopname" #: camlibs/ptp2/config.c:2881 #, fuzzy msgid "Hand-held Twilight" msgstr "Kaarslicht" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 #, fuzzy msgid "Picture Effect" msgstr "Miniatuureffect" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "Nachtlandschap" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "Feest/Binnenshuis" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "Strand/Sneeuw" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "Schemering" #: camlibs/ptp2/config.c:2893 msgid "Pet Portrait" msgstr "Huisdierportret" #: camlibs/ptp2/config.c:2894 msgid "Candlelight" msgstr "Kaarslicht" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "Bloesem" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "Herfstkleuren" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "Eten" #: camlibs/ptp2/config.c:2901 #, fuzzy msgid "Child" msgstr "Kinderen" #: camlibs/ptp2/config.c:2903 #, fuzzy msgid "Close up" msgstr "Close-up" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "" #: camlibs/ptp2/config.c:3032 #, fuzzy msgid "Flourescent" msgstr "TL-lamp" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "" #: camlibs/ptp2/config.c:3046 #, fuzzy msgid "1 EV" msgstr "1 EV" #: camlibs/ptp2/config.c:3047 #, fuzzy msgid "2 EV" msgstr "2 EV" #: camlibs/ptp2/config.c:3048 #, fuzzy msgid "3 EV" msgstr "3 EV" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "Extra hoog" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "Scène" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 msgid "Effects" msgstr "Effecten" #: camlibs/ptp2/config.c:3075 #, fuzzy msgid "U1" msgstr "1" #: camlibs/ptp2/config.c:3076 #, fuzzy msgid "U2" msgstr "2" #: camlibs/ptp2/config.c:3104 #, fuzzy msgid "Back Light" msgstr "LCD-achtergrondlicht" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 #, fuzzy msgid "Select Color" msgstr "Selectieve kleur" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "Enkele opname" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "Burst" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "Tijdsspanne" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "Continu, lage snelheid" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 msgid "Timer" msgstr "" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "Spiegel omhoog" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "Snelle reactie, op afstand" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 msgid "Delayed Remote" msgstr "Vertraagd, op afstand" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "" #: camlibs/ptp2/config.c:3125 msgid "Selftimer 2s" msgstr "Zelfontspanner 2s" #: camlibs/ptp2/config.c:3126 msgid "Selftimer 10s" msgstr "Zelfontspanner 10s" #: camlibs/ptp2/config.c:3127 #, fuzzy msgid "Bracketing C 0.3 Steps" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/config.c:3128 #, fuzzy msgid "Bracketing C 0.7 Steps" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/config.c:3129 #, fuzzy msgid "Bracketing C 1.0 Steps" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/config.c:3130 #, fuzzy msgid "Bracketing C 2.0 Steps" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/config.c:3131 #, fuzzy msgid "Bracketing C 3.0 Steps" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/config.c:3132 #, fuzzy msgid "Bracketing S 0.3 Steps" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/config.c:3133 #, fuzzy msgid "Bracketing S 0.7 Steps" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/config.c:3134 #, fuzzy msgid "Bracketing S 1.0 Steps" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/config.c:3135 #, fuzzy msgid "Bracketing S 2.0 Steps" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/config.c:3136 #, fuzzy msgid "Bracketing S 3.0 Steps" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/config.c:3137 #, fuzzy msgid "Bracketing WB Lo" msgstr "Belichting reeksopname" #: camlibs/ptp2/config.c:3138 #, fuzzy msgid "Bracketing WB Hi" msgstr "Belichting reeksopname" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 msgid "Centre-spot" msgstr "Middelpunts" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "Meerpunts" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "Enkele zone" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "Dichtstbijzijnd onderwerp" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "Groepsdynamisch" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "Enkele-zone AF" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "Dynamische-zone AF" #: camlibs/ptp2/config.c:3154 #, fuzzy msgid "Group-dynamic AF" msgstr "Groepsdynamische AF" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "Dynamische-zone AF met prioriteit voor dichtstbijzijnd onderwerp" #: camlibs/ptp2/config.c:3162 #, fuzzy msgid "Dynamic Area (9)" msgstr "Dynamische AF-zone" #: camlibs/ptp2/config.c:3163 #, fuzzy msgid "Dynamic Area (21)" msgstr "Dynamische AF-zone" #: camlibs/ptp2/config.c:3164 #, fuzzy msgid "Dynamic Area (51)" msgstr "Dynamische AF-zone" #: camlibs/ptp2/config.c:3165 #, fuzzy msgid "3D Tracking" msgstr "Belichting reeksopname" #: camlibs/ptp2/config.c:3171 msgid "sRGB (portrait)" msgstr "sRGB (portret)" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "AdobeRGB" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "sRGB (natuur)" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "sRGB" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "Onbekende waarde 0x%04x" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 msgid "Centre" msgstr "Centrum" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "Boven" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 msgid "Bottom" msgstr "Beneden" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "Links" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 msgid "Right" msgstr "Rechts" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "Centrumgericht" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "Meerdere punten" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "Middelpunt" #: camlibs/ptp2/config.c:3266 msgid "Automatic Flash" msgstr "Automatische flits" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 msgid "Fill flash" msgstr "Invulflits" #: camlibs/ptp2/config.c:3269 msgid "Red-eye automatic" msgstr "Antirodeogen automatisch" #: camlibs/ptp2/config.c:3270 msgid "Red-eye fill" msgstr "Antirodeogen-invulflits" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 msgid "External sync" msgstr "Externe sync" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 msgid "Auto Slow Sync" msgstr "Automatische Slow-sync" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "Achtergronddoeksync + Slow-sync" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 msgid "Red-eye Reduction + Slow Sync" msgstr "Rodeogenreductie + Slow-sync" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "Voorgronddoeksync" #: camlibs/ptp2/config.c:3277 msgid "Red-eye reduction" msgstr "Rodeogenreductie" #: camlibs/ptp2/config.c:3278 msgid "Red-eye reduction with slow sync" msgstr "Rodeogenreductie + Slow-sync" #: camlibs/ptp2/config.c:3279 msgid "Slow sync" msgstr "Slow-sync" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "Achtergronddoeksync + Slow-sync" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "Achtergronddoeksync" #: camlibs/ptp2/config.c:3283 #, fuzzy msgid "Rear Curtain Sync" msgstr "Achtergronddoeksync" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Slow-sync" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Zwart-wit" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "Nachtzicht" #: camlibs/ptp2/config.c:3298 msgid "Color sketch" msgstr "Kleurenschets" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "Miniatuureffect" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "Selectieve kleur" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "Silhouet" #: camlibs/ptp2/config.c:3302 msgid "High key" msgstr "" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 msgid "infinite" msgstr "oneindig" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "%d mm" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 #, fuzzy msgid "Face-priority AF" msgstr "Gezichtsgerichte AF" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "Brede-zone AF" #: camlibs/ptp2/config.c:3772 msgid "Normal-area AF" msgstr "Normale-zone AF" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 msgid "Manual Focus" msgstr "Handmatige focus" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 msgid "AE/AF Lock" msgstr "Belichtings-/focusvergrendeling" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "alleen autobelichtingsvergrendeling" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "alleen autofocusvergrendeling" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "Autofocusvergrendeling vast" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "Autofocus aan" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "Flitsniveauvergrendeling" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "20 seconden" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 msgid "1 minute" msgstr "1 minuut" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "5 minuten" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 msgid "10 minutes" msgstr "10 minuten" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "5 seconden" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "SDRAM" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "6 mm" #: camlibs/ptp2/config.c:3828 msgid "8 mm" msgstr "8 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "10 mm" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "12 mm" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "1/60" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "1/30" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "1/15" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "1/8" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "1/4" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "1/2" #: camlibs/ptp2/config.c:3842 msgid "1" msgstr "1" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 msgid "2" msgstr "2" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 msgid "4" msgstr "4" #: camlibs/ptp2/config.c:3845 msgid "8" msgstr "8" #: camlibs/ptp2/config.c:3846 msgid "15" msgstr "15" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "30" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "30s" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "25s" #: camlibs/ptp2/config.c:3855 msgid "20s" msgstr "20s" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 msgid "15s" msgstr "15s" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "13s" #: camlibs/ptp2/config.c:3858 msgid "10s" msgstr "10s" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "8s" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "6s" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "5s" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "4s" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "3s" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "2,5s" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "2s" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "1,6s" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "1,3s" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "1s" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "1/1,3s" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "1/1,6s" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "1/2s" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "1/2,5s" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "1/3s" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "1/4s" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "1/5s" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "1/6s" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "1/8s" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "1/10s" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "1/13s" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "1/15s" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "1/20s" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "1/25s" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "1/30s" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "1/40s" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "1/50s" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "1/60s" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "1/80s" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "1/100s" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "1/125s" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "1/160s" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "1/200s" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "1/250s" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "1/320s" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "1/400s" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "1/500s" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "1/640s" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "1/800s" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "1/1000s" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "1/1250s" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "1/1600s" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "1/2000s" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "1/2500s" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "1/3200s" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "1/4000s" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "1/5000s" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "1/6400s" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "1/8000s" #: camlibs/ptp2/config.c:3916 msgid "15 minutes" msgstr "15 minuten" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 msgid "Sharper" msgstr "Scherper" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "Zachter" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 msgid "Direct Print" msgstr "Direct printen" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 msgid "Medium Low" msgstr "Laag-gemiddeld" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 msgid "Medium high" msgstr "Hoog-gemiddeld" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 msgid "Low contrast" msgstr "Laag contrast" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 msgid "Medium High" msgstr "Hoog-gemiddeld" # Originele string lijkt me fout. #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "Hoog contrast" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "Zonefocus (close-up)" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "Zonefocus (heel dichtbij)" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "Zonefocus (dichtbij)" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "Zonefocus (medium)" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "Zonefocus (veraf)" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "Zonefocus (gereserveerd 1)" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "Zonefocus (gereserveerd 2)" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "Zonefocus (gereserveerd 3)" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "Zonefocus (gereserveerd 4)" #: camlibs/ptp2/config.c:3976 msgid "Automatic Macro" msgstr "Automatische macro" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "Enkele opname" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 msgid "AI Focus" msgstr "" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "4 seconden" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "8 seconden" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 msgid "Fluorescent H" msgstr "TL-licht H" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 msgid "Custom Whitebalance PC-1" msgstr "Aangepaste witbalans PC-1" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 msgid "Custom Whitebalance PC-2" msgstr "Aangepaste witbalans PC-2" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 msgid "Custom Whitebalance PC-3" msgstr "Aangepaste witbalans PC-3" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "Ontbrekend nummer" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "Schaduw" #: camlibs/ptp2/config.c:4118 #, fuzzy msgid "Low sharpening" msgstr "Minder scherpte" #: camlibs/ptp2/config.c:4120 msgid "Black & white" msgstr "Zwart-wit" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 msgid "AE & Flash" msgstr "" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 msgid "AE only" msgstr "" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 msgid "Flash only" msgstr "Alleen flits" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 msgid "WB bracketing" msgstr "Belichting reeksopname" #: camlibs/ptp2/config.c:4221 #, fuzzy msgid "ADL bracketing" msgstr "Belichting reeksopname" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "Opstarten" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "Uitschakeling" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "Opstarten en uitschakeling" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "50 Hz" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "60 Hz" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "Snelle reactie" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 msgid "Remote Mirror Up" msgstr "Spiegel omhoog op afstand" #: camlibs/ptp2/config.c:4248 msgid "Application Mode 0" msgstr "Toepassingsmodus 0" #: camlibs/ptp2/config.c:4249 msgid "Application Mode 1" msgstr "Toepassingsmodus 1" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "Matig" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "Verhoogd" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "Automatische gevoeligheid" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "Hoge gevoeligheid" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "Medium gevoeligheid" #: camlibs/ptp2/config.c:4286 msgid "Low sensitivity" msgstr "Lage gevoeligheid" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "Microfoon uit" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "Hoog 1" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "Hoog 2" #: camlibs/ptp2/config.c:4378 msgid "Flash/speed" msgstr "Flits/snelheid" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "Flits/snelheid/diafragma" #: camlibs/ptp2/config.c:4380 msgid "Flash/aperture" msgstr "Flits/diafragma" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "JPEG-basis" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 msgid "NEF+Fine" msgstr "NEF+fijn" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "NEF (raw)" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "NEF+basis" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 msgid "NEF+Normal" msgstr "NEF+normaal" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "TIFF (RGB)" #: camlibs/ptp2/config.c:4575 msgid "RAW+JPEG" msgstr "RAW+JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "6 seconden" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "16 seconden" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "30 seconden" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "30 minuten" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "Verliesloos" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "Met verlies" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "" #: camlibs/ptp2/config.c:4642 msgid "Optimal quality" msgstr "Optimale kwaliteit" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4659 #, fuzzy msgid "1/320s (Auto FP)" msgstr "Auto" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "9-punts" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "21-punts" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "51-punts" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "51-punts (3D)" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "5 (lang)" #: camlibs/ptp2/config.c:4695 msgid "3 (Normal)" msgstr "3 (normaal)" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "1 (kort)" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "Belichtings-/focusvergrendeling" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "alleen belichtingsvergrendeling" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "Belichtingsvergrendeling (reset bij loslaten)" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "Belichtingsvergrendeling (vast)" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "alleen autofocusvergrendeling" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "4 fps" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "3 fps" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "2 fps" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "1 fps" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "6 fps" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "5 fps" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "9 fps" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "8 fps" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "7 fps" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "11 fps" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "10 fps" #: camlibs/ptp2/config.c:4779 #, fuzzy msgid "Unassigned" msgstr "Ongedefinieerd" #: camlibs/ptp2/config.c:4780 #, fuzzy msgid "Preview" msgstr "Miniatuurvoorbeeld" #: camlibs/ptp2/config.c:4781 #, fuzzy msgid "FV lock" msgstr "Belichtings-/focusvergrendeling" #: camlibs/ptp2/config.c:4785 #, fuzzy msgid "AE lock (hold)" msgstr "Belichtingsvergrendeling (vast)" #: camlibs/ptp2/config.c:4788 #, fuzzy msgid "Bracketing burst" msgstr "Belichting reeksopname" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "Matrix-meting" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "Centrumgerichte meting" #: camlibs/ptp2/config.c:4791 msgid "Spot metering" msgstr "Puntsmeting" #: camlibs/ptp2/config.c:4792 #, fuzzy msgid "Playback" msgstr "Afspelen" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "+NEF (RAW)" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "" #: camlibs/ptp2/config.c:4799 #, fuzzy msgid "Viewfinder virtual horizont" msgstr "Beeldzoekerraster" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "Filmopname starten" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "50%" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "100%" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "75%" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "25%" #: camlibs/ptp2/config.c:4871 msgid "Unknown value" msgstr "Onbekende waarde" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "Wijzigen van AF-zone van Nikon werkt alleen in LiveView-modus." #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "De autofocus-drive van Nikon heeft niet scherpgesteld." #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "Handmatige focus van Nikon werkt alleen in LiveView-modus." #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "Handmatige focus van Nikon is aan zijn limiet." #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "Handmatige focusstap van Nikon is te klein." #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 msgid "Press Full" msgstr "" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "Direct" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 #, fuzzy msgid "Press 1" msgstr "Aangepaste voorinstelling 1" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 #, fuzzy msgid "Press 2" msgstr "Aangepaste voorinstelling 2" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 #, fuzzy msgid "Press 3" msgstr "Aangepaste voorinstelling 3" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 #, fuzzy msgid "Release 1" msgstr "Flitsmodus" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 #, fuzzy msgid "Release 2" msgstr "Flitsmodus" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 #, fuzzy msgid "Release 3" msgstr "Flitsmodus" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "Dichtbij 1" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "Dichtbij 2" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "Dichtbij 3" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "Veraf 1" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "Veraf 2" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "Veraf 3" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "Dichtbij %d" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "Veraf %d" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 #, fuzzy msgid "Nikon enable liveview failed" msgstr "Inschakelen van Nikon-rechtstreeks beeld is mislukt: %x" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" #: camlibs/ptp2/config.c:5923 msgid "Internal RAM" msgstr "Interne RAM" #: camlibs/ptp2/config.c:5924 msgid "Memory card" msgstr "Geheugenkaart" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "ESSID" #: camlibs/ptp2/config.c:6092 msgid "Display" msgstr "Weergave" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "Aanmaakdatum: %s, laatst gebruikt: %s" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "Verwijderen" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "WEP 64-bits" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "WEP 128-bits" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "beheerd" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "ad hoc" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "Profielnaam" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "Wifi-ESSID" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "IP-adres (leeg bij DHCP)" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "Netwerkmasker" #: camlibs/ptp2/config.c:6359 msgid "Default gateway" msgstr "Standaard gateway" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "Toegangsmodus" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "Wifi-kanaal" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "Encryptie" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "Encryptiesleutel (hex)" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "Schrijven" #: camlibs/ptp2/config.c:6412 msgid "List Wifi profiles" msgstr "Wifi-profielen tonen" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "Wifi-profiel aanmaken" #: camlibs/ptp2/config.c:6521 #, fuzzy msgid "Power Down" msgstr "Power Wind" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 msgid "Focus Lock" msgstr "Focusvergrendeling" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 msgid "Bulb Mode" msgstr "" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "Autofocuszone van Nikon instellen" #: camlibs/ptp2/config.c:6531 #, fuzzy msgid "Set Nikon Control Mode" msgstr "Nikon flitsmodus" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "Canon EOS-zoom" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "Canon EOS-zoompositie" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "Canon EOS beeldzoeker" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "Nikon beeldzoeker" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 msgid "Movie Capture" msgstr "Filmopname" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 msgid "Serial Number" msgstr "Serienummer" #: camlibs/ptp2/config.c:6548 msgid "Camera Manufacturer" msgstr "Camerafabrikant" #: camlibs/ptp2/config.c:6550 msgid "Device Version" msgstr "Toestelversie" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "" #: camlibs/ptp2/config.c:6556 msgid "PTP Version" msgstr "PTP-versie" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 msgid "DPOF Version" msgstr "DPOF-versie" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "Netvoeding" #: camlibs/ptp2/config.c:6559 msgid "External Flash" msgstr "Externe flits" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "Accuniveau" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 msgid "Camera Orientation" msgstr "Camera-oriëntering" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 msgid "Flash Open" msgstr "Flits open" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 msgid "Flash Charged" msgstr "Flits opgeladen" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 msgid "Lens Name" msgstr "Lensnaam" #: camlibs/ptp2/config.c:6570 msgid "Shutter Counter" msgstr "Sluiterteller" #: camlibs/ptp2/config.c:6571 msgid "Available Shots" msgstr "Nog beschikbare opnames" #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "Minimale focuslengte" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "Maximale focuslengte" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "Max. diafragmaopening bij min. focuslengte" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "Max. diafragmaopening bij max. focuslengte" #: camlibs/ptp2/config.c:6576 msgid "Low Light" msgstr "Weinig licht" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 msgid "Light Meter" msgstr "Lichtmeter" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 msgid "AF Locked" msgstr "Autofocus vergrendeld" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 #, fuzzy msgid "AE Locked" msgstr "Autobelichting vergrendeld" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 msgid "FV Locked" msgstr "" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 msgid "Camera Date and Time" msgstr "Cameradatum en -tijd" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "Piepmodus" #: camlibs/ptp2/config.c:6591 msgid "Image Comment" msgstr "Beeldcommentaar" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 msgid "Enable Image Comment" msgstr "Beeldcommentaar inschakelen" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 msgid "LCD Off Time" msgstr "LCD-uitschakelingstijd" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 msgid "Recording Media" msgstr "Opnamemedium" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "CSM-menu" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "Commandokiezer omkeren" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 msgid "Camera Output" msgstr "Camera-uitvoer" #: camlibs/ptp2/config.c:6601 #, fuzzy msgid "Recording Destination" msgstr "Opnamemedium" #: camlibs/ptp2/config.c:6602 #, fuzzy msgid "EVF Mode" msgstr "Autofocusmodus" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "Artiest" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "CCD-nummer" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Copyright" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "Sensor schoonmaken" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 msgid "Flicker Reduction" msgstr "Flikkerreductie" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "" #: camlibs/ptp2/config.c:6613 #, fuzzy msgid "Focus Info" msgstr "Focusmodus" #: camlibs/ptp2/config.c:6614 #, fuzzy msgid "Focus Area" msgstr "Focuszones" #: camlibs/ptp2/config.c:6615 #, fuzzy msgid "Auto Power Off" msgstr "Auto-uitschakeling (in minuten)" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "Menu's en weergave" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "Snel bestandssysteem" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 msgid "Capture Target" msgstr "Opnamedoel" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 msgid "Image Format SD" msgstr "Beeldindeling SD" #: camlibs/ptp2/config.c:6634 msgid "Image Format CF" msgstr "Beeldindeling CF" #: camlibs/ptp2/config.c:6636 #, fuzzy msgid "Image Format Ext HD" msgstr "Beeldindeling ext HD" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "ISO-snelheid" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 #, fuzzy msgid "ISO Auto" msgstr "Auto" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 msgid "WhiteBalance" msgstr "Witbalans" #: camlibs/ptp2/config.c:6654 msgid "WhiteBalance Adjust A" msgstr "Witbalans-bijstelling A" #: camlibs/ptp2/config.c:6655 msgid "WhiteBalance Adjust B" msgstr "Witbalans-bijstelling B" #: camlibs/ptp2/config.c:6656 msgid "WhiteBalance X A" msgstr "Witbalans-X A" #: camlibs/ptp2/config.c:6657 msgid "WhiteBalance X B" msgstr "Witbalans-X B" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "Fotoeffect" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 msgid "Color Model" msgstr "Kleurmodel" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 msgid "Color Space" msgstr "Kleurruimte" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "Ruisonderdrukking bij lange belichting" #: camlibs/ptp2/config.c:6669 msgid "Auto Focus Mode 2" msgstr "Autofocusmodus 2" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "Hulplicht" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "Rotatievlag" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 msgid "Flash Compensation" msgstr "Flitscompensatie" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 msgid "AEB Exposure Compensation" msgstr "AEB-belichtingscompensatie" #: camlibs/ptp2/config.c:6685 msgid "Nikon Flash Mode" msgstr "Nikon flitsmodus" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 #, fuzzy msgid "Flash Commander Mode" msgstr "Flitsmodus" #: camlibs/ptp2/config.c:6687 #, fuzzy msgid "Flash Commander Power" msgstr "Flitsmodus: altijd, " #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 #, fuzzy msgid "Flash Command Channel" msgstr "Flitsmodus is gewijzigd" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 #, fuzzy msgid "Flash Command Self Mode" msgstr "Flitsmodus" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 #, fuzzy msgid "Flash Command Self Compensation" msgstr "Flitscompensatie" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 #, fuzzy msgid "Flash Command A Mode" msgstr "Flitsmodus" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 #, fuzzy msgid "Flash Command A Compensation" msgstr "Flitscompensatie" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 #, fuzzy msgid "Flash Command B Mode" msgstr "Flitsmodus" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 #, fuzzy msgid "Flash Command B Compensation" msgstr "Flitscompensatie" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "AF-zoneverlichting" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "AF-piepmodus" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "F-nummer" #: camlibs/ptp2/config.c:6702 #, fuzzy msgid "Movie F-Number" msgstr "F-nummer" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "Flexibel programma" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "Focusafstand" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "Focuslengte" #: camlibs/ptp2/config.c:6710 msgid "Focus Mode 2" msgstr "Focusmodus 2" #: camlibs/ptp2/config.c:6712 #, fuzzy msgid "Continuous AF" msgstr "Continu" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "Effectmodus" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 msgid "Exposure Program" msgstr "Belichtingsprogramma" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 msgid "Scene Mode" msgstr "Scènemodus" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 msgid "HDR Mode" msgstr "HDR-modus" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 #, fuzzy msgid "Still Capture Mode" msgstr "Opname van stilstaand beeld" #: camlibs/ptp2/config.c:6725 msgid "Canon Shooting Mode" msgstr "Canon-opnamemodus" #: camlibs/ptp2/config.c:6726 #, fuzzy msgid "Canon Auto Exposure Mode" msgstr "Canon auto-belichtingsmodus" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 msgid "Drive Mode" msgstr "Drivemodus" #: camlibs/ptp2/config.c:6728 msgid "Picture Style" msgstr "Afbeeldingsstijl" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "Focusmetingmodus" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "Meetmethode belichting" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "Focuspunt" #: camlibs/ptp2/config.c:6738 msgid "Capture Delay" msgstr "Opnamevertraging" #: camlibs/ptp2/config.c:6742 msgid "Shutter Speed 2" msgstr "Sluitertijd 2" #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "Sluitertijd 2" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "Meetmethode" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 msgid "AF Distance" msgstr "Autofocusafstand" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 msgid "Focus Area Wrap" msgstr "Focuszoneoverloop" #: camlibs/ptp2/config.c:6751 msgid "Exposure Delay Mode" msgstr "Belichtingsuitstellingsmodus" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 msgid "Exposure Lock" msgstr "Belichtingsvergrendeling" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "Belichtings-/focusvergrendeling" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "Opeenvolging bestandsnummers" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 msgid "Flash Sign" msgstr "Flitssignaal" #: camlibs/ptp2/config.c:6759 #, fuzzy msgid "Modelling Flash" msgstr "Altijd flitsen" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "Beeldzoekerraster" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 msgid "Image Review" msgstr "Beeldoverzicht" #: camlibs/ptp2/config.c:6762 msgid "Image Rotation Flag" msgstr "Beeldrotatievlag" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 msgid "Flash Mode Manual Power" msgstr "" #: camlibs/ptp2/config.c:6765 msgid "Auto Focus Area" msgstr "Autofocuszone" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 msgid "Flash Exposure Compensation" msgstr "Flitsbelichtingscompensatie" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 #, fuzzy msgid "Bracketing" msgstr "Belichting reeksopname" #: camlibs/ptp2/config.c:6769 #, fuzzy msgid "Bracket Mode" msgstr "Reeksvolgorde" #: camlibs/ptp2/config.c:6770 msgid "EV Step" msgstr "" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 msgid "Bracket Set" msgstr "Opnamereeks" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "Reeksvolgorde" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "Burst-nummer" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "Burst-interval" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "Maximum opnames" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 msgid "Auto White Balance Bias" msgstr "Witbalans: automatisch" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 msgid "Tungsten White Balance Bias" msgstr "Witbalans: gloeilamp" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 msgid "Fluorescent White Balance Bias" msgstr "Witbalans: TL-licht" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 msgid "Daylight White Balance Bias" msgstr "Witbalans: daglicht" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 msgid "Flash White Balance Bias" msgstr "Witbalans: flits" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 msgid "Cloudy White Balance Bias" msgstr "Witbalans: bewolkt" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 msgid "Shady White Balance Bias" msgstr "Witbalans: schaduw" #: camlibs/ptp2/config.c:6794 msgid "White Balance Bias Preset Nr" msgstr "Witbalans-voorinstellingsnummer" #: camlibs/ptp2/config.c:6795 msgid "White Balance Bias Preset 0" msgstr "Witbalans-voorinstelling 0" #: camlibs/ptp2/config.c:6796 msgid "White Balance Bias Preset 1" msgstr "Witbalans-voorinstelling 1" #: camlibs/ptp2/config.c:6797 msgid "White Balance Bias Preset 2" msgstr "Witbalans-voorinstelling 2" #: camlibs/ptp2/config.c:6798 msgid "White Balance Bias Preset 3" msgstr "Witbalans-voorinstelling 3" #: camlibs/ptp2/config.c:6799 msgid "White Balance Bias Preset 4" msgstr "Witbalans-voorinstelling 4" #: camlibs/ptp2/config.c:6800 msgid "Selftimer Delay" msgstr "Zelfontspannertijd" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "Centrumzone" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 msgid "Flash Shutter Speed" msgstr "Flitssluitertijd" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 msgid "Remote Timeout" msgstr "Timeout op afstand" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 #, fuzzy msgid "Remote Mode" msgstr "Opnamemodus" #: camlibs/ptp2/config.c:6805 msgid "Application Mode" msgstr "Toepassingsmodus" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "Beeldoptimalisatie" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 msgid "Sharpening" msgstr "Scherpte" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 msgid "Tone Compensation" msgstr "Tooncompensatie" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 msgid "Saturation" msgstr "Verzadiging" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 msgid "Hue Adjustment" msgstr "Tintaanpassing" #: camlibs/ptp2/config.c:6811 #, fuzzy msgid "Auto Exposure Bracketing" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/config.c:6812 msgid "Movie Sound" msgstr "Filmgeluid" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 #, fuzzy msgid "Manual Movie Setting" msgstr "Handmatige reeksopname (bracketing)" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "Microfoon" #: camlibs/ptp2/config.c:6815 #, fuzzy msgid "Reverse Indicators" msgstr "Commandokiezer omkeren" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 msgid "Video Mode" msgstr "Videomodus" #: camlibs/ptp2/config.c:6835 msgid "Meter Off Time" msgstr "Meter-uitschakelingstijd" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "Functieknop toewijzen" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 #, fuzzy msgid "Assign Preview Button" msgstr "Voorproefknop toewijzen" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 msgid "Movie Quality" msgstr "Filmkwaliteit" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 msgid "Minimum Shutter Speed" msgstr "Minimum sluitertijd" #: camlibs/ptp2/config.c:6862 #, fuzzy msgid "Movie Resolution" msgstr "Bestandsresolutie" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 msgid "Continuous Shooting Speed Slow" msgstr "Continue opnamemodus, lage snelheid" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "Flitssynchronisatiesnelheid" #: camlibs/ptp2/config.c:6869 #, fuzzy msgid "Focus Metering" msgstr "Focusmetingmodus" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 msgid "High ISO Noise Reduction" msgstr "Hoge ISO-ruisonderdrukking" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 msgid "Continuous Shooting Speed High" msgstr "Continue opnamemodus, hoge snelheid" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 msgid "JPEG Compression Policy" msgstr "JPEG-compressiebeleid" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "AF-activering" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "Dynamische AF-zone" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 msgid "AF Lock On" msgstr "AF-vergrendeling aan" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "AF-zonepunt" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "AF op knop" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "Hoge ISO-ruisonderdrukking" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 #, fuzzy msgid "Raw Compression" msgstr "Comprimering" #: camlibs/ptp2/config.c:6922 #, fuzzy msgid "Image Quality 2" msgstr "Beeldkwaliteit" #: camlibs/ptp2/config.c:6944 msgid "Image Settings" msgstr "Beeldinstellingen" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "Opname-instellingen" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "Wifi-profielen" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 msgid "Other PTP Device Properties" msgstr "Andere PTP-toesteleigenschappen" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "PTP-eigenschap 0x%04x" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "Eigenschap '%s' / 0x%04x is momenteel alleen-lezen." #: camlibs/ptp2/config.c:7324 #, fuzzy, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "Eigenschap '%s' / 0x%04x is niet ingesteld; PTP-foutcode is 0x%04x." #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, fuzzy, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "Eigenschap '%s' / 0x%04x is niet ingesteld; PTP-foutcode is 0x%04x." #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 #, fuzzy msgid "Canon enable viewfinder failed" msgstr "Inschakelen van Canon-beeldzoeker is mislukt: %d" #: camlibs/ptp2/library.c:2403 #, fuzzy msgid "Canon get viewfinder image failed" msgstr "Ophalen van beeld van Canon-beeldzoeker is mislukt: %d" #: camlibs/ptp2/library.c:2537 msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "Uw Canon-camera ondersteunt de Canon-Viewfinder-modus niet" #: camlibs/ptp2/library.c:2545 msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "Uw Nikon-camera ondersteunt de LiveView-modus niet" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "" #: camlibs/ptp2/library.c:2660 #, fuzzy msgid "Nikon disable liveview failed" msgstr "Uitschakelen van Canon-beeldzoeker is mislukt: %d" #: camlibs/ptp2/library.c:2799 msgid "Sorry, your camera does not support Nikon capture" msgstr "Deze camera ondersteunt geen Nikon-beeldopname" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Deze Canon-camera ondersteunt geen EOS-beeldopname" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 #, fuzzy msgid "Canon EOS Half-Press failed" msgstr "Canon EOS-opname is mislukt: %x" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 #, fuzzy msgid "Canon EOS Get Changes failed" msgstr "Canon EOS-opname is mislukt: 0x%04x" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 #, fuzzy msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "Canon EOS-opname is mislukt: %x" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 #, fuzzy msgid "Canon EOS Half-Release failed" msgstr "Canon EOS-opname is mislukt: %x" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 #, fuzzy msgid "Canon EOS Full-Press failed" msgstr "Canon EOS-opname is mislukt: %x" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 #, fuzzy msgid "Canon EOS Full-Release failed" msgstr "Canon EOS-opname is mislukt: %x" #: camlibs/ptp2/library.c:3106 #, fuzzy msgid "Canon EOS Capture failed" msgstr "Canon EOS-opname is mislukt: %x" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "Canon EOS-opname is mislukt: %x" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 #, fuzzy msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "Canon EOS-opname is mislukt: %x" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 #, fuzzy msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "Canon EOS-opname is mislukt: %x" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" #: camlibs/ptp2/library.c:3332 msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "Deze Canon-camera ondersteunt geen opname-initiatie" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 #, fuzzy msgid "Canon disable viewfinder failed" msgstr "Uitschakelen van Canon-beeldzoeker is mislukt: %d" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 #, fuzzy msgid "Canon Capture failed" msgstr "Canon-opname is mislukt: %x" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "Deze camera ondersteunt geen generische beeldopname" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "alleen-lezen" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "lezen+schrijven" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, c-format msgid "Manufacturer: %s\n" msgstr "Fabrikant: %s\n" #: camlibs/ptp2/library.c:4800 #, c-format msgid "Model: %s\n" msgstr "Model: %s\n" #: camlibs/ptp2/library.c:4802 #, c-format msgid " Version: %s\n" msgstr " Versie: %s\n" #: camlibs/ptp2/library.c:4805 #, c-format msgid " Serial Number: %s\n" msgstr " Serienummer: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "" #: camlibs/ptp2/library.c:4821 #, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "PTP-standaardversie: %d.%d\n" #: camlibs/ptp2/library.c:4828 #, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Functionele modus: 0x%04x\n" #: camlibs/ptp2/library.c:4833 #, c-format msgid "" "\n" "Capture Formats: " msgstr "" "\n" "Opname-indelingen: " #: camlibs/ptp2/library.c:4847 #, c-format msgid "Display Formats: " msgstr "Weergave-indelingen: " #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "Ondersteunde MTP-objecteigenschappen:\n" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr " PTP-fout %04x na vraag" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" "\n" "Toestelmogelijkheden:\n" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "\tbestand downloaden, " #: camlibs/ptp2/library.c:4902 #, c-format msgid "File Deletion, " msgstr "bestandsverwijdering, " #: camlibs/ptp2/library.c:4904 #, c-format msgid "No File Deletion, " msgstr "geen bestandsverwijdering, " #: camlibs/ptp2/library.c:4908 #, c-format msgid "File Upload\n" msgstr "bestand uploaden\n" #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "geen bestandsupload\n" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4920 #, c-format msgid "Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4929 #, c-format msgid "Canon Capture" msgstr "Canon-opname" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "Canon EOS-opname" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "" #: camlibs/ptp2/library.c:4947 #, c-format msgid "Nikon Capture 1" msgstr "Nikon-opname 1" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "%sNikon-opname 2" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "%sNikon-opname 3 " #: camlibs/ptp2/library.c:4965 #, c-format msgid "Sony Capture" msgstr "Sony-opname" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "Geen fabrikantspecifieke opname\n" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "\tNikon Wifi-ondersteuning\n" #: camlibs/ptp2/library.c:4991 #, c-format msgid "\tCanon Wifi support\n" msgstr "\tCanon Wifi-ondersteuning\n" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" "\n" "Samenvatting van opslagapparaten:\n" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "\tOpslagomschrijving: %s\n" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "\tVolumenlabel: %s\n" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "ingebouwde ROM" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "verwijderbare ROM" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "ingebouwde RAM" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "verwijderbare RAM (geheugenkaart)" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, c-format msgid "Unknown: 0x%04x\n" msgstr "Onbekend: 0x%04x\n" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "\tOpslagtype: %s\n" #: camlibs/ptp2/library.c:5043 msgid "Generic Flat" msgstr "gewoon vlak" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "gewoon hiërarchish" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "layout van digitale camera (DCIM)" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "\tBestandssysteemsoort: %s\n" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "lezen+schrijven" #: camlibs/ptp2/library.c:5056 msgid "Read-Only" msgstr "alleen-lezen" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "alleen-lezen plus objectverwijdering" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "\tToegangsrechten: %s\n" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "\tMaximum capaciteit: %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "\tVrije ruimte (bytes): %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5075 #, c-format msgid "\tFree Space (Images): %d\n" msgstr "\tVrije ruimte (beelden): %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" "\n" "Samenvatting van apparaateigenschappen:\n" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr " niet uitgelezen.\n" #: camlibs/ptp2/library.c:5116 #, c-format msgid "cannot be queried.\n" msgstr "kan niet gepolst worden.\n" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr " fout %x na vraag." #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "Bestand '%s/%s' bestaat niet." #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "Metagegevens worden alleen ondersteund voor MTP-apparaten." #: camlibs/ptp2/library.c:6414 #, fuzzy msgid "Device does not support setting object protection." msgstr "Deze camera ondersteunt het wijzigen van instellingsopties niet." #: camlibs/ptp2/library.c:6418 #, fuzzy, c-format msgid "Device failed to set object protection to %d" msgstr "Deze camera ondersteunt het wijzigen van instellingsopties niet." #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Initialisatie van camera" #: camlibs/ptp2/library.c:7254 #, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "" "Momenteel is PTP alleen voor USB- en PTP/IP-camera's geïmplementeerd, met " "poorttype %x" #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "PTP - Ongedefinieerde fout" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP OK!" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "PTP - Algemene fout" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP: Sessie is niet open" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP: Ongeldig transactie-ID" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "PTP: Actie wordt niet ondersteund" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "PTP: Parameter wordt niet ondersteund" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP: Overdracht is niet compleet" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP: Ongeldig opslag-ID" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "PTP: Ongeldig objecthandvat" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "PTP: Toesteleigenschap wordt niet ondersteund" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP: Ongeldige objectopmaakcode" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP: Opslagruimte is vol" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP: Object is tegen schrijven beveiligd" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "PTP: Opslagruimte is alleen-lezen" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP: Toegang geweigerd" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP: Geen miniatuurvoorbeeld aanwezig" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP: Zelftest is mislukt" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP: Gedeeltelijk verwijderd" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "PTP: Opslagruimte is niet beschikbaar" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "PTP: Specificatie door formaat niet ondersteund" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "PTP: Geen geldige objectinformatie" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP: Ongeldig codeformaat" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "PTP: Onbekende leverancierscode" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP: Opname is reeds beëindigd" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "PTP: Toestel is bezig" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "PTP: Ongeldig hoofdobject" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "PTP: Ongeldige opmaak van toesteleigenschap" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "PTP: Ongeldige waarde voor toesteleigenschap" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "PTP: Ongeldige parameter" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP: Sessie is reeds geopend" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP: Transactie is geannuleerd" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "PTP: Opgave van bestemming wordt niet ondersteund" #: camlibs/ptp2/ptp.c:4047 #, fuzzy msgid "Filename Required" msgstr "PTP EK: Bestandsnaam is vereist" #: camlibs/ptp2/ptp.c:4048 #, fuzzy msgid "Filename Conflicts" msgstr "PTP EK: Bestandsnaamconflict" #: camlibs/ptp2/ptp.c:4049 #, fuzzy msgid "Filename Invalid" msgstr "PTP EK: Ongeldige bestandsnaam" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "Hardwarefout" #: camlibs/ptp2/ptp.c:4052 msgid "Out of Focus" msgstr "Onscherp" #: camlibs/ptp2/ptp.c:4053 msgid "Change Camera Mode Failed" msgstr "Verandering van cameramodus is mislukt" #: camlibs/ptp2/ptp.c:4054 msgid "Invalid Status" msgstr "Ongeldige toestand" #: camlibs/ptp2/ptp.c:4055 msgid "Set Property Not Supported" msgstr "Eigenschap instellen wordt niet ondersteund" #: camlibs/ptp2/ptp.c:4056 msgid "Whitebalance Reset Error" msgstr "Witbalans-resetfout" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "" #: camlibs/ptp2/ptp.c:4058 #, fuzzy msgid "Shutter Speed Bulb" msgstr "Sluitertijd" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "Spiegel-omhoog-sequentie" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "" #: camlibs/ptp2/ptp.c:4066 #, fuzzy msgid "Unknown Command" msgstr "Onbekende opdracht" #: camlibs/ptp2/ptp.c:4067 #, fuzzy msgid "Operation Refused" msgstr "Actie is geweigerd" #: camlibs/ptp2/ptp.c:4068 #, fuzzy msgid "Lens Cover Present" msgstr "Lensdop aanwezig" #: camlibs/ptp2/ptp.c:4069 #, fuzzy msgid "Battery Low" msgstr "Accu is bijna leeg" #: camlibs/ptp2/ptp.c:4070 #, fuzzy msgid "Camera Not Ready" msgstr "Camera is niet gereed" #: camlibs/ptp2/ptp.c:4072 msgid "PTP Timeout" msgstr "PTP-timeout" #: camlibs/ptp2/ptp.c:4073 #, fuzzy msgid "PTP Cancel Request" msgstr "PTP-annuleringsverzoek" #: camlibs/ptp2/ptp.c:4075 #, fuzzy msgid "PTP Response Expected" msgstr "PTP-protocolfout, antwoord werd verwacht" #: camlibs/ptp2/ptp.c:4076 #, fuzzy msgid "PTP Data Expected" msgstr "PTP-protocolfout, data werd verwacht" #: camlibs/ptp2/ptp.c:4077 #, fuzzy msgid "PTP I/O Error" msgstr "PTP-invoer-/uitvoerfout" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "Ongedefinieerde PTP-eigenschap" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "Functionele modus" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "Compressie-instelling" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Witbalans" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "RGB-versterking" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "Belichtingstijd" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "Belichtingsprogrammamodus" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "Belichtingsindex (volgens ISO)" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "Belichtingscompensatie" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "Vertraging voor-opname" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "Contrast" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Digitale zoom" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "Tijdspanne-nummer" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "Tijdspanne-interval" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "Upload-URL" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "Copyrightinfo" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "Ondersteunde waarden" #: camlibs/ptp2/ptp.c:4136 #, fuzzy msgid "Enabled Streams" msgstr "Ongeldige toestand" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Datumopmaak" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Bestandsresolutie" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "Filmkwaliteit" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Contrast" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "Helderheid" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Datumopmaak" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "Opmaak van datum-/tijdweergave" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "Video-uit" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "Stroombesparend" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "Taal gebruikersinterface" #: camlibs/ptp2/ptp.c:4169 msgid "Battery Type" msgstr "Accutype" #: camlibs/ptp2/ptp.c:4170 msgid "Battery Mode" msgstr "Accumodus" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "" #: camlibs/ptp2/ptp.c:4172 msgid "Camera Mode" msgstr "Cameramodus" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "" #: camlibs/ptp2/ptp.c:4176 msgid "Self Time" msgstr "Zelfontspannertijd" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 msgid "Shooting Mode" msgstr "Opnamemodus" #: camlibs/ptp2/ptp.c:4180 msgid "Image Mode" msgstr "Beeldmodus" #: camlibs/ptp2/ptp.c:4187 msgid "Slow Shutter Setting" msgstr "Lange sluitertijd" #: camlibs/ptp2/ptp.c:4188 msgid "AF Mode" msgstr "Autofocusmodus" #: camlibs/ptp2/ptp.c:4189 msgid "Image Stabilization" msgstr "Beeldstabilisatie" #: camlibs/ptp2/ptp.c:4191 msgid "Color Gain" msgstr "Kleurversterking" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "Gevoeligheid" #: camlibs/ptp2/ptp.c:4194 msgid "Parameter Set" msgstr "Parameterset" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "Focuslengte tele" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "Focuslengte breed" #: camlibs/ptp2/ptp.c:4206 #, fuzzy msgid "Focal Length Denominator" msgstr "Focuslengte" #: camlibs/ptp2/ptp.c:4207 msgid "Capture Transfer Mode" msgstr "Opnameoverdrachtmodus" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "Naamvoorvoegsel" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "Beeldgrootte-/kwaliteitsmodus" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "Ondersteunde miniatuurgrootte" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "Grootte van uitvoergegevens uit camera" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "Grootte van invoergegevens naar camera" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "Camera-eigenaar" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "UNIX-tijd" #: camlibs/ptp2/ptp.c:4219 msgid "Camera Body ID" msgstr "Camera body-ID" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "" #: camlibs/ptp2/ptp.c:4223 msgid "Digital Zoom Magnification" msgstr "Digitale zoomvergroting" #: camlibs/ptp2/ptp.c:4224 msgid "Ml Spot Position" msgstr "" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "" #: camlibs/ptp2/ptp.c:4232 #, fuzzy msgid "Flash Quantity Count" msgstr "Flits auto" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "Rotatiehoek" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "Soort diashow" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "Gemiddelde bestandsgroottes" #: camlibs/ptp2/ptp.c:4239 msgid "Model ID" msgstr "Model-ID" #: camlibs/ptp2/ptp.c:4248 #, fuzzy msgid "Shooting Bank" msgstr "Opnamemodus" #: camlibs/ptp2/ptp.c:4250 #, fuzzy msgid "Shooting Bank Name A" msgstr "Opnamemodus" #: camlibs/ptp2/ptp.c:4252 #, fuzzy msgid "Shooting Bank Name B" msgstr "Opnamemodus" #: camlibs/ptp2/ptp.c:4254 #, fuzzy msgid "Shooting Bank Name C" msgstr "Opnamemodus" #: camlibs/ptp2/ptp.c:4256 #, fuzzy msgid "Shooting Bank Name D" msgstr "Opnamemodus" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "Witbalans-kleurtemperatuur" #: camlibs/ptp2/ptp.c:4278 msgid "White Balance Preset Number" msgstr "Witbalans-voorinstellingsnummer" #: camlibs/ptp2/ptp.c:4280 msgid "White Balance Preset Name 0" msgstr "Witbalans-voorinstellingsnaam 0" #: camlibs/ptp2/ptp.c:4282 msgid "White Balance Preset Name 1" msgstr "Witbalans-voorinstellingsnaam 1" #: camlibs/ptp2/ptp.c:4284 msgid "White Balance Preset Name 2" msgstr "Witbalans-voorinstellingsnaam 2" #: camlibs/ptp2/ptp.c:4286 msgid "White Balance Preset Name 3" msgstr "Witbalans-voorinstellingsnaam 3" #: camlibs/ptp2/ptp.c:4288 msgid "White Balance Preset Name 4" msgstr "Witbalans-voorinstellingsnaam 4" #: camlibs/ptp2/ptp.c:4290 msgid "White Balance Preset Value 0" msgstr "Witbalans-voorinstellingswaarde 0" #: camlibs/ptp2/ptp.c:4292 msgid "White Balance Preset Value 1" msgstr "Witbalans-voorinstellingswaarde 1" #: camlibs/ptp2/ptp.c:4294 msgid "White Balance Preset Value 2" msgstr "Witbalans-voorinstellingswaarde 2" #: camlibs/ptp2/ptp.c:4296 msgid "White Balance Preset Value 3" msgstr "Witbalans-voorinstellingswaarde 3" #: camlibs/ptp2/ptp.c:4298 msgid "White Balance Preset Value 4" msgstr "Witbalans-voorinstellingswaarde 4" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "Focuslengte van lens (non-CPU)" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "Max. diafragma van lens (non-CPU)" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "Verticale AF aan" #: camlibs/ptp2/ptp.c:4360 #, fuzzy msgid "Focus Area Zone" msgstr "Focuszoneoverloop" #: camlibs/ptp2/ptp.c:4362 msgid "Enable Copyright" msgstr "Copyright inschakelen" #: camlibs/ptp2/ptp.c:4366 msgid "Exposure ISO Step" msgstr "ISO-belichtingsstap" #: camlibs/ptp2/ptp.c:4368 msgid "Exposure Step" msgstr "Belichtingsstap" #: camlibs/ptp2/ptp.c:4370 msgid "Exposure Compensation (EV)" msgstr "Belichtingscompensatie (EV)" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "Centrumzone" #: camlibs/ptp2/ptp.c:4376 #, fuzzy msgid "Exposure Base Matrix" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/ptp.c:4378 #, fuzzy msgid "Exposure Base Center" msgstr "Belichtingsmeter" #: camlibs/ptp2/ptp.c:4380 #, fuzzy msgid "Exposure Base Spot" msgstr "Belichtingstrap" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "LiveView-AF-zone" #: camlibs/ptp2/ptp.c:4390 msgid "Auto Meter Off Time" msgstr "Tijd automatische uitschakeling" #: camlibs/ptp2/ptp.c:4392 msgid "Self Timer Delay" msgstr "Zelfontspannertijd" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "" #: camlibs/ptp2/ptp.c:4398 #, fuzzy msgid "Auto Off Timers" msgstr "Tijd tot automatische uitschakeling" #: camlibs/ptp2/ptp.c:4400 #, fuzzy msgid "Angle Level" msgstr "Volumeniveau" #: camlibs/ptp2/ptp.c:4402 msgid "Shooting Speed" msgstr "Opnamesnelheid" #: camlibs/ptp2/ptp.c:4406 msgid "Exposure delay mode" msgstr "Belichtingsuitstellingsmodus" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 msgid "Long Exposure Noise Reduction" msgstr "Ruisonderdrukking bij lange belichting" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "LCD-verlichting" #: camlibs/ptp2/ptp.c:4418 msgid "High ISO noise reduction" msgstr "Hoge ISO-ruisonderdrukking" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "Tips in beeld" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "Auteursnaam" #: camlibs/ptp2/ptp.c:4424 msgid "Copyright Information" msgstr "Copyright-informatie" #: camlibs/ptp2/ptp.c:4432 msgid "Modeling Flash" msgstr "Altijd flitsen" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "Handmatige reeksopname (bracketing)" #: camlibs/ptp2/ptp.c:4440 msgid "Auto Bracket Selection" msgstr "Automatische opnamereeksselectie" #: camlibs/ptp2/ptp.c:4441 msgid "NIKON Auto Bracketing Set" msgstr "Nikon opnamereeks" #: camlibs/ptp2/ptp.c:4443 msgid "Center Button Shooting Mode" msgstr "Centrale knop opnamemodus" #: camlibs/ptp2/ptp.c:4445 msgid "Center Button Playback Mode" msgstr "Centrale knop weergavemodus" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "Multikiezer" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "Fotoinformatieweergave" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "Functieknop toewijzen" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "Commandokiezer aanpassen" #: camlibs/ptp2/ptp.c:4457 msgid "Aperture Setting" msgstr "Diafragma-instelling" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "Knoppen en kiezers" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "Geen CF-kaart uitworp" #: camlibs/ptp2/ptp.c:4465 msgid "Center Button Zoom Ratio" msgstr "Centrale knop zoomfactor" #: camlibs/ptp2/ptp.c:4467 msgid "Function Button 2" msgstr "Functieknop 2" #: camlibs/ptp2/ptp.c:4471 msgid "Normal AF On" msgstr "Normale AF aan" #: camlibs/ptp2/ptp.c:4473 msgid "Clean Image Sensor" msgstr "Beeldsensor schoonmaken" #: camlibs/ptp2/ptp.c:4475 msgid "Image Comment String" msgstr "Beeldcommentaartekst" #: camlibs/ptp2/ptp.c:4477 msgid "Image Comment Enable" msgstr "Beeldcommentaar-inschakeling" #: camlibs/ptp2/ptp.c:4479 msgid "Image Rotation" msgstr "Beeldrotatie" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "" #: camlibs/ptp2/ptp.c:4487 #, fuzzy msgid "Movie Microphone" msgstr "Microfoon uit" #: camlibs/ptp2/ptp.c:4489 #, fuzzy msgid "Movie Card Slot" msgstr "Beeldkwaliteit" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "" #: camlibs/ptp2/ptp.c:4497 #, fuzzy msgid "Bracketing Enable" msgstr "Belichting reeksopname" #: camlibs/ptp2/ptp.c:4499 #, fuzzy msgid "Exposure Bracketing Step" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/ptp.c:4501 #, fuzzy msgid "Exposure Bracketing Program" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/ptp.c:4503 #, fuzzy msgid "Auto Exposure Bracket Count" msgstr "Belichting reeksopname (bracketing)" #: camlibs/ptp2/ptp.c:4504 #, fuzzy msgid "White Balance Bracket Step" msgstr "Nikon witbalansstap" #: camlibs/ptp2/ptp.c:4505 #, fuzzy msgid "White Balance Bracket Program" msgstr "Nikon witbalansstap" #: camlibs/ptp2/ptp.c:4507 msgid "Lens ID" msgstr "Lens-ID" #: camlibs/ptp2/ptp.c:4509 msgid "Lens Sort" msgstr "Lenssoort" #: camlibs/ptp2/ptp.c:4511 msgid "Lens Type" msgstr "Lenstype" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "Min. focuslengte" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "Max. focuslengte" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "Max. diafragmaopening bij min. focuslengte" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "Max. diafragmaopening bij max. focuslengte" #: camlibs/ptp2/ptp.c:4521 #, fuzzy msgid "Finder ISO Display" msgstr "Beeldzoekerraster" #: camlibs/ptp2/ptp.c:4523 #, fuzzy msgid "Auto Off Photo" msgstr "Tijd tot automatische uitschakeling" #: camlibs/ptp2/ptp.c:4525 #, fuzzy msgid "Auto Off Menu" msgstr "Tijd tot automatische uitschakeling" #: camlibs/ptp2/ptp.c:4527 #, fuzzy msgid "Auto Off Info" msgstr "Tijd tot automatische uitschakeling" #: camlibs/ptp2/ptp.c:4529 #, fuzzy msgid "Self Timer Shot Number" msgstr "Zelfontspannertijd" # Originele string lijkt me fout. #: camlibs/ptp2/ptp.c:4531 #, fuzzy msgid "Vignette Control" msgstr "Hoog contrast" #: camlibs/ptp2/ptp.c:4537 #, fuzzy msgid "Nikon Exposure Time" msgstr "Belichtingstijd" #: camlibs/ptp2/ptp.c:4539 #, fuzzy msgid "Warning Status" msgstr "Kaartstatus:\t\t" #: camlibs/ptp2/ptp.c:4546 msgid "AF LCD Top Mode 2" msgstr "AF LCD Top modus 2" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "Actieve AF-sensor" #: camlibs/ptp2/ptp.c:4552 msgid "Exposure Meter" msgstr "Belichtingsmeter" #: camlibs/ptp2/ptp.c:4556 msgid "USB Speed" msgstr "USB-snelheid" #: camlibs/ptp2/ptp.c:4558 msgid "CCD Serial Number" msgstr "CCD-serienummer" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "" #: camlibs/ptp2/ptp.c:4564 #, fuzzy msgid "FNumber Lock" msgstr "F-nummer" #: camlibs/ptp2/ptp.c:4566 msgid "Exposure Aperture Lock" msgstr "Diafragma belichtingsvergrendeling" #: camlibs/ptp2/ptp.c:4568 #, fuzzy msgid "TV Lock Setting" msgstr "TV A/V-instellingen" #: camlibs/ptp2/ptp.c:4570 #, fuzzy msgid "AV Lock Setting" msgstr "TV A/V-instellingen" #: camlibs/ptp2/ptp.c:4572 #, fuzzy msgid "Illum Setting" msgstr "Beeldinstellingen" #: camlibs/ptp2/ptp.c:4574 #, fuzzy msgid "Focus Point Bright" msgstr "Focuspunt" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "Externe flits aangesloten" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "Externe flitsstatus" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "Externe flitssoort" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 msgid "External Flash Mode" msgstr "Externe flitsmodus" #: camlibs/ptp2/ptp.c:4584 msgid "External Flash Compensation" msgstr "Externe flitscompensatie" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "ZW-vuleffect" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "ZW-scherpte" #: camlibs/ptp2/ptp.c:4604 msgid "BW Contrast" msgstr "ZW-contrast" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "ZW-instellingstype" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "" #: camlibs/ptp2/ptp.c:4614 msgid "Flourescent Type" msgstr "Soort TL-licht" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "Bijstelling van kleurtemperatuur" #: camlibs/ptp2/ptp.c:4618 msgid "Tune Preset 0" msgstr "Bijstelling 0" #: camlibs/ptp2/ptp.c:4620 msgid "Tune Preset 1" msgstr "Bijstelling 1" #: camlibs/ptp2/ptp.c:4622 msgid "Tune Preset 2" msgstr "Bijstelling 2" #: camlibs/ptp2/ptp.c:4624 msgid "Tune Preset 3" msgstr "Bijstelling 3" #: camlibs/ptp2/ptp.c:4626 msgid "Tune Preset 4" msgstr "Bijstelling 4" #: camlibs/ptp2/ptp.c:4630 msgid "Autofocus Mode" msgstr "Autofocusmodus" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "Autofocushulplicht" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "Auto ISO P/A/DVP-instelling" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "Beeldzoekerraster" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "" #: camlibs/ptp2/ptp.c:4656 #, fuzzy msgid "Auto FP" msgstr "Auto" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "Waarschuwingsweergave" #: camlibs/ptp2/ptp.c:4662 msgid "Battery Cell Kind" msgstr "Soort accucellen" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "Continu, hoge snelheid" #: camlibs/ptp2/ptp.c:4670 #, fuzzy msgid "Info Disp Setting" msgstr "Flitsinstelling" #: camlibs/ptp2/ptp.c:4672 #, fuzzy msgid "Preview Button" msgstr "Voorproefknop" #: camlibs/ptp2/ptp.c:4674 #, fuzzy msgid "Preview Button 2" msgstr "Voorproefknop 2" #: camlibs/ptp2/ptp.c:4676 #, fuzzy msgid "AEAF Lock Button 2" msgstr "Alleen belichtingsvergrendeling" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "" #: camlibs/ptp2/ptp.c:4684 msgid "Live View Mode" msgstr "" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "" #: camlibs/ptp2/ptp.c:4694 msgid "Exposure Display Status" msgstr "" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "" #: camlibs/ptp2/ptp.c:4700 msgid "Exposure Indicate Lightup" msgstr "" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "" #: camlibs/ptp2/ptp.c:4708 #, fuzzy msgid "Flash MRepeat Count" msgstr "Flitscompensatie" #: camlibs/ptp2/ptp.c:4710 #, fuzzy msgid "Flash MRepeat Interval" msgstr "Tijdspanne-interval" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "" #: camlibs/ptp2/ptp.c:4749 #, fuzzy msgid "Image Compression" msgstr "Comprimering" #: camlibs/ptp2/ptp.c:4758 msgid "Secure Time" msgstr "" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "Toestelcertificaat" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "Herroepingsinfo" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "Synchronisatiepartner" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "Gewone toestelnaam" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "Volumeniveau" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "Toestelpictogram" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "Gedetecteerd toesteltype" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "Afspeelsnelheid" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "Afspeelobject" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "Afspeelcontainerindex" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "Afspeelpositie" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "PlaysForSure-ID" #: camlibs/ptp2/ptp.c:4782 msgid "Quality" msgstr "Kwaliteit" #: camlibs/ptp2/ptp.c:4783 msgid "Release Mode" msgstr "" #: camlibs/ptp2/ptp.c:4784 msgid "Focus Areas" msgstr "Focuszones" #: camlibs/ptp2/ptp.c:4785 msgid "AE Lock" msgstr "" #: camlibs/ptp2/ptp.c:4797 #, fuzzy msgid "Image size" msgstr "Beeldgrootte" #: camlibs/ptp2/ptp.c:4798 #, fuzzy msgid "Shutter speed" msgstr "Sluitertijd" #: camlibs/ptp2/ptp.c:4799 #, fuzzy msgid "Color temperature" msgstr "Kleurtemperatuur" #: camlibs/ptp2/ptp.c:4802 #, fuzzy msgid "Expose Index" msgstr "Belichtingstijd" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 #, fuzzy msgid "Still Image" msgstr "Volledig beeld" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "%.1f-stapjes" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "%.0f mm" #: camlibs/ptp2/ptp.c:4940 msgid "JPEG Norm" msgstr "JPEG Normaal" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "RAW + JPEG Basis" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Gloeilamp" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "Automatische macro (close-up)" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "Centrumgericht gemiddelde" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "Middelpunt" #: camlibs/ptp2/ptp.c:4966 msgid "Automatic flash" msgstr "Automatische flits" #: camlibs/ptp2/ptp.c:4969 msgid "Automatic Red-eye Reduction" msgstr "Automatische rodeogenreductie" #: camlibs/ptp2/ptp.c:4970 msgid "Red-eye fill flash" msgstr "Antirodeogen-invulflits" #: camlibs/ptp2/ptp.c:4988 #, fuzzy msgid "Power Wind" msgstr "Power Wind" #: camlibs/ptp2/ptp.c:4994 msgid "Timer + Remote" msgstr "" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "alleen AF-vergrendeling" #: camlibs/ptp2/ptp.c:5056 msgid "Flash Lock" msgstr "Flitsvergrendeling" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "Focuspunt terugzetten op centrum" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "Actieve focuspunt aangeven" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "ongebruikt" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "SD-RAM" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "USB 1.1" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "USB 2.0" #: camlibs/ptp2/ptp.c:5169 msgid "LCD Backlight" msgstr "LCD-achtergrondlicht" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "LCD-achtergrondlicht en infoweergave" #: camlibs/ptp2/ptp.c:5228 msgid "1 min" msgstr "1 min" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "5 min" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "10 min" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "15 min" #: camlibs/ptp2/ptp.c:5266 msgid "Dark on light" msgstr "Donker op licht" #: camlibs/ptp2/ptp.c:5267 msgid "Light on dark" msgstr "Licht op donker" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "Lithium-ion" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "Nikkel-metaalhydride" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "Nikkel-cadmium" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "Alkaline" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "Waarschuwingsniveau 1" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "Dringend" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "Waarschuwingsniveau 0" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "Economisch" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "Superfijn" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "Rodeogenreductie" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "Langzame synchronisatie" #: camlibs/ptp2/ptp.c:5345 msgid "Auto + Red Eye Suppression" msgstr "Auto + rodeogenreductie" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "Aan + rodeogenreductie" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "Veraf" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "Korte sluitertijd" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "Lange sluitertijd" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "Nacht" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "Grijswaarden" #: camlibs/ptp2/ptp.c:5370 msgid "Pan Focus" msgstr "Brede focus" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "Enkel-frames opnamemodus" #: camlibs/ptp2/ptp.c:5375 msgid "Continuous Shooting" msgstr "Continue opnamemodus" #: camlibs/ptp2/ptp.c:5376 #, fuzzy msgid "Timer (Single) Shooting" msgstr "Enkele opname" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "Centrumgerichte meting" #: camlibs/ptp2/ptp.c:5386 msgid "Spot Metering" msgstr "Puntsmeting" #: camlibs/ptp2/ptp.c:5387 msgid "Average Metering" msgstr "Gemiddelde meting" #: camlibs/ptp2/ptp.c:5388 msgid "Evaluative Metering" msgstr "Evaluerende meting" #: camlibs/ptp2/ptp.c:5389 msgid "Partial Metering" msgstr "Gedeeltelijke meting" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "Centrumgerichte gemiddelde meting" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "Puntsmeting gecombineerd met AF-frame" #: camlibs/ptp2/ptp.c:5392 msgid "Multi-Spot Metering" msgstr "Meerpuntsmeting" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "Lange-sluitertijdfunctie is niet beschikbaar" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "Laag 2" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 msgid "High 2" msgstr "Hoog 2" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "Standaardontwikkelingsparameters" #: camlibs/ptp2/ptp.c:5462 msgid "Development Parameters 1" msgstr "Ontwikkelingsparameters 1" #: camlibs/ptp2/ptp.c:5463 msgid "Development Parameters 2" msgstr "Ontwikkelingsparameters 2" #: camlibs/ptp2/ptp.c:5464 msgid "Development Parameters 3" msgstr "Ontwikkelingsparameters 3" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "" #: camlibs/ptp2/ptp.c:5600 msgid "Encounter" msgstr "" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "Firmware" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "" #: camlibs/ptp2/ptp.c:5605 msgid "Undefined Audio" msgstr "Ongedefinieerde audio" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5612 msgid "Undefined Video" msgstr "Ongedefinieerde video" #: camlibs/ptp2/ptp.c:5617 msgid "Undefined Collection" msgstr "Ongedefinieerde verzameling" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "WPL-afspeellijst" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "M3U-afspeellijst" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "MPL-afspeellijst" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "ASX-afspeellijst" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "PLS-afspeellijst" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "Ongedefinieerd document" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "Abstract document" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "XML-document" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "Microsoft Word-document" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "MHT-gecompileerd HTML-document" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "Microsoft Excel-spreadsheet (.xls)" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "Microsoft Powerpoint (.ppt)" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "Ongedefinieerd bericht" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "Abstract bericht" #: camlibs/ptp2/ptp.c:5643 msgid "Undefined Contact" msgstr "Ongedefinieerd contact" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "Abstract contact" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "vCard2" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "vCard3" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "Ongedefinieerd kalenderitem" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "Abstract kalenderitem" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "vCalendar1" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "vCalendar2" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "ongedefinieerd uitvoerbaar Windows-bestand" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "Sectie" #: camlibs/ptp2/ptp.c:5692 #, c-format msgid "Unknown(%04x)" msgstr "Onbekend (%04x)" #: camlibs/ptp2/ptp.c:5702 #, fuzzy msgid "Get device info" msgstr "Toestelinfo ophalen" #: camlibs/ptp2/ptp.c:5703 msgid "Open session" msgstr "Sessie openen" #: camlibs/ptp2/ptp.c:5704 msgid "Close session" msgstr "Sessie sluiten" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "Opslag-ID's ophalen" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "Opslaginfo ophalen" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "Aantal objecten ophalen" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "Objecthandvatten ophalen" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "Objectinfo ophalen" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "Object ophalen" #: camlibs/ptp2/ptp.c:5711 msgid "Get thumbnail" msgstr "Miniatuur ophalen" #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "Object verwijderen" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "Objectinfo versturen" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "Object versturen" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "Opname starten" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "Opslag formatteren" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "Toestel resetten" #: camlibs/ptp2/ptp.c:5718 msgid "Self test device" msgstr "Toestelzelftest uitvoeren" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "Objectbescherming instellen" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "Toestel uitschakelen" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "Open opname beëindigen" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "Object verplaatsen" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "Object kopiëren" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "Gedeeltelijk object ophalen" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "Open opname starten" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 msgid "Get Vendor Extension Maps" msgstr "" #: camlibs/ptp2/ptp.c:5735 #, fuzzy msgid "Get Vendor Device Info" msgstr "Toestelinfo ophalen" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 #, fuzzy msgid "Get Filesystem Manifest" msgstr "Snel bestandssysteem" #: camlibs/ptp2/ptp.c:5738 #, fuzzy msgid "Get Stream Info" msgstr "Opslaginfo ophalen" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "Objectreferenties ophalen" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "Objectreferenties instellen" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "Firmware van toestel bijwerken" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "" #: camlibs/ptp2/ptp.c:5759 msgid "Set license response" msgstr "" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "" #: camlibs/ptp2/ptp.c:5763 msgid "Get meter response" msgstr "" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "Mediasessie openen" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "Mediasessie sluiten" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "Volgende gegevensblok ophalen" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "WFC-object verwerken" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "Gedeeltelijk object ophalen (64-bits offset)" #: camlibs/ptp2/ptp.c:5800 msgid "Send Partial Object" msgstr "Gedeeltelijk object verzenden" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "Object afkappen" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "Begin van bewerkingsobject" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "Einde van bewerkingsobject" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "onbekend %d" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "PTP: Onbekende leverancierscode" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "Downloaden van film..." #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "Downloaden van geluid..." #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "Downloaden van EXIF-gegevens..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "Geen EXIF-gegevens beschikbaar voor %s." #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "Kan het bestand niet verwijderen." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "Kan de map niet verwijderen." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "Kan de map niet aanmaken." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "Versie: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "RTC-status:%d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "Cameratijd: %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "Camera-ID:%s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "Geen SD-kaart aanwezig.\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "SD-kaart-ID: %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "Foto's op camera: %d\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "SD-geheugen: %d MB totaal, %d MB vrij.\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "Intern geheugen: %d MB totaal, %d MB vrij.\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Omgekeerd ontwikkeld met gebruik van USB Snoopy, kijkend\n" "naar de bijwerking van het basissoftwarebeeld en wild gokkend.\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "gebaseerd op Bob Paauwe's sturprogramma\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "onbekend (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Model: %s\n" "Geheugen: %d byte(s) van %d beschikbaar" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2.0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1.5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1.0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0.5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0.0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0.5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1.0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1.5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2.0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Buiten" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Maximaal" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Minimaal" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Teken" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Geluid" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Beeld & geluid" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Teken & geluid" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Configuratie" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Algemeen" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Copyright (max 20 tekens)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "Afbeeldingen" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Witniveau" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Opnamemodus" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Comprimering" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "Snelheid %i wordt niet ondersteund!" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "Verwachtte %i, ontving %i. Rapporteer deze fout aan %s." #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "Verwachtte %i bytes, ontving %i. Rapporteer deze fout aan %s." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "0x%x werd verwacht, maar 0x%x ontvangen. Neem contact op met %s." #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "Onjuiste tekens (0x%x, 0x%x). Neem contact op met %s." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "" "Camera is bezig. Indien het probleem blijft, neem dan contact op met %s." #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "Zelfs na drie pogingen onderbroken. Neem contact op met %s." #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "Zelfs na drie pogingen een communicatiefout. Neem contact op met %s." #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "Camera in verkeerde modus. Neem contact op met %s." #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "De camera weigert de parameters. Neem contact op met %s." #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "Er is een onbekende fout opgetreden. Neem contact op met %s." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "De bestandsnaam mag uit maximaal 12 tekens bestaan ('%s' heeft er %i)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "Het 'Samsung digimax 800k'-stuurprogramma voor gphoto is geschreven door " "James McKenzie . Ported naar gphoto2 door Lutz " "Mueller . Marcus Meissner repareerde en verbeterde de port." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Resolutie plus grootte" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Datum en tijd (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 msgid "Aperture Settings" msgstr "Diafragma-instellingen" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Kleurmodus" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Rodeogenreductie" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Flitsinstellingen" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "PC-stroomspaarmodus (seconden)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Camera-stroomspaarmodus (seconden)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Lensmodus" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "Koreaans" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "Engels" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "Frans" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "Duits" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "Italiaans" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "Japans" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "Spaans" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "Portugees" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Afbeeldingsinstellingen" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Geen geheugenkaart aanwezig" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "Kan de accucapaciteit niet bepalen" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "Het accuniveau van de camera is te laag (%d%%). De actie is gestopt." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Kan de hoeveelheid resterend geheugen niet bepalen" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "De camera weigerde drie maal om een verbinding open te houden." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "De eerste ontvangen byte (0x%x) is niet geldig." #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "De transmissie van het pakket werd, zelfs na %i pogingen, onderbroken.\n" "Neem contact op met %s." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Kan het pakket, zelfs na meerdere pogingen, niet overbrengen." #: camlibs/sierra/library.c:789 #, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "Het pakket werd door de camera verworpen. Neem contact op met %s." #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "" "Kan het pakket niet overbrengen (foutcode %i). Neem contact op met %s." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "Transmissie is zelfs na drie pogingen mislukt. Gestopt..." #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "Kreeg onverwacht resultaat 0x%x. Neem contact op met %s." #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "Ontving onverwacht antwoord (%i). Neem contact op met %s." #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "Kan register %i niet ophalen. Neem contact op met %s." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "Te veel pogingen zijn mislukt." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Verzenden van data..." #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "Recursieve aanroepen worden door het sierra-stuurprogramma niet " "ondersteund. Neem contact op met %s." #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "Kan stringregister %i niet ophalen. Neem contact op met %s." #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "Verwachtte 32 bytes, ontving %i. Neem contact op met %s." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "Sluitertijd in microseconden (0=auto)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "Sluitertijd (in seconden)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "Zwart-wit" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Antirodeogenflits" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "Slow-sync" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "Contrast+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Contrast-" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "Helderheid+" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "Helderheid-" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Beeldaanpassing" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "Knipperen" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "LED-modus" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "Oneindig" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "Miniatuurvoorbeeld" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "Volgende" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "Vorige" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Actiemodus" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "LCD-helderheid" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "LCD-zelfuitschakeling (seconden)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "Centrumgericht" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "Matrix" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Spot-AF" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Belichtingsmeting" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "Zoom (in millimeters)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "geen" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "AE-vergrendeling" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "Visoog" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Breedte" #: camlibs/sierra/nikon-desc.c:558 msgid "Misc exposure/lens settings" msgstr "Overige belichtings-/lensinstellingen" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Auto-belichtingsvergrendeling" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " Camerainstellingen of -voorkeuren:\n" "\n" " De optische zoom werkt niet goed.\n" "\n" " Niet alle camerainstellingen kunnen goed\n" " gelezen of geschreven worden; bijvoorbeeld\n" " de fijnafstemming van de witbalans, en de\n" " taalinstellingen.\n" "\n" " Zet de camera in 'M'-modus om de\n" " sluitertijd in te stellen.\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995:\n" " De camerainstellingen (voorkeuren) voor deze\n" " camera zijn onvolledig. Neem contact op met de\n" " gphoto-ontwikkelaarsmailinglijst als u bijdragen\n" " hebt voor dit stuurprogramma.\n" "\n" " Het downloaden van foto's zou correct moeten werken.\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "Witte achtergrond" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "Zwarte achtergrond" #: camlibs/sierra/olympus-desc.c:489 msgid "Color or Function Mode" msgstr "Kleur- of functiemodus" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 msgid "Slow" msgstr "Slow-sync" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "Antirodeogen-invulflits" #: camlibs/sierra/olympus-desc.c:596 msgid "Fluorescent-1-home-6700K" msgstr "TL-licht-1-huis-6700K" #: camlibs/sierra/olympus-desc.c:597 msgid "Fluorescent-2-desk-5000K" msgstr "TL-licht-2-bureau-5000K" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "TL-licht-3-kantoor-4200K" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "TL-licht-1-huis-6700K" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "TL-licht-2-bureau-5000K" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "TL-licht-3-kantoor-4200K" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "Schemering" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Beeldscherm" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "LCD-modus" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "ESP" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Digitale zoom" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "Focuspositie" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Tijdsopmaak" #: camlibs/sierra/olympus-desc.c:1147 msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Opmerkingen over Olympus-camera's:\n" "(1) Camera-instelling:\n" " Met een waarde 0 wordt de standaard genomen (auto).\n" "(2) De Olympus C-3040Z (en mogelijk ook de C-2040Z en andere)\n" " hebben een USB PC-beheermodus. Om deze modus te gebruiken,\n" " dient u de camera in te schakelen, het klepje van de\n" " geheugenkaart te openen, en dan zowel de menuknop als de\n" " LCD-knop ingedrukt te houden tot het beheermenu verschijnt.\n" " Zet deze op 'AAN'.\n" "(3) Indien u de 'LCD-modus' naar 'Beeldscherm' of 'Normaal\n" " verandert, vergeet deze dan niet terug op 'UIT' te zetten\n" " alvorens de verbinding te verbreken. Anders kunt u de\n" " cameraknoppen niet gebruiken. Indien u toch in deze\n" " toestand terechtkomt, dient u de camera opnieuw te\n" " verbinden met de PC en de LCD op 'UIT' te zetten." #: camlibs/sierra/olympus-desc.c:1166 msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus 750 Ultra Zoom:\n" "(1) De Olympus 750UZ heeft een USB PC-beheermodus. Om deze modus\n" " te gebruiken, dient u de camera in te schakelen, het klepje\n" " van de geheugenkaart te openen, en dan zowel de 'OK'-knop als\n" " de 'Quickview'-knop ingedrukt te houden tot het beheermenu\n" " verschijnt. Zet deze op Beheermodus.\n" "(2) Indien u de 'LCD-modus' naar 'Beeldscherm' of 'Normaal\n" " verandert, vergeet deze dan niet terug op 'UIT' te zetten\n" " alvorens de verbinding te verbreken. Anders kunt u de\n" " cameraknoppen niet gebruiken. Indien u toch in deze\n" " toestand terechtkomt, dient u de camera opnieuw te\n" " verbinden met de PC en de LCD op 'UIT' te zetten." #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Standaard sierra-stuurprogramma:\n" "\n" " Dit stuurprogramma zou in staat moeten zijn om\n" " afbeeldingen op camera te bekijken en te downloaden.\n" "\n" " De camerainstellingen of -voorkeuren zijn gebaseerd op\n" " de Olympus 3040, en zijn waarschijnlijk onvolledig.\n" " Als u merkt dat instellingen voor uw camera volledig\n" " zijn, of code kunt leveren voor de ondersteuning\n" " van een volledige configuratie, neem dan contact op\n" " met de mailinglijst voor ontwikkelaars.\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "Het te uploaden bestand heeft lengte nul" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "Onvoldoende ruimte beschikbaar op de geheugenkaart" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Kan de naam van de map met afbeeldingen niet bepalen" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "Uploaden wordt alleen ondersteund naar de map '%s'" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Best" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (onbekend)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "Sluitertijd (microseconden, 0=auto)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Zwart-wit" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "Witte achtergrond" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Zwarte achtergrond" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "Helderheid/contrast" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "Helderheid+" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "Helderheid-" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Daglicht" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "Oneindig/visoog" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "Puntsmetingsmodus" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1,6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2,5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "Auto-uit (verbonden) (in seconden)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "Hoe lang het duurt voor de camera zichzelf uitschakelt als deze met de " "computer verbonden is." #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "Auto-uit (los) (in seconden)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "Hoe lang het duurt voor de camera zichzelf uitschakelt als deze niet met de " "computer verbonden is." #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "LCD auto-uit (in seconden)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Opname-instellingen" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 msgid "standard" msgstr "Standaard" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "Kleur" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "Zwart-wit" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" "Opmerking: geen geheugenkaart aanwezig, sommige waarden kunnen ongeldig " "zijn\n" #: camlibs/sierra/sierra.c:1948 #, c-format msgid "Camera Model: %s\n" msgstr "Cameramodel: %s\n" #: camlibs/sierra/sierra.c:1957 #, c-format msgid "Serial Number: %s\n" msgstr "Serienummer: %s\n" #: camlibs/sierra/sierra.c:1960 #, c-format msgid "Software Rev.: %s\n" msgstr "Softwarerevisie: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, c-format msgid "Frames Taken: %i\n" msgstr "Opgenomen frames: %i\n" #: camlibs/sierra/sierra.c:1971 #, c-format msgid "Frames Left: %i\n" msgstr "Resterende frames: %i\n" #: camlibs/sierra/sierra.c:1973 #, c-format msgid "Battery Life: %i\n" msgstr "Accuniveau: %i\n" #: camlibs/sierra/sierra.c:1975 #, c-format msgid "Memory Left: %i bytes\n" msgstr "Resterend geheugen: %i bytes\n" #: camlibs/sierra/sierra.c:1980 #, c-format msgid "Date: %s" msgstr "Datum: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "Geen camerahandleiding beschikbaar.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "Opmerkingen over Epson camera's:\n" "- Sommige parameters zijn niet op afstand bestuurbaar:\n" " * zoom\n" " * focus\n" " * aangepaste witbalansinstelling\n" "- De configuratie is ontrafeld met een PhotoPC 3000z-camera.\n" " Als uw camera zich anders gedraagt, stuur dan een e-mail\n" " naar %s (in het Engels).\n" #: camlibs/sierra/sierra.c:2060 msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Opmerkingen over Olympus-camera's (en misschien anderen):\n" "(1) Camera-instelling:\n" " Met een waarde 0 wordt de standaard genomen (auto).\n" "(2) De Olympus C-3040Z (en mogelijk ook de C-2040Z en andere)\n" " hebben een USB PC-beheermodus. Om deze modus te gebruiken,\n" " dient u de camera in te schakelen, het klepje van de\n" " geheugenkaart te openen, en dan zowel de menuknop als de\n" " LCD-knop ingedrukt te houden tot het beheermenu verschijnt.\n" " Zet deze op 'AAN'.\n" "(3) Indien u de 'LCD-modus' naar 'Beeldscherm' of 'Normaal\n" " verandert, vergeet deze dan niet terug op 'UIT' te zetten\n" " alvorens de verbinding te verbreken. Anders kunt u de\n" " cameraknoppen niet gebruiken. Indien u toch in deze\n" " toestand terechtkomt, dient u de camera opnieuw te\n" " verbinden met de PC en de LCD op 'UIT' te zetten." #: camlibs/sierra/sierra.c:2087 msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "sierra SPARClite-bibliotheek\n" "Scott Fritzinger \n" "Ondersteunt op 'sierra' gebaseerde digitale camera's,\n" "waaronder Olympus, Nikon, Epson, Pentax, and others.\n" "\n" "Met dank aan Data Engines (www.dataengines.com)\n" "voor het gebruik van hun Olympus C-3030Z voor de\n" "implementatie van USB-ondersteuning." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (onbekend)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Sipix StyleCam Blink-stuurprogramma\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Kan de USB-instellingen niet doorvoeren" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "Stuurprogramma voor toegang tot de SiPix Web2-camera." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket\n" "Lee Benfield \n" "Stuurprogramma voor toegang tot de Smal Ultrapocket-camera,\n" "en de OEM-versies (slimshot)." #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Sonix-camera.\n" "Er staat %i foto op.\n" msgstr[1] "" "Sonix-camera.\n" "Er staan %i foto's op.\n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "Sonix-camerabibliotheek\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "Ondersteuning voor Sony DSC-F1 digitale camera\n" "M. Adam Kendall \n" "Gebaseerd op de 'chotplay CLI'-interface van Ken-ichi Hayashi.\n" "Overgezet naar Gphoto2 door Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Sony DSC-F55/505 gPhoto-bibliotheek\n" "Ondersteunt de Sony MSAC-SR1 en de geheugenstick van de DCR-PC100.\n" "Oorspronkelijk geschreven door Mark Davies ,\n" "overgezet naar gPhoto2 door Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "Firmware-revisie: %8s\n" "Afbeeldingen: %i\n" "Totaal geheugen: %i kB\n" "Vrij geheugen: %i kB\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "Firmware-revisie: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Soundvision-stuurprogramma\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "FLASH:\n" " Bestanden: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM:\n" " Bestanden: %d\n" " Beelden: %4d\n" " Films: %4d\n" "Gebruikte ruimte: %8d\n" "Vrije ruimte: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "spca50x-bibliotheek v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" "Uw USB-camera heeft een S&Q-chipset.\n" "Het bevat momenteel %i afbeeldingen.\n" "Enkele van deze kunnen clips zijn die\n" "meerdere frames bevatten.\n" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" "Voor camera's met een chip van S&Q Technologies.\n" "Zou moeten werken met gtkam. Foto's worden opgeslagen als PPM.\n" "\n" "Alle bekende S&Q-camera's hebben twee resolutie-instellingen.\n" "Welke deze zijn hangt af van uw specifieke camera.\n" "Enkele van deze camera's staan het verwijderen van alle foto's toe.\n" "De meeste doen dit niet. Uploaden van data naar de camera wordt niet\n" "ondersteund. De fotocomprimeringsmodus, aanwezig op vele S&Q-\n" "camera's, wordt in enige mate ondersteund.\n" "Indien op de camera aanwezig, worden videoclips als submappen gezien.\n" "Gtkam zal deze apart downloaden. Als er clips op de camera aanwezig\n" "zijn, staat er een driehoekje voor de cameranaam. Als er geen mappen\n" "getoond worden, klik dan op het driehoekje om ze te laten verschijnen.\n" "Klik op een map om de frames erin te bekijken of deze te downloaden.\n" "De frames zullen als aparte foto's gedownload worden, met speciale namen\n" "die aangeven van welke clip ze kwamen. U kunt dus vrij kiezen om de\n" "frames al dan niet in afzonderlijke mappen op te slaan.\n" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "Algemeen sq905-stuurprogramma\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "Uw USB-fotoframe heeft een ST2205-chipset\n" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "Fotoframes met een ST2205-chip kunnen allerlei resoluties hebben.\n" "Het gphoto-stuurprogramma voor deze apparaten kan foto's van het\n" "fotoframe downloaden, ernaar uploaden, en ervan verwijderen." #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "ST2205-stuurprogramma voor USB-fotoframes\n" "Hans de Goede \n" "Dit stuurprogramma kan foto's van het fotoframe downloaden,\n" "ernaar uploaden, en ervan verwijderen." #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "Oriëntatie" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "Stuurprogramma voor camera's die de STV0674-processor gebruiken.\n" "Het protocol werd ontrafeld met behulp van SnoopyPro.\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "Slechte belichting (waarschijnlijk niet genoeg licht)" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "Informatie over op STV0680-gebaseerde camera:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Firmware-revisie: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "ASIC-revisie: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "Sensor-ID: %d.%d\n" #: camlibs/stv0680/library.c:562 #, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "De camera is ingesteld voor lampen die flikkeren met %d Hz.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Geheugen in camera: %d Mbit.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "Camera ondersteunt miniatuurvoorbeelden.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "Camera ondersteunt video.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "Camera-afbeeldingen zijn monochroom.\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "Camera heeft geheugen.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "Camera ondersteunt videoformaten: " #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "Leveranciers-ID: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "Product-ID: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "Aantal beelden: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "Maximum aantal beelden: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Beeldbreedte: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "Beeldhoogte: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "Beeldgrootte: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Breedte van miniatuur: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Hoogte van miniatuur: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Grootte van miniatuur: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Stuurprogramma voor camera's die de STV0680-processor gebruiken.\n" "Het protocol werd ontrafeld met behulp van CommLite Beta 5.\n" "Carsten Weinholz \n" "Uitgebreid voor Aiptek PenCam en andere STM USB dualmodus-camera's." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Ophalen van informatie over %i bestanden..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "Bibliotheek voor (Traveler) SX330z (en andere Aldi-camera's).\n" "Ook voor andere merken, zoals Jenoptik, Skanhex en Maginon.\n" "Foutrapportages en commentaren zijn welkom.\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z is alleen USB" #: camlibs/topfield/puppy.c:553 msgid "Driver Settings" msgstr "Stuurprogramma-instellingen" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "Turbomodus" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" #: camlibs/topfield/puppy.c:659 #, c-format msgid "Downloading %s..." msgstr "Downloaden van %s..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "Stuurprogramma voor Toshiba pdr-m11.\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "**Interne fout** bij zoeken naar 'camlibs' -- padnamen te lang?" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Laden van camerastuurprogramma's uit '%s'..." #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "Er is een fout opgetreden in de invoer-/uitvoerbibliotheek ('%s'): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Kan geen camera detecteren" #: libgphoto2/gphoto2-camera.c:750 #, c-format msgid "Could not detect any camera at port %s" msgstr "Kan geen camera detecteren op poort %s" #: libgphoto2/gphoto2-camera.c:774 msgid "You have to set the port prior to initialization of the camera." msgstr "U dient de poort in te stellen vóór de initialisatie van de camera." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Kan het vereiste stuurprogramma '%s' (%s) niet laden." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "In stuurprogramma '%s' ontbreekt de 'camera_init'-funtie." #: libgphoto2/gphoto2-camera.c:864 msgid "This camera does not provide any configuration options." msgstr "Deze camera biedt geen instellingsopties aan." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "Deze camera ondersteunt het wijzigen van instellingsopties niet." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Deze camera ondersteunt geen samenvattingen." #: libgphoto2/gphoto2-camera.c:960 msgid "This camera does not provide a manual." msgstr "Deze camera biedt geen handleiding aan." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "Deze camera levert geen informatie over het stuurprogramma." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Deze camera kan geen opnames maken." #: libgphoto2/gphoto2-camera.c:1056 msgid "This camera can not trigger capture." msgstr "Deze camera kan geen opnames triggeren." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Deze camera kan geen voorbeeldopnames maken." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "Het pad '%s' is niet absoluut." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "U probeerde '%s' uit map '%s' te verwijderen, maar het bestandssyteem " "ondersteunt het verwijderen van bestanden niet." #: libgphoto2/gphoto2-filesys.c:1259 #, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "Map '%s/%s', die u probeert te verwijderen, bevat nog submappen." #: libgphoto2/gphoto2-filesys.c:1264 #, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "Map '%s/%s', die u probeert te verwijderen, bevat nog bestanden." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Het bestandssysteem ondersteunt het uploaden van bestanden niet." #: libgphoto2/gphoto2-filesys.c:1359 #, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "Map '%s' bevat slechts %i bestanden, maar u vroeg om een bestand met nummer " "%i." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Bestand '%s' kan niet worden gevonden in map '%s'." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Kan het bestand '%s' niet vinden." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "Het bestandssysteem ondersteunt het ophalen van bestanden niet" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Onbekend bestandstype %i." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "Het bestandssyteem ondersteunt het ophalen van bestandsinformatie niet" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "" "Het bestandssysteem ondersteunt het instellen van bestandsinformatie niet" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "" "Bestandseigenschappen zoals hoogte en breedte kunnen allen worden gelezen en " "niet worden gewijzigd." #: libgphoto2/gphoto2-filesys.c:2455 msgid "The filesystem doesn't support getting storage information" msgstr "Het bestandssyteem ondersteunt het ophalen van opslaginformatie niet" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Beschadigde gegevens" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Bestand bestaat al" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Onbekend model" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Map niet gevonden" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Bestand niet gevonden" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "Map bestaat al" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "Camera is bezig" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "Pad is niet absoluut" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Actie is geannuleerd" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "Camera kon de actie niet voltooien" #: libgphoto2/gphoto2-result.c:57 msgid "OS error in camera communication" msgstr "Besturingssysteemfout in communicatie met camera" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "Niet genoeg vrije ruimte" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Onbekende fout in camerabibliotheek" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Onbekende fout" #~ msgid "Disabled" #~ msgstr "uitgezet" #~ msgid "Small Fine JPEG (S1 Fine)" #~ msgstr "Kleine, fijne JPEG (S1 fijn)" #~ msgid "Small Normal JPEG (S1 Normal)" #~ msgstr "Kleine, normale JPEG (S1 normaal)" #~ msgid "RAW + Small Fine JPEG (S1 Fine)" #~ msgstr "RAW + kleine, fijne JPEG (S1 fijn)" #~ msgid "mRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "mRAW + kleine, fijne JPEG (S1 fijn)" #~ msgid "sRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "sRAW + kleine, fijne JPEG (S1 fijn)" #~ msgid "RAW + Small Normal JPEG (S1 Normal)" #~ msgstr "RAW + kleine, normale JPEG (S1 normaal)" #~ msgid "mRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "mRAW + kleine, normale JPEG (S1 normaal)" #~ msgid "sRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "sRAW + kleine, normale JPEG (S1 normaal)" #~ msgid "PTP Error: bad parameter" #~ msgstr "PTP-fout: onjuiste parameter" #~ msgid "Canon Capture failed: 0x%04x" #~ msgstr "Canon-opname is mislukt: 0x%04x" #~ msgid "No event received, error %x." #~ msgstr "Geen gebeurtenis ontvangen, fout %x." #~ msgid "PTP: Undefined Error" #~ msgstr "PTP: Niet-gedefinieerde fout" #~ msgid "PTP: OK!" #~ msgstr "PTP: OK!" #~ msgid "PTP: General Error" #~ msgstr "PTP: Algemene fout" #~ msgid "PTP: Session Not Open" #~ msgstr "PTP: Sessie is niet geopend" #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP: Ongeldig transactie-ID" #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP: Actie wordt niet ondersteund" #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP: Parameter wordt niet ondersteund" #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP: Overdracht is niet compleet" #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP: Ongeldig opslag-ID" #~ msgid "PTP: Invalid Object Handle" #~ msgstr "PTP: Ongeldig objecthandvat" #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "PTP: Toesteleigenschap wordt niet ondersteund" #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP: Ongeldige object-formaatcode" #~ msgid "PTP: Store Full" #~ msgstr "PTP: Opslagruimte is vol" #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP: Object is tegen schrijven beveiligd" #~ msgid "PTP: Store Read Only" #~ msgstr "PTP: Opslagruimte is alleen-lezen" #~ msgid "PTP: Access Denied" #~ msgstr "PTP: Toegang geweigerd" #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP: Geen miniatuurvoorbeeld aanwezig" #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP: Zelftest is mislukt" #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP: Partiële verwijdering" #~ msgid "PTP: Store Not Available" #~ msgstr "PTP: Opslagruimte is niet beschikbaar" #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "PTP: Specificatie door formaat niet ondersteund" #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP: Geen geldige objectinformatie" #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP: Ongeldige codeformaat" #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "PTP: Onbekende leverancierscode" #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP: Opname is reeds beëindigd" #~ msgid "PTP: Device Busy" #~ msgstr "PTP: Appraat is bezig" #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP: Ongeldig hoofdobject" #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP: Ongeldige indeling voor toesteleigenschap" #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP: Ongeldige waarde voor toesteleigenschap" #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP: Ongeldige parameter" #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP: Sessie is reeds geopend" #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP: Transactie is geannuleerd" #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "PTP: Opgave van bestemming wordt niet ondersteund" #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP EK: Bestandsnaam is vereist" #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP EK: Bestandsnaamconflict" #~ msgid "PTP: EK Filename Invalid" #~ msgstr "PTP EK: Ongeldige bestandsnaam" #~ msgid "PTP: I/O error" #~ msgstr "PTP: invoer-/uitvoerfout" #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP: Fout: onjuiste parameter" #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP: Protocolfout, data werd verwacht" #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP: Protocolfout, antwoord werd verwacht" #~ msgid "Unknown (%04x)" #~ msgstr "Onbekend (%04x)" #~ msgid "Could not find any driver for '%s'" #~ msgstr "Kan geen stuurprogramma vinden voor '%s'" #~ msgid "No additional information available." #~ msgstr "Geen verdere informatie beschikbaar." #~ msgid "Deleting '%s' from folder '%s'..." #~ msgstr "Verwijderen van '%s' uit map '%s'..." #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "Downloaden van '%s' uit map '%s'..." #~ msgid "Movie Recording" #~ msgstr "Filmopname" #~ msgid "Unknown (some kind of error)" #~ msgstr "Onbekend (een of andere fout)" #~ msgid "%s is a file type for which no thumbnail is provided" #~ msgstr "" #~ "%s is een bestandstype waarvoor geen miniatuurvoorbeeld wordt verstrekt" #~ msgid "Unavailable" #~ msgstr "Onbeschikbaar" #~ msgid "" #~ "canon_usb_poll_interrupt_pipe: interrupt read failed after %i tries, " #~ "%6.3f sec \"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_pipe: Lezen van interrupt is mislukt na %i " #~ "pogingen, %6.3f sec \"%s\"" #~ msgid "" #~ "canon_usb_poll_interrupt_multiple: interrupt read failed after %i tries, " #~ "\"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_multiple: Lezen van interrupt is mislukt na %i " #~ "pogingen, \"%s\"" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for thumbnail size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: Foute pakketlengte 0x%04x voor " #~ "miniatuurvoorbeeldlengte" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for full image size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: Foute pakketlengte 0x%04x voor volledige " #~ "afbeeldingslengte" #~ msgid "canon_usb_capture_dialogue: secondary image descriptor received" #~ msgstr "" #~ "canon_usb_capture_dialogue: een tweede opnamedescriptor werd ontvangen" #~ msgid "canon_usb_capture_dialogue: first interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: eerste interrupt niet op volgorde gelezen" #~ msgid "canon_usb_capture_dialogue: second interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: tweede interrupt niet op volgorde gelezen" #~ msgid "" #~ "canon_usb_capture_dialogue: photographic failure signaled, code = 0x%08x" #~ msgstr "" #~ "canon_usb_capture_dialogue: fotografische fout gesignaleerd, code = 0x%08x" #~ msgid "canon_usb_capture_dialogue: third EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: derde EOS-interrupt niet op volgorde gelezen" #~ msgid "" #~ "canon_usb_capture_dialogue: fourth EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: vierde EOS-interrupt niet op volgorde gelezen" #~ msgid "canon_usb_dialogue: payload too big, won't fit into buffer (%i > %i)" #~ msgstr "" #~ "canon_usb_dialogue: actiegedeelte te groot, past niet in de buffer (%i > " #~ "%i)" #~ msgid "canon_usb_dialogue: expected 0x%x bytes, but camera reports 0x%x" #~ msgstr "" #~ "canon_usb_dialogue: 0x%x bytes verwacht, maar camera rapporteert 0x%x" #~ msgid "On 1" #~ msgstr "Aan 1" #~ msgid "On 2" #~ msgstr "Aan 2" #~ msgid "Your camera does not support changing filenames." #~ msgstr "Wijzigen van bestandsnamen wordt door deze camera niet ondersteund." #, fuzzy #~| msgid "Canon disable viewfinder failed: %d" #~ msgid "Nikon disable liveview ended: %x" #~ msgstr "Uitschakelen van Canon-beeldzoeker is mislukt: %d" #~ msgid "25 seconds" #~ msgstr "25 seconden" #~ msgid "15 seconds" #~ msgstr "15 seconden" #~ msgid "13 seconds" #~ msgstr "13 seconden" #~ msgid "3.2 second" #~ msgstr "3,2 seconden" #~ msgid "2.5 second" #~ msgstr "2,5 seconden" #~ msgid "1.6 second" #~ msgstr "1,6 seconden" #~ msgid "1.3 second" #~ msgstr "1,3 seconden" #~ msgid "1 second" #~ msgstr "1 seconde" #~ msgid "8/10 second" #~ msgstr "8/10 seconde" #~ msgid "6/10 second" #~ msgstr "6/10 seconde" #~ msgid "1/2 second" #~ msgstr "1/2 seconde" #~ msgid "4/10 second" #~ msgstr "4/10 seconde" #~ msgid "3/10 second" #~ msgstr "3/10 seconde" #~ msgid "1/4 second" #~ msgstr "1/4 seconde" #~ msgid "1/5 second" #~ msgstr "1/5 seconde" #~ msgid "1/6 second" #~ msgstr "1/6 seconde" #~ msgid "1/8 second" #~ msgstr "1/8 seconde" #~ msgid "1/15 second" #~ msgstr "1/15 seconde" #~ msgid "1/30 second" #~ msgstr "1/30 seconde" #~ msgid "1/60 second" #~ msgstr "1/60 seconde" #~ msgid "No zoom" #~ msgstr "Geen zoom" #~ msgid "ISO speed" #~ msgstr "ISO-snelheid" #~ msgid "Flash mode" #~ msgstr "Flitsmodus" #~ msgid "Date and Time (readonly)" #~ msgstr "Datum en tijd (alleen lezen)" #~ msgid "Set camera date to PC date" #~ msgstr "Camera-datum instellen aan hand van PC-datum" #~ msgid "Firmware revision (readonly)" #~ msgstr "Firmware-revisie (alleen lezen)" #~ msgid "Power (readonly)" #~ msgstr "Voeding (alleen lezen)" #~ msgid "Resolution changed" #~ msgstr "Resolutie is gewijzigd" #~ msgid "Invalid zoom level" #~ msgstr "Ongeldig zoomniveau" #~ msgid "Unsupported image type" #~ msgstr "Niet-ondersteund beeldtype" #~ msgid "Self Timer (only next picture)" #~ msgstr "Zelfontspanner (alleen volgende opname)" #~ msgid "Day-lt" #~ msgstr "Daglicht" #~ msgid "auto red eye" #~ msgstr "auto-antirodeogen" #~ msgid "on red eye" #~ msgstr "antirodeogen" #~ msgid "spot" #~ msgstr "Puntmeting" #~ msgid "Center" #~ msgstr "Centraal" #~ msgid "Default" #~ msgstr "Standaard" #~ msgid "Camera Time" #~ msgstr "Cameratijd" #~ msgid "Set camera time to PC time" #~ msgstr "Cameradatum instellen met PC-datum" #~ msgid "Canon Image Quality" #~ msgstr "Canon-beeldkwaliteit" #~ msgid "EOS ISO Speed" #~ msgstr "EOS-ISO-snelheid" #~ msgid "EOS WhiteBalance" #~ msgstr "EOS-witbalans" #~ msgid "EOS Exposure Compensation" #~ msgstr "EOS-belichtingscompensatie" #~ msgid "EOS Aperture" #~ msgstr "EOS-diafragma" #~ msgid "EOS Shutter Speed" #~ msgstr "EOS-sluitertijd" #~ msgid "EOS Metering Mode" #~ msgstr "EOS-meetmethode" #~ msgid "" #~ "Model: %s\n" #~ " device version: %s\n" #~ " serial number: %s\n" #~ "Vendor extension ID: 0x%08x\n" #~ "Vendor extension description: %s\n" #~ msgstr "" #~ "Model: %s\n" #~ " versie van toestel: %s\n" #~ " serienummer: %s\n" #~ "Leveranciers-ID: 0x%08x\n" #~ "Leveranciersomschrijving: %s\n" #~ msgid "Exposure Bracketing Distance" #~ msgstr "Belichtingsafstand reeksopname (bracketing)" #~ msgid "Exposure Bracketing Number" #~ msgstr "Belichting reeksopnamenummer (bracketing)" #~ msgid "This camera does not support event handling." #~ msgstr "Deze camera ondersteunt het afhandelen van gebeurtenissen niet." #~ msgid "Could not find folder '%s'." #~ msgstr "Kan map '%s' niet vinden." #~ msgid "Folder '%s' does not contain a folder '%s'." #~ msgstr "Map '%s' bevat geen map '%s'." #~ msgid "" #~ "Could not append '%s' to folder '%s' because this file already exists." #~ msgstr "Kan '%s' niet aan map '%s' toevoegen omdat het bestand al bestaat." #~ msgid "super fine" #~ msgstr "superfijn" #~ msgid "Date Time" #~ msgstr "Datum en tijd" #~ msgid "ShutterSpeed" #~ msgstr "Sluitertijd" #~ msgid "Max. Shots" #~ msgstr "Max. aantal opnames" #~ msgid "Sorry, this function not implemented..." #~ msgstr "Sorry, deze functie is niet geïmplementeerd" #~ msgid "Sorry, nothing to configure..." #~ msgstr "Sorry, niets om te configureren..." #~ msgid "Sorry, taking pictures is not implemented..." #~ msgstr "Sorry, afbeeldingen opnemen is niet geïmplementeerd..." #~ msgid "Couldn't open camera.\n" #~ msgstr "Kon de camera niet openen.\n" #~ msgid "Error opening camera\n" #~ msgstr "Fout bij het openen van de camera\n" #~ msgid "Picture number is too large.\n" #~ msgstr "Afbeeldingsnummer is te groot.\n" #~ msgid "" #~ "Sony DSC-F1 Digital Camera Support\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Based on the chotplay CLI interface from\n" #~ "Ken-ichi Hayashi\n" #~ "\n" #~ "This lib may not work. YMMV\n" #~ msgstr "" #~ "Sony DSC-F1 digitale Camera-ondersteuning\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "gebaseerd op de 'chotplay CLI'-interface van\n" #~ "Ken-ichi Hayashi\n" #~ "\n" #~ "Deze bibliotheek werkt misschien niet, misschien wel.\n" #~ msgid "Error opening camera.\n" #~ msgstr "Fout bij het openen van de camera.\n" #~ msgid "%sCamera ID: %s\n" #~ msgstr "%sCamera-ID: %s\n" #~ msgid "" #~ "Mars MR97310 camera.\n" #~ "There are %i photos in it. \n" #~ msgstr "" #~ "Mars MR97310 camera.\n" #~ "Er staan %i foto's op de camera. \n" #~ msgid "Number of values" #~ msgstr "Aantal waarden" #~ msgid "Current value" #~ msgstr "Huidige waarde" #~ msgid "Capture command completed, but no confirmation received" #~ msgstr "Opnamecommando is voltooid, maar geen bevestiging ontvangen" #~ msgid "Received event 0x%04x" #~ msgstr "Gebeurtenis 0x%04x ontvangen" #~ msgid "Manual Not Implemented Yet" #~ msgstr "Handleiding is nog niet geïmplementeerd" #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for KBGear JamCam v2.0 & v3.0 digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Ondersteuning voor KBGear JamCam v2.0 & v3.0 digitale camera's\n" #~ "gebaseerd op omgekeerde ontwikkeling van serieel protocol.\n" #~ "\n" #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for Panasonic Coolshot digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Ondersteuning voor Panasonic Coolshot digitale camera's\n" #~ "gebaseerd op omgekeerde ontwikkeling serieel protocol.\n" #~ "\n" #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for digital cameras with a sunplus spca50x chip based on several " #~ "other gphoto2 camlib modules and the information kindly provided by " #~ "Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \n" #~ "Ondersteuning voor digitale camera's met een sunplus spca50x-chip " #~ "gebaseerd op verschillende andere gphoto2 camlibmodules en de informatie " #~ "geleverd door Mustek.\n" #~ "\n" #~ msgid "" #~ "Download program for Casio QV cameras. Originally written for gphoto-0.4. " #~ "Adapted for gphoto2 by Lutz Mueller ." #~ msgstr "" #~ "Download programma voor Casio QV camera's. Oorspronkelijk geschreven voor " #~ "gphoto-0.4. Aangepast voor gphoto2 door Lutz Mueller ." #~ msgid "Could not follow the link '%s' (%m)." #~ msgstr "Kon de link '%s' niet volgen (%m)." #~ msgid "Could not follow the link '%s' in '%s' (%m)." #~ msgstr "Kon de link '%s' in '%s' niet volgen (%m)." #~ msgid "Directory Browse" #~ msgstr "Mappenlijst" #~ msgid "View hidden directories" #~ msgstr "Verborgen mappen tonen" #~ msgid "Unsupported port type: %d. This driver only works with USBcameras.\n" #~ msgstr "" #~ "Niet-ondersteund poorttype: %d. Dit stuurprogramma werkt enkel met USB-" #~ "camera's.\n" #~ msgid "There is nothing to summarize for this camera." #~ msgstr "Voor deze camera is niets samen te vatten." #~ msgid "No manual" #~ msgstr "Geen handleiding" #~ msgid "" #~ "PTP2 driver\n" #~ "(c)2001-2003 by Mariusz Woloszyn .\n" #~ "Enjoy!" #~ msgstr "" #~ "PTP2-stuurprogramma\n" #~ "(c)2001-2003 by Mariusz Woloszyn .\n" #~ "Veel plezier!" #~ msgid "Macro Mode" #~ msgstr "Macromodus" #~ msgid "Real Image Width" #~ msgstr "Reële beeldbreedte" #~ msgid "Colour Mode" #~ msgstr "Kleurmodus" #~ msgid "??? AF Related" #~ msgstr "??? AF aanverwant" #~ msgid "Incadescent" #~ msgstr "Gloeilamp" #~ msgid "Could not open '%s'" #~ msgstr "Kon '%s' niet openen" #~ msgid "Could not load required camera driver '%s'." #~ msgstr "Kon het vereiste stuurprogramma niet laden '%s'." #~ msgid "Could not append folder '%s' as this folder already exists." #~ msgstr "Kon de map '%s' niet toevoegen aangezien deze al bestaat." #~ msgid "" #~ "Could not open '/proc/meminfo' for reading ('%m'). Make sure the proc " #~ "filesystem is mounted." #~ msgstr "" #~ "Kon '/proc/meminfo' niet openen om te lezen ('%m'). Verzeker u ervan dat " #~ "het 'proc'-bestandssysteem gekoppeld is." #~ msgid "An error occured while reading '/proc/meminfo' ('%m')." #~ msgstr "" #~ "Er deed zich een fout voor tijdens het lezen van '/proc/meminfo' ('%m')." libgphoto2-2.5.9/po/quot.sed0000644000175000001440000000023112557123417012623 00000000000000s/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g libgphoto2-2.5.9/po/eu.po0000644000175000001440000120066512623156272012124 00000000000000# translation of libgphoto2-2.po to Basque # Copyright (C) 2005 Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # Hizkuntza Politikarako Sailburuordetza , 2005. # msgid "" msgstr "" "Project-Id-Version: eu\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2005-05-12 16:52+0200\n" "Last-Translator: Hizkuntza Politikarako Sailburuordetza \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.9.1\n" "Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1);\n" "\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "Agfa CL20 Linux Driver People!\n" " Idatzi helbide honetara: cl20@poeml.de \n" " Bisita gaitzazu helbide honetan: http://cl20.poeml.de " #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "Zure USB kamerak Aox txipa du.\n" "Bereiz-baxuko IRUD kopurua = %i\n" "Bereiz-altuko IRUD kopurua = %i\n" "IRUD kopurua = %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Aox kontrolatzaile orokorra\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 #, fuzzy msgid "Picture Frame Configuration" msgstr "Kameraren konfigurazioa" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "Argazki-kopurua: %i\n" "Firmware-bertsioa: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Irudi-datuen ingeniaritza alderantzikatua:\n" "Jeff Laing \n" "\n" "Sarean topatutako dokumentuak erabiliz\n" "inplementatua. Baimena Vision-ek emana." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "Ezin izan da %s direktorioa sortu." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "Ezin izan da %s direktorioa kendu." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "blokeo-teklek huts egin dute." #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*EZEZAGUNA*" #: camlibs/canon/canon.c:1490 #, fuzzy, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image: hasierako canon_usb_list_all_dirs()-ek huts egin du " "%i egoerarekin" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image: amaierako canon_usb_list_all_dirs()-ek huts egin du " "%i egoerarekin" #: camlibs/canon/canon.c:2554 #, fuzzy, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "" "'%s' izena (%i karaktere) luzeegia da gehienez 30 karaktere izan ditzakete." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "%s-(e)n letra minuskulan ez dira onartzen." #: camlibs/canon/canon.c:3150 #, fuzzy, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_dir: ERROREA: hasierako mezua laburregia da (%i < minimoa %i)" #: camlibs/canon/canon.c:3172 #, fuzzy msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_dir: Paketearen amaierara heldu da direktorioaren 1. sarrera " "aztertzen" #: camlibs/canon/canon.c:3257 #, fuzzy msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "canon_int_list_dir: direktorioko sarrera trunkatua aurkitu da" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Fitxategia babestuta." #: camlibs/canon/canon.c:3717 #, fuzzy, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_dir: ERROREA: hasierako mezua laburregia da (%i < minimoa %i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "" "Ezin izan da JPEG koadro txikia atera datuetatik: ez dago hasierarik/" "amaierarik" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "Ezin izan da datuen JPEG koadro txikia atera: Datuak ez dira JFIF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "\"%s\" NULL parametroa %s(e)ko %i lerroan " #: camlibs/canon/canon.h:638 #, fuzzy, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" "Ez dakit nola maneiatu camera->port->type balioa %i aka 0x%xin %s %i lerroa." #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "ERRORE LARRIA: %d luzerarako hasierako CRC balioa ezezaguna da\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "ezin da hasierako CRC balioa aurkitu\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "kontuz: CRC ez da egiaztatu (gehitu %d luzera, 0x%04x balioa) " "#########################\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 #, fuzzy msgid "Compatibility Mode" msgstr "Bateria" #: camlibs/canon/library.c:98 #, fuzzy msgid "Thumbnail" msgstr "Aurreikusi koadro txikia" #: camlibs/canon/library.c:99 #, fuzzy msgid "Full Image" msgstr "Irudia" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "" #: camlibs/canon/library.c:216 #, fuzzy msgid "Auto focus: one-shot" msgstr "Fokuaren modua" #: camlibs/canon/library.c:217 #, fuzzy msgid "Auto focus: AI servo" msgstr "Autofokusaren errorea." #: camlibs/canon/library.c:218 #, fuzzy msgid "Auto focus: AI focus" msgstr "Fokuaren modua" #: camlibs/canon/library.c:219 #, fuzzy msgid "Manual focus" msgstr "Eskuzkoa" #: camlibs/canon/library.c:224 #, fuzzy msgid "Beep off" msgstr "Soinu-seinalea" #: camlibs/canon/library.c:225 #, fuzzy msgid "Beep on" msgstr "Soinu-seinalea" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 #, fuzzy msgid "Flash off" msgstr "Flasharen modua" #: camlibs/canon/library.c:231 #, fuzzy msgid "Flash on" msgstr "Flasharen modua" #: camlibs/canon/library.c:232 #, fuzzy msgid "Flash auto" msgstr "Flasharen modua" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "" #: camlibs/canon/library.c:267 #, fuzzy msgid "Manual 2" msgstr "Eskuzkoa" #: camlibs/canon/library.c:268 #, fuzzy msgid "Far scene" msgstr "Fluoreszentea" #: camlibs/canon/library.c:269 #, fuzzy msgid "Fast shutter" msgstr "Obturadorearen abiadura" #: camlibs/canon/library.c:270 #, fuzzy msgid "Slow shutter" msgstr "Argazki-ateratzearen ezarpenak" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Sepia" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 #, fuzzy msgid "Portrait" msgstr "Kontrastea" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Puntua" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Makroa" #: camlibs/canon/library.c:277 #, fuzzy msgid "BW" msgstr "Z/B" #: camlibs/canon/library.c:278 #, fuzzy msgid "PanFocus" msgstr "Fokua" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 #, fuzzy msgid "Neutral" msgstr "Normala" #: camlibs/canon/library.c:282 #, fuzzy msgid "Long shutter" msgstr "Foku-distantzia" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "" #: camlibs/canon/library.c:285 #, fuzzy msgid "Indoor" msgstr "Aire zabalekoa" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "" #: camlibs/canon/library.c:292 #, fuzzy msgid "Digital macro" msgstr "Zoom digitala" #: camlibs/canon/library.c:293 #, fuzzy msgid "MyColors" msgstr "Kolorea" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" #: camlibs/canon/library.c:497 #, fuzzy, c-format msgid "Camera unavailable: %s" msgstr "Kamera ez dago erabilgarri" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Kamera itzaltzen" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Errorea irudia kapturatzean" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Ezin izan da diskoaren izena eskuratu: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Ez da arrazoirik ezagutzen" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Ezin izan da diskoaren informazioa eskuratu: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "Barne-errorea #1 get_file_func()-en (%s, %i lerroa)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "Ezin izan da audio-fitxategirik aurkitu %s-(e)ntzat" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " Unitatea %s\n" " %11s byte guztira\n" " %11s byte erabilgarri" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "AC moldagailua" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "bateriarekin" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "energia ondo" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "energia gaizki" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "ez dago erabilgarri: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (ostalariaren denbora %s%i segundo)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Kameraren identifikazioa:\n" " Modeloa: %s\n" " Jabea: %s\n" "\n" "Energia-egoera: %s\n" "\n" "Flash diskoaren informazioa:\n" "%s\n" "\n" "Ordua: %s\n" #: camlibs/canon/library.c:1145 #, fuzzy msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Canon PowerShot-en kontrolatzailea:\n" "Wolfgang G. Reissnegger,\n" "Werner Almesberger,\n" "Edouard Lafargue,\n" "Philippe Marzouk,\n" "A5erako gehikuntzak: Ole W. Saastad\n" "Holger Klemm\n" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Errorea fitxategia ezabatzean" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Errorea asoziatutako koadro txikia ezabatzean" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "" "57600 baino abiadura handiagoak ez dira onartzen kamera honetan kargatzeko" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Ezin izan da flash unitatearen letra lortu" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "Ezin izan da kargatu, karpeta-izenik ez dago erabilgarri!\n" "999CANON karpeta-izena badago eta AUT_9999.JPG argazkia du barruan." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Ezin izan da \\DCIM direktorioa sortu." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Ezin izan da helburuko direktorioa sortu." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "Kameraren eta kontrolatzailearen konfigurazioa" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Kameraren ezarpenak" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 #, fuzzy msgid "Owner Name" msgstr "Jabearen izena" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 #, fuzzy msgid "Capture Size Class" msgstr "Aurre-kapturaren atzerapena" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "ISO abiadura" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "Ezezaguna" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 #, fuzzy msgid "Shooting mode" msgstr "Obturadorearen abiadura" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 #, fuzzy msgid "Shutter Speed" msgstr "Obturadorearen abiadura" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "Zooma" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "Irekiera" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Esposizio-konpentsazioa" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 #, fuzzy msgid "Image Format" msgstr "Data-formatua" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Fokuaren modua" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Flasharen modua" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Soinu-seinalea" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 #, fuzzy msgid "Camera Actions" msgstr "Kameraren ezarpenak" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 #, fuzzy msgid "Camera Status Information" msgstr "Kameraren konfigurazioa" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "Kamera-modeloa" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Data eta ordua" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Errorea" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 #, fuzzy msgid "Firmware Version" msgstr "Firmwarearen berrikuspena: %8s" #: camlibs/canon/library.c:1956 #, fuzzy msgid "Power" msgstr "Energia aurreztea" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Kontrolatzailea" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Fitxategi guztien zerrenda" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Mantendu fitxategi-izena kargatzean" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Kamera ez dago erabilgarri" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Jabearen izena aldatu da" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "ezin izan da jabearen izena aldatu" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "" #: camlibs/canon/library.c:2056 #, fuzzy msgid "ISO speed changed" msgstr "Jabearen izena aldatu da" #: camlibs/canon/library.c:2058 #, fuzzy msgid "Could not change ISO speed" msgstr "ezin izan da jabearen izena aldatu" #: camlibs/canon/library.c:2082 #, fuzzy msgid "Invalid shooting mode setting" msgstr "Irekiduraren ezarpenak" #: camlibs/canon/library.c:2085 #, fuzzy msgid "Shooting mode changed" msgstr "Fokuaren modua" #: camlibs/canon/library.c:2087 #, fuzzy msgid "Could not change shooting mode" msgstr "ezin izan da jabearen izena aldatu" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "" #: camlibs/canon/library.c:2114 #, fuzzy msgid "Shutter speed changed" msgstr "Obturadorearen abiadura" #: camlibs/canon/library.c:2116 #, fuzzy msgid "Could not change shutter speed" msgstr "ezin izan da jabearen izena aldatu" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 #, fuzzy msgid "Invalid aperture setting" msgstr "Irekiduraren ezarpenak" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 #, fuzzy msgid "Aperture changed" msgstr "Irekiduraren ezarpenak" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 #, fuzzy msgid "Could not change aperture" msgstr "ezin izan da jabearen izena aldatu" #: camlibs/canon/library.c:2167 #, fuzzy msgid "Invalid exposure compensation setting" msgstr "Esposizio-konpentsazioa" #: camlibs/canon/library.c:2170 #, fuzzy msgid "Exposure compensation changed" msgstr "Esposizio-konpentsazioa" #: camlibs/canon/library.c:2172 #, fuzzy msgid "Could not change exposure compensation" msgstr "Ezin izan da direktorioa sortu." #: camlibs/canon/library.c:2194 #, fuzzy msgid "Invalid image format setting" msgstr "Irekiduraren ezarpenak" #: camlibs/canon/library.c:2198 #, fuzzy msgid "Image format changed" msgstr "Kameraren ezarpenak" #: camlibs/canon/library.c:2200 #, fuzzy msgid "Could not change image format" msgstr "ezin izan da jabearen izena aldatu" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "" #: camlibs/canon/library.c:2226 #, fuzzy msgid "Focus mode changed" msgstr "Fokuaren modua" #: camlibs/canon/library.c:2228 #, fuzzy msgid "Could not change focus mode" msgstr "ezin izan da jabearen izena aldatu" #: camlibs/canon/library.c:2252 #, fuzzy msgid "Invalid beep mode setting" msgstr "Irekiduraren ezarpenak" #: camlibs/canon/library.c:2255 #, fuzzy msgid "Beep mode changed" msgstr "Fokuaren modua" #: camlibs/canon/library.c:2257 #, fuzzy msgid "Could not change beep mode" msgstr "ezin izan da jabearen izena aldatu" #: camlibs/canon/library.c:2274 #, fuzzy msgid "Zoom level changed" msgstr "Jabearen izena aldatu da" #: camlibs/canon/library.c:2276 #, fuzzy msgid "Could not change zoom level" msgstr "ezin izan da jabearen izena aldatu" #: camlibs/canon/library.c:2329 #, fuzzy msgid "Invalid flash mode setting" msgstr "Irekiduraren ezarpenak" #: camlibs/canon/library.c:2332 #, fuzzy msgid "Flash mode changed" msgstr "Fokuaren modua" #: camlibs/canon/library.c:2334 #, fuzzy msgid "Could not change flash mode" msgstr "ezin izan da jabearen izena aldatu" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "ordua ezarrita" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "ezin izan da ordua ezarri" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "" "Onartzen ez den %i = 0x%x motako ataka adierazi duzu. Ezin da abiarazi." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Bateria agortu da, kamera itzali egingo da." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "ERROREA: espero ez zen mezua" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "ERROREA: mezu gehiegi" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "ERROREA: sekuentziatik kanpo." #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "ERROREA: espero ez zen pakete-mota." #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "ERROREA: mezu-formatu okerra." #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "ERROREA: espero ez zen mezua2." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Fitxategia kargatzen..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Fitxategia eskuratzen..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "canon_serial_get_dirents: canon_serial_dialogue-k ezin izan ditu " "direktorioaren sarrerak hartu" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" "canon_serial_get_dirents: direktorio-sarreren hasierako paketea txikiegia " "da(%i byte bakarrik)" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "canon_serial_get_dirents: ezin izan dira memoriako %i byte esleitu" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "" "canon_serial_get_dirents: ezin izan da direktorioaren beste sarrera bat " "irakurri" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "canon_serial_get_dirents: direktorio-sarrera trunkatua jaso da" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" "canon_serial_get_dirents: direktorio-sarrera gehiegi, begizta batean egongo " "gara." #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents: ezin izan da direktorioaren sarreraren bufferra %i " "byteko tamainan jarri" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Errorea abiadura aldatzean." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Protokoloa berrezartzen..." #: camlibs/canon/serial.c:1311 #, fuzzy msgid "Camera OK." msgstr "Kamera ondo dago.\n" #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Kamera bila..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Kamera kontaktatzen saiatzen..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Komunikazio-errorea 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Kamerak ez du erantzuten" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Erantzun ezezaguna" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "\"%s\" detektatu da, \"%s\" izenez ere ezagutzen dena" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "Modelo ezezaguna \"%s\"" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "Transmisio-amaiera (EOT) okerra" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Komunikazio-errorea 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Komunikazio-errorea 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Abiadura aldatzen... itxaron..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Errorea abiadura aldatzean" #: camlibs/canon/serial.c:1454 #, fuzzy msgid "Error waiting for ACK during initialization, retrying" msgstr "" "Errorea gertatu da berrabiarazi bitartean hartu-agiriaren (ACK) zain dagoela" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Errorea abiarazi bitartean hartu-agiriaren (ACK) zain dagoela" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Kamerara konektatuta" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "" "ERROREA: errore larriaren baldintza bat detektatu da, ezin da jarraitu " #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "ERROREA: %d handiegia da" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Koadro txikia eskuratzen..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "EZ DA EZAGUTZEN" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "Ezin izan da hasierako kontaktua egin kamerarekin" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "Kamera lehendik aktibatuta zegoen" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "Kamera aktibatuta zegoen" #: camlibs/canon/usb.c:252 #, fuzzy, c-format msgid "Initial camera response '%c' unrecognized" msgstr "Kameraren hasierako erantzuna %c/'%s' ezezaguna)" #: camlibs/canon/usb.c:264 #, fuzzy, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" "Abiarazteko 3. urratsak huts egin du! (%i itzuli du, %i espero zen) Kamera " "ez dabil" #: camlibs/canon/usb.c:269 #, fuzzy, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "Abiarazteko 3. urratsak huts egin du! (%i itzuli du, %i espero zen) Kamera " "ez dabil" #: camlibs/canon/usb.c:288 #, fuzzy, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" "Abiarazteko 3. urratsak huts egin du! (%i itzuli du, %i espero zen) Kamera " "ez dabil" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, fuzzy, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" "Abiarazteko 3. urratsak huts egin du! (%i itzuli du, %i espero zen) Kamera " "ez dabil" #: camlibs/canon/usb.c:315 #, fuzzy, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" "Abiarazteko 3. urratsak huts egin du! (%i itzuli du, %i espero zen) Kamera " "ez dabil" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, fuzzy, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" "4.1 urratsak huts egin du! (%i itzuli du, %i espero zen) Kamera ez dabil" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, fuzzy, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" "4.1 urratsak huts egin du! (%i itzuli du, %i espero zen) Kamera ez dabil" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "Kamera ez dago prest, kamera identifikatzeko hainbat eskaerek huts egin " "dute: %s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "Kamera ez dago prest, get_battery-k huts egin du: %s" #: camlibs/canon/usb.c:632 #, fuzzy, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: espero ez zen data-kopurua itzuli da (%i byte, %i " "espero ziren)" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, fuzzy, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: espero ez zen data-kopurua itzuli da (%i byte, %i " "espero ziren)" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, fuzzy, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_unlock_keys: espero ez zen data-kopurua itzuli da (%i byte, %i " "espero ziren)" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, fuzzy, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_lock_keys: espero ez zen data-kopurua itzuli da (%i byte, %i " "espero ziren)" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Datuak jasotzen..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "Memoriarik ez: %d byte behar dira." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes: canon_usb_dialogue-ek huts egin du" #: camlibs/canon/usb.c:2173 #, fuzzy, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "canon_usb_set_file_attributes: canon_usb_dialogue-k kameraren 0x%08x errore-" "egoera itzuli du" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "Ezin izan da \"%s\" fitxategitik irakurri" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "Memoriarik ez: %ld byte behar dira." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "Fitxategia kargatzeak huts egin du." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "Fitxategia handiegia zen. Agian kamera itzali eta berriro piztu beharko duzu " "fitxategi gehiago kargatu baino lehen." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" "canon_usb_get_dirents: karga ez da bufferrean kabitzen, '%.96s' (trunkatua) " "handiegia da." #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents: canon_usb_long_dialogue-k ezin izan ditu " "direktorioaren sarrerak hartu, %i itzuli du" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" "canon_usb_list_all_dirs: karga ez da bufferrean kabitzen, " "'%.96s' (trunkatua) handiegia da." #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs: canon_usb_long_dialogue-k ezin izan ditu " "direktorioaren sarrerak hartu, %i itzuli du" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "'%s' detektatu da." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "Kameraren \"%s\" izena ez dator bat ezagutzen diren kamerekin" #: camlibs/casio/casio-qv.c:152 #, fuzzy, c-format msgid "Image type %d not supported" msgstr "Irudi-mota hori ez onartzen" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "%s irudia ezabatzearen kontra babestuta dago." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "" #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "Kameraren konfigurazioa" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "Bateria" #: camlibs/casio/casio-qv.c:275 #, fuzzy msgid "Brightness" msgstr "Distira-" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 #, fuzzy msgid "Too bright" msgstr "Copyright-a" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 #, fuzzy msgid "Too dark" msgstr "Argi gutxiegi dago." #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "Ados" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" #: camlibs/clicksmart310/library.c:138 #, fuzzy msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "Aox kontrolatzaile orokorra\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" #: camlibs/digigr8/library.c:170 #, fuzzy msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "sq905 kontrolatzaile orokorra\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Irudi-mota hori ez onartzen" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "Argazki-kopurua: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "Erroko karpeta bakarrik onartzen da; zuk '%s' karpetarako fitxategien " "zerrenda eskatu zenuen." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Irudi-kopurua lortzeko arazoa dago" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Arazoa irudiari buruzko informazioa lortzean" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Kapturatze-mota hori ez onartzen" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (bateria %d%% dago beteta)" #: camlibs/dimera/dimera3500.c:455 #, fuzzy, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 ver. %s %d/%d %d:%d\n" "%d irudi erabili dira gutxi gorabehera %d-(e)tik (bereizmen handia) edo %d-" "(e)tik (bereizmen txikia)\n" "Kameraren ezaugarriak: %s, %s, %s, %s\n" "Flasha %s, %s eta %s da\n" "Uneko bereizmen-ezarpena: %s\n" "Kamerak %s %s(e)kin funtzionatzen du\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Flasha" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 #, fuzzy msgid "No Flash" msgstr "Flashik GABE" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Iris-diafragma duala" #: camlibs/dimera/dimera3500.c:468 #, fuzzy msgid "No Dual Iris" msgstr "Iris-diafragma dualik EZ" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "Bereizmena hautatzeko etengailua" #: camlibs/dimera/dimera3500.c:470 #, fuzzy msgid "No Resolution Switch" msgstr "Bereizmena hautatzeko etengailurik EZ" #: camlibs/dimera/dimera3500.c:472 #, fuzzy msgid "No Power Light" msgstr "Energia-adierazlerik EZ" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "PIZTUTA" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "ITZALITA" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "prest" #: camlibs/dimera/dimera3500.c:476 #, fuzzy msgid "Not ready" msgstr "EZ dago prest" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "betetze-moduan" #: camlibs/dimera/dimera3500.c:478 #, fuzzy msgid "Not in fill mode" msgstr "betetze-moduan EZ" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "txikia (320 x 240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "handia (640 x 480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "kanpotik" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "barnetik" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* Irudi- eta komunikazio-arazoak askotan bateria baxuak\n" " eragiten ditu.\n" "* Kamera honetan urrunetik kapturatutako irudiak aldi baterako\n" " RAMen gordetzen dira eta ez Flash memoria txartelean.\n" "* Irudiak kapturatzeko esposizio-kontrola eskuz\n" " edo modu automatikoan konfigura daiteke.\n" "* Uneko irudi-kalitatea izan litekeena baino txikiagoa da.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "Software hau StarDot Technologies-ena\n" "den jabetza-informazioaren laguntzarekin\n" "sortu da.\n" "\n" "Egilea:\n" " Brian Beattie \n" "Laguntzaileak:\n" " Chuck Homic \n" " Kamerako formaturik gabeko datuak RGB bihurtzea\n" " Dan Fandrich \n" " Protokoloari, formaturik gabeko irudiei,\n" " gphoto2 atakari buruzko informazioa\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Arazoa irudia Flashetik irakurtzean" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Memoriarik ez" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "Irudia deskargatzen..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Arazoa irudia deskargatzean" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "Erabiltzaileak bertan behera utzi du deskargatzea" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Arazoa zuzeneko irudia hartzean" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Esposizioa" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "Esposizioa automatikoki doitzea aurrebistan" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "Esposizio-maila aurrebistan" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "Flash automatikoa irudia kapturatzean" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Arazoa ataka irekitzean" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Arazoa kamera berrezartzean" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Arazoa kameraren komunikazio-abiadura ezartzean" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Modema dirudi, ez kamera" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "'%s'(e)ko fitxategien zerrenda..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "'%s'(e)ko karpeten zerrenda..." #: camlibs/directory/directory.c:381 #, fuzzy, c-format msgid "Could not get information about '%s' (%s)." msgstr "Ezin izan da '%s'(e)ri buruzko informazioa lortu (%m)." #: camlibs/directory/directory.c:414 #, fuzzy, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Ezin izan da '%s'(e)ri buruzko informazioa lortu '%s'(e)tik (%m)." #: camlibs/directory/directory.c:462 #, fuzzy, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Ezin izan da '%s' fitxategiaren data aldatu '%s'(e)n (%m)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Ezin izan da '%s' ireki." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" "Arakatu direktorioa \"kameraren\" bidez, argazkiak disko gogorrean indexa " "ditzakezu." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "" "Direktorioa arakatzeko modua - Scott Fritzinger-ek idatzia, ." #: camlibs/directory/directory.c:671 #, fuzzy, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "" "Ezin izan da '%s' fitxategia ezabatu '%s' karpetatik (errore-kodea %i: %m)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" "Digital Dream Enigma 1.3. programaren deskarga eta spca50x " "kontrolatzailetik egokitzea :. Eskerrik asko " "spca50x taldea, erraza izan da zuen korntolatzailea eogkitzea kamera " "honentzako." #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "Kamerak %i byte baino ez ditu bidali, eta gutxienez %i behar ditugu." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Ezin izan da kamerarekin kontaktuan jarri." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Espero ez ziren datuak jaso dira (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "Ihes-sekuentzia okerra: 0x%02x espero zen, 0x%02x jaso da." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Datu okerrak - 0x%02x jaso da, 0x%02x espero zen." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "Datu okerrak - 0x%02x jaso da, 0x%02x edo 0x%02x espero zen." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "Kontrol-batura okerra - 0x%02x jaso da, 0x%02x espero zen." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "Kamerak komandoa ezetsi du." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "Kamera bere kabuz berrezarri da." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "Kamerak espero ez zen 0x%02x bytea bidali du." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Deskargatzen..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "Ezin izan dira %i byte esleitu koadro txikia deskargatzeko." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "Ezin izan dira %i byte esleitu irudia deskargatzeko." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "Kamerak ez du '%s' fitxategi-izen gisa onartzen." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "Ezin izan da kargatzea hasieratu (kamerak 0x%02x(e)kin erantzun du)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "Kamerak ez du %i abiadura onartzen." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "Ezin izan da %i abiadura ezarri (kamerak %i(e)kin erantzun du)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Thierry Bousch-en (bousch@topo.math.u-psud.fr) fujiplay-n oinarritua\n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "%ld bit-abiadura ez da onartzen." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Zure FUJI kamerarako konfigurazioa" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Data eta ordua" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "IDa" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Bertsioa: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Modeloa: " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "Erabilgarri dagoen memoria: " #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "gsmart300 liburutegia \n" "Till Adam \n" "Jerome Lodewyck \n" "Mustek gSmart 300 kamera digitaletarako euskarria\n" "beste hainbat gphoto2 camlib moduluetan oinarritua eta zehaztapenak Mustek-" "ek atseginez emanak.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Onartzen ez den ataka-mota: %d. Kontrolatzaile honek USB kamerekin baino ez " "du funtzionatzen.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Ezin izan da kamera berrezarri.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, fuzzy, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Zure kamerak kamerako azken fitxategia bakarrik uzten du borratzen. Kasu " "honetan, '%s' fitxategia da." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" #: camlibs/iclick/library.c:104 #, fuzzy, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "Zure USB kamera Kodak EZ200 da.\n" "IRUD kopurua = %i\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" #: camlibs/iclick/library.c:134 #, fuzzy msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "Aox kontrolatzaile orokorra\n" "Theodore Kilgore \n" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Hartutako fotogramak : %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "jamcam liburutegia v " #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "Datuak deskargatzen..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "Koadro txikia deskargatzen..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "JD11 kamerak nahiko ongi funtzionatzen du kontrolatzaile honekin.\n" "115 kbiteko RS232 interfazea behar da irudiak transferitzeko.\n" "Kontrolatzailearen bidez hauek lor ditzakezu:\n" "\n" " - koadro txikiak (64 x 48, PGM formatua)\n" " - irudi osoak (640 x 480, PPM formatua)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Jenoptik JD11 kamerarako kontrolatzailea.\n" "Protokoloaren ingeniaritza alderantzikatua WINE eta IDA erabiliz egin da." #: camlibs/jd11/jd11.c:186 #, fuzzy msgid "JD11 Configuration" msgstr "Konfigurazioa" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Bestelako ezarpenak" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Bonbilaren esposizio-denbora" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Kolore-ezarpenak" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "Gorria" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Berdea" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Urdina" #: camlibs/jl2005a/library.c:105 #, fuzzy, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Zure USB kamera Kodak EZ200 da.\n" "IRUD kopurua = %i\n" #: camlibs/jl2005a/library.c:115 #, fuzzy msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" "Kontrolatzaile honek Mars MR97310 txipa (edo bateragarriak diren \n" "??Pixart PACx07??) duten kamerak onartzen ditu eta gtkam-ekin funtzionatu " "beharko luke.\n" "Kontrolatzaile honek honakoak lor ditzake:\n" " - koadro txikiak gtkam-erako\n" " - argazki osoak (640x480 edo 320x240PPM formatuan)(??352x288 & " "176x144??)\n" "Kamerak ez du argazkiak ezabatzea uzten, ez datuak\n" "kargatzea ere. Kontrolatzaile honek ez du aukerazko konprsio modurik " "onartzen.\n" "Bideo fotogramak deskarga ditzake, kamerak fotogramak edukiz gero, ondoz " "ondoko argazki gisa.\n" #: camlibs/jl2005a/library.c:132 #, fuzzy msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "Mars MR97310 kameraren liburutegia\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, fuzzy, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Zure USB kamera Kodak EZ200 da.\n" "IRUD kopurua = %i\n" #: camlibs/jl2005c/library.c:146 #, fuzzy msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" "Kontrolatzaile honek Mars MR97310 txipa (edo bateragarriak diren \n" "??Pixart PACx07??) duten kamerak onartzen ditu eta gtkam-ekin funtzionatu " "beharko luke.\n" "Kontrolatzaile honek honakoak lor ditzake:\n" " - koadro txikiak gtkam-erako\n" " - argazki osoak (640x480 edo 320x240PPM formatuan)(??352x288 & " "176x144??)\n" "Kamerak ez du argazkiak ezabatzea uzten, ez datuak\n" "kargatzea ere. Kontrolatzaile honek ez du aukerazko konprsio modurik " "onartzen.\n" "Bideo fotogramak deskarga ditzake, kamerak fotogramak edukiz gero, ondoz " "ondoko argazki gisa.\n" #: camlibs/jl2005c/library.c:161 #, fuzzy msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "Mars MR97310 kameraren liburutegia\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "CompactFlash txartela" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "Kodak DC120 kamerak KDC fitxategi-formatua erabiltzen du irudiak gordetzeko. " "Kameratik deskargatzen dituzun irudiak ikusi nahi badituzu, \"kdc2tiff\" " "programa deskargatu behar duzu. http://kdc2tiff.sourceforge.net helbidean " "eskura daiteke." #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Kodak DC120 kamerarako kamera-liburutegia\n" "(jendeak eskatuta)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Datuak eskuratzen..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "Burutzeko zain..." #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Fitxategia" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Fitxategi-mota" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Fitxategiaren bereizmena" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Fitxategi-konprimitzea" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Txikia (kalitaterik onena)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Tartekoa (kalitate hobea)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "Handia (kalitate ona)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Kapturatu" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Esposizio-konpentsazioa" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Automatikoa" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Behartu" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Bat ere ez" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Begi gorrien kontrako flasha" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Aktibatuta" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Desaktibatuta" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Bestelakoak" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Ezarri kameraren erlojua" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "Atakaren abiadura" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Albumaren izena" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Formateatzean txartelean ezarri beharreko izena." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "Formateatu compact flash" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Formateatu txartela eta ezarri albumaren izena." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Araztu" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Exekutatu aurrez definitutako komandoa\n" "parametro-balioekin." #: camlibs/kodak/dc210/dc210.c:498 #, fuzzy, c-format msgid "Pictures in camera: %d\n" msgstr "Kamerako argazkiak: %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:506 #, fuzzy, c-format msgid "Total pictures taken: %d\n" msgstr "Kapturatutako argazkiak guztira: %d, Flashez argituak: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, fuzzy, c-format msgid "Total flashes fired: %d\n" msgstr "Kapturatutako argazkiak guztira: %d, Flashez argituak: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, fuzzy, c-format msgid "Firmware: %d.%d\n" msgstr "Firmwarearen berrikuspena: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, fuzzy, c-format msgid "Filetype: JPEG (" msgstr "Fitxategi-mota" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "" #: camlibs/kodak/dc210/dc210.c:527 #, fuzzy, c-format msgid "low compression, " msgstr "Fitxategi-konprimitzea" #: camlibs/kodak/dc210/dc210.c:529 #, fuzzy, c-format msgid "medium compression, " msgstr "Fitxategi-konprimitzea" #: camlibs/kodak/dc210/dc210.c:531 #, fuzzy, c-format msgid "high compression, " msgstr "Fitxategi-konprimitzea" #: camlibs/kodak/dc210/dc210.c:533 #, fuzzy, c-format msgid "unknown compression %d, " msgstr "Fitxategi-konprimitzea" #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:556 #, fuzzy, c-format msgid "AC adapter is connected.\n" msgstr "Lentea ez dago konektatuta\n" #: camlibs/kodak/dc210/dc210.c:558 #, fuzzy, c-format msgid "AC adapter is not connected.\n" msgstr "Lentea ez dago konektatuta\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:580 #, fuzzy, c-format msgid "Unknown zoom mode %d\n" msgstr "Modelo ezezaguna \"%s\"" #: camlibs/kodak/dc210/dc210.c:586 #, fuzzy, c-format msgid "Exposure compensation: %s\n" msgstr "Esposizio-konpentsazioa" #: camlibs/kodak/dc210/dc210.c:588 #, fuzzy, c-format msgid "Exposure compensation: %d\n" msgstr "Esposizio-konpentsazioa" #: camlibs/kodak/dc210/dc210.c:593 #, fuzzy, c-format msgid "Flash mode: auto, " msgstr "Flasharen modua" #: camlibs/kodak/dc210/dc210.c:595 #, fuzzy, c-format msgid "Flash mode: force, " msgstr "Flasharen modua" #: camlibs/kodak/dc210/dc210.c:597 #, fuzzy, c-format msgid "Flash mode: off\n" msgstr "Flasharen modua" #: camlibs/kodak/dc210/dc210.c:599 #, fuzzy, c-format msgid "Unknown flash mode %d, " msgstr "Modelo ezezaguna \"%s\"" #: camlibs/kodak/dc210/dc210.c:607 #, fuzzy, c-format msgid "red eye flash on.\n" msgstr "Begi gorrien kontrako flasha" #: camlibs/kodak/dc210/dc210.c:610 #, fuzzy, c-format msgid "red eye flash off.\n" msgstr "Begi gorrien kontrako flasha" #: camlibs/kodak/dc210/dc210.c:615 #, fuzzy, c-format msgid "No card in camera.\n" msgstr "Errorea kamera irekitzean.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "Liburutegi hau Kodak DC 215 Zoom kamerarekin probatu da. DC 200 eta DC 210 " "kamerekin ere funtziona dezake. Kamera horietako bat baduzu, bidali mezu bat " "koltan@gmx.de helbidera kontrolatzailearen liburutegi honekin arazoren bat " "duzun edo dena ondo dagoen jakinarazteko." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Kodak DC215 Zoom kamerarako kamera-liburutegia.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "Zain..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "1. parametroa" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "2. parametroa" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "3. parametroa" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Modeloa: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "Firmwarearen bertsioa: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Bateriaren egoera: %s, AC moldagailua: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "Argazki-kopurua: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "Geratzen den lekua: Handia: %d, Tartekoa: %d, Txikia: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "Memoria-txartelaren egoera (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "Kapturatutako argazkiak guztira: %d, Flashez argituak: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Kodak DC240 kamerarako liburutegia\n" "Scott Fritzinger eta Hubert Figuiere \n" "Kodak DC240, DC280, DC3400 eta DC5000 kameretarako kamera-liburutegia.\n" "gPhoto2-rako berridatzia eta eguneratua." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Ahula" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Hutsa" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Baliogabea" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Erabili gabe" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "Erabiltzen" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "Txartela irekita dago" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "Txartela ez dago irekita" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "Txartela ez dago formateatuta" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Txartelik ez" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "Unean eragiketa bat egiten ari da. Kamera honek eragiketa bakarra onartzen " "du aldiko. Itxaron uneko eragiketa amaitu arte." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "kamera inaktibo egon da 9 segundoz, berrabiarazi egingo da.\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Arazo ezagunak:\n" "\n" "1. Kodak DC3200-k gutxienez 10 segundoz behin komando bat jasotzen ez badu, " "denboraz kanpo geratuko da eta berriro hasieratu beharko da. Kamerak " "erantzuten ez badu, hautatu berriro kamera. Ondorioz, berriro abiaraziko da." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Kodak DC3200en kontrolatzailea\n" "Donn Morrison \n" "\n" "Galderak eta oharrak ongi etorriak izango dira." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "Zure USB kamera Kodak EZ200 da.\n" "IRUD kopurua = %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "Kodak EZ200 kontrolatzailea\n" "Bucas Jean-Francois \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Fokatze-errorea." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Iris-errorea." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Strobe-ren errorea." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "EEPROMen kontrol-baturaren errorea." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "Barne-errorea (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "Barne-errorea (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Ez dago txartelik." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "Txartela ez da onartzen." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "Txartela kendu egin da atzitu bitartean." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Irudi-zenbakia ez da baliozkoa." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "Ezin da txartela idatzi." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "Txartelak idazketaren kontrako babesa du." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "Ez da lekurik geratzen txartelean." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Irudia babestuta dago." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "Argi gutxiegi dago." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Autofokusaren errorea." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Sistema-errorea." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Parametro baliogabea." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "Komandoa ezin da bertan behera utzi." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Lokalizatzeko datuak luzeegiak dira." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Lokalizatzeko datuak hondatuta." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Komando hori ez da onartzen." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "Beste komando bat exekutatzen ari da." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Komando-ordenan errorea." #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Errore ezezaguna." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "Oraindik aurkitu ez den errore bat bidali berri du kamerak. Eman horren " "berri %s(e)ri eta adierazi nola agertu zaizun errore hau: (0x%x,0x%x). Mila " "esker!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Fitxategi-zerrenda eskuratzen..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "Abiadura desberdinak probatzen..." #: camlibs/konica/library.c:338 #, fuzzy msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "Ezin izan da kamera kontaktatu. Ziurtatu ordenagailura konektatuta eta " "piztuta dagoela." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "%i irudi ezin izan dira ezabatu, babestuta daudelako" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Modeloa: %s\n" "Serie-zenbakia: %s,\n" "Hardware-bertsioa: %i.%i\n" "Software-bertsioa: %i.%i\n" "Softwarearen bertsioa probatzen: %i.%i\n" "Izena: %s,\n" "Fabrikatzailea: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Konica liburutegia\n" "Lutz Mueller \n" "Konica kamera guztiak eta hainbat HP kamera onartzen ditu." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Konfigurazioa eskuratzen..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Konicaren konfigurazioa" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Ezarpen iraunkorrak" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "Kamerak soinua egin beharko luke argazkia egitean?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Tenporizadore automatikoaren ordua" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Automatikoki itzaltzeko ordua" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Diapositiba-erakusketaren tartea" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Bereizmena" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Txikia (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Tartekoa (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Handia (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Lokalizazioa" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Hizkuntza" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Bat ere ez hautatuta" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "Telebistaren irteerako formatua" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "Ez bistaratu TB menua" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Data-formatua" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "Hila/Eguna/Urtea" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "Eguna/Hila/Urtea" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Urtea/Hila/Eguna" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Saioaren ezarpen iraunkorrak" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Aktibatuta, begi gorriak gutxitzea" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Fokua" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "Finkoa" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Ezarpen aldakorrak" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "Tenporizadorea" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "Tenporizadorea (hurrengo irudia soilik)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Normala" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Ezin izan da lokalizatzeko daturik aurkitu '%s'(e)n" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "Lokalizatzeko fitxategia luzeegia da." #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "Aurrebista hau ez dago." #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "Datuak hondatu egin dira." #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "Kamerak honek ez du onartzen %d irudi-mota!" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "Ezin da %s irudia ezabatu." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "Ezin dira irudi guztiak ezabatu." #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "Irudia kargatzen..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 #, fuzzy msgid "Can't upload this image to the camera. An error has occurred." msgstr "Ezin da irudi hau kameran kargatu. Errore bat gertatu da." #: camlibs/konica/qm150.c:634 #, fuzzy msgid "You must be in record mode to capture images." msgstr "Grabatzeko moduan egon behar duzu irudiak kapturatzeko." #: camlibs/konica/qm150.c:637 #, fuzzy msgid "No space available to capture new images. You must delete some images." msgstr "" "Ez dago lekurik irudi berriak kapturatzeko. Irudi batzuk ezabatu behar " "dituzu." #: camlibs/konica/qm150.c:641 #, fuzzy msgid "Can't capture new images. Unknown error" msgstr "Ezin da irudi berria kapturatu. Errore ezezaguna" #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "Kamerak ez du erantzuten." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Txikia" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Tartekoa" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Handia" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Ikonoak" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Zuri-balantzea" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "Bulegoa" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "Argi naturala" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "Zorroztasuna" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "Garbia" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "Suabea" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "Kolorea" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "Argia" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "Sakona" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "Zuri-beltza" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "Soila" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "Sekuentzia 9" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "Bistaratu data" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "Edonon" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "Erreproduzitze-modua" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "Grabatze-modua" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "Leku guztietan" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "AC" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "Erreproduzitu" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Grabatu" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "EE/HH/UUUU" #: camlibs/konica/qm150.c:1157 #, fuzzy, c-format msgid "YYYY/MM/DD" msgstr "UUUU/HH/EE" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "HH/EE/UUUU" #: camlibs/konica/qm150.c:1165 #, fuzzy, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Modeloa: %s\n" "Ahalmena: %iMo\n" "Energia: %s\n" "Automatikoki itzaltzeko ordua: %i min\n" "Modua: %s\n" "Irudiak: %i/%i\n" "Data-bistaratzea: %s\n" "Data eta ordua: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Konica Q-M150 liburutegia\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Konica Q-M150 frantseserako euskarria." #: camlibs/konica/qm150.c:1203 #, fuzzy, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "Konica Q-M150:\n" "Kamera honek ez du onartzen kanpotik \n" "aldaketarik egitea.\n" "Beraz, konfigurazioan ikus dezakezu zer dagoen\n" "konfiguratuta, baina ezin duzu aldaketarik egin.\n" "\n" "Kontrolatzaile honekin arazorik baduzu, bidali mezu\n" "elektroniko bat kontrolatzailearen egileei.\n" "\n" "Eskerrik asko GPhoto2 eta UNIX/Linux sistema eragileak erabiltzeagatik.\n" #: camlibs/largan/lmini/largan.c:228 #, fuzzy msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Largan kontrolatzailea\n" "Hubert Figuiere \n" "\n" "Largan Lmini kamera kontrolatzen du.\n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" #: camlibs/mars/library.c:124 #, fuzzy, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Mars MR97310 kamera.\n" "%i argazki ditu. \n" msgstr[1] "" "Mars MR97310 kamera.\n" "%i argazki ditu. \n" #: camlibs/mars/library.c:135 #, fuzzy msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" "Kontrolatzaile honek Mars MR97310 txipa (edo bateragarriak diren \n" "??Pixart PACx07??) duten kamerak onartzen ditu eta gtkam-ekin funtzionatu " "beharko luke.\n" "Kontrolatzaile honek honakoak lor ditzake:\n" " - koadro txikiak gtkam-erako\n" " - argazki osoak (640x480 edo 320x240PPM formatuan)(??352x288 & " "176x144??)\n" "Kamerak ez du argazkiak ezabatzea uzten, ez datuak\n" "kargatzea ere. Kontrolatzaile honek ez du aukerazko konprsio modurik " "onartzen.\n" "Bideo fotogramak deskarga ditzake, kamerak fotogramak edukiz gero, ondoz " "ondoko argazki gisa.\n" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "Mars MR97310 kameraren liburutegia\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Modeloa:\t\t\tMinolta Dimage V (%s)\n" "Hardwarearen berrikuspena:\t%s\n" "Firmwarearen berrikuspena:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Konexio-modua:\t\t%s\n" "Esposizioaren zuzenketa:\t%s\n" "Esposizioaren data:\t\t%d\n" "Baliozko data:\t\t%s\n" "Data:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Tenporizadorea:\t\t%s\n" "Kalitatearen konfigurazioa:\t%s\n" "Erreproduzitze-/Grabatze-modua:\t%s\n" "Txartelaren baliozko IDa:\t\t%s\n" "Txartelaren IDa:\t\t%d\n" "Flash-modua:\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Urrunekoa" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Lokala" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Bai" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "Ez" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Fina" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Estandarra" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Automatikoa\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Behartu flasha\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Debekatu flasha\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Balio baliogabea ( %d )\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "Bateria-maila:\t\t%s\n" "Irudi-kopurua:\t%d\n" "Geratzen den gutxieneko edukiera:\t%d\n" "Okupatuta:\t\t\t%s\n" "Flasha kargatzen:\t\t%s\n" "Lentearen egoera:\t\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "Ez dago beteta" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Beteta" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "Okupatuta" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "Inaktibo" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "Kargatzen" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Prest" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Normal\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "Lentearen noranzkoa ez dator bat flasharen argiarekin\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "Lentea ez dago konektatuta\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "Balio okerra lentearen egoerarako %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "Txartelaren egoera:\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Idazketaren kontra babestuta" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "Txartel desegokia" #: camlibs/minolta/dimagev/dimagev.c:406 #, fuzzy, c-format msgid "Bad value for card status %d" msgstr "Balio okerra txartelaren egoerarako %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Minolta Dimage V kameraren liburutegia\n" "%s\n" "Gus Hartmann \n" "Eskerrik asko bereziki Minoltari zehaztapenengatik." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Flasharen argia: automatikoa (begi gorriak gutxitzea)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Flasharen argia: automatikoa" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Flasharen argia: aktibatuta (begi gorriak gutxitzea)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Flasharen argia: aktibatuta" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Flasharen argia: desaktibatuta" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Flasharen argia: definitu gabe" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Mustek MDC800ren laburpena:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "ez da egoeraren berri eman." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "Compact Flash txartela detektatu da\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Ez da Compact Flash txartela detektatu\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "Uneko modua: kamera-modua\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Uneko modua: erreproduzitze-modua\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Bateriak ondo daude." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Bateriak baxu daude." #: camlibs/mustek/mdc800.c:264 #, fuzzy msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Mustek MDC-800erako gPhoto2 liburutegia\n" "Henning Zabel \n" "gphoto2ra Marcus Meissner-ek emana \n" "Serieko eta USB protokoloak onartzen ditu." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "coolshot liburutegia v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Kamera deskonektatzen." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "%s irudia deskargatzen." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Irudia kargatzen: %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "Fitxategiak %ld byteko tamaina du. Karga daitekeen fitxategi handienaren " "tamaina hau da: %i byte." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Kargatzen..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "%s irudia ezabatzen." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1000rako gPhoto liburutegia\n" "Mariusz Zynel \n" "\n" "Fredrik Roubert-ek eta\n" "Galen Brooks-ek (galen@nine.com)idatzitako\n" "dc1000 programan oinarritua." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "%s deskargatzen." #: camlibs/panasonic/dc1580.c:627 #, fuzzy msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1580rako gPhoto liburutegia\n" "Mariusz Zynel \n" "\n" "Fredrik Roubert-ek eta\n" "Galen Brooks-ek (galen@nine.com)idatzitako\n" "dc1000 programan oinarritua." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "'%s' deskargatzen..." #: camlibs/panasonic/l859/l859.c:582 #, fuzzy msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic-ek irudiak kapturatzeko PHOTOSHOT izeneko teknologia aurkeztu du " "lehen aldiz Palmcorder serie hauetarako. Irudiak JPEG formatuan gordetzen " "dira barneko Flash txartel batean eta ordenagailura transferi daitezke " "inkorporatua duen serieko atakaren bidez. Irudiak bi bereizmenetako batean " "gordetzen dira; NORMALA 320 x 240 da eta FINA 640 x 480. Lenteetatik irudiak " "kapturatzen dituen CCD gailuak 300.000 pixel bakarrik ditu; ondorioz, " "kalitate txikiko irudiak bakarrik egiten ditu." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Arazo ezagunak:\n" "\n" "Komunikazio-arazoak badaude, berrabiarazi kamera eta aplikazioa. " "Kontrolatzailea ez da egoera hauetatik leheneratzeko behar bezain sendoa, " "batez ere arazoren bat badago eta kamera 9600 baino abiadura handiagoetan " "behar bezala itzaltzen ez bada." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder-erako kontrolatzailea\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " Memoria osoak %8d byte ditu.\n" " %8d byteko memoria dago libre.\n" " Fitxategi-kontaketa: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" " Egileak: Till Adam\n" "\n" "eta: Miah Gregory\n" " " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "Fitxategia deskargatzen..." #: camlibs/pccam600/library.c:249 #, fuzzy msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" " Egilea: Peter Kajberg\n" " h.el.: \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, fuzzy, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "pccam600_init: %d bloke espero dira; %d lortua" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "pccam600_get_file: %d indize lortuta, %d espero ziren" #: camlibs/pccam600/pccam600.c:180 #, fuzzy, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "pccam600_close: itzulitako balioa %d da, %d izan beharrean" #: camlibs/pccam600/pccam600.c:213 #, fuzzy, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "pccam600_init: %d bloke espero dira; %d lortuak" #: camlibs/pccam600/pccam600.c:224 #, fuzzy, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" "pccam600 init: ustegabeko errorea: gp_port_read-ek %d itzuli du, %d ordez" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Hainbat Polaroid kameretarako deskargatzeko programa. Peter Desnoyers-ek " "idatzia eta gphoto2rako Nathan Stenzel-ek " " eta Lutz Mueller-ek egokitua.\n" "Polaroid 640Seren proba Michael Golden-ek egin zuen ." #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Modeloa: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 #, fuzzy msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "GrandTek 98x-n oinarritutako kameretarako deskargatzeko programa. Chris " "Byrne-k idatzia eta gphoto2rako Lutz Mueller-ek " " egokitua. Protokolo-hobekuntzak eta ondorengo " "prozesatzea Jenoptik JD350e-rako Michael Trawny-k egina. Akats-konponketak Marcus Meissner-ek eginak." #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "Irudiaren kalitatea" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Irudiaren tamaina" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Flasharen konfigurazioa" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Automatikoki itzaltzea (minutuak)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Informazioa" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "normala" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "fina" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "oso fina" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "automatikoa" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "aktibatuta" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "desaktibatuta" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "erreproduzitu" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "grabatu" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "menua" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "bateria" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "a/c moldagailua" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Espero ez zen goiburua jaso da (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Espero ez zen erantzuna jaso da" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Kontrol-baturaren errorea" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "Kamerak ez du komandoa onartu." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "Kamerak uste baino byte gehiago bidali ditu (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "%i (= 0x%x) irudiari buruzko informazioa eskatu da, baina %i irudiari " "buruzkoa jaso da" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "Irudi-formatu ezezaguneko %i byte jaso dira. Idatzi %s(e)ri eta eskatu " "laguntza." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Polaroid DC700 kamerarako deskargatzeko programa. Ryan Lantzer-ek " " idatzia gphoto-4.x-rako. gphoto2rako Lutz Mueller-ek " " egokitua." #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Kamera" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "Zenbat denbora pasatzen da kamera itzali arte?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Irudia" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Data: %i/%02i/%02i %02i:%02i:%02i\n" "Egindako argazkiak: %i\n" "Argazki libreak: %i\n" "Software-bertsioa: %s\n" "Baud-abiadura: %s\n" "Memoria: %i megabyte\n" "Kameraren modua: %s\n" "Irudiaren kalitatea: %s\n" "Flasharen konfigurazioa: %s\n" "Informazioa: %s\n" "Tenporizadorea: %s\n" "LCD: %s\n" "Automatikoki itzaltzea: %i minutu\n" "Energia-iturria: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "Kontrolatzaile honek ez du onartzen eskatutako ataka-mota (%i)." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 #, fuzzy msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Zure kamerak ez du onartzen kaptura generikoa" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, fuzzy, c-format msgid "Unknown value %04x" msgstr "%i fitxategi-mota ezezaguna." #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, fuzzy, c-format msgid "Unknown value %04d" msgstr "%i fitxategi-mota ezezaguna." #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "ustegabeko %i datu mota" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "Eskuzkoa" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 #, fuzzy msgid "Automatic" msgstr "Automatikoa\n" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 #, fuzzy msgid "One-push Automatic" msgstr "Automatikoa\n" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Tungstenoa" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Lainotua" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 #, fuzzy msgid "Shade" msgstr "Garbia" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "Kolorearen tenperatura" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "Aurrez ezarria" #: camlibs/ptp2/config.c:1415 #, fuzzy msgid "Fluorescent Lamp 1" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:1416 #, fuzzy msgid "Fluorescent Lamp 2" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:1417 #, fuzzy msgid "Fluorescent Lamp 3" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:1418 #, fuzzy msgid "Fluorescent Lamp 4" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:1419 #, fuzzy msgid "Fluorescent Lamp 5" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 #, fuzzy msgid "Choose Color Temperature" msgstr "Kolorearen tenperatura" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "" #: camlibs/ptp2/config.c:1430 #, fuzzy msgid "Fluorescent: Warm White" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:1431 #, fuzzy msgid "Fluorescent: Cold White" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:1432 #, fuzzy msgid "Fluorescent: Day White" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:1433 #, fuzzy msgid "Fluorescent: Daylight" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 #, fuzzy msgid "JPEG Fine" msgstr "JPEG" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 #, fuzzy msgid "JPEG Normal" msgstr "Normala" #: camlibs/ptp2/config.c:1443 #, fuzzy msgid "RAW + JPEG Fine" msgstr "JPEG" #: camlibs/ptp2/config.c:1444 #, fuzzy msgid "RAW + JPEG Normal" msgstr "Normala" #: camlibs/ptp2/config.c:1449 #, fuzzy msgid "Single frame" msgstr "Soila" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "" #: camlibs/ptp2/config.c:1452 #, fuzzy msgid "Self-timer" msgstr "Tenporizadorea" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "" #: camlibs/ptp2/config.c:1735 #, fuzzy msgid "undefined" msgstr "PTP Definitu gabeko errorea" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 #, fuzzy msgid "Undefined" msgstr "PTP Definitu gabeko errorea" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "Pertsonalizatua" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 #, fuzzy msgid "Sports" msgstr "Puntua" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "" #: camlibs/ptp2/config.c:1780 #, fuzzy msgid "Flash Off" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:1788 #, fuzzy msgid "red eye suppression" msgstr "Aktibatuta, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "" #: camlibs/ptp2/config.c:1790 #, fuzzy msgid "auto + red eye suppression" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:1791 #, fuzzy msgid "on + red eye suppression" msgstr "Aktibatuta, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 #, fuzzy msgid "Commander" msgstr "Komando-ordenan errorea." #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 #, fuzzy msgid "Auto Aperture" msgstr "Irekiera" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 #, fuzzy msgid "Full Manual" msgstr "Eskuzkoa" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 #, fuzzy msgid "AF-C" msgstr "AC" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 #, fuzzy msgid "AF-A" msgstr "AC" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 #, fuzzy msgid "MF (fixed)" msgstr "Finkoa" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 #, fuzzy msgid "MF (selection)" msgstr "Fitxategiaren bereizmena" #: camlibs/ptp2/config.c:1928 #, fuzzy msgid "Center-weighted" msgstr "Erdian zentratuta" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "" #: camlibs/ptp2/config.c:1931 #, fuzzy msgid "Evaluative" msgstr "Ezarpen aldakorrak" #: camlibs/ptp2/config.c:1932 #, fuzzy msgid "Partial" msgstr "1. parametroa" #: camlibs/ptp2/config.c:1933 #, fuzzy msgid "Center-weighted average" msgstr "Erdian zentratuta" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "" #: camlibs/ptp2/config.c:1947 #, fuzzy msgid "User defined 1" msgstr "PTP Definitu gabeko errorea" #: camlibs/ptp2/config.c:1948 #, fuzzy msgid "User defined 2" msgstr "PTP Definitu gabeko errorea" #: camlibs/ptp2/config.c:1949 #, fuzzy msgid "User defined 3" msgstr "PTP Definitu gabeko errorea" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 #, fuzzy msgid "Multiple Focusing Points, Auto" msgstr "Fokatze-puntua" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 #, fuzzy msgid "Multiple Focusing Points (Right)" msgstr "Fokatze-puntua" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 #, fuzzy msgid "Multiple Focusing Points (Left)" msgstr "Fokatze-puntua" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 #, fuzzy msgid "Large" msgstr "Irudia" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 #, fuzzy msgid "Medium 1" msgstr "Tartekoa" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 #, fuzzy msgid "Medium 2" msgstr "Tartekoa" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 #, fuzzy msgid "Medium 3" msgstr "Tartekoa" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "" #: camlibs/ptp2/config.c:2092 #, fuzzy msgid "Setting 4" msgstr "Flasharen konfigurazioa" #: camlibs/ptp2/config.c:2093 #, fuzzy msgid "Setting 5" msgstr "Flasharen konfigurazioa" #: camlibs/ptp2/config.c:2094 #, fuzzy msgid "Setting 6" msgstr "Flasharen konfigurazioa" #: camlibs/ptp2/config.c:2095 #, fuzzy msgid "Setting 7" msgstr "Flasharen konfigurazioa" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 #, fuzzy msgid "Video OUT" msgstr "Bideo irteera" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, fuzzy, c-format msgid "Unknown %d" msgstr "Ezezaguna" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "" #: camlibs/ptp2/config.c:2246 msgid "Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2272 msgid "RAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2273 msgid "mRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2274 msgid "sRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2275 msgid "RAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2276 msgid "mRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2277 msgid "sRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "" #: camlibs/ptp2/config.c:2305 #, fuzzy msgid "Timer 10 sec" msgstr "Urrunekoa" #: camlibs/ptp2/config.c:2306 #, fuzzy msgid "Timer 2 sec" msgstr "Urrunekoa" #: camlibs/ptp2/config.c:2307 #, fuzzy msgid "Single silent" msgstr "Soila" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, fuzzy, c-format msgid "Auto ISO" msgstr "Automatikoa" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, fuzzy, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "Esposizio-konpentsazio joera" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, fuzzy, c-format msgid "%d Multi Frame Noise Reduction" msgstr "Esposizio-konpentsazio joera" #: camlibs/ptp2/config.c:2453 #, fuzzy msgid "Multi Frame Noise Reduction" msgstr "Esposizio-konpentsazio joera" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Tenporizadorea" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "" #: camlibs/ptp2/config.c:2858 #, fuzzy msgid "Action" msgstr "Automatikoa" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "" #: camlibs/ptp2/config.c:2868 #, fuzzy msgid "Automatic (No Flash)" msgstr "Automatikoa\n" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 #, fuzzy msgid "Sports Action" msgstr "Automatikoa" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 #, fuzzy msgid "Picture Effect" msgstr "Argazki efektua" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "" #: camlibs/ptp2/config.c:2893 #, fuzzy msgid "Pet Portrait" msgstr "Kontrastea" #: camlibs/ptp2/config.c:2894 #, fuzzy msgid "Candlelight" msgstr "Argi naturala" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "" #: camlibs/ptp2/config.c:3032 #, fuzzy msgid "Flourescent" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 #, fuzzy msgid "Effects" msgstr "Efektu-modua" #: camlibs/ptp2/config.c:3075 #, fuzzy msgid "U1" msgstr "1x" #: camlibs/ptp2/config.c:3076 #, fuzzy msgid "U2" msgstr "F2" #: camlibs/ptp2/config.c:3104 #, fuzzy msgid "Back Light" msgstr "Argia" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 #, fuzzy msgid "Single Shot" msgstr "Soila" #: camlibs/ptp2/config.c:3114 #, fuzzy msgid "Burst" msgstr "Onena" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 #, fuzzy msgid "Timelapse" msgstr "Denbora-hutsune zenbakia" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 #, fuzzy msgid "Timer" msgstr "Tenporizadorea" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 #, fuzzy msgid "Delayed Remote" msgstr "Urrunekoa" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "" #: camlibs/ptp2/config.c:3125 #, fuzzy msgid "Selftimer 2s" msgstr "Tenporizadore automatikoaren ordua" #: camlibs/ptp2/config.c:3126 #, fuzzy msgid "Selftimer 10s" msgstr "Tenporizadore automatikoaren ordua" #: camlibs/ptp2/config.c:3127 #, fuzzy msgid "Bracketing C 0.3 Steps" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3128 #, fuzzy msgid "Bracketing C 0.7 Steps" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3129 #, fuzzy msgid "Bracketing C 1.0 Steps" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3130 #, fuzzy msgid "Bracketing C 2.0 Steps" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3131 #, fuzzy msgid "Bracketing C 3.0 Steps" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3132 #, fuzzy msgid "Bracketing S 0.3 Steps" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3133 #, fuzzy msgid "Bracketing S 0.7 Steps" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3134 #, fuzzy msgid "Bracketing S 1.0 Steps" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3135 #, fuzzy msgid "Bracketing S 2.0 Steps" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3136 #, fuzzy msgid "Bracketing S 3.0 Steps" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3137 #, fuzzy msgid "Bracketing WB Lo" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/config.c:3138 #, fuzzy msgid "Bracketing WB Hi" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 #, fuzzy msgid "Centre-spot" msgstr "Erdian zentratuta" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 #, fuzzy msgid "Single Area" msgstr "Soila" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "" #: camlibs/ptp2/config.c:3152 #, fuzzy msgid "Single-area AF" msgstr "Soila" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "" #: camlibs/ptp2/config.c:3154 msgid "Group-dynamic AF" msgstr "" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "" #: camlibs/ptp2/config.c:3165 #, fuzzy msgid "3D Tracking" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/config.c:3171 #, fuzzy msgid "sRGB (portrait)" msgstr "Kontrastea" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "" #: camlibs/ptp2/config.c:3226 #, fuzzy, c-format msgid "Unknown value 0x%04x" msgstr "%i fitxategi-mota ezezaguna." #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 #, fuzzy msgid "Centre" msgstr "Kapturatu" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 #, fuzzy msgid "Bottom" msgstr "Zooma" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 #, fuzzy msgid "Right" msgstr "Argia" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 #, fuzzy msgid "Center Weighted" msgstr "Erdian zentratuta" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "" #: camlibs/ptp2/config.c:3259 #, fuzzy msgid "Center Spot" msgstr "Erdian zentratuta" #: camlibs/ptp2/config.c:3266 #, fuzzy msgid "Automatic Flash" msgstr "Automatikoa\n" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 #, fuzzy msgid "Fill flash" msgstr "Flasha" #: camlibs/ptp2/config.c:3269 #, fuzzy msgid "Red-eye automatic" msgstr "Begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3270 #, fuzzy msgid "Red-eye fill" msgstr "Begi gorrien kontrako flasha" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 #, fuzzy msgid "External sync" msgstr "kanpotik" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 #, fuzzy msgid "Auto Slow Sync" msgstr "Sinkronizazio motela" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 #, fuzzy msgid "Red-eye Reduction + Slow Sync" msgstr "Begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3277 #, fuzzy msgid "Red-eye reduction" msgstr "Begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3278 #, fuzzy msgid "Red-eye reduction with slow sync" msgstr "Begi gorriak gutxitzea" #: camlibs/ptp2/config.c:3279 #, fuzzy msgid "Slow sync" msgstr "Sinkronizazio motela" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Sinkronizazio motela" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Zuri-beltza" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "" #: camlibs/ptp2/config.c:3298 #, fuzzy msgid "Color sketch" msgstr "Kolorearen modua" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "" #: camlibs/ptp2/config.c:3302 #, fuzzy msgid "High key" msgstr "Handia" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 #, fuzzy msgid "infinite" msgstr "Infinitua" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "" #: camlibs/ptp2/config.c:3772 #, fuzzy msgid "Normal-area AF" msgstr "Normala" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "" #: camlibs/ptp2/config.c:3778 #, fuzzy msgid "Single-servo AF" msgstr "Soila" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 #, fuzzy msgid "Manual Focus" msgstr "Eskuzkoa" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 #, fuzzy msgid "AE/AF Lock" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 #, fuzzy msgid "1 minute" msgstr "41 mm" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 #, fuzzy msgid "10 minutes" msgstr "41 mm" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "" #: camlibs/ptp2/config.c:3827 #, fuzzy msgid "6 mm" msgstr "29 mm" #: camlibs/ptp2/config.c:3828 #, fuzzy msgid "8 mm" msgstr "58 mm" #: camlibs/ptp2/config.c:3829 #, fuzzy msgid "10 mm" msgstr "51 mm" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "" #: camlibs/ptp2/config.c:3842 #, fuzzy msgid "1" msgstr "1x" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 #, fuzzy msgid "2" msgstr "F2" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 #, fuzzy msgid "4" msgstr "F4" #: camlibs/ptp2/config.c:3845 #, fuzzy msgid "8" msgstr "F8" #: camlibs/ptp2/config.c:3846 #, fuzzy msgid "15" msgstr "1.5" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "" #: camlibs/ptp2/config.c:3855 #, fuzzy msgid "20s" msgstr "2.0" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 #, fuzzy msgid "15s" msgstr "1.5" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "" #: camlibs/ptp2/config.c:3858 #, fuzzy msgid "10s" msgstr "1.0" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 #, fuzzy msgid "8s" msgstr "F8" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 #, fuzzy msgid "4s" msgstr "F4" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 #, fuzzy msgid "2s" msgstr "F2" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 #, fuzzy msgid "1s" msgstr "1x" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "" #: camlibs/ptp2/config.c:3916 #, fuzzy msgid "15 minutes" msgstr "41 mm" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 #, fuzzy msgid "Sharper" msgstr "Garbia" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 #, fuzzy msgid "Softer" msgstr "Suabea" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 #, fuzzy msgid "Direct Print" msgstr "Direktorioa badago" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 #, fuzzy msgid "Medium Low" msgstr "Tartekoa" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 #, fuzzy msgid "Medium high" msgstr "Tartekoa" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 #, fuzzy msgid "Low contrast" msgstr "Kontrastea" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 #, fuzzy msgid "Medium High" msgstr "Tartekoa" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 #, fuzzy msgid "Zone Focus (Close)" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "" #: camlibs/ptp2/config.c:3976 #, fuzzy msgid "Automatic Macro" msgstr "Automatikoa\n" #: camlibs/ptp2/config.c:3980 #, fuzzy msgid "Single-Servo AF" msgstr "Soila" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3989 #, fuzzy msgid "One Shot" msgstr "Soila" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 #, fuzzy msgid "AI Focus" msgstr "Fokua" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 #, fuzzy msgid "Fluorescent H" msgstr "Fluoreszentea" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 #, fuzzy msgid "Custom Whitebalance PC-1" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 #, fuzzy msgid "Custom Whitebalance PC-2" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 #, fuzzy msgid "Custom Whitebalance PC-3" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 #, fuzzy msgid "Missing Number" msgstr "F-zenbakia" #: camlibs/ptp2/config.c:4034 #, fuzzy msgid "Shadow" msgstr "Garbia" #: camlibs/ptp2/config.c:4118 msgid "Low sharpening" msgstr "" #: camlibs/ptp2/config.c:4120 #, fuzzy msgid "Black & white" msgstr "Zuri-beltza" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 #, fuzzy msgid "AE & Flash" msgstr "Flashik GABE" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 #, fuzzy msgid "AE only" msgstr "irakurtzeko soilik" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 #, fuzzy msgid "Flash only" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 #, fuzzy msgid "WB bracketing" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/config.c:4221 #, fuzzy msgid "ADL bracketing" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 #, fuzzy msgid "Remote Mirror Up" msgstr "Data eta ordua" #: camlibs/ptp2/config.c:4248 #, fuzzy msgid "Application Mode 0" msgstr "Operazio-modua" #: camlibs/ptp2/config.c:4249 #, fuzzy msgid "Application Mode 1" msgstr "Operazio-modua" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "" #: camlibs/ptp2/config.c:4286 #, fuzzy msgid "Low sensitivity" msgstr "Txikia (kalitaterik onena)" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "" #: camlibs/ptp2/config.c:4378 #, fuzzy msgid "Flash/speed" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "" #: camlibs/ptp2/config.c:4380 #, fuzzy msgid "Flash/aperture" msgstr "Irekiera" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 #, fuzzy msgid "NEF+Fine" msgstr "Fina" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 #, fuzzy msgid "NEF+Normal" msgstr "Normala" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "" #: camlibs/ptp2/config.c:4575 #, fuzzy msgid "RAW+JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "" #: camlibs/ptp2/config.c:4642 #, fuzzy msgid "Optimal quality" msgstr "Irudiaren kalitatea" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "" #: camlibs/ptp2/config.c:4695 #, fuzzy msgid "3 (Normal)" msgstr "Normala" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 #, fuzzy msgid "AE/AF lock" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 #, fuzzy msgid "AE lock only" msgstr "irakurtzeko soilik" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 #, fuzzy msgid "AF lock only" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "" #: camlibs/ptp2/config.c:4780 #, fuzzy msgid "Preview" msgstr "Aurrekoa" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "" #: camlibs/ptp2/config.c:4788 #, fuzzy msgid "Bracketing burst" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/config.c:4789 #, fuzzy msgid "Matrix metering" msgstr "1. parametroa" #: camlibs/ptp2/config.c:4790 #, fuzzy msgid "Center-weighted metering" msgstr "Erdian zentratuta" #: camlibs/ptp2/config.c:4791 #, fuzzy msgid "Spot metering" msgstr "Puntua neurtzeko modua" #: camlibs/ptp2/config.c:4792 #, fuzzy msgid "Playback" msgstr "Erreproduzitu" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "" #: camlibs/ptp2/config.c:4799 #, fuzzy msgid "Viewfinder virtual horizont" msgstr "Aurreikustaile modua" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "" #: camlibs/ptp2/config.c:4871 #, fuzzy msgid "Unknown value" msgstr "%i fitxategi-mota ezezaguna." #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "" #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "" #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "" #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 #, fuzzy msgid "Press Full" msgstr "PTP Biltegia beteta" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 #, fuzzy msgid "Press 1" msgstr "Aurrez ezarria" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 #, fuzzy msgid "Press 2" msgstr "Aurrez ezarria" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 #, fuzzy msgid "Press 3" msgstr "Aurrez ezarria" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" #: camlibs/ptp2/config.c:5923 #, fuzzy msgid "Internal RAM" msgstr "barnetik" #: camlibs/ptp2/config.c:5924 #, fuzzy msgid "Memory card" msgstr "Txartelik ez" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "" #: camlibs/ptp2/config.c:6092 #, fuzzy msgid "Display" msgstr "Bistaratu data" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "" #: camlibs/ptp2/config.c:6108 #, fuzzy msgid "Delete" msgstr "Argi naturala" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "" #: camlibs/ptp2/config.c:6215 #, fuzzy msgid "Managed" msgstr "Hizkuntza" #: camlibs/ptp2/config.c:6216 #, fuzzy msgid "Ad-hoc" msgstr "AE blokeoa" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "" #: camlibs/ptp2/config.c:6359 #, fuzzy msgid "Default gateway" msgstr "Argi naturala" #: camlibs/ptp2/config.c:6360 #, fuzzy msgid "Access mode" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "" #: camlibs/ptp2/config.c:6362 #, fuzzy msgid "Encryption" msgstr "Automatikoa" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "" #: camlibs/ptp2/config.c:6364 #, fuzzy msgid "Write" msgstr "Zabala" #: camlibs/ptp2/config.c:6412 #, fuzzy msgid "List Wifi profiles" msgstr "Fitxategi guztien zerrenda" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "" #: camlibs/ptp2/config.c:6521 #, fuzzy msgid "Power Down" msgstr "Energia aurreztea" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 #, fuzzy msgid "Focus Lock" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 #, fuzzy msgid "Bulb Mode" msgstr "Soinu-seinalea" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6530 #, fuzzy msgid "Set Nikon Autofocus area" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6531 #, fuzzy msgid "Set Nikon Control Mode" msgstr "Kaptura modua" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "" #: camlibs/ptp2/config.c:6535 #, fuzzy msgid "Canon EOS Zoom Position" msgstr "Fokuaren kokalekua" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6537 #, fuzzy msgid "Nikon Viewfinder" msgstr "Aurreikustaile modua" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 #, fuzzy msgid "Movie Capture" msgstr "Kapturatu" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 #, fuzzy msgid "Serial Number" msgstr "%sSerie-zenbakia: %s\n" #: camlibs/ptp2/config.c:6548 #, fuzzy msgid "Camera Manufacturer" msgstr "%sFabrikatzailea: %s\n" #: camlibs/ptp2/config.c:6550 #, fuzzy msgid "Device Version" msgstr "Bertsioa: " #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "" #: camlibs/ptp2/config.c:6556 #, fuzzy msgid "PTP Version" msgstr "Bertsioa: " #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 #, fuzzy msgid "DPOF Version" msgstr "Bertsioa: " #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "" #: camlibs/ptp2/config.c:6559 #, fuzzy msgid "External Flash" msgstr "kanpotik" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "Bateria maila" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 #, fuzzy msgid "Camera Orientation" msgstr "Kameraren ezarpenak" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 #, fuzzy msgid "Flash Open" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 #, fuzzy msgid "Flash Charged" msgstr "CompactFlash txartela" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 #, fuzzy msgid "Lens Name" msgstr "Lentearen modua" #: camlibs/ptp2/config.c:6570 #, fuzzy msgid "Shutter Counter" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/config.c:6571 #, fuzzy msgid "Available Shots" msgstr "Erabilgarri dagoen memoria: " #: camlibs/ptp2/config.c:6572 #, fuzzy msgid "Focal Length Minimum" msgstr "Foku-luzera" #: camlibs/ptp2/config.c:6573 #, fuzzy msgid "Focal Length Maximum" msgstr "Foku-luzera" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6576 #, fuzzy msgid "Low Light" msgstr "Argia" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 #, fuzzy msgid "Light Meter" msgstr "Argia" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 #, fuzzy msgid "AF Locked" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 #, fuzzy msgid "AE Locked" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 #, fuzzy msgid "FV Locked" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 #, fuzzy msgid "Camera Date and Time" msgstr "Data eta ordua" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "Soinu-seinalea" #: camlibs/ptp2/config.c:6591 #, fuzzy msgid "Image Comment" msgstr "Irudia doitzea" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 #, fuzzy msgid "Enable Image Comment" msgstr "Irudia doitzea" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 #, fuzzy msgid "LCD Off Time" msgstr "Automatikoki itzaltzeko ordua" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 #, fuzzy msgid "Recording Media" msgstr "Grabatze-modua" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 #, fuzzy msgid "Camera Output" msgstr "Kamera ondo dago.\n" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "" #: camlibs/ptp2/config.c:6602 #, fuzzy msgid "EVF Mode" msgstr "Soinu-seinalea" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "Artista" #: camlibs/ptp2/config.c:6607 #, fuzzy msgid "CCD Number" msgstr "F-zenbakia" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Copyright-a" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 #, fuzzy msgid "Flicker Reduction" msgstr "Begi gorriak gutxitzea" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "" #: camlibs/ptp2/config.c:6613 #, fuzzy msgid "Focus Info" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6614 #, fuzzy msgid "Focus Area" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6615 #, fuzzy msgid "Auto Power Off" msgstr "Automatikoki itzaltzea (minutuak)" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 #, fuzzy msgid "Capture Target" msgstr "Kapturatze-ezarpenak" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 #, fuzzy msgid "Image Format SD" msgstr "Data-formatua" #: camlibs/ptp2/config.c:6634 #, fuzzy msgid "Image Format CF" msgstr "Data-formatua" #: camlibs/ptp2/config.c:6636 #, fuzzy msgid "Image Format Ext HD" msgstr "Data-formatua" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "ISO abiadura" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 #, fuzzy msgid "ISO Auto" msgstr "Automatikoa" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 #, fuzzy msgid "WhiteBalance" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6654 #, fuzzy msgid "WhiteBalance Adjust A" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6655 #, fuzzy msgid "WhiteBalance Adjust B" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6656 #, fuzzy msgid "WhiteBalance X A" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6657 #, fuzzy msgid "WhiteBalance X B" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "Argazki efektua" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 #, fuzzy msgid "Color Model" msgstr "Kolorearen modua" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 #, fuzzy msgid "Color Space" msgstr "Kolore-ezarpenak" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6669 #, fuzzy msgid "Auto Focus Mode 2" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "Argi-laguntza" #: camlibs/ptp2/config.c:6672 #, fuzzy msgid "Rotation Flag" msgstr "Kameraren ezarpenak" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 #, fuzzy msgid "Flash Compensation" msgstr "Esposizio-konpentsazioa" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 #, fuzzy msgid "AEB Exposure Compensation" msgstr "Esposizio-konpentsazioa" #: camlibs/ptp2/config.c:6685 #, fuzzy msgid "Nikon Flash Mode" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 #, fuzzy msgid "Flash Commander Mode" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:6687 #, fuzzy msgid "Flash Commander Power" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 #, fuzzy msgid "Flash Command Channel" msgstr "Esposizio-konpentsazioa" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 #, fuzzy msgid "Flash Command Self Mode" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 #, fuzzy msgid "Flash Command Self Compensation" msgstr "Esposizio-konpentsazioa" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 #, fuzzy msgid "Flash Command A Mode" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 #, fuzzy msgid "Flash Command A Compensation" msgstr "Esposizio-konpentsazioa" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 #, fuzzy msgid "Flash Command B Mode" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 #, fuzzy msgid "Flash Command B Compensation" msgstr "Esposizio-konpentsazioa" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 #, fuzzy msgid "AF Beep Mode" msgstr "Soinu-seinalea" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "F-zenbakia" #: camlibs/ptp2/config.c:6702 #, fuzzy msgid "Movie F-Number" msgstr "F-zenbakia" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 #, fuzzy msgid "Flexible Program" msgstr "Esposizio-programa modua" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "Foku-distantzia" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "Foku-luzera" #: camlibs/ptp2/config.c:6710 #, fuzzy msgid "Focus Mode 2" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6712 msgid "Continuous AF" msgstr "" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "Efektu-modua" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 #, fuzzy msgid "Exposure Program" msgstr "Esposizio-programa modua" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 #, fuzzy msgid "Scene Mode" msgstr "Soinu-seinalea" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 #, fuzzy msgid "HDR Mode" msgstr "LED modua" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "Kaptura modua" #: camlibs/ptp2/config.c:6725 #, fuzzy msgid "Canon Shooting Mode" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/config.c:6726 #, fuzzy msgid "Canon Auto Exposure Mode" msgstr "Esposizio automatikoaren blokeoa" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 #, fuzzy msgid "Drive Mode" msgstr "LED modua" #: camlibs/ptp2/config.c:6728 #, fuzzy msgid "Picture Style" msgstr "Irudiaren ezarpenak" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "Fokua neurtzeko modua" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "Esposizioa neurtzeko modua" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "Fokatze-puntua" #: camlibs/ptp2/config.c:6738 #, fuzzy msgid "Capture Delay" msgstr "Aurre-kapturaren atzerapena" #: camlibs/ptp2/config.c:6742 #, fuzzy msgid "Shutter Speed 2" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "Neurtzeko modua" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 #, fuzzy msgid "AF Distance" msgstr "Foku-distantzia" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 #, fuzzy msgid "Focus Area Wrap" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6751 #, fuzzy msgid "Exposure Delay Mode" msgstr "Esposizio-programa modua" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 #, fuzzy msgid "Exposure Lock" msgstr "Esposizioa" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 #, fuzzy msgid "Flash Sign" msgstr "Flasharen konfigurazioa" #: camlibs/ptp2/config.c:6759 #, fuzzy msgid "Modelling Flash" msgstr "Behartu flasha\n" #: camlibs/ptp2/config.c:6760 #, fuzzy msgid "Viewfinder Grid" msgstr "Aurreikustaile modua" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 #, fuzzy msgid "Image Review" msgstr "Irudiaren tamaina" #: camlibs/ptp2/config.c:6762 #, fuzzy msgid "Image Rotation Flag" msgstr "Kameraren ezarpenak" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 #, fuzzy msgid "Flash Mode Manual Power" msgstr "Flasharen modua" #: camlibs/ptp2/config.c:6765 #, fuzzy msgid "Auto Focus Area" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 #, fuzzy msgid "Flash Exposure Compensation" msgstr "Esposizio-konpentsazioa" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 #, fuzzy msgid "Bracketing" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/config.c:6769 #, fuzzy msgid "Bracket Mode" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:6770 #, fuzzy msgid "EV Step" msgstr "ISO abiadura" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 #, fuzzy msgid "Bracket Set" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "Jarraitasun zenbakia" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "Jarraitasun tartea" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 #, fuzzy msgid "Auto White Balance Bias" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 #, fuzzy msgid "Tungsten White Balance Bias" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 #, fuzzy msgid "Fluorescent White Balance Bias" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 #, fuzzy msgid "Daylight White Balance Bias" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 #, fuzzy msgid "Flash White Balance Bias" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 #, fuzzy msgid "Cloudy White Balance Bias" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 #, fuzzy msgid "Shady White Balance Bias" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6794 #, fuzzy msgid "White Balance Bias Preset Nr" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6795 #, fuzzy msgid "White Balance Bias Preset 0" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6796 #, fuzzy msgid "White Balance Bias Preset 1" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6797 #, fuzzy msgid "White Balance Bias Preset 2" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6798 #, fuzzy msgid "White Balance Bias Preset 3" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6799 #, fuzzy msgid "White Balance Bias Preset 4" msgstr "Zuri-balantzea" #: camlibs/ptp2/config.c:6800 #, fuzzy msgid "Selftimer Delay" msgstr "Tenporizadore automatikoaren ordua" #: camlibs/ptp2/config.c:6801 #, fuzzy msgid "Center Weight Area" msgstr "Erdian zentratuta" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 #, fuzzy msgid "Flash Shutter Speed" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 #, fuzzy msgid "Remote Timeout" msgstr "Data eta ordua" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 #, fuzzy msgid "Remote Mode" msgstr "Grabatze-modua" #: camlibs/ptp2/config.c:6805 #, fuzzy msgid "Application Mode" msgstr "Operazio-modua" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 #, fuzzy msgid "Sharpening" msgstr "Kargatzen" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 #, fuzzy msgid "Tone Compensation" msgstr "Esposizio-konpentsazioa" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 #, fuzzy msgid "Saturation" msgstr "Konfigurazioa" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 #, fuzzy msgid "Hue Adjustment" msgstr "Irudia doitzea" #: camlibs/ptp2/config.c:6811 #, fuzzy msgid "Auto Exposure Bracketing" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/config.c:6812 #, fuzzy msgid "Movie Sound" msgstr "Soinua" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 #, fuzzy msgid "Manual Movie Setting" msgstr "Kapturatze-ezarpenak" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 #, fuzzy msgid "Video Mode" msgstr "Aurreikustaile modua" #: camlibs/ptp2/config.c:6835 #, fuzzy msgid "Meter Off Time" msgstr "Automatikoki itzaltzeko ordua" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 #, fuzzy msgid "Movie Quality" msgstr "Irudiaren kalitatea" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 #, fuzzy msgid "Minimum Shutter Speed" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/config.c:6862 #, fuzzy msgid "Movie Resolution" msgstr "Fitxategiaren bereizmena" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 #, fuzzy msgid "Continuous Shooting Speed Slow" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "" #: camlibs/ptp2/config.c:6869 #, fuzzy msgid "Focus Metering" msgstr "Fokua neurtzeko modua" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 #, fuzzy msgid "High ISO Noise Reduction" msgstr "Esposizio-konpentsazio joera" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 #, fuzzy msgid "Continuous Shooting Speed High" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 #, fuzzy msgid "JPEG Compression Policy" msgstr "Konprimitzea" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6894 #, fuzzy msgid "AF Activation" msgstr "Automatikoa" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 #, fuzzy msgid "AF Lock On" msgstr "Fokuaren modua" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "Esposizio-konpentsazio joera" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 #, fuzzy msgid "Raw Compression" msgstr "Konprimitzea" #: camlibs/ptp2/config.c:6922 #, fuzzy msgid "Image Quality 2" msgstr "Irudiaren kalitatea" #: camlibs/ptp2/config.c:6944 #, fuzzy msgid "Image Settings" msgstr "Kameraren ezarpenak" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "Kapturatze-ezarpenak" #: camlibs/ptp2/config.c:6954 #, fuzzy msgid "WIFI profiles" msgstr "Fitxategi guztien zerrenda" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 #, fuzzy msgid "Other PTP Device Properties" msgstr "PTP Gailuaren propietatea ez da onartzen" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "" #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "" #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "" #: camlibs/ptp2/library.c:2537 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "Zure kamerak ez du onartzen kaptura generikoa" #: camlibs/ptp2/library.c:2545 #, fuzzy msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "Zure kamerak ez du onartzen kaptura generikoa" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 #, fuzzy msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "Zure kamerak ez du onartzen kaptura generikoa" #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "" #: camlibs/ptp2/library.c:2799 #, fuzzy msgid "Sorry, your camera does not support Nikon capture" msgstr "Zure kamerak ez du onartzen kaptura generikoa" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 #, fuzzy msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Zure kamerak ez du onartzen kaptura generikoa" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 #, fuzzy msgid "Canon EOS Half-Press failed" msgstr "Kapturatu" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 #, fuzzy msgid "Canon EOS Get Changes failed" msgstr "Kapturatu" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 #, fuzzy msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "Kapturatu" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 #, fuzzy msgid "Canon EOS Half-Release failed" msgstr "Kapturatu" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 #, fuzzy msgid "Canon EOS Full-Press failed" msgstr "Kapturatu" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 #, fuzzy msgid "Canon EOS Full-Release failed" msgstr "Kapturatu" #: camlibs/ptp2/library.c:3106 #, fuzzy msgid "Canon EOS Capture failed" msgstr "Kapturatu" #: camlibs/ptp2/library.c:3109 #, fuzzy, c-format msgid "Canon EOS Capture failed: %x" msgstr "Kapturatu" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 #, fuzzy msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "Kapturatu" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 #, fuzzy msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "Kapturatu" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" #: camlibs/ptp2/library.c:3332 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "Zure kamerak ez du onartzen kaptura generikoa" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 #, fuzzy msgid "Canon Capture failed" msgstr "Kapturatu" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "Zure kamerak ez du onartzen kaptura generikoa" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, fuzzy, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "Kapturatu" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "irakurtzeko soilik" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "irakurri-idatzi" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, fuzzy, c-format msgid "Manufacturer: %s\n" msgstr "%sFabrikatzailea: %s\n" #: camlibs/ptp2/library.c:4800 #, fuzzy, c-format msgid "Model: %s\n" msgstr "Modeloa: " #: camlibs/ptp2/library.c:4802 #, fuzzy, c-format msgid " Version: %s\n" msgstr "Bertsioa: %s\n" #: camlibs/ptp2/library.c:4805 #, fuzzy, c-format msgid " Serial Number: %s\n" msgstr "%sSerie-zenbakia: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "" #: camlibs/ptp2/library.c:4821 #, fuzzy, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "Firmwarearen bertsioa: %d.%02d\n" #: camlibs/ptp2/library.c:4828 #, fuzzy, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Funtzionalitate-modua" #: camlibs/ptp2/library.c:4833 #, fuzzy, c-format msgid "" "\n" "Capture Formats: " msgstr "Data-formatua" #: camlibs/ptp2/library.c:4847 #, fuzzy, c-format msgid "Display Formats: " msgstr "Data-formatua" #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr "" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "" #: camlibs/ptp2/library.c:4902 #, fuzzy, c-format msgid "File Deletion, " msgstr "Fitxategiaren bereizmena" #: camlibs/ptp2/library.c:4904 #, fuzzy, c-format msgid "No File Deletion, " msgstr "Fitxategiaren bereizmena" #: camlibs/ptp2/library.c:4908 #, fuzzy, c-format msgid "File Upload\n" msgstr "Fitxategia kargatzeak huts egin du." #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4920 #, fuzzy, c-format msgid "Open Capture, " msgstr "Kapturatu" #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4929 #, fuzzy, c-format msgid "Canon Capture" msgstr "Kapturatu" #: camlibs/ptp2/library.c:4933 #, fuzzy, c-format msgid "Canon EOS Capture" msgstr "Kapturatu" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "" #: camlibs/ptp2/library.c:4947 #, fuzzy, c-format msgid "Nikon Capture 1" msgstr "Kapturatu" #: camlibs/ptp2/library.c:4951 #, fuzzy, c-format msgid "%sNikon Capture 2" msgstr "Kapturatu" #: camlibs/ptp2/library.c:4955 #, fuzzy, c-format msgid "%sNikon Capture 3 " msgstr "Kapturatu" #: camlibs/ptp2/library.c:4965 #, fuzzy, c-format msgid "Sony Capture" msgstr "Kapturatu" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "" #: camlibs/ptp2/library.c:4991 #, fuzzy, c-format msgid "\tCanon Wifi support\n" msgstr "Txartela ez da onartzen." #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, fuzzy, c-format msgid "Unknown: 0x%04x\n" msgstr "ezezaguna (0x%02x)" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "" #: camlibs/ptp2/library.c:5043 #, fuzzy msgid "Generic Flat" msgstr "Orokorra" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "" #: camlibs/ptp2/library.c:5055 #, fuzzy msgid "Read-Write" msgstr "irakurri-idatzi" #: camlibs/ptp2/library.c:5056 #, fuzzy msgid "Read-Only" msgstr "Prest" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5075 #, fuzzy, c-format msgid "\tFree Space (Images): %d\n" msgstr "Irudi-kopurua: %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr "" #: camlibs/ptp2/library.c:5116 #, fuzzy, c-format msgid "cannot be queried.\n" msgstr "Ezin da txartela idatzi." #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr "" #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "" #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "" #: camlibs/ptp2/library.c:6414 #, fuzzy msgid "Device does not support setting object protection." msgstr "Kamera honek ez du konfigurazio-aukerak ezartzea onartzen." #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "" #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Kamera hasieratzen" #: camlibs/ptp2/library.c:7254 #, fuzzy, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "PTP USB kameretarako bakarrik dago ezarrita." #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "PTP Definitu gabeko errorea" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP Ondo!" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "PTP Errore orokorra" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP Saioa ez dago irekita" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP Transakzio baliogabearen IDa" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "PTP Eragiketa ez da onartzen" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "PTP Parametroa ez da onartzen" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP Osatu gabeko transferentzia" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP Biltegiratze baliogabearen IDa" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "PTP Objektu baliogabeen heldulekua" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "PTP Gailuaren propietatea ez da onartzen" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP Objektu-formatuaren kode baliogabea" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP Biltegia beteta" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP Objektua idazketaren kontra babestuta" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "PTP Biltegia irakurtzeko soilik" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP Atzipena ukatu egin da" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP Ez dago koadro txikirik" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP Proba automatikoak huts egin du" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP Zatika ezabatzea" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "PTP Biltegia ez dago erabilgarri" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "PTP Formatuaren zehaztapenak ez dira onartzen" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "PTP Ez dago objektuari buruzko baliozko informaziorik" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP Kodearen formatu baliogabea" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "PTP Fabrikatzailearen kode ezezaguna" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP Kapturatzea amaitu da" #: camlibs/ptp2/ptp.c:4038 #, fuzzy msgid "PTP Device Busy" msgstr "PTP Gailuaren busa" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "PTP Objektu guraso baliogabea" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "PTP Gailuaren propietatearen formatu baliogabea" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "PTP Gailuaren propietatearen balio baliogabea" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "PTP Parametro baliogabea" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP Saioa irekita dago" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP Transakzioa bertan behera utzi da" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "PTP Helburuaren zehaztapena ez da onartzen" #: camlibs/ptp2/ptp.c:4047 #, fuzzy msgid "Filename Required" msgstr "PTP EK fitxategi-izena behar da" #: camlibs/ptp2/ptp.c:4048 #, fuzzy msgid "Filename Conflicts" msgstr "PTP EK fitxategi-izenaren gatazkak" #: camlibs/ptp2/ptp.c:4049 #, fuzzy msgid "Filename Invalid" msgstr "PTP EK fitxategi-izen baliogabea" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "" #: camlibs/ptp2/ptp.c:4052 #, fuzzy msgid "Out of Focus" msgstr "Fokuaren modua" #: camlibs/ptp2/ptp.c:4053 #, fuzzy msgid "Change Camera Mode Failed" msgstr "Kamera-modeloa" #: camlibs/ptp2/ptp.c:4054 #, fuzzy msgid "Invalid Status" msgstr "Baliogabea" #: camlibs/ptp2/ptp.c:4055 #, fuzzy msgid "Set Property Not Supported" msgstr "PTP Gailuaren propietatea ez da onartzen" #: camlibs/ptp2/ptp.c:4056 #, fuzzy msgid "Whitebalance Reset Error" msgstr "Zuri-balantzea" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "" #: camlibs/ptp2/ptp.c:4058 #, fuzzy msgid "Shutter Speed Bulb" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "" #: camlibs/ptp2/ptp.c:4066 #, fuzzy msgid "Unknown Command" msgstr "Modelo ezezaguna" #: camlibs/ptp2/ptp.c:4067 #, fuzzy msgid "Operation Refused" msgstr "Eragiketa bertan behera utzi da" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "" #: camlibs/ptp2/ptp.c:4069 #, fuzzy msgid "Battery Low" msgstr "Bateria" #: camlibs/ptp2/ptp.c:4070 #, fuzzy msgid "Camera Not Ready" msgstr "Kamera-modeloa (irakurtzeko soilik)" #: camlibs/ptp2/ptp.c:4072 #, fuzzy msgid "PTP Timeout" msgstr "Data eta ordua" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "" #: camlibs/ptp2/ptp.c:4075 #, fuzzy msgid "PTP Response Expected" msgstr "PTP Protokolo-errorea, erantzuna espero zen" #: camlibs/ptp2/ptp.c:4076 #, fuzzy msgid "PTP Data Expected" msgstr "PTP Protokolo-errorea, datuak espero ziren" #: camlibs/ptp2/ptp.c:4077 #, fuzzy msgid "PTP I/O Error" msgstr "PTP S/I errorea" #: camlibs/ptp2/ptp.c:4101 #, fuzzy msgid "Undefined PTP Property" msgstr "PTP definitu gabeko propietatea" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "Funtzionalitate-modua" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "Konpresio-ezarpena" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Zuri-balantzea" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "RGB irabazia" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "Esposizio-denbora" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "Esposizio-programa modua" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "Esposizio-indizea (pelikularen ISO abiadura)" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "Esposizio-konpentsazio joera" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "Aurre-kapturaren atzerapena" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "Kontrastea" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Zoom digitala" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "Denbora-hutsune zenbakia" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "Denbora-hutsune tartea" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "Kargatu URLa" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "Copyright informazioa" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "Onartutako balioak" #: camlibs/ptp2/ptp.c:4136 msgid "Enabled Streams" msgstr "" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Data-formatua" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Fitxategiaren bereizmena" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "Bideo irteera" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Kontrastea" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "Distira-" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Data-formatua" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "Data-/denbora-markaren formatua" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "Bideo irteera" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "Energia aurreztea" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "UI hizkuntza" #: camlibs/ptp2/ptp.c:4169 #, fuzzy msgid "Battery Type" msgstr "Bateria" #: camlibs/ptp2/ptp.c:4170 #, fuzzy msgid "Battery Mode" msgstr "Bateria" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "" #: camlibs/ptp2/ptp.c:4172 #, fuzzy msgid "Camera Mode" msgstr "Kamera-modeloa" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "" #: camlibs/ptp2/ptp.c:4176 #, fuzzy msgid "Self Time" msgstr "Tenporizadorea" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 #, fuzzy msgid "Shooting Mode" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/ptp.c:4180 #, fuzzy msgid "Image Mode" msgstr "Irudiaren tamaina" #: camlibs/ptp2/ptp.c:4187 #, fuzzy msgid "Slow Shutter Setting" msgstr "Argazki-ateratzearen ezarpenak" #: camlibs/ptp2/ptp.c:4188 #, fuzzy msgid "AF Mode" msgstr "Soinu-seinalea" #: camlibs/ptp2/ptp.c:4189 #, fuzzy msgid "Image Stabilization" msgstr "Kameraren ezarpenak" #: camlibs/ptp2/ptp.c:4191 #, fuzzy msgid "Color Gain" msgstr "Kolore-ezarpenak" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "" #: camlibs/ptp2/ptp.c:4194 #, fuzzy msgid "Parameter Set" msgstr "1. parametroa" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 #, fuzzy msgid "Focal Length Tele" msgstr "Foku-luzera" #: camlibs/ptp2/ptp.c:4205 #, fuzzy msgid "Focal Length Wide" msgstr "Foku-luzera" #: camlibs/ptp2/ptp.c:4206 #, fuzzy msgid "Focal Length Denominator" msgstr "Foku-luzera" #: camlibs/ptp2/ptp.c:4207 #, fuzzy msgid "Capture Transfer Mode" msgstr "Kapturatze-ezarpenak" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "Tamaina-kalitatea modua" #: camlibs/ptp2/ptp.c:4211 #, fuzzy msgid "Supported Thumb Size" msgstr "Onartutako balioak" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "Kameraren jabea" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "UNIX ordua" #: camlibs/ptp2/ptp.c:4219 #, fuzzy msgid "Camera Body ID" msgstr "Kamera-modeloa" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "" #: camlibs/ptp2/ptp.c:4223 #, fuzzy msgid "Digital Zoom Magnification" msgstr "Zoom digitala" #: camlibs/ptp2/ptp.c:4224 #, fuzzy msgid "Ml Spot Position" msgstr "Fokuaren kokalekua" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "" #: camlibs/ptp2/ptp.c:4233 #, fuzzy msgid "Rotation Angle" msgstr "Bereizmena hautatzeko etengailua" #: camlibs/ptp2/ptp.c:4234 #, fuzzy msgid "Rotation Scene" msgstr "Bereizmena hautatzeko etengailua" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "" #: camlibs/ptp2/ptp.c:4239 #, fuzzy msgid "Model ID" msgstr "Modeloa: " #: camlibs/ptp2/ptp.c:4248 #, fuzzy msgid "Shooting Bank" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/ptp.c:4250 #, fuzzy msgid "Shooting Bank Name A" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/ptp.c:4252 #, fuzzy msgid "Shooting Bank Name B" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/ptp.c:4254 #, fuzzy msgid "Shooting Bank Name C" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/ptp.c:4256 #, fuzzy msgid "Shooting Bank Name D" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "" #: camlibs/ptp2/ptp.c:4276 #, fuzzy msgid "White Balance Colour Temperature" msgstr "Kolorearen tenperatura" #: camlibs/ptp2/ptp.c:4278 #, fuzzy msgid "White Balance Preset Number" msgstr "Kolorearen tenperatura" #: camlibs/ptp2/ptp.c:4280 #, fuzzy msgid "White Balance Preset Name 0" msgstr "Zuri-balantzea" #: camlibs/ptp2/ptp.c:4282 #, fuzzy msgid "White Balance Preset Name 1" msgstr "Zuri-balantzea" #: camlibs/ptp2/ptp.c:4284 #, fuzzy msgid "White Balance Preset Name 2" msgstr "Zuri-balantzea" #: camlibs/ptp2/ptp.c:4286 #, fuzzy msgid "White Balance Preset Name 3" msgstr "Zuri-balantzea" #: camlibs/ptp2/ptp.c:4288 #, fuzzy msgid "White Balance Preset Name 4" msgstr "Zuri-balantzea" #: camlibs/ptp2/ptp.c:4290 #, fuzzy msgid "White Balance Preset Value 0" msgstr "Kolorearen tenperatura" #: camlibs/ptp2/ptp.c:4292 #, fuzzy msgid "White Balance Preset Value 1" msgstr "Kolorearen tenperatura" #: camlibs/ptp2/ptp.c:4294 #, fuzzy msgid "White Balance Preset Value 2" msgstr "Kolorearen tenperatura" #: camlibs/ptp2/ptp.c:4296 #, fuzzy msgid "White Balance Preset Value 3" msgstr "Kolorearen tenperatura" #: camlibs/ptp2/ptp.c:4298 #, fuzzy msgid "White Balance Preset Value 4" msgstr "Kolorearen tenperatura" #: camlibs/ptp2/ptp.c:4308 #, fuzzy msgid "Lens Focal Length (Non CPU)" msgstr "Foku-luzera" #: camlibs/ptp2/ptp.c:4310 #, fuzzy msgid "Lens Maximum Aperture (Non CPU)" msgstr "Foku-luzera" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "" #: camlibs/ptp2/ptp.c:4360 #, fuzzy msgid "Focus Area Zone" msgstr "Fokuaren modua" #: camlibs/ptp2/ptp.c:4362 #, fuzzy msgid "Enable Copyright" msgstr "Copyright-a" #: camlibs/ptp2/ptp.c:4366 #, fuzzy msgid "Exposure ISO Step" msgstr "Esposizio-denbora" #: camlibs/ptp2/ptp.c:4368 #, fuzzy msgid "Exposure Step" msgstr "Esposizio-denbora" #: camlibs/ptp2/ptp.c:4370 #, fuzzy msgid "Exposure Compensation (EV)" msgstr "Esposizio-konpentsazioa" #: camlibs/ptp2/ptp.c:4374 #, fuzzy msgid "Centre Weight Area" msgstr "Erdian zentratuta" #: camlibs/ptp2/ptp.c:4376 #, fuzzy msgid "Exposure Base Matrix" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/ptp.c:4378 #, fuzzy msgid "Exposure Base Center" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/ptp.c:4380 #, fuzzy msgid "Exposure Base Spot" msgstr "Esposizio-denbora" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "" #: camlibs/ptp2/ptp.c:4390 #, fuzzy msgid "Auto Meter Off Time" msgstr "Automatikoki itzaltzeko ordua" #: camlibs/ptp2/ptp.c:4392 #, fuzzy msgid "Self Timer Delay" msgstr "Tenporizadore automatikoaren ordua" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "" #: camlibs/ptp2/ptp.c:4398 #, fuzzy msgid "Auto Off Timers" msgstr "Automatikoki itzaltzeko ordua" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "" #: camlibs/ptp2/ptp.c:4402 #, fuzzy msgid "Shooting Speed" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/ptp.c:4406 #, fuzzy msgid "Exposure delay mode" msgstr "Esposizio-programa modua" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 #, fuzzy msgid "Long Exposure Noise Reduction" msgstr "Esposizio-konpentsazio joera" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "" #: camlibs/ptp2/ptp.c:4418 #, fuzzy msgid "High ISO noise reduction" msgstr "Esposizio-konpentsazio joera" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "" #: camlibs/ptp2/ptp.c:4422 #, fuzzy msgid "Artist Name" msgstr "Artista" #: camlibs/ptp2/ptp.c:4424 #, fuzzy msgid "Copyright Information" msgstr "Copyright informazioa" #: camlibs/ptp2/ptp.c:4432 #, fuzzy msgid "Modeling Flash" msgstr "Behartu flasha\n" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "" #: camlibs/ptp2/ptp.c:4440 #, fuzzy msgid "Auto Bracket Selection" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/ptp.c:4441 #, fuzzy msgid "NIKON Auto Bracketing Set" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/ptp.c:4443 #, fuzzy msgid "Center Button Shooting Mode" msgstr "Neurtzeko modua" #: camlibs/ptp2/ptp.c:4445 #, fuzzy msgid "Center Button Playback Mode" msgstr "Uneko modua: erreproduzitze-modua\n" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "" #: camlibs/ptp2/ptp.c:4457 #, fuzzy msgid "Aperture Setting" msgstr "Irekiduraren ezarpenak" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "" #: camlibs/ptp2/ptp.c:4465 #, fuzzy msgid "Center Button Zoom Ratio" msgstr "Neurtzeko modua" #: camlibs/ptp2/ptp.c:4467 #, fuzzy msgid "Function Button 2" msgstr "Funtzionalitate-modua" #: camlibs/ptp2/ptp.c:4471 #, fuzzy msgid "Normal AF On" msgstr "Normala" #: camlibs/ptp2/ptp.c:4473 #, fuzzy msgid "Clean Image Sensor" msgstr "Kameraren ezarpenak" #: camlibs/ptp2/ptp.c:4475 msgid "Image Comment String" msgstr "" #: camlibs/ptp2/ptp.c:4477 #, fuzzy msgid "Image Comment Enable" msgstr "Irudia doitzea" #: camlibs/ptp2/ptp.c:4479 #, fuzzy msgid "Image Rotation" msgstr "Kameraren ezarpenak" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "" #: camlibs/ptp2/ptp.c:4497 #, fuzzy msgid "Bracketing Enable" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/ptp.c:4499 #, fuzzy msgid "Exposure Bracketing Step" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/ptp.c:4501 #, fuzzy msgid "Exposure Bracketing Program" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/ptp.c:4503 #, fuzzy msgid "Auto Exposure Bracket Count" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/ptp.c:4504 #, fuzzy msgid "White Balance Bracket Step" msgstr "Zuri-balantzea" #: camlibs/ptp2/ptp.c:4505 #, fuzzy msgid "White Balance Bracket Program" msgstr "Zuri-balantzea" #: camlibs/ptp2/ptp.c:4507 #, fuzzy msgid "Lens ID" msgstr "Lentearen modua" #: camlibs/ptp2/ptp.c:4509 #, fuzzy msgid "Lens Sort" msgstr "Lentearen modua" #: camlibs/ptp2/ptp.c:4511 #, fuzzy msgid "Lens Type" msgstr "Lentearen modua" #: camlibs/ptp2/ptp.c:4513 #, fuzzy msgid "Min. Focal Length" msgstr "Foku-luzera" #: camlibs/ptp2/ptp.c:4515 #, fuzzy msgid "Max. Focal Length" msgstr "Foku-luzera" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4521 #, fuzzy msgid "Finder ISO Display" msgstr "Aurreikustaile modua" #: camlibs/ptp2/ptp.c:4523 #, fuzzy msgid "Auto Off Photo" msgstr "Automatikoki itzaltzeko ordua" #: camlibs/ptp2/ptp.c:4525 #, fuzzy msgid "Auto Off Menu" msgstr "Automatikoki itzaltzeko ordua" #: camlibs/ptp2/ptp.c:4527 #, fuzzy msgid "Auto Off Info" msgstr "Automatikoki itzaltzeko ordua" #: camlibs/ptp2/ptp.c:4529 #, fuzzy msgid "Self Timer Shot Number" msgstr "Tenporizadore automatikoaren ordua" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "" #: camlibs/ptp2/ptp.c:4537 #, fuzzy msgid "Nikon Exposure Time" msgstr "Esposizio-denbora" #: camlibs/ptp2/ptp.c:4539 #, fuzzy msgid "Warning Status" msgstr "Txartelaren egoera:\t\t" #: camlibs/ptp2/ptp.c:4546 #, fuzzy msgid "AF LCD Top Mode 2" msgstr "LCD modua" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "" #: camlibs/ptp2/ptp.c:4552 #, fuzzy msgid "Exposure Meter" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/ptp.c:4556 #, fuzzy msgid "USB Speed" msgstr "ISO abiadura" #: camlibs/ptp2/ptp.c:4558 #, fuzzy msgid "CCD Serial Number" msgstr "%sSerie-zenbakia: %s\n" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "" #: camlibs/ptp2/ptp.c:4564 #, fuzzy msgid "FNumber Lock" msgstr "F-zenbakia" #: camlibs/ptp2/ptp.c:4566 #, fuzzy msgid "Exposure Aperture Lock" msgstr "Esposizioa neurtzeko modua" #: camlibs/ptp2/ptp.c:4568 #, fuzzy msgid "TV Lock Setting" msgstr "TB A/B ezarpena" #: camlibs/ptp2/ptp.c:4570 #, fuzzy msgid "AV Lock Setting" msgstr "TB A/B ezarpena" #: camlibs/ptp2/ptp.c:4572 #, fuzzy msgid "Illum Setting" msgstr "Kameraren ezarpenak" #: camlibs/ptp2/ptp.c:4574 #, fuzzy msgid "Focus Point Bright" msgstr "Fokatze-puntua" #: camlibs/ptp2/ptp.c:4576 #, fuzzy msgid "External Flash Attached" msgstr "kanpotik" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "" #: camlibs/ptp2/ptp.c:4580 #, fuzzy msgid "External Flash Sort" msgstr "kanpotik" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 #, fuzzy msgid "External Flash Mode" msgstr "Flasharen modua" #: camlibs/ptp2/ptp.c:4584 #, fuzzy msgid "External Flash Compensation" msgstr "Esposizio-konpentsazioa" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "" #: camlibs/ptp2/ptp.c:4602 #, fuzzy msgid "BW Sharpness" msgstr "Zorroztasuna" #: camlibs/ptp2/ptp.c:4604 #, fuzzy msgid "BW Contrast" msgstr "Kontrastea" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "" #: camlibs/ptp2/ptp.c:4614 #, fuzzy msgid "Flourescent Type" msgstr "Fluoreszentea" #: camlibs/ptp2/ptp.c:4616 #, fuzzy msgid "Tune Colour Temperature" msgstr "Kolorearen tenperatura" #: camlibs/ptp2/ptp.c:4618 #, fuzzy msgid "Tune Preset 0" msgstr "Aurrez ezarria" #: camlibs/ptp2/ptp.c:4620 #, fuzzy msgid "Tune Preset 1" msgstr "Aurrez ezarria" #: camlibs/ptp2/ptp.c:4622 #, fuzzy msgid "Tune Preset 2" msgstr "Aurrez ezarria" #: camlibs/ptp2/ptp.c:4624 #, fuzzy msgid "Tune Preset 3" msgstr "Aurrez ezarria" #: camlibs/ptp2/ptp.c:4626 #, fuzzy msgid "Tune Preset 4" msgstr "Aurrez ezarria" #: camlibs/ptp2/ptp.c:4630 #, fuzzy msgid "Autofocus Mode" msgstr "Fokuaren modua" #: camlibs/ptp2/ptp.c:4632 #, fuzzy msgid "AF Assist Lamp" msgstr "Argi-laguntza" #: camlibs/ptp2/ptp.c:4634 #, fuzzy msgid "Auto ISO P/A/DVP Setting" msgstr "TB A/B ezarpena" #: camlibs/ptp2/ptp.c:4650 #, fuzzy msgid "Viewfinder Grid Display" msgstr "Aurreikustaile modua" #: camlibs/ptp2/ptp.c:4654 #, fuzzy msgid "Flash Mode Commander Power" msgstr "Flasharen modua" #: camlibs/ptp2/ptp.c:4656 #, fuzzy msgid "Auto FP" msgstr "Automatikoa" #: camlibs/ptp2/ptp.c:4660 #, fuzzy msgid "Warning Display" msgstr "Bistaratu data" #: camlibs/ptp2/ptp.c:4662 #, fuzzy msgid "Battery Cell Kind" msgstr "Bateria" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "" #: camlibs/ptp2/ptp.c:4670 #, fuzzy msgid "Info Disp Setting" msgstr "Flasharen konfigurazioa" #: camlibs/ptp2/ptp.c:4672 #, fuzzy msgid "Preview Button" msgstr "Aurreikusi koadro txikia" #: camlibs/ptp2/ptp.c:4674 #, fuzzy msgid "Preview Button 2" msgstr "Aurreikusi koadro txikia" #: camlibs/ptp2/ptp.c:4676 #, fuzzy msgid "AEAF Lock Button 2" msgstr "Fokuaren modua" #: camlibs/ptp2/ptp.c:4678 #, fuzzy msgid "Indicator Display" msgstr "Bistaratu data" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "" #: camlibs/ptp2/ptp.c:4684 #, fuzzy msgid "Live View Mode" msgstr "LED modua" #: camlibs/ptp2/ptp.c:4686 #, fuzzy msgid "Live View Drive Mode" msgstr "LED modua" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "" #: camlibs/ptp2/ptp.c:4694 #, fuzzy msgid "Exposure Display Status" msgstr "Esposizio-denbora" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "" #: camlibs/ptp2/ptp.c:4698 #, fuzzy msgid "Info Display Error Status" msgstr "Data-formatua" #: camlibs/ptp2/ptp.c:4700 #, fuzzy msgid "Exposure Indicate Lightup" msgstr "Esposizio-denbora" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "" #: camlibs/ptp2/ptp.c:4708 #, fuzzy msgid "Flash MRepeat Count" msgstr "Esposizio-konpentsazioa" #: camlibs/ptp2/ptp.c:4710 #, fuzzy msgid "Flash MRepeat Interval" msgstr "Denbora-hutsune tartea" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "" #: camlibs/ptp2/ptp.c:4749 #, fuzzy msgid "Image Compression" msgstr "Konprimitzea" #: camlibs/ptp2/ptp.c:4758 #, fuzzy msgid "Secure Time" msgstr "Esposizio-denbora" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "" #: camlibs/ptp2/ptp.c:4760 #, fuzzy msgid "Revocation Info" msgstr "Bereizmena hautatzeko etengailua" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "" #: camlibs/ptp2/ptp.c:4782 #, fuzzy msgid "Quality" msgstr "Irudiaren kalitatea" #: camlibs/ptp2/ptp.c:4783 #, fuzzy msgid "Release Mode" msgstr "Flasharen modua" #: camlibs/ptp2/ptp.c:4784 #, fuzzy msgid "Focus Areas" msgstr "Fokuaren modua" #: camlibs/ptp2/ptp.c:4785 #, fuzzy msgid "AE Lock" msgstr "Fokuaren modua" #: camlibs/ptp2/ptp.c:4797 #, fuzzy msgid "Image size" msgstr "Irudiaren tamaina" #: camlibs/ptp2/ptp.c:4798 #, fuzzy msgid "Shutter speed" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/ptp.c:4799 #, fuzzy msgid "Color temperature" msgstr "Kolorearen tenperatura" #: camlibs/ptp2/ptp.c:4802 #, fuzzy msgid "Expose Index" msgstr "Esposizio-denbora" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 #, fuzzy msgid "Still Image" msgstr "Irudia" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "" #: camlibs/ptp2/ptp.c:4940 #, fuzzy msgid "JPEG Norm" msgstr "JPEG" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Goria" #: camlibs/ptp2/ptp.c:4957 #, fuzzy msgid "Automatic Macro (close-up)" msgstr "Automatikoa\n" #: camlibs/ptp2/ptp.c:4962 #, fuzzy msgid "Center Weighted Average" msgstr "Erdian zentratuta" #: camlibs/ptp2/ptp.c:4964 #, fuzzy msgid "Center-spot" msgstr "Erdian zentratuta" #: camlibs/ptp2/ptp.c:4966 #, fuzzy msgid "Automatic flash" msgstr "Automatikoa\n" #: camlibs/ptp2/ptp.c:4969 #, fuzzy msgid "Automatic Red-eye Reduction" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/ptp.c:4970 #, fuzzy msgid "Red-eye fill flash" msgstr "Begi gorrien kontrako flasha" #: camlibs/ptp2/ptp.c:4988 #, fuzzy msgid "Power Wind" msgstr "Energia aurreztea" #: camlibs/ptp2/ptp.c:4994 #, fuzzy msgid "Timer + Remote" msgstr "Urrunekoa" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "" #: camlibs/ptp2/ptp.c:5056 #, fuzzy msgid "Flash Lock" msgstr "Flasharen modua" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "" #: camlibs/ptp2/ptp.c:5169 #, fuzzy msgid "LCD Backlight" msgstr "LCDren distira" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "" #: camlibs/ptp2/ptp.c:5228 #, fuzzy msgid "1 min" msgstr "41 mm" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "" #: camlibs/ptp2/ptp.c:5266 #, fuzzy msgid "Dark on light" msgstr "Argi naturala" #: camlibs/ptp2/ptp.c:5267 #, fuzzy msgid "Light on dark" msgstr "Argi gutxiegi dago." #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "Oso fina" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "" #: camlibs/ptp2/ptp.c:5345 #, fuzzy msgid "Auto + Red Eye Suppression" msgstr "Automatikoa, begi gorriak gutxitzea" #: camlibs/ptp2/ptp.c:5346 #, fuzzy msgid "On + Red Eye Suppression" msgstr "Konprimitzea" #: camlibs/ptp2/ptp.c:5360 #, fuzzy msgid "Distant View" msgstr "Foku-distantzia" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "" #: camlibs/ptp2/ptp.c:5370 #, fuzzy msgid "Pan Focus" msgstr "Eskuzkoa" #: camlibs/ptp2/ptp.c:5374 #, fuzzy msgid "Single-Frame Shooting" msgstr "Soila" #: camlibs/ptp2/ptp.c:5375 #, fuzzy msgid "Continuous Shooting" msgstr "Obturadorearen abiadura" #: camlibs/ptp2/ptp.c:5376 #, fuzzy msgid "Timer (Single) Shooting" msgstr "Soila" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "" #: camlibs/ptp2/ptp.c:5385 #, fuzzy msgid "Center-weighted Metering" msgstr "Erdian zentratuta" #: camlibs/ptp2/ptp.c:5386 #, fuzzy msgid "Spot Metering" msgstr "Puntua neurtzeko modua" #: camlibs/ptp2/ptp.c:5387 #, fuzzy msgid "Average Metering" msgstr "Esposizioa neurtzea" #: camlibs/ptp2/ptp.c:5388 #, fuzzy msgid "Evaluative Metering" msgstr "Ezarpen aldakorrak" #: camlibs/ptp2/ptp.c:5389 #, fuzzy msgid "Partial Metering" msgstr "1. parametroa" #: camlibs/ptp2/ptp.c:5390 #, fuzzy msgid "Center-weighted Average Metering" msgstr "Erdian zentratuta" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "" #: camlibs/ptp2/ptp.c:5392 #, fuzzy msgid "Multi-Spot Metering" msgstr "Puntua neurtzeko modua" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 #, fuzzy msgid "High 2" msgstr "Handia" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "" #: camlibs/ptp2/ptp.c:5462 #, fuzzy msgid "Development Parameters 1" msgstr "1. parametroa" #: camlibs/ptp2/ptp.c:5463 #, fuzzy msgid "Development Parameters 2" msgstr "2. parametroa" #: camlibs/ptp2/ptp.c:5464 #, fuzzy msgid "Development Parameters 3" msgstr "3. parametroa" #: camlibs/ptp2/ptp.c:5493 #, fuzzy msgid "MlSpotPosCenter" msgstr "Fokuaren kokalekua" #: camlibs/ptp2/ptp.c:5494 #, fuzzy msgid "MlSpotPosAfLink" msgstr "Fokuaren kokalekua" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "" #: camlibs/ptp2/ptp.c:5600 #, fuzzy msgid "Encounter" msgstr "bat ere ez" #: camlibs/ptp2/ptp.c:5601 #, fuzzy msgid "Encounter Box" msgstr "bat ere ez" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "" #: camlibs/ptp2/ptp.c:5605 #, fuzzy msgid "Undefined Audio" msgstr "PTP Definitu gabeko errorea" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5612 #, fuzzy msgid "Undefined Video" msgstr "PTP Definitu gabeko errorea" #: camlibs/ptp2/ptp.c:5617 #, fuzzy msgid "Undefined Collection" msgstr "PTP definitu gabeko propietatea" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5634 #, fuzzy msgid "Undefined Document" msgstr "PTP definitu gabeko propietatea" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "" #: camlibs/ptp2/ptp.c:5641 #, fuzzy msgid "Undefined Message" msgstr "PTP Definitu gabeko errorea" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "" #: camlibs/ptp2/ptp.c:5643 #, fuzzy msgid "Undefined Contact" msgstr "PTP definitu gabeko propietatea" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "" #: camlibs/ptp2/ptp.c:5647 #, fuzzy msgid "Undefined Calendar Item" msgstr "PTP definitu gabeko propietatea" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "" #: camlibs/ptp2/ptp.c:5653 #, fuzzy msgid "Section" msgstr "Automatikoa" #: camlibs/ptp2/ptp.c:5692 #, fuzzy, c-format msgid "Unknown(%04x)" msgstr "ezezaguna (0x%02x)" #: camlibs/ptp2/ptp.c:5702 msgid "Get device info" msgstr "" #: camlibs/ptp2/ptp.c:5703 #, fuzzy msgid "Open session" msgstr "Konprimitzea" #: camlibs/ptp2/ptp.c:5704 #, fuzzy msgid "Close session" msgstr "Konprimitzea" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "" #: camlibs/ptp2/ptp.c:5711 #, fuzzy msgid "Get thumbnail" msgstr "Koadro txikia eskuratzen..." #: camlibs/ptp2/ptp.c:5712 #, fuzzy msgid "Delete object" msgstr "Argi naturala" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "" #: camlibs/ptp2/ptp.c:5718 #, fuzzy msgid "Self test device" msgstr "PTP Proba automatikoak huts egin du" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 msgid "Get Vendor Extension Maps" msgstr "" #: camlibs/ptp2/ptp.c:5735 msgid "Get Vendor Device Info" msgstr "" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 msgid "Get Filesystem Manifest" msgstr "" #: camlibs/ptp2/ptp.c:5738 msgid "Get Stream Info" msgstr "" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "" #: camlibs/ptp2/ptp.c:5759 #, fuzzy msgid "Set license response" msgstr "Erantzun ezezaguna" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "" #: camlibs/ptp2/ptp.c:5763 #, fuzzy msgid "Get meter response" msgstr "Espero ez zen erantzuna jaso da" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "" #: camlibs/ptp2/ptp.c:5782 #, fuzzy msgid "Open Media Session" msgstr "Konprimitzea" #: camlibs/ptp2/ptp.c:5783 #, fuzzy msgid "Close Media Session" msgstr "Konprimitzea" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "" #: camlibs/ptp2/ptp.c:5789 #, fuzzy msgid "Get Registration Response" msgstr "Espero ez zen erantzuna jaso da" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "" #: camlibs/ptp2/ptp.c:5793 #, fuzzy msgid "Get WMDRM-ND License Response" msgstr "Erantzun ezezaguna" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "" #: camlibs/ptp2/ptp.c:5800 #, fuzzy msgid "Send Partial Object" msgstr "PTP Objektu guraso baliogabea" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "Ezezaguna" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "PTP Fabrikatzailearen kode ezezaguna" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "Filma deskargatzen..." #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "Audioa deskargatzen..." #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "EXIF datuak deskargatzen..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "Ez dago EXIF daturik erabilgarri %s(e)rako." #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "Ezin izan da fitxategia ezabatu." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "Ezin izan da direktorioa kendu." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "Ezin izan da direktorioa sortu." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "Bertsioa: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "RTCren egoera: %d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "Kamerako ordua: %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "Kameraren IDa: %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "Ez dago SD txartelik sartuta.\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "SD txartelaren IDa: %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "Kamerako argazkiak: %d\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "SD memoria: %d MB guztira, %d MB libre.\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "Barneko memoria: %d MB guztira, %d MB libre.\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Ingeniaritza alderantzikatua USB Snoopy erabiliz egin da, \n" "firmwarearen eguneratze-irudiari begira eta ausaz asmatzen.\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Ricoh / Philips kontrolatzailea\n" "Lutz Mueller-en ,\n" "eta Martin Fischer-en eskutik,\n" "Bob Paauwe-n kontrolatzailean oinarrituta\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "ezezaguna (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Modeloa: %s\n" "Memoria: %d /%d byte erabilgarri" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2.0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1.5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1.0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0.5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0.0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0.5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1.0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1.5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2.0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Aire zabalekoa" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Maximoa" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Minimoa" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Pertsonaia" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Soinua" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Irudia eta soinua" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Pertsonaia eta soinua" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Konfigurazioa" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Orokorra" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Copyright-a (geh. 20 karaktere)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "Argazkiak" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Zuriaren maila" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Grabatze-modua" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Konprimitzea" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "%i abiadura ez da onartzen!" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "%i espero zen, %i jaso da. Eman erroren honen berri %s(e)ri." #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "%i byte espero ziren, %i jaso d(ir)a. Eman errore honen berri %s(e)ri." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "0x%x espero genuen, baina 0x%x jaso da. Jarri harremanetan %s(e)rekin." #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "Karaktere okerrak (0x%x, 0x%x). Jo %s(r)engana." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "Kamera okupatuta dago. Arazoak jarraitzen badu, jo %s(r)engana." #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "Denbora-muga gainditu egin da 2 saiakeren ondoren ere. Jo %s(r)engana." #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "Komunikazio-errorea 2 saiakeren ondoren ere. Jo %s(r)engana." #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "Kamera modu okerrean dago. Jo %s(r)engana." #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "Kamerak ez ditu parametroak onartu. Jo %s(r)engana." #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "Errore ezezagun bat gertatu da. Jo %s(r)engana." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "" "Fitxategi-izenak ez ditu 12 karaktere baino gehiago izan behar ('%s'(e)k %i " "karaktere ditu)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "The Samsung digimax 800k kontrolatzailea James McKenzie-k idatzi du gphoto-rako. Lutz Mueller-ek " "eraman du gphoto2ra. Marcus Meissner-ek finkatu eta " "hobetu du ataka." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Bereizmena eta tamaina" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Data eta ordua (GTM)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 #, fuzzy msgid "Aperture Settings" msgstr "Irekiduraren ezarpenak" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Kolorearen modua" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Begi gorriak gutxitzea" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Flasharen ezarpenak" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "Ostalariaren energia aurreztea (segundoak)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Kameraren energia aurreztea (segundoak)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Lentearen modua" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "Koreera" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "Ingelesa" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "Frantsesa" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "Alemana" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "Italiera" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "Japoniera" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "Gaztelania" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "Portugesa" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Irudiaren ezarpenak" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "Epson kamerei buruzko ohar batzuk:\n" "- Parametro batzuk ezin dira urrunetik kontrolatu:\n" " * zooma\n" " * fokua\n" " * zuri-balantzearen konfigurazio pertsonalizatua\n" "- Konfigurazioa ingeniaritza alderantzikatuaren bidez egin da\n" " PhotoPC 3000z kamerarekin, zure kamera beste modu batera portatzen\n" " bada, bidali mezu bat gphoto garatzaileen posta zerrendara (ingelesez)\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Ez dago memoria-txartelik." #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "Ezin da bateriaren ahalmena eskuratu" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "" "Kameraren bateria-maila txikiegia da (%d%%). Eragiketa bertan behera utzi da." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Ezin da berreskuratu geratzen den memoria erabilgarria" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "Kamerak 3 aldiz ukatu du konexio bat irekita edukitzea." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "Jasotako lehen bytea (0x%x) ez da baliozkoa." #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "Paketearen transmisioak denbora-muga gainditu du %i saiakeren ondoren ere. " "Jo %s(r)engana." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Ezin izan da paketea transmititu hainbat saiakera eginda ere." #: camlibs/sierra/library.c:789 #, fuzzy, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "Kamerak atzera bota du paketea. Jo %s(r)engana." #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "Ezin izan da paketea transmititu (%i errore-kodea). Jo %s(r)engana." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "" "Transmisioaren denbora-muga gainditu egin da 2 saiakeren ondoren ere. Utzi " "egingo da..." #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "Espero ez zen emaitza lortu da 0x%x. Jo %s(r)engana." #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "Espero ez zen erantzuna jaso da (%i). Jo %s(r)engana." #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "Ezin izan da %i erregistroa lortu. Jo %s(r)engana." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "Saiakera gehiegik egin dute huts." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Datuak bidaltzen..." #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "sierra kontrolatzaileak ez ditu dei errekurtsiboak onartzen! Jo %s(r)engana." #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "Ezin izan da %i kate-erregistroa lortu. Jo %s(r)engana." #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "32 byte espero ziren, %i lortu dira. Jo %s(r)engana." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "Obturadorearen abiadura mikrosegundotan (0 automatikoa)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "Obturadorearen abiadura (segundotan)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "Z/B" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Begi gorrien kontrakoa" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "Sinkronizazio motela" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "Kontrastea+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Kontrastea-" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "Distira+" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "Distira-" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Irudia doitzea" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "Keinua" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "LED modua" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "Infinitua" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "Aurreikusi koadro txikia" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "Hurrengoa" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "Aurrekoa" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Operazio-modua" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "LCDren distira" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "LCD automatikoki itzaltzea (segundoak)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "Erdian zentratuta" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "Matrizea" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Puntua-AF" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Esposizioa neurtzea" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "Zooma (milimetrotan)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "bat ere ez" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "AE blokeoa" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "Arrain-begia" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Zabala" #: camlibs/sierra/nikon-desc.c:558 #, fuzzy msgid "Misc exposure/lens settings" msgstr "Esposizioaren/Lenteen beste ezarpen batzuk" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Esposizio automatikoaren blokeoa" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " Kameraren konfigurazioa (edo hobespenak):\n" "\n" " Zoom optikoak ez du behar bezala\n" " funtzionatzen.\n" "\n" " Konfigurazio-ezarpen guztiak ezin dira\n" " behar bezala irakurri edo idatzi, adibidez\n" " zuri-balantzearen ezarpen fina eta\n" " hizkuntza ezarpenak.\n" "\n" " Jarri kamera 'M' moduan obturadorearen\n" " abiadura ezartzeko.\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995:\n" " Kamera honen konfigurazioa (hobespenak)\n" " ez dago bukatuta, jarri gphoto\n" " garatzaileen posta-zerrendarekin harremanetan\n" " kontrolatzaile hau garatzen lagundu nahi\n" " baduzu.\n" "\n" " Deskargatzeak ondo funtzionatu beharko luke.\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "Arbel zuria" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "Arbel beltza" #: camlibs/sierra/olympus-desc.c:489 #, fuzzy msgid "Color or Function Mode" msgstr "Funtzionalitate-modua" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 #, fuzzy msgid "Slow" msgstr "Sinkronizazio motela" #: camlibs/sierra/olympus-desc.c:540 #, fuzzy msgid "Anti-redeye Fill" msgstr "Begi gorrien kontrakoa" #: camlibs/sierra/olympus-desc.c:596 #, fuzzy msgid "Fluorescent-1-home-6700K" msgstr "Fluoreszentea" #: camlibs/sierra/olympus-desc.c:597 #, fuzzy msgid "Fluorescent-2-desk-5000K" msgstr "Fluoreszentea" #: camlibs/sierra/olympus-desc.c:598 #, fuzzy msgid "Fluorescent-3-office-4200K" msgstr "Fluoreszentea" #: camlibs/sierra/olympus-desc.c:617 #, fuzzy msgid "Flourescent-1-home-6700K" msgstr "Fluoreszentea" #: camlibs/sierra/olympus-desc.c:618 #, fuzzy msgid "Flourescent-2-desk-5000K" msgstr "Fluoreszentea" #: camlibs/sierra/olympus-desc.c:619 #, fuzzy msgid "Flourescent-3-office-4200K" msgstr "Fluoreszentea" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Monitorea" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "LCD modua" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Zoom digitala" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "Fokuaren kokalekua" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Ordu-formatua" #: camlibs/sierra/olympus-desc.c:1147 #, fuzzy msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus kamerei buruzko ohar batzuk:\n" "(1) Kameraren konfigurazioa:\n" " 0 balioak balio lehenetsia definituko du (automatikoa).\n" "(2) Olympus C-3040Z-k (eta ziurrenik C-2040Z-k eta\n" " beste batzuek ere) PC bidezko USB kontrola du. Modu hori\n" " erabili ahal izateko, kamera 'USB PC control mode'\n" " moduan jarri behar da. Moduak aldatzeko menura\n" " joateko, piztu kamera, ireki memoria-txartelera\n" " joateko atea eta sakatu batera eta eduki sakatuta \n" " menuaren botoia eta LCDren botoia kameraren\n" " kontrol-menua agertu arte. Jarri Aktibatuta.\n" "(3) 'LCD modua' 'Monitorea' edo 'Normala' moduan\n" " jartzen baduzu, ez ahaztu berriro 'Desaktibatuta' jartzea\n" " deskonektatu aurretik. Bestea, ezingo dituzu kameraren\n" " botoiak erabili. Egoera honetan amaitzen baduzu,\n" " konektatu kamera berriro PCra\n" " eta jarri LCD 'Desaktibatuta'." #: camlibs/sierra/olympus-desc.c:1166 #, fuzzy msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZk PC bidezko USB kontrola du. Modu hori\n" " erabili ahal izateko, kamera 'USB PC control\n" " mode' moduan jarri behar da. Moduak aldatzeko\n" " menura joateko, piztu kamera, ireki memoria-txartelera\n" " joateko atea eta sakatu batera eta eduki sakatuta \n" " 'OK' eta 'bista azkarra' botoiak kameraren\n" " kontrol-menua agertu arte. Jarri kontrol moduan.\n" "(2) 'LCD modua' 'Monitorea' edo 'Normala'\n" " moduan jartzen baduzu, ez ahaztu berriro 'Desaktibatuta'\n" " jartzea deskonektatu aurretik. Bestela, ezingo dituzu\n" " kameraren botoiak erabili. Egoera honetan amaitzen\n" " baduzu, konektatu kamera berriro PCra\n" " eta jarri LCD 'Desaktibatuta'." #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Sierra kontrolatzaile lehenetsia:\n" "\n" " Hau sierra kontrolatzaile lehenetsia da, zure\n" " kameran irudiak deskargatzea eta arakatzea\n" " onartu beharko luke.\n" "\n" " Kameraren konfigurazio-ezarpenak (edo hobespenak)\n" " Olympus 3040en oinarrituta daude, eta\n" " baliteke bukatu gabe egotea. Konfigurazio-ezarpenak\n" " zure kamerarako bukatuta daudela egiaztatzen baduzu\n" " edo konfigurazioa osatzen laguntzeko kodea\n" " eman badezakezu, jarri harremanetan,\n" " garatzaileen posta-zerrendarekin.\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "Kargatu beharreko fitxategiak luzera nulua du" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "Ez dago nahikoa memoria erabilgarri memoria-txartelean" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Ezin da berreskuratu irudiak dituen karpetaren izena" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "'%s' karpetan kargatzea baino ez da onartzen" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Onena" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (ezezaguna)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "Obturadorearen abiadura (mikrosegundotan, 0 automatikoa)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Zuri-beltza" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "Arbel zuria" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Arbel beltza" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "Distira/Kontrastea" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "Distira+" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "Distira-" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Argi naturala" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "Infinitua/Arrainbegia" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "Puntua neurtzeko modua" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1.6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2.5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "Automatikoki itzaltzea (ostalaria) (segundotan)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "Zenbat denbora pasatzen da kamera itzali arte ordenagailura konektatuta " "dagoenean?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "Automatikoki itzaltzea (eremua) (segundotan)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "Zenbat denbora pasatzen da kamera itzali arte ordenagailura konektatuta ez " "dagoenean?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "LCD automatikoki itzaltzea (segundotan)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Argazki-ateratzearen ezarpenak" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 #, fuzzy msgid "standard" msgstr "Estandarra" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "HyPict" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "kolorea" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "zuri-beltza" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" "Oharra: ez dago memoria-txartelik, baliteke balio batzuk baliozkoak ez " "izatea\n" #: camlibs/sierra/sierra.c:1948 #, fuzzy, c-format msgid "Camera Model: %s\n" msgstr "%sKamera-modeloa: %s\n" #: camlibs/sierra/sierra.c:1957 #, fuzzy, c-format msgid "Serial Number: %s\n" msgstr "%sSerie-zenbakia: %s\n" #: camlibs/sierra/sierra.c:1960 #, fuzzy, c-format msgid "Software Rev.: %s\n" msgstr "%sSoftwarearen berrikuspena: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, fuzzy, c-format msgid "Frames Taken: %i\n" msgstr "%sHartutako fotogramak: %i\n" #: camlibs/sierra/sierra.c:1971 #, fuzzy, c-format msgid "Frames Left: %i\n" msgstr "%sGeratzen diren fotogramak: %i\n" #: camlibs/sierra/sierra.c:1973 #, fuzzy, c-format msgid "Battery Life: %i\n" msgstr "%sBateriaren iraupena: %i\n" #: camlibs/sierra/sierra.c:1975 #, fuzzy, c-format msgid "Memory Left: %i bytes\n" msgstr "%sGeratzen den memoria: %i byte\n" #: camlibs/sierra/sierra.c:1980 #, fuzzy, c-format msgid "Date: %s" msgstr "%sData: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "Kameraren eskulibururik ez dago erabilgarri.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "Epson kamerei buruzko ohar batzuk:\n" "- Parametro batzuk ezin dira urrunetik kontrolatu:\n" " * zooma\n" " * fokua\n" " * zuri-balantzearen konfigurazio pertsonalizatua\n" "- Konfigurazioa ingeniaritza alderantzikatuaren bidez egin da\n" " PhotoPC 3000z kamerarekin, zure kamera beste modu batera portatzen\n" " bada, bidali mezu bat %s helbidera (ingelesez)\n" #: camlibs/sierra/sierra.c:2060 #, fuzzy msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Olympus kamerei (eta beste batzuei) buruzko ohar batzuk:\n" "(1) Kameraren konfigurazioa:\n" " 0 balioak balio lehenetsia definituko du (automatikoa).\n" "(2) Olympus C-3040Z-k (eta ziurrenik C-2040Z-k eta\n" " beste batzuek ere) PC bidezko USB kontrola du. Modu hori\n" " erabili ahal izateko, kamera 'USB PC control mode'\n" " moduan jarri behar da. Moduak aldatzeko menura\n" " joateko, piztu kamera, ireki memoria-txartelera\n" " joateko atea, eta sakatu batera eta eduki sakatuta \n" " menuaren botoia eta LCDren botoiak kameraren\n" " kontrol-menua agertu arte. Jarri Aktibatuta.\n" "(3) 'LCD modua' 'Monitorea' edo 'Normala' moduan\n" " jartzen baduzu, ez ahaztu berriro 'Desaktibatuta' jartzea\n" " deskonektatu aurretik. Bestela, ezingo dituzu kameraren\n" " botoiak erabili. Egoera honetan amaitzen baduzu,\n" " konektatu kamera berriro PCra\n" " eta jarri LCD 'Desaktibatuta'." #: camlibs/sierra/sierra.c:2087 #, fuzzy msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "sierra SPARClite liburutegia\n" "Scott Fritzinger \n" "Sierran oinarritutako kamera digitaletarako euskarria,\n" "adibidez: Olympus, Nikon, Epson, eta beste batzuk.\n" "\n" "Eskerrik asko Data Engines-i (www.dataengines.com)\n" "Olympus C-3030Z erabiltzeagatik USB\n" "euskarria ezartzeko." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (ezezaguna)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Sipix StyleCam Blink kontrolatzailea\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Ezin izan dira USB ezarpenak aplikatu" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "SiPix Web2 kamerara sartzeko kontrolatzailea." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket\n" "Lee Benfield \n" "Smal Ultrapocket kamerara eta OEM bertsioetara (slimshot) sartzeko " "kontrolatzailea" #: camlibs/sonix/library.c:122 #, fuzzy, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Mars MR97310 kamera.\n" "%i argazki ditu. \n" msgstr[1] "" "Mars MR97310 kamera.\n" "%i argazki ditu. \n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" #: camlibs/sonix/library.c:151 #, fuzzy msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "Mars MR97310 kameraren liburutegia\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "Sony DSC-F1 kamera digitaletarako euskarria\n" "M. Adam Kendall \n" "Ken-ichi Hayashi-ren chotplay CLI\n" "interfazean oinarritua\n" "Gphoto2ra Bart van Leeuwen-ek ekarria" #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Sony DSC-F55/505 kameretarako gPhoto liburutegia\n" "Sony MSAC-SR1 eta DCR-PC100ek erabiltzen duen Memory Stick onartzen ditu\n" "Mark Davies-ek idatzia\n" "gPhoto2ra Raymond Penners-ek ekarria" #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "Firmwarearen berrikuspena: %8s\n" "Argazkiak: %i\n" "Memoria osoa: %ikB\n" "Libre dagoen memoria: %ikB\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "Firmwarearen berrikuspena: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Soundvision kontrolatzailea\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "FLASH:\n" " Fitxategiak: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM:\n" " Fitxategiak: %d\n" " Irudiak: %4d\n" " Filmak: %4d\n" "Erabilitako lekua: %8d\n" "Libre dagoen lekua: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "spca50x liburutegia v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" "Zure USB kamerak S&Q txipa du.\n" "Hartutako argazki kopurua %i da\n" "Hauetariko batzuk hainbat fotograma\n" "dituzten bideoak dira.\n" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" "S&Q txipean oinarritutako kamerentzat.\n" "'gtkam'ekin funtzionatu beharko luke. Argazkiak PPM formatuan gordeko dira.\n" "\n" "Ezagutzen diren S&Q kamera guztiek bi bereizmen ezarpen dituzte, \n" "eta kamera bakoitzaren arabera daude.\n" "Beste askok ez ordea.\n" "Datuak kameran kargatzea ez dago onartuta.\n" "Argazki konpresio modua S&Q kamera gehienetan onartuta egon arren, batzuk ez " "dute onartzen.\n" "Kamerak edukiz gero, bideoak azpikarpeten gisa ikusten dira, eta kameraren " "izenaren aurretik iruki txiki bat agertzen da.\n" "Karpetarik ez bada zerrendatzen, egin klik irukitxoan agertzeko. \n" "Egin klik karpetaren gainean bertan sartzeko, eta fotogramak ikusteko edo " "deskargatzeko. \n" "Fotogramak bereiztutako argazkien bezala deskargatuko dira, izen bereziekin " "datozten bideoei errefentzia eginez. Ondorioz, bideoko fotogramak bestelako " "direktorioetan gorde ditzakezu.\n" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "sq905 kontrolatzaile orokorra\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "ASIC STV0674 prozesadorea erabiltzen duten kameretarako kontrolatzailea.\n" "Protokoloaren ingeniaritza alderantzikatua SnoopyPro erabiliz egin da\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "Esposizio okerra (baliteke nahikoa argi ez egotea)" #: camlibs/stv0680/library.c:543 #, fuzzy msgid "Information on STV0680-based camera:\n" msgstr "STV0680en oinarritutako kameretarako informazioa:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Firmwarearen berrikuspena: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "ASICen berrikuspena: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "Sentsorearen IDa: %d.%d\n" #: camlibs/stv0680/library.c:562 #, fuzzy, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "Kamera %dHz-etan keinu egiten duten argietarako konfiguratuta dago.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Kameraren memoria: %d Mbit.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "Kamerak koadro txikiak onartzen ditu.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "Kamerak bideoa onartzen du.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "Kamerako irudiak monokromatikoak dira.\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "Kamerak memoria du.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "Kamerak bideo-formatuak onartzen ditu: " #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "Hornitzailearen IDa: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "Produktuaren IDa: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "Irudi-kopurua: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "Gehienezko irudi-kopurua: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Irudiaren zabalera: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "Irudiaren altuera: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "Irudiaren tamaina: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Koadro txikiaren zabalera: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Koadro txikiaren altuera: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Koadro txikiaren tamaina: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "ASIC STV0680 prozesadorea erabiltzen duten kameretarako kontrolatzailea.\n" "Protokoloari ingeniaritza alderantzikatua aplikatu zaio, CommLite Beta 5 " "erabiliz\n" "Carsten Weinholz \n" "Aiptek PenCam eta STM USB modu dualeko kameretarako zabaldua." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "%i fitxategietako informazioa eskuratzen..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "(Traveler) SX330z liburutegia (eta beste Aldi kamera batzuk).\n" "Beste fabrikatzaile batzuekin ere, adibidez Jenoptik, Skanhex, Maginon, " "funtzionatu beharko luke.\n" "Eman erroreen berri eta bidali iruzkinak.\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z USB da soilik" #: camlibs/topfield/puppy.c:553 #, fuzzy msgid "Driver Settings" msgstr "Bestelako ezarpenak" #: camlibs/topfield/puppy.c:557 #, fuzzy msgid "Turbo mode" msgstr "Fokuaren modua" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" #: camlibs/topfield/puppy.c:659 #, fuzzy, c-format msgid "Downloading %s..." msgstr "'%s' deskargatzen..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 kontrolatzailea.\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Kamera-kontrolatzaileak kargatzen '%s'(e)tik..." #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "Errorea gertatu da sarrera-irteera liburutegian ('%s'): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Ezin izan da kamerarik detektatu" #: libgphoto2/gphoto2-camera.c:750 #, fuzzy, c-format msgid "Could not detect any camera at port %s" msgstr "Ezin izan da kamerarik detektatu" #: libgphoto2/gphoto2-camera.c:774 #, fuzzy msgid "You have to set the port prior to initialization of the camera." msgstr "Ataka ezarri behar da kamera abiarazi aurretik." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Ezin izan da kargatu eskatutako '%s' (%s) kamera-kontrolatzailea." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "'%s' kamera-kontrolatzailean 'camera_init' funtzioa falta da." #: libgphoto2/gphoto2-camera.c:864 #, fuzzy msgid "This camera does not provide any configuration options." msgstr "Kamera honek ez du konfigurazio-aukerarik ematen." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "Kamera honek ez du konfigurazio-aukerak ezartzea onartzen." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Kamera honek ez du laburpenik onartzen." #: libgphoto2/gphoto2-camera.c:960 #, fuzzy msgid "This camera does not provide a manual." msgstr "Kamera honek ez du eskulibururik eskaintzen." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "Kamera honek ez du kontrolatzaileari buruzko informaziorik ematen." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Kamera honek ezin du kapturatu." #: libgphoto2/gphoto2-camera.c:1056 #, fuzzy msgid "This camera can not trigger capture." msgstr "Kamera honek ezin du kapturatu." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Kamera honek ezin ditu aurrebistak kapturatu." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "'%s' bidea ez da absolutua." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "'%s' ezabatzen saiatu zara '%s' karpetatik, baina fitxategi-sistemak ez du " "onartzen fitxategiak ezabatzea." #: libgphoto2/gphoto2-filesys.c:1259 #, fuzzy, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "Kentzen saiatzen ari zaren azpikarpetak daude oraindik '%s' karpetan." #: libgphoto2/gphoto2-filesys.c:1264 #, fuzzy, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "Kentzen saiatzen ari zaren fitxategiak daude oraindik '%s' karpetan." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Fitxategi-sistemak ez du onartzen fitxategiak kargatzea." #: libgphoto2/gphoto2-filesys.c:1359 #, fuzzy, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "'%s' karpetak %i fitxategiak bakarrik ditu, baina %i zenbakia duen " "fitxategia eskatu duzu." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Ezin izan da '%s' fitxategia aurkitu '%s' karpetan." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Ezin izan da '%s' fitxategia aurkitu." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "Fitxategi-sistemak ez du onartzen fitxategiak eskuratzea" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "%i fitxategi-mota ezezaguna." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "" "Fitxategi-sistemak ez du onartzen fitxategiei buruzko informazioa eskuratzea" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "" "Fitxategi-sistemak ez du onartzen fitxategiei buruzko informazioa ezartzea" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "" "Irakurtzeko soilik fitxategien atributuak, adibidez zabalera eta altuera, " "ezin dira aldatu." #: libgphoto2/gphoto2-filesys.c:2455 #, fuzzy msgid "The filesystem doesn't support getting storage information" msgstr "" "Fitxategi-sistemak ez du onartzen fitxategiei buruzko informazioa eskuratzea" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Datuak hondatuta" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Fitxategia badago" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Modelo ezezaguna" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Ez da direktorioa aurkitu" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Ez da fitxategia aurkitu" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "Direktorioa badago" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "S/I eragiketa abian dago" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "Bidea ez da absolutua" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Eragiketa bertan behera utzi da" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "" #: libgphoto2/gphoto2-result.c:57 #, fuzzy msgid "OS error in camera communication" msgstr "Arazoa kameraren komunikazio-abiadura ezartzean" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Kamera-liburutegiaren errore ezezaguna" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Errore ezezaguna" #~ msgid "%s is a file type for which no thumbnail is provided" #~ msgstr "%s fitxategi-motarako ez dago koadro txikirik" #, fuzzy #~ msgid "ISO speed" #~ msgstr "ISO abiadura" #~ msgid "Date and Time (readonly)" #~ msgstr "Data eta ordua (irakurtzeko soilik)" #~ msgid "Unavailable" #~ msgstr "Ez dago erabilgarri" #~ msgid "Set camera date to PC date" #~ msgstr "Ezarri PCko data kameran" #~ msgid "Firmware revision (readonly)" #~ msgstr "Firmwarearen berrikuspena (irakurtzeko soilik)" #~ msgid "Power (readonly)" #~ msgstr "Energia (irakurtzeko soilik)" #, fuzzy #~ msgid "Resolution changed" #~ msgstr "Bereizmena hautatzeko etengailua" #, fuzzy #~ msgid "Unknown (some kind of error)" #~ msgstr "Ezezaguna (errore-motaren bat))" #, fuzzy #~ msgid "" #~ "canon_usb_poll_interrupt_pipe: interrupt read failed after %i tries, " #~ "%6.3f sec \"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_pipe: etenaldi-irakurketak huts egin du %i " #~ "saiakeren ondoren, \"%s\"" #~ msgid "" #~ "canon_usb_poll_interrupt_multiple: interrupt read failed after %i tries, " #~ "\"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_multiple: etenaldi-irakurketak huts egin du %i " #~ "saiakeren ondoren, \"%s\"" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for thumbnail size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: 0x%04x luzera faltsua koadro txikiaren " #~ "tamainako paketerako" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for full image size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: 0x%04x luzera faltsua irudi osoaren tamainako " #~ "paketerako" #, fuzzy #~ msgid "canon_usb_capture_dialogue:secondary image descriptor received" #~ msgstr "" #~ "canon_usb_capture_dialogue: bigarren etenaldi-irakurketa sekuentziatik " #~ "kanpo" #~ msgid "canon_usb_capture_dialogue: first interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: lehen etenaldi-irakurketa sekuentziatik kanpo" #~ msgid "canon_usb_capture_dialogue: second interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: bigarren etenaldi-irakurketa sekuentziatik " #~ "kanpo" #~ msgid "" #~ "canon_usb_capture_dialogue: photographic failure signaled, code = 0x%08x" #~ msgstr "" #~ "canon_usb_capture_dialogue: argazki-hutsegitea adierazi da, kodea = 0x%08x" #~ msgid "canon_usb_capture_dialogue: third EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: hirugarren EOS etenaldi-irakurketa " #~ "sekuentziatik kanpo" #~ msgid "" #~ "canon_usb_capture_dialogue: fourth EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: laugarren EOS etenaldi-irakurketa " #~ "sekuentziatik kanpo" #~ msgid "canon_usb_dialogue: payload too big, won't fit into buffer (%i > %i)" #~ msgstr "" #~ "canon_usb_dialogue: karga handiegia da, ez da bufferrean kabituko (%i > " #~ "%i)" #~ msgid "Unsupported image type" #~ msgstr "Irudi-mota hori ez onartzen" #~ msgid "Your camera does not support changing filenames." #~ msgstr "Zure kamerak ez du onartzen fitxategi-izenak aldatzea." #~ msgid "Self Timer (only next picture)" #~ msgstr "Tenporizadorea (hurrengo irudia soilik)" #~ msgid "2.0m" #~ msgstr "2,0m" #~ msgid "0.5m" #~ msgstr "0,5m" #~ msgid "0.1m" #~ msgstr "0,1m" #~ msgid "Day-lt" #~ msgstr "Argi naturala" #, fuzzy #~ msgid "super fine" #~ msgstr "oso fina" #, fuzzy #~ msgid "auto red eye" #~ msgstr "Begi gorrien kontrakoa" #, fuzzy #~ msgid "on red eye" #~ msgstr "Begi gorrien kontrakoa" #, fuzzy #~ msgid "spot" #~ msgstr "Puntua" #, fuzzy #~ msgid "Center" #~ msgstr "Orokorra" #, fuzzy #~ msgid "Default" #~ msgstr "Argi naturala" #, fuzzy #~ msgid "20 mm" #~ msgstr "29 mm" #, fuzzy #~ msgid "Medium low" #~ msgstr "Tartekoa" #~ msgid "Camera Time" #~ msgstr "Kamera-denbora" #, fuzzy #~ msgid "Set camera time to PC time" #~ msgstr "Ezarri PCko data kameran" #, fuzzy #~ msgid "EOS ISO Speed" #~ msgstr "ISO abiadura" #, fuzzy #~ msgid "EOS WhiteBalance" #~ msgstr "Zuri-balantzea" #, fuzzy #~ msgid "EOS Exposure Compensation" #~ msgstr "Esposizio-konpentsazioa" #, fuzzy #~ msgid "EOS Aperture" #~ msgstr "Irekiera" #, fuzzy #~ msgid "EOS Shutter Speed" #~ msgstr "Obturadorearen abiadura" #, fuzzy #~ msgid "EOS Metering Mode" #~ msgstr "Neurtzeko modua" #, fuzzy #~ msgid "Tungsten Whitebalance Bias" #~ msgstr "Zuri-balantzea" #, fuzzy #~ msgid "Fluorescent Whitebalance Bias" #~ msgstr "Zuri-balantzea" #, fuzzy #~ msgid "Daylight Whitebalance Bias" #~ msgstr "Zuri-balantzea" #, fuzzy #~ msgid "Flash Whitebalance Bias" #~ msgstr "Zuri-balantzea" #, fuzzy #~ msgid "Cloudy Whitebalance Bias" #~ msgstr "Zuri-balantzea" #, fuzzy #~ msgid "Shade Whitebalance Bias" #~ msgstr "Zuri-balantzea" #~ msgid "PTP Error: bad parameter" #~ msgstr "PTP Errorea: parametro okerra" #~ msgid "" #~ "Model: %s\n" #~ " device version: %s\n" #~ " serial number: %s\n" #~ "Vendor extension ID: 0x%08x\n" #~ "Vendor extension description: %s\n" #~ msgstr "" #~ "Modeloa: %s\n" #~ " gailuaren bertsioa: %s\n" #~ " serieko zenbakia: %s\n" #~ "Fabrikatzailearen luzapenaren IDa: 0x%08x\n" #~ "Fabrikatzailearen luzapenaren deskribapena: %s\n" #~ msgid "PTP: Undefined Error" #~ msgstr "PTP: Definitu gabeko errorea" #~ msgid "PTP: OK!" #~ msgstr "PTP: Ados!" #~ msgid "PTP: General Error" #~ msgstr "PTP: Errore orokorra" #~ msgid "PTP: Session Not Open" #~ msgstr "PTP: Saioa ez dago irekita" #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP: Transakzio baliogabearen IDa" #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP: Eragiketa ez da onartzen" #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP: Parametroa ez da onartzen" #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP: Osatu gabeko transferentzia" #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP: Biltegiratze baliogabearen IDa" #~ msgid "PTP: Invalid Object Handle" #~ msgstr "PTP: Objektu baliogabeen heldulekua" #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "PTP: Gailuaren propietatea ez da onartzen" #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP: Objektu-formatuaren kode baliogabea" #~ msgid "PTP: Store Full" #~ msgstr "PTP: Biltegia beteta" #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP: Objektua idazketaren kontra babestuta" #~ msgid "PTP: Store Read Only" #~ msgstr "PTP: Biltegia irakurtzeko soilik" #~ msgid "PTP: Access Denied" #~ msgstr "PTP: Atzipena ukatu egin da" #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP: Ez dago koadro txikirik" #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP: Proba automatikoak huts egin du" #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP: Zatika ezabatzea" #~ msgid "PTP: Store Not Available" #~ msgstr "PTP: Biltegia ez dago erabilgarri" #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "PTP: Formatuaren zehaztapenak ez dira onartzen" #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP: Ez dago objektuari buruzko baliozko informaziorik" #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP: Kodearen formatu baliogabea" #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "PTP: Fabrikatzailearen kode ezezaguna" #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP: Kapturatzea amaitu da" #, fuzzy #~ msgid "PTP: Device Busy" #~ msgstr "PTP: Gailuaren busa" #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP: Objektu guraso baliogabea" #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP: Gailuaren propietatearen formatu baliogabea" #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP: Gailuaren propietatearen balio baliogabea" #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP: Parametro baliogabea" #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP: Saioa irekita dago" #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP: Transakzioa bertan behera utzi da" #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "PTP: Helburuaren zehaztapena ez da onartzen" #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP: EK fitxategi-izena behar da" #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP: EK fitxategi-izenaren gatazkak" #~ msgid "PTP: EK Filename Invalid" #~ msgstr "PTP: EK fitxategi-izen baliogabea" #~ msgid "PTP: I/O error" #~ msgstr "PTP: S/I errorea" #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP: Errorea: parametro okerra" #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP: Protokolo-errorea, datuak espero ziren" #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP: Protokolo-errorea, erantzuna espero zen" #~ msgid "Date Time" #~ msgstr "Data eta ordua" #~ msgid "ShutterSpeed" #~ msgstr "Obturadorearen abiadura" #, fuzzy #~ msgid "Focal Length of Tele" #~ msgstr "Foku-luzera" #, fuzzy #~ msgid "Exposure Bracketing Distance" #~ msgstr "Esposizioa neurtzeko modua" #, fuzzy #~ msgid "Exposure Bracketing Number" #~ msgstr "Esposizioa neurtzeko modua" #~ msgid "Sorry, this function not implemented..." #~ msgstr "Funtzio hau garatu gabe dago..." #~ msgid "Sorry, nothing to configure..." #~ msgstr "Ez dago ezer konfiguratzeko..." #~ msgid "Sorry, taking pictures is not implemented..." #~ msgstr "Argazkiak hartzea ez dago garatuta..." #~ msgid "Couldn't open camera.\n" #~ msgstr "Ezin izan da kamera ireki.\n" #~ msgid "Error opening camera\n" #~ msgstr "Errorea kamera irekitzean\n" #~ msgid "Picture number is too large.\n" #~ msgstr "Argazki-zenbakia luzegia da.\n" #~ msgid "" #~ "Sony DSC-F1 Digital Camera Support\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Based on the chotplay CLI interface from\n" #~ "Ken-ichi Hayashi\n" #~ "\n" #~ "This lib may not work. YMMV\n" #~ msgstr "" #~ "Sony DSC-F1 kamera digitaletarako euskarria\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Ken-ichi Hayashi-ren chotplay CLI\n" #~ "interfazean oinarritua\n" #~ "\n" #~ "Liburutegi honek ez du funtzionatuko. YMMV\n" #~ msgid "Error opening camera.\n" #~ msgstr "Errorea kamera irekitzean.\n" #~ msgid "Could not find any driver for '%s'" #~ msgstr "Ezin izan da kontrolatzailerik bidali '%s'(e)rako" #~ msgid "No additional information available." #~ msgstr "Ez dago beste informaziorik erabilgarri." #, fuzzy #~ msgid "This camera does not support event handling." #~ msgstr "Kamerak ez du %i abiadura onartzen." #~ msgid "Could not find folder '%s'." #~ msgstr "Ezin izan da '%s' karpeta aurkitu." #~ msgid "Folder '%s' does not contain a folder '%s'." #~ msgstr "'%s' karpetak ez du '%s' karpetarik." #~ msgid "" #~ "Could not append '%s' to folder '%s' because this file already exists." #~ msgstr "" #~ "Ezin izan zaio '%s' '%s' karpetari erantsi, fitxategi hori lehendik " #~ "badagoelako." #, fuzzy #~ msgid "Deleting '%s' from folder '%s'..." #~ msgstr "'%s' deskargatzen '%s' karpetatik..." #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "'%s' deskargatzen '%s' karpetatik..." #~ msgid "%sCamera ID: %s\n" #~ msgstr "%sKameraren IDa: %s\n" #~ msgid "" #~ "Mars MR97310 camera.\n" #~ "There are %i photos in it. \n" #~ msgstr "" #~ "Mars MR97310 kamera.\n" #~ "%i argazki ditu.\n" #~ msgid "Number of values" #~ msgstr "Balio-kopurua" #~ msgid "Current value" #~ msgstr "Uneko balioa" #~ msgid "Capture command completed, but no confirmation received" #~ msgstr "Kaptura komandoa osatuta, baina ez da berrespenik jaso" #~ msgid "Received event 0x%04x" #~ msgstr "0x%04x gertaera jaso da" #~ msgid "Manual Not Implemented Yet" #~ msgstr "Eskuliburua oraindik ezartzeko dago" #~ msgid " " #~ msgstr " " #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for KBGear JamCam v2.0 & v3.0 digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Ingeniaritza alderantzikatuko serieko protokoloan oinarrituriko\n" #~ "KBGear JamCam v2.0 & v3.0 kamera digitaletarako euskarria.\n" #~ "\n" #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for Panasonic Coolshot digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Panasonic Coolshot kamera digitaletarako euskarria\n" #~ " ingeniaritza alderantzikatuaren serieko protokoloan oinarritua.\n" #~ "\n" #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for digital cameras with a sunplus spca50x chip based on several " #~ "other gphoto2 camlib modules and the information kindly provided by " #~ "Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \n" #~ "gphoto2ren beste camlib moduluetan oinarritutako sunplus spca50x txipa " #~ "duten kamera digitaletarako euskarria eta Mustek-ek atseginez emandako " #~ "informazioa.\n" #~ "\n" #, fuzzy #~ msgid "" #~ "This driver supports cameras with Sonix chip\n" #~ "and should work with gtkam.\n" #~ "The driver allows you to get\n" #~ " - thumbnails for gtkam\n" #~ " - full images in PPM format\n" #~ "If present on the camera, video clip frames are downloaded \n" #~ "as consecutive still photos.\n" #~ "Capture not supported" #~ msgstr "" #~ "Kontrolatzaile honek Mars MR97310 txipa (edo bateragarriak diren \n" #~ "??Pixart PACx07??) duten kamerak onartzen ditu eta gtkam-ekin funtzionatu " #~ "beharko luke.\n" #~ "Kontrolatzaile honek honakoak lor ditzake:\n" #~ " - koadro txikiak gtkam-erako\n" #~ " - argazki osoak (640x480 edo 320x240PPM formatuan)(??352x288 & " #~ "176x144??)\n" #~ "Kamerak ez du argazkiak ezabatzea uzten, ez datuak\n" #~ "kargatzea ere. Kontrolatzaile honek ez du aukerazko konprsio modurik " #~ "onartzen.\n" #~ "Bideo fotogramak deskarga ditzake, kamerak fotogramak edukiz gero, ondoz " #~ "ondoko argazki gisa.\n" #~ msgid "Could not append folder '%s' as this folder already exists." #~ msgstr "Ezin izan da '%s' karpeta erantsi, lehendik badagoelako." #~ msgid "" #~ "PTP2 driver\n" #~ "(c)2001-2003 by Mariusz Woloszyn .\n" #~ "Enjoy!" #~ msgstr "" #~ "PTP2 kontrolatzailea\n" #~ "(c)2001-2003 Mariusz Woloszyn-en eskutik.\n" #~ "Goza ezazu!" #~ msgid "There is nothing to summarize for this camera." #~ msgstr "Ez dago kamera honi buruz laburtzeko ezer." #~ msgid "No manual" #~ msgstr "Eskulibururik ez" #, fuzzy #~ msgid "Unsupported port type: %d. This driver only works with USBcameras.\n" #~ msgstr "" #~ "Onartzen ez den ataka-mota: %d. Kontrolatzaile honek USB kamerekin baino " #~ "ez du funtzionatzen.\n" #~ msgid "PTP is implemented for USB cameras only." #~ msgstr "PTP USB kameretarako bakarrik dago ezarrita." #, fuzzy #~ msgid "" #~ "Download program for Casio QV cameras. Originally written for gphoto-0.4. " #~ "Adapted for gphoto2 by Lutz Mueller ." #~ msgstr "" #~ "Polaroid DC700 kamerarako deskargatzeko programa. Ryan Lantzer-ek " #~ " idatzia gphoto-4.x-rako. gphoto2rako Lutz Mueller-ek " #~ " egokitua." #~ msgid "Could not follow the link '%s' (%m)." #~ msgstr "Ezin izan da '%s' esteka ireki (%m)." #~ msgid "Could not follow the link '%s' in '%s' (%m)." #~ msgstr "Ezin izan da '%s' esteka ireki '%s'(e)n (%m)." #~ msgid "Directory Browse" #~ msgstr "Arakatu direktorioa" #~ msgid "View hidden directories" #~ msgstr "Ikusi ezkutuko direktorioak" #~ msgid "Flash Memory" #~ msgstr "Flash memoria" #~ msgid "Macro Mode" #~ msgstr "Makro modua" #~ msgid "Real Image Width" #~ msgstr "Benetako irudiaren zabalera" #, fuzzy #~ msgid "Colour Mode" #~ msgstr "Kolorearen modua" #, fuzzy #~ msgid "Incadescent" #~ msgstr "Goria" #~ msgid "" #~ "Could not open '/proc/meminfo' for reading ('%m'). Make sure the proc " #~ "filesystem is mounted." #~ msgstr "" #~ "Ezin izan da '/proc/meminfo' ireki irakurtzeko ('%m'). Ziurtatu proc " #~ "fitxategi-sistema muntatuta dagoela." #~ msgid "An error occured while reading '/proc/meminfo' ('%m')." #~ msgstr "Errorea gertatu da '/proc/meminfo' irakurtzean ('%m')." #~ msgid "sysctl call failed ('%m')." #~ msgstr "sysctl deiak huts egin du ('%m')." #~ msgid "sysconf call failed ('%m')." #~ msgstr "sysconf deiak huts egin du ('%m')." #~ msgid "swapctl call failed ('%m')." #~ msgstr "swapctl deiak huts egin du ('%m')." #~ msgid "" #~ "For the A50, using 115200 may effectively be slower than using 57600\n" #~ "If you experience a lot of serial transmission errors, try to have your " #~ "computer as idle as possible\n" #~ " (i.e. no disk activity)\n" #~ msgstr "" #~ "A50rako, 115200 57600 baino motelagoa izan daiteke\n" #~ "Transmisio-errore asko topatzen badituzu, saiatu ordenagailua ahalik eta " #~ "inaktiboen edukitzen\n" #~ " (hau da, disko-jarduerarik gabe)\n" #~ msgid "" #~ "Step #2 of initialization failed for PowerShot camera! (returned %i, " #~ "expected %i) Camera not operational" #~ msgstr "" #~ "Abiarazteko 2. urratsak huts egin du PowerShot kamerarako! (%i itzuli du, " #~ "%i espero zen) Kamera ez dabil" #~ msgid "" #~ "EOS Step #3 of initialization failed! (returned %i, expected %i) Camera " #~ "not operational" #~ msgstr "" #~ "Abiarazteko EOSen 3. urratsak huts egin du! (%i itzuli du, %i espero zen) " #~ "Kamera ez dabil" #~ msgid "" #~ "Step #2 of initialization failed for EOS camera! (returned %i, expected " #~ "%i) Camera not operational" #~ msgstr "" #~ "Abiarazteko 2. urratsak huts egin du EOS kamerarako! (%i itzuli du, %i " #~ "espero zen) Kamera ez dabil" #~ msgid "" #~ "canon_usb_lock_keys: Unexpected return of %i bytes (expected %i) from " #~ "\"get picture abilities.\"" #~ msgstr "" #~ "canon_usb_lock_keys: ustekabean %i byte itzuli dira (%i espero ziren) " #~ "\"get picture abilities.\"etik" #~ msgid "Unsupported port type: %d.This driver only works with USBcameras.\n" #~ msgstr "" #~ "Ataka-mota hau ez da onartzen: %d. Kontrolatzaile honek USB kamerekin " #~ "bakarrik funtzionatzen du.\n" #~ msgid "Could not open '%s'" #~ msgstr "Ezin izan da '%s' ireki" #~ msgid "Could not load required camera driver '%s'." #~ msgstr "Ezin izan da kargatu eskatutako '%s' kamera-kontrolatzailea." libgphoto2-2.5.9/po/it.gmo0000644000175000001440000033114012623156274012265 00000000000000Þ•L0|`¸€¹€΀#߀#AVi€4›Ðåô ‚F%‚l‚€‚ ˆ‚“‚š‚£‚©‚¯‚ ²‚b¿‚;"ƒ^ƒmƒƒ ’ƒ œƒ§ƒ¬ƒ±ƒ¶ƒ»ƒ¿ƒŃɃσуÖƒ܃âƒëƒïƒôƒøƒýƒ„ „„„„%„-„4„:„?„E„M„T„X„_„g„n„t„|„ƒ„‰„Ž„“„™„¡„¨„­„±„¹„À„Ƅ˄ӄڄà„å„ê„ð„ø„ÿ„……………"…)… 1…<… B…M…R…V… ]…h… n…y…}…€… ˆ…“… —…¢…§…ª…­…¯…´… º…Ä…È…Î…Ó… Ø…ã… ç…ñ…õ…ù…ÿ…† †††† † )†4†8†>†B†E†H†J† P†Z†`†c†f†l† s† }†‡††‘† —†¡†°†¶†¹†¼†† džц ׆á†ä†ç†í†ñ†ô†ö†ü† ‡ ‡‡‡‡ ‡#‡)‡:‡K‡Z‡]‡ f‡q‡‹‡ ©‡ µ‡‡ʇЇÕ‡Ú‡߇õ‡ú‡ý‡ˆˆ+ˆ=ˆ NˆZˆaˆ'hˆˆ ™ˆ.¤ˆ-Óˆ ‰ ‰9‰P‰Y‰j‰|‰‰ ”‰ ‰ ¶‰Éȉ ã‰ñ‰ŠŠ Š*Š:ŠIŠbŠqŠ‰ŠžŠ¯ŠÇŠÖŠ çŠ ñŠüŠ‹!‹1‹(M‹v‹†‹ ¡‹¯‹²‹‹Õ‹Ý‹ï‹ó‹ö‹/þ‹+.Œ1ZŒ'ŒŒ(´ŒÝŒ úŒŽŽ-Ž 5ŽCŽ UŽ aŽ nŽ{Ž*šŽ#ÅŽéŽ ïŽúŽ ÿŽ $,1 P ^l |ˆ• œ § ³¿ Ó ßëð   "/ 4?QVZcjyˆ²OÁ‘ %‘ 1‘>‘P‘ a‘l‘ ‘Œ‘œ‘¶‘kÖ‘8B’#{’8Ÿ’9Ø’A“+T“(€“@©“ê“1”8”U”#j”Ž”«”Ôâ”ö” • •:•'N•v••=¦• ä•)ð•$–>?– ~–Œ–¡–³–Ì–é–Ðø–É— їߗ𗘘"˜;˜Q˜ b˜o˜(ˆ˜±˜Řá˜ñ˜™™"™ <™F™X™a™p™v™™ ˜™¦™¯™¿™Ç™Ι Ô™ ß™ ê™ö™ šš#š5šSšhš~š”š<ªšçš›› )›5› I›"W›z› Ž›™›­›ÛØ›ê› ó› ý› œ œœ<œKœaœ:pœ<«œèœ :&U|˜´Òñ0žAž]ž!wž'™žÁžàž>üž;ŸRŸ&nŸ/•Ÿ<ÅŸ< ? (Y ‚ ž  º *Û 2¡-9¡4g¡;œ¡0Ø¡ ¢¢=¢Y¢5r¢=¨¢5æ¢s££­£&Á£è£kñ£E]¤£¤¾¤UÛ¤1¥ 8¥C¥ G¥T¥ m¥ y¥ …¥“¥ §¥´¥½¥Ì¥Õ¥Û¥ë¥ ò¥¦¦"¦;¦L¦ _¦k¦.z¦ ©¦¶¦ Ѧ ߦ ì¦ù¦ §§4§<§LN§›§«§½§ѧê§ÿ§¨'¨=¨R¨g¨€¨¨–¨¦¨ «¨µ¨ǨÙ¨ê¨<ÿ¨<©Y©p©ˆ©¢©¾©Ý©ã©ì© ô©þ©ªª*ª2ª8ªNªcª(yª¢ª'¶ª5Þª «:«4Z«-« ½«Ê«Ó« é«÷« ¬ ¬(¬>¬\¬w¬’¬¬¬»¬Ó¬ï¬­ ­'­0­3­8­=­@­E­5H­~­‘­¡­ª­±­·­½­ íÍ­ Ý­ê­,ï­®9® I®V® g®s®‚®’®U¢® ø®¯_¯v¯‡¯™¯®¯ ¿¯ʯ ϯÙ¯â¯Nù¯H°b°s°ްŸ°¥° «°¹°̰ ݰ è° ò° ý° ± ±%±8±K±_± p±z± ƒ±ޱ ±©±¾±$бõ±²"²9²P²Y² j²v² ‡² “²¡²´²DzÚ²í²³³.³ F³S³l³³–³¨³º³ À³ ˳׳ æ³ ñ³ ü³ ´´/´>´LN´›´£´¨´ ®´»´Û´ð´µµ+µ2µ 7µBµ JµWµlµsµµ¦µ¶µ˵"Ûµþµ.¶ B¶ M¶W¶]¶l¶q¶ƒ¶—¶ž¶¯¶¶Ѷضè¶ë¶· · ··0·6·;· N·\·b· €·Ž· Ÿ·­·· Ô·á·ñ·¸ ¸ ¸.¸ >¸K¸Z¸ i¸t¸ˆ¸¸¯¸Ǹ ظã¸/ó¸#¹?¹[¹l¹ s¹€¹‡¹ ¹%œ¹)¹ì¹ º1 º?ºSº:gº*¢ºͺÕºïºþº»-»%G»m»ˆ»£»À»Þ»ü»¼¼ ¼ '¼ 1¼ ;¼G¼P¼ h¼v¼Òö¼^ɽ?(¾h¾£}¾g!¿‰¿¿”¿£¿´¿;½¿ ù¿À4 ÀAÀGÀWÀiÀnÀÀ ‰À “À À§À¾ÀÄÀÔÀçÀöÀÁ *Á#6ÁZÁ `ÁmÁˆÁ¤ÁÀÁEÅÁ  /ÂPÂTÂdÂw } ‡Â”¤Â%¶ÂÜÂÞÂä èÂóÂùÂÿÂÃà à $Ã1ÃBCÃ_†ÃæÃSíÃ"AÄ"dćęÄ(¡Ä(ÊÄ óÄÅÅ&Å:ÅRÅ[ÅdÅmÅ ~Å ŠÅ•Å ¨Å´ÅÇÅ ÞÅêÅÆ#Æ 6ÆAÆ"PÆsÆÆ§Æ¹ÆÊÆÒÆpèÆYÇhÇKqÇ½Ç ÅÇtÐÇ,EȈrÈûÈÉ"É+É 3É>É MÉYÉ _ÉmÉ }ɋɧœÉ DÊ NÊXÊ aÊlÊ{Ê!€Ê5¢ÊGØÊ Ë$,ËQËYË`ËgË nË{ËƒËˆË—Ë¦Ë¶Ë ÅË ÑËÞË îËúË ÌÌ-Ì>ÌAÌạ̬̀̓ÌÂÌ#ÝÌÍÍ&Í:ÍKÍbÍvÍFŽÍÕÍìÍ ñÍÿÍÎÎÎ.-Î \ÎfÎ9oΩοÎÖÎ+îÎÏÏ!Ï $ÏEÏIÏPÏSÏlÏ‚ÏM‹Ï ÙÏæÏõÏÐÐ+Ð :ÐFÐLÐ[Ð tÐ ÐÐ ¯ÐÐÐ ØÐãÐöÐøÐüÐÿÐÑ0ÑBÑRÑ dÑrÑŠÑ¢ÑÁÑ×ÑîÑ Ò"Ò*ÒEÒaÒ}Ò’Ò¦Ò¼Ò×Ò'ìÒ,ÓAÓ^ÓwÓ‹Ó £Ó1¯Ó¬áÓ­ŽÔY<Õ–Õ ŸÕ «Õ ·ÕÃÕ ËÕØÕêÕ þÕ ÖÖ.Ö=Ö NÖ\ÖeÖ}Ö ‚ÖŒÖ •Ö £Ö®Ö·Ö ½Ö ÈÖÕÖçÖîÖþÖ××.×>×F×U×f×x××!›× ½×Þ× óר*-ØXØ nØ{؋ؓآئطØÇØÙØïØÙÙ7ÙMÙeÙkÙtÙ}ÙÙ Ù §ÙC²ÙöÙ3üÙ*0Ú[Ú{Ú˜ÚªÚ ±Ú ½ÚÉÚÍÚ áÚïÚÛÛ 1Û>ÛQÛ cÛ„Û‹Û §Û µÛ ¿ÛÌÛ âÛ‹íÛyÜÜŽÜÜ$­ÜÒÜNØÜ'Ýü-Ý *Þ5Þ=ÞMÞaÞ {Þ‡Þ˜Þ ¨Þ´ÞÆÞ ÌÞ ×ÞåÞøÞß (ß 2ß <ß FßPßVß]ß eß oß}ß Œßšß °ß¾ß ÇßÕß$ðßà#%à IàWà^mà Ìà×à Þà êà öàájá…á™á žá ¨á µá¿áÅáÕáçáìáóá;âQBâ ”â:¡âBÜâ;ã?[ã7›ãNÓã7"ä1Zä3ŒäÀä3Æä/úä*å2åHMå–å å«å°å¸åÁåÉåZÞåN9æTˆæLÝæM*çAxç:ºçõçè è $è.èCè(Xè èè“è œè§è«è®è¿èLÛèb(é&‹é,²é%ßé-ê93ê)mêM—ê0åê7ë,Në:{ë7¶ë,îëì3:ì4nì=£ìFáìK(í•tíj î%uî›îS¸îR ï&_ï7†ï:¾ï;ùï'5ð]ð yðƒð™ð­ð ÂðÎð0åðñ ñ )ñ5ñ GñRñ[ñtñDxñ½ñ/ÖñòJ ò9kò¥òµòÑò Úòåòèòúòýò ó óóó &ó 0ó:óJóbówó‰óœó®óÅóÕó òóýó ôô ô =ôKôZôpô ˆô–ô ©ô·ôÊôÝôòô õõ'õ=õMõAbõD¤õéõðõ ö-ö@öRöeö zö‡öžö­ö¼öËö àö êö ÷ö ÷ ÷÷÷ .÷ ;÷ G÷ R÷ _÷m÷ ‡÷e’÷ø÷6þ÷5ø :øHødø€øœø¸øÔøñøù+ùHù eù sù€ù–ù¬ù½ùÎùÓùÙù3éù ú )ú4úCúlGú?´ú-ôú<"ûh_ûnÈû67üJnüH¹ü`ýcýhý~ý ‘ý žý «ý ¸ý Åý Òý ßýrëý^þcþ~þ †þ”þ-™þNÇþQÿKhÿL´ÿP?R?’DÒ@?X<˜QÕN'VvXÍG&an8ÐI SYlˆ› £®¶ï»«º7Í  =/?m­¿ ÈÖèí5Of”™­²¹ËÏÒGë136e(œ*Åðõ þ     3 F Z _ v  § Á Ø ñ  ö   ;& <b Ÿ  ¨ ² Å "Î  ñ û  # <  T  _ j q Nx  Ç h ~ %“ ¹ "Ø û '"@6cš±ÁßIÿId lv}†Œ’•]¦:?Rd v „”™ž£§¬°µ·¼ÂÈÑÕÚÞãèïöþ  %+3:>EMTZbioty‡Ž“—Ÿ¦¬±¹ÀÆËÐÖÞåêîöý   &16: AL R]ad ku y„‰Œ‘– œ¦ª¯´ ¹ÄÈÑÕÙßâ åñöü ÿ "%(* 0:@CFLR [ekou ~Œ’•˜ž £­ ³½ÀÃÉÍÐÒØ Ýçêíóûþ&58 I&W*~ ©µÄ Øâçìñ 3EXk€‡'޶ ¿;Ê6=S:[–ŸºÓå íú("-Pdv‡°Ðç!#)Mc!{² Ç ÒÞ÷!8;t…£´·Êàæ1AI<‹3È7ü34h ‚£½Æ×ìû %-B&p—  ®¿#Þ2; [ i w …“™ £ ¯ ¼É ß ë÷ü*2ET ]k„ˆ ‘œ®ÎèþL ^ t ‰ œ ´ Ê Ù ñ  ! !!"B!ge!<Í!3 ":>"Gy"?Á"8#3:#In#)¸#Fâ#&)$ P$1q$%£$"É$'ì$%.%I%h%"†%8©%(â%$ &L0&}&2&2À&>ó& 2'@'['m'"Œ'¯'̾'‹(“(¦(¾(Ú(ß("ï().)F)#Z)2~)±)!Å)ç)ø) *-*.>* m*w*‰*ž*¾*Æ*Î*è* ø*+ +%+.+5+E+V+e+ y+‡+š+%­+Ó+ò+ ,&,>@,,ž,², Æ,Ó,ð,$ÿ,$-=-F-V-n-‡- ›- ¥- °- »- É-#Ó-÷-.+.6<.8s.)¬.%Ö.ü.3/6P/'‡/2¯/(â/+ 01709i0'£0%Ë0&ñ001#I1 m1NŽ1Ý1&ü14#2<X2B•2BØ2!34=31r3)¤3/Î32þ37142i42œ4PÏ4D 5e5(~5#§5'Ë5Kó5D?6B„6†Ç6!N7p7*…7°7h¹7E"8h8$ˆ8T­89 99 9.9 M9 X9 e9p9 99–9 §9³9¹9Í9Õ9å9::7:M:e:w:.Œ: »:É:å: ô:;;%; ;;\;d;N;Ð;í; <"&<I<!h<!Š<'¬<!Ô< ö<"=:=S=Z=n=w=‡=š=­=¿=EÛ=(!>J>g>>›>#¹>Ý> ã>ñ> ù>? ??9?A?'H?*p?+›?7Ç?&ÿ?3&@PZ@«@<³@7ð@+(ATA jAvAA£A»AÔAéA'B#0B#TB%xB žB¬BÄBàBøB C%C.C1C6C;C>CCC@FC‡C ™C¥C ¬C ·C ÁC ËCÕCäCöCD6 DDD`DtDŠDœD«D¼DËDfÜD CE"PE]sEÑEéEFF.F@FEFXFaFY}F×FöF G-G>GDGJGYGmG †G ‘G žG«GÂGÙGêGHH,H @H MH ZHeHtH„HH)¯H ÙH çH%õHI/I8I MIZI lIyIˆIŸI¶IÍIäIûIJ1JLJ]J{J”J¬JÂJßJåJ ûJ K K-KEK_K rK“K¦KT¿KLL"L (L-5LcLzLŽL¦L¸LÁLÇL×LàLðLM M-MMMaMM+žMÊM4ßMN#N2N8NHNMN_NuN|NŽN¨NÀNÇNÚNÝNûNÿN OO-O 3O=OQOlO)uOŸO°OÇOÝOûOP"P6PRPfPyP‹PŸP²PÅPÛPïPQ"Q8QWQjQ~Q;—QÓQóQR(R /R=RER NR2[R8ŽRÇR ãR1ïR!S5SNIS-˜S ÆS%ÑS÷ST% T(FT<oT¬T%ÊT,ðT+U2IU|U…U™U žU ¨U ²U ¿U ÌU'×UÿU‰V×›VbsWCÖWX0XxÎXGYOYSYcYuY@~Y ¿YÉY8ÐY ZZ Z3ZsLsbs{s Œs™s ´sÁs×sèsñs tt -t:tTtdt mt{t‚t–t ©t¶tÔtòtu.u LuVuiu~u ’u.u=Ìu2 v'=v*ev3vQÄvw -w:wKwTwdwhwxwˆw›w±wÌwâwûwx.x4x =xJxYx jxwx\‰xæx3íx(!y'Jyry‘y¬yµyÐyèyîyzz.0z_zuzz¥z0»zìz"óz{ %{1{)G{ q{‘}{||*|:|(L|u|W{|Ó|Ù| à}ì}ô}~ ~ =~K~k~ †~“~¦~ ­~¸~È~Ý~!ö~'6ETZ ` mw‹Ÿ³Ð äð!€3'€[€3r€¦€»€bÙ€ <G O\k~jø‚‚.‚?‚V‚^‚p‚…‚ Š‚—‚G¯‚F÷‚ >ƒ:KƒH†ƒDσB„5W„R„:à„/…2K…~…7„…1¼…î…"÷…X†s†y†‰†ކ–†Ÿ†¥†f¹†f ‡a‡‡dé‡fNˆKµˆN‰P‰m‰ v‰ ‚‰Œ‰©‰1À‰ò‰Š Š ŠŠ!Š $Š/Š^JŠg©Š*‹1<‹+n‹4š‹FÏ‹&ŒU=Œ2“ŒBÆŒ/ A9E{,Á!î?Ž@PŽ@‘ŽFÒŽQŽkvú/q%¡LÇD‘$Y‘=~‘7¼‘Jô‘)?’i’ †’’§’Á’Ú’î’.“5“ ;“ H“T“ g“ u“‚“¡“H¦“ï“0 ”>”D[”& ”Ç”1Ö” ••"•%•;•>•A• T•`•h• p• ~•‹• ž•¿•וí•––7–J– j– u–––2¤–×–ê–þ–#—?—S—l————¯—!É—ë—þ—˜.˜@˜BU˜O˜˜è˜&÷˜™61™ h™%‰™¯™Ι"æ™ šš-š?š Tš _šmš }š Šš—šœš²š Áš Íš Øš äšñš ›z›—›.›Ì›Ó›,ì›,œ,Fœ,sœ, œ.Íœ.üœ.+.Z.‰¸Ñæýž-žFžLžSž@iž ªž ¸žÞÔžjØž@CŸG„Ÿ>ÌŸq  ˆ} =¡QD¡S–¡eê¡P¢U¢j¢ ƒ¢ ¢ ¢ ª¢ ·¢ ĢѢiè¢R£"W£z£ ƒ£ ‘£<›£NØ£Q'¤Ly¤QƤf¥C¥AÃ¥a¦Hg¦L°¦=ý¦a;§R§oð§q`¨GÒ¨b©>}©I¼©ª ª-!ªOªnª wª „ªªß•ªu«„«7˜«ЫÕ« Þ«ë«Iý«KG¬“¬²¬»¬ˬà¬å¬ü¬­.­H­a­}­’­˜­±­¹­Á­Õ­Ü­ã­J®1M®<®-¼®/ê® ¯$¯ 5¯B¯T¯[¯d¯‚¯ž¯´¯¹¯Я믰°5°Q° V°d°t°@‡°AȰ ± ±±0±.A± p±}±–±«±ɱ æ± ñ±ü±²U ²¤^ù{U Ãk®Üjà¢è;m[˜Åºðôâo|ðÚf)tæ«]èN»x^¯“u-Yí}û¹rf(XZWmôú/)ˆíóøKm­­•’’ó”(-?Ø—ÙžW·>ñÉqꇂ(koÔqÓHûîVÙ£â Õ/¢4ò]¬Ïò…óB†#3R@l\ãr*ÚELBIÞü97œñ´ÝÆ´ŒøÄ–—˜y4rÁ0Âi¸vûY'àFš›œÃ3£Œ>é~®¯i± ½  ûå@>ìþ8™#«È±ù,²Öê +¼LáF?.Þ\iмÄfʯwÅn;©÷~­°V»½'é_I˜Öά0¥1‹yíA ÿ¿Î g_ˆ@Þ‰ÀCë“Ý ï©@+2qN 6öÉÇâ¹ÓÑ& Vhu)<_Ša:]ºbަÒdQ cO´ ¯JõÆø,|BÚ±ÅÍ"£‹ £¹† ïC¹,©%šXß°<¼€H((îS€¿õ7ÙÚžy¥Þšn”5ϸ--üH]zË™O*Íeˆ”€ŸüY Éœ%ôÅ^=i—…^9àlÌg³çÓÜÿQtBÆ& Db¼n¿<û¥Áᜨ|86rjô‹ž¤ÇøêØë–$H¥'‘·nÇÜ-e²8ìzó¨Û‘xþP¡^OÕ¦{oG¡ß#°5älh»¡òн¬àӫ⎠‹¹ZŸœ[uß\úç:5Ì“®ß2ÙPbdòÙÕµƒ²‰t+C¾éüÌïï÷)"ò¶ëdÎcl«0 ×BÂù¸ÿ‚Ñë‡Ò°ž]!7DØ%>G.ý6…lM•¹‚r’sŒ»ˆ–ÐZ‚*¼¦Àƒ/:z¾j!{4“"Ž06DË’ë“B.Ž”·‹0PæqÁŸsmü?1ÊT![2Ég¦ÁMª§ÀO#$U’éäõv&Úª&õKÀêZsW°†‰…ÊÀ‡Aγ=w®h÷`ã‰8ÇÿmXì0¶TÍn<Â{<µ ÐAÏá3;Sß,°!"'k'<`丳Hf|ùAoKÑðÝ&ìÆï™oC2X ¡Ìwú¨¾ÛÄL™~2úVµUGÐÔ &d”LMQNL%a Ê/…´›ÕDQðÃta®åçGxöUFÆTä3§×´ZÝ:åÿÀ @Ù·}Xj|Ø–Ðu›ÌPÈtkí¢Ë9_Ò‰È:„h=J©k]?ÈÄJzYv;>øW¨ö±œÞ³Ñ}Íe—g–L‘«.±¨9íw=Òã¾™z[¾+˜Ô•ŒSý_y϶dÈQjÛ¿ûça3ÌËFóæ.µå \Ïì·Ü»€ ID ¤Û”€ñ¡¬w%Ø„%c¼Ã‹÷! ׄÁ$ MµeØâK¯W·_ǡʲà­×"O~˜ª`kÂ7¬M§J…­+NÉ1ˆèWYI3žä`d1  ƒh5›ÜŠÐ*ÑeÒps¤ÛixS¥UßtYËN`jNTÜÔgsÇRRŠA™îÖÆaÖ‘üÁ Õ‡­Vp–c½pêøTs€RO{K79»² •ÄÎ"b@ÔÛý²GŽŽÓ£aÖìPbõ\8RU8žŒŸý}ÏCwÍ#¢º=)hƒÈ¤Z„×Å Ö§åu!ë#i,›ñ'H󊵄?=ÐÉo´½*©îþ\õŸI)ä‡1àSýRþæÝ}‚±  -ïÕ¸|ÃD[eAðôJ4†ö{q‚$âă’æF2XC1Ÿb ˆ½Eôp6Ý÷ ‘xù¾†•ð^JS—f4þ}~ò—F÷éñEr6Úöy¿Ñ>þ~åšp¢9Î+¶Ëú5¶*Tƒã;³©ºáÔ®Eý`ª$uv vnÞöáÓ;îfElé £m.PÒ/MçÂgã„“Kᬘù³y«vŒè¥èc‡z †7 ͦ¦xšñ×:•?Âp‘ªê‰§›§ú¢š/¯ãö$Å,ç(Iªíʸ[æ5c4¿ÿqGVQèºE¨ Canon Wifi support File Download, Free Space (Bytes): %llu (%lu MB) Free Space (Images): %d Maximum Capability: %llu (%lu MB) Nikon Wifi support Capture Formats: Device Capabilities: Device Property Summary: Drive %s %11s bytes total %11s bytes available Serial Number: %s Version: %s (battery is %d%% full) PTP error %04x on query Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d error %x on query.%.0f mm%.1f stops%0.4fs%d %d/%d%d mm%d/%d%f%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%sNikon Capture 2%sNikon Capture 3 *UNKNOWN*+NEF (RAW)-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 EV1 fps1 min1 minute1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/25s1/2s1/301/30s1/3200s1/320s1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 mins10 minutes10 mm10 seconds100%10s11 fps1152 x 86412 mm1280 x 96013s1515 mins15 minutes15s16 seconds16:91s1x22 EV2 fps2 seconds2.02.0 m2.5s2.5x20 seconds20s21 points25%25s29 mm2s2x3 (Normal)3 EV3 fps3030 minutes30 seconds30s34 mm3:23s3x44 fps4 seconds41 mm4s4x5 fps5 mins5 minutes5 seconds50 Hz50%51 mm51 points51 points (3D)58 mm5s5x6 fps6 mm6 seconds60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 seconds8s8x9 fps9 points9xA-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)ACAC PowerAC adapterAC adapter is connected. AC adapter is not connected. AF DistanceAF Lock OnlyAF ModeAF OnAF-AAF-CAF-SASIC Revision: %d.%d AUTOAVA_DEPAbstract Calendar ItemAbstract ContactAbstract DocumentAbstract MessageAccess modeActionAd-hocAdc65 Benjamin Moos AdobeRGBAlbum nameAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Anti-redeyeAnywhereAox generic driver Theodore Kilgore ApertureAperture SettingAperture SettingsAperture changedArtistArtist NameAssign Preview ButtonAssist LightAutoAuto + Red Eye SuppressionAuto ApertureAuto Focus AreaAuto Focus Mode 2Auto ISOAuto Off TimeAuto Off TimersAuto Power OffAuto Power Off (minutes)Auto Slow SyncAuto White Balance BiasAuto focus: one-shotAuto sensitivityAuto, red-eye reductionAutofocus ModeAutofocus error.AutomaticAutomatic Automatic (No Flash)Automatic FlashAutomatic MacroAutomatic Red-eye ReductionAutomatic exposure adjustment on previewAutomatic flashAutomatic flash on captureAutumn colorsAvAvailable ShotsAvailable memory: AverageAverage FilesizesB/WBWBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for card status %dBarbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery LevelBattery Life: %i Battery LowBattery ModeBattery TypeBattery exhausted, camera off.Battery level: %.1f Volts. Revision: %08x.Battery status: %s, AC Adapter: %s BeachBeach/SnowBeepBeep ModeBeep mode changedBeep offBeep onBestBit rate %ld is not supported.Black & WhiteBlack & whiteBlack and WhiteBlack/WhiteBlossomBlueBottomBrightnessBrightness+Brightness-Brightness/ContrastBuiltin RAMBuiltin ROMBulbBulb Exposure TimeBulb ModeBurstBurst IntervalBurst NumberBusyCCD NumberCCD Serial NumberCHDKCRWCSM MenuCameraCamera ActionsCamera Body IDCamera ConfigurationCamera Date and TimeCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ManufacturerCamera ModeCamera ModelCamera Model: %s Camera Not ReadyCamera OK.Camera OrientationCamera OwnerCamera SettingsCamera Status InformationCamera and Driver ConfigurationCamera appears to not be using CompactFlash storage Unfortunately we do not support that at the moment :-( Camera busy. If the problem persists, please contact %s.Camera could not complete operationCamera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has taken %d pictures, and is using CompactFlash storage. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera unavailable: %sCamera was already activeCamera was woken upCan't capture new images. Unknown errorCan't delete all images.Can't delete image %s.Can't upload this image to the camera. An error has occurred.CandlelightCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCanon CaptureCanon Capture failedCanon EOS CaptureCanon EOS Capture failedCanon EOS Capture failed: %xCanon EOS ZoomCanon PowerShot series driver by Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5 additions by Ole W. Saastad Additional enhancements by Holger Klemm Stephen H. WestinCaptureCapture DelayCapture SettingsCapture type is not supportedCardCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card name: %s Free space on card: %d kB Card not supported.Card removed during access.Center WeightedCenter-weightedCentreChange Camera Mode FailedChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorChildChildrenChoose Color TemperatureClose sessionClose upClosest SubjectCloseupCloudyColorColor GainColor ModeColor ModelColor SettingsColor SpaceColor TemperatureColor temperatureCommand can not be cancelled.Command order error.Communication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompatibility ModeCompressionCompression SettingConfigurationConfiguration for your FUJI cameraConnected to cameraContinuousContinuous ShootingContinuous high speedContinuous low speedContinuous silentContrastContrast+Contrast-Copy objectCopyrightCopyright (max. 20 characters)Copyright InfoCopyright InformationCorrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not change ISO speedCould not change apertureCould not change beep modeCould not change exposure compensationCould not change flash modeCould not change focus modeCould not change image formatCould not change shooting modeCould not change shutter speedCould not change time of file '%s' in '%s' (%s).Could not change zoom levelCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file '%s' in folder '%s' (error code %i: %s).Could not delete file.Could not detect any cameraCould not detect any camera at port %sCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get information about '%s' (%s).Could not get information about '%s' in '%s' (%s).Could not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Create Wifi profileCreation date: %s, Last usage date: %sCreativeCreative PC-CAM 300 Authors: Till Adam and: Miah Gregory Creative PC-CAM600 Author: Peter Kajberg Current Mode: Camera Mode Current Mode: Playback Mode Currently, PTP is only implemented for USB and PTP/IP cameras currently, port type %xCustomDD/MM/YYYYDEPDPOF VersionData has been corrupted.Date & TimeDate FormatDate and TimeDate and time (GMT)Date displayDate: %sDay/Month/YearDaylightDebugDefault gatewayDeleteDelete objectDeleting image %s.Depth of FieldDetected a "%s" aka "%s"Detected a '%s'.Device CertificateDevice IconDevice VersionDigita Johannes Erdfelt Digital ZoomDigital Zoom MagnificationDigital macroDigital zoomDirect PrintDirectory existsDirectory not foundDisconnecting camera.DisplayDisplay Formats: Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i.Downloading %s.Downloading %s...Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...DriverDriver SettingsDuskDusk/DawnDynamic Area (21)Dynamic Area (51)Dynamic Area (9)ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.ESSIDEVF ModeEffectsEmergencyEmptyEnable CopyrightEnable Image CommentEnglishErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationError waiting for ACK during initialization, retryingEverywhereExpected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.Expose IndexExposureExposure CompensationExposure LockExposure MeteringExposure ProgramExposure TimeExposure compensationExposure compensation changedExposure compensation: %d Exposure compensation: %s Exposure level on previewExternal FlashExternal Flash AttachedExternal Flash CompensationExternal Flash ModeExternal Flash StatusExternal syncF-NumberF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d Factory DefaultFaithfulFar %dFar 1Far 2Far 3Far sceneFast FilesystemFast shutterFileFile '%s' could not be found in folder '%s'.File '%s/%s' does not exist.File Deletion, File Upload File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.Filename InvalidFilename RequiredFiletype: FlashPix (Filetype: JPEG (Fill flashFineFireworksFirmwareFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware VersionFirmware version: %d.%02d Firmware: %d.%d FixedFlashFlash ChargedFlash CompensationFlash Level LockFlash ModeFlash OffFlash OpenFlash SettingFlash SettingsFlash autoFlash mode changedFlash mode: auto, Flash mode: force, Flash mode: off Flash offFlash onFlash onlyFlash/apertureFlash/speedFlash/speed/apertureFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFlexible ProgramFlourescentFlourescent TypeFluorescentFluorescent HFluorescent Lamp 1Fluorescent Lamp 2Fluorescent Lamp 3Fluorescent Lamp 4Fluorescent Lamp 5Fluorescent: Cold WhiteFluorescent: DaylightFluorescent: Warm WhiteFocal LengthFocal Length DenominatorFocal Length MaximumFocal Length MinimumFocal Length TeleFocal Length WideFocusFocus AreaFocus AreasFocus DistanceFocus LockFocus ModeFocus Mode 2Focus Point BrightFocus mode changedFocus positionFocusing error.Folder '%s' only contains %i files, but you requested a file with number %i.FoliageFoodForceForce Flash Format card and set album name.Format compact flashFrames Left: %i Frames Taken : %4d Frames Taken: %i FrenchFullFull ImageGeneralGeneric FlatGeneric HierarchicalGermanGet Registration ResponseGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.Gray scaleGrayscaleGreenHardware ErrorHighHigh (1152 x 872)High (good quality)High 2High sensitivityHigh-Speed ShutterHue AdjustmentHyPictI/O in progressIDIP address (empty for DHCP)ISOISO AutoISO SpeedISO speed changedIconsIdleIllegal parameter.Illum SettingImageImage %s is delete protected.Image & SoundImage AdjustmentImage CommentImage Comment EnableImage CompressionImage FormatImage Format CFImage Format Ext HDImage Format SDImage ModeImage QualityImage Quality 2Image ReviewImage RotationImage SettingsImage SizeImage StabilizationImage format changedImage height: %d Image number not valid.Image protected.Image sizeImage size: %d Image type %d is not supported by this camera !Image type %d not supportedImage type is not supportedImage width: %d In useIncandescentIndoorInfinityInformationInformation on STV0680-based camera: Initial camera response '%c' unrecognizedInitializing CameraInternal RAMInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal error looking for camlibs. (path names too long?)Internal memory: %d MB total, %d MB free. InvalidInvalid ISO speed settingInvalid StatusInvalid Value ( %d ) Invalid aperture settingInvalid beep mode settingInvalid exposure compensation settingInvalid flash mode settingInvalid focus mode settingInvalid image format settingInvalid shooting mode settingInvalid shutter speed settingItalianJD11 ConfigurationJPEGJPEG BasicJPEG FineJPEG NormJPEG NormalJapaneseKeep filename on uploadKids and petsKodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD BrightnessLCD IlluminationLCD ModeLG GSM generic driver Guillaume Bedot LandscapeLanguageLargan driver Hubert Figuiere LargeLarge Fine JPEGLarge Normal JPEGLeftLens Cover PresentLens IDLens ModeLens NameLens TypeLens is not connected LightLight too dark.List Wifi profilesList all filesListing files in '%s'...Listing folders in '%s'...Lithium IonLoading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!LockLogitech Clicksmart 310 driver Theodore Kilgore Long shutterLooking for camera ...Looks like a modem, not a cameraLowLow (576 x 436)Low (best quality)Low 2Low LightLow contrastLow sensitivityLow-Speed ShutterLower case letters in %s not allowed.MM-DEPM4AMM/DD/YYYYM_DEPMacroManagedManualManual 2Manual FocusManual focusManufacturer: %s Mars MR97310 camera library Theodore Kilgore Mars MR97310 camera. There is %i photo in it. Mars MR97310 camera. There are %i photos in it. MatrixMatthew G. Martin Based on fujiplay by Thierry Bousch Max. Aperture at Max. Focal LengthMax. Aperture at Min. Focal LengthMax. Focal LengthMaximalMaximum Aperture at Focal Length MaximumMaximum Aperture at Focal Length MinimumMaximum ShotsMaximum number of Images: %d MediumMedium (1152 x 872)Medium (better quality)Medium 1Medium 2Medium 3Medium Fine JPEGMedium HighMedium LowMedium Normal JPEGMedium highMedium sensitivityMemory Left: %i bytes Memory cardMemory card status (%d): %s Memory in camera: %d Mbit. Menus and PlaybackMicrophoneMicrophone offMicrosoft Excel Spreadsheet (.xls)Microsoft Powerpoint (.ppt)Microsoft Word DocumentMin. Focal LengthMiniature effectMinimalMinimum Shutter SpeedMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Missing NumberModel IDModel: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Model: %s Capacity: %i Mb Power: %s Auto Off Time: %i min Mode: %s Images: %i/%i Date display: %s Date and Time: %s Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s ModerateMonitorMonochromeMonth/Day/YearMove objectMovieMovie CaptureMovie ISO SpeedMovie QualityMovie ResolutionMustek MDC-800 gPhoto2 Library Henning Zabel Ported to gphoto2 by Marcus Meissner Supports Serial and USB Protocols.NEF (Raw)NEF+BasicNEF+FineNEF+NormalNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName '%s' (%li characters) too long, maximum 30 characters are allowed.Name PrefixName to set on card when formatting.Near %dNear 1Near 2Near 3Network maskNeutralNextNickel cadmiumNickel hydrideNight LandscapeNight PortraitNight SceneNight VisionNight landscapeNight sceneNight snapshotNikon Capture 1Nikon Exposure TimeNikon Flash ModeNoNo Compact Flash Card detected No EXIF data available for %s.No File Deletion, No File Upload No FlashNo SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card in camera. No card present.No memory card presentNo reason availableNo response from cameraNo space available to capture new images. You must delete some images.No space left on card.NoneNone selectedNormalNormal Not FullNot enough free spaceNot enough memory available on the memory cardNot readyNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOS error in camera communicationOffOfficeOnOn + Red Eye SuppressionOn, red-eye reductionOne ShotOnly root folder is supported - you requested a file listing for folder '%s'.Open sessionOperation ModeOperation RefusedOperation cancelledOptimal qualityOptimize ImageOrientationOtherOther SettingsOther command executing.Out of FocusOut of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner NameOwner name changedPPALPCPTP Access DeniedPTP Capture Already TerminatedPTP Data ExpectedPTP Device BusyPTP General ErrorPTP I/O ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Object Format CodePTP Invalid ParameterPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Property 0x%04xPTP Response ExpectedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Standard Version: %d.%d PTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePTP VersionPacket was rejected by camera. Please contact %s.Panasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic DC1580 gPhoto2 library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk PanoramaParameter 1Parameter 2Parameter 3PartialParty/IndoorPath not absolutePersistent SettingsPet PortraitPhoto EffectPhotos on camera: %d Picture EffectPicture SettingsPicture StylePicturesPictures in camera: %d PlayPlay modePlaybackPlayback RatePort speedPortraitPowerPower DownPower SavingPower down devicePresetPreset Custom 1Preset Custom 2Preset Custom 3Preset Custom 4Preset Custom 5PreviewPreview ButtonPreview Button 2Preview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProduct ID: %02x%02x Profile nameProhibit Flash QualityQuick ResponseRAWRAW + JPEG BasicRAW + JPEG FineRAW + JPEG NormalRAW + Large Fine JPEGRAW + Large Normal JPEGRAW + Medium Fine JPEGRAW + Medium Normal JPEGRAW + Small Fine JPEGRAW + Small Normal JPEGRAW 2RAW+JPEGRGB GainRTC Status: %d Raw CompressionRead-OnlyRead-WriteRead-only file attributes like width and height can not be changed.ReadyReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRedRed Eye SuppressionRed eye flashRed-eye ReductionRed-eye Reduction + Slow SyncRed-eye automaticRed-eye fillRed-eye fill flashRed-eye reductionRed-eye reduction with slow syncRemoteRemovable RAM (memory card)Removable ROMRepeatingReset deviceResetting protocol...ResolutionRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver RightRotation AngleRotation SceneSD Card ID: %s SD memory: %d MB total, %d MB free. SDRAMSDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d SDRamSTV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.SaturationSectionSelective colorSend Partial ObjectSend Registration RequestSend objectSend object infoSending data...SensitivitySensor ID: %d.%d SepiaSequence 9Serial NumberSerial Number: %s Session-persistent SettingsSet clock in cameraSetting 4Setting 5Setting 6Setting 7ShadeShadowSharperSharpnessShooting ModeShooting SpeedShooting modeShooting mode changedShot SettingsShutdownShutter SpeedShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed 2Shutter Speed microseconds (0 auto)Shutter speedShutter speed changedSiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SilhouetteSingleSingle AreaSingle ShotSingle silentSingle-Frame ShootingSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Slide Show IntervalSlowSlow SyncSlow shutterSlow syncSmallSmall Fine JPEGSmall Normal JPEGSnowSofterSoftware Rev.: %s Sonix camera library Theodore Kilgore Sonix camera. There is %i photo in it. Sonix camera. There are %i photos in it. Sony CaptureSorry, the property '%s' / 0x%04x is currently ready-only.Sorry, your Canon camera does not support Canon Capture initiationSorry, your Canon camera does not support Canon EOS CaptureSorry, your Canon camera does not support Canon Viewfinder modeSorry, your Canon camera does not support Canon captureSorry, your Nikon camera does not seem to return a JPEG image in LiveView modeSorry, your Nikon camera does not support LiveView modeSorry, your camera does not support Nikon captureSorry, your camera does not support generic captureSoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSportsSports ActionSpotSpot-AFStandardStartupStartup and ShutdownStep #2 of initialization failed! (returned %i bytes, expected %i). Camera not operationalStep #2 of initialization failed: ("%s" on read of %i). Camera not operationalStep #3 of initialization failed! (returned %i, expected %i). Camera not operationalStep #3 of initialization failed: "%s" on read of %i. Camera not operationalStep #3 of initialization failed: "%s" on write of %i. Camera not operationalStep #4 failed (returned %i, expected %i). Camera not operationalStep #4 failed: "%s" on read of %i. Camera not operationalSummary for Mustek MDC800: SunsetSuper macroSuperFineSupported Thumb SizeSwitching Camera OffSynchronize camera date and time with PCSystem error.TFTTFT + PCTIFF (RGB)TTLTVTV Output FormatTesting different speeds...The battery level of the camera is too low (%d%%). The operation is aborted.The camera could not be contacted. Please make sure it is connected to the computer and turned on.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support getting storage informationThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The property '%s' / 0x%04x was not set (0x%04x: %s)The property '%s' / 0x%04x was not set (0x%04x: %s).The requested port type (%i) is not supported by this driver.There are still files in folder '%s/%s' that you are trying to remove.There are still subfolders in folder '%s/%s' that you are trying to remove.There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.There is space for another %d low compressed %d medium compressed or %d high compressed pictures This camera can not capture previews.This camera can not capture.This camera contains a Jeilin JL2005%c chipset. The number of photos in it is %i. This camera contains a Jeilin JL2005A chipset. The number of photos in it is %i. This camera does not provide a manual.This camera does not provide any configuration options.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This preview doesn't exist.ThumbnailThumbnail height: %d Thumbnail size: %d Thumbnail width: %d Time formatTime: %a, %d %b %Y %T Timeout even after 2 retries. Please contact %s.TimerTimer 10 secTimer 2 secTone CompensationToo brightToo darkToo many retries failed.TopToshiba David Hogue Toshiba pdr-m11 driver. Total flashes fired: %d Total pictures captured: %d, Flashes fired: %d Total pictures taken: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Truncate ObjectTrying to contact camera...TungstenTurbo modeTvType of SlideshowU1U2UI LanguageUNIX TimeUSB 1.1USB 2.0USB SpeedUndefinedUndefined AudioUndefined Calendar ItemUndefined CollectionUndefined ContactUndefined DocumentUndefined MessageUndefined PTP PropertyUndefined VideoUndefined Windows ExecutableUnderwaterUnknownUnknown %dUnknown CommandUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown flash mode %d, Unknown modelUnknown model "%s"Unknown valueUnknown value %04dUnknown value %04xUnknown value 0x%04xUnknown zoom mode %d Unknown(%04x)Unknown: 0x%04x Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. UnusedUpdate device firmwareUpload URLUpload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...User canceled downloadUser defined 1User defined 2User defined 3Vendor ID: %02x%02x Version: Version: %s Video ModeVideo OUTVideo OutVividVolatile SettingsVolume LevelWEP 128-bitWEP 64-bitWIFI channelWIFI profilesWaiting for completion...Waiting...Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error status 0x%08x from cameraWaterWe expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite Balance Preset Name 0White Balance Preset Name 1White Balance Preset Name 2White Balance Preset Name 3White Balance Preset Name 4White Balance Preset Value 0White Balance Preset Value 1White Balance Preset Value 2White Balance Preset Value 3White Balance Preset Value 4White balanceWhiteBalanceWhiteBalance Adjust AWhiteBalance Adjust BWhiteBalance X AWhiteBalance X BWideWriteWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.XMLDocumentYYYY/MM/DDYear/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.You have to set the port prior to initialization of the camera.You must be in record mode to capture images.You need to specify a folder starting with /store_xxxxxxxxx/Your Logitech Clicksmart 310 has %i picture in it. Your Logitech Clicksmart 310 has %i pictures in it. Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i Your USB camera is an iClick 5X. The total number of pictures taken is %i Your USB camera seems to be a LG GSM. Firmware: %s Firmware Version: %s Your camera only supports deleting the last file on the camera. In this case, this is file '%s'.ZoomZoom (in millimeters)Zoom level changedZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autoauto + red eye suppressionbatteryblack & whitebulbcamera inactive for > 9 seconds, re-initing. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_int_capture_image: initial canon_usb_list_all_dirs() failed with status %licanon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: Reached end of packet while examining the first direntcanon_int_list_directory: truncated directory entry encounteredcanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_body_id: Unexpected data length returned (%i bytes, expected %i)canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)canon_usb_lock_keys: Unexpected length returned from "lock keys" function (%i bytes, expected %i)canon_usb_set_file_attributes: canon_usb_dialogue failedcanon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)colorcoolshot library vcould not change owner namecould not set timeeconomyexternallyfill infinegsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)high compression, iClick 5X driver Theodore Kilgore iTTLinfiniteinternallyjamcam library vjl2005a camera library Theodore Kilgore jl2005bcd camera library Theodore Kilgore lock keys failed.losslesslow (320x240)low compression, mRAWmRAW + Large Fine JPEGmRAW + Large Normal JPEGmRAW + Medium Fine JPEGmRAW + Medium Normal JPEGmRAW + Small Fine JPEGmRAW + Small Normal JPEGmedium compression, menuno status reported.nonenormalnot available: %soffonon + red eye suppressionpccam600 init: Unexpected error: gp_port_read returned %d instead of %dpccam600_close: return value was %d instead of %dpccam600_get_file:got index %d but expected index > %dpccam600_init: Expected %d blocks got %dpccam600_init: Expected > %d blocks got %dplaypower OKread onlyreadwritereadyrecordred eye flash off. red eye flash on. red eye suppressionsRAWsRAW + Large Fine JPEGsRAW + Large Normal JPEGsRAW + Medium Fine JPEGsRAW + Medium Normal JPEGsRAW + Small Fine JPEGsRAW + Small Normal JPEGsRGBsRGB (nature)sRGB (portrait)spca50x library vsq905 generic driver Theodore Kilgore sq905C generic driver Theodore Kilgore standardsuperfinesx330z is USB onlytime setunable to guess initial CRC value undefinedunexpected datatype %iunknown (0x%02x)unknown compression %d, unknown resolution %d) vCalendar1vCalendar2vCard2vCard3warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2 2.5.8 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2015-08-05 14:42+0100 Last-Translator: Marco Colombo Language-Team: Italian Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit Plural-Forms: nplurals=2; plural=(n != 1) Gestione Canon Wifi Scaricamento file, Spazio libero (byte): %llu (%lu MB) Spazio libero (immagini): %d Capacità massima: %llu (%lu MB) Gestione Nikon Wifi Formati di cattura: Capacità dispositivo: Sommario proprietà dispositivo: Unità %s %11s byte totali %11s byte disponibili Numero di serie: %s Versione: %s (la batteria è %d%% carica) PTP errore %04x alla richiesta Memoria totale: %8d byte. Memoria libera: %8d byte. Numero di file: %d errore %x alla richiesta.%.0f mm%.1f stop%0.4fs%d %d/%d%d mm%d/%d%f%i (sconosciuto)Sono stati ricevuti %i byte di un formato immagine sconosciuto. Contattare %s per assistenza.%i immagini non sono state eliminate perché sono protette%lld (sconosciuto)%sCattura Nikon 2%sCattura Nikon 3*SCONOSCIUTO*+NEF (RAW)-0.5-1.0-1.5-2.00.00.1m0.50.5m11 EV1 fps1 min1 minuto1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/25s1/2s1/301/30s1/3200s1/320s1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 min10 minuti10 mm10 secondi100%10s11 fps1152 x 86412 mm1280 x 96013s1515 min15 minuti15s16 secondi16:91s1x22 EV2 fps2 secondi2.02.0m2.5s2.5x20 secondi20s21 punti25%25s29 mm2s2x3 (Normale)3 EV3 fps3030 minuti30 secondi30s34 mm3:23s3x44 fps4 secondi41 mm4s4x5 fps5 min5 minuti5 secondi50 Hz50%51 mm51 punti51 punti (3D)58 mm5s5x6 fps6 mm6 secondi60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 secondi8s8x9 fps9 punti9xA-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)ACAlimentazione ACadattatore ACL'adattatore di corrente è connesso. L'adattatore di corrente non è connesso. Distanza AFSolo blocco AFModalità autofocusAF attivoAF-AAF-CAF-SRevisione ASIC: %d.%d AUTOAVA_DEPElemento calendario astrattoContatto astrattoDocumento astrattoMessaggio astrattoModalità di accessoAzioneAd-hocAdc65 Benjamin Moos AdobeRGBNome albumSi è verificato un errore nella libreria di I/O ("%s"): %sSi è verificato un errore sconosciuto. Contattare %s.Riduzione occhi rossiOvunqueDriver generico Aox Theodore Kilgore AperturaImpostazione dell'aperturaImpostazioni di aperturaApertura cambiataArtistaNome artistaImposta pulsante anteprimaLuce di assistenzaAutoAutomatico + riduzione occhi rossiApertura automaticaArea di autofocusAutofocus modo 2Auto ISOTempo di spegnimento automaticoTempi di spegnimento automaticoSpegnimento automaticoSpegnimento automatico (minuti)Sincronizzazione lenta automaticaBilanciamento del bianco automaticoAutofocus: uno scattoSensibilità automaticaAutomatico, riduzione occhi rossiModalità autofocus.Errore di autofocus.AutomaticoAutomatico Automatico (senza flash)Flash automaticoMacro automaticoAutomatico, riduzione occhi rossiAggiustamento automatico dell'esposizione nell'anteprimaFlash automaticoFlash automatico alla catturaColori autunnaliAvScatti disponibiliMemoria disponibile: MediaDimensioni medie dei fileB/NB/NEOT non validoCarattere non valido (0x%x, 0x%x). Contattare %s.Somma di controllo non corretta - ricevuto 0x%02x, atteso 0x%02x.Dati non corretti - ricevuto 0x%02x, atteso 0x%02x o 0x%02x.Dati non corretti - ricevuto 0x%02x, atteso 0x%02x.Cattiva esposizione (probabilmente non abbastanza luce)Valore non valido per lo stato scheda di memoria %dBarbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering dei dati delle immagini di: Jeff Laing Implementato usando documenti trovati in rete. Permesso ottenuto da Vision.Le batterie sono quasi scariche.Le batterie sono cariche.BatteriaLivello batteriaDurata batteria: %i Batteria bassaModalità batteriaTipo batteriaBatteria esaurita, fotocamera spenta.Livello batteria: %.1f Volt. Revisione: %08x.Stato batteria: %s, adattatore AC: %s SpiaggiaSpiaggia/NeveSegnale acusticoModalità del segnale acusticoModalità segnale acustico cambiataSegnale acustico spentoSegnale acustico accesoMiglioreIl bit rate %ld non è gestito.Bianco e neroBianco e neroBianco e neroBianco e neroFioreBluBassoLuminositàLuminosità+Luminosità-Luminosità/ContrastoRAM internaROM internaBulbTempo di esposizione bulbModalità posa bulbRafficaIntervallo rafficaNumero rafficaOccupataNumero di CCDNumero di serie CCDCHDKCRWMenu CSMFotocameraAzioni fotocameraIdentificativo corpo fotocameraConfigurazione fotocameraData e ora fotocameraID Fotocamera: %s Libreria per la fotocamera Kodak DC215 Zoom. Michael Koltan Produttore fotocameraModalità fotocameraModello fotocameraModello fotocamera: %s Fotocamera non prontaFotocamera OK.Orientamento fotocameraProprietario fotocameraImpostazioni fotocameraInformazioni di stato fotocameraConfigurazione fotocamera e driverLa fotocamera sembra non usare memorie CompactFlash Sfortunatamente ciò non è supportato al momento. Fotocamera occupata. Se il problema persiste, contattare %s.La fotocamera non ha potuto completare l'operazioneLa fotocamera non ha accettato i parametri. Contattare %s.Il driver "%s" della fotocamera non contiene la funzione "camera_init".La fotocamera ha scattato %d foto, e usa memoria CompactFlash. La fotocamera è in una modalità errata. Contattare %s.Fotocamera non pronta, get_battery non riuscito: %sFotocamera non pronta, molte richieste "Identify camera" non riuscite: %sRisparmio energetico fotocamera (secondi)La fotocamera ha rifiutato 3 volte di mantenere la connessione aperta.La fotocamera ha rifiutato il comando.La fotocamera si è reimpostata.La fotocamera ha inviato il byte 0x%02x inatteso.La fotocamera gestisce le miniature. La fotocamera gestisce i filmati. La fotocamera gestisce i formati video.Orario fotocamera: %s %s Fotocamera non disponibileFotocamera non disponibile: %sLa fotocamera era già attivaLa fotocamera è stata risvegliataImpossibile catturare nuove immagini. Errore sconosciutoImpossibile eliminare tutte le immagini.Impossibile eliminare l'immagine %s.Impossibile caricare questa immagine sulla fotocamera. È occorso un errore.Luce di candelaImpossibile leggere la quantità di memoria liberaImpossibile recuperare la capacità della batteriaImpossibile ottenere il nome della cartella contenente le fotoCattura CanonCattura Canon non riuscitaCattura Canon EOSCattura Canon EOS non riuscitaCattura Canon EOS non riuscita: %xCanon EOS ZoomDriver per la serie Canon PowerShot di Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, Aggiunte A5 di Ole W. Saastad Altre aggiunte di Holger Klemm Stephen H. WestinCatturaRitardo di catturaImpostazioni di catturaTipo di cattura non gestitoCardStato scheda: La scheda non può essere scritta.La scheda non è formattataLa scheda non è apertaLa scheda è apertaLa scheda è protetta da scrittura.Nome scheda: %s Spazio libero sulla scheda: %d kB Scheda non gestita.Scheda rimossa durante l'accesso.Pesata al centroPesata al centroCentroCambiamento modalità fotocamera non riuscitoCambiamento velocità in corso... attendere...CarattereCarattere e audioCaricamento in corsoErrore nella somma di controlloBambinoBambiniScegli temperatura coloreChiudi sessionePrimo pianoSoggetto più vicinoPrimo pianoNuvolosoColoreGuadagno coloreModalità coloreModello coloreImpostazioni coloreSpazio coloreTemperatura coloreTemperatura coloreIl comando non può essere annullato.Errore nell'ordine dei comandiErrore di comunicazione 1Errore di comunicazione 2Errore di comunicazione 3Errore di comunicazione anche dopo 2 tentativi. Contattare %s.Scheda Compact Flash rilevata Scheda CompactFlashModo compatibilitàCompressioneImpostazioni di compressioneConfigurazioneConfigurazione della fotocamera FUJIConnesso alla fotocameraContinuoScatto continuoContinuo alta velocitàContinuo bassa velocitàContinuo silenziosoContrastoContrasto+Contrasto-Copia oggettoCopyrightCopyright (20 caratteri al massimo)Informazioni di copyrightInformazioni di copyrightDati danneggiatiImpossibile allocare %i byte per scaricare l'immagine.Impossibile allocare %i byte per scaricare la miniatura.Impossibile applicare le impostazioni USBImpossibile cambiare la velocità ISOImpossibile cambiare l'aperturaImpossibile cambiare modalità del segnale acusticoImpossibile cambiare la compensazione dell'esposizioneImpossibile cambiare la modalità flashImpossibile cambiare la modalità di messa a fuocoImpossibile cambiare il formato immagineImpossibile cambiare la modalità di scattoImpossibile cambiare la velocità dell'otturatoreImpossibile cambiare l'orario del file "%s" in "%s" (%s).Impossibile cambiare il livello di zoomImpossibile contattare la fotocamera.Impossibile creare la directory \DCIM.Impossibile creare la directory di destinazione.Impossibile creare la directory %s.Impossibile creare la directory.Impossibile eliminare il file "%s" nella cartella "%s" (codice errore %i; %s).Impossibile eliminare il file.Impossibile rilevare alcuna fotocameraImpossibile rilevare alcuna fotocamera alla porta %sImpossibile stabilire un contatto iniziale con la fotocameraImpossibile estrarre miniatura JPEG dai dati: i dati non sono JFIFImpossibile estrarre miniatura JPEG dai dati: inizio/fine mancanteImpossibile trovare il file "%s".Impossibile trovare i dati di localizzazione in '%s'Impossibile leggere le informazioni sul disco: %sImpossibile leggere il nome del disco: %sImpossibile ottenere la lettera del drive flashImpossibile ottenere le informazioni su "%s" (%s).Impossibile ottenere informazioni su "%s" in "%s" (%s).Impossibile leggere il registro %i. Contattare %s.Impossibile leggere il registro %i. Contattare %s.Impossibile inizializzare il caricamento (la fotocamera ha risposto con 0x%02x).Impossibile caricare il driver della fotocamera "%s" richiesto (%s).Impossibile aprire "%s".Impossibile rimuovere la directory "%s".Impossibile rimuovere la directory.Impossibile reimpostare la fotocamera. Impossibile impostare la velocità a %i (la fotocamera ha risposto con %i).Impossibile trasmettere pacchetto (codice errore %i). Contattare %s.Impossibile trasmettere il pacchetto anche dopo diversi tentativi.Impossibile fare il caricamento, nessun nome di cartella disponibile! La cartella 999CANON esiste e contiene un'immagine AUT_9999.JPG.Impossibile leggere dal file "%s"Crea un profilo WifiData creazione: %s, Data di ultimo uso: %sCreativoCreative PC-CAM 300 Autori: Till Adam e: Miah Gregory Creative PC-CAM600 Autore: Peter Kajberg Modalità corrente: fotocamera Modalità corrente: visualizzazione Per il momento, PTP è implementato solo per fotocamere USB e PTP/IP, porta tipo %x.PersonalizzatoGG/MM/AAAADEPVersione DPOFI dati sono stati danneggiati.Data e oraFormato dataData e oraData e ora (GMT)Mostra dataData: %sGiorno/Mese/AnnoLuce diurnaDebugGateway predefinitoEliminaElimina oggettoEliminazione dell'immagine %s.Profondità di campoRilevata una "%s" ovvero "%s"Individuata una "%s".Certificato dispositivoIcona dispositivoVersione dispositivoDigita Johannes Erdfelt Zoom digitaleIngrandimento zoom digitaleMacro digitaleZoom digitaleStampa direttaLa directory esisteDirectory non trovataDisconnessione della fotocamera.DisplayFormati di visualizzazione: Impossibile gestire il valore %i in camera->port->type aka 0x%x in %s riga %i.Scaricamento di %s in corso.Scaricamento di "%s"...Scaricamento di "%s" in corso...Scaricamento dati EXIF in corso...Scaricamento audio in corso...Scaricamento dei dati in corso...Scaricamento del file in corso...Scaricamento dell'immagine %s in corso.Scaricamento immagine in corso...Scaricamento filmato in corso...Scaricamento miniature in corso...Scaricamento in corso...DriverImpostazioni driverTramontoAlba/CrepuscoloArea dinamica (21)Area dinamica (51)Area dinamica (9)ERRORE: %d è troppo grandeERRORE: rilevata condizione di errore fatale, impossibile continuare ERRORE: errore di formato del messaggio.ERROR: message troppo lungo.ERRORE: fuori sequenza.ERRORE: messaggio inatteso.ERRORE: messaggio inatteso 2.ERRORE: tipo di pacchetto inatteso.ESSIDModalità EVFEffettiEmergenzaVuotoAbilita copyrightAbilita commento all'immagineIngleseErroreErrore durante la cattura dell'immagineErrore durante il cambiamento di velocitàErrore durante il cambiamento di velocità.Errore durante l'eliminazione della miniatura associataErrore durante l'eliminazione del fileErrore nell'attesa di ACK durate l'inizializzazioneErrore nell'attesa di ACK durate l'inizializzazione, un altro tentativo in corsoOvunquePrevisti %i byte, ricevuti %i. Segnalare questo errore a %s.Previsto %i, ricevuto %i. Segnalare questo errore a %s.Attesi 32 byte, ricevuti %i. Contattare %s.Indice di esposizioneEsposizioneCompensazione esposizioneBlocca esposizioneMisurazione esposizioneProgramma di esposizioneTempo di esposizioneCompensazione dell'esposizioneCompensazione dell'esposizione cambiataCompensazione dell'esposizione: %d Compensazione dell'esposizione: %s Livello di esposizione nell'anteprimaFlash esternoFlash esterno collegatoCompensazione flash esternoModalità flash esternoStato flash esternoSincronizzazione esternaNumero fF2F2.3F2.8F4F5.6F8ERRORE FATALE: valore CRC iniziale per lunghezza %d sconosciuto FLASH: File: %d PredefinitoFedeleLontano %dLontano 1Lontano 2Lontano 3Scena distanteFilesystem veloceOtturatore veloceFileIl file "%s" non è stato trovato nella cartella "%s".Il file "%s/%s" non esiste.Eliminazione file, Caricamento del file Compressione fileIl file esisteFile non trovatoFile protetto.Risoluzione fileLa dimensione del file è %ld byte. La dimensione massima di un file possibile da caricare è %i byte.Tipo di fileCaricamento del file non riuscito.Il file era troppo grande. Spegnere e riaccendere la fotocamera prima di caricare altri file.Nome di file non validoNome di file richiestoTipo di file: FlashPix (Tipo di file: JPEG (Flash riempimentoFineFuochi d'artificioFirmwareRevisione del firmware: %8sRevisione del firmware: %8s Immagini: %i Memoria totale: %ikB Memoria libera: %ikB Revisione del firmware: %d.%d Revisione del firmwareVersione del firmware: %d.%02d Firmware: %d.%d FissoFlashFlash caricatoCompensazione flashBlocco livello del flashModo flashFlash spentoFlash apertoImpostazioni del flashImpostazioni del flashFlash automaticoModalità flash cambiataModo flash: auto, Modo flash: forzato, Modo flash: spento Flash spentoFlash attivoSolo FlashFlash/aperturaFlash/velocitàFlash/velocità/aperturaFlash: automaticoFlash: automatico (riduzione occhi rossi)Flash: spentoFlash: accesoFlash: acceso (riduzione occhi rossi)Flash: non definitoFlashPixProgramma flessibileFluorescenteTipo fluorescenteFluorescenteFluorescente HLampada Fluorescente 1Lampada Fluorescente 2Lampada Fluorescente 3Lampada Fluorescente 4Lampada Fluorescente 5Fluorescente: bianco freddoFluorescente: Luce diurnaFluorescente: bianco caldoLunghezza focaleLunghezza focale denominatoreLunghezza focale massimaLunghezza focale minimaLunghezza focale teleLunghezza focale grandangoloFuocoArea di messa a fuocoAree di fuocoDistanza messa a fuocoBlocca focusModalità messa a fuocoModalità messa a fuoco 2Posizione di fuocoModalità messa a fuoco cambiataPosizione di fuocoErrore di messa a fuoco.La cartella "%s" contiene solo %i file, ma è stato richiesto un file con numero %i.FogliameCiboForzaForza flash Formatta scheda e imposta il nome dell'album.Formatta compact flashScatti rimasti: %i Foto scattate : %4d Scatti fatti: %i FrancesePienaImmagine interaGeneraleGenerico piattoGenerico gerarchicoTedescoRicevi risposta di registrazioneLettura della configurazione...Lettura dei dati...Lettura della lista dei file...Lettura del file in corso...Lettura informazioni su %i file in corso...Lettura miniatura...Ricevuto risultato non previsto 0x%x. Contattare %s.Scala di grigiScala di grigiVerdeErrore hardwareAltaAlta (1152 x 872)Alta (buona qualità)Alta 2Sensibilità altaOtturatore alta velocitàAggiustamento tonalitàHyPictI/O in avanzamentoIDIndirizzo IP (vuoto per DHCP)ISOISO AutoVelocità ISOVelocità ISO cambiataIconeIn attesaParametro illecito.Impostazioni illuminazioneImmagineL'immagine %s è protetta da eliminazioneImmagini e audioAggiustamento immagineCommento all'immagineAbilita commento all'immagineCompressione immagineFormato immagineFormato immagine CFFormato immagine HD esternoFormato immagine SDModalità immagineQualità immagineQualità immagine 2Controlla immagineRotazione immagineImpostazioni immagineDimensioni immagineStabilizzazione immagineFormato immagine cambiatoAltezza immagine: %d Numero di immagine non valido.Immagine protetta.Dimensioni immagineDimensioni immagine: %d Il tipo di immagine %d non è gestito da questa fotocamera!Tipo di immagine %d non gestitoTipo di immagine non gestitoLarghezza immagine :%d In usoIncandescenteInternoInfinitoInformazioniInformazioni per la fotocamera basata su STV0680: Risposta iniziale '%c' della fotocamera non riconosciutaInizializzazione fotocameraRAM internaErrore interno #1 in get_file_func() (%s riga %i)Errore interno (1).Errore interno (2).Errore interno durante la ricerca di camlibs (nomi di percorso troppo lunghi?)Memoria interna: %d MB totale, %d MB liberi. Non validoImpostazione velocità ISO non validaStato non validoValore non valido (%d) Impostazione dell'apertura non validaImpostazione segnale acustico non validaImpostazione della compensazione dell'esposizione non validaImpostazione flash non validaImpostazione messa a fuoco non validaImpostazione del formato immagine non validaImpostazione modalità di scatto non validaImpostazione della velocità otturatore non validaItalianoConfigurazione JD11JPEGJPEG BaseJPEG FineJPEG NormaleJPEG NormaleGiapponeseMantieni il nome di file al caricamentoBambini e animaliLibreria per la fotocamera Kodak DC120 Scott Fritzinger Libreria per la fotocamera Kodak DC120. (a grande richiesta).Libreria per la fotocamera Kodak DC240 Scott Fritzinger e Hubert Figuiere Libreria per le fotocamere Kodak DC240, DC280, DC3400 e DC5000. Riscritto e aggiornato per gPhoto2.Driver per Kodak DC3200 Donn Morrison Domande e commenti sono apprezzati.Driver per Kodak EZ200 Bucas Jean-Francois Configurazione KonicaLibreria Konica Q-M150 Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Supporto per la Konica Q-M150.Libreria Konica Lutz Mueller Supporto per tutte le fotocamere Konica e molte fotocamere HP.CoreanoLCDLuminosità LCDIlluminazione LCDModo LCDDriver generico per LG GSM Guillaume Bedot PaesaggioLinguaDriver per Largan Hubert Figuiere GrandeJPEG Fine largaJPEG Normale largaSinistraCoprilente presenteIdentificativo lenteModalità lenteNome lenteTipo lenteLente non connessa LuceTroppo poca luce.Elenca i profili WifiElenca tutti i fileElencazione dei file in "%s"...Elencazione delle cartelle in "%s"...Litio-ioneCaricamento dei driver della fotocamera da "%s"...LocaleLocalizzazioneDati di localizzazione danneggiati.Dati di localizzazione troppo lunghi.File di localizzazione troppo lungo.BloccaDriver Logitech Clicksmart 310 Theodore Kilgore Otturatore lungoRicerca della fotocamera...Sembra un modem, non una fotocameraBassaBassa (576 x 436)Bassa (ottima qualità)Bassa 2Luce bassaContrasto bassoSensibilità bassaOtturatore bassa velocitàNon sono permesse lettere minuscole in %s.MM-DEPM4AMM/GG/AAAAM_DEPMacroGestitoManualeManuale 2Messa a fuoco manualeMessa a fuoco manualeProduttore: %s Libreria per la fotocamera Mars MR97310 Theodore Kilgore Fotocamera Mars MR97310. C'è %i foto. Fotocamera Mars MR97310. Ci sono %i foto. MatriceMatthew G. Martin Basato su fujiplay di Thierry Bousch Massima apertura alla distanza focale massimaMassima apertura alla distanza focale minimaDistanza focale massimaMassimaMassima apertura alla lunghezza focale minimaMassima apertura alla lunghezza focale minimaScatti massimiMassimo numero di immagini: %d MediaMedia (1152 x 872)Media (migliore qualità)Media 1Media 2Media 3JPEG Fine mediaMedio altaMedio bassaJPEG Normale mediaMedio altaSensibilità mediaMemoria libera: %i byte Scheda di memoriaStato scheda di memoria (%d): %s Memoria nella fotocamera: %d Mbit. Menù e riproduzioneMicrofonoMicrofono spentoFoglio di calcolo Microsoft Excel (.xls)Microsoft Powerpoint (.ppt) Documento Microsoft WordDistanza focale minimaEffetto miniaturaMinimaVelocità otturatore minimaLibreria per la fotocamera Minolta Dimage V %s Gus Hartmann Un ringraziamento speciale a Minolta per le specifiche.Numero mancanteModello IDModello: Minolta Dimage V (%s) Revisione hardware: %s Revisione firmware: %s Modello: Modello: %s Modello: %s Capacità: %i Mb Alimentazione: %s Spegnimento automatico: %i min Modalità: %s Immagini: %i/%i Mostra data: %s Data e ora: %s Modello: %s Memoria: %d byte su %d disponibiliModello: %s Numero di serie: %s, Versione hardware: %i.%i Versione software: %i.%i Versione software di test: %i.%i Nome: %s, Produttore: %s Modello: %x, %x, %x, %xModello: Kodak %s ModeratoMonitorMonocromaticoMese/Giorno/AnnoSposta oggettoFilmatoCattura filmatoVelocità ISO filmatoQualità filmatoRisoluzione filmatoLibreria di gPhoto2 per Mustek MDC-800 Henning Zabel Portato su gphoto2 da Marcus Meissner Gestisce i protocolli seriale e USB.NEF (Raw)NEF+BaseNEF+FineNEF+NormaleNON RICONOSCIUTONTSCParametro "%s" NULL in %s riga %iIl nome "%s" dalla fotocamera non corrisponde ad alcuna fotocamera conosciuta.Il nome "%s" (%li caratteri) è troppo lungo, può avere 30 caratteri al massimo.Prefisso nomeNome da impostare sulla scheda alla formattazione.Vicino %dVicino 1Vicino 2Vicino 3Maschera di reteNeutroSuccessivoNickel-CadmioNickel ibridoPaesaggio notturnoRitratto notturnoScena notturnaVisione notturnaPaesaggio notturnoScena notturnaScatto notturnoCattura Nikon 1Tempo di esposizione NikonModo flash NikonNoNessuna scheda Compact Flash rilevata Nessun dato EXIF disponibile per %s.Nessuna eliminazione file, Nessun caricamento file Senza flashNessuna scheda SD inserita. Nessuna risposta dalla fotocamera.Nessun file audio è stato trovato per %sNessun manuale per la fotocamera disponibile. Nessuna schedaNessuna scheda nella fotocamera. Nessuna scheda presente.Nessuna scheda di memoria presenteNessun motivo disponibileNessuna risposta dalla fotocameraNessuno spazio disponibile per catturare nuove immagini. Eliminare alcune immagini.Nessuno spazio rimasto sulla scheda.NessunoNessuno selezionatoNormaleNormale Non pienaSpazio libero non sufficienteInsufficiente memoria disponibile sulla scheda di memoriaNon prontaNon usatoNota: scheda di memoria non presente, alcuni valori possono essere non validi Numero di immagini: %d Numero di immagini: %dNumero di immagini: %d Numero di immagini: %i Versione del firmware: %sSpentaOKAccesaErrore del sistema operativo durante la comunicazione con la fotocameraSpentoUfficioAccesoAcceso + riduzione occhi rossiAcceso, riduzione occhi rossiScatto singoloSolo la directory radice è gestita (è stato richiesto di elencare la directory "%s").Apri sessioneModalità di operazioneOperazione rifiutataOperazione annullataQualità ottimaleOttimizza immmagineOrientamentoAltroAltre impostazioniUn altro comando in esecuzione.Fuori fuocoMemoria esauritaMemoria esaurita: %d byte necessari.Memoria esaurita: %ld byte necessari.EsternoNome proprietarioNome del proprietario cambiatoPPALPCPTP Accesso negatoPTP Cattura già completataAttesi dati PTPPTP Dispositivo occupatoPTP Errore genericoErrore di I/O PTPPTP Trasferimento incompletoPTP Formato codice non validoPTP Codice di formato dell'oggetto non validoParametro PTP non validoPTP ID di memoria non validoPTP ID di transazione non validoPTP Nessuna miniatura presentePTP OK!PTP Oggetto protetto da scritturaPTP Operazione non gestitaPTP Parametro non gestitoPTP Eliminazione parzialeProprietà PTP 0x%04xAttesa risposta PTPPTP Sessione già apertaPTP Sessione non apertaPTP Specificazione di formato non gestitaPTP Specificazione di destinazione non gestitaVersione standard PTP: %d.%d PTP Transazione annullataPTP Errore non definitoPTP Codice fornitore sconosciutoVersione PTPIl pacchetto è stato rifiutato dalla fotocamera. Contattare %s.Libreria di gPhoto per Panasonic DC1000 Mariusz Zynel Basato sul programma dc1000 scritto da Fredrik Roubert e Galen Brooks .Libreria di gPhoto2 per Panasonic DC1580 Mariusz Zynel Basato sul programma per dc1000 scritto da Fredrik Roubert e Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk PanoramaParametro 1Parametro 2Parametro 3ParzialeParty/InternoPercorso non assolutoImpostazioni persistentiRitratto animaleEffetti fotoFoto sulla fotocamera: %d Effetti fotoImpostazioni immagineStile fotografiaImmaginiFoto nella fotocamera: %d RiproduciModalità riproduzioneRiproduzioneVelocità di riproduzioneVelocità portaRitrattoAlimentazioneSpegniSalvataggio energiaSpegni dispositivoPreimpostatoImpostazione personalizzata 1Impostazione personalizzata 2Impostazione personalizzata 3Impostazione personalizzata 4Impostazione personalizzata 5AnteprimaPulsante anteprimaPulsante anteprima 2Anteprima miniaturaPrecedenteProblema durante lo scaricamento dell'immagineProblema durante la lettura delle informazioni sulle immaginiProblema durante la lettura del numero di immaginiProblema durante l'apertura della portaProblema leggendo l'immagine dalla memoriaProblema durante la reimpostazione della fotocameraProblema durante l'impostazione della velocità di comunicazione della fotocameraID prodotto: %02x%02x Nome profiloProibisci flash QualitàRisposta veloceRAWRAW + JPEG BaseRAW + JPEG FineRAW + JPEG NormaleRAW + JPEG Fine largaRAW + JPEG Normale piccolaRAW + JPEG Fine mediaRAW + JPEG Normale mediaRAW + JPEG Fine piccolaRAW + JPEG Normale piccolaRAW 2RAW+JPEGGuadagno RGBStato RTC: %d Compressione RawSolo LetturaLettura-ScritturaAttributi di sola lettura del file, come larghezza e altezza, non possono essere modificati.ProntaRicevuta risposta non prevista (%i). Contattare %s.Ricevuti dati inattesi (0x%02x, 0x%02x).Ricevuta una intestazione inattesa (%i)Ricevuta una risposta inattesaRicezione dati in corso...RegistraModalità di registrazioneModalità registrazioneRossoRiduzione occhi rossiRiduzione occhi rossiRiduzione occhi rossiRiduzione occhi rossi + Sincronizzazione lentaRiduzione occhi rossiRiempimento occhi rossiRiempimento occhi rossiRiduzione occhi rossiRiduzione occhi rossi con sincronizzazione lentaRemotoRAM rimovibile (scheda di memoria)ROM rimovibileRipetizioneReimposta dispositivoReimpostazione del protocollo in corso...RisoluzioneDriver per Ricoh / Philips Lutz Mueller , Martin Fischer , basato sul driver di Bob Paauwe's DestraAngolo di rotazioneRotazione scenaID scheda SD: %s Memoria SD: %d MB totali, %d MB liberi. SDRAMSDRAM: File: %d Immagini: %4d Filmati: %4d Spazio usato: %8d Spazio libero: %8d SDRamSTV0680 Adam Harrison Driver per le fotocamere con il processore STV0680 ASIC. Reverse engineered del protocollo usando CommLite Beta 5 Carsten Weinholz Esteso per Aiptek PenCam e altre fotocamere STM USB Dual-mode.SaturazioneSezioneColore selettivoInvia oggetto parzialeInvia richiesta di registrazioneInvia oggettoInvia informazioni sull'oggettoInvio dei dati in corso...SensibilitàID sensore: %d.%d SeppiaSequenza 9Numero di serieNumero di serie: %s Impostazioni persistentiImposta orologio sulla fotocameraImpostazioni 4Impostazioni 5Impostazioni 6Impostazioni 7OmbraOmbraPiù precisoNitidezzaModalità di scattoVelocità di scattoModalità di scattoModalità di scatto cambiataImpostazioni scattoSpegnimentoVelocità otturatoreVelocità otturatore (in secondi)Velocità otturatore (microsecondi, 0 autotomatico)Velocità otturatore 2Velocità otturatore in microsecondi (0 automatico)Velocità otturatoreVelocità otturatore cambiataSiPix Web2 Marcus Meissner Driver per accedere alla fotocamera SiPix Web2.SilhouetteSingoloArea singolaScatto singoloSingolo silenziosoScatto singoloSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Intervallo presentazioneLentoSincronizzazione lentaOtturatore lentoSincronizzazione lentaPiccolaJPEG Fine piccolaJPEG Normale piccolaNevePiù sofficeRevisione software: %s Libreria per la fotocamera Sonix Theodore Kilgore Fotocamera Sonix. C'è %i foto. Fotocamera Sonix. Ci sono %i foto. Cattura SonySpiacenti, la proprietà '%s' / 0x%04x è di sola lettura.Spiacenti, questa fotocamera Canon non gestisce Canon Capture initiationSpiacenti, questa fotocamera Canon non gestisce la cattura Canon EOSQuesta fotocamera Canon non gestisce la modalità Canon ViewfinderQuesta fotocamera Canon non gestisce la cattura CanonQuesta fotocamera Nikon sembra non produrre un'immagine JPEG in modalità LiveViewQuesta fotocamera Nikon non gestisce la modalità LiveViewQuesta fotocamera non gestisce la cattura NikonQuesta fotocamera non gestisce la cattura genericaAudioDriver per Soundvision Vince Weaver Spazio rimanente: Alta: %d, Media: %d, Bassa: %d SpagnoloLa velocità %i non è supportata!Velocità maggiori di 57600 non sono gestite durante il caricamento su questa fotocameraSportAzione sportivaSpotSpot-AFStandardAvvioAvvio e spegnimentoPasso #2 dell'inizializzazione non riuscito! (restituiti %i byte, attesi %i). Fotocamera non operativaPasso #2 dell'inizializzazione non riuscito: ("%s" durante la lettura di %i). Fotocamera non operativaPasso #3 dell'inizializzazione non riuscito! (restituito %i, atteso %i). Fotocamera non operativaPasso #3 dell'inizializzazione non riuscito: "%s" durante la lettura di %i. Fotocamera non operativaPasso #3 dell'inizializzazione non riuscito: "%s" durante la scrittura di %i. Fotocamera non operativaPasso #4 non riuscito! (restituito %i, atteso %i). Fotocamera non operativaPasso #4 non riuscito: "%s" durante la lettura di %i. Fotocamera non operativaSommario per Mustek MDC800: TramontoSuper macroSuperFineDimensioni miniature gestiteSpegnimento fotocameraSincronizza data e ora della fotocamera con il PCErrore di sistema.TFTTFT + PCTIFF (RGB)TTLTVFormato TVProva velocità diverse...Il livello della batteria della fotocamera è troppo bassoi (%d%%). L'operazione è annullata.Non è stato possibile contattare la fotocamera. Assicurarsi che sia connessa al computer e sia accesa.La fotocamera non ha accettato il comando.La fotocamera non accetta "%s" come nome di file.La fotocamera non supporta la velocità %i.La fotocamera ha inviato più byte del previsto (%i)La fotocamera ha inviato solo %i byte, ma ne sono necessari almeno %i.Il file da caricare ha lunghezza nullaLa lunghezza del nome del file non può superare 12 caratteri ("%s" ha %i caratteri).Il filesystem non gestisce il caricamento di file.Il filesystem non gestisce la lettura delle informazioni del file.Il filesystem non gestisce la lettura dei file.Il filesystem non gestisce la lettura delle informazioni del fileIl filesystem non gestisce l'impostazione delle informazioni del fileIl primo byte ricevuto (0x%x) non è valido.Il percorso "%s" non è assoluto.La proprietà '%s' / 0x%04x non è stata impostata (0x%04x: %s)La proprietà '%s' / 0x%04x non è stata impostata (0x%04x: %s).Il tipo di porta richiesto (%i) non è gestito da questo driver.Ci sono ancora dei file nella cartella "%s/%s" che si vuole rimuovere.Ci sono ancora delle sottocartelle nella cartella "%s/%s" che si vuole rimuovere.Un'operazione è in corso. Questa fotocamera gestisce solo un'operazione alla volta. Attendere fino alla conclusione dell'operazione corrente.C'è spazio per altre %d foto a bassa compressione %d foto a media compressione %d foto ad alta compressione Questa fotocamera non può catturare anteprime.Questa fotocamera non può catturare.La fotocamera contiene un chipset Jeilin JL2005%c. Il numero di foto è %i. La fotocamera contiene un chipset JL2205A. Il numero di foto è %i. Questa fotocamera non ha un manuale.Questa fotocamera non offre alcuna opzione di configurazione.Questa fotocamera non fornisce informazioni sul driver.Questa fotocamera non gestisce l'impostazione di opzioni di configurazioneQuesta fotocamera non gestisce i sommari.Questa anteprima non esiste.MiniaturaAltezza miniatura: %d Dimensioni miniatura: %d Larghezza miniatura: %d Formato dell'orarioData: %a, %d %B %Y, %T Tempo scaduto dopo 2 tentativi. Contattare %s.TimerTimer 10 secTimer 2 secCompensazione tonoTroppo chiaroTroppo scuroTroppi tentativi non riusciti.AltoToshiba David Hogue Driver per Toshiba pdr-m11. Numero di flash scattati: %d Numero di foto scattate: %d, Flash scattati: %d Numero di foto scattate: %d Trasmissione dei pacchetti scaduta dopo %i tentativi. Contattare %s.Trasmissione scaduta dopo 2 tentativi.Tronca oggettoTentativo di contattare la fotocamera in corso...TungstenoModalità turboTvTipo di presentazioneU1U2Lingua interfacciaOrario UNIXUSB 1.1USB 2.0Velocità USBNon definitoAudio non definitoElemento calendario non definitoCollezione non definitaContatto non definitoDocumento non definitoMessaggio non definitoProprietà PTP non definitaVideo non definitoEseguibile Windows non definitoSott'acquaSconosciutoSconosciuto %dComando sconosciutoErrore sconosciuto nella libreria della fotocameraErrore sconosciutoErrore sconosciuto.Tipo di file %i sconosciuto.Modalità di flash %d sconosciuta, Modello sconosciutoModello "%s" sconosciutoValore sconosciutoValore %04d sconosciutoValore %04x sconosciutoValore 0x%04x sconosciutoModalità di zoom %d sconosciuta Sconosciuto (%04x)Sconosciuto (0x%04x) Risposta non riconosciutaScheda non adattaComando non gestito.Tipo di porta %i = 0x%x non gestito. Initializzazione impossibile.Tipo di porta non gestito: %d. Questo driver funziona solo con fotocamere USB. Non utilizzatoAggiornare il firmware del dispositivoURL di caricamentoÈ possibile caricare un file solo nella cartella "%s"Caricamento del file in corso...Caricamento dell'immagine in corso...Caricamento dell'immagine: %s.Caricamento in corso...Scaricamento annullato dall'utenteDefinito utente 1Definito utente 2Definito utente 3ID Vendor: %02x%02x Versione: Versione: %s Modalità videoUscita videoUscita videoVivoImpostazioni volatiliLivello volumeWEP 128-bitWEP 64-bitCanale WIFIProfili WIFIIn attesa di completamento...In attesa...Avvertimento in canon_usb_set_file_attributes: canon_usb_dialogue ha restituito lo stato di errore 0x%08x dalla fotocameraAcquaPrevisto 0x%x ma ricevuto 0x%x. Contattare %s.DeboleBilanciamento del biancoImpostazione bilanciamento del bianco nome 0Impostazione bilanciamento del bianco nome 1Impostazione bilanciamento del bianco nome 2Impostazione bilanciamento del bianco nome 3Impostazione bilanciamento del bianco nome 4Impostazione bilanciamento del bianco valore 0Impostazione bilanciamento del bianco valore 1Impostazione bilanciamento del bianco valore 2Impostazione bilanciamento del bianco valore 3Impostazione bilanciamento del bianco valore 4Bilanciamento del biancoBilanciamento biancoBilanciamento bianco ABilanciamento bianco BBilanciamento bianco X ABilanciamento bianco X BLargoScriviProtetto da scritturaSequenza di escape non corretta: attesa 0x%02x, ricevuta 0x%02x.Documento XMLAAAA/MM/GGAnno/Mese/GiornoSìSi è cercato di eliminare "%s" dalla cartella "%s", ma il filesystem non gestisce l'eliminazione di file.Occorre impostare la porta prima di inizializzare la fotocamera.Occorre essere in modalità di registrazione per catturare un'immagine.Occorre indicare una cartella che inizia con /store_xxxxxxxxx/La fotocamera Logitech Clicksmart 310 contiene %i foto. La fotocamera Logitech Clicksmart 310 contiene %i foto. La fotocamera USB ha un chipset Aox. Numero di foto in bassa risoluzione: %i Numero di foto in alta risoluzione: %i Numero di foto: %i La fotocamera USB è una Kodak EZ200. Numero di immagini: %i La fotocamera USB è una iClick 5X. Il numero complessivo di foto scattate è %i La fotocamera USB sembra essere una LG GSM. Firmware: %s Versione del firmware: %s Questa fotocamera supporta solo l'eliminazione dell'ultimo file. In questo caso, questo file è "%s".ZoomZoom (in millimetri)Livello di zoom cambiatoZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro adattatore di correnteagfa_cl20 Il gruppo Agfa CL20 Linux Driver! Email: cl20@poeml.de Visitate: http://cl20.poeml.de autoAutomatico + riduzione occhi rossibatteriabianco e neroposa bulbfotocamera inattiva per più di 9 secondi, reinizializzata. canon_int_capture_image: canon_usb_list_all_dirs() finale fallito con stato %icanon_int_capture_image: canon_usb_list_all_dirs() iniziale fallito con stato %licanon_int_list_func: ERRORE: messaggio initial troppo corto (%i < minimo %i)canon_int_list_directory: ERRORE: messaggio initial troppo corto (%i < minimo %i)canon_int_list_directory: fine del pacchetto raggiunta durante l'analisi della prima voce di directorycanon_int_list_directory: incontrata una voce di directory troncatacanon_serial_get_dirents: impossibile allocare %i byte di memoriacanon_serial_get_dirents: Impossibile ridimensionare il buffer per le voci di directory a %i bytecanon_serial_get_dirents: impossibile leggere un'altra voce di directorycanon_serial_get_dirents: troppe voci di directory, ci deve essere un ciclo.canon_serial_get_dirents: ricevuta voce di directory troncatacanon_serial_get_dirents: canon_serial_dialogue non è riuscito a recuperare le voci di directorycanon_usb_get_body_id: restituita lunghezza dei dati inattesa (%i byte, attesi %i)canon_usb_get_dirents: canon_usb_long_dialogue non è riuscito a recuperare le voci di directory, restituito %icanon_usb_list_all_dirs: canon_usb_long_dialogue non è riuscito a recuperare le voci di directory, restituito %icanon_usb_lock_keys: restituita lunghezza inattesa (%i byte, attesi %i)canon_usb_lock_keys: restituita lunghezza inattesa dalla funzione "lock keys" (%i byte, attesi %i)canon_usb_set_file_attributes: canon_usb_dialogue non riuscitocanon_usb_unlock_keys: restituita lunghezza inattesa (%i byte, attesi %i)coloriLibreria coolshot vimpossibile cambiare il nome del proprietarioimpossibile impostare l'orarioeconomiaesternamenteriempimentofineLibreria gsmart300 Till Adam Jerome Lodewyck Supporto per fotocamere Mustek gSmart 300 basato su altri moduli di gphoto2 e sulle specifiche gentilmente fornite da Mustek. alta (640x480)compressione alta, Driver iClick 5X Theodore Kilgore iTTLInfinitointernamenteLibreria jamcam vLibreria per la fotocamera jl2005a Theodore Kilgore Libreria per la fotocamera jl2005bcd Theodore Kilgore blocco dei tasti non riuscito.losslessbassa (320x240)compressione bassa, mRAWmRAW + JPEG Fine largamRAW + JPEG Normale grandemRAW + JPEG Fine mediamRAW + JPEG Normale mediamRAW + JPEG Fine piccolamRAW + JPEG Normale piccolacompressione media, menùnessuno stato riportato.nessunonormalenon disponibile: %sspentoaccesoAcceso + riduzione occhi rossipccam600 init: errore inatteso: gp_port_read ha restituito %d invece di %dpccam600_close: valore di ritorno %d invece di %dpccam600_get_file: ricevuto indice %d ma attestp indice > %dpccam600_init: attesi %d blocchi, ricevuti %dpccam600_init: attesi > %d blocchi, ricevuti %driproducialimentazione OKsolo letturalettura scritturaprontaregistrasenza riduzione occhi rossi. con riduzione occhi rossi. riduzione occhi rossisRAWsRAW + JPEG Fine largasRAW + JPEG Normale grandesRAW + JPEG Fine mediasRAW + JPEG Normale mediasRAW + JPEG Fine piccolasRAW + JPEG Normale piccolasRGBsRGB (natura)sRGB (ritratto)Libreria spca50x vDriver generico per sq905 Theodore Kilgore Driver generico per sq905C Theodore Kilgore Standardsuperfinesx330z è solo USBorario impostatoimpossibile indovinare il valore CRC iniziale non definitotipo di dati %i inattesosconosciuto (0x%02x)compressione %d sconosciuta, risoluzione %d sconosciuta) vCalendar1vCalendar2vCard2vCard3attenzione: CRC non controllato (add len %d, value 0x%04x) ######################### libgphoto2-2.5.9/po/pl.po0000644000175000001440000120361112623156273012121 00000000000000# Polish translation for libgphoto2. # Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # Jakub Bogusz , 2006-2015. # msgid "" msgstr "" "Project-Id-Version: libgphoto2 2.5.8\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2015-07-22 17:04+0200\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" "Adc65\n" "Benjamin Moos " #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" "WyglÄ…da na to, że aparat nie przechowuje danych na CompactFlashu.\n" "Niestety nie jest to jeszcze obsÅ‚ugiwane :-(\n" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "Aparat wykonaÅ‚ %d zdjęć i przechowuje dane na CompactFlashu.\n" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "Ludzie tworzÄ…cy sterownik linuksowy do Agfa CL20!\n" " Można pisać do nas pod cl20@poeml.de \n" " Nasza strona to http://cl20.poeml.de " #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "Aparat USB ma chipset Aox.\n" "Liczba PIC niskiej rozdzielczoÅ›ci = %i\n" "Liczba PIC wysokiej rozdzielczoÅ›ci = %i\n" "Liczba PIC = %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Ogólny sterownik Aox\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "Ramka cyfrowa USB ma ukÅ‚ad AX203\n" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "Ramki cyfrowe oparte na AX203 sÄ… w różnych rozdzielczoÅ›ciach.\n" "Sterownik gphoto dla tych urzÄ…dzeÅ„ pozwala Å›ciÄ…gać,\n" "przesyÅ‚ać i usuwać zdjÄ™cia z ramki cyfrowej." #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "Sterownik ramki cyfrowej USB AX203\n" "Hans de Goede \n" "Ten sterownik umożliwia Å›ciÄ…ganie, przesyÅ‚anie i usuwanie zdjęć\n" "z ramki cyfrowej." #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 msgid "Picture Frame Configuration" msgstr "Konfiguracja ramki cyfrowej" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "Synchronizacja daty i czasu ramki z PC" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "Liczba zdjęć: %i\n" "Wersja firmware'u: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Rozpracowanie formatu danych obrazu:\n" "Jeff Laing \n" "\n" "Zaimplementowano z użyciem dokumentacji\n" "dostÄ™pnej na WWW za zgodÄ… Vision." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "Nie udaÅ‚o siÄ™ utworzyć katalogu %s." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "Nie udaÅ‚o siÄ™ usunąć katalogu %s." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "zablokowanie klawiszy nie powiodÅ‚o siÄ™." #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*NIEZNANY*" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image: poczÄ…tkowe canon_usb_list_all_dirs() nie powiodÅ‚o " "siÄ™ ze stanem %li" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image: koÅ„cowe canon_usb_list_all_dirs() nie powiodÅ‚o siÄ™ " "ze stanem %i" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "" "Nazwa '%s' (%li znaków) jest zbyt dÅ‚uga, dozwolone jest maksymalnie 30 " "znaków." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "MaÅ‚e litery w %s nie sÄ… dopuszczalne." #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory: BÅÄ„D: poczÄ…tkowy komunikat zbyt krótki (%i < " "minimum %i)" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_directory: OsiÄ…gniÄ™to koniec pakietu przed sprawdzeniem " "pierwszego dirent" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "canon_int_list_directory: napotkano uciÄ™ty wpis katalogu" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Plik zabezpieczony." #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_get_info_func: BÅÄ„D: poczÄ…tkowy komunikat zbyt krótki (%i < " "minimum %i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "Nie udaÅ‚o siÄ™ wyciÄ…gnąć miniaturki JPEG z danych: Brak poczÄ…tku/koÅ„ca" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "Nie udaÅ‚o siÄ™ wyciÄ…gnąć miniaturki JPEG z danych: Dane nie sÄ… JFIF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "Parametr NULL \"%s\" w %s w linii %i" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" "Nie wiem jak obsÅ‚użyć wartość camera->port->type %i czyli 0x%x w %s w linii " "%i." #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "BÅÄ„D KRYTYCZNY: nieznana poczÄ…tkowa wartość CRC dla dÅ‚ugoÅ›ci %d\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "nie udaÅ‚o siÄ™ odgadnąć poczÄ…tkowej wartoÅ›ci CRC\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "uwaga: nie sprawdzono CRC (dodać dÅ‚ugość %d, wartość 0x%04x) " "#########################\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "Tryb kompatybilnoÅ›ci" #: camlibs/canon/library.c:98 msgid "Thumbnail" msgstr "Miniaturka" #: camlibs/canon/library.c:99 msgid "Full Image" msgstr "PeÅ‚ny obraz" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "Å»arówka" #: camlibs/canon/library.c:216 msgid "Auto focus: one-shot" msgstr "Autofocus: jedno zdjÄ™cie" #: camlibs/canon/library.c:217 msgid "Auto focus: AI servo" msgstr "Autofocus: serwo AI" #: camlibs/canon/library.c:218 msgid "Auto focus: AI focus" msgstr "Autofocus: ogniskowa AI" #: camlibs/canon/library.c:219 msgid "Manual focus" msgstr "RÄ™czna ogniskowa" #: camlibs/canon/library.c:224 msgid "Beep off" msgstr "Piszczyk wyłączony" #: camlibs/canon/library.c:225 msgid "Beep on" msgstr "Piszczyk włączony" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 msgid "Flash off" msgstr "Flesz wyłączony" #: camlibs/canon/library.c:231 msgid "Flash on" msgstr "Flesz włączony" #: camlibs/canon/library.c:232 msgid "Flash auto" msgstr "Flesz automatyczny" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "AUTO" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "P" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "Tv" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "Av" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "M" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "A-DEP" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "M-DEP" #: camlibs/canon/library.c:267 msgid "Manual 2" msgstr "RÄ™czny 2" #: camlibs/canon/library.c:268 msgid "Far scene" msgstr "Scena daleka" #: camlibs/canon/library.c:269 msgid "Fast shutter" msgstr "Szybka migawka" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "Wolna migawka" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "Scena nocna" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "Skala szaroÅ›ci" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Sepia" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 msgid "Portrait" msgstr "Portret" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Punkt" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Makro" #: camlibs/canon/library.c:277 msgid "BW" msgstr "Cz/B" #: camlibs/canon/library.c:278 msgid "PanFocus" msgstr "PanFocus" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "Vivid" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 msgid "Neutral" msgstr "Neutralny" #: camlibs/canon/library.c:282 msgid "Long shutter" msgstr "DÅ‚uga migawka" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "Super makro" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "RoÅ›linność" #: camlibs/canon/library.c:285 msgid "Indoor" msgstr "WnÄ™trze" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "Fajerwerki" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "Plaża" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "Podwodne" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "Åšnieg" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "Dzieci i zwierzÄ™ta" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "Nocny widok" #: camlibs/canon/library.c:292 msgid "Digital macro" msgstr "Makro cyfrowe" #: camlibs/canon/library.c:293 msgid "MyColors" msgstr "Moje Kolory" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "ZdjÄ™cie w filmie" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "RAW" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "RAW 2" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "MaÅ‚y normalny JPEG" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "MaÅ‚y dobry JPEG" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "Åšredni normalny JPEG" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "Åšredni dobry JPEG" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "Duży normalny JPEG" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "Duży dobry JPEG" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "RAW + maÅ‚y normalny JPEG" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "RAW + maÅ‚y dobry JPEG" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "RAW + Å›redni normalny JPEG" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "RAW + Å›redni dobry JPEG" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "RAW + duży normalny JPEG" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "RAW + duży dobry JPEG" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" "Sterownik do aparatów Canon PowerShot, Digital IXUS, IXY Digital,\n" " i EOS Digital w ich natywnym (czasem zwanym \"normalnym\") trybie.\n" " ObsÅ‚uguje także niewielkÄ… liczbÄ™ cyfrowych kamkorderów Canona z opcjÄ…\n" " nieruchomego obrazu.\n" "Zawiera kod do komunikacji przez port szeregowy oraz USB, ale (jeszcze)\n" " nie przez IEEE 1394 (Firewire).\n" "Jest zaprojektowany do pracy z ponad 70 modelami tak starymi jak\n" " PowerShot A5 czy Pro70 z 1998 roku oraz tak nowymi jak PowerShot A510\n" " czy EOS 350D z 2005 roku.\n" "Nie byÅ‚ jeszcze testowany z aparatami EOS 1D ani EOS 1Ds.\n" "W przypadku A50 użycie 115200 bps może być efektywnie wolniejsze niż\n" "57600. JeÅ›li bÄ™dzie wystÄ™pować dużo błędów transmisji szeregowej, należy\n" "spróbować możliwie najmniej obciążać komputer (bez pracy dysku).\n" #: camlibs/canon/library.c:497 #, c-format msgid "Camera unavailable: %s" msgstr "Aparat niedostÄ™pny: %s" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Wyłączanie aparatu" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Błąd podczas pobierania obrazu" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Nie udaÅ‚o siÄ™ uzyskać nazwy dysku: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Przyczyna niedostÄ™pna" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Nie udaÅ‚o siÄ™ uzyskać informacji o dysku: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "Błąd wewnÄ™trzny #1 w get_file_func() (%s w linii %i)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "Nie znaleziono pliku z dźwiÄ™kiem dla %s" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " UrzÄ…dzenie %s\n" " %11s bajtów w sumie\n" " %11s bajtów dostÄ™pnych" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "zasilacz AC" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "na baterii" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "zasilanie w porzÄ…dku" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "zasilanie nieprawidÅ‚owe" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "niedostÄ™pne: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (czas hosta %s%i sekund)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Identyfikacja aparatu:\n" " Model: %s\n" " WÅ‚aÅ›ciciel: %s\n" "\n" "Stan zasilania: %s\n" "\n" "Informacje o dysku flash:\n" "%s\n" "\n" "Czas: %s\n" #: camlibs/canon/library.c:1145 msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Sterownik do aparatów serii Canon PowerShot.\n" "Autorami sÄ…:\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "dodatki do A5 napisaÅ‚ Ole W. Saastad\n" "Dodatkowe rozszerzenia napisali:\n" " Holger Klemm\n" " Stephen H. Westin" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Błąd podczas usuwania pliku" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Błąd podczas usuwania powiÄ…zanego pliku miniaturki" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "" "PrÄ™dkoÅ›ci wiÄ™ksze niż 57600 nie sÄ… obsÅ‚ugiwane przy wczytywaniu danych do " "tego aparatu" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Nie udaÅ‚o siÄ™ uzyskać litery dysku flash" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "Nie udaÅ‚o siÄ™ przesÅ‚ać danych do aparatu - brak wolnych nazw folderów!\n" "Istnieje nazwa folderu 999CANON i zawiera obrazek AUT_9999.JPG." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Nie udaÅ‚o siÄ™ utworzyć katalogu \\DCIM." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Nie udaÅ‚o siÄ™ utworzyć katalogu docelowego." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "Konfiguracja aparatu i sterownika" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Ustawienia aparatu" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 msgid "Owner Name" msgstr "Nazwa wÅ‚aÅ›ciciela" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 msgid "Capture Size Class" msgstr "Klasa rozmiaru zdjÄ™cia" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "CzuÅ‚ość ISO" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "Nieznany" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 msgid "Shooting mode" msgstr "Tryb robienia zdjÄ™cia" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 msgid "Shutter Speed" msgstr "PrÄ™dkość migawki" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "PowiÄ™kszenie" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "PrzysÅ‚ona" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Kompensacja ekspozycji" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 msgid "Image Format" msgstr "Format zdjęć" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Tryb ogniskowania" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Tryb flesza" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Piszczyk" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 msgid "Camera Actions" msgstr "CzynnoÅ›ci aparatu" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "Synchronizacja daty i czasu z PC" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 msgid "Camera Status Information" msgstr "Informacja o stanie aparatu" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "Model aparatu" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Data i czas" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Błąd" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 msgid "Firmware Version" msgstr "Wersja firmware'u" #: camlibs/canon/library.c:1956 msgid "Power" msgstr "Zasilanie" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Sterownik" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Wypisanie listy wszystkich plików" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Zachowywanie nazwy pliku przy przesyÅ‚aniu do aparatu" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Aparat niedostÄ™pny" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Nazwa wÅ‚aÅ›ciciela zmieniona" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "nie udaÅ‚o siÄ™ zmienić nazwy wÅ‚aÅ›ciciela" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "Zmieniono klasÄ™ rozmiaru zdjÄ™cia" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "Błędne ustawienie klasy rozmiaru zdjÄ™cia" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "Błędne ustawienie czuÅ‚oÅ›ci ISO" #: camlibs/canon/library.c:2056 msgid "ISO speed changed" msgstr "Zmieniono czuÅ‚ość ISO" #: camlibs/canon/library.c:2058 msgid "Could not change ISO speed" msgstr "Nie udaÅ‚o siÄ™ zmienić czuÅ‚oÅ›ci ISO" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "Błędne ustawienie trybu robienia zdjÄ™cia" #: camlibs/canon/library.c:2085 msgid "Shooting mode changed" msgstr "Zmieniono tryb robienia zdjÄ™cia" #: camlibs/canon/library.c:2087 msgid "Could not change shooting mode" msgstr "Nie udaÅ‚o siÄ™ zmienić trybu robienia zdjÄ™cia" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "Błędne ustawienie prÄ™dkoÅ›ci migawki" #: camlibs/canon/library.c:2114 msgid "Shutter speed changed" msgstr "Zmieniono prÄ™dkość migawki" #: camlibs/canon/library.c:2116 msgid "Could not change shutter speed" msgstr "Nie udaÅ‚o siÄ™ zmienić prÄ™dkoÅ›ci migawki" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 msgid "Invalid aperture setting" msgstr "Błędne ustawienie przysÅ‚ony" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 msgid "Aperture changed" msgstr "Zmieniono przysÅ‚onÄ™" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 msgid "Could not change aperture" msgstr "Nie udaÅ‚o siÄ™ zmienić przysÅ‚ony" #: camlibs/canon/library.c:2167 msgid "Invalid exposure compensation setting" msgstr "Błędne ustawienie kompensacji ekspozycji" #: camlibs/canon/library.c:2170 msgid "Exposure compensation changed" msgstr "Kompensacja ekspozycji zmieniona" #: camlibs/canon/library.c:2172 msgid "Could not change exposure compensation" msgstr "Nie udaÅ‚o siÄ™ zmienić kompensacji ekspozycji" #: camlibs/canon/library.c:2194 msgid "Invalid image format setting" msgstr "Błędne ustawienie formatu zdjęć" #: camlibs/canon/library.c:2198 msgid "Image format changed" msgstr "Format zdjęć zmieniony" #: camlibs/canon/library.c:2200 msgid "Could not change image format" msgstr "Nie udaÅ‚o siÄ™ zmienić formatu zdjęć" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "Błędne ustawienie trybu ogniskowania" #: camlibs/canon/library.c:2226 msgid "Focus mode changed" msgstr "Zmieniono tryb ogniskowania" #: camlibs/canon/library.c:2228 msgid "Could not change focus mode" msgstr "Nie udaÅ‚o siÄ™ zmienić trybu ogniskowania" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "Błędne ustawienie trybu piszczyka" #: camlibs/canon/library.c:2255 msgid "Beep mode changed" msgstr "Zmieniono tryb piszczyka" #: camlibs/canon/library.c:2257 msgid "Could not change beep mode" msgstr "Nie udaÅ‚o siÄ™ zmienić trybu piszczyka" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "Zmieniono stopieÅ„ powiÄ™kszenia" #: camlibs/canon/library.c:2276 msgid "Could not change zoom level" msgstr "Nie udaÅ‚o siÄ™ zmienić stopnia powiÄ™kszenia" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "Błędne ustawienie trybu flesza" #: camlibs/canon/library.c:2332 msgid "Flash mode changed" msgstr "Zmieniono tryb flesza" #: camlibs/canon/library.c:2334 msgid "Could not change flash mode" msgstr "Nie udaÅ‚o siÄ™ zmienić trybu flesza" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "czas ustawiony" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "nie udaÅ‚o siÄ™ ustawić czasu" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "" "Podano nieobsÅ‚ugiwany rodzaj portu %i = 0x%x. Inicjalizacja niemożliwa." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Bateria wyczerpana, aparat wyłączony." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "BÅÄ„D: nieoczekiwany komunikat" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "BÅÄ„D: przepeÅ‚nienie komunikatu" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "BÅÄ„D: utrata kolejnoÅ›ci." #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "BÅÄ„D: nieoczekiwany rodzaj pakietu." #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "BÅÄ„D: błąd formatu komunikatu." #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "BÅÄ„D: nieoczekiwany komunikat2." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "PrzesyÅ‚anie pliku do aparatu..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Pobieranie pliku..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "canon_serial_get_dirents: w canon_serial_dialogue nie udaÅ‚o siÄ™ pobrać " "wpisów katalogu" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" "canon_serial_get_dirents: PoczÄ…tkowy pakiet dirent zbyt krótki (tylko %i " "bajtów)" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "canon_serial_get_dirents: Nie udaÅ‚o siÄ™ przydzielić %i bajtów pamiÄ™ci" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "" "canon_serial_get_dirents: Nie udaÅ‚o siÄ™ odczytać kolejnego wpisu katalogu" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "canon_serial_get_dirents: Odebrano uciÄ™ty wpis katalogu" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "canon_serial_get_dirents: Zbyt dużo wpisów dirent, musi być pÄ™tla." #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents: Nie udaÅ‚o siÄ™ zmienić rozmiaru bufora dirent na %i " "bajtów" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Błąd podczas zmiany prÄ™dkoÅ›ci." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Resetowanie protokoÅ‚u..." #: camlibs/canon/serial.c:1311 msgid "Camera OK." msgstr "Aparat w porzÄ…dku." #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Szukanie aparatu..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Próba kontaktu z aparatem..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Błąd komunikacji 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Brak odpowiedzi od aparatu" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Nierozpoznana odpowiedź" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "Wykryto \"%s\" czyli \"%s\"" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "Nieznany model \"%s\"" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "ZÅ‚y EOT" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Błąd komunikacji 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Błąd komunikacji 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Zmiana prÄ™dkoÅ›ci... oczekiwanie..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Błąd podczas zmiany prÄ™dkoÅ›ci" #: camlibs/canon/serial.c:1454 msgid "Error waiting for ACK during initialization, retrying" msgstr "Błąd podczas oczekiwania na ACK przy inicjalizacji, ponowna próba" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Błąd podczas oczekiwania na ACK przy inicjalizacji" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Połączono z aparatem" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "BÅÄ„D: wykryto błąd krytyczny, nie można kontynuować" #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "BÅÄ„D: %d to za dużo" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Pobieranie miniaturki..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "NIE ROZPOZNANO" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "Nie udaÅ‚o siÄ™ ustanowić poczÄ…tkowego połączenia z aparatem" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "Aparat już byÅ‚ aktywny" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "Aparat zostaÅ‚ obudzony" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "Nierozpoznana poczÄ…tkowa odpowiedź aparatu '%c'" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" "Krok #2 inicjalizacji nie powiódÅ‚ siÄ™: (\"%s\" przy odczycie %i) Aparat " "niefunkcjonalny" #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "Krok #2 inicjalizacji nie powiódÅ‚ siÄ™! (zwrócono %i bajtów, oczekiwano %i). " "Aparat niefunkcjonalny" #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" "Krok #3 inicjalizacji nie powiódÅ‚ siÄ™: \"%s\" przy odczycie %i. Aparat " "niefunkcjonalny" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" "Krok #3 inicjalizacji nie powiódÅ‚ siÄ™! (zwrócono %i, oczekiwano %i). Aparat " "niefunkcjonalny" #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" "Krok #3 inicjalizacji nie powiódÅ‚ siÄ™: \"%s\" przy zapisie %i. Aparat " "niefunkcjonalny" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" "Krok #4 nie powiódÅ‚ siÄ™: \"%s\" przy odczycie %i. Aparat niefunkcjonalny" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" "Krok #4 nie powiódÅ‚ siÄ™ (zwrócono %i, oczekiwano %i). Aparat niefunkcjonalny" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "Aparat nie gotowy, wielokrotne żądania 'Identify camera' nie powiodÅ‚y siÄ™: %s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "Aparat nie gotowy, get_battery nie powiodÅ‚o siÄ™: %s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Nieoczekiwana dÅ‚ugość zwrócona z funkcji \"lock keys" "\" (%i bajtów, oczekiwano %i)" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Zwrócona nieoczekiwana dÅ‚ugość (%i bajtów, oczekiwano " "%i)" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_unlock_keys: Zwrócona nieoczekiwana dÅ‚ugość (%i bajtów, oczekiwano " "%i)" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_get_body_id: Zwrócona nieoczekiwana dÅ‚ugość danych (%i bajtów, " "oczekiwano %i)" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Odbieranie danych..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "Brak pamiÄ™ci: potrzeba %d bajtów." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes: canon_usb_dialogue nie powiodÅ‚o siÄ™" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "Ostrzeżenie w canon_usb_set_file_attributes: canon_usb_dialogue zwróciÅ‚o " "status błędu 0x%08x z aparatu" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "Nie udaÅ‚o siÄ™ odczytać z pliku \"%s\"" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "Brak pamiÄ™ci: potrzeba %ld bajtów." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "PrzesÅ‚anie pliku do aparatu nie powiodÅ‚o siÄ™." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "Plik byÅ‚ zbyt duży. Może zajść potrzeba wyłączenia i włączenia aparatu przed " "przesyÅ‚aniem kolejnych plików." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" "canon_usb_get_dirents: Nie udaÅ‚o siÄ™ zmieÅ›cić danych do bufora, " "'%.96s' (obciÄ™te) zbyt dÅ‚ugie." #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents: w canon_usb_long_dialogue nie powiodÅ‚o siÄ™ pobranie " "wpisów katalogu, zwrócono %i" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" "canon_usb_list_all_dirs: Nie udaÅ‚o siÄ™ zmieÅ›cić danych do bufora, " "'%.96s' (obciÄ™te) zbyt dÅ‚ugie." #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs: w canon_usb_long_dialogue nie powiodÅ‚o siÄ™ pobranie " "wpisów katalogu, zwrócono %i" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "Wykryto '%s'." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "Nazwa \"%s\" z aparatu nie pasuje do żadnego znanego aparatu" #: camlibs/casio/casio-qv.c:152 #, c-format msgid "Image type %d not supported" msgstr "Typ obrazu %d nie jest obsÅ‚ugiwany" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "Obraz %s jest zabezpieczony przed usuniÄ™ciem." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" "Szkielet sterownika napisaÅ‚ Lutz Mueller .\n" "To oprogramowanie zawiera kod źródÅ‚owy QVplaya, którego autorami sÄ… Ken-ichi " "HAYASHI i Jun-ichiro \"itojun\" Itoh " ".\n" "Integracji QVplaya dokonaÅ‚ Michael Haardt ." #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "Poziom baterii: %.1f woltów. Wersja: %08x." #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "Konfiguracja aparatu" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "Bateria" #: camlibs/casio/casio-qv.c:275 msgid "Brightness" msgstr "Jasność" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 msgid "Too bright" msgstr "Zbyt jasno" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 msgid "Too dark" msgstr "Zbyt ciemno" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "OK" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "Aparat Logitech Clicksmart 310 zawiera %i zdjÄ™cie.\n" msgstr[1] "Aparat Logitech Clicksmart 310 zawiera %i zdjÄ™cia.\n" msgstr[2] "Aparat Logitech Clicksmart 310 zawiera %i zdjęć.\n" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" "SÄ… dwa ustawienia rozdzielczoÅ›ci: 352x288 i 176x144. Dane zdjęć\n" "sÄ… w formacie JPEG, przez co nie można wczeÅ›niej okreÅ›lić ich\n" "rozmiaru. Przez to podawanÄ… maksymalnÄ… liczbÄ™ zdjęć mieszczonÄ…\n" "przez aparat należy traktować jako aproksymacjÄ™.\n" "BÄ™dÄ… dziaÅ‚ać wszystkie opcje gphoto2 z wyjÄ…tkiem tych, których\n" "nie obsÅ‚uguje sprzÄ™t:\n" "\t- usuwania poszczególnych lub wybranych zdjęć (gphoto2 -d)\n" "\t- pobierania obrazu (gphoto2 --capture lub --capture-image)\n" "Jednak pobieranie obrazu jest możliwe przy użyciu interfejsu webcam,\n" "obsÅ‚ugiwanego przez moduÅ‚ jÄ…dra spca50x.\n" "DostÄ™p przez GUI przy użyciu gtkam zostaÅ‚ przetestowany i dziaÅ‚a.\n" "Jednak aparat nie tworzy oddzielnych miniaturek. Ponieważ zdjÄ™cia\n" "zawsze i tak sÄ… maÅ‚e i w niskiej rozdzielczoÅ›ci, sterownik Å›ciÄ…ga\n" "wÅ‚aÅ›ciwe zdjÄ™cia i używa je jako miniaturki.\n" "Aparat potrafi robić zdjÄ™cia w trybie 'video clip'. Wynikowe klatki\n" "sÄ… zapisywane jako ciÄ…g nieruchomych zdjęć. Użytkownik może animować\n" "je przy użyciu np. funkcji 'animate' z pakietu ImageMagick.\n" "WiÄ™cej szczegółów o funkcjach aparatu można znaleźć\n" "w libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "Sterownik Logitech Clicksmart 310\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" "Dla aparatów na elektronice S&Q Technologies, majÄ…cych USB Vendor ID\n" "0x2770 i Product ID 0x905C, 0x9050, 0x9051, 0x9052 lub 0x913D zdjÄ™cia\n" "sÄ… zapisywane w formacie PPM.\n" "\n" "Niektóre z tych aparatów pozwalajÄ… na programowe usuniÄ™cie wszystkich\n" "zdjęć. Inne nie. Å»aden z obsÅ‚ugiwanych aparatów nie pozwala na\n" "wykonanie capture-image. Każdy pozwala na capture-preview (zrobienie\n" "zdjÄ™cia i przesÅ‚anie do komputera). JeÅ›li delete-all (usuwanie\n" "wszystkich zdjęć) dziaÅ‚a na danym aparacie, capture-preview bÄ™dzie\n" "miaÅ‚o efekt uboczny usuniÄ™cia wszystkiego, co jest zapisane w aparacie.\n" "\n" "PrzesyÅ‚anie zdjęć do aparatu nie jest obsÅ‚ugiwane. Ponadto żaden\n" "z obsÅ‚ugiwanych aparatów nie pozwala na programowe usuwanie pojedynczych\n" "zdjęć.\n" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "ogólny sterownik sq905C\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Typ obrazu nie jest obsÅ‚ugiwany" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "Liczba zdjęć: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "Tylko główny folder jest obsÅ‚ugiwany - żądano listy plików dla folderu '%s'." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Problem przy pobieraniu liczby zdjęć" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Problem przy pobieraniu informacji o obrazie" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Typ Å›ciÄ…gania nie jest obsÅ‚ugiwany" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (bateria jest w %d%% peÅ‚na)" #: camlibs/dimera/dimera3500.c:455 #, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 w wersji %s %d/%d %d:%d.\n" "%d zdjęć zużyÅ‚o przeciÄ™tnie %d (wysoka r.) lub %d (niska r.)\n" "Opcje aparatu: %s, %s, %s, %s.\n" "Flesz jest %s, jest %s i jest %s.\n" "Rozdzielczość jest ustawiona na %s.\n" "Aparat jest zasilany %s%s.\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Flesz" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 msgid "No Flash" msgstr "Bez flesza" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Dual Iris" #: camlibs/dimera/dimera3500.c:468 msgid "No Dual Iris" msgstr "Bez Dual Iris" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "Przełącznik rozdzielczoÅ›ci" #: camlibs/dimera/dimera3500.c:470 msgid "No Resolution Switch" msgstr "Bez przełącznika rozdzielczoÅ›ci" #: camlibs/dimera/dimera3500.c:472 msgid "No Power Light" msgstr "Bez wskaźnika zasilania" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "WÅÄ„CZONY" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "WYÅÄ„CZONY" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "gotowy" #: camlibs/dimera/dimera3500.c:476 msgid "Not ready" msgstr "Nie gotowy" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "w trybie wypeÅ‚niajÄ…cym" #: camlibs/dimera/dimera3500.c:478 msgid "Not in fill mode" msgstr "Nie w trybie wypeÅ‚niajÄ…cym" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "niskÄ… (320x240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "wysokÄ… (640x480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "zewnÄ™trznie" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "wewnÄ™trznie" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" " * Zakłócenia obrazu albo problemy z komunikacjÄ… sÄ…\n" " zwykle spowodowane niskim stanem baterii.\n" " * ZdjÄ™cia robione zdalnie tym aparatem sÄ… przechowywane\n" " w tymczasowej pamiÄ™ci RAM, a nie na karcie pamiÄ™ci flash.\n" " * Sterowanie ekspozycjÄ… przy zdjÄ™ciach może być\n" " konfigurowane rÄ™cznie lub ustawione w trybie automatycznym.\n" " * Jakość obrazu jest teraz niższa niż mogÅ‚aby być.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "To oprogramowanie stworzono przy pomocy wÅ‚asnoÅ›ciowych\n" "informacji należących do StarDot Technologies.\n" "\n" "Autor:\n" " Brian Beattie \n" "Współtwórcy:\n" " Chuck Homic \n" " PrzeksztaÅ‚canie surowych obrazów z aparatu do RGB\n" " Dan Fandrich \n" " Informacje o protokole, format surowego obrazu,\n" " port gphoto2\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Problem przy odczycie obrazu z pamiÄ™ci flash" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Brak pamiÄ™ci" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "ÅšciÄ…ganie obrazu..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Problem przy Å›ciÄ…ganiu obrazu" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "ÅšciÄ…ganie przerwane przez użytkownika" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Problem przy robieniu zdjÄ™cia na żywo" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Ekspozycja" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "Automatyczne dostrajanie ekspozycji przy podglÄ…dzie" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "Poziom ekspozycji przy podglÄ…dzie" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "Automatyczny flesz przy robieniu zdjÄ™cia" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Problem przy otwieraniu portu" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Problem przy resetowaniu aparatu" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Problem przy ustawianiu prÄ™dkoÅ›ci komunikacji z aparatem" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "WyglÄ…da jak modem, a nie aparat" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "Pobieranie listy plików w '%s'..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "Pobieranie listy folderów w '%s'..." #: camlibs/directory/directory.c:381 #, c-format msgid "Could not get information about '%s' (%s)." msgstr "Nie udaÅ‚o siÄ™ uzyskać informacji o '%s' (%s)." #: camlibs/directory/directory.c:414 #, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Nie udaÅ‚o siÄ™ uzyskać informacji o '%s' w '%s' (%s)." #: camlibs/directory/directory.c:462 #, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Nie udaÅ‚o siÄ™ zmienić czasu pliku '%s' w '%s' (%s)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Nie udaÅ‚o siÄ™ otworzyć '%s'." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" "PrzeglÄ…danie katalogu \"aparat\" pozwala indeksować zdjÄ™cia na twardym dysku." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "" "Tryb przeglÄ…dania katalogu - napisaÅ‚ Scott Fritzinger ." #: camlibs/directory/directory.c:671 #, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "Nie udaÅ‚o siÄ™ usunąć pliku '%s' w folderze '%s' (kod błędu %i: %s)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" "Program do Å›ciÄ…gania dla aparatów Digital Dream Enigma 1.3. napisany przez " " i zaadoptowany do sterownika spca50x. " "PodziÄ™kowania dla zaÅ‚ogi spca50x, Å‚atwo byÅ‚o sportować wasz sterownik do " "tego aparatu! " #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "Aparat wysÅ‚aÅ‚ tylko %i bajt(ów), ale potrzeba co najmniej %i." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Nie udaÅ‚o siÄ™ skontaktować z aparatem" #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Odebrano nieoczekiwane dane (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "NiewÅ‚aÅ›ciwa sekwencja sterujÄ…ca: oczekiwano 0x%02x, otrzymano 0x%02x." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "ZÅ‚e dane - otrzymano 0x%02x, oczekiwano 0x%02x." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "ZÅ‚e dane - otrzymano 0x%02x, oczekiwano 0x%02x lub 0x%02x." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "ZÅ‚a suma kontrolna - otrzymano 0x%02x, oczekiwano 0x%02x." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "Aparat odrzuciÅ‚ polecenie." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "Aparat zresetowaÅ‚ siÄ™." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "Aparat wysÅ‚aÅ‚ nieoczekiwany bajt 0x%02x." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "ÅšciÄ…ganie..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "Nie udaÅ‚o siÄ™ przydzielić %i bajt(ów) do Å›ciÄ…gniÄ™cia miniaturki." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "Nie udaÅ‚o siÄ™ przydzielić %i bajt(ów) do Å›ciÄ…gniÄ™cia obrazu." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "Aparat nie przyjÄ…Å‚ '%s' jako nazwy pliku." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "" "Nie udaÅ‚o siÄ™ rozpocząć przesyÅ‚ania do aparatu (aparat odpowiedziaÅ‚ 0x%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "Aparat nie obsÅ‚uguje prÄ™dkoÅ›ci %i." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "Nie udaÅ‚o siÄ™ ustawić prÄ™dkoÅ›ci %i (aparat odpowiedziaÅ‚ %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Oparty o fujiplay, który napisaÅ‚ Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "PrÄ™dkość %ld nie jest obsÅ‚ugiwana." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Konfiguracja aparatu FUJI" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Data i czas" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Wersja: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Model: " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "DostÄ™pna pamięć: " #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "biblioteka gsmart300 \n" "Till Adam \n" "Jerome Lodewyck \n" "ObsÅ‚uga aparatów cyfrowych Mustek gSmart 300\n" "oparta na różnych innych moduÅ‚ach camlib gphoto2 i specyfikacji " "udostÄ™pnionej przez Musteka.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "NieobsÅ‚ugiwany rodzaj portu: %d. Ten sterownik dziaÅ‚a tylko z aparatami " "USB.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Nie udaÅ‚o siÄ™ zresetować aparatu.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Ten aparat obsÅ‚uguje tylko usuwanie ostatniego pliku z aparatu. W tym " "przypadku tym plikiem jest '%s'." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" "Bieżący czas aparatu: %04d-%02d-%02d %02d:%02d\n" "Wolna pamięć na karcie: %d\n" "Obrazów na karcie: %d\n" "Wolnych obrazów na karcie: %d\n" "Poziom baterii: %d%%." #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" "hp215\n" "Marcus Meissner \n" "Sterownik dostÄ™pu do aparatów HP Photosmart 215.\n" "Włączony z oddzielnego programu hp215.\n" "Sterownik pozwala na Å›ciÄ…ganie obrazów i podglÄ…dów oraz usuwanie obrazów.\n" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "Ten aparat USB to iClick 5X.\n" "CaÅ‚kowita liczba zrobionych zdjęć: %i\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" "Dla aparatów o ID 0x2770:0x9153:\n" "\n" "Nie jest zalecane używanie programu GUI do dostÄ™pu do tego\n" "aparatu, chyba że tylko dla zabawy albo żeby spróbować, czy\n" "można spalić bezpiecznik.\n" "Aby naprawdÄ™ Å›ciÄ…gnąć zdjÄ™cia, należy spróbować:\n" "gphoto2 -P\n" "z linii poleceÅ„.\n" "Uwaga: Å›ciÄ…ganie filmów nie jest możliwe.\n" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "Sterownik iClick 5X\n" "Theodore Kilgore \n" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Wykonanych klatek: %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "biblioteka jamcam v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "ÅšciÄ…ganie danych..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "ÅšciÄ…ganie miniaturki..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "Aparat JD11 dziaÅ‚a dosyć dobrze z tym sterownikiem.\n" "Interfejs RS232 przy 115 kbitach jest wymagany do przesyÅ‚ania zdjęć.\n" "Sterownik pozwala na pobranie\n" "\n" " - miniaturek (64x48 w formacie PGM)\n" " - peÅ‚nych obrazów (640x480 w formacie PPM)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Sterownik dla aparatów Jenoptik JD11.\n" "Protokół wstecznie rozpracowany przy użyciu WINE i IDA." #: camlibs/jd11/jd11.c:186 msgid "JD11 Configuration" msgstr "Konfiguracja JD11" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Inne ustawienia" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Czas ekspozycji żarówki" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Ustawienia kolorów" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "CzerwieÅ„" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "ZieleÅ„" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Błękit" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Ten aparat ma chipset Jeilin JL2005A.\n" "CaÅ‚kowita liczba zdjęć w nim wynosi %i\n" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" "Ten sterownik obsÅ‚uguje aparaty z ukÅ‚adem Jeilin jl2005a.\n" "Aparaty te nie obsÅ‚ugujÄ… usuwania zdjęć ani przesyÅ‚ania danych do\n" "aparatu.\n" "Dekodowanie skompresowanych zdjęć może nie dziaÅ‚ać dobrze i nie\n" "dziaÅ‚a tak samo dobrze dla wszystkich obsÅ‚ugiwanych aparatów.\n" "JeÅ›li zostanÄ… znalezione w aparacie klatki filmów, sÄ… Å›ciÄ…gane\n" "jako kolejne nieruchome zdjÄ™cia.\n" "WiÄ™cej szczegółów można znaleźć w libgphoto2/camlibs/README.jl2005a\n" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "Biblioteka dla aparatów jl2005a\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Ten aparat ma chipset Jeilin JL2005%c.\n" "Liczba zdjęć w nim wynosi %i.\n" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" "Ten sterownik obsÅ‚uguje aparaty z ukÅ‚adem Jeilin JL2005B, C i D.\n" "Aparaty te nie obsÅ‚ugujÄ… usuwania zdjęć ani przesyÅ‚ania danych do\n" "aparatu.\n" "JeÅ›li zostanÄ… znalezione w aparacie klatki filmów, sÄ… Å›ciÄ…gane\n" "jako kolejne nieruchome zdjÄ™cia.\n" "WiÄ™cej szczegółów można znaleźć w libgphoto2/camlibs/README.jl2005c\n" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "Biblioteka dla aparatów jl2005bcd\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "Karta CompactFlash" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "Aparat Kodak DC120 używa formatu plików KDC do przechowywania obrazów. Aby " "oglÄ…dać obrazy Å›ciÄ…gniÄ™te z aparatu, potrzebny jest program \"kdc2tiff\". " "Jest on dostÄ™pny pod http://kdc2tiff.sourceforge.net" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Biblioteka dla aparatów Kodak DC120\n" "Scott Fritzinger \n" "(na ogólne zapotrzebowanie)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Pobieranie danych..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "Oczekiwanie na zakoÅ„czenie..." #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Plik" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Rodzaj pliku" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Rozdzielczość pliku" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Kompresja pliku" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Niska (najlepsza jakość)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Åšrednia (lepsza jakość)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "Wysoka (dobra jakość)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "ZdjÄ™cia" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Kompensacja ekspozycji" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Auto" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Wymuszenie" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Brak" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Flesz z redukcjÄ… czerwonych oczu" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Włączono" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Wyłączono" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Inne" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Ustawienie zegara w aparacie" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "PrÄ™dkość portu" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Nazwa albumu" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Nazwa do ustawienia na karcie przy formatowaniu." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "Formatowanie karty compact flash" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Formatowanie karty i ustawienie nazwy albumu." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Diagnostyka" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Wykonanie predefiniowanego polecenia\n" "z wartoÅ›ciami parametrów." #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "Zdjęć w aparacie: %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" "Jest miejsce na kolejne\n" " %d nisko skompresowanych\n" " %d Å›rednio skompresowanych lub\n" " %d wysoko skompresowanych zdjęć\n" #: camlibs/kodak/dc210/dc210.c:506 #, c-format msgid "Total pictures taken: %d\n" msgstr "W sumie wykonano zdjęć: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "W sumie flesza użyto razy: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, c-format msgid "Firmware: %d.%d\n" msgstr "Firmware: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, c-format msgid "Filetype: JPEG (" msgstr "Rodzaj pliku: JPEG (" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "Rodzaj pliku: FlashPix (" #: camlibs/kodak/dc210/dc210.c:527 #, c-format msgid "low compression, " msgstr "niska kompresja, " #: camlibs/kodak/dc210/dc210.c:529 #, c-format msgid "medium compression, " msgstr "Å›rednia kompresja, " #: camlibs/kodak/dc210/dc210.c:531 #, c-format msgid "high compression, " msgstr "wysoka kompresja, " #: camlibs/kodak/dc210/dc210.c:533 #, c-format msgid "unknown compression %d, " msgstr "nieznana kompresja %d, " #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "nieznana rozdzielczość %d)\n" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "Zasilacz AC jest podłączony.\n" #: camlibs/kodak/dc210/dc210.c:558 #, c-format msgid "AC adapter is not connected.\n" msgstr "Zasilacz AC nie jest podłączony.\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "Czas: %a, %d %b %Y %T\n" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "PowiÄ™kszenie: 58 mm\n" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "PowiÄ™kszenie: 51 mm\n" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "PowiÄ™kszenie: 41 mm\n" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "PowiÄ™kszenie: 34 mm\n" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "PowiÄ™kszenie: 29 mm\n" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "PowiÄ™kszenie: makro\n" #: camlibs/kodak/dc210/dc210.c:580 #, c-format msgid "Unknown zoom mode %d\n" msgstr "Nieznany tryb powiÄ™kszenia %d\n" #: camlibs/kodak/dc210/dc210.c:586 #, c-format msgid "Exposure compensation: %s\n" msgstr "Kompensacja ekspozycji: %s\n" #: camlibs/kodak/dc210/dc210.c:588 #, c-format msgid "Exposure compensation: %d\n" msgstr "Kompensacja ekspozycji: %d\n" #: camlibs/kodak/dc210/dc210.c:593 #, c-format msgid "Flash mode: auto, " msgstr "Tryb flesza: auto, " #: camlibs/kodak/dc210/dc210.c:595 #, c-format msgid "Flash mode: force, " msgstr "Tryb flesza: wymuszony, " #: camlibs/kodak/dc210/dc210.c:597 #, c-format msgid "Flash mode: off\n" msgstr "Tryb flesza: wyłączony\n" #: camlibs/kodak/dc210/dc210.c:599 #, c-format msgid "Unknown flash mode %d, " msgstr "Nieznany tryb flesza %d, " #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "redukcja czerwonych oczu włączona.\n" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "redukcja czerwonych oczu wyłączona.\n" #: camlibs/kodak/dc210/dc210.c:615 #, c-format msgid "No card in camera.\n" msgstr "Brak karty w aparacie.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" "Nazwa karty: %s\n" "Wolne miejsce na karcie: %d kB\n" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "Ta biblioteka byÅ‚a testowana z aparatem Kodak DC 215 Zoom. Może dziaÅ‚ać " "także z aparatami DC 200 i DC 210. JeÅ›li masz taki aparat, wyÅ›lij wiadomość " "na adres koltan@gmx.de aby zawiadomić autora, czy byÅ‚y jakieÅ› problemy z tym " "sterownikiem, czy wszystko byÅ‚o w porzÄ…dku." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Biblioteka dla aparatów Kodak DC215.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "Oczekiwanie..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Parametr 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Parametr 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Parametr 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Model: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "Wersja firmware'u: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Stan baterii: %s, zasilacz AC: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "Liczba zdjęć: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "PozostaÅ‚e miejsce: wysoka: %d, Å›rednia: %d, niska: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "Stan karty pamiÄ™ci (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "W sumie wykonano zdjęć: %d, flesza użyto razy: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Biblioteka dla aparatów Kodak DC240\n" "Scott Fritzinger i Hubert Figuiere \n" "Biblioteka dla aparatów Kodak DC240, DC280, DC3400 i DC5000.\n" "Przepisano i uaktualniono dla gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "SÅ‚abe" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Puste" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "NieprawidÅ‚owy" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Nie używany" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "Używany" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "Karta otwarta" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "Karta nie otwarta" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "Karta nie sformatowana" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Brak karty" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "Aktualnie wykonuje siÄ™ jakaÅ› operacja. Ten aparat obsÅ‚uguje tylko jednÄ… " "operacjÄ™ w danej chwili. ProszÄ™ poczekać na zakoÅ„czenie bieżącej operacji." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "aparat nieaktywny przez > 9 sekund, ponowna inicjalizacja.\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Znane problemy:\n" "\n" "1. JeÅ›li Kodak DC3200 nie otrzyma polecenia przynajmniej co każde 10 sekund, " "wyczerpie siÄ™ limit czasu i bÄ™dzie musiaÅ‚ być ponownie inicjalizowany. JeÅ›li " "aparat nie bÄ™dzie odpowiadaÅ‚, wystarczy ponownie wybrać aparat - spowoduje " "to ponownÄ… inicjalizacjÄ™." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Sterownik do aparatów Kodak DC3200\n" "Donn Morrison \n" "\n" "Pytania i komentarze mile widziane." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "Aparat USB to Kodak EZ200.\n" "Liczba zdjęć = %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "Sterownik Kodak EZ200\n" "Bucas Jean-Francois \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Błąd ogniskowania." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Błąd Iris." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Błąd bramki." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "Błąd sumy kontrolnej EEPROM-u." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "Błąd wewnÄ™trzny (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "Błąd wewnÄ™trzny (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Karta nie wÅ‚ożona." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "Karta nie obsÅ‚ugiwana." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "Karta usuniÄ™ta podczas dostÄ™pu." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Liczba obrazów nieprawidÅ‚owa." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "Zapis na kartÄ™ niemożliwy." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "Karta jest zabezpieczona przed zapisem." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "Nie ma miejsca na karcie." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Obraz zabezpieczony." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "OÅ›wietlenie zbyt ciemne." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Błąd autofocusu." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Błąd systemowy." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Niedozwolony parametr." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "Polecenie nie może być przerwane." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Dane lokalizacyjne zbyt dÅ‚ugie." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Dane lokalizacyjne uszkodzone." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "NieobsÅ‚ugiwane polecenie." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "Wykonywane jest inne polecenie." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Błąd kolejnoÅ›ci poleceÅ„." #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Nieznany błąd." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "Aparat wysÅ‚aÅ‚ wÅ‚aÅ›nie błąd, który nie zostaÅ‚ jeszcze odkryty. ProszÄ™ zgÅ‚osić " "nastÄ™pujÄ…cy raport na adres %s z dodatkowymi informacjami jak uzyskano ten " "błąd: (0x%x,0x%x). Z góry dziÄ™kujÄ™!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Pobieranie listy plików..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "Testowanie różnych prÄ™dkoÅ›ci..." #: camlibs/konica/library.c:338 msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "Nie udaÅ‚o siÄ™ skontaktować z aparatem. ProszÄ™ upewnić siÄ™, że jest " "podłączony do komputera i włączony." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "%i obrazów nie udaÅ‚o siÄ™ usunąć ponieważ sÄ… zabezpieczone" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Model: %s\n" "Numer seryjny: %s,\n" "Wersja sprzÄ™tu: %i.%i\n" "Wersja oprogramowania: %i.%i\n" "Wersja oprogramowania testowego: %i.%i\n" "Nazwa: %s,\n" "Producent: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Biblioteka Konica\n" "Lutz Mueller \n" "ObsÅ‚uga wszystkich aparatów Konica i niektórych HP." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Pobieranie konfiguracji..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Konfiguracja Konica" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Ustawienia zachowywane" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "Czy aparat ma piszczeć przy robieniu zdjÄ™cia?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Czas samowyzwalacza" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Czas automatycznego wyłączania" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "OdstÄ™p miÄ™dzy pokazywanymi slajdami" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Rozdzielczość" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Niska (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Åšrednia (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Wysoka (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Lokalizacja" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "JÄ™zyk" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Nie wybrano" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "Format wyjÅ›cia TV" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "Nie wyÅ›wietlanie menu TV" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Format daty" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "MiesiÄ…c/DzieÅ„/Rok" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "DzieÅ„/MiesiÄ…c/Rok" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Rok/MiesiÄ…c/DzieÅ„" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Ustawienia staÅ‚e dla sesji" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Włączony, redukcja czerwonych oczu" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Automatyczny, redukcja czerwonych oczu" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Ogniskowa" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "StaÅ‚a" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Ustawienia ulotne" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "Samowyzwalacz" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "Samowyzwalacz (tylko dla nastÄ™pnego zdjÄ™cia)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "ZwykÅ‚y" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Nie udaÅ‚o siÄ™ odnaleźć danych lokalizacji pod '%s'" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "Plik lokalizacji zbyt dÅ‚ugi!" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "Ten podglÄ…d nie istnieje." #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "Dane zostaÅ‚y uszkodzone." #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "Typ obrazu %d nie jest obsÅ‚ugiwany przez ten aparat!" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "Nie można usunąć obrazu %s." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "Nie można usunąć wszystkich obrazów." #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "PrzesyÅ‚anie obrazu do aparatu..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "Nie można przesÅ‚ać tego obrazu do aparatu. WystÄ…piÅ‚ błąd." #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "Do wykonywania zdjęć musi być włączony tryb nagrywania." #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" "Brak wolnego miejsca aby zrobić nowe zdjÄ™cie. Trzeba usunąć trochÄ™ obrazów." #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "Nie można zrobić zdjÄ™cia. Nieznany błąd" #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "Brak odpowiedzi od aparatu." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Niska" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Åšrednia" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Wysoka" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Ikony" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "2.0 m" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "0.5 m" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "0.1 m" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Balans bieli" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "Biuro" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "ÅšwiatÅ‚o dzienne" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "Ostrość" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "Ostra" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "MiÄ™kka" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "Kolor" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "Jasny" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "Głęboki" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "Czarno-biaÅ‚y" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "Pojedyncze" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "Sekwencja 9" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "WyÅ›wietlanie daty" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "Nigdy" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "W trybie odtwarzania" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "W trybie nagrywania" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "Zawsze" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "AC" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "Odtwarzanie" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Nagrywanie" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "DD/MM/RRRR" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "RRRR/MM/DD" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "MM/DD/RRRR" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Model: %s\n" "Pojemność: %i Mb\n" "Zasilanie: %s\n" "Czas automatycznego wyłączania: %i min\n" "Tryb: %s\n" "Obrazy: %i/%i\n" "WyÅ›wietlanie daty: %s\n" "Data i czas: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Biblioteka Konica Q-M150\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "ObsÅ‚uga francuskich aparatów Konica Q-M150." #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "O aparacie Konica Q-M150:\n" "Ten aparat nie pozwala wykonywać żadnych zmian z zewnÄ…trz.\n" "Tak wiÄ™c w konfiguracji można tylko oglÄ…dać jak jest\n" "skonfigurowany aparat, ale nie można niczego zmienić.\n" "\n" "W przypadku problemów z tym sterownikiem proszÄ™ pisać\n" "na adres autorów tego sterownika.\n" #: camlibs/largan/lmini/largan.c:228 msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Sterownik Largan\n" "Hubert Figuiere \n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" "Aparat USB wyglÄ…da na LG GSM.\n" "Firmware: %s\n" "Wersja firmware'u: %s\n" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" "Ogólny sterownik LG GSM\n" "Guillaume Bedot \n" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Aparat Mars MR97310.\n" "Zawiera %i zdjÄ™cie.\n" msgstr[1] "" "Aparat Mars MR97310.\n" "Zawiera %i zdjÄ™cia.\n" msgstr[2] "" "Aparat Mars MR97310.\n" "Zawiera %i zdjęć.\n" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" "Ten sterownik obsÅ‚uguje aparaty z ukÅ‚adem Mars MR97310 (i bezpoÅ›rednie\n" "odpowiedniki ??Pixart PACx07??).\n" "Aparaty te nie obsÅ‚ugujÄ… usuwania zdjęć ani przesyÅ‚ania danych do\n" "aparatu.\n" "Dekodowanie skompresowanych zdjęć może nie dziaÅ‚ać dobrze i nie\n" "dziaÅ‚a tak samo dobrze dla wszystkich obsÅ‚ugiwanych aparatów.\n" "Przetwarzanie danych zdjęć z aparatu Argus QuickClix NIE JEST\n" "OBSÅUGIWANE.\n" "JeÅ›li zostanÄ… znalezione w aparacie klatki filmów, sÄ… Å›ciÄ…gane\n" "jako kolejne nieruchome zdjÄ™cia.\n" "WiÄ™cej szczegółów można znaleźć w libgphoto2/camlibs/README.\n" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "Biblioteka dla aparatów Mars MR97310\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Wersja sprzÄ™tu:\t%s\n" "Wersja firmware'u:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Tryb hosta: %s\n" "Korekcja ekspozycji: %s\n" "Dane ekspozycji: %d\n" "Poprawność daty: %s\n" "Data: %d/%02d/%02d %02d:%02d:%02d\n" "Samowyzwalacz ustawiony: %s\n" "Ustawienie jakoÅ›ci: %s\n" "Tryb odtwarzanie/nagrywanie: %s\n" "Poprawność ID karty: %s\n" "ID karty: %d\n" "Tryb flesza: " #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Zdalny" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Lokalny" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Tak" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "Nie" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Dobra" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Normalna" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Auto\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Wymuszenie flesza\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Zakazanie flesza\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Niepoprawna wartość (%d)\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "Poziom baterii: %s\n" "Liczba obrazów: %d\n" "Minimalna pozostaÅ‚a pojemność: %d\n" "ZajÄ™tość: %s\n" "Åadowanie flesza: %s\n" "Stan obiektywu: " #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "NiepeÅ‚ne" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "PeÅ‚ne" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "ZajÄ™ty" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "Wolny" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "Åadowany" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Gotowy" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Normalny\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "Kierunek obiektywu nie zgadza siÄ™ ze Å›wiatÅ‚em flesza\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "Obiektyw nie podłączony\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "ZÅ‚a wartość stanu obiektywu %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "Stan karty: " #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Zabezpieczona przed zapisem" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "NiepasujÄ…ca" #: camlibs/minolta/dimagev/dimagev.c:406 #, c-format msgid "Bad value for card status %d" msgstr "ZÅ‚a wartość stanu karty %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Biblioteka dla aparatów Minolta Dimage V\n" "%s\n" "Gus Hartmann \n" "Specjalne podziÄ™kowania dla Minolty za specyfikacjÄ™." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Flesz : Auto (redukcja czerwonych oczu)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Flesz : Auto" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Flesz : Włączony (redukcja czerwonych oczu)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Flesz : Włączony" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Flesz : Wyłączony" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Flesz : nieokreÅ›lony" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Opis aparatu Mustek MDC800:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "stan nie zgÅ‚oszony." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "Wykryto kartÄ™ Compact Flash\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Nie wykryto karty Compact Flash\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "Bieżący tryb: tryb aparatu\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Bieżący tryb: tryb odtwarzania\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Baterie sÄ… w porzÄ…dku." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Baterie sÄ… na wyczerpaniu" #: camlibs/mustek/mdc800.c:264 msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Biblioteka gPhoto2 Mustek MDC-800\n" "Henning Zabel \n" "Do gphoto2 sportowaÅ‚ Marcus Meissner \n" "ObsÅ‚uguje protokół szeregowy i USB." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "biblioteka coolshot v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Odłączanie aparatu." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "ÅšciÄ…ganie obrazu %s." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "PrzesyÅ‚anie obrazu do aparatu: %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "Rozmiar pliku to %ld bajtów. Rozmiar najwiÄ™kszego możliwego pliku, jaki da " "siÄ™ przesÅ‚ać to %i bajtów." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "PrzesyÅ‚anie..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "Usuwanie obrazu %s." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Biblioteka gPhoto Panasonic DC1000\n" "Mariusz Zynel \n" "\n" "Oparto na programie dc1000, który napisali\n" "Fredrik Roubert \n" "i Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "ÅšciÄ…ganie %s." #: camlibs/panasonic/dc1580.c:627 msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Biblioteka gPhoto Panasonic DC1580\n" "Mariusz Zynel \n" "\n" "Oparto na programie dc1000, który napisali\n" "Fredrik Roubert \n" "i Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "ÅšciÄ…ganie '%s'..." #: camlibs/panasonic/l859/l859.c:582 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic przedstawiÅ‚ technologiÄ™ robienia zdjęć PHOTOSHOT po raz pierwszy w " "tej serii Palmcorderów. Obrazy sÄ… przechowywane w formacie JPEG na " "wewnÄ™trznej karcie flash i mogÄ… być przesyÅ‚ane do komputera przez wbudowany " "port szeregowy. Obrazy sÄ… zapisywane w jednej z dwóch rozdzielczoÅ›ci: NORMAL " "(320x240) i FINE (640x480). UrzÄ…dzenie CCD odczytujÄ…ce obraz z obiektywu ma " "tylko 300K punktów, wiÄ™c jest w stanie tworzyć tylko zdjÄ™cia niskiej jakoÅ›ci." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Znane problemy:\n" "\n" "JeÅ›li wystÄ…piÄ… problemy z komunikacjÄ…, należy zresetować aparat i " "zrestartować aplikacjÄ™. Sterownik nie potrafi jeszcze wyjść z tych sytuacji, " "zwÅ‚aszcza jeÅ›li wystÄ…pi problem, a aparat nie zostanie wÅ‚aÅ›ciwie wyłączony " "przy prÄ™dkoÅ›ciach wiÄ™kszych niż 9600." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Sterownik do urzÄ…dzeÅ„ Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " CaÅ‚kowita pamięć to %8d bajtów.\n" " Wolna pamięć to %8d bajtów.\n" " Liczba plików: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" " Autorzy: Till Adam\n" "\n" "i Miah Gregory\n" " " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "ÅšciÄ…ganie pliku..." #: camlibs/pccam600/library.c:249 msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" "Autor: Peter Kajberg \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "pccam600_init: Oczekiwano > %d bloków, otrzymano %d" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "pccam600_get_file: otrzymano indeks %d, ale oczekiwano > %d" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "pccam600_close: zwrócono wartość %d zamiast %d" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "pccam600_init: Oczekiwano %d bloków, otrzymano %d" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "pccam600 init: Nieoczekiwany błąd: gp_port_read zwróciÅ‚o %d zamiast %d" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Program do Å›ciÄ…gania zdjęć dla kilku aparatów Polaroid. Oryginalnie napisaÅ‚ " "go Peter Desnoyers , do gphoto2 zaadaptowali " "Nathan Stenzel i Lutz Mueller " ".\n" "Testowanie Polaroida 640SE wykonaÅ‚ Michael Golden ." #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Model: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "Program do Å›ciÄ…gania zdjęć dla aparatów opartych o GrandTek 98x. Oryginalnie " "napisaÅ‚ go Chris Byrne , do gphoto2 zaadaptowaÅ‚ Lutz " "Mueller . Rozszerzenia protokoÅ‚u i postprocessing dla " "aparatów Jenoptik JD350e napisaÅ‚ Michael Trawny . Poprawek błędów dokonaÅ‚ Marcus Meissner ." #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "Jakość obrazu" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Rozmiar obrazu" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Ustawienie flesza" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Automatyczne wyłączanie (w minutach)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Informacje" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "normalna" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "dobra" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "bardzo dobra" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "auto" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "włączono" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "wyłączono" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "odtwarzanie" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "nagrywanie" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "menu" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "bateria" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "zasilacz AC" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Odebrano nieoczekiwany nagłówek (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Odebrano nieoczekiwanÄ… odpowiedź" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Błąd sumy kontrolnej" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "Aparat nie przyjÄ…Å‚ polecenia." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "Aparat wysÅ‚aÅ‚ wiÄ™cej bajtów niż oczekiwano (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "Żądano informacji o zdjÄ™ciu %i (= 0x%x), ale otrzymano informacje o zdjÄ™ciu " "%i" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "Odebrano %i bajtów w nieznanym formacie obrazu. ProszÄ™ napisać pod %s z " "proÅ›bÄ… o pomoc." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Program do Å›ciÄ…gania zdjęć dla aparatów Polaroid DC700. Oryginalnie napisaÅ‚ " "go Ryan Lantzer dla gphoto-4.x. Do gphoto2 zaadaptowaÅ‚ " "Lutz Mueller ." #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Aparat" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "Jak dÅ‚ugo aparat ma czekać przed wyłączeniem?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Obraz" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Data: %i/%02i/%02i %02i:%02i:%02i\n" "Wykonano zdjęć: %i\n" "Wolne zdjÄ™cia: %i\n" "Wersja oprogramowania: %s\n" "PrÄ™dkość: %s\n" "Pamięć: %i megabajtów\n" "Tryb aparatu: %s\n" "Jakość obrazu: %s\n" "Ustawienie flesza: %s\n" "Informacje: %s\n" "Zegar: %s\n" "LCD: %s\n" "Automatyczne wyłączanie: %i minut\n" "ŹródÅ‚o zasilania: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "Żądany rodzaj portu (%i) nie jest obsÅ‚ugiwany przez ten sterownik." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "CHDK nie opuÅ›ciÅ‚ trybu nagrywania." #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Niestety ten aparat Canon nie obsÅ‚uguje funkcji Canon capture" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, c-format msgid "Unknown value %04x" msgstr "Nieznana wartość %04x" #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, c-format msgid "Unknown value %04d" msgstr "Nieznana wartość %04d" #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "nieoczekiwany typ danych %i" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "Wartość spoza zbioru." #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "RÄ™czny" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 msgid "Automatic" msgstr "Automatyczny" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 msgid "One-push Automatic" msgstr "Automatyczny One-push" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "ÅšwiatÅ‚o fluorescencyjne" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Å»arówka wolframowa" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Pochmurno" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "CieÅ„" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "Temperatura koloru" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "Predefiniowany" #: camlibs/ptp2/config.c:1415 msgid "Fluorescent Lamp 1" msgstr "ÅšwiatÅ‚o fluorescencyjne 1" #: camlibs/ptp2/config.c:1416 msgid "Fluorescent Lamp 2" msgstr "ÅšwiatÅ‚o fluorescencyjne 2" #: camlibs/ptp2/config.c:1417 msgid "Fluorescent Lamp 3" msgstr "ÅšwiatÅ‚o fluorescencyjne 3" #: camlibs/ptp2/config.c:1418 msgid "Fluorescent Lamp 4" msgstr "ÅšwiatÅ‚o fluorescencyjne 4" #: camlibs/ptp2/config.c:1419 msgid "Fluorescent Lamp 5" msgstr "ÅšwiatÅ‚o fluorescencyjne 5" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "Wybór temperatury koloru" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "WÅ‚asna predefiniowana 1" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "WÅ‚asna predefiniowana 2" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "WÅ‚asna predefiniowana 3" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "WÅ‚asna predefiniowana 4" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "WÅ‚asna predefiniowana 5" #: camlibs/ptp2/config.c:1430 msgid "Fluorescent: Warm White" msgstr "Fluorescencyjne: ciepÅ‚a biel" #: camlibs/ptp2/config.c:1431 msgid "Fluorescent: Cold White" msgstr "Fluorescencyjne: zimna biel" #: camlibs/ptp2/config.c:1432 msgid "Fluorescent: Day White" msgstr "Fluorescencyjne: dzienna biel 1" #: camlibs/ptp2/config.c:1433 msgid "Fluorescent: Daylight" msgstr "Fluorescencyjne: Å›wiatÅ‚o dzienne" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 msgid "JPEG Fine" msgstr "Dobry JPEG" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 msgid "JPEG Normal" msgstr "Normalny JPEG" #: camlibs/ptp2/config.c:1443 msgid "RAW + JPEG Fine" msgstr "RAW + JPEG dobrej jakoÅ›ci" #: camlibs/ptp2/config.c:1444 msgid "RAW + JPEG Normal" msgstr "RAW + JPEG normalnej jakoÅ›ci" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "Pojedyncza klatka" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "CiÄ…gÅ‚y o maÅ‚ej szybkoÅ›ci" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "CiÄ…gÅ‚y o dużej szybkoÅ›ci" #: camlibs/ptp2/config.c:1452 msgid "Self-timer" msgstr "Samowyzwalacz" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "Lustro podniesione" #: camlibs/ptp2/config.c:1735 msgid "undefined" msgstr "nieokreÅ›lony" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "ekonomiczny" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "bezstratny" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 msgid "Undefined" msgstr "Niezdefiniowany" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "CRW" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "TV" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "AV" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "A_DEP" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "M_DEP" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "DEP" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "WÅ‚asne" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "Blokada" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "Nocny portret" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "Sporty" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "Pejzaż" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "Zbliżenie" #: camlibs/ptp2/config.c:1780 msgid "Flash Off" msgstr "Flesz wyłączony" #: camlibs/ptp2/config.c:1788 msgid "red eye suppression" msgstr "redukcja czerwonych oczu" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "wypeÅ‚niajÄ…cy" #: camlibs/ptp2/config.c:1790 msgid "auto + red eye suppression" msgstr "automatyczny, redukcja czerwonych oczu" #: camlibs/ptp2/config.c:1791 msgid "on + red eye suppression" msgstr "włączony, redukcja czerwonych oczu" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "iTTL" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 msgid "Commander" msgstr "Commander" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "Powtarzalny" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "TTL" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 msgid "Auto Aperture" msgstr "PrzysÅ‚ona automatyczna" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 msgid "Full Manual" msgstr "CaÅ‚kowicie rÄ™czny" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "AF-S" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "AF-C" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "AF-A" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 msgid "MF (fixed)" msgstr "MF (staÅ‚a)" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "MF (wybór)" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "centralnie ważony" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "Åšrednia" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "Szacowany" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "Częściowy" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "Åšrednia centralnie ważona" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "Pomiar punktowy powiÄ…zany z ramkÄ… AF" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "Wielopunktowy" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "DokÅ‚adny" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "Monochromatyczny" #: camlibs/ptp2/config.c:1947 msgid "User defined 1" msgstr "Zdefiniowany przez użytkownika 1" #: camlibs/ptp2/config.c:1948 msgid "User defined 2" msgstr "Zdefiniowany przez użytkownika 2" #: camlibs/ptp2/config.c:1949 msgid "User defined 3" msgstr "Zdefiniowany przez użytkownika 3" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "Punkt ogniskowania tylko poÅ›rodku, rÄ™czny" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "Punkt ogniskowania tylko poÅ›rodku, automatyczny" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "Wiele punktów ogniskowania (bez okreÅ›lenia), rÄ™czny" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 msgid "Multiple Focusing Points, Auto" msgstr "Wiele punktów ogniskowania, automatyczny" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 msgid "Multiple Focusing Points (Right)" msgstr "Wiele punktów ogniskowania (prawo)" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "Wiele punktów ogniskowania (Å›rodek)" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 msgid "Multiple Focusing Points (Left)" msgstr "Wiele punktów ogniskowania (lewo)" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 msgid "Large" msgstr "Duży" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 msgid "Medium 1" msgstr "Åšredni 1" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 msgid "Medium 2" msgstr "Åšredni 2" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 msgid "Medium 3" msgstr "Åšredni 3" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "MaÅ‚y" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "16:9" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "3:2" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "10 sekund" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "2 sekundy" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "TFT" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "PC" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "TFT + PC" #: camlibs/ptp2/config.c:2092 msgid "Setting 4" msgstr "Ustawienie 4" #: camlibs/ptp2/config.c:2093 msgid "Setting 5" msgstr "Ustawienie 5" #: camlibs/ptp2/config.c:2094 msgid "Setting 6" msgstr "Ustawienie 6" #: camlibs/ptp2/config.c:2095 msgid "Setting 7" msgstr "Ustawienie 7" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "Karta" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "WyjÅ›cie obrazu" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, c-format msgid "Unknown %d" msgstr "Nieznany %d" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "Ustawienie fabryczne" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "mRAW" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "sRAW" #: camlibs/ptp2/config.c:2246 #, fuzzy msgid "Smaller JPEG" msgstr "Mniejszy JPEG (S2)" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "Malutki JPEG (S3)" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "mRAW + duży dobry JPEG" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "sRAW + duży dobry JPEG" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "mRAW + Å›redni dobry JPEG" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "sRAW + Å›redni dobry JPEG" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "mRAW + maÅ‚y dobry JPEG" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "sRAW + maÅ‚y dobry JPEG" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "mRAW + duży normalny JPEG" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "sRAW + duży normalny JPEG" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "mRAW + Å›redni normalny JPEG" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "sRAW + Å›redni normalny JPEG" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "mRAW + maÅ‚y normalny JPEG" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "sRAW + maÅ‚y normalny JPEG" #: camlibs/ptp2/config.c:2272 #, fuzzy msgid "RAW + Smaller JPEG" msgstr "RAW + maÅ‚y dobry JPEG (S2)" #: camlibs/ptp2/config.c:2273 #, fuzzy msgid "mRAW + Smaller JPEG" msgstr "mRAW + maÅ‚y dobry JPEG (S2)" #: camlibs/ptp2/config.c:2274 #, fuzzy msgid "sRAW + Smaller JPEG" msgstr "sRAW + maÅ‚y dobry JPEG (S2)" #: camlibs/ptp2/config.c:2275 #, fuzzy msgid "RAW + Tiny JPEG" msgstr "RAW + malutki JPEG (S3)" #: camlibs/ptp2/config.c:2276 #, fuzzy msgid "mRAW + Tiny JPEG" msgstr "mRAW + malutki JPEG (S3)" #: camlibs/ptp2/config.c:2277 #, fuzzy msgid "sRAW + Tiny JPEG" msgstr "sRAW + malutki JPEG (S3)" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "CiÄ…gÅ‚a" #: camlibs/ptp2/config.c:2305 msgid "Timer 10 sec" msgstr "Samowyzwalacz 10 s" #: camlibs/ptp2/config.c:2306 msgid "Timer 2 sec" msgstr "Samowyzwalacz 2 s" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "Pojedyncze ciche" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "CiÄ…gÅ‚e ciche" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, c-format msgid "Auto ISO" msgstr "Automatyczne ISO" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "Wieloklatkowa redukcja szumów przy auto ISO" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, c-format msgid "%d Multi Frame Noise Reduction" msgstr "Wieloklatkowa redukcja szumów %d" #: camlibs/ptp2/config.c:2453 msgid "Multi Frame Noise Reduction" msgstr "Wieloklatkowa redukcja szumów" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Samowyzwalacz" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "%0.4fs" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "%d %d/%d" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "%d/%d" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "%f" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "Twórczy" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "Akcja" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "Nocny pejzaż" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "Dzieci" #: camlibs/ptp2/config.c:2868 msgid "Automatic (No Flash)" msgstr "Automatyczny (bez flesza)" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "Auto inteligentny" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "Auto lepszy" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "Film" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "Tele-zoom staÅ‚y priorytet AE" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "Przesuwana panorama" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "Auto inteligentny bez flesza" #: camlibs/ptp2/config.c:2876 msgid "Sports Action" msgstr "Akcja sportowa" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "Wschód" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "Scena nocna" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "Z rÄ™ki o zmierzchu" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 msgid "Picture Effect" msgstr "Efekt obrazu" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "Nocny pejzaż" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "Impreza/wnÄ™trze" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "Plaża/Å›nieg" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "Zmierzch" #: camlibs/ptp2/config.c:2893 msgid "Pet Portrait" msgstr "Portret zwierzÄ™cia" #: camlibs/ptp2/config.c:2894 msgid "Candlelight" msgstr "ÅšwiatÅ‚o Å›wiecy" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "Kwiecie" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "Barwy jesieni" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "Jedzenie" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "Dziecko" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "Zbliżenie" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "A6400 (160-6400)" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "A3200 (160-3200)" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "A800 (160-800)" #: camlibs/ptp2/config.c:3032 msgid "Flourescent" msgstr "ÅšwiatÅ‚o fluorescencyjne" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "Woda" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "1 EV" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "2 EV" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "3 EV" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "Bardzo duża" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "Scena" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 msgid "Effects" msgstr "Efekty" #: camlibs/ptp2/config.c:3075 msgid "U1" msgstr "U1" #: camlibs/ptp2/config.c:3076 msgid "U2" msgstr "U2" #: camlibs/ptp2/config.c:3104 msgid "Back Light" msgstr "ÅšwiatÅ‚o tylne" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "Panorama" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "WygÅ‚adzanie" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "Pochylenie-przesuniÄ™cie" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "Wybór koloru" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "Pojedyncze zdjÄ™cie" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "Seria" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "Jednostka czasu" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "CiÄ…gÅ‚a maÅ‚a prÄ™dność" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 msgid "Timer" msgstr "Samowyzwalacz" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "Lustro podniesione" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "Pilot z szybkÄ… reakcjÄ…" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 msgid "Delayed Remote" msgstr "Pilot z opóźnieniem" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "Szybkie zwolnienie" #: camlibs/ptp2/config.c:3125 msgid "Selftimer 2s" msgstr "Samowyzwalacz 2s" #: camlibs/ptp2/config.c:3126 msgid "Selftimer 10s" msgstr "Samowyzwalacz 10s" #: camlibs/ptp2/config.c:3127 msgid "Bracketing C 0.3 Steps" msgstr "Kroki bracketingu C 0.3" #: camlibs/ptp2/config.c:3128 msgid "Bracketing C 0.7 Steps" msgstr "Kroki bracketingu C 0.7" #: camlibs/ptp2/config.c:3129 msgid "Bracketing C 1.0 Steps" msgstr "Kroki bracketingu C 1.0" #: camlibs/ptp2/config.c:3130 msgid "Bracketing C 2.0 Steps" msgstr "Kroki bracketingu C 2.0" #: camlibs/ptp2/config.c:3131 msgid "Bracketing C 3.0 Steps" msgstr "Kroki bracketingu C 3.0" #: camlibs/ptp2/config.c:3132 msgid "Bracketing S 0.3 Steps" msgstr "Kroki bracketingu S 0.3" #: camlibs/ptp2/config.c:3133 msgid "Bracketing S 0.7 Steps" msgstr "Kroki bracketingu S 0.7" #: camlibs/ptp2/config.c:3134 msgid "Bracketing S 1.0 Steps" msgstr "Kroki bracketingu S 1.0" #: camlibs/ptp2/config.c:3135 msgid "Bracketing S 2.0 Steps" msgstr "Kroki bracketingu S 2.0" #: camlibs/ptp2/config.c:3136 msgid "Bracketing S 3.0 Steps" msgstr "Kroki bracketingu S 3.0" #: camlibs/ptp2/config.c:3137 msgid "Bracketing WB Lo" msgstr "Bracketing WB Lo" #: camlibs/ptp2/config.c:3138 msgid "Bracketing WB Hi" msgstr "Bracketing WB Hi" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 msgid "Centre-spot" msgstr "Centralny punkt" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "Wielopunktowy" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "Pojedynczy obszar" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "Najbliższy obiekt" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "Dynamiczna grupa" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "AF dla pojedynczego obszaru" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "AF dla dynamicznego obszaru" #: camlibs/ptp2/config.c:3154 #, fuzzy msgid "Group-dynamic AF" msgstr "AF dla dynamicznej grupy" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "AF dla dynamicznego obszaru z priorytetem najbliższego obiektu" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "Obszar dynamiczny (9)" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "Obszar dynamiczny (21)" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "Obszar dynamiczny (51)" #: camlibs/ptp2/config.c:3165 msgid "3D Tracking" msgstr "Åšledzenie 3D" #: camlibs/ptp2/config.c:3171 msgid "sRGB (portrait)" msgstr "sRGB (portret)" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "AdobeRGB" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "sRGB (natura)" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "sRGB" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "Nieznana wartość 0x%04x" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 msgid "Centre" msgstr "Åšrodek" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "Góra" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 msgid "Bottom" msgstr "Dół" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "Lewo" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 msgid "Right" msgstr "Prawo" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "Centralnie ważony" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "Wielopunktowy" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "Centralny punkt" #: camlibs/ptp2/config.c:3266 msgid "Automatic Flash" msgstr "Flesz automatyczny" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 msgid "Fill flash" msgstr "Flesz wypeÅ‚niajÄ…cy" #: camlibs/ptp2/config.c:3269 msgid "Red-eye automatic" msgstr "Automatyczna redukcja czerwonych oczu" #: camlibs/ptp2/config.c:3270 msgid "Red-eye fill" msgstr "WypeÅ‚niajÄ…ca redukcja czerwonych oczu" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 msgid "External sync" msgstr "Synchronizacja zewnÄ™trzna" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 msgid "Auto Slow Sync" msgstr "Automatyczna wolna synchronizacja" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "Synchronizacja tylnej migawki + wolna synchronizacja" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 msgid "Red-eye Reduction + Slow Sync" msgstr "Redukcja czerwonych oczu + wolna synchronizacja" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "Synchronizacja z pierwszÄ… kurtynÄ…" #: camlibs/ptp2/config.c:3277 msgid "Red-eye reduction" msgstr "Redukcja czerwonych oczu" #: camlibs/ptp2/config.c:3278 msgid "Red-eye reduction with slow sync" msgstr "Redukcja czerwonych oczu + wolna synchronizacja" #: camlibs/ptp2/config.c:3279 msgid "Slow sync" msgstr "Wolna synchronizacja" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "Wolna synchronizacja z drugÄ… kurtynÄ…" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "Synchronizacja z drugÄ… kurtynÄ…" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "Synchronizacja z drugÄ… kurtynÄ…" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "Synchronizacja bezprzewodowa" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Wolna synchronizacja" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "CzerÅ„ i biel" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "Wizja nocna" #: camlibs/ptp2/config.c:3298 msgid "Color sketch" msgstr "Szkic barwny" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "Efekt miniatury" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "Barwa selektywna" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "Sylwetka" #: camlibs/ptp2/config.c:3302 msgid "High key" msgstr "Klucz wysoki" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "Klucz niski" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 msgid "infinite" msgstr "nieskoÅ„czoność" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "%d mm" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "AF z priorytetem twarzy" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "AF dla szerokiego obszaru" #: camlibs/ptp2/config.c:3772 msgid "Normal-area AF" msgstr "AF dla normalnego obszaru" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "AF Å›ledzÄ…cy przedmiot" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "Pojedynczy AF" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "CiÄ…gÅ‚y AF" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 msgid "Manual Focus" msgstr "RÄ™czna ogniskowa" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 msgid "AE/AF Lock" msgstr "Blokada AE/AF" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "Blokada AE" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "Blokada AF" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "Utrzymanie blokady AF" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "AF włączony" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "Blokada poziomu flesza" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "20 sekund" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 msgid "1 minute" msgstr "1 minuta" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "5 minut" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 msgid "10 minutes" msgstr "10 minut" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "5 sekund" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "SDRAM" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "6 mm" #: camlibs/ptp2/config.c:3828 msgid "8 mm" msgstr "8 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "10 mm" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "12 mm" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "1/60" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "1/30" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "1/15" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "1/8" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "1/4" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "1/2" #: camlibs/ptp2/config.c:3842 msgid "1" msgstr "1" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 msgid "2" msgstr "2" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 msgid "4" msgstr "4" #: camlibs/ptp2/config.c:3845 msgid "8" msgstr "8" #: camlibs/ptp2/config.c:3846 msgid "15" msgstr "15" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "30" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "bulb" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "30 s" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "25 s" #: camlibs/ptp2/config.c:3855 msgid "20s" msgstr "20 s" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 msgid "15s" msgstr "15 s" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "13 s" #: camlibs/ptp2/config.c:3858 msgid "10s" msgstr "10 s" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "8 s" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "6 s" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "5 s" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "4 s" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "3 s" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "2.5 s" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "2 s" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "1.6 s" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "1.3 s" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "1 s" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "1/1.3 s" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "1/1.6 s" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "1/2 s" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "1/2.5 s" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "1/3 s" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "1/4 s" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "1/5 s" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "1/6 s" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "1/8 s" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "1/10 s" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "1/13 s" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "1/15 s" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "1/20 s" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "1/25 s" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "1/30 s" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "1/40 s" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "1/50 s" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "1/60 s" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "1/80 s" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "1/100 s" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "1/125 s" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "1/160 s" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "1/200 s" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "1/250 s" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "1/320 s" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "1/400 s" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "1/500 s" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "1/640 s" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "1/800 s" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "1/1000 s" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "1/1250 s" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "1/1600 s" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "1/2000 s" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "1/2500 s" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "1/3200 s" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "1/4000 s" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "1/5000 s" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "1/6400 s" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "1/8000 s" #: camlibs/ptp2/config.c:3916 msgid "15 minutes" msgstr "15 minut" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 msgid "Sharper" msgstr "Ostrzej" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "Åagodniej" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 msgid "Direct Print" msgstr "BezpoÅ›redni wydruk" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 msgid "Medium Low" msgstr "Åšrednio niski" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 msgid "Medium high" msgstr "Åšrednio wysoki" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 msgid "Low contrast" msgstr "Kontrast" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 msgid "Medium High" msgstr "Åšrednio wysoki" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "Wysoka kontrola" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "Ogniskowanie strefowe (zbliżenie)" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "Ogniskowanie strefowe (bardzo bliskie)" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "Ogniskowanie strefowe (bliskie)" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "Ogniskowanie strefowe (Å›rednie)" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "Ogniskowanie strefowe (dalekie)" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "Ogniskowanie strefowe (zarezerwowane 1)" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "Ogniskowanie strefowe (zarezerwowane 2)" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "Ogniskowanie strefowe (zarezerwowane 3)" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "Ogniskowanie strefowe (zarezerwowane 4)" #: camlibs/ptp2/config.c:3976 msgid "Automatic Macro" msgstr "Automatyczny makro" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "Pojedynczy AF" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "CiÄ…gÅ‚y AF" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "Pojedyncze zdjÄ™cie" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "Serwo AI" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 msgid "AI Focus" msgstr "AI Focus" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "4 sekundy" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "8 sekund" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "Wstrzymanie" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 msgid "Fluorescent H" msgstr "ÅšwiatÅ‚o fluorescencyjne H" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 msgid "Custom Whitebalance PC-1" msgstr "Balans bieli wÅ‚asny PC-1" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 msgid "Custom Whitebalance PC-2" msgstr "Balans bieli wÅ‚asny PC-2" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 msgid "Custom Whitebalance PC-3" msgstr "Balans bieli wÅ‚asny PC-3" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "Brak liczby" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "CieÅ„" #: camlibs/ptp2/config.c:4118 msgid "Low sharpening" msgstr "Niskie wyostrzenie" #: camlibs/ptp2/config.c:4120 msgid "Black & white" msgstr "CzerÅ„ i biel" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 msgid "AE & Flash" msgstr "AE i flesz" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 msgid "AE only" msgstr "tylko AE" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 msgid "Flash only" msgstr "Tylko flesz" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 msgid "WB bracketing" msgstr "Bracketing WB" #: camlibs/ptp2/config.c:4221 msgid "ADL bracketing" msgstr "Bracketing ADL" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "Przy włączaniu" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "Przy wyłączaniu" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "Przy włączaniu i wyłączaniu" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "50 Hz" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "60 Hz" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "Szybka reakcja" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 msgid "Remote Mirror Up" msgstr "Lustro podniesione zdalnie" #: camlibs/ptp2/config.c:4248 msgid "Application Mode 0" msgstr "Tryb aplikacji 0" #: camlibs/ptp2/config.c:4249 msgid "Application Mode 1" msgstr "Tryb aplikacji 1" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "Umiarkowany" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "Rozszerzony" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "MTR > Pod" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "Pod > MTR" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "CzuÅ‚ość automatyczna" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "CzuÅ‚ość wysoka" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "CzuÅ‚ość Å›rednia" #: camlibs/ptp2/config.c:4286 msgid "Low sensitivity" msgstr "CzuÅ‚ość niska" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "Mikrofon wyłączony" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "Hi 1" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "Hi 2" #: camlibs/ptp2/config.c:4378 msgid "Flash/speed" msgstr "Flesz/szybkość" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "Flesz/szybkość/przysÅ‚ona" #: camlibs/ptp2/config.c:4380 msgid "Flash/aperture" msgstr "Flesz/przysÅ‚ona" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "Podstawowy JPEG" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 msgid "NEF+Fine" msgstr "NEF+Dobra" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "NEF (Surowy)" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "NEF+Podstawowa" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 msgid "NEF+Normal" msgstr "NEF+ZwykÅ‚a" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "TIFF (RGB)" #: camlibs/ptp2/config.c:4575 msgid "RAW+JPEG" msgstr "RAW+JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "6 sekund" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "16 sekund" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "30 sekund" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "30 minut" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "Bezstratna" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "Stratna" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "Priorytet rozmiaru" #: camlibs/ptp2/config.c:4642 msgid "Optimal quality" msgstr "Optymalna jakość" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "1/250s (Auto FP)" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "1/320s (Auto FP)" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "Zwolnienie" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "Zwolnienie + ogniskowanie" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "9 punktów" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "21 punktów" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "51 punktów" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "51 punktów (3D)" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "5 (dÅ‚uga)" #: camlibs/ptp2/config.c:4695 msgid "3 (Normal)" msgstr "3 (zwykÅ‚a)" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "1 (krótka)" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "Migawka/AF-ON" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "AF-ON" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "AF51" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "AF11" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "Blokada AE/AF" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "Blokada tylko AE" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "Blokada AE (wyłączenie przy zwolnieniu)" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "Blokada AE (utrzymanie)" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "Blokada tylko AF" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "4 fps" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "3 fps" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "2 fps" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "1 fps" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "6 fps" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "5 fps" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "9 fps" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "8 fps" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "7 fps" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "11 fps" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "10 fps" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "Bez przypisania" #: camlibs/ptp2/config.c:4780 msgid "Preview" msgstr "PodglÄ…d" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "Blokada FV" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "Blokada AE (utrzymanie)" #: camlibs/ptp2/config.c:4788 msgid "Bracketing burst" msgstr "Seria z bracketingiem" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "Pomiar macierzowy" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "Pomiar centralnie ważony" #: camlibs/ptp2/config.c:4791 msgid "Spot metering" msgstr "Pomiar punktowy" #: camlibs/ptp2/config.c:4792 msgid "Playback" msgstr "Odtwarzanie" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "DostÄ™p do górnego elementu MOJEGO MENU" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "+NEF (surowy)" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "Siatka" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "Aktywne D-Lighting" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "1 krok migawki/przysÅ‚ony" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "Wybór nieautomatycznego obiektywu" #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "Wirtualny horyzont Viewfindera" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "RozpoczÄ™cie nagrywania filmu" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "Włączone (poza ocenÄ… zdjÄ™cia)" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "50%" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "100%" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "75%" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "25%" #: camlibs/ptp2/config.c:4871 msgid "Unknown value" msgstr "Nieznana wartość" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "Funkcja Nikona changeafarea dziaÅ‚a tylko w trybie LiveView." #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "NapÄ™d autofocus Nikona nie ustawiÅ‚ ostroÅ›ci." #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "RÄ™czne ogniskowanie Nikona dziaÅ‚a tylko w trybie LiveView." #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "RÄ™czne ogniskowanie Nikona na granicy." #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "Krok rÄ™cznego ogniskowania Nikona jest zbyt maÅ‚y." #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "WciÅ›niÄ™cie do poÅ‚owy" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 msgid "Press Full" msgstr "WciÅ›niÄ™cie do koÅ„ca" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "Zwolnienie do poÅ‚owy" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "Zwolnienie do koÅ„ca" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "Natychmiast" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 msgid "Press 1" msgstr "WciÅ›niÄ™cie 1" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 msgid "Press 2" msgstr "WciÅ›niÄ™cie 2" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 msgid "Press 3" msgstr "WciÅ›niÄ™cie 3" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "Zwolnienie 1" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "Zwolnienie 2" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "Zwolnienie 3" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "Bliska 1" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "Bliska 2" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "Bliska 3" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "Daleka 1" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "Daleka 2" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "Daleka 3" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "Bliska %d" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "Daleka %d" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "Włączenie trybu Nikon LiveView nie powiodÅ‚o siÄ™" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" "Aby dziaÅ‚aÅ‚ tryb bulb, pokrÄ™tÅ‚o trybu musi być przełączone na 'M', a " "szybkość migawki na 'bulb'" #: camlibs/ptp2/config.c:5923 msgid "Internal RAM" msgstr "WewnÄ™trzny RAM" #: camlibs/ptp2/config.c:5924 msgid "Memory card" msgstr "Karta pamiÄ™ci" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "ESSID" #: camlibs/ptp2/config.c:6092 msgid "Display" msgstr "WyÅ›wietlacz" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "Data utworzenia: %s, data ustatniego użycia: %s" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "UsuÅ„" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "WEP 64-bitowe" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "WEP 128-bitowe" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "ZarzÄ…dzany" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "Ad-hoc" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "Nazwa profilu" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "WIFI ESSID" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "Adres IP (pusty dla DHCP)" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "Maska sieci" #: camlibs/ptp2/config.c:6359 msgid "Default gateway" msgstr "DomyÅ›lna bramka" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "Tryb dostÄ™pu" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "KanaÅ‚ WIFI" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "Szyfrowanie" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "Klucz szyfrowania (hex)" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "Zapisz" #: camlibs/ptp2/config.c:6412 msgid "List Wifi profiles" msgstr "Wypisz profile Wifi" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "Utwórz profil Wifi" #: camlibs/ptp2/config.c:6521 msgid "Power Down" msgstr "Wyłączenie" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 msgid "Focus Lock" msgstr "Blokada ogniskowej" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 msgid "Bulb Mode" msgstr "Tryb żarówki" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "Blokada UI" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "Prowadzenie autofocusu Nikon DSLR" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "Prowadzenie autofocusu Canon DSLR" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "Prowadzenie rÄ™czne ostroÅ›ci Nikon DSLR" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "Ustawienie obszaru autofocusu Nikona" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "Ustawienie trybu sterowania Nikona" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "Prowadzenie rÄ™czne ostroÅ›ci Canon DSLR" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "Anulowanie autofocusu Canon DSLR" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "PowiÄ™kszenie Canon EOS" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "Pozycja powiÄ™kszenia Canon EOS" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "Canon EOS Viewfinder" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "Nikon Viewfinder" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "Zdalne zwalnianie Canon EOS" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "Skrypt CHDK" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 msgid "Movie Capture" msgstr "Nagranie filmu" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 msgid "Serial Number" msgstr "Numer seryjny" #: camlibs/ptp2/config.c:6548 msgid "Camera Manufacturer" msgstr "Producent aparatu" #: camlibs/ptp2/config.c:6550 msgid "Device Version" msgstr "Wersja urzÄ…dzenia" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "Rozszerzenie producenta" #: camlibs/ptp2/config.c:6556 msgid "PTP Version" msgstr "Wersja PTP" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 msgid "DPOF Version" msgstr "Wersja DPOF" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "Zasilanie AC" #: camlibs/ptp2/config.c:6559 msgid "External Flash" msgstr "Flesz zewnÄ™trzny" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "Poziom baterii" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 msgid "Camera Orientation" msgstr "Orientacja aparatu" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 msgid "Flash Open" msgstr "Flesz otwarty" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 msgid "Flash Charged" msgstr "Flesz Å‚adowany" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 msgid "Lens Name" msgstr "Nazwa obiektywu" #: camlibs/ptp2/config.c:6570 msgid "Shutter Counter" msgstr "Licznik migawki" #: camlibs/ptp2/config.c:6571 msgid "Available Shots" msgstr "DostÄ™pne zdjÄ™cia" #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "Minimalna dÅ‚ugość ogniskowej" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "Maksymalna dÅ‚ugość ogniskowej" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "Maksymalna przysÅ‚ona przy minimalnej ogniskowej" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "Maksymalna przysÅ‚ona przy maksymalnej ogniskowej" #: camlibs/ptp2/config.c:6576 msgid "Low Light" msgstr "Niskie Å›wiatÅ‚o" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 msgid "Light Meter" msgstr "Pomiar Å›wiatÅ‚a" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 msgid "AF Locked" msgstr "Blokada AF" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "Blokada AE" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 msgid "FV Locked" msgstr "Blokada FV" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 msgid "Camera Date and Time" msgstr "Data i czas aparatu" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "Tryb piszczyka" #: camlibs/ptp2/config.c:6591 msgid "Image Comment" msgstr "Komentarz do zdjÄ™cia" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "WLAN GUID" #: camlibs/ptp2/config.c:6593 msgid "Enable Image Comment" msgstr "Włączenie komentarza do zdjÄ™cia" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 msgid "LCD Off Time" msgstr "Czas wyłączania LCD" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 msgid "Recording Media" msgstr "NoÅ›nik nagrywania" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "Czas szybkiego podglÄ…du" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "Menu CSM" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "Odwrotna tarcza poleceÅ„" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 msgid "Camera Output" msgstr "WyjÅ›cie aparatu" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "Miejsce zapisu nagrywania" #: camlibs/ptp2/config.c:6602 msgid "EVF Mode" msgstr "Tryb EVF" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "Autor" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "Numer CCD" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Prawa autorskie" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "Czyszczenie sensora" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 msgid "Flicker Reduction" msgstr "Redukcja migotania" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "Funkcje WÅ‚asne Ex" #: camlibs/ptp2/config.c:6613 msgid "Focus Info" msgstr "Informacje o ogniskowaniu" #: camlibs/ptp2/config.c:6614 msgid "Focus Area" msgstr "Obszar ogniskowania" #: camlibs/ptp2/config.c:6615 msgid "Auto Power Off" msgstr "Automatyczne wyłączanie" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "Głębia ostroÅ›ci" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "Menu i odtwarzanie" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "Szybki system plików" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 msgid "Capture Target" msgstr "Obiekt zdjÄ™cia" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "CHDK" #: camlibs/ptp2/config.c:6633 msgid "Image Format SD" msgstr "Format zdjęć SD" #: camlibs/ptp2/config.c:6634 msgid "Image Format CF" msgstr "Format zdjęć CF" #: camlibs/ptp2/config.c:6636 msgid "Image Format Ext HD" msgstr "Format zdjęć Ext HD" #: camlibs/ptp2/config.c:6643 msgid "Movie ISO Speed" msgstr "CzuÅ‚ość ISO dla filmu" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 msgid "ISO Auto" msgstr "Auto ISO" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 msgid "WhiteBalance" msgstr "Balans bieli" #: camlibs/ptp2/config.c:6654 msgid "WhiteBalance Adjust A" msgstr "Korekta balansu bieli A" #: camlibs/ptp2/config.c:6655 msgid "WhiteBalance Adjust B" msgstr "Korekta balansu bieli B" #: camlibs/ptp2/config.c:6656 msgid "WhiteBalance X A" msgstr "Balans bieli X A" #: camlibs/ptp2/config.c:6657 msgid "WhiteBalance X B" msgstr "Balans bieli X B" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "Efekt fotograficzny" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 msgid "Color Model" msgstr "Model kolorów" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 msgid "Color Space" msgstr "PrzestrzeÅ„ kolorów" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "Redukcja szumów przy dÅ‚ugiej ekspozycji" #: camlibs/ptp2/config.c:6669 msgid "Auto Focus Mode 2" msgstr "Tryb autofocus 2" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "ÅšwiatÅ‚o pomocnicze" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "Flaga obrotu" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 msgid "Flash Compensation" msgstr "Kompensacja flesza" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 msgid "AEB Exposure Compensation" msgstr "Kompensacja ekspozycji AEB" #: camlibs/ptp2/config.c:6685 msgid "Nikon Flash Mode" msgstr "Tryb flesza Nikona" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 msgid "Flash Commander Mode" msgstr "Tryb zarzÄ…dzania fleszem" #: camlibs/ptp2/config.c:6687 msgid "Flash Commander Power" msgstr "Zasilanie zarzÄ…dzania fleszem" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "KanaÅ‚ sterowania fleszem" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 msgid "Flash Command Self Mode" msgstr "Tryb wÅ‚asny sterowania fleszem" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 msgid "Flash Command Self Compensation" msgstr "Kompensacja wÅ‚asna sterowania fleszem" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "Wartość wÅ‚asna sterowania fleszem" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 msgid "Flash Command A Mode" msgstr "Tryb sterowania fleszem A" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 msgid "Flash Command A Compensation" msgstr "Kompensacja sterowania fleszem A" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "Wartość sterowania fleszem A" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 msgid "Flash Command B Mode" msgstr "Tryb sterowania fleszem B" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 msgid "Flash Command B Compensation" msgstr "Kompensacja sterowania fleszem B" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "Wartość sterowania fleszem B" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "Obszar rozjaÅ›nienia AF" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "Tryb piszczyka AF" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "Liczba F" #: camlibs/ptp2/config.c:6702 msgid "Movie F-Number" msgstr "Liczba F dla filmu" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "Program elastyczny" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "OdlegÅ‚ość ogniskowej" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "Ogniskowa" #: camlibs/ptp2/config.c:6710 msgid "Focus Mode 2" msgstr "Tryb ogniskowania 2" #: camlibs/ptp2/config.c:6712 msgid "Continuous AF" msgstr "CiÄ…gÅ‚y AF" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "Tryb efektu" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 msgid "Exposure Program" msgstr "Program ekspozycji" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 msgid "Scene Mode" msgstr "Tryb sceny" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "Proporcje obrazu" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 msgid "HDR Mode" msgstr "Tryb HDR" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "Duża dynamika HDR" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "WygÅ‚adzanie HDR" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "Tryb zdjęć nieruchomych" #: camlibs/ptp2/config.c:6725 msgid "Canon Shooting Mode" msgstr "Tryb robienia zdjÄ™cia Canona" #: camlibs/ptp2/config.c:6726 msgid "Canon Auto Exposure Mode" msgstr "Tryb automatyczej ekspozycji Canona" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 msgid "Drive Mode" msgstr "Tryb prowadzenia" #: camlibs/ptp2/config.c:6728 msgid "Picture Style" msgstr "Styl zdjÄ™cia" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "Tryb pomiaru ogniskowej" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "Tryb pomiaru ekspozycji" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "AV otwarty" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "AV maksymalny" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "Punkt ogniskowania" #: camlibs/ptp2/config.c:6738 msgid "Capture Delay" msgstr "Opóźnienie przed zdjÄ™ciem" #: camlibs/ptp2/config.c:6742 msgid "Shutter Speed 2" msgstr "PrÄ™dkość migawki 2" #: camlibs/ptp2/config.c:6743 msgid "Movie Shutter Speed 2" msgstr "PrÄ™dkość migawki 2 dla filmu" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "Tryb pomiaru" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 msgid "AF Distance" msgstr "OdlegÅ‚ość AF" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 msgid "Focus Area Wrap" msgstr "ZapÄ™tlenie obszaru ogniskowania" #: camlibs/ptp2/config.c:6751 msgid "Exposure Delay Mode" msgstr "Tryb opóźnienia ekspozycji" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 msgid "Exposure Lock" msgstr "Blokada ekspozycji" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "Tryb AE-L/AF-L" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "Tryb AF dla Live View" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "Ogniskowanie AF dla Live View" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "Sekwencyjne numerowanie plików" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 msgid "Flash Sign" msgstr "Znak flesza" #: camlibs/ptp2/config.c:6759 msgid "Modelling Flash" msgstr "Flesz modelujÄ…cy" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "PodziaÅ‚ka Viewfindera" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 msgid "Image Review" msgstr "Ocena zdjÄ™cia" #: camlibs/ptp2/config.c:6762 msgid "Image Rotation Flag" msgstr "Flaga obrotu obrazu" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "Wyzwolenie bez karty CF" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 msgid "Flash Mode Manual Power" msgstr "RÄ™czne zasilanie w trybie flesza" #: camlibs/ptp2/config.c:6765 msgid "Auto Focus Area" msgstr "Obszar autofocusu" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 msgid "Flash Exposure Compensation" msgstr "Kompensacja ekspozycji flesza" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 msgid "Bracketing" msgstr "Bracketing" #: camlibs/ptp2/config.c:6769 msgid "Bracket Mode" msgstr "Tryb bracketingu" #: camlibs/ptp2/config.c:6770 msgid "EV Step" msgstr "Krok EV" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 msgid "Bracket Set" msgstr "Tryb bracket" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "Kolejność w trybie bracket" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "Liczba serii" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "OdstÄ™p serii" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "Maksymalna liczba zdjęć" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 msgid "Auto White Balance Bias" msgstr "Automatyczne przesuniÄ™cie balansu bieli" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 msgid "Tungsten White Balance Bias" msgstr "PrzesuniÄ™cie balansu bieli dla Å›wiatÅ‚a żarówki wolframowej" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 msgid "Fluorescent White Balance Bias" msgstr "PrzesuniÄ™cie balansu bieli dla Å›wiatÅ‚a fluorescencyjnego" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 msgid "Daylight White Balance Bias" msgstr "PrzesuniÄ™cie balansu bieli dla Å›wiatÅ‚a dziennego" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 msgid "Flash White Balance Bias" msgstr "PrzesuniÄ™cie balansu bieli dla flesza" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 msgid "Cloudy White Balance Bias" msgstr "PrzesuniÄ™cie balansu bieli dla pogody pochmurnej" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 msgid "Shady White Balance Bias" msgstr "PrzesuniÄ™cie balansu bieli dla cienia" #: camlibs/ptp2/config.c:6794 msgid "White Balance Bias Preset Nr" msgstr "PrzesuniÄ™cie balansu bieli Nr" #: camlibs/ptp2/config.c:6795 msgid "White Balance Bias Preset 0" msgstr "PrzesuniÄ™cie balansu bieli 0" #: camlibs/ptp2/config.c:6796 msgid "White Balance Bias Preset 1" msgstr "PrzesuniÄ™cie balansu bieli 1" #: camlibs/ptp2/config.c:6797 msgid "White Balance Bias Preset 2" msgstr "PrzesuniÄ™cie balansu bieli 2" #: camlibs/ptp2/config.c:6798 msgid "White Balance Bias Preset 3" msgstr "PrzesuniÄ™cie balansu bieli 3" #: camlibs/ptp2/config.c:6799 msgid "White Balance Bias Preset 4" msgstr "PrzesuniÄ™cie balansu bieli 4" #: camlibs/ptp2/config.c:6800 msgid "Selftimer Delay" msgstr "Opóźnienie samowyzwalacza" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "Obszar centralnie ważony" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 msgid "Flash Shutter Speed" msgstr "PrÄ™dkość migawki z fleszem" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 msgid "Remote Timeout" msgstr "Zdalny limit czasu" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 msgid "Remote Mode" msgstr "Tryb zdalnego sterowania" #: camlibs/ptp2/config.c:6805 msgid "Application Mode" msgstr "Tryb aplikacji" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "Optymalizacja zdjÄ™cia" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 msgid "Sharpening" msgstr "Wyostrzanie" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 msgid "Tone Compensation" msgstr "Kompensacja tonów" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 msgid "Saturation" msgstr "Nasycenie" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 msgid "Hue Adjustment" msgstr "Regulacja barwy" #: camlibs/ptp2/config.c:6811 msgid "Auto Exposure Bracketing" msgstr "Automatyczny bracketing ekspozycji" #: camlibs/ptp2/config.c:6812 msgid "Movie Sound" msgstr "DźwiÄ™k filmu" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 msgid "Manual Movie Setting" msgstr "RÄ™czne ustawienia filmu" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "Mikrofon" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "Odwrotne identyfikatory" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "Automatyczna kontrola znieksztaÅ‚ceÅ„" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 msgid "Video Mode" msgstr "Tryb obrazu" #: camlibs/ptp2/config.c:6835 msgid "Meter Off Time" msgstr "Czas wyłączania pomiaru" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "Przypisanie przycisku funkcyjnego" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "Przypisanie przycisku podglÄ…du" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 msgid "Movie Quality" msgstr "Jakość filmu" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 msgid "Minimum Shutter Speed" msgstr "Minimalna prÄ™dkość migawki" #: camlibs/ptp2/config.c:6862 msgid "Movie Resolution" msgstr "Rozdzielczość filmu" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 msgid "Continuous Shooting Speed Slow" msgstr "Szybkość wolnego trybu ciÄ…gÅ‚ych zdjęć" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "Górne ograniczenie Auto ISO" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "PrÄ™dkość synchronizacji z fleszem" #: camlibs/ptp2/config.c:6869 msgid "Focus Metering" msgstr "Pomiar ogniskowej" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 msgid "High ISO Noise Reduction" msgstr "Redukcja szumów przy dużym ISO" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 msgid "Continuous Shooting Speed High" msgstr "Szybkość szybkiego trybu ciÄ…gÅ‚ych zdjęć" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 msgid "JPEG Compression Policy" msgstr "Tryb kompresji JPEG" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "Priorytet trybu AF-C" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "Priorytet trybu AF-S" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "Włączenie AF" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "Obszar dynamicznego AF" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 msgid "AF Lock On" msgstr "Blokada AF" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "Punkt obszaru AF" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "Przycisk AF On" #: camlibs/ptp2/config.c:6913 msgid "Movie High ISO Noise Reduction" msgstr "Redukcja szumów przy dużym ISO dla filmu" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "Maksymalne ciÄ…gÅ‚e zwolnienie" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 msgid "Raw Compression" msgstr "Kompresja surowa" #: camlibs/ptp2/config.c:6922 msgid "Image Quality 2" msgstr "Jakość obrazu 2" #: camlibs/ptp2/config.c:6944 msgid "Image Settings" msgstr "Ustawienia obrazu" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "Ustawienia zdjÄ™cia" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "Profile WIFI" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 msgid "Other PTP Device Properties" msgstr "Inne ustawienia urzÄ…dzenia PTP" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "Ustawienie PTP 0x%04x" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "Niestety wÅ‚aÅ›ciwość '%s' / 0x%04x jest aktualnie tylko do odczytu." #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "WÅ‚aÅ›ciwość '%s' / 0x%04x nie zostaÅ‚a ustawiona (0x%04x: %s)" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "WÅ‚aÅ›ciwość '%s' / 0x%04x nie zostaÅ‚a ustawiona (0x%04x: %s)." #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "Analiza wartoÅ›ci kontrolki '%s' / 0x%04x nie powiodÅ‚a siÄ™ - błąd %d." #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "Należy podać folder rozpoczynajÄ…cy siÄ™ od /store_xxxxxxxxx/" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" "Sterownik PTP2\n" "(c) 2001-2005 Mariusz WoÅ‚oszyn .\n" "(c) 2003-%d Marcus Meissner .\n" "Ten sterownik obsÅ‚uguje aparaty obsÅ‚ugujÄ…ce PTP lub PictBridge(tm)\n" "i odtwarzacze obsÅ‚ugujÄ…ce protokół Media Transfer Protocol (MTP).\n" "\n" "MiÅ‚ej zabawy!" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "Włączenie trybu Canon Viewfinder nie powiodÅ‚o siÄ™" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "Pobranie obrazu Canon Viewfinder nie powiodÅ‚o siÄ™" #: camlibs/ptp2/library.c:2537 msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "Niestety ten aparat Canon nie obsÅ‚uguje trybu Canon Viewfinder" #: camlibs/ptp2/library.c:2545 msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "Niestety ten aparat Nikon nie obsÅ‚uguje trybu LiveView" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "Niestety ten aparat Nikon nie zwraca obrazów JPEG w trybie LiveView" #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "Wyłączenie trybu Nikon LiveView nie powiodÅ‚o siÄ™" #: camlibs/ptp2/library.c:2799 msgid "Sorry, your camera does not support Nikon capture" msgstr "Niestety ten aparat nie obsÅ‚uguje pobierania obrazu w trybie Nikon" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" "Nie udaÅ‚o siÄ™ włączyć trybu Nikon 1 LiveView, ale jest to wymagane do " "zrobienia zdjÄ™cia" #: camlibs/ptp2/library.c:3045 msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Niestety ten aparat Canon nie obsÅ‚uguje funkcji Canon EOS capture" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 msgid "Canon EOS Half-Press failed" msgstr "Canon EOS Half-Press nie powiodÅ‚o siÄ™" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "Canon EOS Get Changes nie powiodÅ‚o siÄ™" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "Canon EOS Capture nie powiodÅ‚o siÄ™: może brak ostroÅ›ci?" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 msgid "Canon EOS Half-Release failed" msgstr "Canon EOS Half-Release nie powiodÅ‚o siÄ™" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 msgid "Canon EOS Full-Press failed" msgstr "Canon EOS Full-Press nie powiodÅ‚o siÄ™" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 msgid "Canon EOS Full-Release failed" msgstr "Canon EOS Full-Release nie powiodÅ‚o siÄ™" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "Canon EOS Capture nie powiodÅ‚o siÄ™" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "Canon EOS Capture nie powiodÅ‚o siÄ™: %x" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "Canon EOS Capture nie powiodÅ‚o siÄ™: może lustro podniesione?" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "Canon EOS Capture nie powiodÅ‚o siÄ™: może brak pamiÄ™ci na karcie?" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "Canon EOS Capture nie powiodÅ‚o siÄ™: karta tylko do odczytu?" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "Canon EOS Capture nie powiodÅ‚o siÄ™: nienznay błąd %d, proszÄ™ zgÅ‚osić." #: camlibs/ptp2/library.c:3332 msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "Niestety ten aparat Canon nie obsÅ‚uguje inicjalizacji Canon Capture" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "Wyłączenie trybu Canon Viewfinder nie powiodÅ‚o siÄ™" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 msgid "Canon Capture failed" msgstr "Canon Capture nie powiodÅ‚o siÄ™" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "Niestety ten aparat nie obsÅ‚uguje zwykÅ‚ego robienia zdjęć" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "Canon EOS Trigger Capture nie powiodÅ‚o siÄ™: 0x%x" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "Niestety inicjalizacja aparatu nie zadziaÅ‚aÅ‚a. ProszÄ™ to zgÅ‚osić." #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "tylko odczyt" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "odczyt i zapis" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, c-format msgid "Manufacturer: %s\n" msgstr "Producent: %s\n" #: camlibs/ptp2/library.c:4800 #, c-format msgid "Model: %s\n" msgstr "Model: %s\n" #: camlibs/ptp2/library.c:4802 #, c-format msgid " Version: %s\n" msgstr " Wersja: %s\n" #: camlibs/ptp2/library.c:4805 #, c-format msgid " Serial Number: %s\n" msgstr " Numer seryjny: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "ID rozszerzenia producenta: 0x%x(%d.%d)\n" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "Opis rozszerzenia producenta: %s\n" #: camlibs/ptp2/library.c:4821 #, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "Wersja standardu PTP: %d.%d\n" #: camlibs/ptp2/library.c:4828 #, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Tryb dziaÅ‚ania: 0x%04x\n" #: camlibs/ptp2/library.c:4833 #, c-format msgid "" "\n" "Capture Formats: " msgstr "" "\n" "Formaty zdjęć: " #: camlibs/ptp2/library.c:4847 #, c-format msgid "Display Formats: " msgstr "Formaty wyÅ›wietlania: " #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "ObsÅ‚ugiwane wÅ‚asnoÅ›ci obiektów MTP:\n" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr " Błąd PTP %04x przy zapytaniu" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" "\n" "MożliwoÅ›ci urzÄ…dzenia:\n" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "\tÅšciÄ…ganie plików, " #: camlibs/ptp2/library.c:4902 #, c-format msgid "File Deletion, " msgstr "Usuwanie plików, " #: camlibs/ptp2/library.c:4904 #, c-format msgid "No File Deletion, " msgstr "Bez usuwania plików, " #: camlibs/ptp2/library.c:4908 #, c-format msgid "File Upload\n" msgstr "PrzesyÅ‚anie plików do aparatu\n" #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "Bez przesyÅ‚ania plików do aparatu\n" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "\tOgólne pobieranie obrazu, " #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "\tBez pobierania obrazu, " #: camlibs/ptp2/library.c:4920 #, c-format msgid "Open Capture, " msgstr "ZdjÄ™cia w trybie otwartym, " #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "Bez zdjęć w trybie otwartym, " #: camlibs/ptp2/library.c:4929 #, c-format msgid "Canon Capture" msgstr "ZdjÄ™cia w trybie Canon" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "ZdjÄ™cia w trybie Canon EOS" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "%sprzycisk migawki Canon EOS" #: camlibs/ptp2/library.c:4947 #, c-format msgid "Nikon Capture 1" msgstr "ZdjÄ™cie w trybie Nikon 1" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "%sZdjÄ™cia w trybie Nikon 2" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "%sZdjÄ™cia w trybie Nikon 3" #: camlibs/ptp2/library.c:4965 #, c-format msgid "Sony Capture" msgstr "ZdjÄ™cia w trybie Sony" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "ZdjÄ™cia w trybie Olympus E XML\n" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "Bez zdjęć w trybie producenta\n" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "\tObsÅ‚uga Nikon Wifi\n" #: camlibs/ptp2/library.c:4991 #, c-format msgid "\tCanon Wifi support\n" msgstr "\tObsÅ‚uga Canon Wifi\n" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" "\n" "Wykaz urzÄ…dzeÅ„ z danymi:\n" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "\tOpis urzÄ…dzenia: %s\n" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "\tEtykieta wolumenu: %s\n" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "Wbudowany ROM" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "WyciÄ…galny ROM" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "Wbudowany RAM" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "WyciÄ…galny RAM (karta pamiÄ™ci)" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, c-format msgid "Unknown: 0x%04x\n" msgstr "Nieznany: 0x%04x\n" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "\tTyp urzÄ…dzenia: %s\n" #: camlibs/ptp2/library.c:5043 msgid "Generic Flat" msgstr "Ogólny pÅ‚aski" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "Ogólny hierarchiczny" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "UkÅ‚ad dla aparatów cyfrowych (DCIM)" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "\tTyp systemu plików: %s\n" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "Odczyt i zapis" #: camlibs/ptp2/library.c:5056 msgid "Read-Only" msgstr "Tylko odczyt" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "Tylko odczyt z usuwaniem obiektów" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "\tMożliwość dostÄ™pu: %s\n" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "\tMaksymalna pojemność: %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "\tWolne miejsce (bajty): %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5075 #, c-format msgid "\tFree Space (Images): %d\n" msgstr "\tWolne miejsce (klatki): %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" "\n" "Wykaz wÅ‚asnoÅ›ci urzÄ…dzenia:\n" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr " nie odczytano.\n" #: camlibs/ptp2/library.c:5116 #, c-format msgid "cannot be queried.\n" msgstr "nie można odpytać.\n" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr " błąd %x przy zapytaniu" #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "Plik '%s/%s' nie istnieje." #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "Metadane obsÅ‚ugiwane tylko dla urzÄ…dzeÅ„ MTP." #: camlibs/ptp2/library.c:6414 msgid "Device does not support setting object protection." msgstr "To urzÄ…dzenie nie obsÅ‚uguje ustawiania zabezpieczenia obiektu." #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "UrzÄ…dzeniu nie udaÅ‚o siÄ™ ustawić zabezpieczenia obiektu na %d" #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Inicjalizacja aparatu" #: camlibs/ptp2/library.c:7254 #, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "" "PTP jest obecnie zaimplementowane tylko dla aparatów USB i PTP/IP, rodzaj " "portu %x" #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" "ObsÅ‚uga opakowania XML Olympusa jest dostÄ™pna tylko przy wbudowanej obsÅ‚udze " "libxml2." #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "PTP: Niezdefiniowany błąd" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP: OK!" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "PGP: Ogólny błąd" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP: Sesja nie otwarta" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP: NieprawidÅ‚owy identyfikator transakcji" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "PTP: NieobsÅ‚ugiwana operacja" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "PTP: NieobsÅ‚ugiwany parametr" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP: NiepeÅ‚na transmisja" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP: NieprawidÅ‚owy identyfikator danych" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "PTP: NieprawidÅ‚owy uchwyt obiektu" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "PTP: NieobsÅ‚ugiwane ustawienie urzÄ…dzenia" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP: NieprawidÅ‚owy kod formatu obiektu" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP: Brak miejsca" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP: Obiekt zabezpieczony przed zapisem" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "PTP: Dane tylko do odczytu" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP: Brak dostÄ™pu" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP: Brak miniaturki" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP: WÅ‚asny test nie powiódÅ‚ siÄ™" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP: Częściowe usuniÄ™cie" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "PTP: Dane niedostÄ™pne" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "PTP: NieobsÅ‚ugiwana specyfikacja przez format" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "PTP: Brak prawidÅ‚owych informacji o obiekcie" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP: NieprawidÅ‚owy format kodu" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "PTP: Nieznany kod producenta" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP: Robienie zdjÄ™cia już zakoÅ„czone" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "PTP: UrzÄ…dzenie zajÄ™te" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "PTP: NieprawidÅ‚owy obiekt macierzysty" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "PTP: NieprawidÅ‚owy format ustawienia urzÄ…dzenia" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "PTP: NieprawidÅ‚owa wartość ustawienia urzÄ…dzenia" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "PTP: NieprawidÅ‚owy parametr" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP: Sesja już otwarta" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP: Transakcja anulowana" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "PTP: NieobsÅ‚ugiwana specyfikacja celu" #: camlibs/ptp2/ptp.c:4047 msgid "Filename Required" msgstr "Wymagana nazwa pliku" #: camlibs/ptp2/ptp.c:4048 msgid "Filename Conflicts" msgstr "Konflikt nazwy pliku" #: camlibs/ptp2/ptp.c:4049 msgid "Filename Invalid" msgstr "NieprawidÅ‚owa nazwa pliku" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "Błąd sprzÄ™towy" #: camlibs/ptp2/ptp.c:4052 msgid "Out of Focus" msgstr "Brak ostroÅ›ci" #: camlibs/ptp2/ptp.c:4053 msgid "Change Camera Mode Failed" msgstr "Zmiana trybu aparatu nie powiodÅ‚a siÄ™" #: camlibs/ptp2/ptp.c:4054 msgid "Invalid Status" msgstr "NieprawidÅ‚owy status" #: camlibs/ptp2/ptp.c:4055 msgid "Set Property Not Supported" msgstr "Ustawianie wÅ‚aÅ›ciwoÅ›ci nie obsÅ‚ugiwane" #: camlibs/ptp2/ptp.c:4056 msgid "Whitebalance Reset Error" msgstr "Błąd zerowania ustawienia balansu bieli" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "Błąd odniesienia kurzu" #: camlibs/ptp2/ptp.c:4058 msgid "Shutter Speed Bulb" msgstr "PrÄ™dkość migawki w trybie bulb" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "Sekwencja podnoszenia lustra" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "Tryb aparatu bez korekty ogniskowej" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "Nie w trybie Liveview" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "Koniec kroku MF" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "NiewystarczajÄ…cy krok MF" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "Anulowano transfer rozszerzony" #: camlibs/ptp2/ptp.c:4066 msgid "Unknown Command" msgstr "Nieznane polecenie" #: camlibs/ptp2/ptp.c:4067 msgid "Operation Refused" msgstr "Operacja odrzucona" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "Obiektyw zasÅ‚oniÄ™ty" #: camlibs/ptp2/ptp.c:4069 msgid "Battery Low" msgstr "Bateria sÅ‚aba" #: camlibs/ptp2/ptp.c:4070 msgid "Camera Not Ready" msgstr "Aparat niegotowy" #: camlibs/ptp2/ptp.c:4072 msgid "PTP Timeout" msgstr "Limit czasu PTP" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "Żądanie anulowania PTP" #: camlibs/ptp2/ptp.c:4075 msgid "PTP Response Expected" msgstr "PTP: Błąd protokoÅ‚u, oczekiwano odpowiedzi" #: camlibs/ptp2/ptp.c:4076 msgid "PTP Data Expected" msgstr "PTP: oczekiwano danych" #: camlibs/ptp2/ptp.c:4077 msgid "PTP I/O Error" msgstr "PTP: Błąd wejÅ›cia/wyjÅ›cia" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "Niezdefiniowana opcja PTP" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "Tryb dziaÅ‚ania" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "Ustawienie kompresji" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Balans bieli" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "Wzmocnienie RGB" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "Czas ekspozycji" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "Tryb programu ekspozycji" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "Indeks ekspozycji (czuÅ‚ość ISO filmu)" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "Kompensacja odchylenia ekspozycji" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "Opóźnienie przed zdjÄ™ciem" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "Kontrast" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "PowiÄ™kszenie cyfrowe" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "Liczba w jednostce czasu" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "OdstÄ™p w jednostce czasu" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "URL do przesyÅ‚ania" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "Informacje o prawach autorskich" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "ObsÅ‚ugiwane rozmiary miniaturek" #: camlibs/ptp2/ptp.c:4136 #, fuzzy msgid "Enabled Streams" msgstr "NieprawidÅ‚owy status" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Format daty" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Rozdzielczość filmu" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "Jakość filmu" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Kontrast" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "Jasność" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Format daty" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "Format znacznika czasu" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "WyjÅ›cie obrazu" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "OszczÄ™dzanie energii" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "JÄ™zyk interfejsu użytkownika" #: camlibs/ptp2/ptp.c:4169 msgid "Battery Type" msgstr "Rodzaj baterii" #: camlibs/ptp2/ptp.c:4170 msgid "Battery Mode" msgstr "Tryb baterii" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "UILockType" #: camlibs/ptp2/ptp.c:4172 msgid "Camera Mode" msgstr "Tryb aparatu" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "Format pliku peÅ‚nego widoku" #: camlibs/ptp2/ptp.c:4176 msgid "Self Time" msgstr "Czas wÅ‚asny" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 msgid "Shooting Mode" msgstr "Tryb robienia zdjÄ™cia" #: camlibs/ptp2/ptp.c:4180 msgid "Image Mode" msgstr "Tryb obrazu" #: camlibs/ptp2/ptp.c:4187 msgid "Slow Shutter Setting" msgstr "Ustawienie wolnej migawki" #: camlibs/ptp2/ptp.c:4188 msgid "AF Mode" msgstr "Tryb AF" #: camlibs/ptp2/ptp.c:4189 msgid "Image Stabilization" msgstr "Stabilizacja obrazu" #: camlibs/ptp2/ptp.c:4191 msgid "Color Gain" msgstr "Wzmocnienie kolorów" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "CzuÅ‚ość" #: camlibs/ptp2/ptp.c:4194 msgid "Parameter Set" msgstr "Ustawienie parametrów" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "Av otwarty" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "Av maksymalny" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "Ogniskowa teleobiektywu" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "Ogniskowa szerokiego kÄ…tu" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "Mianownik ogniskowej" #: camlibs/ptp2/ptp.c:4207 msgid "Capture Transfer Mode" msgstr "Tryb przesyÅ‚ania zdjÄ™cia" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "Prefiks nazwy" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "Tryb rozmiaru/jakoÅ›ci" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "ObsÅ‚ugiwane rozmiary miniaturek" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "Rozmiar danych wyjÅ›ciowych z aparatu" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "Rozmiar danych wejÅ›ciowych do aparatu" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "Zdalna wersja API" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "WÅ‚aÅ›ciciel aparatu" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "Czas uniksowy" #: camlibs/ptp2/ptp.c:4219 msgid "Camera Body ID" msgstr "ID korpusu aparatu" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "Disp Av" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "Av z otwartym wierzchoÅ‚kiem" #: camlibs/ptp2/ptp.c:4223 msgid "Digital Zoom Magnification" msgstr "PowiÄ™kszenie cyfrowe" #: camlibs/ptp2/ptp.c:4224 msgid "Ml Spot Position" msgstr "Pozycja punktu Ml" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "Disp Av maksymalne" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "Av z maksymalnym wierzchoÅ‚kiem" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "Pozycja poczÄ…tkowa EZoom" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "Rozmiar EZoom teleobiektywu" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "Liczba bÅ‚ysków flesza" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "KÄ…t obrotu" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "Obrót sceny" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "Tryb emulacji zdarzeÅ„" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "Rodzaj pokazu slajdów" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "Åšrednie rozmiary plików" #: camlibs/ptp2/ptp.c:4239 msgid "Model ID" msgstr "ID modelu" #: camlibs/ptp2/ptp.c:4248 msgid "Shooting Bank" msgstr "Bank zdjęć" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "Bank zdjęć A" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "Bank zdjęć B" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "Bank zdjęć C" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "Bank zdjęć D" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "Reset banku 0" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "Temperatura kolorów dla balansu bieli" #: camlibs/ptp2/ptp.c:4278 msgid "White Balance Preset Number" msgstr "Numer predefiniowanego balansu bieli" #: camlibs/ptp2/ptp.c:4280 msgid "White Balance Preset Name 0" msgstr "Nazwa ustawieÅ„ balansu bieli 0" #: camlibs/ptp2/ptp.c:4282 msgid "White Balance Preset Name 1" msgstr "Nazwa ustawieÅ„ balansu bieli 1" #: camlibs/ptp2/ptp.c:4284 msgid "White Balance Preset Name 2" msgstr "Nazwa ustawieÅ„ balansu bieli 2" #: camlibs/ptp2/ptp.c:4286 msgid "White Balance Preset Name 3" msgstr "Nazwa ustawieÅ„ balansu bieli 3" #: camlibs/ptp2/ptp.c:4288 msgid "White Balance Preset Name 4" msgstr "Nazwa ustawieÅ„ balansu bieli 4" #: camlibs/ptp2/ptp.c:4290 msgid "White Balance Preset Value 0" msgstr "Wartość balansu bieli 0" #: camlibs/ptp2/ptp.c:4292 msgid "White Balance Preset Value 1" msgstr "Wartość balansu bieli 1" #: camlibs/ptp2/ptp.c:4294 msgid "White Balance Preset Value 2" msgstr "Wartość balansu bieli 2" #: camlibs/ptp2/ptp.c:4296 msgid "White Balance Preset Value 3" msgstr "Wartość balansu bieli 3" #: camlibs/ptp2/ptp.c:4298 msgid "White Balance Preset Value 4" msgstr "Wartość balansu bieli 4" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "Ogniskowa obiektywu (nie CPU)" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "Maksymalne Å›wiatÅ‚o obiektywu (nie CPU)" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "Automatyczne przyciÄ™cie DX" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "Bank menu A" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "Bank menu B" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "Bank menu C" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "Bank menu D" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "Reset banku menu" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "Pionowy AF włączony" #: camlibs/ptp2/ptp.c:4360 msgid "Focus Area Zone" msgstr "Strefa obszaru ogniskowania" #: camlibs/ptp2/ptp.c:4362 msgid "Enable Copyright" msgstr "Włączenie praw autorskich" #: camlibs/ptp2/ptp.c:4366 msgid "Exposure ISO Step" msgstr "Krok ekspozycji ISO" #: camlibs/ptp2/ptp.c:4368 msgid "Exposure Step" msgstr "Krok ekspozycji" #: camlibs/ptp2/ptp.c:4370 msgid "Exposure Compensation (EV)" msgstr "Kompensacja ekspozycji (EV)" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "Obszar centralnie ważony" #: camlibs/ptp2/ptp.c:4376 msgid "Exposure Base Matrix" msgstr "Macierz podstawy ekspozycji" #: camlibs/ptp2/ptp.c:4378 msgid "Exposure Base Center" msgstr "Åšrodek podstawy ekspozycji" #: camlibs/ptp2/ptp.c:4380 msgid "Exposure Base Spot" msgstr "Punkt podstawy ekspozycji" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "Obszar AF dla Live View" #: camlibs/ptp2/ptp.c:4390 msgid "Auto Meter Off Time" msgstr "Czas automatycznego wyłączania pomiaru" #: camlibs/ptp2/ptp.c:4392 msgid "Self Timer Delay" msgstr "Opóźnienie samowyzwalacza" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "Czas konfiguracji zdjÄ™cia" #: camlibs/ptp2/ptp.c:4398 msgid "Auto Off Timers" msgstr "Stopery automatycznego wyłączania" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "Poziom kÄ…ta" #: camlibs/ptp2/ptp.c:4402 msgid "Shooting Speed" msgstr "PrÄ™dkość robienia zdjÄ™cia" #: camlibs/ptp2/ptp.c:4406 msgid "Exposure delay mode" msgstr "Tryb opóźnienia ekspozycji" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 msgid "Long Exposure Noise Reduction" msgstr "Redukcja szumów przy dÅ‚ugiej ekspozycji" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "PodÅ›wietlenie LCD" #: camlibs/ptp2/ptp.c:4418 msgid "High ISO noise reduction" msgstr "Redukcja szumów przy dużym ISO" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "Podpowiedzi na ekranie" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "Nazwa autora" #: camlibs/ptp2/ptp.c:4424 msgid "Copyright Information" msgstr "Informacje o prawach autorskich" #: camlibs/ptp2/ptp.c:4432 msgid "Modeling Flash" msgstr "Flesz modelujÄ…cy" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "Bracketing w trybie rÄ™cznym" #: camlibs/ptp2/ptp.c:4440 msgid "Auto Bracket Selection" msgstr "Automatyczny wybór w trybie bracket" #: camlibs/ptp2/ptp.c:4441 msgid "NIKON Auto Bracketing Set" msgstr "Ustawienie autobracketingu NIKON" #: camlibs/ptp2/ptp.c:4443 msgid "Center Button Shooting Mode" msgstr "Tryb zdjęć z przyciskiem centrowania" #: camlibs/ptp2/ptp.c:4445 msgid "Center Button Playback Mode" msgstr "Tryb odtwarzania z przyciskiem centrowania" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "Wielokrotny wybór" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "Odtwarzanie informacji o zdjÄ™ciach" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "Przycisk przypisania funkcji" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "Konfiguracja tarcz poleceÅ„" #: camlibs/ptp2/ptp.c:4457 msgid "Aperture Setting" msgstr "Ustawienie przysÅ‚ony" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "Przyciski i tarcze" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "Nie zwolniono karty CF" #: camlibs/ptp2/ptp.c:4465 msgid "Center Button Zoom Ratio" msgstr "Współczynnik powiÄ™kszenia przycisku centrowania" #: camlibs/ptp2/ptp.c:4467 msgid "Function Button 2" msgstr "Przycisk funkcyjny 2" #: camlibs/ptp2/ptp.c:4471 msgid "Normal AF On" msgstr "Nornalny AF włączony" #: camlibs/ptp2/ptp.c:4473 msgid "Clean Image Sensor" msgstr "Czyszczenie matrycy" #: camlibs/ptp2/ptp.c:4475 msgid "Image Comment String" msgstr "ÅaÅ„cuch opisujÄ…cy obraz" #: camlibs/ptp2/ptp.c:4477 msgid "Image Comment Enable" msgstr "Włączenie komentarza do zdjÄ™cia" #: camlibs/ptp2/ptp.c:4479 msgid "Image Rotation" msgstr "Obrót obrazu" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "RÄ™czne ustawienie obiektywu" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "Rozmiar ekranu dla filmu" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "GÅ‚os filmu" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "Mikrofon do filmów" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "Gniazdo kart do filmów" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "Opóźnienie wyłączania monitora" #: camlibs/ptp2/ptp.c:4497 msgid "Bracketing Enable" msgstr "Włączenie bracketingu" #: camlibs/ptp2/ptp.c:4499 msgid "Exposure Bracketing Step" msgstr "Krok bracketingu ekspozycji" #: camlibs/ptp2/ptp.c:4501 msgid "Exposure Bracketing Program" msgstr "Program bracketingu ekspozycji" #: camlibs/ptp2/ptp.c:4503 msgid "Auto Exposure Bracket Count" msgstr "Automatyczny licznik bracketingu ekspozycji" #: camlibs/ptp2/ptp.c:4504 msgid "White Balance Bracket Step" msgstr "Krok bracketingu balansu bieli" #: camlibs/ptp2/ptp.c:4505 msgid "White Balance Bracket Program" msgstr "Program bracketingu balansu bieli" #: camlibs/ptp2/ptp.c:4507 msgid "Lens ID" msgstr "ID obiektywu" #: camlibs/ptp2/ptp.c:4509 msgid "Lens Sort" msgstr "Rodzaj obiektywu" #: camlibs/ptp2/ptp.c:4511 msgid "Lens Type" msgstr "Typ obiektyw" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "Minimalna ogniskowa" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "Maksymalna ogniskowa" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "Maksymalna jasność przy minimalnej ogniskowej" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "Maksymalna jasność przy maksymalnej ogniskowej" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "WyÅ›wietlanie ISO w trybie Finder" #: camlibs/ptp2/ptp.c:4523 msgid "Auto Off Photo" msgstr "Automatyczne wyłączanie w trybie zdjęć" #: camlibs/ptp2/ptp.c:4525 msgid "Auto Off Menu" msgstr "Automatyczne wyłączanie w trybie menu" #: camlibs/ptp2/ptp.c:4527 msgid "Auto Off Info" msgstr "Automatyczne wyłączanie w trybie informacji" #: camlibs/ptp2/ptp.c:4529 msgid "Self Timer Shot Number" msgstr "Liczba zdjęć dla samowyzwalacza" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "Kontrola winietowania" #: camlibs/ptp2/ptp.c:4537 msgid "Nikon Exposure Time" msgstr "Czas ekspozycji Nikon" #: camlibs/ptp2/ptp.c:4539 msgid "Warning Status" msgstr "Stan ostrzeżenia" #: camlibs/ptp2/ptp.c:4546 msgid "AF LCD Top Mode 2" msgstr "AF LCD Top Mode 2" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "Aktywny sensor AF" #: camlibs/ptp2/ptp.c:4552 msgid "Exposure Meter" msgstr "Miernik ekspozycji" #: camlibs/ptp2/ptp.c:4556 msgid "USB Speed" msgstr "PrÄ™dkość USB" #: camlibs/ptp2/ptp.c:4558 msgid "CCD Serial Number" msgstr "Numer seryjny CCD" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "Rodzaj PTN grupy" #: camlibs/ptp2/ptp.c:4564 msgid "FNumber Lock" msgstr "Blokada liczby F" #: camlibs/ptp2/ptp.c:4566 msgid "Exposure Aperture Lock" msgstr "Blokada przysÅ‚ony/ekspozycji" #: camlibs/ptp2/ptp.c:4568 msgid "TV Lock Setting" msgstr "Ustawienie blokady TV" #: camlibs/ptp2/ptp.c:4570 msgid "AV Lock Setting" msgstr "Ustawienie blokady AV" #: camlibs/ptp2/ptp.c:4572 msgid "Illum Setting" msgstr "Ustawienie podÅ›wietlenia" #: camlibs/ptp2/ptp.c:4574 msgid "Focus Point Bright" msgstr "Jasność punktu ogniskowania" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "Podłączony zewnÄ™trzny flesz" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "Stan zewnÄ™trznego flesza" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "Rodzaj zewnÄ™trznego flesza" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 msgid "External Flash Mode" msgstr "Tryb zewnÄ™trznego flesza" #: camlibs/ptp2/ptp.c:4584 msgid "External Flash Compensation" msgstr "Kompensacja zewnÄ™trznego flesza" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "Efekt wypeÅ‚nienia BW" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "Ostrość BW" #: camlibs/ptp2/ptp.c:4604 msgid "BW Contrast" msgstr "Kontrast BW" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "Rodzaj ustawienia BW" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "Tryb zapisu slotu 2" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "Tryb zapisu surowych bitów" #: camlibs/ptp2/ptp.c:4614 msgid "Flourescent Type" msgstr "Rodzaj Å›wiatÅ‚a fluorescencyjnego" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "Dostrojenie temperatury kolorów" #: camlibs/ptp2/ptp.c:4618 msgid "Tune Preset 0" msgstr "Dostrojenie 0" #: camlibs/ptp2/ptp.c:4620 msgid "Tune Preset 1" msgstr "Dostrojenie 1" #: camlibs/ptp2/ptp.c:4622 msgid "Tune Preset 2" msgstr "Dostrojenie 2" #: camlibs/ptp2/ptp.c:4624 msgid "Tune Preset 3" msgstr "Dostrojenie 3" #: camlibs/ptp2/ptp.c:4626 msgid "Tune Preset 4" msgstr "Dostrojenie 4" #: camlibs/ptp2/ptp.c:4630 msgid "Autofocus Mode" msgstr "Tryb autofocus" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "Lampa pomocnicza AF" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "Automatyczne ustawianie ISO P/A/DVP" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "WyÅ›wietlanie siatki w trybie Viewfinder" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "Zasilanie zarzÄ…dzania zewnÄ™trznego flesza" #: camlibs/ptp2/ptp.c:4656 msgid "Auto FP" msgstr "Auto FP" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "WyÅ›wietlanie ostrzeżeÅ„" #: camlibs/ptp2/ptp.c:4662 msgid "Battery Cell Kind" msgstr "Rodzaj baterii" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "Górne ograniczenie Auto ISO" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "CiÄ…gÅ‚a duża prÄ™dność" #: camlibs/ptp2/ptp.c:4670 msgid "Info Disp Setting" msgstr "Ustawienie wyÅ›wietlania informacji" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "Przycisk podglÄ…du" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "Przycisk podlÄ…du 2" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "Przycisk blokady AEAF 2" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "WyÅ›wietlanie identyfikatora" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "Kolejność rodzaju baterii" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "Klatki i kroki bracketingu" #: camlibs/ptp2/ptp.c:4684 msgid "Live View Mode" msgstr "Tryb Live View" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "Tryb prowadzenia Live View" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "Stan Live View" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "Współczynnik powiÄ™kszenia Live View" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "Warunek wyłączenia Live View" #: camlibs/ptp2/ptp.c:4694 msgid "Exposure Display Status" msgstr "Stan wyÅ›wietlania ekspozycji" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "Stan wskaźnika ekspozycji" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "Stan błędów wyÅ›wietlania informacji" #: camlibs/ptp2/ptp.c:4700 msgid "Exposure Indicate Lightup" msgstr "PodÅ›wietlenie wskaźnika ekspozycji" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "Wartość MRepeat flesza" #: camlibs/ptp2/ptp.c:4708 msgid "Flash MRepeat Count" msgstr "Liczba MRepeat flesza" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "OdstÄ™p MRepeat flesza" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "Uaktywnienie Pic Ctrl" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "Zmiana Pic Ctrl" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "ISO" #: camlibs/ptp2/ptp.c:4749 msgid "Image Compression" msgstr "Kompresja obrazu" #: camlibs/ptp2/ptp.c:4758 msgid "Secure Time" msgstr "Czas bezpieczny" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "Certyfikat urzÄ…dzenia" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "Informacja o unieważnieniu" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "Partner synchronizacji" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "Przyjazna nazwa urzÄ…dzenia" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "Etykieta wolumenu" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "Ikona urzÄ…dzenia" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "Informacja o rozpoczÄ™ciu sesji" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "Stwierdzony rodzaj urzÄ…dzenia" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "Szybkość odtwarzania" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "Obiekt odtwarzania" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "Indeks kontenera odtwarzania" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "Pozycja odtwarznia" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "ID PlaysForSure" #: camlibs/ptp2/ptp.c:4782 msgid "Quality" msgstr "Jakość" #: camlibs/ptp2/ptp.c:4783 msgid "Release Mode" msgstr "Tryb zwalniania" #: camlibs/ptp2/ptp.c:4784 msgid "Focus Areas" msgstr "Obszary ogniskowania" #: camlibs/ptp2/ptp.c:4785 msgid "AE Lock" msgstr "Blokada AE" #: camlibs/ptp2/ptp.c:4797 msgid "Image size" msgstr "Rozmiar obrazu" #: camlibs/ptp2/ptp.c:4798 msgid "Shutter speed" msgstr "PrÄ™dkość migawki" #: camlibs/ptp2/ptp.c:4799 msgid "Color temperature" msgstr "Temperatura koloru" #: camlibs/ptp2/ptp.c:4802 msgid "Expose Index" msgstr "Indeks ekspozycji" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "Filtr AB" #: camlibs/ptp2/ptp.c:4807 msgid "Still Image" msgstr "Obraz nieruchomy" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "%.1f kroków" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "%.0f mm" #: camlibs/ptp2/ptp.c:4940 msgid "JPEG Norm" msgstr "JPEG Norm" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "RAW + JPEG podstawowy" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "ÅšwiatÅ‚o żarzÄ…ce siÄ™" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "Automatyczny makro (zbliżenie)" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "Åšrednia centralnie ważona" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "Centralny punkt" #: camlibs/ptp2/ptp.c:4966 msgid "Automatic flash" msgstr "Flesz automatyczny" #: camlibs/ptp2/ptp.c:4969 msgid "Automatic Red-eye Reduction" msgstr "Automatyczna redukcja czerwonych oczu" #: camlibs/ptp2/ptp.c:4970 msgid "Red-eye fill flash" msgstr "WypeÅ‚niajÄ…ca redukcja czerwonych oczu" #: camlibs/ptp2/ptp.c:4988 msgid "Power Wind" msgstr "Silny wiatr" #: camlibs/ptp2/ptp.c:4994 msgid "Timer + Remote" msgstr "Samowyzwalacz + zdalny" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "Blokada AF" #: camlibs/ptp2/ptp.c:5056 msgid "Flash Lock" msgstr "Blokada flesza" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "Powrót punktu ogniskowania na Å›rodek" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "PodÅ›wietlenie aktualnego punktu ogniskowania" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "Nieużywany" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "SDRam" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "USB 1.1" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "USB 2.0" #: camlibs/ptp2/ptp.c:5169 msgid "LCD Backlight" msgstr "PodÅ›wietlenie LCD" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "PodÅ›wietlenie LCD i wyÅ›w. informacji" #: camlibs/ptp2/ptp.c:5228 msgid "1 min" msgstr "1 min" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "5 min" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "10 min" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "15 min" #: camlibs/ptp2/ptp.c:5266 msgid "Dark on light" msgstr "Ciemny na jasnym" #: camlibs/ptp2/ptp.c:5267 msgid "Light on dark" msgstr "Jasny na ciemnym" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "litowo-jonowa" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "niklowa hybrydowa" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "niklowo-kadmowa" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "alkaliczno-magnezowa" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "Poziom ostrzeżenia 1" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "Na wyczerpaniu" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "Poziom ostrzeżenia 0" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "Ekonomiczna" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "Bardzo dobra" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "Redukcja czerwonych oczu" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "Synchronizacja z niskÄ… prÄ™dkoÅ›ciÄ…" #: camlibs/ptp2/ptp.c:5345 msgid "Auto + Red Eye Suppression" msgstr "Automatyczny, redukcja czerwonych oczu" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "Włączony, redukcja czerwowych oczu" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "Widok odlegÅ‚y" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "Migawka szybka" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "Migawka powolna" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "Widok nocny" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "Skala szaroÅ›ci" #: camlibs/ptp2/ptp.c:5370 msgid "Pan Focus" msgstr "Pan Focus" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "Pojedyncze zdjÄ™cie" #: camlibs/ptp2/ptp.c:5375 msgid "Continuous Shooting" msgstr "CiÄ…gÅ‚e zdjÄ™cia" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "Wyzwalacz (pojedyncze zdjÄ™cie)" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "CiÄ…gÅ‚e zdjÄ™cia z małą prÄ™dkoÅ›ciÄ…" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "CiÄ…gÅ‚e zdjÄ™cia z dużą prÄ™dkoÅ›ciÄ…" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "GÅ‚adka" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "Pomiar centralnie ważony" #: camlibs/ptp2/ptp.c:5386 msgid "Spot Metering" msgstr "Pomiar punktowy" #: camlibs/ptp2/ptp.c:5387 msgid "Average Metering" msgstr "Pomiar Å›redni" #: camlibs/ptp2/ptp.c:5388 msgid "Evaluative Metering" msgstr "Pomiar oceniajÄ…cy" #: camlibs/ptp2/ptp.c:5389 msgid "Partial Metering" msgstr "Pomiar częściowy" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "Pomiar Å›redni centralnie ważony" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "Pomiar punktowy powiÄ…zany z ramkÄ… AF" #: camlibs/ptp2/ptp.c:5392 msgid "Multi-Spot Metering" msgstr "Pomiar wielopunktowy" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "Funkcja powolnej migawki niedostÄ™pna" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "Niska 2" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 msgid "High 2" msgstr "Wysoka 2" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "Wyższa 1" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "Wyższa 2" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "Standardowe parametry rozwojowe" #: camlibs/ptp2/ptp.c:5462 msgid "Development Parameters 1" msgstr "Parametry rozwojowe 1" #: camlibs/ptp2/ptp.c:5463 msgid "Development Parameters 2" msgstr "Parametry rozwojowe 2" #: camlibs/ptp2/ptp.c:5464 msgid "Development Parameters 3" msgstr "Parametry rozwojowe 3" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "MlSpotPosCenter" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "MlSpotPosAfLink" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "Media Card" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "Media Card Group" #: camlibs/ptp2/ptp.c:5600 msgid "Encounter" msgstr "Encounter" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "Encounter Box" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "M4A" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "Firmware" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "Windows Image Format" #: camlibs/ptp2/ptp.c:5605 msgid "Undefined Audio" msgstr "Niezdefiniowany dźwiÄ™k" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "Kodek audible.com" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "Playlista Samsung" #: camlibs/ptp2/ptp.c:5612 msgid "Undefined Video" msgstr "Niezdefiniowany film" #: camlibs/ptp2/ptp.c:5617 msgid "Undefined Collection" msgstr "Niezdefiniowana kolekcja" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "Abstrakcyjny album multimedialny" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "Abstrakcyjny album zdjęć" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "Abstrakcyjny album dźwiÄ™ków" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "Abstrakcyjny album filmów" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "Abstrakcyjna playlista dźwiÄ™ków i filmów" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "Abstrakcyjna grupa kontaktów" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "Abstrakcyjny folder wiadomoÅ›ci" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "Abstrakcyjny produkt z rozdziaÅ‚ami" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "Abstrakcyjna playlista dźwiÄ™ków" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "Abstrakcyjna playlista filmów" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "Abstrakcyjna obsada" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "Playlista WPL" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "Playlista M3U" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "Playlista MPL" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "Playlista ASX" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "Playlista PLS" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "Niezdefiniowany dokument" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "Abstrakcyjny dokument" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "Dokument XML" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "Dokument Microsoft Worda" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "Skompilowany dokument HTML (MHT)" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "Arkusz kalkulacyjny Microsoft Excela (.xls)" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "Prezentacja Microsoft Powerpointa (.ppt)" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "Niezdefiniowana wiadomość" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "Abstrakcyjna wiadomość" #: camlibs/ptp2/ptp.c:5643 msgid "Undefined Contact" msgstr "Niezdefiniowany kontakt" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "Abstrakcyjny kontakt" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "vCard2" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "vCard3" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "Niezdefiniowany element kalendarza" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "Abstrakcyjny element kalendarza" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "vCalendar1" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "vCalendar2" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "Niezdefiniowany plik wykonywalny Windows" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "Media Cast" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "Sekcja" #: camlibs/ptp2/ptp.c:5692 #, c-format msgid "Unknown(%04x)" msgstr "Nieznany(%04x)" #: camlibs/ptp2/ptp.c:5702 #, fuzzy msgid "Get device info" msgstr "Pobranie informacji o urzÄ…dzeniu" #: camlibs/ptp2/ptp.c:5703 msgid "Open session" msgstr "Otwarcie sesji" #: camlibs/ptp2/ptp.c:5704 msgid "Close session" msgstr "ZamkniÄ™cie sesji" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "Pobranie ID noÅ›nika" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "Pobranie informacji o noÅ›niku" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "Pobranie liczby obiektów" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "Pobranie uchwytów obiektów" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "Pobranie informacji o obiekcie" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "Pobranie obiektu" #: camlibs/ptp2/ptp.c:5711 msgid "Get thumbnail" msgstr "Pobranie miniaturki" #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "UsuniÄ™cie obiektu" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "WysÅ‚anie informacji o obiekcie" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "WysÅ‚anie obiektu" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "Zainicjowanie robienia zdjęć" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "Formatowanie noÅ›nika" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "Reset urzÄ…dzenia" #: camlibs/ptp2/ptp.c:5718 msgid "Self test device" msgstr "Test wÅ‚asny urzÄ…dzenia" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "Zabezpieczenie obiektu" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "Wyłączenie urzÄ…dzenia" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "Pobranie opisu wÅ‚aÅ›ciwoÅ›ci urzÄ…dzenia" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "Pobranie wartoÅ›ci wÅ‚aÅ›ciwoÅ›ci urzÄ…dzenia" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "Ustawienie wartoÅ›ci wÅ‚aÅ›ciwoÅ›ci urzÄ…dzenia" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "Przywrócenie wartoÅ›ci wÅ‚aÅ›ciwoÅ›ci urzÄ…dzenia" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "ZakoÅ„czenie otwartego robienia zdjęć" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "Przeniesienie obiektu" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "Skopiowanie obiektu" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "Pobranie częściowego obiektu" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "Zainicjowanie otwartego robienia zdjęć" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 #, fuzzy msgid "Get Vendor Extension Maps" msgstr "Rozszerzenie producenta" #: camlibs/ptp2/ptp.c:5735 #, fuzzy msgid "Get Vendor Device Info" msgstr "Pobranie informacji o urzÄ…dzeniu" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 #, fuzzy msgid "Get Filesystem Manifest" msgstr "Szybki system plików" #: camlibs/ptp2/ptp.c:5738 #, fuzzy msgid "Get Stream Info" msgstr "Pobranie informacji o noÅ›niku" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "Pobranie obsÅ‚ugiwanych wÅ‚aÅ›ciwoÅ›ci obiektu" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "Pobranie opisu wÅ‚aÅ›ciwoÅ›ci obiektu" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "Pobranie wartoÅ›ci wÅ‚aÅ›ciwoÅ›ci obiektu" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "Ustawienie wartoÅ›ci wÅ‚aÅ›ciwoÅ›ci obiektu" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "Pobranie listy wÅ‚aÅ›ciwoÅ›ci obiektu" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "Ustawienie listy wÅ‚aÅ›ciwoÅ›ci obiektu" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "Pobranie opisu niezależnej wÅ‚aÅ›ciwoÅ›ci" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "WysÅ‚anie listy wÅ‚aÅ›ciwoÅ›ci obiektu" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "Pobranie odniesieÅ„ do obiektu" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "Ustawienie odniesieÅ„ do obiektu" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "Uaktualnienie firmware'u urzÄ…dzenia" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "PrzejÅ›cie do nastÄ™pnej pozycji w playliÅ›cie" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "Pobranie wywoÅ‚ania bezpiecznego czasu" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "Pobranie odpowiedzi bezpiecznego czasu" #: camlibs/ptp2/ptp.c:5759 msgid "Set license response" msgstr "Ustawienie odpowiedzi licencji" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "Pobranie listy synchronizacji" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "WysÅ‚anie zapytania wywoÅ‚ania pomiaru" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "Pobranie wywoÅ‚ania pomiaru" #: camlibs/ptp2/ptp.c:5763 msgid "Get meter response" msgstr "Pobranie odpowiedzi pomiaru" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "Wyczyszczenie noÅ›nika danych" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "Pobranie stanu licencji" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "WysÅ‚anie polecenia WMDRM-PD" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "WysÅ‚anie żądania WMDRM-PD" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "Informacja o dodanych/usuniÄ™tych elementach" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "Informacja o uzyskanych elementach" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "Pobranie możliwych rodzajów list odtwarzania" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "WysÅ‚anie żądania aplikacji WMDRM-PD" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "Pobranie odpowiedzi aplikacji WMDRM-PD" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "Włączenie zaufanych operacji na plikach" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "Wyłączenie zaufanych operacji na plikach" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "ZakoÅ„czenie sesji zaufanej aplikacji" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "Otwarcie sesji multimedialnej" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "ZamkniÄ™cie sesji multimedialnej" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "Pobranie nastÄ™pnego bloku danych" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "Ustawienie aktualnej pozycji czasu" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "WysÅ‚anie żądania rejestracji" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "Pobranie odpowiedzi na rejestracjÄ™" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "Pobranie wyzwania bliskoÅ›ci" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "WysÅ‚anie odpowiedzi bliskoÅ›ci" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "WysÅ‚anie żądania licencji WMDRM-ND" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "Pobranie odpowiedzi licencji WMDRM-ND" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "Przetworzenie obiektu WFC" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "Pobranie częściowego obiektu (offset 64-bitowy)" #: camlibs/ptp2/ptp.c:5800 msgid "Send Partial Object" msgstr "WysÅ‚anie częściowego obiektu" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "ObciÄ™cie obiektu" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "RozpoczÄ™cie edycji obiektu" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "ZakoÅ„czenie edycji obiektu" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "Nieznany %d" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "Rozszerzenie producenta" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "ÅšciÄ…ganie filmu..." #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "ÅšciÄ…ganie dźwiÄ™ku..." #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "ÅšciÄ…ganie danych EXIF..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "Brak dostÄ™pnych danych EXIF dla %s." #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "Nie udaÅ‚o siÄ™ usunąć pliku." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "Nie udaÅ‚o siÄ™ usunąć katalogu." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "Nie udaÅ‚o siÄ™ utworzyć katalogu." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "Wersja: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "Status RTC: %d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "Czas aparatu: %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "ID aparatu: %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "Brak wÅ‚ożonej karty SD.\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "ID karty SD: %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "Zdjęć w aparacie: %d\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "Pamięć SD: %d MB w sumie, %d MB wolne.\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "Pamięć wewnÄ™trzna: %d MB w sumie, %d MB wolne.\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Rozpracowano wstecznie przy użyciu USB Snoopy, patrzÄ…c\n" "na obraz uaktualnienia firmware'u i zgadujÄ…c.\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Sterownik Ricoh / Philips napisali\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "w oparciu o sterownik Boba Paauwe\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "nieznany (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Model: %s\n" "Pamięć: %d bajt(ów) z %d dostÄ™pnych" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2.0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1.5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1.0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0.5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0.0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0.5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1.0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1.5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2.0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Na zewnÄ…trz" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Maksymalna" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Minimalna" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Znak" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "DźwiÄ™k" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Obraz i dźwiÄ™k" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Znak i dźwiÄ™k" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Konfiguracja" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Ogólna" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Prawa autorskie (maksymalnie 20 znaków)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "ZdjÄ™cia" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Poziom bieli" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Tryb nagrywania" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Kompresja" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "PrÄ™dkość %i nie jest obsÅ‚ugiwana!" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "Oczekiwano %i, otrzymano %i. ProszÄ™ zgÅ‚osić ten błąd pod adres %s." #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "" "Oczekiwano %i bajtów, otrzymano %i. ProszÄ™ zgÅ‚osić ten błąd pod adres %s." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "Oczekiwano 0x%x, ale odebrano 0x%x. ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "ZÅ‚e znaki (0x%x, 0x%x). ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "Aparat zajÄ™ty. JeÅ›li problem nie minie, proszÄ™ skontaktować siÄ™ z %s." #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "" "Przekroczony limit czasu nawet po 2 próbach. ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "Błąd komunikacji nawet po 2 próbach. ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "Aparat jest w niewÅ‚aÅ›ciwym trybie. ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "Aparat nie przyjÄ…Å‚ parametrów. ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "WystÄ…piÅ‚ nieznany błąd. ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "" "DÅ‚ugość nazwy pliku nie może przekraczać 12 znaków ('%s' ma %i znaków)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "Sterownik Samsung digimax 800k napisaÅ‚ James McKenzie dla gphoto. Lutz Mueller sportowaÅ‚ go do " "gphoto2. Marcus Meissner poprawiÅ‚ i rozszerzyÅ‚ ten " "port." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Rozdzielczość i rozmiar" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Data i czas (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 msgid "Aperture Settings" msgstr "Ustawienia przysÅ‚ony" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Tryb koloru" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Redukcja czerwonych oczu" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Ustawienia flesza" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "OszczÄ™dzanie energii hosta (sekundy)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "OszczÄ™dzanie energii aparatu (sekundy)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Tryb obiektywu" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "KoreaÅ„ski" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "Angielski" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "Francuski" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "Niemiecki" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "WÅ‚oski" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "JapoÅ„ski" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "HiszpaÅ„ski" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "Portugalski" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Ustawienia zdjÄ™cia" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "TrochÄ™ uwag o aparatach Epson:\n" "- Niektórych parametrów nie da siÄ™ zmieniać zdalnie:\n" " * powiÄ™kszenia\n" " * ogniskowej\n" " * wÅ‚asnej konfiguracji balansu bieli\n" "- Konfiguracja zostaÅ‚a wstecznie rozpracowana przy użyciu\n" " PhotoPC 3000z, jeÅ›li aparat zachowuje siÄ™ inaczej, proszÄ™\n" " wysÅ‚ać list na listÄ™ dyskusyjnÄ… programistów gphoto (po angielsku)\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Brak karty pamiÄ™ci" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "Nie można odczytać pojemnoÅ›ci baterii" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "Poziom baterii aparatu jest zbyt niski (%d%%). Operacja przerwana." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Nie można odczytać pozostaÅ‚ej iloÅ›ci pamiÄ™ci" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "Aparat 3 razy odrzuciÅ‚ próbÄ™ utrzymania połączenia." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "Pierwszy odebrany bajt (0x%x) jest nieprawidÅ‚owy." #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "UpÅ‚ynÄ…Å‚ limit czasu przy transmisji pakietu po %i próbach. ProszÄ™ " "skontaktować siÄ™ z %s." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Nie udaÅ‚o siÄ™ przesÅ‚ać pakietu nawet po kilku próbach." #: camlibs/sierra/library.c:789 #, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "Pakiet odrzucony przez aparat. ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "" "Nie udaÅ‚o siÄ™ przesÅ‚ać pakietu (kod błędu %i). ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "UpÅ‚ynÄ…Å‚ limit czasu przy transmisji po 2 próbach. PoddajÄ™ siÄ™..." #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "Otrzymano nieoczekiwany wynik 0x%x. ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "Odebrano nieoczekiwanÄ… odpowiedź (%i). ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "Nie udaÅ‚o siÄ™ uzyskać rejestru %i. ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "Zbyt dużo prób nie powiodÅ‚o siÄ™." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "WysyÅ‚anie danych..." #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "wywoÅ‚ania rekurencyjne nie sÄ… obsÅ‚ugiwane przez sterownik sierra! ProszÄ™ " "skontaktować siÄ™ z %s." #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "" "Nie udaÅ‚o siÄ™ uzyskać rejestru Å‚aÅ„cuchowego %i. ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "Oczekiwano 32 bajtów, otrzymano %i. ProszÄ™ skontaktować siÄ™ z %s." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "PrÄ™dkość migawki w mikrosekundach (0 auto)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "PrÄ™dkość migawki (w sekundach)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "Cz/B" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Redukcja czerwonych oczu" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "Powolna synchronizacja" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "Kontrast+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Kontrast-" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "Jasność+" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "Jasność-" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Regulacja obrazu" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "Miganie" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "Tryb LED" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "NieskoÅ„czoność" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "PodglÄ…d miniaturki" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "NastÄ™pne" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "Poprzednie" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Tryb dziaÅ‚ania" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "Jasność LCD" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "Automatyczne wyłączenie LCD (sekundy)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "Centralnie ważony" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "Macierz" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Punkt AF" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Pomiar ekspozycji" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "PowiÄ™kszenie (w milimetrach)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "brak" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "Blokada AE" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "Rybie oko" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Szeroki" #: camlibs/sierra/nikon-desc.c:558 msgid "Misc exposure/lens settings" msgstr "Różne ustawienia ekspozycji/obiektywu" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Automatyczna blokada ekspozycji" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " Konfiguracja aparatu (lub ustawienia):\n" "\n" " Optyczne powiÄ™kszenie nie dziaÅ‚a poprawnie.\n" "\n" " Nie wszystkie ustawienia konfiguracji mogÄ…\n" " być poprawnie odczytane lub zapisane, na\n" " przykÅ‚ad dokÅ‚adne ustawianie balansu bieli\n" " albo ustawienia jÄ™zyka.\n" "\n" " Aby ustawić prÄ™dkość migawki należy ustawić\n" " aparat w tryb 'M'.\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995:\n" " Konfiguracja aparatu (ustawienia) dla tego\n" " aparatu sÄ… niepeÅ‚ne, należy skontaktować siÄ™\n" " z listÄ… dyskusyjnÄ… programistów gphoto aby\n" " pomóc przy tym sterowniku.\n" "\n" " ÅšciÄ…ganie zdjęć powinno dziaÅ‚ać poprawnie.\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "BiaÅ‚a tablica" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "Czarna tablica" #: camlibs/sierra/olympus-desc.c:489 msgid "Color or Function Mode" msgstr "Tryb koloru lub funkcji" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 msgid "Slow" msgstr "Wolny" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "WypeÅ‚nienie przeciwko czerwonym oczom" #: camlibs/sierra/olympus-desc.c:596 msgid "Fluorescent-1-home-6700K" msgstr "Fluorescencyjne-1-dom-6700K" #: camlibs/sierra/olympus-desc.c:597 msgid "Fluorescent-2-desk-5000K" msgstr "Fluorescencyjne-2-biurko-5000K" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "Fluorescencyjne-3-biuro-4200K" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "Fluorescencyjne-1-dom-6700K" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "Fluorescencyjne-2-biurko-5000K" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "Fluorescencyjne-3-biuro-4200K" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "Zmierzch" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Monitor" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "Tryb LCD" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "ESP" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "PowiÄ™kszenie cyfrowe" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "PoÅ‚ożenie ogniska" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Format czasu" #: camlibs/sierra/olympus-desc.c:1147 msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Kilka uwag o aparatach Olympus:\n" "(1) Konfiguracja aparatu:\n" " Wartość 0 oznacza domyÅ›lnÄ… (auto).\n" "(2) Olympus C-3040Z (może także C-2040Z i inne) ma\n" " tryb USB PC Control. Aby przełączyć aparat w ten\n" " tryb, należy włączyć aparat, otworzyć drzwiczki\n" " dostÄ™pu do karty pamiÄ™ci, a nastÄ™pnie przycisnąć\n" " i przytrzymać oba przyciski menu i LCD aż pojawi siÄ™\n" " menu sterowania aparatem - należy ustawić opcjÄ™ na ON.\n" "(3) Po przełączeniu trybu LCD na 'Monitor' lub\n" " 'Normalny' nie należy zapomnieć o przełączeniu\n" " z powrotem na 'Off' przed rozłączeniem. W przeciwnym\n" " wypadku nie można używać przycisków aparatu.\n" " W przypadku zakoÅ„czenia pracy w tym stanie należy\n" " ponownie podłączyć aparat do komputera i przełączyć\n" " LCD na 'Off'." #: camlibs/sierra/olympus-desc.c:1166 msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ ma tryb USB PC Control. Aby przełączyć\n" " aparat w ten tryb, należy włączyć aparat, otworzyć\n" " drzwiczki dostÄ™pu do karty pamiÄ™ci, a nastÄ™pnie\n" " przycisnąć i przytrzymać oba przyciski 'OK'\n" " i 'quickview' do momentu pojawienia siÄ™ menu sterowania\n" " aparatem. Należy przełączyć je na tryb sterowania.\n" "(2) Po przełączeniu trybu LCD na 'Monitor' lub\n" " 'Normalny' nie należy zapomnieć o przełączeniu\n" " z powrotem na 'Off' przed rozłączeniem. W przeciwnym\n" " wypadku nie można używać przycisków aparatu.\n" " W przypadku zakoÅ„czenia pracy w tym stanie należy\n" " ponownie podłączyć aparat do komputera i przełączyć\n" " LCD na 'Off'." #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "DomyÅ›lny sterownik sierra:\n" "\n" " To jest domyÅ›lny sterownik sierra, powinien być\n" " w stanie obsÅ‚użyć Å›ciÄ…ganie i przeglÄ…danie zdjęć\n" " w aparacie.\n" "\n" " Ustawienia konfiguracji aparatu sÄ… oparte na\n" " Olympusie 3040 i prawdopodobnie niepeÅ‚ne.\n" " JeÅ›li ustawienia sÄ… peÅ‚ne dla używanego aparatu,\n" " albo jesteÅ› w stanie napisać kod obsÅ‚ugujÄ…cy peÅ‚nÄ…\n" " konfiguracjÄ™, proszÄ™ skontaktować siÄ™ z listÄ…\n" " dyskusyjnÄ… programistów gphoto.\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "Plik do przesÅ‚ania ma zerowÄ… dÅ‚ugość" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "Za maÅ‚o dostÄ™pnej pamiÄ™ci na karcie pamiÄ™ci" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Nie można uzyskać nazwy folderu zawierajÄ…cego zdjÄ™cia" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "PrzesyÅ‚anie do aparatu jest obsÅ‚ugiwane tylko w folderze '%s'" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Najlepsza" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (nieznany)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "PrÄ™dkość migawki (mikrosekundy, 0 auto)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Czarno-biaÅ‚y" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "BiaÅ‚a tablica" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Czarna tablica" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "Jasność/kontrast" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "Jasność+" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "Jasność-" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Skylight" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "NieskoÅ„czoność/Rybie oko" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "Tryb pomiaru punktu" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1.6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2.5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "Automatyczne wyłączanie (host) (w sekundach)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "Po jakim czasie aparat ma siÄ™ wyłączać kiedy jest podłączony do komputera?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "Automatyczne wyłączanie (pole) (w sekundach)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "Po jakim czasie aparat ma siÄ™ wyłączać kiedy nie jest podłączony do " "komputera?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "Automatyczne wyłączanie LCD (w sekundach)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Ustawienia zdjęć" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 msgid "standard" msgstr "normalna" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "Najwyższa" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "kolor" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "czerÅ„ i biel" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "Uwaga: brak karty pamiÄ™ci, niektóre wartoÅ›ci mogÄ… być nieprawidÅ‚owe\n" #: camlibs/sierra/sierra.c:1948 #, c-format msgid "Camera Model: %s\n" msgstr "Model aparatu: %s\n" #: camlibs/sierra/sierra.c:1957 #, c-format msgid "Serial Number: %s\n" msgstr "Numer seryjny: %s\n" #: camlibs/sierra/sierra.c:1960 #, c-format msgid "Software Rev.: %s\n" msgstr "Wersja oprogramowania: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, c-format msgid "Frames Taken: %i\n" msgstr "Wykonanych zdjęć: %i\n" #: camlibs/sierra/sierra.c:1971 #, c-format msgid "Frames Left: %i\n" msgstr "PozostaÅ‚o zdjęć: %i\n" #: camlibs/sierra/sierra.c:1973 #, c-format msgid "Battery Life: %i\n" msgstr "Czas życia baterii: %i\n" #: camlibs/sierra/sierra.c:1975 #, c-format msgid "Memory Left: %i bytes\n" msgstr "PozostaÅ‚o pamiÄ™ci: %i bajtów\n" #: camlibs/sierra/sierra.c:1980 #, c-format msgid "Date: %s" msgstr "Data: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "PodrÄ™cznik do aparatu niedostÄ™pny.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "TrochÄ™ uwag o aparatach Epson:\n" "- Niektórych parametrów nie da siÄ™ zmieniać zdalnie:\n" " * powiÄ™kszenia\n" " * ogniskowej\n" " * wÅ‚asnej konfiguracji balansu bieli\n" "- Konfiguracja zostaÅ‚a wstecznie rozpracowana przy użyciu\n" " PhotoPC 3000z, jeÅ›li aparat zachowuje siÄ™ inaczej, proszÄ™\n" " wysÅ‚ać list na adres %s (po angielsku)\n" #: camlibs/sierra/sierra.c:2060 msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Kilka uwag o aparatach Olympus (i innych?):\n" "(1) Konfiguracja aparatu:\n" " Wartość 0 oznacza domyÅ›lnÄ… (auto).\n" "(2) Olympus C-3040Z (może także C-2040Z i inne) ma\n" " tryb USB PC Control. Aby przełączyć aparat w ten\n" " tryb, należy włączyć aparat, otworzyć drzwiczki\n" " dostÄ™pu do karty pamiÄ™ci, a nastÄ™pnie przycisnąć\n" " i przytrzymać oba przyciski menu i LCD aż pojawi\n" " siÄ™ menu sterowania aparatem, po czym ustawić opcjÄ™\n" " na ON.\n" "(3) Po przełączeniu trybu LCD na 'Monitor' lub\n" " 'Normalny' nie należy zapomnieć o przełączeniu\n" " z powrotem na 'Off' przed rozłączeniem. W przeciwnym\n" " wypadku nie można używać przycisków aparatu.\n" " W przypadku zakoÅ„czenia pracy w tym stanie należy\n" " ponownie podłączyć aparat do komputera i przełączyć\n" " LCD na 'Off'." #: camlibs/sierra/sierra.c:2087 msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "Biblioteka sierra SPARClite\n" "Scott Fritzinger \n" "ObsÅ‚uga aparatów cyfrowych opartych na sierra\n" "w tym Olympus, Nikon, Epson, Pentax i innych.\n" "\n" "PodziÄ™kowania dla Data Engines (www.dataengines.com)\n" "za wykorzystanie ich Olympusa C-3030Z do implementacji\n" "obsÅ‚ugi USB." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (nieznany)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Sterownik Sipix StyleCam Blink\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Nie udaÅ‚o siÄ™ zastosować ustawieÅ„ USB" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "Sterownik dostÄ™pu do aparatów SiPix Web2." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket\n" "Lee Benfield \n" "Sterownik dostÄ™pu do aparatów Smal Ultrapocket i wersji OEM (slimshot)" #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Aparat Sonix.\n" "Zawiera %i zdjÄ™cie. \n" msgstr[1] "" "Aparat Sonix.\n" "Zawiera %i zdjÄ™cia. \n" msgstr[2] "" "Aparat Sonix.\n" "Zawiera %i zdjęć. \n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" "Ten sterownik obsÅ‚uguje niektóre aparaty z ukÅ‚adem Sonix sn9c2028.\n" "ObsÅ‚ugiwane sÄ… nastÄ™pujÄ…ce operacje:\n" " - miniaturki dla interfejsu graficznego\n" " - peÅ‚ne obrazy w formacie PPM\n" " - usuwanie wszystkich obrazów\n" " - usuwanie ostatniego obrazu (może nie dziaÅ‚ać na części aparatów Sonix)\n" " - robienie zdjęć do aparatu (\t\tjw.\t\t)\n" "JeÅ›li zostanÄ… znalezione w aparacie klatki filmów, sÄ… Å›ciÄ…gane jako\n" "kolejne nieruchome zdjÄ™cia lub pliki AVI, zależnie od modelu.\n" "Miniaturki dla plików AVI to nieruchome zdjÄ™cia zrobione z pierwszej " "klatki.\n" "Nie można usuwać pojedynczych zdjęć z wyjÄ…tkiem ostatniego.\n" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "Biblioteka dla aparatów Sonix\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "ObsÅ‚uga aparatów cyfrowych Sony SDC-F1 Digital Camera\n" "M. Adam Kendall \n" "Oparto na interfejsie linii poleceÅ„ chotplay,\n" "który napisaÅ‚ Ken-ichi Hayashi\n" "Port Gphoto2 wykonaÅ‚ Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Biblioteka gPhoto Sony DSC-F55/505\n" "ObsÅ‚uguje Sony MSAC-SR1 i wkÅ‚ad pamiÄ™ci używany przez DCR-PC100\n" "Oryginalnie napisaÅ‚ Mark Davies \n" "Port gPhoto2 wykonaÅ‚ Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "Wersja firmware'u: %8s\n" "ZdjÄ™cia: %i\n" "CaÅ‚a pamięć: %ikB\n" "Wolna pamięć: %ikB\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "Wersja firmware'u: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Sterownik Soundvision\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "FLASH:\n" " Plików: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM:\n" " Plików: %d\n" " Obrazów: %4d\n" " Filmów: %4d\n" "Miejsce użyte: %8d\n" "Miejsce wolne: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "Biblioteka spca50x v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" "Ten aprarat USB ma chipset S&Q.\n" "CaÅ‚kowita liczba wykonanych zdjęć to %i\n" "Część z nich mogÅ‚o być filmami zawierajÄ…cymi\n" "wiele klatek\n" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" "Dla aparatów z ukÅ‚adem S&Q Technologies.\n" "Powinien dziaÅ‚ać z gtkam. ZdjÄ™cia bÄ™dÄ… zapisane w formacie PPM.\n" "\n" "Wszystkie znane aparaty S&Q majÄ… dwa ustawienia rozdzielczoÅ›ci.\n" "Co one oznaczajÄ…, zależy od konkretnego aparatu.\n" "Niektóre z tych aparatów pozwalajÄ… na usuwanie wszystkich zdjęć.\n" "WiÄ™kszość nie pozwala.\n" "PrzesyÅ‚anie danych do aparatu nie jest obsÅ‚ugiwane.\n" "Tryb kompresji zdjęć dostÄ™pny w wielu aparatach S&Q jest\n" "obsÅ‚ugiwany do pewnego poziomu.\n" "JeÅ›li zostanÄ… znalezione w aparacie, filmy sÄ… widoczne jako podkatalogi.\n" "Gtkam Å›ciÄ…gnie je oddzielnie. Kiedy filmy sÄ… obecne w aparacie, przed\n" "nazwÄ… aparatu jest maÅ‚y trójkÄ…t. JeÅ›li nie ma żadnych folderów na liÅ›cie,\n" "należy kliknąć na tym maÅ‚ym trójkÄ…cie, żeby siÄ™ pojawiÅ‚a. NastÄ™pnie\n" "można kliknąć na folderze aby do niego wejść i zobaczyć lub Å›ciÄ…gnąć " "klatki.\n" "Klatki bÄ™dÄ… Å›ciÄ…gniÄ™te jako osobne zdjÄ™cia ze specjalnymi nazwami\n" "okreÅ›lajÄ…cymi z którego filmu pochodzÄ…. W ten sposób można swobodnie\n" "wybrać zapis klatek filmu do osobnych katalogów, lub nie.\n" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "Ogólny sterownik sq905\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "Ramka cyfrowa USB ma ukÅ‚ad ST2205\n" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "Ramki cyfrowe oparte na ST2205 sÄ… w różnych rozdzielczoÅ›ciach.\n" "Sterownik gphoto dla tych urzÄ…dzeÅ„ pozwala Å›ciÄ…gać,\n" "przesyÅ‚ać i usuwać zdjÄ™cia z ramki cyfrowej." #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "Sterownik ramki cyfrowej USB ST2205\n" "Hans de Goede \n" "Ten sterownik umożliwia Å›ciÄ…ganie, przesyÅ‚anie i usuwanie zdjęć\n" "z ramki cyfrowej." #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "Orientacja" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "Sterownik do aparatów używajÄ…cych procesora ASIC STV0674.\n" "Protokół wstecznie rozpracowany przy użyciu SnoopyPro\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "ZÅ‚a ekspozycja (prawdopodobnie za maÅ‚o Å›wiatÅ‚a)" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "Informacje dla aparatu opartego o STV0680:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Wersja firmware'u: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "Wersja ASIC: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "ID sensora: %d.%d\n" #: camlibs/stv0680/library.c:562 #, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "" "Aparat jest skonfigurowany dla Å›wiateÅ‚ migajÄ…cych z czÄ™stotliwoÅ›ciÄ… %dHz.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Pamięć w aparacie: %d Mbit.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "Aparat obsÅ‚uguje miniaturki.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "Aparat obsÅ‚uguje filmy.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "ZdjÄ™cia z aparatu sÄ… monochromatyczne.\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "Aparat ma pamięć.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "Aparat obsÅ‚uguje formaty obrazu: " #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "ID producenta: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "ID produktu: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "Liczba zdjęć: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "Maksymalna liczba zdjęć: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Szerokość obrazu: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "Wysokość obrazu: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "Rozmiar obrazu: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Szerokość miniaturki: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Wysokość miniaturki: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Rozmiar miniaturki: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Sterownik dla aparatów używajÄ…cych procesora ASIC STV0680.\n" "Protokół rozpracowany wstecznie przy użyciu CommLite Beta 5\n" "Carsten Weinholz \n" "Rozszerzono dla aparatów Aiptek PenCam oraz innych STM USB Dual-mode." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Pobieranie informacji o %i plikach..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "Biblioteka dla aparatów (Traveler) SX330z (i innych Aldi-cam).\n" "Aparaty innych producentów, jak Jenoptik, Skanhex, Maginon, powinny także " "dziaÅ‚ać.\n" "ProszÄ™ wysyÅ‚ać raporty błędów i komentarze.\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z jest tylko na USB" #: camlibs/topfield/puppy.c:553 msgid "Driver Settings" msgstr "Ustawienia sterownika" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "Tryb turbo" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Biblioteka do Å›ciÄ…gania / przesyÅ‚ania plików z urzÄ…dzeÅ„ Topfield PVR.\n" "Przeniesiono z puppy (c) Peter Urbanec \n" #: camlibs/topfield/puppy.c:659 #, c-format msgid "Downloading %s..." msgstr "ÅšciÄ…ganie %s..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "Sterownik Toshiba pdr-m11.\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "Błąd wewnÄ™trzny przy szukaniu camlibów (Å›cieżka zbyt dÅ‚uga?)." #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Wczytywanie sterowników do aparatów z '%s'..." #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "WystÄ…piÅ‚ błąd w bibliotece io ('%s'): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Nie udaÅ‚o siÄ™ wykryć żadnego aparatu" #: libgphoto2/gphoto2-camera.c:750 #, c-format msgid "Could not detect any camera at port %s" msgstr "Nie udaÅ‚o siÄ™ wykryć żadnego aparatu na porcie %s" #: libgphoto2/gphoto2-camera.c:774 msgid "You have to set the port prior to initialization of the camera." msgstr "Trzeba ustawić port przed inicjalizacjÄ… aparatu." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Nie udaÅ‚o siÄ™ wczytać wymaganego sterownika aparatu '%s' (%s)." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "Sterownik aparatu '%s' nie ma funkcji 'camera_init'." #: libgphoto2/gphoto2-camera.c:864 msgid "This camera does not provide any configuration options." msgstr "Ten aparat nie udostÄ™pnia żadnych opcji konfiguracyjnych." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "Ten aparat nie obsÅ‚uguje ustawiania opcji konfiguracyjnych." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Ten aparat nie obsÅ‚uguje opisów." #: libgphoto2/gphoto2-camera.c:960 msgid "This camera does not provide a manual." msgstr "Ten aparat nie udostÄ™pnia podrÄ™cznika." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "Ten aparat nie dostarcza informacji o sterowniku." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Ten aparat nie może robić zdjęć." #: libgphoto2/gphoto2-camera.c:1056 msgid "This camera can not trigger capture." msgstr "Ten aparat nie może wyzwolić wykonania zdjÄ™cia." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Ten aparat nie może robić podglÄ…du zdjÄ™cia." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "Åšcieżka '%s' nie jest bezwzglÄ™dna." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "Próbowano usunąć '%s' z folderu '%s', ale system plików nie obsÅ‚uguje " "usuwania plików." #: libgphoto2/gphoto2-filesys.c:1259 #, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "Nadal istniejÄ… podkatalogi w folderze '%s/%s', który próbowano usunąć." #: libgphoto2/gphoto2-filesys.c:1264 #, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "Nadal istniejÄ… pliki w folderze '%s/%s', który próbowano usunąć." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "System plików nie obsÅ‚uguje przesyÅ‚ania plików do aparatu." #: libgphoto2/gphoto2-filesys.c:1359 #, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "Folder '%s' zawiera tylko %i plików, a żądano pliku o numerze %i." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Nie udaÅ‚o siÄ™ odnaleźć pliku '%s' w folderze '%s'." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Nie udaÅ‚o siÄ™ odnaleźć pliku '%s'." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "System plików nie obsÅ‚uguje pobierania plików" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Nieznany rodzaj pliku %i." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "System plików nie obsÅ‚uguje pobierania informacji o plikach" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "System plików nie obsÅ‚uguje ustawiania informacji o plikach" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "" "Atrybutów tylko do odczytu, jak szerokość i wysokość, nie można zmienić." #: libgphoto2/gphoto2-filesys.c:2455 msgid "The filesystem doesn't support getting storage information" msgstr "System plików nie obsÅ‚uguje pobierania informacji o noÅ›niku" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Dane uszkodzone" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Plik istnieje" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Nieznany model" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Nie odnaleziono katalogu" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Nie odnaleziono pliku" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "Katalog istnieje" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "Trwa operacja wejÅ›cia/wyjÅ›cia" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "Åšcieżka nie jest bezwzglÄ™dna" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Operacja anulowana" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "Aparat nie zakoÅ„czyÅ‚ operacji" #: libgphoto2/gphoto2-result.c:57 msgid "OS error in camera communication" msgstr "Błąd systemu operacyjnego podczas komunikacji z aparatem" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "Za maÅ‚o wolnego miejsca" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Nieznany błąd biblioteki aparatu" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Nieznany błąd" #~ msgid "Small Fine JPEG (S1 Fine)" #~ msgstr "MaÅ‚y dobry JPEG (S1 Fine)" #~ msgid "Small Normal JPEG (S1 Normal)" #~ msgstr "MaÅ‚y normalny JPEG (S1 Normal)" #~ msgid "RAW + Small Fine JPEG (S1 Fine)" #~ msgstr "RAW + maÅ‚y dobry JPEG (S1 Fine)" #~ msgid "mRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "mRAW + maÅ‚y dobry JPEG (S1 Fine)" #~ msgid "sRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "sRAW + maÅ‚y dobry JPEG (S1 Fine)" #~ msgid "RAW + Small Normal JPEG (S1 Normal)" #~ msgstr "RAW + maÅ‚y normalny JPEG (S1 Normal)" #~ msgid "mRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "mRAW + maÅ‚y normalny JPEG (S1 Normal)" #~ msgid "sRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "sRAW + maÅ‚y normalny JPEG (S1 Normal)" #~ msgid "Unknown (%04x)" #~ msgstr "Nieznany (%04x)" libgphoto2-2.5.9/po/zh_CN.po0000644000175000001440000135267012623156274012522 00000000000000# Simplified Chinese Translation. # Copyright © 2000-2002 # Wang Li , 2002 # msgid "" msgstr "" "Project-Id-Version: gphoto2\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2002-11-21 11:02+0800\n" "Last-Translator: Wang Li \n" "Language-Team: zh_CN \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" # camlibs/polaroid/pdc700.c:981 camlibs/sierra/sierra.c:776 # camlibs/sierra/sierra.c:1353 #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 #, fuzzy msgid "Picture Frame Configuration" msgstr "相机é…ç½®" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "" # camlibs/barbie/barbie.c:149 #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "照片数é‡ï¼š%i\n" "固件版本:%s" # camlibs/barbie/barbie.c:159 #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "ç”±æ­¤äººå¯¹å›¾åƒæ•°æ®è¿›è¡Œäº†åå‘工程:\n" "Jeff Laing \n" "\n" "æ ¹æ®ç½‘上找到的文档实现。由 Vision\n" " 授æƒã€‚" # camlibs/canon/library.c:774 #: camlibs/canon/canon.c:645 #, fuzzy, c-format msgid "Could not create directory %s." msgstr "无法创建目录 \\DCIM。" # camlibs/canon/library.c:774 #: camlibs/canon/canon.c:648 #, fuzzy, c-format msgid "Could not remove directory %s." msgstr "无法创建目录 \\DCIM。" #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "" #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" # camlibs/canon/canon.c:651 #: camlibs/canon/canon.c:2554 #, fuzzy, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "å称“%sâ€(%i 个字符)太长(%i 个字符),最多å…许 30 个字符。" #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "" #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "" # camlibs/canon/canon.c:1490 #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "文件已å—åˆ°ä¿æŠ¤ã€‚" #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "" # camlibs/stv0680/library.c:590 #: camlibs/canon/library.c:98 #, fuzzy msgid "Thumbnail" msgstr "缩略图大å°ï¼š%d\n" # camlibs/polaroid/pdc700.c:999 #: camlibs/canon/library.c:99 #, fuzzy msgid "Full Image" msgstr "图åƒ" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "" # camlibs/konica/konica.c:107 #: camlibs/canon/library.c:216 #, fuzzy msgid "Auto focus: one-shot" msgstr "自动èšç„¦é”™è¯¯ã€‚" # camlibs/konica/konica.c:107 #: camlibs/canon/library.c:217 #, fuzzy msgid "Auto focus: AI servo" msgstr "自动èšç„¦é”™è¯¯ã€‚" # camlibs/konica/konica.c:107 #: camlibs/canon/library.c:218 #, fuzzy msgid "Auto focus: AI focus" msgstr "自动èšç„¦é”™è¯¯ã€‚" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/canon/library.c:219 #, fuzzy msgid "Manual focus" msgstr "无手册" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/canon/library.c:224 #, fuzzy msgid "Beep off" msgstr "LED 模å¼" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/canon/library.c:225 #, fuzzy msgid "Beep on" msgstr "LED 模å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 #, fuzzy msgid "Flash off" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/canon/library.c:231 #, fuzzy msgid "Flash on" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/canon/library.c:232 #, fuzzy msgid "Flash auto" msgstr "é—ªå…‰ç¯æ¨¡å¼" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/canon/library.c:267 #, fuzzy msgid "Manual 2" msgstr "无手册" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/canon/library.c:268 #, fuzzy msgid "Far scene" msgstr "è§å…‰" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/canon/library.c:269 #, fuzzy msgid "Fast shutter" msgstr "快门速度 (ç§’)" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "" # camlibs/sierra/sierra.c:858 camlibs/sierra/sierra.c:867 # camlibs/sierra/sierra.c:1173 #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "棕è¤è‰²" # camlibs/sierra/sierra.c:921 camlibs/sierra/sierra.c:932 # camlibs/sierra/sierra.c:1220 #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 #, fuzzy msgid "Portrait" msgstr "对比度-" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "" # camlibs/sierra/sierra.c:978 camlibs/sierra/sierra.c:983 # camlibs/sierra/sierra.c:1254 camlibs/sierra/sierra.c:1450 # camlibs/sierra/sierra.c:1453 camlibs/sierra/sierra.c:1666 #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "巨大" #: camlibs/canon/library.c:277 msgid "BW" msgstr "" # camlibs/konica/library.c:777 camlibs/konica/library.c:1010 #: camlibs/canon/library.c:278 #, fuzzy msgid "PanFocus" msgstr "èšç„¦" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 #, fuzzy msgid "Neutral" msgstr "普通" #: camlibs/canon/library.c:282 #, fuzzy msgid "Long shutter" msgstr "èšç„¦ä½ç½®" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "" # camlibs/dimera/dimera3500.c:684 camlibs/dimera/dimera3500.c:850 # camlibs/dimera/dimera3500.c:918 #: camlibs/canon/library.c:285 #, fuzzy msgid "Indoor" msgstr "户外" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "" #: camlibs/canon/library.c:292 #, fuzzy msgid "Digital macro" msgstr "数字缩放" # camlibs/sierra/sierra.c:1495 camlibs/sierra/sierra.c:1498 # camlibs/sierra/sierra.c:1698 #: camlibs/canon/library.c:293 #, fuzzy msgid "MyColors" msgstr "彩色" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" # camlibs/canon/library.c:165 camlibs/canon/library.c:889 # camlibs/canon/library.c:902 #: camlibs/canon/library.c:497 #, fuzzy, c-format msgid "Camera unavailable: %s" msgstr "相机ä¸å¯ç”¨" # camlibs/canon/library.c:176 #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "关闭相机" # camlibs/canon/library.c:232 #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "æ•获图åƒå‡ºé”™" # camlibs/canon/library.c:267 #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "无法获å–ç£ç›˜å:%s" # camlibs/canon/library.c:268 #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "ä¸çŸ¥ç¼˜ç”±" # camlibs/canon/library.c:275 #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "无法获å–ç£ç›˜ä¿¡æ¯ï¼š%s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "" # libgphoto2/gphoto2-filesys.c:1199 #: camlibs/canon/library.c:777 #, fuzzy, c-format msgid "No audio file could be found for %s" msgstr "在文件夹“%2$sâ€ä¸­æ— æ³•找到文件“%1$sâ€ã€‚" # camlibs/canon/library.c:568 #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " 驱动器 %s\n" " 共计 %11s 字节\n" " å¯ç”¨ %11s 字节" # camlibs/canon/library.c:576 camlibs/canon/library.c:582 # camlibs/canon/library.c:851 camlibs/canon/library.c:857 #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "交æµå˜åދ噍" # camlibs/canon/library.c:576 camlibs/canon/library.c:582 # camlibs/canon/library.c:851 camlibs/canon/library.c:857 #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "使用电池" # camlibs/canon/library.c:578 camlibs/canon/library.c:853 #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "电力充足" # camlibs/canon/library.c:578 camlibs/canon/library.c:853 #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "电力ä¸è¶³" # camlibs/canon/library.c:586 #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "ä¸å¯ç”¨ï¼š%s" # camlibs/canon/library.c:598 #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (主机时间 %s%i ç§’)" # camlibs/canon/library.c:608 #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "相机鉴定:\n" " åž‹å·ï¼š%s\n" " 所有者:%s\n" "\n" "电æºçжæ€ï¼š%s\n" "\n" "闪存ç£ç›˜ä¿¡æ¯ï¼š\n" "%s\n" "\n" "时间:%s\n" # camlibs/canon/library.c:625 #: camlibs/canon/library.c:1145 #, fuzzy msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "佳能 PowerShot 系列驱动程åºç”±\n" "Wolfgang G. Reissnegger,\n" "Werner Almesberger,\n" "Edouard Lafargue,\n" "Philippe Marzouk 编写\n" "A5 ç”± Ole W. Saastad\n" "Holger Klemm 添加\n" # camlibs/canon/library.c:664 #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "删除文件出错" # camlibs/canon/library.c:680 #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "删除相关缩略图文件出错" # camlibs/canon/library.c:713 #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "è¯¥ç›¸æœºä¸æ”¯æŒé«˜äºŽ 57600 的速度的上载" # camlibs/canon/library.c:730 #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "无法获å–闪存驱动字符" # camlibs/canon/library.c:754 #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "无法上载,没有å¯ç”¨çš„空闲文件夹了ï¼\n" "已有 999 个佳能文件夹å称存在而且æ¯ä¸ªæ–‡ä»¶å¤¹ä¸­éƒ½æœ‰ç…§ç‰‡ AUT_9999.JPG。" # camlibs/canon/library.c:774 #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "无法创建目录 \\DCIM。" # camlibs/canon/library.c:780 #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "无法创建目标目录。" # camlibs/canon/library.c:806 #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "相机åŠé©±åЍ噍é…ç½®" # camlibs/sierra/sierra.c:1048 camlibs/sierra/sierra.c:1510 #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "相机设置" # camlibs/canon/library.c:815 camlibs/canon/library.c:885 #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 #, fuzzy msgid "Owner Name" msgstr "所有者姓å" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 #, fuzzy msgid "Capture Size Class" msgstr "照片设置" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "ISO 速度" # camlibs/sierra/sierra.c:802 camlibs/sierra/sierra.c:842 # camlibs/sierra/sierra.c:874 camlibs/sierra/sierra.c:904 # camlibs/sierra/sierra.c:935 camlibs/sierra/sierra.c:966 # camlibs/sierra/sierra.c:990 camlibs/sierra/sierra.c:1012 # camlibs/sierra/sierra.c:1041 camlibs/sierra/sierra.c:1385 # camlibs/sierra/sierra.c:1413 camlibs/sierra/sierra.c:1436 # camlibs/sierra/sierra.c:1458 camlibs/sierra/sierra.c:1484 # camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1571 #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 #, fuzzy msgid "Unknown" msgstr "%i (未知)" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 #, fuzzy msgid "Shooting mode" msgstr "快门速度 (ç§’)" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 #, fuzzy msgid "Shutter Speed" msgstr "快门速度 (ç§’)" # camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1283 #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "缩放" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "光圈" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "æ›å…‰è¡¥å¿" # camlibs/konica/library.c:729 camlibs/konica/library.c:960 #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 #, fuzzy msgid "Image Format" msgstr "日期格å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "èšç„¦æ¨¡å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/konica/library.c:647 camlibs/konica/library.c:858 #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "鸣笛" # camlibs/sierra/sierra.c:1048 camlibs/sierra/sierra.c:1510 #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 #, fuzzy msgid "Camera Actions" msgstr "相机设置" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "" # camlibs/polaroid/pdc700.c:981 camlibs/sierra/sierra.c:776 # camlibs/sierra/sierra.c:1353 #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 #, fuzzy msgid "Camera Status Information" msgstr "相机é…ç½®" # camlibs/sierra/sierra.c:1806 #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 #, fuzzy msgid "Camera Model" msgstr "%s相机型å·ï¼š%s\n" # camlibs/konica/library.c:633 camlibs/konica/library.c:844 # camlibs/polaroid/pdc700.c:1005 camlibs/polaroid/pdc700.c:1018 # camlibs/polaroid/pdc700.c:1088 #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "日期和时间" # camlibs/canon/library.c:827 #: camlibs/canon/library.c:1932 msgid "Error" msgstr "错误" # camlibs/stv0680/library.c:525 #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 #, fuzzy msgid "Firmware Version" msgstr "固件版本:%d.%d\n" # camlibs/dimera/dimera3500.c:539 #: camlibs/canon/library.c:1956 #, fuzzy msgid "Power" msgstr "æ— ç”µæºæŒ‡ç¤ºç¯" # camlibs/canon/library.c:867 #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "驱动器" # camlibs/canon/library.c:870 camlibs/canon/library.c:912 #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "列出所有文件" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "ä¸Šä¼ æ—¶ä¿æŒæ–‡ä»¶å" # camlibs/canon/library.c:165 camlibs/canon/library.c:889 # camlibs/canon/library.c:902 #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "相机ä¸å¯ç”¨" # camlibs/canon/library.c:892 #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "所有者姓å已改å˜" # camlibs/canon/library.c:894 #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "æ— æ³•æ”¹å˜æ‰€æœ‰è€…å§“å" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "" # camlibs/canon/library.c:892 #: camlibs/canon/library.c:2056 #, fuzzy msgid "ISO speed changed" msgstr "所有者姓å已改å˜" # camlibs/canon/library.c:894 #: camlibs/canon/library.c:2058 #, fuzzy msgid "Could not change ISO speed" msgstr "æ— æ³•æ”¹å˜æ‰€æœ‰è€…å§“å" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/canon/library.c:2085 #, fuzzy msgid "Shooting mode changed" msgstr "快门速度 (ç§’)" # camlibs/canon/library.c:894 #: camlibs/canon/library.c:2087 #, fuzzy msgid "Could not change shooting mode" msgstr "æ— æ³•æ”¹å˜æ‰€æœ‰è€…å§“å" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/canon/library.c:2114 #, fuzzy msgid "Shutter speed changed" msgstr "快门速度 (ç§’)" # camlibs/canon/library.c:894 #: camlibs/canon/library.c:2116 #, fuzzy msgid "Could not change shutter speed" msgstr "æ— æ³•æ”¹å˜æ‰€æœ‰è€…å§“å" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 #, fuzzy msgid "Invalid aperture setting" msgstr "照片设置" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 #, fuzzy msgid "Aperture changed" msgstr "照片设置" # camlibs/canon/library.c:894 #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 #, fuzzy msgid "Could not change aperture" msgstr "æ— æ³•æ”¹å˜æ‰€æœ‰è€…å§“å" #: camlibs/canon/library.c:2167 #, fuzzy msgid "Invalid exposure compensation setting" msgstr "æ›å…‰è¡¥å¿" #: camlibs/canon/library.c:2170 #, fuzzy msgid "Exposure compensation changed" msgstr "æ›å…‰è¡¥å¿" #: camlibs/canon/library.c:2172 #, fuzzy msgid "Could not change exposure compensation" msgstr "æ›å…‰è¡¥å¿" # camlibs/sierra/sierra.c:1048 camlibs/sierra/sierra.c:1510 #: camlibs/canon/library.c:2194 #, fuzzy msgid "Invalid image format setting" msgstr "相机设置" # camlibs/konica/konica.c:101 #: camlibs/canon/library.c:2198 #, fuzzy msgid "Image format changed" msgstr "图åƒå·²å—åˆ°ä¿æŠ¤ã€‚" # camlibs/canon/library.c:894 #: camlibs/canon/library.c:2200 #, fuzzy msgid "Could not change image format" msgstr "æ— æ³•æ”¹å˜æ‰€æœ‰è€…å§“å" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/canon/library.c:2226 #, fuzzy msgid "Focus mode changed" msgstr "èšç„¦æ¨¡å¼" # camlibs/canon/library.c:894 #: camlibs/canon/library.c:2228 #, fuzzy msgid "Could not change focus mode" msgstr "æ— æ³•æ”¹å˜æ‰€æœ‰è€…å§“å" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "" # camlibs/canon/library.c:892 #: camlibs/canon/library.c:2255 #, fuzzy msgid "Beep mode changed" msgstr "所有者姓å已改å˜" # camlibs/canon/library.c:894 #: camlibs/canon/library.c:2257 #, fuzzy msgid "Could not change beep mode" msgstr "æ— æ³•æ”¹å˜æ‰€æœ‰è€…å§“å" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "" # camlibs/canon/library.c:894 #: camlibs/canon/library.c:2276 #, fuzzy msgid "Could not change zoom level" msgstr "æ— æ³•æ”¹å˜æ‰€æœ‰è€…å§“å" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "" # camlibs/kodak/dc120/dc120.c:31 #: camlibs/canon/library.c:2332 #, fuzzy msgid "Flash mode changed" msgstr "闪存å¡" # camlibs/canon/library.c:730 #: camlibs/canon/library.c:2334 #, fuzzy msgid "Could not change flash mode" msgstr "无法获å–闪存驱动字符" # camlibs/canon/library.c:905 #: camlibs/canon/library.c:2347 msgid "time set" msgstr "时间设置" # camlibs/canon/library.c:907 #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "无法设置时间" # camlibs/canon/library.c:1107 #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "给出未知端å£ç±»åž‹ %i = 0x%x。ä¸å¯èƒ½åˆå§‹åŒ–。" # camlibs/canon/serial.c:625 camlibs/canon/serial.c:690 #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "电池没电,关闭相机。" # camlibs/canon/serial.c:628 #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "错误:未预期的消æ¯" # camlibs/canon/serial.c:638 #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "错误:过多的消æ¯" # camlibs/canon/serial.c:667 #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "错误:顺åºé”™è¯¯ã€‚" # camlibs/canon/serial.c:672 #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "错误:未预期的包类型。" # camlibs/canon/serial.c:682 #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "é”™è¯¯ï¼šæ¶ˆæ¯æ ¼å¼é”™è¯¯ã€‚" # camlibs/canon/serial.c:694 #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "错误:未预期的消æ¯2。" # camlibs/canon/serial.c:888 #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "正在上载文件..." # camlibs/canon/serial.c:946 camlibs/digita/digita.c:256 #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "æ­£åœ¨èŽ·å–æ–‡ä»¶..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" # camlibs/canon/serial.c:1172 #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "改å˜é€Ÿåº¦å‡ºé”™ã€‚" # camlibs/canon/serial.c:1181 #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "正在é‡ç½®åè®®..." # camlibs/canon/serial.c:1190 #: camlibs/canon/serial.c:1311 #, fuzzy msgid "Camera OK." msgstr "相机就绪。\n" # camlibs/canon/serial.c:1203 #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "正在寻找相机..." # camlibs/canon/serial.c:1213 #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "正试图与相机è”络..." # camlibs/canon/serial.c:1217 #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "通讯错误 1" # camlibs/canon/serial.c:1227 camlibs/canon/serial.c:1231 # camlibs/dimera/dimera3500.c:970 #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "相机无应答" # camlibs/canon/serial.c:1235 #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "ä¸å¯è¯†åˆ«çš„应答" # camlibs/canon/usb.c:871 #: camlibs/canon/serial.c:1376 #, fuzzy, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "已监测到一个“%sâ€ã€‚" # libgphoto2/gphoto2-result.c:46 #: camlibs/canon/serial.c:1384 #, fuzzy, c-format msgid "Unknown model \"%s\"" msgstr "未知型å·" # camlibs/canon/serial.c:1278 #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "错误的 EOT" # camlibs/canon/serial.c:1284 #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "通讯错误 2" # camlibs/canon/serial.c:1307 #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "通讯错误 3" # camlibs/canon/serial.c:1311 #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "正在改å˜é€Ÿåº¦... 请等待..." # camlibs/canon/serial.c:1316 #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "改å˜é€Ÿåº¦å‡ºé”™" # camlibs/canon/serial.c:1328 #: camlibs/canon/serial.c:1454 #, fuzzy msgid "Error waiting for ACK during initialization, retrying" msgstr "åˆå§‹åŒ–é‡è¯•中等待 ACK 时出错" # camlibs/canon/serial.c:1334 #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "åˆå§‹åŒ–中等待 ACK 时出错" # camlibs/canon/serial.c:1338 #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "已连接到相机" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "" #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "" # camlibs/canon/serial.c:1400 #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "正在获å–缩略图..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "" # camlibs/ricoh/library.c:242 #: camlibs/canon/usb.c:236 #, fuzzy msgid "Could not establish initial contact with camera" msgstr "无法检测到任何相机。" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" # camlibs/canon/usb.c:240 #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "相机未就绪,多个“鉴别相机â€è¯·æ±‚å‡å¤±è´¥ï¼š%s" # camlibs/canon/usb.c:240 #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, fuzzy, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "相机未就绪,多个“鉴别相机â€è¯·æ±‚å‡å¤±è´¥ï¼š%s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" # camlibs/canon/usb.c:640 #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "正在接收数æ®..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "" #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" # camlibs/canon/library.c:275 #: camlibs/canon/usb.c:2263 #, fuzzy, c-format msgid "Couldn't read from file \"%s\"" msgstr "无法获å–ç£ç›˜ä¿¡æ¯ï¼š%s" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "" # camlibs/canon/serial.c:888 #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 #, fuzzy msgid "File upload failed." msgstr "正在上载文件..." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "文件太大。你å¯èƒ½éœ€è¦å°†ç›¸æœºå…³é—­å†æ‰“开,æ‰èƒ½ä¸Šä¼ æ›´å¤šæ–‡ä»¶ã€‚" #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" # camlibs/canon/usb.c:871 #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "已监测到一个“%sâ€ã€‚" #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "" # camlibs/dimera/dimera3500.c:347 #: camlibs/casio/casio-qv.c:152 #, fuzzy, c-format msgid "Image type %d not supported" msgstr "图åƒç±»åž‹ä¸æ”¯æŒ" # camlibs/konica/konica.c:101 #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, fuzzy, c-format msgid "Image %s is delete protected." msgstr "图åƒå·²å—åˆ°ä¿æŠ¤ã€‚" #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "" # camlibs/polaroid/pdc700.c:981 camlibs/sierra/sierra.c:776 # camlibs/sierra/sierra.c:1353 #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "相机é…ç½®" # camlibs/polaroid/pdc700.c:172 #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, fuzzy, c-format msgid "Battery" msgstr "电池" # camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1322 #: camlibs/casio/casio-qv.c:275 #, fuzzy msgid "Brightness" msgstr "LCD 亮度" # camlibs/sierra/sierra.c:918 camlibs/sierra/sierra.c:926 # camlibs/sierra/sierra.c:1214 #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 #, fuzzy msgid "Too bright" msgstr "版æƒ" # camlibs/konica/konica.c:104 #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 #, fuzzy msgid "Too dark" msgstr "光线太暗。" # camlibs/kodak/dc240/library.c:572 #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "确认" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" # camlibs/dimera/dimera3500.c:347 #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "图åƒç±»åž‹ä¸æ”¯æŒ" # camlibs/agfa/agfa.c:221 camlibs/digita/digita.c:389 #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "照片数é‡ï¼š%d" # camlibs/digita/digita.c:396 #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " # camlibs/dimera/dimera3500.c:295 #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "ä»…æ”¯æŒæ ¹æ–‡ä»¶å¤¹ - 您请求文件“%sâ€çš„æ–‡ä»¶åˆ—表。" # camlibs/dimera/dimera3500.c:303 camlibs/dimera/dimera3500.c:497 #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "获å–å›¾åƒæ•°é‡æ—¶å‡ºé—®é¢˜" # camlibs/dimera/dimera3500.c:402 camlibs/dimera/dimera3500.c:648 #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "获å–图åƒä¿¡æ¯æ—¶å‡ºé—®é¢˜" # camlibs/dimera/dimera3500.c:433 #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "䏿”¯æŒçš„æ•æ‰ç±»åž‹" # camlibs/dimera/dimera3500.c:518 #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (电池 %d%% 满)" # camlibs/dimera/dimera3500.c:522 #: camlibs/dimera/dimera3500.c:455 #, fuzzy, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 版本 %s %d/%d %d:%d\n" "%d 张照片大约å ç”¨ %d (高分辨率) 或 %d (低分辨率)\n" "相机特性:%s, %s, %s, %s\n" "闪光ç¯ä¸º %s,为 %s 并且为 %s\n" "分辨率设置为 %s\n" "ç›¸æœºä½¿ç”¨ç”µæº %s %s\n" # camlibs/dimera/dimera3500.c:533 camlibs/konica/library.c:744 # camlibs/konica/library.c:984 #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "闪光ç¯" # camlibs/dimera/dimera3500.c:533 #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 #, fuzzy msgid "No Flash" msgstr "无闪光ç¯" # camlibs/dimera/dimera3500.c:535 #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "åŒå…‰åœˆ" # camlibs/dimera/dimera3500.c:535 #: camlibs/dimera/dimera3500.c:468 #, fuzzy msgid "No Dual Iris" msgstr "éžåŒå…‰åœˆ" # camlibs/dimera/dimera3500.c:537 #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "分辨率切æ¢" # camlibs/dimera/dimera3500.c:537 #: camlibs/dimera/dimera3500.c:470 #, fuzzy msgid "No Resolution Switch" msgstr "无分辨率切æ¢" # camlibs/dimera/dimera3500.c:539 #: camlibs/dimera/dimera3500.c:472 #, fuzzy msgid "No Power Light" msgstr "æ— ç”µæºæŒ‡ç¤ºç¯" # camlibs/dimera/dimera3500.c:541 #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "å¼€" # camlibs/dimera/dimera3500.c:541 #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "å…³" # camlibs/dimera/dimera3500.c:543 #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "就绪" # camlibs/dimera/dimera3500.c:543 #: camlibs/dimera/dimera3500.c:476 #, fuzzy msgid "Not ready" msgstr "未就绪" # camlibs/dimera/dimera3500.c:545 #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "处于填充模å¼" # camlibs/dimera/dimera3500.c:545 #: camlibs/dimera/dimera3500.c:478 #, fuzzy msgid "Not in fill mode" msgstr "ä¸å¤„于填充模å¼" # camlibs/dimera/dimera3500.c:547 #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "低 (320x240)" # camlibs/dimera/dimera3500.c:547 #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "高 (640x480)" # camlibs/dimera/dimera3500.c:549 #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "外部" # camlibs/dimera/dimera3500.c:549 #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "内部" # camlibs/dimera/dimera3500.c:559 #: camlibs/dimera/dimera3500.c:492 #, fuzzy msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* 图åƒå¹²æ‰°æˆ–通讯问题ç»å¸¸æ˜¯ç”±ç”µé‡\n" " ä¸è¶³å¯¼è‡´çš„。\n" "* è¯¥ç›¸æœºè¿œç¨‹æ•æ‰çš„å›¾åƒæ˜¯å­˜å‚¨åœ¨ä¸´\n" " æ—¶ RAM ä¸­ï¼Œè€Œä¸æ˜¯åœ¨é—ªå­˜å¡ä¸­ã€‚\n" "* æ•æ‰æ‰€æœ‰å›¾åƒæ—¶çš„æ›å…‰æŽ§åˆ¶æ˜¯ç”±æ•\n" " æ‰é¢„览函数自动设定的。\n" "* 当å‰å›¾åƒè´¨é‡æ¯”å¯èƒ½çš„图åƒè´¨é‡ä½Žã€‚\n" # camlibs/dimera/dimera3500.c:573 #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "该软件是在属于 StarDot\n" "ç§‘æŠ€çš„ç§æœ‰ä¿¡æ¯çš„帮助下\n" "编制的。\n" "\n" "作者:\n" " Brian Beattie \n" "贡献者:\n" " Chuck Homic \n" " 将原始相机图åƒè½¬æ¢ä¸º RGB æ ¼å¼\n" " Dan Fandrich \n" " 关于åè®®ã€åŽŸå§‹æ•°æ®æ ¼å¼çš„ä¿¡æ¯ã€‚\n" " ç§»æ¤åˆ° gphoto2\n" # camlibs/dimera/dimera3500.c:666 #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "从闪存读å–图åƒå‡ºé—®é¢˜" # camlibs/dimera/dimera3500.c:684 camlibs/dimera/dimera3500.c:850 # camlibs/dimera/dimera3500.c:918 #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "内存耗尽" # camlibs/dimera/dimera3500.c:701 camlibs/dimera/dimera3500.c:737 # camlibs/panasonic/coolshot/library.c:375 camlibs/samsung/samsung.c:211 #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "正在下载图åƒ..." # camlibs/dimera/dimera3500.c:723 camlibs/dimera/dimera3500.c:759 #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "下载图åƒå‡ºé—®é¢˜" # camlibs/dimera/dimera3500.c:731 #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "ç”¨æˆ·å–æ¶ˆä¸‹è½½" # camlibs/dimera/dimera3500.c:865 #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "获å–çŽ°åœºå›¾åƒæœ‰é—®é¢˜" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "æ›å…‰" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 #, fuzzy msgid "Exposure level on preview" msgstr "æ›å…‰æµ‹å®š" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "" # camlibs/dimera/dimera3500.c:937 #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "打开端å£å‡ºé—®é¢˜" # camlibs/dimera/dimera3500.c:947 #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "é‡ç½®ç›¸æœºå‡ºé—®é¢˜" # camlibs/dimera/dimera3500.c:957 #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "设置相机通讯速度出问题" # camlibs/dimera/dimera3500.c:976 #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "看起æ¥è±¡è°ƒåˆ¶è§£è°ƒå™¨ï¼Œè€Œä¸è±¡ç›¸æœº" # camlibs/directory/directory.c:159 #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "正在“%sâ€ä¸­åˆ—举文件..." # camlibs/directory/directory.c:228 #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "正在“%sâ€ä¸­åˆ—举文件夹..." # camlibs/directory/directory.c:195 #: camlibs/directory/directory.c:381 #, fuzzy, c-format msgid "Could not get information about '%s' (%s)." msgstr "无法获å–关于“%sâ€(%m) 的信æ¯ã€‚" # camlibs/directory/directory.c:269 #: camlibs/directory/directory.c:414 #, fuzzy, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "无法从“%2$sâ€ä¸­èŽ·å–关于“%1$sâ€çš„ä¿¡æ¯ (%3$m)。" # camlibs/directory/directory.c:340 #: camlibs/directory/directory.c:462 #, fuzzy, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "无法改å˜â€œ%2$sâ€ä¸­çš„æ–‡ä»¶â€œ%1$sâ€çš„æ—¶é—´(%3$m)。" # camlibs/directory/directory.c:421 #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "无法打开“%sâ€ã€‚" # camlibs/directory/directory.c:506 #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "目录æµè§ˆâ€œç›¸æœºâ€å…许您为您硬盘上的照片编制索引。" # camlibs/directory/directory.c:515 #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "目录æµè§ˆæ¨¡å¼ - ç”± Scott Fritzinger 编制。" # camlibs/directory/directory.c:562 #: camlibs/directory/directory.c:671 #, fuzzy, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "无法删除文件夹“%2$sâ€ä¸­çš„æ–‡ä»¶â€œ%1$sâ€(é”™è¯¯ç  %3$i:%4$m)。" #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" # camlibs/polaroid/pdc700.c:349 #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "相机åªå‘é€ %i ä¸ªå­—èŠ‚ï¼Œä½†æˆ‘ä»¬è‡³å°‘éœ€è¦ %i 个。" # camlibs/ricoh/library.c:242 #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "无法检测到任何相机。" # camlibs/polaroid/pdc700.c:229 #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "收到æ„å¤–çš„æ•°æ® (0x%02x,0x%02x)。" #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "错误的 ESC åºåˆ—:应为 0x%02x,得到 0x%02x。" #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "é”™è¯¯çš„æ•°æ® - 得到 0x%02x,应为 0x%02x。" #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "é”™è¯¯çš„æ•°æ® - 得到 0x%02x,应为 0x%02x 或 0x%02x。" #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "错误的校验和 - 得到 0x%02x,应为 0x%02x。" # camlibs/polaroid/pdc700.c:296 #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "相机拒ç»å‘½ä»¤ã€‚" # camlibs/sierra/sierra.c:1048 camlibs/sierra/sierra.c:1510 #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "相机自行é‡ç½®ã€‚" #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "相机å‘é€äº†æ„外的字节 0x%02x。" # camlibs/konica/lowlevel.c:382 camlibs/polaroid/pdc700.c:314 # camlibs/sierra/library.c:989 #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "正在下载..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "æ— æ³•ä¸ºæ­£åœ¨ä¸‹è½½çš„ç¼©ç•¥å›¾åˆ†é… %i 个字节。" #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "æ— æ³•ä¸ºæ­£åœ¨ä¸‹è½½çš„å›¾ç‰‡åˆ†é… %i 个字节。" # camlibs/polaroid/pdc700.c:296 #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "ç›¸æœºä¸æŽ¥å—作为文件å的“%sâ€ã€‚" #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "无法åˆå§‹åŒ–上载 (相机应答 0x%02x)。" # libgphoto2/gphoto2-camera.c:850 #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "è¯¥ç›¸æœºä¸æ”¯æŒé€Ÿåº¦ %i。" #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "无法将速度设置为 %i (相机应答 %i)。" #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "基于 Thierry Bousch çš„ fujiplay\n" # camlibs/ricoh/library.c:252 #: camlibs/fuji/library.c:319 #, fuzzy, c-format msgid "Bit rate %ld is not supported." msgstr "䏿”¯æŒä½çއ %i" #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "é…置您的 FUJI 相机" # camlibs/sierra/sierra.c:1581 camlibs/sierra/sierra.c:1754 #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "日期和时间" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" # frontends/command-line/actions.c:159 #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "版本:" # frontends/command-line/main.c:384 #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "åž‹å·ï¼š" # frontends/command-line/shell.c:779 #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "å¯ç”¨çš„内存:" #: camlibs/gsmart300/library.c:166 #, fuzzy msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "\n" "Till Adam \n" "æ ¹æ®ä¸€äº›å…¶å®ƒ gphoto2 相机库和由 Mustek å‹å¥½æä¾›çš„ Windows é©±åŠ¨ç¨‹åºæºä»£ç ç¼–制" "çš„æ”¯æŒ Mustek gSmart mini 系列数ç ç›¸æœºçš„库。\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "䏿”¯æŒçš„端å£ç±»åž‹ï¼š%d。该驱动程åºåªæ”¯æŒ USB 照相机。\n" # libgphoto2/gphoto2-camera.c:662 #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "无法é‡ç½®ç›¸æœºã€‚\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, fuzzy, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "æ‚¨çš„ç›¸æœºåªæ”¯æŒåˆ é™¤ç›¸æœºä¸­çš„æœ€åŽä¸€ä¸ªæ–‡ä»¶ã€‚在此情况下,这是文件“%sâ€ã€‚" #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" # camlibs/sierra/sierra.c:1826 #: camlibs/jamcam/jamcam.c:277 #, fuzzy, c-format msgid "Frames Taken : %4d\n" msgstr "%s已用帧:%i\n" # camlibs/jamcam/jamcam.c:280 #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "jamcam 库 v" # camlibs/jamcam/library.c:336 camlibs/jd11/serial.c:455 #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "正在下载数æ®..." # camlibs/jamcam/library.c:494 camlibs/jd11/serial.c:375 #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "正在下载缩略图..." # camlibs/jd11/jd11.c:174 #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "JD11 相机使用该驱动程åºå·¥ä½œå¾—更好。\n" "图åƒä¼ è¾“需è¦ä¸€ä¸ª 115 åƒä½çš„ RS232 接å£ã€‚\n" "驱动程åºå…许您获å–\n" "\n" " - 缩略图 (64x48 PGM æ ¼å¼)\n" " - 全图 (640x480 PPM æ ¼å¼)\n" # camlibs/jd11/jd11.c:187 #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Jenoptik JD11 相机驱动程åºã€‚\n" "使用 WINE å’Œ IDA 对å议进行åå‘工程。" # camlibs/polaroid/pdc700.c:981 camlibs/sierra/sierra.c:776 # camlibs/sierra/sierra.c:1353 #: camlibs/jd11/jd11.c:186 #, fuzzy msgid "JD11 Configuration" msgstr "é…ç½®" # camlibs/jd11/jd11.c:202 camlibs/jd11/jd11.c:254 #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "其它设置" # camlibs/jd11/jd11.c:207 camlibs/jd11/jd11.c:255 #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "闪光ç¯é—ªå…‰æ—¶é—´" # camlibs/jd11/jd11.c:215 camlibs/jd11/jd11.c:263 #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "色彩设置" # camlibs/jd11/jd11.c:221 camlibs/jd11/jd11.c:265 #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "红" # camlibs/jd11/jd11.c:228 camlibs/jd11/jd11.c:270 #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "绿" # camlibs/jd11/jd11.c:235 camlibs/jd11/jd11.c:275 #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "è“" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" # camlibs/kodak/dc120/dc120.c:31 #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "闪存å¡" # camlibs/kodak/dc120/dc120.c:364 #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "柯达 DC120 相机使用 KDC 文件格å¼å­˜å‚¨å›¾åƒã€‚如果您希望æµè§ˆæ‚¨ä»Žç›¸æœºä¸­ä¸‹è½½çš„图" "åƒï¼Œæ‚¨å°±éœ€è¦ä¸‹è½½ç¨‹åºâ€œkdc2tiffâ€ã€‚该程åºå¯ä»¥ä»Ž http://kdc2tiff.sourceforge.net " "得到。" # camlibs/kodak/dc120/dc120.c:376 #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "柯达 DC120 相机库\n" "Scott Fritzinger \n" "柯达 DC120 相机库。\n" "(它有广泛的需求)。" # camlibs/kodak/dc120/library.c:122 camlibs/kodak/dc240/library.c:318 # camlibs/panasonic/dc1000.c:424 camlibs/panasonic/dc1580.c:552 #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "æ­£åœ¨èŽ·å–æ•°æ®..." # camlibs/kodak/dc120/library.c:506 #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "等待完æˆ..." # frontends/command-line/actions.c:141 #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "文件" # libgphoto2/gphoto2-result.c:45 #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "文件类型" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" # camlibs/dimera/dimera3500.c:533 camlibs/konica/library.c:744 # camlibs/konica/library.c:984 #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 #, fuzzy msgid "FlashPix" msgstr "闪光ç¯" # camlibs/konica/library.c:684 camlibs/konica/library.c:896 # camlibs/sierra/sierra.c:786 camlibs/sierra/sierra.c:1117 # camlibs/sierra/sierra.c:1468 camlibs/sierra/sierra.c:1677 #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "文件分辨率" # camlibs/polaroid/pdc700.c:175 #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "文件压缩" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "低 (最佳质é‡)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "中 (良好质é‡)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "高 (普通质é‡)" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "光圈" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "æ›å…‰è¡¥å¿" # camlibs/konica/library.c:749 camlibs/konica/library.c:765 # camlibs/konica/library.c:780 camlibs/konica/library.c:783 # camlibs/konica/library.c:993 camlibs/konica/library.c:1023 # camlibs/sierra/sierra.c:787 camlibs/sierra/sierra.c:793 # camlibs/sierra/sierra.c:827 camlibs/sierra/sierra.c:833 # camlibs/sierra/sierra.c:886 camlibs/sierra/sierra.c:893 # camlibs/sierra/sierra.c:947 camlibs/sierra/sierra.c:954 # camlibs/sierra/sierra.c:1121 camlibs/sierra/sierra.c:1150 # camlibs/sierra/sierra.c:1190 camlibs/sierra/sierra.c:1233 # camlibs/sierra/sierra.c:1396 camlibs/sierra/sierra.c:1402 # camlibs/sierra/sierra.c:1424 camlibs/sierra/sierra.c:1429 # camlibs/sierra/sierra.c:1629 camlibs/sierra/sierra.c:1649 #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "自动" # camlibs/sierra/sierra.c:887 camlibs/sierra/sierra.c:895 # camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1397 # camlibs/sierra/sierra.c:1404 camlibs/sierra/sierra.c:1631 #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "强制" # frontends/command-line/actions.c:168 #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "æ— " #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "红眼闪光ç¯" # camlibs/konica/library.c:649 camlibs/konica/library.c:656 # camlibs/konica/library.c:747 camlibs/konica/library.c:756 # camlibs/konica/library.c:989 camlibs/sierra/sierra.c:1003 # camlibs/sierra/sierra.c:1009 camlibs/sierra/sierra.c:1272 #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "å¼€" # camlibs/konica/library.c:650 camlibs/konica/library.c:653 # camlibs/konica/library.c:746 camlibs/konica/library.c:753 # camlibs/konica/library.c:861 camlibs/konica/library.c:987 # camlibs/sierra/sierra.c:888 camlibs/sierra/sierra.c:897 # camlibs/sierra/sierra.c:1004 camlibs/sierra/sierra.c:1007 # camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1274 # camlibs/sierra/sierra.c:1398 camlibs/sierra/sierra.c:1406 # camlibs/sierra/sierra.c:1633 #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "å…³" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "其它" # camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:468 #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "设置相机时钟" # camlibs/kodak/dc240/library.c:590 #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "端å£é€Ÿåº¦" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "相册åç§°" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "æ ¼å¼åŒ–时在å¡ä¸Šè®¾ç½®çš„å称。" #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "æ ¼å¼åŒ–闪存" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "æ ¼å¼åŒ–å¡ç‰‡å¹¶è®¾ç½®ç›¸å†Œå。" #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "调试" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "另傿•°å€¼è¿è¡Œ\n" "预定义命令。" # camlibs/stv0680/library.c:542 #: camlibs/kodak/dc210/dc210.c:498 #, fuzzy, c-format msgid "Pictures in camera: %d\n" msgstr "相机内置内存:%d å…†ä½ã€‚\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" # camlibs/kodak/dc240/dc240.c:199 #: camlibs/kodak/dc210/dc210.c:506 #, fuzzy, c-format msgid "Total pictures taken: %d\n" msgstr "æ•获照片总数:%d,闪光ç¯é—ªå…‰æ¬¡æ•°ï¼š%d\n" # camlibs/kodak/dc240/dc240.c:199 #: camlibs/kodak/dc210/dc210.c:510 #, fuzzy, c-format msgid "Total flashes fired: %d\n" msgstr "æ•获照片总数:%d,闪光ç¯é—ªå…‰æ¬¡æ•°ï¼š%d\n" # camlibs/stv0680/library.c:525 #: camlibs/kodak/dc210/dc210.c:514 #, fuzzy, c-format msgid "Firmware: %d.%d\n" msgstr "固件版本:%d.%d\n" # libgphoto2/gphoto2-result.c:45 #: camlibs/kodak/dc210/dc210.c:519 #, fuzzy, c-format msgid "Filetype: JPEG (" msgstr "文件类型" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "" #: camlibs/kodak/dc210/dc210.c:527 #, fuzzy, c-format msgid "low compression, " msgstr "文件压缩" #: camlibs/kodak/dc210/dc210.c:529 #, fuzzy, c-format msgid "medium compression, " msgstr "文件压缩" #: camlibs/kodak/dc210/dc210.c:531 #, fuzzy, c-format msgid "high compression, " msgstr "文件压缩" #: camlibs/kodak/dc210/dc210.c:533 #, fuzzy, c-format msgid "unknown compression %d, " msgstr "文件压缩" #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "" # camlibs/minolta/dimagev/dimagev.c:388 #: camlibs/kodak/dc210/dc210.c:556 #, fuzzy, c-format msgid "AC adapter is connected.\n" msgstr "镜头未连接\n" # camlibs/minolta/dimagev/dimagev.c:388 #: camlibs/kodak/dc210/dc210.c:558 #, fuzzy, c-format msgid "AC adapter is not connected.\n" msgstr "镜头未连接\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "" # libgphoto2/gphoto2-result.c:46 #: camlibs/kodak/dc210/dc210.c:580 #, fuzzy, c-format msgid "Unknown zoom mode %d\n" msgstr "未知型å·" #: camlibs/kodak/dc210/dc210.c:586 #, fuzzy, c-format msgid "Exposure compensation: %s\n" msgstr "æ›å…‰è¡¥å¿" #: camlibs/kodak/dc210/dc210.c:588 #, fuzzy, c-format msgid "Exposure compensation: %d\n" msgstr "æ›å…‰è¡¥å¿" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/kodak/dc210/dc210.c:593 #, fuzzy, c-format msgid "Flash mode: auto, " msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/kodak/dc210/dc210.c:595 #, fuzzy, c-format msgid "Flash mode: force, " msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/kodak/dc210/dc210.c:597 #, fuzzy, c-format msgid "Flash mode: off\n" msgstr "é—ªå…‰ç¯æ¨¡å¼" # libgphoto2/gphoto2-result.c:46 #: camlibs/kodak/dc210/dc210.c:599 #, fuzzy, c-format msgid "Unknown flash mode %d, " msgstr "未知型å·" #: camlibs/kodak/dc210/dc210.c:607 #, fuzzy, c-format msgid "red eye flash on.\n" msgstr "红眼闪光ç¯" #: camlibs/kodak/dc210/dc210.c:610 #, fuzzy, c-format msgid "red eye flash off.\n" msgstr "红眼闪光ç¯" # camlibs/dimera/dimera3500.c:947 #: camlibs/kodak/dc210/dc210.c:615 #, fuzzy, c-format msgid "No card in camera.\n" msgstr "é‡ç½®ç›¸æœºå‡ºé—®é¢˜" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "该库已ç»åœ¨æŸ¯è¾¾ DC 215 缩放相机上进行过测试。它å¯èƒ½å¯ä»¥åœ¨ DC200 å’Œ DC210 上工" "作。如果您碰巧拥有这样的相机,请给 koltan@gmx.de å‘é€é‚®ä»¶ä»¥ä¾¿è®©æˆ‘çŸ¥é“æ‚¨æ˜¯å¦åœ¨" "ä½¿ç”¨è¯¥é©±åŠ¨ç¨‹åºæ—¶é‡åˆ°äº†éº»çƒ¦ï¼Œæˆ–者一切正常。" #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "用于柯达 DC215 缩放相机的相机库。\n" "Michael Koltan \n" # camlibs/panasonic/dc1000.c:476 camlibs/panasonic/dc1580.c:599 #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "正在等待..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "傿•° 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "傿•° 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "傿•° 3" # camlibs/kodak/dc240/dc240.c:182 #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "åž‹å·ï¼šæŸ¯è¾¾ %s\n" # camlibs/kodak/dc240/dc240.c:183 #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "固件版本:%d.%02d\n" # camlibs/kodak/dc240/dc240.c:185 #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "电池状æ€ï¼š%s,交æµå˜åŽ‹å™¨ï¼š%s\n" # camlibs/kodak/dc240/dc240.c:189 #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "照片数é‡ï¼š%d\n" # camlibs/kodak/dc240/dc240.c:191 #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "剩余空间:高:%d,中:%d,低:%d\n" # camlibs/kodak/dc240/dc240.c:195 #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "存储å¡çŠ¶æ€ (%d):%s\n" # camlibs/kodak/dc240/dc240.c:199 #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "æ•获照片总数:%d,闪光ç¯é—ªå…‰æ¬¡æ•°ï¼š%d\n" # camlibs/kodak/dc240/dc240.c:213 #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "柯达 DC240 相机库\n" "Scott Fritzinger å’Œ Hubert Figuiere \n" "æ”¯æŒæŸ¯è¾¾ DC240, DC280, DC3400 åŠ DC5000 相机的相机库。\n" "为 gPhoto2 é‡å†™å¹¶æ›´æ–°ã€‚" # camlibs/kodak/dc240/library.c:575 #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "å¼±" # camlibs/kodak/dc240/library.c:578 #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "空" # camlibs/kodak/dc240/library.c:583 camlibs/kodak/dc240/library.c:598 #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "éžæ³•" # camlibs/kodak/dc240/library.c:590 #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "未使用" # camlibs/kodak/dc240/library.c:593 #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "使用中" # camlibs/kodak/dc240/library.c:607 #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "å¡å·²æ‰“å¼€" # camlibs/kodak/dc240/library.c:610 #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "塿œªæ‰“å¼€" # camlibs/kodak/dc240/library.c:614 #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "å¡å°šæœªæ ¼å¼åŒ–" # camlibs/kodak/dc240/library.c:618 #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "æ— å¡" # camlibs/kodak/dc3200/dc3200.c:38 #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "现在正有一个æ“作在进行。该相机在åŒä¸€æ—¶åˆ»ä»…支æŒä¸€ä¸ªæ“ä½œã€‚è¯·ç­‰å¾…ç›´åˆ°å½“å‰æ“作完" "æˆã€‚" # camlibs/kodak/dc3200/dc3200.c:142 #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "ç›¸æœºéžæ´»è·ƒæ—¶é—´å¤§äºŽ 9 ç§’ï¼Œæ­£åœ¨é‡æ–°åˆå§‹åŒ–。\n" # camlibs/kodak/dc3200/dc3200.c:431 #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "已知问题:\n" "\n" "1. 如果柯达 DC3200 没有在 10 ç§’å†…æ”¶åˆ°è‡³å°‘ä¸€ä¸ªå‘½ä»¤ï¼Œå®ƒå°±å°†è¶…æ—¶ï¼Œå¹¶å¿…é¡»é‡æ–°åˆå§‹" "化。如果您å‘çŽ°ç›¸æœºæ²¡æœ‰åº”ç­”ï¼Œè¯·é‡æ–°é€‰æ‹©ç›¸æœºã€‚è¿™å°†å¯¼è‡´ç›¸æœºé‡æ–°åˆå§‹åŒ–。" # camlibs/kodak/dc3200/dc3200.c:444 #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "柯达 DC3200 驱动程åº\n" "Donn Morrison \n" "\n" "欢迎问题和评论。" #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" # camlibs/konica/konica.c:62 #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "èšç„¦é”™è¯¯ã€‚" # camlibs/konica/konica.c:65 #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "光圈错误。" # camlibs/konica/konica.c:68 #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "闪光ç¯ã€‚" # camlibs/konica/konica.c:71 #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "EEPROM 校验和错误。" # camlibs/konica/konica.c:74 #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "内部错误 (1)。" # camlibs/konica/konica.c:77 #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "内部错误 (2)。" # camlibs/konica/konica.c:80 #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "未æ’å¡ã€‚" # camlibs/konica/konica.c:83 #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "䏿”¯æŒçš„å¡ã€‚" # camlibs/konica/konica.c:86 #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "访问使å–出å¡ã€‚" # camlibs/konica/konica.c:89 #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "å›¾åƒæ•°é‡ä¸åˆæ³•。" # camlibs/konica/konica.c:92 #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "无法写入å¡ã€‚" # camlibs/konica/konica.c:95 #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "å¡å·²å†™ä¿æŠ¤ã€‚" # camlibs/konica/konica.c:98 #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "å¡ä¸Šæ²¡æœ‰å‰©ä½™ç©ºé—´ã€‚" # camlibs/konica/konica.c:101 #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "图åƒå·²å—åˆ°ä¿æŠ¤ã€‚" # camlibs/konica/konica.c:104 #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "光线太暗。" # camlibs/konica/konica.c:107 #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "自动èšç„¦é”™è¯¯ã€‚" # camlibs/konica/konica.c:110 #: camlibs/konica/konica.c:110 msgid "System error." msgstr "系统错误。" # camlibs/konica/konica.c:113 #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "éžæ³•傿•°ã€‚" # camlibs/konica/konica.c:116 #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "命令ä¸èƒ½è¢«å–消。" # camlibs/konica/konica.c:119 #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "本地化数æ®å¤ªé•¿ã€‚" # camlibs/konica/konica.c:122 #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "本地化数æ®å´©æºƒã€‚" # camlibs/konica/konica.c:125 #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "䏿”¯æŒçš„命令。" # camlibs/konica/konica.c:128 #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "正在执行其它命令。" # camlibs/konica/konica.c:131 #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "命令顺åºé”™è¯¯ã€‚" # camlibs/konica/konica.c:134 #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "未知的错误。" # camlibs/konica/konica.c:137 #: camlibs/konica/konica.c:137 #, fuzzy, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "相机刚刚é€å‡ºäº†ä¸€ä¸ªå°šæœªå‘çŽ°çš„é”™è¯¯ã€‚è¯·å°†ä»¥ä¸‹å†…å®¹ä»¥åŠæ‚¨å¦‚何得到错误:(0x%x,0x" "%x) 的附加信æ¯å‘é€åˆ° 。éžå¸¸æ„Ÿè°¢æ‚¨ï¼" # camlibs/konica/library.c:142 #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "æ­£åœ¨èŽ·å–æ–‡ä»¶åˆ—表..." # camlibs/konica/library.c:307 #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "正在测试ä¸åŒçš„速度..." # camlibs/konica/library.c:321 #: camlibs/konica/library.c:338 #, fuzzy msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "无法与相机è”络。请确信相机已ç»è¿žæŽ¥åˆ°è®¡ç®—机并确认相机已打开。" # camlibs/konica/library.c:405 #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "由于有 %i ä¸ªç…§ç‰‡å·²è¢«ä¿æŠ¤ï¼Œæ‰€ä»¥æ— æ³•è¢«åˆ é™¤" # camlibs/konica/library.c:498 #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "åž‹å·ï¼š%s\n" "åºåˆ—å·ï¼š%s,\n" "硬件版本:%i.%i\n" "软件版本:%i.%i\n" "测试软件版本:%i.%i\n" "å称:%s,\n" "制造商:%s\n" # camlibs/konica/library.c:589 #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "柯尼å¡åº“\n" "Lutz Mueller \n" "æ”¯æŒæ‰€æœ‰æŸ¯å°¼å¡ç›¸æœºå’Œå‡ ç§æƒ æ™®ç›¸æœºã€‚" # camlibs/konica/library.c:617 #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "正在获å–é…ç½®..." # camlibs/konica/library.c:624 #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "柯尼å¡é…ç½®" # camlibs/konica/library.c:629 camlibs/konica/library.c:840 #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "永久设置" # camlibs/konica/library.c:659 #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "相机是å¦è¦åœ¨æ‹æ‘„一张照片时鸣笛?" # camlibs/konica/library.c:663 camlibs/konica/library.c:871 #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "自动定时器时间" # camlibs/konica/library.c:670 camlibs/konica/library.c:879 #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "自动关机时间" # camlibs/konica/library.c:677 camlibs/konica/library.c:887 #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "å¹»ç¯ç‰‡æ˜¾ç¤ºé—´éš”" # camlibs/konica/library.c:684 camlibs/konica/library.c:896 # camlibs/sierra/sierra.c:786 camlibs/sierra/sierra.c:1117 # camlibs/sierra/sierra.c:1468 camlibs/sierra/sierra.c:1677 #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "分辨率" # camlibs/konica/library.c:686 camlibs/konica/library.c:694 # camlibs/konica/library.c:901 #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "低 (576 x 436)" # camlibs/konica/library.c:687 camlibs/konica/library.c:697 #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "中 (1152 x 872)" # camlibs/konica/library.c:688 camlibs/konica/library.c:691 # camlibs/konica/library.c:899 #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "高 (1152 x 872)" # camlibs/konica/library.c:704 camlibs/konica/library.c:912 #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "本地化" # camlibs/konica/library.c:710 camlibs/konica/library.c:915 # camlibs/sierra/sierra.c:1544 camlibs/sierra/sierra.c:1728 #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "语言" # camlibs/konica/library.c:717 camlibs/konica/library.c:726 # camlibs/konica/library.c:734 camlibs/konica/library.c:920 # camlibs/konica/library.c:945 camlibs/konica/library.c:963 #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "未选择" # camlibs/konica/library.c:721 camlibs/konica/library.c:942 #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "电视输出格å¼" # camlibs/konica/library.c:723 camlibs/konica/library.c:946 #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" # camlibs/konica/library.c:724 camlibs/konica/library.c:948 #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" # camlibs/konica/library.c:725 camlibs/konica/library.c:950 #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "请勿显示电视èœå•" # camlibs/konica/library.c:729 camlibs/konica/library.c:960 #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "日期格å¼" # camlibs/konica/library.c:731 camlibs/konica/library.c:964 #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "月/æ—¥/å¹´" # camlibs/konica/library.c:732 camlibs/konica/library.c:966 #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "æ—¥/月/å¹´" # camlibs/konica/library.c:733 camlibs/konica/library.c:968 #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "å¹´/月/æ—¥" # camlibs/konica/library.c:739 camlibs/konica/library.c:980 #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "ä¼šè¯æ°¸ä¹…设置" # camlibs/konica/library.c:748 camlibs/konica/library.c:759 # camlibs/konica/library.c:991 #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "开,消红眼" # camlibs/konica/library.c:750 camlibs/konica/library.c:762 #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "自动,消红眼" # camlibs/konica/library.c:777 camlibs/konica/library.c:1010 #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "èšç„¦" # camlibs/konica/library.c:779 camlibs/konica/library.c:786 # camlibs/sierra/sierra.c:1425 camlibs/sierra/sierra.c:1431 # camlibs/sierra/sierra.c:1651 #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "固定" # camlibs/konica/library.c:793 camlibs/konica/library.c:1015 #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "临时设定" # camlibs/konica/library.c:797 camlibs/konica/library.c:1018 # camlibs/polaroid/pdc700.c:163 #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "自动定时" # camlibs/konica/library.c:803 #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "自动定时 (仅用于下一张照片)" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "普通" # camlibs/konica/library.c:1059 #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "无法在“%sâ€æ‰¾åˆ°æœ¬åœ°åŒ–æ•°æ®" # camlibs/konica/library.c:1123 #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "本地化文件太大ï¼" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "" #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "" # camlibs/dimera/dimera3500.c:347 #: camlibs/konica/qm150.c:399 #, fuzzy, c-format msgid "Image type %d is not supported by this camera !" msgstr "图åƒç±»åž‹ä¸æ”¯æŒ" # camlibs/panasonic/dc1000.c:503 camlibs/panasonic/dc1580.c:625 #: camlibs/konica/qm150.c:453 #, fuzzy, c-format msgid "Can't delete image %s." msgstr "æ­£åœ¨åˆ é™¤å›¾åƒ %s。" #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "" # camlibs/canon/serial.c:888 #: camlibs/konica/qm150.c:517 #, fuzzy msgid "Uploading image..." msgstr "正在上载文件..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "" #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "" #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "" # camlibs/canon/serial.c:1227 camlibs/canon/serial.c:1231 # camlibs/dimera/dimera3500.c:970 #: camlibs/konica/qm150.c:653 #, fuzzy msgid "No answer from the camera." msgstr "相机无应答" # camlibs/sierra/sierra.c:828 camlibs/sierra/sierra.c:835 # camlibs/sierra/sierra.c:1152 #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "低" # camlibs/sierra/sierra.c:829 camlibs/sierra/sierra.c:837 # camlibs/sierra/sierra.c:1154 #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "中" # camlibs/sierra/sierra.c:789 camlibs/sierra/sierra.c:797 # camlibs/sierra/sierra.c:830 camlibs/sierra/sierra.c:839 # camlibs/sierra/sierra.c:1125 camlibs/sierra/sierra.c:1156 #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "高" # camlibs/polaroid/pdc700.c:162 #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/konica/qm150.c:957 #, fuzzy msgid "White balance" msgstr "白平衡" # camlibs/konica/library.c:650 camlibs/konica/library.c:653 # camlibs/konica/library.c:746 camlibs/konica/library.c:753 # camlibs/konica/library.c:861 camlibs/konica/library.c:987 # camlibs/sierra/sierra.c:888 camlibs/sierra/sierra.c:897 # camlibs/sierra/sierra.c:1004 camlibs/sierra/sierra.c:1007 # camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1274 # camlibs/sierra/sierra.c:1398 camlibs/sierra/sierra.c:1406 # camlibs/sierra/sierra.c:1633 #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 #, fuzzy msgid "Office" msgstr "å…³" # camlibs/sierra/sierra.c:948 camlibs/sierra/sierra.c:956 # camlibs/sierra/sierra.c:1235 #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 #, fuzzy msgid "Daylight" msgstr "日光" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "" # camlibs/sierra/sierra.c:1495 camlibs/sierra/sierra.c:1498 # camlibs/sierra/sierra.c:1698 #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 #, fuzzy msgid "Color" msgstr "彩色" # camlibs/sierra/sierra.c:789 camlibs/sierra/sierra.c:797 # camlibs/sierra/sierra.c:830 camlibs/sierra/sierra.c:839 # camlibs/sierra/sierra.c:1125 camlibs/sierra/sierra.c:1156 #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 #, fuzzy msgid "Light" msgstr "高" # camlibs/konica/library.c:647 camlibs/konica/library.c:858 #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 #, fuzzy msgid "Deep" msgstr "鸣笛" # camlibs/sierra/sierra.c:1496 camlibs/sierra/sierra.c:1500 # camlibs/sierra/sierra.c:1700 #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 #, fuzzy msgid "Black and White" msgstr "黑白" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 #, fuzzy msgid "Play mode" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/minolta/dimagev/dimagev.c:308 #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 #, fuzzy msgid "Record mode" msgstr "录制模å¼" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "" # camlibs/minolta/dimagev/dimagev.c:308 #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "播放" # camlibs/minolta/dimagev/dimagev.c:308 #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "录制" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" #: camlibs/largan/lmini/largan.c:228 #, fuzzy msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Largan 驱动程åº\n" "Hubert Figuiere \n" "\n" "Handles Largan Lmini 相机。\n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" # camlibs/minolta/dimagev/dimagev.c:272 #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "åž‹å·ï¼š\t\tMinolta Dimage V (%s)\n" "硬件版本å·ï¼š\t%s\n" "固件版本å·ï¼š\t%s\n" # camlibs/minolta/dimagev/dimagev.c:287 #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "主机型å·ï¼š\t\t%s\n" "æ›å…‰æ ¡æ­£ï¼š\t\t%s\n" "æ›å…‰æ•°æ®ï¼š\t\t%d\n" "有效数æ®ï¼š\t\t%s\n" "日期:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "自动定时器设置:\t\t%s\n" "è´¨é‡è®¾å®šï¼š\t\t%s\n" "播放/录制模å¼ï¼š\t\t%s\n" "æœ‰æ•ˆå¡ ID:\t\t%s\n" "å¡ ID:\t\t\t%d\n" "é—ªå…‰ç¯æ¨¡å¼ï¼š\t\t" # camlibs/minolta/dimagev/dimagev.c:299 #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "远程" # camlibs/minolta/dimagev/dimagev.c:299 #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "本地" # camlibs/minolta/dimagev/dimagev.c:300 camlibs/minolta/dimagev/dimagev.c:302 # camlibs/minolta/dimagev/dimagev.c:306 camlibs/minolta/dimagev/dimagev.c:309 # frontends/command-line/gphoto2-cmd-config.c:372 #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "是" # camlibs/minolta/dimagev/dimagev.c:300 camlibs/minolta/dimagev/dimagev.c:302 # camlibs/minolta/dimagev/dimagev.c:306 camlibs/minolta/dimagev/dimagev.c:309 # frontends/command-line/gphoto2-cmd-config.c:372 #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "å¦" # camlibs/minolta/dimagev/dimagev.c:307 camlibs/sierra/sierra.c:1470 # camlibs/sierra/sierra.c:1477 camlibs/sierra/sierra.c:1682 #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "精细" # camlibs/minolta/dimagev/dimagev.c:307 camlibs/sierra/sierra.c:788 # camlibs/sierra/sierra.c:795 camlibs/sierra/sierra.c:1123 # camlibs/sierra/sierra.c:1469 camlibs/sierra/sierra.c:1475 # camlibs/sierra/sierra.c:1680 #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "标准" # camlibs/minolta/dimagev/dimagev.c:323 #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "自动\n" # camlibs/minolta/dimagev/dimagev.c:331 #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "强制闪光\n" # camlibs/minolta/dimagev/dimagev.c:339 #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "ç¦æ­¢é—ªå…‰\n" # camlibs/minolta/dimagev/dimagev.c:347 #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "éžæ³•值 ( %d )\n" # camlibs/minolta/dimagev/dimagev.c:361 #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "电池电é‡ï¼š\t\t%s\n" "å›¾åƒæ•°é‡ï¼š\t\t%d\n" "剩余最å°å®¹é‡ï¼š\t\t%d\n" "忙:\t\t\t%s\n" "é—ªå…‰ç¯æ­£åœ¨å……电:\t%s\n" "镜头状æ€ï¼š\t\t" # camlibs/minolta/dimagev/dimagev.c:367 #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "未满" # camlibs/minolta/dimagev/dimagev.c:367 camlibs/minolta/dimagev/dimagev.c:410 #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "满" # camlibs/minolta/dimagev/dimagev.c:370 #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "å¿™" # camlibs/minolta/dimagev/dimagev.c:370 #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "é—²" # camlibs/minolta/dimagev/dimagev.c:371 #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "正在充电" # camlibs/minolta/dimagev/dimagev.c:371 #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "就绪" # camlibs/minolta/dimagev/dimagev.c:382 #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "普通\n" # camlibs/minolta/dimagev/dimagev.c:385 #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "镜头方å‘ä¸Žé—ªå…‰ç¯æ–¹å‘ä¸åŒ¹é…\n" # camlibs/minolta/dimagev/dimagev.c:388 #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "镜头未连接\n" # camlibs/minolta/dimagev/dimagev.c:391 #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "错误的镜头状æ€å€¼ %d\n" # camlibs/minolta/dimagev/dimagev.c:400 #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "å¡çжæ€ï¼š\t\t" # camlibs/minolta/dimagev/dimagev.c:413 #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "å†™ä¿æŠ¤" # camlibs/minolta/dimagev/dimagev.c:416 #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "ä¸é€‚当的å¡" # camlibs/minolta/dimagev/dimagev.c:419 #: camlibs/minolta/dimagev/dimagev.c:406 #, fuzzy, c-format msgid "Bad value for card status %d" msgstr "错误的å¡çжæ€å€¼ %d" # camlibs/minolta/dimagev/dimagev.c:438 #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Minolta Dimage V 相机库\n" "%s\n" "Gus Hartmann \n" "特别感谢 Minolta æä¾›ç›¸æœºè§„范。" # camlibs/konica/library.c:750 camlibs/konica/library.c:762 #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "闪光ç¯ï¼šè‡ªåЍ (消红眼)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "闪光ç¯ï¼šè‡ªåЍ" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "闪光ç¯ï¼šå¼€ (消红眼)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "闪光ç¯ï¼šå¼€" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "闪光ç¯ï¼šå…³" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "闪光ç¯ï¼šæœªå®šä¹‰" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "关于 Mustek MDC800 的概è¦ï¼š\n" # camlibs/konica/konica.c:83 #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "无报告状æ€ã€‚" # camlibs/kodak/dc120/dc120.c:31 #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "探测到闪存å¡\n" # camlibs/kodak/dc120/dc120.c:31 #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "未探测到闪存å¡\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "当剿¨¡å¼ï¼šç…§ç›¸æœºæ¨¡å¼\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "当剿¨¡å¼ï¼šå›žæ”¾æ¨¡å¼\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "电池就绪。" #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "电池低电é‡ã€‚" #: camlibs/mustek/mdc800.c:264 #, fuzzy msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Mustek MDC-800 gPhoto2 库\n" "Henning Zabel \n" "ç”± Marcus Meissner ç§»æ¤åˆ° gphoto2\n" "支æŒä¸²å£å’Œ USB å议。" # camlibs/panasonic/coolshot/coolshot.c:264 #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "coolshot 库 v" # camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:468 #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "正在断开与相机的连接。" # camlibs/panasonic/dc1000.c:411 #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "æ­£åœ¨ä¸‹è½½å›¾åƒ %s。" # camlibs/panasonic/dc1000.c:452 camlibs/panasonic/dc1580.c:577 #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "正在上载图åƒï¼š%s。" # camlibs/panasonic/dc1000.c:463 camlibs/panasonic/dc1580.c:588 #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, fuzzy, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "文件大å°ä¸º %i 字节。å¯ä»¥ä¸Šè½½çš„æ–‡ä»¶æœ€å¤§ä¸ºï¼š%i 字节。" # camlibs/panasonic/dc1000.c:476 camlibs/panasonic/dc1580.c:599 #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "正在上载..." # camlibs/panasonic/dc1000.c:503 camlibs/panasonic/dc1580.c:625 #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "æ­£åœ¨åˆ é™¤å›¾åƒ %s。" # camlibs/panasonic/dc1000.c:516 #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "æ¾ä¸‹ DC1000 gPhoto 库\n" "Mariusz Zynel \n" "\n" "基于由 Fredrik Roubert \n" "å’Œ Galen Brooks 编制的\n" "dc1000 程åºã€‚" # camlibs/panasonic/dc1580.c:528 #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "正在下载 %s。" # camlibs/panasonic/dc1580.c:637 #: camlibs/panasonic/dc1580.c:627 #, fuzzy msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "æ¾ä¸‹ DC1580 gPhoto 库\n" "Mariusz Zynel \n" "\n" "基于由 Fredrik Roubert \n" "å’Œ Galen Brooks 编制的\n" "dc1000 程åºã€‚<" # camlibs/panasonic/l859/l859.c:505 #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "正在下载“%sâ€..." # camlibs/panasonic/l859/l859.c:586 #: camlibs/panasonic/l859/l859.c:582 #, fuzzy msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "æ¾ä¸‹ PV-L859-K/PV-L779-K Palmcorder\n" "\n" "æ¾ä¸‹åœ¨ Palmcorders 系列中首次引入称为 PHOTOSHOT çš„å›¾åƒæ•æ‰æŠ€æœ¯ã€‚å›¾åƒä»¥ JPEG " "æ ¼å¼å­˜å‚¨åœ¨å†…置闪存å¡ä¸­ï¼Œå¹¶å¯ä»¥é€šè¿‡å†…置的串å£ä¼ è¾“到计算机中。图åƒä»¥ä¸¤ç§åˆ†è¾¨çއ " "(普通 320x240 å’Œ 精细 640x480) ä¹‹ä¸€å­˜å‚¨ã€‚ä»Žé•œå¤´æ•æ‰å›¾åƒçš„ CCD 设备仅有 30 万" "åƒç´ æ‰€ä»¥åªèƒ½ç”Ÿæˆä½Žè´¨é‡ç…§ç‰‡ã€‚" # camlibs/panasonic/l859/l859.c:604 #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "已知的问题:\n" "\n" "如果通讯出现问题,é‡ç½®ç›¸æœºå¹¶é‡æ–°å¯åŠ¨åº”ç”¨ç¨‹åºã€‚驱动程åºè¿˜æ²¡æœ‰å¥å£®åˆ°èƒ½å¤Ÿä»Žè¿™äº›" "情况下æ¢å¤è¿‡æ¥ï¼Œç‰¹åˆ«æ˜¯å¦‚果是在速度高于 9600 时出现问题而相机没有正常关闭时。" # camlibs/panasonic/l859/l859.c:618 #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "æ¾ä¸‹ PV-L859-K/PV-L779-K Palmcorder 驱动程åº\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" # camlibs/dimera/dimera3500.c:701 camlibs/dimera/dimera3500.c:737 # camlibs/panasonic/coolshot/library.c:375 camlibs/samsung/samsung.c:211 #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "正在下载文件..." #: camlibs/pccam600/library.c:249 #, fuzzy msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "创新 PC-CAM600\n" " 作者:Peter Kajberg\n" " 电å­é‚®ä»¶ï¼š\n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" # camlibs/polaroid/pdc700.c:159 #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "图åƒè´¨é‡" # camlibs/polaroid/pdc700.c:160 #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "图åƒå¤§å°" # camlibs/polaroid/pdc700.c:161 #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "闪光ç¯è®¾ç½®" # camlibs/polaroid/pdc700.c:164 #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "自动关机 (分钟)" # camlibs/polaroid/pdc700.c:165 #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "ä¿¡æ¯" # camlibs/polaroid/pdc700.c:167 #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "普通" # camlibs/polaroid/pdc700.c:167 #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "精细" # camlibs/polaroid/pdc700.c:167 #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "超精细" # camlibs/polaroid/pdc700.c:169 camlibs/sierra/sierra.c:1368 # camlibs/sierra/sierra.c:1382 camlibs/sierra/sierra.c:1617 #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "自动" # camlibs/polaroid/pdc700.c:169 camlibs/polaroid/pdc700.c:170 #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "å¼€" # camlibs/polaroid/pdc700.c:169 camlibs/polaroid/pdc700.c:170 #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "å…³" # camlibs/polaroid/pdc700.c:171 #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "播放" # camlibs/polaroid/pdc700.c:171 #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "录制" # camlibs/polaroid/pdc700.c:171 #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "èœå•" # camlibs/polaroid/pdc700.c:172 #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "电池" # camlibs/polaroid/pdc700.c:172 #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "交æµå˜åދ噍" # camlibs/polaroid/pdc700.c:229 #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "收到æ„外的头 (%i)" # camlibs/polaroid/pdc700.c:242 #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "收到æ„外应答" # camlibs/polaroid/pdc700.c:263 #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "校验和错误" # camlibs/polaroid/pdc700.c:296 #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "ç›¸æœºä¸æŽ¥å—命令。" # camlibs/polaroid/pdc700.c:349 #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "相机å‘é€äº†æ¯”预期更多的字节 (%i)" # camlibs/polaroid/pdc700.c:451 #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "请求关于照片 %i (= 0x%x) 的信æ¯ï¼Œä½†å¾—到了关于照片 %i 的返回信æ¯" # camlibs/polaroid/pdc700.c:916 #: camlibs/polaroid/pdc700.c:916 #, fuzzy, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "已接收 %i 字节的未知格å¼å›¾åƒã€‚请写 Email 到 以寻求帮助。" #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" # camlibs/canon/library.c:808 camlibs/polaroid/pdc700.c:983 #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "相机" # camlibs/polaroid/pdc700.c:996 #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "在相机关机å‰é¡»ç­‰å¾…多长时间?" # camlibs/polaroid/pdc700.c:999 #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "图åƒ" # camlibs/polaroid/pdc700.c:1110 #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "日期:%i/%02i/%02i %02i:%02i:%02i\n" "æ‹æ‘„照片数:%i\n" "å…费照片数:%i\n" "软件版本:%s\n" "带宽:%s\n" "内存:%i 兆字节\n" "相机模å¼ï¼š%s\n" "图åƒè´¨é‡ï¼š%s\n" "闪光ç¯è®¾ç½®ï¼š%s\n" "ä¿¡æ¯ï¼š%s\n" "计时器:%s\n" "LCD: %s\n" "自动关机:%i 分钟\n" "ç”µæºæ¥æºï¼š%s" # camlibs/polaroid/pdc700.c:1229 #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "该驱动程åºä¸æ”¯æŒè¯·æ±‚的端å£ç±»åž‹ (%i)。" #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" # libgphoto2/gphoto2-camera.c:850 #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 #, fuzzy msgid "Sorry, your Canon camera does not support Canon capture" msgstr "æ‚¨çš„ç›¸æœºä¸æ”¯æŒæ–‡ä»¶æ”¹å。" # libgphoto2/gphoto2-filesys.c:1442 libgphoto2/gphoto2-filesys.c:1764 #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, fuzzy, c-format msgid "Unknown value %04x" msgstr "未知的文件类型 %i。" # libgphoto2/gphoto2-filesys.c:1442 libgphoto2/gphoto2-filesys.c:1764 #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, fuzzy, c-format msgid "Unknown value %04d" msgstr "未知的文件类型 %i。" # camlibs/canon/serial.c:672 #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, fuzzy, c-format msgid "unexpected datatype %i" msgstr "错误:未预期的包类型。" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 #, fuzzy msgid "Manual" msgstr "无手册" # camlibs/minolta/dimagev/dimagev.c:323 #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 #, fuzzy msgid "Automatic" msgstr "自动\n" # camlibs/minolta/dimagev/dimagev.c:323 #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 #, fuzzy msgid "One-push Automatic" msgstr "自动\n" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "è§å…‰" # camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:960 # camlibs/sierra/sierra.c:1239 #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "é’¨" # camlibs/sierra/sierra.c:951 camlibs/sierra/sierra.c:963 # camlibs/sierra/sierra.c:1241 #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "多云" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "" # camlibs/sierra/sierra.c:1552 camlibs/sierra/sierra.c:1568 # camlibs/sierra/sierra.c:1745 #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 #, fuzzy msgid "Preset" msgstr "è‘¡è„牙语" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:1415 #, fuzzy msgid "Fluorescent Lamp 1" msgstr "è§å…‰" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:1416 #, fuzzy msgid "Fluorescent Lamp 2" msgstr "è§å…‰" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:1417 #, fuzzy msgid "Fluorescent Lamp 3" msgstr "è§å…‰" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:1418 #, fuzzy msgid "Fluorescent Lamp 4" msgstr "è§å…‰" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:1419 #, fuzzy msgid "Fluorescent Lamp 5" msgstr "è§å…‰" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:1430 #, fuzzy msgid "Fluorescent: Warm White" msgstr "è§å…‰" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:1431 #, fuzzy msgid "Fluorescent: Cold White" msgstr "è§å…‰" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:1432 #, fuzzy msgid "Fluorescent: Day White" msgstr "è§å…‰" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:1433 #, fuzzy msgid "Fluorescent: Daylight" msgstr "è§å…‰" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 #, fuzzy msgid "JPEG Fine" msgstr "JPEG" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 #, fuzzy msgid "JPEG Normal" msgstr "普通" #: camlibs/ptp2/config.c:1443 #, fuzzy msgid "RAW + JPEG Fine" msgstr "JPEG" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/ptp2/config.c:1444 #, fuzzy msgid "RAW + JPEG Normal" msgstr "普通" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "" # camlibs/konica/library.c:797 camlibs/konica/library.c:1018 # camlibs/polaroid/pdc700.c:163 #: camlibs/ptp2/config.c:1452 #, fuzzy msgid "Self-timer" msgstr "自动定时" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "" # camlibs/polaroid/pdc700.c:167 #: camlibs/ptp2/config.c:1735 #, fuzzy msgid "undefined" msgstr "超精细" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "" # camlibs/ptp/library.c:90 #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 #, fuzzy msgid "Undefined" msgstr "未定义的 PTP 错误" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "" # camlibs/sierra/sierra.c:1426 camlibs/sierra/sierra.c:1433 # camlibs/sierra/sierra.c:1653 #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "定制" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:1780 #, fuzzy msgid "Flash Off" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/konica/library.c:748 camlibs/konica/library.c:759 # camlibs/konica/library.c:991 #: camlibs/ptp2/config.c:1788 #, fuzzy msgid "red eye suppression" msgstr "开,消红眼" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "" # camlibs/konica/library.c:750 camlibs/konica/library.c:762 #: camlibs/ptp2/config.c:1790 #, fuzzy msgid "auto + red eye suppression" msgstr "自动,消红眼" # camlibs/konica/library.c:748 camlibs/konica/library.c:759 # camlibs/konica/library.c:991 #: camlibs/ptp2/config.c:1791 #, fuzzy msgid "on + red eye suppression" msgstr "开,消红眼" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "" # camlibs/konica/konica.c:131 #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 #, fuzzy msgid "Commander" msgstr "命令顺åºé”™è¯¯ã€‚" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 #, fuzzy msgid "Auto Aperture" msgstr "光圈" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 #, fuzzy msgid "Full Manual" msgstr "无手册" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "" # camlibs/konica/library.c:779 camlibs/konica/library.c:786 # camlibs/sierra/sierra.c:1425 camlibs/sierra/sierra.c:1431 # camlibs/sierra/sierra.c:1651 #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 #, fuzzy msgid "MF (fixed)" msgstr "固定" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "" # camlibs/polaroid/pdc700.c:167 #: camlibs/ptp2/config.c:1947 #, fuzzy msgid "User defined 1" msgstr "超精细" # camlibs/polaroid/pdc700.c:167 #: camlibs/ptp2/config.c:1948 #, fuzzy msgid "User defined 2" msgstr "超精细" # camlibs/polaroid/pdc700.c:167 #: camlibs/ptp2/config.c:1949 #, fuzzy msgid "User defined 3" msgstr "超精细" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "" # camlibs/konica/konica.c:62 #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 #, fuzzy msgid "Multiple Focusing Points, Auto" msgstr "èšç„¦é”™è¯¯ã€‚" # camlibs/konica/konica.c:62 #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 #, fuzzy msgid "Multiple Focusing Points (Right)" msgstr "èšç„¦é”™è¯¯ã€‚" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "" # camlibs/konica/konica.c:62 #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 #, fuzzy msgid "Multiple Focusing Points (Left)" msgstr "èšç„¦é”™è¯¯ã€‚" # camlibs/polaroid/pdc700.c:999 #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 #, fuzzy msgid "Large" msgstr "图åƒ" # camlibs/sierra/sierra.c:829 camlibs/sierra/sierra.c:837 # camlibs/sierra/sierra.c:1154 #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 #, fuzzy msgid "Medium 1" msgstr "中" # camlibs/sierra/sierra.c:829 camlibs/sierra/sierra.c:837 # camlibs/sierra/sierra.c:1154 #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 #, fuzzy msgid "Medium 2" msgstr "中" # camlibs/sierra/sierra.c:829 camlibs/sierra/sierra.c:837 # camlibs/sierra/sierra.c:1154 #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 #, fuzzy msgid "Medium 3" msgstr "中" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "" # camlibs/polaroid/pdc700.c:161 #: camlibs/ptp2/config.c:2092 #, fuzzy msgid "Setting 4" msgstr "闪光ç¯è®¾ç½®" # camlibs/polaroid/pdc700.c:161 #: camlibs/ptp2/config.c:2093 #, fuzzy msgid "Setting 5" msgstr "闪光ç¯è®¾ç½®" # camlibs/polaroid/pdc700.c:161 #: camlibs/ptp2/config.c:2094 #, fuzzy msgid "Setting 6" msgstr "闪光ç¯è®¾ç½®" # camlibs/polaroid/pdc700.c:161 #: camlibs/ptp2/config.c:2095 #, fuzzy msgid "Setting 7" msgstr "闪光ç¯è®¾ç½®" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "" # camlibs/sierra/sierra.c:802 camlibs/sierra/sierra.c:842 # camlibs/sierra/sierra.c:874 camlibs/sierra/sierra.c:904 # camlibs/sierra/sierra.c:935 camlibs/sierra/sierra.c:966 # camlibs/sierra/sierra.c:990 camlibs/sierra/sierra.c:1012 # camlibs/sierra/sierra.c:1041 camlibs/sierra/sierra.c:1385 # camlibs/sierra/sierra.c:1413 camlibs/sierra/sierra.c:1436 # camlibs/sierra/sierra.c:1458 camlibs/sierra/sierra.c:1484 # camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1571 #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, fuzzy, c-format msgid "Unknown %d" msgstr "%i (未知)" # camlibs/sierra/sierra.c:948 camlibs/sierra/sierra.c:956 # camlibs/sierra/sierra.c:1235 #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 #, fuzzy msgid "Factory Default" msgstr "日光" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "" #: camlibs/ptp2/config.c:2246 msgid "Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2272 msgid "RAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2273 msgid "mRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2274 msgid "sRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2275 msgid "RAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2276 msgid "mRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2277 msgid "sRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "" # camlibs/minolta/dimagev/dimagev.c:299 #: camlibs/ptp2/config.c:2305 #, fuzzy msgid "Timer 10 sec" msgstr "远程" # camlibs/minolta/dimagev/dimagev.c:299 #: camlibs/ptp2/config.c:2306 #, fuzzy msgid "Timer 2 sec" msgstr "远程" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "" # camlibs/konica/library.c:749 camlibs/konica/library.c:765 # camlibs/konica/library.c:780 camlibs/konica/library.c:783 # camlibs/konica/library.c:993 camlibs/konica/library.c:1023 # camlibs/sierra/sierra.c:787 camlibs/sierra/sierra.c:793 # camlibs/sierra/sierra.c:827 camlibs/sierra/sierra.c:833 # camlibs/sierra/sierra.c:886 camlibs/sierra/sierra.c:893 # camlibs/sierra/sierra.c:947 camlibs/sierra/sierra.c:954 # camlibs/sierra/sierra.c:1121 camlibs/sierra/sierra.c:1150 # camlibs/sierra/sierra.c:1190 camlibs/sierra/sierra.c:1233 # camlibs/sierra/sierra.c:1396 camlibs/sierra/sierra.c:1402 # camlibs/sierra/sierra.c:1424 camlibs/sierra/sierra.c:1429 # camlibs/sierra/sierra.c:1629 camlibs/sierra/sierra.c:1649 #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, fuzzy, c-format msgid "Auto ISO" msgstr "自动" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, fuzzy, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, fuzzy, c-format msgid "%d Multi Frame Noise Reduction" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/config.c:2453 #, fuzzy msgid "Multi Frame Noise Reduction" msgstr "æ›å…‰è¡¥å¿" # camlibs/konica/library.c:797 camlibs/konica/library.c:1018 # camlibs/polaroid/pdc700.c:163 #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "自动定时" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "" # camlibs/minolta/dimagev/dimagev.c:323 #: camlibs/ptp2/config.c:2868 #, fuzzy msgid "Automatic (No Flash)" msgstr "自动\n" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 msgid "Sports Action" msgstr "" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 #, fuzzy msgid "Picture Effect" msgstr "照片设置" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "" # camlibs/sierra/sierra.c:921 camlibs/sierra/sierra.c:932 # camlibs/sierra/sierra.c:1220 #: camlibs/ptp2/config.c:2893 #, fuzzy msgid "Pet Portrait" msgstr "对比度-" # camlibs/sierra/sierra.c:948 camlibs/sierra/sierra.c:956 # camlibs/sierra/sierra.c:1235 #: camlibs/ptp2/config.c:2894 #, fuzzy msgid "Candlelight" msgstr "日光" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:3032 #, fuzzy msgid "Flourescent" msgstr "è§å…‰" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "" # camlibs/minolta/dimagev/dimagev.c:308 #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 #, fuzzy msgid "Effects" msgstr "录制模å¼" #: camlibs/ptp2/config.c:3075 msgid "U1" msgstr "" #: camlibs/ptp2/config.c:3076 msgid "U2" msgstr "" # camlibs/sierra/sierra.c:789 camlibs/sierra/sierra.c:797 # camlibs/sierra/sierra.c:830 camlibs/sierra/sierra.c:839 # camlibs/sierra/sierra.c:1125 camlibs/sierra/sierra.c:1156 #: camlibs/ptp2/config.c:3104 #, fuzzy msgid "Back Light" msgstr "高" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "" # camlibs/konica/library.c:797 camlibs/konica/library.c:1018 # camlibs/polaroid/pdc700.c:163 #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 #, fuzzy msgid "Timer" msgstr "自动定时" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "" # camlibs/minolta/dimagev/dimagev.c:299 #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 #, fuzzy msgid "Delayed Remote" msgstr "远程" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "" # camlibs/konica/library.c:797 camlibs/konica/library.c:1018 # camlibs/polaroid/pdc700.c:163 #: camlibs/ptp2/config.c:3125 #, fuzzy msgid "Selftimer 2s" msgstr "自动定时" # camlibs/konica/library.c:797 camlibs/konica/library.c:1018 # camlibs/polaroid/pdc700.c:163 #: camlibs/ptp2/config.c:3126 #, fuzzy msgid "Selftimer 10s" msgstr "自动定时" #: camlibs/ptp2/config.c:3127 msgid "Bracketing C 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3128 msgid "Bracketing C 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3129 msgid "Bracketing C 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3130 msgid "Bracketing C 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3131 msgid "Bracketing C 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3132 msgid "Bracketing S 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3133 msgid "Bracketing S 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3134 msgid "Bracketing S 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3135 msgid "Bracketing S 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3136 msgid "Bracketing S 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3137 msgid "Bracketing WB Lo" msgstr "" #: camlibs/ptp2/config.c:3138 msgid "Bracketing WB Hi" msgstr "" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 #, fuzzy msgid "Centre-spot" msgstr "光圈" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "" #: camlibs/ptp2/config.c:3154 msgid "Group-dynamic AF" msgstr "" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "" #: camlibs/ptp2/config.c:3165 msgid "3D Tracking" msgstr "" # camlibs/sierra/sierra.c:921 camlibs/sierra/sierra.c:932 # camlibs/sierra/sierra.c:1220 #: camlibs/ptp2/config.c:3171 #, fuzzy msgid "sRGB (portrait)" msgstr "对比度-" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "" #: camlibs/ptp2/config.c:3226 #, fuzzy, c-format msgid "Unknown value 0x%04x" msgstr "未知 (0x%02x)" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 #, fuzzy msgid "Centre" msgstr "光圈" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "" # camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1283 #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 #, fuzzy msgid "Bottom" msgstr "缩放" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "" # camlibs/sierra/sierra.c:789 camlibs/sierra/sierra.c:797 # camlibs/sierra/sierra.c:830 camlibs/sierra/sierra.c:839 # camlibs/sierra/sierra.c:1125 camlibs/sierra/sierra.c:1156 #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 #, fuzzy msgid "Right" msgstr "高" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "" # camlibs/minolta/dimagev/dimagev.c:323 #: camlibs/ptp2/config.c:3266 #, fuzzy msgid "Automatic Flash" msgstr "自动\n" # camlibs/dimera/dimera3500.c:533 camlibs/konica/library.c:744 # camlibs/konica/library.c:984 #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 #, fuzzy msgid "Fill flash" msgstr "闪光ç¯" # camlibs/sierra/sierra.c:889 camlibs/sierra/sierra.c:899 # camlibs/sierra/sierra.c:1196 camlibs/sierra/sierra.c:1399 # camlibs/sierra/sierra.c:1408 camlibs/sierra/sierra.c:1635 #: camlibs/ptp2/config.c:3269 #, fuzzy msgid "Red-eye automatic" msgstr "消红眼" #: camlibs/ptp2/config.c:3270 #, fuzzy msgid "Red-eye fill" msgstr "红眼闪光ç¯" # camlibs/dimera/dimera3500.c:549 #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 #, fuzzy msgid "External sync" msgstr "外部" # camlibs/sierra/sierra.c:890 camlibs/sierra/sierra.c:901 # camlibs/sierra/sierra.c:1198 camlibs/sierra/sierra.c:1400 # camlibs/sierra/sierra.c:1410 camlibs/sierra/sierra.c:1637 #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 #, fuzzy msgid "Auto Slow Sync" msgstr "æ…¢åŒæ­¥" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "" # camlibs/sierra/sierra.c:889 camlibs/sierra/sierra.c:899 # camlibs/sierra/sierra.c:1196 camlibs/sierra/sierra.c:1399 # camlibs/sierra/sierra.c:1408 camlibs/sierra/sierra.c:1635 #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 #, fuzzy msgid "Red-eye Reduction + Slow Sync" msgstr "消红眼" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "" # camlibs/sierra/sierra.c:889 camlibs/sierra/sierra.c:899 # camlibs/sierra/sierra.c:1196 camlibs/sierra/sierra.c:1399 # camlibs/sierra/sierra.c:1408 camlibs/sierra/sierra.c:1635 #: camlibs/ptp2/config.c:3277 #, fuzzy msgid "Red-eye reduction" msgstr "消红眼" # camlibs/sierra/sierra.c:889 camlibs/sierra/sierra.c:899 # camlibs/sierra/sierra.c:1196 camlibs/sierra/sierra.c:1399 # camlibs/sierra/sierra.c:1408 camlibs/sierra/sierra.c:1635 #: camlibs/ptp2/config.c:3278 #, fuzzy msgid "Red-eye reduction with slow sync" msgstr "消红眼" # camlibs/sierra/sierra.c:890 camlibs/sierra/sierra.c:901 # camlibs/sierra/sierra.c:1198 camlibs/sierra/sierra.c:1400 # camlibs/sierra/sierra.c:1410 camlibs/sierra/sierra.c:1637 #: camlibs/ptp2/config.c:3279 #, fuzzy msgid "Slow sync" msgstr "æ…¢åŒæ­¥" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" # camlibs/sierra/sierra.c:890 camlibs/sierra/sierra.c:901 # camlibs/sierra/sierra.c:1198 camlibs/sierra/sierra.c:1400 # camlibs/sierra/sierra.c:1410 camlibs/sierra/sierra.c:1637 #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "æ…¢åŒæ­¥" # camlibs/sierra/sierra.c:1496 camlibs/sierra/sierra.c:1500 # camlibs/sierra/sierra.c:1700 #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "黑白" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "" # camlibs/sierra/sierra.c:855 camlibs/sierra/sierra.c:1165 # camlibs/sierra/sierra.c:1494 camlibs/sierra/sierra.c:1695 #: camlibs/ptp2/config.c:3298 #, fuzzy msgid "Color sketch" msgstr "彩色模å¼" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "" # camlibs/sierra/sierra.c:789 camlibs/sierra/sierra.c:797 # camlibs/sierra/sierra.c:830 camlibs/sierra/sierra.c:839 # camlibs/sierra/sierra.c:1125 camlibs/sierra/sierra.c:1156 #: camlibs/ptp2/config.c:3302 #, fuzzy msgid "High key" msgstr "高" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "" # camlibs/sierra/sierra.c:980 camlibs/sierra/sierra.c:987 # camlibs/sierra/sierra.c:1258 #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 #, fuzzy msgid "infinite" msgstr "æ— é™/鱼眼" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/ptp2/config.c:3772 #, fuzzy msgid "Normal-area AF" msgstr "普通" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 #, fuzzy msgid "Manual Focus" msgstr "无手册" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 #, fuzzy msgid "AE/AF Lock" msgstr "èšç„¦æ¨¡å¼" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 #, fuzzy msgid "1 minute" msgstr "41 mm" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 #, fuzzy msgid "10 minutes" msgstr "41 mm" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "" #: camlibs/ptp2/config.c:3828 #, fuzzy msgid "8 mm" msgstr "58 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "" # camlibs/sierra/sierra.c:1024 camlibs/sierra/sierra.c:1030 #: camlibs/ptp2/config.c:3842 #, fuzzy msgid "1" msgstr "1x" # camlibs/sierra/sierra.c:1026 camlibs/sierra/sierra.c:1032 #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 #, fuzzy msgid "2" msgstr "2x" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 #, fuzzy msgid "4" msgstr "4x" #: camlibs/ptp2/config.c:3845 #, fuzzy msgid "8" msgstr "8x" #: camlibs/ptp2/config.c:3846 #, fuzzy msgid "15" msgstr "1.5" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "" #: camlibs/ptp2/config.c:3855 #, fuzzy msgid "20s" msgstr "2.0" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 #, fuzzy msgid "15s" msgstr "1.5" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "" #: camlibs/ptp2/config.c:3858 #, fuzzy msgid "10s" msgstr "1.0" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "" #: camlibs/ptp2/config.c:3916 #, fuzzy msgid "15 minutes" msgstr "41 mm" # camlibs/minolta/dimagev/dimagev.c:371 #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 #, fuzzy msgid "Sharper" msgstr "正在充电" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "" # libgphoto2/gphoto2-result.c:49 #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 #, fuzzy msgid "Direct Print" msgstr "目录存在" # camlibs/sierra/sierra.c:829 camlibs/sierra/sierra.c:837 # camlibs/sierra/sierra.c:1154 #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 #, fuzzy msgid "Medium Low" msgstr "中" # camlibs/sierra/sierra.c:829 camlibs/sierra/sierra.c:837 # camlibs/sierra/sierra.c:1154 #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 #, fuzzy msgid "Medium high" msgstr "中" # camlibs/sierra/sierra.c:921 camlibs/sierra/sierra.c:932 # camlibs/sierra/sierra.c:1220 #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 #, fuzzy msgid "Low contrast" msgstr "对比度-" # camlibs/sierra/sierra.c:829 camlibs/sierra/sierra.c:837 # camlibs/sierra/sierra.c:1154 #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 #, fuzzy msgid "Medium High" msgstr "中" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "" # camlibs/minolta/dimagev/dimagev.c:323 #: camlibs/ptp2/config.c:3976 #, fuzzy msgid "Automatic Macro" msgstr "自动\n" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "" # camlibs/konica/library.c:777 camlibs/konica/library.c:1010 #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 #, fuzzy msgid "AI Focus" msgstr "èšç„¦" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 #, fuzzy msgid "Fluorescent H" msgstr "è§å…‰" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 #, fuzzy msgid "Custom Whitebalance PC-1" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 #, fuzzy msgid "Custom Whitebalance PC-2" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 #, fuzzy msgid "Custom Whitebalance PC-3" msgstr "白平衡" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "" # camlibs/minolta/dimagev/dimagev.c:371 #: camlibs/ptp2/config.c:4118 #, fuzzy msgid "Low sharpening" msgstr "正在充电" # camlibs/sierra/sierra.c:1496 camlibs/sierra/sierra.c:1500 # camlibs/sierra/sierra.c:1700 #: camlibs/ptp2/config.c:4120 #, fuzzy msgid "Black & white" msgstr "黑白" # camlibs/dimera/dimera3500.c:533 #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 #, fuzzy msgid "AE & Flash" msgstr "无闪光ç¯" # camlibs/dimera/dimera3500.c:543 #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 #, fuzzy msgid "AE only" msgstr "就绪" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 #, fuzzy msgid "Flash only" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 #, fuzzy msgid "WB bracketing" msgstr "æ›å…‰æµ‹å®š" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/config.c:4221 #, fuzzy msgid "ADL bracketing" msgstr "æ›å…‰æµ‹å®š" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "" # camlibs/sierra/sierra.c:1581 camlibs/sierra/sierra.c:1754 #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 #, fuzzy msgid "Remote Mirror Up" msgstr "日期和时间" # frontends/command-line/gphoto2-cmd-capture.c:218 # libgphoto2/gphoto2-result.c:51 #: camlibs/ptp2/config.c:4248 #, fuzzy msgid "Application Mode 0" msgstr "æ“作模å¼" # frontends/command-line/gphoto2-cmd-capture.c:218 # libgphoto2/gphoto2-result.c:51 #: camlibs/ptp2/config.c:4249 #, fuzzy msgid "Application Mode 1" msgstr "æ“作模å¼" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "" #: camlibs/ptp2/config.c:4286 #, fuzzy msgid "Low sensitivity" msgstr "低 (最佳质é‡)" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:4378 #, fuzzy msgid "Flash/speed" msgstr "é—ªå…‰ç¯æ¨¡å¼" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/ptp2/config.c:4380 #, fuzzy msgid "Flash/aperture" msgstr "光圈" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "" # camlibs/minolta/dimagev/dimagev.c:307 camlibs/sierra/sierra.c:1470 # camlibs/sierra/sierra.c:1477 camlibs/sierra/sierra.c:1682 #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 #, fuzzy msgid "NEF+Fine" msgstr "精细" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 #, fuzzy msgid "NEF+Normal" msgstr "普通" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "" #: camlibs/ptp2/config.c:4575 #, fuzzy msgid "RAW+JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "" # camlibs/polaroid/pdc700.c:159 #: camlibs/ptp2/config.c:4642 #, fuzzy msgid "Optimal quality" msgstr "图åƒè´¨é‡" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/ptp2/config.c:4695 #, fuzzy msgid "3 (Normal)" msgstr "普通" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "" #: camlibs/ptp2/config.c:4780 msgid "Preview" msgstr "" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/config.c:4788 #, fuzzy msgid "Bracketing burst" msgstr "æ›å…‰æµ‹å®š" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "" # camlibs/sierra/sierra.c:1001 camlibs/sierra/sierra.c:1268 #: camlibs/ptp2/config.c:4791 #, fuzzy msgid "Spot metering" msgstr "åœºæ™¯æµ‹é‡æ¨¡å¼" # camlibs/minolta/dimagev/dimagev.c:308 #: camlibs/ptp2/config.c:4792 #, fuzzy msgid "Playback" msgstr "播放" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "" #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "" # camlibs/sierra/sierra.c:802 camlibs/sierra/sierra.c:842 # camlibs/sierra/sierra.c:874 camlibs/sierra/sierra.c:904 # camlibs/sierra/sierra.c:935 camlibs/sierra/sierra.c:966 # camlibs/sierra/sierra.c:990 camlibs/sierra/sierra.c:1012 # camlibs/sierra/sierra.c:1041 camlibs/sierra/sierra.c:1385 # camlibs/sierra/sierra.c:1413 camlibs/sierra/sierra.c:1436 # camlibs/sierra/sierra.c:1458 camlibs/sierra/sierra.c:1484 # camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1571 #: camlibs/ptp2/config.c:4871 #, fuzzy msgid "Unknown value" msgstr "%i (未知)" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "" #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "" #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "" #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "" # camlibs/ptp/library.c:102 #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 #, fuzzy msgid "Press Full" msgstr "PTP 存储已满" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "" # camlibs/sierra/sierra.c:1552 camlibs/sierra/sierra.c:1568 # camlibs/sierra/sierra.c:1745 #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 #, fuzzy msgid "Press 1" msgstr "è‘¡è„牙语" # camlibs/sierra/sierra.c:1552 camlibs/sierra/sierra.c:1568 # camlibs/sierra/sierra.c:1745 #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 #, fuzzy msgid "Press 2" msgstr "è‘¡è„牙语" # camlibs/sierra/sierra.c:1552 camlibs/sierra/sierra.c:1568 # camlibs/sierra/sierra.c:1745 #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 #, fuzzy msgid "Press 3" msgstr "è‘¡è„牙语" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" # camlibs/dimera/dimera3500.c:549 #: camlibs/ptp2/config.c:5923 #, fuzzy msgid "Internal RAM" msgstr "内部" # camlibs/kodak/dc240/library.c:618 #: camlibs/ptp2/config.c:5924 #, fuzzy msgid "Memory card" msgstr "æ— å¡" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "" # camlibs/polaroid/pdc700.c:171 #: camlibs/ptp2/config.c:6092 #, fuzzy msgid "Display" msgstr "播放" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "" # camlibs/sierra/sierra.c:948 camlibs/sierra/sierra.c:956 # camlibs/sierra/sierra.c:1235 #: camlibs/ptp2/config.c:6359 #, fuzzy msgid "Default gateway" msgstr "日光" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "" # camlibs/canon/library.c:870 camlibs/canon/library.c:912 #: camlibs/ptp2/config.c:6412 #, fuzzy msgid "List Wifi profiles" msgstr "列出所有文件" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "" # camlibs/dimera/dimera3500.c:539 #: camlibs/ptp2/config.c:6521 #, fuzzy msgid "Power Down" msgstr "æ— ç”µæºæŒ‡ç¤ºç¯" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 #, fuzzy msgid "Focus Lock" msgstr "èšç„¦æ¨¡å¼" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 #, fuzzy msgid "Bulb Mode" msgstr "LED 模å¼" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 #, fuzzy msgid "Movie Capture" msgstr "光圈" # camlibs/sierra/sierra.c:1818 #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 #, fuzzy msgid "Serial Number" msgstr "%såºåˆ—å·ï¼š%s\n" # camlibs/canon/serial.c:1190 #: camlibs/ptp2/config.c:6548 #, fuzzy msgid "Camera Manufacturer" msgstr "相机就绪。\n" # frontends/command-line/actions.c:159 #: camlibs/ptp2/config.c:6550 #, fuzzy msgid "Device Version" msgstr "版本:" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "" # frontends/command-line/actions.c:159 #: camlibs/ptp2/config.c:6556 #, fuzzy msgid "PTP Version" msgstr "版本:" # frontends/command-line/actions.c:159 #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 #, fuzzy msgid "DPOF Version" msgstr "版本:" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 #, fuzzy msgid "AC Power" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/dimera/dimera3500.c:549 #: camlibs/ptp2/config.c:6559 #, fuzzy msgid "External Flash" msgstr "外部" # camlibs/sierra/sierra.c:1830 #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 #, fuzzy msgid "Battery Level" msgstr "%s电池寿命:%i\n" # camlibs/sierra/sierra.c:1048 camlibs/sierra/sierra.c:1510 #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 #, fuzzy msgid "Camera Orientation" msgstr "相机设置" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 #, fuzzy msgid "Flash Open" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/kodak/dc120/dc120.c:31 #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 #, fuzzy msgid "Flash Charged" msgstr "闪存å¡" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 #, fuzzy msgid "Lens Name" msgstr "镜头模å¼" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/config.c:6570 #, fuzzy msgid "Shutter Counter" msgstr "快门速度 (ç§’)" # frontends/command-line/shell.c:779 #: camlibs/ptp2/config.c:6571 #, fuzzy msgid "Available Shots" msgstr "å¯ç”¨çš„内存:" #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "" # camlibs/sierra/sierra.c:789 camlibs/sierra/sierra.c:797 # camlibs/sierra/sierra.c:830 camlibs/sierra/sierra.c:839 # camlibs/sierra/sierra.c:1125 camlibs/sierra/sierra.c:1156 #: camlibs/ptp2/config.c:6576 #, fuzzy msgid "Low Light" msgstr "高" # camlibs/sierra/sierra.c:789 camlibs/sierra/sierra.c:797 # camlibs/sierra/sierra.c:830 camlibs/sierra/sierra.c:839 # camlibs/sierra/sierra.c:1125 camlibs/sierra/sierra.c:1156 #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 #, fuzzy msgid "Light Meter" msgstr "高" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 #, fuzzy msgid "AF Locked" msgstr "èšç„¦æ¨¡å¼" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 #, fuzzy msgid "FV Locked" msgstr "èšç„¦æ¨¡å¼" # camlibs/konica/library.c:633 camlibs/konica/library.c:844 # camlibs/polaroid/pdc700.c:1005 camlibs/polaroid/pdc700.c:1018 # camlibs/polaroid/pdc700.c:1088 #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 #, fuzzy msgid "Camera Date and Time" msgstr "日期和时间" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 #, fuzzy msgid "Beep Mode" msgstr "LED 模å¼" #: camlibs/ptp2/config.c:6591 #, fuzzy msgid "Image Comment" msgstr "图åƒè°ƒæ•´" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 #, fuzzy msgid "Enable Image Comment" msgstr "图åƒè°ƒæ•´" # camlibs/konica/library.c:670 camlibs/konica/library.c:879 #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 #, fuzzy msgid "LCD Off Time" msgstr "自动关机时间" # camlibs/minolta/dimagev/dimagev.c:308 #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 #, fuzzy msgid "Recording Media" msgstr "录制模å¼" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "" # camlibs/canon/serial.c:1190 #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 #, fuzzy msgid "Camera Output" msgstr "相机就绪。\n" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/config.c:6602 #, fuzzy msgid "EVF Mode" msgstr "LED 模å¼" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "" # camlibs/sierra/sierra.c:918 camlibs/sierra/sierra.c:926 # camlibs/sierra/sierra.c:1214 #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "版æƒ" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "" # camlibs/sierra/sierra.c:889 camlibs/sierra/sierra.c:899 # camlibs/sierra/sierra.c:1196 camlibs/sierra/sierra.c:1399 # camlibs/sierra/sierra.c:1408 camlibs/sierra/sierra.c:1635 #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 #, fuzzy msgid "Flicker Reduction" msgstr "消红眼" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6613 #, fuzzy msgid "Focus Info" msgstr "èšç„¦æ¨¡å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6614 #, fuzzy msgid "Focus Area" msgstr "èšç„¦æ¨¡å¼" # camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:6615 #, fuzzy msgid "Auto Power Off" msgstr "自动关机 (分钟)" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 #, fuzzy msgid "Capture Target" msgstr "照片设置" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" # camlibs/konica/library.c:729 camlibs/konica/library.c:960 #: camlibs/ptp2/config.c:6633 #, fuzzy msgid "Image Format SD" msgstr "日期格å¼" # camlibs/konica/library.c:729 camlibs/konica/library.c:960 #: camlibs/ptp2/config.c:6634 #, fuzzy msgid "Image Format CF" msgstr "日期格å¼" # camlibs/konica/library.c:729 camlibs/konica/library.c:960 #: camlibs/ptp2/config.c:6636 #, fuzzy msgid "Image Format Ext HD" msgstr "日期格å¼" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "ISO 速度" # camlibs/konica/library.c:749 camlibs/konica/library.c:765 # camlibs/konica/library.c:780 camlibs/konica/library.c:783 # camlibs/konica/library.c:993 camlibs/konica/library.c:1023 # camlibs/sierra/sierra.c:787 camlibs/sierra/sierra.c:793 # camlibs/sierra/sierra.c:827 camlibs/sierra/sierra.c:833 # camlibs/sierra/sierra.c:886 camlibs/sierra/sierra.c:893 # camlibs/sierra/sierra.c:947 camlibs/sierra/sierra.c:954 # camlibs/sierra/sierra.c:1121 camlibs/sierra/sierra.c:1150 # camlibs/sierra/sierra.c:1190 camlibs/sierra/sierra.c:1233 # camlibs/sierra/sierra.c:1396 camlibs/sierra/sierra.c:1402 # camlibs/sierra/sierra.c:1424 camlibs/sierra/sierra.c:1429 # camlibs/sierra/sierra.c:1629 camlibs/sierra/sierra.c:1649 #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 #, fuzzy msgid "ISO Auto" msgstr "自动" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 #, fuzzy msgid "WhiteBalance" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6654 #, fuzzy msgid "WhiteBalance Adjust A" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6655 #, fuzzy msgid "WhiteBalance Adjust B" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6656 #, fuzzy msgid "WhiteBalance X A" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6657 #, fuzzy msgid "WhiteBalance X B" msgstr "白平衡" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "" # camlibs/sierra/sierra.c:855 camlibs/sierra/sierra.c:1165 # camlibs/sierra/sierra.c:1494 camlibs/sierra/sierra.c:1695 #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 #, fuzzy msgid "Color Model" msgstr "彩色模å¼" # camlibs/sierra/sierra.c:855 camlibs/sierra/sierra.c:1165 # camlibs/sierra/sierra.c:1494 camlibs/sierra/sierra.c:1695 #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 #, fuzzy msgid "Color Space" msgstr "彩色模å¼" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6669 #, fuzzy msgid "Auto Focus Mode 2" msgstr "èšç„¦æ¨¡å¼" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 #, fuzzy msgid "Flash Compensation" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 #, fuzzy msgid "AEB Exposure Compensation" msgstr "æ›å…‰è¡¥å¿" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6685 #, fuzzy msgid "Nikon Flash Mode" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 #, fuzzy msgid "Flash Commander Mode" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6687 #, fuzzy msgid "Flash Commander Power" msgstr "é—ªå…‰ç¯æ¨¡å¼" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 #, fuzzy msgid "Flash Command Self Mode" msgstr "é—ªå…‰ç¯æ¨¡å¼" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 #, fuzzy msgid "Flash Command Self Compensation" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 #, fuzzy msgid "Flash Command A Mode" msgstr "é—ªå…‰ç¯æ¨¡å¼" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 #, fuzzy msgid "Flash Command A Compensation" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 #, fuzzy msgid "Flash Command B Mode" msgstr "é—ªå…‰ç¯æ¨¡å¼" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 #, fuzzy msgid "Flash Command B Compensation" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 #, fuzzy msgid "AF Beep Mode" msgstr "LED 模å¼" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "" #: camlibs/ptp2/config.c:6702 msgid "Movie F-Number" msgstr "" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 #, fuzzy msgid "Focus Distance" msgstr "èšç„¦ä½ç½®" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6710 #, fuzzy msgid "Focus Mode 2" msgstr "èšç„¦æ¨¡å¼" #: camlibs/ptp2/config.c:6712 msgid "Continuous AF" msgstr "" # camlibs/minolta/dimagev/dimagev.c:308 #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 #, fuzzy msgid "Effect Mode" msgstr "录制模å¼" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 #, fuzzy msgid "Exposure Program" msgstr "æ›å…‰æµ‹å®š" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 #, fuzzy msgid "Scene Mode" msgstr "LED 模å¼" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 #, fuzzy msgid "HDR Mode" msgstr "LED 模å¼" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "" # camlibs/sierra/sierra.c:1001 camlibs/sierra/sierra.c:1268 #: camlibs/ptp2/config.c:6725 #, fuzzy msgid "Canon Shooting Mode" msgstr "åœºæ™¯æµ‹é‡æ¨¡å¼" #: camlibs/ptp2/config.c:6726 #, fuzzy msgid "Canon Auto Exposure Mode" msgstr "自动æ›å…‰é”" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 #, fuzzy msgid "Drive Mode" msgstr "LED 模å¼" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/ptp2/config.c:6728 #, fuzzy msgid "Picture Style" msgstr "照片设置" # camlibs/sierra/sierra.c:1001 camlibs/sierra/sierra.c:1268 #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 #, fuzzy msgid "Focus Metering Mode" msgstr "åœºæ™¯æµ‹é‡æ¨¡å¼" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 #, fuzzy msgid "Exposure Metering Mode" msgstr "æ›å…‰æµ‹å®š" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "" # camlibs/konica/konica.c:62 #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 #, fuzzy msgid "Focusing Point" msgstr "èšç„¦é”™è¯¯ã€‚" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/ptp2/config.c:6738 #, fuzzy msgid "Capture Delay" msgstr "光圈" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/config.c:6742 #, fuzzy msgid "Shutter Speed 2" msgstr "快门速度 (ç§’)" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "快门速度 (ç§’)" # camlibs/sierra/sierra.c:1001 camlibs/sierra/sierra.c:1268 #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 #, fuzzy msgid "Metering Mode" msgstr "åœºæ™¯æµ‹é‡æ¨¡å¼" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 #, fuzzy msgid "AF Distance" msgstr "èšç„¦ä½ç½®" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 #, fuzzy msgid "Focus Area Wrap" msgstr "èšç„¦æ¨¡å¼" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/config.c:6751 #, fuzzy msgid "Exposure Delay Mode" msgstr "æ›å…‰æµ‹å®š" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 #, fuzzy msgid "Exposure Lock" msgstr "æ›å…‰" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "" # camlibs/polaroid/pdc700.c:161 #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 #, fuzzy msgid "Flash Sign" msgstr "闪光ç¯è®¾ç½®" # camlibs/minolta/dimagev/dimagev.c:331 #: camlibs/ptp2/config.c:6759 #, fuzzy msgid "Modelling Flash" msgstr "强制闪光\n" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "" # camlibs/polaroid/pdc700.c:160 #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 #, fuzzy msgid "Image Review" msgstr "图åƒå¤§å°" # camlibs/sierra/sierra.c:1048 camlibs/sierra/sierra.c:1510 #: camlibs/ptp2/config.c:6762 #, fuzzy msgid "Image Rotation Flag" msgstr "相机设置" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 #, fuzzy msgid "Flash Mode Manual Power" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6765 #, fuzzy msgid "Auto Focus Area" msgstr "èšç„¦æ¨¡å¼" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 #, fuzzy msgid "Flash Exposure Compensation" msgstr "æ›å…‰è¡¥å¿" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 #, fuzzy msgid "Bracketing" msgstr "æ›å…‰æµ‹å®š" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/config.c:6769 #, fuzzy msgid "Bracket Mode" msgstr "LED 模å¼" #: camlibs/ptp2/config.c:6770 #, fuzzy msgid "EV Step" msgstr "ISO 速度" # camlibs/konica/library.c:750 camlibs/konica/library.c:762 #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 #, fuzzy msgid "Bracket Set" msgstr "自动,消红眼" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 #, fuzzy msgid "Auto White Balance Bias" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 #, fuzzy msgid "Tungsten White Balance Bias" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 #, fuzzy msgid "Fluorescent White Balance Bias" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 #, fuzzy msgid "Daylight White Balance Bias" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 #, fuzzy msgid "Flash White Balance Bias" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 #, fuzzy msgid "Cloudy White Balance Bias" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 #, fuzzy msgid "Shady White Balance Bias" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6794 #, fuzzy msgid "White Balance Bias Preset Nr" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6795 #, fuzzy msgid "White Balance Bias Preset 0" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6796 #, fuzzy msgid "White Balance Bias Preset 1" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6797 #, fuzzy msgid "White Balance Bias Preset 2" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6798 #, fuzzy msgid "White Balance Bias Preset 3" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/config.c:6799 #, fuzzy msgid "White Balance Bias Preset 4" msgstr "白平衡" # camlibs/konica/library.c:663 camlibs/konica/library.c:871 #: camlibs/ptp2/config.c:6800 #, fuzzy msgid "Selftimer Delay" msgstr "自动定时器时间" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 #, fuzzy msgid "Flash Shutter Speed" msgstr "快门速度 (ç§’)" # camlibs/sierra/sierra.c:1581 camlibs/sierra/sierra.c:1754 #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 #, fuzzy msgid "Remote Timeout" msgstr "日期和时间" # camlibs/minolta/dimagev/dimagev.c:308 #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 #, fuzzy msgid "Remote Mode" msgstr "录制模å¼" # frontends/command-line/gphoto2-cmd-capture.c:218 # libgphoto2/gphoto2-result.c:51 #: camlibs/ptp2/config.c:6805 #, fuzzy msgid "Application Mode" msgstr "æ“作模å¼" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "" # camlibs/minolta/dimagev/dimagev.c:371 #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 #, fuzzy msgid "Sharpening" msgstr "正在充电" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 #, fuzzy msgid "Tone Compensation" msgstr "æ›å…‰è¡¥å¿" # camlibs/polaroid/pdc700.c:981 camlibs/sierra/sierra.c:776 # camlibs/sierra/sierra.c:1353 #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 #, fuzzy msgid "Saturation" msgstr "é…ç½®" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 #, fuzzy msgid "Hue Adjustment" msgstr "图åƒè°ƒæ•´" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/config.c:6811 #, fuzzy msgid "Auto Exposure Bracketing" msgstr "æ›å…‰æµ‹å®š" #: camlibs/ptp2/config.c:6812 #, fuzzy msgid "Movie Sound" msgstr "音效" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 #, fuzzy msgid "Manual Movie Setting" msgstr "照片设置" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "" # camlibs/minolta/dimagev/dimagev.c:308 #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 #, fuzzy msgid "Video Mode" msgstr "录制模å¼" # camlibs/konica/library.c:670 camlibs/konica/library.c:879 #: camlibs/ptp2/config.c:6835 #, fuzzy msgid "Meter Off Time" msgstr "自动关机时间" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "" # camlibs/polaroid/pdc700.c:159 #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 #, fuzzy msgid "Movie Quality" msgstr "图åƒè´¨é‡" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 #, fuzzy msgid "Minimum Shutter Speed" msgstr "快门速度 (ç§’)" # camlibs/konica/library.c:684 camlibs/konica/library.c:896 # camlibs/sierra/sierra.c:786 camlibs/sierra/sierra.c:1117 # camlibs/sierra/sierra.c:1468 camlibs/sierra/sierra.c:1677 #: camlibs/ptp2/config.c:6862 #, fuzzy msgid "Movie Resolution" msgstr "文件分辨率" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 #, fuzzy msgid "Continuous Shooting Speed Slow" msgstr "快门速度 (ç§’)" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "" # camlibs/sierra/sierra.c:1001 camlibs/sierra/sierra.c:1268 #: camlibs/ptp2/config.c:6869 #, fuzzy msgid "Focus Metering" msgstr "åœºæ™¯æµ‹é‡æ¨¡å¼" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 #, fuzzy msgid "High ISO Noise Reduction" msgstr "æ›å…‰è¡¥å¿" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 #, fuzzy msgid "Continuous Shooting Speed High" msgstr "快门速度 (ç§’)" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 #, fuzzy msgid "JPEG Compression Policy" msgstr "压缩" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 #, fuzzy msgid "AF Lock On" msgstr "èšç„¦æ¨¡å¼" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 #, fuzzy msgid "Raw Compression" msgstr "压缩" # camlibs/polaroid/pdc700.c:159 #: camlibs/ptp2/config.c:6922 #, fuzzy msgid "Image Quality 2" msgstr "图åƒè´¨é‡" # camlibs/sierra/sierra.c:1048 camlibs/sierra/sierra.c:1510 #: camlibs/ptp2/config.c:6944 #, fuzzy msgid "Image Settings" msgstr "相机设置" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 #, fuzzy msgid "Capture Settings" msgstr "照片设置" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "" # camlibs/ptp/library.c:100 #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 #, fuzzy msgid "Other PTP Device Properties" msgstr "䏿”¯æŒçš„ PTP 设备属性" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "" #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "" #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "" # libgphoto2/gphoto2-camera.c:850 #: camlibs/ptp2/library.c:2537 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "æ‚¨çš„ç›¸æœºä¸æ”¯æŒæ–‡ä»¶æ”¹å。" # libgphoto2/gphoto2-camera.c:850 #: camlibs/ptp2/library.c:2545 #, fuzzy msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "æ‚¨çš„ç›¸æœºä¸æ”¯æŒæ–‡ä»¶æ”¹å。" # libgphoto2/gphoto2-camera.c:850 #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 #, fuzzy msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "æ‚¨çš„ç›¸æœºä¸æ”¯æŒæ–‡ä»¶æ”¹å。" #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "" # libgphoto2/gphoto2-camera.c:850 #: camlibs/ptp2/library.c:2799 #, fuzzy msgid "Sorry, your camera does not support Nikon capture" msgstr "æ‚¨çš„ç›¸æœºä¸æ”¯æŒæ–‡ä»¶æ”¹å。" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" # libgphoto2/gphoto2-camera.c:850 #: camlibs/ptp2/library.c:3045 #, fuzzy msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "æ‚¨çš„ç›¸æœºä¸æ”¯æŒæ–‡ä»¶æ”¹å。" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 msgid "Canon EOS Half-Press failed" msgstr "" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 msgid "Canon EOS Half-Release failed" msgstr "" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 msgid "Canon EOS Full-Press failed" msgstr "" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 msgid "Canon EOS Full-Release failed" msgstr "" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" # libgphoto2/gphoto2-camera.c:850 #: camlibs/ptp2/library.c:3332 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "æ‚¨çš„ç›¸æœºä¸æ”¯æŒæ–‡ä»¶æ”¹å。" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 msgid "Canon Capture failed" msgstr "" # libgphoto2/gphoto2-camera.c:850 #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 #, fuzzy msgid "Sorry, your camera does not support generic capture" msgstr "æ‚¨çš„ç›¸æœºä¸æ”¯æŒæ–‡ä»¶æ”¹å。" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" # camlibs/dimera/dimera3500.c:543 #: camlibs/ptp2/library.c:4668 #, fuzzy msgid "read only" msgstr "就绪" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "" # camlibs/sierra/sierra.c:1810 #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, fuzzy, c-format msgid "Manufacturer: %s\n" msgstr "%s制造商:%s\n" # frontends/command-line/main.c:384 #: camlibs/ptp2/library.c:4800 #, fuzzy, c-format msgid "Model: %s\n" msgstr "åž‹å·ï¼š" # frontends/command-line/actions.c:159 #: camlibs/ptp2/library.c:4802 #, fuzzy, c-format msgid " Version: %s\n" msgstr "版本:" # camlibs/sierra/sierra.c:1818 #: camlibs/ptp2/library.c:4805 #, fuzzy, c-format msgid " Serial Number: %s\n" msgstr "%såºåˆ—å·ï¼š%s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "" # camlibs/kodak/dc240/dc240.c:183 #: camlibs/ptp2/library.c:4821 #, fuzzy, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "固件版本:%d.%02d\n" # frontends/command-line/gphoto2-cmd-capture.c:218 # libgphoto2/gphoto2-result.c:51 #: camlibs/ptp2/library.c:4828 #, fuzzy, c-format msgid "Functional Mode: 0x%04x\n" msgstr "æ“作模å¼" # camlibs/konica/library.c:729 camlibs/konica/library.c:960 #: camlibs/ptp2/library.c:4833 #, fuzzy, c-format msgid "" "\n" "Capture Formats: " msgstr "日期格å¼" # camlibs/konica/library.c:729 camlibs/konica/library.c:960 #: camlibs/ptp2/library.c:4847 #, fuzzy, c-format msgid "Display Formats: " msgstr "日期格å¼" #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr "" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "" # camlibs/konica/library.c:684 camlibs/konica/library.c:896 # camlibs/sierra/sierra.c:786 camlibs/sierra/sierra.c:1117 # camlibs/sierra/sierra.c:1468 camlibs/sierra/sierra.c:1677 #: camlibs/ptp2/library.c:4902 #, fuzzy, c-format msgid "File Deletion, " msgstr "文件分辨率" # camlibs/konica/library.c:684 camlibs/konica/library.c:896 # camlibs/sierra/sierra.c:786 camlibs/sierra/sierra.c:1117 # camlibs/sierra/sierra.c:1468 camlibs/sierra/sierra.c:1677 #: camlibs/ptp2/library.c:4904 #, fuzzy, c-format msgid "No File Deletion, " msgstr "文件分辨率" # camlibs/canon/serial.c:888 #: camlibs/ptp2/library.c:4908 #, fuzzy, c-format msgid "File Upload\n" msgstr "正在上载文件..." #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/ptp2/library.c:4920 #, fuzzy, c-format msgid "Open Capture, " msgstr "光圈" #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/ptp2/library.c:4929 #, fuzzy, c-format msgid "Canon Capture" msgstr "光圈" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/ptp2/library.c:4947 #, fuzzy, c-format msgid "Nikon Capture 1" msgstr "光圈" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/ptp2/library.c:4965 #, fuzzy, c-format msgid "Sony Capture" msgstr "光圈" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "" # camlibs/konica/konica.c:83 #: camlibs/ptp2/library.c:4991 #, fuzzy, c-format msgid "\tCanon Wifi support\n" msgstr "䏿”¯æŒçš„å¡ã€‚" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, fuzzy, c-format msgid "Unknown: 0x%04x\n" msgstr "未知 (0x%02x)" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "" # camlibs/polaroid/pdc700.c:167 #: camlibs/ptp2/library.c:5043 #, fuzzy msgid "Generic Flat" msgstr "普通" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "" # camlibs/minolta/dimagev/dimagev.c:371 #: camlibs/ptp2/library.c:5056 #, fuzzy msgid "Read-Only" msgstr "就绪" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "" # camlibs/stv0680/library.c:572 #: camlibs/ptp2/library.c:5075 #, fuzzy, c-format msgid "\tFree Space (Images): %d\n" msgstr "å›¾åƒæ•°é‡ï¼š%d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr "" # camlibs/konica/konica.c:92 #: camlibs/ptp2/library.c:5116 #, fuzzy, c-format msgid "cannot be queried.\n" msgstr "无法写入å¡ã€‚" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr "" #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "" #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "" # libgphoto2/gphoto2-camera.c:818 #: camlibs/ptp2/library.c:6414 #, fuzzy msgid "Device does not support setting object protection." msgstr "è¯¥ç›¸æœºä¸æ”¯æŒè®¾ç½®é…置选项。" #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "" # camlibs/canon/library.c:176 #: camlibs/ptp2/library.c:6870 #, fuzzy msgid "Initializing Camera" msgstr "关闭相机" # camlibs/ptp/library.c:918 #: camlibs/ptp2/library.c:7254 #, fuzzy, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "PTP 仅为 USB 相机实现。" #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" # camlibs/ptp/library.c:90 #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "未定义的 PTP 错误" # camlibs/ptp/library.c:91 #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP OKï¼" # camlibs/ptp/library.c:92 #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "PTP 通用错误" # camlibs/ptp/library.c:93 #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP ä¼šè¯æœªæ‰“å¼€" # camlibs/ptp/library.c:94 #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "éžæ³•çš„ PTP 传输 ID" # camlibs/ptp/library.c:95 #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "䏿”¯æŒçš„ PTP æ“作" # camlibs/ptp/library.c:96 #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "䏿”¯æŒçš„ PTP 傿•°" # camlibs/ptp/library.c:97 #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "未完æˆçš„ PTP 传输" # camlibs/ptp/library.c:98 #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "éžæ³•çš„ PTP 存储 ID" # camlibs/ptp/library.c:99 #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "éžæ³•çš„ PTP å¯¹è±¡å¥æŸ„" # camlibs/ptp/library.c:100 #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "䏿”¯æŒçš„ PTP 设备属性" # camlibs/ptp/library.c:101 #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "éžæ³•çš„ PTP 对象格å¼ä»£ç " # camlibs/ptp/library.c:102 #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP 存储已满" # camlibs/ptp/library.c:103 #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP å¯¹è±¡å·²å†™ä¿æŠ¤" # camlibs/ptp/library.c:104 #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "åªè¯»çš„ PTP 存储" # camlibs/ptp/library.c:105 #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP è®¿é—®é­æ‹’ç»" # camlibs/ptp/library.c:106 #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "ä¸å­˜åœ¨ PTP 缩略图" # camlibs/ptp/library.c:107 #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP 自检失败" # camlibs/ptp/library.c:108 #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP 部分删除" # camlibs/ptp/library.c:109 #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "PTP 存储ä¸å¯ç”¨" # camlibs/ptp/library.c:111 #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "䏿”¯æŒçš„ PTP æ ¼å¼è§„范" # camlibs/ptp/library.c:112 #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "æ²¡æœ‰åˆæ³•çš„ PTP 对象信æ¯" # camlibs/ptp/library.c:113 #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "éžæ³•çš„ PTP ä»£ç æ ¼å¼" # camlibs/ptp/library.c:114 #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "未知的 PTP 厂家代ç " # camlibs/ptp/library.c:116 #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP æ•获已终止" # camlibs/ptp/library.c:117 #: camlibs/ptp2/ptp.c:4038 #, fuzzy msgid "PTP Device Busy" msgstr "PTP 设备总线" # camlibs/ptp/library.c:118 #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "éžæ³•çš„ PTP 父对象" # camlibs/ptp/library.c:119 #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "éžæ³•çš„ PTP 设备属性格å¼" # camlibs/ptp/library.c:120 #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "éžæ³•çš„ PTP 设备属性值" # camlibs/ptp/library.c:121 #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "éžæ³•çš„ PTP 傿•°" # camlibs/ptp/library.c:122 #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP 会è¯å·²æ‰“å¼€" # camlibs/ptp/library.c:123 #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP ä¼ è¾“å·²å–æ¶ˆ" # camlibs/ptp/library.c:125 #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "䏿”¯æŒçš„ PTP 目标规范" # camlibs/ptp/library.c:126 #: camlibs/ptp2/ptp.c:4047 #, fuzzy msgid "Filename Required" msgstr "éœ€è¦ PTP EK 文件å" # camlibs/ptp/library.c:127 #: camlibs/ptp2/ptp.c:4048 #, fuzzy msgid "Filename Conflicts" msgstr "PTP EK 文件å冲çª" # camlibs/ptp/library.c:128 #: camlibs/ptp2/ptp.c:4049 #, fuzzy msgid "Filename Invalid" msgstr "éžæ³•çš„ PTP EK 文件å" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "" # camlibs/dimera/dimera3500.c:684 camlibs/dimera/dimera3500.c:850 # camlibs/dimera/dimera3500.c:918 #: camlibs/ptp2/ptp.c:4052 #, fuzzy msgid "Out of Focus" msgstr "内存耗尽" # camlibs/sierra/sierra.c:1806 #: camlibs/ptp2/ptp.c:4053 #, fuzzy msgid "Change Camera Mode Failed" msgstr "%s相机型å·ï¼š%s\n" # camlibs/kodak/dc240/library.c:583 camlibs/kodak/dc240/library.c:598 #: camlibs/ptp2/ptp.c:4054 #, fuzzy msgid "Invalid Status" msgstr "éžæ³•" # camlibs/ptp/library.c:100 #: camlibs/ptp2/ptp.c:4055 #, fuzzy msgid "Set Property Not Supported" msgstr "䏿”¯æŒçš„ PTP 设备属性" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4056 #, fuzzy msgid "Whitebalance Reset Error" msgstr "白平衡" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/ptp.c:4058 #, fuzzy msgid "Shutter Speed Bulb" msgstr "快门速度 (ç§’)" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "" # libgphoto2/gphoto2-result.c:46 #: camlibs/ptp2/ptp.c:4066 #, fuzzy msgid "Unknown Command" msgstr "未知型å·" # frontends/command-line/gphoto2-cmd-capture.c:218 # libgphoto2/gphoto2-result.c:51 #: camlibs/ptp2/ptp.c:4067 #, fuzzy msgid "Operation Refused" msgstr "æ“ä½œå·²å–æ¶ˆ" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "" # camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/ptp.c:4069 #, fuzzy msgid "Battery Low" msgstr "电池" # camlibs/canon/library.c:811 #: camlibs/ptp2/ptp.c:4070 #, fuzzy msgid "Camera Not Ready" msgstr "ç›¸æœºåž‹å· (åªè¯»)" # camlibs/sierra/sierra.c:1581 camlibs/sierra/sierra.c:1754 #: camlibs/ptp2/ptp.c:4072 #, fuzzy msgid "PTP Timeout" msgstr "日期和时间" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "" # camlibs/ptp/library.c:133 #: camlibs/ptp2/ptp.c:4075 #, fuzzy msgid "PTP Response Expected" msgstr "PTP å议错误,需è¦å“应" # camlibs/ptp/library.c:132 #: camlibs/ptp2/ptp.c:4076 #, fuzzy msgid "PTP Data Expected" msgstr "PTP åè®®é”™è¯¯ï¼Œéœ€è¦æ•°æ®" # camlibs/ptp/library.c:130 #: camlibs/ptp2/ptp.c:4077 #, fuzzy msgid "PTP I/O Error" msgstr "PTP I/O 错误" # camlibs/ptp/library.c:90 #: camlibs/ptp2/ptp.c:4101 #, fuzzy msgid "Undefined PTP Property" msgstr "未定义的 PTP 错误" # frontends/command-line/gphoto2-cmd-capture.c:218 # libgphoto2/gphoto2-result.c:51 #: camlibs/ptp2/ptp.c:4103 #, fuzzy msgid "Functional Mode" msgstr "æ“作模å¼" #: camlibs/ptp2/ptp.c:4105 #, fuzzy msgid "Compression Setting" msgstr "压缩" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "白平衡" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "" # camlibs/jd11/jd11.c:207 camlibs/jd11/jd11.c:255 #: camlibs/ptp2/ptp.c:4114 #, fuzzy msgid "Exposure Time" msgstr "闪光ç¯é—ªå…‰æ—¶é—´" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:4115 #, fuzzy msgid "Exposure Program Mode" msgstr "æ›å…‰æµ‹å®š" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "" #: camlibs/ptp2/ptp.c:4119 #, fuzzy msgid "Exposure Bias Compensation" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "" # camlibs/sierra/sierra.c:921 camlibs/sierra/sierra.c:932 # camlibs/sierra/sierra.c:1220 #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 #, fuzzy msgid "Contrast" msgstr "对比度-" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "数字缩放" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "" # camlibs/sierra/sierra.c:918 camlibs/sierra/sierra.c:926 # camlibs/sierra/sierra.c:1214 #: camlibs/ptp2/ptp.c:4134 #, fuzzy msgid "Copyright Info" msgstr "版æƒ" #: camlibs/ptp2/ptp.c:4135 msgid "Supported Streams" msgstr "" #: camlibs/ptp2/ptp.c:4136 msgid "Enabled Streams" msgstr "" # camlibs/konica/library.c:729 camlibs/konica/library.c:960 #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "日期格å¼" # camlibs/konica/library.c:684 camlibs/konica/library.c:896 # camlibs/sierra/sierra.c:786 camlibs/sierra/sierra.c:1117 # camlibs/sierra/sierra.c:1468 camlibs/sierra/sierra.c:1677 #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "文件分辨率" # camlibs/polaroid/pdc700.c:159 #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "图åƒè´¨é‡" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" # camlibs/sierra/sierra.c:921 camlibs/sierra/sierra.c:932 # camlibs/sierra/sierra.c:1220 #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "对比度-" # camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1322 #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "LCD 亮度" # camlibs/konica/library.c:729 camlibs/konica/library.c:960 #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "日期格å¼" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" # camlibs/konica/library.c:729 camlibs/konica/library.c:960 #: camlibs/ptp2/ptp.c:4156 #, fuzzy msgid "Date Time Stamp Format" msgstr "日期格å¼" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "" # camlibs/dimera/dimera3500.c:539 #: camlibs/ptp2/ptp.c:4159 #, fuzzy msgid "Power Saving" msgstr "æ— ç”µæºæŒ‡ç¤ºç¯" # camlibs/konica/library.c:710 camlibs/konica/library.c:915 # camlibs/sierra/sierra.c:1544 camlibs/sierra/sierra.c:1728 #: camlibs/ptp2/ptp.c:4160 #, fuzzy msgid "UI Language" msgstr "语言" # camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/ptp.c:4169 #, fuzzy msgid "Battery Type" msgstr "电池" # camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/ptp.c:4170 #, fuzzy msgid "Battery Mode" msgstr "电池" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "" # camlibs/sierra/sierra.c:1806 #: camlibs/ptp2/ptp.c:4172 #, fuzzy msgid "Camera Mode" msgstr "%s相机型å·ï¼š%s\n" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "" # camlibs/konica/library.c:797 camlibs/konica/library.c:1018 # camlibs/polaroid/pdc700.c:163 #: camlibs/ptp2/ptp.c:4176 #, fuzzy msgid "Self Time" msgstr "自动定时" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 #, fuzzy msgid "Shooting Mode" msgstr "快门速度 (ç§’)" # camlibs/polaroid/pdc700.c:160 #: camlibs/ptp2/ptp.c:4180 #, fuzzy msgid "Image Mode" msgstr "图åƒå¤§å°" # camlibs/sierra/sierra.c:1355 #: camlibs/ptp2/ptp.c:4187 #, fuzzy msgid "Slow Shutter Setting" msgstr "æ‹æ‘„设置" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/ptp.c:4188 #, fuzzy msgid "AF Mode" msgstr "LED 模å¼" # camlibs/sierra/sierra.c:1048 camlibs/sierra/sierra.c:1510 #: camlibs/ptp2/ptp.c:4189 #, fuzzy msgid "Image Stabilization" msgstr "相机设置" # camlibs/jd11/jd11.c:215 camlibs/jd11/jd11.c:263 #: camlibs/ptp2/ptp.c:4191 #, fuzzy msgid "Color Gain" msgstr "色彩设置" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "" #: camlibs/ptp2/ptp.c:4194 #, fuzzy msgid "Parameter Set" msgstr "傿•° 1" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "" # camlibs/sierra/sierra.c:1806 #: camlibs/ptp2/ptp.c:4207 #, fuzzy msgid "Capture Transfer Mode" msgstr "%s相机型å·ï¼š%s\n" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "" # camlibs/polaroid/pdc700.c:159 #: camlibs/ptp2/ptp.c:4210 #, fuzzy msgid "Size Quality Mode" msgstr "图åƒè´¨é‡" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "" # camlibs/canon/serial.c:1190 #: camlibs/ptp2/ptp.c:4217 #, fuzzy msgid "Camera Owner" msgstr "相机就绪。\n" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "" # camlibs/sierra/sierra.c:1806 #: camlibs/ptp2/ptp.c:4219 #, fuzzy msgid "Camera Body ID" msgstr "%s相机型å·ï¼š%s\n" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "" #: camlibs/ptp2/ptp.c:4223 #, fuzzy msgid "Digital Zoom Magnification" msgstr "数字缩放" #: camlibs/ptp2/ptp.c:4224 #, fuzzy msgid "Ml Spot Position" msgstr "èšç„¦ä½ç½®" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "" # frontends/command-line/main.c:384 #: camlibs/ptp2/ptp.c:4239 #, fuzzy msgid "Model ID" msgstr "åž‹å·ï¼š" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/ptp.c:4248 #, fuzzy msgid "Shooting Bank" msgstr "快门速度 (ç§’)" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4278 #, fuzzy msgid "White Balance Preset Number" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4280 #, fuzzy msgid "White Balance Preset Name 0" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4282 #, fuzzy msgid "White Balance Preset Name 1" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4284 #, fuzzy msgid "White Balance Preset Name 2" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4286 #, fuzzy msgid "White Balance Preset Name 3" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4288 #, fuzzy msgid "White Balance Preset Name 4" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4290 #, fuzzy msgid "White Balance Preset Value 0" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4292 #, fuzzy msgid "White Balance Preset Value 1" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4294 #, fuzzy msgid "White Balance Preset Value 2" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4296 #, fuzzy msgid "White Balance Preset Value 3" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4298 #, fuzzy msgid "White Balance Preset Value 4" msgstr "白平衡" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/ptp.c:4360 #, fuzzy msgid "Focus Area Zone" msgstr "èšç„¦æ¨¡å¼" # camlibs/sierra/sierra.c:918 camlibs/sierra/sierra.c:926 # camlibs/sierra/sierra.c:1214 #: camlibs/ptp2/ptp.c:4362 #, fuzzy msgid "Enable Copyright" msgstr "版æƒ" # camlibs/jd11/jd11.c:207 camlibs/jd11/jd11.c:255 #: camlibs/ptp2/ptp.c:4366 #, fuzzy msgid "Exposure ISO Step" msgstr "闪光ç¯é—ªå…‰æ—¶é—´" # camlibs/jd11/jd11.c:207 camlibs/jd11/jd11.c:255 #: camlibs/ptp2/ptp.c:4368 #, fuzzy msgid "Exposure Step" msgstr "闪光ç¯é—ªå…‰æ—¶é—´" #: camlibs/ptp2/ptp.c:4370 #, fuzzy msgid "Exposure Compensation (EV)" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:4376 #, fuzzy msgid "Exposure Base Matrix" msgstr "æ›å…‰æµ‹å®š" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:4378 #, fuzzy msgid "Exposure Base Center" msgstr "æ›å…‰æµ‹å®š" # camlibs/jd11/jd11.c:207 camlibs/jd11/jd11.c:255 #: camlibs/ptp2/ptp.c:4380 #, fuzzy msgid "Exposure Base Spot" msgstr "闪光ç¯é—ªå…‰æ—¶é—´" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "" # camlibs/konica/library.c:670 camlibs/konica/library.c:879 #: camlibs/ptp2/ptp.c:4390 #, fuzzy msgid "Auto Meter Off Time" msgstr "自动关机时间" # camlibs/konica/library.c:663 camlibs/konica/library.c:871 #: camlibs/ptp2/ptp.c:4392 #, fuzzy msgid "Self Timer Delay" msgstr "自动定时器时间" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "" # camlibs/konica/library.c:670 camlibs/konica/library.c:879 #: camlibs/ptp2/ptp.c:4398 #, fuzzy msgid "Auto Off Timers" msgstr "自动关机时间" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/ptp.c:4402 #, fuzzy msgid "Shooting Speed" msgstr "快门速度 (ç§’)" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:4406 #, fuzzy msgid "Exposure delay mode" msgstr "æ›å…‰æµ‹å®š" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 #, fuzzy msgid "Long Exposure Noise Reduction" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "" #: camlibs/ptp2/ptp.c:4418 #, fuzzy msgid "High ISO noise reduction" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "" # camlibs/sierra/sierra.c:918 camlibs/sierra/sierra.c:926 # camlibs/sierra/sierra.c:1214 #: camlibs/ptp2/ptp.c:4424 #, fuzzy msgid "Copyright Information" msgstr "版æƒ" # camlibs/minolta/dimagev/dimagev.c:331 #: camlibs/ptp2/ptp.c:4432 #, fuzzy msgid "Modeling Flash" msgstr "强制闪光\n" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "" # camlibs/konica/library.c:750 camlibs/konica/library.c:762 #: camlibs/ptp2/ptp.c:4440 #, fuzzy msgid "Auto Bracket Selection" msgstr "自动,消红眼" # camlibs/konica/library.c:750 camlibs/konica/library.c:762 #: camlibs/ptp2/ptp.c:4441 #, fuzzy msgid "NIKON Auto Bracketing Set" msgstr "自动,消红眼" # camlibs/sierra/sierra.c:1001 camlibs/sierra/sierra.c:1268 #: camlibs/ptp2/ptp.c:4443 #, fuzzy msgid "Center Button Shooting Mode" msgstr "åœºæ™¯æµ‹é‡æ¨¡å¼" #: camlibs/ptp2/ptp.c:4445 #, fuzzy msgid "Center Button Playback Mode" msgstr "当剿¨¡å¼ï¼šå›žæ”¾æ¨¡å¼\n" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/ptp2/ptp.c:4457 #, fuzzy msgid "Aperture Setting" msgstr "照片设置" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "" # camlibs/sierra/sierra.c:1001 camlibs/sierra/sierra.c:1268 #: camlibs/ptp2/ptp.c:4465 #, fuzzy msgid "Center Button Zoom Ratio" msgstr "åœºæ™¯æµ‹é‡æ¨¡å¼" # frontends/command-line/gphoto2-cmd-capture.c:218 # libgphoto2/gphoto2-result.c:51 #: camlibs/ptp2/ptp.c:4467 #, fuzzy msgid "Function Button 2" msgstr "æ“作模å¼" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/ptp2/ptp.c:4471 #, fuzzy msgid "Normal AF On" msgstr "普通" # camlibs/sierra/sierra.c:1048 camlibs/sierra/sierra.c:1510 #: camlibs/ptp2/ptp.c:4473 #, fuzzy msgid "Clean Image Sensor" msgstr "相机设置" #: camlibs/ptp2/ptp.c:4475 #, fuzzy msgid "Image Comment String" msgstr "图åƒè°ƒæ•´" #: camlibs/ptp2/ptp.c:4477 #, fuzzy msgid "Image Comment Enable" msgstr "图åƒè°ƒæ•´" # camlibs/sierra/sierra.c:1048 camlibs/sierra/sierra.c:1510 #: camlibs/ptp2/ptp.c:4479 #, fuzzy msgid "Image Rotation" msgstr "相机设置" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:4497 #, fuzzy msgid "Bracketing Enable" msgstr "æ›å…‰æµ‹å®š" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:4499 #, fuzzy msgid "Exposure Bracketing Step" msgstr "æ›å…‰æµ‹å®š" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:4501 #, fuzzy msgid "Exposure Bracketing Program" msgstr "æ›å…‰æµ‹å®š" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:4503 #, fuzzy msgid "Auto Exposure Bracket Count" msgstr "æ›å…‰æµ‹å®š" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4504 #, fuzzy msgid "White Balance Bracket Step" msgstr "白平衡" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ptp2/ptp.c:4505 #, fuzzy msgid "White Balance Bracket Program" msgstr "白平衡" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/ptp.c:4507 #, fuzzy msgid "Lens ID" msgstr "镜头模å¼" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/ptp.c:4509 #, fuzzy msgid "Lens Sort" msgstr "镜头模å¼" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/ptp.c:4511 #, fuzzy msgid "Lens Type" msgstr "镜头模å¼" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "" # camlibs/konica/library.c:670 camlibs/konica/library.c:879 #: camlibs/ptp2/ptp.c:4523 #, fuzzy msgid "Auto Off Photo" msgstr "自动关机时间" # camlibs/konica/library.c:670 camlibs/konica/library.c:879 #: camlibs/ptp2/ptp.c:4525 #, fuzzy msgid "Auto Off Menu" msgstr "自动关机时间" # camlibs/konica/library.c:670 camlibs/konica/library.c:879 #: camlibs/ptp2/ptp.c:4527 #, fuzzy msgid "Auto Off Info" msgstr "自动关机时间" # camlibs/konica/library.c:663 camlibs/konica/library.c:871 #: camlibs/ptp2/ptp.c:4529 #, fuzzy msgid "Self Timer Shot Number" msgstr "自动定时器时间" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "" # camlibs/jd11/jd11.c:207 camlibs/jd11/jd11.c:255 #: camlibs/ptp2/ptp.c:4537 #, fuzzy msgid "Nikon Exposure Time" msgstr "闪光ç¯é—ªå…‰æ—¶é—´" # camlibs/minolta/dimagev/dimagev.c:400 #: camlibs/ptp2/ptp.c:4539 #, fuzzy msgid "Warning Status" msgstr "å¡çжæ€ï¼š\t\t" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/ptp.c:4546 #, fuzzy msgid "AF LCD Top Mode 2" msgstr "LCD 模å¼" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:4552 #, fuzzy msgid "Exposure Meter" msgstr "æ›å…‰æµ‹å®š" #: camlibs/ptp2/ptp.c:4556 #, fuzzy msgid "USB Speed" msgstr "ISO 速度" # camlibs/sierra/sierra.c:1818 #: camlibs/ptp2/ptp.c:4558 #, fuzzy msgid "CCD Serial Number" msgstr "%såºåˆ—å·ï¼š%s\n" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/ptp.c:4564 #, fuzzy msgid "FNumber Lock" msgstr "èšç„¦æ¨¡å¼" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:4566 #, fuzzy msgid "Exposure Aperture Lock" msgstr "æ›å…‰æµ‹å®š" # camlibs/sierra/sierra.c:1355 #: camlibs/ptp2/ptp.c:4568 #, fuzzy msgid "TV Lock Setting" msgstr "æ‹æ‘„设置" # camlibs/sierra/sierra.c:1355 #: camlibs/ptp2/ptp.c:4570 #, fuzzy msgid "AV Lock Setting" msgstr "æ‹æ‘„设置" # camlibs/sierra/sierra.c:1048 camlibs/sierra/sierra.c:1510 #: camlibs/ptp2/ptp.c:4572 #, fuzzy msgid "Illum Setting" msgstr "相机设置" # camlibs/konica/konica.c:62 #: camlibs/ptp2/ptp.c:4574 #, fuzzy msgid "Focus Point Bright" msgstr "èšç„¦é”™è¯¯ã€‚" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 #, fuzzy msgid "External Flash Mode" msgstr "é—ªå…‰ç¯æ¨¡å¼" #: camlibs/ptp2/ptp.c:4584 #, fuzzy msgid "External Flash Compensation" msgstr "æ›å…‰è¡¥å¿" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "" # camlibs/sierra/sierra.c:921 camlibs/sierra/sierra.c:932 # camlibs/sierra/sierra.c:1220 #: camlibs/ptp2/ptp.c:4604 #, fuzzy msgid "BW Contrast" msgstr "对比度-" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/ptp2/ptp.c:4614 #, fuzzy msgid "Flourescent Type" msgstr "è§å…‰" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "" # camlibs/sierra/sierra.c:1552 camlibs/sierra/sierra.c:1568 # camlibs/sierra/sierra.c:1745 #: camlibs/ptp2/ptp.c:4618 #, fuzzy msgid "Tune Preset 0" msgstr "è‘¡è„牙语" # camlibs/sierra/sierra.c:1552 camlibs/sierra/sierra.c:1568 # camlibs/sierra/sierra.c:1745 #: camlibs/ptp2/ptp.c:4620 #, fuzzy msgid "Tune Preset 1" msgstr "è‘¡è„牙语" # camlibs/sierra/sierra.c:1552 camlibs/sierra/sierra.c:1568 # camlibs/sierra/sierra.c:1745 #: camlibs/ptp2/ptp.c:4622 #, fuzzy msgid "Tune Preset 2" msgstr "è‘¡è„牙语" # camlibs/sierra/sierra.c:1552 camlibs/sierra/sierra.c:1568 # camlibs/sierra/sierra.c:1745 #: camlibs/ptp2/ptp.c:4624 #, fuzzy msgid "Tune Preset 3" msgstr "è‘¡è„牙语" # camlibs/sierra/sierra.c:1552 camlibs/sierra/sierra.c:1568 # camlibs/sierra/sierra.c:1745 #: camlibs/ptp2/ptp.c:4626 #, fuzzy msgid "Tune Preset 4" msgstr "è‘¡è„牙语" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/ptp.c:4630 #, fuzzy msgid "Autofocus Mode" msgstr "èšç„¦æ¨¡å¼" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "" # camlibs/konica/library.c:749 camlibs/konica/library.c:765 # camlibs/konica/library.c:780 camlibs/konica/library.c:783 # camlibs/konica/library.c:993 camlibs/konica/library.c:1023 # camlibs/sierra/sierra.c:787 camlibs/sierra/sierra.c:793 # camlibs/sierra/sierra.c:827 camlibs/sierra/sierra.c:833 # camlibs/sierra/sierra.c:886 camlibs/sierra/sierra.c:893 # camlibs/sierra/sierra.c:947 camlibs/sierra/sierra.c:954 # camlibs/sierra/sierra.c:1121 camlibs/sierra/sierra.c:1150 # camlibs/sierra/sierra.c:1190 camlibs/sierra/sierra.c:1233 # camlibs/sierra/sierra.c:1396 camlibs/sierra/sierra.c:1402 # camlibs/sierra/sierra.c:1424 camlibs/sierra/sierra.c:1429 # camlibs/sierra/sierra.c:1629 camlibs/sierra/sierra.c:1649 #: camlibs/ptp2/ptp.c:4656 #, fuzzy msgid "Auto FP" msgstr "自动" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "" # camlibs/sierra/sierra.c:1830 #: camlibs/ptp2/ptp.c:4662 #, fuzzy msgid "Battery Cell Kind" msgstr "%s电池寿命:%i\n" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "" # camlibs/polaroid/pdc700.c:161 #: camlibs/ptp2/ptp.c:4670 #, fuzzy msgid "Info Disp Setting" msgstr "闪光ç¯è®¾ç½®" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/ptp2/ptp.c:4684 #, fuzzy msgid "Live View Mode" msgstr "LED 模å¼" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "" # camlibs/jd11/jd11.c:207 camlibs/jd11/jd11.c:255 #: camlibs/ptp2/ptp.c:4694 #, fuzzy msgid "Exposure Display Status" msgstr "闪光ç¯é—ªå…‰æ—¶é—´" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "" # camlibs/jd11/jd11.c:207 camlibs/jd11/jd11.c:255 #: camlibs/ptp2/ptp.c:4700 #, fuzzy msgid "Exposure Indicate Lightup" msgstr "闪光ç¯é—ªå…‰æ—¶é—´" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/ptp.c:4708 #, fuzzy msgid "Flash MRepeat Count" msgstr "é—ªå…‰ç¯æ¨¡å¼" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "" #: camlibs/ptp2/ptp.c:4749 #, fuzzy msgid "Image Compression" msgstr "压缩" # camlibs/jd11/jd11.c:207 camlibs/jd11/jd11.c:255 #: camlibs/ptp2/ptp.c:4758 #, fuzzy msgid "Secure Time" msgstr "闪光ç¯é—ªå…‰æ—¶é—´" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "" # camlibs/polaroid/pdc700.c:159 #: camlibs/ptp2/ptp.c:4782 #, fuzzy msgid "Quality" msgstr "图åƒè´¨é‡" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/ptp.c:4783 #, fuzzy msgid "Release Mode" msgstr "é—ªå…‰ç¯æ¨¡å¼" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/ptp.c:4784 #, fuzzy msgid "Focus Areas" msgstr "èšç„¦æ¨¡å¼" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:4785 #, fuzzy msgid "AE Lock" msgstr "æ›å…‰" # camlibs/polaroid/pdc700.c:160 #: camlibs/ptp2/ptp.c:4797 #, fuzzy msgid "Image size" msgstr "图åƒå¤§å°" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/ptp2/ptp.c:4798 #, fuzzy msgid "Shutter speed" msgstr "快门速度 (ç§’)" #: camlibs/ptp2/ptp.c:4799 msgid "Color temperature" msgstr "" # camlibs/jd11/jd11.c:207 camlibs/jd11/jd11.c:255 #: camlibs/ptp2/ptp.c:4802 #, fuzzy msgid "Expose Index" msgstr "闪光ç¯é—ªå…‰æ—¶é—´" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" # camlibs/polaroid/pdc700.c:999 #: camlibs/ptp2/ptp.c:4807 #, fuzzy msgid "Still Image" msgstr "图åƒ" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "" #: camlibs/ptp2/ptp.c:4940 #, fuzzy msgid "JPEG Norm" msgstr "JPEG" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "" # camlibs/minolta/dimagev/dimagev.c:323 #: camlibs/ptp2/ptp.c:4966 #, fuzzy msgid "Automatic flash" msgstr "自动\n" # camlibs/konica/library.c:750 camlibs/konica/library.c:762 #: camlibs/ptp2/ptp.c:4969 #, fuzzy msgid "Automatic Red-eye Reduction" msgstr "自动,消红眼" #: camlibs/ptp2/ptp.c:4970 #, fuzzy msgid "Red-eye fill flash" msgstr "红眼闪光ç¯" # camlibs/dimera/dimera3500.c:539 #: camlibs/ptp2/ptp.c:4988 #, fuzzy msgid "Power Wind" msgstr "æ— ç”µæºæŒ‡ç¤ºç¯" # camlibs/minolta/dimagev/dimagev.c:299 #: camlibs/ptp2/ptp.c:4994 #, fuzzy msgid "Timer + Remote" msgstr "远程" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "" # camlibs/sierra/sierra.c:885 camlibs/sierra/sierra.c:1186 # camlibs/sierra/sierra.c:1395 camlibs/sierra/sierra.c:1626 #: camlibs/ptp2/ptp.c:5056 #, fuzzy msgid "Flash Lock" msgstr "é—ªå…‰ç¯æ¨¡å¼" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "" # camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1322 #: camlibs/ptp2/ptp.c:5169 #, fuzzy msgid "LCD Backlight" msgstr "LCD 亮度" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "" #: camlibs/ptp2/ptp.c:5228 #, fuzzy msgid "1 min" msgstr "41 mm" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "" # camlibs/sierra/sierra.c:948 camlibs/sierra/sierra.c:956 # camlibs/sierra/sierra.c:1235 #: camlibs/ptp2/ptp.c:5266 #, fuzzy msgid "Dark on light" msgstr "日光" # camlibs/konica/konica.c:104 #: camlibs/ptp2/ptp.c:5267 #, fuzzy msgid "Light on dark" msgstr "光线太暗。" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "" # camlibs/sierra/sierra.c:1471 camlibs/sierra/sierra.c:1479 # camlibs/sierra/sierra.c:1684 #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "超精细" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "" # camlibs/konica/library.c:750 camlibs/konica/library.c:762 #: camlibs/ptp2/ptp.c:5345 #, fuzzy msgid "Auto + Red Eye Suppression" msgstr "自动,消红眼" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #: camlibs/ptp2/ptp.c:5370 #, fuzzy msgid "Pan Focus" msgstr "无手册" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "" # camlibs/sierra/sierra.c:1001 camlibs/sierra/sierra.c:1268 #: camlibs/ptp2/ptp.c:5375 #, fuzzy msgid "Continuous Shooting" msgstr "åœºæ™¯æµ‹é‡æ¨¡å¼" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "" # camlibs/sierra/sierra.c:1026 camlibs/sierra/sierra.c:1032 #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "" # camlibs/sierra/sierra.c:1001 camlibs/sierra/sierra.c:1268 #: camlibs/ptp2/ptp.c:5386 #, fuzzy msgid "Spot Metering" msgstr "åœºæ™¯æµ‹é‡æ¨¡å¼" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:5387 #, fuzzy msgid "Average Metering" msgstr "æ›å…‰æµ‹å®š" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/ptp2/ptp.c:5388 #, fuzzy msgid "Evaluative Metering" msgstr "æ›å…‰æµ‹å®š" # camlibs/ptp/library.c:108 #: camlibs/ptp2/ptp.c:5389 #, fuzzy msgid "Partial Metering" msgstr "PTP 部分删除" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "" # camlibs/sierra/sierra.c:1001 camlibs/sierra/sierra.c:1268 #: camlibs/ptp2/ptp.c:5392 #, fuzzy msgid "Multi-Spot Metering" msgstr "åœºæ™¯æµ‹é‡æ¨¡å¼" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "" # camlibs/sierra/sierra.c:789 camlibs/sierra/sierra.c:797 # camlibs/sierra/sierra.c:830 camlibs/sierra/sierra.c:839 # camlibs/sierra/sierra.c:1125 camlibs/sierra/sierra.c:1156 #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 #, fuzzy msgid "High 2" msgstr "高" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "" #: camlibs/ptp2/ptp.c:5462 #, fuzzy msgid "Development Parameters 1" msgstr "傿•° 1" #: camlibs/ptp2/ptp.c:5463 #, fuzzy msgid "Development Parameters 2" msgstr "傿•° 2" #: camlibs/ptp2/ptp.c:5464 #, fuzzy msgid "Development Parameters 3" msgstr "傿•° 3" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "" # camlibs/sierra/sierra.c:826 camlibs/sierra/sierra.c:1146 # camlibs/sierra/sierra.c:1361 camlibs/sierra/sierra.c:1602 #: camlibs/ptp2/ptp.c:5600 #, fuzzy msgid "Encounter" msgstr "光圈" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "" # camlibs/ptp/library.c:90 #: camlibs/ptp2/ptp.c:5605 #, fuzzy msgid "Undefined Audio" msgstr "未定义的 PTP 错误" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "" # camlibs/ptp/library.c:90 #: camlibs/ptp2/ptp.c:5612 #, fuzzy msgid "Undefined Video" msgstr "未定义的 PTP 错误" # camlibs/ptp/library.c:90 #: camlibs/ptp2/ptp.c:5617 #, fuzzy msgid "Undefined Collection" msgstr "未定义的 PTP 错误" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "" # camlibs/ptp/library.c:90 #: camlibs/ptp2/ptp.c:5634 #, fuzzy msgid "Undefined Document" msgstr "未定义的 PTP 错误" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "" # camlibs/ptp/library.c:90 #: camlibs/ptp2/ptp.c:5643 #, fuzzy msgid "Undefined Contact" msgstr "未定义的 PTP 错误" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "" #: camlibs/ptp2/ptp.c:5692 #, fuzzy, c-format msgid "Unknown(%04x)" msgstr "未知 (0x%02x)" #: camlibs/ptp2/ptp.c:5702 msgid "Get device info" msgstr "" #: camlibs/ptp2/ptp.c:5703 #, fuzzy msgid "Open session" msgstr "压缩" #: camlibs/ptp2/ptp.c:5704 #, fuzzy msgid "Close session" msgstr "压缩" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "" # camlibs/canon/serial.c:1400 #: camlibs/ptp2/ptp.c:5711 #, fuzzy msgid "Get thumbnail" msgstr "正在获å–缩略图..." #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "" # camlibs/ptp/library.c:107 #: camlibs/ptp2/ptp.c:5718 #, fuzzy msgid "Self test device" msgstr "PTP 自检失败" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 msgid "Get Vendor Extension Maps" msgstr "" #: camlibs/ptp2/ptp.c:5735 msgid "Get Vendor Device Info" msgstr "" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 msgid "Get Filesystem Manifest" msgstr "" #: camlibs/ptp2/ptp.c:5738 msgid "Get Stream Info" msgstr "" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "" # camlibs/canon/serial.c:1235 #: camlibs/ptp2/ptp.c:5759 #, fuzzy msgid "Set license response" msgstr "ä¸å¯è¯†åˆ«çš„应答" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "" # camlibs/polaroid/pdc700.c:242 #: camlibs/ptp2/ptp.c:5763 #, fuzzy msgid "Get meter response" msgstr "收到æ„外应答" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "" # camlibs/ptp/library.c:118 #: camlibs/ptp2/ptp.c:5800 #, fuzzy msgid "Send Partial Object" msgstr "éžæ³•çš„ PTP 父对象" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "" # camlibs/sierra/sierra.c:802 camlibs/sierra/sierra.c:842 # camlibs/sierra/sierra.c:874 camlibs/sierra/sierra.c:904 # camlibs/sierra/sierra.c:935 camlibs/sierra/sierra.c:966 # camlibs/sierra/sierra.c:990 camlibs/sierra/sierra.c:1012 # camlibs/sierra/sierra.c:1041 camlibs/sierra/sierra.c:1385 # camlibs/sierra/sierra.c:1413 camlibs/sierra/sierra.c:1436 # camlibs/sierra/sierra.c:1458 camlibs/sierra/sierra.c:1484 # camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1571 #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "%i (未知)" # camlibs/ptp/library.c:114 #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "未知的 PTP 厂家代ç " # camlibs/dimera/dimera3500.c:701 camlibs/dimera/dimera3500.c:737 # camlibs/panasonic/coolshot/library.c:375 camlibs/samsung/samsung.c:211 #: camlibs/ricoh/g3.c:357 #, fuzzy msgid "Downloading movie..." msgstr "正在下载文件..." # camlibs/konica/lowlevel.c:382 camlibs/polaroid/pdc700.c:314 # camlibs/sierra/library.c:989 #: camlibs/ricoh/g3.c:363 #, fuzzy msgid "Downloading audio..." msgstr "正在下载..." # camlibs/jamcam/library.c:336 camlibs/jd11/serial.c:455 #: camlibs/ricoh/g3.c:378 #, fuzzy msgid "Downloading EXIF data..." msgstr "正在下载数æ®..." # camlibs/canon/library.c:586 #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, fuzzy, c-format msgid "No EXIF data available for %s." msgstr "ä¸å¯ç”¨ï¼š%s" # libgphoto2/gphoto2-filesys.c:1282 #: camlibs/ricoh/g3.c:484 #, fuzzy msgid "Could not delete file." msgstr "无法找到文件“%sâ€ã€‚" # camlibs/canon/library.c:774 #: camlibs/ricoh/g3.c:512 #, fuzzy msgid "Could not remove directory." msgstr "无法创建目录 \\DCIM。" # camlibs/canon/library.c:774 #: camlibs/ricoh/g3.c:540 #, fuzzy msgid "Could not create directory." msgstr "无法创建目录 \\DCIM。" # frontends/command-line/actions.c:159 #: camlibs/ricoh/g3.c:559 #, fuzzy, c-format msgid "Version: %s\n" msgstr "版本:" # camlibs/minolta/dimagev/dimagev.c:400 #: camlibs/ricoh/g3.c:564 #, fuzzy, c-format msgid "RTC Status: %d\n" msgstr "å¡çжæ€ï¼š\t\t" # camlibs/sierra/sierra.c:1814 #: camlibs/ricoh/g3.c:570 #, fuzzy, c-format msgid "Camera time: %s %s\n" msgstr "%s相机 ID:%s\n" # camlibs/sierra/sierra.c:1814 #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, fuzzy, c-format msgid "Camera ID: %s\n" msgstr "%s相机 ID:%s\n" # camlibs/konica/konica.c:83 #: camlibs/ricoh/g3.c:582 #, fuzzy, c-format msgid "No SD Card inserted.\n" msgstr "䏿”¯æŒçš„å¡ã€‚" # camlibs/sierra/sierra.c:1814 #: camlibs/ricoh/g3.c:585 #, fuzzy, c-format msgid "SD Card ID: %s\n" msgstr "%s相机 ID:%s\n" # camlibs/stv0680/library.c:542 #: camlibs/ricoh/g3.c:593 #, fuzzy, c-format msgid "Photos on camera: %d\n" msgstr "相机内置内存:%d å…†ä½ã€‚\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "尼康 / è²åŠ›æµ¦é©±åŠ¨ç¨‹åºç”±\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "æ ¹æ® Bob Paauwe 的驱动程åºç¼–制\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "未知 (0x%02x)" # camlibs/ricoh/library.c:177 #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "åž‹å·ï¼š%s\n" "内存:%d(字节)/%d å¯ç”¨" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2.0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1.5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1.0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0.5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0.0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0.5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1.0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1.5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2.0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" # camlibs/dimera/dimera3500.c:684 camlibs/dimera/dimera3500.c:850 # camlibs/dimera/dimera3500.c:918 #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "户外" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "最大的" # camlibs/polaroid/pdc700.c:167 #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "最å°çš„" # camlibs/canon/library.c:576 camlibs/canon/library.c:582 # camlibs/canon/library.c:851 camlibs/canon/library.c:857 #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "人物" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "音效" # camlibs/polaroid/pdc700.c:160 #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "图åƒå’ŒéŸ³æ•ˆ" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "人物和音效" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" # camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" # camlibs/sierra/sierra.c:1025 camlibs/sierra/sierra.c:1035 #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" # camlibs/polaroid/pdc700.c:981 camlibs/sierra/sierra.c:776 # camlibs/sierra/sierra.c:1353 #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "é…ç½®" # camlibs/polaroid/pdc700.c:167 #: camlibs/ricoh/library.c:434 msgid "General" msgstr "普通" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "ç‰ˆæƒ (最多 20 个字符)" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "照片" # camlibs/sierra/sierra.c:946 camlibs/sierra/sierra.c:1229 # camlibs/sierra/sierra.c:1423 camlibs/sierra/sierra.c:1646 #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "白平衡" # camlibs/minolta/dimagev/dimagev.c:308 #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "录制模å¼" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "压缩" # camlibs/ricoh/library.c:252 #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "䏿”¯æŒé€Ÿåº¦ %iï¼" # camlibs/ricoh/ricoh.c:75 #: camlibs/ricoh/ricoh.c:67 #, fuzzy, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "" "éœ€è¦ %i 字节,得到 %i。请将此错误报告到 。" # camlibs/ricoh/ricoh.c:75 #: camlibs/ricoh/ricoh.c:76 #, fuzzy, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "" "éœ€è¦ %i 字节,得到 %i。请将此错误报告到 。" # camlibs/ricoh/ricoh.c:165 camlibs/ricoh/ricoh.c:179 #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, fuzzy, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "" "我们希望得到 0x%x 但收到 0x%x。请è”ç³» 。" # camlibs/ricoh/ricoh.c:208 #: camlibs/ricoh/ricoh.c:221 #, fuzzy, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "错误的字符 (0x%x,0x%x)。请è”ç³» 。" # camlibs/ricoh/ricoh.c:250 #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, fuzzy, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "" "相机忙。如果问题总是存在,请è”ç³» 。" # camlibs/sierra/library.c:620 #: camlibs/ricoh/ricoh.c:297 #, fuzzy, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "两次é‡è¯•åŽä»ç„¶è¶…时。请è”ç³» 。" # camlibs/sierra/library.c:620 #: camlibs/ricoh/ricoh.c:313 #, fuzzy, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "两次é‡è¯•åŽä»ç„¶é€šè®¯é”™è¯¯ã€‚请è”ç³» 。" # camlibs/ricoh/ricoh.c:250 #: camlibs/ricoh/ricoh.c:351 #, fuzzy, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "相机处于错误的模å¼ã€‚请è”ç³» 。" # camlibs/sierra/library.c:879 #: camlibs/ricoh/ricoh.c:360 #, fuzzy, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "ç›¸æœºæ— æ³•æŽ¥æ”¶å‚æ•°ã€‚请è”ç³» 。" # camlibs/sierra/library.c:879 #: camlibs/ricoh/ricoh.c:366 #, fuzzy, c-format msgid "An unknown error occurred. Please contact %s." msgstr "é‡åˆ°æœªçŸ¥çš„错误。请è”ç³» 。" #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "文件å的长度ä¸èƒ½è¶…过 12 个字符 (“%sâ€ å«æœ‰ %i 个字符)。" # camlibs/samsung/samsung.c:244 #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "三星 digimax 800k é©±åŠ¨ç¨‹åºæ˜¯ç”± James McKenzie 为 " "gphoto 编写的。Lutz Mueller 将它移æ¤åˆ° gphoto2。" "Marcus Meissner 修正并增强了移æ¤åŽçš„版本。" # camlibs/dimera/dimera3500.c:537 #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "分辨率加尺寸" # camlibs/konica/library.c:633 camlibs/konica/library.c:844 # camlibs/polaroid/pdc700.c:1005 camlibs/polaroid/pdc700.c:1018 # camlibs/polaroid/pdc700.c:1088 #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "日期和时间 (GMT)" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 #, fuzzy msgid "Aperture Settings" msgstr "照片设置" # camlibs/sierra/sierra.c:855 camlibs/sierra/sierra.c:1165 # camlibs/sierra/sierra.c:1494 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "彩色模å¼" # camlibs/sierra/sierra.c:889 camlibs/sierra/sierra.c:899 # camlibs/sierra/sierra.c:1196 camlibs/sierra/sierra.c:1399 # camlibs/sierra/sierra.c:1408 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "消红眼" # camlibs/polaroid/pdc700.c:161 #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "闪光ç¯è®¾ç½®" # camlibs/canon/library.c:598 #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 #, fuzzy msgid "Host power save (seconds)" msgstr "%s (主机时间 %s%i ç§’)" # camlibs/canon/library.c:811 #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 #, fuzzy msgid "Camera power save (seconds)" msgstr "ç›¸æœºåž‹å· (åªè¯»)" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "镜头模å¼" # camlibs/sierra/sierra.c:1545 camlibs/sierra/sierra.c:1554 # camlibs/sierra/sierra.c:1731 #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "韩语" # camlibs/sierra/sierra.c:1546 camlibs/sierra/sierra.c:1556 # camlibs/sierra/sierra.c:1733 #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "英语" # camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1558 # camlibs/sierra/sierra.c:1735 #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "法语" # camlibs/sierra/sierra.c:1548 camlibs/sierra/sierra.c:1560 # camlibs/sierra/sierra.c:1737 #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "德语" # camlibs/sierra/sierra.c:1549 camlibs/sierra/sierra.c:1562 # camlibs/sierra/sierra.c:1739 #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "æ„大利语" # camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1564 # camlibs/sierra/sierra.c:1741 #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "日语" # camlibs/sierra/sierra.c:1551 camlibs/sierra/sierra.c:1566 # camlibs/sierra/sierra.c:1743 #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "西ç­ç‰™è¯­" # camlibs/sierra/sierra.c:1552 camlibs/sierra/sierra.c:1568 # camlibs/sierra/sierra.c:1745 #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "è‘¡è„牙语" # camlibs/sierra/sierra.c:777 camlibs/sierra/sierra.c:1443 #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "照片设置" # camlibs/sierra/sierra.c:1852 #: camlibs/sierra/epson-desc.c:289 #, fuzzy msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "关于爱普生相机的一些事项:\n" "- æœ‰äº›å‚æ•°æ— æ³•远程控制:\n" " * 缩放\n" " * èšç„¦\n" " * custom white balance setup\n" "- é…置是通过对 PhotoPC 3000z 进行åå‘工程\n" " 而得到的。如果您的相机于此ä¸åŒï¼Œè¯·å‘ \n" " å‘é€ç”µå­é‚®ä»¶ (用英语)\n" # camlibs/konica/konica.c:80 #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "未æ’内存å¡" # camlibs/sierra/library.c:285 #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "无法检索电池容é‡" # camlibs/sierra/library.c:291 #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "相机电é‡å¤ªä½Ž (%d%%)。æ“ä½œå–æ¶ˆã€‚" # camlibs/sierra/library.c:315 #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "无法检索剩余å¯ç”¨å†…å­˜" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "相机三次拒ç»ä¿æŒè¿žæŽ¥æ‰“开的请求。" # camlibs/sierra/library.c:502 #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "接收的第一个字节 (0x%x) éžæ³•。" # camlibs/sierra/library.c:620 #: camlibs/sierra/library.c:738 #, fuzzy, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "在 %i 次é‡è¯•åŽåŒ…传输ä»ç„¶è¶…时。请è”ç³» 。" #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "在几次é‡è¯•åŽä»ä¸èƒ½ä¼ è¾“包。" # camlibs/sierra/library.c:657 #: camlibs/sierra/library.c:789 #, fuzzy, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "相机拒ç»åŒ…。请è”ç³» 。" # camlibs/sierra/library.c:664 #: camlibs/sierra/library.c:816 #, fuzzy, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "无法传输包 (é”™è¯¯ç  %i)。请è”ç³» 。" # camlibs/sierra/library.c:620 #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "在两次é‡è¯•åŽä¼ è¾“ä»ç„¶è¶…时。放弃..." # camlibs/sierra/library.c:744 #: camlibs/sierra/library.c:926 #, fuzzy, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "得到æ„外的结果 0x%x。请è”ç³» 。" # camlibs/sierra/library.c:819 #: camlibs/sierra/library.c:1025 #, fuzzy, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "收到æ„外的应答 (%i)。请è”ç³» 。" # camlibs/sierra/library.c:879 #: camlibs/sierra/library.c:1088 #, fuzzy, c-format msgid "Could not get register %i. Please contact %s." msgstr "无法读å–寄存器 %i。请è”ç³» 。" #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "é‡è¯•失败过多。" # camlibs/sierra/library.c:923 #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "正在å‘逿•°æ®..." # camlibs/sierra/library.c:657 #: camlibs/sierra/library.c:1226 #, fuzzy, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "Sierra 驱动程åºä¸æ”¯æŒé€’归调用ï¼è¯·è”ç³» 。" # camlibs/sierra/library.c:1010 #: camlibs/sierra/library.c:1280 #, fuzzy, c-format msgid "Could not get string register %i. Please contact %s." msgstr "无法读å–字符串寄存器 %i。请è”ç³» 。" # camlibs/sierra/library.c:1157 #: camlibs/sierra/library.c:1519 #, fuzzy, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "éœ€è¦ 32 字节,得到 %i。请连线 。" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "快门速度 (微秒,0 表示自动)" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "快门速度 (ç§’)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "" # camlibs/sierra/sierra.c:890 camlibs/sierra/sierra.c:901 # camlibs/sierra/sierra.c:1198 camlibs/sierra/sierra.c:1400 # camlibs/sierra/sierra.c:1410 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/nikon-desc.c:238 #, fuzzy msgid "Slow-sync" msgstr "æ…¢åŒæ­¥" # camlibs/sierra/sierra.c:920 camlibs/sierra/sierra.c:930 # camlibs/sierra/sierra.c:1218 #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "对比度+" # camlibs/sierra/sierra.c:921 camlibs/sierra/sierra.c:932 # camlibs/sierra/sierra.c:1220 #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "对比度-" # camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1322 #: camlibs/sierra/nikon-desc.c:256 #, fuzzy msgid "Brightness+" msgstr "LCD 亮度" # camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1322 #: camlibs/sierra/nikon-desc.c:257 #, fuzzy msgid "Brightness-" msgstr "LCD 亮度" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "图åƒè°ƒæ•´" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "LED 模å¼" # camlibs/sierra/sierra.c:980 camlibs/sierra/sierra.c:987 # camlibs/sierra/sierra.c:1258 #: camlibs/sierra/nikon-desc.c:326 #, fuzzy msgid "Infinity" msgstr "æ— é™/鱼眼" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "" # frontends/command-line/gphoto2-cmd-capture.c:218 # libgphoto2/gphoto2-result.c:51 #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "æ“作模å¼" # camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1322 #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "LCD 亮度" # camlibs/sierra/sierra.c:1093 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "LCD 自动关闭 (ç§’)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "æ›å…‰æµ‹å®š" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "缩放 (毫米)" # frontends/command-line/actions.c:168 #: camlibs/sierra/nikon-desc.c:543 #, fuzzy msgid "none" msgstr "æ— " #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "" # libgphoto2/gphoto2-result.c:45 #: camlibs/sierra/nikon-desc.c:547 #, fuzzy msgid "Fisheye" msgstr "文件类型" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "" #: camlibs/sierra/nikon-desc.c:558 #, fuzzy msgid "Misc exposure/lens settings" msgstr "其它æ›å…‰/镜头设置" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "自动æ›å…‰é”" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "尼康 Coolpix 880:\n" " 相机é…ç½® (或首选项):\n" "\n" " 光学缩放尚未正常\n" " 工作。\n" "\n" "\n" " 䏿˜¯æ‰€æœ‰çš„é…置信æ¯\n" " 都能够正确读入或写出,\n" " 例如,微调白平衡,\n" " 和语言设置。\n" "\n" " 将相机设置为 'M' 模å¼\n" " 以便设置快门速度。\n" #: camlibs/sierra/nikon-desc.c:743 #, fuzzy msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "尼康 Coolpix 995:\n" " 该相机的相机é…ç½® (首选项) 尚未\n" " 完æˆï¼Œå¦‚果您愿æ„为该驱动程åº\n" " 作出贡献的è¯ï¼Œè¯·å‘é€ Email 到\n" " gphoto-devel@gphoto.net与 gphoto\n" " å¼€å‘者è”系。\n" "\n" " 下载应该能正常工作了。\n" # camlibs/sierra/sierra.c:859 camlibs/sierra/sierra.c:869 # camlibs/sierra/sierra.c:1175 #: camlibs/sierra/olympus-desc.c:483 #, fuzzy msgid "White board" msgstr "白æ¿" # camlibs/sierra/sierra.c:860 camlibs/sierra/sierra.c:871 # camlibs/sierra/sierra.c:1177 #: camlibs/sierra/olympus-desc.c:484 #, fuzzy msgid "Black board" msgstr "黑æ¿" # frontends/command-line/gphoto2-cmd-capture.c:218 # libgphoto2/gphoto2-result.c:51 #: camlibs/sierra/olympus-desc.c:489 #, fuzzy msgid "Color or Function Mode" msgstr "æ“作模å¼" # camlibs/sierra/sierra.c:890 camlibs/sierra/sierra.c:901 # camlibs/sierra/sierra.c:1198 camlibs/sierra/sierra.c:1400 # camlibs/sierra/sierra.c:1410 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 #, fuzzy msgid "Slow" msgstr "æ…¢åŒæ­¥" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/sierra/olympus-desc.c:596 #, fuzzy msgid "Fluorescent-1-home-6700K" msgstr "è§å…‰" # camlibs/sierra/sierra.c:949 camlibs/sierra/sierra.c:958 # camlibs/sierra/sierra.c:1237 #: camlibs/sierra/olympus-desc.c:597 #, fuzzy msgid "Fluorescent-2-desk-5000K" msgstr "è§å…‰" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "" # camlibs/sierra/sierra.c:977 camlibs/sierra/sierra.c:1250 # camlibs/sierra/sierra.c:1449 camlibs/sierra/sierra.c:1662 #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "LCD 模å¼" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "数字缩放" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "èšç„¦ä½ç½®" # camlibs/konica/library.c:729 camlibs/konica/library.c:960 #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "æ—¶é—´æ ¼å¼" # camlibs/sierra/sierra.c:1864 #: camlibs/sierra/olympus-desc.c:1147 #, fuzzy msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "关于奥林巴斯相机的一些事项:\n" "(1) 相机é…置:\n" " 0 值表示使用默认值 (自动)。\n" "(2) 奥林巴斯 C-3040Z (å¯èƒ½è¿˜æœ‰\n" " C-2040Z 以åŠå…¶å®ƒåž‹å·) 有 USB\n" " PC 控制模å¼ã€‚为使用该模å¼ï¼Œ\n" " 相机必须切æ¢åˆ°â€œUSB PC 控制模å¼â€ã€‚\n" " ä¸ºäº†å¾—åˆ°åˆ‡æ¢æ¨¡å¼çš„èœå•,打开内存å¡\n" " è®¿é—®é—¨ï¼Œè€ŒåŽæŒ‰ä½ä¸¤ä¸ªèœå•按钮直到\n" " 相机控制èœå•出现。将USB PC 控制模å¼\n" " 打开。\n" "(3) 如果您从“LCD 模å¼â€åˆ‡æ¢åˆ°â€œç›‘è§†å™¨â€æˆ–\n" " â€œæ™®é€šâ€æ¨¡å¼ï¼Œä¸è¦å¿˜è®°åœ¨æ–­å¼€è¿žæŽ¥å‰å°†å®ƒ\n" " 切æ¢å›žâ€œå…³é—­â€çжæ€ã€‚å¦åˆ™æ‚¨å°†æ— æ³•使用\n" " 相机的按钮。如果您以此状æ€ç»“æŸï¼Œæ‚¨åº”\n" " è¯¥é‡æ–°å°†ç›¸æœºè¿žæŽ¥åˆ° PC 上并从 LCD 切æ¢\n" " 到“关闭â€ã€‚" # camlibs/sierra/sierra.c:1864 #: camlibs/sierra/olympus-desc.c:1166 #, fuzzy msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "关于奥林巴斯相机的一些事项:\n" "(1) 相机é…置:\n" " 0 值表示使用默认值 (自动)。\n" "(2) 奥林巴斯 C-3040Z (å¯èƒ½è¿˜æœ‰\n" " C-2040Z 以åŠå…¶å®ƒåž‹å·) 有 USB\n" " PC 控制模å¼ã€‚为使用该模å¼ï¼Œ\n" " 相机必须切æ¢åˆ°â€œUSB PC 控制模å¼â€ã€‚\n" " ä¸ºäº†å¾—åˆ°åˆ‡æ¢æ¨¡å¼çš„èœå•,打开内存å¡\n" " è®¿é—®é—¨ï¼Œè€ŒåŽæŒ‰ä½ä¸¤ä¸ªèœå•按钮直到\n" " 相机控制èœå•出现。将USB PC 控制模å¼\n" " 打开。\n" "(3) 如果您从“LCD 模å¼â€åˆ‡æ¢åˆ°â€œç›‘è§†å™¨â€æˆ–\n" " â€œæ™®é€šâ€æ¨¡å¼ï¼Œä¸è¦å¿˜è®°åœ¨æ–­å¼€è¿žæŽ¥å‰å°†å®ƒ\n" " 切æ¢å›žâ€œå…³é—­â€çжæ€ã€‚å¦åˆ™æ‚¨å°†æ— æ³•使用\n" " 相机的按钮。如果您以此状æ€ç»“æŸï¼Œæ‚¨åº”\n" " è¯¥é‡æ–°å°†ç›¸æœºè¿žæŽ¥åˆ° PC 上并从 LCD 切æ¢\n" " 到“关闭â€ã€‚" #: camlibs/sierra/olympus-desc.c:1182 #, fuzzy msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "默认 sierra 驱动程åºï¼š\n" "\n" " 这是默认的 sierra 驱动程åºï¼Œ\n" " 它应该能够支æŒä¸‹è½½å’Œæµè§ˆæ‚¨\n" " 的相机中的照片。\n" "\n" " 相机é…ç½® (或首选项) 设置\n" " 是基于奥林巴斯 3040 的,\n" " 似乎并ä¸å®Œæ•´ã€‚如果您è¯å®ž\n" " é…置设置对您的相机æ¥è¯´æ˜¯\n" " 完整的,或您能为支æŒå®Œæ•´çš„\n" " é…置作出贡献,请è”络\n" " gphoto-devel@gphoto.net\n" # camlibs/sierra/sierra.c:635 #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "è¦ä¸Šè½½çš„æ–‡ä»¶å…·æœ‰ç©ºé•¿åº¦" # camlibs/sierra/sierra.c:649 #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "内存å¡ä¸Šæ²¡æœ‰è¶³å¤Ÿçš„内存" # camlibs/sierra/sierra.c:656 #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "æ— æ³•æ£€ç´¢å«æœ‰ç…§ç‰‡çš„æ–‡ä»¶å¤¹åç§°" # camlibs/sierra/sierra.c:663 #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "åªæ”¯æŒä¸Šè½½åˆ°æ–‡ä»¶å¤¹â€œ%sâ€" # camlibs/sierra/sierra.c:790 camlibs/sierra/sierra.c:799 # camlibs/sierra/sierra.c:1127 #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "最佳" # camlibs/sierra/sierra.c:802 camlibs/sierra/sierra.c:842 # camlibs/sierra/sierra.c:874 camlibs/sierra/sierra.c:904 # camlibs/sierra/sierra.c:935 camlibs/sierra/sierra.c:966 # camlibs/sierra/sierra.c:990 camlibs/sierra/sierra.c:1012 # camlibs/sierra/sierra.c:1041 camlibs/sierra/sierra.c:1385 # camlibs/sierra/sierra.c:1413 camlibs/sierra/sierra.c:1436 # camlibs/sierra/sierra.c:1458 camlibs/sierra/sierra.c:1484 # camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1571 #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (未知)" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "快门速度 (微秒,0 表示自动)" # camlibs/sierra/sierra.c:857 camlibs/sierra/sierra.c:865 # camlibs/sierra/sierra.c:1171 #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "黑白" # camlibs/sierra/sierra.c:859 camlibs/sierra/sierra.c:869 # camlibs/sierra/sierra.c:1175 #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "白æ¿" # camlibs/sierra/sierra.c:860 camlibs/sierra/sierra.c:871 # camlibs/sierra/sierra.c:1177 #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "黑æ¿" # camlibs/sierra/sierra.c:915 camlibs/sierra/sierra.c:1208 #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "亮度/对比度" # camlibs/sierra/sierra.c:918 camlibs/sierra/sierra.c:926 # camlibs/sierra/sierra.c:1214 #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "亮度+" # camlibs/sierra/sierra.c:919 camlibs/sierra/sierra.c:928 # camlibs/sierra/sierra.c:1216 #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "亮度-" # camlibs/sierra/sierra.c:948 camlibs/sierra/sierra.c:956 # camlibs/sierra/sierra.c:1235 #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "日光" # camlibs/sierra/sierra.c:980 camlibs/sierra/sierra.c:987 # camlibs/sierra/sierra.c:1258 #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "æ— é™/鱼眼" # camlibs/sierra/sierra.c:1001 camlibs/sierra/sierra.c:1268 #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "åœºæ™¯æµ‹é‡æ¨¡å¼" # camlibs/sierra/sierra.c:1024 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" # camlibs/sierra/sierra.c:1025 camlibs/sierra/sierra.c:1035 #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1.6x" # camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2.5x" # camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1302 # camlibs/sierra/sierra.c:1517 camlibs/sierra/sierra.c:1709 #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "自动关机 (连接) (ç§’)" # camlibs/sierra/sierra.c:1057 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "在相机连接到计算机以åŽï¼Œé¡»ç­‰å¾…多长时间å†è‡ªåŠ¨å…³æœºï¼Ÿ" # camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1312 # camlibs/sierra/sierra.c:1531 camlibs/sierra/sierra.c:1719 #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "自动关机 (未连接) (ç§’)" # camlibs/sierra/sierra.c:1071 camlibs/sierra/sierra.c:1533 #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "在未连接到计算机时,须等待多长时间å†è‡ªåŠ¨å…³æœºï¼Ÿ" # camlibs/sierra/sierra.c:1093 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "LCD 自动关闭 (以秒为å•ä½)" # camlibs/sierra/sierra.c:1355 #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "æ‹æ‘„设置" # camlibs/sierra/sierra.c:1362 camlibs/sierra/sierra.c:1370 # camlibs/sierra/sierra.c:1605 #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" # camlibs/sierra/sierra.c:1363 camlibs/sierra/sierra.c:1372 # camlibs/sierra/sierra.c:1607 #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" # camlibs/sierra/sierra.c:1364 camlibs/sierra/sierra.c:1374 # camlibs/sierra/sierra.c:1609 #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" # camlibs/sierra/sierra.c:1365 camlibs/sierra/sierra.c:1376 # camlibs/sierra/sierra.c:1611 #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" # camlibs/sierra/sierra.c:1366 camlibs/sierra/sierra.c:1378 # camlibs/sierra/sierra.c:1613 #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" # camlibs/sierra/sierra.c:1367 camlibs/sierra/sierra.c:1380 # camlibs/sierra/sierra.c:1615 #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" # camlibs/minolta/dimagev/dimagev.c:307 camlibs/sierra/sierra.c:788 # camlibs/sierra/sierra.c:795 camlibs/sierra/sierra.c:1123 # camlibs/sierra/sierra.c:1469 camlibs/sierra/sierra.c:1475 # camlibs/sierra/sierra.c:1680 #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 #, fuzzy msgid "standard" msgstr "标准" # camlibs/sierra/sierra.c:1472 camlibs/sierra/sierra.c:1481 # camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "åˆæˆç…§ç‰‡" # camlibs/sierra/sierra.c:1495 camlibs/sierra/sierra.c:1498 # camlibs/sierra/sierra.c:1698 #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "彩色" # camlibs/sierra/sierra.c:1496 camlibs/sierra/sierra.c:1500 # camlibs/sierra/sierra.c:1700 #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "黑白" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "注æ„:没有内存å¡ï¼Œæœ‰äº›å€¼å¯èƒ½æ˜¯æ— æ•ˆçš„\n" # camlibs/sierra/sierra.c:1806 #: camlibs/sierra/sierra.c:1948 #, fuzzy, c-format msgid "Camera Model: %s\n" msgstr "%s相机型å·ï¼š%s\n" # camlibs/sierra/sierra.c:1818 #: camlibs/sierra/sierra.c:1957 #, fuzzy, c-format msgid "Serial Number: %s\n" msgstr "%såºåˆ—å·ï¼š%s\n" # camlibs/sierra/sierra.c:1822 #: camlibs/sierra/sierra.c:1960 #, fuzzy, c-format msgid "Software Rev.: %s\n" msgstr "%s软件版本å·ï¼š%s\n" # camlibs/sierra/sierra.c:1826 #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, fuzzy, c-format msgid "Frames Taken: %i\n" msgstr "%s已用帧:%i\n" # camlibs/sierra/sierra.c:1828 #: camlibs/sierra/sierra.c:1971 #, fuzzy, c-format msgid "Frames Left: %i\n" msgstr "%s剩余帧:%i\n" # camlibs/sierra/sierra.c:1830 #: camlibs/sierra/sierra.c:1973 #, fuzzy, c-format msgid "Battery Life: %i\n" msgstr "%s电池寿命:%i\n" # camlibs/sierra/sierra.c:1832 #: camlibs/sierra/sierra.c:1975 #, fuzzy, c-format msgid "Memory Left: %i bytes\n" msgstr "%s内存剩余:%i 字节\n" # camlibs/sierra/sierra.c:1836 #: camlibs/sierra/sierra.c:1980 #, fuzzy, c-format msgid "Date: %s" msgstr "%s日期:%s" # camlibs/canon/library.c:165 camlibs/canon/library.c:889 # camlibs/canon/library.c:902 #: camlibs/sierra/sierra.c:2041 #, fuzzy msgid "No camera manual available.\n" msgstr "相机ä¸å¯ç”¨" # camlibs/sierra/sierra.c:1852 #: camlibs/sierra/sierra.c:2048 #, fuzzy, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "关于爱普生相机的一些事项:\n" "- æœ‰äº›å‚æ•°æ— æ³•远程控制:\n" " * 缩放\n" " * èšç„¦\n" " * custom white balance setup\n" "- é…置是通过对 PhotoPC 3000z 进行åå‘工程\n" " 而得到的。如果您的相机于此ä¸åŒï¼Œè¯·å‘ \n" " å‘é€ç”µå­é‚®ä»¶ (用英语)\n" # camlibs/sierra/sierra.c:1864 #: camlibs/sierra/sierra.c:2060 #, fuzzy msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "关于奥林巴斯相机 (以åŠå…¶å®ƒï¼Ÿ) 的一些事项:\n" "(1) 相机é…置:\n" " 0 值表示使用默认值 (自动)。\n" "(2) 奥林巴斯 C-3040Z (å¯èƒ½è¿˜æœ‰\n" " C-2040Z 以åŠå…¶å®ƒåž‹å·) 有 USB\n" " PC 控制模å¼ã€‚为使用该模å¼ï¼Œ\n" " 相机必须切æ¢åˆ°â€œUSB PC 控制模å¼â€ã€‚\n" " ä¸ºäº†å¾—åˆ°åˆ‡æ¢æ¨¡å¼çš„èœå•,打开内存å¡\n" " è®¿é—®é—¨ï¼Œè€ŒåŽæŒ‰ä½ä¸¤ä¸ªèœå•按钮直到\n" " 相机控制èœå•出现。将USB PC 控制模å¼\n" " 打开。\n" "(3) 如果您从“LCD 模å¼â€åˆ‡æ¢åˆ°â€œç›‘è§†å™¨â€æˆ–\n" " â€œæ™®é€šâ€æ¨¡å¼ï¼Œä¸è¦å¿˜è®°åœ¨æ–­å¼€è¿žæŽ¥å‰å°†å®ƒ\n" " 切æ¢å›žâ€œå…³é—­â€çжæ€ã€‚å¦åˆ™æ‚¨å°†æ— æ³•使用\n" " 相机的按钮。如果您以此状æ€ç»“æŸï¼Œæ‚¨åº”\n" " è¯¥é‡æ–°å°†ç›¸æœºè¿žæŽ¥åˆ° PC 上并从 LCD 切æ¢\n" " 到“关闭â€ã€‚" # camlibs/sierra/sierra.c:1887 #: camlibs/sierra/sierra.c:2087 #, fuzzy msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "sierra SPARClite 库\n" "Scott Fritzinger \n" "支æŒåŸºäºŽ sierra 的数ç ç›¸æœº\n" "包括奥林巴斯ã€å°¼åº·ã€çˆ±æ™®ç”ŸåŠå…¶å®ƒã€‚\n" "\n" "感谢 Data Engines (www.dataengines.com)\n" "因为使用了他们的奥林巴斯 C-3030Z\n" "以实现 USB 支æŒã€‚" # camlibs/sierra/sierra.c:802 camlibs/sierra/sierra.c:842 # camlibs/sierra/sierra.c:874 camlibs/sierra/sierra.c:904 # camlibs/sierra/sierra.c:935 camlibs/sierra/sierra.c:966 # camlibs/sierra/sierra.c:990 camlibs/sierra/sierra.c:1012 # camlibs/sierra/sierra.c:1041 camlibs/sierra/sierra.c:1385 # camlibs/sierra/sierra.c:1413 camlibs/sierra/sierra.c:1436 # camlibs/sierra/sierra.c:1458 camlibs/sierra/sierra.c:1484 # camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1571 #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (未知)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Sipix StyleCam Blink 驱动程åº\n" "Vincent Sanders \n" "Marcus Meissner .\n" # camlibs/canon/usb.c:215 #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "无法应用 USB 设置" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "用于访问 SiPix Web2 相机的驱动程åºã€‚" #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" # camlibs/sonydscf1/sonydscf1.c:133 #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "索尼 DSC-F1 æ•°ç ç›¸æœºæ”¯æŒ\n" "M. Adam Kendall \n" "基于 chotplay CLI 界é¢ã€‚è¯¥ç•Œé¢æ¥è‡ªäºŽ\n" "Ken-ichi Hayashi\n" "ç”± Bart van Leeuwen ç§»æ¤åˆ° gphoto2" # camlibs/sonydscf55/camera.c:91 #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "索尼 DSC-F55/505 gPhoto 库\n" "æ”¯æŒ ç´¢å°¼ MSAC-SR1 å’Œ DCR-PC100 使用的存储体\n" "最åˆç”± Mark Davies 编写\n" "ç”± Raymond Penners ç§»æ¤åˆ° gphoto2" #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" # camlibs/stv0680/library.c:525 #: camlibs/soundvision/soundvision.c:339 #, fuzzy, c-format msgid "Firmware Revision: %8s" msgstr "固件版本:%d.%d\n" # camlibs/agfa/agfa.c:228 #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Soundvision 驱动程åº\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" # camlibs/jamcam/jamcam.c:280 #: camlibs/spca50x/library.c:295 #, fuzzy msgid "spca50x library v" msgstr "gsmart 库 v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" # camlibs/stv0680/library.c:356 camlibs/stv0680/library.c:390 #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "æ›å…‰å¤±è´¥ (å¯èƒ½æ˜¯æ²¡æœ‰å……足的光线)" # camlibs/stv0680/library.c:520 #: camlibs/stv0680/library.c:543 #, fuzzy msgid "Information on STV0680-based camera:\n" msgstr "关于基于 STV0680 的相机的信æ¯ï¼š\n" # camlibs/stv0680/library.c:525 #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "固件版本:%d.%d\n" # camlibs/stv0680/library.c:529 #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "专用集æˆç”µè·¯ç‰ˆæœ¬ï¼š%d.%d\n" # camlibs/stv0680/library.c:533 #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "感应器 ID:%d.%d\n" # camlibs/stv0680/library.c:539 #: camlibs/stv0680/library.c:562 #, fuzzy, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "相机是按照以 %dHz é—ªçƒçš„å…‰æºæ¥é…置的。\n" # camlibs/stv0680/library.c:542 #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "相机内置内存:%d å…†ä½ã€‚\n" # camlibs/stv0680/library.c:546 #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "相机支æŒç¼©ç•¥å›¾ã€‚\n" # camlibs/stv0680/library.c:548 #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "相机支æŒè§†é¢‘。\n" # camlibs/stv0680/library.c:551 #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "相机照片为黑白照片。\n" # camlibs/stv0680/library.c:553 #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "相机有内存。\n" # camlibs/stv0680/library.c:555 #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "相机支æŒçš„视频格å¼ï¼š" # camlibs/stv0680/library.c:561 #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "厂家 ID:%02x%02x\n" # camlibs/stv0680/library.c:565 #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "äº§å“ ID:%02x%02x\n" # camlibs/stv0680/library.c:572 #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "å›¾åƒæ•°é‡ï¼š%d\n" # camlibs/stv0680/library.c:575 #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "æœ€å¤§å›¾åƒæ•°é‡ï¼š%d\n" # camlibs/stv0680/library.c:578 #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "图åƒå®½åº¦ï¼š%d\n" # camlibs/stv0680/library.c:581 #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "图åƒé«˜åº¦ï¼š%d\n" # camlibs/stv0680/library.c:584 #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "图åƒå¤§å°ï¼š%d\n" # camlibs/stv0680/library.c:588 #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "缩略图宽度:%d\n" # camlibs/stv0680/library.c:589 #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "缩略图高度:%d\n" # camlibs/stv0680/library.c:590 #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "缩略图大å°ï¼š%d\n" # camlibs/stv0680/stv0680.c:258 #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "使用 STV0680 处ç†å™¨ä¸“用芯片的相机驱动程åºã€‚\n" "使用 CommLite Beta 5 对å议进行åå‘工程\n" "Carsten Weinholz \n" "为 Aiptek PenCam 和其它 STM USB åŒæ¨¡å¼ç›¸æœºè¿›è¡Œäº†æ‰©å±•。" # camlibs/konica/library.c:617 #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "正在获å–第 %i 个文件的信æ¯..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z åªæ”¯æŒ USB" # camlibs/jd11/jd11.c:202 camlibs/jd11/jd11.c:254 #: camlibs/topfield/puppy.c:553 #, fuzzy msgid "Driver Settings" msgstr "其它设置" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" # camlibs/panasonic/l859/l859.c:505 #: camlibs/topfield/puppy.c:659 #, fuzzy, c-format msgid "Downloading %s..." msgstr "正在下载“%sâ€..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" # libgphoto2/gphoto2-abilities-list.c:260 #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "正在从“%sâ€è£…入相机驱动程åº..." # libgphoto2/gphoto2-camera.c:81 #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "io-库 (“%sâ€) 中出现错误:%s" # libgphoto2/gphoto2-camera.c:662 #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "无法检测到任何相机" # libgphoto2/gphoto2-camera.c:662 #: libgphoto2/gphoto2-camera.c:750 #, fuzzy, c-format msgid "Could not detect any camera at port %s" msgstr "无法检测到任何相机" # libgphoto2/gphoto2-camera.c:682 #: libgphoto2/gphoto2-camera.c:774 #, fuzzy msgid "You have to set the port prior to initialization of the camera." msgstr "您必须在åˆå§‹åŒ–相机以å‰è®¾å®šç«¯å£ã€‚" # libgphoto2/gphoto2-camera.c:710 #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "无法装入必须的相机驱动程åºâ€œ%sâ€(%s)。" # libgphoto2/gphoto2-camera.c:728 #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "相机驱动程åºâ€œ%sâ€ç¼ºå°‘“camera_initâ€å‡½æ•°ã€‚" # libgphoto2/gphoto2-camera.c:786 #: libgphoto2/gphoto2-camera.c:864 #, fuzzy msgid "This camera does not provide any configuration options." msgstr "è¯¥ç›¸æœºä¸æä¾›ä»»ä½•é…置选项。" # libgphoto2/gphoto2-camera.c:818 #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "è¯¥ç›¸æœºä¸æ”¯æŒè®¾ç½®é…置选项。" # libgphoto2/gphoto2-camera.c:850 #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "è¯¥ç›¸æœºä¸æ”¯æŒæ¦‚è¦ã€‚" # libgphoto2/gphoto2-camera.c:881 #: libgphoto2/gphoto2-camera.c:960 #, fuzzy msgid "This camera does not provide a manual." msgstr "è¯¥ç›¸æœºä¸æä¾›æ‰‹å†Œã€‚" # libgphoto2/gphoto2-camera.c:912 #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "è¯¥ç›¸æœºä¸æä¾›å…³äºŽé©±åŠ¨ç¨‹åºçš„ä¿¡æ¯ã€‚" # libgphoto2/gphoto2-camera.c:946 #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "该相机ä¸èƒ½è§†é¢‘æ•æ‰ã€‚" # libgphoto2/gphoto2-camera.c:946 #: libgphoto2/gphoto2-camera.c:1056 #, fuzzy msgid "This camera can not trigger capture." msgstr "该相机ä¸èƒ½è§†é¢‘æ•æ‰ã€‚" # libgphoto2/gphoto2-camera.c:979 #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "该相机ä¸èƒ½é¢„è§ˆè§†é¢‘æ•æ‰ã€‚" # libgphoto2/gphoto2-filesys.c:214 #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "路径“%sâ€ä¸æ˜¯ç»å¯¹è·¯å¾„。" # libgphoto2/gphoto2-filesys.c:970 #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "您试图从文件夹“%2$sâ€ä¸­åˆ é™¤â€œ%1$sâ€ï¼Œä½†æ–‡ä»¶ç³»ç»Ÿä¸æ”¯æŒåˆ é™¤æ–‡ä»¶ã€‚" # libgphoto2/gphoto2-filesys.c:1077 #: libgphoto2/gphoto2-filesys.c:1259 #, fuzzy, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "您正试图删除的文件夹“%sâ€ä¸­è¿˜æœ‰å­æ–‡ä»¶å¤¹ã€‚" # libgphoto2/gphoto2-filesys.c:1071 #: libgphoto2/gphoto2-filesys.c:1264 #, fuzzy, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "您正试图删除的文件夹“%sâ€ä¸­è¿˜æœ‰æ–‡ä»¶ã€‚" # libgphoto2/gphoto2-filesys.c:1117 #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "æ–‡ä»¶ç³»ç»Ÿä¸æ”¯æŒä¸Šè½½æ–‡ä»¶ã€‚" # libgphoto2/gphoto2-filesys.c:1158 #: libgphoto2/gphoto2-filesys.c:1359 #, fuzzy, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "文件夹“%sâ€åªå«æœ‰ %i 个文件,但您请求编å·ä¸º %i 的文件。" # libgphoto2/gphoto2-filesys.c:1199 #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "在文件夹“%2$sâ€ä¸­æ— æ³•找到文件“%1$sâ€ã€‚" # libgphoto2/gphoto2-filesys.c:1282 #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "无法找到文件“%sâ€ã€‚" # libgphoto2/gphoto2-filesys.c:1407 #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "æ–‡ä»¶ç³»ç»Ÿä¸æ”¯æŒèŽ·å–æ–‡ä»¶" # libgphoto2/gphoto2-filesys.c:1442 libgphoto2/gphoto2-filesys.c:1764 #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "未知的文件类型 %i。" # libgphoto2/gphoto2-filesys.c:1656 #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "æ–‡ä»¶ç³»ç»Ÿä¸æ”¯æŒèŽ·å–æ–‡ä»¶ä¿¡æ¯" # libgphoto2/gphoto2-filesys.c:1867 #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "æ–‡ä»¶ç³»ç»Ÿä¸æ”¯æŒè®¾ç½®æ–‡ä»¶ä¿¡æ¯" # libgphoto2/gphoto2-filesys.c:1890 #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "无法改å˜åƒå®½åº¦å’Œé«˜åº¦è¿™æ ·çš„åªè¯»æ–‡ä»¶å±žæ€§ã€‚" # libgphoto2/gphoto2-filesys.c:1656 #: libgphoto2/gphoto2-filesys.c:2455 #, fuzzy msgid "The filesystem doesn't support getting storage information" msgstr "æ–‡ä»¶ç³»ç»Ÿä¸æ”¯æŒèŽ·å–æ–‡ä»¶ä¿¡æ¯" # libgphoto2/gphoto2-result.c:44 #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "å·²æ¯å的数æ®" # libgphoto2/gphoto2-result.c:45 #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "文件存在" # libgphoto2/gphoto2-result.c:46 #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "未知型å·" # libgphoto2/gphoto2-result.c:47 #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "找ä¸åˆ°ç›®å½•" # libgphoto2/gphoto2-result.c:48 #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "找ä¸åˆ°æ–‡ä»¶" # libgphoto2/gphoto2-result.c:49 #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "目录存在" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "" # libgphoto2/gphoto2-result.c:50 #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "è·¯å¾„ä¸æ˜¯ç»å¯¹è·¯å¾„" # frontends/command-line/gphoto2-cmd-capture.c:218 # libgphoto2/gphoto2-result.c:51 #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "æ“ä½œå·²å–æ¶ˆ" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "" # camlibs/dimera/dimera3500.c:957 #: libgphoto2/gphoto2-result.c:57 #, fuzzy msgid "OS error in camera communication" msgstr "设置相机通讯速度出问题" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "" # libgphoto2/gphoto2-result.c:76 #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "未知的相机库错误" # libgphoto2/gphoto2-result.c:82 #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "未知的错误" # camlibs/canon/library.c:822 camlibs/canon/library.c:826 # camlibs/canon/library.c:831 #~ msgid "Date and Time (readonly)" #~ msgstr "日期和时间 (åªè¯»)" # camlibs/canon/library.c:832 camlibs/canon/library.c:859 #~ msgid "Unavailable" #~ msgstr "ä¸å¯ç”¨" # camlibs/canon/library.c:836 camlibs/canon/library.c:898 #~ msgid "Set camera date to PC date" #~ msgstr "将相机日期设置为 PC 日期" # camlibs/canon/library.c:839 #~ msgid "Firmware revision (readonly)" #~ msgstr "固件版本 (åªè¯»)" # camlibs/canon/library.c:863 #~ msgid "Power (readonly)" #~ msgstr "ç”µæº (åªè¯»)" # libgphoto2/gphoto2-result.c:76 #, fuzzy #~ msgid "Unknown (some kind of error)" #~ msgstr "未知的相机库错误" # camlibs/konica/konica.c:125 #~ msgid "Unsupported image type" #~ msgstr "䏿”¯æŒçš„图åƒç±»åž‹" # camlibs/directory/directory.c:201 #~ msgid "Could not follow the link '%s' (%m)." #~ msgstr "无法跟éšè¿žæŽ¥â€œ%sâ€(%m)。" # camlibs/directory/directory.c:275 #~ msgid "Could not follow the link '%s' in '%s' (%m)." #~ msgstr "无法跟éšâ€œ%2$sâ€ä¸­çš„连接“%1$sâ€(%3$m)。" # camlibs/directory/directory.c:461 #~ msgid "Directory Browse" #~ msgstr "æµè§ˆç›®å½•" # camlibs/directory/directory.c:462 camlibs/directory/directory.c:493 #~ msgid "View hidden directories" #~ msgstr "查看éšè—的目录" #, fuzzy #~ msgid "Unsupported port type: %d. This driver only works with USBcameras.\n" #~ msgstr "䏿”¯æŒçš„端å£ç±»åž‹ï¼š%d。该驱动程åºåªæ”¯æŒ USB 照相机。\n" # camlibs/jamcam/jamcam.c:281 camlibs/panasonic/coolshot/coolshot.c:265 #~ msgid " " #~ msgstr " " # camlibs/jamcam/jamcam.c:281 #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for KBGear JamCam v2.0 & v3.0 digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "基于串å£åè®®åå‘工程支æŒ\n" #~ "KBGear JamCam v2.0 & v3.0 æ•°ç ç›¸æœº\n" #~ "\n" # libgphoto2/gphoto2-camera.c:850 #~ msgid "Your camera does not support changing filenames." #~ msgstr "æ‚¨çš„ç›¸æœºä¸æ”¯æŒæ–‡ä»¶æ”¹å。" # camlibs/konica/library.c:799 camlibs/konica/library.c:1028 #~ msgid "Self Timer (only next picture)" #~ msgstr "自动定时 (仅用于下一张照片)" #, fuzzy #~ msgid "2.0m" #~ msgstr "2.0" #, fuzzy #~ msgid "0.5m" #~ msgstr "0.5" # camlibs/sierra/sierra.c:948 camlibs/sierra/sierra.c:956 # camlibs/sierra/sierra.c:1235 #, fuzzy #~ msgid "Day-lt" #~ msgstr "日光" #~ msgid "There is nothing to summarize for this camera." #~ msgstr "对这个相机æ¥è¯´æ²¡æœ‰æ¦‚è¦ã€‚" # camlibs/konica/library.c:800 camlibs/konica/library.c:807 # camlibs/minolta/dimagev/dimagev.c:407 camlibs/sierra/sierra.c:856 # camlibs/sierra/sierra.c:863 camlibs/sierra/sierra.c:917 # camlibs/sierra/sierra.c:924 camlibs/sierra/sierra.c:979 # camlibs/sierra/sierra.c:985 camlibs/sierra/sierra.c:1169 # camlibs/sierra/sierra.c:1212 camlibs/sierra/sierra.c:1256 # camlibs/sierra/sierra.c:1451 camlibs/sierra/sierra.c:1455 # camlibs/sierra/sierra.c:1668 #~ msgid "No manual" #~ msgstr "无手册" # camlibs/panasonic/coolshot/coolshot.c:265 #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for Panasonic Coolshot digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "æ”¯æŒæ¾ä¸‹ Coolshot æ•°ç ç›¸æœº\n" #~ "基于串å£åè®®åå‘工程。\n" #~ "\n" # camlibs/sierra/library.c:1187 #~ msgid "Manual Not Implemented Yet" #~ msgstr "手册尚未实现ï¼" # camlibs/ptp/library.c:131 #~ msgid "PTP Error: bad parameter" #~ msgstr "PTP é”™è¯¯ï¼šé”™è¯¯çš„å‚æ•°" # camlibs/ptp/library.c:422 #, fuzzy #~ msgid "" #~ "PTP2 driver\n" #~ "(c)2001-2003 by Mariusz Woloszyn .\n" #~ "Enjoy!" #~ msgstr "ç”± Mariusz Woloszyn 编写。请享用ï¼" # camlibs/canon/library.c:808 camlibs/polaroid/pdc700.c:983 #, fuzzy #~ msgid "Camera Time" #~ msgstr "相机" # camlibs/minolta/dimagev/dimagev.c:308 #, fuzzy #~ msgid "Macro Mode" #~ msgstr "录制模å¼" # camlibs/stv0680/library.c:572 #, fuzzy #~ msgid "Number of values" #~ msgstr "å›¾åƒæ•°é‡ï¼š%d\n" # camlibs/ptp/library.c:90 #, fuzzy #~ msgid "PTP: Undefined Error" #~ msgstr "未定义的 PTP 错误" # camlibs/ptp/library.c:91 #, fuzzy #~ msgid "PTP: OK!" #~ msgstr "PTP OKï¼" # camlibs/ptp/library.c:92 #, fuzzy #~ msgid "PTP: General Error" #~ msgstr "PTP 通用错误" # camlibs/ptp/library.c:93 #, fuzzy #~ msgid "PTP: Session Not Open" #~ msgstr "PTP ä¼šè¯æœªæ‰“å¼€" # camlibs/ptp/library.c:94 #, fuzzy #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "éžæ³•çš„ PTP 传输 ID" # camlibs/ptp/library.c:95 #, fuzzy #~ msgid "PTP: Operation Not Supported" #~ msgstr "䏿”¯æŒçš„ PTP æ“作" # camlibs/ptp/library.c:96 #, fuzzy #~ msgid "PTP: Parameter Not Supported" #~ msgstr "䏿”¯æŒçš„ PTP 傿•°" # camlibs/ptp/library.c:97 #, fuzzy #~ msgid "PTP: Incomplete Transfer" #~ msgstr "未完æˆçš„ PTP 传输" # camlibs/ptp/library.c:98 #, fuzzy #~ msgid "PTP: Invalid Storage ID" #~ msgstr "éžæ³•çš„ PTP 存储 ID" # camlibs/ptp/library.c:99 #, fuzzy #~ msgid "PTP: Invalid Object Handle" #~ msgstr "éžæ³•çš„ PTP å¯¹è±¡å¥æŸ„" # camlibs/ptp/library.c:100 #, fuzzy #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "䏿”¯æŒçš„ PTP 设备属性" # camlibs/ptp/library.c:101 #, fuzzy #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "éžæ³•çš„ PTP 对象格å¼ä»£ç " # camlibs/ptp/library.c:102 #, fuzzy #~ msgid "PTP: Store Full" #~ msgstr "PTP 存储已满" # camlibs/ptp/library.c:103 #, fuzzy #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP å¯¹è±¡å·²å†™ä¿æŠ¤" # camlibs/ptp/library.c:104 #, fuzzy #~ msgid "PTP: Store Read Only" #~ msgstr "åªè¯»çš„ PTP 存储" # camlibs/ptp/library.c:105 #, fuzzy #~ msgid "PTP: Access Denied" #~ msgstr "PTP è®¿é—®é­æ‹’ç»" # camlibs/ptp/library.c:106 #, fuzzy #~ msgid "PTP: No Thumbnail Present" #~ msgstr "ä¸å­˜åœ¨ PTP 缩略图" # camlibs/ptp/library.c:107 #, fuzzy #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP 自检失败" # camlibs/ptp/library.c:108 #, fuzzy #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP 部分删除" # camlibs/ptp/library.c:109 #, fuzzy #~ msgid "PTP: Store Not Available" #~ msgstr "PTP 存储ä¸å¯ç”¨" # camlibs/ptp/library.c:111 #, fuzzy #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "䏿”¯æŒçš„ PTP æ ¼å¼è§„范" # camlibs/ptp/library.c:112 #, fuzzy #~ msgid "PTP: No Valid Object Info" #~ msgstr "æ²¡æœ‰åˆæ³•çš„ PTP 对象信æ¯" # camlibs/ptp/library.c:113 #, fuzzy #~ msgid "PTP: Invalid Code Format" #~ msgstr "éžæ³•çš„ PTP ä»£ç æ ¼å¼" # camlibs/ptp/library.c:114 #, fuzzy #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "未知的 PTP 厂家代ç " # camlibs/ptp/library.c:116 #, fuzzy #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP æ•获已终止" # camlibs/ptp/library.c:117 #, fuzzy #~ msgid "PTP: Device Busy" #~ msgstr "PTP 设备总线" # camlibs/ptp/library.c:118 #, fuzzy #~ msgid "PTP: Invalid Parent Object" #~ msgstr "éžæ³•çš„ PTP 父对象" # camlibs/ptp/library.c:119 #, fuzzy #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "éžæ³•çš„ PTP 设备属性格å¼" # camlibs/ptp/library.c:120 #, fuzzy #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "éžæ³•çš„ PTP 设备属性值" # camlibs/ptp/library.c:121 #, fuzzy #~ msgid "PTP: Invalid Parameter" #~ msgstr "éžæ³•çš„ PTP 傿•°" # camlibs/ptp/library.c:122 #, fuzzy #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP 会è¯å·²æ‰“å¼€" # camlibs/ptp/library.c:123 #, fuzzy #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP ä¼ è¾“å·²å–æ¶ˆ" # camlibs/ptp/library.c:125 #, fuzzy #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "䏿”¯æŒçš„ PTP 目标规范" # camlibs/ptp/library.c:126 #, fuzzy #~ msgid "PTP: EK Filename Required" #~ msgstr "éœ€è¦ PTP EK 文件å" # camlibs/ptp/library.c:127 #, fuzzy #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP EK 文件å冲çª" # camlibs/ptp/library.c:128 #, fuzzy #~ msgid "PTP: EK Filename Invalid" #~ msgstr "éžæ³•çš„ PTP EK 文件å" # camlibs/ptp/library.c:130 #, fuzzy #~ msgid "PTP: I/O error" #~ msgstr "PTP I/O 错误" # camlibs/ptp/library.c:131 #, fuzzy #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP é”™è¯¯ï¼šé”™è¯¯çš„å‚æ•°" # camlibs/ptp/library.c:132 #, fuzzy #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP åè®®é”™è¯¯ï¼Œéœ€è¦æ•°æ®" # camlibs/ptp/library.c:133 #, fuzzy #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP å议错误,需è¦å“应" # camlibs/sierra/sierra.c:1581 camlibs/sierra/sierra.c:1754 #, fuzzy #~ msgid "Date Time" #~ msgstr "日期和时间" # camlibs/sierra/sierra.c:814 camlibs/sierra/sierra.c:1137 #, fuzzy #~ msgid "ShutterSpeed" #~ msgstr "快门速度 (ç§’)" # camlibs/stv0680/library.c:578 #, fuzzy #~ msgid "Real Image Width" #~ msgstr "图åƒå®½åº¦ï¼š%d\n" # camlibs/sierra/sierra.c:855 camlibs/sierra/sierra.c:1165 # camlibs/sierra/sierra.c:1494 camlibs/sierra/sierra.c:1695 #, fuzzy #~ msgid "Colour Mode" #~ msgstr "彩色模å¼" # camlibs/konica/library.c:770 camlibs/konica/library.c:1002 #, fuzzy #~ msgid "Exposure Bracketing Distance" #~ msgstr "æ›å…‰æµ‹å®š" # camlibs/konica/konica.c:80 #, fuzzy #~ msgid "Incadescent" #~ msgstr "未æ’å¡ã€‚" # camlibs/sierra/sierra.c:1814 #~ msgid "%sCamera ID: %s\n" #~ msgstr "%s相机 ID:%s\n" # libgphoto2/gphoto2-camera.c:662 #, fuzzy #~ msgid "Couldn't open camera.\n" #~ msgstr "无法é‡ç½®ç›¸æœºã€‚\n" # camlibs/dimera/dimera3500.c:947 #, fuzzy #~ msgid "Error opening camera\n" #~ msgstr "é‡ç½®ç›¸æœºå‡ºé—®é¢˜" # camlibs/sonydscf1/sonydscf1.c:133 #, fuzzy #~ msgid "" #~ "Sony DSC-F1 Digital Camera Support\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Based on the chotplay CLI interface from\n" #~ "Ken-ichi Hayashi\n" #~ "\n" #~ "This lib may not work. YMMV\n" #~ msgstr "" #~ "索尼 DSC-F1 æ•°ç ç›¸æœºæ”¯æŒ\n" #~ "M. Adam Kendall \n" #~ "基于 chotplay CLI 界é¢ã€‚è¯¥ç•Œé¢æ¥è‡ªäºŽ\n" #~ "Ken-ichi Hayashi\n" #~ "ç”± Bart van Leeuwen ç§»æ¤åˆ° gphoto2" #, fuzzy #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for digital cameras with a sunplus spca50x chip based on several " #~ "other gphoto2 camlib modules and the information kindly provided by " #~ "Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \n" #~ "æ ¹æ®ä¸€äº›å…¶å®ƒ gphoto2 相机库和由 Mustek å‹å¥½æä¾›çš„ Windows é©±åŠ¨ç¨‹åºæºä»£ç ç¼–" #~ "åˆ¶çš„æ”¯æŒ Mustek gSmart mini 系列数ç ç›¸æœºçš„库。\n" #~ "\n" # libgphoto2/gphoto2-abilities-list.c:248 #~ msgid "Could not open '%s'" #~ msgstr "无法打开“%sâ€" # libgphoto2/gphoto2-abilities-list.c:622 #~ msgid "Could not find any driver for '%s'" #~ msgstr "无法为“%sâ€æ‰¾åˆ°ä»»ä½•驱动程åº" # libgphoto2/gphoto2-camera.c:85 #~ msgid "No additional information available." #~ msgstr "没有å¯ç”¨çš„附加信æ¯ã€‚" # libgphoto2/gphoto2-camera.c:710 #~ msgid "Could not load required camera driver '%s'." #~ msgstr "无法装入必须的相机驱动程åºâ€œ%sâ€ã€‚" # libgphoto2/gphoto2-filesys.c:335 #~ msgid "Could not append folder '%s' as this folder already exists." #~ msgstr "文件夹“%sâ€å·²å­˜åœ¨ï¼Œæ— æ³•附加。" # libgphoto2/gphoto2-filesys.c:514 #~ msgid "Could not find folder '%s'." #~ msgstr "无法找到文件夹“%sâ€ã€‚" # libgphoto2/gphoto2-filesys.c:531 #~ msgid "Folder '%s' does not contain a folder '%s'." #~ msgstr "文件夹“%sâ€ä¸å«æœ‰æ–‡ä»¶å¤¹â€œ%sâ€ã€‚" # libgphoto2/gphoto2-filesys.c:594 #~ msgid "" #~ "Could not append '%s' to folder '%s' because this file already exists." #~ msgstr "由于“%sâ€å·²å­˜åœ¨ï¼Œæ‰€ä»¥æ— æ³•将其附加到文件夹“%sâ€ä¸­ã€‚" # libgphoto2/gphoto2-filesys.c:1446 #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "正在从文件夹“%2$sâ€ä¸‹è½½â€œ%1$sâ€..." #~ msgid "" #~ "Could not open '/proc/meminfo' for reading ('%m'). Make sure the proc " #~ "filesystem is mounted." #~ msgstr "无法打开“/proc/meminfoâ€ä»¥ä¾¿è¯»å…¥(“%mâ€)。确认加载了 proc 文件系统。" #~ msgid "An error occured while reading '/proc/meminfo' ('%m')." #~ msgstr "读入“/proc/meminfoâ€æ—¶å‡ºé”™ (“%mâ€)。" #~ msgid "sysctl call failed ('%m')." #~ msgstr "sysctl 调用失败 (“%mâ€)。" #, fuzzy #~ msgid "sysconf call failed ('%m')." #~ msgstr "sysctl 调用失败 (“%mâ€)。" #, fuzzy #~ msgid "swapctl call failed ('%m')." #~ msgstr "sysctl 调用失败 (“%mâ€)。" # camlibs/canon/library.c:89 #, fuzzy #~ msgid "" #~ "For the A50, using 115200 may effectively be slower than using 57600\n" #~ "If you experience a lot of serial transmission errors, try to have your " #~ "computer as idle as possible\n" #~ " (i.e. no disk activity)\n" #~ msgstr "" #~ "对 A50 æ¥è¯´ï¼Œ115200 å¯èƒ½å¹¶ä¸æ¯” 57600 å¿«\n" #~ "䏿”¯æŒæ–‡ä»¶å¤¹\n" #~ "如果您é‡åˆ°äº†å¤§é‡çš„传输错误,请时您的计算机尽å¯èƒ½ä¿æŒç©ºé—² (例如:ä¸ä½¿ç”¨ç£" #~ "盘)" #, fuzzy #~ msgid "Unsupported port type: %d.This driver only works with USBcameras.\n" #~ msgstr "䏿”¯æŒçš„端å£ç±»åž‹ï¼š%d。该驱动程åºåªæ”¯æŒ USB 照相机。\n" # libgphoto2/gphoto2-abilities-list.c:622 #, fuzzy #~ msgid "Could not find any driver for '%s' / '%s'" #~ msgstr "无法为“%sâ€æ‰¾åˆ°ä»»ä½•驱动程åº" # libgphoto2/gphoto2-filesys.c:1199 #, fuzzy #~ msgid "No thumbnail could be found for %s" #~ msgstr "在文件夹“%2$sâ€ä¸­æ— æ³•找到文件“%1$sâ€ã€‚" # camlibs/jamcam/jamcam.c:280 #~ msgid "gsmart library v" #~ msgstr "gsmart 库 v" #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for the Mustek gSmart mini series of digital cameras based on " #~ "several other gphoto2 camlib modules and the windows driver source kindly " #~ "provided by Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \n" #~ "æ ¹æ®ä¸€äº›å…¶å®ƒ gphoto2 相机库和由 Mustek å‹å¥½æä¾›çš„ Windows é©±åŠ¨ç¨‹åºæºä»£ç ç¼–" #~ "åˆ¶çš„æ”¯æŒ Mustek gSmart mini 系列数ç ç›¸æœºçš„库。\n" #~ "\n" # camlibs/ptp/library.c:422 #~ msgid "Written by Mariusz Woloszyn . Enjoy!" #~ msgstr "ç”± Mariusz Woloszyn 编写。请享用ï¼" # camlibs/ricoh/ricoh.c:66 #~ msgid "" #~ "Expected %i, got %i. Please report this error to ." #~ msgstr "" #~ "éœ€è¦ %i,得到 %i。请将此错误报告到 。" # camlibs/ricoh/ricoh.c:66 #, fuzzy #~ msgid "" #~ "Expected %i bytes, got %i. Please report this error to ." #~ msgstr "" #~ "éœ€è¦ %i,得到 %i。请将此错误报告到 。" # camlibs/sierra/library.c:620 #, fuzzy #~ msgid "" #~ "Communication error even after 2 retries. Please contact ." #~ msgstr "两次é‡è¯•åŽä»ç„¶è¶…时。请è”ç³» 。" # camlibs/minolta/dimagev/dimagev.c:299 #, fuzzy #~ msgid "remove" #~ msgstr "远程" # camlibs/canon/library.c:267 #, fuzzy #~ msgid "Could not identify camera based on name \"%s\"" #~ msgstr "无法获å–ç£ç›˜å:%s" # camlibs/polaroid/pdc700.c:981 camlibs/sierra/sierra.c:776 # camlibs/sierra/sierra.c:1353 #, fuzzy #~ msgid "Driver Configuration" #~ msgstr "相机é…ç½®" # camlibs/ptp/library.c:422 #, fuzzy #~ msgid "(ptp2) Written by Mariusz Woloszyn . Enjoy!" #~ msgstr "ç”± Mariusz Woloszyn 编写。请享用ï¼" # camlibs/canon/usb.c:249 #~ msgid "Camera not ready, could not lock camera keys: %s" #~ msgstr "相机未就绪,无法é”定相机键:%s" # camlibs/stv0680/library.c:529 #~ msgid "Revision: %8s" #~ msgstr "版本:%8s" #~ msgid "" #~ "0.1 Traveler SX330z ALDI-cam\n" #~ "(many other vendors, like Jenoptik, Skanhex, Maginon should work too.\n" #~ "Even the 4100 Cameras could work.\n" #~ "Not tested, please report if this driver works with them!)\n" #~ msgstr "" #~ "0.1 旅行者 SX330z ALDI-cam\n" #~ "(许多其它产å“,比如 Jenoptikã€Skanhexã€Maginon 也应该能工作。\n" #~ "甚至 4100 相机也能用。\n" #~ "未测试,如果该驱动程åºèƒ½åŒå®ƒä»¬å·¥ä½œï¼Œè¯·æŠ¥å‘Šï¼)\n" #~ msgid "" #~ "(Traveler) SX330z Library\n" #~ "See summary for more information\n" #~ "Dominik Kuhlen \n" #~ msgstr "" #~ "(旅行者) SX330z 库\n" #~ "更多信æ¯å‚è§æ¦‚è¦\n" #~ "Dominik Kuhlen \n" # camlibs/sierra/library.c:1187 #~ msgid "Not implemented!" #~ msgstr "未实现ï¼" # camlibs/kodak/dc3200/library.c:386 #~ msgid "%s" #~ msgstr "%s" # camlibs/polaroid/pdc700.c:173 #~ msgid "9600" #~ msgstr "9600" # camlibs/polaroid/pdc700.c:173 #~ msgid "19200" #~ msgstr "19200" # camlibs/polaroid/pdc700.c:173 #~ msgid "38400" #~ msgstr "38400" # camlibs/polaroid/pdc700.c:174 #~ msgid "57600" #~ msgstr "57600" # camlibs/polaroid/pdc700.c:174 #~ msgid "115200" #~ msgstr "115200" # camlibs/polaroid/pdc700.c:175 #~ msgid "VGA (640x480)" #~ msgstr "VGA (640x480)" # camlibs/polaroid/pdc700.c:175 #~ msgid "XGA (1024x768" #~ msgstr "XGA (1024x768" libgphoto2-2.5.9/po/de.gmo0000644000175000001440000056251412623156274012254 00000000000000Þ•ÇTF· ŒŒh»i»»–»§»#¼»à»ú»#¼7¼L¼`¼s¼Œ¼hž¼½½1½L½4g½œ½±½À½ؽFñ½8¾L¾\¾ d¾o¾v¾¾ž¾¤¾ª¾ ­¾bº¾;¿Y¿h¿„¿Ÿ¿±¿ÅÄ¿OŠÀ ÚÁ äÁïÁôÁùÁþÁ  Â#Â(Â.Â4Â=ÂAÂFÂJÂOÂTÂ[ÂbÂjÂqÂw†Œ‘—Ÿ¦ª±¹ÂÀÂÆÂÎÂÕÂæÂìÂñÂöÂüÂà ÃÃ!Ã%Ã-Ã4Ã:Ã?ÃGÃNÃTÃYÃ^ÃdÃlÃsÃxÃ|ÄËÑÖÃà ¥Ã°Ã ¶ÃÁÃÆÃÊà ÑÃÜà âÃíÃñÃôà üÃÄ ÄÄÄÄ!Ä#Ä(Ä .Ä8Ä<ÄBÄGÄ LÄWÄ [ÄeÄiÄmÄsÄvÄ yĄĉÄÄ ’Ä Ä¨Ä¬Ä²Ä ¶ÄÂÄÅÄÈÄÊÄ ÐÄÚÄàÄãÄæÄïÄõÄ üÄ ÅÅÅÅ Å*Å9Å?ÅBÅEÅKÅ PÅZÅ `ÅjÅmÅpÅvÅzÅ}ÅÅ…Å ŠÅ”ŗŚŠũŬŲÅÃÅÔÅãſŠïÅúÅÆ2Æ AÆLÆ TÆ aÆkÆzÆ•Æ ¤Æ±Æ¹ÆÈÆ ÐÆ ÛÆæÆùÆ Ç!Ç 6ÇDÇ SÇ `ÇlÇ ~Ç ‹Ç –Ç £Ç °ÇºÇÂÇ ÈÇ ÕÇâÇçÇìÇÿÇÈ ÈÈ"È'È0È9È OÈ\ÈaÈdÈtÈ{ȃȉÈÉ¢ÉºÉØÉïÉ ÊÊ5ÊGÊ\ÊoʀʘʲÊÇÊ ßÊëÊòÊËË*Ë'1ËYËbË {ˆË.™Ë-ÈË öË ÌÌÌ9(ÌbÌkÌ|̟̰̎ÌÃÌÖÌ ÝÌ éÌöÌ ÍÍ 3Í@ÍRÍWÍ rÍ€Í —Í¤Í¼ÍØÍñÍùÍ ÎÎ$$ÎIÎbÎvΔΠ±Î ¿ÎÍÎ ÜÎêÎúÎ Ï"Ï1ÏIÏ\ÏqφϛϬÏÄÏÓÏ äÏ îÏùÏÐÐ.ÐIÐ(eЎОР¹ÐÇÐÊÐ ÑÐÝÐ åÐòÐÑÑÑ/Ñ@ÑDÑ GÑSÑdÑ tÑ ÑŒÑ/”Ñ+ÄÑ1ðÑ'"Ò(JÒsÒÒ ®Ò¼ÓÏÓáÓéÓ ûÓo ÔyÔ ‹Ô —Ô ¤Ô±Ô*ÐÔ#ûÔÕ %Õ0Õ 5Õ?ÕQÕZÕbÕgÕ †Õ ”Õ ¢Õ®Õ ¾Õ ÊÕÖÕÜÕäÕéÕ ðÕ ýÕ Ö Ö"Ö4ÖPÖXÖ `Ö kÖ wÖƒÖ —Ö £Ö¯Ö´Ö ÇÖÑÖ×Ö æÖóÖøÖ ×× '×3×7×@×G×V×e×z××Ož×î× ØØ -Ø:ØLØ ]ØhØ {Ø ‰Ø–ئØÀØkàØ8LÙ#…Ù8©Ù9âÙÚA0Ú4rÚ+§Ú(ÓÚ@üÚ =Û^Û1zÛ¬ÛÉÛ#ÞÛÜÜ7ÜVÜjÜ}ܔܮÜ'ÂÜêÜÝ=ÝXÝ tÝ)€Ý$ªÝ>ÏÝÞ 'Þ5ÞJÞ\Þ4uÞ7ªÞ6âÞDßE^ߤßÁßÞß&÷ßà3àBàÐZà+á?á_á!~á á ¨á¶áÇáÚáéáÿáâ8â=âLâeâ{â Œâ™â(²âÛâïâ ãã:ãVã oã{ãŽãžã¶ã ÆãÒã âãää4äMäTä gäsää¢ä ¼äÆäØäáäðäöäÿäå3å FåSådåxåå‘å™å åºå Àå Ëå Öåâå ñåýåæ &æ3æEæcæ xæ‚æ˜æ®æ<Äæçç0ç CçOç cç"qç”ç ¨ç³çÒçççèè8èWèmèƒè˜èªè¾è Çè Ñè Ûè çèñèéé5é:Dé<é¼éÙéôéê&)êPêlêˆê¦êÅê0äêë1ë!Kë'më•ë´ë>Ðëì&ì&Bì/iì<™ì<Öìí(-íVírí Ží*¯í2Úí- î4;î;pî0¬îÝîòîï-ï5Fï=|ï5ºïsðïdðð&•ð¼ðkÅðE1ñwñ’ñ…¯ñU5ò‹ò’ò¦ò¿òØòñò óó ó %ó3ó Ló Xódó {ó‰ó óÿªóªô³ôÂôËôçôíôòô×õÚöéö ðöþö÷*÷;÷T÷m÷†÷ ™÷¥÷2´÷,ç÷.øCø `ømø ˆø –øÓ£ø wùE„ùÊùÛùïùú%ú -ú9úAú Sú`úLwúµÄúHzûªÃü,ný›þ«þ½þÑþêþÿþÿ'ÿ=ÿRÿgÿ€ÿÿªÿ ÈÿÓÿîÿ  # .8 =G\l~¡-±ßö< He|”®Êéíóû, 4@ HRXi~ ¨½Ýåîô (5^'r5š ÐÛï 1 :?4z-¯Ýæý':UqŠ »Ïçù3 LZi{’£ ¹ ÇÕë $?Sm|”°ÄØ î ü      % 5( ^  q  ~ ˆ  ¡ ± º Á Ç Í  Ó Ý  í ú ,ÿ , I Y  p }  Ž š © ¹ UÉ   ) _=  ° Á Ó è  ù     & / NF • ¯ À Û ì ô ú   + @ V s ˆ ž ´ Ô ì 0C_ p{¦ ºÅà ø   "0? S^p ‰”§ºÎ ßé òý -$?du"…¨¿ÈÙ ë÷!: U ao‚•¨»Îí:Ri —¤½Òçù  , <H W bm|  ›¨»ÎÝ#ì%6LF“›f ¼Ä Ê×÷ ,DV]r… Š •¡·ÊÜì /6Jd!‚¤¶ÊÝ÷ >Wg|"Œ¯.Ä ó þ +< ESfuz„–ª±Ê ãðù :Ø?Q2U„2Ú #36RV_q …¡§¬ ¿ÍÓ ñÿ   3 H  Z g w ‹  ›  ¦ ´  Ä Ñ à ô  !!"!7!I!a! r!}!/!½!Ù!õ! " "" %"2"D"K"T"f"x" ’"%ž".Ä")ó#$1$ B$1O$$•$:©$*ä$%%1%@%V%o%"‰%%¬%Ò%í%&%&C& a&m&u&÷& ' '' 2' <' F'R'[' s'ÿ' (Œ)Ò *^ß*?>+~+£“+g7,Ÿ,¦,ª,Ä, à,î, ---- 6-C-;L- ˆ-’-4›-Ð-Ö-æ-ø-ý-.,.4. T. ^. h. r.*|.§.¾. Ä. Ð.Þ.î.//)/ D/P/b/u/‡/œ/·/Æ/ã/#ô/0 0+0F0b0~0Eƒ0É0â0 1 1 $1E1N1T1X1h1{1 1‹1 ¥1²1º1Ê1Ù1(ë1%2:2<2 B2O2 S2^2m2 ˆ2 “2  2¬2²2¸2À2Ç2 Ð2Ý2ô2 3 3-3B?3_‚3â3é3Sù3"M4"p4“4¥4(­4(Ö4 ÿ4 5(5 F5Q5 b5m5t5ˆ5 5©5²5»5 Ì5 Ø5ã5 ö566 ,686U6q6‚6“6¤6µ6(È6ñ6 77 7 <7G7"V7y7•7­7¿7Ð7Ø7pî7 _8i8|8˜8§8¸8È8Ø8Ká8-9 59t@9,µ9ˆâ9k::’:¡:±:º:Â: Ô:ß: î:ú: ;;; /;=;N; `; l;x; ”; Ÿ;ª; ¾;!É;ë;3 < ?<`< < <§›<C= L= V=`= i=t=Ž==!¢=5Ä=Gú= B>$N>s>{>‚>‰> >>¥>ª>¹>È>Ø> ç> ó> þ> ? ?'?6?€F?ñÇ@¹AÍAÞA$ïAB2BOB&lB/“BÃBÆBÙB ùBC%C8CHCQCcCrC‡CC#¸CÜCùCDD&D=DQDFiD°DÇDãD èDöDýD EE!E*E.@EoEE EšE9£EÝEóE F+"FNFRFUF XFyF}FG„FÌHVãH:I=IVIeI{I„IM—IåIôIJJ(JlÂmmÁ0p;òrQ.s €sµsÌCtAu:RuBu;Ðu? v7LvN„v7Óv1 w3=wqw3ww/«wÛwãwHþwGx Nx\x ax'ox—x ªx'¸xàxèxñxy'y/yZDyNŸyTîyLCzMzAÞz: {[{ n{ z{ˆ{œ{¸{ ¿{ Ë{!Õ{÷{ |!|(9|'b| Š|˜|œ| ¥|°|´|·|Ç|Ø|Gô|Ù<}è~ìÿ~Lìb9€&œ€,À%ð€»-Ò9‚):‚Md‚0²‚7ã‚,ƒ:Hƒ7ƒƒ,»ƒèƒ3„4;„=p„F®„Kõ„JA…•Œ‰j"Š%гŠ$ЊSõŠRI‹&œ‹7Ë:û‹;6Œ'rŒ&šŒÁìQ->‘ìl“Y–r— Ž—˜—®—— ×— â—î— ˜˜"˜03˜d˜j˜‚˜ ‘˜ ž˜ª˜ ¼˜ǘИ阮í˜Dœ™á™/ú™*šJDš9šÉšåš ýš › › '› 5›C›L› h›s›v›ˆ›‹› ޛ𛠢› ­›·›¿› Ç› Ñ› Ü›æ›ö›œ#œ5œHœZœqœœ žœ ªœµœ ½œÈœØœ õœ( @N ao‚•ª ÀÎßõžAžD\ž¡ž¨ž ¿ž-Êžøž ŸŸ 2Ÿ?ŸGŸOŸfŸuŸ„Ÿ“Ÿ!¤Ÿ"ÆŸéŸ þŸ    $  /  9 C S k ‡ ˜ ž  °  ½  Ë  ×  â  í  ú  ¡¡ /¡:¡J¡Z¡j¡ey¡ß¡6å¡¢ !¢/¢K¢g¢ƒ¢Ÿ¢»¢Ø¢ö¢ £2£N£j£†£¢£¾£Ú£÷£¤1¤N¤ k¤ w¤ …¤ ‘¤ ¤ª¤À¤Ö¤ç¤ø¤¥ ¥#¥8¥>¥3N¥ ‚¥ Ž¥™¥¨¥l¬¥?¦-Y¦<‡¦hĦƒ-§n±§6 ¨JW¨H¢¨+ë¨,©`D©¥©¸©Ωß©ó© ª#ª;ªSªkªpª†ª ™ª ¦ª ³ª Àª ͪ Úª çªróªf«k«†« Ž«œ«-¡«Ï«Nã«Q2¬K„¬LЬP­?n­?®­Dî­@3®It®?¾®<þ®Q;¯N¯VܯV3°XаXã°G<±a„±8æ±I²i²o²‚²ž²±² ¹²IJ̲’Ѳïd´TµcµÓvµ7J¶‚¶ ‡¶”¶ ¶¨¶=¹¶?÷¶7·I· R·`·r·w·Ž·§·¿·Ù·ð· ¸¸#¸7¸<¸C¸U¸Y¸\¸ u¸G€¸1ȸ6ú¸(1¹*Z¹…¹й “¹ ¹ §¹±¹·¹J¾¹ ºº0ºDºIº`ºyº‘º«ººÛº àºîºþº¼;¼<P¼¼ –¼ ¼³¼"¼¼ ߼鼽½*½ B½ M½X½_½Nf½èµ½ž¿»¿׿ë¿%À,ÀKÀ$gÀŒÀ¨ÀÆÀ&ØÀ ÿÀp Á‘Á¤ÁÀÁ%ÚÁ9Â:ÂNÂ]ÂzÂV˜Âï ÃÃ'Ã:ÃAÃ!JÃlÃrÃxÃ{ÃoŠÃ@úÃ;ÄLÄjĀĒÄÝ¥ÄÀƒÅ DÇ PÇ[Ç`ÇeÇjÇoÇsÇyÇ}ǃDžǎǓǙǢǫǯǴǸǽÇÂÇÉÇÐÇØÇßÇåÇíÇôÇúÇÿÇÈ ÈÈÈÈ'È.È4È<ÈCÈTÈZÈ_ÈdÈjÈrÈyÈŠÈȓțȢȨȭȵȼÈÂÈÇÈÌÈÒÈÚÈáÈæÈêÈòÈùÈÿÈÉ É É!É 'É3É8É<É CÉNÉ TÉ_ÉcÉ fÉ qÉ|É €ÉŒÉ‘É”É—É™ÉžÉ ¤É¯É³É¹É¾É ÃÉÏÉ ÓÉÝÉáÉåÉëÉîÉ ñÉüÉÊÊ Ê Ê!Ê%Ê+Ê /Ê=Ê@ÊCÊEÊ KÊVÊ\Ê_ÊbÊkÊ qÊ {Ê …ÊÊ–ÊšÊ  ÊªÊ¹Ê¿ÊÂÊÅÊËÊ ÐÊÛÊ áÊëÊîÊñÊ÷ÊûÊþÊËË ËËËË"Ë+Ë.Ë4ËEËVËeË jË xË…Ë"£Ë ÆË ÔËßË çË óËþË! Ì/Ì >ÌJÌQÌ$aÌ †Ì ‘ÌœÌ%®ÌÔÌãÌùÌ ÍÍ2ÍGÍZÍ iÍ vÍ ‚Í ŽÍ™Í¢Í¨Í ºÍÆÍËÍÐÍæÍìÍñÍÎ ÎÎÎ#Î9ÎMÎRÎUÎkÎrÎzÎ,€Î­ÏÄÏ%ãÏ Ð!$ÐFÐcÐ~ВШнÐÑÐïÐ Ñ"Ñ AÑOÑVÑhÑ{Ñ•Ñ'œÑÄÑ!ÍÑ ïÑùÑ5 ÒJ?ÒŠÒ ’Ò ÒµÒ>¾ÒýÒÓÓ,Ó=ÓOÓcÓ wÓ ÓÓ¡Ó·ÓÍÓåÓúÓ Ô"Ô4Ô!HÔjÔ"€Ô)£Ô"ÍÔðÔøÔ ÕÕ+#ÕOÕ)lÕ.–Õ(ÅÕîÕÖÖ"=Ö"`ÖƒÖ–Ö¶Ö%ÓÖ$ùÖ×2×L×^×s××Ÿ× ±× ½×Ê×å×ù× Ø'Ø1BØtØ ˆØ ©Ø¶Ø¹Ø ÀØÌØ ÔØáØøØ ÙÙ;ÙMÙQÙUÙlه٥٠¼ÙÇÙKØÙ6$Ú=[Ú1™Ú1ËÚ"ýÚ# ÛDÛSÜkÜ€Ü ‰Ü•ÜxªÜ#Ý<Ý OÝ ]ÝiÝ(„Ý!­ÝÏÝ ÖÝäÝèÝøÝ ÞÞÞ$ ÞEÞUÞgÞ zÞ ˆÞ ”Þ¢Þ«Þ±Þ¶Þ¼ÞÌÞßÞ ñÞûÞ$ß:ß@ß Fß Qß ]ßiß}ߒߢß&µßÜßöß ÿß à $à1àDàUà fàrà và€à‡à–à¥àºàÐàKßà+á =á#Iá mázáŒá  á«á ½áËáÚáîá! âd/âd”â+ùâQ%ã8wã°ãDÆã6 äGBä;ŠäLÆäå'1å?Yå-™å&Çå.îå$æBæ+^æŠæžæ¶æÒæéæ3ç 5ç%VçF|çÃç âç/îç*è;Iè$…èªè¹è×è!êè3 é<@é2}é.°éJßé%*ê&Pêwê0‹ê¼êÑêàêÆøê¿ë)Ôë(þë+'ìSì\ìqì‡ì  ì­ìÂìØì ÷ìí,íBí]íwí‹í4¨í!Ýí)ÿí)î@î`î€î î«îÉîßîõî ïï/ïNïlï‹ïªï²ï Ðï(Þïðð ;ðEðWð^ðpðwð~ð”ð®ðÂðÑðåð þð ñ ñ(ñ/ñOñVñ gñ qñ|ñŽñ—ñ¦ñ »ñÈñ'×ñÿñ ò(ò?òVòXmòÆòâòõò óó /ó=ó\óqó2€ó)³ó2Ýóô!)ô Kô lô$ô(²ôÛôðôõ õ õ!õ 1õ;õWõmõƒõ=’õAÐõ%ö18öjö†ö)¤öÎöîö÷".÷$Q÷>v÷µ÷!Ï÷"ñ÷%ø#:ø^øH{øÄøáø%üø-"ùJPùF›ù!âù1ú"6ú#YúB}ú6Àú@÷úI8ûQ‚ûBÔû<üTü$qü–ü#´üCØü^ý7{ý‡³ý);þeþ%yþŸþi§þEÿWÿ!uÿ‘—ÿO)y‹&Ÿ&Æ&í ,7 ;HXs ‚¦µ ÊØ ñû #9?EUtŽ—§!¼Þô $< O\5q7§.ß% 4@ [ i×u MAZœµ#Ëï   # +  < I >a   ]c ·Á *y ¤ º Ò ê 4Kf|’°Á Üý  'HP*f ‘ › ¦±ÅÜø/5F|–B®ñ)@\z™ £ ®¸Ð å ïû %#@d"u"˜» ÄÎ Õ!ö"4;p7+Ç óþ(71IiC³I÷ ALc}–®Ãâ/Oj*‚!­Ïìý"7Le|Œ¡ÀÚô4C)]‡›² È Öáêíò÷úÿ>A _ mx€›¬±¹ÀÇÎÞô;Jj•¬¿×ìþSbkxŠ+BWhw ’œ¥W¼.?[ lv‡ &›ÂÚ&ñ0G+]‰§ÃÙ÷ !  3 > S h  { † ¡  Á  Ë  × ã ö  ! !%,!R!q!ƒ!˜!°!Î! ß!é! ò! ü! "" <"#H" l" w"!"£"¶"¿"Ò"å"##1#N#k# ‰#—#«#¿#Ó#ç#'û##$B$_$|$“$©$Á$ Ù$å$ø$ %"%3%D% J%X%q% „%’%£% ´% ¿%Í% è% ó%&& +& 9&&D&"k&Ž&X§&' 'k'Ü{'X*^*&n*•*³*È*á*û* +!+9+O+T+ ]+j+…+™+«+º+ Ò+Ü+ô+,,6,Q,"n,‘,¤,¹,Í,è,-+-<- Y-g- z-&ˆ-¯-[Å- !. ,.7.=.L.\. o.y.‹.£.³.º.Á.Æ.Ø.î."õ."/;/M/V/k/ €/¡/ë¨/"”0`·0f141´1Æ1Í1å1è1222+2?2S2q2x2‹2 2²2$·2 Ü2é2ø23!303 C3O3^3u3 „3 Ž3œ3 ¬3¹3Ë3ß3 ñ3ý34%444J4 _4k45|4²4Ð4ë4 û4 55505 85 B5L5`5y5 ”5,¢5åÏ5%µ6Û6ð6747J7_7Gt7,¼7 é7ó78%8>8P8e8|8œ8³8Ê8á8û8 9 #9/9¯9Â9 Ç9Ò9 ò9 ü9 : :%:D:øU:CN;g’<Þú<dÙ=@>>>³”>yH? Â?Í?(Ñ?(ú?#@,>@k@z@ Š@*”@ ¿@EÉ@ AA5"AXA^AnA€A†A!ŸAÁA%ÒA øAB B &B%2BXBsBxBŠBšB±BÊBáBüB C&C:CMC`CyCCŸC¾C ÏCðC öCD$DAD^DFcD*ªD%ÕDûD E.#E RE]EmEuE‰E £E ­E¹EÒEåEíEFF,*F6WFŽFF–FªF ®F¸FÈF çFòF GGGG&G .G8GHGbG{G›G«GB»GkþGjHqHU€H(ÖH(ÿH(IMRM)fM MžM#°MÔM îMLøMEN MNYN0éN‚OO´OÆOÕOäOëOóO PP+P>P CPQP aP oP}PŒP £P ®PºP ÙP ãPíP þPQ$Q2?QrQ Q °Q¾Q¼ÒQR ˜R ¢R¬R µR'ÀR èRòR#÷R-SBIS ŒS2™SÌSÓSÙSßS åSóS ûST T"T 2T@T PT ]ThTxTˆTšTƒ«Tþ/V.WDWUW%fW#ŒW,°W#ÝW!X6#XZX_X wX˜X$¨XÍXéX YY(Y9Y"VYyY2—YÊYêY#Z$Z;ZYZoZIˆZ#ÒZ'öZ[$[6[=[E[[[ o[z[5“[É[á[ õ[ \I\Z\q\‡\*ž\É\Í\Ð\!Ó\õ\ù\Wÿ\W`Io`¹`¼`×`ï` a a_!aa“a ©aµaÉaßaòabbb9b.Ob~bb(ªb)Ób ýbcc1c3c7c:cNcecyc#–cºc)Ìcöc d#dAd+\d'ˆd!°dÒdðd e&eAeae%~e¤e¬e Ée êe f"f%5f[fyf™f2µf/èf!g:gLgkg Šg–g²gÌg égõgT i ^i hi²ri²%jõØjZÎl)m 2m >m Jm VmCdm¨m±mÃmÓmìmn n *n6n KnXn mnyn™n «n¶n½n Önánñnúno&o6oMo]oqo zo ˆo“o ¢o°oÃoØoço÷opp'p7pJp]pfpup†p •p% p&Æp(ípq*5q`q'zq*¢qÍqâq øqr rr /rPrdruryrŠršr¬rÂrÚrñr s s8s>sGsXs hsvsˆs Ÿs©sO½s tt$*tOt$etWŠt,ât!u1uNu`u iu wu…u”u£u§u½uÎu&äu" v.vJvfv&|v £v­vÅvÔvçvövww*wGwXwsw‘w ¢w¯w*Ëw\öwSxmx…xšx¸x ÓxÞxõx y%y=y’Tyçywz~zŽz¢z±z&Ãz êze÷z]{¨c{Ÿ |Œ¬|÷9}1~ I~T~ Z~g~ o~|~~~­~$½~â~ö~);K_r†£#Áåý€ 2€@€O€_€q€w€ †€“€¥€ Àä€ #4=r† › © · ÅÓÜ!åB‚J‚ S‚ ]‚g‚ p‚~‚’‚¦‚º‚΂Ý‚ ü‚ ƒ"ƒ 9ƒDƒSƒcƒ.ƒ°ƒ&ƒ.郄(„B„VR„ ©„ ´„ ¿„ Í„ Ø„ã„ô„ …… "…k,…˜…¬…%Ç…)í…2† J†U†g†|†„†¢†±†ņÔ†…í†s‡y‡‰‡›‡ ¡‡¯‡¶‡¼‡ć!Û‡Aýˆy?й;W‘]“‘ ñ‘Æÿ‘ÝÆ’P¤“2õ“^(”B‡”:Ê”>•?D•8„•F½•4–9–4?–7t–¬–3µ–Né–8—>—D— J—&V— }— ‰—!•—·—À—É—è— ü—˜l˜f‰˜fð˜eW™e½™L#šJpš»š Κ Øšåš$ùš› .› :›%D›j›Š››0µ›4æ› œ)œ-œ 6œAœEœHœ^œ oœTœ 圮ž µžLŸ -‘ 6¿ 5ö Æ,¡/ó¡E#¢7i¢X¡¢8ú¢C3£4w£F¬£Dó£38¤(l¤?•¤?Õ¤J¥U`¥`¶¥G¦_ª^ýª.\«(‹«(´«aÝ«`?¬* ¬1ˬ9ý¬A7­0y­zª­z%¯Y °?ú²:µS¸$b¹‡¹¹§¹À¹ ع ã¹î¹ ºº%ºK7ºƒº“º«ºƺ⺠ýº » »»;»À@»E¼G¼+Z¼†¼h•¼=þ¼#<½`½z½‹½œ½­½¾½Ͻ!ç½ ¾¾¾*¾-¾0¾J¾ Q¾ \¾f¾n¾v¾о ›¾§¾Á¾Þ¾ ô¾¿,¿C¿]¿ w¿ ˜¿ ¤¿ °¿ º¿Ç¿&Ü¿ÀÀ*ÀCÀ^ÀqÀ‹ÀœÀ²ÀÈÀàÀûÀ ÁÁ6ÁKÁQjÁN¼Á Â" 8Â3CÂw‰›²ÂÄÂÍÂ"ÖÂù Ã!Ã4Ã&KÃ"rÕà ®Ã ¸ÃÅà Ýà éà óÃÄÄ/ÄMÄdÄlÄ …Ä‘Ä ¨Ä ´Ä ¿Ä ÊÄ ÕÄâÄöÄ ÅÅ )Å 5Å AÅ[MũŌ°Å=Æ EÆ!SÆ!uÆ!—Æ!¹Æ!ÛÆ"ýÆ. Ç-OÇ}Ç(šÇ(ÃÇ(ìÇ(È(>È#gÈ(‹È(´È(ÝÈ(É(/ÉXÉ kÉ yÉ …É ÉžÉ¸ÉÒÉäÉ,öÉ#Ê (Ê6Ê JÊTÊ9fÊ  Ê ¬Ê·ÊÆÊuÉÊJ?Ë9ŠËEÄËm Ì‘xÌq Í8|ÍPµÍVÎ/]Î1Î^¿Î Ï,ÏBÏQÏaÏzϓϬÏÅÏØÏÝÏóÏ Ð Ð Ð -Ð :Ð GÐ TÐ{aÐÝÐâÐ ÿÐ ÑÑ5*Ñ`Ñ[~ÑVÚÑG1ÒHyÒ\ÂÒ<ÓQ\Óa®ÓIÔNZÔb©ÔA ÕUNÕR¤ÕI÷Õ\AÖWžÖ^öÖKU×]¡×@ÿ×M@ØŽØ•Ø%«ØÑØ êØöØ ýØ Ù¾Ù7ÏÚÜÜÞ)Ü7Ý@Ý EÝ SÝ]ÝdÝ=xÝ?¶ÝöÝ ÞÞ1ÞGÞLÞdÞ}Þ—Þ±ÞÌÞåÞüÞßßß&ß;ß?ßBß ]ßEkß+±ß:Ýß/à1Hà zà…àšàµà ÇàÒàÙàiâàLácáyáá”á¬áÅáßáùáâ-â2âIâcârã@‡ãAÈã ä ää 0ä&=ä däpä‰äœäºä Õä àäëäòäRùä^¶QK N<Æ#µJBíýò]Pskê)ÆRñÄò'ã8†¢ca|¿ìõ¥ÛO–²u÷)>I‚ZM5uzõD‹Ô÷àÊ’ÞŦ'”êÿiÍ\Iû¿I´rÂÑ và›ÕØp&’©.ë$Ô™¾úøøä:â—ÓçïÞ|_jþK'279Dˆ¡&×µPJ¤×“À´“ó*þìÕ(þ}7²oó¶ÖQA –”–®ÓƒÇáÈî.î`â_•Ew¬C+·ñ¯ÆCärŸA¶ µ%ŽÁø«S0ùzN/e%ŸG¶(=‹ä ™©ê’¦èùå¸O8ö§K{Æ@ÏŽÕö~g†W’n1 34ma ÐØ ¹Vž0çƒÌÐ$OÑ_06L¦…Ì QóÞ·R Þp]<º5Ó¾Çé7 ?yü†òˆƒp`µEl×tIÓ"ö×èt°ÐÐ:o?—ÊÄUËëûÛ¿ÀY˜'¹½Ù¿4Ñ7»ƒÇ‘N·FYߌWn؆ÚhK4Ü?òA9ÞB0v“Q§¨<!ýe+5òœ»´dHYÚþå{m/¡º;즠*< @µíŽL¦H_»Ô龞PK4­5áR•MË „. tàª…ßæ¡·TKî $üê3²ô?8äé÷Ž”Q§€KYv‡©ø/[,ï s“2#³œy¢ÏeŽ©¿®W’h–ÛXâÅȯ×ÅùŠÇ^AôÛgM ¹4ð_c¼c8X£‚ bü6‘gs™ã­†¹Utîl¡HIuVBäç…¹)fˆÐÜòWÒq‘&°¡yV8¢jy$~@&ôzÑ„¥JvÄqåJ!‡e‰í&L™Öwœ»ž€ S>®Õú~ÖdÊ^51ª„úñ›…ùèÉ)•eÒW”Ç€¤•ê¿H­­ åc¡¨.ô“¦szB§8|Y=¬³ï´çb´ÀÓVF1뺨Û]õ» lfHÜZ|¾?7ž”w¾›ú±:ðÅÃDx†ÄŠ]ɵö}ŸÝÇM$M(}±D•X2’jxdxЇ¼1áNSæn±2A«+p–!Ÿ4B¾6‰õ¢-:²ÝÐ  ÿðBºs"gÌa—­X;,kðïþ÷6 ¸dt^]$‰gl•lp3w%£<^Tfa zK¼G€€„S‘U"T© T§Ö·G1 ŸçwÕ½:];o¶5˜Ÿ¡½¢úÝËhÈr—$cŠˆÒ=nÝ 3/XR‹{‡ó[%4‹nh”Ȉg Lreÿ¨¢G} ¤Ýæ¸RAŒÔ”Ë£Oh̬3ñ˜ÍT¾€V>¸@RŠÊG¼+Oä_nm6†¬YöâÌÀÅ,C ¯q³Ý¶Õ¯ ¿Jçr.Ÿ7Ê\pUÚ츳®®¯`ü ²™QÚLá!î:Ù"xMɸ)ÏÅ ýø(³%~` „7ÃkÙ !¬•…ƒ„O·LD}Îdð¤O¶‹Eõ´ÑEÜû×k;÷êX¿Z®y³ýr-x‰Ï'[#Iµ¨~À šmY‘_€uÞ_M6/ëÉÍo¬ùÝ)¯·‚¾ÃÈEôíŠÃʇ*˜SSô’s´‹éŒñ>9å=ÍèBº‰ß‚Ü0ü±ðl°luμyÞ‘àq).øÏWèmt>Qû°«?©Nñ«\Wød–`‘ T¤eœ÷ ʼ\-Ô=#á@œˆ6›]å<pô:jJÇ>EMÜÒl ÎìÒ³…Í[·ÂS+’ªŽbÎw»v(°§Â©š`Jr›aìî èzS'@‰'ÎjšÁÈ»¥2]Púfëfã+{æª+=]²ZÚ_iW~¡‘“|ߥhÒ`xaCZ;’£& Æl{9¾+U‹ @Ôßr‡£“!kæy!‰ðÿ‡ŽÉ4ºÅÛœÉØu 6o˜ˆc).k¥Á;¢[Òšvz(zUO…»"eF:>ý&Ñò„iìo·¡hôïÛZi2ÛŒâje®º u@­¼$ˆÁž%í ö§a+Ïp2¨£uCàõc™PáV=NL‚UÆfäý}|B‰ùœŒsá/™[¤¥D°®î“bÓ,%öI"ÑæAÏ9`úÄÙtÚ!FàI"—*w˜íGHIc[ÓØÄv¯ûÙë~ùdv`¨ºÑ,ÿP–*é,|‚-÷*õ\ç-m¯„º @ÖanÏ*©Æ†-1i g\E±9À  CL €ç=oû×bmÂÿØ|qé¢q£á0™¸NàÄ;ÀT ¦©,Ex‹X˜ªï/1£öÝý­µ?J2/£¥RŠ–¸ígÈ bªPåO¤¯—C9%ÇTUŸ¦Ø>f㦲,ߎA®ƒÖìi—ÀÌ„w‚ÆÁñQšGZõÊ¿?^ëÉ ‡óNêÍZÒ~<W¸ޤb½0¬:¹«¹Œw.0Ö»ÔNÎ#¼Ì{"^=;|y‚.sGf“½‹›^Tf%QÁÜÂÍÀÇuEÂtüïÉoFxÎŒi¶<ÿÃÄÅÆ38î²Pn9\¥ g6ƒCv” CFëÁ?Ø߫#Ëæ†sq߃F´ù²åâ•t›Úx´U(›—&àH9ÖóÐirÞi ŒDjšd-êÁ‚'ËFbÍ["žY±m<ÔŠV'7oØûãh±A\§M(Õ¬Ë#÷â{;­èðã1•2ÌjŠÐâñ~ k›5GÚ}!ãkü^-JÓœ¹ §éRh‡/F¨ÃR)Œ”Á{Y8«5BkZª35}‰z*{Üž–…óaSæË[¢œ¹±¼ˆ ƒ\µ ³qøïXªm-DDbü‘&þÙÃĽªV4íÙ¤—ý½ž×šyŸódšš,Ké#°¨ã…0>ÿè318È$L7™ž°H¬ýû³Ù€½XcŶHp­ú°Pþ3jVä«*˜Õòþ}n#¥(qÎ ±« Access Capability: %s Canon Wifi support File Download, Filesystemtype: %s Free Space (Bytes): %llu (%lu MB) Free Space (Images): %d Generic Image Capture, Maximum Capability: %llu (%lu MB) Nikon Wifi support No Image Capture, Storage Type: %s StorageDescription: %s VolumeLabel: %s Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Capture Formats: Device Capabilities: Device Property Summary: Storage Devices Summary: Drive %s %11s bytes total %11s bytes available Serial Number: %s Version: %s (battery is %d%% full) PTP error %04x on query Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d error %x on query. not read out. %.0f mm%.1f stops%0.4fs%d %d/%d%d Multi Frame Noise Reduction%d mm%d/%d%f%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)%sCanon EOS Shutter Button%sNikon Capture 2%sNikon Capture 3 (Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*+NEF (RAW)-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 (Short)1 EV1 fps1 min1 minute1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/250s (Auto FP)1/25s1/2s1/301/30s1/3200s1/320s1/320s (Auto FP)1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 mins10 minutes10 mm10 seconds100%10s11 fps1152 x 86412 mm1280 x 96013s1515 mins15 minutes15s16 seconds16:91s1x22 EV2 fps2 seconds2.02.0 m2.5s2.5x20 seconds20s21 points25%25s29 mm2s2x3 (Normal)3 EV3 fps3030 minutes30 seconds30s34 mm3:23D Tracking3s3x44 fps4 seconds41 mm4s4x5 (Long)5 fps5 mins5 minutes5 seconds50 Hz50%51 mm51 points51 points (3D)58 mm5s5x6 fps6 mm6 seconds60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 seconds8s8x9 fps9 points9xA-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)ACAC PowerAC adapterAC adapter is connected. AC adapter is not connected. ADL bracketingAE & FlashAE LockAE Lock onlyAE LockedAE lock (Hold)AE lock (Reset on release)AE lock (hold)AE lock onlyAE onlyAE-L/AF-L ModeAE-lockAE/AF LockAE/AF lockAEAF Lock Button 2AEB Exposure CompensationAF ActivationAF Area IlluminationAF Area PointAF Assist LampAF Beep ModeAF DistanceAF LCD Top Mode 2AF Lock HoldAF Lock OnAF Lock OnlyAF Lock onlyAF LockedAF ModeAF OnAF On ButtonAF lock onlyAF-AAF-CAF-C Mode PriorityAF-ONAF-SAF-S Mode PriorityAF11AF51AI FocusAI ServoASIC Revision: %d.%d ASX PlaylistAUTOAVAV Lock SettingAV MaxAV OpenA_DEPAbout Konica Q-M150: This camera does not allow any changes from the outside. So in the configuration, you can only see what it is configured on the camera but you can not change anything. If you have some issues with this driver, please e-mail its authors. Abstract Audio AlbumAbstract Audio PlaylistAbstract Audio Video PlaylistAbstract Calendar ItemAbstract Chaptered ProductionAbstract ContactAbstract Contact GroupAbstract DocumentAbstract Image AlbumAbstract MediacastAbstract MessageAbstract Message FolderAbstract Multimedia AlbumAbstract Video AlbumAbstract Video PlaylistAccess modeActionActive AF SensorActive D-LightingActive Pic Ctrl ItemAd-hocAdc65 Benjamin Moos AdobeRGBAdvanced Transfer CancelAlbum nameAlkalium manganeseAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Angle LevelAnti-redeyeAnti-redeye FillAnywhereAox generic driver Theodore Kilgore ApertureAperture SettingAperture SettingsAperture changedApplication ModeApplication Mode 0Application Mode 1ArtistArtist NameAspect RatioAssign Func ButtonAssign Func. ButtonAssign Preview ButtonAssist LightAudible.com CodecAutoAuto + Red Eye SuppressionAuto ApertureAuto Bracket SelectionAuto DX CropAuto Distortion ControlAuto Exposure Bracket CountAuto Exposure BracketingAuto FPAuto Focus AreaAuto Focus Mode 2Auto ISOAuto ISO Multi Frame Noise ReductionAuto ISO P/A/DVP SettingAuto Meter Off TimeAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off InfoAuto Off MenuAuto Off PhotoAuto Off TimeAuto Off TimersAuto Power OffAuto Power Off (minutes)Auto Slow SyncAuto White Balance BiasAuto exposure lockAuto focus: AI focusAuto focus: AI servoAuto focus: one-shotAuto sensitivityAuto, red-eye reductionAutofocus ModeAutofocus error.AutomaticAutomatic Automatic (No Flash)Automatic FlashAutomatic MacroAutomatic Macro (close-up)Automatic Red-eye ReductionAutomatic exposure adjustment on previewAutomatic flashAutomatic flash on captureAutumn colorsAvAv MaxAv Max ApexAv OpenAv Open ApexAvailable ShotsAvailable memory: AverageAverage FilesizesAverage MeteringB/WBWBW ContrastBW Filler EffectBW Setting TypeBW SharpnessBack LightBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for card status %dBad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery Cell KindBattery LevelBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery Life: %i Battery LowBattery ModeBattery TypeBattery exhausted, camera off.Battery level: %.1f Volts. Revision: %08x.Battery status: %s, AC Adapter: %s BeachBeach/SnowBeepBeep ModeBeep mode changedBeep offBeep onBestBit rate %ld is not supported.Black & WhiteBlack & whiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlossomBlueBottomBracket ModeBracket OrderBracket SetBracketingBracketing EnableBracketing Frames and StepsBright+Bright-BrightnessBrightness+Brightness-Brightness/ContrastBuiltin RAMBuiltin ROMBulbBulb Exposure TimeBulb ModeBurstBurst IntervalBurst NumberBusyButtons and DialsCCD NumberCCD Serial NumberCHDK ScriptCRWCSM MenuCameraCamera ActionsCamera Body IDCamera ConfigurationCamera Date and TimeCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ManufacturerCamera ModeCamera Mode Not Adjust FNumberCamera ModelCamera Model: %s Camera Not ReadyCamera OK.Camera OrientationCamera OutputCamera OwnerCamera SettingsCamera Status InformationCamera and Driver ConfigurationCamera appears to not be using CompactFlash storage Unfortunately we do not support that at the moment :-( Camera busy. If the problem persists, please contact %s.Camera could not complete operationCamera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera has taken %d pictures, and is using CompactFlash storage. Camera is configured for lights flickering by %dHz. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera unavailable: %sCamera was already activeCamera was woken upCan't capture new images. Unknown errorCan't delete all images.Can't delete image %s.Can't upload this image to the camera. An error has occurred.Cancel Canon DSLR AutofocusCandlelightCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCanon Auto Exposure ModeCanon CaptureCanon Capture failedCanon EOS CaptureCanon EOS Capture failedCanon EOS Capture failed to release: Card read-only?Canon EOS Capture failed to release: Perhaps mirror up?Canon EOS Capture failed to release: Perhaps no focus?Canon EOS Capture failed to release: Perhaps no more memory on card?Canon EOS Capture failed to release: Unknown error %d, please report.Canon EOS Capture failed: %xCanon EOS Get Changes failedCanon EOS Remote ReleaseCanon EOS Trigger Capture failed: 0x%xCanon EOS ViewfinderCanon EOS ZoomCanon EOS Zoom PositionCanon PowerShot series driver by Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5 additions by Ole W. Saastad Additional enhancements by Holger Klemm Stephen H. WestinCanon Shooting ModeCanon disable viewfinder failedCanon enable viewfinder failedCanon get viewfinder image failedCaptureCapture DelayCapture SettingsCapture Size ClassCapture TargetCapture Transfer ModeCapture size class changedCapture type is not supportedCardCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card name: %s Free space on card: %d kB Card not supported.Card removed during access.Cell Kind PriorityCenter Button Playback ModeCenter Button Shooting ModeCenter Button Zoom RatioCenter SpotCenter Weight AreaCenter WeightedCenter Weighted AverageCenter-WeightedCenter-spotCenter-weightedCenter-weighted Average MeteringCenter-weighted MeteringCenter-weighted averageCenter-weighted meteringCentreCentre Weight AreaCentre-spotChange Camera Mode FailedChange Pic Ctrl ItemChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorChildChildrenChoose Color TemperatureChoose non-CPU lens numberClean Image SensorClean SensorClean data storeClose Media SessionClose upClosest SubjectCloseupCloudyCloudy White Balance BiasColorColor GainColor ModeColor ModelColor SettingsColor SpaceColor TemperatureColor or Function ModeColor sketchColor temperatureCommand can not be cancelled.Command order error.CommanderCommunication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompatibility ModeCompressionCompression SettingConfigurationConfiguration for your FUJI cameraConnected to cameraContinuousContinuous High-speed ShootingContinuous Low SpeedContinuous Low-speed ShootingContinuous ShootingContinuous Shooting Speed HighContinuous Shooting Speed SlowContinuous Speed HighContinuous high speedContinuous low speedContinuous silentContinuous-Servo AFContrastContrast+Contrast-Copy objectCopyrightCopyright (max. 20 characters)Copyright InfoCopyright InformationCorrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not change ISO speedCould not change apertureCould not change beep modeCould not change exposure compensationCould not change flash modeCould not change focus modeCould not change image formatCould not change shooting modeCould not change shutter speedCould not change time of file '%s' in '%s' (%s).Could not change zoom levelCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file '%s' in folder '%s' (error code %i: %s).Could not delete file.Could not detect any cameraCould not detect any camera at port %sCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get information about '%s' (%s).Could not get information about '%s' in '%s' (%s).Could not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Create Wifi profileCreation date: %s, Last usage date: %sCreativeCreative PC-CAM 300 Authors: Till Adam and: Miah Gregory Creative PC-CAM600 Author: Peter Kajberg Current Mode: Camera Mode Current Mode: Playback Mode Current camera time: %04d-%02d-%02d %02d:%02d Free card memory: %d Images on card: %d Free space (Images): %d Battery level: %d %%.Currently, PTP is only implemented for USB and PTP/IP cameras currently, port type %xCustomCustom Functions ExCustom Whitebalance PC-1Custom Whitebalance PC-2Custom Whitebalance PC-3Customise Command DialsDD/MM/YYYYDEPDPOF VersionDark on lightData has been corrupted.Date & TimeDate FormatDate Time Stamp FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDate: %sDay/Month/YearDaylightDaylight White Balance BiasDebugDeepDefault gatewayDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. Delayed RemoteDeleteDelete objectDeleting image %s.Detected a "%s" aka "%s"Detected a '%s'.Development Parameters 1Development Parameters 2Development Parameters 3Device CertificateDevice IconDevice VersionDevice does not support setting object protection.Device failed to set object protection to %dDigita Johannes Erdfelt Digital Camera Layout (DCIM)Digital ZoomDigital Zoom MagnificationDigital macroDigital zoomDimera 3500 ver. %s %d/%d %d:%d. %d pictures used of approximately %d (high res) or %d (low res). Camera features: %s, %s, %s, %s. Flash is %s, is %s and is %s. Resolution is set to %s. Camera is %s powered %s. Direct PrintDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisable trusted file operationsDisconnecting camera.Disp AvDisp Av MaxDisplayDisplay Formats: Distant ViewDo not display TV menuDon't know how to handle camera->port->type value %i aka 0x%x in %s line %i.Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy to port your driver on this cam! Download program for GrandTek 98x based cameras. Originally written by Chris Byrne , and adapted for gphoto2 by Lutz Mueller .Protocol enhancements and postprocessing for Jenoptik JD350e by Michael Trawny . Bugfixes by Marcus Meissner .Download program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading %s...Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...Drive Canon DSLR AutofocusDrive Canon DSLR Manual focusDrive ModeDrive Nikon DSLR AutofocusDrive Nikon DSLR Manual focusDriverDriver SettingsDriver framework written by Lutz Mueller . This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro "itojun" Itoh . Integration of QVplay by Michael Haardt .Dual IrisDuskDusk/DawnDust Reference ErrorDynamic AF AreaDynamic Area (21)Dynamic Area (51)Dynamic Area (9)Dynamic-area AFDynamic-area AF with closest subject priorityEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.ESPESSIDEV StepEVF ModeEZoom Size of TeleEZoom Start PositionEconomyEffect ModeEffectsEmergencyEmptyEnable CopyrightEnable Image CommentEnable trusted file operationsEncryptionEncryption key (hex)End trusted application sessionEnglishEnhancedErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationError waiting for ACK during initialization, retryingEvaluativeEvaluative MeteringEvent Emulate ModeEverywhereExecute predefined command with parameter values.Expected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.ExposureExposure Aperture LockExposure Base CenterExposure Base MatrixExposure Base SpotExposure Bias CompensationExposure Bracketing ProgramExposure Bracketing StepExposure CompensationExposure Compensation (EV)Exposure Delay ModeExposure Display StatusExposure ISO StepExposure Index (film speed ISO)Exposure Indicate LightupExposure Indicate StatusExposure LockExposure MeterExposure MeteringExposure Metering ModeExposure ProgramExposure Program ModeExposure StepExposure TimeExposure compensationExposure compensation changedExposure compensation: %d Exposure compensation: %s Exposure delay modeExposure level on previewExternal FlashExternal Flash AttachedExternal Flash CompensationExternal Flash ModeExternal Flash SortExternal Flash StatusExternal syncExtra highF-NumberF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d FNumber LockFV LockedFV lockFace-priority AFFactory DefaultFaithfulFar %dFar 1Far 2Far 3Far sceneFast FilesystemFast shutterFileFile '%s' could not be found in folder '%s'.File '%s/%s' does not exist.File Deletion, File Number SequencingFile Upload File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.Filename ConflictsFilename InvalidFilename RequiredFiletype: FlashPix (Filetype: JPEG (Fill flashFinder ISO DisplayFineFireworksFirmwareFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware VersionFirmware version: %d.%02d Firmware: %d.%d FisheyeFixedFlashFlash ChargedFlash Command A CompensationFlash Command A ModeFlash Command A ValueFlash Command B CompensationFlash Command B ModeFlash Command B ValueFlash Command ChannelFlash Command Self CompensationFlash Command Self ModeFlash Command Self ValueFlash Commander ModeFlash Commander PowerFlash CompensationFlash Exposure CompensationFlash Level LockFlash LockFlash MRepeat CountFlash MRepeat IntervalFlash MRepeat ValueFlash ModeFlash Mode Commander PowerFlash Mode Manual PowerFlash OffFlash OpenFlash Quantity CountFlash SettingFlash SettingsFlash Shutter SpeedFlash SignFlash Sync. SpeedFlash White Balance BiasFlash autoFlash mode changedFlash mode: auto, Flash mode: force, Flash mode: off Flash offFlash onFlash onlyFlash/apertureFlash/speedFlash/speed/apertureFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFlexible ProgramFlicker ReductionFlourescentFlourescent TypeFlourescent-1-home-6700KFlourescent-2-desk-5000KFlourescent-3-office-4200KFluorescentFluorescent HFluorescent Lamp 1Fluorescent Lamp 2Fluorescent Lamp 3Fluorescent Lamp 4Fluorescent Lamp 5Fluorescent White Balance BiasFluorescent-1-home-6700KFluorescent-2-desk-5000KFluorescent-3-office-4200KFluorescent: Cold WhiteFluorescent: Day WhiteFluorescent: DaylightFluorescent: Warm WhiteFocal LengthFocal Length DenominatorFocal Length MaximumFocal Length MinimumFocal Length TeleFocal Length WideFocusFocus AreaFocus Area WrapFocus Area ZoneFocus AreasFocus DistanceFocus InfoFocus LockFocus MeteringFocus Metering ModeFocus ModeFocus Mode 2Focus Point BrightFocus mode changedFocus positionFocusing PointFocusing Point on Center Only, AutoFocusing Point on Center Only, ManualFocusing error.Folder '%s' only contains %i files, but you requested a file with number %i.FoliageFoodFor bulb capture to work, make sure the mode dial is switched to 'M' and set 'shutterspeed' to 'bulb'.For cameras with S&Q Technologies chip. Should work with gtkam. Photos will be saved in PPM format. All known S&Q cameras have two resolution settings. What those are, will depend on your particular camera. A few of these cameras allow deletion of all photos. Most do not. Uploading of data to the camera is not supported. The photo compression mode found on many of the S&Q cameras is supported, to some extent. If present on the camera, video clips are seen as subfolders. Gtkam will download these separately. When clips are present on the camera, there is a little triangle before the name of the camera. If no folders are listed, click on the little triangle to make them appear. Click on a folder to enter it and see the frames in it, or to download them. The frames will be downloaded as separate photos, with special names which specify from which clip they came. Thus, you may freely choose to save clip frames in separate directories. or not. ForceForce Flash Format card and set album name.Format compact flashFormat storageFrames Left: %i Frames Taken : %4d Frames Taken: %i FrenchFriendly Device NameFront-curtain syncFullFull ImageFull ManualFull View File FormatFull-time-servo AFFunction Button 2Functional ModeFunctional Mode: 0x%04x GeneralGeneric FlatGeneric HierarchicalGermanGet Next Data BlockGet Registration ResponseGet WMDRM-ND License ResponseGet WMDRM-PD Application ResponseGet license stateGet meter challengeGet meter responseGet secure time challengeGet secure time responseGet sync listGet transferable playlist typesGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.Gray scaleGrayscaleGreenGroup DynamicGroup PTN TypeHDR High DynamicHDR ModeHDR SmoothingHand-held TwilightHardware ErrorHi 1Hi 2HighHigh (1152 x 872)High (good quality)High 2High ISO Noise ReductionHigh ISO noise reductionHigh controlHigh keyHigh sensitivityHigh-Speed ShutterHighlight active focus pointHoldHost Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?Hue AdjustmentHyPictI/O in progressIDIP address (empty for DHCP)ISOISO AutoISO Auto Hi LimitISO Auto High LimitISO SpeedISO speed changedIconsIdleIllegal parameter.Illum SettingImageImage %s is delete protected.Image & SoundImage AdjustmentImage CommentImage Comment EnableImage Comment StringImage CompressionImage FormatImage Format CFImage Format Ext HDImage Format SDImage ModeImage QualityImage Quality 2Image ReviewImage RotationImage Rotation FlagImage SettingsImage SizeImage StabilizationImage format changedImage height: %d Image number not valid.Image protected.Image sizeImage size: %d Image type %d is not supported by this camera !Image type %d not supportedImage type is not supportedImage width: %d Img Conf TimeImmediateIn useIncandescentIndicator DisplayIndoorInfinityInfinity/Fish-eyeInfo Disp SettingInfo Display Error StatusInformationInformation on STV0680-based camera: Information regarding cameras with ID 0x2770:0x9153. We do not recommend the use of a GUI program to access this camera, unless you are just having fun or trying to see if you can blow a fuse. For production use, try gphoto2 -P from the command line. Note: it is not possible to download video clips. Initial camera response '%c' unrecognizedInitializing CameraInitiate captureInternal RAMInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal error looking for camlibs. (path names too long?)Internal memory: %d MB total, %d MB free. InvalidInvalid ISO speed settingInvalid StatusInvalid Value ( %d ) Invalid aperture settingInvalid beep mode settingInvalid capture size class settingInvalid exposure compensation settingInvalid flash mode settingInvalid focus mode settingInvalid image format settingInvalid shooting mode settingInvalid shutter speed settingIris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JD11 ConfigurationJPEGJPEG BasicJPEG Compression PolicyJPEG FineJPEG NormJPEG NormalJapaneseKeep filename on uploadKids and petsKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BacklightLCD Backlight and Info DisplayLCD BrightnessLCD IlluminationLCD ModeLCD Off TimeLED ModeLG GSM generic driver Guillaume Bedot LandscapeLanguageLargan driver Hubert Figuiere LargeLarge Fine JPEGLarge Normal JPEGLeftLens Cover PresentLens Focal Length (Non CPU)Lens IDLens Maximum Aperture (Non CPU)Lens ModeLens NameLens SortLens TypeLens direction does not match flash light Lens is not connected LightLight MeterLight on darkLight too dark.List Wifi profilesList all filesListing files in '%s'...Listing folders in '%s'...Lithium IonLive View AF AreaLive View AF FocusLive View AF ModeLive View Drive ModeLive View Image Zoom RatioLive View ModeLive View Prohibit ConditionLive View StatusLoading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!LockLogitech Clicksmart 310 driver Theodore Kilgore Long Exp Noise ReductionLong Exposure Noise ReductionLong shutterLooking for camera ...Looks like a modem, not a cameraLosslessLossyLowLow (576 x 436)Low (best quality)Low 2Low LightLow Speed SynchronizationLow contrastLow keyLow sensitivityLow sharpeningLow-Speed ShutterLow-speed shutter function not availableLower case letters in %s not allowed.MM-DEPM3U PlaylistM4AMF (fixed)MF (selection)MHT Compiled HTML DocumentMM/DD/YYYYMPL PlaylistMTR > UnderM_DEPMacroManagedManualManual 2Manual FocusManual Mode BracketingManual Movie SettingManual Set Lens NumberManual focusManufacturer: %s Mars MR97310 camera library Theodore Kilgore Mars MR97310 camera. There is %i photo in it. Mars MR97310 camera. There are %i photos in it. MatrixMatrix meteringMatthew G. Martin Based on fujiplay by Thierry Bousch Max. Aperture at Max. Focal LengthMax. Aperture at Min. Focal LengthMax. Focal LengthMaximalMaximum Aperture at Focal Length MaximumMaximum Aperture at Focal Length MinimumMaximum ShotsMaximum continuous releaseMaximum number of Images: %d Media CardMedia Card GroupMedia CastMediumMedium (1152 x 872)Medium (better quality)Medium 1Medium 2Medium 3Medium Fine JPEGMedium HighMedium LowMedium Normal JPEGMedium highMedium sensitivityMemory Left: %i bytes Memory cardMemory card status (%d): %s Memory in camera: %d Mbit. Menu Bank Name AMenu Bank Name BMenu Bank Name CMenu Bank Name DMenus and PlaybackMetadata only supported for MTP devices.Meter Off TimeMetering ModeMf Drive Step EndMf Drive Step InsufficiencyMicrophoneMicrophone offMicrosoft Excel Spreadsheet (.xls)Microsoft Powerpoint (.ppt)Microsoft Word DocumentMin. Focal LengthMiniature effectMinimalMinimum Shutter SpeedMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Mirror UpMirror Up SequenceMisc exposure/lens settingsMissing NumberMl Spot PositionMlSpotPosAfLinkMlSpotPosCenterModel IDModel: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Model: %s Capacity: %i Mb Power: %s Auto Off Time: %i min Mode: %s Images: %i/%i Date display: %s Date and Time: %s Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s Modeling FlashModelling FlashModerateMonitorMonitor Off DelayMonochromeMonth/Day/YearMove objectMovieMovie CaptureMovie Card SlotMovie MicrophoneMovie QualityMovie ResolutionMovie Screen SizeMovie SoundMovie VoiceMulti Frame Noise ReductionMulti SpotMulti spotMulti-Spot MeteringMulti-spotMultiple Focusing Points (Center)Multiple Focusing Points (Left)Multiple Focusing Points (No Specification), ManualMultiple Focusing Points (Right)Multiple Focusing Points, AutoMultiselectorMup Mirror upMustek MDC-800 gPhoto2 Library Henning Zabel Ported to gphoto2 by Marcus Meissner Supports Serial and USB Protocols.MyColorsNEF (Raw)NEF+BasicNEF+FineNEF+NormalNIKON Auto Bracketing SetNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName '%s' (%li characters) too long, maximum 30 characters are allowed.Name PrefixName to set on card when formatting.Near %dNear 1Near 2Near 3Network maskNeutralNextNickel cadmiumNickel hydrideNight LandscapeNight PortraitNight SceneNight ViewNight VisionNight landscapeNight sceneNight snapshotNikon Capture 1Nikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. Nikon Exposure TimeNikon Flash ModeNikon ViewfinderNikon autofocus drive did not focus.Nikon disable liveview failedNikon enable liveview failedNikon manual focus at limit.Nikon manual focus stepping too small.Nikon manual focus works only in LiveView mode.NoNo CF Card ReleaseNo Compact Flash Card detected No Dual IrisNo EXIF data available for %s.No File Deletion, No File Upload No FlashNo Open Capture, No Power LightNo Resolution SwitchNo SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card in camera. No card present.No memory card presentNo reason availableNo response from cameraNo space available to capture new images. You must delete some images.No space left on card.No vendor specific capture NoneNone selectedNormalNormal Normal AF OnNormal-area AFNot FullNot enough free spaceNot enough memory available on the memory cardNot in LiveviewNot in fill modeNot readyNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOS error in camera communicationOffOfficeOlympus 750 Ultra Zoom: (1) Olympus 750UZ has a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both the 'OK' and 'quickview' buttons until the camera control menu appears. Set it to control mode. (2) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Olympus E XML Capture Olympus wrapped XML support is currently only available with libxml2 support built in.OnOn + Red Eye SuppressionOn screen tipsOn, red-eye reductionOne ShotOne-push AutomaticOnly root folder is supported - you requested a file listing for folder '%s'.Open Capture, Open Media SessionOperation ModeOperation RefusedOperation cancelledOptimal qualityOptimize ImageOrientationOtherOther PTP Device PropertiesOther SettingsOther command executing.Out of FocusOut of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner NameOwner name changedPPALPCPLS PlaylistPTP Access DeniedPTP Cancel RequestPTP Capture Already TerminatedPTP Data ExpectedPTP Device BusyPTP Device Prop Not SupportedPTP General ErrorPTP I/O ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Property 0x%04xPTP Response ExpectedPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Standard Version: %d.%d PTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP TimeoutPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePTP VersionPTP2 driver (c) 2001-2005 by Mariusz Woloszyn . (c) 2003-%d by Marcus Meissner . This driver supports cameras that support PTP or PictBridge(tm), and Media Players that support the Media Transfer Protocol (MTP). Enjoy!Packet was rejected by camera. Please contact %s.Pan FocusPanFocusPanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic DC1580 gPhoto2 library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic introduced image capturing technology called PHOTOSHOT for the first time, in this series of Palmcorders. Images are stored in JPEG format on an internal flashcard and can be transferred to a computer through the built-in serial port. Images are saved in one of two resolutions; NORMAL is 320x240 and FINE is 640x480. The CCD device which captures the images from the lens is only 300K and thus produces only low quality pictures.Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk PanoramaParameter 1Parameter 2Parameter 3Parameter SetParsing the value of widget '%s' / 0x%04x failed with %d.PartialPartial MeteringParty/IndoorPath not absolutePerceived Device TypePersistent SettingsPet PortraitPhoto EffectPhoto Info. PlaybackPhoto in moviePhotos on camera: %d Picture EffectPicture Frame ConfigurationPicture SettingsPicture StylePicturesPictures in camera: %d PlayPlay modePlaybackPlayback Container IndexPlayback ObjectPlayback PositionPlayback RatePlaysForSure IDPort speedPortraitPowerPower DownPower SavingPower WindPower down devicePre-Capture DelayPresetPreset Custom 1Preset Custom 2Preset Custom 3Preset Custom 4Preset Custom 5Press FullPress HalfPreviewPreview ButtonPreview Button 2Preview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProcess WFC ObjectProduct ID: %02x%02x Profile nameProhibit Flash QualityQuick ResponseQuick Response RemoteQuick Review TimeQuiet ReleaseRAWRAW + JPEG BasicRAW + JPEG FineRAW + JPEG NormalRAW + Large Fine JPEGRAW + Large Normal JPEGRAW + Medium Fine JPEGRAW + Medium Normal JPEGRAW + Small Fine JPEGRAW + Small Normal JPEGRAW 2RAW+JPEGRGB GainRTC Status: %d Raw Bit ModeRaw CompressionRead Only with Object deletionRead-OnlyRead-WriteRead-only file attributes like width and height can not be changed.ReadyRear Curtain SyncRear Curtain Sync + Slow SyncRear-curtain syncRear-curtain with slow syncReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRecording DestinationRecording MediaRedRed Eye SuppressionRed eye flashRed-eye ReductionRed-eye Reduction + Slow SyncRed-eye automaticRed-eye fillRed-eye fill flashRed-eye reductionRed-eye reduction with slow syncReleaseRelease + FocusRelease FullRelease HalfRelease ModeRelease without CF cardRemoteRemote API VersionRemote Mirror UpRemote ModeRemote TimeoutRemovable RAM (memory card)Removable ROMRepeatingReport Acquired ItemsReport Added/Deleted ItemsRequested information about picture %i (= 0x%x), but got information about picture %i backReset Bank 0Reset Menu BankReset deviceReset focus point to centerResetting protocol...ResolutionResolution SwitchResolution plus SizeReverse Command DialReverse IndicatorsRevocation InfoRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. RightRotation AngleRotation FlagRotation SceneSD Card ID: %s SD memory: %d MB total, %d MB free. SDRAMSDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d SDRamST2205 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.ST2205 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Samsung PlaylistSaturationSceneScene ModeSectionSecure TimeSelect ColorSelective colorSelf TimeSelf TimerSelf Timer (next picture only)Self Timer DelaySelf Timer Shot NumberSelf Timer TimeSelf test deviceSelf-timerSelftimer 10sSelftimer 2sSelftimer DelaySend Registration RequestSend WMDRM-ND License RequestSend WMDRM-PD Application RequestSend WMDRM-PD CommandSend WMDRM-PD RequestSend meter challenge querySend objectSending data...SensitivitySensor ID: %d.%d SepiaSequence 9Serial NumberSerial Number: %s Session Initiator InfoSession-persistent SettingsSet Current Time PositionSet Nikon Autofocus areaSet Nikon Control ModeSet Property Not SupportedSet clock in cameraSet license responseSetting 4Setting 5Setting 6Setting 7ShadeShadowShady White Balance BiasShall the camera beep when taking a picture?SharpSharpeningSharperSharpnessShooting BankShooting Bank Name AShooting Bank Name BShooting Bank Name CShooting Bank Name DShooting ModeShooting SpeedShooting modeShooting mode changedShot SettingsShutdownShutter CounterShutter SpeedShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed 2Shutter Speed BulbShutter Speed microseconds (0 auto)Shutter speedShutter speed changedShutter/AF-ONSiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SilhouetteSingleSingle AreaSingle ShotSingle frameSingle silentSingle-Frame ShootingSingle-Servo AFSingle-area AFSingle-servo AFSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Size PrioritySize Quality ModeSize of Input Data to CameraSize of Output Data from CameraSkip to next position in playlistSkylightSlide Show IntervalSlot 2 Save ModeSlowSlow Shutter SettingSlow SyncSlow shutterSlow syncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SmallSmall Fine JPEGSmall Normal JPEGSmoothSmoothingSnowSoftSofterSoftware Rev.: %s Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to the gphoto developer mailing list (in English) Some notes about Olympus cameras (and others?): (1) Camera Configuration: A value of 0 will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch to this mode, turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you cannot use the camera's buttons. If you end up in this state, you should reconnect the camera to the PC and switch LCD to 'Off'.Some notes about Olympus cameras: (1) Camera Configuration: A zero value will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Sonix camera library Theodore Kilgore Sonix camera. There is %i photo in it. Sonix camera. There are %i photos in it. Sony CaptureSony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners Sorry, initializing your camera did not work. Please report this.Sorry, the property '%s' / 0x%04x is currently ready-only.Sorry, your Canon camera does not support Canon Capture initiationSorry, your Canon camera does not support Canon EOS CaptureSorry, your Canon camera does not support Canon Viewfinder modeSorry, your Canon camera does not support Canon captureSorry, your Nikon camera does not seem to return a JPEG image in LiveView modeSorry, your Nikon camera does not support LiveView modeSorry, your camera does not support Nikon captureSorry, your camera does not support generic captureSoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSportsSports ActionSpotSpot MeteringSpot Metering Interlocked with AF FrameSpot Metering ModeSpot meteringSpot metering interlocked with AF frameSpot-AFStandardStandard Development ParametersStart movie recordingStartupStartup and ShutdownStep #2 of initialization failed! (returned %i bytes, expected %i). Camera not operationalStep #2 of initialization failed: ("%s" on read of %i). Camera not operationalStep #3 of initialization failed! (returned %i, expected %i). Camera not operationalStep #3 of initialization failed: "%s" on read of %i. Camera not operationalStep #3 of initialization failed: "%s" on write of %i. Camera not operationalStep #4 failed (returned %i, expected %i). Camera not operationalStep #4 failed: "%s" on read of %i. Camera not operationalStill Capture ModeStill ImageStrobe error.Subject-tracking AFSummary for Mustek MDC800: SunsetSuper macroSuperFineSupported MTP Object Properties: Supported Thumb SizeSwitching Camera OffSynchronization PartnerSynchronize camera date and time with PCSynchronize frame data and time with PCSystem error.TFTTFT + PCTIFF (RGB)TTLTVTV Lock SettingTV Output FormatTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera could not be contacted. Please make sure it is connected to the computer and turned on.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support getting storage informationThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The property '%s' / 0x%04x was not set (0x%04x: %s)The property '%s' / 0x%04x was not set (0x%04x: %s).The requested port type (%i) is not supported by this driver.There are still files in folder '%s/%s' that you are trying to remove.There are still subfolders in folder '%s/%s' that you are trying to remove.There are two resolution settings, 352x288 and 176x144. Photo data is in JPEG format when downloaded and thus has no predetermined size. Therefore, the advertised maximum number of photos the camera can hold must be understood as an approximation. All gphoto2 options will work, except for the following which the hardware will not support: Deletion of individual or selected photos (gphoto2 -d) Capture (gphoto2 --capture or --capture-image) However, capture is possible using the webcam interface, supported by the spca50x kernel module. GUI access using gtkam has been tested, and works. However, the camera does not produce separate thumbnails. Since the images are in any event already small and of low resolution, the driver merely downloads the actual images to use as thumbnails. The camera can shoot in 'video clip' mode. The resulting frames are saved here as a succession of still photos. The user can animate them using (for example) ImageMagick's 'animate' function. For more details on the camera's functions, please consult libgphoto2/camlibs/clicksmart310/README.clicksmart310. There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.There is space for another %d low compressed %d medium compressed or %d high compressed pictures This camera can not capture previews.This camera can not capture.This camera can not trigger capture.This camera contains a Jeilin JL2005%c chipset. The number of photos in it is %i. This camera contains a Jeilin JL2005A chipset. The number of photos in it is %i. This camera does not provide a manual.This camera does not provide any configuration options.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This driver supports cameras with Jeilin JL2005B or C or D chip These cameras do not support deletion of photos, nor uploading of data. If present on the camera, video clip frames are downloaded as consecutive still photos. For more details please consult libgphoto2/camlibs/README.jl2005c This driver supports cameras with Jeilin jl2005a chip These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README.jl2005a This driver supports cameras with Mars MR97310 chip (and direct equivalents ??Pixart PACx07??). These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. Photo data processing for Argus QuickClix is NOT SUPPORTED. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README. This driver supports some cameras that use the Sonix sn9c2028 chip. The following operations are supported: - thumbnails for a GUI frontend - full images in PPM format - delete all images - delete last image (not all of the Sonix cameras can do this) - image capture to camera ( ditto ) If present on the camera, video clip frames are downloaded as consecutive still photos or as AVI files, depending on the model. Thumbnails for AVIs are still photos made from the first frame. A single image cannot be deleted unless it is the last one. This is the driver for Canon PowerShot, Digital IXUS, IXY Digital, and EOS Digital cameras in their native (sometimes called "normal") mode. It also supports a small number of Canon digital camcorders with still image capability. It includes code for communicating over a serial port or USB connection, but not (yet) over IEEE 1394 (Firewire). It is designed to work with over 70 models as old as the PowerShot A5 and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of 2005. It has not been verified against the EOS 1D or EOS 1Ds. For the A50, using 115200 bps may effectively be slower than using 57600 If you experience a lot of serial transmission errors, try to have your computer as idle as possible (i.e. no disk activity) This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.This preview doesn't exist.ThumbnailThumbnail height: %d Thumbnail size: %d Thumbnail width: %d Tilt-ShiftTime formatTime: %a, %d %b %Y %T TimelapseTimelapse IntervalTimelapse NumberTimeout even after 2 retries. Please contact %s.TimerTimer (Single) ShootingTimer + RemoteTimer 10 secTimer 2 secTone CompensationToo brightToo darkToo many retries failed.TopTopfield TF5000PVR Marcus Meissner Library to download / upload files from a Topfield PVR. Ported from puppy (c) Peter Urbanec Toshiba David Hogue Toshiba pdr-m11 driver. Total flashes fired: %d Total pictures captured: %d, Flashes fired: %d Total pictures taken: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Trying to contact camera...Tune Colour TemperatureTune Preset 0Tune Preset 1Tune Preset 2Tune Preset 3Tune Preset 4TungstenTungsten White Balance BiasTurbo modeTvType of SlideshowU1U2UI LanguageUI LockUILockTypeUNIX TimeUSB 1.1USB 2.0USB SpeedUnassignedUndefinedUndefined AudioUndefined Calendar ItemUndefined CollectionUndefined ContactUndefined DocumentUndefined MessageUndefined PTP PropertyUndefined VideoUndefined Windows ExecutableUnder > MTRUnderwaterUnknownUnknown %dUnknown CommandUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown flash mode %d, Unknown modelUnknown model "%s"Unknown valueUnknown value %04dUnknown value %04xUnknown value 0x%04xUnknown zoom mode %d Unknown(%04x)Unknown: 0x%04x Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. UnusedUpdate device firmwareUpload URLUpload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...Upper 1Upper 2User canceled downloadUser defined 1User defined 2User defined 3Vendor ExtensionVendor Extension Description: %s Vendor Extension ID: 0x%x (%d.%d) Vendor ID: %02x%02x Version: Version: %s Vertical AF OnVideo ModeVideo OUTVideo OutViewfinder GridViewfinder Grid DisplayViewfinder virtual horizontVignette ControlVividVolatile SettingsVolume LevelWB bracketingWEP 128-bitWEP 64-bitWIFI ESSIDWIFI channelWIFI profilesWPL PlaylistWaiting for completion...Waiting...Warning DisplayWarning Level 0Warning Level 1Warning StatusWarning in canon_usb_set_file_attributes: canon_usb_dialogue returned error status 0x%08x from cameraWaterWe expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite Balance Bias Preset 0White Balance Bias Preset 1White Balance Bias Preset 2White Balance Bias Preset 3White Balance Bias Preset 4White Balance Bias Preset NrWhite Balance Bracket ProgramWhite Balance Bracket StepWhite Balance Colour TemperatureWhite Balance Preset Name 0White Balance Preset Name 1White Balance Preset Name 2White Balance Preset Name 3White Balance Preset Name 4White Balance Preset NumberWhite Balance Preset Value 0White Balance Preset Value 1White Balance Preset Value 2White Balance Preset Value 3White Balance Preset Value 4White BoardWhite balanceWhite boardWhite levelWhiteBalanceWhiteBalance Adjust AWhiteBalance Adjust BWhiteBalance X AWhiteBalance X BWhitebalance Reset ErrorWideWide-area AFWindows Image FormatWriteWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.XMLDocumentYYYY/MM/DDYear/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.You have to set the port prior to initialization of the camera.You must be in record mode to capture images.You need to specify a folder starting with /store_xxxxxxxxx/Your Logitech Clicksmart 310 has %i picture in it. Your Logitech Clicksmart 310 has %i pictures in it. Your USB camera has a S&Q chipset. The total number of pictures taken is %i Some of these could be clips containing several frames Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i Your USB camera is an iClick 5X. The total number of pictures taken is %i Your USB camera seems to be a LG GSM. Firmware: %s Firmware Version: %s Your USB picture frame has a AX203 chipset Your USB picture frame has a ST2205 chipset Your camera only supports deleting the last file on the camera. In this case, this is file '%s'.Zone Focus (Close)Zone Focus (Close-up)Zone Focus (Far)Zone Focus (Medium)Zone Focus (Reserved 1)Zone Focus (Reserved 2)Zone Focus (Reserved 3)Zone Focus (Reserved 4)Zone Focus (Very Close)ZoomZoom (in millimeters)Zoom level changedZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autoauto + red eye suppressionbatteryblack & whitebulbcamera inactive for > 9 seconds, re-initing. cannot be queried. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_int_capture_image: initial canon_usb_list_all_dirs() failed with status %licanon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: Reached end of packet while examining the first direntcanon_int_list_directory: truncated directory entry encounteredcanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Initial dirent packet too short (only %i bytes)canon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_body_id: Unexpected data length returned (%i bytes, expected %i)canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)canon_usb_lock_keys: Unexpected length returned from "lock keys" function (%i bytes, expected %i)canon_usb_set_file_attributes: canon_usb_dialogue failedcanon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)colorcoolshot library vcould not change owner namecould not set timeeconomyexternallyfill infinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)high compression, hp215 Marcus Meissner Driver to access the HP Photosmart 215 camera. Merged from the standalone hp215 program. This driver allows download of images and previews, and deletion of images. iClick 5X driver Theodore Kilgore iTTLin fill modeinfiniteinternallyjamcam library vjl2005a camera library Theodore Kilgore jl2005bcd camera library Theodore Kilgore lock keys failed.losslesslow (320x240)low compression, mRAWmRAW + Large Fine JPEGmRAW + Large Normal JPEGmRAW + Medium Fine JPEGmRAW + Medium Normal JPEGmRAW + Small Fine JPEGmRAW + Small Normal JPEGmedium compression, menuno status reported.nonenormalnot available: %soffonon + red eye suppressionon batterypccam600 init: Unexpected error: gp_port_read returned %d instead of %dpccam600_close: return value was %d instead of %dpccam600_get_file:got index %d but expected index > %dpccam600_init: Expected %d blocks got %dpccam600_init: Expected > %d blocks got %dplaypower OKpower badread onlyreadwritereadyrecordrecursive calls are not supported by the sierra driver! Please contact %s.red eye flash off. red eye flash on. red eye suppressionsRAWsRAW + Large Fine JPEGsRAW + Large Normal JPEGsRAW + Medium Fine JPEGsRAW + Medium Normal JPEGsRAW + Small Fine JPEGsRAW + Small Normal JPEGsRGBsRGB (nature)sRGB (portrait)sierra SPARClite library Scott Fritzinger Support for sierra-based digital cameras including Olympus, Nikon, Epson, and Pentax. Thanks to Data Engines (www.dataengines.com) for the use of their Olympus C-3030Z for USB support implementation.spca50x library vsq905 generic driver Theodore Kilgore sq905C generic driver Theodore Kilgore standardsuperfinesx330z is USB onlytime setunable to guess initial CRC value undefinedunexpected datatype %iunknown (0x%02x)unknown compression %d, unknown resolution %d) vCalendar1vCalendar2vCard2vCard3warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2 master Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2015-10-03 23:37+0200 Last-Translator: Christian Kirbach Language-Team: gnome-de Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.8.4 Plural-Forms: nplurals=2; plural=(n != 1); X-Poedit-SourceCharset: UTF-8 Zugriffsmöglichkeiten: %s Canon WiFI Unterstützung Dateien Download, Typ des Dateisystems: %s Freier Platz (Bytes): %llu (%lu MB) Freier Speicher (Bilder): %d Generische Bild Aufnahme, Maximale Kapazität: %llu (%lu MB) Nikon WiFi Unterstützung Keine Aufnahme von Bildern, Speichertyp: %s Beschreibung des Speichergeräts: %s Label des Speichergerätes: %s Kameraidentifizierung: Modell: %s Eigentümer: %s Energiestatus: %s Flash Disk-Information: %s Zeit: %s Aufnahmeformate: Fähigkeiten des Geräts: Properties des Geräts: Informationen über Speichermedium: Laufwerk %s %11s bytes gesamt %11s bytes verfügbar Seriennummer: %s Version: %s (Batterie ist zu %d%% voll)PTP Fehler %04x beim Abfragen Vorhandener Speicher: %8d Byte(s). Freier Speicher: %8d Byte(s). Anzahl Dateien: %dPTP Fehler %x beim Abfragen nicht ausgelesen. %.0f mm%.1f Blendenstufen%0.4fs%d %d/%d%d Mehr Bild Rauschunterdrückung%d mm%d/%d%f%i (unbekannt)%i Bytes eines unbekannten Bildformates erhalten. Bitte schreiben Sie an %s (auf Englisch) für Unterstützung.%i Bilder konnten nicht gelöscht werden, da sie geschützt sind%lld (unbekannt)%s (Zeit am PC %s%i Sekunden)%sCanon EOS Auslöser%sNikon Aufname 2%sNikon Aufnahme 3(Traveler) SX330z Bibliothek (Und andere ALDI-Kameras). Auch andere Hersteller, wie Jenoptik, SkanHex, Maginon sollten funktionieren. Bitte senden sie Fehler und Kommentare. Dominik Kuhlen * Bildstörungen oder Probleme mit der Kommunikation sind häufig auf einen niedrigen Batteriestand zurückzuführen. * Bilder, die über Fernsteuerung aufgenommen wurden werden in einem temporären RAM gespeichert, nicht auf der Flash-Karte. * Die Belichtungskontrolle beim Bildaufnehmen kann manuell eingestellt, oder automatisch von der Aufnahmevorschau-Funktion gesetzt werden. * Die Bildqualität ist im Moment geringer als sie sein könnte. *UNBEKANNT*+NEF (Raw)-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 (Kurz)1 EV1 fps1 Minute1 Minute1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/250s (Auto FP)1/25s1/2s1/301/30s1/3200s1/320s1/320s (Auto FP)1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 Minuten10 Minuten10 mm10 Sekunden100%10s11 fps1152 x 86412 mm1280 x 96013s1515 Minuten15 Minuten15s16 Sekunden16:91s1x22 EV2 fps2 Sekunden2.02.0 m2.5s2.5x20 Sekunden20s21 Punkte25%25s29 mm2s2x3 (Normal)3 EV3 fps3030 Minuten30 Sekunden30s34 mm3:23D Verfolgung3s3x44 fps4 Sekunden41 mm4s4x5 (lang)5 fps5 Minuten5 Minuten5 Sekunden50 Hz50%51 mm51 Punkte51 Punkte (3D)58 mm5s5x6 fps6 mm6 Sekunden60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 Sekunden8s8x9 pfs9 Punkte9xA-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)NetzNetzanschlussNetzadapter Netzanschluss angeschlossen. Netzanschluss nicht angeschlossen ADL AbstufungAE & BlitzAE Locknur AE LockAE Lock anAE Lock haltenAE LOck (Löschen beim Auslösen)AE Lock haltennur AE Locknur AEAE-L/AF-L ModusAutomatische BelichtungsnachführungAE/AF LockAE/AF LockAEAF Lock Knopf 2AEB automatische BelichtungskorrekturAF AktivierungAF Bereich AufhellungAF-BereichspunktAutofokus HilfslichtAF Signalton ModusAutofokus EntfernungAF LCD Top Modus 2AF Lock haltenAF-Sperre AnNur AF Locknur AF LockAF Lock anAF ModusAF anAF-Einschaltknopfnur AF LockAF-AAF-CAF-C Modus PrioritätAF-ANAF-SAF-S Modus PrioritätAF11AF51AI FokusAI ServoASIC-Revision: %d.%d ASX WiedergabelisteAUTOAVAV Lock EinstellungenAV MaxAV OpenA_DEPÜber Konica Q-M150: Diese Kamera erlaubt keine Einstellungen per Computer. In der Konfiguration kann man daher nur sehen, wie die Kamera eingestellt ist, aber nichts verändern. Wenn Sie irgendwelche Probleme mit diesem Treiber haben, schicken Sie bitte eine E-Mail an die Autoren dieses Treibers. Abstraktes Musik AlbumAstrakte Audio WiedergabelisteAbstrakte Audio Video WiedergabelisteAbstrakter KalendereintragAbstrakte Produktion mit KapitelnAbstrakter AdressbucheintragAbstrakte Addressen GruppeAbstraktes DokumentAbstraktes Bild AlbumAbstrakter MediaCastAbstrakte NachrichtAbstrakter Nachrichten OrdnerAbstraktes Multimedia AlbumAbstraktes Video AlbumAstrakte Video WiedergabelisteZugriffsmodusAktionAktiver AF SensorAktives D-LightingAktiviertes Pic Ctrl ItemAd-hocAdc65 Benjamin Moos AdobeRGBAbbruch des erweiterten TransfersAlbumnameAlkalium ManganEin Fehler trat in der IO-Bibliothek auf (»%s«): %sEin unbekannter Fehler trat auf. Bitte kontaktieren Sie %s (auf Englisch).NeigungAnti-RotaugenAnti-Rotaugen-FillerÜberallGenerischer Aox Treiber Theodore Kilgore BlendeBlendeneinstellungBlendeneinstellungenBlende geändertApplikationsmodusApplikationsmodus 0Applikationsmodus 1KünstlerKünstlernameSeitenverhältnisWeise Func. Button zuWeise Func. Button zuWeise Vorschau Knopf zuAutofokus HilfslichtAudible.com CodecAutoAutomatische Rote-Augen-VermeidungAutomatische BlendeAutomatischer AbstufungsselektionAutomatisches DX CropAutomatische Verzerrungs KontrolleAutomatische Belichtungs Abstufung AnzahlAutomatische Belichtungs AbstufungAuto FPAutofokusbereichAutofokusmodus 2Auto ISORauschunterdrückung bei Auto ISO Mehr BildAuto ISO P/A/DVP EinstellungZeit für automatische Sensor AbschaltungAutom. Abschaltung (nicht am PC) (in Sekunden)Autom. Abschaltung (am PC) (in Sekunden)Abschaltzeit InformationAbschaltzeit für MenüAbschaltzeit für FotoanzeigeZeit für automatische AbschaltungZeit für automatische AbschaltungAutom. AbschaltungAutom. Abschaltung (in Minuten)Automatischer Langsamer SyncAutomatische Weißabgleich AbweichungAutomatische BelichtungsnachführungAutofokus: AI FokusAutofokus: kontinuierlichAutofokus: einmalAuto EmpfindlichkeitAuto, Rote-Augen-VermeidungAutofokus ModusAutofokus Fehler.AutomatischAutomatisch Automatischer (Kein Blitz)Automatischer BlitzAutomatischer MakroAutomatischer Makro (nah)Auto Rote-Augen-VermeidungAutomatische Belichtungskorrektur in der VorschauAutomatischer BlitzAutomatischer Blitz bei AufnahmeHerbstfarbenAvAv MaxAv Max ApexAv OpenAv Open ApexVerfügbarer AufnahmenVerfügbarer Speicher:DurchschnittDurchschnittliche DateigrößeMittelwertmessungS/WS/WSchwarz/Weiss KontrastSchwarz/Weiss FiltereffektSchwarz/Weiss EinstellungsartSchwarz/Weiss SchärfeGegenlichtFehlerhafter EOTFehlerhafte Zeichen (0x%x, 0x%x). Bitte kontaktieren Sie %s (auf Englisch).Falsche Checksumme - erhalten 0x%02x, erwartet 0x%02x.Falsche Daten - erhalten 0x%02x, erwartet 0x%02x oder 0x%02x.Falsche Daten - erhalten 0x%02x, erwartet 0x%02x.Fehlbelichtung (wahrscheinlich nicht genug Licht)Falscher Wert für Kartenstatus %dFalscher Wert für Linsenstatus %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Rückentwicklung der Bilddaten von Jeff Laing Implementiert mit Hilfe von Dokumenten aus dem Web. Mit Erlaubnis von Vision.Batterien sind schwach.Batterien sind okay.BatterieBatterietypBatterie LadezustandBatteriepegel: %s Anzahl der Bilder: %d Min verbl. Kapazität: %d Beschäftigt: %s Blitz ladend: %s Linsenstatus: Batterielebensdauer: %i Batterie fast leerBatteriemodusBatterietypBatterie leer, Kamera aus.Batterieladung: %1f Volt. Revision: %08xBatteriestatus: %s, Netzteil: %s StrandStrand/SchneeTonSignalton ModusTonmodus geändertTon ausTon anBesteBitrate %ld wird nicht unterstützt.Schwarz & WeißSchwarz und WeissBlack Board-Effektschwarz/weißBlack BoardSchwarz/WeißBlinkendBlumeBlauUntenAbstufungsmodusAbstufungsrichtungAbstufungsbereichAbstufungAktivierung der AbstufungBelichtungsreihe Anzahl und SchritteHell+Hell-HelligkeitHelligkeit+Helligkeit-Helligkeit/KontrastEingebauter SpeicherEingebautes ROMLangzeitbelichtungBelichtungszeit bei LangzeitbelichtungLangzeit BelichtungsmodusMehrbildBurst AbstandBildzahl im BurstmodusBeschäftigtKnöpfe und RäderCCD SeriennummerCCD SeriennummerCHDK ScriptCRWCSM MenüKameraKameraaktionenKamera Body IDKamera-KonfigurationKamera Datum und ZeitKamera-ID: %s Kamerabibliothek für die Kodak DC215 Zoom. Michael Koltan Kamera HerstellerKameramodusKamera Modus FNummer nicht anpassenKameramodellKameramodell: %s Kamera nicht bereitKamera OK.KameraausrichtungKamera OutputKamerabesitzerKameraeinstellungenStatusinformationen der KameraKamera- und Treiber-KonfigurationKamera scheint keinen CompactFlash Speicher zu benutzen. Dies wird derzeit noch nicht unterstützt. Kamera beschäftigt. Wenn dieses Problem länger auftritt, kontaktieren Sie bitte %s (auf Englisch).Kamera konnte die Operation nicht vollendenKamera akzeptierte die Parameter nicht. Bitte kontaktieren Sie %s (auf Englisch).Kameratreiber »%s« hat keine Funktion »camera_init«.Kamera hat Speicher. Kamera hat %d Bilder aufgenommen und benutzt CompactFlash Speicher. Die Kamera ist für Kunstlicht mit %dHz konfiguriert. Kamera ist im falschen Modus. Bitte kontaktieren Sie %s (auf Englisch).Kamera nicht bereit, get_battery-Anfrage fehlgeschlagen: %sKamera nicht bereit, mehrere »Identify camera«-Anfragen fehlgeschlagen: %sKamerabilder sind monochrom. Stromsparmodus der Kamera (in Sekunden)Kamera hat 3 Versuche die Verbindung offen zu halten abgelehnt.Die Kamera hat das Kommando nicht akzeptiert.Kamera hat sich selbst zurückgesetzt.Kamera hat unerwartetes Byte 0x%02x geschickt.Kamera unterstützt Vorschaubilder. Kamera unterstützt Video. Kamera unterstützt folgende Videoformate: Kamera Zeit: %s %s Kamera nicht verfügbarKamera nicht verfügbar: %sKamera war schon aktivKamera wurde aufgewecktKann kein neues Bild aufnehmen. Unbekannter Fehler.Kann nicht alle Bilder löschen.Kann Bild Bild »%s« nicht löschen.Kann dieses Bild nicht zur Kamera hochladen. Eine Fehler ist passiert.Breche Canon DSLR Autofokus abKerzenlichtKann verbleibenden Speicherplatz nicht abfragenKann die Batteriekapazität nicht bekommenKann den Namen des Ordnerses mit den Bildern nicht bekommenCanon Automatischer BelichtungsmodusCanon AufnahmeCanon Aufnahme fehlgeschlagenCanon EOS AufnahmeCanon EOS Aufnahme fehlgeschlagenCanon EOS Aufnahme fehlgeschlagen: Karte read-only?Canon EOS Aufnahme fehlgeschlagen: Evt Spiegel hochgeklappt?Canon EOS Aufnahme fehlgeschlagen: Evt kein Fokus?Canon EOS Aufnahme fehlgeschlagen: Karte voll?Canon EOS Aufnahme fehlgeschlagen: Unbekannter Fehler %d, bitte berichten.Canon EOS Aufnahme fehlgeschlagen: %xCanon EOS Event Abfrage fehlgeschlagenCanon EOS AuslöserCanon EOS Aufnahme triggern fehlgeschlagen: 0x%xCanon EOS ViewfinderCanon EOS ZoomCanon EOS Zoom PositionCanon PowerShot-Treiber von Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5-Zusätze von Ole W. Saastad Weitere Verbesserungen von:Holger Klemm Stephen H. WestinCanon Aufnahme ModusAbschalten des Viewfinders fehlgeschlagenAnschalten des Viewfinder fehlgeschlagenHolen des Viewfinder Bildes fehlgeschlagendAufnahmeAufnahmeverzögerungAufnahmeeinstellungenAufnahme Grössen KlasseAufnahmezielAufnahmespeicherzielAufnahmeart geändertAufnahmetyp nicht unterstütztSpeicherkarteKartenstatus: Speicherkarte kann nicht geschrieben werden.Karte ist nicht formatiertKarte ist nicht geöffnetKarte ist geöffnetDatei ist schreibgeschützt.Kartenname: %s Freier Speicher auf der Karte: %d kB Speicherkarte nicht unterstützt.Speicherkarte während Zugriff entnommen.Battery Typ PrioritätMittlerer Button Playback ModusMittlerer Button Aufnahme ModusMittlerer Button Zoom FaktorZentral PunktMittelpunkt/Gewichtet BereichMittelpunkt/GewichtetMittelpunkt/GewichtetMittelpunkt/GewichtetZentral PunktMittelpunkt/GewichtetMittelpunkt/Gewichtete MessungMittelpunktgewichtete MessungMittelpunkt/Gewichtete MessungMittelpunkt/Gewichtete MessungZentrumMittelpunkt/Gewichtet BereichZentral PunktÄndern des Kameramodells fehlgeschlagenÄndere Pic Ctrl ItemÄndere Datenrate... Warte...CharakterCharakter & SoundLadendPrüfsummenfehlerKinderKinderWähle FarbtemperaturNicht CPU Objektiv NummerSäubere BildsensorReinige SensorLösche Daten StoreMedia-Sitzung schließenNahaufnahmeNächstes SubjektNahaufnahmeWolkigWolkig Weißabgleich AbweichungfarbigFarbverstärkungFarbmodusFarbmodellFarbeinstellungenFarbraumFarbtemperaturFarb Funktions ModusFarbmalmodusFarbtemperaturKommando kann nicht abgebrochen werden.Fehler in Kommandoreihenfolge.CommanderKommunikationsfehler 1Kommunikationsfehler 2Kommunikationsfehler 3Kommunikationsproblem selbst nach 2 Versuchen. Bitte kontaktieren Sie %s (auf Englisch).CompactFlash-Karte erkannt CompactFlash-KarteKompatibilitätsmodusKompressionKompressionseinstellungKonfigurationKonfiguration der FUJI Kamera.Mit Kamera verbundenKontinuierlichKontinuierlicher Schnelle Geschwindigkeit AufnahmeKontinuierlicher Langsame GeschwindigkeitKontinuierlicher Langsame Geschwindigkeit AufnahmeKontinuierliche AufnamenSchnelle kontinuierliche AufnahmeLangsame Kontinuierliche AufnameKontinuierliche Aufnahme schnellKontinuierliche Hohe GeschwindigkeitKontinuierliche Langsame GeschwindigkeitKontinuierlich leiseKontinuierlicher AFKontrastKontrast+Kontrast-Objekt kopierenCopyrightCopyright (max. 20 Zeichen)Copyright InformationCopyright InformationKorrupte DatenKonnte nicht %i Bytes für den Download des Bildes anfordern.Konnte nicht %i Bytes für den Download des Thumbnails anfordern.Konnte USB-Einstellungen nicht setzenISO-Empfindlichkeit konnte nicht geändert werdenKonnte Blende nicht ändernKonnte Tonmodus nicht ändernKonnte Belichtungskorrektur nicht ändernKonnte Blitzmodus nicht ändernKonnte Fokusmodus nicht ändernKonnte Bildformat nicht ändernKonnte Aufnahmemodus nicht ändernKonnte Belichtungszeit nicht ändernKonnte die Zeit von Datei »%s« in »%s« nicht ändern (%s).Konnte Zoom nicht ändernKonnte Kamera nicht kontaktieren.Konnte Ordner \DCIM nicht anlegen.Konnte Zielverzeichnis nicht anlegen.Konnte Ordner »%s« nicht anlegen.Konnte Ordner nicht anlegen.Konnte die Datei »%s« in Ordner »%s« nicht löschen (Fehler: %i:%s).Konnte Datei nicht löschen.Konnte keine Kamera findenKonnte keine Kamera am Port %s findenKonnte Kamera nicht anfänglich kontaktieren.Könnte JPEG Vorschaubild von Daten nicht ausziehen: Daten sind nicht JFIFKönnte JPEG Vorschaubild von Daten nicht ausziehen: keine Anfang/EndeKonnte Datei »%s« nicht finden.Konnte Lokalisierungsdaten nicht in »%s« findenKonnte Platteninfo nicht holen: %sKonnte Plattennamen nicht holen: %sKonnte keinen Laufwerksbuchstaben für das Flash-Laufwerk bekommenKonnte keine Informationen über »%s« bekommen (%s).Konnte keine Informationen über »%s« in »%s« bekommen (%s).Konnte Register %i nicht holen. Bitte kontaktieren Sie %s (auf Englisch).Konnte String-Register %i nicht lesen. Bitte kontaktieren Sie %s (auf Englisch).Konnte Upload nicht initialisieren (Kamera antwortete mit 0x%02x).Konnte erforderlichen Kameratreiber »%s« (%s) nicht laden.Konnte »%s« nicht öffnen.Konnte Ordner »%s« nicht löschen.Konnte Ordner nicht löschen.Konnte Kamera nicht zurücksetzen. Konnte die Baudrate nicht auf %i setzen (Kamera antwortete mit %i).Konnte Datenpaket nicht übertragen (Fehlercode %i). Bitte kontaktieren Sie %s (auf Englisch).Konnte Paket auch nach mehreren Versuchen nicht senden.Kann nicht Hochladen, kein freier Ordnername verfügbar! Der Ordnername 999CANON existiert und enthält eine Datei namens AUT_9999.JPG.Konnte Daten vom Datei »%s« nicht holenLege WiFI Profil anAnlegedatum: %s, Letzte Benutzung: %sKreativCreative PC-CAM 300 Autoren: Till Adam und: Miah Gregory Creative PC-CAM600 Autor: Peter Kajberg Aktueller Modus: Kameramodus Aktueller Modus: Wiedergabemodus Aktuelle Kamerazeit: %04d-%02d-%02d %02d:%02d Freier Speicher: %d Bilder auf der Karte: %d Freie Bilder auf der Karte: %d Batterie Status: %d %%Derzeit ist PTP nur für USB und PTP/IP Kameras implementiert, Port Typ ist %x.BenutzerdefiniertCustom Functions ExBenutzerdefinierter Weißabgleich PC-1Benutzerdefinierter Weißabgleich PC-2Benutzerdefinierter Weißabgleich PC-3Passe Kommando Dials anTT/MM/JJJJDEPDPOF VersionDunkel auf HellDaten würden beschädigt.Datum und ZeitDatumsformatDatums- und ZeitformatDatum und ZeitDatum und Zeit (GMT)DatumsanzeigeDatum: %i/%02i/%02i %02i:%02i:%02i Aufgenommene Bilder: %i Verbleibende Aufnahmen: %i Software-Version: %s Baudrate: %s Speicher: %i Megabytes Kameramodus: %s Bildqualität: %s Blitzeinstellung: %s Information: %s Timer: %s LCD: %s Automat. Ausschalten: %i Minuten Stromquelle: %sDatum: %sTag/Monat/JahrTageslichtTageslicht Weißabgleich AbweichungDebugTiefeDefault gatewayStandard-Sierra-Treiber: Dies ist der Standard-Sierra-Treiber. Er sollte Herunterladen und Durchsuchen von Bildern auf der Kamera unterstützen. Kamerakonfigurationen (und Einstellungen) basieren auf der Olympus 3040 und sind wahrscheinlich unvollständig. Wenn Sie feststellen, daß die Konfigurationseinstellungen für Ihre Kamera vollständig sind, oder Sie Programmcode für eine vollständige Konfiguration haben, dann setzen Sie sich bitte mit der Entwickler-Mailingliste in Verbindung. Verzögerte FernsteuerungLöschenObjekt löschenLösche Bild »%s«.Erkannte eine »%s« alias »%s«Erkannte eine »%s«.Entwicklungsparameter 1Entwicklungsparameter 2Entwicklungsparameter 3Geräte ZertifikatGeräte IconVersion des GerätesDiese Kamera unterstützt kein Setzen von Bildschutz.Das Gerät konnte Object Protection nicht auf %d setzenDigita Johannes Erdfelt Standard Digital Kamera Layout (DCIM)DigitalzoomDigitalzoom VergrößerungDigital MacroDigitalzoomDimera 3500 Ver. %s %d/%d %d:%d. %d Bilder von etwa %d (hohe Aufl.) oder %d (niedrige Aufl.). Kamera-Features: %s, %s, %s, %s. Blitz ist %s, ist %s und %s. Auflösung ist auf %s gesetzt. Kamera wird %s-betrieben%s. Direkt DruckOrdner-Modus - geschrieben von Scott Fritzinger .Ordner existiert bereitsOrdner nicht gefundenSchalte Trusted File Operations ausSchließe Verbindung zu Kamera.Disp AvDisp Av MaxAnzeigeAnzeigeformate: FernaufnahmeTV-Menü nicht anzeigenKann den Porttypen %i aka 0x%x in %s Zeile %i nicht behandeln.Download Programm f?r die Digital Dream Enigma 1.3 durch , angepaßt vom spca50x Treiber. Danke, spca50x Team, es war einfach den Treiber auf diese Kamera zu portieren!Bibliothek zum Zugriff auf GrandTek 98x basierte Kameras.Original Author: Chris Byrne , Anpassung für gphoto2 durch Lutz Müller . Verbesserung im Protokoll und Bild Nachbearbeitung für Jenoptik JD350e durch Michael Trawny . Bugfixes von Marcus Meißner .Bibliothek zum Zugriff auf die Polaroid DC700 Kamera. Originaler Author Ryan Lantzer für gphoto 4.x. Angepaßt für gphoto2 durch Lutz Müller .Bibliothek zum Zugriff auf verschiedene Polaroid Kameras. Originalauthor Peter Desnoyers , angepaßt für gphoto2 durch Nathan Stenzel und Lutz Müller . Polaroid 640SE Tests durch Michael Golden .Lade »%s« herunter.Lade »%s« herunter...Lade »%s« herunter...EXIF-Daten herunterladen...Audio herunterladen...Daten herunterladen...Lade Datei herunter...Lade Bild »%s« herunter.Lade Bild herunter...Film herunterladen...Vorschaubild herunterladen...Lade herunter...Fahre Canon DSLR AutofokusFahre Canon DSLR manuellen FokusAuslöse ModusFahre NIKON DSLR AutofokusFahre NIKON DSLR manuellen FokusTreiberTreiber EinstellungenTreiber Framework geschrieben von Lutz Müller . Diese Software hat benutzt Teile des QVplay Sourcecodes, geschrieben von Ken-ichi HAYASHI und Jun-ichiro "itojun" Itoh . Integration von QVplay durch Michael Haardt .Dual-IrisDämmerungDämmerungStaubreferenzfehlerDynamischer AF-BereichDynamischer AF Bereich (21)Dynamischer AF Bereich (51)Dynamischer AF Bereich (9)Dynamischer Bereich AFDynamischer Bereich AF mit nächstem Motiv PrioritätEEPROM-Prüfsummenfehler.FEHLER: %d ist zu großFEHLER: eine Fatalfehler würde empfindet, kann nicht weitermachenFehler: Meldungsformatfehler.Fehler: MeldungsüberlaufFehler: aus der Reihe.Fehler: unerwartete MeldungFehler: unerwartete Meldung2.Fehler: unerwarteter Pakettyp.ESPESSIDEV-SchrittEVF ModusEZoom Größe des TelesEZoom Start PositionSparmodusEffektmodusEffekteNotfallLeerCopyright aktivierenSchalte Bild Kommentar einSchalte Trusted File Operationen anVerschlüsselungKryptographischer Schlüssel (hex)Beende Trusted Application SitzungEnglischErweitertFehlerFehler beim Aufnehmen des BildesFehler beim Ändern der DatenrateFehler beim Ändern der Datenrate.Fehler beim Löschen des zugehörigen VorschaubildesFehler beim Löschen der DateiFehler beim Warten auf ACK während der InitialisierungFehler beim Warten auf ACK, probiere weiterBerechnendBerechnetes MessenEvent Emulations ModusÜberallFühre vordefiniertes Kommando mit Parameterwerten aus.%i Bytes erwartet, %i erhalten. Bitte kontaktieren Sie %s (auf Englisch).%i erwartet, %i erhalten. Bitte kontaktieren Sie %s (auf Englisch).32 Bytes erwartet, %i erhalten. Bitte kontaktieren Sie %s (auf Englisch).BelichtungBelichtung Blende LockBelichtungs Basis ZentrumBelichtungs Basis MatrixBelichtungs Basis PunktBelichtungskorrekturBelichtungs Abstufung ProgrammBelichtungs Abstufung SchrittBelichtungskorrekturBelichtungskorrektur (EV)Belichtungs Verzögerungs ModusBelichtungs Anzeige StatusBelichtungs ISO SchrittBelichtungsindex (ISO-Filmempfindlichkeit)Belichtungs Indikator AufleuchtenBelichtungs Indikator StatusBelichtungs LockBelichtungsmesserBelichtungsmessungBelichtungsmessmodusBelichtungs ProgrammBelichtungsprogrammmodusBelichtungszeitschrittBelichtungszeitBelichtungskorrekturBelichtungskorrektur geändertBelichtungskorrektur: %d Belichtungskorrektur: %s Belichtungs Verzögerungs ModusBelichtungswert in der VorschauExterner BlitzExterner Blitz angestecktBelichtungskorrektur des externen BlitzesExterner BlitzmodusArt des externen BlitzStatus Externer BlitzExterner SyncExtra hochF-NummerF2F2.3F2.8F4F5.6F8Fataler Fehler: Initialier CRC Wert für Länge %d unbekannt. Flash Speicher: Dateien: %d F-Nummer LockFV Lock anFV LockAF mit Gesichts-PrioritätWerkseinstellungTreuWeit %dWeit 1Weit 2Weit 3Entfernte SzeneSchnelles DateisystemSchnelle BelichtungDateiDatei »%s« konnte nicht im Ordner »%s« gefunden werden.Datei »%s/%s« existiert nichtLöschen von Dateien, Bildnummer ZählungHochladen von Dateien DateikomprimierungDatei existiert bereitsDatei nicht gefundenDatei geschützt.DateiauflösungDateigröße ist %ld bytes. Größtmögliche Datei für das Hochladen ist %i bytes.DateitypBildhochladung fehlgeschlagen.Datei war zu groß. Möglicherweise müssen Sie ihre Kamera aus- und wieder einschalten, um weitere Dateien hochzuladen.DateinamenskonfliktDateiname ungültigDateiname erforderlichDateityp: FlashPix (Dateityp: JPEG (Auffüll BlitzISO Anzeige im SucherFeinFeuerwerkFirmwareFirmware-Revision: %8sFirmware-Revision: %8s Bilder: %i Speicher: %ikB Freier Speicher: %ikB Firmware-Revision: %d.%d Firmware-VersionFirmware-Revision: %d.%02d Firmware: %d.%d FischaugeFest eingestelltBlitzBlitz geladenBlitz Commander A BelichtungskorrekturBlitz Commander A ModusBlitz Commander A WertBlitz Commander B BelichtungskorrekturBlitz Commander B ModusBlitz Commander B WertBlitz Commander KanalBlitz Commander eigene BelichtungskorrekturBlitz Commander eigener ModusBlitz Commander Selbst WertBlitz Commander ModusBlitz Commander Modus EnergieBlitzkorrekturBlitz BelichtungskorrekturBlitzstärke LockBlitz LockBlitz MRepeat NummerZeitraffer IntervallBlitz MRepeat WertBlitzmodusBlitzkommandomodus EnergieBlitzmodus mit manuelle EnergieBlitz ausBlitz offenBlitzanzahlBlitzeinstellungenBlitzeinstellungenBlitz BelichtungszeitBlitzzeichenBlitzsynchronisations GeschwindigkeitBlitz Weißabgleich AbweichungBlitz automatischBlitzmodus geändertBlitzmodus: automatischBlitzmodus: erzwungener BlitzBlitzmodus: Aus Blitz ausBlitz annur BlitzBlitz/BlendeBlitz/BelichtungszeitBlitz/Belichtungszeit/BlendeBlitz: AutoBlitz: Auto (Rote-Augen-Vermeidung)Blitz: AusBlitz: AnBlitz: An (Rote-Augen-Vermeidung)Blitz: undefiniertFlashPixFlexibles ProgrammFlimmer VermeidungKunstlicht - FluoreszenzlampeFluoreszenztypFloureszierend-1-Wohnung-6700KFluoreszierend-2-Tisch-5000KFluoreszierend-3-Büro-4200KKunstlicht - FluoreszenzlampeFluoreszenz HFluoreszenz Licht 1Fluoreszenz Licht 2Fluoreszenz Licht 3Fluoreszenz Licht 4Fluoreszenz Licht 5Floureszierend Weißabgleich AbweichungFloureszierend-1-Wohnung-6700KFluoreszierend-2-Tisch-5000KFluoreszierend-3-Büro-4200KFluoreszenz: KaltweissFluoreszenz: TagweissFluoreszenz: TageslichtFluoreszenz : WarmweissFokus TiefeFokus Tiefe Nennermaximale Fokus Tiefeminimale Fokus TiefeFokus Tiefe TeleFokus Tiefe WeitFokusFokus BereichFokus Bereich WraparoundFokus Bereich ZoneFokus BereichFokus EntfernungFokusinformationFokus LockFokus MessungEntfernungs Messungs ModusFokusmodusFokusmodus 2Fokuspunkt beleuchtetFokusmodus geändertFokuspositionFokuspunktFokuspunkt nur im Zentrum, AutomatischFokuspunkt nur im Zentrum, ManuellFehler beim fokussieren.Ordner »%s« enthält nur %i Dateien, aber Sie verlangten eine Datei mit der Nummer %i.GebüschEssenUm Langzeit Aufnahmen zu ermöglichen, muss das Mode Rad auf 'M' stehen und die Belichtungszeit auf 'bulb'.F?r Kameras mit S&Q Technologies Chipsatz. Sollte mit gtkam funktionieren. Bilder werden im PPM Format abgespeichert. Alle bekannten S&Q Kameras haben zwei Auflösungen. Welche dies sind ist abhängig von der speziellen Kamera. Einige dieser Kameras erlauben das Löschen aller Bilder, die meisten unterst?tzen dies aber nicht. Wenn Videoclips auf der Kamera vorhanden sind, werden diese als Unterverzeichnisse dargestellt. In gtkam ist dies durch ein Dreieck vor dem Namen gekennzeichnet. Öffnen sie diese wie gewohnt um die enthaltenen Bilder des Clips runterzuladen. Diese Bilder haben spezielle Namen die bezeichnen zu welchem Videoclip sie gehören. So können Sie diese in verschiedene Ordnerse abspeichern oder auch nicht. ImmerErzwinge Blitz Formatiere Karte und setze Albumnamen.Formatiere CompactFlash-KarteSpeicher formatierenVerbleibende Bilder: %i Aufgenommene Bilder: %4d Aufgenommene Bilder: %i FranzösischAnzeigbarer GerätenameVorderer Vorhang SyncVollVollbildVoll ManuellVolles Anzeige DateiformatKontinuierlicher AFFunktions Knopf 2FunktionsmodusFunktionsmodus: 0x%04x AllgemeinGenerisch flacher ModusGenerisch hierarchischer ModusDeutschHole nächsten Daten BlockHole RegistrierungsantwortHole WMDRM-ND Lizenz AntwortHole WMDRM-PD Applikations AntwortHole Lizenz StatusHole Meter ChallengeHole Meter ResponseHole Secure Time ChallengeHole Secure Time AnfrageHole Sync ListTypen übertragbarer Wiedergabelisten holenLade Kamera-Konfiguration...Hole Daten...Hole Dateiliste...Hole Datei...Hole Informationen über %i Dateien...Vorschaubild holen...Unerwartetes Resultat (Fehlercode 0x%x) erhalten. Bitte kontaktieren Sie %s (auf Englisch).GraustufenGraustufenGrünGruppendynamikGruppen PTN TypHDR Hoch DynamischHDR ModusHDR WeichzeichnenFreihand bei DämmerungHardware FehlerHoch 1Hoch 2HochHoch (1152 x 872)Hoch (gute Qualität)Hoch 2Rauschunterdrückung bei hohen ISORauschunterdrückung bei hohen ISOHoch kontrolliertHigh KeyHohe EmpfindlichkeitSchneller VerschlussHighlight auf aktiven FokuspunktHaltenHost-Modus: %s Belichtungskorrektur: %s Belichtungsdaten: %d Datum gültig: %s Datum: %d/%02d/%02d %02d:%02d:%02d Selbstauslöser gesetzt: %s Qualität: %s Wiedergabe/Aufnahme: %s Karten-ID gültig: %s Karten-ID: %d Blitzmodus: Stromsparmodus am PC (in Sekunden)Wie lange soll es dauern, bis die Kamera abschaltet, wenn sie an den Computer angeschlossen ist?Wie lange soll es dauern, bis die Kamera abschaltet, wenn sie nicht an den Computer angeschlossen ist?Wie lange soll es dauern, bis die Kamera abschaltet?Farbton AnpassungHyPictI/O Operation in ArbeitIDIP Addresse (leer bei DHCP)ISOISO AutoHohes Limit für Auto ISOISO Auto High LimitISO-EmpfindlichkeitISO-Empfindlichkeit geändertIkonenNicht beschäftigtIllegaler Parameter.Illum EinstellungBildBild %s ist vor Löschen geschützt.Bild & SoundBildjustierungBild KommentarBild Kommentar anschaltenBild KommentarBild KomprimierungBild FormatBild Format CFBild Format Externe HDBild Format SDBildmodusBildqualitätBildqualität 2BIldvorschauBildrotationsflagRotationsmarkierungBildeinstellungenBildgrößeBildstabilisierungBildformat geändertBildhöhe: %d Bildnummer ungültig.Bild ist geschützt.BildgrößeBildgröße: %d Bildtyp %d wird nicht von dieser Kamera unterstützt!Bildtyp %d nicht unterstütztBildtyp nicht unterstütztBildbreite: %d Img Conf TimeSofortBenutztKunstlicht - GlühlampeAnzeigeInnenraumUnendlichUnendlich/FischaugeInfo Anzeige EinstellungInfo Anzeige Fehler StatusInformationenInformationen für STV0680-basierte Kamera: Für Benutzer von Kameras mit der ID 0x2770:0x9153. Wir raten derzeit noch von der Verwendung von GUI Programmen ab. Bitte benutzen sie das Kommandozeilentool "gphoto2". Das Herunterladen von Videoclips funktioniert noch nicht. Erste Kameraantwort %c/ nicht erkanntInitialisiere KameraAufnahme auslöseninterner SpeicherInterne Fehler nr.1 in get_file_func() (%s Zeile %i)Interner Fehler (1).Interner Fehler (2).Interner Fehler beim Suchen der Kamerabibliotheken (Pfadnamen zu lang?)Interner Speicher: %d MB total, %d MB frei. UngültigUngültige ISO-EmpfindlichkeitUngültiger StatusUngültiger Wert ( %d ) Ungültige BlendeUngültiger TonmodusUngültige AufnahmeartUngültige BelichtungskorrekturUngültiger BlitzmodusUngültiger FokusmodusUngültiges BildformatUngültiger AufnahmemodusUngültige BelichtungszeitIris Fehler.ItalienischJD11 Marcus Meißner Treiber für die Jenoptik JD11-Kamera. Protokoll mit WINE und IDA rückentwickelt.JD11 KonfigurationJPEGJPEG BasicRichtlinie der JPEG-KompressionJPEG FeinJPEG NormalJPEG NormalJapanischDateinamen beim Hochladen beibehaltenKinder und TiereBekannte Probleme: 1. Wenn die Kodak DC3200 nicht wenigstens alle 10 Sekunden einen Befehl erhält, dann muss sie neu initialisiert werden. Wenn die Kamera nicht reagiert, dann wählen Sie die Kamera erneut an. Dies initialisiert die Kamera neu.Bekannte Probleme: Wenn Kommunikationsfehler auftreten, setzen Sie die Kamera zurück und starten Sie die Anwendung neu. Der Treiber ist noch nicht robust genug, um solche Situationen zu überstehen, besonders, wenn die Kamera bei Problemen nicht ordnungsgemäß ausgeschaltet wurde und die Datenrate über 9600 bps liegt.Kodak DC120 Kamera-Bibliothek Scott Fritzinger (aufgrund öffentlichen Interesses).Kodak DC240 Kamera-Bibliothek Scott Fritzinger und Hubert Figuiere Bibliothek für die Kameras Kodak DC240, DC280, DC3400 und DC5000. Neu geschrieben und aktualisiert für gPhoto2.Kodak DC3200-Treiber Donn Morrison Fragen und Kommentare werden geschätzt.Kodak EZ200 Treiber Bucas Jean Francois Konica-KonfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Ünterstützung für die französische Konica Q-M150.Konica-Bibliothek Lutz Müller Unterstützung für alle Konica- und verschiedene HP-Kameras.KoreanischLCDAutom. Abschaltung des LCD (in Sekunden)Autom. Abschaltung des LCD (in Sekunden)LCD-HintergrundbeleuchtungLCD-Hintergrundlicht und InformationsdisplayLCD-HelligkeitLCD BeleuchtungLCD-ModusZeit für automatische Abschaltung des LCDLED-ModusGenerischer Treiber für LG GSM Guillaume Bedot LandschaftSpracheLargan Treiber Hubert Figuiere GroßLarge Fine JPEGLarge Normal JPEGLinksObjektivkappe aufgesetztFokus Tiefe der Linse (Nicht CPU)Objektiv KennungMaximale Blende der Linse (Nicht CPU)ObjektivmodusObjektivbezeichnungObjektivartObjektivtypLinsenrichtung paßt nicht zum Blitz Linse nicht angeschlossen HellBelichtungsmesserHell auf DunkelNicht genügend Licht.Liste aller WLAN-ProfileAlle Dateien auflistenListe Dateien in »%s«...Liste Ordnerse in »%s«...Lithium IonenLiveview AF BereichLive View AF FokusLive View AF ModusLive View Auslöse ModusLive View Zoom FaktorLive View ModusLive View VerhinderungszustandLive View StatusLade Kameratreiber von »%s«...LokalLokalisierungLokalisierungsdaten fehlerhaft.Lokalisierungsdatei zu lang.Lokalisierungsdatei zu lang!LockLogitech Clicksmart 310 Treiber Theodore Kilgore Rauschunterdrückung bei Langzeit AufnahmeLangzeitbelichtungsrauschkompensationLange Auslösung Nach Kamera suchen...Sieht wie ein Modem aus, nicht wie eine KameraVerlustlosVerlustbehaftetNiedrigNiedrig (576 x 436)Niedrig (beste Qualität)Niedrig 2Wenig LichtLangsame SynchronisationNiedriger KontrastLow KeyNiedrige EmpfindlichkeitWenig SchärfeLangsamer VerschlussLangsame Verschlussfunktion nicht verfügbarKleingeschriebene Buchstaben sind in %s nicht erlaubt.MM-DEPM3U WiedergabelisteM4AMF (fest)MF (selektiert)MHT Kompiliertes HTML DokumentMM/TT/JJJJMPL WiedergabelisteMTR > UnterM_DEPMakroManagedManuellManuell 2Manueller FokusManueller AbstufungsmodusManuelle FilmeinstellungManuell gesetzte ObjektivnummerManueller FokusHersteller: %s Mars MR97310 Kamera Treiber Theodore Kilgore Mars MR97310 Kamera. Es ist %i Foto auf der Kamera. Mars MR97310 Kamera. Es sind %i Fotos auf der Kamera. MatrixMatrix MessungMatthew G. Martin Basierend auf fujiplay Thierry Bousch Maximale Blende bei maximaler BrennweiteMaximale Blende bei Minimaler BrennweiteMaximale BrennweiteMaximalMaximale Blende bei Maximaler BrennweiteMaximale Blende bei Minimaler BrennweiteMaximale BildanzahlMaximum an kontinuierlichen AufnahmenMaximale Anzahl der Bilder: %d Media CardMediacard GruppeMediacastMittelMittel (1152 x 872)Mittel (bessere Qualität)Mittel 1Mittel 2Mittel 3Medium Fine JPEGMittel HochMittel NiedrigMedium Normal JPEGMittel HochMittlere EmpfindlichkeitVerbleibender Speicher: %i bytes SpeicherkarteSpeicherkartenstatus (%d): %s Speicher in Kamera: %d Mbit. Menübank Name AMenübank Name BMenübank Name CMenübank Name DMenüs und AbspielenDer Metadaten Dateityp ist nur für MTP Geräte unterstützt.SensorabschaltzeitSpotmessungMF am AnschlagMF Schritt zu kleinMikrofonMikrofon ausMicrosoft Excel Tabelle (.xls)Microsoft PowerPoint (.ppt)Microsoft Word DokumentMinimale BrennweiteMiniatur EffektMinimalMinimale BelichtungszeitMinolta Dimage V Kamera-Bibliothek %s Gus Hartmann Besonderen Dank an Minolta für die Spezifikation.Spiegel hochklappenSpiegel hochklappenAndere Belichtungs-/ObjektiveinstellungenFehlende ZahlMI Punkt PositionMI Punkt Position AutofokuskopplungMI Punkt Position ZentrumModell IDModell: Minolta Dimage V (%s) Hardware-Revision: %s Firmware-Revision: %s Modell:Modell: %s Modell: %s Speicherkapazität: %i MB Stromversorgung: %s Autoabschaltszeit: %i min Mode: %s Bilder: %i/%i Datumsanzeige: %s Datum und Zeit: %s Modell: %s Speicherplatz: %d Byte(s) von %d freiModell: %s Seriennummer: %s, Hardware-Version: %i.%i Software-Version: %i.%i Testsoftware-Version: %i.%i Name: %s, Hersteller: %s Modell: %x, %x, %x, %xModell: Kodak %s ModellierblitzModellierblitzMittelMonitorBildschirmabschaltverzögerungEinfarbigMonat/Tag/JahrObjekt verschiebenFilmFilm AufnahmeFilm KartenslotFilm MikrofonFilmqualitätFilmauflösungFilm BildschirmgrösseFilm SoundFilm StimmeMehr Bild RauschunterdrückungMehrpunktMehrpunktMehrpunktmessungMehrpunktMehrere Fokuspunkt e(Mitte)Mehrere Fokuspunkt (Links)Mehrere Fokuspunkte (keine Spezifikation), ManuellMehrere Fokuspunkte (Rechts)Mehrere Fokuspunkte, AutomatischMultiselektorSpiegel hochklappenMustek MDC-800 gPhoto2-Bibliothek Henning Zabel Portiert auf gphoto2 von Marcus Meißner Unterstützt das serielle und das USB-Protokoll.MyColorsNEF (Raw)NEF+BasicNEF+FeinNEF+NormalNIKON Automatischer AbstufungsselektionUNBEKANNTNTSCNULL Parameter "%s" in %s, Zeile %iName »%s« passt mit keinem bekanntes ModellName »%s« (%li Zeichen) ist zu lang, maximal 30 Zeichen erlaubt.NamensprefixName, der beim Formatieren der Karte gesetzt wird.Nah %dNah 1Nah 2Nah 3NetzwerkmaskeNeutralNächstesNickel CadmiumNickel HydridNachtlandschaftNachtportraitNachtlandschaftNachtansichtNachtsichtNachtlandschaftNachtlandschaftNachtschnapschussNikon Aufnahme 1Nikon Coolpix 880: Kamerakonfiguration: Der optische Zoom funktioniert nicht richtig. Nicht alle Konfigurationseinstllungen können korrekt gelesen oder geschrieben werden, z.B. die Feineinstellung des Weißabgleichs oder die Spracheinstellung. Setzen Sie die Kamera in den »M«-Modus, um die Belichtungszeit einzustellen. Nikon Coolpix 995: Kamerakonfiguration für diese Kamera ist unvollständig, bitten kontaktieren Sie die Entwickler auf der gphoto Entwickler Mailingliste, wenn Sie mithelfen möchten. Das Herunterladen sollte korrekt funktionieren. Nikon BelichtungszeitNikon BlitzmodusNikon ViewfinderNikon autofokus erhielt keinen Fokus.Beenden der LiveView fehlgeschlagenAnschalten der Nikon LiveView fehlgeschlagenDer manuelle Fokus ist am Anschlag.Das Fokus Stepping ist zu gering.Der manuelle Fokus funktioniert nur im LiveView Modus.NeinAuslösen ohne CF KarteKeine CompactFlash-Karte erkann Keine Dual-IrisKeine EXIF-Daten für %s verfügbar.kein Löschen von Dateien, kein Hochladen von Dateien Kein Blitzkeine Offene Aufnahme, Keine PowerlampeKeine AuflösungsumschaltungSD Speicherkarte nicht eingelegt. Keine Antwort von der Kamera.Keine Tondatei für »%s« konnte gefunden werden.Keine Kamera Hilfe verfügbar. Keine Karte vorhandenKeine Speicherkarte in der Kamera. Keine Karte vorhanden.Keine Speicherkarte vorhandenKein Grund verfügbarKeine Antwort von KameraKein Platz für weitere Aufnahmen vorhanden. Sie müssen Bilder löschen.Kein freier Speicher auf der Karte.Kein Vendor spezifischer Aufnahmemodus KeineKeine ausgewähltNormalNormal Normaler Autofokus AnNormaler Bereich AFNicht vollNicht genug PlattenplatzNicht genügend Speicherplatz auf der Karte vorhandenNicht im Liveview ModusNicht im FüllmodusNicht bereitNicht benutztNote: keine Speicherkarte vorhanden, einige Werte können ungültig sein Anzahl der Bilder: %d Anzahl der Bilder: %dAnzahl der Bilder: %d Anzahl der Bilder: %i Firmware-Version: %sAusOKAnFehler in der KamerakommunikationAusBüroOlympus 750 Ultra Zoom: (1) Die Olympus 750UZ hat einen USB einen USB-Steuermodus. Um diesen Modus zu benutzen, muss die Kamera auf »USB PC control mode« eingestellt sein. Um zum Menü für diese Einstellung zu gelangen, schalten Sie die Kamera an, öffnen Sie die Klappe für die Speicherkarte und halten Sie sowohl den »ON«- als auch den »quickview«-Knopf gedrückt, bis das das Kontrollmenü erscheint. Setzen Sie dieses auf Control Mode. (2) Wenn Sie den LCD-Modus auf »Monitor« oder »Normal« setzen, dann vergessen Sie nicht, ihn wieder auf »Aus« zu setzen, bevor Sie die Verbindung zur Kamera trennen. Anderenfalls können Sie die Bedienelemente der Kamera nicht mehr benutzen. In diesem Fall müssen Sie die Kamera wieder mit dem PC verbinden und den LCD-Modus auf »Aus« setzen.Olympus E XML Aufnahme Olympus E series XML Unterstützung ist derzeit nur mit libxml2 moeglich.AnAn + Rote-Augen-VermeidungTips auf dem BildschirmAn, Rote-Augen-VermeidungEinzel AFVollautomatikNur das Wurzelverzeichnis wird unterstützt - Sie forderten eine Dateiliste für Ordner »%s«.Offene Aufnahme, Media-Sitzung öffnenKameramodusOperation abgelehntOperation abgebrochenOptimale QualitätBild OptimierungKameraausrichtungAndererAndere PTP Geräte SettingsWeitere EinstellungenEin anderes Kommando wird bereits ausgeführt.Nicht im FokusKein Speicherplatz vorhandenSpeicherplatz fehlt: %d bytes benötigt.Speicherplatz fehlt: %ld bytes benötigt.Im FreienEigentümernameEigentümername geändertPPALPCPLS WiedergabelistePTP-Zugriff verweigertPTP Abbruch AnfragePTP-Aufnahme bereits beendetPTP-Protokollfehler: Daten erwartetPTP-Device belegtPTP-Geräteeigenschaft nicht unterstütztPTP-Allgemeiner FehlerPTP-Ein/AusgabefehlerPTP-Unvollständiger TransferPTP-Ungültiges CodeformatPTP-Ungültiges Geräteeigenschaften FormatPTP-Ungültiger GeräteeigenschaftswertPTP-Ungültiger Object FormatcodePTP-Ungültiges Object HandlePTP-Ungültiger ParameterPTP-Ungültiges VaterobjektPTP-Fehlerhafte Storage-IDPTP-Fehlerhafte Transaktions-IDPTP-Kein Thumbnail vorhandenPTP-Keine gültige Object InformationPTP-OK!PTP-Objekt schreibgeschütztPTP-Operation nicht unterstütztPTP-Parameter nicht unterstütztPTP-Partiell gelöschtPTP Setting 0x%04xPTP-Protokollfehler: Antwort erwartetPTP-Selbsttest fehlgeschlagenPTP- Sitzung bereits geöffnet.PTP-Sitzung nicht geöffnetPTP- Spezifikation durch Format nicht unterstütztPTP-Spezifikation des Zieles nicht unterstütztVersion des PTP Standards: %d.%d PTP-Speicher vollPTP- Speicher nicht verfügbarPTP-Speicher-schreibgeschütztPTP TimeoutPTP-Transaktion abgebrochenPTP- Undefinierter FehlerPTP-Unbekannter HändlercodePTP VersionPTP2 driver (c)2001-2005 Mariusz Woloszyn . (c)2003-%d Marcus Meißner . Dieser Treiber unterstützt Kamera die PTP oder PictBridge(tm) kompatibel sind, und MP3 Player die das Media Transfer Protokol (MTP) unterstützen. Viel Spaß!Datenpaket wurde von der Kamera abgelehnt. Bitte kontaktieren Sie %s (auf Englisch).Pan FokusPan FokusPanasonic DC1000 gPhoto-Bibliothek Mariusz Zynel Basierend auf dem dc1000-Programm von Fredrik Roubert und Galen Brooks .Panasonic DC1580 gPhoto-Bibliothek Mariusz Zynel Basierend auf dem dc1000-Programm von Fredrik Roubert und Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic hat Bildaufnahme (genannt PHOTOSHOT) zum ersten Mal in dieser Serie von Palmcordern implementiert. Bilder sind im JPEG-Format auf einer internen Flashkarte gespeichert und können über den seriellen Port zum Computer übertragen werden. Bilder sind iin zwei Formaten gespeichert: NORMAL ist 320x240 und FINE ist 640x480. Das CCD, welches die Bilder von der Linse aufnimmt, hat nur 300K Pixel und produziert so nur Bilder mit niedriger Qualität.Panasonic PV-L859-K/PV-L779-K Palmcorder-Treiber Andrew Selkirk PanoramaParameter 1Parameter 2Parameter 3Parameter SetParsen des Wertes von Widget »%s« / 0x%04x fehlgeschalten mit %d.PartiellPartielle MessungParty/InnenraumPfadangabe nicht absolutAngenommener GerätetypDauerhafte EinstellungenTierportraitFoto EffektPhoto Info. PlaybackFoto im FilmFotos in Kamera: %d Bild EffektKonfiguration des BilderrahmensBildeinstellungenBild StyleBilderFotos in der Kamera: %d WiedergabeWiedergabemodusAnzeigenAbspiel Container IndexAbgespieltes ObjektAbspielpositionAbspielgeschwindigkeitPlaysForSure IDPortgeschwindigkeitPortraitNetzanschlussAbschaltenStromsparmodusSchnellaufzugGerät ausschaltenAufnahmeverzögerungVoreinstellungPreset Custom 1Preset Custom 2Preset Custom 3Preset Custom 4Preset Custom 5Voll durchdrückenHalb durchdrückenVorschauVorschau KnopfVorschau Knopf 2Vorschau ModusVorherigesProblem beim Herunterladen des BildesProblem beim Holen der BildinformationProblem beim Holen der Anzahl der BilderProblem beim Öffnen des PortsProblem beim Lesen des Bildes vom SpeicherProblem beim Kamera-ResetProblem beim Setzen der KameradatenrateProblem bei der Aufnahme eines Live-BildesBearbeite WFC ObjektProdukt-ID: %02x%02x ProfilnameVerbiete Blitz QualitätSchnelle ReaktionSchnellreagierende FernbedienungSchnellansicht ZeitLeises AuslösenRAWRAW + JPEG BasicRAW + JPEG FeinRAW + JPEG NormalRAW + Large Fine JPEGRAW + Large Normal JPEGRAW + Medium Fine JPEGRAW + Medium Normal JPEGRAW + Small Fine JPEGRAW + Small Normal JPEGRAW 2RAW+JPEGRGB-VerstärkungRTC Status: %d RAW Bit ModusRAW.KomprimierungNur Lesen und Löschennur LesenLesen und Schreiben"Nur-Lesen"-Dateiattribute wie Höhe und Breite können nicht geändert werden.BereitHinterer Vorhang SyncHinterer Vorhang Sync+Langsamer SyncHinterer Vorhang SyncHinterer Vorhang Sync+Langsamer SyncUnerwartete Antwort (Fehlercode %i) erhalten. Bitte kontaktieren Sie %s (auf Englisch).Unerwartete Daten erhalten (0x%02x, 0x%02x).Unerwarteten Header erhalten (%i)Unerwartete Antwort erhaltenEmpfange Daten...AufnahmeAufnahmemodusAufnahmemodusAufnahmemediumAufnahmemediumRotRote-Augen-VermeidungRote-Augen-BlitzRote-Augen-VermeidungRote-Augen-Vermeidung + Langsamer Syncautomatische Rote-Augen-VermeidungRote-Augen-Blitz FüllmodusRote-Augen-Blitz FüllmodusRote-Augen-VermeidungRote-Augen-Vermeidung + Langsamer SyncAuslösenAuslösen + FokussierenVoll auslösenHalb durchdrückenAufnahme ModusAuslösen ohne CF KarteEntferntKamera API VersionEntfernt Spiegel hochklappenEntfernter ModusFernsteuerungsabschaltzeitEntfernbarer Speicher (Karte)Entfernbares ROMWiederholendErworbene Objekte berichtenHinzugefügte/gelöschte Objekte berichtenForderte Informationen über Bild %i (= 0x%x) an, erhielt jedoch Informationen über Bild %iSetze Menübank 0 zurückSetze Menübank zurückGerät zurücksetzenSetze Fokus Punkt ins ZentrumProtokoll zurücksetzen...AuflösungAuflösungsumschaltungAuflösung und GrößeUmgedrehtes Kommando RadVertauschte IndikatorenRevokationsinformationRicoh / Philips-Treiber von Lutz Müller , Martin Fischer , basierend auf Bob Paauwes Treiber Ricoh Caplio G3. Marcus Meißner Rückentwickelt mittels USB Snoopy, anschauen des Firmware Updates und wildem Ratens. RechtsRotationswinkelRotationsmarkierungRotationsszeneSD Karten-ID: %s SD Speicher: %d MB total, %d MB frei. Kamera SDRAMSDRAM Speicher: Dateien: %d Bilder: %4d Filme: %4d Benutzter Speicher: %8d Freier Speicher: %8d SDRamTreiber für ST2205 USB Bilder Rahmen Hans de Goede Dieser Treiber erlaubt das Herunterladen, Hochladen und Löschen von Bildern vom Bilderrahmen.ST2205 basierte Bilderrahmen haben viele mögliche Auflösungen. Dieser Treiber erlaubt das Herunterladen, Hochladen und Löschen von Bildern vom Bilderrahmen.STV0674 Vincent Sanders Treiber für Kameras mit dem STV0674 ASIC. Protokoll wurdde mit Snoopy Pro reverse engineered. STV0680 Adam Harrison Treiber für Kameras mit dem STV0680-ASIC. Rückentwicklung des Protokolls mit CommLite Beta 5 Carsten Weinholz Erweitert für Aiptek PenCam und andere STM USB Dual-Mode-Kameras.Samsung WiedergabelisteSättigungSzeneSzenen ModusSektionSichere ZeitFarbe auswählenSelektive FarbeSelbstauslöserSelbstauslöserSelbstauslöser (nur nächstes Bild)SelbstauslöserzeitSelbstauslöser AufnahmenummerSelbstauslöserzeitGeräteselbsttestSelbstauslöserSelbstauslöser 10sSelbstauslöser 2sSelbstauslöserzeitSende Registrierungs RequestSende WMDRM-ND Lizenz AnfrageWMDRM-PD Applikationsanfrage sendenSende WMDRM-PD KommandoSende WMDRM-PD AnfrageSende Meter Challenge AnfrageObjekt sendenSende Daten...EmpfindlichkeitSensor-ID: %d.%d Sepia9 Bilder ReiheSeriennummerSeriennummer: %s Session Initiator InformationSitzungsdauerhafte EinstellungenSetze derzeitige ZeitpositionSetze den NIKON AutofokusbereichSetze Nikon KontrollmodusSetzen der PTP-Geräteeigenschaft nicht unterstütztSetze Uhr in KameraSetze Lizenz AntwortEinstellung 4Einstellung 5Einstellung 6Einstellung 7SchattenSchattenSchattig Weißabgleich AbweichungSoll die Kamera einen Ton spielen, wenn ein Bild aufgenommen wird?SchärfeSchärfenSchärferSchärfeAufnahme BankAufnahme Bankname AAufnahme Bankname BAufnahme Bankname CAufnahme Bankname DAufnahme ModusAbstand bei MehrfachbelichtungAufnahmemodusAufnahmemodus geändertAufnahme-EinstellungenAbschaltenAuslöseanzahlBelichtungszeitBelichtungszeit (in Sekunden)Belichtungszeit (Mikrosekunden, 0 automatisch)Belichtungszeit 2Belichtungszeit bei LangzeitbelichtungBelichtungszeit (Mikrosekunden, 0 automatisch)BelichtungszeitBelichtungszeit geändertAuslöser/AF-ONSiPix Web2 Marcus Meißner Treiber für die SiPix Web2-Kamera.SilhouetteEinzelbildEinzelbereichEinzelbildEinzelbildEinzelbild leiseEinzelbildaufnahmeEinzel AFEinzelbereich AFEinzel AFSipix StyleCam Blink-Treiber Vincent Sanders Marcus Meißner . Grössen PrioritätBildgröße und -qualitätDatengröße beim Transfer zur KameraDatengröße beim Transfer von der KameraSkip zur nächsten Position in der WiedergabelisteTageslichtDiashow-IntervallSlot 2 SpeichermodusLangsamLangsame Aufnahme EinstellungLangsamer SyncLangsame BelichtungLangsamer SyncLangsame SynchronisationSmal Ultrapocket Lee Benfiel Bibliothek zum Zugriff auf die Smal Ultrapocket Kamera und ihre OEM Versionen (slimshot).KleinSmall Fine JPEGSmall Normal JPEGWeichWeichzeichnenSchneeWeichWeicherSoftware-Revision: %s Einige Kommentare über Epson-Kameras: - einige Parameter sind nicht fernsteuerbar: * Zoom * Fokus * Benutzer-Weißabgleich - Die Konfiguration wurde mit einer PhotoPC 3000z rückentwickelt. Wenn Ihre Kamera anders reagiert, dann senden Sie bitte eine Mail an %s (auf Englisch). Einige Kommentare über Epson-Kameras: - einige Parameter sind nicht fernsteuerbar: * Zoom * Fokus * Benutzer-Weißabgleich - Die Konfiguration wurde mit einer PhotoPC 3000z rückentwickelt. Wenn Ihre Kamera anders reagiert, dann senden Sie bitte eine Mail an die gphoto developer Mailing Liste (auf Englisch). Einige Bemerkungen: (1) Kamera-Konfiguration: Ein Wert von 0 verwendet die Vorgabe (Auto). (2) Olympus C-3040Z (und möglicherweise die C-2040Z und andere) haben einen USB-Kontrollmodus. Um diesen Modus zu benutzen, muss die Kamera auf »USB PC control mode« geschaltet sein. Um zum Menü für diese Einstellung zu gelangen, öffnen sie die Klappe für die Speicherkarte und halten Sie beide Menütasten gedrückt, bis das Kontrollmenü erscheint. Schalten Sie es auf »ON«. (3) Wenn Sie den LCD-Modus auf »Monitor« oder »Normal« setzen, dann vergessen Sie nicht, ihn wieder auf »Aus« zu setzen, bevor Sie die Verbindung zur Kamera trennen. Anderenfalls können Sie die Bedienelemente der Kamera nicht mehr benutzen. In diesem Fall müssen Sie die Kamera wieder mit dem PC verbinden und den LCD-Modus auf »Aus« setzen.Einige Bemerkungen über Olympus-Kameras: (1) Kamera-Konfiguration: Ein Wert von 0 verwendet die Vorgabe (Auto). (2) Olympus C-3040Z (und möglicherweise die C-2040Z und andere) haben einen USB-Steuermodus. Um diesen Modus zu benutzen, muss die Kamera auf »USB PC control mode« geschaltet sein. Um zum Menü für diese Einstellung zu gelangen, öffnen sie die Klappe für die Speicherkarte und halten Sie sowohl die Menü- als auch LCD-Taste gedrückt, bis das Kontrollmenü erscheint. Schalten Sie es auf »ON«. (3) Wenn Sie den LCD-Modus auf »Monitor« oder »Normal« setzen, dann vergessen Sie nicht, ihn wieder auf »Aus« zu setzen, bevor Sie die Verbindung zur Kamera trennen. Ansonsten können Sie die Bedienelemente der Kamera nicht mehr benutzen. In diesem Fall müssen Sie die Kamera wieder mit dem PC verbinden und den LCD-Modus auf »Aus« setzen.Sonix Kamera Treiber Theodore Kilgore Sonix Kamera. Es ist %i Foto auf der Kamera. Sonix Kamera. Es sind %i Fotos auf der Kamera. Sony AufnahmeSony DSC-F1 Digitalkamera-Unterstützung M. Adam Kendall Basierend auf dem chotplay CLI-Interface von Ken-ichi Hayashi Gphoto2-Portierung von Bart van Leeuwen Sony DSC-F55/505 gPhoto Bibliothek Unterstützt Sony MSAC-SR1 und Memory Stick von DCR-PC100 Erste Implementation durch Mark Davies gPhoto2 Portierung durch Raymond Penners Das Initialisieren Ihrer Kamera hat nicht funktioniert. Bitte reporten Sie dies.Die Property »%s« / 0x%04x is derzeit read-only.Diese Kamera versteht leider den Canon-Befehl zum Beginn von Aufnahmen per Fernauslöser nichtDiese Canon Kamera unterstützt nicht den Canon EOS Aufnahme ModusDiese Kamera unterstützt nicht den Canon Viewfinder ModusDiese Canon Kamera unterstützt nicht den Canon Aufnahme ModusDiese Nikon Kamera scheint kein JPEG im LiveView Modus zu holenDiese Nikon Kamera unterstützt nicht den LiveView ModusDiese Kamera unterstützt keine Nikon spezifische Aufnahme von BildernDiese Kamera unterstützt keine Aufnahme von BildernSoundSoundvision-Treiber Vince Weaver Verbleibender Platz: hoch: %d, mittel: %d, niedrig: %d SpanischAufnahmegeschwindigkeit %i wird nicht unterstützt!Raten über 57600 sind mit dieser Kamera nicht für das Hochladen unterstütztSportSportPunktSpotmessungPunktmessung geschnitten mit AF RahmenSpotmessungSpotmessungPunktmessung mit AutoFokus RahmenPunkt-AFStandardStandart EntwicklungsparameterStarte FilmaufnahmeEinschaltenEin- und AbschaltenStufe 2 der Kamerainitialisierung fehlgeschlagen! (%i Bytes erhalten, %i erwartet) Kamera funktioniert nichtStufe 2 der Kamerainitialisierung fehlgeschlagen: (»%s« beim Lesen von %i) Kamera funktioniert nichtStufe 3 der Kamerainitialisierung fehlgeschlagen! (%i erhalten, %i erwartet) Kamera funktioniert nichtStufe 3 der Kamerainitialisierung fehlgeschlagen: »%s« beim Lesen von %i. Kamera funktioniert nichtStufe 3 der Kamerainitialisierung fehlgeschlagen: %s beim Schreiben von %i. Kamera funktioniert nichtStufe 4 fehlgeschlagen! (%i erhalten, %i erwartet) Kamera funktioniert nichtStufe nr.4 fehlgeschlagen: %s beim Lesen von %i. Kamera funktioniert nichtBildaufnahme ModusStandbildBlitzfehler.Subjektfolgender AFZusammenfassung für Mustek MDC800: SonnenuntergangSuper MacroSuperfeinUnterstützte MTP Object Properties: Unterstützte Thumbnail GrößeSchalte Kamera ausSynchronisationspartnerKamera Datum und Zeit mit dem PC synchronisierenSynchronisiere Datum und Zeit des Rahmens mit dem PCSystemfehler.TFTTFT + PCTIFF (RGB)TTLTVTV Lock EinstellungenTV-AusgabeformatTeste verschiedene Datenraten...Der "Kamera" Ordnermodus erlaubt es Ihnen, Bilder auf der Festplatte zu indexieren.Die JD11-Kamera funktioniert mit diesem Treiber ziemlich gut. Eine RS232 (serielle)-Schnittstelle mit 115kbit Datenrate ist für den Bildtransfer erforderlich. Mit dem Treiber können - Vorschaubilder (64x48 PGM-Format) - Volle Bilder (640x480 PPM-Format) heruntergeladen werden. Die Kodak DC120 verwendet das KDC-Dateiformat, um Bilder zu speichern. Zum Ansehen der Kamerabilder benötigen Sie das "kdc2tiff"-Programm von http://kdc2tiff.sourceforge.netDer Samsung digimax 800k-Treiber wurde von James McKenzie für gphoto geschrieben. Lutz Müller portierte den Treiber nach gphoto2. Marcus Meißner vollendete und verbesserte die Portierung.Der Batteriestand der Kamera ist zu niedrig (%d%%). Befehl wird abgebrochen.Konnte nicht mit der Kamera verbinden. Bitte stellen Sie sicher, daß die Kamera mit dem Computer verbunden und angeschaltet ist.Die Kamera hat das Kommando nicht akzeptiert.Die Kamera hat »%s« nicht als Dateinamen akzeptiert.Die Kamera unterstützt die Geschwindigkeit %i nicht.Diese Kamera hat gerade einen unbekannten Fehlercode geschickt. Bitte berichten sie folgenden Fehlercode an %s mit weiteren Information, wie dieser Fehler aufgetreten ist: (0x%x, 0x%x). Vielen Dank!Die Kamera sendete mehr Bytes als erwartet (%i)Die Kamera sendete nur %i Bytes, aber wenigstens %i werden benötigt.Die hochzuladende Datei hat eine Größe von null BytesDie Länge des Dateinamens darf 12 Zeichen nicht überschreiten (»%s« hat %i Zeichen).Das Dateisystem unterstützt kein Hochladen von Dateien.Das Dateisystem unterstützt das Holen von Dateiinformationen nichtDas Dateisystem unterstützt kein Holen von Dateien.Das Dateisystem unterstützt das Holen von Speicherinformationen nichtDas Dateisystem unterstützt das Setzen von Dateiinformationen nichtDas erste empfangene Byte (0x%x) ist nicht gültig.Die Pfadangabe »%s« ist nicht absolut.Die Property »%s« / 0x%04x wurde nicht gesetzt, (0x%04x: %s).Die Property »%s« / 0x%04x wurde nicht gesetzt, (0x%04x: %s).Der angeforderte Port-Typ (%i) wird von diesem Treiber nicht unterstützt.Im Ordner »%s/%s«, das Sie zu Löschen versuchen, befinden sich immer noch Dateien.Im Ordner »%s/%s«, das Sie zu Löschen versuchen, befinden sich immer noch Unterverzeichnisse.Zwei Aufösungen, 352x288 und 176x144. Bilddaten werden im JPEG Format runtergeladen und haben daher keine vorbestimmbare Größe. Deshalb ist die maximale Anzahl an Bildern auf der Kamera nur ein Näherungswert. Alle gphoto2 Optionen funktionieren, außer den folgenden, die die Kamera nicht unterstützt: Löschen von einzelnen Fotos (gphoto2 -d) Aufnahme (gphoto2 --capture oder --capture-image) Allerdings ist Aufnahme über den Webcam Modus möglich, der durch das spca50x Kernel Modul unterstützt wird. GUI Zugriff mit gtkam wurde getestet und funktioniert. Allerdings erstellt die Kamera keine seperaten Vorschaubilder. Da die Bilder bereits geringe Größe haben, lädt der Treiber einfach die normalen Bilder als Vorschaubilder herunter. Die Kamera kann in einem 'Videoclip' Modus aufnehmen. Die entstehenden Einzelbilder werden als Folge von normalen Bildern gespeichert. Der Benutzer kann sie dann selber animieren mit z.B. ImageMagick's 'animate' Funktion. Frü mehr Details ,ber die Kamerafunktionen konsultieren sie bitte libgphoto2/camlibs/clicksmart310/README.clicksmart310. Eine Operation ist im Moment aktiv. Diese Kamera unterstützt nur jeweils eine aktive Operation. Bitte warten Sie, bis die aktuelle Operation beendet wurde.Es gibt Platz für weitere: %d niedrig, %d mittlere, und %d hoch komprimierte Bilder Diese Kamera kann keine Vorschaubilder machen.Diese Kamera kann keine Aufnahme machen.Diese Kamera kann keine Aufnahme machen.Ihre USB Kamera hat einen Jeilin JL2005%c Chipsatz. Die Anzahl an Bildern auf der Kamera ist %i. Ihre USB Kamera hat einen Jeilin JL2005A Chipsatz. Die Anzahl an Bildern auf der Kamera ist %i. Für diese Kamera existiert kein Handbuch.Diese Kamera bietet keine Konfigurationsoptionen.Diese Kamera liefert keine Information über den Treiber.Diese Kamera unterstützt kein Setzen von Konfigurationsoptionen.Diese Kamera unterstützt keine Zusammenfassung.Dieser Treiber unterstützt Kameras mit dem Jeilin jl2005b Chip. Diese Kameras erlauben es nicht, Dateien zu löschen oder vom Computer auf die Kamera zu kopieren. Die Decodierung komprimierter Bilder kann funktionieren (oder auch nicht) und funktioniert nicht mit allen unterstützten Kameras gleich gut. Weitere Details finden Sie in libgphoto2/camlibs/jl2005c/README.jl2005c Dieser Treiber unterstützt Kameras mit dem Jeilin jl3005a Chip. Diese Kameras erlauben es nicht, Dateien zu löschen oder vom Computer auf die Kamera zu kopieren. Die Decodierung komprimierter Bilder kann funktionieren (oder auch nicht) und funktioniert nicht mit allen unterstützten Kameras gleich gut. Weitere Details finden Sie in libgphoto2/camlibs/jl2005a/README.jl2005a Dieser Treiber unterstützt Kameras mit dem Mars MR97310 Chip (und direkten Äquivalenten ??Pixart PAC0x7??). Diese Kameras erlauben es nicht, Dateien zu löschen oder vom Computer auf die Kamera zu kopieren. Die Decodierung komprimierter Bilder kann funktionieren (oder auch nicht) und funktioniert nicht mit allen unterstützten Kameras gleich gut. Die Verarbeitung von Daten für die Argus QuickClix ist NICHT unterstützt. Falls auf der Kamera vorhanden, werden die Rahmen von Videoclips als einzelne Standbilder heruntergeladen. Weitere Details finden Sie in libgphoto2/camlibs/mars/README.mars. Dieser Treiber unterstützt einige Kameras mit Sonix sn9c2028 Chip. Die folgenden Operationen sind unterstützt: - Thumbnails für GUI Programme - volle Bilder im PPM Format - Lösche alle Bilder - Lösche letztes Bild (muss nicht mit allen Sonix Kameras funktionieren) - Bildaufnahme auf Kamera ( ditto ) Video Clips werden runtergeladen wenn sie als fortlaufende Bilder oder als AVI Dateien auf der Kamera sind, abhängig vom Modell. Thumbnails für AVIs sind normale Bilder vom ersten Bild. Bilder können nur gelöscht werden, wenn sie die letzten sind. Dies ist der Treiber für Canon PowerShot, Digital IXUS, IXY Digital, und EOS Digtial Kameras in ihrem nativem Modus (manchmal auch als "normal" bezeichnet) Es unterstützt auch eine kleine Anzahl von digitalen Canon Kamerarekordern mit Fotofähigkeiten. Es beinhaltet Programmcode zur Kommunikation über serielle Ports oder USB Verbindungen, und später evt über IEEE 1394 (FireWire). Der Treiber arbeitet mit über 70 Modellen bis hin zur PowerShot A5 und Pro70 (1998) und bis hin zur PowerShot A510 und EOS 350D von 2005. Es wurde nicht mit der EOS 1D oder EOS 1Ds getestet. Für die A50, benutzen von 115200 bps kann evt. schneller sein als 57600. Wenn viele serielle Transmissionsfehler auftreten, probieren sie den Rechner so idle wie möglich zu haben (z.B. keine Plattenaktivität) Diese Bibliothek wurde mit einer Kodak DC 215 Zoom getestet. Sie könnte auch mit der DC 200 und DC 210 funktionieren. Wenn Sie eine solche Kamera besitzen, dann lassen Sie mich unter wissen, ob alles funktioniert oder ob Sie irgendwelche Probleme haben.Dieses Varschaubild existiert nicht.VorschauVorschaubildhöhe: %d Vorschaubildgröße: %d Vorschaubildbreite: %d Tilt-ShiftZeitformatZeit: %a, %d %b %Y %T ZeitrafferZeitraffer IntervallZeitraffer NummerTime-Out selbst nach 2 Versuchen. Bitte kontaktieren Sie %s (auf Englisch).SelbstauslöserTimer (Einzel) AufnahmeSelbstauslöser + EntferntSelbstauslöser 10 SekundenSelbstauslöser 2 SekundenTon AnpassungZu hellZu dunkelZu viele Versuche misslungen.ObenTopfield TF5000PVR Marcus Meissner Bilbiothek um Dateien von einem Topfield PVR herunter- oder hochzuladen. Portiert von puppy (c) Peter Urbanec Toshiba David Hogue Toshiba pdr-m11 Treiber. Blitzaufnahmen:%d Aufnahmen, gesamt: %d; Blitz verwendet: %d Aufnahmen: %d Time-Out für Übertragung des Datenpakets nach %i Versuchen. Bitte kontaktieren Sie %s (auf Englisch).Time-Out für Übertragung auch noch 2 Versuchen. Gebe auf...Versuche, Kamera zu kontaktieren...Farbtemperatur einstellenVoreinstellung 0Voreinstellung 1Voreinstellung 2Voreinstellung 3Voreinstellung 4Kunstlicht - GlühlampeTungsten Weißabgleich AbweichungTurbo ModusTvArt der SlideshowU1U2Benutzerinterface SpracheUILockUILockTypeUNIX ZeitUSB 1.1USB 2.0USB GeschwindigkeitNicht zugeordnetUndefiniertUndefiniertes AudioformatUndefinierte KalendereintragUndefinierte SammlungUndefinierter AddressbucheintragUndefiniertes DokumentUndefinierte NachrichtUndefinierte PTP PropertyUndefiniertes VideoformatUndefiniertes Windows ExecutableUnter > MTRUnterwasserUnbekanntUnbekannt %dUnbekanntes KommandoUnbekannter Fehler des Kamera-TreibersUnbekannter FehlerUnbekannter Fehler.Unbekannter Dateityp %i.Unbekannter Blitzmodus %d,Unbekanntes ModellUnbekanntes Modell »%s«Unbekannter WertUnbekannter Wert %04dUnbekannter Wert %04xUnbekannter Wert 0x%04xUnbekannter Zoom-Modus %d Unbekannt (%04x)Unbekannt: 0x%04x Nicht erkannte AntwortNicht passende KarteNicht unterstütztes Kommando.Nichtunterstützter Port-Typ %i = 0x%x angegeben. Initialisierung nicht möglich.Nichtunterstützter Porttyp: %d. Dieser Treiber unterstützt nur USB-Kameras. UnbenutztFirmware des Geräts aktualisierenUpload URLHochladen ist nur in das Ordner »%s« unterstütztLade Bild hoch...Lade Bild hoch...Lade Bild »%s« hoch.Lade Bild hoch...Höher 1Höher 2Benutzerabbruch beim HerunterladenBenutzerdefiniert 1Benutzerdefiniert 2Benutzerdefiniet 3Hersteller ErweiterungBeschreibung der Vendor Extension: %s Vendor Extension ID: 0x%x (%d.%d) Hersteller-ID: %02x%02x Version: Version: %s Vertikaler Autofokus AnVideo ModusVideo OUTVideo AusgangGitterlinien im SucherGitterlinien im SucherVirtueller Horizont im SucherVignette EinstellungenLebhaftFlüchtige EinstellungenLautstärkeWeißabgleichabstufungWEP 128-bitWEP 64-bitWIFI ESSIDWiFi KanalWLAN-ProfileWPL WiedergabelisteWarte auf Beendigung...Warten...Warnungs AnzeigeWarnstufe 0Warnstufe 1Warn Statuscanon_usb_set_file_attributes: canon_usb_dialogue gibt Status 0x%08x von der Kamera zurückWasserWir haben 0x%x erwartet, aber 0x%x erhalten. Bitte kontaktieren Sie %s mit diesen und möglichen weiteren Debuginformationen (auf Englisch).SchwachWeißabgleichWeißabgleich Abweichung Preset 0Weißabgleich Abweichung Preset 1Weißabgleich Abweichung Preset 2Weißabgleich Abweichung Preset 3Weißabgleich Abweichung Preset 4Weißabgleich Abweichung Preset NrAutomatische Weißabgleich Abweichung ProgrammAutomatische Weißabgleich Abweichung SchrittWeißabgleich FarbtemperaturVoreinstellung des Weißabgleichs Name 0Voreinstellung des Weißabgleichs Name 1Voreinstellung des Weißabgleichs Name 2Voreinstellung des Weißabgleichs Name 3Voreinstellung des Weißabgleichs Name 4Voreinstellung Weißabgleich NummerVoreinstellung des Weißabgleichs Wert 0Voreinstellung des Weißabgleichs Wert 1Voreinstellung des Weißabgleichs Wert 2Voreinstellung des Weißabgleichs Wert 3Voreinstellung des Weißabgleichs Wert 4White Board-EffektWeißabgleichWhite BoardWeißlevelWeißabgleichWeißabgleich Anpassung AWeißabgleich Anpassung BWeißabgleich X AWeißabgleich X BFehler beim Zurücksetzen des WeißabgleichsWeitWeitwinkel AFWindows Bild FormatSchreibenSchreibgeschütztFalsche Escape Sequenz: erwartet 0x%02x, erhalten 0x%02x.XMLDokumentJJJJ/MM/AAJahr/Monat/TagJaSie versuchen, »%s« aus dem Ordner »%s« zu löschen, aber das Dateisystem unterstützt kein Löschen von Dateien.Sie müssen einen Port setzen, bevor Sie die Kamera initialisieren könnenSie müssen im Aufnahmemodus sein, um Bilder aufzunehmen.Es muss ein mit /store_xxxxxxxx/ beginnender Folder angegeben werden.Die Logitech Clicksmart 310 hat %i Bild im Speicher. Die Logitech Clicksmart 310 hat %i Bilder im Speicher. Ihre USB Kamera hat einen S&Q Chipsatz. Die totale Anzahl der Bilder ist %i. Einige dieser Bilder könnten Videoclips mit weiteren Bildern sein. Ihre USB Kamera hat einen Aox Chipsatz. Anzahl kleiner Bilder = %i Anzahl großer Bilder = %i Anzahl Bilder = %i Ihre USB Kamera ist eine Kodaz EZ200. Anzahl Bilder= %i Ihre USB Kamera ist eine iClick 5X. Die Anzahl an Bildern auf der Kamera ist %i Ihre USB Kamera scheint eine LG GSM Kamera zu sein. Firmware: %s Firmware Version: %s Der USB-Bilderrahmen hat einen AX203 Chipsatz. Der USB Bilder Rahmer hat einen ST2205 Chipsatz. Diese Kamera kann nur die jeweils letzte Datei löschen. In diesem Fall ist dies Datei »%s«.Fokuszone NahFokuszone NahaufnahmeFokuszone WeitFokuszone MitteFokuszone (Reserviert 1)Fokuszone (Reserviert 2)Fokuszone (Reserviert 3)Fokuszone (Reserviert 4)Fokuszone Sehr NahZoomZoom (in Millimetern)Zoomwert geändertZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: Makro Netzadapter agfa_cl20 Die Agfa CL20 Linux Treiber Schreiber! ****Email an cl20@poeml.de*** *Besuchen Sie uns auf http://cl20.poeml.de/*autoAuto + Rote-Augen-VermeidungBatterie schwarz/weißLangzeitbelichtungKamera inaktiv für > 9 Sekunden, initialisiere neu. kann nicht abgefragt werden. canon_int_capture_image: finalletzte canon_usb_list_all_dirs() fehlgeschlagen mit status %icanon_int_capture_image: erste canon_usb_list_all_dirs() fehlgeschlagen mit status %licanon_int_get_info_func: ERROR: erste Meldung zu kurz (%i < minimum %i)canon_int_list_directory: ERROR: erste Meldung zu kurz (%i < minimum %i)canon_int_list_directory: Ende des Pakets erreicht als erstes Ordnerelement untersucht wurdecanon_int_list_directory: verkürzte Ordnerelemente gefundencanon_serial_get_dirents: %i Byte Arbeitsspeicher konnten nicht reserviert werdencanon_serial_get_dirents: Könnte Größe des Ordnerelementspuffers nicht auf %i bytes veränderncanon_serial_get_dirents: Lesen eines weiteren Ordnereintrags schlug fehlcanon_serial_get_dirents: Anfangend Ordnerelementepaket zu kurz (nur %i bytes)canon_serial_get_dirents: Zu viele Ordnerelemente, wir müssen in einem Teufelskreis geraten sein.canon_serial_get_dirents: Abgeschnittene Ordnereinträge erhalten"canon_serial_get_dirents: canon_serial_dialogue könnte Ordnerelemente nicht holen "canon_usb_get_body_id: Unerwartete Datenlänge erhalten (%i erhalten, %i erwartet)canon_usb_get_dirents: Nutzlast passt nicht in Puffer, '%.96s' (verkurzt)canon_usb_get_dirents: canon_usb_long_dialogue könnte keine Ordnerelemente holen, status %icanon_usb_list_all_dirs: Nutzlast passt nicht in Puffer, »%.96s« (verkurtzt) zu lang.canon_usb_list_all_dirs: canon_usb_long_dialogue könnte keine Ordnerelemente holen, status %icanon_usb_lock_keys: Unerwartete Länge erhalten (%i erhalten, %i erwartet)canon_usb_lock_keys: Unerwartete Länge von »lock_keys« erhalten (%i erhalten, %i erwartet)canon_usb_set_file_attributes: canon_usb_dialogue fehlgeschlagencanon_usb_unlock_keys: Unerwartete Länge erhalten (%i erhalten, %i erwartet)farbigcoolshot-Bibliothek vKonnte Eigentümernamen nicht ändernkonnte Zeit nicht setzenökonomischexternAuffüllblitzfeingPhoto2 Mustek VDC-3500/Relisys Dimera 3500 Diese Software wurde mit der Hilfe von proprietären Informationen geschrieben, die der Firma StarDot Technologies gehören. Autor: Brian Beattie Beteiligte: Chuck Homic Konvertierung von rohen Kamerabildern nach RGB Dan Fandrich Informationen über Protokoll und Rohbildformat, gphoto2-Portierung gsmart300 Kamerabibliothek Till Adam Jérôme Lodewyck Unterstützung für die Mustek gSmart 300-Digitalkameras, basierend auf verschiedenen anderen gphoto2-Bibliotheken und den Spezifikationen, die freundlicherweise von Mustek zur Verfügung gestellt wurde. hoch (640x480)hohe Kompression, hp215 Marcus Meißner Treiber für die HP Photosmart 215 Kamera. Entwickelt auf Basis des hp215 Programmes. Dieser Treiber erlaubt Download von Bildern und Previews, sowie das Löschen von Bildern. iClick 5XTreiber Theodore Kilgore iTTLIm Füllmodusunendlichinternjamcam-Bibliothek vjl2005a Kamera Treiber Theodore Kilgore jl2005bcd Kamera Treiber Theodore Kilgore könnte Tasten nicht sperren.verlustlosniedrig (320x240)niedrige Kompression,mRAWmRAW + Sehr Feines JPEGmRAW + Large Normal JPEGmRAW + Mittel Feines JPEGmRAW + Medium Normal JPEGmRAW + Kleines Feines JPEGmRAW + Small Normal JPEGmittlere Kompression, Menükein Status ausgegeben.keinnormalnicht verfügbar: %sausanAn + Rote-Augen-Vermeidungmit Batterie pccam600_init: Unerwarteter Fehler: gp_port_read lieferte %d statt %dpccam600_close: Return Wert war %d statt %dpccam600_get_file: Erhielt Index %d, erwarteter Index > %dpccam600_init: Erwartete %d Blöcke, erhielt %dpccam600_init: Erwartete > %d Blöcke, erhielt %dWiedergabeEnergieversorgung OKEnergieversorgung nicht OKschreibgeschütztschreibbarBereitAufnahmeRekursive Aufrufe werden vom Sierra-Treiber nicht unterstützt. Bitte kontaktieren Sie %s (auf Englisch).Rote-Augen-Blitz aus. Rote-Augen-Blitz an. Rote-Augen-VermeidungsRAWsRAW + Sehr Feines JPEGsRAW + Large Normal JPEGsRAW + Mittel Feines JPEGsRAW + Medium Normal JPEGsRAW + Kleines Feines JPEGsRAW + Small Normal JPEGsRGBsRGB (Natur optimiert)sRGB (Portrait optimiert)sierra SPARClite-Bibliothek Scott Fritzinger Unterstützung für Sierra-basierte Digitalkameras incl. Olympus, Nikon, Epson, Pentax, und andere. Dank an Data Engines (www.dataengines.com) für die Freigabe ihrer Olympus C-3030Z for USB-Implementierung.spca50x-Bibliothek vGenerischer sq905 Treiber Theodore Kilgore Generischer sq905C Treiber Theodore Kilgore Standardsuperfeinsx330z ist nur-USBZeit gesetztKann initialien CRC Wert nicht raten. Undefiniertunerwarteter Datentyp %iunbekannt (0x%02x)unbekannte Komprimierung %d, unbekannte Auflösung %d) vCalendar1vCalendar2vCard2vCard3Warnung: CRC nicht verglichen (Länge %d, Wert 0x%04x) ########################## libgphoto2-2.5.9/po/cs.gmo0000644000175000001440000061610412623156274012264 00000000000000Þ•vÌCQ |‡À´Á´Ù´î´ÿ´#µ8µRµ#kµµ¤µ¸µ˵äµhöµ_¶r¶‰¶¤¶4¿¶ô¶ ··0·FI··¤·´· ¼·Ç·η×·Ý·ã· æ·bó·;V¸’¸¡¸Å½¸Oƒ¹ Óºݺâºçºìºñºõºûºÿº» »»»»"»+»/»4»8»=»B»I»P»X»_»e»m»t»z»»…»»”»˜»Ÿ»§»®»´»¼»ûԻڻ߻ä»ê»ò»ù»þ»¼ ¼¼¼¼$¼+¼1¼6¼;¼A¼I¼P¼U¼Y¼a¼h¼n¼s¼z¼ ‚¼¼ “¼ž¼£¼§¼ ®¼¹¼ ¿¼ʼμѼ Ù¼ä¼ è¼ó¼ö¼ù¼û¼½ ½½½½½ $½/½ 3½=½A½E½K½N½ Q½\½a½g½ j½ u½€½„½н½½’½ ˜½¢½¨½«½®½·½½½ Ľ νؽ޽⽠è½ò½¾¾ ¾ ¾¾ ¾"¾ (¾2¾5¾8¾>¾B¾E¾G¾M¾ R¾\¾_¾b¾h¾q¾t¾z¾}¾ †¾‘¾«¾ɾ ؾã¾ ë¾ ø¾¿¿ ,¿9¿A¿P¿ X¿ c¿n¿¿ ›¿©¿ ¾¿Ì¿ Û¿ è¿ô¿ À À À +À 8ÀBÀJÀ PÀ ]ÀjÀoÀtÀ‡ÀÀ’À¥ÀªÀ¯À¸ÀÁÀ ×ÀäÀéÀìÀüÀÁ™ Á­¥ÁSÂYÂ]ÃrÊèÿÃÝÃîÃÄÄ,Ä?ÄPÄhÄ‚Ä—Ä ¯Ä»ÄÂÄÓÄåÄúÄ'Å)Å2Å KÅVÅ.iÅ-˜Å ÆÅ ÒÅÞÅïÅ9øÅ2Æ;ÆLÆ^ÆoÆ vÆ‚Æ –Æ£ÆµÆºÆ ÕÆãÆ úÆÇÇ;ÇTÇ\ÇlÇ~LJǠǴÇÒÇ ïÇ ýÇ È È(È8ÈQÈ`ÈxȋȠȵÈÊÈÛÈóÈÉ É É(É=ÉMÉ]ÉxÉ(”ɽÉÍÉ èÉöÉùÉ Ê Ê Ê!Ê1ÊDÊLÊ^ÊoÊsÊ vÊ‚Ê“Ê £Ê°Ê/¸Ê+èÊ1Ë'FË(nË—Ë´Ë ÒËàÌóÌÍ Í Ío-ÍÍ ¯Í ¼ÍÉÍ*èÍ#Î7Î =ÎHÎ MÎWÎiÎrÎzÎÎ žÎ ¬Î ºÎÆÎ ÖÎ âÎîÎôÎüÎÏ Ï Ï #Ï /Ï:ÏLÏhÏpÏ xÏ ƒÏ Ï›Ï ¯Ï »ÏÇÏÌÏ ßÏéÏïÏ þÏ ÐÐ "Ð-Ð ?ÐKÐOÐXÐ_ÐnÐ}ВЧÐO¶ÐÑ Ñ&Ñ EÑRÑ dÑoÑ ‚Ñ ÑÑ­ÑÇÑkçÑ8SÒ#ŒÒ8°Ò9éÒ#ÓA7Ó4yÓ+®Ó(ÚÓ@Ô DÔeÔ1Ô³ÔÐÔ#åÔ Õ&Õ>Õ]ÕqÕ„Õ›ÕµÕ'ÉÕñÕ Ö=!Ö _Ö)kÖ$•Ö>ºÖùÖ6×DI×EŽ×Ô×ñ×& Ø1ØFØUØÐmØ>ÙRÙ ZÙhÙyٌٛٱÙÌÙêÙïÙþÙÚ-Ú >ÚKÚ(dÚÚ¡Ú½ÚÐÚìÚÛ !Û-Û@ÛPÛhÛ xÛ„Û ”ÛµÛÎÛæÛíÛ Ü Ü&Ü;Ü UÜ_ÜqÜzÜ‰Ü’Ü«Ü ¾ÜËÜÜÜ ðÜþÜÝÝÝ7Ý =Ý HÝ SÝ_Ý nÝzÝŒÝ £Ý°ÝÎÝ ãÝíÝÞÞ</ÞlÞ‰Þ›Þ ®ÞºÞ ÎÞ"ÜÞÿÞ ßß=ßRßp߄ߣßÂߨßîßàà)à 2à <à Fà Rà\à{àŠà à:¯à<êà'áDá_áyá&”á»á×áóáâ0â0Oâ€âœâ!¶â'Øâãã>;ãzã‘ã&­ã/Ôã<ä<Aä~ä(˜äÁäÝä ùä*å2Eå-xå4¦å;Ûå0æHæ]æ|æ˜æ5±æ=çæ5%çs[çÏçìç&è'èk0èEœèâèýè…éU éöéýéê*êCê\ê têê ƒê êžê ·ê ÃêÏê æêôê ëÿëìì-ì6ìRìXì]ì×mìEîTî [îiî|î•î¦î¿îØîñî ïï2ï.Rïï žï«ï Æï ÔïÓáï µðEÂðññ-ñMñcñ kñwññ ‘ñžñLµñµòH¸òªô,¬ôÙõéõûõö(ö=öQöeö{öö¥ö¾öÍöèö ÷÷,÷J÷Q÷ a÷ løvø {ø…øšøªø-ºøèøÿø<ùQùnù…ùù·ùÓùòùöùüùú ú ú5ú =úIú Qú[úaúrú‡ú ¦ú °ú ¾úÉúÞúþúûûû+û@û(Vûû'“û5»û ñûüûü #ü1.ü:`ü4›ü-Ðüþüýý3ýHý[ývý’ý«ýÁýÜýðýþþ:þTþ mþ{þŠþœþ³þÄþ Úþ èþöþ ÿ*ÿEÿ`ÿtÿŽÿÿµÿÑÿåÿùÿ  (149>AF5I ’ Ÿ©ºÊÓÚàæ ìö ,Ebr ‰– §³ÂÒUâ 8B_V¶Ë Üçú ÿ N)x’£¾Ï×Ý ãñ#9Vk—·Ïèý&B S^r‰ ¨Ã Û åð " 6AS lwб ÂÌ Õà ïû$"GX"h‹¢«¼Îßø , 8FYl’¥ÄÝö   7 L a s … ‹ ›  « ·  Æ Ñ  å  ð ý  # 2 #A %e ‹ L› è ð fõ ¼\ ‡¡ §´Ôéø !3:Ob g r~”§¹Éâ ê÷ '?Y!w™¹'Óû !4 JUhx˜¸Ñë.GW h v„¤½Íâ"ò.* Y dn t‚‘¢ «¹ÈÍÒ×éý 6CL]pØ’kQ…U×2-`ov†‰¥®À ÔÞðöû " @N _m‚ —¤´È Ø ã ñþ ! 0;OdvŽŸ/¯ßû ( 6@ GTfmvˆš ´%À.æ)?Sd z1‡¹Í:á*GOixާ"Á%ä % @ ] {  ™ ¥ ­ /!B! G!R! j! t! ~!Š!“! «!ÿ¹! ¹"Ä#ÒD$^%?v%¶%£Ë%go&×&Þ&â&ü& '&'E'T'e' n'{';„' À'Ê'4Ó'(((0(5(Q(Y( y( ƒ( ( —(*¡(Ì(ã( é( õ())&)5)N) i)u)‡)š)¬)Á)Ü)ë)*#*=* C*P*k*‡*£*E¨*î*+ %+2+ I+j+s+y+}++ + ¦+°+ Ê+×+ß+ï+þ+(,%9,_,a, g,t, x,ƒ,’, ­, ¸, Å,Ñ,×,Ý,å,ì, õ,--.- E-R-Bd-_§-.S."b."….¨.º.(Â.(ë. /"/=/ [/f/ w/‚/‰//µ/¾/Ç/Ð/ á/ í/ø/ 00*0 A0M0j0†0—0¨0¹0Ê0(Ý01 1#151 Q1\1"k1Ž1ª1Â1Ô1å1í1p2 t2~2‘2­2¼2Í2Ý2í2Kö2B3 J3tU3,Ê3ˆ÷3€4–4§4¶4Æ4Ï4×4 é4ô4 555 05>5 P5 \5 h5 s5~5 ’5!5¿53ß5 646 S6 a6§o67 7 *747 =7H7b7q7!v75˜7GÎ7 8$"8G8O8V8]8 d8q8y8~88œ8¬8 »8 Æ8Ó8 ã8ï8€þ8ñ:q;…;–;§;ª;½; Ý;ê; <<,<5<G<V<k<<#œ<À<Ý<å<ù< =!=5=FM=”=«=Ç= Ì=Ú=á= é=ö=>>.$>S>c> t>~>9‡>Á>×>î>+?2?6?9? H pHzH¬ƒH­0IåÞIYÄK L *L 6L BLPLXL iLvLˆLžL ²L ¿LÌLáLðLM"M 3MAMJMbM gMqMŠMšM ¬MºM ÊMÕMÞM äM ñMüMN N'N7NGNWNgN wN ‚NNœN­N¿NÈN!âN O%O :O[O*tOŸO¹OÌO âOïOÿOPP,P >PLPPPaPqPƒP™P±PÈPáP÷PQQQ .Q;QKQ jQ tQCQÃQÉQçQùQ3R*IRtR”R±RÃR ÊR ÖRâRòRöR SS*SHS ZSgSzS ŒS­SµS ÅS ÒS ßSìST TT /T;TJT fT tT~T”TZ¯T UU 'U4UPUlU ‚UUŸU´UÉUÜU‹ìU–xVWW $W2WAW$QWvWN|WËWšÑW®lXŽYüªY§Z ¸ZÃZ ÉZÔZ ÜZèZ øZ [ [,[=[T[d[ u[€[[¨[Â[!à[\\.\ I\U\f\€\ \œ\®\ ´\ ¿\Í\à\÷\]-]H]\]v]‹]¤]¾]Ô]ê]ð]÷],^=^ C^N^ V^ `^n^ƒ^˜^­^ Â^Ð^ ß^í^ ___ *_8_$S_x_ˆ_#›_¿_ Õ_^ã_ B`M` T` `` l` y`‡``­`¼`jÌ` 7aEaWata!”a¶a¿aÓaäaéa þa b b bz)b¤bªbºb ÌbÙbàbåbêbñbc.dÂCeÁh;ÈjQkµVkÌ lAÙl:mBVm;™m?Õm7nNMn7œn1Ôn3o:o3@o/to¤o¬oHÇopp p'*pRp'epp•pžp¾pÆpZÛpN6qT…qLÚqM'rAur:·ròr ss'sCs Js Vs!`s‚s—s¬s(Äs'ís t#t't 0t;t?tBtRtctztG–tÙÞtè¸uì¡vLŽwbÛw&>x,ex%’x»¸x-ty9¢y)ÜyMz0Tz7…z,½z:êz7%{,]{Š{=©{Fç{K.|Jz|•Å€j[%Æì$ ‚S.‚R‚‚&Õ‚7ü‚:4ƒ;oƒ'«ƒ&Óƒú„ìІ-wˆì¥Š’«Ž ÇŽÑŽçŽûŽ  3=P0a’˜° ¿ Ì Øâ ôÿ!®%DÔ‘/2‘b‘J|‘9Ç‘’’ 5’ C’ Q’ _’ m’{’„’  ’«’®’ À’Ì’ Ô’ ß’é’ñ’ ù’ “ ““5“J“\“o““˜“¨“ Å“ ѓܓ ä“ï“ ””)”?” W”e” x”†”™”¬”Á” ×”å”ö” ••A1•Ds•¸•¿• Ö•-á•–!–4– I–V–^–f–}–Œ–›–ª–!»–"Ý–— — —,— ;— F— P—Z—j—‚—“—™— «— ¸— Æ— Ò— Ý— è— õ— ˜˜ *˜5˜E˜U˜e˜et˜6Ú˜™ ™$™@™\™x™”™°™Í™ë™ š'šCš_š{š—š³šÏšìš ›&›C› `› l› z› †› ’›Ÿ›µ›Ë›Ü›í›œ œœ-œ3œ3Cœ wœ ƒœŽœœl¡œ?-N<|h¹ƒ"žn¦ž6ŸJLŸH—Ÿ+àŸ,  `9 š ­ àÔ è ¡¡0¡H¡`¡e¡{¡ Ž¡ ›¡ ¨¡ µ¡ ¡ Ï¡ Ü¡rè¡[¢`¢{¢ ƒ¢‘¢-–¢NÄ¢Q£Le£P²£?¤?C¤Dƒ¤@ȤI ¥?S¥<“¥QÐ¥N"¦Vq¦VȦX§Xx§Gѧa¨8{¨I´¨þ¨©©3©F© N©Y©a©’f©ïùªé«ø«Ó ¬7߬­ ­)­ 2­=­=N­?Œ­Ì­Þ­ ç­õ­® ®#®<®T®n®…®ž®³®¸®Ì®Ñ®Ø®ê®î®ñ® ¯G¯1]¯6¯(Ư*ﯰ° (° 2° <°F°L°JS°ž°²°ŰÙ°Þ°õ°±&±@±W±p± u±ƒ±“±—²;©²<å²"³ +³5³H³"Q³ t³~³•³¦³¿³ ׳ â³í³ô³Nû³J´Y¶t¶¶¢¶2¶&õ¶%·-B·p·$‰· ®·"Ï·ò·z¸ƒ¸—¸!­¸#ϸ6ó¸*¹ C¹!P¹Er¹O¸¹=º FºTº \ºiºqºzº€º†º‰ºh˜ºL»N»%_»ü…»k‚¼ î½ú½ÿ½¾ ¾¾¾¾¾"¾ $¾1¾ 6¾B¾K¾T¾X¾^¾b¾h¾n¾v¾~¾‡¾¾–¾Ÿ¾§¾®¾³¾º¾þ˾Ͼ×¾à¾è¾ï¾ø¾¿¿¿¿$¿+¿4¿<¿B¿F¿O¿W¿^¿d¿m¿u¿|¿‚¿‡¿Ž¿—¿Ÿ¿¥¿©¿²¿º¿Á¿ Ç¿Õ¿Þ¿ç¿ í¿ø¿þ¿ À ÀÀ #À/À4À7À@ÀIÀ NÀYÀ]ÀaÀcÀ hÀ tÀÀƒÀ‰ÀÀ •À À¥À®À³À¸À¾ÀÂÀÆÀÕÀ ÚÀæÀéÀ òÀýÀÁÁ ÁÁ Á Á)Á/Á3Á 7Á CÁPÁXÁ `ÁjÁpÁuÁ{Á„ÁŸÁ¥Á©Á ­ÁºÁ ¿ÁÉÁ ÏÁÚÁÞÁ âÁïÁôÁøÁ úÁ Â Â+Â3ÂL7„–¶Â)ÑÂ,ûÂ6(Ã_ÃrÆ×Ã,«Ã?ØÃÄ2Ä5CÄ yĚĹÄ0ÙÄ2 Å!=Å(_ňÅ/¥Å'ÕÅ ýÅÆ40ÆeÆ"…Æ$¨ÆÍÆêÆ Ç''ÇOÇ=jÇ'¨Ç3ÐÇÈ<!ÈN^ȭȲÈ5·È*íÈÉ,ÉKÉ'aÉ"‰É/¬ÉÜɼäɺ¡ÊM\ËìªË—̲Ì,ÎÌ#ûÌ#ÍCÍWÍu͊ͥͻÍÏÍ!êÍ Î $ÎEÎWÎ(_ΈÎ&ÎÄÎ'ØÎÏ Ï (Ï4ÏAJÏEŒÏÒÏáÏ4Ð6Ð?>Ð ~ЊЛР²ÐÓÐÛÐ#êÐ0Ñ?Ñ QÑ7^Ñ–ÑG¶Ñ*þÑ")Ò;LÒ)ˆÒ²Ò&ºÒ'áÒ$ Ó+.Ó(ZÓAƒÓ8ÅÓþÓÔ%2Ô&XÔ Ô Ô"ÀÔ3ãÔÕ;6ÕrÕ=’ÕÐÕ6çÕÖ>Ö ^Ö kÖyÖŽÖ¡ÖºÖ(ÚÖ#×'×4C×x×'ˆ×$°× Õ×á× é×ö×"Ø(Ø8ØVØpØ uØ ‚ØØ¦Ø ¹Ø:ÅØDÙFEÙDŒÙ8ÑÙ8 Ú.CÚ$rÚ9—ÚÑÛìÛ ÜÜ/ÜIÜ-çÜÝ)Ý/:Ý7jÝ6¢ÝÙÝ àÝíÝ!Þ1%ÞWÞrÞ Þ-˜ÞÆÞ×ÞèÞ÷Þßß &ß0ß7ß>ß;CßXßQØß4*àM_àR­à á áá á $á 0á=áMá^á%|á$¢áÇá*Îáùáâ"â'@â'hâ(â¹â#Éâ íâøâ ã-ãDã`ãI€ãÊãßã#úãä0äGäaätäŠä ä·ä)Õä…ÿäe…å*ëåPæEgæ%­æ[ÓæB/çVrç\Éçp&è/—è@Çè=éFéfé-†é*´é+ßé- ê9êUê pê‘ê°ê3Èê%üê"ëG;ë ƒëN‘ë3àë'ì"<ìS_ìl³ì` í:í/¼íYìí!Fî%hî+Žîóºî'®ïÖïèïüïð%-ðSð(nð$—ð¼ðÎð-èð'ñ!>ñ`ñ-ñ<­ñ%êñ9òJò1eò*—ò-Âòðòÿòó'1óYónó†ó1¤óÖó-õó #ô.ôCô(Rô%{ô)¡ôËô ÐôÜôñô õõ+õHõeõ‚õõ­õÁõ Êõ:Ôõöö &ö 3ö?ö Pö^öoöŒöŸö·öÒöíö÷÷Z&÷0÷²÷Å÷ Ú÷å÷ û÷ø%"ø Hø@Uø9–øBÐøù:(ù9cù!ù8¿ù7øù0ú$Gúlúuú†ú•ú¨ú5¹ú ïú û1û8Gû9€û'ºû2âû$ü0:ü-kü™ü#µü.Ùüý(ýEGý"ý&°ý×ý*öý$!þFþI_þ©þ!¾þ-àþ.ÿC=ÿGÿÉÿ>èÿ2'/Z8Š1Ã<õJ2W}GÕ@^$x'³PÛX,9…‚¿ Bc-} «f¶D#b"†Ω¨x ! /0P00²ã # )/Yu ‹ ˜(¥ ÎÛð?  @ J Z 7i ¡ ± ¹ ‡Ê R i  p ~ # Á Ü ø  0 H Z 5l .¢ Ñ ð ( 4Fëa ML[¨¹)Ó ý '4=O a€‚Þsâ¥V*ü'G!c(…-®Ü ù ;'[!ƒ¥0¾/ï00.a™®ÊÝå]ý,[0ˆW¹%7;U‘ ±Ò è#  -9Nˆ£!ÂNäP3 „¡¨ ±(»ä) , 6 D#Q'u ³¿ Åæ*70h>„\à 0Jd6lg£Q N] ¬ µ (Ñ )ú .$!,S!>€!?¿!/ÿ!#/"S"l"…"3ž"!Ò"ô"# .#9#$X#}#‘# ¯#Ð#á#-$/$H$a$~$™$¨$Á$Þ$÷$%%% =%K%\%_%d%i%l%q%Rt%$Ç%#ì%7&,H&u&Š& ’&œ&¥&®&·&É&ä&÷&2þ&1'P'l'Œ'¨'·'Ç'Þ'ó'a( j( v(w—()');)0O)€) ‡)’)›)d¯)*+*:*S* d*n*u*{*>Š*>É*=+>F+<…+=Â+9,7:,3r,4¦,-Û,( -2-D-d-€-!-)¿-#é- .+.-G. u.ƒ.•.§.¹.Ë. Ü.&ý.<$/a/}/%˜/¾/Ý/ õ/0 0#050"L0o0CŽ0 Ò0à0<ø051F1V1/n1ž1¼1Ö1ð1 2 2)2A2Y2q2‰2@¡2â2ü2343"E3h3„3! 3"Â3å3í3#4 *484O4f4ƒ4™4·4"Ð4ó45(5':5b5wx5ð5÷5Øþ5ª×6º‚: ==G=>]=5œ=Ò=*ï=>4>M>*h>$“>¸>¾> Æ>&Ô>"û>?5?D?\?d?t?Š?#ž? Â?ã?%@#)@%M@'s@0›@Ì@á@ü@A/A>A]A(zA!£A#ÅA#éA B(B$AB'fB/ŽB)¾BèBC+C?DC„C+œC ÈC4éC#D]BD D¯D¾DÆDÞDîD#E+EAE SE ]EgEoE"…E ¨E/²E8âEF -FNF`F(zF£F#ªF@ÎG\HelH-ÒHI5I%OIuI„I£I'¿I&çIJ%)JOJ UJ_JsJJ(•J ¾JËJÞJôJK/K'>K'fK'ŽK ¶KÄK!ÖKøK L*L_-T_5‚_6¸_ï_Kö_)B`<l`©`"»`IÞ`(a 7aBaJa&_a †a aža´aÅaäaöa b*&b+Qb}b[’bîb c c c!+c McXc wc\cÞcäcd dd7-ded$~d£d ºd@ÈdŒ e –ep eOfPaf"²f Õf2ßf3g"Fg.ig-˜gÆgØg ôg þgh% h Fh Rh ^h0jh›h­h/¿hïhi.iDi Vi3wi«iÁi×iíijOj mjwj!ˆj*ªjÕjÞjïj&k5k"Mkpk €kŠky§k!l5l&Ul|l‘l, lÍlèlEþlDm LmŒWm7äm‰n¦n¼nPÍn,o KoUo)]o‡o˜o¨o)ºoäopp2pIp ]p jpwp Žp"›p!¾p/àp"q'3q[qrqʆqQr przr“r©rTÂr s!s.&sAUsU—sísGþs Ft Qt [t etot t‹tšt©t¹tÉtÚtëtüt uuŒ,uü¹v¶wÑwéwþw0xA2xtx2†x¹xÔx ïx$úxy =y*^y‰y;©yWåy =z0^z,z$¼zázôz^ {$k{@{Ñ{Ú{í{ ö{(|0)| Z|6d|9›|)Õ|ÿ| } ,}n7} ¦}Ç}Ü}&ñ}~ ~,~,4~a~ i~(t~0¥Ö/æ<‚S‚mn‚%Ü‚ƒƒ/ƒJƒ`ƒtƒ ‰ƒ”ƒ,šƒǃ/݃ „„(-„)V„ €„Š„ œ„%½„ã„ç„û„…/5…'e…0…¾…Ô…$ô…0†0J†){†0¥†Ö†$ñ†7‡*N‡,y‡*¦‡ч)å‡"ˆ"2ˆUˆtˆ-‰ˆ ·ˆ؈0÷ˆ)(‰R‰%n‰.”‰1Éõ‰Š4,Š$aŠ*†Š±ŠJË‹Œ%Œ½4Œ¸òŒú«k¦   (3 HUl!}Ÿ½Ðí#ô6‘O‘&k‘’‘ ¤‘±‘¹‘ Ö‘â‘ ø‘’0’F’:^’™’¬’ µ’À’Ô’é’#þ’"“2“P“n“Œ“ª“È“å“ý“”+” @”.L”<{”7¸”+ð”A•4^•8“•7Ì•–"–<– K–Y–a–Ap–,²–ß–÷–—5—G—3]—2‘—6Ä—5û—31˜2e˜'˜˜À˜&ɘ ð˜û˜$™3™C™tT™ É™3Õ™ š#%š\Iš/¦š'Öš"þš!› ;›E›Y›m› ›‹›)«›Õ›7õ›8-œ6fœ6œÔœ7ôœ,4H!e‡.ž ÍØöž'4ž%\ž‚ž ”žŸž*¿žnêžYŸpŸ‹Ÿ(§Ÿ)П.úŸ ) 5 M &d ‹ *¡ œÌ ¤i¡¢¢&¢=¢(O¢Dx¢½¢wТH£¼[£º¤ Ó¤ t¥¦ ˜¦¥¦¬¦¿¦ƦÙ¦ è¦ õ¦+§.§,E§r§‰§ ¥§²§ ɧ ê§$ ¨$0¨U¨o¨!‰¨«¨º¨"Ö¨ù¨ © !©B© T©`©r©‰©(¨©*Ñ©+ü©(ª'Hªpª#Žª#²ªÖªïª ««=«DX«« ¤« °«¼«Ä«Ø«î«¬¬0¬?¬^¬|¬—¬ ­¬$¹¬Þ¬ï¬= ­H­!a­5ƒ­¹­%Ó­Kù­E® K®W®f®z®Ž® ®<´®&ñ®<¯{U¯ѯä¯&°''°0O°€°°®°ʰ(Ò°û°±#±9±tO±ı-ʱ,ø± %²2²:²@²H²Q²me²sÓ³µGµ¥ý¸E£¼Šé¼Ìt½ëA¾g-¿3•¿?É¿> ÀCHÀHŒÀLÕÀJ"Á>mÁ9¬ÁæÁ9ëÁK%Âq‹ÂQ«ÂýÂÃÃ>ÃYÃEkÃ#±Ã ÕÃ"áà ÄÄ,Äx®Äz'Ås¢ÅsÆzŠÆWÇ)]LJÇ.šÇ2ÉÇ üÇ È È=!È,_È!ŒÈ®È;ÌÈ;ÉDÉWÉ(kÉ ”É!ŸÉ'ÁÉ*éÉÊ2Ê-QÊdÊ äÊ×ïËöÇÌW¾Íi΀Î1œÎ,ÎΞûÎ;šÏFÖÏMÐOkÐ8»Ð:ôÐ</Ñ?lÑD¬Ñ,ñÑ7Ò@VÒO—ÒRçÒ†:ÓÁ×r_Ø,ÒØLÿØ9LÙK†ÙpÒÙ]CÚH¡ÚGêÚ92Û<lÛ©ÛwÂÜ:ÞwÈß9@â)z夿¾æ Îæïæ! ç+çAçYç%rç˜çT¸ç è$è?èXèpè ˆè•è´èÇè ØèùèÄéJÆé!ê<3ê!pêY’êOìê,<ëië…ë—ë©ë»ëÍë ßëAéë +ì'8ì`ìoì$ì$´ì Ùìçìïì÷ì íí"8í[íníí•í¨íÄí4Üí î î %î /î(<îeîuî†î î¼îÖîíîÿîï-ï#Fïjï{ïŽï ¦ïÇïFàïN'ð vð!ð£ðI¸ð0ñ!3ñ#Uñyñ “ñ žñ1©ñÛñòñ ò ò!>ò4`ò"•ò¸ò Àò$Ëò ðò üò ó-ó.Dósó‹óŸó ´ó4¾óóóô",ô Oô[ôsô’ô ®ô»ôÑôçôýôh õYvõÐõ×õ?êõ?*ö?jö?ªö?êöA*÷@l÷I­÷#÷÷-ø-Iø-wø-¥ø-Óø,ù..ù.]ù.Œù.»ù.êùú*ú=úNúaú(tú(úÆúÝúôú û/"û#Rûvû}ûC–ûÚû óûþûünü\üXÞü=7ýêuý°`þ®ÿ<Àÿ^ýÿC\. *Ïvú!q “!´#Ö%ú% %F%l'’º É#ê%<Sj˜·° h7u ­¹ÊZã^>Zcøh\IÅBmRTÀw`?î^. [ ré n\ tË p@ Y± i Hu [¾  # ; [  z  † ’ § £® RXkì€=m4«à ü G$Hlµ Ñßò, -8/f1–,È1õ'>-Gu ~‰™¡0©ÚPð4A@v3·5ë!0Jgy Š–až,,-Zz,-¬/Ú1 ,<1i›   Á<âA2Bt · ÃÏïD EPj}˜ ³ ¾ÉÐl×Ö °²Ñ;a(6qc}sØm†`”å[j™(é`€§3õ™]€¶SW  ó+³$—ãܾànž1åqØ p9(Þ"`=wÐüu¬ª¹61Á4·™²Ô‡±×wtš›œ,4YÚh¦L—ŸP­Ïyæ R³Æ8s?\ƒE4ýìÄ£ƒOÒïºÃnÿ/MÛÊ£%®^Q7Tdjr0…[•!fµÔÄz#FÔ®µí6ùŒ‰¶1…8¾œ†:IÄFàåiŸìa·Ë-IPÁõ¤èºcûÂB?ñUÞîÜ`³ýv»\áÈæ:" Á¥;vˆÓ.ìCxFnh#XØyÓ>Þp³bÚM/ÛÆ ¢Ø‡’ò»J+^ôYMr9#NŒCÚ&‚þí8îAOq‰ÚeiùÍ,uÊ–’ΤΩzª%Æ2žÛ„Éöǹմgs¥w÷¯X] ß«EÃ[4ÏâßÏ¿ø‡¸"Íì(Z1õU~Ĭîý‹BÄ9j’?{›Yœ¦ð£†…LjûÑÊ.é½ ™IÞIbàrOG}*ŽòÔzsn/ªåø©!d’ŠekV,åô:ÅNñB¦0aK2òœ ?,ú-ˆT‘h&;ü|!Åi~‚oÑüŠzøò…"9[TÔØ¿ŸQ¼-œ±êOÃÎM›Q6z§Ýî>©<<7¿¯c´ôIªÀw¥ š»×Ro2ðÉ{ºË¶ÑÈËÞ‰^Ü˧Mø®–³ó§†ø'ACäÔ”¬‘†ù¬xž0vÒiD«cHÙ˜c∴’|¨Lyõ†1ßI¢'ܺ¡5©P‹w¢D)"ÏÎ} ¯æ~Ý.b½úáTŠVŽTÂZâ° —ÁßZ˜Wÿ´ä.öÉÉ¡žJjÚª!ç«<?vÕt±Ù£²éŠZ›±ú%"˜Jµ>‚ìÙëºÅÆ»l¶E¼?X¾Õ¤H<ä=åb6_­^”'è}mT¾5&Œ±{;¼:É£ßê6øá•M¼qØb'*gÝGf2À_Ï-ðR3ŠÞ~ ó8ñìoAö}͇BhY6kb eëZ2‹qpNJ á¹,B]Ÿ:ò,\v.þ“è –çÏØ°$·˜KÒh|nçm^cŽ¡0OMç¿Ò+Ð „²2ù W^·ËÌjÎφÁ(…`BÔPæJ€)3­lú0 ]>%’vþ(tvo‘¬ý+¹<Gô¿Ùž“ÇŸ8TUÒÉãWveÃ÷àe¶¯½3 ÿ‡6 +~,/ÐS¾‡eº&éexﹿ\ããŠä[  V©J¢»n|Ã~ñd„s$&#ч‰žûš€0ˆ”¢ V ¦d{1æL«²AÎÑÖ#ÂpTÛK&öê¨c¬!ãøùÜ)WâÜ /eç51K>~DÝ5‚ïó ⪼?@Al©ïo›oÏÐRÊ—æq‘l>4'WC¦)žtSðÀ„ÅgµÆPÍ H7 ´-ëGÉmY”ˆÌ%rY‡_3â¸èb¢dô}G]9fðk‹* fåOB><¾VxOwÈåohŒµ­î\)ú8h.ÞrÖLEP²?_Q($l*»;5¼ Ñe¾“ì:ÿ–ýsG(Z½Ð„NÆ:SõÂË59f'¾·;›HÍ¡ÙPà—¡µ–JYYæg|žck–©Å<S™¦þ¢ë…dÌX®=‰þ5ÿN ’XÛ-F\]^iñZIïDx%xmà=•ôÈ€W_Á\rúÒä i§U‘pdu­Äj‘˜™š4°¸xE³½1LŠí÷p—$XwÈÇ|ûÿÀNC%-¯Ç¨äD*y{#+ÊR=ÎÕ‘@°:Ð×ö æƒ`ôõö¤t&€3¥ÀÜ$‚­¢£È ái²‹Ú N«ÓÃR<r±=ºQ§ãð냷ù·/¸.r¤|• Ä-éúZl’@;§3öüÿÎp ¨g]Xá ¯P0Ø—6™mh`>u”–ý[ÓܦqO ¤Lá;¡¶ƒÒGþFI¯ˆþŠÇÅÕÌ9dA'×ÖÔ«qêœTW]çQk¼ëõaÄfZàª},þU/.ü_Q“}bÖS ‹Ru¦Õ/“ÙXÇÿ̸.™š‚Ý] òóô ƒK¥nÍ9îla ‹”fügŽHœÆR+fa«¬ýÓÐàUó{{¸&UûVk7ù…úlB7¥Erû píN¨ á³_2=5!{»µüGµqÇÛ‚–L݉„½$)êÓê)k©ísŒ­•òo)÷!£¸jÌig­^ÖjS0 ÀñÉ é?JÀ#@ÕÍý¤wÑèR\M2îI±äÊ *ÙËu÷fûˆx!“^çtuèFu¯Å¡€AºÌ†ÿW³ù;«°Û2ä°ÝõXŽ•d)˜kzßÁ®Âoã*@Ct÷‰'/¬ì èíC˜ ÒÚ” @ñygí=¸×gÁòè3ªÈ¨Ç ´p•l *Â"šEçDé£4askâPÖ &vsFŽV"#$F+7my¤K½8zŒðŸ××ËuŽA7c@H®L¹"D@ÖEñ‹ƒVA*ü4Â`#8|®b`aF´z›B%„1-O¶USKãay%D€yŒ×3šð+ G‘“ƒ¿ß íKÌœŸïڲƹÊmV ÍÛ˜$ó¹ÐŽÈ!û¡J»SÝ789÷·H½ß ÞëDîÓ¥¶tâŸHÓ‰_ëén®÷0UY[óÙê'Õ¼4tö<7:Àm5Eï~C›ˆ—‚°¥ø[“NQ…„h,@ •_C ¨êK¨±QiH\´ÚÊ=[>MÅ(n Access Capability: %s Canon Wifi support File Download, Filesystemtype: %s Free Space (Bytes): %llu (%lu MB) Free Space (Images): %d Generic Image Capture, Maximum Capability: %llu (%lu MB) Nikon Wifi support No Image Capture, Storage Type: %s StorageDescription: %s VolumeLabel: %s Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Capture Formats: Device Capabilities: Device Property Summary: Storage Devices Summary: Drive %s %11s bytes total %11s bytes available Serial Number: %s Version: %s (battery is %d%% full) PTP error %04x on query Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d error %x on query. not read out. %.0f mm%.1f stops%0.4fs%d %d/%d%d mm%d/%d%f%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)(Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 (Short)1 EV1 fps1 min1 minute1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/250s (Auto FP)1/25s1/2s1/301/30s1/3200s1/320s1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 mins10 minutes10 mm10 seconds100%10s11 fps1152 x 86412 mm1280 x 96013s1515 mins15 minutes15s16 seconds1s1x22 EV2 fps2 seconds2.02.0 m2.5s2.5x20 seconds20s21 points25%25s29 mm2s2x3 (Normal)3 EV3 fps3030 minutes30 seconds30s34 mm3s3x44 fps4 seconds41 mm4s4x5 (Long)5 fps5 mins5 minutes5 seconds50 Hz50%51 mm51 points51 points (3D)58 mm5s5x6 fps6 mm6 seconds60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 seconds8s8x9 fps9 points9xA-DEPACAC PowerAC adapterAC adapter is connected. AC adapter is not connected. ADL bracketingAE & FlashAE LockAE Lock onlyAE LockedAE lock (Hold)AE lock (Reset on release)AE lock onlyAE onlyAE-L/AF-L ModeAE-lockAE/AF LockAE/AF lockAEAF Lock Button 2AEB Exposure CompensationAF ActivationAF Area IlluminationAF Area PointAF Assist LampAF Beep ModeAF DistanceAF LCD Top Mode 2AF Lock HoldAF Lock OnAF Lock OnlyAF Lock onlyAF LockedAF ModeAF OnAF On ButtonAF lock onlyAF-AAF-CAF-C Mode PriorityAF-ONAF-SAF-S Mode PriorityAF11AF51AI FocusAI ServoASIC Revision: %d.%d ASX PlaylistAUTOAVAV Lock SettingAV MaxAV OpenAX203 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.AX203 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.A_DEPAbout Konica Q-M150: This camera does not allow any changes from the outside. So in the configuration, you can only see what it is configured on the camera but you can not change anything. If you have some issues with this driver, please e-mail its authors. Abstract Audio AlbumAbstract Audio PlaylistAbstract Audio Video PlaylistAbstract Calendar ItemAbstract Chaptered ProductionAbstract ContactAbstract Contact GroupAbstract DocumentAbstract Image AlbumAbstract MediacastAbstract MessageAbstract Message FolderAbstract Multimedia AlbumAbstract Video AlbumAbstract Video PlaylistAccess modeActionActive AF SensorActive D-LightingActive Pic Ctrl ItemAd-hocAdc65 Benjamin Moos AdobeRGBAdvanced Transfer CancelAlbum nameAlkalium manganeseAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Angle LevelAnti-redeyeAnti-redeye FillAnywhereAox generic driver Theodore Kilgore ApertureAperture SettingAperture SettingsAperture changedArtistArtist NameAssign Func. ButtonAssist LightAudible.com CodecAutoAuto + Red Eye SuppressionAuto ApertureAuto Bracket SelectionAuto DX CropAuto Distortion ControlAuto Exposure Bracket CountAuto Exposure BracketingAuto FPAuto Focus AreaAuto Focus Mode 2Auto ISOAuto ISO P/A/DVP SettingAuto Meter Off TimeAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off InfoAuto Off MenuAuto Off PhotoAuto Off TimeAuto Off TimersAuto Power Off (minutes)Auto Slow SyncAuto White Balance BiasAuto exposure lockAuto focus: AI focusAuto focus: AI servoAuto focus: one-shotAuto sensitivityAuto, red-eye reductionAutofocus ModeAutofocus error.AutomaticAutomatic Automatic (No Flash)Automatic FlashAutomatic MacroAutomatic Macro (close-up)Automatic Red-eye ReductionAutomatic exposure adjustment on previewAutomatic flashAutomatic flash on captureAutumn colorsAvAv MaxAv Max ApexAv OpenAv Open ApexAvailable ShotsAvailable memory: AverageAverage FilesizesAverage MeteringB/WBWBW ContrastBW Filler EffectBW Setting TypeBW SharpnessBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for card status %dBad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery Cell KindBattery LevelBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery Life: %i Battery ModeBattery TypeBattery exhausted, camera off.Battery level: %.1f Volts. Revision: %08x.Battery status: %s, AC Adapter: %s BeachBeach/SnowBeepBeep ModeBeep mode changedBeep offBeep onBestBit rate %ld is not supported.Black & WhiteBlack & whiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlossomBlueBottomBracket ModeBracket OrderBracket SetBracketingBracketing EnableBracketing Frames and StepsBright+Bright-BrightnessBrightness+Brightness-Brightness/ContrastBuiltin RAMBuiltin ROMBulbBulb Exposure TimeBulb ModeBurstBurst IntervalBurst NumberBusyButtons and DialsCCD NumberCCD Serial NumberCHDK ScriptCRWCSM MenuCameraCamera ActionsCamera Body IDCamera ConfigurationCamera Date and TimeCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ManufacturerCamera ModeCamera Mode Not Adjust FNumberCamera ModelCamera Model: %s Camera OK.Camera OrientationCamera OutputCamera OwnerCamera SettingsCamera Status InformationCamera and Driver ConfigurationCamera appears to not be using CompactFlash storage Unfortunately we do not support that at the moment :-( Camera busy. If the problem persists, please contact %s.Camera could not complete operationCamera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera has taken %d pictures, and is using CompactFlash storage. Camera is configured for lights flickering by %dHz. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera unavailable: %sCamera was already activeCamera was woken upCan't capture new images. Unknown errorCan't delete all images.Can't delete image %s.Can't upload this image to the camera. An error has occurred.CandlelightCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCanon Auto Exposure ModeCanon EOS Capture failed to release: Perhaps no focus?Canon EOS Capture failed to release: Perhaps no more memory on card?Canon EOS Capture failed to release: Unknown error %d, please report.Canon EOS Capture failed: %xCanon EOS Remote ReleaseCanon EOS Trigger Capture failed: 0x%xCanon EOS ViewfinderCanon EOS ZoomCanon EOS Zoom PositionCanon PowerShot series driver by Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5 additions by Ole W. Saastad Additional enhancements by Holger Klemm Stephen H. WestinCanon Shooting ModeCaptureCapture DelayCapture SettingsCapture Size ClassCapture TargetCapture Transfer ModeCapture size class changedCapture type is not supportedCardCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card name: %s Free space on card: %d kB Card not supported.Card removed during access.Cell Kind PriorityCenter Button Playback ModeCenter Button Shooting ModeCenter Button Zoom RatioCenter SpotCenter Weight AreaCenter WeightedCenter Weighted AverageCenter-WeightedCenter-spotCenter-weightedCenter-weighted Average MeteringCenter-weighted MeteringCenter-weighted averageCentreCentre Weight AreaCentre-spotChange Camera Mode FailedChange Pic Ctrl ItemChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorChildrenChoose Color TemperatureClean Image SensorClean SensorClean data storeClose Media SessionClose sessionClosest SubjectCloseupCloudyCloudy White Balance BiasColorColor GainColor ModeColor ModelColor SettingsColor SpaceColor TemperatureColor or Function ModeColor sketchCommand can not be cancelled.Command order error.CommanderCommunication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompatibility ModeCompressionCompression SettingConfigurationConfiguration for your FUJI cameraConnected to cameraContinuousContinuous High-speed ShootingContinuous Low SpeedContinuous Low-speed ShootingContinuous ShootingContinuous Shooting Speed HighContinuous Shooting Speed SlowContinuous Speed HighContinuous high speedContinuous low speedContinuous silentContinuous-Servo AFContrastContrast+Contrast-Copy objectCopyrightCopyright (max. 20 characters)Copyright InfoCopyright InformationCorrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not change ISO speedCould not change apertureCould not change beep modeCould not change exposure compensationCould not change flash modeCould not change focus modeCould not change image formatCould not change shooting modeCould not change shutter speedCould not change time of file '%s' in '%s' (%s).Could not change zoom levelCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file '%s' in folder '%s' (error code %i: %s).Could not delete file.Could not detect any cameraCould not detect any camera at port %sCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get information about '%s' (%s).Could not get information about '%s' in '%s' (%s).Could not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Create Wifi profileCreation date: %s, Last usage date: %sCreativeCreative PC-CAM 300 Authors: Till Adam and: Miah Gregory Creative PC-CAM600 Author: Peter Kajberg Current Mode: Camera Mode Current Mode: Playback Mode Current camera time: %04d-%02d-%02d %02d:%02d Free card memory: %d Images on card: %d Free space (Images): %d Battery level: %d %%.Currently, PTP is only implemented for USB and PTP/IP cameras currently, port type %xCustomCustom Functions ExCustom Whitebalance PC-1Custom Whitebalance PC-2Custom Whitebalance PC-3Customise Command DialsDD/MM/YYYYDEPDPOF VersionDark on lightData has been corrupted.Date & TimeDate FormatDate Time Stamp FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDate: %sDay/Month/YearDaylightDaylight White Balance BiasDebugDeepDefault gatewayDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. Delayed RemoteDeleteDelete objectDeleting image %s.Detected a "%s" aka "%s"Detected a '%s'.Development Parameters 1Development Parameters 2Development Parameters 3Device CertificateDevice IconDevice VersionDevice does not support setting object protection.Digita Johannes Erdfelt Digital Camera Layout (DCIM)Digital ZoomDigital Zoom MagnificationDigital macroDigital zoomDimera 3500 ver. %s %d/%d %d:%d. %d pictures used of approximately %d (high res) or %d (low res). Camera features: %s, %s, %s, %s. Flash is %s, is %s and is %s. Resolution is set to %s. Camera is %s powered %s. Direct PrintDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisable trusted file operationsDisconnecting camera.Disp AvDisp Av MaxDisplayDisplay Formats: Distant ViewDo not display TV menuDon't know how to handle camera->port->type value %i aka 0x%x in %s line %i.Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy to port your driver on this cam! Download program for GrandTek 98x based cameras. Originally written by Chris Byrne , and adapted for gphoto2 by Lutz Mueller .Protocol enhancements and postprocessing for Jenoptik JD350e by Michael Trawny . Bugfixes by Marcus Meissner .Download program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading %s...Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...Drive Canon DSLR AutofocusDrive Canon DSLR Manual focusDrive ModeDrive Nikon DSLR AutofocusDrive Nikon DSLR Manual focusDriverDriver SettingsDriver framework written by Lutz Mueller . This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro "itojun" Itoh . Integration of QVplay by Michael Haardt .Dual IrisDuskDusk/DawnDust Reference ErrorDynamic AF AreaDynamic-area AFDynamic-area AF with closest subject priorityEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.ESPESSIDEV StepEVF ModeEZoom Size of TeleEZoom Start PositionEconomyEffect ModeEffectsEmergencyEmptyEnable CopyrightEnable Image CommentEnable trusted file operationsEncounterEncounter BoxEncryptionEncryption key (hex)End trusted application sessionEnglishEnhancedErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationError waiting for ACK during initialization, retryingEvaluativeEvaluative MeteringEvent Emulate ModeEverywhereExecute predefined command with parameter values.Expected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.ExposureExposure Aperture LockExposure Base CenterExposure Base MatrixExposure Base SpotExposure Bias CompensationExposure Bracketing ProgramExposure Bracketing StepExposure CompensationExposure Compensation (EV)Exposure Delay ModeExposure Display StatusExposure ISO StepExposure Index (film speed ISO)Exposure Indicate LightupExposure Indicate StatusExposure LockExposure MeterExposure MeteringExposure Metering ModeExposure ProgramExposure Program ModeExposure StepExposure TimeExposure compensationExposure compensation changedExposure compensation: %d Exposure compensation: %s Exposure delay modeExposure level on previewExternal FlashExternal Flash AttachedExternal Flash CompensationExternal Flash ModeExternal Flash SortExternal Flash StatusExternal syncExtra highF-NumberF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d FNumber LockFV LockedFace-priority AFFactory DefaultFaithfulFar %dFar 1Far 2Far 3Far sceneFast FilesystemFast shutterFileFile '%s' could not be found in folder '%s'.File '%s/%s' does not exist.File Deletion, File Number SequencingFile Upload File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.Filetype: FlashPix (Filetype: JPEG (Fill flashFinder ISO DisplayFineFireworksFirmwareFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware VersionFirmware version: %d.%02d Firmware: %d.%d FisheyeFixedFlashFlash ChargedFlash Command A CompensationFlash Command A ModeFlash Command A ValueFlash Command B CompensationFlash Command B ModeFlash Command B ValueFlash Command ChannelFlash Command Self CompensationFlash Command Self ModeFlash Command Self ValueFlash Commander ModeFlash Commander PowerFlash CompensationFlash Exposure CompensationFlash Level LockFlash LockFlash MRepeat CountFlash MRepeat IntervalFlash MRepeat ValueFlash ModeFlash Mode Commander PowerFlash Mode Manual PowerFlash OffFlash OpenFlash Quantity CountFlash SettingFlash SettingsFlash Shutter SpeedFlash SignFlash Sync. SpeedFlash White Balance BiasFlash autoFlash mode changedFlash mode: auto, Flash mode: force, Flash mode: off Flash offFlash onFlash onlyFlash/apertureFlash/speedFlash/speed/apertureFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFlexible ProgramFlicker ReductionFlourescent TypeFlourescent-1-home-6700KFlourescent-2-desk-5000KFlourescent-3-office-4200KFluorescentFluorescent HFluorescent Lamp 1Fluorescent Lamp 2Fluorescent Lamp 3Fluorescent Lamp 4Fluorescent Lamp 5Fluorescent White Balance BiasFluorescent-1-home-6700KFluorescent-2-desk-5000KFluorescent-3-office-4200KFocal LengthFocal Length DenominatorFocal Length MaximumFocal Length MinimumFocal Length TeleFocal Length WideFocusFocus Area WrapFocus Area ZoneFocus AreasFocus DistanceFocus LockFocus Metering ModeFocus ModeFocus Mode 2Focus Point BrightFocus mode changedFocus positionFocusing PointFocusing Point on Center Only, AutoFocusing Point on Center Only, ManualFocusing error.Folder '%s' only contains %i files, but you requested a file with number %i.FoliageFoodFor bulb capture to work, make sure the mode dial is switched to 'M' and set 'shutterspeed' to 'bulb'.For cameras with S&Q Technologies chip. Should work with gtkam. Photos will be saved in PPM format. All known S&Q cameras have two resolution settings. What those are, will depend on your particular camera. A few of these cameras allow deletion of all photos. Most do not. Uploading of data to the camera is not supported. The photo compression mode found on many of the S&Q cameras is supported, to some extent. If present on the camera, video clips are seen as subfolders. Gtkam will download these separately. When clips are present on the camera, there is a little triangle before the name of the camera. If no folders are listed, click on the little triangle to make them appear. Click on a folder to enter it and see the frames in it, or to download them. The frames will be downloaded as separate photos, with special names which specify from which clip they came. Thus, you may freely choose to save clip frames in separate directories. or not. For cameras with insides from S&Q Technologies, which have the USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051, 0x9052, or 0x913D. Photos are saved in PPM format. Some of these cameras allow software deletion of all photos. Others do not. No supported camera can do capture-image. All can do capture-preview (image captured and sent to computer). If delete-all does work for your camera, then capture-preview will have the side-effect that it also deletes what is on the camera. File uploading is not supported for these cameras. Also, none of the supported cameras allow deletion of individual photos by use of a software command. ForceForce Flash Format card and set album name.Format compact flashFormat storageFrames Left: %i Frames Taken : %4d Frames Taken: %i FrenchFriendly Device NameFront-curtain syncFullFull ImageFull ManualFull View File FormatFull-time-servo AFFunction Button 2Functional ModeFunctional Mode: 0x%04x GeneralGeneric FlatGeneric HierarchicalGermanGet Next Data BlockGet Proximity ChallengeGet Registration ResponseGet WMDRM-ND License ResponseGet WMDRM-PD Application ResponseGet device property descriptionGet device property valueGet interdependent property descriptionGet license stateGet meter challengeGet meter responseGet number of objectsGet objectGet object handlesGet object infoGet object properties supportedGet object property descriptionGet object property listGet object property valueGet object referencesGet partial objectGet secure time challengeGet secure time responseGet storage IDsGet storage infoGet sync listGet thumbnailGet transferable playlist typesGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.Gray scaleGrayscaleGreenGroup DynamicGroup PTN TypeHDR High DynamicHDR ModeHDR SmoothingHardware ErrorHi 1Hi 2HighHigh (1152 x 872)High (good quality)High 2High ISO Noise ReductionHigh ISO noise reductionHigh controlHigh keyHigh sensitivityHigh-Speed ShutterHighlight active focus pointHoldHost Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?Hue AdjustmentHyPictI/O in progressIDIP address (empty for DHCP)ISO AutoISO Auto Hi LimitISO Auto High LimitISO SpeedISO speed changedIconsIdleIllegal parameter.Illum SettingImageImage %s is delete protected.Image & SoundImage AdjustmentImage CommentImage Comment EnableImage Comment StringImage FormatImage Format CFImage Format Ext HDImage Format SDImage ModeImage QualityImage ReviewImage RotationImage Rotation FlagImage SettingsImage SizeImage StabilizationImage format changedImage height: %d Image number not valid.Image protected.Image size: %d Image type %d is not supported by this camera !Image type %d not supportedImage type is not supportedImage width: %d Img Conf TimeImmediateIn useIncandescentIndicator DisplayIndoorInfinityInfinity/Fish-eyeInfo Disp SettingInfo Display Error StatusInformationInformation on STV0680-based camera: Information regarding cameras with ID 0x2770:0x9153. We do not recommend the use of a GUI program to access this camera, unless you are just having fun or trying to see if you can blow a fuse. For production use, try gphoto2 -P from the command line. Note: it is not possible to download video clips. Initial camera response '%c' unrecognizedInitializing CameraInitiate captureInitiate open captureInternal RAMInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal error looking for camlibs. (path names too long?)Internal memory: %d MB total, %d MB free. InvalidInvalid ISO speed settingInvalid StatusInvalid Value ( %d ) Invalid aperture settingInvalid beep mode settingInvalid capture size class settingInvalid exposure compensation settingInvalid flash mode settingInvalid focus mode settingInvalid image format settingInvalid shooting mode settingInvalid shutter speed settingIris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JD11 ConfigurationJPEGJPEG BasicJPEG Compression PolicyJPEG FineJPEG NormJPEG NormalJapaneseKeep filename on uploadKids and petsKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BacklightLCD Backlight and Info DisplayLCD BrightnessLCD IlluminationLCD ModeLCD Off TimeLED ModeLG GSM generic driver Guillaume Bedot LandscapeLanguageLargan driver Hubert Figuiere LargeLarge Fine JPEGLarge Normal JPEGLeftLens Focal Length (Non CPU)Lens IDLens Maximum Aperture (Non CPU)Lens ModeLens NameLens SortLens TypeLens direction does not match flash light Lens is not connected LightLight MeterLight on darkLight too dark.List Wifi profilesList all filesListing files in '%s'...Listing folders in '%s'...Lithium IonLive View AF AreaLive View AF FocusLive View AF ModeLive View Drive ModeLive View Image Zoom RatioLive View ModeLive View Prohibit ConditionLive View StatusLoading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!LockLogitech Clicksmart 310 driver Theodore Kilgore Long Exp Noise ReductionLong Exposure Noise ReductionLong shutterLooking for camera ...Looks like a modem, not a cameraLosslessLossyLowLow (576 x 436)Low (best quality)Low 2Low LightLow Speed SynchronizationLow contrastLow keyLow sensitivityLow sharpeningLow-Speed ShutterLow-speed shutter function not availableLower case letters in %s not allowed.MM-DEPM3U PlaylistM4AMF (fixed)MF (selection)MHT Compiled HTML DocumentMM/DD/YYYYMPL PlaylistMTR > UnderM_DEPMacroManagedManualManual 2Manual FocusManual Mode BracketingManual Movie SettingManual Set Lens NumberManual focusManufacturer: %s Mars MR97310 camera library Theodore Kilgore Mars MR97310 camera. There is %i photo in it. Mars MR97310 camera. There are %i photos in it. MatrixMatthew G. Martin Based on fujiplay by Thierry Bousch Max. Aperture at Max. Focal LengthMax. Aperture at Min. Focal LengthMax. Focal LengthMaximalMaximum Aperture at Focal Length MaximumMaximum Aperture at Focal Length MinimumMaximum ShotsMaximum continuous releaseMaximum number of Images: %d Media CardMedia Card GroupMedia CastMediumMedium (1152 x 872)Medium (better quality)Medium 1Medium 2Medium 3Medium Fine JPEGMedium HighMedium LowMedium Normal JPEGMedium highMedium sensitivityMemory Left: %i bytes Memory cardMemory card status (%d): %s Memory in camera: %d Mbit. Menu Bank Name AMenu Bank Name BMenu Bank Name CMenu Bank Name DMenus and PlaybackMetadata only supported for MTP devices.Meter Off TimeMetering ModeMf Drive Step EndMf Drive Step InsufficiencyMicrophoneMicrophone offMicrosoft Excel Spreadsheet (.xls)Microsoft Powerpoint (.ppt)Microsoft Word DocumentMin. Focal LengthMiniature effectMinimalMinimum Shutter SpeedMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Mirror UpMirror Up SequenceMisc exposure/lens settingsMissing NumberMl Spot PositionMlSpotPosAfLinkMlSpotPosCenterModel IDModel: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Model: %s Capacity: %i Mb Power: %s Auto Off Time: %i min Mode: %s Images: %i/%i Date display: %s Date and Time: %s Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s Modeling FlashModelling FlashModerateMonitorMonitor Off DelayMonochromeMonth/Day/YearMove objectMovie Card SlotMovie MicrophoneMovie QualityMovie Screen SizeMovie SoundMovie VoiceMulti SpotMulti spotMulti-Spot MeteringMulti-spotMultiple Focusing Points (Center)Multiple Focusing Points (Left)Multiple Focusing Points (No Specification), ManualMultiple Focusing Points (Right)Multiple Focusing Points, AutoMultiselectorMup Mirror upMustek MDC-800 gPhoto2 Library Henning Zabel Ported to gphoto2 by Marcus Meissner Supports Serial and USB Protocols.MyColorsNEF (Raw)NEF+BasicNEF+FineNEF+NormalNIKON Auto Bracketing SetNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName '%s' (%li characters) too long, maximum 30 characters are allowed.Name PrefixName to set on card when formatting.Near %dNear 1Near 2Near 3Network maskNeutralNextNickel cadmiumNickel hydrideNight LandscapeNight PortraitNight ViewNight VisionNight landscapeNight sceneNight snapshotNikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. Nikon Exposure TimeNikon Flash ModeNikon ViewfinderNoNo CF Card ReleaseNo Compact Flash Card detected No Dual IrisNo EXIF data available for %s.No File Deletion, No File Upload No FlashNo Open Capture, No Power LightNo Resolution SwitchNo SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card in camera. No card present.No memory card presentNo reason availableNo response from cameraNo space available to capture new images. You must delete some images.No space left on card.No vendor specific capture NoneNone selectedNormalNormal Normal AF OnNormal-area AFNot FullNot enough free spaceNot enough memory available on the memory cardNot in LiveviewNot in fill modeNot readyNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOS error in camera communicationOffOfficeOlympus 750 Ultra Zoom: (1) Olympus 750UZ has a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both the 'OK' and 'quickview' buttons until the camera control menu appears. Set it to control mode. (2) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.OnOn + Red Eye SuppressionOn screen tipsOn, red-eye reductionOne ShotOne-push AutomaticOnly root folder is supported - you requested a file listing for folder '%s'.Open Capture, Open Media SessionOpen sessionOperation ModeOperation cancelledOptimal qualityOptimize ImageOrientationOtherOther PTP Device PropertiesOther SettingsOther command executing.Out of FocusOut of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner NameOwner name changedPPALPCPLS PlaylistPTP Access DeniedPTP Capture Already TerminatedPTP Device BusyPTP Device Prop Not SupportedPTP General ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Property 0x%04xPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Standard Version: %d.%d PTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP TimeoutPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePTP VersionPTP2 driver (c) 2001-2005 by Mariusz Woloszyn . (c) 2003-%d by Marcus Meissner . This driver supports cameras that support PTP or PictBridge(tm), and Media Players that support the Media Transfer Protocol (MTP). Enjoy!Packet was rejected by camera. Please contact %s.Pan FocusPanFocusPanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic DC1580 gPhoto2 library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic introduced image capturing technology called PHOTOSHOT for the first time, in this series of Palmcorders. Images are stored in JPEG format on an internal flashcard and can be transferred to a computer through the built-in serial port. Images are saved in one of two resolutions; NORMAL is 320x240 and FINE is 640x480. The CCD device which captures the images from the lens is only 300K and thus produces only low quality pictures.Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk Parameter 1Parameter 2Parameter 3Parameter SetPartialPartial MeteringParty/IndoorPath not absolutePerceived Device TypePersistent SettingsPet PortraitPhoto EffectPhoto Info. PlaybackPhoto in moviePhotos on camera: %d Picture Frame ConfigurationPicture SettingsPicture StylePicturesPictures in camera: %d PlayPlay modePlayback Container IndexPlayback ObjectPlayback PositionPlayback RatePlaysForSure IDPort speedPortraitPowerPower SavingPower WindPower down devicePre-Capture DelayPresetPreset Custom 1Preset Custom 2Preset Custom 3Preset Custom 4Preset Custom 5Press FullPress HalfPreview ButtonPreview Button 2Preview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProcess WFC ObjectProduct ID: %02x%02x Profile nameProhibit Flash QualityQuick ResponseQuick Response RemoteQuick Review TimeQuiet ReleaseRAWRAW + JPEG BasicRAW + JPEG FineRAW + JPEG NormalRAW + Large Fine JPEGRAW + Large Normal JPEGRAW + Medium Fine JPEGRAW + Medium Normal JPEGRAW + Small Fine JPEGRAW + Small Normal JPEGRAW 2RGB GainRTC Status: %d Raw Bit ModeRaw CompressionRead Only with Object deletionRead-OnlyRead-WriteRead-only file attributes like width and height can not be changed.ReadyRear Curtain Sync + Slow SyncRear-curtain syncRear-curtain with slow syncReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRecording MediaRedRed Eye SuppressionRed eye flashRed-eye ReductionRed-eye Reduction + Slow SyncRed-eye automaticRed-eye fillRed-eye fill flashRed-eye reductionRed-eye reduction with slow syncReleaseRelease + FocusRelease FullRelease HalfRelease ModeRelease without CF cardRemoteRemote API VersionRemote Mirror UpRemote ModeRemote TimeoutRemovable RAM (memory card)Removable ROMRepeatingReport Acquired ItemsReport Added/Deleted ItemsRequested information about picture %i (= 0x%x), but got information about picture %i backReset Bank 0Reset Menu BankReset deviceReset device property valueReset focus point to centerResetting protocol...ResolutionResolution SwitchResolution plus SizeReverse Command DialReverse IndicatorsRevocation InfoRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. RightRotation AngleRotation FlagRotation SceneSD Card ID: %s SD memory: %d MB total, %d MB free. SDRAMSDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d SDRamST2205 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.ST2205 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Samsung PlaylistSaturationSceneScene ModeSectionSecure TimeSelective colorSelf TimeSelf TimerSelf Timer (next picture only)Self Timer DelaySelf Timer Shot NumberSelf Timer TimeSelf test deviceSelf-timerSelftimer DelaySend Proximity ResponseSend Registration RequestSend WMDRM-ND License RequestSend WMDRM-PD Application RequestSend WMDRM-PD CommandSend WMDRM-PD RequestSend meter challenge querySend objectSend object infoSend object property listSending data...SensitivitySensor ID: %d.%d SepiaSequence 9Serial NumberSerial Number: %s Session Initiator InfoSession-persistent SettingsSet Current Time PositionSet Property Not SupportedSet clock in cameraSet device property valueSet license responseSet object property listSet object property valueSet object protectionSet object referencesShadeShadowShady White Balance BiasShall the camera beep when taking a picture?SharpSharpeningSharperSharpnessShooting BankShooting Bank Name AShooting Bank Name BShooting Bank Name CShooting Bank Name DShooting ModeShooting SpeedShooting modeShooting mode changedShot SettingsShutdownShutter CounterShutter SpeedShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed 2Shutter Speed BulbShutter Speed microseconds (0 auto)Shutter speed changedShutter/AF-ONSiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SilhouetteSingleSingle AreaSingle ShotSingle frameSingle silentSingle-Frame ShootingSingle-Servo AFSingle-area AFSingle-servo AFSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Size PrioritySize Quality ModeSize of Input Data to CameraSize of Output Data from CameraSkip to next position in playlistSkylightSlide Show IntervalSlot 2 Save ModeSlowSlow Shutter SettingSlow SyncSlow shutterSlow syncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SmallSmall Fine JPEGSmall Normal JPEGSmaller JPEGSmoothSnowSoftSofterSoftware Rev.: %s Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to the gphoto developer mailing list (in English) Some notes about Olympus cameras (and others?): (1) Camera Configuration: A value of 0 will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch to this mode, turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you cannot use the camera's buttons. If you end up in this state, you should reconnect the camera to the PC and switch LCD to 'Off'.Some notes about Olympus cameras: (1) Camera Configuration: A zero value will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Sonix camera library Theodore Kilgore Sonix camera. There is %i photo in it. Sonix camera. There are %i photos in it. Sony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners Sorry, initializing your camera did not work. Please report this.Sorry, the property '%s' / 0x%04x is currently ready-only.Sorry, your Canon camera does not support Canon Capture initiationSorry, your Canon camera does not support Canon EOS CaptureSorry, your Canon camera does not support Canon Viewfinder modeSorry, your Canon camera does not support Canon captureSorry, your Nikon camera does not seem to return a JPEG image in LiveView modeSorry, your Nikon camera does not support LiveView modeSorry, your camera does not support Nikon captureSorry, your camera does not support generic captureSoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSportsSpotSpot MeteringSpot Metering Interlocked with AF FrameSpot Metering ModeSpot metering interlocked with AF frameSpot-AFStandardStandard Development ParametersStartupStartup and ShutdownStep #2 of initialization failed! (returned %i bytes, expected %i). Camera not operationalStep #2 of initialization failed: ("%s" on read of %i). Camera not operationalStep #3 of initialization failed! (returned %i, expected %i). Camera not operationalStep #3 of initialization failed: "%s" on read of %i. Camera not operationalStep #3 of initialization failed: "%s" on write of %i. Camera not operationalStep #4 failed (returned %i, expected %i). Camera not operationalStep #4 failed: "%s" on read of %i. Camera not operationalStill Capture ModeStrobe error.Subject-tracking AFSummary for Mustek MDC800: SunsetSuper macroSuperFineSupported MTP Object Properties: Supported Thumb SizeSwitching Camera OffSynchronization PartnerSynchronize camera date and time with PCSynchronize frame data and time with PCSystem error.TFTTFT + PCTIFF (RGB)TTLTVTV Lock SettingTV Output FormatTerminate open captureTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera could not be contacted. Please make sure it is connected to the computer and turned on.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support getting storage informationThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The requested port type (%i) is not supported by this driver.There are still files in folder '%s/%s' that you are trying to remove.There are still subfolders in folder '%s/%s' that you are trying to remove.There are two resolution settings, 352x288 and 176x144. Photo data is in JPEG format when downloaded and thus has no predetermined size. Therefore, the advertised maximum number of photos the camera can hold must be understood as an approximation. All gphoto2 options will work, except for the following which the hardware will not support: Deletion of individual or selected photos (gphoto2 -d) Capture (gphoto2 --capture or --capture-image) However, capture is possible using the webcam interface, supported by the spca50x kernel module. GUI access using gtkam has been tested, and works. However, the camera does not produce separate thumbnails. Since the images are in any event already small and of low resolution, the driver merely downloads the actual images to use as thumbnails. The camera can shoot in 'video clip' mode. The resulting frames are saved here as a succession of still photos. The user can animate them using (for example) ImageMagick's 'animate' function. For more details on the camera's functions, please consult libgphoto2/camlibs/clicksmart310/README.clicksmart310. There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.There is space for another %d low compressed %d medium compressed or %d high compressed pictures This camera can not capture previews.This camera can not capture.This camera can not trigger capture.This camera contains a Jeilin JL2005%c chipset. The number of photos in it is %i. This camera contains a Jeilin JL2005A chipset. The number of photos in it is %i. This camera does not provide a manual.This camera does not provide any configuration options.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This driver supports cameras with Jeilin JL2005B or C or D chip These cameras do not support deletion of photos, nor uploading of data. If present on the camera, video clip frames are downloaded as consecutive still photos. For more details please consult libgphoto2/camlibs/README.jl2005c This driver supports cameras with Jeilin jl2005a chip These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README.jl2005a This driver supports cameras with Mars MR97310 chip (and direct equivalents ??Pixart PACx07??). These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. Photo data processing for Argus QuickClix is NOT SUPPORTED. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README. This driver supports some cameras that use the Sonix sn9c2028 chip. The following operations are supported: - thumbnails for a GUI frontend - full images in PPM format - delete all images - delete last image (not all of the Sonix cameras can do this) - image capture to camera ( ditto ) If present on the camera, video clip frames are downloaded as consecutive still photos or as AVI files, depending on the model. Thumbnails for AVIs are still photos made from the first frame. A single image cannot be deleted unless it is the last one. This is the driver for Canon PowerShot, Digital IXUS, IXY Digital, and EOS Digital cameras in their native (sometimes called "normal") mode. It also supports a small number of Canon digital camcorders with still image capability. It includes code for communicating over a serial port or USB connection, but not (yet) over IEEE 1394 (Firewire). It is designed to work with over 70 models as old as the PowerShot A5 and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of 2005. It has not been verified against the EOS 1D or EOS 1Ds. For the A50, using 115200 bps may effectively be slower than using 57600 If you experience a lot of serial transmission errors, try to have your computer as idle as possible (i.e. no disk activity) This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.This preview doesn't exist.ThumbnailThumbnail height: %d Thumbnail size: %d Thumbnail width: %d Time formatTime: %a, %d %b %Y %T TimelapseTimelapse IntervalTimelapse NumberTimeout even after 2 retries. Please contact %s.TimerTimer (Single) ShootingTimer + RemoteTimer 10 secTimer 2 secTiny JPEGTone CompensationToo brightToo darkToo many retries failed.TopTopfield TF5000PVR Marcus Meissner Library to download / upload files from a Topfield PVR. Ported from puppy (c) Peter Urbanec Toshiba David Hogue Toshiba pdr-m11 driver. Total flashes fired: %d Total pictures captured: %d, Flashes fired: %d Total pictures taken: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Trying to contact camera...Tune Colour TemperatureTune Preset 0Tune Preset 1Tune Preset 2Tune Preset 3Tune Preset 4TungstenTungsten White Balance BiasTurbo modeTvType of SlideshowUI LanguageUI LockUILockTypeUNIX TimeUSB 1.1USB 2.0USB SpeedUndefinedUndefined AudioUndefined Calendar ItemUndefined CollectionUndefined ContactUndefined DocumentUndefined MessageUndefined PTP PropertyUndefined VideoUndefined Windows ExecutableUnder > MTRUnderwaterUnknownUnknown %dUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown flash mode %d, Unknown modelUnknown model "%s"Unknown valueUnknown value %04dUnknown value %04xUnknown value 0x%04xUnknown zoom mode %d Unknown(%04x)Unknown: 0x%04x Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. UnusedUpdate device firmwareUpload URLUpload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...Upper 1Upper 2User canceled downloadUser defined 1User defined 2User defined 3Vendor ExtensionVendor Extension Description: %s Vendor Extension ID: 0x%x (%d.%d) Vendor ID: %02x%02x Version: Version: %s Vertical AF OnVideo ModeVideo OUTVideo OutViewfinder GridViewfinder Grid DisplayVignette ControlVividVolatile SettingsVolume LevelWB bracketingWEP 128-bitWEP 64-bitWIFI ESSIDWIFI channelWIFI profilesWPL PlaylistWaiting for completion...Waiting...Warning DisplayWarning Level 0Warning Level 1Warning StatusWarning in canon_usb_set_file_attributes: canon_usb_dialogue returned error status 0x%08x from cameraWe expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite Balance Bias Preset 0White Balance Bias Preset 1White Balance Bias Preset 2White Balance Bias Preset 3White Balance Bias Preset 4White Balance Bias Preset NrWhite Balance Bracket ProgramWhite Balance Bracket StepWhite Balance Colour TemperatureWhite Balance Preset Name 0White Balance Preset Name 1White Balance Preset Name 2White Balance Preset Name 3White Balance Preset Name 4White Balance Preset NumberWhite Balance Preset Value 0White Balance Preset Value 1White Balance Preset Value 2White Balance Preset Value 3White Balance Preset Value 4White BoardWhite balanceWhite boardWhite levelWhiteBalanceWhiteBalance Adjust AWhiteBalance Adjust BWhiteBalance X AWhiteBalance X BWhitebalance Reset ErrorWideWide-area AFWindows Image FormatWriteWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.XMLDocumentYYYY/MM/DDYear/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.You have to set the port prior to initialization of the camera.You must be in record mode to capture images.You need to specify a folder starting with /store_xxxxxxxxx/Your Logitech Clicksmart 310 has %i picture in it. Your Logitech Clicksmart 310 has %i pictures in it. Your USB camera has a S&Q chipset. The total number of pictures taken is %i Some of these could be clips containing several frames Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i Your USB camera is an iClick 5X. The total number of pictures taken is %i Your USB camera seems to be a LG GSM. Firmware: %s Firmware Version: %s Your USB picture frame has a AX203 chipset Your USB picture frame has a ST2205 chipset Your camera only supports deleting the last file on the camera. In this case, this is file '%s'.Zone Focus (Close)Zone Focus (Close-up)Zone Focus (Far)Zone Focus (Medium)Zone Focus (Reserved 1)Zone Focus (Reserved 2)Zone Focus (Reserved 3)Zone Focus (Reserved 4)Zone Focus (Very Close)ZoomZoom (in millimeters)Zoom level changedZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autoauto + red eye suppressionbatteryblack & whitebulbcamera inactive for > 9 seconds, re-initing. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_int_capture_image: initial canon_usb_list_all_dirs() failed with status %licanon_int_list_directory: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: Reached end of packet while examining the first direntcanon_int_list_directory: truncated directory entry encounteredcanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Initial dirent packet too short (only %i bytes)canon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_body_id: Unexpected data length returned (%i bytes, expected %i)canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)canon_usb_lock_keys: Unexpected length returned from "lock keys" function (%i bytes, expected %i)canon_usb_set_file_attributes: canon_usb_dialogue failedcanon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)colorcoolshot library vcould not change owner namecould not set timeeconomyexternallyfill infinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)high compression, hp215 Marcus Meissner Driver to access the HP Photosmart 215 camera. Merged from the standalone hp215 program. This driver allows download of images and previews, and deletion of images. iClick 5X driver Theodore Kilgore iTTLin fill modeinfiniteinternallyjamcam library vjl2005a camera library Theodore Kilgore jl2005bcd camera library Theodore Kilgore lock keys failed.losslesslow (320x240)low compression, mRAWmRAW + Large Fine JPEGmRAW + Large Normal JPEGmRAW + Medium Fine JPEGmRAW + Medium Normal JPEGmRAW + Small Fine JPEGmRAW + Small Normal JPEGmedium compression, menuno status reported.nonenormalnot available: %soffonon + red eye suppressionon batterypccam600 init: Unexpected error: gp_port_read returned %d instead of %dpccam600_close: return value was %d instead of %dpccam600_get_file:got index %d but expected index > %dpccam600_init: Expected %d blocks got %dpccam600_init: Expected > %d blocks got %dplaypower OKpower badread onlyreadwritereadyrecordrecursive calls are not supported by the sierra driver! Please contact %s.red eye flash off. red eye flash on. red eye suppressionsRAWsRAW + Large Fine JPEGsRAW + Large Normal JPEGsRAW + Medium Fine JPEGsRAW + Medium Normal JPEGsRAW + Small Fine JPEGsRAW + Small Normal JPEGsRGBsRGB (nature)sRGB (portrait)sierra SPARClite library Scott Fritzinger Support for sierra-based digital cameras including Olympus, Nikon, Epson, and Pentax. Thanks to Data Engines (www.dataengines.com) for the use of their Olympus C-3030Z for USB support implementation.spca50x library vsq905 generic driver Theodore Kilgore sq905C generic driver Theodore Kilgore standardsuperfinesx330z is USB onlytime setunable to guess initial CRC value undefinedunexpected datatype %iunknown (0x%02x)unknown compression %d, unknown resolution %d) vCalendar1vCalendar2vCard2vCard3warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2 2.5.1 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2013-06-06 11:53+0200 Last-Translator: Marek ÄŒernocký Language-Team: Czech Language: cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Gtranslator 2.91.6 Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; X-Poedit-SourceCharset: UTF-8 Možnosti přístupu: %s Canon – podpora WiFi Stažení souboru, Typ souborového systému: %s Zbývající kapacita (v bajtech): %llu (%lu MB) Zbývající kapacita (snímků): %d Obecné zachycení snímku – ano, Nejvyšší možná kapacita: %llu (%lu MB) Nikon – podpora WiFi Obecné zachycení snímku – ne, Typ datového úložiÅ¡tÄ›: %s Popis datového úložiÅ¡tÄ›: %s Jmenovka svazku: %s Identifikace přístroje: Typ: %s Vlastník: %s Stav napájení: %s Informace o datovém úložiÅ¡ti: %s ÄŒas: %s Formát snímků: Funkce zařízení: Souhrn vlastností zařízení: Informace o datovém úložiÅ¡ti: Mechanika %s %11s bajtů celkem %11s bajtů volných Sériové Äíslo: %s Verze: %s (akumulátor je nabitý z %d %%)PÅ™i dotazu doÅ¡lo k chybÄ› %04x protokolu pro pÅ™enos snímků (PTP)Celková kapacita: %8d bajtů. Volná kapacita: %8d bajtů. PoÄet souborů: %dchyba %x protokolu pro pÅ™enos obrázků (PTP) bÄ›hem dotazu. nenaÄteno. %.0f mmkrok po %.1f%0.4f s%d %d/%d%d mm%d/%d%f%i (neznámé)Bylo pÅ™ijato %i bajtů neznámých obrazových dat. NapiÅ¡te prosím na %s a požádejte o souÄinnost.%i snímků nemohlo být smazáno, protože jsou proti smazání chránÄ›ny.%lld (neznámé)%s (Äas na poÄítaÄi %s%i vteÅ™in)OvladaÄ pro (Traveler) SX330z (a další přístroje Aldi). Přístroje od firem Jenoptik, SkanHex a Maginon by mÄ›ly fungovat také. Prosím posílejte hlášení o chybách a podnÄ›ty (v angliÄtinÄ›). Dominik Kuhlen * Poruchy v obrazu Äi problémy s komunikací jsou mnohdy způsobeny vybitým akumulátorem. * Snímky, pořízené ovládáním z poÄítaÄe, jsou doÄasnÄ› uloženy v operaÄní pamÄ›ti a nikoli na paměťové kartÄ›. * ExpoziÄní hodnoty mohou být nastavovány ruÄnÄ› Äi automaticky. * Obrazová kvalita je v souÄasnosti horší, než by mÄ›la být. *NEZNÃMÉ*-0,5-1,0-1,5-2,00,00,1 m0,50,5 m11 (krátké)1 EV1 snímek/s1 minuta1 minuta1,01,3 s1,51,6 s1,6×1/1,3 s1/1,6 s1/1000 s1/100 s1/10 s1/1250 s1/125 s1/13 s1/151/15 s1/1600 s1/160 s1/21/2,5 s1/2000 s1/200 s1/20 s1/2500 s1/250 s1/250 s (Auto FP)1/25 s1/2 s1/301/30 s1/3200 s1/320 s1/3 s1/41/4000 s1/400 s1/40 s1/4 s1/5000 s1/500 s1/50 s1/5 s1/601/60 s1/6400 s1/640 s1/6 s1/81/8000 s1/800 s1/80 s1/8 s10 snímků/s10 minut10 minut10 mm10 vteÅ™in100 %10 s11 snímků/s1152 × 86412 mm1280 × 96013 s1515 minut15 minut15 s16 vteÅ™in1 s1×22 EV2 snímky/s2 vteÅ™iny2,02,0 m2,5 s2,5×20 vteÅ™in20 s21 bodů25 %25 s29 mm2 s2×3 (normální)3 EV3 snímky/s3030 minut30 vteÅ™in30 s34 mm3 s3×44 snímky/s4 vteÅ™iny41 mm4 s4×5 (dlouhé)5 snímků/s5 minut5 minut5 vteÅ™in50 Hz50 %51 mm51 bodů51 bodů (třírozmÄ›rné)58 mm5 s5×6 snímků/s6 mm6 vteÅ™in60 Hz640 × 4806 s6×7 snímků/s75 %7×88 snímků/s8 mm8 vteÅ™in8 s8×9 snímků/s9 bodů9×max. svÄ›tla (min. zaclon.) pÅ™i dost. hl. ostrosti (AUTOMAT. zvol. objekty)Elektrická síťNapájení z elektrické sítÄ›Síťový napájecí zdrojSíťový napájecí zdroj je pÅ™ipojen. Síťový napájecí zdroj není pÅ™ipojen. Více snímků s odstupňovaným projasnÄ›ním stínůexpozimetr a bleskUzamÄení expoziceZablok. expoziceExpozimetr uzamÄenUzamÄení automatického ostÅ™ení (držet)UzamÄení automatického ostÅ™ení (resetovat pÅ™i uvolnÄ›ní)UzamÄení pouze expozicepouze expozimetrZda tlaÄítko AE-L/AF-L blokuje exp. Äi zaostÅ™eníUzamÄení měření exp. hodnotZablok. zaostÅ™ení i expoziceUzamÄení expozice i ostÅ™eníTlaÄítko Ä. 2 uzamÄení expozice/zaostÅ™eníKrok odstupňování více snímků s různou exp.Zapnutí automatického ostÅ™eníPÅ™isvícení pro automatické ostÅ™eníBod pro automat. zaostÅ™eníPomocné pÅ™isvícení automatického ostÅ™eníZvuk. upozorňování automat. zaostÅ™.Vzdálenost automat. zaostÅ™eníAF LCD Top Mode 2Zablok. automat. zaostÅ™ení bez držení tlaÄítkaUzamÄení automat. zaostÅ™eníZablok. automatického zaostÅ™eníUzamknout pouze automat. zaostÅ™eníAutom. zaostÅ™ení uzamÄenoRežim automatického ostÅ™eníAutomat. zaostÅ™ení zapnutoTlaÄítko zapnutí automat. zostÅ™eníUzamÄení pouze ostÅ™eníautomat. volba jednorázového Äi průběžného zaostÅ™eníprůbežné automatické zaostÅ™ováníUpÅ™ednostňovat průběžné autom. zaostÅ™ováníautomat. zaostÅ™ení zapnutojednoráz. automat. zaostÅ™ení pÅ™i namáÄknutí spouÅ¡tÄ›UpÅ™ednostňovat jednorázové autom. zaostÅ™ení pÅ™i namáÄknutí spouÅ¡tÄ›AF11AF51Jednoráz. / průběžné zaostÅ™ování – automat.NepÅ™etržité průběžné zaostÅ™ováníVerze Äipu: %d.%d Seznam audiostop (formát ASX)PlnÄ› automat. režimZaclonÄ›ní ruÄnÄ›, exp. Äas automat.Nastavení uzamykání zaclonÄ›níNast. horní hranice automat. nast. zaclonÄ›níAV OpenOvladaÄ pro fotorámeÄky obsahující Äip AX203 Hans de Goede Tento ovladaÄ umí snímky z takových zařízení stahovat, nahrávat je do nich i je v nich mazat.Displeje fotorámeÄků, obsahujících Äip AX203, mívají různá rozliÅ¡ení. OvladaÄ v gPhoto umí snímky z takových zařízení stahovat, nahrávat je do nich i je v nich mazat.Max. svÄ›tla (min. zaclon.) pÅ™i dost. hl. ostr. (pro AUTOMAT. zvol. objekty)O přístroji Konica Q-M150: Žádný z parametrů přístroje nelze nastavovat z poÄítaÄe. Je možné vidÄ›t, jaká nastavení jsou, ale nelze je mÄ›nit. V případÄ› problémů s ovladaÄem, poÅ¡lete prosím e-mail jeho tvůrcům. Abstraktní hudební albumAstraktní seznam audiostopAbstraktní seznam audiostop a vidonahrávekAbstraktní kalendářová položkaAbstraktní produkce po kapitoláchAbstraktní kontaktAbstraktní skupina kontaktůAbstraktní dokumentAbstraktní album snímkůAbstraktní MediacastAbstraktní zprávaAbstraktní složka zprávAbstraktní multimediální albumAbstraktní video albumAstraktní seznam videonahrávekRežim přístupuAkÄníAktivní senzor automatického ostÅ™eníProjasnÄ›ní stínůAktivní položka nastavování obrazupřímá komunikaceAdc65 Benjamin Moos AdobeRGBPÅ™eruÅ¡it pokroÄilý pÅ™enosNázev albaAlkalické manganovéVyskytla se chyba ve vstupnÄ›/výstupní knihovnÄ› („%s“): %sVyskytla se neznámá chyba. Kontaktujte prosím %s (v angliÄtinÄ›).Úhel náklonuOmezení jevu Äervených oÄíVýplň. záblesk s omezením jevu Äervených oÄíKdekoliObecný ovladaÄ pro Aox Theodore Kilgore ZaclonÄ›níNastavení clonyNastavení zaclonÄ›níNastavení zaclonÄ›ní zmÄ›nÄ›noUmÄ›lecJméno umÄ›lcePÅ™iÅ™azení funkÄního tlaÄítkaPomocné pÅ™isvÄ›tlení pro automat. zaostÅ™eníKodek Audible.comAutomatickéOdpálen dle potÅ™eby + omezení jevu Äervených oÄíAutomat. nastavení zaclonÄ›níVýbÄ›r automatického pořízení více snímků s různými hodnotamiAutomat. oÅ™ezávání na formát „DX“Automatická kompenzace deformacíPoÄet snímků, pořízených s různým stupnÄ›m expoziceVíce snímků s odstupňovanou expozicíAuto FPOblast pro automatické zaostÅ™ováníAutomat. zaostÅ™ení – „režim 2“Automat. nastavení citlivosti (ISO)Nastavení automat. ISO v režimech P/A/DVPProdleva automatického vypnutí senzoruÄŒas automat. vypnutí přístroje (mimo poÄ.) (ve vteÅ™inách)?ÄŒas automat. vypnutí (s poÄítaÄem) (ve vteÅ™inách)Doba zobrazení informacíDoba zobrazení nabídkyDoba zobrazení pořízeného snímkuProdleva pÅ™ed automatickým vypnutímProdlevy automatického vypnutíAutomat. vypnutí (v minutách)Automatická pomalá synchronizaceJemné doladÄ›ní automatického vyvážení bíléAutomat. uzamÄení exp. ÄasuAutomat. zaostÅ™.: automat. volba jednoráz. Äi průběž.Automat. zaostÅ™.: průběžnÄ›Automat. zaostÅ™.: jednorázové pÅ™i namáÄknutí spouÅ¡tÄ›Automatická citlivostOdpálen dle potÅ™eby, omezení jevu Äervených oÄíRežim automatického ostÅ™eníChyba automatického ostÅ™ení.AutomatickéDle potÅ™eby Automat (bez blesku)Blesk dle potÅ™ebyAutomatický makrorežimAutomat. makrorežim (blízké)Automat. omezení jevu Äervených oÄíAutomatická úroveň jasu náhleduBlesk odpálen dle potÅ™ebyPÅ™i pořízení snímku dle potÅ™eby odpálen bleskPodzimní barvyzaclonÄ›ní ruÄnÄ›, exp. Äas automat.Nastavení omezení nejvyÅ¡. zaclon.Av Max ApexAv OpenAv Open ApexZbývá cyklůMnožství­ pamÄ›ti k dispozici: ZprůmÄ›rovanéPrůmÄ›rná velikost souborůPrůmÄ›rující měřeníČ/BÄŒernobíléČB kontrastEfekty pro ÄŒB snímkyTyp ÄŒB nastaveníČB ostrostNeplatný řídící znak „dokonÄení pÅ™enosu“ (EOT)Chybné znaky (0x%x, 0x%x). Kontaktujte prosím %s (v angliÄtinÄ›).Å patný kontrolní souÄet – obdrženo 0x%02x, oÄekáváno 0x%02x.Å patná data – obdrženo 0x%02x, oÄekáváno 0x%02x nebo 0x%02x.Å patná data – obdrženo 0x%02x, oÄekáváno 0x%02x.Å patná expozice (nejspíš nedostateÄné osvÄ›tlení)Å patná hodnota pro stav paměťové karty %dÅ patná hodnota stavu objektivu %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Formát obrazových dat prozkoumal: Jeff Laing VytvoÅ™eno s pomocí informací z veÅ™ejnÄ› dostupných dokumentů (na Internetu). Se svolením od spoleÄnosti Vision.Akumulátory jsou vybité.Akumulátory jsou nabité.AkumulátorDruh Älánků akumulátoruStav nabití akumulátoruÚroveň nabití akumulátoru: %s PoÄet snímků: %d Zbývající kapacita je pÅ™inejmenším: %d Vytížení: %s Nabíjení blesku: %s Stav objektivu: Zbývající Äas provozu na akumulátor: %i Režim akumulátoruTyp akumulátoruAkumulátor je vybitý – přístroj se vypnulÚroveň nabití akumulátoru: %1f Voltů. Revize: %08xStav akumulátoru: %s, síťový napájecí zdroj: %s PlážPláž/sníhZvuková upozornÄ›níRežim zvukového upozorňováníNastavení zvukových upozornÄ›ní bylo zmÄ›nÄ›noVypnout zvuk. upozornÄ›níZapnout zvuk. upozornÄ›níNejlepšíRychlost pÅ™enosu dat %ld není podporována.ÄŒerná a bíláČerná a bíláTmavé pozadíČerná a bíláTmavé pozadíČerná/bíláBliknutíKvÄ›tyModráDoleRežim více snímků s odstupňováním daného nastaveníPoÅ™adí pÅ™i poÅ™izování nÄ›kolika snímků s různými úrovnÄ›mi daného nastaveníNastavit pořízení nÄ›kolika snímků s různými úrovnÄ›mi daného nastaveníVíce snímků s odstupňováním daného nastaveníZapnout poÅ™izování více snímků s různými hodnotami daného nastaveníVíce snímků s odstupňovanými hodnotami – poÄet snímků a velikosti krokůPÅ™idat jasUbrat jasJasUbrat jasPÅ™idat jasJas/KontrastVestavÄ›ná RAMVÄ›stavÄ›ná ROMExp. po dobu stisku spouÅ¡tÄ›Exponování po dobu stisku spouÅ¡tÄ›Režim exp. po dobu stisku spouÅ¡tÄ›DávkaProdlevy mezi jednotlivými snímky dávkyPoÄet snímků v dávceZaneprázdnÄ›noTlaÄítka a kruhové voliÄeSériové Äíslo obrazového snímaÄeSériové Äíslo obrazového snímaÄeSkript rozÅ¡iÅ™ujícího softwaru (CHDK)CRW (Canon RAW)Nabídka uživatelských nastaveníPřístrojAkce pro přístrojIdentifikátor tÄ›la přístrojeNastavení přístrojeDatum a Äas na přístrojiIdentifikátor přístroje: %s Knihovna pro přístroj Kodak DC215 Zoom. Michael Koltan Výrobce přístrojeRežim provozu přístrojeVolba režimu neupraví zaclonÄ›níModel přístrojeModel přístroje: %s Přístroj je pÅ™ipraven.Poloha přístrojeVýstup z přístrojeVlastník přístrojeNastavení přístrojeInformace o stavu přístrojeNastavení­ přístroje a jeho ovladaÄeZdá se, že v přístroji není vložena paměťová karta CompactFlash. Takový provoz ale není (alespoň prozatím) podporován. Přístroj je zaneprázdnÄ›ný. Pokud problém pÅ™etrvává, kontaktujte prosím %s (v angliÄtinÄ›).Přístroj nebyl schopen dokonÄit operaciPřístroj tento parametr nepÅ™ijímá. Kontaktujte prosím %s (v angliÄtinÄ›).OvladaÄ pro přístroj „%s“ postrádá funkci „camera_init“.Přístroj má datové úložiÅ¡tÄ›. Přístroj pořídil již %d snímků a je v nÄ›m vložena paměťová karta CompactFlash. Přístroj je nastaven na svÄ›tla blikající na frekvenci %d Hz. Přístroj se nachází ve Å¡patném režimu. Kontaktujte prosím %s (v angliÄtinÄ›).Přístroj není pÅ™ipraven, dotaz get_battery (získat stav akumulátoru) se nezdaÅ™il: %sPřístroj není pÅ™ipraven, nezdaÅ™ilo se hned nÄ›kolik po sobÄ› jdoucích požadavků na jeho identifikaci: %sPřístroj poÅ™izuje monochromatické snímky. Prodl. pÅ™echodu přístroje do úspor. režimu (ve vteÅ™inách)Přístroj 3× po sobÄ› odmítl ponechat spojení navázané.Přístroj tento povel odmítl.Přístroj se sám restartoval.Přístroj poslal neoÄekávaný bajt 0x%02x.Přístroj poskytuje náhledové snímky. Přístroj umí poÅ™izovat videonahrávky. Přístroj umí tyto formáty videonahrávek:ÄŒas na přístroji: %s %s Přístroj není dostupnýPřístroj není k dispozici: %sPřístroj je již je aktivníPřístroj byl probuzenNelze pořízovat další snímky. Neznámá chyba.Nelze smazat vÅ¡echny snímky naráz.Snímek %s nelze smazat.Tento snímek se nepodaÅ™ilo odeslat do přístroje. Vyskytla se chyba.Svit svíÄekNelze získat informaci o zbývající volné kapacitÄ› datového úložiÅ¡tÄ›Nelze naÄí­st informace o kapacitÄ› akumulátoruNelze získat název složky s obrázkyCanon – režim automat. expoziceCanon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: Nejspíš není zaostÅ™eno?Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: Nejspíš není volné místo na paměťové kartÄ›?Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: Neznámá chyba %d, prosíme ohlaste ji.Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: %xdig. zrcadl. Canon – dálkové ovl. spouÅ¡tÄ›Canon, Å™ada EOS – pořízení snímku vyvolané pohybem v zábÄ›ru se nezdaÅ™ilo: 0x%xdig. zrcadl. Canon – hledáÄekdig. zrcadl. Canon – pÅ™iblíženídig. zrcadl. Canon – míra pÅ™iblíženíOvladaÄ pro přístroje Canon Å™ady PowerShot. Tvůrci: Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, Pro typ A5 rozšířil Ole W. Saastad Dalšími vylepÅ¡eními pÅ™ispÄ›li: Holger Klemm Stephen H. WestinCanon – režim poÅ™izování snímkůPořídit snímekProdleva snímáníNastavení snímáníTřída velikosti záznamuKam zaznamenávat pořízené snímkyRežim pÅ™enosu snímáníTřída velikosti snímku byla zmÄ›nÄ›naTyp zachytávání není podporovánpaměťová kartaStav paměťové karty: Na paměťovou kartu není možné zapisovat.Paměťová karta není naformátovánaPaměťová karta není otevÅ™enaPaměťová karta je otevÅ™enaPaměťová karta je uzamÄena proti zápisu.Název paměťové karty: %s Volné místo na kartÄ›: %d kB Paměťová karta není podporována.PamÄ›tová karta byla vyjmuta v průbÄ›hu operací s ní.Priorita typu akumulátoruRežim stÅ™edového tlaÄítka pro pÅ™ehráváníRežim stÅ™edového tlaÄítka pro foceníPomÄ›r pÅ™iblížení stÅ™edového tlaÄítkaBod ve stÅ™eduS důrazem na stÅ™edS prioritou stÅ™edu zábÄ›ruPrůmÄ›r. s důrazem na stÅ™ed zábÄ›ruS důrazem na stÅ™edBod ve stÅ™edu zábÄ›ruS důrazem na stÅ™ed zábÄ›ruPrůmÄ›r. měření s důrazem na stÅ™ed zábÄ›ruMěření s důrazem na stÅ™edZprůmÄ›rované s důrazem na stÅ™ed zábÄ›ruUprostÅ™edS důrazem na stÅ™edStÅ™edový bodZmÄ›na režimu přístroje se nezdaÅ™ilaZmÄ›nit položku nastavování obrazuProbíhá zmÄ›na rychlosti… Äekejte…TextText a zvukProbíhá nabíjeníChyba v kontrolním souÄtuDÄ›tiZvolte barevnou teplotuÄŒiÅ¡tÄ›ní snímaÄe obrazuÄŒiÅ¡tÄ›ní snímaÄe obrazuVymazat datové úložiÅ¡tÄ›UkonÄit mediální relaciUkonÄit relaciNejbližší objektZblízkaZataženoJemné doladÄ›ní vyvážení bílé pro zataženou oblohuBarvaZesílení barevRežim barevModel barevNastavení barevProstor barevBarevná teplotaRežim barev Äi fungováníBarevný náÄrtekPříkaz nelze zruÅ¡it.Chyba poÅ™adí příkazů.Režim řídícího bleskuChyba komunikace 1Chyba komunikace 2Chyba komunikace 3I po dvou pokusech se komunikace stále nedaří. Kontaktujte prosím %s (v angliÄtinÄ›).ZjiÅ¡tÄ›na paměťová karta typu Compact Flash Karta CompactFlashKompatibilní režimKomprimaceNastavení komprimaceNastaveníNastavení přístroje FUJISpojení s přístrojem je navázánoPrůběžnéNepÅ™eruÅ¡ované snímání s kratší prodl. mezi jedn. snímkyKontinuální snímání s delší prodlevou mezi snímkyNepÅ™eruÅ¡ované snímání s delší prodlevou mezi jedn. snímkyDávkové snímáníKontinuální snímání s kratší prodlevou mezi snímkyKontinuální snímání s delší prodlevou mezi snímkyPrůběžné s vysokou rychlostíNepÅ™etržité snímání s kratší prodl. mezi snímkyNepÅ™etržité snímání s delší prodl. mezi snímkyNepÅ™eruÅ¡ovanÄ› tiÅ¡ePrůběžné automat. zaostÅ™ováníKontrastPÅ™idat kontrastUbrat kontrastZkopírovat objektAutorská právaInformace o autorských právech (nejvýš 20 znaků)Informace o autorských právechInformace o autorských právechData jsou poÅ¡kozenáNezdaÅ™ila se rezervace %i bajtů pro stažení snímku.NezdaÅ™ila se rezervace %i bajtů pro stažení náhledu.Nastavení USB se nepodaÅ™ilo použít.Nastavení citlivosti (ISO) nebylo možné zmÄ›nitNelze zmÄ›nit nastavení zaclonÄ›níNastavení zvukových upozornÄ›ní nelze zmÄ›nitNastavení kompenzace expozice nelze zmÄ›nit.Režim blesku nelze zmÄ›nitRežim zaostÅ™ování nelze zmÄ›nitFormát obrazových dat nebylo možné zmÄ›nitRežim snímání nelze zmÄ›nitNelze zmÄ›nit expoziÄní ÄasNebylo možné zmÄ›nit datum a Äas souboru „%s“ v „%s“ (%s).Míru pÅ™iblížení nelze zmÄ›nitSpojení s přístrojem se nezdaÅ™ilo.Nelze vytvoÅ™it složku \DCIM.Cílovou složku nebylo možné vytvoÅ™it.Nebylo možné vytvoÅ™it složku %s.Složku nelze vytvoÅ™it.Soubor „%s“ ve složce „%s“ nelze smazat (Äíslo chyby: %i: %s).Soubor nelze smazat.Nebyl nalezen žádný přístrojNa portu %s nebyl nalezen žádný přístrojNelze navázat prvotní kontakt s přístrojemZe souboru JPEG nelze získat náhled: data nejsou ve formátu JIFFZ dat nelze získat náhled ve formátu JPEG: Není zaÄátek ani konecSoubor „%s“ nelze nalézt.NezdaÅ™ilo se nalézt data národního prostÅ™edí na „%s“Nelze získat informace o datovém úložiÅ¡ti: %sNelze získat název datového úložiÅ¡tÄ›: %sNení možné získat oznaÄení datového úložiÅ¡tÄ›.Nebylo možné získat informace o „%s“ (%s).Nebylo možné získat informace o „%s“ v „%s“ (%s).NezdaÅ™ilo se získat registr %i. Kontaktujte prosím %s (v angliÄtinÄ›).NezdaÅ™ilo se získat Å™etÄ›zcový registr %i. Kontaktujte prosím %s (v angliÄtinÄ›).NepodaÅ™ilo se zahájit nahrávání (přístroj odpovÄ›dÄ›l s 0x%02x).Pro přístroj nelze naÄíst potÅ™ebný ovladaÄ â€ž%s“ (%s).Nelze otevřít „%s“.Nebylo možné odstranit složku %s.Složku nelze smazat.Přístroj nebylo možné restartovat. NepodaÅ™ilo se nastavit rychlost komunikace na %i (přístroj odpovÄ›dÄ›l s %i).Nebylo možné pÅ™enést paket (kód chyby %i). Kontaktujte prosím %s (v angliÄtinÄ›).Ani po nÄ›kolika pokusech se nepodaÅ™ilo pÅ™enést paket.Nelze nahrávat, protože jsou vyÄerpána dostupná jména složek! Existuje již i složka 999CANON a v ní soubor AUT_9999.JPG.Ze souboru „%s“ nelze ÄístVytvoÅ™it profil pro WiFiDatum pořízení: %s, naposledy použito: %sKreativníCreative PC-CAM 300 Tvůrci: Till Adam a Miah Gregory Creative PC-CAM600 Autor: Peter Kajberg SouÄasný režim: fotografování SouÄasný režim: pÅ™ehrávání Datum a Äas na přístroji: %04d-%02d-%02d %02d:%02d Volná kapacita paměť. karty: %d Snímků na paměťové kartÄ›: %d PoÄet snímků, které je jeÅ¡tÄ› možné pořídit: %d Stav akumulátoru: %d %%V souÄasnosti lze pomocí protokolu pro pÅ™enos obrázků (PTP) komunikovat pouze s přístroji pÅ™ipojenými pÅ™es rozhraní USB Äi síť TCP/IP – typ portu je %x.Uživatelské„Ex“ uživatelských funkcíUživatelské nastavení vyvážení bílé PC-1Uživatelské nastavení vyvážení bílé PC-2Uživatelské nastavení vyvážení bílé PC-3Upravit příkazové voliÄeDD/MM/RRRRRežim urÄování hloubky ostrostiVerze formátu přímé objednávky tiskuTmavé na svÄ›tlém pozadíData byla poÅ¡kozena.Datum a ÄasFormát dataFormát zápisu data a Äasu do razítkaDatum a ÄasDatum a Äas (v GMT)Zobrazení dataDatum: %i/%02i/%02i %02i:%02i:%02i Uložených snímků: %i Volná kapacita (snímků): %i Verze firmware: %s Rychlost komunikace: %s Paměť: %i MB Režim přístroje: %s Obrazová kvalita: %s Nastavení blesku %s Informace: %s Prodleva samospouÅ¡tÄ›: %s Displej: %s Prodleva automat. vypnutí: %i minut Napájení: %sDatum: %sDen/MÄ›síc/RokDenní svÄ›tloJemné doladÄ›ní vyvážení bílé pro denní svÄ›tloRežim ladÄ›níHloubkaVýchozí bránaVýchozí ovladaÄ pro Sierra: Tento výchozí ovladaÄ by mÄ›l umožňovat stahování a procházení snímků v přístroji. Položky nastavení přístroje jsou odvozeny z Olympus 3040 a pravdÄ›podobnÄ› nekompletní. Pokud pro váš přístroj nic nechybí Äi dovedete chybÄ›jící doprogramovat, dejte o tom vÄ›dÄ›t na e-mailové konferenci vývojářů gPhoto2 (v angliÄtinÄ›). Pozdržené vzdálenéSmazatSmazat objektProbíhá mazání snímku %s.ZjiÅ¡tÄ›no „%s“ neboli „%s“Detekováno jako „%s“.Parametry pro vývojáře 1Parametry pro vývojáře 2Parametry pro vývojáře 3Certifikát zařízeníIkona zařízeníVerze přístrojePřístroj nepodporuje nastavování ochrany objektu.Digita Johannes Erdfelt Standardní rozvržení (DCIM)Digitální pÅ™iblíženíZvÄ›tÅ¡ení digitálního pÅ™iblíženíDigitální makroDigitální pÅ™iblíženíDimera 3500 Ver. %s %d/%d %d:%d. %d snímků z pÅ™ibližnÄ› %d (vysoké rozliÅ¡ení) nebo %d (nízké rozliÅ¡ení). Funkce přístroje: %s, %s, %s, %s. Blesk je %s, %s a %s. RozliÅ¡ení je nastaveno na %s. Přístroj byl %s zapnut %s. Přímý tiskRežim procházení složek – vytvoÅ™il Scott Fritzinger .Složka existujeSložka nebyla nenalezenaVypnout důvÄ›ryhodné souborové operaceProbíhá odpojení přístroje.Zobr. AvZobr. Av MaxZobrazitFormát displeje:Vzdálený pohledNezobrazovat nabídku televizoruNení známo jak se zachovat v případÄ›, kdy je přístroj->port->typ nastaveno na hodnotu %i neboli 0x%x, v %s na řádku %i.Stahovací progroam pro přístroj Digital Dream Enigma 1.3. Na základÄ› ovladaÄe pro spca50x vytvoÅ™il . PodÄ›kování tvůrcům spca50x – upravit ovladaÄ pro tento přístroj bylo snadné!Knihovna pro přístroje postavené na Äipech Å™ady GrandTek 98x. Původní autor: Chris Byrne , do gphoto2 pÅ™evedl Lutz Müller . VylepÅ¡ení protokolu a následné zpracování pořízeného snímku pro Jenoptik JD350e provedl Michael Trawny . Chyby opravil Marcus Meissner .Program pro stahování snímků z přístroje Polaroid DC700. Původní autor Ryan Lantzer , pro gphoto2 upravil Lutz Müller .Knihovna pro vícero přístrojů Polaroid. PůvodnÄ› vytvoÅ™il Peter Desnoyers , pro gphoto2 pÅ™izpůsobili Nathan Stenzel a Lutz Müller . Na přístroji Polaroid 640SE otestoval Michael Golden .Probíhá stahování „%s“.Probíhá stahování %s…Probíhá stahování „%s“…Probíhá stahování EXIF informací…Probíhá stahování zvukového nahrávky…Probíhá stahování dat…Probíhá stahování souboru…Probíhá stahování snímku %sProbíhá stažení obrázku…Probíhá stahování videonahrávky…Probíhá stahování náhledu…Probíhá stahování…dig. zrcadl. Canon – ovl. automat. zaostÅ™enídig. zrcadl. Canon – ovl. ruÄn. zaostÅ™eníDávkový režimdig. zrcadl. Nikon – ovl. automat. zaostÅ™enídig. zrcadl. Nikon – ovl. ruÄn. zaostÅ™eníOvladaÄNastavení ovladaÄeÅ ablonu pro tvorbu ovladaÄů, vytvoÅ™il Lutz Müller . Obsahuje zdrojový kód z programu QVplay, který vytvoÅ™il Ken-ichi HAYASHI a Jun-ichiro „itojun“ Itoh . QVplay zaÄlenil Michael Haardt .Dvojitá clona anoSoumrakStmívání/rozednÄ›níChyba pÅ™i poÅ™izování referen. snímku pro odstraňování následků prachu na snímaÄi.PromÄ›nlivá oblast automatického ostÅ™eníAutomatické zaostÅ™ení kterýmkoli ze senzorůAutomat. zaostÅ™ení kterýmkoli ze senzorů s upÅ™ednostnÄ›ním nejbližšího objektuChyba v kontrolním souÄtu firmware.Chyba: %d je příliÅ¡ velkéChyba: doÅ¡lo k fatální chybÄ›, není možné pokraÄovatChyba: chybný formát zprávy.Chyba: příliÅ¡ dlouhá zprávaChyba: mimo poÅ™adí.Chyba: neoÄekávané hlášeníChyba: neoÄekávané hlášení 2.Chyba: neoÄekávaný typ paketuESP – měření osvÄ›tl. scény z celé plochy zábÄ›ruNázev bezdrátové sítÄ›Velikost kroku zmÄ›ny expoziceRežim elektronického hledáÄkuPÅ™iblížení po skocích (Easy Zoom) – nejvyšší úroveň pÅ™iblíženíPÅ™iblížení po skocích (Easy Zoom) – poÄáteÄní úroveň pÅ™iblíženíEkonomickéEfektový režimEfektyNouzovéPrázdnéZapnout informace o autorských právechPovolit komentář k obrázkuZapnout důvÄ›ryhodné souborové operaceEncounterEncounter BoxÅ ifrováníŠifrovací klÃ­Ä (v hex. zápisu)UkonÄit relaci důvÄ›ryhodné aplikaceAngliÄtina (English)VylepÅ¡enéChybaChyba pÅ™i poÅ™izování snímkuZmÄ›na rychlosti se nezdaÅ™ilaZmÄ›na rychlosti komunikace se nezdaÅ™ila.Chyba pÅ™i mazání souvisejícího souboru s náhledemChyba pÅ™i mazání souboruVyprÅ¡ela lhůta potvrzující odpovÄ›di (ACK) od přístroje.VyprÅ¡ela lhůta potvrzující odpovÄ›di (ACK) od přístroje – probíhá opÄ›tovný pokusVyhodnocujícíVyhodnocující měřeníRežim simulace událostiKdekoliVykonat pÅ™edefinované povely s hodnotami parametrů.OÄekáváno %i bajtů, namísto toho obdrženo %i. Nahlaste prosím tuto chybu na %s (v angliÄtinÄ›).OÄekáváno %i, %i obdrženo. Tuto chybu prosím ohlaste na %s (v angliÄtinÄ›).OÄekáváno 32 bajtů, obdrženo %i. Kontaktujte prosím %s (v angliÄtinÄ›).ExpoziceUzamÄení expozice a clonyMěření expoziÄní hodnoty ze stÅ™eduMěření expoziÄní hodnoty z mřížkyMěření expoziÄní hodnoty z jediného boduKompenzace expoziÄního upÅ™ednostňováníRežim pořízení více snímků s různým stupnÄ›m expoziceVelikost rozdílu mezi expozicemi jednotlivých snímků dávkyKompenzace chyby měření expoziÄních hodnotKompenzace expoziÄní hodnoty (EV)Režim prodlevy expoziceStav zobrazení expozicemíra zmÄ›ny hodnoty ISOExpoziÄní index (obdoba ISO u filmových svitků)Rozsvícení indikátoru expoziceStav indikátoru expoziceUzamÄení expoziÄních hodnotExpozimetrMěření expoziÄních hodnotRežim měření nasvÄ›tlení scényExpoziÄní programRežim expoziÄního programumíra zmÄ›ny expoziÄní hodnotyExpoziÄní ÄasKompenzace hodnot z expozimetruNastavení kompenzace expozice bylo zmÄ›nÄ›noKompenzace expozice: %d Kompenzace expozice: %s Režim prodlevy exponováníÚroveň jasu pro náhledyExterní bleskExterní blesk pÅ™ipojenKompenzace externího bleskuRežim externího bleskuDruh externího bleskuStav externího bleskuVnÄ›jší synchronizaceExtra vysokéClonové ÄísloF2F2,3F2,8F4F5,6F8Fatální chyba: úvodní hodnota kontrolního souÄtu pro délku %d není známa Datové úložiÅ¡tÄ›: Souborů: %d UzamÄení hodnoty nastavení clonyNevysílat měřící záblesky pÅ™ed každým snímkemAutomat. zaostÅ™ení s důrazem na obliÄejeTovární nastaveníVÄ›rnéDaleko %dDaleko 1Daleko 2Daleko 3Vzdálená scénaRychlý souborový systémKrátký exp. ÄasSouborSoubor „%s“ nebyl ve složce „%s“ nalezen.Soubor „%s/%s“ neexistuje.Smazání souboru – ano, Číselná posloupnost souborůOdeslání souboru – ano Komprimace datSoubor existujeSoubor nebyl nenalezenSoubor je chránÄ›n.RozliÅ¡ení obrázkuVelikost souboru je %ld bajtů. Nahrávat je pÅ™itom možné soubory velké nanejvýš %i bajtů.Typ souboruNahrání souboru se nezdaÅ™ilo.Soubor byl příliÅ¡ velký. PÅ™ed nahráváním dalších souborů bude přístroj nejspíš tÅ™eba vypnout a zapnout.typ souboru: FlashPix (typ souboru: JPEG (Vyplňující bleskZobrazovat hodnotu citlivosti (ISO) v hledáÄkuJemnéOhňostrojFirmwareVerze firmwaru: %8sVerze firmwaru: %8s PoÄet snímků: %i Velikost datového úložiÅ¡tÄ›: %i kB Volné místo: %i kB Verze firmwaru: %d.%d Verze firmwareVerze firmware: %d.%02d Firmware: %d.%d Rybí okoPevnéBleskBlesk je nabitŘídící blesk – kompenz. pro skup. A podřízených jedn.Řídící blesk – režim pro skupinu A podřízených jedn.Řídící blesk – hodnota pro skup. A podřízených jedn.Řídící blesk – kompenz. pro skup. B podřízených jedn.Řídící blesk – režim pro skup. B podřízených jedn.Řídící blesk – hodnota pro skup. A podřízených jedn.Řídící blesk – kanál pro ovl. podřízených jedn.Řídící blesk – kompenzace pro řídící jednotkuŘídící blesk – režim pro řídící jednotkuŘídící blesk – hodnota pro řídící jednotkuOvládání podřízených záblesk. jednotekŘídící blesk – intenzita zábleskuKompenzace bleskuKompenzace vlivu blesku na exp.Zablok. intenzity zábleskuUzamÄení nastavení bleskuPoÄet „M-opakování“ bleskuProdleva mezi „M-opakováním“ bleskuHodnota „M-opakováním“ bleskuRežim bleskuRežim ovládajícího blesku – intenzitaRuÄní režim nastavení intenzity zábleskuVypnout bleskVyklopení bleskuPoÄet zábleskůNastavení bleskuNastavení bleskuExp. Äas bleskuVýkon (smÄ›rné Äíslo) bleskuSynchronizace záblesku a exponováníJemné doladÄ›ní vyvážení bílé pro osvÄ›tlení bleskemBlesk odpálen dle potÅ™ebyRežim blesku byl zmÄ›nÄ›nRežim blesku: odpálit dle potÅ™eby,Režim blesku: odpálit vždy,Režim blesku: vypnuto Blesk vypnutBlesk odpálen vždyPouze bleskBlesk/zaclonÄ›níBlesk/expoziÄní ÄasBlesk/expoziÄní Äas/zaclonÄ›níBlesk: odpálení dle potÅ™ebyBlesk: odpálení dle potÅ™eby (s omezením jevu Äervených oÄí)Blesk: vypnutBlesk: odpálení vždyBlesk: odpálení vždy (s omezením jevu Äervených oÄí)Blesk: neurÄenoFlashPix (.fpx)PÅ™izpůsobivý programOmez. vlivu blikání výbojkového osvÄ›tleníTyp výbojkového osvÄ›tlenívýbojkové-1-domov-6700Kvýbojkové-2-stůl-5000Kvýbojkové-3-kancelář-4200KVýbojkovéVýbojkové HVýbojkové svítidlo 1Výbojkové svítidlo 2Výbojkové svítidlo 3Výbojkové svítidlo 4Výbojkové svítidlo 5Jemné doladÄ›ní vyvážení bílé pro výbojkové osvÄ›tlenívýbojkové-1-domov-6700Kvýbokové-2-stůl-5000Kvýbojkové-3-kancelář-4200KHloubka ostrostiJmenovatel ohniskové vzdálenostiMax. ohnisková vzdálenostMin. ohnisková vzdálenostNejdelší ohnisková vzdálenostNejkratší ohnisková vzdálenostOhniskoObal oblasti zaostÅ™eníOblast, kam automaticky zaostÅ™ovatFokus BereichOhnisková vzdálenostUzamÄení zaostÅ™eníRežim měření zaostÅ™eníRežim zaostÅ™ováníRežim zaostÅ™ování „2“Jas zaostÅ™ovacího boduRežim zaostÅ™ování byl zmÄ›nÄ›nPozice ohniskaOstřící bodZaostÅ™ení pouze na stÅ™ed – automat.ZaostÅ™ení pouze na stÅ™ed – ruÄníChyba zaostÅ™ování.Složka „%s“ obsahuje pouze %i souborů, což je ménÄ›, než poÅ™adové Äíslo %i souboru, který je vyžadován.ListíJídloPro režim řízení expoziÄního Äasu délkou stisku spouÅ¡tÄ› (bulp), je tÅ™eba, aby otoÄný voliÄ režimů byl pÅ™epnut do polohy „M“ (plnÄ› ruÄní režim) a „expoziÄní Äas“ nastaven na „bulb“.Pro přístroje s Äipy od S&Q Technologies. MÄ›lo by fungovat s gtkam. Snímky jsou ukládány ve formátu PPM. VÅ¡echny známé přístroje od S&Q umí dvÄ› rozliÅ¡ení. Jaké, to záleží na konkrétním přístroji. Pouze malá Äást z nich umožňuje smazat vÅ¡echny snímky naráz. Nahrávání dat do přístroje není možné. Režim komprese obrazových dat, které mnohé tyto přístroje umí, je podporován jen ÄásteÄnÄ›. Videozáznamy jsou v přístroji ukládány jako podsložky, Gtkam je stahuje oddÄ›lenÄ›. Pokud se na přístroji nachází pořízený videozáznam, pÅ™ed názvem přístroje je zobrazen malý trojúhelník. K záznamu se lze dostat kliknutím na složku, Äímž se zobrazí jednotlivé snímky a je možné je stáhnout. Záznam bude stažen jako jednotlivé snímky s názvy odvozenými od videozáznamu, ke kterému náleží. Díky tomu je není nutné uchovávat v oddÄ›lených složkách. UrÄeno pro přístroje s Äipy od S&Q Technologies, s identifikátorem výrobce 0x2770 a identifikátory výrobku 0x905C, 0x9050, 0x9051, 0x9052 a 0x913D. Snímky jsou ukládány ve formátu PPM. Jen nÄ›které z přístrojů umožňují mazání vÅ¡ech snímků naráz. PoÅ™izovat snímky je možné pouze povelem pro pořízení náhledového snímku, namísto kterého je pořízen snímek samotný. Pozor, na přístrojích, které umožňují smazání vÅ¡ech snímků naráz, vyvolá takové pořízení snímku smazání vÅ¡ech snímků uložených v přístroji! Nahrávání snímků do přístroje není možné. Taktéž není možné mazat jednotlivé snímky povelem z poÄítaÄe. VynucenéBlesk odpálit vždy Formátovat paměťovou kartu pro data a nastavit název alba.Formátovat paměťovou kartu (CompactFlash) pro dataFormátovat úložiÅ¡tÄ› datJeÅ¡tÄ› je možné pořídit snímků: %i Pořízeno snímků: %4d Pořízeno snímků: %i FrancouzÅ¡tina (Français)Snadno zapamatovatelný název zařízeníSynchronizace se zaÄátkem expozicePlnéSnímekPlnÄ› ruÄníFormát souboru s úplným zobrazenímPrůběžné autom. zaostÅ™ováníFunkÄní tlaÄítko 2Režim provozuRežim provozu: 0x%04x ObecnéObecné plochéObecné hierarchickéNÄ›mÄina (Deutsch)Získat následující datový blokZískat výzvu na pÅ™iblíženíZískat registraÄní odpovÄ›ÄZískat licenÄní odpovÄ›Ä WMDRM-NDZískat odpovÄ›Ä aplikace WMDRM-PDNaÄíst popis vlastnosti zařízeníNaÄíst hodnotu vlastnosti zařízeníZískat popis vzájemnÄ› závislých vlastnostíZískat stav licenceOdeslat výzvu poÄítadlaZískat odezvu poÄítadlaZískat poÄet objektůZískat objektNaÄíst manipulaci s objektemNaÄíst informace o objektuNaÄíst podporované vlastnosti objektuNaÄíst popis vlastnosti objektuNaÄíst seznam vlastností objektuNaÄíst hodnotu vlastnosti objektuNaÄíst reference objektuZískat neúplný objektZískat výzvu zabezpeÄeného ÄasuZískat odpovÄ›Ä zabezpeÄeného ÄasuNaÄíst identifikátory datového úložiÅ¡tÄ›NaÄíst informace o datovém úložiÅ¡tiZískat synchronizaÄní seznamZískat náhledZískat typy pÅ™enositelných seznamů stopProbíhá zjišťování souÄasného nastavení přístroje…Získávají se data…Probíhá získávání seznamu souborů…Probíhá stahování souboru…Probíhá získávání informací o %i souborech…Probíhá získávání náhledu…Získán neoÄekávaný výsledek (kód chyby 0x%x). Kontaktujte prosím %s (v angliÄtinÄ›).StupnÄ› Å¡edéStupnÄ› Å¡edéZelenáKterýmkoli ze senzorůTyp skupiny PTNHDR – vysoká dynamikaRežim vysokého dyn. rozsahu (HDR)HDR – vyhlazováníHardwarová chybaVysoké 1Vysoké 2vysokéVysoké (1152 × 872)vysoká (dobrá obrazová kvalita)Vysoké 2PotlaÄení Å¡umu pÅ™i vysoké citlivosti (ISO)Redukce Å¡umu pÅ™i vysokých hodnotách citlivosti (ISO)Řízení výškySvÄ›tlé tóny, nízký kontrastVysoká citlivostKrátký expoziÄní ÄasZvýrazňovat aktivní zaostÅ™ovací bodDržetRežim hostitele: %s Korekce expozice: %s ExpoziÄní údaje: %d Platné datum: %s Datum: %d/%02d/%02d %02d:%02d:%02d Nastavení samospouÅ¡tÄ›: %s Nastavení kvality: %s Režim pÅ™ehrávání/záznamu: %s ID platných paměťových karet: %s ID paměťových karet: %d Režim blesku: Prodl. pÅ™echodu poÄítaÄe do úspor. režimu (ve vteÅ™inách)Po jak dlouhé dobÄ› neÄinnosti bÄ›hem pÅ™ipojení k poÄítaÄi se má přístroj vypnout?Po jak dlouhé dobÄ› neÄinnosti se má přístroj sám vypnout, když není pÅ™ipojen k poÄítaÄi?Jak dlouho potrvá, než se přístroj vypne?Úprava barevného tónuPÅ™epoÄítat na vyšší rozliÅ¡ení (v přístroji)Probíhá vstupnÄ›/výstupní operaceIdentifikátorIP adresa (pro DHCP prázdné)Citlivost (ISO) automatickyMaximum pro ISO v automatickém režimuNastavení horní hranice automat. ISOCitlivost na svÄ›tlo (ISO)Nastavení citlivosti (ISO) zmÄ›nÄ›noIkonyNeÄinnéNeplatný parametr.Nastavení pÅ™isvÄ›tleníSnímekSnímek %s je chránÄ›n proti smazání.Zvuk a obrazSeřízení obrazuKomentář k obrázkuZapnout komentáře k obrázkuText komentáře k obrázkuFormát obrazuObraz. formát pro paměťovou kartu CFObraz. formát pro externí pevný diskObraz. formát pro paměťovou kartu SDRežim obrazuObrazová kvalitaZobrazení snímku po pořízeníOtoÄení obrázkuOznaÄení snímku k otoÄeníNastavení obrazuVelikost snímkuStabilizace obrazuFormát obrazových dat byl zmÄ›nÄ›nVýška snímku v pixelech: %d Neplatné Äíslo snímku.Snímek je chránÄ›n proti smazání.RozliÅ¡ení snímku: %d Obrázek typu %d není tímto přístrojem podporován!Typ obrazových dat %d není podporován.Typ obrázku není podporovánŠírka snímku v pixelech: %d Img Conf TimeOkamžitéPoužívá seZataženoStavový displejInteriérNekoneÄnoNekoneÄno/rybí okoNastavení informaÄního displejeChybový stav informaÄního displejeInformaceInformace o přístroji s Äipem STV0680: Informace týkající se přístrojů s identifikací 0x2770:0x9153. Pro práci s tímto přístrojem nedoporuÄujeme používat grafické uživatelské rozhraní. Namísto toho používejte příkaz „gphoto2 -P“. Stahování videozáznamu není možné. Nerozpoznaná úvodní odpovÄ›Ä od přístroje – „%c“Probíhá inicializace zařízeníZahájit snímáníInicializovat zahájení snímáníInterní paměťVnitÅ™ní chyba Ä. 1 v get_file_func() (%s řádek %i)VnitÅ™ní chyba (1).VnitÅ™ní chyba (2).Vyskytla se vnitÅ™ní chyba pÅ™i hledání ovladaÄů pro zařízení. Nejsou (souborové) cesty příliÅ¡ dlouhé?VestavÄ›né datové úložiÅ¡tÄ›: %d MB celkem, %d MB volných. NeplatnéNeplatné nastavení citlivosti (ISO)Neplatný stavNeplatná hodnota ( %d ) Neplatné nastavení clonyNeplatné nastavení zvukových upozornÄ›níNeplatné nastavení třídy velikosti snímkuNeplatné nastavení kompenzace expoziÄních hodnotNeplatné nastavení bleskuNeplatný režim zaostÅ™ováníNeplatné nastavení datového formátu snímkuNeplatné nastavení režimu poÅ™izování snímkůNeplatné nastavení expoziÄního ÄasuChyba závÄ›rky.ItalÅ¡tina (Italiano)JD11 Marcus Meissner OvladaÄ pro přístroj Jenoptik JD11. KomunikaÄní protokol byl prozkoumán s použitím aplikací WINE a IDA.Nastavení JD11JPEGJPEG – základní kvalitaStrategie komprimace JPEGjemný JPEGJPEG běžné kvalityobyÄejný JPEGJaponÅ¡tina (日本語)PÅ™i nahrávání do přístroje zachovat název souboruDÄ›ti a domácí mazlíÄciZnámé problémy: 1. Když Kodak DC3200 neobdrží alespoň každých 10 vteÅ™in žádný povel, pÅ™estane komunikovat a je tÅ™eba jej inicializovat znovu. Pokud zjistíte, že přístroj neodpovídá, jednoduÅ¡e přístroj znovu vyberte. To spustí jeho opÄ›tovnou inicializaci.Známé problémy: Pokud se vyskytne problém v komunikaci, restartujte kameru i aplikaci. OvladaÄ se není schopen s takovými situacemi vypořádat, zvláštÄ› po nekorektním vypnutí přístroje pÅ™i komunikaci rychlejší než 9600 b/s.Knihovna pro přístroj Kodak DC120 Scott Fritzinger (na popud Äetných přání).Knihovna pro přístroje Kodak DC240, DC280, DC3400 a DC5000 Scott Fritzinger a Hubert Figuiere PÅ™edÄ›láno a upraveno pro gPhoto2.OvladaÄ pro Kodak DC3200 Donn Morrison Dotazy a komentáře jsou vítány.OvladaÄ pro Kodak EZ200 Bucas Jean Francois Konica – nastaveníKnihovna pro Konica Q-M150 Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Podpora pro francouzskou verzi Konica Q-M150.Knihovna pro Konica Lutz Müller UrÄeno pro vÅ¡echny přístroje od Konica a také nÄ›které od HP.KorejÅ¡tina (한국어)LCD displejÄŒas automat. vypnutí displeje (ve vteÅ™inách)Prodleva automatického vypnutí displeje (vteÅ™iny)Podsvícení displejePodsvícení displeje a stavového řádkuJas displejePodsvÄ›tlení LCD displejeRežim displejeProdl. pÅ™ed vypnutím displejeRežim pÅ™isvÄ›tlující LEDObecný ovladaÄ pro LG GSM Guillaume Bedot KrajinaJazykOvladaÄ pro Largan Hubert Figuiere VelkéJPEG – vysoké rozl. a ménÄ› ztrát. kompr.JPEG – vysoké rozl. a více ztrát. kompr.VlevoOhnisk. vzdálenost (bez Äipu)Identifikátor objektivuMax. zaclonÄ›ní objektivu (bez Äipu)Režim objektivuOznaÄení objektivuDruh objektivuTyp objektivuNasmÄ›rování objektivu se neshoduje s bleskem Objektiv není pÅ™ipojen SvÄ›tloExpozimetrSvÄ›tlé na tmavém pozadíNedostatek svÄ›tla.Vypsat profily pro WiFiVypsat vÅ¡echny souboryVýpis souborů v „%s“…Výpis složek v „%s“…Lithium-iontovéOblast zaostÅ™ování v režimu živého náhleduAutomat. zaostÅ™ení v živém náhleduRežim autom. zaostÅ™ení v živém náhleduDávkové snímání v režimu živého náhleduPÅ™iblížení v živém náhleduRežim živého náhleduDůvod nedostupnosti živého náhleduStav živého náhleduProbíhá nahrávání ovladaÄů přístrojů z „%s“…MístníNárodní prostÅ™edíData národního prostÅ™edí jsou poÅ¡kozena.Data národního prostÅ™edí jsou příliÅ¡ objemná.Soubor s národním prostÅ™edím je příliÅ¡ dlouhý!ZámekOvladaÄ pro Logitech Clicksmart 310 Theodore Kilgore Redukce Å¡umu pÅ™i dlouhých exp. ÄasechOmezení úrovnÄ› Å¡umu pÅ™i dlouhých expoziÄních ÄasechDlouhý exp. ÄasProbíhá hledání přístroje…Zdá se, že přístroj není urÄen pro pořízování snímků (modem?)BezeztrátováZtrátovánízkéNízké (576 × 436)mírná (nejlepší obrazová kvalita)Nízké 2Málo svÄ›tlaPomalá synchronizaceNízký kontrastTmavé tóny, vysoký kontrastNízká citlivostMírné doostÅ™ováníDlouhý expoziÄní ÄasFunkce pomalé závÄ›rky není k dispoziciV %s není možné použít malá písmena.plnÄ› ruÄní režimmax. svÄ›tla (min. zaclon.) pÅ™i dost. hl. ostrosti (RUÄŒNÄš zvol. nejbl. a nejvzd. objekt)Seznam audiostop (formát M3U)M4AMF (napevno)MF (výbÄ›r)Dokument MHT (zkompilované HTML)MM/DD/RRRRSeznam audiostop (formám MPL)MTR > podMax. svÄ›tla (min. zaclon.) pÅ™i dost. hl. ostr. (pro RUÄŒNÄš zvol. nejbl. a nejvzd. objekt)Makropřístupový bod ‒ klientRuÄníRuÄní „2“RuÄní zaostÅ™eníVíce snímků s různými hodnotami v ruÄním režimuRuÄní nastavení videaRuÄní nastavení Äísla objektivuRuÄní zaostÅ™ováníVýrobce: %s OvladaÄ pro Mars MR97310 Theodore Kilgore Přístroj Mars MR97310. Uložen %i snímek. Přístroj Mars MR97310. Uloženy %i snímky. Přístroj Mars MR97310. Uloženo %i snímků. MřížkaMatthew G. Martin Odvozeno od programu fujiplay, jehož tvůrcem je Thierry Bousch Nejvyšší možné zaclonÄ›ní pÅ™i nejdelší možné ohniskové vzdálenostiNejvyšší možné zaclonÄ›ní pÅ™i nejkratší možné ohniskové vzdálenostiNejvyšší ohnisková vzdálenostNejvýšeMax. zaclonÄ›ní, možné pÅ™i nejdelším ohniskuMax. zaclonÄ›ní, možné pÅ™i nejkratším ohniskuKolik snímků nejvýše poříditNejvyšší poÄet po sobÄ› jdoucích snímkůNanejvýš je možné pořídit snímků: %d Paměťová kartaSkupina paměťových karetMediacaststÅ™edníStÅ™ední (1152 × 872)stÅ™ední (lepší obrazová kvalita)StÅ™ední 1StÅ™ední 2StÅ™ední 3JPEG – stÅ™ední rozl. a ménÄ› ztrát. kompr.StÅ™ední vysokéStÅ™ední nízkéJPEG – stÅ™ední rozl. a více ztrát. kompr.StÅ™ední vysokéStÅ™ední citlivostVolné místo na paměťové kartÄ›: %i bytes Paměťová kartaStav paměťové karty (%d): %s Kapacita datového úložiÅ¡tÄ› přístroje: %d Mb Zásobník nabídky AZásobník nabídky BZásobník nabídky CZásobník nabídky DNabídky a pÅ™ehráváníMetadata jsou podporována pouze u zařízení komunikujících protokolem MTP.ÄŒasomÄ›rRežim měřeníKonec kroku ruÄního zaostÅ™eníPříliÅ¡ malý krok ruÄního zaostÅ™eníMikrofonVypnout mikrofonTabulka Microsoft Excel (.xls)Prezentace Microsoft PowerPoint (.ppt)Dokument Microsoft WordNejnižší ohnisková vzdálenostEfekt miniaturyNejménÄ›Nejnižší expoziÄní ÄasKnihovna pro Minolta Dimage V %s Gus Hartmann PodÄ›kování MinoltÄ› za poskytnutí dokumentace.Zdvihnutí zrcátkaPosloupnost zdvihnutí zrcátkaRůzná nastavení pro exp. a objektivChybÄ›jící ÄísloPozice Ml boduSpojení pozice Ml bodu a automat. ostÅ™eníStÅ™ed umístÄ›ní Ml boduIdentifikátor modeluModel: Minolta Dimage V (%s) Verze hardwaru: %s Verze firmwaru: %s Model: Model: %s Model: %s Kapacita: %i MB Napájení: %s Prodleva automat. vypnutí: %i min Režim: %s Snímků: %i/%i Zobrazení data: %s Datum a Äas: %s Model: %s Datové úložiÅ¡tÄ›: %d bajtů z %d volnýchModel: %s Sériové Äíslo: %s, Verze hardware: %i.%i Verze firmware: %i.%i Verze testovacího softwaru: %i.%i Název: %s, Výrobce: %s Model: %x, %x, %x, %xModel: Kodak %s Náhledové záblesky pro zjiÅ¡tÄ›ní, kam budou vrhány stíny (Modeling Flash)Náhled vrhaných stínů sérií zábleskůStÅ™edníMonitorProdleva automatického vypnutí displejeMonochromatickéMÄ›síc/Den/RokPÅ™esunout objektSlot paměťové karty pro videonahrávkuMikrofon pro videonahrávkuKvalita videonahrávkyRozliÅ¡ení videonahrávkyZvukový stopa k videuHlas videonahrávkyVícebodovéVícebodovéVícebodové měřeníVícebodovéZostÅ™ení na více bodů (stÅ™ed)ZostÅ™ení na více bodů (vlevo)ZaostÅ™ení na více bodů (neurÄeno), ruÄníZostÅ™ení na více bodů (vpravo)ZaostÅ™ení na více bodů – automat.Vícenásobný výbÄ›rZdvihnutí zrcátkaKnihovna gPhoto2 pro přístroj Mustek MDC-800 Henning Zabel Do gphoto2 zaÄlenil Marcus Meissner Podporuje komunikaci pÅ™es sériové i USB rozhraní.různé barev. úpravy snímkuNEF (Raw)NEF + základní kvalitaNEF + vysoká kvalitaNEF + normální kvalitaNIKON – nastavení automatického pořízení více snímků s různými hodnotamiNEZNÃMÉNTSCPrázdný parametr „%s“ v %s na řádku %iNázev „%s“ neodpovídá žádnému ze známých přístrojůNázev „%s“ (%li znaků) je příliÅ¡ dlouhý, možných je nanejvýš 30 znaků.PÅ™edpona názvuNázev, který se má pÅ™iÅ™adit paměťové kartÄ› po naformátováníBlízko %dBlízko 1Blízko 2Blízko 3Síťová maskaNeutrálníNásledujícíNikl-kadmiovéNikl-hydridovéNoÄní krajinaNoÄní portrétNoÄní vidÄ›níNoÄní vidÄ›níNoÄní krajinaNoÄní scénaNoÄní momentkaNikon Coolpix 880: Funkce přístroje: Nastavování optického pÅ™iblížení nefunguje správnÄ› Ne vÅ¡echna nastavení je možné naÄítat Äi mÄ›nit, například jemné dolaÄování vyvážení bílé a nastavení jazyka nabídek přístroje. Aby bylo možné nastavovat expoziÄní Äas, musí být přístroj pÅ™epnutý do režimu „M“ (ruÄní). Nikon Coolpix 995: Ne vÅ¡echny položky nastavení tohoto zařízení jsou k dispozici, pokud chcete pomoci s jejich doplnÄ›ním, obraÅ¥te na e-mailovou konferenci vývojářů gphoto. Stahování snímků by mÄ›lo fungovat v pořádku. NIKON – ExpoziÄní ÄasNikon – režim bleskuNikon – hledáÄekNeBez paměťové karty CF nelze pořídit snímekNebyla rozpoznána žádná paměťová karta typu Compact Flash Dvojitá clona nePro %s nejsou k dispozici žádné EXIF informace.Smazání souboru – ne, Odeslání souboru – ne Bez bleskuZaÄít pořízovat snímky – ne, Žádná kontrolka napájeníŽádný pÅ™epínaÄ rozliÅ¡eníPaměťová karta typu SD není vložena. Žádná odezva od zařízení.Pro %s nebyl nalezen žádný soubor se zvukovým záznamemPro tento přístroj není k dispozici příruÄka o jeho používání z poÄítaÄe. Není vložena paměťová kartaV přístroji není vložena paměťová karta. Není přítomna žádná paměťová karta.Paměťová karta není­ přítomnaDůvod není známPřístroj neodpovídáPro poÅ™izování dalších snímků již není místo. Je tÅ™eba smazat nÄ›jaké pÅ™edchozí.Na paměťové kartÄ› doÅ¡lo místo.Žádná metoda poÅ™izování snímků specifická dle výrobce ŽádnéNezvoleno žádnéBěžnéBěžné Zapnout obyÄené automatické ostÅ™eníAutomat. zaostÅ™ení pro běžný úhel zábÄ›ruPrázdnéNa datovém úložiÅ¡ti není dostatek volného místaNa paměťové kartÄ› již není dostatek volného místaNení možné v režimu živého náhleduNení ve vyplňovacím režimuNepÅ™ipravenoNepoužitoPoznámka: není vložena žádná paměťová karta, nÄ›které hodnoty proto nemusí odpovídat skuteÄnosti PoÄet uložených snímků: %d PoÄet obrázků: %dPoÄet snímků: %d PoÄet snímků: %i Verze firmware: %sVypnutoV pořádkuZapnutoNastala chyba pÅ™i komunikaci s přístrojemVypnutoKancelářOlympus 750 Ultra Zoom: 1) tento typ je pro ovládání z poÄítaÄe pÅ™es USB tÅ™eba nejprve pÅ™epnout do přísluÅ¡ného režimu. Postup pro toto je následující: - zapnout přístroj - otevřít krytku slotu pro paměťovou kartu - podržet souÄasnÄ› tlaÄítka „nabídka“ a „rychlé zobrazení“ (quickview), dokud se na displeji přístroje neobjeví nabídka pro zapnutí přísluÅ¡ného režimu. 2) Pokud bÄ›hem ovládání z poÄítaÄe pÅ™epnete displej do režimu „monitor“ Äi „normální“, nezapomeňte jej pÅ™ed odpojením od poÄítaÄe pÅ™epnout zpÄ›t do režimu „vypnuto“. Pokud tak neuÄiníte, přístroj pak nebude reagovat na stisk žádného z tlaÄítek na nÄ›m. Pro nápravu staÄí pÅ™ipojit jej zpÄ›t k poÄítaÄi a provést zmínÄ›né vypnutí displeje.ZapnutoOdpálen vždy + omezení jevu Äervených oÄíZobrazovat radyOdpálen vždy, omezení jevu Äervených oÄíJednoráz. automat. zaostÅ™ení pÅ™i namáÄknutí spouÅ¡tÄ›Jednorázové automatickéBylo vyžádáno vypsání souborů ve složce „%s“ – toto je ale možné pouze pro koÅ™enovou složku.ZaÄít pořízovat snímky – ano, Otevřít mediální relaciOtevřít relaciRežim provozu přístrojeOperace byla zruÅ¡enaOptimální kvalitaOptimalizace snímkuNatoÄeníJinéOstatní vlastnosti zařízení ohlednÄ› PTPOstatní­ nastaveníPrávÄ› probíhá vykonávání jiného povelu.Mimo ohniskoNedostatek pamÄ›tiNedostatek pamÄ›ti: je tÅ™eba %d bajtů.Nedostatek pamÄ›ti: je tÅ™eba %ld bajtů.ExteriérJméno vlastníkaJméno vlastníka bylo zmÄ›nÄ›noÄást. nastavitelný automat. režimPALmonitor poÄítaÄeSeznam audiostop (formát PLS)PTP – přístup odepÅ™enPTP – poÅ™izování snímku již byl zruÅ¡enoPTP – zařízení je zaneprázdnÄ›néPTP – vlastnost přístroje není podporovánaPTP – obecná chybaPTP – pÅ™enos nebyl dokonÄenPTP – neplatný formát instrukcíPTP – neplatný formát vlastnosti zařízeníPTP – neplatná hodnota vlastnosti zařízeníPTP – neplatný zápis formátu objektuPTP – neplatný způsob zacházení s objektemPTP – neplatný parametrPTP – neplatný nadÅ™azený objektPTP – neplatný identifikátor datového úložiÅ¡tÄ›PTP – neplatný identifikátor transakcePTP – nejsou k dispozici žádné náhledyPTP – informace o objektu nejsou platnéPTP – v pořádkuPTP – objekt je chránÄ›n proti zápisuPTP – operace není podporovánaPTP – parametr není podporovánPTP – ÄásteÄné smazáníPTP vlastnost 0x%04xPTP – samotestování nedopadlo úspěšnÄ›PTP – relace je již otevÅ™enaPTP – relace není otevÅ™enaPTP – urÄení dle formátu není podporovánoPTP – zadání cíle není podporovánoVerze standardu PTP: %d.%d PTP – datové úložiÅ¡tÄ› je plnéPTP – datové úložiÅ¡tÄ› není k dispoziciPTP – datové úložiÅ¡tÄ› je pouze pro ÄteníVyprÅ¡el Äasový limit PTPPTP – transakce zruÅ¡enaNeznámá chyba protokolu pro pÅ™enos snímků (PTP)PTP – neznámé instrukce výrobceVerze protokolu pro pÅ™enos snímků (PTP)OvladaÄ pro protokol PTP2 (c)2001-2005 Mariusz Woloszyn . (c)2003-%d Marcus Meissner . Tento ovladaÄ podporuje přístroje, které komunikují pomocí protokolů PTP, PictBridgeâ„¢ Äi MTP (multimediální pÅ™ehrávaÄe). Užijte si to!Paket byl přístrojem odmítnut. Kontaktujte prosím %s (v angliÄtinÄ›).Pevné ohniskoPevné ohniskoKnihovna gPhoto pro Panasonic DC1000 Mariusz Zynel Založeno na programu dc1000, který vytvoÅ™ili: Fredrik Roubert a Galen Brooks .Knihovna gPhoto pro zařízení Panasonic DC1580 Mariusz Zynel Založeno na programu dc1000 od Fredrik Roubert a Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic zavádí technologii snímání obrazu nazývanou PHOTOSHOT poprvé v této Å™adÄ› Palmcoders. Snímky se uchovávají ve formátu JPEG na interní paměťové kartÄ› a lze je pÅ™enášet do poÄítaÄe pomocí vestavÄ›ného sériového portu. Snímky jsou ukládány v jednom ze dvou rozliÅ¡ení: NORMÃLNÃM 320×240 a JEMNÉM 640×480. SnímaÄ CCD, který provádí snímání z optiky má pouze 300K a proto mají výsledné snímky nízkou kvalitu.OvladaÄ pro zařízení Panasonic PV-L859-K/PV-L779-K Palmcorder Andrew Selkirk Parametr 1Parametr 2Parametr 3Nastavení parametruČásteÄnéČásteÄné měřeníPárty/interiérSouborová cesta není absolutníTyp zjiÅ¡tÄ›ného přístrojeTrvalá nastaveníPortrét domác. mazlíÄkůEfektyPÅ™ehrávání informací o snímkuPořízování static. snímku v režimu videozáznamuSnímků v přístroji: %d Nastavení zařízení (fotorámeÄku)Nastavení obrazuStyl snímkuSnímkyObrázků v přístroji: %d PÅ™ehrávatRežim pÅ™ehráváníIndex pÅ™ehrávacího kontejneruPÅ™ehrávání objektuPozice pÅ™ehráváníRychlost pÅ™ehráváníID ochrany „autorských“ práv (DRM) (MS PlaysForSure)Rychlost rozhraníPortrétNapájeníŠetÅ™ení energiíDávkové snímáníVypnutí zařízeníProdleva pÅ™ed pořízením snímkuPÅ™ednastavenéPÅ™ednastavené uživatelem 1PÅ™ednastavené uživatelem 2PÅ™ednastavené uživatelem 3PÅ™ednastavené uživatelem 4PÅ™ednastavené uživatelem 5Úplné stisknutí spouÅ¡tÄ›NamáÄknutí spouÅ¡tÄ›TlaÄítko náhleduTlaÄítko Ä. 2 náhleduNáhledový obrázekPÅ™edchozíVyskytl se problém pÅ™i stahování obrázkůVyskytl se problém pÅ™i získávání informací o obrázkuVyskytl se problém pÅ™i získávání poÄtu obrázkůVyskytl se problém pÅ™i otevírání portuVyskytl se problém s naÄítáním obrázků z paměťové kartyVyskytl se problém pÅ™i restartování přístroje Vyskytl se problém pÅ™i nastavení rychlosti komunikaceVyskytl se problém se zobrazováním živého náhleduZpracovat WFC objektIdentifikátor výrobku: %02x%02x Název profiluBlesk vypnut KvalitaRychlá odezvaDálk. ovl. poříz. dalšího snímku bez opÄ›tovného ostÅ™eníDoba zobrazení snímku po vyfotografováníRežim tiché závÄ›rkysurová data ze snímaÄe (RAW)RAW + JPEG základní kvalityRAW + jemný JPEGRAW + obyÄejný JPEGRAW + JPEG s vysokým rozl. a ménÄ› ztrát. kompr.RAW + JPEG s vysokým rozl. a více ztrát. kompr.RAW + JPEG se stÅ™edním rozl. a ménÄ› ztrát. kompr.RAW + JPEG se stÅ™edním rozl. a více ztrát. kompr.RAW + JPEG s nízkým rozl. a ménÄ› ztrát. kompr.RAW + JPEG s nízkým rozl. a více ztrát. kompr.surová data ze snímaÄe (RAW) „2“RGB ziskStav hodin reálného Äasu (RTC): %d Režim RAWKomprimace dat RAWJen pro Ätení s mazáním objektůJen pro ÄteníČtení i zápisÚdaje o datech, jako napÅ™. vodorovné a svislé rozliÅ¡ení slouží pouze pro informaci a proto je nelze mÄ›nit.PÅ™ipravenoSynchronizace s koncem exp. + pomalá synchronizaceSynchronizace s koncem exp.Pomalá synchronizace s koncem exp.Obdržena neoÄekávaná odpovÄ›Ä (kód chyby %i). Kontaktujte prosím %s (v angliÄtinÄ›).Obdržena neoÄekávaná data (0x%02x, 0x%02x).Obdržena neoÄekávaná hlaviÄka (%i)Obdržena neoÄekávaná odpovÄ›ÄProbíhá příjem dat…NahrávatRežim nahráváníRežim nahráváníZáznamové médiumÄŒervenáOmezení jevu Äervených oÄíBlesk – omezení jevu Äervených oÄíOmezení jevu Äervených oÄíOmezení jevu Äervenách oÄí + pomalá synchronizaceOdpálen dle potÅ™eby s omezením jevu Äervených oÄíVyplňující blesk s omezením jevu Äervených oÄíVyplňující blesk s omezením jevu Äervených oÄíOmezení jevu Äervených oÄíOmezení jevu Äervenách oÄí + pomalá synchronizaceUvolnitUvolnit + zaostÅ™itÚplné uvolnÄ›ní spouÅ¡těČásteÄné uvolnÄ›ní spouÅ¡tÄ›Oblast pro zaostÅ™eníPoÅ™izování snímků i bez paměťové kartyVzdálenéVerze API daného zařízeníVzdálené zdvihnutí zrcátkaRežim dálkového ovládáníVzdálené vyprÅ¡ení Äasové prodlevyVyjímatelné RAM (paměťová karta)Vyjímatelná ROMOpakovanéHlášení získaných položekHlášení pÅ™idaných/smazaných položekByly požadovány informace o snímku %i (= 0x%x), namísto toho ale obdrženy informace o jiném snímku (%i)Resetovat zásobník 0Reset zásobníku nabídkyRestartovat zaří­zení­Resetovat hodnotu vlastnosti zařízeníVrátit zaostÅ™ovací bod zpÄ›t na stÅ™edProbíhá opÄ›tovné navázání komunikace…RozliÅ¡eníPÅ™epínaÄ rozliÅ¡eníRozliÅ¡ení a velikostZmÄ›na smyslu otáÄení kruh. voliÄeOtoÄené indikátoryInformace o zneplatnÄ›ných certifikátechOvladaÄ pro Ricoh / Philips od Lutz Müller , Martin Fischer , založeno na ovladaÄi od Boba Paauwese Ricoh Caplio G3. Marcus Meissner Prozkoumáno s využítím USB Snoopy, analýzy souboru s aktualizací firmware a kvalifikovaného odhadu. VpravoÚhel natoÄeníOznaÄovat k otoÄeníNatoÄení scényIdentifikátor paměťové karty SD: %s Paměťová karta SD: %d MB kapacity celkem, z toho %d MB volných. operaÄní paměťDatové úložiÅ¡tÄ›: Souborů: %d Snímků: %4d Videonahrávek: %4d Využitá kapacita: %8d Volná kapacita: %8d OperaÄní paměťOvladaÄ pro USB fotorámeÄky obsahující Äip ST2205 Hans de Goede OvladaÄ v umí z takových zařízení stahovat snímky, odesílat je do nich a mazat je vnich.Displeje fotorámeÄků, obsahujících Äip ST2205 mívají různá rozliÅ¡ení. OvladaÄ v gPhoto umí z takových zařízení stahovat snímky, odesílat je do nich a mazat je v nich.STV0674 Vincent Sanders OvladaÄ pro zařízení obsahující Äip STV0674. KomunikaÄní protokol byl prozkoumán s použitím SnoopyPro. STV0680 Adam Harrison OvladaÄ pro přístroje s Äipem STV0680. Protokol byl prozkoumán s použitím CommLite Beta 5. Carsten Weinholz Rozšířeno pro Aiptek PenCam a další USB přístroje STM s duálním režimem.Seznam audiostop SamsungSytost barevScénaScénický Å™ežimOddílZabezpeÄený ÄasZvolená barvaSamospoušťSamospoušťSamospoušť (pouze pro příští snímek)Prodleva samospouÅ¡tÄ›PoÄet snímků pÅ™i použití samospouÅ¡tÄ›Prodleva samospouÅ¡tÄ›Samotestování zařízeníSamospoušťProdleva samospouÅ¡tÄ›Odeslat odezvu na pÅ™iblíženíOdeslat registraÄní požadavekOdeslat licenÄní žádost WMDRM-NDOdeslat požadavek aplikace WMDRM-PDOdeslat příkaz WMDRM-PDOdeslat žádost WMDRM-PDOdeslat výzvu dotazu poÄítadlaOdeslat objektOdeslat informace o objektuOdeslat seznam vlastností objektuProbíhá odesílání dat…CitlivostIdentifikátor snímaÄe: %d.%d Sépiový nádechdávka po 9Sériové ÄísloSériové Äíslo: %s Informace o iniciátoru relaceNastavení platná pouze pro tuto relaciNastavit souÄasnou pozici na Äasové oseNastavování vlastnosti není podporovánoNastavení Äasu na přístrojiNastavit hodnotu vlastnosti zařízeníNastavit odpovÄ›Ä na licenciNastavit seznam vlastností objektuNastavit hodnotu vlastnosti objektuNastavit ochranu objektuNastavit reference objektuVe stínuStínJemné doladÄ›ní vyvážení bílé pro svÄ›tlo v polostínuMá přístroj pÅ™i pořízení snímku vydat zvukové upozornÄ›ní?OstréDoostÅ™eníOstÅ™ejšíOstrostZásobník snímkůZásobník snímků AZásobník snímků BZásobník snímků CZásobník snímků DRežim foceníProdleva mezi snímky v dávceRežim poÅ™izování snímkůRežim snímání zmÄ›nÄ›nNastavení snímáníVypínáníPoÄet probÄ›hlých cyklů závÄ›rkyExpoziÄní ÄasExp. Äas (ve vteÅ™inách)ExpoziÄní Äas v mikrosekundách (0 = nastavit automaticky)ExpoziÄní Äas „2“Expozice po dobu stisku spouÅ¡tÄ›Exp. Äas v mikrosekundách (0 = automat. nastavení)ExpoziÄní Äas zmÄ›nÄ›nZávÄ›rka / zap. automat. zaostÅ™eníOvladaÄ pro zařízení SiPix Web2 Marcus Meissner ObrysJednotlivéJediná oblastJednotlivé snímkyJednotlivý snímekJednotlivÄ› tiÅ¡eJednotlivé snímkyJednoráz. automat. zaostÅ™ení pÅ™i namáÄknutí spouÅ¡tÄ›Automat. zaostÅ™ení na jedinou oblastJednoráz. automat. zaostÅ™ení pÅ™i namáÄknutí spouÅ¡tÄ›OvladaÄ pro přístroj Sipix StyleCam Blink Vincent Sanders Marcus Meissner . Priority velikostiRežimy velikosti a kvalityVelikost vstupních dat do přístrojeVelikost výstupních dat z přístrojePÅ™ejít na další položku v seznamu audiostopDenní svÄ›tloProdleva střídání snímkůRežim uložení pro slot 2PomaléNastavení dlouhého expoziÄního ÄasuPomalá synchronizaceDlouhý exp. ÄasPomalá synchronizacePomalá synchronizaceSmal Ultrapocket Lee Benfiel OvladaÄ pro přístroje Smal Ultrapocket a jejich OEM verze (slimshot).MaléJPEG – nízké rozl., ménÄ› ztrát. kompr.JPEG – nízké rozl., více ztrát. kompr.Menší JPEGHladkéSníhMÄ›kkéMÄ›kÄíVerze firmware: %s NÄ›kolik poznámek ohlednÄ› přístrojů Epson: - NÄ›které z parametrů není možné ovládat z poÄítaÄe: * PÅ™iblížení * ZaostÅ™ování * Uživatelské nastavení vyvážení bílé - Způsob nastavování byl prozkoumán s přístrojem PhotoPC 3000z. Pokud se váš přístroj chová odliÅ¡nÄ›, prosím podejte o tom zprávu na %s (v angliÄtinÄ›). NÄ›kolik poznámek k přístrojům Epson: - NÄ›které z parametrů se nedají ovládat z poÄítaÄe: * pÅ™iblížení * ostÅ™ení * uživatelské nastavení vyvážení bílé - Nastavení byla prozkoumána na přístroji PhotoPC 3000z, pokud se váš přístroj chová jinak, zaÅ¡lete prosím zprávu do e-mailové konference vývojářů gphoto (v angliÄtinÄ›) NÄ›kolik poznámek k přístrojům Olympus (a možná i dalších): 1) Místo nezadaných hodnot nastavení budou použity ty výchozí (automatika). 2) Typ C-3040Z (a pravdÄ›podobnÄ› též C-2040Z a další) je pro ovládání z poÄítaÄe pÅ™es USB tÅ™eba nejprve pÅ™epnout do přísluÅ¡ného režimu. Postup je následující: - zapnout přístroj - otevřít krytku slotu pro paměťovou kartu - podržet souÄasnÄ› tlaÄítka „nabídka“ a „displej“, dokud se na displeji přístroje neobjeví nabídka pro zapnutí přísluÅ¡ného režimu. 3) Pokud bÄ›hem ovládání z poÄítaÄe pÅ™epnete displej do režimu „monitor“ Äi „normální“, nezapomeňte jej pÅ™ed odpojením od poÄítaÄe pÅ™epnout zpÄ›t do režimu „vypnuto“. Pokud tak neuÄiníte, přístroj pak nebude reagovat na stisk žádného z tlaÄítek na nÄ›m. Pro nápravu staÄí pÅ™ipojit jej zpÄ›t k poÄítaÄi a provést zmínÄ›né vypnutí displeje.NÄ›kolik poznámek k přístrojům Olympus: 1) Místo nezadaných hodnot nastavení budou použity ty výchozí (automatika). 2) Typ C-3040Z (a pravdÄ›podobnÄ› též C-2040Z a další) je pro ovládání z poÄítaÄe pÅ™es USB tÅ™eba nejprve pÅ™epnout do přísluÅ¡ného režimu. Postup pro toto je následující: - zapnout přístroj - otevřít krytku slotu pro paměťovou kartu - podržet souÄasnÄ› tlaÄítka „nabídka“ a „displej“, dokud se na displeji přístroje neobjeví nabídka pro zapnutí přísluÅ¡ného režimu. 3) Pokud bÄ›hem ovládání z poÄítaÄe pÅ™epnete displej do režimu „monitor“ Äi „normální“, nezapomeňte jej pÅ™ed odpojením od poÄítaÄe pÅ™epnout zpÄ›t do režimu „vypnuto“. Pokud tak neuÄiníte, přístroj pak nebude reagovat na stisk žádného z tlaÄítek na nÄ›m. Pro nápravu staÄí pÅ™ipojit jej zpÄ›t k poÄítaÄi a provést zmínÄ›né vypnutí displeje.OvladaÄ pro přístroje Sonix Theodore Kilgore Přístroj Sonix. Nyní obsahuje %i snímek. Přístroj Sonix. Nyní obsahuje %i snímky. Přístroj Sonix. Nyní obsahuje %i snímků. OvladaÄ pro přístroj Sony DSC-F1 M. Adam Kendall Vychází z rozhraní pro příkazovou řádku chotplay od Ken-ichi Hayashi Pro Gphoto2 upravil Bart van Leeuwen OvladaÄ v gPhoto pro přístroj Sony DSC-F55/505 Podporuje paměťové karty Sony MSAC-SR1 a Memory Stick z DCR-PC100 PůvodnÄ› vytvoÅ™il Mark Davies pro gPhoto2 upravil Raymond Penners Inicializace tohoto přístroje nefunguje. Prosím ohlaste to (v angliÄtinÄ›) vývojářům (gPhoto2).Vlastnost „%s“ / 0x%04x lze nyní pouze Äíst.Spoušť tohoto přístroje Canon nelze ovládat z poÄítaÄe.Spoušť tohoto přístroje Canon nelze ovládat z poÄítaÄeU tohoto typu přístroje Canon není režim hledáÄku k dispoziciTento typ přístroje Canon neumožňuje dálkovÄ› řízené snímání Tento přístroj Nikon neposkytuje snímky JPEG v režimu živého náhledu.U tohoto typu přístroje Nikon není režim živého náhledu k dispoziciSpoušť tohoto přístroje Nikon nelze ovládat z poÄítaÄeSpoušť tohoto přístroje nelze ovládat z poÄítaÄe.ZvukOvladaÄ pro Soundvision Vince Weaver Zbývající místo (dle kvality): vysoká: %d, stÅ™ední: %d, nízká: %d Å panÄ›lÅ¡tina (Español)Rychlost %i není podporována!Do tohoto přístroje není možné nahrávat rychlostí vyšší než 57600 b/s.SportyBodBodové měřeníBod. měření provázané s oblastí pro automat. zaostÅ™eníBodové měřeníBodové měření propojené s oblastí automatického zaostÅ™ováníAutomat. zaostÅ™ení na jediný bodStandardníBěžné parametry pro vývojářeSpouÅ¡tÄ›níSpouÅ¡tÄ›ní a vypínáníNavazování spojení s přístrojem se nezdaÅ™ilo v kroku 2! (pÅ™ijato %i bajtů, oÄekáváno %i). Přístroj není pÅ™ipraven.Navazování spojení s přístrojem se nezdaÅ™ilo v kroku 2: („%s“ pÅ™i Ätení z %i). Přístroj není pÅ™ipraven.Navazování spojení s přístrojem se nezdaÅ™ilo v kroku 3! (pÅ™ijato %i, oÄekáváno %i). Přístroj není pÅ™ipraven.Navazování spojení s přístrojem se nezdaÅ™ilo v kroku 3: „%s“ pÅ™i Ätení %i. Přístroj není pÅ™ipravenNavazování spojení s přístrojem se nezdaÅ™ilo v kroku 3: „%s“ pÅ™i zápisu %i. Přístroj není pÅ™ipravenNavazování spojení s přístrojem se nezdaÅ™ilo v kroku 4: (pÅ™ijato %i, oÄekáváno %i). Přístroj není pÅ™ipraven.Krok Äíslo 4 se nezdaÅ™il: „%s“ pÅ™i naÄítání %i. Přístroj není pÅ™ipravenRežim poÅ™izování statických snímkůChyba stroboskopu.Automat. zaostÅ™ení na pohybující se objektSouhrné informace pro zařízení Mustek MDC800: Západ SlunceSupermakroSuperjemnéPodporované vlastnosti protokolu pro pÅ™enos médií (MTP): Podporovaná velikost náhledového obrázkuProbíhá vypínání přístrojeProtÄ›jÅ¡ek pro synchronizaciSynchronizovat datum a Äas na přístroji s poÄí­taÄemSynchronizovat datum a Äas ve fotorámeÄku s poÄítaÄemSystémová chyba.displej přístrojedisplej přístroje i monitor poÄítaÄTIFF (RGB)Měření skrze ÄoÄky objektivuExp. Äas ruÄnÄ›, zaclonÄ›ní automat.Nastavení uzamykání expoziÄního ÄasuFormát výstupu na televizorUkonÄit zahájení snímáníProbíhá testování různých rychlostí…Režim procházení „Fotoaparát“ slouží pro indexování snímků uložených na poÄítaÄi.Přístroj JD11 s tímto ovladaÄem funguje dosti dobÅ™e. Pro pÅ™enos snímků je tÅ™eba rozhraní RS232 (sériové) s rychlostí 115kbit. OvladaÄ umožňuje získávat - náhledy (64×48 pixelů ve formátu PGM) - snímky (640×480 pixelů ve formátu PPM) Přístroj Kodak DC120 používá pro ukládání snímků formát KDC. Pro další práci se snímky staženými z přístroje budete potÅ™ebovat pÅ™evodní program „kdc2tiff“ (http://kdc2tiff.sourceforge.net).OvladaÄ přístroje Samsung digimax 800k pro gphoto, vytvoÅ™il James McKenzie .Pro gphoto2 upravil Lutz Müller . Další úpravy a vylepÅ¡ení provedl Marcus Meissner .Úroveň nabití akumulátoru je příliÅ¡ nízká (%d%%). Operace proto byla zruÅ¡ena.S přístrojem se nebylo možné spojit. Prosím zkontrolujte, zda je propojen s poÄítaÄem a zapnutý.Přístroj povel nepÅ™ijal.Přístroj odmítá soubor pojmenovaný „%s“.Přístroj neumí komunikovat rychlostí %i.Tento přístroj právÄ› ohlásil chybu, která doposud nebyla známa. Prosím ohlaste to na %s s podrobnostmi, jak k tomu doÅ¡lo (0x%x, 0x%x). VÅ™elé díky!Přístroj zaslal více bajtů, než bylo oÄekáváno (%i)Přístroj poslal pouze %i bajtů, ale potÅ™eba je pÅ™inejmenším %i.Soubor, který má být nahrán, neobsahuje žádná data (nulová velikost).Délka názvu souboru nesmí pÅ™ekroÄit 12 znaků („%s“ jich obsahuje %i).Tento souborový systém neumožňuje nahrávat soubory.Tento souborový systém neposkytuje informace o souborechSouborový systém neposkytuje seznam přítomných souborůTento souborový systém o sobÄ› neposkytuje žádné informaceTento souborový systém neumožňuje nastavovat informace o souboruPrvní obdržený bajt (0x%x) není platný.(souborová) cesta „%s“ není úplná (absolutní).Požadovaný typ portu (%i) není tímto ovladaÄem podporován.Složku „%s/%s“ nelze smazat, neb není prázdná (vymažte z ní soubory).Složku „%s/%s“ nelze smazat, neb není prázdná (vymažte z ní podsložky).Je možné nastavit dvoje rozliÅ¡ení, 352×288 a 176×144. Obrazová data jsou komprimovaná (JPEG) a proto není možné pÅ™edem odhadnout jak bude snímek velký. Údaj o poÄtu snímků, které se vejdou do pamÄ›ti pÅ™istroje, je tedy jen pÅ™ibližný. V gPhoto2 fungují vÅ¡echny volby krom tÄ›ch, které zařízení neumí: Mazání jednotlivých Äi vybraných snímků (gphoto2 -d) Pořízení snímku (gphoto2 --capture Äi --capture-image) Pořízení snímku je ale možné v režimu webové kamery, podporované v modulu jádra spca50x. Ovládání z grafického uživatelského rozhraní (gtkam) bylo vyzkouÅ¡eno a funguje. NicménÄ›, přístroj nepoÅ™izuje zvlášť snímky a zvlášť jejich náhledy. Ale protože snímky samotné mají velmi nízké rozliÅ¡ení a tím malou velikost, ovladaÄ je používá rovnou i jako náhledy.Přístroj umí poÅ™izovat i nÄ›kolik po sobÄ› jdoucích snímků (režim videoklip). Z nich je pak možné vytvoÅ™it animaci tÅ™eba pomocí funkce animovat (animate) programu ImageMagick.Více informací o funkcích přístroje je uvedeno v souboru libgphoto2/camlibs/clicksmart310/README.clicksmart310. V souÄasnosti v přístroji již probíhá operace. Protože umí zpracovávat jen jeden povel naráz, vyÄkejte prosím, než bude tato operace dokonÄena.Zbývá jeÅ¡tÄ› prostor pro dalších: %d mírnÄ›, %d stÅ™ednÄ› nebo %d vysoce komprimovaných obrázků Tento přístroj neumí poÅ™izovat náhledy.Tento přístroj neumí poÅ™izovat snímky (pÅ™i ovládání z poÄítaÄe).Tento přístroj neumí spouÅ¡tÄ›né pořízení snímku.Tento přístroj obsahje Äip JL2005%c. PoÄet uložených snímků je %i. VaÅ¡e USB zařízení je postaveno na Äipu Jeilin JL2005A Chipsatz. Aktuální poÄet obrázků na nÄ›m je %i. Pro tento přístroj není k dispozici popis podrobností o jeho používání z poÄítaÄe.Tento přístroj neposkytuje poÄítaÄi přístup ke svým nastavením.K ovladaÄi pro tento přístroj nejsou k dispozici žádné informace.Nastavení tohoto přístroje nelze mÄ›nit z poÄítaÄe.Pro tento přístroj nejsou k dispozici souhrnné informace.Tento ovladaÄ je urÄen pro přístroje s Äipem Jeilin jl2005B/C/D. Tyto přístroje neumožňují mazání snímků ani nahrávání dat. Videozáznamy jsou stahovány jako posloupnost snímků. Více podrobností je uvedeno v souboru libgphoto2/camlibs/jl2005c/README.jl2005c Tento ovladaÄ je urÄen pro přístroje s Äipem Jeilin jl2005a. Tyto přístroje neumožňují mazání snímků ani nahrávání dat. NaÄítání komprimovaných snímků může a nemusí fungovat – dle konkrétního přístroje. Videozáznamy jsou stahovány jako posloupnost snímků. Více podrobností je uvedeno v souboru libgphoto2/camlibs/jl2005c/README.jl2005a Tento ovladaÄ je urÄen pro přístroje s Äipem Mars MR97310 Chip (a odvozené – Pixart PAC0x7 ?). Tyto přístroje neumožňují mazání snímků ani nahrávání dat. NaÄítání komprimovaných snímků může a nemusí fungovat – dle konkrétního přístroje. Videozáznamy jsou stahovány jako posloupnost snímků. Více podrobností je uvedeno v souboru libgphoto2/camlibs/README. Sonix sn9c2025. Podporovány jsou následující operace: - stahování náhledů pro ovládání z grafického uživatelského rozhraní - stahování snímků ve formátu PPM - mazání vÅ¡ech snímků naráz - mazání posledního snímku (ne vÅ¡echny přístroje to umožňují) - uložení pořízeného snímku na datové úložiÅ¡tÄ› přístroje Videozáznamy jsou staženy jako posloupnost snímku Äi ve formátu AVI – dle konkrétního typu. Náhledy videozáznamů v AVI jsou statickými snímky prvního políÄka videozáznamu. Snímky není možné mazat jednotlivÄ› – s vyjímkou posledního uloženého. Toto je ovladaÄ pro přístroje Canon Å™ad PowerShot, Digital IXUS, IXY Digital a EOS provozovaných v běžném režimu. Funguje též s nÄ›kolika málo kamerami od tohoto výrobce, které umí i fotit. Komunikace s přístrojem je možné pÅ™es sériové Äi USB rozhraní, pÅ™es IEEE 1394 (Firewire) prozatím nikoli. Podporováno je více než 70 typů přístrojů – od starých PowerShot A5 a Pro70 z roku 1998 po nové PowerShot A510 a EOS 350D z roku 2005. Nebylo vyzkouÅ¡eno s EOS 1D Äi EOS 1Ds. Přístroj A50 paradoxnÄ› komunikuje svižnÄ›ji na rychlosti 57600 b/s než na 115200. Pokud se setkáte s výskytem velkého množství chyb pÅ™i pÅ™enosu po sériovém rozhraní, zkuste svůj poÄítaÄ pÅ™i ovládání přístroje ponechat co nejménÄ› zatížený (Ätení/zápis na datové úložiÅ¡tÄ›, atp.) Tato knihovna byla testována na přístroji Kodak DC 215 Zoom. Mohla by též fungovat s přístroji DC 200 a DC 210. Pokud takový přístroj máte k dispozici, zaÅ¡lete prosím zprávu na , zda jste narazili na nÄ›jaké problémy s tímto ovladaÄem Äi zda vÅ¡e funguje jak má.Tento náhled neexistuje.Náhled snímkuVýška náhledu v pixelech: %d RozliÅ¡ení náhledu: %d Šířka náhledu v pixelech: %d Formát zápisu ÄasuÄŒas: %a, %d. %b %Y %T ÄŒasosbÄ›rné snímáníProdleva mezi ÄasosbÄ›rnými snímkyPoÄet ÄasosbÄ›rných snímkůI po dvou pokusech vyprÅ¡el Äasový limit. Kontaktujte prosím %s (v angliÄtinÄ›).SamospoušťČasované pořízení jedn. snímkuSamospoušť + dálkovéSamospoušť 10 vteÅ™inSamospoušť 2 vteÅ™inyDrobný JPEGKompenzace barevného nádechuPříliÅ¡ svÄ›tléPříliÅ¡ tmavéSelhalo příliÅ¡ mnoho pokusů.NahoÅ™eTopfield TF5000PVR Marcus Meissner OvladaÄ pro stahování a nahrávání souborů pro videorekordér Topfield. Z puppy © pÅ™edÄ›lal Peter Urbanec Toshiba David Hogue OvladaÄ pro Toshiba pdr-m11. CelkovÄ› vysláno záblesků: %d CelkovÄ› pořízeno obrázků: %d; odpáleno záblesků: %d CelkovÄ› pořízeno snímků: %d PÅ™enos paketů se nezdaÅ™il ani po %i pokusech. Kontaktujte prosím %s (v angliÄtinÄ›).I na druhý pokus vyprÅ¡el Äasový limit. UpouÅ¡tí se od dalších pokusů…Probíhá pokus o spojení s přístrojem…Nastavení barevné teplotyPÅ™ednastavené 0PÅ™ednastavené 1PÅ™ednastavené 2PÅ™ednastavené 3PÅ™ednastavené 4ŽárovkaJemné doladÄ›ní vyvážení bílé pro žárovkové osvÄ›tleníTurbo režimexp. Äas ruÄnÄ›, zaclonÄ›ní automat.Typ prezentaceJazyk uživatelského rozhraníUzamÄení uživatelského rozhraníTyp zámku uživatelského rozhraníUNIXový ÄasUSB 1.1USB 2.0Rychlost USB rozhraníNedefinovánoNeurÄený zvukový záznamNeurÄená kalendářová položkaNeurÄená sbírkaNeurÄený kontaktNeurÄený dokumentNeurÄená zprávaNedefinovaná vlastnost PTPNeurÄený videozáznamNeurÄený spustitelný soubor pro Microsoft Windowsnad > MTRPod vodouNeznáméNeznámé %dNeznámá chyba ovladaÄe pro přístrojNeznámá chybaNeznámá chyba.Neznámý typ souboru %i.Neznámý režim blesku %d,Neznámý typ přístrojeNeznámý typ „%s“Neznámá hodnotaNeznámá hodnota %04dNeznámá hodnota %04xNeznámá hodnota 0x%04xNeznámý režim pÅ™iblížení %d Neznámé (%04x)Neznámé: 0x%04x Nerozpoznaná odpovÄ›ÄNepoužitelná paměťová kartaNepodporovaný příkaz.Zadán nepodporovaný typ portu %i = 0x%x. Inicializace není možná.Nepodporovaný typ portu: %d. Tento ovladaÄ podporuje pouze USB zařízení. NepoužitoAktualizovat firmware zařízeníURL pro odesíláníNahrávání souborů do přístroje je možné pouze do složky „%s“Probíhá nahrávání souboru do přístroje…Probíhá odesílání snímku…Probíhá odesílání snímku: %s.Probíhá odesílání…Vyšší 1Vyšší 2Stahování obrázku bylo pÅ™eruÅ¡eno uživatelemUrÄené uživatelem 1UrÄené uživatelem 2UrÄené uživatelem 3Nadstavba pÅ™idaná výrobcemPopis rozšíření výrobce: %s Identifikátor rozšíření výrobce: 0x%x (%d.%d) Identifikátor výrobce: %02x%02x Verze: Verze: %s Zapnout svislé automat. zaostÅ™eníVideorežimVideovýstupVideovýstupZobr. pomocné kompoz. mřížky v hledáÄkuZobrazení kompoziÄní mřížky v hledáÄkuOmezení jevu vinÄ›taceZvýraznÄ›ní barevDoÄasná nastaveníHlasitostVíce snímků s odstupňovaným vyvážením bíléšifrování WEP – 128-bitÅ¡ifrování WEP – 64-bitNázev bezdrátové sítÄ› (ESSID)Kanál WiFiProfily pro sítÄ› WiFiSeznam audiostop (formát WPL)ÄŒeká se na dokonÄení…Čeká se…Zobrazení varováníVarování úrovnÄ› 0Varování úrovnÄ› 1Stav varováníVarování canon_usb_set_file_attributes: volání canon_usb_dialogue z přístroje vrátilo stav 0x%08xOÄekáváno 0x%x, namísto toho obdrženo 0x%x. Kontaktujte prosím %s (v angliÄtinÄ›).SlabéVyvážení bíléJemná úprava vyvážení bílé – pÅ™ednastavená hodnota 0Jemná úprava vyvážení bílé – pÅ™ednastavená hodnota 1Jemná úprava vyvážení bílé – pÅ™ednastavená hodnota 2Jemná úprava vyvážení bílé – pÅ™ednastavená hodnota 3Jemná úprava vyvážení bílé – pÅ™ednastavená hodnota 4Jemná úprava vyvážení bílé – pÅ™ednastavená hodnota Ä:Režim pořízení více snímků s různým vyvážením bíléVelikost rozdílu ve vyvážení bílé mezi jednotlivými snímky dávkyBarevná teplota vyvážení bíléNázev pÅ™ednastaveného vyvážení bílé 0Název pÅ™ednastaveného vyvážení bílé 1Název pÅ™ednastaveného vyvážení bílé 2Název pÅ™ednastaveného vyvážení bílé 3Název pÅ™ednastaveného vyvážení bílé 4Číslo pÅ™ednastaveného vyvážení bíléHodnota pÅ™ednastaveného vyvážení bílé 0Hodnota pÅ™ednastaveného vyvážení bílé 1Hodnota pÅ™ednastaveného vyvážení bílé 2Hodnota pÅ™ednastaveného vyvážení bílé 3Hodnota pÅ™ednastaveného vyvážení bílé 4SvÄ›tlé pozadíVyvážení bíléSvÄ›tlé pozadíVyvážení bíléVyvážení bíléVyvážení bílé – pÅ™izpůsobení AVyvážení bílé – pÅ™izpůsobení BVyvážení bílé X AVyvážení bílé X BChyba resetu vyvážení bíléŠirokoúhléAutomat. zaostÅ™ení pro Å¡irokoúhlé zábÄ›ryObrazový formát Microsoft WindowsZapsatChránÄ›no proti zápisuChybná řídící sekvence: oÄekáváno 0x%02x, obdrženo 0x%02x.Dokument ve formátu XMLRRRR/MM/DDRok/MÄ›síc/DenAnoMá být vymazáno „%s“ ze složky „%s“, ale tento souborový systém mazání souborů neumožňuje.Nejdříve je tÅ™eba nastavit port, až poté je možné zahájit komunikaci s přístrojem.Pro pořízování snímků musí být přístroj pÅ™epnutý do přísluÅ¡ného režimu.Je tÅ™eba zadat složku s názvem v podobÄ› /store_xxxxxxxx/.Váš Logitech Clicksmart 310 má ve svém datovém úložiÅ¡ti %i obrázek. Váš Logitech Clicksmart 310 má ve svém datovém úložiÅ¡ti %i obrázky. Váš Logitech Clicksmart 310 má ve svém datovém úložiÅ¡ti %i obrázků. Váš USB přístroj je založen na Äipu S&Q. Celkové množství pořízených snímků je %i. NÄ›které z nich mohou být krátkými videonahrávkami o nÄ›kolika snímcích Tento přístroj pro rozhraní USB obsahuje Äip Aox. PoÄet snímků s nízkým rozliÅ¡ením = %i PoÄet snímků s vysokým rozliÅ¡ením = %i Celkový poÄet snímků = %i VaÅ¡e USB zařízení je Kodak EZ200. PoÄet obrázků = %i Přístroj, pÅ™ipojený pÅ™es USB, je iClick 5X. Celkový poÄet pořízených snímků je %i Zdá se, že přístroj je LG GSM. Firmware: %s Verze firmware: %s Tento fotorámeÄek s USB obsahuje Äip AX203 Tento fotorámeÄek obsahuje Äip ST2205. Tento přístroj umožňuje smazat vždy pouze poslední z uložených snímků. Což je momentálnÄ› soubor „%s“.Zónové zaostÅ™ování (blízko)Zónové zaostÅ™ování (detail)Zónové zaostÅ™ování (daleké)Zónové zaostÅ™ování (stÅ™ední)Zónové zaostÅ™ování (vyhrazeno 1)Zónové zaostÅ™ování (vyhrazeno 2)Zónové zaostÅ™ování (vyhrazeno 3)Zónové zaostÅ™ování (vyhrazeno 4)Zónové zaostÅ™ování (velmi blízko)PÅ™iblíženíPÅ™iblížení­ (v milimetrech)Míra pÅ™iblížení byla zmÄ›nÄ›naPÅ™iblížení: 29 mm PÅ™iblížení: 34 mm PÅ™iblížení: 41 mm PÅ™iblížení: 51 mm PÅ™iblížení: 58 mm PÅ™iblížení: makro síť. napájecí zdrojagfa_cl20 OvladaÄ pro přístroj Agfa CL20 je kolektivní prací jeho tvůrců. NapiÅ¡te nám na cl20@poeml.de (v angliÄtinÄ› Äi nÄ›mÄinÄ›) NavÅ¡tivte nás na http://cl20.poeml.deautomatickéOdpálen dle potÅ™eby + omezení jevu Äervených oÄíakumulátorÄerná a bílápo dobu stisku spouÅ¡tÄ›Přístroj byl neaktivní po více než 9 vteÅ™in – zahajuje se opÄ›tovná inicializace canon_int_capture_image: závÄ›reÄné volání canon_usb_list_all_dirs() selhalo se stavem %icanon_int_capture_image: úvodní volání canon_usb_list_all_dirs() selhalo se stavem %licanon_int_list_directory: Chyba: úvodní zpráva je příliÅ¡ krátká (%i < nezbytné minimum %i)canon_int_list_directory: PÅ™i zkoumání první položky složky neoÄekávanÄ› dosaženo konce paketu.canon_int_list_directory: ve složce byla zjiÅ¡tÄ›na oříznutá položkacanon_serial_get_dirents: NezdaÅ™ilo se vyhradit %i bajtů pamÄ›ticanon_serial_get_dirents: NezdaÅ™ila se zmÄ›na velikosti vyrovnávací paměťi položek složky na %i bajtůcanon_serial_get_dirents: NepodaÅ™ilo se naÄíst následující položku ve složcecanon_serial_get_dirents: úvodní paket s informacemi o položkách složky je příliÅ¡ krátký (pouhých %i bajtů)canon_serial_get_dirents: PříliÅ¡ mnoho položek ve složce – nejspíš doÅ¡lo k zacyklení.canon_serial_get_dirents: obrženy oříznuté položky složkycanon_serial_get_dirents: canon_serial_dialogue – nezdaÅ™ilo se naÄíst položky ve složcecanon_usb_get_body_id: obdržena neoÄekávané množství dat (%i bajtů, oÄekáváno %i)canon_usb_get_dirents: Data se nevejdou do vyrovnávací pamÄ›ti – „%.96s“ (zkráceno) je příliÅ¡ dlouhé.canon_usb_get_dirents: canon_usb_long_dialogue – nezdaÅ™ilo se získat položky ve složce, obdržen stav %icanon_usb_list_all_dirs: Data se nevejdou do vyrovnávací pamÄ›ti – „%.96s“ (zkráceno) je příliÅ¡ dlouhé.canon_usb_list_all_dirs: canon_usb_long_dialogue – nezdaÅ™ilo se získat položky ve složce, obdržen stav %icanon_usb_lock_keys: obdrženo neoÄekávané množství dat (%i bajtů, oÄekáváno %i)canon_usb_lock_keys: od této funkce obdrženo neoÄekávané množství dat (%i bajtů, oÄekáváno %i)canon_usb_set_file_attributes: volání canon_usb_dialogue se nezdaÅ™ilocanon_usb_unlock_keys: obdrženo neoÄekávané množství dat (%i bajtů, oÄekáváno %i)barevnéOvladaÄ pro coolshot vJméno vlastníka nelze zmÄ›nitNastavení Äasu nelze zmÄ›nitekonomickéz vnÄ›jÅ¡kuvýplňový zábleskjemnégPhoto2 Mustek VDC-3500/Relisys Dimera 3500 Tento software byl vytvoÅ™en s pomocí neveÅ™ejných informací náležejících spoleÄnosti StarDot Technologies. Tvůrce: Brian Beattie Podíleli se: Chuck Homic Konverze snímků RAW do RGB Dan Fandrich Informace o protokolu, formátu snímků RAW, zaÄlenÄ›ní do gphoto2 Knihovna pro gsmart300 Till Adam Jerome Lodewyck Podpora pro zařízení Mustek gSmart 300, odvozeno od nÄ›kolika dalších modulů (knihoven) v gphoto2 a dokumentace ochotnÄ› poskytnuté spoleÄností Mustek. vysoké (640×480)vysoká komprimace, hp215 Marcus Meissner OvladaÄ pro komunikaci s přístrojem HP Photosmart 215. Vzniklo zaÄlenÄ›ním samostatného programu hp215. OvladaÄ umožňuje stahovat snímky a náhledy a také je z přístroje mazat. OvladaÄ pro iClick 5X Theodore Kilgore Intenzita záblesku dle pomoc. pÅ™i vyklop. zrcátkuje ve vyplňovacím režimunekoneÄnoz vnitÅ™kuknihovna jamcam vOvladaÄ pro zařízení jl2005a Theodore Kilgore OvladaÄ pro přístroj jl2005bcd Theodore Kilgore Uzamykací klíÄe selhaly.bezztrátovénízké (320×240)mírná komprimace,mRAWmRAW + JPEG s vysokým rozliÅ¡. a ztrátovýmRAW + JPEG s vys. rozliÅ¡. a ztrátovÄ›jšímRAW + JPEG se stÅ™edním rozliÅ¡. a ztrátovýmRAW + JPEG se stÅ™ed. rozliÅ¡. a ztrátovÄ›jšímRAW + JPEG s nízkým rozliÅ¡. a ztrátovýsRAW + JPEG s nízkým rozliÅ¡. a ztrátovÄ›jšístÅ™ední komprimace, nabídkaNebylo obdrženo žádné hlášení o stavu.žádnéobyÄejnénedostupné: %svypnutozapnutoOdpálen vždy + omezení jevu Äervených oÄíprovoz na akumulátorpccam600_init: neoÄekávaná chyba: funkce gp_port_read vrátila %d namísto %dpccam600_close: byla vrácena hodnota %d namísto %dpccam600_get_file: získán index %d, ale oÄekáván index > %dpccam600_init: oÄekáváno %d bloků, obdrženo %dpccam600_init: OÄekáváno > %d bloků, obdrženo %dpÅ™ehrávánínapájení je v pořádkunapájení není v pořádkupouze pro ÄteníÄtení i zápisPÅ™ipravenozáznamRekurzivní volání nejsou s ovladaÄem sierra možná! Kontaktujte prosím %s (v angliÄtinÄ›).zmírnÄ›ní jevu Äervených oÄí vypnuto. zmírnÄ›ní jevu Äervených oÄí zapnuto. Omezení jevu Äervených oÄísRAWsRAW + JPEG s vysokým rozliÅ¡. a ztrátovýsRAW + JPEG s vys. rozliÅ¡. a ztrátovÄ›jšísRAW + JPEG se stÅ™edním rozliÅ¡. a ztrátovýsRAW + JPEG se stÅ™ed. rozliÅ¡. a ztrátovÄ›jšísRAW + JPEG s nízkým rozliÅ¡. a ztrátovýsRAW + JPEG s nízkým rozliÅ¡. a ztrátovÄ›jšísRGBsRGB (optimální pro přírodu)sRGB (optimální pro portréty)OvladaÄ pro Äipy sierra SPARClite Scott Fritzinger Podpora pro přístroje obsahující Äip Sierra od Olympus, Nikon, Epson, Pentax, a dalších. PodÄ›kování spoleÄnosti Data Engines (www.dataengines.com) za poskytnutí jejich přístroje Olympus C-3030Z pro úÄely implementace podpory USB.ovladaÄ spca50x vObecný ovladaÄ pro sq905 Theodore Kilgore Obecný ovladaÄ pro sq905C Theodore Kilgore standardnísuperjemnésx330z umí pouze rozhraní USBNastavení ÄasuNení možné odhadnout poÄáteÄní hodnotu kontrolního souÄtu. neurÄenéneoÄekávaný typ dat %ineznámé (0x%02x)neznámé rozliÅ¡ení %d, neznámé rozliÅ¡ení %d) vCalendar1vCalendar2vCard2vCard3varování: kontrolní souÄet nebyl ověřen (pÅ™id. délky %d, hodnota 0x%04x) ########################## libgphoto2-2.5.9/po/vi.gmo0000644000175000001440000063662012623156275012303 00000000000000Þ•  I/ ü‘¸Â¹ÂÑÂæÂ÷Â# Ã0ÃJÃ#cÇÜðÃÃÃÜÃhîÃWÄjÄÄœÄ4·ÄìÄÅÅ(ÅFAňŜŬŠ´Å¿ÅÆÅÏÅîÅôÅúÅ ýÅb Æ;mƩƸÆÔÆïÆÇÅÇOÚÇ *É 4É?ÉDÉIÉNÉSÉWÉ]ÉaÉgÉ iÉsÉxÉ~É„ÉÉ¡É¥ÉªÉ®É³É¸É¿ÉÆÉÎÉÕÉÛÉãÉêÉðÉõÉûÉÊ ÊÊÊÊ$Ê*Ê2Ê9ÊJÊPÊUÊZÊ`ÊhÊoʀʅʉʑʘʞʣʫʲʸʽÊÂÊÈÊÐÊ×ÊÜÊàÊèÊïÊõÊúÊË ËË Ë%Ë*Ë.Ë 5Ë@Ë FËQËUËXË `ËkË oËzËË‚Ë…Ë‡ËŒË ’ËœË Ë¦Ë«Ë °Ë»Ë ¿ËÉËÍËÑË×ËÚË ÝËèËíËóË öË Ì ÌÌÌ Ì&Ì)Ì,Ì.Ì 4Ì>ÌDÌGÌJÌSÌYÌ `Ì jÌtÌzÌ~Ì „ÌŽÌÌ£Ì¦Ì©Ì¯Ì ´Ì¾Ì ÄÌÎÌÑÌÔÌÚÌÞÌáÌãÌéÌ îÌøÌûÌþÌÍ ÍÍÍ'Í8Í GÍQÍTÍ ]ÍhÍ‚Í Í ¯ÍºÍ ÂÍ ÏÍÙÍèÍÎ ÎÎ'Î6Î >Î IÎTÎgÎ ÎÎ ¤Î²Î ÁÎ ÎÎÚÎ ìÎ ùÎ Ï Ï Ï(Ï0Ï 6Ï CÏPÏUÏZÏmÏsÏxÏ‹ÏÏ•ÏžÏ§Ï ½ÏÊÏÏÏÒÏâÏéÏ™ñÏ­‹Ð9Ñ?ÑCÒXÒpÒŽÒ¥ÒÃÒÔÒëÒýÒÓ%Ó6ÓNÓhÓ}Ó •Ó¡Ó¼ÓÃÓÔÓæÓûÓ'Ô*Ô3Ô LÔWÔ.jÔ-™Ô ÇÔ ÓÔßÔðÔ9ùÔ3Õ<ÕMÕ_ÕpÕÕ”Õ§Õ ®Õ ºÕÇÕÚÕîÕ ÖÖ#Ö(Ö CÖQÖ hÖuÖÖ©ÖÂÖÊÖÚÖìÖ$õÖ×3×G×e× ‚× ×ž× ­×»×Ë×Ú×óרØ-ØBØWØlØ}Ø•Ø¤Ø µØ ¿ØÊØߨïØÿØÙ(6Ù_ÙoÙ ŠÙ˜Ù›Ù ¢Ù®Ù ¶ÙÃÙÓÙæÙîÙÚÚÚ Ú$Ú5Ú EÚ RÚ]Ú/eÚ+•Ú1ÁÚ'óÚ(ÛDÛaÛ ÛÜ Ü²ÜºÜ ÌÜoÚÜJÝ \Ý hÝ uÝ‚Ý*¡Ý#ÌÝðÝ öÝÞ ÞÞ"Þ+Þ3ÞEÞJÞ iÞ wÞ …Þ‘Þ ¡Þ ­Þ¹Þ¿ÞÇÞÌÞ ÓÞ àÞ îÞ úÞßß3ßJßaßxߊߦ߽ßÔßëßàà*à;àLàTà \à gà sàà “à Ÿà«à°à ÃàÍàÓà âàïàôà áá#á (á"4áWá[ádákázá‰ážá³áOÂáâ &â2â Qâ^âpâ âŒâ Ÿâ ­âºâÊâäâkã8pã#©ã8Íã9ä@äATä4–ä+Ëä(÷ä@ å aå‚å1žåÐåíå#æ&æCæ[æzæŽæ¡æ¸æÒæ'ææç'ç=>ç|ç ˜ç)¤ç$Îç>óç2è KèYènè€è4™è7Îè6éD=éE‚éÈéåéêê<êXêvê&ê¶êËêÚêÐòêÃë×ë÷ë!ì8ì @ìNì_ìrìì—ì²ìÐìÕìäìýìí $í1í(Jísí‡í£í¶íÒíîí îî&î6îNî ^îjî zî›î´îÌîåîìî ÿî ï%ï:ï Tï^ïpïyïˆïŽï—ï°ïËï Þïëïüï ðð'ð7ð?ðFð`ð fð qð |ðˆð —ð£ðµð ÌðÙðëð ñ ñ(ñ>ñTñ<jñ§ñÄñÖñ éñõñ ò"ò:ò Nò Yògò†ò›ò¹òÍòìò ó!ó7óLó^óró {ó …ó ó ›ó¥óÄóÓóéó:øó<3ôpôô¨ôÂô&Ýôõ õ<õZõyõ0˜õÉõåõ!ÿõ'!öIöhö>„öÃöÚö&öö/÷<M÷<Š÷Ç÷(á÷ ø&ø Bø*cø2Žø-Áø4ïø;$ù0`ù‘ù¦ùÅùáù5úù=0ú5nús¤úû5û&IûpûkyûEåû+üFü…cüUéü?ýFýZýsýŒý¥ý ½ýÈý Ìý Ùýçý þ þþ /þ=þ Qþÿ^þ^ÿgÿvÿÿ›ÿ¡ÿ¦ÿ×¶ÿŽ ¤²ÅÔíþ0I \h2w,ª.× #0 K YÓf :EGž²Òè ðü #L:µ‡H=ª†,1^ n € ” ­  Ö ê   * C R m  ‹ – ± Ï Ö  æ  ñ û    / A S d -t ¢ ¹ <Î  ( ? W q  ¬ ° ¶ ¾ Ç Ú ï  ÷  ,A ` j xƒ˜¨ÈÐÙßõ ( I']5… »ÆÚ í1ø:*4e-š ÈÕÞõ 2Mi‚˜³Çßñ+ DRasŠ› ± ¿Íã7KetŒ¨¼Ð æ ôÿ 5 V i v€ˆ™F©ðù   ,9,>kˆ˜ ¯¼ ÍÙèøU ^h_|Üï' 8CV [enN…Ôîÿ+39 ?Mj•²ÇÝó+DYo‚ž ¯ºÎå ù 7 AL ao~ ’¯ ÈÓæù  ( 1< KWl$~£´"Äçþ *6G`y ”  ®ÁÔçú ,E^y‘¨¾ Öãü&8J P[k {‡ – ¡¬» Ï Úçú #+%OuL…ÒÚfß¼F ‡$‹& ‘&ž&¾&Ó&â&ó& ' '*'1'F'Y' ^' i'u'‹'ž'°'À'Ù' á'î'( (!(@(X(r(!(²(Ò('ì()&):)M) c)n))‘)±)Ñ)ê)**-*G*`*p* * **½*Ö*æ*û*" +.+.C+ r+ }+‡+ +›+ª+»+ Ä+Ò+å+ô+ù+þ+,,),0,I, b,o,x,‰,œ,¹,ؾ,—-Q±-U.2Y.Œ.›.¢.².µ.Ñ.Õ.Þ.ð. // /&/+/ >/L/R/ p/~/ //²/Ç/ Ù/æ/ö/ 0 0 %030 C0P0_0s0 ‚00¡0¶0È0à0 ñ0ü0/ 1<1X1t1 …1 “11 ¤1±1Ã1Ê1Ó1å1÷1 2%2.C2)r3œ3°3Á3×3è3 414B4V4:j4*¥4Ð4Ø4ò45505"J5%m5“5®5É5æ56 "6.666¸6Ë6 Ð6Û6 ó6 ý6 777 47ÿB7 B8M9ÒÍ9^ :?ÿ:?;£T;gø;`<g<k<…< ¡<¯<Î<Ý<î< ÷<=; = I=S=4\=‘=—=§=¹=¾=Ñ=í=õ= > > )> 3>*=>h>> …> ‘>Ÿ>¯>Â>Ñ>ê> ??#?6?H?]?x?‡?¤?#µ?Ù? ß?ì?@#@?@ED@Š@£@ Á@Î@ å@AAAA)ASKSjS}SS–S¨S·SÌSâS#ýS!T>TFTZTkT‚T–TF®TõT U(U -U;UBU JUWUfUoU.…U´UÄU ÕUßU9èU"V8VOV+gV“V—VšV V¾VÂVGÉVYV(YY‚YY¶YÅYÛYäYM÷YEZTZ gZtZƒZ•Z©Z¹Z ÈZÔZÚZöZ[ [ +[9[ Y[z[ ‚[[ [¢[¦[ ©[¶[È[Û[ú[ \\:\ L\Z\r\Š\©\Ç\æ\]]0]G]b]{]”]œ]·]Ó]ï]^^.^C^^^'s^,›^È^å^ô^ _ _,_E_Y_ q_}_1ƒ` µ`¿`¬È`­uaå#bY dcd ld xd „d d9ždØdàd ñdþde&e :e GeTeiexeŽee¹e ÊeØeáeùe þeff*f:f LfZf jfuf~f „f f œf§f¹fËfÒfâfòfgg"g*g2g :g EgPgXgggxgŠg“g!­g Ïgðg h&h*?hjh„h—h ­hºhÊhÒháh÷h iii,ij HjCSj—jj¯jÍjßj3ûj*/kZkzk—k©k °k ¼kÈkÞkîkòk ll&lDl Vlclvl ˆl©l±l Ál Ël Õl ßl ìl ùlmm%m8m ImUmdm €m Žm˜m®mZÉm $n1n AnNnjn†n œn§n¹nÎnãnön‹o–’o)p/p >pLp[p$kppN–påpšëp®†qŽ5rüÄrÁs ÒsÝs ãsîs ös tt t )t4tStdt{t‹t œt §t µtÂtÒtætþtu!6uXunu„u Ÿu«u¼uÖu æuòuv v v#v6vMvivƒvœv³vÎvâvüvw*wDwZw pw zw „w Žw˜wžw¥w,¾wëw ñwüw x xx1xFx[x px~x x›x ±x¿xÈx Øxæx$y&y6y#Iy my{y ‘y^Ÿy þy z z z (z 5zCzYzizxzjˆz óz{{0{!P{r{{{{ {¥{ º{ Ä{ Ñ{ Û{zå{`|f|v|ˆ| |™|ž|£|ª|½|.Í}Âü~Á¿;„Q½„ …µ…ÌÒ…AŸ†:á†B‡;_‡?›‡7Û‡Nˆ7bˆ1šˆ3̈‰3‰/:‰j‰r‰H‰Ö‰ ݉ë‰ ð‰'þ‰&Š 9Š'GŠoŠwЀРжоŠZÓŠN.‹T}‹LÒ‹MŒAmŒ:¯ŒêŒ ýŒ +G N Z d!r”©¸Í(å'Ž 6ŽDŽHŽ QŽ\Ž`ŽcŽsŽ#„ލŽÄŽÛŽG÷ŽÙ?èì‘Lï‘b<’&Ÿ’,Æ’%ó’»“-Õ“9”)=”Mg”0µ”7æ”,•:K•7†•,¾•ë•3 –4>–=s–F±–Kø–JD—•›j%œ%œ¶œ$ÓœSøœRL&Ÿ7Æ:þ;9ž'už&žÄŸìT¡-A£ìo¥\¨u© ‘©›©±©Å© Ú© å©ñ© ªª%ª06ªgªmª…ª ”ª ¡ª­ª ¿ªʪӪ쪮ðªDŸ«ä«/ý«-¬JG¬9’¬̬ܬø¬ ­ ­ ,­ :­ H­V­_­ {­†­‰­›­ž­ ¡­­­ µ­ À­Ê­Ò­ Ú­ ä­ ï­ù­ ®!®6®H®[®m®„®”® ±® ½®È® Ю󨑨 ¯¯%¯;¯ S¯a¯ t¯‚¯•¯¨¯½¯ Ó¯á¯ò¯°°A-°Do°´°»° Ò°-ݰ ±±0± E±R±Z±b±y±ˆ±—±¦±!·±"Ù±ü± ² ²(² 7² B² L²V²f²~²š²«²±² ò в Þ² ê² õ² ³ ³ ³ %³2³ L³W³g³w³‡³e–³ü³6´9´ >´L´h´„´ ´¼´Ø´õ´µ .µOµkµ‡µ£µ¿µÛµ÷µ¶1¶N¶k¶ ˆ¶ ”¶ ¢¶ ®¶ º¶Ƕݶó¶··.· 3·@· U·c·i·3y· ­· ¹·Ä·Ó·l×·?D¸-„¸<²¸h︃X¹nܹ6KºJ‚ºHͺ+»,B»`o»лã»ù» ¼¼6¼N¼f¼~¼–¼›¼±¼ ļ Ѽ Þ¼ ë¼ ø¼ ½ ½r½‘½–½±½ ¹½ǽ-̽ú½N¾Q]¾K¯¾Lû¾PH¿?™¿?Ù¿DÀ@^ÀIŸÀ?éÀ<)ÁQfÁN¸ÁVÂV^ÂXµÂXÃGgÃa¯Ã8ÄIJĔĚĭÄÉÄÜÄ äÄïÄ÷Ä’üÄïÆÇŽÇÓ¡Ç7uÈ­È ²È¿È ÈÈÓÈ=äÈ?"ÉbÉtÉ }É‹ÉɢɹÉÒÉêÉÊÊ4ÊIÊNÊbÊgÊnÊ€Ê„Ê‡Ê  ÊG«Ê1óÊ6%Ë(\Ë*…Ë°ËµË ¾Ë ÈË ÒËÜËâËJéË4ÌHÌ[ÌoÌt̤̼̋ÌÖÌíÌÍ ÍÍ)Í-Î;?Î<{θΠÁÎËÎÞÎ"çÎ ÏÏ+Ï<ÏUÏ mÏ xσϊÏN‘Ï?àÏ Ò=ÒUÒ#mÒ%‘Ò·ÒÓÒ&éÒÓ(Ó?ÓWÓqÓ™ˆÓ"Ô:Ô(VÔ&ÔN¦ÔõÔÕ"Õ3ÕZSÕ®ÕÈÕÜÕ äÕñÕøÕÖÖ#Ö)Ö,Öw<Ö6´ÖëÖ&ýÖ$×B×S×d×¶jØ!Ú 1Ú=ÚBÚGÚLÚQÚUÚ[Ú_ÚeÚ gÚrÚwÚ}Ú…Ú"Ú°Ú´ÚºÚ¾ÚÄÚÊÚÒÚÚÚãÚëÚòÚûÚÛ ÛÛÛÛ'Û+Û3Û<ÛDÛKÛTÛ\ÛuÛ|Û‚Û‡ÛŽÛ—ÛŸÛ¸Û¾ÛÂÛËÛÓÛÚÛàÛéÛñÛøÛþÛÜ ÜÜÜ!Ü%Ü.Ü6Ü=ÜCÜJÜSÜ\ÜbÜkÜpÜuÜ |ÜˆÜ ŽÜšÜŸÜ¢Ü«Ü´Ü¹ÜÂÜÇÜËÜÎÜÐÜÕÜÛÜãÜçÜíÜóÜùÜÝ ÝÝÝÝ Ý$Ý(Ý<ÝAÝGÝJÝSÝ\ÝaÝgÝ kÝxÝ|݂݈݀ÝݖݚݞݧݭݵݽÝÅÝËÝÏÝ ÕÝßÝîÝôÝøÝüÝÞÞÞ Þ Þ$Þ(Þ.Þ2Þ6Þ8Þ>ÞCÞKÞOÞSÞYÞbÞfÞlÞ}ÞŽÞ Þ«ÞºÞ1ÉÞ3ûÞ?/ßoß~ߑߚߩ߲ß(Ãßìßýß àà+à 4à @àLà^àwà‡àžà¯à¾àÒàäàááá-á<áEáTá ]ákázáá„áŸá¨á­áÈáÍá Òáàáöáâ ,â9â<â Qâ[â¹câÐãîãXôãMåcå ~åŸåµåÕåêåææ/æBæVæuæ‘æ¥æ¿æ9Öæ çç<ç(Tç }ç'ˆç°ç)¹çãç ôç0þç2/è bèmèè èGµè ýè é é7éSélé‡é ¢é­é½éÓéêéêê&ê 8ê Eêfê…ê¤ê!¹ê1Ûê# ë1ëAë%_ë…ë)–ë%Àë'æë)ì*8ìcìì¡ìÁìÚìóì"í 1í0Ríƒí&¢í-Éí%÷íî 7î#Xî|î ›î ¨î!¶îØîñîï$ï6Dï{ï#”ï¸ïÌï Ïï Üïèï ðïýïð ,ð8ðSð cðpðuð%ð¶ðÕðíðüð5ñ/:ñ8jñ-£ñ9Ññ8 ò9Dò~ò ó˜ó ó¤ó ´ó€¾ó?ô Tô^ô nô1yô/«ô.Ûô õõ%õ*õ!;õ ]õ hõ"sõ –õ&£õ Êõ ×õ äõ ðõ ýõ ööö!ö&ö.öEö[ö möxö˜ö¸öØöøö÷)÷F÷f÷†÷¦÷Æ÷"æ÷% ø,/ø\øcø jø vø ƒøø «ø ¹øÇø#Ýøùùù 0ù<ùBùYùbùrùwù+•ùÁùÅù Öùáùõùú(úCúW^ú¶úÓú4êúû4ûNûkû}û‘û©ûÈû#ßû1ü¡5üM×ü-%ýOSýk£ýþJ+þGvþF¾þIÿ^Oÿ"®ÿ(ÑÿGúÿ#B"f2‰#¼à+ý)B!`‚%¡1Çù;4(p™*ª"Õ:ø*3 ^"kŽ%Ÿ>ÅRvWoÎ]>)œ Æç9!A c3„4¸í %DK(d(.¶åìÿ  * 8 (T }  © "Ä  ç   (1 <Z '— 0¿ ð * %0 &V  } ‹  Ÿ ­  Ç Õ  ä ò  " < N U i #x "œ 4¿ ô ý    8  A K %e ‹ ¢ ³  Ï ð   + 8:D„™ª¹ ÊÖ!é $0U nxŒ Q´07Upu †+’!¾ àí"Aau“­Éå0?O_ u$‚§¿×8ï>('g(#¸)Ü-04/e-•1Ã+õL!(n*—$Â%ç! /SN¢¿6ÝDUYO¯&ÿ@&,g!”*¶1á@;TCXÔQ-%›"Á&äK FWBž‹á&m”'¨ ÐmÜIJ1”2Ưùj© % F_x‘ «¶ºÌÞ÷  ; K a ^t  Ó!Ý!ï!8" ="H"M"ce" É$×$Ü$ñ$%C!%e%‚%Ÿ%¼%Ù%õ%&Z,&J‡&.Ò& '"'1'H'g'w'(^ž(ý()-/)*])ˆ) ) œ)©)Ç)#Î)ò)ì‚*›o+à -FÏ-/+/B/$_/„/¢/Â/à/û/0-0M0&a0$ˆ0­0(Ã0&ì01"*1GM1•2¨2·2Ñ2ê2û23!333CD3ˆ3¤3XÃ3+4H4d4%{4(¡4'Ê4ò4ö4 ü455'65 ^5h5 5 Ž5›5¢5µ5-Ê5 ø5 6 66!960[6Œ66Ÿ6¥6'Â6(ê6+7?7/^7BŽ7 Ñ7Ý7#í7 8F8Bc8=¦8Jä8/9 F9R9 o99°9$Í9$ò9:6:K:`:&~:¥:+½:é:";';9;N;^;z;'–;¾;Ò;é;%ù;<9<S<q<‘<#¤<È<ß<þ< =>= W=a=h=k=p=u=x=}=P€=Ñ= î=û=>" >/>cI> ­>º>À>Å>Ê> Ï>Ý> ú> ?@?(R?{? Œ?­?Ã?Ò?å?@@f:@¡@²@}Î@LA gAˆAAºAÓAêAB BB B:B#ºBÞBôBC %C /C LXLnLLL»LÒLîL'M*M ?M/MM)}M§Mf¹M N (Nž3NÒNºÚS •W W7´W ìW X X6XRX iXwX}XX¹XÀXÓX)åX-Y=YQY!jYŒY ’Y Y²Y¹Y+×Y$Z(Z'EZ'mZ)•Z+¿Z4ëZ [A[[[v[‘[§[%Ç[8í[,&\.S\.‚\'±\!Ù\"û\#]!B]d]]Ÿ]5±]ç]^#^A^+Z^†^L¡^ î^ ù^_ __)_H_X_i__“_˜__¡_³_Ï_Õ_ì_` `!`2`&I`p`3v`(ªaUÓa\)b7†b¾bÚbábøb)ûb%c)c!:c!\c~c Žc¯c¿cÆc×cñc&÷cd2dHdWdld ƒdŽd£d(»dädüde$e{8W{ {{£{ª{%¾{ä{ í{÷{| ,|9|M|_|7y|*±|Ü|Þ|ä|ú|þ|}&"} I}T}j}}}ƒ} ‰} ”} Ÿ}¬}!Ã}!å}"~*~@~JW~/¢~ Ò~ Ü~Xê~3C3w« Ã'Í'õ€-4€b€|€•€´€Í€Ó€"ç€ " 3 =J ]g€  #¬ Ðñ ‚%‚?‚Y‚Hv‚¿‚Ú‚ ê‚ ƒ 'ƒ2ƒ,Cƒ2pƒ#£ƒǃ߃ öƒ!„Œ&„³„Ä„-ß„ …….…>…N…fc… Ê… Ö…Šá…@l†¸­†f‡€‡•‡¬‡ ɇ ևᇠ÷‡ˆˆ.ˆ 3ˆ=ˆ Wˆcˆƒˆ ˜ˆ¦ˆÁˆÙˆôˆ‰(‰:‰ S‰ ^‰j‰ „‰'‰(¸‰Dá‰)&Š.PŠŠŠŤŠ j‹ t‹ ‹ ‹ —‹£‹‹Ó‹:Ø‹PŒNdŒ³Œ7ÄŒüŒ  / ;G MXk | ‰“¦ ¹Æß¹î+¨Ôò‘N#‘Qr‘5Ä‘(ú‘-#’/Q’Y’Û’ â’7“;“/U“…““º“Í“â“)û“&%”L”-k”&™”À”)×”••6•H•af•0È•2ù• ,–7–H–P–Y–o– ˆ–!––$¸–2Ý–#—4— F—TS—¨—Á—Ù—1é—˜ !˜,˜+2˜^˜ d˜·p˜(œ{DœÀœ.Æœõœ& @Mmf Ôâžž+žFž#[žž”žž$£žÈžÚžõž Ÿ(Ÿ!GŸ iŸtŸ)ŠŸ´Ÿ¶Ÿ ºŸÅŸ ÛŸüŸ* < R 7p ¨  ¸ Æ )ß / ¡+9¡9e¡6Ÿ¡ Ö¡*÷¡-"¢-P¢~¢5š¢Т0Ù¢) £)4£^£t££££¹£Ö£Có£87¤&p¤—¤§¤äÙ¤ ê¤ ¥)¥I¥ŒZ¥@ç¦(§A§¶Z§¶¨mȨ†6« ½« Ê« Ö« â«î«f¬ k¬w¬‡¬,™¬Ƭæ¬ÿ¬­2­O­g­ƒ­–­®­À­Ó­Ù­õ­û­ ®$®>®Z®p®ˆ®˜® «®¶® ¾®É® ß®é®ü® ¯*¯A¯X¯o¯†¯¯¦¯¯¯¸¯˯ Þ¯è¯÷¯° ° ,°+M°'y°¡°8»°'ô°E±)b±Œ±"©± ̱Ú±í±ý±²)²E²Z²^²s²„²—²®²DzÞ²÷²³'³-³6³J³a³ v³&€³ §³ ´³T¿³ ´ ´,7´d´!{´L´=ê´2(µ+[µ‡µ£µ§µ·µ ǵÒµãµéµúµ¶(-¶V¶o¶†¶¥¶*¸¶ ã¶î¶· ···-·?·$V·{·ƒ·+›·#Ç·ë·ÿ· ¸ '¸+3¸&_¸`†¸ç¸ü¸¹26¹$i¹!޹°¹"ù*湺(-ºVº¢lº¦»¶» ½» Ç» ѻݻ,ü»)¼S/¼ƒ¼º‰¼ÑD½»¾JÒ¾À7À GÀTÀmÀtÀ ŒÀ˜À®À¿À#ÐÀôÀ" Á.ÁEÁ]ÁnÁƒÁ—Á®Á%ËÁñÁ& Â&4Â[ÂqÂ$‹Â°Â%ÆÂ.ìÂà 6ÃCÃbÃsÃzÌãÃ*ÂÃ#íÃ*Ä(<Ä2eÄ$˜Ä,½ÄêÄ/ Å/:Å&jÅ(‘Å ºÅ ÈÅ ÖÅ äÅòÅøÅ-þÅ2,Æ_Æ eÆ pÆ {Æ ‡Æ”ƨƼÆÐÆäÆ÷Æ Ç)ÇGÇ ZÇeǃǛÇ5»ÇñÇÈ;%ÈaÈ#yÈÈq°È"É(É .É :É GÉSÉcÉvÉ…É!”Éz¶É1Ê&JÊ-qÊ+ŸÊ3ËÊÿÊË2ËIËPËjË ~ˌˠ˗´ËLÌRÌcÌvÌ |Ì‰Ì‘Ì —Ì$¢ÌYÇÌ„!Ï%¦ÑÌÕCàÙ#$Ú HÚÙTÚè.ÛNÜIfÜw°ÜW(Ýl€ÝYíÝeGÞS­ÞSßLUß ¢ßC¬ß3ðß $à!1àHSà œà§àÀàÇà1Ïàá á+$á PáZá(bá ‹á•á¤áhÁá]*â^ˆâ\çâYDãQžãOðã@ä Yäeä„äžä ¹ä Åä ÑäÝä3ôä&(åOåbåyå9–å4Ðåæææ .æ9æ=æ@æUæ9qæ$«æÐæ*èæaçAuç$·è(ÜéDë}Jë,Èë<õë,2ìÄ_ì7$í>\í8›íaÔíO6îY†îIàîV*ïZïBÜï6ðBVðC™ð`ÝðR>ñW‘ñ¦éñŠ÷€ø1œø$Îø-óør!ùp”ù+ú?1úIqúM»ú9 û°CûMôüÌBÿ¸ÈTf%» á ñ  !0 R b } • ª ¿ KÙ % > %Y  ” ¨  ¼  Ç 8Ò  ¿ TÑ & /C "s i– ^_+{§ÂÚò " :9D~–™®±´ÃÌ Üçï÷0MmŒ«Ê'èB(k~ Ž™ ª'¶Þ ïû'C[yªÅ%â%.T"t[—tó h"t—;¦â6JR$Z“§$»2à<'Px‡™­¾ÆÎ!ã$ DOk~  © ´ ¿ Ê Øâø#<Pd·~68>w}'‘'¹'á' '1*Y%„&ª&Ñ(ø(!(J(s(œ&Å.ì..J.y.¨×æú ,Jh€&˜¿ÆÖó  D$i y„–ŠšF%6lU£.ù®( × >g!Y¦!["G\"H¤"›í"‰#¢#Â#Ø#!ñ#!$!5$!W$y$ ˜$£$ ¿$à$ó$%%,%(?% h%·‰% A& N&o& s&€&?™&Ù&“ø&”Œ'_!(`(gâ(FJ)E‘)s×)KK*`—*Tø*GM+_•+gõ+u],}Ó,wQ-É-YI.z£.N/[m/É/"Î/1ñ/#0 =0 G0S0c0ªi0,2A3 P3[3Gj4²4·4 Ô4 Þ4é4Eþ4GD5Œ5 ¤5±5 Ã5Î5Ó5ì56 6;6T6 p6 }6 Š6 «6¶6¾6Õ6Û6á6 û6V78\7E•75Û7?8Q8W8j8 €8 8 ˜8¤8p¨8969S9f9k9„9 9¹9Õ9î9 ::":54:"j;I;J×;"< *<6< M<0Z<‹<%ž<Ä<Ø<í< = = ='=a.=Z i%Ÿ–`?’WíÝ,'e\de‡³'›$P áºß’M{ö8C·8‡è£ ïÀªÝj•¾ÕÁ{G–àäÞÖ•e#Xp|@ÿ®¬÷} ,¥-Ê/!zÖuTÀy-û‘¥ï|Ô­ñ¸h|†Ðf¿ÿ'¬{Ø]¤Xõ¦;h²æ /ï¡ñiÐ׆Ýo¶!nØ2ÈQÞ¨*d3YÞj›*âÐÑ9!14…á5«_ÇvÕ5ê/: MÍÙôû8˜ATNˆ"ÙCÇ„¶â¢²˜¥¼m…Cƒ 3¥ÎkÜT è„MÁ=w$ºóË4rÓN àãAuk@©Tuß©éìûF¡¯ ½§•»ž "àSoÕ”¨*+ ±—ÔЋßFÀÎ C¿¨S<,pÌ]Ƴ{‡|#‚†'|ì´=Ü>··'A¨‰ïó¡QŒRêð”jÑ}–„—dÍD€¹W&¢ Ú•i»Ç¡± V°f«;ì¯üÔ²(JkêØ×õø_‡¾]0µ>¼&¿— K”éÍ·\õîþIÞŸ^Ö’í÷^®j²šÂ!-ZÚí0ÂÂÜöqçÃfk¦N¦Í.9ž$ kÜ14‘6ÒàýôóÏJ"8—$ Z55-Žx›ƒ<—Gf1ýWìÖÐLF÷»¤ƒŸ—jÁÔÁòÉ‘´T £¬çºõ ª]µ‡# Mǃ6lsŸpœ¬±ÔXÚ—ˆ{ ?‘=ÎÙV¯^¿¾#ÈÖV ²[Ry¾6 N§éìÙè_g9虨º ¹3DHIJ7‹1Žç@7l··¸×ÂÅyrJHXޤÿ»«Æ¾Šúþ_ûåg?µò´ÍA½¾¨”nš}åîFP³` ®DùÈ`4%Û³*ˆë%>9þ…0ü†:É:7œÐá•¢ÙÌ–q>óE´½L$¡t ¢Âsþ”åML§8Õy¨KŠ»LC´Ý»µ¤Ý;ë›ò»BWB¼ Šf­&š™~¿ˆU‹öeñilÀoLÅiüL¡ïì]‚È ùüaé Be=ÚÖ6%ü³ùMÓû<•[ŠßÄÄ"´^S'wçœ|^2IË;UV!Û§}š΋™ú:4çóœô“Ð?U/ øö÷ÿ“xBàqŽù’1b÷á2Òf#û(ù䃭”s¨Ÿu°- ý Ñ[eP%ó-RL¢Sñ„Å’å«tºZø‰±B³O ÛÜÝ­†ú¸ÆÿŠY ‹©¹Ù)¹ðyrÕbÚ£²gÇ¥µhjv H6;Ø×uÒ#i œ“âÈmŽä  (úÙEhÅA¡=@;ýÖ 8ízO¤±GsïžöÎ\ŒMýGåØ(ãa Bu¦C7Î3… ´m©«VE=Ξ Í>×KXxÞ ÕrÅlWR}3…bç´/0~®†ò~Ûð.ÜðPJ[x aùÑÃÐ|Ÿüt]«ûcÓ Œ'–z*„ÄbL˜©×AÛVȳ¾P’¦2o_±~Z÷>~ÊJÌâØŒðß>õ7÷.øX9ŠtuvÇzÅ @0à¡i›ŸYI­0sÚüºÊò_Xåu+_)2î<dÐêHh¶×cAhROË‹"Qtç[¦ám„_UopqrM?Áiõ¼^7õ27¥trOwWóŽ x  ö¸B­I„ мðòî vúxK¯µn^ô“¯ø]ÃÇô/^“~¿b\O±ïœÒvÿUa¢ù`ö d ÝÏn  #.Pá<bÆô<á,êsq¶Âzl.ë-¯˜F)T3ÓÆE'@Ëz–¢«–¦fKZyûC=;sÑÌ×<÷`•þA ø!öÏHô[³’D°D„§±‰×ñÓ§Ó5QÎ F£s’¯H†bªZpíÓ+™Ì“Úê(Çëú}agck>{S’žUpqêÍŽKáh?h2ÜqÉYéPß&r­&ݰ‘˜M€^¼ª \Ñ™' Ô . ,ÒØÃóÅÔ·‚ƒøÿªñ›¶íÉÄ›k ÞœÛ.²R­™ëÒ¼ä: ‰…Rw½ÀOâNË»¶m‰_Òú£3á†Àˆ ”&ˆÅªÁ +OÆ-à‹“k#ÃÚYBŒµš¿f•ƪoîž“pG`™[Qþã‚vãäåæç©µS)ãú"DÂ8q8®@½Ïð\˜Œ ‡Ê¤ \!ã¢z®Œ¨*{ ?¹aå!54Ïî)XVª(îÏ2J$n3W›/ ™÷¬=m4ýºT žw) °ù¼ê í“QyŸD-Â麘l—ÎÊS„jY1»&À0 Ž·+cÈär´Y5Ä€‚6d|͇C5À?¦åJiÁ‚(¼‘Fß ¸ŽeI/ð<”ë ñ"VÕw*â.ŒÏ[:—ìØè:;9€ $E¸µ ã7°ç«‚Fœ`t$,x,SŒì°,Ìëj¬z ŠR9î}>+ÄO¾}âÊN·”o˜«ÌɈìò9â(ZqñBØc‹ÛEϯÄãm$ôQè¯wïï a… IéñÈ¥göZedæ ü4d±…ɉäøGÿ(…+Ú&¬X€ÉœÃ¸ven°žf {*L+" m€:šl­‚ U2ÉgÃ\ʲ¸VÕÔrKvƒýQc®1ˆ%ùTêèÄJ‰ä*"S =U1`¶o½¸æCÒ©næG<xÆÃYÄx‘Nšèõ 6?sËUþ¹IÊ|,Ïí§/ÆÌc0.ÿ–°Öz†%¬d€w%%€©n0tÙðtŸGÌÜþ€6‡Tº)¬PoÂp¡ ‡ÊÁßwaÍ@Q{èÛ~l;½hàËg¥lôbòA)æÇæNO‘RЦ§ÜóÓÑ6D¤I¶½+™Öš}ž9‘üg•~¿æ8¹øë3F®à ý–ÓÒò®¶ãDE:ÉË&ÔHYë vuƒ©§íÑÞ‹y¥#j7Á[úÛ ý½4G~þûàcÑšEéßa£äkÅm‰b¹¢\PNK@E‰ WH¹K1¤ª˜!ÈËݳcæp£nƒÀy‚â] W)éÕ¤ÞˆÞ£gHõ5Ù£]`²¿ Access Capability: %s Canon Wifi support File Download, Filesystemtype: %s Free Space (Bytes): %llu (%lu MB) Free Space (Images): %d Generic Image Capture, Maximum Capability: %llu (%lu MB) Nikon Wifi support No Image Capture, Storage Type: %s StorageDescription: %s VolumeLabel: %s Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Capture Formats: Device Capabilities: Device Property Summary: Storage Devices Summary: Drive %s %11s bytes total %11s bytes available Serial Number: %s Version: %s (battery is %d%% full) PTP error %04x on query Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d error %x on query. not read out. %.0f mm%.1f stops%0.4fs%d %d/%d%d Multi Frame Noise Reduction%d mm%d/%d%f%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)%sCanon EOS Shutter Button%sNikon Capture 2%sNikon Capture 3 (Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*+NEF (RAW)-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 (Short)1 EV1 fps1 min1 minute1 step spd/aperture1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/250s (Auto FP)1/25s1/2s1/301/30s1/3200s1/320s1/320s (Auto FP)1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 mins10 minutes10 mm10 seconds100%10s11 fps1152 x 86412 mm1280 x 96013s1515 mins15 minutes15s16 seconds16:91s1x22 EV2 fps2 seconds2.02.0 m2.5s2.5x20 seconds20s21 points25%25s29 mm2s2x3 (Normal)3 EV3 fps3030 minutes30 seconds30s34 mm3:23D Tracking3s3x44 fps4 seconds41 mm4s4x5 (Long)5 fps5 mins5 minutes5 seconds50 Hz50%51 mm51 points51 points (3D)58 mm5s5x6 fps6 mm6 seconds60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 seconds8s8x9 fps9 points9xA-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)AB FilterACAC PowerAC adapterAC adapter is connected. AC adapter is not connected. ADL bracketingAE & FlashAE LockAE Lock onlyAE LockedAE lock (Hold)AE lock (Reset on release)AE lock (hold)AE lock onlyAE onlyAE-L/AF-L ModeAE-lockAE/AF LockAE/AF lockAEAF Lock Button 2AEB Exposure CompensationAF ActivationAF Area IlluminationAF Area PointAF Assist LampAF Beep ModeAF DistanceAF LCD Top Mode 2AF Lock HoldAF Lock OnAF Lock OnlyAF Lock onlyAF LockedAF ModeAF OnAF On ButtonAF lock onlyAF-AAF-CAF-C Mode PriorityAF-ONAF-SAF-S Mode PriorityAF11AF51AI FocusAI ServoASIC Revision: %d.%d ASX PlaylistAUTOAVAV Lock SettingAV MaxAV OpenAX203 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.AX203 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.A_DEPAbout Konica Q-M150: This camera does not allow any changes from the outside. So in the configuration, you can only see what it is configured on the camera but you can not change anything. If you have some issues with this driver, please e-mail its authors. Abstract Audio AlbumAbstract Audio PlaylistAbstract Audio Video PlaylistAbstract Calendar ItemAbstract Chaptered ProductionAbstract ContactAbstract Contact GroupAbstract DocumentAbstract Image AlbumAbstract MediacastAbstract MessageAbstract Message FolderAbstract Multimedia AlbumAbstract Video AlbumAbstract Video PlaylistAccess modeAccess top item in MY MENUActionActive AF SensorActive D-LightingActive Pic Ctrl ItemAd-hocAdc65 Benjamin Moos AdobeRGBAdvanced Transfer CancelAlbum nameAlkalium manganeseAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Angle LevelAnti-redeyeAnti-redeye FillAnywhereAox generic driver Theodore Kilgore ApertureAperture SettingAperture SettingsAperture changedApplication ModeApplication Mode 0Application Mode 1ArtistArtist NameAspect RatioAssign Func ButtonAssign Func. ButtonAssign Preview ButtonAssist LightAudible.com CodecAutoAuto + Red Eye SuppressionAuto ApertureAuto Bracket SelectionAuto DX CropAuto Distortion ControlAuto Exposure Bracket CountAuto Exposure BracketingAuto FPAuto Focus AreaAuto Focus Mode 2Auto ISOAuto ISO Multi Frame Noise ReductionAuto ISO P/A/DVP SettingAuto Meter Off TimeAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off InfoAuto Off MenuAuto Off PhotoAuto Off TimeAuto Off TimersAuto Power OffAuto Power Off (minutes)Auto Slow SyncAuto White Balance BiasAuto exposure lockAuto focus: AI focusAuto focus: AI servoAuto focus: one-shotAuto sensitivityAuto, red-eye reductionAutofocus ModeAutofocus error.AutomaticAutomatic Automatic (No Flash)Automatic FlashAutomatic MacroAutomatic Macro (close-up)Automatic Red-eye ReductionAutomatic exposure adjustment on previewAutomatic flashAutomatic flash on captureAutumn colorsAvAv MaxAv Max ApexAv OpenAv Open ApexAvailable ShotsAvailable memory: AverageAverage FilesizesAverage MeteringB/WBWBW ContrastBW Filler EffectBW Setting TypeBW SharpnessBack LightBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for card status %dBad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery Cell KindBattery LevelBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery Life: %i Battery LowBattery ModeBattery TypeBattery exhausted, camera off.Battery level: %.1f Volts. Revision: %08x.Battery status: %s, AC Adapter: %s BeachBeach/SnowBeepBeep ModeBeep mode changedBeep offBeep onBegin Edit ObjectBestBit rate %ld is not supported.Black & WhiteBlack & whiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlossomBlueBottomBracket ModeBracket OrderBracket SetBracketingBracketing C 0.3 StepsBracketing C 0.7 StepsBracketing C 1.0 StepsBracketing C 2.0 StepsBracketing C 3.0 StepsBracketing EnableBracketing Frames and StepsBracketing S 0.3 StepsBracketing S 0.7 StepsBracketing S 1.0 StepsBracketing S 2.0 StepsBracketing S 3.0 StepsBracketing WB HiBracketing WB LoBracketing burstBright+Bright-BrightnessBrightness+Brightness-Brightness/ContrastBuiltin RAMBuiltin ROMBulbBulb Exposure TimeBulb ModeBurstBurst IntervalBurst NumberBusyButtons and DialsCCD NumberCCD Serial NumberCHDKCHDK ScriptCHDK did not leave recording mode.CRWCSM MenuCameraCamera ActionsCamera Body IDCamera ConfigurationCamera Date and TimeCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ManufacturerCamera ModeCamera Mode Not Adjust FNumberCamera ModelCamera Model: %s Camera Not ReadyCamera OK.Camera OrientationCamera OutputCamera OwnerCamera SettingsCamera Status InformationCamera and Driver ConfigurationCamera appears to not be using CompactFlash storage Unfortunately we do not support that at the moment :-( Camera busy. If the problem persists, please contact %s.Camera could not complete operationCamera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera has taken %d pictures, and is using CompactFlash storage. Camera is configured for lights flickering by %dHz. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera unavailable: %sCamera was already activeCamera was woken upCan't capture new images. Unknown errorCan't delete all images.Can't delete image %s.Can't upload this image to the camera. An error has occurred.Cancel Canon DSLR AutofocusCandlelightCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCanon Auto Exposure ModeCanon CaptureCanon Capture failedCanon EOS CaptureCanon EOS Capture failedCanon EOS Capture failed to release: Card read-only?Canon EOS Capture failed to release: Perhaps mirror up?Canon EOS Capture failed to release: Perhaps no focus?Canon EOS Capture failed to release: Perhaps no more memory on card?Canon EOS Capture failed to release: Unknown error %d, please report.Canon EOS Capture failed: %xCanon EOS Full-Press failedCanon EOS Full-Release failedCanon EOS Get Changes failedCanon EOS Half-Press failedCanon EOS Half-Release failedCanon EOS Remote ReleaseCanon EOS Trigger Capture failed: 0x%xCanon EOS ViewfinderCanon EOS ZoomCanon EOS Zoom PositionCanon PowerShot series driver by Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5 additions by Ole W. Saastad Additional enhancements by Holger Klemm Stephen H. WestinCanon Shooting ModeCanon disable viewfinder failedCanon enable viewfinder failedCanon get viewfinder image failedCaptureCapture DelayCapture SettingsCapture Size ClassCapture TargetCapture Transfer ModeCapture size class changedCapture type is not supportedCardCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card name: %s Free space on card: %d kB Card not supported.Card removed during access.Cell Kind PriorityCenter Button Playback ModeCenter Button Shooting ModeCenter Button Zoom RatioCenter SpotCenter Weight AreaCenter WeightedCenter Weighted AverageCenter-WeightedCenter-spotCenter-weightedCenter-weighted Average MeteringCenter-weighted MeteringCenter-weighted averageCenter-weighted meteringCentreCentre Weight AreaCentre-spotChange Camera Mode FailedChange Pic Ctrl ItemChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorChildChildrenChoose Color TemperatureChoose non-CPU lens numberClean Image SensorClean SensorClean data storeClose Media SessionClose sessionClose upClosest SubjectCloseupCloudyCloudy White Balance BiasColorColor GainColor ModeColor ModelColor SettingsColor SpaceColor TemperatureColor or Function ModeColor sketchColor temperatureCommand can not be cancelled.Command order error.CommanderCommunication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompatibility ModeCompressionCompression SettingConfigurationConfiguration for your FUJI cameraConnected to cameraContinuousContinuous AFContinuous High-speed ShootingContinuous Low SpeedContinuous Low-speed ShootingContinuous ShootingContinuous Shooting Speed HighContinuous Shooting Speed SlowContinuous Speed HighContinuous high speedContinuous low speedContinuous silentContinuous-Servo AFContrastContrast+Contrast-Copy objectCopyrightCopyright (max. 20 characters)Copyright InfoCopyright InformationCorrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not change ISO speedCould not change apertureCould not change beep modeCould not change exposure compensationCould not change flash modeCould not change focus modeCould not change image formatCould not change shooting modeCould not change shutter speedCould not change time of file '%s' in '%s' (%s).Could not change zoom levelCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file '%s' in folder '%s' (error code %i: %s).Could not delete file.Could not detect any cameraCould not detect any camera at port %sCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get information about '%s' (%s).Could not get information about '%s' in '%s' (%s).Could not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Create Wifi profileCreation date: %s, Last usage date: %sCreativeCreative PC-CAM 300 Authors: Till Adam and: Miah Gregory Creative PC-CAM600 Author: Peter Kajberg Current Mode: Camera Mode Current Mode: Playback Mode Current camera time: %04d-%02d-%02d %02d:%02d Free card memory: %d Images on card: %d Free space (Images): %d Battery level: %d %%.Currently, PTP is only implemented for USB and PTP/IP cameras currently, port type %xCustomCustom Functions ExCustom Whitebalance PC-1Custom Whitebalance PC-2Custom Whitebalance PC-3Customise Command DialsDD/MM/YYYYDEPDPOF VersionDark on lightData has been corrupted.Date & TimeDate FormatDate Time Stamp FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDate: %sDay/Month/YearDaylightDaylight White Balance BiasDebugDeepDefault gatewayDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. Delayed RemoteDeleteDelete objectDeleting image %s.Depth of FieldDetected a "%s" aka "%s"Detected a '%s'.Development Parameters 1Development Parameters 2Development Parameters 3Device CertificateDevice IconDevice VersionDevice does not support setting object protection.Device failed to set object protection to %dDigita Johannes Erdfelt Digital Camera Layout (DCIM)Digital ZoomDigital Zoom MagnificationDigital macroDigital zoomDimera 3500 ver. %s %d/%d %d:%d. %d pictures used of approximately %d (high res) or %d (low res). Camera features: %s, %s, %s, %s. Flash is %s, is %s and is %s. Resolution is set to %s. Camera is %s powered %s. Direct PrintDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisable trusted file operationsDisconnecting camera.Disp AvDisp Av MaxDisplayDisplay Formats: Distant ViewDo not display TV menuDon't know how to handle camera->port->type value %i aka 0x%x in %s line %i.Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy to port your driver on this cam! Download program for GrandTek 98x based cameras. Originally written by Chris Byrne , and adapted for gphoto2 by Lutz Mueller .Protocol enhancements and postprocessing for Jenoptik JD350e by Michael Trawny . Bugfixes by Marcus Meissner .Download program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading %s...Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...Drive Canon DSLR AutofocusDrive Canon DSLR Manual focusDrive ModeDrive Nikon DSLR AutofocusDrive Nikon DSLR Manual focusDriverDriver SettingsDriver framework written by Lutz Mueller . This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro "itojun" Itoh . Integration of QVplay by Michael Haardt .Dual IrisDuskDusk/DawnDust Reference ErrorDynamic AF AreaDynamic Area (21)Dynamic Area (51)Dynamic Area (9)Dynamic-area AFDynamic-area AF with closest subject priorityEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.ESPESSIDEV StepEVF ModeEZoom Size of TeleEZoom Start PositionEconomyEffect ModeEffectsEmergencyEmptyEnable CopyrightEnable Image CommentEnable trusted file operationsEncounterEncounter BoxEncryptionEncryption key (hex)End Edit ObjectEnd trusted application sessionEnglishEnhancedErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationError waiting for ACK during initialization, retryingEvaluativeEvaluative MeteringEvent Emulate ModeEverywhereExecute predefined command with parameter values.Expected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.Expose IndexExposureExposure Aperture LockExposure Base CenterExposure Base MatrixExposure Base SpotExposure Bias CompensationExposure Bracketing ProgramExposure Bracketing StepExposure CompensationExposure Compensation (EV)Exposure Delay ModeExposure Display StatusExposure ISO StepExposure Index (film speed ISO)Exposure Indicate LightupExposure Indicate StatusExposure LockExposure MeterExposure MeteringExposure Metering ModeExposure ProgramExposure Program ModeExposure StepExposure TimeExposure compensationExposure compensation changedExposure compensation: %d Exposure compensation: %s Exposure delay modeExposure level on previewExternal FlashExternal Flash AttachedExternal Flash CompensationExternal Flash ModeExternal Flash SortExternal Flash StatusExternal syncExtra highF-NumberF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d FNumber LockFV LockedFV lockFace-priority AFFactory DefaultFailed to enable liveview on a Nikon 1, but it is required for captureFaithfulFar %dFar 1Far 2Far 3Far sceneFast FilesystemFast shutterFileFile '%s' could not be found in folder '%s'.File '%s/%s' does not exist.File Deletion, File Number SequencingFile Upload File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.Filename ConflictsFilename InvalidFilename RequiredFiletype: FlashPix (Filetype: JPEG (Fill flashFinder ISO DisplayFineFireworksFirmwareFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware VersionFirmware version: %d.%02d Firmware: %d.%d FisheyeFixedFlashFlash ChargedFlash Command A CompensationFlash Command A ModeFlash Command A ValueFlash Command B CompensationFlash Command B ModeFlash Command B ValueFlash Command ChannelFlash Command Self CompensationFlash Command Self ModeFlash Command Self ValueFlash Commander ModeFlash Commander PowerFlash CompensationFlash Exposure CompensationFlash Level LockFlash LockFlash MRepeat CountFlash MRepeat IntervalFlash MRepeat ValueFlash ModeFlash Mode Commander PowerFlash Mode Manual PowerFlash OffFlash OpenFlash Quantity CountFlash SettingFlash SettingsFlash Shutter SpeedFlash SignFlash Sync. SpeedFlash White Balance BiasFlash autoFlash mode changedFlash mode: auto, Flash mode: force, Flash mode: off Flash offFlash onFlash onlyFlash/apertureFlash/speedFlash/speed/apertureFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFlexible ProgramFlicker ReductionFlourescentFlourescent TypeFlourescent-1-home-6700KFlourescent-2-desk-5000KFlourescent-3-office-4200KFluorescentFluorescent HFluorescent Lamp 1Fluorescent Lamp 2Fluorescent Lamp 3Fluorescent Lamp 4Fluorescent Lamp 5Fluorescent White Balance BiasFluorescent-1-home-6700KFluorescent-2-desk-5000KFluorescent-3-office-4200KFluorescent: Cold WhiteFluorescent: Day WhiteFluorescent: DaylightFluorescent: Warm WhiteFocal LengthFocal Length DenominatorFocal Length MaximumFocal Length MinimumFocal Length TeleFocal Length WideFocusFocus AreaFocus Area WrapFocus Area ZoneFocus AreasFocus DistanceFocus InfoFocus LockFocus MeteringFocus Metering ModeFocus ModeFocus Mode 2Focus Point BrightFocus mode changedFocus positionFocusing PointFocusing Point on Center Only, AutoFocusing Point on Center Only, ManualFocusing error.Folder '%s' only contains %i files, but you requested a file with number %i.FoliageFoodFor bulb capture to work, make sure the mode dial is switched to 'M' and set 'shutterspeed' to 'bulb'.For cameras with S&Q Technologies chip. Should work with gtkam. Photos will be saved in PPM format. All known S&Q cameras have two resolution settings. What those are, will depend on your particular camera. A few of these cameras allow deletion of all photos. Most do not. Uploading of data to the camera is not supported. The photo compression mode found on many of the S&Q cameras is supported, to some extent. If present on the camera, video clips are seen as subfolders. Gtkam will download these separately. When clips are present on the camera, there is a little triangle before the name of the camera. If no folders are listed, click on the little triangle to make them appear. Click on a folder to enter it and see the frames in it, or to download them. The frames will be downloaded as separate photos, with special names which specify from which clip they came. Thus, you may freely choose to save clip frames in separate directories. or not. For cameras with insides from S&Q Technologies, which have the USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051, 0x9052, or 0x913D. Photos are saved in PPM format. Some of these cameras allow software deletion of all photos. Others do not. No supported camera can do capture-image. All can do capture-preview (image captured and sent to computer). If delete-all does work for your camera, then capture-preview will have the side-effect that it also deletes what is on the camera. File uploading is not supported for these cameras. Also, none of the supported cameras allow deletion of individual photos by use of a software command. ForceForce Flash Format card and set album name.Format compact flashFormat storageFrames Left: %i Frames Taken : %4d Frames Taken: %i Framing gridFrenchFriendly Device NameFront-curtain syncFullFull ImageFull ManualFull View File FormatFull-time-servo AFFunction Button 2Functional ModeFunctional Mode: 0x%04x GeneralGeneric FlatGeneric HierarchicalGermanGet Next Data BlockGet Partial Object (64bit Offset)Get Proximity ChallengeGet Registration ResponseGet WMDRM-ND License ResponseGet WMDRM-PD Application ResponseGet device property descriptionGet device property valueGet interdependent property descriptionGet license stateGet meter challengeGet meter responseGet number of objectsGet objectGet object handlesGet object infoGet object properties supportedGet object property descriptionGet object property listGet object property valueGet object referencesGet partial objectGet secure time challengeGet secure time responseGet storage IDsGet storage infoGet sync listGet thumbnailGet transferable playlist typesGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.Gray scaleGrayscaleGreenGroup DynamicGroup PTN TypeHDR High DynamicHDR ModeHDR SmoothingHand-held TwilightHardware ErrorHi 1Hi 2HighHigh (1152 x 872)High (good quality)High 2High ISO Noise ReductionHigh ISO noise reductionHigh controlHigh keyHigh sensitivityHigh-Speed ShutterHighlight active focus pointHoldHost Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?Hue AdjustmentHyPictI/O in progressIDIP address (empty for DHCP)ISOISO AutoISO Auto Hi LimitISO Auto High LimitISO SpeedISO speed changedIconsIdleIllegal parameter.Illum SettingImageImage %s is delete protected.Image & SoundImage AdjustmentImage CommentImage Comment EnableImage Comment StringImage CompressionImage FormatImage Format CFImage Format Ext HDImage Format SDImage ModeImage QualityImage Quality 2Image ReviewImage RotationImage Rotation FlagImage SettingsImage SizeImage StabilizationImage format changedImage height: %d Image number not valid.Image protected.Image sizeImage size: %d Image type %d is not supported by this camera !Image type %d not supportedImage type is not supportedImage width: %d Img Conf TimeImmediateIn useIncandescentIndicator DisplayIndoorInfinityInfinity/Fish-eyeInfo Disp SettingInfo Display Error StatusInformationInformation on STV0680-based camera: Information regarding cameras with ID 0x2770:0x9153. We do not recommend the use of a GUI program to access this camera, unless you are just having fun or trying to see if you can blow a fuse. For production use, try gphoto2 -P from the command line. Note: it is not possible to download video clips. Initial camera response '%c' unrecognizedInitializing CameraInitiate captureInitiate open captureIntelligent AutoIntelligent Auto Flash OffInternal RAMInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal error looking for camlibs. (path names too long?)Internal memory: %d MB total, %d MB free. InvalidInvalid ISO speed settingInvalid StatusInvalid Value ( %d ) Invalid aperture settingInvalid beep mode settingInvalid capture size class settingInvalid exposure compensation settingInvalid flash mode settingInvalid focus mode settingInvalid image format settingInvalid shooting mode settingInvalid shutter speed settingIris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JD11 ConfigurationJPEGJPEG BasicJPEG Compression PolicyJPEG FineJPEG NormJPEG NormalJapaneseKeep filename on uploadKids and petsKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BacklightLCD Backlight and Info DisplayLCD BrightnessLCD IlluminationLCD ModeLCD Off TimeLED ModeLG GSM generic driver Guillaume Bedot LandscapeLanguageLargan driver Hubert Figuiere LargeLarge Fine JPEGLarge Normal JPEGLeftLens Cover PresentLens Focal Length (Non CPU)Lens IDLens Maximum Aperture (Non CPU)Lens ModeLens NameLens SortLens TypeLens direction does not match flash light Lens is not connected LightLight MeterLight on darkLight too dark.List Wifi profilesList all filesListing files in '%s'...Listing folders in '%s'...Lithium IonLive View AF AreaLive View AF FocusLive View AF ModeLive View Drive ModeLive View Image Zoom RatioLive View ModeLive View Prohibit ConditionLive View StatusLoading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!LockLogitech Clicksmart 310 driver Theodore Kilgore Long Exp Noise ReductionLong Exposure Noise ReductionLong shutterLooking for camera ...Looks like a modem, not a cameraLosslessLossyLowLow (576 x 436)Low (best quality)Low 2Low LightLow Speed SynchronizationLow contrastLow keyLow sensitivityLow sharpeningLow-Speed ShutterLow-speed shutter function not availableLower case letters in %s not allowed.MM-DEPM3U PlaylistM4AMF (fixed)MF (selection)MHT Compiled HTML DocumentMM/DD/YYYYMPL PlaylistMTR > UnderM_DEPMacroManagedManualManual 2Manual FocusManual Mode BracketingManual Movie SettingManual Set Lens NumberManual focusManufacturer: %s Mars MR97310 camera library Theodore Kilgore Mars MR97310 camera. There is %i photo in it. Mars MR97310 camera. There are %i photos in it. MatrixMatrix meteringMatthew G. Martin Based on fujiplay by Thierry Bousch Max. Aperture at Max. Focal LengthMax. Aperture at Min. Focal LengthMax. Focal LengthMaximalMaximum Aperture at Focal Length MaximumMaximum Aperture at Focal Length MinimumMaximum ShotsMaximum continuous releaseMaximum number of Images: %d Media CardMedia Card GroupMedia CastMediumMedium (1152 x 872)Medium (better quality)Medium 1Medium 2Medium 3Medium Fine JPEGMedium HighMedium LowMedium Normal JPEGMedium highMedium sensitivityMemory Left: %i bytes Memory cardMemory card status (%d): %s Memory in camera: %d Mbit. Menu Bank Name AMenu Bank Name BMenu Bank Name CMenu Bank Name DMenus and PlaybackMetadata only supported for MTP devices.Meter Off TimeMetering ModeMf Drive Step EndMf Drive Step InsufficiencyMicrophoneMicrophone offMicrosoft Excel Spreadsheet (.xls)Microsoft Powerpoint (.ppt)Microsoft Word DocumentMin. Focal LengthMiniature effectMinimalMinimum Shutter SpeedMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Mirror UpMirror Up SequenceMisc exposure/lens settingsMissing NumberMl Spot PositionMlSpotPosAfLinkMlSpotPosCenterModel IDModel: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Model: %s Capacity: %i Mb Power: %s Auto Off Time: %i min Mode: %s Images: %i/%i Date display: %s Date and Time: %s Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s Modeling FlashModelling FlashModerateMonitorMonitor Off DelayMonochromeMonth/Day/YearMove objectMovieMovie CaptureMovie Card SlotMovie F-NumberMovie High ISO Noise ReductionMovie ISO SpeedMovie MicrophoneMovie QualityMovie ResolutionMovie Screen SizeMovie Shutter Speed 2Movie SoundMovie VoiceMulti Frame Noise ReductionMulti SpotMulti spotMulti-Spot MeteringMulti-spotMultiple Focusing Points (Center)Multiple Focusing Points (Left)Multiple Focusing Points (No Specification), ManualMultiple Focusing Points (Right)Multiple Focusing Points, AutoMultiselectorMup Mirror upMustek MDC-800 gPhoto2 Library Henning Zabel Ported to gphoto2 by Marcus Meissner Supports Serial and USB Protocols.MyColorsNEF (Raw)NEF+BasicNEF+FineNEF+NormalNIKON Auto Bracketing SetNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName '%s' (%li characters) too long, maximum 30 characters are allowed.Name PrefixName to set on card when formatting.Near %dNear 1Near 2Near 3Network maskNeutralNextNickel cadmiumNickel hydrideNight LandscapeNight PortraitNight SceneNight ViewNight VisionNight landscapeNight sceneNight snapshotNikon Capture 1Nikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. Nikon Exposure TimeNikon Flash ModeNikon ViewfinderNikon autofocus drive did not focus.Nikon changeafarea works only in LiveView mode.Nikon disable liveview failedNikon enable liveview failedNikon manual focus at limit.Nikon manual focus stepping too small.Nikon manual focus works only in LiveView mode.NoNo CF Card ReleaseNo Compact Flash Card detected No Dual IrisNo EXIF data available for %s.No File Deletion, No File Upload No FlashNo Open Capture, No Power LightNo Resolution SwitchNo SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card in camera. No card present.No memory card presentNo reason availableNo response from cameraNo space available to capture new images. You must delete some images.No space left on card.No vendor specific capture NoneNone selectedNormalNormal Normal AF OnNormal-area AFNot FullNot enough free spaceNot enough memory available on the memory cardNot in LiveviewNot in fill modeNot readyNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOS error in camera communicationOffOfficeOlympus 750 Ultra Zoom: (1) Olympus 750UZ has a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both the 'OK' and 'quickview' buttons until the camera control menu appears. Set it to control mode. (2) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Olympus E XML Capture Olympus wrapped XML support is currently only available with libxml2 support built in.OnOn (image review excluded)On + Red Eye SuppressionOn screen tipsOn, red-eye reductionOne ShotOne-push AutomaticOnly root folder is supported - you requested a file listing for folder '%s'.Open Capture, Open Media SessionOpen sessionOperation ModeOperation RefusedOperation cancelledOptimal qualityOptimize ImageOrientationOtherOther PTP Device PropertiesOther SettingsOther command executing.Out of FocusOut of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner NameOwner name changedPPALPCPLS PlaylistPTP Access DeniedPTP Cancel RequestPTP Capture Already TerminatedPTP Data ExpectedPTP Device BusyPTP Device Prop Not SupportedPTP General ErrorPTP I/O ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Property 0x%04xPTP Response ExpectedPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Standard Version: %d.%d PTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP TimeoutPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePTP VersionPTP2 driver (c) 2001-2005 by Mariusz Woloszyn . (c) 2003-%d by Marcus Meissner . This driver supports cameras that support PTP or PictBridge(tm), and Media Players that support the Media Transfer Protocol (MTP). Enjoy!Packet was rejected by camera. Please contact %s.Pan FocusPanFocusPanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic DC1580 gPhoto2 library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic introduced image capturing technology called PHOTOSHOT for the first time, in this series of Palmcorders. Images are stored in JPEG format on an internal flashcard and can be transferred to a computer through the built-in serial port. Images are saved in one of two resolutions; NORMAL is 320x240 and FINE is 640x480. The CCD device which captures the images from the lens is only 300K and thus produces only low quality pictures.Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk PanoramaParameter 1Parameter 2Parameter 3Parameter SetParsing the value of widget '%s' / 0x%04x failed with %d.PartialPartial MeteringParty/IndoorPath not absolutePerceived Device TypePersistent SettingsPet PortraitPhoto EffectPhoto Info. PlaybackPhoto in moviePhotos on camera: %d Picture EffectPicture Frame ConfigurationPicture SettingsPicture StylePicturesPictures in camera: %d PlayPlay modePlaybackPlayback Container IndexPlayback ObjectPlayback PositionPlayback RatePlaysForSure IDPort speedPortraitPowerPower DownPower SavingPower WindPower down devicePre-Capture DelayPresetPreset Custom 1Preset Custom 2Preset Custom 3Preset Custom 4Preset Custom 5Press 1Press 2Press 3Press FullPress HalfPreviewPreview ButtonPreview Button 2Preview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProcess WFC ObjectProduct ID: %02x%02x Profile nameProhibit Flash QualityQuick ResponseQuick Response RemoteQuick Review TimeQuiet ReleaseRAWRAW + JPEG BasicRAW + JPEG FineRAW + JPEG NormalRAW + Large Fine JPEGRAW + Large Normal JPEGRAW + Medium Fine JPEGRAW + Medium Normal JPEGRAW + Small Fine JPEGRAW + Small Normal JPEGRAW 2RAW+JPEGRGB GainRTC Status: %d Raw Bit ModeRaw CompressionRead Only with Object deletionRead-OnlyRead-WriteRead-only file attributes like width and height can not be changed.ReadyRear Curtain SyncRear Curtain Sync + Slow SyncRear-curtain syncRear-curtain with slow syncReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRecording DestinationRecording MediaRedRed Eye SuppressionRed eye flashRed-eye ReductionRed-eye Reduction + Slow SyncRed-eye automaticRed-eye fillRed-eye fill flashRed-eye reductionRed-eye reduction with slow syncReleaseRelease + FocusRelease 1Release 2Release 3Release FullRelease HalfRelease ModeRelease without CF cardRemoteRemote API VersionRemote Mirror UpRemote ModeRemote TimeoutRemovable RAM (memory card)Removable ROMRepeatingReport Acquired ItemsReport Added/Deleted ItemsRequested information about picture %i (= 0x%x), but got information about picture %i backReset Bank 0Reset Menu BankReset deviceReset device property valueReset focus point to centerResetting protocol...ResolutionResolution SwitchResolution plus SizeReverse Command DialReverse IndicatorsRevocation InfoRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. RightRotation AngleRotation FlagRotation SceneSD Card ID: %s SD memory: %d MB total, %d MB free. SDRAMSDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d SDRamST2205 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.ST2205 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Samsung PlaylistSaturationSceneScene ModeSectionSecure TimeSelect ColorSelective colorSelf TimeSelf TimerSelf Timer (next picture only)Self Timer DelaySelf Timer Shot NumberSelf Timer TimeSelf test deviceSelf-timerSelftimer 10sSelftimer 2sSelftimer DelaySend Partial ObjectSend Proximity ResponseSend Registration RequestSend WMDRM-ND License RequestSend WMDRM-PD Application RequestSend WMDRM-PD CommandSend WMDRM-PD RequestSend meter challenge querySend objectSend object infoSend object property listSending data...SensitivitySensor ID: %d.%d SepiaSequence 9Serial NumberSerial Number: %s Session Initiator InfoSession-persistent SettingsSet Current Time PositionSet Nikon Autofocus areaSet Nikon Control ModeSet Property Not SupportedSet clock in cameraSet device property valueSet license responseSet object property listSet object property valueSet object protectionSet object referencesSetting 4Setting 5Setting 6Setting 7ShadeShadowShady White Balance BiasShall the camera beep when taking a picture?SharpSharpeningSharperSharpnessShooting BankShooting Bank Name AShooting Bank Name BShooting Bank Name CShooting Bank Name DShooting ModeShooting SpeedShooting modeShooting mode changedShot SettingsShutdownShutter CounterShutter SpeedShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed 2Shutter Speed BulbShutter Speed microseconds (0 auto)Shutter speedShutter speed changedShutter/AF-ONSiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SilhouetteSingleSingle AreaSingle ShotSingle frameSingle silentSingle-Frame ShootingSingle-Servo AFSingle-area AFSingle-servo AFSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Size PrioritySize Quality ModeSize of Input Data to CameraSize of Output Data from CameraSkip to next position in playlistSkylightSlide Show IntervalSlot 2 Save ModeSlowSlow Shutter SettingSlow SyncSlow shutterSlow syncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SmallSmall Fine JPEGSmall Normal JPEGSmoothSmoothingSnowSoftSofterSoftware Rev.: %s Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to the gphoto developer mailing list (in English) Some notes about Olympus cameras (and others?): (1) Camera Configuration: A value of 0 will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch to this mode, turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you cannot use the camera's buttons. If you end up in this state, you should reconnect the camera to the PC and switch LCD to 'Off'.Some notes about Olympus cameras: (1) Camera Configuration: A zero value will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Sonix camera library Theodore Kilgore Sonix camera. There is %i photo in it. Sonix camera. There are %i photos in it. Sony CaptureSony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners Sorry, initializing your camera did not work. Please report this.Sorry, the property '%s' / 0x%04x is currently ready-only.Sorry, your Canon camera does not support Canon Capture initiationSorry, your Canon camera does not support Canon EOS CaptureSorry, your Canon camera does not support Canon Viewfinder modeSorry, your Canon camera does not support Canon captureSorry, your Nikon camera does not seem to return a JPEG image in LiveView modeSorry, your Nikon camera does not support LiveView modeSorry, your camera does not support Nikon captureSorry, your camera does not support generic captureSoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSportsSports ActionSpotSpot MeteringSpot Metering Interlocked with AF FrameSpot Metering ModeSpot meteringSpot metering interlocked with AF frameSpot-AFStandardStandard Development ParametersStart movie recordingStartupStartup and ShutdownStep #2 of initialization failed! (returned %i bytes, expected %i). Camera not operationalStep #2 of initialization failed: ("%s" on read of %i). Camera not operationalStep #3 of initialization failed! (returned %i, expected %i). Camera not operationalStep #3 of initialization failed: "%s" on read of %i. Camera not operationalStep #3 of initialization failed: "%s" on write of %i. Camera not operationalStep #4 failed (returned %i, expected %i). Camera not operationalStep #4 failed: "%s" on read of %i. Camera not operationalStill Capture ModeStill ImageStrobe error.Subject-tracking AFSummary for Mustek MDC800: SunsetSuper macroSuperFineSuperior AutoSupported MTP Object Properties: Supported Thumb SizeSweep PanoramaSwitching Camera OffSynchronization PartnerSynchronize camera date and time with PCSynchronize frame data and time with PCSystem error.TFTTFT + PCTIFF (RGB)TTLTVTV Lock SettingTV Output FormatTarget value is not in enumeration.Tele-zoom Cont. Priority AETerminate open captureTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera could not be contacted. Please make sure it is connected to the computer and turned on.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support getting storage informationThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The property '%s' / 0x%04x was not set (0x%04x: %s)The property '%s' / 0x%04x was not set (0x%04x: %s).The requested port type (%i) is not supported by this driver.There are still files in folder '%s/%s' that you are trying to remove.There are still subfolders in folder '%s/%s' that you are trying to remove.There are two resolution settings, 352x288 and 176x144. Photo data is in JPEG format when downloaded and thus has no predetermined size. Therefore, the advertised maximum number of photos the camera can hold must be understood as an approximation. All gphoto2 options will work, except for the following which the hardware will not support: Deletion of individual or selected photos (gphoto2 -d) Capture (gphoto2 --capture or --capture-image) However, capture is possible using the webcam interface, supported by the spca50x kernel module. GUI access using gtkam has been tested, and works. However, the camera does not produce separate thumbnails. Since the images are in any event already small and of low resolution, the driver merely downloads the actual images to use as thumbnails. The camera can shoot in 'video clip' mode. The resulting frames are saved here as a succession of still photos. The user can animate them using (for example) ImageMagick's 'animate' function. For more details on the camera's functions, please consult libgphoto2/camlibs/clicksmart310/README.clicksmart310. There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.There is space for another %d low compressed %d medium compressed or %d high compressed pictures This camera can not capture previews.This camera can not capture.This camera can not trigger capture.This camera contains a Jeilin JL2005%c chipset. The number of photos in it is %i. This camera contains a Jeilin JL2005A chipset. The number of photos in it is %i. This camera does not provide a manual.This camera does not provide any configuration options.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This driver supports cameras with Jeilin JL2005B or C or D chip These cameras do not support deletion of photos, nor uploading of data. If present on the camera, video clip frames are downloaded as consecutive still photos. For more details please consult libgphoto2/camlibs/README.jl2005c This driver supports cameras with Jeilin jl2005a chip These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README.jl2005a This driver supports cameras with Mars MR97310 chip (and direct equivalents ??Pixart PACx07??). These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. Photo data processing for Argus QuickClix is NOT SUPPORTED. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README. This driver supports some cameras that use the Sonix sn9c2028 chip. The following operations are supported: - thumbnails for a GUI frontend - full images in PPM format - delete all images - delete last image (not all of the Sonix cameras can do this) - image capture to camera ( ditto ) If present on the camera, video clip frames are downloaded as consecutive still photos or as AVI files, depending on the model. Thumbnails for AVIs are still photos made from the first frame. A single image cannot be deleted unless it is the last one. This is the driver for Canon PowerShot, Digital IXUS, IXY Digital, and EOS Digital cameras in their native (sometimes called "normal") mode. It also supports a small number of Canon digital camcorders with still image capability. It includes code for communicating over a serial port or USB connection, but not (yet) over IEEE 1394 (Firewire). It is designed to work with over 70 models as old as the PowerShot A5 and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of 2005. It has not been verified against the EOS 1D or EOS 1Ds. For the A50, using 115200 bps may effectively be slower than using 57600 If you experience a lot of serial transmission errors, try to have your computer as idle as possible (i.e. no disk activity) This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.This preview doesn't exist.ThumbnailThumbnail height: %d Thumbnail size: %d Thumbnail width: %d Tilt-ShiftTime formatTime: %a, %d %b %Y %T TimelapseTimelapse IntervalTimelapse NumberTimeout even after 2 retries. Please contact %s.TimerTimer (Single) ShootingTimer + RemoteTimer 10 secTimer 2 secTone CompensationToo brightToo darkToo many retries failed.TopTopfield TF5000PVR Marcus Meissner Library to download / upload files from a Topfield PVR. Ported from puppy (c) Peter Urbanec Toshiba David Hogue Toshiba pdr-m11 driver. Total flashes fired: %d Total pictures captured: %d, Flashes fired: %d Total pictures taken: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Truncate ObjectTrying to contact camera...Tune Colour TemperatureTune Preset 0Tune Preset 1Tune Preset 2Tune Preset 3Tune Preset 4TungstenTungsten White Balance BiasTurbo modeTvType of SlideshowU1U2UI LanguageUI LockUILockTypeUNIX TimeUSB 1.1USB 2.0USB SpeedUnassignedUndefinedUndefined AudioUndefined Calendar ItemUndefined CollectionUndefined ContactUndefined DocumentUndefined MessageUndefined PTP PropertyUndefined VideoUndefined Windows ExecutableUnder > MTRUnderwaterUnknownUnknown %dUnknown CommandUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown flash mode %d, Unknown modelUnknown model "%s"Unknown valueUnknown value %04dUnknown value %04xUnknown value 0x%04xUnknown zoom mode %d Unknown(%04x)Unknown: 0x%04x Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. UnusedUpdate device firmwareUpload URLUpload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...Upper 1Upper 2User canceled downloadUser defined 1User defined 2User defined 3Vendor ExtensionVendor Extension Description: %s Vendor Extension ID: 0x%x (%d.%d) Vendor ID: %02x%02x Version: Version: %s Vertical AF OnVideo ModeVideo OUTVideo OutViewfinder GridViewfinder Grid DisplayViewfinder virtual horizontVignette ControlVividVolatile SettingsVolume LevelWB bracketingWEP 128-bitWEP 64-bitWIFI ESSIDWIFI channelWIFI profilesWLAN GUIDWPL PlaylistWaiting for completion...Waiting...Warning DisplayWarning Level 0Warning Level 1Warning StatusWarning in canon_usb_set_file_attributes: canon_usb_dialogue returned error status 0x%08x from cameraWaterWe expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite Balance Bias Preset 0White Balance Bias Preset 1White Balance Bias Preset 2White Balance Bias Preset 3White Balance Bias Preset 4White Balance Bias Preset NrWhite Balance Bracket ProgramWhite Balance Bracket StepWhite Balance Colour TemperatureWhite Balance Preset Name 0White Balance Preset Name 1White Balance Preset Name 2White Balance Preset Name 3White Balance Preset Name 4White Balance Preset NumberWhite Balance Preset Value 0White Balance Preset Value 1White Balance Preset Value 2White Balance Preset Value 3White Balance Preset Value 4White BoardWhite balanceWhite boardWhite levelWhiteBalanceWhiteBalance Adjust AWhiteBalance Adjust BWhiteBalance X AWhiteBalance X BWhitebalance Reset ErrorWideWide-area AFWindows Image FormatWireless SyncWriteWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.XMLDocumentYYYY/MM/DDYear/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.You have to set the port prior to initialization of the camera.You must be in record mode to capture images.You need to specify a folder starting with /store_xxxxxxxxx/Your Logitech Clicksmart 310 has %i picture in it. Your Logitech Clicksmart 310 has %i pictures in it. Your USB camera has a S&Q chipset. The total number of pictures taken is %i Some of these could be clips containing several frames Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i Your USB camera is an iClick 5X. The total number of pictures taken is %i Your USB camera seems to be a LG GSM. Firmware: %s Firmware Version: %s Your USB picture frame has a AX203 chipset Your USB picture frame has a ST2205 chipset Your camera only supports deleting the last file on the camera. In this case, this is file '%s'.Zone Focus (Close)Zone Focus (Close-up)Zone Focus (Far)Zone Focus (Medium)Zone Focus (Reserved 1)Zone Focus (Reserved 2)Zone Focus (Reserved 3)Zone Focus (Reserved 4)Zone Focus (Very Close)ZoomZoom (in millimeters)Zoom level changedZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autoauto + red eye suppressionbatteryblack & whitebulbcamera inactive for > 9 seconds, re-initing. cannot be queried. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_int_capture_image: initial canon_usb_list_all_dirs() failed with status %licanon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: Reached end of packet while examining the first direntcanon_int_list_directory: truncated directory entry encounteredcanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Initial dirent packet too short (only %i bytes)canon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_body_id: Unexpected data length returned (%i bytes, expected %i)canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)canon_usb_lock_keys: Unexpected length returned from "lock keys" function (%i bytes, expected %i)canon_usb_set_file_attributes: canon_usb_dialogue failedcanon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)colorcoolshot library vcould not change owner namecould not set timeeconomyexternallyfill infinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)high compression, hp215 Marcus Meissner Driver to access the HP Photosmart 215 camera. Merged from the standalone hp215 program. This driver allows download of images and previews, and deletion of images. iClick 5X driver Theodore Kilgore iTTLin fill modeinfiniteinternallyjamcam library vjl2005a camera library Theodore Kilgore jl2005bcd camera library Theodore Kilgore lock keys failed.losslesslow (320x240)low compression, mRAWmRAW + Large Fine JPEGmRAW + Large Normal JPEGmRAW + Medium Fine JPEGmRAW + Medium Normal JPEGmRAW + Small Fine JPEGmRAW + Small Normal JPEGmedium compression, menuno status reported.nonenormalnot available: %soffonon + red eye suppressionon batterypccam600 init: Unexpected error: gp_port_read returned %d instead of %dpccam600_close: return value was %d instead of %dpccam600_get_file:got index %d but expected index > %dpccam600_init: Expected %d blocks got %dpccam600_init: Expected > %d blocks got %dplaypower OKpower badread onlyreadwritereadyrecordrecursive calls are not supported by the sierra driver! Please contact %s.red eye flash off. red eye flash on. red eye suppressionsRAWsRAW + Large Fine JPEGsRAW + Large Normal JPEGsRAW + Medium Fine JPEGsRAW + Medium Normal JPEGsRAW + Small Fine JPEGsRAW + Small Normal JPEGsRGBsRGB (nature)sRGB (portrait)sierra SPARClite library Scott Fritzinger Support for sierra-based digital cameras including Olympus, Nikon, Epson, and Pentax. Thanks to Data Engines (www.dataengines.com) for the use of their Olympus C-3030Z for USB support implementation.spca50x library vsq905 generic driver Theodore Kilgore sq905C generic driver Theodore Kilgore standardsuperfinesx330z is USB onlytime setunable to guess initial CRC value undefinedunexpected datatype %iunknown (0x%02x)unknown compression %d, unknown resolution %d) vCalendar1vCalendar2vCard2vCard3warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2 2.5.8 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2015-07-13 07:46+0700 Last-Translator: Trần Ngá»c Quân Language-Team: Vietnamese Language: vi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Language-Team-Website: X-Generator: Gtranslator 2.91.7 X-Poedit-SourceCharset: UTF-8 Khả năng truy cập: %s Há»— trợ WIFI Canon Tải vá» tập tin, Kiểu hệ thống tập tin: %s Chá»— trống (byte): %llu (%lu MB) Chá»— trống (ảnh): %d Chụp ảnh chung, Khả năng tối Ä‘a: %llu (%lu MB) Há»— trợ WIFI Nikon Không ảnh chụp, Kiểu Bá»™ nhá»›: %s Mô tả bá»™ nhá»›: %s Nhãn khối tin: %s Äịnh danh máy ảnh: Mô hình: %s Chá»§ sở hữu: %s Trạng thái nguồn Ä‘iện: %s Thông tin vỠđĩa Flash: %s Thá»i gian: %s Äịnh dạng chụp: Khả năng thiết bị: Tóm tắt thuá»™c tính thiết bị: Tóm tắt các thiết bị chứa: á»” đĩa %s %11s byte tổng %11s byte sẵn còn có thể sá»­ dụng Số sản xuất: %s Phiên bản: %s (pin còn %d%%) PTP: lá»—i %04x khi truy vấn Tổng bá»™ nhá»›: %8d byte Bá»™ nhá»› còn trống: %8d byte Tổng số tập tin: %d lá»—i %x khi truy vấn. không Ä‘á»c ra. %.0f mm%.1f bước%0.4fs%d %d/%d%d giảm nhiá»…u Ä‘a Khung%d mm%d/%d%f%i (không rõ)Nhận được %i byte theo định dạng ảnh không rõ. Hãy gá»­i thư cho %s để yêu cầu sá»± giúp đỡ.Không thể xóa %i ảnh vì chúng bị bảo vệ.%lld (không rõ)%s (thá»i gian máy chá»§ %s%i giây)Nút cá»­a chá»›p %sCanon EOSChụp %sNikon 2Chụp %sNikon 3Thư viện (Traveler) SX330z (và các máy ảnh kiểu Aldi khác). CÅ©ng nên hoạt động được vá»›i máy ảnh khác như Jenoptik, Skanhex và Maginon. Má»i bạn gá»­i báo cáo lá»—i và ghi chú. Dominik Kuhlen * Lá»—i ảnh hay lá»—i liên lạc thưá»ng do pin yếu gây ra. * Ảnh được chụp từ xa trên máy ảnh này được cất giữ trong bá»™ nhá»› RAM tạm thá»i, không phải trên thẻ nhá»› cá»±c nhanh. * Sá»± Ä‘iá»u khiển phÆ¡i sáng khi chụp ảnh có thể được cấu hình bằng tay, hay đặt thành chế độ tá»± động. * Chất lượng ảnh hiện tại dưới mức độ có thể. *KHÔNG HIỂU*+NEF (THÔ)-0,5-1,0-1,5-2,00.00,1 m0,50,5 m11 (Ngắn)1 EV1 fps1 phút1 phút1 bước tốc độ/khẩu độ1.01,3gy1.51,6gy1.6×1/1,3gy1/1,6gy1/1000gy1/100gy1/10gy1/1250gy1/125gy1/13gy1/151/15gy1/1600gy1/160gy1/21/2,5gy1/2000gy1/200gy1/20gy1/2500gy1/250gy1/250s (FP Tá»± động)1/25gy1/2gy1/301/30gy1/3200gy1/320gy1/320s (FP Tá»± động)1/3gy1/41/4000gy1/400gy1/40gy1/4gy1/5000gy1/500gy1/50gy1/5gy1/601/60gy1/6400gy1/640gy1/6gy1/81/8000gy1/800gy1/80gy1/8gy10 fps10 phút10 phút10 mm10 giây100%10gy11 fps1152 × 86412 mm1280 × 96013gy1515 phút15 phút15gy16 giây16:91gy1x22 EV2 fps2 giây2.02,0 m2,5gy2.5×20 giây20gy21 points25%25gy29 mm2gy2×3 (Bình thưá»ng)3 EV3 fps3030 phút30 giây30gy34 mm3:2Theo dõi 3D3gy3×44 fps4 giây41 mm4gy4×5 (Dài)5 fps5 phút5 phút5 giây50 Hz50%51 mm51 points51 points (3D)58 mm5gy5×6 fps6 mm6 giây60 Hz640 × 4806gy6×7 fps75%7×88 fps8 mm8 giây8gy8×9 fps9 points9×A-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)Bá»™ lá»c ABÄIện chínhÄiện chínhBá»™ chuyển đổi nguồn Ä‘iện xoay chiá»uBá»™ tiếp hợp Ä‘iện chính đã kết nối. Chưa cắm bá»™ nguồn chuyển đổi Ä‘iện xoay chiá»u. Bá»§a vây ADLAE và nháy đènKhóa AEChỉ khóa AEKhóa AE(Giữ) khóa AEKhóa AE (Khởi động sau bấm máy)(Giữ) khóa AEChỉ khóa AEChỉ AEChế độ AE-L/AF-LKhóa AEKhóa AE/AFKhóa AE/AFNút khóa AEAF 2Sá»± bù phÆ¡i sáng AEBKích hoạt AFChiếu sáng vùng AFÄiểm vùng AFÄèn giúp AFChế độ bíp AFKhoảng cách AFAF LCD Chế độ đầu 2Giữ khóa AEBật khóa AFChỉ khóa AFChỉ khóa AFKhóa AFChế độ AFAF bậtNút bật AFChỉ khóa AFAF-AAF-CƯu tiên chế độ AF-CBật-AFAF-SƯu tiên chế độ AF-SAF11AF51Lấy nét AIÄá»™ng cÆ¡ Se-vô AIBản sá»­a đổi ASIC: %d.%d Danh mục nhạc ASXTá»°_ÄỘNGAVCài đặt khóa AVAV đạiAV mởTrình Ä‘iá»u khiển khung ảnh USB AX203 Hans de Goede Trình Ä‘iá»u khiển này cho phép bạn tải vá», tải lên và xóa bỠảnh từ khung ảnh.Khung ảnh dá»±a vào AX203 có sẵn vài bá»™ phân giải khác nhau. Trình Ä‘iá»u khiển gphoto dành cho thiết bị này cho phép bạn tải vá», tải lên và xóa bỠảnh từ khung ảnh.A_DEPThông tin vá» máy ảnh Konica Q-M150: Máy ảnh này không cho phép thay đổi bên ngoài. Vì vậy, trong cấu hình bạn chỉ thấy những giá trị được đặt trên máy ảnh: không thể sá»­a đổi gì. Gặp khó khăn trong việc sá»­ dụng trình Ä‘iá»u khiển này thì xin hãy gá»­i thư cho tác giả. Tập nhạc AbstractDanh mục nhạc AbstractDanh mục ảnh/nhạc AbstractMục lịch AbstractSá»± Trình Bày Tập AbstractLiên lạc AbstractNhóm liên lạc AbstractTài liệu AbstractTập ảnh AbstractAbstract MediacastTin nhắn AbstractThư mục tin nhắn AbstractTập ảnh/nhạc AbstractTập phim AbstractDanh mục ảnh AbstractChế độ truy cậpTruy cập mục cao nhất cá»§a TRÃŒNH ÄÆ N CỦA TÔIHành độngMáy nhạy AF hoạt độngKích hoạt D-LightingKích hoạt mục Ä‘iá»u khiển ảnhNhư thếAdc65 Benjamin Moos AdobeRGBViệc truyá»n cấp cao bị há»§y bá»Tên tập ảnhKiá»m MnGặp lá»—i trong thư viện V/R (â€%sâ€): %sGặp lá»—i không rõ. Hãy liên lạc vá»›i %s.Mức GócChống mắt Ä‘á»Tô đầy chống mắt Ä‘á»Bất cứ nÆ¡i nàoTrình Ä‘iá»u khiển chung Aox Theodore Kilgore Khẩu độGiá trị độ mởCài đặt độ mởÄá»™ mở bị thay đổiChế độ ứng dụngChế độ ứng dụng 0Chế độ ứng dụng 1Nghệ sÄ©Tên nghệ sÄ©Tá»· lệ hình thểGán nút chức năngGán nút chức năngGán Nút Xem thá»­Giúp ánh sángAudible.com CodecTá»± độngTá»± động, giảm mắt Ä‘á»Tá»± động đặt độ mởTá»± động Chá»n Bá»§a vâyTá»± động xén DXTá»± động Ä‘iá»u chỉnh méoSố lượng PhÆ¡i sáng Bá»§a vây Tá»± độngPhÆ¡i sáng Bá»§a vây Tá»± độngTá»± động FPVùng tá»± động lấy nétChế độ lấy nét tá»± động 2Tá»± động ISOGiảm nhiá»…u Ä‘a Khung ISO tá»± độngCài đặt ISO P/A/DVP tá»± động Thá»i gian tá»± động tắt cái Ä‘oTá»± động tắt (trưá»ng) theo giâyTá»± động tắt (máy chá»§) theo giâyTá»± động tắt thông tinTá»± động tắt trình đơnTá»± động tắt ảnh chụpGiá» tá»± động tắtGiá» tá»± động tắtTá»± động tắt Ä‘iệnTá»± động tắt Ä‘iện (phút)Tá»± động đồng bá»™ chậmKhuynh hướng tá»± động cân bằng trắngKhóa tá»± động phÆ¡i sángTá»± động lấy nét: lấy nét AITá»± động lấy nét: động cÆ¡ servo AITá»± động lấy nét: chụp má»™tÄá»™ nhạy tá»± độngTá»± động, giảm mặt Ä‘á»Chế độ tá»± động lấy nétLá»—i lấy nét tá»± động.Tá»± độngTá»± động Tá»± động (không nháy đèn)Tá»± động nháy đènMacro tá»± độngVÄ© lệnh tá»± động (gần)Tá»± động giảm mắt Ä‘á»Tá»± động Ä‘iá»u chỉnh phÆ¡i sáng khi xem thá»­Tá»± động nháy đènTá»± động nháy đèn khi chụpMàu sắc mùa thuAvAV tối Ä‘aAv Max ApexAV mởAv Open ApexLần chụp có sẵnBá»™ nhá»› còn lại: Trung bìnhCỡ tập tin trung bìnhÄo trung bìnhÄen/trắngÄTrTương phản ÄenTrắngHiệu ứng trám đầy ÄenTrắngLoại Cài đặt ÄenTrắngÄá»™ sắc ÄenTrắngÃnh sáng sauEOT saiKý tá»± sai (0x%x, 0x%x). Hãy liên lạc vá»›i %s.Sai tổng kiểm: nhận 0x%02x, cần 0x%02x.Dữ liệu sai: nhận 0x%02x, cần 0x%02x hay 0x%02x.Dữ liệu sai: nhận 0x%02x, cần 0x%02x.PhÆ¡i sáng sai (rất có thể không đủ ánh sáng)Giá trị sai đối vá»›i trạng thái thẻ nhá»› %dGiá trị sai đối vá»›i trạng thái ống kính %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Thiết kế đối chiếu dữ liệu ảnh: Jeff Laing Thá»±c hiện dùng các tài liệu trên Web. Vision cho phép.Pin yếu.Pin OK.PinLoại bá»™ pinCấp pinMức pin: %s Số ảnh: %d Chá»— còn trống ít nhất: %d Bận: %s Äèn nháy Ä‘ang sạc: %s Trạng thái ống kính: Thá»i gian pin: %i Pin yếuChế độ pinKiểu pinHết pin hoàn toàn nên máy ảnh bị tắt.Mức pin: %.1f Vôn. Bản sá»­a đổi: %08x.Tình trạng pin: %s, Bá»™ sạc Ä‘iện: %s BiểnBãi biển/TuyếtBípChế độ bípChế độ bíp bị thay đổiTắt bípBật bípBắt đầu Sá»­a Äối tượngTốt nhấtKhông há»— trợ tốc độ bit %ld.Äen trắngÄen trắngBảng Ä‘enÄen trắngBảng Ä‘enÄen/TrắngChá»›pHoaXanhDướiChế độ Bá»§a vâyThứ tá»± Bá»§a vâyÄặt Bá»§a vâyBá»§a vâyChụp bá»§a vây C Bước 0.3Chụp bá»§a vây C Bước 0.7Chụp bá»§a vây C Bước 1.0Chụp bá»§a vây C Bước 2.0Chụp bá»§a vây C Bước 3.0Bật Bá»§a vâyKhung bá»§a vây và BướcChụp bá»§a vây S Bước 0.3Chụp bá»§a vây S Bước 0.7Chụp bá»§a vây S Bước 1.0Chụp bá»§a vây S Bước 2.0Chụp bá»§a vây S Bước 3.0Cân Bằng Trắng Bá»§a vây CaoCân Bằng Trắng Bá»§a vây ThấpChá»›p sáng ở các mức sáng khác nhauSáng+Sáng-Äá»™ sángÄá»™ sáng+Äá»™ sáng-Äá»™ tương phản/sángRAM có sẵnROM có sẵnBóng đèn dây tócThá»i gian phÆ¡i sáng bóng đènChế độ BóngLoạtKhoảng cách loạtSố loạtBậnNút và Há»™p thoạiSố CCDSố Sê-ri CCDCHDKNgôn ngữ kịch bản CHDKCHDK đã không từ bá» chế độ ghi.CRWTrình đơn CSMMáy ảnhHành vi Máy ảnhMã hiệu thân máy ảnhCấu hình máy ảnhNgày và Giá» máy ảnhMã hiệu máy ảnh: %s Thư viện máy ảnh cho máy ảnh Kodak DC215 Zoom. Michael Koltan Nhà sản xuất máy ảnhChế độ máy ảnhChế độ máy ảnh không Ä‘iá»u chỉnh Số FMô hình Máy ảnhMô hình máy ảnh: %s Máy ảnh chưa sẵn sàngMáy ảnh Tốt.Hướng máy ảnhKết xuất máy ảnhNgưá»i sở hữu máy ảnhCài đặt máy ảnhThông tin Trạng thái Máy ảnhCấu hình máy ảnh và trình Ä‘iá»u khiểnCó vẻ là máy tính không sá»­ dụng đĩa CompactFlash. Không may là phần má»m này hiện tại không há»— trợ nó tại thá»i Ä‘iểm này :-( Máy ảnh Ä‘ang bận. Cứ gặp khó khăn này thì liên lạc vá»›i %s.Máy ảnh không thể chạy xong thao tácMáy ảnh đã không chấp nhận các tham số. Hãy liên lạc vá»›i %s.Trình Ä‘iá»u khiển máy ảnh “%s†còn thiếu chức năng khởi tạo máy ảnh (camera_init).Máy ảnh có bá»™ nhá»›. Máy ảnh đã chụp %d ảnh, và Ä‘ang dùng bá»™ nhá»› CompactFlash. Máy ảnh được cấu hình cho ánh sáng nhấp nháy theo %dHz. Máy ảnh trong chế độ không đúng. Hãy liên lạc vá»›i %s.Máy ảnh chưa sẵn sàng, hàm get_battery (lấy pin) bị lá»—i: %sMáy ảnh chưa sẵn sàng, nhiá»u yêu cầu “nhận diện máy ảnh†bị lá»—i: %sMáy ảnh có ảnh đơn sắc. Tiết kiệm Ä‘iện máy ảnh (giây)Máy ảnh đã từ chối ba lần bảo tồn sá»± kết nối mở.Máy ảnh đã từ chối lệnh.Máy ảnh đã tá»± đặt lại.Máy ảnh đã gá»­i bất thưá»ng byte 0x%02x.Máy ảnh há»— trợ ảnh mẫu. Máy ảnh há»— trợ phim. Máy ảnh há»— trợ định dạng phim: Giá» máy ảnh: %s %s Máy ảnh không sẵn sàngMáy ảnh không sẵn sàng: %sMáy ảnh đã hoạt độngMáy ảnh đã được kích hoạtKhông thể chụp ảnh má»›i. Lá»—i không rõKhông thể xóa má»i ảnh.Không thể xóa ảnh %s.Không thể tải ảnh này lên máy ảnh. Gặp lá»—i.Há»§y Canon DSLR tá»± động lấy nétÃnh sáng nếnKhông thể lấy bá»™ nhá»› còn trốngKhông thể lấy khả năng pinKhông thể lấy tên cá»§a thư mục chứa các ảnhChế độ tá»± động phÆ¡i sáng CanonChụp CanonCanon Capture (chụp) gặp lá»—iChụp Canon EOSCanon EOS Capture (chụp) bị lá»—iCanon EOS gặp lá»—i khi thả: Thẻ nhá»› chỉ cho Ä‘á»c?Chụp Canon EOS gặp lá»—i khi nhả: Có thể là do gương Ä‘ang lật lên?Canon EOS Capture (Chụp) bấm máy gặp lá»—i: có thể là không có tiêu Ä‘iểm (chưa lấy được nét)?Canon EOS Capture (Chụp) không bấm máy được: có thể là không đủ bá»™ nhá»› trên thẻ nhá»›?Canon EOS Capture (Chụp) không bấm máy được: Lá»—i không rõ %d, hãy thông báo.Canon EOS Capture (chụp) bị lá»—i: %xNhấn-cả Canon EOS bị lá»—iNhả-cả Canon EOS bị lá»—iCanon EOS Get Changes (lấy các thay đổi) bị lá»—iNhấn-ná»­a Canon EOS bị lá»—iNhả-ná»­a Canon EOS bị lá»—iBấm máy Canon EOS bằng Ä‘iá»u khiển từ xaCanon EOS Trigger Capture (Chụp) gặp lá»—i: 0x%xCanon EOS kính ngắmá»ng kính thu phóng Canon EOSCanon EOS vị trí thu phóngTrình Ä‘iá»u khiển máy kiểu Canon PowerShot được tạo bởi Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, Phần bổ sung A5 bởi Ole W. Saastad Sá»± tăng cưá»ng thêm bởi Holger Klemm Stephen H. WestinChế độ chụp CanonGặp lá»—i khi tắt kính ngắm CanonGặp lá»—i khi bật kính ngắm CanonGặp lá»—i khi lấy ảnh kính ngắm ảnhChụpÄá»™ trá»… chụpCài đặt chụpLá»›p kích cỡ ChụpÄích ChụpChế độ truyá»n chụpLá»›p kích cỡ chụp bị thay đổiKhông há»— trợ kiểu chụpThẻ nhá»›Trạng thái thẻ nhá»›:Không thể ghi vào thẻ nhá»›.Chưa định dạng thẻ nhá»›Thẻ nhá»› không mởThẻ nhá»› mởThẻ nhá»› bị bảo vệ chống ghi.Tên thẻ nhá»›: %s Chá»— trống trên thẻ nhá»›: %d kB Thẻ nhá»› không được há»— trợ.Thẻ nhá»› bị gỡ bá» trong khi truy cập.Ưu tiên kiểu pinChế độ phát lại bằng nút giữaChế độ chụp bằng nút giữaTá»· lệ phóng to bằng nút giữaChấm giữaVùng nặng giữaNặng giữaTrung bình nặng giữaNặng giữaÄiểm giữaNặng giữaÄo trung bình nặng giữaÄo nặng giữaTrung bình nặng giữaÄo phần giữaGiữaVùng nặng giữaÄiểm giữaLá»—i đổi chế độ máy ảnhÄổi mục Ä‘iá»u khiển ảnhÄang thay đổi tốc độ… vui lòng đợi…Ký tá»±Ký tá»± và Âm thanhÄang sạcLá»—i tổng kiểm traTrẻ emTrẻ conChá»n nhiệt độ màuChá»n số lượng kính không-CPULau cảm biến ảnhLau cảm biếnXóa sạch kho dữ liệuÄóng buổi hợp ảnh/nhạcÄóng phiên chạyCận cảnhChá»§ thể gần nhấtCận cảnhÄầy mâyKhuynh hướng cân bằng trắng khi trá»i dầy mâyMàuKhuếch đại màuChế độ màuMô hình màuCài đặt màuMiá»n MàuNhiệt độ màuChế độ Màu hay Chức năngPhác thảo màuNhiệt độ màuKhông thể há»§y bá» lệnh này.Lá»—i thứ tá»± lệnh.CommanderLá»—i liên lạc 1Lá»—i liên lạc 2Lá»—i liên lạc 3Lá»—i giao thông ngay cả sau hai lần thá»­ lại. Hãy liên lạc vá»›i %s.Phát hiện thẻ nhá»› cá»±c nhanh gá»n (CF) Thẻ nhá»› CompactFlash (CF)Chế độ Tương thíchNénCài đặt nénCấu hìnhCấu hình cho máy ảnh FUJI cá»§a bạnÄã kết nối tá»›i máy ảnhLiên tiếpLấy nét liên tụcChụp cao tốc liên tiếpTốc độ thấp liên tụcChụp thấp tốc liên tụcChụp liên tiếpChụp cao tốc liên tiếpChụp chậm liên tụcTốc độ Cao Liên tụcTốc độ cao liên tụcTốc độ thấp liên tụcIm lặng liên tục AF phụ liên tụcTương phảnTương phản+Tương phản-Chép đối tượngTác quyá»nTác quyá»n (tối Ä‘a 20 ký tá»±)Thông tin tác quyá»nThông tin Tác quyá»nDữ liệu bị há»ngKhông thể cấp phát %i byte để tải vỠảnh.Không thể cấp phát %i byte để tải vỠảnh mẫu.Không thể áp dụng Cài đặt USBKhông thể thay đổi tốc độ ISOKhông thể thay đổi độ mởKhông thể thay đổi chế độ bípKhông thể thay đổi sá»± bù phÆ¡i sángKhông thể thay đổi chế độ đèn nháyKhông thể thay đổi chế độ lấy nétKhông thể thay đổi định dạng ảnhKhông thể thay đổi chế độ chụp ảnhKhông thể thay đổi tốc độ chậpKhông thể thay đổi giá» cá»§a tập tin “%s†trong “%s†(%s).Không thể thay đổi mức phóng toKhông thể liên lạc vá»›i máy ảnh.Không thể tạo thư mục \DCIM.Không thể tạo thư mục đích.Không thể tạo thư mục %s.Không thể tạo thư mục.Không thể xóa tập tin “%s†trong thư mục “%sâ€. (mã lá»—i %i: %s).Không thể xóa tập tin.Không dò thấy máy ảnh.Không phát hiện ra máy ảnh nào trên cổng %sKhông thể thiết lập liên lạc khởi tạo vá»›i máy ảnhKhông thể trích ảnh mẫu JPEG từ dữ liệu: dữ liệu không phải JFIFKhông thể trích ảnh mẫu JPEG từ dữ liệu: không có đầu/cuốiKhông tìm thấy tập tin “%sâ€.Không tìm thấy dữ liệu địa phương hóa ở “%sâ€Không thể lấy thông tin vỠđĩa: %sKhông thể lấy tên đĩa: %sKhông thể lấy chữ đĩa cá»±c nhanhKhông thể lấy thông tin vỠ“%s†(%s).Không thể lấy thông tin vỠ“%s†trong “%s†(%s).Không thể lấy thanh ghi %i. Hãy liên lạc vá»›i %s.Không thể lấy thanh ghi chuá»—i %i. Hãy liên lạc vá»›i %s.Không thể khởi tạo tiến trình tải lên (máy ảnh đã đáp ứng 0x%02x).Không thể nạp trình Ä‘iá»u khiển máy ảnh cần thiết “%s†(%s).Không thể mở “%sâ€.Không thể gỡ bá» thư mục %s.Không thể gỡ bá» thư mục.Không thể đặt lại máy ảnh. Không thể đặt tốc độ thành %i (máy ảnh đã đáp ứng %i).Không thể gá»­i gói tin (mã lá»—i %i). Hãy liên lạc vá»›i %s.Không thể gá»­i gói tin, ngay cả sau vài lần thá»­ lại.Không thể tải lên, không có tên thư mục còn trống. Tên thư mục 999CANON tồn tại và chứa má»™t ảnh AUT_9999.JPG.Không thể Ä‘á»c tập tin “%sâ€Tạo hồ sÆ¡ WIFINgày tạo: %s. Ngày dùng cuối: %sSáng tạoCreative PC-CAM 300 Tác giả: Till Adam và Miah Gregory Creative PC-CAM600 Tác giả: Peter Kajberg Chế độ hiện tại: chế độ máy ảnh Chế độ hiện tại: chế độ phát lại Giá» hiện tại trên máy ảnh: %04d-%02d-%02d %02d:%02d Bá»™ nhá»› trống trên vỉ mạch: %d Ảnh trên thẻ nhá»›: %d Vùng trống (ảnh): %d Mức pin: %d %%PTP hiện tại chỉ được thá»±c hiện cho các máy ảnh kiểu USB và PTP/IP, kiểu cổng %x.Tá»± chá»nTùy chỉnh chức năng mở rá»™ngCân trắng riêng PC-1Cân trắng riêng PC-2Cân trắng riêng PC-3Tùy chỉnh đĩa lệnhDD/MM/YYYYDEPPhiên bản DPOFTối trên sángDữ liệu bị há»ng.Ngày và Giá»Äịnh dạng ngàyÄịnh dạng ghi Ngày/Giá»Ngày và Giá»Ngày và giá» (GMT)Hiển thị ngàyNgày: %i/%02i/%02i %02i:%02i:%02i Ảnh đã chụp: %i Chá»— trống (ảnh): %i Phiên bản phần má»m: %s Tốc độ bốt (Baudrate): %s Bá»™ nhá»›: %i Mb Chế độ máy ảnh: %s Chất lượng ảnh: %s Giá trị nháy đèn: %s Thông tin: %s Hẹn giá»: %s Màn hình LCD: %s Tá»± động tắt nguồn: %i phút Nguồn Ä‘iện: %sNgày: %sNgày/Tháng/NămÃnh sáng ban ngàyKhuynh hướng cân bằng trắng ánh sáng ban ngàyGỡ lá»—iSâuCổng ra mặc địnhTrình Ä‘iá»u khiển sierra mặc định: Äây là trình Ä‘iá»u khiển sierra mặc định: nó nên có khả năng há»— trợ tiến trình tải xuống và duyệt các ảnh trên máy ảnh cá»§a bạn. Cấu hình cá»§a máy ảnh dá»±a vào máy ảnh Olympus 3040, và rất có thể không hoàn tất. Nếu bạn thẩm tra cấu hình này không hoàn tất cho máy ảnh riêng cá»§a bạn, hoặc có thể đóng góp mã nguồn để há»— trợ cấu hình hoàn tất, hãy liên lạc vá»›i há»™p thư chung nhà phát triển (tiếng Anh). Từ xa trá»…XóaXóa đối tượngÄang xóa ảnh %s.Äá»™ sâu cá»§a trưá»ngPhát hiện má»™t “%s†cÅ©ng được biết như là “%sâ€Phát hiện má»™t “%sâ€.Tham số rá»­a phim ảnh 1Tham số rá»­a phim ảnh 2Tham số rá»­a phim ảnh 3Chứng nhận thiết bịBiểu tượng thiết bịPhiên bản thiết bịThiết bị này không há»— trợ chức năng đặt mức bảo mật đối tượng.Thiết bị không đặt được bảo mật đối tượng thành %dDigita Johannes Erdfelt Bố trí máy ảnh số (DCIM)Phóng to sốPhóng to Ä‘iện sốChụp macro kỹ thuật sốThu/phóng sốDimera 3500 phiên bản %s %d/%d %d:%d %d ảnh được dùng trên khoảng %d (phân giải cao) hay %d (phân giải thấp). Tính năng máy ảnh: %s, %s, %s, %s Äèn nháy là %s, %s và %s Äá»™ phân giải được đặt thành %s Máy ảnh chạy bằng %s %s. In trá»±c tiếpChế độ Duyệt qua Thư mục — được tạo bởi Scott Fritzinger .Thư mục đã cóKhông tìm thấy thư mụcTắt các thao tác tập tin đã tin cậyÄang ngắt kết nối tá»›i máy ảnh.Disp AvDisp Av MaxHiển thịÄịnh dạng hiển thị: Xem xaKhông hiển thị trình đơn TVTiến trình này không biết cách xá»­ lý giá trị máy_ảnh->cổng->kiểu %i cÅ©ng được biết như là 0x%x trong %s dòng %i.Tải vá» chương trình cho Digital Dream Enigma 1.3. bởi , được thích nghị từ trình Ä‘iá»u khiển spca50x. Cám Æ¡n nhóm spca50x vì dá»… chuyển trình Ä‘iá»u khiển sang máy ảnh này.Tải vá» chương trình cho các máy ảnh dá»±a vào GrandTek 98x. Nguyên bản được tạo bởi Chris Byrne , và chuyển sang gPhoto2 bởi Lutz Mueller . Các cải tiến giao thức và xá»­ lý sau cho máy Jenoptik JD350e bởi Michael Trawny . Các lá»—i được sá»­a chữa bởi Marcus Meissner .Chương trình tải xuống cho máy ảnh Polaroid DC700. Tạo gốc bởi Ryan Lantzer cho gphoto-4.x. Thích nghị vá»›i gphoto2 bởi Lutz Mueller .Chương trình tải xuống cho vài máy ảnh kiểu Polaroid. Tạo gốc bởi Peter Desnoyers , thích nghi vá»›i gPhoto2 bởi Nathan Stenzel và Lutz Mueller . Polaroid 640SE được thá»­ ra bởi Michael Golden .Äang tải vá» %s.Äang tải vá» %s…Äang tải vỠ“%sâ€â€¦Äang tải vá» dữ liệu EXIF…Äang tải vỠâm thanh…Äang tải vá» dữ liệu…Äang tải vá» tập tin…Äang tải vỠảnh %s.Äang tài vỠảnh…Äang tải vá» phim…Äang tải vỠảnh mẫu…Äang tải vá»â€¦á»” Canon DSLR tá»± động lấy nétá»” Canon DSLR lấy nét bằng tayChế độ ổ đĩaÄÄ©a Nikon DSLR tá»± động lấy nétÄÄ©a Nikon DSLR lấy nét bằng tayTrình Ä‘iá»u khiểnCài đặt trình Ä‘iá»u khiểnKhuôn khổ trình Ä‘iá»u khiển được tạo bởi Lutz Mueller . Phần má»m này chứa mã nguồn cá»§a QVplay mà được tạo bởi Ken-ichi HAYASHI và Jun-ichiro “itojun†Itoh . QVplay được Michael Haardt hợp nhất.Mống mắt đôiChạng vạngChạng vạng/Bình minhLá»—i tham chiếu bụiVùng AF Äá»™ngVùng động (21)Vùng động (51)Vùng động (9)AF vùng độngAF vùng năng động có độ ưu tiên chá»§ đỠgần nhấtLá»—i tổng kiểm EEPROM.Lá»–I: %d là quá quá lá»›n.Lá»–I: phát hiện Ä‘iá»u kiện lá»—i nghiêm trá»ng nên không thể tiếp tục Lá»–I: lá»—i định dạng thông Ä‘iệp.Lá»–I: tràn thông Ä‘iệpLá»–I: sai thứ tá»±.Lá»–I: thông Ä‘iệp bất thưá»ngLá»–I: thông Ä‘iệp bất thưá»ng 2.Lá»–I: kiểu gói tin bất thưá»ng.ESPESSIDBước EVChế độ EVFCỡ kính viá»…n vá»ng EZoomVị trí bắt đầu thu phóng EZoomÃt má»±cChế độ hiệu ứngHiệu ứngKhẩn cấpRá»—ngBật tác quyá»nBật ghi chú ảnhBật các thao tác tập tin đã tin cậyEncounterEncounter BoxMật mãKhóa mật mã (thập lục)Kết thúc Sá»­a Äối tượngKết thúc phiên chạy ứng dụng tin cậyAnhTăng cưá»ngLá»—iGặp lá»—i khi chụp ảnhGặp lá»—i khi thay đổi tốc độGặp lá»—i khi thay đổi tốc độ.Gặp lá»—i khi xóa ảnh mẫu liên quanGặp lá»—i khi xóa tập tinLá»—i đợi xác nhận trong khi khởi tạoLá»—i đợi xác nhận trong khi khởi tạo, Ä‘ang thá»­ lạiÄánh giáÄo đánh giáChế độ mô phá»ng dữ kiệnMá»i nÆ¡iThá»±c hiện lệnh đã định sẵn có các giá trị tham số.Cần %i byte, còn nhận %i. Hãy thông báo lá»—i này cho %s.Cần %i, còn nhận %i. Hãy thông báo lá»—i này cho %s.Cần 32 byte, nhưng lại nhận được %i. Hãy liên lạc vá»›i %s.Chỉ số phÆ¡i sángPhÆ¡i sángKhóa độ mở phÆ¡i sángTrung tâm CÆ¡ bản PhÆ¡i sángMa trận CÆ¡ bản PhÆ¡i sángChấm CÆ¡ bản PhÆ¡i sángSá»± bù khuynh hướng phÆ¡i sángTrình đặt PhÆ¡i sáng Bá»§a vâyBước PhÆ¡i sáng Bá»§a vâySá»± bù PhÆ¡i sángBù phÆ¡i sáng (EV)Chế độ phÆ¡i sáng trá»…Trạng thái hiển thị phÆ¡i sángBước ISO phÆ¡i sángSố mÅ© phÆ¡i sáng (tốc độ phim ISO)Äèn ngụ ý phÆ¡i sángTrạng thái ngụ ý phÆ¡i sángKhóa phÆ¡i sángCái Ä‘o PhÆ¡i sángÄo phÆ¡i sángChế độ Ä‘o phÆ¡i sángChương trình phÆ¡i sángChế độ chương trình phÆ¡i sángBước phÆ¡i sángThá»i gian phÆ¡i bàyBù phÆ¡i sángSá»± bù phÆ¡i sáng đã thay đổiSá»± bù phÆ¡i sáng: %d Sá»± bù phÆ¡i sáng: %s Chế độ phÆ¡i sáng trá»…Äá»™ phÆ¡i sáng khi xem thá»­Äèn nháy ngoàiÄèn nháy ngoài bị gắn nốiBù đèn nháy ngoàiChế độ đèn nháy ngoàiSắp xếp đèn nháy ngoàiTrạng thái đèn nháy ngoàiÄồng bá»™ bên ngoàiCá»±c caoSố FF2F2.3F2.8F4F5.6F8Lá»–I NGHIÊM TRỌNG: không rõ giá trị CRC đầu tiên cho độ dài %d Cá»°C NHANH: Tập tin: %d Khóa Số FKhóa FVKhóa FAF ưu tiên dò tìm khuôn mặtMặc định cá»§a hãngGặp lá»—i khi bật kính ngắm trên Nikon 1, nhưng nó lại được yêu cầu để chụpTrung thá»±cXa %dXa 1Xa 2Xa 3Cảnh ở xaHệ thống tập tin nhanhChập nhanhTập tinKhông tìm thấy tập tin “%s†trong thư mục “%sâ€.Tập tin “%s/%s†không tồn tạiXóa tập tin, Thứ tá»± số hiệu tập tinTải lên tập tin Nén tập tinTập tin đã cóKhông tìm thấy tập tinTập tin đã bảo vệ.Äá»™ phân giải tập tinKích cỡ tập tin: %ld byte. Kích cỡ cá»§a tập tin lá»›n nhất có thể tải lên: %i byte.Kiểu tập tinLá»—i tải lên tập tin.Tập tin quá lá»›n. Có lẽ bạn cần phải tắt máy ảnh, rồi mở lại trước khi tải lên tập tin thêm.Xung đột tên tập tinTên tập tin không hợp lệCần tên tập tinKiểu tập tin: FlashPix (Kiểu tập tin: JPEG (Tô đầy nháy đènHiển thị ISO TìmTốtPháo hoaFirmwareBản sá»­a đổi Firmware: %8sBản sá»­a đổi Firmware: %8s Ảnh: %i Tổng bá»™ nhá»›: %ikB Bá»™ nhá»› còn trống: %ikB Bản sá»­a đổi Firmware: %d.%d Phiên bản FirmwarePhiên bản Firmware: %d.%02d Firmware: %d.%d Mắt cáCố địnhNháy đènÄèn nháy đã sạcBù A câu lệnh đèn nháyChế độ A câu lệnh đèn nháyGiá trị A câu lệnh đèn nháyBù B câu lệnh đèn nháyChế độ B câu lệnh đèn nháyGiá trị B câu lệnh đèn nháyKênh câu lệnh đèn nháyTá»± bù câu lệnh đèn nháyChế độ tá»± làm câu lệnh đèn nháyTá»± đặt giá trị câu lệnh đèn nháyChế độ quản lý đèn nháyÄiện quản lý đèn nháySá»± bù đèn nháySá»± bù phÆ¡i sáng đèn nháyKhóa cấp nháy đènKhóa đèn nháyÄếm lần MRepeat đèn nháyKhoảng MRepeat đèn nháyGiá trị MRepeat đèn nháyChế độ Äèn nháyÄiện quản lý chế độ đèn nháyChế độ đèn nháy có Ä‘iện thá»§ côngÄèn nháy tắtÄèn nháy đã mởÄếm lần nháy đènCài đặt đèn nháyCài đặt đèn nháyTốc độ cá»­a chập đèn nháyDấu đèn nháyTốc độ đồng bá»™ nháy đènKhuynh hướng cân bằng trắng đèn nháyÄèn nháy ở chế độ tá»± độngChế độ đèn nháy bị thay đổiChế độ đèn nháy: tá»± động Chế độ đèn nháy: buá»™c, Chế độ đèn nháy: tắt Tắt Äèn nháyBật Äèn nháyChỉ nháy đènÄèn/khẩu độÄèn/tốc độÄèn/tốc độ/khẩu độÄèn nháy : Tá»± độngÄèn nháy : tá»± động (giảm mặt Ä‘á»)Äèn nháy : TắtÄèn nháy : BậtÄèn nháy : Bật (giảm mắt Ä‘á»)Äèn nháy : chưa định nghÄ©aFlashPixChương trình má»m dẻoGiảm rungHuỳnh quangLoại huỳnh quangFluorescent-1-home-6700KFluorescent-2-desk-5000KFluorescent-3-office-4200KHuỳnh quangHuỳnh quang HÄèn huỳnh quang 1Äèn huỳnh quang 2Äèn huỳnh quang 3Äèn huỳnh quang 4Äèn huỳnh quang 5Khuynh hướng cân bằng trắng huỳnh quangFluorescent-1-home-6700KFluorescent-2-desk-5000KFluorescent-3-office-4200KHuỳnh quang: Trắng lạnhHuỳnh quang: Trắng ngàyHuỳnh quang: Ãnh sáng ban ngàyHuỳnh quang: Trắng ấmTiêu cá»±Tiêu cá»± mẫu sốTiêu cá»± lá»›n nhấtTiêu cá»± nhá» nhấtTiêu cá»± kính viá»…n vá»ngTiêu cá»± rá»™ngTiêu Ä‘iểmVùng lấy nétCuá»™n vùng lấy nétVùng lấy nétVùng lấy nétKhoảng cách lấy nétThông tin Lấy nétKhóa lấy nétChế độ Ä‘o tiêu Ä‘iểmChế độ Ä‘o tiêu Ä‘iểmChế độ Lấy nétChế độ Tiêu Ä‘iểm 2Äiểm tiêu sángChế độ lấy nét bị thay đổiVị trí lấy nétÄiểm tiêuLấy nét ở Ä‘iểm trung tâm, tá»± độngÄiểm tiêu chỉ ở tâm, thá»§ côngLá»—i lấy nét.Thư mục “%s†chỉ chứa %i tập tin, còn bạn đã yêu cầu má»™t tập tin có số %i.Hoa láThức ănÄể chụp bằng bóng đèn, kiểm tra lại đĩa chế độ được quay đến “M†và đặt tốc độ cá»­a chập thành “bóng đènâ€.Äối vá»›i các máy ảnh chứa con chíp S&Q Technologies. Nên hoạt động được vá»›i gtkam. Các ảnh chụp được lưu theo định dạng PPM. Má»i máy ảnh S&Q đã biết có hai giá trị độ phân giải. Giá trị phụ thuá»™c vào mô hình máy ảnh. Má»™t số máy ảnh kiểu này cÅ©ng há»— trợ khả năng xóa má»i ảnh trên máy ảnh. Phần lá»›n không phải. Không há»— trợ khả năng tải dữ liệu lên máy ảnh. Chế độ nén ảnh chụp cá»§a nhiá»u máy ảnh S&Q được há»— trợ đến má»™t chừng má»±c nào đó. Trích Ä‘oạn phim trên máy ảnh được thấy dạng thư mục con. Gtkam sẽ tải xuống má»—i thư mục má»™t lần. Má»™t hình giác nhỠđược hiển thị trước tên cá»§a máy ảnh thì ngụ ý trích Ä‘oạn Phim trên máy đó. Không thấy thư mục thì nhấn vào hình giác để làm cho thư mục xuất hiện. Nhấn vào thư mục riêng để vào nó và thấy các tập tin trong nó, hoặc để tải xuống các tập tin. Má»—i khung sẽ được tải xuống dạng ảnh chụp riêng, có tên đặc biệt ghi rõ trích Ä‘oạn gốc. Vì vậy bạn cÅ©ng có thể lưu trích Ä‘oạn trong các thư mục khác nhau. Äối vá»›i máy ảnh có sá»­ dụng thiết bị cá»§a S&Q Technologies, cái mà có USB Vendor ID 0x2770 và Product ID 0x905C, 0x9050, 0x9051, 0x9052 hoặc 0x913D các ảnh chụp sẽ được lưu theo định dạng PPM. Má»™t số máy ảnh kiểu này cho phép xóa má»i ảnh chụp bằng phần má»m. Má»™t số máy khác không. Những máy ảnh không được há»— trợ có khả năng chụp ảnh. Tất cả có khả năng chụp-xem-thá»­ (chụp ảnh rồi gá»­i cho máy tính). Nếu chức năng xóa-tất hoạt động được đối vá»›i máy ảnh cá»§a bạn, thế thì việc chụp-xem-thá»­ sẽ gặp hiệu ứng side-effect mà nó xóa những thứ có trên máy ảnh. Việc tải tập tin lên cÅ©ng không được há»— trợ trên những máy ảnh này. CÅ©ng thế, không có máy ảnh không được há»— trợ nào cho phép xóa từng bức ảnh riêng lẻ bằng phần má»m. Ép buá»™cBuá»™c nháy đèn Äịnh dạng thẻ nhá»› và đặt tên tập ảnh.Äịnh dạng cá»±c nhanh gá»nÄịnh dạng khoKhung còn lại: %i Khung đã chụp : %4d Khung đã chụp: %i Lưới khungPhápTên thiết bị thân thiệnÄồng bá»™ mành trướcÄầyẢnh đầy đủToàn thá»§ côngÄịnh dạng tập tin xem đầy đủAF động-cÆ¡-tùy-động-toàn-thá»i-gianNút chức năng 2Chế độ chức năngChế độ chức năng: 0x%04x ChungChung phẳngChung phân cấpÄứcLấy khối dữ liệu kếLấy Äối tượng Riêng (64bit Offset)Lấy yêu cầu trạng thái gầnLấy đáp ứng đăng kýLấy đáp ứng giấy phép WMDRM-NDLấy trả lá»i ứng dụng WMDRM-PDLấy mô tả thuá»™c tính thiết bịLấy giá trị thuá»™c tính thiết bịLấy mô tả thuá»™c tính phụ thuá»™c vào nhauLấy tình trạng giấy phépLấy yêu cầu cái Ä‘oLấy đáp ứng cái Ä‘oLấy số đối tượngLấy đối tượngLấy các móc đối tượngLấy thông tin vỠđối tượngLấy các thuá»™c tính đối tượng đã há»— trợLấy mô tả thuá»™c tính đối tượngLấy danh sách thuá»™c tính đối tượngLấy giá trị thuá»™c tính đối tượngLấy các tham chiếu đối tượngLấy đối tượng bá»™ phạnLấy yêu cầu giá» bảo mậtLấy đáp ứng giá» bảo mậtLấy các mã hiệu cất giữLấy thông tin cất giữLấy danh sách đồng bá»™Lấy ảnh mẫuLấy các kiểu danh mục phát có thể truyá»nÄang lấy cấu hình…Äang lấy dữ liệu…Äang lấy danh sách tập tin…Äang lấy tập tin…Äang lấy thông tin vá» %i tập tin…Äang lấy ảnh mẫu…Nhận được kết quả bất thưá»ng 0x%x. Hãy liên lạc vá»›i %s.Mức xámMức xámLụcNhóm độngLoại PTN NhómTùy động ở mức cao HDRChế độ HDRLàm mượt HDRHoàng hôn cầm tayLá»—i phần cứngHi 1Hi 2CaoCao (1152 × 872)Cao (chất lượng tốt)Cao 2Giảm nhiá»…u ISO caoGiảm nhiá»…u ISO caoÄiá»u khiển caoPhím caoÄá»™ nhạy CaoCá»­a chập cao tốcTô sáng Ä‘iểm tiêu hoạt độngGiữChế độ máy chá»§: %s Sá»­a chữa phÆ¡i sáng: %s Dữ liệu phÆ¡i sáng: %d Ngày hợp lệ: %s Ngày: %d/%02d/%02d %02d:%02d:%02d Äặt đồng hồ tá»± hẹn giá»: %s Äá»™ chất lượng: %s Chế độ phát/thu: %s ID thẻ nhá»› hợp lệ: %s ID thẻ nhá»›: %d Chế độ nháy đèn: Tiết kiệm Ä‘iện máy chá»§ (giây)Bao lâu đến khi máy ảnh tá»± tắt khi được kết nối đến máy tính?Bao lâu đến khi máy ảnh tá»± tắt khi không được kết nối đến máy tính?Bao nhiêu phút trước khi máy ảnh tắt Ä‘iện?Äiá»u chỉnh sắc độHyPictÄang xá»­ lý vào/raIDÄịa chỉ IP (rá»—ng để dùng DHCP)ISOTá»± động ISOTá»± động giá»›i hạn cao ISOTá»± động giá»›i hạn cao ISOTốc độ ISOTốc độ ISO bị thay đổiBiểu tượngNghỉTham số cấm.Cài đặt chiếu sángẢnhẢnh %s bị bảo vệ chống xóa.Ảnh và Âm thanhÄiá»u chỉnh ảnhGhi chú ảnhBật ghi chú ảnhChuá»—i ghi chú ảnhNén ảnhÄịnh dạng ẢnhCF định dạng ảnhÄÄ©a cứng ngoài định dạng ảnhSD định dạng ảnhChế độ ảnhChất lượng ảnhChất lượng ảnh 2Xem lại ảnhXoay ảnhCá» xoay ảnhCài đặt ảnhCỡ ảnhLàm ổn định ảnhÄịnh dạng ảnh đã thay đổiÄá»™ cao ảnh: %d Số hiệu ảnh không hợp lệ.Ảnh bị bảo vệ.Cỡ ảnhKích cỡ ảnh: %d Kiểu ảnh %d không được máy ảnh này há»— trợ.Không há»— trợ kiểu ảnh %dKiểu ảnh không được há»— trợÄá»™ rá»™ng ảnh: %d Giá» cấu hình ảnhTrá»±c tiếpÄang dùngNóng sángHiển thị Chỉ báoTrong nhàVô hạnVô hạn/Mắt cáCài đặt Giải Thông tinTrạng thái phần hiển thị lá»—iThông tinThông tin vá» máy ảnh dá»±a vào STV0680: Thông tin vá» máy ảnh có mã số 0x2770:0x9153. Không khuyên bạn sá»­ dụng má»™t chương trình có giao diện đồ há»a (GUI) để truy cập đến máy ảnh này, trừ để thá»­ nghiệm và/hay làm nổ cầu chì. Äể sá»­ dụng hằng ngày, thá»­ câu lệnh: gphoto2 -P trên dòng lệnh. Ghi chú: không thể tải vá» trích phim. Không nhận ra đáp ứng máy ảnh đầu tiên “%câ€Äang khởi tạo máy ảnhBắt đầu chụpKhởi tạo chụp mởTá»± động thông minhTắt nháy đèn tá»± động thông minhRAM trên máylá»—i ná»™i bá»™ #1 trong hàm lấy tập tin get_file_func() (%s dòng %i)Lá»—i ná»™i bá»™ (1).Lá»—i ná»™i bá»™ (2).Gặp lá»—i ná»™i bá»™ khi tìm các thư viện máy ảnh (tên đưá»ng dẫn quá dài ?)Bá»™ nhá»› ná»™i bá»™: %d MB tổng, %d MB trống. Không hợp lệCài đặt tốc độ ISO không hợp lệTrạng thái không hợp lệGiá trị không hợp lệ (%d) Cài đặt độ mở không hợp lệSai đặt chế độ bípCài đặt lá»›p kích cỡ chụp không hợp lệCài đặt bù phÆ¡i sáng không hợp lệSai đặt chế độ đèn nháyCài đặt chế độ lấy nét không hợp lệCài đặt định dạng ảnh không hợp lệSai đặt chế độ chụp ảnhCài đặt tốc độ chập không hợp lệLá»—i mống mắt.ÃJD11 Marcus Meissner Trình Ä‘iá»u khiển cho máy ảnh Jenoptik JD11. Giao diện được thiết kế đối chiếu dùng WINE và IDA.Cấu hình JD11JPEGJPEG cÆ¡ bảnChính sách nén JPEGJPEG tốtJPEG chuẩnJPEG chuẩnNhậtGiữ tên tập tin khi tải lênTrẻ em và động vậtVấn đỠđã biết: 1. Nếu máy ảnh Kodak DC3200 không nhận lệnh trong vòng 10 giây, nó sẽ quá thá»i nên phải được khởi tạo lại. Bạn thấy máy ảnh không đáp ứng thì đơn giản chá»n nó lần nữa: hành động này sẽ gây ra nó khởi tạo lại.Vấn đỠđã biết: Gặp khó khăn liên lạc thì đặt lại máy ảnh và khởi chạy lại ứng dụng. Trình Ä‘iá»u khiển chưa đủ mạnh để phục hồi sau trưá»ng hợp kiểu này, đặc biệt nếu gặp khó khăn và máy ảnh không được tắt đúng ở tốc độ truyá»n nhanh hÆ¡n 9600 bps.Thư viện máy ảnh Kodak DC120 Scott Fritzinger Thư viện máy ảnh cho máy ảnh Kodak DC120. (được nhiá»u ngưá»i yêu cầu).Thư viện máy ảnh Kodak DC240 Scott Fritzinger và Hubert Figuiere Thư viện máy ảnh cho các máy ảnh Kodak DC240, DC280, DC3400 và DC5000. ÄÆ°á»£c tạo lại và cập nhật cho gPhoto2.Trình Ä‘iá»u khiển Kodak DC3200 Donn Morrison Má»i bạn há»i câu và ghi chú.Trình Ä‘iá»u khiển Kodak EZ200 Bucas Jean-Francois Cấu hình KonicaThư viện Konica Q-M150 Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Há»— trợ máy ảnh Konica Q-M150 Pháp.Thư viện Konica Lutz Mueller Há»— trợ má»i máy ảnh Konica và vài máy ảnh HP.HànLCDTá»± động tắt LCD (theo giây)Tá»± động tắt LCD (giây)Chiếu sáng mặt sau LCDChiếu sáng mặt sau LCD và Hiển thị thông tinÄá»™ sáng LCDChiếu sáng LCDChế độ LDCThá»i gian tắt LCDChế độ LEDTrình Ä‘iá»u khiển chung LG GSM Guillaume Bedot Phong cảnhNgôn ngữTrình Ä‘iá»u khiển Largan Hubert Figuiere Lá»›nJPEG Tốt lá»›nJPEG chuẩn lá»›nTráiá»ng kính còn Ä‘ang đậyTiêu cá»± ống kính (khác CPU)Mã số ống kínhÄá»™ mở tối Ä‘a cá»§a ống kính (khác CPU)Chế độ ống kínhTên ống kínhSắp xếp á»ng kínhKiểu ống kínhHướng ống kính không tương ứng vá»›i đèn nháy Chưa kết nối ống kính NhẹÄo sángSáng trên tốiÃnh sáng quá tối.Liệt kê hồ sÆ¡ WIFILiệt kê má»i tập tinÄang liệt kê các tập tin trong “%sâ€â€¦Äang liệt kê các thư mục trong “%s†…Iôn LithiXem trá»±c tiếp vùng AFXem trá»±c tiếp Lấy nét AFXem trá»±c tiếp Chế độ AFChế độ chạy xem trá»±c tiếpTá»· lệ phóng to ảnh xem trá»±c tiếpChế độ xem trá»±c tiếpÄiá»u kiện cấm xem trá»±c tiếpTrạng thái xem trá»±c tiếpÄang nạp các trình Ä‘iá»u khiển máy ảnh từ “%sâ€â€¦Cục bá»™Äịa phương hóaDữ liệu bản địa hóa bị há»ng.Dữ liệu bản địa hóa quá dài.Tập tin địa phương hóa quá dài.KhóaTrình Ä‘iá»u khiển Logitech Clicksmart 310 Theodore Kilgore Giảm nhiá»…u phÆ¡i sáng lâuGiảm nhiá»…u phÆ¡i sáng lâuChập dàiÄang tìm máy ảnh…Hình như bá»™ Ä‘iá»u giải, không phải máy ảnhKhông mấtMấtThấpThấp (576 × 436)Thấp (chất lượng tốt nhất)Thấp 2Ãt sángÄồng bá»™ hóa thấp tốcTương phản thấpPhím thấpÄá»™ nhạy ThấpMài sắc thấpCá»­a chập thấp tốcChức năng cá»­a chấp thấp cao không sẵn dùngKhông cho phép chữ thưá»ng trong %s.MM-DEPDanh mục nhạc M3UM4AMF (cố định)MF (vùng chá»n)Tài liệu HTML đã biên dịch MHTMM/DD/YYYYDanh mục nhạc MPLMTR > bên dướiM_DEPMacroQuản lýBằng tayBằng tay 2Lấy nét thá»§ côngChế độ Bá»§a vây bằng tayCài đặt quay phim thá»§ côngÄặt số ống kính bằng tayLấy nét bằng tayHãng chế tạo: %s Thư viện máy ảnh Mars MR97310 Theodore Kilgore Máy ảnh Mars MR97310. Nó chứa %i ảnh. Ma trậnÄo ma trậnMatthew G. Martin Dá»±a vào fujiplay cá»§a Thierry Bousch Äá»™ mở cá»±c đại ở tiêu cá»± lá»›n nhấtÄá»™ mở cá»±c đại ở tiêu cá»± nhá» nhấtTiêu cá»± lá»›n nhấtTối Ä‘aÄá»™ mở đại ở tiêu cá»± tiểuÄá»™ mở đại ở tiêu cá»± tiểuLần chụp tối Ä‘aThá»i gian bấm máy liên tiếp tối Ä‘aSố ảnh tối Ä‘a: %d Thẻ nhá»› ảnh/nhạcNhóm thẻ nhá»› ảnh/nhạcQuảng bá ảnh/nhạcVừaVừa (1152 × 872)Vừa (chất lượng tốt hÆ¡n)Vừa 1Vừa 2Vừa 3JPEG Tốt vừaVừa caoVừa thấpJPEG chuẩn vừaVừa caoÄá»™ nhạy Trung bìnhBá»™ nhá»› còn lại: %i byte Thẻ nhá»›Trạng thái thẻ nhá»› (%d): %s Bá»™ nhá»› máy ảnh: %d Mbit. Tên nhóm trình đơn ATên nhóm trình đơn BTên nhóm trình đơn CTên nhóm trình đơn DTrình đơn và Phát lạiSiêu dữ liệu chỉ được há»— trợ cho thiết bị kiểu MTP.Thá»i gian tắt cái Ä‘oChế độ Ä‘oBước Äi Mf gặp kết thúcBước Äi Mf không đủMicrophoneTắt microphoneBảng tính Excel cá»§a Microsoftâ„¢ (.xls)Trình diá»…n PowerPoint cá»§a Microsoftâ„¢ (.ppt)Tài liệu Word cá»§a Microsoftâ„¢Tiêu cá»± nhá» nhấtHiệu ứng thu nhá»Tối thiểuTốc độ màn chập tối Ä‘aThư viện máy ảnh Minolta Dimage V %s Gus Hartmann Cám Æ¡n đặc biệt Minolta đã cung cấp đặc tả.Nhân bản lênThứ tá»± lên máy nhânCài đặt phÆ¡i sáng/ống kính linh tinhSố thiếuVị trí chấm MIMlSpotPosAfLinkMlSpotPosCenterMã hiệu mô hìnhMô hình: Minolta Dimage V (%s) Bản sá»­a đổi phần cứng: %s Bản sá»­a đổi Firmware: %s Mô hình: Mẫu: %s Mẫu: %s Dung lượng: %i Mb Äiện: %s Tá»± động tắt: %i phút Chế độ: %s Ảnh: %i/%i Hiện ngày: %s Ngày và Giá»: %s Mô hình: %s Bá»™ nhá»›: %d byte trên %d có thể sá»­ dụngMô hình: %s Số sản xuất: %s, Phiên bản phần cứng: %i.%i Phiên bản phần má»m: %i.%i Phiên bản phần má»m thá»­ nghiệm: %i.%i Tên: %s, Hãng chế tạo: %s Mô hình: %x, %x, %x, %xMô hình: Kodak %s Làm mẫu đèn nháyMô hình Äèn nháy ngoàiGiảm nhẹMàn hìnhTắt theo dõi trá»…ÄÆ¡n sắcTháng/Ngày/NămChuyển đối tượngPhimQuay phimKhe thẻ nhá»› Quay phimSố F phimGiảm nhiá»…u ISO cao cho phimTốc độ ISO phimMic quay phimChất lượng rạp hátÄá»™ phân giải phimKích cỡ màn hình phimTốc độ màn chập 2 phimÂm thanh cá»§a phimTiếng nói phimGiảm nhiá»…u Ä‘a KhungÄa chấmÄa Ä‘iểmÄo ít (nhiá»u Ä‘iểm)Äa-Ä‘iểmLấy nét nhiá»u Ä‘iểm tiêu (tâm)Lấy nét nhiá»u Ä‘iểm tiêu (Trái)Lấy nét nhiá»u Ä‘iểm tiêu (Chưa có đặc tả), Bằng tayLấy nét nhiá»u Ä‘iểm tiêu (Phải)Lấy nét nhiá»u Ä‘iểm tiêu, Tá»± độngBá»™ Ä‘a chá»nMup Lên nhân bảnThư viện gPhoto2 Mustek MDC-800 Henning Zabel Chuyển sang gphoto2 bởi Marcus Meissner Há»— trợ cả hai giao thức nối tiếp và USB.MàuMìnhNEF (Thô)NEF+CÆ¡ bảnNEF+TốtNEF+ChuẩnNIKON: Tá»± động Bá»§a vâyKHÔNG NHẬN RANTSCTham số không có giá trị “%s†trong %s dòng %iTên “%s†từ máy ảnh không tương ứng vá»›i máy ảnh đã biết.Tên “%s†(%li ký tá»±) quá dài, chỉ cho phép tối Ä‘a 30 ký tá»±.Tiá»n tố tênTên cần đặt trên thẻ nhá»› khi định dạng.Gần %dGần 1Gần 2Gần 3Mặt nạ mạngTrung lậpKế tiếpNi CdNi hyddruaPhong cảnh đêmChân dung đêmCảnh đêmXem đêmChụp ảnh đêmPhong cảnh đêmCảnh đêmChụp ảnh trong đêmChụp Nikon 1Máy ảnh Nikon Coolpix 880: Cấu hình máy ảnh: Khả năng thu phóng quang không chức năng đúng. Không phải tất cả các Cài đặt cấu hình có thể được Ä‘á»c hay viết cho đúng, thí dụ các Cài đặt ngôn ngữ, và Cài đặt Ä‘iá»u chỉnh chính xác cân bằng trắng. Hãy đặt máy ảnh trong chế độ “M†để đặt tốc độ cá»§a chập. Máy ảnh Nikon Coolpix 995: Cấu hình máy ảnh cho máy ảnh này chưa hoàn tất, hãy liên lạc vá»›i há»™p thư chung nhà phát triển gphoto (tiếng Anh) nếu bạn muốn đóng góp cùng trình Ä‘iá»u khiển này. Tiến trình tải xuống nên chạy được. Thá»i gian phÆ¡i sáng NikonChế độ Äèn nháy NikonKhung ngắm NikonTrình Ä‘iá»u khiển tá»± động lấy nét cá»§a Nikon không làm việc.Tiếc changeafarea Nikon cá»§a bạn chỉ há»— trợ chế độ ngắm Sống.Gặp lá»—i khi tắt chức năng kính ngắm NikonGặp lá»—i khi bật kính ngắm NikonLấy nét bằng tay Nikon ở giá»›i hạn.Bước lấy nét bằng tay Nikon quá nhá».Lấy nét bằng tay trên máy Nikon chỉ làm việc trên chế độ Ngắm sống.KhôngKhông thẻ nhá»› CF bấm máyKhông phát hiện thẻ nhá»› cá»±c nhanh gá»n (CF) Không mống mắt đôiKhông có dữ liệu EXIF sẵn sàng cho %s.Không xóa tập tin, Không tải lên tập tin Không đèn nháyKhông chụp mở, Không đèn có Ä‘iệnKhông chuyển đổi độ phân giảiKhông có thẻ nhá»› SD đã nạp. Máy ảnh không trả lá»i.Không tìm thấy tập tin âm thanh cho %sKhông có sẵn sổ tay máy ảnh. Không có thẻ nhá»›Không có thẻ nhá»› trong máy ảnh. Không có thẻ nhá»›.Không có thẻ nhá»› nhá»›Không có lý doMáy ảnh không đáp ứngKhông có chá»— còn trống để chụp ảnh má»›i. Bạn cần phải xóa má»™t số ảnh.Không còn có chá»— trống trên thẻ nhá»›.Không chụp đặc trưng cho nhà sản xuất Không cóChưa chá»n gìChuẩnChuẩn AF chuẩn đã bậtAF vùng-bình-thưá»ngKhông đầyKhông đủ chá»— chứa trốngKhông đủ chá»— trên thẻ nhá»›Không phải dùng chức năng xem trá»±c tiếpKhông trong chế độ tô đầyChưa sẵn sàngKhông dùngGhi chú: không có thẻ nhá»›, má»™t số giá trị có thể không hợp lệ Số lượng ảnh: %d Số lượng ảnh: %dSố ảnh: %d Số lượng ảnh: %i Phiên bản Firmware: %sTẮTÄồng ýBẬTLá»—i HÄH khi liên lạc vá»›i máy ảnhTắtVăn phòngMáy ảnh Olympus 750 Ultra Zoom: (1) Máy ảnh Olympus 750UZ có má»™t chế độ “USB PC Controlâ€. (Ä‘iá»u khiển bằng máy tính qua USB). Äể chuyển đổi sang chế độ này, mở máy ảnh, mở cá»­a truy cập thẻ nhá»› nhá»›, rồi ấn giữ cả hai cái nút “OK†và “quickview†(xem nhanh) đến khi trình đơn Ä‘iá»u khiển máy ảnh xuất hiện. Äặt nó thành “control mode†(chế độ Ä‘iá»u khiển). (2) Nếu bạn chuyển đổi đổi chế độ “LCD mode†sang “Monitor†(màn hình) hay “Normal†(chuẩn), đừng quên chuyển đổi nó vỠ“Off†(tắt) trước khi ngắt kết nối. Không thì bạn không thể sá»­ dụng các cái nút cá»§a máy ảnh. Gây ra tình trạng này thì bạn nên kết nối lại máy ảnh đến máy tính, rồi chuyển đổi LCD sang “Off†(tắt).Chụp “Olympus E XML†Olympus há»— tr�� bao XML chỉ sẵn sàng khi được dịch sẵn cùng vá»›i há»— trợ cá»§a thư viện libxml2.BậtBật (xem xét lại ảnh bị loại trừ)Bật, giảm mắt Ä‘á»Mẹo trên màn hìnhBật, giảm mắt Ä‘á»Chụp má»™tTá»± động bấm má»™tChỉ há»— trợ thư mục gốc: bạn đã yêu cầu danh sách các tập tin cá»§a thư mục “%sâ€.Chụp mở, Mở phiên chạy ảnh/nhạcMở phiên chạyChế độ thao tácThao tác bị từ chốiThao tác bị há»§yTối ưu hóa theo chất lượngTối ưu hóa ảnhHướngKhácThuá»™c tính Thiết bị PTP KhácCài đặt khácLệnh khác Ä‘ang chạy.Không thể lấy nétHết bá»™ nhá»›Hết bá»™ nhá»›: cần thiết %d byte.Hết bá»™ nhá»›: cần %ld byte.Ở ngoàiTên Chá»§ sở hữuTên ngưá»i sở hữu bị thay đổiPPALmáy tínhDanh mục nhạc PLSPTP: truy cập bị từ chốiPTP há»§y yêu cầuPTP: tiến trình chụp đã kết thúcCần dữ liệu PTPPTP: thiết bị Ä‘ang bậnPTP: cái đỡ thiết bị không được há»— trợLá»—i chung PTPlá»—i V/R PTPPTP: chưa truyá»n xongPTP: định dạng mã không hợp lệPTP: định dạng cái dỡ không hợp lệPTP: giá trị cái dỡ không hợp lệPTP: mã định dạng đối tượng không hợp lệPTP: bá»™ quản lý đối tượng không hợp lệPTP: tham số không hợp lệPTP: đối tượng cha không hợp lệPTP: mã hiệu cất giữ không hợp lệPTP: mã hiệu giao dịch không hợp lệPTP: không có ảnh mẫuPTP: không có thông tin đối tượng hợp lệPTP OK !PTP: đối tượng bị bảo vệ chống ghiPTP: thao tác không được há»— trợPTP: tham số không được há»— trợPTP: xóa bá»™ phậnThuá»™c tính PTP 0x%04xCần đáp ứng PTPPTP: lá»—i tá»± thá»­PTP: phiên chạy đã mởPTP: buổi hợp chưa mởPTP: không há»— trợ khả năng xác định theo định dạngPTP: đặc tả cá»§a đích không được há»— trợPhiên bản tiêu chuẩn PTP: %d.%d PTP: kho đầyPTP: kho không sẵn sàngPTP: kho chỉ Ä‘á»cThá»i hạn PTPPTP: giao dịch bị há»§y bá»Lá»—i không xác định PTPPTP: mã nhà sản xuất lạPhiên bản PTPTrình Ä‘iá»u khiển PTP2 © 2001-2005 cá»§a Mariusz Woloszyn . © 2003-%d cá»§a Marcus Meissner . Trình Ä‘iá»u khiển này há»— trợ các máy ảnh lần lượt há»— trợ Giao thức Truyá»n Ảnh (PTP) hay PictBridgeâ„¢, và các bá»™ phát ảnh/nhạc mà cÅ©ng há»— trợ Giao thức Truyá»n Phương tiện (MTP). Chúc bạn vui vẻ!Gói tin bị máy ảnh từ chối. Hãy liên lạc vá»›i %s.Tiêu Ä‘iểm kéo ngangTiêu Ä‘iểm kéo ngangThư viện gPhoto2 Panasonic DC1000 Mariusz Zynel Dá»±a vào chương trình dc1000 cá»§a Fredrik Roubert và Galen Brooks .Thư viện gPhoto2 Panasonic DC1580 Mariusz Zynel Dá»±a vào chương trình dc1000 cá»§a Fredrik Roubert và Galen Brooks .Máy quay trên tay Panasonic PV-L859-K/PV-L779-K Công ty Panasonic đã giá»›i hiệu kỹ thuật chụp ảnh tên PHOTOSHOT lần đầu tiên trong dãy máy quay trên tay (Palmcorder) này. Các ảnh được cất giữ theo định dạng JPEG trên má»™t vỉ mạch cá»±c nhanh ná»™i bá»™, và có thể được truyá»n sang máy tính qua cổng nối tiếp dá»±ng sẵn. Các ảnh được lưu theo má»™t cá»§a hai độ phân giải: CHUẨN (320×240) và CAO (640×480). Thiết bị CCD mà chụp ảnh từ ống kính chỉ có khả năng 300K thì tạo chỉ ảnh chất lượng thấp.Trình Ä‘iá»u khiển máy trên tay thu-ghi hình Panasonic PV-L859-K/PV-L779-K Palmcorder Andrew Selkirk Toàn cảnhTham số 1Tham số 2Tham số 3Tham số đã đặtGặp lá»—i khi phân tích giá trị cá»§a ô Ä‘iá»u khiển “%s†/ 0x%04x bị lá»—i vá»›i %d.Bá»™ phậnÄo bá»™ phạnTiệc/Trong nhÃ ÄÆ°á»ng dẫn không phải tuyệt đốiKiểu thiết bị đã thấyCài đặt cố địnhChân dung động vậtHiệu ứng ảnh chụpPhát lại thông tin ảnhẢnh chụp trong phimẢnh trên máy ảnh: %d Hiệu ứng ảnhCấu hình khung ảnhCài đặt ảnhKiểu dáng ảnhẢnhẢnh trên máy ảnh: %d PhátChế độ phátPhát lạiChỉ mục độ chứa phát lạiÄối tượng phát lạiVị trí phát lạiTốc độ phát lạiPlaysForSure IDTốc độ cổngChân dungÄiệnTắt máyTiết kiệm Ä‘iệnMáy quayTắt thiết bịÄá»™ trá»… trước khi chụpÄịnh sẵnÄịnh sẵn riêng 1Äịnh sẵn riêng 2Äịnh sẵn riêng 3Äịnh sẵn riêng 4Äịnh sẵn riêng 5Nhấn 1Nhấn 2Nhấn 3Nhấn hoàn toànNhấn má»™t ná»­aXem thá»­Nút Xem thá»­Nút Xem thá»­ 2Xem thá»­ ảnh mẫuKế trướcGặp lá»—i khi tải vỠảnhGặp lá»—i khi lấy thông tin vỠảnhGặp lá»—i khi lấy tổng số ảnhLá»—i mở bản chuyểnGặp lá»—i khi Ä‘á»c ảnh từ bá»™ nhá»› cá»±c nhanhGặp lá»—i khi đặt lại máy ảnhGặp lá»—i khi đặt lại tốc độ liên lạc vá»›i máy ảnhGặp lá»—i khi lấy ảnh trá»±c tiếpXá»­ lý đối tượng WFCMã hiệu sản phẩm: %02x%02x Tên hồ sÆ¡Cấm nháy đèn Chất lượngÄáp ứng nhanhÄáp ứng nhanh từ xaThá»i gian xem lại nhanhBấm máy im lặngRAWRAW + JPEG cÆ¡ bảnRAW + JPEG tốtRAW + JPEG chuẩnRAW + JPEG Tốt lá»›nRAW + JPEG chuẩn lá»›nRAW + JPEG Tốt vừaRAW + JPEG chuẩn vừaRAW + JPEG Tốt nhá»RAW + JPEG chuẩn nhá»RAW 2RAW+JPEGKhuếch đại RGBTrạng thái RTC: %d Chế độ bit thôNén thôChỉ Ä‘á»c, có xóa đối tượngChỉ Ä‘á»cÄá»c ghiKhông thể thay đổi thuá»™c tính tập tin chỉ Ä‘á»c như độ rá»™ng/cao.Sẵn sàngÄồng bá»™ mành sauÄồng bá»™ mành sau + Äồng bá»™ chậmÄồng bá»™ mành sauMành sau và đồng bá»™ chậmNhận được trả lá»i bất thưá»ng (%i). Hãy liên lạc vá»›i %s.Nhận được dữ liệu bất thưá»ng (0x%02x, 0x%02x).Nhận được phần đầu bất thưá»ng (%i)Nhận được đáp ứng bất thưá»ngÄang nhận dữ liệu…ThuChế độ thuChế độ thuÄích ghiVật chứa thuÄá»Bá» mắt Ä‘á»Äèn nháy chống mắt Ä‘á»Giảm mắt Ä‘á»Giảm mắt đỠ+ Äồng bá»™ chậmTá»± động mắt Ä‘á»Tô đầy mắt Ä‘á»Nháy đèn đầy mắt Ä‘á»Giảm mắt Ä‘á»Giảm mắt đỠvà đồng bá»™ chậmBấm máyBấm máy + Lấy nétNhả Nhả Nhả Nhả hoàn toànNhả má»™t ná»­aChế độ bấm máyBấm máy không có thẻ nhá»› CFTừ xaPhiên bản API ở xaÄiá»u khiển từ xa Nâng gương lậtChế độ Ä‘iá»u khiển từ xaQuá thá»i từ xaRAM rá»i (thẻ nhá»› nhá»›)ROM rá»iLặp lạiThông báo các mục đã giành đượcThông báo các mục đã Thêm/XóaÄã yêu cầu thông tin vỠảnh %i (= 0x%x), còn nhận được thông tin vỠảnh %iÄặt lại nhóm 0Äặt lại nhóm trình đơnÄặt lại thiết bịÄặt lại giá trị thuá»™c tính thiết bịÄặt lại Ä‘iểm tiêu vá» tâmÄang đặt lại giao thức…Äá»™ phân giảiChuyển đổi độ phân giảiÄá»™ phân giải cá»™ng vá»›i kích cỡNgược lại đĩa lệnhNhững tín hiệu bị đảo ngượcThông tin há»§y bá»Ricoh / Philips driver by Lutz Mueller , Martin Fischer , dá»±a vào trình Ä‘iá»u khiển cá»§a Bob Paauwe. Ricoh Caplio G3. Marcus Meissner Thiết kế đối chiếu dùng USB Snoopy, xem lại ảnh cập nhật Firmware và Ä‘oán phóng túng. PhảiGóc xoayCá» xoayCảnh xoayMã hiệu thẻ nhá»› SD: %s Bá»™ nhá»› SD: %d MB tổng, %d MB trống. SDRAMSDRAM: Tập tin: %d Ảnh: %4d Phim: %4d Äã dùng: %8d Chá»— trống: %8d SDRAMTrình Ä‘iá»u khiển khung ảnh USB ST2205 Hans de Goede Trình Ä‘iá»u khiển này cho phép bạn tải vá», tải lên và xóa bỠảnh từ khung ảnh.Khung ảnh dá»±a vào ST2205 có sẵn vài bá»™ phân giải khác nhau. Trình Ä‘iá»u khiển gphoto dành cho thiết bị này cho phép bạn tải vá», tải lên và xóa bỠảnh từ khung ảnh.STV0674 Vincent Sanders Trình Ä‘iá»u khiển cho các máy ảnh dùng bá»™ xá»­ lý STV0674 ASIC. Giao thức được thiết kế đối chiếu dùng SnoopyPro STV0680 Adam Harrison Trình Ä‘iá»u khiển cho các máy ảnh dùng bá»™ xá»­ lý STV0680 ASIC. Giao thức được thiết kế đối chiếu dùng CommLite Beta 5 Carsten Weinholz ÄÆ°á»£c mở rá»™ng cho máy Aiptek PenCam và các máy ảnh STM USB chế độ đôi khác.Danh mục nhạc SamsungÄá»™ bão hòaPhông ná»nChế độ phông ná»nPhầnThá»i gian bảo mậtChá»n màuMàu có chá»n lá»cTá»± kẹn giá»Tá»± hẹn giá»Tá»± hẹn giá» (chỉ ảnh kế)Trá»… tá»± kẹn giá»Số tá»± hẹn giá» lần chụpGiá» tá»± hẹn giá»Tá»± thá»­ thiết bịTá»± hẹn giá»Tá»± hẹn giá» 10sTá»± hẹn giá» 2sTrá»… tá»± kẹn giá»Gá»­i Äối tượng RiêngGá»­i đáp ứng trạng thái gầnGá»­i yêu cầu đăng kýGá»­i yêu cầu giấy phép WMDRM-NDGá»­i yêu cầu ứng dụng WMDRM-PDGá»­i lệnh WMDRM-PDGá»­i yêu cầu WMDRM-PDGá»­i truy vấn yêu cầu cái Ä‘oGá»­i đối tượngGá»­i thông tin vỠđối tượngGá»­i danh sách thuá»™c tính đối tượngÄang gá»­i dữ liệu…Äá»™ nhạyMã hiệu máy nhạy: %d.%d Kiểu nâu Ä‘enDãy 9Số sản xuấtSố sản xuất: %s Thông tin khởi tạo phiênCài đặt bá»n bỉ trong phiên chạyÄặt vị trí giá» hiện tạiÄặt vùng tá»± động lấy nét NikonÄặt Chế độ Äiá»u khiển NikonKhông há»— trợ tính năng đặt thuá»™c tínhÄặt đồng hồ trong máy ảnhÄặt giá trị thuá»™c tính thiết bịÄặt đáp ứng giấy phépÄặt danh sách thuá»™c tính đối tượngÄặt giá trị thuá»™c tính đối tượngÄặt sá»± bảo vệ đối tượngÄặt các tham chiếu đối tượngCài đặt 4Cài đặt 5Cài đặt 6Cài đặt 7BóngBóngKhuynh hướng cân bằng trắng có bóngMáy ảnh nên kêu bíp khi chụp ảnh không?SắcMài sắcSắc hÆ¡nÄá»™ sắcNhóm chụpTên nhóm chụp ATên nhóm chụp BTên nhóm chụp CTên nhóm chụp DChế độ chụpTốc độ ChụpChế độ chụpChế độ chụp ảnh bị thay đổiCài đặt chụpTắt máyBá»™ đếm số lần chậpTốc độ màn trậpTốc độ chập (theo giây)Tốc độ chập (micrô-giây, 0 là tá»± động)Tốc độ chập 2Bóng đèn tốc độ chậpTốc độ cá»§a chập theo micrô-giây (0 tá»± động)Tốc độ màn trậpTốc độ chập bị thay đổiCá»­a-chá»›p/AF-ONSiPix Web2 Marcus Meissner Trình Ä‘iá»u khiển để truy cập máy ảnh SiPix Web2.BóngÄÆ¡nVùng đơnChụp má»™tKhung đơnIm lặng đơnChụp khung đơnAF phụ đơnAF vùng đơnAF động cÆ¡ tùy động đơnTrình Ä‘iá»u khiển Sipix StyleCam Blink Vincent Sanders Marcus Meissner . Ưu tiên kích thướcChế độ chất lượng kích cỡKích cỡ dữ liệu nhập vào máy ảnhKích cỡ dữ liệu xuất ra máy ảnhNhảy tá»›i vị trí kế trong danh mục nhạcCá»­a sổ ở mái nhàThá»i gian chiếu ảnhKhe 2 chế độ LưuChậmCài đặt chập chậmÄồng bá»™ chậmChập chậmÄồng bá»™ chậmÄồng bá»™ chậmSmal Ultrapocket Lee Benfield Trình Ä‘iá»u khiển để truy cập máy ảnh Smal Ultrapocket, và các phiên bản OEM (slimshot).Nhá»JPEG Tốt nhá»JPEG chuẩn nhá»MịnLàm mượtTuyếtMá»mMá»m hÆ¡nBản sá»­a đổi phần má»m: %s Ghi chú vá» máy ảnh Epson: * má»™t số tham số không thể được Ä‘iá»u khiển từ xa: ‣ thu phóng ‣ lấy nét ‣ Cài đặt cân bằng trắng riêng * Cấu hình đã được thiết kế đối chiếu bằng máy PhotoPC 3000z. Nếu máy ảnh cá»§a bạn hoạt động khác, xin hãy gá»­i thư cho %s (bằng tiếng Anh). (Ghi chú: bạn gặp khó khăn trong việc Ä‘á»c hay viết tiếng Anh thì gá»­i thư cho há»™p thư chung cá»§a nhóm dịch tại TP (translation-team-vi@lists.sourceforge.net) và chúng tôi sẽ dịch cho bạn) Ghi chú vá» máy ảnh Epson: * má»™t số tham số không thể được Ä‘iá»u khiển từ xa: ‣ thu phóng ‣ lấy nét ‣ Cài đặt cân bằng trắng riêng * Cấu hình đã được thiết kế đối chiếu bằng máy PhotoPC 3000z. Nếu máy ảnh cá»§a bạn hoạt động khác, xin hãy gá»­i thư (tiếng Anh) cho há»™p thư chung nhà phát triển gphoto. (Ghi chú: bạn gặp khó khăn trong việc Ä‘á»c hay viết tiếng Anh thì gá»­i thư cho há»™p thư chung nhóm dịch tại TranslationProject (translation-team-vi@lists.sourceforge.net) và chúng tôi sẽ dịch cho bạn) Ghi chú vá» máy ảnh Olympus (và máy ảnh khác?): 1. Cấu hình máy ảnh: Giá trị 0 sẽ đặt mặc định (tá»± động). (2) Máy ảnh Olympus C-3040Z (có lẽ cÅ©ng C-2040Z và má»™t số máy ảnh khác) có má»™t chế độ “USB PC Controlâ€. (Ä‘iá»u khiển bằng máy tính qua USB). Äể chuyển đổi sang chế độ này, mở máy ảnh, mở cá»­a truy cập thẻ nhá»›, rồi ấn giữ cả hai cái nút trình đơn và LCD đến khi trình đơn Ä‘iá»u khiển máy ảnh xuất hiện. Äặt nó thành “ON†(bật). (3) Nếu bạn chuyển đổi đổi chế độ “LCD mode†sang “Monitor†(màn hình) hay “Normal†(chuẩn), đừng quên chuyển đổi nó vỠ“Off†(tắt) trước khi ngắt kết nối. Không thì bạn không thể sá»­ dụng các cái nút cá»§a máy ảnh. Gây ra tình trạng này thì bạn nên tái kết nối máy ảnh đến máy tính, rồi chuyển đổi LCD sang “Off†(tắt).Ghi chú vá» máy ảnh Olympus: 1. Cấu hình máy ảnh: Giá trị 0 sẽ đặt mặc định (tá»± động). (2) Máy ảnh Olympus C-3040Z (có lẽ cÅ©ng C-2040Z và má»™t số máy ảnh khác) có má»™t chế độ “USB PC Controlâ€. (Ä‘iá»u khiển bằng máy tính qua USB). Äể chuyển đổi sang chế độ này, mở máy ảnh, mở cá»­a truy cập thẻ nhá»› nhá»›, rồi ấn giữ cả hai cái nút trình đơn và LCD đến khi trình đơn Ä‘iá»u khiển máy ảnh xuất hiện. Äặt nó thành “ON†(bật). (3) Nếu bạn chuyển đổi đổi chế độ “LCD mode†sang “Monitor†(màn hình) hay “Normal†(chuẩn), đừng quên chuyển đổi nó vỠ“Off†(tắt) trước khi ngắt kết nối. Không thì bạn không thể sá»­ dụng các cái nút cá»§a máy ảnh. Gây ra tình trạng này thì bạn nên tái kết nối máy ảnh đến máy tính, rồi chuyển đổi LCD sang “Off†(tắt).Thư viện máy ảnh Sonix Theodore Kilgore Máy ảnh Sonix. Chứa %i ảnh. Chụp SonyHá»— trợ máy ảnh Ä‘iện số Sony DSC-F1 M. Adam Kendall Dá»±a vào diao diện dòng lệnh chotplay cá»§a Ken-ichi Hayashi Chuyển sang Gphoto2 bởi Bart van Leeuwen Thư viện gPhoto Sony DSC-F55/505 Há»— trợ máy Sony MSAC-SR1 và Thanh Nhá»› dùng bởi máy DCR-PC100 Tạo gốc bởi Mark Davies Chuyển sang Gphoto2 bởi Raymond Penners Tiếc là không thể khởi tạo máy ảnh cá»§a bạn. Hãy thông báo.Tiếc là thuá»™c tính “%s†/ 0x%04x hiện tại là chỉ-Ä‘á»c.Tiếc là máy ảnh Canon cá»§a bạn không há»— trợ khởi tạo khả năng chụp kiểu Canon (Canon Capture).Tiếc là máy ảnh Canon cá»§a bạn không há»— trợ khả năng chụp EOS Canon.Tiếc là máy ảnh Canon cá»§a bạn không há»— trợ chế độ Kính Ngắm Canon (Canon Viewfinder).Tiếc là máy ảnh Canon cá»§a bạn không há»— trợ khả năng chụp kiểu CanonTiếc là máy ảnh Nikon cá»§a bạn không trả lại ảnh JPEG trong chế độ ngắm SốngTiếc là máy ảnh Nikon cá»§a bạn không há»— trợ chế độ ngắm SốngTiếc là máy ảnh cá»§a bạn không há»— trợ khả năng chụp cá»§a Nikon.Tiếc là máy ảnh cá»§a bạn không há»— trợ khả năng chụp chungÂm thanhTrình Ä‘iá»u khiển Soundvision Vince Weaver Chá»— còn trống: Cao: %d, Vừa: %d, Thấp: %d Tây Ban NhaKhông há»— trợ tốc độ %i!Không há»— trợ tốc độ hÆ¡n 57600 bps để tải lên máy ảnhThể thaoHành động thể thaoChấmÄo ítÄo ít cÅ©ng cÅ©ng khóa chuyển vá»›i khung AFChế độ Ä‘o chấmÄo Ä‘iểmÄo ít cÅ©ng khóa chuyển vá»›i khung AFChấm AFChuẩnTham số rá»­a phim ảnh tiêu chuẩnQuay phimKhởi độngKhởi chạy và tắt máyBước 2 khởi tạo bị lá»—i (trả vá» %i byte, cần %i byte). Máy ảnh không hoạt động.Bước 2 khởi tạo bị lá»—i (â€%s†khi Ä‘á»c %i). Máy ảnh không hoạt động.Bước 3 khởi tạo bị lá»—i (trả vá» %i, cần %i). Máy ảnh không hoạt động.Bước 3 khởi tạo bị lá»—i: “%s†khi Ä‘á»c %i. Máy ảnh không hoạt động.Bước 3 khởi tạo bị lá»—i: “%s†khi ghi %i. Máy ảnh không hoạt động.Bước 4 bị lá»—i (trả vá» %i, cần %i). Máy ảnh không hoạt động.Bước 4 bị lá»—i: “%s†khi Ä‘á»c %i. Máy ảnh không hoạt động.Chế độ chụp tÄ©nhẢnh StillLá»—i ánh sáng nhấp nháy.AF theo-dấu-chá»§-Ä‘á»Tóm tắt Mustek MDC800: Hoàng hônSiêu macroCá»±c tốtTá»± động cao cấpThuá»™c tính đối tượng MTP đã há»— trợ: Kích cỡ ảnh mẫu đã há»— trợQuét toàn cảnhÄang tắt máy ảnhBên khác đồng bá»™ hóaÄồng bá»™ hóa ngày giá» máy ảnh vá»›i máy tínhÄồng bá»™ hóa ngày giá» khung vá»›i máy tínhLá»—i hệ thống.TFTTFT + máy tínhTIFF (RGB)TTLTVCài đặt khóa TVÄịnh dạng Xuất ra TVGiá trị đích không phải là kiểu kiểm đếm.Tele-zoom cố định. Ưu tiên AEKết thúc mở chụpÄang thá»­ các tốc độ khác nhau…“Máy ảnh†duyệt qua thư mục thì cho bạn mục lục các ảnh trên đĩa cứng.Máy ảnh JD11 hoạt động hÆ¡i khá vá»›i trình Ä‘iá»u khiển này. Má»™t giao diện RS232 có tốc đô 115 kbit cần thiết để truyá»n ảnh. Trình Ä‘iá»u khiển này cho bạn có khả năng lấy: * ảnh mẫu (64×48 định dạng PGM) * ảnh đầy đủ (640×480 định dạng PPM) Máy ảnh Kodak DC120 camera dùng định dạng tập tin KDC để cất giữ các ảnh. Muốn xem những ảnh được tải xuống máy ảnh thì bạn cÅ©ng cần phải tải xuống chương trình “kdc2tiffâ€. Có thể lấy nó ở “http://kdc2tiff.sourceforge.netâ€.Trình Ä‘iá»u khiển Samsung digimax 800k được tạo bởi James McKenzie cho phần má»m gphoto. Lutz Mueller đã chuyển nó sang gphoto2. Marcus Meissner đã sá»­a chữa và tăng cưá»ng bản chuyển.Máy ảnh có pin quá yếu (%d%%) nên thao tác bị há»§y bá».Không thể liên lạc vá»›i máy ảnh. Hãy kiểm tra xem nó được kết nối đến máy ảnh, và được mở.Máy ảnh không chấp nhận lệnh đó.Máy ảnh không chấp nhận “%s†là tên tập tin.Máy ảnh không há»— trợ tốc độ %i.Máy ảnh má»›i trả lại má»™t lá»—i chưa được phát hiện. Xin hãy thông báo cho %s thông tin này vá»›i thông tin thêm vá» cách tạo lá»—i đó: (0x%x,0x%x). Cám Æ¡n nhiá»u!Máy ảnh đã gá»­i nhiá»u byte hÆ¡n số cần (%i)Máy ảnh đã gá»­i chỉ %i byte, còn cần ít nhất %i.Tập tin cần tải lên có độ dài vô giá trịÄá»™ dài cá»§a tên tập tin không thể vượt quá 12 ký tá»± (â€%s†có %i ký tá»±).Hệ thống tập tin này không há»— trợ khả năng tải lên tập tin.Hệ thống tập tin này không há»— trợ khả năng lấy thông tin vá» tập tinHệ thống tập tin này không há»— trợ khả năng lấy tập tinHệ thống tập tin này không há»— trợ khả năng lấy thông tin cất giữHệ thống tập tin này không há»— trợ khả năng đặt thông tin vá» tập tinByte đầu tiên được nhận (0x%x) không phải hợp lệ.ÄÆ°á»ng dẫn “%s†không phải tuyệt đối.Thuá»™c tính “%s†/ 0x%04x chưa được đặt (0x%04x: %s)Thuá»™c tính “%s†/ 0x%04x chưa được đặt (0x%04x: %s).Kiểu cổng đã yêu cầu (%i) không được há»— trợ bởi trình Ä‘iá»u khiển này.Vẫn còn có tập tin trong thư mục “%s/%s†bạn Ä‘ang thá»­ gỡ bá».Vẫn còn có thư mục con trong thư mục “%s/%s†bạn Ä‘ang thá»­ gỡ bá».Có hai giá trị độ phân giải, 352×288 và 176×144. Dữ liệu ảnh chụp theo định dạng JPEG khi được tải xuống thì không có kích cỡ đã xác định sẵn. Vì vậy chỉ có thể ước lượng số tối Ä‘a các ảnh chụp nằm được trên má»—i máy ảnh. Tất cả các tùy chá»n gphoto2 sẽ hoạt động được, trừ những mục theo đây mà không được phần cứng há»— trợ: * Xóa ảnh riêng hoặc những ảnh đã chá»n (gphoto2 -d) * Chụp (â€gphoto2 --capture†hoặc “--capture-imageâ€) Tuy nhiên, có thể bắt bằng giao diện máy ảnh Web, được mô Ä‘un hạt nhân spca50x há»— trợ. Khả năng truy cập vào giao diện ngưá»i dùng bằng gtkam đã được thá»­, và hoạt động được. Tuy nhiên, máy ảnh không tạo ảnh mẫu riêng. Vì má»—i ảnh cÅ©ng nhá» vá»›i độ phân giải thấp, trình Ä‘iá»u khiển chỉ tải vỠảnh thật để sá»­ dụng làm ảnh mẫu. Máy ảnh có khả năng chụp trong chế độ “trích phimâ€. Các khung kết quả được lưu vào đây dạng má»™t dãy ảnh tÄ©nh. Ngưá»i dùng có thể hoạt há»a chúng bằng (thí dụ) chức năng “hoạt há»a†(animate) cá»§a ImageMagick. Äể lấy chi tiết vá» các chức năng cá»§a máy ảnh, Ä‘á»c tài liệu Äá»c Äi: llibgphoto2/camlibs/clicksmart310/README.clicksmart310. Má»™t thao tác Ä‘ang chạy. Máy ảnh này chỉ há»— trợ chạy má»™t thao tác má»—i lần. Hãy đợi kết thúc thao tác này.Có sức chứa cho ảnh thêm (má»™t cá»§a): %d ảnh đã nén thấp %d ảnh đã nén vừa %d ảnh đã nén cao Máy ảnh này không thể ô xem thá»­ chụp.Máy ảnh này không thể chụp.Máy ảnh này không có nút bấm chụp.Máy ảnh này có má»™t bá»™ chíp Ä‘iá»u khiển Jeilin JL2005%c. Số lượng ảnh mà nó chứa là %i. Máy ảnh này có má»™t bá»™ chíp Ä‘iá»u khiển Jeilin JL2005A. Số lượng ảnh mà trong nó là %i. Máy ảnh này không cung cấp sổ tay.Máy ảnh này không cung cấp tùy chá»n cấu hình nào.Máy ảnh này không cung cấp thông tin vá» trình Ä‘iá»u khiển.Máy ảnh này không há»— trợ khả năng đặt tùy chá»n cấu hình.Máy ảnh này không há»— trợ khả năng tóm tắt.Trình Ä‘iá»u khiển này há»— trợ máy ảnh chứa con chíp Jeilin jl2005B, C hay D. Máy ảnh kiểu này không há»— trợ chức năng xóa ảnh chụp, cÅ©ng không há»— trợ chức năng tải lên dữ liệu. Khung trích Ä‘oạn phim trên máy ảnh được tải xuống dưới dạng má»™t dãy ảnh chụp tÄ©nh. Äể tìm chi tiết, xem tài liệu Äá»c Äi “libgphoto2/camlibs/README.jl2005câ€. Trình Ä‘iá»u khiển này há»— trợ máy ảnh chứa con chíp Jeilin jl2005a. Máy ảnh kiểu này không há»— trợ chức năng xóa ảnh chụp, cÅ©ng không há»— trợ chức năng tải lên dữ liệu. Tiến trình giải mã ảnh chụp đã nén có thể hoạt động được hay không: nó không hoạt động cùng khá cho má»i máy ảnh được há»— trợ. Khung trích Ä‘oạn phim trên máy ảnh được tải xuống dạng má»™t dãy ảnh chụp tÄ©nh. Äể tìm chi tiết, xem tài liệu Äá»c Äi “libgphoto2/camlibs/README.jl2005aâ€. Trình Ä‘iá»u khiển này há»— trợ máy ảnh chứa con chíp Mars MR97310 (và tương tá»± trá»±c tiếp ??Pixart PACx07??). Máy ảnh kiểu này không há»— trợ chức năng xóa ảnh chụp, cÅ©ng không há»— trợ tải lên dữ liệu. Tiến trình giải mã các ảnh chụp đã nén có thể hoạt động được hay không: nó không hoạt động cùng khá cho má»i máy ảnh đã há»— trợ. KHÔNG Há»– TRỢ chức năng xá»­ lý dữ liệu ảnh chụp cho máy ảnh Argus QuickClix. Khung trích Ä‘oạn phim trên máy ảnh được tải xuống dạng má»™t dãy ảnh chụp tÄ©nh. Äể tìm chi tiết, xem tài liệu Äá»c Äi “libgphoto2/camlibs/READMEâ€. Trình Ä‘iá»u khiển này há»— trợ má»™t số máy ảnh chứa con chíp Sonix sn9c2028. Há»— trợ những thao tác này: * ảnh mẫu cho giao diện đồ há»a * ảnh đầy đủ theo định dạng PPM * xóa má»i ảnh * xóa ảnh cuối cùng (có lẽ không hoạt động được trên má»i ảnh Sonix) * bắt ảnh sang máy ảnh (cÅ©ng vậy) Các khung phim được tải xuống máy ảnh dạng dãy ảnh chụp tÄ©nh hay dạng tập tin AVI, phụ thuá»™c vào mô hình máy ảnh. Ảnh mẫu cho AVI là ảnh chụp tÄ©nh được tạo từ khung đầu. Không thể xóa má»™t ảnh riêng lẻ nếu nó không phải là ảnh cuối cùng. Äây là trình Ä‘iá»u khiển cho các máy ảnh Canon PowerShot, Digital IXUS, IXY Digital, và EOS Digital trong chế độ sở hữu (cÅ©ng được gá»i là “chuẩnâ€). Nó cÅ©ng há»— trợ vài máy thu-ghi hình Ä‘iện số Canon có khả năng ảnh tÄ©nh. Nó chứa mã để liên lạc qua cổng nối tiếp hay kết nối USB, nhưng không phải (chưa) qua IEEE 1394 (Firewire). Nó được thiết kế để hoạt động được vá»›i hÆ¡n 70 máy, từ máy rất cÅ© như PowerShot A5 và Pro70 cá»§a năm 1998 đến máy má»›i như PowerShot A510 và EOS 350D cá»§a năm 2005. Nó chưa được thẩm tra vá»›i máy EOS 1D hay EOS 1Ds. Äối vá»›i máy A50, dùng 115200 bps có thể có kết quả chậm hÆ¡n khi dùng 57600 bps. Nếu bạn gặp nhiá»u lá»—i truyá»n nối tiếp, hãy giữ máy tính càng nghỉ càng có thể (tức là đĩa không hoạt động). Thư viện này đã được thá»­ vá»›i máy ảnh Kodak DC 215 Zoom. Nó có lẽ hoạt động được vá»›i máy ảnh DC 200 và DC 210. Nếu bạn có máy ảnh kiểu này, xin hãy viết thư cho tôi ở địa chỉ để cho tôi biết nếu thư viện trình Ä‘iá»u khiển này chạy được không.Ô xem thá»­ này không tồn tại.Ảnh thu nhá»Äá»™ cao ảnh thu nhá»: %d Kích cỡ ảnh thu nhá»: %d Äá»™ rá»™ng ảnh thu nhá»: %d Dịch-nghiêngÄịnh dạng thá»i gianGiá»: %a, %d %b %Y %T Thá»i gian đã quaKhoảng thá»i gianSố khoảng thá»i gianQuá thá»i ngay cả sau hai lần thá»­ lại. Hãy liên lạc vá»›i %s.Äồng hồ hẹn giá»Chụp hẹn giá» (đơn)Hẹn giá» + Ä‘iá»u khiểm từ xaHẹn giá» 10 giâyHẹn giá» 2 giâySá»± bù sắc màuQuá sángQuá tốiQuá nhiá»u lần thá»­ lại đã không thành công.TrênTopfield TF5000PVR Marcus Meissner Thư viện để tải xuống/lên tập tin từ má»™t Topfield PVR. Chuyển từ puppy © Peter Urbanec Toshiba David Hogue Trình Ä‘iá»u khiển Toshiba pdr-m11. Tổng số lần nháy: %d Tổng ảnh chụp: %d, Lần nháy đèn: %d Tổng số ảnh đã chụp: %d Việc truyá»n gói tin đã quá thá»i, ngay cả sau %i lần thá»­ lại. Hãy liên lạc vá»›i %s.Tiến trình gá»­i đã quá thá»i, ngay cả sau hai lần thá»­ lại, nên chịu thua…Xén ngắn Äối tượngÄang thá»­ liên lạc vá»›i máy ảnh…Chỉnh nhiệt độ màuChỉnh định sẵn 0Chỉnh định sẵn 1Chỉnh định sẵn 2Chỉnh định sẵn 3Chỉnh định sẵn 4Dây tócKhuynh hướng cân bằng trắng bóng đèn dây tócChế độ Tăng tốcTvKiểu chiếu ảnhU1U2Ngôn ngữ UiKhóa UIKiểu khóa UIGiá» UNIXUSB 1.1USB 2.0Tốc độ USBKhông xác địnhChưa định nghÄ©aÂm thanh chưa xác địnhMục lịch chưa xác địnhTập hợp chưa xác địnhLiên lạc chưa xác địnhTài liệu chưa xác địnhTin nhắn chưa xác địnhPTP: chưa định nghÄ©a thuá»™c tínhPhim chưa xác địnhTập tin có khả năng thá»±c hiện Windows chưa xác địnhBên dưới > MTRDưới nướcKhông rõKhông hiểu %dLệnh lạLá»—i thư viện máy ảnh không rõLá»—i không rõLá»—i lạ.Không rõ kiểu tập tin %i.Không rõ chế độ đèn nháy %d, Không hiểu mô hìnhKhông rõ mô hình “%sâ€Giá trị không rõGiá trị không rõ %04dGiá trị không rõ %04xGiá trị không rõ 0x%04xKhông rõ chế độ thu phóng %d Không rõ (%04x)Không rõ: 0x%04x Äáp ứng không được nhận raThẻ nhá»› không thích hợpLệnh không được há»— trợ.ÄÆ°a ra kiểu cổng không được há»— trợ %i = 0x%x nên không thể khởi tạo.Không há»— trợ kiểu cổng: %d. Trình Ä‘iá»u khiển này chỉ chạy được vá»›i máy ảnh kiểu USB. Chưa dùngCập nhật Firmware thiết bịURL tải lênChỉ há»— trợ khả năng tải lên thư mục “%sâ€Äang tải lên tập tin…Äang tải lên ảnh…Äang tải lên ảnh: %s.Äang tải lên…Trên 1Trên 2Ngưá»i dùng đã thôi tải vá»Tá»± xác định 1Tá»± xác định 2Tá»± xác định 3Phần mở rá»™ng nhà sản xuấtMô tả phần mở rá»™ng nhà sản xuất: %s Mã số phần mở rá»™ng nhà sản xuất: 0x%x (%d.%d) Mã hiệu nhà sản xuất: %02x%02x Phiên bản: Phiên bản: %s AF dá»c đã bậtChế độ phimPhim RAPhim raLưới kính ngắmHiển thị lưới kính ngắmLưới kính ngắm ảoÄiá»u khiển làm má» nét ảnhSặc sỡCài đặt hay thay đổiMức âm lượngCân bằng Trắng bá»§a vâyWEP 128-bitWEP 64-bitWIFI ESSIDKênh WIFIHồ sÆ¡ WIFIWLAN GUIDDanh mục nhạc WPLÄang đợi hoàn tất…Äang chá»â€¦Hiển thị Cảnh báoCảnh báo cấp 0Cảnh báo cấp 1Trạng thái Cảnh báoCảnh báo trong hàm đặt các thuá»™c tính tập tin canon_usb_set_file_attributes: há»™p thoại canon_usb_dialogue đã trả lại trạng thái lá»—i 0x%08x từ máy ảnh.NướcCần 0x%x, còn nhận 0x%x. Hãy liên lạc vá»›i %s.YếuCân bằng trắngÄịnh sẵn bù cân bằng trắng 0Äịnh sẵn bù cân bằng trắng 1Äịnh sẵn bù cân bằng trắng 2Äịnh sẵn bù cân bằng trắng 3Äịnh sẵn bù cân bằng trắng 4Số định sẵn bù cân bằng trắngTrình Bá»§a vây cân bằng trắngBước Bá»§a vây cân bằng trắngNhiệt độ màu cân bằng trắngTên định sẵn cân bằng trắng 0Tên định sẵn cân bằng trắng 1Tên định sẵn cân bằng trắng 2Tên định sẵn cân bằng trắng 3Tên định sẵn cân bằng trắng 4Số định sẵn cân bằng trắngGiá trị định sẵn cân bằng trắng 0Giá trị định sẵn cân bằng trắng 1Giá trị định sẵn cân bằng trắng 2Giá trị định sẵn cân bằng trắng 3Giá trị định sẵn cân bằng trắng 4Bảng trắngCân bằng trắngBảng trắngLá»›p trắng:Cân bằng trắngCân bằng trắng chỉnh ACân bằng trắng chỉnh BCân bằng trắng X ACân bằng trắng X BLá»—i đặt lại cân bằng trắngRá»™ngAF phong cảnhÄịnh dạng ảnh WindowsÄồng bá»™ wirelessGhiBảo vệ chống ghiDãy thoát không đúng: cần 0x%02x, nhưng lại nhận 0x%02x.Tài liệu XMLYYYY/MM/DDNăm/Tháng/NgàyCóBạn đã thá»­ xóa “%s†khá»i thư mục “%sâ€, nhưng mà hệ thống tập tin không há»— trợ khả năng xóa tập tin.Bạn cần phải đặt cổng trước khi khởi tạo máy ảnh.Bạn phải dùng chế độ thu để chụp ảnh.Bạn cần xác định má»™t thư mục bắt đầu vá»›i “ /store_xxxxxxxxx/â€Máy Logitech Clicksmart 310 chứa %i ảnh. Máy ảnh USB cá»§a bạn có bá»™ chíp Ä‘iá»u khiển cá»§a S&Q. Tổng số ảnh mà nó chứa là %i Má»™t số ảnh có thể là trích Ä‘oạn chứa vài khung. Máy ảnh USB cá»§a bạn có bá»™ con chíp Aox. Số ẢNH phân giải thấp = %i Số ẢNH phân giải cao = %i Tổng số ẢNH = %i Máy ảnh USB cá»§a bạn là Kodak EZ200. Tổng ảnh = %i Máy ảnh USB cá»§a bạn là máy iClick 5X. Tổng số ảnh có thể chụp là %i Có vẻ là máy ảnh USB cá»§a bạn là LG GSM. Firmware: %s Phiên bản Firmware: %s Khung ảnh USB cá»§a bạn có má»™t bá»™ chíp Ä‘iá»u khiển AX203 Khung ảnh USB cá»§a bạn có má»™t bá»™ chíp Ä‘iá»u khiển ST2005 Máy ảnh cá»§a bạn chỉ há»— trợ khả năng xóa tập tin cuối cùng trên máy ảnh. Trong trưá»ng hợp này, đây là tập tin “%sâ€.Vùng lấy nét (Gần)Vùng lấy nét (Cận cảnh)Vùng lấy nét (Xa)Vùng lấy nét (Vừa)Vùng lấy nét (dành riêng 1)Vùng lấy nét (dành riêng 2)Vùng lấy nét (dành riêng 3)Vùng lấy nét (dành riêng 4)Vùng lấy nét (Rất gần)Thu phóngThu phóng (theo mili-mét)Mức phóng to bị thay đổiThu phóng: 29 mm Thu phóng: 34 mm Thu phóng: 41 mm Thu phóng: 51 mm Thu phóng: 58 mm Thu phóng: macro (chụp cận cảnh) bá»™ tiếp hợp Ä‘iện chínhagfa_cl20 Nhóm Trình Ä‘iá»u khiển Linux Agfa CL20! Liên lạc vá»›i chúng tôi bằng thư Ä‘iện tá»­ . Äến thăm chúng tôi ở . tá»± độngtá»± động, giảm mặt Ä‘á»pinÄ‘en trắngbóng đèn sợi đốtmáy ảnh đã nghỉ trong >9 giây nên khởi tạo lại. không thể bị truy vấn. canon_int_capture_image: tiến trình canon_usb_list_all_dirs() (liêt kê má»i thư mục) cuối cùng đã thất bại vá»›i trạng thái %icanon_int_capture_image: tiến trình canon_usb_list_all_dirs() (liêt kê má»i thư mục) đầu tiên đã thất bại vá»›i trạng thái %licanon_int_get_info_func: Lá»–I: thông Ä‘iệp khởi tạo quá ngắn (%i < tối thiểu %i)canon_int_list_directory: Lá»–I: thông Ä‘iệp đầu tiên quá ngắn (%i < tối thiểu %i)canon_int_list_directory: Tá»›i kết thúc gói trong khi kiểm tra mục tin thư mục thứ nhấtcanon_int_list_directory: gặp mục tin thư mục bị cắt ngắncanon_serial_get_dirents: Không thể cấp phát %i byte bá»™ nhá»›canon_serial_get_dirents: Không thể thay đổi kích cỡ cá»§a bá»™ đệm mục tin thư mục thành %i bytecanon_serial_get_dirents: Gặp lá»—i khi Ä‘á»c mục tin thư mục kháccanon_serial_get_dirents: Gói tin mục tin thư mục đầu tiên quá ngắn (chỉ %i byte)canon_serial_get_dirents: Quá nhiá»u mục tin thư mục, chắc là vòng lặp.canon_serial_get_dirents: Nhận mục tin thư mục bị cắt ngắncanon_serial_get_dirents: canon_serial_dialogue không lấy được các mục tin thư mụccanon_usb_get_body_id: độ dài dữ liệu bất thưá»ng được trả lại (%i byte, cần %i).canon_usb_get_dirents: không thể vừa trá»ng tải trong bá»™ đệm, “%.96s†(bị cắt ngắn) quá dài.canon_usb_get_dirents: há»™p thoại canon_usb_long_dialogue không lấy được các mục tin thư mục, trả lại %i.canon_usb_list_all_dirs: không thể vừa trá»ng tải trong bá»™ đệm, “%.96s†(bị cắt ngắn) quá dài.canon_usb_list_all_dirs: há»™p thoại canon_usb_long_dialogue không lấy được các mục tin thư mục, trả lại %i.canon_usb_lock_keys: độ dài bất thưá»ng được trả lại (%i byte, cần %i).canon_usb_lock_keys: độ dài bất thưá»ng được trả lại từ hàm “khóa các khóa†(%i byte, cần %i).canon_usb_set_file_attributes: há»™p thoại USB canon_usb_dialogue bị lá»—icanon_usb_unlock_keys: độ dài bất thưá»ng được trả lại (%i byte, cần %i).màuthư viện coolshot phiên bản không thể thay đổi tên ngưá»i sở hữukhông thể đặt giá»Ã­t má»±cbên ngoàitô đầy vàotốtgPhoto2 Mustek VDC-3500/Relisys Dimera 3500 Phần má»m này dùng thông tin được công tyStarDot Technologies sở hữu. Tác giả: Brian Beattie Ngưá»i đóng góp: Chuck Homic Chuyển đổi ảnh chụp thô sang RGB Dan Fandrich Thông tin vá» giao thức, định dạng ảnh thô, chuyển sang gphoto2 Thư viện gsmart300 Till Adam Jerome Lodewyck Khả năng há»— trợ máy ảnh Ä‘iện số kiểu Mustek gSmart 300 dá»±a vào vài mô-Ä‘un thư viện máy ảnh cá»§a gphoto2 và các đặt tả được cung cấp thân ái bởi Mustek. cao (640×480)nén cao, hp215 Marcus Meissner Trình Ä‘iá»u khiển để truy cập máy ảnh HP Photosmart 215. Trá»™n được từ chương trình hp215 độc lập. Trình Ä‘iá»u khiển này cho phép tải xuống các ảnh và ô xem thá»­, và xóa ảnh. Trình Ä‘iá»u khiển iClick 5X Theodore Kilgore iTTLtrong chế độ tô đầyvô hạntrên máyThư viện jamcam vThư viện máy ảnh jl2005a Theodore Kilgore Thư viện máy ảnh jl2005bcd Theodore Kilgore lá»—i khóa các khóa.không mấtthấp (320×240)nén ít, mRAWmRAW + JPEG Lá»›n ÄẹpRAW + JPEG Thưá»ng Lá»›nmRAW + JPEG Vừa ÄẹpRAW + JPEG Thưá»ng VừamRAW + JPEG Nhá» ÄẹpmRAW + JPEG Nhá» Thưá»ngnén vừa, trình đơnchưa thông báo trạng thái.không cóchuẩnkhông sẵn sàng: %stắtbậtbật, giảm mắt Ä‘á»dùng pinkhởi tạo pccam600: Gặp lá»—i bất ngá»: gp_port_read trả vá» %d thay vì %dpccam600_close: giá trị trả vá» là %d thay vì %dpccam600_get_file: nhận chỉ mục %d nhưng cần chỉ mục >%dpccam600_init: Cần %d khối nhưng chỉ nhận %dpccam600_init: Cần >%d khối nhưng chỉ nhận được %dphátnguồn Ä‘iện OKlá»—i nguồn Ä‘iệnchỉ Ä‘á»cÄ‘á»c ghisẵn sàngthuhàm gá»i đệ qui không phải được trình Ä‘iá»u khiển sierra há»— trợ. Hãy liên lạc vá»›i %s.chống mắt Ä‘á»: tắt. chống mắt Ä‘á»: bật. giảm mắt Ä‘á»sRAWsRAW + JPEG Lá»›n ÄẹpsRAW + JPEG Thưá»ng Lá»›nsRAW + JPEG Vừa ÄẹpsRAW + JPEG Thưá»ng VừasRAW + JPEG Nhá» ÄẹpsRAW + JPEG Nhá» Thưá»ngsRGBsRGB (tá»± nhiên)sRGB (chân dung)Thư viện sierra SPARClite Scott Fritzinger Khả năng há»— trợ các máy ảnh Ä‘iện số dá»±a vào sierra, gồm có Olympus, Nikon, Epson và Pentax. Cám Æ¡n Data Engines (www.dataengines.com) đã cho phép dùng sá»± thá»±c hiện há»— trợ Olympus C-3030Z cá»§a há» cho USB.Thư viện spca50x phiên bản vTrình Ä‘iá»u khiển chung sq905 Theodore Kilgore Trình Ä‘iá»u khiển chung sq905C Theodore Kilgore chuẩncá»±c tốtsx330z chỉ dùng USBđặt giá»không thể Ä‘oán giá trị CRC đầu tiên chưa xác địnhkiểu dữ liệu bất thưá»ng %ikhông rõ (0x%02x)nén không rõ %d, phân giải không rõ %d) vCalendar1vCalendar2vCard2vCard3cảnh báo: chưa kiểm CRC (thêm độ dài %d, giá trị 0x%04x) ######################### libgphoto2-2.5.9/po/sv.gmo0000644000175000001440000013727612623156275012320 00000000000000Þ•FL|$È0hÉ0421g1 1;Œ1È1×1ó1ø1ý122 2222 2 '2225292>2D2G2M2P2V2Y2_2e2 h2r2u2x2{2 ~2‰2 Ÿ2.ª2Ù2â2ç23 "303I3\3t3 …33£3+«31×3' 4(14Z4 x4†5™5o«56#:6^6c6 h6 v6 ‚6Ž6“6›6£6·6Ê6Ï6Ö6Oë6;7K79k7¥7@¹7 ú78178i8†8#›8¿8Ü8ô89)&9$P9>u9´9¼9Ú9é9:: ):6:O:c:: ™:£:µ:¾:Í: Ô:ß:î: ;!;7;M;c;€; ’; ž;"¬;Ï; ã; í; ÷;< <:/<<j<§<Ä<!Þ<'=(=D=(^=‡=£= ¿=;à=0>M>b>5{>5±>sç>[?v?“? š? ¦? ²?À?ÿÔ?Ô@ã@é@ü@. A sJsOs Ws-es“s™s¬sÈs Ûsæs’ës~u u šu¥u ¶uÄuÉuÝuäuöuúu ýuv v v v&v -v7vJvSvudvfÚw8Axzx •x9 x Úxçxyy yyyyy"y&y +y 6y@yCyGyLyRyUy[y^ydygymysy vy€yƒy†y‰y Œy—y ­y+·yãyìyñy z )z 5zVzjz„z “zŸz ´z5¾z:ôz-/{6]{"”{ ·{Ä|Ù|lì|!Y}"{}ž}¢}§} °} ¼}Æ}Ê}Ð}Ö}ê}~~~N)~x~#Œ~7°~è~Jü~G%b.ˆ·Ó%ñ€3€K€k€;‚€!¾€7à€ 4BYs…•­¼Ú÷‚‚‚(‚.‚7‚I‚d‚{‚‚£‚·‚Õ‚ ç‚ ó‚!ƒ#ƒ 8ƒ Bƒ LƒVƒ qƒ9~ƒ;¸ƒ&ôƒ„!8„'Z„‚„¡„+¾„"ê„" …10…=b…5 …Ö…í…> †2L†u†õ†!‡3‡ 9‡ E‡ Q‡_‡ùs‡ mˆ zˆ„ˆ—ˆ.­ˆ ܈ éˆ@öˆ7‰G‰]‰q‰„‰“‰¦‰½‰Ó‰ë‰ŠŠ ,Š6ŠFŠ`Š{ГЦнŠÖŠíŠòŠûŠÿŠ‹2‹0P‹‹%•‹4»‹ ð‹û‹Œ&Œ?ŒBŒGŒLŒOŒTŒWŒ+\ŒˆŒ ˜Œ¤Œ¶ŒÅŒÔŒjÛŒFJd~ƒ ‰”¥ ¸"Å è ó þŽ3Ž<ŽCŽ IŽ SŽ]ŽmŽ tŽ!‚ޤ޻ŽÃŽ ÈŽÒŽØŽðŽÿŽ ! BUZ^oãeR…TØ--‘[‘b‘ e‘s‘y‘Œ‘ ‘‘ ‘ «‘ ¸‘ Ä‘Ò‘é‘ø‘ ’’+’ 2’<’ W’c’t’…’Ž’ ¥’ ±’ƒ¼’@“E“ N“o“öt”€k•Õì•^–!—d6— ›—¥—©—%¾—ä—ó—ü—˜ ˜3˜H˜a˜r˜ƒ˜š˜&²˜Ù˜ ߘ옙#™>™$U™z™~™Ž™¡™U§™ý™š š'š;šSšršš{•šO›a›/j›…š› œ 2œ?œ)Dœznœé#í žž.žGžcžzž•ž ›ž¦ž­ž µž8¿ž øžFŸKŸ]ŸnŸ%€Ÿ¦Ÿ©Ÿ¬Ÿ¯Ÿ²ŸµŸDÍŸ " 8 ? S  p ~ † ˜ œ  ® Ï ë ý ¡#0¡#T¡x¡•¡°¡Æ¡ã¡û¡¢#2¢V¢^¢v¢¢¦¢º¢Õ¢ï¢$£)-£W£h£…£ž£¹£Í£³ä£\˜¤ õ¤ ¥ ¥¥2¥J¥\¥ c¥ m¥!{¥!¥$¿¥ä¥)ÿ¥!)¦2K¦~¦ž¦ ´¦=¦§%§+§E§Y§j§s§ƒ§‡§›§¯§Sµ§ ¨ "¨-¨>¨’V¨é¨ ï©!ý©ª2ªAª Sª^ªvª'Œª´ªǪ!㪠«_&«m†«ô«ý« ¬¹¬Ø×¬°­6µ­+ì­® ®C7®{®® –® ®¾®Ç® Ú®å®ö®F¯ÜV¯á3°ò±@²#I²)m²#—²,»²:è²)#³BM³.³7¿³.÷³7&´/^´Ž´7­´œå´.‚µ ±µ6Òµ? ¶+I¶+u¶¡·³·È· Û·æ·.¸F4¸{¸ —¸¡¸ »¸ Ÿи á¸î¸¹¹:$¹F_¹*¦¹ѹã¹û¹ º)º AºKºbº |º†º ‹º •º Ÿº ©º8¶º ïºüº`ÿº`»e» y»„»‰» ‘»5›»Ñ»Ø»ë»¼"¼*¼˜.¼ ǽ Õ½á½é½ ü½ ¾¾)¾0¾C¾F¾ I¾ T¾^¾ g¾s¾x¾¾оŸ¾®¾üécnÕ¿¨Äc‰©Æ÷? [%GØÁñ}-WJR…LsŸ;e§v选B(2ünFÓGëª=C9m‚èÞ&uú¾ÄVº1jÙN… ÞÐ0E +J8 "_ì|óÿ|¾^5,ò—æD­´¤9ãXâf íwDBFhp›Ý¼ Ã¥.î ‹Ö3Ÿd!ê.k6¬Áö"æ†V^:L˜ ÝX#{·‘ÉO'e¿§bø$zÎoäê•xœDr²Ö;·rßàÏ‹M{媺›%*B8õÑ)<aH¢'ïWó(_Ô°}~]ŠàU»±'è,-ôÌÛ„`:U <²† OEÒ¨—ðÆ?«Èë.yÍm‚Pô x®,Š µñÇÑ­f¡’µAƒAçþ³@â<øç¼ƒÌ 2û wÔ4ÿÓÉ p¹Ê«À¯Ëš4& 7ý9×IÏ5žH–[a‡ˆ¢ûŒ»Mù+/¡¬dÅÂ=>–þšQYÀTÒg>v#Ž“Øg½å%Sjïk0ð`£C¸:)7Ù/>Â50„½ž\/S®Ç¥¶+ú(Y;Ãùi¦Ð~Üi¦ŽÕ7=1©R P3$Îqî¯4™”CE‡]#Ú£´ Zòõ3Ú™÷×AlyœÛ\T¶*ýÜ Ê2ã1@ö˜!ˆtuì)³ßáŒs¸l‘o¹ÅZ$tä*°8-”áíFIN6ÍKK@ !“¤qÈz€hbQ&Ë’6?•±" Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Drive %s %11s bytes total %11s bytes available (battery is %d%% full)%i (unknown)%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)-0.5-1.0-1.5-2.00.00.51.01.51.6x1152 x 8641280 x 9601x2.02.5x29 mm2x34 mm3x41 mm4x51 mm58 mm5x640 x 4806x7x8x9xAC adapterASIC Revision: %d.%d Album nameAn error occurred in the io-library ('%s'): %sApertureAutoAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off TimeAuto Power Off (minutes)Auto exposure lockAuto, red-eye reductionAutofocus error.Automatic Available memory: Bad EOTBad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.Battery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery exhausted, camera off.Battery status: %s, AC Adapter: %s BeepBestBlack & WhiteBlack BoardBlack/WhiteBlueBright+Bright-Brightness/ContrastBulb Exposure TimeBusyCameraCamera ConfigurationCamera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera SettingsCamera and Driver ConfigurationCamera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera unavailableCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCaptureCapture type is not supportedCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card not supported.Card removed during access.Changing speed... wait...CharacterCharacter & SoundChargingChecksum errorCloudyColor ModeColor SettingsCommand can not be cancelled.Command order error.Communication error 1Communication error 2Communication error 3Compact Flash Card detected CompactFlash CardCompressionConfigurationConfiguration for your FUJI cameraConnected to cameraContrast+Contrast-CopyrightCopyright (max. 20 characters)Corrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not detect any cameraCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Current Mode: Camera Mode Current Mode: Playback Mode CustomDate & TimeDate FormatDate and TimeDate and time (GMT)Date: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDay/Month/YearDebugDeleting image %s.Detected a '%s'.Digita Johannes Erdfelt Digital ZoomDigital zoomDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisconnecting camera.Do not display TV menuDownloading %s.Downloading '%s'...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading thumbnail...Downloading...DriverDual IrisEEPROM checksum error.ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.EmptyEnglishErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationExecute predefined command with parameter values.ExposureExposure CompensationExposure MeteringExposure compensationF2F2.3F2.8F4F5.6F8FileFile '%s' could not be found in folder '%s'.File compressionFile existsFile not foundFile protected.File resolutionFile typeFile was too big. You may have to turn your camera off and back on before uploading more files.FineFirmware Revision: %d.%d Firmware version: %d.%02d FixedFlashFlash ModeFlash SettingFlash SettingsFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFluorescentFocusFocus ModeFocus positionFocusing error.ForceForce Flash Format card and set album name.Format compact flashFrenchFullGeneralGermanGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...GreenHighHigh (1152 x 872)High (good quality)Host Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?HyPictIDISO SpeedIdleIllegal parameter.ImageImage & SoundImage AdjustmentImage QualityImage SizeImage height: %d Image number not valid.Image protected.Image size: %d Image type is not supportedImage width: %d In useIncandescentInfinity/Fish-eyeInformationInternal error (1).Internal error (2).InvalidInvalid Value ( %d ) Iris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JPEGJapaneseKeep filename on uploadKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Konica ConfigurationKonica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BrightnessLCD ModeLED ModeLanguageLens ModeLens direction does not match flash light Lens is not connected Light too dark.List all filesListing files in '%s'...Listing folders in '%s'...Loading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!Looking for camera ...Looks like a modem, not a cameraLowLow (576 x 436)Low (best quality)MacroMatthew G. Martin Based on fujiplay by Thierry Bousch MaximalMaximum number of Images: %d MediumMedium (1152 x 872)Medium (better quality)Memory card status (%d): %s Memory in camera: %d Mbit. MinimalMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Model: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: Kodak %s Month/Day/YearNTSCName to set on card when formatting.Nikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. NoNo Compact Flash Card detected No cardNo card present.No memory card presentNo reason availableNo response from cameraNo space left on card.NoneNone selectedNormalNormal Not FullNot enough memory available on the memory cardNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOffOnOn, red-eye reductionOnly root folder is supported - you requested a file listing for folder '%s'.Operation ModeOperation cancelledOtherOther SettingsOther command executing.Out of memoryOutdoorOwner name changedPALPTP Access DeniedPTP Capture Already TerminatedPTP Device Prop Not SupportedPTP General ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk Parameter 1Parameter 2Parameter 3Path not absolutePersistent SettingsPicture SettingsPicturesPlayPort speedProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProduct ID: %02x%02x Prohibit Flash Read-only file attributes like width and height can not be changed.ReadyReceived unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRedRed eye flashRed-eye ReductionRemoteRequested information about picture %i (= 0x%x), but got information about picture %i backResetting protocol...ResolutionResolution SwitchResolution plus SizeRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Self TimerSelf Timer (next picture only)Self Timer TimeSending data...Sensor ID: %d.%d SepiaSession-persistent SettingsSet clock in cameraShall the camera beep when taking a picture?Shot SettingsShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed microseconds (0 auto)SiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.Sipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . SkylightSlide Show IntervalSlow SyncSony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners SoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSpot Metering ModeStandardStrobe error.Summary for Mustek MDC800: SuperFineSwitching Camera OffSystem error.TV Output FormatTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The requested port type (%i) is not supported by this driver.There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.This camera can not capture previews.This camera can not capture.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.Thumbnail height: %d Thumbnail size: %d Thumbnail width: %d Time formatToo many retries failed.Total pictures captured: %d, Flashes fired: %d Transmission timed out even after 2 retries. Giving up...Trying to contact camera...TungstenUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown modelUnrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. Upload is supported into the '%s' folder onlyUploading file...Uploading image: %s.Uploading...User canceled downloadVendor ID: %02x%02x Version: Volatile SettingsWaiting for completion...Waiting...WeakWhite BalanceWhite BoardWhite levelWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.Year/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.ZoomZoom (in millimeters)a/c adaptorautobatteryblack & whitecamera inactive for > 9 seconds, re-initing. colorcoolshot library vcould not change owner namecould not set timeexternallyfinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port high (640x480)in fill modeinternallyjamcam library vlow (320x240)menuno status reported.normalnot available: %soffonon batteryplaypower OKpower badreadyrecordsuperfinesx330z is USB onlytime setunknown (0x%02x)Project-Id-Version: gphoto 0.4.3 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2003-01-09 08:13+0100 Last-Translator: Stefan Björnelund Language-Team: Swedish Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8-bit Kamera identifiering: Modell: %s Ägare: %s Kraftstatus: %s Flashdisk-information: %s Tid: %s Enhet %s %11s bytes totalt %11s bytes tillgängliga (batteriet är %d%% fullt)%i (okänd)%i bilder kunde inte raderas eftersom de är skrivskyddade%lld (okänd)%s (värdtid %s%i sekunder)-0.5-1.0-1.5-2.00.00.51.01.51.6x1152 x 864128 x 9601x2.02.5x29 mm2x34 mm3x41 mm4x51 mm58 mm5x640 x 4806x7x8x9xNätadapterASIC-revision: %d.%d AlbumnamnEtt fel uppstod i io-biblioteket ('%s'): %sBländareAutoAuto av (fält) (i sekunder)Auto av (värd) (i sekunder)Auto Av tidAutomatisk avstängning (minuter)Auto exponeringslåsAuto, röda-ögon reduktionAutofokus fel.Automatisk Tillgängligt Minne: Dålig EOTDålig kontrollsumma - fick 0x%02x, förväntade 0x%02x.Dåliga data - fick 0x%02x, förväntade 0x%02x eller 0x%02x.Dåliga data - fick 0x%02x, förväntade 0x%02x.Dålig exponering (inte tillräckligt med ljus troligen)Felaktigt värde för linsstatus %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering av bilddata av: Jeff Laing Implementerat med hjälp av dokument från nätet. Med tillstånd från Vision.Batterierna är låga.Batterierna är ok.Batterinivå: %s Antal bilder: %d Minsta kapacitet kvar: %d Upptagen: %s Blixten laddas: %s Linsstatus: Batteriet slut, kameran avstängd.Batteristatus: %s, Nätadapter: %s PipBästSvartvitSvart tavlaSvartvittBlåLjus+Ljus-Ljusstyrka/KontrastExponering med bollslutareUpptagenKameraKamerakonfigurationKamera bibliotek för Kodak DC215 Zoom kameror. Michael Koltan KamerainställningarKamera- och drivrutinskonfigurationKameradrivrutinen '%s' saknar 'camera_init' funktionen.Kameran har minne. Kamera ej redo, flera 'Identifiera kamera'-förfrågningar misslyckades: %s"Kamerabilder är svartvita Kamera kraft besparing (skrivskyddad)Kameran 3 gånger att hålla förbindelsen öppen.Kameran avvisade kommandot.Kameran återställde sigsjälv.Kameran skickade oväntad byte 0x%02x.Kameran stöder minibilder. Kameran stödjer Video. Kameran stödjer videoformaten: Kameran ej tillgängligKan inte hämta hur mycket tillgängligt minne som finns kvarKan inte hämta batterikapacitetenKan inte hämta namnet på mappen som innehåller bildernaFotoTagningstypen stöds ejKortstatus: Kortet kan ej skrivas.Kortet är inte formateratKortet inte öppetKortet är öppetKortet är skrivskyddat.Kort stöds ej.Kort borttaget under åtkomst.Ändrar hastighet... vänta...KaraktärKaraktär & LjudLaddarKontrollsummefelMuletFärglägeFärginställningarKommandot kan ej avbrytas.Kommando ordnings fel.Kommunikationsfel 1Kommunikationsfel 2Kommunikationsfel 3CompactFlash kort detekterat CompactFlash kortKompressionKonfigurationKonfiguration för din FUJI kameraAnsluten till kameraKontrast+Kontrast-CopyrightCopyright (max. 20 tecken)Skadade dataKunde inte allokera %i byte(s) för nerladdning av bilden.Kunde inte allokera %i byte(s) för nerladdning av minibild.Kunde inte applicera USB inställningarKunde inte kontakta kameran.Kunde inte skapa \DCIM-katalogen.Kunde inte skapa destinationskatalogen.Kunde inte finna någon kamera.Kunde inte hitta filen '%s'.Kunde inte finna lokaliseringsdata vid '%s'Kunde inte få tag på disk info: %sKunde inte få tag på disk namn: %sKunde inte få tag på flash-enhetens enhetsbokstavKunde inte initiera uppladdning (kameran svarade med 0x%02x).Kunde inte ladda nödvändig kameradrivrutin '%s' (%s).Kunde inte öppna '%s'.Kunde inte nollställa kameran. Kunde inte sätta hastigheten till %i (kameran svarade med %i).Kunde inte skicka paketet även efter flera försök.Kunde inte ladda upp, inget ledigt mappnamn tillgängligt! Mappnamnet 999CANON existerar och har en bild AUT_9999.JPG.Nuvarande läge: Kameraläge Nuvarande läge: Uppspelningsläge AnnanDatum & TidDatumformatDatum och TidDatum och Tid (GMT)Datum: %i-%02i-%02i %02i:%02i:%02i Bilder tagna: %i Lediga bilder: %i Mjukvaru-version: %s Baudrate: %s Minne: %i megabyte Kameraläge: %s Bildkvalité: %s Blixtinställning: %s Information: %s Timer: %s LCD: %s Auto kraft av: %i minuter Kraftkälla: %sDag/Månad/ÅrAvlusningRaderar bilden %s.Detekterade ett '%s'.Digita Johannes Erdfelt Digital ZoomDigital zoomKatalogbläddring - skrivet av Scott Fritzinger .Katalogen finnsKatalogen inte funnenFrånkopplar kamera.Visa inte TV menynLaddar ner %s.Laddar ner '%s'...Nerladdning av data...Nerladdning av fil...Nerladdning av bild %s.Nerladdning av bild...Nerladdning av minibild...Nerladdning...DrivrutinDubbel bländareEEPROM kontrollsumma fel.FEL: formatfel i medelandeFEL: medelande överkörtFEL: ej i sekvens.FEL: oväntat medelandeFEL: oväntat medelande2.FEL: oväntad pakettyp.TomtEngelskaFelFel vid fotograferingFel vid ändring av hastighetFel vid ändring av hastighet.Fel vid radering av associerad minibild till filFel vid filraderingFel väntande ACK under initialiseringExekvera fördefinierat kommando med parametervärden.ExponeringExponeringskompensationExponeringsmätningExponerings kompensationF2F2.3F2.8F4F5.6F8Fil:Filen '%s' kunde inte hittas i mappen '%s'.Fil kompressionFilen finnsFilen inte funnenFilen skyddad.Fil upplösningFiltypFilen var för stor. Du kan behöva stänga av kameran och slå på den ingen innan du kan ladda upp mer filer.FinFastvaru-revision: %d.%d Fastvaruversion: %d.%02d FastBlixtBlixt LägeBlixtinställningBlixtinställningarBlixt : AutoBlixt : Auto (röda-ögon reduktion)Blixt : AvBlixt : PåBlixt : På (röda-ögon reduktion)Blixt : odefinieratFlashPixLysrörFokusFokuslägeFokuslägeFokuseringsfel.TvingaAlltid blixt Formatera kort och sätt albumnamnFormatera CompactFlashFranskaFullGenerelltTyskaHämtar konfiguration...Hämtar data...Hämtar fillista...Hämtar fil...Hämtar information om %i filer...Hämtar minibild...GrönHögHög (1152 x 872)Hög (god kvalité)Värd Mode: %s Exponeringskorrektion: %s Exponeringsdata: %d Giltigt datum: %s Datum: %d/%02d/%02d %02d:%02d:%02d Självutlösare: %s Kvalitetsinställning: %s Spela/Spara läge: %s Giltigt kort-ID: %s Kort-ID: %d Blixtläge: Värd kraft besparing (sekunder)Hur lång tid tar det tills kameran stänger av sig när den är ansluten till datorn?Hur lång tid tar det tills kameran stänger av sig när den inte ansluten till datorn?Hur lång tid det tar innan kameran stängs av?HyPictIDISO hastighetLedigOgiltig parameter.BildBild & LjudBildjusteringBildkvalitetBildstorlekBildhöjd: %d Bildnummer ej giltigt.Filen skyddad.Bildstorlek: %d Bildtypen stöds ejBildbredd: %d I brukBländandeOändlighet/fiskögeobjektivInformationInternt fel (1).Internt fel (2).OgiltigtOgiltigt värde ( %d ) Bländarfel.ItalienskaJD11 Marcus Meissner Drivrutin för Jenoptik JD11 kameror. Protokoll reverse engineered m.h.a. WINE och IDA.JPEGJapanskaBehåll filnamnet vid uppladdningKända problem: 1. Om Kodak DC3200 inte tar emot ett kommando minst var 10 sekund, kommer den att lösa ut, och måste återinitialiseras. Om du upptäcker att kameran inte svarar, så behöver du bara välja om kameran. Detta kommer orsaka att den återinitialiseras.Kända problem: Om kommunikationsproblem uppstår, nollställ kameran och starta om applikationen. Drivrutinen kan ännu inte hantera dessa situationer, speciellt om problem uppstår och kameran inte är korrekt avstängd vid hastigheter över 9600 bps.Kodak DC120 kamera-bibliotek Scott Fritzinger Kamera-bibliotek för Kodak DC120-kameror. (på allmän begäran).Kodak DC240 kamera-bibliotek Scott Fritzinger och Hubert Figuiere Kamera-bibliotek för Kodak DC240, DC280, DC3400 och DC5000 kameror. Omskriven och uppdaterad för gPhoto2.Kodak DC3200 Driver Donn Morrison Frågor och kommentarter uppskattas.Konica konfigurationKonica kamera-biblioteket Lutz Müller Stöd för alla Konica och flera HP kameror.KoreanskaLCDAuto av (i sekunder)LCD Automatisk avstängning (sekunder)LCD LjusstyrkaLCD-lägeLED-lägeSpråkLinslägeLinsriktningen överensstämmer inte med blixtljuset Linsen är inte ansluten Ljuset för mörktLista alla filerListar filer i '%s'...Listar mappar i '%s'...Laddar kamera-drivrutiner från '%s'...LokalLokaliseringLokaliseringsdata korrupt.Lokaliseringsdata för lång.Lokaliseringsfil för lång!Söker efter kamera ...Ser ut som ett modem, inte en kameraLågLåg (576 x 436)Låg (bäst kvalité)MakroMatthew G. Martin Baserad på fujiplay av Thierry Bousch MaximalMaximalt antal bilder: %d MediumMedium (1152 x 872)Medium (bättre kvalité)Minneskortets status (%d): %s Minne i kameran: %d Mbit. MinimalMinolta Dimage V kamera-bibliotek %s Gus Hartmann Speciellt tack till Minolta för specifikationen.Modell: Minolta Dimage V (%s)\n" Hårdvaru-revision: %s Fastvaru-revision: %s Modell: Modell: %s Minne: %d byte(s) av %d tillgängligaModell: %s Serienummer: %s, Hårdvaruversion: %i.%i Mjukvaruversion: %i.%i Testnings mjukvaruversion: %i.%i Namn: %s, Tillverkare: %s Modell: Kodak %s Månad/Dag/ÅrNTSCNamn att sätta på kortet vid formatering.Nikon Coolpix 880: Kamera konfiguration (eller preferenser): Den optiska zoomen fungerar inte helt korrekt. Alla konfigurations inställningar kan inte läsas eller sättas korrekt, till exempel, fininställning av vitbalansen, och språkinställningarna. Sätt kameran i 'M'-läge för att sätta slutarhastigheten. NejInget CompactFlash kort detekterat Inget kortInget kort isatt.Inget minnes kort isatt.Ingen anledning tillgängligIngen svar från kameraInge plats kvar på kortet.IngenInget valtNormalNormal Inte fullInte tillräckligt med minne tillgängligt på minneskortetInte använtNotera: inget minneskort tillgängligt, vissa värden kan vara ogiltiga Antal bilder: %d Antal bilder: %dAntal bilder: %d Antal bilder: %i Firmware Version: %sAVOKPÅAvPåPå, röda-ögon-reduktionEnbart rot-mappen stöds - du begärde en fillistning för mappen '%s'.Operationsläge.Operationen avbruten.ÖvrigtAndra inställningarAnnat kommando utförs redan.Slut på minneUtomhusÄgarnamnet ändratPALPTP åtkomst nekadPTP fotografering redan avslutadPTP enhet egenskap stöds ejPTP generellt felPTP ofullständig överföringPTP ogiltig format kodPTP ogiltig enhets parameter formatPTP ogiltigt enhets parameter värdePTP ogiltigt objektformatkodPTP ogiltigt objekt hantagPTP ogiltig parameterPTP ogiltigt förändra objektPTP ogiltig lagrings IDPTP ogiltig transaktionPTP ingen minibild tillgängligPTP ingen giltig objekt informationPTP OK!PTP objekt skrivskyddatPTP operationen stöds ejPTP parameter stöds ejPTP delvis raderingPTP självtest misslyckadesPTP sessionen redan öppenPTP sessionen inte öppenPTP specifikation av format stöds ejPTP specifikationen av mottagare stöds ejPTP lagring fullPTP lagring inte tillgängligPTP lagring skrivskyddadPTP transaktionen avbrutenPTP odefinierat felPTP okänd tillvekarkodPanasonic DC1000 gPhoto bibliotek Mariusz Zynel Baserat på dc1000 programmet skrivet av Fredrik Roubert och Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder dirvrutin Andrew Selkirk Parameter 1Parameter 2Parameter 3Sökvägen är inte absolutIhållande InställningarBildinställningarBilderSpela uppPorthastighetProblem med nerladdningen av bildProblem att hämta bildinformationProblem med att hämta antalet bilderProblem med att öppna portProblem med att läsa bild från flashminneProblem med att nollställa kameraProblem att sätta kamerans kommunikationshastighetProblem med att ta aktuell bildProdukt ID: %02x%02x Aldrig blixt Skrivskyddade filattribut som bredd och höjd kan inte ändras.KlarMottog oväntat data (0x%02x, 0x%02x).Mottog oväntat huvud (%i)Mottog oväntat svarTar emot data...Spela inInspelningslägeRödRöda ögon reduktionRöda-Ögon ReduktionFjärrBegärde informationen om bild %i (= 0x%x), men fick information om bild %i tillbakaNollställer protokoll...UpplösningUpplösnings byteUpplösning plus StorlekRicoh / Philips drivrutin av Lutz Mueller , Martin Fischer , baserat på Bob Paauwes drivrutin STV0680 Adam Harrison Drivrutin för kameror som använder STV0680-processor-ASIC. Protokoll reverse engineered m.h.a. CommLite Beta 5 Carsten Weinholz Utökad för Aiptek PenCam och andra STM USB dubbel-läges kameror.SjälvutlösareSjälvutlösare (nästa bild endast)SjälvutlösningstidHämtar data...Sensor-ID: %d.%d SepiabruntResidenta InställningarSätt kamerans klocka.Skall kameran pipa när den tar en bild?Foto-inställningarSlutartid sekunder (0 auto)Slutartid (mikrosekunder, 0 auto)Slutartid mikrosekunder (0 auto)SiPix Web2 Marcus Meissner Drivrutin för åtkomst av SiPix Web2 kameror.Sipix StyleCam Blink drivrutin Vincent Sanders Marcus Meissner . DagsljusBildspelsintervallLångsam SynkSony DSC-F1 Digital Kamera Stöd M. Adam Kendall Baserad på chotplay CLI-gränssnittet av Ken-ichi Hayashi Gphoto2-konvertering av Bart van Leeuwen Sony DSC-F55/505 gPhoto bibliotek Stödjer Sony MSAC-SR1 och Memory Stick använt av DCR-PC100 Ursprungligen skriven av Mark Davies gPhoto2 anpassning av Raymond Penners LjudSoundvision drivrutin Vince Weaver Utrymme kvar: Hög: %d, Medium: %d, Låg: %d SpanskaHastighet %i stöds ej!Kameran stöder inte hastigheter överstigande 57600 vid uppladdning.PunktmätningslägeStandardBlixtfel.Summering för Mustek MDC800: SuperFinStänger av kameranSystemfel.TV Utdata formatTestar olika hastigheterKatalogbläddring "camera" låter dig indexera bilderna på din hårddisk.JD11-kamerorna fungerar ganska bra med denna drivrutin. Ett RS232-gränssnitt @ 115 kbit krävs för bildöverföring. Drivrutinen tillåter dig att få - minibilder (64x48 PGM format) - hela bilder (640x480 PPM format) Kodak DC120-kameran använder filformatet KDC för att lagra bilder. Om du vill visa bilderna du laddade ner från din kamera, behöver du ladda ner "kdc2tiff" programmet. Det finns tillgängligt på http://kdc2tiff.sourceforge.netSamsung digimax 800k drivrutinen har skrivits av James Mckenzie för gphoto. Lutz Müller konverterade den till gphoto2. Marcus Meïssner fixade och förbättrade konverteringen.Batterinivån hos kameran är för låg (%d%%). Operationen avbröts.Kameran accepterade inte kommandot.Kameran accepterar inte '%s' som filnamn.Kamera stödjer inte hastigheten %i.Kameran skickade med data än förväntat (%i).Kameran skickade bara %i byte(s), men vi behöver minst %i.Filen som skall laddas upp har längd nollFilnamnets längd kan inte överstiga 12 tecken (%s) har %i tecken).Filsystemet stödjer inte uppladdning av filer.Filsystemet har inget stöd för att hämta filinformationFilsystemet stödjer inte nerladdning av filer.Filsystemet har inget stöd för att sätta filinformationDen första byten mottogs (0x%x) är inte giltig.Sökvägen '%s' är inte absolut.Den begärda porttypen (%i) stöds ej av denna drivrutin.Det finns pågår f.n. en operation. Denna kamera klarar endast att utföra en operation i taget. Vänligen vänta tills den nuvarande operationen har avslutats.Denna kamera kan inte ta förgranskningsbilder.Denna kamera kan inte ta bilder.Denna kamera erbjuder inte information om drivrutinen.Denna kamera stödjer inte sättning av konfigurationsparametrar.Denna kamera stödjer inte sammanfattningar.Detta bibliotek har testats med en Kodak DC 215 Zoom kamera. Det kan fungera också med DC 200 och DC 210 kameror. Om du råkar ha en sådan kamera, vänligen skicka ett meddelade till koltan@gmx.de för att låta mig veta, om du har några problem med detta drivrutinsbibliotek eller om allt fungerar bra.Minibildhöjd: %d Minibildstorlek: %d Minibildbredd: %d TidsformatFör många försök misslyckades.Totalt bilder tagna: %d, Blixtar avfyrade: %d Överförringen tog för lång tid och avbröts efter %i försök. Ger upp...Försöker kontakta kamera...GlödlampaOkänt kamerabiblioteksfelOkänt felOkänt fel.Okänd filtyp %i.Okänd modellEj igenkänd responsOlämpligt kortEj stött kommando.Ej stödd port typ %i = 0x%x given. Initialisering omöjlig.Porttypen stöds ej: %d. Denna drivrutin fungerar bara med USB kamror. Uppladdning stöds endast till '%s' mappen.Laddar upp fil...Uppladning av bild: %s.Uppladdning...Användare avbröt nerladdningenFörsäljar-ID: %02x%02x Version: Flyktiga inställningarVäntar på att bli klar...Väntar...SvagVitbalansVit tavlaVitbalansSkrivskyddadFel utbrytnings sekvens: förväntade 0x%02x, fick 0x%02x.År/Månad/DagJaDu har försökt att radera '%s' från mappen '%s', men filsystemet stödjer inte radering av filer.ZoomZoom (i millimeter)nätadapterautobatterisvartvittkameran inaktiv för > 9 sekunder, återinitialiseras. färgercoolshot library vkunde inte ändra ägarnamnetkunde inte ställa in tidenexterntfingPhoto2 Mustek VDC-3500/Relisys Dimera 3500 Denna mjukvara skapades med hjälp av properitär information som tillhör StarDot Technologies. Skapare: Brian Beattie Bidragsgivare: Chuck Homic Konvertering av rå kamerabild till RGB Dan Fandrich Information om protokoll, råa bildformatet, gphoto2 portering\n" hög (640x480)i fyll lägeinterntjamcam bibliotek vlåg (320x240)menyingen status rapporterad.normalej tillgänglig: %savpåpå batterispela uppkraft OKkraft dåligredospela inextrafinsx330z är USB enbarttiden inställdokänd (0x%02x)libgphoto2-2.5.9/po/Makevars0000644000175000001440000000344412623156020012631 00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = libgphoto2-6 # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = The gPhoto Team # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = gphoto-devel@lists.sourceforge.net # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = libgphoto2-2.5.9/po/pl.gmo0000644000175000001440000061172712623156275012301 00000000000000Þ•  I/ ü‘¸Â¹ÂÑÂæÂ÷Â# Ã0ÃJÃ#cÇÜðÃÃÃÜÃhîÃWÄjÄÄœÄ4·ÄìÄÅÅ(ÅFAňŜŬŠ´Å¿ÅÆÅÏÅîÅôÅúÅ ýÅb Æ;mƩƸÆÔÆïÆÇÅÇOÚÇ *É 4É?ÉDÉIÉNÉSÉWÉ]ÉaÉgÉ iÉsÉxÉ~É„ÉÉ¡É¥ÉªÉ®É³É¸É¿ÉÆÉÎÉÕÉÛÉãÉêÉðÉõÉûÉÊ ÊÊÊÊ$Ê*Ê2Ê9ÊJÊPÊUÊZÊ`ÊhÊoʀʅʉʑʘʞʣʫʲʸʽÊÂÊÈÊÐÊ×ÊÜÊàÊèÊïÊõÊúÊË ËË Ë%Ë*Ë.Ë 5Ë@Ë FËQËUËXË `ËkË oËzËË‚Ë…Ë‡ËŒË ’ËœË Ë¦Ë«Ë °Ë»Ë ¿ËÉËÍËÑË×ËÚË ÝËèËíËóË öË Ì ÌÌÌ Ì&Ì)Ì,Ì.Ì 4Ì>ÌDÌGÌJÌSÌYÌ `Ì jÌtÌzÌ~Ì „ÌŽÌÌ£Ì¦Ì©Ì¯Ì ´Ì¾Ì ÄÌÎÌÑÌÔÌÚÌÞÌáÌãÌéÌ îÌøÌûÌþÌÍ ÍÍÍ'Í8Í GÍQÍTÍ ]ÍhÍ‚Í Í ¯ÍºÍ ÂÍ ÏÍÙÍèÍÎ ÎÎ'Î6Î >Î IÎTÎgÎ ÎÎ ¤Î²Î ÁÎ ÎÎÚÎ ìÎ ùÎ Ï Ï Ï(Ï0Ï 6Ï CÏPÏUÏZÏmÏsÏxÏ‹ÏÏ•ÏžÏ§Ï ½ÏÊÏÏÏÒÏâÏéÏ™ñÏ­‹Ð9Ñ?ÑCÒXÒpÒŽÒ¥ÒÃÒÔÒëÒýÒÓ%Ó6ÓNÓhÓ}Ó •Ó¡Ó¼ÓÃÓÔÓæÓûÓ'Ô*Ô3Ô LÔWÔ.jÔ-™Ô ÇÔ ÓÔßÔðÔ9ùÔ3Õ<ÕMÕ_ÕpÕÕ”Õ§Õ ®Õ ºÕÇÕÚÕîÕ ÖÖ#Ö(Ö CÖQÖ hÖuÖÖ©ÖÂÖÊÖÚÖìÖ$õÖ×3×G×e× ‚× ×ž× ­×»×Ë×Ú×óרØ-ØBØWØlØ}Ø•Ø¤Ø µØ ¿ØÊØߨïØÿØÙ(6Ù_ÙoÙ ŠÙ˜Ù›Ù ¢Ù®Ù ¶ÙÃÙÓÙæÙîÙÚÚÚ Ú$Ú5Ú EÚ RÚ]Ú/eÚ+•Ú1ÁÚ'óÚ(ÛDÛaÛ ÛÜ Ü²ÜºÜ ÌÜoÚÜJÝ \Ý hÝ uÝ‚Ý*¡Ý#ÌÝðÝ öÝÞ ÞÞ"Þ+Þ3ÞEÞJÞ iÞ wÞ …Þ‘Þ ¡Þ ­Þ¹Þ¿ÞÇÞÌÞ ÓÞ àÞ îÞ úÞßß3ßJßaßxߊߦ߽ßÔßëßàà*à;àLàTà \à gà sàà “à Ÿà«à°à ÃàÍàÓà âàïàôà áá#á (á"4áWá[ádákázá‰ážá³áOÂáâ &â2â Qâ^âpâ âŒâ Ÿâ ­âºâÊâäâkã8pã#©ã8Íã9ä@äATä4–ä+Ëä(÷ä@ å aå‚å1žåÐåíå#æ&æCæ[æzæŽæ¡æ¸æÒæ'ææç'ç=>ç|ç ˜ç)¤ç$Îç>óç2è KèYènè€è4™è7Îè6éD=éE‚éÈéåéêê<êXêvê&ê¶êËêÚêÐòêÃë×ë÷ë!ì8ì @ìNì_ìrìì—ì²ìÐìÕìäìýìí $í1í(Jísí‡í£í¶íÒíîí îî&î6îNî ^îjî zî›î´îÌîåîìî ÿî ï%ï:ï Tï^ïpïyïˆïŽï—ï°ïËï Þïëïüï ðð'ð7ð?ðFð`ð fð qð |ðˆð —ð£ðµð ÌðÙðëð ñ ñ(ñ>ñTñ<jñ§ñÄñÖñ éñõñ ò"ò:ò Nò Yògò†ò›ò¹òÍòìò ó!ó7óLó^óró {ó …ó ó ›ó¥óÄóÓóéó:øó<3ôpôô¨ôÂô&Ýôõ õ<õZõyõ0˜õÉõåõ!ÿõ'!öIöhö>„öÃöÚö&öö/÷<M÷<Š÷Ç÷(á÷ ø&ø Bø*cø2Žø-Áø4ïø;$ù0`ù‘ù¦ùÅùáù5úù=0ú5nús¤úû5û&IûpûkyûEåû+üFü…cüUéü?ýFýZýsýŒý¥ý ½ýÈý Ìý Ùýçý þ þþ /þ=þ Qþÿ^þ^ÿgÿvÿÿ›ÿ¡ÿ¦ÿ×¶ÿŽ ¤²ÅÔíþ0I \h2w,ª.× #0 K YÓf :EGž²Òè ðü #L:µ‡H=ª†,1^ n € ” ­  Ö ê   * C R m  ‹ – ± Ï Ö  æ  ñ û    / A S d -t ¢ ¹ <Î  ( ? W q  ¬ ° ¶ ¾ Ç Ú ï  ÷  ,A ` j xƒ˜¨ÈÐÙßõ ( I']5… »ÆÚ í1ø:*4e-š ÈÕÞõ 2Mi‚˜³Çßñ+ DRasŠ› ± ¿Íã7KetŒ¨¼Ð æ ôÿ 5 V i v€ˆ™F©ðù   ,9,>kˆ˜ ¯¼ ÍÙèøU ^h_|Üï' 8CV [enN…Ôîÿ+39 ?Mj•²ÇÝó+DYo‚ž ¯ºÎå ù 7 AL ao~ ’¯ ÈÓæù  ( 1< KWl$~£´"Äçþ *6G`y ”  ®ÁÔçú ,E^y‘¨¾ Öãü&8J P[k {‡ – ¡¬» Ï Úçú #+%OuL…ÒÚfß¼F ‡$‹& ‘&ž&¾&Ó&â&ó& ' '*'1'F'Y' ^' i'u'‹'ž'°'À'Ù' á'î'( (!(@(X(r(!(²(Ò('ì()&):)M) c)n))‘)±)Ñ)ê)**-*G*`*p* * **½*Ö*æ*û*" +.+.C+ r+ }+‡+ +›+ª+»+ Ä+Ò+å+ô+ù+þ+,,),0,I, b,o,x,‰,œ,¹,ؾ,—-Q±-U.2Y.Œ.›.¢.².µ.Ñ.Õ.Þ.ð. // /&/+/ >/L/R/ p/~/ //²/Ç/ Ù/æ/ö/ 0 0 %030 C0P0_0s0 ‚00¡0¶0È0à0 ñ0ü0/ 1<1X1t1 …1 “11 ¤1±1Ã1Ê1Ó1å1÷1 2%2.C2)r3œ3°3Á3×3è3 414B4V4:j4*¥4Ð4Ø4ò45505"J5%m5“5®5É5æ56 "6.666¸6Ë6 Ð6Û6 ó6 ý6 777 47ÿB7 B8M9ÒÍ9^ :?ÿ:?;£T;gø;`<g<k<…< ¡<¯<Î<Ý<î< ÷<=; = I=S=4\=‘=—=§=¹=¾=Ñ=í=õ= > > )> 3>*=>h>> …> ‘>Ÿ>¯>Â>Ñ>ê> ??#?6?H?]?x?‡?¤?#µ?Ù? ß?ì?@#@?@ED@Š@£@ Á@Î@ å@AAAA)ASKSjS}SS–S¨S·SÌSâS#ýS!T>TFTZTkT‚T–TF®TõT U(U -U;UBU JUWUfUoU.…U´UÄU ÕUßU9èU"V8VOV+gV“V—VšV V¾VÂVGÉVYV(YY‚YY¶YÅYÛYäYM÷YEZTZ gZtZƒZ•Z©Z¹Z ÈZÔZÚZöZ[ [ +[9[ Y[z[ ‚[[ [¢[¦[ ©[¶[È[Û[ú[ \\:\ L\Z\r\Š\©\Ç\æ\]]0]G]b]{]”]œ]·]Ó]ï]^^.^C^^^'s^,›^È^å^ô^ _ _,_E_Y_ q_}_1ƒ` µ`¿`¬È`­uaå#bY dcd ld xd „d d9ždØdàd ñdþde&e :e GeTeiexeŽee¹e ÊeØeáeùe þeff*f:f LfZf jfuf~f „f f œf§f¹fËfÒfâfòfgg"g*g2g :g EgPgXgggxgŠg“g!­g Ïgðg h&h*?hjh„h—h ­hºhÊhÒháh÷h iii,ij HjCSj—jj¯jÍjßj3ûj*/kZkzk—k©k °k ¼kÈkÞkîkòk ll&lDl Vlclvl ˆl©l±l Ál Ël Õl ßl ìl ùlmm%m8m ImUmdm €m Žm˜m®mZÉm $n1n AnNnjn†n œn§n¹nÎnãnön‹o–’o)p/p >pLp[p$kppN–påpšëp®†qŽ5rüÄrÁs ÒsÝs ãsîs ös tt t )t4tStdt{t‹t œt §t µtÂtÒtætþtu!6uXunu„u Ÿu«u¼uÖu æuòuv v v#v6vMvivƒvœv³vÎvâvüvw*wDwZw pw zw „w Žw˜wžw¥w,¾wëw ñwüw x xx1xFx[x px~x x›x ±x¿xÈx Øxæx$y&y6y#Iy my{y ‘y^Ÿy þy z z z (z 5zCzYzizxzjˆz óz{{0{!P{r{{{{ {¥{ º{ Ä{ Ñ{ Û{zå{`|f|v|ˆ| |™|ž|£|ª|½|.Í}Âü~Á¿;„Q½„ …µ…ÌÒ…AŸ†:á†B‡;_‡?›‡7Û‡Nˆ7bˆ1šˆ3̈‰3‰/:‰j‰r‰H‰Ö‰ ݉ë‰ ð‰'þ‰&Š 9Š'GŠoŠwЀРжоŠZÓŠN.‹T}‹LÒ‹MŒAmŒ:¯ŒêŒ ýŒ +G N Z d!r”©¸Í(å'Ž 6ŽDŽHŽ QŽ\Ž`ŽcŽsŽ#„ލŽÄŽÛŽG÷ŽÙ?èì‘Lï‘b<’&Ÿ’,Æ’%ó’»“-Õ“9”)=”Mg”0µ”7æ”,•:K•7†•,¾•ë•3 –4>–=s–F±–Kø–JD—•›j%œ%œ¶œ$ÓœSøœRL&Ÿ7Æ:þ;9ž'už&žÄŸìT¡-A£ìo¥\¨u© ‘©›©±©Å© Ú© å©ñ© ªª%ª06ªgªmª…ª ”ª ¡ª­ª ¿ªʪӪ쪮ðªDŸ«ä«/ý«-¬JG¬9’¬̬ܬø¬ ­ ­ ,­ :­ H­V­_­ {­†­‰­›­ž­ ¡­­­ µ­ À­Ê­Ò­ Ú­ ä­ ï­ù­ ®!®6®H®[®m®„®”® ±® ½®È® Ю󨑨 ¯¯%¯;¯ S¯a¯ t¯‚¯•¯¨¯½¯ Ó¯á¯ò¯°°A-°Do°´°»° Ò°-ݰ ±±0± E±R±Z±b±y±ˆ±—±¦±!·±"Ù±ü± ² ²(² 7² B² L²V²f²~²š²«²±² ò в Þ² ê² õ² ³ ³ ³ %³2³ L³W³g³w³‡³e–³ü³6´9´ >´L´h´„´ ´¼´Ø´õ´µ .µOµkµ‡µ£µ¿µÛµ÷µ¶1¶N¶k¶ ˆ¶ ”¶ ¢¶ ®¶ º¶Ƕݶó¶··.· 3·@· U·c·i·3y· ­· ¹·Ä·Ó·l×·?D¸-„¸<²¸h︃X¹nܹ6KºJ‚ºHͺ+»,B»`o»лã»ù» ¼¼6¼N¼f¼~¼–¼›¼±¼ ļ Ѽ Þ¼ ë¼ ø¼ ½ ½r½‘½–½±½ ¹½ǽ-̽ú½N¾Q]¾K¯¾Lû¾PH¿?™¿?Ù¿DÀ@^ÀIŸÀ?éÀ<)ÁQfÁN¸ÁVÂV^ÂXµÂXÃGgÃa¯Ã8ÄIJĔĚĭÄÉÄÜÄ äÄïÄ÷Ä’üÄïÆÇŽÇÓ¡Ç7uÈ­È ²È¿È ÈÈÓÈ=äÈ?"ÉbÉtÉ }É‹ÉɢɹÉÒÉêÉÊÊ4ÊIÊNÊbÊgÊnÊ€Ê„Ê‡Ê  ÊG«Ê1óÊ6%Ë(\Ë*…Ë°ËµË ¾Ë ÈË ÒËÜËâËJéË4ÌHÌ[ÌoÌt̤̼̋ÌÖÌíÌÍ ÍÍ)Í-Î;?Î<{θΠÁÎËÎÞÎ"çÎ ÏÏ+Ï<ÏUÏ mÏ xσϊÏN‘ÏòàÏÓÑïÑÒÒ&6Ò]ÒzÒ'—Ò¿ÒÕÒîÒÓÓs3Ó§ÓºÓ ÖÓ÷ÓBÔWÔ lÔzÔ˜Ô\¸ÔÕ/Õ@Õ HÕUÕ\Õ!eÕ‡ÕÕ“Õ –Õ\¤Õ@ÖBÖRÖnÖ‹Ö§ÖøÃÖŽ¼× KÙ VÙdÙiÙnÙsÙxÙ|قنٌ٠ŽÙšÙŸÙ¥Ù«Ù´ÙÎÙÒÙØÙÜÙâÙçÙïÙ÷ÙÚÚÚÚ Ú'Ú,Ú3Ú<ÚDÚHÚPÚYÚaÚhÚqÚyڊڑڗڜڣڬڴÚÅÚËÚÏÚØÚàÚçÚíÚöÚþÚÛ ÛÛÛ Û(Û.Û2Û;ÛCÛJÛPÛWÛ^ÛgÛ mÛwÛ|ÛÛ ˆÛ“Û ™Û¤Û©Û¬Û³Û¼Û ÁÛËÛÐÛÔÛ×ÛÙÛÞÛ äÛîÛòÛøÛþÛ Ü Ü ÜÜ"Ü'Ü-Ü1Ü 4Ü@ÜEÜKÜNÜ WÜaÜfÜlÜ pÜ~Ü‚Ü…Ü‡Ü Ü—ÜÜ¡Ü ¤Ü¯ÜµÜ»ÜÃÜÌÜÒÜÖÜ ÜÜèÜùÜÿÜÝÝ ÝÝÝ Ý*Ý.Ý1Ý7Ý;Ý>Ý@ÝFÝKÝTÝXÝ[Ý aÝlÝoÝuÝ†Ý—Ý¦Ý¯Ý ²Ý ¿ÝËÝ#ëÝÞ Þ )Þ 4Þ ?ÞJÞ)bÞŒÞ¤ÞµÞ¾Þ ÍÞ ØÞ æÞôÞ ß'ß6ßNß_ßsß…ß•ß§ß ½ß Èß Óß Þßéß ñßÿßàà$à)à>àDàIà^àcàhàqàzà Žàœà¡à¤à ºà ÈàžÓà«ráâ&$âKã"jã,ãºã#Úãþãä1äGäbävää ¯äÐäëä å(åAåGåYålå‚å'‰å±åºå Ùåæå,ûå<(æ eæræ&‹æ²æ<¸æ õæçç,çBçQçbçsç yç†ç!—ç¹çÖçöç èè&"èIè$aè†è%¢è+Èè"ôèéé1éBé,Sé#€é(¤é.Íé.üé-+ê'Yê*ê ¬ê#Íêñê& ë!2ë(Të}ëëµëÉëãë&ûë"ì1ì DìQìWìqì„ì—ì%·ì4Ýìí)%í Oí]í `íní Ží™í¶íÉíÞíçíîîî î&î<î Qî^înî9wî:±î;ìî0(ï3Yïï"«ïÎïÞðùðññ)ñÑ8ñ ò#ò 2ò?ò'Nò+vò"¢òÅò ÌòÚòãòòò ó ó4ó Pó&Zó ó óó ¬óºó Éó×óßóçóðóöóô $ô 1ô<ôTôlô„ôœô´ôÌôçôÿôõ/õGõ_õpõõ —õ ¢õ ­õ ·õ ÂõÍõ àõ îõ üõö ö/ö 5ö CöPöXö köuö‡ö Œö$˜ö½öÁöÊöÑöäö÷ö ÷ ÷E0÷v÷ ˆ÷#•÷ ¹÷Ç÷Ú÷ë÷ÿ÷ø#ø8øKø!gør‰øJüøGùBgù4ªùßù@ôùP5úE†ú5ÌúQû)Tû'~û8¦ûßûûû*ü?ü^ü"xü›ü°üÄüÜüõü, ý(:ýcý@‚ý Ãýäý1öý((þ9Qþ#‹þ¯þ Çþèþ$ÿ=)ÿ?gÿ;§ÿDãÿL((u'ž)Æ(ð')Ak2‡ºÏçø65U3‹¿Èåù!"<%_…‹«Èß ñ'ÿ/'W!o‘*­&Ø2ÿ2B\o‹ž®!Áãý3;U'e$ÂÇ ×áø"!DXl Š« ½È Û æ1ð" (  = I X l  ”  ¬ ¹ #Ì ð   , A HV Ÿ ½ Ð  æ ð    , C  L (X  (œ Å -× + 1 L i †  • ¡  ª  ´ ¾ Ò (â  + K C[ GŸ )ç '#9(]/†%¶+Ü(01,b6.Æ(õ).H&w#žI (,5U@‹HÌL&b6‰/À(ð+0E7vF®UõRKAžà%"&%IBoU²;‹D&Ð÷0 <hED®ó!›3SÏ#+>XrŒ ¨³ ·ÃÔ î ú );$Ns|3¢ Ö âìÕýÓéï) AOe{‘¨º@ÍA.P%¥» Ñßéõß Ió =!N!*g!’!¨!°! Ã!Ð!è!÷!T"ëf"}R#¾Ð$8%È&Ø&ê&þ&'2'H']'t'Š'Ÿ'¹'!È'(ê'(!$((F( o(y("( ²)¼)Å)Î)ç)þ)*,*B*?^* ž*¿*9Ö*"+!3+U+q+!‘+%³+Ù+Ý+ã+ë+ô+, *, 6,B,I,X,^,"z,), Ç, Ñ, ß,ë,-%- E- O-[- b-!ƒ-"¥-5È-þ-4.DQ. –. .³.Ê.@Ñ.O/Gb/Eª/ð/ 0 0+0G0c0!}0Ÿ0¾0Ú0ñ0 1*1H1(\1$…1ª1Å1Ø1ë1ý12(2A2Q2a2 x2™2µ2Ñ2"î23#3 B3c3}3™3³3 Î3Û3ä3ç3ì3ñ3ô3ù3Gü3D4Y4 j4 u4€4˜4]­4 5 55(515 :5G5]5l56q5¨5Ã5Ö5 ö56 '656K6_6lu6 â60ï6v 7—7¬7Ç7Ü7õ7 8!8A8 G8R8[8Tr8Ç8á8ó89 9*91979 G9h9‚9 ¡9Â9Ü9û9&:<:$\::›:º:Í:ë:;;';>; W;+c;!;±; Ã;Ñ;é;û; < +<$7<&\<ƒ<–<¬<À<Ù<ó<= ="=3=D= `='m=•=©=-¼=ê=> >>/>"I>l>ˆ>§>Å>ß>û>?3?O?k?;‡?Ã?ß?þ?@8@"X@{@ ™@£@ ¸@Ù@ù@A ,A6A JAkA‡AœA´AÎAáAóA BB1BOBkBB0’B+ÃBïBDC ICWCh`C4ÉCðþG ïJúJ- K ;K\KrKŠK¢KºK ÁKËK#çK L LL3L PL\LqLLšL¢L²L ÈL!ÒL1ôL&M#CM%gM&M)´M-ÞM* N7NONkN‡N¡N²NÏN.îN%O%CO)iO“O²O&ÑO&øOP4PSPqP.…P´PÏPäPQ%Q:QDSQ˜Q¨Q¸QÀQÑQâQõQþQR#R5R:R?RFRZRrR {R œR½R ÍRÚRìR-ûR )S‘5S%ÇTPíTT>U1“UÅU ÕUàUVVV!V*VGVdVsVŒV’V˜V¯VÉV.ÏVþVW W"6WYWtW…W”W¦W¼W ÎWÚWêWüW XX-X?XNXbX{X’X²XÇXÖX5êX# Y DYeY}Y ˜Y¤Y­YÆYãYìYþY#Z'>Z fZ+qZAZ1ß[\'\(F\o\\ž\7®\æ\þ\D]2[]Ž]"]À]Ö]ò]#^+5^*a^ Œ^&­^#Ô^+ø^'$_ L_Y_Ža_ð_``` +` 6` @` N`5X`Ž`¢`%¾agäbÖLcn#dB’dÕd®édr˜e ff+f'Ffnf&f ¨f¶fÉfÒfèf>ñf0g8g7?gwg}gŽg¢g§g½g Ûg(ègh h0h Ah8Nh‡h¢h¨h¹hÊhäh"øh"i$>i ciqi‰i§i½i&Øiÿij-j/ [f?{‘ »‘Å‘¶Î‘¶…’<“j=•¨• ±• ¼• ǕҕIé• 3–?–R–c–ƒ–¢–¹–Í–#á–—— /—<—X— l—z—ƒ— ›—§— ¼—È—å—ø— ˜"˜2˜D˜ L˜ V˜c˜ y˜…˜ž˜»˜ʘã˜ü˜™.™G™V™e™t™‹™£™¬™¿™Ó™ ç™ò™,š&?šfš-„š ²š:Óš'›6›P› g›u›‡››Ÿ›¸›Ñ›ä›è›þ›œ7œNœhœœœ´œΜԜݜíœýœ"* MZOi¹ À4á ž&7žI^ž-¨ž&Öž"ýž Ÿ 5Ÿ@ŸPŸdŸ~Ÿ ‘Ÿ›Ÿ!´ŸÖŸ/ïŸ% 'E 'm • /®  Þ é  ¡ ¡ ¡*¡?¡U¡e¡}¡„¡–¡±¡Ê¡ Ý¡þ¡ ¢"¢,=¢Rj¢ ½¢Ë¢Ü¢2î¢&!£H£b£r££ª£ãÛ£™÷£¡‘¤3¥ 9¥ E¥ R¥_¥)p¥š¥[ ¥ü¥Ÿ¦¬¢¦£O§ó§ © ©)© /©:©A© Q©_© p© }©.‹©º©!Ö©ø© ª %ª3ªEªVªrª’ª²ª%Òª&øª«<«&Y«€«’«&²«Ù« î«ù« ¬ ¬ ¬,¬?¬_¬"{¬$ž¬"ì*欭/.­^­'}­+¥­Ñ­ è­ ® ® #® 0®=®C®&I®/p® ® ¦®²® º® ĮѮà®ï®þ® ¯$¯B¯ Y¯z¯¯Ÿ¯¯¯!ï*寰!&°-H°v°а ¨°^¶°± ±)±;±O±a±r± †±”± °±m¾±,²?²&V²%}².£²Ò²%Û²³³³5³ J³X³m³u„³ú³´´%´ -´:´A´ I´T´Ho´g¸µ- ·NºEm½m³½!¾æ8¾Þ¿Fþ¿FEÀDŒÀBÑÀ?Á>TÁD“Á7ØÁCÂ=TÂ’Â6›Â8Ò Ã%Ã\=ÚáðöÃ&ÆÃíÃÄ&Ä8ÄAÄJÄjĈęÄg¹ÄX!Å_zÅWÚÅV2ÆP‰ÆIÚÆ$Ç>ÇOÇ^ÇvÇ“Ç ›Ç §Ç ´Ç(ÀÇ éÇ ÈÈ3È JÈ&kÈ’È¤È¨È ±È¼ÈÀÈÃÈÙÈìÈÉ'"É#JÉNnÉô½ÉвÊéƒËBmÌq°Ì"Í+BÍ%nÍÍ”Í4bÎ@—Î)ØÎNÏ>QÏ=Ï0ÎÏ>ÿÏ=>Ð2|Ð%¯Ð@ÕÐAÑEXÑEžÑKäÑ‘0ÒœÂÖ|_×/Ü×$ Ø21ØGdØP¬Ø(ýØ;&Ù1bÙ<”Ù"ÑÙEôÙÄ:Û:ÿÜu:ß°áÂäÝå øåææ6æRæ kæxææŸæ¹æNÒæ !ç/çOçfçyç‹ç žç ©ç$µçÚçÅàçG¦èîè5éDé_béFÂé êê 9ê Zê hê vê „ê ’ê ê?µê õêëëëë ë ?ë Jë Uëcëkësëƒë“ë£ë"¼ëßëøëì)ìEì_ì(tì ì§ì°ì ¹ìÅì"Øìûì íí6íPí_ísí†íží¶íÐíðíÿíî *î7îIRîOœî ìî$øîï?1ï qï!’ï#´ïØï èï òï(üï!%ð!Gð!ið‹ð!£ð(Åðîðñ ññ 2ñ>ñNñ^ñ(uñžñ½ñÓñÙñëñ ýñ ò ò (ò 3ò ?ò Lò Vòdòƒò’ò¬òÂòØòkêòVóD[ó ó §ó´óÒóðóô,ôJô!iô‹ô&ªôÑôñôõ1õQõ$qõ–õ°õÊõäõþõö 'ö4ö Cö Pö]öuööžö)¯öÙöáöûö÷-÷4÷HP÷ ™÷ ¦÷±÷Å÷\É÷2&ø<Yø?–øÖø‹tù|ú/}úF­úBôú"7û#Zûg~ûæû"ü)ü Iü'jü'’ü'ºü'âü& ý 1ý?ý ]ý~ý”ýªýÀýÖýìý þ¢þ±þ&¶þÝþ åþóþ;øþ4ÿ[Jÿ_¦ÿUV\Z³9JHW“LëS8FŒ8ÓZ \gdÄk)f•müSji¾D(UmÃÉ,ß  + 7DS¬Yô û  Ú :û 6 ; T  f s G‡ IÏ )  C N _ q v Ž © à à ø  ( - B G P  a  m $x  J¨ 1ó ;%2a4” ÉÕë   'e2&˜%¿åþ6Pm…  ¥³ÂÚ>ï?.n w„6¬ ãñ 7 U `kr]yZ i%Ÿ–`?’WíÝ,'e\de‡³'›$P áºß’M{ö8C·8‡è£ ïÀªÝj•¾ÕÁ{G–àäÞÖ•e#Xp|@ÿ®¬÷} ,¥-Ê/!zÖuTÀy-û‘¥ï|Ô­ñ¸h|†Ðf¿ÿ'¬{Ø]¤Xõ¦;h²æ /ï¡ñiÐ׆Ýo¶!nØ2ÈQÞ¨*d3YÞj›*âÐÑ9!14…á5«_ÇvÕ5ê/: MÍÙôû8˜ATNˆ"ÙCÇ„¶â¢²˜¥¼m…Cƒ 3¥ÎkÜT è„MÁ=w$ºóË4rÓN àãAuk@©Tuß©éìûF¡¯ ½§•»ž "àSoÕ”¨*+ ±—ÔЋßFÀÎ C¿¨S<,pÌ]Ƴ{‡|#‚†'|ì´=Ü>··'A¨‰ïó¡QŒRêð”jÑ}–„—dÍD€¹W&¢ Ú•i»Ç¡± V°f«;ì¯üÔ²(JkêØ×õø_‡¾]0µ>¼&¿— K”éÍ·\õîþIÞŸ^Ö’í÷^®j²šÂ!-ZÚí0ÂÂÜöqçÃfk¦N¦Í.9ž$ kÜ14‘6ÒàýôóÏJ"8—$ Z55-Žx›ƒ<—Gf1ýWìÖÐLF÷»¤ƒŸ—jÁÔÁòÉ‘´T £¬çºõ ª]µ‡# Mǃ6lsŸpœ¬±ÔXÚ—ˆ{ ?‘=ÎÙV¯^¿¾#ÈÖV ²[Ry¾6 N§éìÙè_g9虨º ¹3DHIJ7‹1Žç@7l··¸×ÂÅyrJHXޤÿ»«Æ¾Šúþ_ûåg?µò´ÍA½¾¨”nš}åîFP³` ®DùÈ`4%Û³*ˆë%>9þ…0ü†:É:7œÐá•¢ÙÌ–q>óE´½L$¡t ¢Âsþ”åML§8Õy¨KŠ»LC´Ý»µ¤Ý;ë›ò»BWB¼ Šf­&š™~¿ˆU‹öeñilÀoLÅiüL¡ïì]‚È ùüaé Be=ÚÖ6%ü³ùMÓû<•[ŠßÄÄ"´^S'wçœ|^2IË;UV!Û§}š΋™ú:4çóœô“Ð?U/ øö÷ÿ“xBàqŽù’1b÷á2Òf#û(ù䃭”s¨Ÿu°- ý Ñ[eP%ó-RL¢Sñ„Å’å«tºZø‰±B³O ÛÜÝ­†ú¸ÆÿŠY ‹©¹Ù)¹ðyrÕbÚ£²gÇ¥µhjv H6;Ø×uÒ#i œ“âÈmŽä  (úÙEhÅA¡=@;ýÖ 8ízO¤±GsïžöÎ\ŒMýGåØ(ãa Bu¦C7Î3… ´m©«VE=Ξ Í>×KXxÞ ÕrÅlWR}3…bç´/0~®†ò~Ûð.ÜðPJ[x aùÑÃÐ|Ÿüt]«ûcÓ Œ'–z*„ÄbL˜©×AÛVȳ¾P’¦2o_±~Z÷>~ÊJÌâØŒðß>õ7÷.øX9ŠtuvÇzÅ @0à¡i›ŸYI­0sÚüºÊò_Xåu+_)2î<dÐêHh¶×cAhROË‹"Qtç[¦ám„_UopqrM?Áiõ¼^7õ27¥trOwWóŽ x  ö¸B­I„ мðòî vúxK¯µn^ô“¯ø]ÃÇô/^“~¿b\O±ïœÒvÿUa¢ù`ö d ÝÏn  #.Pá<bÆô<á,êsq¶Âzl.ë-¯˜F)T3ÓÆE'@Ëz–¢«–¦fKZyûC=;sÑÌ×<÷`•þA ø!öÏHô[³’D°D„§±‰×ñÓ§Ó5QÎ F£s’¯H†bªZpíÓ+™Ì“Úê(Çëú}agck>{S’žUpqêÍŽKáh?h2ÜqÉYéPß&r­&ݰ‘˜M€^¼ª \Ñ™' Ô . ,ÒØÃóÅÔ·‚ƒøÿªñ›¶íÉÄ›k ÞœÛ.²R­™ëÒ¼ä: ‰…Rw½ÀOâNË»¶m‰_Òú£3á†Àˆ ”&ˆÅªÁ +OÆ-à‹“k#ÃÚYBŒµš¿f•ƪoîž“pG`™[Qþã‚vãäåæç©µS)ãú"DÂ8q8®@½Ïð\˜Œ ‡Ê¤ \!ã¢z®Œ¨*{ ?¹aå!54Ïî)XVª(îÏ2J$n3W›/ ™÷¬=m4ýºT žw) °ù¼ê í“QyŸD-Â麘l—ÎÊS„jY1»&À0 Ž·+cÈär´Y5Ä€‚6d|͇C5À?¦åJiÁ‚(¼‘Fß ¸ŽeI/ð<”ë ñ"VÕw*â.ŒÏ[:—ìØè:;9€ $E¸µ ã7°ç«‚Fœ`t$,x,SŒì°,Ìëj¬z ŠR9î}>+ÄO¾}âÊN·”o˜«ÌɈìò9â(ZqñBØc‹ÛEϯÄãm$ôQè¯wïï a… IéñÈ¥göZedæ ü4d±…ɉäøGÿ(…+Ú&¬X€ÉœÃ¸ven°žf {*L+" m€:šl­‚ U2ÉgÃ\ʲ¸VÕÔrKvƒýQc®1ˆ%ùTêèÄJ‰ä*"S =U1`¶o½¸æCÒ©næG<xÆÃYÄx‘Nšèõ 6?sËUþ¹IÊ|,Ïí§/ÆÌc0.ÿ–°Öz†%¬d€w%%€©n0tÙðtŸGÌÜþ€6‡Tº)¬PoÂp¡ ‡ÊÁßwaÍ@Q{èÛ~l;½hàËg¥lôbòA)æÇæNO‘RЦ§ÜóÓÑ6D¤I¶½+™Öš}ž9‘üg•~¿æ8¹øë3F®à ý–ÓÒò®¶ãDE:ÉË&ÔHYë vuƒ©§íÑÞ‹y¥#j7Á[úÛ ý½4G~þûàcÑšEéßa£äkÅm‰b¹¢\PNK@E‰ WH¹K1¤ª˜!ÈËݳcæp£nƒÀy‚â] W)éÕ¤ÞˆÞ£gHõ5Ù£]`²¿ Access Capability: %s Canon Wifi support File Download, Filesystemtype: %s Free Space (Bytes): %llu (%lu MB) Free Space (Images): %d Generic Image Capture, Maximum Capability: %llu (%lu MB) Nikon Wifi support No Image Capture, Storage Type: %s StorageDescription: %s VolumeLabel: %s Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Capture Formats: Device Capabilities: Device Property Summary: Storage Devices Summary: Drive %s %11s bytes total %11s bytes available Serial Number: %s Version: %s (battery is %d%% full) PTP error %04x on query Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d error %x on query. not read out. %.0f mm%.1f stops%0.4fs%d %d/%d%d Multi Frame Noise Reduction%d mm%d/%d%f%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)%sCanon EOS Shutter Button%sNikon Capture 2%sNikon Capture 3 (Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*+NEF (RAW)-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 (Short)1 EV1 fps1 min1 minute1 step spd/aperture1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/250s (Auto FP)1/25s1/2s1/301/30s1/3200s1/320s1/320s (Auto FP)1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 mins10 minutes10 mm10 seconds100%10s11 fps1152 x 86412 mm1280 x 96013s1515 mins15 minutes15s16 seconds16:91s1x22 EV2 fps2 seconds2.02.0 m2.5s2.5x20 seconds20s21 points25%25s29 mm2s2x3 (Normal)3 EV3 fps3030 minutes30 seconds30s34 mm3:23D Tracking3s3x44 fps4 seconds41 mm4s4x5 (Long)5 fps5 mins5 minutes5 seconds50 Hz50%51 mm51 points51 points (3D)58 mm5s5x6 fps6 mm6 seconds60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 seconds8s8x9 fps9 points9xA-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)AB FilterACAC PowerAC adapterAC adapter is connected. AC adapter is not connected. ADL bracketingAE & FlashAE LockAE Lock onlyAE LockedAE lock (Hold)AE lock (Reset on release)AE lock (hold)AE lock onlyAE onlyAE-L/AF-L ModeAE-lockAE/AF LockAE/AF lockAEAF Lock Button 2AEB Exposure CompensationAF ActivationAF Area IlluminationAF Area PointAF Assist LampAF Beep ModeAF DistanceAF LCD Top Mode 2AF Lock HoldAF Lock OnAF Lock OnlyAF Lock onlyAF LockedAF ModeAF OnAF On ButtonAF lock onlyAF-AAF-CAF-C Mode PriorityAF-ONAF-SAF-S Mode PriorityAF11AF51AI FocusAI ServoASIC Revision: %d.%d ASX PlaylistAUTOAVAV Lock SettingAV MaxAV OpenAX203 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.AX203 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.A_DEPAbout Konica Q-M150: This camera does not allow any changes from the outside. So in the configuration, you can only see what it is configured on the camera but you can not change anything. If you have some issues with this driver, please e-mail its authors. Abstract Audio AlbumAbstract Audio PlaylistAbstract Audio Video PlaylistAbstract Calendar ItemAbstract Chaptered ProductionAbstract ContactAbstract Contact GroupAbstract DocumentAbstract Image AlbumAbstract MediacastAbstract MessageAbstract Message FolderAbstract Multimedia AlbumAbstract Video AlbumAbstract Video PlaylistAccess modeAccess top item in MY MENUActionActive AF SensorActive D-LightingActive Pic Ctrl ItemAd-hocAdc65 Benjamin Moos AdobeRGBAdvanced Transfer CancelAlbum nameAlkalium manganeseAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Angle LevelAnti-redeyeAnti-redeye FillAnywhereAox generic driver Theodore Kilgore ApertureAperture SettingAperture SettingsAperture changedApplication ModeApplication Mode 0Application Mode 1ArtistArtist NameAspect RatioAssign Func ButtonAssign Func. ButtonAssign Preview ButtonAssist LightAudible.com CodecAutoAuto + Red Eye SuppressionAuto ApertureAuto Bracket SelectionAuto DX CropAuto Distortion ControlAuto Exposure Bracket CountAuto Exposure BracketingAuto FPAuto Focus AreaAuto Focus Mode 2Auto ISOAuto ISO Multi Frame Noise ReductionAuto ISO P/A/DVP SettingAuto Meter Off TimeAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off InfoAuto Off MenuAuto Off PhotoAuto Off TimeAuto Off TimersAuto Power OffAuto Power Off (minutes)Auto Slow SyncAuto White Balance BiasAuto exposure lockAuto focus: AI focusAuto focus: AI servoAuto focus: one-shotAuto sensitivityAuto, red-eye reductionAutofocus ModeAutofocus error.AutomaticAutomatic Automatic (No Flash)Automatic FlashAutomatic MacroAutomatic Macro (close-up)Automatic Red-eye ReductionAutomatic exposure adjustment on previewAutomatic flashAutomatic flash on captureAutumn colorsAvAv MaxAv Max ApexAv OpenAv Open ApexAvailable ShotsAvailable memory: AverageAverage FilesizesAverage MeteringB/WBWBW ContrastBW Filler EffectBW Setting TypeBW SharpnessBack LightBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for card status %dBad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery Cell KindBattery LevelBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery Life: %i Battery LowBattery ModeBattery TypeBattery exhausted, camera off.Battery level: %.1f Volts. Revision: %08x.Battery status: %s, AC Adapter: %s BeachBeach/SnowBeepBeep ModeBeep mode changedBeep offBeep onBegin Edit ObjectBestBit rate %ld is not supported.Black & WhiteBlack & whiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlossomBlueBottomBracket ModeBracket OrderBracket SetBracketingBracketing C 0.3 StepsBracketing C 0.7 StepsBracketing C 1.0 StepsBracketing C 2.0 StepsBracketing C 3.0 StepsBracketing EnableBracketing Frames and StepsBracketing S 0.3 StepsBracketing S 0.7 StepsBracketing S 1.0 StepsBracketing S 2.0 StepsBracketing S 3.0 StepsBracketing WB HiBracketing WB LoBracketing burstBright+Bright-BrightnessBrightness+Brightness-Brightness/ContrastBuiltin RAMBuiltin ROMBulbBulb Exposure TimeBulb ModeBurstBurst IntervalBurst NumberBusyButtons and DialsCCD NumberCCD Serial NumberCHDKCHDK ScriptCHDK did not leave recording mode.CRWCSM MenuCameraCamera ActionsCamera Body IDCamera ConfigurationCamera Date and TimeCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ManufacturerCamera ModeCamera Mode Not Adjust FNumberCamera ModelCamera Model: %s Camera Not ReadyCamera OK.Camera OrientationCamera OutputCamera OwnerCamera SettingsCamera Status InformationCamera and Driver ConfigurationCamera appears to not be using CompactFlash storage Unfortunately we do not support that at the moment :-( Camera busy. If the problem persists, please contact %s.Camera could not complete operationCamera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera has taken %d pictures, and is using CompactFlash storage. Camera is configured for lights flickering by %dHz. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera unavailable: %sCamera was already activeCamera was woken upCan't capture new images. Unknown errorCan't delete all images.Can't delete image %s.Can't upload this image to the camera. An error has occurred.Cancel Canon DSLR AutofocusCandlelightCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCanon Auto Exposure ModeCanon CaptureCanon Capture failedCanon EOS CaptureCanon EOS Capture failedCanon EOS Capture failed to release: Card read-only?Canon EOS Capture failed to release: Perhaps mirror up?Canon EOS Capture failed to release: Perhaps no focus?Canon EOS Capture failed to release: Perhaps no more memory on card?Canon EOS Capture failed to release: Unknown error %d, please report.Canon EOS Capture failed: %xCanon EOS Full-Press failedCanon EOS Full-Release failedCanon EOS Get Changes failedCanon EOS Half-Press failedCanon EOS Half-Release failedCanon EOS Remote ReleaseCanon EOS Trigger Capture failed: 0x%xCanon EOS ViewfinderCanon EOS ZoomCanon EOS Zoom PositionCanon PowerShot series driver by Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5 additions by Ole W. Saastad Additional enhancements by Holger Klemm Stephen H. WestinCanon Shooting ModeCanon disable viewfinder failedCanon enable viewfinder failedCanon get viewfinder image failedCaptureCapture DelayCapture SettingsCapture Size ClassCapture TargetCapture Transfer ModeCapture size class changedCapture type is not supportedCardCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card name: %s Free space on card: %d kB Card not supported.Card removed during access.Cell Kind PriorityCenter Button Playback ModeCenter Button Shooting ModeCenter Button Zoom RatioCenter SpotCenter Weight AreaCenter WeightedCenter Weighted AverageCenter-WeightedCenter-spotCenter-weightedCenter-weighted Average MeteringCenter-weighted MeteringCenter-weighted averageCenter-weighted meteringCentreCentre Weight AreaCentre-spotChange Camera Mode FailedChange Pic Ctrl ItemChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorChildChildrenChoose Color TemperatureChoose non-CPU lens numberClean Image SensorClean SensorClean data storeClose Media SessionClose sessionClose upClosest SubjectCloseupCloudyCloudy White Balance BiasColorColor GainColor ModeColor ModelColor SettingsColor SpaceColor TemperatureColor or Function ModeColor sketchColor temperatureCommand can not be cancelled.Command order error.CommanderCommunication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompatibility ModeCompressionCompression SettingConfigurationConfiguration for your FUJI cameraConnected to cameraContinuousContinuous AFContinuous High-speed ShootingContinuous Low SpeedContinuous Low-speed ShootingContinuous ShootingContinuous Shooting Speed HighContinuous Shooting Speed SlowContinuous Speed HighContinuous high speedContinuous low speedContinuous silentContinuous-Servo AFContrastContrast+Contrast-Copy objectCopyrightCopyright (max. 20 characters)Copyright InfoCopyright InformationCorrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not change ISO speedCould not change apertureCould not change beep modeCould not change exposure compensationCould not change flash modeCould not change focus modeCould not change image formatCould not change shooting modeCould not change shutter speedCould not change time of file '%s' in '%s' (%s).Could not change zoom levelCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file '%s' in folder '%s' (error code %i: %s).Could not delete file.Could not detect any cameraCould not detect any camera at port %sCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get information about '%s' (%s).Could not get information about '%s' in '%s' (%s).Could not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Create Wifi profileCreation date: %s, Last usage date: %sCreativeCreative PC-CAM 300 Authors: Till Adam and: Miah Gregory Creative PC-CAM600 Author: Peter Kajberg Current Mode: Camera Mode Current Mode: Playback Mode Current camera time: %04d-%02d-%02d %02d:%02d Free card memory: %d Images on card: %d Free space (Images): %d Battery level: %d %%.Currently, PTP is only implemented for USB and PTP/IP cameras currently, port type %xCustomCustom Functions ExCustom Whitebalance PC-1Custom Whitebalance PC-2Custom Whitebalance PC-3Customise Command DialsDD/MM/YYYYDEPDPOF VersionDark on lightData has been corrupted.Date & TimeDate FormatDate Time Stamp FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDate: %sDay/Month/YearDaylightDaylight White Balance BiasDebugDeepDefault gatewayDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. Delayed RemoteDeleteDelete objectDeleting image %s.Depth of FieldDetected a "%s" aka "%s"Detected a '%s'.Development Parameters 1Development Parameters 2Development Parameters 3Device CertificateDevice IconDevice VersionDevice does not support setting object protection.Device failed to set object protection to %dDigita Johannes Erdfelt Digital Camera Layout (DCIM)Digital ZoomDigital Zoom MagnificationDigital macroDigital zoomDimera 3500 ver. %s %d/%d %d:%d. %d pictures used of approximately %d (high res) or %d (low res). Camera features: %s, %s, %s, %s. Flash is %s, is %s and is %s. Resolution is set to %s. Camera is %s powered %s. Direct PrintDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisable trusted file operationsDisconnecting camera.Disp AvDisp Av MaxDisplayDisplay Formats: Distant ViewDo not display TV menuDon't know how to handle camera->port->type value %i aka 0x%x in %s line %i.Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy to port your driver on this cam! Download program for GrandTek 98x based cameras. Originally written by Chris Byrne , and adapted for gphoto2 by Lutz Mueller .Protocol enhancements and postprocessing for Jenoptik JD350e by Michael Trawny . Bugfixes by Marcus Meissner .Download program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading %s...Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...Drive Canon DSLR AutofocusDrive Canon DSLR Manual focusDrive ModeDrive Nikon DSLR AutofocusDrive Nikon DSLR Manual focusDriverDriver SettingsDriver framework written by Lutz Mueller . This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro "itojun" Itoh . Integration of QVplay by Michael Haardt .Dual IrisDuskDusk/DawnDust Reference ErrorDynamic AF AreaDynamic Area (21)Dynamic Area (51)Dynamic Area (9)Dynamic-area AFDynamic-area AF with closest subject priorityEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.ESPESSIDEV StepEVF ModeEZoom Size of TeleEZoom Start PositionEconomyEffect ModeEffectsEmergencyEmptyEnable CopyrightEnable Image CommentEnable trusted file operationsEncounterEncounter BoxEncryptionEncryption key (hex)End Edit ObjectEnd trusted application sessionEnglishEnhancedErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationError waiting for ACK during initialization, retryingEvaluativeEvaluative MeteringEvent Emulate ModeEverywhereExecute predefined command with parameter values.Expected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.Expose IndexExposureExposure Aperture LockExposure Base CenterExposure Base MatrixExposure Base SpotExposure Bias CompensationExposure Bracketing ProgramExposure Bracketing StepExposure CompensationExposure Compensation (EV)Exposure Delay ModeExposure Display StatusExposure ISO StepExposure Index (film speed ISO)Exposure Indicate LightupExposure Indicate StatusExposure LockExposure MeterExposure MeteringExposure Metering ModeExposure ProgramExposure Program ModeExposure StepExposure TimeExposure compensationExposure compensation changedExposure compensation: %d Exposure compensation: %s Exposure delay modeExposure level on previewExternal FlashExternal Flash AttachedExternal Flash CompensationExternal Flash ModeExternal Flash SortExternal Flash StatusExternal syncExtra highF-NumberF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d FNumber LockFV LockedFV lockFace-priority AFFactory DefaultFailed to enable liveview on a Nikon 1, but it is required for captureFaithfulFar %dFar 1Far 2Far 3Far sceneFast FilesystemFast shutterFileFile '%s' could not be found in folder '%s'.File '%s/%s' does not exist.File Deletion, File Number SequencingFile Upload File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.Filename ConflictsFilename InvalidFilename RequiredFiletype: FlashPix (Filetype: JPEG (Fill flashFinder ISO DisplayFineFireworksFirmwareFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware VersionFirmware version: %d.%02d Firmware: %d.%d FisheyeFixedFlashFlash ChargedFlash Command A CompensationFlash Command A ModeFlash Command A ValueFlash Command B CompensationFlash Command B ModeFlash Command B ValueFlash Command ChannelFlash Command Self CompensationFlash Command Self ModeFlash Command Self ValueFlash Commander ModeFlash Commander PowerFlash CompensationFlash Exposure CompensationFlash Level LockFlash LockFlash MRepeat CountFlash MRepeat IntervalFlash MRepeat ValueFlash ModeFlash Mode Commander PowerFlash Mode Manual PowerFlash OffFlash OpenFlash Quantity CountFlash SettingFlash SettingsFlash Shutter SpeedFlash SignFlash Sync. SpeedFlash White Balance BiasFlash autoFlash mode changedFlash mode: auto, Flash mode: force, Flash mode: off Flash offFlash onFlash onlyFlash/apertureFlash/speedFlash/speed/apertureFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFlexible ProgramFlicker ReductionFlourescentFlourescent TypeFlourescent-1-home-6700KFlourescent-2-desk-5000KFlourescent-3-office-4200KFluorescentFluorescent HFluorescent Lamp 1Fluorescent Lamp 2Fluorescent Lamp 3Fluorescent Lamp 4Fluorescent Lamp 5Fluorescent White Balance BiasFluorescent-1-home-6700KFluorescent-2-desk-5000KFluorescent-3-office-4200KFluorescent: Cold WhiteFluorescent: Day WhiteFluorescent: DaylightFluorescent: Warm WhiteFocal LengthFocal Length DenominatorFocal Length MaximumFocal Length MinimumFocal Length TeleFocal Length WideFocusFocus AreaFocus Area WrapFocus Area ZoneFocus AreasFocus DistanceFocus InfoFocus LockFocus MeteringFocus Metering ModeFocus ModeFocus Mode 2Focus Point BrightFocus mode changedFocus positionFocusing PointFocusing Point on Center Only, AutoFocusing Point on Center Only, ManualFocusing error.Folder '%s' only contains %i files, but you requested a file with number %i.FoliageFoodFor bulb capture to work, make sure the mode dial is switched to 'M' and set 'shutterspeed' to 'bulb'.For cameras with S&Q Technologies chip. Should work with gtkam. Photos will be saved in PPM format. All known S&Q cameras have two resolution settings. What those are, will depend on your particular camera. A few of these cameras allow deletion of all photos. Most do not. Uploading of data to the camera is not supported. The photo compression mode found on many of the S&Q cameras is supported, to some extent. If present on the camera, video clips are seen as subfolders. Gtkam will download these separately. When clips are present on the camera, there is a little triangle before the name of the camera. If no folders are listed, click on the little triangle to make them appear. Click on a folder to enter it and see the frames in it, or to download them. The frames will be downloaded as separate photos, with special names which specify from which clip they came. Thus, you may freely choose to save clip frames in separate directories. or not. For cameras with insides from S&Q Technologies, which have the USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051, 0x9052, or 0x913D. Photos are saved in PPM format. Some of these cameras allow software deletion of all photos. Others do not. No supported camera can do capture-image. All can do capture-preview (image captured and sent to computer). If delete-all does work for your camera, then capture-preview will have the side-effect that it also deletes what is on the camera. File uploading is not supported for these cameras. Also, none of the supported cameras allow deletion of individual photos by use of a software command. ForceForce Flash Format card and set album name.Format compact flashFormat storageFrames Left: %i Frames Taken : %4d Frames Taken: %i Framing gridFrenchFriendly Device NameFront-curtain syncFullFull ImageFull ManualFull View File FormatFull-time-servo AFFunction Button 2Functional ModeFunctional Mode: 0x%04x GeneralGeneric FlatGeneric HierarchicalGermanGet Next Data BlockGet Partial Object (64bit Offset)Get Proximity ChallengeGet Registration ResponseGet WMDRM-ND License ResponseGet WMDRM-PD Application ResponseGet device property descriptionGet device property valueGet interdependent property descriptionGet license stateGet meter challengeGet meter responseGet number of objectsGet objectGet object handlesGet object infoGet object properties supportedGet object property descriptionGet object property listGet object property valueGet object referencesGet partial objectGet secure time challengeGet secure time responseGet storage IDsGet storage infoGet sync listGet thumbnailGet transferable playlist typesGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.Gray scaleGrayscaleGreenGroup DynamicGroup PTN TypeHDR High DynamicHDR ModeHDR SmoothingHand-held TwilightHardware ErrorHi 1Hi 2HighHigh (1152 x 872)High (good quality)High 2High ISO Noise ReductionHigh ISO noise reductionHigh controlHigh keyHigh sensitivityHigh-Speed ShutterHighlight active focus pointHoldHost Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?Hue AdjustmentHyPictI/O in progressIDIP address (empty for DHCP)ISOISO AutoISO Auto Hi LimitISO Auto High LimitISO SpeedISO speed changedIconsIdleIllegal parameter.Illum SettingImageImage %s is delete protected.Image & SoundImage AdjustmentImage CommentImage Comment EnableImage Comment StringImage CompressionImage FormatImage Format CFImage Format Ext HDImage Format SDImage ModeImage QualityImage Quality 2Image ReviewImage RotationImage Rotation FlagImage SettingsImage SizeImage StabilizationImage format changedImage height: %d Image number not valid.Image protected.Image sizeImage size: %d Image type %d is not supported by this camera !Image type %d not supportedImage type is not supportedImage width: %d Img Conf TimeImmediateIn useIncandescentIndicator DisplayIndoorInfinityInfinity/Fish-eyeInfo Disp SettingInfo Display Error StatusInformationInformation on STV0680-based camera: Information regarding cameras with ID 0x2770:0x9153. We do not recommend the use of a GUI program to access this camera, unless you are just having fun or trying to see if you can blow a fuse. For production use, try gphoto2 -P from the command line. Note: it is not possible to download video clips. Initial camera response '%c' unrecognizedInitializing CameraInitiate captureInitiate open captureIntelligent AutoIntelligent Auto Flash OffInternal RAMInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal error looking for camlibs. (path names too long?)Internal memory: %d MB total, %d MB free. InvalidInvalid ISO speed settingInvalid StatusInvalid Value ( %d ) Invalid aperture settingInvalid beep mode settingInvalid capture size class settingInvalid exposure compensation settingInvalid flash mode settingInvalid focus mode settingInvalid image format settingInvalid shooting mode settingInvalid shutter speed settingIris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JD11 ConfigurationJPEGJPEG BasicJPEG Compression PolicyJPEG FineJPEG NormJPEG NormalJapaneseKeep filename on uploadKids and petsKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BacklightLCD Backlight and Info DisplayLCD BrightnessLCD IlluminationLCD ModeLCD Off TimeLED ModeLG GSM generic driver Guillaume Bedot LandscapeLanguageLargan driver Hubert Figuiere LargeLarge Fine JPEGLarge Normal JPEGLeftLens Cover PresentLens Focal Length (Non CPU)Lens IDLens Maximum Aperture (Non CPU)Lens ModeLens NameLens SortLens TypeLens direction does not match flash light Lens is not connected LightLight MeterLight on darkLight too dark.List Wifi profilesList all filesListing files in '%s'...Listing folders in '%s'...Lithium IonLive View AF AreaLive View AF FocusLive View AF ModeLive View Drive ModeLive View Image Zoom RatioLive View ModeLive View Prohibit ConditionLive View StatusLoading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!LockLogitech Clicksmart 310 driver Theodore Kilgore Long Exp Noise ReductionLong Exposure Noise ReductionLong shutterLooking for camera ...Looks like a modem, not a cameraLosslessLossyLowLow (576 x 436)Low (best quality)Low 2Low LightLow Speed SynchronizationLow contrastLow keyLow sensitivityLow sharpeningLow-Speed ShutterLow-speed shutter function not availableLower case letters in %s not allowed.MM-DEPM3U PlaylistM4AMF (fixed)MF (selection)MHT Compiled HTML DocumentMM/DD/YYYYMPL PlaylistMTR > UnderM_DEPMacroManagedManualManual 2Manual FocusManual Mode BracketingManual Movie SettingManual Set Lens NumberManual focusManufacturer: %s Mars MR97310 camera library Theodore Kilgore Mars MR97310 camera. There is %i photo in it. Mars MR97310 camera. There are %i photos in it. MatrixMatrix meteringMatthew G. Martin Based on fujiplay by Thierry Bousch Max. Aperture at Max. Focal LengthMax. Aperture at Min. Focal LengthMax. Focal LengthMaximalMaximum Aperture at Focal Length MaximumMaximum Aperture at Focal Length MinimumMaximum ShotsMaximum continuous releaseMaximum number of Images: %d Media CardMedia Card GroupMedia CastMediumMedium (1152 x 872)Medium (better quality)Medium 1Medium 2Medium 3Medium Fine JPEGMedium HighMedium LowMedium Normal JPEGMedium highMedium sensitivityMemory Left: %i bytes Memory cardMemory card status (%d): %s Memory in camera: %d Mbit. Menu Bank Name AMenu Bank Name BMenu Bank Name CMenu Bank Name DMenus and PlaybackMetadata only supported for MTP devices.Meter Off TimeMetering ModeMf Drive Step EndMf Drive Step InsufficiencyMicrophoneMicrophone offMicrosoft Excel Spreadsheet (.xls)Microsoft Powerpoint (.ppt)Microsoft Word DocumentMin. Focal LengthMiniature effectMinimalMinimum Shutter SpeedMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Mirror UpMirror Up SequenceMisc exposure/lens settingsMissing NumberMl Spot PositionMlSpotPosAfLinkMlSpotPosCenterModel IDModel: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Model: %s Capacity: %i Mb Power: %s Auto Off Time: %i min Mode: %s Images: %i/%i Date display: %s Date and Time: %s Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s Modeling FlashModelling FlashModerateMonitorMonitor Off DelayMonochromeMonth/Day/YearMove objectMovieMovie CaptureMovie Card SlotMovie F-NumberMovie High ISO Noise ReductionMovie ISO SpeedMovie MicrophoneMovie QualityMovie ResolutionMovie Screen SizeMovie Shutter Speed 2Movie SoundMovie VoiceMulti Frame Noise ReductionMulti SpotMulti spotMulti-Spot MeteringMulti-spotMultiple Focusing Points (Center)Multiple Focusing Points (Left)Multiple Focusing Points (No Specification), ManualMultiple Focusing Points (Right)Multiple Focusing Points, AutoMultiselectorMup Mirror upMustek MDC-800 gPhoto2 Library Henning Zabel Ported to gphoto2 by Marcus Meissner Supports Serial and USB Protocols.MyColorsNEF (Raw)NEF+BasicNEF+FineNEF+NormalNIKON Auto Bracketing SetNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName '%s' (%li characters) too long, maximum 30 characters are allowed.Name PrefixName to set on card when formatting.Near %dNear 1Near 2Near 3Network maskNeutralNextNickel cadmiumNickel hydrideNight LandscapeNight PortraitNight SceneNight ViewNight VisionNight landscapeNight sceneNight snapshotNikon Capture 1Nikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. Nikon Exposure TimeNikon Flash ModeNikon ViewfinderNikon autofocus drive did not focus.Nikon changeafarea works only in LiveView mode.Nikon disable liveview failedNikon enable liveview failedNikon manual focus at limit.Nikon manual focus stepping too small.Nikon manual focus works only in LiveView mode.NoNo CF Card ReleaseNo Compact Flash Card detected No Dual IrisNo EXIF data available for %s.No File Deletion, No File Upload No FlashNo Open Capture, No Power LightNo Resolution SwitchNo SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card in camera. No card present.No memory card presentNo reason availableNo response from cameraNo space available to capture new images. You must delete some images.No space left on card.No vendor specific capture NoneNone selectedNormalNormal Normal AF OnNormal-area AFNot FullNot enough free spaceNot enough memory available on the memory cardNot in LiveviewNot in fill modeNot readyNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOS error in camera communicationOffOfficeOlympus 750 Ultra Zoom: (1) Olympus 750UZ has a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both the 'OK' and 'quickview' buttons until the camera control menu appears. Set it to control mode. (2) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Olympus E XML Capture Olympus wrapped XML support is currently only available with libxml2 support built in.OnOn (image review excluded)On + Red Eye SuppressionOn screen tipsOn, red-eye reductionOne ShotOne-push AutomaticOnly root folder is supported - you requested a file listing for folder '%s'.Open Capture, Open Media SessionOpen sessionOperation ModeOperation RefusedOperation cancelledOptimal qualityOptimize ImageOrientationOtherOther PTP Device PropertiesOther SettingsOther command executing.Out of FocusOut of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner NameOwner name changedPPALPCPLS PlaylistPTP Access DeniedPTP Cancel RequestPTP Capture Already TerminatedPTP Data ExpectedPTP Device BusyPTP Device Prop Not SupportedPTP General ErrorPTP I/O ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Property 0x%04xPTP Response ExpectedPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Standard Version: %d.%d PTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP TimeoutPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePTP VersionPTP2 driver (c) 2001-2005 by Mariusz Woloszyn . (c) 2003-%d by Marcus Meissner . This driver supports cameras that support PTP or PictBridge(tm), and Media Players that support the Media Transfer Protocol (MTP). Enjoy!Packet was rejected by camera. Please contact %s.Pan FocusPanFocusPanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic DC1580 gPhoto2 library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic introduced image capturing technology called PHOTOSHOT for the first time, in this series of Palmcorders. Images are stored in JPEG format on an internal flashcard and can be transferred to a computer through the built-in serial port. Images are saved in one of two resolutions; NORMAL is 320x240 and FINE is 640x480. The CCD device which captures the images from the lens is only 300K and thus produces only low quality pictures.Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk PanoramaParameter 1Parameter 2Parameter 3Parameter SetParsing the value of widget '%s' / 0x%04x failed with %d.PartialPartial MeteringParty/IndoorPath not absolutePerceived Device TypePersistent SettingsPet PortraitPhoto EffectPhoto Info. PlaybackPhoto in moviePhotos on camera: %d Picture EffectPicture Frame ConfigurationPicture SettingsPicture StylePicturesPictures in camera: %d PlayPlay modePlaybackPlayback Container IndexPlayback ObjectPlayback PositionPlayback RatePlaysForSure IDPort speedPortraitPowerPower DownPower SavingPower WindPower down devicePre-Capture DelayPresetPreset Custom 1Preset Custom 2Preset Custom 3Preset Custom 4Preset Custom 5Press 1Press 2Press 3Press FullPress HalfPreviewPreview ButtonPreview Button 2Preview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProcess WFC ObjectProduct ID: %02x%02x Profile nameProhibit Flash QualityQuick ResponseQuick Response RemoteQuick Review TimeQuiet ReleaseRAWRAW + JPEG BasicRAW + JPEG FineRAW + JPEG NormalRAW + Large Fine JPEGRAW + Large Normal JPEGRAW + Medium Fine JPEGRAW + Medium Normal JPEGRAW + Small Fine JPEGRAW + Small Normal JPEGRAW 2RAW+JPEGRGB GainRTC Status: %d Raw Bit ModeRaw CompressionRead Only with Object deletionRead-OnlyRead-WriteRead-only file attributes like width and height can not be changed.ReadyRear Curtain SyncRear Curtain Sync + Slow SyncRear-curtain syncRear-curtain with slow syncReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRecording DestinationRecording MediaRedRed Eye SuppressionRed eye flashRed-eye ReductionRed-eye Reduction + Slow SyncRed-eye automaticRed-eye fillRed-eye fill flashRed-eye reductionRed-eye reduction with slow syncReleaseRelease + FocusRelease 1Release 2Release 3Release FullRelease HalfRelease ModeRelease without CF cardRemoteRemote API VersionRemote Mirror UpRemote ModeRemote TimeoutRemovable RAM (memory card)Removable ROMRepeatingReport Acquired ItemsReport Added/Deleted ItemsRequested information about picture %i (= 0x%x), but got information about picture %i backReset Bank 0Reset Menu BankReset deviceReset device property valueReset focus point to centerResetting protocol...ResolutionResolution SwitchResolution plus SizeReverse Command DialReverse IndicatorsRevocation InfoRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. RightRotation AngleRotation FlagRotation SceneSD Card ID: %s SD memory: %d MB total, %d MB free. SDRAMSDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d SDRamST2205 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.ST2205 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Samsung PlaylistSaturationSceneScene ModeSectionSecure TimeSelect ColorSelective colorSelf TimeSelf TimerSelf Timer (next picture only)Self Timer DelaySelf Timer Shot NumberSelf Timer TimeSelf test deviceSelf-timerSelftimer 10sSelftimer 2sSelftimer DelaySend Partial ObjectSend Proximity ResponseSend Registration RequestSend WMDRM-ND License RequestSend WMDRM-PD Application RequestSend WMDRM-PD CommandSend WMDRM-PD RequestSend meter challenge querySend objectSend object infoSend object property listSending data...SensitivitySensor ID: %d.%d SepiaSequence 9Serial NumberSerial Number: %s Session Initiator InfoSession-persistent SettingsSet Current Time PositionSet Nikon Autofocus areaSet Nikon Control ModeSet Property Not SupportedSet clock in cameraSet device property valueSet license responseSet object property listSet object property valueSet object protectionSet object referencesSetting 4Setting 5Setting 6Setting 7ShadeShadowShady White Balance BiasShall the camera beep when taking a picture?SharpSharpeningSharperSharpnessShooting BankShooting Bank Name AShooting Bank Name BShooting Bank Name CShooting Bank Name DShooting ModeShooting SpeedShooting modeShooting mode changedShot SettingsShutdownShutter CounterShutter SpeedShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed 2Shutter Speed BulbShutter Speed microseconds (0 auto)Shutter speedShutter speed changedShutter/AF-ONSiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SilhouetteSingleSingle AreaSingle ShotSingle frameSingle silentSingle-Frame ShootingSingle-Servo AFSingle-area AFSingle-servo AFSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Size PrioritySize Quality ModeSize of Input Data to CameraSize of Output Data from CameraSkip to next position in playlistSkylightSlide Show IntervalSlot 2 Save ModeSlowSlow Shutter SettingSlow SyncSlow shutterSlow syncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SmallSmall Fine JPEGSmall Normal JPEGSmoothSmoothingSnowSoftSofterSoftware Rev.: %s Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to the gphoto developer mailing list (in English) Some notes about Olympus cameras (and others?): (1) Camera Configuration: A value of 0 will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch to this mode, turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you cannot use the camera's buttons. If you end up in this state, you should reconnect the camera to the PC and switch LCD to 'Off'.Some notes about Olympus cameras: (1) Camera Configuration: A zero value will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Sonix camera library Theodore Kilgore Sonix camera. There is %i photo in it. Sonix camera. There are %i photos in it. Sony CaptureSony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners Sorry, initializing your camera did not work. Please report this.Sorry, the property '%s' / 0x%04x is currently ready-only.Sorry, your Canon camera does not support Canon Capture initiationSorry, your Canon camera does not support Canon EOS CaptureSorry, your Canon camera does not support Canon Viewfinder modeSorry, your Canon camera does not support Canon captureSorry, your Nikon camera does not seem to return a JPEG image in LiveView modeSorry, your Nikon camera does not support LiveView modeSorry, your camera does not support Nikon captureSorry, your camera does not support generic captureSoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSportsSports ActionSpotSpot MeteringSpot Metering Interlocked with AF FrameSpot Metering ModeSpot meteringSpot metering interlocked with AF frameSpot-AFStandardStandard Development ParametersStart movie recordingStartupStartup and ShutdownStep #2 of initialization failed! (returned %i bytes, expected %i). Camera not operationalStep #2 of initialization failed: ("%s" on read of %i). Camera not operationalStep #3 of initialization failed! (returned %i, expected %i). Camera not operationalStep #3 of initialization failed: "%s" on read of %i. Camera not operationalStep #3 of initialization failed: "%s" on write of %i. Camera not operationalStep #4 failed (returned %i, expected %i). Camera not operationalStep #4 failed: "%s" on read of %i. Camera not operationalStill Capture ModeStill ImageStrobe error.Subject-tracking AFSummary for Mustek MDC800: SunsetSuper macroSuperFineSuperior AutoSupported MTP Object Properties: Supported Thumb SizeSweep PanoramaSwitching Camera OffSynchronization PartnerSynchronize camera date and time with PCSynchronize frame data and time with PCSystem error.TFTTFT + PCTIFF (RGB)TTLTVTV Lock SettingTV Output FormatTarget value is not in enumeration.Tele-zoom Cont. Priority AETerminate open captureTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera could not be contacted. Please make sure it is connected to the computer and turned on.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support getting storage informationThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The property '%s' / 0x%04x was not set (0x%04x: %s)The property '%s' / 0x%04x was not set (0x%04x: %s).The requested port type (%i) is not supported by this driver.There are still files in folder '%s/%s' that you are trying to remove.There are still subfolders in folder '%s/%s' that you are trying to remove.There are two resolution settings, 352x288 and 176x144. Photo data is in JPEG format when downloaded and thus has no predetermined size. Therefore, the advertised maximum number of photos the camera can hold must be understood as an approximation. All gphoto2 options will work, except for the following which the hardware will not support: Deletion of individual or selected photos (gphoto2 -d) Capture (gphoto2 --capture or --capture-image) However, capture is possible using the webcam interface, supported by the spca50x kernel module. GUI access using gtkam has been tested, and works. However, the camera does not produce separate thumbnails. Since the images are in any event already small and of low resolution, the driver merely downloads the actual images to use as thumbnails. The camera can shoot in 'video clip' mode. The resulting frames are saved here as a succession of still photos. The user can animate them using (for example) ImageMagick's 'animate' function. For more details on the camera's functions, please consult libgphoto2/camlibs/clicksmart310/README.clicksmart310. There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.There is space for another %d low compressed %d medium compressed or %d high compressed pictures This camera can not capture previews.This camera can not capture.This camera can not trigger capture.This camera contains a Jeilin JL2005%c chipset. The number of photos in it is %i. This camera contains a Jeilin JL2005A chipset. The number of photos in it is %i. This camera does not provide a manual.This camera does not provide any configuration options.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This driver supports cameras with Jeilin JL2005B or C or D chip These cameras do not support deletion of photos, nor uploading of data. If present on the camera, video clip frames are downloaded as consecutive still photos. For more details please consult libgphoto2/camlibs/README.jl2005c This driver supports cameras with Jeilin jl2005a chip These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README.jl2005a This driver supports cameras with Mars MR97310 chip (and direct equivalents ??Pixart PACx07??). These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. Photo data processing for Argus QuickClix is NOT SUPPORTED. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README. This driver supports some cameras that use the Sonix sn9c2028 chip. The following operations are supported: - thumbnails for a GUI frontend - full images in PPM format - delete all images - delete last image (not all of the Sonix cameras can do this) - image capture to camera ( ditto ) If present on the camera, video clip frames are downloaded as consecutive still photos or as AVI files, depending on the model. Thumbnails for AVIs are still photos made from the first frame. A single image cannot be deleted unless it is the last one. This is the driver for Canon PowerShot, Digital IXUS, IXY Digital, and EOS Digital cameras in their native (sometimes called "normal") mode. It also supports a small number of Canon digital camcorders with still image capability. It includes code for communicating over a serial port or USB connection, but not (yet) over IEEE 1394 (Firewire). It is designed to work with over 70 models as old as the PowerShot A5 and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of 2005. It has not been verified against the EOS 1D or EOS 1Ds. For the A50, using 115200 bps may effectively be slower than using 57600 If you experience a lot of serial transmission errors, try to have your computer as idle as possible (i.e. no disk activity) This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.This preview doesn't exist.ThumbnailThumbnail height: %d Thumbnail size: %d Thumbnail width: %d Tilt-ShiftTime formatTime: %a, %d %b %Y %T TimelapseTimelapse IntervalTimelapse NumberTimeout even after 2 retries. Please contact %s.TimerTimer (Single) ShootingTimer + RemoteTimer 10 secTimer 2 secTone CompensationToo brightToo darkToo many retries failed.TopTopfield TF5000PVR Marcus Meissner Library to download / upload files from a Topfield PVR. Ported from puppy (c) Peter Urbanec Toshiba David Hogue Toshiba pdr-m11 driver. Total flashes fired: %d Total pictures captured: %d, Flashes fired: %d Total pictures taken: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Truncate ObjectTrying to contact camera...Tune Colour TemperatureTune Preset 0Tune Preset 1Tune Preset 2Tune Preset 3Tune Preset 4TungstenTungsten White Balance BiasTurbo modeTvType of SlideshowU1U2UI LanguageUI LockUILockTypeUNIX TimeUSB 1.1USB 2.0USB SpeedUnassignedUndefinedUndefined AudioUndefined Calendar ItemUndefined CollectionUndefined ContactUndefined DocumentUndefined MessageUndefined PTP PropertyUndefined VideoUndefined Windows ExecutableUnder > MTRUnderwaterUnknownUnknown %dUnknown CommandUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown flash mode %d, Unknown modelUnknown model "%s"Unknown valueUnknown value %04dUnknown value %04xUnknown value 0x%04xUnknown zoom mode %d Unknown(%04x)Unknown: 0x%04x Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. UnusedUpdate device firmwareUpload URLUpload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...Upper 1Upper 2User canceled downloadUser defined 1User defined 2User defined 3Vendor ExtensionVendor Extension Description: %s Vendor Extension ID: 0x%x (%d.%d) Vendor ID: %02x%02x Version: Version: %s Vertical AF OnVideo ModeVideo OUTVideo OutViewfinder GridViewfinder Grid DisplayViewfinder virtual horizontVignette ControlVividVolatile SettingsVolume LevelWB bracketingWEP 128-bitWEP 64-bitWIFI ESSIDWIFI channelWIFI profilesWLAN GUIDWPL PlaylistWaiting for completion...Waiting...Warning DisplayWarning Level 0Warning Level 1Warning StatusWarning in canon_usb_set_file_attributes: canon_usb_dialogue returned error status 0x%08x from cameraWaterWe expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite Balance Bias Preset 0White Balance Bias Preset 1White Balance Bias Preset 2White Balance Bias Preset 3White Balance Bias Preset 4White Balance Bias Preset NrWhite Balance Bracket ProgramWhite Balance Bracket StepWhite Balance Colour TemperatureWhite Balance Preset Name 0White Balance Preset Name 1White Balance Preset Name 2White Balance Preset Name 3White Balance Preset Name 4White Balance Preset NumberWhite Balance Preset Value 0White Balance Preset Value 1White Balance Preset Value 2White Balance Preset Value 3White Balance Preset Value 4White BoardWhite balanceWhite boardWhite levelWhiteBalanceWhiteBalance Adjust AWhiteBalance Adjust BWhiteBalance X AWhiteBalance X BWhitebalance Reset ErrorWideWide-area AFWindows Image FormatWireless SyncWriteWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.XMLDocumentYYYY/MM/DDYear/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.You have to set the port prior to initialization of the camera.You must be in record mode to capture images.You need to specify a folder starting with /store_xxxxxxxxx/Your Logitech Clicksmart 310 has %i picture in it. Your Logitech Clicksmart 310 has %i pictures in it. Your USB camera has a S&Q chipset. The total number of pictures taken is %i Some of these could be clips containing several frames Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i Your USB camera is an iClick 5X. The total number of pictures taken is %i Your USB camera seems to be a LG GSM. Firmware: %s Firmware Version: %s Your USB picture frame has a AX203 chipset Your USB picture frame has a ST2205 chipset Your camera only supports deleting the last file on the camera. In this case, this is file '%s'.Zone Focus (Close)Zone Focus (Close-up)Zone Focus (Far)Zone Focus (Medium)Zone Focus (Reserved 1)Zone Focus (Reserved 2)Zone Focus (Reserved 3)Zone Focus (Reserved 4)Zone Focus (Very Close)ZoomZoom (in millimeters)Zoom level changedZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autoauto + red eye suppressionbatteryblack & whitebulbcamera inactive for > 9 seconds, re-initing. cannot be queried. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_int_capture_image: initial canon_usb_list_all_dirs() failed with status %licanon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: Reached end of packet while examining the first direntcanon_int_list_directory: truncated directory entry encounteredcanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Initial dirent packet too short (only %i bytes)canon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_body_id: Unexpected data length returned (%i bytes, expected %i)canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)canon_usb_lock_keys: Unexpected length returned from "lock keys" function (%i bytes, expected %i)canon_usb_set_file_attributes: canon_usb_dialogue failedcanon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)colorcoolshot library vcould not change owner namecould not set timeeconomyexternallyfill infinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)high compression, hp215 Marcus Meissner Driver to access the HP Photosmart 215 camera. Merged from the standalone hp215 program. This driver allows download of images and previews, and deletion of images. iClick 5X driver Theodore Kilgore iTTLin fill modeinfiniteinternallyjamcam library vjl2005a camera library Theodore Kilgore jl2005bcd camera library Theodore Kilgore lock keys failed.losslesslow (320x240)low compression, mRAWmRAW + Large Fine JPEGmRAW + Large Normal JPEGmRAW + Medium Fine JPEGmRAW + Medium Normal JPEGmRAW + Small Fine JPEGmRAW + Small Normal JPEGmedium compression, menuno status reported.nonenormalnot available: %soffonon + red eye suppressionon batterypccam600 init: Unexpected error: gp_port_read returned %d instead of %dpccam600_close: return value was %d instead of %dpccam600_get_file:got index %d but expected index > %dpccam600_init: Expected %d blocks got %dpccam600_init: Expected > %d blocks got %dplaypower OKpower badread onlyreadwritereadyrecordrecursive calls are not supported by the sierra driver! Please contact %s.red eye flash off. red eye flash on. red eye suppressionsRAWsRAW + Large Fine JPEGsRAW + Large Normal JPEGsRAW + Medium Fine JPEGsRAW + Medium Normal JPEGsRAW + Small Fine JPEGsRAW + Small Normal JPEGsRGBsRGB (nature)sRGB (portrait)sierra SPARClite library Scott Fritzinger Support for sierra-based digital cameras including Olympus, Nikon, Epson, and Pentax. Thanks to Data Engines (www.dataengines.com) for the use of their Olympus C-3030Z for USB support implementation.spca50x library vsq905 generic driver Theodore Kilgore sq905C generic driver Theodore Kilgore standardsuperfinesx330z is USB onlytime setunable to guess initial CRC value undefinedunexpected datatype %iunknown (0x%02x)unknown compression %d, unknown resolution %d) vCalendar1vCalendar2vCard2vCard3warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2 2.5.8 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2015-07-22 17:04+0200 Last-Translator: Jakub Bogusz Language-Team: Polish Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Możliwość dostÄ™pu: %s ObsÅ‚uga Canon Wifi ÅšciÄ…ganie plików, Typ systemu plików: %s Wolne miejsce (bajty): %llu (%lu MB) Wolne miejsce (klatki): %d Ogólne pobieranie obrazu, Maksymalna pojemność: %llu (%lu MB) ObsÅ‚uga Nikon Wifi Bez pobierania obrazu, Typ urzÄ…dzenia: %s Opis urzÄ…dzenia: %s Etykieta wolumenu: %s Identyfikacja aparatu: Model: %s WÅ‚aÅ›ciciel: %s Stan zasilania: %s Informacje o dysku flash: %s Czas: %s Formaty zdjęć: MożliwoÅ›ci urzÄ…dzenia: Wykaz wÅ‚asnoÅ›ci urzÄ…dzenia: Wykaz urzÄ…dzeÅ„ z danymi: UrzÄ…dzenie %s %11s bajtów w sumie %11s bajtów dostÄ™pnych Numer seryjny: %s Wersja: %s (bateria jest w %d%% peÅ‚na) Błąd PTP %04x przy zapytaniu CaÅ‚kowita pamięć to %8d bajtów. Wolna pamięć to %8d bajtów. Liczba plików: %d błąd %x przy zapytaniu nie odczytano. %.0f mm%.1f kroków%0.4fs%d %d/%dWieloklatkowa redukcja szumów %d%d mm%d/%d%f%i (nieznany)Odebrano %i bajtów w nieznanym formacie obrazu. ProszÄ™ napisać pod %s z proÅ›bÄ… o pomoc.%i obrazów nie udaÅ‚o siÄ™ usunąć ponieważ sÄ… zabezpieczone%lld (nieznany)%s (czas hosta %s%i sekund)%sprzycisk migawki Canon EOS%sZdjÄ™cia w trybie Nikon 2%sZdjÄ™cia w trybie Nikon 3Biblioteka dla aparatów (Traveler) SX330z (i innych Aldi-cam). Aparaty innych producentów, jak Jenoptik, Skanhex, Maginon, powinny także dziaÅ‚ać. ProszÄ™ wysyÅ‚ać raporty błędów i komentarze. Dominik Kuhlen * Zakłócenia obrazu albo problemy z komunikacjÄ… sÄ… zwykle spowodowane niskim stanem baterii. * ZdjÄ™cia robione zdalnie tym aparatem sÄ… przechowywane w tymczasowej pamiÄ™ci RAM, a nie na karcie pamiÄ™ci flash. * Sterowanie ekspozycjÄ… przy zdjÄ™ciach może być konfigurowane rÄ™cznie lub ustawione w trybie automatycznym. * Jakość obrazu jest teraz niższa niż mogÅ‚aby być. *NIEZNANY*+NEF (surowy)-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 (krótka)1 EV1 fps1 min1 minuta1 krok migawki/przysÅ‚ony1.01.3 s1.51.6 s1.6x1/1.3 s1/1.6 s1/1000 s1/100 s1/10 s1/1250 s1/125 s1/13 s1/151/15 s1/1600 s1/160 s1/21/2.5 s1/2000 s1/200 s1/20 s1/2500 s1/250 s1/250s (Auto FP)1/25 s1/2 s1/301/30 s1/3200 s1/320 s1/320s (Auto FP)1/3 s1/41/4000 s1/400 s1/40 s1/4 s1/5000 s1/500 s1/50 s1/5 s1/601/60 s1/6400 s1/640 s1/6 s1/81/8000 s1/800 s1/80 s1/8 s10 fps10 min10 minut10 mm10 sekund100%10 s11 fps1152 x 86412 mm1280 x 96013 s1515 min15 minut15 s16 sekund16:91 s1x22 EV2 fps2 sekundy2.02.0 m2.5 s2.5x20 sekund20 s21 punktów25%25 s29 mm2 s2x3 (zwykÅ‚a)3 EV3 fps3030 minut30 sekund30 s34 mm3:2Åšledzenie 3D3 s3x44 fps4 sekundy41 mm4 s4x5 (dÅ‚uga)5 fps5 min5 minut5 sekund50 Hz50%51 mm51 punktów51 punktów (3D)58 mm5 s5x6 fps6 mm6 sekund60 Hz640 x 4806 s6x7 fps75%7x88 fps8 mm8 sekund8 s8x9 fps9 punktów9xA-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)Filtr ABACZasilanie ACzasilacz ACZasilacz AC jest podłączony. Zasilacz AC nie jest podłączony. Bracketing ADLAE i fleszBlokada AEBlokada AEBlokada AEBlokada AE (utrzymanie)Blokada AE (wyłączenie przy zwolnieniu)Blokada AE (utrzymanie)Blokada tylko AEtylko AETryb AE-L/AF-LBlokada AEBlokada AE/AFBlokada AE/AFPrzycisk blokady AEAF 2Kompensacja ekspozycji AEBWłączenie AFObszar rozjaÅ›nienia AFPunkt obszaru AFLampa pomocnicza AFTryb piszczyka AFOdlegÅ‚ość AFAF LCD Top Mode 2Utrzymanie blokady AFBlokada AFBlokada AFBlokada AFBlokada AFTryb AFAF włączonyPrzycisk AF OnBlokada tylko AFAF-AAF-CPriorytet trybu AF-CAF-ONAF-SPriorytet trybu AF-SAF11AF51AI FocusSerwo AIWersja ASIC: %d.%d Playlista ASXAUTOAVUstawienie blokady AVAV maksymalnyAV otwartySterownik ramki cyfrowej USB AX203 Hans de Goede Ten sterownik umożliwia Å›ciÄ…ganie, przesyÅ‚anie i usuwanie zdjęć z ramki cyfrowej.Ramki cyfrowe oparte na AX203 sÄ… w różnych rozdzielczoÅ›ciach. Sterownik gphoto dla tych urzÄ…dzeÅ„ pozwala Å›ciÄ…gać, przesyÅ‚ać i usuwać zdjÄ™cia z ramki cyfrowej.A_DEPO aparacie Konica Q-M150: Ten aparat nie pozwala wykonywać żadnych zmian z zewnÄ…trz. Tak wiÄ™c w konfiguracji można tylko oglÄ…dać jak jest skonfigurowany aparat, ale nie można niczego zmienić. W przypadku problemów z tym sterownikiem proszÄ™ pisać na adres autorów tego sterownika. Abstrakcyjny album dźwiÄ™kówAbstrakcyjna playlista dźwiÄ™kówAbstrakcyjna playlista dźwiÄ™ków i filmówAbstrakcyjny element kalendarzaAbstrakcyjny produkt z rozdziaÅ‚amiAbstrakcyjny kontaktAbstrakcyjna grupa kontaktówAbstrakcyjny dokumentAbstrakcyjny album zdjęćAbstrakcyjna obsadaAbstrakcyjna wiadomośćAbstrakcyjny folder wiadomoÅ›ciAbstrakcyjny album multimedialnyAbstrakcyjny album filmówAbstrakcyjna playlista filmówTryb dostÄ™puDostÄ™p do górnego elementu MOJEGO MENUAkcjaAktywny sensor AFAktywne D-LightingUaktywnienie Pic CtrlAd-hocAdc65 Benjamin Moos AdobeRGBAnulowano transfer rozszerzonyNazwa albumualkaliczno-magnezowaWystÄ…piÅ‚ błąd w bibliotece io ('%s'): %sWystÄ…piÅ‚ nieznany błąd. ProszÄ™ skontaktować siÄ™ z %s.Poziom kÄ…taRedukcja czerwonych oczuWypeÅ‚nienie przeciwko czerwonym oczomNigdyOgólny sterownik Aox Theodore Kilgore PrzysÅ‚onaUstawienie przysÅ‚onyUstawienia przysÅ‚onyZmieniono przysÅ‚onÄ™Tryb aplikacjiTryb aplikacji 0Tryb aplikacji 1AutorNazwa autoraProporcje obrazuPrzypisanie przycisku funkcyjnegoPrzycisk przypisania funkcjiPrzypisanie przycisku podglÄ…duÅšwiatÅ‚o pomocniczeKodek audible.comAutoAutomatyczny, redukcja czerwonych oczuPrzysÅ‚ona automatycznaAutomatyczny wybór w trybie bracketAutomatyczne przyciÄ™cie DXAutomatyczna kontrola znieksztaÅ‚ceÅ„Automatyczny licznik bracketingu ekspozycjiAutomatyczny bracketing ekspozycjiAuto FPObszar autofocusuTryb autofocus 2Automatyczne ISOWieloklatkowa redukcja szumów przy auto ISOAutomatyczne ustawianie ISO P/A/DVPCzas automatycznego wyłączania pomiaruAutomatyczne wyłączanie (pole) (w sekundach)Automatyczne wyłączanie (host) (w sekundach)Automatyczne wyłączanie w trybie informacjiAutomatyczne wyłączanie w trybie menuAutomatyczne wyłączanie w trybie zdjęćCzas automatycznego wyłączaniaStopery automatycznego wyłączaniaAutomatyczne wyłączanieAutomatyczne wyłączanie (w minutach)Automatyczna wolna synchronizacjaAutomatyczne przesuniÄ™cie balansu bieliAutomatyczna blokada ekspozycjiAutofocus: ogniskowa AIAutofocus: serwo AIAutofocus: jedno zdjÄ™cieCzuÅ‚ość automatycznaAutomatyczny, redukcja czerwonych oczuTryb autofocusBłąd autofocusu.AutomatycznyAuto Automatyczny (bez flesza)Flesz automatycznyAutomatyczny makroAutomatyczny makro (zbliżenie)Automatyczna redukcja czerwonych oczuAutomatyczne dostrajanie ekspozycji przy podglÄ…dzieFlesz automatycznyAutomatyczny flesz przy robieniu zdjÄ™ciaBarwy jesieniAvAv maksymalnyAv z maksymalnym wierzchoÅ‚kiemAv otwartyAv z otwartym wierzchoÅ‚kiemDostÄ™pne zdjÄ™ciaDostÄ™pna pamięć: ÅšredniaÅšrednie rozmiary plikówPomiar Å›redniCz/BCz/BKontrast BWEfekt wypeÅ‚nienia BWRodzaj ustawienia BWOstrość BWÅšwiatÅ‚o tylneZÅ‚y EOTZÅ‚e znaki (0x%x, 0x%x). ProszÄ™ skontaktować siÄ™ z %s.ZÅ‚a suma kontrolna - otrzymano 0x%02x, oczekiwano 0x%02x.ZÅ‚e dane - otrzymano 0x%02x, oczekiwano 0x%02x lub 0x%02x.ZÅ‚e dane - otrzymano 0x%02x, oczekiwano 0x%02x.ZÅ‚a ekspozycja (prawdopodobnie za maÅ‚o Å›wiatÅ‚a)ZÅ‚a wartość stanu karty %dZÅ‚a wartość stanu obiektywu %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Rozpracowanie formatu danych obrazu: Jeff Laing Zaimplementowano z użyciem dokumentacji dostÄ™pnej na WWW za zgodÄ… Vision.Baterie sÄ… na wyczerpaniuBaterie sÄ… w porzÄ…dku.BateriaRodzaj bateriiPoziom bateriiPoziom baterii: %s Liczba obrazów: %d Minimalna pozostaÅ‚a pojemność: %d ZajÄ™tość: %s Åadowanie flesza: %s Stan obiektywu: Czas życia baterii: %i Bateria sÅ‚abaTryb bateriiRodzaj bateriiBateria wyczerpana, aparat wyłączony.Poziom baterii: %.1f woltów. Wersja: %08x.Stan baterii: %s, zasilacz AC: %s PlażaPlaża/Å›niegPiszczykTryb piszczykaZmieniono tryb piszczykaPiszczyk wyłączonyPiszczyk włączonyRozpoczÄ™cie edycji obiektuNajlepszaPrÄ™dkość %ld nie jest obsÅ‚ugiwana.CzerÅ„ i bielCzerÅ„ i bielCzarna tablicaCzarno-biaÅ‚yCzarna tablicaCzarno-biaÅ‚yMiganieKwiecieBłękitDółTryb bracketinguKolejność w trybie bracketTryb bracketBracketingKroki bracketingu C 0.3Kroki bracketingu C 0.7Kroki bracketingu C 1.0Kroki bracketingu C 2.0Kroki bracketingu C 3.0Włączenie bracketinguKlatki i kroki bracketinguKroki bracketingu S 0.3Kroki bracketingu S 0.7Kroki bracketingu S 1.0Kroki bracketingu S 2.0Kroki bracketingu S 3.0Bracketing WB HiBracketing WB LoSeria z bracketingiemJasność+Jasność-JasnośćJasność+Jasność-Jasność/kontrastWbudowany RAMWbudowany ROMÅ»arówkaCzas ekspozycji żarówkiTryb żarówkiSeriaOdstÄ™p seriiLiczba seriiZajÄ™tyPrzyciski i tarczeNumer CCDNumer seryjny CCDCHDKSkrypt CHDKCHDK nie opuÅ›ciÅ‚ trybu nagrywania.CRWMenu CSMAparatCzynnoÅ›ci aparatuID korpusu aparatuKonfiguracja aparatuData i czas aparatuID aparatu: %s Biblioteka dla aparatów Kodak DC215. Michael Koltan Producent aparatuTryb aparatuTryb aparatu bez korekty ogniskowejModel aparatuModel aparatu: %s Aparat niegotowyAparat w porzÄ…dku.Orientacja aparatuWyjÅ›cie aparatuWÅ‚aÅ›ciciel aparatuUstawienia aparatuInformacja o stanie aparatuKonfiguracja aparatu i sterownikaWyglÄ…da na to, że aparat nie przechowuje danych na CompactFlashu. Niestety nie jest to jeszcze obsÅ‚ugiwane :-( Aparat zajÄ™ty. JeÅ›li problem nie minie, proszÄ™ skontaktować siÄ™ z %s.Aparat nie zakoÅ„czyÅ‚ operacjiAparat nie przyjÄ…Å‚ parametrów. ProszÄ™ skontaktować siÄ™ z %s.Sterownik aparatu '%s' nie ma funkcji 'camera_init'.Aparat ma pamięć. Aparat wykonaÅ‚ %d zdjęć i przechowuje dane na CompactFlashu. Aparat jest skonfigurowany dla Å›wiateÅ‚ migajÄ…cych z czÄ™stotliwoÅ›ciÄ… %dHz. Aparat jest w niewÅ‚aÅ›ciwym trybie. ProszÄ™ skontaktować siÄ™ z %s.Aparat nie gotowy, get_battery nie powiodÅ‚o siÄ™: %sAparat nie gotowy, wielokrotne żądania 'Identify camera' nie powiodÅ‚y siÄ™: %sZdjÄ™cia z aparatu sÄ… monochromatyczne. OszczÄ™dzanie energii aparatu (sekundy)Aparat 3 razy odrzuciÅ‚ próbÄ™ utrzymania połączenia.Aparat odrzuciÅ‚ polecenie.Aparat zresetowaÅ‚ siÄ™.Aparat wysÅ‚aÅ‚ nieoczekiwany bajt 0x%02x.Aparat obsÅ‚uguje miniaturki. Aparat obsÅ‚uguje filmy. Aparat obsÅ‚uguje formaty obrazu: Czas aparatu: %s %s Aparat niedostÄ™pnyAparat niedostÄ™pny: %sAparat już byÅ‚ aktywnyAparat zostaÅ‚ obudzonyNie można zrobić zdjÄ™cia. Nieznany błądNie można usunąć wszystkich obrazów.Nie można usunąć obrazu %s.Nie można przesÅ‚ać tego obrazu do aparatu. WystÄ…piÅ‚ błąd.Anulowanie autofocusu Canon DSLRÅšwiatÅ‚o Å›wiecyNie można odczytać pozostaÅ‚ej iloÅ›ci pamiÄ™ciNie można odczytać pojemnoÅ›ci bateriiNie można uzyskać nazwy folderu zawierajÄ…cego zdjÄ™ciaTryb automatyczej ekspozycji CanonaZdjÄ™cia w trybie CanonCanon Capture nie powiodÅ‚o siÄ™ZdjÄ™cia w trybie Canon EOSCanon EOS Capture nie powiodÅ‚o siÄ™Canon EOS Capture nie powiodÅ‚o siÄ™: karta tylko do odczytu?Canon EOS Capture nie powiodÅ‚o siÄ™: może lustro podniesione?Canon EOS Capture nie powiodÅ‚o siÄ™: może brak ostroÅ›ci?Canon EOS Capture nie powiodÅ‚o siÄ™: może brak pamiÄ™ci na karcie?Canon EOS Capture nie powiodÅ‚o siÄ™: nienznay błąd %d, proszÄ™ zgÅ‚osić.Canon EOS Capture nie powiodÅ‚o siÄ™: %xCanon EOS Full-Press nie powiodÅ‚o siÄ™Canon EOS Full-Release nie powiodÅ‚o siÄ™Canon EOS Get Changes nie powiodÅ‚o siÄ™Canon EOS Half-Press nie powiodÅ‚o siÄ™Canon EOS Half-Release nie powiodÅ‚o siÄ™Zdalne zwalnianie Canon EOSCanon EOS Trigger Capture nie powiodÅ‚o siÄ™: 0x%xCanon EOS ViewfinderPowiÄ™kszenie Canon EOSPozycja powiÄ™kszenia Canon EOSSterownik do aparatów serii Canon PowerShot. Autorami sÄ…: Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, dodatki do A5 napisaÅ‚ Ole W. Saastad Dodatkowe rozszerzenia napisali: Holger Klemm Stephen H. WestinTryb robienia zdjÄ™cia CanonaWyłączenie trybu Canon Viewfinder nie powiodÅ‚o siÄ™Włączenie trybu Canon Viewfinder nie powiodÅ‚o siÄ™Pobranie obrazu Canon Viewfinder nie powiodÅ‚o siÄ™ZdjÄ™ciaOpóźnienie przed zdjÄ™ciemUstawienia zdjÄ™ciaKlasa rozmiaru zdjÄ™ciaObiekt zdjÄ™ciaTryb przesyÅ‚ania zdjÄ™ciaZmieniono klasÄ™ rozmiaru zdjÄ™ciaTyp Å›ciÄ…gania nie jest obsÅ‚ugiwanyKartaStan karty: Zapis na kartÄ™ niemożliwy.Karta nie sformatowanaKarta nie otwartaKarta otwartaKarta jest zabezpieczona przed zapisem.Nazwa karty: %s Wolne miejsce na karcie: %d kB Karta nie obsÅ‚ugiwana.Karta usuniÄ™ta podczas dostÄ™pu.Kolejność rodzaju bateriiTryb odtwarzania z przyciskiem centrowaniaTryb zdjęć z przyciskiem centrowaniaWspółczynnik powiÄ™kszenia przycisku centrowaniaCentralny punktObszar centralnie ważonyCentralnie ważonyÅšrednia centralnie ważonaCentralnie ważonyCentralny punktcentralnie ważonyPomiar Å›redni centralnie ważonyPomiar centralnie ważonyÅšrednia centralnie ważonaPomiar centralnie ważonyÅšrodekObszar centralnie ważonyCentralny punktZmiana trybu aparatu nie powiodÅ‚a siÄ™Zmiana Pic CtrlZmiana prÄ™dkoÅ›ci... oczekiwanie...ZnakZnak i dźwiÄ™kÅadowanyBłąd sumy kontrolnejDzieckoDzieciWybór temperatury koloruWybór nieautomatycznego obiektywuCzyszczenie matrycyCzyszczenie sensoraWyczyszczenie noÅ›nika danychZamkniÄ™cie sesji multimedialnejZamkniÄ™cie sesjiZbliżenieNajbliższy obiektZbliżeniePochmurnoPrzesuniÄ™cie balansu bieli dla pogody pochmurnejKolorWzmocnienie kolorówTryb koloruModel kolorówUstawienia kolorówPrzestrzeÅ„ kolorówTemperatura koloruTryb koloru lub funkcjiSzkic barwnyTemperatura koloruPolecenie nie może być przerwane.Błąd kolejnoÅ›ci poleceÅ„.CommanderBłąd komunikacji 1Błąd komunikacji 2Błąd komunikacji 3Błąd komunikacji nawet po 2 próbach. ProszÄ™ skontaktować siÄ™ z %s.Wykryto kartÄ™ Compact Flash Karta CompactFlashTryb kompatybilnoÅ›ciKompresjaUstawienie kompresjiKonfiguracjaKonfiguracja aparatu FUJIPołączono z aparatemCiÄ…gÅ‚aCiÄ…gÅ‚y AFCiÄ…gÅ‚e zdjÄ™cia z dużą prÄ™dkoÅ›ciÄ…CiÄ…gÅ‚a maÅ‚a prÄ™dnośćCiÄ…gÅ‚e zdjÄ™cia z małą prÄ™dkoÅ›ciÄ…CiÄ…gÅ‚e zdjÄ™ciaSzybkość szybkiego trybu ciÄ…gÅ‚ych zdjęćSzybkość wolnego trybu ciÄ…gÅ‚ych zdjęćCiÄ…gÅ‚a duża prÄ™dnośćCiÄ…gÅ‚y o dużej szybkoÅ›ciCiÄ…gÅ‚y o maÅ‚ej szybkoÅ›ciCiÄ…gÅ‚e cicheCiÄ…gÅ‚y AFKontrastKontrast+Kontrast-Skopiowanie obiektuPrawa autorskiePrawa autorskie (maksymalnie 20 znaków)Informacje o prawach autorskichInformacje o prawach autorskichDane uszkodzoneNie udaÅ‚o siÄ™ przydzielić %i bajt(ów) do Å›ciÄ…gniÄ™cia obrazu.Nie udaÅ‚o siÄ™ przydzielić %i bajt(ów) do Å›ciÄ…gniÄ™cia miniaturki.Nie udaÅ‚o siÄ™ zastosować ustawieÅ„ USBNie udaÅ‚o siÄ™ zmienić czuÅ‚oÅ›ci ISONie udaÅ‚o siÄ™ zmienić przysÅ‚onyNie udaÅ‚o siÄ™ zmienić trybu piszczykaNie udaÅ‚o siÄ™ zmienić kompensacji ekspozycjiNie udaÅ‚o siÄ™ zmienić trybu fleszaNie udaÅ‚o siÄ™ zmienić trybu ogniskowaniaNie udaÅ‚o siÄ™ zmienić formatu zdjęćNie udaÅ‚o siÄ™ zmienić trybu robienia zdjÄ™ciaNie udaÅ‚o siÄ™ zmienić prÄ™dkoÅ›ci migawkiNie udaÅ‚o siÄ™ zmienić czasu pliku '%s' w '%s' (%s).Nie udaÅ‚o siÄ™ zmienić stopnia powiÄ™kszeniaNie udaÅ‚o siÄ™ skontaktować z aparatemNie udaÅ‚o siÄ™ utworzyć katalogu \DCIM.Nie udaÅ‚o siÄ™ utworzyć katalogu docelowego.Nie udaÅ‚o siÄ™ utworzyć katalogu %s.Nie udaÅ‚o siÄ™ utworzyć katalogu.Nie udaÅ‚o siÄ™ usunąć pliku '%s' w folderze '%s' (kod błędu %i: %s).Nie udaÅ‚o siÄ™ usunąć pliku.Nie udaÅ‚o siÄ™ wykryć żadnego aparatuNie udaÅ‚o siÄ™ wykryć żadnego aparatu na porcie %sNie udaÅ‚o siÄ™ ustanowić poczÄ…tkowego połączenia z aparatemNie udaÅ‚o siÄ™ wyciÄ…gnąć miniaturki JPEG z danych: Dane nie sÄ… JFIFNie udaÅ‚o siÄ™ wyciÄ…gnąć miniaturki JPEG z danych: Brak poczÄ…tku/koÅ„caNie udaÅ‚o siÄ™ odnaleźć pliku '%s'.Nie udaÅ‚o siÄ™ odnaleźć danych lokalizacji pod '%s'Nie udaÅ‚o siÄ™ uzyskać informacji o dysku: %sNie udaÅ‚o siÄ™ uzyskać nazwy dysku: %sNie udaÅ‚o siÄ™ uzyskać litery dysku flashNie udaÅ‚o siÄ™ uzyskać informacji o '%s' (%s).Nie udaÅ‚o siÄ™ uzyskać informacji o '%s' w '%s' (%s).Nie udaÅ‚o siÄ™ uzyskać rejestru %i. ProszÄ™ skontaktować siÄ™ z %s.Nie udaÅ‚o siÄ™ uzyskać rejestru Å‚aÅ„cuchowego %i. ProszÄ™ skontaktować siÄ™ z %s.Nie udaÅ‚o siÄ™ rozpocząć przesyÅ‚ania do aparatu (aparat odpowiedziaÅ‚ 0x%02x).Nie udaÅ‚o siÄ™ wczytać wymaganego sterownika aparatu '%s' (%s).Nie udaÅ‚o siÄ™ otworzyć '%s'.Nie udaÅ‚o siÄ™ usunąć katalogu %s.Nie udaÅ‚o siÄ™ usunąć katalogu.Nie udaÅ‚o siÄ™ zresetować aparatu. Nie udaÅ‚o siÄ™ ustawić prÄ™dkoÅ›ci %i (aparat odpowiedziaÅ‚ %i).Nie udaÅ‚o siÄ™ przesÅ‚ać pakietu (kod błędu %i). ProszÄ™ skontaktować siÄ™ z %s.Nie udaÅ‚o siÄ™ przesÅ‚ać pakietu nawet po kilku próbach.Nie udaÅ‚o siÄ™ przesÅ‚ać danych do aparatu - brak wolnych nazw folderów! Istnieje nazwa folderu 999CANON i zawiera obrazek AUT_9999.JPG.Nie udaÅ‚o siÄ™ odczytać z pliku "%s"Utwórz profil WifiData utworzenia: %s, data ustatniego użycia: %sTwórczyCreative PC-CAM 300 Autorzy: Till Adam i Miah Gregory Creative PC-CAM600 Autor: Peter Kajberg Bieżący tryb: tryb aparatu Bieżący tryb: tryb odtwarzania Bieżący czas aparatu: %04d-%02d-%02d %02d:%02d Wolna pamięć na karcie: %d Obrazów na karcie: %d Wolnych obrazów na karcie: %d Poziom baterii: %d%%.PTP jest obecnie zaimplementowane tylko dla aparatów USB i PTP/IP, rodzaj portu %xWÅ‚asneFunkcje WÅ‚asne ExBalans bieli wÅ‚asny PC-1Balans bieli wÅ‚asny PC-2Balans bieli wÅ‚asny PC-3Konfiguracja tarcz poleceÅ„DD/MM/RRRRDEPWersja DPOFCiemny na jasnymDane zostaÅ‚y uszkodzone.Data i czasFormat datyFormat znacznika czasuData i czasData i czas (GMT)WyÅ›wietlanie datyData: %i/%02i/%02i %02i:%02i:%02i Wykonano zdjęć: %i Wolne zdjÄ™cia: %i Wersja oprogramowania: %s PrÄ™dkość: %s Pamięć: %i megabajtów Tryb aparatu: %s Jakość obrazu: %s Ustawienie flesza: %s Informacje: %s Zegar: %s LCD: %s Automatyczne wyłączanie: %i minut ŹródÅ‚o zasilania: %sData: %sDzieÅ„/MiesiÄ…c/RokÅšwiatÅ‚o dziennePrzesuniÄ™cie balansu bieli dla Å›wiatÅ‚a dziennegoDiagnostykaGłębokiDomyÅ›lna bramkaDomyÅ›lny sterownik sierra: To jest domyÅ›lny sterownik sierra, powinien być w stanie obsÅ‚użyć Å›ciÄ…ganie i przeglÄ…danie zdjęć w aparacie. Ustawienia konfiguracji aparatu sÄ… oparte na Olympusie 3040 i prawdopodobnie niepeÅ‚ne. JeÅ›li ustawienia sÄ… peÅ‚ne dla używanego aparatu, albo jesteÅ› w stanie napisać kod obsÅ‚ugujÄ…cy peÅ‚nÄ… konfiguracjÄ™, proszÄ™ skontaktować siÄ™ z listÄ… dyskusyjnÄ… programistów gphoto. Pilot z opóźnieniemUsuÅ„UsuniÄ™cie obiektuUsuwanie obrazu %s.Głębia ostroÅ›ciWykryto "%s" czyli "%s"Wykryto '%s'.Parametry rozwojowe 1Parametry rozwojowe 2Parametry rozwojowe 3Certyfikat urzÄ…dzeniaIkona urzÄ…dzeniaWersja urzÄ…dzeniaTo urzÄ…dzenie nie obsÅ‚uguje ustawiania zabezpieczenia obiektu.UrzÄ…dzeniu nie udaÅ‚o siÄ™ ustawić zabezpieczenia obiektu na %dDigita Johannes Erdfelt UkÅ‚ad dla aparatów cyfrowych (DCIM)PowiÄ™kszenie cyfrowePowiÄ™kszenie cyfroweMakro cyfrowePowiÄ™kszenie cyfroweDimera 3500 w wersji %s %d/%d %d:%d. %d zdjęć zużyÅ‚o przeciÄ™tnie %d (wysoka r.) lub %d (niska r.) Opcje aparatu: %s, %s, %s, %s. Flesz jest %s, jest %s i jest %s. Rozdzielczość jest ustawiona na %s. Aparat jest zasilany %s%s. BezpoÅ›redni wydrukTryb przeglÄ…dania katalogu - napisaÅ‚ Scott Fritzinger .Katalog istniejeNie odnaleziono kataloguWyłączenie zaufanych operacji na plikachOdłączanie aparatu.Disp AvDisp Av maksymalneWyÅ›wietlaczFormaty wyÅ›wietlania: Widok odlegÅ‚yNie wyÅ›wietlanie menu TVNie wiem jak obsÅ‚użyć wartość camera->port->type %i czyli 0x%x w %s w linii %i.Program do Å›ciÄ…gania dla aparatów Digital Dream Enigma 1.3. napisany przez i zaadoptowany do sterownika spca50x. PodziÄ™kowania dla zaÅ‚ogi spca50x, Å‚atwo byÅ‚o sportować wasz sterownik do tego aparatu! Program do Å›ciÄ…gania zdjęć dla aparatów opartych o GrandTek 98x. Oryginalnie napisaÅ‚ go Chris Byrne , do gphoto2 zaadaptowaÅ‚ Lutz Mueller . Rozszerzenia protokoÅ‚u i postprocessing dla aparatów Jenoptik JD350e napisaÅ‚ Michael Trawny . Poprawek błędów dokonaÅ‚ Marcus Meissner .Program do Å›ciÄ…gania zdjęć dla aparatów Polaroid DC700. Oryginalnie napisaÅ‚ go Ryan Lantzer dla gphoto-4.x. Do gphoto2 zaadaptowaÅ‚ Lutz Mueller .Program do Å›ciÄ…gania zdjęć dla kilku aparatów Polaroid. Oryginalnie napisaÅ‚ go Peter Desnoyers , do gphoto2 zaadaptowali Nathan Stenzel i Lutz Mueller . Testowanie Polaroida 640SE wykonaÅ‚ Michael Golden .ÅšciÄ…ganie %s.ÅšciÄ…ganie %s...ÅšciÄ…ganie '%s'...ÅšciÄ…ganie danych EXIF...ÅšciÄ…ganie dźwiÄ™ku...ÅšciÄ…ganie danych...ÅšciÄ…ganie pliku...ÅšciÄ…ganie obrazu %s.ÅšciÄ…ganie obrazu...ÅšciÄ…ganie filmu...ÅšciÄ…ganie miniaturki...ÅšciÄ…ganie...Prowadzenie autofocusu Canon DSLRProwadzenie rÄ™czne ostroÅ›ci Canon DSLRTryb prowadzeniaProwadzenie autofocusu Nikon DSLRProwadzenie rÄ™czne ostroÅ›ci Nikon DSLRSterownikUstawienia sterownikaSzkielet sterownika napisaÅ‚ Lutz Mueller . To oprogramowanie zawiera kod źródÅ‚owy QVplaya, którego autorami sÄ… Ken-ichi HAYASHI i Jun-ichiro "itojun" Itoh . Integracji QVplaya dokonaÅ‚ Michael Haardt .Dual IrisZmierzchZmierzchBłąd odniesienia kurzuObszar dynamicznego AFObszar dynamiczny (21)Obszar dynamiczny (51)Obszar dynamiczny (9)AF dla dynamicznego obszaruAF dla dynamicznego obszaru z priorytetem najbliższego obiektuBłąd sumy kontrolnej EEPROM-u.BÅÄ„D: %d to za dużoBÅÄ„D: wykryto błąd krytyczny, nie można kontynuowaćBÅÄ„D: błąd formatu komunikatu.BÅÄ„D: przepeÅ‚nienie komunikatuBÅÄ„D: utrata kolejnoÅ›ci.BÅÄ„D: nieoczekiwany komunikatBÅÄ„D: nieoczekiwany komunikat2.BÅÄ„D: nieoczekiwany rodzaj pakietu.ESPESSIDKrok EVTryb EVFRozmiar EZoom teleobiektywuPozycja poczÄ…tkowa EZoomEkonomicznaTryb efektuEfektyNa wyczerpaniuPusteWłączenie praw autorskichWłączenie komentarza do zdjÄ™ciaWłączenie zaufanych operacji na plikachEncounterEncounter BoxSzyfrowanieKlucz szyfrowania (hex)ZakoÅ„czenie edycji obiektuZakoÅ„czenie sesji zaufanej aplikacjiAngielskiRozszerzonyBłądBłąd podczas pobierania obrazuBłąd podczas zmiany prÄ™dkoÅ›ciBłąd podczas zmiany prÄ™dkoÅ›ci.Błąd podczas usuwania powiÄ…zanego pliku miniaturkiBłąd podczas usuwania plikuBłąd podczas oczekiwania na ACK przy inicjalizacjiBłąd podczas oczekiwania na ACK przy inicjalizacji, ponowna próbaSzacowanyPomiar oceniajÄ…cyTryb emulacji zdarzeÅ„ZawszeWykonanie predefiniowanego polecenia z wartoÅ›ciami parametrów.Oczekiwano %i bajtów, otrzymano %i. ProszÄ™ zgÅ‚osić ten błąd pod adres %s.Oczekiwano %i, otrzymano %i. ProszÄ™ zgÅ‚osić ten błąd pod adres %s.Oczekiwano 32 bajtów, otrzymano %i. ProszÄ™ skontaktować siÄ™ z %s.Indeks ekspozycjiEkspozycjaBlokada przysÅ‚ony/ekspozycjiÅšrodek podstawy ekspozycjiMacierz podstawy ekspozycjiPunkt podstawy ekspozycjiKompensacja odchylenia ekspozycjiProgram bracketingu ekspozycjiKrok bracketingu ekspozycjiKompensacja ekspozycjiKompensacja ekspozycji (EV)Tryb opóźnienia ekspozycjiStan wyÅ›wietlania ekspozycjiKrok ekspozycji ISOIndeks ekspozycji (czuÅ‚ość ISO filmu)PodÅ›wietlenie wskaźnika ekspozycjiStan wskaźnika ekspozycjiBlokada ekspozycjiMiernik ekspozycjiPomiar ekspozycjiTryb pomiaru ekspozycjiProgram ekspozycjiTryb programu ekspozycjiKrok ekspozycjiCzas ekspozycjiKompensacja ekspozycjiKompensacja ekspozycji zmienionaKompensacja ekspozycji: %d Kompensacja ekspozycji: %s Tryb opóźnienia ekspozycjiPoziom ekspozycji przy podglÄ…dzieFlesz zewnÄ™trznyPodłączony zewnÄ™trzny fleszKompensacja zewnÄ™trznego fleszaTryb zewnÄ™trznego fleszaRodzaj zewnÄ™trznego fleszaStan zewnÄ™trznego fleszaSynchronizacja zewnÄ™trznaBardzo dużaLiczba FF2F2.3F2.8F4F5.6F8BÅÄ„D KRYTYCZNY: nieznana poczÄ…tkowa wartość CRC dla dÅ‚ugoÅ›ci %d FLASH: Plików: %d Blokada liczby FBlokada FVBlokada FVAF z priorytetem twarzyUstawienie fabryczneNie udaÅ‚o siÄ™ włączyć trybu Nikon 1 LiveView, ale jest to wymagane do zrobienia zdjÄ™ciaDokÅ‚adnyDaleka %dDaleka 1Daleka 2Daleka 3Scena dalekaSzybki system plikówSzybka migawkaPlikNie udaÅ‚o siÄ™ odnaleźć pliku '%s' w folderze '%s'.Plik '%s/%s' nie istnieje.Usuwanie plików, Sekwencyjne numerowanie plikówPrzesyÅ‚anie plików do aparatu Kompresja plikuPlik istniejeNie odnaleziono plikuPlik zabezpieczony.Rozdzielczość plikuRozmiar pliku to %ld bajtów. Rozmiar najwiÄ™kszego możliwego pliku, jaki da siÄ™ przesÅ‚ać to %i bajtów.Rodzaj plikuPrzesÅ‚anie pliku do aparatu nie powiodÅ‚o siÄ™.Plik byÅ‚ zbyt duży. Może zajść potrzeba wyłączenia i włączenia aparatu przed przesyÅ‚aniem kolejnych plików.Konflikt nazwy plikuNieprawidÅ‚owa nazwa plikuWymagana nazwa plikuRodzaj pliku: FlashPix (Rodzaj pliku: JPEG (Flesz wypeÅ‚niajÄ…cyWyÅ›wietlanie ISO w trybie FinderDobraFajerwerkiFirmwareWersja firmware'u: %8sWersja firmware'u: %8s ZdjÄ™cia: %i CaÅ‚a pamięć: %ikB Wolna pamięć: %ikB Wersja firmware'u: %d.%d Wersja firmware'uWersja firmware'u: %d.%02d Firmware: %d.%d Rybie okoStaÅ‚aFleszFlesz Å‚adowanyKompensacja sterowania fleszem ATryb sterowania fleszem AWartość sterowania fleszem AKompensacja sterowania fleszem BTryb sterowania fleszem BWartość sterowania fleszem BKanaÅ‚ sterowania fleszemKompensacja wÅ‚asna sterowania fleszemTryb wÅ‚asny sterowania fleszemWartość wÅ‚asna sterowania fleszemTryb zarzÄ…dzania fleszemZasilanie zarzÄ…dzania fleszemKompensacja fleszaKompensacja ekspozycji fleszaBlokada poziomu fleszaBlokada fleszaLiczba MRepeat fleszaOdstÄ™p MRepeat fleszaWartość MRepeat fleszaTryb fleszaZasilanie zarzÄ…dzania zewnÄ™trznego fleszaRÄ™czne zasilanie w trybie fleszaFlesz wyłączonyFlesz otwartyLiczba bÅ‚ysków fleszaUstawienie fleszaUstawienia fleszaPrÄ™dkość migawki z fleszemZnak fleszaPrÄ™dkość synchronizacji z fleszemPrzesuniÄ™cie balansu bieli dla fleszaFlesz automatycznyZmieniono tryb fleszaTryb flesza: auto, Tryb flesza: wymuszony, Tryb flesza: wyłączony Flesz wyłączonyFlesz włączonyTylko fleszFlesz/przysÅ‚onaFlesz/szybkośćFlesz/szybkość/przysÅ‚onaFlesz : AutoFlesz : Auto (redukcja czerwonych oczu)Flesz : WyłączonyFlesz : WłączonyFlesz : Włączony (redukcja czerwonych oczu)Flesz : nieokreÅ›lonyFlashPixProgram elastycznyRedukcja migotaniaÅšwiatÅ‚o fluorescencyjneRodzaj Å›wiatÅ‚a fluorescencyjnegoFluorescencyjne-1-dom-6700KFluorescencyjne-2-biurko-5000KFluorescencyjne-3-biuro-4200KÅšwiatÅ‚o fluorescencyjneÅšwiatÅ‚o fluorescencyjne HÅšwiatÅ‚o fluorescencyjne 1ÅšwiatÅ‚o fluorescencyjne 2ÅšwiatÅ‚o fluorescencyjne 3ÅšwiatÅ‚o fluorescencyjne 4ÅšwiatÅ‚o fluorescencyjne 5PrzesuniÄ™cie balansu bieli dla Å›wiatÅ‚a fluorescencyjnegoFluorescencyjne-1-dom-6700KFluorescencyjne-2-biurko-5000KFluorescencyjne-3-biuro-4200KFluorescencyjne: zimna bielFluorescencyjne: dzienna biel 1Fluorescencyjne: Å›wiatÅ‚o dzienneFluorescencyjne: ciepÅ‚a bielOgniskowaMianownik ogniskowejMaksymalna dÅ‚ugość ogniskowejMinimalna dÅ‚ugość ogniskowejOgniskowa teleobiektywuOgniskowa szerokiego kÄ…tuOgniskowaObszar ogniskowaniaZapÄ™tlenie obszaru ogniskowaniaStrefa obszaru ogniskowaniaObszary ogniskowaniaOdlegÅ‚ość ogniskowejInformacje o ogniskowaniuBlokada ogniskowejPomiar ogniskowejTryb pomiaru ogniskowejTryb ogniskowaniaTryb ogniskowania 2Jasność punktu ogniskowaniaZmieniono tryb ogniskowaniaPoÅ‚ożenie ogniskaPunkt ogniskowaniaPunkt ogniskowania tylko poÅ›rodku, automatycznyPunkt ogniskowania tylko poÅ›rodku, rÄ™cznyBłąd ogniskowania.Folder '%s' zawiera tylko %i plików, a żądano pliku o numerze %i.RoÅ›linnośćJedzenieAby dziaÅ‚aÅ‚ tryb bulb, pokrÄ™tÅ‚o trybu musi być przełączone na 'M', a szybkość migawki na 'bulb'Dla aparatów z ukÅ‚adem S&Q Technologies. Powinien dziaÅ‚ać z gtkam. ZdjÄ™cia bÄ™dÄ… zapisane w formacie PPM. Wszystkie znane aparaty S&Q majÄ… dwa ustawienia rozdzielczoÅ›ci. Co one oznaczajÄ…, zależy od konkretnego aparatu. Niektóre z tych aparatów pozwalajÄ… na usuwanie wszystkich zdjęć. WiÄ™kszość nie pozwala. PrzesyÅ‚anie danych do aparatu nie jest obsÅ‚ugiwane. Tryb kompresji zdjęć dostÄ™pny w wielu aparatach S&Q jest obsÅ‚ugiwany do pewnego poziomu. JeÅ›li zostanÄ… znalezione w aparacie, filmy sÄ… widoczne jako podkatalogi. Gtkam Å›ciÄ…gnie je oddzielnie. Kiedy filmy sÄ… obecne w aparacie, przed nazwÄ… aparatu jest maÅ‚y trójkÄ…t. JeÅ›li nie ma żadnych folderów na liÅ›cie, należy kliknąć na tym maÅ‚ym trójkÄ…cie, żeby siÄ™ pojawiÅ‚a. NastÄ™pnie można kliknąć na folderze aby do niego wejść i zobaczyć lub Å›ciÄ…gnąć klatki. Klatki bÄ™dÄ… Å›ciÄ…gniÄ™te jako osobne zdjÄ™cia ze specjalnymi nazwami okreÅ›lajÄ…cymi z którego filmu pochodzÄ…. W ten sposób można swobodnie wybrać zapis klatek filmu do osobnych katalogów, lub nie. Dla aparatów na elektronice S&Q Technologies, majÄ…cych USB Vendor ID 0x2770 i Product ID 0x905C, 0x9050, 0x9051, 0x9052 lub 0x913D zdjÄ™cia sÄ… zapisywane w formacie PPM. Niektóre z tych aparatów pozwalajÄ… na programowe usuniÄ™cie wszystkich zdjęć. Inne nie. Å»aden z obsÅ‚ugiwanych aparatów nie pozwala na wykonanie capture-image. Każdy pozwala na capture-preview (zrobienie zdjÄ™cia i przesÅ‚anie do komputera). JeÅ›li delete-all (usuwanie wszystkich zdjęć) dziaÅ‚a na danym aparacie, capture-preview bÄ™dzie miaÅ‚o efekt uboczny usuniÄ™cia wszystkiego, co jest zapisane w aparacie. PrzesyÅ‚anie zdjęć do aparatu nie jest obsÅ‚ugiwane. Ponadto żaden z obsÅ‚ugiwanych aparatów nie pozwala na programowe usuwanie pojedynczych zdjęć. WymuszenieWymuszenie flesza Formatowanie karty i ustawienie nazwy albumu.Formatowanie karty compact flashFormatowanie noÅ›nikaPozostaÅ‚o zdjęć: %i Wykonanych klatek: %4d Wykonanych zdjęć: %i SiatkaFrancuskiPrzyjazna nazwa urzÄ…dzeniaSynchronizacja z pierwszÄ… kurtynÄ…PeÅ‚nePeÅ‚ny obrazCaÅ‚kowicie rÄ™cznyFormat pliku peÅ‚nego widokuCiÄ…gÅ‚y AFPrzycisk funkcyjny 2Tryb dziaÅ‚aniaTryb dziaÅ‚ania: 0x%04x OgólnaOgólny pÅ‚askiOgólny hierarchicznyNiemieckiPobranie nastÄ™pnego bloku danychPobranie częściowego obiektu (offset 64-bitowy)Pobranie wyzwania bliskoÅ›ciPobranie odpowiedzi na rejestracjÄ™Pobranie odpowiedzi licencji WMDRM-NDPobranie odpowiedzi aplikacji WMDRM-PDPobranie opisu wÅ‚aÅ›ciwoÅ›ci urzÄ…dzeniaPobranie wartoÅ›ci wÅ‚aÅ›ciwoÅ›ci urzÄ…dzeniaPobranie opisu niezależnej wÅ‚aÅ›ciwoÅ›ciPobranie stanu licencjiPobranie wywoÅ‚ania pomiaruPobranie odpowiedzi pomiaruPobranie liczby obiektówPobranie obiektuPobranie uchwytów obiektówPobranie informacji o obiekciePobranie obsÅ‚ugiwanych wÅ‚aÅ›ciwoÅ›ci obiektuPobranie opisu wÅ‚aÅ›ciwoÅ›ci obiektuPobranie listy wÅ‚aÅ›ciwoÅ›ci obiektuPobranie wartoÅ›ci wÅ‚aÅ›ciwoÅ›ci obiektuPobranie odniesieÅ„ do obiektuPobranie częściowego obiektuPobranie wywoÅ‚ania bezpiecznego czasuPobranie odpowiedzi bezpiecznego czasuPobranie ID noÅ›nikaPobranie informacji o noÅ›nikuPobranie listy synchronizacjiPobranie miniaturkiPobranie możliwych rodzajów list odtwarzaniaPobieranie konfiguracji...Pobieranie danych...Pobieranie listy plików...Pobieranie pliku...Pobieranie informacji o %i plikach...Pobieranie miniaturki...Otrzymano nieoczekiwany wynik 0x%x. ProszÄ™ skontaktować siÄ™ z %s.Skala szaroÅ›ciSkala szaroÅ›ciZieleÅ„Dynamiczna grupaRodzaj PTN grupyDuża dynamika HDRTryb HDRWygÅ‚adzanie HDRZ rÄ™ki o zmierzchuBłąd sprzÄ™towyHi 1Hi 2WysokaWysoka (1152 x 872)Wysoka (dobra jakość)Wysoka 2Redukcja szumów przy dużym ISORedukcja szumów przy dużym ISOWysoka kontrolaKlucz wysokiCzuÅ‚ość wysokaMigawka szybkaPodÅ›wietlenie aktualnego punktu ogniskowaniaWstrzymanieTryb hosta: %s Korekcja ekspozycji: %s Dane ekspozycji: %d Poprawność daty: %s Data: %d/%02d/%02d %02d:%02d:%02d Samowyzwalacz ustawiony: %s Ustawienie jakoÅ›ci: %s Tryb odtwarzanie/nagrywanie: %s Poprawność ID karty: %s ID karty: %d Tryb flesza: OszczÄ™dzanie energii hosta (sekundy)Po jakim czasie aparat ma siÄ™ wyłączać kiedy jest podłączony do komputera?Po jakim czasie aparat ma siÄ™ wyłączać kiedy nie jest podłączony do komputera?Jak dÅ‚ugo aparat ma czekać przed wyłączeniem?Regulacja barwyNajwyższaTrwa operacja wejÅ›cia/wyjÅ›ciaIDAdres IP (pusty dla DHCP)ISOAuto ISOGórne ograniczenie Auto ISOGórne ograniczenie Auto ISOCzuÅ‚ość ISOZmieniono czuÅ‚ość ISOIkonyWolnyNiedozwolony parametr.Ustawienie podÅ›wietleniaObrazObraz %s jest zabezpieczony przed usuniÄ™ciem.Obraz i dźwiÄ™kRegulacja obrazuKomentarz do zdjÄ™ciaWłączenie komentarza do zdjÄ™ciaÅaÅ„cuch opisujÄ…cy obrazKompresja obrazuFormat zdjęćFormat zdjęć CFFormat zdjęć Ext HDFormat zdjęć SDTryb obrazuJakość obrazuJakość obrazu 2Ocena zdjÄ™ciaObrót obrazuFlaga obrotu obrazuUstawienia obrazuRozmiar obrazuStabilizacja obrazuFormat zdjęć zmienionyWysokość obrazu: %d Liczba obrazów nieprawidÅ‚owa.Obraz zabezpieczony.Rozmiar obrazuRozmiar obrazu: %d Typ obrazu %d nie jest obsÅ‚ugiwany przez ten aparat!Typ obrazu %d nie jest obsÅ‚ugiwanyTyp obrazu nie jest obsÅ‚ugiwanySzerokość obrazu: %d Czas konfiguracji zdjÄ™ciaNatychmiastUżywanyÅšwiatÅ‚o żarzÄ…ce siÄ™WyÅ›wietlanie identyfikatoraWnÄ™trzeNieskoÅ„czonośćNieskoÅ„czoność/Rybie okoUstawienie wyÅ›wietlania informacjiStan błędów wyÅ›wietlania informacjiInformacjeInformacje dla aparatu opartego o STV0680: Dla aparatów o ID 0x2770:0x9153: Nie jest zalecane używanie programu GUI do dostÄ™pu do tego aparatu, chyba że tylko dla zabawy albo żeby spróbować, czy można spalić bezpiecznik. Aby naprawdÄ™ Å›ciÄ…gnąć zdjÄ™cia, należy spróbować: gphoto2 -P z linii poleceÅ„. Uwaga: Å›ciÄ…ganie filmów nie jest możliwe. Nierozpoznana poczÄ…tkowa odpowiedź aparatu '%c'Inicjalizacja aparatuZainicjowanie robienia zdjęćZainicjowanie otwartego robienia zdjęćAuto inteligentnyAuto inteligentny bez fleszaWewnÄ™trzny RAMBłąd wewnÄ™trzny #1 w get_file_func() (%s w linii %i)Błąd wewnÄ™trzny (1).Błąd wewnÄ™trzny (2).Błąd wewnÄ™trzny przy szukaniu camlibów (Å›cieżka zbyt dÅ‚uga?).Pamięć wewnÄ™trzna: %d MB w sumie, %d MB wolne. NieprawidÅ‚owyBłędne ustawienie czuÅ‚oÅ›ci ISONieprawidÅ‚owy statusNiepoprawna wartość (%d) Błędne ustawienie przysÅ‚onyBłędne ustawienie trybu piszczykaBłędne ustawienie klasy rozmiaru zdjÄ™ciaBłędne ustawienie kompensacji ekspozycjiBłędne ustawienie trybu fleszaBłędne ustawienie trybu ogniskowaniaBłędne ustawienie formatu zdjęćBłędne ustawienie trybu robienia zdjÄ™ciaBłędne ustawienie prÄ™dkoÅ›ci migawkiBłąd Iris.WÅ‚oskiJD11 Marcus Meissner Sterownik dla aparatów Jenoptik JD11. Protokół wstecznie rozpracowany przy użyciu WINE i IDA.Konfiguracja JD11JPEGPodstawowy JPEGTryb kompresji JPEGDobry JPEGJPEG NormNormalny JPEGJapoÅ„skiZachowywanie nazwy pliku przy przesyÅ‚aniu do aparatuDzieci i zwierzÄ™taZnane problemy: 1. JeÅ›li Kodak DC3200 nie otrzyma polecenia przynajmniej co każde 10 sekund, wyczerpie siÄ™ limit czasu i bÄ™dzie musiaÅ‚ być ponownie inicjalizowany. JeÅ›li aparat nie bÄ™dzie odpowiadaÅ‚, wystarczy ponownie wybrać aparat - spowoduje to ponownÄ… inicjalizacjÄ™.Znane problemy: JeÅ›li wystÄ…piÄ… problemy z komunikacjÄ…, należy zresetować aparat i zrestartować aplikacjÄ™. Sterownik nie potrafi jeszcze wyjść z tych sytuacji, zwÅ‚aszcza jeÅ›li wystÄ…pi problem, a aparat nie zostanie wÅ‚aÅ›ciwie wyłączony przy prÄ™dkoÅ›ciach wiÄ™kszych niż 9600.Biblioteka dla aparatów Kodak DC120 Scott Fritzinger (na ogólne zapotrzebowanie).Biblioteka dla aparatów Kodak DC240 Scott Fritzinger i Hubert Figuiere Biblioteka dla aparatów Kodak DC240, DC280, DC3400 i DC5000. Przepisano i uaktualniono dla gPhoto2.Sterownik do aparatów Kodak DC3200 Donn Morrison Pytania i komentarze mile widziane.Sterownik Kodak EZ200 Bucas Jean-Francois Konfiguracja KonicaBiblioteka Konica Q-M150 Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com ObsÅ‚uga francuskich aparatów Konica Q-M150.Biblioteka Konica Lutz Mueller ObsÅ‚uga wszystkich aparatów Konica i niektórych HP.KoreaÅ„skiLCDAutomatyczne wyłączanie LCD (w sekundach)Automatyczne wyłączenie LCD (sekundy)PodÅ›wietlenie LCDPodÅ›wietlenie LCD i wyÅ›w. informacjiJasność LCDPodÅ›wietlenie LCDTryb LCDCzas wyłączania LCDTryb LEDOgólny sterownik LG GSM Guillaume Bedot PejzażJÄ™zykSterownik Largan Hubert Figuiere DużyDuży dobry JPEGDuży normalny JPEGLewoObiektyw zasÅ‚oniÄ™tyOgniskowa obiektywu (nie CPU)ID obiektywuMaksymalne Å›wiatÅ‚o obiektywu (nie CPU)Tryb obiektywuNazwa obiektywuRodzaj obiektywuTyp obiektywKierunek obiektywu nie zgadza siÄ™ ze Å›wiatÅ‚em flesza Obiektyw nie podłączony JasnyPomiar Å›wiatÅ‚aJasny na ciemnymOÅ›wietlenie zbyt ciemne.Wypisz profile WifiWypisanie listy wszystkich plikówPobieranie listy plików w '%s'...Pobieranie listy folderów w '%s'...litowo-jonowaObszar AF dla Live ViewOgniskowanie AF dla Live ViewTryb AF dla Live ViewTryb prowadzenia Live ViewWspółczynnik powiÄ™kszenia Live ViewTryb Live ViewWarunek wyłączenia Live ViewStan Live ViewWczytywanie sterowników do aparatów z '%s'...LokalnyLokalizacjaDane lokalizacyjne uszkodzone.Dane lokalizacyjne zbyt dÅ‚ugie.Plik lokalizacji zbyt dÅ‚ugi!BlokadaSterownik Logitech Clicksmart 310 Theodore Kilgore Redukcja szumów przy dÅ‚ugiej ekspozycjiRedukcja szumów przy dÅ‚ugiej ekspozycjiDÅ‚uga migawkaSzukanie aparatu...WyglÄ…da jak modem, a nie aparatBezstratnaStratnaNiskaNiska (576 x 436)Niska (najlepsza jakość)Niska 2Niskie Å›wiatÅ‚oSynchronizacja z niskÄ… prÄ™dkoÅ›ciÄ…KontrastKlucz niskiCzuÅ‚ość niskaNiskie wyostrzenieMigawka powolnaFunkcja powolnej migawki niedostÄ™pnaMaÅ‚e litery w %s nie sÄ… dopuszczalne.MM-DEPPlaylista M3UM4AMF (staÅ‚a)MF (wybór)Skompilowany dokument HTML (MHT)MM/DD/RRRRPlaylista MPLMTR > PodM_DEPMakroZarzÄ…dzanyRÄ™cznyRÄ™czny 2RÄ™czna ogniskowaBracketing w trybie rÄ™cznymRÄ™czne ustawienia filmuRÄ™czne ustawienie obiektywuRÄ™czna ogniskowaProducent: %s Biblioteka dla aparatów Mars MR97310 Theodore Kilgore Aparat Mars MR97310. Zawiera %i zdjÄ™cie. Aparat Mars MR97310. Zawiera %i zdjÄ™cia. Aparat Mars MR97310. Zawiera %i zdjęć. MacierzPomiar macierzowyMatthew G. Martin Oparty o fujiplay, który napisaÅ‚ Thierry Bousch Maksymalna jasność przy maksymalnej ogniskowejMaksymalna jasność przy minimalnej ogniskowejMaksymalna ogniskowaMaksymalnaMaksymalna przysÅ‚ona przy maksymalnej ogniskowejMaksymalna przysÅ‚ona przy minimalnej ogniskowejMaksymalna liczba zdjęćMaksymalne ciÄ…gÅ‚e zwolnienieMaksymalna liczba zdjęć: %d Media CardMedia Card GroupMedia CastÅšredniaÅšrednia (1152 x 872)Åšrednia (lepsza jakość)Åšredni 1Åšredni 2Åšredni 3Åšredni dobry JPEGÅšrednio wysokiÅšrednio niskiÅšredni normalny JPEGÅšrednio wysokiCzuÅ‚ość Å›redniaPozostaÅ‚o pamiÄ™ci: %i bajtów Karta pamiÄ™ciStan karty pamiÄ™ci (%d): %s Pamięć w aparacie: %d Mbit. Bank menu ABank menu BBank menu CBank menu DMenu i odtwarzanieMetadane obsÅ‚ugiwane tylko dla urzÄ…dzeÅ„ MTP.Czas wyłączania pomiaruTryb pomiaruKoniec kroku MFNiewystarczajÄ…cy krok MFMikrofonMikrofon wyłączonyArkusz kalkulacyjny Microsoft Excela (.xls)Prezentacja Microsoft Powerpointa (.ppt)Dokument Microsoft WordaMinimalna ogniskowaEfekt miniaturyMinimalnaMinimalna prÄ™dkość migawkiBiblioteka dla aparatów Minolta Dimage V %s Gus Hartmann Specjalne podziÄ™kowania dla Minolty za specyfikacjÄ™.Lustro podniesioneSekwencja podnoszenia lustraRóżne ustawienia ekspozycji/obiektywuBrak liczbyPozycja punktu MlMlSpotPosAfLinkMlSpotPosCenterID modeluModel: Minolta Dimage V (%s) Wersja sprzÄ™tu: %s Wersja firmware'u: %s Model: Model: %s Model: %s Pojemność: %i Mb Zasilanie: %s Czas automatycznego wyłączania: %i min Tryb: %s Obrazy: %i/%i WyÅ›wietlanie daty: %s Data i czas: %s Model: %s Pamięć: %d bajt(ów) z %d dostÄ™pnychModel: %s Numer seryjny: %s, Wersja sprzÄ™tu: %i.%i Wersja oprogramowania: %i.%i Wersja oprogramowania testowego: %i.%i Nazwa: %s, Producent: %s Model: %x, %x, %x, %xModel: Kodak %s Flesz modelujÄ…cyFlesz modelujÄ…cyUmiarkowanyMonitorOpóźnienie wyłączania monitoraMonochromatycznyMiesiÄ…c/DzieÅ„/RokPrzeniesienie obiektuFilmNagranie filmuGniazdo kart do filmówLiczba F dla filmuRedukcja szumów przy dużym ISO dla filmuCzuÅ‚ość ISO dla filmuMikrofon do filmówJakość filmuRozdzielczość filmuRozmiar ekranu dla filmuPrÄ™dkość migawki 2 dla filmuDźwiÄ™k filmuGÅ‚os filmuWieloklatkowa redukcja szumówWielopunktowyWielopunktowyPomiar wielopunktowyWielopunktowyWiele punktów ogniskowania (Å›rodek)Wiele punktów ogniskowania (lewo)Wiele punktów ogniskowania (bez okreÅ›lenia), rÄ™cznyWiele punktów ogniskowania (prawo)Wiele punktów ogniskowania, automatycznyWielokrotny wybórLustro podniesioneBiblioteka gPhoto2 Mustek MDC-800 Henning Zabel Do gphoto2 sportowaÅ‚ Marcus Meissner ObsÅ‚uguje protokół szeregowy i USB.Moje KoloryNEF (Surowy)NEF+PodstawowaNEF+DobraNEF+ZwykÅ‚aUstawienie autobracketingu NIKONNIE ROZPOZNANONTSCParametr NULL "%s" w %s w linii %iNazwa "%s" z aparatu nie pasuje do żadnego znanego aparatuNazwa '%s' (%li znaków) jest zbyt dÅ‚uga, dozwolone jest maksymalnie 30 znaków.Prefiks nazwyNazwa do ustawienia na karcie przy formatowaniu.Bliska %dBliska 1Bliska 2Bliska 3Maska sieciNeutralnyNastÄ™pneniklowo-kadmowaniklowa hybrydowaNocny pejzażNocny portretScena nocnaWidok nocnyWizja nocnaNocny pejzażScena nocnaNocny widokZdjÄ™cie w trybie Nikon 1Nikon Coolpix 880: Konfiguracja aparatu (lub ustawienia): Optyczne powiÄ™kszenie nie dziaÅ‚a poprawnie. Nie wszystkie ustawienia konfiguracji mogÄ… być poprawnie odczytane lub zapisane, na przykÅ‚ad dokÅ‚adne ustawianie balansu bieli albo ustawienia jÄ™zyka. Aby ustawić prÄ™dkość migawki należy ustawić aparat w tryb 'M'. Nikon Coolpix 995: Konfiguracja aparatu (ustawienia) dla tego aparatu sÄ… niepeÅ‚ne, należy skontaktować siÄ™ z listÄ… dyskusyjnÄ… programistów gphoto aby pomóc przy tym sterowniku. ÅšciÄ…ganie zdjęć powinno dziaÅ‚ać poprawnie. Czas ekspozycji NikonTryb flesza NikonaNikon ViewfinderNapÄ™d autofocus Nikona nie ustawiÅ‚ ostroÅ›ci.Funkcja Nikona changeafarea dziaÅ‚a tylko w trybie LiveView.Wyłączenie trybu Nikon LiveView nie powiodÅ‚o siÄ™Włączenie trybu Nikon LiveView nie powiodÅ‚o siÄ™RÄ™czne ogniskowanie Nikona na granicy.Krok rÄ™cznego ogniskowania Nikona jest zbyt maÅ‚y.RÄ™czne ogniskowanie Nikona dziaÅ‚a tylko w trybie LiveView.NieNie zwolniono karty CFNie wykryto karty Compact Flash Bez Dual IrisBrak dostÄ™pnych danych EXIF dla %s.Bez usuwania plików, Bez przesyÅ‚ania plików do aparatu Bez fleszaBez zdjęć w trybie otwartym, Bez wskaźnika zasilaniaBez przełącznika rozdzielczoÅ›ciBrak wÅ‚ożonej karty SD. Brak odpowiedzi od aparatu.Nie znaleziono pliku z dźwiÄ™kiem dla %sPodrÄ™cznik do aparatu niedostÄ™pny. Brak kartyBrak karty w aparacie. Karta nie wÅ‚ożona.Brak karty pamiÄ™ciPrzyczyna niedostÄ™pnaBrak odpowiedzi od aparatuBrak wolnego miejsca aby zrobić nowe zdjÄ™cie. Trzeba usunąć trochÄ™ obrazów.Nie ma miejsca na karcie.Bez zdjęć w trybie producenta BrakNie wybranoZwykÅ‚yNormalny Nornalny AF włączonyAF dla normalnego obszaruNiepeÅ‚neZa maÅ‚o wolnego miejscaZa maÅ‚o dostÄ™pnej pamiÄ™ci na karcie pamiÄ™ciNie w trybie LiveviewNie w trybie wypeÅ‚niajÄ…cymNie gotowyNie używanyUwaga: brak karty pamiÄ™ci, niektóre wartoÅ›ci mogÄ… być nieprawidÅ‚owe Liczba zdjęć: %d Liczba zdjęć: %dLiczba zdjęć: %d Liczba zdjęć: %i Wersja firmware'u: %sWYÅÄ„CZONYOKWÅÄ„CZONYBłąd systemu operacyjnego podczas komunikacji z aparatemWyłączonoBiuroOlympus 750 Ultra Zoom: (1) Olympus 750UZ ma tryb USB PC Control. Aby przełączyć aparat w ten tryb, należy włączyć aparat, otworzyć drzwiczki dostÄ™pu do karty pamiÄ™ci, a nastÄ™pnie przycisnąć i przytrzymać oba przyciski 'OK' i 'quickview' do momentu pojawienia siÄ™ menu sterowania aparatem. Należy przełączyć je na tryb sterowania. (2) Po przełączeniu trybu LCD na 'Monitor' lub 'Normalny' nie należy zapomnieć o przełączeniu z powrotem na 'Off' przed rozłączeniem. W przeciwnym wypadku nie można używać przycisków aparatu. W przypadku zakoÅ„czenia pracy w tym stanie należy ponownie podłączyć aparat do komputera i przełączyć LCD na 'Off'.ZdjÄ™cia w trybie Olympus E XML ObsÅ‚uga opakowania XML Olympusa jest dostÄ™pna tylko przy wbudowanej obsÅ‚udze libxml2.WłączonoWłączone (poza ocenÄ… zdjÄ™cia)Włączony, redukcja czerwowych oczuPodpowiedzi na ekranieWłączony, redukcja czerwonych oczuPojedyncze zdjÄ™cieAutomatyczny One-pushTylko główny folder jest obsÅ‚ugiwany - żądano listy plików dla folderu '%s'.ZdjÄ™cia w trybie otwartym, Otwarcie sesji multimedialnejOtwarcie sesjiTryb dziaÅ‚aniaOperacja odrzuconaOperacja anulowanaOptymalna jakośćOptymalizacja zdjÄ™ciaOrientacjaInneInne ustawienia urzÄ…dzenia PTPInne ustawieniaWykonywane jest inne polecenie.Brak ostroÅ›ciBrak pamiÄ™ciBrak pamiÄ™ci: potrzeba %d bajtów.Brak pamiÄ™ci: potrzeba %ld bajtów.Na zewnÄ…trzNazwa wÅ‚aÅ›cicielaNazwa wÅ‚aÅ›ciciela zmienionaPPALPCPlaylista PLSPTP: Brak dostÄ™puŻądanie anulowania PTPPTP: Robienie zdjÄ™cia już zakoÅ„czonePTP: oczekiwano danychPTP: UrzÄ…dzenie zajÄ™tePTP: NieobsÅ‚ugiwane ustawienie urzÄ…dzeniaPGP: Ogólny błądPTP: Błąd wejÅ›cia/wyjÅ›ciaPTP: NiepeÅ‚na transmisjaPTP: NieprawidÅ‚owy format koduPTP: NieprawidÅ‚owy format ustawienia urzÄ…dzeniaPTP: NieprawidÅ‚owa wartość ustawienia urzÄ…dzeniaPTP: NieprawidÅ‚owy kod formatu obiektuPTP: NieprawidÅ‚owy uchwyt obiektuPTP: NieprawidÅ‚owy parametrPTP: NieprawidÅ‚owy obiekt macierzystyPTP: NieprawidÅ‚owy identyfikator danychPTP: NieprawidÅ‚owy identyfikator transakcjiPTP: Brak miniaturkiPTP: Brak prawidÅ‚owych informacji o obiekciePTP: OK!PTP: Obiekt zabezpieczony przed zapisemPTP: NieobsÅ‚ugiwana operacjaPTP: NieobsÅ‚ugiwany parametrPTP: Częściowe usuniÄ™cieUstawienie PTP 0x%04xPTP: Błąd protokoÅ‚u, oczekiwano odpowiedziPTP: WÅ‚asny test nie powiódÅ‚ siÄ™PTP: Sesja już otwartaPTP: Sesja nie otwartaPTP: NieobsÅ‚ugiwana specyfikacja przez formatPTP: NieobsÅ‚ugiwana specyfikacja celuWersja standardu PTP: %d.%d PTP: Brak miejscaPTP: Dane niedostÄ™pnePTP: Dane tylko do odczytuLimit czasu PTPPTP: Transakcja anulowanaPTP: Niezdefiniowany błądPTP: Nieznany kod producentaWersja PTPSterownik PTP2 (c) 2001-2005 Mariusz WoÅ‚oszyn . (c) 2003-%d Marcus Meissner . Ten sterownik obsÅ‚uguje aparaty obsÅ‚ugujÄ…ce PTP lub PictBridge(tm) i odtwarzacze obsÅ‚ugujÄ…ce protokół Media Transfer Protocol (MTP). MiÅ‚ej zabawy!Pakiet odrzucony przez aparat. ProszÄ™ skontaktować siÄ™ z %s.Pan FocusPanFocusBiblioteka gPhoto Panasonic DC1000 Mariusz Zynel Oparto na programie dc1000, który napisali Fredrik Roubert i Galen Brooks .Biblioteka gPhoto Panasonic DC1580 Mariusz Zynel Oparto na programie dc1000, który napisali Fredrik Roubert i Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic przedstawiÅ‚ technologiÄ™ robienia zdjęć PHOTOSHOT po raz pierwszy w tej serii Palmcorderów. Obrazy sÄ… przechowywane w formacie JPEG na wewnÄ™trznej karcie flash i mogÄ… być przesyÅ‚ane do komputera przez wbudowany port szeregowy. Obrazy sÄ… zapisywane w jednej z dwóch rozdzielczoÅ›ci: NORMAL (320x240) i FINE (640x480). UrzÄ…dzenie CCD odczytujÄ…ce obraz z obiektywu ma tylko 300K punktów, wiÄ™c jest w stanie tworzyć tylko zdjÄ™cia niskiej jakoÅ›ci.Sterownik do urzÄ…dzeÅ„ Panasonic PV-L859-K/PV-L779-K Palmcorder Andrew Selkirk PanoramaParametr 1Parametr 2Parametr 3Ustawienie parametrówAnaliza wartoÅ›ci kontrolki '%s' / 0x%04x nie powiodÅ‚a siÄ™ - błąd %d.CzęściowyPomiar częściowyImpreza/wnÄ™trzeÅšcieżka nie jest bezwzglÄ™dnaStwierdzony rodzaj urzÄ…dzeniaUstawienia zachowywanePortret zwierzÄ™ciaEfekt fotograficznyOdtwarzanie informacji o zdjÄ™ciachZdjÄ™cie w filmieZdjęć w aparacie: %d Efekt obrazuKonfiguracja ramki cyfrowejUstawienia zdjÄ™ciaStyl zdjÄ™ciaZdjÄ™ciaZdjęć w aparacie: %d OdtwarzanieW trybie odtwarzaniaOdtwarzanieIndeks kontenera odtwarzaniaObiekt odtwarzaniaPozycja odtwarzniaSzybkość odtwarzaniaID PlaysForSurePrÄ™dkość portuPortretZasilanieWyłączenieOszczÄ™dzanie energiiSilny wiatrWyłączenie urzÄ…dzeniaOpóźnienie przed zdjÄ™ciemPredefiniowanyWÅ‚asna predefiniowana 1WÅ‚asna predefiniowana 2WÅ‚asna predefiniowana 3WÅ‚asna predefiniowana 4WÅ‚asna predefiniowana 5WciÅ›niÄ™cie 1WciÅ›niÄ™cie 2WciÅ›niÄ™cie 3WciÅ›niÄ™cie do koÅ„caWciÅ›niÄ™cie do poÅ‚owyPodglÄ…dPrzycisk podglÄ…duPrzycisk podlÄ…du 2PodglÄ…d miniaturkiPoprzednieProblem przy Å›ciÄ…ganiu obrazuProblem przy pobieraniu informacji o obrazieProblem przy pobieraniu liczby zdjęćProblem przy otwieraniu portuProblem przy odczycie obrazu z pamiÄ™ci flashProblem przy resetowaniu aparatuProblem przy ustawianiu prÄ™dkoÅ›ci komunikacji z aparatemProblem przy robieniu zdjÄ™cia na żywoPrzetworzenie obiektu WFCID produktu: %02x%02x Nazwa profiluZakazanie flesza JakośćSzybka reakcjaPilot z szybkÄ… reakcjÄ…Czas szybkiego podglÄ…duSzybkie zwolnienieRAWRAW + JPEG podstawowyRAW + JPEG dobrej jakoÅ›ciRAW + JPEG normalnej jakoÅ›ciRAW + duży dobry JPEGRAW + duży normalny JPEGRAW + Å›redni dobry JPEGRAW + Å›redni normalny JPEGRAW + maÅ‚y dobry JPEGRAW + maÅ‚y normalny JPEGRAW 2RAW+JPEGWzmocnienie RGBStatus RTC: %d Tryb zapisu surowych bitówKompresja surowaTylko odczyt z usuwaniem obiektówTylko odczytOdczyt i zapisAtrybutów tylko do odczytu, jak szerokość i wysokość, nie można zmienić.GotowySynchronizacja z drugÄ… kurtynÄ…Synchronizacja tylnej migawki + wolna synchronizacjaSynchronizacja z drugÄ… kurtynÄ…Wolna synchronizacja z drugÄ… kurtynÄ…Odebrano nieoczekiwanÄ… odpowiedź (%i). ProszÄ™ skontaktować siÄ™ z %s.Odebrano nieoczekiwane dane (0x%02x, 0x%02x).Odebrano nieoczekiwany nagłówek (%i)Odebrano nieoczekiwanÄ… odpowiedźOdbieranie danych...NagrywanieTryb nagrywaniaW trybie nagrywaniaMiejsce zapisu nagrywaniaNoÅ›nik nagrywaniaCzerwieÅ„Redukcja czerwonych oczuFlesz z redukcjÄ… czerwonych oczuRedukcja czerwonych oczuRedukcja czerwonych oczu + wolna synchronizacjaAutomatyczna redukcja czerwonych oczuWypeÅ‚niajÄ…ca redukcja czerwonych oczuWypeÅ‚niajÄ…ca redukcja czerwonych oczuRedukcja czerwonych oczuRedukcja czerwonych oczu + wolna synchronizacjaZwolnienieZwolnienie + ogniskowanieZwolnienie 1Zwolnienie 2Zwolnienie 3Zwolnienie do koÅ„caZwolnienie do poÅ‚owyTryb zwalnianiaWyzwolenie bez karty CFZdalnyZdalna wersja APILustro podniesione zdalnieTryb zdalnego sterowaniaZdalny limit czasuWyciÄ…galny RAM (karta pamiÄ™ci)WyciÄ…galny ROMPowtarzalnyInformacja o uzyskanych elementachInformacja o dodanych/usuniÄ™tych elementachŻądano informacji o zdjÄ™ciu %i (= 0x%x), ale otrzymano informacje o zdjÄ™ciu %iReset banku 0Reset banku menuReset urzÄ…dzeniaPrzywrócenie wartoÅ›ci wÅ‚aÅ›ciwoÅ›ci urzÄ…dzeniaPowrót punktu ogniskowania na Å›rodekResetowanie protokoÅ‚u...RozdzielczośćPrzełącznik rozdzielczoÅ›ciRozdzielczość i rozmiarOdwrotna tarcza poleceÅ„Odwrotne identyfikatoryInformacja o unieważnieniuSterownik Ricoh / Philips napisali Lutz Mueller , Martin Fischer , w oparciu o sterownik Boba Paauwe Ricoh Caplio G3. Marcus Meissner Rozpracowano wstecznie przy użyciu USB Snoopy, patrzÄ…c na obraz uaktualnienia firmware'u i zgadujÄ…c. PrawoKÄ…t obrotuFlaga obrotuObrót scenyID karty SD: %s Pamięć SD: %d MB w sumie, %d MB wolne. SDRAMSDRAM: Plików: %d Obrazów: %4d Filmów: %4d Miejsce użyte: %8d Miejsce wolne: %8d SDRamSterownik ramki cyfrowej USB ST2205 Hans de Goede Ten sterownik umożliwia Å›ciÄ…ganie, przesyÅ‚anie i usuwanie zdjęć z ramki cyfrowej.Ramki cyfrowe oparte na ST2205 sÄ… w różnych rozdzielczoÅ›ciach. Sterownik gphoto dla tych urzÄ…dzeÅ„ pozwala Å›ciÄ…gać, przesyÅ‚ać i usuwać zdjÄ™cia z ramki cyfrowej.STV0674 Vincent Sanders Sterownik do aparatów używajÄ…cych procesora ASIC STV0674. Protokół wstecznie rozpracowany przy użyciu SnoopyPro STV0680 Adam Harrison Sterownik dla aparatów używajÄ…cych procesora ASIC STV0680. Protokół rozpracowany wstecznie przy użyciu CommLite Beta 5 Carsten Weinholz Rozszerzono dla aparatów Aiptek PenCam oraz innych STM USB Dual-mode.Playlista SamsungNasycenieScenaTryb scenySekcjaCzas bezpiecznyWybór koloruBarwa selektywnaCzas wÅ‚asnySamowyzwalaczSamowyzwalacz (tylko dla nastÄ™pnego zdjÄ™cia)Opóźnienie samowyzwalaczaLiczba zdjęć dla samowyzwalaczaCzas samowyzwalaczaTest wÅ‚asny urzÄ…dzeniaSamowyzwalaczSamowyzwalacz 10sSamowyzwalacz 2sOpóźnienie samowyzwalaczaWysÅ‚anie częściowego obiektuWysÅ‚anie odpowiedzi bliskoÅ›ciWysÅ‚anie żądania rejestracjiWysÅ‚anie żądania licencji WMDRM-NDWysÅ‚anie żądania aplikacji WMDRM-PDWysÅ‚anie polecenia WMDRM-PDWysÅ‚anie żądania WMDRM-PDWysÅ‚anie zapytania wywoÅ‚ania pomiaruWysÅ‚anie obiektuWysÅ‚anie informacji o obiekcieWysÅ‚anie listy wÅ‚aÅ›ciwoÅ›ci obiektuWysyÅ‚anie danych...CzuÅ‚ośćID sensora: %d.%d SepiaSekwencja 9Numer seryjnyNumer seryjny: %s Informacja o rozpoczÄ™ciu sesjiUstawienia staÅ‚e dla sesjiUstawienie aktualnej pozycji czasuUstawienie obszaru autofocusu NikonaUstawienie trybu sterowania NikonaUstawianie wÅ‚aÅ›ciwoÅ›ci nie obsÅ‚ugiwaneUstawienie zegara w aparacieUstawienie wartoÅ›ci wÅ‚aÅ›ciwoÅ›ci urzÄ…dzeniaUstawienie odpowiedzi licencjiUstawienie listy wÅ‚aÅ›ciwoÅ›ci obiektuUstawienie wartoÅ›ci wÅ‚aÅ›ciwoÅ›ci obiektuZabezpieczenie obiektuUstawienie odniesieÅ„ do obiektuUstawienie 4Ustawienie 5Ustawienie 6Ustawienie 7CieÅ„CieÅ„PrzesuniÄ™cie balansu bieli dla cieniaCzy aparat ma piszczeć przy robieniu zdjÄ™cia?OstraWyostrzanieOstrzejOstrośćBank zdjęćBank zdjęć ABank zdjęć BBank zdjęć CBank zdjęć DTryb robienia zdjÄ™ciaPrÄ™dkość robienia zdjÄ™ciaTryb robienia zdjÄ™ciaZmieniono tryb robienia zdjÄ™ciaUstawienia zdjęćPrzy wyłączaniuLicznik migawkiPrÄ™dkość migawkiPrÄ™dkość migawki (w sekundach)PrÄ™dkość migawki (mikrosekundy, 0 auto)PrÄ™dkość migawki 2PrÄ™dkość migawki w trybie bulbPrÄ™dkość migawki w mikrosekundach (0 auto)PrÄ™dkość migawkiZmieniono prÄ™dkość migawkiMigawka/AF-ONSiPix Web2 Marcus Meissner Sterownik dostÄ™pu do aparatów SiPix Web2.SylwetkaPojedynczePojedynczy obszarPojedyncze zdjÄ™ciePojedyncza klatkaPojedyncze cichePojedyncze zdjÄ™ciePojedynczy AFAF dla pojedynczego obszaruPojedynczy AFSterownik Sipix StyleCam Blink Vincent Sanders Marcus Meissner . Priorytet rozmiaruTryb rozmiaru/jakoÅ›ciRozmiar danych wejÅ›ciowych do aparatuRozmiar danych wyjÅ›ciowych z aparatuPrzejÅ›cie do nastÄ™pnej pozycji w playliÅ›cieSkylightOdstÄ™p miÄ™dzy pokazywanymi slajdamiTryb zapisu slotu 2WolnyUstawienie wolnej migawkiWolna synchronizacjaWolna migawkaWolna synchronizacjaPowolna synchronizacjaSmal Ultrapocket Lee Benfield Sterownik dostÄ™pu do aparatów Smal Ultrapocket i wersji OEM (slimshot)MaÅ‚yMaÅ‚y dobry JPEGMaÅ‚y normalny JPEGGÅ‚adkaWygÅ‚adzanieÅšniegMiÄ™kkaÅagodniejWersja oprogramowania: %s TrochÄ™ uwag o aparatach Epson: - Niektórych parametrów nie da siÄ™ zmieniać zdalnie: * powiÄ™kszenia * ogniskowej * wÅ‚asnej konfiguracji balansu bieli - Konfiguracja zostaÅ‚a wstecznie rozpracowana przy użyciu PhotoPC 3000z, jeÅ›li aparat zachowuje siÄ™ inaczej, proszÄ™ wysÅ‚ać list na adres %s (po angielsku) TrochÄ™ uwag o aparatach Epson: - Niektórych parametrów nie da siÄ™ zmieniać zdalnie: * powiÄ™kszenia * ogniskowej * wÅ‚asnej konfiguracji balansu bieli - Konfiguracja zostaÅ‚a wstecznie rozpracowana przy użyciu PhotoPC 3000z, jeÅ›li aparat zachowuje siÄ™ inaczej, proszÄ™ wysÅ‚ać list na listÄ™ dyskusyjnÄ… programistów gphoto (po angielsku) Kilka uwag o aparatach Olympus (i innych?): (1) Konfiguracja aparatu: Wartość 0 oznacza domyÅ›lnÄ… (auto). (2) Olympus C-3040Z (może także C-2040Z i inne) ma tryb USB PC Control. Aby przełączyć aparat w ten tryb, należy włączyć aparat, otworzyć drzwiczki dostÄ™pu do karty pamiÄ™ci, a nastÄ™pnie przycisnąć i przytrzymać oba przyciski menu i LCD aż pojawi siÄ™ menu sterowania aparatem, po czym ustawić opcjÄ™ na ON. (3) Po przełączeniu trybu LCD na 'Monitor' lub 'Normalny' nie należy zapomnieć o przełączeniu z powrotem na 'Off' przed rozłączeniem. W przeciwnym wypadku nie można używać przycisków aparatu. W przypadku zakoÅ„czenia pracy w tym stanie należy ponownie podłączyć aparat do komputera i przełączyć LCD na 'Off'.Kilka uwag o aparatach Olympus: (1) Konfiguracja aparatu: Wartość 0 oznacza domyÅ›lnÄ… (auto). (2) Olympus C-3040Z (może także C-2040Z i inne) ma tryb USB PC Control. Aby przełączyć aparat w ten tryb, należy włączyć aparat, otworzyć drzwiczki dostÄ™pu do karty pamiÄ™ci, a nastÄ™pnie przycisnąć i przytrzymać oba przyciski menu i LCD aż pojawi siÄ™ menu sterowania aparatem - należy ustawić opcjÄ™ na ON. (3) Po przełączeniu trybu LCD na 'Monitor' lub 'Normalny' nie należy zapomnieć o przełączeniu z powrotem na 'Off' przed rozłączeniem. W przeciwnym wypadku nie można używać przycisków aparatu. W przypadku zakoÅ„czenia pracy w tym stanie należy ponownie podłączyć aparat do komputera i przełączyć LCD na 'Off'.Biblioteka dla aparatów Sonix Theodore Kilgore Aparat Sonix. Zawiera %i zdjÄ™cie. Aparat Sonix. Zawiera %i zdjÄ™cia. Aparat Sonix. Zawiera %i zdjęć. ZdjÄ™cia w trybie SonyObsÅ‚uga aparatów cyfrowych Sony SDC-F1 Digital Camera M. Adam Kendall Oparto na interfejsie linii poleceÅ„ chotplay, który napisaÅ‚ Ken-ichi Hayashi Port Gphoto2 wykonaÅ‚ Bart van Leeuwen Biblioteka gPhoto Sony DSC-F55/505 ObsÅ‚uguje Sony MSAC-SR1 i wkÅ‚ad pamiÄ™ci używany przez DCR-PC100 Oryginalnie napisaÅ‚ Mark Davies Port gPhoto2 wykonaÅ‚ Raymond Penners Niestety inicjalizacja aparatu nie zadziaÅ‚aÅ‚a. ProszÄ™ to zgÅ‚osić.Niestety wÅ‚aÅ›ciwość '%s' / 0x%04x jest aktualnie tylko do odczytu.Niestety ten aparat Canon nie obsÅ‚uguje inicjalizacji Canon CaptureNiestety ten aparat Canon nie obsÅ‚uguje funkcji Canon EOS captureNiestety ten aparat Canon nie obsÅ‚uguje trybu Canon ViewfinderNiestety ten aparat Canon nie obsÅ‚uguje funkcji Canon captureNiestety ten aparat Nikon nie zwraca obrazów JPEG w trybie LiveViewNiestety ten aparat Nikon nie obsÅ‚uguje trybu LiveViewNiestety ten aparat nie obsÅ‚uguje pobierania obrazu w trybie NikonNiestety ten aparat nie obsÅ‚uguje zwykÅ‚ego robienia zdjęćDźwiÄ™kSterownik Soundvision Vince Weaver PozostaÅ‚e miejsce: wysoka: %d, Å›rednia: %d, niska: %d HiszpaÅ„skiPrÄ™dkość %i nie jest obsÅ‚ugiwana!PrÄ™dkoÅ›ci wiÄ™ksze niż 57600 nie sÄ… obsÅ‚ugiwane przy wczytywaniu danych do tego aparatuSportyAkcja sportowaPunktPomiar punktowyPomiar punktowy powiÄ…zany z ramkÄ… AFTryb pomiaru punktuPomiar punktowyPomiar punktowy powiÄ…zany z ramkÄ… AFPunkt AFNormalnaStandardowe parametry rozwojoweRozpoczÄ™cie nagrywania filmuPrzy włączaniuPrzy włączaniu i wyłączaniuKrok #2 inicjalizacji nie powiódÅ‚ siÄ™! (zwrócono %i bajtów, oczekiwano %i). Aparat niefunkcjonalnyKrok #2 inicjalizacji nie powiódÅ‚ siÄ™: ("%s" przy odczycie %i) Aparat niefunkcjonalnyKrok #3 inicjalizacji nie powiódÅ‚ siÄ™! (zwrócono %i, oczekiwano %i). Aparat niefunkcjonalnyKrok #3 inicjalizacji nie powiódÅ‚ siÄ™: "%s" przy odczycie %i. Aparat niefunkcjonalnyKrok #3 inicjalizacji nie powiódÅ‚ siÄ™: "%s" przy zapisie %i. Aparat niefunkcjonalnyKrok #4 nie powiódÅ‚ siÄ™ (zwrócono %i, oczekiwano %i). Aparat niefunkcjonalnyKrok #4 nie powiódÅ‚ siÄ™: "%s" przy odczycie %i. Aparat niefunkcjonalnyTryb zdjęć nieruchomychObraz nieruchomyBłąd bramki.AF Å›ledzÄ…cy przedmiotOpis aparatu Mustek MDC800: WschódSuper makroBardzo dobraAuto lepszyObsÅ‚ugiwane wÅ‚asnoÅ›ci obiektów MTP: ObsÅ‚ugiwane rozmiary miniaturekPrzesuwana panoramaWyłączanie aparatuPartner synchronizacjiSynchronizacja daty i czasu z PCSynchronizacja daty i czasu ramki z PCBłąd systemowy.TFTTFT + PCTIFF (RGB)TTLTVUstawienie blokady TVFormat wyjÅ›cia TVWartość spoza zbioru.Tele-zoom staÅ‚y priorytet AEZakoÅ„czenie otwartego robienia zdjęćTestowanie różnych prÄ™dkoÅ›ci...PrzeglÄ…danie katalogu "aparat" pozwala indeksować zdjÄ™cia na twardym dysku.Aparat JD11 dziaÅ‚a dosyć dobrze z tym sterownikiem. Interfejs RS232 przy 115 kbitach jest wymagany do przesyÅ‚ania zdjęć. Sterownik pozwala na pobranie - miniaturek (64x48 w formacie PGM) - peÅ‚nych obrazów (640x480 w formacie PPM) Aparat Kodak DC120 używa formatu plików KDC do przechowywania obrazów. Aby oglÄ…dać obrazy Å›ciÄ…gniÄ™te z aparatu, potrzebny jest program "kdc2tiff". Jest on dostÄ™pny pod http://kdc2tiff.sourceforge.netSterownik Samsung digimax 800k napisaÅ‚ James McKenzie dla gphoto. Lutz Mueller sportowaÅ‚ go do gphoto2. Marcus Meissner poprawiÅ‚ i rozszerzyÅ‚ ten port.Poziom baterii aparatu jest zbyt niski (%d%%). Operacja przerwana.Nie udaÅ‚o siÄ™ skontaktować z aparatem. ProszÄ™ upewnić siÄ™, że jest podłączony do komputera i włączony.Aparat nie przyjÄ…Å‚ polecenia.Aparat nie przyjÄ…Å‚ '%s' jako nazwy pliku.Aparat nie obsÅ‚uguje prÄ™dkoÅ›ci %i.Aparat wysÅ‚aÅ‚ wÅ‚aÅ›nie błąd, który nie zostaÅ‚ jeszcze odkryty. ProszÄ™ zgÅ‚osić nastÄ™pujÄ…cy raport na adres %s z dodatkowymi informacjami jak uzyskano ten błąd: (0x%x,0x%x). Z góry dziÄ™kujÄ™!Aparat wysÅ‚aÅ‚ wiÄ™cej bajtów niż oczekiwano (%i)Aparat wysÅ‚aÅ‚ tylko %i bajt(ów), ale potrzeba co najmniej %i.Plik do przesÅ‚ania ma zerowÄ… dÅ‚ugośćDÅ‚ugość nazwy pliku nie może przekraczać 12 znaków ('%s' ma %i znaków).System plików nie obsÅ‚uguje przesyÅ‚ania plików do aparatu.System plików nie obsÅ‚uguje pobierania informacji o plikachSystem plików nie obsÅ‚uguje pobierania plikówSystem plików nie obsÅ‚uguje pobierania informacji o noÅ›nikuSystem plików nie obsÅ‚uguje ustawiania informacji o plikachPierwszy odebrany bajt (0x%x) jest nieprawidÅ‚owy.Åšcieżka '%s' nie jest bezwzglÄ™dna.WÅ‚aÅ›ciwość '%s' / 0x%04x nie zostaÅ‚a ustawiona (0x%04x: %s)WÅ‚aÅ›ciwość '%s' / 0x%04x nie zostaÅ‚a ustawiona (0x%04x: %s).Żądany rodzaj portu (%i) nie jest obsÅ‚ugiwany przez ten sterownik.Nadal istniejÄ… pliki w folderze '%s/%s', który próbowano usunąć.Nadal istniejÄ… podkatalogi w folderze '%s/%s', który próbowano usunąć.SÄ… dwa ustawienia rozdzielczoÅ›ci: 352x288 i 176x144. Dane zdjęć sÄ… w formacie JPEG, przez co nie można wczeÅ›niej okreÅ›lić ich rozmiaru. Przez to podawanÄ… maksymalnÄ… liczbÄ™ zdjęć mieszczonÄ… przez aparat należy traktować jako aproksymacjÄ™. BÄ™dÄ… dziaÅ‚ać wszystkie opcje gphoto2 z wyjÄ…tkiem tych, których nie obsÅ‚uguje sprzÄ™t: - usuwania poszczególnych lub wybranych zdjęć (gphoto2 -d) - pobierania obrazu (gphoto2 --capture lub --capture-image) Jednak pobieranie obrazu jest możliwe przy użyciu interfejsu webcam, obsÅ‚ugiwanego przez moduÅ‚ jÄ…dra spca50x. DostÄ™p przez GUI przy użyciu gtkam zostaÅ‚ przetestowany i dziaÅ‚a. Jednak aparat nie tworzy oddzielnych miniaturek. Ponieważ zdjÄ™cia zawsze i tak sÄ… maÅ‚e i w niskiej rozdzielczoÅ›ci, sterownik Å›ciÄ…ga wÅ‚aÅ›ciwe zdjÄ™cia i używa je jako miniaturki. Aparat potrafi robić zdjÄ™cia w trybie 'video clip'. Wynikowe klatki sÄ… zapisywane jako ciÄ…g nieruchomych zdjęć. Użytkownik może animować je przy użyciu np. funkcji 'animate' z pakietu ImageMagick. WiÄ™cej szczegółów o funkcjach aparatu można znaleźć w libgphoto2/camlibs/clicksmart310/README.clicksmart310. Aktualnie wykonuje siÄ™ jakaÅ› operacja. Ten aparat obsÅ‚uguje tylko jednÄ… operacjÄ™ w danej chwili. ProszÄ™ poczekać na zakoÅ„czenie bieżącej operacji.Jest miejsce na kolejne %d nisko skompresowanych %d Å›rednio skompresowanych lub %d wysoko skompresowanych zdjęć Ten aparat nie może robić podglÄ…du zdjÄ™cia.Ten aparat nie może robić zdjęć.Ten aparat nie może wyzwolić wykonania zdjÄ™cia.Ten aparat ma chipset Jeilin JL2005%c. Liczba zdjęć w nim wynosi %i. Ten aparat ma chipset Jeilin JL2005A. CaÅ‚kowita liczba zdjęć w nim wynosi %i Ten aparat nie udostÄ™pnia podrÄ™cznika.Ten aparat nie udostÄ™pnia żadnych opcji konfiguracyjnych.Ten aparat nie dostarcza informacji o sterowniku.Ten aparat nie obsÅ‚uguje ustawiania opcji konfiguracyjnych.Ten aparat nie obsÅ‚uguje opisów.Ten sterownik obsÅ‚uguje aparaty z ukÅ‚adem Jeilin JL2005B, C i D. Aparaty te nie obsÅ‚ugujÄ… usuwania zdjęć ani przesyÅ‚ania danych do aparatu. JeÅ›li zostanÄ… znalezione w aparacie klatki filmów, sÄ… Å›ciÄ…gane jako kolejne nieruchome zdjÄ™cia. WiÄ™cej szczegółów można znaleźć w libgphoto2/camlibs/README.jl2005c Ten sterownik obsÅ‚uguje aparaty z ukÅ‚adem Jeilin jl2005a. Aparaty te nie obsÅ‚ugujÄ… usuwania zdjęć ani przesyÅ‚ania danych do aparatu. Dekodowanie skompresowanych zdjęć może nie dziaÅ‚ać dobrze i nie dziaÅ‚a tak samo dobrze dla wszystkich obsÅ‚ugiwanych aparatów. JeÅ›li zostanÄ… znalezione w aparacie klatki filmów, sÄ… Å›ciÄ…gane jako kolejne nieruchome zdjÄ™cia. WiÄ™cej szczegółów można znaleźć w libgphoto2/camlibs/README.jl2005a Ten sterownik obsÅ‚uguje aparaty z ukÅ‚adem Mars MR97310 (i bezpoÅ›rednie odpowiedniki ??Pixart PACx07??). Aparaty te nie obsÅ‚ugujÄ… usuwania zdjęć ani przesyÅ‚ania danych do aparatu. Dekodowanie skompresowanych zdjęć może nie dziaÅ‚ać dobrze i nie dziaÅ‚a tak samo dobrze dla wszystkich obsÅ‚ugiwanych aparatów. Przetwarzanie danych zdjęć z aparatu Argus QuickClix NIE JEST OBSÅUGIWANE. JeÅ›li zostanÄ… znalezione w aparacie klatki filmów, sÄ… Å›ciÄ…gane jako kolejne nieruchome zdjÄ™cia. WiÄ™cej szczegółów można znaleźć w libgphoto2/camlibs/README. Ten sterownik obsÅ‚uguje niektóre aparaty z ukÅ‚adem Sonix sn9c2028. ObsÅ‚ugiwane sÄ… nastÄ™pujÄ…ce operacje: - miniaturki dla interfejsu graficznego - peÅ‚ne obrazy w formacie PPM - usuwanie wszystkich obrazów - usuwanie ostatniego obrazu (może nie dziaÅ‚ać na części aparatów Sonix) - robienie zdjęć do aparatu ( jw. ) JeÅ›li zostanÄ… znalezione w aparacie klatki filmów, sÄ… Å›ciÄ…gane jako kolejne nieruchome zdjÄ™cia lub pliki AVI, zależnie od modelu. Miniaturki dla plików AVI to nieruchome zdjÄ™cia zrobione z pierwszej klatki. Nie można usuwać pojedynczych zdjęć z wyjÄ…tkiem ostatniego. Sterownik do aparatów Canon PowerShot, Digital IXUS, IXY Digital, i EOS Digital w ich natywnym (czasem zwanym "normalnym") trybie. ObsÅ‚uguje także niewielkÄ… liczbÄ™ cyfrowych kamkorderów Canona z opcjÄ… nieruchomego obrazu. Zawiera kod do komunikacji przez port szeregowy oraz USB, ale (jeszcze) nie przez IEEE 1394 (Firewire). Jest zaprojektowany do pracy z ponad 70 modelami tak starymi jak PowerShot A5 czy Pro70 z 1998 roku oraz tak nowymi jak PowerShot A510 czy EOS 350D z 2005 roku. Nie byÅ‚ jeszcze testowany z aparatami EOS 1D ani EOS 1Ds. W przypadku A50 użycie 115200 bps może być efektywnie wolniejsze niż 57600. JeÅ›li bÄ™dzie wystÄ™pować dużo błędów transmisji szeregowej, należy spróbować możliwie najmniej obciążać komputer (bez pracy dysku). Ta biblioteka byÅ‚a testowana z aparatem Kodak DC 215 Zoom. Może dziaÅ‚ać także z aparatami DC 200 i DC 210. JeÅ›li masz taki aparat, wyÅ›lij wiadomość na adres koltan@gmx.de aby zawiadomić autora, czy byÅ‚y jakieÅ› problemy z tym sterownikiem, czy wszystko byÅ‚o w porzÄ…dku.Ten podglÄ…d nie istnieje.MiniaturkaWysokość miniaturki: %d Rozmiar miniaturki: %d Szerokość miniaturki: %d Pochylenie-przesuniÄ™cieFormat czasuCzas: %a, %d %b %Y %T Jednostka czasuOdstÄ™p w jednostce czasuLiczba w jednostce czasuPrzekroczony limit czasu nawet po 2 próbach. ProszÄ™ skontaktować siÄ™ z %s.SamowyzwalaczWyzwalacz (pojedyncze zdjÄ™cie)Samowyzwalacz + zdalnySamowyzwalacz 10 sSamowyzwalacz 2 sKompensacja tonówZbyt jasnoZbyt ciemnoZbyt dużo prób nie powiodÅ‚o siÄ™.GóraTopfield TF5000PVR Marcus Meissner Biblioteka do Å›ciÄ…gania / przesyÅ‚ania plików z urzÄ…dzeÅ„ Topfield PVR. Przeniesiono z puppy (c) Peter Urbanec Toshiba David Hogue Sterownik Toshiba pdr-m11. W sumie flesza użyto razy: %d W sumie wykonano zdjęć: %d, flesza użyto razy: %d W sumie wykonano zdjęć: %d UpÅ‚ynÄ…Å‚ limit czasu przy transmisji pakietu po %i próbach. ProszÄ™ skontaktować siÄ™ z %s.UpÅ‚ynÄ…Å‚ limit czasu przy transmisji po 2 próbach. PoddajÄ™ siÄ™...ObciÄ™cie obiektuPróba kontaktu z aparatem...Dostrojenie temperatury kolorówDostrojenie 0Dostrojenie 1Dostrojenie 2Dostrojenie 3Dostrojenie 4Å»arówka wolframowaPrzesuniÄ™cie balansu bieli dla Å›wiatÅ‚a żarówki wolframowejTryb turboTvRodzaj pokazu slajdówU1U2JÄ™zyk interfejsu użytkownikaBlokada UIUILockTypeCzas uniksowyUSB 1.1USB 2.0PrÄ™dkość USBBez przypisaniaNiezdefiniowanyNiezdefiniowany dźwiÄ™kNiezdefiniowany element kalendarzaNiezdefiniowana kolekcjaNiezdefiniowany kontaktNiezdefiniowany dokumentNiezdefiniowana wiadomośćNiezdefiniowana opcja PTPNiezdefiniowany filmNiezdefiniowany plik wykonywalny WindowsPod > MTRPodwodneNieznanyNieznany %dNieznane polecenieNieznany błąd biblioteki aparatuNieznany błądNieznany błąd.Nieznany rodzaj pliku %i.Nieznany tryb flesza %d, Nieznany modelNieznany model "%s"Nieznana wartośćNieznana wartość %04dNieznana wartość %04xNieznana wartość 0x%04xNieznany tryb powiÄ™kszenia %d Nieznany(%04x)Nieznany: 0x%04x Nierozpoznana odpowiedźNiepasujÄ…caNieobsÅ‚ugiwane polecenie.Podano nieobsÅ‚ugiwany rodzaj portu %i = 0x%x. Inicjalizacja niemożliwa.NieobsÅ‚ugiwany rodzaj portu: %d. Ten sterownik dziaÅ‚a tylko z aparatami USB. NieużywanyUaktualnienie firmware'u urzÄ…dzeniaURL do przesyÅ‚aniaPrzesyÅ‚anie do aparatu jest obsÅ‚ugiwane tylko w folderze '%s'PrzesyÅ‚anie pliku do aparatu...PrzesyÅ‚anie obrazu do aparatu...PrzesyÅ‚anie obrazu do aparatu: %s.PrzesyÅ‚anie...Wyższa 1Wyższa 2ÅšciÄ…ganie przerwane przez użytkownikaZdefiniowany przez użytkownika 1Zdefiniowany przez użytkownika 2Zdefiniowany przez użytkownika 3Rozszerzenie producentaOpis rozszerzenia producenta: %s ID rozszerzenia producenta: 0x%x(%d.%d) ID producenta: %02x%02x Wersja: Wersja: %s Pionowy AF włączonyTryb obrazuWyjÅ›cie obrazuWyjÅ›cie obrazuPodziaÅ‚ka ViewfinderaWyÅ›wietlanie siatki w trybie ViewfinderWirtualny horyzont ViewfinderaKontrola winietowaniaVividUstawienia ulotneEtykieta wolumenuBracketing WBWEP 128-bitoweWEP 64-bitoweWIFI ESSIDKanaÅ‚ WIFIProfile WIFIWLAN GUIDPlaylista WPLOczekiwanie na zakoÅ„czenie...Oczekiwanie...WyÅ›wietlanie ostrzeżeÅ„Poziom ostrzeżenia 0Poziom ostrzeżenia 1Stan ostrzeżeniaOstrzeżenie w canon_usb_set_file_attributes: canon_usb_dialogue zwróciÅ‚o status błędu 0x%08x z aparatuWodaOczekiwano 0x%x, ale odebrano 0x%x. ProszÄ™ skontaktować siÄ™ z %s.SÅ‚abeBalans bieliPrzesuniÄ™cie balansu bieli 0PrzesuniÄ™cie balansu bieli 1PrzesuniÄ™cie balansu bieli 2PrzesuniÄ™cie balansu bieli 3PrzesuniÄ™cie balansu bieli 4PrzesuniÄ™cie balansu bieli NrProgram bracketingu balansu bieliKrok bracketingu balansu bieliTemperatura kolorów dla balansu bieliNazwa ustawieÅ„ balansu bieli 0Nazwa ustawieÅ„ balansu bieli 1Nazwa ustawieÅ„ balansu bieli 2Nazwa ustawieÅ„ balansu bieli 3Nazwa ustawieÅ„ balansu bieli 4Numer predefiniowanego balansu bieliWartość balansu bieli 0Wartość balansu bieli 1Wartość balansu bieli 2Wartość balansu bieli 3Wartość balansu bieli 4BiaÅ‚a tablicaBalans bieliBiaÅ‚a tablicaPoziom bieliBalans bieliKorekta balansu bieli AKorekta balansu bieli BBalans bieli X ABalans bieli X BBłąd zerowania ustawienia balansu bieliSzerokiAF dla szerokiego obszaruWindows Image FormatSynchronizacja bezprzewodowaZapiszZabezpieczona przed zapisemNiewÅ‚aÅ›ciwa sekwencja sterujÄ…ca: oczekiwano 0x%02x, otrzymano 0x%02x.Dokument XMLRRRR/MM/DDRok/MiesiÄ…c/DzieÅ„TakPróbowano usunąć '%s' z folderu '%s', ale system plików nie obsÅ‚uguje usuwania plików.Trzeba ustawić port przed inicjalizacjÄ… aparatu.Do wykonywania zdjęć musi być włączony tryb nagrywania.Należy podać folder rozpoczynajÄ…cy siÄ™ od /store_xxxxxxxxx/Aparat Logitech Clicksmart 310 zawiera %i zdjÄ™cie. Aparat Logitech Clicksmart 310 zawiera %i zdjÄ™cia. Aparat Logitech Clicksmart 310 zawiera %i zdjęć. Ten aprarat USB ma chipset S&Q. CaÅ‚kowita liczba wykonanych zdjęć to %i Część z nich mogÅ‚o być filmami zawierajÄ…cymi wiele klatek Aparat USB ma chipset Aox. Liczba PIC niskiej rozdzielczoÅ›ci = %i Liczba PIC wysokiej rozdzielczoÅ›ci = %i Liczba PIC = %i Aparat USB to Kodak EZ200. Liczba zdjęć = %i Ten aparat USB to iClick 5X. CaÅ‚kowita liczba zrobionych zdjęć: %i Aparat USB wyglÄ…da na LG GSM. Firmware: %s Wersja firmware'u: %s Ramka cyfrowa USB ma ukÅ‚ad AX203 Ramka cyfrowa USB ma ukÅ‚ad ST2205 Ten aparat obsÅ‚uguje tylko usuwanie ostatniego pliku z aparatu. W tym przypadku tym plikiem jest '%s'.Ogniskowanie strefowe (bliskie)Ogniskowanie strefowe (zbliżenie)Ogniskowanie strefowe (dalekie)Ogniskowanie strefowe (Å›rednie)Ogniskowanie strefowe (zarezerwowane 1)Ogniskowanie strefowe (zarezerwowane 2)Ogniskowanie strefowe (zarezerwowane 3)Ogniskowanie strefowe (zarezerwowane 4)Ogniskowanie strefowe (bardzo bliskie)PowiÄ™kszeniePowiÄ™kszenie (w milimetrach)Zmieniono stopieÅ„ powiÄ™kszeniaPowiÄ™kszenie: 29 mm PowiÄ™kszenie: 34 mm PowiÄ™kszenie: 41 mm PowiÄ™kszenie: 51 mm PowiÄ™kszenie: 58 mm PowiÄ™kszenie: makro zasilacz ACagfa_cl20 Ludzie tworzÄ…cy sterownik linuksowy do Agfa CL20! Można pisać do nas pod cl20@poeml.de Nasza strona to http://cl20.poeml.de autoautomatyczny, redukcja czerwonych oczubateriaczerÅ„ i bielbulbaparat nieaktywny przez > 9 sekund, ponowna inicjalizacja. nie można odpytać. canon_int_capture_image: koÅ„cowe canon_usb_list_all_dirs() nie powiodÅ‚o siÄ™ ze stanem %icanon_int_capture_image: poczÄ…tkowe canon_usb_list_all_dirs() nie powiodÅ‚o siÄ™ ze stanem %licanon_int_get_info_func: BÅÄ„D: poczÄ…tkowy komunikat zbyt krótki (%i < minimum %i)canon_int_list_directory: BÅÄ„D: poczÄ…tkowy komunikat zbyt krótki (%i < minimum %i)canon_int_list_directory: OsiÄ…gniÄ™to koniec pakietu przed sprawdzeniem pierwszego direntcanon_int_list_directory: napotkano uciÄ™ty wpis katalogucanon_serial_get_dirents: Nie udaÅ‚o siÄ™ przydzielić %i bajtów pamiÄ™cicanon_serial_get_dirents: Nie udaÅ‚o siÄ™ zmienić rozmiaru bufora dirent na %i bajtówcanon_serial_get_dirents: Nie udaÅ‚o siÄ™ odczytać kolejnego wpisu katalogucanon_serial_get_dirents: PoczÄ…tkowy pakiet dirent zbyt krótki (tylko %i bajtów)canon_serial_get_dirents: Zbyt dużo wpisów dirent, musi być pÄ™tla.canon_serial_get_dirents: Odebrano uciÄ™ty wpis katalogucanon_serial_get_dirents: w canon_serial_dialogue nie udaÅ‚o siÄ™ pobrać wpisów katalogucanon_usb_get_body_id: Zwrócona nieoczekiwana dÅ‚ugość danych (%i bajtów, oczekiwano %i)canon_usb_get_dirents: Nie udaÅ‚o siÄ™ zmieÅ›cić danych do bufora, '%.96s' (obciÄ™te) zbyt dÅ‚ugie.canon_usb_get_dirents: w canon_usb_long_dialogue nie powiodÅ‚o siÄ™ pobranie wpisów katalogu, zwrócono %icanon_usb_list_all_dirs: Nie udaÅ‚o siÄ™ zmieÅ›cić danych do bufora, '%.96s' (obciÄ™te) zbyt dÅ‚ugie.canon_usb_list_all_dirs: w canon_usb_long_dialogue nie powiodÅ‚o siÄ™ pobranie wpisów katalogu, zwrócono %icanon_usb_lock_keys: Zwrócona nieoczekiwana dÅ‚ugość (%i bajtów, oczekiwano %i)canon_usb_lock_keys: Nieoczekiwana dÅ‚ugość zwrócona z funkcji "lock keys" (%i bajtów, oczekiwano %i)canon_usb_set_file_attributes: canon_usb_dialogue nie powiodÅ‚o siÄ™canon_usb_unlock_keys: Zwrócona nieoczekiwana dÅ‚ugość (%i bajtów, oczekiwano %i)kolorbiblioteka coolshot vnie udaÅ‚o siÄ™ zmienić nazwy wÅ‚aÅ›cicielanie udaÅ‚o siÄ™ ustawić czasuekonomicznyzewnÄ™trzniewypeÅ‚niajÄ…cydobragPhoto2 Mustek VDC-3500/Relisys Dimera 3500 To oprogramowanie stworzono przy pomocy wÅ‚asnoÅ›ciowych informacji należących do StarDot Technologies. Autor: Brian Beattie Współtwórcy: Chuck Homic PrzeksztaÅ‚canie surowych obrazów z aparatu do RGB Dan Fandrich Informacje o protokole, format surowego obrazu, port gphoto2 biblioteka gsmart300 Till Adam Jerome Lodewyck ObsÅ‚uga aparatów cyfrowych Mustek gSmart 300 oparta na różnych innych moduÅ‚ach camlib gphoto2 i specyfikacji udostÄ™pnionej przez Musteka. wysokÄ… (640x480)wysoka kompresja, hp215 Marcus Meissner Sterownik dostÄ™pu do aparatów HP Photosmart 215. Włączony z oddzielnego programu hp215. Sterownik pozwala na Å›ciÄ…ganie obrazów i podglÄ…dów oraz usuwanie obrazów. Sterownik iClick 5X Theodore Kilgore iTTLw trybie wypeÅ‚niajÄ…cymnieskoÅ„czonośćwewnÄ™trzniebiblioteka jamcam vBiblioteka dla aparatów jl2005a Theodore Kilgore Biblioteka dla aparatów jl2005bcd Theodore Kilgore zablokowanie klawiszy nie powiodÅ‚o siÄ™.bezstratnyniskÄ… (320x240)niska kompresja, mRAWmRAW + duży dobry JPEGmRAW + duży normalny JPEGmRAW + Å›redni dobry JPEGmRAW + Å›redni normalny JPEGmRAW + maÅ‚y dobry JPEGmRAW + maÅ‚y normalny JPEGÅ›rednia kompresja, menustan nie zgÅ‚oszony.braknormalnaniedostÄ™pne: %swyłączonowłączonowłączony, redukcja czerwonych oczuna bateriipccam600 init: Nieoczekiwany błąd: gp_port_read zwróciÅ‚o %d zamiast %dpccam600_close: zwrócono wartość %d zamiast %dpccam600_get_file: otrzymano indeks %d, ale oczekiwano > %dpccam600_init: Oczekiwano %d bloków, otrzymano %dpccam600_init: Oczekiwano > %d bloków, otrzymano %dodtwarzaniezasilanie w porzÄ…dkuzasilanie nieprawidÅ‚owetylko odczytodczyt i zapisgotowynagrywaniewywoÅ‚ania rekurencyjne nie sÄ… obsÅ‚ugiwane przez sterownik sierra! ProszÄ™ skontaktować siÄ™ z %s.redukcja czerwonych oczu wyłączona. redukcja czerwonych oczu włączona. redukcja czerwonych oczusRAWsRAW + duży dobry JPEGsRAW + duży normalny JPEGsRAW + Å›redni dobry JPEGsRAW + Å›redni normalny JPEGsRAW + maÅ‚y dobry JPEGsRAW + maÅ‚y normalny JPEGsRGBsRGB (natura)sRGB (portret)Biblioteka sierra SPARClite Scott Fritzinger ObsÅ‚uga aparatów cyfrowych opartych na sierra w tym Olympus, Nikon, Epson, Pentax i innych. PodziÄ™kowania dla Data Engines (www.dataengines.com) za wykorzystanie ich Olympusa C-3030Z do implementacji obsÅ‚ugi USB.Biblioteka spca50x vOgólny sterownik sq905 Theodore Kilgore ogólny sterownik sq905C Theodore Kilgore normalnabardzo dobrasx330z jest tylko na USBczas ustawionynie udaÅ‚o siÄ™ odgadnąć poczÄ…tkowej wartoÅ›ci CRC nieokreÅ›lonynieoczekiwany typ danych %inieznany (0x%02x)nieznana kompresja %d, nieznana rozdzielczość %d) vCalendar1vCalendar2vCard2vCard3uwaga: nie sprawdzono CRC (dodać dÅ‚ugość %d, wartość 0x%04x) ######################### libgphoto2-2.5.9/po/da.gmo0000644000175000001440000055554512623156274012256 00000000000000Þ•È\F· œŒx»y»‘»¦»·»#̻𻠼##¼G¼\¼p¼ƒ¼œ¼h®¼½*½A½\½4w½¬½Á½нè½F¾H¾\¾l¾ t¾¾†¾¾®¾´¾º¾ ½¾bʾ;-¿i¿x¿”¿¯¿Á¿ÅÔ¿OšÀ êÁ ôÁÿÁ ÂÂÂÂÂ!Â' )Â3Â8Â>ÂDÂMÂaÂeÂjÂnÂsÂxÂ†Ž•›£ª°µ»ÂÃÂÊÂÎÂÕÂÝÂäÂêÂòÂù ÃÃÃà Ã(Ã/Ã4Ã8Ã@ÃGÃMÃRÃZÃaÃgÃlÃqÃwÃÆËÃ×Þäéðà ¸ÃÃà ÉÃÔÃÙÃÝà äÃïà õÃÄÄÄ ÄÄ Ä)Ä.Ä1Ä4Ä6Ä;Ä AÄKÄOÄUÄZÄ _ÄjÄ nÄxÄ|Ä€Ä†Ä‰Ä ŒÄ—ÄœÄ¢Ä ¥Ä °Ä»Ä¿ÄÅÄÉÄÌÄÏÄÑÄ ×ÄáÄçÄêÄíÄöÄüÄ Å ÅÅÅ!Å 'Å1Å@ÅFÅIÅLÅRÅ WÅaÅ gÅqÅtÅwÅ}ÅńņŌŠ‘śŞšŧŰųŹżŠÅÅÐÅêÅÆ Æ"Æ *Æ 7ÆAÆPÆkÆ zÆ‡ÆÆžÆ ¦Æ ±Æ¼ÆÏÆ éÆ÷Æ ÇÇ )Ç 6ÇBÇ TÇ aÇ lÇ yÇ †ÇÇ˜Ç žÇ «Ç¸Ç½ÇÂÇÕÇÛÇàÇóÇøÇýÇÈÈ %È2È7È:ÈJÈQÈ™YÈ­óȡɧɫÊÀÊØÊöÊ Ë+Ë<ËSËeËzË˞˶ËÐËåË ýË Ì$Ì+Ì<ÌNÌcÌ'jÌ’Ì›Ì ´Ì¿Ì.ÒÌ-Í /Í ;ÍGÍXÍ9a͛ͤ͵ÍÇÍØÍéÍüÍÎ Î "Î/ÎBÎVÎ lÎy΋ÎÎ «Î¹Î ÐÎÝÎõÎÏ*Ï2ÏBÏTÏ$]ςϛϯÏÍÏ êÏ øÏÐ Ð#Ð3ÐBÐ[ÐjЂЕЪпÐÔÐåÐýÐ Ñ Ñ 'Ñ2ÑGÑWÑgÑ‚Ñ(žÑÇÑ×Ñ òÑÒÒ ÒÒ Ò+Ò;ÒNÒVÒhÒyÒ}Ò €ÒŒÒÒ ­ÒºÒ/ÂÒ+òÒ1Ó'PÓ(xÓ¡Ó¾Ó ÜÓêÔýÔÕÕ )Õo7Õ§Õ ¹Õ ÆÕÓÕ*òÕ#ÖAÖ GÖRÖ WÖaÖsÖ|Ö„Ö–Ö›Ö ºÖ ÈÖ ÖÖâÖ òÖ þÖ ×××× $× 1× ?× K×V×mׄכײ×É×Û×÷ר%Ø<ØSØjØ{ØŒØØ¥Ø ­Ø ¸Ø ÄØÐØ äØ ðØüØÙ ÙÙ$Ù 3Ù@ÙEÙ WÙbÙ tـلÙٔ٣ٲÙÇÙÜÙOëÙ;Ú OÚ[Ú zÚ‡Ú ™Ú¤Ú ·Ú ÅÚÒÚâÚüÚkÛ8ˆÛ#ÁÛ8åÛ9ÜXÜAlÜ4®Ü+ãÜ(Ý@8Ý yÝšÝ1¶ÝèÝÞ#Þ>Þ[ÞsÞ’Þ¦Þ¹ÞÐÞêÞ'þÞ&ß?ß=Vß ”ß) ß$Êß>ïß.à GàUà7gà6ŸàDÖàEáaá~á&—á¾áÓáâáÐúáËâßâ çâõâãã(ã>ãYãwã|ã‹ã¤ãºã ËãØã(ñãä.äJä]äyä•ä ®äºäÍäÝäõä åå !åBå[åsåŒå“å ¦å²åÌåáå ûåææ æ/æ8æQælæ æŒææ ±æ¿æÏæ׿Þæøæ þæ ç ç ç /ç;çMç dçqçç ¤ç®çÄçÚç<ðç-èJè\è oè{è è"èÀè Ôèßèþèé1éEédéƒé™é¯éÄéÖéêé óé ýé ê êê<êKêaê:pê<«êèêë ë:ë&Uë|ë˜ë´ëÒëñë0ìAì]ì!wì'™ìÁìàì>üì;íRí&ní/•í<Åí<î?î(Yî‚îžî ºî*Ûî2ï-9ï4gï;œï0Øï ðð=ðYð5rð=¨ð5æðsññ­ñ&ÁñèñkññE]ò£ò¾ò…ÛòUaó·ó¾óÒóëóôô 5ô@ô Dô Qô_ô xô „ôô §ôµô ÉôÿÖôÖõßõîõ÷õööö×.öøø ø*ø=øVøgø€ø™ø²ø ÅøÑø2àø.ùBù _ùlù ‡ù •ùÓ¢ù vúEƒúÉúÚúîúû$û ,û8û@û Rû_ûLvûµÃûHyüªÂý,mþšÿªÿ¼ÿÐÿéÿþÿ&<QfŽ© ÇÒí  " -7 <F[k-{©À<Õ/F^x”³·½ÅÎáö þ  "3H g q ŠŸ¯Ï×àæü('P'd5Œ ÂÍá ô1ÿ:14l-¡ÏØï,Gc|’­ÁÙë % >L[m„• « ¹ÇÝû 1 E _ n † ¢ ¶ Ê  à  î ù       5 P  c  p z ‚ “ £ ¬ ³ ¹ ¿  Å Ï  ß ì ,ñ  ; K  b o  € Œ › « U»    _/  ¤  µ À Ó  Ø â ë N Q k | — ¨ ° ¶  ¼ Ê ç ü /DZp¨ÁÖìÿ ,7Kb vœ ´ ¾É Þìû , EPcvŠ ›¥ ®¹ ÈÔé$û 1"Ad{„•§¸Ñê  2EXk~¶Ïê/ GTm‚—©»ÁÑ áí ü  &3FYh#w%›ÁLÑ&f+¼’‡O× Ýê .?W iv}’¥ ª µÁ×êü % -:OV!jŒ¤¾!Üþ'8`r†™ ¯ºÍÝý6Pfy“¬¼ Í Ûé " 2 G "W z .  ¾  É Ó  Ù ç ö ! !!-!2!7!ˆl>õ> ??+?;?D?L? ^?i? x? „?’?¢? ³?Á? Ó? ß?ë? @ @@ 1@!<@^@3~@ ²@Ó@ ò@ A§A¶A ¿A ÉAÓA ÜAçABB!B57BGmB µB$ÁBæBîBõBüB CCCC,C;CKC ZC eCrC ‚CŽCC€­Cñ.E F4FEF$VF/{F«F&ÈF/ïFG"G5G UGbGG”G¤G­G¿GÎGãGùG#H8HUH]HqH‚H™H­HFÅH I#I?I DIRIYI aInI}I†I.œIËIÛI ìIöI9ÿI9JOJfJ+~JªJ®J±J ´JÕJÙJGàJ(MV?M–M™M´MÍMÜMòMûMMN\NkN ~N‹NšN®N¾N ÍNÙNßNûN O #O 0O>O ^OO ‡O’O¥O§O«O ®O»OÍOìOüOP,PDP\P{P™P¸PÒPèPQQ4QMQfQnQ‰Q¥QÁQÖQêQÿQR'/R,WR„R¡R°RÈR ÜRèRSS -S9S1?T qT{T¬„T­1UåßUYÅW X +X 7X CXQXYX jXwX‰XŸX ³X ÀXÍXâXñXY#Y 4YBYKYcY hYrY{Y”Y¤Y ¶YÄY ÔYßYèY îY ûYZZ*Z1ZAZQZaZqZZ‰Z‘Z ™Z ¤Z¯Z·ZÆZ×ZéZòZ! [ .[O[ d[…[*ž[É[ã[ö[ \\)\1\@\V\ h\v\z\‹\›\­\Ã\Û\ò\ ]!]9]?]H]Q] a]n]~] ] §]C²]ö]ü]^,^3H^*|^§^Ç^ä^ö^ ý^ __+_;_?_ S_a_s_‘_ £_°_Ã_ Õ_ö_þ_ ` ` "` ,` 9` F`S`k`r`…` –`¢`±` Í` Û`å`û`Za qa~a Ža›a·aÓa éaôabb0bCb‹Sb–ßbvc|c ‹c™c¨c$¸cÝcNãc2dš8d®ÓdŽ‚eüfg g*g 0g;g CgOg _g igtg“g¤g»gËg Üg çg õghh&h>hXh!vh˜h®hÄh ßhëhühi &i2iDi Ji Uicivii©iÃiÜióij"jÕeÕnÕ ŒÕ–Õ.©Õ"ØÕ ûÕ ÖÖ0Ö7?ÖwÖ†Ö¡Ö¾ÖÕÖåÖ÷Ö × × ×+×A×\× q×|× Ž×™×¹×%Í× ó× Ø$!ØFØ bØp؃؞Ø%­ØÓØïØ Ù)ÙFÙbÙwÙ٣ټ٠ÌÙ!íÙ!Ú1ÚMÚbÚvÚÚ¦ÚÅÚÞÚ íÚ øÚÛÛ.Û?Û[Û0yÛªÛ»ÛÚÛêÛíÛ õÛÜ ÜÜ2Ü EÜPÜnÜ„ÜˆÜ ŒÜ™Ü­Ü ÂÜ ÏÜ'ÛÜ1Ý;5Ý.qÝ+ Ý ÌÝ%íÝÞ*ß<ßNßVß hß{vßòßà àà*>à(ià’à ™à¤à ªà¸à Ïà Üàéàá' á 3á =á Gá Rá \á gáqá wá„á‰áŽáŸá¯á ¾áÉáááùáâ)âAâPâlâ„âœâ´âÌâäâõâããã#ã*ã2ã:ã Jã Xãfãkã €ãŽã”ã £ã¯ã·ã ÎãÙã éãõãùãä ä ä'ä?äUäLdä±äÂä#Ñä õäå åå 0å >åIå]å!wåY™å9óå'-æ2Uæ3ˆæ¼æ3Ôæ8ç.Aç/pçD çåçè4!èVèsè%è!µè×è&ôèé-éGéeé‚é)˜éÂéáéBýé @ê3Kêê3Ÿê%Óêùê ë8ë<VëS“ëCçë+ìKì*kì–ì§ì¶ì×Îì¦í»íÁíÓíçí îî'/î Wîxî }î ‹î¬îÇîÝîîî,ï4ïRïnï†ï¢ï¼ï ÓïÞï ñïÿï ð &ð 2ð @ðaðwðð¦ð®ð Âð#Íðñðñ#ñ (ñ4ñ <ñIñOñeñƒñ •ñ¡ñ°ñ ÂñÎñ Ýñéñïñ òò %ò 3ò>òQòZòjò Šò—ò³ò ÏòÝòòòó<óYósó…ó ó©ó Äó!Òóôó ô(ô?ô'Zô‚ô)ô(Çôðô õ(õCõXõlõ uõ õ ‰õ —õ¡õ»õÑõçõ8öõ:/ö"jöö ­ö Îö+ïö ÷%<÷b÷!÷!£÷1Å÷÷÷ø!1ø Søtø“ø=±øïøù'&ù0Nù;ù:»ùöù,ú$@úeú%ƒú*©ú1Ôú)û00ûAaû6£ûÚûñûü,ü?Lü1Œü;¾ü|úüwý”ý(¤ýÍýmÕýHCþ$Œþ)±þ•ÛþGqÿ ¹ÿÃÿÜÿôÿ $ @K O\l … ‘œ ³¿ ÑÝù8AE×[3L Q]"q”£¼Õî ÿ =.W† ¢¯ Ê ØßåÅKÖ"7#Rv– ž«² ÅÓcäÂHO ­[ 1 ; J [ n † ˜ « ½ Ô ì ÿ   % @  ^ l ‡ ¤ « À Óçð)2=p…6šÑêÿ3Kdh n x…ž³¼Ë Ôâæ÷# 2 < JUm$‰® ¶À!Å ç!%*P.i<˜ Õáõ69R4Œ'Á éõ &?$V{›ºÓ ñ-'Emª»Îâ0CS l« É'ê  7Ri|‘ ¨ ´ÀÃÈÍÐÕ9Ø%6?G\lpy‚‹”¥ ·Å*Éô :IXg| ‹L™æîu “£´Ç Ë×àW÷Oiz• ¦°µ »Éæÿ3Lcw—³Íã÷ ' 8CZq†#•¹ Õ ãï* @Lk ˆ“ªÁÛ ô    $1F*\‡š#©Íçð  ) E a  Ž Ÿ ¶ Í ä û %!8!T!p!Ž!¨!Á!Ù! ó!ÿ!"*">"O"e"!k"" "´" Ç"Ô"ð"##0#L#`#q#!‘#³#NÄ#$$m $ØŽ$xg( à*ì*!ÿ*!+<+K+_+w+‰+£+ª+½+Ü+ á+ î+ú+,$,4,F,a, i,t,…,Š,) ,Ê,ã,ú,- --N-/l-œ-°-Ç-×- ñ-ý-.$(.$M.r.’.².È.Ý.÷. //7/Q/(`/‰/¡/°/ Ã/!Ñ/ó/)0 10 ;0E0K0Z0j0 {0ˆ0 —0¥0ª0¯0´0Æ0Ú0á0ù0 11'171L1d1þi1h2T…2YÚ2-43b3u3|3‹3Ž3©3²3È3 å3ó3 444)4;4%C4i4x4‰4™4±4 È4Õ4å4ù4 55+5;5J5^5r5…5™5®5Á5Þ5ñ546$=6!b6„6 —6 ¤6®6 µ6Ã6 Ô6ß6è6û67 77*C7en72Ô89 969 N9.Y9ˆ9™9=ª9+è9:!:>:M:"d:"‡:7ª:.â:";*4; _;#€;&¤;Ë; ß;‚é;l<< „<<¨< ±< »<Ç<Ï<í<ÿ<>|?ÑŒ?c^@?Â@A°AuÈA>BGBKBeB }B!ˆB ªB µB ÃBÐB àB9íB'C0C46CkC pC~CC"—C ºC.ÆCõC D D "D)/DYDvD zD„D”D¤D¶DÅDÜD ôDEE+E@EWEsE…E¢E ²EÓE ÙEçEF#F?FEDF ŠF"«F ÎFÚF"òFG G)G-G=GSG YGcG GŽG–G¥GµG-ÉG1÷G)H+H1HFH JHTHdH HŒH ¡H­H³H ¹HÄHËHÔHæHI"I;IMID\I^¡IJJWJ)nJ)˜JÂJÔJ*ÝJ/K8K!MKoK K˜K ªKµK¼KÐKèKñKúKL L L*L =LIL[LxL ˆL©L ÈL ÕL âL ïLüL+M=MPMaMsMM˜M©MÉMåMýMNN'Nx@N¹NÂN,ÓNOO"O2OBOKKO—O ŸOªO0*P[PÝPóP QQ$Q,Q3QKQTQ cQ oQ |Q ŠQ ˜Q¦Q¼QÄQÌQéQùQRR*RFR.cR’R®R ÇR ÔR´áR –S ¡S «SµS ½S'ÈS ðSþS%T<)T@fT §T0µTæTïT÷TÿTUUU%U4U CU PU ]UgU nU {U …U’Uˆ¤Uí-WX1X FX&SX9zX$´X*ÙX8Y=YAY$WY|Y%–Y¼YÐY åYñY ZZ5ZJZ$aZ"†Z ©Z´ZÌZáZ[[R5[ˆ[$¦[Ë[ Ñ[Ü[ã[ ë[ù[ \\)4\^\n\ ‰\ “\Mž\ì\]]'*]R]Z]_]f]„]Œ]¯“]C`m\`Ê`Ñ`ï`aa 0aqRqiqq˜q­qÅqËqÔqæqöqrr 5r BrFOr–r5›rÑr(îr%s&=sdsƒs—s¨s®s½sÌs Ûsçsìsÿst* tKt^trt†t,˜tÅtÌtÞtçtðt ùt uu#u8u>uQuauwuu ¯u½uÆu&áu\vevzv v›vºvÚv ñvüvw,wHw]wsw—x›x¢x ³xÁxÑx'áx yUyey—kyªz™®zH{L|e|n| t|‚| Š|•| ¦| ²|%¿|å|þ|},} ;}H}Y}i}}–}©}"É}"ì}~&~(B~ k~w~Ž~®~ ½~È~Ú~ à~ ê~ö~'Eb‚#ÁÙõ€%€E€\€ r€ €€ Ž€ œ€ª€±€¸€.×€ #,?Ti~“£³ÂÚíõ‚‚'1‚Y‚k‚(„‚­‚ Å‚\Ò‚/ƒ7ƒ=ƒ Lƒ XƒdƒsƒƒŸƒ¯ƒj¿ƒ*„?„ \„}„4„Ò„Û„í„… …'…>…M…d…x{…ô…ú… †† †$†+†4†G†+Y‡Å…ˆ¹K‹=ŽPCޔ޼£ŽÔ`J5=€H¾A‘CI‘=‘^Ë‘?*’7j’7¢’Ú’3Þ’-“@“%G“Pm“¾“Ä“ ɓՓô“ ””4”<”E”e”y””f—”[þ”fZ•YÁ•Y–Mu–DÖ—"—2—A— `— k—w—%€—"¦—É—Ú—(ñ—$˜ ?˜K˜O˜ X˜c˜g˜j˜~˜˜!¦˜RȘà™çü™êäšBÏ›Dœ%Wœ*}œ+¨œÔœ-r9 (ÚAž3Ež;yž0µž@æž>'Ÿ0fŸ—ŸE³Ÿ>ùŸD8 /} ƒ­¤w1¥!©¥Ë¥!å¥H¦GP¦˜¦&³¦<Ú¦>§(V§8§š¸¨SªMV¬¤®¬±'³² Û²å²ú²³ (³3³I³Y³s³Aг̳%Ò³ø³ ´ ´(´:´ B´L´g´¶k´D"µgµ;‡µ"õBæµ8)¶b¶q¶‘¶«¶¾¶Ѷä¶÷¶ ··1·@·C·Y·b· j·u·~·†· Ž· œ·©·¸·Ë·è·ÿ·¸.¸D¸_¸"t¸ —¸ £¸®¸ µ¸¿¸ ܸ è¸õ¸¹ #¹0¹ B¹P¹c¹v¹‹¹ ¤¹±¹Á¹ Ô¹à¹Fý¹NDº“ºšº ´º/¿ºïº»» ,»9»A»I»e»x»‹»ž»&´»'Û»¼ ¼ '¼ 4¼B¼Q¼Z¼ c¼p¼…¼¼±¼¸¼ͼܼ ó¼ ÿ¼ ½ ½ ½.½C½ a½k½|½޽ ½g°½/¾H¾ M¾&Y¾&€¾&§¾&ξ&õ¾'¿D¿c¿¿¿¹¿Õ¿ñ¿ À)ÀEÀcÀÀŸÀ½À ÛÀ æÀ òÀ ýÀ ÁÁ,ÁDÁTÁdÁ }Á‡Á˜Á®Á´Á6ÄÁ ûÁ ÂÂ"Âd%Â6ŠÂ;ÁÂEýÂhC¬Ô/Ä=ÄÄ<ÅP?Å*Å+»ÅfçÅNÆ`ÆvÆ‰ÆÆ·ÆÑÆëÆÇÇ"Ç6Ç JÇ WÇ dÇ qÇ ~Ç ‹Ç ˜Çr¤ÇÈÈ6È >ÈHÈ9MȇÈTŸÈWôÈNLÉO›É`ëÉ=LÊDŠÊSÏÊ@#ËJdËM¯Ë8ýËW6ÌIŽÌaØÌh:Íc£ÍjÎCrÎ^¶Î9ÏEOϕϛϰÏËÏäÏíÏ öÏЖÐýœÑšÒ©ÒÞ¼Ò7›ÓÓÓØÓìÓõÓýÓ?ÔAPÔ’Ô°Ô ¸ÔÆÔØÔÝÔòÔ Õ!Õ;ÕQÕjÕÕ„ÕžÕ¤Õ«ÕÁÕÉÕÐÕ éÕHõÕ2>Ö:qÖ+¬Ö-ØÖ× ××(× 8×E×J×CP×”×­×Â×Õ×Ú×ïרØ8ØNØgØlØ|،ءÙ9µÙ:ïÙ*Ú3Ú<Ú NÚ.ZÚ‰Ú˜Ú¬Ú¼ÚÔÚ ëÚ öÚÛÛUÛc¹RKM=‰Ð$¶SAïù „]Otkë&×™ÅZíÉî&Œß8† ¡ah¾èñ­!Þ×P—±z÷(=J‡[V<v vïC“ ÖóáΖåÈV¨¡$”âjÑ\OõÆJ°rÇ 'vâ$™ß_p#”«.ê!ÛŠ›Ýôÿ:Ú˜×Âîèx_køQ&9>}@J…¡%Ö¼Q&P¬á‘»·›õüþÑ(~6µtï¶ÒQú@>’™¯Ò—‹ÈëÙÇç-ðÞ^•D|´B,º°ÍIãp›H² ´$Èý³R1zO0ÿe"#$ €Fµ/<ŒÜ(%—©ì©àä»OLsö§TƒGÓ–Üõ‚g‚X“n- /0lbÏÚºW7ñ€‘ÎÌ#NÌd15 K®†Ë¨PìÚ¸Q ÕÖob=½5ÝBÅÌå8!@ø‡ùˆ„™_¸Fþsár®OÎ!øÑïyÇ»ËÔAo@ÓÏÈVÕò÷å¿ÀYœ2¼ÄÕºÍ>¾ƒÆ’SÂG^zVuâ‹o{?Õ>òB:Ý›CÖv“Y¬­F#÷d+ô »¿kI`Ùæwr6©½:ë‹§¢2; J¶ô’R¦Gf¿Øá¹ŸPJ5­4ëS–LÊ’…/ |Ü «…'pæç¢ºYLê Ò&øæl½ú@?îêR©“…}Z‘Š®ú0Z,ƒö"x”1#¶¤u¥Êfލ™‘®Â\Žh–ÚYáÅ̯ÞÉù’É^@âh NÄ;ì^c·j9xŸ  aö=”gs•Û®†À]ŽuïlNHu\Låã¼1e‰Úæû_Ùq.³¥w}W?£oy#~#?(ûØŒ¡ItÄ5ïI"ˆl¦æ%{U™Úw%š€Yª?¯×ÕŒ(cÔ]48ª„ø›…þÓ0˜eÎV”Ñ| •ôÃI8©Ÿìb § *ð¥q~I¦}Z<¨²÷·æc³ÄÝUEîô¹Ý\ ºëmmRÛZ|¾>8¡•x½ô±D÷ÂCvŽÃ‡\ËÀ)ÿ} ÜÆS,N'‚´D“X9•qvc€‹„¿<âOXÞm­3K¶*q’€ Ÿ4Á6†ô§,9“³ç× ñAÁr"lÈ Ÿ°`<.r12ëúþ=»it^d$fk—j u4s-¢<]Ze`  xJÀhF„€€R‰T*S\–¾M7§ßwÐÀ9^Bo·<™¢¬¸­ößÒgǦš/h„ÜDmßÄ6ÌWXû‰‡{‡ùZ%3‹Ÿ f–Ê‹e ªL rdù©¤H{ ¥Ùð´Q$B‰ЗƦTiÑ­2ú˜ÏSÁ ˆV?ÃAQÑHÇ*Pî_nm‰·XüìÓÁÏ7D£°q´ç¹ß®ÂKéz5¡6É[wUää¿Ð¶µ gþ¹QWÖMÝ!í9ÓxRλ(ÙÌÿò3³0_¤7ÍkÜ+,±Š"†‡ºN¸KC}Éeé©U½Oû´ÛDæ÷Ûr:öéWÊ÷±w¯ù .tŠÎ)Z"H¸¨|Çœ’–¤X‘Æ`}àfL5+çÄÈp­”)«·~ÉÈ!ÍE]öŠÆ:ˆ)˜TTô’x!»ŽpóŒê?8ç%GÉñAºŠéƒÞ/² òÔ¬lsÒ¼yßy*5ÿË^êmHV¯°>é¥M[X ød”‘S¤l˜¦Å¿cÞ<.àAœ‰7dÝCuý;jJÂ=DMØÑqÕÖÔ¾‚Óþ\³ÂR-ÿ’²gØ©z)¥£±ªšgPp—fõõ ç{S.þ?‰( ÊhÅܤ.ûUúfõ*må2{襭ª 6=\³[ÜŽ^iW~¤„á¥oÍ`}aBYBš¥%1ÆÇky:'VŒ ?ÓÛwü‡¨—aâž}ý(‰ùŠ3¾ÄåœÐßsAt”§˜c+9ªÌEª[ÜÕ¢wz0‚[X†‚¼)cLA='Ðñ…gín¶£góñ Yn1Ý”ìqj¹Å éGö½ˆ¼ž&öý¨`3Ùo3¤®uDêüd¹¡Oè^>TK‚Z Êkà…zC…õˆ{ëm.œ†¯°E±ª÷–bÏ($òH$ÛåHÑ8`ÿÎØá Pêa#—,ušéGHIb\UÕâÇt¶ûãìƒób~e«»Ó-nš5ð3€~-7+õ[è4n²„¶4Aà`s¨*´ƒ³0hn]K°8Å¡aMM îDmý•ÓaÅÒv•¢v£ã;·WçË:ÃT 7«¬4Fx‹W›©ø.2'¤ðäýø²±IK=:«§R‹˜¸«îfÏ b¬OáN¦º—J9,ËUT¢±ÔE½fꢵ+׋@­„àó•¿Çuíƒ ËÁðPž•_þíÀFežîÍ ƒóMó×bÖzýCV¹Ž£iÉÈ/¯;¹«¸Ÿ{/#0ØkÏNØ+ÃÐ6!_>;|‚-sFg“Àˆ]Ud'PÀýÔËÎyLÁrèÈvG|Í|hÁ;û¾¿ÀÁ:7®lC]¨n5ˆB{œ¡‡EãÄFÊ  Þ§*ií‡qràƒEµû² ïé‘tžäyµT*£)™-Ž&ØN@2úÒpqèi£Ejœd)ñÆ&ŠŽ'ÍFÌüb- a²l;Þ† [/Bn×í ´ñå¯ýL'Ù«Ï%ùä€<¬äïí1™2ÖiŠÚãó†j›6MÔ…âj e8IÚŸ¼²èWhŒ/ °S4ŒŸ˜]yX9ü®@CpYµ24~‘3x)㢞üa[ðÐ`žšµ¸»c‚µ ºoð_s¯t,KNžü“&"ÛÄÅÁ¦U;ì㧛ý¾œ Ùšz¾£òk˜›+wJò ·³äˆ,Eÿò>07Ò¿+Q6šž°|G¬´à~¼YjÊ·Gp¸±Q3iŒæ¬‘1–Ôëúyo"¦%Æi !"¼ª Access Capability: %s Canon Wifi support File Download, Filesystemtype: %s Free Space (Bytes): %llu (%lu MB) Free Space (Images): %d Generic Image Capture, Maximum Capability: %llu (%lu MB) Nikon Wifi support No Image Capture, Storage Type: %s StorageDescription: %s VolumeLabel: %s Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Capture Formats: Device Capabilities: Device Property Summary: Storage Devices Summary: Drive %s %11s bytes total %11s bytes available Serial Number: %s Version: %s (battery is %d%% full) PTP error %04x on query Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d error %x on query. not read out. %.0f mm%.1f stops%0.4fs%d %d/%d%d Multi Frame Noise Reduction%d mm%d/%d%f%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)%sCanon EOS Shutter Button%sNikon Capture 2%sNikon Capture 3 (Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*+NEF (RAW)-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 (Short)1 EV1 fps1 min1 minute1 step spd/aperture1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/250s (Auto FP)1/25s1/2s1/301/30s1/3200s1/320s1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 mins10 minutes10 mm10 seconds100%10s11 fps1152 x 86412 mm1280 x 96013s1515 mins15 minutes15s16 seconds16:91s1x22 EV2 fps2 seconds2.02.0 m2.5s2.5x20 seconds20s21 points25%25s29 mm2s2x3 (Normal)3 EV3 fps3030 minutes30 seconds30s34 mm3:23s3x44 fps4 seconds41 mm4s4x5 (Long)5 fps5 mins5 minutes5 seconds50 Hz50%51 mm51 points51 points (3D)58 mm5s5x6 fps6 mm6 seconds60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 seconds8s8x9 fps9 points9xA-DEPACAC PowerAC adapterAC adapter is connected. AC adapter is not connected. ADL bracketingAE & FlashAE LockAE Lock onlyAE LockedAE lock (Hold)AE lock (Reset on release)AE lock (hold)AE lock onlyAE onlyAE-L/AF-L ModeAE-lockAE/AF LockAE/AF lockAEAF Lock Button 2AEB Exposure CompensationAF ActivationAF Area IlluminationAF Area PointAF Assist LampAF Beep ModeAF DistanceAF LCD Top Mode 2AF Lock HoldAF Lock OnAF Lock OnlyAF Lock onlyAF LockedAF ModeAF OnAF On ButtonAF lock onlyAF-AAF-CAF-C Mode PriorityAF-ONAF-SAF-S Mode PriorityAF11AF51AI FocusAI ServoASIC Revision: %d.%d ASX PlaylistAUTOAVAV Lock SettingAV MaxAV OpenAX203 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.AX203 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.A_DEPAbout Konica Q-M150: This camera does not allow any changes from the outside. So in the configuration, you can only see what it is configured on the camera but you can not change anything. If you have some issues with this driver, please e-mail its authors. Abstract Audio AlbumAbstract Audio PlaylistAbstract Audio Video PlaylistAbstract Calendar ItemAbstract Chaptered ProductionAbstract ContactAbstract Contact GroupAbstract DocumentAbstract Image AlbumAbstract MediacastAbstract MessageAbstract Message FolderAbstract Multimedia AlbumAbstract Video AlbumAbstract Video PlaylistAccess modeAccess top item in MY MENUActionActive AF SensorActive D-LightingActive Pic Ctrl ItemAd-hocAdc65 Benjamin Moos AdobeRGBAdvanced Transfer CancelAlbum nameAlkalium manganeseAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Angle LevelAnti-redeyeAnti-redeye FillAnywhereAox generic driver Theodore Kilgore ApertureAperture SettingAperture SettingsAperture changedApplication ModeApplication Mode 0Application Mode 1ArtistArtist NameAspect RatioAssign Func ButtonAssign Func. ButtonAssign Preview ButtonAssist LightAudible.com CodecAutoAuto + Red Eye SuppressionAuto ApertureAuto Bracket SelectionAuto DX CropAuto Distortion ControlAuto Exposure Bracket CountAuto Exposure BracketingAuto FPAuto Focus AreaAuto Focus Mode 2Auto ISOAuto ISO Multi Frame Noise ReductionAuto ISO P/A/DVP SettingAuto Meter Off TimeAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off InfoAuto Off MenuAuto Off PhotoAuto Off TimeAuto Off TimersAuto Power OffAuto Power Off (minutes)Auto Slow SyncAuto White Balance BiasAuto exposure lockAuto focus: AI focusAuto focus: AI servoAuto focus: one-shotAuto sensitivityAuto, red-eye reductionAutofocus ModeAutofocus error.AutomaticAutomatic Automatic (No Flash)Automatic FlashAutomatic MacroAutomatic Macro (close-up)Automatic Red-eye ReductionAutomatic exposure adjustment on previewAutomatic flashAutomatic flash on captureAutumn colorsAvAv MaxAv Max ApexAv OpenAv Open ApexAvailable ShotsAvailable memory: AverageAverage FilesizesAverage MeteringB/WBWBW ContrastBW Filler EffectBW Setting TypeBW SharpnessBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for card status %dBad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery Cell KindBattery LevelBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery Life: %i Battery ModeBattery TypeBattery exhausted, camera off.Battery level: %.1f Volts. Revision: %08x.Battery status: %s, AC Adapter: %s BeachBeach/SnowBeepBeep ModeBeep mode changedBeep offBeep onBegin Edit ObjectBestBit rate %ld is not supported.Black & WhiteBlack & whiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlossomBlueBottomBracket ModeBracket OrderBracket SetBracketingBracketing C 0.3 StepsBracketing C 0.7 StepsBracketing C 1.0 StepsBracketing C 2.0 StepsBracketing C 3.0 StepsBracketing EnableBracketing Frames and StepsBracketing S 0.3 StepsBracketing S 0.7 StepsBracketing S 1.0 StepsBracketing S 2.0 StepsBracketing S 3.0 StepsBracketing WB HiBracketing WB LoBracketing burstBright+Bright-BrightnessBrightness+Brightness-Brightness/ContrastBuiltin RAMBuiltin ROMBulbBulb Exposure TimeBulb ModeBurstBurst IntervalBurst NumberBusyButtons and DialsCCD NumberCCD Serial NumberCHDK ScriptCRWCSM MenuCameraCamera ActionsCamera Body IDCamera ConfigurationCamera Date and TimeCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ManufacturerCamera ModeCamera Mode Not Adjust FNumberCamera ModelCamera Model: %s Camera OK.Camera OrientationCamera OutputCamera OwnerCamera SettingsCamera Status InformationCamera and Driver ConfigurationCamera appears to not be using CompactFlash storage Unfortunately we do not support that at the moment :-( Camera busy. If the problem persists, please contact %s.Camera could not complete operationCamera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera has taken %d pictures, and is using CompactFlash storage. Camera is configured for lights flickering by %dHz. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera unavailable: %sCamera was already activeCamera was woken upCan't capture new images. Unknown errorCan't delete all images.Can't delete image %s.Can't upload this image to the camera. An error has occurred.CandlelightCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCanon Auto Exposure ModeCanon CaptureCanon EOS CaptureCanon EOS Capture failed to release: Perhaps mirror up?Canon EOS Capture failed to release: Perhaps no focus?Canon EOS Capture failed to release: Perhaps no more memory on card?Canon EOS Capture failed to release: Unknown error %d, please report.Canon EOS Capture failed: %xCanon EOS Remote ReleaseCanon EOS Trigger Capture failed: 0x%xCanon EOS ViewfinderCanon EOS ZoomCanon EOS Zoom PositionCanon PowerShot series driver by Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5 additions by Ole W. Saastad Additional enhancements by Holger Klemm Stephen H. WestinCanon Shooting ModeCaptureCapture DelayCapture SettingsCapture Size ClassCapture TargetCapture Transfer ModeCapture size class changedCapture type is not supportedCardCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card name: %s Free space on card: %d kB Card not supported.Card removed during access.Cell Kind PriorityCenter Button Playback ModeCenter Button Shooting ModeCenter Button Zoom RatioCenter SpotCenter Weight AreaCenter WeightedCenter Weighted AverageCenter-WeightedCenter-spotCenter-weightedCenter-weighted Average MeteringCenter-weighted MeteringCenter-weighted averageCenter-weighted meteringCentreCentre Weight AreaCentre-spotChange Camera Mode FailedChange Pic Ctrl ItemChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorChildrenChoose Color TemperatureChoose non-CPU lens numberClean Image SensorClean SensorClean data storeClose Media SessionClose sessionClosest SubjectCloseupCloudyCloudy White Balance BiasColorColor GainColor ModeColor ModelColor SettingsColor SpaceColor TemperatureColor or Function ModeColor sketchCommand can not be cancelled.Command order error.CommanderCommunication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompatibility ModeCompressionCompression SettingConfigurationConfiguration for your FUJI cameraConnected to cameraContinuousContinuous High-speed ShootingContinuous Low SpeedContinuous Low-speed ShootingContinuous ShootingContinuous Shooting Speed HighContinuous Shooting Speed SlowContinuous Speed HighContinuous high speedContinuous low speedContinuous silentContinuous-Servo AFContrastContrast+Contrast-Copy objectCopyrightCopyright (max. 20 characters)Copyright InfoCopyright InformationCorrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not change ISO speedCould not change apertureCould not change beep modeCould not change exposure compensationCould not change flash modeCould not change focus modeCould not change image formatCould not change shooting modeCould not change shutter speedCould not change time of file '%s' in '%s' (%s).Could not change zoom levelCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file '%s' in folder '%s' (error code %i: %s).Could not delete file.Could not detect any cameraCould not detect any camera at port %sCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get information about '%s' (%s).Could not get information about '%s' in '%s' (%s).Could not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Create Wifi profileCreation date: %s, Last usage date: %sCreativeCreative PC-CAM 300 Authors: Till Adam and: Miah Gregory Creative PC-CAM600 Author: Peter Kajberg Current Mode: Camera Mode Current Mode: Playback Mode Current camera time: %04d-%02d-%02d %02d:%02d Free card memory: %d Images on card: %d Free space (Images): %d Battery level: %d %%.Currently, PTP is only implemented for USB and PTP/IP cameras currently, port type %xCustomCustom Functions ExCustom Whitebalance PC-1Custom Whitebalance PC-2Custom Whitebalance PC-3Customise Command DialsDD/MM/YYYYDEPDPOF VersionDark on lightData has been corrupted.Date & TimeDate FormatDate Time Stamp FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDate: %sDay/Month/YearDaylightDaylight White Balance BiasDebugDeepDefault gatewayDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. Delayed RemoteDeleteDelete objectDeleting image %s.Detected a "%s" aka "%s"Detected a '%s'.Development Parameters 1Development Parameters 2Development Parameters 3Device CertificateDevice IconDevice VersionDevice does not support setting object protection.Digita Johannes Erdfelt Digital Camera Layout (DCIM)Digital ZoomDigital Zoom MagnificationDigital macroDigital zoomDimera 3500 ver. %s %d/%d %d:%d. %d pictures used of approximately %d (high res) or %d (low res). Camera features: %s, %s, %s, %s. Flash is %s, is %s and is %s. Resolution is set to %s. Camera is %s powered %s. Direct PrintDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisable trusted file operationsDisconnecting camera.Disp AvDisp Av MaxDisplayDisplay Formats: Distant ViewDo not display TV menuDon't know how to handle camera->port->type value %i aka 0x%x in %s line %i.Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy to port your driver on this cam! Download program for GrandTek 98x based cameras. Originally written by Chris Byrne , and adapted for gphoto2 by Lutz Mueller .Protocol enhancements and postprocessing for Jenoptik JD350e by Michael Trawny . Bugfixes by Marcus Meissner .Download program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading %s...Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...Drive Canon DSLR AutofocusDrive Canon DSLR Manual focusDrive ModeDrive Nikon DSLR AutofocusDrive Nikon DSLR Manual focusDriverDriver SettingsDriver framework written by Lutz Mueller . This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro "itojun" Itoh . Integration of QVplay by Michael Haardt .Dual IrisDuskDusk/DawnDust Reference ErrorDynamic AF AreaDynamic-area AFDynamic-area AF with closest subject priorityEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.ESPESSIDEV StepEVF ModeEZoom Size of TeleEZoom Start PositionEconomyEffect ModeEffectsEmergencyEmptyEnable CopyrightEnable Image CommentEnable trusted file operationsEncounterEncounter BoxEncryptionEncryption key (hex)End Edit ObjectEnd trusted application sessionEnglishEnhancedErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationError waiting for ACK during initialization, retryingEvaluativeEvaluative MeteringEvent Emulate ModeEverywhereExecute predefined command with parameter values.Expected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.ExposureExposure Aperture LockExposure Base CenterExposure Base MatrixExposure Base SpotExposure Bias CompensationExposure Bracketing ProgramExposure Bracketing StepExposure CompensationExposure Compensation (EV)Exposure Delay ModeExposure Display StatusExposure ISO StepExposure Index (film speed ISO)Exposure Indicate LightupExposure Indicate StatusExposure LockExposure MeterExposure MeteringExposure Metering ModeExposure ProgramExposure Program ModeExposure StepExposure TimeExposure compensationExposure compensation changedExposure compensation: %d Exposure compensation: %s Exposure delay modeExposure level on previewExternal FlashExternal Flash AttachedExternal Flash CompensationExternal Flash ModeExternal Flash SortExternal Flash StatusExternal syncExtra highF-NumberF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d FNumber LockFV LockedFV lockFace-priority AFFactory DefaultFaithfulFar %dFar 1Far 2Far 3Far sceneFast FilesystemFast shutterFileFile '%s' could not be found in folder '%s'.File '%s/%s' does not exist.File Deletion, File Number SequencingFile Upload File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.Filetype: FlashPix (Filetype: JPEG (Fill flashFinder ISO DisplayFineFireworksFirmwareFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware VersionFirmware version: %d.%02d Firmware: %d.%d FisheyeFixedFlashFlash ChargedFlash Command A CompensationFlash Command A ModeFlash Command A ValueFlash Command B CompensationFlash Command B ModeFlash Command B ValueFlash Command ChannelFlash Command Self CompensationFlash Command Self ModeFlash Command Self ValueFlash Commander ModeFlash Commander PowerFlash CompensationFlash Exposure CompensationFlash Level LockFlash LockFlash MRepeat CountFlash MRepeat IntervalFlash MRepeat ValueFlash ModeFlash Mode Commander PowerFlash Mode Manual PowerFlash OffFlash OpenFlash Quantity CountFlash SettingFlash SettingsFlash Shutter SpeedFlash SignFlash Sync. SpeedFlash White Balance BiasFlash autoFlash mode changedFlash mode: auto, Flash mode: force, Flash mode: off Flash offFlash onFlash onlyFlash/apertureFlash/speedFlash/speed/apertureFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFlexible ProgramFlicker ReductionFlourescent TypeFlourescent-1-home-6700KFlourescent-2-desk-5000KFlourescent-3-office-4200KFluorescentFluorescent HFluorescent Lamp 1Fluorescent Lamp 2Fluorescent Lamp 3Fluorescent Lamp 4Fluorescent Lamp 5Fluorescent White Balance BiasFluorescent-1-home-6700KFluorescent-2-desk-5000KFluorescent-3-office-4200KFluorescent: Cold WhiteFluorescent: Day WhiteFluorescent: DaylightFluorescent: Warm WhiteFocal LengthFocal Length DenominatorFocal Length MaximumFocal Length MinimumFocal Length TeleFocal Length WideFocusFocus Area WrapFocus Area ZoneFocus AreasFocus DistanceFocus LockFocus Metering ModeFocus ModeFocus Mode 2Focus Point BrightFocus mode changedFocus positionFocusing PointFocusing Point on Center Only, AutoFocusing Point on Center Only, ManualFocusing error.Folder '%s' only contains %i files, but you requested a file with number %i.FoliageFoodFor bulb capture to work, make sure the mode dial is switched to 'M' and set 'shutterspeed' to 'bulb'.For cameras with S&Q Technologies chip. Should work with gtkam. Photos will be saved in PPM format. All known S&Q cameras have two resolution settings. What those are, will depend on your particular camera. A few of these cameras allow deletion of all photos. Most do not. Uploading of data to the camera is not supported. The photo compression mode found on many of the S&Q cameras is supported, to some extent. If present on the camera, video clips are seen as subfolders. Gtkam will download these separately. When clips are present on the camera, there is a little triangle before the name of the camera. If no folders are listed, click on the little triangle to make them appear. Click on a folder to enter it and see the frames in it, or to download them. The frames will be downloaded as separate photos, with special names which specify from which clip they came. Thus, you may freely choose to save clip frames in separate directories. or not. For cameras with insides from S&Q Technologies, which have the USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051, 0x9052, or 0x913D. Photos are saved in PPM format. Some of these cameras allow software deletion of all photos. Others do not. No supported camera can do capture-image. All can do capture-preview (image captured and sent to computer). If delete-all does work for your camera, then capture-preview will have the side-effect that it also deletes what is on the camera. File uploading is not supported for these cameras. Also, none of the supported cameras allow deletion of individual photos by use of a software command. ForceForce Flash Format card and set album name.Format compact flashFormat storageFrames Left: %i Frames Taken : %4d Frames Taken: %i Framing gridFrenchFriendly Device NameFront-curtain syncFullFull ImageFull ManualFull View File FormatFull-time-servo AFFunction Button 2Functional ModeFunctional Mode: 0x%04x GeneralGeneric FlatGeneric HierarchicalGermanGet Next Data BlockGet Partial Object (64bit Offset)Get Proximity ChallengeGet Registration ResponseGet WMDRM-ND License ResponseGet WMDRM-PD Application ResponseGet device property descriptionGet device property valueGet interdependent property descriptionGet license stateGet meter challengeGet meter responseGet number of objectsGet objectGet object handlesGet object infoGet object properties supportedGet object property descriptionGet object property listGet object property valueGet object referencesGet partial objectGet secure time challengeGet secure time responseGet storage IDsGet storage infoGet sync listGet thumbnailGet transferable playlist typesGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.Gray scaleGrayscaleGreenGroup DynamicGroup PTN TypeHDR High DynamicHDR ModeHDR SmoothingHardware ErrorHi 1Hi 2HighHigh (1152 x 872)High (good quality)High 2High ISO Noise ReductionHigh ISO noise reductionHigh controlHigh keyHigh sensitivityHigh-Speed ShutterHighlight active focus pointHoldHost Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?Hue AdjustmentHyPictI/O in progressIDIP address (empty for DHCP)ISO AutoISO Auto Hi LimitISO Auto High LimitISO SpeedISO speed changedIconsIdleIllegal parameter.Illum SettingImageImage %s is delete protected.Image & SoundImage AdjustmentImage CommentImage Comment EnableImage Comment StringImage FormatImage Format CFImage Format Ext HDImage Format SDImage ModeImage QualityImage ReviewImage RotationImage Rotation FlagImage SettingsImage SizeImage StabilizationImage format changedImage height: %d Image number not valid.Image protected.Image size: %d Image type %d is not supported by this camera !Image type %d not supportedImage type is not supportedImage width: %d Img Conf TimeImmediateIn useIncandescentIndicator DisplayIndoorInfinityInfinity/Fish-eyeInfo Disp SettingInfo Display Error StatusInformationInformation on STV0680-based camera: Information regarding cameras with ID 0x2770:0x9153. We do not recommend the use of a GUI program to access this camera, unless you are just having fun or trying to see if you can blow a fuse. For production use, try gphoto2 -P from the command line. Note: it is not possible to download video clips. Initial camera response '%c' unrecognizedInitializing CameraInitiate captureInitiate open captureInternal RAMInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal error looking for camlibs. (path names too long?)Internal memory: %d MB total, %d MB free. InvalidInvalid ISO speed settingInvalid StatusInvalid Value ( %d ) Invalid aperture settingInvalid beep mode settingInvalid capture size class settingInvalid exposure compensation settingInvalid flash mode settingInvalid focus mode settingInvalid image format settingInvalid shooting mode settingInvalid shutter speed settingIris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JD11 ConfigurationJPEGJPEG BasicJPEG Compression PolicyJPEG FineJPEG NormJPEG NormalJapaneseKeep filename on uploadKids and petsKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BacklightLCD Backlight and Info DisplayLCD BrightnessLCD IlluminationLCD ModeLCD Off TimeLED ModeLG GSM generic driver Guillaume Bedot LandscapeLanguageLargan driver Hubert Figuiere LargeLarge Fine JPEGLarge Normal JPEGLeftLens Focal Length (Non CPU)Lens IDLens Maximum Aperture (Non CPU)Lens ModeLens NameLens SortLens TypeLens direction does not match flash light Lens is not connected LightLight MeterLight on darkLight too dark.List Wifi profilesList all filesListing files in '%s'...Listing folders in '%s'...Lithium IonLive View AF AreaLive View AF FocusLive View AF ModeLive View Drive ModeLive View Image Zoom RatioLive View ModeLive View Prohibit ConditionLive View StatusLoading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!LockLogitech Clicksmart 310 driver Theodore Kilgore Long Exp Noise ReductionLong Exposure Noise ReductionLong shutterLooking for camera ...Looks like a modem, not a cameraLosslessLossyLowLow (576 x 436)Low (best quality)Low 2Low LightLow Speed SynchronizationLow contrastLow keyLow sensitivityLow sharpeningLow-Speed ShutterLow-speed shutter function not availableLower case letters in %s not allowed.MM-DEPM3U PlaylistM4AMF (fixed)MF (selection)MHT Compiled HTML DocumentMM/DD/YYYYMPL PlaylistMTR > UnderM_DEPMacroManagedManualManual 2Manual FocusManual Mode BracketingManual Movie SettingManual Set Lens NumberManual focusManufacturer: %s Mars MR97310 camera library Theodore Kilgore Mars MR97310 camera. There is %i photo in it. Mars MR97310 camera. There are %i photos in it. MatrixMatrix meteringMatthew G. Martin Based on fujiplay by Thierry Bousch Max. Aperture at Max. Focal LengthMax. Aperture at Min. Focal LengthMax. Focal LengthMaximalMaximum Aperture at Focal Length MaximumMaximum Aperture at Focal Length MinimumMaximum ShotsMaximum continuous releaseMaximum number of Images: %d Media CardMedia Card GroupMedia CastMediumMedium (1152 x 872)Medium (better quality)Medium 1Medium 2Medium 3Medium Fine JPEGMedium HighMedium LowMedium Normal JPEGMedium highMedium sensitivityMemory Left: %i bytes Memory cardMemory card status (%d): %s Memory in camera: %d Mbit. Menu Bank Name AMenu Bank Name BMenu Bank Name CMenu Bank Name DMenus and PlaybackMetadata only supported for MTP devices.Meter Off TimeMetering ModeMf Drive Step EndMf Drive Step InsufficiencyMicrophoneMicrophone offMicrosoft Excel Spreadsheet (.xls)Microsoft Powerpoint (.ppt)Microsoft Word DocumentMin. Focal LengthMiniature effectMinimalMinimum Shutter SpeedMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Mirror UpMirror Up SequenceMisc exposure/lens settingsMissing NumberMl Spot PositionMlSpotPosAfLinkMlSpotPosCenterModel IDModel: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Model: %s Capacity: %i Mb Power: %s Auto Off Time: %i min Mode: %s Images: %i/%i Date display: %s Date and Time: %s Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s Modeling FlashModelling FlashModerateMonitorMonitor Off DelayMonochromeMonth/Day/YearMove objectMovie CaptureMovie Card SlotMovie MicrophoneMovie QualityMovie Screen SizeMovie SoundMovie VoiceMulti Frame Noise ReductionMulti SpotMulti spotMulti-Spot MeteringMulti-spotMultiple Focusing Points (Center)Multiple Focusing Points (Left)Multiple Focusing Points (No Specification), ManualMultiple Focusing Points (Right)Multiple Focusing Points, AutoMultiselectorMup Mirror upMustek MDC-800 gPhoto2 Library Henning Zabel Ported to gphoto2 by Marcus Meissner Supports Serial and USB Protocols.MyColorsNEF (Raw)NEF+BasicNEF+FineNEF+NormalNIKON Auto Bracketing SetNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName '%s' (%li characters) too long, maximum 30 characters are allowed.Name PrefixName to set on card when formatting.Near %dNear 1Near 2Near 3Network maskNeutralNextNickel cadmiumNickel hydrideNight LandscapeNight PortraitNight ViewNight VisionNight landscapeNight sceneNight snapshotNikon Capture 1Nikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. Nikon Exposure TimeNikon Flash ModeNikon ViewfinderNikon autofocus drive did not focus.Nikon changeafarea works only in LiveView mode.Nikon manual focus at limit.Nikon manual focus stepping too small.Nikon manual focus works only in LiveView mode.NoNo CF Card ReleaseNo Compact Flash Card detected No Dual IrisNo EXIF data available for %s.No File Deletion, No File Upload No FlashNo Open Capture, No Power LightNo Resolution SwitchNo SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card in camera. No card present.No memory card presentNo reason availableNo response from cameraNo space available to capture new images. You must delete some images.No space left on card.No vendor specific capture NoneNone selectedNormalNormal Normal AF OnNormal-area AFNot FullNot enough free spaceNot enough memory available on the memory cardNot in LiveviewNot in fill modeNot readyNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOS error in camera communicationOffOfficeOlympus 750 Ultra Zoom: (1) Olympus 750UZ has a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both the 'OK' and 'quickview' buttons until the camera control menu appears. Set it to control mode. (2) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Olympus E XML Capture Olympus wrapped XML support is currently only available with libxml2 support built in.OnOn (image review excluded)On + Red Eye SuppressionOn screen tipsOn, red-eye reductionOne ShotOne-push AutomaticOnly root folder is supported - you requested a file listing for folder '%s'.Open Capture, Open Media SessionOpen sessionOperation ModeOperation cancelledOptimal qualityOptimize ImageOrientationOtherOther PTP Device PropertiesOther SettingsOther command executing.Out of FocusOut of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner NameOwner name changedPPALPCPLS PlaylistPTP Access DeniedPTP Capture Already TerminatedPTP Device BusyPTP Device Prop Not SupportedPTP General ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Property 0x%04xPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Standard Version: %d.%d PTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP TimeoutPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePTP VersionPTP2 driver (c) 2001-2005 by Mariusz Woloszyn . (c) 2003-%d by Marcus Meissner . This driver supports cameras that support PTP or PictBridge(tm), and Media Players that support the Media Transfer Protocol (MTP). Enjoy!Packet was rejected by camera. Please contact %s.Pan FocusPanFocusPanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic DC1580 gPhoto2 library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic introduced image capturing technology called PHOTOSHOT for the first time, in this series of Palmcorders. Images are stored in JPEG format on an internal flashcard and can be transferred to a computer through the built-in serial port. Images are saved in one of two resolutions; NORMAL is 320x240 and FINE is 640x480. The CCD device which captures the images from the lens is only 300K and thus produces only low quality pictures.Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk Parameter 1Parameter 2Parameter 3Parameter SetPartialPartial MeteringParty/IndoorPath not absolutePerceived Device TypePersistent SettingsPet PortraitPhoto EffectPhoto Info. PlaybackPhoto in moviePhotos on camera: %d Picture Frame ConfigurationPicture SettingsPicture StylePicturesPictures in camera: %d PlayPlay modePlaybackPlayback Container IndexPlayback ObjectPlayback PositionPlayback RatePlaysForSure IDPort speedPortraitPowerPower SavingPower WindPower down devicePre-Capture DelayPresetPreset Custom 1Preset Custom 2Preset Custom 3Preset Custom 4Preset Custom 5Press 1Press 2Press 3Press FullPress HalfPreviewPreview ButtonPreview Button 2Preview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProcess WFC ObjectProduct ID: %02x%02x Profile nameProhibit Flash QualityQuick ResponseQuick Response RemoteQuick Review TimeQuiet ReleaseRAWRAW + JPEG BasicRAW + JPEG FineRAW + JPEG NormalRAW + Large Fine JPEGRAW + Large Normal JPEGRAW + Medium Fine JPEGRAW + Medium Normal JPEGRAW + Small Fine JPEGRAW + Small Normal JPEGRAW 2RAW+JPEGRGB GainRTC Status: %d Raw Bit ModeRaw CompressionRead Only with Object deletionRead-OnlyRead-WriteRead-only file attributes like width and height can not be changed.ReadyRear Curtain Sync + Slow SyncRear-curtain syncRear-curtain with slow syncReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRecording DestinationRecording MediaRedRed Eye SuppressionRed eye flashRed-eye ReductionRed-eye Reduction + Slow SyncRed-eye automaticRed-eye fillRed-eye fill flashRed-eye reductionRed-eye reduction with slow syncReleaseRelease + FocusRelease 1Release 2Release 3Release FullRelease HalfRelease ModeRelease without CF cardRemoteRemote API VersionRemote Mirror UpRemote ModeRemote TimeoutRemovable RAM (memory card)Removable ROMRepeatingReport Acquired ItemsReport Added/Deleted ItemsRequested information about picture %i (= 0x%x), but got information about picture %i backReset Bank 0Reset Menu BankReset deviceReset device property valueReset focus point to centerResetting protocol...ResolutionResolution SwitchResolution plus SizeReverse Command DialReverse IndicatorsRevocation InfoRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. RightRotation AngleRotation FlagRotation SceneSD Card ID: %s SD memory: %d MB total, %d MB free. SDRAMSDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d SDRamST2205 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.ST2205 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Samsung PlaylistSaturationSceneScene ModeSectionSecure TimeSelective colorSelf TimeSelf TimerSelf Timer (next picture only)Self Timer DelaySelf Timer Shot NumberSelf Timer TimeSelf test deviceSelf-timerSelftimer 10sSelftimer 2sSelftimer DelaySend Partial ObjectSend Proximity ResponseSend Registration RequestSend WMDRM-ND License RequestSend WMDRM-PD Application RequestSend WMDRM-PD CommandSend WMDRM-PD RequestSend meter challenge querySend objectSend object infoSend object property listSending data...SensitivitySensor ID: %d.%d SepiaSequence 9Serial NumberSerial Number: %s Session Initiator InfoSession-persistent SettingsSet Current Time PositionSet Nikon Autofocus areaSet Nikon Control ModeSet Property Not SupportedSet clock in cameraSet device property valueSet license responseSet object property listSet object property valueSet object protectionSet object referencesSetting 4Setting 5Setting 6Setting 7ShadeShadowShady White Balance BiasShall the camera beep when taking a picture?SharpSharpeningSharperSharpnessShooting BankShooting Bank Name AShooting Bank Name BShooting Bank Name CShooting Bank Name DShooting ModeShooting SpeedShooting modeShooting mode changedShot SettingsShutdownShutter CounterShutter SpeedShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed 2Shutter Speed BulbShutter Speed microseconds (0 auto)Shutter speed changedShutter/AF-ONSiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SilhouetteSingleSingle AreaSingle ShotSingle frameSingle silentSingle-Frame ShootingSingle-Servo AFSingle-area AFSingle-servo AFSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Size PrioritySize Quality ModeSize of Input Data to CameraSize of Output Data from CameraSkip to next position in playlistSkylightSlide Show IntervalSlot 2 Save ModeSlowSlow Shutter SettingSlow SyncSlow shutterSlow syncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SmallSmall Fine JPEGSmall Normal JPEGSmoothSnowSoftSofterSoftware Rev.: %s Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to the gphoto developer mailing list (in English) Some notes about Olympus cameras (and others?): (1) Camera Configuration: A value of 0 will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch to this mode, turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you cannot use the camera's buttons. If you end up in this state, you should reconnect the camera to the PC and switch LCD to 'Off'.Some notes about Olympus cameras: (1) Camera Configuration: A zero value will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Sonix camera library Theodore Kilgore Sonix camera. There is %i photo in it. Sonix camera. There are %i photos in it. Sony CaptureSony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners Sorry, initializing your camera did not work. Please report this.Sorry, the property '%s' / 0x%04x is currently ready-only.Sorry, your Canon camera does not support Canon Capture initiationSorry, your Canon camera does not support Canon EOS CaptureSorry, your Canon camera does not support Canon Viewfinder modeSorry, your Canon camera does not support Canon captureSorry, your Nikon camera does not seem to return a JPEG image in LiveView modeSorry, your Nikon camera does not support LiveView modeSorry, your camera does not support Nikon captureSorry, your camera does not support generic captureSoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSportsSpotSpot MeteringSpot Metering Interlocked with AF FrameSpot Metering ModeSpot meteringSpot metering interlocked with AF frameSpot-AFStandardStandard Development ParametersStart movie recordingStartupStartup and ShutdownStep #2 of initialization failed! (returned %i bytes, expected %i). Camera not operationalStep #2 of initialization failed: ("%s" on read of %i). Camera not operationalStep #3 of initialization failed! (returned %i, expected %i). Camera not operationalStep #3 of initialization failed: "%s" on read of %i. Camera not operationalStep #3 of initialization failed: "%s" on write of %i. Camera not operationalStep #4 failed (returned %i, expected %i). Camera not operationalStep #4 failed: "%s" on read of %i. Camera not operationalStill Capture ModeStrobe error.Subject-tracking AFSummary for Mustek MDC800: SunsetSuper macroSuperFineSupported MTP Object Properties: Supported Thumb SizeSwitching Camera OffSynchronization PartnerSynchronize camera date and time with PCSynchronize frame data and time with PCSystem error.TFTTFT + PCTIFF (RGB)TTLTVTV Lock SettingTV Output FormatTerminate open captureTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera could not be contacted. Please make sure it is connected to the computer and turned on.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support getting storage informationThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The requested port type (%i) is not supported by this driver.There are still files in folder '%s/%s' that you are trying to remove.There are still subfolders in folder '%s/%s' that you are trying to remove.There are two resolution settings, 352x288 and 176x144. Photo data is in JPEG format when downloaded and thus has no predetermined size. Therefore, the advertised maximum number of photos the camera can hold must be understood as an approximation. All gphoto2 options will work, except for the following which the hardware will not support: Deletion of individual or selected photos (gphoto2 -d) Capture (gphoto2 --capture or --capture-image) However, capture is possible using the webcam interface, supported by the spca50x kernel module. GUI access using gtkam has been tested, and works. However, the camera does not produce separate thumbnails. Since the images are in any event already small and of low resolution, the driver merely downloads the actual images to use as thumbnails. The camera can shoot in 'video clip' mode. The resulting frames are saved here as a succession of still photos. The user can animate them using (for example) ImageMagick's 'animate' function. For more details on the camera's functions, please consult libgphoto2/camlibs/clicksmart310/README.clicksmart310. There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.There is space for another %d low compressed %d medium compressed or %d high compressed pictures This camera can not capture previews.This camera can not capture.This camera can not trigger capture.This camera contains a Jeilin JL2005%c chipset. The number of photos in it is %i. This camera contains a Jeilin JL2005A chipset. The number of photos in it is %i. This camera does not provide a manual.This camera does not provide any configuration options.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This driver supports cameras with Jeilin JL2005B or C or D chip These cameras do not support deletion of photos, nor uploading of data. If present on the camera, video clip frames are downloaded as consecutive still photos. For more details please consult libgphoto2/camlibs/README.jl2005c This driver supports cameras with Jeilin jl2005a chip These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README.jl2005a This driver supports cameras with Mars MR97310 chip (and direct equivalents ??Pixart PACx07??). These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. Photo data processing for Argus QuickClix is NOT SUPPORTED. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README. This driver supports some cameras that use the Sonix sn9c2028 chip. The following operations are supported: - thumbnails for a GUI frontend - full images in PPM format - delete all images - delete last image (not all of the Sonix cameras can do this) - image capture to camera ( ditto ) If present on the camera, video clip frames are downloaded as consecutive still photos or as AVI files, depending on the model. Thumbnails for AVIs are still photos made from the first frame. A single image cannot be deleted unless it is the last one. This is the driver for Canon PowerShot, Digital IXUS, IXY Digital, and EOS Digital cameras in their native (sometimes called "normal") mode. It also supports a small number of Canon digital camcorders with still image capability. It includes code for communicating over a serial port or USB connection, but not (yet) over IEEE 1394 (Firewire). It is designed to work with over 70 models as old as the PowerShot A5 and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of 2005. It has not been verified against the EOS 1D or EOS 1Ds. For the A50, using 115200 bps may effectively be slower than using 57600 If you experience a lot of serial transmission errors, try to have your computer as idle as possible (i.e. no disk activity) This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.This preview doesn't exist.ThumbnailThumbnail height: %d Thumbnail size: %d Thumbnail width: %d Time formatTime: %a, %d %b %Y %T TimelapseTimelapse IntervalTimelapse NumberTimeout even after 2 retries. Please contact %s.TimerTimer (Single) ShootingTimer + RemoteTimer 10 secTimer 2 secTone CompensationToo brightToo darkToo many retries failed.TopTopfield TF5000PVR Marcus Meissner Library to download / upload files from a Topfield PVR. Ported from puppy (c) Peter Urbanec Toshiba David Hogue Toshiba pdr-m11 driver. Total flashes fired: %d Total pictures captured: %d, Flashes fired: %d Total pictures taken: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Truncate ObjectTrying to contact camera...Tune Colour TemperatureTune Preset 0Tune Preset 1Tune Preset 2Tune Preset 3Tune Preset 4TungstenTungsten White Balance BiasTurbo modeTvType of SlideshowUI LanguageUI LockUILockTypeUNIX TimeUSB 1.1USB 2.0USB SpeedUnassignedUndefinedUndefined AudioUndefined Calendar ItemUndefined CollectionUndefined ContactUndefined DocumentUndefined MessageUndefined PTP PropertyUndefined VideoUndefined Windows ExecutableUnder > MTRUnderwaterUnknownUnknown %dUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown flash mode %d, Unknown modelUnknown model "%s"Unknown valueUnknown value %04dUnknown value %04xUnknown value 0x%04xUnknown zoom mode %d Unknown(%04x)Unknown: 0x%04x Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. UnusedUpdate device firmwareUpload URLUpload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...Upper 1Upper 2User canceled downloadUser defined 1User defined 2User defined 3Vendor ExtensionVendor Extension Description: %s Vendor Extension ID: 0x%x (%d.%d) Vendor ID: %02x%02x Version: Version: %s Vertical AF OnVideo ModeVideo OUTVideo OutViewfinder GridViewfinder Grid DisplayViewfinder virtual horizontVignette ControlVividVolatile SettingsVolume LevelWB bracketingWEP 128-bitWEP 64-bitWIFI ESSIDWIFI channelWIFI profilesWPL PlaylistWaiting for completion...Waiting...Warning DisplayWarning Level 0Warning Level 1Warning StatusWarning in canon_usb_set_file_attributes: canon_usb_dialogue returned error status 0x%08x from cameraWe expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite Balance Bias Preset 0White Balance Bias Preset 1White Balance Bias Preset 2White Balance Bias Preset 3White Balance Bias Preset 4White Balance Bias Preset NrWhite Balance Bracket ProgramWhite Balance Bracket StepWhite Balance Colour TemperatureWhite Balance Preset Name 0White Balance Preset Name 1White Balance Preset Name 2White Balance Preset Name 3White Balance Preset Name 4White Balance Preset NumberWhite Balance Preset Value 0White Balance Preset Value 1White Balance Preset Value 2White Balance Preset Value 3White Balance Preset Value 4White BoardWhite balanceWhite boardWhite levelWhiteBalanceWhiteBalance Adjust AWhiteBalance Adjust BWhiteBalance X AWhiteBalance X BWhitebalance Reset ErrorWideWide-area AFWindows Image FormatWriteWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.XMLDocumentYYYY/MM/DDYear/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.You have to set the port prior to initialization of the camera.You must be in record mode to capture images.You need to specify a folder starting with /store_xxxxxxxxx/Your Logitech Clicksmart 310 has %i picture in it. Your Logitech Clicksmart 310 has %i pictures in it. Your USB camera has a S&Q chipset. The total number of pictures taken is %i Some of these could be clips containing several frames Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i Your USB camera is an iClick 5X. The total number of pictures taken is %i Your USB camera seems to be a LG GSM. Firmware: %s Firmware Version: %s Your USB picture frame has a AX203 chipset Your USB picture frame has a ST2205 chipset Your camera only supports deleting the last file on the camera. In this case, this is file '%s'.Zone Focus (Close)Zone Focus (Close-up)Zone Focus (Far)Zone Focus (Medium)Zone Focus (Reserved 1)Zone Focus (Reserved 2)Zone Focus (Reserved 3)Zone Focus (Reserved 4)Zone Focus (Very Close)ZoomZoom (in millimeters)Zoom level changedZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autoauto + red eye suppressionbatteryblack & whitebulbcamera inactive for > 9 seconds, re-initing. cannot be queried. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_int_capture_image: initial canon_usb_list_all_dirs() failed with status %licanon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: Reached end of packet while examining the first direntcanon_int_list_directory: truncated directory entry encounteredcanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Initial dirent packet too short (only %i bytes)canon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_body_id: Unexpected data length returned (%i bytes, expected %i)canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)canon_usb_lock_keys: Unexpected length returned from "lock keys" function (%i bytes, expected %i)canon_usb_set_file_attributes: canon_usb_dialogue failedcanon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)colorcoolshot library vcould not change owner namecould not set timeeconomyexternallyfill infinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)high compression, hp215 Marcus Meissner Driver to access the HP Photosmart 215 camera. Merged from the standalone hp215 program. This driver allows download of images and previews, and deletion of images. iClick 5X driver Theodore Kilgore iTTLin fill modeinfiniteinternallyjamcam library vjl2005a camera library Theodore Kilgore jl2005bcd camera library Theodore Kilgore lock keys failed.losslesslow (320x240)low compression, mRAWmRAW + Large Fine JPEGmRAW + Large Normal JPEGmRAW + Medium Fine JPEGmRAW + Medium Normal JPEGmRAW + Small Fine JPEGmRAW + Small Normal JPEGmedium compression, menuno status reported.nonenormalnot available: %soffonon + red eye suppressionon batterypccam600 init: Unexpected error: gp_port_read returned %d instead of %dpccam600_close: return value was %d instead of %dpccam600_get_file:got index %d but expected index > %dpccam600_init: Expected %d blocks got %dpccam600_init: Expected > %d blocks got %dplaypower OKpower badread onlyreadwritereadyrecordrecursive calls are not supported by the sierra driver! Please contact %s.red eye flash off. red eye flash on. red eye suppressionsRAWsRAW + Large Fine JPEGsRAW + Large Normal JPEGsRAW + Medium Fine JPEGsRAW + Medium Normal JPEGsRAW + Small Fine JPEGsRAW + Small Normal JPEGsRGBsRGB (nature)sRGB (portrait)sierra SPARClite library Scott Fritzinger Support for sierra-based digital cameras including Olympus, Nikon, Epson, and Pentax. Thanks to Data Engines (www.dataengines.com) for the use of their Olympus C-3030Z for USB support implementation.spca50x library vsq905 generic driver Theodore Kilgore sq905C generic driver Theodore Kilgore standardsuperfinesx330z is USB onlytime setunable to guess initial CRC value undefinedunexpected datatype %iunknown (0x%02x)unknown compression %d, unknown resolution %d) vCalendar1vCalendar2vCard2vCard3warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2 2.5.4 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-03-27 11:56+0100 Last-Translator: Mogens Jaeger Language-Team: Danish Language: da MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Poedit-Language: Danish X-Poedit-Country: DENMARK X-Generator: Lokalize 1.5 Tilgangskapacitet: %s Canon Wifi understøttelse Fil hjemhentning, Filsystemtype: %s Ledig plads (byte): %llu (%lu MB) Ledig plads (billeder): %d Almen billedoptagning, Maksimal kapacitet: %llu (%lu MB) Nikon Wifi understøttelse Ingen billedoptagning, Lagringstype: %s Beskrivelse af lagerenheder: %s Volumen mærkat: %s Kamera identifikation: Model: %s Ejer: %s Strøm status: %s Flashkort information: %s Tid: %s Optageformater: Enhedens egenskaber: Enhedsengenskabs-sammendrag: Sammendrag for lagerenheder: Drev %s %11s byte total %11s byte til rÃ¥dighed Serienummer: %s Version: %s (batteri er %d%% fuldt) PTP fejl %04x ved forespørgsel Total hukommelse er %8d byte. Fri hukommelse er %8d byte. Filtælling: %d fejl %x ved forespørgsel. ikke læsning ud. %.0f mm%.1f stop%0.4fs%d %d/%d%d mange-rammers støjreduktion%d mm%d/%d%f%i (ukendt)Modtog %i byte i et ukendt billedformat. Skriv til %s og bed om hjælp.%i billeder kunne ikke slettes, da de er beskyttet%lld (ukendt)%s (vært tid %s%i sekunder)%sCanon EOS-lukkerknap%sNikon-optagelse 2%sNikon-optagelse 3(Traveler) SX330z bibliotek (og andre Aldi-cams). Endda andre fremstillere, som Jenoptik, Skanhex, Maginon burde virke. Send bugreporter og kommentarer. Dominik Kuhlen * Billeduheld eller problemer med kommunikation skyldes ofte ringe batteristand. * Billeder optaget eksternt til kameraet, lagres i midlertidig RAM, og ikke pÃ¥ hukommelses kortet. * Eksponeringskontrol ved optagning af billeder, kan konfigureres manuelt, eller sat til automatisk tilstand. * Billedkvaliteten er for øjeblikket lavere end det er muligt. *UKENDT*+NEF (rÃ¥)-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 (Kort)1 EV1 fps1 min1 minut1 trin hastighed/blænde1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/250s (Auto FP)1/25s1/2s1/301/30s1/3200s1/320s1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 min10 minutter10 mm10 sekunder100%10s11 fps1152 x 86412 mm1280 x 96013s1515 min15 minutter15s16 sekunder16:91s1x22 EV2 fps2 sekunder2.02.0 m2.5s2.5x20 sekunder20s21 points25%25s29 mm2s2x3 (Normal)3 EV3 fps3030 minutter30 sekunder30s34 mm3:23s3x44 fps4 sekunder41 mm4s4x5 (Lang)5 fps5 min5 minutter5 sekunder50 Hz50%51 mm51 points51 points (3D)58 mm5s5x6 fps6 mm6 sekunder60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 sekunder8s8x9 fps9 points9xA-DEPACAC strømStrømforsyningStrømforsyning er tilsluttet. Strømforsyning er ikke tilsluttet. ADL bracketingAE & blitzAE lÃ¥sKun AE lÃ¥sAE lÃ¥stAF lÃ¥s (hold)AE lÃ¥s (nulstil ved afbrydelse)AE lÃ¥s (hold)Kun AE lÃ¥sKun AEAE-L/AF-L tilstandAE-lÃ¥sAE/AF lÃ¥sAE/AF lÃ¥sAEAF lÃ¥s knap 2AEB eksponeringskompensationAF aktiveringAF omrÃ¥debelysningAF omrÃ¥de punktAF hjælpelysAF bippetilstandAF-afstandAF LCD-topindstilling 2AF lÃ¥s holdAF lÃ¥s tilKun AF lÃ¥sKun AF lÃ¥sAF lÃ¥stAF tilstandAF tilAF til-knapKun AF lÃ¥sAF-AAF-CAF-C tilstandsprioritetAF-ONAF-SAF-S tilstandsprioriteringAF11AF51AI fokusAI servoASIC revision: %d.%d ASX afspilningslisteAUTOAVAV lÃ¥s indstillingAV maksAV Ã¥benAX203 USB billedramme driver Hans de Goede Denne enhed muliggør download, upload og sletning af billeder fra billedrammen.AX203 baserede billedrammer har forskellige opløsninger. Disse enhederes gphoto driver muliggør download, oplægning og sletning af billeder fra billedrammen.A_DEPOm Konica Q-M150: Dette kamera tillader ingen udefrakommende ændringer. I konfigurationen kan du se, hvordan kameraet er sat op, men du kan ikke ændre noget. Hvis du har problemer med driveren, send en e-mail til dens forfattere. Abstrakt lydalbumAbstrakt lyd afspilningslisteAbstrakt lyd-video afspilningslisteAbstrakt kalenderpunktAbstrakt nummereret produktionAbstrakt kontaktAbstrakt kontaktgruppeAbstrakt dokumentAbstrakt billedalbumAbstrakt MediacastAbstrakt beskedAbstrakt beskedmappeAbstrakt multimediealbumAbstrakt videoalbumAbstrakt video afspilningslisteTilgangstilstandTilgÃ¥ toppunkt i MY MENUBevægelseAktiv AF-sensorAktiv D-belysningActive Pic Ctrl ItemAd hocAdc65 Benjamin MoosAdobeRGBAvanceret overførsel afbrudtAlbumnavnAlkalium manganeseDer opstod en fejl i IO-biblioteket ('%s'): %sEn ukendt fejl opstod. Kontakt %s.Vinkel niveauAnti-rødøjeAnti-rødøje udfyldningHvor som helstAox almen driver Theodore Kilgore BlændeÃ¥bningBlændeÃ¥bningsindstillingBlændeÃ¥bningsindstillingerBlændeÃ¥bning ændretProgramtilstandProgramtilstand 0Programtilstand 1KunstnerKunstnernavnSideforholdTilknyt funktionsknapTilknytningsfunktion. KnapTilknyt smugkig-knapHjælpelysAudible.com CodecAutomatiskAutomatisk + rødøje-reduktionAuto blændeÃ¥bningAutomatisk sammensætning udvælgelseAuto DX CropAutomatisk forvrængningskontrolAutoeksponerings bracketing tællingAutoeksponerings-bracketingAutomatisk FPAuto-fokus omrÃ¥deAuto-fokuseringstilstand 2Automatisk ISOAuto ISO mange-rammers støjreduktionAuto ISO P/A/DVP opsætningAutomatisk mÃ¥ler slukket tidAutosluk (felt)(i sekunder)Autosluk (vært)(i sekunder)Automatisk sluk informationAutomatisk sluk menuAutomatisk sluk billedeAutomatisk sluk tidAutomatisk sluk tidtagerAutomatisk slukAutomatisk sluk efter (minutter)Automatisk Langsom SynkroniseringAutomatisk hvidbalance-korrektionAutomatisk eksponeringslÃ¥sAuto-fokus: AI fokusAutofokus: AI servoAuto-fokus: enkeltbilledeAutomatisk følsomhedAutomatisk, rødøje-reduktionAuto-fokuseringstilstandAutofokusfejl.AutomatiskAutomatisk Automatisk (ingen blitz)Automatisk blitzAutomatisk makroAutomatisk makro (tæt-pÃ¥)Automatisk rødøje-reduktionAutomatisk eksponeringsjustering ved smugkigningAutomatisk blitzAutomatisk blitz ved optagningEfterÃ¥rsfarverAvAv maksAv maks ApexAv Ã¥benAv Ã¥ben ApexOptagelser tilgængeligtLedig hukommelse: GennemsnitGennemsnitlige filstørrelserCentervægtet mÃ¥lingS/HS/HS/H KontrastS/H udfylder effektS/H indstillingstypeS/H SkarphedForkert EOTForkerte tegn (0x%x, 0x%x). Kontakt %s.Forkert checksum - fik 0x%02x, forventede 0x%02x.Forkerte data - fik 0x%02x, forventede 0x%02x eller 0x%02x.Forkerte data - fik 0x%02x, forventede 0x%02x.Forkert eksponering (givetvis for lidt lys)Forkert værdi for kortstatus %dForkert værdi for objektivstatus %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Omvendt beregning af billeddata ved: Jeff Laing Implementeret ved brug af dokumenter fundet pÃ¥ nettet. Tilladelse givet af Vision.Batteristand lav.Batterier er O.k.BatteriBattericelle typeBatteriniveauBatteriniveau: %s Antal af billeder: %d Minimum kapacitet tilbage: %d Optaget: %s Opladning blitz: %s Objektivstatus: Batteriliv: %i Batteri tilstandBatteritypeBatteri tømt, kamera slukket.Batteri niveau: %.1f volt. Revision: %08x.Batteri status: %s, strømforsyning: %s StrandStrand/SneBippeBippetilstandBippe-tilstand ændretBippelyd fraBippelyd tilBegynd redigering af objektBedstBithastighed %ld er ikke understøttet.Sort/hvidSort/hvidSort tavleSort/hvidSort tavleSort/hvidBlinkBlomsterflorBlÃ¥BundBracket tilstandSammensat ordenSammensat sætBracketingBracketing C 0.3 skridtBracketing C 0.7 skridtBracketing C 1.0 skridtBracketing C 2.0 skridtBracketing C 3.0 skridtBracketing tilBracketing rammer og skridtBracketing S 0.3 skridtBracketing S 0.7 skridtBracketing S 1.0 skridtBracketing S 2.0 skridtBracketing S 3.0 skridtBracketing WB HiBracketing WB LoBracketing-burstLyst+Lyst-LyshedLyshed+Lyshed-Lyshed/kontrastIndbygget ramIndbygget romBulbPæreeksponeringstidBulb tilstandSerieSerie intervalSerie antalOptagetKnapper og drejeskiverCCD nummerCCD-serienummerCHDK ScriptCRWCSM menuKameraKamerahandlingerKamerahus idKonfiguration af kameraKameraets dato og tidKamera ID: %s Kamerabibliotek for Kodak DC215 Zoom-kamera. Michael Koltan Kamera producentKameratilstandKamera tilstand ikke justering FTalKameramodelKameramodel: %s Kamera O.k.KameraorienteringKamera uddataKameraejerKameraindstillingerKamera status informationKonfiguration af kamera og driverKameraet bruger tilsyneladende ikke CF-kort Desværre understøtter vi ikke det p.t. ;-( Kameraet optaget. Hvis problemet fortsætter, kontakt %s.Kameraet kunne ikke fuldføre processenKameraet accepterede ikke parametrene. Kontakt %s.Kameradriver '%s' mangler 'camera_init' funktionen.Kamera har hukommelse. Kameraet har taget %d billeder, og bruger CF-kort. Kameraet er konfigureret for lys, der flimrer med %dHz. Kameraet er i en forkert tilstand. Kontakt %s.Kameraet er ikke klart, get_battery fejlede: %sKameraet er ikke klart, flere 'Identificering af kamera' fejlede: %sKamerabilleder er monokrome. Kamera strømspare (sekunder)Kameraet afviste 3 gange at holde forbindelse Ã¥ben.Kameraet afviste kommandoen.Kamera nulstiller sig selv.Kameraet sendte uventede byte 0x%02x.Kamera understøttet miniaturer. Kamera understøtter video. Kamera understøtter videoformaterne: Kameratid: %s %s Kamera ikke tilgængeligtKamera ikke tilgængeligt: %sKameraet var allerede aktivtKameraet blev vækketKan ikke optage nye billeder. Ukendt fejlKan ikke slette alle billeder.Kan ikke slette billede %s.Kan ikke lægge dette billede op til kameraet. Der opstod en fejl.StearinlysKan ikke hente hvor meget hukommelse der er tilbageKan ikke hente batterikapacitetKan ikke hente navnet pÃ¥ mappen hvor billederne erCanon automatisk eksponeringstilstandCanon optagningCanon EOS-optagelseCanon EOS optagning fejlede udløsning: Er spejlet oppe?Canon EOS optagning fejlede udløsning: MÃ¥ske ikke i fokus?Canon EOS optagning fejlede udløsning: MÃ¥ske ikke mere hukommelsesplads pÃ¥ kort?Canon EOS optagning fejlede udløsning: Ukendt fejl %d, rapportér.Canon EOS optagning fejlede: %xCanon EOS fjernbetjent udløserCanon EOS udløser optagning fejlede: 0x%xCanon EOS søgerCanon EOS ZoomCanon EOS Zoom PositionCanon PowerShot seriens driver ved Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5 tilføjelser ved Ole W. Saastad Yderligere forbedringer ved Holger Klemm Stephen H. WestinCanon optagetilstandOptagOptageforsinkelseOptageindstillingerOptagelsens størrelseklasseOptage mÃ¥lOptagelse overførselstilstandKlasse for optagelsesstørrelse ændretOptagetype er ikke understøttetKortKortstatus: Der kan ikke skrives til kortet.Kortet er ikke formatteretKortet er ikke Ã¥bentKortet er Ã¥bentKort er skrivebeskyttet.Kort-navn: %s Ledig plads pÃ¥ kortet: %d kB Kortet er ikke understøttet.Kort fjernet under tilgang.Celle-type rækkefølgeCenterknap afspilletilstandCenterknap optagetilstandCenterknap zoomforholdCenterspotCentervægtomrÃ¥deCentervægtetCentervægtet gennemsnitCentervægtetCenter-spotCentervægtetCentervægtet gennemsnitsmÃ¥lingCentervægtet mÃ¥lingCentervægtet gennemsnitCentervægtet mÃ¥lingCentrumCentervægt omrÃ¥deCenterspotÆndring af kamera tilstand fejledeChange Pic Ctrl ItemÆndrer hastighed... vent...TegnTegn og lydOpladerChecksumfejlBørnVælg farvetemperaturVælg ikke-CPU objektivnummerRens billedsensorRens sensorTøm datalagerLuk medie sessionLuk sessionNærmeste emneNærbilledeSkyetSkyet hvidbalance-korrektionFarveFarveforstærkningFarvetilstandFarvemodelFarveindstillingerFarverumFarvetemperaturFarve- eller funktions-tilstandFarve skitseKommando kan ikke afbrydes.Kommando rækkefølge fejl.FjernbetjenerKommunikationsfejl 1Kommunikationsfejl 2Kommunikationsfejl 3Kommunikationsfejl endda efter 2 ekstra forsøg. Kontakt %s.Fandt Compact Flash kort CompactFlash kortKompatibilitetstilstandKompressionKompressions indstillingerKonfigurationKonfiguration for dit FUJI-kameraForbundet til kameraKontinuerligKontinuerlig højhastighedsfotograferingKontinuerlig lav hastighedKontinuerlig lavhastighedsfotograferingKontinuerlig fotograferingKontinuerlig fotografering høj hastighedKontinuerlig fotografering lav hastighedKontinuerlig hastighed højKontinuerlig høj hastighedKontinuerlig lav hastighedKontinuerlig lydløsContinuous-Servo AFKontrastKontrast+Kontrast-Kopier objektOphavsretOphavsret (maks. 20 tegn)OphavsretsinformationOphavsretsinformationØdelagte dataKunne ikke allokere %i byte til hjemhentning af billede.Kunne ikke allokere %i byte til hjemhentning af miniature.Kunne ikke tilføje USB opsætningKunne ikke ændre ISO hastighedKunne ikke ændre blændeÃ¥bningKunne ikke ændre bippe-tilstandKunne ikke ændre eksponerings-kompensationKunne ikke ændre blitz-tilstandKunne ikke ændre fokuseringstilstandKunne ikke ændre billedformatKunne ikke ændre optage-tilstandKunne ikke ændre lukkerhastighedKunne ikke ændre tid for filen '%s' i '%s' (%s).Kunne ikke ændre zoom-niveauKunne ikke kontakte kamera.Kunne ikke oprette \DCIM katalog.Kunne ikke oprette mÃ¥l-katalog.Kunne ikke oprette katalog %s.Kunne ikke oprette kataloget.Kunne ikke slette filen '%s' i mappen '%s' (fejlkode %i: %s).Kunne ikke slette filen.Kunne ikke finde noget kameraKunne ikke finde noget kamera i port %sKunne ikke etablere første kontakt med kameraetKunne ikke danne JPEG miniature fra data: Data er ikke JFIFKunne ikke danne JPEG miniature fra data: Ingen start/slutKunne ikke finde filen '%s'.Kunne ikke finde oversættelsesdata ved '%s'Kunne ikke finde diskinformation: %sKunne ikke finde disknavn: %sKunne ikke hente ram-kort drevbogstavKunne ikke finde information om '%s' (%s).Kunne ikke hente information om '%s' i '%s' (%s).Kunne ikke hente register %i. Kontakt %s.Kunne ikke hente streng-register %i. Kontakt %s.Kunne ikke initialisere oplægning (kameraet svarede med 0x%02x).Kunne ikke indlæse nødvendig kameradriver '%s' (%s).Kunne ikke Ã¥bne '%s'.Kunne ikke fjerne katalog %s.Kunne ikke fjerne kataloget.Kunne ikke nulstille kameraet. Kunne ikke sætte hastigheden til %i (kameraet svarede med %i).Kunne ikke sende pakke (fejlkode %i). Kontakt %s.Kunne ikke overføre pakke selv efter adskillelige forsøg.Kunne ikke oplægge, intet frit mappenavn til rÃ¥dighed! 999CANON katalognavn eksisterer, og et AUT_9999.JPG billede findes.Kunne ikke læse fra fil"%s"Dan Wifi profilOprettelsesdato: %s, Sidst brugt den: %sKreativCreative PC-CAM 300 Forfattere: Till Adam og: Miah Gregory Creative PC-CAM600 Forfatter: Peter Kajberg Nuværende tilstand: Kameratilstand Nuværende tilstand: Afspilningstilstand Nuværende kamera tid: %04d-%02d-%02d %02d:%02d Ledig kort hukommelse: %d Billeder pÃ¥ kortet: %d Ledig plads (billeder): %d Batteri niveau: %d %%.PTP er endnu kun implementeret for USB og PTP/IP kameraer, port type %xTilpassetTilpassede funktioner ExBruger hvidbalance PC-1Bruger hvidbalance PC-2Bruger hvidbalance PC-3Tilpas kommando drejeskiverDD/MM/YYYYDEPDPOF versionMørkt pÃ¥ lystData er blevet ødelagt.Dato og tidDatoformatDato/tid stempelformatDato og tidDato og tid (GMT)DatovisningDato: %i/%02i/%02i %02i:%02i:%02i Antal billeder taget: %i Billeder tilbage: %i Software version: %s Baudrate: %s Hukommelse: %i megabyte Kameratilstand: %s Billedkvalitet: %s Blitz indstilling: %s Information: %s Selvudløser: %s LCD: %s Automatisk sluk: %i minutter Strømkilde: %sDato: %sDag/mÃ¥ned/Ã¥rDagslysDagslys hvidbalance-korrektionFejlsøgDybStandard adgangspunktStandard Sierra driver: Dette er standard sierra driver, den skulle være i stand til at understøtte hjemhentning og gennemsyn af billede pÃ¥ dit kamera. Kamera konfiguration (eller præferencer) indstillinger er baseret pÃ¥ Olympus 3040, og er givetvis ufuldstændig. Hvis du konstaterer, at indstillingerne er i orden for dit kamera, eller du kan bidrage med kode eller har en komplet konfiguration, kontakt udvikler mail-listen. Forsinket FjernbetjeningSletSlet objektSletter billede %s.Fandt et "%s" ogsÃ¥ kendt som "%s"Fandt et '%s'.Fremkaldelsesparameter 1Fremkaldelsesparameter 2Fremkaldelsesparameter 3EnhedscertifikatEnhedsikonEnheds versionEnheden understøtter ikke indstilling af objekt-beskyttelse.Digita Johannes Erdfelt Digitalkamera layout (DCIM)Digital zoomDigital zoom forstørrelseDigital macroDigital zoomDimera 3500 version %s %d/%d %d:%d. %d billeder brugt af cirka %d (højopløsning) eller %d (lavopløsning). Kamera egenskaber: %s, %s, %s, %s. Blitz er %s, er %s og er %s. Opløsning er sat til %s. Kamera er %s tændt %s. Direkte udskriftKataloggennemsøgningsmÃ¥de - skrevet af Scott Fritzinger .Kataloget eksistererKataloget blev ikke fundetAfbryd stoler-pÃ¥-filer operationerFjerner tilslutning til kamera.Disp AvDisp Av maksSkærmVisningsformater: Fjern-visningVis ikke TV-menuVed ikke hvordan kamera->port->type værdi %i ogsÃ¥ kendt som 0x%x ved %s linje %i skal hÃ¥ndteres.Hjemhent programmet til Digital Dream Enigma 1.3. by , og tilpasset fra spca50x driver. Tak til spca50x teamet, det var let at overføre Jeres driver til dette kamera! Hent program til GrandTek 98x baserede kameraer. Oprindeligt skrevet af Chris Byrne , og tilpasset til gphoto2 af Lutz Mueller .Protokolforbedringer og efterbehandling for Jenoptik JD350e ved Michael Trawny .Fejlrettelser ved Marcus Meissner .Hjemhent program for Polaroid DC700 kamera. Oprindeligt skrevet af Ryan Lantzer for gphoto-4.x. Tilpasset til gphoto2 af Lutz Mueller .Hjemhent program for flere Polaroid kameraer. Oprindeligt skrevet af Peter Desnoyers , og tilpasset til gphoto2 af Nathan Stenzel og Lutz Mueller . Polaroid 640SE testning blev udført af Michael Golden .Hjemhenter %s.Hjemhenter %s...Hjemhenter '%s'...Hjemhenter EXIF-data...Hjemhenter lyd...Hjemhenter data...Hjemhenter fil...Hjemhenter billede %s.Hjemhentning billede...Hjemhenter film...Hjemhenter miniature...Hjemhenter...Drive Canon DSLR AutofokusDrive Canon DSLR Manuel fokusDrev-tilstandNikon DSLR auto fokusmotorNikon DSLR manuel fokusmotorDriverDriver indstillingerGrundlæggende driver skrevet af Lutz Mueller . Dette programmel har QVplay's source code, skrevet af Ken-ichi HAYASHI og Jun-ichiro "itojun" Itoh . Integrering af QVplay ved Michael Haardt .Dobbelt irisblændeSkumringSkumring/DaggryStøv reference fejlDynamisk AF omrÃ¥deDynamisk omrÃ¥de AFGruppedynamisk AF med nærmeste genstand prioritetEEPROM checksumfejl.FEJL: %d er for storFEJL: fatal fejltilstand opdaget, kan ikke fortsætte FEJL: beskedformat fejl.FEJL: beskedoverløbFEJL: ude af rækkefølge.FEJL: uventet meddelelseFEJL: uventet besked 2.FEJL: uventet pakketype.ESPESSIDEV skridtEVF tilstandEZoom størrelse af teleEZoom start positionØkonomiEffekttilstandEffekterNødsituationTomTillad ophavsretTillad billedkommentarTillad stoler-pÃ¥-filer operationerEncounterEncounter BoxKrypteringKrypteringsnøgle (hex)Afslut redigering af objektAfslut stoler-pÃ¥-programmer sessionEngelskForbedretFejlFejl under eksponering af billedeFejl under ændring af hastighedFejl under ændring af hastighed.Fejl, tilknyttet miniaturefil slettetFejl ved sletning af filFejl under venten pÃ¥ ACK under initialiseringFejl under venten pÃ¥ ACK under initialisering, prøver igenEvaluerendeEvaluerende mÃ¥lingHændelses emuleringstilstandOveraltUdfør foruddefineret kommando med parameter værdier.Forventede %i byte, fik %i. Rapportér denne fejl til %s.Forventede %i, fik %i. Rapportér denne fejl til %s.Forventede 32 byte, fik %i. Kontakt %s.EksponeringEksponeringsblændelÃ¥sEksponerings base centerEksponerings base matrixEksponerings base spotEksponeringskorrektions kompensationEksponerings bracketing programEksponerings bracketing skridtEksponeringskompensationEksponeringskompensation (EV)Eksponering forsinkelsestilstandEksponeringsdisplay statusEksponerings ISO skridtEksponeringsindeks (filmhastigheds ISO)Eksponeringsindikator oplysningEksponeringsindikator statusEksponeringslÃ¥sEksponeringsmÃ¥lerEksponeringsmÃ¥lingEksponerings-mÃ¥lingstilstandEksponeringsprogramEksponeringsprogramtilstandEksponeringsskridtEksponeringstidEksponeringskompensationEksponeringskompensation ændretEksponeringskompensation: %d Eksponeringskompensation: %s EksponeringsforsinkelsestilstandEksponeringsniveau ved forhÃ¥ndsvisningEkstern blitzEkstern blitz monteretEkstern blitz-kompensationEkstern blitz-tilstandEkstern blitz-typeEkstern blitz-statusEkstern synkroniseringEkstra højBlænde-talF2F2.3F2.8F4F5.6F8FATAL FEJL: første CRC værdi for længden %d er ukendt FLASH: Filer: %d Blænde-tal lÃ¥sFV lÃ¥stFV lÃ¥sAnsigts-prioritet AFFabriksstandardTroFjern %dFjernt 1Fjernt 2Fjernt 3Langt-væk sceneHurtigt filsystemHurtig lukkerFilFilen '%s' kunne ikke findes i mappe '%s'.Filen '%s/%s' findes ikke.Filsletning, Sæt filnumre i rækkefølgeFiloplægning FilkompressionFil eksistererFil blev ikke fundetFil beskyttet.FilopløsningFilstørrelse er %ld byte. Størst mulige fil der kan oplægges er: %i byte.FiltypeFiloplægning mislykkedes.Filen var for stor. Du er nok nødt til at slukke og tænde for dit kamera, før du kan oplægge flere filer til det.Filtype: FlashPix (Filtype: JPEG (UdfyldningsblitzSøger ISO visningFinFyrværkeriFirmwareFirmware revision: %8sFirmware revision: %8s Billeder: %i Hukommelse i alt: %ikB Ledig hukommelse: %ikB Firmware revision: %d.%d Firmware versionFirmware version: %d.%02d Firmware: %d.%d FiskeøjeFastBlitzBlitz opladetBlitz-styring A kompensationBlitz-styring A tilstandBlitz-styring A værdiBlitz-styring B kompensationBlitz-styring B tilstandBlitz-styring B værdiBlitz-styringskanalBlitz-styring egen-kompensationBlitz-styring egen-tilstandBlitz-styring egen-værdiBlitz-styrer tilstandBlitz-styrer strømBlitzkompensationBlitzeksponeringskompensationBlitzniveau lÃ¥sBlitz lÃ¥sBlitz MRepeat tællingBlitz MRepeat intervalBlitz MRepeat værdiBlitz-tilstandBlitz-tilstand fjernbetjener strømBlitztilstand manuel-strømBlitz slukketBlitz Ã¥benBlitz antal-tællingBlitzindstillingerBlitzindstillingerBlitz-lukkerhastighedBlitzsymbolBlitz synkroniseringshastighedBlitz hvidbalance-korrektionBlitz autoBlitz-tilstand ændretBlitz-tilstand: auto, Blitz-tilstand: tvunget, Blitz-tilstand: afbrudt Blitz slukketBlitz tilKun blitzBlitz/blændeBlitz/lukkerBlitz/lukker/blændeBlitzlys : AutomatiskBlitzlys : Automatisk (rødøje-reduktion)Blitzlys : SlukketBlitzlys : TilBlitzlys : Til (rødøje-reduktion)Blitzlys : Ikke defineretFlashPixFleksibel programRystelsesreduktionFluorescerende typeFluorescerende-1-hjem-6700KFluorescerende-2-bord-5000KFluorescerende-3-kontor-4200KFluorescerendeFluorescerende HFluorescerende lampe 1Fluorescerende lampe 2Fluorescerende lampe 3Fluorescerende lampe 4Fluorescerende lampe 5Fluorescerende hvidbalance-korrektionFluorescerende-1-hjem-6700KFluorescerende-2-bord-5000KFluorescerende-3-kontor-4200KFluorescerende: Kold hvidFluorescerende: Dag hvidFluorescerende: DagslysFluorescerende: Varm hvidBrændviddeBrændvidde beskriverMaksimal brændviddeMindste brændviddeBrændvidde teleBrændvidde vidvinkelFokusNulstilling af fokuseringsomrÃ¥deFokus omrÃ¥de zoneFokuseringsomrÃ¥derFokuseringsafstandAfstandslÃ¥sAfstandsinstillingstilstandFokuseringstilstandFokuseringstilstand 2Fokuseringspunkt lystFokuseringstilstand ændretFokuseringspositionFokuseringspunktFokuspunkt kun i centeret, AutoFokuspunkt kun i centeret, ManuelFokuseringsfejl.Mappen '%s' indeholder kun %i filer, men du efterspurgte en fil med nummer %i.BladhangMadFor at 'bulb' optagelse kan fungere, skal funktionsvælgeren sættes til 'M' og lukkerhastigheden til 'bulb'.For kameraer med S&Q-Technologies chip. Skulle fungere med gtkam. Billeder gemmes i PPM-format. Alle kendte S&Q kameraer har to opløsningsindstillinger. Hvad det er, afhænger af det bestemte kamera. Nogle af disse kameraer tillader sletning af alle billeder. Men de fleste gør ikke. Oplægning af data til kameraet er ikke understøttet. Den billedkompressionstilstand der er pÃ¥ mange af S&Q kameraerne er understøttet til en vis grad. Hvis der er videoklip pÃ¥ kameraet, vises disse som undermapper. Gtkam hjemhenter disse seperat. NÃ¥r der en filmklip pÃ¥ kameraet, vises en lille trekant foran navnet pÃ¥ kameraet. Hvis der ikke vises et katalog, tryk pÃ¥ trekanten for at fÃ¥ dem vist. Klik pÃ¥ en mappe for at gÃ¥ ind i det og se de rammer der er der, eller for at hjemhente dem. Rammerne hjemhentes som separate billeder, med specielle navne, der specificerer hvilket filmklip de stammer fra. Du kan frit vælge, om du vil gemme rammerne i separate kataloger, eller ikke. For kameraer med indmad fra S&Q Technologies, der har USB fremstiller ID 0x2770 og produkt ID 0x905C, 0x9050, 0x9051, eller 0x913D. Billeder gemmes i PPM formatet. Nogle af disse kameraer tillader programmer at slette alle billeder. Andre gør ikke. Ingen understøttede kameraer kan optage billeder. Alle kan udføre optage-forhÃ¥ndsvis (billede optaget og sendt til computer), Hvis sletning virker, vil gphoto2 -- capture image have den side-effekt, at det ogsÃ¥ sletter det der er pÃ¥ kameraet. Oplægning og sletning af individuelle billeder ved brug af program-kommandoer, er ikke understøttet af hardware i disse kameraer. GennemtvingGennemtving blitz Formatter kort og sæt albumnavn.Formatter compactflashkortGemningsformatRammer tilbage: %i Frames taget : %4d Rammer taget: %i BilledbegrænsningsgitterFranskEnhedsvenligt navnForreste gardin synkroniseringFuldHelt billedeFuld manuelFuldvisnings filformatFull-time-servo AFFunktionsknap 2FunktionstilstandFunktionstilstand: 0x%04x GenerelAlmen fladAlmen hierarkiskTyskHent næste data blokHent partielt objekt (64-bit forskydning)Hent nærheds-udfordringHent registreringssvarHent WMDRM-ND licenssvarHent WMDRM-PD programsvarHent enhedsengenskabsbeskrivelseHent enheds-engenskabs-værdiHent indbyrdes afhængige egenskabsbeskrivelserHent licenstilstandHent mÃ¥ler-udfordringHent mÃ¥lersvarHent antallet af objekterHent objektHent objekthÃ¥ndtagHent objektinformationHent understøttede objektegenskaberHent beskrivelse af objektegenskaberHent liste for objektegenskaberHent værdi af objektegenskaberHent objektreferencerHent partielt objektHent sikkertid udfordringHent sikkertid svarHent lagring-id'erHent lagringsinformationHent synkroniseringslisteHent miniatureHent spillelistetyper der kan overføresHenter konfiguration...Henter data...Henter filliste...Henter fil...Henter information om %i filer...Henter miniature...Fik uventede resultater 0x%x. Kontakt %s.GrÃ¥skalaGrÃ¥skalaGrønGruppedynamiskGruppe PTN typeHDR Høj DynamikHDR-tilstandHDR UdjævningHardware fejlHi 1Hi 2HøjHøj (1152 x 872)Høj (god kvalitet)Høj 2Høj-ISO støjreduktionHøj ISO støjreduktionHøj kontrolHigh keyHøj følsomhedHøjhastighedslukkerOplys aktivt fokuspunktHoldVærtstilstand: %s Eksponeringskorrektion: %s Eksponeringsdata: %d Gyldig dato: %s Dato: %d/%02d/%02d %02d:%02d:%02d Selvudløser indstilling: %s Kvalitets indstilling: %s Afspil/optag-tilstand: %s Gyldigt kort ID: %s Kort ID: %d Blitztilstand: Vært strømspare (sekunder)Hvor lang tid vil der gÃ¥ før kameraet slukker, nÃ¥r det er tilsluttet en computer?Hvor lang tid vil der gÃ¥ før kameraet slukker, nÃ¥r det ikke er tilsluttet en computer?Hvor lang tid gÃ¥r der før kameraet slukker?FarvetonejusteringHyPictI/O i fremgangIDIP adresse (tomt for DHCP)ISO AutoISO Auto høj grænseAutomatisk-ISO øvre grænseISO hastighedISO hastighed ændretIkonerLedigUgyldig parameter.Illum indstillingBilledeBillede %s er beskyttet mod sletning.Billede og lydBilledejusteringBilledkommentarBilledkommentar tilladtBilledkommentar strengBilledformatBilledformat CFBilledformat Ext HDBilledformat SDBillede tilstandBillede kvalitetBilledgennemsynBilledrotationBilledrotationsflagBilledindstillingerBillede størrelseBilledstabiliseringBilledformat ændretBilledehøjde: %d Antal billeder ikke gyldigt.Billede beskyttet.Billedestørrelse: %d Billedtype %d er ikke understøttet af dette kamera!Billedetype %d er ikke understøttetBilledetype er ikke understøttetBilledebredde: %d Img Conf tidOmgÃ¥endeI brugHvidglødendeIndikator skærmIndendørsUendeligUendelig/fiskeøjeInformation Disp. indstillingInformationsvindue fejlstatusInformationInformation om STV0680 baserede kameraer: Information vedrørende kameraer med ID 0x2770:0x9153. Vi anbefaler ikke at bruge GUI-programmer sammen med dette kamera, med mindre du bare morer dig, eller prøver at se om du kan sprænge en sikring. Hvis du seriøst vil hente dine billeder, prøv med gphoto2 -P fra en kommandolinie. Derudover - lad endelig være med at prøve at hjemhente videoklip. Initieringssvar '%c' fra kamera blev ikke genkendtInitialisation af kameraInitialiser optagelseInitier Ã¥ben optagelseIntern ramIntern fejl #1 i get_file_func() (%s linje %i)Intern fejl (1).Intern fejl (2).Intern fejl ved søgning efter camlibs. (stinavne for lange?)Intern hukommelse: %d MB total, %d MB fri. UgyldigUgyldig ISO hastighedsindstillingUgyldig statusUgyldig værdi ( %d ) Ugyldig blændeÃ¥bningsindstillingUgyldig bippe-tilstand indstillingUgyldig indstilling for klasse for optagelsesstørrelseUgyldig eksponerings-kompensations-indstillingUgyldig blitz-tilstand indstillingUgyldig indstilling af fokuseringstilstandUgyldig billedformat indstillingUgyldig optage-tilstand indstillingUgyldig indstilling af lukkerhastighedBlændÃ¥bningsfejl.ItalienskJD11 Marcus Meissner Driver til Jenoptik JD11 kameraet. Protokol omvendt-beregnet ved brug af WINE og IDA.JD11 konfigurationJPEGJPEG basisJPEG kompressionspolitikJPEG finJPEG NormJPEG normalJapanskBehold filnavn ved oplægningBørn og kæledyrKendte problemer: 1. Hvis Kodak DC3200 ikke modtager en kommando mindst hvert 10. sekund, vil det tidsafbryde, og det skal geninitialiseres. Hvis du bemærker at kameraet ikke svarer, skal du ganske enkelt genvælge det. Dette vil fremtvinge en geninitialisering.Kendte problemer: Hvis der opstÃ¥r kommunikationsproblemer, skal kameraet og programmet genstartes. Driveren er endnu ikke robust nok til at komme over disse situationer, især hvis problemet opstÃ¥r, og kameraet ikke slukkes korrekt ved hastigheder over 9600.Kodak DC210 kamera bibliotek Scott Fritzinger Kamera bibliotek til Kodak DC210 kameraet. (efter ønske).Kodak DC240 kamerabibliotek Scott Fritzinger og Hubert Figuiere Kamerabibliotek for Kodak DC240, DC280, DC3400 og DC5000 kameraer. Genskrevet og opdateret til gPhoto2.Kodak DC3200 driver Donn Morrison SpørgsmÃ¥l og kommentarer værdsættes.Kodak EZ200 driver Bucas Jean-Francois Konica konfigurationKonica Q-M150 bibliotek Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Understøttelse for den franske Konica Q-M150.Konica bibliotek Lutz Mueller Understøttelse for alle Konica og adskillige HP kameraer.KoreanskLCDLCD-autosluk (i sekunder)LCD-autosluk (sekunder)LCD baglysLCD baglys og informations skærmLCD-lyshedLCD belysningLCD-tilstandLCD slukket tidLED-tilstandLG GSM almen driver Guillaume Bedot LandskabSprogLargan driver Hubert Figuiere StorStor Fin JPEGStor Normal JPEGVenstreObjektivets brændvidde (ikke CPU)Objektiv IDObjektivets største blændeÃ¥bning (ikke CPU)ObjektivtilstandObjektiv navnObjektivslagsObjektivtypeObjektivretning svarer ikke til blitzlys Objektiv er ikke tilsluttet LysLysmÃ¥lerLyst pÃ¥ mørktLys for mørkt.Vis Wifi profilerVis alle filerLister filer i '%s'...Lister mapper i '%s'...Lithium IonLiveView AF omrÃ¥deLiveView AF fokuseringLiveView AF tilstandLiveview Drev-tilstandLiveView billedzoom forholdLiveView tilstandLiveView forhindret tilstandLiveView statusHenter kameradrivere fra '%s'...LokalOversættelseOversættelsesdata ødelagte.Oversættelsesdata for lange.Oversættelsesfil for lang!LÃ¥sLogitech Clicksmart 310 driver Theodore Kilgore Lang eksponerings støjreduktionLangtidseksponeringsstøjreduktionLang lukkerSøger efter kamera ...Ligner et modem, og ikke et kameraTabsfriTabsgivendeLavLav (576 x 436)Lav (bedste kvalitet)Lav 2Low-LightLav-hastigheds synkroniseringLav kontrastLow keyLav følsomhedLidt gør-skarpLavhastighedslukkerLavhastighedslukkerfunktion ikke tilgængeligDet er ikke tilladt at bruge smÃ¥ bogstaver i %s.MM-DEPM3U afspilningslisteM4AMF (fast)MF (det valgte)MHT kompileret HTML dokumentMM/DD/YYYYMPL afspilningslisteMTR > UnderM_DEPMakroHÃ¥ndteretManuelManuel 2Manuel fokuseringManueltilstand bracketingManuel film indstillingManuel indstilling objektiv nummerManuel fokuseringProducent: %s Mars MR97310 kamera bibliotek Theodore Kilgore Mars MR97310 kamera. Der er %i billede i det. Mars MR97310 kamera. Der er %i billeder i det. MatrixMatriksmÃ¥lingMatthew G. Martin Baseret pÃ¥ fujiplay ved Thierry Bousch Maks. blændeÃ¥bning ved max. brændviddeMaks. blændeÃ¥bning ved min. brændviddeMaks. brændviddeMaksimalMaks. blændeÃ¥bning ved maks. brændviddeMaksimal blændeÃ¥bning ved minimal brændviddeMaksimale antal skudMaksimalt kontinuerlig udløsningMaksimalt antal billeder: %d Medie kortMedie kort gruppeMedia CastMellemMellem (1152 x 872)Middel (bedre kvalitet)Middel 1Middel 2Middel 3Mellem Fin JPEGMellem højMellem lavMellem Normal JPEGMellem højMellem følsomhedHukommelse tilbage: %i byte HukommelseskortHukommelseskort status (%d): %s Hukommelse i kamera: %d Mbit. Menuprofil AMenuprofil BMenuprofil CMenuprofil DMenuer og afspilningMetadata understøttes kun for MTP enheder.MÃ¥ler slukket tidMÃ¥lingstilstandMf Drive Step EndMf Drive Step InsufficiencyMikrofonMikrofon slukketMicrosoft Excel regneark (.xls)Microsoft Powerpoint (.ppt)Microsoft Word dokumentMin. brændviddeMiniature effektMinimalMinidste lukkerhastighedMinolta Dimage V kamera bibliotek %s Gus Hartmann Specielt tak til Minolta for specifikationer.Spejl opSpejl op sekvensBlandede eksponerings/objektiv indstillingerManglende nummerMl spot positionMlSpotPosAfLinkMlSpotPosCenterModel idModel: Minolta Dimage V (%s) Hardware revision: %s Firmware revision: %s Model: Model: %s Model: %s Kapacitet: %i Mb Strøm: %s Automatisk sluk tid: %i min Tilstand: %s Billeder: %i/%i Datovisning: %s Dato og tid: %s Model: %s Hukommelse: %d byte af %d tilgængeligModel: %s Serie nummer: %s, Hardware version: %i.%i Software version: %i.%i Test-software version: %i.%i Navn: %s, Producent: %s Model: %x, %x, %x, %xModel: Kodak %s Modeler blitzModelerings blitzModeratSkærmSluk skærm forsinkelseMonokromMÃ¥ned/dag/Ã¥rFlyt objektFiloptagelseFilm kortportFilm mikrofonFilm kvalitetFilmskærm størrelseFilmlydFilmlydMange-rammers støjreduktionFlerpunkts spotFlerpunktsspotMulti-spotmÃ¥lingFlerpunkts spotMulti-fokuspunkter (center)Multi-fokuspunkter (venstre)Multi-fokuspunkter (ikke specificeret), ManuelMulti-fokuspunkter (højre)Multi-fokuspunkter, AutoMultivælgerMup Spejl opMustek MDC-800 gPhoto2 bibliotek Henning Zabel Porteret til gphoto2 af Marcus Meissner Understøtter serielle og USB protokoller.MinefarverNEF (rÃ¥)NEF+basisNEF+finNEF+normalNikon automatisk bracketing indstillingIKKE GENKENDTNTSCNULL parameter "%s" i %s ved linje %iNavnet "%s" fra kameraet, passer ikke med noget kendt kameraNavnet '%s' (%li tegn) for langt, der mÃ¥ højst bruges 30 tegn.Præfiks navnNavn der skal sættes pÃ¥ kort ved formattering.Nært %dNært 1Nært 2Nært 3NetværksmaskeNeutralNæsteNickel cadmiumNickel hydrideNat-landskabNat-portrætNat-viserNatsynNat-landskabNat sceneNat snapshotNikon-optagelse 1Nikon Coolpix 880: Kamera konfiguration (eller præferencer): Den optiske zoom virker ikke ordentligt. Ikke alle konfigurationsindstillinger kan læses og skrives korrekt, for eksempel, fintuningsindstillingen af hvidbalance, og sprogindstillinger. Sæt kameraet i 'M' tilstand, for at kunne indstille lukkerhastigheden. Nikon Coolpix 880: Kamera konfiguration (præferencer) for dette kamera er ikke fuldstændige, kontakt gphoto udviklernes mail-liste, hvis du kan/vil bidrage til/med denne driver Hjemhentning skulle fungere korrekt. Nikon eksponeringstidNikon blitz-tilstandNikon søgerNikons autofokusmotor fokuserede ikke.Nikons skift-fokusomrÃ¥de virker kun i LiveView tilstand.Nikon manuel-fokusering ved grænse.Nikon manuel-fokuserinsskridt er for smÃ¥.Nikons manuel-fokusering virker kun i LiveView tilstand.NejIngen CF-kort udløstFandt ikke noget Compact Flash kort Ingen dobbelt irisblændeIngen EXIF-data tilgængelige for %s.Ingen filsletning, Ingen filoplægning Ingen blitzIngen Ã¥ben optagning, Intet strøm lysIngen opløsningsomskifterIntet SD-kort isat. Intet svar fra kamera.Kunne ikke finde nogen lydfil til %sIngen kamera manual tilgængelig. Intet kortIntet kort i kameraet. Intet kort tilstede.Intet hukommelseskort tilstedeIngen begrundelse tilgængeligIntet svar fra kameraDer er ikke ledig plads til at optage nye billeder. Du skal slette nogle billeder.Ingen ledig plads pÃ¥ kortet.Ingen fremstillerspecifik optagning IngenIkke valgtNormalNormal Normal AF tilNormal-omrÃ¥de AFIkke fuldIkke tilstrækkeligt fri pladsIkke tilstrækkelig hukommelse pÃ¥ kortetIkke i LiveviewIkke i udfyldningstilstandIkke klarIkke brugtBemærk: intet hukommelseskort tilstede, nogle værdier er muligvis forkerte Antal billeder: %d Antal billeder: %dAntal af billeder: %d Antal billeder: %i Firmware version: %sSlukketO.k.TændtOS-fejl i kamerakommunikationSlukketKontorOlympus 750 Ultra Zoom: (1) Olympus 750UZ har en USB PC kontroltilstand. For at bruge denne tilstand, skal kameraet ændres til 'USB PC kontrol tilstand'. For at komme til menuen med omskiftning, tænd for kameraet, Ã¥ben for lÃ¥gen til hukommelseskortet, og tryk og hold bÃ¥de 'O.k.' og 'quickview' knapperne, indtil kamera kontrolmenuen kommer frem. Indstil det til kontrol tilstand. (2) Hvis du ændrer til 'LCD-tilstand', 'Skærm' eller 'Normal' skal du huske at skifte tilbage før du afbryder. Du vil ellers ikke kunne bruge kameraets knapper. Hvis det sker alligevel, skal du forbinde kameraet til PC'en igen, og ændre 'LCD' til 'Slukket'.Olympus E XML optagelse Olympus pakket-XML understøttelse er for nuværende kun tilgængeligt med libxml2 understøttelse indbygget.TændtTil (billedvisning udelukket)Til + rødøje-reduktionTips pÃ¥ skærmTil, rødøje-reduktionEnkelt-skudEn-knaps automatikKun root-mappe er understøttet - du ville have en filliste for katalog '%s'.Ã…ben optagning, Ã…bn medie sessionÃ…bn sessionProcestilstandProces afbrudtOptimal kvalitetOptimér billedeOrienteringAndreAndre PTP enheders ejerforholdAndre indstillingerAnden kommando kører.Ude af fokusIkke mere hukommelseLøb tør for hukommelse: %d byte nødvendigt.Ikke mere hukommelse: %ld byte nødvendigt.UdendørsEjers navnEjernavn ændretPPALPCPLS afspilningslistePTP tilgang nægtetPTP optagning allerede afbrudtPTP enhed optagetPTP enhedsegenskaber ikke understøttetPTP generel fejlPTP ikke fuldstændig overførselPTP ugyldig kodeformatPTP ugyldig enhedsegenskabsformatPTP ugyldig enhedsegenskabsværdiPTP ugyldig objekt formatkodePTP ugyldig objekthÃ¥ndteringPTP ugyldig parameterPTP ugyldigt forældre-objektPTP ugyldig lagrings IDPTP ugyldig transaktions IDPTP ingen miniature tilstedePTP ingen gyldige objektinformationerPTP O.k.!PTP Objektet er skrivebeskyttetPTP handling ikke understøttetPTP parameter ikke understøttetPTP delvis sletningPTP ejerforhold 0x%04xPTP selvtest mislykkedesPTP session allerede Ã¥bnetPTP session ikke Ã¥benPTP specifikation efter format ikke understøttetPTP angivelse af mÃ¥l ikke understøttetPTP Standardversion: %d.%d PTP lager fuldtPTP lager ikke tilgængeligtPTP lager skrivebeskyttetPTP tidsudløbPTP transaktion afbrudtPTP ikke defineret fejlPTP ukendt fremstillerkodePTP VersionPTP2 driver (c)2001-2005 ved Mariusz Woloszyn . (c)2003-%d ved Marcus Meissner . Driveren understøtter kameraer der understøtter PTP eller PictBridge(tm), og medieafspillere der understøtter Media Transfer Protocol (MTP). God fornøjelse!Pakke blev afvist af kamera. Kontakt %s.PanoreringsfokuseringPanoreringsfokuseringPanasonic DC1000 gphoto bibliotek Mariusz Zynel Baseret pÃ¥ dc1000 programmet skrevet af Fredrik Roubert og Galen Brooks .Panasonic DC1580 gPhoto2 bibliotek Mariusz Zynel Baseret pÃ¥ dc1000 programmet skrevet af Fredrik Roubert og Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic introducerede billedindhentningsteknologi kaldet PHOTOSHOT første gang til denne serie af Palmcorders. Billeder gemmes i JPEG-format pÃ¥ et internt flashkort og kan overføres til computeren gennem en indbygget seriel port. Billederne gemmes i en af to opløsninger, NORMAL er 320x240 og FIN er 640x480. CCD-en der optager billederne er kun pÃ¥ 300K, og giver derfor kun lav-kvalitetsbilleder.Panasonic PV-L859-K/PV-L779-K Palmcorder driver Andrew Selkirk Parameter 1Parameter 2Parameter 3ParametersætDelvistDel mÃ¥lingFest/indendørsSti ikke absolutRegistreret enhedstypeVedvarende indstillingerKæledyr PortrætFotoeffektFotoinformation. AfspilningFoto i filmBilleder i kamera: %d Konfiguration af billedrammeBilledeindstillingerBilledestilBillederBilleder i kamera: %d AfspilAfspilningstilstandAfspilningAfspilnings indholdsindeksAfspilningsobjektAfspilningspositionAfspilningshastighedPlaysForSure IDPorthastighedPortrætStrømStrømspareMotordrevSluk for enhedForud-optageforsinkelseForvalgtForvalgt bruger 1Forvalgt bruger 2Forvalgt bruger 3Forvalgt bruger 4Forvalgt bruger 5Tryk 1Tryk 2Tryk 3Helt trykHalvt trykSmugkigSmugkig-knapSmugkig-knap 2Smugkig-miniatureForrigeProblemer ved hjemhentning af billedeProblemer med hentning af billedinformationProblemer ved hentning af antallet af billederProblem med Ã¥bning af portProblem med læsning af billede fra kortProblem ved nulstilling af kameraProblem ved indstilling af kameraets kommunikationshastighedProblemer med at tage levende billederBehandl WFC objektProdukt ID: %02x%02x ProfilnavnForhindr blitz KvalitetHurtig tilbagemeldingHurtigtvirkende fjernbetjeningHurtig gennemsyn tidLydløs FjernbetjeningRÃ¥RÃ¥ + JPEG basisRÃ¥ + JPEG finRÃ¥ + JPEG normalRÃ¥ + Stor Fin JPEGRÃ¥ + Stor Normal JPEGRÃ¥ + Mellem Fin JPEGRÃ¥ + Mellem Normal JPEGRÃ¥ + Lille Fin JPEGRÃ¥ + Lille Normal JPEGRÃ¥ 2RÃ…+JPEGRGB-forstærkningRTC status: %d RÃ¥ bit-tilstandRAW kompressionKun-læse med objekt-sletningKun læsningLæse-skriveSkrivebeskyttede filattributter som bredde og højde kan ikke ændres.KlarBagestegardin synkronisering + langsom synkroniseringBagestegardin synkroniseringBagestegardin med langsom synkroniseringModtog uventet svar (%i). Kontakt %s.Modtog uventede data (0x%02x, 0x%02x).Modtog uventet overskrift (%i)Modtog uventet svarModtager data...OptagOptagetilstandOptagetilstandOptagelsesmÃ¥lOptagemedieRødRødøje reduktionRødøje blitzRødøjereduktionRødøjereduktion + langsom synkroniseringRødøje automatikRødøje udfyldningRødøje udfyldningRødøjereduktionRødøjereduktion med langsom synkroniseringUdløsUdløs + fokusérUdløs 1Udløs 2Udløs 3Udløs heltUdløs halvtUdløse-tilstandFrigør uden CF-kortFjernRemote API VersionFjernt Spejl OpFjernbetjent tilstandFjernbetjent tidsudløbUdtagelig ram (hukommelseskort)Udtagelig romGentagerRapportér hentede punkterRapportér tilføjede/slettede punkterForespurgte om information om billede %i (= 0x%x), men fik information om billede %i tilbageNulstil menuprofil 0Nulstil menuprofilNulstil enhedNulstil enhedsengenskabsværdiNulstil fokuspunkt til centeretNulstiller protokol...OpløsningOpløsningsomskifterOpløsning plus størrelseOmvendt kommando drejeskiveOmvendte indikatorerTilbagekaldelses infoRicoh / Philips driver ved Lutz Mueller , Martin Fischer , baseret pÃ¥ Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Omvendt-beregnet ved hjælp af USB Snoopy, et kig pÃ¥ firmware-update billede og vilde gæt. HøjreRotations vinkelRotationsflagRotations sceneSD-kort ID: %s SD-hukommelse: %d MB total, %d MB fri. SDRAMSDRAM: Filer: %d Billeder: %4d Film: %4d OmrÃ¥de brugt: %8d Ledigt omrÃ¥de: %8d SDRamST2205 USB picture frame driver Hans de Goede Denne driver tillader dig at hente, sende til, og slette billeder pÃ¥ billedrammen.ST2205 baserede billedrammer kommer med forskellige opløsninger. Gphoto driveren til disse enheder tillader dig at hente, sende til, og slette billeder pÃ¥ billedrammen.STV0674 Vincent Sanders Driver for kameraer der bruger en STV0674 processor ASIC. Protokol omvendt-beregnet ved hjælp af SnoopyPro STV0680 Adam Harrison Driver for kameraer der bruger STV0680 processor ASIC. Protokol omvendt-beregnet ved hjælp af CommLite Beta 5 Carsten Weinholz Udvidet til Aiptek PenCam og andre STM USB Dual-mode kameraer.Samsung afspilningslisteMætningSceneScenetilstandSektionSikker tidSelektive farverSelvudløseSelvudløserSelvudløser (kun for næste billede)Selvudløser forsinkelseSelvudløser optagelsenummerSelvudløser tidSelvtest enhedSelvudløserSelvudløser 10sSelvudløser 2sSelvudløserforsinkelseSend partielt objektSend nærheds-svarSend registreringsforespørgselSend WMDRM-ND licens forespørgselSend WMDRM-PD programforespørgselSend WMDRM-PD kommandoSend WMDRM-PD forespørgselSend forespørgsel til mÃ¥ler-udfordringSend objektSend objektinformationSend liste for objektegenskaberSender data...SensivitetSensor ID: %d.%d SepiaSekvens 9SerienummerSerienummer: %s Information for sessionsopstartSessionsvedvarende opsætningSæt nuværende tidspositionIndstil Nikon autofokus omrÃ¥deSæt Nikon kontroltilstandSæt ejerforhold ikke understøttetIndstil uret i kameraetSæt enhedsengenskabsværdiSæt licenssvarSæt liste for objektegenskaberSæt værdi af objektegenskaberSæt objektbeskyttelseSæt objektreferencerIndstilling 4Indstilling 5Indstilling 6Indstilling 7SkyggeSkyggeSkygget hvidbalance-korrektionSkal kameraet bippe nÃ¥r det tager et billede?SkarpGør skarpereSkarpereSkarphedEksponeringsprofilEksponeringsprofil AEksponeringsprofil BEksponeringsprofil CEksponeringsprofil DOptage tilstandLukkerhastighedOptagetilstandOptage-tilstand ændretSkud-indstillingerLuk nedLukker tællerLukkerhastighedLukkerhastighed (i sekunder)Lukkerhastighed (mikrosekunder, 0 auto)Lukkerhastighed 2Lukkerhastighed lang tidLukkerhastighed i mikrosekunder (0 auto)Lukkerhastighed ændretLukker/AF-ONSiPix Web2 Marcus Meissner Driver for tilgang til SiPix Web2 kamera.SilhuetEnkelEnkelt omrÃ¥deEnkelt-skudEnkeltrammeEnkelt lydløsEnkelt-billedsfotograferingSingle-Servo AFEnkeltpunkts AFSingle-servo AFSipix StyleCam Blink driver Vincent Sanders Marcus Meissner . StørrelsesprioritetStørrelse/kvalitetstilstandStørrelse af inddata til KameraStørrelse af uddata fra kameraSpring videre til næste position i afspilningslisteSkylightDiasshow intervalPlads 2 gem-tilstandLangsomLangsom-lukker indstillingerLangsom synkroniseringLangsom lukkerLangsom synkroniseringLangsom-synkroniseringSmal Ultrapocket Lee Benfield Driver for tilgang til Smal Ultrapocket kamera, og OEM versioner (slimshot)LilleLille Fin JPEGLille Normal JPEGGlatSneBlødtBlødereSoftware rev.: %s Nogle noter om Epson kameraer: - Nogle parametre kan ikke fjerbetjenes: * zoom * fokusering * indstilling af bruger hvidbalance - Konfigurationen er omvendt-beregnet med et PhotoPC 3000z. Hvis dit kamera opfører sig anderledes, send en mail til %s (pÃ¥ engelsk) Nogle noter om Epson kameraer: - Nogle parametre kan ikke fjernbetjenes: * zoom * fokus * brugertilpasset hvidbalanceopsætning - Konfigurationen er omvendt-beregnet med et PhotoPC 3000z, hvis dit kamera opfører sig anderledes send en mail til gphoto udvikler mailinglisten (pÃ¥ engelsk) Nogle noter om Olympus kameraer (og andre?): (1) Kamera konfiguration: Værdien 0 bruges som standarden (auto). (2) Olympus C-3040Z (og givet ogsÃ¥ C-2040Z og andre) har en USB PC kontrol tilstand. For at bruge denne tilstand, tændes for kameraet Ã¥ben døren til hukommelseskortet, tryk og hold bÃ¥de pÃ¥ menu- og LCD-knapperne, indtil kamera kontrol-menuen kommer frem. Sæt den til tændt. (3) Hvis du ændrer 'LCD-tilstand' til 'Skærm' eller 'Normal', skal du huske at skifte tilbage til 'Slukket' inden du afbryder forbindelsen. Ellers kan du ikke bruge kameraets knapper. Hvis det sker, skal du forbinde kameraet til PC'en igen, og skifte LCD til 'Slukket'.Nogle noter om Olympus kameraer: (1) Kamera konfiguration: Værdien 0 bruges som standarden (auto). (2) Olympus C-3040Z (og givet ogsÃ¥ C-2040Z og andre) har en USB PC kontrol tilstand. For at bruge denne tilstand, tændes for kameraet Ã¥ben døren til hukommelseskortet, tryk og hold bÃ¥de pÃ¥ menu- og LCD-knapperne, indtil kamera kontrol-menuen kommer frem. Sæt den til tændt. (3) Hvis du ændrer 'LCD-tilstand' til 'Skærm' eller 'Normal', skal du huske at skifte tilbage til 'Slukket' inden du afbryder forbindelsen. Ellers kan du ikke bruge kameraets knapper. Hvis det sker, skal du forbinde kameraet til PC'en igen, og skifte LCD til 'Slukket'.Sonix kamera bibliotek Theodore Kilgore Sonix kamera. Der er %i billede i det. Sonix kamera. Der er %i billeder i det. Sony optagningSony DSC-F1 Digital kamera understøttelse M. Adam Kendall Baseret pÃ¥ chotplay CLI interface fra Ken-ichi Hayashi Gphoto2 port ved Bart van Leeuwen Sony DSC-F55/505 gPhoto bibliotek Understøtter Sony MSAC-SR1 og Memory Stick brugt i DCR-PC100 Oprindeligt skrevet af Mark Davies gPhoto2 port ved Raymond Penners Beklager, initiering af dit kamera virkede ikke. Send en fejlmelding, tak.Beklager, ejerskabet for '%s' / 0x%04x er pt skrivebeskyttet.Beklager, dit Canon kamera understøtter ikke Canon optagningsinitieringBeklager, dit Canon kamera understøtter ikke Canon EOS optagningBeklager, dit Canon kamera understøtter ikke Canon søger tilstandBeklager, dit Canon kamera understøtter ikke Canon-optagningBeklager, dit Nikon kamera returnerer tilsyneladende ikke et JPEG billede i liveview tilstandBeklager, dit Nikon kamera understøtter ikke liveview tilstandBeklager, dit kamera understøtter ikke Nikon optagningBeklager, dit kamera understøtter ikke almen optagningLydSoundvision driver Vince Weaver Plads tilbage: Høj: %d, Mellem: %d, Lav: %d SpanskHastigheden %i er ikke understøttet!Højere overførselshastighed end 57600 bps er ikke understøttet i dette kameraSportSpotSpotmÃ¥lingSpotmÃ¥ling lÃ¥st med AF-rammeSpotmÃ¥lingstilstandSpotmÃ¥lingSpotmÃ¥ling lÃ¥st med AF-rammeSpot-AFStandardStandard fremkaldelsesparametreStart filmoptagelseOpstartOpstart og nedlukningTrin #2 i initialiseringen fejlede! (returnerede %i byte, forventede %i). Kameraet er ikke driftsklartTrin #2 i initialiseringen fejlede: ("%s" ved læsning af %i). Kameraet er ikke driftsklartTrin #3 i initialiseringen fejlede: (returnerede %i byte, forventede %i). Kameraet er ikke driftsklartTrin #3 i initialiseringen fejlede: "%s" ved læsning af %i. Kameraet er ikke driftsklartTrin #3 i initialiseringen fejlede: "%s" ved læsning af %i. Kameraet er ikke driftsklartTrin #4 fejlede (returnerede %i, forventede %i). Kameraet er ikke driftsklartTrin 4 fejlede: "%s" ved læsning af %i Kameraet er ikke driftsklartStilbilledeoptagetilstandStroboskopfejl.Følg-motiv AFSammendrag for Mustek MDC800: SolnedgangSuper macroSuperfinUnderstøttede MTP objektegenskaber: Understøttet miniature størrelseSlukker kameraetSynkroniseringspartnerSynkroniser kameraets dato og tid med PCSynkronisér rammedata og tid med PCSystemfejl.TFTTFT + PCTIFF (RGB)TTLTVTV lÃ¥s indstillingTV-uddata formatAfbryd Ã¥ben optagelseTester forskellige hastigheder...Katalog-gennemsøgning "kamera" lader dig indekserne fotografier pÃ¥ din harddisk.JD11 kameraet virker ret godt med denne driver. Der skal bruges et RS232 interface @ 115 kbit til billedoverførsel. Driveren tillader dig at hente - miniaturer (64x48 PGM format) - hele billeder (640x480 PPM format) Kodak DC210 kameraet bruger KDC-filformatet til gemning af billeder. Hvis du vil se de billeder du hjemhenter fra kameraet, skal du hjemhente "kdc2tiff" programmet. Det er til rÃ¥dighed pÃ¥ adressen: http://kdc2tiff.sourceforge.netSamsung digimax 800k driveren er skrevet af James McKenzie til gphoto. Lutz Mueller porterede den til gphoto2. Marcus Meissner rettede og forbedrede porten.Kameraets batteriniveau er for lavt (%d%%). Funktionen er afbrudt.Kameraet kunne ikke kontaktes. Check at det er tilsluttet og tændt.Kameraet accepterede ikke kommandoen.Kameraet accepterer ikke '%s' som filnavn.Kameraet understøtter ikke hastigheden %i.Kameraet har sendt en fejl, der er hidtil uset. Rapporter det følgende til %s med information om, hvordan/hvorfor denne fejl opstod: (0x%x,0x%x). Mange tak!Kameraet sendte flere byte end forventet (%i)Kameraet sendte kun %i byte, men vi skal bruge mindst %i.Filen der skal oplægges har nul-længdeFilnavnslængde mÃ¥ ikke overstige 12 tegn ('%s' er pÃ¥ %i tegn).Filsystemet understøtter ikke oplægning af filer.Filsystemet understøtter ikke hentning af filinformationerFilsystemet understøtter ikke hentning af filerFilsystemet understøtter ikke hentning af gemningsinformationerFilsystemet understøtter ikke indstilling af filinformationerDen første byte modtaget (0x%x) er ikke gyldig.Stien '%s' er ikke absolut.Den efterspurgte porttype (%i) er ikke understøttet af denne driver.Der er stadig filer i mappen '%s/%s' som du prøver at fjerne.Der er stadig undermapper i mappen '%s/%s' som du prøver at fjerne.To opløsningsindstillinger, 352x288 og 176x144. Fotodata er i jpeg format nÃ¥r det nedhentes, og derfor har de ingen forud fastsat størrelse. Derfor skal det annoncerede maksimale antal billeder der kan være i kameraet, forstÃ¥s som en tilnærmelse. Alle gphoto2 indstillinger virker, med undtagelse af de følgende som hardware ikke understøtter: Sletning af individuelle eller udvalgte billeder (gphoto2 -d) Optagning (gphoto2 --capture eller --capture-image) Dog er optagning mulig ved brug af webcam interface, understøttet af spca50x kernel modul. GUI tilgang med gtkam er blevet testet, og virker. Kameraet danner dog ikke separate miniaturer. Idet billederne allerede er smÃ¥ og i lav opløsning, nedhenter driveren de aktuelle billeder, og bruger dem som miniaturer. Kameraet kan optage i 'video clip' tilstand. De resulterende rammer gemmes her som en serie af still-billeder. Brugeren kan animere dem med (f.eks.) ImageMagick's 'animeringsfunktion'. For flere detaljer om kameraets funktioner, se i libgphoto2/camlibs/clicksmart310/README.clicksmart310. Der er allerede en proces i gang. Dette kamera understøtter kun en proces af gangen. Vent til den igangværende proces er færdig.Der er ledig plads til endnu %d lavt-komprimerede %d mellem-komprimerede eller %d højt-komprimerede billeder Kameraet kan ikke optage smugkig.Kameraet kan ikke optage.Kameraet kan ikke udløse-optage.Dette kamera har et Jeilin JL2005%c chipsæt. Der er i alt %i billeder. Dette kamera har et Jeilin JL2005A chipsæt. Der er i alt %i billeder. Kameraet har ingen manual.Kameraet har ingen konfigurationsvalg.Kameraet stiller ikke informationer om driver til rÃ¥dighed.Kameraet understøtter ikke indstilling af konfigurationsvalg.Kameraet understøtter ikke summeringer.Denne driver understøtter kameraer med en Jeilin jl2005B eller C og D chip Disse kameraer understøtter hverken sletning af billeder, eller oplægning af data. Hvis der er videoklip pÃ¥ kameraet, kan disse hjemhentes som fortløbende still-billeder. For yderligere detaljer se libgphoto2/camlibs/README.jl2005c Denne driver understøtter kameraer med en Jeilin jl2005a chip Kameraet understøtter ikke sletning af billeder, eller oplægning af data. Afkodning af komprimerede billeder virker mÃ¥ske/mÃ¥ske ikke og virker ikke lige godt for alle understøttede kameraer. Hvis der er videoklip pÃ¥ kameraet, kan disse hjemhentes som fortløbende still-billeder. For yderligere detaljer se libgphoto2/camlibs/README.jl2005a Denne driver understøtter kameraer med en Mars MR97310 chip (og direkte sammenlignelige ?? Pixart PACx07??). Kameraene understøtter ikke sletning af billeder, eller oplægning af data. Afkodning af komprimerede billeder virker mÃ¥ske/mÃ¥ske ikke og virker ikke lige godt for alle understøttede kameraer. Foto-databehandling for Argus QuickClix er IKKE UNDERSTØTTET. Hvis der er videoklip pÃ¥ kameraet, kan disse hjemhentes som fortløbende still-billeder. For yderligere detaljer se libgphoto2/camlibs/README. Denne driver understøtter nogle kameraer med Sonix sn9c2028 chip. De følgende funktioner er understøttet: - miniaturer til en GUI forende - hele billeder i PPM format - sletning af alle billeder - slet seneste billede (virker mÃ¥ske ikke pÃ¥ alle Sonix kameraer) - billedoptagning til kamera ( ditto ) Hvis der er videoklip i kameraet, nedhentes video clip rammer som sammenhængende still-billeder eller som AVI filer, afhængigt af model. Miniaturer for AVI'er er still-billeder dannet fra første ramme. Enkeltbilleder kan ikke slettes, medmindre det er det sidste. Dette er driveren til Canon PowerShot, Digital IXUS, IXY Digital, og EOS Digital kameraer i deres naturlige (af og til kaldet "normal") tilstand Den understøtter ogsÃ¥ et mindre antal af Canon digital videooptagere med mulighed for fastbilleder. Den inkluderer kode til kommunikation via en seriel port eller USB forbindelse, men ikke (endnu) via IEEE 1394 (Firewire). Den er designet til at virke med over 70 modeller, sÃ¥vel ældre som PowerShot A5 og Pro70 fra 1998, og sÃ¥ nye som PowerShot A510 og EOS 350D fra 2005. Den er ikke blevet testet med EOS 1D eller EOS 1Ds. Ved A50, kan brug af 115200 bps være langsommere end brug af 57000 Hvis du oplever mange seriel-overførselsfejl, prøv at holde din computer sÃ¥ ledig som muligt (f.eks. ingen diskaktivitet) Dette bibliotek er blevet testet med et Kodak DC 215 zoom-kamera. Det virker nok ogsÃ¥ med et DC 200 og DC 210 kamera. Hvis du har sÃ¥dan et kamera, send besked til koltan@gmx.de og lad mig vide, hvis du har problemer med denne driver, eller hvis alt virker O.k.Denne forhÃ¥ndsvisning eksisterer ikke.MiniatureMiniaturehøjde: %d Miniaturestørrelse: %d Miniaturebredde: %d TidsformatTid: %a, %d %b %Y %T TidsforkortelseTidsforkortelses intervalTidsforkortelses antalTidsgrænse overskredet endda efter 2 ekstra forsøg. Kontakt %s.TimerTidsindstillet (enkelt) fotograferingTimer + FjernbetjeningTimer 10 sekTimer 2 sekTone-kompensationFor lysFor mørkFor mange forsøg fejlede.TopTopfield TF5000PVR Marcus Meissner Bibliotek til hentning / sending af filer fra en Topfield PVR. Porteret fra puppy (c) Peter Urbanec Toshiba David Hogue Toshiba pdr-m11 driver. Totalt antal blitz anvendt: %d Totalt antal billeder optaget: %d, Antal blitz anvendt: %d Totalt antal billeder optaget: %d Overførsel af pakke tidsudløb selv efter %i forsøg. Kontakt %s.Overførsel tidsudløb selv efter 2 forsøg. Giver op...Afskær objektPrøver at kontakte kameraet...Justering FarvetemperaturIndstil forvalgt 0Indstil forvalgt 1Indstil forvalgt 2Indstil forvalgt 3Indstil forvalgt 4WolframWolfram hvidbalance-korrektionTurbo-tilstandTvType af lysbilledshowUI sprogUI LÃ¥sUILÃ¥sTypeUNIX-tidUSB 1.1USB 2.0USB-hastighedIkke-tildeltIkke defineretLyd ikke defineretIkke-defineret kalenderpunktSamling ikke defineretIkke-defineret kontaktIkke-defineret dokumentIkke-defineret beskedIkkedefineret PTP egenskabVideo ikke defineretIkke-defineret Windows eksekverbarUnder > MTRUndervandsUkendtUkendt %dUkendt kamerabiblioteks fejlUkendt fejlUkendt fejl.Ukendt filtype %i.Ukendt blitz-tilstand %d, Ukendt modelUkendt model "%s"Ukendt værdiUkendt værdi %04dUkendt værdi %04xUkendt værdi 0x%04xUkendt zoom tilstand %d Ukendt(%04x)Ukendt: 0x%04x Svar ikke genkendtUegnet kortIkke understøttet kommando.Ikke understøttet port type anført %i = 0x%x. Initialisering umulig.Ikkeunderstøttet porttype: %d. Denne driver kan kun bruges med USB-kameraer. UbrugtOpdater enhedens firmwareOplæg URLOplægning er kun understøttet til '%s' mappenOplægger fil...Oplægger billede...Oplægger billede: %s.Oplægger...Øvre 1Øvre 2Bruger afbrød hjemhentningBruger defineret 1Bruger defineret 2Bruger defineret 3Fremstiller udvidelseFremstiller udvidelsesbeskrivelse: %s Fremstiller udvidelses ID: 0x%x(%d.%d) Fremstiller ID: %02x%02x Version: Version: %s Lodret AF tilVideo-tilstandVideo UDVideo udSøgergitterSøger gittervisningSøger virtuel horisontVigneteringskontrolIntensKortvarig opsætningVolumen niveauHvidbalance bracketingWEP 128-bitWEP 64-bitWIFI ESSIDWIFI kanalWIFI profilerWPL afspilningslisteVenter pÃ¥ færdiggørelse...Venter...Advarsels skærmAdvarselsniveau 0Advarselsniveau 1AdvarselsstatusAdvarsel i canon_usb_set_file_attributes: canon_usb_dialogue returnerede fejlstatus 0x%08x fra kameraetVi forventede 0x%x men modtog 0x%x. Kontakt %s.SvagHvidbalanceHvidbalance-korrektion forindstillet 0Hvidbalance-korrektion forindstillet 1Hvidbalance-korrektion forindstillet 2Hvidbalance-korrektion forindstillet 3Hvidbalance-korrektion forindstillet 4Hvidbalance-korrektion forindstillet nrHvidbalance Bracketing programHvidbalance Bracketing skridtHvidbalance farvetemperaturHvidbalance forvalgt navn 0Hvidbalance forvalgt navn 1Hvidbalance forvalgt navn 2Hvidbalance forvalgt navn 3Hvidbalance forvalgt navn 4Hvidbalance forvalgt nummerHvidbalance forvalgt værdi 0Hvidbalance forvalgt værdi 1Hvidbalance forvalgt værdi 2Hvidbalance forvalgt værdi 3Hvidbalance forvalgt værdi 4Hvid tavleHvidbalanceHvid tavleHvidniveauHvidbalanceHvidbalance justering AHvidbalance justering BHvidbalance X AHvidbalance X BHvidbalance nulstil-fejlVidvinkelBredt-omrÃ¥de AFWindows billedeformatSkrivSkrivebeskyttetForkert undvigesekvens: forventede 0x%02x, fik 0x%02x.XML dokumentYYYY/MM/DDÃ…r/mÃ¥ned/dagJaDu har prøvet at slette '%s' fra mappen '%s', men filsystemet understøtter ikke sletning af filer.Du skal angive en port før du initialiserer kameraet.Du skal være i filmetilstand for at kunne optage billeder.Du er nødt til at angive en mappe, der starter med /store_xxxxxxxxx/Dit Logitech Clicksmart 310 indeholder %i billede. Dit Logitech Clicksmart 310 indeholder %i billeder. Dit USB-kamera har et S&Q chipsæt. Der er i alt taget %i billeder Nogle af disse kan være film indeholdende adskillelige rammer Dit USB kamera har et Aox chipsæt, Antallet af lav-opløsningsbilleder er %i Antallet af høj-opløsningsbilleder er %i Antallet af billeder er %i Dit USB kamera er et Kodak EZ200. Antallet af billeder er %i Dit kamera er et iClick 5X. Der er i alt taget %i billeder. Dit USB-kamera ser ud til at være et LG GSM. Firmware: %s Firmware version: %s Din USB billedramme har et AX203 chipsæt Din USB billedramme har et ST2205 chipsæt Kameraet understøtter kun sletning af den sidste fil i kameraet. I dette tilfælde er det filen '%s'.Zone Focus (Tæt)Zone Focus (Tæt-pÃ¥)Zone Focus (Fjern)Zone Focus (Mellem)Zone Focus (Reserveret 1)Zone Focus (Reserveret 2)Zone Focus (Reserveret 3)Zone Focus (Reserveret 4)Zone Focus (Meget tæt)ZoomZoom (i millimeter)Zoom-niveau ændretZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: makro a/c adapteragfa_cl20 Agfa CL20 Linux driver gruppen! Email os pÃ¥ cl20@poeml.de besøg os pÃ¥ http://cl20.poeml.de autoauto + rødøje-reduktionbatterisort/hvidbulbkamera inaktivt i mere end 9 sekunder, geninitialisering kan ikke forespørges. canon_int_capture_image: afsluttende canon_usb_list_all_dirs() fejlede med status %icanon_int_capture_image: initiering af canon_usb_list_all_dirs() fejlede med status %licanon_int_get_info_func: FEJL: begyndelsesbesked er for kort (%i < minimum %i)canon_int_list_directory: FEJL: begyndelsesbesked er for kort (%i < minimum %i)canon_int_list_directory: NÃ¥ede ende af pakke under undersøgelse af den første katalogindgangcanon_int_list_directory: stødte pÃ¥ afkortet katalogindgangcanon_serial_get_dirents: Kunne ikke allokere %i byte af hukommelsencanon_serial_get_dirents: Kunne ikke genskabe katalogindgangsstørrelse til %i bytecanon_serial_get_dirents: Kunne ikke læse flere katalogindgangecanon_serial_get_dirents: Begyndelseskatalogindgang for kort (kun %i byte)canon_serial_get_dirents: For mange katalogindgange, det mÃ¥ køre i sløjfe.canon_serial_get_dirents: Modtog afkortet katalogindgangcanon_serial_get_dirents: canon_serial_dialogue fejlede ved hentning af katalogindgangecanon_usb_get_body_id: Modtog uventet datalængde (%i byte, forventet %i)canon_usb_get_dirents: Kunne ikke passe pakkeindholdet ind i buffer, '%.96s' (afkortet) for lang.canon_usb_get_dirents: canon_usb_long_dialogue fejlede under hentning af katalogindgange, returnerede %icanon_usb_list_all_dirs: Kunne ikke passe pakkeindholdet ind i buffer, '%.96s' (afkortet) for lang.canon_usb_list_all_dirs: canon_usb_long_dialogue fejlede under hentning af katalogindgange, returnerede %icanon_usb_lock_keys: Modtog uventet længde (%i byte, forventet %i)canon_usb_lock_keys: Modtog uventet længde fra "lock keys" funktionen (%i byte, forventet %i)canon_usb_set_file_attributes: canon_usb_dialogue fejledecanon_usb_unlock_keys: Modtog uventet længde (%i byte, forventet %i)farvecoolshot bibliotek vkunne ikke ændre ejernavnkunne ikke indstille tidøkonomieksterntudfyldningfingPhoto2 Mustek VDC-3500/Relisys Dimera 3500 Denne software blev skabt med hjælp fra proprietær information tilhørende StarDot Technologies. Forfatter: Brian Beattie Bidragydere: Chuck Homic Omsætning af rÃ¥-kamerabilleder til RGB Dan Fandrich Information om protokol, rÃ¥-billedformat, gphoto2 port gsmart300 bibliotek Till Adam Jerome Lodewyck Understøttelse for Mustek gSmart 300 digitalkameraer baseret pÃ¥ adskillige andre gphoto2 camlib-moduler, og specifikationer venligst leveret af Mustek. høj (640x480)høj-kompression, hp215 Marcus Meissner Driver der giver tilgang til HP Photosmart 215 kamera. Udvundet af det selvstændige hp215 program. Driveren tillader hentning af billeder og smugkig, og sletning af billeder. iClick 5X driver Theodore Kilgore iTTLudfyldningstilstanduendeliginterntjamcam bibliotek vjl2005a kamera bibliotek Theodore Kilgore jl2005bcd kamera bibliotek Theodore Kilgore fejl ved lÃ¥sning af nøgler.tabsfrilav (320x240)lav-kompression, mRÃ¥mRÃ¥ + Stor Fin JPEGmRÃ¥ + Stor Normal JPEGmRÃ¥ + Mellem Fin JPEGmRÃ¥ + Mellem Normal JPEGmRÃ¥ + Lille Fin JPEGmRÃ¥ + Lille Normal JPEGmellem-kompression, menuingen status rapporteret.ingennormalikke tilgængelig: %sslukkettændttil + rødøje-reduktionpÃ¥ batteripccam600 init: Uventet fejl: gp_port_read returnerede %d i stedet for %dpccam600_close: returværdi var %d i stedet for %dpccam600_get_file:fik indeks %d men forventede indeks > %dpccam600_init: Forventede %d blokke, fik %dpccam600_init: Forventede > %d blokke, fik %dafspilstrøm O.k.mangler strømskrivebeskyttetlæse/skriveklaroptagrekursive kald er ikke understøttet af sierradriveren! Kontakt %s.rødøje blitz afbrudt. rødøje blitz til. rødøje-reduktionsRÃ¥sRÃ¥ + Stor Fin JPEGsRÃ¥ + Stor Normal JPEGsRÃ¥ + Mellem Fin JPEGsRÃ¥ + Mellem Normal JPEGsRÃ¥ + Lille Fin JPEGsRÃ¥ + Lille Normal JPEGsRGBsRGB (naturlig)sRGB (portræt)sierra SPARClite bibliotek Scott Fritzinger Understøttelse for sierra-baserede digitalkameraer inkluderende Olympus, Nikon, Epson og Pentax. Tak til Data Engines (www.dataengines.com) for brug af deres Olympus C-3030Z for USB understøttelsesimplementation.spca50x bibliotek vsq905 almen driver Theodore Kilgore sq905C almen driver Theodore Kilgore standardsuperfinsx330z er kun USBindstil tidikke i stand til at gætte første CRC værdi ikke defineretuventet datatype %iukendt (0x%02x)ukendt kompression %d, ukendt opløsning %d) vKalender1vKalender2vKort2vKort3advarsel: CRC ikke kontrolleret (add len %d, value 0x%04x) ######################### libgphoto2-2.5.9/po/en@quot.header0000644000175000001440000000226312557123417013732 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # libgphoto2-2.5.9/po/uk.po0000644000175000001440000140101412623156273012122 00000000000000# Ukrainian translation of libgphoto2. # Copyright (C) 2000 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # # Yuri Syrota , 2000. # Maxim V. Dziumanenko , 2005-2007. # Yuri Chornoivan , 2012, 2013, 2014, 2015. msgid "" msgstr "" "Project-Id-Version: libgphoto2 2.5.8\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2015-07-12 14:27+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 1.5\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" "Adc65\n" "Benjamin Moos " #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" "ЗдаєтьÑÑ, фотоапарат не викориÑтовує ноÑій даних CompactFlash.\n" "Ðа жаль, у поточній верÑÑ–Ñ— підтримки таких фотоапаратів не передбачено :-(\n" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" "Фотоапаратом було знÑто %d фотографій. Фотоапарат викориÑтовує ноÑій даних " "CompactFlash.\n" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "Розробники драйвера Agfa CL20 Ð´Ð»Ñ Linux!\n" " Ел. адреÑа cl20@poeml.de \n" " Веб-адреÑа http://cl20.poeml.de " #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "Ваш USB фотоапарат побудований на мікроÑхемах Aox.\n" "КількіÑть зображень низької роздільної здатноÑті = %i\n" "КількіÑть зображень виÑокої роздільної здатноÑті = %i\n" "КількіÑть зображень = %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Базовий драйвер Ð´Ð»Ñ Aox\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "Вашу картинну рамку USB заÑновано на наборі мікроÑхем AX203\n" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "ЗаÑновані на AX203 картинні рамки можуть працювати у широкому\n" "Ñпектрі роздільних здатноÑтей. За допомогою драйвера gphoto длÑ\n" "таких приÑтроїв ви зможете звантажувати, вивантажувати Ñ– вилучати\n" "файли з картинної рамки." #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "Драйвер картинних рамок AX203 USB\n" "Hans de Goede \n" "За допомогою цього драйвера можна отримувати, вивантажувати та\n" "вилучати файли з картинної рамки." #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 msgid "Picture Frame Configuration" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð°Ð¼ÐºÐ¸ зображеннÑ" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "Синхронізувати дані Ñ– чаÑові позначки рамки з комп’ютером" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "КількіÑть зображень: %i\n" "ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "ДоÑÐ»Ñ–Ð´Ð¶ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ зображеннÑ:\n" "Jeff Laing \n" "\n" "Реалізовано викориÑтовуючи документацію з\n" "Інтернет за згодою Vision." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "Ðе вдалоÑÑ Ñтворити каталог %s." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ каталог %s." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "помилка Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ñˆ." #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*Ðевідомо*" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image: перша Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ canon_usb_list_all_dirs() завершилаÑÑŒ " "помилкою з кодом %li" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image: оÑÑ‚Ð°Ð½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ canon_usb_list_all_dirs() " "завершилаÑÑŒ помилкою з кодом %i" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "" "Ðадто довга назва '%s' (%li Ñимволів), допуÑкаєтьÑÑ Ð¼Ð°ÐºÑимум 30 Ñимволів." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "Символи нижнього регіÑтру у %s не допуÑкаютьÑÑ." #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory: ERROR: початкове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ñ‚Ð¾ коротке (%i < " "мінімум %i)" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_directory: ДоÑÑгнуто кінець пакету при аналізі першого " "елементу каталогу" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "canon_int_list_directory: обрізано Ð·Ð°Ð¿Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Файл захищений." #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_get_info_func: ПОМИЛКÐ: початкове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ñ‚Ð¾ коротке (%i < " "мінімум %i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ мініатюру JPEG: відÑутній початок/кінець" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ мініатюру JPEG: дані не у форматі JFIF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "параметр NULL \"%s\" у %s Ñ€Ñдок %i" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" "Ðевідомо Ñк працювати із значеннÑми camera->port->type, що дорівнюють %i 0x" "%x у %s, Ñ€Ñдок %i." #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "КРИТИЧÐРПОМИЛКÐ: невідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ñ— Ñуми Ð´Ð»Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ %d\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "не вдаєтьÑÑ Ð¾Ð±Ñ‡Ð¸Ñлити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ñ— Ñуми\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "попередженнÑ: CRC не перевірено (+ довжина %d, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0x%04x) " "#########################\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "Режим ÑуміÑноÑті" #: camlibs/canon/library.c:98 msgid "Thumbnail" msgstr "Мініатюра" #: camlibs/canon/library.c:99 msgid "Full Image" msgstr "Повне зображеннÑ" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "Кнопка" #: camlibs/canon/library.c:216 msgid "Auto focus: one-shot" msgstr "ÐвтофокуÑ: one-shot" #: camlibs/canon/library.c:217 msgid "Auto focus: AI servo" msgstr "ÐвтофокуÑ: AI servo" #: camlibs/canon/library.c:218 msgid "Auto focus: AI focus" msgstr "ÐвтофокуÑ: AI focus" #: camlibs/canon/library.c:219 msgid "Manual focus" msgstr "Ручний фокуÑ" #: camlibs/canon/library.c:224 msgid "Beep off" msgstr "Сигнал вимкнено" #: camlibs/canon/library.c:225 msgid "Beep on" msgstr "Сигнал увімкнено" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 msgid "Flash off" msgstr "Спалах вимкнено" #: camlibs/canon/library.c:231 msgid "Flash on" msgstr "Спалах увімкнено" #: camlibs/canon/library.c:232 msgid "Flash auto" msgstr "ÐвтоÑпалах" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "ÐВТО" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "П" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "Tv" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "Av" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "M" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "A-DEP" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "M-DEP" #: camlibs/canon/library.c:267 msgid "Manual 2" msgstr "Вручну 2" #: camlibs/canon/library.c:268 msgid "Far scene" msgstr "Ð”Ð°Ð»ÑŒÐ½Ñ Ñцена" #: camlibs/canon/library.c:269 msgid "Fast shutter" msgstr "Швидкий затвор" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "Повільний затвор" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "Ðічне оÑвітленнÑ" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "Тони Ñірого" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "СепіÑ" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 msgid "Portrait" msgstr "Портрет" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Точковий" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Макро" #: camlibs/canon/library.c:277 msgid "BW" msgstr "ЧБ" #: camlibs/canon/library.c:278 msgid "PanFocus" msgstr "ПанФокуÑ" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "Жвавий" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 msgid "Neutral" msgstr "Ðейтральний" #: camlibs/canon/library.c:282 msgid "Long shutter" msgstr "Повільна зйомка" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "ÐадзбільшеннÑ" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "ЛиÑÑ‚Ñ" #: camlibs/canon/library.c:285 msgid "Indoor" msgstr "У приміщенні" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "Феєрверк" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "ПлÑж" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "Під водою" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "Сніг" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "Діти Ñ– тваринки" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "Ðічний знімок" #: camlibs/canon/library.c:292 msgid "Digital macro" msgstr "Цифрове збільшеннÑ" #: camlibs/canon/library.c:293 msgid "MyColors" msgstr "МоїКольори" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "Фото у відео" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "RAW" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "RAW 2" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "Маленький звичайний JPEG" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "Маленький JPEG доброї ÑкоÑті" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "Середній звичайний JPEG" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "Середній JPEG доброї ÑкоÑті" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "Великий звичайний JPEG" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "Великий JPEG доброї ÑкоÑті" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "RAW + маленький звичайний JPEG" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "RAW + маленький JPEG доброї ÑкоÑті" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "RAW + Ñередній звичайний JPEG" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "RAW + Ñередній JPEG доброї ÑкоÑті" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "RAW + великий звичайний JPEG" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "RAW + великий JPEG доброї ÑкоÑті" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" "Це драйвер Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² Canon PowerShot, Digital IXUS, IXY Digital,\n" " та EOS Digital у Ñ—Ñ… рідному режимі (що іноді називають \"звичайним\").\n" "Драйвер також підтримує невелику кількіÑть цифрових камкодерів Canon,\n" " що мають функції роботи із зображеннÑми.\n" "До драйвера включено код зв'Ñзку з поÑлідовним портом чи USB,\n" " але (поки що) не включено код Ð´Ð»Ñ IEEE 1394 (Firewire).\n" "СуміÑний з понад 70 моделÑми, Ñк Ñтарими PowerShot A5\n" " та Pro70 випуÑку 1998, так Ñ– з новими PowerShot A510 та EOS 350D випуÑку\n" " 2005.\n" "Драйвер не перевірÑвÑÑ Ð· EOS 1D чи EOS 1Ds.\n" "Ð”Ð»Ñ A50 викориÑÑ‚Ð°Ð½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті 115200 біт/Ñ Ð¼Ð¾Ð¶Ðµ бути фактично повільніше " "ніж 57600\n" "Якщо виникають чиÑленні помилки при передачі через поÑлідовний порт, " "Ñпробуйте\n" " зменшити активніÑть комп'ютера (наприклад, диÑкову активніÑть)\n" #: camlibs/canon/library.c:497 #, c-format msgid "Camera unavailable: %s" msgstr "Фотоапарат недоÑтупний: %s" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Ð’Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÐ°" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ назву диÑка: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Причина невідома" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ інформацію про диÑк: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° 1 у get_file_func() (%s Ñ€Ñдок %i)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "Ðе знайдено звуковий файл Ð´Ð»Ñ %s " #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " ПриÑтрій %s\n" " %11s вÑього байтів\n" " %11s доÑтупно байтів" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "блок живленнÑ" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "акумулÑтор" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "нормальне живленнÑ" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "збій живленнÑ" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "немає даних: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (Ñ‡Ð°Ñ ÐºÐ¾Ð¼Ð¿'ютера %s%i Ñекунд)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°:\n" " Модель: %s\n" " ВлаÑник: %s\n" "\n" "ЖивленнÑ: %s\n" "\n" "Карта пам'Ñті:\n" "%s\n" "\n" "ЧаÑ: %s\n" #: camlibs/canon/library.c:1145 msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Драйвер Ð´Ð»Ñ Canon PowerShot Ñтворений\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ A5 - Ole W. Saastad\n" "Додаткові вдоÑконаленнÑ\n" " Holger Klemm\n" " Stephen H. Westin" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Помилка Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° «%s»: %s" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Помилка Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²'Ñзаного файла мініатюри" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "" "ШвидкоÑті, що перевищують 57600 не підтримуютьÑÑ Ð¿Ñ€Ð¸ завантаженні у цей " "фотоапарат" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Ðе вдалоÑÑŒ отримати букву приÑтрою карти пам'Ñті" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "Ðе вдалоÑÑ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸, немає вільної назви теки!\n" "Тека з назвою 999CANON вже Ñ–Ñнує та міÑтить Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ AUT_9999.JPG." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Ðе вдалоÑÑ Ñтворити каталог \\DCIM" #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Ðе вдалоÑÑ Ñтворити цільовий каталог." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° та драйвера" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Параметри фотоапарата" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 msgid "Owner Name" msgstr "Ð†Ð¼â€™Ñ Ð²Ð»Ð°Ñника" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 msgid "Capture Size Class" msgstr "ÐšÐ»Ð°Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ захопленнÑ" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "ШвидкіÑть ISO" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "Ðевідомо" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 msgid "Shooting mode" msgstr "Режим зніманнÑ" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 msgid "Shutter Speed" msgstr "ШвидкіÑть затвора" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "МаÑштаб" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "Діафрагма" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 msgid "Image Format" msgstr "Формат зображеннÑ" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Режим фокуÑуваннÑ" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Режим Ñпалаху" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Сигнал" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 msgid "Camera Actions" msgstr "Дії фотоапарата" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "Синхронізувати дату Ñ– Ñ‡Ð°Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° з ПК" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 msgid "Camera Status Information" msgstr "Дані щодо Ñтану фотоапарата" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "Модель фотоапарата" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Дата та чаÑ" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Помилка" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 msgid "Firmware Version" msgstr "ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸" #: camlibs/canon/library.c:1956 msgid "Power" msgstr "Степенева" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Драйвер" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Перелік уÑÑ–Ñ… файлів" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Зберігати назву файла при вивантаженні" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Фотоапарат недоÑтупний" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Ім'Ñ Ð²Ð»Ð°Ñника змінено" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "не вдаєтьÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ ім'Ñ Ð²Ð»Ð°Ñника" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "Змінено ÐºÐ»Ð°Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ захопленнÑ" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "Ðеправильний параметр клаÑу розміру захопленнÑ" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "Ðеправильний параметр величини ISO" #: camlibs/canon/library.c:2056 msgid "ISO speed changed" msgstr "ШвидкіÑть ISO змінено" #: camlibs/canon/library.c:2058 msgid "Could not change ISO speed" msgstr "Ðе вдалоÑÑ Ð²Ñтановити швидкіÑть ISO" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "Ðекоректні параметри режиму зніманнÑ" #: camlibs/canon/library.c:2085 msgid "Shooting mode changed" msgstr "Змінено режим зніманнÑ" #: camlibs/canon/library.c:2087 msgid "Could not change shooting mode" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ режим зніманнÑ" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "Ðеправильний параметр швидкоÑті затвора" #: camlibs/canon/library.c:2114 msgid "Shutter speed changed" msgstr "ШвидкіÑть затвора змінено" #: camlibs/canon/library.c:2116 msgid "Could not change shutter speed" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ швидкіÑть затвора" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 msgid "Invalid aperture setting" msgstr "некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 msgid "Aperture changed" msgstr "Діафрагму змінено" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 msgid "Could not change aperture" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ діафрагму" #: camlibs/canon/library.c:2167 msgid "Invalid exposure compensation setting" msgstr "Ðекоректний параметр Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ ÐµÐºÑпозиції" #: camlibs/canon/library.c:2170 msgid "Exposure compensation changed" msgstr "Змінено Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ ÐµÐºÑпозиції" #: camlibs/canon/library.c:2172 msgid "Could not change exposure compensation" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ ÐµÐºÑпозиції" #: camlibs/canon/library.c:2194 msgid "Invalid image format setting" msgstr "Ðекоректний параметр формату зображеннÑ" #: camlibs/canon/library.c:2198 msgid "Image format changed" msgstr "Формат Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾" #: camlibs/canon/library.c:2200 msgid "Could not change image format" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ формат зображеннÑ" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "Ðекоректний режим фокуÑуваннÑ" #: camlibs/canon/library.c:2226 msgid "Focus mode changed" msgstr "Режим фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾" #: camlibs/canon/library.c:2228 msgid "Could not change focus mode" msgstr "не вдаєтьÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ режим фокуÑуваннÑ" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "Ðекоректний параметр режиму Ñигналу" #: camlibs/canon/library.c:2255 msgid "Beep mode changed" msgstr "Режим Ñигналу змінено" #: camlibs/canon/library.c:2257 msgid "Could not change beep mode" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ режим Ñигналу" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "МаÑштаб змінено" #: camlibs/canon/library.c:2276 msgid "Could not change zoom level" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ маÑштаб" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "Ðекоректний параметр режим Ñпалаху" #: camlibs/canon/library.c:2332 msgid "Flash mode changed" msgstr "Режим Ñпалаху змінено" #: camlibs/canon/library.c:2334 msgid "Could not change flash mode" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ режим Ñпалаху" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "Ñ‡Ð°Ñ Ð²Ñтановлено" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "не вдаєтьÑÑ Ð²Ñтановити чаÑ" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "Вказано непідтримуваний тип порту %i = 0x%x. Ð†Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð°." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "ÐкумулÑтор розрÑджений, фотоапарат вимкнений." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "ПОМИЛКÐ: неÑподіване повідомленнÑ" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "ПОМИЛКÐ: накладка повідомлень" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "ПОМИЛКÐ: Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ñ‡ÐµÑ€Ð³Ð¾Ð²Ð¾Ñті" #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "ПОМИЛКÐ: неочікуваний тип пакету." #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "ПОМИЛКÐ: неправильний формат повідомленнÑ." #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "ПОМИЛКÐ: неочікуване повідомленнÑ2." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Ð’Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ" #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "canon_serial_get_dirents: canon_serial_dialogue не вдаєтьÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ " "елементи каталогу" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" "canon_serial_get_dirents: внутрішній пакет елементу каталогу надто короткий " "(лише %i байтів)" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "canon_serial_get_dirents: Ðе вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %i байтів пам'Ñті" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "canon_serial_get_dirents: не вдаєтьÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ інший Ð·Ð°Ð¿Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "canon_serial_get_dirents: отримано обрізаний елемент каталогу" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" "canon_serial_get_dirents: надто багато елементів каталогу, треба проходити " "циклом." #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents: Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ розмір буферу елементів " "каталогу на %i байтів" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Помилка зміни швидкоÑті." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Ð¡ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ..." #: camlibs/canon/serial.c:1311 msgid "Camera OK." msgstr "Фотоапарат ГÐРÐЗД." #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Пошук фотоапарата ..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Спроба зв'ÑзатиÑÑŒ з фотоапаратом..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Помилка зв'Ñзку 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Ðемає відповіді від фотоапарата" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Ðе розпізнана відповідь" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "ВиÑвлено \"%s\" або \"%s\"" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "Ðевідома модель \"%s\"" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "Ðеправильний EOT" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Помилка зв'Ñзку 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Помилка зв'Ñзку 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Зміна швидкоÑті ... зачекайте..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Помилка зміни швидкоÑті" #: camlibs/canon/serial.c:1454 msgid "Error waiting for ACK during initialization, retrying" msgstr "" "Помилка Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñигналу ACK під Ñ‡Ð°Ñ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—, робимо повторну Ñпробу" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Помилка Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ ACK при ініціалізації" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Фотоапарат підключений" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "ПОМИЛКÐ: критична помилка. Продовжувати неможливо" #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "ПОМИЛКÐ: %d надто великий" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¼Ñ–Ð½Ñ–Ð°Ñ‚ÑŽÑ€Ð¸..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "ÐЕ РОЗПІЗÐÐÐО" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "Ðе вдалоÑÑ Ð²Ñтановити з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· фотоапаратом" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "Фотоапарат вже активний" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "Фотоапарат виведений з режиму Ñну" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "Ðерозпізнана відповідь фотоапарата '%c'" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" "Помилка кроку 2 ініціалізації: («%s» при читанні %i). Фотоапарат не " "працюватиме." #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "Помилка кроку 2 ініціалізації! Повернуто %i байтів заміÑть %i. Фотоапарат не " "працюватиме." #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" "Помилка кроку 3 ініціалізації: «%s» при читанні %i. Фотоапарат не " "працюватиме." #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" "Помилка кроку 3 ініціалізації! Повернуто %i заміÑть %i. Фотоапарат не " "працюватиме." #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" "Помилка кроку 3 ініціалізації: «%s» під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñу %i. Фотоапарат не " "працюватиме." #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "Помилка кроку 4: \"%s\" при читанні %i. Фотоапарат не працює" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "Помилка кроку 4! (повернуто %i заміÑть %i). Фотоапарат не працюватиме." #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "Фотоапарат неготовий, чиÑленні помилки на запит 'Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°': " "%s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "Фотоапарат не готовий, помилка get_battery: %s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Ðеочікувана довжина результату функції \"блокувати " "клавіші\" (%i байтів, очікувалоÑÑŒ %i)" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Результат неочікуваної довжини (%i байтів, очікувалоÑÑŒ " "%i)" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_unlock_keys: Результат неочікуваної довжини (%i байтів, " "очікувалоÑÑŒ %i)" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_get_body_id: Результат неочікуваної довжини (%i байтів, " "очікувалоÑÑŒ %i)" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… ..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "СкінчилаÑÑŒ пам'Ñть: потрібно %d байтів." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes: помилка canon_usb_dialogue" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ canon_usb_set_file_attributes: у canon_usb_dialogue помилка " "ÑтатуÑу фотоапарата 0x%08x" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл \"%s\"" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "СкінчилаÑÑŒ пам'Ñть: потрібно %ld байтів." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "Помилка Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "Файл надто великий. Перш ніж вивантажувати інші файли Ñлід вимкнути " "фотоапарат та увімкнути знову." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" "canon_usb_get_dirents: Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити файл у буфер, " "'%.96s' (обрізано) надто довгий." #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents: не вдаєтьÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ елементи каталогу " "canon_usb_long_dialogue, отримано %i" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" "canon_usb_list_all_dirs: пакет не уміщаєтьÑÑ Ñƒ буфер, '%.96s' (обрізано) " "надто довгий." #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs: помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñ–Ð² каталогу " "canon_usb_long_dialogue, отримано %i" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "ВиÑвлено '%s'." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "Ðазва \"%s\" з фотоапарата не відповідає відомому фотоапарата" #: camlibs/casio/casio-qv.c:152 #, c-format msgid "Image type %d not supported" msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ %d не підтримуєтьÑÑ" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %s захищене від видаленнÑ." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" "Драйвер напиÑав Lutz Mueller .\n" "Програма міÑтить код QVplay, що напиÑаний Ken-ichi HAYASHI та Jun-ichiro \"itojun\" Itoh .\n" "Інтеграцію QVplay виконав Michael Haardt ." #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "ЗарÑд акумулÑтора: %.1f Вольт. РевізіÑ: %08x." #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "ÐкумулÑтор" #: camlibs/casio/casio-qv.c:275 msgid "Brightness" msgstr "ЯÑкравіÑть" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 msgid "Too bright" msgstr "Дуже ÑÑкравий" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 msgid "Too dark" msgstr "Дуже темний" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "Гаразд" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "Ваш Logitech Clicksmart 310 міÑтить %i зображеннÑ.\n" msgstr[1] "Ваш Logitech Clicksmart 310 міÑтить %i зображеннÑ.\n" msgstr[2] "Ваш Logitech Clicksmart 310 міÑтить %i зображень.\n" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" "Дві роздільні здатноÑті, 352x288 та 176x144. Дані фотографії при\n" "завантаженні зберігаютьÑÑ Ñƒ форматі JPEG Ñ– тому не мають наперед визначених\n" "розмірів. Отже, макÑимальну заÑвлену кількіÑть фотографій, Ñку може міÑтити\n" "фотоапарат, Ñлід вважати приблизною.\n" "УÑÑ– параметри gphoto2 працюватимуть, за винÑтком вказаних нижче, Ñкі не\n" "підтримуютьÑÑ Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¾:\n" "\tÐ’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¾ÐºÑ€ÐµÐ¼Ð¸Ñ… чи позначених фотографій (gphoto2 -d)\n" "\tÐ—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ (gphoto2 --capture чи --capture-image)\n" "Проте, Ð´Ð»Ñ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° викориÑтовувати Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²ÐµÐ±-камери,\n" "що підтримуєтьÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¼ Ñдра spca50x.\n" "Перевірено роботу через графічний Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ gtkam. Проте,\n" "на фотоапарат не передбачено ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾ÐºÑ€ÐµÐ¼Ð¸Ñ… мініатюр. ОÑкільки файли\n" "зображень Ñ– без того доÑить малі, при показі мініатюр драйвер завантажує\n" "Ñправжні зображеннÑ.\n" "Фотоапарат може знімати у режимі «відеокліп». Кадри\n" "зберігаютьÑÑ Ñк поÑлідовніÑть окремих фотографій. Ð”Ð»Ñ ÑтвореннÑ\n" "анімації можна викориÑтати (наприклад) функцію анімації у ImageMagick.\n" "Додаткові подробиці щодо роботи фотоапарата наведені у \n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "Logitech Clicksmart 310 драйвер\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" "Ð”Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² на оÑнові мікроÑхем S&Q Technologies, Ð´Ð»Ñ Ñких передбачено\n" "ідентифікатор виробника USB 0x2770 та ідентифікатори продуктів 0x905C,\n" "0x9050, 0x9051, 0x9052 та 0x913D. Фотографії зберігаютьÑÑ Ñƒ форматі PPM.\n" "\n" "Ðа деÑких з таких фотоапаратів передбачено програмне Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð²ÑÑ–Ñ…\n" "фотографій, на інших — ні. Ðа жодному з підтримуваних фотоапаратів не " "можливе\n" "програмне зніманнÑ. Ðа вÑÑ–Ñ… фотоапаратах можливий попередній переглÑд\n" "Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ– надÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° комп’ютер).\n" "Якщо Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ фотоапарата можливе Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… знімків, попереднє\n" "Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚Ð¸Ð¼Ðµ до Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ з фотоапарата.\n" "\n" "Ð’Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… на такі фотоапарати не передбачено. Крім того, на\n" "жодному з підтримуваних фотоапаратів не можна вилучати окремі фотографії\n" "за допомогою певної команди, відданої з комп’ютера.\n" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "Базовий драйвер sq905C\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ типу не підтримуютьÑÑ" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "КількіÑть зображень: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "ПідтримуєтьÑÑ Ð»Ð¸ÑˆÐµ Ð·Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ð´Ð¾ кореневої теки - ви запитали ÑпиÑок файлів з " "теки '%s'." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñті зображень" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про зображеннÑ" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Зйомка цього типу не підтримуєтьÑÑ" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (акумулÑтор зарÑджений на %d%%)" #: camlibs/dimera/dimera3500.c:455 #, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 вер. %s %d/%d %d:%d.\n" "%d знімків з приблизно %d (виÑока розд. здатніÑть) чи %d (низька розд. " "здатніÑть).\n" "МожливоÑті фотоапарата: %s, %s, %s, %s.\n" "Карта пам'Ñті %s, %s та %s.\n" "Вибрано роздільну здатніÑть %s.\n" "Фотоапарат %s на оÑнові %s\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Спалах" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 msgid "No Flash" msgstr "Без Ñпалаху" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Подвійна іриÑова діаграма" #: camlibs/dimera/dimera3500.c:468 msgid "No Dual Iris" msgstr "Без подвійної іриÑової діаграми" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŒÐ½Ð¾Ñ— здатноÑті" #: camlibs/dimera/dimera3500.c:470 msgid "No Resolution Switch" msgstr "Без Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŒÐ½Ð¾Ñ— здатноÑті" #: camlibs/dimera/dimera3500.c:472 msgid "No Power Light" msgstr "Без індикатора живленнÑ" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "УВІМК" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "ВИМК" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "готовий" #: camlibs/dimera/dimera3500.c:476 msgid "Not ready" msgstr "Ðеготовий" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "у режимі заповненнÑ" #: camlibs/dimera/dimera3500.c:478 msgid "Not in fill mode" msgstr "Ðе у режимі заповненнÑ" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "низька (320x240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "виÑока (640x480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "зовні" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "вÑередині" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* ЧаÑто артефакти на зображеннÑÑ… або збої передачі даних\n" " виникають внаÑлідок недоÑтатнього зарÑду акумулÑтора.\n" "* Зроблені цим апаратом по віддаленій команді знімки \n" " зберігаютьÑÑ Ñƒ тимчаÑовому ОЗУ, та не запиÑуютьÑÑ Ð½Ð° карту пам'Ñті.\n" "* Витримка при зйомці фотографії може бути задана вручну\n" " або визначатиÑÑŒ автоматично.\n" "* Поки що ÑкіÑть зображень поÑтупаєтьÑÑ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ð¹ ÑкоÑті.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "При Ñтворенні цієї програми викориÑтовувалаÑÑŒ\n" "закрита інформаціÑ, що належить фірмі\n" "StarDot Technologies.\n" "\n" "Ðвтор:\n" " Brian Beattie \n" "Допомагали:\n" " Chuck Homic \n" " ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… даних знімків у формат RGB\n" " Dan Fandrich \n" " Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ протокол обміну, формат вихідних даних,\n" " Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ð´Ð»Ñ gphoto2\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð· карти" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "ÐедоÑтатньо пам'Ñті" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "КопіюєтьÑÑ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "КориÑтувач ÑкаÑував завантаженнÑ" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Помилка зйомки" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "ЕкÑпозиціÑ" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "Ðвтоматичне Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ під Ñ‡Ð°Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "ТриваліÑть екÑпозиції при попередньому переглÑді" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "Ðвтоматичний Ñпалах при зйомці" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Помилка Ð²Ñ–Ð´ÐºÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ€Ñ‚Ñƒ" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Помилка ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ñтану камери" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Помилка вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті обміну даними з фотоапаратом" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Схоже, що це модем, а не фотоапарат" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑƒ файлів у '%s'..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÑпиÑку тек у '%s'..." #: camlibs/directory/directory.c:381 #, c-format msgid "Could not get information about '%s' (%s)." msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ інформацію щодо «%s» (%s)." #: camlibs/directory/directory.c:414 #, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ інформацію щодо «%s» у «%s» (%s)." #: camlibs/directory/directory.c:462 #, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ файла «%s» у «%s» (%s)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ '%s'." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" "При переглÑді каталогу \"camera\" виводитьÑÑ ÑпиÑок фотографій на диÑку." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "Режим переглÑду каталогу - Scott Fritzinger ." #: camlibs/directory/directory.c:671 #, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ файл «%s» у теці '%s' (код помилки %i: %s)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" "Програма ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑ–Ð² Ð´Ð»Ñ Digital Dream Enigma 1.3. від " ", Ñтворена на оÑнові драйвера spca50x. ПодÑка " "авторам spca50x! Ðдаптувати ваш драйвер Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ апарата було неÑкладно! " #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "Фотоапарат надіÑлав лише %i байтів, але потрібно принаймні %i." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Ðе вдалоÑÑ Ð·Ð²'ÑзатиÑÑŒ з фотоапаратом." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Отримано неочікувані дані (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "Ðеправильна escape-поÑлідовніÑть: очікувалоÑÑŒ 0x%02x, отримано 0x%02x." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Ðеправильні дані - отримано 0x%02x, очікувалоÑÑŒ 0x%02x." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "Ðеправильні дані - отримано 0x%02x, очікувалоÑÑŒ 0x%02x або 0x%02x." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "Ðеправильна контрольна Ñума - отримано 0x%02x, очікувалоÑÑŒ 0x%02x." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "Фотоапарат відкинув команду." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "Самовільне ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ñтану фотоапарата." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "Фотоапарат надіÑлав неочікувані дані 0x%02x." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "ЗавантаженнÑ..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %i байтів Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼Ñ–Ð½Ñ–Ð°Ñ‚ÑŽÑ€Ð¸." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %i байтів Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼Ð°Ð»ÑŽÐ½ÐºÑƒ." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "Фотоапарат не приймає '%s' Ñк назву файла." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "" "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ (фотоапарат повернув код 0x%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "Фотоапарат не підтримує швидкіÑть %i." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "Ðе вдалоÑÑ Ð²Ñтановити швидкіÑть %i (фотоапарат повернув код %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Побудовано на fujiplay від Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "Бітова швидкіÑть %ld не підтримуєтьÑÑ." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Параметри фотоапарата FUJI" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Дата та чаÑ" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "ВерÑÑ–Ñ: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Модель: " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "ДоÑтупна пам'Ñть: " #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "Бібліотека gsmart300 \n" "Till Adam \n" "Jerome Lodewyck \n" "Підтримка фотоапаратів Mustek gSmart 300\n" "оÑнована на кількох модулÑÑ… gphoto2 та ÑпецифікаціÑÑ…, що люб'Ñзно надані " "фірмою Mustek.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Ðепідтримуваний тип порту: %d. Цей драйвер працює лише з фотоапаратами USB.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Ðе вдалоÑÑ Ñкинути Ñтан фотоапарата.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Ваш фотоапарат підтримує Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð»Ð¸ÑˆÐµ оÑтаннього файла на фотоапараті. " "Тобто, це файл '%s'." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" "Поточний Ñ‡Ð°Ñ Ð½Ð° фотоапараті: %04d-%02d-%02d %02d:%02d\n" "Вільної пам'Ñті на картці: %d\n" "Зображень на картіі: %d\n" "Вільного міÑÑ†Ñ Ð½Ð° картці Ð´Ð»Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ: %d\n" "ЗарÑд батареї: %d%%." #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" "hp215\n" "Marcus Meissner \n" "Драйвер Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° HP Photosmart 215.\n" "Побудовано на оÑнові окремої програми hp215.\n" "Драйвер дозволÑÑ” завантажувати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° мініатюри, та дозволÑÑ” видалÑти " "зображеннÑ.\n" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "Ваш USB-фотоапарат iClick 5X.\n" "Загальна кількіÑть отриманих зображень %i\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" "Ð”Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² з ID 0x2770:0x9153.\n" "\n" "Ðе рекомендуєтьÑÑ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовувати графічну програму з цим\n" "фотоапаратом, Ñкщо ви не екÑпериментуєте Ñ– не хочете\n" "побачити чи виникне коротке замиканнÑ.\n" "Якщо ви Ñправді хочете отримати фотографії,\n" "Ñпробуйте gphoto2 -P\n" "з командного Ñ€Ñдка.\n" "ЗауваженнÑ: навіть не намагайтеÑÑŒ отримати відеокліпи.\n" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "iClick 5X driver\n" "Theodore Kilgore \n" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Отримано знімків : %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "Бібліотека jamcam v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "КопіюютьÑÑ Ð´Ð°Ð½Ñ–..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "КопіюєтьÑÑ Ð¼Ñ–Ð½Ñ–Ð°Ñ‚ÑŽÑ€Ð°..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "Фотоапарат JD11 доÑить непогано працює з цим драйвером.\n" "Ð”Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ð¸Ð¹ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ RS232 зі швидкіÑтю 115 Кбіт.\n" "Драйвер дозволÑÑ” копіювати\n" "\n" " - мініатюри (64x48, формат PGM )\n" " - фотографії (640x480, формат PPM)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Драйвер фотоапарата Jenoptik JD11.\n" "Ð”Ð»Ñ Ð´Ð¾ÑÐ»Ñ–Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ викориÑтовувалиÑÑŒ WINE та IDA." #: camlibs/jd11/jd11.c:186 msgid "JD11 Configuration" msgstr "Параметри JD11" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Інші параметри" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "ТриваліÑть наддовгої екÑпозиції" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Параметри кольорів" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "Червоний" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Зелений" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Синій" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Цей фотоапарат побудовано на оÑнові мікроÑхеми Jeilin JL2005A.\n" "Ðа ньому зберігаєтьÑÑ %i фотографій. \n" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" "Цей драйвер призначено Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ з фотоапаратами з мікроÑхемою Jeilin " "jl2005a. \n" "Ð”Ð»Ñ Ñ†Ð¸Ñ… фотоапаратів не передбачено Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ñ–Ð¹ або Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ " "даних\n" "на фотоапарат. \n" "Можливі проблеми з декодуваннÑм ÑтиÑнених фотографій: драйвер працює з " "різним\n" "рівнем ÑкоÑті роботи на різних фотоапаратах.\n" "Якщо на фотоапараті зберігаютьÑÑ Ð²Ñ–Ð´ÐµÐ¾ÐºÐ»Ñ–Ð¿Ð¸, Ñ—Ñ… дані можна отримати у " "форматі\n" "поÑлідовноÑті Ñтатичних зображень.\n" "Докладнішу інформацію можна знайти у файлі libgphoto2/camlibs/README." "jl2005a\n" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° jl2005a\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Цей фотоапарат побудовано на оÑнові мікроÑхеми Jeilin JL2005%c.\n" "КількіÑть фотографій на фотоапараті: %i. \n" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" "У цьому драйвері реалізовано фотоапарати на оÑнові мікроÑхем\n" "Jeilin JL2005B, C Ñ– D.\n" "Ð”Ð»Ñ Ñ†Ð¸Ñ… фотоапаратів не передбачено підтримки Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ñ–Ð¹\n" "Ñ– Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… на фотоапарат. \n" "Якщо на фотоапараті зберігаютьÑÑ Ð²Ñ–Ð´ÐµÐ¾ÐºÐ»Ñ–Ð¿Ð¸, дані цих кліпів можна\n" "отримати у форматі поÑлідовноÑті Ñтатичних зображень.\n" "Докладнішу інформацію викладено у файлі libgphoto2/camlibs/README.jl2005c\n" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° jl2005bcd\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "Карта CompactFlash" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "Фотоапарат Kodak DC120 викориÑтовує формат KDC Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу зображень. Ð”Ð»Ñ " "переглÑду отриманих з апарата зображень знадобитьÑÑ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° \"kdc2tiff\". " "Її можна завантажити з Ñайту http://kdc2tiff.sourceforge.net" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Бібліотека підтримки Kodak DC120\n" "Scott Fritzinger \n" "Бібліотека Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼ Kodak DC120.\n" "(за чиÑельними вимогами)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "ÐžÑ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ..." #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Файл" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Тип файлу" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Роздільна здатніÑть" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "СтиÑÐ½ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Ñлабке (краща ÑкіÑть)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Середнє (підвищена ÑкіÑть)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "ВиÑоке (добра ÑкіÑть)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Зйомка" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Ðвто" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "ПримуÑово" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Ðемає" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Увімк" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Вимкн" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Інше" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Ð’Ñтановити годинник у фотоапараті" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "ШвидкіÑть порту" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Ðазва &альбому" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Ðазва картки при форматуванні." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "ÐоÑій Compact Flash" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Форматувати картку та вÑтановити назву альбому." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "ÐалагодженнÑ" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Виконати наперед визначену команду\n" "з параметром." #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "Фотознімків на фотоапараті: %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" "ПроÑтір Ð´Ð»Ñ Ñ–Ð½ÑˆÐ¸Ñ… знімків\n" " %d низького Ñтупеню ÑтиÑненнÑ\n" " %d Ñереднього Ñтупеню ÑтиÑÐ½ÐµÐ½Ð½Ñ Ñ‡Ð¸\n" " %d виÑокого Ñтупеню ÑтиÑненнÑ\n" #: camlibs/kodak/dc210/dc210.c:506 #, c-format msgid "Total pictures taken: %d\n" msgstr "Ð’Ñього знÑто знімків: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "Ð’Ñього зроблено Ñпалахів: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, c-format msgid "Firmware: %d.%d\n" msgstr "ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, c-format msgid "Filetype: JPEG (" msgstr "Тип файлу: JPEG (" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "Тип файлу: FlashPix (" #: camlibs/kodak/dc210/dc210.c:527 #, c-format msgid "low compression, " msgstr "низький Ñтупінь ÑтиÑненнÑ, " #: camlibs/kodak/dc210/dc210.c:529 #, c-format msgid "medium compression, " msgstr "Ñередній Ñтупінь ÑтиÑненнÑ, " #: camlibs/kodak/dc210/dc210.c:531 #, c-format msgid "high compression, " msgstr "виÑокий Ñтупінь ÑтиÑненнÑ, " #: camlibs/kodak/dc210/dc210.c:533 #, c-format msgid "unknown compression %d, " msgstr "невідомий Ñтупінь ÑтиÑÐ½ÐµÐ½Ð½Ñ %d, " #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "невідома роздільна здатніÑть %d)\n" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "Ð–Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ змінного Ñтруму підключено.\n" #: camlibs/kodak/dc210/dc210.c:558 #, c-format msgid "AC adapter is not connected.\n" msgstr "Ð–Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ змінного Ñтруму підключено.\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "ЧаÑ: %a, %d %b %Y %T\n" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "МаÑштаб: 58 мм\n" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "МаÑштаб: 51 мм\n" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "МаÑштаб: 41 мм\n" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "МаÑштаб: 34 мм\n" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "МаÑштаб: 29 мм\n" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "МаÑштаб: макрозйомка\n" #: camlibs/kodak/dc210/dc210.c:580 #, c-format msgid "Unknown zoom mode %d\n" msgstr "Ðевідомий режим Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ %d\n" #: camlibs/kodak/dc210/dc210.c:586 #, c-format msgid "Exposure compensation: %s\n" msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції: %s\n" #: camlibs/kodak/dc210/dc210.c:588 #, c-format msgid "Exposure compensation: %d\n" msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції: %d\n" #: camlibs/kodak/dc210/dc210.c:593 #, c-format msgid "Flash mode: auto, " msgstr "Режим Ñпалаху: автоматично, " #: camlibs/kodak/dc210/dc210.c:595 #, c-format msgid "Flash mode: force, " msgstr "Режим Ñпалаху: завжди, " #: camlibs/kodak/dc210/dc210.c:597 #, c-format msgid "Flash mode: off\n" msgstr "Режим Ñпалаху: вимкнено\n" #: camlibs/kodak/dc210/dc210.c:599 #, c-format msgid "Unknown flash mode %d, " msgstr "Ðевідомий режим Ñпалаху %d, " #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "Ð·Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам увімкнено.\n" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "Ð·Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам вимкнено.\n" #: camlibs/kodak/dc210/dc210.c:615 #, c-format msgid "No card in camera.\n" msgstr "ВідÑÑƒÑ‚Ð½Ñ ÐºÐ°Ñ€Ñ‚ÐºÐ° у фотоапараті.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" "Ðазва картки: %s\n" "Вільний проÑтір на картці: %d кБ\n" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "працездатніÑть драйвера перевірено з апаратом Kodak DC 215 Zoom. Можливо він " "підійде Ð´Ð»Ñ DC 200 та DC 210. Якщо у Ð²Ð°Ñ Ñ” один з перелічених фотоапаратів, " "будь лаÑка, повідомте за адреÑою koltan@gmx.de чи уÑÑ– функції доÑтупні з цим " "драйвером, та чи немає з ним проблем." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° Kodak DC215 Zoom.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "ОчікуваннÑ..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Параметр 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Параметр 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Параметр 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Модель: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Стан акумулÑтора: %s, Блок живленнÑ: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "КількіÑть зображень: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "ЗалишилоÑÑŒ проÑтору длÑ: ВиÑок: %d, Середн: %d, Ðизьк: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "Стан картки пам'Ñті (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "ЗнÑто локальних знімків: %d, Спалахів: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° Kodak DC240\n" "Scott Fritzinger та Hubert Figuiere \n" "Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² Kodak DC240, DC280, DC3400 та DC5000.\n" "Оновлено та перепиÑано Ð´Ð»Ñ gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Слабка" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "ПуÑто" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Помилка" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Від'єднаний" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "Приєднаний" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "Картка пам'Ñті витÑгнута" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "Картка пам'Ñті не відкрита" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "Картка пам'Ñті не форматована" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Ðемає карти пам'Ñті" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "ВиконуєтьÑÑ Ð´Ñ–Ñ. Цей фотоапарат не підтримує одночаÑне Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñ… " "команд. ДочекайтеÑÑŒ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ— операції." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "фотоапарат неактивний більше ніж 9 Ñекунд, повторна ініціалізаціÑ.\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Відомі проблеми:\n" "\n" "1. Якщо Kodak DC3200 не отримує команд протÑгом 10 Ñекунд, відбудетьÑÑ Ñ‚Ð°Ð¹Ð¼-" "аут та знадобитьÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð° ініціалізаціÑ. Якщо апарат переÑтає реагувати, " "проÑто заново виберіть його. При цьому відбудетьÑÑ Ð½Ð¾Ð²Ð° ініціалізаціÑ." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Драйвер Kodak DC3200\n" "Donn Morrison \n" "\n" "Ð—Ð°Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° відгуки приймаютьÑÑ Ñ–Ð· вдÑчніÑтю." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "Модель вашого USB-фотоапарата - Kodak EZ200.\n" "ЧиÑло зображень = %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "Драйвер Kodak EZ200\n" "Bucas Jean-Francois \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Помилка фокуÑуваннÑ." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Помилка іриÑової діаграми." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Помилка джерела Ñвітла." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "Помилка в контрольній Ñумі ППЗУ." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Ðемає карти пам'Ñті." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "Картка не підтримуєтьÑÑ." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "Картку видалено в процеÑÑ– роботи." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Ðеправильний номер зображеннÑ." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° картку пам'Ñті неможливий." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "Картка захищена від запиÑу." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "ВідÑутній вільний проÑтір на карті пам'Ñті." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ðµ." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "ÐедоÑтатнє оÑвітленнÑ." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Помилка автофокуÑуваннÑ." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "СиÑтемна помилка." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "ÐедопуÑтимий параметр." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "Операцію неможливо ÑкаÑувати." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Дані локалізації надто довгі." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Пошкоджені дані локалізації." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Команда не підтримуєтьÑÑ." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "ВиконуєтьÑÑ Ñ–Ð½ÑˆÐ° команда." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Помилка порÑдку Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´." #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Ðевідома помилка." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "Фотоапарат щойно повідомив про невідому помилку. СповіÑтіть про це %s, та " "вкажіть коли виникла Ñ†Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: (0x%x,0x%x). Дуже дÑкуємо!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÑпиÑку файлів..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "ПеревірÑютьÑÑ Ñ€Ñ–Ð·Ð½Ñ– швидкоÑті..." #: camlibs/konica/library.c:338 msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "Ðе вдалоÑÑ Ð·Ð²'ÑзатиÑÑŒ з фотоапаратом.Перевірте, що він увімкнений та " "з'єднаний з комп'ютером." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "%i зображень не вдалоÑÑŒ видалити, тому що вони захищені" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Модель: %s\n" "Серійний номер: %s,\n" "ВерÑÑ–Ñ Ð¿Ñ€Ð¸Ñтрою: %i.%i\n" "ВерÑÑ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %i.%i\n" "ВерÑÑ–Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичної програми: %i.%i\n" "Ðазва: %s,\n" "Виробник: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Бібліотека Konica\n" "Lutz Mueller \n" "Підтримка уÑÑ–Ñ… апаратів Konica та деÑких моделей HP." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "ОтримуєтьÑÑ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Параметра Konica" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "ПоÑтійні параметри" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "Чи подавати звуковий Ñигнал при отриманні знімка?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Ð§Ð°Ñ Ð°Ð²Ñ‚Ð¾ÑпуÑку" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Ð§Ð°Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Інтервал між Ñлайдами" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Роздільна здатніÑть" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Ðизька (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Ð¡ÐµÑ€ÐµÐ´Ð½Ñ (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "ВиÑока (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "ЛокалізаціÑ" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Мова" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Ðе вибрано" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "Формат виводу на ТБ" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "Ðе показувати меню ТБ" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Формат дати" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "МіÑÑць/День/Рік" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "День/МіÑÑць/Рік" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Рік/МіÑÑць/День" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "ПоÑтійні параметри ÑеанÑу" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Увімк, Ð·Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ñті очей" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Ðвто, Ð·Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ñті очей" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "ФокуÑ" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "ФікÑований" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "ТимчаÑові параметри" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "ÐвтоÑпуÑк" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "ÐвтоÑпуÑк (лише наÑтупний знімок)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Звичайний" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ дані локалізації у '%s'" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "Ðадто великий файл локалізації!" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "Попередній переглÑд не Ñ–Ñнує." #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "Дані зіпÑовані!" #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ %d не підтримуютьÑÑ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼ !" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %s." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ уÑÑ– зображеннÑ." #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "ВивантажуєтьÑÑ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ це Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ фотоапарат. Виникла помилка." #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "Щоб зробити знімок, треба перейти у режим запиÑу." #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" "ÐедоÑтатньо міÑÑ†Ñ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¸Ñ… знімків. Слід вилучити декілька Ñтарих зображень." #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "Ð—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¸Ñ… зображень неможливе. Ðевідома помилка." #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "Ðемає відповіді від фотоапарата." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Ðизька" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "СереднÑ" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "ВиÑока" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Значки" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "2,0 м" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "0,5 м" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "0,1 м" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "ОфіÑ" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "Денне Ñвітло" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "ЧіткіÑть" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "Різко" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "М'Ñко" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "Колір" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "Світло" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "Глибина" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "Чорно-білий" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "Одиночний кадр" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "ПоÑлідовніÑть 9" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "Показати дату?" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "Будь-де" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "Hежим відтвореннÑ" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "Режим запиÑу" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "Ð’Ñюди" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "Блок живленнÑ" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "ВідтвореннÑ" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "ЗапиÑ" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "ДД/ММ/РРРР" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "РРРР/ММ/ДД" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "ММ/ДД/РРРР" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Модель: %s\n" "МіÑткіÑть: %i МБ\n" "ЖивленнÑ: %s\n" "Ð§Ð°Ñ Ð´Ð¾ ÑамовимкненнÑ: %iхв\n" "Режим: %s\n" "Зображень: %i/%i\n" "Показ дати: %s\n" "Дата Ñ– чаÑ: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Бібліотека Konica Q-M150\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Підтримка французької верÑÑ–Ñ— Konica Q-M150." #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "Про Konica Q-M150:\n" "У цьому фотоапараті не передбачено можливоÑтей зовнішнього налаштовуваннÑ, \n" "тому можна лише переглÑдати поточні параметри,\n" "але щоÑÑŒ змінити неможливо.\n" "\n" "Якщо під Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ з цим драйвером у Ð²Ð°Ñ Ð²Ð¸Ð½Ð¸ÐºÐ½ÑƒÑ‚ÑŒ проблеми, будь лаÑка,\n" "звернітьÑÑ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾ÑŽ поштою до його авторів.\n" #: camlibs/largan/lmini/largan.c:228 msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Драйвер Largan\n" "Hubert Figuiere \n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" "Ваш USB-фотоапарат Ñхожий на LG GSM.\n" "Мікропрограма: %s\n" "ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %s\n" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" "Базовий драйвер Ð´Ð»Ñ LG GSM\n" "Guillaume Bedot \n" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Фотоапарат Mars MR97310.\n" "МіÑтить %i знімок. \n" msgstr[1] "" "Фотоапарат Mars MR97310.\n" "МіÑтить %i знімки. \n" msgstr[2] "" "Фотоапарат Mars MR97310.\n" "МіÑтить %i знімків. \n" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" "У драйвері реалізовано підтримку фотоапаратів на оÑнові мікроÑхеми\n" "Mars MR97310 (та Ñ—Ñ— безпоÑередніх аналогів ??Pixart PACx07??).\n" "Ð”Ð»Ñ Ñ‚Ð°ÐºÐ¸Ñ… фотоапаратів не передбачено Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ñ–Ð¹ або\n" "Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… на фотоапарат.\n" "Ð”ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ ÑтиÑнених фотографій працює не вÑюди Ñ– не однаково\n" "ÑкіÑно на різних типах фотоапаратів.\n" "Обробка фотоданих Ð´Ð»Ñ Argus QuickClix ÐЕ ПІДТРИМУЄТЬСЯ.\n" "Якщо фотоапарат зберігає відеозапиÑи, дані відео можна отримати у\n" "у форматі поÑлідовноÑті знімків.\n" "Докладніша Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° у libgphoto2/camlibs/README.\n" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° Mars MR97310\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Модель:\t\t\tMinolta Dimage V (%s)\n" "ВерÑÑ–Ñ Ð¿Ñ€Ð¸Ñтрою:\t%s\n" "ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Режим роботи:\t\t%s\n" "ÐšÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ ÐµÐºÑпозиції:\t%s\n" "Дані екÑпозиції:\t\t%d\n" "Дата указана:\t\t%s\n" "Дата:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Затримка ÑпуÑку:\t\t%s\n" "Рівень ÑкоÑті:\t%s\n" "Режим відтвореннÑ/запиÑу:\t%s\n" "ID карти вказано:\t\t%s\n" "ID карти:\t\t%d\n" "Режим Ñпалаху:\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Ðвтономний" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Локальний" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Так" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "ÐÑ–" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "ВдоÑконалений" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Стандартний" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Ðвтомат\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "ПримуÑовий Ñпалах\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Заборона Ñпалаху\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Ðеправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ( %d )\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "ЗарÑд акумулÑтора:\t\t%s\n" "ЧиÑло зображень:\t%d\n" "Мінімальний об'єм, що залишивÑÑ:\t%d\n" "ЗайнÑто:\t\t\t%s\n" "ЗарÑдка Ñпалаху:\t\t%s\n" "Стан об'єктива:\t\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "Ðеповний" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Повний" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "ЗайнÑто" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "БездіÑльний" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "ЗарÑджаєтьÑÑ" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Готовий" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Звичайний\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "ÐапрÑмок об'єктива не відповідає напрÑмку Ñвітла\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "Об'єктив не підключено\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "Ðеправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñтану об'єктива %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "Стан карти:\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "ЗахиÑÑ‚ від запиÑу" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "ÐеÑуміÑна карта" #: camlibs/minolta/dimagev/dimagev.c:406 #, c-format msgid "Bad value for card status %d" msgstr "Ðеправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñтану карти %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° Minolta Dimage V\n" "%s\n" "Gus Hartmann \n" "ОÑоблива подÑка фірмі Minolta за надані Ñпецифікації." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Спалах: Ðвто (Проти червоних очей)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Спалах: Ðвто" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Спалах: Увімкн (Проти червоних очей)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Спалах: Увімкн" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Спалах: Вимкн" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Спалах: не визначено" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Ð—Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð»Ñ Mustek MDC800:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "немає інформації про Ñтан." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "ВиÑвлено картку Compact Flash\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Ðе виÑвлено картки Compact Flash\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "Поточний режим: режим відтвореннÑ\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Поточний режим: режим відтвореннÑ\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "ЗарÑд акумулÑтора у нормі." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "ЗарÑд акумулÑтора недоÑтатній." #: camlibs/mustek/mdc800.c:264 msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Бібліотека gPhoto2 Ð´Ð»Ñ Mustek MDC-800\n" "Henning Zabel \n" "ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ñ–Ñ Ð´Ð»Ñ gphoto2 - Marcus Meissner \n" "Підтримує поÑлідовний та USB-протоколи." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "Бібліотека coolshot v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Ð’Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "КопіюєтьÑÑ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %s." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ: %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "Розмір файла Ñкладає %ld байт. МакÑимально можливий розмір Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ: " "%i байт." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "ЗавантаженнÑ..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "ВидалÑєтьÑÑ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %s." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Бібліотека gPhoto Ð´Ð»Ñ Panasonic DC1000\n" "Mariusz Zynel \n" "\n" "ОÑнована на програмі Ð´Ð»Ñ dc1000, Ñку напиÑав\n" "Fredrik Roubert Ñ–\n" "Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "КопіюєтьÑÑ %s." #: camlibs/panasonic/dc1580.c:627 msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Бібліотека gPhoto2 Ð´Ð»Ñ Panasonic DC1580\n" "Mariusz Zynel \n" "\n" "ЗаÑновано на програмі Ð´Ð»Ñ dc1000, Ñку напиÑав\n" "Fredrik Roubert Ñ–\n" "Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "КопіюєтьÑÑ '%s'..." #: camlibs/panasonic/l859/l859.c:582 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "У цій Ñерії фотоапаратів Palmcorder фірма Panasonic вперше заÑтоÑувала " "технологію Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑ–Ð² PHOTOSHOT. Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°ÑŽÑ‚ÑŒÑÑ Ñƒ форматі " "JPEG на внутрішній карті пам'Ñті та можуть бути передані на комп'ютер через " "вбудований поÑлідовний порт. Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°ÑŽÑ‚ÑŒÑÑ Ñƒ одному з двох " "режимів: ÐОРМÐЛЬÐОМУ — 320x240 та ВИСОКОЯКІСÐОМУ — 640x480. Роздільна " "здатніÑть ПЗС матриці дорівнює лише 300 тиÑÑчам точок, тому ÑкіÑть знімків " "доÑить низька." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Відомі проблеми:\n" "\n" "При виникненні помилок передачі даних виконайте перезапуÑк фотоапарата та " "перезапуÑтіть програму. Драйвер поки не може ÑамоÑтійно виходити з такого " "Ñтану, оÑобливо, Ñкщо проблема виникає при швидкоÑÑ‚ÑÑ… більших за 9600 та " "апарат не вимикаєтьÑÑ Ð¿Ð¾Ð²Ð½Ñ–Ñтю." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Драйвер Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " Ð’Ñього пам'Ñті %8d байт.\n" " Вільно пам'Ñті %8d байт.\n" " КількіÑть файлів: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" " Ðвтори: Till Adam\n" "\n" "та: Miah Gregory\n" " " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "КопіюєтьÑÑ Ñ„Ð°Ð¹Ð»..." #: camlibs/pccam600/library.c:249 msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" "Ðвтор: Peter Kajberg \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "pccam600_init: очікувалоÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ %d блоків, отримано %d" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "pccam600_get_file:отримано Ñ–Ð½Ð´ÐµÐºÑ %d але очікувавÑÑ Ñ–Ð½Ð´ÐµÐºÑ > %d" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "pccam600_close: повернуто Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %d заміÑть %d" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "pccam600_init: очікувалоÑÑ %d блоків, отримано %d" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" "pccam600 init: неочікувана помилка: Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ gp_port_read повернула %d " "заміÑть %d" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Програма ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑ–Ð² Ð´Ð»Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñ… моделей Polaroid. Початковий автор - " "Peter Desnoyers , Ð°Ð´Ð°Ð¿Ñ‚Ð°Ñ†Ñ–Ñ Ð´Ð»Ñ gphoto2 - Nathan " "Stenzel та Lutz Mueller .\n" "ТеÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Polaroid 640SE - Michael Golden ." #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Модель: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "Програма ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð², побудованих на оÑнові " "GrandTek 98x. Початковий автор - Chris Byrne , Ð°Ð´Ð°Ð¿Ñ‚Ð°Ñ†Ñ–Ñ " "Ð´Ð»Ñ gphoto2 - Lutz Mueller . ВдоÑÐºÐ¾Ð½Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ та " "Ð´Ð¾Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Jenoptik JD350e виконав Michael Trawny . Ð’Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº - Marcus Meissner ." #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "ЯкіÑть зображеннÑ" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Розмір зображеннÑ" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Параметри Ñпалаху" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Ðвтоматичне Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ (хвилин)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "ІнформаціÑ" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "звичайна" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "виÑока" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "доÑить виÑока" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "авто" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "увімк" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "вимк" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "відтвореннÑ" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "запиÑ" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "меню" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "акумулÑтор" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "блок живленнÑ" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Отримано непередбачені дані (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Отримано неочікувану відповідь" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Помилка в контрольній Ñумі" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "Фотоапарат не відповідає на команду." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "Фотоапарат надіÑлав більше байтів ніж очікуєтьÑÑ (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "Очікувана Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %i (= 0x%x), але назад отримано " "інформацію про Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %i" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "Отримано %i байтів про невідомий формат зображеннÑ. Запишіть у %s та " "попроÑіть про допомогу." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Програма ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ Ð´Ð»Ñ Polaroid DC700. Початково програма " "напиÑана - Ryan Lantzer Ð´Ð»Ñ gphoto-4.x. ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ñ–Ñ Ð´Ð»Ñ " "gphoto2 - Lutz Mueller ." #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Фотоапарат" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "Скільки чаÑу займе Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¶Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "ЗображеннÑ" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Дата: %i/%02i/%02i %02i:%02i:%02i\n" "Зроблено знімків: %i\n" "ЗалишилоÑÑŒ знімків: %i\n" "ВерÑÑ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %s\n" "ШвидкіÑть: %s\n" "Пам'Ñть: %i мегабайт\n" "Режим фотоапарата: %s\n" "Рівень ÑкоÑті: %s\n" "Параметри Ñпалаху: %s\n" "ІнформаціÑ: %s\n" "Таймер: %s\n" "ЖК: %s\n" "Ðвтоматичне вимиканнÑ: %i хвилин\n" "Джерело живленнÑ: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "Запитаний діапазон портів (%i) не підтримуєтьÑÑ Ñ†Ð¸Ð¼ драйвером." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "CHDK не вивів з режиму запиÑу." #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Ваш фотоапарат Canon не підтримує режим Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Canon" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, c-format msgid "Unknown value %04x" msgstr "Ðевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %04x" #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, c-format msgid "Unknown value %04d" msgstr "Ðевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %04d" #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "неÑподіваний тип даних %i" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "Цільового Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ¼Ð°Ñ” у переліку." #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "Ручний" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 msgid "Automatic" msgstr "Ðвтоматично" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 msgid "One-push Automatic" msgstr "Ðвтомат у один дотик" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "ФлуореÑцентна лампа" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Вольфрамова лампа" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Хмарно" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "Різко" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "Кольорова температура" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "Шаблон" #: camlibs/ptp2/config.c:1415 msgid "Fluorescent Lamp 1" msgstr "ФлуореÑцентна лампа 1" #: camlibs/ptp2/config.c:1416 msgid "Fluorescent Lamp 2" msgstr "ФлуореÑцентна лампа 2" #: camlibs/ptp2/config.c:1417 msgid "Fluorescent Lamp 3" msgstr "ФлуореÑцентна лампа 3" #: camlibs/ptp2/config.c:1418 msgid "Fluorescent Lamp 4" msgstr "ФлуореÑцентна лампа 4" #: camlibs/ptp2/config.c:1419 msgid "Fluorescent Lamp 5" msgstr "ФлуореÑцентна лампа 5" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "Виберіть кольорову температуру" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "Ðетиповий набір параметрів 1" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "Ðетиповий набір параметрів 2" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "Ðетиповий набір параметрів 3" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "Ðетиповий набір параметрів 4" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "Ðетиповий набір параметрів 5" #: camlibs/ptp2/config.c:1430 msgid "Fluorescent: Warm White" msgstr "ФлуореÑцентна лампа: тепле біле Ñвітло" #: camlibs/ptp2/config.c:1431 msgid "Fluorescent: Cold White" msgstr "ФлуореÑцентна лампа: холодне біле Ñвітло" #: camlibs/ptp2/config.c:1432 msgid "Fluorescent: Day White" msgstr "ФлуореÑцентна лампа: денне біле Ñвітло" #: camlibs/ptp2/config.c:1433 msgid "Fluorescent: Daylight" msgstr "ФлуореÑцентна лампа: денне Ñвітло" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 msgid "JPEG Fine" msgstr "Покращений JPEG" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 msgid "JPEG Normal" msgstr "Звичайний JPEG" #: camlibs/ptp2/config.c:1443 msgid "RAW + JPEG Fine" msgstr "RAW + покращений JPEG" #: camlibs/ptp2/config.c:1444 msgid "RAW + JPEG Normal" msgstr "RAW + звичайний JPEG" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "Окремий кадр" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "Ðеперервно з повільною швидкіÑтю" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "Ðеперервно з виÑокою швидкіÑтю" #: camlibs/ptp2/config.c:1452 msgid "Self-timer" msgstr "ÐвтоÑпуÑк" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "Mup (Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð²Ð³Ð¾Ñ€Ñƒ)" #: camlibs/ptp2/config.c:1735 msgid "undefined" msgstr "не визначено" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "економно" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "без втрат" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 msgid "Undefined" msgstr "Ðе визначено" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "CRW" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "ТелебаченнÑ" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "AV" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "A_DEP" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "M_DEP" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "DEP" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "Інший" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "Заблокувати" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "Ðічний портрет" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "Спорт" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "Пейзаж" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "Ð—Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ð·Ð±Ð»Ð¸Ð·ÑŒÐºÐ°" #: camlibs/ptp2/config.c:1780 msgid "Flash Off" msgstr "Спалах вимкнено" #: camlibs/ptp2/config.c:1788 msgid "red eye suppression" msgstr "Ð¿Ñ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних очей" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "заповненнÑ" #: camlibs/ptp2/config.c:1790 msgid "auto + red eye suppression" msgstr "авто + Ð¿Ñ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних очей" #: camlibs/ptp2/config.c:1791 msgid "on + red eye suppression" msgstr "увімкнено + Ð¿Ñ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних очей" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "iTTL" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 msgid "Commander" msgstr "Командувач" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "ПовтореннÑ" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "TTL" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 msgid "Auto Aperture" msgstr "Ðвтодіафрагма" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 msgid "Full Manual" msgstr "ПовніÑтю вручну" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "AF-S" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "AF-C" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "AF-A" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 msgid "MF (fixed)" msgstr "MF (фікÑовано)" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "MF (вибір)" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "Центрально-зважений" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "Середній" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "Оціночний" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "ЧаÑтковий" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "Середній відноÑно центру" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "Ð’Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð° оÑнові меж автофокуÑуваннÑ" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "Мульти-плÑма" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "Ðадійний" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "Чорно-біле" #: camlibs/ptp2/config.c:1947 msgid "User defined 1" msgstr "Визначений кориÑтувачем 1" #: camlibs/ptp2/config.c:1948 msgid "User defined 2" msgstr "Визначений кориÑтувачем 2" #: camlibs/ptp2/config.c:1949 msgid "User defined 3" msgstr "Визначений кориÑтувачем 3" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "Точка фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¸ÑˆÐµ у центрі, вручну" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "Точка фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¸ÑˆÐµ у центрі, автоматично" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "Декілька точок фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (без уточненнÑ), вручну" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 msgid "Multiple Focusing Points, Auto" msgstr "Декілька точок фокуÑуваннÑ, авто" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 msgid "Multiple Focusing Points (Right)" msgstr "Декілька точок фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (праворуч)" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "Декілька точок фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (центр)" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 msgid "Multiple Focusing Points (Left)" msgstr "Декілька точок фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (ліворуч)" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 msgid "Large" msgstr "Великий" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 msgid "Medium 1" msgstr "Середній 1" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 msgid "Medium 2" msgstr "Середній 2" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 msgid "Medium 3" msgstr "Середній 3" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "Малий" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "16:9" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "3:2" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "10 Ñекунд" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "2 Ñекунди" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "TFT" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "ПК" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "TFT + ПК" #: camlibs/ptp2/config.c:2092 msgid "Setting 4" msgstr "Ðабір параметрів 4" #: camlibs/ptp2/config.c:2093 msgid "Setting 5" msgstr "Ðабір параметрів 5" #: camlibs/ptp2/config.c:2094 msgid "Setting 6" msgstr "Ðабір параметрів 6" #: camlibs/ptp2/config.c:2095 msgid "Setting 7" msgstr "Ðабір параметрів 7" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "Картка" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "Вивід відео" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, c-format msgid "Unknown %d" msgstr "Ðевідомий %d" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "ЗаводÑькі параметри" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "mRAW" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "sRAW" #: camlibs/ptp2/config.c:2246 #, fuzzy msgid "Smaller JPEG" msgstr "Менший JPEG (S2)" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "МалюÑінький JPEG (S3)" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "mRAW + великий покращений JPEG" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "sRAW + великий покращений JPEG" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "mRAW + Ñередній покращений JPEG" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "sRAW + Ñередній покращений JPEG" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "mRAW + маленький покращений JPEG" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "sRAW + маленький покращений JPEG" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "mRAW + великий звичайний JPEG" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "sRAW + великий звичайний JPEG" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "mRAW + Ñередній звичайний JPEG" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "sRAW + Ñередній звичайний JPEG" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "mRAW + маленький звичайний JPEG" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "sRAW + малий звичайний JPEG" #: camlibs/ptp2/config.c:2272 #, fuzzy msgid "RAW + Smaller JPEG" msgstr "RAW + менший JPEG (S2)" #: camlibs/ptp2/config.c:2273 #, fuzzy msgid "mRAW + Smaller JPEG" msgstr "mRAW + менший JPEG (S2)" #: camlibs/ptp2/config.c:2274 #, fuzzy msgid "sRAW + Smaller JPEG" msgstr "sRAW + менший JPEG (S2)" #: camlibs/ptp2/config.c:2275 #, fuzzy msgid "RAW + Tiny JPEG" msgstr "RAW + малюÑінький JPEG (S3)" #: camlibs/ptp2/config.c:2276 #, fuzzy msgid "mRAW + Tiny JPEG" msgstr "mRAW + малюÑінький JPEG (S3)" #: camlibs/ptp2/config.c:2277 #, fuzzy msgid "sRAW + Tiny JPEG" msgstr "sRAW + малюÑінький JPEG (S3)" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "Ðеперервний" #: camlibs/ptp2/config.c:2305 msgid "Timer 10 sec" msgstr "Таймер 10 Ñек." #: camlibs/ptp2/config.c:2306 msgid "Timer 2 sec" msgstr "Таймер 2 Ñек." #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "Одинарний без Ñповіщень" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "Ðеперервний без Ñповіщень" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, c-format msgid "Auto ISO" msgstr "Ðвтоматично визначати ISO" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "Ðвтоматичне багатокадрове Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð² ISO" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, c-format msgid "%d Multi Frame Noise Reduction" msgstr "Багатокадрове Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð² %d" #: camlibs/ptp2/config.c:2453 msgid "Multi Frame Noise Reduction" msgstr "Багатокадрове Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð²" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Таймер" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "%0.4f Ñ" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "%d %d/%d" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "%d/%d" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "%f" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "ТворчіÑть" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "ДіÑ" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "Ðічний пейзаж" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "Діти" #: camlibs/ptp2/config.c:2868 msgid "Automatic (No Flash)" msgstr "Ðвтоматика (без Ñпалаху)" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "Кмітливе авто" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "Відмінне авто" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "Кіно" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "ТелемаÑштаб. неперерв. пріор. ÐЕ" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "Ðвтопанорама" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "Кмітливе Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ñпалаху" #: camlibs/ptp2/config.c:2876 msgid "Sports Action" msgstr "Спорт" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "Захід" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "Ðічна Ñцена" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "Мобільне притлумленнÑ" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 msgid "Picture Effect" msgstr "Ефект зображеннÑ" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "Ðічний пейзаж" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "Вечірка/У приміщенні" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "ПлÑж/Ðа Ñнігу" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "Світанок/Сутінки" #: camlibs/ptp2/config.c:2893 msgid "Pet Portrait" msgstr "Знімок домашнього улюбленцÑ" #: camlibs/ptp2/config.c:2894 msgid "Candlelight" msgstr "Світло Ñвічок" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "ЦвітіннÑ" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "Кольри оÑені" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "Їжа" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "Діти" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "Ð—Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ð·Ð±Ð»Ð¸Ð·ÑŒÐºÐ°" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "A6400 (160-6400)" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "A3200 (160-3200)" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "A800 (160-800)" #: camlibs/ptp2/config.c:3032 msgid "Flourescent" msgstr "ФлуореÑцентне оÑвітленнÑ" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "Вода" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "1 ЗЕ" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "2 ЗЕ" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "3 ЗЕ" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "Дуже виÑокий" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "Сцена" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 msgid "Effects" msgstr "Ефекти" #: camlibs/ptp2/config.c:3075 msgid "U1" msgstr "U1" #: camlibs/ptp2/config.c:3076 msgid "U2" msgstr "U2" #: camlibs/ptp2/config.c:3104 msgid "Back Light" msgstr "ПідÑвічуваннÑ" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "Панорама" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "ЗгладжуваннÑ" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "Ðахил-зÑув" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "Вибір кольору" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "Знімок екрана" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "Спалах" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "Проміжок чаÑу" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "Ðеперервно з повільною швидкіÑтю" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 msgid "Timer" msgstr "Таймер" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "Ð’Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð²Ð³Ð¾Ñ€Ñƒ" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "Віддалене ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· швидким доÑтупом" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 msgid "Delayed Remote" msgstr "Віддалене ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· запізненнÑм" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "Тихий ÑпуÑк" #: camlibs/ptp2/config.c:3125 msgid "Selftimer 2s" msgstr "ÐвтоÑпуÑк 2 Ñ" #: camlibs/ptp2/config.c:3126 msgid "Selftimer 10s" msgstr "ÐвтоÑпуÑк 10 Ñ" #: camlibs/ptp2/config.c:3127 msgid "Bracketing C 0.3 Steps" msgstr "Кроки «вилки» C 0.3" #: camlibs/ptp2/config.c:3128 msgid "Bracketing C 0.7 Steps" msgstr "Кроки «вилки» C 0.7" #: camlibs/ptp2/config.c:3129 msgid "Bracketing C 1.0 Steps" msgstr "Кроки «вилки» C 1.0" #: camlibs/ptp2/config.c:3130 msgid "Bracketing C 2.0 Steps" msgstr "Кроки «вилки» C 2.0" #: camlibs/ptp2/config.c:3131 msgid "Bracketing C 3.0 Steps" msgstr "Кроки «вилки» C 3.0" #: camlibs/ptp2/config.c:3132 msgid "Bracketing S 0.3 Steps" msgstr "Кроки «вилки» S 0.3" #: camlibs/ptp2/config.c:3133 msgid "Bracketing S 0.7 Steps" msgstr "Кроки «вилки» S 0.7" #: camlibs/ptp2/config.c:3134 msgid "Bracketing S 1.0 Steps" msgstr "Кроки «вилки» S 1.0" #: camlibs/ptp2/config.c:3135 msgid "Bracketing S 2.0 Steps" msgstr "Кроки «вилки» S 2.0" #: camlibs/ptp2/config.c:3136 msgid "Bracketing S 3.0 Steps" msgstr "Кроки «вилки» S 3.0" #: camlibs/ptp2/config.c:3137 msgid "Bracketing WB Lo" msgstr "Вилка екÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ WB Lo" #: camlibs/ptp2/config.c:3138 msgid "Bracketing WB Hi" msgstr "Вилка екÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ WB Hi" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 msgid "Centre-spot" msgstr "Центральна плÑма" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "МультиплÑма" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "Одиночна облаÑть" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "Ðайближча тема" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "Динаміка групи" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "ÐФ за одиночною облаÑтю" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "ÐФ за динамічною облаÑтю" #: camlibs/ptp2/config.c:3154 #, fuzzy msgid "Group-dynamic AF" msgstr "ÐФ за динамікою групи" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "ÐФ за динамічною облаÑтю з пріоритетом найближчого об’єкта" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "Динамічна облаÑть (9)" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "Динамічна облаÑть (21)" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "Динамічна облаÑть (51)" #: camlibs/ptp2/config.c:3165 msgid "3D Tracking" msgstr "ПроÑторове ÑтеженнÑ" #: camlibs/ptp2/config.c:3171 msgid "sRGB (portrait)" msgstr "sRGB (портрет)" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "AdobeRGB" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "sRGB (природа)" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "sRGB" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "Ðевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0x%04x" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 msgid "Centre" msgstr "За центром" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "Згори" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 msgid "Bottom" msgstr "Знизу" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "Зліва" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 msgid "Right" msgstr "Справа" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "Центрально-зважений" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "Декілька точок" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "Центральна точка" #: camlibs/ptp2/config.c:3266 msgid "Automatic Flash" msgstr "Ðвтоматичний Ñпалах" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 msgid "Fill flash" msgstr "Спалах" #: camlibs/ptp2/config.c:3269 msgid "Red-eye automatic" msgstr "Ðвтоматично Ð¿Ñ€Ð¾Ñ‚Ð¸Ð´Ñ–Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам" #: camlibs/ptp2/config.c:3270 msgid "Red-eye fill" msgstr "Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 msgid "External sync" msgstr "Ð—Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ ÑинхронізаціÑ" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 msgid "Auto Slow Sync" msgstr "Ðвтоуповільнена Ñинхр." #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "Задній фронт Ñинхр. + уповільнена Ñинхр." #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 msgid "Red-eye Reduction + Slow Sync" msgstr "Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам + уповільнена Ñинхр." #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð° передньою завіÑою" #: camlibs/ptp2/config.c:3277 msgid "Red-eye reduction" msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ «Червоних очей»" #: camlibs/ptp2/config.c:3278 msgid "Red-eye reduction with slow sync" msgstr "Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам + уповільнена Ñинхр." #: camlibs/ptp2/config.c:3279 msgid "Slow sync" msgstr "Уповільнена Ñинхр." #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "Задній фронт Ñинхр. + уповільнена Ñинхр." #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "Задній фронт Ñинхр." #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "Задній фронт Ñинхр." #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "Бездротова ÑинхронізаціÑ" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Уповільнена Ñинхр." #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Чорно-білий" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "Ðічне баченнÑ" #: camlibs/ptp2/config.c:3298 msgid "Color sketch" msgstr "Кольоровий еÑкіз" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "Ефект мініатюри" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "Вибірковий колір" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "Силует" #: camlibs/ptp2/config.c:3302 msgid "High key" msgstr "Темне" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "ЯÑкраве" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 msgid "infinite" msgstr "неÑкінченна" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "%d мм" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "ÐФ з пріоритетом облич" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "ÐФ за широкою облаÑтю" #: camlibs/ptp2/config.c:3772 msgid "Normal-area AF" msgstr "ÐФ за звичайною облаÑтю" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "ÐФ зі ÑтеженнÑм за об’єктом" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "Одноприводне ÐФ" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "ПоÑтійноприводове ÐФ" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 msgid "Manual Focus" msgstr "Ручний фокуÑ" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 msgid "AE/AF Lock" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AE/AF" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "Лише Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AE" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "Лише Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФ" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФ із затримкою" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "AF увімкнено" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "Рівень Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñпалаху" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "20 Ñекунд" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 msgid "1 minute" msgstr "1 хвилина" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "5 хвилин" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 msgid "10 minutes" msgstr "10 хвилин" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "5 Ñекунд" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "SDRAM" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "6 мм" #: camlibs/ptp2/config.c:3828 msgid "8 mm" msgstr "8 мм" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "10 мм" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "12 мм" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "1/60" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "1/30" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "1/15" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "1/8" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "1/4" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "1/2" #: camlibs/ptp2/config.c:3842 msgid "1" msgstr "1" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 msgid "2" msgstr "2" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 msgid "4" msgstr "4" #: camlibs/ptp2/config.c:3845 msgid "8" msgstr "8" #: camlibs/ptp2/config.c:3846 msgid "15" msgstr "15" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "30" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "кнопка" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "30 Ñ" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "25 Ñ" #: camlibs/ptp2/config.c:3855 msgid "20s" msgstr "20 Ñ" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 msgid "15s" msgstr "15 Ñ" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "13 Ñ" #: camlibs/ptp2/config.c:3858 msgid "10s" msgstr "10 Ñ" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "8 Ñ" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "6 Ñ" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "5 Ñ" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "4 Ñ" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "3 Ñ" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "2,5 Ñ" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "2 Ñ" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "1,6 Ñ" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "1,3 Ñ" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "1 Ñ" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "1/1,3 Ñ" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "1/1,6 Ñ" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "1/2 Ñ" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "1/2,5 Ñ" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "1/3 Ñ" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "1/4 Ñ" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "1/5 Ñ" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "1/6 Ñ" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "1/8 Ñ" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "1/10 Ñ" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "1/13 Ñ" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "1/15 Ñ" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "1/20 Ñ" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "1/25 Ñ" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "1/30 Ñ" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "1/40 Ñ" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "1/50 Ñ" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "1/60 Ñ" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "1/80 Ñ" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "1/100 Ñ" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "1/125 Ñ" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "1/160 Ñ" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "1/200 Ñ" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "1/250 Ñ" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "1/320 Ñ" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "1/400 Ñ" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "1/500 Ñ" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "1/640 Ñ" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "1/800 Ñ" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "1/1000 Ñ" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "1/1250 Ñ" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "1/1600 Ñ" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "1/2000 Ñ" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "1/2500 Ñ" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "1/3200 Ñ" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "1/4000 Ñ" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "1/5000 Ñ" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "1/6400 Ñ" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "1/8000 Ñ" #: camlibs/ptp2/config.c:3916 msgid "15 minutes" msgstr "15 хвилин" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 msgid "Sharper" msgstr "Різкіше" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "М'Ñкше" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 msgid "Direct Print" msgstr "ПрÑмий друк" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 msgid "Medium Low" msgstr "Помірно низький" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 msgid "Medium high" msgstr "Помірно виÑокий" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 msgid "Low contrast" msgstr "Ðизька контраÑтніÑть" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 msgid "Medium High" msgstr "Помірно виÑока" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "ВиÑокий" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (наближеннÑ)" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (дуже близько)" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (близько)" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (ÑÐµÑ€ÐµÐ´Ð½Ñ Ð²Ñ–Ð´Ñтань)" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (здалеку)" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (зарезервовано 1)" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (зарезервовано 2)" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (зарезервовано 3)" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (зарезервовано 4)" #: camlibs/ptp2/config.c:3976 msgid "Automatic Macro" msgstr "Ðвтоматично режим макро" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "Одноприводне ÐФ" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "Ðеперервно-приводове ÐФ" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "Один знімок" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "ШІ-привод" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 msgid "AI Focus" msgstr "ШІ-фокуÑ" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "4 Ñекунди" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "8 Ñекунд" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "УтриманнÑ" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 msgid "Fluorescent H" msgstr "ФлуореÑцентний H" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 msgid "Custom Whitebalance PC-1" msgstr "Ðетиповий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ PC-1" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 msgid "Custom Whitebalance PC-2" msgstr "Ðетиповий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ PC-2" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 msgid "Custom Whitebalance PC-3" msgstr "Ðетиповий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ PC-3" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "Ðе вказано чиÑла" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "Тінь" #: camlibs/ptp2/config.c:4118 msgid "Low sharpening" msgstr "Ðизька різкіÑть" #: camlibs/ptp2/config.c:4120 msgid "Black & white" msgstr "Чорно-білий" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 msgid "AE & Flash" msgstr "AE та Ñпалах" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 msgid "AE only" msgstr "лише AE" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 msgid "Flash only" msgstr "Лише Ñпалах" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 msgid "WB bracketing" msgstr "WB дужка" #: camlibs/ptp2/config.c:4221 msgid "ADL bracketing" msgstr "Ðвтовилка ADL" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "ЗапуÑк" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "ВимкненнÑ" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "ЗапуÑк Ñ– вимкненнÑ" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "50 Гц" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "60 Гц" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "Швидка відповідь" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 msgid "Remote Mirror Up" msgstr "Віддалене Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð²Ð³Ð¾Ñ€Ñƒ" #: camlibs/ptp2/config.c:4248 msgid "Application Mode 0" msgstr "Режим роботи 0" #: camlibs/ptp2/config.c:4249 msgid "Application Mode 1" msgstr "Режим роботи 1" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "СереднÑ" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "Покращена" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "MTR > Under" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "Under > MTR" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "ÐвточутливіÑть" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "ВиÑока чутливіÑть" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "Ð¡ÐµÑ€ÐµÐ´Ð½Ñ Ñ‡ÑƒÑ‚Ð»Ð¸Ð²Ñ–Ñть" #: camlibs/ptp2/config.c:4286 msgid "Low sensitivity" msgstr "Ðизька чутливіÑть" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "Мікрофон вимкнено" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "ВиÑокий 1" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "ВиÑокий 2" #: camlibs/ptp2/config.c:4378 msgid "Flash/speed" msgstr "Спалах/ШвидкіÑть" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "Спалах/ШвидкіÑть/Діафрагма" #: camlibs/ptp2/config.c:4380 msgid "Flash/aperture" msgstr "Спалах/Діафрагма" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "Базовий JPEG" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 msgid "NEF+Fine" msgstr "NEF+Fine" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "NEF (Raw)" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "NEF+ОÑнова" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 msgid "NEF+Normal" msgstr "NEF+Звичайний" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "TIFF (RGB)" #: camlibs/ptp2/config.c:4575 msgid "RAW+JPEG" msgstr "RAW+JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "6 Ñекунд" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "16 Ñекунд" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "30 Ñекунд" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "30 хвилин" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "Без втрат" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "З втратами" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "Пріоритет розміру" #: camlibs/ptp2/config.c:4642 msgid "Optimal quality" msgstr "Оптимальна ÑкіÑть" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "1/250 Ñ (авто-FP)" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "1/320 Ñ (авто-FP)" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "СпуÑк" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "СпуÑк + фокуÑуваннÑ" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "9 точок" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "21 точка" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "51 точка" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "51 точка (3D)" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "5 (довгий)" #: camlibs/ptp2/config.c:4695 msgid "3 (Normal)" msgstr "3 (звичайний)" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "1 (короткий)" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "Затвор/AF-ON" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "AF-ON" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "AF51" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "AF11" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AE/AF" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "Лише Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AE" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AE (ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ ÑпуÑку)" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФ із затримкою" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "Лише Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФ" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "4 кд/Ñ" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "3 кд/Ñ" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "2 кд/Ñ" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "1 кд/Ñ" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "6 кд/Ñ" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "5 кд/Ñ" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "9 кд/Ñ" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "8 кд/Ñ" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "7 кд/Ñ" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "11 кд/Ñ" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "10 кд/Ñ" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "Ðе призначено" #: camlibs/ptp2/config.c:4780 msgid "Preview" msgstr "ПереглÑд" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ FV" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФ із затримкою" #: camlibs/ptp2/config.c:4788 msgid "Bracketing burst" msgstr "Ð Ð¾Ð·Ð±Ð¸Ñ‚Ñ‚Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð¸Ð»ÐºÐ¸" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "Матричне вимірюваннÑ" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "Центрально-зважене вимірюваннÑ" #: camlibs/ptp2/config.c:4791 msgid "Spot metering" msgstr "Точкове вимірюваннÑ" #: camlibs/ptp2/config.c:4792 msgid "Playback" msgstr "Відтворити" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "Отримати доÑтуп до верхнього пункту у МОЄМУ МЕÐЮ" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "+NEF (RAW)" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "Рамкова Ñітка" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "Ðктивний D-Lighting" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "1 крок шв./діафрагма" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "Вибрати чиÑло об’єктива без процеÑора" #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "Віртуальний горизонт видошукача" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "Розпочати Ð·Ð°Ð¿Ð¸Ñ Ð²Ñ–Ð´ÐµÐ¾" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "Увімкн. (переглÑд Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾)" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "50%" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "100%" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "75%" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "25%" #: camlibs/ptp2/config.c:4871 msgid "Unknown value" msgstr "Ðевідоме значеннÑ" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "" "Зміна облаÑті автоматичного фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Nikon працює лише у режимі LiveView." #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "Мотор автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ Nikon не виконав фокуÑуваннÑ." #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Nikon працює лише у режимі LiveView." #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "Граничне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„Ð¾ÐºÑƒÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Nikon." #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "Кроки фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Nikon Ñ” надто малими." #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "ÐатиÑнуто наполовину" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 msgid "Press Full" msgstr "ПовніÑтю натиÑнуто" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "Відпущено наполовину" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "ПовніÑтю відпущено" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "Ðегайно" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 msgid "Press 1" msgstr "ÐатиÑнути 1" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 msgid "Press 2" msgstr "ÐатиÑнути 2" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 msgid "Press 3" msgstr "ÐатиÑнути 3" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "ВідпуÑтити 1" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "ВідпуÑтити 2" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "ВідпуÑтити 3" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "Близько 1" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "Близько 2" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "Близько 3" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "Далеко 1" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "Далеко 2" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "Далеко 3" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "Близько %d" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "Далеко %d" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ liveview Nikon" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" "Ð”Ð»Ñ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð° натиÑканнÑм кнопки перемкніть режим на «M» Ñ– вÑтановіть " "швидкіÑть затвора на «bulb»." #: camlibs/ptp2/config.c:5923 msgid "Internal RAM" msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð°Ð¼'Ñть" #: camlibs/ptp2/config.c:5924 msgid "Memory card" msgstr "Картка пам'Ñті" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "ESSID" #: camlibs/ptp2/config.c:6092 msgid "Display" msgstr "ВідображеннÑ" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "Дата ÑтвореннÑ: %s, дата оÑтаннього викориÑтаннÑ: %s" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "Видалити" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "WEP 64-біт" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "WEP 128-біт" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "Керований" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "Спеціальний" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "Ðазва профілю" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "WIFI ESSID" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "IP адреÑа (Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ Ð´Ð»Ñ DHCP)" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "МаÑка мережі" #: camlibs/ptp2/config.c:6359 msgid "Default gateway" msgstr "Типовий шлюз" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "Режим доÑтупу" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "Канал WIFI" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "ШифруваннÑ" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "Ключ ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ (шіÑтн)" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "ЗапиÑ" #: camlibs/ptp2/config.c:6412 msgid "List Wifi profiles" msgstr "Перелік профілів Wifi" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "Створити профіль Wifi" #: camlibs/ptp2/config.c:6521 msgid "Power Down" msgstr "Ð’Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¶Ð¸Ð²Ð»ÐµÐ½Ð½Ñ" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 msgid "Focus Lock" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾ÐºÑƒÑуваннÑ" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 msgid "Bulb Mode" msgstr "Режим кнопки" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñу" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "Моторне автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… фотоапаратів Nikon" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "Моторне автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… фотоапаратів Canon" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ дзеркальних фотоапаратів Nikon" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "Ð’Ñтановити облаÑть автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ Nikon" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "Ð’Ñтановити режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Nikon" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ дзеркальних фотоапаратів Canon" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "СкаÑувати автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… фотоапаратів Canon" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "МаÑштаб Canon EOS" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð¼Ð°ÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Canon EOS" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "Видошукач Canon EOS" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "Видошукач Nikon" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "Віддалений ÑпуÑк Canon EOS" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "Скрипт CHDK" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 msgid "Movie Capture" msgstr "Ð—Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 msgid "Serial Number" msgstr "Серійний номер" #: camlibs/ptp2/config.c:6548 msgid "Camera Manufacturer" msgstr "Виробник фотоапарата" #: camlibs/ptp2/config.c:6550 msgid "Device Version" msgstr "ВерÑÑ–Ñ Ð¿Ñ€Ð¸Ñтрою" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°" #: camlibs/ptp2/config.c:6556 msgid "PTP Version" msgstr "ВерÑÑ–Ñ PTP" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 msgid "DPOF Version" msgstr "ВерÑÑ–Ñ DPOF" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "У мережі живленнÑ" #: camlibs/ptp2/config.c:6559 msgid "External Flash" msgstr "Зовнішній Ñпалах" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "Рівень зарÑду батареї" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 msgid "Camera Orientation" msgstr "ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 msgid "Flash Open" msgstr "Спалах підключений" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 msgid "Flash Charged" msgstr "Спалах зарÑджаєтьÑÑ" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 msgid "Lens Name" msgstr "Ðазва об'єктива" #: camlibs/ptp2/config.c:6570 msgid "Shutter Counter" msgstr "Лічильник затвора" #: camlibs/ptp2/config.c:6571 msgid "Available Shots" msgstr "ДоÑтупні знімки" #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "Мінімальна фокуÑна відÑтань" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "МакÑимальна фокуÑна відÑтань" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "МакÑ. діафрагма при мін. фокуÑній відÑтані" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "МакÑ. діафрагма при макÑ. фокуÑній відÑтані" #: camlibs/ptp2/config.c:6576 msgid "Low Light" msgstr "Слабе Ñвітло" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 msgid "Light Meter" msgstr "Датчик Ñвітла" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 msgid "AF Locked" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФ" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AE" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 msgid "FV Locked" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ FV" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 msgid "Camera Date and Time" msgstr "Дата та Ñ‡Ð°Ñ Ð½Ð° фотоапараті" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "Режим Ñигналу" #: camlibs/ptp2/config.c:6591 msgid "Image Comment" msgstr "Коментар до зображеннÑ" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "GUID WLAN" #: camlibs/ptp2/config.c:6593 msgid "Enable Image Comment" msgstr "Увімкнути коментар до зображеннÑ" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 msgid "LCD Off Time" msgstr "Ð§Ð°Ñ Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ LCD" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 msgid "Recording Media" msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ñ–Ð¹Ð½Ð¸Ñ… даних" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "ТриваліÑть швидкого переглÑду" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "Меню CSM" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "РеверÑивна команда набору" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 msgid "Camera Output" msgstr "Дані, виведені фотоапаратом" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "Результат запиÑу" #: camlibs/ptp2/config.c:6602 msgid "EVF Mode" msgstr "Режим EVF" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "Виконавець" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "Ðомер ПЗЗ" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "ÐвторÑьке право" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "ОчиÑтити датчик" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 msgid "Flicker Reduction" msgstr "УÑÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð»Ð¸Ð¼Ð°Ð½Ð½Ñ" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "Додаткові нетипові функції" #: camlibs/ptp2/config.c:6613 msgid "Focus Info" msgstr "Дані фокуÑуваннÑ" #: camlibs/ptp2/config.c:6614 msgid "Focus Area" msgstr "ОблаÑть фокуÑуваннÑ" #: camlibs/ptp2/config.c:6615 msgid "Auto Power Off" msgstr "Ðвтоматичне вимиканнÑ" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "Глибина полÑ" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "Меню та відтвореннÑ" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "Швидка файлова ÑиÑтема" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 msgid "Capture Target" msgstr "Ціль зйомки" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "CHDK" #: camlibs/ptp2/config.c:6633 msgid "Image Format SD" msgstr "Формат Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ SD" #: camlibs/ptp2/config.c:6634 msgid "Image Format CF" msgstr "Формат Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ CF" #: camlibs/ptp2/config.c:6636 msgid "Image Format Ext HD" msgstr "Формат Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ð³Ð¾ HD" #: camlibs/ptp2/config.c:6643 msgid "Movie ISO Speed" msgstr "ШвидкіÑть ISO відео" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 msgid "ISO Auto" msgstr "Ðвто ISO" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 msgid "WhiteBalance" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6654 msgid "WhiteBalance Adjust A" msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого A" #: camlibs/ptp2/config.c:6655 msgid "WhiteBalance Adjust B" msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого B" #: camlibs/ptp2/config.c:6656 msgid "WhiteBalance X A" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ X A" #: camlibs/ptp2/config.c:6657 msgid "WhiteBalance X B" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ X B" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "Фотоефект" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 msgid "Color Model" msgstr "Режим кольору" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 msgid "Color Space" msgstr "ПроÑтір кольорів" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "Ð—Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð² при довгій екÑпозиції" #: camlibs/ptp2/config.c:6669 msgid "Auto Focus Mode 2" msgstr "Режим автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ 2" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "Допоміжне Ñвітло" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "Ознака обертаннÑ" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 msgid "Flash Compensation" msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ñпалаху" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 msgid "AEB Exposure Compensation" msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції AEB" #: camlibs/ptp2/config.c:6685 msgid "Nikon Flash Mode" msgstr "Режим Ñпалаху Nikon" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 msgid "Flash Commander Mode" msgstr "Режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñпалахом" #: camlibs/ptp2/config.c:6687 msgid "Flash Commander Power" msgstr "Ð–Ð¸Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñпалахом" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "Команда каналу Ñпалаху" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 msgid "Flash Command Self Mode" msgstr "Команда автоматичного режиму Ñпалаху" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 msgid "Flash Command Self Compensation" msgstr "Команда автоматичної компенÑації Ñпалаху" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Self Ñпалаху" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 msgid "Flash Command A Mode" msgstr "Команда A-режиму Ñпалаху" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 msgid "Flash Command A Compensation" msgstr "Команда A-компенÑації Ñпалаху" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ A Ñпалаху" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 msgid "Flash Command B Mode" msgstr "Команда B-режиму Ñпалаху" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 msgid "Flash Command B Compensation" msgstr "Команда B-компенÑації Ñпалаху" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ B Ñпалаху" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "ОблаÑть оÑÐ²Ñ–Ñ‚Ð»ÐµÐ½Ð½Ñ ÐФ" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "Режим звукового Ñигналу ÐФ" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "ЧиÑло F" #: camlibs/ptp2/config.c:6702 msgid "Movie F-Number" msgstr "ЧиÑло F відео" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "Гнучка програма" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "ФокуÑна відÑтань" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "ФокуÑна відÑтань" #: camlibs/ptp2/config.c:6710 msgid "Focus Mode 2" msgstr "Режим фокуÑÑƒÐ²Ð°Ð½Ð½Ñ 2" #: camlibs/ptp2/config.c:6712 msgid "Continuous AF" msgstr "Ðеперервне ÐФ" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "Режим ефектів" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 msgid "Exposure Program" msgstr "Програма екÑпозиції" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 msgid "Scene Mode" msgstr "Режим Ñцени" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "Ð¡Ð¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð²" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 msgid "HDR Mode" msgstr "Режим HDR" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "ВиÑокодинамічний HDR" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "HDR-згладжуваннÑ" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "Тихий режим зйомки" #: camlibs/ptp2/config.c:6725 msgid "Canon Shooting Mode" msgstr "Режим Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon" #: camlibs/ptp2/config.c:6726 msgid "Canon Auto Exposure Mode" msgstr "Режим автоекÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Canon" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 msgid "Drive Mode" msgstr "Режим мотора" #: camlibs/ptp2/config.c:6728 msgid "Picture Style" msgstr "Стиль зображеннÑ" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "Режим Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾ÐºÑƒÑа" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "Режим виміру екÑпозиції" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "Пріоритет відкритої діафрагми" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "МакÑимум діафрагми" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "Точка фокуÑуваннÑ" #: camlibs/ptp2/config.c:6738 msgid "Capture Delay" msgstr "Затримка захопленнÑ" #: camlibs/ptp2/config.c:6742 msgid "Shutter Speed 2" msgstr "ШвидкіÑть затвора 2" #: camlibs/ptp2/config.c:6743 msgid "Movie Shutter Speed 2" msgstr "ШвидкіÑть затвора 2 відео" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 msgid "AF Distance" msgstr "ВідÑтань ÐФ" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 msgid "Focus Area Wrap" msgstr "ОблаÑть фокуÑуваннÑ" #: camlibs/ptp2/config.c:6751 msgid "Exposure Delay Mode" msgstr "Режим затримки екÑпонуваннÑ" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 msgid "Exposure Lock" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐµÐºÑпозиції" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "Режим AE-L/AF-L" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "Режим ÐФ Live View" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ ÐФ Live View" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "ВпорÑÐ´ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² файлів" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 msgid "Flash Sign" msgstr "Знак Ñпалаху" #: camlibs/ptp2/config.c:6759 msgid "Modelling Flash" msgstr "ÐœÐ¾Ð´ÐµÐ»ÑŽÐ²Ð°Ð½Ð½Ñ Ñпалаху" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "Сітка видошукача" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 msgid "Image Review" msgstr "ОглÑд зображеннÑ" #: camlibs/ptp2/config.c:6762 msgid "Image Rotation Flag" msgstr "Ознака Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "ВідпуÑÐºÐ°Ð½Ð½Ñ Ð±ÐµÐ· картки CF" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 msgid "Flash Mode Manual Power" msgstr "Ручне вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚ÑƒÐ¶Ð½Ð¾Ñті Ñпалаху" #: camlibs/ptp2/config.c:6765 msgid "Auto Focus Area" msgstr "ОблаÑть автофокуÑуваннÑ" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 msgid "Flash Exposure Compensation" msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ð²Ð¸Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñпалаху" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 msgid "Bracketing" msgstr "Ðвтовилка" #: camlibs/ptp2/config.c:6769 msgid "Bracket Mode" msgstr "Режим вилки" #: camlibs/ptp2/config.c:6770 msgid "EV Step" msgstr "Крок Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐµÐºÑпозиції" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 msgid "Bracket Set" msgstr "Ð’Ñтановлено дужку" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "ПорÑдок вилки" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "КількіÑть Ñпалахів" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "Інтервал між Ñпалахами" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "МакÑимум знімків" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 msgid "Auto White Balance Bias" msgstr "Ðвтоматичний Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 msgid "Tungsten White Balance Bias" msgstr "Вольфрамовий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 msgid "Fluorescent White Balance Bias" msgstr "ФлуореÑцентний Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 msgid "Daylight White Balance Bias" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ денного Ñвітла" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 msgid "Flash White Balance Bias" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ Ñпалаху" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 msgid "Cloudy White Balance Bias" msgstr "Туманний Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 msgid "Shady White Balance Bias" msgstr "ТіниÑтий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6794 msgid "White Balance Bias Preset Nr" msgstr "Ðомер набору ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого" #: camlibs/ptp2/config.c:6795 msgid "White Balance Bias Preset 0" msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого (набір 0)" #: camlibs/ptp2/config.c:6796 msgid "White Balance Bias Preset 1" msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого (набір 1)" #: camlibs/ptp2/config.c:6797 msgid "White Balance Bias Preset 2" msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого (набір 2)" #: camlibs/ptp2/config.c:6798 msgid "White Balance Bias Preset 3" msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого (набір 3)" #: camlibs/ptp2/config.c:6799 msgid "White Balance Bias Preset 4" msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого (набір 4)" #: camlibs/ptp2/config.c:6800 msgid "Selftimer Delay" msgstr "Затримка влаÑного таймера" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "ОблаÑть центру маÑ" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 msgid "Flash Shutter Speed" msgstr "ШвидкіÑть затвора при Ñпалаху" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 msgid "Remote Timeout" msgstr "Віддалений тайм-аут" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 msgid "Remote Mode" msgstr "Віддалений режим" #: camlibs/ptp2/config.c:6805 msgid "Application Mode" msgstr "Режим роботи" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 msgid "Sharpening" msgstr "ÐŸÑ–Ð´Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ€Ñ–Ð·ÐºÐ¾Ñті" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 msgid "Tone Compensation" msgstr "КомпенÑÐ°Ñ†Ñ–Ñ Ñ‚Ð¾Ð½Ñƒ" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 msgid "Saturation" msgstr "ÐаÑиченіÑть" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 msgid "Hue Adjustment" msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑƒ" #: camlibs/ptp2/config.c:6811 msgid "Auto Exposure Bracketing" msgstr "ÐвтоекÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Â«Ð²Ð¸Ð»ÐºÐ¸Â»" #: camlibs/ptp2/config.c:6812 msgid "Movie Sound" msgstr "Звук до відео" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 msgid "Manual Movie Setting" msgstr "Параметр відео вручну" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "Мікрофон" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "РеверÑивні індикатори" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð¸ÐºÑ€Ð¸Ð²Ð»ÐµÐ½Ð½Ñм" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 msgid "Video Mode" msgstr "Відеорежим" #: camlibs/ptp2/config.c:6835 msgid "Meter Off Time" msgstr "Лічильник чаÑу у вимкненому Ñтані" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "Призначити кнопку функції" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "Призначити кнопку попереднього переглÑду" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 msgid "Movie Quality" msgstr "ЯкіÑть відеозображеннÑ" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 msgid "Minimum Shutter Speed" msgstr "Мінімальна швидкіÑть затвора" #: camlibs/ptp2/config.c:6862 msgid "Movie Resolution" msgstr "Роздільна здатніÑть відео" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 msgid "Continuous Shooting Speed Slow" msgstr "Повільна швидкіÑть неперервного зніманнÑ" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "Ðвтоматичний верхній рівень ISO" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "ШвидкіÑть Ñинхронізації Ñпалаху" #: camlibs/ptp2/config.c:6869 msgid "Focus Metering" msgstr "Ð’Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾ÐºÑƒÑа" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 msgid "High ISO Noise Reduction" msgstr "Потужне уÑÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑƒÐ¼Ñƒ ISO" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 msgid "Continuous Shooting Speed High" msgstr "ВиÑока швидкіÑть неперервного зніманнÑ" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 msgid "JPEG Compression Policy" msgstr "Правила ÑтиÑÐºÐ°Ð½Ð½Ñ JPEG" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "ПріоритетніÑть режиму AF-C" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "ПріоритетніÑть режиму AF-S" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "ÐÐºÑ‚Ð¸Ð²ÑƒÐ²Ð°Ð½Ð½Ñ ÐФ" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "ОблаÑть динамічного ÐФ" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 msgid "AF Lock On" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФ" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "Точка облаÑті ÐФ" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "Кнопка Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ ÐФ" #: camlibs/ptp2/config.c:6913 msgid "Movie High ISO Noise Reduction" msgstr "Потужне уÑÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑƒÐ¼Ñƒ ISO відео" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "МакÑимальна неперервна поÑлідовніÑть ÑпуÑків" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 msgid "Raw Compression" msgstr "СтиÑÐ½ÐµÐ½Ð½Ñ Ð½ÐµÐ³Ð°Ñ‚Ð¸Ð²Ð°" #: camlibs/ptp2/config.c:6922 msgid "Image Quality 2" msgstr "ЯкіÑть Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ 2" #: camlibs/ptp2/config.c:6944 msgid "Image Settings" msgstr "Параметри зображеннÑ" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "Параметри зйомки" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "Профілі WiFi" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 msgid "Other PTP Device Properties" msgstr "Інші влаÑтивоÑті PTP приÑтрою" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "ВлаÑтивіÑть PTP 0x%04x" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "Вибачте, зараз можливе лише Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті «%s» / 0x%04x." #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "ВлаÑтивіÑть «%s» / 0x%04x не було вÑтановлено (0x%04x: %s)" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "ВлаÑтивіÑть «%s» / 0x%04x не було вÑтановлено (0x%04x: %s)." #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" "Спроба обробки Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ð° «%s» / 0x%04x завершилаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ з номером " "%d." #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "Треба вказати теку, що починаєтьÑÑ Ð· /store_xxxxxxxxx/" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" "Драйвер PTP2\n" "(c)2001-2005, автор — Mariusz Woloszyn .\n" "(c)2003-%d, автор — Marcus Meissner .\n" "Драйвер підтримує фотоапарати PTP чи PictBridge(tm) та\n" "медіапрогравачі, у Ñких передбачено підтримку протоколу MTP.\n" "\n" "ÐаÑолоджуйтеÑÑŒ!" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ видошукача Canon" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ð´Ð¾ÑˆÑƒÐºÐ°Ñ‡Ð° Canon" #: camlibs/ptp2/library.c:2537 msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "Ваш фотоапарат Canon не підтримує режим видошукача Canon" #: camlibs/ptp2/library.c:2545 msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "" "Вибачте, у вашому фотоапараті Nikon не передбачено підтримки режиму LiveView" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "" "Вибачте, здаєтьÑÑ, ваш фотоапарат Nikon не повертах Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ JPEG у режимі " "LiveView" #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð¼ÐºÐ½ÑƒÑ‚Ð¸ liveview Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° Nikon" #: camlibs/ptp2/library.c:2799 msgid "Sorry, your camera does not support Nikon capture" msgstr "Ваш фотоапарат не підтримує Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Nikon" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" "Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ liveview на Nikon 1, хоча Ñ†Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ñть Ñ” обов’Ñзковою " "Ð´Ð»Ñ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" #: camlibs/ptp2/library.c:3045 msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Ваш фотоапарат Canon не підтримує режим Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ EOS Canon" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 msgid "Canon EOS Half-Press failed" msgstr "Помилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ напівнатиÑÐºÐ°Ð½Ð½Ñ Canon EOS" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð²Ð½ÐµÑених змін Canon EOS" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: можливо, немає фокуÑуваннÑ?" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 msgid "Canon EOS Half-Release failed" msgstr "Помилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ напіввідпуÑÐºÐ°Ð½Ð½Ñ Canon EOS" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 msgid "Canon EOS Full-Press failed" msgstr "Помилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ повного натиÑÐºÐ°Ð½Ð½Ñ Canon EOS" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 msgid "Canon EOS Full-Release failed" msgstr "Помилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ повного відпуÑÐºÐ°Ð½Ð½Ñ Canon EOS" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Canon EOS" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Canon EOS: %x" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "" "Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: можливо, перевернуте зображеннÑ?" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" "Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: можливо, на картці не залишилоÑÑ " "вільного міÑцÑ?" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "" "Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: можливо, Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° картку заборонено?" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" "Механізм Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Canon EOS не зміг здійÑнити ÑпуÑканнÑ: " "невідома помилка %d, будь лаÑка, повідомте авторам програми." #: camlibs/ptp2/library.c:3332 msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "Ваш фотоапарат Canon не підтримує ініціалізацію Canon Capture" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "Помилка Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð²Ð¸Ð´Ð¾ÑˆÑƒÐºÐ°Ñ‡Ð° Canon" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 msgid "Canon Capture failed" msgstr "Помилка Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Canon" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "Ваш фотоапарат не підтримує загальне захопленнÑ" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: 0x%x" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ фотоапарат. СповіÑтіть про це." #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑ" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, c-format msgid "Manufacturer: %s\n" msgstr "Виробник: %s\n" #: camlibs/ptp2/library.c:4800 #, c-format msgid "Model: %s\n" msgstr "Модель: %s\n" #: camlibs/ptp2/library.c:4802 #, c-format msgid " Version: %s\n" msgstr " ВерÑÑ–Ñ: %s\n" #: camlibs/ptp2/library.c:4805 #, c-format msgid " Serial Number: %s\n" msgstr " Серійний номер: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "Ідентифікатор Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°: 0x%x (%d.%d)\n" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "ÐžÐ¿Ð¸Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°: %s\n" #: camlibs/ptp2/library.c:4821 #, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "ВерÑÑ–Ñ Ñтандарту PTP: %d.%d\n" #: camlibs/ptp2/library.c:4828 #, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Режим роботи: 0x%04x\n" #: camlibs/ptp2/library.c:4833 #, c-format msgid "" "\n" "Capture Formats: " msgstr "" "\n" "Формати захопленнÑ: " #: camlibs/ptp2/library.c:4847 #, c-format msgid "Display Formats: " msgstr "Формати відображеннÑ: " #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "Підтримувані влаÑтивоÑті об'єкта MTP:\n" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr " Помилка PTP %04x при запиті" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" "\n" "МожливоÑті приÑтрою:\n" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "\tÐ—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð², " #: camlibs/ptp2/library.c:4902 #, c-format msgid "File Deletion, " msgstr "Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð², " #: camlibs/ptp2/library.c:4904 #, c-format msgid "No File Deletion, " msgstr "Ðемає Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð², " #: camlibs/ptp2/library.c:4908 #, c-format msgid "File Upload\n" msgstr "Ð’Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²\n" #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "Ðемає Ð²Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²\n" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "\tЗагальне Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ, " #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "\tÐемає Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ, " #: camlibs/ptp2/library.c:4920 #, c-format msgid "Open Capture, " msgstr "Відкрите захопленнÑ, " #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "Ðемає відкритого захопленнÑ, " #: camlibs/ptp2/library.c:4929 #, c-format msgid "Canon Capture" msgstr "Ð—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Canon" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "Ð—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ EOS Canon" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "%sкнопка затвора Canon EOS" #: camlibs/ptp2/library.c:4947 #, c-format msgid "Nikon Capture 1" msgstr "Ð—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Nikon 1" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "%sÐ·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Nikon 2" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "%sÐ·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Nikon 3 " #: camlibs/ptp2/library.c:4965 #, c-format msgid "Sony Capture" msgstr "Ð—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Sony" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "XML-Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Olympus E\n" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "Без залежного від виробника захопленнÑ\n" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "\tПідтримка Nikon Wifi\n" #: camlibs/ptp2/library.c:4991 #, c-format msgid "\tCanon Wifi support\n" msgstr "\tПідтримка Canon Wifi\n" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" "\n" "Зведена Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ накопичувачі:\n" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "\tÐžÐ¿Ð¸Ñ Ð½Ð°ÐºÐ¾Ð¿Ð¸Ñ‡ÑƒÐ²Ð°Ñ‡Ð°: %s\n" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "\tМітка тому: %s\n" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "Вбудована ROM" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "Змінна ROM" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "Вбудована RAM" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "Змінна RAM (картка пам'Ñті)" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, c-format msgid "Unknown: 0x%04x\n" msgstr "Ðевідомо: 0x%04x\n" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "\tТип ноÑÑ–Ñ: %s\n" #: camlibs/ptp2/library.c:5043 msgid "Generic Flat" msgstr "Загальний плоÑкий" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "Загальний ієрархічний" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "Digital Camera Layout (DCIM)" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "\tТип Файлової ÑиÑтеми: %s\n" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "читаннÑ-запиÑ" #: camlibs/ptp2/library.c:5056 msgid "Read-Only" msgstr "Лише читаннÑ" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "Лише Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· видаленнÑм об'єктів'" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "\tДоÑтупна ємніÑть: %s\n" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "\tМакÑимальна ємніÑть: %llu (%lu МБ)\n" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "\tВільний проÑтір (байтів): %llu (%lu МБ)\n" #: camlibs/ptp2/library.c:5075 #, c-format msgid "\tFree Space (Images): %d\n" msgstr "\tВільний проÑтір (зображень): %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" "\n" "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ влаÑтивоÑті приÑтрою:\n" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr " не прочитано.\n" #: camlibs/ptp2/library.c:5116 #, c-format msgid "cannot be queried.\n" msgstr "не можна отримати.\n" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr " помилка %x у запиті." #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "Файл '%s/%s' не Ñ–Ñнує." #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "Метадані підтримуютьÑÑ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтроїв MTP." #: camlibs/ptp2/library.c:6414 msgid "Device does not support setting object protection." msgstr "У приÑтрої не передбачено вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ñ…Ð¸Ñту об’єкта." #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "ПриÑтрою не вдалоÑÑ Ð²Ñтановити режим захиÑту об’єкта %d" #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Ð†Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°" #: camlibs/ptp2/library.c:7254 #, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "" "У поточній верÑÑ–Ñ— PTP реалізовано лише Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² з протоколами USB Ñ– " "PTP/IP, тип порту %x" #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" "Підтримка згорнутого XML у Olympus у поточній верÑÑ–Ñ— доÑтупна лише, Ñкщо " "вбудовано підтримку libxml2." #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "Ðевідома помилка PTP" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP OK!" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° PTP" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "Ð¡ÐµÐ°Ð½Ñ PTP не відкритий" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "Ðеправильний ідентифікатор транзакції" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ñ–Ñ PTP не підтримуєтьÑÑ" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "Параметр PTP не підтримуютьÑÑ" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "неповна передача PTP" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP неправильний ідентифікатор Ñховища" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "Ðеправильний деÑкриптор об'єкта PTP" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "ВлаÑтивіÑть приÑтрою PTP не підтримуєтьÑÑ" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "Ðеправильний код формату об'єкта PTP" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "Сховище PTP переповнене" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "Об'єкт PTP захищений від запиÑу" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "Сховище PTP лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "ДоÑтуп до PTP заборонено" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "Мініатюра PTP відÑутнÑ" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "Помилка ÑамотеÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ PTP" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "ЧаÑткове Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ PTP" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "ÐедоÑтупне Ñховище PTP" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "Ðепідтримувана ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ PTP" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "ВідÑÑƒÑ‚Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð° Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ об'єкт PTP" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "Ðеправильний формат коду PTP" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "Ðевідомий код виробника PTP" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "Зйомку PTP вже перервано" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "ПриÑтрій PTP зайнÑтий" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "Ðевідомий батьківÑький об'єкт PTP" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "Ðеправильний формат влаÑтивоÑті приÑтрою PTP" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "Ðеправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ñтрою PTP" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "Ðеправильний параметр PTP" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "Ð¡ÐµÐ°Ð½Ñ PTP вже відкритий" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "Транзакцію PTP ÑкаÑовано" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "Ðепідтримувана ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ†Ñ–Ð»Ñ– PTP" #: camlibs/ptp2/ptp.c:4047 msgid "Filename Required" msgstr "Слід вказати назву файла" #: camlibs/ptp2/ptp.c:4048 msgid "Filename Conflicts" msgstr "Конфлікт назв файлів" #: camlibs/ptp2/ptp.c:4049 msgid "Filename Invalid" msgstr "Ðекоректна назва файла" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "Ðпаратна помилка" #: camlibs/ptp2/ptp.c:4052 msgid "Out of Focus" msgstr "Поза фокуÑом" #: camlibs/ptp2/ptp.c:4053 msgid "Change Camera Mode Failed" msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби змінити режим фотоапарата" #: camlibs/ptp2/ptp.c:4054 msgid "Invalid Status" msgstr "Ðекоректний Ñтан" #: camlibs/ptp2/ptp.c:4055 msgid "Set Property Not Supported" msgstr "Підтримки вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті не передбачено" #: camlibs/ptp2/ptp.c:4056 msgid "Whitebalance Reset Error" msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби відновити початковий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "Помилка пошуку еталона пилу" #: camlibs/ptp2/ptp.c:4058 msgid "Shutter Speed Bulb" msgstr "Кнопка швидкоÑті затвора" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "ПоÑлідовніÑть Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð²Ð³Ð¾Ñ€Ñƒ" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "Режим фотоапарата не коригує чиÑла F" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "Ðе у Liveview" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "Кінець кроку мотора Mf" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "ÐедоÑтатніÑть кроку мотора Mf" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "СкаÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ð³Ð¾ передаваннÑ" #: camlibs/ptp2/ptp.c:4066 msgid "Unknown Command" msgstr "Ðевідома команда" #: camlibs/ptp2/ptp.c:4067 msgid "Operation Refused" msgstr "Відмовлено у виконанні дії" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "Об’єктив закрито кришкою" #: camlibs/ptp2/ptp.c:4069 msgid "Battery Low" msgstr "Ðизький рівень зарÑду" #: camlibs/ptp2/ptp.c:4070 msgid "Camera Not Ready" msgstr "Фотоапарат не готовий" #: camlibs/ptp2/ptp.c:4072 msgid "PTP Timeout" msgstr "Затримка PTP" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "Запит щодо ÑкаÑÑƒÐ²Ð°Ð½Ð½Ñ PTP" #: camlibs/ptp2/ptp.c:4075 msgid "PTP Response Expected" msgstr "Мало бути надано відповідь PTP" #: camlibs/ptp2/ptp.c:4076 msgid "PTP Data Expected" msgstr "Мало бути надано дані PTP" #: camlibs/ptp2/ptp.c:4077 msgid "PTP I/O Error" msgstr "помилка введеннÑ-Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ PTP" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "Ðевизначена влаÑтивіÑть PTP" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "Режим функціонуваннÑ" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "Параметри ÑтиÑненнÑ" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "ПідÑÐ¸Ð»ÐµÐ½Ð½Ñ RGB" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "Ð§Ð°Ñ ÐµÐºÑпозиції" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "Режим програмованої екÑпозиції" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "Ð†Ð½Ð´ÐµÐºÑ ÐµÐºÑпозиції (швидкіÑть за ISO)" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "ÐšÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ ÐµÐºÑпозиції" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "Затримка перед знімком" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "КонтраÑтніÑть" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Цифрове збільшеннÑ" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "КількіÑть проміжків чаÑу" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "Інтервал між проміжками чаÑу" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "URL закачуваннÑ" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ авторÑькі права" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "Підтримуваний розмір мініатюр" #: camlibs/ptp2/ptp.c:4136 #, fuzzy msgid "Enabled Streams" msgstr "Ðекоректний Ñтан" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Формат дати" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Роздільна здатніÑть відео" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "ЯкіÑть відеозображеннÑ" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "КонтраÑтніÑть" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "ЯÑкравіÑть" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Формат дати" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "Формат штампу дати та чаÑу" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "Вивід відео" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "Ð•ÐºÐ¾Ð½Ð¾Ð¼Ñ–Ñ ÐµÐ½ÐµÑ€Ð³Ñ–Ñ—" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "Мова інтерфейÑу" #: camlibs/ptp2/ptp.c:4169 msgid "Battery Type" msgstr "Тип акумулÑтора" #: camlibs/ptp2/ptp.c:4170 msgid "Battery Mode" msgstr "Режим акумулÑтора" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "UILockType" #: camlibs/ptp2/ptp.c:4172 msgid "Camera Mode" msgstr "Режим фотоапарата" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "Формат файлів переглÑду у повному розмірі" #: camlibs/ptp2/ptp.c:4176 msgid "Self Time" msgstr "ВлаÑний чаÑ" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 msgid "Shooting Mode" msgstr "Режим затвора" #: camlibs/ptp2/ptp.c:4180 msgid "Image Mode" msgstr "Режим зображеннÑ" #: camlibs/ptp2/ptp.c:4187 msgid "Slow Shutter Setting" msgstr "Параметр повільного затвора" #: camlibs/ptp2/ptp.c:4188 msgid "AF Mode" msgstr "Режим ÐФ" #: camlibs/ptp2/ptp.c:4189 msgid "Image Stabilization" msgstr "Ð¡Ñ‚Ð°Ð±Ñ–Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" #: camlibs/ptp2/ptp.c:4191 msgid "Color Gain" msgstr "ПідÑÐ¸Ð»ÐµÐ½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "ЧутливіÑть" #: camlibs/ptp2/ptp.c:4194 msgid "Parameter Set" msgstr "Ðабір параметрів" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "Пріоритет відкритої діафрагми" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "МакÑимум діафрагми" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "ФокуÑна відÑтань телеоб’єктива" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "Широка фокуÑна відÑтань" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "Знаменник фокуÑної відÑтані" #: camlibs/ptp2/ptp.c:4207 msgid "Capture Transfer Mode" msgstr "Режим Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð² зйомки" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "ÐŸÑ€ÐµÑ„Ñ–ÐºÑ Ð½Ð°Ð·Ð²Ð¸" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "Режим ÑкоÑті розміру" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "Підтримуваний розмір мініатюр" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "Розмір вихідних даних з фотоапарата" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "Розмір вхідних Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° даних" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "ВерÑÑ–Ñ Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¾Ð³Ð¾ API" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "ВлаÑник фотоапарата" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "Ð§Ð°Ñ UNIX" #: camlibs/ptp2/ptp.c:4219 msgid "Camera Body ID" msgstr "Ідентифікатор оÑнови фотоапарата" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "Показати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "МакÑимум відкритої діафрагми" #: camlibs/ptp2/ptp.c:4223 msgid "Digital Zoom Magnification" msgstr "Цифрове збільшеннÑ" #: camlibs/ptp2/ptp.c:4224 msgid "Ml Spot Position" msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð»Ñми Ml" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "Показати макÑимальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "Пріоритет макÑимуму діафрагми" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "Початкова Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ EZoom" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "Розмір EZoom Ð´Ð»Ñ Ñ‚ÐµÐ»ÐµÐ¾Ð±â€™Ñ”ÐºÑ‚Ð¸Ð²Ð°" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "КількіÑть Ñпалахів" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "Кут обертаннÑ" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "Поворот Ñцени" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "Режим імітації подій" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "Тип показу Ñлайдів" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "Середні розміри файлів" #: camlibs/ptp2/ptp.c:4239 msgid "Model ID" msgstr "Ідентифікатор моделі" #: camlibs/ptp2/ptp.c:4248 msgid "Shooting Bank" msgstr "Сховище знімків" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "Ðазва Ñховища знімків A" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "Ðазва Ñховища знімків B" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "Ðазва Ñховища знімків C" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "Ðазва Ñховища знімків D" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "Скинути банк 0" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "Температура білого кольору" #: camlibs/ptp2/ptp.c:4278 msgid "White Balance Preset Number" msgstr "Ðомер набору баланÑу білого" #: camlibs/ptp2/ptp.c:4280 msgid "White Balance Preset Name 0" msgstr "Ðазва типового баланÑу білого 0" #: camlibs/ptp2/ptp.c:4282 msgid "White Balance Preset Name 1" msgstr "Ðазва типового баланÑу білого 1" #: camlibs/ptp2/ptp.c:4284 msgid "White Balance Preset Name 2" msgstr "Ðазва типового баланÑу білого 2" #: camlibs/ptp2/ptp.c:4286 msgid "White Balance Preset Name 3" msgstr "Ðазва типового баланÑу білого 3" #: camlibs/ptp2/ptp.c:4288 msgid "White Balance Preset Name 4" msgstr "Ðазва типового баланÑу білого 4" #: camlibs/ptp2/ptp.c:4290 msgid "White Balance Preset Value 0" msgstr "Типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого 0" #: camlibs/ptp2/ptp.c:4292 msgid "White Balance Preset Value 1" msgstr "Типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого 1" #: camlibs/ptp2/ptp.c:4294 msgid "White Balance Preset Value 2" msgstr "Типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого 2" #: camlibs/ptp2/ptp.c:4296 msgid "White Balance Preset Value 3" msgstr "Типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого 3" #: camlibs/ptp2/ptp.c:4298 msgid "White Balance Preset Value 4" msgstr "Типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого 4" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "Фокальна довжина об'єктива (Ðе CPU)" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "МакÑимальна діафрагма об'єктива (без CPU)" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "ÐÐ²Ñ‚Ð¾Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð½Ñ DX" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "Ðазва банку A у меню" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "Ðазва банку B у меню" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "Ðазва банку C у меню" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "Ðазва банку D у меню" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "Скинути банк меню" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "Ð’Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÐФ" #: camlibs/ptp2/ptp.c:4360 msgid "Focus Area Zone" msgstr "Зона облаÑті фокуÑуваннÑ" #: camlibs/ptp2/ptp.c:4362 msgid "Enable Copyright" msgstr "Увімкнути Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ñьких прав" #: camlibs/ptp2/ptp.c:4366 msgid "Exposure ISO Step" msgstr "Крок екÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ISO" #: camlibs/ptp2/ptp.c:4368 msgid "Exposure Step" msgstr "Крок екÑпозиції" #: camlibs/ptp2/ptp.c:4370 msgid "Exposure Compensation (EV)" msgstr "КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції (EV)" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "облаÑть центру маÑ" #: camlibs/ptp2/ptp.c:4376 msgid "Exposure Base Matrix" msgstr "ÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ Ð¾Ñнови екÑпонуваннÑ" #: camlibs/ptp2/ptp.c:4378 msgid "Exposure Base Center" msgstr "Центр оÑнови екÑпонуваннÑ" #: camlibs/ptp2/ptp.c:4380 msgid "Exposure Base Spot" msgstr "ПлÑма оÑнови екÑпонуваннÑ" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "ОблаÑть автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ Live View" #: camlibs/ptp2/ptp.c:4390 msgid "Auto Meter Off Time" msgstr "Ðвтоматичний лічильник чаÑу у вимкненому Ñтані" #: camlibs/ptp2/ptp.c:4392 msgid "Self Timer Delay" msgstr "Затримка влаÑного таймера" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ñ‚Ð¸ зображеннÑ" #: camlibs/ptp2/ptp.c:4398 msgid "Auto Off Timers" msgstr "Таймери автовимиканнÑ" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "Рівень кута" #: camlibs/ptp2/ptp.c:4402 msgid "Shooting Speed" msgstr "ШвидкіÑть затвора" #: camlibs/ptp2/ptp.c:4406 msgid "Exposure delay mode" msgstr "Режим затримки екÑпонуваннÑ" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 msgid "Long Exposure Noise Reduction" msgstr "Ð—Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð² при довгій екÑпозиції" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "ПідÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ð Ðš-диÑплеÑ" #: camlibs/ptp2/ptp.c:4418 msgid "High ISO noise reduction" msgstr "Потужне уÑÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑƒÐ¼Ñƒ ISO" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "Підказки на екрані" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "Ð†Ð¼â€™Ñ Ñ…ÑƒÐ´Ð¾Ð¶Ð½Ð¸ÐºÐ°" #: camlibs/ptp2/ptp.c:4424 msgid "Copyright Information" msgstr "ВідомоÑті щодо авторÑьких прав" #: camlibs/ptp2/ptp.c:4432 msgid "Modeling Flash" msgstr "ÐœÐ¾Ð´ÐµÐ»ÑŽÐ²Ð°Ð½Ð½Ñ Ñпалаху" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "Ручний режим автовилки" #: camlibs/ptp2/ptp.c:4440 msgid "Auto Bracket Selection" msgstr "Ðвтоматичний вибір вилки" #: camlibs/ptp2/ptp.c:4441 msgid "NIKON Auto Bracketing Set" msgstr "Ðабір автовилки NIKON" #: camlibs/ptp2/ptp.c:4443 msgid "Center Button Shooting Mode" msgstr "Режим ÑпуÑку Ñередньою кнопкою" #: camlibs/ptp2/ptp.c:4445 msgid "Center Button Playback Mode" msgstr "Режим Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñередньою кнопкою" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "Множинний вибір" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "Ð’Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про фотографію" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "Призначити кнопку функції" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "ВлаÑні команди набору" #: camlibs/ptp2/ptp.c:4457 msgid "Aperture Setting" msgstr "Параметри діафрагми" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "Кнопки та набір" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "Картка CF не відпущена" #: camlibs/ptp2/ptp.c:4465 msgid "Center Button Zoom Ratio" msgstr "МаÑштаб Ð´Ð»Ñ Ñ†ÐµÐ½Ñ‚Ñ€Ð°Ð»ÑŒÐ½Ð¾Ñ— кнопки" #: camlibs/ptp2/ptp.c:4467 msgid "Function Button 2" msgstr "Функціональна кнопка 2" #: camlibs/ptp2/ptp.c:4471 msgid "Normal AF On" msgstr "Ð’Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ ÐФ" #: camlibs/ptp2/ptp.c:4473 msgid "Clean Image Sensor" msgstr "ОчиÑтити датчик зображеннÑ" #: camlibs/ptp2/ptp.c:4475 msgid "Image Comment String" msgstr "РÑдок ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ Ð´Ð¾ зображеннÑ" #: camlibs/ptp2/ptp.c:4477 msgid "Image Comment Enable" msgstr "Ð’Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ Ð´Ð¾ зображеннÑ" #: camlibs/ptp2/ptp.c:4479 msgid "Image Rotation" msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð¸Ñла об’єктива вручну" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "Розмір екрана Ð´Ð»Ñ Ð²Ñ–Ð´ÐµÐ¾" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "Ð“Ð¾Ð»Ð¾Ñ Ð· відео" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "Мікрофон відео" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "Слот картки Ð´Ð»Ñ Ð²Ñ–Ð´ÐµÐ¾" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "Затримка Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¼Ð¾Ð½Ñ–Ñ‚Ð¾Ñ€Ð°" #: camlibs/ptp2/ptp.c:4497 msgid "Bracketing Enable" msgstr "Ðвтовилку увімкнено" #: camlibs/ptp2/ptp.c:4499 msgid "Exposure Bracketing Step" msgstr "Крок автовилки екÑпонуваннÑ" #: camlibs/ptp2/ptp.c:4501 msgid "Exposure Bracketing Program" msgstr "Програма автовилки екÑпонуваннÑ" #: camlibs/ptp2/ptp.c:4503 msgid "Auto Exposure Bracket Count" msgstr "КількіÑть позицій автоекÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Â«Ð²Ð¸Ð»ÐºÐ¸Â»" #: camlibs/ptp2/ptp.c:4504 msgid "White Balance Bracket Step" msgstr "Крок вилки баланÑу білого" #: camlibs/ptp2/ptp.c:4505 msgid "White Balance Bracket Program" msgstr "Програма вилки баланÑу білого" #: camlibs/ptp2/ptp.c:4507 msgid "Lens ID" msgstr "Ідентифікатор об'єктива" #: camlibs/ptp2/ptp.c:4509 msgid "Lens Sort" msgstr "Сорт об’єктива" #: camlibs/ptp2/ptp.c:4511 msgid "Lens Type" msgstr "Тип об’єктива" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "Мінімальна фокуÑна відÑтань" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "МакÑимальна фокуÑна відÑтань" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "МакÑ. діафрагма при мін. фокуÑній відÑтані" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "МакÑ. діафрагма при макÑ. фокуÑній відÑтані" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "ДиÑплей видошукача ISO" #: camlibs/ptp2/ptp.c:4523 msgid "Auto Off Photo" msgstr "Ðвтоматичне вимиканнÑ" #: camlibs/ptp2/ptp.c:4525 msgid "Auto Off Menu" msgstr "Меню автовимиканнÑ" #: camlibs/ptp2/ptp.c:4527 msgid "Auto Off Info" msgstr "Дані щодо автовимиканнÑ" #: camlibs/ptp2/ptp.c:4529 msgid "Self Timer Shot Number" msgstr "КількіÑть знімків за таймером" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð½ÑŒÑ”Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñм" #: camlibs/ptp2/ptp.c:4537 msgid "Nikon Exposure Time" msgstr "Ð§Ð°Ñ ÐµÐºÑпозиції Nikon" #: camlibs/ptp2/ptp.c:4539 msgid "Warning Status" msgstr "Стан попередженнÑ" #: camlibs/ptp2/ptp.c:4546 msgid "AF LCD Top Mode 2" msgstr "AF LCD верхній режим 2" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "Ðктивний ÑенÑор ÐФ" #: camlibs/ptp2/ptp.c:4552 msgid "Exposure Meter" msgstr "Лічильник екÑпозиції" #: camlibs/ptp2/ptp.c:4556 msgid "USB Speed" msgstr "ШвидкіÑть USB" #: camlibs/ptp2/ptp.c:4558 msgid "CCD Serial Number" msgstr "Серійний номер ПЗЗ" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "Тип групи PTN" #: camlibs/ptp2/ptp.c:4564 msgid "FNumber Lock" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡Ð¸Ñла F" #: camlibs/ptp2/ptp.c:4566 msgid "Exposure Aperture Lock" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸ екÑпозиції" #: camlibs/ptp2/ptp.c:4568 msgid "TV Lock Setting" msgstr "Режим Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ TV" #: camlibs/ptp2/ptp.c:4570 msgid "AV Lock Setting" msgstr "Параметр Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AV" #: camlibs/ptp2/ptp.c:4572 msgid "Illum Setting" msgstr "Параметр оÑвітленнÑ" #: camlibs/ptp2/ptp.c:4574 msgid "Focus Point Bright" msgstr "ЯÑкравіÑть точки фокуÑуваннÑ" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "Зовнішній Ñпалах з’єднано з фотоапаратом" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "Стан зовнішнього Ñпалаху" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "Тип зовнішнього Ñпалаху" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 msgid "External Flash Mode" msgstr "Режим зовнішнього Ñпалаху" #: camlibs/ptp2/ptp.c:4584 msgid "External Flash Compensation" msgstr "Ð—Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ ÐºÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ ÐµÐºÑпозиції" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "Ефект Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð§Ð‘" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "ЧіткіÑть ЧБ" #: camlibs/ptp2/ptp.c:4604 msgid "BW Contrast" msgstr "КонтраÑтніÑть ЧБ" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "Тип параметра ЧБ" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "Режим запиÑу Ñлоту 2" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "Бітовий режим Raw" #: camlibs/ptp2/ptp.c:4614 msgid "Flourescent Type" msgstr "Тип флуореÑцентного оÑвітленнÑ" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð¸ кольорів" #: camlibs/ptp2/ptp.c:4618 msgid "Tune Preset 0" msgstr "Ðабір ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ 0" #: camlibs/ptp2/ptp.c:4620 msgid "Tune Preset 1" msgstr "Ðабір ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ 1" #: camlibs/ptp2/ptp.c:4622 msgid "Tune Preset 2" msgstr "Ðабір ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ 2" #: camlibs/ptp2/ptp.c:4624 msgid "Tune Preset 3" msgstr "Ðабір ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ 3" #: camlibs/ptp2/ptp.c:4626 msgid "Tune Preset 4" msgstr "Ðабір ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ 4" #: camlibs/ptp2/ptp.c:4630 msgid "Autofocus Mode" msgstr "Режим автофокуÑуваннÑ" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "Допоміжна лампа ÐФ" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "Ðвтоматичні параметри ISO P/A/DVP " #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñітки у видошукачі" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "Ð–Ð¸Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð¼ Ñпалаху" #: camlibs/ptp2/ptp.c:4656 msgid "Auto FP" msgstr "Ðвто FP" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "Показ попереджень" #: camlibs/ptp2/ptp.c:4662 msgid "Battery Cell Kind" msgstr "Стан акумулÑторів" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "Ðвтоматичний верхній рівень ISO" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "ВиÑока неперервна швидкіÑть" #: camlibs/ptp2/ptp.c:4670 msgid "Info Disp Setting" msgstr "Параметр інфодиÑплеÑ" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "Кнопка попереднього переглÑду" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "Кнопка попереднього переглÑду 2" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "Кнопка Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AEAF 2" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "ДиÑплей індикатора" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "ПріоритетніÑть Ñтану акумулÑтора" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "Кадри Ñ– кроки «вилки»" #: camlibs/ptp2/ptp.c:4684 msgid "Live View Mode" msgstr "Режим Live View" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "Режим мотора Live View" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "Стан Live View" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "МаÑштаб Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Live View" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "Умова заборони Live View" #: camlibs/ptp2/ptp.c:4694 msgid "Exposure Display Status" msgstr "Стан показу екÑпонуваннÑ" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "Стан індикатора екÑпонуваннÑ" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "Стан помилки інфодиÑплеÑ" #: camlibs/ptp2/ptp.c:4700 msgid "Exposure Indicate Lightup" msgstr "Лампочка індикатора екÑпонуваннÑ" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ MRepeat Ñпалаху" #: camlibs/ptp2/ptp.c:4708 msgid "Flash MRepeat Count" msgstr "КількіÑть MRepeat Ñпалаху" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "Інтервал MRepeat Ñпалаху" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "Ðктивний Ð·Ð°Ð¿Ð¸Ñ Pic Ctrl" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "Зміна запиÑу Pic Ctrl" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "ISO" #: camlibs/ptp2/ptp.c:4749 msgid "Image Compression" msgstr "СтиÑÐºÐ°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" #: camlibs/ptp2/ptp.c:4758 msgid "Secure Time" msgstr "Безпечний чаÑ" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "Сертифікат приÑтрою" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "Дані щодо відкликаннÑ" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "Партнер Ñинхронізації" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "Зрозуміла назва приÑтрою" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "Рівень звуку" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "Значок приÑтрою" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "Дані щодо ініціатора ÑеанÑу" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "Видимий тип приÑтрою" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "ЧаÑтота відтвореннÑ" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "Об'єкт відтвореннÑ" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "Ð†Ð½Ð´ÐµÐºÑ ÐºÐ¾Ð½Ñ‚ÐµÐ¹Ð½ÐµÑ€Ð° відтвореннÑ" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "Ід. PlaysForSure" #: camlibs/ptp2/ptp.c:4782 msgid "Quality" msgstr "ЯкіÑть" #: camlibs/ptp2/ptp.c:4783 msgid "Release Mode" msgstr "Режим ÑпуÑку" #: camlibs/ptp2/ptp.c:4784 msgid "Focus Areas" msgstr "ОблаÑті фокуÑуваннÑ" #: camlibs/ptp2/ptp.c:4785 msgid "AE Lock" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AE" #: camlibs/ptp2/ptp.c:4797 msgid "Image size" msgstr "Розмір зображеннÑ" #: camlibs/ptp2/ptp.c:4798 msgid "Shutter speed" msgstr "ШвидкіÑть затвора" #: camlibs/ptp2/ptp.c:4799 msgid "Color temperature" msgstr "Кольорова температура" #: camlibs/ptp2/ptp.c:4802 msgid "Expose Index" msgstr "Ð†Ð½Ð´ÐµÐºÑ ÐµÐºÑпозиції" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "AB-фільтр" #: camlibs/ptp2/ptp.c:4807 msgid "Still Image" msgstr "Ðерухоме зображеннÑ" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "%.1f зупинок" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "%.0f mm" #: camlibs/ptp2/ptp.c:4940 msgid "JPEG Norm" msgstr "Звичайний JPEG" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "RAW + оÑновний JPEG" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Лампа накалюваннÑ" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "Ðвтоматично режим макро (зблизька)" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "Середнє відноÑно центру" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "Центральна точка" #: camlibs/ptp2/ptp.c:4966 msgid "Automatic flash" msgstr "Ðвтоматичний Ñпалах" #: camlibs/ptp2/ptp.c:4969 msgid "Automatic Red-eye Reduction" msgstr "ÐÐ²Ñ‚Ð¾Ð·Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ñті очей" #: camlibs/ptp2/ptp.c:4970 msgid "Red-eye fill flash" msgstr "Спалах з запобіганнÑм червоним очам" #: camlibs/ptp2/ptp.c:4988 msgid "Power Wind" msgstr "Потужний вітер" #: camlibs/ptp2/ptp.c:4994 msgid "Timer + Remote" msgstr "Таймер + віддалене керуваннÑ" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "Лише Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФ" #: camlibs/ptp2/ptp.c:5056 msgid "Flash Lock" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñпалаху" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "Повернути точку фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° центр" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "ПідÑвічувати активну точку фокуÑуваннÑ" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "Ðе викориÑтовуєтьÑÑ" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "SDRam" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "USB 1.1" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "USB 2.0" #: camlibs/ptp2/ptp.c:5169 msgid "LCD Backlight" msgstr "ПідÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ð Ðš-екрана" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "ПідÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ð Ðš-екрана та інфодиÑплей" #: camlibs/ptp2/ptp.c:5228 msgid "1 min" msgstr "1 хвилина" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "5 хвилин" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "10 хвилин" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "15 хвилин" #: camlibs/ptp2/ptp.c:5266 msgid "Dark on light" msgstr "Темне на Ñвітлому" #: camlibs/ptp2/ptp.c:5267 msgid "Light on dark" msgstr "Світле на темному" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "Літій-іонний" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "Ðікелевий гібридний" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "Ðікель-кадмієвий" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "Лужно-марганцевий" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "Рівень Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ 1" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "Критичний Ñтан" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "Рівень Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ 0" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "Економний друк" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "Дуже ÑкіÑний" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "ÐŸÑ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних очей" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "ÐизькошвидкіÑна ÑинхронізаціÑ" #: camlibs/ptp2/ptp.c:5345 msgid "Auto + Red Eye Suppression" msgstr "Ðвто + Ð¿Ñ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних очей" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "Увімкнено + Ð¿Ñ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних очей" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "Ðа відÑтані" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "ВиÑокошвидкіÑний затвор" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "ÐизькошвидкіÑний затвор" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "Ðічне баченнÑ" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "Тони Ñірого" #: camlibs/ptp2/ptp.c:5370 msgid "Pan Focus" msgstr "Панорамне фокуÑуваннÑ" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "Однокадрове зніманнÑ" #: camlibs/ptp2/ptp.c:5375 msgid "Continuous Shooting" msgstr "Ðеперервне зніманнÑ" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "Знімок за таймером" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "Ðеперервне низькошвидкіÑне зніманнÑ" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "Ðеперервне виÑокошвидкіÑне зніманнÑ" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "Згладити" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "Центрально-зважене вимірюваннÑ" #: camlibs/ptp2/ptp.c:5386 msgid "Spot Metering" msgstr "Точкове вимірюваннÑ" #: camlibs/ptp2/ptp.c:5387 msgid "Average Metering" msgstr "Середнє вимірюваннÑ" #: camlibs/ptp2/ptp.c:5388 msgid "Evaluative Metering" msgstr "Оціночне вимірюваннÑ" #: camlibs/ptp2/ptp.c:5389 msgid "Partial Metering" msgstr "ЧаÑткове вимірюваннÑ" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "Центрально-зважене оÑереднене вимінюваннÑ" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "Ð’Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð° оÑнові меж автофокуÑуваннÑ" #: camlibs/ptp2/ptp.c:5392 msgid "Multi-Spot Metering" msgstr "Ð’Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð° мультиплÑмами" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ затвора недоÑтупна" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "Ðизька 2" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 msgid "High 2" msgstr "ВиÑока 2" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "Вища 1" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "Вища 2" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "Стандартні параметри Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð²" #: camlibs/ptp2/ptp.c:5462 msgid "Development Parameters 1" msgstr "Параметри Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð² 1" #: camlibs/ptp2/ptp.c:5463 msgid "Development Parameters 2" msgstr "Параметри Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð² 2" #: camlibs/ptp2/ptp.c:5464 msgid "Development Parameters 3" msgstr "Параметри Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð² 3" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "MlSpotPosCenter" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "MlSpotPosAfLink" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "Media Card" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "Media Card Group" #: camlibs/ptp2/ptp.c:5600 msgid "Encounter" msgstr "Encounter" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "Encounter Box" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "M4A" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "Мікропрограма" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "Формат зображень Windows" #: camlibs/ptp2/ptp.c:5605 msgid "Undefined Audio" msgstr "Ðевизначений звуковий" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "Кодек Audible.com" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "СпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Samsung" #: camlibs/ptp2/ptp.c:5612 msgid "Undefined Video" msgstr "Ðевизначений відео" #: camlibs/ptp2/ptp.c:5617 msgid "Undefined Collection" msgstr "Ðевизначена колекціÑ" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "ÐбÑтрактний мультимедійний альбом" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "ÐбÑтрактний альбом зображень" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "ÐбÑтрактний звуковий альбом" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "ÐбÑтрактний відеоальбом" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "ÐбÑтрактний аудіо-відео ÑпиÑок відтвореннÑ" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "ÐбÑтрактна група контактів" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "ÐбÑтрактний тека повідомлень" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "ÐбÑтрактний продукт з главами" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "ÐбÑтрактний звуковий ÑпиÑок відтвореннÑ" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "ÐбÑтрактний ÑпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "ÐбÑтрактна медіатранÑлÑціÑ" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "СпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ WPL" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "СпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ M3U" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "СпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ MPL" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "СпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ASX" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "СпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ PLS" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "Ðевизначений документ" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "ÐбÑтрактний документ" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "Документ XML" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "Документ Microsoft Word" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "Компільований до MHT документ HTML" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "Електронні таблиці Microsoft Excel (.xls)" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "Microsoft Powerpoint (.ppt)" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "Ðевизначене повідомленнÑ" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "ÐбÑтрактне повідомленнÑ" #: camlibs/ptp2/ptp.c:5643 msgid "Undefined Contact" msgstr "Ðевизначений контакт" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "ÐбÑтрактний контакт" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "vCard2" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "vCard3" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "Ðевизначений пункт календарÑ" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "ÐбÑтрактний пункт календарÑ" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "vCalendar1" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "vCalendar2" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "Ðевизначений виконуваний файл Windows" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "МедіатранÑлÑціÑ" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "Розділ" #: camlibs/ptp2/ptp.c:5692 #, c-format msgid "Unknown(%04x)" msgstr "Ðевідомо(%04x)" #: camlibs/ptp2/ptp.c:5702 #, fuzzy msgid "Get device info" msgstr "Отримати інформацію про приÑтрій" #: camlibs/ptp2/ptp.c:5703 msgid "Open session" msgstr "Відкрити ÑеанÑ" #: camlibs/ptp2/ptp.c:5704 msgid "Close session" msgstr "Закрити ÑеанÑ" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "Отримати ID ноÑÑ–Ñ" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "Отримати інформацію про ноÑій" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "Отримати кількіÑть об'єктів" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "Отримати деÑкриптори об'єктів'" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "Отримати інформацію про об'єкт" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "Отримати об'єкт" #: camlibs/ptp2/ptp.c:5711 msgid "Get thumbnail" msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¼Ñ–Ð½Ñ–Ð°Ñ‚ÑŽÑ€Ñƒ" #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "Видалити об'єкт" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "ÐадіÑлати інформацію про об'єкт" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "ÐадіÑлати об'єкт" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "Ініціалізувати захопленнÑ" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "Форматувати ноÑій" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "Скинути приÑтрій" #: camlibs/ptp2/ptp.c:5718 msgid "Self test device" msgstr "СамотеÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ñтрою" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "Ð’Ñтановити захиÑÑ‚ об'єкта" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "Вимкнути Ð¶Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ñтрою" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "Отримати Ð¾Ð¿Ð¸Ñ Ð²Ð»Ð°ÑтивоÑті приÑтрою" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "Отримати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті приÑтрою" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "Ð’Ñтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті приÑтрою" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "Скинути Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті приÑтрою" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "Припинити відкрите захопленнÑ" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "ПереміÑтити об'єкт" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "Копіювати об'єкт'" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "Отримати чаÑтковий об'єкт" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "Ініціювати відкрите захопленнÑ" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 #, fuzzy msgid "Get Vendor Extension Maps" msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°" #: camlibs/ptp2/ptp.c:5735 #, fuzzy msgid "Get Vendor Device Info" msgstr "Отримати інформацію про приÑтрій" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 #, fuzzy msgid "Get Filesystem Manifest" msgstr "Швидка файлова ÑиÑтема" #: camlibs/ptp2/ptp.c:5738 #, fuzzy msgid "Get Stream Info" msgstr "Отримати інформацію про ноÑій" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "Отримати підтримувані влаÑтивоÑті об'єкта'" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "Отримати Ð¾Ð¿Ð¸Ñ Ð²Ð»Ð°ÑтивоÑті об'єкта" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "Отримати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті об'єкта" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "Ð’Ñтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті об'єкта" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "Отримати ÑпиÑок влаÑтивоÑтей об'єкта" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "Ð’Ñтановити ÑпиÑок влаÑтивоÑтей об'єкта" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "Отримати незалежний Ð¾Ð¿Ð¸Ñ Ð²Ð»Ð°ÑтивоÑті" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "ÐадіÑлати ÑпиÑок влаÑтивоÑтей об'єкта" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "Отримати поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° об'єкт" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "Ð’Ñтановити поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° об'єкт" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "Оновити мікропрограму приÑтрою" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "ПропуÑтити наÑтупну позицію у ÑпиÑку відтвореннÑ" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "Отримати безпечний виклик чаÑу" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "Отримати безпечну відповідь чаÑу" #: camlibs/ptp2/ptp.c:5759 msgid "Set license response" msgstr "Ð’Ñтановити відповідь щодо ліцензії" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "Отримати Ñинхронний ÑпиÑок" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "ÐадіÑлати запит лічильнику викликів" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "Отримати виклик лічильника" #: camlibs/ptp2/ptp.c:5763 msgid "Get meter response" msgstr "Отримати відповідь лічильника" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "ОчиÑтити ноÑій даних" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "Отримати ÑÑ‚Ð°Ñ‚ÑƒÑ Ð»Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ—" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "ÐадіÑлати команду WMDRM-PD" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "ÐадіÑлати запит WMDRM-PD" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "ПовідомлÑти про додані Ñ– вилучені запиÑи" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "ПовідомлÑти про Ñтворені запиÑи" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "Отримати типи придатних до Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ ÑпиÑків відтвореннÑ" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "ÐадіÑлати запит щодо WMDRM-PD" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "Отримати відповідь WMDRM-PD" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "Увімкнути довірені дії з файлами" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "Вимкнути довірені дії з файлами" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "Завершити довірений ÑÐµÐ°Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ з програмою" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "Відрити ÑеанÑ" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "Закрити ÑеанÑ" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "Отримати наÑтупний блок даних" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "Ð’Ñтановити поточну мітку чаÑу" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "ÐадіÑлати запит щодо реєÑтрації" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "Отримати відповідь щодо реєÑтрації" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "Отримувати виклик наближеннÑ" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "ÐадіÑлати відповідь щодо близькоÑті" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "ÐадіÑлати запити щодо Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ WMDRM-ND" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "Отримати відповідь щодо Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ WMDRM-ND" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "Обробити об’єкт WFC" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "Отримати чаÑтковий об’єкт (з відÑтупом у 64 бітів)" #: camlibs/ptp2/ptp.c:5800 msgid "Send Partial Object" msgstr "ÐадіÑлати чаÑтковий об’єкт" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "Обрізати об’єкт" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "Початок Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "Кінець Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "Ðевідомий %d" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "КопіюєтьÑÑ Ð²Ñ–Ð´ÐµÐ¾..." #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "КопіюєтьÑÑ Ð·Ð²ÑƒÐº..." #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "КопіюютьÑÑ Ð´Ð°Ð½Ñ– EXIF..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "Ðемає даних EXIF Ð´Ð»Ñ %s" #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ файл." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ каталог." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "Ðе вдалоÑÑ Ñтворити каталог." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "ВерÑÑ–Ñ: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "Стан RTC: %d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "Ð§Ð°Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°: %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "ID фотоапарата: %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "Ðе вÑтавлена картка SD.\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "ID картки SD: %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "Фотознімків на фотоапараті: %d\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "Пам'Ñть SD: вÑього %d Мб , вільно %d Мб.\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð°Ð¼'Ñть SD: вÑього %d Мб , вільно %d Мб.\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "ДоÑÐ»Ñ–Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ проведено з викориÑтаннÑм USB Snoopy,\n" "декомпілÑції мікропрограми та інтуїції.\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Драйвер Ricoh / Philips\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "на оÑнові драйвера от Bob Paauwe\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "невідомо (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Модель: %s\n" "Пам'Ñть: %d байт з %d доÑтупних" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2.0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1.5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1.0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0.5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0.0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0.5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1.0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1.5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2.0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Ðа вулиці" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "МакÑимальний" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Мінімальний" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "ТекÑÑ‚" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Звук" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° звук" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "ТекÑÑ‚ та звук" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "ÐалаштовуваннÑ" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Загальне" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "ÐвторÑьке право (макÑ. 20 Ñимволів)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "ЗображеннÑ" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Рівень білого" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Режим запиÑу" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "СтиÑненнÑ" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "ШвидкіÑть %i не підтримуєтьÑÑ!" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "ОчікувалоÑÑŒ %i, отримано %i. Повідомте про цю помилку за адреÑою %s." #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "" "ОчікувалоÑÑŒ %i байтів, отримано %i. Повідомте про цю помилку за адреÑою %s." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "ОчікувалоÑÑŒ 0x%x, отримано 0x%x. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "Ðеправильні Ñимволи (0x%x, 0x%x). Зв'ÑжітьÑÑ Ð· %s." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "" "Фотоапарат зайнÑтий. Якщо Ñ†Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° виникає поÑтійно, зв'ÑжітьÑÑ Ð· %s." #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "Тайм-аут навіть піÑÐ»Ñ 2 Ñпроб. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "Помилка зв'Ñзку навіть піÑÐ»Ñ 2 Ñпроб. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "Фотоапарат у неправильному режимі. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "Фотоапарат не приймає параметри. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "Ðевідома помилка. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "" "Довжина назви файла не повинна перевищувати 12 Ñимволів ('%s' має %i " "Ñимволів)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "Драйвер Samsung digimax 800k напиÑав James McKenzie " "Ð´Ð»Ñ gphoto. Lutz Mueller Ð¿ÐµÑ€ÐµÐ½Ñ–Ñ Ð¹Ð¾Ð³Ð¾ у " "gphoto2. Marcus Meissner виправлÑв помилки та вноÑив " "вдоÑконаленнÑ." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Роздільна здатніÑть та розмір" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Дата й Ñ‡Ð°Ñ (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 msgid "Aperture Settings" msgstr "Параметри діафрагми" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Режим кольору" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Параметри Ñпалаху" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "Ð§Ð°Ñ Ð´Ð¾ переходу у ÑплÑчий режим (з'єднаний з комп’ютером) (Ñекунд)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Ð§Ð°Ñ Ð´Ð¾ переходу фотоапарата у ÑплÑчий режим (Ñекунд)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Режим об'єктива" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "КорейÑька" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "ÐнглійÑька" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "Французька" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "Ðімецька" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "ІталійÑька" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "ЯпонÑька" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "ІÑпанÑька" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "ПортугальÑька" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Параметри зображеннÑ" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "Декілька зауважень про фотоапарати Epson:\n" "- Певними параметрами неможливо керувати віддалено:\n" " * наближеннÑ\n" " * фокуÑ\n" " * параметри баланÑу білого\n" "- ДекомпілÑÑ†Ñ–Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² конфігурації виконувалаÑÑŒ з\n" " PhotoPC 3000z, Ñкщо ваш апарат працює інакше, напишіть\n" " про це у ÑпиÑок розÑилки Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð² gphoto (англійÑькою)\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "ВідÑÑƒÑ‚Ð½Ñ ÐºÐ°Ñ€Ñ‚ÐºÐ° пам'Ñті" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані про ємніÑть акумулÑтора" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "" "ЗарÑд акумулÑтора фотоапарата надто низький (%d%%). Операцію ÑкаÑовано." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ інформацію про доÑтупну пам'Ñть" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "Фотоапарат 3 рази відмовлÑєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ з'єднаннÑ." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "Отримано перший байт (0x%x), Ñкий Ñ” неправильним." #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "Тайм-аут при передачі пакету, навіть піÑÐ»Ñ %i Ñпроб. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‚Ð¸ пакет, навіть піÑÐ»Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñ… Ñпроб." #: camlibs/sierra/library.c:789 #, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "Пакет відхилено фотоапаратом. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‚Ð¸ пакет (код помилки %i). Зв'ÑжітьÑÑ Ð· %s." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "Тайм-аут передачі навіть піÑÐ»Ñ 2 Ñпроб. " #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "Отримано неочікуваний результат 0x%x. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "Отримано неочікувану відповідь (%i). Зв'ÑжітьÑÑ Ð· %s." #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ регіÑтр %i. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "Ðадто багато Ñпроб закінчилиÑÑŒ помилкою." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Передача даних..." #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "рекурÑивні виклики не підтримуютьÑÑ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð¾Ð¼ фотоапарата! Зв'ÑжітьÑÑ Ð· %s." #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñ€Ñдок регіÑтру %i. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "ОчікувалоÑÑŒ 32 байти, отримано %i. Зв'ÑжітьÑÑ Ð· %s." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "ШвидкіÑть затвора у мікроÑекундах (0 автоматично)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "ШвидкіÑть затвора (у Ñекундах)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "Ч/Б" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Проти червоних очей" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "Уповільнена ÑинхронізаціÑ" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "КонтраÑÑ‚+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "КонтраÑÑ‚-" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "ЯÑкравіÑть+" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "ЯÑкравіÑть-" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "БлиманнÑ" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "Світлодіод" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "ÐеÑкінченіÑть" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "Попередній переглÑд мініатюр" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "ÐаÑтупний" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "Попередній" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Режим роботи" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "ЯÑкравіÑть РК-екрана" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "Ðвтоматичне Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð Ðš (Ñекунд)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "Центрально-зважений" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "МатрицÑ" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Точковий автофокуÑ" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Замір екÑпозиції" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "ÐÐ°Ð±Ð»Ð¸Ð¶ÐµÐ½Ð½Ñ (в міліметрах)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "немає" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "ФікÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "Риб'Ñче око" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Ширококутовий" #: camlibs/sierra/nikon-desc.c:558 msgid "Misc exposure/lens settings" msgstr "Інші параметри екÑпозиції/об'єктива" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Запам'ÑÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ витримки" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " ÐÐ°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° (вподобаннÑ):\n" "\n" " Оптичне Ð½Ð°Ð±Ð»Ð¸Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÑŽÑ”\n" " неправильно.\n" "\n" " Ðе вÑÑ– параметри можна\n" " Ñк Ñлід читати та змінювати.\n" " Ðаприклад, це ÑтоÑуєтьÑÑ Ñ‚Ð¾Ð½ÐºÐ¾Ð³Ð¾ налаштовуваннÑ\n" " баланÑу білого та мови.\n" "\n" " Переведіть апарат у режим 'M', Ñкщо хочете\n" " задати швидкіÑть затвора.\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995:\n" " Ðабір параметрів цього апарату\n" " неповний, напишіть у ÑпиÑок розÑилки\n" " розробників gphoto, Ñкщо бажаєте внеÑти \n" " Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ñƒ цей драйвер.\n" "\n" " ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑ–Ð² має працювати правильно.\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "Біла дошка" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "Чорна дошка" #: camlibs/sierra/olympus-desc.c:489 msgid "Color or Function Mode" msgstr "Колір або режим роботи" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 msgid "Slow" msgstr "Повільно" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "Ð—Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¸ червоних очей" #: camlibs/sierra/olympus-desc.c:596 msgid "Fluorescent-1-home-6700K" msgstr "ФлуореÑцентна-1-дім-6700K" #: camlibs/sierra/olympus-desc.c:597 msgid "Fluorescent-2-desk-5000K" msgstr "ФлуореÑцентна-2-Ñтільн-5000K" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "ФлуореÑцентна-3-офіÑ-4200K" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "ФлуореÑцентна-1-дім-6700K" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "ФлуореÑцентна-2-Ñтільн-5000K" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "ФлуореÑцентна-3-офіÑ-4200K" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "Сутінки" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Монітор" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "Режим РК-екрана" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "ESP" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Цифрове збільшеннÑ" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñ„Ð¾ÐºÑƒÑуваннÑ" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Формат чаÑу" #: camlibs/sierra/olympus-desc.c:1147 msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Декілька зауважень щодо фотоапаратів Olympus:\n" "(1) ÐÐ°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°:\n" " Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0 означає типові параметри (авто).\n" "(2) Olympus C-3040Z (можливо також C-2040Z та інші)\n" " мають режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· комп'ютера через через USB.\n" " Щоб його викориÑтовувати, фотоапарат треба перемикнути\n" " у режим 'USB PC control mode'. Щоб потрапити до меню\n" " вибору режиму, увімкніть апарат, відкрийте кришку\n" " відÑіку картки пам'Ñті, натиÑніть Ñ– утримуйте\n" " кнопки меню та РК екрана доки не з'ÑвитьÑÑ\n" " меню керуваннÑ. Виберіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ON.\n" "(3) Якщо ви зміните Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÑƒÐ½ÐºÑ‚Ñƒ 'LCD mode' на 'Monitor'\n" " або 'Normal', не забудьте повернути його назад у 'Off'\n" " перед вимиканнÑм. У іншому випадку ви не зможете\n" " викориÑтовувати кнопки фотоапарата. Якщо це ÑтанетьÑÑ,\n" " треба знову з’єднати фотоапарат з комп'ютером\n" " Ñ– перемикнути параметр LCD у 'Off'." #: camlibs/sierra/olympus-desc.c:1166 msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ має режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· USB.\n" " Щоб перемкнутиÑÑ Ñƒ режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою USB\n" " з комп’ютера, увімкніть фотоапарат, відкрийте кришку\n" " відÑіку карти пам'Ñті, потім натиÑніть Ñ– утримуйте\n" " кнопки «OK» Ñ– «quickview», доки не з'ÑвитьÑÑ\n" " меню керуваннÑ. Перемкніть фотоапарат у режим\n" " ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ (control).\n" "(2) Якщо ви зміните Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÑƒÐ½ÐºÑ‚Ñƒ «Режим РК-екрана» на\n" " «Монітор» або «Звичайний», не забудьте перемкнути його\n" " на «Вимкнути» до Ð²Ñ–Ð´â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°, інакше ви не\n" " зможете викориÑтовувати кнопки фотоапарата. Якщо таке\n" " вÑе ж ÑтанетьÑÑ, треба знову з’єднати апарат з\n" " комп'ютером Ñ– перемкнути параметр у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«Ð’Ð¸Ð¼ÐºÐ½ÑƒÑ‚Ð¸Â»." #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Стандартний драйвер sierra:\n" "\n" " Цей драйвер sierra викориÑтовуєтьÑÑ Ñƒ типовому випадку.\n" " Він має підтримувати ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·'єднаннÑ\n" " та переглÑд файлів у пам'Ñті фотоапарата.\n" "\n" " Параметри фотоапарата (або вподобаннÑ)\n" " оÑновані на Olympus 3040 та швидше за вÑе\n" " Ñ” неповними. Якщо ви можете підтвердити, що\n" " ÑпиÑок параметрів вашого апарату повний чи\n" " зможете додати Ñвій код Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸\n" " уÑÑ–Ñ… наÑвних параметрів, напишіть у ÑпиÑок\n" " розÑилки Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð².\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "Файл, Ñкий буде відвантажуватиÑÑŒ має нульову довжину" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "ÐедоÑтатньо пам'Ñті на карті пам'Ñті" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ назву теки, що міÑтить зображеннÑ" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "Ð’Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÑ”Ñ‚ÑŒÑÑ Ð»Ð¸ÑˆÐµ у теку '%s'" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Ðайкраще" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (невідомо)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "ШвидкіÑть затвора (мікроÑекунд, 0 автоматично)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Чорно/білий" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "Біла дошка" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Чорна дошка" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "ЯÑкравіÑть/контраÑÑ‚" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "ЯÑкравіÑть+" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "ЯÑкравіÑть-" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Денне Ñвітло" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "ÐеÑкінченіÑть/Риб'Ñче око" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "Точковий режим виміру" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1.6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2.5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "Ðвтоматичне Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ (комп'ютер) (у Ñекундах)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "Скільки чаÑу мине до автоматичного Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°, коли він з'єднаний " "з комп'ютером?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "ÐÐ²Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ (автономно) (у Ñекундах)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "Скільки чаÑу мине до автоматичного Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°, коли він не " "з'єднаний з комп'ютером?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "ÐÐ²Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ (у Ñекундах)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Параметри Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑ–Ð²" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 msgid "standard" msgstr "Ñтандартний" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "ВиÑокої ÑкоÑті" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "колір" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "чорно-білий" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" "ЗауваженнÑ: немає картки пам'Ñті, деÑкі Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ бути некоректними\n" #: camlibs/sierra/sierra.c:1948 #, c-format msgid "Camera Model: %s\n" msgstr "Модель фотоапарата: %s\n" #: camlibs/sierra/sierra.c:1957 #, c-format msgid "Serial Number: %s\n" msgstr "Серійний номер: %s\n" #: camlibs/sierra/sierra.c:1960 #, c-format msgid "Software Rev.: %s\n" msgstr "ВерÑÑ–Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, c-format msgid "Frames Taken: %i\n" msgstr "ЗнÑто кадрів: %i\n" #: camlibs/sierra/sierra.c:1971 #, c-format msgid "Frames Left: %i\n" msgstr "ЛишилоÑÑŒ кадрів: %i\n" #: camlibs/sierra/sierra.c:1973 #, c-format msgid "Battery Life: %i\n" msgstr "Робота від акумулÑтора: %i\n" #: camlibs/sierra/sierra.c:1975 #, c-format msgid "Memory Left: %i bytes\n" msgstr "ЗалишилоÑÑŒ пам'Ñті: %i байтів\n" #: camlibs/sierra/sierra.c:1980 #, c-format msgid "Date: %s" msgstr "Дата: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "ПоÑібник кориÑтувача фотоапарата недоÑтупний.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "Декілька зауважень відноÑно фотоапарата Epson:\n" "- Окремими параметрами неможливо керувати віддалено:\n" " * наближеннÑ\n" " * фокуÑ\n" " * параметри баланÑу білого\n" "- ДекомпілÑÑ†Ñ–Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² конфігурації виконувалаÑÑŒ на\n" " PhotoPC 3000z. Якщо ваш апарат працює інакше, напишіть,\n" " за адреÑою %s (англійÑькою)\n" #: camlibs/sierra/sierra.c:2060 msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Декілька зауважень щодо фотоапаратів Olympus (та інших?):\n" "(1) ÐÐ°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°:\n" " Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0 означає типові параметри (авто).\n" "(2) Olympus C-3040Z (можливо також C-2040Z та інші)\n" " мають режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· комп'ютера через через USB.\n" " Щоб його викориÑтовувати, фотоапарат треба перемикнути\n" " у режим 'USB PC control mode'. Щоб потрапити до меню\n" " вибору режиму, увімкніть апарат, відкрийте кришку\n" " відÑіку картки пам'Ñті, натиÑніть Ñ– утримуйте\n" " кнопки меню та РК екрана доки не з'ÑвитьÑÑ\n" " меню керуваннÑ. Виберіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ON.\n" "(3) Якщо ви зміните Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÑƒÐ½ÐºÑ‚Ñƒ 'LCD mode' на 'Monitor'\n" " або 'Normal', не забудьте повернути його назад у 'Off'\n" " перед вимиканнÑм. У іншому випадку ви не зможете\n" " викориÑтовувати кнопки фотоапарата. Якщо це ÑтанетьÑÑ,\n" " треба знову з’єднати фотоапарат з комп'ютером\n" " Ñ– перемикнути параметр LCD у 'Off'." #: camlibs/sierra/sierra.c:2087 msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "Бібліотека sierra SPARClite\n" "Scott Fritzinger \n" "Підтримка цифрових фотоапаратів на базі sierra,\n" "включно з Olympus, Nikon, Epson та іншими.\n" "\n" "Велика подÑка Data Engines (www.dataengines.com)\n" "за наданий Olympus C-3030Z Ð´Ð»Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—\n" "підтримки USB." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (невідомо)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Драйвер Sipix StyleCam Blink\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Ðе вдалоÑÑ Ð·Ð°ÑтоÑувати параметри USB" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "Драйвер доÑтупу до веб-камери SiPix Web2." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket\n" "Lee Benfield \n" "Драйвер доÑтупу до апарату Smal Ultrapocket та його OEM-варіантам (slimshot)" #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Фотоапарат Sonix.\n" "МіÑтить %i знімок. \n" msgstr[1] "" "Фотоапарат Sonix.\n" "МіÑтить %i знімки. \n" msgstr[2] "" "Фотоапарат Sonix.\n" "МіÑтить %i знімків. \n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" "У драйвері передбачено підтримку деÑких фотоапаратів з мікроÑхемою Sonix " "sn9c2028.\n" "ПідтримуютьÑÑ Ñ‚Ð°ÐºÑ– можливоÑті:\n" " - мініатюри Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ інтерфейÑу\n" " - повні Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ форматі PPM\n" " - Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… зображень\n" " - Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¾Ñтаннього Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (працює не на уÑÑ–Ñ… фотоапаратах)\n" " - Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ фотоапарат (\t\tditto\t\t)\n" "Відеоролики, Ñкщо вони Ñ”, можна отримати у форматі поÑлідовноÑті\n" "фотографій чи AVI-файлів, залежно від моделі.\n" "Мініатюри Ð´Ð»Ñ AVI-файлів ÑтворюютьÑÑ Ð½Ð° оÑнові першого кадру ролика.\n" "Окреме Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ можна вилучати, Ñкщо воно не Ñ” оÑтаннім.\n" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° Sonix\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "Підтримка фотоапарата Sony DSC-F1\n" "M. Adam Kendall \n" "Ðа оÑнові конÑольної верÑÑ–Ñ— chotplay от\n" "Кен-Ичи ХайÑши\n" "Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ñƒ Gphoto2 виконав Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Бібліотека gPhoto Ð´Ð»Ñ Sony DSC-F55/505\n" "Підтримує Sony MSAC-SR1 та карти Memory Stick от DCR-PC100\n" "Початково напиÑана Mark Davies \n" "ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ñ–Ñ Ð´Ð¾ gPhoto2 - Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %8s\n" "Зображень: %i\n" "Ð’Ñього пам'Ñті: %iкб\n" "Вільної пам'Ñті: %iкб\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Драйвер Soundvision\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "ППЗУ:\n" " Файлів: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM:\n" " Файлів: %d\n" " Зображень: %4d\n" " ВідеозапиÑів: %4d\n" "ЗайнÑто: %8d\n" "Вільно: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "бібліотека spca50x v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" "Ваш USB фотоапарат має м/Ñ Ð½Ð°Ð±Ñ–Ñ€ S&Q.\n" "Загальна кількіÑть зроблених знімків - %i\n" "ДеÑкі з них можуть бути відеокліпами,\n" "що ÑкладаютьÑÑ ÐºÑ–Ð»ÑŒÐºÐ¾Ñ… кадрів.\n" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" "Ð”Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² Ñ Ð¼Ñ–ÐºÑ€Ð¾Ñхемою S&Q Technologies.\n" "Працює з gtkam. Знімки зберігаютьÑÑ Ñƒ форматі PPM.\n" "\n" "Ð’Ñе відомі апарати S&Q мають два режими.\n" "Які вони, залежить від конкретної моделі. ДеÑкі з цих\n" "фотоапаратів дозволÑють видалÑти будь-Ñкі знімки, але\n" "більшіÑть - ні. Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… у пам'Ñть не підтримуєтьÑÑ.\n" "Режим ÑтиÑненнÑ, Ñкий Ñ” у багатьох фотоапаратів\n" "S&Q чаÑтково підтримуєтьÑÑ.\n" "Якщо фотоапарат дозволÑÑ”, відеозапиÑи доÑтупні у\n" "виглÑді підкаталогу. Gtkam копіює Ñ—Ñ… окремо. При\n" "наÑвноÑті відеозапиÑів перед назвою апарату з'ÑвлÑєтьÑÑ\n" "маленький трикутник. Якщо у ÑпиÑку немає тек, клацніть на\n" "трикутникові, щоб відобразити Ñ—Ñ…. Клацніть на теці, щоб\n" "увійти у неї та копіювати кадри. Кадри витÑгуютьÑÑ\n" "Ñк окремі зображеннÑ, назви Ñких говорÑть, до Ñкої\n" "відеопоÑлідовноÑті вони відноÑÑтьÑÑ. Таким чином можна \n" "вибрати, чи зберігати кадри у окремих каталогах.\n" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "Базовий драйвер sq905\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "Вашу картинну рамку USB заÑновано на наборі мікроÑхем ST2205\n" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "ЗаÑновані на ST2205 картинні рамки можуть працювати у широкому\n" "Ñпектрі роздільних здатноÑтей. За допомогою драйвера gphoto длÑ\n" "таких приÑтроїв ви зможете звантажувати, вивантажувати Ñ– вилучати\n" "файли з картинної рамки." #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "Драйвер картинних рамок ST2205 USB\n" "Hans de Goede \n" "За допомогою цього драйвера можна отримувати, вивантажувати та\n" "вилучати файли з картинної рамки." #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "ОрієнтаціÑ" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "Драйвер Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² з процеÑором STV0674.\n" "Ð”Ð»Ñ Ð´Ð¾ÑÐ»Ñ–Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ викориÑтовувавÑÑ SnoopyPro\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "Ðеправильна екÑÐ¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ (можливо бракує оÑвітленнÑ)" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ фотоапарат типу STV0680:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "ВерÑÑ–Ñ ASIC: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "ID ÑенÑора: %d.%d\n" #: camlibs/stv0680/library.c:562 #, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "" "Фотоапарат налаштовано на пульÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° Ñвітла з чаÑтотою %d Гц.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Пам'Ñті у фотоапараті: %d Мбіт.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "Фотоапарат не підтримує мініатюри.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "Фотоапарат підтримує відео.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "Знімки фотоапарата монохромні.\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "Фотоапарат має пам'Ñть.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "Фотоапарат підтримує відеоформати:" #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "ID виробника: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "ID продукту: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "КількіÑть зображень: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "МакÑимальна кількіÑть зображень: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Ширина зображеннÑ: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "ВиÑота зображеннÑ: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "Розмір зображеннÑ: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Ширина мініатюри: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "ВиÑота мініатюри: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Розмір мініатюри: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Драйвер Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² з процеÑором STV0680.\n" "ДоÑÐ»Ñ–Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ виконано за допомогою CommLite Beta 5\n" "Carsten Weinholz \n" "Розширено Ð´Ð»Ñ Aiptek PenCam та інших USB фотоапаратів STM з двома режимами." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про %i файлів" #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "Бібліотека Ð´Ð»Ñ (Traveler) SX330z (та інших фотоапаратів Aldi).\n" "Також мають працювати апарати таких виробників, Ñк Jenoptik, Skanhex, " "Maginon.\n" "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилки та відгуки надÑилайте за адреÑою:\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z лише Ð´Ð»Ñ USB" #: camlibs/topfield/puppy.c:553 msgid "Driver Settings" msgstr "Параметри драйвера" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "Турбо-режим" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Бібліотека Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ– Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² на Topfield PVR.\n" "Портовано з puppy, (c) Peter Urbanec \n" #: camlibs/topfield/puppy.c:659 #, c-format msgid "Downloading %s..." msgstr "Ð—Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ %s…" #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "Драйвер Toshiba pdr-m11.\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° пошуку camlibs. (назви шлÑхів надто довгі?)" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "ЗавантажуютьÑÑ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð¸ фотоапарата з '%s'..." #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "Помилка у бібліотеці вводу-виводу ('%s'): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Фотоапарат не виÑвлено" #: libgphoto2/gphoto2-camera.c:750 #, c-format msgid "Could not detect any camera at port %s" msgstr "Ðе вдалоÑÑ Ð²Ð¸Ñвити фотоапаратів на порту %s" #: libgphoto2/gphoto2-camera.c:774 msgid "You have to set the port prior to initialization of the camera." msgstr "Перед ініціалізацією фотоапарата Ñлід вÑтановити порт." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ драйвер фотоапарата '%s' (%s)." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "У драйвері фотоапарата '%s' відÑÑƒÑ‚Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ 'camera_init'." #: libgphoto2/gphoto2-camera.c:864 msgid "This camera does not provide any configuration options." msgstr "Цей фотоапарат не надає можливоÑтей налаштовувати хоч щоÑÑŒ." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "Фотоапарат не підтримує вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð²." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Фотоапарат не підтримує зведеннÑ." #: libgphoto2/gphoto2-camera.c:960 msgid "This camera does not provide a manual." msgstr "Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ фотоапарата не передбачено підручника." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "Фотоапарат не надає інформацію про драйвер." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Фотоапарат не підтримує захопленнÑ." #: libgphoto2/gphoto2-camera.c:1056 msgid "This camera can not trigger capture." msgstr "Цей фотоапарат не може започатковувати захопленнÑ." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Фотоапарат не підтримує попереднє захопленнÑ." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "ШлÑÑ… \"%s\" не Ñ” абÑолютним." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "Ви намагаєтеÑÑŒ видалити '%s' з теки '%s', але файлова ÑиÑтема не підтримує " "Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²." #: libgphoto2/gphoto2-filesys.c:1259 #, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "У теці, Ñку ви намагаєтеÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸, %s/%s, міÑÑ‚ÑтьÑÑ Ð¿Ñ–Ð´Ñ‚ÐµÐºÐ¸." #: libgphoto2/gphoto2-filesys.c:1264 #, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "" "У теці, Ñку ви намагаєтеÑÑŒ вилучити, «%s/%s», ще зберігаютьÑÑ ÑкіÑÑŒ файли." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Файлова ÑиÑтема не підтримує Ð·Ð°ÐºÐ°Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²." #: libgphoto2/gphoto2-filesys.c:1359 #, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "У теці %s зберігаєтьÑÑ Ð»Ð¸ÑˆÐµ %i файлів, вм ж надіÑлали запит щодо файл з " "номером %i." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ файл '%s' у теці '%s'." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ файл '%s'." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "Файлова ÑиÑтема не підтримує Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Ðевідомий тип файла %i." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "Файлова ÑиÑтема не підтримує отриманні відомоÑтей про файл" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "Файлова ÑиÑтема не підтримує вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про файл" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "Ðе можна змінювати атрибути, такі Ñк ширина та виÑота" #: libgphoto2/gphoto2-filesys.c:2455 msgid "The filesystem doesn't support getting storage information" msgstr "" "Файловою ÑиÑтемою не передбачено Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… щодо параметрів Ñховища " "даних" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Дані пошкоджені" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Файл Ñ–Ñнує" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Ðевідома модель" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Каталог не знайдено" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Файл не знайдено" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "Каталог Ñ–Ñнує" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "ВиконуєтьÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð²Ð²Ð¾Ð´Ñƒ-виводу" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "ШлÑÑ… не Ñ” абÑолютним" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Операцію ÑкаÑовано" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "Фотоапарат не може ÑкаÑувати операцію" #: libgphoto2/gphoto2-result.c:57 msgid "OS error in camera communication" msgstr "Помилка ОС при зв'Ñзку з фотоапаратом" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "ÐедоÑтатньо вільного міÑцÑ" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Ðевідома помилка драйвера фотоапарата" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Ðевідома помилка" #~ msgid "Small Fine JPEG (S1 Fine)" #~ msgstr "Маленький JPEG доброї ÑкоÑті (S1 Fine)" #~ msgid "Small Normal JPEG (S1 Normal)" #~ msgstr "Маленький звичайний JPEG (S1 Normal)" #~ msgid "RAW + Small Fine JPEG (S1 Fine)" #~ msgstr "RAW + маленький JPEG доброї ÑкоÑті (S1 Fine)" #~ msgid "mRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "mRAW + маленький JPEG доброї ÑкоÑті (S1 Fine)" #~ msgid "sRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "sRAW + маленький JPEG доброї ÑкоÑті (S1 Fine)" #~ msgid "RAW + Small Normal JPEG (S1 Normal)" #~ msgstr "RAW + маленький звичайний JPEG (S1 Normal)" #~ msgid "mRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "mRAW + маленький звичайний JPEG (S1 Normal)" #~ msgid "sRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "sRAW + маленький звичайний JPEG (S1 Normal)" #~ msgid "Unknown (%04x)" #~ msgstr "Ðевідомий (%04x)" #~ msgid "Disabled" #~ msgstr "Вимкнено" #~ msgid "Canon EOS Trigger Capture failed to release: Perhaps no focus?" #~ msgstr "" #~ "Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: можливо, немає фокуÑуваннÑ?" #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Perhaps no more memory on " #~ "card?" #~ msgstr "" #~ "Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: можливо, на картці не залишилоÑÑ " #~ "вільного міÑцÑ?" #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Unknown error %d, please " #~ "report." #~ msgstr "" #~ "Механізм Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Canon EOS не зміг здійÑнити " #~ "ÑпуÑканнÑ: невідома помилка %d, будь лаÑка, повідомте авторам програми." #~ msgid "Deleting '%s' from folder '%s'..." #~ msgstr "ВидаленнÑ'%s' з теки '%s'..." #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ '%s' з теки '%s'..." #~ msgid "CHDK Reboot" #~ msgstr "ÐŸÐµÑ€ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ CHDK" #~ msgid "PTP Error: bad parameter" #~ msgstr "PTP Error: неправильний параметр" #~ msgid "Canon Capture failed: 0x%04x" #~ msgstr "Помилка Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Canon: 0x%04x" #~ msgid "No event received, error %x." #~ msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ подію не отримано, помилка %x." #~ msgid "Canon EOS Trigger Capture failed: 0x%x (result 0x%x)" #~ msgstr "Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: 0x%x (результат: 0x%x)" #~ msgid "PTP: Undefined Error" #~ msgstr "PTP: невідома помилка" #~ msgid "PTP: OK!" #~ msgstr "PTP: OK!" #~ msgid "PTP: General Error" #~ msgstr "PTP: загальна помилка" #~ msgid "PTP: Session Not Open" #~ msgstr "PTP: ÑÐµÐ°Ð½Ñ Ð½Ðµ відкритий" #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP: неправильний ідентифікатор транзакції" #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP: ÐžÐ¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð½Ðµ підтримуєтьÑÑ" #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP: параметр не підтримуютьÑÑ" #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP: неповна передача" #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP: Ðеправильний ідентифікатор Ñховища" #~ msgid "PTP: Invalid Object Handle" #~ msgstr "PTP: неправильний деÑкриптор об'єкта" #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "PTP: влаÑтивоÑті приÑтрою не підтримуютьÑÑ" #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP: неправильний код формату об'єкта" #~ msgid "PTP: Store Full" #~ msgstr "PTP: Ñховище переповнене" #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP: об'єкт захищений від запиÑу" #~ msgid "PTP: Store Read Only" #~ msgstr "PTP: Ñховище лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ" #~ msgid "PTP: Access Denied" #~ msgstr "PTP: ДоÑтуп заборонено" #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP: відÑÑƒÑ‚Ð½Ñ Ð¼Ñ–Ð½Ñ–Ð°Ñ‚ÑŽÑ€Ð°" #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP: Помилка ÑамотеÑтуваннÑ" #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP: чаÑткове видаленнÑ" #~ msgid "PTP: Store Not Available" #~ msgstr "PTP: Ñховище недоÑтупне" #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "PTP: непідтримувана ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ" #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP: немає правильної інформації про об'єкт" #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP: неправильний формат коду" #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "PTP: невідомий код виробника" #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP: Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð²Ð¶Ðµ перервано" #~ msgid "PTP: Device Busy" #~ msgstr "PTP: приÑтрій зайнÑтий" #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP: неправильний батьківÑький об'єкт" #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP: неправильний формат влаÑтивоÑті приÑтрою" #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP: неправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті приÑтрою" #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP: неправильний параметр" #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP: ÑÐµÐ°Ð½Ñ Ð²Ð¶Ðµ відкритий" #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP: транзакцію ÑкаÑовано" #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "PTP: непідтримувана ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ†Ñ–Ð»Ñ–" #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP: вимагаєтьÑÑ Ð½Ð°Ð·Ð²Ð° файлу EK" #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP: конфлікт назви файлу EK" #~ msgid "PTP: EK Filename Invalid" #~ msgstr "PTP: неправильна назва файлу EK" #~ msgid "PTP: I/O error" #~ msgstr "PTP: помилка вводу-виводу" #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP: помилка: неправильний параметр" #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP: помилка протоколу, очікуютьÑÑ Ð´Ð°Ð½Ñ–" #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP: помилка протоколу, очікуєтьÑÑ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´ÑŒ" #~ msgid "Could not find any driver for '%s'" #~ msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ драйвер Ð´Ð»Ñ '%s'" #~ msgid "No additional information available." #~ msgstr "Додаткова Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð²Ñ–Ð´ÑутнÑ." #~ msgid "Movie Recording" #~ msgstr "Ð—Ð°Ð¿Ð¸Ñ Ð²Ñ–Ð´ÐµÐ¾" #~ msgid "Unknown (some kind of error)" #~ msgstr "Ðевідомо (ÑкаÑÑŒ помилка)" #~ msgid "ISO Auto Time" #~ msgstr "Ðвтотаймер ISO" #~ msgid "%s is a file type for which no thumbnail is provided" #~ msgstr "%s має тип файлу, Ð´Ð»Ñ Ñкого мініатюри не ÑтворюютьÑÑ" #~ msgid "Unavailable" #~ msgstr "Ðемає даних" #~ msgid "" #~ "canon_usb_poll_interrupt_pipe: interrupt read failed after %i tries, " #~ "%6.3f sec \"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_pipe: Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾ піÑÐ»Ñ %i Ñпроб, %6.3f " #~ "Ñекунд \"%s\"" #~ msgid "" #~ "canon_usb_poll_interrupt_multiple: interrupt read failed after %i tries, " #~ "\"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_multiple: Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾ піÑÐ»Ñ %i Ñпроб, \"%s" #~ "\"" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for thumbnail size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: неправильна довжина 0x%04x пакету мініатюри" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for full image size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: неправильна довжина 0x%04x розміру пакету " #~ "зображеннÑ" #, fuzzy #~ msgid "canon_usb_capture_dialogue: secondary image descriptor received" #~ msgstr "" #~ "canon_usb_capture_dialogue: отримано вторинний деÑкриптор зображеннÑ" #~ msgid "canon_usb_capture_dialogue: first interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: перше Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ð·Ð° поÑлідовніÑтю" #~ msgid "canon_usb_capture_dialogue: second interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: друге перериванні Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ð·Ð° поÑлідовніÑтю" #~ msgid "" #~ "canon_usb_capture_dialogue: photographic failure signaled, code = 0x%08x" #~ msgstr "canon_usb_capture_dialogue: помилка фотоапарата, код = 0x%08x" #~ msgid "canon_usb_capture_dialogue: third EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: третє Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ EOS поза " #~ "поÑлідовніÑтю" #~ msgid "" #~ "canon_usb_capture_dialogue: fourth EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: четверте Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ EOS поза поÑлідовніÑтю" #~ msgid "canon_usb_dialogue: payload too big, won't fit into buffer (%i > %i)" #~ msgstr "" #~ "canon_usb_dialogue: об'єкт надто великий, не уміщаєтьÑÑ Ñƒ буфері (%i > %i)" #~ msgid "canon_usb_dialogue: expected 0x%x bytes, but camera reports 0x%x" #~ msgstr "" #~ "canon_usb_dialogue: очікувалоÑÑŒ 0x%x байтів, але фотоапарат повідомив про " #~ "0x%x" #, fuzzy #~ msgid "On 1" #~ msgstr "Увімкнено" #, fuzzy #~ msgid "On 2" #~ msgstr "Увімкнено" libgphoto2-2.5.9/po/en@boldquot.header0000644000175000001440000000247112557123417014574 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # libgphoto2-2.5.9/po/vi.po0000644000175000001440000125231212623156274012127 00000000000000# Vietnamese translation for LibGPhoto2. # Bản dịch tiếng Việt dành cho libgphoto2. # Copyright © 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # Clytie Siddall , 2007-2010. # Trần Ngá»c Quân , 2012-2014, 2015. # msgid "" msgstr "" "Project-Id-Version: libgphoto2 2.5.8\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2015-07-13 07:46+0700\n" "Last-Translator: Trần Ngá»c Quân \n" "Language-Team: Vietnamese \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Language-Team-Website: \n" "X-Generator: Gtranslator 2.91.7\n" "X-Poedit-SourceCharset: UTF-8\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" "Adc65\n" "Benjamin Moos " #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" "Có vẻ là máy tính không sá»­ dụng đĩa CompactFlash.\n" "Không may là phần má»m này hiện tại không há»— trợ nó tại thá»i Ä‘iểm này :-(\n" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "Máy ảnh đã chụp %d ảnh, và Ä‘ang dùng bá»™ nhá»› CompactFlash.\n" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "Nhóm Trình Ä‘iá»u khiển Linux Agfa CL20!\n" " Liên lạc vá»›i chúng tôi bằng thư Ä‘iện tá»­ .\n" "Äến thăm chúng tôi ở . " #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "Máy ảnh USB cá»§a bạn có bá»™ con chíp Aox.\n" "Số ẢNH phân giải thấp = %i\n" "Số ẢNH phân giải cao = %i\n" "Tổng số ẢNH = %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Trình Ä‘iá»u khiển chung Aox\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "Khung ảnh USB cá»§a bạn có má»™t bá»™ chíp Ä‘iá»u khiển AX203\n" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "Khung ảnh dá»±a vào AX203 có sẵn vài bá»™ phân giải khác nhau.\n" "Trình Ä‘iá»u khiển gphoto dành cho thiết bị này cho phép bạn\n" "tải vá», tải lên và xóa bỠảnh từ khung ảnh." #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "Trình Ä‘iá»u khiển khung ảnh USB AX203\n" "Hans de Goede \n" "Trình Ä‘iá»u khiển này cho phép bạn\n" "tải vá», tải lên và xóa bỠảnh từ khung ảnh." #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 msgid "Picture Frame Configuration" msgstr "Cấu hình khung ảnh" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "Äồng bá»™ hóa ngày giá» khung vá»›i máy tính" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "Số lượng ảnh: %i\n" "Phiên bản Firmware: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Thiết kế đối chiếu dữ liệu ảnh:\n" "Jeff Laing \n" "\n" "Thá»±c hiện dùng các tài liệu trên Web.\n" "Vision cho phép." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "Không thể tạo thư mục %s." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "Không thể gỡ bá» thư mục %s." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "lá»—i khóa các khóa." #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*KHÔNG HIỂU*" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image: tiến trình canon_usb_list_all_dirs() (liêt kê má»i " "thư mục) đầu tiên đã thất bại vá»›i trạng thái %li" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image: tiến trình canon_usb_list_all_dirs() (liêt kê má»i " "thư mục) cuối cùng đã thất bại vá»›i trạng thái %i" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "Tên “%s†(%li ký tá»±) quá dài, chỉ cho phép tối Ä‘a 30 ký tá»±." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "Không cho phép chữ thưá»ng trong %s." #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory: Lá»–I: thông Ä‘iệp đầu tiên quá ngắn (%i < tối thiểu " "%i)" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_directory: Tá»›i kết thúc gói trong khi kiểm tra mục tin thư " "mục thứ nhất" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "canon_int_list_directory: gặp mục tin thư mục bị cắt ngắn" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Tập tin đã bảo vệ." #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_get_info_func: Lá»–I: thông Ä‘iệp khởi tạo quá ngắn (%i < tối thiểu " "%i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "Không thể trích ảnh mẫu JPEG từ dữ liệu: không có đầu/cuối" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "Không thể trích ảnh mẫu JPEG từ dữ liệu: dữ liệu không phải JFIF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "Tham số không có giá trị “%s†trong %s dòng %i" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" "Tiến trình này không biết cách xá»­ lý giá trị máy_ảnh->cổng->kiểu %i cÅ©ng " "được biết như là 0x%x trong %s dòng %i." #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "Lá»–I NGHIÊM TRỌNG: không rõ giá trị CRC đầu tiên cho độ dài %d\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "không thể Ä‘oán giá trị CRC đầu tiên\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "cảnh báo: chưa kiểm CRC (thêm độ dài %d, giá trị 0x%04x) " "#########################\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "Chế độ Tương thích" #: camlibs/canon/library.c:98 msgid "Thumbnail" msgstr "Ảnh thu nhá»" #: camlibs/canon/library.c:99 msgid "Full Image" msgstr "Ảnh đầy đủ" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "Bóng đèn dây tóc" #: camlibs/canon/library.c:216 msgid "Auto focus: one-shot" msgstr "Tá»± động lấy nét: chụp má»™t" #: camlibs/canon/library.c:217 msgid "Auto focus: AI servo" msgstr "Tá»± động lấy nét: động cÆ¡ servo AI" #: camlibs/canon/library.c:218 msgid "Auto focus: AI focus" msgstr "Tá»± động lấy nét: lấy nét AI" #: camlibs/canon/library.c:219 msgid "Manual focus" msgstr "Lấy nét bằng tay" #: camlibs/canon/library.c:224 msgid "Beep off" msgstr "Tắt bíp" #: camlibs/canon/library.c:225 msgid "Beep on" msgstr "Bật bíp" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 msgid "Flash off" msgstr "Tắt Äèn nháy" #: camlibs/canon/library.c:231 msgid "Flash on" msgstr "Bật Äèn nháy" #: camlibs/canon/library.c:232 msgid "Flash auto" msgstr "Äèn nháy ở chế độ tá»± động" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "Tá»°_ÄỘNG" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "P" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "Tv" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "Av" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "M" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "A-DEP" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "M-DEP" #: camlibs/canon/library.c:267 msgid "Manual 2" msgstr "Bằng tay 2" #: camlibs/canon/library.c:268 msgid "Far scene" msgstr "Cảnh ở xa" #: camlibs/canon/library.c:269 msgid "Fast shutter" msgstr "Chập nhanh" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "Chập chậm" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "Cảnh đêm" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "Mức xám" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Kiểu nâu Ä‘en" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 msgid "Portrait" msgstr "Chân dung" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Chấm" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Macro" #: camlibs/canon/library.c:277 msgid "BW" msgstr "ÄTr" #: camlibs/canon/library.c:278 msgid "PanFocus" msgstr "Tiêu Ä‘iểm kéo ngang" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "Sặc sỡ" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 msgid "Neutral" msgstr "Trung lập" #: camlibs/canon/library.c:282 msgid "Long shutter" msgstr "Chập dài" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "Siêu macro" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "Hoa lá" #: camlibs/canon/library.c:285 msgid "Indoor" msgstr "Trong nhà" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "Pháo hoa" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "Biển" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "Dưới nước" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "Tuyết" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "Trẻ em và động vật" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "Chụp ảnh trong đêm" #: camlibs/canon/library.c:292 msgid "Digital macro" msgstr "Chụp macro kỹ thuật số" #: camlibs/canon/library.c:293 msgid "MyColors" msgstr "MàuMình" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "Ảnh chụp trong phim" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "RAW" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "RAW 2" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "JPEG chuẩn nhá»" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "JPEG Tốt nhá»" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "JPEG chuẩn vừa" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "JPEG Tốt vừa" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "JPEG chuẩn lá»›n" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "JPEG Tốt lá»›n" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "RAW + JPEG chuẩn nhá»" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "RAW + JPEG Tốt nhá»" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "RAW + JPEG chuẩn vừa" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "RAW + JPEG Tốt vừa" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "RAW + JPEG chuẩn lá»›n" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "RAW + JPEG Tốt lá»›n" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" "Äây là trình Ä‘iá»u khiển cho các máy ảnh Canon PowerShot, Digital IXUS,\n" "IXY Digital, và EOS Digital trong chế độ sở hữu (cÅ©ng được gá»i là “chuẩnâ€).\n" "Nó cÅ©ng há»— trợ vài máy thu-ghi hình Ä‘iện số Canon có khả năng ảnh tÄ©nh.\n" "Nó chứa mã để liên lạc qua cổng nối tiếp hay kết nối USB, nhưng không\n" "phải (chưa) qua IEEE 1394 (Firewire).\n" "Nó được thiết kế để hoạt động được vá»›i hÆ¡n 70 máy, từ máy rất cÅ© như\n" "PowerShot A5 và Pro70 cá»§a năm 1998 đến máy má»›i như PowerShot A510\n" "và EOS 350D cá»§a năm 2005.\n" "Nó chưa được thẩm tra vá»›i máy EOS 1D hay EOS 1Ds.\n" "Äối vá»›i máy A50, dùng 115200 bps có thể có kết quả chậm hÆ¡n khi dùng\n" "57600 bps.\n" "Nếu bạn gặp nhiá»u lá»—i truyá»n nối tiếp, hãy giữ máy tính càng nghỉ càng\n" "có thể (tức là đĩa không hoạt động).\n" #: camlibs/canon/library.c:497 #, c-format msgid "Camera unavailable: %s" msgstr "Máy ảnh không sẵn sàng: %s" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Äang tắt máy ảnh" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Gặp lá»—i khi chụp ảnh" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Không thể lấy tên đĩa: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Không có lý do" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Không thể lấy thông tin vỠđĩa: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "lá»—i ná»™i bá»™ #1 trong hàm lấy tập tin get_file_func() (%s dòng %i)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "Không tìm thấy tập tin âm thanh cho %s" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " á»” đĩa %s\n" " %11s byte tổng\n" " %11s byte sẵn còn có thể sá»­ dụng" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "Bá»™ chuyển đổi nguồn Ä‘iện xoay chiá»u" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "dùng pin" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "nguồn Ä‘iện OK" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "lá»—i nguồn Ä‘iện" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "không sẵn sàng: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (thá»i gian máy chá»§ %s%i giây)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Äịnh danh máy ảnh:\n" " Mô hình: %s\n" " Chá»§ sở hữu: %s\n" "\n" "Trạng thái nguồn Ä‘iện: %s\n" "\n" "Thông tin vỠđĩa Flash:\n" "%s\n" "\n" "Thá»i gian: %s\n" #: camlibs/canon/library.c:1145 msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Trình Ä‘iá»u khiển máy kiểu Canon PowerShot được tạo bởi\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "Phần bổ sung A5 bởi Ole W. Saastad\n" "Sá»± tăng cưá»ng thêm bởi\n" " Holger Klemm\n" " Stephen H. Westin" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Gặp lá»—i khi xóa tập tin" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Gặp lá»—i khi xóa ảnh mẫu liên quan" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "Không há»— trợ tốc độ hÆ¡n 57600 bps để tải lên máy ảnh" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Không thể lấy chữ đĩa cá»±c nhanh" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "Không thể tải lên, không có tên thư mục còn trống.\n" "Tên thư mục 999CANON tồn tại và chứa má»™t ảnh AUT_9999.JPG." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Không thể tạo thư mục \\DCIM." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Không thể tạo thư mục đích." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "Cấu hình máy ảnh và trình Ä‘iá»u khiển" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Cài đặt máy ảnh" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 msgid "Owner Name" msgstr "Tên Chá»§ sở hữu" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 msgid "Capture Size Class" msgstr "Lá»›p kích cỡ Chụp" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "Tốc độ ISO" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "Không rõ" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 msgid "Shooting mode" msgstr "Chế độ chụp" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 msgid "Shutter Speed" msgstr "Tốc độ màn trập" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "Thu phóng" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "Khẩu độ" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Sá»± bù PhÆ¡i sáng" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 msgid "Image Format" msgstr "Äịnh dạng Ảnh" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Chế độ Lấy nét" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Chế độ Äèn nháy" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Bíp" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 msgid "Camera Actions" msgstr "Hành vi Máy ảnh" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "Äồng bá»™ hóa ngày giá» máy ảnh vá»›i máy tính" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 msgid "Camera Status Information" msgstr "Thông tin Trạng thái Máy ảnh" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "Mô hình Máy ảnh" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Ngày và Giá»" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Lá»—i" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 msgid "Firmware Version" msgstr "Phiên bản Firmware" #: camlibs/canon/library.c:1956 msgid "Power" msgstr "Äiện" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Trình Ä‘iá»u khiển" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Liệt kê má»i tập tin" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Giữ tên tập tin khi tải lên" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Máy ảnh không sẵn sàng" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Tên ngưá»i sở hữu bị thay đổi" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "không thể thay đổi tên ngưá»i sở hữu" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "Lá»›p kích cỡ chụp bị thay đổi" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "Cài đặt lá»›p kích cỡ chụp không hợp lệ" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "Cài đặt tốc độ ISO không hợp lệ" #: camlibs/canon/library.c:2056 msgid "ISO speed changed" msgstr "Tốc độ ISO bị thay đổi" #: camlibs/canon/library.c:2058 msgid "Could not change ISO speed" msgstr "Không thể thay đổi tốc độ ISO" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "Sai đặt chế độ chụp ảnh" #: camlibs/canon/library.c:2085 msgid "Shooting mode changed" msgstr "Chế độ chụp ảnh bị thay đổi" #: camlibs/canon/library.c:2087 msgid "Could not change shooting mode" msgstr "Không thể thay đổi chế độ chụp ảnh" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "Cài đặt tốc độ chập không hợp lệ" #: camlibs/canon/library.c:2114 msgid "Shutter speed changed" msgstr "Tốc độ chập bị thay đổi" #: camlibs/canon/library.c:2116 msgid "Could not change shutter speed" msgstr "Không thể thay đổi tốc độ chập" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 msgid "Invalid aperture setting" msgstr "Cài đặt độ mở không hợp lệ" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 msgid "Aperture changed" msgstr "Äá»™ mở bị thay đổi" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 msgid "Could not change aperture" msgstr "Không thể thay đổi độ mở" #: camlibs/canon/library.c:2167 msgid "Invalid exposure compensation setting" msgstr "Cài đặt bù phÆ¡i sáng không hợp lệ" #: camlibs/canon/library.c:2170 msgid "Exposure compensation changed" msgstr "Sá»± bù phÆ¡i sáng đã thay đổi" #: camlibs/canon/library.c:2172 msgid "Could not change exposure compensation" msgstr "Không thể thay đổi sá»± bù phÆ¡i sáng" #: camlibs/canon/library.c:2194 msgid "Invalid image format setting" msgstr "Cài đặt định dạng ảnh không hợp lệ" #: camlibs/canon/library.c:2198 msgid "Image format changed" msgstr "Äịnh dạng ảnh đã thay đổi" #: camlibs/canon/library.c:2200 msgid "Could not change image format" msgstr "Không thể thay đổi định dạng ảnh" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "Cài đặt chế độ lấy nét không hợp lệ" #: camlibs/canon/library.c:2226 msgid "Focus mode changed" msgstr "Chế độ lấy nét bị thay đổi" #: camlibs/canon/library.c:2228 msgid "Could not change focus mode" msgstr "Không thể thay đổi chế độ lấy nét" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "Sai đặt chế độ bíp" #: camlibs/canon/library.c:2255 msgid "Beep mode changed" msgstr "Chế độ bíp bị thay đổi" #: camlibs/canon/library.c:2257 msgid "Could not change beep mode" msgstr "Không thể thay đổi chế độ bíp" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "Mức phóng to bị thay đổi" #: camlibs/canon/library.c:2276 msgid "Could not change zoom level" msgstr "Không thể thay đổi mức phóng to" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "Sai đặt chế độ đèn nháy" #: camlibs/canon/library.c:2332 msgid "Flash mode changed" msgstr "Chế độ đèn nháy bị thay đổi" #: camlibs/canon/library.c:2334 msgid "Could not change flash mode" msgstr "Không thể thay đổi chế độ đèn nháy" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "đặt giá»" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "không thể đặt giá»" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "ÄÆ°a ra kiểu cổng không được há»— trợ %i = 0x%x nên không thể khởi tạo." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Hết pin hoàn toàn nên máy ảnh bị tắt." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "Lá»–I: thông Ä‘iệp bất thưá»ng" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "Lá»–I: tràn thông Ä‘iệp" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "Lá»–I: sai thứ tá»±." #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "Lá»–I: kiểu gói tin bất thưá»ng." #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "Lá»–I: lá»—i định dạng thông Ä‘iệp." #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "Lá»–I: thông Ä‘iệp bất thưá»ng 2." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Äang tải lên tập tin…" #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Äang lấy tập tin…" #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "canon_serial_get_dirents: canon_serial_dialogue không lấy được các mục tin " "thư mục" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" "canon_serial_get_dirents: Gói tin mục tin thư mục đầu tiên quá ngắn (chỉ %i " "byte)" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "canon_serial_get_dirents: Không thể cấp phát %i byte bá»™ nhá»›" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "canon_serial_get_dirents: Gặp lá»—i khi Ä‘á»c mục tin thư mục khác" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "canon_serial_get_dirents: Nhận mục tin thư mục bị cắt ngắn" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "canon_serial_get_dirents: Quá nhiá»u mục tin thư mục, chắc là vòng lặp." #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents: Không thể thay đổi kích cỡ cá»§a bá»™ đệm mục tin thư " "mục thành %i byte" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Gặp lá»—i khi thay đổi tốc độ." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Äang đặt lại giao thức…" #: camlibs/canon/serial.c:1311 msgid "Camera OK." msgstr "Máy ảnh Tốt." #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Äang tìm máy ảnh…" #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Äang thá»­ liên lạc vá»›i máy ảnh…" #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Lá»—i liên lạc 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Máy ảnh không đáp ứng" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Äáp ứng không được nhận ra" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "Phát hiện má»™t “%s†cÅ©ng được biết như là “%sâ€" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "Không rõ mô hình “%sâ€" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "EOT sai" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Lá»—i liên lạc 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Lá»—i liên lạc 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Äang thay đổi tốc độ… vui lòng đợi…" #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Gặp lá»—i khi thay đổi tốc độ" #: camlibs/canon/serial.c:1454 msgid "Error waiting for ACK during initialization, retrying" msgstr "Lá»—i đợi xác nhận trong khi khởi tạo, Ä‘ang thá»­ lại" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Lá»—i đợi xác nhận trong khi khởi tạo" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Äã kết nối tá»›i máy ảnh" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "Lá»–I: phát hiện Ä‘iá»u kiện lá»—i nghiêm trá»ng nên không thể tiếp tục " #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "Lá»–I: %d là quá quá lá»›n." #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Äang lấy ảnh mẫu…" #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "KHÔNG NHẬN RA" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "Không thể thiết lập liên lạc khởi tạo vá»›i máy ảnh" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "Máy ảnh đã hoạt động" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "Máy ảnh đã được kích hoạt" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "Không nhận ra đáp ứng máy ảnh đầu tiên “%câ€" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "Bước 2 khởi tạo bị lá»—i (â€%s†khi Ä‘á»c %i). Máy ảnh không hoạt động." #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "Bước 2 khởi tạo bị lá»—i (trả vá» %i byte, cần %i byte). Máy ảnh không hoạt " "động." #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "Bước 3 khởi tạo bị lá»—i: “%s†khi Ä‘á»c %i. Máy ảnh không hoạt động." #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "Bước 3 khởi tạo bị lá»—i (trả vá» %i, cần %i). Máy ảnh không hoạt động." #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "Bước 3 khởi tạo bị lá»—i: “%s†khi ghi %i. Máy ảnh không hoạt động." #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "Bước 4 bị lá»—i: “%s†khi Ä‘á»c %i. Máy ảnh không hoạt động." #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "Bước 4 bị lá»—i (trả vá» %i, cần %i). Máy ảnh không hoạt động." #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "Máy ảnh chưa sẵn sàng, nhiá»u yêu cầu “nhận diện máy ảnh†bị lá»—i: %s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "Máy ảnh chưa sẵn sàng, hàm get_battery (lấy pin) bị lá»—i: %s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: độ dài bất thưá»ng được trả lại từ hàm “khóa các " "khóa†(%i byte, cần %i)." #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "canon_usb_lock_keys: độ dài bất thưá»ng được trả lại (%i byte, cần %i)." #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_unlock_keys: độ dài bất thưá»ng được trả lại (%i byte, cần %i)." #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_get_body_id: độ dài dữ liệu bất thưá»ng được trả lại (%i byte, cần " "%i)." #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Äang nhận dữ liệu…" #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "Hết bá»™ nhá»›: cần thiết %d byte." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes: há»™p thoại USB canon_usb_dialogue bị lá»—i" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "Cảnh báo trong hàm đặt các thuá»™c tính tập tin canon_usb_set_file_attributes: " "há»™p thoại canon_usb_dialogue đã trả lại trạng thái lá»—i 0x%08x từ máy ảnh." #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "Không thể Ä‘á»c tập tin “%sâ€" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "Hết bá»™ nhá»›: cần %ld byte." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "Lá»—i tải lên tập tin." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "Tập tin quá lá»›n. Có lẽ bạn cần phải tắt máy ảnh, rồi mở lại trước khi tải " "lên tập tin thêm." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" "canon_usb_get_dirents: không thể vừa trá»ng tải trong bá»™ đệm, “%.96s†(bị cắt " "ngắn) quá dài." #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents: há»™p thoại canon_usb_long_dialogue không lấy được các " "mục tin thư mục, trả lại %i." #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" "canon_usb_list_all_dirs: không thể vừa trá»ng tải trong bá»™ đệm, “%.96s†(bị " "cắt ngắn) quá dài." #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs: há»™p thoại canon_usb_long_dialogue không lấy được " "các mục tin thư mục, trả lại %i." #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "Phát hiện má»™t “%sâ€." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "Tên “%s†từ máy ảnh không tương ứng vá»›i máy ảnh đã biết." #: camlibs/casio/casio-qv.c:152 #, c-format msgid "Image type %d not supported" msgstr "Không há»— trợ kiểu ảnh %d" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "Ảnh %s bị bảo vệ chống xóa." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" "Khuôn khổ trình Ä‘iá»u khiển được tạo bởi Lutz Mueller .\n" "Phần má»m này chứa mã nguồn cá»§a QVplay mà được tạo bởi Ken-ichi HAYASHI và Jun-ichiro “itojun†Itoh .\n" "QVplay được Michael Haardt hợp nhất." #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "Mức pin: %.1f Vôn. Bản sá»­a đổi: %08x." #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "Cấu hình máy ảnh" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "Pin" #: camlibs/casio/casio-qv.c:275 msgid "Brightness" msgstr "Äá»™ sáng" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 msgid "Too bright" msgstr "Quá sáng" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 msgid "Too dark" msgstr "Quá tối" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "Äồng ý" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "Máy Logitech Clicksmart 310 chứa %i ảnh.\n" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" "Có hai giá trị độ phân giải, 352×288 và 176×144.\n" "Dữ liệu ảnh chụp theo định dạng JPEG khi được tải xuống\n" "thì không có kích cỡ đã xác định sẵn. Vì vậy chỉ có thể ước lượng\n" "số tối Ä‘a các ảnh chụp nằm được trên má»—i máy ảnh.\n" "Tất cả các tùy chá»n gphoto2 sẽ hoạt động được, trừ những mục\n" "theo đây mà không được phần cứng há»— trợ:\n" " * Xóa ảnh riêng hoặc những ảnh đã chá»n (gphoto2 -d)\n" " * Chụp (â€gphoto2 --capture†hoặc “--capture-imageâ€)\n" "Tuy nhiên, có thể bắt bằng giao diện máy ảnh Web,\n" "được mô Ä‘un hạt nhân spca50x há»— trợ.\n" "\n" "Khả năng truy cập vào giao diện ngưá»i dùng bằng gtkam đã được thá»­,\n" "và hoạt động được. Tuy nhiên, máy ảnh không tạo ảnh mẫu riêng.\n" "Vì má»—i ảnh cÅ©ng nhá» vá»›i độ phân giải thấp, trình Ä‘iá»u khiển\n" "chỉ tải vỠảnh thật để sá»­ dụng làm ảnh mẫu.\n" "\n" "Máy ảnh có khả năng chụp trong chế độ “trích phimâ€.\n" "Các khung kết quả được lưu vào đây dạng má»™t dãy ảnh tÄ©nh.\n" "Ngưá»i dùng có thể hoạt há»a chúng bằng (thí dụ)\n" "chức năng “hoạt há»a†(animate) cá»§a ImageMagick.\n" "\n" "Äể lấy chi tiết vá» các chức năng cá»§a máy ảnh, Ä‘á»c tài liệu Äá»c Äi:\n" "llibgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "Trình Ä‘iá»u khiển Logitech Clicksmart 310\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" "Äối vá»›i máy ảnh có sá»­ dụng thiết bị cá»§a S&Q Technologies, cái mà có\n" "USB Vendor ID 0x2770 và Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052 hoặc 0x913D các ảnh chụp sẽ được lưu theo định dạng PPM.\n" "\n" "Má»™t số máy ảnh kiểu này cho phép xóa má»i ảnh chụp bằng phần má»m.\n" "Má»™t số máy khác không. Những máy ảnh không được há»— trợ có khả năng chụp " "ảnh.\n" "Tất cả có khả năng chụp-xem-thá»­ (chụp ảnh rồi gá»­i cho máy tính).\n" "Nếu chức năng xóa-tất hoạt động được đối vá»›i máy ảnh cá»§a bạn,\n" "thế thì việc chụp-xem-thá»­ sẽ gặp hiệu ứng side-effect mà nó\n" "xóa những thứ có trên máy ảnh.\n" "\n" "Việc tải tập tin lên cÅ©ng không được há»— trợ trên những máy ảnh này.\n" "CÅ©ng thế, không có máy ảnh không được há»— trợ nào cho phép xóa\n" "từng bức ảnh riêng lẻ bằng phần má»m.\n" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "Trình Ä‘iá»u khiển chung sq905C\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Kiểu ảnh không được há»— trợ" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "Số lượng ảnh: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "Chỉ há»— trợ thư mục gốc: bạn đã yêu cầu danh sách các tập tin cá»§a thư mục " "“%sâ€." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Gặp lá»—i khi lấy tổng số ảnh" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Gặp lá»—i khi lấy thông tin vỠảnh" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Không há»— trợ kiểu chụp" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (pin còn %d%%)" #: camlibs/dimera/dimera3500.c:455 #, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 phiên bản %s %d/%d %d:%d\n" "%d ảnh được dùng trên khoảng %d (phân giải cao) hay %d (phân giải thấp).\n" "Tính năng máy ảnh: %s, %s, %s, %s\n" "Äèn nháy là %s, %s và %s\n" "Äá»™ phân giải được đặt thành %s\n" "Máy ảnh chạy bằng %s %s.\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Nháy đèn" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 msgid "No Flash" msgstr "Không đèn nháy" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Mống mắt đôi" #: camlibs/dimera/dimera3500.c:468 msgid "No Dual Iris" msgstr "Không mống mắt đôi" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "Chuyển đổi độ phân giải" #: camlibs/dimera/dimera3500.c:470 msgid "No Resolution Switch" msgstr "Không chuyển đổi độ phân giải" #: camlibs/dimera/dimera3500.c:472 msgid "No Power Light" msgstr "Không đèn có Ä‘iện" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "BẬT" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "TẮT" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "sẵn sàng" #: camlibs/dimera/dimera3500.c:476 msgid "Not ready" msgstr "Chưa sẵn sàng" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "trong chế độ tô đầy" #: camlibs/dimera/dimera3500.c:478 msgid "Not in fill mode" msgstr "Không trong chế độ tô đầy" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "thấp (320×240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "cao (640×480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "bên ngoài" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "trên máy" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" " * Lá»—i ảnh hay lá»—i liên lạc thưá»ng do pin yếu gây ra.\n" " * Ảnh được chụp từ xa trên máy ảnh này\n" "\tđược cất giữ trong bá»™ nhá»› RAM tạm thá»i,\n" "\tkhông phải trên thẻ nhá»› cá»±c nhanh.\n" " * Sá»± Ä‘iá»u khiển phÆ¡i sáng khi chụp ảnh\n" "\tcó thể được cấu hình bằng tay,\n" "\thay đặt thành chế độ tá»± động.\n" " * Chất lượng ảnh hiện tại dưới mức độ có thể.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "Phần má»m này dùng thông tin được công tyStarDot Technologies sở hữu.\n" "\n" "Tác giả:\n" " Brian Beattie \n" "Ngưá»i đóng góp:\n" " Chuck Homic \n" " Chuyển đổi ảnh chụp thô sang RGB\n" " Dan Fandrich \n" " Thông tin vá» giao thức, định dạng ảnh thô,\n" " chuyển sang gphoto2\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Gặp lá»—i khi Ä‘á»c ảnh từ bá»™ nhá»› cá»±c nhanh" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Hết bá»™ nhá»›" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "Äang tài vỠảnh…" #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Gặp lá»—i khi tải vỠảnh" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "Ngưá»i dùng đã thôi tải vá»" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Gặp lá»—i khi lấy ảnh trá»±c tiếp" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "PhÆ¡i sáng" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "Tá»± động Ä‘iá»u chỉnh phÆ¡i sáng khi xem thá»­" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "Äá»™ phÆ¡i sáng khi xem thá»­" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "Tá»± động nháy đèn khi chụp" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Lá»—i mở bản chuyển" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Gặp lá»—i khi đặt lại máy ảnh" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Gặp lá»—i khi đặt lại tốc độ liên lạc vá»›i máy ảnh" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Hình như bá»™ Ä‘iá»u giải, không phải máy ảnh" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "Äang liệt kê các tập tin trong “%sâ€â€¦" #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "Äang liệt kê các thư mục trong “%s†…" #: camlibs/directory/directory.c:381 #, c-format msgid "Could not get information about '%s' (%s)." msgstr "Không thể lấy thông tin vỠ“%s†(%s)." #: camlibs/directory/directory.c:414 #, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Không thể lấy thông tin vỠ“%s†trong “%s†(%s)." #: camlibs/directory/directory.c:462 #, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Không thể thay đổi giá» cá»§a tập tin “%s†trong “%s†(%s)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Không thể mở “%sâ€." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "“Máy ảnh†duyệt qua thư mục thì cho bạn mục lục các ảnh trên đĩa cứng." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "" "Chế độ Duyệt qua Thư mục — được tạo bởi Scott Fritzinger ." #: camlibs/directory/directory.c:671 #, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "Không thể xóa tập tin “%s†trong thư mục “%sâ€. (mã lá»—i %i: %s)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" "Tải vá» chương trình cho Digital Dream Enigma 1.3. bởi , được thích nghị từ trình Ä‘iá»u khiển spca50x. Cám Æ¡n nhóm spca50x vì dá»… " "chuyển trình Ä‘iá»u khiển sang máy ảnh này." #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "Máy ảnh đã gá»­i chỉ %i byte, còn cần ít nhất %i." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Không thể liên lạc vá»›i máy ảnh." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Nhận được dữ liệu bất thưá»ng (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "Dãy thoát không đúng: cần 0x%02x, nhưng lại nhận 0x%02x." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Dữ liệu sai: nhận 0x%02x, cần 0x%02x." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "Dữ liệu sai: nhận 0x%02x, cần 0x%02x hay 0x%02x." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "Sai tổng kiểm: nhận 0x%02x, cần 0x%02x." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "Máy ảnh đã từ chối lệnh." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "Máy ảnh đã tá»± đặt lại." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "Máy ảnh đã gá»­i bất thưá»ng byte 0x%02x." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Äang tải vá»â€¦" #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "Không thể cấp phát %i byte để tải vỠảnh mẫu." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "Không thể cấp phát %i byte để tải vỠảnh." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "Máy ảnh không chấp nhận “%s†là tên tập tin." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "Không thể khởi tạo tiến trình tải lên (máy ảnh đã đáp ứng 0x%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "Máy ảnh không há»— trợ tốc độ %i." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "Không thể đặt tốc độ thành %i (máy ảnh đã đáp ứng %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Dá»±a vào fujiplay cá»§a Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "Không há»— trợ tốc độ bit %ld." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Cấu hình cho máy ảnh FUJI cá»§a bạn" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Ngày và Giá»" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Phiên bản: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Mô hình: " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "Bá»™ nhá»› còn lại: " #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "Thư viện gsmart300 \n" "Till Adam \n" "Jerome Lodewyck \n" "Khả năng há»— trợ máy ảnh Ä‘iện số kiểu Mustek gSmart 300\n" "dá»±a vào vài mô-Ä‘un thư viện máy ảnh cá»§a gphoto2\n" "và các đặt tả được cung cấp thân ái bởi Mustek.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Không há»— trợ kiểu cổng: %d. Trình Ä‘iá»u khiển này chỉ chạy được vá»›i máy ảnh " "kiểu USB.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Không thể đặt lại máy ảnh.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Máy ảnh cá»§a bạn chỉ há»— trợ khả năng xóa tập tin cuối cùng trên máy ảnh. " "Trong trưá»ng hợp này, đây là tập tin “%sâ€." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" "Giá» hiện tại trên máy ảnh: %04d-%02d-%02d %02d:%02d\n" "Bá»™ nhá»› trống trên vỉ mạch: %d\n" "Ảnh trên thẻ nhá»›: %d\n" "Vùng trống (ảnh): %d\n" "Mức pin: %d %%" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" "hp215\n" "Marcus Meissner \n" "Trình Ä‘iá»u khiển để truy cập máy ảnh HP Photosmart 215.\n" "Trá»™n được từ chương trình hp215 độc lập.\n" "Trình Ä‘iá»u khiển này cho phép tải xuống các ảnh và ô xem thá»­,\n" "và xóa ảnh.\n" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "Máy ảnh USB cá»§a bạn là máy iClick 5X.\n" "Tổng số ảnh có thể chụp là %i\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" "Thông tin vá» máy ảnh có mã số 0x2770:0x9153.\n" "\n" "Không khuyên bạn sá»­ dụng má»™t chương trình có giao diện đồ há»a (GUI)\n" "để truy cập đến máy ảnh này, trừ để thá»­ nghiệm và/hay làm nổ cầu chì.\n" "Äể sá»­ dụng hằng ngày, thá»­ câu lệnh:\n" "gphoto2 -P\n" "trên dòng lệnh.\n" "Ghi chú: không thể tải vá» trích phim.\n" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "Trình Ä‘iá»u khiển iClick 5X\n" "Theodore Kilgore \n" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Khung đã chụp : %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "Thư viện jamcam v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "Äang tải vá» dữ liệu…" #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "Äang tải vỠảnh mẫu…" #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "Máy ảnh JD11 hoạt động hÆ¡i khá vá»›i trình Ä‘iá»u khiển này.\n" "Má»™t giao diện RS232 có tốc đô 115 kbit cần thiết để truyá»n ảnh.\n" "Trình Ä‘iá»u khiển này cho bạn có khả năng lấy:\n" "\n" " * ảnh mẫu (64×48 định dạng PGM)\n" " * ảnh đầy đủ (640×480 định dạng PPM)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Trình Ä‘iá»u khiển cho máy ảnh Jenoptik JD11.\n" "Giao diện được thiết kế đối chiếu dùng WINE và IDA." #: camlibs/jd11/jd11.c:186 msgid "JD11 Configuration" msgstr "Cấu hình JD11" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Cài đặt khác" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Thá»i gian phÆ¡i sáng bóng đèn" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Cài đặt màu" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "Äá»" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Lục" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Xanh" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Máy ảnh này có má»™t bá»™ chíp Ä‘iá»u khiển Jeilin JL2005A.\n" "Số lượng ảnh mà trong nó là %i. \n" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" "Trình Ä‘iá»u khiển này há»— trợ máy ảnh chứa con chíp\n" "Jeilin jl2005a.\n" "\n" "Máy ảnh kiểu này không há»— trợ chức năng xóa ảnh chụp,\n" "cÅ©ng không há»— trợ chức năng tải lên dữ liệu.\n" "\n" "Tiến trình giải mã ảnh chụp đã nén có thể hoạt động được\n" "hay không: nó không hoạt động cùng khá cho má»i máy ảnh\n" "được há»— trợ.\n" "\n" "Khung trích Ä‘oạn phim trên máy ảnh được tải xuống\n" "dạng má»™t dãy ảnh chụp tÄ©nh.\n" "\n" "Äể tìm chi tiết, xem tài liệu Äá»c Äi “libgphoto2/camlibs/README.jl2005aâ€.\n" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "Thư viện máy ảnh jl2005a\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Máy ảnh này có má»™t bá»™ chíp Ä‘iá»u khiển\n" "Jeilin JL2005%c.\n" "Số lượng ảnh mà nó chứa là %i. \n" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" "Trình Ä‘iá»u khiển này há»— trợ máy ảnh chứa con chíp\n" "Jeilin jl2005B, C hay D.\n" "\n" "Máy ảnh kiểu này không há»— trợ chức năng xóa ảnh chụp,\n" "cÅ©ng không há»— trợ chức năng tải lên dữ liệu.\n" "\n" "Khung trích Ä‘oạn phim trên máy ảnh được tải xuống\n" "dưới dạng má»™t dãy ảnh chụp tÄ©nh.\n" "\n" "Äể tìm chi tiết, xem tài liệu Äá»c Äi “libgphoto2/camlibs/README.jl2005câ€.\n" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "Thư viện máy ảnh jl2005bcd\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "Thẻ nhá»› CompactFlash (CF)" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "Máy ảnh Kodak DC120 camera dùng định dạng tập tin KDC để cất giữ các ảnh. " "Muốn xem những ảnh được tải xuống máy ảnh thì bạn cÅ©ng cần phải tải xuống " "chương trình “kdc2tiffâ€. Có thể lấy nó ở “http://kdc2tiff.sourceforge.netâ€." #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Thư viện máy ảnh Kodak DC120\n" "Scott Fritzinger \n" "Thư viện máy ảnh cho máy ảnh Kodak DC120.\n" "(được nhiá»u ngưá»i yêu cầu)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Äang lấy dữ liệu…" #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "Äang đợi hoàn tất…" #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Tập tin" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Kiểu tập tin" # Name: don't translate / Tên: đừng dịch #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Äá»™ phân giải tập tin" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 × 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 × 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Nén tập tin" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Thấp (chất lượng tốt nhất)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Vừa (chất lượng tốt hÆ¡n)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "Cao (chất lượng tốt)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Chụp" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Bù phÆ¡i sáng" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Tá»± động" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Ép buá»™c" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Không có" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Äèn nháy chống mắt Ä‘á»" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Bật" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Tắt" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Khác" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Äặt đồng hồ trong máy ảnh" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "Tốc độ cổng" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Tên tập ảnh" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Tên cần đặt trên thẻ nhá»› khi định dạng." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "Äịnh dạng cá»±c nhanh gá»n" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Äịnh dạng thẻ nhá»› và đặt tên tập ảnh." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Gỡ lá»—i" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Thá»±c hiện lệnh đã định sẵn\n" "có các giá trị tham số." #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "Ảnh trên máy ảnh: %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" "Có sức chứa cho ảnh thêm (má»™t cá»§a):\n" " %d ảnh đã nén thấp\n" " %d ảnh đã nén vừa\n" " %d ảnh đã nén cao\n" #: camlibs/kodak/dc210/dc210.c:506 #, c-format msgid "Total pictures taken: %d\n" msgstr "Tổng số ảnh đã chụp: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "Tổng số lần nháy: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, c-format msgid "Firmware: %d.%d\n" msgstr "Firmware: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, c-format msgid "Filetype: JPEG (" msgstr "Kiểu tập tin: JPEG (" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "Kiểu tập tin: FlashPix (" #: camlibs/kodak/dc210/dc210.c:527 #, c-format msgid "low compression, " msgstr "nén ít, " #: camlibs/kodak/dc210/dc210.c:529 #, c-format msgid "medium compression, " msgstr "nén vừa, " #: camlibs/kodak/dc210/dc210.c:531 #, c-format msgid "high compression, " msgstr "nén cao, " #: camlibs/kodak/dc210/dc210.c:533 #, c-format msgid "unknown compression %d, " msgstr "nén không rõ %d, " #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "phân giải không rõ %d)\n" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "Bá»™ tiếp hợp Ä‘iện chính đã kết nối.\n" #: camlibs/kodak/dc210/dc210.c:558 #, c-format msgid "AC adapter is not connected.\n" msgstr "Chưa cắm bá»™ nguồn chuyển đổi Ä‘iện xoay chiá»u.\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "Giá»: %a, %d %b %Y %T\n" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "Thu phóng: 58 mm\n" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "Thu phóng: 51 mm\n" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "Thu phóng: 41 mm\n" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "Thu phóng: 34 mm\n" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "Thu phóng: 29 mm\n" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "Thu phóng: macro (chụp cận cảnh)\n" #: camlibs/kodak/dc210/dc210.c:580 #, c-format msgid "Unknown zoom mode %d\n" msgstr "Không rõ chế độ thu phóng %d\n" #: camlibs/kodak/dc210/dc210.c:586 #, c-format msgid "Exposure compensation: %s\n" msgstr "Sá»± bù phÆ¡i sáng: %s\n" #: camlibs/kodak/dc210/dc210.c:588 #, c-format msgid "Exposure compensation: %d\n" msgstr "Sá»± bù phÆ¡i sáng: %d\n" #: camlibs/kodak/dc210/dc210.c:593 #, c-format msgid "Flash mode: auto, " msgstr "Chế độ đèn nháy: tá»± động " #: camlibs/kodak/dc210/dc210.c:595 #, c-format msgid "Flash mode: force, " msgstr "Chế độ đèn nháy: buá»™c, " #: camlibs/kodak/dc210/dc210.c:597 #, c-format msgid "Flash mode: off\n" msgstr "Chế độ đèn nháy: tắt\n" #: camlibs/kodak/dc210/dc210.c:599 #, c-format msgid "Unknown flash mode %d, " msgstr "Không rõ chế độ đèn nháy %d, " #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "chống mắt Ä‘á»: bật.\n" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "chống mắt Ä‘á»: tắt.\n" #: camlibs/kodak/dc210/dc210.c:615 #, c-format msgid "No card in camera.\n" msgstr "Không có thẻ nhá»› trong máy ảnh.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" "Tên thẻ nhá»›: %s\n" "Chá»— trống trên thẻ nhá»›: %d kB\n" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "Thư viện này đã được thá»­ vá»›i máy ảnh Kodak DC 215 Zoom. Nó có lẽ hoạt động " "được vá»›i máy ảnh DC 200 và DC 210. Nếu bạn có máy ảnh kiểu này, xin hãy viết " "thư cho tôi ở địa chỉ để cho tôi biết nếu thư viện trình " "Ä‘iá»u khiển này chạy được không." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Thư viện máy ảnh cho máy ảnh Kodak DC215 Zoom.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "Äang chá»â€¦" #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Tham số 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Tham số 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Tham số 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Mô hình: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "Phiên bản Firmware: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Tình trạng pin: %s, Bá»™ sạc Ä‘iện: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "Số ảnh: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "Chá»— còn trống: Cao: %d, Vừa: %d, Thấp: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "Trạng thái thẻ nhá»› (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "Tổng ảnh chụp: %d, Lần nháy đèn: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Thư viện máy ảnh Kodak DC240\n" "Scott Fritzinger và Hubert Figuiere \n" "Thư viện máy ảnh cho các máy ảnh Kodak DC240, DC280, DC3400 và DC5000.\n" "ÄÆ°á»£c tạo lại và cập nhật cho gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Yếu" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Rá»—ng" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Không hợp lệ" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Không dùng" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "Äang dùng" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "Thẻ nhá»› mở" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "Thẻ nhá»› không mở" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "Chưa định dạng thẻ nhá»›" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Không có thẻ nhá»›" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "Má»™t thao tác Ä‘ang chạy. Máy ảnh này chỉ há»— trợ chạy má»™t thao tác má»—i lần. " "Hãy đợi kết thúc thao tác này." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "máy ảnh đã nghỉ trong >9 giây nên khởi tạo lại.\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Vấn đỠđã biết:\n" "\n" "1. Nếu máy ảnh Kodak DC3200 không nhận lệnh trong vòng 10 giây, nó sẽ quá " "thá»i nên phải được khởi tạo lại. Bạn thấy máy ảnh không đáp ứng thì đơn giản " "chá»n nó lần nữa: hành động này sẽ gây ra nó khởi tạo lại." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Trình Ä‘iá»u khiển Kodak DC3200\n" "Donn Morrison \n" "\n" "Má»i bạn há»i câu và ghi chú." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "Máy ảnh USB cá»§a bạn là Kodak EZ200.\n" "Tổng ảnh = %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "Trình Ä‘iá»u khiển Kodak EZ200\n" "Bucas Jean-Francois \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Lá»—i lấy nét." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Lá»—i mống mắt." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Lá»—i ánh sáng nhấp nháy." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "Lá»—i tổng kiểm EEPROM." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "Lá»—i ná»™i bá»™ (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "Lá»—i ná»™i bá»™ (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Không có thẻ nhá»›." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "Thẻ nhá»› không được há»— trợ." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "Thẻ nhá»› bị gỡ bá» trong khi truy cập." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Số hiệu ảnh không hợp lệ." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "Không thể ghi vào thẻ nhá»›." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "Thẻ nhá»› bị bảo vệ chống ghi." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "Không còn có chá»— trống trên thẻ nhá»›." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Ảnh bị bảo vệ." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "Ãnh sáng quá tối." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Lá»—i lấy nét tá»± động." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Lá»—i hệ thống." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Tham số cấm." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "Không thể há»§y bá» lệnh này." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Dữ liệu bản địa hóa quá dài." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Dữ liệu bản địa hóa bị há»ng." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Lệnh không được há»— trợ." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "Lệnh khác Ä‘ang chạy." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Lá»—i thứ tá»± lệnh." #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Lá»—i lạ." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "Máy ảnh má»›i trả lại má»™t lá»—i chưa được phát hiện. Xin hãy thông báo cho %s " "thông tin này vá»›i thông tin thêm vá» cách tạo lá»—i đó: (0x%x,0x%x). Cám Æ¡n " "nhiá»u!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Äang lấy danh sách tập tin…" #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "Äang thá»­ các tốc độ khác nhau…" #: camlibs/konica/library.c:338 msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "Không thể liên lạc vá»›i máy ảnh. Hãy kiểm tra xem nó được kết nối đến máy " "ảnh, và được mở." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "Không thể xóa %i ảnh vì chúng bị bảo vệ." #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Mô hình: %s\n" "Số sản xuất: %s,\n" "Phiên bản phần cứng: %i.%i\n" "Phiên bản phần má»m: %i.%i\n" "Phiên bản phần má»m thá»­ nghiệm: %i.%i\n" "Tên: %s,\n" "Hãng chế tạo: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Thư viện Konica\n" "Lutz Mueller \n" "Há»— trợ má»i máy ảnh Konica và vài máy ảnh HP." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Äang lấy cấu hình…" #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Cấu hình Konica" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Cài đặt cố định" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "Máy ảnh nên kêu bíp khi chụp ảnh không?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Giá» tá»± hẹn giá»" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Giá» tá»± động tắt" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Thá»i gian chiếu ảnh" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Äá»™ phân giải" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Thấp (576 × 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Vừa (1152 × 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Cao (1152 × 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Äịa phương hóa" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Ngôn ngữ" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Chưa chá»n gì" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "Äịnh dạng Xuất ra TV" # Literal: don't translate / NghÄ©a chữ: đừng dịch #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" # Literal: don't translate / NghÄ©a chữ: đừng dịch #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "Không hiển thị trình đơn TV" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Äịnh dạng ngày" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "Tháng/Ngày/Năm" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "Ngày/Tháng/Năm" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Năm/Tháng/Ngày" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Cài đặt bá»n bỉ trong phiên chạy" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Bật, giảm mắt Ä‘á»" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Tá»± động, giảm mặt Ä‘á»" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Tiêu Ä‘iểm" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "Cố định" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Cài đặt hay thay đổi" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "Tá»± hẹn giá»" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "Tá»± hẹn giá» (chỉ ảnh kế)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Chuẩn" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Không tìm thấy dữ liệu địa phương hóa ở “%sâ€" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "Tập tin địa phương hóa quá dài." #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "Ô xem thá»­ này không tồn tại." #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "Dữ liệu bị há»ng." #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "Kiểu ảnh %d không được máy ảnh này há»— trợ." #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "Không thể xóa ảnh %s." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "Không thể xóa má»i ảnh." #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "Äang tải lên ảnh…" #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "Không thể tải ảnh này lên máy ảnh. Gặp lá»—i." #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "Bạn phải dùng chế độ thu để chụp ảnh." #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "Không có chá»— còn trống để chụp ảnh má»›i. Bạn cần phải xóa má»™t số ảnh." #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "Không thể chụp ảnh má»›i. Lá»—i không rõ" #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "Máy ảnh không trả lá»i." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Thấp" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Vừa" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Cao" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Biểu tượng" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "2,0 m" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "0,5 m" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "0,1 m" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Cân bằng trắng" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "Văn phòng" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "Ãnh sáng ban ngày" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "Äá»™ sắc" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "Sắc" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "Má»m" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "Màu" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "Nhẹ" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "Sâu" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "Äen trắng" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "ÄÆ¡n" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "Dãy 9" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "Hiển thị ngày" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "Bất cứ nÆ¡i nào" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "Chế độ phát" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "Chế độ thu" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "Má»i nÆ¡i" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "ÄIện chính" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "Phát" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Thu" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "DD/MM/YYYY" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "YYYY/MM/DD" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "MM/DD/YYYY" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Mẫu: %s\n" "Dung lượng: %i Mb\n" "Äiện: %s\n" "Tá»± động tắt: %i phút\n" "Chế độ: %s\n" "Ảnh: %i/%i\n" "Hiện ngày: %s\n" "Ngày và Giá»: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Thư viện Konica Q-M150\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Há»— trợ máy ảnh Konica Q-M150 Pháp." #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "Thông tin vá» máy ảnh Konica Q-M150:\n" "Máy ảnh này không cho phép thay đổi bên ngoài.\n" "Vì vậy, trong cấu hình bạn chỉ thấy những giá trị\n" "được đặt trên máy ảnh: không thể sá»­a đổi gì.\n" "\n" "Gặp khó khăn trong việc sá»­ dụng trình Ä‘iá»u khiển này\n" "thì xin hãy gá»­i thư cho tác giả.\n" #: camlibs/largan/lmini/largan.c:228 msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Trình Ä‘iá»u khiển Largan\n" "Hubert Figuiere \n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" "Có vẻ là máy ảnh USB cá»§a bạn là LG GSM.\n" "Firmware: %s\n" "Phiên bản Firmware: %s\n" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" "Trình Ä‘iá»u khiển chung LG GSM\n" "Guillaume Bedot \n" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Máy ảnh Mars MR97310.\n" "Nó chứa %i ảnh. \n" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" "Trình Ä‘iá»u khiển này há»— trợ máy ảnh chứa con chíp\n" "Mars MR97310 (và tương tá»± trá»±c tiếp ??Pixart PACx07??).\n" "\n" "Máy ảnh kiểu này không há»— trợ chức năng xóa ảnh chụp,\n" "cÅ©ng không há»— trợ tải lên dữ liệu.\n" "\n" "Tiến trình giải mã các ảnh chụp đã nén có thể hoạt động được\n" "hay không: nó không hoạt động cùng khá cho má»i máy ảnh\n" "đã há»— trợ.\n" "\n" "KHÔNG Há»– TRỢ chức năng xá»­ lý dữ liệu ảnh chụp cho máy ảnh\n" "Argus QuickClix.\n" "\n" "Khung trích Ä‘oạn phim trên máy ảnh được tải xuống\n" "dạng má»™t dãy ảnh chụp tÄ©nh.\n" "\n" "Äể tìm chi tiết, xem tài liệu Äá»c Äi “libgphoto2/camlibs/READMEâ€.\n" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "Thư viện máy ảnh Mars MR97310\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Mô hình: Minolta Dimage V (%s)\n" "Bản sá»­a đổi phần cứng: %s\n" "Bản sá»­a đổi Firmware: %s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Chế độ máy chá»§: %s\n" "Sá»­a chữa phÆ¡i sáng: %s\n" "Dữ liệu phÆ¡i sáng: %d\n" "Ngày hợp lệ: %s\n" "Ngày: %d/%02d/%02d %02d:%02d:%02d\n" "Äặt đồng hồ tá»± hẹn giá»: %s\n" "Äá»™ chất lượng: %s\n" "Chế độ phát/thu: %s\n" "ID thẻ nhá»› hợp lệ: %s\n" "ID thẻ nhá»›: %d\n" "Chế độ nháy đèn: " #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Từ xa" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Cục bá»™" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Có" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "Không" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Tốt" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Chuẩn" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Tá»± động\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Buá»™c nháy đèn\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Cấm nháy đèn\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Giá trị không hợp lệ (%d)\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "Mức pin: %s\n" "Số ảnh: %d\n" "Chá»— còn trống ít nhất: %d\n" "Bận: %s\n" "Äèn nháy Ä‘ang sạc: %s\n" "Trạng thái ống kính: " #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "Không đầy" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Äầy" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "Bận" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "Nghỉ" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "Äang sạc" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Sẵn sàng" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Chuẩn\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "Hướng ống kính không tương ứng vá»›i đèn nháy\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "Chưa kết nối ống kính\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "Giá trị sai đối vá»›i trạng thái ống kính %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "Trạng thái thẻ nhá»›:" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Bảo vệ chống ghi" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "Thẻ nhá»› không thích hợp" #: camlibs/minolta/dimagev/dimagev.c:406 #, c-format msgid "Bad value for card status %d" msgstr "Giá trị sai đối vá»›i trạng thái thẻ nhá»› %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Thư viện máy ảnh Minolta Dimage V\n" "%s\n" "Gus Hartmann \n" "Cám Æ¡n đặc biệt Minolta đã cung cấp đặc tả." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Äèn nháy : tá»± động (giảm mặt Ä‘á»)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Äèn nháy : Tá»± động" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Äèn nháy : Bật (giảm mắt Ä‘á»)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Äèn nháy : Bật" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Äèn nháy : Tắt" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Äèn nháy : chưa định nghÄ©a" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Tóm tắt Mustek MDC800:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "chưa thông báo trạng thái." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "Phát hiện thẻ nhá»› cá»±c nhanh gá»n (CF)\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Không phát hiện thẻ nhá»› cá»±c nhanh gá»n (CF)\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "Chế độ hiện tại: chế độ máy ảnh\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Chế độ hiện tại: chế độ phát lại\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Pin OK." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Pin yếu." #: camlibs/mustek/mdc800.c:264 msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Thư viện gPhoto2 Mustek MDC-800\n" "Henning Zabel \n" "Chuyển sang gphoto2 bởi Marcus Meissner \n" "Há»— trợ cả hai giao thức nối tiếp và USB." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "thư viện coolshot phiên bản " #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Äang ngắt kết nối tá»›i máy ảnh." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "Äang tải vỠảnh %s." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Äang tải lên ảnh: %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "Kích cỡ tập tin: %ld byte.\n" "Kích cỡ cá»§a tập tin lá»›n nhất có thể tải lên: %i byte." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Äang tải lên…" #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "Äang xóa ảnh %s." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Thư viện gPhoto2 Panasonic DC1000\n" "Mariusz Zynel \n" "\n" "Dá»±a vào chương trình dc1000 cá»§a\n" "Fredrik Roubert và\n" "Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "Äang tải vá» %s." #: camlibs/panasonic/dc1580.c:627 msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Thư viện gPhoto2 Panasonic DC1580\n" "Mariusz Zynel \n" "\n" "Dá»±a vào chương trình dc1000 cá»§a\n" "Fredrik Roubert và\n" "Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "Äang tải vỠ“%sâ€â€¦" #: camlibs/panasonic/l859/l859.c:582 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Máy quay trên tay Panasonic PV-L859-K/PV-L779-K\n" "\n" "Công ty Panasonic đã giá»›i hiệu kỹ thuật chụp ảnh tên PHOTOSHOT lần đầu tiên " "trong dãy máy quay trên tay (Palmcorder) này.\n" "\n" "Các ảnh được cất giữ theo định dạng JPEG trên má»™t vỉ mạch cá»±c nhanh ná»™i bá»™, " "và có thể được truyá»n sang máy tính qua cổng nối tiếp dá»±ng sẵn. Các ảnh được " "lưu theo má»™t cá»§a hai độ phân giải: CHUẨN (320×240) và CAO (640×480). Thiết " "bị CCD mà chụp ảnh từ ống kính chỉ có khả năng 300K thì tạo chỉ ảnh chất " "lượng thấp." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Vấn đỠđã biết:\n" "\n" "Gặp khó khăn liên lạc thì đặt lại máy ảnh và khởi chạy lại ứng dụng. Trình " "Ä‘iá»u khiển chưa đủ mạnh để phục hồi sau trưá»ng hợp kiểu này, đặc biệt nếu " "gặp khó khăn và máy ảnh không được tắt đúng ở tốc độ truyá»n nhanh hÆ¡n 9600 " "bps." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Trình Ä‘iá»u khiển máy trên tay thu-ghi hình Panasonic PV-L859-K/PV-L779-K " "Palmcorder\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " Tổng bá»™ nhá»›: %8d byte\n" " Bá»™ nhá»› còn trống: %8d byte\n" " Tổng số tập tin: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" " Tác giả: Till Adam\n" "\n" "và Miah Gregory\n" " " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "Äang tải vá» tập tin…" #: camlibs/pccam600/library.c:249 msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" "Tác giả: Peter Kajberg \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "pccam600_init: Cần >%d khối nhưng chỉ nhận được %d" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "pccam600_get_file: nhận chỉ mục %d nhưng cần chỉ mục >%d" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "pccam600_close: giá trị trả vá» là %d thay vì %d" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "pccam600_init: Cần %d khối nhưng chỉ nhận %d" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "khởi tạo pccam600: Gặp lá»—i bất ngá»: gp_port_read trả vá» %d thay vì %d" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Chương trình tải xuống cho vài máy ảnh kiểu Polaroid.\n" "\n" "Tạo gốc bởi Peter Desnoyers ,\n" "thích nghi vá»›i gPhoto2 bởi Nathan Stenzel và Lutz Mueller .\n" "Polaroid 640SE được thá»­ ra bởi Michael Golden ." #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Mô hình: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "Tải vá» chương trình cho các máy ảnh dá»±a vào GrandTek 98x. Nguyên bản được " "tạo bởi Chris Byrne , và chuyển sang gPhoto2 bởi Lutz " "Mueller . Các cải tiến giao thức và xá»­ lý sau cho máy " "Jenoptik JD350e bởi Michael Trawny . Các lá»—i " "được sá»­a chữa bởi Marcus Meissner ." #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "Chất lượng ảnh" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Cỡ ảnh" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Cài đặt đèn nháy" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Tá»± động tắt Ä‘iện (phút)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Thông tin" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "chuẩn" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "tốt" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "cá»±c tốt" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "tá»± động" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "bật" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "tắt" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "phát" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "thu" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "trình đơn" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "pin" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "bá»™ tiếp hợp Ä‘iện chính" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Nhận được phần đầu bất thưá»ng (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Nhận được đáp ứng bất thưá»ng" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Lá»—i tổng kiểm tra" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "Máy ảnh không chấp nhận lệnh đó." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "Máy ảnh đã gá»­i nhiá»u byte hÆ¡n số cần (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "Äã yêu cầu thông tin vỠảnh %i (= 0x%x), còn nhận được thông tin vỠảnh %i" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "Nhận được %i byte theo định dạng ảnh không rõ. Hãy gá»­i thư cho %s để yêu cầu " "sá»± giúp đỡ." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Chương trình tải xuống cho máy ảnh Polaroid DC700.\n" "\n" "Tạo gốc bởi Ryan Lantzer cho gphoto-4.x.\n" "Thích nghị vá»›i gphoto2 bởi Lutz Mueller ." #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Máy ảnh" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "Bao nhiêu phút trước khi máy ảnh tắt Ä‘iện?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Ảnh" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Ngày: %i/%02i/%02i %02i:%02i:%02i\n" "Ảnh đã chụp: %i\n" "Chá»— trống (ảnh): %i\n" "Phiên bản phần má»m: %s\n" "Tốc độ bốt (Baudrate): %s\n" "Bá»™ nhá»›: %i Mb\n" "Chế độ máy ảnh: %s\n" "Chất lượng ảnh: %s\n" "Giá trị nháy đèn: %s\n" "Thông tin: %s\n" "Hẹn giá»: %s\n" "Màn hình LCD: %s\n" "Tá»± động tắt nguồn: %i phút\n" "Nguồn Ä‘iện: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "Kiểu cổng đã yêu cầu (%i) không được há»— trợ bởi trình Ä‘iá»u khiển này." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "CHDK đã không từ bá» chế độ ghi." #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Tiếc là máy ảnh Canon cá»§a bạn không há»— trợ khả năng chụp kiểu Canon" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, c-format msgid "Unknown value %04x" msgstr "Giá trị không rõ %04x" #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, c-format msgid "Unknown value %04d" msgstr "Giá trị không rõ %04d" #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "kiểu dữ liệu bất thưá»ng %i" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "Giá trị đích không phải là kiểu kiểm đếm." #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "Bằng tay" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 msgid "Automatic" msgstr "Tá»± động" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 msgid "One-push Automatic" msgstr "Tá»± động bấm má»™t" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "Huỳnh quang" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Dây tóc" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Äầy mây" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "Bóng" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "Nhiệt độ màu" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "Äịnh sẵn" #: camlibs/ptp2/config.c:1415 msgid "Fluorescent Lamp 1" msgstr "Äèn huỳnh quang 1" #: camlibs/ptp2/config.c:1416 msgid "Fluorescent Lamp 2" msgstr "Äèn huỳnh quang 2" #: camlibs/ptp2/config.c:1417 msgid "Fluorescent Lamp 3" msgstr "Äèn huỳnh quang 3" #: camlibs/ptp2/config.c:1418 msgid "Fluorescent Lamp 4" msgstr "Äèn huỳnh quang 4" #: camlibs/ptp2/config.c:1419 msgid "Fluorescent Lamp 5" msgstr "Äèn huỳnh quang 5" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "Chá»n nhiệt độ màu" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "Äịnh sẵn riêng 1" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "Äịnh sẵn riêng 2" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "Äịnh sẵn riêng 3" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "Äịnh sẵn riêng 4" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "Äịnh sẵn riêng 5" #: camlibs/ptp2/config.c:1430 msgid "Fluorescent: Warm White" msgstr "Huỳnh quang: Trắng ấm" #: camlibs/ptp2/config.c:1431 msgid "Fluorescent: Cold White" msgstr "Huỳnh quang: Trắng lạnh" #: camlibs/ptp2/config.c:1432 msgid "Fluorescent: Day White" msgstr "Huỳnh quang: Trắng ngày" #: camlibs/ptp2/config.c:1433 msgid "Fluorescent: Daylight" msgstr "Huỳnh quang: Ãnh sáng ban ngày" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 msgid "JPEG Fine" msgstr "JPEG tốt" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 msgid "JPEG Normal" msgstr "JPEG chuẩn" #: camlibs/ptp2/config.c:1443 msgid "RAW + JPEG Fine" msgstr "RAW + JPEG tốt" #: camlibs/ptp2/config.c:1444 msgid "RAW + JPEG Normal" msgstr "RAW + JPEG chuẩn" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "Khung đơn" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "Tốc độ thấp liên tục" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "Tốc độ cao liên tục" #: camlibs/ptp2/config.c:1452 msgid "Self-timer" msgstr "Tá»± hẹn giá»" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "Mup Lên nhân bản" #: camlibs/ptp2/config.c:1735 msgid "undefined" msgstr "chưa xác định" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "ít má»±c" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "không mất" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 msgid "Undefined" msgstr "Chưa định nghÄ©a" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "CRW" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "TV" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "AV" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "A_DEP" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "M_DEP" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "DEP" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "Tá»± chá»n" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "Khóa" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "Chân dung đêm" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "Thể thao" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "Phong cảnh" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "Cận cảnh" #: camlibs/ptp2/config.c:1780 msgid "Flash Off" msgstr "Äèn nháy tắt" #: camlibs/ptp2/config.c:1788 msgid "red eye suppression" msgstr "giảm mắt Ä‘á»" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "tô đầy vào" #: camlibs/ptp2/config.c:1790 msgid "auto + red eye suppression" msgstr "tá»± động, giảm mặt Ä‘á»" #: camlibs/ptp2/config.c:1791 msgid "on + red eye suppression" msgstr "bật, giảm mắt Ä‘á»" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "iTTL" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 msgid "Commander" msgstr "Commander" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "Lặp lại" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "TTL" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 msgid "Auto Aperture" msgstr "Tá»± động đặt độ mở" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 msgid "Full Manual" msgstr "Toàn thá»§ công" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "AF-S" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "AF-C" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "AF-A" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 msgid "MF (fixed)" msgstr "MF (cố định)" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "MF (vùng chá»n)" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "Nặng giữa" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "Trung bình" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "Äánh giá" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "Bá»™ phận" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "Trung bình nặng giữa" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "Äo ít cÅ©ng khóa chuyển vá»›i khung AF" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "Äa Ä‘iểm" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "Trung thá»±c" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "ÄÆ¡n sắc" #: camlibs/ptp2/config.c:1947 msgid "User defined 1" msgstr "Tá»± xác định 1" #: camlibs/ptp2/config.c:1948 msgid "User defined 2" msgstr "Tá»± xác định 2" #: camlibs/ptp2/config.c:1949 msgid "User defined 3" msgstr "Tá»± xác định 3" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "Äiểm tiêu chỉ ở tâm, thá»§ công" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "Lấy nét ở Ä‘iểm trung tâm, tá»± động" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "Lấy nét nhiá»u Ä‘iểm tiêu (Chưa có đặc tả), Bằng tay" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 msgid "Multiple Focusing Points, Auto" msgstr "Lấy nét nhiá»u Ä‘iểm tiêu, Tá»± động" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 msgid "Multiple Focusing Points (Right)" msgstr "Lấy nét nhiá»u Ä‘iểm tiêu (Phải)" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "Lấy nét nhiá»u Ä‘iểm tiêu (tâm)" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 msgid "Multiple Focusing Points (Left)" msgstr "Lấy nét nhiá»u Ä‘iểm tiêu (Trái)" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 msgid "Large" msgstr "Lá»›n" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 msgid "Medium 1" msgstr "Vừa 1" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 msgid "Medium 2" msgstr "Vừa 2" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 msgid "Medium 3" msgstr "Vừa 3" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "Nhá»" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "16:9" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "3:2" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "10 giây" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "2 giây" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "TFT" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "máy tính" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "TFT + máy tính" #: camlibs/ptp2/config.c:2092 msgid "Setting 4" msgstr "Cài đặt 4" #: camlibs/ptp2/config.c:2093 msgid "Setting 5" msgstr "Cài đặt 5" #: camlibs/ptp2/config.c:2094 msgid "Setting 6" msgstr "Cài đặt 6" #: camlibs/ptp2/config.c:2095 msgid "Setting 7" msgstr "Cài đặt 7" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "Thẻ nhá»›" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "Phim RA" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, c-format msgid "Unknown %d" msgstr "Không hiểu %d" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "Mặc định cá»§a hãng" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "mRAW" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "sRAW" #: camlibs/ptp2/config.c:2246 #, fuzzy msgid "Smaller JPEG" msgstr "Nhá» hÆ¡n JPEG (S2)" # Name: don't translate / Tên: đừng dịch #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "Tiny JPEG (S3)" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "mRAW + JPEG Lá»›n Äẹp" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "sRAW + JPEG Lá»›n Äẹp" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "mRAW + JPEG Vừa Äẹp" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "sRAW + JPEG Vừa Äẹp" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "mRAW + JPEG Nhá» Äẹp" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "sRAW + JPEG Nhá» Äẹp" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "RAW + JPEG Thưá»ng Lá»›n" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "sRAW + JPEG Thưá»ng Lá»›n" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "RAW + JPEG Thưá»ng Vừa" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "sRAW + JPEG Thưá»ng Vừa" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "mRAW + JPEG Nhá» Thưá»ng" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "sRAW + JPEG Nhá» Thưá»ng" #: camlibs/ptp2/config.c:2272 #, fuzzy msgid "RAW + Smaller JPEG" msgstr "RAW + Nhá» hÆ¡n JPEG (S2)" #: camlibs/ptp2/config.c:2273 #, fuzzy msgid "mRAW + Smaller JPEG" msgstr "mRAW + Nhá» hÆ¡n JPEG (S2)" #: camlibs/ptp2/config.c:2274 #, fuzzy msgid "sRAW + Smaller JPEG" msgstr "sRAW + Nhá» hÆ¡n JPEG (S2)" #: camlibs/ptp2/config.c:2275 #, fuzzy msgid "RAW + Tiny JPEG" msgstr "RAW + JPEG nhá» (S3)" #: camlibs/ptp2/config.c:2276 #, fuzzy msgid "mRAW + Tiny JPEG" msgstr "mRAW + JPEG nhá» (S3)" #: camlibs/ptp2/config.c:2277 #, fuzzy msgid "sRAW + Tiny JPEG" msgstr "sRAW + JPEG nhá» (S3)" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "Liên tiếp" #: camlibs/ptp2/config.c:2305 msgid "Timer 10 sec" msgstr "Hẹn giá» 10 giây" #: camlibs/ptp2/config.c:2306 msgid "Timer 2 sec" msgstr "Hẹn giá» 2 giây" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "Im lặng đơn" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "Im lặng liên tục " #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, c-format msgid "Auto ISO" msgstr "Tá»± động ISO" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "Giảm nhiá»…u Ä‘a Khung ISO tá»± động" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, c-format msgid "%d Multi Frame Noise Reduction" msgstr "%d giảm nhiá»…u Ä‘a Khung" #: camlibs/ptp2/config.c:2453 msgid "Multi Frame Noise Reduction" msgstr "Giảm nhiá»…u Ä‘a Khung" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Äồng hồ hẹn giá»" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "%0.4fs" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "%d %d/%d" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "%d/%d" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "%f" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "Sáng tạo" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "Hành động" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "Phong cảnh đêm" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "Trẻ con" #: camlibs/ptp2/config.c:2868 msgid "Automatic (No Flash)" msgstr "Tá»± động (không nháy đèn)" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "Tá»± động thông minh" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "Tá»± động cao cấp" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "Phim" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "Tele-zoom cố định. Ưu tiên AE" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "Quét toàn cảnh" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "Tắt nháy đèn tá»± động thông minh" #: camlibs/ptp2/config.c:2876 msgid "Sports Action" msgstr "Hành động thể thao" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "Hoàng hôn" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "Cảnh đêm" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "Hoàng hôn cầm tay" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 msgid "Picture Effect" msgstr "Hiệu ứng ảnh" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "Phong cảnh đêm" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "Tiệc/Trong nhà" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "Bãi biển/Tuyết" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "Chạng vạng/Bình minh" #: camlibs/ptp2/config.c:2893 msgid "Pet Portrait" msgstr "Chân dung động vật" #: camlibs/ptp2/config.c:2894 msgid "Candlelight" msgstr "Ãnh sáng nến" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "Hoa" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "Màu sắc mùa thu" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "Thức ăn" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "Trẻ em" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "Cận cảnh" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "A6400 (160-6400)" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "A3200 (160-3200)" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "A800 (160-800)" #: camlibs/ptp2/config.c:3032 msgid "Flourescent" msgstr "Huỳnh quang" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "Nước" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "1 EV" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "2 EV" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "3 EV" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "Cá»±c cao" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "Phông ná»n" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 msgid "Effects" msgstr "Hiệu ứng" #: camlibs/ptp2/config.c:3075 msgid "U1" msgstr "U1" #: camlibs/ptp2/config.c:3076 msgid "U2" msgstr "U2" #: camlibs/ptp2/config.c:3104 msgid "Back Light" msgstr "Ãnh sáng sau" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "Toàn cảnh" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "Làm mượt" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "Dịch-nghiêng" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "Chá»n màu" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "Chụp má»™t" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "Loạt" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "Thá»i gian đã qua" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "Tốc độ thấp liên tục" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 msgid "Timer" msgstr "Äồng hồ hẹn giá»" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "Nhân bản lên" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "Äáp ứng nhanh từ xa" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 msgid "Delayed Remote" msgstr "Từ xa trá»…" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "Bấm máy im lặng" #: camlibs/ptp2/config.c:3125 msgid "Selftimer 2s" msgstr "Tá»± hẹn giá» 2s" #: camlibs/ptp2/config.c:3126 msgid "Selftimer 10s" msgstr "Tá»± hẹn giá» 10s" #: camlibs/ptp2/config.c:3127 msgid "Bracketing C 0.3 Steps" msgstr "Chụp bá»§a vây C Bước 0.3" #: camlibs/ptp2/config.c:3128 msgid "Bracketing C 0.7 Steps" msgstr "Chụp bá»§a vây C Bước 0.7" #: camlibs/ptp2/config.c:3129 msgid "Bracketing C 1.0 Steps" msgstr "Chụp bá»§a vây C Bước 1.0" #: camlibs/ptp2/config.c:3130 msgid "Bracketing C 2.0 Steps" msgstr "Chụp bá»§a vây C Bước 2.0" #: camlibs/ptp2/config.c:3131 msgid "Bracketing C 3.0 Steps" msgstr "Chụp bá»§a vây C Bước 3.0" #: camlibs/ptp2/config.c:3132 msgid "Bracketing S 0.3 Steps" msgstr "Chụp bá»§a vây S Bước 0.3" #: camlibs/ptp2/config.c:3133 msgid "Bracketing S 0.7 Steps" msgstr "Chụp bá»§a vây S Bước 0.7" #: camlibs/ptp2/config.c:3134 msgid "Bracketing S 1.0 Steps" msgstr "Chụp bá»§a vây S Bước 1.0" #: camlibs/ptp2/config.c:3135 msgid "Bracketing S 2.0 Steps" msgstr "Chụp bá»§a vây S Bước 2.0" #: camlibs/ptp2/config.c:3136 msgid "Bracketing S 3.0 Steps" msgstr "Chụp bá»§a vây S Bước 3.0" #: camlibs/ptp2/config.c:3137 msgid "Bracketing WB Lo" msgstr "Cân Bằng Trắng Bá»§a vây Thấp" #: camlibs/ptp2/config.c:3138 msgid "Bracketing WB Hi" msgstr "Cân Bằng Trắng Bá»§a vây Cao" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 msgid "Centre-spot" msgstr "Äiểm giữa" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "Äa-Ä‘iểm" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "Vùng đơn" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "Chá»§ thể gần nhất" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "Nhóm động" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "AF vùng đơn" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "AF vùng động" #: camlibs/ptp2/config.c:3154 #, fuzzy msgid "Group-dynamic AF" msgstr "AF nhóm động" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "AF vùng năng động có độ ưu tiên chá»§ đỠgần nhất" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "Vùng động (9)" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "Vùng động (21)" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "Vùng động (51)" #: camlibs/ptp2/config.c:3165 msgid "3D Tracking" msgstr "Theo dõi 3D" #: camlibs/ptp2/config.c:3171 msgid "sRGB (portrait)" msgstr "sRGB (chân dung)" # Name: don't translate / Tên: đừng dịch #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "AdobeRGB" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "sRGB (tá»± nhiên)" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "sRGB" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "Giá trị không rõ 0x%04x" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 msgid "Centre" msgstr "Giữa" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "Trên" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 msgid "Bottom" msgstr "Dưới" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "Trái" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 msgid "Right" msgstr "Phải" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "Nặng giữa" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "Äa chấm" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "Chấm giữa" #: camlibs/ptp2/config.c:3266 msgid "Automatic Flash" msgstr "Tá»± động nháy đèn" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 msgid "Fill flash" msgstr "Tô đầy nháy đèn" #: camlibs/ptp2/config.c:3269 msgid "Red-eye automatic" msgstr "Tá»± động mắt Ä‘á»" #: camlibs/ptp2/config.c:3270 msgid "Red-eye fill" msgstr "Tô đầy mắt Ä‘á»" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 msgid "External sync" msgstr "Äồng bá»™ bên ngoài" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 msgid "Auto Slow Sync" msgstr "Tá»± động đồng bá»™ chậm" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "Äồng bá»™ mành sau + Äồng bá»™ chậm" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 msgid "Red-eye Reduction + Slow Sync" msgstr "Giảm mắt đỠ+ Äồng bá»™ chậm" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "Äồng bá»™ mành trước" #: camlibs/ptp2/config.c:3277 msgid "Red-eye reduction" msgstr "Giảm mắt Ä‘á»" #: camlibs/ptp2/config.c:3278 msgid "Red-eye reduction with slow sync" msgstr "Giảm mắt đỠvà đồng bá»™ chậm" #: camlibs/ptp2/config.c:3279 msgid "Slow sync" msgstr "Äồng bá»™ chậm" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "Mành sau và đồng bá»™ chậm" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "Äồng bá»™ mành sau" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "Äồng bá»™ mành sau" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "Äồng bá»™ wireless" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Äồng bá»™ chậm" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Äen trắng" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "Chụp ảnh đêm" #: camlibs/ptp2/config.c:3298 msgid "Color sketch" msgstr "Phác thảo màu" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "Hiệu ứng thu nhá»" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "Màu có chá»n lá»c" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "Bóng" #: camlibs/ptp2/config.c:3302 msgid "High key" msgstr "Phím cao" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "Phím thấp" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 msgid "infinite" msgstr "vô hạn" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "%d mm" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "AF ưu tiên dò tìm khuôn mặt" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "AF phong cảnh" #: camlibs/ptp2/config.c:3772 msgid "Normal-area AF" msgstr "AF vùng-bình-thưá»ng" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "AF theo-dấu-chá»§-Ä‘á»" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "AF động cÆ¡ tùy động đơn" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "AF động-cÆ¡-tùy-động-toàn-thá»i-gian" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 msgid "Manual Focus" msgstr "Lấy nét thá»§ công" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 msgid "AE/AF Lock" msgstr "Khóa AE/AF" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "Chỉ khóa AE" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "Chỉ khóa AF" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "Giữ khóa AE" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "AF bật" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "Khóa cấp nháy đèn" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "20 giây" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 msgid "1 minute" msgstr "1 phút" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "5 phút" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 msgid "10 minutes" msgstr "10 phút" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "5 giây" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "SDRAM" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "6 mm" #: camlibs/ptp2/config.c:3828 msgid "8 mm" msgstr "8 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "10 mm" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "12 mm" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "1/60" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "1/30" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "1/15" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "1/8" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "1/4" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "1/2" #: camlibs/ptp2/config.c:3842 msgid "1" msgstr "1" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 msgid "2" msgstr "2" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 msgid "4" msgstr "4" #: camlibs/ptp2/config.c:3845 msgid "8" msgstr "8" #: camlibs/ptp2/config.c:3846 msgid "15" msgstr "15" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "30" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "bóng đèn sợi đốt" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "30gy" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "25gy" #: camlibs/ptp2/config.c:3855 msgid "20s" msgstr "20gy" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 msgid "15s" msgstr "15gy" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "13gy" #: camlibs/ptp2/config.c:3858 msgid "10s" msgstr "10gy" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "8gy" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "6gy" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "5gy" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "4gy" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "3gy" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "2,5gy" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "2gy" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "1,6gy" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "1,3gy" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "1gy" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "1/1,3gy" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "1/1,6gy" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "1/2gy" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "1/2,5gy" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "1/3gy" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "1/4gy" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "1/5gy" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "1/6gy" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "1/8gy" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "1/10gy" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "1/13gy" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "1/15gy" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "1/20gy" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "1/25gy" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "1/30gy" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "1/40gy" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "1/50gy" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "1/60gy" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "1/80gy" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "1/100gy" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "1/125gy" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "1/160gy" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "1/200gy" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "1/250gy" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "1/320gy" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "1/400gy" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "1/500gy" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "1/640gy" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "1/800gy" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "1/1000gy" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "1/1250gy" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "1/1600gy" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "1/2000gy" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "1/2500gy" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "1/3200gy" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "1/4000gy" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "1/5000gy" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "1/6400gy" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "1/8000gy" #: camlibs/ptp2/config.c:3916 msgid "15 minutes" msgstr "15 phút" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 msgid "Sharper" msgstr "Sắc hÆ¡n" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "Má»m hÆ¡n" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 msgid "Direct Print" msgstr "In trá»±c tiếp" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 msgid "Medium Low" msgstr "Vừa thấp" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 msgid "Medium high" msgstr "Vừa cao" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 msgid "Low contrast" msgstr "Tương phản thấp" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 msgid "Medium High" msgstr "Vừa cao" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "Äiá»u khiển cao" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "Vùng lấy nét (Cận cảnh)" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "Vùng lấy nét (Rất gần)" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "Vùng lấy nét (Gần)" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "Vùng lấy nét (Vừa)" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "Vùng lấy nét (Xa)" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "Vùng lấy nét (dành riêng 1)" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "Vùng lấy nét (dành riêng 2)" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "Vùng lấy nét (dành riêng 3)" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "Vùng lấy nét (dành riêng 4)" #: camlibs/ptp2/config.c:3976 msgid "Automatic Macro" msgstr "Macro tá»± động" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "AF phụ đơn" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "AF phụ liên tục" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "Chụp má»™t" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "Äá»™ng cÆ¡ Se-vô AI" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 msgid "AI Focus" msgstr "Lấy nét AI" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "4 giây" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "8 giây" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "Giữ" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 msgid "Fluorescent H" msgstr "Huỳnh quang H" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 msgid "Custom Whitebalance PC-1" msgstr "Cân trắng riêng PC-1" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 msgid "Custom Whitebalance PC-2" msgstr "Cân trắng riêng PC-2" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 msgid "Custom Whitebalance PC-3" msgstr "Cân trắng riêng PC-3" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "Số thiếu" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "Bóng" #: camlibs/ptp2/config.c:4118 msgid "Low sharpening" msgstr "Mài sắc thấp" #: camlibs/ptp2/config.c:4120 msgid "Black & white" msgstr "Äen trắng" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 msgid "AE & Flash" msgstr "AE và nháy đèn" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 msgid "AE only" msgstr "Chỉ AE" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 msgid "Flash only" msgstr "Chỉ nháy đèn" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 msgid "WB bracketing" msgstr "Cân bằng Trắng bá»§a vây" #: camlibs/ptp2/config.c:4221 msgid "ADL bracketing" msgstr "Bá»§a vây ADL" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "Khởi động" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "Tắt máy" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "Khởi chạy và tắt máy" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "50 Hz" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "60 Hz" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "Äáp ứng nhanh" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 msgid "Remote Mirror Up" msgstr "Äiá»u khiển từ xa Nâng gương lật" #: camlibs/ptp2/config.c:4248 msgid "Application Mode 0" msgstr "Chế độ ứng dụng 0" #: camlibs/ptp2/config.c:4249 msgid "Application Mode 1" msgstr "Chế độ ứng dụng 1" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "Giảm nhẹ" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "Tăng cưá»ng" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "MTR > bên dưới" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "Bên dưới > MTR" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "Äá»™ nhạy tá»± động" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "Äá»™ nhạy Cao" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "Äá»™ nhạy Trung bình" #: camlibs/ptp2/config.c:4286 msgid "Low sensitivity" msgstr "Äá»™ nhạy Thấp" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "Tắt microphone" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "Hi 1" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "Hi 2" #: camlibs/ptp2/config.c:4378 msgid "Flash/speed" msgstr "Äèn/tốc độ" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "Äèn/tốc độ/khẩu độ" #: camlibs/ptp2/config.c:4380 msgid "Flash/aperture" msgstr "Äèn/khẩu độ" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "JPEG cÆ¡ bản" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 msgid "NEF+Fine" msgstr "NEF+Tốt" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "NEF (Thô)" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "NEF+CÆ¡ bản" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 msgid "NEF+Normal" msgstr "NEF+Chuẩn" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "TIFF (RGB)" #: camlibs/ptp2/config.c:4575 msgid "RAW+JPEG" msgstr "RAW+JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "6 giây" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "16 giây" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "30 giây" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "30 phút" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "Không mất" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "Mất" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "Ưu tiên kích thước" #: camlibs/ptp2/config.c:4642 msgid "Optimal quality" msgstr "Tối ưu hóa theo chất lượng" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "1/250s (FP Tá»± động)" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "1/320s (FP Tá»± động)" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "Bấm máy" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "Bấm máy + Lấy nét" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "9 points" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "21 points" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "51 points" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "51 points (3D)" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "5 (Dài)" #: camlibs/ptp2/config.c:4695 msgid "3 (Normal)" msgstr "3 (Bình thưá»ng)" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "1 (Ngắn)" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "Cá»­a-chá»›p/AF-ON" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "Bật-AF" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "AF51" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "AF11" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "Khóa AE/AF" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "Chỉ khóa AE" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "Khóa AE (Khởi động sau bấm máy)" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "(Giữ) khóa AE" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "Chỉ khóa AF" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "4 fps" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "3 fps" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "2 fps" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "1 fps" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "6 fps" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "5 fps" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "9 fps" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "8 fps" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "7 fps" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "11 fps" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "10 fps" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "Không xác định" #: camlibs/ptp2/config.c:4780 msgid "Preview" msgstr "Xem thá»­" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "Khóa F" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "(Giữ) khóa AE" #: camlibs/ptp2/config.c:4788 msgid "Bracketing burst" msgstr "Chá»›p sáng ở các mức sáng khác nhau" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "Äo ma trận" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "Äo phần giữa" #: camlibs/ptp2/config.c:4791 msgid "Spot metering" msgstr "Äo Ä‘iểm" #: camlibs/ptp2/config.c:4792 msgid "Playback" msgstr "Phát lại" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "Truy cập mục cao nhất cá»§a TRÃŒNH ÄÆ N CỦA TÔI" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "+NEF (THÔ)" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "Lưới khung" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "Kích hoạt D-Lighting" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "1 bước tốc độ/khẩu độ" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "Chá»n số lượng kính không-CPU" #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "Lưới kính ngắm ảo" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "Quay phim" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "Bật (xem xét lại ảnh bị loại trừ)" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "50%" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "100%" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "75%" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "25%" #: camlibs/ptp2/config.c:4871 msgid "Unknown value" msgstr "Giá trị không rõ" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "Tiếc changeafarea Nikon cá»§a bạn chỉ há»— trợ chế độ ngắm Sống." #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "Trình Ä‘iá»u khiển tá»± động lấy nét cá»§a Nikon không làm việc." #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "Lấy nét bằng tay trên máy Nikon chỉ làm việc trên chế độ Ngắm sống." #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "Lấy nét bằng tay Nikon ở giá»›i hạn." #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "Bước lấy nét bằng tay Nikon quá nhá»." #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "Nhấn má»™t ná»­a" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 msgid "Press Full" msgstr "Nhấn hoàn toàn" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "Nhả má»™t ná»­a" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "Nhả hoàn toàn" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "Trá»±c tiếp" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 msgid "Press 1" msgstr "Nhấn 1" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 msgid "Press 2" msgstr "Nhấn 2" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 msgid "Press 3" msgstr "Nhấn 3" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "Nhả " #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "Nhả " #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "Nhả " #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "Gần 1" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "Gần 2" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "Gần 3" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "Xa 1" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "Xa 2" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "Xa 3" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "Gần %d" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "Xa %d" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "Gặp lá»—i khi bật kính ngắm Nikon" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" "Äể chụp bằng bóng đèn, kiểm tra lại đĩa chế độ được quay đến “M†và đặt tốc " "độ cá»­a chập thành “bóng đènâ€." #: camlibs/ptp2/config.c:5923 msgid "Internal RAM" msgstr "RAM trên máy" #: camlibs/ptp2/config.c:5924 msgid "Memory card" msgstr "Thẻ nhá»›" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "ESSID" #: camlibs/ptp2/config.c:6092 msgid "Display" msgstr "Hiển thị" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "Ngày tạo: %s. Ngày dùng cuối: %s" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "Xóa" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "WEP 64-bit" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "WEP 128-bit" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "Quản lý" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "Như thế" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "Tên hồ sÆ¡" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "WIFI ESSID" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "Äịa chỉ IP (rá»—ng để dùng DHCP)" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "Mặt nạ mạng" #: camlibs/ptp2/config.c:6359 msgid "Default gateway" msgstr "Cổng ra mặc định" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "Chế độ truy cập" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "Kênh WIFI" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "Mật mã" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "Khóa mật mã (thập lục)" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "Ghi" #: camlibs/ptp2/config.c:6412 msgid "List Wifi profiles" msgstr "Liệt kê hồ sÆ¡ WIFI" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "Tạo hồ sÆ¡ WIFI" #: camlibs/ptp2/config.c:6521 msgid "Power Down" msgstr "Tắt máy" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 msgid "Focus Lock" msgstr "Khóa lấy nét" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 msgid "Bulb Mode" msgstr "Chế độ Bóng" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "Khóa UI" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "ÄÄ©a Nikon DSLR tá»± động lấy nét" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "á»” Canon DSLR tá»± động lấy nét" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "ÄÄ©a Nikon DSLR lấy nét bằng tay" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "Äặt vùng tá»± động lấy nét Nikon" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "Äặt Chế độ Äiá»u khiển Nikon" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "á»” Canon DSLR lấy nét bằng tay" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "Há»§y Canon DSLR tá»± động lấy nét" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "á»ng kính thu phóng Canon EOS" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "Canon EOS vị trí thu phóng" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "Canon EOS kính ngắm" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "Khung ngắm Nikon" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "Bấm máy Canon EOS bằng Ä‘iá»u khiển từ xa" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "Ngôn ngữ kịch bản CHDK" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 msgid "Movie Capture" msgstr "Quay phim" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 msgid "Serial Number" msgstr "Số sản xuất" #: camlibs/ptp2/config.c:6548 msgid "Camera Manufacturer" msgstr "Nhà sản xuất máy ảnh" #: camlibs/ptp2/config.c:6550 msgid "Device Version" msgstr "Phiên bản thiết bị" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "Phần mở rá»™ng nhà sản xuất" #: camlibs/ptp2/config.c:6556 msgid "PTP Version" msgstr "Phiên bản PTP" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 msgid "DPOF Version" msgstr "Phiên bản DPOF" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "Äiện chính" #: camlibs/ptp2/config.c:6559 msgid "External Flash" msgstr "Äèn nháy ngoài" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "Cấp pin" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 msgid "Camera Orientation" msgstr "Hướng máy ảnh" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 msgid "Flash Open" msgstr "Äèn nháy đã mở" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 msgid "Flash Charged" msgstr "Äèn nháy đã sạc" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 msgid "Lens Name" msgstr "Tên ống kính" #: camlibs/ptp2/config.c:6570 msgid "Shutter Counter" msgstr "Bá»™ đếm số lần chập" #: camlibs/ptp2/config.c:6571 msgid "Available Shots" msgstr "Lần chụp có sẵn" #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "Tiêu cá»± nhá» nhất" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "Tiêu cá»± lá»›n nhất" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "Äá»™ mở đại ở tiêu cá»± tiểu" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "Äá»™ mở đại ở tiêu cá»± tiểu" #: camlibs/ptp2/config.c:6576 msgid "Low Light" msgstr "Ãt sáng" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 msgid "Light Meter" msgstr "Äo sáng" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 msgid "AF Locked" msgstr "Khóa AF" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "Khóa AE" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 msgid "FV Locked" msgstr "Khóa FV" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 msgid "Camera Date and Time" msgstr "Ngày và Giá» máy ảnh" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "Chế độ bíp" #: camlibs/ptp2/config.c:6591 msgid "Image Comment" msgstr "Ghi chú ảnh" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "WLAN GUID" #: camlibs/ptp2/config.c:6593 msgid "Enable Image Comment" msgstr "Bật ghi chú ảnh" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 msgid "LCD Off Time" msgstr "Thá»i gian tắt LCD" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 msgid "Recording Media" msgstr "Vật chứa thu" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "Thá»i gian xem lại nhanh" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "Trình đơn CSM" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "Ngược lại đĩa lệnh" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 msgid "Camera Output" msgstr "Kết xuất máy ảnh" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "Äích ghi" #: camlibs/ptp2/config.c:6602 msgid "EVF Mode" msgstr "Chế độ EVF" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "Nghệ sÄ©" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "Số CCD" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Tác quyá»n" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "Lau cảm biến" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 msgid "Flicker Reduction" msgstr "Giảm rung" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "Tùy chỉnh chức năng mở rá»™ng" #: camlibs/ptp2/config.c:6613 msgid "Focus Info" msgstr "Thông tin Lấy nét" #: camlibs/ptp2/config.c:6614 msgid "Focus Area" msgstr "Vùng lấy nét" #: camlibs/ptp2/config.c:6615 msgid "Auto Power Off" msgstr "Tá»± động tắt Ä‘iện" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "Äá»™ sâu cá»§a trưá»ng" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "Trình đơn và Phát lại" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "Hệ thống tập tin nhanh" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 msgid "Capture Target" msgstr "Äích Chụp" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "CHDK" #: camlibs/ptp2/config.c:6633 msgid "Image Format SD" msgstr "SD định dạng ảnh" #: camlibs/ptp2/config.c:6634 msgid "Image Format CF" msgstr "CF định dạng ảnh" #: camlibs/ptp2/config.c:6636 msgid "Image Format Ext HD" msgstr "ÄÄ©a cứng ngoài định dạng ảnh" #: camlibs/ptp2/config.c:6643 msgid "Movie ISO Speed" msgstr "Tốc độ ISO phim" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 msgid "ISO Auto" msgstr "Tá»± động ISO" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 msgid "WhiteBalance" msgstr "Cân bằng trắng" #: camlibs/ptp2/config.c:6654 msgid "WhiteBalance Adjust A" msgstr "Cân bằng trắng chỉnh A" #: camlibs/ptp2/config.c:6655 msgid "WhiteBalance Adjust B" msgstr "Cân bằng trắng chỉnh B" #: camlibs/ptp2/config.c:6656 msgid "WhiteBalance X A" msgstr "Cân bằng trắng X A" #: camlibs/ptp2/config.c:6657 msgid "WhiteBalance X B" msgstr "Cân bằng trắng X B" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "Hiệu ứng ảnh chụp" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 msgid "Color Model" msgstr "Mô hình màu" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 msgid "Color Space" msgstr "Miá»n Màu" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "Giảm nhiá»…u phÆ¡i sáng lâu" #: camlibs/ptp2/config.c:6669 msgid "Auto Focus Mode 2" msgstr "Chế độ lấy nét tá»± động 2" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "Giúp ánh sáng" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "Cá» xoay" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 msgid "Flash Compensation" msgstr "Sá»± bù đèn nháy" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 msgid "AEB Exposure Compensation" msgstr "Sá»± bù phÆ¡i sáng AEB" #: camlibs/ptp2/config.c:6685 msgid "Nikon Flash Mode" msgstr "Chế độ Äèn nháy Nikon" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 msgid "Flash Commander Mode" msgstr "Chế độ quản lý đèn nháy" #: camlibs/ptp2/config.c:6687 msgid "Flash Commander Power" msgstr "Äiện quản lý đèn nháy" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "Kênh câu lệnh đèn nháy" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 msgid "Flash Command Self Mode" msgstr "Chế độ tá»± làm câu lệnh đèn nháy" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 msgid "Flash Command Self Compensation" msgstr "Tá»± bù câu lệnh đèn nháy" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "Tá»± đặt giá trị câu lệnh đèn nháy" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 msgid "Flash Command A Mode" msgstr "Chế độ A câu lệnh đèn nháy" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 msgid "Flash Command A Compensation" msgstr "Bù A câu lệnh đèn nháy" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "Giá trị A câu lệnh đèn nháy" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 msgid "Flash Command B Mode" msgstr "Chế độ B câu lệnh đèn nháy" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 msgid "Flash Command B Compensation" msgstr "Bù B câu lệnh đèn nháy" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "Giá trị B câu lệnh đèn nháy" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "Chiếu sáng vùng AF" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "Chế độ bíp AF" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "Số F" #: camlibs/ptp2/config.c:6702 msgid "Movie F-Number" msgstr "Số F phim" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "Chương trình má»m dẻo" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "Khoảng cách lấy nét" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "Tiêu cá»±" #: camlibs/ptp2/config.c:6710 msgid "Focus Mode 2" msgstr "Chế độ Tiêu Ä‘iểm 2" #: camlibs/ptp2/config.c:6712 msgid "Continuous AF" msgstr "Lấy nét liên tục" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "Chế độ hiệu ứng" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 msgid "Exposure Program" msgstr "Chương trình phÆ¡i sáng" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 msgid "Scene Mode" msgstr "Chế độ phông ná»n" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "Tá»· lệ hình thể" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 msgid "HDR Mode" msgstr "Chế độ HDR" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "Tùy động ở mức cao HDR" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "Làm mượt HDR" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "Chế độ chụp tÄ©nh" #: camlibs/ptp2/config.c:6725 msgid "Canon Shooting Mode" msgstr "Chế độ chụp Canon" #: camlibs/ptp2/config.c:6726 msgid "Canon Auto Exposure Mode" msgstr "Chế độ tá»± động phÆ¡i sáng Canon" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 msgid "Drive Mode" msgstr "Chế độ ổ đĩa" #: camlibs/ptp2/config.c:6728 msgid "Picture Style" msgstr "Kiểu dáng ảnh" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "Chế độ Ä‘o tiêu Ä‘iểm" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "Chế độ Ä‘o phÆ¡i sáng" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "AV mở" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "AV đại" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "Äiểm tiêu" #: camlibs/ptp2/config.c:6738 msgid "Capture Delay" msgstr "Äá»™ trá»… chụp" #: camlibs/ptp2/config.c:6742 msgid "Shutter Speed 2" msgstr "Tốc độ chập 2" #: camlibs/ptp2/config.c:6743 msgid "Movie Shutter Speed 2" msgstr "Tốc độ màn chập 2 phim" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "Chế độ Ä‘o" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 msgid "AF Distance" msgstr "Khoảng cách AF" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 msgid "Focus Area Wrap" msgstr "Cuá»™n vùng lấy nét" #: camlibs/ptp2/config.c:6751 msgid "Exposure Delay Mode" msgstr "Chế độ phÆ¡i sáng trá»…" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 msgid "Exposure Lock" msgstr "Khóa phÆ¡i sáng" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "Chế độ AE-L/AF-L" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "Xem trá»±c tiếp Chế độ AF" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "Xem trá»±c tiếp Lấy nét AF" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "Thứ tá»± số hiệu tập tin" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 msgid "Flash Sign" msgstr "Dấu đèn nháy" #: camlibs/ptp2/config.c:6759 msgid "Modelling Flash" msgstr "Mô hình Äèn nháy ngoài" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "Lưới kính ngắm" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 msgid "Image Review" msgstr "Xem lại ảnh" #: camlibs/ptp2/config.c:6762 msgid "Image Rotation Flag" msgstr "Cá» xoay ảnh" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "Bấm máy không có thẻ nhá»› CF" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 msgid "Flash Mode Manual Power" msgstr "Chế độ đèn nháy có Ä‘iện thá»§ công" #: camlibs/ptp2/config.c:6765 msgid "Auto Focus Area" msgstr "Vùng tá»± động lấy nét" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 msgid "Flash Exposure Compensation" msgstr "Sá»± bù phÆ¡i sáng đèn nháy" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 msgid "Bracketing" msgstr "Bá»§a vây" #: camlibs/ptp2/config.c:6769 msgid "Bracket Mode" msgstr "Chế độ Bá»§a vây" #: camlibs/ptp2/config.c:6770 msgid "EV Step" msgstr "Bước EV" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 msgid "Bracket Set" msgstr "Äặt Bá»§a vây" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "Thứ tá»± Bá»§a vây" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "Số loạt" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "Khoảng cách loạt" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "Lần chụp tối Ä‘a" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 msgid "Auto White Balance Bias" msgstr "Khuynh hướng tá»± động cân bằng trắng" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 msgid "Tungsten White Balance Bias" msgstr "Khuynh hướng cân bằng trắng bóng đèn dây tóc" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 msgid "Fluorescent White Balance Bias" msgstr "Khuynh hướng cân bằng trắng huỳnh quang" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 msgid "Daylight White Balance Bias" msgstr "Khuynh hướng cân bằng trắng ánh sáng ban ngày" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 msgid "Flash White Balance Bias" msgstr "Khuynh hướng cân bằng trắng đèn nháy" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 msgid "Cloudy White Balance Bias" msgstr "Khuynh hướng cân bằng trắng khi trá»i dầy mây" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 msgid "Shady White Balance Bias" msgstr "Khuynh hướng cân bằng trắng có bóng" #: camlibs/ptp2/config.c:6794 msgid "White Balance Bias Preset Nr" msgstr "Số định sẵn bù cân bằng trắng" #: camlibs/ptp2/config.c:6795 msgid "White Balance Bias Preset 0" msgstr "Äịnh sẵn bù cân bằng trắng 0" #: camlibs/ptp2/config.c:6796 msgid "White Balance Bias Preset 1" msgstr "Äịnh sẵn bù cân bằng trắng 1" #: camlibs/ptp2/config.c:6797 msgid "White Balance Bias Preset 2" msgstr "Äịnh sẵn bù cân bằng trắng 2" #: camlibs/ptp2/config.c:6798 msgid "White Balance Bias Preset 3" msgstr "Äịnh sẵn bù cân bằng trắng 3" #: camlibs/ptp2/config.c:6799 msgid "White Balance Bias Preset 4" msgstr "Äịnh sẵn bù cân bằng trắng 4" #: camlibs/ptp2/config.c:6800 msgid "Selftimer Delay" msgstr "Trá»… tá»± kẹn giá»" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "Vùng nặng giữa" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 msgid "Flash Shutter Speed" msgstr "Tốc độ cá»­a chập đèn nháy" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 msgid "Remote Timeout" msgstr "Quá thá»i từ xa" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 msgid "Remote Mode" msgstr "Chế độ Ä‘iá»u khiển từ xa" #: camlibs/ptp2/config.c:6805 msgid "Application Mode" msgstr "Chế độ ứng dụng" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "Tối ưu hóa ảnh" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 msgid "Sharpening" msgstr "Mài sắc" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 msgid "Tone Compensation" msgstr "Sá»± bù sắc màu" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 msgid "Saturation" msgstr "Äá»™ bão hòa" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 msgid "Hue Adjustment" msgstr "Äiá»u chỉnh sắc độ" #: camlibs/ptp2/config.c:6811 msgid "Auto Exposure Bracketing" msgstr "PhÆ¡i sáng Bá»§a vây Tá»± động" #: camlibs/ptp2/config.c:6812 msgid "Movie Sound" msgstr "Âm thanh cá»§a phim" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 msgid "Manual Movie Setting" msgstr "Cài đặt quay phim thá»§ công" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "Microphone" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "Những tín hiệu bị đảo ngược" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "Tá»± động Ä‘iá»u chỉnh méo" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 msgid "Video Mode" msgstr "Chế độ phim" #: camlibs/ptp2/config.c:6835 msgid "Meter Off Time" msgstr "Thá»i gian tắt cái Ä‘o" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "Gán nút chức năng" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "Gán Nút Xem thá»­" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 msgid "Movie Quality" msgstr "Chất lượng rạp hát" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 msgid "Minimum Shutter Speed" msgstr "Tốc độ màn chập tối Ä‘a" #: camlibs/ptp2/config.c:6862 msgid "Movie Resolution" msgstr "Äá»™ phân giải phim" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 msgid "Continuous Shooting Speed Slow" msgstr "Chụp chậm liên tục" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "Tá»± động giá»›i hạn cao ISO" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "Tốc độ đồng bá»™ nháy đèn" #: camlibs/ptp2/config.c:6869 msgid "Focus Metering" msgstr "Chế độ Ä‘o tiêu Ä‘iểm" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 msgid "High ISO Noise Reduction" msgstr "Giảm nhiá»…u ISO cao" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 msgid "Continuous Shooting Speed High" msgstr "Chụp cao tốc liên tiếp" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 msgid "JPEG Compression Policy" msgstr "Chính sách nén JPEG" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "Ưu tiên chế độ AF-C" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "Ưu tiên chế độ AF-S" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "Kích hoạt AF" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "Vùng AF Äá»™ng" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 msgid "AF Lock On" msgstr "Bật khóa AF" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "Äiểm vùng AF" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "Nút bật AF" #: camlibs/ptp2/config.c:6913 msgid "Movie High ISO Noise Reduction" msgstr "Giảm nhiá»…u ISO cao cho phim" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "Thá»i gian bấm máy liên tiếp tối Ä‘a" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 msgid "Raw Compression" msgstr "Nén thô" #: camlibs/ptp2/config.c:6922 msgid "Image Quality 2" msgstr "Chất lượng ảnh 2" #: camlibs/ptp2/config.c:6944 msgid "Image Settings" msgstr "Cài đặt ảnh" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "Cài đặt chụp" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "Hồ sÆ¡ WIFI" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 msgid "Other PTP Device Properties" msgstr "Thuá»™c tính Thiết bị PTP Khác" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "Thuá»™c tính PTP 0x%04x" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "Tiếc là thuá»™c tính “%s†/ 0x%04x hiện tại là chỉ-Ä‘á»c." #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "Thuá»™c tính “%s†/ 0x%04x chưa được đặt (0x%04x: %s)" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "Thuá»™c tính “%s†/ 0x%04x chưa được đặt (0x%04x: %s)." #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" "Gặp lá»—i khi phân tích giá trị cá»§a ô Ä‘iá»u khiển “%s†/ 0x%04x bị lá»—i vá»›i %d." #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "Bạn cần xác định má»™t thư mục bắt đầu vá»›i “ /store_xxxxxxxxx/â€" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" "Trình Ä‘iá»u khiển PTP2\n" "© 2001-2005 cá»§a Mariusz Woloszyn .\n" "© 2003-%d cá»§a Marcus Meissner .\n" "\n" "Trình Ä‘iá»u khiển này há»— trợ các máy ảnh lần lượt há»— trợ\n" "Giao thức Truyá»n Ảnh (PTP) hay PictBridgeâ„¢,\n" "và các bá»™ phát ảnh/nhạc mà cÅ©ng há»— trợ\n" "Giao thức Truyá»n Phương tiện (MTP).\n" "\n" "Chúc bạn vui vẻ!" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "Gặp lá»—i khi bật kính ngắm Canon" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "Gặp lá»—i khi lấy ảnh kính ngắm ảnh" #: camlibs/ptp2/library.c:2537 msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "" "Tiếc là máy ảnh Canon cá»§a bạn không há»— trợ chế độ Kính Ngắm Canon (Canon " "Viewfinder)." #: camlibs/ptp2/library.c:2545 msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "Tiếc là máy ảnh Nikon cá»§a bạn không há»— trợ chế độ ngắm Sống" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "" "Tiếc là máy ảnh Nikon cá»§a bạn không trả lại ảnh JPEG trong chế độ ngắm Sống" #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "Gặp lá»—i khi tắt chức năng kính ngắm Nikon" #: camlibs/ptp2/library.c:2799 msgid "Sorry, your camera does not support Nikon capture" msgstr "Tiếc là máy ảnh cá»§a bạn không há»— trợ khả năng chụp cá»§a Nikon." #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" "Gặp lá»—i khi bật kính ngắm trên Nikon 1, nhưng nó lại được yêu cầu để chụp" #: camlibs/ptp2/library.c:3045 msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Tiếc là máy ảnh Canon cá»§a bạn không há»— trợ khả năng chụp EOS Canon." #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 msgid "Canon EOS Half-Press failed" msgstr "Nhấn-ná»­a Canon EOS bị lá»—i" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "Canon EOS Get Changes (lấy các thay đổi) bị lá»—i" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "" "Canon EOS Capture (Chụp) bấm máy gặp lá»—i: có thể là không có tiêu Ä‘iểm (chưa " "lấy được nét)?" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 msgid "Canon EOS Half-Release failed" msgstr "Nhả-ná»­a Canon EOS bị lá»—i" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 msgid "Canon EOS Full-Press failed" msgstr "Nhấn-cả Canon EOS bị lá»—i" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 msgid "Canon EOS Full-Release failed" msgstr "Nhả-cả Canon EOS bị lá»—i" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "Canon EOS Capture (chụp) bị lá»—i" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "Canon EOS Capture (chụp) bị lá»—i: %x" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "Chụp Canon EOS gặp lá»—i khi nhả: Có thể là do gương Ä‘ang lật lên?" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" "Canon EOS Capture (Chụp) không bấm máy được: có thể là không đủ bá»™ nhá»› trên " "thẻ nhá»›?" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "Canon EOS gặp lá»—i khi thả: Thẻ nhá»› chỉ cho Ä‘á»c?" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" "Canon EOS Capture (Chụp) không bấm máy được: Lá»—i không rõ %d, hãy thông báo." #: camlibs/ptp2/library.c:3332 msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "" "Tiếc là máy ảnh Canon cá»§a bạn không há»— trợ khởi tạo khả năng chụp kiểu Canon " "(Canon Capture)." #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "Gặp lá»—i khi tắt kính ngắm Canon" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 msgid "Canon Capture failed" msgstr "Canon Capture (chụp) gặp lá»—i" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "Tiếc là máy ảnh cá»§a bạn không há»— trợ khả năng chụp chung" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "Canon EOS Trigger Capture (Chụp) gặp lá»—i: 0x%x" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "Tiếc là không thể khởi tạo máy ảnh cá»§a bạn. Hãy thông báo." #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "chỉ Ä‘á»c" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "Ä‘á»c ghi" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, c-format msgid "Manufacturer: %s\n" msgstr "Hãng chế tạo: %s\n" #: camlibs/ptp2/library.c:4800 #, c-format msgid "Model: %s\n" msgstr "Mẫu: %s\n" #: camlibs/ptp2/library.c:4802 #, c-format msgid " Version: %s\n" msgstr " Phiên bản: %s\n" #: camlibs/ptp2/library.c:4805 #, c-format msgid " Serial Number: %s\n" msgstr " Số sản xuất: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "Mã số phần mở rá»™ng nhà sản xuất: 0x%x (%d.%d)\n" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "Mô tả phần mở rá»™ng nhà sản xuất: %s\n" #: camlibs/ptp2/library.c:4821 #, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "Phiên bản tiêu chuẩn PTP: %d.%d\n" #: camlibs/ptp2/library.c:4828 #, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Chế độ chức năng: 0x%04x\n" #: camlibs/ptp2/library.c:4833 #, c-format msgid "" "\n" "Capture Formats: " msgstr "" "\n" "Äịnh dạng chụp:" #: camlibs/ptp2/library.c:4847 #, c-format msgid "Display Formats: " msgstr "Äịnh dạng hiển thị: " #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "Thuá»™c tính đối tượng MTP đã há»— trợ:\n" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr " PTP: lá»—i %04x khi truy vấn" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" "\n" "Khả năng thiết bị:\n" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "\tTải vá» tập tin, " #: camlibs/ptp2/library.c:4902 #, c-format msgid "File Deletion, " msgstr "Xóa tập tin, " #: camlibs/ptp2/library.c:4904 #, c-format msgid "No File Deletion, " msgstr "Không xóa tập tin, " #: camlibs/ptp2/library.c:4908 #, c-format msgid "File Upload\n" msgstr "Tải lên tập tin\n" #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "Không tải lên tập tin\n" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "\tChụp ảnh chung, " #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "\tKhông ảnh chụp, " #: camlibs/ptp2/library.c:4920 #, c-format msgid "Open Capture, " msgstr "Chụp mở, " #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "Không chụp mở, " #: camlibs/ptp2/library.c:4929 #, c-format msgid "Canon Capture" msgstr "Chụp Canon" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "Chụp Canon EOS" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "Nút cá»­a chá»›p %sCanon EOS" #: camlibs/ptp2/library.c:4947 #, c-format msgid "Nikon Capture 1" msgstr "Chụp Nikon 1" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "Chụp %sNikon 2" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "Chụp %sNikon 3" #: camlibs/ptp2/library.c:4965 #, c-format msgid "Sony Capture" msgstr "Chụp Sony" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "Chụp “Olympus E XMLâ€\n" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "Không chụp đặc trưng cho nhà sản xuất\n" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "\tHá»— trợ WIFI Nikon\n" #: camlibs/ptp2/library.c:4991 #, c-format msgid "\tCanon Wifi support\n" msgstr "\tHá»— trợ WIFI Canon\n" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" "\n" "Tóm tắt các thiết bị chứa:\n" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "\tMô tả bá»™ nhá»›: %s\n" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "\tNhãn khối tin: %s\n" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "ROM có sẵn" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "ROM rá»i" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "RAM có sẵn" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "RAM rá»i (thẻ nhá»› nhá»›)" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, c-format msgid "Unknown: 0x%04x\n" msgstr "Không rõ: 0x%04x\n" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "\tKiểu Bá»™ nhá»›: %s\n" #: camlibs/ptp2/library.c:5043 msgid "Generic Flat" msgstr "Chung phẳng" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "Chung phân cấp" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "Bố trí máy ảnh số (DCIM)" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "\tKiểu hệ thống tập tin: %s\n" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "Äá»c ghi" #: camlibs/ptp2/library.c:5056 msgid "Read-Only" msgstr "Chỉ Ä‘á»c" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "Chỉ Ä‘á»c, có xóa đối tượng" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "\tKhả năng truy cập: %s\n" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "\tKhả năng tối Ä‘a: %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "\tChá»— trống (byte): %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5075 #, c-format msgid "\tFree Space (Images): %d\n" msgstr "\tChá»— trống (ảnh): %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" "\n" "Tóm tắt thuá»™c tính thiết bị:\n" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr " không Ä‘á»c ra.\n" #: camlibs/ptp2/library.c:5116 #, c-format msgid "cannot be queried.\n" msgstr "không thể bị truy vấn.\n" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr " lá»—i %x khi truy vấn." #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "Tập tin “%s/%s†không tồn tại" #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "Siêu dữ liệu chỉ được há»— trợ cho thiết bị kiểu MTP." #: camlibs/ptp2/library.c:6414 msgid "Device does not support setting object protection." msgstr "Thiết bị này không há»— trợ chức năng đặt mức bảo mật đối tượng." #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "Thiết bị không đặt được bảo mật đối tượng thành %d" #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Äang khởi tạo máy ảnh" #: camlibs/ptp2/library.c:7254 #, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "" "PTP hiện tại chỉ được thá»±c hiện cho các máy ảnh kiểu USB và PTP/IP, kiểu " "cổng %x." #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" "Olympus há»— tr�� bao XML chỉ sẵn sàng khi được dịch sẵn cùng vá»›i há»— trợ cá»§a " "thư viện libxml2." #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "Lá»—i không xác định PTP" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP OK !" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "Lá»—i chung PTP" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP: buổi hợp chưa mở" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP: mã hiệu giao dịch không hợp lệ" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "PTP: thao tác không được há»— trợ" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "PTP: tham số không được há»— trợ" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP: chưa truyá»n xong" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP: mã hiệu cất giữ không hợp lệ" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "PTP: bá»™ quản lý đối tượng không hợp lệ" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "PTP: cái đỡ thiết bị không được há»— trợ" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP: mã định dạng đối tượng không hợp lệ" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP: kho đầy" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP: đối tượng bị bảo vệ chống ghi" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "PTP: kho chỉ Ä‘á»c" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP: truy cập bị từ chối" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP: không có ảnh mẫu" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP: lá»—i tá»± thá»­" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP: xóa bá»™ phận" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "PTP: kho không sẵn sàng" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "PTP: không há»— trợ khả năng xác định theo định dạng" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "PTP: không có thông tin đối tượng hợp lệ" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP: định dạng mã không hợp lệ" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "PTP: mã nhà sản xuất lạ" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP: tiến trình chụp đã kết thúc" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "PTP: thiết bị Ä‘ang bận" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "PTP: đối tượng cha không hợp lệ" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "PTP: định dạng cái dỡ không hợp lệ" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "PTP: giá trị cái dỡ không hợp lệ" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "PTP: tham số không hợp lệ" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP: phiên chạy đã mở" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP: giao dịch bị há»§y bá»" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "PTP: đặc tả cá»§a đích không được há»— trợ" #: camlibs/ptp2/ptp.c:4047 msgid "Filename Required" msgstr "Cần tên tập tin" #: camlibs/ptp2/ptp.c:4048 msgid "Filename Conflicts" msgstr "Xung đột tên tập tin" #: camlibs/ptp2/ptp.c:4049 msgid "Filename Invalid" msgstr "Tên tập tin không hợp lệ" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "Lá»—i phần cứng" #: camlibs/ptp2/ptp.c:4052 msgid "Out of Focus" msgstr "Không thể lấy nét" #: camlibs/ptp2/ptp.c:4053 msgid "Change Camera Mode Failed" msgstr "Lá»—i đổi chế độ máy ảnh" #: camlibs/ptp2/ptp.c:4054 msgid "Invalid Status" msgstr "Trạng thái không hợp lệ" #: camlibs/ptp2/ptp.c:4055 msgid "Set Property Not Supported" msgstr "Không há»— trợ tính năng đặt thuá»™c tính" #: camlibs/ptp2/ptp.c:4056 msgid "Whitebalance Reset Error" msgstr "Lá»—i đặt lại cân bằng trắng" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "Lá»—i tham chiếu bụi" #: camlibs/ptp2/ptp.c:4058 msgid "Shutter Speed Bulb" msgstr "Bóng đèn tốc độ chập" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "Thứ tá»± lên máy nhân" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "Chế độ máy ảnh không Ä‘iá»u chỉnh Số F" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "Không phải dùng chức năng xem trá»±c tiếp" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "Bước Äi Mf gặp kết thúc" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "Bước Äi Mf không đủ" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "Việc truyá»n cấp cao bị há»§y bá»" #: camlibs/ptp2/ptp.c:4066 msgid "Unknown Command" msgstr "Lệnh lạ" #: camlibs/ptp2/ptp.c:4067 msgid "Operation Refused" msgstr "Thao tác bị từ chối" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "á»ng kính còn Ä‘ang đậy" #: camlibs/ptp2/ptp.c:4069 msgid "Battery Low" msgstr "Pin yếu" #: camlibs/ptp2/ptp.c:4070 msgid "Camera Not Ready" msgstr "Máy ảnh chưa sẵn sàng" #: camlibs/ptp2/ptp.c:4072 msgid "PTP Timeout" msgstr "Thá»i hạn PTP" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "PTP há»§y yêu cầu" #: camlibs/ptp2/ptp.c:4075 msgid "PTP Response Expected" msgstr "Cần đáp ứng PTP" #: camlibs/ptp2/ptp.c:4076 msgid "PTP Data Expected" msgstr "Cần dữ liệu PTP" #: camlibs/ptp2/ptp.c:4077 msgid "PTP I/O Error" msgstr "lá»—i V/R PTP" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "PTP: chưa định nghÄ©a thuá»™c tính" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "Chế độ chức năng" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "Cài đặt nén" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Cân bằng trắng" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "Khuếch đại RGB" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "Thá»i gian phÆ¡i bày" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "Chế độ chương trình phÆ¡i sáng" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "Số mÅ© phÆ¡i sáng (tốc độ phim ISO)" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "Sá»± bù khuynh hướng phÆ¡i sáng" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "Äá»™ trá»… trước khi chụp" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "Tương phản" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Phóng to số" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "Số khoảng thá»i gian" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "Khoảng thá»i gian" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "URL tải lên" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "Thông tin tác quyá»n" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "Kích cỡ ảnh mẫu đã há»— trợ" #: camlibs/ptp2/ptp.c:4136 #, fuzzy msgid "Enabled Streams" msgstr "Trạng thái không hợp lệ" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Äịnh dạng ngày" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Äá»™ phân giải phim" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "Chất lượng rạp hát" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Tương phản" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "Äá»™ sáng" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Äịnh dạng ngày" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "Äịnh dạng ghi Ngày/Giá»" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "Phim ra" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "Tiết kiệm Ä‘iện" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "Ngôn ngữ Ui" #: camlibs/ptp2/ptp.c:4169 msgid "Battery Type" msgstr "Kiểu pin" #: camlibs/ptp2/ptp.c:4170 msgid "Battery Mode" msgstr "Chế độ pin" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "Kiểu khóa UI" #: camlibs/ptp2/ptp.c:4172 msgid "Camera Mode" msgstr "Chế độ máy ảnh" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "Äịnh dạng tập tin xem đầy đủ" #: camlibs/ptp2/ptp.c:4176 msgid "Self Time" msgstr "Tá»± kẹn giá»" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 msgid "Shooting Mode" msgstr "Chế độ chụp" #: camlibs/ptp2/ptp.c:4180 msgid "Image Mode" msgstr "Chế độ ảnh" #: camlibs/ptp2/ptp.c:4187 msgid "Slow Shutter Setting" msgstr "Cài đặt chập chậm" #: camlibs/ptp2/ptp.c:4188 msgid "AF Mode" msgstr "Chế độ AF" #: camlibs/ptp2/ptp.c:4189 msgid "Image Stabilization" msgstr "Làm ổn định ảnh" #: camlibs/ptp2/ptp.c:4191 msgid "Color Gain" msgstr "Khuếch đại màu" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "Äá»™ nhạy" #: camlibs/ptp2/ptp.c:4194 msgid "Parameter Set" msgstr "Tham số đã đặt" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "AV mở" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "AV tối Ä‘a" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "Tiêu cá»± kính viá»…n vá»ng" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "Tiêu cá»± rá»™ng" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "Tiêu cá»± mẫu số" #: camlibs/ptp2/ptp.c:4207 msgid "Capture Transfer Mode" msgstr "Chế độ truyá»n chụp" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "Tiá»n tố tên" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "Chế độ chất lượng kích cỡ" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "Kích cỡ ảnh mẫu đã há»— trợ" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "Kích cỡ dữ liệu xuất ra máy ảnh" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "Kích cỡ dữ liệu nhập vào máy ảnh" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "Phiên bản API ở xa" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "Ngưá»i sở hữu máy ảnh" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "Giá» UNIX" #: camlibs/ptp2/ptp.c:4219 msgid "Camera Body ID" msgstr "Mã hiệu thân máy ảnh" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "Disp Av" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "Av Open Apex" #: camlibs/ptp2/ptp.c:4223 msgid "Digital Zoom Magnification" msgstr "Phóng to Ä‘iện số" #: camlibs/ptp2/ptp.c:4224 msgid "Ml Spot Position" msgstr "Vị trí chấm MI" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "Disp Av Max" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "Av Max Apex" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "Vị trí bắt đầu thu phóng EZoom" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "Cỡ kính viá»…n vá»ng EZoom" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "Äếm lần nháy đèn" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "Góc xoay" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "Cảnh xoay" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "Chế độ mô phá»ng dữ kiện" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "Kiểu chiếu ảnh" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "Cỡ tập tin trung bình" #: camlibs/ptp2/ptp.c:4239 msgid "Model ID" msgstr "Mã hiệu mô hình" #: camlibs/ptp2/ptp.c:4248 msgid "Shooting Bank" msgstr "Nhóm chụp" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "Tên nhóm chụp A" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "Tên nhóm chụp B" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "Tên nhóm chụp C" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "Tên nhóm chụp D" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "Äặt lại nhóm 0" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "Nhiệt độ màu cân bằng trắng" #: camlibs/ptp2/ptp.c:4278 msgid "White Balance Preset Number" msgstr "Số định sẵn cân bằng trắng" #: camlibs/ptp2/ptp.c:4280 msgid "White Balance Preset Name 0" msgstr "Tên định sẵn cân bằng trắng 0" #: camlibs/ptp2/ptp.c:4282 msgid "White Balance Preset Name 1" msgstr "Tên định sẵn cân bằng trắng 1" #: camlibs/ptp2/ptp.c:4284 msgid "White Balance Preset Name 2" msgstr "Tên định sẵn cân bằng trắng 2" #: camlibs/ptp2/ptp.c:4286 msgid "White Balance Preset Name 3" msgstr "Tên định sẵn cân bằng trắng 3" #: camlibs/ptp2/ptp.c:4288 msgid "White Balance Preset Name 4" msgstr "Tên định sẵn cân bằng trắng 4" #: camlibs/ptp2/ptp.c:4290 msgid "White Balance Preset Value 0" msgstr "Giá trị định sẵn cân bằng trắng 0" #: camlibs/ptp2/ptp.c:4292 msgid "White Balance Preset Value 1" msgstr "Giá trị định sẵn cân bằng trắng 1" #: camlibs/ptp2/ptp.c:4294 msgid "White Balance Preset Value 2" msgstr "Giá trị định sẵn cân bằng trắng 2" #: camlibs/ptp2/ptp.c:4296 msgid "White Balance Preset Value 3" msgstr "Giá trị định sẵn cân bằng trắng 3" #: camlibs/ptp2/ptp.c:4298 msgid "White Balance Preset Value 4" msgstr "Giá trị định sẵn cân bằng trắng 4" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "Tiêu cá»± ống kính (khác CPU)" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "Äá»™ mở tối Ä‘a cá»§a ống kính (khác CPU)" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "Tá»± động xén DX" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "Tên nhóm trình đơn A" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "Tên nhóm trình đơn B" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "Tên nhóm trình đơn C" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "Tên nhóm trình đơn D" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "Äặt lại nhóm trình đơn" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "AF dá»c đã bật" #: camlibs/ptp2/ptp.c:4360 msgid "Focus Area Zone" msgstr "Vùng lấy nét" #: camlibs/ptp2/ptp.c:4362 msgid "Enable Copyright" msgstr "Bật tác quyá»n" #: camlibs/ptp2/ptp.c:4366 msgid "Exposure ISO Step" msgstr "Bước ISO phÆ¡i sáng" #: camlibs/ptp2/ptp.c:4368 msgid "Exposure Step" msgstr "Bước phÆ¡i sáng" #: camlibs/ptp2/ptp.c:4370 msgid "Exposure Compensation (EV)" msgstr "Bù phÆ¡i sáng (EV)" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "Vùng nặng giữa" #: camlibs/ptp2/ptp.c:4376 msgid "Exposure Base Matrix" msgstr "Ma trận CÆ¡ bản PhÆ¡i sáng" #: camlibs/ptp2/ptp.c:4378 msgid "Exposure Base Center" msgstr "Trung tâm CÆ¡ bản PhÆ¡i sáng" #: camlibs/ptp2/ptp.c:4380 msgid "Exposure Base Spot" msgstr "Chấm CÆ¡ bản PhÆ¡i sáng" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "Xem trá»±c tiếp vùng AF" #: camlibs/ptp2/ptp.c:4390 msgid "Auto Meter Off Time" msgstr "Thá»i gian tá»± động tắt cái Ä‘o" #: camlibs/ptp2/ptp.c:4392 msgid "Self Timer Delay" msgstr "Trá»… tá»± kẹn giá»" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "Giá» cấu hình ảnh" #: camlibs/ptp2/ptp.c:4398 msgid "Auto Off Timers" msgstr "Giá» tá»± động tắt" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "Mức Góc" #: camlibs/ptp2/ptp.c:4402 msgid "Shooting Speed" msgstr "Tốc độ Chụp" #: camlibs/ptp2/ptp.c:4406 msgid "Exposure delay mode" msgstr "Chế độ phÆ¡i sáng trá»…" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 msgid "Long Exposure Noise Reduction" msgstr "Giảm nhiá»…u phÆ¡i sáng lâu" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "Chiếu sáng LCD" #: camlibs/ptp2/ptp.c:4418 msgid "High ISO noise reduction" msgstr "Giảm nhiá»…u ISO cao" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "Mẹo trên màn hình" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "Tên nghệ sÄ©" #: camlibs/ptp2/ptp.c:4424 msgid "Copyright Information" msgstr "Thông tin Tác quyá»n" #: camlibs/ptp2/ptp.c:4432 msgid "Modeling Flash" msgstr "Làm mẫu đèn nháy" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "Chế độ Bá»§a vây bằng tay" #: camlibs/ptp2/ptp.c:4440 msgid "Auto Bracket Selection" msgstr "Tá»± động Chá»n Bá»§a vây" #: camlibs/ptp2/ptp.c:4441 msgid "NIKON Auto Bracketing Set" msgstr "NIKON: Tá»± động Bá»§a vây" #: camlibs/ptp2/ptp.c:4443 msgid "Center Button Shooting Mode" msgstr "Chế độ chụp bằng nút giữa" #: camlibs/ptp2/ptp.c:4445 msgid "Center Button Playback Mode" msgstr "Chế độ phát lại bằng nút giữa" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "Bá»™ Ä‘a chá»n" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "Phát lại thông tin ảnh" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "Gán nút chức năng" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "Tùy chỉnh đĩa lệnh" #: camlibs/ptp2/ptp.c:4457 msgid "Aperture Setting" msgstr "Giá trị độ mở" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "Nút và Há»™p thoại" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "Không thẻ nhá»› CF bấm máy" #: camlibs/ptp2/ptp.c:4465 msgid "Center Button Zoom Ratio" msgstr "Tá»· lệ phóng to bằng nút giữa" #: camlibs/ptp2/ptp.c:4467 msgid "Function Button 2" msgstr "Nút chức năng 2" #: camlibs/ptp2/ptp.c:4471 msgid "Normal AF On" msgstr "AF chuẩn đã bật" #: camlibs/ptp2/ptp.c:4473 msgid "Clean Image Sensor" msgstr "Lau cảm biến ảnh" #: camlibs/ptp2/ptp.c:4475 msgid "Image Comment String" msgstr "Chuá»—i ghi chú ảnh" #: camlibs/ptp2/ptp.c:4477 msgid "Image Comment Enable" msgstr "Bật ghi chú ảnh" #: camlibs/ptp2/ptp.c:4479 msgid "Image Rotation" msgstr "Xoay ảnh" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "Äặt số ống kính bằng tay" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "Kích cỡ màn hình phim" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "Tiếng nói phim" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "Mic quay phim" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "Khe thẻ nhá»› Quay phim" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "Tắt theo dõi trá»…" #: camlibs/ptp2/ptp.c:4497 msgid "Bracketing Enable" msgstr "Bật Bá»§a vây" #: camlibs/ptp2/ptp.c:4499 msgid "Exposure Bracketing Step" msgstr "Bước PhÆ¡i sáng Bá»§a vây" #: camlibs/ptp2/ptp.c:4501 msgid "Exposure Bracketing Program" msgstr "Trình đặt PhÆ¡i sáng Bá»§a vây" #: camlibs/ptp2/ptp.c:4503 msgid "Auto Exposure Bracket Count" msgstr "Số lượng PhÆ¡i sáng Bá»§a vây Tá»± động" #: camlibs/ptp2/ptp.c:4504 msgid "White Balance Bracket Step" msgstr "Bước Bá»§a vây cân bằng trắng" #: camlibs/ptp2/ptp.c:4505 msgid "White Balance Bracket Program" msgstr "Trình Bá»§a vây cân bằng trắng" #: camlibs/ptp2/ptp.c:4507 msgid "Lens ID" msgstr "Mã số ống kính" #: camlibs/ptp2/ptp.c:4509 msgid "Lens Sort" msgstr "Sắp xếp á»ng kính" #: camlibs/ptp2/ptp.c:4511 msgid "Lens Type" msgstr "Kiểu ống kính" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "Tiêu cá»± nhá» nhất" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "Tiêu cá»± lá»›n nhất" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "Äá»™ mở cá»±c đại ở tiêu cá»± nhá» nhất" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "Äá»™ mở cá»±c đại ở tiêu cá»± lá»›n nhất" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "Hiển thị ISO Tìm" #: camlibs/ptp2/ptp.c:4523 msgid "Auto Off Photo" msgstr "Tá»± động tắt ảnh chụp" #: camlibs/ptp2/ptp.c:4525 msgid "Auto Off Menu" msgstr "Tá»± động tắt trình đơn" #: camlibs/ptp2/ptp.c:4527 msgid "Auto Off Info" msgstr "Tá»± động tắt thông tin" #: camlibs/ptp2/ptp.c:4529 msgid "Self Timer Shot Number" msgstr "Số tá»± hẹn giá» lần chụp" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "Äiá»u khiển làm má» nét ảnh" #: camlibs/ptp2/ptp.c:4537 msgid "Nikon Exposure Time" msgstr "Thá»i gian phÆ¡i sáng Nikon" #: camlibs/ptp2/ptp.c:4539 msgid "Warning Status" msgstr "Trạng thái Cảnh báo" #: camlibs/ptp2/ptp.c:4546 msgid "AF LCD Top Mode 2" msgstr "AF LCD Chế độ đầu 2" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "Máy nhạy AF hoạt động" #: camlibs/ptp2/ptp.c:4552 msgid "Exposure Meter" msgstr "Cái Ä‘o PhÆ¡i sáng" #: camlibs/ptp2/ptp.c:4556 msgid "USB Speed" msgstr "Tốc độ USB" #: camlibs/ptp2/ptp.c:4558 msgid "CCD Serial Number" msgstr "Số Sê-ri CCD" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "Loại PTN Nhóm" #: camlibs/ptp2/ptp.c:4564 msgid "FNumber Lock" msgstr "Khóa Số F" #: camlibs/ptp2/ptp.c:4566 msgid "Exposure Aperture Lock" msgstr "Khóa độ mở phÆ¡i sáng" #: camlibs/ptp2/ptp.c:4568 msgid "TV Lock Setting" msgstr "Cài đặt khóa TV" #: camlibs/ptp2/ptp.c:4570 msgid "AV Lock Setting" msgstr "Cài đặt khóa AV" #: camlibs/ptp2/ptp.c:4572 msgid "Illum Setting" msgstr "Cài đặt chiếu sáng" #: camlibs/ptp2/ptp.c:4574 msgid "Focus Point Bright" msgstr "Äiểm tiêu sáng" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "Äèn nháy ngoài bị gắn nối" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "Trạng thái đèn nháy ngoài" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "Sắp xếp đèn nháy ngoài" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 msgid "External Flash Mode" msgstr "Chế độ đèn nháy ngoài" #: camlibs/ptp2/ptp.c:4584 msgid "External Flash Compensation" msgstr "Bù đèn nháy ngoài" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "Hiệu ứng trám đầy ÄenTrắng" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "Äá»™ sắc ÄenTrắng" #: camlibs/ptp2/ptp.c:4604 msgid "BW Contrast" msgstr "Tương phản ÄenTrắng" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "Loại Cài đặt ÄenTrắng" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "Khe 2 chế độ Lưu" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "Chế độ bit thô" #: camlibs/ptp2/ptp.c:4614 msgid "Flourescent Type" msgstr "Loại huỳnh quang" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "Chỉnh nhiệt độ màu" #: camlibs/ptp2/ptp.c:4618 msgid "Tune Preset 0" msgstr "Chỉnh định sẵn 0" #: camlibs/ptp2/ptp.c:4620 msgid "Tune Preset 1" msgstr "Chỉnh định sẵn 1" #: camlibs/ptp2/ptp.c:4622 msgid "Tune Preset 2" msgstr "Chỉnh định sẵn 2" #: camlibs/ptp2/ptp.c:4624 msgid "Tune Preset 3" msgstr "Chỉnh định sẵn 3" #: camlibs/ptp2/ptp.c:4626 msgid "Tune Preset 4" msgstr "Chỉnh định sẵn 4" #: camlibs/ptp2/ptp.c:4630 msgid "Autofocus Mode" msgstr "Chế độ tá»± động lấy nét" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "Äèn giúp AF" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "Cài đặt ISO P/A/DVP tá»± động " #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "Hiển thị lưới kính ngắm" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "Äiện quản lý chế độ đèn nháy" #: camlibs/ptp2/ptp.c:4656 msgid "Auto FP" msgstr "Tá»± động FP" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "Hiển thị Cảnh báo" #: camlibs/ptp2/ptp.c:4662 msgid "Battery Cell Kind" msgstr "Loại bá»™ pin" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "Tá»± động giá»›i hạn cao ISO" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "Tốc độ Cao Liên tục" #: camlibs/ptp2/ptp.c:4670 msgid "Info Disp Setting" msgstr "Cài đặt Giải Thông tin" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "Nút Xem thá»­" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "Nút Xem thá»­ 2" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "Nút khóa AEAF 2" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "Hiển thị Chỉ báo" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "Ưu tiên kiểu pin" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "Khung bá»§a vây và Bước" #: camlibs/ptp2/ptp.c:4684 msgid "Live View Mode" msgstr "Chế độ xem trá»±c tiếp" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "Chế độ chạy xem trá»±c tiếp" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "Trạng thái xem trá»±c tiếp" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "Tá»· lệ phóng to ảnh xem trá»±c tiếp" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "Äiá»u kiện cấm xem trá»±c tiếp" #: camlibs/ptp2/ptp.c:4694 msgid "Exposure Display Status" msgstr "Trạng thái hiển thị phÆ¡i sáng" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "Trạng thái ngụ ý phÆ¡i sáng" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "Trạng thái phần hiển thị lá»—i" #: camlibs/ptp2/ptp.c:4700 msgid "Exposure Indicate Lightup" msgstr "Äèn ngụ ý phÆ¡i sáng" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "Giá trị MRepeat đèn nháy" #: camlibs/ptp2/ptp.c:4708 msgid "Flash MRepeat Count" msgstr "Äếm lần MRepeat đèn nháy" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "Khoảng MRepeat đèn nháy" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "Kích hoạt mục Ä‘iá»u khiển ảnh" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "Äổi mục Ä‘iá»u khiển ảnh" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "ISO" #: camlibs/ptp2/ptp.c:4749 msgid "Image Compression" msgstr "Nén ảnh" #: camlibs/ptp2/ptp.c:4758 msgid "Secure Time" msgstr "Thá»i gian bảo mật" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "Chứng nhận thiết bị" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "Thông tin há»§y bá»" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "Bên khác đồng bá»™ hóa" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "Tên thiết bị thân thiện" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "Mức âm lượng" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "Biểu tượng thiết bị" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "Thông tin khởi tạo phiên" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "Kiểu thiết bị đã thấy" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "Tốc độ phát lại" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "Äối tượng phát lại" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "Chỉ mục độ chứa phát lại" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "Vị trí phát lại" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "PlaysForSure ID" #: camlibs/ptp2/ptp.c:4782 msgid "Quality" msgstr "Chất lượng" #: camlibs/ptp2/ptp.c:4783 msgid "Release Mode" msgstr "Chế độ bấm máy" #: camlibs/ptp2/ptp.c:4784 msgid "Focus Areas" msgstr "Vùng lấy nét" #: camlibs/ptp2/ptp.c:4785 msgid "AE Lock" msgstr "Khóa AE" #: camlibs/ptp2/ptp.c:4797 msgid "Image size" msgstr "Cỡ ảnh" #: camlibs/ptp2/ptp.c:4798 msgid "Shutter speed" msgstr "Tốc độ màn trập" #: camlibs/ptp2/ptp.c:4799 msgid "Color temperature" msgstr "Nhiệt độ màu" #: camlibs/ptp2/ptp.c:4802 msgid "Expose Index" msgstr "Chỉ số phÆ¡i sáng" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "Bá»™ lá»c AB" #: camlibs/ptp2/ptp.c:4807 msgid "Still Image" msgstr "Ảnh Still" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "%.1f bước" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "%.0f mm" #: camlibs/ptp2/ptp.c:4940 msgid "JPEG Norm" msgstr "JPEG chuẩn" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "RAW + JPEG cÆ¡ bản" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Nóng sáng" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "VÄ© lệnh tá»± động (gần)" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "Trung bình nặng giữa" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "Äiểm giữa" #: camlibs/ptp2/ptp.c:4966 msgid "Automatic flash" msgstr "Tá»± động nháy đèn" #: camlibs/ptp2/ptp.c:4969 msgid "Automatic Red-eye Reduction" msgstr "Tá»± động giảm mắt Ä‘á»" #: camlibs/ptp2/ptp.c:4970 msgid "Red-eye fill flash" msgstr "Nháy đèn đầy mắt Ä‘á»" #: camlibs/ptp2/ptp.c:4988 msgid "Power Wind" msgstr "Máy quay" #: camlibs/ptp2/ptp.c:4994 msgid "Timer + Remote" msgstr "Hẹn giá» + Ä‘iá»u khiểm từ xa" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "Chỉ khóa AF" #: camlibs/ptp2/ptp.c:5056 msgid "Flash Lock" msgstr "Khóa đèn nháy" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "Äặt lại Ä‘iểm tiêu vá» tâm" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "Tô sáng Ä‘iểm tiêu hoạt động" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "Chưa dùng" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "SDRAM" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "USB 1.1" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "USB 2.0" #: camlibs/ptp2/ptp.c:5169 msgid "LCD Backlight" msgstr "Chiếu sáng mặt sau LCD" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "Chiếu sáng mặt sau LCD và Hiển thị thông tin" #: camlibs/ptp2/ptp.c:5228 msgid "1 min" msgstr "1 phút" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "5 phút" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "10 phút" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "15 phút" #: camlibs/ptp2/ptp.c:5266 msgid "Dark on light" msgstr "Tối trên sáng" #: camlibs/ptp2/ptp.c:5267 msgid "Light on dark" msgstr "Sáng trên tối" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "Iôn Lithi" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "Ni hyddrua" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "Ni Cd" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "Kiá»m Mn" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "Cảnh báo cấp 1" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "Khẩn cấp" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "Cảnh báo cấp 0" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "Ãt má»±c" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "Cá»±c tốt" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "Bá» mắt Ä‘á»" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "Äồng bá»™ hóa thấp tốc" #: camlibs/ptp2/ptp.c:5345 msgid "Auto + Red Eye Suppression" msgstr "Tá»± động, giảm mắt Ä‘á»" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "Bật, giảm mắt Ä‘á»" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "Xem xa" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "Cá»­a chập cao tốc" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "Cá»­a chập thấp tốc" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "Xem đêm" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "Mức xám" #: camlibs/ptp2/ptp.c:5370 msgid "Pan Focus" msgstr "Tiêu Ä‘iểm kéo ngang" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "Chụp khung đơn" #: camlibs/ptp2/ptp.c:5375 msgid "Continuous Shooting" msgstr "Chụp liên tiếp" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "Chụp hẹn giá» (đơn)" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "Chụp thấp tốc liên tục" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "Chụp cao tốc liên tiếp" # Literal: don't translate / NghÄ©a chữ: đừng dịch #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2×" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4×" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "Mịn" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "Äo nặng giữa" #: camlibs/ptp2/ptp.c:5386 msgid "Spot Metering" msgstr "Äo ít" #: camlibs/ptp2/ptp.c:5387 msgid "Average Metering" msgstr "Äo trung bình" #: camlibs/ptp2/ptp.c:5388 msgid "Evaluative Metering" msgstr "Äo đánh giá" #: camlibs/ptp2/ptp.c:5389 msgid "Partial Metering" msgstr "Äo bá»™ phạn" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "Äo trung bình nặng giữa" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "Äo ít cÅ©ng cÅ©ng khóa chuyển vá»›i khung AF" #: camlibs/ptp2/ptp.c:5392 msgid "Multi-Spot Metering" msgstr "Äo ít (nhiá»u Ä‘iểm)" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "Chức năng cá»­a chấp thấp cao không sẵn dùng" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "Thấp 2" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 msgid "High 2" msgstr "Cao 2" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "Trên 1" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "Trên 2" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "Tham số rá»­a phim ảnh tiêu chuẩn" #: camlibs/ptp2/ptp.c:5462 msgid "Development Parameters 1" msgstr "Tham số rá»­a phim ảnh 1" #: camlibs/ptp2/ptp.c:5463 msgid "Development Parameters 2" msgstr "Tham số rá»­a phim ảnh 2" #: camlibs/ptp2/ptp.c:5464 msgid "Development Parameters 3" msgstr "Tham số rá»­a phim ảnh 3" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "MlSpotPosCenter" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "MlSpotPosAfLink" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "Thẻ nhá»› ảnh/nhạc" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "Nhóm thẻ nhá»› ảnh/nhạc" #: camlibs/ptp2/ptp.c:5600 msgid "Encounter" msgstr "Encounter" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "Encounter Box" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "M4A" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "Firmware" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "Äịnh dạng ảnh Windows" #: camlibs/ptp2/ptp.c:5605 msgid "Undefined Audio" msgstr "Âm thanh chưa xác định" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "Audible.com Codec" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "Danh mục nhạc Samsung" #: camlibs/ptp2/ptp.c:5612 msgid "Undefined Video" msgstr "Phim chưa xác định" #: camlibs/ptp2/ptp.c:5617 msgid "Undefined Collection" msgstr "Tập hợp chưa xác định" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "Tập ảnh/nhạc Abstract" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "Tập ảnh Abstract" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "Tập nhạc Abstract" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "Tập phim Abstract" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "Danh mục ảnh/nhạc Abstract" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "Nhóm liên lạc Abstract" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "Thư mục tin nhắn Abstract" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "Sá»± Trình Bày Tập Abstract" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "Danh mục nhạc Abstract" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "Danh mục ảnh Abstract" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "Abstract Mediacast" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "Danh mục nhạc WPL" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "Danh mục nhạc M3U" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "Danh mục nhạc MPL" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "Danh mục nhạc ASX" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "Danh mục nhạc PLS" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "Tài liệu chưa xác định" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "Tài liệu Abstract" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "Tài liệu XML" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "Tài liệu Word cá»§a Microsoftâ„¢" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "Tài liệu HTML đã biên dịch MHT" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "Bảng tính Excel cá»§a Microsoftâ„¢ (.xls)" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "Trình diá»…n PowerPoint cá»§a Microsoftâ„¢ (.ppt)" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "Tin nhắn chưa xác định" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "Tin nhắn Abstract" #: camlibs/ptp2/ptp.c:5643 msgid "Undefined Contact" msgstr "Liên lạc chưa xác định" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "Liên lạc Abstract" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "vCard2" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "vCard3" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "Mục lịch chưa xác định" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "Mục lịch Abstract" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "vCalendar1" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "vCalendar2" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "Tập tin có khả năng thá»±c hiện Windows chưa xác định" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "Quảng bá ảnh/nhạc" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "Phần" #: camlibs/ptp2/ptp.c:5692 #, c-format msgid "Unknown(%04x)" msgstr "Không rõ (%04x)" #: camlibs/ptp2/ptp.c:5702 #, fuzzy msgid "Get device info" msgstr "lấy thông tin vá» thiết bị" #: camlibs/ptp2/ptp.c:5703 msgid "Open session" msgstr "Mở phiên chạy" #: camlibs/ptp2/ptp.c:5704 msgid "Close session" msgstr "Äóng phiên chạy" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "Lấy các mã hiệu cất giữ" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "Lấy thông tin cất giữ" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "Lấy số đối tượng" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "Lấy các móc đối tượng" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "Lấy thông tin vỠđối tượng" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "Lấy đối tượng" #: camlibs/ptp2/ptp.c:5711 msgid "Get thumbnail" msgstr "Lấy ảnh mẫu" #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "Xóa đối tượng" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "Gá»­i thông tin vỠđối tượng" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "Gá»­i đối tượng" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "Bắt đầu chụp" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "Äịnh dạng kho" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "Äặt lại thiết bị" #: camlibs/ptp2/ptp.c:5718 msgid "Self test device" msgstr "Tá»± thá»­ thiết bị" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "Äặt sá»± bảo vệ đối tượng" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "Tắt thiết bị" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "Lấy mô tả thuá»™c tính thiết bị" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "Lấy giá trị thuá»™c tính thiết bị" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "Äặt giá trị thuá»™c tính thiết bị" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "Äặt lại giá trị thuá»™c tính thiết bị" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "Kết thúc mở chụp" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "Chuyển đối tượng" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "Chép đối tượng" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "Lấy đối tượng bá»™ phạn" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "Khởi tạo chụp mở" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 #, fuzzy msgid "Get Vendor Extension Maps" msgstr "Phần mở rá»™ng nhà sản xuất" #: camlibs/ptp2/ptp.c:5735 #, fuzzy msgid "Get Vendor Device Info" msgstr "lấy thông tin vá» thiết bị" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 #, fuzzy msgid "Get Filesystem Manifest" msgstr "Hệ thống tập tin nhanh" #: camlibs/ptp2/ptp.c:5738 #, fuzzy msgid "Get Stream Info" msgstr "Lấy thông tin cất giữ" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "Lấy các thuá»™c tính đối tượng đã há»— trợ" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "Lấy mô tả thuá»™c tính đối tượng" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "Lấy giá trị thuá»™c tính đối tượng" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "Äặt giá trị thuá»™c tính đối tượng" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "Lấy danh sách thuá»™c tính đối tượng" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "Äặt danh sách thuá»™c tính đối tượng" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "Lấy mô tả thuá»™c tính phụ thuá»™c vào nhau" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "Gá»­i danh sách thuá»™c tính đối tượng" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "Lấy các tham chiếu đối tượng" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "Äặt các tham chiếu đối tượng" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "Cập nhật Firmware thiết bị" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "Nhảy tá»›i vị trí kế trong danh mục nhạc" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "Lấy yêu cầu giá» bảo mật" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "Lấy đáp ứng giá» bảo mật" #: camlibs/ptp2/ptp.c:5759 msgid "Set license response" msgstr "Äặt đáp ứng giấy phép" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "Lấy danh sách đồng bá»™" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "Gá»­i truy vấn yêu cầu cái Ä‘o" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "Lấy yêu cầu cái Ä‘o" #: camlibs/ptp2/ptp.c:5763 msgid "Get meter response" msgstr "Lấy đáp ứng cái Ä‘o" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "Xóa sạch kho dữ liệu" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "Lấy tình trạng giấy phép" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "Gá»­i lệnh WMDRM-PD" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "Gá»­i yêu cầu WMDRM-PD" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "Thông báo các mục đã Thêm/Xóa" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "Thông báo các mục đã giành được" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "Lấy các kiểu danh mục phát có thể truyá»n" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "Gá»­i yêu cầu ứng dụng WMDRM-PD" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "Lấy trả lá»i ứng dụng WMDRM-PD" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "Bật các thao tác tập tin đã tin cậy" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "Tắt các thao tác tập tin đã tin cậy" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "Kết thúc phiên chạy ứng dụng tin cậy" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "Mở phiên chạy ảnh/nhạc" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "Äóng buổi hợp ảnh/nhạc" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "Lấy khối dữ liệu kế" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "Äặt vị trí giá» hiện tại" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "Gá»­i yêu cầu đăng ký" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "Lấy đáp ứng đăng ký" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "Lấy yêu cầu trạng thái gần" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "Gá»­i đáp ứng trạng thái gần" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "Gá»­i yêu cầu giấy phép WMDRM-ND" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "Lấy đáp ứng giấy phép WMDRM-ND" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "Xá»­ lý đối tượng WFC" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "Lấy Äối tượng Riêng (64bit Offset)" #: camlibs/ptp2/ptp.c:5800 msgid "Send Partial Object" msgstr "Gá»­i Äối tượng Riêng" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "Xén ngắn Äối tượng" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "Bắt đầu Sá»­a Äối tượng" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "Kết thúc Sá»­a Äối tượng" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "Không hiểu %d" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "Phần mở rá»™ng nhà sản xuất" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "Äang tải vá» phim…" #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "Äang tải vỠâm thanh…" #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "Äang tải vá» dữ liệu EXIF…" #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "Không có dữ liệu EXIF sẵn sàng cho %s." #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "Không thể xóa tập tin." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "Không thể gỡ bá» thư mục." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "Không thể tạo thư mục." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "Phiên bản: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "Trạng thái RTC: %d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "Giá» máy ảnh: %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "Mã hiệu máy ảnh: %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "Không có thẻ nhá»› SD đã nạp.\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "Mã hiệu thẻ nhá»› SD: %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "Ảnh trên máy ảnh: %d\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "Bá»™ nhá»› SD: %d MB tổng, %d MB trống.\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "Bá»™ nhá»› ná»™i bá»™: %d MB tổng, %d MB trống.\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Thiết kế đối chiếu dùng USB Snoopy, xem lại\n" "ảnh cập nhật Firmware và Ä‘oán phóng túng.\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "dá»±a vào trình Ä‘iá»u khiển cá»§a Bob Paauwe.\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "không rõ (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Mô hình: %s\n" "Bá»™ nhá»›: %d byte trên %d có thể sá»­ dụng" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2,0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1,5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1,0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0,5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0.0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0,5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1.0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1.5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2.0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 × 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Ở ngoài" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Tối Ä‘a" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Tối thiểu" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Ký tá»±" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Âm thanh" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Ảnh và Âm thanh" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Ký tá»± và Âm thanh" # Literal: don't translate / NghÄ©a chữ: đừng dịch #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3×" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5×" # Literal: don't translate / NghÄ©a chữ: đừng dịch #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6×" # Literal: don't translate / NghÄ©a chữ: đừng dịch #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7×" # Literal: don't translate / NghÄ©a chữ: đừng dịch #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8×" # Literal: don't translate / NghÄ©a chữ: đừng dịch #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9×" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Cấu hình" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Chung" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Tác quyá»n (tối Ä‘a 20 ký tá»±)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "Ảnh" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Lá»›p trắng:" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Chế độ thu" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Nén" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "Không há»— trợ tốc độ %i!" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "Cần %i, còn nhận %i. Hãy thông báo lá»—i này cho %s." #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "Cần %i byte, còn nhận %i. Hãy thông báo lá»—i này cho %s." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "Cần 0x%x, còn nhận 0x%x. Hãy liên lạc vá»›i %s." #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "Ký tá»± sai (0x%x, 0x%x). Hãy liên lạc vá»›i %s." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "Máy ảnh Ä‘ang bận. Cứ gặp khó khăn này thì liên lạc vá»›i %s." #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "Quá thá»i ngay cả sau hai lần thá»­ lại. Hãy liên lạc vá»›i %s." #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "Lá»—i giao thông ngay cả sau hai lần thá»­ lại. Hãy liên lạc vá»›i %s." #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "Máy ảnh trong chế độ không đúng. Hãy liên lạc vá»›i %s." #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "Máy ảnh đã không chấp nhận các tham số. Hãy liên lạc vá»›i %s." #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "Gặp lá»—i không rõ. Hãy liên lạc vá»›i %s." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "Äá»™ dài cá»§a tên tập tin không thể vượt quá 12 ký tá»± (â€%s†có %i ký tá»±)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "Trình Ä‘iá»u khiển Samsung digimax 800k được tạo bởi James McKenzie " " cho phần má»m gphoto.\n" "Lutz Mueller đã chuyển nó sang gphoto2.\n" "Marcus Meissner đã sá»­a chữa và tăng cưá»ng bản chuyển." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Äá»™ phân giải cá»™ng vá»›i kích cỡ" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Ngày và giá» (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 msgid "Aperture Settings" msgstr "Cài đặt độ mở" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Chế độ màu" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Giảm mắt Ä‘á»" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Cài đặt đèn nháy" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "Tiết kiệm Ä‘iện máy chá»§ (giây)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Tiết kiệm Ä‘iện máy ảnh (giây)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Chế độ ống kính" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "Hàn" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "Anh" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "Pháp" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "Äức" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "Ã" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "Nhật" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "Tây Ban Nha" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "Bồ Äào Nha" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Cài đặt ảnh" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "Ghi chú vá» máy ảnh Epson:\n" " * má»™t số tham số không thể được Ä‘iá»u khiển từ xa:\n" " ‣ thu phóng\n" " ‣ lấy nét\n" " ‣ Cài đặt cân bằng trắng riêng\n" " * Cấu hình đã được thiết kế đối chiếu bằng máy PhotoPC 3000z.\n" "Nếu máy ảnh cá»§a bạn hoạt động khác, xin hãy gá»­i thư (tiếng Anh)\n" "cho há»™p thư chung nhà phát triển gphoto.\n" "\n" "(Ghi chú: bạn gặp khó khăn trong việc Ä‘á»c hay viết tiếng Anh\n" "thì gá»­i thư cho há»™p thư chung nhóm dịch tại TranslationProject\n" "(translation-team-vi@lists.sourceforge.net)\n" "và chúng tôi sẽ dịch cho bạn)\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Không có thẻ nhá»› nhá»›" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "Không thể lấy khả năng pin" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "Máy ảnh có pin quá yếu (%d%%) nên thao tác bị há»§y bá»." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Không thể lấy bá»™ nhá»› còn trống" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "Máy ảnh đã từ chối ba lần bảo tồn sá»± kết nối mở." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "Byte đầu tiên được nhận (0x%x) không phải hợp lệ." #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "Việc truyá»n gói tin đã quá thá»i, ngay cả sau %i lần thá»­ lại. Hãy liên lạc " "vá»›i %s." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Không thể gá»­i gói tin, ngay cả sau vài lần thá»­ lại." #: camlibs/sierra/library.c:789 #, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "Gói tin bị máy ảnh từ chối. Hãy liên lạc vá»›i %s." #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "Không thể gá»­i gói tin (mã lá»—i %i). Hãy liên lạc vá»›i %s." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "" "Tiến trình gá»­i đã quá thá»i, ngay cả sau hai lần thá»­ lại, nên chịu thua…" #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "Nhận được kết quả bất thưá»ng 0x%x. Hãy liên lạc vá»›i %s." #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "Nhận được trả lá»i bất thưá»ng (%i). Hãy liên lạc vá»›i %s." #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "Không thể lấy thanh ghi %i. Hãy liên lạc vá»›i %s." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "Quá nhiá»u lần thá»­ lại đã không thành công." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Äang gá»­i dữ liệu…" #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "hàm gá»i đệ qui không phải được trình Ä‘iá»u khiển sierra há»— trợ. Hãy liên lạc " "vá»›i %s." #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "Không thể lấy thanh ghi chuá»—i %i. Hãy liên lạc vá»›i %s." #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "Cần 32 byte, nhưng lại nhận được %i. Hãy liên lạc vá»›i %s." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "Tốc độ cá»§a chập theo micrô-giây (0 tá»± động)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "Tốc độ chập (theo giây)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "Äen/trắng" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Chống mắt Ä‘á»" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "Äồng bá»™ chậm" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "Tương phản+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Tương phản-" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "Äá»™ sáng+" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "Äá»™ sáng-" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Äiá»u chỉnh ảnh" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "Chá»›p" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "Chế độ LED" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "Vô hạn" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "Xem thá»­ ảnh mẫu" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "Kế tiếp" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "Kế trước" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Chế độ thao tác" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "Äá»™ sáng LCD" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "Tá»± động tắt LCD (giây)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "Nặng giữa" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "Ma trận" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Chấm AF" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Äo phÆ¡i sáng" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "Thu phóng (theo mili-mét)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "không có" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "Khóa AE" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "Mắt cá" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Rá»™ng" #: camlibs/sierra/nikon-desc.c:558 msgid "Misc exposure/lens settings" msgstr "Cài đặt phÆ¡i sáng/ống kính linh tinh" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Khóa tá»± động phÆ¡i sáng" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Máy ảnh Nikon Coolpix 880:\n" " Cấu hình máy ảnh:\n" "\n" " Khả năng thu phóng quang\n" "\tkhông chức năng đúng.\n" "\n" " Không phải tất cả các Cài đặt\n" "\tcấu hình có thể được Ä‘á»c hay viết\n" "\tcho đúng, thí dụ các Cài đặt ngôn ngữ,\n" "\tvà Cài đặt Ä‘iá»u chỉnh chính xác cân bằng trắng.\n" " \tHãy đặt máy ảnh trong chế độ “Mâ€\n" "\tđể đặt tốc độ cá»§a chập.\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Máy ảnh Nikon Coolpix 995:\n" "\tCấu hình máy ảnh cho máy ảnh này\n" "\tchưa hoàn tất, hãy liên lạc vá»›i\n" "\thá»™p thư chung nhà phát triển gphoto\n" "\t(tiếng Anh) nếu bạn muốn đóng góp\n" "\tcùng trình Ä‘iá»u khiển này.\n" "\n" " \tTiến trình tải xuống nên chạy được.\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "Bảng trắng" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "Bảng Ä‘en" #: camlibs/sierra/olympus-desc.c:489 msgid "Color or Function Mode" msgstr "Chế độ Màu hay Chức năng" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 msgid "Slow" msgstr "Chậm" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "Tô đầy chống mắt Ä‘á»" #: camlibs/sierra/olympus-desc.c:596 msgid "Fluorescent-1-home-6700K" msgstr "Fluorescent-1-home-6700K" #: camlibs/sierra/olympus-desc.c:597 msgid "Fluorescent-2-desk-5000K" msgstr "Fluorescent-2-desk-5000K" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "Fluorescent-3-office-4200K" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "Fluorescent-1-home-6700K" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "Fluorescent-2-desk-5000K" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "Fluorescent-3-office-4200K" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "Chạng vạng" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Màn hình" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "Chế độ LDC" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "ESP" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Thu/phóng số" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "Vị trí lấy nét" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Äịnh dạng thá»i gian" #: camlibs/sierra/olympus-desc.c:1147 msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Ghi chú vá» máy ảnh Olympus:\n" "\n" " 1. Cấu hình máy ảnh:\n" "\tGiá trị 0 sẽ đặt mặc định (tá»± động).\n" "\n" "(2) Máy ảnh Olympus C-3040Z\n" " (có lẽ cÅ©ng C-2040Z và má»™t số máy ảnh khác)\n" " có má»™t chế độ “USB PC Controlâ€.\n" " (Ä‘iá»u khiển bằng máy tính qua USB).\n" " Äể chuyển đổi sang chế độ này, mở máy ảnh,\n" " mở cá»­a truy cập thẻ nhá»› nhá»›, rồi ấn giữ cả hai\n" " cái nút trình đơn và LCD đến khi trình đơn Ä‘iá»u khiển\n" " máy ảnh xuất hiện. Äặt nó thành “ON†(bật).\n" "\n" "(3) Nếu bạn chuyển đổi đổi chế độ “LCD modeâ€\n" " sang “Monitor†(màn hình) hay “Normal†(chuẩn),\n" " đừng quên chuyển đổi nó vỠ“Off†(tắt) trước khi\n" " ngắt kết nối. Không thì bạn không thể sá»­ dụng\n" " các cái nút cá»§a máy ảnh. Gây ra tình trạng này\n" " thì bạn nên tái kết nối máy ảnh đến máy tính,\n" " rồi chuyển đổi LCD sang “Off†(tắt)." #: camlibs/sierra/olympus-desc.c:1166 msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Máy ảnh Olympus 750 Ultra Zoom:\n" "(1) Máy ảnh Olympus 750UZ\n" " có má»™t chế độ “USB PC Controlâ€.\n" " (Ä‘iá»u khiển bằng máy tính qua USB).\n" " Äể chuyển đổi sang chế độ này, mở máy ảnh,\n" " mở cá»­a truy cập thẻ nhá»› nhá»›, rồi ấn giữ cả hai\n" " cái nút “OK†và “quickview†(xem nhanh)\n" " đến khi trình đơn Ä‘iá»u khiển máy ảnh xuất hiện.\n" " Äặt nó thành “control mode†(chế độ Ä‘iá»u khiển).\n" "(2) Nếu bạn chuyển đổi đổi chế độ “LCD modeâ€\n" " sang “Monitor†(màn hình) hay “Normal†(chuẩn),\n" " đừng quên chuyển đổi nó vỠ“Off†(tắt) trước khi\n" " ngắt kết nối. Không thì bạn không thể sá»­ dụng\n" " các cái nút cá»§a máy ảnh. Gây ra tình trạng này\n" " thì bạn nên kết nối lại máy ảnh đến máy tính,\n" " rồi chuyển đổi LCD sang “Off†(tắt)." #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Trình Ä‘iá»u khiển sierra mặc định:\n" "\n" " Äây là trình Ä‘iá»u khiển sierra mặc định:\n" " nó nên có khả năng há»— trợ tiến trình tải xuống\n" " và duyệt các ảnh trên máy ảnh cá»§a bạn.\n" "\n" " Cấu hình cá»§a máy ảnh dá»±a vào máy ảnh\n" " Olympus 3040, và rất có thể không hoàn tất.\n" " Nếu bạn thẩm tra cấu hình này không hoàn tất\n" " cho máy ảnh riêng cá»§a bạn, hoặc có thể đóng góp\n" " mã nguồn để há»— trợ cấu hình hoàn tất, hãy liên lạc\n" " vá»›i há»™p thư chung nhà phát triển (tiếng Anh).\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "Tập tin cần tải lên có độ dài vô giá trị" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "Không đủ chá»— trên thẻ nhá»›" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Không thể lấy tên cá»§a thư mục chứa các ảnh" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "Chỉ há»— trợ khả năng tải lên thư mục “%sâ€" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Tốt nhất" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (không rõ)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "Tốc độ chập (micrô-giây, 0 là tá»± động)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Äen/Trắng" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "Bảng trắng" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Bảng Ä‘en" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "Äá»™ tương phản/sáng" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "Sáng+" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "Sáng-" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Cá»­a sổ ở mái nhà" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "Vô hạn/Mắt cá" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "Chế độ Ä‘o chấm" # Literal: don't translate / NghÄ©a chữ: đừng dịch #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1.6×" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2.5×" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "Tá»± động tắt (máy chá»§) theo giây" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "Bao lâu đến khi máy ảnh tá»± tắt khi được kết nối đến máy tính?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "Tá»± động tắt (trưá»ng) theo giây" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "Bao lâu đến khi máy ảnh tá»± tắt khi không được kết nối đến máy tính?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "Tá»± động tắt LCD (theo giây)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Cài đặt chụp" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 msgid "standard" msgstr "chuẩn" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "HyPict" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "màu" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "Ä‘en trắng" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "Ghi chú: không có thẻ nhá»›, má»™t số giá trị có thể không hợp lệ\n" #: camlibs/sierra/sierra.c:1948 #, c-format msgid "Camera Model: %s\n" msgstr "Mô hình máy ảnh: %s\n" #: camlibs/sierra/sierra.c:1957 #, c-format msgid "Serial Number: %s\n" msgstr "Số sản xuất: %s\n" #: camlibs/sierra/sierra.c:1960 #, c-format msgid "Software Rev.: %s\n" msgstr "Bản sá»­a đổi phần má»m: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, c-format msgid "Frames Taken: %i\n" msgstr "Khung đã chụp: %i\n" #: camlibs/sierra/sierra.c:1971 #, c-format msgid "Frames Left: %i\n" msgstr "Khung còn lại: %i\n" #: camlibs/sierra/sierra.c:1973 #, c-format msgid "Battery Life: %i\n" msgstr "Thá»i gian pin: %i\n" #: camlibs/sierra/sierra.c:1975 #, c-format msgid "Memory Left: %i bytes\n" msgstr "Bá»™ nhá»› còn lại: %i byte\n" #: camlibs/sierra/sierra.c:1980 #, c-format msgid "Date: %s" msgstr "Ngày: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "Không có sẵn sổ tay máy ảnh.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "Ghi chú vá» máy ảnh Epson:\n" " * má»™t số tham số không thể được Ä‘iá»u khiển từ xa:\n" " ‣ thu phóng\n" " ‣ lấy nét\n" " ‣ Cài đặt cân bằng trắng riêng\n" " * Cấu hình đã được thiết kế đối chiếu bằng máy PhotoPC 3000z.\n" "Nếu máy ảnh cá»§a bạn hoạt động khác, xin hãy gá»­i thư cho %s\n" "(bằng tiếng Anh).\n" "\n" "(Ghi chú: bạn gặp khó khăn trong việc Ä‘á»c hay viết tiếng Anh\n" "thì gá»­i thư cho há»™p thư chung cá»§a nhóm dịch tại TP\n" "(translation-team-vi@lists.sourceforge.net)\n" "và chúng tôi sẽ dịch cho bạn)\n" #: camlibs/sierra/sierra.c:2060 msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Ghi chú vá» máy ảnh Olympus (và máy ảnh khác?):\n" "\n" " 1. Cấu hình máy ảnh:\n" "\tGiá trị 0 sẽ đặt mặc định (tá»± động).\n" "\n" "(2) Máy ảnh Olympus C-3040Z\n" " (có lẽ cÅ©ng C-2040Z và má»™t số máy ảnh khác)\n" " có má»™t chế độ “USB PC Controlâ€.\n" " (Ä‘iá»u khiển bằng máy tính qua USB).\n" " Äể chuyển đổi sang chế độ này, mở máy ảnh,\n" " mở cá»­a truy cập thẻ nhá»›, rồi ấn giữ cả hai\n" " cái nút trình đơn và LCD đến khi trình đơn Ä‘iá»u khiển\n" " máy ảnh xuất hiện. Äặt nó thành “ON†(bật).\n" "\n" "(3) Nếu bạn chuyển đổi đổi chế độ “LCD modeâ€\n" " sang “Monitor†(màn hình) hay “Normal†(chuẩn),\n" " đừng quên chuyển đổi nó vỠ“Off†(tắt) trước khi\n" " ngắt kết nối. Không thì bạn không thể sá»­ dụng\n" " các cái nút cá»§a máy ảnh. Gây ra tình trạng này\n" " thì bạn nên tái kết nối máy ảnh đến máy tính,\n" " rồi chuyển đổi LCD sang “Off†(tắt)." #: camlibs/sierra/sierra.c:2087 msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "Thư viện sierra SPARClite\n" "Scott Fritzinger \n" "Khả năng há»— trợ các máy ảnh Ä‘iện số dá»±a vào sierra,\n" "gồm có Olympus, Nikon, Epson và Pentax.\n" "\n" "Cám Æ¡n Data Engines (www.dataengines.com)\n" "đã cho phép dùng sá»± thá»±c hiện há»— trợ\n" "Olympus C-3030Z cá»§a há» cho USB." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (không rõ)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Trình Ä‘iá»u khiển Sipix StyleCam Blink\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Không thể áp dụng Cài đặt USB" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "Trình Ä‘iá»u khiển để truy cập máy ảnh SiPix Web2." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket\n" "Lee Benfield \n" "Trình Ä‘iá»u khiển để truy cập máy ảnh Smal Ultrapocket, và các phiên bản OEM " "(slimshot)." #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Máy ảnh Sonix.\n" "Chứa %i ảnh.\n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" "Trình Ä‘iá»u khiển này há»— trợ má»™t số máy ảnh\n" "chứa con chíp Sonix sn9c2028.\n" "\n" "Há»— trợ những thao tác này:\n" " * ảnh mẫu cho giao diện đồ há»a\n" " * ảnh đầy đủ theo định dạng PPM\n" " * xóa má»i ảnh\n" " * xóa ảnh cuối cùng\n" "\t(có lẽ không hoạt động được trên má»i ảnh Sonix)\n" " * bắt ảnh sang máy ảnh (cÅ©ng vậy)\n" "\n" "Các khung phim được tải xuống máy ảnh\n" "dạng dãy ảnh chụp tÄ©nh hay dạng tập tin AVI,\n" "phụ thuá»™c vào mô hình máy ảnh.\n" "\n" "Ảnh mẫu cho AVI là ảnh chụp tÄ©nh\n" "được tạo từ khung đầu.\n" "\n" "Không thể xóa má»™t ảnh riêng lẻ\n" "nếu nó không phải là ảnh cuối cùng.\n" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "Thư viện máy ảnh Sonix\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "Há»— trợ máy ảnh Ä‘iện số Sony DSC-F1\n" "M. Adam Kendall \n" "\n" "Dá»±a vào diao diện dòng lệnh chotplay cá»§a\n" "Ken-ichi Hayashi\n" "\n" "Chuyển sang Gphoto2 bởi Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Thư viện gPhoto Sony DSC-F55/505\n" "\n" "Há»— trợ máy Sony MSAC-SR1 và Thanh Nhá»› dùng bởi máy DCR-PC100\n" "Tạo gốc bởi Mark Davies \n" "Chuyển sang Gphoto2 bởi Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "Bản sá»­a đổi Firmware: %8s\n" "Ảnh: %i\n" "Tổng bá»™ nhá»›: %ikB\n" "Bá»™ nhá»› còn trống: %ikB\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "Bản sá»­a đổi Firmware: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Trình Ä‘iá»u khiển Soundvision\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "Cá»°C NHANH:\n" " Tập tin: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM:\n" " Tập tin: %d\n" " Ảnh: %4d\n" " Phim: %4d\n" " Äã dùng: %8d\n" "Chá»— trống: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "Thư viện spca50x phiên bản v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" "Máy ảnh USB cá»§a bạn có bá»™ chíp Ä‘iá»u khiển cá»§a S&Q.\n" "Tổng số ảnh mà nó chứa là %i\n" "Má»™t số ảnh có thể là trích Ä‘oạn chứa vài khung.\n" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" "Äối vá»›i các máy ảnh chứa con chíp S&Q Technologies.\n" "\n" "Nên hoạt động được vá»›i gtkam.\n" "Các ảnh chụp được lưu theo định dạng PPM.\n" "\n" "Má»i máy ảnh S&Q đã biết có hai giá trị độ phân giải.\n" "Giá trị phụ thuá»™c vào mô hình máy ảnh.\n" "\n" "Má»™t số máy ảnh kiểu này cÅ©ng há»— trợ khả năng\n" "xóa má»i ảnh trên máy ảnh. Phần lá»›n không phải.\n" "\n" "Không há»— trợ khả năng tải dữ liệu lên máy ảnh.\n" "\n" "Chế độ nén ảnh chụp cá»§a nhiá»u máy ảnh S&Q được há»— trợ\n" "đến má»™t chừng má»±c nào đó.\n" "\n" "Trích Ä‘oạn phim trên máy ảnh được thấy dạng thư mục con.\n" "Gtkam sẽ tải xuống má»—i thư mục má»™t lần. Má»™t hình giác nhá»\n" "được hiển thị trước tên cá»§a máy ảnh thì ngụ ý trích Ä‘oạn\n" "Phim trên máy đó. Không thấy thư mục thì nhấn vào hình giác\n" "để làm cho thư mục xuất hiện. Nhấn vào thư mục riêng để vào nó\n" "và thấy các tập tin trong nó, hoặc để tải xuống các tập tin.\n" "Má»—i khung sẽ được tải xuống dạng ảnh chụp riêng, có tên đặc biệt\n" "ghi rõ trích Ä‘oạn gốc. Vì vậy bạn cÅ©ng có thể lưu trích Ä‘oạn trong\n" "các thư mục khác nhau.\n" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "Trình Ä‘iá»u khiển chung sq905\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "Khung ảnh USB cá»§a bạn có má»™t bá»™ chíp Ä‘iá»u khiển ST2005\n" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "Khung ảnh dá»±a vào ST2205 có sẵn vài bá»™ phân giải khác nhau.\n" "Trình Ä‘iá»u khiển gphoto dành cho thiết bị này cho phép bạn\n" "tải vá», tải lên và xóa bỠảnh từ khung ảnh." #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "Trình Ä‘iá»u khiển khung ảnh USB ST2205\n" "Hans de Goede \n" "Trình Ä‘iá»u khiển này cho phép bạn\n" "tải vá», tải lên và xóa bỠảnh từ khung ảnh." #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "Hướng" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "Trình Ä‘iá»u khiển cho các máy ảnh dùng bá»™ xá»­ lý STV0674 ASIC.\n" "Giao thức được thiết kế đối chiếu dùng SnoopyPro\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "PhÆ¡i sáng sai (rất có thể không đủ ánh sáng)" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "Thông tin vá» máy ảnh dá»±a vào STV0680:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Bản sá»­a đổi Firmware: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "Bản sá»­a đổi ASIC: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "Mã hiệu máy nhạy: %d.%d\n" #: camlibs/stv0680/library.c:562 #, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "Máy ảnh được cấu hình cho ánh sáng nhấp nháy theo %dHz.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Bá»™ nhá»› máy ảnh: %d Mbit.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "Máy ảnh há»— trợ ảnh mẫu.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "Máy ảnh há»— trợ phim.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "Máy ảnh có ảnh đơn sắc.\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "Máy ảnh có bá»™ nhá»›.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "Máy ảnh há»— trợ định dạng phim: " #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "Mã hiệu nhà sản xuất: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "Mã hiệu sản phẩm: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "Số lượng ảnh: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "Số ảnh tối Ä‘a: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Äá»™ rá»™ng ảnh: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "Äá»™ cao ảnh: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "Kích cỡ ảnh: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Äá»™ rá»™ng ảnh thu nhá»: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Äá»™ cao ảnh thu nhá»: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Kích cỡ ảnh thu nhá»: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Trình Ä‘iá»u khiển cho các máy ảnh dùng bá»™ xá»­ lý STV0680 ASIC.\n" "Giao thức được thiết kế đối chiếu dùng CommLite Beta 5\n" "Carsten Weinholz \n" "ÄÆ°á»£c mở rá»™ng cho máy Aiptek PenCam và các máy ảnh STM USB chế độ đôi khác." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Äang lấy thông tin vá» %i tập tin…" #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "Thư viện (Traveler) SX330z (và các máy ảnh kiểu Aldi khác).\n" "CÅ©ng nên hoạt động được vá»›i máy ảnh khác\n" "như Jenoptik, Skanhex và Maginon.\n" "\n" "Má»i bạn gá»­i báo cáo lá»—i và ghi chú.\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z chỉ dùng USB" #: camlibs/topfield/puppy.c:553 msgid "Driver Settings" msgstr "Cài đặt trình Ä‘iá»u khiển" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "Chế độ Tăng tốc" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Thư viện để tải xuống/lên tập tin từ má»™t Topfield PVR.\n" "Chuyển từ puppy © Peter Urbanec \n" #: camlibs/topfield/puppy.c:659 #, c-format msgid "Downloading %s..." msgstr "Äang tải vá» %s…" #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "Trình Ä‘iá»u khiển Toshiba pdr-m11.\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "Gặp lá»—i ná»™i bá»™ khi tìm các thư viện máy ảnh (tên đưá»ng dẫn quá dài ?)" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Äang nạp các trình Ä‘iá»u khiển máy ảnh từ “%sâ€â€¦" #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "Gặp lá»—i trong thư viện V/R (â€%sâ€): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Không dò thấy máy ảnh." #: libgphoto2/gphoto2-camera.c:750 #, c-format msgid "Could not detect any camera at port %s" msgstr "Không phát hiện ra máy ảnh nào trên cổng %s" #: libgphoto2/gphoto2-camera.c:774 msgid "You have to set the port prior to initialization of the camera." msgstr "Bạn cần phải đặt cổng trước khi khởi tạo máy ảnh." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Không thể nạp trình Ä‘iá»u khiển máy ảnh cần thiết “%s†(%s)." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "" "Trình Ä‘iá»u khiển máy ảnh “%s†còn thiếu chức năng khởi tạo máy ảnh " "(camera_init)." #: libgphoto2/gphoto2-camera.c:864 msgid "This camera does not provide any configuration options." msgstr "Máy ảnh này không cung cấp tùy chá»n cấu hình nào." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "Máy ảnh này không há»— trợ khả năng đặt tùy chá»n cấu hình." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Máy ảnh này không há»— trợ khả năng tóm tắt." #: libgphoto2/gphoto2-camera.c:960 msgid "This camera does not provide a manual." msgstr "Máy ảnh này không cung cấp sổ tay." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "Máy ảnh này không cung cấp thông tin vá» trình Ä‘iá»u khiển." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Máy ảnh này không thể chụp." #: libgphoto2/gphoto2-camera.c:1056 msgid "This camera can not trigger capture." msgstr "Máy ảnh này không có nút bấm chụp." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Máy ảnh này không thể ô xem thá»­ chụp." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "ÄÆ°á»ng dẫn “%s†không phải tuyệt đối." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "Bạn đã thá»­ xóa “%s†khá»i thư mục “%sâ€, nhưng mà hệ thống tập tin không há»— " "trợ khả năng xóa tập tin." #: libgphoto2/gphoto2-filesys.c:1259 #, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "Vẫn còn có thư mục con trong thư mục “%s/%s†bạn Ä‘ang thá»­ gỡ bá»." #: libgphoto2/gphoto2-filesys.c:1264 #, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "Vẫn còn có tập tin trong thư mục “%s/%s†bạn Ä‘ang thá»­ gỡ bá»." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Hệ thống tập tin này không há»— trợ khả năng tải lên tập tin." #: libgphoto2/gphoto2-filesys.c:1359 #, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "Thư mục “%s†chỉ chứa %i tập tin, còn bạn đã yêu cầu má»™t tập tin có số %i." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Không tìm thấy tập tin “%s†trong thư mục “%sâ€." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Không tìm thấy tập tin “%sâ€." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "Hệ thống tập tin này không há»— trợ khả năng lấy tập tin" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Không rõ kiểu tập tin %i." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "Hệ thống tập tin này không há»— trợ khả năng lấy thông tin vá» tập tin" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "Hệ thống tập tin này không há»— trợ khả năng đặt thông tin vá» tập tin" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "Không thể thay đổi thuá»™c tính tập tin chỉ Ä‘á»c như độ rá»™ng/cao." #: libgphoto2/gphoto2-filesys.c:2455 msgid "The filesystem doesn't support getting storage information" msgstr "Hệ thống tập tin này không há»— trợ khả năng lấy thông tin cất giữ" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Dữ liệu bị há»ng" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Tập tin đã có" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Không hiểu mô hình" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Không tìm thấy thư mục" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Không tìm thấy tập tin" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "Thư mục đã có" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "Äang xá»­ lý vào/ra" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "ÄÆ°á»ng dẫn không phải tuyệt đối" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Thao tác bị há»§y" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "Máy ảnh không thể chạy xong thao tác" #: libgphoto2/gphoto2-result.c:57 msgid "OS error in camera communication" msgstr "Lá»—i HÄH khi liên lạc vá»›i máy ảnh" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "Không đủ chá»— chứa trống" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Lá»—i thư viện máy ảnh không rõ" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Lá»—i không rõ" #~ msgid "Small Fine JPEG (S1 Fine)" #~ msgstr "JPEG Nhá» Äẹp (S1 Tốt)" #~ msgid "Small Normal JPEG (S1 Normal)" #~ msgstr "JPEG Nhá» Thưá»ng (S1 Thưá»ng)" #~ msgid "RAW + Small Fine JPEG (S1 Fine)" #~ msgstr "RAW + JPEG Nhá» Äẹp (S1 Tốt)" #~ msgid "mRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "mRAW + JPEG Nhá» Äẹp (S1 Tốt)" #~ msgid "sRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "sRAW + JPEG Nhá» Äẹp (S1 Tốt)" #~ msgid "RAW + Small Normal JPEG (S1 Normal)" #~ msgstr "RAW + JPEG Nhá» Thưá»ng (S1 Thưá»ng)" #~ msgid "mRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "mRAW + JPEG Nhá» Thưá»ng (S1 Thưá»ng)" #~ msgid "sRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "sRAW + JPEG Nhá» Thưá»ng (S1 Thưá»ng)" #~ msgid "Unknown (%04x)" #~ msgstr "Không rõ (%04x)" #~ msgid "Disabled" #~ msgstr "Äã tắt" #~ msgid "Canon EOS Trigger Capture failed to release: Perhaps no focus?" #~ msgstr "" #~ "Canon EOS Trigger Capture (Chụp) không nhả được: Có phải chưa lấy nét?" #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Perhaps no more memory on " #~ "card?" #~ msgstr "" #~ "Canon EOS Trigger Capture (Chụp) không nhả được: Có lẽ không đủ bá»™ nhá»› " #~ "trên thẻ?" #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Unknown error %d, please " #~ "report." #~ msgstr "" #~ "Canon EOS Trigger Capture (Chụp) không nhả được: Lá»—i không rõ %d, hãy " #~ "thông báo." #~ msgid "Deleting '%s' from folder '%s'..." #~ msgstr "Äang xóa “%s†khá»i thư mục “%sâ€â€¦" #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "Äang tải “%s†xuống thư mục “%sâ€â€¦" #~ msgid "CHDK Reboot" #~ msgstr "Khởi động lại CHDK" #~ msgid "PTP Error: bad parameter" #~ msgstr "PTP: lá»—i: tham số sai" #~ msgid "Canon Capture failed: 0x%04x" #~ msgstr "Canon Chụp gặp lá»—i: 0x%04x" #~ msgid "No event received, error %x." #~ msgstr "Chưa nhận dữ kiện, lá»—i %x." #~ msgid "Canon EOS Trigger Capture failed: 0x%x (result 0x%x)" #~ msgstr "Canon EOS Trigger Capture (Chụp) gặp lá»—i: 0x%x (kết quả 0x%x)" #~ msgid "PTP: Undefined Error" #~ msgstr "PTP: lá»—i không xác định" #~ msgid "PTP: OK!" #~ msgstr "PTP: OK." #~ msgid "PTP: General Error" #~ msgstr "PTP: lá»—i chung" #~ msgid "PTP: Session Not Open" #~ msgstr "PTP: phiên chạy chưa mở" #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP: mã hiệu giao dịch không hợp lệ" #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP: thao tác không được há»— trợ" #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP: tham số không được há»— trợ" #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP: chưa truyá»n xong" #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP: mã hiệu cất giữ không hợp lệ" #~ msgid "PTP: Invalid Object Handle" #~ msgstr "PTP: bá»™ quản lý đối tượng không hợp lệ" #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "PTP: cái đỡ thiết bị không được há»— trợ" #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP: mã định dạng đối tượng không hợp lệ" #~ msgid "PTP: Store Full" #~ msgstr "PTP: kho đầy" #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP: đối tượng bị bảo vệ chống ghi" #~ msgid "PTP: Store Read Only" #~ msgstr "PTP: kho chỉ Ä‘á»c" #~ msgid "PTP: Access Denied" #~ msgstr "PTP: truy cập bị từ chối" #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP: không có ảnh mẫu" #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP: Gặp lá»—i khi tá»± kiểm tra" #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP: Xóa từng phần" #~ msgid "PTP: Store Not Available" #~ msgstr "PTP: kho không sẵn sàng" #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "PTP: không há»— trợ khả năng xác định theo định dạng" #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP: không có thông tin đối tượng hợp lệ" #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP: định dạng mã không hợp lệ" #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "PTP: mã nhà sản xuất lạ" #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP: tiến trình chụp đã kết thúc" #~ msgid "PTP: Device Busy" #~ msgstr "PTP: thiết bị Ä‘ang bận" #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP: đối tượng cha không hợp lệ" #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP: định dạng cái đỡ thiết bị không hợp lệ" #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP: giá trị cái đỡ thiết bị không hợp lệ" #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP: tham số không hợp lệ" #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP: phiên chạy đã mở" #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP: giao dịch bị há»§y bá»" #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "PTP: không há»— trợ khả năng xác định đích" #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP: cần thiết tên tập tin EK" #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP: xung đột tên tập tin EK" #~ msgid "PTP: EK Filename Invalid" #~ msgstr "PTP: tên tập tin EK không hợp lệ" #~ msgid "PTP: I/O error" #~ msgstr "PTP: lá»—i V/R" #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP: lá»—i: tham số sai" #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP: lá»—i giao thức: cần dữ liệu" #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP: lá»—i giao thức: cần có đáp ứng" #~ msgid "Could not find any driver for '%s'" #~ msgstr "Không tìm thấy trình Ä‘iá»u khiển cho “%sâ€" #~ msgid "No additional information available." #~ msgstr "Không có thông tin thêm." #~ msgid "Movie Recording" #~ msgstr "Quay phim" #~ msgid "Unknown (some kind of error)" #~ msgstr "Không rõ (lá»—i kiểu nào)" #~ msgid "ISO Auto Time" #~ msgstr "Tá»± động giá» ISO" #~ msgid "%s is a file type for which no thumbnail is provided" #~ msgstr "%s là má»™t kiểu tập tin cho đó chưa có ảnh mẫu" #~ msgid "Unavailable" #~ msgstr "Không sẵn sàng" #~ msgid "" #~ "canon_usb_poll_interrupt_pipe: interrupt read failed after %i tries, " #~ "%6.3f sec \"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_pipe: hàm ngắt tiến trình Ä‘á»c đã thất bại sau %i " #~ "lần thá»­, %6.3f giây “%sâ€." #~ msgid "" #~ "canon_usb_poll_interrupt_multiple: interrupt read failed after %i tries, " #~ "\"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_multiple: hàm ngắt tiến trình Ä‘á»c đã thất bại " #~ "sau %i lần thá»­, “%sâ€." #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for thumbnail size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: độ dài giả 0x%04x cho gói tin kích cỡ ảnh mẫu." #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for full image size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: độ dài giả 0x%04x cho gói tin kích cỡ ảnh đầy " #~ "đủ." #~ msgid "canon_usb_capture_dialogue: secondary image descriptor received" #~ msgstr "canon_usb_capture_dialogue: nhận được bá»™ mô tả ảnh phụ." #~ msgid "canon_usb_capture_dialogue: first interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: hàm thứ nhất ngắt tiến trình Ä‘á»c không theo " #~ "thứ tá»± đúng." #~ msgid "canon_usb_capture_dialogue: second interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: hàm thứ hai ngắt tiến trình Ä‘á»c không theo " #~ "thứ tá»± đúng." #~ msgid "" #~ "canon_usb_capture_dialogue: photographic failure signaled, code = 0x%08x" #~ msgstr "" #~ "canon_usb_capture_dialogue: nhận tin hiệu vá» lá»—i chụp ảnh, mã = 0x%08x" #~ msgid "canon_usb_capture_dialogue: third EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: hàm thứ ba ngắt tiến trình Ä‘á»c EOS không theo " #~ "thứ tá»± đúng." #~ msgid "" #~ "canon_usb_capture_dialogue: fourth EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: hàm thứ tư ngắt tiến trình Ä‘á»c EOS không theo " #~ "thứ tá»± đúng." #~ msgid "canon_usb_dialogue: payload too big, won't fit into buffer (%i > %i)" #~ msgstr "" #~ "canon_usb_dialogue: trong tải quá lá»›n, không thể vừa bá»™ đệm (%i > %i)" #~ msgid "canon_usb_dialogue: expected 0x%x bytes, but camera reports 0x%x" #~ msgstr "canon_usb_dialogue: cần 0x%x byte, còn máy ảnh thông báo 0x%x" #~ msgid "On 1" #~ msgstr "Trên 1" #~ msgid "On 2" #~ msgstr "Trên 2" #~ msgid "Your camera does not support changing filenames." #~ msgstr "Máy ảnh cá»§a bạn không há»— trợ khả năng thay đổi tên tập tin." libgphoto2-2.5.9/po/uk.gmo0000644000175000001440000076331412623156275012305 00000000000000Þ•  I/ ü‘¸Â¹ÂÑÂæÂ÷Â# Ã0ÃJÃ#cÇÜðÃÃÃÜÃhîÃWÄjÄÄœÄ4·ÄìÄÅÅ(ÅFAňŜŬŠ´Å¿ÅÆÅÏÅîÅôÅúÅ ýÅb Æ;mƩƸÆÔÆïÆÇÅÇOÚÇ *É 4É?ÉDÉIÉNÉSÉWÉ]ÉaÉgÉ iÉsÉxÉ~É„ÉÉ¡É¥ÉªÉ®É³É¸É¿ÉÆÉÎÉÕÉÛÉãÉêÉðÉõÉûÉÊ ÊÊÊÊ$Ê*Ê2Ê9ÊJÊPÊUÊZÊ`ÊhÊoʀʅʉʑʘʞʣʫʲʸʽÊÂÊÈÊÐÊ×ÊÜÊàÊèÊïÊõÊúÊË ËË Ë%Ë*Ë.Ë 5Ë@Ë FËQËUËXË `ËkË oËzËË‚Ë…Ë‡ËŒË ’ËœË Ë¦Ë«Ë °Ë»Ë ¿ËÉËÍËÑË×ËÚË ÝËèËíËóË öË Ì ÌÌÌ Ì&Ì)Ì,Ì.Ì 4Ì>ÌDÌGÌJÌSÌYÌ `Ì jÌtÌzÌ~Ì „ÌŽÌÌ£Ì¦Ì©Ì¯Ì ´Ì¾Ì ÄÌÎÌÑÌÔÌÚÌÞÌáÌãÌéÌ îÌøÌûÌþÌÍ ÍÍÍ'Í8Í GÍQÍTÍ ]ÍhÍ‚Í Í ¯ÍºÍ ÂÍ ÏÍÙÍèÍÎ ÎÎ'Î6Î >Î IÎTÎgÎ ÎÎ ¤Î²Î ÁÎ ÎÎÚÎ ìÎ ùÎ Ï Ï Ï(Ï0Ï 6Ï CÏPÏUÏZÏmÏsÏxÏ‹ÏÏ•ÏžÏ§Ï ½ÏÊÏÏÏÒÏâÏéÏ™ñÏ­‹Ð9Ñ?ÑCÒXÒpÒŽÒ¥ÒÃÒÔÒëÒýÒÓ%Ó6ÓNÓhÓ}Ó •Ó¡Ó¼ÓÃÓÔÓæÓûÓ'Ô*Ô3Ô LÔWÔ.jÔ-™Ô ÇÔ ÓÔßÔðÔ9ùÔ3Õ<ÕMÕ_ÕpÕÕ”Õ§Õ ®Õ ºÕÇÕÚÕîÕ ÖÖ#Ö(Ö CÖQÖ hÖuÖÖ©ÖÂÖÊÖÚÖìÖ$õÖ×3×G×e× ‚× ×ž× ­×»×Ë×Ú×óרØ-ØBØWØlØ}Ø•Ø¤Ø µØ ¿ØÊØߨïØÿØÙ(6Ù_ÙoÙ ŠÙ˜Ù›Ù ¢Ù®Ù ¶ÙÃÙÓÙæÙîÙÚÚÚ Ú$Ú5Ú EÚ RÚ]Ú/eÚ+•Ú1ÁÚ'óÚ(ÛDÛaÛ ÛÜ Ü²ÜºÜ ÌÜoÚÜJÝ \Ý hÝ uÝ‚Ý*¡Ý#ÌÝðÝ öÝÞ ÞÞ"Þ+Þ3ÞEÞJÞ iÞ wÞ …Þ‘Þ ¡Þ ­Þ¹Þ¿ÞÇÞÌÞ ÓÞ àÞ îÞ úÞßß3ßJßaßxߊߦ߽ßÔßëßàà*à;àLàTà \à gà sàà “à Ÿà«à°à ÃàÍàÓà âàïàôà áá#á (á"4áWá[ádákázá‰ážá³áOÂáâ &â2â Qâ^âpâ âŒâ Ÿâ ­âºâÊâäâkã8pã#©ã8Íã9ä@äATä4–ä+Ëä(÷ä@ å aå‚å1žåÐåíå#æ&æCæ[æzæŽæ¡æ¸æÒæ'ææç'ç=>ç|ç ˜ç)¤ç$Îç>óç2è KèYènè€è4™è7Îè6éD=éE‚éÈéåéêê<êXêvê&ê¶êËêÚêÐòêÃë×ë÷ë!ì8ì @ìNì_ìrìì—ì²ìÐìÕìäìýìí $í1í(Jísí‡í£í¶íÒíîí îî&î6îNî ^îjî zî›î´îÌîåîìî ÿî ï%ï:ï Tï^ïpïyïˆïŽï—ï°ïËï Þïëïüï ðð'ð7ð?ðFð`ð fð qð |ðˆð —ð£ðµð ÌðÙðëð ñ ñ(ñ>ñTñ<jñ§ñÄñÖñ éñõñ ò"ò:ò Nò Yògò†ò›ò¹òÍòìò ó!ó7óLó^óró {ó …ó ó ›ó¥óÄóÓóéó:øó<3ôpôô¨ôÂô&Ýôõ õ<õZõyõ0˜õÉõåõ!ÿõ'!öIöhö>„öÃöÚö&öö/÷<M÷<Š÷Ç÷(á÷ ø&ø Bø*cø2Žø-Áø4ïø;$ù0`ù‘ù¦ùÅùáù5úù=0ú5nús¤úû5û&IûpûkyûEåû+üFü…cüUéü?ýFýZýsýŒý¥ý ½ýÈý Ìý Ùýçý þ þþ /þ=þ Qþÿ^þ^ÿgÿvÿÿ›ÿ¡ÿ¦ÿ×¶ÿŽ ¤²ÅÔíþ0I \h2w,ª.× #0 K YÓf :EGž²Òè ðü #L:µ‡H=ª†,1^ n € ” ­  Ö ê   * C R m  ‹ – ± Ï Ö  æ  ñ û    / A S d -t ¢ ¹ <Î  ( ? W q  ¬ ° ¶ ¾ Ç Ú ï  ÷  ,A ` j xƒ˜¨ÈÐÙßõ ( I']5… »ÆÚ í1ø:*4e-š ÈÕÞõ 2Mi‚˜³Çßñ+ DRasŠ› ± ¿Íã7KetŒ¨¼Ð æ ôÿ 5 V i v€ˆ™F©ðù   ,9,>kˆ˜ ¯¼ ÍÙèøU ^h_|Üï' 8CV [enN…Ôîÿ+39 ?Mj•²ÇÝó+DYo‚ž ¯ºÎå ù 7 AL ao~ ’¯ ÈÓæù  ( 1< KWl$~£´"Äçþ *6G`y ”  ®ÁÔçú ,E^y‘¨¾ Öãü&8J P[k {‡ – ¡¬» Ï Úçú #+%OuL…ÒÚfß¼F ‡$‹& ‘&ž&¾&Ó&â&ó& ' '*'1'F'Y' ^' i'u'‹'ž'°'À'Ù' á'î'( (!(@(X(r(!(²(Ò('ì()&):)M) c)n))‘)±)Ñ)ê)**-*G*`*p* * **½*Ö*æ*û*" +.+.C+ r+ }+‡+ +›+ª+»+ Ä+Ò+å+ô+ù+þ+,,),0,I, b,o,x,‰,œ,¹,ؾ,—-Q±-U.2Y.Œ.›.¢.².µ.Ñ.Õ.Þ.ð. // /&/+/ >/L/R/ p/~/ //²/Ç/ Ù/æ/ö/ 0 0 %030 C0P0_0s0 ‚00¡0¶0È0à0 ñ0ü0/ 1<1X1t1 …1 “11 ¤1±1Ã1Ê1Ó1å1÷1 2%2.C2)r3œ3°3Á3×3è3 414B4V4:j4*¥4Ð4Ø4ò45505"J5%m5“5®5É5æ56 "6.666¸6Ë6 Ð6Û6 ó6 ý6 777 47ÿB7 B8M9ÒÍ9^ :?ÿ:?;£T;gø;`<g<k<…< ¡<¯<Î<Ý<î< ÷<=; = I=S=4\=‘=—=§=¹=¾=Ñ=í=õ= > > )> 3>*=>h>> …> ‘>Ÿ>¯>Â>Ñ>ê> ??#?6?H?]?x?‡?¤?#µ?Ù? ß?ì?@#@?@ED@Š@£@ Á@Î@ å@AAAA)ASKSjS}SS–S¨S·SÌSâS#ýS!T>TFTZTkT‚T–TF®TõT U(U -U;UBU JUWUfUoU.…U´UÄU ÕUßU9èU"V8VOV+gV“V—VšV V¾VÂVGÉVYV(YY‚YY¶YÅYÛYäYM÷YEZTZ gZtZƒZ•Z©Z¹Z ÈZÔZÚZöZ[ [ +[9[ Y[z[ ‚[[ [¢[¦[ ©[¶[È[Û[ú[ \\:\ L\Z\r\Š\©\Ç\æ\]]0]G]b]{]”]œ]·]Ó]ï]^^.^C^^^'s^,›^È^å^ô^ _ _,_E_Y_ q_}_1ƒ` µ`¿`¬È`­uaå#bY dcd ld xd „d d9ždØdàd ñdþde&e :e GeTeiexeŽee¹e ÊeØeáeùe þeff*f:f LfZf jfuf~f „f f œf§f¹fËfÒfâfòfgg"g*g2g :g EgPgXgggxgŠg“g!­g Ïgðg h&h*?hjh„h—h ­hºhÊhÒháh÷h iii,ij HjCSj—jj¯jÍjßj3ûj*/kZkzk—k©k °k ¼kÈkÞkîkòk ll&lDl Vlclvl ˆl©l±l Ál Ël Õl ßl ìl ùlmm%m8m ImUmdm €m Žm˜m®mZÉm $n1n AnNnjn†n œn§n¹nÎnãnön‹o–’o)p/p >pLp[p$kppN–påpšëp®†qŽ5rüÄrÁs ÒsÝs ãsîs ös tt t )t4tStdt{t‹t œt §t µtÂtÒtætþtu!6uXunu„u Ÿu«u¼uÖu æuòuv v v#v6vMvivƒvœv³vÎvâvüvw*wDwZw pw zw „w Žw˜wžw¥w,¾wëw ñwüw x xx1xFx[x px~x x›x ±x¿xÈx Øxæx$y&y6y#Iy my{y ‘y^Ÿy þy z z z (z 5zCzYzizxzjˆz óz{{0{!P{r{{{{ {¥{ º{ Ä{ Ñ{ Û{zå{`|f|v|ˆ| |™|ž|£|ª|½|.Í}Âü~Á¿;„Q½„ …µ…ÌÒ…AŸ†:á†B‡;_‡?›‡7Û‡Nˆ7bˆ1šˆ3̈‰3‰/:‰j‰r‰H‰Ö‰ ݉ë‰ ð‰'þ‰&Š 9Š'GŠoŠwЀРжоŠZÓŠN.‹T}‹LÒ‹MŒAmŒ:¯ŒêŒ ýŒ +G N Z d!r”©¸Í(å'Ž 6ŽDŽHŽ QŽ\Ž`ŽcŽsŽ#„ލŽÄŽÛŽG÷ŽÙ?èì‘Lï‘b<’&Ÿ’,Æ’%ó’»“-Õ“9”)=”Mg”0µ”7æ”,•:K•7†•,¾•ë•3 –4>–=s–F±–Kø–JD—•›j%œ%œ¶œ$ÓœSøœRL&Ÿ7Æ:þ;9ž'už&žÄŸìT¡-A£ìo¥\¨u© ‘©›©±©Å© Ú© å©ñ© ªª%ª06ªgªmª…ª ”ª ¡ª­ª ¿ªʪӪ쪮ðªDŸ«ä«/ý«-¬JG¬9’¬̬ܬø¬ ­ ­ ,­ :­ H­V­_­ {­†­‰­›­ž­ ¡­­­ µ­ À­Ê­Ò­ Ú­ ä­ ï­ù­ ®!®6®H®[®m®„®”® ±® ½®È® Ю󨑨 ¯¯%¯;¯ S¯a¯ t¯‚¯•¯¨¯½¯ Ó¯á¯ò¯°°A-°Do°´°»° Ò°-ݰ ±±0± E±R±Z±b±y±ˆ±—±¦±!·±"Ù±ü± ² ²(² 7² B² L²V²f²~²š²«²±² ò в Þ² ê² õ² ³ ³ ³ %³2³ L³W³g³w³‡³e–³ü³6´9´ >´L´h´„´ ´¼´Ø´õ´µ .µOµkµ‡µ£µ¿µÛµ÷µ¶1¶N¶k¶ ˆ¶ ”¶ ¢¶ ®¶ º¶Ƕݶó¶··.· 3·@· U·c·i·3y· ­· ¹·Ä·Ó·l×·?D¸-„¸<²¸h︃X¹nܹ6KºJ‚ºHͺ+»,B»`o»лã»ù» ¼¼6¼N¼f¼~¼–¼›¼±¼ ļ Ѽ Þ¼ ë¼ ø¼ ½ ½r½‘½–½±½ ¹½ǽ-̽ú½N¾Q]¾K¯¾Lû¾PH¿?™¿?Ù¿DÀ@^ÀIŸÀ?éÀ<)ÁQfÁN¸ÁVÂV^ÂXµÂXÃGgÃa¯Ã8ÄIJĔĚĭÄÉÄÜÄ äÄïÄ÷Ä’üÄïÆÇŽÇÓ¡Ç7uÈ­È ²È¿È ÈÈÓÈ=äÈ?"ÉbÉtÉ }É‹ÉɢɹÉÒÉêÉÊÊ4ÊIÊNÊbÊgÊnÊ€Ê„Ê‡Ê  ÊG«Ê1óÊ6%Ë(\Ë*…Ë°ËµË ¾Ë ÈË ÒËÜËâËJéË4ÌHÌ[ÌoÌt̤̼̋ÌÖÌíÌÍ ÍÍ)Í-Î;?Î<{θΠÁÎËÎÞÎ"çÎ ÏÏ+Ï<ÏUÏ mÏ xσϊÏN‘ÏàÏ%þÑ$Ò(DÒ,mÒ?šÒ8ÚÒ;Ó8OÓˆÓ5¨ÓÞÓ'öÓÔ–8Ô&ÏÔ(öÔFÕFfÕ[­Õ" Ö,Ö6@Ö,wÖx¤Ö#×A×\×d×x××;Š×Æ×Î×Ô×××¥í×c“Ø÷Ø1Ù'AÙiÙˆÙu¨Ù·ÛÖÝ éÝôÝùÝþÝÞÞ ÞÞÞÞ Þ5Þ <ÞFÞWÞ#hÞŒÞÞ—Þ›Þ¢Þ§Þ°Þ ¹ÞÃÞÌÞ ÔÞÞÞçÞïÞôÞ üÞßßß ß&ß/ß 7ßAßJßaßißpßuß }߇ßß§ß®ß ²ß¼ßÅßÍß ÔßÞßçßïßößûß à ààà !à+à4à<à CàNà^ànàvà†à‹à ‘à œà§à ¯àºàÀàÃàÓàãàéàùàþàááá áá*á.á5á<áAáQá Wáeáiáoáuázá}á”á ›á¥á¨á¸áÈáÎáÔá%Øáþáââ ââ#â)â.â1â BâLâ[âjâyââ…â ‹â™â¬â²â·â ºâÄâËâÚâ ââìâñâ ôâþâãã ããã'ã,ã /ã 9ãFãIãOã`ãqã€ãã ªãËãLåãL2ää–ä«ä Ãäää1üäE.å1tå ¦å ÇåÓå%èåæ)æ(Dæ/mææ(¹æâæ"ç1$çVç"lç1çÁç"Ûç"þç!è;èKè"aè"„è§è¬è.±èàèæè.ëèéé$é4éFé'`éˆé‘é(”é#½é8áé ê†(ë¯ì µì4ÁîKöîPBï4“ï7Èï%ð2&ð'Yð6ð3¸ð-ìð6ñ@Qñ-’ñEÀñòY òzò"ò¤ò$Àòåò'üò$óB-ópó!‹óI­ó;÷ó3ô$Iô9nô ¨ôO¶ôõ%õ%?õ!eõ‡õŸõ¹õÓõèõ-ö03ö0döM•öãö÷÷F#÷j÷.…÷´÷3Ò÷Qø/Xø ˆø-”ø+Âø-îøSù6pùW§ùEÿùSEú,™ú#Æú)êú!û)6û)`û8Šû*Ãû2îû?!üaü~ü›ü¸ü:Õü)ý.:ýiý€ý,ý%½ý,ãý?þ8Pþ~‰þ%ÿ9.ÿhÿ€ÿ#ƒÿ8§ÿ8àÿ6P n* %Ëñ÷ü$A`v‘N®nýglYÔ^.@HÎT9l0¦×!ì(Ü7/(D!mU­ICM‘š ³À(Ú ! 5A w Dˆ Í ã ù  % ; Q b  s  ~ ‰ Ÿ !¹ Û î  . N n %Ž '´ Ü ü  < \ )| )¦ #Ð ô   5 K %a ‡ ž  µ < ÿ  *$#Os‚Ÿ"±ÔÙ2ë "/D>b%¡0Çød'|!¤BÆ# (-(V"+¢3Î%)(3RI†ðÐÁFCWŠ^â+A˜m[ˆHä-:¾_ù^Y5¸HîM7A…4ÇAü%>+d/,À>íg,A”=Ö~g“û_ZubÐ13e)€ªCÉ… “u ›‰ æ%!G "YT"[®"` #Tk#VÀ#)$GA$‰$¦$3¿$ó$!ù%<&AX&Tš& ï&%ü&"',B'o'E…';Ë'@( H(U(@l(6­(0ä(-)2C)Uv)-Ì)=ú)>8*Cw*9»*9õ*/+"O+%r+,˜+%Å+ë+% ,O1,:,.¼,:ë,&-":-]-Z}- Ø-7ù- 1.<.U.1n. .©.:².Gí.25/h/&†/­/Ç/!á/0!0 A0*N0 y0#„0¨0Â0#Ü01) 1)J1t1)”17¾1>ö152J2i2ˆ2]§2,323J3j3%}3£3.À3+ï3424DL4=‘4DÏ4%5I:5M„54Ò596=A606,°6Ý6ø6 77<7=Z79˜79Ò7 8d*8h8Aø8?:95z9<°9Ní9<<:Fy:DÀ:>;DD;V‰;1à;D<9W<E‘<7×<4=eD=.ª=*Ù=N>VS>bª>l ?/z?Hª?Mó?>A@Y€@OÚ@Y*AR„A_×A€7B[¸B*C7?C4wCD¬CqñCfcDcÊDÅ.E4ôE$)F[NFªFq½FI/G?yG?¹GùG¢I µI2ÀI1óI1%J1WJ(‰J²JÅJÉJ ÛJüJK.K0DKuKŠK£KɾK ˆM•M²M5ÊMNN(NA@N?‚QÂQÓQ/ðQ R!8RZR2qR2¤R2×R% S0SNShlSfÕS.W*yW4¤WKÙW%X)>XhX'~XަXD5YzZÿ‰\z‰]__:_%W_ }_ ž_ ¿_-à_,`";`*^`‰`c¥`Y acac{aYßa9b#Hb3lb0 cÑcàc3d*4d&_d&†d%­d-Ódne;pe,¬e\ÙeO6f7†f7¾f?öfA6g=xg¶gºg.Àgïg5þg'4h\hxh ’hŸh »hCÆh= i<Hi …i ii*²i3ÝiSjejzjj.œj,Ëj-øjU&k7|kI´k‹þkŠl'l&Ål ìlZ÷l‚RmvÕmULn!¢nÄn<Ùn0o4Go0|o%­o<Óo4p+Ep0qp4¢p.×p%q?,q>lq6«q)âq' r4r,Tr%r:§rârs+s:Hs0ƒs0´s4ås\twtM—t6åt0u,Mu.zu+©uÕu íuúuýuvv vv|vv!¬vÎvæv)þv%(w®Nwýwxx-x–ŠGÕŠ‹4=‹6r‹4©‹;Þ‹,Œ GŒ%RŒ%xŒ.žŒ%ÍŒóŒ+3#_.ƒ!²#Ô6ø0/Ž%`Ž!†ŽR¨ŽHûŽ&Dk û¸ ÆÓΖ¢œ"µœXØœ1!J"l&¶Óí.žA1ž sž€ž žM¾ž' Ÿ)4Ÿ'^Ÿ †Ÿ§Ÿ!¸Ÿ)ÚŸ 7 ZM 6¨ Aß N!¡,p¡A¡Iß¡E)¢.o¢2ž¢8Ñ¢3 £>£8[£8”£OÍ£>¤D\¤F¡¤4è¤/¥9M¥=‡¥Å¥7ä¥2¦%O¦nu¦.ä¦ §/4§d§>‚§(Á§]ê§H¨^¨t¨ƒ¨Ÿ¨$µ¨Ú¨é¨)©0©P©a© r©©&™©À©,Ï©,ü©)ª 8ª!Cª-eªI“ªݪtðªwe¬§Ý¬¬…­^2®'‘®¹®?Õ®¯,¯E¯ I¯8V¯8¯ȯ%߯ °°*)°%T°z°C°"Ó°+ö°*"±=M±7‹±'ñ!ë±$ ²;2²$n²“²!³²#Õ²ù²'³4A³'v³!ž³-À³0î³&´9F´&€´!§´&É´að´@RµH“µ&ܵ6¶:¶I¶!^¶#€¶¤¶¼¶/×¶'·./·^·Cs·E··Gý¹1Eº1wº:©ºäº:þº 9»IZ»&¤»&Ë»hò»R[¼®¼>½¼ü¼/½8L½C…½XɽS"¾Av¾8¸¾Kñ¾E=¿Kƒ¿1Ï¿ÀÄÀÛÀóÀøÀ& Á3ÁMÁeÁ}ÁHŽÁ×Á©ôÁïžÃØŽÅ&gÆ™ŽÇG(ÈpÈЊÈž[ÉúÉ Ê0Ê=BÊ,€ÊH­Ê&öÊ.ËLËiˇËQœË îËûË<ÌAÌ-PÌ&~Ì ¥Ì/°Ì<àÌ,ÍHJ͓ͰÍÍÍêÍ[Î*aÎ ŒÎ™Î ³Î*ÔÎ$ÿÎ$$Ï;IÏ1…Ï·Ï7ÏÏ%Ð-Ð!GÐ-iЗÐ%¬ÐÒÐOåÐ5ÑHÑ5_Ñ6•Ñ:ÌÑÒMÒFlÒF³ÒúÒ%Ó>>Ó}ÓÓ £Ó°Ó&ÉÓðÓÿÓ9Ô'QÔyÔ!ˆÔªÔ-ÈÔGöÔU>Õ”Õ–Õ'œÕÄÕÈÕàÕ9ðÕ*Ö'=Ö eÖqÖ wÖ‚Ö •Ö¢Ö±Ö*ÉÖ(ôÖD×b×z×f×Ð÷×ÈØ'רiÿØOiÙM¹Ù6Ú>ÚOWÚM§ÚõÚUÛAkÛ ­Û¸ÛÉÛèÛ÷Û0ÜDÜWÜjÜ/}Ü­ÜÉÜ(çÜÝ#.Ý4R݇Ý-¢Ý6ÐÝ#Þ#+Þ#OÞ#sÞ$—ÞS¼Þ>ßOß'iß5‘ßÇß!Øß:úß5àQà4qà¦àÄà6ÛàÉá'ÜáBâBGâŠâ&©âÐâàâ'ðâtããœãÉ®ãDxäá½äŸå¼å%Ôå%úå æ/æ4>æsæ‡æ"¤æÇæÐæ'ìæç7,ç!dç†ç+¢ç0Îç+ÿç.+èZèsè8ŒèÅèáè6ùè0é?GéC‡é\ËéE(ê<nê«ê-Éêî÷êæë ûëììì#6ìZìtì.yìk¨ì|í‘í8«íäíöíîî)îAîXîkî%‹î±îËîçîýîï1ïKïkï…ïM¢ïnðñ!_óó¡ó[ºóôQ˜ô5êôL õPmõY¾õö'ö1Eö;wö$³ö,Øö3÷9÷6O÷,†÷E³÷)ù÷<#ø:`øW›ø#óø9ù$Qù+vù¢ù;ÂùþùOŽúIÞú (û3ûGûZû*nû+™ûÅû2ÖûB üLü)]ü‡üšüˆ°ü*9ý)dý*ŽýU¹ýþ þ %þD0þ uþ€þµ‰þ#?ªc FP`"±<Ô%'›M'é+G1_#‘!µ+×4!V/r¢$ºEßF%l~'™ÁÄÈ'Í*õ, *M +x %¤ KÊ % 6< #s 2— QÊ < @Y ?š -Ú ; FD H‹ 'Ô Oü L 6T 4‹ 4À 'õ !5?/u(¥&ÎHõB>+)­'×1ÿ1+F#r0–Ç}ØRV)©ÓèäëÍ:¹aôVgz ‰ÀJ']&…%¬&Ò#ù4RGe­7Äü8'U}7²ê "87"p)“%½ãö##6Zz2–*É ô4464k4 4Õ 4#I'm•8¦:ß6 Q <f R£ Gö 0>!@o!7°!pè!Y""u"˜"·" Ñ" ò"ÿ"H#8h#¡#·#»#×#÷#3$,I$5v$.¬$7Û$0%D%J%S%l%~%#œ%@À%&&a3&•&#¤&HÈ&#'H5'[~'BÚ'9(:W(!’( ´(¿(×(ï(2)B);S)0)0À)Uñ)AG*0‰*Bº*Aý*U?+ •+# +Ä+Û+ò+# ,'-,U,-m,›,'°,:Ø,-$3--X-†-—-;¬-Kè-§4.Ü. ö./G7/D/&Ä/%ë/>07P00ˆ0)¹0(ã0¦ 1ë³1 Ÿ2¬2Æ2æ23?3X3y^3Ø3Þ3‡í4Ùu6O7+Ñ8ý8 99 59B9\9v9–9¬9=¿90ý97.:f:-‚:°:Ã:Ü:0ô:3%;CY;;;JÙ;/$<*T<&<C¦<ê<: =FD=‹=ª=¿= Ù=ä=> >3>>0r>7£>HÛ>8$?^]??¼?Mü?AJ@HŒ@JÕ@/ A8PA!‰A!«A!ÍA!ïA BB*%B[PB ¬B%·BÝBìBýB*C*FC*qC*œCÇC!áCD*D4JDD!’D!´D7ÖDTE#cE.‡EZ¶E!F03FdFuwF íFúFG6GPG,hG'•G½G+ÛGHr%H!˜H&ºHDáHB&I[iIÅI(ÝI$J+J4j"¡j%Äj+êj3k'Jk rk}k˜k°kCÊk8lGl)`l)ŠlN´llm pm‘m •m  m«m¯m"Æm#émC n:Qn8Œn;Ån{oƒ}oMq/Ors©ÿsC©tIítC7uæ{u`bvnÃva2wˆ”wZxmxxUæx“¾‰™ý‰b—Œ®ú©“õ­—¿£œ6cžšž$­ž$Òž$÷žŸ0ŸFŸ_Ÿ5yŸ.¯ŸPÞŸ / "< 4_ ” ¬ àã ý K¡ _¡ìj¡LW¢3¤¢GØ¢+ £wL£GÄ£ ¤?+¤>k¤#ª¤#Τ#ò¤#¥#:¥!^¥2€¥³¥É¥"Ì¥ï¥ò¥õ¥)¦ =¦ H¦T¦\¦d¦{¦•¦)­¦6צ'§'6§)^§/ˆ§1¸§#ê§@¨ O¨[¨m¨~¨”¨G´¨ü¨ ©(=©1f©˜©"¶©!Ù©&û©&"ª(Iª6rª©ªÀª,Úª«/%«yU«…Ï«%U¬:{¬¶¬OѬ&!­4H­2}­°­ Ì­ ×­>â­/!®/Q®/®'±®5Ù®Q¯ a¯‚¯‘¯0£¯Ô¯é¯ÿ¯°;5°<q°-®° ܰ%é°± '±5± D± R±]±m± ±'‹±,³±à±!ø±'²'B²!j²‰Œ²³N³ n³{³A•³A׳A´A[´A´Jß´7*µ/bµ2’µ9ŵ9ÿµ99¶9s¶9­¶3ç¶;·;W·;“·;Ï·; ¸G¸[¸u¸‰¸£¸4½¸4ò¸'¹E¹kc¹Ϲ'ê¹'º/:º jº uºq–º»»0»M»¡T»fö»Y]¼T·¼Õ ½â½Gé¾g1Àx™À…Ág˜Áh§iÂ2Ã8DÃ2}ÃC°Ã@ôÃ@5Ä@vÄ@·Ä;øÄ4Å.CÅrÅÅ©ÅÂÅÛÅôÅ' Æ5ÆœOÆìÆFõÆ<ÇQÇ gÇ{tÇ"ðljȆȇ$ɬÉ,ÊFºÊ\Ë^ËiîË’XÌ‚ëÌ]nÍxÌÍ~E΋ÄÎŒPÏ€ÝÏ‹^Ð|êЯgÑ@Ò~XÒ ×ÒâÒ=Ó1@ÓrÓ ƒÓŽÓ £Ój°Ó@Ö\×2s×b¦×7 ÙAÙ$FÙkقٕÙa³ÙcÚ1yÚ«Ú½Ú2ÔÚÛ/ Û-<Û1jÛ/œÛ3ÌÛ1Ü42ÜgÜ0pÜ ¡Ü¬Ü½Ü×Ü àÜPëÜ<ÝyQÝHËÝ`ÞJuÞWÀÞß#/ßSßmßŒß«ß ºß‰ÅßCOàE“à;Ùàá/á-Já1xá/ªá3Úá)â8â=âSâkiâÕãJôãK?ä‹ä¢ä¼ä×äZõäPå-hå–å9°å;êå &æ 1æ<æCæJæZ i%Ÿ–`?’WíÝ,'e\de‡³'›$P áºß’M{ö8C·8‡è£ ïÀªÝj•¾ÕÁ{G–àäÞÖ•e#Xp|@ÿ®¬÷} ,¥-Ê/!zÖuTÀy-û‘¥ï|Ô­ñ¸h|†Ðf¿ÿ'¬{Ø]¤Xõ¦;h²æ /ï¡ñiÐ׆Ýo¶!nØ2ÈQÞ¨*d3YÞj›*âÐÑ9!14…á5«_ÇvÕ5ê/: MÍÙôû8˜ATNˆ"ÙCÇ„¶â¢²˜¥¼m…Cƒ 3¥ÎkÜT è„MÁ=w$ºóË4rÓN àãAuk@©Tuß©éìûF¡¯ ½§•»ž "àSoÕ”¨*+ ±—ÔЋßFÀÎ C¿¨S<,pÌ]Ƴ{‡|#‚†'|ì´=Ü>··'A¨‰ïó¡QŒRêð”jÑ}–„—dÍD€¹W&¢ Ú•i»Ç¡± V°f«;ì¯üÔ²(JkêØ×õø_‡¾]0µ>¼&¿— K”éÍ·\õîþIÞŸ^Ö’í÷^®j²šÂ!-ZÚí0ÂÂÜöqçÃfk¦N¦Í.9ž$ kÜ14‘6ÒàýôóÏJ"8—$ Z55-Žx›ƒ<—Gf1ýWìÖÐLF÷»¤ƒŸ—jÁÔÁòÉ‘´T £¬çºõ ª]µ‡# Mǃ6lsŸpœ¬±ÔXÚ—ˆ{ ?‘=ÎÙV¯^¿¾#ÈÖV ²[Ry¾6 N§éìÙè_g9虨º ¹3DHIJ7‹1Žç@7l··¸×ÂÅyrJHXޤÿ»«Æ¾Šúþ_ûåg?µò´ÍA½¾¨”nš}åîFP³` ®DùÈ`4%Û³*ˆë%>9þ…0ü†:É:7œÐá•¢ÙÌ–q>óE´½L$¡t ¢Âsþ”åML§8Õy¨KŠ»LC´Ý»µ¤Ý;ë›ò»BWB¼ Šf­&š™~¿ˆU‹öeñilÀoLÅiüL¡ïì]‚È ùüaé Be=ÚÖ6%ü³ùMÓû<•[ŠßÄÄ"´^S'wçœ|^2IË;UV!Û§}š΋™ú:4çóœô“Ð?U/ øö÷ÿ“xBàqŽù’1b÷á2Òf#û(ù䃭”s¨Ÿu°- ý Ñ[eP%ó-RL¢Sñ„Å’å«tºZø‰±B³O ÛÜÝ­†ú¸ÆÿŠY ‹©¹Ù)¹ðyrÕbÚ£²gÇ¥µhjv H6;Ø×uÒ#i œ“âÈmŽä  (úÙEhÅA¡=@;ýÖ 8ízO¤±GsïžöÎ\ŒMýGåØ(ãa Bu¦C7Î3… ´m©«VE=Ξ Í>×KXxÞ ÕrÅlWR}3…bç´/0~®†ò~Ûð.ÜðPJ[x aùÑÃÐ|Ÿüt]«ûcÓ Œ'–z*„ÄbL˜©×AÛVȳ¾P’¦2o_±~Z÷>~ÊJÌâØŒðß>õ7÷.øX9ŠtuvÇzÅ @0à¡i›ŸYI­0sÚüºÊò_Xåu+_)2î<dÐêHh¶×cAhROË‹"Qtç[¦ám„_UopqrM?Áiõ¼^7õ27¥trOwWóŽ x  ö¸B­I„ мðòî vúxK¯µn^ô“¯ø]ÃÇô/^“~¿b\O±ïœÒvÿUa¢ù`ö d ÝÏn  #.Pá<bÆô<á,êsq¶Âzl.ë-¯˜F)T3ÓÆE'@Ëz–¢«–¦fKZyûC=;sÑÌ×<÷`•þA ø!öÏHô[³’D°D„§±‰×ñÓ§Ó5QÎ F£s’¯H†bªZpíÓ+™Ì“Úê(Çëú}agck>{S’žUpqêÍŽKáh?h2ÜqÉYéPß&r­&ݰ‘˜M€^¼ª \Ñ™' Ô . ,ÒØÃóÅÔ·‚ƒøÿªñ›¶íÉÄ›k ÞœÛ.²R­™ëÒ¼ä: ‰…Rw½ÀOâNË»¶m‰_Òú£3á†Àˆ ”&ˆÅªÁ +OÆ-à‹“k#ÃÚYBŒµš¿f•ƪoîž“pG`™[Qþã‚vãäåæç©µS)ãú"DÂ8q8®@½Ïð\˜Œ ‡Ê¤ \!ã¢z®Œ¨*{ ?¹aå!54Ïî)XVª(îÏ2J$n3W›/ ™÷¬=m4ýºT žw) °ù¼ê í“QyŸD-Â麘l—ÎÊS„jY1»&À0 Ž·+cÈär´Y5Ä€‚6d|͇C5À?¦åJiÁ‚(¼‘Fß ¸ŽeI/ð<”ë ñ"VÕw*â.ŒÏ[:—ìØè:;9€ $E¸µ ã7°ç«‚Fœ`t$,x,SŒì°,Ìëj¬z ŠR9î}>+ÄO¾}âÊN·”o˜«ÌɈìò9â(ZqñBØc‹ÛEϯÄãm$ôQè¯wïï a… IéñÈ¥göZedæ ü4d±…ɉäøGÿ(…+Ú&¬X€ÉœÃ¸ven°žf {*L+" m€:šl­‚ U2ÉgÃ\ʲ¸VÕÔrKvƒýQc®1ˆ%ùTêèÄJ‰ä*"S =U1`¶o½¸æCÒ©næG<xÆÃYÄx‘Nšèõ 6?sËUþ¹IÊ|,Ïí§/ÆÌc0.ÿ–°Öz†%¬d€w%%€©n0tÙðtŸGÌÜþ€6‡Tº)¬PoÂp¡ ‡ÊÁßwaÍ@Q{èÛ~l;½hàËg¥lôbòA)æÇæNO‘RЦ§ÜóÓÑ6D¤I¶½+™Öš}ž9‘üg•~¿æ8¹øë3F®à ý–ÓÒò®¶ãDE:ÉË&ÔHYë vuƒ©§íÑÞ‹y¥#j7Á[úÛ ý½4G~þûàcÑšEéßa£äkÅm‰b¹¢\PNK@E‰ WH¹K1¤ª˜!ÈËݳcæp£nƒÀy‚â] W)éÕ¤ÞˆÞ£gHõ5Ù£]`²¿ Access Capability: %s Canon Wifi support File Download, Filesystemtype: %s Free Space (Bytes): %llu (%lu MB) Free Space (Images): %d Generic Image Capture, Maximum Capability: %llu (%lu MB) Nikon Wifi support No Image Capture, Storage Type: %s StorageDescription: %s VolumeLabel: %s Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Capture Formats: Device Capabilities: Device Property Summary: Storage Devices Summary: Drive %s %11s bytes total %11s bytes available Serial Number: %s Version: %s (battery is %d%% full) PTP error %04x on query Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d error %x on query. not read out. %.0f mm%.1f stops%0.4fs%d %d/%d%d Multi Frame Noise Reduction%d mm%d/%d%f%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)%sCanon EOS Shutter Button%sNikon Capture 2%sNikon Capture 3 (Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*+NEF (RAW)-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 (Short)1 EV1 fps1 min1 minute1 step spd/aperture1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/250s (Auto FP)1/25s1/2s1/301/30s1/3200s1/320s1/320s (Auto FP)1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 mins10 minutes10 mm10 seconds100%10s11 fps1152 x 86412 mm1280 x 96013s1515 mins15 minutes15s16 seconds16:91s1x22 EV2 fps2 seconds2.02.0 m2.5s2.5x20 seconds20s21 points25%25s29 mm2s2x3 (Normal)3 EV3 fps3030 minutes30 seconds30s34 mm3:23D Tracking3s3x44 fps4 seconds41 mm4s4x5 (Long)5 fps5 mins5 minutes5 seconds50 Hz50%51 mm51 points51 points (3D)58 mm5s5x6 fps6 mm6 seconds60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 seconds8s8x9 fps9 points9xA-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)AB FilterACAC PowerAC adapterAC adapter is connected. AC adapter is not connected. ADL bracketingAE & FlashAE LockAE Lock onlyAE LockedAE lock (Hold)AE lock (Reset on release)AE lock (hold)AE lock onlyAE onlyAE-L/AF-L ModeAE-lockAE/AF LockAE/AF lockAEAF Lock Button 2AEB Exposure CompensationAF ActivationAF Area IlluminationAF Area PointAF Assist LampAF Beep ModeAF DistanceAF LCD Top Mode 2AF Lock HoldAF Lock OnAF Lock OnlyAF Lock onlyAF LockedAF ModeAF OnAF On ButtonAF lock onlyAF-AAF-CAF-C Mode PriorityAF-ONAF-SAF-S Mode PriorityAF11AF51AI FocusAI ServoASIC Revision: %d.%d ASX PlaylistAUTOAVAV Lock SettingAV MaxAV OpenAX203 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.AX203 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.A_DEPAbout Konica Q-M150: This camera does not allow any changes from the outside. So in the configuration, you can only see what it is configured on the camera but you can not change anything. If you have some issues with this driver, please e-mail its authors. Abstract Audio AlbumAbstract Audio PlaylistAbstract Audio Video PlaylistAbstract Calendar ItemAbstract Chaptered ProductionAbstract ContactAbstract Contact GroupAbstract DocumentAbstract Image AlbumAbstract MediacastAbstract MessageAbstract Message FolderAbstract Multimedia AlbumAbstract Video AlbumAbstract Video PlaylistAccess modeAccess top item in MY MENUActionActive AF SensorActive D-LightingActive Pic Ctrl ItemAd-hocAdc65 Benjamin Moos AdobeRGBAdvanced Transfer CancelAlbum nameAlkalium manganeseAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Angle LevelAnti-redeyeAnti-redeye FillAnywhereAox generic driver Theodore Kilgore ApertureAperture SettingAperture SettingsAperture changedApplication ModeApplication Mode 0Application Mode 1ArtistArtist NameAspect RatioAssign Func ButtonAssign Func. ButtonAssign Preview ButtonAssist LightAudible.com CodecAutoAuto + Red Eye SuppressionAuto ApertureAuto Bracket SelectionAuto DX CropAuto Distortion ControlAuto Exposure Bracket CountAuto Exposure BracketingAuto FPAuto Focus AreaAuto Focus Mode 2Auto ISOAuto ISO Multi Frame Noise ReductionAuto ISO P/A/DVP SettingAuto Meter Off TimeAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off InfoAuto Off MenuAuto Off PhotoAuto Off TimeAuto Off TimersAuto Power OffAuto Power Off (minutes)Auto Slow SyncAuto White Balance BiasAuto exposure lockAuto focus: AI focusAuto focus: AI servoAuto focus: one-shotAuto sensitivityAuto, red-eye reductionAutofocus ModeAutofocus error.AutomaticAutomatic Automatic (No Flash)Automatic FlashAutomatic MacroAutomatic Macro (close-up)Automatic Red-eye ReductionAutomatic exposure adjustment on previewAutomatic flashAutomatic flash on captureAutumn colorsAvAv MaxAv Max ApexAv OpenAv Open ApexAvailable ShotsAvailable memory: AverageAverage FilesizesAverage MeteringB/WBWBW ContrastBW Filler EffectBW Setting TypeBW SharpnessBack LightBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for card status %dBad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery Cell KindBattery LevelBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery Life: %i Battery LowBattery ModeBattery TypeBattery exhausted, camera off.Battery level: %.1f Volts. Revision: %08x.Battery status: %s, AC Adapter: %s BeachBeach/SnowBeepBeep ModeBeep mode changedBeep offBeep onBegin Edit ObjectBestBit rate %ld is not supported.Black & WhiteBlack & whiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlossomBlueBottomBracket ModeBracket OrderBracket SetBracketingBracketing C 0.3 StepsBracketing C 0.7 StepsBracketing C 1.0 StepsBracketing C 2.0 StepsBracketing C 3.0 StepsBracketing EnableBracketing Frames and StepsBracketing S 0.3 StepsBracketing S 0.7 StepsBracketing S 1.0 StepsBracketing S 2.0 StepsBracketing S 3.0 StepsBracketing WB HiBracketing WB LoBracketing burstBright+Bright-BrightnessBrightness+Brightness-Brightness/ContrastBuiltin RAMBuiltin ROMBulbBulb Exposure TimeBulb ModeBurstBurst IntervalBurst NumberBusyButtons and DialsCCD NumberCCD Serial NumberCHDKCHDK ScriptCHDK did not leave recording mode.CRWCSM MenuCameraCamera ActionsCamera Body IDCamera ConfigurationCamera Date and TimeCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ManufacturerCamera ModeCamera Mode Not Adjust FNumberCamera ModelCamera Model: %s Camera Not ReadyCamera OK.Camera OrientationCamera OutputCamera OwnerCamera SettingsCamera Status InformationCamera and Driver ConfigurationCamera appears to not be using CompactFlash storage Unfortunately we do not support that at the moment :-( Camera busy. If the problem persists, please contact %s.Camera could not complete operationCamera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera has taken %d pictures, and is using CompactFlash storage. Camera is configured for lights flickering by %dHz. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera unavailable: %sCamera was already activeCamera was woken upCan't capture new images. Unknown errorCan't delete all images.Can't delete image %s.Can't upload this image to the camera. An error has occurred.Cancel Canon DSLR AutofocusCandlelightCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCanon Auto Exposure ModeCanon CaptureCanon Capture failedCanon EOS CaptureCanon EOS Capture failedCanon EOS Capture failed to release: Card read-only?Canon EOS Capture failed to release: Perhaps mirror up?Canon EOS Capture failed to release: Perhaps no focus?Canon EOS Capture failed to release: Perhaps no more memory on card?Canon EOS Capture failed to release: Unknown error %d, please report.Canon EOS Capture failed: %xCanon EOS Full-Press failedCanon EOS Full-Release failedCanon EOS Get Changes failedCanon EOS Half-Press failedCanon EOS Half-Release failedCanon EOS Remote ReleaseCanon EOS Trigger Capture failed: 0x%xCanon EOS ViewfinderCanon EOS ZoomCanon EOS Zoom PositionCanon PowerShot series driver by Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5 additions by Ole W. Saastad Additional enhancements by Holger Klemm Stephen H. WestinCanon Shooting ModeCanon disable viewfinder failedCanon enable viewfinder failedCanon get viewfinder image failedCaptureCapture DelayCapture SettingsCapture Size ClassCapture TargetCapture Transfer ModeCapture size class changedCapture type is not supportedCardCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card name: %s Free space on card: %d kB Card not supported.Card removed during access.Cell Kind PriorityCenter Button Playback ModeCenter Button Shooting ModeCenter Button Zoom RatioCenter SpotCenter Weight AreaCenter WeightedCenter Weighted AverageCenter-WeightedCenter-spotCenter-weightedCenter-weighted Average MeteringCenter-weighted MeteringCenter-weighted averageCenter-weighted meteringCentreCentre Weight AreaCentre-spotChange Camera Mode FailedChange Pic Ctrl ItemChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorChildChildrenChoose Color TemperatureChoose non-CPU lens numberClean Image SensorClean SensorClean data storeClose Media SessionClose sessionClose upClosest SubjectCloseupCloudyCloudy White Balance BiasColorColor GainColor ModeColor ModelColor SettingsColor SpaceColor TemperatureColor or Function ModeColor sketchColor temperatureCommand can not be cancelled.Command order error.CommanderCommunication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompatibility ModeCompressionCompression SettingConfigurationConfiguration for your FUJI cameraConnected to cameraContinuousContinuous AFContinuous High-speed ShootingContinuous Low SpeedContinuous Low-speed ShootingContinuous ShootingContinuous Shooting Speed HighContinuous Shooting Speed SlowContinuous Speed HighContinuous high speedContinuous low speedContinuous silentContinuous-Servo AFContrastContrast+Contrast-Copy objectCopyrightCopyright (max. 20 characters)Copyright InfoCopyright InformationCorrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not change ISO speedCould not change apertureCould not change beep modeCould not change exposure compensationCould not change flash modeCould not change focus modeCould not change image formatCould not change shooting modeCould not change shutter speedCould not change time of file '%s' in '%s' (%s).Could not change zoom levelCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file '%s' in folder '%s' (error code %i: %s).Could not delete file.Could not detect any cameraCould not detect any camera at port %sCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get information about '%s' (%s).Could not get information about '%s' in '%s' (%s).Could not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Create Wifi profileCreation date: %s, Last usage date: %sCreativeCreative PC-CAM 300 Authors: Till Adam and: Miah Gregory Creative PC-CAM600 Author: Peter Kajberg Current Mode: Camera Mode Current Mode: Playback Mode Current camera time: %04d-%02d-%02d %02d:%02d Free card memory: %d Images on card: %d Free space (Images): %d Battery level: %d %%.Currently, PTP is only implemented for USB and PTP/IP cameras currently, port type %xCustomCustom Functions ExCustom Whitebalance PC-1Custom Whitebalance PC-2Custom Whitebalance PC-3Customise Command DialsDD/MM/YYYYDEPDPOF VersionDark on lightData has been corrupted.Date & TimeDate FormatDate Time Stamp FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDate: %sDay/Month/YearDaylightDaylight White Balance BiasDebugDeepDefault gatewayDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. Delayed RemoteDeleteDelete objectDeleting image %s.Depth of FieldDetected a "%s" aka "%s"Detected a '%s'.Development Parameters 1Development Parameters 2Development Parameters 3Device CertificateDevice IconDevice VersionDevice does not support setting object protection.Device failed to set object protection to %dDigita Johannes Erdfelt Digital Camera Layout (DCIM)Digital ZoomDigital Zoom MagnificationDigital macroDigital zoomDimera 3500 ver. %s %d/%d %d:%d. %d pictures used of approximately %d (high res) or %d (low res). Camera features: %s, %s, %s, %s. Flash is %s, is %s and is %s. Resolution is set to %s. Camera is %s powered %s. Direct PrintDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisable trusted file operationsDisconnecting camera.Disp AvDisp Av MaxDisplayDisplay Formats: Distant ViewDo not display TV menuDon't know how to handle camera->port->type value %i aka 0x%x in %s line %i.Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy to port your driver on this cam! Download program for GrandTek 98x based cameras. Originally written by Chris Byrne , and adapted for gphoto2 by Lutz Mueller .Protocol enhancements and postprocessing for Jenoptik JD350e by Michael Trawny . Bugfixes by Marcus Meissner .Download program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading %s...Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...Drive Canon DSLR AutofocusDrive Canon DSLR Manual focusDrive ModeDrive Nikon DSLR AutofocusDrive Nikon DSLR Manual focusDriverDriver SettingsDriver framework written by Lutz Mueller . This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro "itojun" Itoh . Integration of QVplay by Michael Haardt .Dual IrisDuskDusk/DawnDust Reference ErrorDynamic AF AreaDynamic Area (21)Dynamic Area (51)Dynamic Area (9)Dynamic-area AFDynamic-area AF with closest subject priorityEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.ESPESSIDEV StepEVF ModeEZoom Size of TeleEZoom Start PositionEconomyEffect ModeEffectsEmergencyEmptyEnable CopyrightEnable Image CommentEnable trusted file operationsEncounterEncounter BoxEncryptionEncryption key (hex)End Edit ObjectEnd trusted application sessionEnglishEnhancedErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationError waiting for ACK during initialization, retryingEvaluativeEvaluative MeteringEvent Emulate ModeEverywhereExecute predefined command with parameter values.Expected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.Expose IndexExposureExposure Aperture LockExposure Base CenterExposure Base MatrixExposure Base SpotExposure Bias CompensationExposure Bracketing ProgramExposure Bracketing StepExposure CompensationExposure Compensation (EV)Exposure Delay ModeExposure Display StatusExposure ISO StepExposure Index (film speed ISO)Exposure Indicate LightupExposure Indicate StatusExposure LockExposure MeterExposure MeteringExposure Metering ModeExposure ProgramExposure Program ModeExposure StepExposure TimeExposure compensationExposure compensation changedExposure compensation: %d Exposure compensation: %s Exposure delay modeExposure level on previewExternal FlashExternal Flash AttachedExternal Flash CompensationExternal Flash ModeExternal Flash SortExternal Flash StatusExternal syncExtra highF-NumberF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d FNumber LockFV LockedFV lockFace-priority AFFactory DefaultFailed to enable liveview on a Nikon 1, but it is required for captureFaithfulFar %dFar 1Far 2Far 3Far sceneFast FilesystemFast shutterFileFile '%s' could not be found in folder '%s'.File '%s/%s' does not exist.File Deletion, File Number SequencingFile Upload File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.Filename ConflictsFilename InvalidFilename RequiredFiletype: FlashPix (Filetype: JPEG (Fill flashFinder ISO DisplayFineFireworksFirmwareFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware VersionFirmware version: %d.%02d Firmware: %d.%d FisheyeFixedFlashFlash ChargedFlash Command A CompensationFlash Command A ModeFlash Command A ValueFlash Command B CompensationFlash Command B ModeFlash Command B ValueFlash Command ChannelFlash Command Self CompensationFlash Command Self ModeFlash Command Self ValueFlash Commander ModeFlash Commander PowerFlash CompensationFlash Exposure CompensationFlash Level LockFlash LockFlash MRepeat CountFlash MRepeat IntervalFlash MRepeat ValueFlash ModeFlash Mode Commander PowerFlash Mode Manual PowerFlash OffFlash OpenFlash Quantity CountFlash SettingFlash SettingsFlash Shutter SpeedFlash SignFlash Sync. SpeedFlash White Balance BiasFlash autoFlash mode changedFlash mode: auto, Flash mode: force, Flash mode: off Flash offFlash onFlash onlyFlash/apertureFlash/speedFlash/speed/apertureFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFlexible ProgramFlicker ReductionFlourescentFlourescent TypeFlourescent-1-home-6700KFlourescent-2-desk-5000KFlourescent-3-office-4200KFluorescentFluorescent HFluorescent Lamp 1Fluorescent Lamp 2Fluorescent Lamp 3Fluorescent Lamp 4Fluorescent Lamp 5Fluorescent White Balance BiasFluorescent-1-home-6700KFluorescent-2-desk-5000KFluorescent-3-office-4200KFluorescent: Cold WhiteFluorescent: Day WhiteFluorescent: DaylightFluorescent: Warm WhiteFocal LengthFocal Length DenominatorFocal Length MaximumFocal Length MinimumFocal Length TeleFocal Length WideFocusFocus AreaFocus Area WrapFocus Area ZoneFocus AreasFocus DistanceFocus InfoFocus LockFocus MeteringFocus Metering ModeFocus ModeFocus Mode 2Focus Point BrightFocus mode changedFocus positionFocusing PointFocusing Point on Center Only, AutoFocusing Point on Center Only, ManualFocusing error.Folder '%s' only contains %i files, but you requested a file with number %i.FoliageFoodFor bulb capture to work, make sure the mode dial is switched to 'M' and set 'shutterspeed' to 'bulb'.For cameras with S&Q Technologies chip. Should work with gtkam. Photos will be saved in PPM format. All known S&Q cameras have two resolution settings. What those are, will depend on your particular camera. A few of these cameras allow deletion of all photos. Most do not. Uploading of data to the camera is not supported. The photo compression mode found on many of the S&Q cameras is supported, to some extent. If present on the camera, video clips are seen as subfolders. Gtkam will download these separately. When clips are present on the camera, there is a little triangle before the name of the camera. If no folders are listed, click on the little triangle to make them appear. Click on a folder to enter it and see the frames in it, or to download them. The frames will be downloaded as separate photos, with special names which specify from which clip they came. Thus, you may freely choose to save clip frames in separate directories. or not. For cameras with insides from S&Q Technologies, which have the USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051, 0x9052, or 0x913D. Photos are saved in PPM format. Some of these cameras allow software deletion of all photos. Others do not. No supported camera can do capture-image. All can do capture-preview (image captured and sent to computer). If delete-all does work for your camera, then capture-preview will have the side-effect that it also deletes what is on the camera. File uploading is not supported for these cameras. Also, none of the supported cameras allow deletion of individual photos by use of a software command. ForceForce Flash Format card and set album name.Format compact flashFormat storageFrames Left: %i Frames Taken : %4d Frames Taken: %i Framing gridFrenchFriendly Device NameFront-curtain syncFullFull ImageFull ManualFull View File FormatFull-time-servo AFFunction Button 2Functional ModeFunctional Mode: 0x%04x GeneralGeneric FlatGeneric HierarchicalGermanGet Next Data BlockGet Partial Object (64bit Offset)Get Proximity ChallengeGet Registration ResponseGet WMDRM-ND License ResponseGet WMDRM-PD Application ResponseGet device property descriptionGet device property valueGet interdependent property descriptionGet license stateGet meter challengeGet meter responseGet number of objectsGet objectGet object handlesGet object infoGet object properties supportedGet object property descriptionGet object property listGet object property valueGet object referencesGet partial objectGet secure time challengeGet secure time responseGet storage IDsGet storage infoGet sync listGet thumbnailGet transferable playlist typesGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.Gray scaleGrayscaleGreenGroup DynamicGroup PTN TypeHDR High DynamicHDR ModeHDR SmoothingHand-held TwilightHardware ErrorHi 1Hi 2HighHigh (1152 x 872)High (good quality)High 2High ISO Noise ReductionHigh ISO noise reductionHigh controlHigh keyHigh sensitivityHigh-Speed ShutterHighlight active focus pointHoldHost Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?Hue AdjustmentHyPictI/O in progressIDIP address (empty for DHCP)ISOISO AutoISO Auto Hi LimitISO Auto High LimitISO SpeedISO speed changedIconsIdleIllegal parameter.Illum SettingImageImage %s is delete protected.Image & SoundImage AdjustmentImage CommentImage Comment EnableImage Comment StringImage CompressionImage FormatImage Format CFImage Format Ext HDImage Format SDImage ModeImage QualityImage Quality 2Image ReviewImage RotationImage Rotation FlagImage SettingsImage SizeImage StabilizationImage format changedImage height: %d Image number not valid.Image protected.Image sizeImage size: %d Image type %d is not supported by this camera !Image type %d not supportedImage type is not supportedImage width: %d Img Conf TimeImmediateIn useIncandescentIndicator DisplayIndoorInfinityInfinity/Fish-eyeInfo Disp SettingInfo Display Error StatusInformationInformation on STV0680-based camera: Information regarding cameras with ID 0x2770:0x9153. We do not recommend the use of a GUI program to access this camera, unless you are just having fun or trying to see if you can blow a fuse. For production use, try gphoto2 -P from the command line. Note: it is not possible to download video clips. Initial camera response '%c' unrecognizedInitializing CameraInitiate captureInitiate open captureIntelligent AutoIntelligent Auto Flash OffInternal RAMInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal error looking for camlibs. (path names too long?)Internal memory: %d MB total, %d MB free. InvalidInvalid ISO speed settingInvalid StatusInvalid Value ( %d ) Invalid aperture settingInvalid beep mode settingInvalid capture size class settingInvalid exposure compensation settingInvalid flash mode settingInvalid focus mode settingInvalid image format settingInvalid shooting mode settingInvalid shutter speed settingIris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JD11 ConfigurationJPEGJPEG BasicJPEG Compression PolicyJPEG FineJPEG NormJPEG NormalJapaneseKeep filename on uploadKids and petsKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BacklightLCD Backlight and Info DisplayLCD BrightnessLCD IlluminationLCD ModeLCD Off TimeLED ModeLG GSM generic driver Guillaume Bedot LandscapeLanguageLargan driver Hubert Figuiere LargeLarge Fine JPEGLarge Normal JPEGLeftLens Cover PresentLens Focal Length (Non CPU)Lens IDLens Maximum Aperture (Non CPU)Lens ModeLens NameLens SortLens TypeLens direction does not match flash light Lens is not connected LightLight MeterLight on darkLight too dark.List Wifi profilesList all filesListing files in '%s'...Listing folders in '%s'...Lithium IonLive View AF AreaLive View AF FocusLive View AF ModeLive View Drive ModeLive View Image Zoom RatioLive View ModeLive View Prohibit ConditionLive View StatusLoading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!LockLogitech Clicksmart 310 driver Theodore Kilgore Long Exp Noise ReductionLong Exposure Noise ReductionLong shutterLooking for camera ...Looks like a modem, not a cameraLosslessLossyLowLow (576 x 436)Low (best quality)Low 2Low LightLow Speed SynchronizationLow contrastLow keyLow sensitivityLow sharpeningLow-Speed ShutterLow-speed shutter function not availableLower case letters in %s not allowed.MM-DEPM3U PlaylistM4AMF (fixed)MF (selection)MHT Compiled HTML DocumentMM/DD/YYYYMPL PlaylistMTR > UnderM_DEPMacroManagedManualManual 2Manual FocusManual Mode BracketingManual Movie SettingManual Set Lens NumberManual focusManufacturer: %s Mars MR97310 camera library Theodore Kilgore Mars MR97310 camera. There is %i photo in it. Mars MR97310 camera. There are %i photos in it. MatrixMatrix meteringMatthew G. Martin Based on fujiplay by Thierry Bousch Max. Aperture at Max. Focal LengthMax. Aperture at Min. Focal LengthMax. Focal LengthMaximalMaximum Aperture at Focal Length MaximumMaximum Aperture at Focal Length MinimumMaximum ShotsMaximum continuous releaseMaximum number of Images: %d Media CardMedia Card GroupMedia CastMediumMedium (1152 x 872)Medium (better quality)Medium 1Medium 2Medium 3Medium Fine JPEGMedium HighMedium LowMedium Normal JPEGMedium highMedium sensitivityMemory Left: %i bytes Memory cardMemory card status (%d): %s Memory in camera: %d Mbit. Menu Bank Name AMenu Bank Name BMenu Bank Name CMenu Bank Name DMenus and PlaybackMetadata only supported for MTP devices.Meter Off TimeMetering ModeMf Drive Step EndMf Drive Step InsufficiencyMicrophoneMicrophone offMicrosoft Excel Spreadsheet (.xls)Microsoft Powerpoint (.ppt)Microsoft Word DocumentMin. Focal LengthMiniature effectMinimalMinimum Shutter SpeedMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Mirror UpMirror Up SequenceMisc exposure/lens settingsMissing NumberMl Spot PositionMlSpotPosAfLinkMlSpotPosCenterModel IDModel: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Model: %s Capacity: %i Mb Power: %s Auto Off Time: %i min Mode: %s Images: %i/%i Date display: %s Date and Time: %s Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s Modeling FlashModelling FlashModerateMonitorMonitor Off DelayMonochromeMonth/Day/YearMove objectMovieMovie CaptureMovie Card SlotMovie F-NumberMovie High ISO Noise ReductionMovie ISO SpeedMovie MicrophoneMovie QualityMovie ResolutionMovie Screen SizeMovie Shutter Speed 2Movie SoundMovie VoiceMulti Frame Noise ReductionMulti SpotMulti spotMulti-Spot MeteringMulti-spotMultiple Focusing Points (Center)Multiple Focusing Points (Left)Multiple Focusing Points (No Specification), ManualMultiple Focusing Points (Right)Multiple Focusing Points, AutoMultiselectorMup Mirror upMustek MDC-800 gPhoto2 Library Henning Zabel Ported to gphoto2 by Marcus Meissner Supports Serial and USB Protocols.MyColorsNEF (Raw)NEF+BasicNEF+FineNEF+NormalNIKON Auto Bracketing SetNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName '%s' (%li characters) too long, maximum 30 characters are allowed.Name PrefixName to set on card when formatting.Near %dNear 1Near 2Near 3Network maskNeutralNextNickel cadmiumNickel hydrideNight LandscapeNight PortraitNight SceneNight ViewNight VisionNight landscapeNight sceneNight snapshotNikon Capture 1Nikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. Nikon Exposure TimeNikon Flash ModeNikon ViewfinderNikon autofocus drive did not focus.Nikon changeafarea works only in LiveView mode.Nikon disable liveview failedNikon enable liveview failedNikon manual focus at limit.Nikon manual focus stepping too small.Nikon manual focus works only in LiveView mode.NoNo CF Card ReleaseNo Compact Flash Card detected No Dual IrisNo EXIF data available for %s.No File Deletion, No File Upload No FlashNo Open Capture, No Power LightNo Resolution SwitchNo SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card in camera. No card present.No memory card presentNo reason availableNo response from cameraNo space available to capture new images. You must delete some images.No space left on card.No vendor specific capture NoneNone selectedNormalNormal Normal AF OnNormal-area AFNot FullNot enough free spaceNot enough memory available on the memory cardNot in LiveviewNot in fill modeNot readyNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOS error in camera communicationOffOfficeOlympus 750 Ultra Zoom: (1) Olympus 750UZ has a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both the 'OK' and 'quickview' buttons until the camera control menu appears. Set it to control mode. (2) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Olympus E XML Capture Olympus wrapped XML support is currently only available with libxml2 support built in.OnOn (image review excluded)On + Red Eye SuppressionOn screen tipsOn, red-eye reductionOne ShotOne-push AutomaticOnly root folder is supported - you requested a file listing for folder '%s'.Open Capture, Open Media SessionOpen sessionOperation ModeOperation RefusedOperation cancelledOptimal qualityOptimize ImageOrientationOtherOther PTP Device PropertiesOther SettingsOther command executing.Out of FocusOut of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner NameOwner name changedPPALPCPLS PlaylistPTP Access DeniedPTP Cancel RequestPTP Capture Already TerminatedPTP Data ExpectedPTP Device BusyPTP Device Prop Not SupportedPTP General ErrorPTP I/O ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Property 0x%04xPTP Response ExpectedPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Standard Version: %d.%d PTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP TimeoutPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePTP VersionPTP2 driver (c) 2001-2005 by Mariusz Woloszyn . (c) 2003-%d by Marcus Meissner . This driver supports cameras that support PTP or PictBridge(tm), and Media Players that support the Media Transfer Protocol (MTP). Enjoy!Packet was rejected by camera. Please contact %s.Pan FocusPanFocusPanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic DC1580 gPhoto2 library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic introduced image capturing technology called PHOTOSHOT for the first time, in this series of Palmcorders. Images are stored in JPEG format on an internal flashcard and can be transferred to a computer through the built-in serial port. Images are saved in one of two resolutions; NORMAL is 320x240 and FINE is 640x480. The CCD device which captures the images from the lens is only 300K and thus produces only low quality pictures.Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk PanoramaParameter 1Parameter 2Parameter 3Parameter SetParsing the value of widget '%s' / 0x%04x failed with %d.PartialPartial MeteringParty/IndoorPath not absolutePerceived Device TypePersistent SettingsPet PortraitPhoto EffectPhoto Info. PlaybackPhoto in moviePhotos on camera: %d Picture EffectPicture Frame ConfigurationPicture SettingsPicture StylePicturesPictures in camera: %d PlayPlay modePlaybackPlayback Container IndexPlayback ObjectPlayback PositionPlayback RatePlaysForSure IDPort speedPortraitPowerPower DownPower SavingPower WindPower down devicePre-Capture DelayPresetPreset Custom 1Preset Custom 2Preset Custom 3Preset Custom 4Preset Custom 5Press 1Press 2Press 3Press FullPress HalfPreviewPreview ButtonPreview Button 2Preview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProcess WFC ObjectProduct ID: %02x%02x Profile nameProhibit Flash QualityQuick ResponseQuick Response RemoteQuick Review TimeQuiet ReleaseRAWRAW + JPEG BasicRAW + JPEG FineRAW + JPEG NormalRAW + Large Fine JPEGRAW + Large Normal JPEGRAW + Medium Fine JPEGRAW + Medium Normal JPEGRAW + Small Fine JPEGRAW + Small Normal JPEGRAW 2RAW+JPEGRGB GainRTC Status: %d Raw Bit ModeRaw CompressionRead Only with Object deletionRead-OnlyRead-WriteRead-only file attributes like width and height can not be changed.ReadyRear Curtain SyncRear Curtain Sync + Slow SyncRear-curtain syncRear-curtain with slow syncReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRecording DestinationRecording MediaRedRed Eye SuppressionRed eye flashRed-eye ReductionRed-eye Reduction + Slow SyncRed-eye automaticRed-eye fillRed-eye fill flashRed-eye reductionRed-eye reduction with slow syncReleaseRelease + FocusRelease 1Release 2Release 3Release FullRelease HalfRelease ModeRelease without CF cardRemoteRemote API VersionRemote Mirror UpRemote ModeRemote TimeoutRemovable RAM (memory card)Removable ROMRepeatingReport Acquired ItemsReport Added/Deleted ItemsRequested information about picture %i (= 0x%x), but got information about picture %i backReset Bank 0Reset Menu BankReset deviceReset device property valueReset focus point to centerResetting protocol...ResolutionResolution SwitchResolution plus SizeReverse Command DialReverse IndicatorsRevocation InfoRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. RightRotation AngleRotation FlagRotation SceneSD Card ID: %s SD memory: %d MB total, %d MB free. SDRAMSDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d SDRamST2205 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.ST2205 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Samsung PlaylistSaturationSceneScene ModeSectionSecure TimeSelect ColorSelective colorSelf TimeSelf TimerSelf Timer (next picture only)Self Timer DelaySelf Timer Shot NumberSelf Timer TimeSelf test deviceSelf-timerSelftimer 10sSelftimer 2sSelftimer DelaySend Partial ObjectSend Proximity ResponseSend Registration RequestSend WMDRM-ND License RequestSend WMDRM-PD Application RequestSend WMDRM-PD CommandSend WMDRM-PD RequestSend meter challenge querySend objectSend object infoSend object property listSending data...SensitivitySensor ID: %d.%d SepiaSequence 9Serial NumberSerial Number: %s Session Initiator InfoSession-persistent SettingsSet Current Time PositionSet Nikon Autofocus areaSet Nikon Control ModeSet Property Not SupportedSet clock in cameraSet device property valueSet license responseSet object property listSet object property valueSet object protectionSet object referencesSetting 4Setting 5Setting 6Setting 7ShadeShadowShady White Balance BiasShall the camera beep when taking a picture?SharpSharpeningSharperSharpnessShooting BankShooting Bank Name AShooting Bank Name BShooting Bank Name CShooting Bank Name DShooting ModeShooting SpeedShooting modeShooting mode changedShot SettingsShutdownShutter CounterShutter SpeedShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed 2Shutter Speed BulbShutter Speed microseconds (0 auto)Shutter speedShutter speed changedShutter/AF-ONSiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SilhouetteSingleSingle AreaSingle ShotSingle frameSingle silentSingle-Frame ShootingSingle-Servo AFSingle-area AFSingle-servo AFSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Size PrioritySize Quality ModeSize of Input Data to CameraSize of Output Data from CameraSkip to next position in playlistSkylightSlide Show IntervalSlot 2 Save ModeSlowSlow Shutter SettingSlow SyncSlow shutterSlow syncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SmallSmall Fine JPEGSmall Normal JPEGSmoothSmoothingSnowSoftSofterSoftware Rev.: %s Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to the gphoto developer mailing list (in English) Some notes about Olympus cameras (and others?): (1) Camera Configuration: A value of 0 will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch to this mode, turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you cannot use the camera's buttons. If you end up in this state, you should reconnect the camera to the PC and switch LCD to 'Off'.Some notes about Olympus cameras: (1) Camera Configuration: A zero value will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Sonix camera library Theodore Kilgore Sonix camera. There is %i photo in it. Sonix camera. There are %i photos in it. Sony CaptureSony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners Sorry, initializing your camera did not work. Please report this.Sorry, the property '%s' / 0x%04x is currently ready-only.Sorry, your Canon camera does not support Canon Capture initiationSorry, your Canon camera does not support Canon EOS CaptureSorry, your Canon camera does not support Canon Viewfinder modeSorry, your Canon camera does not support Canon captureSorry, your Nikon camera does not seem to return a JPEG image in LiveView modeSorry, your Nikon camera does not support LiveView modeSorry, your camera does not support Nikon captureSorry, your camera does not support generic captureSoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSportsSports ActionSpotSpot MeteringSpot Metering Interlocked with AF FrameSpot Metering ModeSpot meteringSpot metering interlocked with AF frameSpot-AFStandardStandard Development ParametersStart movie recordingStartupStartup and ShutdownStep #2 of initialization failed! (returned %i bytes, expected %i). Camera not operationalStep #2 of initialization failed: ("%s" on read of %i). Camera not operationalStep #3 of initialization failed! (returned %i, expected %i). Camera not operationalStep #3 of initialization failed: "%s" on read of %i. Camera not operationalStep #3 of initialization failed: "%s" on write of %i. Camera not operationalStep #4 failed (returned %i, expected %i). Camera not operationalStep #4 failed: "%s" on read of %i. Camera not operationalStill Capture ModeStill ImageStrobe error.Subject-tracking AFSummary for Mustek MDC800: SunsetSuper macroSuperFineSuperior AutoSupported MTP Object Properties: Supported Thumb SizeSweep PanoramaSwitching Camera OffSynchronization PartnerSynchronize camera date and time with PCSynchronize frame data and time with PCSystem error.TFTTFT + PCTIFF (RGB)TTLTVTV Lock SettingTV Output FormatTarget value is not in enumeration.Tele-zoom Cont. Priority AETerminate open captureTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera could not be contacted. Please make sure it is connected to the computer and turned on.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support getting storage informationThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The property '%s' / 0x%04x was not set (0x%04x: %s)The property '%s' / 0x%04x was not set (0x%04x: %s).The requested port type (%i) is not supported by this driver.There are still files in folder '%s/%s' that you are trying to remove.There are still subfolders in folder '%s/%s' that you are trying to remove.There are two resolution settings, 352x288 and 176x144. Photo data is in JPEG format when downloaded and thus has no predetermined size. Therefore, the advertised maximum number of photos the camera can hold must be understood as an approximation. All gphoto2 options will work, except for the following which the hardware will not support: Deletion of individual or selected photos (gphoto2 -d) Capture (gphoto2 --capture or --capture-image) However, capture is possible using the webcam interface, supported by the spca50x kernel module. GUI access using gtkam has been tested, and works. However, the camera does not produce separate thumbnails. Since the images are in any event already small and of low resolution, the driver merely downloads the actual images to use as thumbnails. The camera can shoot in 'video clip' mode. The resulting frames are saved here as a succession of still photos. The user can animate them using (for example) ImageMagick's 'animate' function. For more details on the camera's functions, please consult libgphoto2/camlibs/clicksmart310/README.clicksmart310. There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.There is space for another %d low compressed %d medium compressed or %d high compressed pictures This camera can not capture previews.This camera can not capture.This camera can not trigger capture.This camera contains a Jeilin JL2005%c chipset. The number of photos in it is %i. This camera contains a Jeilin JL2005A chipset. The number of photos in it is %i. This camera does not provide a manual.This camera does not provide any configuration options.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This driver supports cameras with Jeilin JL2005B or C or D chip These cameras do not support deletion of photos, nor uploading of data. If present on the camera, video clip frames are downloaded as consecutive still photos. For more details please consult libgphoto2/camlibs/README.jl2005c This driver supports cameras with Jeilin jl2005a chip These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README.jl2005a This driver supports cameras with Mars MR97310 chip (and direct equivalents ??Pixart PACx07??). These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. Photo data processing for Argus QuickClix is NOT SUPPORTED. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README. This driver supports some cameras that use the Sonix sn9c2028 chip. The following operations are supported: - thumbnails for a GUI frontend - full images in PPM format - delete all images - delete last image (not all of the Sonix cameras can do this) - image capture to camera ( ditto ) If present on the camera, video clip frames are downloaded as consecutive still photos or as AVI files, depending on the model. Thumbnails for AVIs are still photos made from the first frame. A single image cannot be deleted unless it is the last one. This is the driver for Canon PowerShot, Digital IXUS, IXY Digital, and EOS Digital cameras in their native (sometimes called "normal") mode. It also supports a small number of Canon digital camcorders with still image capability. It includes code for communicating over a serial port or USB connection, but not (yet) over IEEE 1394 (Firewire). It is designed to work with over 70 models as old as the PowerShot A5 and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of 2005. It has not been verified against the EOS 1D or EOS 1Ds. For the A50, using 115200 bps may effectively be slower than using 57600 If you experience a lot of serial transmission errors, try to have your computer as idle as possible (i.e. no disk activity) This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.This preview doesn't exist.ThumbnailThumbnail height: %d Thumbnail size: %d Thumbnail width: %d Tilt-ShiftTime formatTime: %a, %d %b %Y %T TimelapseTimelapse IntervalTimelapse NumberTimeout even after 2 retries. Please contact %s.TimerTimer (Single) ShootingTimer + RemoteTimer 10 secTimer 2 secTone CompensationToo brightToo darkToo many retries failed.TopTopfield TF5000PVR Marcus Meissner Library to download / upload files from a Topfield PVR. Ported from puppy (c) Peter Urbanec Toshiba David Hogue Toshiba pdr-m11 driver. Total flashes fired: %d Total pictures captured: %d, Flashes fired: %d Total pictures taken: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Truncate ObjectTrying to contact camera...Tune Colour TemperatureTune Preset 0Tune Preset 1Tune Preset 2Tune Preset 3Tune Preset 4TungstenTungsten White Balance BiasTurbo modeTvType of SlideshowU1U2UI LanguageUI LockUILockTypeUNIX TimeUSB 1.1USB 2.0USB SpeedUnassignedUndefinedUndefined AudioUndefined Calendar ItemUndefined CollectionUndefined ContactUndefined DocumentUndefined MessageUndefined PTP PropertyUndefined VideoUndefined Windows ExecutableUnder > MTRUnderwaterUnknownUnknown %dUnknown CommandUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown flash mode %d, Unknown modelUnknown model "%s"Unknown valueUnknown value %04dUnknown value %04xUnknown value 0x%04xUnknown zoom mode %d Unknown(%04x)Unknown: 0x%04x Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. UnusedUpdate device firmwareUpload URLUpload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...Upper 1Upper 2User canceled downloadUser defined 1User defined 2User defined 3Vendor ExtensionVendor Extension Description: %s Vendor Extension ID: 0x%x (%d.%d) Vendor ID: %02x%02x Version: Version: %s Vertical AF OnVideo ModeVideo OUTVideo OutViewfinder GridViewfinder Grid DisplayViewfinder virtual horizontVignette ControlVividVolatile SettingsVolume LevelWB bracketingWEP 128-bitWEP 64-bitWIFI ESSIDWIFI channelWIFI profilesWLAN GUIDWPL PlaylistWaiting for completion...Waiting...Warning DisplayWarning Level 0Warning Level 1Warning StatusWarning in canon_usb_set_file_attributes: canon_usb_dialogue returned error status 0x%08x from cameraWaterWe expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite Balance Bias Preset 0White Balance Bias Preset 1White Balance Bias Preset 2White Balance Bias Preset 3White Balance Bias Preset 4White Balance Bias Preset NrWhite Balance Bracket ProgramWhite Balance Bracket StepWhite Balance Colour TemperatureWhite Balance Preset Name 0White Balance Preset Name 1White Balance Preset Name 2White Balance Preset Name 3White Balance Preset Name 4White Balance Preset NumberWhite Balance Preset Value 0White Balance Preset Value 1White Balance Preset Value 2White Balance Preset Value 3White Balance Preset Value 4White BoardWhite balanceWhite boardWhite levelWhiteBalanceWhiteBalance Adjust AWhiteBalance Adjust BWhiteBalance X AWhiteBalance X BWhitebalance Reset ErrorWideWide-area AFWindows Image FormatWireless SyncWriteWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.XMLDocumentYYYY/MM/DDYear/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.You have to set the port prior to initialization of the camera.You must be in record mode to capture images.You need to specify a folder starting with /store_xxxxxxxxx/Your Logitech Clicksmart 310 has %i picture in it. Your Logitech Clicksmart 310 has %i pictures in it. Your USB camera has a S&Q chipset. The total number of pictures taken is %i Some of these could be clips containing several frames Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i Your USB camera is an iClick 5X. The total number of pictures taken is %i Your USB camera seems to be a LG GSM. Firmware: %s Firmware Version: %s Your USB picture frame has a AX203 chipset Your USB picture frame has a ST2205 chipset Your camera only supports deleting the last file on the camera. In this case, this is file '%s'.Zone Focus (Close)Zone Focus (Close-up)Zone Focus (Far)Zone Focus (Medium)Zone Focus (Reserved 1)Zone Focus (Reserved 2)Zone Focus (Reserved 3)Zone Focus (Reserved 4)Zone Focus (Very Close)ZoomZoom (in millimeters)Zoom level changedZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autoauto + red eye suppressionbatteryblack & whitebulbcamera inactive for > 9 seconds, re-initing. cannot be queried. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_int_capture_image: initial canon_usb_list_all_dirs() failed with status %licanon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: Reached end of packet while examining the first direntcanon_int_list_directory: truncated directory entry encounteredcanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Initial dirent packet too short (only %i bytes)canon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_body_id: Unexpected data length returned (%i bytes, expected %i)canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)canon_usb_lock_keys: Unexpected length returned from "lock keys" function (%i bytes, expected %i)canon_usb_set_file_attributes: canon_usb_dialogue failedcanon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)colorcoolshot library vcould not change owner namecould not set timeeconomyexternallyfill infinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)high compression, hp215 Marcus Meissner Driver to access the HP Photosmart 215 camera. Merged from the standalone hp215 program. This driver allows download of images and previews, and deletion of images. iClick 5X driver Theodore Kilgore iTTLin fill modeinfiniteinternallyjamcam library vjl2005a camera library Theodore Kilgore jl2005bcd camera library Theodore Kilgore lock keys failed.losslesslow (320x240)low compression, mRAWmRAW + Large Fine JPEGmRAW + Large Normal JPEGmRAW + Medium Fine JPEGmRAW + Medium Normal JPEGmRAW + Small Fine JPEGmRAW + Small Normal JPEGmedium compression, menuno status reported.nonenormalnot available: %soffonon + red eye suppressionon batterypccam600 init: Unexpected error: gp_port_read returned %d instead of %dpccam600_close: return value was %d instead of %dpccam600_get_file:got index %d but expected index > %dpccam600_init: Expected %d blocks got %dpccam600_init: Expected > %d blocks got %dplaypower OKpower badread onlyreadwritereadyrecordrecursive calls are not supported by the sierra driver! Please contact %s.red eye flash off. red eye flash on. red eye suppressionsRAWsRAW + Large Fine JPEGsRAW + Large Normal JPEGsRAW + Medium Fine JPEGsRAW + Medium Normal JPEGsRAW + Small Fine JPEGsRAW + Small Normal JPEGsRGBsRGB (nature)sRGB (portrait)sierra SPARClite library Scott Fritzinger Support for sierra-based digital cameras including Olympus, Nikon, Epson, and Pentax. Thanks to Data Engines (www.dataengines.com) for the use of their Olympus C-3030Z for USB support implementation.spca50x library vsq905 generic driver Theodore Kilgore sq905C generic driver Theodore Kilgore standardsuperfinesx330z is USB onlytime setunable to guess initial CRC value undefinedunexpected datatype %iunknown (0x%02x)unknown compression %d, unknown resolution %d) vCalendar1vCalendar2vCard2vCard3warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2 2.5.8 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2015-07-12 14:27+0300 Last-Translator: Yuri Chornoivan Language-Team: Ukrainian Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); X-Generator: Lokalize 1.5 ДоÑтупна ємніÑть: %s Підтримка Canon Wifi Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð², Тип Файлової ÑиÑтеми: %s Вільний проÑтір (байтів): %llu (%lu МБ) Вільний проÑтір (зображень): %d Загальне Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ, МакÑимальна ємніÑть: %llu (%lu МБ) Підтримка Nikon Wifi Ðемає Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ, Тип ноÑÑ–Ñ: %s ÐžÐ¿Ð¸Ñ Ð½Ð°ÐºÐ¾Ð¿Ð¸Ñ‡ÑƒÐ²Ð°Ñ‡Ð°: %s Мітка тому: %s Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°: Модель: %s ВлаÑник: %s ЖивленнÑ: %s Карта пам'Ñті: %s ЧаÑ: %s Формати захопленнÑ: МожливоÑті приÑтрою: Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ влаÑтивоÑті приÑтрою: Зведена Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ накопичувачі: ПриÑтрій %s %11s вÑього байтів %11s доÑтупно байтів Серійний номер: %s ВерÑÑ–Ñ: %s (акумулÑтор зарÑджений на %d%%) Помилка PTP %04x при запиті Ð’Ñього пам'Ñті %8d байт. Вільно пам'Ñті %8d байт. КількіÑть файлів: %d помилка %x у запиті. не прочитано. %.0f mm%.1f зупинок%0.4f Ñ%d %d/%dБагатокадрове Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð² %d%d мм%d/%d%f%i (невідомо)Отримано %i байтів про невідомий формат зображеннÑ. Запишіть у %s та попроÑіть про допомогу.%i зображень не вдалоÑÑŒ видалити, тому що вони захищені%lld (невідомо)%s (Ñ‡Ð°Ñ ÐºÐ¾Ð¼Ð¿'ютера %s%i Ñекунд)%sкнопка затвора Canon EOS%sÐ·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Nikon 2%sÐ·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Nikon 3 Бібліотека Ð´Ð»Ñ (Traveler) SX330z (та інших фотоапаратів Aldi). Також мають працювати апарати таких виробників, Ñк Jenoptik, Skanhex, Maginon. ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилки та відгуки надÑилайте за адреÑою: Dominik Kuhlen * ЧаÑто артефакти на зображеннÑÑ… або збої передачі даних виникають внаÑлідок недоÑтатнього зарÑду акумулÑтора. * Зроблені цим апаратом по віддаленій команді знімки зберігаютьÑÑ Ñƒ тимчаÑовому ОЗУ, та не запиÑуютьÑÑ Ð½Ð° карту пам'Ñті. * Витримка при зйомці фотографії може бути задана вручну або визначатиÑÑŒ автоматично. * Поки що ÑкіÑть зображень поÑтупаєтьÑÑ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ð¹ ÑкоÑті. *Ðевідомо*+NEF (RAW)-0.5-1.0-1.5-2.00.00,1 м0.50,5 м11 (короткий)1 ЗЕ1 кд/Ñ1 хвилина1 хвилина1 крок шв./діафрагма1.01,3 Ñ1.51,6 Ñ1.6x1/1,3 Ñ1/1,6 Ñ1/1000 Ñ1/100 Ñ1/10 Ñ1/1250 Ñ1/125 Ñ1/13 Ñ1/151/15 Ñ1/1600 Ñ1/160 Ñ1/21/2,5 Ñ1/2000 Ñ1/200 Ñ1/20 Ñ1/2500 Ñ1/250 Ñ1/250 Ñ (авто-FP)1/25 Ñ1/2 Ñ1/301/30 Ñ1/3200 Ñ1/320 Ñ1/320 Ñ (авто-FP)1/3 Ñ1/41/4000 Ñ1/400 Ñ1/40 Ñ1/4 Ñ1/5000 Ñ1/500 Ñ1/50 Ñ1/5 Ñ1/601/60 Ñ1/6400 Ñ1/640 Ñ1/6 Ñ1/81/8000 Ñ1/800 Ñ1/80 Ñ1/8 Ñ10 кд/Ñ10 хвилин10 хвилин10 мм10 Ñекунд100%10 Ñ11 кд/Ñ1152 x 86412 мм1280 x 96013 Ñ1515 хвилин15 хвилин15 Ñ16 Ñекунд16:91 Ñ1x22 ЗЕ2 кд/Ñ2 Ñекунди2.02,0 м2,5 Ñ2.5x20 Ñекунд20 Ñ21 точка25%25 Ñ29 mm2 Ñ2x3 (звичайний)3 ЗЕ3 кд/Ñ3030 хвилин30 Ñекунд30 Ñ34 mm3:2ПроÑторове ÑтеженнÑ3 Ñ3x44 кд/Ñ4 Ñекунди41 mm4 Ñ4x5 (довгий)5 кд/Ñ5 хвилин5 хвилин5 Ñекунд50 Гц50%51 mm51 точка51 точка (3D)58 mm5 Ñ5x6 кд/Ñ6 мм6 Ñекунд60 Гц640 x 4806 Ñ6x7 кд/Ñ75%7x88 кд/Ñ8 мм8 Ñекунд8 Ñ8x9 кд/Ñ9 точок9xA-DEPA3200 (160-3200)A6400 (160-6400)A800 (160-800)AB-фільтрБлок живленнÑУ мережі живленнÑблок живленнÑÐ–Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ змінного Ñтруму підключено. Ð–Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ змінного Ñтруму підключено. Ðвтовилка ADLAE та ÑÐ¿Ð°Ð»Ð°Ñ…Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AEЛише Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AEÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AEÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФ із Ð·Ð°Ñ‚Ñ€Ð¸Ð¼ÐºÐ¾ÑŽÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AE (ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ ÑпуÑку)Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФ із затримкоюЛише Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AEлише AEРежим AE-L/AF-LФікÑÐ°Ñ†Ñ–Ñ ÐµÐºÑÐ¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ—Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AE/AFÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AE/AFКнопка Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AEAF 2КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції AEBÐÐºÑ‚Ð¸Ð²ÑƒÐ²Ð°Ð½Ð½Ñ ÐФОблаÑть оÑÐ²Ñ–Ñ‚Ð»ÐµÐ½Ð½Ñ ÐФТочка облаÑті ÐФДопоміжна лампа ÐФРежим звукового Ñигналу ÐФВідÑтань ÐФAF LCD верхній режим 2Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФ із Ð·Ð°Ñ‚Ñ€Ð¸Ð¼ÐºÐ¾ÑŽÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФЛише Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФЛише Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐÐ¤Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФРежим ÐФAF увімкненоКнопка Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ ÐФЛише Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐФAF-AAF-CПріоритетніÑть режиму AF-CAF-ONAF-SПріоритетніÑть режиму AF-SAF11AF51ШІ-фокуÑШІ-приводВерÑÑ–Ñ ASIC: %d.%d СпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ASXÐВТОAVПараметр Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ AVМакÑимум діафрагмиПріоритет відкритої діафрагмиДрайвер картинних рамок AX203 USB Hans de Goede За допомогою цього драйвера можна отримувати, вивантажувати та вилучати файли з картинної рамки.ЗаÑновані на AX203 картинні рамки можуть працювати у широкому Ñпектрі роздільних здатноÑтей. За допомогою драйвера gphoto Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¸Ñ… приÑтроїв ви зможете звантажувати, вивантажувати Ñ– вилучати файли з картинної рамки.A_DEPПро Konica Q-M150: У цьому фотоапараті не передбачено можливоÑтей зовнішнього налаштовуваннÑ, тому можна лише переглÑдати поточні параметри, але щоÑÑŒ змінити неможливо. Якщо під Ñ‡Ð°Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ з цим драйвером у Ð²Ð°Ñ Ð²Ð¸Ð½Ð¸ÐºÐ½ÑƒÑ‚ÑŒ проблеми, будь лаÑка, звернітьÑÑ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾ÑŽ поштою до його авторів. ÐбÑтрактний звуковий альбомÐбÑтрактний звуковий ÑпиÑок відтвореннÑÐбÑтрактний аудіо-відео ÑпиÑок відтвореннÑÐбÑтрактний пункт календарÑÐбÑтрактний продукт з главамиÐбÑтрактний контактÐбÑтрактна група контактівÐбÑтрактний документÐбÑтрактний альбом зображеньÐбÑтрактна медіатранÑлÑціÑÐбÑтрактне повідомленнÑÐбÑтрактний тека повідомленьÐбÑтрактний мультимедійний альбомÐбÑтрактний відеоальбомÐбÑтрактний ÑпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾Ð ÐµÐ¶Ð¸Ð¼ доÑтупуОтримати доÑтуп до верхнього пункту у МОЄМУ МЕÐЮДіÑÐктивний ÑенÑор ÐФÐктивний D-LightingÐктивний Ð·Ð°Ð¿Ð¸Ñ Pic CtrlСпеціальнийAdc65 Benjamin Moos AdobeRGBСкаÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ð³Ð¾ передаваннÑÐазва &альбомуЛужно-марганцевийПомилка у бібліотеці вводу-виводу ('%s'): %sÐевідома помилка. Зв'ÑжітьÑÑ Ð· %s.Рівень кутаПроти червоних Ð¾Ñ‡ÐµÐ¹Ð—Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¸ червоних очейБудь-деБазовий драйвер Ð´Ð»Ñ Aox Theodore Kilgore ДіафрагмаПараметри діафрагмиПараметри діафрагмиДіафрагму зміненоРежим роботиРежим роботи 0Режим роботи 1Ð’Ð¸ÐºÐ¾Ð½Ð°Ð²ÐµÑ†ÑŒÐ†Ð¼â€™Ñ Ñ…ÑƒÐ´Ð¾Ð¶Ð½Ð¸ÐºÐ°Ð¡Ð¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð²ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ кнопку функціїПризначити кнопку функціїПризначити кнопку попереднього переглÑдуДопоміжне ÑвітлоКодек Audible.comÐвтоÐвто + Ð¿Ñ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних очейÐвтодіафрагмаÐвтоматичний вибір вилкиÐÐ²Ñ‚Ð¾Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð½Ñ DXÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð¸ÐºÑ€Ð¸Ð²Ð»ÐµÐ½Ð½ÑмКількіÑть позицій автоекÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Â«Ð²Ð¸Ð»ÐºÐ¸Â»ÐвтоекÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Â«Ð²Ð¸Ð»ÐºÐ¸Â»Ðвто FPОблаÑть автофокуÑуваннÑРежим автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ 2Ðвтоматично визначати ISOÐвтоматичне багатокадрове Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð² ISOÐвтоматичні параметри ISO P/A/DVP Ðвтоматичний лічильник чаÑу у вимкненому ÑтаніÐÐ²Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ (автономно) (у Ñекундах)Ðвтоматичне Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ (комп'ютер) (у Ñекундах)Дані щодо автовимиканнÑМеню автовимиканнÑÐвтоматичне вимиканнÑÐ§Ð°Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½ÑТаймери автовимиканнÑÐвтоматичне вимиканнÑÐвтоматичне Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ (хвилин)Ðвтоуповільнена Ñинхр.Ðвтоматичний Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾Ð—Ð°Ð¿Ð°Ð¼'ÑÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ витримкиÐвтофокуÑ: AI focusÐвтофокуÑ: AI servoÐвтофокуÑ: one-shotÐвточутливіÑтьÐвто, Ð·Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ñті очейРежим автофокуÑуваннÑПомилка автофокуÑуваннÑ.ÐвтоматичноÐвтомат Ðвтоматика (без Ñпалаху)Ðвтоматичний ÑпалахÐвтоматично режим макроÐвтоматично режим макро (зблизька)ÐÐ²Ñ‚Ð¾Ð·Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ñті очейÐвтоматичне Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ під Ñ‡Ð°Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑдуÐвтоматичний ÑпалахÐвтоматичний Ñпалах при зйомціКольри оÑеніAvМакÑимум діафрагмиПріоритет макÑимуму діафрагмиПріоритет відкритої діафрагмиМакÑимум відкритої діафрагмиДоÑтупні знімкиДоÑтупна пам'Ñть: СереднійСередні розміри файлівСереднє вимірюваннÑЧ/БЧБКонтраÑтніÑть ЧБЕфект Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð§Ð‘Ð¢Ð¸Ð¿ параметра ЧБЧіткіÑть ЧБПідÑвічуваннÑÐеправильний EOTÐеправильні Ñимволи (0x%x, 0x%x). Зв'ÑжітьÑÑ Ð· %s.Ðеправильна контрольна Ñума - отримано 0x%02x, очікувалоÑÑŒ 0x%02x.Ðеправильні дані - отримано 0x%02x, очікувалоÑÑŒ 0x%02x або 0x%02x.Ðеправильні дані - отримано 0x%02x, очікувалоÑÑŒ 0x%02x.Ðеправильна екÑÐ¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ (можливо бракує оÑвітленнÑ)Ðеправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñтану карти %dÐеправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñтану об'єктива %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev ДоÑÐ»Ñ–Ð´Ð¶ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ зображеннÑ: Jeff Laing Реалізовано викориÑтовуючи документацію з Інтернет за згодою Vision.ЗарÑд акумулÑтора недоÑтатній.ЗарÑд акумулÑтора у нормі.ÐкумулÑторСтан акумулÑторівРівень зарÑду батареїЗарÑд акумулÑтора: %s ЧиÑло зображень: %d Мінімальний об'єм, що залишивÑÑ: %d ЗайнÑто: %s ЗарÑдка Ñпалаху: %s Стан об'єктива: Робота від акумулÑтора: %i Ðизький рівень зарÑдуРежим акумулÑтораТип акумулÑтораÐкумулÑтор розрÑджений, фотоапарат вимкнений.ЗарÑд акумулÑтора: %.1f Вольт. РевізіÑ: %08x.Стан акумулÑтора: %s, Блок живленнÑ: %s ПлÑжПлÑж/Ðа ÑнігуСигналРежим ÑигналуРежим Ñигналу зміненоСигнал вимкненоСигнал увімкненоПочаток Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°ÐайкращеБітова швидкіÑть %ld не підтримуєтьÑÑ.Чорно-білийЧорно-білийЧорна дошкаЧорно-білийЧорна дошкаЧорно/білийБлиманнÑЦвітіннÑСинійЗнизуРежим вилкиПорÑдок вилкиВÑтановлено дужкуÐвтовилкаКроки «вилки» C 0.3Кроки «вилки» C 0.7Кроки «вилки» C 1.0Кроки «вилки» C 2.0Кроки «вилки» C 3.0Ðвтовилку увімкненоКадри Ñ– кроки «вилки»Кроки «вилки» S 0.3Кроки «вилки» S 0.7Кроки «вилки» S 1.0Кроки «вилки» S 2.0Кроки «вилки» S 3.0Вилка екÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ WB HiВилка екÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ WB LoÐ Ð¾Ð·Ð±Ð¸Ñ‚Ñ‚Ñ Ð°Ð²Ñ‚Ð¾Ð²Ð¸Ð»ÐºÐ¸Ð¯ÑкравіÑть+ЯÑкравіÑть-ЯÑкравіÑтьЯÑкравіÑть+ЯÑкравіÑть-ЯÑкравіÑть/контраÑтВбудована RAMВбудована ROMКнопкаТриваліÑть наддовгої екÑпозиціїРежим кнопкиСпалахІнтервал між ÑпалахамиКількіÑть ÑпалахівЗайнÑтоКнопки та набірÐомер ПЗЗСерійний номер ПЗЗCHDKСкрипт CHDKCHDK не вивів з режиму запиÑу.CRWМеню CSMФотоапаратДії фотоапаратаІдентифікатор оÑнови Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸Ð”Ð°Ñ‚Ð° та Ñ‡Ð°Ñ Ð½Ð° фотоапаратіID фотоапарата: %s Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° Kodak DC215 Zoom. Michael Koltan Виробник фотоапаратаРежим фотоапаратаРежим фотоапарата не коригує чиÑла FМодель фотоапаратаМодель фотоапарата: %s Фотоапарат не готовийФотоапарат ГÐРÐЗД.ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°Ð”Ð°Ð½Ñ–, виведені фотоапаратомВлаÑник фотоапаратаПараметри фотоапаратаДані щодо Ñтану фотоапаратаÐÐ°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° та драйвераЗдаєтьÑÑ, фотоапарат не викориÑтовує ноÑій даних CompactFlash. Ðа жаль, у поточній верÑÑ–Ñ— підтримки таких фотоапаратів не передбачено :-( Фотоапарат зайнÑтий. Якщо Ñ†Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° виникає поÑтійно, зв'ÑжітьÑÑ Ð· %s.Фотоапарат не може ÑкаÑувати операціюФотоапарат не приймає параметри. Зв'ÑжітьÑÑ Ð· %s.У драйвері фотоапарата '%s' відÑÑƒÑ‚Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ 'camera_init'.Фотоапарат має пам'Ñть. Фотоапаратом було знÑто %d фотографій. Фотоапарат викориÑтовує ноÑій даних CompactFlash. Фотоапарат налаштовано на пульÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° Ñвітла з чаÑтотою %d Гц. Фотоапарат у неправильному режимі. Зв'ÑжітьÑÑ Ð· %s.Фотоапарат не готовий, помилка get_battery: %sФотоапарат неготовий, чиÑленні помилки на запит 'Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°': %sЗнімки фотоапарата монохромні. Ð§Ð°Ñ Ð´Ð¾ переходу фотоапарата у ÑплÑчий режим (Ñекунд)Фотоапарат 3 рази відмовлÑєтьÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ з'єднаннÑ.Фотоапарат відкинув команду.Самовільне ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ñтану фотоапарата.Фотоапарат надіÑлав неочікувані дані 0x%02x.Фотоапарат не підтримує мініатюри. Фотоапарат підтримує відео. Фотоапарат підтримує відеоформати:Ð§Ð°Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°: %s %s Фотоапарат недоÑтупнийФотоапарат недоÑтупний: %sФотоапарат вже активнийФотоапарат виведений з режиму ÑÐ½ÑƒÐ—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¸Ñ… зображень неможливе. Ðевідома помилка.Ðе вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ уÑÑ– зображеннÑ.Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %s.Ðе вдалоÑÑ Ð²Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ це Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ фотоапарат. Виникла помилка.СкаÑувати автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… фотоапаратів CanonСвітло ÑвічокÐе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ інформацію про доÑтупну пам'ÑтьÐе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ дані про ємніÑть акумулÑтораÐе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ назву теки, що міÑтить зображеннÑРежим автоекÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ CanonÐ—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ CanonПомилка Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ CanonÐ—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ EOS CanonÐе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Canon EOSÐе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: можливо, Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° картку заборонено?Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: можливо, перевернуте зображеннÑ?Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: можливо, немає фокуÑуваннÑ?Ðе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: можливо, на картці не залишилоÑÑ Ð²Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ міÑцÑ?Механізм Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Canon EOS не зміг здійÑнити ÑпуÑканнÑ: невідома помилка %d, будь лаÑка, повідомте авторам програми.Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Canon EOS: %xПомилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ повного натиÑÐºÐ°Ð½Ð½Ñ Canon EOSПомилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ повного відпуÑÐºÐ°Ð½Ð½Ñ Canon EOSПомилка під Ñ‡Ð°Ñ Ñпроби Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð²Ð½ÐµÑених змін Canon EOSПомилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ напівнатиÑÐºÐ°Ð½Ð½Ñ Canon EOSПомилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ напіввідпуÑÐºÐ°Ð½Ð½Ñ Canon EOSВіддалений ÑпуÑк Canon EOSÐе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Canon EOS: 0x%xВидошукач Canon EOSМаÑштаб Canon EOSÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð¼Ð°ÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Canon EOSДрайвер Ð´Ð»Ñ Canon PowerShot Ñтворений Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ A5 - Ole W. Saastad Додаткові вдоÑÐºÐ¾Ð½Ð°Ð»ÐµÐ½Ð½Ñ Holger Klemm Stephen H. WestinРежим Ð·Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ CanonПомилка Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð²Ð¸Ð´Ð¾ÑˆÑƒÐºÐ°Ñ‡Ð° CanonÐе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ видошукача CanonÐе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ð´Ð¾ÑˆÑƒÐºÐ°Ñ‡Ð° CanonЗйомкаЗатримка захопленнÑПараметри Ð·Ð¹Ð¾Ð¼ÐºÐ¸ÐšÐ»Ð°Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ захопленнÑЦіль зйомкиРежим Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð² зйомкиЗмінено ÐºÐ»Ð°Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ захопленнÑЗйомка цього типу не підтримуєтьÑÑКарткаСтан карти: Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° картку пам'Ñті неможливий.Картка пам'Ñті не форматованаКартка пам'Ñті не відкритаКартка пам'Ñті витÑгнутаКартка захищена від запиÑу.Ðазва картки: %s Вільний проÑтір на картці: %d кБ Картка не підтримуєтьÑÑ.Картку видалено в процеÑÑ– роботи.ПріоритетніÑть Ñтану акумулÑтораРежим Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñередньою кнопкоюРежим ÑпуÑку Ñередньою кнопкоюМаÑштаб Ð´Ð»Ñ Ñ†ÐµÐ½Ñ‚Ñ€Ð°Ð»ÑŒÐ½Ð¾Ñ— кнопкиЦентральна точкаОблаÑть центру маÑЦентрально-зваженийСереднє відноÑно центруЦентрально-зваженийЦентральна точкаЦентрально-зваженийЦентрально-зважене оÑереднене вимінюваннÑЦентрально-зважене вимірюваннÑСередній відноÑно центруЦентрально-зважене вимірюваннÑЗа центромоблаÑть центру маÑЦентральна плÑмаПомилка під Ñ‡Ð°Ñ Ñпроби змінити режим фотоапаратаЗміна запиÑу Pic CtrlЗміна швидкоÑті ... зачекайте...ТекÑтТекÑÑ‚ та звукЗарÑджаєтьÑÑПомилка в контрольній ÑуміДітиДітиВиберіть кольорову температуруВибрати чиÑло об’єктива без процеÑораОчиÑтити датчик зображеннÑОчиÑтити датчикОчиÑтити ноÑій данихЗакрити ÑеанÑЗакрити ÑеанÑÐ—Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ð·Ð±Ð»Ð¸Ð·ÑŒÐºÐ°Ðайближча Ñ‚ÐµÐ¼Ð°Ð—Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ð·Ð±Ð»Ð¸Ð·ÑŒÐºÐ°Ð¥Ð¼Ð°Ñ€Ð½Ð¾Ð¢ÑƒÐ¼Ð°Ð½Ð½Ð¸Ð¹ Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ÐšÐ¾Ð»Ñ–Ñ€ÐŸÑ–Ð´ÑÐ¸Ð»ÐµÐ½Ð½Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€ÑƒÐ ÐµÐ¶Ð¸Ð¼ кольоруРежим кольоруПараметри кольорівПроÑтір кольорівКольорова температураКолір або режим роботиКольоровий еÑкізКольорова температураОперацію неможливо ÑкаÑувати.Помилка порÑдку Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´.КомандувачПомилка зв'Ñзку 1Помилка зв'Ñзку 2Помилка зв'Ñзку 3Помилка зв'Ñзку навіть піÑÐ»Ñ 2 Ñпроб. Зв'ÑжітьÑÑ Ð· %s.ВиÑвлено картку Compact Flash Карта CompactFlashРежим ÑуміÑноÑтіСтиÑненнÑПараметри ÑтиÑненнÑÐалаштовуваннÑПараметри фотоапарата FUJIФотоапарат підключенийÐеперервнийÐеперервне ÐФÐеперервне виÑокошвидкіÑне зніманнÑÐеперервно з повільною швидкіÑтюÐеперервне низькошвидкіÑне зніманнÑÐеперервне зніманнÑВиÑока швидкіÑть неперервного зніманнÑПовільна швидкіÑть неперервного зніманнÑВиÑока неперервна швидкіÑтьÐеперервно з виÑокою швидкіÑтюÐеперервно з повільною швидкіÑтюÐеперервний без ÑповіщеньÐеперервно-приводове ÐФКонтраÑтніÑтьКонтраÑÑ‚+КонтраÑÑ‚-Копіювати об'єкт'ÐвторÑьке правоÐвторÑьке право (макÑ. 20 Ñимволів)Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ авторÑькі праваВідомоÑті щодо авторÑьких правДані пошкодженіÐе вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %i байтів Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼Ð°Ð»ÑŽÐ½ÐºÑƒ.Ðе вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %i байтів Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼Ñ–Ð½Ñ–Ð°Ñ‚ÑŽÑ€Ð¸.Ðе вдалоÑÑ Ð·Ð°ÑтоÑувати параметри USBÐе вдалоÑÑ Ð²Ñтановити швидкіÑть ISOÐе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ діафрагмуÐе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ режим ÑигналуÐе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ ÐµÐºÑпозиціїÐе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ режим Ñпалахуне вдаєтьÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ режим фокуÑуваннÑÐе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ формат зображеннÑÐе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ режим зніманнÑÐе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ швидкіÑть затвораÐе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ файла «%s» у «%s» (%s).Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ маÑштабÐе вдалоÑÑ Ð·Ð²'ÑзатиÑÑŒ з фотоапаратом.Ðе вдалоÑÑ Ñтворити каталог \DCIMÐе вдалоÑÑ Ñтворити цільовий каталог.Ðе вдалоÑÑ Ñтворити каталог %s.Ðе вдалоÑÑ Ñтворити каталог.Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ файл «%s» у теці '%s' (код помилки %i: %s).Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ файл.Фотоапарат не виÑвленоÐе вдалоÑÑ Ð²Ð¸Ñвити фотоапаратів на порту %sÐе вдалоÑÑ Ð²Ñтановити з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· фотоапаратомÐе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ мініатюру JPEG: дані не у форматі JFIFÐе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ мініатюру JPEG: відÑутній початок/кінецьÐе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ файл '%s'.Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ дані локалізації у '%s'Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ інформацію про диÑк: %sÐе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ назву диÑка: %sÐе вдалоÑÑŒ отримати букву приÑтрою карти пам'ÑтіÐе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ інформацію щодо «%s» (%s).Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ інформацію щодо «%s» у «%s» (%s).Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ регіÑтр %i. Зв'ÑжітьÑÑ Ð· %s.Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñ€Ñдок регіÑтру %i. Зв'ÑжітьÑÑ Ð· %s.Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ (фотоапарат повернув код 0x%02x).Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ драйвер фотоапарата '%s' (%s).Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ '%s'.Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ каталог %s.Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ каталог.Ðе вдалоÑÑ Ñкинути Ñтан фотоапарата. Ðе вдалоÑÑ Ð²Ñтановити швидкіÑть %i (фотоапарат повернув код %i).Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‚Ð¸ пакет (код помилки %i). Зв'ÑжітьÑÑ Ð· %s.Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‚Ð¸ пакет, навіть піÑÐ»Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñ… Ñпроб.Ðе вдалоÑÑ Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸, немає вільної назви теки! Тека з назвою 999CANON вже Ñ–Ñнує та міÑтить Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ AUT_9999.JPG.Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл "%s"Створити профіль WifiДата ÑтвореннÑ: %s, дата оÑтаннього викориÑтаннÑ: %sТворчіÑтьCreative PC-CAM 300 Ðвтори: Till Adam та: Miah Gregory Creative PC-CAM600 Ðвтор: Peter Kajberg Поточний режим: режим Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐŸÐ¾Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¹ режим: режим Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐŸÐ¾Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¹ Ñ‡Ð°Ñ Ð½Ð° фотоапараті: %04d-%02d-%02d %02d:%02d Вільної пам'Ñті на картці: %d Зображень на картіі: %d Вільного міÑÑ†Ñ Ð½Ð° картці Ð´Ð»Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ: %d ЗарÑд батареї: %d%%.У поточній верÑÑ–Ñ— PTP реалізовано лише Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² з протоколами USB Ñ– PTP/IP, тип порту %xІншийДодаткові нетипові функціїÐетиповий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ PC-1Ðетиповий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ PC-2Ðетиповий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ PC-3ВлаÑні команди наборуДД/ММ/РРРРDEPВерÑÑ–Ñ DPOFТемне на ÑвітломуДані зіпÑовані!Дата та чаÑФормат датиФормат штампу дати та чаÑуДата та чаÑДата й Ñ‡Ð°Ñ (GMT)Показати дату?Дата: %i/%02i/%02i %02i:%02i:%02i Зроблено знімків: %i ЗалишилоÑÑŒ знімків: %i ВерÑÑ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %s ШвидкіÑть: %s Пам'Ñть: %i мегабайт Режим фотоапарата: %s Рівень ÑкоÑті: %s Параметри Ñпалаху: %s ІнформаціÑ: %s Таймер: %s ЖК: %s Ðвтоматичне вимиканнÑ: %i хвилин Джерело живленнÑ: %sДата: %sДень/МіÑÑць/РікДенне ÑÐ²Ñ–Ñ‚Ð»Ð¾Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ денного ÑвітлаÐалагодженнÑГлибинаТиповий шлюзСтандартний драйвер sierra: Цей драйвер sierra викориÑтовуєтьÑÑ Ñƒ типовому випадку. Він має підтримувати ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ‚Ð° переглÑд файлів у пам'Ñті фотоапарата. Параметри фотоапарата (або вподобаннÑ) оÑновані на Olympus 3040 та швидше за вÑе Ñ” неповними. Якщо ви можете підтвердити, що ÑпиÑок параметрів вашого апарату повний чи зможете додати Ñвій код Ð´Ð»Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ уÑÑ–Ñ… наÑвних параметрів, напишіть у ÑпиÑок розÑилки Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð². Віддалене ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· запізненнÑмВидалитиВидалити об'єктВидалÑєтьÑÑ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %s.Глибина полÑВиÑвлено "%s" або "%s"ВиÑвлено '%s'.Параметри Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð² 1Параметри Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð² 2Параметри Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð² 3Сертифікат приÑтроюЗначок приÑтроюВерÑÑ–Ñ Ð¿Ñ€Ð¸ÑтроюУ приÑтрої не передбачено вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ñ…Ð¸Ñту об’єкта.ПриÑтрою не вдалоÑÑ Ð²Ñтановити режим захиÑту об’єкта %dDigita Johannes Erdfelt Digital Camera Layout (DCIM)Цифрове збільшеннÑЦифрове збільшеннÑЦифрове збільшеннÑЦифрове збільшеннÑDimera 3500 вер. %s %d/%d %d:%d. %d знімків з приблизно %d (виÑока розд. здатніÑть) чи %d (низька розд. здатніÑть). МожливоÑті фотоапарата: %s, %s, %s, %s. Карта пам'Ñті %s, %s та %s. Вибрано роздільну здатніÑть %s. Фотоапарат %s на оÑнові %s ПрÑмий друкРежим переглÑду каталогу - Scott Fritzinger .Каталог Ñ–ÑнуєКаталог не знайденоВимкнути довірені дії з Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸Ð’Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°.Показати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸ÐŸÐ¾ÐºÐ°Ð·Ð°Ñ‚Ð¸ макÑимальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½ÑФормати відображеннÑ: Ðа відÑтаніÐе показувати меню ТБÐевідомо Ñк працювати із значеннÑми camera->port->type, що дорівнюють %i 0x%x у %s, Ñ€Ñдок %i.Програма ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑ–Ð² Ð´Ð»Ñ Digital Dream Enigma 1.3. від , Ñтворена на оÑнові драйвера spca50x. ПодÑка авторам spca50x! Ðдаптувати ваш драйвер Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ апарата було неÑкладно! Програма ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð², побудованих на оÑнові GrandTek 98x. Початковий автор - Chris Byrne , Ð°Ð´Ð°Ð¿Ñ‚Ð°Ñ†Ñ–Ñ Ð´Ð»Ñ gphoto2 - Lutz Mueller . ВдоÑÐºÐ¾Ð½Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ та Ð´Ð¾Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Jenoptik JD350e виконав Michael Trawny . Ð’Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº - Marcus Meissner .Програма ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ Ð´Ð»Ñ Polaroid DC700. Початково програма напиÑана - Ryan Lantzer Ð´Ð»Ñ gphoto-4.x. ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ñ–Ñ Ð´Ð»Ñ gphoto2 - Lutz Mueller .Програма ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑ–Ð² Ð´Ð»Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñ… моделей Polaroid. Початковий автор - Peter Desnoyers , Ð°Ð´Ð°Ð¿Ñ‚Ð°Ñ†Ñ–Ñ Ð´Ð»Ñ gphoto2 - Nathan Stenzel та Lutz Mueller . ТеÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Polaroid 640SE - Michael Golden .КопіюєтьÑÑ %s.Ð—Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ %s…КопіюєтьÑÑ '%s'...КопіюютьÑÑ Ð´Ð°Ð½Ñ– EXIF...КопіюєтьÑÑ Ð·Ð²ÑƒÐº...КопіюютьÑÑ Ð´Ð°Ð½Ñ–...КопіюєтьÑÑ Ñ„Ð°Ð¹Ð»...КопіюєтьÑÑ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %s.КопіюєтьÑÑ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ...КопіюєтьÑÑ Ð²Ñ–Ð´ÐµÐ¾...КопіюєтьÑÑ Ð¼Ñ–Ð½Ñ–Ð°Ñ‚ÑŽÑ€Ð°...ЗавантаженнÑ...Моторне автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… фотоапаратів CanonФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ дзеркальних фотоапаратів CanonРежим мотораМоторне автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… фотоапаратів NikonФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ дзеркальних фотоапаратів NikonДрайверПараметри драйвераДрайвер напиÑав Lutz Mueller . Програма міÑтить код QVplay, що напиÑаний Ken-ichi HAYASHI та Jun-ichiro "itojun" Itoh . Інтеграцію QVplay виконав Michael Haardt .Подвійна іриÑова діаграмаСутінкиСвітанок/СутінкиПомилка пошуку еталона пилуОблаÑть динамічного ÐФДинамічна облаÑть (21)Динамічна облаÑть (51)Динамічна облаÑть (9)ÐФ за динамічною облаÑтюÐФ за динамічною облаÑтю з пріоритетом найближчого об’єктаПомилка в контрольній Ñумі ППЗУ.ПОМИЛКÐ: %d надто великийПОМИЛКÐ: критична помилка. Продовжувати неможливоПОМИЛКÐ: неправильний формат повідомленнÑ.ПОМИЛКÐ: накладка повідомленьПОМИЛКÐ: Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ñ‡ÐµÑ€Ð³Ð¾Ð²Ð¾ÑтіПОМИЛКÐ: неÑподіване повідомленнÑПОМИЛКÐ: неочікуване повідомленнÑ2.ПОМИЛКÐ: неочікуваний тип пакету.ESPESSIDКрок Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐµÐºÑпозиціїРежим EVFРозмір EZoom Ð´Ð»Ñ Ñ‚ÐµÐ»ÐµÐ¾Ð±â€™Ñ”ÐºÑ‚Ð¸Ð²Ð°ÐŸÐ¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ EZoomЕкономний друкРежим ефектівЕфектиКритичний ÑтанПуÑтоУвімкнути Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ñьких правУвімкнути коментар до зображеннÑУвімкнути довірені дії з файламиEncounterEncounter BoxШифруваннÑКлюч ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ (шіÑтн)Кінець Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð—Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚Ð¸ довірений ÑÐµÐ°Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ з програмоюÐнглійÑькаПокращенаПомилкаПомилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÐ°ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° зміни швидкоÑтіПомилка зміни швидкоÑті.Помилка Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²'Ñзаного файла мініатюриПомилка Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° «%s»: %sПомилка Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ ACK при ініціалізаціїПомилка Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñигналу ACK під Ñ‡Ð°Ñ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ—, робимо повторну ÑпробуОціночнийОціночне вимірюваннÑРежим імітації подійВÑюдиВиконати наперед визначену команду з параметром.ОчікувалоÑÑŒ %i байтів, отримано %i. Повідомте про цю помилку за адреÑою %s.ОчікувалоÑÑŒ %i, отримано %i. Повідомте про цю помилку за адреÑою %s.ОчікувалоÑÑŒ 32 байти, отримано %i. Зв'ÑжітьÑÑ Ð· %s.Ð†Ð½Ð´ÐµÐºÑ ÐµÐºÑпозиціїЕкÑпозиціÑÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸ екÑпозиціїЦентр оÑнови екÑпонуваннÑÐœÐ°Ñ‚Ñ€Ð¸Ñ†Ñ Ð¾Ñнови екÑпонуваннÑПлÑма оÑнови екÑпонуваннÑÐšÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ ÐµÐºÑпозиціїПрограма автовилки екÑпонуваннÑКрок автовилки екÑпонуваннÑКомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиціїКомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції (EV)Режим затримки екÑпонуваннÑСтан показу екÑпонуваннÑКрок екÑÐ¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ISOÐ†Ð½Ð´ÐµÐºÑ ÐµÐºÑпозиції (швидкіÑть за ISO)Лампочка індикатора екÑпонуваннÑСтан індикатора екÑпонуваннÑÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐµÐºÑпозиціїЛічильник екÑпозиціїЗамір екÑпозиціїРежим виміру екÑпозиціїПрограма екÑпозиціїРежим програмованої екÑпозиціїКрок екÑÐ¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ—Ð§Ð°Ñ ÐµÐºÑпозиціїКомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиціїЗмінено Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ ÐµÐºÑпозиціїКомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції: %d КомпенÑÐ°Ñ†Ñ–Ñ ÐµÐºÑпозиції: %s Режим затримки екÑпонуваннÑТриваліÑть екÑпозиції при попередньому переглÑдіЗовнішній ÑпалахЗовнішній Ñпалах з’єднано з Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼Ð—Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ ÐºÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ ÐµÐºÑпозиціїРежим зовнішнього ÑпалахуТип зовнішнього ÑпалахуСтан зовнішнього ÑÐ¿Ð°Ð»Ð°Ñ…ÑƒÐ—Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ ÑинхронізаціÑДуже виÑокийЧиÑло FF2F2.3F2.8F4F5.6F8КРИТИЧÐРПОМИЛКÐ: невідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ñ— Ñуми Ð´Ð»Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ %d ППЗУ: Файлів: %d Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡Ð¸Ñла FÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ FVÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ FVÐФ з пріоритетом обличЗаводÑькі параметриÐе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ liveview на Nikon 1, хоча Ñ†Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ñть Ñ” обов’Ñзковою Ð´Ð»Ñ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½ÑÐадійнийДалеко %dДалеко 1Далеко 2Далеко 3Ð”Ð°Ð»ÑŒÐ½Ñ ÑценаШвидка файлова ÑиÑтемаШвидкий затворФайлÐе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ файл '%s' у теці '%s'.Файл '%s/%s' не Ñ–Ñнує.Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð², ВпорÑÐ´ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ„Ð°Ð¹Ð»Ñ–Ð²Ð’Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² СтиÑÐ½ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»ÑƒÐ¤Ð°Ð¹Ð» Ñ–ÑнуєФайл не знайденоФайл захищений.Роздільна здатніÑтьРозмір файла Ñкладає %ld байт. МакÑимально можливий розмір Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ: %i байт.Тип файлуПомилка Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ.Файл надто великий. Перш ніж вивантажувати інші файли Ñлід вимкнути фотоапарат та увімкнути знову.Конфлікт назв файлівÐекоректна назва файлаСлід вказати назву файлаТип файлу: FlashPix (Тип файлу: JPEG (СпалахДиÑплей видошукача ISOВдоÑконаленийФеєрверкМікропрограмаВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %8sВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %8s Зображень: %i Ð’Ñього пам'Ñті: %iкб Вільної пам'Ñті: %iкб ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %d.%d ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸Ð’ÐµÑ€ÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %d.%02d ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %d.%d Риб'Ñче окоФікÑованийСпалахСпалах зарÑджаєтьÑÑКоманда A-компенÑації ÑпалахуКоманда A-режиму ÑÐ¿Ð°Ð»Ð°Ñ…ÑƒÐ—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ A ÑпалахуКоманда B-компенÑації ÑпалахуКоманда B-режиму ÑÐ¿Ð°Ð»Ð°Ñ…ÑƒÐ—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ B ÑпалахуКоманда каналу ÑпалахуКоманда автоматичної компенÑації ÑпалахуКоманда автоматичного режиму ÑÐ¿Ð°Ð»Ð°Ñ…ÑƒÐ—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Self ÑпалахуРежим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÑÐ¿Ð°Ð»Ð°Ñ…Ð¾Ð¼Ð–Ð¸Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÑпалахомКомпенÑÐ°Ñ†Ñ–Ñ ÑпалахуКомпенÑÐ°Ñ†Ñ–Ñ Ð²Ð¸Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ ÑпалахуРівень Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÑÐ¿Ð°Ð»Ð°Ñ…ÑƒÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÑпалахуКількіÑть MRepeat ÑпалахуІнтервал MRepeat ÑÐ¿Ð°Ð»Ð°Ñ…ÑƒÐ—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ MRepeat ÑпалахуРежим ÑÐ¿Ð°Ð»Ð°Ñ…ÑƒÐ–Ð¸Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð¼ ÑпалахуРучне вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚ÑƒÐ¶Ð½Ð¾Ñті ÑпалахуСпалах вимкненоСпалах підключенийКількіÑть ÑпалахівПараметри ÑпалахуПараметри ÑпалахуШвидкіÑть затвора при ÑпалахуЗнак ÑпалахуШвидкіÑть Ñинхронізації ÑÐ¿Ð°Ð»Ð°Ñ…ÑƒÐ‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ ÑпалахуÐвтоÑпалахРежим Ñпалаху зміненоРежим Ñпалаху: автоматично, Режим Ñпалаху: завжди, Режим Ñпалаху: вимкнено Спалах вимкненоСпалах увімкненоЛише ÑпалахСпалах/ДіафрагмаСпалах/ШвидкіÑтьСпалах/ШвидкіÑть/ДіафрагмаСпалах: ÐвтоСпалах: Ðвто (Проти червоних очей)Спалах: ВимкнСпалах: УвімкнСпалах: Увімкн (Проти червоних очей)Спалах: не визначеноFlashPixГнучка програмаУÑÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð»Ð¸Ð¼Ð°Ð½Ð½ÑФлуореÑцентне оÑвітленнÑТип флуореÑцентного оÑвітленнÑФлуореÑцентна-1-дім-6700KФлуореÑцентна-2-Ñтільн-5000KФлуореÑцентна-3-офіÑ-4200KФлуореÑцентна лампаФлуореÑцентний HФлуореÑцентна лампа 1ФлуореÑцентна лампа 2ФлуореÑцентна лампа 3ФлуореÑцентна лампа 4ФлуореÑцентна лампа 5ФлуореÑцентний Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾Ð¤Ð»ÑƒÐ¾Ñ€ÐµÑцентна-1-дім-6700KФлуореÑцентна-2-Ñтільн-5000KФлуореÑцентна-3-офіÑ-4200KФлуореÑцентна лампа: холодне біле ÑвітлоФлуореÑцентна лампа: денне біле ÑвітлоФлуореÑцентна лампа: денне ÑвітлоФлуореÑцентна лампа: тепле біле ÑвітлоФокуÑна відÑтаньЗнаменник фокуÑної відÑтаніМакÑимальна фокуÑна відÑтаньМінімальна фокуÑна відÑтаньФокуÑна відÑтань телеоб’єктиваШирока фокуÑна відÑтаньФокуÑОблаÑть фокуÑуваннÑОблаÑть фокуÑуваннÑЗона облаÑті фокуÑуваннÑОблаÑті фокуÑуваннÑФокуÑна відÑтаньДані фокуÑуваннÑÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾ÐºÑƒÑуваннÑÐ’Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾ÐºÑƒÑаРежим Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾ÐºÑƒÑаРежим фокуÑуваннÑРежим фокуÑÑƒÐ²Ð°Ð½Ð½Ñ 2ЯÑкравіÑть точки фокуÑуваннÑРежим фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ñ„Ð¾ÐºÑƒÑуваннÑТочка фокуÑуваннÑТочка фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¸ÑˆÐµ у центрі, автоматичноТочка фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¸ÑˆÐµ у центрі, вручнуПомилка фокуÑуваннÑ.У теці %s зберігаєтьÑÑ Ð»Ð¸ÑˆÐµ %i файлів, вм ж надіÑлали запит щодо файл з номером %i.ЛиÑÑ‚ÑÐ‡Ð¶Ð°Ð”Ð»Ñ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð° натиÑканнÑм кнопки перемкніть режим на «M» Ñ– вÑтановіть швидкіÑть затвора на «bulb».Ð”Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² Ñ Ð¼Ñ–ÐºÑ€Ð¾Ñхемою S&Q Technologies. Працює з gtkam. Знімки зберігаютьÑÑ Ñƒ форматі PPM. Ð’Ñе відомі апарати S&Q мають два режими. Які вони, залежить від конкретної моделі. ДеÑкі з цих фотоапаратів дозволÑють видалÑти будь-Ñкі знімки, але більшіÑть - ні. Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… у пам'Ñть не підтримуєтьÑÑ. Режим ÑтиÑненнÑ, Ñкий Ñ” у багатьох фотоапаратів S&Q чаÑтково підтримуєтьÑÑ. Якщо фотоапарат дозволÑÑ”, відеозапиÑи доÑтупні у виглÑді підкаталогу. Gtkam копіює Ñ—Ñ… окремо. При наÑвноÑті відеозапиÑів перед назвою апарату з'ÑвлÑєтьÑÑ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ¸Ð¹ трикутник. Якщо у ÑпиÑку немає тек, клацніть на трикутникові, щоб відобразити Ñ—Ñ…. Клацніть на теці, щоб увійти у неї та копіювати кадри. Кадри витÑгуютьÑÑ Ñк окремі зображеннÑ, назви Ñких говорÑть, до Ñкої відеопоÑлідовноÑті вони відноÑÑтьÑÑ. Таким чином можна вибрати, чи зберігати кадри у окремих каталогах. Ð”Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² на оÑнові мікроÑхем S&Q Technologies, Ð´Ð»Ñ Ñких передбачено ідентифікатор виробника USB 0x2770 та ідентифікатори продуктів 0x905C, 0x9050, 0x9051, 0x9052 та 0x913D. Фотографії зберігаютьÑÑ Ñƒ форматі PPM. Ðа деÑких з таких фотоапаратів передбачено програмне Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð²ÑÑ–Ñ… фотографій, на інших — ні. Ðа жодному з підтримуваних фотоапаратів не можливе програмне зніманнÑ. Ðа вÑÑ–Ñ… фотоапаратах можливий попередній переглÑд Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ– надÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° комп’ютер). Якщо Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ фотоапарата можливе Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… знімків, попереднє Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚Ð¸Ð¼Ðµ до Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ з фотоапарата. Ð’Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… на такі фотоапарати не передбачено. Крім того, на жодному з підтримуваних фотоапаратів не можна вилучати окремі фотографії за допомогою певної команди, відданої з комп’ютера. ПримуÑовоПримуÑовий Ñпалах Форматувати картку та вÑтановити назву альбому.ÐоÑій Compact FlashФорматувати ноÑійЛишилоÑÑŒ кадрів: %i Отримано знімків : %4d ЗнÑто кадрів: %i Рамкова ÑіткаФранцузькаЗрозуміла назва приÑÑ‚Ñ€Ð¾ÑŽÐ¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð° передньою завіÑоюПовнийПовне зображеннÑПовніÑтю вручнуФормат файлів переглÑду у повному розміріПоÑтійноприводове ÐФФункціональна кнопка 2Режим функціонуваннÑРежим роботи: 0x%04x ЗагальнеЗагальний плоÑкийЗагальний ієрархічнийÐімецькаОтримати наÑтупний блок данихОтримати чаÑтковий об’єкт (з відÑтупом у 64 бітів)Отримувати виклик наближеннÑОтримати відповідь щодо реєÑтраціїОтримати відповідь щодо Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ WMDRM-NDОтримати відповідь WMDRM-PDОтримати Ð¾Ð¿Ð¸Ñ Ð²Ð»Ð°ÑтивоÑті приÑтроюОтримати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті приÑтроюОтримати незалежний Ð¾Ð¿Ð¸Ñ Ð²Ð»Ð°ÑтивоÑтіОтримати ÑÑ‚Ð°Ñ‚ÑƒÑ Ð»Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ—ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ виклик лічильникаОтримати відповідь лічильникаОтримати кількіÑть об'єктівОтримати об'єктОтримати деÑкриптори об'єктів'Отримати інформацію про об'єктОтримати підтримувані влаÑтивоÑті об'єкта'Отримати Ð¾Ð¿Ð¸Ñ Ð²Ð»Ð°ÑтивоÑті об'єктаОтримати ÑпиÑок влаÑтивоÑтей об'єктаОтримати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті об'єктаОтримати поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° об'єктОтримати чаÑтковий об'єктОтримати безпечний виклик чаÑуОтримати безпечну відповідь чаÑуОтримати ID ноÑÑ–ÑОтримати інформацію про ноÑійОтримати Ñинхронний ÑпиÑÐ¾ÐºÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¼Ñ–Ð½Ñ–Ð°Ñ‚ÑŽÑ€ÑƒÐžÑ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ типи придатних до Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ ÑпиÑків відтвореннÑОтримуєтьÑÑ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ...ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…...ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÑпиÑку файлів...ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»ÑƒÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про %i Ñ„Ð°Ð¹Ð»Ñ–Ð²ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¼Ñ–Ð½Ñ–Ð°Ñ‚ÑŽÑ€Ð¸...Отримано неочікуваний результат 0x%x. Зв'ÑжітьÑÑ Ð· %s.Тони ÑірогоТони ÑірогоЗеленийДинаміка групиТип групи PTNВиÑокодинамічний HDRРежим HDRHDR-згладжуваннÑМобільне притлумленнÑÐпаратна помилкаВиÑокий 1ВиÑокий 2ВиÑокаВиÑока (1152 x 872)ВиÑоке (добра ÑкіÑть)ВиÑока 2Потужне уÑÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑƒÐ¼Ñƒ ISOПотужне уÑÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑƒÐ¼Ñƒ ISOВиÑокийТемнеВиÑока чутливіÑтьВиÑокошвидкіÑний затворПідÑвічувати активну точку фокуÑуваннÑУтриманнÑРежим роботи: %s ÐšÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ ÐµÐºÑпозиції: %s Дані екÑпозиції: %d Дата указана: %s Дата: %d/%02d/%02d %02d:%02d:%02d Затримка ÑпуÑку: %s Рівень ÑкоÑті: %s Режим відтвореннÑ/запиÑу: %s ID карти вказано: %s ID карти: %d Режим Ñпалаху: Ð§Ð°Ñ Ð´Ð¾ переходу у ÑплÑчий режим (з'єднаний з комп’ютером) (Ñекунд)Скільки чаÑу мине до автоматичного Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°, коли він з'єднаний з комп'ютером?Скільки чаÑу мине до автоматичного Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°, коли він не з'єднаний з комп'ютером?Скільки чаÑу займе Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¶Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°?ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑƒÐ’Ð¸Ñокої ÑкоÑтіВиконуєтьÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð²Ð²Ð¾Ð´Ñƒ-виводуIDIP адреÑа (Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ Ð´Ð»Ñ DHCP)ISOÐвто ISOÐвтоматичний верхній рівень ISOÐвтоматичний верхній рівень ISOШвидкіÑть ISOШвидкіÑть ISO зміненоЗначкиБездіÑльнийÐедопуÑтимий параметр.Параметр оÑвітленнÑЗображеннÑÐ—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %s захищене від видаленнÑ.Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° Ð·Ð²ÑƒÐºÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½ÑКоментар до зображеннÑÐ’Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ Ð´Ð¾ зображеннÑРÑдок ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ Ð´Ð¾ зображеннÑСтиÑÐºÐ°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½ÑФормат зображеннÑФормат Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ CFФормат Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¾Ð³Ð¾ HDФормат Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ SDРежим зображеннÑЯкіÑть зображеннÑЯкіÑть Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ 2ОглÑд зображеннÑÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½ÑОзнака Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½ÑПараметри зображеннÑРозмір зображеннÑÐ¡Ñ‚Ð°Ð±Ñ–Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½ÑФормат Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾Ð’Ð¸Ñота зображеннÑ: %d Ðеправильний номер зображеннÑ.Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ðµ.Розмір зображеннÑРозмір зображеннÑ: %d Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ %d не підтримуютьÑÑ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼ !Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ %d не підтримуєтьÑÑÐ—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ типу не підтримуютьÑÑШирина зображеннÑ: %d ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ñ‚Ð¸ зображеннÑÐегайноПриєднанийЛампа накалюваннÑДиÑплей індикатораУ приміщенніÐеÑкінченіÑтьÐеÑкінченіÑть/Риб'Ñче окоПараметр інфодиÑплеÑСтан помилки інфодиÑплеÑІнформаціÑÐ†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ фотоапарат типу STV0680: Ð”Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² з ID 0x2770:0x9153. Ðе рекомендуєтьÑÑ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовувати графічну програму з цим фотоапаратом, Ñкщо ви не екÑпериментуєте Ñ– не хочете побачити чи виникне коротке замиканнÑ. Якщо ви Ñправді хочете отримати фотографії, Ñпробуйте gphoto2 -P з командного Ñ€Ñдка. ЗауваженнÑ: навіть не намагайтеÑÑŒ отримати відеокліпи. Ðерозпізнана відповідь фотоапарата '%c'Ð†Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°Ð†Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ захопленнÑІніціювати відкрите захопленнÑКмітливе автоКмітливе Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾ÑÐ¿Ð°Ð»Ð°Ñ…ÑƒÐ’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð°Ð¼'ÑÑ‚ÑŒÐ’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° 1 у get_file_func() (%s Ñ€Ñдок %i)Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° (1).Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° (2).Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° пошуку camlibs. (назви шлÑхів надто довгі?)Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð°Ð¼'Ñть SD: вÑього %d Мб , вільно %d Мб. ПомилкаÐеправильний параметр величини ISOÐекоректний ÑтанÐеправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ( %d ) некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð¸Ðекоректний параметр режиму ÑигналуÐеправильний параметр клаÑу розміру захопленнÑÐекоректний параметр Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ ÐµÐºÑпозиціїÐекоректний параметр режим ÑпалахуÐекоректний режим фокуÑуваннÑÐекоректний параметр формату зображеннÑÐекоректні параметри режиму зніманнÑÐеправильний параметр швидкоÑті затвораПомилка іриÑової діаграми.ІталійÑькаJD11 Marcus Meissner Драйвер фотоапарата Jenoptik JD11. Ð”Ð»Ñ Ð´Ð¾ÑÐ»Ñ–Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ викориÑтовувалиÑÑŒ WINE та IDA.Параметри JD11JPEGБазовий JPEGПравила ÑтиÑÐºÐ°Ð½Ð½Ñ JPEGПокращений JPEGЗвичайний JPEGЗвичайний JPEGЯпонÑькаЗберігати назву файла при вивантаженніДіти Ñ– тваринкиВідомі проблеми: 1. Якщо Kodak DC3200 не отримує команд протÑгом 10 Ñекунд, відбудетьÑÑ Ñ‚Ð°Ð¹Ð¼-аут та знадобитьÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð° ініціалізаціÑ. Якщо апарат переÑтає реагувати, проÑто заново виберіть його. При цьому відбудетьÑÑ Ð½Ð¾Ð²Ð° ініціалізаціÑ.Відомі проблеми: При виникненні помилок передачі даних виконайте перезапуÑк фотоапарата та перезапуÑтіть програму. Драйвер поки не може ÑамоÑтійно виходити з такого Ñтану, оÑобливо, Ñкщо проблема виникає при швидкоÑÑ‚ÑÑ… більших за 9600 та апарат не вимикаєтьÑÑ Ð¿Ð¾Ð²Ð½Ñ–Ñтю.Бібліотека підтримки Kodak DC120 Scott Fritzinger Бібліотека Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼ Kodak DC120. (за чиÑельними вимогами).Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° Kodak DC240 Scott Fritzinger та Hubert Figuiere Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² Kodak DC240, DC280, DC3400 та DC5000. Оновлено та перепиÑано Ð´Ð»Ñ gPhoto2.Драйвер Kodak DC3200 Donn Morrison Ð—Ð°Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° відгуки приймаютьÑÑ Ñ–Ð· вдÑчніÑтю.Драйвер Kodak EZ200 Bucas Jean-Francois Параметра KonicaБібліотека Konica Q-M150 Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Підтримка французької верÑÑ–Ñ— Konica Q-M150.Бібліотека Konica Lutz Mueller Підтримка уÑÑ–Ñ… апаратів Konica та деÑких моделей HP.КорейÑькаLCDÐÐ²Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ (у Ñекундах)Ðвтоматичне Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð Ðš (Ñекунд)ПідÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ð Ðš-екранаПідÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ð Ðš-екрана та інфодиÑплейЯÑкравіÑть РК-екранаПідÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ð Ðš-диÑплеÑРежим РК-ÐµÐºÑ€Ð°Ð½Ð°Ð§Ð°Ñ Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ LCDСвітлодіодБазовий драйвер Ð´Ð»Ñ LG GSM Guillaume Bedot ПейзажМоваДрайвер Largan Hubert Figuiere ВеликийВеликий JPEG доброї ÑкоÑтіВеликий звичайний JPEGЗліваОб’єктив закрито кришкоюФокальна довжина об'єктива (Ðе CPU)Ідентифікатор об'єктиваМакÑимальна діафрагма об'єктива (без CPU)Режим об'єктиваÐазва об'єктиваСорт об’єктиваТип об’єктиваÐапрÑмок об'єктива не відповідає напрÑмку Ñвітла Об'єктив не підключено СвітлоДатчик ÑвітлаСвітле на темномуÐедоÑтатнє оÑвітленнÑ.Перелік профілів WifiПерелік уÑÑ–Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð²Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑƒ файлів у '%s'...ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÑпиÑку тек у '%s'...Літій-іоннийОблаÑть автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ Live ViewФокуÑÑƒÐ²Ð°Ð½Ð½Ñ ÐФ Live ViewРежим ÐФ Live ViewРежим мотора Live ViewМаÑштаб Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Live ViewРежим Live ViewУмова заборони Live ViewСтан Live ViewЗавантажуютьÑÑ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð¸ фотоапарата з '%s'...ЛокальнийЛокалізаціÑПошкоджені дані локалізації.Дані локалізації надто довгі.Ðадто великий файл локалізації!ЗаблокуватиLogitech Clicksmart 310 драйвер Theodore Kilgore Ð—Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð² при довгій екÑÐ¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ—Ð—Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð² при довгій екÑпозиціїПовільна зйомкаПошук фотоапарата ...Схоже, що це модем, а не фотоапаратБез втратЗ втратамиÐизькаÐизька (576 x 436)Ñлабке (краща ÑкіÑть)Ðизька 2Слабе ÑвітлоÐизькошвидкіÑна ÑинхронізаціÑÐизька контраÑтніÑтьЯÑкравеÐизька чутливіÑтьÐизька різкіÑтьÐизькошвидкіÑний Ð·Ð°Ñ‚Ð²Ð¾Ñ€Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ затвора недоÑтупнаСимволи нижнього регіÑтру у %s не допуÑкаютьÑÑ.MM-DEPСпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ M3UM4AMF (фікÑовано)MF (вибір)Компільований до MHT документ HTMLММ/ДД/РРРРСпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ MPLMTR > UnderM_DEPМакроКерованийРучнийВручну 2Ручний фокуÑРучний режим автовилкиПараметр відео вручнуВÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð¸Ñла об’єктива вручнуРучний фокуÑВиробник: %s Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° Mars MR97310 Theodore Kilgore Фотоапарат Mars MR97310. МіÑтить %i знімок. Фотоапарат Mars MR97310. МіÑтить %i знімки. Фотоапарат Mars MR97310. МіÑтить %i знімків. МатрицÑМатричне вимірюваннÑMatthew G. Martin Побудовано на fujiplay від Thierry Bousch МакÑ. діафрагма при макÑ. фокуÑній відÑтаніМакÑ. діафрагма при мін. фокуÑній відÑтаніМакÑимальна фокуÑна відÑтаньМакÑимальнийМакÑ. діафрагма при макÑ. фокуÑній відÑтаніМакÑ. діафрагма при мін. фокуÑній відÑтаніМакÑимум знімківМакÑимальна неперервна поÑлідовніÑть ÑпуÑківМакÑимальна кількіÑть зображень: %d Media CardMedia Card GroupМедіатранÑлÑціÑСереднÑÐ¡ÐµÑ€ÐµÐ´Ð½Ñ (1152 x 872)Середнє (підвищена ÑкіÑть)Середній 1Середній 2Середній 3Середній JPEG доброї ÑкоÑтіПомірно виÑокаПомірно низькийСередній звичайний JPEGПомірно виÑÐ¾ÐºÐ¸Ð¹Ð¡ÐµÑ€ÐµÐ´Ð½Ñ Ñ‡ÑƒÑ‚Ð»Ð¸Ð²Ñ–ÑтьЗалишилоÑÑŒ пам'Ñті: %i байтів Картка пам'ÑтіСтан картки пам'Ñті (%d): %s Пам'Ñті у фотоапараті: %d Мбіт. Ðазва банку A у менюÐазва банку B у менюÐазва банку C у менюÐазва банку D у менюМеню та відтвореннÑМетадані підтримуютьÑÑ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтроїв MTP.Лічильник чаÑу у вимкненому ÑÑ‚Ð°Ð½Ñ–Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ÐšÑ–Ð½ÐµÑ†ÑŒ кроку мотора MfÐедоÑтатніÑть кроку мотора MfМікрофонМікрофон вимкненоЕлектронні таблиці Microsoft Excel (.xls)Microsoft Powerpoint (.ppt)Документ Microsoft WordМінімальна фокуÑна відÑтаньЕфект мініатюриМінімальнийМінімальна швидкіÑть затвораБібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° Minolta Dimage V %s Gus Hartmann ОÑоблива подÑка фірмі Minolta за надані Ñпецифікації.Ð’Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð²Ð³Ð¾Ñ€ÑƒÐŸÐ¾ÑлідовніÑть Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð²Ð³Ð¾Ñ€ÑƒÐ†Ð½ÑˆÑ– параметри екÑпозиції/об'єктиваÐе вказано чиÑÐ»Ð°Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð»Ñми MlMlSpotPosAfLinkMlSpotPosCenterІдентифікатор моделіМодель: Minolta Dimage V (%s) ВерÑÑ–Ñ Ð¿Ñ€Ð¸Ñтрою: %s ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %s Модель: Модель: %s Модель: %s МіÑткіÑть: %i МБ ЖивленнÑ: %s Ð§Ð°Ñ Ð´Ð¾ ÑамовимкненнÑ: %iхв Режим: %s Зображень: %i/%i Показ дати: %s Дата Ñ– чаÑ: %s Модель: %s Пам'Ñть: %d байт з %d доÑтупнихМодель: %s Серійний номер: %s, ВерÑÑ–Ñ Ð¿Ñ€Ð¸Ñтрою: %i.%i ВерÑÑ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %i.%i ВерÑÑ–Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичної програми: %i.%i Ðазва: %s, Виробник: %s Модель: %x, %x, %x, %xМодель: Kodak %s ÐœÐ¾Ð´ÐµÐ»ÑŽÐ²Ð°Ð½Ð½Ñ ÑÐ¿Ð°Ð»Ð°Ñ…ÑƒÐœÐ¾Ð´ÐµÐ»ÑŽÐ²Ð°Ð½Ð½Ñ ÑпалахуСереднÑМоніторЗатримка Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¼Ð¾Ð½Ñ–Ñ‚Ð¾Ñ€Ð°Ð§Ð¾Ñ€Ð½Ð¾-білеМіÑÑць/День/РікПереміÑтити об'Ñ”ÐºÑ‚ÐšÑ–Ð½Ð¾Ð—Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐµÐ¾Ð¡Ð»Ð¾Ñ‚ картки Ð´Ð»Ñ Ð²Ñ–Ð´ÐµÐ¾Ð§Ð¸Ñло F відеоПотужне уÑÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑƒÐ¼Ñƒ ISO відеоШвидкіÑть ISO відеоМікрофон відеоЯкіÑть відеозображеннÑРоздільна здатніÑть відеоРозмір екрана Ð´Ð»Ñ Ð²Ñ–Ð´ÐµÐ¾Ð¨Ð²Ð¸Ð´ÐºÑ–Ñть затвора 2 відеоЗвук до Ð²Ñ–Ð´ÐµÐ¾Ð“Ð¾Ð»Ð¾Ñ Ð· відеоБагатокадрове Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑˆÑƒÐ¼Ñ–Ð²Ð”ÐµÐºÑ–Ð»ÑŒÐºÐ° точокМульти-плÑÐ¼Ð°Ð’Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð° мультиплÑмамиМультиплÑмаДекілька точок фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (центр)Декілька точок фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (ліворуч)Декілька точок фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (без уточненнÑ), вручнуДекілька точок фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (праворуч)Декілька точок фокуÑуваннÑ, автоМножинний вибірMup (Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð²Ð³Ð¾Ñ€Ñƒ)Бібліотека gPhoto2 Ð´Ð»Ñ Mustek MDC-800 Henning Zabel ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ñ–Ñ Ð´Ð»Ñ gphoto2 - Marcus Meissner Підтримує поÑлідовний та USB-протоколи.МоїКольориNEF (Raw)NEF+ОÑноваNEF+FineNEF+ЗвичайнийÐабір автовилки NIKONÐЕ РОЗПІЗÐÐÐОNTSCпараметр NULL "%s" у %s Ñ€Ñдок %iÐазва "%s" з фотоапарата не відповідає відомому фотоапаратаÐадто довга назва '%s' (%li Ñимволів), допуÑкаєтьÑÑ Ð¼Ð°ÐºÑимум 30 Ñимволів.ÐŸÑ€ÐµÑ„Ñ–ÐºÑ Ð½Ð°Ð·Ð²Ð¸Ðазва картки при форматуванні.Близько %dБлизько 1Близько 2Близько 3МаÑка мережіÐейтральнийÐаÑтупнийÐікель-кадмієвийÐікелевий гібриднийÐічний пейзажÐічний портретÐічна ÑценаÐічне баченнÑÐічне баченнÑÐічний пейзажÐічне оÑвітленнÑÐічний Ð·Ð½Ñ–Ð¼Ð¾ÐºÐ—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Nikon 1Nikon Coolpix 880: ÐÐ°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° (вподобаннÑ): Оптичне Ð½Ð°Ð±Ð»Ð¸Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÑŽÑ” неправильно. Ðе вÑÑ– параметри можна Ñк Ñлід читати та змінювати. Ðаприклад, це ÑтоÑуєтьÑÑ Ñ‚Ð¾Ð½ÐºÐ¾Ð³Ð¾ Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого та мови. Переведіть апарат у режим 'M', Ñкщо хочете задати швидкіÑть затвора. Nikon Coolpix 995: Ðабір параметрів цього апарату неповний, напишіть у ÑпиÑок розÑилки розробників gphoto, Ñкщо бажаєте внеÑти Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ñƒ цей драйвер. ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑ–Ð² має працювати правильно. Ð§Ð°Ñ ÐµÐºÑпозиції NikonРежим Ñпалаху NikonВидошукач NikonМотор автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ Nikon не виконав фокуÑуваннÑ.Зміна облаÑті автоматичного фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Nikon працює лише у режимі LiveView.Ðе вдалоÑÑ Ð²Ð¸Ð¼ÐºÐ½ÑƒÑ‚Ð¸ liveview Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° NikonÐе вдалоÑÑ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ liveview NikonГраничне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„Ð¾ÐºÑƒÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Nikon.Кроки фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Nikon Ñ” надто малими.ФокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Nikon працює лише у режимі LiveView.ÐіКартка CF не відпущенаÐе виÑвлено картки Compact Flash Без подвійної іриÑової діаграмиÐемає даних EXIF Ð´Ð»Ñ %sÐемає Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð², Ðемає Ð²Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² Без ÑпалахуÐемає відкритого захопленнÑ, Без індикатора живленнÑБез Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŒÐ½Ð¾Ñ— здатноÑтіÐе вÑтавлена картка SD. Ðемає відповіді від фотоапарата.Ðе знайдено звуковий файл Ð´Ð»Ñ %s ПоÑібник кориÑтувача фотоапарата недоÑтупний. Ðемає карти пам'ÑтіВідÑÑƒÑ‚Ð½Ñ ÐºÐ°Ñ€Ñ‚ÐºÐ° у фотоапараті. Ðемає карти пам'Ñті.ВідÑÑƒÑ‚Ð½Ñ ÐºÐ°Ñ€Ñ‚ÐºÐ° пам'ÑтіПричина невідомаÐемає відповіді від фотоапаратаÐедоÑтатньо міÑÑ†Ñ Ð´Ð»Ñ Ð½Ð¾Ð²Ð¸Ñ… знімків. Слід вилучити декілька Ñтарих зображень.ВідÑутній вільний проÑтір на карті пам'Ñті.Без залежного від виробника Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ ÐемаєÐе вибраноЗвичайнийЗвичайний Ð’Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ ÐФÐФ за звичайною облаÑтюÐеповнийÐедоÑтатньо вільного міÑцÑÐедоÑтатньо пам'Ñті на карті пам'ÑтіÐе у LiveviewÐе у режимі заповненнÑÐеготовийВід'єднанийЗауваженнÑ: немає картки пам'Ñті, деÑкі Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ бути некоректними КількіÑть зображень: %d КількіÑть зображень: %dКількіÑть зображень: %d КількіÑть зображень: %i ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %sВИМКГараздУВІМКПомилка ОС при зв'Ñзку з фотоапаратомВимкнОфіÑOlympus 750 Ultra Zoom: (1) Olympus 750UZ має режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· USB. Щоб перемкнутиÑÑ Ñƒ режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою USB з комп’ютера, увімкніть фотоапарат, відкрийте кришку відÑіку карти пам'Ñті, потім натиÑніть Ñ– утримуйте кнопки «OK» Ñ– «quickview», доки не з'ÑвитьÑÑ Ð¼ÐµÐ½ÑŽ керуваннÑ. Перемкніть фотоапарат у режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ (control). (2) Якщо ви зміните Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÑƒÐ½ÐºÑ‚Ñƒ «Режим РК-екрана» на «Монітор» або «Звичайний», не забудьте перемкнути його на «Вимкнути» до Ð²Ñ–Ð´â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°, інакше ви не зможете викориÑтовувати кнопки фотоапарата. Якщо таке вÑе ж ÑтанетьÑÑ, треба знову з’єднати апарат з комп'ютером Ñ– перемкнути параметр у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«Ð’Ð¸Ð¼ÐºÐ½ÑƒÑ‚Ð¸Â».XML-Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Olympus E Підтримка згорнутого XML у Olympus у поточній верÑÑ–Ñ— доÑтупна лише, Ñкщо вбудовано підтримку libxml2.УвімкУвімкн. (переглÑд Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾)Увімкнено + Ð¿Ñ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних очейПідказки на екраніУвімк, Ð·Ð¼ÐµÐ½ÑˆÐµÐ½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¾Ñті очейОдин знімокÐвтомат у один дотикПідтримуєтьÑÑ Ð»Ð¸ÑˆÐµ Ð·Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ð´Ð¾ кореневої теки - ви запитали ÑпиÑок файлів з теки '%s'.Відкрите захопленнÑ, Відрити ÑеанÑВідкрити ÑеанÑРежим роботиВідмовлено у виконанні діїОперацію ÑкаÑованоОптимальна ÑкіÑÑ‚ÑŒÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½ÑОрієнтаціÑІншеІнші влаÑтивоÑті PTP приÑтроюІнші параметриВиконуєтьÑÑ Ñ–Ð½ÑˆÐ° команда.Поза фокуÑомÐедоÑтатньо пам'ÑтіСкінчилаÑÑŒ пам'Ñть: потрібно %d байтів.СкінчилаÑÑŒ пам'Ñть: потрібно %ld байтів.Ðа Ð²ÑƒÐ»Ð¸Ñ†Ñ–Ð†Ð¼â€™Ñ Ð²Ð»Ð°ÑникаІм'Ñ Ð²Ð»Ð°Ñника зміненоПPALПКСпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ PLSДоÑтуп до PTP забороненоЗапит щодо ÑкаÑÑƒÐ²Ð°Ð½Ð½Ñ PTPЗйомку PTP вже перерваноМало бути надано дані PTPПриÑтрій PTP зайнÑтийВлаÑтивіÑть приÑтрою PTP не підтримуєтьÑÑÐ’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° PTPпомилка введеннÑ-Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ PTPнеповна передача PTPÐеправильний формат коду PTPÐеправильний формат влаÑтивоÑті приÑтрою PTPÐеправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ñтрою PTPÐеправильний код формату об'єкта PTPÐеправильний деÑкриптор об'єкта PTPÐеправильний параметр PTPÐевідомий батьківÑький об'єкт PTPPTP неправильний ідентифікатор ÑховищаÐеправильний ідентифікатор транзакціїМініатюра PTP відÑутнÑВідÑÑƒÑ‚Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð° Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ об'єкт PTPPTP OK!Об'єкт PTP захищений від запиÑÑƒÐžÐ¿ÐµÑ€Ð°Ñ†Ñ–Ñ PTP не підтримуєтьÑÑПараметр PTP не підтримуютьÑÑЧаÑткове Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ PTPВлаÑтивіÑть PTP 0x%04xМало бути надано відповідь PTPПомилка ÑамотеÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ PTPÐ¡ÐµÐ°Ð½Ñ PTP вже Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸Ð¹Ð¡ÐµÐ°Ð½Ñ PTP не відкритийÐепідтримувана ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ PTPÐепідтримувана ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ†Ñ–Ð»Ñ– PTPВерÑÑ–Ñ Ñтандарту PTP: %d.%d Сховище PTP переповненеÐедоÑтупне Ñховище PTPСховище PTP лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½ÑЗатримка PTPТранзакцію PTP ÑкаÑованоÐевідома помилка PTPÐевідомий код виробника PTPВерÑÑ–Ñ PTPДрайвер PTP2 (c)2001-2005, автор — Mariusz Woloszyn . (c)2003-%d, автор — Marcus Meissner . Драйвер підтримує фотоапарати PTP чи PictBridge(tm) та медіапрогравачі, у Ñких передбачено підтримку протоколу MTP. ÐаÑолоджуйтеÑÑŒ!Пакет відхилено фотоапаратом. Зв'ÑжітьÑÑ Ð· %s.Панорамне фокуÑуваннÑПанФокуÑБібліотека gPhoto Ð´Ð»Ñ Panasonic DC1000 Mariusz Zynel ОÑнована на програмі Ð´Ð»Ñ dc1000, Ñку напиÑав Fredrik Roubert Ñ– Galen Brooks .Бібліотека gPhoto2 Ð´Ð»Ñ Panasonic DC1580 Mariusz Zynel ЗаÑновано на програмі Ð´Ð»Ñ dc1000, Ñку напиÑав Fredrik Roubert Ñ– Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder У цій Ñерії фотоапаратів Palmcorder фірма Panasonic вперше заÑтоÑувала технологію Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑ–Ð² PHOTOSHOT. Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°ÑŽÑ‚ÑŒÑÑ Ñƒ форматі JPEG на внутрішній карті пам'Ñті та можуть бути передані на комп'ютер через вбудований поÑлідовний порт. Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°ÑŽÑ‚ÑŒÑÑ Ñƒ одному з двох режимів: ÐОРМÐЛЬÐОМУ — 320x240 та ВИСОКОЯКІСÐОМУ — 640x480. Роздільна здатніÑть ПЗС матриці дорівнює лише 300 тиÑÑчам точок, тому ÑкіÑть знімків доÑить низька.Драйвер Panasonic PV-L859-K/PV-L779-K Palmcorder Andrew Selkirk ПанорамаПараметр 1Параметр 2Параметр 3Ðабір параметрівСпроба обробки Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¶ÐµÑ‚Ð° «%s» / 0x%04x завершилаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ з номером %d.ЧаÑтковийЧаÑткове вимірюваннÑВечірка/У приміщенніШлÑÑ… не Ñ” абÑолютнимВидимий тип приÑтроюПоÑтійні параметриЗнімок домашнього улюбленцÑÐ¤Ð¾Ñ‚Ð¾ÐµÑ„ÐµÐºÑ‚Ð’Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про фотографіюФото у відеоФотознімків на фотоапараті: %d Ефект зображеннÑÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð°Ð¼ÐºÐ¸ зображеннÑПараметри зображеннÑСтиль зображеннÑЗображеннÑФотознімків на фотоапараті: %d ВідтвореннÑHежим відтвореннÑÐ’Ñ–Ð´Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸Ð†Ð½Ð´ÐµÐºÑ ÐºÐ¾Ð½Ñ‚ÐµÐ¹Ð½ÐµÑ€Ð° відтвореннÑОб'єкт відтвореннÑÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑЧаÑтота відтвореннÑІд. PlaysForSureШвидкіÑть Ð¿Ð¾Ñ€Ñ‚ÑƒÐŸÐ¾Ñ€Ñ‚Ñ€ÐµÑ‚Ð¡Ñ‚ÐµÐ¿ÐµÐ½ÐµÐ²Ð°Ð’Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¶Ð¸Ð²Ð»ÐµÐ½Ð½ÑÐ•ÐºÐ¾Ð½Ð¾Ð¼Ñ–Ñ ÐµÐ½ÐµÑ€Ð³Ñ–Ñ—ÐŸÐ¾Ñ‚ÑƒÐ¶Ð½Ð¸Ð¹ вітерВимкнути Ð¶Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ÑтроюЗатримка перед знімкомШаблонÐетиповий набір параметрів 1Ðетиповий набір параметрів 2Ðетиповий набір параметрів 3Ðетиповий набір параметрів 4Ðетиповий набір параметрів 5ÐатиÑнути 1ÐатиÑнути 2ÐатиÑнути 3ПовніÑтю натиÑнутоÐатиÑнуто наполовинуПереглÑдКнопка попереднього переглÑдуКнопка попереднього переглÑду 2Попередній переглÑд мініатюрПопереднійПомилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½ÑПомилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про зображеннÑПомилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñті зображеньПомилка Ð²Ñ–Ð´ÐºÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ€Ñ‚ÑƒÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð· картиПомилка ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ñтану камериПомилка вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті обміну даними з фотоапаратомПомилка зйомкиОбробити об’єкт WFCID продукту: %02x%02x Ðазва профілюЗаборона Ñпалаху ЯкіÑтьШвидка відповідьВіддалене ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· швидким доÑтупомТриваліÑть швидкого переглÑдуТихий ÑпуÑкRAWRAW + оÑновний JPEGRAW + покращений JPEGRAW + звичайний JPEGRAW + великий JPEG доброї ÑкоÑтіRAW + великий звичайний JPEGRAW + Ñередній JPEG доброї ÑкоÑтіRAW + Ñередній звичайний JPEGRAW + маленький JPEG доброї ÑкоÑтіRAW + маленький звичайний JPEGRAW 2RAW+JPEGПідÑÐ¸Ð»ÐµÐ½Ð½Ñ RGBСтан RTC: %d Бітовий режим RawСтиÑÐ½ÐµÐ½Ð½Ñ Ð½ÐµÐ³Ð°Ñ‚Ð¸Ð²Ð°Ð›Ð¸ÑˆÐµ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· видаленнÑм об'єктів'Лише читаннÑчитаннÑ-запиÑÐе можна змінювати атрибути, такі Ñк ширина та виÑотаГотовийЗадній фронт Ñинхр.Задній фронт Ñинхр. + уповільнена Ñинхр.Задній фронт Ñинхр.Задній фронт Ñинхр. + уповільнена Ñинхр.Отримано неочікувану відповідь (%i). Зв'ÑжітьÑÑ Ð· %s.Отримано неочікувані дані (0x%02x, 0x%02x).Отримано непередбачені дані (%i)Отримано неочікувану Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´ÑŒÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… ...ЗапиÑРежим запиÑуРежим запиÑуРезультат запиÑÑƒÐ—Ð°Ð¿Ð¸Ñ Ð¼ÑƒÐ»ÑŒÑ‚Ð¸Ð¼ÐµÐ´Ñ–Ð¹Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…Ð§ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¹ÐŸÑ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних Ð¾Ñ‡ÐµÐ¹Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ Ð¾Ñ‡Ð°Ð¼Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ Ð¾Ñ‡Ð°Ð¼Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам + уповільнена Ñинхр.Ðвтоматично Ð¿Ñ€Ð¾Ñ‚Ð¸Ð´Ñ–Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ Ð¾Ñ‡Ð°Ð¼Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очамСпалах з запобіганнÑм червоним Ð¾Ñ‡Ð°Ð¼ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ «Червоних Ð¾Ñ‡ÐµÐ¹Â»Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам + уповільнена Ñинхр.СпуÑкСпуÑк + фокуÑуваннÑВідпуÑтити 1ВідпуÑтити 2ВідпуÑтити 3ПовніÑтю відпущеноВідпущено наполовинуРежим ÑпуÑкуВідпуÑÐºÐ°Ð½Ð½Ñ Ð±ÐµÐ· картки CFÐвтономнийВерÑÑ–Ñ Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¾Ð³Ð¾ APIВіддалене Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð²Ð³Ð¾Ñ€ÑƒÐ’Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¸Ð¹ режимВіддалений тайм-аутЗмінна RAM (картка пам'Ñті)Змінна ROMПовтореннÑПовідомлÑти про Ñтворені запиÑиПовідомлÑти про додані Ñ– вилучені запиÑиОчікувана Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %i (= 0x%x), але назад отримано інформацію про Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ %iСкинути банк 0Скинути банк менюСкинути приÑтрійСкинути Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті приÑтроюПовернути точку фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñ†ÐµÐ½Ñ‚Ñ€Ð¡ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ...Роздільна здатніÑÑ‚ÑŒÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŒÐ½Ð¾Ñ— здатноÑтіРоздільна здатніÑть та розмірРеверÑивна команда наборуРеверÑивні індикаториДані щодо відкликаннÑДрайвер Ricoh / Philips Lutz Mueller , Martin Fischer , на оÑнові драйвера от Bob Paauwe Ricoh Caplio G3. Marcus Meissner ДоÑÐ»Ñ–Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ проведено з викориÑтаннÑм USB Snoopy, декомпілÑції мікропрограми та інтуїції. СправаКут обертаннÑОзнака обертаннÑПоворот ÑцениID картки SD: %s Пам'Ñть SD: вÑього %d Мб , вільно %d Мб. SDRAMSDRAM: Файлів: %d Зображень: %4d ВідеозапиÑів: %4d ЗайнÑто: %8d Вільно: %8d SDRamДрайвер картинних рамок ST2205 USB Hans de Goede За допомогою цього драйвера можна отримувати, вивантажувати та вилучати файли з картинної рамки.ЗаÑновані на ST2205 картинні рамки можуть працювати у широкому Ñпектрі роздільних здатноÑтей. За допомогою драйвера gphoto Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¸Ñ… приÑтроїв ви зможете звантажувати, вивантажувати Ñ– вилучати файли з картинної рамки.STV0674 Vincent Sanders Драйвер Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² з процеÑором STV0674. Ð”Ð»Ñ Ð´Ð¾ÑÐ»Ñ–Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ викориÑтовувавÑÑ SnoopyPro STV0680 Adam Harrison Драйвер Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² з процеÑором STV0680. ДоÑÐ»Ñ–Ð´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ виконано за допомогою CommLite Beta 5 Carsten Weinholz Розширено Ð´Ð»Ñ Aiptek PenCam та інших USB фотоапаратів STM з двома режимами.СпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ SamsungÐаÑиченіÑтьСценаРежим ÑцениРозділБезпечний чаÑВибір кольоруВибірковий колірВлаÑний чаÑÐвтоÑпуÑкÐвтоÑпуÑк (лише наÑтупний знімок)Затримка влаÑного таймераКількіÑть знімків за Ñ‚Ð°Ð¹Ð¼ÐµÑ€Ð¾Ð¼Ð§Ð°Ñ Ð°Ð²Ñ‚Ð¾ÑпуÑкуСамотеÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸ÑтроюÐвтоÑпуÑкÐвтоÑпуÑк 10 ÑÐвтоÑпуÑк 2 ÑЗатримка влаÑного таймераÐадіÑлати чаÑтковий об’єктÐадіÑлати відповідь щодо близькоÑтіÐадіÑлати запит щодо реєÑтраціїÐадіÑлати запити щодо Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ WMDRM-NDÐадіÑлати запит щодо WMDRM-PDÐадіÑлати команду WMDRM-PDÐадіÑлати запит WMDRM-PDÐадіÑлати запит лічильнику викликівÐадіÑлати об'єктÐадіÑлати інформацію про об'єктÐадіÑлати ÑпиÑок влаÑтивоÑтей об'єктаПередача даних...ЧутливіÑтьID ÑенÑора: %d.%d СепіÑПоÑлідовніÑть 9Серійний номерСерійний номер: %s Дані щодо ініціатора ÑеанÑуПоÑтійні параметри ÑеанÑуВÑтановити поточну мітку чаÑуВÑтановити облаÑть автофокуÑÑƒÐ²Ð°Ð½Ð½Ñ NikonÐ’Ñтановити режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ NikonПідтримки вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті не передбаченоВÑтановити годинник у фотоапаратіВÑтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті приÑтроюВÑтановити відповідь щодо ліцензіїВÑтановити ÑпиÑок влаÑтивоÑтей об'єктаВÑтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті об'єктаВÑтановити захиÑÑ‚ об'єктаВÑтановити поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° об'єктÐабір параметрів 4Ðабір параметрів 5Ðабір параметрів 6Ðабір параметрів 7РізкоТіньТіниÑтий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾Ð§Ð¸ подавати звуковий Ñигнал при отриманні знімка?Ð Ñ–Ð·ÐºÐ¾ÐŸÑ–Ð´Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ€Ñ–Ð·ÐºÐ¾ÑтіРізкішеЧіткіÑтьСховище знімківÐазва Ñховища знімків AÐазва Ñховища знімків BÐазва Ñховища знімків CÐазва Ñховища знімків DРежим затвораШвидкіÑть затвораРежим зніманнÑЗмінено режим зніманнÑПараметри Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑ–Ð²Ð’Ð¸Ð¼ÐºÐ½ÐµÐ½Ð½ÑЛічильник затвораШвидкіÑть затвораШвидкіÑть затвора (у Ñекундах)ШвидкіÑть затвора (мікроÑекунд, 0 автоматично)ШвидкіÑть затвора 2Кнопка швидкоÑті затвораШвидкіÑть затвора у мікроÑекундах (0 автоматично)ШвидкіÑть затвораШвидкіÑть затвора зміненоЗатвор/AF-ONSiPix Web2 Marcus Meissner Драйвер доÑтупу до веб-камери SiPix Web2.СилуетОдиночний кадрОдиночна облаÑтьЗнімок екранаОкремий кадрОдинарний без ÑповіщеньОднокадрове зніманнÑОдноприводне ÐФÐФ за одиночною облаÑтюОдноприводне ÐФДрайвер Sipix StyleCam Blink Vincent Sanders Marcus Meissner . Пріоритет розміруРежим ÑкоÑті розміруРозмір вхідних Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° данихРозмір вихідних даних з фотоапаратаПропуÑтити наÑтупну позицію у ÑпиÑку відтвореннÑДенне ÑвітлоІнтервал між ÑлайдамиРежим запиÑу Ñлоту 2ПовільноПараметр повільного затвораУповільнена Ñинхр.Повільний затворУповільнена Ñинхр.Уповільнена ÑинхронізаціÑSmal Ultrapocket Lee Benfield Драйвер доÑтупу до апарату Smal Ultrapocket та його OEM-варіантам (slimshot)МалийМаленький JPEG доброї ÑкоÑтіМаленький звичайний JPEGЗгладитиЗгладжуваннÑСнігМ'ÑкоМ'ÑкшеВерÑÑ–Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %s Декілька зауважень відноÑно фотоапарата Epson: - Окремими параметрами неможливо керувати віддалено: * Ð½Ð°Ð±Ð»Ð¸Ð¶ÐµÐ½Ð½Ñ * Ñ„Ð¾ÐºÑƒÑ * параметри баланÑу білого - ДекомпілÑÑ†Ñ–Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² конфігурації виконувалаÑÑŒ на PhotoPC 3000z. Якщо ваш апарат працює інакше, напишіть, за адреÑою %s (англійÑькою) Декілька зауважень про фотоапарати Epson: - Певними параметрами неможливо керувати віддалено: * Ð½Ð°Ð±Ð»Ð¸Ð¶ÐµÐ½Ð½Ñ * Ñ„Ð¾ÐºÑƒÑ * параметри баланÑу білого - ДекомпілÑÑ†Ñ–Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² конфігурації виконувалаÑÑŒ з PhotoPC 3000z, Ñкщо ваш апарат працює інакше, напишіть про це у ÑпиÑок розÑилки Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð² gphoto (англійÑькою) Декілька зауважень щодо фотоапаратів Olympus (та інших?): (1) ÐÐ°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°: Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0 означає типові параметри (авто). (2) Olympus C-3040Z (можливо також C-2040Z та інші) мають режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· комп'ютера через через USB. Щоб його викориÑтовувати, фотоапарат треба перемикнути у режим 'USB PC control mode'. Щоб потрапити до меню вибору режиму, увімкніть апарат, відкрийте кришку відÑіку картки пам'Ñті, натиÑніть Ñ– утримуйте кнопки меню та РК екрана доки не з'ÑвитьÑÑ Ð¼ÐµÐ½ÑŽ керуваннÑ. Виберіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ON. (3) Якщо ви зміните Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÑƒÐ½ÐºÑ‚Ñƒ 'LCD mode' на 'Monitor' або 'Normal', не забудьте повернути його назад у 'Off' перед вимиканнÑм. У іншому випадку ви не зможете викориÑтовувати кнопки фотоапарата. Якщо це ÑтанетьÑÑ, треба знову з’єднати фотоапарат з комп'ютером Ñ– перемикнути параметр LCD у 'Off'.Декілька зауважень щодо фотоапаратів Olympus: (1) ÐÐ°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°: Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0 означає типові параметри (авто). (2) Olympus C-3040Z (можливо також C-2040Z та інші) мають режим ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð· комп'ютера через через USB. Щоб його викориÑтовувати, фотоапарат треба перемикнути у режим 'USB PC control mode'. Щоб потрапити до меню вибору режиму, увімкніть апарат, відкрийте кришку відÑіку картки пам'Ñті, натиÑніть Ñ– утримуйте кнопки меню та РК екрана доки не з'ÑвитьÑÑ Ð¼ÐµÐ½ÑŽ керуваннÑ. Виберіть Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ON. (3) Якщо ви зміните Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÑƒÐ½ÐºÑ‚Ñƒ 'LCD mode' на 'Monitor' або 'Normal', не забудьте повернути його назад у 'Off' перед вимиканнÑм. У іншому випадку ви не зможете викориÑтовувати кнопки фотоапарата. Якщо це ÑтанетьÑÑ, треба знову з’єднати фотоапарат з комп'ютером Ñ– перемикнути параметр LCD у 'Off'.Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° Sonix Theodore Kilgore Фотоапарат Sonix. МіÑтить %i знімок. Фотоапарат Sonix. МіÑтить %i знімки. Фотоапарат Sonix. МіÑтить %i знімків. Ð—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ SonyПідтримка фотоапарата Sony DSC-F1 M. Adam Kendall Ðа оÑнові конÑольної верÑÑ–Ñ— chotplay от Кен-Ичи ХайÑши Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ñƒ Gphoto2 виконав Bart van Leeuwen Бібліотека gPhoto Ð´Ð»Ñ Sony DSC-F55/505 Підтримує Sony MSAC-SR1 та карти Memory Stick от DCR-PC100 Початково напиÑана Mark Davies ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ñ–Ñ Ð´Ð¾ gPhoto2 - Raymond Penners Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ фотоапарат. СповіÑтіть про це.Вибачте, зараз можливе лише Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð²Ð»Ð°ÑтивоÑті «%s» / 0x%04x.Ваш фотоапарат Canon не підтримує ініціалізацію Canon CaptureВаш фотоапарат Canon не підтримує режим Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ EOS CanonВаш фотоапарат Canon не підтримує режим видошукача CanonВаш фотоапарат Canon не підтримує режим Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ CanonВибачте, здаєтьÑÑ, ваш фотоапарат Nikon не повертах Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ JPEG у режимі LiveViewВибачте, у вашому фотоапараті Nikon не передбачено підтримки режиму LiveViewВаш фотоапарат не підтримує Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ NikonВаш фотоапарат не підтримує загальне захопленнÑЗвукДрайвер Soundvision Vince Weaver ЗалишилоÑÑŒ проÑтору длÑ: ВиÑок: %d, Середн: %d, Ðизьк: %d ІÑпанÑькаШвидкіÑть %i не підтримуєтьÑÑ!ШвидкоÑті, що перевищують 57600 не підтримуютьÑÑ Ð¿Ñ€Ð¸ завантаженні у цей фотоапаратСпортСпортТочковийТочкове вимірюваннÑÐ’Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð° оÑнові меж автофокуÑуваннÑТочковий режим виміруТочкове вимірюваннÑÐ’Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð° оÑнові меж автофокуÑуваннÑТочковий автофокуÑСтандартнийСтандартні параметри Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÑ–Ð²Ð Ð¾Ð·Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ð²Ñ–Ð´ÐµÐ¾Ð—Ð°Ð¿ÑƒÑкЗапуÑк Ñ– вимкненнÑПомилка кроку 2 ініціалізації! Повернуто %i байтів заміÑть %i. Фотоапарат не працюватиме.Помилка кроку 2 ініціалізації: («%s» при читанні %i). Фотоапарат не працюватиме.Помилка кроку 3 ініціалізації! Повернуто %i заміÑть %i. Фотоапарат не працюватиме.Помилка кроку 3 ініціалізації: «%s» при читанні %i. Фотоапарат не працюватиме.Помилка кроку 3 ініціалізації: «%s» під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñу %i. Фотоапарат не працюватиме.Помилка кроку 4! (повернуто %i заміÑть %i). Фотоапарат не працюватиме.Помилка кроку 4: "%s" при читанні %i. Фотоапарат не працюєТихий режим зйомкиÐерухоме зображеннÑПомилка джерела Ñвітла.ÐФ зі ÑтеженнÑм за Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¾Ð¼Ð—Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð»Ñ Mustek MDC800: ЗахідÐадзбільшеннÑДуже ÑкіÑнийВідмінне автоПідтримувані влаÑтивоÑті об'єкта MTP: Підтримуваний розмір мініатюрÐÐ²Ñ‚Ð¾Ð¿Ð°Ð½Ð¾Ñ€Ð°Ð¼Ð°Ð’Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð°ÐŸÐ°Ñ€Ñ‚Ð½ÐµÑ€ ÑинхронізаціїСинхронізувати дату Ñ– Ñ‡Ð°Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° з ПКСинхронізувати дані Ñ– чаÑові позначки рамки з комп’ютеромСиÑтемна помилка.TFTTFT + ПКTIFF (RGB)TTLТелебаченнÑРежим Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ TVФормат виводу на ТБЦільового Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÐ¼Ð°Ñ” у переліку.ТелемаÑштаб. неперерв. пріор. ÐЕПрипинити відкрите захопленнÑПеревірÑютьÑÑ Ñ€Ñ–Ð·Ð½Ñ– швидкоÑті...При переглÑді каталогу "camera" виводитьÑÑ ÑпиÑок фотографій на диÑку.Фотоапарат JD11 доÑить непогано працює з цим драйвером. Ð”Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½ÐµÐ¾Ð±Ñ…Ñ–Ð´Ð½Ð¸Ð¹ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ RS232 зі швидкіÑтю 115 Кбіт. Драйвер дозволÑÑ” копіювати - мініатюри (64x48, формат PGM ) - фотографії (640x480, формат PPM) Фотоапарат Kodak DC120 викориÑтовує формат KDC Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу зображень. Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду отриманих з апарата зображень знадобитьÑÑ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° "kdc2tiff". Її можна завантажити з Ñайту http://kdc2tiff.sourceforge.netДрайвер Samsung digimax 800k напиÑав James McKenzie Ð´Ð»Ñ gphoto. Lutz Mueller Ð¿ÐµÑ€ÐµÐ½Ñ–Ñ Ð¹Ð¾Ð³Ð¾ у gphoto2. Marcus Meissner виправлÑв помилки та вноÑив вдоÑконаленнÑ.ЗарÑд акумулÑтора фотоапарата надто низький (%d%%). Операцію ÑкаÑовано.Ðе вдалоÑÑ Ð·Ð²'ÑзатиÑÑŒ з фотоапаратом.Перевірте, що він увімкнений та з'єднаний з комп'ютером.Фотоапарат не відповідає на команду.Фотоапарат не приймає '%s' Ñк назву файла.Фотоапарат не підтримує швидкіÑть %i.Фотоапарат щойно повідомив про невідому помилку. СповіÑтіть про це %s, та вкажіть коли виникла Ñ†Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: (0x%x,0x%x). Дуже дÑкуємо!Фотоапарат надіÑлав більше байтів ніж очікуєтьÑÑ (%i)Фотоапарат надіÑлав лише %i байтів, але потрібно принаймні %i.Файл, Ñкий буде відвантажуватиÑÑŒ має нульову довжинуДовжина назви файла не повинна перевищувати 12 Ñимволів ('%s' має %i Ñимволів).Файлова ÑиÑтема не підтримує Ð·Ð°ÐºÐ°Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð².Файлова ÑиÑтема не підтримує отриманні відомоÑтей про файлФайлова ÑиÑтема не підтримує Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð¾ÑŽ ÑиÑтемою не передбачено Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… щодо параметрів Ñховища данихФайлова ÑиÑтема не підтримує вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про файлОтримано перший байт (0x%x), Ñкий Ñ” неправильним.ШлÑÑ… "%s" не Ñ” абÑолютним.ВлаÑтивіÑть «%s» / 0x%04x не було вÑтановлено (0x%04x: %s)ВлаÑтивіÑть «%s» / 0x%04x не було вÑтановлено (0x%04x: %s).Запитаний діапазон портів (%i) не підтримуєтьÑÑ Ñ†Ð¸Ð¼ драйвером.У теці, Ñку ви намагаєтеÑÑŒ вилучити, «%s/%s», ще зберігаютьÑÑ ÑкіÑÑŒ файли.У теці, Ñку ви намагаєтеÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸, %s/%s, міÑÑ‚ÑтьÑÑ Ð¿Ñ–Ð´Ñ‚ÐµÐºÐ¸.Дві роздільні здатноÑті, 352x288 та 176x144. Дані фотографії при завантаженні зберігаютьÑÑ Ñƒ форматі JPEG Ñ– тому не мають наперед визначених розмірів. Отже, макÑимальну заÑвлену кількіÑть фотографій, Ñку може міÑтити фотоапарат, Ñлід вважати приблизною. УÑÑ– параметри gphoto2 працюватимуть, за винÑтком вказаних нижче, Ñкі не підтримуютьÑÑ Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¾: Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¾ÐºÑ€ÐµÐ¼Ð¸Ñ… чи позначених фотографій (gphoto2 -d) Ð—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ (gphoto2 --capture чи --capture-image) Проте, Ð´Ð»Ñ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° викориÑтовувати Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²ÐµÐ±-камери, що підтримуєтьÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¼ Ñдра spca50x. Перевірено роботу через графічний Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ gtkam. Проте, на фотоапарат не передбачено ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾ÐºÑ€ÐµÐ¼Ð¸Ñ… мініатюр. ОÑкільки файли зображень Ñ– без того доÑить малі, при показі мініатюр драйвер завантажує Ñправжні зображеннÑ. Фотоапарат може знімати у режимі «відеокліп». Кадри зберігаютьÑÑ Ñк поÑлідовніÑть окремих фотографій. Ð”Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ— можна викориÑтати (наприклад) функцію анімації у ImageMagick. Додаткові подробиці щодо роботи фотоапарата наведені у libgphoto2/camlibs/clicksmart310/README.clicksmart310. ВиконуєтьÑÑ Ð´Ñ–Ñ. Цей фотоапарат не підтримує одночаÑне Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñ… команд. ДочекайтеÑÑŒ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ— операції.ПроÑтір Ð´Ð»Ñ Ñ–Ð½ÑˆÐ¸Ñ… знімків %d низького Ñтупеню ÑтиÑÐ½ÐµÐ½Ð½Ñ %d Ñереднього Ñтупеню ÑтиÑÐ½ÐµÐ½Ð½Ñ Ñ‡Ð¸ %d виÑокого Ñтупеню ÑтиÑÐ½ÐµÐ½Ð½Ñ Ð¤Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚ не підтримує попереднє захопленнÑ.Фотоапарат не підтримує захопленнÑ.Цей фотоапарат не може започатковувати захопленнÑ.Цей фотоапарат побудовано на оÑнові мікроÑхеми Jeilin JL2005%c. КількіÑть фотографій на фотоапараті: %i. Цей фотоапарат побудовано на оÑнові мікроÑхеми Jeilin JL2005A. Ðа ньому зберігаєтьÑÑ %i фотографій. Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ фотоапарата не передбачено підручника.Цей фотоапарат не надає можливоÑтей налаштовувати хоч щоÑÑŒ.Фотоапарат не надає інформацію про драйвер.Фотоапарат не підтримує вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð².Фотоапарат не підтримує зведеннÑ.У цьому драйвері реалізовано фотоапарати на оÑнові мікроÑхем Jeilin JL2005B, C Ñ– D. Ð”Ð»Ñ Ñ†Ð¸Ñ… фотоапаратів не передбачено підтримки Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ñ–Ð¹ Ñ– Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… на фотоапарат. Якщо на фотоапараті зберігаютьÑÑ Ð²Ñ–Ð´ÐµÐ¾ÐºÐ»Ñ–Ð¿Ð¸, дані цих кліпів можна отримати у форматі поÑлідовноÑті Ñтатичних зображень. Докладнішу інформацію викладено у файлі libgphoto2/camlibs/README.jl2005c Цей драйвер призначено Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ з фотоапаратами з мікроÑхемою Jeilin jl2005a. Ð”Ð»Ñ Ñ†Ð¸Ñ… фотоапаратів не передбачено Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ñ–Ð¹ або Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… на фотоапарат. Можливі проблеми з декодуваннÑм ÑтиÑнених фотографій: драйвер працює з різним рівнем ÑкоÑті роботи на різних фотоапаратах. Якщо на фотоапараті зберігаютьÑÑ Ð²Ñ–Ð´ÐµÐ¾ÐºÐ»Ñ–Ð¿Ð¸, Ñ—Ñ… дані можна отримати у форматі поÑлідовноÑті Ñтатичних зображень. Докладнішу інформацію можна знайти у файлі libgphoto2/camlibs/README.jl2005a У драйвері реалізовано підтримку фотоапаратів на оÑнові мікроÑхеми Mars MR97310 (та Ñ—Ñ— безпоÑередніх аналогів ??Pixart PACx07??). Ð”Ð»Ñ Ñ‚Ð°ÐºÐ¸Ñ… фотоапаратів не передбачено Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ‚Ð¾Ð³Ñ€Ð°Ñ„Ñ–Ð¹ або Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… на фотоапарат. Ð”ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ ÑтиÑнених фотографій працює не вÑюди Ñ– не однаково ÑкіÑно на різних типах фотоапаратів. Обробка фотоданих Ð´Ð»Ñ Argus QuickClix ÐЕ ПІДТРИМУЄТЬСЯ. Якщо фотоапарат зберігає відеозапиÑи, дані відео можна отримати у у форматі поÑлідовноÑті знімків. Докладніша Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° у libgphoto2/camlibs/README. У драйвері передбачено підтримку деÑких фотоапаратів з мікроÑхемою Sonix sn9c2028. ПідтримуютьÑÑ Ñ‚Ð°ÐºÑ– можливоÑті: - мініатюри Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ інтерфейÑу - повні Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ форматі PPM - Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ ÑƒÑÑ–Ñ… зображень - Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¾Ñтаннього Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ (працює не на уÑÑ–Ñ… фотоапаратах) - Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ фотоапарат ( ditto ) Відеоролики, Ñкщо вони Ñ”, можна отримати у форматі поÑлідовноÑті фотографій чи AVI-файлів, залежно від моделі. Мініатюри Ð´Ð»Ñ AVI-файлів ÑтворюютьÑÑ Ð½Ð° оÑнові першого кадру ролика. Окреме Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ можна вилучати, Ñкщо воно не Ñ” оÑтаннім. Це драйвер Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ–Ð² Canon PowerShot, Digital IXUS, IXY Digital, та EOS Digital у Ñ—Ñ… рідному режимі (що іноді називають "звичайним"). Драйвер також підтримує невелику кількіÑть цифрових камкодерів Canon, що мають функції роботи із зображеннÑми. До драйвера включено код зв'Ñзку з поÑлідовним портом чи USB, але (поки що) не включено код Ð´Ð»Ñ IEEE 1394 (Firewire). СуміÑний з понад 70 моделÑми, Ñк Ñтарими PowerShot A5 та Pro70 випуÑку 1998, так Ñ– з новими PowerShot A510 та EOS 350D випуÑку 2005. Драйвер не перевірÑвÑÑ Ð· EOS 1D чи EOS 1Ds. Ð”Ð»Ñ A50 викориÑÑ‚Ð°Ð½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті 115200 біт/Ñ Ð¼Ð¾Ð¶Ðµ бути фактично повільніше ніж 57600 Якщо виникають чиÑленні помилки при передачі через поÑлідовний порт, Ñпробуйте зменшити активніÑть комп'ютера (наприклад, диÑкову активніÑть) працездатніÑть драйвера перевірено з апаратом Kodak DC 215 Zoom. Можливо він підійде Ð´Ð»Ñ DC 200 та DC 210. Якщо у Ð²Ð°Ñ Ñ” один з перелічених фотоапаратів, будь лаÑка, повідомте за адреÑою koltan@gmx.de чи уÑÑ– функції доÑтупні з цим драйвером, та чи немає з ним проблем.Попередній переглÑд не Ñ–Ñнує.МініатюраВиÑота мініатюри: %d Розмір мініатюри: %d Ширина мініатюри: %d Ðахил-зÑувФормат чаÑуЧаÑ: %a, %d %b %Y %T Проміжок чаÑуІнтервал між проміжками чаÑуКількіÑть проміжків чаÑуТайм-аут навіть піÑÐ»Ñ 2 Ñпроб. Зв'ÑжітьÑÑ Ð· %s.ТаймерЗнімок за таймеромТаймер + віддалене керуваннÑТаймер 10 Ñек.Таймер 2 Ñек.КомпенÑÐ°Ñ†Ñ–Ñ Ñ‚Ð¾Ð½ÑƒÐ”ÑƒÐ¶Ðµ ÑÑкравийДуже темнийÐадто багато Ñпроб закінчилиÑÑŒ помилкою.ЗгориTopfield TF5000PVR Marcus Meissner Бібліотека Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ– Ð²Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² на Topfield PVR. Портовано з puppy, (c) Peter Urbanec Toshiba David Hogue Драйвер Toshiba pdr-m11. Ð’Ñього зроблено Ñпалахів: %d ЗнÑто локальних знімків: %d, Спалахів: %d Ð’Ñього знÑто знімків: %d Тайм-аут при передачі пакету, навіть піÑÐ»Ñ %i Ñпроб. Зв'ÑжітьÑÑ Ð· %s.Тайм-аут передачі навіть піÑÐ»Ñ 2 Ñпроб. Обрізати об’єктСпроба зв'ÑзатиÑÑŒ з фотоапаратом...ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð¸ кольорівÐабір ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ 0Ðабір ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ 1Ðабір ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ 2Ðабір ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ 3Ðабір ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ 4Вольфрамова лампаВольфрамовий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾Ð¢ÑƒÑ€Ð±Ð¾-режимTvТип показу ÑлайдівU1U2Мова інтерфейÑÑƒÐ‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹ÑуUILockTypeÐ§Ð°Ñ UNIXUSB 1.1USB 2.0ШвидкіÑть USBÐе призначеноÐе визначеноÐевизначений звуковийÐевизначений пункт календарÑÐевизначена колекціÑÐевизначений контактÐевизначений документÐевизначене повідомленнÑÐевизначена влаÑтивіÑть PTPÐевизначений відеоÐевизначений виконуваний файл WindowsUnder > MTRПід водоюÐевідомоÐевідомий %dÐевідома командаÐевідома помилка драйвера фотоапаратаÐевідома помилкаÐевідома помилка.Ðевідомий тип файла %i.Ðевідомий режим Ñпалаху %d, Ðевідома модельÐевідома модель "%s"Ðевідоме значеннÑÐевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %04dÐевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %04xÐевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0x%04xÐевідомий режим Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ %d Ðевідомо(%04x)Ðевідомо: 0x%04x Ðе розпізнана відповідьÐеÑуміÑна картаКоманда не підтримуєтьÑÑ.Вказано непідтримуваний тип порту %i = 0x%x. Ð†Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð°.Ðепідтримуваний тип порту: %d. Цей драйвер працює лише з фотоапаратами USB. Ðе викориÑтовуєтьÑÑОновити мікропрограму приÑтроюURL закачуваннÑÐ’Ñ–Ð´Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÑ”Ñ‚ÑŒÑÑ Ð»Ð¸ÑˆÐµ у теку '%s'Ð’Ð¸Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ...ВивантажуєтьÑÑ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ...Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ: %s.ЗавантаженнÑ...Вища 1Вища 2КориÑтувач ÑкаÑував завантаженнÑВизначений кориÑтувачем 1Визначений кориÑтувачем 2Визначений кориÑтувачем 3Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°ÐžÐ¿Ð¸Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°: %s Ідентифікатор Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°: 0x%x (%d.%d) ID виробника: %02x%02x ВерÑÑ–Ñ: ВерÑÑ–Ñ: %s Ð’Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÐФВідеорежимВивід відеоВивід відеоСітка Ð²Ð¸Ð´Ð¾ÑˆÑƒÐºÐ°Ñ‡Ð°Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñітки у видошукачіВіртуальний горизонт Ð²Ð¸Ð´Ð¾ÑˆÑƒÐºÐ°Ñ‡Ð°ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð½ÑŒÑ”Ñ‚ÑƒÐ²Ð°Ð½Ð½ÑмЖвавийТимчаÑові параметриРівень звукуWB дужкаWEP 128-бітWEP 64-бітWIFI ESSIDКанал WIFIПрофілі WiFiGUID WLANСпиÑок Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ WPLÐžÑ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ...ОчікуваннÑ...Показ попередженьРівень Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ 0Рівень Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ 1Стан попередженнÑÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ canon_usb_set_file_attributes: у canon_usb_dialogue помилка ÑтатуÑу фотоапарата 0x%08xВодаОчікувалоÑÑŒ 0x%x, отримано 0x%x. Зв'ÑжітьÑÑ Ð· %s.Ð¡Ð»Ð°Ð±ÐºÐ°Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого (набір 0)ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого (набір 1)ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого (набір 2)ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого (набір 3)ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого (набір 4)Ðомер набору ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білогоПрограма вилки баланÑу білогоКрок вилки баланÑу білогоТемпература білого кольоруÐазва типового баланÑу білого 0Ðазва типового баланÑу білого 1Ðазва типового баланÑу білого 2Ðазва типового баланÑу білого 3Ðазва типового баланÑу білого 4Ðомер набору баланÑу білогоТипове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого 0Типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого 1Типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого 2Типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого 3Типове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого 4Біла Ð´Ð¾ÑˆÐºÐ°Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾Ð‘Ñ–Ð»Ð° дошкаРівень Ð±Ñ–Ð»Ð¾Ð³Ð¾Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого AÐšÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð»Ð°Ð½Ñу білого BÐ‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ X AÐ‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾ X BПомилка під Ñ‡Ð°Ñ Ñпроби відновити початковий Ð±Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾Ð¨Ð¸Ñ€Ð¾ÐºÐ¾ÐºÑƒÑ‚Ð¾Ð²Ð¸Ð¹ÐФ за широкою облаÑтюФормат зображень WindowsБездротова ÑинхронізаціÑЗапиÑЗахиÑÑ‚ від запиÑуÐеправильна escape-поÑлідовніÑть: очікувалоÑÑŒ 0x%02x, отримано 0x%02x.Документ XMLРРРР/ММ/ДДРік/МіÑÑць/ДеньТакВи намагаєтеÑÑŒ видалити '%s' з теки '%s', але файлова ÑиÑтема не підтримує Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð².Перед ініціалізацією фотоапарата Ñлід вÑтановити порт.Щоб зробити знімок, треба перейти у режим запиÑу.Треба вказати теку, що починаєтьÑÑ Ð· /store_xxxxxxxxx/Ваш Logitech Clicksmart 310 міÑтить %i зображеннÑ. Ваш Logitech Clicksmart 310 міÑтить %i зображеннÑ. Ваш Logitech Clicksmart 310 міÑтить %i зображень. Ваш USB фотоапарат має м/Ñ Ð½Ð°Ð±Ñ–Ñ€ S&Q. Загальна кількіÑть зроблених знімків - %i ДеÑкі з них можуть бути відеокліпами, що ÑкладаютьÑÑ ÐºÑ–Ð»ÑŒÐºÐ¾Ñ… кадрів. Ваш USB фотоапарат побудований на мікроÑхемах Aox. КількіÑть зображень низької роздільної здатноÑті = %i КількіÑть зображень виÑокої роздільної здатноÑті = %i КількіÑть зображень = %i Модель вашого USB-фотоапарата - Kodak EZ200. ЧиÑло зображень = %i Ваш USB-фотоапарат iClick 5X. Загальна кількіÑть отриманих зображень %i Ваш USB-фотоапарат Ñхожий на LG GSM. Мікропрограма: %s ВерÑÑ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %s Вашу картинну рамку USB заÑновано на наборі мікроÑхем AX203 Вашу картинну рамку USB заÑновано на наборі мікроÑхем ST2205 Ваш фотоапарат підтримує Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð»Ð¸ÑˆÐµ оÑтаннього файла на фотоапараті. Тобто, це файл '%s'.Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (близько)Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (наближеннÑ)Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (здалеку)Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (ÑÐµÑ€ÐµÐ´Ð½Ñ Ð²Ñ–Ð´Ñтань)Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (зарезервовано 1)Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (зарезервовано 2)Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (зарезервовано 3)Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (зарезервовано 4)Зонне фокуÑÑƒÐ²Ð°Ð½Ð½Ñ (дуже близько)МаÑштабÐÐ°Ð±Ð»Ð¸Ð¶ÐµÐ½Ð½Ñ (в міліметрах)МаÑштаб зміненоМаÑштаб: 29 мм МаÑштаб: 34 мм МаÑштаб: 41 мм МаÑштаб: 51 мм МаÑштаб: 58 мм МаÑштаб: макрозйомка блок живленнÑagfa_cl20 Розробники драйвера Agfa CL20 Ð´Ð»Ñ Linux! Ел. адреÑа cl20@poeml.de Веб-адреÑа http://cl20.poeml.de автоавто + Ð¿Ñ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних очейакумулÑторчорно-білийкнопкафотоапарат неактивний більше ніж 9 Ñекунд, повторна ініціалізаціÑ. не можна отримати. canon_int_capture_image: оÑÑ‚Ð°Ð½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ canon_usb_list_all_dirs() завершилаÑÑŒ помилкою з кодом %icanon_int_capture_image: перша Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ canon_usb_list_all_dirs() завершилаÑÑŒ помилкою з кодом %licanon_int_get_info_func: ПОМИЛКÐ: початкове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ñ‚Ð¾ коротке (%i < мінімум %i)canon_int_list_directory: ERROR: початкове Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ñ‚Ð¾ коротке (%i < мінімум %i)canon_int_list_directory: ДоÑÑгнуто кінець пакету при аналізі першого елементу каталогуcanon_int_list_directory: обрізано Ð·Ð°Ð¿Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒcanon_serial_get_dirents: Ðе вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ %i байтів пам'Ñтіcanon_serial_get_dirents: Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ розмір буферу елементів каталогу на %i байтівcanon_serial_get_dirents: не вдаєтьÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ інший Ð·Ð°Ð¿Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒcanon_serial_get_dirents: внутрішній пакет елементу каталогу надто короткий (лише %i байтів)canon_serial_get_dirents: надто багато елементів каталогу, треба проходити циклом.canon_serial_get_dirents: отримано обрізаний елемент каталогуcanon_serial_get_dirents: canon_serial_dialogue не вдаєтьÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ елементи каталогуcanon_usb_get_body_id: Результат неочікуваної довжини (%i байтів, очікувалоÑÑŒ %i)canon_usb_get_dirents: Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити файл у буфер, '%.96s' (обрізано) надто довгий.canon_usb_get_dirents: не вдаєтьÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ елементи каталогу canon_usb_long_dialogue, отримано %icanon_usb_list_all_dirs: пакет не уміщаєтьÑÑ Ñƒ буфер, '%.96s' (обрізано) надто довгий.canon_usb_list_all_dirs: помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñ–Ð² каталогу canon_usb_long_dialogue, отримано %icanon_usb_lock_keys: Результат неочікуваної довжини (%i байтів, очікувалоÑÑŒ %i)canon_usb_lock_keys: Ðеочікувана довжина результату функції "блокувати клавіші" (%i байтів, очікувалоÑÑŒ %i)canon_usb_set_file_attributes: помилка canon_usb_dialoguecanon_usb_unlock_keys: Результат неочікуваної довжини (%i байтів, очікувалоÑÑŒ %i)колірБібліотека coolshot vне вдаєтьÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ ім'Ñ Ð²Ð»Ð°Ñникане вдаєтьÑÑ Ð²Ñтановити чаÑекономнозовнізаповненнÑвиÑокаgPhoto2 Mustek VDC-3500/Relisys Dimera 3500 При Ñтворенні цієї програми викориÑтовувалаÑÑŒ закрита інформаціÑ, що належить фірмі StarDot Technologies. Ðвтор: Brian Beattie Допомагали: Chuck Homic ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… даних знімків у формат RGB Dan Fandrich Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ протокол обміну, формат вихідних даних, Ð¿ÐµÑ€ÐµÐ½Ð¾Ñ Ð´Ð»Ñ gphoto2 Бібліотека gsmart300 Till Adam Jerome Lodewyck Підтримка фотоапаратів Mustek gSmart 300 оÑнована на кількох модулÑÑ… gphoto2 та ÑпецифікаціÑÑ…, що люб'Ñзно надані фірмою Mustek. виÑока (640x480)виÑокий Ñтупінь ÑтиÑненнÑ, hp215 Marcus Meissner Драйвер Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° HP Photosmart 215. Побудовано на оÑнові окремої програми hp215. Драйвер дозволÑÑ” завантажувати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° мініатюри, та дозволÑÑ” видалÑти зображеннÑ. iClick 5X driver Theodore Kilgore iTTLу режимі заповненнÑнеÑкінченнавÑерединіБібліотека jamcam vБібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° jl2005a Theodore Kilgore Бібліотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð° jl2005bcd Theodore Kilgore помилка Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»Ð°Ð²Ñ–Ñˆ.без втратнизька (320x240)низький Ñтупінь ÑтиÑненнÑ, mRAWmRAW + великий покращений JPEGmRAW + великий звичайний JPEGmRAW + Ñередній покращений JPEGmRAW + Ñередній звичайний JPEGmRAW + маленький покращений JPEGmRAW + маленький звичайний JPEGÑередній Ñтупінь ÑтиÑненнÑ, менюнемає інформації про Ñтан.немаєзвичайнанемає даних: %sвимкувімкувімкнено + Ð¿Ñ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних очейакумулÑторpccam600 init: неочікувана помилка: Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ gp_port_read повернула %d заміÑть %dpccam600_close: повернуто Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %d заміÑть %dpccam600_get_file:отримано Ñ–Ð½Ð´ÐµÐºÑ %d але очікувавÑÑ Ñ–Ð½Ð´ÐµÐºÑ > %dpccam600_init: очікувалоÑÑ %d блоків, отримано %dpccam600_init: очікувалоÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ %d блоків, отримано %dвідтвореннÑнормальне живленнÑзбій живленнÑлише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½ÑÑ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑготовийзапиÑрекурÑивні виклики не підтримуютьÑÑ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð¾Ð¼ фотоапарата! Зв'ÑжітьÑÑ Ð· %s.Ð·Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам вимкнено. Ð·Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€Ð²Ð¾Ð½Ð¸Ð¼ очам увімкнено. Ð¿Ñ€Ð¸Ð´ÑƒÑˆÐµÐ½Ð½Ñ ÐµÑ„ÐµÐºÑ‚Ñƒ червоних очейsRAWsRAW + великий покращений JPEGsRAW + великий звичайний JPEGsRAW + Ñередній покращений JPEGsRAW + Ñередній звичайний JPEGsRAW + маленький покращений JPEGsRAW + малий звичайний JPEGsRGBsRGB (природа)sRGB (портрет)Бібліотека sierra SPARClite Scott Fritzinger Підтримка цифрових фотоапаратів на базі sierra, включно з Olympus, Nikon, Epson та іншими. Велика подÑка Data Engines (www.dataengines.com) за наданий Olympus C-3030Z Ð´Ð»Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— підтримки USB.бібліотека spca50x vБазовий драйвер sq905 Theodore Kilgore Базовий драйвер sq905C Theodore Kilgore ÑтандартнийдоÑить виÑокаsx330z лише Ð´Ð»Ñ USBÑ‡Ð°Ñ Ð²Ñтановленоне вдаєтьÑÑ Ð¾Ð±Ñ‡Ð¸Ñлити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð¾Ñ— Ñуми не визначенонеÑподіваний тип даних %iневідомо (0x%02x)невідомий Ñтупінь ÑтиÑÐ½ÐµÐ½Ð½Ñ %d, невідома роздільна здатніÑть %d) vCalendar1vCalendar2vCard2vCard3попередженнÑ: CRC не перевірено (+ довжина %d, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0x%04x) ######################### libgphoto2-2.5.9/po/libgphoto2-6.pot0000644000175000001440000073607612623156271014123 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR The gPhoto Team # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 msgid "Picture Frame Configuration" msgstr "" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "" #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "" #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "" #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "" #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "" #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "" #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "" #: camlibs/canon/library.c:98 msgid "Thumbnail" msgstr "" #: camlibs/canon/library.c:99 msgid "Full Image" msgstr "" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "" #: camlibs/canon/library.c:216 msgid "Auto focus: one-shot" msgstr "" #: camlibs/canon/library.c:217 msgid "Auto focus: AI servo" msgstr "" #: camlibs/canon/library.c:218 msgid "Auto focus: AI focus" msgstr "" #: camlibs/canon/library.c:219 msgid "Manual focus" msgstr "" #: camlibs/canon/library.c:224 msgid "Beep off" msgstr "" #: camlibs/canon/library.c:225 msgid "Beep on" msgstr "" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 msgid "Flash off" msgstr "" #: camlibs/canon/library.c:231 msgid "Flash on" msgstr "" #: camlibs/canon/library.c:232 msgid "Flash auto" msgstr "" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "" #: camlibs/canon/library.c:267 msgid "Manual 2" msgstr "" #: camlibs/canon/library.c:268 msgid "Far scene" msgstr "" #: camlibs/canon/library.c:269 msgid "Fast shutter" msgstr "" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 msgid "Portrait" msgstr "" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "" #: camlibs/canon/library.c:277 msgid "BW" msgstr "" #: camlibs/canon/library.c:278 msgid "PanFocus" msgstr "" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 msgid "Neutral" msgstr "" #: camlibs/canon/library.c:282 msgid "Long shutter" msgstr "" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "" #: camlibs/canon/library.c:285 msgid "Indoor" msgstr "" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "" #: camlibs/canon/library.c:292 msgid "Digital macro" msgstr "" #: camlibs/canon/library.c:293 msgid "MyColors" msgstr "" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" #: camlibs/canon/library.c:497 #, c-format msgid "Camera unavailable: %s" msgstr "" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" #: camlibs/canon/library.c:1145 msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "" #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "" #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 msgid "Owner Name" msgstr "" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 msgid "Capture Size Class" msgstr "" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 msgid "Shooting mode" msgstr "" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 msgid "Shutter Speed" msgstr "" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 msgid "Image Format" msgstr "" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 msgid "Camera Actions" msgstr "" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 msgid "Camera Status Information" msgstr "" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 msgid "Firmware Version" msgstr "" #: camlibs/canon/library.c:1956 msgid "Power" msgstr "" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "" #: camlibs/canon/library.c:2056 msgid "ISO speed changed" msgstr "" #: camlibs/canon/library.c:2058 msgid "Could not change ISO speed" msgstr "" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "" #: camlibs/canon/library.c:2085 msgid "Shooting mode changed" msgstr "" #: camlibs/canon/library.c:2087 msgid "Could not change shooting mode" msgstr "" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "" #: camlibs/canon/library.c:2114 msgid "Shutter speed changed" msgstr "" #: camlibs/canon/library.c:2116 msgid "Could not change shutter speed" msgstr "" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 msgid "Invalid aperture setting" msgstr "" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 msgid "Aperture changed" msgstr "" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 msgid "Could not change aperture" msgstr "" #: camlibs/canon/library.c:2167 msgid "Invalid exposure compensation setting" msgstr "" #: camlibs/canon/library.c:2170 msgid "Exposure compensation changed" msgstr "" #: camlibs/canon/library.c:2172 msgid "Could not change exposure compensation" msgstr "" #: camlibs/canon/library.c:2194 msgid "Invalid image format setting" msgstr "" #: camlibs/canon/library.c:2198 msgid "Image format changed" msgstr "" #: camlibs/canon/library.c:2200 msgid "Could not change image format" msgstr "" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "" #: camlibs/canon/library.c:2226 msgid "Focus mode changed" msgstr "" #: camlibs/canon/library.c:2228 msgid "Could not change focus mode" msgstr "" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "" #: camlibs/canon/library.c:2255 msgid "Beep mode changed" msgstr "" #: camlibs/canon/library.c:2257 msgid "Could not change beep mode" msgstr "" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "" #: camlibs/canon/library.c:2276 msgid "Could not change zoom level" msgstr "" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "" #: camlibs/canon/library.c:2332 msgid "Flash mode changed" msgstr "" #: camlibs/canon/library.c:2334 msgid "Could not change flash mode" msgstr "" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "" #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "" #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "" #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "" #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "" #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "" #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "" #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "" #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "" #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "" #: camlibs/canon/serial.c:1311 msgid "Camera OK." msgstr "" #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "" #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "" #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "" #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "" #: camlibs/canon/serial.c:1454 msgid "Error waiting for ACK during initialization, retrying" msgstr "" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "" #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "" #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "" #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "" #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "" #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "" #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "" #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "" #: camlibs/casio/casio-qv.c:152 #, c-format msgid "Image type %d not supported" msgstr "" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "" #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "" #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "" #: camlibs/casio/casio-qv.c:275 msgid "Brightness" msgstr "" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 msgid "Too bright" msgstr "" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 msgid "Too dark" msgstr "" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr "" #: camlibs/dimera/dimera3500.c:455 #, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 msgid "No Flash" msgstr "" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "" #: camlibs/dimera/dimera3500.c:468 msgid "No Dual Iris" msgstr "" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "" #: camlibs/dimera/dimera3500.c:470 msgid "No Resolution Switch" msgstr "" #: camlibs/dimera/dimera3500.c:472 msgid "No Power Light" msgstr "" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "" #: camlibs/dimera/dimera3500.c:476 msgid "Not ready" msgstr "" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "" #: camlibs/dimera/dimera3500.c:478 msgid "Not in fill mode" msgstr "" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "" #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "" #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "" #: camlibs/directory/directory.c:381 #, c-format msgid "Could not get information about '%s' (%s)." msgstr "" #: camlibs/directory/directory.c:414 #, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "" #: camlibs/directory/directory.c:462 #, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "" #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "" #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "" #: camlibs/directory/directory.c:671 #, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "" #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "" #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "" #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "" #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "" #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "" #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "" #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "" #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "" #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "" #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "" #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "" #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "" #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "" #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "" #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "" #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "" #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "" #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "" #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "" #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "" #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "" #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "" #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "" #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" #: camlibs/jd11/jd11.c:186 msgid "JD11 Configuration" msgstr "" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "" #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "" #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "" #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "" #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:506 #, c-format msgid "Total pictures taken: %d\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:514 #, c-format msgid "Firmware: %d.%d\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:519 #, c-format msgid "Filetype: JPEG (" msgstr "" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "" #: camlibs/kodak/dc210/dc210.c:527 #, c-format msgid "low compression, " msgstr "" #: camlibs/kodak/dc210/dc210.c:529 #, c-format msgid "medium compression, " msgstr "" #: camlibs/kodak/dc210/dc210.c:531 #, c-format msgid "high compression, " msgstr "" #: camlibs/kodak/dc210/dc210.c:533 #, c-format msgid "unknown compression %d, " msgstr "" #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:558 #, c-format msgid "AC adapter is not connected.\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:580 #, c-format msgid "Unknown zoom mode %d\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:586 #, c-format msgid "Exposure compensation: %s\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:588 #, c-format msgid "Exposure compensation: %d\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:593 #, c-format msgid "Flash mode: auto, " msgstr "" #: camlibs/kodak/dc210/dc210.c:595 #, c-format msgid "Flash mode: force, " msgstr "" #: camlibs/kodak/dc210/dc210.c:597 #, c-format msgid "Flash mode: off\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:599 #, c-format msgid "Unknown flash mode %d, " msgstr "" #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:615 #, c-format msgid "No card in camera.\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "" #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "" #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "" #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "" #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "" #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "" #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "" #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "" #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "" #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "" #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "" #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "" #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "" #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "" #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "" #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "" #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "" #: camlibs/konica/konica.c:110 msgid "System error." msgstr "" #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "" #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "" #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "" #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "" #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "" #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "" #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "" #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "" #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "" #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "" #: camlibs/konica/library.c:338 msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "" #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "" #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "" #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "" #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "" #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "" #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "" #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "" #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "" #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "" #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" #: camlibs/largan/lmini/largan.c:228 msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:406 #, c-format msgid "Bad value for card status %d" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "" #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "" #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "" #: camlibs/mustek/mdc800.c:264 msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "" #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "" #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "" #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "" #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "" #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "" #: camlibs/panasonic/dc1580.c:627 msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "" #: camlibs/panasonic/l859/l859.c:582 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "" #: camlibs/pccam600/library.c:249 msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "" #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "" #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, c-format msgid "Unknown value %04x" msgstr "" #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, c-format msgid "Unknown value %04d" msgstr "" #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 msgid "Automatic" msgstr "" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 msgid "One-push Automatic" msgstr "" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "" #: camlibs/ptp2/config.c:1415 msgid "Fluorescent Lamp 1" msgstr "" #: camlibs/ptp2/config.c:1416 msgid "Fluorescent Lamp 2" msgstr "" #: camlibs/ptp2/config.c:1417 msgid "Fluorescent Lamp 3" msgstr "" #: camlibs/ptp2/config.c:1418 msgid "Fluorescent Lamp 4" msgstr "" #: camlibs/ptp2/config.c:1419 msgid "Fluorescent Lamp 5" msgstr "" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "" #: camlibs/ptp2/config.c:1430 msgid "Fluorescent: Warm White" msgstr "" #: camlibs/ptp2/config.c:1431 msgid "Fluorescent: Cold White" msgstr "" #: camlibs/ptp2/config.c:1432 msgid "Fluorescent: Day White" msgstr "" #: camlibs/ptp2/config.c:1433 msgid "Fluorescent: Daylight" msgstr "" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 msgid "JPEG Fine" msgstr "" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 msgid "JPEG Normal" msgstr "" #: camlibs/ptp2/config.c:1443 msgid "RAW + JPEG Fine" msgstr "" #: camlibs/ptp2/config.c:1444 msgid "RAW + JPEG Normal" msgstr "" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "" #: camlibs/ptp2/config.c:1452 msgid "Self-timer" msgstr "" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "" #: camlibs/ptp2/config.c:1735 msgid "undefined" msgstr "" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 msgid "Undefined" msgstr "" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "" #: camlibs/ptp2/config.c:1780 msgid "Flash Off" msgstr "" #: camlibs/ptp2/config.c:1788 msgid "red eye suppression" msgstr "" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "" #: camlibs/ptp2/config.c:1790 msgid "auto + red eye suppression" msgstr "" #: camlibs/ptp2/config.c:1791 msgid "on + red eye suppression" msgstr "" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 msgid "Commander" msgstr "" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 msgid "Auto Aperture" msgstr "" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 msgid "Full Manual" msgstr "" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 msgid "MF (fixed)" msgstr "" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "" #: camlibs/ptp2/config.c:1947 msgid "User defined 1" msgstr "" #: camlibs/ptp2/config.c:1948 msgid "User defined 2" msgstr "" #: camlibs/ptp2/config.c:1949 msgid "User defined 3" msgstr "" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 msgid "Multiple Focusing Points, Auto" msgstr "" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 msgid "Multiple Focusing Points (Right)" msgstr "" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 msgid "Multiple Focusing Points (Left)" msgstr "" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 msgid "Large" msgstr "" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 msgid "Medium 1" msgstr "" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 msgid "Medium 2" msgstr "" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 msgid "Medium 3" msgstr "" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "" #: camlibs/ptp2/config.c:2092 msgid "Setting 4" msgstr "" #: camlibs/ptp2/config.c:2093 msgid "Setting 5" msgstr "" #: camlibs/ptp2/config.c:2094 msgid "Setting 6" msgstr "" #: camlibs/ptp2/config.c:2095 msgid "Setting 7" msgstr "" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, c-format msgid "Unknown %d" msgstr "" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "" #: camlibs/ptp2/config.c:2246 msgid "Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2247 msgid "Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2272 msgid "RAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2273 msgid "mRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2274 msgid "sRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2275 msgid "RAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2276 msgid "mRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2277 msgid "sRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "" #: camlibs/ptp2/config.c:2305 msgid "Timer 10 sec" msgstr "" #: camlibs/ptp2/config.c:2306 msgid "Timer 2 sec" msgstr "" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, c-format msgid "Auto ISO" msgstr "" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, c-format msgid "%d Multi Frame Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:2453 msgid "Multi Frame Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, c-format msgid "Time" msgstr "" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "" #: camlibs/ptp2/config.c:2868 msgid "Automatic (No Flash)" msgstr "" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 msgid "Sports Action" msgstr "" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 msgid "Picture Effect" msgstr "" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "" #: camlibs/ptp2/config.c:2893 msgid "Pet Portrait" msgstr "" #: camlibs/ptp2/config.c:2894 msgid "Candlelight" msgstr "" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "" #: camlibs/ptp2/config.c:3032 msgid "Flourescent" msgstr "" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 msgid "Effects" msgstr "" #: camlibs/ptp2/config.c:3075 msgid "U1" msgstr "" #: camlibs/ptp2/config.c:3076 msgid "U2" msgstr "" #: camlibs/ptp2/config.c:3104 msgid "Back Light" msgstr "" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 msgid "Timer" msgstr "" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 msgid "Delayed Remote" msgstr "" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "" #: camlibs/ptp2/config.c:3125 msgid "Selftimer 2s" msgstr "" #: camlibs/ptp2/config.c:3126 msgid "Selftimer 10s" msgstr "" #: camlibs/ptp2/config.c:3127 msgid "Bracketing C 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3128 msgid "Bracketing C 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3129 msgid "Bracketing C 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3130 msgid "Bracketing C 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3131 msgid "Bracketing C 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3132 msgid "Bracketing S 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3133 msgid "Bracketing S 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3134 msgid "Bracketing S 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3135 msgid "Bracketing S 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3136 msgid "Bracketing S 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3137 msgid "Bracketing WB Lo" msgstr "" #: camlibs/ptp2/config.c:3138 msgid "Bracketing WB Hi" msgstr "" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 msgid "Centre-spot" msgstr "" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "" #: camlibs/ptp2/config.c:3154 msgid "Group-dynamic AF" msgstr "" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "" #: camlibs/ptp2/config.c:3165 msgid "3D Tracking" msgstr "" #: camlibs/ptp2/config.c:3171 msgid "sRGB (portrait)" msgstr "" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 msgid "Centre" msgstr "" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 msgid "Bottom" msgstr "" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 msgid "Right" msgstr "" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "" #: camlibs/ptp2/config.c:3266 msgid "Automatic Flash" msgstr "" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 msgid "Fill flash" msgstr "" #: camlibs/ptp2/config.c:3269 msgid "Red-eye automatic" msgstr "" #: camlibs/ptp2/config.c:3270 msgid "Red-eye fill" msgstr "" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 msgid "External sync" msgstr "" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 msgid "Auto Slow Sync" msgstr "" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 msgid "Red-eye Reduction + Slow Sync" msgstr "" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3277 msgid "Red-eye reduction" msgstr "" #: camlibs/ptp2/config.c:3278 msgid "Red-eye reduction with slow sync" msgstr "" #: camlibs/ptp2/config.c:3279 msgid "Slow sync" msgstr "" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "" #: camlibs/ptp2/config.c:3298 msgid "Color sketch" msgstr "" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "" #: camlibs/ptp2/config.c:3302 msgid "High key" msgstr "" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 msgid "infinite" msgstr "" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "" #: camlibs/ptp2/config.c:3772 msgid "Normal-area AF" msgstr "" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 msgid "Manual Focus" msgstr "" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 msgid "AE/AF Lock" msgstr "" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 msgid "1 minute" msgstr "" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 msgid "10 minutes" msgstr "" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "" #: camlibs/ptp2/config.c:3828 msgid "8 mm" msgstr "" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "" #: camlibs/ptp2/config.c:3842 msgid "1" msgstr "" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 msgid "2" msgstr "" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 msgid "4" msgstr "" #: camlibs/ptp2/config.c:3845 msgid "8" msgstr "" #: camlibs/ptp2/config.c:3846 msgid "15" msgstr "" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "" #: camlibs/ptp2/config.c:3855 msgid "20s" msgstr "" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 msgid "15s" msgstr "" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "" #: camlibs/ptp2/config.c:3858 msgid "10s" msgstr "" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "" #: camlibs/ptp2/config.c:3916 msgid "15 minutes" msgstr "" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 msgid "Sharper" msgstr "" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 msgid "Direct Print" msgstr "" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 msgid "Medium Low" msgstr "" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 msgid "Medium high" msgstr "" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 msgid "Low contrast" msgstr "" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 msgid "Medium High" msgstr "" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "" #: camlibs/ptp2/config.c:3976 msgid "Automatic Macro" msgstr "" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 msgid "AI Focus" msgstr "" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 msgid "Fluorescent H" msgstr "" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 msgid "Custom Whitebalance PC-1" msgstr "" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 msgid "Custom Whitebalance PC-2" msgstr "" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 msgid "Custom Whitebalance PC-3" msgstr "" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "" #: camlibs/ptp2/config.c:4118 msgid "Low sharpening" msgstr "" #: camlibs/ptp2/config.c:4120 msgid "Black & white" msgstr "" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 msgid "AE & Flash" msgstr "" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 msgid "AE only" msgstr "" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 msgid "Flash only" msgstr "" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 msgid "WB bracketing" msgstr "" #: camlibs/ptp2/config.c:4221 msgid "ADL bracketing" msgstr "" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 msgid "Remote Mirror Up" msgstr "" #: camlibs/ptp2/config.c:4248 msgid "Application Mode 0" msgstr "" #: camlibs/ptp2/config.c:4249 msgid "Application Mode 1" msgstr "" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "" #: camlibs/ptp2/config.c:4286 msgid "Low sensitivity" msgstr "" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "" #: camlibs/ptp2/config.c:4378 msgid "Flash/speed" msgstr "" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "" #: camlibs/ptp2/config.c:4380 msgid "Flash/aperture" msgstr "" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 msgid "NEF+Fine" msgstr "" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 msgid "NEF+Normal" msgstr "" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "" #: camlibs/ptp2/config.c:4575 msgid "RAW+JPEG" msgstr "" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "" #: camlibs/ptp2/config.c:4642 msgid "Optimal quality" msgstr "" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "" #: camlibs/ptp2/config.c:4695 msgid "3 (Normal)" msgstr "" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "" #: camlibs/ptp2/config.c:4780 msgid "Preview" msgstr "" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "" #: camlibs/ptp2/config.c:4788 msgid "Bracketing burst" msgstr "" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "" #: camlibs/ptp2/config.c:4791 msgid "Spot metering" msgstr "" #: camlibs/ptp2/config.c:4792 msgid "Playback" msgstr "" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "" #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "" #: camlibs/ptp2/config.c:4871 msgid "Unknown value" msgstr "" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "" #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "" #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "" #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 msgid "Press Full" msgstr "" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 msgid "Press 1" msgstr "" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 msgid "Press 2" msgstr "" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 msgid "Press 3" msgstr "" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" #: camlibs/ptp2/config.c:5923 msgid "Internal RAM" msgstr "" #: camlibs/ptp2/config.c:5924 msgid "Memory card" msgstr "" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "" #: camlibs/ptp2/config.c:6092 msgid "Display" msgstr "" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "" #: camlibs/ptp2/config.c:6359 msgid "Default gateway" msgstr "" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "" #: camlibs/ptp2/config.c:6412 msgid "List Wifi profiles" msgstr "" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "" #: camlibs/ptp2/config.c:6521 msgid "Power Down" msgstr "" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 msgid "Focus Lock" msgstr "" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 msgid "Bulb Mode" msgstr "" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 msgid "Movie Capture" msgstr "" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 msgid "Serial Number" msgstr "" #: camlibs/ptp2/config.c:6548 msgid "Camera Manufacturer" msgstr "" #: camlibs/ptp2/config.c:6550 msgid "Device Version" msgstr "" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "" #: camlibs/ptp2/config.c:6556 msgid "PTP Version" msgstr "" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 msgid "DPOF Version" msgstr "" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "" #: camlibs/ptp2/config.c:6559 msgid "External Flash" msgstr "" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 msgid "Camera Orientation" msgstr "" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 msgid "Flash Open" msgstr "" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 msgid "Flash Charged" msgstr "" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 msgid "Lens Name" msgstr "" #: camlibs/ptp2/config.c:6570 msgid "Shutter Counter" msgstr "" #: camlibs/ptp2/config.c:6571 msgid "Available Shots" msgstr "" #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6576 msgid "Low Light" msgstr "" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 msgid "Light Meter" msgstr "" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 msgid "AF Locked" msgstr "" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 msgid "FV Locked" msgstr "" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 msgid "Camera Date and Time" msgstr "" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "" #: camlibs/ptp2/config.c:6591 msgid "Image Comment" msgstr "" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 msgid "Enable Image Comment" msgstr "" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 msgid "LCD Off Time" msgstr "" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 msgid "Recording Media" msgstr "" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 msgid "Camera Output" msgstr "" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "" #: camlibs/ptp2/config.c:6602 msgid "EVF Mode" msgstr "" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 msgid "Flicker Reduction" msgstr "" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "" #: camlibs/ptp2/config.c:6613 msgid "Focus Info" msgstr "" #: camlibs/ptp2/config.c:6614 msgid "Focus Area" msgstr "" #: camlibs/ptp2/config.c:6615 msgid "Auto Power Off" msgstr "" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 msgid "Capture Target" msgstr "" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 msgid "Image Format SD" msgstr "" #: camlibs/ptp2/config.c:6634 msgid "Image Format CF" msgstr "" #: camlibs/ptp2/config.c:6636 msgid "Image Format Ext HD" msgstr "" #: camlibs/ptp2/config.c:6643 msgid "Movie ISO Speed" msgstr "" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 msgid "ISO Auto" msgstr "" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 msgid "WhiteBalance" msgstr "" #: camlibs/ptp2/config.c:6654 msgid "WhiteBalance Adjust A" msgstr "" #: camlibs/ptp2/config.c:6655 msgid "WhiteBalance Adjust B" msgstr "" #: camlibs/ptp2/config.c:6656 msgid "WhiteBalance X A" msgstr "" #: camlibs/ptp2/config.c:6657 msgid "WhiteBalance X B" msgstr "" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 msgid "Color Model" msgstr "" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 msgid "Color Space" msgstr "" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6669 msgid "Auto Focus Mode 2" msgstr "" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 msgid "Flash Compensation" msgstr "" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 msgid "AEB Exposure Compensation" msgstr "" #: camlibs/ptp2/config.c:6685 msgid "Nikon Flash Mode" msgstr "" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 msgid "Flash Commander Mode" msgstr "" #: camlibs/ptp2/config.c:6687 msgid "Flash Commander Power" msgstr "" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 msgid "Flash Command Self Mode" msgstr "" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 msgid "Flash Command Self Compensation" msgstr "" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 msgid "Flash Command A Mode" msgstr "" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 msgid "Flash Command A Compensation" msgstr "" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 msgid "Flash Command B Mode" msgstr "" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 msgid "Flash Command B Compensation" msgstr "" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "" #: camlibs/ptp2/config.c:6702 msgid "Movie F-Number" msgstr "" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "" #: camlibs/ptp2/config.c:6710 msgid "Focus Mode 2" msgstr "" #: camlibs/ptp2/config.c:6712 msgid "Continuous AF" msgstr "" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 msgid "Exposure Program" msgstr "" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 msgid "Scene Mode" msgstr "" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 msgid "HDR Mode" msgstr "" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "" #: camlibs/ptp2/config.c:6725 msgid "Canon Shooting Mode" msgstr "" #: camlibs/ptp2/config.c:6726 msgid "Canon Auto Exposure Mode" msgstr "" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 msgid "Drive Mode" msgstr "" #: camlibs/ptp2/config.c:6728 msgid "Picture Style" msgstr "" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "" #: camlibs/ptp2/config.c:6738 msgid "Capture Delay" msgstr "" #: camlibs/ptp2/config.c:6742 msgid "Shutter Speed 2" msgstr "" #: camlibs/ptp2/config.c:6743 msgid "Movie Shutter Speed 2" msgstr "" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 msgid "AF Distance" msgstr "" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 msgid "Focus Area Wrap" msgstr "" #: camlibs/ptp2/config.c:6751 msgid "Exposure Delay Mode" msgstr "" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 msgid "Exposure Lock" msgstr "" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 msgid "Flash Sign" msgstr "" #: camlibs/ptp2/config.c:6759 msgid "Modelling Flash" msgstr "" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 msgid "Image Review" msgstr "" #: camlibs/ptp2/config.c:6762 msgid "Image Rotation Flag" msgstr "" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 msgid "Flash Mode Manual Power" msgstr "" #: camlibs/ptp2/config.c:6765 msgid "Auto Focus Area" msgstr "" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 msgid "Flash Exposure Compensation" msgstr "" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 msgid "Bracketing" msgstr "" #: camlibs/ptp2/config.c:6769 msgid "Bracket Mode" msgstr "" #: camlibs/ptp2/config.c:6770 msgid "EV Step" msgstr "" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 msgid "Bracket Set" msgstr "" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 msgid "Auto White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 msgid "Tungsten White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 msgid "Fluorescent White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 msgid "Daylight White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 msgid "Flash White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 msgid "Cloudy White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 msgid "Shady White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6794 msgid "White Balance Bias Preset Nr" msgstr "" #: camlibs/ptp2/config.c:6795 msgid "White Balance Bias Preset 0" msgstr "" #: camlibs/ptp2/config.c:6796 msgid "White Balance Bias Preset 1" msgstr "" #: camlibs/ptp2/config.c:6797 msgid "White Balance Bias Preset 2" msgstr "" #: camlibs/ptp2/config.c:6798 msgid "White Balance Bias Preset 3" msgstr "" #: camlibs/ptp2/config.c:6799 msgid "White Balance Bias Preset 4" msgstr "" #: camlibs/ptp2/config.c:6800 msgid "Selftimer Delay" msgstr "" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 msgid "Flash Shutter Speed" msgstr "" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 msgid "Remote Timeout" msgstr "" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 msgid "Remote Mode" msgstr "" #: camlibs/ptp2/config.c:6805 msgid "Application Mode" msgstr "" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 msgid "Sharpening" msgstr "" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 msgid "Tone Compensation" msgstr "" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 msgid "Saturation" msgstr "" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 msgid "Hue Adjustment" msgstr "" #: camlibs/ptp2/config.c:6811 msgid "Auto Exposure Bracketing" msgstr "" #: camlibs/ptp2/config.c:6812 msgid "Movie Sound" msgstr "" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 msgid "Manual Movie Setting" msgstr "" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 msgid "Video Mode" msgstr "" #: camlibs/ptp2/config.c:6835 msgid "Meter Off Time" msgstr "" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 msgid "Movie Quality" msgstr "" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 msgid "Minimum Shutter Speed" msgstr "" #: camlibs/ptp2/config.c:6862 msgid "Movie Resolution" msgstr "" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 msgid "Continuous Shooting Speed Slow" msgstr "" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "" #: camlibs/ptp2/config.c:6869 msgid "Focus Metering" msgstr "" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 msgid "High ISO Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 msgid "Continuous Shooting Speed High" msgstr "" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 msgid "JPEG Compression Policy" msgstr "" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 msgid "AF Lock On" msgstr "" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "" #: camlibs/ptp2/config.c:6913 msgid "Movie High ISO Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 msgid "Raw Compression" msgstr "" #: camlibs/ptp2/config.c:6922 msgid "Image Quality 2" msgstr "" #: camlibs/ptp2/config.c:6944 msgid "Image Settings" msgstr "" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 msgid "Other PTP Device Properties" msgstr "" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "" #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "" #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "" #: camlibs/ptp2/library.c:2537 msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "" #: camlibs/ptp2/library.c:2545 msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "" #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "" #: camlibs/ptp2/library.c:2799 msgid "Sorry, your camera does not support Nikon capture" msgstr "" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 msgid "Canon EOS Half-Press failed" msgstr "" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 msgid "Canon EOS Half-Release failed" msgstr "" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 msgid "Canon EOS Full-Press failed" msgstr "" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 msgid "Canon EOS Full-Release failed" msgstr "" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" #: camlibs/ptp2/library.c:3332 msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 msgid "Canon Capture failed" msgstr "" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, c-format msgid "Manufacturer: %s\n" msgstr "" #: camlibs/ptp2/library.c:4800 #, c-format msgid "Model: %s\n" msgstr "" #: camlibs/ptp2/library.c:4802 #, c-format msgid " Version: %s\n" msgstr "" #: camlibs/ptp2/library.c:4805 #, c-format msgid " Serial Number: %s\n" msgstr "" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "" #: camlibs/ptp2/library.c:4821 #, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "" #: camlibs/ptp2/library.c:4828 #, c-format msgid "Functional Mode: 0x%04x\n" msgstr "" #: camlibs/ptp2/library.c:4833 #, c-format msgid "" "\n" "Capture Formats: " msgstr "" #: camlibs/ptp2/library.c:4847 #, c-format msgid "Display Formats: " msgstr "" #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr "" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "" #: camlibs/ptp2/library.c:4902 #, c-format msgid "File Deletion, " msgstr "" #: camlibs/ptp2/library.c:4904 #, c-format msgid "No File Deletion, " msgstr "" #: camlibs/ptp2/library.c:4908 #, c-format msgid "File Upload\n" msgstr "" #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4920 #, c-format msgid "Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4929 #, c-format msgid "Canon Capture" msgstr "" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "" #: camlibs/ptp2/library.c:4947 #, c-format msgid "Nikon Capture 1" msgstr "" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "" #: camlibs/ptp2/library.c:4965 #, c-format msgid "Sony Capture" msgstr "" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "" #: camlibs/ptp2/library.c:4991 #, c-format msgid "\tCanon Wifi support\n" msgstr "" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, c-format msgid "Unknown: 0x%04x\n" msgstr "" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "" #: camlibs/ptp2/library.c:5043 msgid "Generic Flat" msgstr "" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "" #: camlibs/ptp2/library.c:5056 msgid "Read-Only" msgstr "" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5075 #, c-format msgid "\tFree Space (Images): %d\n" msgstr "" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr "" #: camlibs/ptp2/library.c:5116 #, c-format msgid "cannot be queried.\n" msgstr "" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr "" #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "" #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "" #: camlibs/ptp2/library.c:6414 msgid "Device does not support setting object protection." msgstr "" #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "" #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "" #: camlibs/ptp2/library.c:7254 #, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "" #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "" #: camlibs/ptp2/ptp.c:4047 msgid "Filename Required" msgstr "" #: camlibs/ptp2/ptp.c:4048 msgid "Filename Conflicts" msgstr "" #: camlibs/ptp2/ptp.c:4049 msgid "Filename Invalid" msgstr "" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "" #: camlibs/ptp2/ptp.c:4052 msgid "Out of Focus" msgstr "" #: camlibs/ptp2/ptp.c:4053 msgid "Change Camera Mode Failed" msgstr "" #: camlibs/ptp2/ptp.c:4054 msgid "Invalid Status" msgstr "" #: camlibs/ptp2/ptp.c:4055 msgid "Set Property Not Supported" msgstr "" #: camlibs/ptp2/ptp.c:4056 msgid "Whitebalance Reset Error" msgstr "" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "" #: camlibs/ptp2/ptp.c:4058 msgid "Shutter Speed Bulb" msgstr "" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "" #: camlibs/ptp2/ptp.c:4066 msgid "Unknown Command" msgstr "" #: camlibs/ptp2/ptp.c:4067 msgid "Operation Refused" msgstr "" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "" #: camlibs/ptp2/ptp.c:4069 msgid "Battery Low" msgstr "" #: camlibs/ptp2/ptp.c:4070 msgid "Camera Not Ready" msgstr "" #: camlibs/ptp2/ptp.c:4072 msgid "PTP Timeout" msgstr "" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "" #: camlibs/ptp2/ptp.c:4075 msgid "PTP Response Expected" msgstr "" #: camlibs/ptp2/ptp.c:4076 msgid "PTP Data Expected" msgstr "" #: camlibs/ptp2/ptp.c:4077 msgid "PTP I/O Error" msgstr "" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "" #: camlibs/ptp2/ptp.c:4135 msgid "Supported Streams" msgstr "" #: camlibs/ptp2/ptp.c:4136 msgid "Enabled Streams" msgstr "" #: camlibs/ptp2/ptp.c:4137 msgid "Video Format" msgstr "" #: camlibs/ptp2/ptp.c:4138 msgid "Video Resolution" msgstr "" #: camlibs/ptp2/ptp.c:4139 msgid "Video Quality" msgstr "" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 msgid "Video Contrast" msgstr "" #: camlibs/ptp2/ptp.c:4142 msgid "Video Brightness" msgstr "" #: camlibs/ptp2/ptp.c:4143 msgid "Audio Format" msgstr "" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "" #: camlibs/ptp2/ptp.c:4169 msgid "Battery Type" msgstr "" #: camlibs/ptp2/ptp.c:4170 msgid "Battery Mode" msgstr "" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "" #: camlibs/ptp2/ptp.c:4172 msgid "Camera Mode" msgstr "" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "" #: camlibs/ptp2/ptp.c:4176 msgid "Self Time" msgstr "" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 msgid "Shooting Mode" msgstr "" #: camlibs/ptp2/ptp.c:4180 msgid "Image Mode" msgstr "" #: camlibs/ptp2/ptp.c:4187 msgid "Slow Shutter Setting" msgstr "" #: camlibs/ptp2/ptp.c:4188 msgid "AF Mode" msgstr "" #: camlibs/ptp2/ptp.c:4189 msgid "Image Stabilization" msgstr "" #: camlibs/ptp2/ptp.c:4191 msgid "Color Gain" msgstr "" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "" #: camlibs/ptp2/ptp.c:4194 msgid "Parameter Set" msgstr "" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "" #: camlibs/ptp2/ptp.c:4207 msgid "Capture Transfer Mode" msgstr "" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "" #: camlibs/ptp2/ptp.c:4219 msgid "Camera Body ID" msgstr "" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "" #: camlibs/ptp2/ptp.c:4223 msgid "Digital Zoom Magnification" msgstr "" #: camlibs/ptp2/ptp.c:4224 msgid "Ml Spot Position" msgstr "" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "" #: camlibs/ptp2/ptp.c:4239 msgid "Model ID" msgstr "" #: camlibs/ptp2/ptp.c:4248 msgid "Shooting Bank" msgstr "" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "" #: camlibs/ptp2/ptp.c:4278 msgid "White Balance Preset Number" msgstr "" #: camlibs/ptp2/ptp.c:4280 msgid "White Balance Preset Name 0" msgstr "" #: camlibs/ptp2/ptp.c:4282 msgid "White Balance Preset Name 1" msgstr "" #: camlibs/ptp2/ptp.c:4284 msgid "White Balance Preset Name 2" msgstr "" #: camlibs/ptp2/ptp.c:4286 msgid "White Balance Preset Name 3" msgstr "" #: camlibs/ptp2/ptp.c:4288 msgid "White Balance Preset Name 4" msgstr "" #: camlibs/ptp2/ptp.c:4290 msgid "White Balance Preset Value 0" msgstr "" #: camlibs/ptp2/ptp.c:4292 msgid "White Balance Preset Value 1" msgstr "" #: camlibs/ptp2/ptp.c:4294 msgid "White Balance Preset Value 2" msgstr "" #: camlibs/ptp2/ptp.c:4296 msgid "White Balance Preset Value 3" msgstr "" #: camlibs/ptp2/ptp.c:4298 msgid "White Balance Preset Value 4" msgstr "" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "" #: camlibs/ptp2/ptp.c:4360 msgid "Focus Area Zone" msgstr "" #: camlibs/ptp2/ptp.c:4362 msgid "Enable Copyright" msgstr "" #: camlibs/ptp2/ptp.c:4366 msgid "Exposure ISO Step" msgstr "" #: camlibs/ptp2/ptp.c:4368 msgid "Exposure Step" msgstr "" #: camlibs/ptp2/ptp.c:4370 msgid "Exposure Compensation (EV)" msgstr "" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "" #: camlibs/ptp2/ptp.c:4376 msgid "Exposure Base Matrix" msgstr "" #: camlibs/ptp2/ptp.c:4378 msgid "Exposure Base Center" msgstr "" #: camlibs/ptp2/ptp.c:4380 msgid "Exposure Base Spot" msgstr "" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "" #: camlibs/ptp2/ptp.c:4390 msgid "Auto Meter Off Time" msgstr "" #: camlibs/ptp2/ptp.c:4392 msgid "Self Timer Delay" msgstr "" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "" #: camlibs/ptp2/ptp.c:4398 msgid "Auto Off Timers" msgstr "" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "" #: camlibs/ptp2/ptp.c:4402 msgid "Shooting Speed" msgstr "" #: camlibs/ptp2/ptp.c:4406 msgid "Exposure delay mode" msgstr "" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 msgid "Long Exposure Noise Reduction" msgstr "" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "" #: camlibs/ptp2/ptp.c:4418 msgid "High ISO noise reduction" msgstr "" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "" #: camlibs/ptp2/ptp.c:4424 msgid "Copyright Information" msgstr "" #: camlibs/ptp2/ptp.c:4432 msgid "Modeling Flash" msgstr "" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "" #: camlibs/ptp2/ptp.c:4440 msgid "Auto Bracket Selection" msgstr "" #: camlibs/ptp2/ptp.c:4441 msgid "NIKON Auto Bracketing Set" msgstr "" #: camlibs/ptp2/ptp.c:4443 msgid "Center Button Shooting Mode" msgstr "" #: camlibs/ptp2/ptp.c:4445 msgid "Center Button Playback Mode" msgstr "" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "" #: camlibs/ptp2/ptp.c:4457 msgid "Aperture Setting" msgstr "" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "" #: camlibs/ptp2/ptp.c:4465 msgid "Center Button Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4467 msgid "Function Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4471 msgid "Normal AF On" msgstr "" #: camlibs/ptp2/ptp.c:4473 msgid "Clean Image Sensor" msgstr "" #: camlibs/ptp2/ptp.c:4475 msgid "Image Comment String" msgstr "" #: camlibs/ptp2/ptp.c:4477 msgid "Image Comment Enable" msgstr "" #: camlibs/ptp2/ptp.c:4479 msgid "Image Rotation" msgstr "" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "" #: camlibs/ptp2/ptp.c:4497 msgid "Bracketing Enable" msgstr "" #: camlibs/ptp2/ptp.c:4499 msgid "Exposure Bracketing Step" msgstr "" #: camlibs/ptp2/ptp.c:4501 msgid "Exposure Bracketing Program" msgstr "" #: camlibs/ptp2/ptp.c:4503 msgid "Auto Exposure Bracket Count" msgstr "" #: camlibs/ptp2/ptp.c:4504 msgid "White Balance Bracket Step" msgstr "" #: camlibs/ptp2/ptp.c:4505 msgid "White Balance Bracket Program" msgstr "" #: camlibs/ptp2/ptp.c:4507 msgid "Lens ID" msgstr "" #: camlibs/ptp2/ptp.c:4509 msgid "Lens Sort" msgstr "" #: camlibs/ptp2/ptp.c:4511 msgid "Lens Type" msgstr "" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "" #: camlibs/ptp2/ptp.c:4523 msgid "Auto Off Photo" msgstr "" #: camlibs/ptp2/ptp.c:4525 msgid "Auto Off Menu" msgstr "" #: camlibs/ptp2/ptp.c:4527 msgid "Auto Off Info" msgstr "" #: camlibs/ptp2/ptp.c:4529 msgid "Self Timer Shot Number" msgstr "" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "" #: camlibs/ptp2/ptp.c:4537 msgid "Nikon Exposure Time" msgstr "" #: camlibs/ptp2/ptp.c:4539 msgid "Warning Status" msgstr "" #: camlibs/ptp2/ptp.c:4546 msgid "AF LCD Top Mode 2" msgstr "" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "" #: camlibs/ptp2/ptp.c:4552 msgid "Exposure Meter" msgstr "" #: camlibs/ptp2/ptp.c:4556 msgid "USB Speed" msgstr "" #: camlibs/ptp2/ptp.c:4558 msgid "CCD Serial Number" msgstr "" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "" #: camlibs/ptp2/ptp.c:4564 msgid "FNumber Lock" msgstr "" #: camlibs/ptp2/ptp.c:4566 msgid "Exposure Aperture Lock" msgstr "" #: camlibs/ptp2/ptp.c:4568 msgid "TV Lock Setting" msgstr "" #: camlibs/ptp2/ptp.c:4570 msgid "AV Lock Setting" msgstr "" #: camlibs/ptp2/ptp.c:4572 msgid "Illum Setting" msgstr "" #: camlibs/ptp2/ptp.c:4574 msgid "Focus Point Bright" msgstr "" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 msgid "External Flash Mode" msgstr "" #: camlibs/ptp2/ptp.c:4584 msgid "External Flash Compensation" msgstr "" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "" #: camlibs/ptp2/ptp.c:4604 msgid "BW Contrast" msgstr "" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "" #: camlibs/ptp2/ptp.c:4614 msgid "Flourescent Type" msgstr "" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "" #: camlibs/ptp2/ptp.c:4618 msgid "Tune Preset 0" msgstr "" #: camlibs/ptp2/ptp.c:4620 msgid "Tune Preset 1" msgstr "" #: camlibs/ptp2/ptp.c:4622 msgid "Tune Preset 2" msgstr "" #: camlibs/ptp2/ptp.c:4624 msgid "Tune Preset 3" msgstr "" #: camlibs/ptp2/ptp.c:4626 msgid "Tune Preset 4" msgstr "" #: camlibs/ptp2/ptp.c:4630 msgid "Autofocus Mode" msgstr "" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "" #: camlibs/ptp2/ptp.c:4656 msgid "Auto FP" msgstr "" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "" #: camlibs/ptp2/ptp.c:4662 msgid "Battery Cell Kind" msgstr "" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "" #: camlibs/ptp2/ptp.c:4670 msgid "Info Disp Setting" msgstr "" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "" #: camlibs/ptp2/ptp.c:4684 msgid "Live View Mode" msgstr "" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "" #: camlibs/ptp2/ptp.c:4694 msgid "Exposure Display Status" msgstr "" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "" #: camlibs/ptp2/ptp.c:4700 msgid "Exposure Indicate Lightup" msgstr "" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "" #: camlibs/ptp2/ptp.c:4708 msgid "Flash MRepeat Count" msgstr "" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "" #: camlibs/ptp2/ptp.c:4749 msgid "Image Compression" msgstr "" #: camlibs/ptp2/ptp.c:4758 msgid "Secure Time" msgstr "" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "" #: camlibs/ptp2/ptp.c:4782 msgid "Quality" msgstr "" #: camlibs/ptp2/ptp.c:4783 msgid "Release Mode" msgstr "" #: camlibs/ptp2/ptp.c:4784 msgid "Focus Areas" msgstr "" #: camlibs/ptp2/ptp.c:4785 msgid "AE Lock" msgstr "" #: camlibs/ptp2/ptp.c:4797 msgid "Image size" msgstr "" #: camlibs/ptp2/ptp.c:4798 msgid "Shutter speed" msgstr "" #: camlibs/ptp2/ptp.c:4799 msgid "Color temperature" msgstr "" #: camlibs/ptp2/ptp.c:4802 msgid "Expose Index" msgstr "" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 msgid "Still Image" msgstr "" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "" #: camlibs/ptp2/ptp.c:4940 msgid "JPEG Norm" msgstr "" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "" #: camlibs/ptp2/ptp.c:4966 msgid "Automatic flash" msgstr "" #: camlibs/ptp2/ptp.c:4969 msgid "Automatic Red-eye Reduction" msgstr "" #: camlibs/ptp2/ptp.c:4970 msgid "Red-eye fill flash" msgstr "" #: camlibs/ptp2/ptp.c:4988 msgid "Power Wind" msgstr "" #: camlibs/ptp2/ptp.c:4994 msgid "Timer + Remote" msgstr "" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "" #: camlibs/ptp2/ptp.c:5056 msgid "Flash Lock" msgstr "" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "" #: camlibs/ptp2/ptp.c:5169 msgid "LCD Backlight" msgstr "" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "" #: camlibs/ptp2/ptp.c:5228 msgid "1 min" msgstr "" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "" #: camlibs/ptp2/ptp.c:5266 msgid "Dark on light" msgstr "" #: camlibs/ptp2/ptp.c:5267 msgid "Light on dark" msgstr "" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "" #: camlibs/ptp2/ptp.c:5345 msgid "Auto + Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "" #: camlibs/ptp2/ptp.c:5370 msgid "Pan Focus" msgstr "" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5375 msgid "Continuous Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "" #: camlibs/ptp2/ptp.c:5386 msgid "Spot Metering" msgstr "" #: camlibs/ptp2/ptp.c:5387 msgid "Average Metering" msgstr "" #: camlibs/ptp2/ptp.c:5388 msgid "Evaluative Metering" msgstr "" #: camlibs/ptp2/ptp.c:5389 msgid "Partial Metering" msgstr "" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "" #: camlibs/ptp2/ptp.c:5392 msgid "Multi-Spot Metering" msgstr "" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 msgid "High 2" msgstr "" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "" #: camlibs/ptp2/ptp.c:5462 msgid "Development Parameters 1" msgstr "" #: camlibs/ptp2/ptp.c:5463 msgid "Development Parameters 2" msgstr "" #: camlibs/ptp2/ptp.c:5464 msgid "Development Parameters 3" msgstr "" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "" #: camlibs/ptp2/ptp.c:5600 msgid "Encounter" msgstr "" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "" #: camlibs/ptp2/ptp.c:5605 msgid "Undefined Audio" msgstr "" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5612 msgid "Undefined Video" msgstr "" #: camlibs/ptp2/ptp.c:5617 msgid "Undefined Collection" msgstr "" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "" #: camlibs/ptp2/ptp.c:5643 msgid "Undefined Contact" msgstr "" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "" #: camlibs/ptp2/ptp.c:5692 #, c-format msgid "Unknown(%04x)" msgstr "" #: camlibs/ptp2/ptp.c:5702 msgid "Get device info" msgstr "" #: camlibs/ptp2/ptp.c:5703 msgid "Open session" msgstr "" #: camlibs/ptp2/ptp.c:5704 msgid "Close session" msgstr "" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "" #: camlibs/ptp2/ptp.c:5711 msgid "Get thumbnail" msgstr "" #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "" #: camlibs/ptp2/ptp.c:5718 msgid "Self test device" msgstr "" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 msgid "Get Vendor Extension Maps" msgstr "" #: camlibs/ptp2/ptp.c:5735 msgid "Get Vendor Device Info" msgstr "" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 msgid "Get Filesystem Manifest" msgstr "" #: camlibs/ptp2/ptp.c:5738 msgid "Get Stream Info" msgstr "" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "" #: camlibs/ptp2/ptp.c:5759 msgid "Set license response" msgstr "" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "" #: camlibs/ptp2/ptp.c:5763 msgid "Get meter response" msgstr "" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "" #: camlibs/ptp2/ptp.c:5800 msgid "Send Partial Object" msgstr "" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:6012 msgid "Unknown PTP_OC" msgstr "" #: camlibs/ptp2/ptp.c:6029 msgid "Unknown VendorExtensionID" msgstr "" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "" #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "" #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "" #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "" #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "" #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "" #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "" #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "" #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "" #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "" #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 msgid "Aperture Settings" msgstr "" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 msgid "Portuguese" msgstr "" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "" #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "" #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "" #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "" #: camlibs/sierra/library.c:789 #, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "" #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "" #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "" #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "" #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "" #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "" #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "" #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "" #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "" #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "" #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "" #: camlibs/sierra/nikon-desc.c:558 msgid "Misc exposure/lens settings" msgstr "" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "" #: camlibs/sierra/olympus-desc.c:489 msgid "Color or Function Mode" msgstr "" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 msgid "Slow" msgstr "" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "" #: camlibs/sierra/olympus-desc.c:596 msgid "Fluorescent-1-home-6700K" msgstr "" #: camlibs/sierra/olympus-desc.c:597 msgid "Fluorescent-2-desk-5000K" msgstr "" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "" #: camlibs/sierra/olympus-desc.c:1147 msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" #: camlibs/sierra/olympus-desc.c:1166 msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 msgid "standard" msgstr "" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" #: camlibs/sierra/sierra.c:1948 #, c-format msgid "Camera Model: %s\n" msgstr "" #: camlibs/sierra/sierra.c:1957 #, c-format msgid "Serial Number: %s\n" msgstr "" #: camlibs/sierra/sierra.c:1960 #, c-format msgid "Software Rev.: %s\n" msgstr "" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, c-format msgid "Frames Taken: %i\n" msgstr "" #: camlibs/sierra/sierra.c:1971 #, c-format msgid "Frames Left: %i\n" msgstr "" #: camlibs/sierra/sierra.c:1973 #, c-format msgid "Battery Life: %i\n" msgstr "" #: camlibs/sierra/sierra.c:1975 #, c-format msgid "Memory Left: %i bytes\n" msgstr "" #: camlibs/sierra/sierra.c:1980 #, c-format msgid "Date: %s" msgstr "" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" #: camlibs/sierra/sierra.c:2060 msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" #: camlibs/sierra/sierra.c:2087 msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "" #: camlibs/stv0680/library.c:562 #, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "" #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "" #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "" #: camlibs/topfield/puppy.c:553 msgid "Driver Settings" msgstr "" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" #: camlibs/topfield/puppy.c:659 #, c-format msgid "Downloading %s..." msgstr "" #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "" #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "" #: libgphoto2/gphoto2-camera.c:750 #, c-format msgid "Could not detect any camera at port %s" msgstr "" #: libgphoto2/gphoto2-camera.c:774 msgid "You have to set the port prior to initialization of the camera." msgstr "" #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "" #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "" #: libgphoto2/gphoto2-camera.c:864 msgid "This camera does not provide any configuration options." msgstr "" #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "" #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "" #: libgphoto2/gphoto2-camera.c:960 msgid "This camera does not provide a manual." msgstr "" #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "" #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "" #: libgphoto2/gphoto2-camera.c:1056 msgid "This camera can not trigger capture." msgstr "" #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "" #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "" #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" #: libgphoto2/gphoto2-filesys.c:1259 #, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "" #: libgphoto2/gphoto2-filesys.c:1264 #, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "" #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "" #: libgphoto2/gphoto2-filesys.c:1359 #, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "" #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "" #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "" #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "" #: libgphoto2/gphoto2-filesys.c:2455 msgid "The filesystem doesn't support getting storage information" msgstr "" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "" #: libgphoto2/gphoto2-result.c:57 msgid "OS error in camera communication" msgstr "" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "" libgphoto2-2.5.9/po/boldquot.sed0000644000175000001440000000033112557123417013465 00000000000000s/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g s/“/“/g s/â€/â€/g s/‘/‘/g s/’/’/g libgphoto2-2.5.9/po/nl.gmo0000644000175000001440000047465712623156274012307 00000000000000Þ•s´;ï LwŸ Ÿ!Ÿ6ŸGŸ#\Ÿ€Ÿ#šŸ¾ŸÓŸæŸÿŸh z  ¤ ¿ 4Ú ¡$¡3¡K¡Fd¡«¡¿¡Ï¡ סâ¡ë¡ñ¡÷¡ ú¡b¢;j¢¦¢µ¢Ñ¢ã¢Åö¢O¼£ ¥ ¥!¥&¥+¥0¥5¥9¥?¥C¥I¥ K¥U¥[¥a¥j¥n¥s¥w¥|¥¥ˆ¥¥—¥ž¥¤¥¬¥³¥¹¥¾¥Ä¥Ì¥Ó¥×¥Þ¥æ¥í¥ó¥û¥¦¦ ¦¦¦ ¦'¦,¦0¦8¦?¦E¦J¦R¦Y¦_¦d¦i¦o¦w¦~¦ƒ¦‡¦¦–¦œ¦¡¦¨¦ °¦»¦ Á¦̦ѦÕ¦ ܦç¦ í¦ø¦ü¦ÿ¦ §§ §!§&§)§,§.§ 4§>§B§H§M§ R§]§ a§k§o§s§y§|§ §Ч§ “§ ž§©§­§³§·§º§½§¿§ ŧϧÕ§اÛ§ä§ê§ ñ§ û§¨ ¨¨ ¨¨.¨4¨7¨:¨@¨ E¨O¨ U¨_¨b¨e¨k¨o¨r¨t¨z¨ ¨‰¨Œ¨¨•¨ž¨¡¨¤¨ ­¨¸¨Ò¨ ð¨ý¨ © '©4©C© K© V©a© {©‰© ž©¬© »© ȩԩ æ© ó© þ© ª ª"ª*ª 0ª =ªJª `ªmªrª™uª­«½«Á¬جé¬û¬ ­­­0­'7­_­ h­s­.†­-µ­ ã­ï­®9 ®C®L®]®o®€®‘®¤®·® ¾®Ê®Ý® ñ®þ®¯ ¯,¯C¯S¯e¯n¯‡¯›¯¹¯ Ö¯ä¯ý¯ °$°7°L°a°v°‡°Ÿ°®° ¿° ɰÔ°é°ù° ±$±(@±i±y± ”±¢±¥±µ±ȱбâ±ó±÷± ú±²² '²4²/<²+l²1˜²'ʲ(ò²³8³ V³d´w´‰´‘´ £´o±´!µ 3µ @µMµ*lµ#—µ»µ Áµ̵ ѵÛµíµöµþµ¶¶ 4¶ B¶ P¶\¶ l¶ x¶„¶ж’¶—¶ ž¶ ¬¶¸¶À¶ ȶ Ó¶ ß¶ë¶ ÿ¶ ···/·5· D·Q·V· h·s·…·Ž·•·¤·³·È·Ý·Oì·<¸ P¸ \¸i¸ {¸†¸ ™¸ §¸´¸ĸÞ¸kþ¸8j¹#£¹8ǹ9º:ºANº4º+ź(ñº@» [»|»1˜»Ê»ç»#ü» ¼=¼U¼t¼ˆ¼›¼²¼̼'༽!½=8½ v½)‚½$¬½>ѽ ¾¾0¾M¾b¾q¾Ð‰¾Z¿n¿ v¿„¿•¿¨¿·¿Í¿è¿À ÀÀ3ÀIÀ ZÀgÀ(€À©À½ÀÙÀõÀÁ *Á6ÁIÁYÁqÁ ÁÁ Á¾Á×ÁïÁ "Â.ÂH bÂlÂ~‡–Ÿ¸ ËÂØÂ ìÂú ÃÃÃ3à 9à Dà OÃ[à jÃvÈà ŸÃ¬ÃÊÃßÃõà Ä<!Ä^Ä{ÄÄ  Ä¬Ä ÀÄ"ÎÄñÄ ÅÅ%Å9ÅXÅwÅţŸÅÊÅ ÓÅ ÝÅ çÅ óÅýÅÆ+ÆAÆ:PÆ<‹ÆÈÆåÆÇÇ&5Ç\ÇxǔDzÇÑÇ0ðÇ!È=È!WÈ'yÈ¡ÈÀÈ>ÜÈÉ2É&NÉ/uÉ<¥É<âÉÊ(9ÊbÊ~Ê šÊ*»Ê2æÊ-Ë4GË;|Ë0¸ËéËþËÌ9Ì5RÌ=ˆÌ5ÆÌsüÌpÍÍ&¡ÍÈÍkÑÍE=΃Ξ΅»ÎUAϗϞϷÏÐÏéÏ Ð Ð Ð'Ð @Ð LÐXÐ oÐ}Ð ‘ÐÿžÐžÑ§Ñ¶Ñ¿ÑÛÑáÑæÑ×öÑÎÓÝÓ äÓòÓÔÔ/ÔHÔaÔzÔ Ô™Ô.¨Ô×Ô ôÔÕ Õ *ÕÓ7Õ ÖEÖ^ÖoÖƒÖ™Ö¡Ö ³ÖÀÖL×Öµ$×HÚת#Ù,ÎÙûÚ ÛÛ1ÛJÛ_ÛsÛ‡ÛÛ²ÛÇÛàÛ ïÛúÛÜ ÜÜ Ü*Ü:Ü-JÜxÜÜ<¤ÜáÜþÜÝ-ÝGÝcÝ‚Ý†ÝŒÝ ”Ý Ý ¨Ý²Ý¸ÝÉÝ ÞÝéÝþÝÞÞÞ%Þ;ÞPÞ(fÞÞ'£Þ5ËÞ ß ß ß1+ß:]ß4˜ß-Íßûßàà6àLàgà{àà ­à»àÊàÜàóàá á (á6áLájá…á á´áÎáÝáõáâ%â9â Oâ ]âhâqâtâyâ~ââ†â5‰â¿âÒâââëâòâøâþâ ãã ã+ã,0ã]ãzãŠã ¡ã®ã ¿ãËãÚãêãUúã PäZä_näÎäãä ôäÿä åååN.å}å—å¨åÃåÔåÜåâå èåöå æ%æ 6æ Aæ Læ Væ aæoæ~æ ’ææ¯æ ÈæÓæææùæ ç ç(ç 1ç<ç KçWçlç$~ç£ç´ç"Äçççþçèè*è;èTèmè ˆè ”è¢èµèÈèÛèîèé é9éRémé…éœé²é Êé×éìéêê%ê+ê ;êGê Vêaê uê €êê ê¯ê#¾ê%âêëLëeëmë¼rë/ï 5ïBïbïwï†ï—ï¯ïÁïÈïÝïðï õï ð ðð.ðGð Oð\ðqðxð!Œð®ð ÄðÏðâðòðññ+ñ <ñJñcñsñˆñ"˜ñ»ñ.Ðñ ÿñ òò ò(ò1ò@òEòJòOòaòuò|ò•ò ®ò»òÌòßòØüòÕóQïóUAô2—ôÊôÙôéôìô õõ$õ*õ/õBõHõ fõtõ …õ“õ¨õ ½õÊõÚõ êõ õõ ööö3ö BöMöaövöˆö ö±ö/Áöñö ÷)÷ :÷D÷ K÷X÷_÷h÷ z÷%†÷.¬÷)Ûøùù*ù @ù1Mùù“ù:§ù*âù úú/ú>úTúmú"‡ú%ªúÐúëúû#ûAû _ûkûsûõûü üü 0ü :ü DüPüYü qüÿü ýŠþÒ ÿ^Ýÿ?<|£‘g5¤¨Â Þì + 4A;J †4™ÎÔäöû ? I S ]*g’© ¯ »ÉÙìû /;#Mq w„Ÿ»E×6 Ta x™¢¨¬¼Ï Õß ù((%Qw y† ¡ ¬¹¿ÇÎ ×ä ûB_]½ÄSÔ"("Kn€(ˆ(± Úè  ! 9 B K T  e  q |  › ®  Å Ñ î  ( F  U  c n "}   ¼ Ô æ ÷ ÿ p  †  £ ¿ Î K× #  + t6 ,« ˆØ a w ˆ —    ¨ ³    Î  Ü  ê  ö    !+M3m ¡Â á ï§ý ¥ ¯¹ ÂÍçö!û5GS ›$§ÌÔÛâ éöþ!1 @ KX htƒ€“ñ$(/M}&š/Áñô '4SfvŽ£¹#Ôø1BYmF…Ìãÿ  !.=F.\‹ œ¦9¯éÿ+.Z^a d…‰GØÛô"M5ƒ –£²ÆÖ åñ÷" ; HV v— Ÿª½¿Ã ÆÓå2D\t“±Ðê1Le~†¡½Ùî2'G,oœ¹Èà ô  -  E 1Q  ƒ ¬ ­:!åè!YÎ# ($ 4$ @$ L$Z$b$ s$€$’$¨$ ¼$ É$Ö$ë$ú$%,% =%K%T%l% q%{%”%¤% ¶%Ä% Ô%ß%è% î%û% &&&&6&F&V&f&v&ˆ&‘&!«& Í&î& '$'*='h'‚'•' «'¸'È'Ð'ß'õ'ù' ((,(B(Z(q(Š( (¸(¾(Ç(Ð(à( ÿ( )C)X)^)|)Ž)3ª)*Þ) *)*F*X* _* k*w*‡*‹* Ÿ*­*¿*Ý* ï*ü*+ !+B+I+Z+i+ …+Z“+ î+û+, -,8,J,_,t,‹„,–-§-­- ¼-Ê-$Ú-ÿ-N.T.šZ.®õ.ޤ/ü30 01;1 A1L1T1 d1 n1y1˜1©1¹1 Ê1 Õ1 ã1ð12 2 212 A2M2_2 e2 p2~2‘2­2Æ2á2õ2 3 !3 +3 53 ?3I3O3V3,o3œ3 ¢3­3 µ3 ¿3Í3 Ü3ê3 444 '454$P4u4#…4©4^¿4 5)5 05 <5 H5 U5c5y5jˆ5ó56"6B6K6_6d6 y6 ƒ6 6 š6z¤67%757G7L7Q7X7k7Â{8Á>;;>Q<> Ž>µ›>ÌQ?:@BY@;œ@?Ø@7A7PA1ˆA3ºAîA3ôA/(BXB`BH{BÄBËB ÐB'ÞBC C''COCWC`C€C–CžCZ³CNDT]DL²DMÿDAME:E ÊEØEôE ûE F!F3FHF]F(uF'žF ÆFÔFØF áFìFïFGGG3GÙ{GèUHì>IL+JbxJ&ÛJ,K%/K»UK-L9?L)yLM£L0ñL7"M,ZM:‡M7ÂM,úM'N=FNF„NKËN•Oj­O%P>P$[PS€PRÔP&'Q7NQ:†Q;ÁQ'ýQ&%RLSìÜTìÉV¶YÏZ ëZõZ [[ 4[@[ W[a[t[0…[¶[ È[Ó[Ü[õ[Dù[>\/W\‡\J¡\9ì\&]6]R] j] x] †] ”] ¢]°]¹] Õ]à]ã] õ] ^ ^^ ^ %^/^?^W^l^~^‘^£^º^Ê^ ç^ò^ ú^_ "_0_?_U_ m_{_ Ž_œ_¯_Â_×_ í_û_ `"`2`AG`D‰`Î`Õ` ì`-÷`%a7aJa _alaƒa’a¡a°a Åa ÏaÜa ëa öa b bb2b8b Jb Wb eb qb |b ‡b ”b ¢b¯b ÉbÔbäbôbec6jc¡c ¦c´cÐcìcd$d@d ]d~dšd¶dÒdîd e&eCe`e}eše ·e Ãe Ñe Ýe éeöe f"f3fDf]f bfofuf3…f ¹f ÅfÐfßflãf?Pg-gh¾gƒ'hn«h6iJQiHœi+åi,j`>jŸj²jÈjÙjíjkk5kMkekjk€k “k  k ­k ºk Çk Ôk ákrík`lel€l ˆl-–lÄlNØlQ'mKymLÅmPn?cn?£nDãn@(oIio?³o<óoQ0pN‚pVÑpV(qXqXØqG1rayr8ÛrIs^sdsws“s¦s ®s¹sÁs’ÆsïYuIvXvÓkv7?w ww„w w˜w=©w?çw'x9x BxPxbxgx~x—x¯xÉxàxùxyy'y,y3yEyIyLy eyGpy1¸y6êy(!z*Jzuzzz ƒz z —z¡z§zJ®zùz { {4{9{P{i{{›{²{Ë{ Ð{Þ{î{ò|;}<@}}} †}}£}"¬} Ï}Ù}ð}~~ 2~ =~H~O~NV~Ã¥~i€€š€°€%Ë€ñ€#2M^wuŠ‚‚)-‚#W‚8{‚´‚ ǂՂò‚S ƒ^ƒqƒ„ƒ Œƒ™ƒ¢ƒ¨ƒ®ƒ ±ƒZ¿ƒE„`„p„„¡„Õ³„މ… ‡ #‡.‡3‡8‡=‡B‡F‡L‡P‡V‡X‡a‡g‡m‡v‡z‡‡ƒ‡ˆ‡‡”‡›‡£‡ª‡°‡¸‡¿‡ŇʇЇ؇߇ã‡ê‡ò‡ù‡ÿ‡ˆˆˆˆˆ$ˆ,ˆ3ˆ8ˆ<ˆDˆKˆQˆVˆ^ˆeˆkˆpˆuˆ{ˆƒˆŠˆˆ“ˆ›ˆ¢ˆ¨ˆ­ˆ´ˆ »ˆƈ ̈؈݈ሠèˆóˆ ùˆ‰‰ ‰ ‰‰ !‰-‰2‰5‰8‰:‰ @‰K‰O‰U‰Z‰ _‰k‰o‰x‰|‰€‰†‰‰‰ Œ‰˜‰ž‰ ¡‰ ¬‰¸‰¼‰‰Ɖɉ̉Ή Ô‰߉å‰è‰ë‰ô‰ú‰ Š ŠŠŠŠ%Š .Š<ŠBŠEŠHŠNŠ SŠ^Š dŠnŠqŠtŠzŠ~ŠŠƒŠ‰Š ŽŠ™ŠœŠŸŠ¥Š­Š°Š ³Š ¾ŠÉŠ åŠ#‹*‹-J‹x‹˜‹¸‹É‹é‹ Œ $Œ2Œ EŒQŒ dŒqŒ‚Œ•Œ±ŒÆŒäŒüŒ ! /:Xm~ƒ¯†¾6Ž.õŽ$:K] n|‚”6›Ò ÛåEî=4‘r‘„‘œ‘C£‘ ç‘ñ‘’’4’E’X’k’ s’’•’ «’µ’º’Ò’ è’ ““(“1“M“m“"Š“#­“Ñ“ñ“””=”Q”e”}”—”®”½” Ñ” ݔꔕ•)•G•:e• •³• ѕߕâ•ú• ––7– I–S– W– c–p– ƒ– –6œ–?Ó–B—8V—5—#Å—#é—0 ˜>™Z™n™s™ „™l™ü™ ššš&9š`š€š ‡š•š šš¤š»šÄšÍšèš/íš › '›1› D›N› a› k›u›}›ƒ› ‹› ™› ¥› ±› ½› È› Ô›à›ô›œœœ,œ2œ AœNœTœ gœrœ‚œ‹œ ’œ œ¯œœ לSåœ9 I Ua r€”£³Ç)ás žIž"Éž9ìž9&Ÿ`ŸHxŸ<ÁŸ3þŸ32 Of %¶ "Ü >ÿ '>¡!f¡*ˆ¡)³¡Ý¡"ø¡¢.¢F¢b¢w¢0Š¢"»¢Þ¢Gý¢ E£2P£"ƒ£4¦£ Û£è£ù£¤/¤>¤ÜT¤1¥C¥J¥[¥o¥ Š¥•¥'«¥!Ó¥õ¥û¥! ¦,¦H¦^¦#o¦.“¦¦)ঠ§&§@§ Y§ d§p§§™§ ¨§³§!çå§ü§¨-¨ 5¨ A¨&M¨'t¨œ¨¢¨±¨Á¨Õ¨Þ¨ô¨ ©©3©B©\©e©m©€©†© —© ¢©­© ¿©Ë©Ü© ó©(ª*ªDªWªjªE}ª#êçªúª «« 3« @«a«y««˜«#­«#Ñ«õ« ¬#¬ :¬H¬ Q¬ [¬e¬ v¬€¬ 𬍬½¬CÒ¬B­'Y­!­£­í+â­®.®"N® q® ’®<³® ð®%¯7¯!W¯y¯“¯@­¯!&+°(R°N{°Mʰ!±.:±'i±!‘±%³±+Ù±3²69²<p²=­²5ë²!³7³T³q³@³Gг=´tV´Ë´ë´%µ'µg0µT˜µíµ ¶›'¶Wö ·%·?·Y·s· Œ· —·£·³· Í· Û·ç· ¸¸ (¸.6¸ e¹o¹~¹‡¹›¹¡¹¨¹Ôº¹» ¥»±»Ä»-Þ» ¼&¼@¼Z¼t¼‡¼ ˜¼.¦¼!Õ¼ ÷¼½½ ,½Ú:½¾C$¾h¾w¾$‰¾®¾·¾;Ó¾Aæ¾ï(¿mÀ½†ÁGDŒßôÃÉÃéÃÄÄ3ÄLÄdÄ${Ä Ä ¸ÄÃÄÒÄ îÄ øÄ ÅÅ!Å@4ÅuÅÅA¢ÅäÅÆÆ0ÆIÆgÆ„ÆˆÆ ŽÆ ™Æ¥Æ®Æ·Æ¼ÆÒÆ îÆøÆÇ*Ç1Ç:Ç?ÇWÇvÇ?–Ç ÖÇ-÷Ç>%È dÈoÈ‚È:‰È>ÄÈ8É9<É vÉ"ɤɻÉÒÉîÉ ÊÊ>ÊWÊhÊzʑʦÊÀÊÐÊàÊ#÷ÊË7ËSË*pË ›Ë©ËÃËÜËïËÌ Ì #Ì.Ì7Ì:Ì?ÌDÌGÌLÌ=OÌ̤̹ÌÁÌÊÌÒÌÚÌ âÌðÌÍÍ2ÍRÍp͇ͤͶÍÉÍÜÍòÍÎ`Î {Î ˆÎx©Î"Ï;Ï PÏ[Ï`ÏiÏrÏVˆÏßÏøÏÐ"Ð3Ð:ÐIÐOÐ_ÐpЌХР¸Ð ÃÐ ÍÐØÐèÐúÐ ÑÑ4Ñ EÑPÑhÑ{ÑÑ ¡Ñ «Ñ µÑÂÑÒÑáÑ úÑÒ %Ò 0Ò;ÒYÒoÒxÒ‹Ò›ÒªÒÀÒØÒñÒ ùÒ Ó Ó Ó "Ó ,Ó6ÓJÓ`ÓxÓ‘Ó¢Ó²ÓÄÓ ÕÓáÓöÓ ÔÔ.Ô4Ô FÔ QÔ^ÔqÔ ‚Ô ÔšÔ ²Ô ¿Ô'ÉÔ%ñÔÕO2Õ ‚ÕÕú’ÕÙ”Ù"¤ÙÇÙåÙøÙÚ,ÚBÚHÚ[ÚmÚqÚ€Ú “Ú¡Ú³ÚÎÚ ×ÚãÚ÷ÚýÚ,ÛHÛ`ÛoÛˆÛ›ÛµÛÑÛåÛøÛ Ü&Ü:ÜXÜ+oÜ›Ü9´Ü îÜ ûÜÝÝ Ý (Ý5Ý<ÝCÝHÝZÝqÝxÝ“Ý ®Ý¼ÝÎÝàÝòûÝîÞ] ßbkß5Îßàà#à&à ?àLà fà sà~à“à(™àÂàÑàáàñàá #á1áBá Sá^ámá |á‰ášá ¬á¹áËáæá ÷áâ,â5>â#tâ ˜â¹âËâ Òâ Ýâ çâóâüâ ã.ãCFã1Šä¼äÕäää øä3å8åNå?då+¤åÐåÙåðåææ;æ$Oæ tæ•æªæ¿æ׿íæ ç ç’çªç¼ç ÁçÌç âç íç úçè&è5èåHè5.éŽdêâóêlÖëGCì‹ì±ŸìtQíÆíÏíÓí îíî$$îIîXî hîrî ‰îE“î Ùîãî<èî%ï+ï=ïQïWïvï!~ï  ïªï ³ï½ï.Æïõïð ð ð0ðCðXð'mð$•ð ºðÆð,×ðñ ñ$ñ!<ñ^ñM}ñ&Ëñ&òñò+ò&Aò hò tò€ò…ò–ò­ò ´òÁò Ùòçòùò, ó*8ócóeóvó •ó ó±ó·ó ¿ó ÉóÕó#æó ôôE*ômpôÞô åôYóô*Mõ*xõ£õ´õ*½õ*èõö#ö?öFö]öyö‚ö‹ö”ö«öºöÉöâöñö÷ #÷1÷O÷m÷:€÷»÷ Ô÷ à÷ ê÷"ø÷ø7øOø`øpøyø‚øùù%8ù^ùpùJyùÄù Ìùƒ×ù1[úyúûû.û=û Cû OûZûiû |û ‡û •û û°ûÀû ÐûÚûøû3üIü!gü ‰ü•ü´ªü _ý iýsý |ýˆý šý§ý"¬ýHÏý@þYþ6iþ  þ ¬þ ·þ Âþ ÍþÛþäþíþüþÿ ÿ-ÿ 3ÿ>ÿ Mÿ Yÿeÿctÿ Øâó6><.{+ª:Ö%+Q'`ˆ¤ ¹ÄØó *)$Ty*¸Íéÿc!| ž¿Ä×ßè÷2)\ m yM‡Õé+FJM0Q‚†Ž, 0  G U  k y Rˆ Û  î  ü   /  B N V v  Š «  ´ 1Õ 2 : A S r t x { Œ £ à -Ù    < +V ,‚ ¯ Ï ë 6%R"x›(£!Ì%î1G`}/–1Æø%-!S u » ÛBæ )¾5¾ô³a¼  * 6 B O\qƒ˜±É Ùä û4L ]jƒ Œš °¾ÍÝ íû 0GVrŽªÆâõ"ü,/L%|8¢5ÛE,W„™ ¯ » ÇÑàûÿ!4Lfƒ¢»ÖÜåõ$ )6cFª±Ñå:,@!m­Ã Ê Ö âïô(E^vŽŸ ¼Çá!ô](† —¸ ÑÛñ–/±Æx    ‹ — '¨ Ð [Ö 2!°9!¿ê!¤ª"O# f$r$ y$…$Œ$$°$'¿$ç$ú$ %'%6%I%[%n%Œ%%²% È%Õ%ç% í% ù%&&!/&+Q&}&’&®& Ê& ×& ä& ñ&þ&''>!'`'g'p'y' ‚'Ž' '©'Â' Ö' ä' ò'þ'#( <(%J(p(h‰(ò(û( ) ) )');)T)rc)Ö)&ô)&*B*K* [*e* w** “* *†§*.+4+G+\+c+i+q+!†+,¨,Õ/>ë2I*3 t3Ò€3ïS43C53w52«5:Þ5.62H6.{63ª6Þ6;å6;!7]7#d7Rˆ7Û7á7 æ7%ò78 *8%68\8 d8 n88 ¢8¬8ZÇ8P"9Zs9PÎ9T:Bt:>·: ö:!; #; 1; <;&F;m;‹;£;.¹;1è; <'<+< 4<?< B<M<%e<C‹<Ï<ÐÕ=ÿ¦>E¦?zì?+g@0“@2Ä@²÷@.ªAGÙA(!BFJB@‘BFÒB>CDXCIC/çCDL6D@ƒD@ÄD”E~šE,F#FF'jFP’FOãF'3G-[G;‰G@ÅG,HP3H«„I0KQEM)—PÁQ ÝQçQRR 7RCR ZRfRzR<ŒRÉR ÙR ãRíR SQSdS=S)½S^çS:FTT‘T °T ÑT ßT íT ûT U U!U 6UAU DURU kUuU}U …U’U¡U·UÓUïUVV5VTV*jV •V  V «V#·VÛVêVúVW.W=WQWbWxWŽW¦W¾WÎWàWöW XK+XWwX ÏXÚX ùX2Y7YOYeY|Y$’Y·YÎYåYüYZ Z,Z =Z HZ RZ\ZnZ€Z‰Z  Z­Z ÄZ ÑZ ÝZ èZôZ[[+[4[J[`[fv[AÝ[\ $\.\I\d\\š\µ\Õ\ð\]0]P]p]]!°]!Ò]!ô]!^!8^Z^ l^v^ ˆ^ ’^œ^´^ Ì^ Ú^è^ü^ _ __@6_ w_ „__ž_u¡_E`9]`Z—`Šò`}}a;ûaG7bKb*Ëb*öb^!c€c•cªc¼cÏcêcd d;dUd\drd Šd —d ¤d ±d ¾d Ëd Ødãdcehe€e …e>eÎeUèeX>fH—fIàf_*g:Šg?ÅgTh9ZhN”h<ãh4 iVUi^¬iW jecj\Éjg&kWŽkoæk9VlWlèlîl)m/m JmUm \mgm’lmÿnpp&p?,q lqxqqˆq@qBÞq$!r FrRrarsrxr‘r¬rÊrêrs s8s=sXs]seszs~s‚s™s@¡s5âs>t0Wt2ˆt»t ÄtÒt âtïtÿtue u$su#˜u¼uÍuÒuëuv$vDv^vzv vv0œvÍwDãwE(x nx xx‚x—x'©xÑxàx÷x y#y þйo×dB%§à§1Y’8Åfï…g›Ñ2ªH†‡\I[kÐkùœªÎ"’è@ßfTÃŒ”)Ú \UGYpkH’j·Nô¤ 4n6‹í³h0G 0—0¾m94å¢H)2‚WD˜8UÕK:ûó»» ÿ©:prI WŽe_„ô,!Þ´×˵õÜzòDô¢ ]š6ž Ç„AñÅç„s"aË•`ÚÇ;úûžÉñ`pÆìúZ0gh ÉïÔ¡¯1-B7&LB;Ú<?Ãwv‚™• u·øÊLYÙªÌîÙþZ¿=ÕUñøyév`åBŠÂNÊísÆÀgö€ ÍÓ't%:¿ÛrdP hBTvÜ\jDQA0¢?É}"K2·«èúKU*{#÷^8ø5¾†1S!i$Ï9//|ýP} […JJ‹]|bööâ•&Œ–'FÔu>°6Ò]›%ô6cœFXS¶”¨që҆̈ãõ†£¯®)̰ó¤²PNï ’³™a·ç¥¸E¥+¹a•Þ±wé™gȬBüÃzóü¬°*,¬œ‰;pY…`ñMêD¿H˜Í.ÙÄÎÑs@ëi¦jr>°¤$žW‚7X½‘íYZ®ýFÖ‡Þ-„®Ñ7qz¯ˆø¦!)É ì Ü’ƒ4"õˆPOt>AbÌòÏ|ÑaÛ€{RTºíÅÆÎÇ¥ÈKüzzìhŸ¬c¥Þ»1çJþ¤,Þ€¸CAu$D+Á‡q¨rçT–ú”~úz$Ww‰µ53¬õéÓRÕ‰¤ ÖW#7ÔÖ_M àþ|N#5"º§MBÜ”‚lm/ HŸ“ß.HÇ#È·L¾kÔ9Êùðo Ážx®mD:‡µùàO.Dƒs¹Ä„€Û¯kä)#c¾\Õ^™g;äåæÐ%¿‰vsm ¯±?òjŠW“ð Iƒ›IçQc㔂ŸÛOÖeÔ/ÄᎪ4Ö²ea´Û£›çߥc%²¹Ò6¾ªR G×"@Š|2¹Ò’>a+:Jªƒ@ä¸ /aÉüF5ñø Ü¡†¸ÍGÄ^1+#¦ Tt§<=Q' KØÊß(—êË~îä!ŸXLFý –do\ÏÒ’£†Ý×ý·5÷«®§±˜)EÕ¨½É‹à&F&",Xö↵iŒ–¡æ­ú#Ä &'¥g(²Ã™v}2Ž2¾e÷ùK%zåŒuºßëº$E$ÿn©=Ë5ã`ukp4½Ì?Àé/ñ²29à:ENtdß j=¦ÝðÁV³Î4,, “Œ-¶‚‘ƒ@JÅë'(Ò._ÄÚ÷=¶Ÿ‘jl¬´«ýžðKçr¤{¢T ÝYfg_”¸kå>E­–y›‰ Ý\M­îtM©Àøq>FëXr'~AA¾˜ž7¯ÚR¶?l€ÁW@õ)‹ÿáéZxvÀÉiDLœ½ˆo—€È|!Õ˜Ñi£=4¼F¢ðJ a^n¶P<¦ c3“I+‚ÝêZ wZŽÐÈ[iÅSñyäìm.h3#ï–_V{7«*Cæt1ª­-­9Ÿ„Ç ¿~U)x?ØåNãBîØØòÆÞ ž©Ó7€•™fI~q…,Jbk…Í AqÚënõb[-ãâûȽ M¼oR+rCÁ¨¢›9XYV;*<X_«÷ Ì¿ÏÎÐúSy²3åR÷Hއ³¡…wOI*Ó¼ ¬½Ö´‰³]Pf“—6±ìY3G¢ƒIV1jnæxyOµCáQìþ×qÙ§ÆqÙ@Œ[;9 >3šwí8ÿlÒûü«e¸u^ø¿P_l©Ç*Ër˜ ý›xŒ`+•;M<UgGàâüÜ„±'8³Žœê8Š}NœHUæGb^]ãˆRÝ`¦þÈf]K;<-C l}ËöºSé×Å»±š(dâSVÁwù²Ë= me(ðµp&‰*ÂÍEÀ —ÿô—5M¥QÓ±yœRPÜlb¦( Access Capability: %s Canon Wifi support File Download, Filesystemtype: %s Free Space (Bytes): %llu (%lu MB) Free Space (Images): %d Maximum Capability: %llu (%lu MB) Nikon Wifi support Storage Type: %s StorageDescription: %s VolumeLabel: %s Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Capture Formats: Device Capabilities: Device Property Summary: Storage Devices Summary: Drive %s %11s bytes total %11s bytes available Serial Number: %s Version: %s (battery is %d%% full) PTP error %04x on query Total memory is %8d bytes. Free memory is %8d bytes. Filecount: %d error %x on query. not read out. %.0f mm%.1f stops%d %d/%d%d mm%d/%d%f%i (unknown)%i bytes of an unknown image format have been received. Please write to %s and ask for assistance.%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)%sNikon Capture 2%sNikon Capture 3 (Traveler) SX330z Library (And other Aldi-cams). Even other Vendors like Jenoptik, Skanhex, Maginon should work. Please send bugreports and comments. Dominik Kuhlen * Image glitches or problems communicating are often caused by a low battery. * Images captured remotely on this camera are stored in temporary RAM and not in the flash memory card. * Exposure control when capturing images can be configured manually or set to automatic mode. * Image quality is currently lower than it could be. *UNKNOWN*+NEF (RAW)-0.5-1.0-1.5-2.00.00.1 m0.50.5 m11 (Short)1 fps1 min1 minute1.01.3s1.51.6s1.6x1/1.3s1/1.6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2.5s1/2000s1/200s1/20s1/2500s1/250s1/25s1/2s1/301/30s1/3200s1/320s1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 mins10 minutes10 mm10 seconds100%10s11 fps1152 x 86412 mm1280 x 96013s1515 mins15 minutes15s16 seconds16:91s1x22 fps2 seconds2.02.0 m2.5s2.5x20 seconds20s21 points25%25s29 mm2s2x3 (Normal)3 fps3030 minutes30 seconds30s34 mm3:23s3x44 fps4 seconds41 mm4s4x5 (Long)5 fps5 mins5 minutes5 seconds50 Hz50%51 mm51 points51 points (3D)58 mm5s5x6 fps6 mm6 seconds60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 seconds8s8x9 fps9 points9xACAC PowerAC adapterAC adapter is connected. AC adapter is not connected. AE Lock onlyAE lock (Hold)AE lock (Reset on release)AE lock onlyAE-L/AF-L ModeAE-lockAE/AF LockAE/AF lockAEB Exposure CompensationAF ActivationAF Area IlluminationAF Area PointAF Assist LampAF Beep ModeAF DistanceAF LCD Top Mode 2AF Lock HoldAF Lock OnAF Lock OnlyAF Lock onlyAF LockedAF ModeAF OnAF On ButtonAF lock onlyASIC Revision: %d.%d ASX PlaylistAUTOAVAX203 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.AX203 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.About Konica Q-M150: This camera does not allow any changes from the outside. So in the configuration, you can only see what it is configured on the camera but you can not change anything. If you have some issues with this driver, please e-mail its authors. Abstract Calendar ItemAbstract ContactAbstract DocumentAbstract MessageAccess modeActionActive AF SensorAd-hocAdc65 Benjamin Moos AdobeRGBAlbum nameAlkalium manganeseAn error occurred in the io-library ('%s'): %sAn unknown error occurred. Please contact %s.Anti-redeyeAnti-redeye FillAnywhereAox generic driver Theodore Kilgore ApertureAperture SettingAperture SettingsAperture changedApplication ModeApplication Mode 0Application Mode 1ArtistArtist NameAssign Func ButtonAssign Func. ButtonAssist LightAutoAuto + Red Eye SuppressionAuto ApertureAuto Bracket SelectionAuto Focus AreaAuto Focus Mode 2Auto ISOAuto ISO P/A/DVP SettingAuto Meter Off TimeAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off TimeAuto Power Off (minutes)Auto Slow SyncAuto White Balance BiasAuto exposure lockAuto focus: AI focusAuto focus: AI servoAuto focus: one-shotAuto sensitivityAuto, red-eye reductionAutofocus ModeAutofocus error.AutomaticAutomatic Automatic (No Flash)Automatic FlashAutomatic MacroAutomatic Macro (close-up)Automatic Red-eye ReductionAutomatic exposure adjustment on previewAutomatic flashAutomatic flash on captureAutumn colorsAvAvailable ShotsAvailable memory: AverageAverage FilesizesAverage MeteringB/WBWBW ContrastBW Filler EffectBW Setting TypeBW SharpnessBad EOTBad characters (0x%x, 0x%x). Please contact %s.Bad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for card status %dBad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.BatteryBattery Cell KindBattery LevelBattery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery Life: %i Battery ModeBattery TypeBattery exhausted, camera off.Battery level: %.1f Volts. Revision: %08x.Battery status: %s, AC Adapter: %s BeachBeach/SnowBeepBeep ModeBeep mode changedBeep offBeep onBegin Edit ObjectBestBit rate %ld is not supported.Black & WhiteBlack & whiteBlack BoardBlack and WhiteBlack boardBlack/WhiteBlinkBlossomBlueBottomBracket OrderBracket SetBright+Bright-BrightnessBrightness+Brightness-Brightness/ContrastBuiltin RAMBuiltin ROMBulbBulb Exposure TimeBurstBurst IntervalBurst NumberBusyButtons and DialsCCD NumberCCD Serial NumberCSM MenuCameraCamera ActionsCamera Body IDCamera ConfigurationCamera Date and TimeCamera ID: %s Camera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera ManufacturerCamera ModeCamera ModelCamera Model: %s Camera OK.Camera OrientationCamera OutputCamera OwnerCamera SettingsCamera Status InformationCamera and Driver ConfigurationCamera appears to not be using CompactFlash storage Unfortunately we do not support that at the moment :-( Camera busy. If the problem persists, please contact %s.Camera could not complete operationCamera did not accept the parameters. Please contact %s.Camera driver '%s' is missing the 'camera_init' function.Camera has memory. Camera has taken %d pictures, and is using CompactFlash storage. Camera is configured for lights flickering by %dHz. Camera is in wrong mode. Please contact %s.Camera not ready, get_battery failed: %sCamera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera time: %s %s Camera unavailableCamera unavailable: %sCamera was already activeCamera was woken upCan't capture new images. Unknown errorCan't delete all images.Can't delete image %s.Can't upload this image to the camera. An error has occurred.CandlelightCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCanon CaptureCanon EOS CaptureCanon EOS Capture failed: %xCanon EOS ViewfinderCanon EOS ZoomCanon EOS Zoom PositionCanon PowerShot series driver by Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5 additions by Ole W. Saastad Additional enhancements by Holger Klemm Stephen H. WestinCanon Shooting ModeCaptureCapture DelayCapture SettingsCapture Size ClassCapture TargetCapture Transfer ModeCapture size class changedCapture type is not supportedCardCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card name: %s Free space on card: %d kB Card not supported.Card removed during access.Center Button Playback ModeCenter Button Shooting ModeCenter Button Zoom RatioCenter SpotCenter Weight AreaCenter WeightedCenter Weighted AverageCenter-WeightedCenter-spotCenter-weightedCenter-weighted Average MeteringCenter-weighted MeteringCenter-weighted averageCenter-weighted meteringCentreCentre Weight AreaCentre-spotChange Camera Mode FailedChanging speed... wait...CharacterCharacter & SoundChargingChecksum errorChildrenChoose Color TemperatureClean Image SensorClean SensorClose Media SessionClose sessionClosest SubjectCloseupCloudyCloudy White Balance BiasColorColor GainColor ModeColor ModelColor SettingsColor SpaceColor TemperatureColor or Function ModeColor sketchCommand can not be cancelled.Command order error.Communication error 1Communication error 2Communication error 3Communication error even after 2 retries. Please contact %s.Compact Flash Card detected CompactFlash CardCompatibility ModeCompressionCompression SettingConfigurationConfiguration for your FUJI cameraConnected to cameraContinuousContinuous Low SpeedContinuous ShootingContinuous Shooting Speed HighContinuous Shooting Speed SlowContinuous Speed HighContinuous high speedContinuous low speedContinuous silentContrastContrast+Contrast-Copy objectCopyrightCopyright (max. 20 characters)Copyright InfoCopyright InformationCorrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not change ISO speedCould not change apertureCould not change beep modeCould not change exposure compensationCould not change flash modeCould not change focus modeCould not change image formatCould not change shooting modeCould not change shutter speedCould not change time of file '%s' in '%s' (%s).Could not change zoom levelCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not create directory %s.Could not create directory.Could not delete file '%s' in folder '%s' (error code %i: %s).Could not delete file.Could not detect any cameraCould not detect any camera at port %sCould not establish initial contact with cameraCould not extract JPEG thumbnail from data: Data is not JFIFCould not extract JPEG thumbnail from data: No beginning/endCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not get information about '%s' (%s).Could not get information about '%s' in '%s' (%s).Could not get register %i. Please contact %s.Could not get string register %i. Please contact %s.Could not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not remove directory %s.Could not remove directory.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet (error code %i). Please contact %s.Could not transmit packet even after several retries.Could not upload, no free folder name available! 999CANON folder name exists and has an AUT_9999.JPG picture in it.Couldn't read from file "%s"Create Wifi profileCreation date: %s, Last usage date: %sCreativeCreative PC-CAM 300 Authors: Till Adam and: Miah Gregory Creative PC-CAM600 Author: Peter Kajberg Current Mode: Camera Mode Current Mode: Playback Mode Current camera time: %04d-%02d-%02d %02d:%02d Free card memory: %d Images on card: %d Free space (Images): %d Battery level: %d %%.Currently, PTP is only implemented for USB and PTP/IP cameras currently, port type %xCustomCustom Whitebalance PC-1Custom Whitebalance PC-2Custom Whitebalance PC-3Customise Command DialsDD/MM/YYYYDPOF VersionDark on lightData has been corrupted.Date & TimeDate FormatDate Time Stamp FormatDate and TimeDate and time (GMT)Date displayDate: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDate: %sDay/Month/YearDaylightDaylight White Balance BiasDebugDeepDefault gatewayDefault sierra driver: This is the default sierra driver, it should be capable of supporting the download and browsing of pictures on your camera. Camera configuration (or preferences) settings are based on the Olympus 3040, and are likely incomplete. If you verify that the configuration settings are complete for your camera, or can contribute code to support complete configuration, please contact the developer mailing list. Delayed RemoteDeleteDelete objectDeleting image %s.Detected a "%s" aka "%s"Detected a '%s'.Development Parameters 1Development Parameters 2Development Parameters 3Device CertificateDevice IconDevice VersionDigita Johannes Erdfelt Digital Camera Layout (DCIM)Digital ZoomDigital Zoom MagnificationDigital macroDigital zoomDimera 3500 ver. %s %d/%d %d:%d. %d pictures used of approximately %d (high res) or %d (low res). Camera features: %s, %s, %s, %s. Flash is %s, is %s and is %s. Resolution is set to %s. Camera is %s powered %s. Direct PrintDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisconnecting camera.DisplayDisplay Formats: Distant ViewDo not display TV menuDon't know how to handle camera->port->type value %i aka 0x%x in %s line %i.Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy to port your driver on this cam! Download program for GrandTek 98x based cameras. Originally written by Chris Byrne , and adapted for gphoto2 by Lutz Mueller .Protocol enhancements and postprocessing for Jenoptik JD350e by Michael Trawny . Bugfixes by Marcus Meissner .Download program for Polaroid DC700 camera. Originally written by Ryan Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz Mueller .Download program for several Polaroid cameras. Originally written by Peter Desnoyers , and adapted for gphoto2 by Nathan Stenzel and Lutz Mueller . Polaroid 640SE testing was done by Michael Golden .Downloading %s.Downloading %s...Downloading '%s'...Downloading EXIF data...Downloading audio...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading movie...Downloading thumbnail...Downloading...Drive ModeDriverDriver SettingsDual IrisDuskDusk/DawnDynamic AF AreaDynamic-area AFDynamic-area AF with closest subject priorityEEPROM checksum error.ERROR: %d is too bigERROR: a fatal error condition was detected, can't continue ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.ESPESSIDEconomyEffect ModeEffectsEmergencyEmptyEnable CopyrightEnable Image CommentEncryptionEncryption key (hex)End Edit ObjectEnglishEnhancedErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationError waiting for ACK during initialization, retryingEvaluativeEvaluative MeteringEverywhereExecute predefined command with parameter values.Expected %i bytes, got %i. Please report this error to %s.Expected %i, got %i. Please report this error to %s.Expected 32 bytes, got %i. Please contact %s.ExposureExposure Aperture LockExposure Bias CompensationExposure CompensationExposure Compensation (EV)Exposure Delay ModeExposure ISO StepExposure Index (film speed ISO)Exposure LockExposure MeterExposure MeteringExposure Metering ModeExposure ProgramExposure Program ModeExposure StepExposure TimeExposure compensationExposure compensation changedExposure compensation: %d Exposure compensation: %s Exposure delay modeExposure level on previewExternal FlashExternal Flash AttachedExternal Flash CompensationExternal Flash ModeExternal Flash SortExternal Flash StatusExternal syncExtra highF-NumberF2F2.3F2.8F4F5.6F8FATAL ERROR: initial CRC value for length %d unknown FLASH: Files: %d Factory DefaultFaithfulFar %dFar 1Far 2Far 3Far sceneFast FilesystemFast shutterFileFile '%s' could not be found in folder '%s'.File '%s/%s' does not exist.File Deletion, File Number SequencingFile Upload File compressionFile existsFile not foundFile protected.File resolutionFile size is %ld bytes. The size of the largest file possible to upload is: %i bytes.File typeFile upload failed.File was too big. You may have to turn your camera off and back on before uploading more files.Filetype: FlashPix (Filetype: JPEG (Fill flashFineFireworksFirmwareFirmware Revision: %8sFirmware Revision: %8s Pictures: %i Memory Total: %ikB Memory Free: %ikB Firmware Revision: %d.%d Firmware VersionFirmware version: %d.%02d Firmware: %d.%d FisheyeFixedFlashFlash ChargedFlash CompensationFlash Exposure CompensationFlash Level LockFlash LockFlash ModeFlash OffFlash OpenFlash SettingFlash SettingsFlash Shutter SpeedFlash SignFlash Sync. SpeedFlash White Balance BiasFlash autoFlash mode changedFlash mode: auto, Flash mode: force, Flash mode: off Flash offFlash onFlash onlyFlash/apertureFlash/speedFlash/speed/apertureFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFlexible ProgramFlicker ReductionFlourescent TypeFlourescent-1-home-6700KFlourescent-2-desk-5000KFlourescent-3-office-4200KFluorescentFluorescent HFluorescent Lamp 1Fluorescent Lamp 2Fluorescent Lamp 3Fluorescent Lamp 4Fluorescent Lamp 5Fluorescent White Balance BiasFluorescent-1-home-6700KFluorescent-2-desk-5000KFluorescent-3-office-4200KFluorescent: Cold WhiteFluorescent: Day WhiteFluorescent: DaylightFluorescent: Warm WhiteFocal LengthFocal Length MaximumFocal Length MinimumFocal Length TeleFocal Length WideFocusFocus Area WrapFocus AreasFocus DistanceFocus LockFocus Metering ModeFocus ModeFocus Mode 2Focus mode changedFocus positionFocusing PointFocusing Point on Center Only, AutoFocusing Point on Center Only, ManualFocusing error.Folder '%s' only contains %i files, but you requested a file with number %i.FoliageFoodFor cameras with S&Q Technologies chip. Should work with gtkam. Photos will be saved in PPM format. All known S&Q cameras have two resolution settings. What those are, will depend on your particular camera. A few of these cameras allow deletion of all photos. Most do not. Uploading of data to the camera is not supported. The photo compression mode found on many of the S&Q cameras is supported, to some extent. If present on the camera, video clips are seen as subfolders. Gtkam will download these separately. When clips are present on the camera, there is a little triangle before the name of the camera. If no folders are listed, click on the little triangle to make them appear. Click on a folder to enter it and see the frames in it, or to download them. The frames will be downloaded as separate photos, with special names which specify from which clip they came. Thus, you may freely choose to save clip frames in separate directories. or not. ForceForce Flash Format card and set album name.Format compact flashFormat storageFrames Left: %i Frames Taken : %4d Frames Taken: %i FrenchFriendly Device NameFront-curtain syncFullFull ImageFull ManualFunction Button 2Functional ModeFunctional Mode: 0x%04x GeneralGeneric FlatGeneric HierarchicalGermanGet Next Data BlockGet Partial Object (64bit Offset)Get number of objectsGet objectGet object handlesGet object infoGet object referencesGet partial objectGet storage IDsGet storage infoGet thumbnailGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...Got unexpected result 0x%x. Please contact %s.Gray scaleGrayscaleGreenGroup DynamicHDR ModeHardware ErrorHi 1Hi 2HighHigh (1152 x 872)High (good quality)High 2High ISO Noise ReductionHigh ISO noise reductionHigh controlHigh sensitivityHigh-Speed ShutterHighlight active focus pointHost Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?Hue AdjustmentI/O in progressIDIP address (empty for DHCP)ISO SpeedISO speed changedIconsIdleIllegal parameter.ImageImage %s is delete protected.Image & SoundImage AdjustmentImage CommentImage Comment EnableImage Comment StringImage FormatImage Format CFImage Format SDImage ModeImage QualityImage ReviewImage RotationImage Rotation FlagImage SettingsImage SizeImage StabilizationImage format changedImage height: %d Image number not valid.Image protected.Image size: %d Image type %d is not supported by this camera !Image type %d not supportedImage type is not supportedImage width: %d ImmediateIn useIncandescentIndoorInfinityInfinity/Fish-eyeInformationInformation on STV0680-based camera: Information regarding cameras with ID 0x2770:0x9153. We do not recommend the use of a GUI program to access this camera, unless you are just having fun or trying to see if you can blow a fuse. For production use, try gphoto2 -P from the command line. Note: it is not possible to download video clips. Initial camera response '%c' unrecognizedInitializing CameraInitiate captureInitiate open captureInternal RAMInternal error #1 in get_file_func() (%s line %i)Internal error (1).Internal error (2).Internal error looking for camlibs. (path names too long?)Internal memory: %d MB total, %d MB free. InvalidInvalid ISO speed settingInvalid StatusInvalid Value ( %d ) Invalid aperture settingInvalid beep mode settingInvalid capture size class settingInvalid exposure compensation settingInvalid flash mode settingInvalid focus mode settingInvalid image format settingInvalid shooting mode settingInvalid shutter speed settingIris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JD11 ConfigurationJPEGJPEG BasicJPEG Compression PolicyJPEG FineJPEG NormJPEG NormalJapaneseKeep filename on uploadKids and petsKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Kodak EZ200 driver Bucas Jean-Francois Konica ConfigurationKonica Q-M150 Library Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Support for the french Konica Q-M150.Konica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BacklightLCD Backlight and Info DisplayLCD BrightnessLCD IlluminationLCD ModeLCD Off TimeLED ModeLG GSM generic driver Guillaume Bedot LandscapeLanguageLargan driver Hubert Figuiere LargeLarge Fine JPEGLarge Normal JPEGLeftLens Focal Length (Non CPU)Lens IDLens Maximum Aperture (Non CPU)Lens ModeLens NameLens SortLens TypeLens direction does not match flash light Lens is not connected LightLight MeterLight on darkLight too dark.List Wifi profilesList all filesListing files in '%s'...Listing folders in '%s'...Lithium IonLive View AF AreaLoading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!Logitech Clicksmart 310 driver Theodore Kilgore Long Exp Noise ReductionLong Exposure Noise ReductionLong shutterLooking for camera ...Looks like a modem, not a cameraLosslessLossyLowLow (576 x 436)Low (best quality)Low 2Low LightLow Speed SynchronizationLow contrastLow sensitivityLow-Speed ShutterLow-speed shutter function not availableLower case letters in %s not allowed.MM3U PlaylistMHT Compiled HTML DocumentMM/DD/YYYYMPL PlaylistMacroManagedManualManual 2Manual FocusManual Mode BracketingManual focusManufacturer: %s Mars MR97310 camera library Theodore Kilgore Mars MR97310 camera. There is %i photo in it. Mars MR97310 camera. There are %i photos in it. MatrixMatrix meteringMatthew G. Martin Based on fujiplay by Thierry Bousch Max. Aperture at Max. Focal LengthMax. Aperture at Min. Focal LengthMax. Focal LengthMaximalMaximum Aperture at Focal Length MaximumMaximum Aperture at Focal Length MinimumMaximum ShotsMaximum number of Images: %d MediumMedium (1152 x 872)Medium (better quality)Medium 1Medium 2Medium 3Medium Fine JPEGMedium HighMedium LowMedium Normal JPEGMedium highMedium sensitivityMemory Left: %i bytes Memory cardMemory card status (%d): %s Memory in camera: %d Mbit. Menus and PlaybackMetadata only supported for MTP devices.Meter Off TimeMetering ModeMicrophoneMicrophone offMicrosoft Excel Spreadsheet (.xls)Microsoft Powerpoint (.ppt)Microsoft Word DocumentMin. Focal LengthMiniature effectMinimalMinimum Shutter SpeedMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Mirror UpMirror Up SequenceMisc exposure/lens settingsMissing NumberModel IDModel: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Model: %s Capacity: %i Mb Power: %s Auto Off Time: %i min Mode: %s Images: %i/%i Date display: %s Date and Time: %s Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: %x, %x, %x, %xModel: Kodak %s Modeling FlashModerateMonitorMonochromeMonth/Day/YearMove objectMovie CaptureMovie QualityMovie SoundMulti SpotMulti spotMulti-Spot MeteringMulti-spotMultiple Focusing Points (Center)Multiple Focusing Points (Left)Multiple Focusing Points (No Specification), ManualMultiple Focusing Points (Right)Multiple Focusing Points, AutoMultiselectorMup Mirror upMustek MDC-800 gPhoto2 Library Henning Zabel Ported to gphoto2 by Marcus Meissner Supports Serial and USB Protocols.NEF (Raw)NEF+BasicNEF+FineNEF+NormalNIKON Auto Bracketing SetNOT RECOGNIZEDNTSCNULL parameter "%s" in %s line %iName "%s" from camera does not match any known cameraName '%s' (%li characters) too long, maximum 30 characters are allowed.Name PrefixName to set on card when formatting.Near %dNear 1Near 2Near 3Network maskNeutralNextNickel cadmiumNickel hydrideNight LandscapeNight PortraitNight ViewNight VisionNight landscapeNight sceneNight snapshotNikon Capture 1Nikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. Nikon Coolpix 995: Camera configuration (preferences) for this camera are incomplete, contact the gphoto developer mailing list if you would like to contribute to this driver. The download should function correctly. Nikon Flash ModeNikon ViewfinderNikon autofocus drive did not focus.Nikon changeafarea works only in LiveView mode.Nikon manual focus at limit.Nikon manual focus stepping too small.Nikon manual focus works only in LiveView mode.NoNo CF Card ReleaseNo Compact Flash Card detected No Dual IrisNo EXIF data available for %s.No File Deletion, No File Upload No FlashNo Power LightNo Resolution SwitchNo SD Card inserted. No answer from the camera.No audio file could be found for %sNo camera manual available. No cardNo card in camera. No card present.No memory card presentNo reason availableNo response from cameraNo space available to capture new images. You must delete some images.No space left on card.No vendor specific capture NoneNone selectedNormalNormal Normal AF OnNormal-area AFNot FullNot enough free spaceNot enough memory available on the memory cardNot in fill modeNot readyNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOS error in camera communicationOffOfficeOlympus 750 Ultra Zoom: (1) Olympus 750UZ has a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both the 'OK' and 'quickview' buttons until the camera control menu appears. Set it to control mode. (2) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.OnOn + Red Eye SuppressionOn screen tipsOn, red-eye reductionOne ShotOne-push AutomaticOnly root folder is supported - you requested a file listing for folder '%s'.Open Media SessionOpen sessionOperation ModeOperation cancelledOptimal qualityOptimize ImageOrientationOtherOther PTP Device PropertiesOther SettingsOther command executing.Out of FocusOut of memoryOut of memory: %d bytes needed.Out of memory: %ld bytes needed.OutdoorOwner NameOwner name changedPPALPCPLS PlaylistPTP Access DeniedPTP Capture Already TerminatedPTP Device BusyPTP Device Prop Not SupportedPTP General ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Property 0x%04xPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Standard Version: %d.%d PTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP TimeoutPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePTP VersionPacket was rejected by camera. Please contact %s.Pan FocusPanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic DC1580 gPhoto2 library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic introduced image capturing technology called PHOTOSHOT for the first time, in this series of Palmcorders. Images are stored in JPEG format on an internal flashcard and can be transferred to a computer through the built-in serial port. Images are saved in one of two resolutions; NORMAL is 320x240 and FINE is 640x480. The CCD device which captures the images from the lens is only 300K and thus produces only low quality pictures.Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk Parameter 1Parameter 2Parameter 3Parameter SetPartialPartial MeteringParty/IndoorPath not absolutePerceived Device TypePersistent SettingsPet PortraitPhoto EffectPhoto Info. PlaybackPhoto in moviePhotos on camera: %d Picture Frame ConfigurationPicture SettingsPicture StylePicturesPictures in camera: %d PlayPlay modePlayback Container IndexPlayback ObjectPlayback PositionPlayback RatePlaysForSure IDPort speedPortraitPowerPower SavingPower down devicePre-Capture DelayPresetPreset Custom 1Preset Custom 2Preset Custom 3Preset Custom 4Preset Custom 5Preview ThumbnailPreviousProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProcess WFC ObjectProduct ID: %02x%02x Profile nameProhibit Flash QualityQuick ResponseQuick Response RemoteRAWRAW + JPEG BasicRAW + JPEG FineRAW + JPEG NormalRAW + Large Fine JPEGRAW + Large Normal JPEGRAW + Medium Fine JPEGRAW + Medium Normal JPEGRAW + Small Fine JPEGRAW + Small Normal JPEGRAW 2RAW+JPEGRGB GainRTC Status: %d Read Only with Object deletionRead-OnlyRead-WriteRead-only file attributes like width and height can not be changed.ReadyRear Curtain Sync + Slow SyncRear-curtain syncRear-curtain with slow syncReceived unexpected answer (%i). Please contact %s.Received unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRecord modeRecording MediaRedRed Eye SuppressionRed eye flashRed-eye ReductionRed-eye Reduction + Slow SyncRed-eye automaticRed-eye fillRed-eye fill flashRed-eye reductionRed-eye reduction with slow syncRemoteRemote Mirror UpRemote TimeoutRemovable RAM (memory card)Removable ROMRequested information about picture %i (= 0x%x), but got information about picture %i backReset deviceReset focus point to centerResetting protocol...ResolutionResolution SwitchResolution plus SizeReverse Command DialRevocation InfoRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver Ricoh Caplio G3. Marcus Meissner Reverse engineered using USB Snoopy, looking at the firmware update image and wild guessing. RightRotation AngleRotation FlagSD Card ID: %s SD memory: %d MB total, %d MB free. SDRAMSDRAM: Files: %d Images: %4d Movies: %4d Space used: %8d Space free: %8d SDRamST2205 USB picture frame driver Hans de Goede This driver allows you to download, upload and delete pictures from the picture frame.ST2205 based picture frames come with a variety of resolutions. The gphoto driver for these devices allows you to download, upload and delete pictures from the picture frame.STV0674 Vincent Sanders Driver for cameras using the STV0674 processor ASIC. Protocol reverse engineered using SnoopyPro STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.SaturationSceneScene ModeSectionSelective colorSelf TimeSelf TimerSelf Timer (next picture only)Self Timer DelaySelf Timer TimeSelf test deviceSelf-timerSelftimer 10sSelftimer 2sSelftimer DelaySend Partial ObjectSend objectSend object infoSending data...SensitivitySensor ID: %d.%d SepiaSequence 9Serial NumberSerial Number: %s Session-persistent SettingsSet Nikon Autofocus areaSet Property Not SupportedSet clock in cameraSet object protectionSet object referencesSetting 4Setting 5Setting 6Setting 7ShadeShadowShady White Balance BiasShall the camera beep when taking a picture?SharpSharpeningSharperSharpnessShooting ModeShooting SpeedShooting modeShooting mode changedShot SettingsShutdownShutter CounterShutter SpeedShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed 2Shutter Speed microseconds (0 auto)Shutter speed changedSiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.SilhouetteSingleSingle AreaSingle ShotSingle frameSingle silentSingle-Frame ShootingSingle-area AFSipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . Size Quality ModeSize of Input Data to CameraSize of Output Data from CameraSkylightSlide Show IntervalSlowSlow Shutter SettingSlow SyncSlow shutterSlow syncSlow-syncSmal Ultrapocket Lee Benfield Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)SmallSmall Fine JPEGSmall Normal JPEGSnowSoftSofterSoftware Rev.: %s Some notes about Epson cameras: - Some parameters are not controllable remotely: * zoom * focus * custom white balance setup - Configuration has been reverse-engineered with a PhotoPC 3000z, if your camera acts differently please send a mail to %s (in English) Some notes about Olympus cameras (and others?): (1) Camera Configuration: A value of 0 will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch to this mode, turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you cannot use the camera's buttons. If you end up in this state, you should reconnect the camera to the PC and switch LCD to 'Off'.Some notes about Olympus cameras: (1) Camera Configuration: A zero value will take the default one (auto). (2) Olympus C-3040Z (and possibly also the C-2040Z and others) have a USB PC Control mode. To switch into 'USB PC control mode', turn on the camera, open the memory card access door and then press and hold both of the menu and LCD buttons until the camera control menu appears. Set it to ON. (3) If you switch the 'LCD mode' to 'Monitor' or 'Normal', don't forget to switch it back to 'Off' before disconnecting. Otherwise you can't use the camera buttons. If you end up in this state, you should reconnect the camera to the PC, then switch LCD to 'Off'.Sonix camera library Theodore Kilgore Sonix camera. There is %i photo in it. Sonix camera. There are %i photos in it. Sony CaptureSony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners Sorry, the property '%s' / 0x%04x is currently ready-only.Sorry, your Canon camera does not support Canon Capture initiationSorry, your Canon camera does not support Canon EOS CaptureSorry, your Canon camera does not support Canon Viewfinder modeSorry, your Canon camera does not support Canon captureSorry, your Nikon camera does not support LiveView modeSorry, your camera does not support Nikon captureSorry, your camera does not support generic captureSoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSportsSpotSpot MeteringSpot Metering Interlocked with AF FrameSpot Metering ModeSpot meteringSpot metering interlocked with AF frameSpot-AFStandardStandard Development ParametersStart movie recordingStartupStartup and ShutdownStep #2 of initialization failed! (returned %i bytes, expected %i). Camera not operationalStep #2 of initialization failed: ("%s" on read of %i). Camera not operationalStep #3 of initialization failed! (returned %i, expected %i). Camera not operationalStep #3 of initialization failed: "%s" on read of %i. Camera not operationalStep #3 of initialization failed: "%s" on write of %i. Camera not operationalStep #4 failed (returned %i, expected %i). Camera not operationalStep #4 failed: "%s" on read of %i. Camera not operationalStrobe error.Summary for Mustek MDC800: SunsetSuper macroSuperFineSupported MTP Object Properties: Supported Thumb SizeSwitching Camera OffSynchronization PartnerSynchronize camera date and time with PCSynchronize frame data and time with PCSystem error.TFTTFT + PCTIFF (RGB)TVTV Output FormatTerminate open captureTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera could not be contacted. Please make sure it is connected to the computer and turned on.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera has just sent an error that has not yet been discovered. Please report the following to %s with additional information how you got this error: (0x%x,0x%x). Thank you very much!The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support getting storage informationThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The requested port type (%i) is not supported by this driver.There are still files in folder '%s/%s' that you are trying to remove.There are still subfolders in folder '%s/%s' that you are trying to remove.There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.There is space for another %d low compressed %d medium compressed or %d high compressed pictures This camera can not capture previews.This camera can not capture.This camera can not trigger capture.This camera contains a Jeilin JL2005%c chipset. The number of photos in it is %i. This camera contains a Jeilin JL2005A chipset. The number of photos in it is %i. This camera does not provide a manual.This camera does not provide any configuration options.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This driver supports cameras with Jeilin JL2005B or C or D chip These cameras do not support deletion of photos, nor uploading of data. If present on the camera, video clip frames are downloaded as consecutive still photos. For more details please consult libgphoto2/camlibs/README.jl2005c This driver supports cameras with Jeilin jl2005a chip These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README.jl2005a This driver supports cameras with Mars MR97310 chip (and direct equivalents ??Pixart PACx07??). These cameras do not support deletion of photos, nor uploading of data. Decoding of compressed photos may or may not work well and does not work equally well for all supported cameras. Photo data processing for Argus QuickClix is NOT SUPPORTED. If present on the camera, video clip frames are downloaded as consecutive still photos. For further details please consult libgphoto2/camlibs/README. This is the driver for Canon PowerShot, Digital IXUS, IXY Digital, and EOS Digital cameras in their native (sometimes called "normal") mode. It also supports a small number of Canon digital camcorders with still image capability. It includes code for communicating over a serial port or USB connection, but not (yet) over IEEE 1394 (Firewire). It is designed to work with over 70 models as old as the PowerShot A5 and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of 2005. It has not been verified against the EOS 1D or EOS 1Ds. For the A50, using 115200 bps may effectively be slower than using 57600 If you experience a lot of serial transmission errors, try to have your computer as idle as possible (i.e. no disk activity) This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.This preview doesn't exist.ThumbnailThumbnail height: %d Thumbnail size: %d Thumbnail width: %d Time formatTime: %a, %d %b %Y %T TimelapseTimelapse IntervalTimelapse NumberTimeout even after 2 retries. Please contact %s.Tone CompensationToo brightToo darkToo many retries failed.TopToshiba David Hogue Toshiba pdr-m11 driver. Total flashes fired: %d Total pictures captured: %d, Flashes fired: %d Total pictures taken: %d Transmission of packet timed out even after %i retries. Please contact %s.Transmission timed out even after 2 retries. Giving up...Truncate ObjectTrying to contact camera...Tune Colour TemperatureTune Preset 0Tune Preset 1Tune Preset 2Tune Preset 3Tune Preset 4TungstenTungsten White Balance BiasTurbo modeTvType of SlideshowUI LanguageUNIX TimeUSB 1.1USB 2.0USB SpeedUndefinedUndefined AudioUndefined Calendar ItemUndefined CollectionUndefined ContactUndefined DocumentUndefined MessageUndefined PTP PropertyUndefined VideoUndefined Windows ExecutableUnderwaterUnknownUnknown %dUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown flash mode %d, Unknown modelUnknown model "%s"Unknown valueUnknown value %04dUnknown value %04xUnknown value 0x%04xUnknown zoom mode %d Unknown(%04x)Unknown: 0x%04x Unrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. UnusedUpdate device firmwareUpload URLUpload is supported into the '%s' folder onlyUploading file...Uploading image...Uploading image: %s.Uploading...User canceled downloadUser defined 1User defined 2User defined 3Vendor ID: %02x%02x Version: Version: %s Vertical AF OnVideo ModeVideo OUTVideo OutViewfinder GridViewfinder Grid DisplayVividVolatile SettingsVolume LevelWB bracketingWEP 128-bitWEP 64-bitWIFI ESSIDWIFI channelWIFI profilesWPL PlaylistWaiting for completion...Waiting...Warning DisplayWarning Level 0Warning Level 1Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error status 0x%08x from cameraWe expected 0x%x but received 0x%x. Please contact %s.WeakWhite BalanceWhite Balance Bias Preset 0White Balance Bias Preset 1White Balance Bias Preset 2White Balance Bias Preset 3White Balance Bias Preset 4White Balance Bias Preset NrWhite Balance Colour TemperatureWhite Balance Preset Name 0White Balance Preset Name 1White Balance Preset Name 2White Balance Preset Name 3White Balance Preset Name 4White Balance Preset NumberWhite Balance Preset Value 0White Balance Preset Value 1White Balance Preset Value 2White Balance Preset Value 3White Balance Preset Value 4White BoardWhite balanceWhite boardWhite levelWhiteBalanceWhiteBalance Adjust AWhiteBalance Adjust BWhiteBalance X AWhiteBalance X BWhitebalance Reset ErrorWideWide-area AFWriteWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.XMLDocumentYYYY/MM/DDYear/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.You have to set the port prior to initialization of the camera.You must be in record mode to capture images.Your Logitech Clicksmart 310 has %i picture in it. Your Logitech Clicksmart 310 has %i pictures in it. Your USB camera has a S&Q chipset. The total number of pictures taken is %i Some of these could be clips containing several frames Your USB camera has an Aox chipset. Number of lo-res PICs = %i Number of hi-res PICs = %i Number of PICs = %i Your USB camera is a Kodak EZ200. Number of PICs = %i Your USB camera is an iClick 5X. The total number of pictures taken is %i Your USB camera seems to be a LG GSM. Firmware: %s Firmware Version: %s Your USB picture frame has a AX203 chipset Your USB picture frame has a ST2205 chipset Your camera only supports deleting the last file on the camera. In this case, this is file '%s'.Zone Focus (Close)Zone Focus (Close-up)Zone Focus (Far)Zone Focus (Medium)Zone Focus (Reserved 1)Zone Focus (Reserved 2)Zone Focus (Reserved 3)Zone Focus (Reserved 4)Zone Focus (Very Close)ZoomZoom (in millimeters)Zoom level changedZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro a/c adaptoragfa_cl20 The Agfa CL20 Linux Driver People! Email us at cl20@poeml.de Visit us at http://cl20.poeml.de autoauto + red eye suppressionbatteryblack & whitecamera inactive for > 9 seconds, re-initing. cannot be queried. canon_int_capture_image: final canon_usb_list_all_dirs() failed with status %icanon_int_capture_image: initial canon_usb_list_all_dirs() failed with status %licanon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)canon_int_list_directory: Reached end of packet while examining the first direntcanon_int_list_directory: truncated directory entry encounteredcanon_serial_get_dirents: Could not allocate %i bytes of memorycanon_serial_get_dirents: Could not resize dirent buffer to %i bytescanon_serial_get_dirents: Failed to read another directory entrycanon_serial_get_dirents: Initial dirent packet too short (only %i bytes)canon_serial_get_dirents: Too many dirents, we must be looping.canon_serial_get_dirents: Truncated directory entry receivedcanon_serial_get_dirents: canon_serial_dialogue failed to fetch directory entriescanon_usb_get_body_id: Unexpected data length returned (%i bytes, expected %i)canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_list_all_dirs: Couldn't fit payload into buffer, '%.96s' (truncated) too long.canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, returned %icanon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)canon_usb_lock_keys: Unexpected length returned from "lock keys" function (%i bytes, expected %i)canon_usb_set_file_attributes: canon_usb_dialogue failedcanon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)colorcoolshot library vcould not change owner namecould not set timeeconomyexternallyfill infinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port gsmart300 library Till Adam Jerome Lodewyck Support for Mustek gSmart 300 digital cameras based on several other gphoto2 camlib modules and the specifications kindly provided by Mustek. high (640x480)high compression, hp215 Marcus Meissner Driver to access the HP Photosmart 215 camera. Merged from the standalone hp215 program. This driver allows download of images and previews, and deletion of images. iClick 5X driver Theodore Kilgore in fill modeinfiniteinternallyjamcam library vjl2005a camera library Theodore Kilgore jl2005bcd camera library Theodore Kilgore lock keys failed.losslesslow (320x240)low compression, mRAWmRAW + Large Fine JPEGmRAW + Large Normal JPEGmRAW + Medium Fine JPEGmRAW + Medium Normal JPEGmRAW + Small Fine JPEGmRAW + Small Normal JPEGmedium compression, menuno status reported.nonenormalnot available: %soffonon + red eye suppressionon batterypccam600 init: Unexpected error: gp_port_read returned %d instead of %dpccam600_close: return value was %d instead of %dpccam600_get_file:got index %d but expected index > %dpccam600_init: Expected %d blocks got %dpccam600_init: Expected > %d blocks got %dplaypower OKpower badread onlyreadwritereadyrecordrecursive calls are not supported by the sierra driver! Please contact %s.red eye flash off. red eye flash on. red eye suppressionsRAWsRAW + Large Fine JPEGsRAW + Large Normal JPEGsRAW + Medium Fine JPEGsRAW + Medium Normal JPEGsRAW + Small Fine JPEGsRAW + Small Normal JPEGsRGBsRGB (nature)sRGB (portrait)sierra SPARClite library Scott Fritzinger Support for sierra-based digital cameras including Olympus, Nikon, Epson, and Pentax. Thanks to Data Engines (www.dataengines.com) for the use of their Olympus C-3030Z for USB support implementation.spca50x library vsq905 generic driver Theodore Kilgore sq905C generic driver Theodore Kilgore standardsuperfinesx330z is USB onlytime setunable to guess initial CRC value undefinedunexpected datatype %iunknown (0x%02x)unknown compression %d, unknown resolution %d) vCalendar1vCalendar2vCard2vCard3warning: CRC not checked (add len %d, value 0x%04x) ######################### Project-Id-Version: libgphoto2-2.5.4 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-04-09 11:10+0200 Last-Translator: Benno Schulenberg Language-Team: Dutch Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 1.0 Plural-Forms: nplurals=2; plural=(n != 1); Toegangsrechten: %s Canon Wifi-ondersteuning bestand downloaden, Bestandssysteemsoort: %s Vrije ruimte (bytes): %llu (%lu MB) Vrije ruimte (beelden): %d Maximum capaciteit: %llu (%lu MB) Nikon Wifi-ondersteuning Opslagtype: %s Opslagomschrijving: %s Volumenlabel: %s Camera-identificatie: Model: %s Eigenaar: %s Status van voeding: %s Informatie over Flash-kaart: %s Tijd: %s Opname-indelingen: Toestelmogelijkheden: Samenvatting van apparaateigenschappen: Samenvatting van opslagapparaten: Schijf %s %11s bytes totaal %11s bytes beschikbaar Serienummer: %s Versie: %s (accu is voor %d%% geladen) PTP-fout %04x na vraag Totaal geheugen is %8d bytes. Vrij geheugen is %8d bytes. Aantal bestanden: %d fout %x na vraag. niet uitgelezen. %.0f mm%.1f-stapjes%d %d/%d%d mm%d/%d%f%i (onbekend)%i bytes ontvangen van een onbekend beeldformaat. Schrijf naar %s en vraag om assistentie.%i afbeeldingen konden niet worden verwijderd omdat ze beveiligd zijn%lld (onbekend)%s (computertijd %s%i seconden)%sNikon-opname 2%sNikon-opname 3 Bibliotheek voor (Traveler) SX330z (en andere Aldi-camera's). Ook voor andere merken, zoals Jenoptik, Skanhex en Maginon. Foutrapportages en commentaren zijn welkom. Dominik Kuhlen * Beeldstoringen of problemen met de communicatie zijn veelal te wijten aan een bijna lege accu. * Beelden die met afstandsbediening worden opgenomen, worden tijdelijk in RAM opgeslagen en niet op de Flash-geheugenkaart. * De belichting bij het opnemen van beelden kan handmatig ingesteld worden, of op automatisch gezet worden. * De beeldkwaliteit is momenteel lager dan ze zou kunnen zijn. *ONBEKEND*+NEF (RAW)-0.5-1.0-1.5-2.00.00,1 m0.50,5 m11 (kort)1 fps1 min1 minuut1.01,3s1.51,6s1,6x1/1,3s1/1,6s1/1000s1/100s1/10s1/1250s1/125s1/13s1/151/15s1/1600s1/160s1/21/2,5s1/2000s1/200s1/20s1/2500s1/250s1/25s1/2s1/301/30s1/3200s1/320s1/3s1/41/4000s1/400s1/40s1/4s1/5000s1/500s1/50s1/5s1/601/60s1/6400s1/640s1/6s1/81/8000s1/800s1/80s1/8s10 fps10 min10 minuten10 mm10 seconden100%10s11 fps1152 x 86412 mm1280 x 96013s1515 min15 minuten15s16 seconden16:91s1x22 fps2 seconden2.02,0 m2,5s2,5x20 seconden20s21-punts25%25s29 mm2s2x3 (normaal)3 fps3030 minuten30 seconden30s34 mm3:23s3x44 fps4 seconden41 mm4s4x5 (lang)5 fps5 min5 minuten5 seconden50 Hz50%51 mm51-punts51-punts (3D)58 mm5s5x6 fps6 mm6 seconden60 Hz640 x 4806s6x7 fps75%7x88 fps8 mm8 seconden8s8x9 fps9-punts9xACNetvoedingnetadapterNetadapter is aangesloten. Netadapter is niet aangesloten. alleen autobelichtingsvergrendelingBelichtingsvergrendeling (vast)Belichtingsvergrendeling (reset bij loslaten)alleen belichtingsvergrendelingBelichtings-/focusvergrendelingAE-vergrendelingBelichtings-/focusvergrendelingBelichtings-/focusvergrendelingAEB-belichtingscompensatieAF-activeringAF-zoneverlichtingAF-zonepuntAutofocushulplichtAF-piepmodusAutofocusafstandAF LCD Top modus 2Autofocusvergrendeling vastAF-vergrendeling aanalleen autofocusvergrendelingalleen AF-vergrendelingAutofocus vergrendeldAutofocusmodusAutofocus aanAF op knopalleen autofocusvergrendelingASIC-revisie: %d.%d ASX-afspeellijstAUTOAVAX203-stuurprogramma voor USB-fotoframes Hans de Goede Dit stuurprogramma kan foto's van het fotoframe downloaden, ernaar uploaden, en ervan verwijderen.Fotoframes met een AX203-chip kunnen allerlei resoluties hebben. Het gphoto-stuurprogramma voor deze apparaten kan foto's van het fotoframe downloaden, ernaar uploaden, en ervan verwijderen.Opmerkingen bij de Konica Q-M150: Deze camera ondersteunt geen wijzigingen van buiten. In de configuratie kan dus enkel bekeken worden wat er op de camera ingesteld is, maar u kunt niets wijzigen. Indien u problemen ondervindt met dit stuurprogramma, stuur dan een e-mail naar de ontwikkelaars ervan. Abstract kalenderitemAbstract contactAbstract documentAbstract berichtToegangsmodusActieActieve AF-sensorad hocAdc65-stuurprogramma Benjamin Moos AdobeRGBAlbumnaamAlkalineEr is een fout opgetreden in de invoer-/uitvoerbibliotheek ('%s'): %sEr is een onbekende fout opgetreden. Neem contact op met %s.AntirodeogenflitsAntirodeogen-invulflitsOveralGenerisch Aox-stuurprogramma Theodore Kilgore DiafragmaDiafragma-instellingDiafragma-instellingenDiafragma is gewijzigdToepassingsmodusToepassingsmodus 0Toepassingsmodus 1ArtiestAuteursnaamFunctieknop toewijzenFunctieknop toewijzenHulplichtAutoAuto + rodeogenreductieAutomatisch diafragmaAutomatische opnamereeksselectieAutofocuszoneAutofocusmodus 2Auto-ISOAuto ISO P/A/DVP-instellingTijd automatische uitschakelingAuto-uit (los) (in seconden)Auto-uit (verbonden) (in seconden)Tijd tot automatische uitschakelingAuto-uitschakeling (in minuten)Automatische Slow-syncWitbalans: automatischAuto-belichtingsvergrendelingAutofocus: AI-focusAutofocus: AI-servoAutofocus: één opnameAutomatische gevoeligheidAuto, rodeogenreductieAutofocusmodusFout bij autofocus.AutomatischAutomatisch Automatisch (geen flits)Automatische flitsAutomatische macroAutomatische macro (close-up)Automatische rodeogenreductieAutomatische belichtingscorrectie bij de voorbeeldweergaveAutomatische flitsAutomatische flits bij opnameHerfstkleurenAvNog beschikbare opnamesBeschikbaar geheugen: GemiddeldGemiddelde bestandsgroottesGemiddelde metingZwart-witZ-WZW-contrastZW-vuleffectZW-instellingstypeZW-scherpteOnjuiste EOTOnjuiste tekens (0x%x, 0x%x). Neem contact op met %s.Onjuiste controlesom -- 0x%02x ontvangen, 0x%02x werd verwacht.Onjuiste data -- 0x%02x ontvangen, 0x%02x of 0x%02x werd verwacht.Onjuiste data -- 0x%02x ontvangen, 0x%02x werd verwacht.Slechte belichting (waarschijnlijk niet genoeg licht)Onjuiste waarde voor kaartstatus %dOnjuiste waarde voor lensstatus %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Omgekeerde ontwikkeling van afbeeldingsdata door: Jeff Laing Geïmplementeerd met gebruik van documenten gevonden op het internet. Met permissie van Vision.Batterijen zijn bijna leeg.Batterijen zijn OK.AccuSoort accucellenAccuniveauAccustatus: %s Aantal beelden: %d Minimum restcapaciteit: %d Bezig: %s Laden van flits: %s Lensstatus: Accuniveau: %i AccumodusAccutypeAccu is leeg, camera uit.Accustatus: %.1f Volt. Revisie: %08x.Accustatus: %s, netadapter: %s StrandStrand/SneeuwPiepPiepmodusPiepmodus is gewijzigdPiep uitPiep aanBegin van bewerkingsobjectBestTransmissiesnelheid %ld wordt niet ondersteund.Zwart-witZwart-witZwarte achtergrondZwart-witZwarte achtergrondZwart-witKnipperenBloesemBlauwBenedenReeksvolgordeOpnamereeksHelderheid+Helderheid-HelderheidHelderheid+Helderheid-Helderheid/contrastingebouwde RAMingebouwde ROMBulbBulb-belichtingstijdBurstBurst-intervalBurst-nummerBezigKnoppen en kiezersCCD-nummerCCD-serienummerCSM-menuCameraCamera-actiesCamera body-IDCameraconfiguratieCameradatum en -tijdCamera-ID:%s Camera-bibliotheek voor de Kodak DC215 Zoom camera. Michael Koltan CamerafabrikantCameramodusCameramodelCameramodel: %s Camera is OK.Camera-oriënteringCamera-uitvoerCamera-eigenaarCamera-instellingenCameratoestandsinformatieConfiguratie van camera en stuurprogrammaDe camera lijkt geen CompactFlash-kaart te gebruiken. Helaas worden andere typen opslag nog niet ondersteund. :-( Camera is bezig. Indien het probleem blijft, neem dan contact op met %s.Camera kon de actie niet voltooienDe camera weigert de parameters. Neem contact op met %s.In stuurprogramma '%s' ontbreekt de 'camera_init'-funtie.Camera heeft geheugen. De camera heeft %d opnames gemaakt, en gebruikt een CompactFlash-kaart. De camera is ingesteld voor lampen die flikkeren met %d Hz. Camera in verkeerde modus. Neem contact op met %s.Camera is niet gereed; get_battery() is mislukt: %sCamera is niet gereed; meerdere camera-identificatie-aanvragen zijn mislukt: %sCamera-afbeeldingen zijn monochroom. Camera-stroomspaarmodus (seconden)De camera weigerde drie maal om een verbinding open te houden.De camera heeft het commando geweigerd.De camera heeft zichzelf gereset.De camera verzond onverwachte byte 0x%02x.Camera ondersteunt miniatuurvoorbeelden. Camera ondersteunt video. Camera ondersteunt videoformaten: Cameratijd: %s %s Camera is onbeschikbaarCamera is onbeschikbaar: %sCamera was al actiefCamera werd gewektKan geen nieuwe beelden opnemen. Onbekende foutKan niet alle beelden verwijderen.Kan beeld %s niet verwijderen.Kan dit beeld niet uploaden naar de camera. Er is een fout opgetreden.KaarslichtKan de hoeveelheid resterend geheugen niet bepalenKan de accucapaciteit niet bepalenKan de naam van de map met afbeeldingen niet bepalenCanon-opnameCanon EOS-opnameCanon EOS-opname is mislukt: %xCanon EOS beeldzoekerCanon EOS-zoomCanon EOS-zoompositieCanon PowerShot-stuurprogramma door: Wolfgang G. Reissnegger, Werner Almesberger, Edouard Lafargue, Philippe Marzouk, A5-toevoegingen door: Ole W. Saastad Verdere verbeteringen door: Holger Klemm Stephen H. WestinCanon-opnamemodusOpnameOpnamevertragingOpname-instellingenAfmetingsklasse van opnameOpnamedoelOpnameoverdrachtmodusAfmetingsklasse van opname is gewijzigdOpnametype wordt niet ondersteundkaartKaartstatus: Kaart kan niet beschreven worden.Kaart is niet geformatteerdKaart is niet geopendKaart is geopendKaart is tegen schrijven beveiligd.Kaartnaam: %s Vrije ruimte op de kaart: %d kB Kaart wordt niet ondersteund.Kaart werd verwijderd tijdens de toegang.Centrale knop weergavemodusCentrale knop opnamemodusCentrale knop zoomfactorMiddelpuntCentrumzoneCentrumgerichtCentrumgericht gemiddeldeCentrumgerichtMiddelpuntCentrum-gewogenCentrumgerichte gemiddelde metingCentrumgerichte metingCentrumgericht gemiddeldeCentrumgerichte metingCentrumCentrumzoneMiddelpuntsVerandering van cameramodus is misluktWijzigen van snelheid... even geduld...TekenTeken & geluidBezig met ladenFout in controlesomKinderenKies kleurtemperatuurBeeldsensor schoonmakenSensor schoonmakenMediasessie sluitenSessie sluitenDichtstbijzijnd onderwerpClose-upBewolktWitbalans: bewolktKleurKleurversterkingKleurmodusKleurmodelKleurinstellingenKleurruimteKleurtemperatuurKleur- of functiemodusKleurenschetsHet commando kan niet afgebroken worden.Fout in commandovolgorde.Communicatiefout 1Communicatiefout 2Communicatiefout 3Zelfs na drie pogingen een communicatiefout. Neem contact op met %s.CompactFlash-kaart is gedetecteerd CompactFlash-kaartCompatibiliteitsmodusComprimeringCompressie-instellingConfiguratieConfiguratie voor uw FUJI-cameraVerbonden met de cameraContinuContinu, lage snelheidContinue opnamemodusContinue opnamemodus, hoge snelheidContinue opnamemodus, lage snelheidContinu, hoge snelheidContinu, hoge snelheidContinu, lage snelheidContinu, stilContrastContrast+Contrast-Object kopiërenCopyrightCopyright (max 20 tekens)CopyrightinfoCopyright-informatieBeschadigde gegevensKan geen %i bytes reserveren voor het downloaden van de afbeelding.Kan geen %i bytes reserveren voor het downloaden van de miniatuur.Kan de USB-instellingen niet doorvoerenKan de ISO-snelheid niet wijzigenKan het diafragma niet wijzigenKan de piepmodus niet wijzigenKan de belichtingscompensatie niet wijzigenKan de flitsmodus niet wijzigenKan de focusmodus niet wijzigenKan de beeldindeling niet wijzigenKan de opnamemodus niet wijzigenKan de sluitertijd niet wijzigenKan de tijd van het bestand '%s' in '%s' niet wijzigen (%s).Kan het zoomniveau niet wijzigenKan geen contact maken met de camera.Kan de \DCIM-map niet aanmaken.Kan geen bestemmingsmap aanmaken.Kan map %s niet aanmaken.Kan de map niet aanmaken.Kan bestand '%s' in map '%s' niet verwijderen (foutcode %i: %s).Kan het bestand niet verwijderen.Kan geen camera detecterenKan geen camera detecteren op poort %sKan geen eerste contact met camera makenKan het JPEG-miniatuurvoorbeeld niet uit de data extraheren: data is geen JFIFKan het JPEG-miniatuurvoorbeeld niet uit de data extraheren: geen begin/eindeKan het bestand '%s' niet vinden.Kan de lokalisatiegegevens niet vinden in '%s'Kan de schijfinformatie niet vinden: %sKan de schijfnaam niet vinden: %sKan de flash-schijfletter niet vindenKan geen informatie over '%s' krijgen (%s).Kan geen informatie over '%s' in '%s' krijgen (%s).Kan register %i niet ophalen. Neem contact op met %s.Kan stringregister %i niet ophalen. Neem contact op met %s.Kan de upload niet starten (de camera antwoordde met 0x%02x).Kan het vereiste stuurprogramma '%s' (%s) niet laden.Kan '%s' niet openen.Kan map %s niet verwijderen.Kan de map niet verwijderen.Kan de camera niet resetten. Kan de snelheid niet op %i zetten (de camera antwoordde met %i).Kan het pakket niet overbrengen (foutcode %i). Neem contact op met %s.Kan het pakket, zelfs na meerdere pogingen, niet overbrengen.Kan niet uploaden, geen vrije mapnaam beschikbaar! Mapnaam 999CANON bestaat al en bevat een afbeelding AUT_9999.JPG.Kan niet uit bestand "%s" lezenWifi-profiel aanmakenAanmaakdatum: %s, laatst gebruikt: %sCreatiefCreative PC-CAM 300 Auteurs: Till Adam en Miah Gregory Creative PC-CAM600-stuurprogramma Auteur: Peter Kajberg Huidige modus: Cameramodus Huidige modus: Weergavemodus Huidige cameratijd: %04d-%02d-%02d %02d:%02d Vrij geheugen op de kaart: %d Afbeeldingen op de kaart: %d Nog ruimte voor %d afbeeldingen Accuniveau: %d%%.Momenteel is PTP alleen voor USB- en PTP/IP-camera's geïmplementeerd, met poorttype %xAangepastAangepaste witbalans PC-1Aangepaste witbalans PC-2Aangepaste witbalans PC-3Commandokiezer aanpassenDD-MM-JJJJDPOF-versieDonker op lichtGegevens zijn beschadigd.Datum en tijdDatumopmaakOpmaak van datum-/tijdweergaveDatum en tijdDatum en tijd (GMT)DatumweergaveDatum: %i/%02i/%02i %02i:%02i:%02i Aantal genomen afbeeldingen: %i Aantal resterende afbeeldingen: %i Softwareversie: %s Transmissiesneleid: %s Geheugen: %i megabytes Cameramodus: %s Beeldkwaliteit: %s Flitsinstelling: %s Informatie: %s Timer: %s LCD: %s Auto-uitschakeling: %i minuten Voedingsbron: %sDatum: %sdag/maand/jaarDaglichtWitbalans: daglichtDebugDiepteStandaard gatewayStandaard sierra-stuurprogramma: Dit stuurprogramma zou in staat moeten zijn om afbeeldingen op camera te bekijken en te downloaden. De camerainstellingen of -voorkeuren zijn gebaseerd op de Olympus 3040, en zijn waarschijnlijk onvolledig. Als u merkt dat instellingen voor uw camera volledig zijn, of code kunt leveren voor de ondersteuning van een volledige configuratie, neem dan contact op met de mailinglijst voor ontwikkelaars. Vertraagd, op afstandVerwijderenObject verwijderenVerwijderen van beeld %s.Een "%s" is gedetecteerd, ook bekend als "%s"Een '%s' is gedetecteerd.Ontwikkelingsparameters 1Ontwikkelingsparameters 2Ontwikkelingsparameters 3ToestelcertificaatToestelpictogramToestelversieDigita Johannes Erdfelt layout van digitale camera (DCIM)Digitale zoomDigitale zoomvergrotingDigitale macroDigitale zoomDimera 3500 versie %s %d/%d %d:%d %d afbeeldingen gebruikt van ongeveer %d (hoge res.) of %d (lage res.) Camerafuncties: %s, %s, %s, %s. Flits is %s, is %s en is %s. Resolutie is gezet op %s. Camera is %s-gevoed %s. Direct printenMaplijstmodus -- geschreven door Scott Fritzinger .Map bestaat alMap niet gevondenVerbreken van verbinding met camera.WeergaveWeergave-indelingen: VerafGeen TV-menu tonenKan het poorttype %i (alias 0x%x) in %s regel %i niet behandelen.Downloadprogramma voor de Digital Dream Enigma 1.3. Geschreven door , aangepast vanaf het spca50x-stuurprogramma. Bedankt, spca50x-team, het was eenvoudig om jullie stuurprogramma naar deze camera over te zetten. Downloadprogramma voor op GrandTek 98x gebaseerde camera's. Oorspronkelijk geschreven door Chris Byrne , en aangepast voor gphoto2 door Lutz Mueller . Verbetering van protocol en nabewerking voor de Jenoptik JD350e door Michael Trawny . Correcties door Marcus Meissner .Downloadprogramma voor Polaroid DC700-camera. Oorspronkelijk geschreven door Ryan Lantzer voor gphoto-4.x. Aangepast voor gphoto2 door Lutz Mueller .Downloadprogramma voor verscheidene Polaroidcamera's. Oorspronkelijk geschreven door Peter Desnoyers , aangepast voor gphoto2 door Nathan Stenzel en Lutz Mueller . Polaroid 640SE-tests werden uitgevoerd door Michael Golden .Downloaden van %s.Downloaden van %s...Downloaden van %s...Downloaden van EXIF-gegevens...Downloaden van geluid...Downloaden van data...Downloaden van bestand...Downloaden van beeld %s.Downloaden van beeld...Downloaden van film...Downloaden van miniatuurvoorbeeld...Bezig met downloaden...DrivemodusStuurprogrammaStuurprogramma-instellingenDual-irisSchemeringSchemeringDynamische AF-zoneDynamische-zone AFDynamische-zone AF met prioriteit voor dichtstbijzijnd onderwerpEEPROM-controlesomfout.FOUT: %d is te grootFOUT: een fatale fouttoestand werd gevonden, kan niet verdergaan FOUT: onjuiste berichtopmaak.FOUT: berichtoverloopFOUT: niet op volgorde.FOUT: onverwacht berichtFOUT: onverwacht bericht (2).FOUT: onverwacht pakkettype.ESPESSIDEconomischEffectmodusEffectenDringendLeegCopyright inschakelenBeeldcommentaar inschakelenEncryptieEncryptiesleutel (hex)Einde van bewerkingsobjectEngelsVerhoogdFoutFout bij de beeldopnameFout bij wijzigen van snelheidFout bij wijzigen van snelheid.Fout bij verwijderen van bijbehorende miniatuurvoorbeeldbestandFout bij verwijderen van bestandFout bij wachten op ACK tijdens initialisatieFout bij wachten op ACK tijdens initialisatie -- nieuwe pogingEvaluatiefEvaluerende metingOveralVoer een vooraf bepaald commando uit met parameterwaarden.Verwachtte %i bytes, ontving %i. Rapporteer deze fout aan %s.Verwachtte %i, ontving %i. Rapporteer deze fout aan %s.Verwachtte 32 bytes, ontving %i. Neem contact op met %s.BelichtingDiafragma belichtingsvergrendelingBelichtingscompensatieBelichtingscompensatieBelichtingscompensatie (EV)BelichtingsuitstellingsmodusISO-belichtingsstapBelichtingsindex (volgens ISO)BelichtingsvergrendelingBelichtingsmeterBelichtingsmetingMeetmethode belichtingBelichtingsprogrammaBelichtingsprogrammamodusBelichtingsstapBelichtingstijdBelichtingscompensatieBelichtingscompensatie is gewijzigdBelichtingscompensatie: %d Belichtingscompensatie: %s BelichtingsuitstellingsmodusBelichtingsniveau bij de voorbeeldweergaveExterne flitsExterne flits aangeslotenExterne flitscompensatieExterne flitsmodusExterne flitssoortExterne flitsstatusExterne syncExtra hoogF-nummerF2F2.3F2.8F4F5.6F8FATALE FOUT: initiële CRC-waarde voor lengte %d is onbekend FLASH: Bestanden: %d FabrieksinstellingenGetrouwVeraf %dVeraf 1Veraf 2Veraf 3Grote afstandSnel bestandssysteemKorte sluitertijdBestandBestand '%s' kan niet worden gevonden in map '%s'.Bestand '%s/%s' bestaat niet.bestandsverwijdering, Opeenvolging bestandsnummersbestand uploaden BestandscompressieBestand bestaat alBestand niet gevondenBestand is beveiligd.BestandsresolutieBestandsgrootte is %ld bytes. De maximale bestandsgrootte die geüpload kan worden is %i bytes.BestandstypeUploaden van bestand is mislukt.Het bestand was te groot. Het kan nodig zijn om uw camera uit en weer aan te zetten alvorens meer bestanden te uploaden.Bestandstype: FlashPix (Bestandstype: JPEG (InvulflitsFijnVuurwerkFirmwareFirmware-revisie: %8sFirmware-revisie: %8s Afbeeldingen: %i Totaal geheugen: %i kB Vrij geheugen: %i kB Firmware-revisie: %d.%d Firmware-versieFirmware versie: %d.%02d Firmware: %d.%d VisoogVast ingesteldFlitsFlits opgeladenFlitscompensatieFlitsbelichtingscompensatieFlitsniveauvergrendelingFlitsvergrendelingFlitsmodusFlits uitFlits openFlitsinstellingFlitsinstellingenFlitssluitertijdFlitssignaalFlitssynchronisatiesnelheidWitbalans: flitsFlits autoFlitsmodus is gewijzigdFlitsmodus: auto, Flitsmodus: altijd, Flitsmodus: uit Flits uitFlits aanAlleen flitsFlits/diafragmaFlits/snelheidFlits/snelheid/diafragmaFlits: AutoFlits: Auto (rodeogenreductie)Flits: UitFlits: AanFlits: Aan (rodeogenreductie)Flits: ongedefinieerdFlashPixFlexibel programmaFlikkerreductieSoort TL-lichtTL-licht-1-huis-6700KTL-licht-2-bureau-5000KTL-licht-3-kantoor-4200KTL-lampTL-licht HTL-lamp 1TL-lamp 2TL-lamp 3TL-lamp 4TL-lamp 5Witbalans: TL-lichtTL-licht-1-huis-6700KTL-licht-2-bureau-5000KTL-licht-3-kantoor-4200KTL-lamp: koudwitTL-lamp: dagwitTL-lamp: daglichtTL-lamp: warmwitFocuslengteMaximale focuslengteMinimale focuslengteFocuslengte teleFocuslengte breedFocusFocuszoneoverloopFocuszonesFocusafstandFocusvergrendelingFocusmetingmodusFocusmodusFocusmodus 2Focusmodus is gewijzigdFocuspositieFocuspuntFocuspunt alleen in midden, automatischFocuspunt alleen in midden, handmatigFout tijdens het focussen.Map '%s' bevat slechts %i bestanden, maar u vroeg om een bestand met nummer %i.GebladerteEtenVoor camera's met een chip van S&Q Technologies. Zou moeten werken met gtkam. Foto's worden opgeslagen als PPM. Alle bekende S&Q-camera's hebben twee resolutie-instellingen. Welke deze zijn hangt af van uw specifieke camera. Enkele van deze camera's staan het verwijderen van alle foto's toe. De meeste doen dit niet. Uploaden van data naar de camera wordt niet ondersteund. De fotocomprimeringsmodus, aanwezig op vele S&Q- camera's, wordt in enige mate ondersteund. Indien op de camera aanwezig, worden videoclips als submappen gezien. Gtkam zal deze apart downloaden. Als er clips op de camera aanwezig zijn, staat er een driehoekje voor de cameranaam. Als er geen mappen getoond worden, klik dan op het driehoekje om ze te laten verschijnen. Klik op een map om de frames erin te bekijken of deze te downloaden. De frames zullen als aparte foto's gedownload worden, met speciale namen die aangeven van welke clip ze kwamen. U kunt dus vrij kiezen om de frames al dan niet in afzonderlijke mappen op te slaan. AltijdAltijd flitsen Formatteer kaart en zet albumnaam.Formatteer compactflash-kaartOpslag formatterenResterende frames: %i Opgenomen beelden : %4d Opgenomen frames: %i FransGewone toestelnaamVoorgronddoeksyncVolVolledig beeldVolledig handmatigFunctieknop 2Functionele modusFunctionele modus: 0x%04x Algemeengewoon vlakgewoon hiërarchishDuitsVolgende gegevensblok ophalenGedeeltelijk object ophalen (64-bits offset)Aantal objecten ophalenObject ophalenObjecthandvatten ophalenObjectinfo ophalenObjectreferenties ophalenGedeeltelijk object ophalenOpslag-ID's ophalenOpslaginfo ophalenMiniatuur ophalenOphalen van instellingen...Ophalen van data...Ophalen van bestandenlijst...Ophalen van bestand...Ophalen van informatie over %i bestanden...Ophalen van miniatuur...Kreeg onverwacht resultaat 0x%x. Neem contact op met %s.GrijswaardenGrijswaardenGroenGroepsdynamischHDR-modusHardwarefoutHoog 1Hoog 2HoogHoog (1152 x 872)Hoog (goede kwaliteit)Hoog 2Hoge ISO-ruisonderdrukkingHoge ISO-ruisonderdrukkingHoog contrastHoge gevoeligheidKorte sluitertijdActieve focuspunt aangevenHost-modus: %s Belichtingscorrectie: %s Belichtingsdata: %d Datum geldig: %s Datum: %d/%02d/%02d %02d:%02d:%02d Zelfontspanner gezet: %s Kwaliteitsinstelling: %s Weergave/Opname Modus: %s Kaart-ID geldig: %s Kaart-ID: %d Flitsmodus: PC-stroomspaarmodus (seconden)Hoe lang het duurt voor de camera zichzelf uitschakelt als deze met de computer verbonden is.Hoe lang het duurt voor de camera zichzelf uitschakelt als deze niet met de computer verbonden is.Na hoeveel tijd moet de camera zichzelf uitschakelen?TintaanpassingCamera is bezigIDIP-adres (leeg bij DHCP)ISO-snelheidISO-snelheid is gewijzigdPictogrammenNiet bezigOngeldige parameter.BeeldBeeld %s is tegen verwijderen beschermd.Beeld & geluidBeeldaanpassingBeeldcommentaarBeeldcommentaar-inschakelingBeeldcommentaartekstBeeldindelingBeeldindeling CFBeeldindeling SDBeeldmodusBeeldkwaliteitBeeldoverzichtBeeldrotatieBeeldrotatievlagBeeldinstellingenBeeldgrootteBeeldstabilisatieBeeldindeling is gewijzigdBeeldhoogte: %d Nummer van beeld is niet geldig.Beeld is beveiligd.Beeldgrootte: %d Beeldtype %d wordt door deze camera niet ondersteund!Beeldtype %d wordt niet ondersteundBeeldtype wordt niet ondersteundBeeldbreedte: %d DirectIn gebruikGloeilampBinnenshuisOneindigOneindig/visoogInformatieInformatie over op STV0680-gebaseerde camera: Informatie over camera's met ID 0x2770:0x9153. Het wordt afgeraden een GUI-programma te gebruiken voor toegang tot deze camera, tenzij u voor de lol bezig bent of de camera wilt opblazen. Gebruik 'gphoto2 -P' vanaf de opdrachtregel om uw foto's te downloaden. Opmerking: het is niet mogelijk om videoclips te downloaden. Eerste antwoord van camera '%c' is onbegrijpelijkInitialisatie van cameraOpname startenOpen opname startenInterne RAM**Interne fout** #1 in get_file_func() (%s line %i)**Interne fout** (1).**Interne fout** (2).**Interne fout** bij zoeken naar 'camlibs' -- padnamen te lang?Intern geheugen: %d MB totaal, %d MB vrij. OngeldigOngeldige ISO-snelheidOngeldige toestandOngeldige waarde ( %d ) Ongeldige diafragma-instellingOngeldige piepmodusOngeldige afmetingsklasse van opnameOngeldige belichtingscompensatieOngeldige flitsmodusOngeldige focusmodusOngeldige beeldindelingOngeldige opnamemodusOngeldige sluitertijdIrisfout.ItaliaansJD11 Marcus Meissner Stuurprogramma voor de Jenoptik JD11-camera. Het protocol werd ontrafeld met behulp van WINE and IDA.JD11-configuratieJPEGJPEG-basisJPEG-compressiebeleidfijne JPEGJPEG Normaalnormale JPEGJapansBestandsnaam bij het uploaden behoudenKinderen en dierenBekende problemen: 1. Als de Kodak DC3200 niet mintens om de 10 seconden een commando ontvangt, moet deze opnieuw geïnitialiseerd worden. Als de camera niet reageert, selecteer deze dan opnieuw. Dit herinitialiseert de camera.Bekende problemen: Als er communicatieproblemen optreden, reset dan de camera en herstart het programma. Het stuurprogramma is nog niet robuust genoeg om met deze situaties om te gaan, in het bijzonder bij problemen waarbij de transmissiesnelheid boven 9600 lag en de camera niet behoorlijk afgesloten werd.Kodak DC120-camerabibliotheek Scott Fritzinger Camerabibliotheek voor de Kodak DC120-camera. (Vanwege de grote interesse.)Kodak DC240 Camerabibliotheek Scott Fritzinger and Hubert Figuiere Camerabibliotheek voor de Kodak DC240, DC280, DC3400 and DC5000 camera's. Herschreven en geactualiseerd voor gPhoto2.Kodak DC3200-stuurprogramma Donn Morrison Vragen en commentaren worden gewaardeerd.Kodak EZ200-stuurprogramma Bucas Jean-Francois Konica-configuratieKonica Q-M150-bibliotheek Marcus Meissner Aurelien Croc (AP2C) http://www.ap2c.com Ondersteuning voor de Franse Konica Q-M150.Konica-bibliotheek Lutz Mueller Ondersteuning voor alle Konica en meerdere HP camera's.KoreaansLCDLCD auto-uit (in seconden)LCD-zelfuitschakeling (seconden)LCD-achtergrondlichtLCD-achtergrondlicht en infoweergaveLCD-helderheidLCD-verlichtingLCD-modusLCD-uitschakelingstijdLED-modusGenerisch LG GSM-stuurprogramma Guillaume Bedot LandschapTaalLargan-stuurprogramma Hubert Figuiere GrootGrote, fijne JPEGGrote, normale JPEGLinksFocuslengte van lens (non-CPU)Lens-IDMax. diafragma van lens (non-CPU)LensmodusLensnaamLenssoortLenstypeLensrichting komt niet overeen met flitslicht Lens is niet aangesloten LichtLichtmeterLicht op donkerNiet genoeg licht.Wifi-profielen tonenAlle bestanden tonenInventariseren van bestanden in '%s'...Inventariseren van mappen in '%s'...Lithium-ionLiveView-AF-zoneLaden van camerastuurprogramma's uit '%s'...LokaalLokalisatieLokalisatiegegevens zijn beschadigd.Lokalisatiegegevens zijn te lang.Lokalisatiebestand is te lang!Logitech Clicksmart 310-stuurprogramma Theodore Kilgore Ruisonderdrukking bij lange belichtingRuisonderdrukking bij lange belichtingLange sluitertijdZoeken naar camera...Lijkt op een modem, niet op een cameraVerliesloosMet verliesLaagLaag (576 x 436)Laag (beste kwaliteit)Laag 2Weinig lichtLangzame synchronisatieLaag contrastLage gevoeligheidLange sluitertijdLange-sluitertijdfunctie is niet beschikbaarKleine letters in %s zijn niet toegestaan.MM3U-afspeellijstMHT-gecompileerd HTML-documentMM-DD-JJJJMPL-afspeellijstMacrobeheerdHandmatigHandmatig 2Handmatige focusHandmatige reeksopname (bracketing)Handmatige focusFabrikant: %s Mars MR97310-camerabibliotheek Theodore Kilgore Mars MR97310-camera. Er staat %i foto op de camera. Mars MR97310-camera. Er staan %i foto's op de camera. MatrixMatrix-metingMatthew G. Martin Gebaseerd op fujiplay door Thierry Bousch Max. diafragmaopening bij max. focuslengteMax. diafragmaopening bij min. focuslengteMax. focuslengteMaximaalMax. diafragmaopening bij max. focuslengteMax. diafragmaopening bij min. focuslengteMaximum opnamesMaximum aantal beelden: %d MiddelGemiddeld (1152 x 872)Gemiddeld (prima kwaliteit)Medium 1Medium 2Medium 3Gemiddelde, fijne JPEGHoog-gemiddeldLaag-gemiddeldGemiddelde, normale JPEGHoog-gemiddeldMedium gevoeligheidResterend geheugen: %i bytes GeheugenkaartGeheugenkaartstatus (%d): %s Geheugen in camera: %d Mbit. Menu's en weergaveMetagegevens worden alleen ondersteund voor MTP-apparaten.Meter-uitschakelingstijdMeetmethodeMicrofoonMicrofoon uitMicrosoft Excel-spreadsheet (.xls)Microsoft Powerpoint (.ppt)Microsoft Word-documentMin. focuslengteMiniatuureffectMinimaalMinimum sluitertijdMinolta Dimage V-camerabibliotheek %s Gus Hartmann Met bijzondere dank aan Minolta voor de specificaties.Spiegel omhoogSpiegel-omhoog-sequentieOverige belichtings-/lensinstellingenOntbrekend nummerModel-IDModel: Minolta Dimage V (%s) Hardware-revisie: %s Firmware-revisie: %s Model: Model: %s Model: %s Capaciteit: %i MB Voeding: %s Auto-uitschakeling na: %i min Modus: %s Beelden: %i/%i Datumweergave: %s Datum en tijd: %s Model: %s Geheugen: %d byte(s) van %d beschikbaarModel: %s Serienummer: %s, Hardwareversie: %i.%i Softwareversie: %i.%i Testsoftwareversie: %i.%i Naam: %s, Fabrikant: %s Model: %x, %x, %x, %xModel: Kodak %s Altijd flitsenMatigBeeldschermMonochroommaand/dag/jaarObject verplaatsenFilmopnameFilmkwaliteitFilmgeluidMeerdere puntenMeerdere puntenMeerpuntsmetingMeerpuntsMeerdere focuspunten (midden)Meerdere focuspunten (links)Meerdere focuspunten (geen specificatie), handmatigMeerdere focuspunten (rechts)Meerdere focuspunten, automatischMultikiezerSpiegel omhoog (Mup)Mustek MDC-800 gPhoto2-bibliotheek Henning Zabel Overgezet naar gphoto2 door Marcus Meissner Ondersteunt serieel en USB-protocol.NEF (raw)NEF+basisNEF+fijnNEF+normaalNikon opnamereeksNIET HERKENDNTSCNULL parameter "%s" in %s regel %iBenaming "%s" van de camera komt niet overeen met een bekend type cameraNaam '%s' (%li tekens) is te lang, maximum 30 tekens toegestaan.NaamvoorvoegselNaam die bij het formatteren van de kaart gezet wordt.Dichtbij %dDichtbij 1Dichtbij 2Dichtbij 3NetwerkmaskerNeutraalVolgendeNikkel-cadmiumNikkel-metaalhydrideNachtlandschapNachtportretNachtNachtzichtNachtlandschapNachtopnameNachtopnameNikon-opname 1Nikon Coolpix 880: Camerainstellingen of -voorkeuren: De optische zoom werkt niet goed. Niet alle camerainstellingen kunnen goed gelezen of geschreven worden; bijvoorbeeld de fijnafstemming van de witbalans, en de taalinstellingen. Zet de camera in 'M'-modus om de sluitertijd in te stellen. Nikon Coolpix 995: De camerainstellingen (voorkeuren) voor deze camera zijn onvolledig. Neem contact op met de gphoto-ontwikkelaarsmailinglijst als u bijdragen hebt voor dit stuurprogramma. Het downloaden van foto's zou correct moeten werken. Nikon flitsmodusNikon beeldzoekerDe autofocus-drive van Nikon heeft niet scherpgesteld.Wijzigen van AF-zone van Nikon werkt alleen in LiveView-modus.Handmatige focus van Nikon is aan zijn limiet.Handmatige focusstap van Nikon is te klein.Handmatige focus van Nikon werkt alleen in LiveView-modus.NeeGeen CF-kaart uitworpGeen CompactFlash-kaart gedetecteerd Geen dual-irisGeen EXIF-gegevens beschikbaar voor %s.geen bestandsverwijdering, geen bestandsupload Geen flitsGeen voedingslampjeGeen resolutieomschakelingGeen SD-kaart aanwezig. Geen antwoord van de camera.Er is geen geluidsbestand gevonden voor %sGeen camerahandleiding beschikbaar. Geen kaart aanwezigEr zit geen gehuegenkaartje in de camera. Geen kaart aanwezig.Geen geheugenkaart aanwezigGeen reden voorhandenGeen antwoord van cameraEr is geen ruimte beschikbaar om nieuwe beelden op te slaan. U moet een aantal beelden verwijderen.Geen vrije opslagruimte op kaart.Geen fabrikantspecifieke opname GeenNiets geselecteerdNormaalNormaal Normale AF aanNormale-zone AFNiet volNiet genoeg vrije ruimteOnvoldoende ruimte beschikbaar op de geheugenkaartNiet in vulmodusNiet gereedNiet gebruiktOpmerking: geen geheugenkaart aanwezig, sommige waarden kunnen ongeldig zijn Aantal beelden: %d Aantal afbeeldingen: %dAantal afbeeldingen: %d Aantal afbeeldingen: %i Firmware-versie: %sUITOKAANBesturingssysteemfout in communicatie met cameraUitKantoorOlympus 750 Ultra Zoom: (1) De Olympus 750UZ heeft een USB PC-beheermodus. Om deze modus te gebruiken, dient u de camera in te schakelen, het klepje van de geheugenkaart te openen, en dan zowel de 'OK'-knop als de 'Quickview'-knop ingedrukt te houden tot het beheermenu verschijnt. Zet deze op Beheermodus. (2) Indien u de 'LCD-modus' naar 'Beeldscherm' of 'Normaal verandert, vergeet deze dan niet terug op 'UIT' te zetten alvorens de verbinding te verbreken. Anders kunt u de cameraknoppen niet gebruiken. Indien u toch in deze toestand terechtkomt, dient u de camera opnieuw te verbinden met de PC en de LCD op 'UIT' te zetten.AanAan + rodeogenreductieTips in beeldAan, rodeogenreductieEnkele opnameVolautomatischAlleen de hoofdmap wordt ondersteund - u vroeg een bestandslijst voor de map '%s'.Mediasessie openenSessie openenActiemodusActie is geannuleerdOptimale kwaliteitBeeldoptimalisatieOriëntatieOverigeAndere PTP-toesteleigenschappenAndere instellingenAnder commando is in uitvoering.OnscherpOnvoldoende geheugen beschikbaarOnvoldoende geheugen beschikbaar: %d bytes nodig.Onvoldoende geheugen beschikbaar: %ld bytes nodig.BuitenNaam van eigenaarNaam van eigenaar is gewijzigdPPALPCPLS-afspeellijstPTP: Toegang geweigerdPTP: Opname is reeds beëindigdPTP: Toestel is bezigPTP: Toesteleigenschap wordt niet ondersteundPTP - Algemene foutPTP: Overdracht is niet compleetPTP: Ongeldig codeformaatPTP: Ongeldige opmaak van toesteleigenschapPTP: Ongeldige waarde voor toesteleigenschapPTP: Ongeldige objectopmaakcodePTP: Ongeldig objecthandvatPTP: Ongeldige parameterPTP: Ongeldig hoofdobjectPTP: Ongeldig opslag-IDPTP: Ongeldig transactie-IDPTP: Geen miniatuurvoorbeeld aanwezigPTP: Geen geldige objectinformatiePTP OK!PTP: Object is tegen schrijven beveiligdPTP: Actie wordt niet ondersteundPTP: Parameter wordt niet ondersteundPTP: Gedeeltelijk verwijderdPTP-eigenschap 0x%04xPTP: Zelftest is misluktPTP: Sessie is reeds geopendPTP: Sessie is niet openPTP: Specificatie door formaat niet ondersteundPTP: Opgave van bestemming wordt niet ondersteundPTP-standaardversie: %d.%d PTP: Opslagruimte is volPTP: Opslagruimte is niet beschikbaarPTP: Opslagruimte is alleen-lezenPTP-timeoutPTP: Transactie is geannuleerdPTP - Ongedefinieerde foutPTP: Onbekende leverancierscodePTP-versieHet pakket werd door de camera verworpen. Neem contact op met %s.Brede focusPanasonic DC1000 gPhoto-bibliotheek Mariusz Zynel Gebaseerd op het dc1000-programma geschreven door Fredrik Roubert en Galen Brooks .Panasonic DC1580 gPhoto-bibliotheek Mariusz Zynel Gebaseerd op het dc1000-programma geschreven door Fredrik Roubert en Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Panasonic heeft de beeldopnametechnologie genaamd PHOTOSHOT voor het eerst in deze serie Palmcorders geïmplementeerd. De beelden worden in JPEG-formaat op een interne Flash-kaart opgeslagen en kunnen via de ingebouwde seriële poort naar een computer worden overgedragen. De beelden kunnen in de resoluties NORMAAL (320x240) en FIJN (640x840) opgeslagen worden. De CCD die de beelden opneemt heeft slechts 300K pixels en produceert daardoor enkel beelden van lage kwaliteit.Panasonic PV-L859-K/PV-L779-K Palmcorder-stuurprogramma Andrew Selkirk Parameter 1Parameter 2Parameter 3ParametersetGedeeltelijkGedeeltelijke metingFeest/BinnenshuisPad is niet absoluutGedetecteerd toesteltypePermanente instellingenHuisdierportretFotoeffectFotoinformatieweergaveFoto in filmFoto's op camera: %d FotoframeconfiguratieAfbeeldingsinstellingenAfbeeldingsstijlAfbeeldingenFoto's op de camera: %d WeergaveWeergavemodusAfspeelcontainerindexAfspeelobjectAfspeelpositieAfspeelsnelheidPlaysForSure-IDPoortsnelheidPortretVoedingStroombesparendToestel uitschakelenVertraging voor-opnameVoorinstellingAangepaste voorinstelling 1Aangepaste voorinstelling 2Aangepaste voorinstelling 3Aangepaste voorinstelling 4Aangepaste voorinstelling 5MiniatuurvoorbeeldVorigeProblemen bij downloaden van beeldProbleem bij het ophalen van beeldinformatieProbleem bij het ophalen van het aantal beeldenProblemen bij het openen van de poortProblemen bij lezen van beeld van de flash-geheugenkaartProblemen bij het terugzetten van de camerainstellingProblemen bij het instellen van de communicatiesnelheid van de cameraProblemen bij opnemen van rechtstreeks beeldWFC-object verwerkenProduct-ID: %02x%02x ProfielnaamGeen flits KwaliteitSnelle reactieSnelle reactie, op afstandRAWRAW + JPEG BasisRAW + fijne JPEGRAW + normale JPEGRAW + grote, fijne JPEGRAW + grote, normale JPEGRAW + gemiddelde, fijne JPEGRAW + gemiddelde, normale JPEGRAW + kleine, fijne JPEGRAW + kleine, normale JPEGRAW 2RAW+JPEGRGB-versterkingRTC-status:%d alleen-lezen plus objectverwijderingalleen-lezenlezen+schrijvenBestandseigenschappen zoals hoogte en breedte kunnen allen worden gelezen en niet worden gewijzigd.GereedAchtergronddoeksync + Slow-syncAchtergronddoeksyncAchtergronddoeksync + Slow-syncOntving onverwacht antwoord (%i). Neem contact op met %s.Onverwachte data ontvangen (0x%02x, 0x%02x).Onverwachte header ontvangen (%i)Onverwacht antwoord ontvangenOntvangen van data...OpnameOpnamemodusOpnamemodusOpnamemediumRoodRodeogenreductieAntirodeogenflitsRodeogenreductieRodeogenreductie + Slow-syncAntirodeogen automatischAntirodeogen-invulflitsAntirodeogen-invulflitsRodeogenreductieRodeogenreductie + Slow-syncOp afstandSpiegel omhoog op afstandTimeout op afstandverwijderbare RAM (geheugenkaart)verwijderbare ROMHeb informatie over afbeelding %i (= 0x%x) gevraagd, maar kreeg informatie over afbeelding %iToestel resettenFocuspunt terugzetten op centrumResetten van protocol...ResolutieResolutieomschakelingResolutie plus grootteCommandokiezer omkerenHerroepingsinfoRicoh / Philips driver by Lutz Mueller , Martin Fischer , gebaseerd op Bob Paauwe's sturprogramma Ricoh Caplio G3. Marcus Meissner Omgekeerd ontwikkeld met gebruik van USB Snoopy, kijkend naar de bijwerking van het basissoftwarebeeld en wild gokkend. RechtsRotatiehoekRotatievlagSD-kaart-ID: %s SD-geheugen: %d MB totaal, %d MB vrij. SDRAMSDRAM: Bestanden: %d Beelden: %4d Films: %4d Gebruikte ruimte: %8d Vrije ruimte: %8d SD-RAMST2205-stuurprogramma voor USB-fotoframes Hans de Goede Dit stuurprogramma kan foto's van het fotoframe downloaden, ernaar uploaden, en ervan verwijderen.Fotoframes met een ST2205-chip kunnen allerlei resoluties hebben. Het gphoto-stuurprogramma voor deze apparaten kan foto's van het fotoframe downloaden, ernaar uploaden, en ervan verwijderen.STV0674 Vincent Sanders Stuurprogramma voor camera's die de STV0674-processor gebruiken. Het protocol werd ontrafeld met behulp van SnoopyPro. STV0680 Adam Harrison Stuurprogramma voor camera's die de STV0680-processor gebruiken. Het protocol werd ontrafeld met behulp van CommLite Beta 5. Carsten Weinholz Uitgebreid voor Aiptek PenCam en andere STM USB dualmodus-camera's.VerzadigingScèneScènemodusSectieSelectieve kleurZelfontspannertijdZelfontspannerZelfontspanner (alleen volgende opname)ZelfontspannertijdZelfontspannertijdToestelzelftest uitvoerenZelfontspannerZelfontspanner 10sZelfontspanner 2sZelfontspannertijdGedeeltelijk object verzendenObject versturenObjectinfo versturenVerzenden van data...GevoeligheidSensor-ID: %d.%d SepiaReeks van 9SerienummerSerienummer: %s Persistente instellingenAutofocuszone van Nikon instellenEigenschap instellen wordt niet ondersteundCameraklok instellenObjectbescherming instellenObjectreferenties instellenInstelling 4Instelling 5Instelling 6Instelling 7SchaduwSchaduwWitbalans: schaduwMoet de camera een piep geven als er een opname gemaakt wordt?ScherpScherpteScherperScherpteOpnamemodusOpnamesnelheidOpnamemodusOpnamemodus is gewijzigdOpname-instellingenUitschakelingSluitertellerSluitertijdSluitertijd (in seconden)Sluitertijd (microseconden, 0=auto)Sluitertijd 2Sluitertijd in microseconden (0=auto)Sluitertijd is gewijzigdSiPix Web2 Marcus Meissner Stuurprogramma voor toegang tot de SiPix Web2-camera.SilhouetEnkelEnkele zoneEnkele opnameEnkel-frameEnkele opname, stilEnkel-frames opnamemodusEnkele-zone AFSipix StyleCam Blink-stuurprogramma Vincent Sanders Marcus Meissner . Beeldgrootte-/kwaliteitsmodusGrootte van invoergegevens naar cameraGrootte van uitvoergegevens uit cameraDaglichtDiashowintervalSlow-syncLange sluitertijdSlow-syncLange sluitertijdSlow-syncSlow-syncSmal Ultrapocket Lee Benfield Stuurprogramma voor toegang tot de Smal Ultrapocket-camera, en de OEM-versies (slimshot).KleinKleine, fijne JPEGKleine, normale JPEGSneeuwZachtZachterSoftwarerevisie: %s Opmerkingen over Epson camera's: - Sommige parameters zijn niet op afstand bestuurbaar: * zoom * focus * aangepaste witbalansinstelling - De configuratie is ontrafeld met een PhotoPC 3000z-camera. Als uw camera zich anders gedraagt, stuur dan een e-mail naar %s (in het Engels). Opmerkingen over Olympus-camera's (en misschien anderen): (1) Camera-instelling: Met een waarde 0 wordt de standaard genomen (auto). (2) De Olympus C-3040Z (en mogelijk ook de C-2040Z en andere) hebben een USB PC-beheermodus. Om deze modus te gebruiken, dient u de camera in te schakelen, het klepje van de geheugenkaart te openen, en dan zowel de menuknop als de LCD-knop ingedrukt te houden tot het beheermenu verschijnt. Zet deze op 'AAN'. (3) Indien u de 'LCD-modus' naar 'Beeldscherm' of 'Normaal verandert, vergeet deze dan niet terug op 'UIT' te zetten alvorens de verbinding te verbreken. Anders kunt u de cameraknoppen niet gebruiken. Indien u toch in deze toestand terechtkomt, dient u de camera opnieuw te verbinden met de PC en de LCD op 'UIT' te zetten.Opmerkingen over Olympus-camera's: (1) Camera-instelling: Met een waarde 0 wordt de standaard genomen (auto). (2) De Olympus C-3040Z (en mogelijk ook de C-2040Z en andere) hebben een USB PC-beheermodus. Om deze modus te gebruiken, dient u de camera in te schakelen, het klepje van de geheugenkaart te openen, en dan zowel de menuknop als de LCD-knop ingedrukt te houden tot het beheermenu verschijnt. Zet deze op 'AAN'. (3) Indien u de 'LCD-modus' naar 'Beeldscherm' of 'Normaal verandert, vergeet deze dan niet terug op 'UIT' te zetten alvorens de verbinding te verbreken. Anders kunt u de cameraknoppen niet gebruiken. Indien u toch in deze toestand terechtkomt, dient u de camera opnieuw te verbinden met de PC en de LCD op 'UIT' te zetten.Sonix-camerabibliotheek Theodore Kilgore Sonix-camera. Er staat %i foto op. Sonix-camera. Er staan %i foto's op. Sony-opnameOndersteuning voor Sony DSC-F1 digitale camera M. Adam Kendall Gebaseerd op de 'chotplay CLI'-interface van Ken-ichi Hayashi. Overgezet naar Gphoto2 door Bart van Leeuwen Sony DSC-F55/505 gPhoto-bibliotheek Ondersteunt de Sony MSAC-SR1 en de geheugenstick van de DCR-PC100. Oorspronkelijk geschreven door Mark Davies , overgezet naar gPhoto2 door Raymond Penners Eigenschap '%s' / 0x%04x is momenteel alleen-lezen.Deze Canon-camera ondersteunt geen opname-initiatieDeze Canon-camera ondersteunt geen EOS-beeldopnameUw Canon-camera ondersteunt de Canon-Viewfinder-modus nietDeze camera ondersteunt geen Canon-beeldopnameUw Nikon-camera ondersteunt de LiveView-modus nietDeze camera ondersteunt geen Nikon-beeldopnameDeze camera ondersteunt geen generische beeldopnameGeluidSoundvision-stuurprogramma Vince Weaver Resterende opslagruimte: Hoog: %d, Gemiddeld: %d, Laag: %d SpaansSnelheid %i wordt niet ondersteund!Het uploaden naar deze camera met snelheden hoger dan 57600 wordt niet ondersteundSportPuntPuntsmetingPuntsmeting gecombineerd met AF-framePuntsmetingsmodusPuntsmetingPuntsmeting gecombineerd met AF-frameSpot-AFStandaardStandaardontwikkelingsparametersFilmopname startenOpstartenOpstarten en uitschakelingStap 2 van initialisatie is mislukt: (%i bytes ontvangen, %i verwacht). Camera werkt nietStap 2 van initialisatie is mislukt: ("%s" bij lezen van %i). Camera werkt nietStap 3 van initialisatie is mislukt: (%i bytes ontvangen, %i verwacht). Camera werkt nietStap 3 van initialisatie is mislukt: ("%s" bij lezen van %i). Camera werkt nietStap 3 van initialisatie is mislukt: ("%s" bij schrijven van %i). Camera werkt nietStap 4 is mislukt: (%i ontvangen, %i verwacht). Camera werkt nietStap 4 is mislukt: ("%s" bij lezen van %i). Camera werkt nietFlitsfout.Samenvatting voor Mustek MDC800: ZonsondergangSupermacroSuperfijnOndersteunde MTP-objecteigenschappen: Ondersteunde miniatuurgrootteUitschakelen van cameraSynchronisatiepartnerDatum en tijd van camera synchroniseren met PCDatum en tijd van fotoframe synchroniseren met PCSysteemfout.TFTTFT + PCTIFF (RGB)TVTV-signaalOpen opname beëindigenTesten van verschillende snelheden...De maplijst "camera" laat u de foto's op de harde schijf indexeren.De JD11-camera werkt redelijk goed met dit stuurprogramma. Een RS232-interface met 115 kbit/s is vereist voor de beeldoverdracht. Met het stuurprogramma kunt u - miniatuurvoorbeelden (64x48 PGM formaat) - volle beelden (640x480 PPM formaat) downloaden. De Kodak DC120-camera gebruikt het KDC-bestandsformaat om beelden op te slaan. Om de beelden te bekijken dient u het "kdc2tiff"-programma te downloaden. Het is beschikbaar op http://kdc2tiff.sourceforge.netHet 'Samsung digimax 800k'-stuurprogramma voor gphoto is geschreven door James McKenzie . Ported naar gphoto2 door Lutz Mueller . Marcus Meissner repareerde en verbeterde de port.Het accuniveau van de camera is te laag (%d%%). De actie is gestopt.Kan geen verbinding maken met de camera. Verzeker u ervan dat de camera op de computer aangesloten is en ingeschakeld is.Het commando werd door de camera geweigerd.De camera accepteert '%s' niet als bestandsnaam.Snelheid %i wordt niet door de camera ondersteund.De camera heeft zojuist een onbekende fout gemeld. Wilt u het volgende rapporteren aan %s met als bijkomende informatie hoe de fout is ontstaan: (0x%x,0x%x). Hartelijk bedankt!De camera verzond meer bytes dan verwacht (%i)De camera verzond slechts %i byte(s), maar we hebben minstens %i nodig.Het te uploaden bestand heeft lengte nulDe bestandsnaam mag uit maximaal 12 tekens bestaan ('%s' heeft er %i).Het bestandssysteem ondersteunt het uploaden van bestanden niet.Het bestandssyteem ondersteunt het ophalen van bestandsinformatie nietHet bestandssysteem ondersteunt het ophalen van bestanden nietHet bestandssyteem ondersteunt het ophalen van opslaginformatie nietHet bestandssysteem ondersteunt het instellen van bestandsinformatie nietDe eerste ontvangen byte (0x%x) is niet geldig.Het pad '%s' is niet absoluut.Het gevraagde poorttype (%i) wordt door dit stuurprogramma niet ondersteund.Map '%s/%s', die u probeert te verwijderen, bevat nog bestanden.Map '%s/%s', die u probeert te verwijderen, bevat nog submappen.Momenteel is er een proces aan de gang. Deze camera ondersteunt slechts één actief proces. Gelieve te wachten tot het actieve proces afgelopen is.Er is nog ruimte voor:n %d afbeeldingen met lage compressie, %d met gemiddelde compressie, of %d met hoge compressie. Deze camera kan geen voorbeeldopnames maken.Deze camera kan geen opnames maken.Deze camera kan geen opnames triggeren.Deze camera bevat een Jeilin JL2005%c-chipset. Er staan %i foto's op de camera. Deze camera bevat een Jeilin JL2005A-chipset. Er staan %i foto's op de camera. Deze camera biedt geen handleiding aan.Deze camera biedt geen instellingsopties aan.Deze camera levert geen informatie over het stuurprogramma.Deze camera ondersteunt het wijzigen van instellingsopties niet.Deze camera ondersteunt geen samenvattingen.Dit stuurprogramma ondersteunt camera's met de Jeilin JL2005B- of C- of D-chip. Deze camera's ondersteunen noch het verwijderen van foto's, noch het uploaden van data. Indien videoclips op de camera aanwezig zijn, worden deze als opeenvolgende stilstaande beelden gedownload. Voor verdere details, zie libgphoto2/camlibs/README.jl2005c Dit stuurprogramma ondersteunt camera's met de Jeilin jl2005a-chip Deze camera's ondersteunen noch het verwijderen van foto's, noch het uploaden van data. Het decoderen van gecomprimeerde foto's werkt mogelijk niet goed, en niet voor alle camera's even goed. Indien videoclips op de camera aanwezig zijn, worden deze als opeenvolgende stilstaande beelden gedownload. Voor verdere details, zie libgphoto2/camlibs/README.jl2005a Dit stuurprogramma ondersteunt camera's met de Mars MR97310-chip (en directe equivalenten -- ??Pixart PACx07??). Deze camera's ondersteunen noch het verwijderen van foto's, noch het uploaden van data. Het decoderen van gecomprimeerde foto's werkt mogelijk niet goed, en niet voor alle camera's even goed. Voor de Argus QuickCli wordt fotodataverwerking NIET ONDERSTEUND. Indien videoclips op de camera aanwezig zijn, worden deze als opeenvolgende stilstaande beelden gedownload. Voor verdere details, zie libgphoto2/camlibs/README. Dit is het stuurprogramma voor Canon PowerShot, Digital IXUS, IXY Digital, en EOS digitale camera's in hun eigen (soms "normaal" genoemde) modus. Het ondersteunt ook een klein aantal digitale camcorders van Canon met de mogelijkheid tot het opnemen van stilstaande beelden. Het bevat code voor communicatie via een seriële poort of USB-verbinding, maar (nog) niet voor IEEE 1394 (Firewire). Het ondersteunt meer dan 70 modellen, zowel oudere zoals de PowerShot A5 en Pro70 uit 1998, en nieuwere zoals de PowerShot A510 en EOS 350D uit 2005. Het is niet gecontroleerd voor de EOS 1D of EOS 1Ds. Bij de A50 kan het gebruik van 115200 bps effectief langzamer zijn dan het gebruik van 57600 bps. Als u veel seriële transmissiefouten ervaart, probeer uw computer dan zo inactief mogelijk te houden (dat wil zeggen geen schijfactiviteit). Deze bibliotheek is getest met een Kodak DC 215 Zoom camera. Het kan ook werken met DC 200 and DC 210 camera's. Indien u zo'n type camera bezit, gelieve een bericht naar mij te sturen (koltan@gmx.de) om me op de hoogte te houden als alles werkt of als u enige problemen heeft met deze bibliotheek.Dit voorbeeld bestaat niet.MiniatuurHoogte van miniatuur: %d Grootte van miniatuur: %d Breedte van miniatuur: %d TijdsopmaakTijd: %a, %d %b %Y %T TijdsspanneTijdspanne-intervalTijdspanne-nummerZelfs na drie pogingen onderbroken. Neem contact op met %s.TooncompensatieTe helderTe donkerTe veel pogingen zijn mislukt.BovenToshiba David Hogue Stuurprogramma voor Toshiba pdr-m11. Totaal aantal flitsen: %d Totaal opgenomen afbeeldingen: %d, aantal keren geflitst: %d Totaal aantal opgenomen afbeeldingen: %d De transmissie van het pakket werd, zelfs na %i pogingen, onderbroken. Neem contact op met %s.Transmissie is zelfs na drie pogingen mislukt. Gestopt...Object afkappenVerbinding maken met camera...Bijstelling van kleurtemperatuurBijstelling 0Bijstelling 1Bijstelling 2Bijstelling 3Bijstelling 4GloeilampWitbalans: gloeilampTurbomodusTvSoort diashowTaal gebruikersinterfaceUNIX-tijdUSB 1.1USB 2.0USB-snelheidOngedefinieerdOngedefinieerde audioOngedefinieerd kalenderitemOngedefinieerde verzamelingOngedefinieerd contactOngedefinieerd documentOngedefinieerd berichtOngedefinieerde PTP-eigenschapOngedefinieerde videoongedefinieerd uitvoerbaar Windows-bestandOnderwater(onbekend)onbekend %dOnbekende fout in camerabibliotheekOnbekende foutOnbekende fout.Onbekend bestandstype %i.Onbekende flitsmodus %d, Onbekend modelOnbekend model "%s"Onbekende waardeOnbekende waarde %04dOnbekende waarde %04xOnbekende waarde 0x%04xOnbekende zoommodus %d Onbekend (%04x)Onbekend: 0x%04x Niet-herkend antwoordNiet-passende kaartCommando wordt niet ondersteund.Niet-ondersteund poorttype %i = 0x%x gegeven. Initialisatie is onmogelijk.Poorttype %d wordt niet ondersteund. Dit stuurprogramma werkt alleen met USB-camera's. ongebruiktFirmware van toestel bijwerkenUpload-URLUploaden wordt alleen ondersteund naar de map '%s'Uploaden van bestand...Uploaden van beeld...Uploaden van beeld %s.Bezig met uploaden...Downloaden is door gebruiker gestoptGebruikersinstelling 1Gebruikersinstelling 2Gebruikersinstelling 3Leveranciers-ID: %02x%02x Versie: Versie: %s Verticale AF aanVideomodusVideo-uitVideo-uitBeeldzoekerrasterBeeldzoekerrasterLevendigVluchtige instellingenVolumeniveauBelichting reeksopnameWEP 128-bitsWEP 64-bitsWifi-ESSIDWifi-kanaalWifi-profielenWPL-afspeellijstWacht op voltooiing...Wacht...WaarschuwingsweergaveWaarschuwingsniveau 0Waarschuwingsniveau 1Waarschuwing in canon_usb_set_file_attributes: canon_usb_dialogue geeft foute status 0x%08x van camera0x%x werd verwacht, maar 0x%x ontvangen. Neem contact op met %s.ZwakWitbalansWitbalans-voorinstelling 0Witbalans-voorinstelling 1Witbalans-voorinstelling 2Witbalans-voorinstelling 3Witbalans-voorinstelling 4Witbalans-voorinstellingsnummerWitbalans-kleurtemperatuurWitbalans-voorinstellingsnaam 0Witbalans-voorinstellingsnaam 1Witbalans-voorinstellingsnaam 2Witbalans-voorinstellingsnaam 3Witbalans-voorinstellingsnaam 4Witbalans-voorinstellingsnummerWitbalans-voorinstellingswaarde 0Witbalans-voorinstellingswaarde 1Witbalans-voorinstellingswaarde 2Witbalans-voorinstellingswaarde 3Witbalans-voorinstellingswaarde 4Witte achtergrondWitbalansWitte achtergrondWitniveauWitbalansWitbalans-bijstelling AWitbalans-bijstelling BWitbalans-X AWitbalans-X BWitbalans-resetfoutBreedteBrede-zone AFSchrijvenBeveiligd tegen schrijvenVerkeerde 'escape'-stuurcode: 0x%02x verwacht, 0x%02x ontvangen.XML-documentJJJJ-MM-DDjaar/maand/dagJaU probeerde '%s' uit map '%s' te verwijderen, maar het bestandssyteem ondersteunt het verwijderen van bestanden niet.U dient de poort in te stellen vóór de initialisatie van de camera.U moet in opnamemodus zijn om beelden op kunnen te nemen.Uw Logitech Clicksmart 310 bevat %i opname. Uw Logitech Clicksmart 310 bevat %i opnames. Uw USB-camera heeft een S&Q-chipset. Het bevat momenteel %i afbeeldingen. Enkele van deze kunnen clips zijn die meerdere frames bevatten. Uw USB-camera heeft een Aox-chipset. Aantal kleine afbeeldingen = %i Aantal grote afbeeldingen = %i Aantal afbeeldingen = %i Uw USB-camera is een Kodak EZ200. Aantal afbeeldingen = %i Deze USB-camera is een iClick 5X. Het bevat momenteel %i afbeeldingen. Uw USB-camera schijnt een LG GSM te zijn. Firmware: %s Firmware-versie: %s Uw USB-fotoframe heeft een AX203-chipset. Uw USB-fotoframe heeft een ST2205-chipset Deze camera kan alleen het laatste bestand verwijderen. In dit geval is dit het bestand '%s'.Zonefocus (dichtbij)Zonefocus (close-up)Zonefocus (veraf)Zonefocus (medium)Zonefocus (gereserveerd 1)Zonefocus (gereserveerd 2)Zonefocus (gereserveerd 3)Zonefocus (gereserveerd 4)Zonefocus (heel dichtbij)ZoomenZoom (in millimeters)Zoomniveau is gewijzigdZoom: 29 mm Zoom: 34 mm Zoom: 41 mm Zoom: 51 mm Zoom: 58 mm Zoom: macro netadapteragfa_cl20 De Agfa CL20 Linux stuurprogramma-schrijvers! E-mail naar cl20@poeml.de Bezoek ons op http://cl20.poeml.de/autoauto + rodeogenreductieaccuZwart-witcamera is langer dan 9 seconden inactief -- herinitialisatie. kan niet gepolst worden. canon_int_capture_image: laatste canon_usb_list_all_dirs()() is mislukt met status %icanon_int_capture_image: eerste canon_usb_list_all_dirs() is() is mislukt met status %licanon_int_get_info_func: ERROR: eerste melding te kort (%i < minimum %i)canon_int_list_directory: ERROR: eerste melding te kort (%i < minimum %i)canon_int_list_directory: Einde van het pakket bereikt tijdens onderzoek van het eerste dirent.canon_int_list_directory: afgekapte mapingang tegengekomencanon_serial_get_dirents: Kan geen %i bytes geheugen reserverencanon_serial_get_dirents: Kan grootte van mapitemsbuffer niet naar %i bytes wijzigencanon_serial_get_dirents: Kan volgende mapitem niet lezencanon_serial_get_dirents: Eerste 'dirent'-pakket is te kort (slechts %i bytes)canon_serial_get_dirents: Te veel mapitems -- oneindige lus?canon_serial_get_dirents: Afgekapt mapitem ontvangencanon_serial_get_dirents: Ophalen van mapitems door canon_serial_dialogue() is misluktcanon_usb_get_body_id: Onverwachte data-lengte teruggekregen (%i bytes ontvangen, %i verwacht)canon_usb_get_dirents: Actiegedeelte past niet in de buffer, '%.96s' (afgekapt) te langcanon_usb_get_dirents: canon_usb_long_dialogue mislukte bij het ophalen van lijstelementen, status %icanon_usb_list_all_dirs: Kon actiegedeelte niet in buffer laden, '%.96s' (afgekapt) te lang.canon_usb_list_all_dirs: canon_usb_long_dialogue mislukte bij het ophalen van lijstelementen, status %icanon_usb_lock_keys: Onverwachte lengte teruggekregen (%i bytes ontvangen, %i verwacht)canon_usb_lock_keys: Onverwachte lengte teruggekregen van "lock keys"-functie (%i bytes ontvangen, %i verwacht)canon_usb_set_file_attributes: canon_usb_dialogue misluktcanon_usb_lock_keys: Onverwachte lengte teruggekregen (%i bytes ontvangen, %i verwacht)Kleurcoolshot-bibliotheek vKan de naam van de eigenaar niet wijzigenkan de tijd niet instelleneconomischexterninvulflitsfijngPhoto2 Mustek VDC-3500/Relisys Dimera 3500 Deze software werd gemaakt met de hulp van niet-vrije informatie van StarDot Technologies Auteur: Brian Beattie Medewerkers: Chuck Homic Converteren van raw-camerabeelden naar RGB Dan Fandrich Informatie over protocol en raw-beeldformaat, gphoto2-poorten gsmart300-bibliotheek Till Adam Jerome Lodewyck Ondersteuning voor Mustek gSmart 300 digitale camera's, gebaseerd op verscheidene andere gphoto2 camlib-modules en op de specificaties aangeleverd door Mustek. hoog (640x480)hoge compressie, hp215 Marcus Meissner Stuurprogramma voor de HP Photosmart 215-camera. Samengesteld uit het zelfstandige hp215-programma. Dit stuurprogramma ondersteunt het downloaden van afbeeldingen en miniaturen, en het verwijderen van afbeeldingen. iClick 5X-stuurprogramma Theodore Kilgore in vulmodusoneindiginternjamcam bibliotheek vjl2005a-camerabibliotheek Theodore Kilgore jl2005bcd-camerabibliotheek Theodore Kilgore Vergrendelen van toetsen is mislukt.verlieslooslaag (320x240)lage compressie, mRAWmRAW + grote, fijne JPEGmRAW + grote, normale JPEGmRAW + gemiddelde, fijne JPEGmRAW + gemiddelde, normale JPEGmRAW + kleine, fijne JPEGmRAW + kleine, normale JPEGgemiddelde compressie, menugeen status gerapporteerd.geennormaalniet beschikbaar: %suitaanaan + rodeogenreductieop accupccam600_init: Onverwachte fout: gp_port_read() gaf %d i.p.v. %dpccam600_close: Teruggekregen waarde was %d i.p.v. %dpccam600_get_file: Ontving index %d maar verwachtte index > %dpccam600_init: Verwachtte %d blokken, ontving %dpccam600_init: Verwachtte > %d blokken, ontving %dweergavevoeding is OKvoeding niet OKalleen-lezenlezen+schrijvengereedopnameRecursieve aanroepen worden door het sierra-stuurprogramma niet ondersteund. Neem contact op met %s.antirodeogenflits is uitgeschakeld. antirodeogenflits is ingeschakeld. rodeogenreductiesRAWsRAW + grote, fijne JPEGsRAW + grote, normale JPEGsRAW + gemiddelde, fijne JPEGsRAW + gemiddelde, normale JPEGsRAW + kleine, fijne JPEGsRAW + kleine, normale JPEGsRGBsRGB (natuur)sRGB (portret)sierra SPARClite-bibliotheek Scott Fritzinger Ondersteunt op 'sierra' gebaseerde digitale camera's, waaronder Olympus, Nikon, Epson, Pentax, and others. Met dank aan Data Engines (www.dataengines.com) voor het gebruik van hun Olympus C-3030Z voor de implementatie van USB-ondersteuning.spca50x-bibliotheek vAlgemeen sq905-stuurprogramma Theodore Kilgore Generisch sq905-stuurprogramma Theodore Kilgore Standaardsuperfijnsx330z is alleen USBtijd is ingesteldkan de initiële CRC-waarde niet raden ongedefinieerdOnverwacht datatype %ionbekend (0x%02x)onbekende compressie %d, onbekende resolutie %d) vCalendar1vCalendar2vCard2vCard3waarschuwing: CRC is niet gecontroleerd (lengte %d, waarde 0x%04x) ########## libgphoto2-2.5.9/po/hu.po0000644000175000001440000114177012623156272012130 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # Tamas Szanto , 2003. # msgid "" msgstr "" "Project-Id-Version: libgphoto2\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2003-02-14 11:11+0100\n" "Last-Translator: Tamas Szanto \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 #, fuzzy msgid "Picture Frame Configuration" msgstr "A kamera beállításai" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "A képek száma: %i\n" "A firmware verziószáma: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "A képformátum visszafejtése:\n" "Jeff Laing \n" "\n" "A weben talált dokumentáció alapján\n" "készült. A Vision engedélyével." #: camlibs/canon/canon.c:645 #, fuzzy, c-format msgid "Could not create directory %s." msgstr "Nem sikerült létrehozni a \\DCIM könyvtárat." #: camlibs/canon/canon.c:648 #, fuzzy, c-format msgid "Could not remove directory %s." msgstr "Nem sikerült létrehozni a \\DCIM könyvtárat." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "" #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" #: camlibs/canon/canon.c:2554 #, fuzzy, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "" "A(z) '%s' név (%i karakter) túl hosszú (%i karakter), legfeljebb 30 " "karaktert lehet használni." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "" #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Védett fájl." #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "" #: camlibs/canon/library.c:98 #, fuzzy msgid "Thumbnail" msgstr "Az elÅ‘nézeti kép mérete: %d\n" #: camlibs/canon/library.c:99 #, fuzzy msgid "Full Image" msgstr "Kép" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "" #: camlibs/canon/library.c:216 #, fuzzy msgid "Auto focus: one-shot" msgstr "Autofókuszálási hiba." #: camlibs/canon/library.c:217 #, fuzzy msgid "Auto focus: AI servo" msgstr "Autofókuszálási hiba." #: camlibs/canon/library.c:218 #, fuzzy msgid "Auto focus: AI focus" msgstr "Autofókuszálási hiba." #: camlibs/canon/library.c:219 #, fuzzy msgid "Manual focus" msgstr "Nincs kézikönyv" #: camlibs/canon/library.c:224 #, fuzzy msgid "Beep off" msgstr "LED-mód" #: camlibs/canon/library.c:225 #, fuzzy msgid "Beep on" msgstr "LED-mód" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 #, fuzzy msgid "Flash off" msgstr "Vakus mód" #: camlibs/canon/library.c:231 #, fuzzy msgid "Flash on" msgstr "Vakus mód" #: camlibs/canon/library.c:232 #, fuzzy msgid "Flash auto" msgstr "Vakus mód" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "" #: camlibs/canon/library.c:267 #, fuzzy msgid "Manual 2" msgstr "Nincs kézikönyv" #: camlibs/canon/library.c:268 #, fuzzy msgid "Far scene" msgstr "Fluoreszkáló" #: camlibs/canon/library.c:269 #, fuzzy msgid "Fast shutter" msgstr "Zársebesség (s)" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Szépia" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 #, fuzzy msgid "Portrait" msgstr "Kontraszt-" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Makró" #: camlibs/canon/library.c:277 msgid "BW" msgstr "" #: camlibs/canon/library.c:278 #, fuzzy msgid "PanFocus" msgstr "Fókusz" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 #, fuzzy msgid "Neutral" msgstr "Normál" #: camlibs/canon/library.c:282 #, fuzzy msgid "Long shutter" msgstr "A fókusz helyzete" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "" #: camlibs/canon/library.c:285 #, fuzzy msgid "Indoor" msgstr "Szabadban" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "" #: camlibs/canon/library.c:292 #, fuzzy msgid "Digital macro" msgstr "Digitális nagyítás" #: camlibs/canon/library.c:293 #, fuzzy msgid "MyColors" msgstr "színes" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" #: camlibs/canon/library.c:497 #, fuzzy, c-format msgid "Camera unavailable: %s" msgstr "Nem áll rendelkezésre kamera" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "A kamera kikapcsolása" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Hiba képrögzítéskor" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Nem sikerült lekérdezni a lemez nevét: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "A hiba oka nem ismert" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Nem sikerült lekérdezni a lemez jellemzÅ‘it: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "" #: camlibs/canon/library.c:777 #, fuzzy, c-format msgid "No audio file could be found for %s" msgstr "'%s' nevű fájl nem létezik a(z) '%s' könyvtárban." #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " Meghajtó: %s\n" " %11s bájt összesen\n" " %11s bájt szabad" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "AC adapterrÅ‘l" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "akkumulátorról" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "energiaszint: megfelelÅ‘" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "energiaszint: nem megfelelÅ‘" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "nem érhetÅ‘ el: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (a számítógép ideje %s%i másodperc)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "A kamera adatai:\n" " Típus: %s\n" " Tulajdonos: %s\n" "\n" "Energia: %s\n" "\n" "A flash-lemez adatai:\n" "%s\n" "\n" "IdÅ‘: %s\n" #: camlibs/canon/library.c:1145 #, fuzzy msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Meghajtóprogram a Canon PowerShot sorozathoz\n" "Wolfgang G. Reissnegger,\n" "Werner Almesberger,\n" "Edouard Lafargue,\n" "Philippe Marzouk,\n" "A5-kiegészítések: Ole W. Saastad\n" "Holger Klemm\n" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Hiba történt a fájl törlésekor" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Nem sikerült törölni a társított elÅ‘nézeti képet" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "" "57600-nál magasabb sebességet nem lehet használni ennél a kameránál " "feltöltéshez" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Nem sikerült lekérdezni a Flash meghajtó betűjelét" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 #, fuzzy msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "A feltöltés nem sikerült, nincs szabad könyvtárnév.\n" "A 999CANON könyvtár létezik, és található benne egy AUT 9999.JPG nevű kép." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Nem sikerült létrehozni a \\DCIM könyvtárat." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Nem sikerült létrehozni a célkönyvtárat." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "A kamera és a meghajtóprogram beállításai" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "A kamera beállításai" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 #, fuzzy msgid "Owner Name" msgstr "A tulajdonos neve" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 #, fuzzy msgid "Capture Size Class" msgstr "Az apertúra beállításai" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "ISO-sebesség" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 #, fuzzy msgid "Unknown" msgstr "Ismeretlen hiba" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 #, fuzzy msgid "Shooting mode" msgstr "Zársebesség (s)" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 #, fuzzy msgid "Shutter Speed" msgstr "Zársebesség (s)" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "Nagyítás" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "Apertúra" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Exponálási kompenzáció" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 #, fuzzy msgid "Image Format" msgstr "Dátumformátum" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Fókuszálási mód" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Vakus mód" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Hangjelzés" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 #, fuzzy msgid "Camera Actions" msgstr "A kamera beállításai" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 #, fuzzy msgid "Camera Status Information" msgstr "A kamera beállításai" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 #, fuzzy msgid "Camera Model" msgstr "%sA kamera típusa: %s\n" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Dátum és idÅ‘" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Hiba" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 #, fuzzy msgid "Firmware Version" msgstr "Firmware-revízió: %d.%d\n" #: camlibs/canon/library.c:1956 #, fuzzy msgid "Power" msgstr "NINCS energiajelzÅ‘ fény" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Meghajtó" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Az összes fájl kilistázása" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "A fájlnév megÅ‘rzése feltöltéskor" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Nem áll rendelkezésre kamera" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "A tulajdonos neve megváltozott" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "a tulajdonos nevét nem sikerült megváltoztatni" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "" #: camlibs/canon/library.c:2056 #, fuzzy msgid "ISO speed changed" msgstr "A tulajdonos neve megváltozott" #: camlibs/canon/library.c:2058 #, fuzzy msgid "Could not change ISO speed" msgstr "a tulajdonos nevét nem sikerült megváltoztatni" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "" #: camlibs/canon/library.c:2085 #, fuzzy msgid "Shooting mode changed" msgstr "Zársebesség (s)" #: camlibs/canon/library.c:2087 #, fuzzy msgid "Could not change shooting mode" msgstr "a tulajdonos nevét nem sikerült megváltoztatni" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "" #: camlibs/canon/library.c:2114 #, fuzzy msgid "Shutter speed changed" msgstr "Zársebesség (s)" #: camlibs/canon/library.c:2116 #, fuzzy msgid "Could not change shutter speed" msgstr "a tulajdonos nevét nem sikerült megváltoztatni" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 #, fuzzy msgid "Invalid aperture setting" msgstr "Az apertúra beállításai" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 #, fuzzy msgid "Aperture changed" msgstr "Az apertúra beállításai" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 #, fuzzy msgid "Could not change aperture" msgstr "a tulajdonos nevét nem sikerült megváltoztatni" #: camlibs/canon/library.c:2167 #, fuzzy msgid "Invalid exposure compensation setting" msgstr "Exponálási kompenzáció" #: camlibs/canon/library.c:2170 #, fuzzy msgid "Exposure compensation changed" msgstr "Exponálási kompenzáció" #: camlibs/canon/library.c:2172 #, fuzzy msgid "Could not change exposure compensation" msgstr "Exponálási kompenzáció" #: camlibs/canon/library.c:2194 #, fuzzy msgid "Invalid image format setting" msgstr "A kamera beállításai" #: camlibs/canon/library.c:2198 #, fuzzy msgid "Image format changed" msgstr "Védett kép." #: camlibs/canon/library.c:2200 #, fuzzy msgid "Could not change image format" msgstr "a tulajdonos nevét nem sikerült megváltoztatni" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "" #: camlibs/canon/library.c:2226 #, fuzzy msgid "Focus mode changed" msgstr "Fókuszálási mód" #: camlibs/canon/library.c:2228 #, fuzzy msgid "Could not change focus mode" msgstr "a tulajdonos nevét nem sikerült megváltoztatni" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "" #: camlibs/canon/library.c:2255 #, fuzzy msgid "Beep mode changed" msgstr "A tulajdonos neve megváltozott" #: camlibs/canon/library.c:2257 #, fuzzy msgid "Could not change beep mode" msgstr "a tulajdonos nevét nem sikerült megváltoztatni" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "" #: camlibs/canon/library.c:2276 #, fuzzy msgid "Could not change zoom level" msgstr "a tulajdonos nevét nem sikerült megváltoztatni" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "" #: camlibs/canon/library.c:2332 #, fuzzy msgid "Flash mode changed" msgstr "Compact Flash kártya" #: camlibs/canon/library.c:2334 #, fuzzy msgid "Could not change flash mode" msgstr "Nem sikerült lekérdezni a Flash meghajtó betűjelét" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "az idÅ‘ beállítva" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "az idÅ‘ beállítása nem sikerült" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "" "Nem támogatott porttípus (%i = 0x%x) van megadva. Nem lehet inicializálni a " "kamerát." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Az akkumulátor lemerült, a kamera kikapcsolt." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "HIBA: nem várt üzenet" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "HIBA: üzenettúlfutás" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "HIBA: nem megfelelÅ‘ sorrend" #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "HIBA: nem várt csomagtípus" #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "HIBA: hibás üzenetformátum" #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "HIBA: nem várt üzenet2" #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Fájl feltöltése..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Fájl letöltése..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "A sebesség megváltoztatása nem sikerült." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "A protokoll alapállapotba hozása..." #: camlibs/canon/serial.c:1311 #, fuzzy msgid "Camera OK." msgstr "A kamera OK.\n" #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Kamera keresése..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Kapcsolatfelvétel a kamerával..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Kommunikációs hiba (1)" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "A kamera nem válaszolt" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Nem felismerhetÅ‘ válasz" #: camlibs/canon/serial.c:1376 #, fuzzy, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "Detektálva: '%s'." #: camlibs/canon/serial.c:1384 #, fuzzy, c-format msgid "Unknown model \"%s\"" msgstr "Ismeretlen típus" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "Hibás EOT" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Kommunikációs hiba (2)" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Kommunikációs hiba (3)" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Sebességváltás...egy kis türelmet kérek..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "A sebesség megváltoztatása nem sikerült" #: camlibs/canon/serial.c:1454 #, fuzzy msgid "Error waiting for ACK during initialization, retrying" msgstr "" "A reinicializálás során hiba történt az ACK jelre való várakozás közben" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Nem jött ACK válasz az inicializálás közben" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Létrejött a kapcsolat a kamerával" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "" #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "ElÅ‘nézeti képek letöltése..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "" #: camlibs/canon/usb.c:236 #, fuzzy msgid "Could not establish initial contact with camera" msgstr "Nem sikerült felvenni a kapcsolatot a kamerával." #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "A kamera nem áll készen, több kameraazonosítási kísérlet nem sikerült: %s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, fuzzy, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "" "A kamera nem áll készen, több kameraazonosítási kísérlet nem sikerült: %s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Adatok fogadása..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "" #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" #: camlibs/canon/usb.c:2263 #, fuzzy, c-format msgid "Couldn't read from file \"%s\"" msgstr "Nem sikerült lekérdezni a lemez jellemzÅ‘it: %s" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "" #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 #, fuzzy msgid "File upload failed." msgstr "Fájl feltöltése..." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "A fájl túl nagy. A következÅ‘ feltöltési kísérlet elÅ‘tt érdemes ki- és " "bekapcsolni a kamerát." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "Detektálva: '%s'." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "" #: camlibs/casio/casio-qv.c:152 #, fuzzy, c-format msgid "Image type %d not supported" msgstr "A képtípus nem támogatott" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, fuzzy, c-format msgid "Image %s is delete protected." msgstr "Védett kép." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "" #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "A kamera beállításai" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, fuzzy, c-format msgid "Battery" msgstr "akkumulátor" #: camlibs/casio/casio-qv.c:275 #, fuzzy msgid "Brightness" msgstr "Az LCD fényereje" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 #, fuzzy msgid "Too bright" msgstr "SzerzÅ‘i jog" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 #, fuzzy msgid "Too dark" msgstr "Túl sötét a megvilágítás." #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "OK" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "A képtípus nem támogatott" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "A képek száma: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "Csak a gyökérkönyvtár használható - listázási kísérlet történt a(z) '%s' " "könyvtárra." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Nem sikerült lekérdezni a képek számát" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Nem sikerült lekérdezni a kép adatait" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "A felvétel típusa nem támogatott" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (az akkumulátor feltöltöttsége: %d%%)" #: camlibs/dimera/dimera3500.c:455 #, fuzzy, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 ver. %s %d/%d %d:%d\n" "%d kép található, kb. %d nagyfelbontású vagy %d alacsony felbontású\n" "A kamera jellemzÅ‘i: %s, %s, %s, %s\n" "A vaku: %s, %s és %s\n" "A pillanatnyi felbontás: %s\n" "A kamera ellátása: %s - %s\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Vaku" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 #, fuzzy msgid "No Flash" msgstr "NINCS vaku" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Duál írisz" #: camlibs/dimera/dimera3500.c:468 #, fuzzy msgid "No Dual Iris" msgstr "NINCS duál írisz" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "Felbontáskapcsoló" #: camlibs/dimera/dimera3500.c:470 #, fuzzy msgid "No Resolution Switch" msgstr "NINCS felbontáskapcsoló" #: camlibs/dimera/dimera3500.c:472 #, fuzzy msgid "No Power Light" msgstr "NINCS energiajelzÅ‘ fény" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "BE" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "KI" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "kész" #: camlibs/dimera/dimera3500.c:476 #, fuzzy msgid "Not ready" msgstr "NEM áll készen" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "feltöltöttségi mód" #: camlibs/dimera/dimera3500.c:478 #, fuzzy msgid "Not in fill mode" msgstr "NEM feltöltöttségi mód" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "alacsony (320x240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "magas (640x480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "külsÅ‘" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "belsÅ‘" #: camlibs/dimera/dimera3500.c:492 #, fuzzy msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* A képminÅ‘ség vagy az adatátvitel problémáit\n" " gyakran az alacsony tápfeszültség okozza.\n" "* A távolról készített képek átmenetileg a gép RAM-jába\n" " kerülnek, nem a Flash kártyára.\n" "* Az exponálási módot felvétel esetén\n" " az elÅ‘nézeti képet kezelÅ‘ rész állítja be.\n" "* A képminÅ‘ség jelenleg nem a lehetÅ‘ legjobbra van beállítva.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "Ez a szoftver a StarDot Technologies\n" "kereskedelmi szoftverfejlesztÅ‘\n" "csomagjával készült.\n" "\n" "SzerzÅ‘:\n" " Brian Beattie \n" "Hozzájárultak még:\n" " Chuck Homic \n" " A kamera képeinek RGB-re konvertálása\n" " Dan Fandrich \n" " Információ a protokollról, a nyers képformátumról,\n" " a gphoto2-átiratról\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Nem sikerült beolvasni egy képet a Flash kártyáról" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Elfogyott a memória" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "Kép letöltése..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Nem sikerült letölteni a képet" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "A felhasználó megszakította a letöltést" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Nem sikerült közvetlenül felvételt készíteni" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Exponálás" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 #, fuzzy msgid "Exposure level on preview" msgstr "Exponálásmérés" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Hiba történt a port megnyitásakor" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Nem sikerült alapállapotba hozni a kamerát" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Nem sikerült beállítani a kamera átviteli sebességét" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Az eszköz modemnek tűnik, nem kamerának" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "A fájlok kilistázása itt: '%s'..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "A könyvtárak listázása itt: '%s'..." #: camlibs/directory/directory.c:381 #, fuzzy, c-format msgid "Could not get information about '%s' (%s)." msgstr "Nem sikerült információt lekérdezni errÅ‘l: '%s' (%m)." #: camlibs/directory/directory.c:414 #, fuzzy, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Nem sikerült információt lekérdezni errÅ‘l: '%s' itt: '%s' (%m)." #: camlibs/directory/directory.c:462 #, fuzzy, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Nem sikerült módosítani a(z) '%s' fájl idejét itt: '%s' (%m)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "'%s' megnyitása nem sikerült." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" "A \"camera\" böngészése lehetÅ‘vé teszi a képek indexelését a merevlemezen." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "" "Könyvtárböngészési mód - készítette: Scott Fritzinger ." #: camlibs/directory/directory.c:671 #, fuzzy, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "" "Nem sikerült törölni a(z) '%s' fájlt a(z) '%s' könyvtárban (hibakód - %i: " "%m)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "A kamera csak %i bájtot küldött, de legalább %i bájtot kellett volna." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Nem sikerült felvenni a kapcsolatot a kamerával." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Nem várt adatok érkeztek (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "Hibás escape-szekvencia: 0x%02x helyett 0x%02x érkezett." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Hibás adatok - 0x%02x érkezett 0x%02x helyett." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "Hibás adatok - 0x%02x érkezett 0x%02x vagy 0x%02x helyett." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "Hibás ellenÅ‘rzőösszeg - 0x%02x érkezett 0x%02x helyett." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "A kamera nem fogadta el a parancsot." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "A kamera alapállapotba állt vissza." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "Nem várt bájt (0x%02x) érkezett a kamerától." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Letöltés..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "Nem sikerült %i bájtot lefoglalni az elÅ‘nézeti képek részére." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "Nem sikerült %i bájtot lefoglalni a kép letöltéséhez." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "A kamera nem fogadja el a(z) '%s' fájlnevet." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "Nem sikerült inicializálni a feltöltést (a kamera válasza: 0x%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "A kamera nem támogatja a(z) %i sebességet." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "Nem sikerült beállítani a(z) %i sebességet (a kamera válasza: %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Thierry Bousch fujiplay programja alapján\n" #: camlibs/fuji/library.c:319 #, fuzzy, c-format msgid "Bit rate %ld is not supported." msgstr "A(z) %i bitráta nem támogatott." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "A Fuji kamera beállításai" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Dátum és idÅ‘" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "Azonosító" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Verzió:" #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Típus:" #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "A rendelkezésre álló memória: " #: camlibs/gsmart300/library.c:166 #, fuzzy msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "\n" "Till Adam \n" "Támogatás a Mustek gSmart mini digitális kamerákhoz, több gphoto2 camlib " "modul és a Windows-meghajtó forráskódja alapján (ezt a Mustek bocsátotta " "rendelkezésre).\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Nem támogatott porttípus: %d. Ez a meghajtó csak USB-alapú kamerákkal " "működik.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "A kamerát nem sikerült alapállapotba hozni.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, fuzzy, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "A kamera csak az utolsó felvétel törlését teszi lehetÅ‘vé. Jelen pillanatban " "ennek neve: '%s'." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/jamcam/jamcam.c:277 #, fuzzy, c-format msgid "Frames Taken : %4d\n" msgstr "%sFelvett képkocka: %i\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "jamcam programkönyvtár v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "Adatok letöltése..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "ElÅ‘nézeti képek letöltése..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "A JD11 kamera elég jól működik ezzel a meghajtóval.\n" "RS232 felület és 115 kbites kapcsolat szükséges képek áttöltéséhez.\n" "A meghajtó segítségével létrehozhatók:\n" "\n" " - elÅ‘nézeti képek (64x48 PGM formátumban)\n" " - teljes képek (640x480 PPM formátumban)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Meghajtóprogram a Jenoptik JD11 kamerához.\n" "A protokoll visszafejtése a WINE és az IDA segítségével történt." #: camlibs/jd11/jd11.c:186 #, fuzzy msgid "JD11 Configuration" msgstr "Beállítások" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Egyéb beállítások" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Az izzó exponálási ideje" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Színbeállítások" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "Vörös" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Zöld" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Kék" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "Compact Flash kártya" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "A Kodak DC120 kamera a KDC nevű fájlformátumot használja képek tárolásához. " "A kameráról letöltött képek megtekintéséhez szükség van a \"kdc2tiff\" " "programra, mely letölthetÅ‘ innen: http://kdc2tiff.sourceforge.net" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Kodak DC120 programkönyvtár\n" "Scott Fritzinger \n" "Programkönyvtár a Kodak DC120 kamera kezeléséhez\n" "(sokak kérésére)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Adatok lekérdezése..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "Várakozás a művelet befejezÅ‘désére..." #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Fájl" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Fájltípus" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Fájlfelbontás" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Fájltömörítés" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Alacsony (a legjobb minÅ‘ség)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Közepes (jobb minÅ‘ség)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "Magas (jó minÅ‘ség)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Rögzítés" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Exponálási kompenzáció" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Automatikus" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Kényszerítés" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Nincs" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Vörösszem-vaku" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Be" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Ki" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Egyéb" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "A kamera órájának beállítása" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "A csatlakozó sebessége" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Kötetnév" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Formázáskor beállítható név." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "A Compact Flash kártya formázása" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "A kártya leformázása és kötetnév beállítása." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Nyomkövetés" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "ElÅ‘re megadott parancs végrehajtása\n" "paraméterekkel." #: camlibs/kodak/dc210/dc210.c:498 #, fuzzy, c-format msgid "Pictures in camera: %d\n" msgstr "A kamera memóriája: %d Mbit.\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:506 #, fuzzy, c-format msgid "Total pictures taken: %d\n" msgstr "A felvett képek száma: %d, a vakuvillanások száma: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, fuzzy, c-format msgid "Total flashes fired: %d\n" msgstr "A felvett képek száma: %d, a vakuvillanások száma: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, fuzzy, c-format msgid "Firmware: %d.%d\n" msgstr "Firmware-revízió: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, fuzzy, c-format msgid "Filetype: JPEG (" msgstr "Fájltípus" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "" #: camlibs/kodak/dc210/dc210.c:527 #, fuzzy, c-format msgid "low compression, " msgstr "Fájltömörítés" #: camlibs/kodak/dc210/dc210.c:529 #, fuzzy, c-format msgid "medium compression, " msgstr "Fájltömörítés" #: camlibs/kodak/dc210/dc210.c:531 #, fuzzy, c-format msgid "high compression, " msgstr "Fájltömörítés" #: camlibs/kodak/dc210/dc210.c:533 #, fuzzy, c-format msgid "unknown compression %d, " msgstr "Fájltömörítés" #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:556 #, fuzzy, c-format msgid "AC adapter is connected.\n" msgstr "A lencse nincs bekötve\n" #: camlibs/kodak/dc210/dc210.c:558 #, fuzzy, c-format msgid "AC adapter is not connected.\n" msgstr "A lencse nincs bekötve\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:580 #, fuzzy, c-format msgid "Unknown zoom mode %d\n" msgstr "Ismeretlen típus" #: camlibs/kodak/dc210/dc210.c:586 #, fuzzy, c-format msgid "Exposure compensation: %s\n" msgstr "Exponálási kompenzáció" #: camlibs/kodak/dc210/dc210.c:588 #, fuzzy, c-format msgid "Exposure compensation: %d\n" msgstr "Exponálási kompenzáció" #: camlibs/kodak/dc210/dc210.c:593 #, fuzzy, c-format msgid "Flash mode: auto, " msgstr "Vakus mód" #: camlibs/kodak/dc210/dc210.c:595 #, fuzzy, c-format msgid "Flash mode: force, " msgstr "Vakus mód" #: camlibs/kodak/dc210/dc210.c:597 #, fuzzy, c-format msgid "Flash mode: off\n" msgstr "Vakus mód" #: camlibs/kodak/dc210/dc210.c:599 #, fuzzy, c-format msgid "Unknown flash mode %d, " msgstr "Ismeretlen típus" #: camlibs/kodak/dc210/dc210.c:607 #, fuzzy, c-format msgid "red eye flash on.\n" msgstr "Vörösszem-vaku" #: camlibs/kodak/dc210/dc210.c:610 #, fuzzy, c-format msgid "red eye flash off.\n" msgstr "Vörösszem-vaku" #: camlibs/kodak/dc210/dc210.c:615 #, fuzzy, c-format msgid "No card in camera.\n" msgstr "Hiba történt a kamera megnyitásakor.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "A programkönyvtár tesztelése egy Kodak DC 215 Zoom kamerával történt. Lehet, " "hogy nem működik a DC 200 és DC 210 kamerákkal. Ha Ön ilyennel rendelkezik, " "kérem írjon e-mailt a koltan@gmx.de címre, és írja meg, milyen hibákat " "tapasztalt, vagy hibátlan-e a működés." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Kamerakezelési programkönyvtár a Kodak DC215 Zoom kamerához.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "Várakozás..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "1. paraméter" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "2. paraméter" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "3. paraméter" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Típus: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "A firmware verziószáma: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Az akkumulátor állapota: %s, AC adapter: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "A képek száma: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "Megmaradt hely: magas (%d), közepes (%d), alacsony (%d)\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "A memóriakártya állapota (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "A felvett képek száma: %d, a vakuvillanások száma: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Kodak DC240 programkönyvtár\n" "Scott Fritzinger és Hubert Figuiere \n" "Programkönyvtár a Kodak DC240, DC280, DC3400 és DC5000 kamerák kezeléséhez.\n" "Újraírva és felfrissítve a gPhoto2-höz." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Gyenge" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Üres" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Érvénytelen" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Nem használt" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "Használt" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "A kártya meg van nyitva" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "A kártya nincs megnyitva" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "A kértya nincs megformázva" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Nincs kártya" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "Jelenleg még tart egy művelet, és a kamera egyszerre csak egy művelet " "végzését teszi lehetÅ‘vé. Kérem várja meg a művelet befejezÅ‘dését." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "a kamera inaktív volt több mint 9 másodpercig, újrainicializálás.\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Ismert problémák:\n" "\n" "1. A Kodak DC3200 típusokat újra kell inicializálni, ha 10 másodpercig nem " "kapnak semmiylen parancsot. Ha azt veszi észre, hogy a kamera nem válaszol, " "válassza ki újból a kamerát, melynek hatására megtörténik az " "újrainicializálás." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Kodak DC3200 meghajtó\n" "Donn Morrison \n" "\n" "Várom a kérdéseket, észrevételeket." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Fókuszálási hiba." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Ãriszhiba." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Strobe-hiba." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "Hibás EEPROM-ellenÅ‘rzőösszeg." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "BelsÅ‘ hiba (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "BelsÅ‘ hiba (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Nincs behelyezve kártya." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "A kártya nem támogatott." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "A kártyát eltávolították a hozzáférés közben." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Egy képszám érvénytelen." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "A kártya nem írható." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "A kártya írásvédett." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "Nem maradt szabd hely a kártyán." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Védett kép." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "Túl sötét a megvilágítás." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Autofókuszálási hiba." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Rendszerhiba." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Nem megengedett paraméter." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "A parancs nem szakítható félbe." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "A nemzetköziesítési adat túl hosszú." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "A nemzetköziesítési adat hibás." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Nem támogatott parancs." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "Más parancs fut." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Hibás parancssorrend." #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Ismeretlen hiba." #: camlibs/konica/konica.c:137 #, fuzzy, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "A kamera nem értelmezhetÅ‘ hibaüzenetet küldött. Kérjük küldje el az alábbi " "adatokat a címre a hiba " "bekövetkezésének részletes leírásával: (0x%x,0x%x). Köszönjük a segítségét!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "A fájllista lekérdezése..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "A különféle sebességek tesztelése..." #: camlibs/konica/library.c:338 #, fuzzy msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "Nem sikerült felvenni a kapcsolatot a kamerával. EllenÅ‘rizze, hogy össze van-" "e kötve a számítógéppel és be van-e kapcsolva." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "%i képet nem sikerült letörölni, mert védettek" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Típus: %s\n" "Sorozatszám: %s,\n" "Hardververzió: %i.%i\n" "Szoftververzió: %i.%i\n" "Tesztelési szoftververzió: %i.%i\n" "Név: %s,\n" "Gyártó: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Konica programkönyvtár\n" "Lutz Mueller \n" "Az összes Konica és néhány HP kamera támogatása." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Információk lekérdezése..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Konica-beállítások" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Megmaradó beállítások" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "Adjon hangjelzést a kamera kép felvételekor?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "A saját idÅ‘zítÅ‘ ideje" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Automatikus lekapcsolási idÅ‘" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Diavetítési idÅ‘köz" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Felbontás" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Alacsony (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Közepes (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Magas (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Nemzetköziesítés" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Nyelv" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Nincs kiválasztva" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "TV-kimeneti formátum" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "A TV-menü ne jelenjen meg" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Dátumformátum" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "Hónap/nap/év" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "Nap/hónap/év" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Év/hónap/nap" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Munkafolyamathoz kötött beállítások" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Be, vörösszemeffektus-csökkentés" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Automatikus, vörösszemeffektus-csökkentés" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Fókusz" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "Rögzített" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Nem megmaradó beállítások" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "Saját idÅ‘zítÅ‘" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "Saját idÅ‘zítÅ‘ (csak a következÅ‘ képnél)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Normál" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Nemzetköziesítési adat nem található itt: '%s'" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "A nemzetköziesítési fájl túl hosszú." #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "" #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "" #: camlibs/konica/qm150.c:399 #, fuzzy, c-format msgid "Image type %d is not supported by this camera !" msgstr "A képtípus nem támogatott" #: camlibs/konica/qm150.c:453 #, fuzzy, c-format msgid "Can't delete image %s." msgstr "A(z) %s kép törlése." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "" #: camlibs/konica/qm150.c:517 #, fuzzy msgid "Uploading image..." msgstr "Fájl feltöltése..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "" #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "" #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "" #: camlibs/konica/qm150.c:653 #, fuzzy msgid "No answer from the camera." msgstr "A kamera nem válaszolt" #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Alacsony" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Közepes" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Magas" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "" #: camlibs/konica/qm150.c:957 #, fuzzy msgid "White balance" msgstr "Fehéregyensúly" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 #, fuzzy msgid "Office" msgstr "Ki" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 #, fuzzy msgid "Daylight" msgstr "Égbolt" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 #, fuzzy msgid "Color" msgstr "színes" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 #, fuzzy msgid "Light" msgstr "Magas" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 #, fuzzy msgid "Deep" msgstr "Hangjelzés" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 #, fuzzy msgid "Black and White" msgstr "Fekete-fehér" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 #, fuzzy msgid "Play mode" msgstr "Vakus mód" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 #, fuzzy msgid "Record mode" msgstr "Felvételi mód" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "Lejátszás" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Felvétel" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" #: camlibs/largan/lmini/largan.c:228 #, fuzzy msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Largan meghajtó\n" "Hubert Figuiere \n" "\n" "Largan Lmini kamerák kezeléséhez.\n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Típus:\t\t\tMinolta Dimage V (%s)\n" "Hardver-verzió:\t%s\n" "Firmware-verzió:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Host-mód:\t\t%s\n" "Exponálási korrekció:\t%s\n" "Exponálási adatok:\t\t%d\n" "Érvényességi dátum:\t\t%s\n" "Dátum:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Az idÅ‘zítÅ‘ beállítása:\t\t%s\n" "MinÅ‘ségi beállítás:\t%s\n" "Lejátszási/felvételi mód:\t%s\n" "Kártyaazonosító-érvényesség:\t\t%s\n" "Kártyaazonosító:\t\t%d\n" "Vakuzási mód:\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "távoli" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "helyi" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Igen" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "Nem" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Finom" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Standard" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Automatikus\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Vaku mindig\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "A vaku letiltása\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Érvénytelen érték ( %d )\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "Feltöltöttségi szint:\t\t%s\n" "A képek száma:\t%d\n" "Minimális megmaradt kapacitás:\t%d\n" "Elfoglaltság:\t\t\t%s\n" "vaku-feltöltés:\t\t%s\n" "A lencse állapota:\t\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "Nincs tele" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Tele" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "Elfoglalt" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "Üresjárat" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "Töltés" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Kész" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Normál\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "A lencse iránya nem felel meg a vakuénak\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "A lencse nincs bekötve\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "Hibás értékű lencse-állapotkód: %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "A kártya állapota:\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Ãrásvédett" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "Nem megfelelÅ‘ kártya" #: camlibs/minolta/dimagev/dimagev.c:406 #, fuzzy, c-format msgid "Bad value for card status %d" msgstr "Hibás kártya-állapotkód: %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Minolta Dimage V programkönyvtár\n" "%s\n" "Gus Hartmann \n" "Köszönet a Minoltának a specifikáció megadásáért!" #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Vaku: automatikus (vörösszem-csökkentés)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Vaku: automatikus" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Vaku: be (vörösszem-csökkentés)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Vaku: be" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Vaku: ki" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Vaku: nem definiált" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "A Mustek MDC800 áttekintése:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "nincs állapotinformáció." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "Compact Flash kártya detektálva\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Nem található Compact Flash kártya\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "A jelenlegi mód: kameramód\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Jelenlegi üzemmód: lejátszás\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Az akkumulátor szintje megfelelÅ‘." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Az akkumulátor szintje alacsony." #: camlibs/mustek/mdc800.c:264 #, fuzzy msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Mustek MDC-800 gPhoto2 programkönyvtár\n" "Henning Zabel \n" "A gphoto2-átirat Marcus Meissner munkája\n" "Soros és USB-csatlakozós gépeket is támogat." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "Coolshot programkönyvtár v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "A kapcsolat megszűnt a kamerával." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "A(z) %s kép letöltése." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Kép feltöltése: %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, fuzzy, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "A fájlméret %i bájt. A feltölthetÅ‘ fájlok maximális mérete: %i bájt." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Feltöltés..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "A(z) %s kép törlése." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1000 gPhoto programkönyvtár\n" "Mariusz Zynel \n" "\n" "Fredrik Roubert és\n" "Galen Brooks \n" "dc1000 nevű programja alapján." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "%s letöltése." #: camlibs/panasonic/dc1580.c:627 #, fuzzy msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1580 gPhoto programkönyvtár\n" "Mariusz Zynel \n" "\n" "Fredrik Roubert és\n" "Galen Brooks \n" "dc1000 nevű programja alapján." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "'%s' letöltése..." #: camlibs/panasonic/l859/l859.c:582 #, fuzzy msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "A Panasonic a PHOTOSHOT nevű felvételi technológiáját ennél a Palmcorder-" "sorozatnál alkalmazta elÅ‘ször. A képek JPEG formátumban tárolódnak egy Flash-" "kártyán, soros porton keresztül lehet átvinni Å‘ket számítógépre. A képek " "kétféle felbontásban készülhetnek: normálban (320x240) és finomban " "(640x480). A CCD eszköz - mely a képeket a lencsékrÅ‘l digitális formában " "leveszi - 300K-s, ezért a gép csak alacsony minÅ‘ségű képek készítésére " "alkalmas." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Ismert problémák:\n" "\n" "Ha adatátviteli problémák adódnak, hozza alaphelyzetbe a kamerát és indítsa " "újra az alkalmazást. A meghajtó nem elég robosztus ahhoz, hogy az ilyen " "helyzeteket automatikusan megoldja, különösen akkor, ha a sebesség nagyobb " "9600-nál és a kamera lezárása nem a szokott módon történt." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder-meghajtó\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "Fájl letöltése..." #: camlibs/pccam600/library.c:249 #, fuzzy msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" " SzerzÅ‘: Peter Kajberg\n" " E-mail: \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "KépminÅ‘ség" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Képméret" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "A vaku beállításai" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Automatikus kikapcsolás (perc)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Információ" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "normál" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "finom" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "nagyon finom" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "automatikus" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "be" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "ki" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "lejátszás" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "felvétel" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "menü" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "akkumulátor" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "a/c adapter" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Nem várt fejléc érkezett (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Nem várt válasz érkezett" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Hibás ellenÅ‘rzőösszeg" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "A kamera nem fogadta el a parancsot." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "A kamera a vártnál több bájtot küldött (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "A(z) %i (= 0x%x) azonosítójú kép adatainak lekérdezése történt, de a gép " "a(z) %i azonosítójú kép adatait adta vissza" #: camlibs/polaroid/pdc700.c:916 #, fuzzy, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "%i bájtnyi adat érkezett ismeretlen képformátumban. Kérem küldje el a hiba " "körülményeinek leírását a címre." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Kamera" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "Mennyi idÅ‘ után kapcsoljon ki a kamera?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Kép" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Dátum: %i/%02i/%02i %02i:%02i:%02i\n" "A képek száma: %i\n" "Szabad képhelyek: %i\n" "Szoftververzió: %s\n" "Baud-ráta: %s\n" "Memória: %i MB\n" "Kameramód: %s\n" "KépminÅ‘ség: %s\n" "A vaku beállítása: %s\n" "Információ: %s\n" "IdÅ‘zítÅ‘: %s\n" "LCD: %s\n" "Automatikus kikapcsolás: %i perc után\n" "Ãramellátás: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "A kért porttípust (%i) nem támogatja ez a meghajtó." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 #, fuzzy msgid "Sorry, your Canon camera does not support Canon capture" msgstr "A kamera nem támogatja fájlnevek cserélését." #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, fuzzy, c-format msgid "Unknown value %04x" msgstr "Ismeretlen fájltípus: %i." #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, fuzzy, c-format msgid "Unknown value %04d" msgstr "Ismeretlen fájltípus: %i." #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, fuzzy, c-format msgid "unexpected datatype %i" msgstr "HIBA: nem várt csomagtípus" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 #, fuzzy msgid "Manual" msgstr "Nincs kézikönyv" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 #, fuzzy msgid "Automatic" msgstr "Automatikus\n" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 #, fuzzy msgid "One-push Automatic" msgstr "Automatikus\n" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Tungsten" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "FelhÅ‘s" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 #, fuzzy msgid "Preset" msgstr "portugál" #: camlibs/ptp2/config.c:1415 #, fuzzy msgid "Fluorescent Lamp 1" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:1416 #, fuzzy msgid "Fluorescent Lamp 2" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:1417 #, fuzzy msgid "Fluorescent Lamp 3" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:1418 #, fuzzy msgid "Fluorescent Lamp 4" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:1419 #, fuzzy msgid "Fluorescent Lamp 5" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "" #: camlibs/ptp2/config.c:1430 #, fuzzy msgid "Fluorescent: Warm White" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:1431 #, fuzzy msgid "Fluorescent: Cold White" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:1432 #, fuzzy msgid "Fluorescent: Day White" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:1433 #, fuzzy msgid "Fluorescent: Daylight" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 #, fuzzy msgid "JPEG Fine" msgstr "JPEG" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 #, fuzzy msgid "JPEG Normal" msgstr "Normál" #: camlibs/ptp2/config.c:1443 #, fuzzy msgid "RAW + JPEG Fine" msgstr "JPEG" #: camlibs/ptp2/config.c:1444 #, fuzzy msgid "RAW + JPEG Normal" msgstr "Normál" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "" #: camlibs/ptp2/config.c:1452 #, fuzzy msgid "Self-timer" msgstr "Saját idÅ‘zítÅ‘" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "" #: camlibs/ptp2/config.c:1735 #, fuzzy msgid "undefined" msgstr "nagyon finom" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 #, fuzzy msgid "Undefined" msgstr "PTP - nem definiált hiba" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "egyéni" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "" #: camlibs/ptp2/config.c:1780 #, fuzzy msgid "Flash Off" msgstr "Vakus mód" #: camlibs/ptp2/config.c:1788 #, fuzzy msgid "red eye suppression" msgstr "Be, vörösszemeffektus-csökkentés" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "" #: camlibs/ptp2/config.c:1790 #, fuzzy msgid "auto + red eye suppression" msgstr "Automatikus, vörösszemeffektus-csökkentés" #: camlibs/ptp2/config.c:1791 #, fuzzy msgid "on + red eye suppression" msgstr "Be, vörösszemeffektus-csökkentés" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 #, fuzzy msgid "Commander" msgstr "Hibás parancssorrend." #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 #, fuzzy msgid "Auto Aperture" msgstr "Apertúra" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 #, fuzzy msgid "Full Manual" msgstr "Nincs kézikönyv" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 #, fuzzy msgid "MF (fixed)" msgstr "Rögzített" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "" #: camlibs/ptp2/config.c:1947 #, fuzzy msgid "User defined 1" msgstr "nagyon finom" #: camlibs/ptp2/config.c:1948 #, fuzzy msgid "User defined 2" msgstr "nagyon finom" #: camlibs/ptp2/config.c:1949 #, fuzzy msgid "User defined 3" msgstr "nagyon finom" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 #, fuzzy msgid "Multiple Focusing Points, Auto" msgstr "Fókuszálási hiba." #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 #, fuzzy msgid "Multiple Focusing Points (Right)" msgstr "Fókuszálási hiba." #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 #, fuzzy msgid "Multiple Focusing Points (Left)" msgstr "Fókuszálási hiba." #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 #, fuzzy msgid "Large" msgstr "Kép" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 #, fuzzy msgid "Medium 1" msgstr "Közepes" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 #, fuzzy msgid "Medium 2" msgstr "Közepes" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 #, fuzzy msgid "Medium 3" msgstr "Közepes" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "" #: camlibs/ptp2/config.c:2092 #, fuzzy msgid "Setting 4" msgstr "A vaku beállításai" #: camlibs/ptp2/config.c:2093 #, fuzzy msgid "Setting 5" msgstr "A vaku beállításai" #: camlibs/ptp2/config.c:2094 #, fuzzy msgid "Setting 6" msgstr "A vaku beállításai" #: camlibs/ptp2/config.c:2095 #, fuzzy msgid "Setting 7" msgstr "A vaku beállításai" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, fuzzy, c-format msgid "Unknown %d" msgstr "Ismeretlen hiba" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 #, fuzzy msgid "Factory Default" msgstr "Égbolt" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "" #: camlibs/ptp2/config.c:2246 msgid "Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "" #: camlibs/ptp2/config.c:2272 msgid "RAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2273 msgid "mRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2274 msgid "sRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2275 msgid "RAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2276 msgid "mRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2277 msgid "sRAW + Tiny JPEG" msgstr "" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "" #: camlibs/ptp2/config.c:2305 #, fuzzy msgid "Timer 10 sec" msgstr "távoli" #: camlibs/ptp2/config.c:2306 #, fuzzy msgid "Timer 2 sec" msgstr "távoli" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, fuzzy, c-format msgid "Auto ISO" msgstr "Automatikus" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, fuzzy, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, fuzzy, c-format msgid "%d Multi Frame Noise Reduction" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:2453 #, fuzzy msgid "Multi Frame Noise Reduction" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Saját idÅ‘zítÅ‘" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "" #: camlibs/ptp2/config.c:2868 #, fuzzy msgid "Automatic (No Flash)" msgstr "Automatikus\n" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 msgid "Sports Action" msgstr "" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 #, fuzzy msgid "Picture Effect" msgstr "Képbeállítások" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "" #: camlibs/ptp2/config.c:2893 #, fuzzy msgid "Pet Portrait" msgstr "Kontraszt-" #: camlibs/ptp2/config.c:2894 #, fuzzy msgid "Candlelight" msgstr "Égbolt" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "" #: camlibs/ptp2/config.c:3032 #, fuzzy msgid "Flourescent" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 #, fuzzy msgid "Effects" msgstr "Felvételi mód" #: camlibs/ptp2/config.c:3075 msgid "U1" msgstr "" #: camlibs/ptp2/config.c:3076 msgid "U2" msgstr "" #: camlibs/ptp2/config.c:3104 #, fuzzy msgid "Back Light" msgstr "Magas" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 #, fuzzy msgid "Timer" msgstr "Saját idÅ‘zítÅ‘" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 #, fuzzy msgid "Delayed Remote" msgstr "távoli" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "" #: camlibs/ptp2/config.c:3125 #, fuzzy msgid "Selftimer 2s" msgstr "Saját idÅ‘zítÅ‘" #: camlibs/ptp2/config.c:3126 #, fuzzy msgid "Selftimer 10s" msgstr "Saját idÅ‘zítÅ‘" #: camlibs/ptp2/config.c:3127 msgid "Bracketing C 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3128 msgid "Bracketing C 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3129 msgid "Bracketing C 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3130 msgid "Bracketing C 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3131 msgid "Bracketing C 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3132 msgid "Bracketing S 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3133 msgid "Bracketing S 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3134 msgid "Bracketing S 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3135 msgid "Bracketing S 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3136 msgid "Bracketing S 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3137 msgid "Bracketing WB Lo" msgstr "" #: camlibs/ptp2/config.c:3138 msgid "Bracketing WB Hi" msgstr "" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 #, fuzzy msgid "Centre-spot" msgstr "Rögzítés" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "" #: camlibs/ptp2/config.c:3154 msgid "Group-dynamic AF" msgstr "" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "" #: camlibs/ptp2/config.c:3165 msgid "3D Tracking" msgstr "" #: camlibs/ptp2/config.c:3171 #, fuzzy msgid "sRGB (portrait)" msgstr "Kontraszt-" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "" #: camlibs/ptp2/config.c:3226 #, fuzzy, c-format msgid "Unknown value 0x%04x" msgstr "ismeretlen (0x%02x)" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 #, fuzzy msgid "Centre" msgstr "Rögzítés" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 #, fuzzy msgid "Bottom" msgstr "Nagyítás" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 #, fuzzy msgid "Right" msgstr "Magas" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "" #: camlibs/ptp2/config.c:3266 #, fuzzy msgid "Automatic Flash" msgstr "Automatikus\n" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 #, fuzzy msgid "Fill flash" msgstr "Vaku" #: camlibs/ptp2/config.c:3269 #, fuzzy msgid "Red-eye automatic" msgstr "Vörösszemhatás-csökkentés" #: camlibs/ptp2/config.c:3270 #, fuzzy msgid "Red-eye fill" msgstr "Vörösszem-vaku" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 #, fuzzy msgid "External sync" msgstr "külsÅ‘" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 #, fuzzy msgid "Auto Slow Sync" msgstr "Lassú szinkronizálás" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 #, fuzzy msgid "Red-eye Reduction + Slow Sync" msgstr "Vörösszemhatás-csökkentés" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3277 #, fuzzy msgid "Red-eye reduction" msgstr "Vörösszemhatás-csökkentés" #: camlibs/ptp2/config.c:3278 #, fuzzy msgid "Red-eye reduction with slow sync" msgstr "Vörösszemhatás-csökkentés" #: camlibs/ptp2/config.c:3279 #, fuzzy msgid "Slow sync" msgstr "Lassú szinkronizálás" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Lassú szinkronizálás" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Fekete-fehér" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "" #: camlibs/ptp2/config.c:3298 #, fuzzy msgid "Color sketch" msgstr "Színmód" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "" #: camlibs/ptp2/config.c:3302 #, fuzzy msgid "High key" msgstr "Magas" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 #, fuzzy msgid "infinite" msgstr "Végtelen/halszem" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "" #: camlibs/ptp2/config.c:3772 #, fuzzy msgid "Normal-area AF" msgstr "Normál" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 #, fuzzy msgid "Manual Focus" msgstr "Nincs kézikönyv" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 #, fuzzy msgid "AE/AF Lock" msgstr "Fókuszálási mód" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 #, fuzzy msgid "1 minute" msgstr "41 mm" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 #, fuzzy msgid "10 minutes" msgstr "41 mm" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "" #: camlibs/ptp2/config.c:3828 #, fuzzy msgid "8 mm" msgstr "58 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "" #: camlibs/ptp2/config.c:3842 #, fuzzy msgid "1" msgstr "1x" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 #, fuzzy msgid "2" msgstr "2x" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 #, fuzzy msgid "4" msgstr "4x" #: camlibs/ptp2/config.c:3845 #, fuzzy msgid "8" msgstr "8x" #: camlibs/ptp2/config.c:3846 #, fuzzy msgid "15" msgstr "1,5" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "" #: camlibs/ptp2/config.c:3855 #, fuzzy msgid "20s" msgstr "2,0" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 #, fuzzy msgid "15s" msgstr "1,5" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "" #: camlibs/ptp2/config.c:3858 #, fuzzy msgid "10s" msgstr "1,0" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "" #: camlibs/ptp2/config.c:3916 #, fuzzy msgid "15 minutes" msgstr "41 mm" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 #, fuzzy msgid "Sharper" msgstr "Töltés" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 #, fuzzy msgid "Direct Print" msgstr "A könyvtár már létezik" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 #, fuzzy msgid "Medium Low" msgstr "Közepes" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 #, fuzzy msgid "Medium high" msgstr "Közepes" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 #, fuzzy msgid "Low contrast" msgstr "Kontraszt-" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 #, fuzzy msgid "Medium High" msgstr "Közepes" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "" #: camlibs/ptp2/config.c:3976 #, fuzzy msgid "Automatic Macro" msgstr "Automatikus\n" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 #, fuzzy msgid "AI Focus" msgstr "Fókusz" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 #, fuzzy msgid "Fluorescent H" msgstr "Fluoreszkáló" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 #, fuzzy msgid "Custom Whitebalance PC-1" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 #, fuzzy msgid "Custom Whitebalance PC-2" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 #, fuzzy msgid "Custom Whitebalance PC-3" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "" #: camlibs/ptp2/config.c:4118 #, fuzzy msgid "Low sharpening" msgstr "Töltés" #: camlibs/ptp2/config.c:4120 #, fuzzy msgid "Black & white" msgstr "Fekete-fehér" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 #, fuzzy msgid "AE & Flash" msgstr "NINCS vaku" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 #, fuzzy msgid "AE only" msgstr "kész" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 #, fuzzy msgid "Flash only" msgstr "Vakus mód" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 #, fuzzy msgid "WB bracketing" msgstr "Exponálásmérés" #: camlibs/ptp2/config.c:4221 #, fuzzy msgid "ADL bracketing" msgstr "Exponálásmérés" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 #, fuzzy msgid "Remote Mirror Up" msgstr "Dátum és idÅ‘" #: camlibs/ptp2/config.c:4248 #, fuzzy msgid "Application Mode 0" msgstr "Működési mód" #: camlibs/ptp2/config.c:4249 #, fuzzy msgid "Application Mode 1" msgstr "Működési mód" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "" #: camlibs/ptp2/config.c:4286 #, fuzzy msgid "Low sensitivity" msgstr "Alacsony (a legjobb minÅ‘ség)" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "" #: camlibs/ptp2/config.c:4378 #, fuzzy msgid "Flash/speed" msgstr "Vakus mód" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "" #: camlibs/ptp2/config.c:4380 #, fuzzy msgid "Flash/aperture" msgstr "Apertúra" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 #, fuzzy msgid "NEF+Fine" msgstr "Finom" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 #, fuzzy msgid "NEF+Normal" msgstr "Normál" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "" #: camlibs/ptp2/config.c:4575 #, fuzzy msgid "RAW+JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "" #: camlibs/ptp2/config.c:4642 #, fuzzy msgid "Optimal quality" msgstr "KépminÅ‘ség" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "" #: camlibs/ptp2/config.c:4695 #, fuzzy msgid "3 (Normal)" msgstr "Normál" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "" #: camlibs/ptp2/config.c:4780 msgid "Preview" msgstr "" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "" #: camlibs/ptp2/config.c:4788 #, fuzzy msgid "Bracketing burst" msgstr "Exponálásmérés" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "" #: camlibs/ptp2/config.c:4791 #, fuzzy msgid "Spot metering" msgstr "PontmérÅ‘ mód (spot metering)" #: camlibs/ptp2/config.c:4792 #, fuzzy msgid "Playback" msgstr "Lejátszás" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "" #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "" #: camlibs/ptp2/config.c:4871 #, fuzzy msgid "Unknown value" msgstr "Ismeretlen hiba" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "" #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "" #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "" #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 #, fuzzy msgid "Press Full" msgstr "PTP - a tároló betelt" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 #, fuzzy msgid "Press 1" msgstr "portugál" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 #, fuzzy msgid "Press 2" msgstr "portugál" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 #, fuzzy msgid "Press 3" msgstr "portugál" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" #: camlibs/ptp2/config.c:5923 #, fuzzy msgid "Internal RAM" msgstr "belsÅ‘" #: camlibs/ptp2/config.c:5924 #, fuzzy msgid "Memory card" msgstr "Nincs kártya" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "" #: camlibs/ptp2/config.c:6092 #, fuzzy msgid "Display" msgstr "lejátszás" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "" #: camlibs/ptp2/config.c:6359 #, fuzzy msgid "Default gateway" msgstr "Égbolt" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "" #: camlibs/ptp2/config.c:6412 #, fuzzy msgid "List Wifi profiles" msgstr "Az összes fájl kilistázása" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "" #: camlibs/ptp2/config.c:6521 #, fuzzy msgid "Power Down" msgstr "NINCS energiajelzÅ‘ fény" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 #, fuzzy msgid "Focus Lock" msgstr "Fókuszálási mód" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 #, fuzzy msgid "Bulb Mode" msgstr "LED-mód" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 #, fuzzy msgid "Movie Capture" msgstr "Rögzítés" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 #, fuzzy msgid "Serial Number" msgstr "%sSorozatszám: %s\n" #: camlibs/ptp2/config.c:6548 #, fuzzy msgid "Camera Manufacturer" msgstr "A kamera OK.\n" #: camlibs/ptp2/config.c:6550 #, fuzzy msgid "Device Version" msgstr "Verzió:" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "" #: camlibs/ptp2/config.c:6556 #, fuzzy msgid "PTP Version" msgstr "Verzió:" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 #, fuzzy msgid "DPOF Version" msgstr "Verzió:" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 #, fuzzy msgid "AC Power" msgstr "Vakus mód" #: camlibs/ptp2/config.c:6559 #, fuzzy msgid "External Flash" msgstr "külsÅ‘" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 #, fuzzy msgid "Battery Level" msgstr "%sA telep élettartama: %i\n" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 #, fuzzy msgid "Camera Orientation" msgstr "A kamera beállításai" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 #, fuzzy msgid "Flash Open" msgstr "Vakus mód" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 #, fuzzy msgid "Flash Charged" msgstr "Compact Flash kártya" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 #, fuzzy msgid "Lens Name" msgstr "Lencsemód" #: camlibs/ptp2/config.c:6570 #, fuzzy msgid "Shutter Counter" msgstr "Zársebesség (s)" #: camlibs/ptp2/config.c:6571 #, fuzzy msgid "Available Shots" msgstr "A rendelkezésre álló memória: " #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6576 #, fuzzy msgid "Low Light" msgstr "Magas" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 #, fuzzy msgid "Light Meter" msgstr "Magas" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 #, fuzzy msgid "AF Locked" msgstr "Fókuszálási mód" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 #, fuzzy msgid "FV Locked" msgstr "Fókuszálási mód" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 #, fuzzy msgid "Camera Date and Time" msgstr "Dátum és idÅ‘" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 #, fuzzy msgid "Beep Mode" msgstr "LED-mód" #: camlibs/ptp2/config.c:6591 #, fuzzy msgid "Image Comment" msgstr "Képkiigazítás" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 #, fuzzy msgid "Enable Image Comment" msgstr "Képkiigazítás" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 #, fuzzy msgid "LCD Off Time" msgstr "Automatikus lekapcsolási idÅ‘" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 #, fuzzy msgid "Recording Media" msgstr "Felvételi mód" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 #, fuzzy msgid "Camera Output" msgstr "A kamera OK.\n" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "" #: camlibs/ptp2/config.c:6602 #, fuzzy msgid "EVF Mode" msgstr "LED-mód" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "SzerzÅ‘i jog" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 #, fuzzy msgid "Flicker Reduction" msgstr "Vörösszemhatás-csökkentés" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "" #: camlibs/ptp2/config.c:6613 #, fuzzy msgid "Focus Info" msgstr "Fókuszálási mód" #: camlibs/ptp2/config.c:6614 #, fuzzy msgid "Focus Area" msgstr "Fókuszálási mód" #: camlibs/ptp2/config.c:6615 #, fuzzy msgid "Auto Power Off" msgstr "Automatikus kikapcsolás (perc)" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 #, fuzzy msgid "Capture Target" msgstr "Az apertúra beállításai" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 #, fuzzy msgid "Image Format SD" msgstr "Dátumformátum" #: camlibs/ptp2/config.c:6634 #, fuzzy msgid "Image Format CF" msgstr "Dátumformátum" #: camlibs/ptp2/config.c:6636 #, fuzzy msgid "Image Format Ext HD" msgstr "Dátumformátum" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "ISO-sebesség" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 #, fuzzy msgid "ISO Auto" msgstr "Automatikus" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 #, fuzzy msgid "WhiteBalance" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6654 #, fuzzy msgid "WhiteBalance Adjust A" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6655 #, fuzzy msgid "WhiteBalance Adjust B" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6656 #, fuzzy msgid "WhiteBalance X A" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6657 #, fuzzy msgid "WhiteBalance X B" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 #, fuzzy msgid "Color Model" msgstr "Színmód" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 #, fuzzy msgid "Color Space" msgstr "Színmód" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6669 #, fuzzy msgid "Auto Focus Mode 2" msgstr "Fókuszálási mód" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 #, fuzzy msgid "Flash Compensation" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 #, fuzzy msgid "AEB Exposure Compensation" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:6685 #, fuzzy msgid "Nikon Flash Mode" msgstr "Vakus mód" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 #, fuzzy msgid "Flash Commander Mode" msgstr "Vakus mód" #: camlibs/ptp2/config.c:6687 #, fuzzy msgid "Flash Commander Power" msgstr "Vakus mód" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 #, fuzzy msgid "Flash Command Self Mode" msgstr "Vakus mód" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 #, fuzzy msgid "Flash Command Self Compensation" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 #, fuzzy msgid "Flash Command A Mode" msgstr "Vakus mód" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 #, fuzzy msgid "Flash Command A Compensation" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 #, fuzzy msgid "Flash Command B Mode" msgstr "Vakus mód" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 #, fuzzy msgid "Flash Command B Compensation" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 #, fuzzy msgid "AF Beep Mode" msgstr "LED-mód" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "" #: camlibs/ptp2/config.c:6702 msgid "Movie F-Number" msgstr "" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 #, fuzzy msgid "Focus Distance" msgstr "A fókusz helyzete" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "" #: camlibs/ptp2/config.c:6710 #, fuzzy msgid "Focus Mode 2" msgstr "Fókuszálási mód" #: camlibs/ptp2/config.c:6712 msgid "Continuous AF" msgstr "" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 #, fuzzy msgid "Effect Mode" msgstr "Felvételi mód" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 #, fuzzy msgid "Exposure Program" msgstr "Exponálásmérés" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 #, fuzzy msgid "Scene Mode" msgstr "LED-mód" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 #, fuzzy msgid "HDR Mode" msgstr "LED-mód" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "" #: camlibs/ptp2/config.c:6725 #, fuzzy msgid "Canon Shooting Mode" msgstr "PontmérÅ‘ mód (spot metering)" #: camlibs/ptp2/config.c:6726 #, fuzzy msgid "Canon Auto Exposure Mode" msgstr "Autoexponálási zárolás" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 #, fuzzy msgid "Drive Mode" msgstr "LED-mód" #: camlibs/ptp2/config.c:6728 #, fuzzy msgid "Picture Style" msgstr "Képbeállítások" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 #, fuzzy msgid "Focus Metering Mode" msgstr "PontmérÅ‘ mód (spot metering)" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 #, fuzzy msgid "Exposure Metering Mode" msgstr "Exponálásmérés" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 #, fuzzy msgid "Focusing Point" msgstr "Fókuszálási hiba." #: camlibs/ptp2/config.c:6738 #, fuzzy msgid "Capture Delay" msgstr "Rögzítés" #: camlibs/ptp2/config.c:6742 #, fuzzy msgid "Shutter Speed 2" msgstr "Zársebesség (s)" #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "Zársebesség (s)" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 #, fuzzy msgid "Metering Mode" msgstr "PontmérÅ‘ mód (spot metering)" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 #, fuzzy msgid "AF Distance" msgstr "A fókusz helyzete" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 #, fuzzy msgid "Focus Area Wrap" msgstr "Fókuszálási mód" #: camlibs/ptp2/config.c:6751 #, fuzzy msgid "Exposure Delay Mode" msgstr "Exponálásmérés" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 #, fuzzy msgid "Exposure Lock" msgstr "Exponálás" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 #, fuzzy msgid "Flash Sign" msgstr "A vaku beállításai" #: camlibs/ptp2/config.c:6759 #, fuzzy msgid "Modelling Flash" msgstr "Vaku mindig\n" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 #, fuzzy msgid "Image Review" msgstr "Képméret" #: camlibs/ptp2/config.c:6762 #, fuzzy msgid "Image Rotation Flag" msgstr "A kamera beállításai" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 #, fuzzy msgid "Flash Mode Manual Power" msgstr "Vakus mód" #: camlibs/ptp2/config.c:6765 #, fuzzy msgid "Auto Focus Area" msgstr "Fókuszálási mód" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 #, fuzzy msgid "Flash Exposure Compensation" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 #, fuzzy msgid "Bracketing" msgstr "Exponálásmérés" #: camlibs/ptp2/config.c:6769 #, fuzzy msgid "Bracket Mode" msgstr "LED-mód" #: camlibs/ptp2/config.c:6770 #, fuzzy msgid "EV Step" msgstr "ISO-sebesség" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 #, fuzzy msgid "Bracket Set" msgstr "Automatikus, vörösszemeffektus-csökkentés" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 #, fuzzy msgid "Auto White Balance Bias" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 #, fuzzy msgid "Tungsten White Balance Bias" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 #, fuzzy msgid "Fluorescent White Balance Bias" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 #, fuzzy msgid "Daylight White Balance Bias" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 #, fuzzy msgid "Flash White Balance Bias" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 #, fuzzy msgid "Cloudy White Balance Bias" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 #, fuzzy msgid "Shady White Balance Bias" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6794 #, fuzzy msgid "White Balance Bias Preset Nr" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6795 #, fuzzy msgid "White Balance Bias Preset 0" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6796 #, fuzzy msgid "White Balance Bias Preset 1" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6797 #, fuzzy msgid "White Balance Bias Preset 2" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6798 #, fuzzy msgid "White Balance Bias Preset 3" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6799 #, fuzzy msgid "White Balance Bias Preset 4" msgstr "Fehéregyensúly" #: camlibs/ptp2/config.c:6800 #, fuzzy msgid "Selftimer Delay" msgstr "A saját idÅ‘zítÅ‘ ideje" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 #, fuzzy msgid "Flash Shutter Speed" msgstr "Zársebesség (s)" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 #, fuzzy msgid "Remote Timeout" msgstr "Dátum és idÅ‘" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 #, fuzzy msgid "Remote Mode" msgstr "Felvételi mód" #: camlibs/ptp2/config.c:6805 #, fuzzy msgid "Application Mode" msgstr "Működési mód" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 #, fuzzy msgid "Sharpening" msgstr "Töltés" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 #, fuzzy msgid "Tone Compensation" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 #, fuzzy msgid "Saturation" msgstr "Beállítások" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 #, fuzzy msgid "Hue Adjustment" msgstr "Képkiigazítás" #: camlibs/ptp2/config.c:6811 #, fuzzy msgid "Auto Exposure Bracketing" msgstr "Exponálásmérés" #: camlibs/ptp2/config.c:6812 #, fuzzy msgid "Movie Sound" msgstr "Hang" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 #, fuzzy msgid "Manual Movie Setting" msgstr "Az apertúra beállításai" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 #, fuzzy msgid "Video Mode" msgstr "Felvételi mód" #: camlibs/ptp2/config.c:6835 #, fuzzy msgid "Meter Off Time" msgstr "Automatikus lekapcsolási idÅ‘" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 #, fuzzy msgid "Movie Quality" msgstr "KépminÅ‘ség" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 #, fuzzy msgid "Minimum Shutter Speed" msgstr "Zársebesség (s)" #: camlibs/ptp2/config.c:6862 #, fuzzy msgid "Movie Resolution" msgstr "Fájlfelbontás" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 #, fuzzy msgid "Continuous Shooting Speed Slow" msgstr "Zársebesség (s)" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "" #: camlibs/ptp2/config.c:6869 #, fuzzy msgid "Focus Metering" msgstr "PontmérÅ‘ mód (spot metering)" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 #, fuzzy msgid "High ISO Noise Reduction" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 #, fuzzy msgid "Continuous Shooting Speed High" msgstr "Zársebesség (s)" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 #, fuzzy msgid "JPEG Compression Policy" msgstr "Tömörítés" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 #, fuzzy msgid "AF Lock On" msgstr "Fókuszálási mód" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 #, fuzzy msgid "Raw Compression" msgstr "Tömörítés" #: camlibs/ptp2/config.c:6922 #, fuzzy msgid "Image Quality 2" msgstr "KépminÅ‘ség" #: camlibs/ptp2/config.c:6944 #, fuzzy msgid "Image Settings" msgstr "A kamera beállításai" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 #, fuzzy msgid "Capture Settings" msgstr "Az apertúra beállításai" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 #, fuzzy msgid "Other PTP Device Properties" msgstr "Nem támogatott PTP eszköztulajdonság" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "" #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "" #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "" #: camlibs/ptp2/library.c:2537 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "A kamera nem támogatja fájlnevek cserélését." #: camlibs/ptp2/library.c:2545 #, fuzzy msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "A kamera nem támogatja fájlnevek cserélését." #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 #, fuzzy msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "A kamera nem támogatja fájlnevek cserélését." #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "" #: camlibs/ptp2/library.c:2799 #, fuzzy msgid "Sorry, your camera does not support Nikon capture" msgstr "A kamera nem támogatja fájlnevek cserélését." #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 #, fuzzy msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "A kamera nem támogatja fájlnevek cserélését." #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 msgid "Canon EOS Half-Press failed" msgstr "" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 msgid "Canon EOS Half-Release failed" msgstr "" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 msgid "Canon EOS Full-Press failed" msgstr "" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 msgid "Canon EOS Full-Release failed" msgstr "" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" #: camlibs/ptp2/library.c:3332 #, fuzzy msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "A kamera nem támogatja fájlnevek cserélését." #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 msgid "Canon Capture failed" msgstr "" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 #, fuzzy msgid "Sorry, your camera does not support generic capture" msgstr "A kamera nem támogatja fájlnevek cserélését." #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" #: camlibs/ptp2/library.c:4668 #, fuzzy msgid "read only" msgstr "kész" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, fuzzy, c-format msgid "Manufacturer: %s\n" msgstr "%sGyártó: %s\n" #: camlibs/ptp2/library.c:4800 #, fuzzy, c-format msgid "Model: %s\n" msgstr "Típus:" #: camlibs/ptp2/library.c:4802 #, fuzzy, c-format msgid " Version: %s\n" msgstr "Verzió:" #: camlibs/ptp2/library.c:4805 #, fuzzy, c-format msgid " Serial Number: %s\n" msgstr "%sSorozatszám: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "" #: camlibs/ptp2/library.c:4821 #, fuzzy, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "A firmware verziószáma: %d.%02d\n" #: camlibs/ptp2/library.c:4828 #, fuzzy, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Működési mód" #: camlibs/ptp2/library.c:4833 #, fuzzy, c-format msgid "" "\n" "Capture Formats: " msgstr "Dátumformátum" #: camlibs/ptp2/library.c:4847 #, fuzzy, c-format msgid "Display Formats: " msgstr "Dátumformátum" #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr "" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "" #: camlibs/ptp2/library.c:4902 #, fuzzy, c-format msgid "File Deletion, " msgstr "Fájlfelbontás" #: camlibs/ptp2/library.c:4904 #, fuzzy, c-format msgid "No File Deletion, " msgstr "Fájlfelbontás" #: camlibs/ptp2/library.c:4908 #, fuzzy, c-format msgid "File Upload\n" msgstr "Fájl feltöltése..." #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4920 #, fuzzy, c-format msgid "Open Capture, " msgstr "Rögzítés" #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4929 #, fuzzy, c-format msgid "Canon Capture" msgstr "Rögzítés" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "" #: camlibs/ptp2/library.c:4947 #, fuzzy, c-format msgid "Nikon Capture 1" msgstr "Rögzítés" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "" #: camlibs/ptp2/library.c:4965 #, fuzzy, c-format msgid "Sony Capture" msgstr "Rögzítés" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "" #: camlibs/ptp2/library.c:4991 #, fuzzy, c-format msgid "\tCanon Wifi support\n" msgstr "A kártya nem támogatott." #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, fuzzy, c-format msgid "Unknown: 0x%04x\n" msgstr "ismeretlen (0x%02x)" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "" #: camlibs/ptp2/library.c:5043 #, fuzzy msgid "Generic Flat" msgstr "Ãltalános" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "" #: camlibs/ptp2/library.c:5056 #, fuzzy msgid "Read-Only" msgstr "Kész" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5075 #, fuzzy, c-format msgid "\tFree Space (Images): %d\n" msgstr "A képek száma: %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr "" #: camlibs/ptp2/library.c:5116 #, fuzzy, c-format msgid "cannot be queried.\n" msgstr "A kártya nem írható." #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr "" #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "" #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "" #: camlibs/ptp2/library.c:6414 #, fuzzy msgid "Device does not support setting object protection." msgstr "A kamera nem teszi lehetÅ‘vé a beállítások módosítását." #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "" #: camlibs/ptp2/library.c:6870 #, fuzzy msgid "Initializing Camera" msgstr "A kamera kikapcsolása" #: camlibs/ptp2/library.c:7254 #, fuzzy, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "A PTP csak USB-csatolós kameráknál használható." #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "PTP - nem definiált hiba" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP OK." #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "PTP - általános hiba" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP - a munkafolyamat nincs megnyitva" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP - érvénytelen tranzakciós azonosító" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "PTP - nem támogatott művelet" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "PTP - nem támogatott paraméter" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP - nem teljes transzfer" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP érvénytelen tárolóazonosító" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "Érvénytelen PTP objektumazonosító" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "Nem támogatott PTP eszköztulajdonság" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP érvénytelen objektumformátum-kód" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP - a tároló betelt" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP - az objektum írásvédett" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "PTP - a tároló csak olvasható" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP - a hozzáférés megtagadva" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP - nem érhetÅ‘ el elÅ‘nézeti kép" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP - az önteszt nem sikerült" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP - részleges törlés" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "A PTP-tároló nem érhetÅ‘ el" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "Nem támogatott formátumú PTP-specifikáció" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "PTP érvénytelen objektuminformáció" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP érvénytelen kódformátum" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "Ismeretlen PTP gyártókód" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "A PTP-felvétel már befejezÅ‘dött" #: camlibs/ptp2/ptp.c:4038 #, fuzzy msgid "PTP Device Busy" msgstr "PTP eszközbusz" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "PTP - érvénytelen szülÅ‘objektum" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "PTP érvénytelen eszköztulajdonság-formátum" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "PTP érvénytelen eszköztulajdonság-érték" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "PTP - érvénytelen paraméter" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP - a munkafolyamat már meg van nyitva" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP - a tranzakció félbeszakadt" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "Nem támogatott PTP specifikáció vagy cél" #: camlibs/ptp2/ptp.c:4047 #, fuzzy msgid "Filename Required" msgstr "PTP EK fájlnév szükséges" #: camlibs/ptp2/ptp.c:4048 #, fuzzy msgid "Filename Conflicts" msgstr "PTP EK fájlnévütközés" #: camlibs/ptp2/ptp.c:4049 #, fuzzy msgid "Filename Invalid" msgstr "Érvénytelen PTP EK fájlnév" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "" #: camlibs/ptp2/ptp.c:4052 #, fuzzy msgid "Out of Focus" msgstr "Elfogyott a memória" #: camlibs/ptp2/ptp.c:4053 #, fuzzy msgid "Change Camera Mode Failed" msgstr "%sA kamera típusa: %s\n" #: camlibs/ptp2/ptp.c:4054 #, fuzzy msgid "Invalid Status" msgstr "Érvénytelen" #: camlibs/ptp2/ptp.c:4055 #, fuzzy msgid "Set Property Not Supported" msgstr "Nem támogatott PTP eszköztulajdonság" #: camlibs/ptp2/ptp.c:4056 #, fuzzy msgid "Whitebalance Reset Error" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "" #: camlibs/ptp2/ptp.c:4058 #, fuzzy msgid "Shutter Speed Bulb" msgstr "Zársebesség (s)" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "" #: camlibs/ptp2/ptp.c:4066 #, fuzzy msgid "Unknown Command" msgstr "Ismeretlen típus" #: camlibs/ptp2/ptp.c:4067 #, fuzzy msgid "Operation Refused" msgstr "A művelet félbeszakadt" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "" #: camlibs/ptp2/ptp.c:4069 #, fuzzy msgid "Battery Low" msgstr "akkumulátor" #: camlibs/ptp2/ptp.c:4070 #, fuzzy msgid "Camera Not Ready" msgstr "A kamera típusa (csak olvasható)" #: camlibs/ptp2/ptp.c:4072 #, fuzzy msgid "PTP Timeout" msgstr "Dátum és idÅ‘" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "" #: camlibs/ptp2/ptp.c:4075 #, fuzzy msgid "PTP Response Expected" msgstr "PTP protokollhiba, nem jött válasz" #: camlibs/ptp2/ptp.c:4076 #, fuzzy msgid "PTP Data Expected" msgstr "PTP protokollhiba, nem érkezett adat" #: camlibs/ptp2/ptp.c:4077 #, fuzzy msgid "PTP I/O Error" msgstr "PTP I/O-hiba" #: camlibs/ptp2/ptp.c:4101 #, fuzzy msgid "Undefined PTP Property" msgstr "PTP - nem definiált hiba" #: camlibs/ptp2/ptp.c:4103 #, fuzzy msgid "Functional Mode" msgstr "Működési mód" #: camlibs/ptp2/ptp.c:4105 #, fuzzy msgid "Compression Setting" msgstr "Tömörítés" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "" #: camlibs/ptp2/ptp.c:4114 #, fuzzy msgid "Exposure Time" msgstr "Az izzó exponálási ideje" #: camlibs/ptp2/ptp.c:4115 #, fuzzy msgid "Exposure Program Mode" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "" #: camlibs/ptp2/ptp.c:4119 #, fuzzy msgid "Exposure Bias Compensation" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 #, fuzzy msgid "Contrast" msgstr "Kontraszt-" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Digitális nagyítás" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "" #: camlibs/ptp2/ptp.c:4134 #, fuzzy msgid "Copyright Info" msgstr "SzerzÅ‘i jog" #: camlibs/ptp2/ptp.c:4135 msgid "Supported Streams" msgstr "" #: camlibs/ptp2/ptp.c:4136 msgid "Enabled Streams" msgstr "" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Dátumformátum" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Fájlfelbontás" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "KépminÅ‘ség" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Kontraszt-" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "Az LCD fényereje" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Dátumformátum" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 #, fuzzy msgid "Date Time Stamp Format" msgstr "Dátumformátum" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "" #: camlibs/ptp2/ptp.c:4159 #, fuzzy msgid "Power Saving" msgstr "NINCS energiajelzÅ‘ fény" #: camlibs/ptp2/ptp.c:4160 #, fuzzy msgid "UI Language" msgstr "Nyelv" #: camlibs/ptp2/ptp.c:4169 #, fuzzy msgid "Battery Type" msgstr "akkumulátor" #: camlibs/ptp2/ptp.c:4170 #, fuzzy msgid "Battery Mode" msgstr "akkumulátor" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "" #: camlibs/ptp2/ptp.c:4172 #, fuzzy msgid "Camera Mode" msgstr "%sA kamera típusa: %s\n" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "" #: camlibs/ptp2/ptp.c:4176 #, fuzzy msgid "Self Time" msgstr "Saját idÅ‘zítÅ‘" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 #, fuzzy msgid "Shooting Mode" msgstr "Zársebesség (s)" #: camlibs/ptp2/ptp.c:4180 #, fuzzy msgid "Image Mode" msgstr "Képméret" #: camlibs/ptp2/ptp.c:4187 #, fuzzy msgid "Slow Shutter Setting" msgstr "Képkészítési beállítások" #: camlibs/ptp2/ptp.c:4188 #, fuzzy msgid "AF Mode" msgstr "LED-mód" #: camlibs/ptp2/ptp.c:4189 #, fuzzy msgid "Image Stabilization" msgstr "A kamera beállításai" #: camlibs/ptp2/ptp.c:4191 #, fuzzy msgid "Color Gain" msgstr "Színbeállítások" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "" #: camlibs/ptp2/ptp.c:4194 #, fuzzy msgid "Parameter Set" msgstr "1. paraméter" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "" #: camlibs/ptp2/ptp.c:4207 #, fuzzy msgid "Capture Transfer Mode" msgstr "%sA kamera típusa: %s\n" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "" #: camlibs/ptp2/ptp.c:4210 #, fuzzy msgid "Size Quality Mode" msgstr "KépminÅ‘ség" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "" #: camlibs/ptp2/ptp.c:4217 #, fuzzy msgid "Camera Owner" msgstr "A kamera OK.\n" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "" #: camlibs/ptp2/ptp.c:4219 #, fuzzy msgid "Camera Body ID" msgstr "%sA kamera típusa: %s\n" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "" #: camlibs/ptp2/ptp.c:4223 #, fuzzy msgid "Digital Zoom Magnification" msgstr "Digitális nagyítás" #: camlibs/ptp2/ptp.c:4224 #, fuzzy msgid "Ml Spot Position" msgstr "A fókusz helyzete" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "" #: camlibs/ptp2/ptp.c:4239 #, fuzzy msgid "Model ID" msgstr "Típus:" #: camlibs/ptp2/ptp.c:4248 #, fuzzy msgid "Shooting Bank" msgstr "Zársebesség (s)" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "" #: camlibs/ptp2/ptp.c:4278 #, fuzzy msgid "White Balance Preset Number" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4280 #, fuzzy msgid "White Balance Preset Name 0" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4282 #, fuzzy msgid "White Balance Preset Name 1" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4284 #, fuzzy msgid "White Balance Preset Name 2" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4286 #, fuzzy msgid "White Balance Preset Name 3" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4288 #, fuzzy msgid "White Balance Preset Name 4" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4290 #, fuzzy msgid "White Balance Preset Value 0" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4292 #, fuzzy msgid "White Balance Preset Value 1" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4294 #, fuzzy msgid "White Balance Preset Value 2" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4296 #, fuzzy msgid "White Balance Preset Value 3" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4298 #, fuzzy msgid "White Balance Preset Value 4" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "" #: camlibs/ptp2/ptp.c:4360 #, fuzzy msgid "Focus Area Zone" msgstr "Fókuszálási mód" #: camlibs/ptp2/ptp.c:4362 #, fuzzy msgid "Enable Copyright" msgstr "SzerzÅ‘i jog" #: camlibs/ptp2/ptp.c:4366 #, fuzzy msgid "Exposure ISO Step" msgstr "Az izzó exponálási ideje" #: camlibs/ptp2/ptp.c:4368 #, fuzzy msgid "Exposure Step" msgstr "Az izzó exponálási ideje" #: camlibs/ptp2/ptp.c:4370 #, fuzzy msgid "Exposure Compensation (EV)" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "" #: camlibs/ptp2/ptp.c:4376 #, fuzzy msgid "Exposure Base Matrix" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:4378 #, fuzzy msgid "Exposure Base Center" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:4380 #, fuzzy msgid "Exposure Base Spot" msgstr "Az izzó exponálási ideje" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "" #: camlibs/ptp2/ptp.c:4390 #, fuzzy msgid "Auto Meter Off Time" msgstr "Automatikus lekapcsolási idÅ‘" #: camlibs/ptp2/ptp.c:4392 #, fuzzy msgid "Self Timer Delay" msgstr "A saját idÅ‘zítÅ‘ ideje" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "" #: camlibs/ptp2/ptp.c:4398 #, fuzzy msgid "Auto Off Timers" msgstr "Automatikus lekapcsolási idÅ‘" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "" #: camlibs/ptp2/ptp.c:4402 #, fuzzy msgid "Shooting Speed" msgstr "Zársebesség (s)" #: camlibs/ptp2/ptp.c:4406 #, fuzzy msgid "Exposure delay mode" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 #, fuzzy msgid "Long Exposure Noise Reduction" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "" #: camlibs/ptp2/ptp.c:4418 #, fuzzy msgid "High ISO noise reduction" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "" #: camlibs/ptp2/ptp.c:4424 #, fuzzy msgid "Copyright Information" msgstr "SzerzÅ‘i jog" #: camlibs/ptp2/ptp.c:4432 #, fuzzy msgid "Modeling Flash" msgstr "Vaku mindig\n" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "" #: camlibs/ptp2/ptp.c:4440 #, fuzzy msgid "Auto Bracket Selection" msgstr "Automatikus, vörösszemeffektus-csökkentés" #: camlibs/ptp2/ptp.c:4441 #, fuzzy msgid "NIKON Auto Bracketing Set" msgstr "Automatikus, vörösszemeffektus-csökkentés" #: camlibs/ptp2/ptp.c:4443 #, fuzzy msgid "Center Button Shooting Mode" msgstr "PontmérÅ‘ mód (spot metering)" #: camlibs/ptp2/ptp.c:4445 #, fuzzy msgid "Center Button Playback Mode" msgstr "Jelenlegi üzemmód: lejátszás\n" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "" #: camlibs/ptp2/ptp.c:4457 #, fuzzy msgid "Aperture Setting" msgstr "Az apertúra beállításai" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "" #: camlibs/ptp2/ptp.c:4465 #, fuzzy msgid "Center Button Zoom Ratio" msgstr "PontmérÅ‘ mód (spot metering)" #: camlibs/ptp2/ptp.c:4467 #, fuzzy msgid "Function Button 2" msgstr "Működési mód" #: camlibs/ptp2/ptp.c:4471 #, fuzzy msgid "Normal AF On" msgstr "Normál" #: camlibs/ptp2/ptp.c:4473 #, fuzzy msgid "Clean Image Sensor" msgstr "A kamera beállításai" #: camlibs/ptp2/ptp.c:4475 #, fuzzy msgid "Image Comment String" msgstr "Képkiigazítás" #: camlibs/ptp2/ptp.c:4477 #, fuzzy msgid "Image Comment Enable" msgstr "Képkiigazítás" #: camlibs/ptp2/ptp.c:4479 #, fuzzy msgid "Image Rotation" msgstr "A kamera beállításai" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "" #: camlibs/ptp2/ptp.c:4497 #, fuzzy msgid "Bracketing Enable" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:4499 #, fuzzy msgid "Exposure Bracketing Step" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:4501 #, fuzzy msgid "Exposure Bracketing Program" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:4503 #, fuzzy msgid "Auto Exposure Bracket Count" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:4504 #, fuzzy msgid "White Balance Bracket Step" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4505 #, fuzzy msgid "White Balance Bracket Program" msgstr "Fehéregyensúly" #: camlibs/ptp2/ptp.c:4507 #, fuzzy msgid "Lens ID" msgstr "Lencsemód" #: camlibs/ptp2/ptp.c:4509 #, fuzzy msgid "Lens Sort" msgstr "Lencsemód" #: camlibs/ptp2/ptp.c:4511 #, fuzzy msgid "Lens Type" msgstr "Lencsemód" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "" #: camlibs/ptp2/ptp.c:4523 #, fuzzy msgid "Auto Off Photo" msgstr "Automatikus lekapcsolási idÅ‘" #: camlibs/ptp2/ptp.c:4525 #, fuzzy msgid "Auto Off Menu" msgstr "Automatikus lekapcsolási idÅ‘" #: camlibs/ptp2/ptp.c:4527 #, fuzzy msgid "Auto Off Info" msgstr "Automatikus lekapcsolási idÅ‘" #: camlibs/ptp2/ptp.c:4529 #, fuzzy msgid "Self Timer Shot Number" msgstr "A saját idÅ‘zítÅ‘ ideje" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "" #: camlibs/ptp2/ptp.c:4537 #, fuzzy msgid "Nikon Exposure Time" msgstr "Az izzó exponálási ideje" #: camlibs/ptp2/ptp.c:4539 #, fuzzy msgid "Warning Status" msgstr "A kártya állapota:\t\t" #: camlibs/ptp2/ptp.c:4546 #, fuzzy msgid "AF LCD Top Mode 2" msgstr "LCD-mód" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "" #: camlibs/ptp2/ptp.c:4552 #, fuzzy msgid "Exposure Meter" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:4556 #, fuzzy msgid "USB Speed" msgstr "ISO-sebesség" #: camlibs/ptp2/ptp.c:4558 #, fuzzy msgid "CCD Serial Number" msgstr "%sSorozatszám: %s\n" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "" #: camlibs/ptp2/ptp.c:4564 #, fuzzy msgid "FNumber Lock" msgstr "Fókuszálási mód" #: camlibs/ptp2/ptp.c:4566 #, fuzzy msgid "Exposure Aperture Lock" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:4568 #, fuzzy msgid "TV Lock Setting" msgstr "Képkészítési beállítások" #: camlibs/ptp2/ptp.c:4570 #, fuzzy msgid "AV Lock Setting" msgstr "Képkészítési beállítások" #: camlibs/ptp2/ptp.c:4572 #, fuzzy msgid "Illum Setting" msgstr "A kamera beállításai" #: camlibs/ptp2/ptp.c:4574 #, fuzzy msgid "Focus Point Bright" msgstr "Fókuszálási hiba." #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 #, fuzzy msgid "External Flash Mode" msgstr "Vakus mód" #: camlibs/ptp2/ptp.c:4584 #, fuzzy msgid "External Flash Compensation" msgstr "Exponálási kompenzáció" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "" #: camlibs/ptp2/ptp.c:4604 #, fuzzy msgid "BW Contrast" msgstr "Kontraszt-" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "" #: camlibs/ptp2/ptp.c:4614 #, fuzzy msgid "Flourescent Type" msgstr "Fluoreszkáló" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "" #: camlibs/ptp2/ptp.c:4618 #, fuzzy msgid "Tune Preset 0" msgstr "portugál" #: camlibs/ptp2/ptp.c:4620 #, fuzzy msgid "Tune Preset 1" msgstr "portugál" #: camlibs/ptp2/ptp.c:4622 #, fuzzy msgid "Tune Preset 2" msgstr "portugál" #: camlibs/ptp2/ptp.c:4624 #, fuzzy msgid "Tune Preset 3" msgstr "portugál" #: camlibs/ptp2/ptp.c:4626 #, fuzzy msgid "Tune Preset 4" msgstr "portugál" #: camlibs/ptp2/ptp.c:4630 #, fuzzy msgid "Autofocus Mode" msgstr "Fókuszálási mód" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "" #: camlibs/ptp2/ptp.c:4656 #, fuzzy msgid "Auto FP" msgstr "Automatikus" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "" #: camlibs/ptp2/ptp.c:4662 #, fuzzy msgid "Battery Cell Kind" msgstr "%sA telep élettartama: %i\n" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "" #: camlibs/ptp2/ptp.c:4670 #, fuzzy msgid "Info Disp Setting" msgstr "A vaku beállításai" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "" #: camlibs/ptp2/ptp.c:4684 #, fuzzy msgid "Live View Mode" msgstr "LED-mód" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "" #: camlibs/ptp2/ptp.c:4694 #, fuzzy msgid "Exposure Display Status" msgstr "Az izzó exponálási ideje" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "" #: camlibs/ptp2/ptp.c:4700 #, fuzzy msgid "Exposure Indicate Lightup" msgstr "Az izzó exponálási ideje" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "" #: camlibs/ptp2/ptp.c:4708 #, fuzzy msgid "Flash MRepeat Count" msgstr "Vakus mód" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "" #: camlibs/ptp2/ptp.c:4749 #, fuzzy msgid "Image Compression" msgstr "Tömörítés" #: camlibs/ptp2/ptp.c:4758 #, fuzzy msgid "Secure Time" msgstr "Az izzó exponálási ideje" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "" #: camlibs/ptp2/ptp.c:4782 #, fuzzy msgid "Quality" msgstr "KépminÅ‘ség" #: camlibs/ptp2/ptp.c:4783 #, fuzzy msgid "Release Mode" msgstr "Vakus mód" #: camlibs/ptp2/ptp.c:4784 #, fuzzy msgid "Focus Areas" msgstr "Fókuszálási mód" #: camlibs/ptp2/ptp.c:4785 #, fuzzy msgid "AE Lock" msgstr "Exponálás" #: camlibs/ptp2/ptp.c:4797 #, fuzzy msgid "Image size" msgstr "Képméret" #: camlibs/ptp2/ptp.c:4798 #, fuzzy msgid "Shutter speed" msgstr "Zársebesség (s)" #: camlibs/ptp2/ptp.c:4799 msgid "Color temperature" msgstr "" #: camlibs/ptp2/ptp.c:4802 #, fuzzy msgid "Expose Index" msgstr "Az izzó exponálási ideje" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 #, fuzzy msgid "Still Image" msgstr "Kép" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "" #: camlibs/ptp2/ptp.c:4940 #, fuzzy msgid "JPEG Norm" msgstr "JPEG" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Fehéren izzó" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "" #: camlibs/ptp2/ptp.c:4966 #, fuzzy msgid "Automatic flash" msgstr "Automatikus\n" #: camlibs/ptp2/ptp.c:4969 #, fuzzy msgid "Automatic Red-eye Reduction" msgstr "Automatikus, vörösszemeffektus-csökkentés" #: camlibs/ptp2/ptp.c:4970 #, fuzzy msgid "Red-eye fill flash" msgstr "Vörösszem-vaku" #: camlibs/ptp2/ptp.c:4988 #, fuzzy msgid "Power Wind" msgstr "NINCS energiajelzÅ‘ fény" #: camlibs/ptp2/ptp.c:4994 #, fuzzy msgid "Timer + Remote" msgstr "távoli" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "" #: camlibs/ptp2/ptp.c:5056 #, fuzzy msgid "Flash Lock" msgstr "Vakus mód" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "" #: camlibs/ptp2/ptp.c:5169 #, fuzzy msgid "LCD Backlight" msgstr "Az LCD fényereje" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "" #: camlibs/ptp2/ptp.c:5228 #, fuzzy msgid "1 min" msgstr "41 mm" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "" #: camlibs/ptp2/ptp.c:5266 #, fuzzy msgid "Dark on light" msgstr "Égbolt" #: camlibs/ptp2/ptp.c:5267 #, fuzzy msgid "Light on dark" msgstr "Túl sötét a megvilágítás." #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "SuperFine" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "" #: camlibs/ptp2/ptp.c:5345 #, fuzzy msgid "Auto + Red Eye Suppression" msgstr "Automatikus, vörösszemeffektus-csökkentés" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "" #: camlibs/ptp2/ptp.c:5370 #, fuzzy msgid "Pan Focus" msgstr "Nincs kézikönyv" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5375 #, fuzzy msgid "Continuous Shooting" msgstr "PontmérÅ‘ mód (spot metering)" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "" #: camlibs/ptp2/ptp.c:5386 #, fuzzy msgid "Spot Metering" msgstr "PontmérÅ‘ mód (spot metering)" #: camlibs/ptp2/ptp.c:5387 #, fuzzy msgid "Average Metering" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:5388 #, fuzzy msgid "Evaluative Metering" msgstr "Exponálásmérés" #: camlibs/ptp2/ptp.c:5389 #, fuzzy msgid "Partial Metering" msgstr "PTP - részleges törlés" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "" #: camlibs/ptp2/ptp.c:5392 #, fuzzy msgid "Multi-Spot Metering" msgstr "PontmérÅ‘ mód (spot metering)" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 #, fuzzy msgid "High 2" msgstr "Magas" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "" #: camlibs/ptp2/ptp.c:5462 #, fuzzy msgid "Development Parameters 1" msgstr "1. paraméter" #: camlibs/ptp2/ptp.c:5463 #, fuzzy msgid "Development Parameters 2" msgstr "2. paraméter" #: camlibs/ptp2/ptp.c:5464 #, fuzzy msgid "Development Parameters 3" msgstr "3. paraméter" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "" #: camlibs/ptp2/ptp.c:5600 #, fuzzy msgid "Encounter" msgstr "Rögzítés" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "" #: camlibs/ptp2/ptp.c:5605 #, fuzzy msgid "Undefined Audio" msgstr "PTP - nem definiált hiba" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5612 #, fuzzy msgid "Undefined Video" msgstr "PTP - nem definiált hiba" #: camlibs/ptp2/ptp.c:5617 #, fuzzy msgid "Undefined Collection" msgstr "PTP - nem definiált hiba" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5634 #, fuzzy msgid "Undefined Document" msgstr "PTP - nem definiált hiba" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "" #: camlibs/ptp2/ptp.c:5643 #, fuzzy msgid "Undefined Contact" msgstr "PTP - nem definiált hiba" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "" #: camlibs/ptp2/ptp.c:5692 #, fuzzy, c-format msgid "Unknown(%04x)" msgstr "ismeretlen (0x%02x)" #: camlibs/ptp2/ptp.c:5702 msgid "Get device info" msgstr "" #: camlibs/ptp2/ptp.c:5703 #, fuzzy msgid "Open session" msgstr "Tömörítés" #: camlibs/ptp2/ptp.c:5704 #, fuzzy msgid "Close session" msgstr "Tömörítés" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "" #: camlibs/ptp2/ptp.c:5711 #, fuzzy msgid "Get thumbnail" msgstr "ElÅ‘nézeti képek letöltése..." #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "" #: camlibs/ptp2/ptp.c:5718 #, fuzzy msgid "Self test device" msgstr "PTP - az önteszt nem sikerült" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 msgid "Get Vendor Extension Maps" msgstr "" #: camlibs/ptp2/ptp.c:5735 msgid "Get Vendor Device Info" msgstr "" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 msgid "Get Filesystem Manifest" msgstr "" #: camlibs/ptp2/ptp.c:5738 msgid "Get Stream Info" msgstr "" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "" #: camlibs/ptp2/ptp.c:5759 #, fuzzy msgid "Set license response" msgstr "Nem felismerhetÅ‘ válasz" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "" #: camlibs/ptp2/ptp.c:5763 #, fuzzy msgid "Get meter response" msgstr "Nem várt válasz érkezett" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "" #: camlibs/ptp2/ptp.c:5800 #, fuzzy msgid "Send Partial Object" msgstr "PTP - érvénytelen szülÅ‘objektum" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "Ismeretlen hiba" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "Ismeretlen PTP gyártókód" #: camlibs/ricoh/g3.c:357 #, fuzzy msgid "Downloading movie..." msgstr "Fájl letöltése..." #: camlibs/ricoh/g3.c:363 #, fuzzy msgid "Downloading audio..." msgstr "Letöltés..." #: camlibs/ricoh/g3.c:378 #, fuzzy msgid "Downloading EXIF data..." msgstr "Adatok letöltése..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, fuzzy, c-format msgid "No EXIF data available for %s." msgstr "nem érhetÅ‘ el: %s" #: camlibs/ricoh/g3.c:484 #, fuzzy msgid "Could not delete file." msgstr "A(z) '%s' fájl nem található." #: camlibs/ricoh/g3.c:512 #, fuzzy msgid "Could not remove directory." msgstr "Nem sikerült létrehozni a \\DCIM könyvtárat." #: camlibs/ricoh/g3.c:540 #, fuzzy msgid "Could not create directory." msgstr "Nem sikerült létrehozni a \\DCIM könyvtárat." #: camlibs/ricoh/g3.c:559 #, fuzzy, c-format msgid "Version: %s\n" msgstr "Verzió:" #: camlibs/ricoh/g3.c:564 #, fuzzy, c-format msgid "RTC Status: %d\n" msgstr "A kártya állapota:\t\t" #: camlibs/ricoh/g3.c:570 #, fuzzy, c-format msgid "Camera time: %s %s\n" msgstr "%sKameraazonosító: %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, fuzzy, c-format msgid "Camera ID: %s\n" msgstr "%sKameraazonosító: %s\n" #: camlibs/ricoh/g3.c:582 #, fuzzy, c-format msgid "No SD Card inserted.\n" msgstr "A kártya nem támogatott." #: camlibs/ricoh/g3.c:585 #, fuzzy, c-format msgid "SD Card ID: %s\n" msgstr "%sKameraazonosító: %s\n" #: camlibs/ricoh/g3.c:593 #, fuzzy, c-format msgid "Photos on camera: %d\n" msgstr "A kamera memóriája: %d Mbit.\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Ricoh/Philips meghajtó\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "Bob Paauwe meghajtóprogramja segítségével\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "ismeretlen (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Típus: %s\n" "Memória: %d bájt áll rendelkezésre %d bájtból" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2,0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1,5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1,0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0,5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0,0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0,5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1,0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1,5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2,0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Szabadban" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Maximális" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Minimális" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Karakter" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Hang" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Kép és hang" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Karakter és hang" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Beállítások" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Ãltalános" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "SzerzÅ‘i jog (max. 20 karakter)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "Képek" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Fehérszint" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Felvételi mód" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Tömörítés" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "A megadott sebesség (%i) nem támogatott." #: camlibs/ricoh/ricoh.c:67 #, fuzzy, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "" "%i bájt helyett %i bájt érkezett. Kérjük jelezze a hibát itt: ." #: camlibs/ricoh/ricoh.c:76 #, fuzzy, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "" "%i bájt helyett %i bájt érkezett. Kérjük jelezze a hibát itt: ." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, fuzzy, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "" "0x%x helyett 0x%x érkezett. Kérjük jelezze a hibát itt: ." #: camlibs/ricoh/ricoh.c:221 #, fuzzy, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "" "Hibás karakterek (0x%x, 0x%x). Kérjük jelezze a hibát ezen a címen: ." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, fuzzy, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "" "A kamera nem tud kéréseket fogadni, mert más feladattal foglalkozik. Ha a " "probkléma nem szűnik meg, kérjük jelezze itt: ." #: camlibs/ricoh/ricoh.c:297 #, fuzzy, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "" "IdÅ‘túllépési hiba történt 2 sikertelen próbálkozás után. Kérjük jelezze a " "hibát itt: ." #: camlibs/ricoh/ricoh.c:313 #, fuzzy, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "" "Adatátviteli hiba történt 2 sikertelen próbálkozás után. Kérjük jelezze a " "hibát itt: ." #: camlibs/ricoh/ricoh.c:351 #, fuzzy, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "" "A kamera nem megfelelÅ‘ módba van kacsolva. További információ: ." #: camlibs/ricoh/ricoh.c:360 #, fuzzy, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "" "A kamera nem fogadta el a paramétereket. Kérjük jelezze a hibát ezen a " "címen: ." #: camlibs/ricoh/ricoh.c:366 #, fuzzy, c-format msgid "An unknown error occurred. Please contact %s." msgstr "" "Ismeretlen hiba történt. Kérjük jelezze a hibát ezen a címen: ." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "A fájlnév nem lehet 12 karakternél hosszabb ('%s': %i karakter)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "A Samsung digimax 800k meghajtót James McKenzie " "készítette a gphoto-hoz. KésÅ‘bb Lutz Mueller " "átírta a gphoto2-höz. Marcus Meissner tovább " "tökéletesítette az átiratot, kijavítva néhány hibát." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Felbontás és méret" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Dátum és idÅ‘ (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 #, fuzzy msgid "Aperture Settings" msgstr "Az apertúra beállításai" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Színmód" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Vörösszemhatás-csökkentés" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "A vaku beállításai" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "A számítógép energiatakarékossági ideje (s)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "A kamera energiatakarékossági ideje (s)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Lencsemód" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "koreai" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "angol" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "francia" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "német" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "olasz" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "japán" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "spanyol" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "portugál" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Képbeállítások" #: camlibs/sierra/epson-desc.c:289 #, fuzzy msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "Néhány megjegyzés az Epson kamerákkal kapcsolatban:\n" "- Néhány paraméter nem módosítható távolról:\n" " * nagyítás\n" " * fókusz\n" " * egyéni fehéregyensúly-beállítás\n" "- A beállításokat a PhotoPC 3000z készüléknél\n" " fejtettem vissza, ha az Ön gépénél nem működik valami,\n" " kérem értesítsen a címen (angolul)\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Nincs behelyezve memóriakártya" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "A telep kapacitását nem lehet lekérdezni" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "" "A kamera energiaszintje nagyon alacsony (%d%%). A művelet félbeszakadt." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Nem kérdezhetÅ‘ le a rendelkezésre álló szabad memória" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "A kamera háromszor is megtagadta a kapcsolat nyitvatartását." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "Az elsÅ‘ fogadott bájt (0x%x) érvénytelen." #: camlibs/sierra/library.c:738 #, fuzzy, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "Egy csomag átvitele %i próbálkozás után is idÅ‘túllépési hibával fejezÅ‘dött " "be. Kérjük jelezze a hibát itt: ." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Több próbálkozás után sem sikerült egy csomag átvitele." #: camlibs/sierra/library.c:789 #, fuzzy, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "" "A kamera visszautasított egy csomagot. Kérjük jelezze a hibát itt: ." #: camlibs/sierra/library.c:816 #, fuzzy, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "" "Egy csomag átvitele nem sikerült (hibakód: %i). Kérjük jelezze a hibát itt: " "." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "" "Az adatátvitel 2 próbálkozás után sem sikerült (idÅ‘túllépés történt). A " "művelet nem sikerült..." #: camlibs/sierra/library.c:926 #, fuzzy, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "" "Nem várt eredmény: 0x%x. További információ: ." #: camlibs/sierra/library.c:1025 #, fuzzy, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "" "Nem várt válasz érkezett (%i). Küldjön hibajelentést erre a címre: ." #: camlibs/sierra/library.c:1088 #, fuzzy, c-format msgid "Could not get register %i. Please contact %s." msgstr "" "Nem sikerült regisztrálni: %i. További információ: ." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "Túl sok próbálkozás nem sikerült." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Adatok küldése..." #: camlibs/sierra/library.c:1226 #, fuzzy, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "Rekurzív hívásokat nem támogat a Sierra-meghajtó! További információ: " "." #: camlibs/sierra/library.c:1280 #, fuzzy, c-format msgid "Could not get string register %i. Please contact %s." msgstr "" "Egy sztringregiszter (%i) letöltése nem sikerült. Kérjük jelezze a hibát " "itt: ." #: camlibs/sierra/library.c:1519 #, fuzzy, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "" "32 bájt helyett %i bájt érkezett. Kérjük jelezze a hibát itt: ." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "Zársebesség [ezredmásodpercben] (0=automatikus)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "Zársebesség (s)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "" #: camlibs/sierra/nikon-desc.c:238 #, fuzzy msgid "Slow-sync" msgstr "Lassú szinkronizálás" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "Kontraszt+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Kontraszt-" #: camlibs/sierra/nikon-desc.c:256 #, fuzzy msgid "Brightness+" msgstr "Az LCD fényereje" #: camlibs/sierra/nikon-desc.c:257 #, fuzzy msgid "Brightness-" msgstr "Az LCD fényereje" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Képkiigazítás" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "LED-mód" #: camlibs/sierra/nikon-desc.c:326 #, fuzzy msgid "Infinity" msgstr "Végtelen/halszem" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Működési mód" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "Az LCD fényereje" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "Az LCD automatikus kikapcsolása (s)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Exponálásmérés" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "Nagyítás (mm)" #: camlibs/sierra/nikon-desc.c:543 #, fuzzy msgid "none" msgstr "Nincs" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "" #: camlibs/sierra/nikon-desc.c:547 #, fuzzy msgid "Fisheye" msgstr "Fájltípus" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "" #: camlibs/sierra/nikon-desc.c:558 #, fuzzy msgid "Misc exposure/lens settings" msgstr "Egyéb exponálási- és lencsebeállítások" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Autoexponálási zárolás" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " A kamera beállítási opciói:\n" "\n" " Az optikai nagyítás egyelÅ‘re nem működik\n" " megfelelÅ‘en.\n" "\n" " Nem minden beállítás olvasható és írható\n" " megfelelÅ‘ módon, ilyen például\n" " a fehéregyensúly finombeállítása\n" " és a nyelvválasztás.\n" "\n" " Kapcsolja a kamerát 'M' módba a\n" " zársebesség beállításához.\n" #: camlibs/sierra/nikon-desc.c:743 #, fuzzy msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995:\n" " A kamera beállításához szükséges opciók\n" " jelenleg nem fednek le mindent, kérjük vegye\n" " fel a kapcsolatot a fejlesztÅ‘kkel a\n" " gphoto-devel@gphoto.net címen, ha részt szeretne\n" " venni a meghajtóprogram továbbfejlesztésében.\n" "\n" " A letöltési funkciónak mindenképpen működnie kell.\n" #: camlibs/sierra/olympus-desc.c:483 #, fuzzy msgid "White board" msgstr "Fehér alap" #: camlibs/sierra/olympus-desc.c:484 #, fuzzy msgid "Black board" msgstr "Fekete alap" #: camlibs/sierra/olympus-desc.c:489 #, fuzzy msgid "Color or Function Mode" msgstr "Működési mód" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 #, fuzzy msgid "Slow" msgstr "Lassú szinkronizálás" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "" #: camlibs/sierra/olympus-desc.c:596 #, fuzzy msgid "Fluorescent-1-home-6700K" msgstr "Fluoreszkáló" #: camlibs/sierra/olympus-desc.c:597 #, fuzzy msgid "Fluorescent-2-desk-5000K" msgstr "Fluoreszkáló" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "LCD-mód" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Digitális nagyítás" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "A fókusz helyzete" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "IdÅ‘formátum" #: camlibs/sierra/olympus-desc.c:1147 #, fuzzy msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Néhány megjegyzés az Olympus kamerákkal kapcsolatban:\n" "(1) A kamera beállításai:\n" " 0 érték esetén mindig az alapértelmezés lesz érvényes.\n" "(2) A Olympus C-3040Z (sÅ‘t talán a C-2040Z\n" " és más típusok is) rendelkeznek USB-s vezérlési móddal.\n" " Ez csak akkor használható, ha a kamera át van állítva\n" " 'USB PC control mode'-ba. A módváltási menü eléréséhez\n" " kapcsolja be a kamerát, nyissa fel a memóriakártya\n" " tartójának fedelét és tartsa lenyomva a menü és az LCD\n" " gombot egészen addig, amíg a beállítómenü\n" " meg nem jelenik. ON állásba kell kapcsolni.\n" "(3) Ha az 'LCD mode'-ot 'Monitor' vagy\n" " 'Normal' állásba kapcsolja, de felejtse el visszaállítani 'Off'-ra\n" " a kapcsolat bontása elÅ‘tt, máskülönben a kamera gombjait nem\n" " lehet használni. Ha mégis 'sikerült' elÅ‘idézni ezt az állapotot,\n" " kösse össze újból a számítógépet és a kamerát,\n" " és kapcsolja 'Off' állapotba az LCD-t." #: camlibs/sierra/olympus-desc.c:1166 #, fuzzy msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Néhány megjegyzés az Olympus kamerákkal kapcsolatban:\n" "(1) A kamera beállításai:\n" " 0 érték esetén mindig az alapértelmezés lesz érvényes.\n" "(2) A Olympus C-3040Z (sÅ‘t talán a C-2040Z\n" " és más típusok is) rendelkeznek USB-s vezérlési móddal.\n" " Ez csak akkor használható, ha a kamera át van állítva\n" " 'USB PC control mode'-ba. A módváltási menü eléréséhez\n" " kapcsolja be a kamerát, nyissa fel a memóriakártya\n" " tartójának fedelét és tartsa lenyomva a menü és az LCD\n" " gombot egészen addig, amíg a beállítómenü\n" " meg nem jelenik. ON állásba kell kapcsolni.\n" "(3) Ha az 'LCD mode'-ot 'Monitor' vagy\n" " 'Normal' állásba kapcsolja, de felejtse el visszaállítani 'Off'-ra\n" " a kapcsolat bontása elÅ‘tt, máskülönben a kamera gombjait nem\n" " lehet használni. Ha mégis 'sikerült' elÅ‘idézni ezt az állapotot,\n" " kösse össze újból a számítógépet és a kamerát,\n" " és kapcsolja 'Off' állapotba az LCD-t." #: camlibs/sierra/olympus-desc.c:1182 #, fuzzy msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Az alapértelmezett Sierra-meghajtó:\n" "\n" " Ez az alapértelmezett Sierra-meghajtó, segítségével\n" " a kamerában tárolt képek böngészhetÅ‘k és\n" " a kiválasztott képek letölthetÅ‘k.\n" "\n" " A kamera beállításainál található opciók\n" " az Olympus 3040 alapján készültek\n" " és valószínűleg nem fednek le mindent. Ha\n" " meggyÅ‘zÅ‘dött arról, hogy az Ön géptípusánál\n" " egyik beállítás sem hiányzik, vagy tud segíteni\n" " a hiányzó opciók elkészítésében, kérjük\n" " értesítsen minket a gphoto-devel@gphoto.net címen.\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "A feltöltendÅ‘ fájl 0 hosszúságú" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "Nincs elég szabad memória a memóriakártyán" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Nem sikerült lekérdezni a képeket tartalmazó könyvtár nevét" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "Csak a(z) '%s' mappába lehet fájlokat feltölteni" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Legjobb" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (ismeretlen)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "Zársebesség (ezredmásodperc, 0 = automatikus)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Fekete/fehér" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "Fehér alap" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Fekete alap" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "FényerÅ‘/kontraszt" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "FényerÅ‘+" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "FényerÅ‘-" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Égbolt" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "Végtelen/halszem" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "PontmérÅ‘ mód (spot metering)" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1,6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2,5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "Automatikus kikapcsolás (kapcsolat esetén) (s)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "Mennyi idÅ‘ után kapcsoljon le a kamera, ha össze van kötve egy számítógéppel?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "Automatikus kikapcsolás (kapcsolat nélkül) (s)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "Mennyi idÅ‘ után kapcsoljon le a kamera, ha nincs összekötve számítógéppel?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "LCD automatikus kikapcsolás (s)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Képkészítési beállítások" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 #, fuzzy msgid "standard" msgstr "Standard" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "HyPict" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "színes" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "fekete-fehér" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "Megjegyzés: nincs memóriakártya, néhány érték érvénytelen lehet\n" #: camlibs/sierra/sierra.c:1948 #, fuzzy, c-format msgid "Camera Model: %s\n" msgstr "%sA kamera típusa: %s\n" #: camlibs/sierra/sierra.c:1957 #, fuzzy, c-format msgid "Serial Number: %s\n" msgstr "%sSorozatszám: %s\n" #: camlibs/sierra/sierra.c:1960 #, fuzzy, c-format msgid "Software Rev.: %s\n" msgstr "%sA szoftver revíziója: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, fuzzy, c-format msgid "Frames Taken: %i\n" msgstr "%sFelvett képkocka: %i\n" #: camlibs/sierra/sierra.c:1971 #, fuzzy, c-format msgid "Frames Left: %i\n" msgstr "%sMegmaradt képkocka: %i\n" #: camlibs/sierra/sierra.c:1973 #, fuzzy, c-format msgid "Battery Life: %i\n" msgstr "%sA telep élettartama: %i\n" #: camlibs/sierra/sierra.c:1975 #, fuzzy, c-format msgid "Memory Left: %i bytes\n" msgstr "%sMegmaradt memória: %i bájt\n" #: camlibs/sierra/sierra.c:1980 #, fuzzy, c-format msgid "Date: %s" msgstr "%sDátum: %s" #: camlibs/sierra/sierra.c:2041 #, fuzzy msgid "No camera manual available.\n" msgstr "Nem áll rendelkezésre kamera" #: camlibs/sierra/sierra.c:2048 #, fuzzy, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "Néhány megjegyzés az Epson kamerákkal kapcsolatban:\n" "- Néhány paraméter nem módosítható távolról:\n" " * nagyítás\n" " * fókusz\n" " * egyéni fehéregyensúly-beállítás\n" "- A beállításokat a PhotoPC 3000z készüléknél\n" " fejtettem vissza, ha az Ön gépénél nem működik valami,\n" " kérem értesítsen a címen (angolul)\n" #: camlibs/sierra/sierra.c:2060 #, fuzzy msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Néhány megjegyzés az Olympus kamerákkal kapcsolatban:\n" "(1) A kamera beállításai:\n" " 0 érték esetén mindig az alapértelmezés lesz érvényes.\n" "(2) A Olympus C-3040Z (sÅ‘t talán a C-2040Z\n" " és más típusok is) rendelkeznek USB-s vezérlési móddal.\n" " Ez csak akkor használható, ha a kamera át van állítva\n" " 'USB PC control mode'-ba. A módváltási menü eléréséhez\n" " kapcsolja be a kamerát, nyissa fel a memóriakártya\n" " tartójának fedelét és tartsa lenyomva a menü és az LCD\n" " gombot egészen addig, amíg a beállítómenü\n" " meg nem jelenik. ON állásba kell kapcsolni.\n" "(3) Ha az 'LCD mode'-ot 'Monitor' vagy\n" " 'Normal' állásba kapcsolja, de felejtse el visszaállítani 'Off'-ra\n" " a kapcsolat bontása elÅ‘tt, máskülönben a kamera gombjait nem\n" " lehet használni. Ha mégis 'sikerült' elÅ‘idézni ezt az állapotot,\n" " kösse össze újból a számítógépet és a kamerát,\n" " és kapcsolja 'Off' állapotba az LCD-t." #: camlibs/sierra/sierra.c:2087 #, fuzzy msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "sierra SPARClite programkönyvtár\n" "Scott Fritzinger \n" "Támogatás a Sierra-alapú digitális kamerákhoz,\n" "az Olympus, a Nikon, az Epson és más gyártók termékeihez.\n" "\n" "Köszönet a Data Engines-nek (www.dataengines.com)\n" "akik engedélyezték az Olympus C-3030Z for USB termékük\n" "felhasználását a program elkészítéséhez." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (ismeretlen)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Sipix StyleCam Blink meghajtó\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Nem sikerült alkalmazni az USB-beállításokat" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "Meghajtó a SiPix Web2 kamera kezeléséhez." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "Támogatás a Sony DSC-F1 digitális kamerákhoz\n" "M. Adam Kendall \n" "A chotplay CLI felületen alapul, amely\n" "Ken-ichi Hayashi munkája\n" "A Gphoto2-átirat szerzÅ‘je: Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Sony DSC-F55/505 gPhoto programkönyvtár\n" "Támogatás a Sony MSAC-SR1 és a Memory Stick használatához a DCR-PC100-ben\n" "Az eredeti program Mark Davies munkája\n" "Ãtirat a gPhoto2-höz: Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" #: camlibs/soundvision/soundvision.c:339 #, fuzzy, c-format msgid "Firmware Revision: %8s" msgstr "Firmware-revízió: %d.%d\n" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Soundvision-meghajtó\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" #: camlibs/spca50x/library.c:295 #, fuzzy msgid "spca50x library v" msgstr "gsmart programkönyvtár v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "Hibás exponálás (valószínűleg nincs elég fény)" #: camlibs/stv0680/library.c:543 #, fuzzy msgid "Information on STV0680-based camera:\n" msgstr "Információ (STV0680-alapú kamera):\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Firmware-revízió: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "ASIC-revízió: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "ÉrzékelÅ‘azonosító: %d.%d\n" #: camlibs/stv0680/library.c:562 #, fuzzy, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "A kamera %dHz-es fényfelvillantásra van beállítva.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "A kamera memóriája: %d Mbit.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "A kamera támogatja gyorsnézeti képek (thumbnailek) használatát.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "A kamera támogatja videofelvételek készítését.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "A kamera képei fekete-fehérek.\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "A kamera nem tartalmaz memóriát.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "A kamera által támogatott videoformátumok: " #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "Gyártóazonosító: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "Termékazonosító: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "A képek száma: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "A képek maximális száma: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "A kép szélessége: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "A kép magassága: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "A kép mérete: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Az elÅ‘nézeti kép szélessége: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Az elÅ‘nézeti kép magassága: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Az elÅ‘nézeti kép mérete: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Meghajtóprogram az STV0680 ASIC processzorral ellátott kamerákhoz.\n" "A protokoll visszafejtése a CommLite Beta 5 segítségével történt.\n" "Carsten Weinholz \n" "Továbbfejlesztette a meghajtóprogramot az Aiptek PenCam és más STM USB duál " "módú kamerák kezeléséhez." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Információ lekérdezése %i fájlról..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "az sx330z csak USB-s" #: camlibs/topfield/puppy.c:553 #, fuzzy msgid "Driver Settings" msgstr "Egyéb beállítások" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" #: camlibs/topfield/puppy.c:659 #, fuzzy, c-format msgid "Downloading %s..." msgstr "'%s' letöltése..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Kamerameghajtók letöltése innen: '%s'..." #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "Hiba történt a kimeneti/bemeneti programkönyvtárban ('%s'): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Nem található kamera" #: libgphoto2/gphoto2-camera.c:750 #, fuzzy, c-format msgid "Could not detect any camera at port %s" msgstr "Nem található kamera" #: libgphoto2/gphoto2-camera.c:774 #, fuzzy msgid "You have to set the port prior to initialization of the camera." msgstr "A kamera inicializálása elÅ‘tt be kell állítani a port értékét." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Nem sikerült betölteni a(z) '%s' nevű meghajtóprogramot (%s)." #: libgphoto2/gphoto2-camera.c:811 #, fuzzy, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "A(z) '%s' nevű meghajtóprogram nem tartalmaz 'camera init' függvényt." #: libgphoto2/gphoto2-camera.c:864 #, fuzzy msgid "This camera does not provide any configuration options." msgstr "A kamerán nem érhetÅ‘ el egyetlen beállítási opció sem." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "A kamera nem teszi lehetÅ‘vé a beállítások módosítását." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Ez a kamera nem támogat összesítéseket." #: libgphoto2/gphoto2-camera.c:960 #, fuzzy msgid "This camera does not provide a manual." msgstr "Ez a kamera nem tartalmaz kézikönyvet." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "A meghajtóprogram adatai nem érhetÅ‘k el ennél a kameránál." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Ez a kamera nem támogat rögzítést." #: libgphoto2/gphoto2-camera.c:1056 #, fuzzy msgid "This camera can not trigger capture." msgstr "Ez a kamera nem támogat rögzítést." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Ez a kamera nem támogat gyorsnézeteket." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "Az elérési út ('%s') nem abszolút." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "A program megpróbálta törölni a(z) '%s' fájlt a(z) '%s' mappából, de a " "fájlrendszer nem támogatja fájlok törlését." #: libgphoto2/gphoto2-filesys.c:1259 #, fuzzy, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "" "Az eltávolítani kívánt '%s' könyvtár nem üres, még tartalmaz alkönyvtárakat." #: libgphoto2/gphoto2-filesys.c:1264 #, fuzzy, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "Az eltávolítani kívánt '%s' könyvtár még nem üres, fájlokat tartalmaz." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "A fájlrendszer nem támogatja fájlok feltöltését." #: libgphoto2/gphoto2-filesys.c:1359 #, fuzzy, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "A(z) '%s' könyvtár csak %i fájlt tartalmaz, de a kért fájl száma %i volt." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "'%s' nevű fájl nem létezik a(z) '%s' könyvtárban." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "A(z) '%s' fájl nem található." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "A fájlrendszer nem támogatja fájlok letöltését" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Ismeretlen fájltípus: %i." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "A fájlrendszer nem támogatja a fájljellemzÅ‘k lekérdezését." #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "A fájlrendszer nem támogatja fájlinformációk beállítását" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "" "A csak olvasható fájljellemzÅ‘k (pl. szélesség, magasság) nem változtathatók " "meg." #: libgphoto2/gphoto2-filesys.c:2455 #, fuzzy msgid "The filesystem doesn't support getting storage information" msgstr "A fájlrendszer nem támogatja a fájljellemzÅ‘k lekérdezését." #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Hibás adatok" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "A fájl már létezik" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Ismeretlen típus" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "A könyvtár nem található" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "A fájl nem található" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "A könyvtár már létezik" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "Az elérési út nem abzolút" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "A művelet félbeszakadt" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "" #: libgphoto2/gphoto2-result.c:57 #, fuzzy msgid "OS error in camera communication" msgstr "Nem sikerült beállítani a kamera átviteli sebességét" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Ismeretlen hiba a kamerakezelÅ‘ programkönyvtárban" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Ismeretlen hiba" #~ msgid "Date and Time (readonly)" #~ msgstr "Dátum és idÅ‘ (csak olvasható)" #~ msgid "Unavailable" #~ msgstr "Nem áll rendelkezésre" #~ msgid "Set camera date to PC date" #~ msgstr "A kamera dátumának beállítása a számítógép dátumára" #~ msgid "Firmware revision (readonly)" #~ msgstr "A firmware revíziószáma (csak olvasható)" #~ msgid "Power (readonly)" #~ msgstr "Energia (csak olvasható)" #, fuzzy #~ msgid "Unknown (some kind of error)" #~ msgstr "Ismeretlen hiba a kamerakezelÅ‘ programkönyvtárban" #~ msgid "Unsupported image type" #~ msgstr "Nem támogatott képtípus" #~ msgid "Could not follow the link '%s' (%m)." #~ msgstr "A(z) '%s' link követése nem sikerült (%m)." #~ msgid "Could not follow the link '%s' in '%s' (%m)." #~ msgstr "Nem sikerült követni a(z) '%s' linket itt: '%s' (%m)." #~ msgid "Directory Browse" #~ msgstr "Könyvtártallózás" #~ msgid "View hidden directories" #~ msgstr "A rejtett könyvtárak megjelenítése" #, fuzzy #~ msgid "Unsupported port type: %d. This driver only works with USBcameras.\n" #~ msgstr "" #~ "Nem támogatott porttípus: %d. Ez a meghajtó csak USB-alapú kamerákkal " #~ "működik.\n" #~ msgid " " #~ msgstr " " #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for KBGear JamCam v2.0 & v3.0 digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Támogatás a KBGear JamCam v2.0 & v3.0 digitális kamerákhoz\n" #~ "a kamerák protokolljának visszafejtésével.\n" #~ "\n" #~ msgid "Your camera does not support changing filenames." #~ msgstr "A kamera nem támogatja fájlnevek cserélését." #~ msgid "Self Timer (only next picture)" #~ msgstr "Saját idÅ‘zítÅ‘ (csak a következÅ‘ képnél)" #, fuzzy #~ msgid "2.0m" #~ msgstr "2,0" #, fuzzy #~ msgid "0.5m" #~ msgstr "0,5" #, fuzzy #~ msgid "Day-lt" #~ msgstr "Égbolt" #~ msgid "There is nothing to summarize for this camera." #~ msgstr "Nincs összefoglalás ennél a kameránál." #~ msgid "No manual" #~ msgstr "Nincs kézikönyv" #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for Panasonic Coolshot digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Támogatás a Panasonic Coolshot digitális kamerákhoz\n" #~ "a soros protokoll visszafejtése alapján.\n" #~ "\n" #~ msgid "Manual Not Implemented Yet" #~ msgstr "A kézikönyv még nem készült el" #~ msgid "PTP Error: bad parameter" #~ msgstr "PTP hiba: nem megfelelÅ‘ paraméter" #, fuzzy #~ msgid "" #~ "PTP2 driver\n" #~ "(c)2001-2003 by Mariusz Woloszyn .\n" #~ "Enjoy!" #~ msgstr "Készítette: Mariusz Woloszyn . Sok sikert!" #, fuzzy #~ msgid "Camera Time" #~ msgstr "Kamera" #, fuzzy #~ msgid "Macro Mode" #~ msgstr "Felvételi mód" #, fuzzy #~ msgid "Number of values" #~ msgstr "A képek száma: %d\n" #, fuzzy #~ msgid "PTP: Undefined Error" #~ msgstr "PTP - nem definiált hiba" #, fuzzy #~ msgid "PTP: OK!" #~ msgstr "PTP OK." #, fuzzy #~ msgid "PTP: General Error" #~ msgstr "PTP - általános hiba" #, fuzzy #~ msgid "PTP: Session Not Open" #~ msgstr "PTP - a munkafolyamat nincs megnyitva" #, fuzzy #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP - érvénytelen tranzakciós azonosító" #, fuzzy #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP - nem támogatott művelet" #, fuzzy #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP - nem támogatott paraméter" #, fuzzy #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP - nem teljes transzfer" #, fuzzy #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP érvénytelen tárolóazonosító" #, fuzzy #~ msgid "PTP: Invalid Object Handle" #~ msgstr "Érvénytelen PTP objektumazonosító" #, fuzzy #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "Nem támogatott PTP eszköztulajdonság" #, fuzzy #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP érvénytelen objektumformátum-kód" #, fuzzy #~ msgid "PTP: Store Full" #~ msgstr "PTP - a tároló betelt" #, fuzzy #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP - az objektum írásvédett" #, fuzzy #~ msgid "PTP: Store Read Only" #~ msgstr "PTP - a tároló csak olvasható" #, fuzzy #~ msgid "PTP: Access Denied" #~ msgstr "PTP - a hozzáférés megtagadva" #, fuzzy #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP - nem érhetÅ‘ el elÅ‘nézeti kép" #, fuzzy #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP - az önteszt nem sikerült" #, fuzzy #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP - részleges törlés" #, fuzzy #~ msgid "PTP: Store Not Available" #~ msgstr "A PTP-tároló nem érhetÅ‘ el" #, fuzzy #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "Nem támogatott formátumú PTP-specifikáció" #, fuzzy #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP érvénytelen objektuminformáció" #, fuzzy #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP érvénytelen kódformátum" #, fuzzy #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "Ismeretlen PTP gyártókód" #, fuzzy #~ msgid "PTP: Capture Already Terminated" #~ msgstr "A PTP-felvétel már befejezÅ‘dött" #, fuzzy #~ msgid "PTP: Device Busy" #~ msgstr "PTP eszközbusz" #, fuzzy #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP - érvénytelen szülÅ‘objektum" #, fuzzy #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP érvénytelen eszköztulajdonság-formátum" #, fuzzy #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP érvénytelen eszköztulajdonság-érték" #, fuzzy #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP - érvénytelen paraméter" #, fuzzy #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP - a munkafolyamat már meg van nyitva" #, fuzzy #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP - a tranzakció félbeszakadt" #, fuzzy #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "Nem támogatott PTP specifikáció vagy cél" #, fuzzy #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP EK fájlnév szükséges" #, fuzzy #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP EK fájlnévütközés" #, fuzzy #~ msgid "PTP: EK Filename Invalid" #~ msgstr "Érvénytelen PTP EK fájlnév" #, fuzzy #~ msgid "PTP: I/O error" #~ msgstr "PTP I/O-hiba" #, fuzzy #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP hiba: nem megfelelÅ‘ paraméter" #, fuzzy #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP protokollhiba, nem érkezett adat" #, fuzzy #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP protokollhiba, nem jött válasz" #, fuzzy #~ msgid "Date Time" #~ msgstr "Dátum és idÅ‘" #, fuzzy #~ msgid "ShutterSpeed" #~ msgstr "Zársebesség (s)" #, fuzzy #~ msgid "Real Image Width" #~ msgstr "A kép szélessége: %d\n" #, fuzzy #~ msgid "Colour Mode" #~ msgstr "Színmód" #, fuzzy #~ msgid "Exposure Bracketing Distance" #~ msgstr "Exponálásmérés" #, fuzzy #~ msgid "Incadescent" #~ msgstr "Fehéren izzó" #~ msgid "%sCamera ID: %s\n" #~ msgstr "%sKameraazonosító: %s\n" #~ msgid "Sorry, this function not implemented..." #~ msgstr "Ez a funkció még nem használható." #~ msgid "Sorry, nothing to configure..." #~ msgstr "Nincs mit beállítani." #~ msgid "Sorry, taking pictures is not implemented..." #~ msgstr "Képek készítése egyelÅ‘re nem lehetséges." #~ msgid "Couldn't open camera.\n" #~ msgstr "A kamera megnyitása nem sikerült.\n" #~ msgid "Error opening camera\n" #~ msgstr "Hiba történt a kamera megnyitása közben\n" #~ msgid "Picture number is too large.\n" #~ msgstr "A képek száma túl nagy.\n" #~ msgid "" #~ "Sony DSC-F1 Digital Camera Support\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Based on the chotplay CLI interface from\n" #~ "Ken-ichi Hayashi\n" #~ "\n" #~ "This lib may not work. YMMV\n" #~ msgstr "" #~ "Támogatás a Sony DSC-F1 digitális kamerákhoz\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "A chotplay CLI felületen alapul, amely\n" #~ "Ken-ichi Hayashi munkája\n" #~ "\n" #~ "ElképzelhetÅ‘, hogy a program nem minden konfigurációval működik\n" #, fuzzy #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for digital cameras with a sunplus spca50x chip based on several " #~ "other gphoto2 camlib modules and the information kindly provided by " #~ "Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \n" #~ "Támogatás a Mustek gSmart mini digitális kamerákhoz, több gphoto2 camlib " #~ "modul és a Windows-meghajtó forráskódja alapján (ezt a Mustek bocsátotta " #~ "rendelkezésre).\n" #~ "\n" #~ msgid "Could not open '%s'" #~ msgstr "Nem sikerült megnyitni: '%s'..." #~ msgid "Could not find any driver for '%s'" #~ msgstr "Nem található meghajtó ehhez: '%s'" #~ msgid "No additional information available." #~ msgstr "Nem áll rendelkezésre további információ." #~ msgid "Could not load required camera driver '%s'." #~ msgstr "A szükséges meghajtóprogram ('%s') betöltése nem sikerült." #~ msgid "Could not append folder '%s' as this folder already exists." #~ msgstr "" #~ "A(z) '%s' nevű könyvtár hozzáfűzése nem sikerült, mert már létezik ilyen " #~ "nevű könyvtár." #~ msgid "Could not find folder '%s'." #~ msgstr "'%s' nevű könyvtár nem ttalálható." #~ msgid "Folder '%s' does not contain a folder '%s'." #~ msgstr "A(z) '%s' nevű könyvtár nem tartalmaz '%s' nevű fájlt." #~ msgid "" #~ "Could not append '%s' to folder '%s' because this file already exists." #~ msgstr "" #~ "Nem sikerült hozzáfűzni ezt: '%s' a(z) '%s' mappához, mert a fájl már " #~ "létezik." #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "'%s' letöltése a(z) '%s' mappából..." #~ msgid "" #~ "Could not open '/proc/meminfo' for reading ('%m'). Make sure the proc " #~ "filesystem is mounted." #~ msgstr "" #~ "Nem sikerült megnyitni olvasásra a '/proc/meminfo' fájlt ('%m'). " #~ "EllenÅ‘rizze, hogy a proc fájlrendszer csatlakoztatva van-e." #~ msgid "An error occured while reading '/proc/meminfo' ('%m')." #~ msgstr "Hiba történt '/proc/meminfo' olvasása közben ('%m')." #~ msgid "sysctl call failed ('%m')." #~ msgstr "A sysctl hívás nem sikerült ('%m')." #, fuzzy #~ msgid "sysconf call failed ('%m')." #~ msgstr "A sysctl hívás nem sikerült ('%m')." #, fuzzy #~ msgid "swapctl call failed ('%m')." #~ msgstr "A sysctl hívás nem sikerült ('%m')." #, fuzzy #~ msgid "" #~ "For the A50, using 115200 may effectively be slower than using 57600\n" #~ "If you experience a lot of serial transmission errors, try to have your " #~ "computer as idle as possible\n" #~ " (i.e. no disk activity)\n" #~ msgstr "" #~ "Az A50-nél a 115200 nem gyorsabb az 57600-nál\n" #~ "Könyvtárak használata NEM támogatott\n" #~ "Ha sok átviteli hibával találkozik, próbálja csökkenti a számítógép " #~ "terhelését (pl. a lemezkezelését)" #, fuzzy #~ msgid "Unsupported port type: %d.This driver only works with USBcameras.\n" #~ msgstr "" #~ "Nem támogatott porttípus: %d. Ez a meghajtó csak USB-alapú kamerákkal " #~ "működik.\n" #, fuzzy #~ msgid "Incadesent" #~ msgstr "Fehéren izzó" #, fuzzy #~ msgid "Could not find any driver for '%s' / '%s'" #~ msgstr "Nem található meghajtó ehhez: '%s'" #, fuzzy #~ msgid "No thumbnail could be found for %s" #~ msgstr "'%s' nevű fájl nem létezik a(z) '%s' könyvtárban." #~ msgid "gsmart library v" #~ msgstr "gsmart programkönyvtár v" #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for the Mustek gSmart mini series of digital cameras based on " #~ "several other gphoto2 camlib modules and the windows driver source kindly " #~ "provided by Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \n" #~ "Támogatás a Mustek gSmart mini digitális kamerákhoz, több gphoto2 camlib " #~ "modul és a Windows-meghajtó forráskódja alapján (ezt a Mustek bocsátotta " #~ "rendelkezésre).\n" #~ "\n" #, fuzzy #~ msgid "Written by Mariusz Woloszyn . Enjoy!" #~ msgstr "Készítette: Mariusz Woloszyn . Sok sikert!" #~ msgid "" #~ "Expected %i, got %i. Please report this error to ." #~ msgstr "" #~ "%i helyett %i érkezett. Kérjük jelezze a hibát itt: ." #, fuzzy #~ msgid "" #~ "Expected %i bytes, got %i. Please report this error to ." #~ msgstr "" #~ "%i helyett %i érkezett. Kérjük jelezze a hibát itt: ." #, fuzzy #~ msgid "" #~ "Communication error even after 2 retries. Please contact ." #~ msgstr "" #~ "IdÅ‘túllépési hiba történt 2 sikertelen próbálkozás után. Kérjük jelezze a " #~ "hibát itt: ." #, fuzzy #~ msgid "" #~ "spca504_flash camlib\n" #~ " Authors: Till Adam\n" #~ " \n" #~ "based on work by Matthias Krauss\n" #~ "and Mark A. Zimmerman " #~ msgstr "" #~ "spca504 Flash camlib\n" #~ " SzerzÅ‘k: Till Adam\n" #~ " \n" #~ "Matthias Krauss és\n" #~ "Mark A. Zimmerman munkájának felhasználásával" #, fuzzy #~ msgid "remove" #~ msgstr "távoli" #, fuzzy #~ msgid "Could not identify camera based on name \"%s\"" #~ msgstr "Nem sikerült lekérdezni a lemez nevét: %s" #~ msgid "Camera not ready, could not lock camera keys: %s" #~ msgstr "A kamera nem áll készen, a kamera gombjait nem sikerült zárolni: %s" #~ msgid "%s" #~ msgstr "%s" #~ msgid "9600" #~ msgstr "9600" #~ msgid "19200" #~ msgstr "19200" #~ msgid "38400" #~ msgstr "38400" #~ msgid "57600" #~ msgstr "57600" #~ msgid "115200" #~ msgstr "115200" #~ msgid "VGA (640x480)" #~ msgstr "VGA (640x480)" #~ msgid "XGA (1024x768" #~ msgstr "XGA (1024x768)" #~ msgid "Not implemented!" #~ msgstr "Nem implementált funkció!" #~ msgid "Revision: %8s" #~ msgstr "Revízió: %8s" #~ msgid "" #~ "0.1 Traveler SX330z ALDI-cam\n" #~ "(many other vendors, like Jenoptik, Skanhex, Maginon should work too.\n" #~ "Even the 4100 Cameras could work.\n" #~ "Not tested, please report if this driver works with them!)\n" #~ msgstr "" #~ "0.1 Traveler SX330z ALDI-cam\n" #~ "(Sok más gyártó, pl. a Jenoptik, a Skanhex és a Maginon gyártmányaival is " #~ "működik.\n" #~ "A 4100-as kamerákkal is működÅ‘képes.\n" #~ "Tesztelést ezekkel nem végeztünk, ezért kérjük jelezze, ha a " #~ "meghajtóprogram nem működik.\n" #~ msgid "" #~ "(Traveler) SX330z Library\n" #~ "See summary for more information\n" #~ "Dominik Kuhlen \n" #~ msgstr "" #~ "(Traveler) SX330z programkönyvtár\n" #~ "További információ a leírásban található\n" #~ "Dominik Kuhlen \n" libgphoto2-2.5.9/po/da.po0000644000175000001440000120173212623156271012072 00000000000000# Danish translation for libgphoto2. # Copyright (C) 2005 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # Keld Simonsen , 2000. # Mogens Jaeger , 2008, 2009, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: libgphoto2 2.5.4\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-03-27 11:56+0100\n" "Last-Translator: Mogens Jaeger \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Language: Danish\n" "X-Poedit-Country: DENMARK\n" "X-Generator: Lokalize 1.5\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" "Adc65\n" "Benjamin Moos" #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" "Kameraet bruger tilsyneladende ikke CF-kort\n" "Desværre understøtter vi ikke det p.t. ;-(\n" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "Kameraet har taget %d billeder, og bruger CF-kort.\n" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "Agfa CL20 Linux driver gruppen!\n" " Email os pÃ¥ cl20@poeml.de \n" " besøg os pÃ¥ http://cl20.poeml.de " #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "Dit USB kamera har et Aox chipsæt,\n" "Antallet af lav-opløsningsbilleder er %i\n" "Antallet af høj-opløsningsbilleder er %i\n" "Antallet af billeder er %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Aox almen driver\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "Din USB billedramme har et AX203 chipsæt\n" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "AX203 baserede billedrammer har forskellige opløsninger.\n" "Disse enhederes gphoto driver muliggør download,\n" "oplægning og sletning af billeder fra billedrammen." #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "AX203 USB billedramme driver\n" "Hans de Goede \n" "Denne enhed muliggør download, upload\n" "og sletning af billeder fra billedrammen." #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 msgid "Picture Frame Configuration" msgstr "Konfiguration af billedramme" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "Synkronisér rammedata og tid med PC" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "Antal billeder: %i\n" "Firmware version: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Omvendt beregning af billeddata ved:\n" "Jeff Laing \n" "\n" "Implementeret ved brug af dokumenter\n" "fundet pÃ¥ nettet. Tilladelse givet af Vision." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "Kunne ikke oprette katalog %s." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "Kunne ikke fjerne katalog %s." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "fejl ved lÃ¥sning af nøgler." #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*UKENDT*" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image: initiering af canon_usb_list_all_dirs() fejlede med " "status %li" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image: afsluttende canon_usb_list_all_dirs() fejlede med " "status %i" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "Navnet '%s' (%li tegn) for langt, der mÃ¥ højst bruges 30 tegn." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "Det er ikke tilladt at bruge smÃ¥ bogstaver i %s." #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory: FEJL: begyndelsesbesked er for kort (%i < minimum " "%i)" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_directory: NÃ¥ede ende af pakke under undersøgelse af den " "første katalogindgang" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "canon_int_list_directory: stødte pÃ¥ afkortet katalogindgang" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Fil beskyttet." #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_get_info_func: FEJL: begyndelsesbesked er for kort (%i < minimum " "%i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "Kunne ikke danne JPEG miniature fra data: Ingen start/slut" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "Kunne ikke danne JPEG miniature fra data: Data er ikke JFIF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "NULL parameter \"%s\" i %s ved linje %i" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" "Ved ikke hvordan kamera->port->type værdi %i ogsÃ¥ kendt som 0x%x ved %s " "linje %i skal hÃ¥ndteres." #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "FATAL FEJL: første CRC værdi for længden %d er ukendt\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "ikke i stand til at gætte første CRC værdi\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "advarsel: CRC ikke kontrolleret (add len %d, value 0x%04x) " "#########################\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "Kompatibilitetstilstand" #: camlibs/canon/library.c:98 msgid "Thumbnail" msgstr "Miniature" #: camlibs/canon/library.c:99 msgid "Full Image" msgstr "Helt billede" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "Bulb" #: camlibs/canon/library.c:216 msgid "Auto focus: one-shot" msgstr "Auto-fokus: enkeltbillede" #: camlibs/canon/library.c:217 msgid "Auto focus: AI servo" msgstr "Autofokus: AI servo" #: camlibs/canon/library.c:218 msgid "Auto focus: AI focus" msgstr "Auto-fokus: AI fokus" #: camlibs/canon/library.c:219 msgid "Manual focus" msgstr "Manuel fokusering" #: camlibs/canon/library.c:224 msgid "Beep off" msgstr "Bippelyd fra" #: camlibs/canon/library.c:225 msgid "Beep on" msgstr "Bippelyd til" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 msgid "Flash off" msgstr "Blitz slukket" #: camlibs/canon/library.c:231 msgid "Flash on" msgstr "Blitz til" #: camlibs/canon/library.c:232 msgid "Flash auto" msgstr "Blitz auto" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "AUTO" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "P" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "Tv" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "Av" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "M" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "A-DEP" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "M-DEP" #: camlibs/canon/library.c:267 msgid "Manual 2" msgstr "Manuel 2" #: camlibs/canon/library.c:268 msgid "Far scene" msgstr "Langt-væk scene" #: camlibs/canon/library.c:269 msgid "Fast shutter" msgstr "Hurtig lukker" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "Langsom lukker" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "Nat scene" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "GrÃ¥skala" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Sepia" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 msgid "Portrait" msgstr "Portræt" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Spot" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Makro" #: camlibs/canon/library.c:277 msgid "BW" msgstr "S/H" #: camlibs/canon/library.c:278 msgid "PanFocus" msgstr "Panoreringsfokusering" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "Intens" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 msgid "Neutral" msgstr "Neutral" #: camlibs/canon/library.c:282 msgid "Long shutter" msgstr "Lang lukker" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "Super macro" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "Bladhang" #: camlibs/canon/library.c:285 msgid "Indoor" msgstr "Indendørs" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "Fyrværkeri" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "Strand" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "Undervands" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "Sne" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "Børn og kæledyr" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "Nat snapshot" #: camlibs/canon/library.c:292 msgid "Digital macro" msgstr "Digital macro" #: camlibs/canon/library.c:293 msgid "MyColors" msgstr "Minefarver" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "Foto i film" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "RÃ¥" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "RÃ¥ 2" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "Lille Normal JPEG" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "Lille Fin JPEG" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "Mellem Normal JPEG" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "Mellem Fin JPEG" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "Stor Normal JPEG" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "Stor Fin JPEG" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "RÃ¥ + Lille Normal JPEG" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "RÃ¥ + Lille Fin JPEG" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "RÃ¥ + Mellem Normal JPEG" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "RÃ¥ + Mellem Fin JPEG" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "RÃ¥ + Stor Normal JPEG" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "RÃ¥ + Stor Fin JPEG" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" "Dette er driveren til Canon PowerShot, Digital IXUS, IXY Digital,\n" " og EOS Digital kameraer i deres naturlige (af og til kaldet \"normal\")\n" " tilstand Den understøtter ogsÃ¥ et mindre antal af Canon digital " "videooptagere\n" " med mulighed for fastbilleder.\n" "Den inkluderer kode til kommunikation via en seriel port eller USB " "forbindelse,\n" " men ikke (endnu) via IEEE 1394 (Firewire).\n" "Den er designet til at virke med over 70 modeller, sÃ¥vel ældre som PowerShot " "A5\n" " og Pro70 fra 1998, og sÃ¥ nye som PowerShot A510 og EOS 350D fra 2005.\n" "Den er ikke blevet testet med EOS 1D eller EOS 1Ds.\n" "Ved A50, kan brug af 115200 bps være langsommere end brug af 57000\n" "Hvis du oplever mange seriel-overførselsfejl, prøv at holde din computer\n" " sÃ¥ ledig som muligt (f.eks. ingen diskaktivitet)\n" #: camlibs/canon/library.c:497 #, c-format msgid "Camera unavailable: %s" msgstr "Kamera ikke tilgængeligt: %s" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Slukker kameraet" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Fejl under eksponering af billede" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Kunne ikke finde disknavn: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Ingen begrundelse tilgængelig" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Kunne ikke finde diskinformation: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "Intern fejl #1 i get_file_func() (%s linje %i)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "Kunne ikke finde nogen lydfil til %s" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " Drev %s\n" " %11s byte total\n" " %11s byte til rÃ¥dighed" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "Strømforsyning" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "pÃ¥ batteri" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "strøm O.k." #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "mangler strøm" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "ikke tilgængelig: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (vært tid %s%i sekunder)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Kamera identifikation:\n" " Model: %s\n" " Ejer: %s\n" "\n" "Strøm status: %s\n" "\n" "Flashkort information:\n" "%s\n" "\n" "Tid: %s\n" #: camlibs/canon/library.c:1145 msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Canon PowerShot seriens driver ved\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 tilføjelser ved Ole W. Saastad\n" "Yderligere forbedringer ved\n" " Holger Klemm\n" " Stephen H. Westin" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Fejl ved sletning af fil" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Fejl, tilknyttet miniaturefil slettet" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "" "Højere overførselshastighed end 57600 bps er ikke understøttet i dette kamera" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Kunne ikke hente ram-kort drevbogstav" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "Kunne ikke oplægge, intet frit mappenavn til rÃ¥dighed!\n" "999CANON katalognavn eksisterer, og et AUT_9999.JPG billede findes." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Kunne ikke oprette \\DCIM katalog." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Kunne ikke oprette mÃ¥l-katalog." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "Konfiguration af kamera og driver" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Kameraindstillinger" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 msgid "Owner Name" msgstr "Ejers navn" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 msgid "Capture Size Class" msgstr "Optagelsens størrelseklasse" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "ISO hastighed" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "Ukendt" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 msgid "Shooting mode" msgstr "Optagetilstand" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 msgid "Shutter Speed" msgstr "Lukkerhastighed" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "Zoom" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "BlændeÃ¥bning" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Eksponeringskompensation" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 msgid "Image Format" msgstr "Billedformat" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Fokuseringstilstand" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Blitz-tilstand" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Bippe" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 msgid "Camera Actions" msgstr "Kamerahandlinger" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "Synkroniser kameraets dato og tid med PC" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 msgid "Camera Status Information" msgstr "Kamera status information" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "Kameramodel" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Dato og tid" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Fejl" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 msgid "Firmware Version" msgstr "Firmware version" #: camlibs/canon/library.c:1956 msgid "Power" msgstr "Strøm" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Driver" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Vis alle filer" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Behold filnavn ved oplægning" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Kamera ikke tilgængeligt" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Ejernavn ændret" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "kunne ikke ændre ejernavn" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "Klasse for optagelsesstørrelse ændret" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "Ugyldig indstilling for klasse for optagelsesstørrelse" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "Ugyldig ISO hastighedsindstilling" #: camlibs/canon/library.c:2056 msgid "ISO speed changed" msgstr "ISO hastighed ændret" #: camlibs/canon/library.c:2058 msgid "Could not change ISO speed" msgstr "Kunne ikke ændre ISO hastighed" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "Ugyldig optage-tilstand indstilling" #: camlibs/canon/library.c:2085 msgid "Shooting mode changed" msgstr "Optage-tilstand ændret" #: camlibs/canon/library.c:2087 msgid "Could not change shooting mode" msgstr "Kunne ikke ændre optage-tilstand" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "Ugyldig indstilling af lukkerhastighed" #: camlibs/canon/library.c:2114 msgid "Shutter speed changed" msgstr "Lukkerhastighed ændret" #: camlibs/canon/library.c:2116 msgid "Could not change shutter speed" msgstr "Kunne ikke ændre lukkerhastighed" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 msgid "Invalid aperture setting" msgstr "Ugyldig blændeÃ¥bningsindstilling" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 msgid "Aperture changed" msgstr "BlændeÃ¥bning ændret" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 msgid "Could not change aperture" msgstr "Kunne ikke ændre blændeÃ¥bning" #: camlibs/canon/library.c:2167 msgid "Invalid exposure compensation setting" msgstr "Ugyldig eksponerings-kompensations-indstilling" #: camlibs/canon/library.c:2170 msgid "Exposure compensation changed" msgstr "Eksponeringskompensation ændret" #: camlibs/canon/library.c:2172 msgid "Could not change exposure compensation" msgstr "Kunne ikke ændre eksponerings-kompensation" #: camlibs/canon/library.c:2194 msgid "Invalid image format setting" msgstr "Ugyldig billedformat indstilling" #: camlibs/canon/library.c:2198 msgid "Image format changed" msgstr "Billedformat ændret" #: camlibs/canon/library.c:2200 msgid "Could not change image format" msgstr "Kunne ikke ændre billedformat" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "Ugyldig indstilling af fokuseringstilstand" #: camlibs/canon/library.c:2226 msgid "Focus mode changed" msgstr "Fokuseringstilstand ændret" #: camlibs/canon/library.c:2228 msgid "Could not change focus mode" msgstr "Kunne ikke ændre fokuseringstilstand" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "Ugyldig bippe-tilstand indstilling" #: camlibs/canon/library.c:2255 msgid "Beep mode changed" msgstr "Bippe-tilstand ændret" #: camlibs/canon/library.c:2257 msgid "Could not change beep mode" msgstr "Kunne ikke ændre bippe-tilstand" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "Zoom-niveau ændret" #: camlibs/canon/library.c:2276 msgid "Could not change zoom level" msgstr "Kunne ikke ændre zoom-niveau" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "Ugyldig blitz-tilstand indstilling" #: camlibs/canon/library.c:2332 msgid "Flash mode changed" msgstr "Blitz-tilstand ændret" #: camlibs/canon/library.c:2334 msgid "Could not change flash mode" msgstr "Kunne ikke ændre blitz-tilstand" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "indstil tid" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "kunne ikke indstille tid" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "Ikke understøttet port type anført %i = 0x%x. Initialisering umulig." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Batteri tømt, kamera slukket." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "FEJL: uventet meddelelse" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "FEJL: beskedoverløb" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "FEJL: ude af rækkefølge." #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "FEJL: uventet pakketype." #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "FEJL: beskedformat fejl." #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "FEJL: uventet besked 2." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Oplægger fil..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Henter fil..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "canon_serial_get_dirents: canon_serial_dialogue fejlede ved hentning af " "katalogindgange" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" "canon_serial_get_dirents: Begyndelseskatalogindgang for kort (kun %i byte)" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "canon_serial_get_dirents: Kunne ikke allokere %i byte af hukommelsen" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "canon_serial_get_dirents: Kunne ikke læse flere katalogindgange" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "canon_serial_get_dirents: Modtog afkortet katalogindgang" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" "canon_serial_get_dirents: For mange katalogindgange, det mÃ¥ køre i sløjfe." #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents: Kunne ikke genskabe katalogindgangsstørrelse til " "%i byte" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Fejl under ændring af hastighed." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Nulstiller protokol..." #: camlibs/canon/serial.c:1311 msgid "Camera OK." msgstr "Kamera O.k." #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Søger efter kamera ..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Prøver at kontakte kameraet..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Kommunikationsfejl 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Intet svar fra kamera" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Svar ikke genkendt" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "Fandt et \"%s\" ogsÃ¥ kendt som \"%s\"" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "Ukendt model \"%s\"" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "Forkert EOT" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Kommunikationsfejl 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Kommunikationsfejl 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Ændrer hastighed... vent..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Fejl under ændring af hastighed" #: camlibs/canon/serial.c:1454 msgid "Error waiting for ACK during initialization, retrying" msgstr "Fejl under venten pÃ¥ ACK under initialisering, prøver igen" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Fejl under venten pÃ¥ ACK under initialisering" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Forbundet til kamera" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "FEJL: fatal fejltilstand opdaget, kan ikke fortsætte " #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "FEJL: %d er for stor" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Henter miniature..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "IKKE GENKENDT" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "Kunne ikke etablere første kontakt med kameraet" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "Kameraet var allerede aktivt" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "Kameraet blev vækket" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "Initieringssvar '%c' fra kamera blev ikke genkendt" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" "Trin #2 i initialiseringen fejlede: (\"%s\" ved læsning af %i). Kameraet er " "ikke driftsklart" #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "Trin #2 i initialiseringen fejlede! (returnerede %i byte, forventede %i). " "Kameraet er ikke driftsklart" #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" "Trin #3 i initialiseringen fejlede: \"%s\" ved læsning af %i. Kameraet er " "ikke driftsklart" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" "Trin #3 i initialiseringen fejlede: (returnerede %i byte, forventede %i). " "Kameraet er ikke driftsklart" #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" "Trin #3 i initialiseringen fejlede: \"%s\" ved læsning af %i. Kameraet er " "ikke driftsklart" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "Trin 4 fejlede: \"%s\" ved læsning af %i Kameraet er ikke driftsklart" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" "Trin #4 fejlede (returnerede %i, forventede %i). Kameraet er ikke driftsklart" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "Kameraet er ikke klart, flere 'Identificering af kamera' fejlede: %s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "Kameraet er ikke klart, get_battery fejlede: %s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: Modtog uventet længde fra \"lock keys\" funktionen (%i " "byte, forventet %i)" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "canon_usb_lock_keys: Modtog uventet længde (%i byte, forventet %i)" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "canon_usb_unlock_keys: Modtog uventet længde (%i byte, forventet %i)" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_get_body_id: Modtog uventet datalængde (%i byte, forventet %i)" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Modtager data..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "Løb tør for hukommelse: %d byte nødvendigt." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes: canon_usb_dialogue fejlede" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "Advarsel i canon_usb_set_file_attributes: canon_usb_dialogue returnerede " "fejlstatus 0x%08x fra kameraet" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "Kunne ikke læse fra fil\"%s\"" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "Ikke mere hukommelse: %ld byte nødvendigt." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "Filoplægning mislykkedes." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "Filen var for stor. Du er nok nødt til at slukke og tænde for dit kamera, " "før du kan oplægge flere filer til det." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" "canon_usb_get_dirents: Kunne ikke passe pakkeindholdet ind i buffer, " "'%.96s' (afkortet) for lang." #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents: canon_usb_long_dialogue fejlede under hentning af " "katalogindgange, returnerede %i" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" "canon_usb_list_all_dirs: Kunne ikke passe pakkeindholdet ind i buffer, " "'%.96s' (afkortet) for lang." #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs: canon_usb_long_dialogue fejlede under hentning af " "katalogindgange, returnerede %i" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "Fandt et '%s'." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "Navnet \"%s\" fra kameraet, passer ikke med noget kendt kamera" #: camlibs/casio/casio-qv.c:152 #, c-format msgid "Image type %d not supported" msgstr "Billedetype %d er ikke understøttet" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "Billede %s er beskyttet mod sletning." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" "Grundlæggende driver skrevet af Lutz Mueller .\n" "Dette programmel har QVplay's source code, skrevet af Ken-ichi HAYASHI og Jun-ichiro \"itojun\" Itoh .\n" "Integrering af QVplay ved Michael Haardt ." #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "Batteri niveau: %.1f volt. Revision: %08x." #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "Konfiguration af kamera" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "Batteri" #: camlibs/casio/casio-qv.c:275 msgid "Brightness" msgstr "Lyshed" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 msgid "Too bright" msgstr "For lys" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 msgid "Too dark" msgstr "For mørk" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "O.k." #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "Dit Logitech Clicksmart 310 indeholder %i billede.\n" msgstr[1] "Dit Logitech Clicksmart 310 indeholder %i billeder.\n" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" "To opløsningsindstillinger, 352x288 og 176x144. Fotodata er i\n" "jpeg format nÃ¥r det nedhentes, og derfor har de ingen forud\n" "fastsat størrelse. Derfor skal det annoncerede maksimale antal\n" "billeder der kan være i kameraet, forstÃ¥s som en tilnærmelse.\n" "Alle gphoto2 indstillinger virker, med undtagelse af de følgende\n" "som hardware ikke understøtter:\n" "\tSletning af individuelle eller udvalgte billeder (gphoto2 -d)\n" "\tOptagning (gphoto2 --capture eller --capture-image)\n" "Dog er optagning mulig ved brug af webcam interface,\n" "understøttet af spca50x kernel modul.\n" "GUI tilgang med gtkam er blevet testet, og virker. Kameraet\n" "danner dog ikke separate miniaturer. Idet billederne allerede\n" "er smÃ¥ og i lav opløsning, nedhenter driveren de aktuelle billeder,\n" "og bruger dem som miniaturer.\n" "Kameraet kan optage i 'video clip' tilstand. De resulterende\n" "rammer gemmes her som en serie af still-billeder. Brugeren\n" "kan animere dem med (f.eks.) ImageMagick's 'animeringsfunktion'.\n" "For flere detaljer om kameraets funktioner, se i\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" "For kameraer med indmad fra S&Q Technologies, der har\n" "USB fremstiller ID 0x2770 og produkt ID 0x905C, 0x9050,\n" "0x9051, eller 0x913D. Billeder gemmes i PPM formatet.\n" "\n" "Nogle af disse kameraer tillader programmer at slette alle billeder.\n" "Andre gør ikke. Ingen understøttede kameraer kan optage billeder.\n" "Alle kan udføre optage-forhÃ¥ndsvis (billede optaget og sendt til computer),\n" "Hvis sletning virker, vil gphoto2 -- capture image have den side-effekt,\n" "at det ogsÃ¥ sletter det der er pÃ¥ kameraet.\n" "\n" "Oplægning og sletning af individuelle billeder ved brug af program-" "kommandoer,\n" "er ikke understøttet af hardware i disse kameraer.\n" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "sq905C almen driver\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Billedetype er ikke understøttet" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "Antal billeder: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "Kun root-mappe er understøttet - du ville have en filliste for katalog '%s'." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Problemer ved hentning af antallet af billeder" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Problemer med hentning af billedinformation" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Optagetype er ikke understøttet" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (batteri er %d%% fuldt)" #: camlibs/dimera/dimera3500.c:455 #, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 version %s %d/%d %d:%d.\n" "%d billeder brugt af cirka %d (højopløsning) eller %d (lavopløsning).\n" "Kamera egenskaber: %s, %s, %s, %s.\n" "Blitz er %s, er %s og er %s.\n" "Opløsning er sat til %s.\n" "Kamera er %s tændt %s.\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Blitz" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 msgid "No Flash" msgstr "Ingen blitz" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Dobbelt irisblænde" #: camlibs/dimera/dimera3500.c:468 msgid "No Dual Iris" msgstr "Ingen dobbelt irisblænde" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "Opløsningsomskifter" #: camlibs/dimera/dimera3500.c:470 msgid "No Resolution Switch" msgstr "Ingen opløsningsomskifter" #: camlibs/dimera/dimera3500.c:472 msgid "No Power Light" msgstr "Intet strøm lys" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "Tændt" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "Slukket" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "klar" #: camlibs/dimera/dimera3500.c:476 msgid "Not ready" msgstr "Ikke klar" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "udfyldningstilstand" #: camlibs/dimera/dimera3500.c:478 msgid "Not in fill mode" msgstr "Ikke i udfyldningstilstand" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "lav (320x240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "høj (640x480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "eksternt" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "internt" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* Billeduheld eller problemer med kommunikation\n" " skyldes ofte ringe batteristand.\n" "* Billeder optaget eksternt til kameraet, lagres i\n" " midlertidig RAM, og ikke pÃ¥ hukommelses kortet.\n" "* Eksponeringskontrol ved optagning af billeder, kan\n" " konfigureres manuelt, eller sat til automatisk tilstand.\n" "* Billedkvaliteten er for øjeblikket lavere end det er muligt.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "Denne software blev skabt med hjælp fra\n" "proprietær information tilhørende StarDot\n" "Technologies.\n" "\n" "Forfatter:\n" " Brian Beattie \n" "Bidragydere:\n" " Chuck Homic \n" " Omsætning af rÃ¥-kamerabilleder til RGB\n" " Dan Fandrich \n" " Information om protokol, rÃ¥-billedformat,\n" " gphoto2 port\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Problem med læsning af billede fra kort" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Ikke mere hukommelse" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "Hjemhentning billede..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Problemer ved hjemhentning af billede" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "Bruger afbrød hjemhentning" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Problemer med at tage levende billeder" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Eksponering" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "Automatisk eksponeringsjustering ved smugkigning" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "Eksponeringsniveau ved forhÃ¥ndsvisning" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "Automatisk blitz ved optagning" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Problem med Ã¥bning af port" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Problem ved nulstilling af kamera" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Problem ved indstilling af kameraets kommunikationshastighed" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Ligner et modem, og ikke et kamera" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "Lister filer i '%s'..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "Lister mapper i '%s'..." #: camlibs/directory/directory.c:381 #, c-format msgid "Could not get information about '%s' (%s)." msgstr "Kunne ikke finde information om '%s' (%s)." #: camlibs/directory/directory.c:414 #, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Kunne ikke hente information om '%s' i '%s' (%s)." #: camlibs/directory/directory.c:462 #, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Kunne ikke ændre tid for filen '%s' i '%s' (%s)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Kunne ikke Ã¥bne '%s'." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" "Katalog-gennemsøgning \"kamera\" lader dig indekserne fotografier pÃ¥ din " "harddisk." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "" "KataloggennemsøgningsmÃ¥de - skrevet af Scott Fritzinger ." #: camlibs/directory/directory.c:671 #, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "Kunne ikke slette filen '%s' i mappen '%s' (fejlkode %i: %s)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" "Hjemhent programmet til Digital Dream Enigma 1.3. by , og tilpasset fra spca50x driver. Tak til spca50x teamet, det var let " "at overføre Jeres driver til dette kamera! " #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "Kameraet sendte kun %i byte, men vi skal bruge mindst %i." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Kunne ikke kontakte kamera." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Modtog uventede data (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "Forkert undvigesekvens: forventede 0x%02x, fik 0x%02x." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Forkerte data - fik 0x%02x, forventede 0x%02x." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "Forkerte data - fik 0x%02x, forventede 0x%02x eller 0x%02x." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "Forkert checksum - fik 0x%02x, forventede 0x%02x." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "Kameraet afviste kommandoen." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "Kamera nulstiller sig selv." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "Kameraet sendte uventede byte 0x%02x." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Hjemhenter..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "Kunne ikke allokere %i byte til hjemhentning af miniature." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "Kunne ikke allokere %i byte til hjemhentning af billede." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "Kameraet accepterer ikke '%s' som filnavn." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "Kunne ikke initialisere oplægning (kameraet svarede med 0x%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "Kameraet understøtter ikke hastigheden %i." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "Kunne ikke sætte hastigheden til %i (kameraet svarede med %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Baseret pÃ¥ fujiplay ved Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "Bithastighed %ld er ikke understøttet." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Konfiguration for dit FUJI-kamera" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Dato og tid" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Version: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Model: " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "Ledig hukommelse: " #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "gsmart300 bibliotek \n" "Till Adam \n" "Jerome Lodewyck \n" "Understøttelse for Mustek gSmart 300 digitalkameraer\n" "baseret pÃ¥ adskillige andre gphoto2 camlib-moduler, og specifikationer " "venligst leveret af Mustek.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Ikkeunderstøttet porttype: %d. Denne driver kan kun bruges med USB-" "kameraer.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Kunne ikke nulstille kameraet.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Kameraet understøtter kun sletning af den sidste fil i kameraet. I dette " "tilfælde er det filen '%s'." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" "Nuværende kamera tid: %04d-%02d-%02d %02d:%02d\n" "Ledig kort hukommelse: %d\n" "Billeder pÃ¥ kortet: %d\n" "Ledig plads (billeder): %d\n" "Batteri niveau: %d %%." #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" "hp215\n" "Marcus Meissner \n" "Driver der giver tilgang til HP Photosmart 215 kamera.\n" "Udvundet af det selvstændige hp215 program.\n" "Driveren tillader hentning af billeder og smugkig, og sletning af billeder.\n" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "Dit kamera er et iClick 5X.\n" "Der er i alt taget %i billeder.\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" "Information vedrørende kameraer med ID 0x2770:0x9153.\n" "\n" "Vi anbefaler ikke at bruge GUI-programmer sammen med\n" "dette kamera, med mindre du bare morer dig, eller prøver\n" "at se om du kan sprænge en sikring.\n" "Hvis du seriøst vil hente dine billeder, prøv med\n" "gphoto2 -P\n" "fra en kommandolinie.\n" "Derudover - lad endelig være med at prøve at hjemhente videoklip.\n" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "iClick 5X driver\n" "Theodore Kilgore \n" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Frames taget : %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "jamcam bibliotek v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "Hjemhenter data..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "Hjemhenter miniature..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "JD11 kameraet virker ret godt med denne driver.\n" "Der skal bruges et RS232 interface @ 115 kbit til billedoverførsel.\n" "Driveren tillader dig at hente\n" "\n" " - miniaturer (64x48 PGM format)\n" " - hele billeder (640x480 PPM format)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Driver til Jenoptik JD11 kameraet.\n" "Protokol omvendt-beregnet ved brug af WINE og IDA." #: camlibs/jd11/jd11.c:186 msgid "JD11 Configuration" msgstr "JD11 konfiguration" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Andre indstillinger" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Pæreeksponeringstid" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Farveindstillinger" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "Rød" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Grøn" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "BlÃ¥" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Dette kamera har et Jeilin JL2005A chipsæt.\n" "Der er i alt %i billeder.\n" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" "Denne driver understøtter kameraer med en Jeilin jl2005a chip\n" "Kameraet understøtter ikke sletning af billeder, eller oplægning af data.\n" "Afkodning af komprimerede billeder virker mÃ¥ske/mÃ¥ske ikke\n" "og virker ikke lige godt for alle understøttede kameraer.\n" "Hvis der er videoklip pÃ¥ kameraet, kan disse hjemhentes som fortløbende " "still-billeder.\n" "For yderligere detaljer se libgphoto2/camlibs/README.jl2005a\n" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "jl2005a kamera bibliotek\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Dette kamera har et Jeilin JL2005%c chipsæt.\n" "Der er i alt %i billeder.\n" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" "Denne driver understøtter kameraer med en Jeilin jl2005B eller C og D chip\n" "Disse kameraer understøtter hverken sletning af billeder, eller oplægning af " "data.\n" "Hvis der er videoklip pÃ¥ kameraet, kan disse hjemhentes som fortløbende " "still-billeder.\n" "For yderligere detaljer se libgphoto2/camlibs/README.jl2005c\n" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "jl2005bcd kamera bibliotek\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "CompactFlash kort" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "Kodak DC210 kameraet bruger KDC-filformatet til gemning af billeder. Hvis du " "vil se de billeder du hjemhenter fra kameraet, skal du hjemhente \"kdc2tiff" "\" programmet. Det er til rÃ¥dighed pÃ¥ adressen: http://kdc2tiff.sourceforge." "net" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Kodak DC210 kamera bibliotek\n" "Scott Fritzinger \n" "Kamera bibliotek til Kodak DC210 kameraet.\n" "(efter ønske)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Henter data..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "Venter pÃ¥ færdiggørelse..." #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Fil" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Filtype" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Filopløsning" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Filkompression" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Lav (bedste kvalitet)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Middel (bedre kvalitet)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "Høj (god kvalitet)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Optag" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Eksponeringskompensation" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Automatisk" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Gennemtving" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Ingen" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Rødøje blitz" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Tændt" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Slukket" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Andre" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Indstil uret i kameraet" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "Porthastighed" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Albumnavn" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Navn der skal sættes pÃ¥ kort ved formattering." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "Formatter compactflashkort" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Formatter kort og sæt albumnavn." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Fejlsøg" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Udfør foruddefineret kommando\n" "med parameter værdier." #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "Billeder i kamera: %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" "Der er ledig plads til endnu\n" " %d lavt-komprimerede\n" " %d mellem-komprimerede eller\n" " %d højt-komprimerede billeder\n" #: camlibs/kodak/dc210/dc210.c:506 #, c-format msgid "Total pictures taken: %d\n" msgstr "Totalt antal billeder optaget: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "Totalt antal blitz anvendt: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, c-format msgid "Firmware: %d.%d\n" msgstr "Firmware: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, c-format msgid "Filetype: JPEG (" msgstr "Filtype: JPEG (" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "Filtype: FlashPix (" #: camlibs/kodak/dc210/dc210.c:527 #, c-format msgid "low compression, " msgstr "lav-kompression, " #: camlibs/kodak/dc210/dc210.c:529 #, c-format msgid "medium compression, " msgstr "mellem-kompression, " #: camlibs/kodak/dc210/dc210.c:531 #, c-format msgid "high compression, " msgstr "høj-kompression, " #: camlibs/kodak/dc210/dc210.c:533 #, c-format msgid "unknown compression %d, " msgstr "ukendt kompression %d, " #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "ukendt opløsning %d)\n" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "Strømforsyning er tilsluttet.\n" #: camlibs/kodak/dc210/dc210.c:558 #, c-format msgid "AC adapter is not connected.\n" msgstr "Strømforsyning er ikke tilsluttet.\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "Tid: %a, %d %b %Y %T\n" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "Zoom: 58 mm\n" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "Zoom: 51 mm\n" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "Zoom: 41 mm\n" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "Zoom: 34 mm\n" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "Zoom: 29 mm\n" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "Zoom: makro\n" #: camlibs/kodak/dc210/dc210.c:580 #, c-format msgid "Unknown zoom mode %d\n" msgstr "Ukendt zoom tilstand %d\n" #: camlibs/kodak/dc210/dc210.c:586 #, c-format msgid "Exposure compensation: %s\n" msgstr "Eksponeringskompensation: %s\n" #: camlibs/kodak/dc210/dc210.c:588 #, c-format msgid "Exposure compensation: %d\n" msgstr "Eksponeringskompensation: %d\n" #: camlibs/kodak/dc210/dc210.c:593 #, c-format msgid "Flash mode: auto, " msgstr "Blitz-tilstand: auto, " #: camlibs/kodak/dc210/dc210.c:595 #, c-format msgid "Flash mode: force, " msgstr "Blitz-tilstand: tvunget, " #: camlibs/kodak/dc210/dc210.c:597 #, c-format msgid "Flash mode: off\n" msgstr "Blitz-tilstand: afbrudt\n" #: camlibs/kodak/dc210/dc210.c:599 #, c-format msgid "Unknown flash mode %d, " msgstr "Ukendt blitz-tilstand %d, " #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "rødøje blitz til.\n" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "rødøje blitz afbrudt.\n" #: camlibs/kodak/dc210/dc210.c:615 #, c-format msgid "No card in camera.\n" msgstr "Intet kort i kameraet.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" "Kort-navn: %s\n" "Ledig plads pÃ¥ kortet: %d kB\n" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "Dette bibliotek er blevet testet med et Kodak DC 215 zoom-kamera. Det virker " "nok ogsÃ¥ med et DC 200 og DC 210 kamera. Hvis du har sÃ¥dan et kamera, send " "besked til koltan@gmx.de og lad mig vide, hvis du har problemer med denne " "driver, eller hvis alt virker O.k." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Kamerabibliotek for Kodak DC215 Zoom-kamera.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "Venter..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Parameter 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Parameter 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Parameter 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Model: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "Firmware version: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Batteri status: %s, strømforsyning: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "Antal af billeder: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "Plads tilbage: Høj: %d, Mellem: %d, Lav: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "Hukommelseskort status (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "Totalt antal billeder optaget: %d, Antal blitz anvendt: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Kodak DC240 kamerabibliotek\n" "Scott Fritzinger og Hubert Figuiere \n" "Kamerabibliotek for Kodak DC240, DC280, DC3400 og DC5000 kameraer.\n" "Genskrevet og opdateret til gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Svag" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Tom" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Ugyldig" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Ikke brugt" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "I brug" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "Kortet er Ã¥bent" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "Kortet er ikke Ã¥bent" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "Kortet er ikke formatteret" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Intet kort" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "Der er allerede en proces i gang. Dette kamera understøtter kun en proces af " "gangen. Vent til den igangværende proces er færdig." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "kamera inaktivt i mere end 9 sekunder, geninitialisering\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Kendte problemer:\n" "\n" "1. Hvis Kodak DC3200 ikke modtager en kommando mindst hvert 10. sekund, vil " "det tidsafbryde, og det skal geninitialiseres. Hvis du bemærker at kameraet " "ikke svarer, skal du ganske enkelt genvælge det. Dette vil fremtvinge en " "geninitialisering." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Kodak DC3200 driver\n" "Donn Morrison \n" "\n" "SpørgsmÃ¥l og kommentarer værdsættes." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "Dit USB kamera er et Kodak EZ200.\n" "Antallet af billeder er %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Fokuseringsfejl." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "BlændÃ¥bningsfejl." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Stroboskopfejl." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "EEPROM checksumfejl." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "Intern fejl (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "Intern fejl (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Intet kort tilstede." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "Kortet er ikke understøttet." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "Kort fjernet under tilgang." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Antal billeder ikke gyldigt." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "Der kan ikke skrives til kortet." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "Kort er skrivebeskyttet." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "Ingen ledig plads pÃ¥ kortet." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Billede beskyttet." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "Lys for mørkt." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Autofokusfejl." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Systemfejl." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Ugyldig parameter." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "Kommando kan ikke afbrydes." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Oversættelsesdata for lange." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Oversættelsesdata ødelagte." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Ikke understøttet kommando." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "Anden kommando kører." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Kommando rækkefølge fejl." #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Ukendt fejl." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "Kameraet har sendt en fejl, der er hidtil uset. Rapporter det følgende til " "%s med information om, hvordan/hvorfor denne fejl opstod: (0x%x,0x%x). Mange " "tak!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Henter filliste..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "Tester forskellige hastigheder..." #: camlibs/konica/library.c:338 msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "Kameraet kunne ikke kontaktes. Check at det er tilsluttet og tændt." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "%i billeder kunne ikke slettes, da de er beskyttet" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Model: %s\n" "Serie nummer: %s,\n" "Hardware version: %i.%i\n" "Software version: %i.%i\n" "Test-software version: %i.%i\n" "Navn: %s,\n" "Producent: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Konica bibliotek\n" "Lutz Mueller \n" "Understøttelse for alle Konica og adskillige HP kameraer." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Henter konfiguration..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Konica konfiguration" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Vedvarende indstillinger" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "Skal kameraet bippe nÃ¥r det tager et billede?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Selvudløser tid" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Automatisk sluk tid" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Diasshow interval" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Opløsning" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Lav (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Mellem (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Høj (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Oversættelse" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Sprog" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Ikke valgt" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "TV-uddata format" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "Vis ikke TV-menu" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Datoformat" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "MÃ¥ned/dag/Ã¥r" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "Dag/mÃ¥ned/Ã¥r" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Ã…r/mÃ¥ned/dag" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Sessionsvedvarende opsætning" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Til, rødøje-reduktion" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Automatisk, rødøje-reduktion" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Fokus" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "Fast" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Kortvarig opsætning" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "Selvudløser" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "Selvudløser (kun for næste billede)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Normal" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Kunne ikke finde oversættelsesdata ved '%s'" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "Oversættelsesfil for lang!" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "Denne forhÃ¥ndsvisning eksisterer ikke." #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "Data er blevet ødelagt." #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "Billedtype %d er ikke understøttet af dette kamera!" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "Kan ikke slette billede %s." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "Kan ikke slette alle billeder." #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "Oplægger billede..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "Kan ikke lægge dette billede op til kameraet. Der opstod en fejl." #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "Du skal være i filmetilstand for at kunne optage billeder." #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" "Der er ikke ledig plads til at optage nye billeder. Du skal slette nogle " "billeder." #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "Kan ikke optage nye billeder. Ukendt fejl" #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "Intet svar fra kamera." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Lav" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Mellem" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Høj" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Ikoner" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "2.0 m" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "0.5 m" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "0.1 m" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Hvidbalance" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "Kontor" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "Dagslys" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "Skarphed" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "Skarp" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "Blødt" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "Farve" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "Lys" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "Dyb" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "Sort/hvid" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "Enkel" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "Sekvens 9" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "Datovisning" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "Hvor som helst" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "Afspilningstilstand" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "Optagetilstand" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "Overalt" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "AC" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "Afspil" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Optag" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "DD/MM/YYYY" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "YYYY/MM/DD" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "MM/DD/YYYY" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Model: %s\n" "Kapacitet: %i Mb\n" "Strøm: %s\n" "Automatisk sluk tid: %i min\n" "Tilstand: %s\n" "Billeder: %i/%i\n" "Datovisning: %s\n" "Dato og tid: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Konica Q-M150 bibliotek\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Understøttelse for den franske Konica Q-M150." #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "Om Konica Q-M150:\n" "Dette kamera tillader ingen udefrakommende ændringer.\n" "I konfigurationen kan du se, hvordan kameraet er sat op,\n" "men du kan ikke ændre noget.\n" "\n" "Hvis du har problemer med driveren, send en e-mail til dens forfattere.\n" #: camlibs/largan/lmini/largan.c:228 msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Largan driver\n" "Hubert Figuiere \n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" "Dit USB-kamera ser ud til at være et LG GSM.\n" "Firmware: %s\n" "Firmware version: %s\n" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" "LG GSM almen driver\n" "Guillaume Bedot \n" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Mars MR97310 kamera.\n" "Der er %i billede i det.\n" msgstr[1] "" "Mars MR97310 kamera.\n" "Der er %i billeder i det.\n" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" "Denne driver understøtter kameraer med en Mars MR97310 chip\n" "(og direkte sammenlignelige ?? Pixart PACx07??).\n" "Kameraene understøtter ikke sletning af billeder, eller oplægning af data.\n" "Afkodning af komprimerede billeder virker mÃ¥ske/mÃ¥ske ikke\n" "og virker ikke lige godt for alle understøttede kameraer.\n" "Foto-databehandling for Argus QuickClix er IKKE UNDERSTØTTET.\n" "Hvis der er videoklip pÃ¥ kameraet, kan disse hjemhentes som fortløbende " "still-billeder.\n" "For yderligere detaljer se libgphoto2/camlibs/README.\n" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "Mars MR97310 kamera bibliotek\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware revision:\t%s\n" "Firmware revision:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Værtstilstand:\t\t%s\n" "Eksponeringskorrektion:\t%s\n" "Eksponeringsdata:\t\t%d\n" "Gyldig dato:\t\t%s\n" "Dato:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Selvudløser indstilling:\t\t%s\n" "Kvalitets indstilling:\t%s\n" "Afspil/optag-tilstand:\t%s\n" "Gyldigt kort ID:\t\t%s\n" "Kort ID:\t\t%d\n" "Blitztilstand:\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Fjern" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Lokal" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Ja" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "Nej" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Fin" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Standard" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Automatisk\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Gennemtving blitz\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Forhindr blitz\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Ugyldig værdi ( %d )\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "Batteriniveau:\t\t%s\n" "Antal af billeder:\t%d\n" "Minimum kapacitet tilbage:\t%d\n" "Optaget:\t\t\t%s\n" "Opladning blitz:\t\t%s\n" "Objektivstatus:\t\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "Ikke fuld" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Fuld" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "Optaget" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "Ledig" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "Oplader" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Klar" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Normal\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "Objektivretning svarer ikke til blitzlys\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "Objektiv er ikke tilsluttet\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "Forkert værdi for objektivstatus %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "Kortstatus:\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Skrivebeskyttet" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "Uegnet kort" #: camlibs/minolta/dimagev/dimagev.c:406 #, c-format msgid "Bad value for card status %d" msgstr "Forkert værdi for kortstatus %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Minolta Dimage V kamera bibliotek\n" "%s\n" "Gus Hartmann \n" "Specielt tak til Minolta for specifikationer." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Blitzlys : Automatisk (rødøje-reduktion)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Blitzlys : Automatisk" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Blitzlys : Til (rødøje-reduktion)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Blitzlys : Til" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Blitzlys : Slukket" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Blitzlys : Ikke defineret" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Sammendrag for Mustek MDC800:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "ingen status rapporteret." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "Fandt Compact Flash kort\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Fandt ikke noget Compact Flash kort\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "Nuværende tilstand: Kameratilstand\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Nuværende tilstand: Afspilningstilstand\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Batterier er O.k." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Batteristand lav." #: camlibs/mustek/mdc800.c:264 msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Mustek MDC-800 gPhoto2 bibliotek\n" "Henning Zabel \n" "Porteret til gphoto2 af Marcus Meissner \n" "Understøtter serielle og USB protokoller." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "coolshot bibliotek v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Fjerner tilslutning til kamera." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "Hjemhenter billede %s." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Oplægger billede: %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "Filstørrelse er %ld byte. Størst mulige fil der kan oplægges er: %i byte." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Oplægger..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "Sletter billede %s." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1000 gphoto bibliotek\n" "Mariusz Zynel \n" "\n" "Baseret pÃ¥ dc1000 programmet skrevet af\n" "Fredrik Roubert og\n" "Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "Hjemhenter %s." #: camlibs/panasonic/dc1580.c:627 msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Panasonic DC1580 gPhoto2 bibliotek\n" "Mariusz Zynel \n" "\n" "Baseret pÃ¥ dc1000 programmet skrevet af\n" "Fredrik Roubert og\n" "Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "Hjemhenter '%s'..." #: camlibs/panasonic/l859/l859.c:582 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introducerede billedindhentningsteknologi kaldet PHOTOSHOT første " "gang til denne serie af Palmcorders. Billeder gemmes i JPEG-format pÃ¥ et " "internt flashkort og kan overføres til computeren gennem en indbygget seriel " "port. Billederne gemmes i en af to opløsninger, NORMAL er 320x240 og FIN er " "640x480. CCD-en der optager billederne er kun pÃ¥ 300K, og giver derfor kun " "lav-kvalitetsbilleder." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Kendte problemer:\n" "\n" "Hvis der opstÃ¥r kommunikationsproblemer, skal kameraet og programmet " "genstartes. Driveren er endnu ikke robust nok til at komme over disse " "situationer, især hvis problemet opstÃ¥r, og kameraet ikke slukkes korrekt " "ved hastigheder over 9600." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder driver\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " Total hukommelse er %8d byte.\n" " Fri hukommelse er %8d byte.\n" " Filtælling: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" " Forfattere: Till Adam\n" "\n" "og: Miah Gregory\n" " " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "Hjemhenter fil..." #: camlibs/pccam600/library.c:249 msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" "Forfatter: Peter Kajberg \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "pccam600_init: Forventede > %d blokke, fik %d" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "pccam600_get_file:fik indeks %d men forventede indeks > %d" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "pccam600_close: returværdi var %d i stedet for %d" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "pccam600_init: Forventede %d blokke, fik %d" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" "pccam600 init: Uventet fejl: gp_port_read returnerede %d i stedet for %d" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Hjemhent program for flere Polaroid kameraer. Oprindeligt skrevet af Peter " "Desnoyers , og tilpasset til gphoto2 af Nathan " "Stenzel og Lutz Mueller .\n" "Polaroid 640SE testning blev udført af Michael Golden ." #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Model: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "Hent program til GrandTek 98x baserede kameraer. Oprindeligt skrevet af " "Chris Byrne , og tilpasset til gphoto2 af Lutz Mueller " ".Protokolforbedringer og efterbehandling for Jenoptik " "JD350e ved Michael Trawny .Fejlrettelser ved " "Marcus Meissner ." #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "Billede kvalitet" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Billede størrelse" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Blitzindstillinger" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Automatisk sluk efter (minutter)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Information" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "normal" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "fin" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "superfin" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "auto" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "tændt" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "slukket" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "afspil" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "optag" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "menu" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "batteri" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "a/c adapter" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Modtog uventet overskrift (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Modtog uventet svar" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Checksumfejl" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "Kameraet accepterede ikke kommandoen." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "Kameraet sendte flere byte end forventet (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "Forespurgte om information om billede %i (= 0x%x), men fik information om " "billede %i tilbage" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "Modtog %i byte i et ukendt billedformat. Skriv til %s og bed om hjælp." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Hjemhent program for Polaroid DC700 kamera. Oprindeligt skrevet af Ryan " "Lantzer for gphoto-4.x. Tilpasset til gphoto2 af Lutz " "Mueller ." #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Kamera" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "Hvor lang tid gÃ¥r der før kameraet slukker?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Billede" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Dato: %i/%02i/%02i %02i:%02i:%02i\n" "Antal billeder taget: %i\n" "Billeder tilbage: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Hukommelse: %i megabyte\n" "Kameratilstand: %s\n" "Billedkvalitet: %s\n" "Blitz indstilling: %s\n" "Information: %s\n" "Selvudløser: %s\n" "LCD: %s\n" "Automatisk sluk: %i minutter\n" "Strømkilde: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "Den efterspurgte porttype (%i) er ikke understøttet af denne driver." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Beklager, dit Canon kamera understøtter ikke Canon-optagning" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, c-format msgid "Unknown value %04x" msgstr "Ukendt værdi %04x" #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, c-format msgid "Unknown value %04d" msgstr "Ukendt værdi %04d" #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "uventet datatype %i" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "Manuel" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 msgid "Automatic" msgstr "Automatisk" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 msgid "One-push Automatic" msgstr "En-knaps automatik" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "Fluorescerende" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Wolfram" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Skyet" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "Skygge" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "Farvetemperatur" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "Forvalgt" #: camlibs/ptp2/config.c:1415 msgid "Fluorescent Lamp 1" msgstr "Fluorescerende lampe 1" #: camlibs/ptp2/config.c:1416 msgid "Fluorescent Lamp 2" msgstr "Fluorescerende lampe 2" #: camlibs/ptp2/config.c:1417 msgid "Fluorescent Lamp 3" msgstr "Fluorescerende lampe 3" #: camlibs/ptp2/config.c:1418 msgid "Fluorescent Lamp 4" msgstr "Fluorescerende lampe 4" #: camlibs/ptp2/config.c:1419 msgid "Fluorescent Lamp 5" msgstr "Fluorescerende lampe 5" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "Vælg farvetemperatur" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "Forvalgt bruger 1" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "Forvalgt bruger 2" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "Forvalgt bruger 3" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "Forvalgt bruger 4" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "Forvalgt bruger 5" #: camlibs/ptp2/config.c:1430 msgid "Fluorescent: Warm White" msgstr "Fluorescerende: Varm hvid" #: camlibs/ptp2/config.c:1431 msgid "Fluorescent: Cold White" msgstr "Fluorescerende: Kold hvid" #: camlibs/ptp2/config.c:1432 msgid "Fluorescent: Day White" msgstr "Fluorescerende: Dag hvid" #: camlibs/ptp2/config.c:1433 msgid "Fluorescent: Daylight" msgstr "Fluorescerende: Dagslys" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 msgid "JPEG Fine" msgstr "JPEG fin" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 msgid "JPEG Normal" msgstr "JPEG normal" #: camlibs/ptp2/config.c:1443 msgid "RAW + JPEG Fine" msgstr "RÃ¥ + JPEG fin" #: camlibs/ptp2/config.c:1444 msgid "RAW + JPEG Normal" msgstr "RÃ¥ + JPEG normal" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "Enkeltramme" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "Kontinuerlig lav hastighed" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "Kontinuerlig høj hastighed" #: camlibs/ptp2/config.c:1452 msgid "Self-timer" msgstr "Selvudløser" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "Mup Spejl op" #: camlibs/ptp2/config.c:1735 msgid "undefined" msgstr "ikke defineret" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "økonomi" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "tabsfri" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 msgid "Undefined" msgstr "Ikke defineret" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "CRW" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "TV" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "AV" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "A_DEP" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "M_DEP" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "DEP" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "Tilpasset" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "LÃ¥s" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "Nat-portræt" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "Sport" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "Landskab" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "Nærbillede" #: camlibs/ptp2/config.c:1780 msgid "Flash Off" msgstr "Blitz slukket" #: camlibs/ptp2/config.c:1788 msgid "red eye suppression" msgstr "rødøje-reduktion" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "udfyldning" #: camlibs/ptp2/config.c:1790 msgid "auto + red eye suppression" msgstr "auto + rødøje-reduktion" #: camlibs/ptp2/config.c:1791 msgid "on + red eye suppression" msgstr "til + rødøje-reduktion" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "iTTL" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 msgid "Commander" msgstr "Fjernbetjener" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "Gentager" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "TTL" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 msgid "Auto Aperture" msgstr "Auto blændeÃ¥bning" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 msgid "Full Manual" msgstr "Fuld manuel" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "AF-S" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "AF-C" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "AF-A" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 msgid "MF (fixed)" msgstr "MF (fast)" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "MF (det valgte)" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "Centervægtet" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "Gennemsnit" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "Evaluerende" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "Delvist" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "Centervægtet gennemsnit" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "SpotmÃ¥ling lÃ¥st med AF-ramme" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "Flerpunktsspot" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "Tro" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "Monokrom" #: camlibs/ptp2/config.c:1947 msgid "User defined 1" msgstr "Bruger defineret 1" #: camlibs/ptp2/config.c:1948 msgid "User defined 2" msgstr "Bruger defineret 2" #: camlibs/ptp2/config.c:1949 msgid "User defined 3" msgstr "Bruger defineret 3" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "Fokuspunkt kun i centeret, Manuel" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "Fokuspunkt kun i centeret, Auto" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "Multi-fokuspunkter (ikke specificeret), Manuel" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 msgid "Multiple Focusing Points, Auto" msgstr "Multi-fokuspunkter, Auto" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 msgid "Multiple Focusing Points (Right)" msgstr "Multi-fokuspunkter (højre)" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "Multi-fokuspunkter (center)" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 msgid "Multiple Focusing Points (Left)" msgstr "Multi-fokuspunkter (venstre)" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 msgid "Large" msgstr "Stor" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 msgid "Medium 1" msgstr "Middel 1" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 msgid "Medium 2" msgstr "Middel 2" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 msgid "Medium 3" msgstr "Middel 3" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "Lille" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "16:9" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "3:2" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "10 sekunder" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "2 sekunder" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "TFT" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "PC" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "TFT + PC" #: camlibs/ptp2/config.c:2092 msgid "Setting 4" msgstr "Indstilling 4" #: camlibs/ptp2/config.c:2093 msgid "Setting 5" msgstr "Indstilling 5" #: camlibs/ptp2/config.c:2094 msgid "Setting 6" msgstr "Indstilling 6" #: camlibs/ptp2/config.c:2095 msgid "Setting 7" msgstr "Indstilling 7" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "Kort" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "Video UD" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, c-format msgid "Unknown %d" msgstr "Ukendt %d" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "Fabriksstandard" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "mRÃ¥" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "sRÃ¥" #: camlibs/ptp2/config.c:2246 #, fuzzy msgid "Smaller JPEG" msgstr "Mindre JPEG (S2)" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "Meget lille JPEG (S3)" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "mRÃ¥ + Stor Fin JPEG" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "sRÃ¥ + Stor Fin JPEG" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "mRÃ¥ + Mellem Fin JPEG" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "sRÃ¥ + Mellem Fin JPEG" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "mRÃ¥ + Lille Fin JPEG" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "sRÃ¥ + Lille Fin JPEG" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "mRÃ¥ + Stor Normal JPEG" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "sRÃ¥ + Stor Normal JPEG" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "mRÃ¥ + Mellem Normal JPEG" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "sRÃ¥ + Mellem Normal JPEG" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "mRÃ¥ + Lille Normal JPEG" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "sRÃ¥ + Lille Normal JPEG" #: camlibs/ptp2/config.c:2272 #, fuzzy msgid "RAW + Smaller JPEG" msgstr "RÃ¥ + Mindre JPEG (S2)" #: camlibs/ptp2/config.c:2273 #, fuzzy msgid "mRAW + Smaller JPEG" msgstr "mRÃ¥ + Mindre JPEG (S2)" #: camlibs/ptp2/config.c:2274 #, fuzzy msgid "sRAW + Smaller JPEG" msgstr "sRÃ¥ + Mindre JPEG (S2)" #: camlibs/ptp2/config.c:2275 #, fuzzy msgid "RAW + Tiny JPEG" msgstr "RÃ¥ + Meget lille JPEG (S3)" #: camlibs/ptp2/config.c:2276 #, fuzzy msgid "mRAW + Tiny JPEG" msgstr "mRÃ¥ + Meget lille JPEG (S3)" #: camlibs/ptp2/config.c:2277 #, fuzzy msgid "sRAW + Tiny JPEG" msgstr "sRÃ¥ + Meget lille JPEG (S3)" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "Kontinuerlig" #: camlibs/ptp2/config.c:2305 msgid "Timer 10 sec" msgstr "Timer 10 sek" #: camlibs/ptp2/config.c:2306 msgid "Timer 2 sec" msgstr "Timer 2 sek" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "Enkelt lydløs" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "Kontinuerlig lydløs" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, c-format msgid "Auto ISO" msgstr "Automatisk ISO" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "Auto ISO mange-rammers støjreduktion" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, c-format msgid "%d Multi Frame Noise Reduction" msgstr "%d mange-rammers støjreduktion" #: camlibs/ptp2/config.c:2453 msgid "Multi Frame Noise Reduction" msgstr "Mange-rammers støjreduktion" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Timer" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "%0.4fs" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "%d %d/%d" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "%d/%d" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "%f" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "Kreativ" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "Bevægelse" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "Nat-landskab" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "Børn" #: camlibs/ptp2/config.c:2868 msgid "Automatic (No Flash)" msgstr "Automatisk (ingen blitz)" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 #, fuzzy msgid "Movie" msgstr "Filmlyd" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 #, fuzzy msgid "Sports Action" msgstr "Sport" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "Solnedgang" #: camlibs/ptp2/config.c:2880 #, fuzzy msgid "Night Scene" msgstr "Nat scene" #: camlibs/ptp2/config.c:2881 #, fuzzy msgid "Hand-held Twilight" msgstr "Stearinlys" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 #, fuzzy msgid "Picture Effect" msgstr "Miniature effekt" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "Nat-landskab" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "Fest/indendørs" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "Strand/Sne" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "Skumring/Daggry" #: camlibs/ptp2/config.c:2893 msgid "Pet Portrait" msgstr "Kæledyr Portræt" #: camlibs/ptp2/config.c:2894 msgid "Candlelight" msgstr "Stearinlys" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "Blomsterflor" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "EfterÃ¥rsfarver" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "Mad" #: camlibs/ptp2/config.c:2901 #, fuzzy msgid "Child" msgstr "Børn" #: camlibs/ptp2/config.c:2903 #, fuzzy msgid "Close up" msgstr "Nærbillede" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "" #: camlibs/ptp2/config.c:3032 #, fuzzy msgid "Flourescent" msgstr "Fluorescerende" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "1 EV" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "2 EV" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "3 EV" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "Ekstra høj" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "Scene" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 msgid "Effects" msgstr "Effekter" #: camlibs/ptp2/config.c:3075 #, fuzzy msgid "U1" msgstr "1" #: camlibs/ptp2/config.c:3076 #, fuzzy msgid "U2" msgstr "2" #: camlibs/ptp2/config.c:3104 #, fuzzy msgid "Back Light" msgstr "LCD baglys" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "" #: camlibs/ptp2/config.c:3106 #, fuzzy msgid "Smoothing" msgstr "HDR Udjævning" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 #, fuzzy msgid "Select Color" msgstr "Selektive farver" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "Enkelt-skud" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "Serie" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "Tidsforkortelse" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "Kontinuerlig lav hastighed" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 msgid "Timer" msgstr "Timer" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "Spejl op" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "Hurtigtvirkende fjernbetjening" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 msgid "Delayed Remote" msgstr "Forsinket Fjernbetjening" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "Lydløs Fjernbetjening" #: camlibs/ptp2/config.c:3125 msgid "Selftimer 2s" msgstr "Selvudløser 2s" #: camlibs/ptp2/config.c:3126 msgid "Selftimer 10s" msgstr "Selvudløser 10s" #: camlibs/ptp2/config.c:3127 msgid "Bracketing C 0.3 Steps" msgstr "Bracketing C 0.3 skridt" #: camlibs/ptp2/config.c:3128 msgid "Bracketing C 0.7 Steps" msgstr "Bracketing C 0.7 skridt" #: camlibs/ptp2/config.c:3129 msgid "Bracketing C 1.0 Steps" msgstr "Bracketing C 1.0 skridt" #: camlibs/ptp2/config.c:3130 msgid "Bracketing C 2.0 Steps" msgstr "Bracketing C 2.0 skridt" #: camlibs/ptp2/config.c:3131 msgid "Bracketing C 3.0 Steps" msgstr "Bracketing C 3.0 skridt" #: camlibs/ptp2/config.c:3132 msgid "Bracketing S 0.3 Steps" msgstr "Bracketing S 0.3 skridt" #: camlibs/ptp2/config.c:3133 msgid "Bracketing S 0.7 Steps" msgstr "Bracketing S 0.7 skridt" #: camlibs/ptp2/config.c:3134 msgid "Bracketing S 1.0 Steps" msgstr "Bracketing S 1.0 skridt" #: camlibs/ptp2/config.c:3135 msgid "Bracketing S 2.0 Steps" msgstr "Bracketing S 2.0 skridt" #: camlibs/ptp2/config.c:3136 msgid "Bracketing S 3.0 Steps" msgstr "Bracketing S 3.0 skridt" #: camlibs/ptp2/config.c:3137 msgid "Bracketing WB Lo" msgstr "Bracketing WB Lo" #: camlibs/ptp2/config.c:3138 msgid "Bracketing WB Hi" msgstr "Bracketing WB Hi" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 msgid "Centre-spot" msgstr "Centerspot" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "Flerpunkts spot" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "Enkelt omrÃ¥de" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "Nærmeste emne" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "Gruppedynamisk" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "Enkeltpunkts AF" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "Dynamisk omrÃ¥de AF" #: camlibs/ptp2/config.c:3154 #, fuzzy msgid "Group-dynamic AF" msgstr "Gruppedynamisk AF" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "Gruppedynamisk AF med nærmeste genstand prioritet" #: camlibs/ptp2/config.c:3162 #, fuzzy msgid "Dynamic Area (9)" msgstr "Dynamisk AF omrÃ¥de" #: camlibs/ptp2/config.c:3163 #, fuzzy msgid "Dynamic Area (21)" msgstr "Dynamisk AF omrÃ¥de" #: camlibs/ptp2/config.c:3164 #, fuzzy msgid "Dynamic Area (51)" msgstr "Dynamisk AF omrÃ¥de" #: camlibs/ptp2/config.c:3165 #, fuzzy msgid "3D Tracking" msgstr "ADL bracketing" #: camlibs/ptp2/config.c:3171 msgid "sRGB (portrait)" msgstr "sRGB (portræt)" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "AdobeRGB" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "sRGB (naturlig)" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "sRGB" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "Ukendt værdi 0x%04x" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 msgid "Centre" msgstr "Centrum" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "Top" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 msgid "Bottom" msgstr "Bund" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "Venstre" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 msgid "Right" msgstr "Højre" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "Centervægtet" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "Flerpunkts spot" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "Centerspot" #: camlibs/ptp2/config.c:3266 msgid "Automatic Flash" msgstr "Automatisk blitz" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 msgid "Fill flash" msgstr "Udfyldningsblitz" #: camlibs/ptp2/config.c:3269 msgid "Red-eye automatic" msgstr "Rødøje automatik" #: camlibs/ptp2/config.c:3270 msgid "Red-eye fill" msgstr "Rødøje udfyldning" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 msgid "External sync" msgstr "Ekstern synkronisering" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 msgid "Auto Slow Sync" msgstr "Automatisk Langsom Synkronisering" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "Bagestegardin synkronisering + langsom synkronisering" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 msgid "Red-eye Reduction + Slow Sync" msgstr "Rødøjereduktion + langsom synkronisering" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "Forreste gardin synkronisering" #: camlibs/ptp2/config.c:3277 msgid "Red-eye reduction" msgstr "Rødøjereduktion" #: camlibs/ptp2/config.c:3278 msgid "Red-eye reduction with slow sync" msgstr "Rødøjereduktion med langsom synkronisering" #: camlibs/ptp2/config.c:3279 msgid "Slow sync" msgstr "Langsom synkronisering" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "Bagestegardin med langsom synkronisering" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "Bagestegardin synkronisering" #: camlibs/ptp2/config.c:3283 #, fuzzy msgid "Rear Curtain Sync" msgstr "Bagestegardin synkronisering" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Langsom synkronisering" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Sort/hvid" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "Natsyn" #: camlibs/ptp2/config.c:3298 msgid "Color sketch" msgstr "Farve skitse" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "Miniature effekt" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "Selektive farver" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "Silhuet" #: camlibs/ptp2/config.c:3302 msgid "High key" msgstr "High key" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "Low key" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 msgid "infinite" msgstr "uendelig" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "%d mm" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "Ansigts-prioritet AF" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "Bredt-omrÃ¥de AF" #: camlibs/ptp2/config.c:3772 msgid "Normal-area AF" msgstr "Normal-omrÃ¥de AF" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "Følg-motiv AF" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "Single-servo AF" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "Full-time-servo AF" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 msgid "Manual Focus" msgstr "Manuel fokusering" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 msgid "AE/AF Lock" msgstr "AE/AF lÃ¥s" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "Kun AE lÃ¥s" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "Kun AF lÃ¥s" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "AF lÃ¥s hold" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "AF til" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "Blitzniveau lÃ¥s" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "20 sekunder" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 msgid "1 minute" msgstr "1 minut" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "5 minutter" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 msgid "10 minutes" msgstr "10 minutter" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "5 sekunder" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "SDRAM" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "6 mm" #: camlibs/ptp2/config.c:3828 msgid "8 mm" msgstr "8 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "10 mm" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "12 mm" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "1/60" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "1/30" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "1/15" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "1/8" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "1/4" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "1/2" #: camlibs/ptp2/config.c:3842 msgid "1" msgstr "1" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 msgid "2" msgstr "2" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 msgid "4" msgstr "4" #: camlibs/ptp2/config.c:3845 msgid "8" msgstr "8" #: camlibs/ptp2/config.c:3846 msgid "15" msgstr "15" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "30" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "bulb" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "30s" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "25s" #: camlibs/ptp2/config.c:3855 msgid "20s" msgstr "20s" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 msgid "15s" msgstr "15s" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "13s" #: camlibs/ptp2/config.c:3858 msgid "10s" msgstr "10s" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "8s" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "6s" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "5s" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "4s" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "3s" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "2.5s" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "2s" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "1.6s" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "1.3s" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "1s" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "1/1.3s" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "1/1.6s" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "1/2s" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "1/2.5s" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "1/3s" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "1/4s" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "1/5s" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "1/6s" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "1/8s" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "1/10s" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "1/13s" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "1/15s" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "1/20s" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "1/25s" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "1/30s" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "1/40s" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "1/50s" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "1/60s" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "1/80s" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "1/100s" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "1/125s" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "1/160s" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "1/200s" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "1/250s" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "1/320s" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "1/400s" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "1/500s" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "1/640s" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "1/800s" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "1/1000s" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "1/1250s" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "1/1600s" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "1/2000s" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "1/2500s" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "1/3200s" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "1/4000s" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "1/5000s" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "1/6400s" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "1/8000s" #: camlibs/ptp2/config.c:3916 msgid "15 minutes" msgstr "15 minutter" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 msgid "Sharper" msgstr "Skarpere" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "Blødere" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 msgid "Direct Print" msgstr "Direkte udskrift" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 msgid "Medium Low" msgstr "Mellem lav" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 msgid "Medium high" msgstr "Mellem høj" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 msgid "Low contrast" msgstr "Lav kontrast" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 msgid "Medium High" msgstr "Mellem høj" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "Høj kontrol" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "Zone Focus (Tæt-pÃ¥)" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "Zone Focus (Meget tæt)" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "Zone Focus (Tæt)" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "Zone Focus (Mellem)" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "Zone Focus (Fjern)" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "Zone Focus (Reserveret 1)" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "Zone Focus (Reserveret 2)" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "Zone Focus (Reserveret 3)" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "Zone Focus (Reserveret 4)" #: camlibs/ptp2/config.c:3976 msgid "Automatic Macro" msgstr "Automatisk makro" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "Single-Servo AF" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "Continuous-Servo AF" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "Enkelt-skud" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "AI servo" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 msgid "AI Focus" msgstr "AI fokus" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "4 sekunder" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "8 sekunder" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "Hold" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 msgid "Fluorescent H" msgstr "Fluorescerende H" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 msgid "Custom Whitebalance PC-1" msgstr "Bruger hvidbalance PC-1" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 msgid "Custom Whitebalance PC-2" msgstr "Bruger hvidbalance PC-2" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 msgid "Custom Whitebalance PC-3" msgstr "Bruger hvidbalance PC-3" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "Manglende nummer" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "Skygge" #: camlibs/ptp2/config.c:4118 msgid "Low sharpening" msgstr "Lidt gør-skarp" #: camlibs/ptp2/config.c:4120 msgid "Black & white" msgstr "Sort/hvid" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 msgid "AE & Flash" msgstr "AE & blitz" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 msgid "AE only" msgstr "Kun AE" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 msgid "Flash only" msgstr "Kun blitz" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 msgid "WB bracketing" msgstr "Hvidbalance bracketing" #: camlibs/ptp2/config.c:4221 msgid "ADL bracketing" msgstr "ADL bracketing" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "Opstart" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "Luk ned" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "Opstart og nedlukning" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "50 Hz" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "60 Hz" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "Hurtig tilbagemelding" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 msgid "Remote Mirror Up" msgstr "Fjernt Spejl Op" #: camlibs/ptp2/config.c:4248 msgid "Application Mode 0" msgstr "Programtilstand 0" #: camlibs/ptp2/config.c:4249 msgid "Application Mode 1" msgstr "Programtilstand 1" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "Moderat" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "Forbedret" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "MTR > Under" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "Under > MTR" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "Automatisk følsomhed" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "Høj følsomhed" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "Mellem følsomhed" #: camlibs/ptp2/config.c:4286 msgid "Low sensitivity" msgstr "Lav følsomhed" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "Mikrofon slukket" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "Hi 1" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "Hi 2" #: camlibs/ptp2/config.c:4378 msgid "Flash/speed" msgstr "Blitz/lukker" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "Blitz/lukker/blænde" #: camlibs/ptp2/config.c:4380 msgid "Flash/aperture" msgstr "Blitz/blænde" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "JPEG basis" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 msgid "NEF+Fine" msgstr "NEF+fin" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "NEF (rÃ¥)" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "NEF+basis" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 msgid "NEF+Normal" msgstr "NEF+normal" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "TIFF (RGB)" #: camlibs/ptp2/config.c:4575 msgid "RAW+JPEG" msgstr "RÃ…+JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "6 sekunder" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "16 sekunder" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "30 sekunder" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "30 minutter" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "Tabsfri" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "Tabsgivende" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "Størrelsesprioritet" #: camlibs/ptp2/config.c:4642 msgid "Optimal quality" msgstr "Optimal kvalitet" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "1/250s (Auto FP)" #: camlibs/ptp2/config.c:4659 #, fuzzy msgid "1/320s (Auto FP)" msgstr "1/250s (Auto FP)" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "Udløs" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "Udløs + fokusér" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "9 points" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "21 points" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "51 points" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "51 points (3D)" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "5 (Lang)" #: camlibs/ptp2/config.c:4695 msgid "3 (Normal)" msgstr "3 (Normal)" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "1 (Kort)" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "Lukker/AF-ON" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "AF-ON" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "AF51" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "AF11" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "AE/AF lÃ¥s" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "Kun AE lÃ¥s" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "AE lÃ¥s (nulstil ved afbrydelse)" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "AF lÃ¥s (hold)" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "Kun AF lÃ¥s" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "4 fps" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "3 fps" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "2 fps" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "1 fps" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "6 fps" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "5 fps" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "9 fps" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "8 fps" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "7 fps" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "11 fps" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "10 fps" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "Ikke-tildelt" #: camlibs/ptp2/config.c:4780 msgid "Preview" msgstr "Smugkig" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "FV lÃ¥s" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "AE lÃ¥s (hold)" #: camlibs/ptp2/config.c:4788 msgid "Bracketing burst" msgstr "Bracketing-burst" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "MatriksmÃ¥ling" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "Centervægtet mÃ¥ling" #: camlibs/ptp2/config.c:4791 msgid "Spot metering" msgstr "SpotmÃ¥ling" #: camlibs/ptp2/config.c:4792 msgid "Playback" msgstr "Afspilning" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "TilgÃ¥ toppunkt i MY MENU" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "+NEF (rÃ¥)" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "Billedbegrænsningsgitter" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "Aktiv D-belysning" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "1 trin hastighed/blænde" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "Vælg ikke-CPU objektivnummer" #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "Søger virtuel horisont" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "Start filmoptagelse" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "Til (billedvisning udelukket)" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "50%" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "100%" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "75%" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "25%" #: camlibs/ptp2/config.c:4871 msgid "Unknown value" msgstr "Ukendt værdi" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "Nikons skift-fokusomrÃ¥de virker kun i LiveView tilstand." #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "Nikons autofokusmotor fokuserede ikke." #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "Nikons manuel-fokusering virker kun i LiveView tilstand." #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "Nikon manuel-fokusering ved grænse." #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "Nikon manuel-fokuserinsskridt er for smÃ¥." #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "Halvt tryk" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 msgid "Press Full" msgstr "Helt tryk" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "Udløs halvt" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "Udløs helt" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "OmgÃ¥ende" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 msgid "Press 1" msgstr "Tryk 1" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 msgid "Press 2" msgstr "Tryk 2" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 msgid "Press 3" msgstr "Tryk 3" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "Udløs 1" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "Udløs 2" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "Udløs 3" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "Nært 1" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "Nært 2" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "Nært 3" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "Fjernt 1" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "Fjernt 2" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "Fjernt 3" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "Nært %d" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "Fjern %d" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 #, fuzzy msgid "Nikon enable liveview failed" msgstr "Nikon tillad-liveview fejlede: %x" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" "For at 'bulb' optagelse kan fungere, skal funktionsvælgeren sættes til 'M' " "og lukkerhastigheden til 'bulb'." #: camlibs/ptp2/config.c:5923 msgid "Internal RAM" msgstr "Intern ram" #: camlibs/ptp2/config.c:5924 msgid "Memory card" msgstr "Hukommelseskort" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "ESSID" #: camlibs/ptp2/config.c:6092 msgid "Display" msgstr "Skærm" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "Oprettelsesdato: %s, Sidst brugt den: %s" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "Slet" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "WEP 64-bit" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "WEP 128-bit" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "HÃ¥ndteret" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "Ad hoc" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "Profilnavn" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "WIFI ESSID" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "IP adresse (tomt for DHCP)" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "Netværksmaske" #: camlibs/ptp2/config.c:6359 msgid "Default gateway" msgstr "Standard adgangspunkt" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "Tilgangstilstand" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "WIFI kanal" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "Kryptering" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "Krypteringsnøgle (hex)" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "Skriv" #: camlibs/ptp2/config.c:6412 msgid "List Wifi profiles" msgstr "Vis Wifi profiler" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "Dan Wifi profil" #: camlibs/ptp2/config.c:6521 #, fuzzy msgid "Power Down" msgstr "Motordrev" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 msgid "Focus Lock" msgstr "AfstandslÃ¥s" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 msgid "Bulb Mode" msgstr "Bulb tilstand" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "UI LÃ¥s" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "Nikon DSLR auto fokusmotor" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "Drive Canon DSLR Autofokus" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "Nikon DSLR manuel fokusmotor" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "Indstil Nikon autofokus omrÃ¥de" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "Sæt Nikon kontroltilstand" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "Drive Canon DSLR Manuel fokus" #: camlibs/ptp2/config.c:6533 #, fuzzy msgid "Cancel Canon DSLR Autofocus" msgstr "Drive Canon DSLR Autofokus" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "Canon EOS Zoom" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "Canon EOS Zoom Position" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "Canon EOS søger" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "Nikon søger" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "Canon EOS fjernbetjent udløser" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "CHDK Script" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 msgid "Movie Capture" msgstr "Filoptagelse" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 msgid "Serial Number" msgstr "Serienummer" #: camlibs/ptp2/config.c:6548 msgid "Camera Manufacturer" msgstr "Kamera producent" #: camlibs/ptp2/config.c:6550 msgid "Device Version" msgstr "Enheds version" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "Fremstiller udvidelse" #: camlibs/ptp2/config.c:6556 msgid "PTP Version" msgstr "PTP Version" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 msgid "DPOF Version" msgstr "DPOF version" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "AC strøm" #: camlibs/ptp2/config.c:6559 msgid "External Flash" msgstr "Ekstern blitz" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "Batteriniveau" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 msgid "Camera Orientation" msgstr "Kameraorientering" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 msgid "Flash Open" msgstr "Blitz Ã¥ben" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 msgid "Flash Charged" msgstr "Blitz opladet" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 msgid "Lens Name" msgstr "Objektiv navn" #: camlibs/ptp2/config.c:6570 msgid "Shutter Counter" msgstr "Lukker tæller" #: camlibs/ptp2/config.c:6571 msgid "Available Shots" msgstr "Optagelser tilgængeligt" #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "Mindste brændvidde" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "Maksimal brændvidde" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "Maksimal blændeÃ¥bning ved minimal brændvidde" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "Maks. blændeÃ¥bning ved maks. brændvidde" #: camlibs/ptp2/config.c:6576 msgid "Low Light" msgstr "Low-Light" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 msgid "Light Meter" msgstr "LysmÃ¥ler" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 msgid "AF Locked" msgstr "AF lÃ¥st" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "AE lÃ¥st" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 msgid "FV Locked" msgstr "FV lÃ¥st" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 msgid "Camera Date and Time" msgstr "Kameraets dato og tid" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "Bippetilstand" #: camlibs/ptp2/config.c:6591 msgid "Image Comment" msgstr "Billedkommentar" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 msgid "Enable Image Comment" msgstr "Tillad billedkommentar" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 msgid "LCD Off Time" msgstr "LCD slukket tid" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 msgid "Recording Media" msgstr "Optagemedie" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "Hurtig gennemsyn tid" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "CSM menu" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "Omvendt kommando drejeskive" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 msgid "Camera Output" msgstr "Kamera uddata" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "OptagelsesmÃ¥l" #: camlibs/ptp2/config.c:6602 msgid "EVF Mode" msgstr "EVF tilstand" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "Kunstner" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "CCD nummer" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Ophavsret" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "Rens sensor" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 msgid "Flicker Reduction" msgstr "Rystelsesreduktion" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "Tilpassede funktioner Ex" #: camlibs/ptp2/config.c:6613 #, fuzzy msgid "Focus Info" msgstr "Fokuseringstilstand" #: camlibs/ptp2/config.c:6614 #, fuzzy msgid "Focus Area" msgstr "FokuseringsomrÃ¥der" #: camlibs/ptp2/config.c:6615 msgid "Auto Power Off" msgstr "Automatisk sluk" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "Menuer og afspilning" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "Hurtigt filsystem" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 msgid "Capture Target" msgstr "Optage mÃ¥l" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 msgid "Image Format SD" msgstr "Billedformat SD" #: camlibs/ptp2/config.c:6634 msgid "Image Format CF" msgstr "Billedformat CF" #: camlibs/ptp2/config.c:6636 msgid "Image Format Ext HD" msgstr "Billedformat Ext HD" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "ISO hastighed" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 msgid "ISO Auto" msgstr "ISO Auto" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 msgid "WhiteBalance" msgstr "Hvidbalance" #: camlibs/ptp2/config.c:6654 msgid "WhiteBalance Adjust A" msgstr "Hvidbalance justering A" #: camlibs/ptp2/config.c:6655 msgid "WhiteBalance Adjust B" msgstr "Hvidbalance justering B" #: camlibs/ptp2/config.c:6656 msgid "WhiteBalance X A" msgstr "Hvidbalance X A" #: camlibs/ptp2/config.c:6657 msgid "WhiteBalance X B" msgstr "Hvidbalance X B" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "Fotoeffekt" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 msgid "Color Model" msgstr "Farvemodel" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 msgid "Color Space" msgstr "Farverum" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "Lang eksponerings støjreduktion" #: camlibs/ptp2/config.c:6669 msgid "Auto Focus Mode 2" msgstr "Auto-fokuseringstilstand 2" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "Hjælpelys" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "Rotationsflag" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 msgid "Flash Compensation" msgstr "Blitzkompensation" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 msgid "AEB Exposure Compensation" msgstr "AEB eksponeringskompensation" #: camlibs/ptp2/config.c:6685 msgid "Nikon Flash Mode" msgstr "Nikon blitz-tilstand" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 msgid "Flash Commander Mode" msgstr "Blitz-styrer tilstand" #: camlibs/ptp2/config.c:6687 msgid "Flash Commander Power" msgstr "Blitz-styrer strøm" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "Blitz-styringskanal" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 msgid "Flash Command Self Mode" msgstr "Blitz-styring egen-tilstand" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 msgid "Flash Command Self Compensation" msgstr "Blitz-styring egen-kompensation" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "Blitz-styring egen-værdi" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 msgid "Flash Command A Mode" msgstr "Blitz-styring A tilstand" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 msgid "Flash Command A Compensation" msgstr "Blitz-styring A kompensation" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "Blitz-styring A værdi" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 msgid "Flash Command B Mode" msgstr "Blitz-styring B tilstand" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 msgid "Flash Command B Compensation" msgstr "Blitz-styring B kompensation" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "Blitz-styring B værdi" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "AF omrÃ¥debelysning" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "AF bippetilstand" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "Blænde-tal" #: camlibs/ptp2/config.c:6702 #, fuzzy msgid "Movie F-Number" msgstr "Blænde-tal" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "Fleksibel program" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "Fokuseringsafstand" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "Brændvidde" #: camlibs/ptp2/config.c:6710 msgid "Focus Mode 2" msgstr "Fokuseringstilstand 2" #: camlibs/ptp2/config.c:6712 #, fuzzy msgid "Continuous AF" msgstr "Kontinuerlig" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "Effekttilstand" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 msgid "Exposure Program" msgstr "Eksponeringsprogram" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 msgid "Scene Mode" msgstr "Scenetilstand" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "Sideforhold" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 msgid "HDR Mode" msgstr "HDR-tilstand" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "HDR Høj Dynamik" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "HDR Udjævning" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "Stilbilledeoptagetilstand" #: camlibs/ptp2/config.c:6725 msgid "Canon Shooting Mode" msgstr "Canon optagetilstand" #: camlibs/ptp2/config.c:6726 msgid "Canon Auto Exposure Mode" msgstr "Canon automatisk eksponeringstilstand" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 msgid "Drive Mode" msgstr "Drev-tilstand" #: camlibs/ptp2/config.c:6728 msgid "Picture Style" msgstr "Billedestil" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "Afstandsinstillingstilstand" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "Eksponerings-mÃ¥lingstilstand" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "AV Ã¥ben" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "AV maks" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "Fokuseringspunkt" #: camlibs/ptp2/config.c:6738 msgid "Capture Delay" msgstr "Optageforsinkelse" #: camlibs/ptp2/config.c:6742 msgid "Shutter Speed 2" msgstr "Lukkerhastighed 2" #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "Lukkerhastighed 2" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "MÃ¥lingstilstand" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 msgid "AF Distance" msgstr "AF-afstand" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 msgid "Focus Area Wrap" msgstr "Nulstilling af fokuseringsomrÃ¥de" #: camlibs/ptp2/config.c:6751 msgid "Exposure Delay Mode" msgstr "Eksponering forsinkelsestilstand" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 msgid "Exposure Lock" msgstr "EksponeringslÃ¥s" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "AE-L/AF-L tilstand" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "LiveView AF tilstand" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "LiveView AF fokusering" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "Sæt filnumre i rækkefølge" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 msgid "Flash Sign" msgstr "Blitzsymbol" #: camlibs/ptp2/config.c:6759 msgid "Modelling Flash" msgstr "Modelerings blitz" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "Søgergitter" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 msgid "Image Review" msgstr "Billedgennemsyn" #: camlibs/ptp2/config.c:6762 msgid "Image Rotation Flag" msgstr "Billedrotationsflag" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "Frigør uden CF-kort" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 msgid "Flash Mode Manual Power" msgstr "Blitztilstand manuel-strøm" #: camlibs/ptp2/config.c:6765 msgid "Auto Focus Area" msgstr "Auto-fokus omrÃ¥de" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 msgid "Flash Exposure Compensation" msgstr "Blitzeksponeringskompensation" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 msgid "Bracketing" msgstr "Bracketing" #: camlibs/ptp2/config.c:6769 msgid "Bracket Mode" msgstr "Bracket tilstand" #: camlibs/ptp2/config.c:6770 msgid "EV Step" msgstr "EV skridt" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 msgid "Bracket Set" msgstr "Sammensat sæt" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "Sammensat orden" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "Serie antal" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "Serie interval" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "Maksimale antal skud" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 msgid "Auto White Balance Bias" msgstr "Automatisk hvidbalance-korrektion" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 msgid "Tungsten White Balance Bias" msgstr "Wolfram hvidbalance-korrektion" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 msgid "Fluorescent White Balance Bias" msgstr "Fluorescerende hvidbalance-korrektion" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 msgid "Daylight White Balance Bias" msgstr "Dagslys hvidbalance-korrektion" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 msgid "Flash White Balance Bias" msgstr "Blitz hvidbalance-korrektion" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 msgid "Cloudy White Balance Bias" msgstr "Skyet hvidbalance-korrektion" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 msgid "Shady White Balance Bias" msgstr "Skygget hvidbalance-korrektion" #: camlibs/ptp2/config.c:6794 msgid "White Balance Bias Preset Nr" msgstr "Hvidbalance-korrektion forindstillet nr" #: camlibs/ptp2/config.c:6795 msgid "White Balance Bias Preset 0" msgstr "Hvidbalance-korrektion forindstillet 0" #: camlibs/ptp2/config.c:6796 msgid "White Balance Bias Preset 1" msgstr "Hvidbalance-korrektion forindstillet 1" #: camlibs/ptp2/config.c:6797 msgid "White Balance Bias Preset 2" msgstr "Hvidbalance-korrektion forindstillet 2" #: camlibs/ptp2/config.c:6798 msgid "White Balance Bias Preset 3" msgstr "Hvidbalance-korrektion forindstillet 3" #: camlibs/ptp2/config.c:6799 msgid "White Balance Bias Preset 4" msgstr "Hvidbalance-korrektion forindstillet 4" #: camlibs/ptp2/config.c:6800 msgid "Selftimer Delay" msgstr "Selvudløserforsinkelse" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "CentervægtomrÃ¥de" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 msgid "Flash Shutter Speed" msgstr "Blitz-lukkerhastighed" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 msgid "Remote Timeout" msgstr "Fjernbetjent tidsudløb" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 msgid "Remote Mode" msgstr "Fjernbetjent tilstand" #: camlibs/ptp2/config.c:6805 msgid "Application Mode" msgstr "Programtilstand" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "Optimér billede" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 msgid "Sharpening" msgstr "Gør skarpere" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 msgid "Tone Compensation" msgstr "Tone-kompensation" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 msgid "Saturation" msgstr "Mætning" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 msgid "Hue Adjustment" msgstr "Farvetonejustering" #: camlibs/ptp2/config.c:6811 msgid "Auto Exposure Bracketing" msgstr "Autoeksponerings-bracketing" #: camlibs/ptp2/config.c:6812 msgid "Movie Sound" msgstr "Filmlyd" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 msgid "Manual Movie Setting" msgstr "Manuel film indstilling" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "Mikrofon" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "Omvendte indikatorer" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "Automatisk forvrængningskontrol" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 msgid "Video Mode" msgstr "Video-tilstand" #: camlibs/ptp2/config.c:6835 msgid "Meter Off Time" msgstr "MÃ¥ler slukket tid" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "Tilknyt funktionsknap" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "Tilknyt smugkig-knap" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 msgid "Movie Quality" msgstr "Film kvalitet" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 msgid "Minimum Shutter Speed" msgstr "Minidste lukkerhastighed" #: camlibs/ptp2/config.c:6862 #, fuzzy msgid "Movie Resolution" msgstr "Filopløsning" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 msgid "Continuous Shooting Speed Slow" msgstr "Kontinuerlig fotografering lav hastighed" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "ISO Auto høj grænse" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "Blitz synkroniseringshastighed" #: camlibs/ptp2/config.c:6869 #, fuzzy msgid "Focus Metering" msgstr "Afstandsinstillingstilstand" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 msgid "High ISO Noise Reduction" msgstr "Høj-ISO støjreduktion" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 msgid "Continuous Shooting Speed High" msgstr "Kontinuerlig fotografering høj hastighed" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 msgid "JPEG Compression Policy" msgstr "JPEG kompressionspolitik" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "AF-C tilstandsprioritet" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "AF-S tilstandsprioritering" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "AF aktivering" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "Dynamisk AF omrÃ¥de" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 msgid "AF Lock On" msgstr "AF lÃ¥s til" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "AF omrÃ¥de punkt" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "AF til-knap" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "Høj-ISO støjreduktion" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "Maksimalt kontinuerlig udløsning" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 msgid "Raw Compression" msgstr "RAW kompression" #: camlibs/ptp2/config.c:6922 #, fuzzy msgid "Image Quality 2" msgstr "Billede kvalitet" #: camlibs/ptp2/config.c:6944 msgid "Image Settings" msgstr "Billedindstillinger" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "Optageindstillinger" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "WIFI profiler" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 msgid "Other PTP Device Properties" msgstr "Andre PTP enheders ejerforhold" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "PTP ejerforhold 0x%04x" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "Beklager, ejerskabet for '%s' / 0x%04x er pt skrivebeskyttet." #: camlibs/ptp2/config.c:7324 #, fuzzy, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "Ejerskabet '%s' / 0x%04x var ikke sat, PTP fejlkode 0x%04x." #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, fuzzy, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "Ejerskabet '%s' / 0x%04x var ikke sat, PTP fejlkode 0x%04x." #: camlibs/ptp2/config.c:7351 #, fuzzy, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "Fortolkning af værdien af widget '%s' / 0x%04x fejlede med %d!" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "Du er nødt til at angive en mappe, der starter med /store_xxxxxxxxx/" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" "PTP2 driver\n" "(c)2001-2005 ved Mariusz Woloszyn .\n" "(c)2003-%d ved Marcus Meissner .\n" "Driveren understøtter kameraer der understøtter PTP eller\n" "PictBridge(tm), og medieafspillere der understøtter\n" "Media Transfer Protocol (MTP).\n" "\n" "God fornøjelse!" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 #, fuzzy msgid "Canon enable viewfinder failed" msgstr "Canon tillad-søger fejlede: %d" #: camlibs/ptp2/library.c:2403 #, fuzzy msgid "Canon get viewfinder image failed" msgstr "Canon hent-søgerbillede fejlede: %d" #: camlibs/ptp2/library.c:2537 msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "Beklager, dit Canon kamera understøtter ikke Canon søger tilstand" #: camlibs/ptp2/library.c:2545 msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "Beklager, dit Nikon kamera understøtter ikke liveview tilstand" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "" "Beklager, dit Nikon kamera returnerer tilsyneladende ikke et JPEG billede i " "liveview tilstand" #: camlibs/ptp2/library.c:2660 #, fuzzy msgid "Nikon disable liveview failed" msgstr "Nikon slÃ¥-liveview-fra fejlede: %x" #: camlibs/ptp2/library.c:2799 msgid "Sorry, your camera does not support Nikon capture" msgstr "Beklager, dit kamera understøtter ikke Nikon optagning" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Beklager, dit Canon kamera understøtter ikke Canon EOS optagning" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 #, fuzzy msgid "Canon EOS Half-Press failed" msgstr "Canon EOS optagning fejlede: %x" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 #, fuzzy msgid "Canon EOS Get Changes failed" msgstr "Canon EOS hent ændringer fejlede: 0x%04x" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "Canon EOS optagning fejlede udløsning: MÃ¥ske ikke i fokus?" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 #, fuzzy msgid "Canon EOS Half-Release failed" msgstr "Canon EOS optagning fejlede: %x" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 #, fuzzy msgid "Canon EOS Full-Press failed" msgstr "Canon EOS optagning fejlede: %x" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 #, fuzzy msgid "Canon EOS Full-Release failed" msgstr "Canon EOS optagning fejlede: %x" #: camlibs/ptp2/library.c:3106 #, fuzzy msgid "Canon EOS Capture failed" msgstr "Canon EOS optagning fejlede: %x" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "Canon EOS optagning fejlede: %x" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "Canon EOS optagning fejlede udløsning: Er spejlet oppe?" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" "Canon EOS optagning fejlede udløsning: MÃ¥ske ikke mere hukommelsesplads pÃ¥ " "kort?" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 #, fuzzy msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "Canon EOS optagning fejlede udløsning: Er spejlet oppe?" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "Canon EOS optagning fejlede udløsning: Ukendt fejl %d, rapportér." #: camlibs/ptp2/library.c:3332 msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "" "Beklager, dit Canon kamera understøtter ikke Canon optagningsinitiering" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 #, fuzzy msgid "Canon disable viewfinder failed" msgstr "Canon slÃ¥-søger-fra fejlede: %d" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 #, fuzzy msgid "Canon Capture failed" msgstr "Canon optagning fejlede: %x" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "Beklager, dit kamera understøtter ikke almen optagning" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "Canon EOS udløser optagning fejlede: 0x%x" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" "Beklager, initiering af dit kamera virkede ikke. Send en fejlmelding, tak." #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "skrivebeskyttet" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "læse/skrive" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, c-format msgid "Manufacturer: %s\n" msgstr "Producent: %s\n" #: camlibs/ptp2/library.c:4800 #, c-format msgid "Model: %s\n" msgstr "Model: %s\n" #: camlibs/ptp2/library.c:4802 #, c-format msgid " Version: %s\n" msgstr " Version: %s\n" #: camlibs/ptp2/library.c:4805 #, c-format msgid " Serial Number: %s\n" msgstr " Serienummer: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "Fremstiller udvidelses ID: 0x%x(%d.%d)\n" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "Fremstiller udvidelsesbeskrivelse: %s\n" #: camlibs/ptp2/library.c:4821 #, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "PTP Standardversion: %d.%d\n" #: camlibs/ptp2/library.c:4828 #, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Funktionstilstand: 0x%04x\n" #: camlibs/ptp2/library.c:4833 #, c-format msgid "" "\n" "Capture Formats: " msgstr "" "\n" "Optageformater: " #: camlibs/ptp2/library.c:4847 #, c-format msgid "Display Formats: " msgstr "Visningsformater: " #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "Understøttede MTP objektegenskaber:\n" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr " PTP fejl %04x ved forespørgsel" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" "\n" "Enhedens egenskaber:\n" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "\tFil hjemhentning, " #: camlibs/ptp2/library.c:4902 #, c-format msgid "File Deletion, " msgstr "Filsletning, " #: camlibs/ptp2/library.c:4904 #, c-format msgid "No File Deletion, " msgstr "Ingen filsletning, " #: camlibs/ptp2/library.c:4908 #, c-format msgid "File Upload\n" msgstr "Filoplægning\n" #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "Ingen filoplægning\n" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "\tAlmen billedoptagning, " #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "\tIngen billedoptagning, " #: camlibs/ptp2/library.c:4920 #, c-format msgid "Open Capture, " msgstr "Ã…ben optagning, " #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "Ingen Ã¥ben optagning, " #: camlibs/ptp2/library.c:4929 #, c-format msgid "Canon Capture" msgstr "Canon optagning" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "Canon EOS-optagelse" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "%sCanon EOS-lukkerknap" #: camlibs/ptp2/library.c:4947 #, c-format msgid "Nikon Capture 1" msgstr "Nikon-optagelse 1" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "%sNikon-optagelse 2" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "%sNikon-optagelse 3" #: camlibs/ptp2/library.c:4965 #, c-format msgid "Sony Capture" msgstr "Sony optagning" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "Olympus E XML optagelse\n" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "Ingen fremstillerspecifik optagning\n" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "\tNikon Wifi understøttelse\n" #: camlibs/ptp2/library.c:4991 #, c-format msgid "\tCanon Wifi support\n" msgstr "\tCanon Wifi understøttelse\n" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" "\n" "Sammendrag for lagerenheder:\n" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "\tBeskrivelse af lagerenheder: %s\n" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "\tVolumen mærkat: %s\n" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "Indbygget rom" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "Udtagelig rom" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "Indbygget ram" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "Udtagelig ram (hukommelseskort)" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, c-format msgid "Unknown: 0x%04x\n" msgstr "Ukendt: 0x%04x\n" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "\tLagringstype: %s\n" #: camlibs/ptp2/library.c:5043 msgid "Generic Flat" msgstr "Almen flad" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "Almen hierarkisk" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "Digitalkamera layout (DCIM)" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "\tFilsystemtype: %s\n" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "Læse-skrive" #: camlibs/ptp2/library.c:5056 msgid "Read-Only" msgstr "Kun læsning" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "Kun-læse med objekt-sletning" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "\tTilgangskapacitet: %s\n" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "\tMaksimal kapacitet: %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "\tLedig plads (byte): %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5075 #, c-format msgid "\tFree Space (Images): %d\n" msgstr "\tLedig plads (billeder): %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" "\n" "Enhedsengenskabs-sammendrag:\n" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr " ikke læsning ud.\n" #: camlibs/ptp2/library.c:5116 #, c-format msgid "cannot be queried.\n" msgstr "kan ikke forespørges.\n" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr " fejl %x ved forespørgsel." #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "Filen '%s/%s' findes ikke." #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "Metadata understøttes kun for MTP enheder." #: camlibs/ptp2/library.c:6414 msgid "Device does not support setting object protection." msgstr "Enheden understøtter ikke indstilling af objekt-beskyttelse." #: camlibs/ptp2/library.c:6418 #, fuzzy, c-format msgid "Device failed to set object protection to %d" msgstr "Enheden kunne ikke sætte objekt-beskyttelsen til %d, fejl 0x%04x." #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Initialisation af kamera" #: camlibs/ptp2/library.c:7254 #, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "" "PTP er endnu kun implementeret for USB og PTP/IP kameraer, port type %x" #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" "Olympus pakket-XML understøttelse er for nuværende kun tilgængeligt med " "libxml2 understøttelse indbygget." #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "PTP ikke defineret fejl" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP O.k.!" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "PTP generel fejl" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP session ikke Ã¥ben" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP ugyldig transaktions ID" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "PTP handling ikke understøttet" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "PTP parameter ikke understøttet" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP ikke fuldstændig overførsel" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP ugyldig lagrings ID" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "PTP ugyldig objekthÃ¥ndtering" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "PTP enhedsegenskaber ikke understøttet" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP ugyldig objekt formatkode" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP lager fuldt" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP Objektet er skrivebeskyttet" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "PTP lager skrivebeskyttet" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP tilgang nægtet" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP ingen miniature tilstede" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP selvtest mislykkedes" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP delvis sletning" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "PTP lager ikke tilgængeligt" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "PTP specifikation efter format ikke understøttet" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "PTP ingen gyldige objektinformationer" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP ugyldig kodeformat" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "PTP ukendt fremstillerkode" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP optagning allerede afbrudt" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "PTP enhed optaget" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "PTP ugyldigt forældre-objekt" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "PTP ugyldig enhedsegenskabsformat" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "PTP ugyldig enhedsegenskabsværdi" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "PTP ugyldig parameter" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP session allerede Ã¥bnet" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP transaktion afbrudt" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "PTP angivelse af mÃ¥l ikke understøttet" #: camlibs/ptp2/ptp.c:4047 #, fuzzy msgid "Filename Required" msgstr "PTP EK filnavn nødvendig" #: camlibs/ptp2/ptp.c:4048 #, fuzzy msgid "Filename Conflicts" msgstr "PTP EK filnavn konflikter" #: camlibs/ptp2/ptp.c:4049 #, fuzzy msgid "Filename Invalid" msgstr "PTP EK filnavn ugyldigt" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "Hardware fejl" #: camlibs/ptp2/ptp.c:4052 msgid "Out of Focus" msgstr "Ude af fokus" #: camlibs/ptp2/ptp.c:4053 msgid "Change Camera Mode Failed" msgstr "Ændring af kamera tilstand fejlede" #: camlibs/ptp2/ptp.c:4054 msgid "Invalid Status" msgstr "Ugyldig status" #: camlibs/ptp2/ptp.c:4055 msgid "Set Property Not Supported" msgstr "Sæt ejerforhold ikke understøttet" #: camlibs/ptp2/ptp.c:4056 msgid "Whitebalance Reset Error" msgstr "Hvidbalance nulstil-fejl" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "Støv reference fejl" #: camlibs/ptp2/ptp.c:4058 msgid "Shutter Speed Bulb" msgstr "Lukkerhastighed lang tid" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "Spejl op sekvens" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "Kamera tilstand ikke justering FTal" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "Ikke i Liveview" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "Mf Drive Step End" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "Mf Drive Step Insufficiency" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "Avanceret overførsel afbrudt" #: camlibs/ptp2/ptp.c:4066 #, fuzzy msgid "Unknown Command" msgstr "Ukendt kommando" #: camlibs/ptp2/ptp.c:4067 #, fuzzy msgid "Operation Refused" msgstr "Proces afvist" #: camlibs/ptp2/ptp.c:4068 #, fuzzy msgid "Lens Cover Present" msgstr "Objektivdæksel pÃ¥" #: camlibs/ptp2/ptp.c:4069 #, fuzzy msgid "Battery Low" msgstr "Batteristand lav" #: camlibs/ptp2/ptp.c:4070 #, fuzzy msgid "Camera Not Ready" msgstr "Kamera ikke klart" #: camlibs/ptp2/ptp.c:4072 msgid "PTP Timeout" msgstr "PTP tidsudløb" #: camlibs/ptp2/ptp.c:4073 #, fuzzy msgid "PTP Cancel Request" msgstr "PTP afbryd forespørgsel" #: camlibs/ptp2/ptp.c:4075 #, fuzzy msgid "PTP Response Expected" msgstr "PTP protokol fejl, svar forventet" #: camlibs/ptp2/ptp.c:4076 #, fuzzy msgid "PTP Data Expected" msgstr "PTP protokol fejl, data forventet" #: camlibs/ptp2/ptp.c:4077 #, fuzzy msgid "PTP I/O Error" msgstr "PTP I/O fejl" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "Ikkedefineret PTP egenskab" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "Funktionstilstand" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "Kompressions indstillinger" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Hvidbalance" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "RGB-forstærkning" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "Eksponeringstid" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "Eksponeringsprogramtilstand" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "Eksponeringsindeks (filmhastigheds ISO)" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "Eksponeringskorrektions kompensation" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "Forud-optageforsinkelse" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "Kontrast" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Digital zoom" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "Tidsforkortelses antal" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "Tidsforkortelses interval" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "Oplæg URL" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "Ophavsretsinformation" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "Understøttet miniature størrelse" #: camlibs/ptp2/ptp.c:4136 #, fuzzy msgid "Enabled Streams" msgstr "Ugyldig status" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Datoformat" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Filopløsning" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "Film kvalitet" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Kontrast" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "Lyshed" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Datoformat" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "Dato/tid stempelformat" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "Video ud" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "Strømspare" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "UI sprog" #: camlibs/ptp2/ptp.c:4169 msgid "Battery Type" msgstr "Batteritype" #: camlibs/ptp2/ptp.c:4170 msgid "Battery Mode" msgstr "Batteri tilstand" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "UILÃ¥sType" #: camlibs/ptp2/ptp.c:4172 msgid "Camera Mode" msgstr "Kameratilstand" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "Fuldvisnings filformat" #: camlibs/ptp2/ptp.c:4176 msgid "Self Time" msgstr "Selvudløse" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 msgid "Shooting Mode" msgstr "Optage tilstand" #: camlibs/ptp2/ptp.c:4180 msgid "Image Mode" msgstr "Billede tilstand" #: camlibs/ptp2/ptp.c:4187 msgid "Slow Shutter Setting" msgstr "Langsom-lukker indstillinger" #: camlibs/ptp2/ptp.c:4188 msgid "AF Mode" msgstr "AF tilstand" #: camlibs/ptp2/ptp.c:4189 msgid "Image Stabilization" msgstr "Billedstabilisering" #: camlibs/ptp2/ptp.c:4191 msgid "Color Gain" msgstr "Farveforstærkning" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "Sensivitet" #: camlibs/ptp2/ptp.c:4194 msgid "Parameter Set" msgstr "Parametersæt" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "Av Ã¥ben" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "Av maks" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "Brændvidde tele" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "Brændvidde vidvinkel" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "Brændvidde beskriver" #: camlibs/ptp2/ptp.c:4207 msgid "Capture Transfer Mode" msgstr "Optagelse overførselstilstand" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "Præfiks navn" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "Størrelse/kvalitetstilstand" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "Understøttet miniature størrelse" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "Størrelse af uddata fra kamera" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "Størrelse af inddata til Kamera" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "Remote API Version" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "Kameraejer" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "UNIX-tid" #: camlibs/ptp2/ptp.c:4219 msgid "Camera Body ID" msgstr "Kamerahus id" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "Disp Av" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "Av Ã¥ben Apex" #: camlibs/ptp2/ptp.c:4223 msgid "Digital Zoom Magnification" msgstr "Digital zoom forstørrelse" #: camlibs/ptp2/ptp.c:4224 msgid "Ml Spot Position" msgstr "Ml spot position" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "Disp Av maks" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "Av maks Apex" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "EZoom start position" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "EZoom størrelse af tele" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "Blitz antal-tælling" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "Rotations vinkel" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "Rotations scene" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "Hændelses emuleringstilstand" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "Type af lysbilledshow" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "Gennemsnitlige filstørrelser" #: camlibs/ptp2/ptp.c:4239 msgid "Model ID" msgstr "Model id" #: camlibs/ptp2/ptp.c:4248 msgid "Shooting Bank" msgstr "Eksponeringsprofil" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "Eksponeringsprofil A" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "Eksponeringsprofil B" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "Eksponeringsprofil C" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "Eksponeringsprofil D" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "Nulstil menuprofil 0" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "Hvidbalance farvetemperatur" #: camlibs/ptp2/ptp.c:4278 msgid "White Balance Preset Number" msgstr "Hvidbalance forvalgt nummer" #: camlibs/ptp2/ptp.c:4280 msgid "White Balance Preset Name 0" msgstr "Hvidbalance forvalgt navn 0" #: camlibs/ptp2/ptp.c:4282 msgid "White Balance Preset Name 1" msgstr "Hvidbalance forvalgt navn 1" #: camlibs/ptp2/ptp.c:4284 msgid "White Balance Preset Name 2" msgstr "Hvidbalance forvalgt navn 2" #: camlibs/ptp2/ptp.c:4286 msgid "White Balance Preset Name 3" msgstr "Hvidbalance forvalgt navn 3" #: camlibs/ptp2/ptp.c:4288 msgid "White Balance Preset Name 4" msgstr "Hvidbalance forvalgt navn 4" #: camlibs/ptp2/ptp.c:4290 msgid "White Balance Preset Value 0" msgstr "Hvidbalance forvalgt værdi 0" #: camlibs/ptp2/ptp.c:4292 msgid "White Balance Preset Value 1" msgstr "Hvidbalance forvalgt værdi 1" #: camlibs/ptp2/ptp.c:4294 msgid "White Balance Preset Value 2" msgstr "Hvidbalance forvalgt værdi 2" #: camlibs/ptp2/ptp.c:4296 msgid "White Balance Preset Value 3" msgstr "Hvidbalance forvalgt værdi 3" #: camlibs/ptp2/ptp.c:4298 msgid "White Balance Preset Value 4" msgstr "Hvidbalance forvalgt værdi 4" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "Objektivets brændvidde (ikke CPU)" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "Objektivets største blændeÃ¥bning (ikke CPU)" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "Auto DX Crop" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "Menuprofil A" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "Menuprofil B" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "Menuprofil C" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "Menuprofil D" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "Nulstil menuprofil" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "Lodret AF til" #: camlibs/ptp2/ptp.c:4360 msgid "Focus Area Zone" msgstr "Fokus omrÃ¥de zone" #: camlibs/ptp2/ptp.c:4362 msgid "Enable Copyright" msgstr "Tillad ophavsret" #: camlibs/ptp2/ptp.c:4366 msgid "Exposure ISO Step" msgstr "Eksponerings ISO skridt" #: camlibs/ptp2/ptp.c:4368 msgid "Exposure Step" msgstr "Eksponeringsskridt" #: camlibs/ptp2/ptp.c:4370 msgid "Exposure Compensation (EV)" msgstr "Eksponeringskompensation (EV)" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "Centervægt omrÃ¥de" #: camlibs/ptp2/ptp.c:4376 msgid "Exposure Base Matrix" msgstr "Eksponerings base matrix" #: camlibs/ptp2/ptp.c:4378 msgid "Exposure Base Center" msgstr "Eksponerings base center" #: camlibs/ptp2/ptp.c:4380 msgid "Exposure Base Spot" msgstr "Eksponerings base spot" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "LiveView AF omrÃ¥de" #: camlibs/ptp2/ptp.c:4390 msgid "Auto Meter Off Time" msgstr "Automatisk mÃ¥ler slukket tid" #: camlibs/ptp2/ptp.c:4392 msgid "Self Timer Delay" msgstr "Selvudløser forsinkelse" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "Img Conf tid" #: camlibs/ptp2/ptp.c:4398 msgid "Auto Off Timers" msgstr "Automatisk sluk tidtager" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "Vinkel niveau" #: camlibs/ptp2/ptp.c:4402 msgid "Shooting Speed" msgstr "Lukkerhastighed" #: camlibs/ptp2/ptp.c:4406 msgid "Exposure delay mode" msgstr "Eksponeringsforsinkelsestilstand" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 msgid "Long Exposure Noise Reduction" msgstr "Langtidseksponeringsstøjreduktion" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "LCD belysning" #: camlibs/ptp2/ptp.c:4418 msgid "High ISO noise reduction" msgstr "Høj ISO støjreduktion" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "Tips pÃ¥ skærm" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "Kunstnernavn" #: camlibs/ptp2/ptp.c:4424 msgid "Copyright Information" msgstr "Ophavsretsinformation" #: camlibs/ptp2/ptp.c:4432 msgid "Modeling Flash" msgstr "Modeler blitz" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "Manueltilstand bracketing" #: camlibs/ptp2/ptp.c:4440 msgid "Auto Bracket Selection" msgstr "Automatisk sammensætning udvælgelse" #: camlibs/ptp2/ptp.c:4441 msgid "NIKON Auto Bracketing Set" msgstr "Nikon automatisk bracketing indstilling" #: camlibs/ptp2/ptp.c:4443 msgid "Center Button Shooting Mode" msgstr "Centerknap optagetilstand" #: camlibs/ptp2/ptp.c:4445 msgid "Center Button Playback Mode" msgstr "Centerknap afspilletilstand" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "Multivælger" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "Fotoinformation. Afspilning" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "Tilknytningsfunktion. Knap" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "Tilpas kommando drejeskiver" #: camlibs/ptp2/ptp.c:4457 msgid "Aperture Setting" msgstr "BlændeÃ¥bningsindstilling" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "Knapper og drejeskiver" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "Ingen CF-kort udløst" #: camlibs/ptp2/ptp.c:4465 msgid "Center Button Zoom Ratio" msgstr "Centerknap zoomforhold" #: camlibs/ptp2/ptp.c:4467 msgid "Function Button 2" msgstr "Funktionsknap 2" #: camlibs/ptp2/ptp.c:4471 msgid "Normal AF On" msgstr "Normal AF til" #: camlibs/ptp2/ptp.c:4473 msgid "Clean Image Sensor" msgstr "Rens billedsensor" #: camlibs/ptp2/ptp.c:4475 msgid "Image Comment String" msgstr "Billedkommentar streng" #: camlibs/ptp2/ptp.c:4477 msgid "Image Comment Enable" msgstr "Billedkommentar tilladt" #: camlibs/ptp2/ptp.c:4479 msgid "Image Rotation" msgstr "Billedrotation" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "Manuel indstilling objektiv nummer" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "Filmskærm størrelse" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "Filmlyd" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "Film mikrofon" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "Film kortport" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "Sluk skærm forsinkelse" #: camlibs/ptp2/ptp.c:4497 msgid "Bracketing Enable" msgstr "Bracketing til" #: camlibs/ptp2/ptp.c:4499 msgid "Exposure Bracketing Step" msgstr "Eksponerings bracketing skridt" #: camlibs/ptp2/ptp.c:4501 msgid "Exposure Bracketing Program" msgstr "Eksponerings bracketing program" #: camlibs/ptp2/ptp.c:4503 msgid "Auto Exposure Bracket Count" msgstr "Autoeksponerings bracketing tælling" #: camlibs/ptp2/ptp.c:4504 msgid "White Balance Bracket Step" msgstr "Hvidbalance Bracketing skridt" #: camlibs/ptp2/ptp.c:4505 msgid "White Balance Bracket Program" msgstr "Hvidbalance Bracketing program" #: camlibs/ptp2/ptp.c:4507 msgid "Lens ID" msgstr "Objektiv ID" #: camlibs/ptp2/ptp.c:4509 msgid "Lens Sort" msgstr "Objektivslags" #: camlibs/ptp2/ptp.c:4511 msgid "Lens Type" msgstr "Objektivtype" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "Min. brændvidde" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "Maks. brændvidde" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "Maks. blændeÃ¥bning ved min. brændvidde" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "Maks. blændeÃ¥bning ved max. brændvidde" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "Søger ISO visning" #: camlibs/ptp2/ptp.c:4523 msgid "Auto Off Photo" msgstr "Automatisk sluk billede" #: camlibs/ptp2/ptp.c:4525 msgid "Auto Off Menu" msgstr "Automatisk sluk menu" #: camlibs/ptp2/ptp.c:4527 msgid "Auto Off Info" msgstr "Automatisk sluk information" #: camlibs/ptp2/ptp.c:4529 msgid "Self Timer Shot Number" msgstr "Selvudløser optagelsenummer" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "Vigneteringskontrol" #: camlibs/ptp2/ptp.c:4537 msgid "Nikon Exposure Time" msgstr "Nikon eksponeringstid" #: camlibs/ptp2/ptp.c:4539 msgid "Warning Status" msgstr "Advarselsstatus" #: camlibs/ptp2/ptp.c:4546 msgid "AF LCD Top Mode 2" msgstr "AF LCD-topindstilling 2" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "Aktiv AF-sensor" #: camlibs/ptp2/ptp.c:4552 msgid "Exposure Meter" msgstr "EksponeringsmÃ¥ler" #: camlibs/ptp2/ptp.c:4556 msgid "USB Speed" msgstr "USB-hastighed" #: camlibs/ptp2/ptp.c:4558 msgid "CCD Serial Number" msgstr "CCD-serienummer" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "Gruppe PTN type" #: camlibs/ptp2/ptp.c:4564 msgid "FNumber Lock" msgstr "Blænde-tal lÃ¥s" #: camlibs/ptp2/ptp.c:4566 msgid "Exposure Aperture Lock" msgstr "EksponeringsblændelÃ¥s" #: camlibs/ptp2/ptp.c:4568 msgid "TV Lock Setting" msgstr "TV lÃ¥s indstilling" #: camlibs/ptp2/ptp.c:4570 msgid "AV Lock Setting" msgstr "AV lÃ¥s indstilling" #: camlibs/ptp2/ptp.c:4572 msgid "Illum Setting" msgstr "Illum indstilling" #: camlibs/ptp2/ptp.c:4574 msgid "Focus Point Bright" msgstr "Fokuseringspunkt lyst" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "Ekstern blitz monteret" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "Ekstern blitz-status" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "Ekstern blitz-type" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 msgid "External Flash Mode" msgstr "Ekstern blitz-tilstand" #: camlibs/ptp2/ptp.c:4584 msgid "External Flash Compensation" msgstr "Ekstern blitz-kompensation" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "S/H udfylder effekt" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "S/H Skarphed" #: camlibs/ptp2/ptp.c:4604 msgid "BW Contrast" msgstr "S/H Kontrast" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "S/H indstillingstype" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "Plads 2 gem-tilstand" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "RÃ¥ bit-tilstand" #: camlibs/ptp2/ptp.c:4614 msgid "Flourescent Type" msgstr "Fluorescerende type" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "Justering Farvetemperatur" #: camlibs/ptp2/ptp.c:4618 msgid "Tune Preset 0" msgstr "Indstil forvalgt 0" #: camlibs/ptp2/ptp.c:4620 msgid "Tune Preset 1" msgstr "Indstil forvalgt 1" #: camlibs/ptp2/ptp.c:4622 msgid "Tune Preset 2" msgstr "Indstil forvalgt 2" #: camlibs/ptp2/ptp.c:4624 msgid "Tune Preset 3" msgstr "Indstil forvalgt 3" #: camlibs/ptp2/ptp.c:4626 msgid "Tune Preset 4" msgstr "Indstil forvalgt 4" #: camlibs/ptp2/ptp.c:4630 msgid "Autofocus Mode" msgstr "Auto-fokuseringstilstand" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "AF hjælpelys" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "Auto ISO P/A/DVP opsætning" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "Søger gittervisning" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "Blitz-tilstand fjernbetjener strøm" #: camlibs/ptp2/ptp.c:4656 msgid "Auto FP" msgstr "Automatisk FP" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "Advarsels skærm" #: camlibs/ptp2/ptp.c:4662 msgid "Battery Cell Kind" msgstr "Battericelle type" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "Automatisk-ISO øvre grænse" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "Kontinuerlig hastighed høj" #: camlibs/ptp2/ptp.c:4670 msgid "Info Disp Setting" msgstr "Information Disp. indstilling" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "Smugkig-knap" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "Smugkig-knap 2" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "AEAF lÃ¥s knap 2" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "Indikator skærm" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "Celle-type rækkefølge" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "Bracketing rammer og skridt" #: camlibs/ptp2/ptp.c:4684 msgid "Live View Mode" msgstr "LiveView tilstand" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "Liveview Drev-tilstand" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "LiveView status" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "LiveView billedzoom forhold" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "LiveView forhindret tilstand" #: camlibs/ptp2/ptp.c:4694 msgid "Exposure Display Status" msgstr "Eksponeringsdisplay status" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "Eksponeringsindikator status" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "Informationsvindue fejlstatus" #: camlibs/ptp2/ptp.c:4700 msgid "Exposure Indicate Lightup" msgstr "Eksponeringsindikator oplysning" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "Blitz MRepeat værdi" #: camlibs/ptp2/ptp.c:4708 msgid "Flash MRepeat Count" msgstr "Blitz MRepeat tælling" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "Blitz MRepeat interval" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "Active Pic Ctrl Item" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "Change Pic Ctrl Item" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "" #: camlibs/ptp2/ptp.c:4749 #, fuzzy msgid "Image Compression" msgstr "RAW kompression" #: camlibs/ptp2/ptp.c:4758 msgid "Secure Time" msgstr "Sikker tid" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "Enhedscertifikat" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "Tilbagekaldelses info" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "Synkroniseringspartner" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "Enhedsvenligt navn" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "Volumen niveau" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "Enhedsikon" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "Information for sessionsopstart" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "Registreret enhedstype" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "Afspilningshastighed" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "Afspilningsobjekt" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "Afspilnings indholdsindeks" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "Afspilningsposition" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "PlaysForSure ID" #: camlibs/ptp2/ptp.c:4782 msgid "Quality" msgstr "Kvalitet" #: camlibs/ptp2/ptp.c:4783 msgid "Release Mode" msgstr "Udløse-tilstand" #: camlibs/ptp2/ptp.c:4784 msgid "Focus Areas" msgstr "FokuseringsomrÃ¥der" #: camlibs/ptp2/ptp.c:4785 msgid "AE Lock" msgstr "AE lÃ¥s" #: camlibs/ptp2/ptp.c:4797 #, fuzzy msgid "Image size" msgstr "Billede størrelse" #: camlibs/ptp2/ptp.c:4798 #, fuzzy msgid "Shutter speed" msgstr "Lukkerhastighed" #: camlibs/ptp2/ptp.c:4799 #, fuzzy msgid "Color temperature" msgstr "Farvetemperatur" #: camlibs/ptp2/ptp.c:4802 #, fuzzy msgid "Expose Index" msgstr "Eksponeringstid" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 #, fuzzy msgid "Still Image" msgstr "Helt billede" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "%.1f stop" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "%.0f mm" #: camlibs/ptp2/ptp.c:4940 msgid "JPEG Norm" msgstr "JPEG Norm" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "RÃ¥ + JPEG basis" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Hvidglødende" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "Automatisk makro (tæt-pÃ¥)" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "Centervægtet gennemsnit" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "Center-spot" #: camlibs/ptp2/ptp.c:4966 msgid "Automatic flash" msgstr "Automatisk blitz" #: camlibs/ptp2/ptp.c:4969 msgid "Automatic Red-eye Reduction" msgstr "Automatisk rødøje-reduktion" #: camlibs/ptp2/ptp.c:4970 msgid "Red-eye fill flash" msgstr "Rødøje udfyldning" #: camlibs/ptp2/ptp.c:4988 msgid "Power Wind" msgstr "Motordrev" #: camlibs/ptp2/ptp.c:4994 msgid "Timer + Remote" msgstr "Timer + Fjernbetjening" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "Kun AF lÃ¥s" #: camlibs/ptp2/ptp.c:5056 msgid "Flash Lock" msgstr "Blitz lÃ¥s" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "Nulstil fokuspunkt til centeret" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "Oplys aktivt fokuspunkt" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "Ubrugt" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "SDRam" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "USB 1.1" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "USB 2.0" #: camlibs/ptp2/ptp.c:5169 msgid "LCD Backlight" msgstr "LCD baglys" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "LCD baglys og informations skærm" #: camlibs/ptp2/ptp.c:5228 msgid "1 min" msgstr "1 min" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "5 min" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "10 min" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "15 min" #: camlibs/ptp2/ptp.c:5266 msgid "Dark on light" msgstr "Mørkt pÃ¥ lyst" #: camlibs/ptp2/ptp.c:5267 msgid "Light on dark" msgstr "Lyst pÃ¥ mørkt" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "Lithium Ion" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "Nickel hydride" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "Nickel cadmium" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "Alkalium manganese" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "Advarselsniveau 1" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "Nødsituation" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "Advarselsniveau 0" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "Økonomi" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "Superfin" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "Rødøje reduktion" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "Lav-hastigheds synkronisering" #: camlibs/ptp2/ptp.c:5345 msgid "Auto + Red Eye Suppression" msgstr "Automatisk + rødøje-reduktion" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "Til + rødøje-reduktion" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "Fjern-visning" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "Højhastighedslukker" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "Lavhastighedslukker" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "Nat-viser" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "GrÃ¥skala" #: camlibs/ptp2/ptp.c:5370 msgid "Pan Focus" msgstr "Panoreringsfokusering" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "Enkelt-billedsfotografering" #: camlibs/ptp2/ptp.c:5375 msgid "Continuous Shooting" msgstr "Kontinuerlig fotografering" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "Tidsindstillet (enkelt) fotografering" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "Kontinuerlig lavhastighedsfotografering" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "Kontinuerlig højhastighedsfotografering" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "Glat" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "Centervægtet mÃ¥ling" #: camlibs/ptp2/ptp.c:5386 msgid "Spot Metering" msgstr "SpotmÃ¥ling" #: camlibs/ptp2/ptp.c:5387 msgid "Average Metering" msgstr "Centervægtet mÃ¥ling" #: camlibs/ptp2/ptp.c:5388 msgid "Evaluative Metering" msgstr "Evaluerende mÃ¥ling" #: camlibs/ptp2/ptp.c:5389 msgid "Partial Metering" msgstr "Del mÃ¥ling" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "Centervægtet gennemsnitsmÃ¥ling" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "SpotmÃ¥ling lÃ¥st med AF-ramme" #: camlibs/ptp2/ptp.c:5392 msgid "Multi-Spot Metering" msgstr "Multi-spotmÃ¥ling" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "Lavhastighedslukkerfunktion ikke tilgængelig" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "Lav 2" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 msgid "High 2" msgstr "Høj 2" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "Øvre 1" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "Øvre 2" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "Standard fremkaldelsesparametre" #: camlibs/ptp2/ptp.c:5462 msgid "Development Parameters 1" msgstr "Fremkaldelsesparameter 1" #: camlibs/ptp2/ptp.c:5463 msgid "Development Parameters 2" msgstr "Fremkaldelsesparameter 2" #: camlibs/ptp2/ptp.c:5464 msgid "Development Parameters 3" msgstr "Fremkaldelsesparameter 3" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "MlSpotPosCenter" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "MlSpotPosAfLink" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "Medie kort" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "Medie kort gruppe" #: camlibs/ptp2/ptp.c:5600 msgid "Encounter" msgstr "Encounter" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "Encounter Box" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "M4A" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "Firmware" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "Windows billedeformat" #: camlibs/ptp2/ptp.c:5605 msgid "Undefined Audio" msgstr "Lyd ikke defineret" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "Audible.com Codec" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "Samsung afspilningsliste" #: camlibs/ptp2/ptp.c:5612 msgid "Undefined Video" msgstr "Video ikke defineret" #: camlibs/ptp2/ptp.c:5617 msgid "Undefined Collection" msgstr "Samling ikke defineret" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "Abstrakt multimediealbum" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "Abstrakt billedalbum" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "Abstrakt lydalbum" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "Abstrakt videoalbum" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "Abstrakt lyd-video afspilningsliste" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "Abstrakt kontaktgruppe" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "Abstrakt beskedmappe" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "Abstrakt nummereret produktion" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "Abstrakt lyd afspilningsliste" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "Abstrakt video afspilningsliste" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "Abstrakt Mediacast" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "WPL afspilningsliste" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "M3U afspilningsliste" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "MPL afspilningsliste" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "ASX afspilningsliste" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "PLS afspilningsliste" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "Ikke-defineret dokument" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "Abstrakt dokument" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "XML dokument" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "Microsoft Word dokument" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "MHT kompileret HTML dokument" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "Microsoft Excel regneark (.xls)" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "Microsoft Powerpoint (.ppt)" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "Ikke-defineret besked" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "Abstrakt besked" #: camlibs/ptp2/ptp.c:5643 msgid "Undefined Contact" msgstr "Ikke-defineret kontakt" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "Abstrakt kontakt" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "vKort2" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "vKort3" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "Ikke-defineret kalenderpunkt" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "Abstrakt kalenderpunkt" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "vKalender1" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "vKalender2" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "Ikke-defineret Windows eksekverbar" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "Media Cast" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "Sektion" #: camlibs/ptp2/ptp.c:5692 #, c-format msgid "Unknown(%04x)" msgstr "Ukendt(%04x)" #: camlibs/ptp2/ptp.c:5702 #, fuzzy msgid "Get device info" msgstr "hent enhedsinformation" #: camlibs/ptp2/ptp.c:5703 msgid "Open session" msgstr "Ã…bn session" #: camlibs/ptp2/ptp.c:5704 msgid "Close session" msgstr "Luk session" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "Hent lagring-id'er" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "Hent lagringsinformation" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "Hent antallet af objekter" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "Hent objekthÃ¥ndtag" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "Hent objektinformation" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "Hent objekt" #: camlibs/ptp2/ptp.c:5711 msgid "Get thumbnail" msgstr "Hent miniature" #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "Slet objekt" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "Send objektinformation" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "Send objekt" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "Initialiser optagelse" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "Gemningsformat" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "Nulstil enhed" #: camlibs/ptp2/ptp.c:5718 msgid "Self test device" msgstr "Selvtest enhed" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "Sæt objektbeskyttelse" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "Sluk for enhed" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "Hent enhedsengenskabsbeskrivelse" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "Hent enheds-engenskabs-værdi" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "Sæt enhedsengenskabsværdi" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "Nulstil enhedsengenskabsværdi" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "Afbryd Ã¥ben optagelse" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "Flyt objekt" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "Kopier objekt" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "Hent partielt objekt" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "Initier Ã¥ben optagelse" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 #, fuzzy msgid "Get Vendor Extension Maps" msgstr "Fremstiller udvidelse" #: camlibs/ptp2/ptp.c:5735 #, fuzzy msgid "Get Vendor Device Info" msgstr "hent enhedsinformation" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 #, fuzzy msgid "Get Filesystem Manifest" msgstr "Hurtigt filsystem" #: camlibs/ptp2/ptp.c:5738 #, fuzzy msgid "Get Stream Info" msgstr "Hent lagringsinformation" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "Hent understøttede objektegenskaber" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "Hent beskrivelse af objektegenskaber" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "Hent værdi af objektegenskaber" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "Sæt værdi af objektegenskaber" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "Hent liste for objektegenskaber" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "Sæt liste for objektegenskaber" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "Hent indbyrdes afhængige egenskabsbeskrivelser" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "Send liste for objektegenskaber" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "Hent objektreferencer" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "Sæt objektreferencer" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "Opdater enhedens firmware" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "Spring videre til næste position i afspilningsliste" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "Hent sikkertid udfordring" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "Hent sikkertid svar" #: camlibs/ptp2/ptp.c:5759 msgid "Set license response" msgstr "Sæt licenssvar" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "Hent synkroniseringsliste" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "Send forespørgsel til mÃ¥ler-udfordring" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "Hent mÃ¥ler-udfordring" #: camlibs/ptp2/ptp.c:5763 msgid "Get meter response" msgstr "Hent mÃ¥lersvar" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "Tøm datalager" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "Hent licenstilstand" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "Send WMDRM-PD kommando" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "Send WMDRM-PD forespørgsel" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "Rapportér tilføjede/slettede punkter" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "Rapportér hentede punkter" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "Hent spillelistetyper der kan overføres" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "Send WMDRM-PD programforespørgsel" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "Hent WMDRM-PD programsvar" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "Tillad stoler-pÃ¥-filer operationer" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "Afbryd stoler-pÃ¥-filer operationer" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "Afslut stoler-pÃ¥-programmer session" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "Ã…bn medie session" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "Luk medie session" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "Hent næste data blok" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "Sæt nuværende tidsposition" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "Send registreringsforespørgsel" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "Hent registreringssvar" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "Hent nærheds-udfordring" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "Send nærheds-svar" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "Send WMDRM-ND licens forespørgsel" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "Hent WMDRM-ND licenssvar" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "Behandl WFC objekt" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "Hent partielt objekt (64-bit forskydning)" #: camlibs/ptp2/ptp.c:5800 msgid "Send Partial Object" msgstr "Send partielt objekt" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "Afskær objekt" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "Begynd redigering af objekt" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "Afslut redigering af objekt" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "Ukendt %d" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "Fremstiller udvidelse" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "Hjemhenter film..." #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "Hjemhenter lyd..." #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "Hjemhenter EXIF-data..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "Ingen EXIF-data tilgængelige for %s." #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "Kunne ikke slette filen." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "Kunne ikke fjerne kataloget." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "Kunne ikke oprette kataloget." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "Version: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "RTC status: %d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "Kameratid: %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "Kamera ID: %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "Intet SD-kort isat.\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "SD-kort ID: %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "Billeder i kamera: %d\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "SD-hukommelse: %d MB total, %d MB fri.\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "Intern hukommelse: %d MB total, %d MB fri.\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Omvendt-beregnet ved hjælp af USB Snoopy,\n" "et kig pÃ¥ firmware-update billede og vilde gæt.\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Ricoh / Philips driver ved\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "baseret pÃ¥ Bob Paauwe's driver\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "ukendt (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Model: %s\n" "Hukommelse: %d byte af %d tilgængelig" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2.0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1.5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1.0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0.5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0.0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0.5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1.0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1.5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2.0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Udendørs" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Maksimal" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Minimal" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Tegn" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Lyd" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Billede og lyd" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Tegn og lyd" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Konfiguration" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Generel" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Ophavsret (maks. 20 tegn)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "Billeder" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Hvidniveau" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Optagetilstand" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Kompression" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "Hastigheden %i er ikke understøttet!" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "Forventede %i, fik %i. Rapportér denne fejl til %s." #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "Forventede %i byte, fik %i. Rapportér denne fejl til %s." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "Vi forventede 0x%x men modtog 0x%x. Kontakt %s." #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "Forkerte tegn (0x%x, 0x%x). Kontakt %s." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "Kameraet optaget. Hvis problemet fortsætter, kontakt %s." #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "Tidsgrænse overskredet endda efter 2 ekstra forsøg. Kontakt %s." #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "Kommunikationsfejl endda efter 2 ekstra forsøg. Kontakt %s." #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "Kameraet er i en forkert tilstand. Kontakt %s." #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "Kameraet accepterede ikke parametrene. Kontakt %s." #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "En ukendt fejl opstod. Kontakt %s." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "Filnavnslængde mÃ¥ ikke overstige 12 tegn ('%s' er pÃ¥ %i tegn)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "Samsung digimax 800k driveren er skrevet af James McKenzie til gphoto. Lutz Mueller porterede den " "til gphoto2. Marcus Meissner rettede og forbedrede " "porten." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Opløsning plus størrelse" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Dato og tid (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 msgid "Aperture Settings" msgstr "BlændeÃ¥bningsindstillinger" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Farvetilstand" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Rødøjereduktion" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Blitzindstillinger" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "Vært strømspare (sekunder)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Kamera strømspare (sekunder)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Objektivtilstand" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "Koreansk" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "Engelsk" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "Fransk" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "Tysk" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "Italiensk" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "Japansk" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "Spansk" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "Portugisisk" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Billedeindstillinger" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "Nogle noter om Epson kameraer:\n" "- Nogle parametre kan ikke fjernbetjenes:\n" " * zoom\n" " * fokus\n" " * brugertilpasset hvidbalanceopsætning\n" "- Konfigurationen er omvendt-beregnet med et\n" " PhotoPC 3000z, hvis dit kamera opfører sig anderledes\n" " send en mail til gphoto udvikler mailinglisten (pÃ¥ engelsk)\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Intet hukommelseskort tilstede" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "Kan ikke hente batterikapacitet" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "Kameraets batteriniveau er for lavt (%d%%). Funktionen er afbrudt." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Kan ikke hente hvor meget hukommelse der er tilbage" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "Kameraet afviste 3 gange at holde forbindelse Ã¥ben." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "Den første byte modtaget (0x%x) er ikke gyldig." #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "Overførsel af pakke tidsudløb selv efter %i forsøg. Kontakt %s." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Kunne ikke overføre pakke selv efter adskillelige forsøg." #: camlibs/sierra/library.c:789 #, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "Pakke blev afvist af kamera. Kontakt %s." #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "Kunne ikke sende pakke (fejlkode %i). Kontakt %s." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "Overførsel tidsudløb selv efter 2 forsøg. Giver op..." #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "Fik uventede resultater 0x%x. Kontakt %s." #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "Modtog uventet svar (%i). Kontakt %s." #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "Kunne ikke hente register %i. Kontakt %s." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "For mange forsøg fejlede." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Sender data..." #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "rekursive kald er ikke understøttet af sierradriveren! Kontakt %s." #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "Kunne ikke hente streng-register %i. Kontakt %s." #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "Forventede 32 byte, fik %i. Kontakt %s." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "Lukkerhastighed i mikrosekunder (0 auto)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "Lukkerhastighed (i sekunder)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "S/H" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Anti-rødøje" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "Langsom-synkronisering" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "Kontrast+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Kontrast-" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "Lyshed+" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "Lyshed-" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Billedejustering" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "Blink" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "LED-tilstand" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "Uendelig" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "Smugkig-miniature" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "Næste" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "Forrige" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Procestilstand" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "LCD-lyshed" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "LCD-autosluk (sekunder)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "Centervægtet" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "Matrix" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Spot-AF" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "EksponeringsmÃ¥ling" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "Zoom (i millimeter)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "ingen" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "AE-lÃ¥s" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "Fiskeøje" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Vidvinkel" #: camlibs/sierra/nikon-desc.c:558 msgid "Misc exposure/lens settings" msgstr "Blandede eksponerings/objektiv indstillinger" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Automatisk eksponeringslÃ¥s" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " Kamera konfiguration (eller præferencer):\n" "\n" " Den optiske zoom virker ikke\n" " ordentligt.\n" "\n" " Ikke alle konfigurationsindstillinger\n" " kan læses og skrives korrekt, for\n" " eksempel, fintuningsindstillingen af\n" " hvidbalance, og sprogindstillinger.\n" "\n" " Sæt kameraet i 'M' tilstand, for at\n" " kunne indstille lukkerhastigheden.\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 880:\n" " Kamera konfiguration (præferencer) for dette\n" " kamera er ikke fuldstændige, kontakt gphoto\n" " udviklernes mail-liste, hvis du kan/vil bidrage\n" " til/med denne driver\n" "\n" " Hjemhentning skulle fungere korrekt.\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "Hvid tavle" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "Sort tavle" #: camlibs/sierra/olympus-desc.c:489 msgid "Color or Function Mode" msgstr "Farve- eller funktions-tilstand" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 msgid "Slow" msgstr "Langsom" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "Anti-rødøje udfyldning" #: camlibs/sierra/olympus-desc.c:596 msgid "Fluorescent-1-home-6700K" msgstr "Fluorescerende-1-hjem-6700K" #: camlibs/sierra/olympus-desc.c:597 msgid "Fluorescent-2-desk-5000K" msgstr "Fluorescerende-2-bord-5000K" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "Fluorescerende-3-kontor-4200K" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "Fluorescerende-1-hjem-6700K" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "Fluorescerende-2-bord-5000K" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "Fluorescerende-3-kontor-4200K" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "Skumring" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Skærm" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "LCD-tilstand" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "ESP" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Digital zoom" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "Fokuseringsposition" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Tidsformat" #: camlibs/sierra/olympus-desc.c:1147 msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Nogle noter om Olympus kameraer:\n" "(1) Kamera konfiguration:\n" " Værdien 0 bruges som standarden (auto).\n" "(2) Olympus C-3040Z (og givet ogsÃ¥ C-2040Z\n" " og andre) har en USB PC kontrol tilstand.\n" " For at bruge denne tilstand, tændes for kameraet\n" " Ã¥ben døren til hukommelseskortet, tryk og hold\n" " bÃ¥de pÃ¥ menu- og LCD-knapperne, indtil kamera\n" " kontrol-menuen kommer frem. Sæt den til tændt.\n" "(3) Hvis du ændrer 'LCD-tilstand' til 'Skærm' eller\n" " 'Normal', skal du huske at skifte tilbage til 'Slukket'\n" " inden du afbryder forbindelsen. Ellers kan du ikke\n" " bruge kameraets knapper. Hvis det sker, skal du\n" " forbinde kameraet til PC'en igen, og skifte LCD til\n" " 'Slukket'." #: camlibs/sierra/olympus-desc.c:1166 msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ har en USB PC kontroltilstand. For\n" " at bruge denne tilstand, skal kameraet ændres til\n" " 'USB PC kontrol tilstand'. For at komme til menuen\n" " med omskiftning, tænd for kameraet, Ã¥ben for lÃ¥gen\n" " til hukommelseskortet, og tryk og hold bÃ¥de 'O.k.'\n" " og 'quickview' knapperne, indtil kamera kontrolmenuen\n" " kommer frem. Indstil det til kontrol tilstand.\n" "(2) Hvis du ændrer til 'LCD-tilstand', 'Skærm' eller 'Normal'\n" " skal du huske at skifte tilbage før du afbryder. Du vil\n" " ellers ikke kunne bruge kameraets knapper. Hvis det sker\n" " alligevel, skal du forbinde kameraet til PC'en igen, og\n" " ændre 'LCD' til 'Slukket'." #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Standard Sierra driver:\n" "\n" " Dette er standard sierra driver, den skulle\n" " være i stand til at understøtte hjemhentning\n" " og gennemsyn af billede pÃ¥ dit kamera.\n" "\n" " Kamera konfiguration (eller præferencer)\n" " indstillinger er baseret pÃ¥ Olympus 3040,\n" " og er givetvis ufuldstændig. Hvis du konstaterer,\n" " at indstillingerne er i orden for dit kamera, eller du\n" " kan bidrage med kode eller har en komplet\n" " konfiguration, kontakt udvikler mail-listen.\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "Filen der skal oplægges har nul-længde" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "Ikke tilstrækkelig hukommelse pÃ¥ kortet" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Kan ikke hente navnet pÃ¥ mappen hvor billederne er" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "Oplægning er kun understøttet til '%s' mappen" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Bedst" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (ukendt)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "Lukkerhastighed (mikrosekunder, 0 auto)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Sort/hvid" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "Hvid tavle" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Sort tavle" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "Lyshed/kontrast" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "Lyst+" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "Lyst-" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Skylight" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "Uendelig/fiskeøje" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "SpotmÃ¥lingstilstand" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1.6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2.5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "Autosluk (vært)(i sekunder)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "Hvor lang tid vil der gÃ¥ før kameraet slukker, nÃ¥r det er tilsluttet en " "computer?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "Autosluk (felt)(i sekunder)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "Hvor lang tid vil der gÃ¥ før kameraet slukker, nÃ¥r det ikke er tilsluttet en " "computer?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "LCD-autosluk (i sekunder)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Skud-indstillinger" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 msgid "standard" msgstr "standard" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "HyPict" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "farve" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "sort/hvid" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" "Bemærk: intet hukommelseskort tilstede, nogle værdier er muligvis forkerte\n" #: camlibs/sierra/sierra.c:1948 #, c-format msgid "Camera Model: %s\n" msgstr "Kameramodel: %s\n" #: camlibs/sierra/sierra.c:1957 #, c-format msgid "Serial Number: %s\n" msgstr "Serienummer: %s\n" #: camlibs/sierra/sierra.c:1960 #, c-format msgid "Software Rev.: %s\n" msgstr "Software rev.: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, c-format msgid "Frames Taken: %i\n" msgstr "Rammer taget: %i\n" #: camlibs/sierra/sierra.c:1971 #, c-format msgid "Frames Left: %i\n" msgstr "Rammer tilbage: %i\n" #: camlibs/sierra/sierra.c:1973 #, c-format msgid "Battery Life: %i\n" msgstr "Batteriliv: %i\n" #: camlibs/sierra/sierra.c:1975 #, c-format msgid "Memory Left: %i bytes\n" msgstr "Hukommelse tilbage: %i byte\n" #: camlibs/sierra/sierra.c:1980 #, c-format msgid "Date: %s" msgstr "Dato: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "Ingen kamera manual tilgængelig.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "Nogle noter om Epson kameraer:\n" "- Nogle parametre kan ikke fjerbetjenes:\n" " * zoom\n" " * fokusering\n" " * indstilling af bruger hvidbalance\n" "- Konfigurationen er omvendt-beregnet med\n" " et PhotoPC 3000z. Hvis dit kamera opfører sig\n" " anderledes, send en mail til %s (pÃ¥ engelsk)\n" #: camlibs/sierra/sierra.c:2060 msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Nogle noter om Olympus kameraer (og andre?):\n" "(1) Kamera konfiguration:\n" " Værdien 0 bruges som standarden (auto).\n" "(2) Olympus C-3040Z (og givet ogsÃ¥ C-2040Z\n" " og andre) har en USB PC kontrol tilstand.\n" " For at bruge denne tilstand, tændes for kameraet\n" " Ã¥ben døren til hukommelseskortet, tryk og hold\n" " bÃ¥de pÃ¥ menu- og LCD-knapperne, indtil kamera\n" " kontrol-menuen kommer frem. Sæt den til tændt.\n" "(3) Hvis du ændrer 'LCD-tilstand' til 'Skærm' eller\n" " 'Normal', skal du huske at skifte tilbage til 'Slukket'\n" " inden du afbryder forbindelsen. Ellers kan du ikke\n" " bruge kameraets knapper. Hvis det sker, skal du\n" " forbinde kameraet til PC'en igen, og skifte LCD til\n" " 'Slukket'." #: camlibs/sierra/sierra.c:2087 msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "sierra SPARClite bibliotek\n" "Scott Fritzinger \n" "Understøttelse for sierra-baserede digitalkameraer\n" "inkluderende Olympus, Nikon, Epson og Pentax.\n" "\n" "Tak til Data Engines (www.dataengines.com)\n" "for brug af deres Olympus C-3030Z for USB\n" "understøttelsesimplementation." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (ukendt)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Sipix StyleCam Blink driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Kunne ikke tilføje USB opsætning" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for tilgang til SiPix Web2 kamera." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for tilgang til Smal Ultrapocket kamera, og OEM versioner (slimshot)" #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Sonix kamera.\n" "Der er %i billede i det.\n" msgstr[1] "" "Sonix kamera.\n" "Der er %i billeder i det.\n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" "Denne driver understøtter nogle kameraer med Sonix sn9c2028 chip.\n" "De følgende funktioner er understøttet:\n" " - miniaturer til en GUI forende\n" " - hele billeder i PPM format\n" " - sletning af alle billeder\n" " - slet seneste billede (virker mÃ¥ske ikke pÃ¥ alle Sonix kameraer)\n" " - billedoptagning til kamera (\t\tditto\t\t)\n" "Hvis der er videoklip i kameraet, nedhentes video clip rammer som\n" "sammenhængende still-billeder eller som AVI filer, afhængigt af model.\n" "Miniaturer for AVI'er er still-billeder dannet fra første ramme.\n" "Enkeltbilleder kan ikke slettes, medmindre det er det sidste.\n" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "Sonix kamera bibliotek\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "Sony DSC-F1 Digital kamera understøttelse\n" "M. Adam Kendall \n" "Baseret pÃ¥ chotplay CLI interface fra\n" "Ken-ichi Hayashi\n" "Gphoto2 port ved Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Sony DSC-F55/505 gPhoto bibliotek\n" "Understøtter Sony MSAC-SR1 og Memory Stick brugt i DCR-PC100\n" "Oprindeligt skrevet af Mark Davies \n" "gPhoto2 port ved Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "Firmware revision: %8s\n" "Billeder: %i\n" "Hukommelse i alt: %ikB\n" "Ledig hukommelse: %ikB\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "Firmware revision: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Soundvision driver\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "FLASH:\n" " Filer: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM:\n" " Filer: %d\n" " Billeder: %4d\n" " Film: %4d\n" "OmrÃ¥de brugt: %8d\n" "Ledigt omrÃ¥de: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "spca50x bibliotek v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" "Dit USB-kamera har et S&Q chipsæt.\n" "Der er i alt taget %i billeder\n" "Nogle af disse kan være film indeholdende\n" "adskillelige rammer\n" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" "For kameraer med S&Q-Technologies chip.\n" "Skulle fungere med gtkam. Billeder gemmes i PPM-format.\n" "\n" "Alle kendte S&Q kameraer har to opløsningsindstillinger. Hvad\n" "det er, afhænger af det bestemte kamera.\n" "Nogle af disse kameraer tillader sletning af alle billeder. Men de fleste " "gør ikke.\n" "Oplægning af data til kameraet er ikke understøttet.\n" "Den billedkompressionstilstand der er pÃ¥ mange af S&Q kameraerne\n" "er understøttet til en vis grad.\n" "Hvis der er videoklip pÃ¥ kameraet, vises disse som undermapper.\n" "Gtkam hjemhenter disse seperat. NÃ¥r der en filmklip pÃ¥ kameraet, vises\n" "en lille trekant foran navnet pÃ¥ kameraet. Hvis der ikke vises et\n" "katalog, tryk pÃ¥ trekanten for at fÃ¥ dem vist. Klik pÃ¥ en mappe for\n" "at gÃ¥ ind i det og se de rammer der er der, eller for at hjemhente dem.\n" "Rammerne hjemhentes som separate billeder, med specielle navne, der\n" "specificerer hvilket filmklip de stammer fra. Du kan frit vælge, om du\n" "vil gemme rammerne i separate kataloger, eller ikke.\n" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "sq905 almen driver\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "Din USB billedramme har et ST2205 chipsæt\n" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "ST2205 baserede billedrammer kommer med forskellige opløsninger.\n" "Gphoto driveren til disse enheder tillader dig at hente,\n" "sende til, og slette billeder pÃ¥ billedrammen." #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "Denne driver tillader dig at hente, sende til,\n" "og slette billeder pÃ¥ billedrammen." #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "Orientering" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "Driver for kameraer der bruger en STV0674 processor ASIC.\n" "Protokol omvendt-beregnet ved hjælp af SnoopyPro\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "Forkert eksponering (givetvis for lidt lys)" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "Information om STV0680 baserede kameraer:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Firmware revision: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "ASIC revision: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "Sensor ID: %d.%d\n" #: camlibs/stv0680/library.c:562 #, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "Kameraet er konfigureret for lys, der flimrer med %dHz.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Hukommelse i kamera: %d Mbit.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "Kamera understøttet miniaturer.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "Kamera understøtter video.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "Kamerabilleder er monokrome.\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "Kamera har hukommelse.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "Kamera understøtter videoformaterne: " #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "Fremstiller ID: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "Produkt ID: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "Antal billeder: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "Maksimalt antal billeder: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Billedebredde: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "Billedehøjde: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "Billedestørrelse: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Miniaturebredde: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Miniaturehøjde: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Miniaturestørrelse: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Driver for kameraer der bruger STV0680 processor ASIC.\n" "Protokol omvendt-beregnet ved hjælp af CommLite Beta 5\n" "Carsten Weinholz \n" "Udvidet til Aiptek PenCam og andre STM USB Dual-mode kameraer." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Henter information om %i filer..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "(Traveler) SX330z bibliotek (og andre Aldi-cams).\n" "Endda andre fremstillere, som Jenoptik, Skanhex, Maginon burde virke.\n" "Send bugreporter og kommentarer.\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z er kun USB" #: camlibs/topfield/puppy.c:553 msgid "Driver Settings" msgstr "Driver indstillinger" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "Turbo-tilstand" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Bibliotek til hentning / sending af filer fra en Topfield PVR.\n" "Porteret fra puppy (c) Peter Urbanec \n" #: camlibs/topfield/puppy.c:659 #, c-format msgid "Downloading %s..." msgstr "Hjemhenter %s..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "Intern fejl ved søgning efter camlibs. (stinavne for lange?)" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Henter kameradrivere fra '%s'..." #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "Der opstod en fejl i IO-biblioteket ('%s'): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Kunne ikke finde noget kamera" #: libgphoto2/gphoto2-camera.c:750 #, c-format msgid "Could not detect any camera at port %s" msgstr "Kunne ikke finde noget kamera i port %s" #: libgphoto2/gphoto2-camera.c:774 msgid "You have to set the port prior to initialization of the camera." msgstr "Du skal angive en port før du initialiserer kameraet." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Kunne ikke indlæse nødvendig kameradriver '%s' (%s)." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "Kameradriver '%s' mangler 'camera_init' funktionen." #: libgphoto2/gphoto2-camera.c:864 msgid "This camera does not provide any configuration options." msgstr "Kameraet har ingen konfigurationsvalg." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "Kameraet understøtter ikke indstilling af konfigurationsvalg." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Kameraet understøtter ikke summeringer." #: libgphoto2/gphoto2-camera.c:960 msgid "This camera does not provide a manual." msgstr "Kameraet har ingen manual." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "Kameraet stiller ikke informationer om driver til rÃ¥dighed." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Kameraet kan ikke optage." #: libgphoto2/gphoto2-camera.c:1056 msgid "This camera can not trigger capture." msgstr "Kameraet kan ikke udløse-optage." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Kameraet kan ikke optage smugkig." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "Stien '%s' er ikke absolut." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "Du har prøvet at slette '%s' fra mappen '%s', men filsystemet understøtter " "ikke sletning af filer." #: libgphoto2/gphoto2-filesys.c:1259 #, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "Der er stadig undermapper i mappen '%s/%s' som du prøver at fjerne." #: libgphoto2/gphoto2-filesys.c:1264 #, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "Der er stadig filer i mappen '%s/%s' som du prøver at fjerne." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Filsystemet understøtter ikke oplægning af filer." #: libgphoto2/gphoto2-filesys.c:1359 #, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "Mappen '%s' indeholder kun %i filer, men du efterspurgte en fil med nummer " "%i." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Filen '%s' kunne ikke findes i mappe '%s'." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Kunne ikke finde filen '%s'." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "Filsystemet understøtter ikke hentning af filer" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Ukendt filtype %i." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "Filsystemet understøtter ikke hentning af filinformationer" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "Filsystemet understøtter ikke indstilling af filinformationer" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "Skrivebeskyttede filattributter som bredde og højde kan ikke ændres." #: libgphoto2/gphoto2-filesys.c:2455 msgid "The filesystem doesn't support getting storage information" msgstr "Filsystemet understøtter ikke hentning af gemningsinformationer" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Ødelagte data" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Fil eksisterer" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Ukendt model" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Kataloget blev ikke fundet" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Fil blev ikke fundet" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "Kataloget eksisterer" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "I/O i fremgang" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "Sti ikke absolut" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Proces afbrudt" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "Kameraet kunne ikke fuldføre processen" #: libgphoto2/gphoto2-result.c:57 msgid "OS error in camera communication" msgstr "OS-fejl i kamerakommunikation" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "Ikke tilstrækkeligt fri plads" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Ukendt kamerabiblioteks fejl" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Ukendt fejl" #~ msgid "Disabled" #~ msgstr "Deaktiveret" #~ msgid "Small Fine JPEG (S1 Fine)" #~ msgstr "Lille Fin JPEG (S1 fin)" #~ msgid "Small Normal JPEG (S1 Normal)" #~ msgstr "Lille Normal JPEG (S1 normal)" #~ msgid "RAW + Small Fine JPEG (S1 Fine)" #~ msgstr "RÃ¥ + Lille Fin JPEG (S1 fin)" #~ msgid "mRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "mRÃ¥ + Lille Fin JPEG (S1 fin)" #~ msgid "sRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "sRÃ¥ + Lille Fin JPEG (S1 fin)" #~ msgid "RAW + Small Normal JPEG (S1 Normal)" #~ msgstr "RÃ¥ + Lille Normal JPEG (S1 normal)" #~ msgid "mRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "mRÃ¥ + Lille Normal JPEG (S1 normal)" #~ msgid "sRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "sRÃ¥ + Lille Normal JPEG (S1 normal)" #~ msgid "CHDK Reboot" #~ msgstr "CHDK genstart" #~ msgid "PTP Error: bad parameter" #~ msgstr "PTP fejl: forkert parameter" #~ msgid "Canon Capture failed: 0x%04x" #~ msgstr "Canon-optagelse fejlede: 0x%04x" #~ msgid "No event received, error %x." #~ msgstr "Ingen hændelse modtaget, fejl %x." #~ msgid "Canon EOS Trigger Capture failed: 0x%x (result 0x%x)" #~ msgstr "Canon EOS udløser optagning fejlede: 0x%x (resultat 0x%x)" #~ msgid "Canon EOS Trigger Capture failed to release: Perhaps no focus?" #~ msgstr "Canon EOS udløser optagning fejlede udløsning: MÃ¥ske ikke i fokus?" #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Perhaps no more memory on " #~ "card?" #~ msgstr "" #~ "Canon EOS udløser optagning fejlede udløsning: MÃ¥ske ikke mere " #~ "hukommelsesplads pÃ¥ kort?" #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Unknown error %d, please " #~ "report." #~ msgstr "" #~ "Canon EOS udløser optagning fejlede udløsning: Ukendt fejl %d, rapportér." #~ msgid "PTP: Undefined Error" #~ msgstr "PTP: Ikke defineret fejl" #~ msgid "PTP: OK!" #~ msgstr "PTP: O.k.!" #~ msgid "PTP: General Error" #~ msgstr "PTP: Generel fejl" #~ msgid "PTP: Session Not Open" #~ msgstr "PTP: session ikke Ã¥ben" #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP: Ugyldig transaktions ID" #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP: Handling ikke understøttet" #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP: Parameter ikke understøttet" #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP: Ikke fuldstændig overførsel" #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP: Ugyldig lagrings ID" #~ msgid "PTP: Invalid Object Handle" #~ msgstr "PTP: Ugyldig objekthÃ¥ndtering" #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "PTP: Enhedsegenskaber ikke understøttet" #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP: Ugyldig objekt formatkode" #~ msgid "PTP: Store Full" #~ msgstr "PTP: Lager fuldt" #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP: Objektet er skrivebeskyttet" #~ msgid "PTP: Store Read Only" #~ msgstr "PTP: Lager skrivebeskyttet" #~ msgid "PTP: Access Denied" #~ msgstr "PTP: Tilgang nægtet" #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP: Ingen miniature tilstede" #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP: Selvtest mislykkedes" #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP: Delvis sletning" #~ msgid "PTP: Store Not Available" #~ msgstr "PTP: Lager ikke tilgængeligt" #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "PTP: Specifikation efter format ikke understøttet" #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP: Ingen gyldige objektinformationer" #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP: Ugyldig kodeformat" #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "PTP: Ukendt fremstillerkode" #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP: Optagning allerede afbrudt" #~ msgid "PTP: Device Busy" #~ msgstr "PTP: Enhed optaget" #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP: Ugyldigt forældre-objekt" #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP: Ugyldig enhedsegenskabsformat" #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP: Ugyldig enhedsegenskabsværdi" #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP: Ugyldig parameter" #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP: Session allerede Ã¥bnet" #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP: Transaktion afbrudt" #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "PTP: Angivelse af mÃ¥l ikke understøttet" #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP: EK filnavn nødvendig" #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP: EK filnavn konflikter" #~ msgid "PTP: EK Filename Invalid" #~ msgstr "PTP: EK filnavn ugyldigt" #~ msgid "PTP: I/O error" #~ msgstr "PTP: I/O fejl" #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP: Fejl: forkert parameter" #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP: Protokol fejl, data forventet" #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP: Protokol fejl, svar forventet" #~ msgid "Unknown (%04x)" #~ msgstr "Ukendt (%04x)" #~ msgid "Could not find any driver for '%s'" #~ msgstr "Kunne ikke finde nogen drivere til '%s'" #~ msgid "No additional information available." #~ msgstr "Ingen yderligere information er tilgængelig." #~ msgid "Deleting '%s' from folder '%s'..." #~ msgstr "Sletter '%s' fra mappe '%s'..." #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "Hjemhenter '%s' fra mappe '%s'..." #~ msgid "Movie Recording" #~ msgstr "Filmoptagelse" #~ msgid "Unknown (some kind of error)" #~ msgstr "Ukendt (en eller anden form for fejl)" #~ msgid "ISO Auto Time" #~ msgstr "ISO Automatisk tid" #~ msgid "%s is a file type for which no thumbnail is provided" #~ msgstr "%s er en filtype, for hvilken der ikke er miniaturer til rÃ¥dighed" #~ msgid "Unavailable" #~ msgstr "Ikke tilgængelig" #~ msgid "" #~ "canon_usb_poll_interrupt_pipe: interrupt read failed after %i tries, " #~ "%6.3f sec \"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_pipe: afbrudt-læsning fejlede efter %i forsøg, " #~ "%6.3f sekunder \"%s\"" #~ msgid "" #~ "canon_usb_poll_interrupt_multiple: interrupt read failed after %i tries, " #~ "\"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_multiple: afbrudt-læsning fejlede efter %i " #~ "forsøg, \"%s\"" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for thumbnail size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: forkert længde 0x%04x for miniaturernes " #~ "pakkestørrelse" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for full image size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue: forkert længde 0x%04x for fuldt billedes " #~ "pakkestørrelse" #~ msgid "canon_usb_capture_dialogue: secondary image descriptor received" #~ msgstr "canon_usb_capture_dialogue: sekundær billed-beskriver modtaget" #~ msgid "canon_usb_capture_dialogue: first interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: første afbrudt-læsning ude af sammenhæng" #~ msgid "canon_usb_capture_dialogue: second interrupt read out of sequence" #~ msgstr "canon_usb_capture_dialogue: andet afbrudt-læsning ude af sammenhæng" #~ msgid "" #~ "canon_usb_capture_dialogue: photographic failure signaled, code = 0x%08x" #~ msgstr "" #~ "canon_usb_capture_dialogue: fotografisk fejl signaleret, kode = 0x%08x" #~ msgid "canon_usb_capture_dialogue: third EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: tredie EOS afbrudt-læsning ude af sammenhæng" #~ msgid "" #~ "canon_usb_capture_dialogue: fourth EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: fjerde EOS afbrudt-læsning ude af sammenhæng" #~ msgid "canon_usb_dialogue: payload too big, won't fit into buffer (%i > %i)" #~ msgstr "" #~ "canon_usb_dialogue: pakkeindhold for stort, kan ikke passes ind i buffer " #~ "(%i > %i)" #~ msgid "canon_usb_dialogue: expected 0x%x bytes, but camera reports 0x%x" #~ msgstr "" #~ "canon_usb_dialogue: forventede 0x%x byte, men kameraet rapporterer 0x%x" #~ msgid "On 1" #~ msgstr "Til 1" #~ msgid "On 2" #~ msgstr "Til 2" #~ msgid "Your camera does not support changing filenames." #~ msgstr "Dit kamera understøtter ikke ændring i filnavne." #~ msgid "Nikon disable liveview ended: %x" #~ msgstr "Nikon slÃ¥-liveview-fra sluttede: %x" #~ msgid "sRAW2" #~ msgstr "sRÃ¥2" #~ msgid "sRAW2 + Large Fine JPEG" #~ msgstr "sRÃ¥2 + Stor Fin JPEG" #~ msgid "sRAW2 + Medium Fine JPEG" #~ msgstr "sRÃ¥2 + Mellem Fin JPEG" #~ msgid "sRAW2 + Small Fine JPEG" #~ msgstr "sRÃ¥2 + Lille Fin JPEG" #~ msgid "sRAW2 + Large Normal JPEG" #~ msgstr "sRÃ¥2 + Stor Normal JPEG" #~ msgid "sRAW2 + Medium Normal JPEG" #~ msgstr "sRÃ¥2 + Mellem Normal JPEG" #~ msgid "sRAW2 + Small Normal JPEG" #~ msgstr "sRÃ¥2 + Lille Normal JPEG" libgphoto2-2.5.9/po/it.po0000644000175000001440000106332112623156272012123 00000000000000# Italian messages for libgphoto2. # Copyright (C) 2000, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # Marco Colombo , 2005, 2006, 2007, 2008, 2009, 2010, 2015. # Daniele Medri , 2000. # msgid "" msgstr "" "Project-Id-Version: libgphoto2 2.5.8\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2015-08-05 14:42+0100\n" "Last-Translator: Marco Colombo \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" "Adc65\n" "Benjamin Moos " #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" "La fotocamera sembra non usare memorie CompactFlash\n" "Sfortunatamente ciò non è supportato al momento.\n" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "La fotocamera ha scattato %d foto, e usa memoria CompactFlash.\n" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "Il gruppo Agfa CL20 Linux Driver!\n" " Email: cl20@poeml.de \n" " Visitate: http://cl20.poeml.de " #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "La fotocamera USB ha un chipset Aox.\n" "Numero di foto in bassa risoluzione: %i\n" "Numero di foto in alta risoluzione: %i\n" "Numero di foto: %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Driver generico Aox\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 msgid "Picture Frame Configuration" msgstr "" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "Numero di immagini: %i\n" "Versione del firmware: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering dei dati delle immagini di:\n" "Jeff Laing \n" "\n" "Implementato usando documenti trovati\n" "in rete. Permesso ottenuto da Vision." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "Impossibile creare la directory %s." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "Impossibile rimuovere la directory \"%s\"." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "blocco dei tasti non riuscito." #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*SCONOSCIUTO*" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image: canon_usb_list_all_dirs() iniziale fallito con " "stato %li" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image: canon_usb_list_all_dirs() finale fallito con stato " "%i" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "" "Il nome \"%s\" (%li caratteri) è troppo lungo, può avere 30 caratteri al " "massimo." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "Non sono permesse lettere minuscole in %s." #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory: ERRORE: messaggio initial troppo corto (%i < " "minimo %i)" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_directory: fine del pacchetto raggiunta durante l'analisi " "della prima voce di directory" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "canon_int_list_directory: incontrata una voce di directory troncata" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "File protetto." #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_func: ERRORE: messaggio initial troppo corto (%i < minimo %i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "Impossibile estrarre miniatura JPEG dai dati: inizio/fine mancante" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "Impossibile estrarre miniatura JPEG dai dati: i dati non sono JFIF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "Parametro \"%s\" NULL in %s riga %i" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" "Impossibile gestire il valore %i in camera->port->type aka 0x%x in %s riga " "%i." #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "ERRORE FATALE: valore CRC iniziale per lunghezza %d sconosciuto\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "impossibile indovinare il valore CRC iniziale\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "attenzione: CRC non controllato (add len %d, value 0x%04x) " "#########################\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "Modo compatibilità" #: camlibs/canon/library.c:98 msgid "Thumbnail" msgstr "Miniatura" #: camlibs/canon/library.c:99 msgid "Full Image" msgstr "Immagine intera" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "Bulb" #: camlibs/canon/library.c:216 msgid "Auto focus: one-shot" msgstr "Autofocus: uno scatto" #: camlibs/canon/library.c:217 msgid "Auto focus: AI servo" msgstr "" #: camlibs/canon/library.c:218 msgid "Auto focus: AI focus" msgstr "" #: camlibs/canon/library.c:219 msgid "Manual focus" msgstr "Messa a fuoco manuale" #: camlibs/canon/library.c:224 msgid "Beep off" msgstr "Segnale acustico spento" #: camlibs/canon/library.c:225 msgid "Beep on" msgstr "Segnale acustico acceso" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 msgid "Flash off" msgstr "Flash spento" #: camlibs/canon/library.c:231 msgid "Flash on" msgstr "Flash attivo" #: camlibs/canon/library.c:232 msgid "Flash auto" msgstr "Flash automatico" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "AUTO" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "P" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "Tv" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "Av" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "M" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "A-DEP" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "M-DEP" #: camlibs/canon/library.c:267 msgid "Manual 2" msgstr "Manuale 2" #: camlibs/canon/library.c:268 msgid "Far scene" msgstr "Scena distante" #: camlibs/canon/library.c:269 msgid "Fast shutter" msgstr "Otturatore veloce" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "Otturatore lento" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "Scena notturna" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "Scala di grigi" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Seppia" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 msgid "Portrait" msgstr "Ritratto" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Spot" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Macro" #: camlibs/canon/library.c:277 msgid "BW" msgstr "B/N" #: camlibs/canon/library.c:278 msgid "PanFocus" msgstr "" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "Vivo" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 msgid "Neutral" msgstr "Neutro" #: camlibs/canon/library.c:282 msgid "Long shutter" msgstr "Otturatore lungo" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "Super macro" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "Fogliame" #: camlibs/canon/library.c:285 msgid "Indoor" msgstr "Interno" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "Fuochi d'artificio" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "Spiaggia" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "Sott'acqua" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "Neve" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "Bambini e animali" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "Scatto notturno" #: camlibs/canon/library.c:292 msgid "Digital macro" msgstr "Macro digitale" #: camlibs/canon/library.c:293 msgid "MyColors" msgstr "" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "RAW" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "RAW 2" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "JPEG Normale piccola" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "JPEG Fine piccola" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "JPEG Normale media" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "JPEG Fine media" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "JPEG Normale larga" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "JPEG Fine larga" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "RAW + JPEG Normale piccola" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "RAW + JPEG Fine piccola" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "RAW + JPEG Normale media" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "RAW + JPEG Fine media" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "RAW + JPEG Normale piccola" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "RAW + JPEG Fine larga" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" #: camlibs/canon/library.c:497 #, c-format msgid "Camera unavailable: %s" msgstr "Fotocamera non disponibile: %s" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Spegnimento fotocamera" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Errore durante la cattura dell'immagine" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Impossibile leggere il nome del disco: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Nessun motivo disponibile" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Impossibile leggere le informazioni sul disco: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "Errore interno #1 in get_file_func() (%s riga %i)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "Nessun file audio è stato trovato per %s" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " Unità %s\n" " %11s byte totali\n" " %11s byte disponibili" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "adattatore AC" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "alimentazione OK" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "non disponibile: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" #: camlibs/canon/library.c:1145 msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Driver per la serie Canon PowerShot di\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "Aggiunte A5 di Ole W. Saastad\n" "Altre aggiunte di\n" " Holger Klemm\n" " Stephen H. Westin" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Errore durante l'eliminazione del file" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Errore durante l'eliminazione della miniatura associata" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "" "Velocità maggiori di 57600 non sono gestite durante il caricamento su questa " "fotocamera" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Impossibile ottenere la lettera del drive flash" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "Impossibile fare il caricamento, nessun nome di cartella disponibile!\n" "La cartella 999CANON esiste e contiene un'immagine AUT_9999.JPG." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Impossibile creare la directory \\DCIM." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Impossibile creare la directory di destinazione." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "Configurazione fotocamera e driver" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Impostazioni fotocamera" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 msgid "Owner Name" msgstr "Nome proprietario" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 msgid "Capture Size Class" msgstr "" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "Velocità ISO" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "Sconosciuto" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 msgid "Shooting mode" msgstr "Modalità di scatto" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 msgid "Shutter Speed" msgstr "Velocità otturatore" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "Zoom" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "Apertura" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Compensazione esposizione" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 msgid "Image Format" msgstr "Formato immagine" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Modalità messa a fuoco" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Modo flash" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Segnale acustico" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 msgid "Camera Actions" msgstr "Azioni fotocamera" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "Sincronizza data e ora della fotocamera con il PC" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 msgid "Camera Status Information" msgstr "Informazioni di stato fotocamera" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "Modello fotocamera" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Data e ora" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Errore" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 msgid "Firmware Version" msgstr "Revisione del firmware" #: camlibs/canon/library.c:1956 msgid "Power" msgstr "Alimentazione" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Driver" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Elenca tutti i file" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Mantieni il nome di file al caricamento" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Fotocamera non disponibile" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Nome del proprietario cambiato" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "impossibile cambiare il nome del proprietario" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "Impostazione velocità ISO non valida" #: camlibs/canon/library.c:2056 msgid "ISO speed changed" msgstr "Velocità ISO cambiata" #: camlibs/canon/library.c:2058 msgid "Could not change ISO speed" msgstr "Impossibile cambiare la velocità ISO" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "Impostazione modalità di scatto non valida" #: camlibs/canon/library.c:2085 msgid "Shooting mode changed" msgstr "Modalità di scatto cambiata" #: camlibs/canon/library.c:2087 msgid "Could not change shooting mode" msgstr "Impossibile cambiare la modalità di scatto" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "Impostazione della velocità otturatore non valida" #: camlibs/canon/library.c:2114 msgid "Shutter speed changed" msgstr "Velocità otturatore cambiata" #: camlibs/canon/library.c:2116 msgid "Could not change shutter speed" msgstr "Impossibile cambiare la velocità dell'otturatore" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 msgid "Invalid aperture setting" msgstr "Impostazione dell'apertura non valida" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 msgid "Aperture changed" msgstr "Apertura cambiata" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 msgid "Could not change aperture" msgstr "Impossibile cambiare l'apertura" #: camlibs/canon/library.c:2167 msgid "Invalid exposure compensation setting" msgstr "Impostazione della compensazione dell'esposizione non valida" #: camlibs/canon/library.c:2170 msgid "Exposure compensation changed" msgstr "Compensazione dell'esposizione cambiata" #: camlibs/canon/library.c:2172 msgid "Could not change exposure compensation" msgstr "Impossibile cambiare la compensazione dell'esposizione" #: camlibs/canon/library.c:2194 msgid "Invalid image format setting" msgstr "Impostazione del formato immagine non valida" #: camlibs/canon/library.c:2198 msgid "Image format changed" msgstr "Formato immagine cambiato" #: camlibs/canon/library.c:2200 msgid "Could not change image format" msgstr "Impossibile cambiare il formato immagine" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "Impostazione messa a fuoco non valida" #: camlibs/canon/library.c:2226 msgid "Focus mode changed" msgstr "Modalità messa a fuoco cambiata" #: camlibs/canon/library.c:2228 msgid "Could not change focus mode" msgstr "Impossibile cambiare la modalità di messa a fuoco" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "Impostazione segnale acustico non valida" #: camlibs/canon/library.c:2255 msgid "Beep mode changed" msgstr "Modalità segnale acustico cambiata" #: camlibs/canon/library.c:2257 msgid "Could not change beep mode" msgstr "Impossibile cambiare modalità del segnale acustico" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "Livello di zoom cambiato" #: camlibs/canon/library.c:2276 msgid "Could not change zoom level" msgstr "Impossibile cambiare il livello di zoom" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "Impostazione flash non valida" #: camlibs/canon/library.c:2332 msgid "Flash mode changed" msgstr "Modalità flash cambiata" #: camlibs/canon/library.c:2334 msgid "Could not change flash mode" msgstr "Impossibile cambiare la modalità flash" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "orario impostato" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "impossibile impostare l'orario" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "Tipo di porta %i = 0x%x non gestito. Initializzazione impossibile." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Batteria esaurita, fotocamera spenta." # FIXME UPSTREAM: missing final '.' #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "ERRORE: messaggio inatteso." # FIXME UPSTREAM: missing final '.' #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "ERROR: message troppo lungo." #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "ERRORE: fuori sequenza." #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "ERRORE: tipo di pacchetto inatteso." #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "ERRORE: errore di formato del messaggio." #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "ERRORE: messaggio inatteso 2." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Caricamento del file in corso..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Lettura del file in corso..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "canon_serial_get_dirents: canon_serial_dialogue non è riuscito a recuperare " "le voci di directory" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "canon_serial_get_dirents: impossibile allocare %i byte di memoria" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "" "canon_serial_get_dirents: impossibile leggere un'altra voce di directory" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "canon_serial_get_dirents: ricevuta voce di directory troncata" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" "canon_serial_get_dirents: troppe voci di directory, ci deve essere un ciclo." #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents: Impossibile ridimensionare il buffer per le voci " "di directory a %i byte" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Errore durante il cambiamento di velocità." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Reimpostazione del protocollo in corso..." #: camlibs/canon/serial.c:1311 msgid "Camera OK." msgstr "Fotocamera OK." #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Ricerca della fotocamera..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Tentativo di contattare la fotocamera in corso..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Errore di comunicazione 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Nessuna risposta dalla fotocamera" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Risposta non riconosciuta" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "Rilevata una \"%s\" ovvero \"%s\"" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "Modello \"%s\" sconosciuto" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "EOT non valido" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Errore di comunicazione 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Errore di comunicazione 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Cambiamento velocità in corso... attendere..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Errore durante il cambiamento di velocità" #: camlibs/canon/serial.c:1454 msgid "Error waiting for ACK during initialization, retrying" msgstr "" "Errore nell'attesa di ACK durate l'inizializzazione, un altro tentativo in " "corso" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Errore nell'attesa di ACK durate l'inizializzazione" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Connesso alla fotocamera" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "ERRORE: rilevata condizione di errore fatale, impossibile continuare " #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "ERRORE: %d è troppo grande" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Lettura miniatura..." # FIXME: femminile? #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "NON RICONOSCIUTO" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "Impossibile stabilire un contatto iniziale con la fotocamera" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "La fotocamera era già attiva" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "La fotocamera è stata risvegliata" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "Risposta iniziale '%c' della fotocamera non riconosciuta" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" "Passo #2 dell'inizializzazione non riuscito: (\"%s\" durante la lettura di " "%i). Fotocamera non operativa" #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "Passo #2 dell'inizializzazione non riuscito! (restituiti %i byte, attesi " "%i). Fotocamera non operativa" #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" "Passo #3 dell'inizializzazione non riuscito: \"%s\" durante la lettura di " "%i. Fotocamera non operativa" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" "Passo #3 dell'inizializzazione non riuscito! (restituito %i, atteso %i). " "Fotocamera non operativa" #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" "Passo #3 dell'inizializzazione non riuscito: \"%s\" durante la scrittura di " "%i. Fotocamera non operativa" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" "Passo #4 non riuscito: \"%s\" durante la lettura di %i. Fotocamera non " "operativa" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" "Passo #4 non riuscito! (restituito %i, atteso %i). Fotocamera non operativa" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "Fotocamera non pronta, molte richieste \"Identify camera\" non riuscite: %s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "Fotocamera non pronta, get_battery non riuscito: %s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: restituita lunghezza inattesa dalla funzione \"lock keys" "\" (%i byte, attesi %i)" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: restituita lunghezza inattesa (%i byte, attesi %i)" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_unlock_keys: restituita lunghezza inattesa (%i byte, attesi %i)" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_get_body_id: restituita lunghezza dei dati inattesa (%i byte, " "attesi %i)" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Ricezione dati in corso..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "Memoria esaurita: %d byte necessari." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes: canon_usb_dialogue non riuscito" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "Avvertimento in canon_usb_set_file_attributes: canon_usb_dialogue ha " "restituito lo stato di errore 0x%08x dalla fotocamera" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "Impossibile leggere dal file \"%s\"" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "Memoria esaurita: %ld byte necessari." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "Caricamento del file non riuscito." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "Il file era troppo grande. Spegnere e riaccendere la fotocamera prima di " "caricare altri file." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents: canon_usb_long_dialogue non è riuscito a recuperare " "le voci di directory, restituito %i" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs: canon_usb_long_dialogue non è riuscito a recuperare " "le voci di directory, restituito %i" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "Individuata una \"%s\"." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "" "Il nome \"%s\" dalla fotocamera non corrisponde ad alcuna fotocamera " "conosciuta." #: camlibs/casio/casio-qv.c:152 #, c-format msgid "Image type %d not supported" msgstr "Tipo di immagine %d non gestito" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "L'immagine %s è protetta da eliminazione" #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "Livello batteria: %.1f Volt. Revisione: %08x." #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "Configurazione fotocamera" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "Batteria" #: camlibs/casio/casio-qv.c:275 msgid "Brightness" msgstr "Luminosità" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 msgid "Too bright" msgstr "Troppo chiaro" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 msgid "Too dark" msgstr "Troppo scuro" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "OK" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "La fotocamera Logitech Clicksmart 310 contiene %i foto.\n" msgstr[1] "La fotocamera Logitech Clicksmart 310 contiene %i foto.\n" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "Driver Logitech Clicksmart 310\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "Driver generico per sq905C\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Tipo di immagine non gestito" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "Numero di immagini: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "Solo la directory radice è gestita (è stato richiesto di elencare la " "directory \"%s\")." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Problema durante la lettura del numero di immagini" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Problema durante la lettura delle informazioni sulle immagini" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Tipo di cattura non gestito" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (la batteria è %d%% carica)" #: camlibs/dimera/dimera3500.c:455 #, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Flash" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 msgid "No Flash" msgstr "Senza flash" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "" #: camlibs/dimera/dimera3500.c:468 msgid "No Dual Iris" msgstr "" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "" #: camlibs/dimera/dimera3500.c:470 msgid "No Resolution Switch" msgstr "" #: camlibs/dimera/dimera3500.c:472 msgid "No Power Light" msgstr "" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "Accesa" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "Spenta" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "pronta" #: camlibs/dimera/dimera3500.c:476 msgid "Not ready" msgstr "Non pronta" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "" #: camlibs/dimera/dimera3500.c:478 msgid "Not in fill mode" msgstr "" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "bassa (320x240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "alta (640x480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "esternamente" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "internamente" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Problema leggendo l'immagine dalla memoria" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Memoria esaurita" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "Scaricamento immagine in corso..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Problema durante lo scaricamento dell'immagine" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "Scaricamento annullato dall'utente" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Esposizione" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "Aggiustamento automatico dell'esposizione nell'anteprima" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "Livello di esposizione nell'anteprima" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "Flash automatico alla cattura" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Problema durante l'apertura della porta" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Problema durante la reimpostazione della fotocamera" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "" "Problema durante l'impostazione della velocità di comunicazione della " "fotocamera" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Sembra un modem, non una fotocamera" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "Elencazione dei file in \"%s\"..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "Elencazione delle cartelle in \"%s\"..." #: camlibs/directory/directory.c:381 #, c-format msgid "Could not get information about '%s' (%s)." msgstr "Impossibile ottenere le informazioni su \"%s\" (%s)." #: camlibs/directory/directory.c:414 #, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Impossibile ottenere informazioni su \"%s\" in \"%s\" (%s)." #: camlibs/directory/directory.c:462 #, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Impossibile cambiare l'orario del file \"%s\" in \"%s\" (%s)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Impossibile aprire \"%s\"." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "" #: camlibs/directory/directory.c:671 #, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "" "Impossibile eliminare il file \"%s\" nella cartella \"%s\" (codice errore " "%i; %s)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "La fotocamera ha inviato solo %i byte, ma ne sono necessari almeno %i." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Impossibile contattare la fotocamera." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Ricevuti dati inattesi (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "Sequenza di escape non corretta: attesa 0x%02x, ricevuta 0x%02x." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Dati non corretti - ricevuto 0x%02x, atteso 0x%02x." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "Dati non corretti - ricevuto 0x%02x, atteso 0x%02x o 0x%02x." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "Somma di controllo non corretta - ricevuto 0x%02x, atteso 0x%02x." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "La fotocamera ha rifiutato il comando." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "La fotocamera si è reimpostata." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "La fotocamera ha inviato il byte 0x%02x inatteso." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Scaricamento in corso..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "Impossibile allocare %i byte per scaricare la miniatura." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "Impossibile allocare %i byte per scaricare l'immagine." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "La fotocamera non accetta \"%s\" come nome di file." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "" "Impossibile inizializzare il caricamento (la fotocamera ha risposto con 0x" "%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "La fotocamera non supporta la velocità %i." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "" "Impossibile impostare la velocità a %i (la fotocamera ha risposto con %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Basato su fujiplay di Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "Il bit rate %ld non è gestito." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Configurazione della fotocamera FUJI" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Data e ora" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Versione: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Modello: " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "Memoria disponibile: " #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "Libreria gsmart300\n" "Till Adam \n" "Jerome Lodewyck \n" "Supporto per fotocamere Mustek gSmart 300\n" "basato su altri moduli di gphoto2 e sulle specifiche gentilmente fornite da " "Mustek.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Tipo di porta non gestito: %d. Questo driver funziona solo con fotocamere " "USB.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Impossibile reimpostare la fotocamera.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Questa fotocamera supporta solo l'eliminazione dell'ultimo file. In questo " "caso, questo file è \"%s\"." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "La fotocamera USB è una iClick 5X.\n" "Il numero complessivo di foto scattate è %i\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "Driver iClick 5X\n" "Theodore Kilgore \n" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Foto scattate : %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "Libreria jamcam v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "Scaricamento dei dati in corso..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "Scaricamento miniature in corso..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" #: camlibs/jd11/jd11.c:186 msgid "JD11 Configuration" msgstr "Configurazione JD11" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Altre impostazioni" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Tempo di esposizione bulb" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Impostazioni colore" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "Rosso" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Verde" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Blu" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" "La fotocamera contiene un chipset JL2205A.\n" "Il numero di foto è %i.\n" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "Libreria per la fotocamera jl2005a\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" "La fotocamera contiene un chipset Jeilin JL2005%c.\n" "Il numero di foto è %i.\n" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "Libreria per la fotocamera jl2005bcd\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "Scheda CompactFlash" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Libreria per la fotocamera Kodak DC120\n" "Scott Fritzinger \n" "Libreria per la fotocamera Kodak DC120.\n" "(a grande richiesta)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Lettura dei dati..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "In attesa di completamento..." #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "File" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Tipo di file" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Risoluzione file" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Compressione file" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Bassa (ottima qualità)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Media (migliore qualità)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "Alta (buona qualità)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Cattura" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Compensazione dell'esposizione" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Auto" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Forza" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Nessuno" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Riduzione occhi rossi" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Acceso" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Spento" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Altro" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Imposta orologio sulla fotocamera" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "Velocità porta" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Nome album" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Nome da impostare sulla scheda alla formattazione." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "Formatta compact flash" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Formatta scheda e imposta il nome dell'album." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Debug" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "Foto nella fotocamera: %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" "C'è spazio per altre\n" " %d foto a bassa compressione\n" " %d foto a media compressione\n" " %d foto ad alta compressione\n" #: camlibs/kodak/dc210/dc210.c:506 #, c-format msgid "Total pictures taken: %d\n" msgstr "Numero di foto scattate: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "Numero di flash scattati: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, c-format msgid "Firmware: %d.%d\n" msgstr "Firmware: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, c-format msgid "Filetype: JPEG (" msgstr "Tipo di file: JPEG (" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "Tipo di file: FlashPix (" #: camlibs/kodak/dc210/dc210.c:527 #, c-format msgid "low compression, " msgstr "compressione bassa, " #: camlibs/kodak/dc210/dc210.c:529 #, c-format msgid "medium compression, " msgstr "compressione media, " #: camlibs/kodak/dc210/dc210.c:531 #, c-format msgid "high compression, " msgstr "compressione alta, " #: camlibs/kodak/dc210/dc210.c:533 #, c-format msgid "unknown compression %d, " msgstr "compressione %d sconosciuta, " #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "risoluzione %d sconosciuta)\n" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "L'adattatore di corrente è connesso.\n" #: camlibs/kodak/dc210/dc210.c:558 #, c-format msgid "AC adapter is not connected.\n" msgstr "L'adattatore di corrente non è connesso.\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "Data: %a, %d %B %Y, %T\n" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "Zoom: 58 mm\n" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "Zoom: 51 mm\n" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "Zoom: 41 mm\n" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "Zoom: 34 mm\n" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "Zoom: 29 mm\n" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "Zoom: macro\n" #: camlibs/kodak/dc210/dc210.c:580 #, c-format msgid "Unknown zoom mode %d\n" msgstr "Modalità di zoom %d sconosciuta\n" #: camlibs/kodak/dc210/dc210.c:586 #, c-format msgid "Exposure compensation: %s\n" msgstr "Compensazione dell'esposizione: %s\n" #: camlibs/kodak/dc210/dc210.c:588 #, c-format msgid "Exposure compensation: %d\n" msgstr "Compensazione dell'esposizione: %d\n" #: camlibs/kodak/dc210/dc210.c:593 #, c-format msgid "Flash mode: auto, " msgstr "Modo flash: auto, " #: camlibs/kodak/dc210/dc210.c:595 #, c-format msgid "Flash mode: force, " msgstr "Modo flash: forzato, " #: camlibs/kodak/dc210/dc210.c:597 #, c-format msgid "Flash mode: off\n" msgstr "Modo flash: spento\n" #: camlibs/kodak/dc210/dc210.c:599 #, c-format msgid "Unknown flash mode %d, " msgstr "Modalità di flash %d sconosciuta, " #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "con riduzione occhi rossi.\n" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "senza riduzione occhi rossi.\n" #: camlibs/kodak/dc210/dc210.c:615 #, c-format msgid "No card in camera.\n" msgstr "Nessuna scheda nella fotocamera.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" "Nome scheda: %s\n" "Spazio libero sulla scheda: %d kB\n" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Libreria per la fotocamera Kodak DC215 Zoom.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "In attesa..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Parametro 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Parametro 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Parametro 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Modello: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "Versione del firmware: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Stato batteria: %s, adattatore AC: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "Numero di immagini: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "Spazio rimanente: Alta: %d, Media: %d, Bassa: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "Stato scheda di memoria (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "Numero di foto scattate: %d, Flash scattati: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Libreria per la fotocamera Kodak DC240\n" "Scott Fritzinger e Hubert Figuiere \n" "Libreria per le fotocamere Kodak DC240, DC280, DC3400 e DC5000.\n" "Riscritto e aggiornato per gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Debole" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Vuoto" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Non valido" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Non usato" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "In uso" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "La scheda è aperta" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "La scheda non è aperta" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "La scheda non è formattata" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Nessuna scheda" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "Un'operazione è in corso. Questa fotocamera gestisce solo un'operazione alla " "volta. Attendere fino alla conclusione dell'operazione corrente." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "fotocamera inattiva per più di 9 secondi, reinizializzata.\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Driver per Kodak DC3200\n" "Donn Morrison \n" "\n" "Domande e commenti sono apprezzati." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "La fotocamera USB è una Kodak EZ200.\n" "Numero di immagini: %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "Driver per Kodak EZ200\n" "Bucas Jean-Francois \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Errore di messa a fuoco." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "" #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "" #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "" #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "Errore interno (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "Errore interno (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Nessuna scheda presente." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "Scheda non gestita." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "Scheda rimossa durante l'accesso." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Numero di immagine non valido." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "La scheda non può essere scritta." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "La scheda è protetta da scrittura." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "Nessuno spazio rimasto sulla scheda." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Immagine protetta." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "Troppo poca luce." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Errore di autofocus." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Errore di sistema." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Parametro illecito." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "Il comando non può essere annullato." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Dati di localizzazione troppo lunghi." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Dati di localizzazione danneggiati." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Comando non gestito." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "Un altro comando in esecuzione." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Errore nell'ordine dei comandi" #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Errore sconosciuto." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Lettura della lista dei file..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "Prova velocità diverse..." #: camlibs/konica/library.c:338 msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "Non è stato possibile contattare la fotocamera. Assicurarsi che sia connessa " "al computer e sia accesa." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "%i immagini non sono state eliminate perché sono protette" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Modello: %s\n" "Numero di serie: %s,\n" "Versione hardware: %i.%i\n" "Versione software: %i.%i\n" "Versione software di test: %i.%i\n" "Nome: %s,\n" "Produttore: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Libreria Konica\n" "Lutz Mueller \n" "Supporto per tutte le fotocamere Konica e molte fotocamere HP." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Lettura della configurazione..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Configurazione Konica" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Impostazioni persistenti" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Tempo di spegnimento automatico" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Intervallo presentazione" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Risoluzione" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Bassa (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Media (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Alta (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Localizzazione" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Lingua" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Nessuno selezionato" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "Formato TV" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Formato data" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "Mese/Giorno/Anno" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "Giorno/Mese/Anno" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Anno/Mese/Giorno" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Impostazioni persistenti" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Acceso, riduzione occhi rossi" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Automatico, riduzione occhi rossi" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Fuoco" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "Fisso" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Impostazioni volatili" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Normale" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Impossibile trovare i dati di localizzazione in '%s'" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "File di localizzazione troppo lungo." #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "Questa anteprima non esiste." #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "I dati sono stati danneggiati." #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "Il tipo di immagine %d non è gestito da questa fotocamera!" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "Impossibile eliminare l'immagine %s." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "Impossibile eliminare tutte le immagini." #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "Caricamento dell'immagine in corso..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "" "Impossibile caricare questa immagine sulla fotocamera. È occorso un errore." #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "Occorre essere in modalità di registrazione per catturare un'immagine." #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" "Nessuno spazio disponibile per catturare nuove immagini. Eliminare alcune " "immagini." #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "Impossibile catturare nuove immagini. Errore sconosciuto" #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "Nessuna risposta dalla fotocamera." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Bassa" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Media" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Alta" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Icone" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "2.0m" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "0.5m" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "0.1m" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Bilanciamento del bianco" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "Ufficio" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "Luce diurna" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "Nitidezza" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "Colore" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "Luce" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "Bianco e nero" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "Singolo" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "Sequenza 9" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "Mostra data" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "Ovunque" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "Modalità riproduzione" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "Modalità registrazione" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "Ovunque" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "AC" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "Riproduci" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Registra" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "GG/MM/AAAA" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "AAAA/MM/GG" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "MM/GG/AAAA" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Modello: %s\n" "Capacità: %i Mb\n" "Alimentazione: %s\n" "Spegnimento automatico: %i min\n" "Modalità: %s\n" "Immagini: %i/%i\n" "Mostra data: %s\n" "Data e ora: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Libreria Konica Q-M150\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Supporto per la Konica Q-M150." #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" #: camlibs/largan/lmini/largan.c:228 msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Driver per Largan\n" "Hubert Figuiere \n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" "La fotocamera USB sembra essere una LG GSM.\n" "Firmware: %s\n" "Versione del firmware: %s\n" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" "Driver generico per LG GSM\n" "Guillaume Bedot \n" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Fotocamera Mars MR97310.\n" "C'è %i foto. \n" msgstr[1] "" "Fotocamera Mars MR97310.\n" "Ci sono %i foto. \n" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "Libreria per la fotocamera Mars MR97310\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Modello:\t\t\tMinolta Dimage V (%s)\n" "Revisione hardware:\t%s\n" "Revisione firmware:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Remoto" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Locale" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Sì" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "No" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Fine" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Standard" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Automatico\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Forza flash\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Proibisci flash\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Valore non valido (%d)\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "Non piena" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Piena" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "Occupata" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "In attesa" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "Caricamento in corso" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Pronta" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Normale\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "Lente non connessa\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "Stato scheda:\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Protetto da scrittura" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "Scheda non adatta" #: camlibs/minolta/dimagev/dimagev.c:406 #, c-format msgid "Bad value for card status %d" msgstr "Valore non valido per lo stato scheda di memoria %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Libreria per la fotocamera Minolta Dimage V\n" "%s\n" "Gus Hartmann \n" "Un ringraziamento speciale a Minolta per le specifiche." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Flash: automatico (riduzione occhi rossi)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Flash: automatico" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Flash: acceso (riduzione occhi rossi)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Flash: acceso" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Flash: spento" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Flash: non definito" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Sommario per Mustek MDC800:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "nessuno stato riportato." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "Scheda Compact Flash rilevata\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Nessuna scheda Compact Flash rilevata\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "Modalità corrente: fotocamera\n" # FIXME #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Modalità corrente: visualizzazione\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Le batterie sono cariche." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Le batterie sono quasi scariche." #: camlibs/mustek/mdc800.c:264 msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Libreria di gPhoto2 per Mustek MDC-800\n" "Henning Zabel \n" "Portato su gphoto2 da Marcus Meissner \n" "Gestisce i protocolli seriale e USB." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "Libreria coolshot v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Disconnessione della fotocamera." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "Scaricamento dell'immagine %s in corso." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Caricamento dell'immagine: %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "La dimensione del file è %ld byte. La dimensione massima di un file " "possibile da caricare è %i byte." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Caricamento in corso..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "Eliminazione dell'immagine %s." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Libreria di gPhoto per Panasonic DC1000\n" "Mariusz Zynel \n" "\n" "Basato sul programma dc1000 scritto da\n" "Fredrik Roubert e\n" "Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "Scaricamento di %s in corso." #: camlibs/panasonic/dc1580.c:627 msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Libreria di gPhoto2 per Panasonic DC1580\n" "Mariusz Zynel \n" "\n" "Basato sul programma per dc1000 scritto da\n" "Fredrik Roubert e\n" "Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "Scaricamento di \"%s\" in corso..." #: camlibs/panasonic/l859/l859.c:582 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " Memoria totale: %8d byte.\n" " Memoria libera: %8d byte.\n" " Numero di file: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" " Autori: Till Adam\n" "\n" "e: Miah Gregory\n" " " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "Scaricamento del file in corso..." #: camlibs/pccam600/library.c:249 msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" "Autore: Peter Kajberg \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "pccam600_init: attesi > %d blocchi, ricevuti %d" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "pccam600_get_file: ricevuto indice %d ma attestp indice > %d" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "pccam600_close: valore di ritorno %d invece di %d" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "pccam600_init: attesi %d blocchi, ricevuti %d" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" "pccam600 init: errore inatteso: gp_port_read ha restituito %d invece di %d" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Modello: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "Qualità immagine" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Dimensioni immagine" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Impostazioni del flash" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Spegnimento automatico (minuti)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Informazioni" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "normale" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "fine" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "superfine" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "auto" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "acceso" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "spento" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "riproduci" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "registra" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "menù" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "batteria" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "adattatore di corrente" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Ricevuta una intestazione inattesa (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Ricevuta una risposta inattesa" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Errore nella somma di controllo" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "La fotocamera non ha accettato il comando." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "La fotocamera ha inviato più byte del previsto (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "Sono stati ricevuti %i byte di un formato immagine sconosciuto. Contattare " "%s per assistenza." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Fotocamera" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Immagine" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "Il tipo di porta richiesto (%i) non è gestito da questo driver." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Questa fotocamera Canon non gestisce la cattura Canon" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, c-format msgid "Unknown value %04x" msgstr "Valore %04x sconosciuto" #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, c-format msgid "Unknown value %04d" msgstr "Valore %04d sconosciuto" #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "tipo di dati %i inatteso" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "Manuale" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 msgid "Automatic" msgstr "Automatico" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 msgid "One-push Automatic" msgstr "" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "Fluorescente" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Tungsteno" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Nuvoloso" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "Ombra" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "Temperatura colore" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "Preimpostato" #: camlibs/ptp2/config.c:1415 msgid "Fluorescent Lamp 1" msgstr "Lampada Fluorescente 1" #: camlibs/ptp2/config.c:1416 msgid "Fluorescent Lamp 2" msgstr "Lampada Fluorescente 2" #: camlibs/ptp2/config.c:1417 msgid "Fluorescent Lamp 3" msgstr "Lampada Fluorescente 3" #: camlibs/ptp2/config.c:1418 msgid "Fluorescent Lamp 4" msgstr "Lampada Fluorescente 4" #: camlibs/ptp2/config.c:1419 msgid "Fluorescent Lamp 5" msgstr "Lampada Fluorescente 5" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "Scegli temperatura colore" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "Impostazione personalizzata 1" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "Impostazione personalizzata 2" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "Impostazione personalizzata 3" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "Impostazione personalizzata 4" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "Impostazione personalizzata 5" #: camlibs/ptp2/config.c:1430 msgid "Fluorescent: Warm White" msgstr "Fluorescente: bianco caldo" #: camlibs/ptp2/config.c:1431 msgid "Fluorescent: Cold White" msgstr "Fluorescente: bianco freddo" #: camlibs/ptp2/config.c:1432 msgid "Fluorescent: Day White" msgstr "" #: camlibs/ptp2/config.c:1433 msgid "Fluorescent: Daylight" msgstr "Fluorescente: Luce diurna" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 msgid "JPEG Fine" msgstr "JPEG Fine" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 msgid "JPEG Normal" msgstr "JPEG Normale" #: camlibs/ptp2/config.c:1443 msgid "RAW + JPEG Fine" msgstr "RAW + JPEG Fine" #: camlibs/ptp2/config.c:1444 msgid "RAW + JPEG Normal" msgstr "RAW + JPEG Normale" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "Continuo bassa velocità" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "Continuo alta velocità" #: camlibs/ptp2/config.c:1452 msgid "Self-timer" msgstr "" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "" #: camlibs/ptp2/config.c:1735 msgid "undefined" msgstr "non definito" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "economia" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "lossless" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 msgid "Undefined" msgstr "Non definito" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "CRW" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "TV" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "AV" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "A_DEP" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "M_DEP" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "DEP" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "Personalizzato" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "Blocca" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "Ritratto notturno" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "Sport" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "Paesaggio" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "Primo piano" #: camlibs/ptp2/config.c:1780 msgid "Flash Off" msgstr "Flash spento" #: camlibs/ptp2/config.c:1788 msgid "red eye suppression" msgstr "riduzione occhi rossi" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "riempimento" #: camlibs/ptp2/config.c:1790 msgid "auto + red eye suppression" msgstr "Automatico + riduzione occhi rossi" #: camlibs/ptp2/config.c:1791 msgid "on + red eye suppression" msgstr "Acceso + riduzione occhi rossi" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "iTTL" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 msgid "Commander" msgstr "" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "Ripetizione" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "TTL" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 msgid "Auto Aperture" msgstr "Apertura automatica" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 msgid "Full Manual" msgstr "" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "AF-S" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "AF-C" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "AF-A" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 msgid "MF (fixed)" msgstr "" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "Pesata al centro" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "Media" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "Parziale" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "Fedele" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "Monocromatico" #: camlibs/ptp2/config.c:1947 msgid "User defined 1" msgstr "Definito utente 1" #: camlibs/ptp2/config.c:1948 msgid "User defined 2" msgstr "Definito utente 2" #: camlibs/ptp2/config.c:1949 msgid "User defined 3" msgstr "Definito utente 3" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 msgid "Multiple Focusing Points, Auto" msgstr "" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 msgid "Multiple Focusing Points (Right)" msgstr "" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 msgid "Multiple Focusing Points (Left)" msgstr "" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 msgid "Large" msgstr "Grande" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 msgid "Medium 1" msgstr "Media 1" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 msgid "Medium 2" msgstr "Media 2" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 msgid "Medium 3" msgstr "Media 3" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "Piccola" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "16:9" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "3:2" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "10 secondi" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "2 secondi" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "TFT" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "PC" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "TFT + PC" #: camlibs/ptp2/config.c:2092 msgid "Setting 4" msgstr "Impostazioni 4" #: camlibs/ptp2/config.c:2093 msgid "Setting 5" msgstr "Impostazioni 5" #: camlibs/ptp2/config.c:2094 msgid "Setting 6" msgstr "Impostazioni 6" #: camlibs/ptp2/config.c:2095 msgid "Setting 7" msgstr "Impostazioni 7" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "Card" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "Uscita video" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, c-format msgid "Unknown %d" msgstr "Sconosciuto %d" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "Predefinito" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "mRAW" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "sRAW" #: camlibs/ptp2/config.c:2246 #, fuzzy msgid "Smaller JPEG" msgstr "JPEG Fine piccola" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "mRAW + JPEG Fine larga" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "sRAW + JPEG Fine larga" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "mRAW + JPEG Fine media" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "sRAW + JPEG Fine media" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "mRAW + JPEG Fine piccola" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "sRAW + JPEG Fine piccola" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "mRAW + JPEG Normale grande" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "sRAW + JPEG Normale grande" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "mRAW + JPEG Normale media" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "sRAW + JPEG Normale media" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "mRAW + JPEG Normale piccola" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "sRAW + JPEG Normale piccola" #: camlibs/ptp2/config.c:2272 #, fuzzy msgid "RAW + Smaller JPEG" msgstr "RAW + JPEG Fine piccola" #: camlibs/ptp2/config.c:2273 #, fuzzy msgid "mRAW + Smaller JPEG" msgstr "mRAW + JPEG Fine piccola" #: camlibs/ptp2/config.c:2274 #, fuzzy msgid "sRAW + Smaller JPEG" msgstr "sRAW + JPEG Fine piccola" #: camlibs/ptp2/config.c:2275 #, fuzzy msgid "RAW + Tiny JPEG" msgstr "RAW + JPEG Fine piccola" #: camlibs/ptp2/config.c:2276 #, fuzzy msgid "mRAW + Tiny JPEG" msgstr "mRAW + JPEG Fine larga" #: camlibs/ptp2/config.c:2277 #, fuzzy msgid "sRAW + Tiny JPEG" msgstr "sRAW + JPEG Fine larga" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "Continuo" #: camlibs/ptp2/config.c:2305 msgid "Timer 10 sec" msgstr "Timer 10 sec" #: camlibs/ptp2/config.c:2306 msgid "Timer 2 sec" msgstr "Timer 2 sec" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "Singolo silenzioso" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "Continuo silenzioso" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, c-format msgid "Auto ISO" msgstr "Auto ISO" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, c-format msgid "%d Multi Frame Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:2453 msgid "Multi Frame Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Timer" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "%0.4fs" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "%d %d/%d" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "%d/%d" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "%f" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "Creativo" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "Azione" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "Paesaggio notturno" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "Bambini" #: camlibs/ptp2/config.c:2868 msgid "Automatic (No Flash)" msgstr "Automatico (senza flash)" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "Filmato" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 msgid "Sports Action" msgstr "Azione sportiva" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "Tramonto" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "Scena notturna" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 msgid "Picture Effect" msgstr "Effetti foto" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "Paesaggio notturno" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "Party/Interno" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "Spiaggia/Neve" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "Alba/Crepuscolo" #: camlibs/ptp2/config.c:2893 msgid "Pet Portrait" msgstr "Ritratto animale" #: camlibs/ptp2/config.c:2894 msgid "Candlelight" msgstr "Luce di candela" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "Fiore" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "Colori autunnali" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "Cibo" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "Bambino" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "Primo piano" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "A6400 (160-6400)" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "A3200 (160-3200)" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "A800 (160-800)" #: camlibs/ptp2/config.c:3032 msgid "Flourescent" msgstr "Fluorescente" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "Acqua" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "1 EV" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "2 EV" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "3 EV" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 msgid "Effects" msgstr "Effetti" #: camlibs/ptp2/config.c:3075 msgid "U1" msgstr "U1" #: camlibs/ptp2/config.c:3076 msgid "U2" msgstr "U2" #: camlibs/ptp2/config.c:3104 msgid "Back Light" msgstr "" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "Panorama" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "Scatto singolo" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "Raffica" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 msgid "Timer" msgstr "Timer" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 msgid "Delayed Remote" msgstr "" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "" #: camlibs/ptp2/config.c:3125 msgid "Selftimer 2s" msgstr "" #: camlibs/ptp2/config.c:3126 msgid "Selftimer 10s" msgstr "" #: camlibs/ptp2/config.c:3127 msgid "Bracketing C 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3128 msgid "Bracketing C 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3129 msgid "Bracketing C 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3130 msgid "Bracketing C 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3131 msgid "Bracketing C 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3132 msgid "Bracketing S 0.3 Steps" msgstr "" #: camlibs/ptp2/config.c:3133 msgid "Bracketing S 0.7 Steps" msgstr "" #: camlibs/ptp2/config.c:3134 msgid "Bracketing S 1.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3135 msgid "Bracketing S 2.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3136 msgid "Bracketing S 3.0 Steps" msgstr "" #: camlibs/ptp2/config.c:3137 msgid "Bracketing WB Lo" msgstr "" #: camlibs/ptp2/config.c:3138 msgid "Bracketing WB Hi" msgstr "" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 msgid "Centre-spot" msgstr "" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "Area singola" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "Soggetto più vicino" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "" #: camlibs/ptp2/config.c:3154 msgid "Group-dynamic AF" msgstr "" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "Area dinamica (9)" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "Area dinamica (21)" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "Area dinamica (51)" #: camlibs/ptp2/config.c:3165 msgid "3D Tracking" msgstr "" #: camlibs/ptp2/config.c:3171 msgid "sRGB (portrait)" msgstr "sRGB (ritratto)" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "AdobeRGB" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "sRGB (natura)" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "sRGB" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "Valore 0x%04x sconosciuto" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 msgid "Centre" msgstr "Centro" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "Alto" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 msgid "Bottom" msgstr "Basso" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "Sinistra" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 msgid "Right" msgstr "Destra" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "Pesata al centro" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "" #: camlibs/ptp2/config.c:3266 msgid "Automatic Flash" msgstr "Flash automatico" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 msgid "Fill flash" msgstr "Flash riempimento" #: camlibs/ptp2/config.c:3269 msgid "Red-eye automatic" msgstr "Riduzione occhi rossi" #: camlibs/ptp2/config.c:3270 msgid "Red-eye fill" msgstr "Riempimento occhi rossi" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 msgid "External sync" msgstr "Sincronizzazione esterna" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 msgid "Auto Slow Sync" msgstr "Sincronizzazione lenta automatica" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 msgid "Red-eye Reduction + Slow Sync" msgstr "Riduzione occhi rossi + Sincronizzazione lenta" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3277 msgid "Red-eye reduction" msgstr "Riduzione occhi rossi" #: camlibs/ptp2/config.c:3278 msgid "Red-eye reduction with slow sync" msgstr "Riduzione occhi rossi con sincronizzazione lenta" #: camlibs/ptp2/config.c:3279 msgid "Slow sync" msgstr "Sincronizzazione lenta" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Sincronizzazione lenta" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Bianco e nero" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "Visione notturna" #: camlibs/ptp2/config.c:3298 msgid "Color sketch" msgstr "" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "Effetto miniatura" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "Colore selettivo" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "Silhouette" #: camlibs/ptp2/config.c:3302 msgid "High key" msgstr "" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 msgid "infinite" msgstr "Infinito" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "%d mm" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "" #: camlibs/ptp2/config.c:3772 msgid "Normal-area AF" msgstr "" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 msgid "Manual Focus" msgstr "Messa a fuoco manuale" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 msgid "AE/AF Lock" msgstr "" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "Solo blocco AF" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "AF attivo" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "Blocco livello del flash" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "20 secondi" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 msgid "1 minute" msgstr "1 minuto" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "5 minuti" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 msgid "10 minutes" msgstr "10 minuti" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "5 secondi" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "SDRAM" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "6 mm" #: camlibs/ptp2/config.c:3828 msgid "8 mm" msgstr "8 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "10 mm" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "12 mm" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "1/60" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "1/30" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "1/15" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "1/8" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "1/4" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "1/2" #: camlibs/ptp2/config.c:3842 msgid "1" msgstr "1" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 msgid "2" msgstr "2" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 msgid "4" msgstr "4" #: camlibs/ptp2/config.c:3845 msgid "8" msgstr "8" #: camlibs/ptp2/config.c:3846 msgid "15" msgstr "15" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "30" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "posa bulb" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "30s" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "25s" #: camlibs/ptp2/config.c:3855 msgid "20s" msgstr "20s" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 msgid "15s" msgstr "15s" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "13s" #: camlibs/ptp2/config.c:3858 msgid "10s" msgstr "10s" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "8s" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "6s" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "5s" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "4s" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "3s" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "2.5s" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "2s" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "1.6s" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "1.3s" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "1s" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "1/1.3s" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "1/1.6s" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "1/2s" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "1/2.5s" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "1/3s" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "1/4s" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "1/5s" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "1/6s" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "1/8s" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "1/10s" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "1/13s" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "1/15s" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "1/20s" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "1/25s" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "1/30s" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "1/40s" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "1/50s" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "1/60s" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "1/80s" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "1/100s" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "1/125s" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "1/160s" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "1/200s" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "1/250s" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "1/320s" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "1/400s" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "1/500s" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "1/640s" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "1/800s" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "1/1000s" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "1/1250s" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "1/1600s" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "1/2000s" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "1/2500s" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "1/3200s" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "1/4000s" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "1/5000s" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "1/6400s" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "1/8000s" #: camlibs/ptp2/config.c:3916 msgid "15 minutes" msgstr "15 minuti" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 msgid "Sharper" msgstr "Più preciso" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "Più soffice" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 msgid "Direct Print" msgstr "Stampa diretta" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 msgid "Medium Low" msgstr "Medio bassa" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 msgid "Medium high" msgstr "Medio alta" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 msgid "Low contrast" msgstr "Contrasto basso" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 msgid "Medium High" msgstr "Medio alta" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "" #: camlibs/ptp2/config.c:3976 msgid "Automatic Macro" msgstr "Macro automatico" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "Scatto singolo" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 msgid "AI Focus" msgstr "" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "4 secondi" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "8 secondi" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 msgid "Fluorescent H" msgstr "Fluorescente H" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 msgid "Custom Whitebalance PC-1" msgstr "" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 msgid "Custom Whitebalance PC-2" msgstr "" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 msgid "Custom Whitebalance PC-3" msgstr "" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "Numero mancante" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "Ombra" #: camlibs/ptp2/config.c:4118 msgid "Low sharpening" msgstr "" #: camlibs/ptp2/config.c:4120 msgid "Black & white" msgstr "Bianco e nero" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 msgid "AE & Flash" msgstr "" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 msgid "AE only" msgstr "" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 msgid "Flash only" msgstr "Solo Flash" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 msgid "WB bracketing" msgstr "" #: camlibs/ptp2/config.c:4221 msgid "ADL bracketing" msgstr "" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "Avvio" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "Spegnimento" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "Avvio e spegnimento" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "50 Hz" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "60 Hz" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "Risposta veloce" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 msgid "Remote Mirror Up" msgstr "" #: camlibs/ptp2/config.c:4248 msgid "Application Mode 0" msgstr "" #: camlibs/ptp2/config.c:4249 msgid "Application Mode 1" msgstr "" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "Moderato" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "Sensibilità automatica" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "Sensibilità alta" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "Sensibilità media" #: camlibs/ptp2/config.c:4286 msgid "Low sensitivity" msgstr "Sensibilità bassa" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "Microfono spento" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "" #: camlibs/ptp2/config.c:4378 msgid "Flash/speed" msgstr "Flash/velocità" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "Flash/velocità/apertura" #: camlibs/ptp2/config.c:4380 msgid "Flash/aperture" msgstr "Flash/apertura" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "JPEG Base" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 msgid "NEF+Fine" msgstr "NEF+Fine" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "NEF (Raw)" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "NEF+Base" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 msgid "NEF+Normal" msgstr "NEF+Normale" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "TIFF (RGB)" #: camlibs/ptp2/config.c:4575 msgid "RAW+JPEG" msgstr "RAW+JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "6 secondi" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "16 secondi" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "30 secondi" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "30 minuti" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "" #: camlibs/ptp2/config.c:4642 msgid "Optimal quality" msgstr "Qualità ottimale" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "9 punti" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "21 punti" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "51 punti" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "51 punti (3D)" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "" #: camlibs/ptp2/config.c:4695 msgid "3 (Normal)" msgstr "3 (Normale)" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "4 fps" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "3 fps" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "2 fps" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "1 fps" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "6 fps" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "5 fps" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "9 fps" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "8 fps" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "7 fps" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "11 fps" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "10 fps" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "" #: camlibs/ptp2/config.c:4780 msgid "Preview" msgstr "Anteprima" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "" #: camlibs/ptp2/config.c:4788 msgid "Bracketing burst" msgstr "" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "" #: camlibs/ptp2/config.c:4791 msgid "Spot metering" msgstr "" #: camlibs/ptp2/config.c:4792 msgid "Playback" msgstr "Riproduzione" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "+NEF (RAW)" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "" #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "50%" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "100%" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "75%" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "25%" #: camlibs/ptp2/config.c:4871 msgid "Unknown value" msgstr "Valore sconosciuto" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "" #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "" #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "" #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 msgid "Press Full" msgstr "" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 msgid "Press 1" msgstr "" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 msgid "Press 2" msgstr "" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 msgid "Press 3" msgstr "" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "Vicino 1" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "Vicino 2" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "Vicino 3" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "Lontano 1" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "Lontano 2" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "Lontano 3" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "Vicino %d" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "Lontano %d" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" #: camlibs/ptp2/config.c:5923 msgid "Internal RAM" msgstr "RAM interna" #: camlibs/ptp2/config.c:5924 msgid "Memory card" msgstr "Scheda di memoria" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "ESSID" #: camlibs/ptp2/config.c:6092 msgid "Display" msgstr "Display" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "Data creazione: %s, Data di ultimo uso: %s" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "Elimina" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "WEP 64-bit" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "WEP 128-bit" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "Gestito" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "Ad-hoc" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "Nome profilo" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "Indirizzo IP (vuoto per DHCP)" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "Maschera di rete" #: camlibs/ptp2/config.c:6359 msgid "Default gateway" msgstr "Gateway predefinito" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "Modalità di accesso" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "Canale WIFI" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "Scrivi" #: camlibs/ptp2/config.c:6412 msgid "List Wifi profiles" msgstr "Elenca i profili Wifi" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "Crea un profilo Wifi" #: camlibs/ptp2/config.c:6521 msgid "Power Down" msgstr "Spegni" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 msgid "Focus Lock" msgstr "Blocca focus" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 msgid "Bulb Mode" msgstr "Modalità posa bulb" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "Canon EOS Zoom" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 msgid "Movie Capture" msgstr "Cattura filmato" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 msgid "Serial Number" msgstr "Numero di serie" #: camlibs/ptp2/config.c:6548 msgid "Camera Manufacturer" msgstr "Produttore fotocamera" #: camlibs/ptp2/config.c:6550 msgid "Device Version" msgstr "Versione dispositivo" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "" #: camlibs/ptp2/config.c:6556 msgid "PTP Version" msgstr "Versione PTP" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 msgid "DPOF Version" msgstr "Versione DPOF" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "Alimentazione AC" #: camlibs/ptp2/config.c:6559 msgid "External Flash" msgstr "Flash esterno" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "Livello batteria" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 msgid "Camera Orientation" msgstr "Orientamento fotocamera" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 msgid "Flash Open" msgstr "Flash aperto" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 msgid "Flash Charged" msgstr "Flash caricato" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 msgid "Lens Name" msgstr "Nome lente" #: camlibs/ptp2/config.c:6570 msgid "Shutter Counter" msgstr "" #: camlibs/ptp2/config.c:6571 msgid "Available Shots" msgstr "Scatti disponibili" #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "Lunghezza focale minima" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "Lunghezza focale massima" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "Massima apertura alla lunghezza focale minima" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "Massima apertura alla lunghezza focale minima" #: camlibs/ptp2/config.c:6576 msgid "Low Light" msgstr "Luce bassa" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 msgid "Light Meter" msgstr "" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 msgid "AF Locked" msgstr "" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 msgid "FV Locked" msgstr "" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 msgid "Camera Date and Time" msgstr "Data e ora fotocamera" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "Modalità del segnale acustico" #: camlibs/ptp2/config.c:6591 msgid "Image Comment" msgstr "Commento all'immagine" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 msgid "Enable Image Comment" msgstr "Abilita commento all'immagine" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 msgid "LCD Off Time" msgstr "" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 msgid "Recording Media" msgstr "" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "Menu CSM" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 msgid "Camera Output" msgstr "" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "" #: camlibs/ptp2/config.c:6602 msgid "EVF Mode" msgstr "Modalità EVF" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "Artista" # #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "Numero di CCD" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Copyright" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 msgid "Flicker Reduction" msgstr "" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "" #: camlibs/ptp2/config.c:6613 msgid "Focus Info" msgstr "" #: camlibs/ptp2/config.c:6614 msgid "Focus Area" msgstr "Area di messa a fuoco" #: camlibs/ptp2/config.c:6615 msgid "Auto Power Off" msgstr "Spegnimento automatico" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "Profondità di campo" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "Menù e riproduzione" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "Filesystem veloce" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 msgid "Capture Target" msgstr "" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "CHDK" #: camlibs/ptp2/config.c:6633 msgid "Image Format SD" msgstr "Formato immagine SD" #: camlibs/ptp2/config.c:6634 msgid "Image Format CF" msgstr "Formato immagine CF" #: camlibs/ptp2/config.c:6636 msgid "Image Format Ext HD" msgstr "Formato immagine HD esterno" #: camlibs/ptp2/config.c:6643 msgid "Movie ISO Speed" msgstr "Velocità ISO filmato" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 msgid "ISO Auto" msgstr "ISO Auto" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 msgid "WhiteBalance" msgstr "Bilanciamento bianco" #: camlibs/ptp2/config.c:6654 msgid "WhiteBalance Adjust A" msgstr "Bilanciamento bianco A" #: camlibs/ptp2/config.c:6655 msgid "WhiteBalance Adjust B" msgstr "Bilanciamento bianco B" #: camlibs/ptp2/config.c:6656 msgid "WhiteBalance X A" msgstr "Bilanciamento bianco X A" #: camlibs/ptp2/config.c:6657 msgid "WhiteBalance X B" msgstr "Bilanciamento bianco X B" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "Effetti foto" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 msgid "Color Model" msgstr "Modello colore" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 msgid "Color Space" msgstr "Spazio colore" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6669 msgid "Auto Focus Mode 2" msgstr "Autofocus modo 2" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "Luce di assistenza" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 msgid "Flash Compensation" msgstr "Compensazione flash" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 msgid "AEB Exposure Compensation" msgstr "" #: camlibs/ptp2/config.c:6685 msgid "Nikon Flash Mode" msgstr "Modo flash Nikon" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 msgid "Flash Commander Mode" msgstr "" #: camlibs/ptp2/config.c:6687 msgid "Flash Commander Power" msgstr "" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 msgid "Flash Command Self Mode" msgstr "" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 msgid "Flash Command Self Compensation" msgstr "" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 msgid "Flash Command A Mode" msgstr "" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 msgid "Flash Command A Compensation" msgstr "" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 msgid "Flash Command B Mode" msgstr "" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 msgid "Flash Command B Compensation" msgstr "" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "Numero f" #: camlibs/ptp2/config.c:6702 msgid "Movie F-Number" msgstr "" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "Programma flessibile" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "Distanza messa a fuoco" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "Lunghezza focale" #: camlibs/ptp2/config.c:6710 msgid "Focus Mode 2" msgstr "Modalità messa a fuoco 2" #: camlibs/ptp2/config.c:6712 msgid "Continuous AF" msgstr "" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 msgid "Exposure Program" msgstr "Programma di esposizione" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 msgid "Scene Mode" msgstr "" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 msgid "HDR Mode" msgstr "" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "" #: camlibs/ptp2/config.c:6725 msgid "Canon Shooting Mode" msgstr "" #: camlibs/ptp2/config.c:6726 msgid "Canon Auto Exposure Mode" msgstr "" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 msgid "Drive Mode" msgstr "" #: camlibs/ptp2/config.c:6728 msgid "Picture Style" msgstr "Stile fotografia" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "" #: camlibs/ptp2/config.c:6738 msgid "Capture Delay" msgstr "Ritardo di cattura" #: camlibs/ptp2/config.c:6742 msgid "Shutter Speed 2" msgstr "Velocità otturatore 2" #: camlibs/ptp2/config.c:6743 msgid "Movie Shutter Speed 2" msgstr "" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 msgid "AF Distance" msgstr "Distanza AF" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 msgid "Focus Area Wrap" msgstr "" #: camlibs/ptp2/config.c:6751 msgid "Exposure Delay Mode" msgstr "" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 msgid "Exposure Lock" msgstr "Blocca esposizione" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 msgid "Flash Sign" msgstr "" #: camlibs/ptp2/config.c:6759 msgid "Modelling Flash" msgstr "" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 msgid "Image Review" msgstr "Controlla immagine" #: camlibs/ptp2/config.c:6762 msgid "Image Rotation Flag" msgstr "" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 msgid "Flash Mode Manual Power" msgstr "" #: camlibs/ptp2/config.c:6765 msgid "Auto Focus Area" msgstr "Area di autofocus" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 msgid "Flash Exposure Compensation" msgstr "" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 msgid "Bracketing" msgstr "" #: camlibs/ptp2/config.c:6769 msgid "Bracket Mode" msgstr "" #: camlibs/ptp2/config.c:6770 msgid "EV Step" msgstr "" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 msgid "Bracket Set" msgstr "" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "Numero raffica" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "Intervallo raffica" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "Scatti massimi" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 msgid "Auto White Balance Bias" msgstr "Bilanciamento del bianco automatico" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 msgid "Tungsten White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 msgid "Fluorescent White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 msgid "Daylight White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 msgid "Flash White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 msgid "Cloudy White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 msgid "Shady White Balance Bias" msgstr "" #: camlibs/ptp2/config.c:6794 msgid "White Balance Bias Preset Nr" msgstr "" #: camlibs/ptp2/config.c:6795 msgid "White Balance Bias Preset 0" msgstr "" #: camlibs/ptp2/config.c:6796 msgid "White Balance Bias Preset 1" msgstr "" #: camlibs/ptp2/config.c:6797 msgid "White Balance Bias Preset 2" msgstr "" #: camlibs/ptp2/config.c:6798 msgid "White Balance Bias Preset 3" msgstr "" #: camlibs/ptp2/config.c:6799 msgid "White Balance Bias Preset 4" msgstr "" #: camlibs/ptp2/config.c:6800 msgid "Selftimer Delay" msgstr "" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 msgid "Flash Shutter Speed" msgstr "" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 msgid "Remote Timeout" msgstr "" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 msgid "Remote Mode" msgstr "" #: camlibs/ptp2/config.c:6805 msgid "Application Mode" msgstr "" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "Ottimizza immmagine" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 msgid "Sharpening" msgstr "" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 msgid "Tone Compensation" msgstr "Compensazione tono" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 msgid "Saturation" msgstr "Saturazione" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 msgid "Hue Adjustment" msgstr "Aggiustamento tonalità" #: camlibs/ptp2/config.c:6811 msgid "Auto Exposure Bracketing" msgstr "" #: camlibs/ptp2/config.c:6812 msgid "Movie Sound" msgstr "" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 msgid "Manual Movie Setting" msgstr "" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "Microfono" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 msgid "Video Mode" msgstr "Modalità video" #: camlibs/ptp2/config.c:6835 msgid "Meter Off Time" msgstr "" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "Imposta pulsante anteprima" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 msgid "Movie Quality" msgstr "Qualità filmato" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 msgid "Minimum Shutter Speed" msgstr "Velocità otturatore minima" #: camlibs/ptp2/config.c:6862 msgid "Movie Resolution" msgstr "Risoluzione filmato" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 msgid "Continuous Shooting Speed Slow" msgstr "" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "" #: camlibs/ptp2/config.c:6869 msgid "Focus Metering" msgstr "" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 msgid "High ISO Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 msgid "Continuous Shooting Speed High" msgstr "" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 msgid "JPEG Compression Policy" msgstr "" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 msgid "AF Lock On" msgstr "" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "" #: camlibs/ptp2/config.c:6913 msgid "Movie High ISO Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 msgid "Raw Compression" msgstr "Compressione Raw" #: camlibs/ptp2/config.c:6922 msgid "Image Quality 2" msgstr "Qualità immagine 2" #: camlibs/ptp2/config.c:6944 msgid "Image Settings" msgstr "Impostazioni immagine" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "Impostazioni di cattura" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "Profili WIFI" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 msgid "Other PTP Device Properties" msgstr "" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "Proprietà PTP 0x%04x" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "Spiacenti, la proprietà '%s' / 0x%04x è di sola lettura." #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "La proprietà '%s' / 0x%04x non è stata impostata (0x%04x: %s)" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "La proprietà '%s' / 0x%04x non è stata impostata (0x%04x: %s)." #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "Occorre indicare una cartella che inizia con /store_xxxxxxxxx/" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "" #: camlibs/ptp2/library.c:2537 msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "Questa fotocamera Canon non gestisce la modalità Canon Viewfinder" #: camlibs/ptp2/library.c:2545 msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "Questa fotocamera Nikon non gestisce la modalità LiveView" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "" "Questa fotocamera Nikon sembra non produrre un'immagine JPEG in modalità " "LiveView" #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "" #: camlibs/ptp2/library.c:2799 msgid "Sorry, your camera does not support Nikon capture" msgstr "Questa fotocamera non gestisce la cattura Nikon" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Spiacenti, questa fotocamera Canon non gestisce la cattura Canon EOS" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 msgid "Canon EOS Half-Press failed" msgstr "" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 msgid "Canon EOS Half-Release failed" msgstr "" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 msgid "Canon EOS Full-Press failed" msgstr "" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 msgid "Canon EOS Full-Release failed" msgstr "" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "Cattura Canon EOS non riuscita" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "Cattura Canon EOS non riuscita: %x" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" # FIXME #: camlibs/ptp2/library.c:3332 msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "" "Spiacenti, questa fotocamera Canon non gestisce Canon Capture initiation" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 msgid "Canon Capture failed" msgstr "Cattura Canon non riuscita" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "Questa fotocamera non gestisce la cattura generica" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "solo lettura" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "lettura scrittura" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, c-format msgid "Manufacturer: %s\n" msgstr "Produttore: %s\n" #: camlibs/ptp2/library.c:4800 #, c-format msgid "Model: %s\n" msgstr "Modello: %s\n" #: camlibs/ptp2/library.c:4802 #, c-format msgid " Version: %s\n" msgstr " Versione: %s\n" #: camlibs/ptp2/library.c:4805 #, c-format msgid " Serial Number: %s\n" msgstr " Numero di serie: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "" #: camlibs/ptp2/library.c:4821 #, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "Versione standard PTP: %d.%d\n" #: camlibs/ptp2/library.c:4828 #, c-format msgid "Functional Mode: 0x%04x\n" msgstr "" #: camlibs/ptp2/library.c:4833 #, c-format msgid "" "\n" "Capture Formats: " msgstr "" "\n" "Formati di cattura: " #: camlibs/ptp2/library.c:4847 #, c-format msgid "Display Formats: " msgstr "Formati di visualizzazione: " #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr " PTP errore %04x alla richiesta" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" "\n" "Capacità dispositivo:\n" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "\tScaricamento file, " #: camlibs/ptp2/library.c:4902 #, c-format msgid "File Deletion, " msgstr "Eliminazione file, " #: camlibs/ptp2/library.c:4904 #, c-format msgid "No File Deletion, " msgstr "Nessuna eliminazione file, " #: camlibs/ptp2/library.c:4908 #, c-format msgid "File Upload\n" msgstr "Caricamento del file\n" #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "Nessun caricamento file\n" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4920 #, c-format msgid "Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4929 #, c-format msgid "Canon Capture" msgstr "Cattura Canon" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "Cattura Canon EOS" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "" #: camlibs/ptp2/library.c:4947 #, c-format msgid "Nikon Capture 1" msgstr "Cattura Nikon 1" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "%sCattura Nikon 2" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "%sCattura Nikon 3" #: camlibs/ptp2/library.c:4965 #, c-format msgid "Sony Capture" msgstr "Cattura Sony" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "\tGestione Nikon Wifi\n" #: camlibs/ptp2/library.c:4991 #, c-format msgid "\tCanon Wifi support\n" msgstr "\tGestione Canon Wifi\n" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "ROM interna" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "ROM rimovibile" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "RAM interna" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "RAM rimovibile (scheda di memoria)" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, c-format msgid "Unknown: 0x%04x\n" msgstr "Sconosciuto (0x%04x)\n" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "" #: camlibs/ptp2/library.c:5043 msgid "Generic Flat" msgstr "Generico piatto" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "Generico gerarchico" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "Lettura-Scrittura" #: camlibs/ptp2/library.c:5056 msgid "Read-Only" msgstr "Solo Lettura" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "\tCapacità massima: %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "\tSpazio libero (byte): %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5075 #, c-format msgid "\tFree Space (Images): %d\n" msgstr "\tSpazio libero (immagini): %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" "\n" "Sommario proprietà dispositivo:\n" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr "" #: camlibs/ptp2/library.c:5116 #, c-format msgid "cannot be queried.\n" msgstr "" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr " errore %x alla richiesta." #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "Il file \"%s/%s\" non esiste." #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "" #: camlibs/ptp2/library.c:6414 msgid "Device does not support setting object protection." msgstr "" #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "" #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Inizializzazione fotocamera" #: camlibs/ptp2/library.c:7254 #, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "" "Per il momento, PTP è implementato solo per fotocamere USB e PTP/IP, porta " "tipo %x." #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "PTP Errore non definito" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP OK!" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "PTP Errore generico" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP Sessione non aperta" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP ID di transazione non valido" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "PTP Operazione non gestita" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "PTP Parametro non gestito" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP Trasferimento incompleto" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP ID di memoria non valido" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP Codice di formato dell'oggetto non valido" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP Oggetto protetto da scrittura" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP Accesso negato" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP Nessuna miniatura presente" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP Eliminazione parziale" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "PTP Specificazione di formato non gestita" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP Formato codice non valido" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "PTP Codice fornitore sconosciuto" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP Cattura già completata" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "PTP Dispositivo occupato" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "Parametro PTP non valido" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP Sessione già aperta" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP Transazione annullata" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "PTP Specificazione di destinazione non gestita" #: camlibs/ptp2/ptp.c:4047 msgid "Filename Required" msgstr "Nome di file richiesto" #: camlibs/ptp2/ptp.c:4048 msgid "Filename Conflicts" msgstr "" #: camlibs/ptp2/ptp.c:4049 msgid "Filename Invalid" msgstr "Nome di file non valido" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "Errore hardware" #: camlibs/ptp2/ptp.c:4052 msgid "Out of Focus" msgstr "Fuori fuoco" #: camlibs/ptp2/ptp.c:4053 msgid "Change Camera Mode Failed" msgstr "Cambiamento modalità fotocamera non riuscito" #: camlibs/ptp2/ptp.c:4054 msgid "Invalid Status" msgstr "Stato non valido" #: camlibs/ptp2/ptp.c:4055 msgid "Set Property Not Supported" msgstr "" #: camlibs/ptp2/ptp.c:4056 msgid "Whitebalance Reset Error" msgstr "" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "" #: camlibs/ptp2/ptp.c:4058 msgid "Shutter Speed Bulb" msgstr "" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "" #: camlibs/ptp2/ptp.c:4066 msgid "Unknown Command" msgstr "Comando sconosciuto" #: camlibs/ptp2/ptp.c:4067 msgid "Operation Refused" msgstr "Operazione rifiutata" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "Coprilente presente" #: camlibs/ptp2/ptp.c:4069 msgid "Battery Low" msgstr "Batteria bassa" #: camlibs/ptp2/ptp.c:4070 msgid "Camera Not Ready" msgstr "Fotocamera non pronta" #: camlibs/ptp2/ptp.c:4072 msgid "PTP Timeout" msgstr "" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "" #: camlibs/ptp2/ptp.c:4075 msgid "PTP Response Expected" msgstr "Attesa risposta PTP" #: camlibs/ptp2/ptp.c:4076 msgid "PTP Data Expected" msgstr "Attesi dati PTP" #: camlibs/ptp2/ptp.c:4077 msgid "PTP I/O Error" msgstr "Errore di I/O PTP" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "Proprietà PTP non definita" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "Impostazioni di compressione" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Bilanciamento del bianco" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "Guadagno RGB" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "Tempo di esposizione" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "Contrasto" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Zoom digitale" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "URL di caricamento" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "Informazioni di copyright" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "Dimensioni miniature gestite" #: camlibs/ptp2/ptp.c:4136 #, fuzzy msgid "Enabled Streams" msgstr "Stato non valido" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Formato data" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Risoluzione filmato" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "Qualità filmato" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Contrasto" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "Luminosità" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Formato data" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "Uscita video" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "Salvataggio energia" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "Lingua interfaccia" #: camlibs/ptp2/ptp.c:4169 msgid "Battery Type" msgstr "Tipo batteria" #: camlibs/ptp2/ptp.c:4170 msgid "Battery Mode" msgstr "Modalità batteria" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "" #: camlibs/ptp2/ptp.c:4172 msgid "Camera Mode" msgstr "Modalità fotocamera" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "" #: camlibs/ptp2/ptp.c:4176 msgid "Self Time" msgstr "" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 msgid "Shooting Mode" msgstr "Modalità di scatto" #: camlibs/ptp2/ptp.c:4180 msgid "Image Mode" msgstr "Modalità immagine" #: camlibs/ptp2/ptp.c:4187 msgid "Slow Shutter Setting" msgstr "" #: camlibs/ptp2/ptp.c:4188 msgid "AF Mode" msgstr "Modalità autofocus" #: camlibs/ptp2/ptp.c:4189 msgid "Image Stabilization" msgstr "Stabilizzazione immagine" #: camlibs/ptp2/ptp.c:4191 msgid "Color Gain" msgstr "Guadagno colore" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "Sensibilità" #: camlibs/ptp2/ptp.c:4194 msgid "Parameter Set" msgstr "" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "Lunghezza focale tele" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "Lunghezza focale grandangolo" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "Lunghezza focale denominatore" #: camlibs/ptp2/ptp.c:4207 msgid "Capture Transfer Mode" msgstr "" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "Prefisso nome" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "Dimensioni miniature gestite" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "Proprietario fotocamera" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "Orario UNIX" #: camlibs/ptp2/ptp.c:4219 msgid "Camera Body ID" msgstr "Identificativo corpo fotocamera" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "" #: camlibs/ptp2/ptp.c:4223 msgid "Digital Zoom Magnification" msgstr "Ingrandimento zoom digitale" #: camlibs/ptp2/ptp.c:4224 msgid "Ml Spot Position" msgstr "" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "Angolo di rotazione" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "Rotazione scena" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "Tipo di presentazione" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "Dimensioni medie dei file" #: camlibs/ptp2/ptp.c:4239 msgid "Model ID" msgstr "Modello ID" #: camlibs/ptp2/ptp.c:4248 msgid "Shooting Bank" msgstr "" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "" #: camlibs/ptp2/ptp.c:4278 msgid "White Balance Preset Number" msgstr "" #: camlibs/ptp2/ptp.c:4280 msgid "White Balance Preset Name 0" msgstr "Impostazione bilanciamento del bianco nome 0" #: camlibs/ptp2/ptp.c:4282 msgid "White Balance Preset Name 1" msgstr "Impostazione bilanciamento del bianco nome 1" #: camlibs/ptp2/ptp.c:4284 msgid "White Balance Preset Name 2" msgstr "Impostazione bilanciamento del bianco nome 2" #: camlibs/ptp2/ptp.c:4286 msgid "White Balance Preset Name 3" msgstr "Impostazione bilanciamento del bianco nome 3" #: camlibs/ptp2/ptp.c:4288 msgid "White Balance Preset Name 4" msgstr "Impostazione bilanciamento del bianco nome 4" #: camlibs/ptp2/ptp.c:4290 msgid "White Balance Preset Value 0" msgstr "Impostazione bilanciamento del bianco valore 0" #: camlibs/ptp2/ptp.c:4292 msgid "White Balance Preset Value 1" msgstr "Impostazione bilanciamento del bianco valore 1" #: camlibs/ptp2/ptp.c:4294 msgid "White Balance Preset Value 2" msgstr "Impostazione bilanciamento del bianco valore 2" #: camlibs/ptp2/ptp.c:4296 msgid "White Balance Preset Value 3" msgstr "Impostazione bilanciamento del bianco valore 3" #: camlibs/ptp2/ptp.c:4298 msgid "White Balance Preset Value 4" msgstr "Impostazione bilanciamento del bianco valore 4" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "" #: camlibs/ptp2/ptp.c:4360 msgid "Focus Area Zone" msgstr "" #: camlibs/ptp2/ptp.c:4362 msgid "Enable Copyright" msgstr "Abilita copyright" #: camlibs/ptp2/ptp.c:4366 msgid "Exposure ISO Step" msgstr "" #: camlibs/ptp2/ptp.c:4368 msgid "Exposure Step" msgstr "" #: camlibs/ptp2/ptp.c:4370 msgid "Exposure Compensation (EV)" msgstr "" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "" #: camlibs/ptp2/ptp.c:4376 msgid "Exposure Base Matrix" msgstr "" #: camlibs/ptp2/ptp.c:4378 msgid "Exposure Base Center" msgstr "" #: camlibs/ptp2/ptp.c:4380 msgid "Exposure Base Spot" msgstr "" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "" #: camlibs/ptp2/ptp.c:4390 msgid "Auto Meter Off Time" msgstr "" #: camlibs/ptp2/ptp.c:4392 msgid "Self Timer Delay" msgstr "" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "" #: camlibs/ptp2/ptp.c:4398 msgid "Auto Off Timers" msgstr "Tempi di spegnimento automatico" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "" #: camlibs/ptp2/ptp.c:4402 msgid "Shooting Speed" msgstr "Velocità di scatto" #: camlibs/ptp2/ptp.c:4406 msgid "Exposure delay mode" msgstr "" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 msgid "Long Exposure Noise Reduction" msgstr "" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "Illuminazione LCD" #: camlibs/ptp2/ptp.c:4418 msgid "High ISO noise reduction" msgstr "" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "Nome artista" #: camlibs/ptp2/ptp.c:4424 msgid "Copyright Information" msgstr "Informazioni di copyright" #: camlibs/ptp2/ptp.c:4432 msgid "Modeling Flash" msgstr "" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "" #: camlibs/ptp2/ptp.c:4440 msgid "Auto Bracket Selection" msgstr "" #: camlibs/ptp2/ptp.c:4441 msgid "NIKON Auto Bracketing Set" msgstr "" #: camlibs/ptp2/ptp.c:4443 msgid "Center Button Shooting Mode" msgstr "" #: camlibs/ptp2/ptp.c:4445 msgid "Center Button Playback Mode" msgstr "" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "" #: camlibs/ptp2/ptp.c:4457 msgid "Aperture Setting" msgstr "Impostazione dell'apertura" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "" #: camlibs/ptp2/ptp.c:4465 msgid "Center Button Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4467 msgid "Function Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4471 msgid "Normal AF On" msgstr "" #: camlibs/ptp2/ptp.c:4473 msgid "Clean Image Sensor" msgstr "" #: camlibs/ptp2/ptp.c:4475 msgid "Image Comment String" msgstr "" #: camlibs/ptp2/ptp.c:4477 msgid "Image Comment Enable" msgstr "Abilita commento all'immagine" #: camlibs/ptp2/ptp.c:4479 msgid "Image Rotation" msgstr "Rotazione immagine" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "" #: camlibs/ptp2/ptp.c:4497 msgid "Bracketing Enable" msgstr "" #: camlibs/ptp2/ptp.c:4499 msgid "Exposure Bracketing Step" msgstr "" #: camlibs/ptp2/ptp.c:4501 msgid "Exposure Bracketing Program" msgstr "" #: camlibs/ptp2/ptp.c:4503 msgid "Auto Exposure Bracket Count" msgstr "" #: camlibs/ptp2/ptp.c:4504 msgid "White Balance Bracket Step" msgstr "" #: camlibs/ptp2/ptp.c:4505 msgid "White Balance Bracket Program" msgstr "" #: camlibs/ptp2/ptp.c:4507 msgid "Lens ID" msgstr "Identificativo lente" #: camlibs/ptp2/ptp.c:4509 msgid "Lens Sort" msgstr "" #: camlibs/ptp2/ptp.c:4511 msgid "Lens Type" msgstr "Tipo lente" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "Distanza focale minima" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "Distanza focale massima" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "Massima apertura alla distanza focale minima" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "Massima apertura alla distanza focale massima" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "" #: camlibs/ptp2/ptp.c:4523 msgid "Auto Off Photo" msgstr "" #: camlibs/ptp2/ptp.c:4525 msgid "Auto Off Menu" msgstr "" #: camlibs/ptp2/ptp.c:4527 msgid "Auto Off Info" msgstr "" #: camlibs/ptp2/ptp.c:4529 msgid "Self Timer Shot Number" msgstr "" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "" #: camlibs/ptp2/ptp.c:4537 msgid "Nikon Exposure Time" msgstr "Tempo di esposizione Nikon" #: camlibs/ptp2/ptp.c:4539 msgid "Warning Status" msgstr "" #: camlibs/ptp2/ptp.c:4546 msgid "AF LCD Top Mode 2" msgstr "" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "" #: camlibs/ptp2/ptp.c:4552 msgid "Exposure Meter" msgstr "" #: camlibs/ptp2/ptp.c:4556 msgid "USB Speed" msgstr "Velocità USB" # #: camlibs/ptp2/ptp.c:4558 msgid "CCD Serial Number" msgstr "Numero di serie CCD" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "" #: camlibs/ptp2/ptp.c:4564 msgid "FNumber Lock" msgstr "" #: camlibs/ptp2/ptp.c:4566 msgid "Exposure Aperture Lock" msgstr "" #: camlibs/ptp2/ptp.c:4568 msgid "TV Lock Setting" msgstr "" #: camlibs/ptp2/ptp.c:4570 msgid "AV Lock Setting" msgstr "" #: camlibs/ptp2/ptp.c:4572 msgid "Illum Setting" msgstr "Impostazioni illuminazione" #: camlibs/ptp2/ptp.c:4574 msgid "Focus Point Bright" msgstr "Posizione di fuoco" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "Flash esterno collegato" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "Stato flash esterno" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 msgid "External Flash Mode" msgstr "Modalità flash esterno" #: camlibs/ptp2/ptp.c:4584 msgid "External Flash Compensation" msgstr "Compensazione flash esterno" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "" #: camlibs/ptp2/ptp.c:4604 msgid "BW Contrast" msgstr "" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "" #: camlibs/ptp2/ptp.c:4614 msgid "Flourescent Type" msgstr "Tipo fluorescente" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "" #: camlibs/ptp2/ptp.c:4618 msgid "Tune Preset 0" msgstr "" #: camlibs/ptp2/ptp.c:4620 msgid "Tune Preset 1" msgstr "" #: camlibs/ptp2/ptp.c:4622 msgid "Tune Preset 2" msgstr "" #: camlibs/ptp2/ptp.c:4624 msgid "Tune Preset 3" msgstr "" #: camlibs/ptp2/ptp.c:4626 msgid "Tune Preset 4" msgstr "" #: camlibs/ptp2/ptp.c:4630 msgid "Autofocus Mode" msgstr "Modalità autofocus." #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "" #: camlibs/ptp2/ptp.c:4656 msgid "Auto FP" msgstr "" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "" #: camlibs/ptp2/ptp.c:4662 msgid "Battery Cell Kind" msgstr "" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "" #: camlibs/ptp2/ptp.c:4670 msgid "Info Disp Setting" msgstr "" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "Pulsante anteprima" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "Pulsante anteprima 2" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "" #: camlibs/ptp2/ptp.c:4684 msgid "Live View Mode" msgstr "" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "" #: camlibs/ptp2/ptp.c:4694 msgid "Exposure Display Status" msgstr "" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "" #: camlibs/ptp2/ptp.c:4700 msgid "Exposure Indicate Lightup" msgstr "" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "" #: camlibs/ptp2/ptp.c:4708 msgid "Flash MRepeat Count" msgstr "" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "ISO" #: camlibs/ptp2/ptp.c:4749 msgid "Image Compression" msgstr "Compressione immagine" #: camlibs/ptp2/ptp.c:4758 msgid "Secure Time" msgstr "" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "Certificato dispositivo" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "Livello volume" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "Icona dispositivo" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "Velocità di riproduzione" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "" #: camlibs/ptp2/ptp.c:4782 msgid "Quality" msgstr "Qualità" #: camlibs/ptp2/ptp.c:4783 msgid "Release Mode" msgstr "" #: camlibs/ptp2/ptp.c:4784 msgid "Focus Areas" msgstr "Aree di fuoco" #: camlibs/ptp2/ptp.c:4785 msgid "AE Lock" msgstr "" #: camlibs/ptp2/ptp.c:4797 msgid "Image size" msgstr "Dimensioni immagine" #: camlibs/ptp2/ptp.c:4798 msgid "Shutter speed" msgstr "Velocità otturatore" #: camlibs/ptp2/ptp.c:4799 msgid "Color temperature" msgstr "Temperatura colore" #: camlibs/ptp2/ptp.c:4802 msgid "Expose Index" msgstr "Indice di esposizione" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 msgid "Still Image" msgstr "" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "%.1f stop" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "%.0f mm" #: camlibs/ptp2/ptp.c:4940 msgid "JPEG Norm" msgstr "JPEG Normale" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "RAW + JPEG Base" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Incandescente" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "" #: camlibs/ptp2/ptp.c:4966 msgid "Automatic flash" msgstr "Flash automatico" #: camlibs/ptp2/ptp.c:4969 msgid "Automatic Red-eye Reduction" msgstr "Automatico, riduzione occhi rossi" #: camlibs/ptp2/ptp.c:4970 msgid "Red-eye fill flash" msgstr "Riempimento occhi rossi" #: camlibs/ptp2/ptp.c:4988 msgid "Power Wind" msgstr "" #: camlibs/ptp2/ptp.c:4994 msgid "Timer + Remote" msgstr "" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "" #: camlibs/ptp2/ptp.c:5056 msgid "Flash Lock" msgstr "" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "Non utilizzato" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "SDRam" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "USB 1.1" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "USB 2.0" #: camlibs/ptp2/ptp.c:5169 msgid "LCD Backlight" msgstr "" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "" #: camlibs/ptp2/ptp.c:5228 msgid "1 min" msgstr "1 min" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "5 min" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "10 min" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "15 min" #: camlibs/ptp2/ptp.c:5266 msgid "Dark on light" msgstr "" #: camlibs/ptp2/ptp.c:5267 msgid "Light on dark" msgstr "" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "Litio-ione" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "Nickel ibrido" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "Nickel-Cadmio" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "Emergenza" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "SuperFine" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "Riduzione occhi rossi" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "" #: camlibs/ptp2/ptp.c:5345 msgid "Auto + Red Eye Suppression" msgstr "Automatico + riduzione occhi rossi" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "Acceso + riduzione occhi rossi" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "Otturatore alta velocità" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "Otturatore bassa velocità" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "Scala di grigi" #: camlibs/ptp2/ptp.c:5370 msgid "Pan Focus" msgstr "" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "Scatto singolo" #: camlibs/ptp2/ptp.c:5375 msgid "Continuous Shooting" msgstr "Scatto continuo" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "" #: camlibs/ptp2/ptp.c:5386 msgid "Spot Metering" msgstr "" #: camlibs/ptp2/ptp.c:5387 msgid "Average Metering" msgstr "" #: camlibs/ptp2/ptp.c:5388 msgid "Evaluative Metering" msgstr "" #: camlibs/ptp2/ptp.c:5389 msgid "Partial Metering" msgstr "" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "" #: camlibs/ptp2/ptp.c:5392 msgid "Multi-Spot Metering" msgstr "" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "Bassa 2" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 msgid "High 2" msgstr "Alta 2" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "" #: camlibs/ptp2/ptp.c:5462 msgid "Development Parameters 1" msgstr "" #: camlibs/ptp2/ptp.c:5463 msgid "Development Parameters 2" msgstr "" #: camlibs/ptp2/ptp.c:5464 msgid "Development Parameters 3" msgstr "" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "" #: camlibs/ptp2/ptp.c:5600 msgid "Encounter" msgstr "" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "M4A" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "Firmware" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "" #: camlibs/ptp2/ptp.c:5605 msgid "Undefined Audio" msgstr "Audio non definito" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5612 msgid "Undefined Video" msgstr "Video non definito" #: camlibs/ptp2/ptp.c:5617 msgid "Undefined Collection" msgstr "Collezione non definita" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "Documento non definito" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "Documento astratto" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "Documento XML" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr " Documento Microsoft Word" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "Foglio di calcolo Microsoft Excel (.xls)" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "Microsoft Powerpoint (.ppt)" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "Messaggio non definito" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "Messaggio astratto" #: camlibs/ptp2/ptp.c:5643 msgid "Undefined Contact" msgstr "Contatto non definito" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "Contatto astratto" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "vCard2" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "vCard3" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "Elemento calendario non definito" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "Elemento calendario astratto" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "vCalendar1" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "vCalendar2" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "Eseguibile Windows non definito" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "Sezione" #: camlibs/ptp2/ptp.c:5692 #, c-format msgid "Unknown(%04x)" msgstr "Sconosciuto (%04x)" #: camlibs/ptp2/ptp.c:5702 #, fuzzy msgid "Get device info" msgstr "Reimposta dispositivo" #: camlibs/ptp2/ptp.c:5703 msgid "Open session" msgstr "Apri sessione" #: camlibs/ptp2/ptp.c:5704 msgid "Close session" msgstr "Chiudi sessione" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "" #: camlibs/ptp2/ptp.c:5711 msgid "Get thumbnail" msgstr "" #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "Elimina oggetto" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "Invia informazioni sull'oggetto" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "Invia oggetto" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "Reimposta dispositivo" #: camlibs/ptp2/ptp.c:5718 msgid "Self test device" msgstr "" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "Spegni dispositivo" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "Sposta oggetto" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "Copia oggetto" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 msgid "Get Vendor Extension Maps" msgstr "" #: camlibs/ptp2/ptp.c:5735 msgid "Get Vendor Device Info" msgstr "" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 #, fuzzy msgid "Get Filesystem Manifest" msgstr "Filesystem veloce" #: camlibs/ptp2/ptp.c:5738 msgid "Get Stream Info" msgstr "" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "Aggiornare il firmware del dispositivo" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "" #: camlibs/ptp2/ptp.c:5759 msgid "Set license response" msgstr "" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "" #: camlibs/ptp2/ptp.c:5763 msgid "Get meter response" msgstr "" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "Invia richiesta di registrazione" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "Ricevi risposta di registrazione" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "" #: camlibs/ptp2/ptp.c:5800 msgid "Send Partial Object" msgstr "Invia oggetto parziale" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "Tronca oggetto" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "Sconosciuto %d" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "PTP Codice fornitore sconosciuto" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "Scaricamento filmato in corso..." #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "Scaricamento audio in corso..." #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "Scaricamento dati EXIF in corso..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "Nessun dato EXIF disponibile per %s." #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "Impossibile eliminare il file." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "Impossibile rimuovere la directory." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "Impossibile creare la directory." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "Versione: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "Stato RTC: %d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "Orario fotocamera: %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "ID Fotocamera: %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "Nessuna scheda SD inserita.\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "ID scheda SD: %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "Foto sulla fotocamera: %d\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "Memoria SD: %d MB totali, %d MB liberi.\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "Memoria interna: %d MB totale, %d MB liberi.\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Driver per Ricoh / Philips\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "basato sul driver di Bob Paauwe's\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "sconosciuto (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Modello: %s\n" "Memoria: %d byte su %d disponibili" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2.0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1.5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1.0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0.5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0.0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0.5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1.0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1.5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2.0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Esterno" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Massima" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Minima" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Carattere" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Audio" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Immagini e audio" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Carattere e audio" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Configurazione" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Generale" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Copyright (20 caratteri al massimo)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "Immagini" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Modalità di registrazione" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Compressione" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "La velocità %i non è supportata!" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "Previsto %i, ricevuto %i. Segnalare questo errore a %s." #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "Previsti %i byte, ricevuti %i. Segnalare questo errore a %s." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "Previsto 0x%x ma ricevuto 0x%x. Contattare %s." #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "Carattere non valido (0x%x, 0x%x). Contattare %s." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "Fotocamera occupata. Se il problema persiste, contattare %s." #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "Tempo scaduto dopo 2 tentativi. Contattare %s." #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "Errore di comunicazione anche dopo 2 tentativi. Contattare %s." #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "La fotocamera è in una modalità errata. Contattare %s." #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "La fotocamera non ha accettato i parametri. Contattare %s." #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "Si è verificato un errore sconosciuto. Contattare %s." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "" "La lunghezza del nome del file non può superare 12 caratteri (\"%s\" ha %i " "caratteri)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Data e ora (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 msgid "Aperture Settings" msgstr "Impostazioni di apertura" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Modalità colore" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Riduzione occhi rossi" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Impostazioni del flash" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Risparmio energetico fotocamera (secondi)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Modalità lente" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "Coreano" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "Inglese" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "Francese" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "Tedesco" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "Italiano" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "Giapponese" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "Spagnolo" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "Portoghese" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Impostazioni immagine" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Nessuna scheda di memoria presente" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "Impossibile recuperare la capacità della batteria" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "" "Il livello della batteria della fotocamera è troppo bassoi (%d%%). " "L'operazione è annullata." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Impossibile leggere la quantità di memoria libera" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "La fotocamera ha rifiutato 3 volte di mantenere la connessione aperta." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "Il primo byte ricevuto (0x%x) non è valido." #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "Trasmissione dei pacchetti scaduta dopo %i tentativi. Contattare %s." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Impossibile trasmettere il pacchetto anche dopo diversi tentativi." #: camlibs/sierra/library.c:789 #, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "Il pacchetto è stato rifiutato dalla fotocamera. Contattare %s." #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "Impossibile trasmettere pacchetto (codice errore %i). Contattare %s." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "Trasmissione scaduta dopo 2 tentativi." #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "Ricevuto risultato non previsto 0x%x. Contattare %s." #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "Ricevuta risposta non prevista (%i). Contattare %s." #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "Impossibile leggere il registro %i. Contattare %s." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "Troppi tentativi non riusciti." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Invio dei dati in corso..." #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "Impossibile leggere il registro %i. Contattare %s." #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "Attesi 32 byte, ricevuti %i. Contattare %s." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "Velocità otturatore in microsecondi (0 automatico)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "Velocità otturatore (in secondi)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "B/N" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Riduzione occhi rossi" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "Contrasto+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Contrasto-" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "Luminosità+" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "Luminosità-" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Aggiustamento immagine" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "Infinito" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "Anteprima miniatura" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "Successivo" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "Precedente" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Modalità di operazione" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "Luminosità LCD" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "Matrice" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Spot-AF" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Misurazione esposizione" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "Zoom (in millimetri)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "nessuno" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Largo" #: camlibs/sierra/nikon-desc.c:558 msgid "Misc exposure/lens settings" msgstr "" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "" #: camlibs/sierra/olympus-desc.c:489 msgid "Color or Function Mode" msgstr "" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 msgid "Slow" msgstr "Lento" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "" #: camlibs/sierra/olympus-desc.c:596 msgid "Fluorescent-1-home-6700K" msgstr "" #: camlibs/sierra/olympus-desc.c:597 msgid "Fluorescent-2-desk-5000K" msgstr "" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "Tramonto" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Monitor" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "Modo LCD" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Zoom digitale" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "Posizione di fuoco" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Formato dell'orario" #: camlibs/sierra/olympus-desc.c:1147 msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" #: camlibs/sierra/olympus-desc.c:1166 msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "Il file da caricare ha lunghezza nulla" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "Insufficiente memoria disponibile sulla scheda di memoria" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Impossibile ottenere il nome della cartella contenente le foto" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "È possibile caricare un file solo nella cartella \"%s\"" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Migliore" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (sconosciuto)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "Velocità otturatore (microsecondi, 0 autotomatico)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Bianco e nero" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "Luminosità/Contrasto" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1.6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2.5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Impostazioni scatto" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 msgid "standard" msgstr "Standard" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "HyPict" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "colori" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "bianco e nero" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" "Nota: scheda di memoria non presente, alcuni valori possono essere non " "validi\n" #: camlibs/sierra/sierra.c:1948 #, c-format msgid "Camera Model: %s\n" msgstr "Modello fotocamera: %s\n" #: camlibs/sierra/sierra.c:1957 #, c-format msgid "Serial Number: %s\n" msgstr "Numero di serie: %s\n" #: camlibs/sierra/sierra.c:1960 #, c-format msgid "Software Rev.: %s\n" msgstr "Revisione software: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, c-format msgid "Frames Taken: %i\n" msgstr "Scatti fatti: %i\n" #: camlibs/sierra/sierra.c:1971 #, c-format msgid "Frames Left: %i\n" msgstr "Scatti rimasti: %i\n" #: camlibs/sierra/sierra.c:1973 #, c-format msgid "Battery Life: %i\n" msgstr "Durata batteria: %i\n" #: camlibs/sierra/sierra.c:1975 #, c-format msgid "Memory Left: %i bytes\n" msgstr "Memoria libera: %i byte\n" #: camlibs/sierra/sierra.c:1980 #, c-format msgid "Date: %s" msgstr "Data: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "Nessun manuale per la fotocamera disponibile.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" #: camlibs/sierra/sierra.c:2060 msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" #: camlibs/sierra/sierra.c:2087 msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (sconosciuto)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Impossibile applicare le impostazioni USB" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "Driver per accedere alla fotocamera SiPix Web2." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Fotocamera Sonix.\n" "C'è %i foto. \n" msgstr[1] "" "Fotocamera Sonix.\n" "Ci sono %i foto. \n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "Libreria per la fotocamera Sonix\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "Revisione del firmware: %8s\n" "Immagini: %i\n" "Memoria totale: %ikB\n" "Memoria libera: %ikB\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "Revisione del firmware: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Driver per Soundvision\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "FLASH:\n" " File: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM:\n" " File: %d\n" " Immagini: %4d\n" " Filmati: %4d\n" "Spazio usato: %8d\n" "Spazio libero: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "Libreria spca50x v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "Driver generico per sq905\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "Orientamento" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "Cattiva esposizione (probabilmente non abbastanza luce)" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "Informazioni per la fotocamera basata su STV0680:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Revisione del firmware: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "Revisione ASIC: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "ID sensore: %d.%d\n" #: camlibs/stv0680/library.c:562 #, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Memoria nella fotocamera: %d Mbit.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "La fotocamera gestisce le miniature.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "La fotocamera gestisce i filmati.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "La fotocamera gestisce i formati video." #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "ID Vendor: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "ID prodotto: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "Numero di immagini: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "Massimo numero di immagini: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Larghezza immagine :%d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "Altezza immagine: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "Dimensioni immagine: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Larghezza miniatura: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Altezza miniatura: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Dimensioni miniatura: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Driver per le fotocamere con il processore STV0680 ASIC.\n" "Reverse engineered del protocollo usando CommLite Beta 5\n" "Carsten Weinholz \n" "Esteso per Aiptek PenCam e altre fotocamere STM USB Dual-mode." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Lettura informazioni su %i file in corso..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z è solo USB" #: camlibs/topfield/puppy.c:553 msgid "Driver Settings" msgstr "Impostazioni driver" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "Modalità turbo" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" #: camlibs/topfield/puppy.c:659 #, c-format msgid "Downloading %s..." msgstr "Scaricamento di \"%s\"..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "Driver per Toshiba pdr-m11.\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" "Errore interno durante la ricerca di camlibs (nomi di percorso troppo " "lunghi?)" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Caricamento dei driver della fotocamera da \"%s\"..." #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "Si è verificato un errore nella libreria di I/O (\"%s\"): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Impossibile rilevare alcuna fotocamera" #: libgphoto2/gphoto2-camera.c:750 #, c-format msgid "Could not detect any camera at port %s" msgstr "Impossibile rilevare alcuna fotocamera alla porta %s" #: libgphoto2/gphoto2-camera.c:774 msgid "You have to set the port prior to initialization of the camera." msgstr "Occorre impostare la porta prima di inizializzare la fotocamera." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Impossibile caricare il driver della fotocamera \"%s\" richiesto (%s)." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "" "Il driver \"%s\" della fotocamera non contiene la funzione \"camera_init\"." #: libgphoto2/gphoto2-camera.c:864 msgid "This camera does not provide any configuration options." msgstr "Questa fotocamera non offre alcuna opzione di configurazione." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "" "Questa fotocamera non gestisce l'impostazione di opzioni di configurazione" #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Questa fotocamera non gestisce i sommari." #: libgphoto2/gphoto2-camera.c:960 msgid "This camera does not provide a manual." msgstr "Questa fotocamera non ha un manuale." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "Questa fotocamera non fornisce informazioni sul driver." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Questa fotocamera non può catturare." #: libgphoto2/gphoto2-camera.c:1056 msgid "This camera can not trigger capture." msgstr "" #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Questa fotocamera non può catturare anteprime." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "Il percorso \"%s\" non è assoluto." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "Si è cercato di eliminare \"%s\" dalla cartella \"%s\", ma il filesystem non " "gestisce l'eliminazione di file." #: libgphoto2/gphoto2-filesys.c:1259 #, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "" "Ci sono ancora delle sottocartelle nella cartella \"%s/%s\" che si vuole " "rimuovere." #: libgphoto2/gphoto2-filesys.c:1264 #, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "" "Ci sono ancora dei file nella cartella \"%s/%s\" che si vuole rimuovere." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Il filesystem non gestisce il caricamento di file." #: libgphoto2/gphoto2-filesys.c:1359 #, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "La cartella \"%s\" contiene solo %i file, ma è stato richiesto un file con " "numero %i." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Il file \"%s\" non è stato trovato nella cartella \"%s\"." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Impossibile trovare il file \"%s\"." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "Il filesystem non gestisce la lettura dei file." #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Tipo di file %i sconosciuto." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "Il filesystem non gestisce la lettura delle informazioni del file." #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "Il filesystem non gestisce l'impostazione delle informazioni del file" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "" "Attributi di sola lettura del file, come larghezza e altezza, non possono " "essere modificati." #: libgphoto2/gphoto2-filesys.c:2455 msgid "The filesystem doesn't support getting storage information" msgstr "Il filesystem non gestisce la lettura delle informazioni del file" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Dati danneggiati" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Il file esiste" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Modello sconosciuto" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Directory non trovata" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "File non trovato" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "La directory esiste" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "I/O in avanzamento" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "Percorso non assoluto" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Operazione annullata" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "La fotocamera non ha potuto completare l'operazione" #: libgphoto2/gphoto2-result.c:57 msgid "OS error in camera communication" msgstr "" "Errore del sistema operativo durante la comunicazione con la fotocamera" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "Spazio libero non sufficiente" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Errore sconosciuto nella libreria della fotocamera" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Errore sconosciuto" #~ msgid "Small Fine JPEG (S1 Fine)" #~ msgstr "JPEG Fine piccola (S1 Fine)" #~ msgid "Small Normal JPEG (S1 Normal)" #~ msgstr "JPEG Normale piccola (S1 Normale)" #~ msgid "RAW + Small Fine JPEG (S1 Fine)" #~ msgstr "RAW + JPEG Fine piccola (S1 Fine)" #~ msgid "mRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "mRAW + JPEG Fine piccola (S1 Fine)" #~ msgid "sRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "sRAW + JPEG Fine piccola (S1 Fine)" #~ msgid "RAW + Small Normal JPEG (S1 Normal)" #~ msgstr "RAW + JPEG Normale piccola (S1 normale)" #~ msgid "mRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "mRAW + JPEG Normale piccola (S1 normale)" #~ msgid "sRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "RAW + JPEG Normale piccola (S1 normale)" #~ msgid "Unknown (%04x)" #~ msgstr "Sconosciuto (%04x)" libgphoto2-2.5.9/po/ru.po0000644000175000001440000120046612623156273012141 00000000000000# Translation of libgphoto2 messages to Russian. # This file is distributed under the same license as the libgphoto2 package. # Valek Filippov , 2005. # Ð’ÑчеÑлав Диконов (Vyacheslav Dikonov) , 2005. # Pavel Maryanov , 2012. # msgid "" msgstr "" "Project-Id-Version: libgphoto2 2.4.13\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2012-03-30 14:41+0200\n" "Last-Translator: Pavel Maryanov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" "Adc65\n" "Benjamin Moos " #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "Разработчики драйвера Agfa CL20 Ð´Ð»Ñ Linux!\n" " Э-почта - cl20@poeml.de \n" " Веб-Ð°Ð´Ñ€ÐµÑ http://cl20.poeml.de " #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "Ваш USB-фотоаппарат оÑнован на м/Ñ Ð½Ð°Ð±Ð¾Ñ€Ðµ Aox.\n" "ЧиÑло изображений низкого Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ = %i\n" "ЧиÑло изображений выÑокого Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ = %i\n" "ЧиÑло изображений = %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Базовый драйвер Aox\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 #, fuzzy msgid "Picture Frame Configuration" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "КоличеÑтво изображений: %i\n" "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Формат изображений иÑÑледовал:\n" "Jeff Laing \n" "\n" "Реализовано Ð±Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ð¸ доÑтупной в\n" "Интернете Ñ ÑоглаÑÐ¸Ñ Vision." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "Ðевозможно Ñоздать каталог %s." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "Ðевозможно удалить каталог %s." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "" #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*ÐЕИЗВЕСТÐО*" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "" #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ñтрочные буквы в %s." #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Файл защищен." #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "Ðевозможно получить миниатюру JPEG: ОтÑутÑтвует начало/конец" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "" "Ðевозможно получить миниатюру JPEG: Данные не ÑоответÑтвуют формату JFIF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "внимание: ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма не проверена (+ длина %d, значение 0x%04x) " "#########################\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "" #: camlibs/canon/library.c:98 #, fuzzy msgid "Thumbnail" msgstr "Размер миниатюры: %d\n" #: camlibs/canon/library.c:99 #, fuzzy msgid "Full Image" msgstr "Изображение" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "" #: camlibs/canon/library.c:216 #, fuzzy msgid "Auto focus: one-shot" msgstr "Ошибка автофокуÑировки" #: camlibs/canon/library.c:217 #, fuzzy msgid "Auto focus: AI servo" msgstr "Ошибка автофокуÑировки" #: camlibs/canon/library.c:218 #, fuzzy msgid "Auto focus: AI focus" msgstr "Ошибка автофокуÑировки" #: camlibs/canon/library.c:219 #, fuzzy msgid "Manual focus" msgstr "Ручной" #: camlibs/canon/library.c:224 #, fuzzy msgid "Beep off" msgstr "Сигнал" #: camlibs/canon/library.c:225 #, fuzzy msgid "Beep on" msgstr "Сигнал" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 #, fuzzy msgid "Flash off" msgstr "Режим вÑпышки" #: camlibs/canon/library.c:231 #, fuzzy msgid "Flash on" msgstr "Режим вÑпышки" #: camlibs/canon/library.c:232 #, fuzzy msgid "Flash auto" msgstr "Режим вÑпышки" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "" #: camlibs/canon/library.c:267 #, fuzzy msgid "Manual 2" msgstr "Ручной" #: camlibs/canon/library.c:268 #, fuzzy msgid "Far scene" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/canon/library.c:269 msgid "Fast shutter" msgstr "" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "СепиÑ" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 #, fuzzy msgid "Portrait" msgstr "КонтраÑÑ‚" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Точечный" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Макро" #: camlibs/canon/library.c:277 #, fuzzy msgid "BW" msgstr "Ч/Б" #: camlibs/canon/library.c:278 #, fuzzy msgid "PanFocus" msgstr "ФокуÑ" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 #, fuzzy msgid "Neutral" msgstr "Ðорм." #: camlibs/canon/library.c:282 #, fuzzy msgid "Long shutter" msgstr "ФокуÑное раÑÑтоÑние" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "" #: camlibs/canon/library.c:285 #, fuzzy msgid "Indoor" msgstr "Солнечный" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "" #: camlibs/canon/library.c:292 #, fuzzy msgid "Digital macro" msgstr "Цифровое увеличение" #: camlibs/canon/library.c:293 #, fuzzy msgid "MyColors" msgstr "Цвет" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" #: camlibs/canon/library.c:497 #, fuzzy, c-format msgid "Camera unavailable: %s" msgstr "Фотоаппарат недоÑтупен" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Фотоаппарат выключаетÑÑ" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Ошибка захвата изображениÑ" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Ðевозможно получить Ð¸Ð¼Ñ Ð´Ð¸Ñка: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Причина неизвеÑтна" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Ðевозможно получить информацию о диÑке: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° 1 в функции get_file_func() (%s Ñтрока %i)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "Ðе найден файл звукозапиÑи Ð´Ð»Ñ %s" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " ДиÑк %s\n" " %11s байт вÑего\n" " %11s байт Ñвободно" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "блок питаниÑ" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "аккумулÑтор" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "питание ОК" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "Ñбой питаниÑ" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "нет данных: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (Ð²Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð° %s%i Ñекунд)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Определение фотоаппарата:\n" " Модель: %s\n" " Владелец: %s\n" "\n" "Питание: %s\n" "\n" "Карта памÑти:\n" "%s\n" "\n" "ВремÑ: %s\n" #: camlibs/canon/library.c:1145 #, fuzzy msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Драйвер Canon PowerShot Ñоздан\n" "Wolfgang G. Reissnegger,\n" "Werner Almesberger,\n" "Edouard Lafargue,\n" "Philippe Marzouk,\n" "добавление A5 - Ole W. Saastad\n" "Holger Klemm\n" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑвÑзанного файла миниатюры" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "" "Превышающие 57600 ÑкороÑти не поддерживаютÑÑ Ð¿Ñ€Ð¸ загрузке в Ñтот фотоаппарат" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Ðевозможно получить букву уÑтройÑтва карты памÑти" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Ðевозможно Ñоздать каталог \\DCIM." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Ðевозможно Ñоздать целевой каталог" #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° и драйвера " #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 #, fuzzy msgid "Owner Name" msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 msgid "Capture Size Class" msgstr "" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "СкороÑть ISO" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "ÐеизвеÑтно" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 #, fuzzy msgid "Shooting mode" msgstr "СкороÑть ISO" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 #, fuzzy msgid "Shutter Speed" msgstr "СкороÑть ISO" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "Приближение" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "Диафрагма" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 #, fuzzy msgid "Image Format" msgstr "Формат даты" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Режим фокуÑировки" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Режим вÑпышки" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Сигнал" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 #, fuzzy msgid "Camera Actions" msgstr "Прочие параметры" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 #, fuzzy msgid "Camera Status Information" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "Модель фотоаппарата" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Дата и времÑ" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Ошибка" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 #, fuzzy msgid "Firmware Version" msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %8s" #: camlibs/canon/library.c:1956 #, fuzzy msgid "Power" msgstr "Ð­ÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ Ñнергии" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Драйвер" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "ПоказатьÑпиÑок вÑех файлов" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Сохранить Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° при закачке" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Фотоаппарат недоÑтупен" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð° изменено" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "невозможно изменить Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "" #: camlibs/canon/library.c:2056 #, fuzzy msgid "ISO speed changed" msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð° изменено" #: camlibs/canon/library.c:2058 #, fuzzy msgid "Could not change ISO speed" msgstr "невозможно изменить Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "" #: camlibs/canon/library.c:2085 #, fuzzy msgid "Shooting mode changed" msgstr "СкороÑть ISO" #: camlibs/canon/library.c:2087 #, fuzzy msgid "Could not change shooting mode" msgstr "невозможно изменить Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "" #: camlibs/canon/library.c:2114 #, fuzzy msgid "Shutter speed changed" msgstr "СкороÑть ISO" #: camlibs/canon/library.c:2116 #, fuzzy msgid "Could not change shutter speed" msgstr "невозможно изменить Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 #, fuzzy msgid "Invalid aperture setting" msgstr "Параметры диафрагмы" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 #, fuzzy msgid "Aperture changed" msgstr "Параметры диафрагмы" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 #, fuzzy msgid "Could not change aperture" msgstr "невозможно изменить Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" #: camlibs/canon/library.c:2167 #, fuzzy msgid "Invalid exposure compensation setting" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/canon/library.c:2170 #, fuzzy msgid "Exposure compensation changed" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/canon/library.c:2172 #, fuzzy msgid "Could not change exposure compensation" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/canon/library.c:2194 #, fuzzy msgid "Invalid image format setting" msgstr "Прочие параметры" #: camlibs/canon/library.c:2198 #, fuzzy msgid "Image format changed" msgstr "Изображение защищено." #: camlibs/canon/library.c:2200 #, fuzzy msgid "Could not change image format" msgstr "невозможно изменить Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "" #: camlibs/canon/library.c:2226 #, fuzzy msgid "Focus mode changed" msgstr "Режим фокуÑировки" #: camlibs/canon/library.c:2228 #, fuzzy msgid "Could not change focus mode" msgstr "невозможно изменить Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "" #: camlibs/canon/library.c:2255 #, fuzzy msgid "Beep mode changed" msgstr "Ð˜Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð° изменено" #: camlibs/canon/library.c:2257 #, fuzzy msgid "Could not change beep mode" msgstr "невозможно изменить Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "" #: camlibs/canon/library.c:2276 #, fuzzy msgid "Could not change zoom level" msgstr "невозможно изменить Ð¸Ð¼Ñ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð°" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "" #: camlibs/canon/library.c:2332 #, fuzzy msgid "Flash mode changed" msgstr "Карта CompactFlash" #: camlibs/canon/library.c:2334 #, fuzzy msgid "Could not change flash mode" msgstr "Ðевозможно получить букву уÑтройÑтва карты памÑти" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "Ð²Ñ€ÐµÐ¼Ñ ÑƒÑтановлено" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "невозможно уÑтановить времÑ" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "" "Получен неподдерживаемый тип порта %i = 0x%x. Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "ÐкуумулÑтор разрÑжен, фотоаппарат выключен." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "ОШИБКÐ: неожиданное Ñообщение" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "ОШИБКÐ: наÑлоение Ñообщений" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "ОШИБКÐ: нарушение поÑледовательноÑти" #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "ОШИБКÐ: неожиданный тип пакета" #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "ОШИБКÐ: неверный формат ÑообщениÑ" #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "ОШИБКÐ: неожиданное Ñообщение2" #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Закачка файла..." #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Получение файла..." #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Ошибка Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑкороÑти." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ð°..." #: camlibs/canon/serial.c:1311 #, fuzzy msgid "Camera OK." msgstr "Фотоаппарат ОК.\n" #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "ПоиÑк фотоаппарата..." #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "УÑтановление ÑвÑзи Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼..." #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Ошибка ÑвÑзи 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Ðет ответа от фотоаппарата" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "ÐераÑпознанный ответ" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "Обнаружен \"%s\" или \"%s\"" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ \"%s\"" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Ошибка ÑвÑзи 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Ошибка ÑвÑзи 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Изменение ÑкороÑти... подождите..." #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Ошибка Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑкороÑти" #: camlibs/canon/serial.c:1454 #, fuzzy msgid "Error waiting for ACK during initialization, retrying" msgstr "Ошибка Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñигнала ACK во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð¹ инициализации" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Ошибка Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ñигнала ACK во Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Фотоаппарат подключен" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "ОШИБКÐ: обнаружены признаки неиÑправимой ошибки. Ðевозможно продолжать" #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "ОШИБКÐ: %d Ñлишком велик" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Получение миниатюры..." #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "ÐЕ РÐСПОЗÐÐÐО" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "Ðевозможно уÑтановить Ñоединение Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "Фотоаппарат уже был активен" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "Фотоаппарат выведен из ÑпÑщего режима" #: camlibs/canon/usb.c:252 #, fuzzy, c-format msgid "Initial camera response '%c' unrecognized" msgstr "не раÑпознан начальный ответ фотоаппарата %c/'%s')" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "Фотоаппарат не готов, неÑколько запроÑов идентификации завершилиÑÑŒ ошибкой: " "%s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "Фотоаппарат не готов, %s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "ПринимаютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ..." #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "ÐедоÑтаточно памÑти: необходимо %d байт(ов)." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "Ðевозможно прочеÑть файл \"%s\"" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "ÐедоÑтаточно памÑти: необходимо %ld байт(ов)." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "Закачка файла не удалаÑÑŒ." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "Обнаружен '%s'." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "Сообщаемого фооаппаратом Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ \"%s\" нет Ñреди извеÑтных моделей" #: camlibs/casio/casio-qv.c:152 #, fuzzy, c-format msgid "Image type %d not supported" msgstr "Данный формат Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ поддерживаетÑÑ" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "Изображение %s защищено от удалениÑ." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "" #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "ÐккумулÑтор" #: camlibs/casio/casio-qv.c:275 #, fuzzy msgid "Brightness" msgstr "ЯркоÑть-" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 #, fuzzy msgid "Too bright" msgstr "Copyright" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 #, fuzzy msgid "Too dark" msgstr "ÐедоÑтаточное оÑвещение" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "ОК" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "" msgstr[1] "" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" #: camlibs/clicksmart310/library.c:138 #, fuzzy msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "Базовый драйвер Aox\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" #: camlibs/digigr8/library.c:170 #, fuzzy msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "Базовый драйвер sq905\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Данный формат Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð½Ðµ поддерживаетÑÑ" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "КоличеÑтво изображений: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "ПоддерживаетÑÑ Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в корневую папку - запрошен ÑпиÑок файлов " "папки '%s'." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Проблема Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñла изображений" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Проблема Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñведений об изображении" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Ðеподдерживаемый метод Ñъёмки" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (аккумулÑтор зарÑжен на %d%%)" #: camlibs/dimera/dimera3500.c:455 #, fuzzy, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 вер. %s %d/%d %d:%d\n" "%d Ñнимков из примерно %d (выÑокое разрешение) или %d (низкое разрешение)\n" "ВозможноÑти фотоаппарата: %s, %s, %s, %s\n" "Карта памÑти - %s, %s и %s\n" "Выбрано разрешение %s\n" "Тип питаниÑ: %s, %s\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Ð’Ñпышка" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 #, fuzzy msgid "No Flash" msgstr "БЕЗ вÑпышки" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Ð”Ð²Ð¾Ð¹Ð½Ð°Ñ Ð¸Ñ€Ð¸ÑÐ¾Ð²Ð°Ñ Ð´Ð¸Ð°Ñ„Ñ€Ð°Ð³Ð¼Ð°" #: camlibs/dimera/dimera3500.c:468 #, fuzzy msgid "No Dual Iris" msgstr "БЕЗ двойной ириÑовой диафрагмы" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "Переключение разрешениÑ" #: camlibs/dimera/dimera3500.c:470 #, fuzzy msgid "No Resolution Switch" msgstr "БЕЗ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ" #: camlibs/dimera/dimera3500.c:472 #, fuzzy msgid "No Power Light" msgstr "БЕЗ индикатора питаниÑ" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "ВКЛ" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "ВЫКЛ" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "готов" #: camlibs/dimera/dimera3500.c:476 #, fuzzy msgid "Not ready" msgstr "ÐЕ готов" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "в режиме заполнениÑ" #: camlibs/dimera/dimera3500.c:478 #, fuzzy msgid "Not in fill mode" msgstr "ÐЕ в режиме заполнениÑ" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "низкое (320x240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "выÑокое (640x480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "Ñнаружи" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "внутри" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* ЧаÑто артефакты на изображениÑÑ… или Ñбои передачи данных\n" " возникают из-за недоÑтаточного зарÑда аккумулÑтора.\n" "* Сделанные Ñти аппаратом по удалённой команде Ñнимки \n" " хранÑÑ‚ÑÑ Ð²Ð¾ временном ОЗУ, и не запиÑываютÑÑ Ð½Ð° карту памÑти.\n" "* Выдержка при Ñъёмке фотографий может быть задана вручную\n" " или определÑтьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки.\n" "* Пока что качеÑтво изображений уÑтупает возможному.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "При Ñоздании Ñтой программы иÑпользовалаÑÑŒ\n" "Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ, Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð°Ñ‰Ð°Ñ Ñ„Ð¸Ñ€Ð¼Ðµ\n" "StarDot Technologies.\n" "\n" "Ðвтор:\n" " Brian Beattie \n" "Помощь оказывали:\n" " Chuck Homic \n" " Преобразование иÑходных данных Ñнимков в формат RGB\n" " Dan Fandrich \n" " Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ протоколе обмена, формате иÑходных данных,\n" " портирование Ð´Ð»Ñ gphoto2\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ ÐºÐ°Ñ€Ñ‚Ñ‹ памÑти" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "ÐедоÑтаточно памÑти" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "КопируетÑÑ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ..." #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Проблема ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "Копирование прервано пользователем" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Ошибка Ñъёмки" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Выдержка" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "ÐвтоматичеÑÐºÐ°Ñ Ð½Ð°Ñтройка выдержки во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ проÑмотра" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "ДлительноÑть выдержки во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ проÑмотра" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "ÐвтовÑпышка при Ñъёмке" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¿Ð¾Ñ€Ñ‚Ð°" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Ошибка ÑброÑа ÑоÑтоÑÐ½Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Проблема уÑтановки ÑкороÑти обмена данными Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Похоже, что Ñто модем, а не фотоаппарат" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "СоÑтавление ÑпиÑка файлов в '%s'..." #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "Получение ÑпиÑка папок в '%s'..." #: camlibs/directory/directory.c:381 #, fuzzy, c-format msgid "Could not get information about '%s' (%s)." msgstr "Ðевозможно получить ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ '%s' (%m)." #: camlibs/directory/directory.c:414 #, fuzzy, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Ðевозможно получить ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ '%s' в '%s' (%m)." #: camlibs/directory/directory.c:462 #, fuzzy, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Ðевозможно изменить Ð²Ñ€ÐµÐ¼Ñ Ñ„Ð°Ð¹Ð»Ð° '%s' в '%s' (%m)" #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Ðевозможно открыть '%s'." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "" #: camlibs/directory/directory.c:671 #, fuzzy, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "Ðевозможно удалить файл '%s' в папке '%s' (код ошибки %i: %m)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" "Программа ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñнимков Ð´Ð»Ñ Digital Dream Enigma 1.3. от " ", Ñделана на оÑнове драйвера spca50x.СпаÑибо " "авторам spca50x! Ðдаптировать ваш драйвер Ð´Ð»Ñ Ñтого аппарата было нетрудно! " #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "" #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Ðевозможно уÑтановить Ñоединение Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "" #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "" #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "" #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "" #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "" #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "Фотоаппарат отклонил команду." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "Самопроизвольный ÑÐ±Ñ€Ð¾Ñ ÑоÑтоÑÐ½Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "" #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Копирование..." #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "" #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "" #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "" #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "" #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "Фотоаппарат не поддерживает ÑкороÑть %i." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "" #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Ðа оÑнове fujiplay от Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "Ð‘Ð¸Ñ‚Ð¾Ð²Ð°Ñ ÑкороÑть %ld не поддерживаетÑÑ." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Дата и времÑ" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "ID" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "ВерÑиÑ:" #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Модель:" #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "ДоÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð¿Ð°Ð¼Ñть:" #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "Библиотека gsmart300 \n" "Till Adam \n" "Jerome Lodewyck \n" "Поддержка фотоаппаратов Mustek gSmart 300\n" "оÑновываетÑÑ Ð½Ð° неÑкольких модулÑÑ… gphoto2 и ÑпецификациÑÑ…, которые были " "любезно предоÑтавлены фирмой Mustek.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Ðевозможно ÑброÑить ÑоÑтоÑние фотоаппарата.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, fuzzy, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Фотоаппарат позволÑет удалить только поÑледний файл. Ð’ данном Ñлучае Ñто " "файл '%s'." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" #: camlibs/iclick/library.c:104 #, fuzzy, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "Модель вашего USB-фотоаппарата - Kodak EZ200.\n" "ЧиÑло изображений = %i\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" #: camlibs/iclick/library.c:134 #, fuzzy msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "Базовый драйвер Aox\n" "Theodore Kilgore \n" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Сделано Ñнимков : %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "КопируютÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ..." #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "КопируетÑÑ Ð¼Ð¸Ð½Ð¸Ð°Ñ‚ÑŽÑ€Ð°..." #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "Фотоаппарат JD11 доÑтаточно хорошо работает Ñ Ñтим драйвером.\n" "Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹ необходим Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ RS232 Ñо ÑкороÑтью 115 Кбит.\n" "Драйвер позволÑет копировать\n" "\n" " - миниатюры (64x48, формат PGM )\n" " - фотографии (640x480, формат PPM)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Драйвер фотоаппарата Jenoptik JD11.\n" "Ð”Ð»Ñ Ð¸ÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ð° применÑлиÑÑŒ WINE и IDA." #: camlibs/jd11/jd11.c:186 #, fuzzy msgid "JD11 Configuration" msgstr "КонфигурациÑ" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Прочие параметры" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "ПродолжительноÑть Ñверхдлинной выдержки" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "ÐаÑтройки цвета" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "КраÑный" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Зелёный" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Синий" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" #: camlibs/jl2005a/library.c:132 #, fuzzy msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° Mars MR97310\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" #: camlibs/jl2005c/library.c:161 #, fuzzy msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° Mars MR97310\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "Карта CompactFlash" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "Фотоаппарат Kodak DC120 иÑпользует формат KDC Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи изображений. Ð”Ð»Ñ " "проÑмотра полученных из аппарата изображений понадобитÑÑ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° \"kdc2tiff" "\". Её можно загрузить по адреÑу http://kdc2tiff.sourceforge.net" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Библиотека поддержки Kodak DC120\n" "Scott Fritzinger \n" "Библиотека Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼ Kodak DC120.\n" "(по многочиÑленным требованиÑм)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Получение данных..." #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "" #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Файл" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Тип файла" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Разрешение" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 x 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 x 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Сжатие файла" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Ñлабое (наилучшее качеÑтво)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Ñреднее (повышенное качеÑтво)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "выÑокое (хорошее качеÑтво)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Съёмка" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 мм" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 мм" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 мм" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 мм" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 мм" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Ðвто" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Ðет" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Вкл" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Выкл" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "СкороÑть порта" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Ðазвание альбома" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "" #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "" #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Отладка" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Выполнить предопределённую команду\n" "Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸." #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:506 #, fuzzy, c-format msgid "Total pictures taken: %d\n" msgstr "КоличеÑтво изображений: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:514 #, fuzzy, c-format msgid "Firmware: %d.%d\n" msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, fuzzy, c-format msgid "Filetype: JPEG (" msgstr "Тип файла" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "" #: camlibs/kodak/dc210/dc210.c:527 #, fuzzy, c-format msgid "low compression, " msgstr "Сжатие файла" #: camlibs/kodak/dc210/dc210.c:529 #, fuzzy, c-format msgid "medium compression, " msgstr "Сжатие файла" #: camlibs/kodak/dc210/dc210.c:531 #, fuzzy, c-format msgid "high compression, " msgstr "Сжатие файла" #: camlibs/kodak/dc210/dc210.c:533 #, fuzzy, c-format msgid "unknown compression %d, " msgstr "Сжатие файла" #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:558 #, fuzzy, c-format msgid "AC adapter is not connected.\n" msgstr "Карта памÑти защищена от запиÑи" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:580 #, fuzzy, c-format msgid "Unknown zoom mode %d\n" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ \"%s\"" #: camlibs/kodak/dc210/dc210.c:586 #, fuzzy, c-format msgid "Exposure compensation: %s\n" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/kodak/dc210/dc210.c:588 #, fuzzy, c-format msgid "Exposure compensation: %d\n" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/kodak/dc210/dc210.c:593 #, fuzzy, c-format msgid "Flash mode: auto, " msgstr "Режим вÑпышки" #: camlibs/kodak/dc210/dc210.c:595 #, fuzzy, c-format msgid "Flash mode: force, " msgstr "Режим вÑпышки" #: camlibs/kodak/dc210/dc210.c:597 #, fuzzy, c-format msgid "Flash mode: off\n" msgstr "Режим вÑпышки" #: camlibs/kodak/dc210/dc210.c:599 #, fuzzy, c-format msgid "Unknown flash mode %d, " msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ \"%s\"" #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:615 #, fuzzy, c-format msgid "No card in camera.\n" msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "РаботоÑпоÑобноÑть драйвера проверена Ñ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼ Kodak DC 215 Zoom Возможно " "он подойдёт Ð´Ð»Ñ DC 200 и DC 210. ЕÑли у Ð²Ð°Ñ ÐµÑть один из перечиÑленных " "фотоаппаратов, напишите, пожалуйÑта по адреÑу koltan@gmx.de и Ñообщите, вÑе " "ли функции доÑтупны Ñ Ñтим драйвером, и нет ли Ñ Ð½Ð¸Ð¼ проблем." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° Kodak DC215 Zoom.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "Ожидание..." #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Параметр 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Параметр 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Параметр 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Модель: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "СоÑтоÑние аккумулÑтора: %s, Блок питаниÑ: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "КоличеÑтво изображений: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° Kodak DC240\n" "Scott Fritzinger и Hubert Figuiere \n" "Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð² Kodak DC240, DC280, DC3400 и DC5000.\n" "Обновлено и перепиÑано Ð´Ð»Ñ gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "СлабаÑ" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "ПуÑто" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Ошибка" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "ОтÑоединён" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "ПодÑоединён" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "Карта памÑти вынута" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "Карта памÑти не открыта" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "Карта памÑти не отформатирована" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Ðет карты памÑти" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "ВыполнÑетÑÑ Ð´ÐµÐ¹Ñтвие. Данный фотоаппарат не поддерживает одновременное " "выполнение неÑкольких команд. ДождитеÑÑŒ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ операции.." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "ИзвеÑтные проблемы:\n" "\n" "1. ЕÑли Kodak DC3200 не получает команд в течение 10 Ñекунд, Произойдёт тайм-" "аут и потребуетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ. ЕÑли аппарат переÑтаёт " "реагировать, проÑто заново выберите его. При Ñтом произойдёт Ð½Ð¾Ð²Ð°Ñ " "инициализациÑ." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Драйвер Kodak DC3200\n" "Donn Morrison \n" "\n" "ВопроÑÑ‹ и отзывы принимаютÑÑ Ñ Ð±Ð»Ð°Ð³Ð¾Ð´Ð°Ñ€Ð½Ð¾Ñтью." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "Модель вашего USB-фотоаппарата - Kodak EZ200.\n" "ЧиÑло изображений = %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "Драйвер Kodak EZ200\n" "Bucas Jean-Francois \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Ошибка фокуÑировки." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Ошибка ириÑовой диафрагмы" #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "" #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "Ошибка контрольной Ñуммы ППЗУ" #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Ðет карты памÑти." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "ÐÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð° памÑти" #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "" #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "" #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "" #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "Карта памÑти защищена от запиÑи" #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "" #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Изображение защищено." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "ÐедоÑтаточное оÑвещение" #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Ошибка автофокуÑировки" #: camlibs/konica/konica.c:110 msgid "System error." msgstr "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "ÐедопуÑтимый параметр:" #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "" #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "" #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "" #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "ÐÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "" #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "" #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "Фотоаппарат только что Ñообщил об нераÑпознанной ошибке. ПожалуйÑта, " "Ñообщите об Ñтом %s и опишите, как и когда произошла Ñта ошибка: (0x%x,0x" "%x). Большое ÑпаÑибо!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Получение ÑпиÑка файлов..." #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "" #: camlibs/konica/library.c:338 #, fuzzy msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "Ðевозможно уÑтановить ÑвÑзь Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼. УбедитеÑÑŒ, что он включён и " "подÑоединён к компьютеру." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Модель: %s\n" "Серийный номер: %s,\n" "ВерÑÐ¸Ñ ÑƒÑтройÑтва: %i.%i\n" "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹: %i.%i\n" "ВерÑÐ¸Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑтичеÑкой программы: %i.%i\n" "Ðазвание: %s,\n" "Производитель: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Библиотека Konica\n" "Lutz Mueller \n" "Поддержка вÑех аппаратов Konica и некоторых моделей HP." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Получение конфигурации..." #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "ÐаÑтройка Konica" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "ПоÑтоÑнные наÑтройки" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾ÑпуÑка" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Интервал между Ñлайдами" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Разрешение" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "выÑокое (576 x 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Ñреднее (1152 x 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "выÑокое (1152 x 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "ЛокализациÑ" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Язык" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Ðе выбран" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "Формат вывода на ТВ" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "Ðе показывать ТВ меню" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Формат даты" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "МеÑÑц/День/Год" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "День/МеÑÑц/Год" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Год/МеÑÑц/День" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Вкл, уменьшение краÑноты глаз" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Ðвто, уменьшение краÑноты глаз" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "ФокуÑ" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "ФикÑ." #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Временные наÑтройки" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "ÐвтоÑпуÑк" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "ÐвтоÑпуÑк (Ñлед. Ñнимок только)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Ðорм." #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Ðе найдены данные локализации в '%s'" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "Слишком длинный файл локализации!" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "" #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "Данные повреждены." #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "Формат Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ %d не поддерживаетÑÑ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼ !" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "" #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "" #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "Закачка изображениÑ..." #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "" #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "" #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "" #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "Ðет ответа от фотоаппарата." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Ðизк." #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Средн." #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Ð’Ñ‹Ñок." #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "ЖК" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Значки" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "ОфиÑ" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "Дневной Ñвет" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "ЧёткоÑть" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "Резко" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "МÑгко" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "Цвет" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "Светлый" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "Глубокий" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "Чёрно-белый" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "Одиночный кадр" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "ПоÑледовательноÑть 9" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "Отображение даты" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "Где угодно" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "Режим воÑпроизведениÑ" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "Режим запиÑи" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "Везде" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "Блок питаниÑ" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "ВоÑпроизв." #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "ЗапиÑÑŒ" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "ДД/ММ/ГГГГ" #: camlibs/konica/qm150.c:1157 #, fuzzy, c-format msgid "YYYY/MM/DD" msgstr "ГГГГ/ММ/ДД" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "ММ/ДД/ГГГГ" #: camlibs/konica/qm150.c:1165 #, fuzzy, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Модель: %s\n" "ВмеÑтимоÑть: %iМ\n" "Питание: %s\n" "Ð’Ñ€ÐµÐ¼Ñ Ð´Ð¾ ÑамовыключениÑ: %iмин\n" "Режим: %s\n" "Изображений: %i/%i\n" "Отображение даты: %s\n" "Дата и времÑ: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Библиотека Konica Q-M150\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Поддержка французÑкой верÑии Konica Q-M150." #: camlibs/konica/qm150.c:1203 #, fuzzy, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "О Konica Q-M150:\n" "Данный аппарат не поддерживает внешнюю наÑтройку, \n" "поÑтому можно лишь проÑматривать текущие наÑтройки\n" "по команде конфигурации, но Ð½ÐµÐ»ÑŒÐ·Ñ Ð½Ð¸Ñ‡ÐµÐ³Ð¾ изменить\n" "\n" "Ð’ Ñлучае проблем Ñ Ñтим драйвером, напишите, пожалуйÑта,\n" "его автору по Ñлектронной почте.\n" "\n" "СпаÑибо за иÑпользование GPhoto2 и ОС UNIX/Linux.\n" #: camlibs/largan/lmini/largan.c:228 #, fuzzy msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Драйвер Largan\n" "Hubert Figuiere \n" "\n" "Поддержка фотоаппарата Largan Lmini.\n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" #: camlibs/mars/library.c:124 #, fuzzy, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Фотоаппарат Mars MR97310.\n" "Содержит %i Ñнимков. \n" msgstr[1] "" "Фотоаппарат Mars MR97310.\n" "Содержит %i Ñнимков. \n" #: camlibs/mars/library.c:135 #, fuzzy msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" "Драйвер поддерживает фотоаппараты Ñ Ð¼/Ñ Mars MR97310 (и его прÑмыми\n" "аналогами ??Pixart PACx07??) и должен работать Ñ gtkam.\n" "Драйвер позволÑет копировать\n" " - миниатюры Ð´Ð»Ñ gtkam\n" " - фотографии (640x480 или 320x240PPM) (??352x288 & 176x144??)\n" "Фотоаппарат не поддерживает удаление Ñнимков и закачку данных\n" "Драйвер не поддерживает режим дополнительного ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹.\n" "\n" "ЕÑли фотоаппарат хранит видеозапиÑи, то отдельные кадры можно получить\n" "в виде поÑледовательноÑти неподвижных фотографий.\n" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° Mars MR97310\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Модель:\t\t\tMinolta Dimage V (%s)\n" "ВерÑÐ¸Ñ ÑƒÑтройÑтва:\t%s\n" "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Режим работы:\t\t%s\n" "ÐšÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸:\t%s\n" "Данные выдержки:\t\t%d\n" "Дата указана:\t\t%s\n" "Дата:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Задержка ÑпуÑка:\t\t%s\n" "Уровень качеÑтва:\t%s\n" "Режим воÑпроизведениÑ/запиÑи:\t%s\n" "ID карты указан:\t\t%s\n" "ID карты:\t\t%d\n" "Режим вÑпышки:\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Ðвтономный" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Подключённый" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Да" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "Ðет" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Улучшенный" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Стандартный" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Ðвтомат\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "ÐŸÑ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð²Ñпышка\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Запрет вÑпышки\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "ЗарÑдка аккумулÑтора:\t\t%s\n" "ЧиÑло изображений:\t%d\n" "Минимальный оÑтавшийÑÑ Ð¾Ð±ÑŠÑ‘Ð¼:\t%d\n" "ЗанÑто:\t\t\t%s\n" "ЗарÑдка вÑпышки:\t\t%s\n" "СоÑтоÑние объектива:\t\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "ÐеполнаÑ" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "ПолнаÑ" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "ЗанÑто" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "Свободно" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "ЗарÑдка" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Готов" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Ðормальный\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "СоÑтоÑние карты:\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Защищена от запиÑи" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "ÐеÑовмеÑÑ‚Ð¸Ð¼Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð°" #: camlibs/minolta/dimagev/dimagev.c:406 #, c-format msgid "Bad value for card status %d" msgstr "" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° Minolta Dimage V\n" "%s\n" "Gus Hartmann \n" "ОÑобо благодарю фирму Minolta за предоÑтавленные Ñпецификации." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Ð’Ñпышка: Ðвто (Против краÑных глаз)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Ð’Ñпышка : Ðвто" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Ð’Ñпышка : Вкл. (Против краÑных глаз)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Ð’Ñпышка : Вкл." #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Ð’Ñпышка : Выкл." #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Ð’Ñпышка : не определено" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "" #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "ЗарÑд аккумулÑтора в норме." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "ЗарÑд аккумулÑтора недоÑтаточен." #: camlibs/mustek/mdc800.c:264 #, fuzzy msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Библиотека gPhoto2 Ð´Ð»Ñ Mustek MDC-800\n" "Henning Zabel \n" "ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ gphoto2 - Marcus Meissner \n" "Поддерживает поÑледовательный и USB протоколы." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "Библиотека coolshot v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Отключение фотоаппарата." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "КопируетÑÑ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ %s." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Закачка изображениÑ: %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "Размер файла ÑоÑтавлÑет %ld байт. МакÑимально возможный размер Ð´Ð»Ñ Ð·Ð°ÐºÐ°Ñ‡ÐºÐ¸: " "%i байт." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Закачка..." #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "УдалÑетÑÑ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ %s." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Библиотека gPhoto Ð´Ð»Ñ Panasonic DC1000\n" "Mariusz Zynel \n" "\n" "ОÑнована на программе Ð´Ð»Ñ dc1000, напиÑанной\n" "Fredrik Roubert и\n" "Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "КопируетÑÑ %s." #: camlibs/panasonic/dc1580.c:627 #, fuzzy msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Библиотека gPhoto Ð´Ð»Ñ Panasonic DC1580\n" "Mariusz Zynel \n" "\n" "ОÑнована на программе Ð´Ð»Ñ dc1000, напиÑанной\n" "Fredrik Roubert и\n" "Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "КопируетÑÑ '%s'..." #: camlibs/panasonic/l859/l859.c:582 #, fuzzy msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Фирма Panasonic впервые применила технологию Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñнимков PHOTOSHOT в " "Ñтой Ñерии аппаратов Palmcorder. Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÑохранÑÑŽÑ‚ÑÑ Ð² формате JPEG на " "внутренней карте памÑти и могут быть переданы на компьютер через " "вÑтроенныйпоÑледовательный порт. Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÑохранÑÑŽÑ‚ÑÑ Ð² одном из двух " "разрешений:ÐОРМÐЛЬÐОМ - 320x240 и ВЫСОКОМ - 640x480. Разрешение ПЗС матрицы " "равно лишь 300 тыÑÑчам пикÑелей, поÑтому качеÑтво получаемых Ñнимков " "оÑтавлÑет желатьлучшего." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "ИзвеÑтные проблемы:\n" "\n" "При возникновении ошибок передачи данных выполните ÑÐ±Ñ€Ð¾Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° и " "перезапуÑтите программу. Драйвер пока не может ÑамоÑтоÑтельно выходить из " "таких положений, оÑобенно, еÑли проблема возникает при ÑкороÑÑ‚ÑÑ… больших чем " "9600 и аппарат не выключаетÑÑ Ð¿Ð¾Ð»Ð½Ð¾Ñтью." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Драйвер Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " Ð’Ñего памÑти %8d байт.\n" " Свободно памÑти %8d байт.\n" " ЧиÑло файлов: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" " Ðвторы: Till Adam\n" "\n" "и: Miah Gregory\n" " " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "КопируетÑÑ Ñ„Ð°Ð¹Ð»..." #: camlibs/pccam600/library.c:249 #, fuzzy msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" " Ðвтор: Peter Kajberg\n" " Ñ-почта: \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Программа ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñнимков Ð´Ð»Ñ Ð½ÐµÑкольких моделей PolaroidПервоначальный " "автор - Peter Desnoyers , Ð°Ð´Ð°Ð¿Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ gphoto2 - " "Nathan Stenzel и Lutz Mueller " ".\n" "ТеÑтирование Polaroid 640SE - Michael Golden ." #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Модель: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 #, fuzzy msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "Программа ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹ Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð² оÑнованных на GrandTek " "98x.Первоначальный автор - Chris Byrne , Ð°Ð´Ð°Ð¿Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ " "gphoto2 - Lutz Mueller . УÑовершенÑтвование протокола и " "доработка длÑJenoptik JD350e выполнил Michael Trawny .ИÑправление ошибок - Marcus Meissner ." #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "КачеÑтво изображениÑ" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Размер изображениÑ" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Параметры вÑпышки" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "ÐвтоматичеÑкое отключение (минуты)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "нормальное" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "выÑокое" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "наилучшее" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "авто" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "вкл" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "выкл" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "воÑпроизведение" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "запиÑÑŒ" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "меню" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "аккумулÑтор" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "блок питаниÑ" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Получен неожиданный ответ" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Ошибка контрольной Ñуммы" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "" #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Программа ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹ Ð´Ð»Ñ Polaroid DC700. Первоначально напиÑана " "- Ryan Lantzer Ð´Ð»Ñ gphoto-4.x. ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ gphoto2 - " "Lutz Mueller ." #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Фотоаппарат" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Изображение" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Дата: %i/%02i/%02i %02i:%02i:%02i\n" "Сделано Ñнимков: %i\n" "ОÑталоÑÑŒ Ñнимков: %i\n" "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹: %s\n" "СкороÑть: %s\n" "ПамÑть: %i мегабайт\n" "Режим фотоаппарата: %s\n" "Уровень качеÑтва: %s\n" "Параметры вÑпышки: %s\n" "ИнформациÑ: %s\n" "Таймер: %s\n" "ЖК: %s\n" "ÐвтоматичеÑкое выключение: %i минут\n" "ИÑточник питаниÑ: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "" #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, fuzzy, c-format msgid "Unknown value %04x" msgstr "ÐеизвеÑтный тип файла %i." #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, fuzzy, c-format msgid "Unknown value %04d" msgstr "ÐеизвеÑтный тип файла %i." #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "неожиданный тип данных %i" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "Ручной" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 #, fuzzy msgid "Automatic" msgstr "Ðвтомат\n" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 #, fuzzy msgid "One-push Automatic" msgstr "Ðвтомат\n" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Ð’Ð¾Ð»ÑŒÑ„Ñ€Ð°Ð¼Ð¾Ð²Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "ОблачноÑть" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 #, fuzzy msgid "Shade" msgstr "Резко" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "Шаблон" #: camlibs/ptp2/config.c:1415 #, fuzzy msgid "Fluorescent Lamp 1" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:1416 #, fuzzy msgid "Fluorescent Lamp 2" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:1417 #, fuzzy msgid "Fluorescent Lamp 3" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:1418 #, fuzzy msgid "Fluorescent Lamp 4" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:1419 #, fuzzy msgid "Fluorescent Lamp 5" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 #, fuzzy msgid "Choose Color Temperature" msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "" #: camlibs/ptp2/config.c:1430 #, fuzzy msgid "Fluorescent: Warm White" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:1431 #, fuzzy msgid "Fluorescent: Cold White" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:1432 #, fuzzy msgid "Fluorescent: Day White" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:1433 #, fuzzy msgid "Fluorescent: Daylight" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 #, fuzzy msgid "JPEG Fine" msgstr "JPEG" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 #, fuzzy msgid "JPEG Normal" msgstr "Ðорм." #: camlibs/ptp2/config.c:1443 #, fuzzy msgid "RAW + JPEG Fine" msgstr "JPEG" #: camlibs/ptp2/config.c:1444 #, fuzzy msgid "RAW + JPEG Normal" msgstr "Ðорм." #: camlibs/ptp2/config.c:1449 #, fuzzy msgid "Single frame" msgstr "Одиночный кадр" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "" #: camlibs/ptp2/config.c:1452 #, fuzzy msgid "Self-timer" msgstr "ÐвтоÑпуÑк" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "" #: camlibs/ptp2/config.c:1735 #, fuzzy msgid "undefined" msgstr "наилучшее" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 #, fuzzy msgid "Undefined" msgstr "выÑокое" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "ПользовательÑкий" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 #, fuzzy msgid "Sports" msgstr "Точечный" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "" #: camlibs/ptp2/config.c:1780 #, fuzzy msgid "Flash Off" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:1788 #, fuzzy msgid "red eye suppression" msgstr "Вкл, уменьшение краÑноты глаз" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "" #: camlibs/ptp2/config.c:1790 #, fuzzy msgid "auto + red eye suppression" msgstr "Ðвто, уменьшение краÑноты глаз" #: camlibs/ptp2/config.c:1791 #, fuzzy msgid "on + red eye suppression" msgstr "Вкл, уменьшение краÑноты глаз" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 msgid "Commander" msgstr "" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 #, fuzzy msgid "Auto Aperture" msgstr "Диафрагма" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 #, fuzzy msgid "Full Manual" msgstr "Ручной" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 #, fuzzy msgid "MF (fixed)" msgstr "ФикÑ." #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "" #: camlibs/ptp2/config.c:1928 #, fuzzy msgid "Center-weighted" msgstr "Центрально-взвешенный" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "" #: camlibs/ptp2/config.c:1933 #, fuzzy msgid "Center-weighted average" msgstr "Центрально-взвешенный" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "" #: camlibs/ptp2/config.c:1947 #, fuzzy msgid "User defined 1" msgstr "наилучшее" #: camlibs/ptp2/config.c:1948 #, fuzzy msgid "User defined 2" msgstr "наилучшее" #: camlibs/ptp2/config.c:1949 #, fuzzy msgid "User defined 3" msgstr "наилучшее" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 #, fuzzy msgid "Multiple Focusing Points, Auto" msgstr "Точка фокуÑировки" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 #, fuzzy msgid "Multiple Focusing Points (Right)" msgstr "Точка фокуÑировки" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 #, fuzzy msgid "Multiple Focusing Points (Left)" msgstr "Точка фокуÑировки" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 #, fuzzy msgid "Large" msgstr "Изображение" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 #, fuzzy msgid "Medium 1" msgstr "Средн." #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 #, fuzzy msgid "Medium 2" msgstr "Средн." #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 #, fuzzy msgid "Medium 3" msgstr "Средн." #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "" #: camlibs/ptp2/config.c:2092 #, fuzzy msgid "Setting 4" msgstr "Параметры вÑпышки" #: camlibs/ptp2/config.c:2093 #, fuzzy msgid "Setting 5" msgstr "Параметры вÑпышки" #: camlibs/ptp2/config.c:2094 #, fuzzy msgid "Setting 6" msgstr "Параметры вÑпышки" #: camlibs/ptp2/config.c:2095 #, fuzzy msgid "Setting 7" msgstr "Параметры вÑпышки" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, fuzzy, c-format msgid "Unknown %d" msgstr "ÐеизвеÑтно" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 #, fuzzy msgid "Factory Default" msgstr "Дневной" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "" #: camlibs/ptp2/config.c:2246 msgid "Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "" #: camlibs/ptp2/config.c:2261 #, fuzzy msgid "mRAW + Large Normal JPEG" msgstr "Ðорм." #: camlibs/ptp2/config.c:2262 #, fuzzy msgid "sRAW + Large Normal JPEG" msgstr "Ðорм." #: camlibs/ptp2/config.c:2264 #, fuzzy msgid "mRAW + Medium Normal JPEG" msgstr "Ðорм." #: camlibs/ptp2/config.c:2265 #, fuzzy msgid "sRAW + Medium Normal JPEG" msgstr "Ðорм." #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 #, fuzzy msgid "mRAW + Small Normal JPEG" msgstr "Ðорм." #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 #, fuzzy msgid "sRAW + Small Normal JPEG" msgstr "Ðорм." #: camlibs/ptp2/config.c:2272 #, fuzzy msgid "RAW + Smaller JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2273 msgid "mRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2274 msgid "sRAW + Smaller JPEG" msgstr "" #: camlibs/ptp2/config.c:2275 #, fuzzy msgid "RAW + Tiny JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2276 #, fuzzy msgid "mRAW + Tiny JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2277 #, fuzzy msgid "sRAW + Tiny JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "" #: camlibs/ptp2/config.c:2305 #, fuzzy msgid "Timer 10 sec" msgstr "Ðвтономный" #: camlibs/ptp2/config.c:2306 #, fuzzy msgid "Timer 2 sec" msgstr "Ðвтономный" #: camlibs/ptp2/config.c:2307 #, fuzzy msgid "Single silent" msgstr "Одиночный кадр" #: camlibs/ptp2/config.c:2308 #, fuzzy msgid "Continuous silent" msgstr "Режим замера" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, fuzzy, c-format msgid "Auto ISO" msgstr "Ðвто" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, fuzzy, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "ЭкÑпокоррекциÑ" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, fuzzy, c-format msgid "%d Multi Frame Noise Reduction" msgstr "ЭкÑпокоррекциÑ" #: camlibs/ptp2/config.c:2453 #, fuzzy msgid "Multi Frame Noise Reduction" msgstr "ЭкÑпокоррекциÑ" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "ÐвтоÑпуÑк" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "" #: camlibs/ptp2/config.c:2868 #, fuzzy msgid "Automatic (No Flash)" msgstr "Ðвтомат\n" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 #, fuzzy msgid "Movie" msgstr "Звук" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 #, fuzzy msgid "Sports Action" msgstr "Точечный" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "" #: camlibs/ptp2/config.c:2880 #, fuzzy msgid "Night Scene" msgstr "Светлый" #: camlibs/ptp2/config.c:2881 #, fuzzy msgid "Hand-held Twilight" msgstr "Дневной Ñвет" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 #, fuzzy msgid "Picture Effect" msgstr "ÐаÑтройки изображениÑ" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "" #: camlibs/ptp2/config.c:2893 #, fuzzy msgid "Pet Portrait" msgstr "КонтраÑÑ‚" #: camlibs/ptp2/config.c:2894 #, fuzzy msgid "Candlelight" msgstr "Дневной Ñвет" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "" #: camlibs/ptp2/config.c:3032 #, fuzzy msgid "Flourescent" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 msgid "Effects" msgstr "" #: camlibs/ptp2/config.c:3075 #, fuzzy msgid "U1" msgstr "1x" #: camlibs/ptp2/config.c:3076 #, fuzzy msgid "U2" msgstr "2x" #: camlibs/ptp2/config.c:3104 #, fuzzy msgid "Back Light" msgstr "ЯркоÑть ЖК-Ñкрана" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 #, fuzzy msgid "Single Shot" msgstr "Одиночный кадр" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 #, fuzzy msgid "Timer" msgstr "ÐвтоÑпуÑк" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 #, fuzzy msgid "Delayed Remote" msgstr "Ðвтономный" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "" #: camlibs/ptp2/config.c:3125 #, fuzzy msgid "Selftimer 2s" msgstr "ÐвтоÑпуÑк" #: camlibs/ptp2/config.c:3126 #, fuzzy msgid "Selftimer 10s" msgstr "ÐвтоÑпуÑк" #: camlibs/ptp2/config.c:3127 #, fuzzy msgid "Bracketing C 0.3 Steps" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3128 #, fuzzy msgid "Bracketing C 0.7 Steps" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3129 #, fuzzy msgid "Bracketing C 1.0 Steps" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3130 #, fuzzy msgid "Bracketing C 2.0 Steps" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3131 #, fuzzy msgid "Bracketing C 3.0 Steps" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3132 #, fuzzy msgid "Bracketing S 0.3 Steps" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3133 #, fuzzy msgid "Bracketing S 0.7 Steps" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3134 #, fuzzy msgid "Bracketing S 1.0 Steps" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3135 #, fuzzy msgid "Bracketing S 2.0 Steps" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3136 #, fuzzy msgid "Bracketing S 3.0 Steps" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3137 #, fuzzy msgid "Bracketing WB Lo" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3138 #, fuzzy msgid "Bracketing WB Hi" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 #, fuzzy msgid "Centre-spot" msgstr "Съёмка" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 #, fuzzy msgid "Single Area" msgstr "Одиночный кадр" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "" #: camlibs/ptp2/config.c:3152 #, fuzzy msgid "Single-area AF" msgstr "Одиночный кадр" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "" #: camlibs/ptp2/config.c:3154 msgid "Group-dynamic AF" msgstr "" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "" #: camlibs/ptp2/config.c:3165 #, fuzzy msgid "3D Tracking" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:3171 #, fuzzy msgid "sRGB (portrait)" msgstr "КонтраÑÑ‚" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 #, fuzzy msgid "Centre" msgstr "Съёмка" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 #, fuzzy msgid "Bottom" msgstr "Приближение" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 #, fuzzy msgid "Right" msgstr "Светлый" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 #, fuzzy msgid "Center Weighted" msgstr "Центрально-взвешенный" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "" #: camlibs/ptp2/config.c:3259 #, fuzzy msgid "Center Spot" msgstr "Центрально-взвешенный" #: camlibs/ptp2/config.c:3266 #, fuzzy msgid "Automatic Flash" msgstr "Ðвтомат\n" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 #, fuzzy msgid "Fill flash" msgstr "Ð’Ñпышка" #: camlibs/ptp2/config.c:3269 #, fuzzy msgid "Red-eye automatic" msgstr "Уменьшение Ñффекта краÑных глаз" #: camlibs/ptp2/config.c:3270 #, fuzzy msgid "Red-eye fill" msgstr "Уменьшение Ñффекта краÑных глаз" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 #, fuzzy msgid "External sync" msgstr "Ñнаружи" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 #, fuzzy msgid "Auto Slow Sync" msgstr "Ð—Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 #, fuzzy msgid "Red-eye Reduction + Slow Sync" msgstr "Уменьшение Ñффекта краÑных глаз" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3277 #, fuzzy msgid "Red-eye reduction" msgstr "Уменьшение Ñффекта краÑных глаз" #: camlibs/ptp2/config.c:3278 #, fuzzy msgid "Red-eye reduction with slow sync" msgstr "Уменьшение Ñффекта краÑных глаз" #: camlibs/ptp2/config.c:3279 #, fuzzy msgid "Slow sync" msgstr "Ð—Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Ð—Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Чёрно-белый" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "" #: camlibs/ptp2/config.c:3298 #, fuzzy msgid "Color sketch" msgstr "Режим цвета" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "" #: camlibs/ptp2/config.c:3302 #, fuzzy msgid "High key" msgstr "Ð’Ñ‹Ñок." #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 #, fuzzy msgid "infinite" msgstr "БеÑконечноÑть" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "" #: camlibs/ptp2/config.c:3772 #, fuzzy msgid "Normal-area AF" msgstr "Ðорм." #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "" #: camlibs/ptp2/config.c:3778 #, fuzzy msgid "Single-servo AF" msgstr "Одиночный кадр" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 #, fuzzy msgid "Manual Focus" msgstr "Ручной" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 #, fuzzy msgid "AE/AF Lock" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 #, fuzzy msgid "1 minute" msgstr "41 мм" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 #, fuzzy msgid "10 minutes" msgstr "41 мм" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "" #: camlibs/ptp2/config.c:3828 #, fuzzy msgid "8 mm" msgstr "58 мм" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "" #: camlibs/ptp2/config.c:3842 #, fuzzy msgid "1" msgstr "1x" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 #, fuzzy msgid "2" msgstr "2x" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 #, fuzzy msgid "4" msgstr "4x" #: camlibs/ptp2/config.c:3845 #, fuzzy msgid "8" msgstr "8x" #: camlibs/ptp2/config.c:3846 #, fuzzy msgid "15" msgstr "1,5" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "" #: camlibs/ptp2/config.c:3855 #, fuzzy msgid "20s" msgstr "2,0" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 #, fuzzy msgid "15s" msgstr "1,5" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "" #: camlibs/ptp2/config.c:3858 #, fuzzy msgid "10s" msgstr "1,0" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "" #: camlibs/ptp2/config.c:3916 #, fuzzy msgid "15 minutes" msgstr "41 мм" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 #, fuzzy msgid "Sharper" msgstr "Резко" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 #, fuzzy msgid "Softer" msgstr "МÑгко" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 #, fuzzy msgid "Direct Print" msgstr "Каталог ÑущеÑтвует" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 #, fuzzy msgid "Medium Low" msgstr "Средн." #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 #, fuzzy msgid "Medium high" msgstr "Средн." #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 #, fuzzy msgid "Low contrast" msgstr "КонтраÑÑ‚" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 #, fuzzy msgid "Medium High" msgstr "Средн." #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "" #: camlibs/ptp2/config.c:3976 #, fuzzy msgid "Automatic Macro" msgstr "Ðвтомат\n" #: camlibs/ptp2/config.c:3980 #, fuzzy msgid "Single-Servo AF" msgstr "Одиночный кадр" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "" #: camlibs/ptp2/config.c:3989 #, fuzzy msgid "One Shot" msgstr "Одиночный кадр" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 #, fuzzy msgid "AI Focus" msgstr "ФокуÑ" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 #, fuzzy msgid "Fluorescent H" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 #, fuzzy msgid "Custom Whitebalance PC-1" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 #, fuzzy msgid "Custom Whitebalance PC-2" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 #, fuzzy msgid "Custom Whitebalance PC-3" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "" #: camlibs/ptp2/config.c:4034 #, fuzzy msgid "Shadow" msgstr "Резко" #: camlibs/ptp2/config.c:4118 #, fuzzy msgid "Low sharpening" msgstr "ЗарÑдка" #: camlibs/ptp2/config.c:4120 #, fuzzy msgid "Black & white" msgstr "Чёрно-белый" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 #, fuzzy msgid "AE & Flash" msgstr "БЕЗ вÑпышки" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 #, fuzzy msgid "AE only" msgstr "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 #, fuzzy msgid "Flash only" msgstr "ПамÑть ППЗУ" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 #, fuzzy msgid "WB bracketing" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:4221 #, fuzzy msgid "ADL bracketing" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 #, fuzzy msgid "Remote Mirror Up" msgstr "Дата ВремÑ" #: camlibs/ptp2/config.c:4248 #, fuzzy msgid "Application Mode 0" msgstr "Режим работы" #: camlibs/ptp2/config.c:4249 #, fuzzy msgid "Application Mode 1" msgstr "Режим работы" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "" #: camlibs/ptp2/config.c:4286 #, fuzzy msgid "Low sensitivity" msgstr "Ñлабое (наилучшее качеÑтво)" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "" #: camlibs/ptp2/config.c:4378 #, fuzzy msgid "Flash/speed" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "" #: camlibs/ptp2/config.c:4380 #, fuzzy msgid "Flash/aperture" msgstr "Диафрагма" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 #, fuzzy msgid "NEF+Fine" msgstr "Улучшенный" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 #, fuzzy msgid "NEF+Normal" msgstr "Ðорм." #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "" #: camlibs/ptp2/config.c:4575 #, fuzzy msgid "RAW+JPEG" msgstr "JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "" #: camlibs/ptp2/config.c:4642 #, fuzzy msgid "Optimal quality" msgstr "КачеÑтво изображениÑ" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "" #: camlibs/ptp2/config.c:4659 #, fuzzy msgid "1/320s (Auto FP)" msgstr "Ðвто" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "" #: camlibs/ptp2/config.c:4695 #, fuzzy msgid "3 (Normal)" msgstr "Ðорм." #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 #, fuzzy msgid "AE/AF lock" msgstr "ФикÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 #, fuzzy msgid "AE lock only" msgstr "ФикÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "" #: camlibs/ptp2/config.c:4780 #, fuzzy msgid "Preview" msgstr "Предыдущий" #: camlibs/ptp2/config.c:4781 #, fuzzy msgid "FV lock" msgstr "ФикÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/config.c:4785 #, fuzzy msgid "AE lock (hold)" msgstr "ФикÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/config.c:4788 #, fuzzy msgid "Bracketing burst" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:4789 #, fuzzy msgid "Matrix metering" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:4790 #, fuzzy msgid "Center-weighted metering" msgstr "Центрально-взвешенный" #: camlibs/ptp2/config.c:4791 #, fuzzy msgid "Spot metering" msgstr "Точечный режим замера" #: camlibs/ptp2/config.c:4792 #, fuzzy msgid "Playback" msgstr "ВоÑпроизв." #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "" #: camlibs/ptp2/config.c:4797 #, fuzzy msgid "1 step spd/aperture" msgstr "Диафрагма" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "" #: camlibs/ptp2/config.c:4799 #, fuzzy msgid "Viewfinder virtual horizont" msgstr "Режим видоиÑкателÑ" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "" #: camlibs/ptp2/config.c:4871 #, fuzzy msgid "Unknown value" msgstr "ÐеизвеÑтно" #: camlibs/ptp2/config.c:4999 #, fuzzy msgid "Nikon changeafarea works only in LiveView mode." msgstr "Фотоаппарат не поддерживает ÑкороÑть %i." #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "" #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "" #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "" #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 msgid "Press Full" msgstr "" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 #, fuzzy msgid "Release Half" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 #, fuzzy msgid "Release Full" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 #, fuzzy msgid "Press 1" msgstr "Шаблон" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 #, fuzzy msgid "Press 2" msgstr "Шаблон" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 #, fuzzy msgid "Press 3" msgstr "Шаблон" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 #, fuzzy msgid "Release 1" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 #, fuzzy msgid "Release 2" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 #, fuzzy msgid "Release 3" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" #: camlibs/ptp2/config.c:5923 #, fuzzy msgid "Internal RAM" msgstr "внутри" #: camlibs/ptp2/config.c:5924 #, fuzzy msgid "Memory card" msgstr "Ðет карты памÑти" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "" #: camlibs/ptp2/config.c:6092 #, fuzzy msgid "Display" msgstr "Отображение даты" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "" #: camlibs/ptp2/config.c:6359 #, fuzzy msgid "Default gateway" msgstr "Дневной" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "" #: camlibs/ptp2/config.c:6412 #, fuzzy msgid "List Wifi profiles" msgstr "ПоказатьÑпиÑок вÑех файлов" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "" #: camlibs/ptp2/config.c:6521 #, fuzzy msgid "Power Down" msgstr "Ð­ÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ Ñнергии" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 #, fuzzy msgid "Focus Lock" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 #, fuzzy msgid "Bulb Mode" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6530 #, fuzzy msgid "Set Nikon Autofocus area" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6531 #, fuzzy msgid "Set Nikon Control Mode" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "" #: camlibs/ptp2/config.c:6537 #, fuzzy msgid "Nikon Viewfinder" msgstr "Режим видоиÑкателÑ" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 #, fuzzy msgid "Movie Capture" msgstr "Съёмка" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 #, fuzzy msgid "Serial Number" msgstr "%sСерийный номер: %s\n" #: camlibs/ptp2/config.c:6548 #, fuzzy msgid "Camera Manufacturer" msgstr "%sПроизводитель: %s\n" #: camlibs/ptp2/config.c:6550 #, fuzzy msgid "Device Version" msgstr "ВерÑиÑ:" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "" #: camlibs/ptp2/config.c:6556 #, fuzzy msgid "PTP Version" msgstr "ВерÑиÑ:" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 #, fuzzy msgid "DPOF Version" msgstr "ВерÑиÑ:" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 #, fuzzy msgid "AC Power" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:6559 #, fuzzy msgid "External Flash" msgstr "Ñнаружи" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "ЗарÑдка аккумулÑтора" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 #, fuzzy msgid "Camera Orientation" msgstr "Прочие параметры" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 #, fuzzy msgid "Flash Open" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 #, fuzzy msgid "Flash Charged" msgstr "Карта CompactFlash" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 #, fuzzy msgid "Lens Name" msgstr "Режим объектива" #: camlibs/ptp2/config.c:6570 #, fuzzy msgid "Shutter Counter" msgstr "СкороÑть ISO" #: camlibs/ptp2/config.c:6571 #, fuzzy msgid "Available Shots" msgstr "ДоÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð¿Ð°Ð¼Ñть:" #: camlibs/ptp2/config.c:6572 #, fuzzy msgid "Focal Length Minimum" msgstr "Длина фокуÑа" #: camlibs/ptp2/config.c:6573 #, fuzzy msgid "Focal Length Maximum" msgstr "Длина фокуÑа" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "" #: camlibs/ptp2/config.c:6576 #, fuzzy msgid "Low Light" msgstr "Светлый" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 #, fuzzy msgid "Light Meter" msgstr "Светлый" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 #, fuzzy msgid "AF Locked" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 #, fuzzy msgid "FV Locked" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 #, fuzzy msgid "Camera Date and Time" msgstr "Дата и времÑ" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "" #: camlibs/ptp2/config.c:6591 #, fuzzy msgid "Image Comment" msgstr "Изображение защищено." #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 #, fuzzy msgid "Enable Image Comment" msgstr "Изображение защищено." #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 #, fuzzy msgid "LCD Off Time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 #, fuzzy msgid "Recording Media" msgstr "Режим запиÑи" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 #, fuzzy msgid "Camera Output" msgstr "Фотоаппарат ОК.\n" #: camlibs/ptp2/config.c:6601 #, fuzzy msgid "Recording Destination" msgstr "Режим запиÑи" #: camlibs/ptp2/config.c:6602 #, fuzzy msgid "EVF Mode" msgstr "Светодиод" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "Ðвтор" #: camlibs/ptp2/config.c:6607 #, fuzzy msgid "CCD Number" msgstr "%sСерийный номер: %s\n" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Copyright" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 #, fuzzy msgid "Flicker Reduction" msgstr "Уменьшение Ñффекта краÑных глаз" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "" #: camlibs/ptp2/config.c:6613 #, fuzzy msgid "Focus Info" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6614 #, fuzzy msgid "Focus Area" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6615 #, fuzzy msgid "Auto Power Off" msgstr "ÐвтоматичеÑкое отключение (минуты)" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 #, fuzzy msgid "Capture Target" msgstr "Съёмка" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 #, fuzzy msgid "Image Format SD" msgstr "Формат даты" #: camlibs/ptp2/config.c:6634 #, fuzzy msgid "Image Format CF" msgstr "Формат даты" #: camlibs/ptp2/config.c:6636 #, fuzzy msgid "Image Format Ext HD" msgstr "Формат даты" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "СкороÑть ISO" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 #, fuzzy msgid "ISO Auto" msgstr "Ðвто" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 #, fuzzy msgid "WhiteBalance" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6654 #, fuzzy msgid "WhiteBalance Adjust A" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6655 #, fuzzy msgid "WhiteBalance Adjust B" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6656 #, fuzzy msgid "WhiteBalance X A" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6657 #, fuzzy msgid "WhiteBalance X B" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 #, fuzzy msgid "Color Model" msgstr "Режим цвета" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 #, fuzzy msgid "Color Space" msgstr "Режим цвета" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "" #: camlibs/ptp2/config.c:6669 #, fuzzy msgid "Auto Focus Mode 2" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "Ð’Ñпомогательное оÑвещение" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 #, fuzzy msgid "Flash Compensation" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 #, fuzzy msgid "AEB Exposure Compensation" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/config.c:6685 #, fuzzy msgid "Nikon Flash Mode" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 #, fuzzy msgid "Flash Commander Mode" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:6687 #, fuzzy msgid "Flash Commander Power" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 #, fuzzy msgid "Flash Command Self Mode" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 #, fuzzy msgid "Flash Command Self Compensation" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 #, fuzzy msgid "Flash Command A Mode" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 #, fuzzy msgid "Flash Command A Compensation" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 #, fuzzy msgid "Flash Command B Mode" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 #, fuzzy msgid "Flash Command B Compensation" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "ЧиÑло F" #: camlibs/ptp2/config.c:6702 #, fuzzy msgid "Movie F-Number" msgstr "ЧиÑло F" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "ФокуÑное раÑÑтоÑние" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "Длина фокуÑа" #: camlibs/ptp2/config.c:6710 #, fuzzy msgid "Focus Mode 2" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6712 #, fuzzy msgid "Continuous AF" msgstr "Режим замера" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 #, fuzzy msgid "Exposure Program" msgstr "Режим программируемой выдержки" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 #, fuzzy msgid "Scene Mode" msgstr "Режим объектива" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 #, fuzzy msgid "HDR Mode" msgstr "Светодиод" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "" #: camlibs/ptp2/config.c:6725 #, fuzzy msgid "Canon Shooting Mode" msgstr "Режим замера" #: camlibs/ptp2/config.c:6726 #, fuzzy msgid "Canon Auto Exposure Mode" msgstr "Запоминание наÑтроек выдержки" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 #, fuzzy msgid "Drive Mode" msgstr "Светодиод" #: camlibs/ptp2/config.c:6728 #, fuzzy msgid "Picture Style" msgstr "ÐаÑтройки изображениÑ" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "Режим ÑкÑпозамера" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "Точка фокуÑировки" #: camlibs/ptp2/config.c:6738 #, fuzzy msgid "Capture Delay" msgstr "Съёмка" #: camlibs/ptp2/config.c:6742 #, fuzzy msgid "Shutter Speed 2" msgstr "СкороÑть ISO" #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "СкороÑть ISO" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "Режим замера" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 #, fuzzy msgid "AF Distance" msgstr "ФокуÑное раÑÑтоÑние" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 #, fuzzy msgid "Focus Area Wrap" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6751 #, fuzzy msgid "Exposure Delay Mode" msgstr "Режим программируемой выдержки" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 #, fuzzy msgid "Exposure Lock" msgstr "Выдержка" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 #, fuzzy msgid "Flash Sign" msgstr "Параметры вÑпышки" #: camlibs/ptp2/config.c:6759 #, fuzzy msgid "Modelling Flash" msgstr "ÐŸÑ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð²Ñпышка\n" #: camlibs/ptp2/config.c:6760 #, fuzzy msgid "Viewfinder Grid" msgstr "Режим видоиÑкателÑ" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 #, fuzzy msgid "Image Review" msgstr "Размер изображениÑ" #: camlibs/ptp2/config.c:6762 #, fuzzy msgid "Image Rotation Flag" msgstr "Прочие параметры" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 #, fuzzy msgid "Flash Mode Manual Power" msgstr "Режим вÑпышки" #: camlibs/ptp2/config.c:6765 #, fuzzy msgid "Auto Focus Area" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 #, fuzzy msgid "Flash Exposure Compensation" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 #, fuzzy msgid "Bracketing" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:6769 #, fuzzy msgid "Bracket Mode" msgstr "Макрорежим" #: camlibs/ptp2/config.c:6770 #, fuzzy msgid "EV Step" msgstr "СкороÑть ISO" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 #, fuzzy msgid "Bracket Set" msgstr "Ðвто, уменьшение краÑноты глаз" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 #, fuzzy msgid "Auto White Balance Bias" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 #, fuzzy msgid "Tungsten White Balance Bias" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 #, fuzzy msgid "Fluorescent White Balance Bias" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 #, fuzzy msgid "Daylight White Balance Bias" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 #, fuzzy msgid "Flash White Balance Bias" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 #, fuzzy msgid "Cloudy White Balance Bias" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 #, fuzzy msgid "Shady White Balance Bias" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6794 #, fuzzy msgid "White Balance Bias Preset Nr" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6795 #, fuzzy msgid "White Balance Bias Preset 0" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6796 #, fuzzy msgid "White Balance Bias Preset 1" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6797 #, fuzzy msgid "White Balance Bias Preset 2" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6798 #, fuzzy msgid "White Balance Bias Preset 3" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6799 #, fuzzy msgid "White Balance Bias Preset 4" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/config.c:6800 #, fuzzy msgid "Selftimer Delay" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾ÑпуÑка" #: camlibs/ptp2/config.c:6801 #, fuzzy msgid "Center Weight Area" msgstr "Центрально-взвешенный" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 msgid "Flash Shutter Speed" msgstr "" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 #, fuzzy msgid "Remote Timeout" msgstr "Дата ВремÑ" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 #, fuzzy msgid "Remote Mode" msgstr "Режим запиÑи" #: camlibs/ptp2/config.c:6805 #, fuzzy msgid "Application Mode" msgstr "Режим работы" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 #, fuzzy msgid "Sharpening" msgstr "ЗарÑдка" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 #, fuzzy msgid "Tone Compensation" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 #, fuzzy msgid "Saturation" msgstr "КонфигурациÑ" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 msgid "Hue Adjustment" msgstr "" #: camlibs/ptp2/config.c:6811 #, fuzzy msgid "Auto Exposure Bracketing" msgstr "ЭкÑпозамер" #: camlibs/ptp2/config.c:6812 #, fuzzy msgid "Movie Sound" msgstr "Звук" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 msgid "Manual Movie Setting" msgstr "" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 #, fuzzy msgid "Video Mode" msgstr "Режим видоиÑкателÑ" #: camlibs/ptp2/config.c:6835 #, fuzzy msgid "Meter Off Time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 #, fuzzy msgid "Movie Quality" msgstr "КачеÑтво изображениÑ" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 #, fuzzy msgid "Minimum Shutter Speed" msgstr "СкороÑть ISO" #: camlibs/ptp2/config.c:6862 #, fuzzy msgid "Movie Resolution" msgstr "Разрешение" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 #, fuzzy msgid "Continuous Shooting Speed Slow" msgstr "СкороÑть ISO" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "" #: camlibs/ptp2/config.c:6869 #, fuzzy msgid "Focus Metering" msgstr "Точечный режим замера" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 #, fuzzy msgid "High ISO Noise Reduction" msgstr "ЭкÑпокоррекциÑ" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 #, fuzzy msgid "Continuous Shooting Speed High" msgstr "СкороÑть ISO" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 #, fuzzy msgid "JPEG Compression Policy" msgstr "Сжатие" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 #, fuzzy msgid "AF Lock On" msgstr "Режим фокуÑировки" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "ЭкÑпокоррекциÑ" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 #, fuzzy msgid "Raw Compression" msgstr "Сжатие" #: camlibs/ptp2/config.c:6922 #, fuzzy msgid "Image Quality 2" msgstr "КачеÑтво изображениÑ" #: camlibs/ptp2/config.c:6944 #, fuzzy msgid "Image Settings" msgstr "Прочие параметры" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 msgid "Other PTP Device Properties" msgstr "" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "" #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "" #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "" #: camlibs/ptp2/library.c:2537 msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "" #: camlibs/ptp2/library.c:2545 #, fuzzy msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "Фотоаппарат не поддерживает ÑкороÑть %i." #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "" #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "" #: camlibs/ptp2/library.c:2799 #, fuzzy msgid "Sorry, your camera does not support Nikon capture" msgstr "Фотоаппарат не поддерживает ÑкороÑть %i." #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 msgid "Canon EOS Half-Press failed" msgstr "" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 msgid "Canon EOS Half-Release failed" msgstr "" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 msgid "Canon EOS Full-Press failed" msgstr "" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 msgid "Canon EOS Full-Release failed" msgstr "" #: camlibs/ptp2/library.c:3106 #, fuzzy msgid "Canon EOS Capture failed" msgstr "Съёмка" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" #: camlibs/ptp2/library.c:3332 msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 #, fuzzy msgid "Canon Capture failed" msgstr "Съёмка" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "чтение и запиÑÑŒ" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, fuzzy, c-format msgid "Manufacturer: %s\n" msgstr "%sПроизводитель: %s\n" #: camlibs/ptp2/library.c:4800 #, fuzzy, c-format msgid "Model: %s\n" msgstr "Модель:" #: camlibs/ptp2/library.c:4802 #, fuzzy, c-format msgid " Version: %s\n" msgstr "ВерÑиÑ: %s\n" #: camlibs/ptp2/library.c:4805 #, fuzzy, c-format msgid " Serial Number: %s\n" msgstr "%sСерийный номер: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "" #: camlibs/ptp2/library.c:4821 #, fuzzy, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %d.%02d\n" #: camlibs/ptp2/library.c:4828 #, c-format msgid "Functional Mode: 0x%04x\n" msgstr "" #: camlibs/ptp2/library.c:4833 #, fuzzy, c-format msgid "" "\n" "Capture Formats: " msgstr "Формат даты" #: camlibs/ptp2/library.c:4847 #, fuzzy, c-format msgid "Display Formats: " msgstr "Формат даты" #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr "" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "" #: camlibs/ptp2/library.c:4902 #, fuzzy, c-format msgid "File Deletion, " msgstr "Разрешение" #: camlibs/ptp2/library.c:4904 #, fuzzy, c-format msgid "No File Deletion, " msgstr "Разрешение" #: camlibs/ptp2/library.c:4908 #, fuzzy, c-format msgid "File Upload\n" msgstr "Закачка файла не удалаÑÑŒ." #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "" #: camlibs/ptp2/library.c:4920 #, fuzzy, c-format msgid "Open Capture, " msgstr "Съёмка" #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "" #: camlibs/ptp2/library.c:4929 #, fuzzy, c-format msgid "Canon Capture" msgstr "Съёмка" #: camlibs/ptp2/library.c:4933 #, fuzzy, c-format msgid "Canon EOS Capture" msgstr "Съёмка" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "" #: camlibs/ptp2/library.c:4947 #, fuzzy, c-format msgid "Nikon Capture 1" msgstr "Съёмка" #: camlibs/ptp2/library.c:4951 #, fuzzy, c-format msgid "%sNikon Capture 2" msgstr "Съёмка" #: camlibs/ptp2/library.c:4955 #, fuzzy, c-format msgid "%sNikon Capture 3 " msgstr "Съёмка" #: camlibs/ptp2/library.c:4965 #, fuzzy, c-format msgid "Sony Capture" msgstr "Съёмка" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "" #: camlibs/ptp2/library.c:4991 #, fuzzy, c-format msgid "\tCanon Wifi support\n" msgstr "ÐÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð° памÑти" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, fuzzy, c-format msgid "Unknown: 0x%04x\n" msgstr "ÐеизвеÑтно" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "" #: camlibs/ptp2/library.c:5043 msgid "Generic Flat" msgstr "" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "" #: camlibs/ptp2/library.c:5055 #, fuzzy msgid "Read-Write" msgstr "чтение и запиÑÑŒ" #: camlibs/ptp2/library.c:5056 #, fuzzy msgid "Read-Only" msgstr "Готов" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "" #: camlibs/ptp2/library.c:5075 #, fuzzy, c-format msgid "\tFree Space (Images): %d\n" msgstr "КоличеÑтво изображений: %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr "" #: camlibs/ptp2/library.c:5116 #, c-format msgid "cannot be queried.\n" msgstr "" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr "" #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "" #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "" #: camlibs/ptp2/library.c:6414 #, fuzzy msgid "Device does not support setting object protection." msgstr "Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема не поддерживает изменение Ñведений о файле" #: camlibs/ptp2/library.c:6418 #, fuzzy, c-format msgid "Device failed to set object protection to %d" msgstr "Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема не поддерживает изменение Ñведений о файле" #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°" #: camlibs/ptp2/library.c:7254 #, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "" #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "PTP Параметр не поддерживаетÑÑ" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "" #: camlibs/ptp2/ptp.c:4032 #, fuzzy msgid "PTP Store Not Available" msgstr "Причина неизвеÑтна" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "" #: camlibs/ptp2/ptp.c:4047 msgid "Filename Required" msgstr "" #: camlibs/ptp2/ptp.c:4048 msgid "Filename Conflicts" msgstr "" #: camlibs/ptp2/ptp.c:4049 #, fuzzy msgid "Filename Invalid" msgstr "Ошибка" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "" #: camlibs/ptp2/ptp.c:4052 #, fuzzy msgid "Out of Focus" msgstr "ÐедоÑтаточно памÑти" #: camlibs/ptp2/ptp.c:4053 #, fuzzy msgid "Change Camera Mode Failed" msgstr "Модель фотоаппарата" #: camlibs/ptp2/ptp.c:4054 #, fuzzy msgid "Invalid Status" msgstr "Ошибка" #: camlibs/ptp2/ptp.c:4055 #, fuzzy msgid "Set Property Not Supported" msgstr "PTP Параметр не поддерживаетÑÑ" #: camlibs/ptp2/ptp.c:4056 #, fuzzy msgid "Whitebalance Reset Error" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "" #: camlibs/ptp2/ptp.c:4058 #, fuzzy msgid "Shutter Speed Bulb" msgstr "СкороÑть ISO" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "" #: camlibs/ptp2/ptp.c:4066 #, fuzzy msgid "Unknown Command" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ" #: camlibs/ptp2/ptp.c:4067 #, fuzzy msgid "Operation Refused" msgstr "ДейÑтвие отменено" #: camlibs/ptp2/ptp.c:4068 #, fuzzy msgid "Lens Cover Present" msgstr "Ðет карты памÑти." #: camlibs/ptp2/ptp.c:4069 #, fuzzy msgid "Battery Low" msgstr "ÐккумулÑтор" #: camlibs/ptp2/ptp.c:4070 #, fuzzy msgid "Camera Not Ready" msgstr "Модель фотоаппарата (только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ)" #: camlibs/ptp2/ptp.c:4072 #, fuzzy msgid "PTP Timeout" msgstr "Дата ВремÑ" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "" #: camlibs/ptp2/ptp.c:4075 msgid "PTP Response Expected" msgstr "" #: camlibs/ptp2/ptp.c:4076 msgid "PTP Data Expected" msgstr "" #: camlibs/ptp2/ptp.c:4077 msgid "PTP I/O Error" msgstr "" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "Параметры ÑжатиÑ" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "УÑиление RGB" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "Режим программируемой выдержки" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸ (ISO ÑкороÑть плёнки)" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "ЭкÑпокоррекциÑ" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "КонтраÑÑ‚" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Цифровое увеличение" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ Copyright" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "ДопуÑтимые значениÑ" #: camlibs/ptp2/ptp.c:4136 #, fuzzy msgid "Enabled Streams" msgstr "Ошибка" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Формат даты" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Разрешение" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "КачеÑтво изображениÑ" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "КонтраÑÑ‚" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "ЯркоÑть-" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Формат даты" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "Ð­ÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ Ñнергии" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "Язык интерфейÑа" #: camlibs/ptp2/ptp.c:4169 #, fuzzy msgid "Battery Type" msgstr "ÐккумулÑтор" #: camlibs/ptp2/ptp.c:4170 #, fuzzy msgid "Battery Mode" msgstr "ÐккумулÑтор" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "" #: camlibs/ptp2/ptp.c:4172 #, fuzzy msgid "Camera Mode" msgstr "Модель фотоаппарата" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "" #: camlibs/ptp2/ptp.c:4176 #, fuzzy msgid "Self Time" msgstr "ÐвтоÑпуÑк" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 #, fuzzy msgid "Shooting Mode" msgstr "СкороÑть ISO" #: camlibs/ptp2/ptp.c:4180 #, fuzzy msgid "Image Mode" msgstr "Размер изображениÑ" #: camlibs/ptp2/ptp.c:4187 #, fuzzy msgid "Slow Shutter Setting" msgstr "Прочие параметры" #: camlibs/ptp2/ptp.c:4188 #, fuzzy msgid "AF Mode" msgstr "Режим фокуÑировки" #: camlibs/ptp2/ptp.c:4189 #, fuzzy msgid "Image Stabilization" msgstr "Прочие параметры" #: camlibs/ptp2/ptp.c:4191 #, fuzzy msgid "Color Gain" msgstr "ÐаÑтройки цвета" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "" #: camlibs/ptp2/ptp.c:4194 #, fuzzy msgid "Parameter Set" msgstr "Параметр 1" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 #, fuzzy msgid "Focal Length Tele" msgstr "Длина фокуÑа" #: camlibs/ptp2/ptp.c:4205 #, fuzzy msgid "Focal Length Wide" msgstr "Длина фокуÑа" #: camlibs/ptp2/ptp.c:4206 #, fuzzy msgid "Focal Length Denominator" msgstr "Длина фокуÑа" #: camlibs/ptp2/ptp.c:4207 #, fuzzy msgid "Capture Transfer Mode" msgstr "Модель фотоаппарата" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "" #: camlibs/ptp2/ptp.c:4211 #, fuzzy msgid "Supported Thumb Size" msgstr "ДопуÑтимые значениÑ" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "Владелец фотоаппарата" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "Ð’Ñ€ÐµÐ¼Ñ UNIX" #: camlibs/ptp2/ptp.c:4219 #, fuzzy msgid "Camera Body ID" msgstr "Модель фотоаппарата" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "" #: camlibs/ptp2/ptp.c:4223 #, fuzzy msgid "Digital Zoom Magnification" msgstr "Цифровое увеличение" #: camlibs/ptp2/ptp.c:4224 msgid "Ml Spot Position" msgstr "" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "" #: camlibs/ptp2/ptp.c:4239 #, fuzzy msgid "Model ID" msgstr "Модель:" #: camlibs/ptp2/ptp.c:4248 #, fuzzy msgid "Shooting Bank" msgstr "СкороÑть ISO" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "" #: camlibs/ptp2/ptp.c:4276 #, fuzzy msgid "White Balance Colour Temperature" msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°" #: camlibs/ptp2/ptp.c:4278 #, fuzzy msgid "White Balance Preset Number" msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°" #: camlibs/ptp2/ptp.c:4280 #, fuzzy msgid "White Balance Preset Name 0" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/ptp.c:4282 #, fuzzy msgid "White Balance Preset Name 1" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/ptp.c:4284 #, fuzzy msgid "White Balance Preset Name 2" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/ptp.c:4286 #, fuzzy msgid "White Balance Preset Name 3" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/ptp.c:4288 #, fuzzy msgid "White Balance Preset Name 4" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/ptp.c:4290 #, fuzzy msgid "White Balance Preset Value 0" msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°" #: camlibs/ptp2/ptp.c:4292 #, fuzzy msgid "White Balance Preset Value 1" msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°" #: camlibs/ptp2/ptp.c:4294 #, fuzzy msgid "White Balance Preset Value 2" msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°" #: camlibs/ptp2/ptp.c:4296 #, fuzzy msgid "White Balance Preset Value 3" msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°" #: camlibs/ptp2/ptp.c:4298 #, fuzzy msgid "White Balance Preset Value 4" msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°" #: camlibs/ptp2/ptp.c:4308 #, fuzzy msgid "Lens Focal Length (Non CPU)" msgstr "Длина фокуÑа" #: camlibs/ptp2/ptp.c:4310 #, fuzzy msgid "Lens Maximum Aperture (Non CPU)" msgstr "Длина фокуÑа" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "" #: camlibs/ptp2/ptp.c:4360 #, fuzzy msgid "Focus Area Zone" msgstr "Режим фокуÑировки" #: camlibs/ptp2/ptp.c:4362 #, fuzzy msgid "Enable Copyright" msgstr "Copyright" #: camlibs/ptp2/ptp.c:4366 #, fuzzy msgid "Exposure ISO Step" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/ptp.c:4368 #, fuzzy msgid "Exposure Step" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/ptp.c:4370 #, fuzzy msgid "Exposure Compensation (EV)" msgstr "КомпенÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/ptp.c:4374 #, fuzzy msgid "Centre Weight Area" msgstr "Центрально-взвешенный" #: camlibs/ptp2/ptp.c:4376 #, fuzzy msgid "Exposure Base Matrix" msgstr "ЭкÑпозамер" #: camlibs/ptp2/ptp.c:4378 #, fuzzy msgid "Exposure Base Center" msgstr "ЭкÑпозамер" #: camlibs/ptp2/ptp.c:4380 #, fuzzy msgid "Exposure Base Spot" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "" #: camlibs/ptp2/ptp.c:4390 #, fuzzy msgid "Auto Meter Off Time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" #: camlibs/ptp2/ptp.c:4392 #, fuzzy msgid "Self Timer Delay" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾ÑпуÑка" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "" #: camlibs/ptp2/ptp.c:4398 #, fuzzy msgid "Auto Off Timers" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "" #: camlibs/ptp2/ptp.c:4402 #, fuzzy msgid "Shooting Speed" msgstr "СкороÑть ISO" #: camlibs/ptp2/ptp.c:4406 #, fuzzy msgid "Exposure delay mode" msgstr "Режим программируемой выдержки" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 #, fuzzy msgid "Long Exposure Noise Reduction" msgstr "ЭкÑпокоррекциÑ" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "" #: camlibs/ptp2/ptp.c:4418 #, fuzzy msgid "High ISO noise reduction" msgstr "ЭкÑпокоррекциÑ" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "" #: camlibs/ptp2/ptp.c:4422 #, fuzzy msgid "Artist Name" msgstr "Ðвтор" #: camlibs/ptp2/ptp.c:4424 #, fuzzy msgid "Copyright Information" msgstr "Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ Copyright" #: camlibs/ptp2/ptp.c:4432 #, fuzzy msgid "Modeling Flash" msgstr "ÐŸÑ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð²Ñпышка\n" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "" #: camlibs/ptp2/ptp.c:4440 #, fuzzy msgid "Auto Bracket Selection" msgstr "Ðвто, уменьшение краÑноты глаз" #: camlibs/ptp2/ptp.c:4441 #, fuzzy msgid "NIKON Auto Bracketing Set" msgstr "Ðвто, уменьшение краÑноты глаз" #: camlibs/ptp2/ptp.c:4443 #, fuzzy msgid "Center Button Shooting Mode" msgstr "Режим замера" #: camlibs/ptp2/ptp.c:4445 msgid "Center Button Playback Mode" msgstr "" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "" #: camlibs/ptp2/ptp.c:4457 #, fuzzy msgid "Aperture Setting" msgstr "Параметры диафрагмы" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "" #: camlibs/ptp2/ptp.c:4465 #, fuzzy msgid "Center Button Zoom Ratio" msgstr "Режим замера" #: camlibs/ptp2/ptp.c:4467 msgid "Function Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4471 #, fuzzy msgid "Normal AF On" msgstr "Ðорм." #: camlibs/ptp2/ptp.c:4473 #, fuzzy msgid "Clean Image Sensor" msgstr "Прочие параметры" #: camlibs/ptp2/ptp.c:4475 #, fuzzy msgid "Image Comment String" msgstr "Изображение защищено." #: camlibs/ptp2/ptp.c:4477 #, fuzzy msgid "Image Comment Enable" msgstr "Изображение защищено." #: camlibs/ptp2/ptp.c:4479 #, fuzzy msgid "Image Rotation" msgstr "Прочие параметры" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "" #: camlibs/ptp2/ptp.c:4489 #, fuzzy msgid "Movie Card Slot" msgstr "КачеÑтво изображениÑ" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "" #: camlibs/ptp2/ptp.c:4497 #, fuzzy msgid "Bracketing Enable" msgstr "Режим ÑкÑпозамера" #: camlibs/ptp2/ptp.c:4499 #, fuzzy msgid "Exposure Bracketing Step" msgstr "ЭкÑпозамер" #: camlibs/ptp2/ptp.c:4501 #, fuzzy msgid "Exposure Bracketing Program" msgstr "ЭкÑпозамер" #: camlibs/ptp2/ptp.c:4503 #, fuzzy msgid "Auto Exposure Bracket Count" msgstr "ЭкÑпозамер" #: camlibs/ptp2/ptp.c:4504 #, fuzzy msgid "White Balance Bracket Step" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/ptp.c:4505 #, fuzzy msgid "White Balance Bracket Program" msgstr "Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾" #: camlibs/ptp2/ptp.c:4507 #, fuzzy msgid "Lens ID" msgstr "Режим объектива" #: camlibs/ptp2/ptp.c:4509 #, fuzzy msgid "Lens Sort" msgstr "Режим объектива" #: camlibs/ptp2/ptp.c:4511 #, fuzzy msgid "Lens Type" msgstr "Режим объектива" #: camlibs/ptp2/ptp.c:4513 #, fuzzy msgid "Min. Focal Length" msgstr "Длина фокуÑа" #: camlibs/ptp2/ptp.c:4515 #, fuzzy msgid "Max. Focal Length" msgstr "Длина фокуÑа" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "" #: camlibs/ptp2/ptp.c:4521 #, fuzzy msgid "Finder ISO Display" msgstr "Режим видоиÑкателÑ" #: camlibs/ptp2/ptp.c:4523 #, fuzzy msgid "Auto Off Photo" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" #: camlibs/ptp2/ptp.c:4525 #, fuzzy msgid "Auto Off Menu" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" #: camlibs/ptp2/ptp.c:4527 #, fuzzy msgid "Auto Off Info" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" #: camlibs/ptp2/ptp.c:4529 #, fuzzy msgid "Self Timer Shot Number" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾ÑпуÑка" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "" #: camlibs/ptp2/ptp.c:4537 #, fuzzy msgid "Nikon Exposure Time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/ptp.c:4539 #, fuzzy msgid "Warning Status" msgstr "СоÑтоÑние карты:\t\t" #: camlibs/ptp2/ptp.c:4546 #, fuzzy msgid "AF LCD Top Mode 2" msgstr "Режим ЖК Ñкрана" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "" #: camlibs/ptp2/ptp.c:4552 #, fuzzy msgid "Exposure Meter" msgstr "ЭкÑпозамер" #: camlibs/ptp2/ptp.c:4556 #, fuzzy msgid "USB Speed" msgstr "СкороÑть ISO" #: camlibs/ptp2/ptp.c:4558 #, fuzzy msgid "CCD Serial Number" msgstr "%sСерийный номер: %s\n" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "" #: camlibs/ptp2/ptp.c:4564 #, fuzzy msgid "FNumber Lock" msgstr "ЧиÑло F" #: camlibs/ptp2/ptp.c:4566 #, fuzzy msgid "Exposure Aperture Lock" msgstr "Режим ÑкÑпозамера" #: camlibs/ptp2/ptp.c:4568 #, fuzzy msgid "TV Lock Setting" msgstr "ÐаÑтройка ТВ A/V·вывода" #: camlibs/ptp2/ptp.c:4570 #, fuzzy msgid "AV Lock Setting" msgstr "ÐаÑтройка ТВ A/V·вывода" #: camlibs/ptp2/ptp.c:4572 #, fuzzy msgid "Illum Setting" msgstr "Прочие параметры" #: camlibs/ptp2/ptp.c:4574 #, fuzzy msgid "Focus Point Bright" msgstr "Точка фокуÑировки" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 #, fuzzy msgid "External Flash Mode" msgstr "Режим вÑпышки" #: camlibs/ptp2/ptp.c:4584 #, fuzzy msgid "External Flash Compensation" msgstr "ЭкÑпокоррекциÑ" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "" #: camlibs/ptp2/ptp.c:4602 #, fuzzy msgid "BW Sharpness" msgstr "ЧёткоÑть" #: camlibs/ptp2/ptp.c:4604 #, fuzzy msgid "BW Contrast" msgstr "КонтраÑÑ‚" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "" #: camlibs/ptp2/ptp.c:4614 #, fuzzy msgid "Flourescent Type" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/ptp2/ptp.c:4616 #, fuzzy msgid "Tune Colour Temperature" msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°" #: camlibs/ptp2/ptp.c:4618 #, fuzzy msgid "Tune Preset 0" msgstr "Шаблон" #: camlibs/ptp2/ptp.c:4620 #, fuzzy msgid "Tune Preset 1" msgstr "Шаблон" #: camlibs/ptp2/ptp.c:4622 #, fuzzy msgid "Tune Preset 2" msgstr "Шаблон" #: camlibs/ptp2/ptp.c:4624 #, fuzzy msgid "Tune Preset 3" msgstr "Шаблон" #: camlibs/ptp2/ptp.c:4626 #, fuzzy msgid "Tune Preset 4" msgstr "Шаблон" #: camlibs/ptp2/ptp.c:4630 #, fuzzy msgid "Autofocus Mode" msgstr "Режим фокуÑировки" #: camlibs/ptp2/ptp.c:4632 #, fuzzy msgid "AF Assist Lamp" msgstr "Ð’Ñпомогательное оÑвещение" #: camlibs/ptp2/ptp.c:4634 #, fuzzy msgid "Auto ISO P/A/DVP Setting" msgstr "ÐаÑтройка ТВ A/V·вывода" #: camlibs/ptp2/ptp.c:4650 #, fuzzy msgid "Viewfinder Grid Display" msgstr "Режим видоиÑкателÑ" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "" #: camlibs/ptp2/ptp.c:4656 #, fuzzy msgid "Auto FP" msgstr "Ðвто" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "" #: camlibs/ptp2/ptp.c:4662 #, fuzzy msgid "Battery Cell Kind" msgstr "ЗарÑдка аккумулÑтора" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "" #: camlibs/ptp2/ptp.c:4670 #, fuzzy msgid "Info Disp Setting" msgstr "Параметры вÑпышки" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "" #: camlibs/ptp2/ptp.c:4678 #, fuzzy msgid "Indicator Display" msgstr "Отображение даты" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "" #: camlibs/ptp2/ptp.c:4684 #, fuzzy msgid "Live View Mode" msgstr "Режим видоиÑкателÑ" #: camlibs/ptp2/ptp.c:4686 #, fuzzy msgid "Live View Drive Mode" msgstr "Режим видоиÑкателÑ" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "" #: camlibs/ptp2/ptp.c:4694 #, fuzzy msgid "Exposure Display Status" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "" #: camlibs/ptp2/ptp.c:4698 #, fuzzy msgid "Info Display Error Status" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/ptp.c:4700 #, fuzzy msgid "Exposure Indicate Lightup" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "" #: camlibs/ptp2/ptp.c:4708 #, fuzzy msgid "Flash MRepeat Count" msgstr "Режим вÑпышки" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "" #: camlibs/ptp2/ptp.c:4749 #, fuzzy msgid "Image Compression" msgstr "Сжатие" #: camlibs/ptp2/ptp.c:4758 #, fuzzy msgid "Secure Time" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "" #: camlibs/ptp2/ptp.c:4782 #, fuzzy msgid "Quality" msgstr "КачеÑтво изображениÑ" #: camlibs/ptp2/ptp.c:4783 #, fuzzy msgid "Release Mode" msgstr "Режим вÑпышки" #: camlibs/ptp2/ptp.c:4784 #, fuzzy msgid "Focus Areas" msgstr "Режим фокуÑировки" #: camlibs/ptp2/ptp.c:4785 #, fuzzy msgid "AE Lock" msgstr "Выдержка" #: camlibs/ptp2/ptp.c:4797 #, fuzzy msgid "Image size" msgstr "Размер изображениÑ" #: camlibs/ptp2/ptp.c:4798 #, fuzzy msgid "Shutter speed" msgstr "СкороÑть ISO" #: camlibs/ptp2/ptp.c:4799 #, fuzzy msgid "Color temperature" msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð°" #: camlibs/ptp2/ptp.c:4802 #, fuzzy msgid "Expose Index" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 #, fuzzy msgid "Still Image" msgstr "Изображение" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "" #: camlibs/ptp2/ptp.c:4940 #, fuzzy msgid "JPEG Norm" msgstr "JPEG" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Лампа накаливаниÑ" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "" #: camlibs/ptp2/ptp.c:4962 #, fuzzy msgid "Center Weighted Average" msgstr "Центрально-взвешенный" #: camlibs/ptp2/ptp.c:4964 #, fuzzy msgid "Center-spot" msgstr "Центрально-взвешенный" #: camlibs/ptp2/ptp.c:4966 #, fuzzy msgid "Automatic flash" msgstr "Ðвтомат\n" #: camlibs/ptp2/ptp.c:4969 #, fuzzy msgid "Automatic Red-eye Reduction" msgstr "Ðвто, уменьшение краÑноты глаз" #: camlibs/ptp2/ptp.c:4970 msgid "Red-eye fill flash" msgstr "" #: camlibs/ptp2/ptp.c:4988 #, fuzzy msgid "Power Wind" msgstr "Ð­ÐºÐ¾Ð½Ð¾Ð¼Ð¸Ñ Ñнергии" #: camlibs/ptp2/ptp.c:4994 #, fuzzy msgid "Timer + Remote" msgstr "Ðвтономный" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "" #: camlibs/ptp2/ptp.c:5056 #, fuzzy msgid "Flash Lock" msgstr "Режим вÑпышки" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "" #: camlibs/ptp2/ptp.c:5169 #, fuzzy msgid "LCD Backlight" msgstr "ЯркоÑть ЖК-Ñкрана" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "" #: camlibs/ptp2/ptp.c:5228 #, fuzzy msgid "1 min" msgstr "41 мм" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "" #: camlibs/ptp2/ptp.c:5266 #, fuzzy msgid "Dark on light" msgstr "Дневной Ñвет" #: camlibs/ptp2/ptp.c:5267 #, fuzzy msgid "Light on dark" msgstr "ÐедоÑтаточное оÑвещение" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "" #: camlibs/ptp2/ptp.c:5345 #, fuzzy msgid "Auto + Red Eye Suppression" msgstr "Ðвто, уменьшение краÑноты глаз" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "" #: camlibs/ptp2/ptp.c:5370 #, fuzzy msgid "Pan Focus" msgstr "Ручной" #: camlibs/ptp2/ptp.c:5374 #, fuzzy msgid "Single-Frame Shooting" msgstr "Одиночный кадр" #: camlibs/ptp2/ptp.c:5375 #, fuzzy msgid "Continuous Shooting" msgstr "Режим замера" #: camlibs/ptp2/ptp.c:5376 #, fuzzy msgid "Timer (Single) Shooting" msgstr "Одиночный кадр" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "" #: camlibs/ptp2/ptp.c:5385 #, fuzzy msgid "Center-weighted Metering" msgstr "Центрально-взвешенный" #: camlibs/ptp2/ptp.c:5386 #, fuzzy msgid "Spot Metering" msgstr "Точечный режим замера" #: camlibs/ptp2/ptp.c:5387 #, fuzzy msgid "Average Metering" msgstr "ЭкÑпозамер" #: camlibs/ptp2/ptp.c:5388 #, fuzzy msgid "Evaluative Metering" msgstr "ЭкÑпозамер" #: camlibs/ptp2/ptp.c:5389 #, fuzzy msgid "Partial Metering" msgstr "ЭкÑпозамер" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "" #: camlibs/ptp2/ptp.c:5392 #, fuzzy msgid "Multi-Spot Metering" msgstr "Точечный режим замера" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 #, fuzzy msgid "High 2" msgstr "Ð’Ñ‹Ñок." #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "" #: camlibs/ptp2/ptp.c:5462 #, fuzzy msgid "Development Parameters 1" msgstr "Параметр 1" #: camlibs/ptp2/ptp.c:5463 #, fuzzy msgid "Development Parameters 2" msgstr "Параметр 2" #: camlibs/ptp2/ptp.c:5464 #, fuzzy msgid "Development Parameters 3" msgstr "Параметр 3" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "" #: camlibs/ptp2/ptp.c:5600 #, fuzzy msgid "Encounter" msgstr "Съёмка" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "" #: camlibs/ptp2/ptp.c:5605 msgid "Undefined Audio" msgstr "" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5612 msgid "Undefined Video" msgstr "" #: camlibs/ptp2/ptp.c:5617 msgid "Undefined Collection" msgstr "" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "" #: camlibs/ptp2/ptp.c:5643 msgid "Undefined Contact" msgstr "" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "" #: camlibs/ptp2/ptp.c:5692 #, fuzzy, c-format msgid "Unknown(%04x)" msgstr "ÐеизвеÑтно" #: camlibs/ptp2/ptp.c:5702 msgid "Get device info" msgstr "" #: camlibs/ptp2/ptp.c:5703 #, fuzzy msgid "Open session" msgstr "Сжатие" #: camlibs/ptp2/ptp.c:5704 #, fuzzy msgid "Close session" msgstr "Сжатие" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "" #: camlibs/ptp2/ptp.c:5711 #, fuzzy msgid "Get thumbnail" msgstr "Получение миниатюры..." #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "" #: camlibs/ptp2/ptp.c:5718 msgid "Self test device" msgstr "" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 msgid "Get Vendor Extension Maps" msgstr "" #: camlibs/ptp2/ptp.c:5735 msgid "Get Vendor Device Info" msgstr "" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 msgid "Get Filesystem Manifest" msgstr "" #: camlibs/ptp2/ptp.c:5738 msgid "Get Stream Info" msgstr "" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "" #: camlibs/ptp2/ptp.c:5759 #, fuzzy msgid "Set license response" msgstr "ÐераÑпознанный ответ" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "" #: camlibs/ptp2/ptp.c:5763 #, fuzzy msgid "Get meter response" msgstr "Получен неожиданный ответ" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "" #: camlibs/ptp2/ptp.c:5800 msgid "Send Partial Object" msgstr "" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "ÐеизвеÑтно" #: camlibs/ptp2/ptp.c:6029 msgid "Unknown VendorExtensionID" msgstr "" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "КопируетÑÑ Ð²Ð¸Ð´ÐµÐ¾Ð·Ð°Ð¿Ð¸ÑÑŒ..." #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "КопируетÑÑ Ð·Ð²ÑƒÐºÐ¾Ð¿Ð¸ÑÑŒ..." #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "КопируетÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ EXIF..." #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "Ðет данных EXIF Ð´Ð»Ñ %s." #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "Ðевозможно удалить файл." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "Ðевозможно удалить каталог." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "Ðевозможно Ñоздать каталог." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "ВерÑиÑ: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "ID фотоаппарата: %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "ИÑÑледование протокола проведено Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ USB Snoopy,\n" "декомпилÑции прошивки и интуиции.\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Драйвер Ricoh / Philips\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "на оÑнове драйвера от Bob Paauwe\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Модель: %s\n" "ПамÑть: %d байт(ов) из %d доÑтупных" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2,0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1,5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1,0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0,5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0,0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0,5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1,0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1,5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2,0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 x 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Солнечный" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "МакÑ." #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Мин." #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "ТекÑÑ‚" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Звук" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Изображение и звук" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Character & Sound" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "КонфигурациÑ" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Copyright (макÑ.. 20 знаков)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "ИзображениÑ" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Уровень белого" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Режим запиÑи" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Сжатие" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "СкороÑть %i не поддерживаетÑÑ!" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "" #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "" #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "" #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "" #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "Драйвер Samsung digimax 800k напиÑан James McKenzie " "Ð´Ð»Ñ gphoto. Lutz Mueller портировал его в " "gphoto2. Marcus Meissner иÑправлÑл ошибки и вноÑил " "уÑовершенÑтвованиÑ." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Разрешение Ð¿Ð»ÑŽÑ Ñ€Ð°Ð·Ð¼ÐµÑ€" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 #, fuzzy msgid "Aperture Settings" msgstr "Параметры диафрагмы" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Режим цвета" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Уменьшение Ñффекта краÑных глаз" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð´Ð¾ перехода компьютера в ÑпÑщий режим (Ñекунд)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð´Ð¾ перехода фотоаппарата в ÑпÑщий режим (Ñекунд)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Режим объектива" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "КорейÑкий" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "ÐнглийÑкий" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "ФранцузÑкий" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "Ðемецкий" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "ИтальÑнÑкий" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "ЯпонÑкий" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "ИÑпанÑкий" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "ПортугальÑкий" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "ÐаÑтройки изображениÑ" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "ÐеÑколько замечаний о фотоаппаратах Epson:\n" "- Отдельными параметрами Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñть удалённо:\n" " * приближение\n" " * фокуÑ\n" " * пользовательÑкие наÑтройки баланÑа белого\n" "- ДекомпилÑÑ†Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² конфигурации производилаÑÑŒ Ñ\n" " PhotoPC 3000z, еÑли ваш аппарат работает иначе, напишите\n" " об Ñтом в ÑпиÑок раÑÑылки Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð² gphoto (по английÑки)\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Ðет карты памÑти" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "" "Слишком Ñлабый зарÑд аккумулÑтора фотоаппарата (%d%%). ДейÑтвие прервано." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "" #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "" #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "" #: camlibs/sierra/library.c:789 #, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "" #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "" #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "" #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "" #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "" #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "Ðевозможно получить значение региÑтра %i. ПожалуйÑта, ÑвÑжитеÑÑŒ Ñ %s." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "" #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Передача данных..." #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "" #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "" #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "Ч/Б" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Против краÑных глаз" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "Ð—Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "КонтраÑÑ‚+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "КонтраÑÑ‚-" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "ЯркоÑть+" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "ЯркоÑть-" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "Мигать" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "Светодиод" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "БеÑконечноÑть" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "Следующий" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "Предыдущий" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Режим работы" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "ЯркоÑть ЖК-Ñкрана" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "ÐвтоматичеÑкое отключение ЖК (Ñек.)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "Центрально-взвешенный" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "Матричный" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Точечный автофокуÑ" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "ЭкÑпозамер" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "Приближение (в миллиметрах)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "нет" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "ФикÑÐ°Ñ†Ð¸Ñ Ð²Ñ‹Ð´ÐµÑ€Ð¶ÐºÐ¸" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "Рыбий глаз" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Широкоугольный" #: camlibs/sierra/nikon-desc.c:558 #, fuzzy msgid "Misc exposure/lens settings" msgstr "ÐаÑтройки изображениÑ" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Запоминание наÑтроек выдержки" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " ÐаÑтройка фотоаппарата (предпочтениÑ):\n" "\n" " ОптичеÑкое приближение работает\n" " неправильно.\n" "\n" " Ðе вÑе параметры наÑтройки\n" " можно как Ñледует читать и изменÑть\n" " например, Ñто отноÑитÑÑ Ðº тонкой наÑтройке\n" " баланÑа белого и наÑтройкам Ñзыка.\n" "\n" " Переведите аппарат в режим 'M', еÑли хотите\n" " задать ÑкороÑть затвора.\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995:\n" " Ðабор параметров наÑтройки Ñтого аппарата\n" " неполон, напишите в ÑпиÑок раÑÑылки\n" " разработчиков gphoto, еÑли хотите внеÑти \n" " поправки·в·Ñтот·драйвер.\n" "\n" " Копирование Ñнимков должно работать верно.\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "Ð‘ÐµÐ»Ð°Ñ Ð´Ð¾Ñка" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "Ð§Ñ‘Ñ€Ð½Ð°Ñ Ð´Ð¾Ñка" #: camlibs/sierra/olympus-desc.c:489 #, fuzzy msgid "Color or Function Mode" msgstr "Режим цвета" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 #, fuzzy msgid "Slow" msgstr "Ð—Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ ÑинхронизациÑ" #: camlibs/sierra/olympus-desc.c:540 #, fuzzy msgid "Anti-redeye Fill" msgstr "Против краÑных глаз" #: camlibs/sierra/olympus-desc.c:596 #, fuzzy msgid "Fluorescent-1-home-6700K" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/sierra/olympus-desc.c:597 #, fuzzy msgid "Fluorescent-2-desk-5000K" msgstr "ФлуореÑÑ†ÐµÐ½Ñ‚Ð½Ð°Ñ Ð»Ð°Ð¼Ð¿Ð°" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Монитор" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "Режим ЖК Ñкрана" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Цифровое увеличение" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Формат времени" #: camlibs/sierra/olympus-desc.c:1147 #, fuzzy msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "неÑколько замечаний о фотоаппаратах Olympus:\n" "(1) ÐаÑтройка фотоаппарата:\n" " Значение 0 означает наÑтройку по умолчанию (авто).\n" "(2) Olympus C-3040Z (возможно также C-2040Z и другие)\n" " имеют режим ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð° через USB.\n" " Чтобы его иÑпользовать, фотоаппарат нужно·переключить\n" " в режим 'USB PC control mode'. Чтобы·попаÑть в меню\n" " выбора режима, включите аппарат,·откройте·крышку\n" " отÑека карты памÑти и затем·нажмите·и·удерживайте\n" " кнопки меню и ЖК Ñкрана·пока·не·поÑвитÑÑ\n" " меню ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð’Ñ‹Ð±ÐµÑ€Ð¸Ñ‚Ðµ значение ON.\n" "(3) ЕÑли вы измените значение пункта 'LCD mode' на 'Monitor'\n" " или 'Normal', не забудьте вернуть его обратно в 'Off'\n" " перед отключением. Ð’ противном Ñлучае вы не Ñможете\n" " иÑпользовать кнопки фотоаппарата. ЕÑли вы окажетеÑÑŒ в\n" " таком положении, нужно заново подключить аппарат к \n" " компьютеру и переключить параметр в 'Off'." #: camlibs/sierra/olympus-desc.c:1166 #, fuzzy msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ имеет режим ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ·Â·USB.\n" " Чтобы его иÑпользовать, фотоаппарат нужно·переключить\n" " в режим 'USB PC control mode'. Чтобы·попаÑть в меню\n" " выбора режима, включите аппарат,·откройте·крышку\n" " отÑека карты памÑти и затем·нажмите·и·удерживайте\n" " кнопки 'OK' и 'quickview' пока·не·поÑвитÑÑ\n" " меню ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð’Ñ‹Ð±ÐµÑ€Ð¸Ñ‚Ðµ значение режим управлениÑ.\n" "(2) ЕÑли вы измените значение пункта 'LCD mode' на 'Monitor'\n" " или 'Normal', не забудьте вернуть его обратно в 'Off'\n" " перед отключением. Ð’ противном Ñлучае вы не Ñможете\n" " иÑпользовать кнопки фотоаппарата. ЕÑли вы окажетеÑÑŒ в\n" " таком положении, нужно заново подключить аппарат к \n" " компьютеру и переключить параметр в 'Off'." #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Стандартный драйвер sierra:\n" "\n" " Этот драйвер sierra иÑпользуетÑÑ Ð¿Ð¾ умолчанию.\n" " Он должен поддерживать копирование изображений\n" " и проÑмотр файлов в памÑти фотоаппарата.\n" "\n" " ÐаÑтройки фотоаппарата (или предпочтениÑ)\n" " оÑнованы на Olympus 3040 и Ñкорее вÑего\n" " неполны. ЕÑли вы можете подтвердить, что\n" " ÑпиÑок наÑтроек вашего аппарата полон или\n" " Ñможете добавить Ñвой код Ð´Ð»Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸\n" " вÑех имеющихÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð², напишите, пожа-\n" " луйÑта в ÑпиÑок раÑÑылки Ð´Ð»Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ¾Ð².\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Лучшее" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Чёрный/белый" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "Ð‘ÐµÐ»Ð°Ñ Ð´Ð¾Ñка" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Ð§Ñ‘Ñ€Ð½Ð°Ñ Ð´Ð¾Ñка" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Дневной Ñвет" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "БеÑконечноÑть/Рыбий глаз" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "Точечный режим замера" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1,6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2,5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "ÐвтоматичеÑкое отключение (компьютер) (в Ñекундах)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "Сколько времени пройдёт до автоматичеÑкого Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°,когда он " "подключён к компьютеру?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "Ðвтовыключение (автономн.) (в Ñекундах)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "Сколько времени пройдёт до автоматичеÑкого Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°,когда он " "не подключён к компьютеру?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2,3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2,8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5,6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 #, fuzzy msgid "standard" msgstr "Стандартный" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "цвет" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" #: camlibs/sierra/sierra.c:1948 #, fuzzy, c-format msgid "Camera Model: %s\n" msgstr "%sМодель фотоаппарата: %s\n" #: camlibs/sierra/sierra.c:1957 #, fuzzy, c-format msgid "Serial Number: %s\n" msgstr "%sСерийный номер: %s\n" #: camlibs/sierra/sierra.c:1960 #, fuzzy, c-format msgid "Software Rev.: %s\n" msgstr "%sВерÑÐ¸Ñ ÐŸÐž: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, fuzzy, c-format msgid "Frames Taken: %i\n" msgstr "%sСнÑто кадров: %i\n" #: camlibs/sierra/sierra.c:1971 #, fuzzy, c-format msgid "Frames Left: %i\n" msgstr "%sОÑталоÑÑŒ кадров: %i\n" #: camlibs/sierra/sierra.c:1973 #, fuzzy, c-format msgid "Battery Life: %i\n" msgstr "%sРабота от аккумулÑтора: %i\n" #: camlibs/sierra/sierra.c:1975 #, fuzzy, c-format msgid "Memory Left: %i bytes\n" msgstr "%sОÑталоÑÑŒ памÑти: %i байт\n" #: camlibs/sierra/sierra.c:1980 #, fuzzy, c-format msgid "Date: %s" msgstr "%sДата: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "РуководÑтво Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° недоÑтупно.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "ÐеÑколько замечаний о фотоаппаратах Epson:\n" "- Отдельными параметрами Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñть удалённо:\n" " * приближение\n" " * фокуÑ\n" " * пользовательÑкие наÑтройки баланÑа белого\n" "- ДекомпилÑÑ†Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² конфигурации производилаÑÑŒ Ñ\n" " PhotoPC 3000z. ЕÑли ваш аппарат работает иначе, напишите,\n" " пожалуйÑта по адреÑу %s (по английÑки)\n" #: camlibs/sierra/sierra.c:2060 #, fuzzy msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "ÐеÑколько замечаний о фотоаппаратах Olympus (и не только?):\n" "(1) ÐаÑтройка фотоаппарата:\n" " Значение 0 означает наÑтройку по умолчанию (авто).\n" "(2) Olympus C-3040Z (возможно также C-2040Z и другие)\n" " имеют режим ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ ÐºÐ¾Ð¼Ð¿ÑŒÑŽÑ‚ÐµÑ€Ð° через USB.\n" " Чтобы его иÑпользовать, фотоаппарат нужно·переключить\n" " в режим 'USB PC control mode'. Чтобы·попаÑть в меню\n" " выбора режима, включите аппарат,·откройте·крышку\n" " отÑека карты памÑти и затем·нажмите·и·удерживайте\n" " кнопки меню и ЖК Ñкрана·пока·не·поÑвитÑÑ\n" " меню ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð’Ñ‹Ð±ÐµÑ€Ð¸Ñ‚Ðµ значение ON.\n" "(3) ЕÑли вы измените значение пункта 'LCD mode' на 'Monitor'\n" " или 'Normal', не забудьте вернуть его обратно в 'Off'\n" " перед отключением. Ð’ противном Ñлучае вы не Ñможете\n" " иÑпользовать кнопки фотоаппарата. ЕÑли вы окажетеÑÑŒ в\n" " таком положении, нужно заново подключить аппарат к \n" " компьютеру и переключить параметр в 'Off'." #: camlibs/sierra/sierra.c:2087 #, fuzzy msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "Библиотека sierra SPARClite\n" "Scott Fritzinger \n" "Поддержка цифровых фотоаппаратов на базе sierra,\n" "Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Olympus, Nikon, Epson и другие.\n" "\n" "Благодарю Data Engines (www.dataengines.com)\n" "за предоÑтавление Olympus C-3030Z Ð´Ð»Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸\n" "поддержки USB." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Драйвер Sipix StyleCam Blink\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Ðевозможно применить конфигурацию USB" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "Драйвер доÑтупа к веб-камере SiPix Web2." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket\n" "Lee Benfield \n" "Драйвер доÑтупа к аппарату Smal Ultrapocket и его OEM вариантам (slimshot)" #: camlibs/sonix/library.c:122 #, fuzzy, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Фотоаппарат Mars MR97310.\n" "Содержит %i Ñнимков. \n" msgstr[1] "" "Фотоаппарат Mars MR97310.\n" "Содержит %i Ñнимков. \n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" #: camlibs/sonix/library.c:151 #, fuzzy msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "Библиотека Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð° Mars MR97310\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "Поддержка фотоаппарата Sony DSC-F1\n" "M. Adam Kendall \n" "Ðа оÑнове конÑольной верÑии chotplay от\n" "Кен-Ичи ХайÑши\n" "Портирование в Gphoto2 выполнил Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Библиотека gPhoto Ð´Ð»Ñ Sony DSC-F55/505\n" "Поддерживает Sony MSAC-SR1 и карты Memory Stick от DCR-PC100\n" "Изначально напиÑана Mark Davies \n" "ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ð¸Ñ Ðº gPhoto2 - Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %8s\n" "ИзображениÑ: %i\n" "Ð’Ñего памÑти: %iкб\n" "Свободно памÑти: %iкб\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Драйвер Soundvision\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "ППЗУ:\n" " Файлов: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM:\n" " Файлов: %d\n" " Изображений: %4d\n" " ВидеозапиÑей: %4d\n" "ЗанÑто: %8d\n" "Свободно: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" "Ваш USB фотоаппарат имеет м/Ñ Ð½Ð°Ð±Ð¾Ñ€ S&Q.\n" "Общее чиÑло Ñделанных Ñнимков - %i\n" "Ðекоторые из них могут быть видеозапиÑÑми,\n" "ÑоÑтоÑщими из неÑкольких кадров.\n" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" "Ð”Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð² Ñ Ð¼Ð¸ÐºÑ€Ð¾Ñхемой S&Q Technologies.\n" "Работает Ñ gtkam. Снимки ÑохранÑÑŽÑ‚ÑÑ Ð² формате PPM.\n" "\n" "Ð’Ñе извеÑтные аппараты S&Q имеют два разрешениÑ.\n" "Каковы они, завиÑит от конкретной модели. Ðекоторые из\n" "Ñтих·фотоаппаратов позволÑÑŽÑ‚ удалÑть любые Ñнимки, но\n" "большинÑтво·-·нет. Закачка данных в памÑть не поддер-\n" "живаетÑÑ.·Режим·ÑжатиÑ, имеющийÑÑ Ñƒ многих аппаратов\n" "S&Q·отчаÑти·поддерживаетÑÑ.\n" "ЕÑли фотоаппарат позволÑет, видеозапиÑи предÑтавлÑÑŽÑ‚ÑÑ.\n" "в виде подкаталогов. Gtkam копирует их раздельно.При\n" "наличии видеозапиÑей перед названием аппарата поÑвлÑетÑÑ\n" "маленький треугольник. ЕÑли в ÑпиÑке нет папок, щёлкните на\n" "треугольнике, чтобы отобразить их. Щёлкните папку, чтобы\n" "войти в неё и увидеть или копировать кадры. Кадры извлекаютÑÑ\n" "как отдельные изображениÑ, имена которых Ñообщают, к какой\n" "видеопоÑледовательноÑти они отноÑÑÑ‚ÑÑ. Таким образом можно \n" "выбрать, ÑохранÑть ли кадры в отдельных каталогах или нет.\n" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "Базовый драйвер sq905\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "Драйвер Ð´Ð»Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð² Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑором STV0674.\n" "Ð”Ð»Ñ Ð¸ÑÑледование протокола иÑпользовалÑÑ SnoopyPro\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "ID ÑенÑора: %d.%d\n" #: camlibs/stv0680/library.c:562 #, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "Фотоаппарат имеет памÑть.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "" #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "ID производителÑ: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "ID продукта: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "КоличеÑтво изображений: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Размер миниатюры: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Драйвер Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑором STV0680.\n" "ИÑÑледование протокола выполнено Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ CommLite Beta 5\n" "Carsten Weinholz \n" "РаÑширено Ð´Ð»Ñ Aiptek PenCam и других двурежимных USB фотоаппаратов STM." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Получение Ñведений о %i файлах..." #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "Библиотека Ð´Ð»Ñ (Traveler) SX330z (И других фотоаппаратов Aldi).\n" "Также должны работать аппараты таких производителей, как Jenoptik, Skanhex, " "Maginon.\n" "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках и отзывы шлите по адреÑу:\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "" #: camlibs/topfield/puppy.c:553 #, fuzzy msgid "Driver Settings" msgstr "Прочие параметры" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" #: camlibs/topfield/puppy.c:659 #, fuzzy, c-format msgid "Downloading %s..." msgstr "КопируетÑÑ '%s'..." #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "Драйвер Toshiba pdr-m11.\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "" #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Фотоаппарат не обнаружен" #: libgphoto2/gphoto2-camera.c:750 #, fuzzy, c-format msgid "Could not detect any camera at port %s" msgstr "Фотоаппарат не обнаружен" #: libgphoto2/gphoto2-camera.c:774 msgid "You have to set the port prior to initialization of the camera." msgstr "" #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Ðевозможно загрузить драйвер фотоаппарата '%s' (%s)." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "" #: libgphoto2/gphoto2-camera.c:864 msgid "This camera does not provide any configuration options." msgstr "" #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "" #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "" #: libgphoto2/gphoto2-camera.c:960 #, fuzzy msgid "This camera does not provide a manual." msgstr "Фотоаппарат не поддерживает ÑкороÑть %i." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "" #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "" #: libgphoto2/gphoto2-camera.c:1056 msgid "This camera can not trigger capture." msgstr "" #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "" #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "" #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" #: libgphoto2/gphoto2-filesys.c:1259 #, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "" #: libgphoto2/gphoto2-filesys.c:1264 #, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "" #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема не поддерживает закачку файлов." #: libgphoto2/gphoto2-filesys.c:1359 #, fuzzy, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "Папка '%s' Ñодержит лишь %i файлов, однако был запрошен файл Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %i." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Файла '%s' нет в папке '%s'." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Ðевозможно найти файл '%s'." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема не поддерживает получение файлов" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "ÐеизвеÑтный тип файла %i." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема не поддерживает изменение Ñведений о файле" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "" #: libgphoto2/gphoto2-filesys.c:2455 #, fuzzy msgid "The filesystem doesn't support getting storage information" msgstr "Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема не поддерживает изменение Ñведений о файле" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Данные повреждены" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Файл ÑущеÑтвует" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Каталог не найден" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Файл не найден" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "Каталог ÑущеÑтвует" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "ВыполнÑетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°-вывода" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "ÐеабÑолютный путь" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "ДейÑтвие отменено" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "" #: libgphoto2/gphoto2-result.c:57 #, fuzzy msgid "OS error in camera communication" msgstr "Проблема уÑтановки ÑкороÑти обмена данными Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð¾Ð¼" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° драйвера фотоаппарата" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" #~ msgid "%s is a file type for which no thumbnail is provided" #~ msgstr "%s отноÑитÑÑ Ðº одному из типов файлов, не имеющих миниатюр" #~ msgid "Unavailable" #~ msgstr "нет данных" #, fuzzy #~ msgid "Unknown (some kind of error)" #~ msgstr "ÐеизвеÑтно что (какаÑ-то ошибка))" #, fuzzy #~ msgid "PTP: Store Not Available" #~ msgstr "Причина неизвеÑтна" #, fuzzy #~ msgid "ISO Auto Time" #~ msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ" #, fuzzy #~ msgid "Unknown (%04x)" #~ msgstr "ÐеизвеÑтно" #~ msgid "Could not find any driver for '%s'" #~ msgstr "Ðе найден драйвер Ð´Ð»Ñ '%s'" #~ msgid "No additional information available." #~ msgstr "Ðет дополнительных Ñведений." #, fuzzy #~ msgid "Deleting '%s' from folder '%s'..." #~ msgstr "Копирование '%s' из папки '%s'..." #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "Копирование '%s' из папки '%s'..." #~ msgid "Date and Time (readonly)" #~ msgstr "Дата и Ð²Ñ€ÐµÐ¼Ñ (только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ)" #~ msgid "Firmware revision (readonly)" #~ msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾ÑˆÐ¸Ð²ÐºÐ¸ (только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ)" #~ msgid "Power (readonly)" #~ msgstr "Питание (только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ)" #, fuzzy #~ msgid "" #~ "Download program for Casio QV cameras. Originally written for gphoto-0.4. " #~ "Adapted for gphoto2 by Lutz Mueller ." #~ msgstr "" #~ "Программа ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ð¹ Ð´Ð»Ñ Polaroid DC700. Первоначально " #~ "напиÑана - Ryan Lantzer Ð´Ð»Ñ gphoto-4.x. ÐÐ´Ð°Ð¿Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ " #~ "gphoto2 - Lutz Mueller ." #~ msgid "Unsupported image type" #~ msgstr "Ðеподдерживаемый формат изображениÑ" #~ msgid "Could not follow the link '%s' (%m)." #~ msgstr "Ðевозможно поÑледовать ÑÑылке '%s' (%m)." #~ msgid "Could not follow the link '%s' in '%s' (%m)." #~ msgstr "Ðевозможно поÑледовать ÑÑылке '%s' in '%s' (%m)." #~ msgid "View hidden directories" #~ msgstr "ПроÑматривать Ñкрытые каталоги" #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for KBGear JamCam v2.0 & v3.0 digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Поддержка цифровых фотоаппаратов KBGear JamCam v2.0 & v3.0\n" #~ "оÑнована на иÑÑледованиÑÑ… протокола передачи данных по поÑледовательному " #~ "порту.\n" #~ "\n" #~ msgid "Self Timer (only next picture)" #~ msgstr "ÐвтоÑпуÑк (только Ñлед. Ñнимок)" #~ msgid "2.0m" #~ msgstr "2.0м" #~ msgid "0.5m" #~ msgstr "0.5м" #~ msgid "0.1m" #~ msgstr "0.1м" #~ msgid "Day-lt" #~ msgstr "Дневной" #~ msgid "No manual" #~ msgstr "Ðет руководÑтва" #~ msgid "" #~ "Mars MR97310 camera.\n" #~ "There are %i photos in it. \n" #~ msgstr "" #~ "Фотоаппарат Mars MR97310.\n" #~ "Содержит %i Ñнимков. \n" #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for Panasonic Coolshot digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Поддержка цифровых фотоаппаратов Panasonic Coolshot\n" #~ "оÑнована на иÑÑледованиÑÑ… протокола передачи через поÑледовательный " #~ "порт.\n" #~ "\n" #~ msgid "" #~ "PTP2 driver\n" #~ "(c)2001-2003 by Mariusz Woloszyn .\n" #~ "Enjoy!" #~ msgstr "" #~ "Драйвер PTP2\n" #~ "(c)2001-2003 - Mariusz Woloszyn .\n" #~ "ПользуйтеÑÑŒ!" #~ msgid "" #~ "Model: %s\n" #~ " device version: %s\n" #~ " serial number: %s\n" #~ "Vendor extension ID: 0x%08x\n" #~ "Vendor extension description: %s\n" #~ msgstr "" #~ "Модель: %s\n" #~ " верÑÐ¸Ñ ÑƒÑтройÑтва: %s\n" #~ " Ñерийный номер: %s\n" #~ "ID фирменного дополнениÑ: 0x%08x\n" #~ "ОпиÑание фирменного дополнениÑ: %s\n" #, fuzzy #~ msgid "auto red eye" #~ msgstr "Против краÑных глаз" #, fuzzy #~ msgid "on red eye" #~ msgstr "Против краÑных глаз" #, fuzzy #~ msgid "spot" #~ msgstr "Точечный" #~ msgid "Camera Time" #~ msgstr "Ð’Ñ€ÐµÐ¼Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°" #~ msgid "Number of values" #~ msgstr "ЧиÑло значений" #~ msgid "Current value" #~ msgstr "Текущее значение" #~ msgid "Date Time" #~ msgstr "Дата ВремÑ" #, fuzzy #~ msgid "Colour Mode" #~ msgstr "Режим цвета" #, fuzzy #~ msgid "Exposure Bracketing Distance" #~ msgstr "Режим ÑкÑпозамера" #, fuzzy #~ msgid "Incadescent" #~ msgstr "Лампа накаливаниÑ" #~ msgid "%sCamera ID: %s\n" #~ msgstr "%sID фотоаппарата: %s\n" #~ msgid "Couldn't open camera.\n" #~ msgstr "Ðевозможно открыть фотоаппарат.\n" #~ msgid "Error opening camera\n" #~ msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°\n" #~ msgid "" #~ "Sony DSC-F1 Digital Camera Support\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Based on the chotplay CLI interface from\n" #~ "Ken-ichi Hayashi\n" #~ "\n" #~ "This lib may not work. YMMV\n" #~ msgstr "" #~ "Поддержка фотоаппарата Sony DSC-F1\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Ðа оÑнове конÑольной верÑии chotplay от\n" #~ "Кен-Ичи ХайÑши\n" #~ "\n" #~ "Работать навернÑка не будет!\n" #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for digital cameras with a sunplus spca50x chip based on several " #~ "other gphoto2 camlib modules and the information kindly provided by " #~ "Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \n" #~ "Поддержка фотоаппаратов Ñ Ð¼Ð¸ÐºÑ€Ð¾Ñхемой sunplus spca50x оÑнована на других " #~ "модулÑÑ… gphoto2 и ÑведениÑÑ… любезно предоÑтавленных Mustek.\n" #~ "\n" #~ msgid "Could not open '%s'" #~ msgstr "Ðевозможно открыть '%s'" #~ msgid "Could not load required camera driver '%s'." #~ msgstr "Ðевозможно загрузить драйвер фотоаппарата '%s'." #~ msgid "Could not find folder '%s'." #~ msgstr "Ðе найдена папка '%s'." #~ msgid "An error occured while reading '/proc/meminfo' ('%m')." #~ msgstr "Ошибка во Ð²Ñ€ÐµÐ¼Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ '/proc/meminfo' ('%m')." #~ msgid "" #~ "For the A50, using 115200 may effectively be slower than using 57600\n" #~ "If you experience a lot of serial transmission errors, try to have your " #~ "computer as idle as possible\n" #~ " (i.e. no disk activity)\n" #~ msgstr "" #~ "Ð”Ð»Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸ A50 ÑкороÑть 115200 может оказатьÑÑ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½ÐµÐµ чем 57600\n" #~ "ЕÑли возникает много ошибок передачи данных, попытайтеÑÑŒ не нагружать " #~ "ÑиÑтему задачами\n" #~ " (например Ñнизить активноÑть жёÑткого диÑка)\n" #, fuzzy #~ msgid "Incadesent" #~ msgstr "Лампа накаливаниÑ" #, fuzzy #~ msgid "Could not find any driver for '%s' / '%s'" #~ msgstr "Ðе найден драйвер Ð´Ð»Ñ '%s'" #, fuzzy #~ msgid "No thumbnail could be found for %s" #~ msgstr "Ðе найден файл звукозапиÑи Ð´Ð»Ñ %s" #, fuzzy #~ msgid "" #~ "Expected %i, got %i. Please report this error to ." #~ msgstr "" #~ "Сообщайте об ошибках и уÑпехах по адреÑу gphoto-devel@lists.sourceforge." #~ "net.\n" #, fuzzy #~ msgid "" #~ "Expected %i bytes, got %i. Please report this error to ." #~ msgstr "" #~ "Сообщайте об ошибках и уÑпехах по адреÑу gphoto-devel@lists.sourceforge." #~ "net.\n" #, fuzzy #~ msgid "" #~ "Communication error even after 2 retries. Please contact ." #~ msgstr "" #~ "Сообщайте об ошибках и уÑпехах по адреÑу gphoto-devel@lists.sourceforge." #~ "net.\n" #, fuzzy #~ msgid "Could not identify camera based on name \"%s\"" #~ msgstr "Ðевозможно получить Ð¸Ð¼Ñ Ð´Ð¸Ñка: %s" #, fuzzy #~ msgid "Driver Configuration" #~ msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñ„Ð¾Ñ‚Ð¾Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð°" #, fuzzy #~ msgid "Not implemented!" #~ msgstr "Ещё не реализовано" libgphoto2-2.5.9/po/fr.po0000644000175000001440000130162212623156272012115 00000000000000# gPhoto French translation # Copyright © 2001 Jérôme Fenal # Copyright © 2003, 2009, 2012, 2013, 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # # Aurélien Croc , 2003. # Dimitri Duc , 2009. # David Prévot , 2012-2014. msgid "" msgstr "" "Project-Id-Version: libgphoto2 2.5.6\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-12-23 10:22-0400\n" "Last-Translator: David Prévot \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.5\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" "Adc65\n" "Benjamin Moos " #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" "L'appareil photographique ne semble pas utiliser de mémoire CompactFlash\n" "Malheureusement, ce n'est pas encore pris en charge pour le moment\n" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" "L'appareil a pris %d photographies et utilise de la mémoire CompactFlash.\n" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "L'équipe du pilote Linux Agfa CL20\n" " Écrivez-nous à cl20@poeml.de \n" " Venez sur http://cl20.poeml.de " #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "L'appareil photographique USB a une puce Aox.\n" "Nombre d'images basse résolution = %i\n" "Nombre d'images haute résolution = %i\n" "Nombre d'images = %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Pilote générique Aox\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "Le cadre numérique USB a une puce AX203\n" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "Les cadres numériques basés sur AX203 existent avec de nombreuses\n" "résolutions. Le pilote gPhoto pour ces périphériques permet\n" "d'envoyer, recevoir et effacer des images du cadre numérique." #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "Pilote de cadre numérique USB AX203\n" "Hans de Goede \n" "Ce pilote permet d'envoyer, recevoir et effacer des images du\n" "cadre numérique." #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 msgid "Picture Frame Configuration" msgstr "Configuration du cadre numérique" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "Synchroniser les données et date d'image avec l'ordinateur" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "Nombre d'images : %i\n" "Version de microcode : %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Rétroconception des données d'images par :\n" "Jeff Laing \n" "\n" "Mis en Å“uvre en utilisant des documents trouvés\n" "sur le web. Permission accordée par Vision." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "Impossible de créer le répertoire %s." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "Impossible de supprimer le répertoire %s." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "échec du verrouillage des touches." #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*inconnu*" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image : échec de canon_usb_list_all_dirs() initial avec " "l'état %li" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image : échec de canon_usb_list_all_dirs() final avec " "l'état %i" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "" "Nom « %s » (%li caractères) trop long, au plus 30 caractères sont permis." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "Lettres minuscules dans %s non autorisées." #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory : erreur : message initial trop court (%i < minimum " "%i)" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_directory : fin du paquet atteinte en examinant la première " "entré du répertoire" #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "" "anon_int_list_directory : rencontre d'une entrée de répertoire tronquée" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Fichier protégé en écriture." #: camlibs/canon/canon.c:3717 #, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_get_info_func : erreur : message initial trop court (%i < minimum " "%i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "" "Impossible d'extraire la vignette JPEG des données : pas de début ou de fin" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "" "Impossible d'extraire la vignette JPEG des données : les données ne sont pas " "en JFIF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "Paramètre « %s » NULL dans %s, ligne %i" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" "Le programme ne sait pas comment gérer la valeur camera->port->type %i, " "alias 0x%x dans %s, ligne %i." #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "Erreur fatale : valeur CRC initiale pour la longueur %d inconnue\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "Impossible de déterminer la valeur CRC initiale\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "Avertissement : CRC non vérifié (ajout longueur %d, valeur 0x%04x) " "#########################\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "Mode de compatibilité" #: camlibs/canon/library.c:98 msgid "Thumbnail" msgstr "Vignette" #: camlibs/canon/library.c:99 msgid "Full Image" msgstr "Image entière" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "Pose longue" #: camlibs/canon/library.c:216 msgid "Auto focus: one-shot" msgstr "Autofocus : one-shot" #: camlibs/canon/library.c:217 msgid "Auto focus: AI servo" msgstr "Autofocus : AI servo" #: camlibs/canon/library.c:218 msgid "Auto focus: AI focus" msgstr "Autofocus : AI focus" #: camlibs/canon/library.c:219 msgid "Manual focus" msgstr "Mise au point manuelle" #: camlibs/canon/library.c:224 msgid "Beep off" msgstr "Son désactivé" #: camlibs/canon/library.c:225 msgid "Beep on" msgstr "Son activé" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 msgid "Flash off" msgstr "Flash désactivé" #: camlibs/canon/library.c:231 msgid "Flash on" msgstr "Flash activé" #: camlibs/canon/library.c:232 msgid "Flash auto" msgstr "Flash automatique" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "AUTO" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "P" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "Tv" #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "Av" #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "M" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "A-DEP" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "M-DEP" #: camlibs/canon/library.c:267 msgid "Manual 2" msgstr "Manuel 2" #: camlibs/canon/library.c:268 msgid "Far scene" msgstr "Scène éloignée" #: camlibs/canon/library.c:269 msgid "Fast shutter" msgstr "Temps de pose court" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "Temps de pose long" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "Scène de nuit" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "Niveaux de gris" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Sépia" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 msgid "Portrait" msgstr "Portrait" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Spot" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Macro" #: camlibs/canon/library.c:277 msgid "BW" msgstr "N/B" #: camlibs/canon/library.c:278 msgid "PanFocus" msgstr "Mise au point panoramique" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "Vivid" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 msgid "Neutral" msgstr "Neutre" #: camlibs/canon/library.c:282 msgid "Long shutter" msgstr "Temps de pose long" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "Super macro" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "Feuillage" #: camlibs/canon/library.c:285 msgid "Indoor" msgstr "Intérieur" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "Feux d'artifice" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "Plage" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "Sous-marin" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "Neige" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "Enfants et animaux" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "Cliché de nuit" #: camlibs/canon/library.c:292 msgid "Digital macro" msgstr "Macro numérique" #: camlibs/canon/library.c:293 msgid "MyColors" msgstr "MesCouleurs" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "Photographies en film" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "Brut" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "Brut 2" # Taille/qualité #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "Petit JPEG normal" #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "Petit JPEG fin" #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "Moyen JPEG normal" #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "Moyen JPEG fin" #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "Grand JPEG normal" #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "Grand JPEG fin" #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "Brut et petit JPEG normal" #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "Brut et petit JPEG fin" #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "Brut et moyen JPEG normal" #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "Brut et moyen JPEG fin" #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "Brut et grand JPEG normal" #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "Brut et grand JPEG fin" #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" "C'est le pilote pour les appareils Canon PowerShot, Digital IXUS, IXY\n" " Digital et EOS Digital en mode natif (parfois appelé « normal »). Ce\n" " pilote peut aussi être utilisé avec quelques caméras numériques\n" " Canon permettant de prendre des clichés.\n" "Il contient le code de communication par port série ou USB, mais pas\n" " encore pour la connexion Firewire (IEEE 1394).\n" "Il est conçu pour fonctionner avec plus de 70 modèles aussi anciens\n" " que le PowerShot A5 et le Pro70 de 1998 et des plus récents comme le\n" " PowerShot A510 et l'EOS 350D de 2005.\n" "Il n'a pas été vérifié avec les modèles EOS 1D et EOS1Ds.\n" "Pour l'appareil A50, une vitesse de 115200 bps peut rendre les\n" " opérations plus lentes qu'à 57600 bps.\n" "Si vous remarquez beaucoup d'erreurs de transmission, essayer de\n" " minimiser l'activité des disques (en fermant tous les programmes\n" " non nécessaires par exemple).\n" #: camlibs/canon/library.c:497 #, c-format msgid "Camera unavailable: %s" msgstr "Appareil non disponible : %s" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Éteindre l'appareil" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Erreur d'acquisition d'image" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Impossible d'obtenir le nom du disque : %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Aucune raison disponible" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Impossible d'obtenir des renseignements sur le disque : %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "Erreur interne nº 1 dans get_file_func() (%s, ligne %i)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "Impossible de trouver un fichier audio pour %s" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" " Disque %s\n" " %11s octets au total\n" " %11s octets disponibles" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "Transformateur" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "sur batterie" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "alimentation : bonne" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "alimentation : mauvaise" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "Indisponible : %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (heure de l'hôte %s%i secondes)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Identification de l'appareil :\n" " Modèle : %s\n" " Propriétaire : %s\n" "\n" "État énergie : %s\n" "\n" "Renseignements de mémoire flash :\n" "%s\n" "\n" "Heure : %s\n" #: camlibs/canon/library.c:1145 msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "Pilote pour Canon PowerShot par\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "Ajouts du modèle A5 par Ole W. Saastad\n" "Améliorations supplémentaires par\n" " Holger Klemm\n" " Stephen H. Westin" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Erreur de suppression de fichier" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Erreur de suppression du fichier de vignette associé" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "" "Les vitesses supérieures à 57600 ne sont pas possibles pour envoyer vers " "l'appareil" #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Impossible d'obtenir la lettre de la mémoire flash" #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "Impossible de télécharger, pas de nom de répertoire libre disponible.\n" "Le répertoire 999CANON existe et contient déjà une image AUT_9999.JPG." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Impossible de créer le répertoire \\DCIM." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Impossible de créer le répertoire de destination." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "Configuration de l'appareil et du pilote" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Réglages de l'appareil photographique" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 msgid "Owner Name" msgstr "Nom du propriétaire" # camlibs/canon/canon.h:ligne 65 #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 msgid "Capture Size Class" msgstr "Classe de taille d'acquisition" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "Vitesse ISO" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "Inconnue" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 msgid "Shooting mode" msgstr "Mode de prise de vue" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 msgid "Shutter Speed" msgstr "Temps de pose" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "Zoom" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "Ouverture" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Correction d'exposition" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 msgid "Image Format" msgstr "Format d'image" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Mode de mise au point" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Mode de flash" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Son" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 msgid "Camera Actions" msgstr "Action de l'appareil photographique" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "" "Synchroniser la date et l'heure de l'appareil avec celles de l'ordinateur" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 msgid "Camera Status Information" msgstr "Renseignements sur l'état de l'appareil" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "Modèle de l'appareil photographique" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Date et heure" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Erreur" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 msgid "Firmware Version" msgstr "Version de microcode" #: camlibs/canon/library.c:1956 msgid "Power" msgstr "Alimentation" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "Pilote" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Afficher tous les fichiers" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "Conserver le nom du fichier lors du chargement" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Appareil non disponible" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Le nom du propriétaire a changé" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "impossible de modifier le nom du propriétaire" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "Classe de taille d'acquisition modifiée" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "Réglage de classe de taille d'acquisition incorrect" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "Paramètre de vitesse ISO incorrect" #: camlibs/canon/library.c:2056 msgid "ISO speed changed" msgstr "Vitesse ISO modifiée" #: camlibs/canon/library.c:2058 msgid "Could not change ISO speed" msgstr "Impossible de modifier la vitesse ISO" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "Paramètre du mode de prise de vue incorrect" #: camlibs/canon/library.c:2085 msgid "Shooting mode changed" msgstr "Mode de prise de vue modifié" #: camlibs/canon/library.c:2087 msgid "Could not change shooting mode" msgstr "Impossible de modifier le mode de prise de vue" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "Paramètre de temps de pose incorrect" #: camlibs/canon/library.c:2114 msgid "Shutter speed changed" msgstr "Temps de pose modifié" #: camlibs/canon/library.c:2116 msgid "Could not change shutter speed" msgstr "Impossible de modifier le temps de pose" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 msgid "Invalid aperture setting" msgstr "Paramètre d'ouverture incorrect" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 msgid "Aperture changed" msgstr "Ouverture modifiée" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 msgid "Could not change aperture" msgstr "Impossible de modifier l'ouverture" #: camlibs/canon/library.c:2167 msgid "Invalid exposure compensation setting" msgstr "Paramètre de correction d'ouverture incorrect" #: camlibs/canon/library.c:2170 msgid "Exposure compensation changed" msgstr "Correction d'exposition modifiée" #: camlibs/canon/library.c:2172 msgid "Could not change exposure compensation" msgstr "Impossible de modifier la correction d'exposition" #: camlibs/canon/library.c:2194 msgid "Invalid image format setting" msgstr "Paramètre de format d'image incorrect" #: camlibs/canon/library.c:2198 msgid "Image format changed" msgstr "Format d'image modifié" #: camlibs/canon/library.c:2200 msgid "Could not change image format" msgstr "Impossible de modifier le format d'image" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "Réglage du mode de mise au point incorrect" #: camlibs/canon/library.c:2226 msgid "Focus mode changed" msgstr "Mode de mise au point modifié" #: camlibs/canon/library.c:2228 msgid "Could not change focus mode" msgstr "Impossible de modifier le mode de mise au point" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "Paramètre de mode sonore incorrect" #: camlibs/canon/library.c:2255 msgid "Beep mode changed" msgstr "Mode sonore modifié" #: camlibs/canon/library.c:2257 msgid "Could not change beep mode" msgstr "Impossible de modifier le mode sonore" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "Niveau de zoom modifié" #: camlibs/canon/library.c:2276 msgid "Could not change zoom level" msgstr "Impossible de modifier le niveau du zoom" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "Paramètre du mode de flash incorrect" #: camlibs/canon/library.c:2332 msgid "Flash mode changed" msgstr "Mode de flash modifié" #: camlibs/canon/library.c:2334 msgid "Could not change flash mode" msgstr "Impossible de modifier le mode de flash" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "mise à l'heure" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "impossible de mettre à l'heure" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "" "Type %i = 0x%x de port donné non pris en charge. Initialisation impossible." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Batteries à plat, extinction de l'appareil." #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "Erreur : message inattendu" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "Erreur : message dépassé" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "Erreur : désynchronisé." #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "Erreur : type de paquet inattendu." #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "Erreur : erreur de format du message." #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "Erreur : message2 inattendu." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Chargement du fichier…" #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Récupération du fichier…" #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "canon_serial_get_dirents : canon_serial_dialogue n'a pas réussi à obtenir " "les entrées du répertoire" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" "canon_serial_get_dirents : paquet dirent initial trop petit (seulement " "%i octets)" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "canon_serial_get_dirents : impossible d'allouer %i octets de mémoire" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "" "canon_serial_get_dirents : impossible de lire une autre entrée de répertoire" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "canon_serial_get_dirents : entrée de répertoire tronquée reçue" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "canon_serial_get_dirents : trop d'entrées, probablement en boucle." #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents : impossible de modifier la taille du tampon dirent " "à %i octets" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "Erreur de modification de vitesse." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Réinitialisation du protocole…" #: camlibs/canon/serial.c:1311 msgid "Camera OK." msgstr "Appareil OK." #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Recherche de l'appareil…" #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Tentative de contact de l'appareil…" #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Erreur de communication 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Pas de réponse de l'appareil" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Réponse non reconnue" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "« %s » détecté, alias « %s »" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "Modèle « %s » inconnu" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "Mauvaise fin de transfert" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Erreur de communication 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Erreur de communication 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Modification de vitesse… Attente…" #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "Erreur de modification de vitesse" #: camlibs/canon/serial.c:1454 msgid "Error waiting for ACK during initialization, retrying" msgstr "" "Erreur d'attente d'accusé de réception pendant l'initialisation, nouvel " "tentative" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "Erreur d'attente d'accusé de réception pendant l'initialisation" #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Connecté à l'appareil photographique" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "" "Erreur : une condition d'erreur fatale a été détectée, impossible de " "continuer " #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "Erreur : %d est trop grand" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Récupération de la vignette…" #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "Non reconnu" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "Impossible d'établir une initiation de connexion à l'appareil." #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "L'appareil était déjà actif" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "L'appareil était réveillé" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "Réponse initiale « %c » de l'appareil non reconnue" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" "Échec de l'étape nº 2 d'initialisation : (« %s » en lecture de %i). Appareil " "non opérationnel." #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "Échec de l'étape nº 2 d'initialisation. (%i octets renvoyés, %i attendus). " "Appareil non opérationnel." #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" "Échec de l'étape nº 3 d'initialisation : « %s » en lecture de %i. Appareil " "non opérationnel." #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" "Échec de l'étape nº 3 d'initialisation. (%i renvoyé, %i attendu). Appareil " "non opérationnel." #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" "Échec de l'étape nº 3 d'initialisation : « %s » en écriture sur %i. Appareil " "non opérationnel." #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" "Échec de l'étape nº 4 : « %s » en lecture de %i. Appareil non opérationnel." #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" "Échec de l'étape nº 4 (%i renvoyé, %i attendu). Appareil non opérationnel." #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "Appareil non prêt, échec de plusieurs requêtes d'identification de " "l'appareil : %s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "Appareil non prêt, échec de get_battery : %s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys : longueur inattendue renvoyée par la fonction « lock " "keys » (%i octets, %i attendus)" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys : longueur renvoyée inattendue (%i octets, %i attendus)" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_unlock_keys : longueur renvoyée inattendue (%i octets, %i attendus)" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_get_body_id : longueur de données renvoyée inattendue (%i octets, " "%i attendus)" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Réception des données…" #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "Plus de mémoire : %d octets nécessaires." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes : échec de canon_usb_dialogue" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "canon_usb_set_file_attributes : canon_usb_dialogue renvoie un état d'erreur " "0x%08x de l'appareil" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "Impossible de lire le fichier « %s »" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "Plus de mémoire : %ld octets nécessaires." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "Échec d'envoi de fichier." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "Fichier trop grand. Vous pourriez ayez besoin d'éteindre puis de rallumer " "l'appareil avant de charger d'autres fichiers." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" "canon_usb_get_dirents : impossible de faire tenir la charge dans le tampon, " "« %.96s » (tronqué) trop long." #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents : échec de récupération des entrées de répertoires par " "canon_usb_long_dialogue, %i renvoyé" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" "canon_usb_list_all_dirs : impossible de faire tenir la charge dans le " "tampon, « %.96s » (tronqué) trop long." #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs : échec de récupération des entrées de répertoires " "par canon_usb_long_dialogue, %i renvoyé" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "« %s » détecté." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "Le nom de l'appareil « %s » ne correspond à aucun appareil connu" #: camlibs/casio/casio-qv.c:152 #, c-format msgid "Image type %d not supported" msgstr "Type %d d'image non géré" #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "Image %s protégée contre la suppression." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" "Cadre du pilote écrit par Lutz Mueller .\n" "Ce programme contient du code source de QVplay, écrit par Ken-ichi HAYASHI < " "xg2k-hys@asahi-net.or.jp> et Jun-ichiro « itojun » Itoh .\n" "L'intégration de QVplay a été réalisée par Michael Haardt ." #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "Niveau de la batterie : %.1f volts. Révision : %08x." #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "Configuration de l'appareil" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "Batterie" #: camlibs/casio/casio-qv.c:275 msgid "Brightness" msgstr "Luminosité" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 msgid "Too bright" msgstr "Trop clair" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 msgid "Too dark" msgstr "Trop sombre" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "OK" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "Le ClickSmart 310 de Logitech contient %i photographie.\n" msgstr[1] "Le ClickSmart 310 de Logitech contient %i photographies.\n" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" "Deux réglages de résolution sont possibles : 352×288 et 176×144.\n" "Les données photographiques sont au format JPEG au téléchargement,\n" "leur taille n'est donc pas prédéterminée. Par conséquent, le nombre\n" "maximal de photographies annoncé n'est qu'une approximation.\n" "Toutes les options de gPhoto2 fonctionneront, sauf les suivantes\n" "qui ne sont pas prises en charge par le matériel.\n" "Options non prises en charge :\n" "\tSuppression de photographies individuelles ou\n" "\t sélectionnées (gphoto2 -d)\n" "\tAcquisition (gphoto2 --capture ou --capture-image)\n" "Cependant, l'acquisition est possible en utilisant l'interface\n" "webcam, prise en charge par le module de noyau spca50x.\n" "L'interface graphique utilisant GTKam a été testée et fonctionne.\n" "Cependant, l'appareil ne produit pas de vignette séparée. Puisque\n" "les images sont de toute façon déjà petites et en basse résolution,\n" "le pilote télécharge simplement l'image actuelle pour l'utiliser en\n" "vignette. L'appareil permet d'acquérir en mode « extrait vidéo ».\n" "Les clichés sont enregistrées comme une succession d'image.\n" "L'utilisateur peut ensuite les animer avec (par exemple) la\n" "fonction « animate » d'ImageMagick. Plus de précisions sur les\n" "fonctions de cet appareil photographique sont disponibles dans\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "Pilote Logitech Clicksmart 310\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" "Pour les appareils faits de pièces de S&Q Technologies, qui ont\n" "comme identifiant de fabricant USB 0x2770 et identifiant de produit\n" "0x905C, 0x9050, 0x9051, 0x9052 ou 0x913D. Les photographies sont\n" "sauvegardées au format PPM.\n" "\n" "Certains de ces appareils permettent la suppression logicielle de\n" "toutes les photographies. D'autre ne le permettent pas. Aucun des\n" "appareils pris en charge ne permet l'acquisition d'images. Tous\n" "peuvent faire de l'acquisition de prévisualisation (image acquise\n" "puis envoyée à l'ordinateur). Si la suppression de toutes les\n" "images n'est pas possible avec cet appareil, alors l'acquisition\n" "de prévisualisation aura pour effet de supprimer aussi ce qui est\n" "sur l'appareil\n" "\n" "Le chargement de fichiers n'est pas possible pour ces appareils. De\n" "plus, aucun des appareils pris en charge ne permet la suppression de\n" "photographies individuelles en utilisant une commandes logicielle.\n" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "Pilote générique sq905C\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Le type d'image n'est pas pris en charge" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "Nombre d'images : %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "Seul le dossier racine est géré, la liste des fichiers du répertoire « %s » " "a été demandée." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Problème à l'obtention du nombre de fichiers" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Problème à l'obtention des renseignements sur l'image" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Le type d'acquisition n'est pas pris en charge" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (la batterie est chargée à %d %%)" #: camlibs/dimera/dimera3500.c:455 #, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d images utilisées sur environ %d (haute résolution) ou %d (basse " "résolution).\n" "Caractéristiques de l'appareil : %s, %s, %s, %s?\n" "Le flash est %s, %s et %s\n" "La résolution est positionnée à %s\n" "L'appareil fonctionne sur %s %s\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Flash" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 msgid "No Flash" msgstr "Pas de flash" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Double diaphragme" #: camlibs/dimera/dimera3500.c:468 msgid "No Dual Iris" msgstr "Pas de double diaphragme" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "Interrupteur de choix de la résolution" #: camlibs/dimera/dimera3500.c:470 msgid "No Resolution Switch" msgstr "Pas d'interrupteur de choix de la résolution" #: camlibs/dimera/dimera3500.c:472 msgid "No Power Light" msgstr "Pas d'indicateur de mise sous tension" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "Sous tension" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "Hors tension" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "prêt" #: camlibs/dimera/dimera3500.c:476 msgid "Not ready" msgstr "Pas prêt" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "en mode remplissage" #: camlibs/dimera/dimera3500.c:478 msgid "Not in fill mode" msgstr "Pas en mode remplissage" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "basse (320×240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "haute (640×480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "externe" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "interne" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* Les petits problèmes d'image ou de communication\n" " sont souvent causés par une batterie déchargée.\n" "* Les images acquises à distance sur cet appareil\n" " sont stockées en mémoire temporaire et non sur la\n" " carte mémoire Flash.\n" "* Le contrôle de l'exposition lors de l'acquisition\n" " des images peut être réglé manuellement ou\n" " configuré en mode automatique\n" "* La qualité de l'image est actuellement inférieure\n" " à ce qu'elle pourrait être.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "Ce logiciel a été créé à l'aide de renseignements\n" "propriétaires appartenant à StarDot Technologies.\n" "\n" "Auteur :\n" " Brian Beattie \n" "Contributeurs :\n" " Chuck Homic \n" " Conversion des images brutes de l'appareil\n" " en RVB\n" " Dan Fandrich \n" " Renseignements sur le protocole, format\n" " d'images brutes, portage gPhoto2\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Problème de lecture d'image sur la mémoire flash" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Plus de mémoire" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "Téléchargement d'image…" #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Problème de téléchargement d'image" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "Téléchargement annulé par l'utilisateur" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Problème de prise de vue en temps réel" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Exposition" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "Ajustement automatique de l'exposition en prévisualisation" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "Niveau d'exposition en prévisualisation" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "Flash automatique lors de l'acquisition" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Problème d'ouverture de port" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Problème de réinitialisation de l'appareil" #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Problème de configuration de vitesse de communication avec l'appareil" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Ça ressemble à un modem, pas à un appareil photo" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "Liste des fichiers de « %s »…" #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "Liste des répertoires de « %s »…" #: camlibs/directory/directory.c:381 #, c-format msgid "Could not get information about '%s' (%s)." msgstr "Impossible d'obtenir des renseignements sur « %s » (%s)." #: camlibs/directory/directory.c:414 #, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Impossible d'obtenir des renseignements sur « %s » dans « %s » (%s)." #: camlibs/directory/directory.c:462 #, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Impossible de modifier l'heure du fichier « %s » dans « %s » (%s)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Impossible d'ouvrir « %s »." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" "Le navigateur de répertoire « camera » permet d'indexer les photographies " "sur disque." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "" "Mode de navigation de répertoire — écrit par Scott Fritzinger ." #: camlibs/directory/directory.c:671 #, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "" "Impossible de supprimer le fichier « %s » du répertoire « %s » (code " "d'erreur %i : %s)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" "Programme de téléchargement pour Digital Dream Enigma 1.3 par " ", adapté du pilote spca50x. Remerciements à " "l'équipe spca50x, dont le portage du pilote a été facile pour cet appareil. " #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "L'appareil n'a envoyé que %i octet(s), mais %i sont nécessaires." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Impossible de contacter l'appareil photo." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Réception d'en-tête imprévu (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "Mauvaise séquence d'échappement : 0x%02x attendu, 0x%02x reçu." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Mauvaises données — 0x%02x reçu, 0x%02x attendu." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "Mauvaises données — 0x%02x reçu, 0x%02x ou 0x%02x attendu." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "Mauvaise somme de contrôle — 0x%02x reçu, 0x%02x attendu." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "L'appareil a refusé la commande." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "L'appareil se réinitialise lui-même." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "L'appareil a envoyé l'octet 0x%02x inattendu." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Téléchargement…" #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "" "Impossible d'allouer %i octet(s) pour le téléchargement de la vignette." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "Impossible d'allouer %i octet(s) pour le téléchargement de l'image." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "L'appareil n'accepte pas le nom de fichier « %s »." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "" "Impossible d'initialiser le chargement (l'appareil a répondu avec 0x%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "Cet appareil ne ne permet pas la vitesse %i." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "Impossible de régler la vitesse à %i (l'appareil a répondu %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Basé sur fujiplay de Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "Le débit binaire %ld n'est pas possible." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Configuration d'appareil FUJI" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Date et heure" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "Identifiant" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Version : " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Modèle : " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "Mémoire disponible : " #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "Bibliothèque gsmart300\n" "Till Adam \n" "Jérôme Lodewyck \n" "Prise en charge des appareils Mustek gSmart 300\n" "basée sur plusieurs autres modules camlib gPhoto2 et\n" "les spécifications gentiment fournies par Mustek.\n" "\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Type de port non géré : %d. Ce pilote ne fonctionne qu'avec des appareils " "USB.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Impossible de réinitialiser l'appareil.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "L'appareil ne permet que la suppression du dernier fichier de l'appareil. " "Dans ce cas, c'est le fichier « %s »." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" "Date actuelle sur l'appareil : %3$02d/%2$02d/%1$04d %4$02d:%5$02d\n" "Capacité de la carte mémoire : %6$d\n" "Nombre d'images sur la carte : %7$d\n" "Estimation du nombre d'image disponible : %8$d\n" "Niveau de la batterie : %9$d %%." #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" "hp215\n" "Marcus Meissner \n" "Pilote pour accéder à l'appareil HP Photosmart 215.\n" "Adapté du programme hp215.\n" "Ce pilote permet de télécharger, prévisualiser et supprimer des images.\n" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "L'appareil USB est un iClick 5X.\n" "Le nombre d'images prises est %i\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" "Renseignements à propos des appareils ayant pour\n" "identifiant 0x2770:0x9153.\n" "\n" "L'utilisation d'un programme à interface graphique pour\n" "accéder à cet appareil n'est pas recommandée, sauf pour\n" "s'amuser ou pour essayer de faire sauter un fusible.\n" "En production, utilisez plutôt\n" "gphoto2 -P\n" "en ligne de commande.\n" "Remarque : le téléchargement d'extraits vidéo n'est\n" "pas possible.\n" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "pilote iClick 5X\n" "Theodore Kilgore \n" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Vues prises : %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "Bibliothèque jamcam v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "Téléchargement des données…" #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "Téléchargement de la vignette…" #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "L'appareil JD11 fonctionne relativement bien avec ce pilote.\n" "Une interface RS232 à 115 kbit/s est nécessaire au transfert d'images.\n" "Le pilote permet d'obtenir les :\n" "\n" " - vignettes (format PGM 64×48 ormat)\n" " - images complètes (format PPM 640×480)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "Pilote pour l'appareil Jenoptik JD11.\n" "Protocole rétroconçu en utilisant WINE et IDA." #: camlibs/jd11/jd11.c:186 msgid "JD11 Configuration" msgstr "Configuration du JD11" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Autres réglages" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Temps d'exposition en pose longue" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Réglages couleur" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "Rouge" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Vert" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Bleu" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Cet appareil contient une puce Jeilin JL2005A.\n" "Le nombre de photographies contenues est %i\n" # relire #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" "Ce pilote permet de gérer les appareils avec une puce\n" "Jeilin jl2005a.\n" "Ces appareils ne permettent pas la suppressions de\n" "photographies, ni l'envoi de données.\n" "Le décodage de photographies décompressées pourraient ne\n" "pas bien fonctionner et ne fonctionne pas aussi bien sur\n" "tous les appareils pris en charge.\n" "Si possible avec l'appareil, les images d'extraits vidéo\n" "sont téléchargés comme une séquence d'images consécutives.\n" "Pour obtenir plus de précisions, veuillez consulter\n" "libgphoto2/camlibs/README.jl2005a\n" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "Bibliothèque d'appareils jl2005a\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Cet appareil contient une puce Jeilin JL2005%c.\n" "Le nombre de photographies contenues est %i\n" # relire #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" "Ce pilote permet de gérer les appareils avec une puce\n" "Jeilin JL2005B, C ou D.\n" "Ces appareils ne permettent pas la suppressions de\n" "photographies, ni l'envoi de données.\n" "Si possible avec l'appareil, les images d'extraits vidéo\n" "sont téléchargés comme une séquence d'images consécutives.\n" "Pour obtenir plus de précisions, veuillez consulter\n" "libgphoto2/camlibs/README.jl2005c\n" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "Bibliothèque d'appareils jl2005bcd\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "Carte CompactFlash" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "L'appareil Kodak DC120 utilise le format de fichier KDC pour enregistrer les " "images. Pour visualiser les images téléchargées de l'appareil, vous devrez " "télécharger le programme « kdc2tiff ». Il est disponible en http://kdc2tiff." "sourceforge.net" #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Bibliothèque pour l'appareil Kodak DC120\n" "Scott Fritzinger \n" "Bibliothèque pour l'appareil Kodak DC120.\n" "(à la demande générale)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Réception des données…" #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "Attente de la fin de l'opération…" #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Fichier" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Type de fichier" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "Résolution du fichier" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 × 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 × 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Compression du fichier" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "Faible (meilleure qualité)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "Moyenne (bonne qualité)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "Haute (qualité correcte)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Acquisition" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Correction d'exposition" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Automatique" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Forcer" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Aucune" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Dispositif anti yeux rouges" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Activé" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Désactivé" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Autre" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Régler l'heure de l'appareil" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "Vitesse du port" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Nom de l'album" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Nom à mettre sur la carte lors du formatage." #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "Formater la carte CompactFlash" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Formater la carte et définir le nom de l'album." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Débogage" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Exécuter une commande prédéfinie\n" "avec les valeurs des paramètres." #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "Images dans l'appareil : %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" "De l'espace est disponible pour soit :\n" " %d images en compression faible ;\n" " %d images en compression moyenne ;\n" " %d images en compression élevé\n" #: camlibs/kodak/dc210/dc210.c:506 #, c-format msgid "Total pictures taken: %d\n" msgstr "Nombre total d'images prises : %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "Nombre total d'utilisations du flash : %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, c-format msgid "Firmware: %d.%d\n" msgstr "Microcode : %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, c-format msgid "Filetype: JPEG (" msgstr "Type de fichier : JPEG (" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "Type de fichier : FlashPix (" #: camlibs/kodak/dc210/dc210.c:527 #, c-format msgid "low compression, " msgstr "compression faible, " #: camlibs/kodak/dc210/dc210.c:529 #, c-format msgid "medium compression, " msgstr "compression moyenne, " #: camlibs/kodak/dc210/dc210.c:531 #, c-format msgid "high compression, " msgstr "compression élevée, " #: camlibs/kodak/dc210/dc210.c:533 #, c-format msgid "unknown compression %d, " msgstr "compression inconnue %d, " #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "résolution inconnu %d)\n" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "Le transformateur est connecté\n" #: camlibs/kodak/dc210/dc210.c:558 #, c-format msgid "AC adapter is not connected.\n" msgstr "Le transformateur n'est pas connecté.\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "Heure : %a %d %b %Y %T\n" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "Zoom : 58 mm\n" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "Zoom : 51 mm\n" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "Zoom : 41 mm\n" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "Zoom : 34 mm\n" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "Zoom : 29 mm\n" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "Zoom : macro\n" #: camlibs/kodak/dc210/dc210.c:580 #, c-format msgid "Unknown zoom mode %d\n" msgstr "Mode de zoom %d inconnu\n" #: camlibs/kodak/dc210/dc210.c:586 #, c-format msgid "Exposure compensation: %s\n" msgstr "Correction d'exposition : %s\n" #: camlibs/kodak/dc210/dc210.c:588 #, c-format msgid "Exposure compensation: %d\n" msgstr "Correction d'exposition : %d\n" #: camlibs/kodak/dc210/dc210.c:593 #, c-format msgid "Flash mode: auto, " msgstr "Mode de flash : automatique, " #: camlibs/kodak/dc210/dc210.c:595 #, c-format msgid "Flash mode: force, " msgstr "Mode de flash : forcé, " #: camlibs/kodak/dc210/dc210.c:597 #, c-format msgid "Flash mode: off\n" msgstr "Mode de flash : désactivé\n" #: camlibs/kodak/dc210/dc210.c:599 #, c-format msgid "Unknown flash mode %d, " msgstr "Mode de flash %d inconnu, " #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "dispositif anti yeux rouges activé.\n" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "dispositif anti yeux rouges désactivé.\n" #: camlibs/kodak/dc210/dc210.c:615 #, c-format msgid "No card in camera.\n" msgstr "Pas de carte mémoire dans l'appareil.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" "Nom de la carte : %s\n" "Espace libre sur la carte : %d ko\n" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "Cette bibliothèque a été testée avec un appareil Kodak DC 215 Zoom. Elle " "devrait également fonctionner avec les appareils DC 200 et DC 210. Si vous " "possédez un de ces appareils, veuillez envoyer un message à koltan@gmx.de " "pour signaler d'éventuels problèmes avec cette bibliothèque ou si tout " "fonctionne correctement." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Bibliothèque pour l'appareil Kodak DC215 Zoom.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "Attente…" #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Paramètre 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Paramètre 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Paramètre 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Modèle : Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "Version de microcode : %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "État des piles : %s, transformateur : %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "Nombre d'images : %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "Espace restant : haute : %d, moyenne : %d, basse : %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "État de la carte (%d) : %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "Nombre total de prises de vue : %d, utilisation du flash : %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Bibliothèque pour l'appareil Kodak DC240\n" "Scott Fritzinger et Hubert Figuiere \n" "Bibliothèque pour les appareils Kodak DC240, DC280, DC3400 et DC5000.\n" "Réécrit et mis à jour pour gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Faible" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Vide" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Incorrect" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Non utilisé" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "En cours d'utilisation" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "La carte est ouverte" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "Carte n'est pas ouverte" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "La carte n'est pas formatée" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Pas de carte" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "Une opération est actuellement en cours. Cet appareil n'en gère qu'une seule " "de façon concurrente, Veuillez attendre la fin de l'opération en cours." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "appareil inactif depuis plus de 9 secondes, réinitialisation.\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Problèmes connus :\n" "\n" "1. Si le Kodak DC3200 ne reçoit pas de commande pendant au moins " "10 secondes, il atteint son délai d'expiration et doit être réinitialisé. Si " "vous remarquez que l'appareil ne répond plus, resélectionnez l'appareil. " "Cela provoquera sa réinitialisation." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "Pilote Kodak DC3200\n" "Donn Morrison \n" "\n" "Questions et commentaires bienvenus." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "Cet appareil USB est un Kodak EZ200.\n" "Le nombre de photographies prises est %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "Pilote Kodak EZ200\n" "Jean-Francois Bucas \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Erreur de mise au point." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Erreur de diaphragme." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Erreur de stroboscope." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "Erreur de somme de contrôle EEPROM." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "Erreur interne (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "Erreur interne (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Pas de carte." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "Type de carte non prise en charge." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "Carte enlevée lors de son accès." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Numéro d'image incorrect." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "Impossible d'écrire sur la carte." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "Carte protégée en écriture." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "Plus d'espace sur la carte." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Image protégée." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "Pas assez de lumière." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Erreur de mise au point automatique." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Erreur système." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Paramètre incorrect." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "Cette commande ne peut pas être annulée." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Données de localisation trop grandes." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Données de localisation corrompues." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Commandes non prises en charge." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "Autre commande en cours d'exécution." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Erreur d'ordre de commandes. " #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Erreur inconnue." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "L'appareil vient de renvoyer une erreur inconnue. Veuillez signaler cela à " "l'équipe de développement %s en expliquant comment reproduire cette erreur : " "(0x%x,0x%x). Merci d'avance." #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Récupération de la liste des fichiers…" #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "Test de différentes vitesses…" #: camlibs/konica/library.c:338 msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "L'appareil n'a pas pu être contacté. Veuillez vérifier qu'il est connecté à " "l'ordinateur et allumé." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "%i images n'ont pas pu être effacées car elles sont protégées" #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Modèle : %s\n" "Numéro de série : %s,\n" "Version du matériel : %i.%i\n" "Version du logiciel : %i.%i\n" "Version du logiciel de test : %i.%i\n" "Nom : %s,\n" "Fabricant : %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Bibliothèque Konica\n" "Lutz Müller \n" "Gère tous les appareils Konica et plusieurs appareils HP." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Récupération de la configuration…" #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Configuration Konica" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Paramètres persistants" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "L'appareil doit-il émettre un son à la prise de vue ?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Heure du retardateur" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Heure d'extinction automatique" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Intervalle du projecteur de diapositives" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "Résolution" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Basse (576 × 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "Moyenne (1152 × 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Haute (1152 × 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Localisation" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Langue" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Aucune sélectionnée" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "Format de sortie TV" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "Ne pas afficher le menu TV" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Format de date" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "Mois/Jour/Année" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "Jour/Mois/Année" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Année/Mois/Jour" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Paramètres persistants de session" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Oui, dispositif anti yeux rouges" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Automatique, dispositif anti yeux rouges" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Mise au point" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "Fixe" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "Paramètres temporaires" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "Retardateur" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "Retardateur (image suivante uniquement)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Normal" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "Impossible de trouver les données de localisation en « %s »" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "Fichier de localisation trop grand." #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "Cette prévisualisation n'existe pas." #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "Les données ont été corrompues." #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "Le type %d de photographie n'est pas géré par cet appareil." #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "Impossible de supprimer l'image %s." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "Impossible de supprimer toutes les images." #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "Téléchargement de l'image…" #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "" "Impossible de charger cette image dans l'appareil. Une erreur s'est produite." #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "Il faut être en mode enregistrement pour acquérir des images." #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" "Aucune place disponible pour acquérir de nouvelles images. Vous devez " "supprimer quelques images." #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "Impossible d'acquérir de nouvelles images. Erreur inconnue" #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "Pas de réponse de l'appareil." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "Faible" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "Moyenne" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "Haute" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Icônes" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "2,0 m" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "0,5 m" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "0,1 m" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Balance des blancs" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "Bureau" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "Lumière naturelle" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "Dureté" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "Dur" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "Doux" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "Couleur" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "Lumière" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "Profondeur" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "Noir et blanc" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "Unique" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "Séquence de 9 images" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "Affichage de la date" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "N’importe où" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "Mode de visualisation" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "Mode d’enregistrement" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "Partout" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "Secteur" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "Lecture" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Enregistrement" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "JJ/MM/AAAA" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "AAAA/MM/JJ" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "MM/JJ/AAAA" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Modèle : %s\n" "Capacité : %i Mo\n" "Alimentation : %s\n" "Extinction automatique : %i min\n" "Mode : %s\n" "Images : %i/%i\n" "Affichage de la date : %s\n" "Date et heure : %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Bibliothèque pour Konica Q-M150\n" "Marcus Meissner \n" "Aurélien Croc (AP2C) \n" "http://www.ap2c.com\n" "Prise en charge du Konica Q-M150 français." #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "À propos du Konica Q-M150 :\n" "Cet appareil ne permet aucune modification\n" "de l'extérieur. Par conséquent, le système\n" "de configuration ne permet que de consulter\n" "la configuration, sans pouvoir la modifier.\n" "\n" "Si vous avez des problèmes avec ce pilote,\n" "veuillez envoyer un message à ses auteurs.\n" #: camlibs/largan/lmini/largan.c:228 msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "Pilote Largan\n" "Hubert Figuiere \n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" "Cet appareil USB semble être un LG GSM.\n" "Microcode : %s\n" "Version de microcode : %s\n" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" "Pilote générique LG GSM\n" "Guillaume Bedot \n" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Appareil Mars MR97310.\n" "%i image y est contenue.\n" msgstr[1] "" "Appareil Mars MR97310.\n" "%i images y sont contenues.\n" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" "Ce pilote prend en charge les appareils avec une puce\n" "Mars MR97310 (et les équivalent directs « Pixart PACx07 »).\n" "Ces appareils ne permettent pas la suppressions de\n" "photographies, ni l'envoi de données.\n" "Le décodage de photographies décompressées pourraient ne pas\n" "bien fonctionner et ne fonctionne pas aussi bien sur tous\n" "les appareils pris en charge.\n" "Le traitement de données de l'Argus QuickClix n'est PAS GÉRÉ\n" "Si possible avec l'appareil, les images d'extraits vidéo\n" "sont téléchargées comme une séquence d'images consécutives.\n" "Pour obtenir plus de précisions, veuillez consulter\n" "libgphoto2/camlibs/README.\n" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "Bibliothèque d'appareils Mars MR97310\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Modèle :\t\tMinolta Dimage V (%s)\n" "Révision de matériel :\t%s\n" "Révision de microcode :\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Mode de connexion :\t\t%1$s\n" "Correction d'exposition :\t%2$s\n" "Données d'exposition :\t\t%3$d\n" "Validité de la date :\t\t%4$s\n" "Date :\t\t\t\t/%7$02d/%6$02d/%5$d %8$02d:%9$02d:%10$02d\n" "Retardateur :\t\t\t%11$s\n" "Paramètres de qualité :\t\t%12$s\n" "Mode :\t\t\t\t%13$s\n" "Validité de l'ident. de carte :\t%14$s\n" "Identifiant de carte :\t\t%15$d\n" "Mode de flash :\t\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Distant" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Local" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Oui" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "Non" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Fine" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Standard" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Automatique\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Flash forcé\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Flash interdit\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Valeur incorrecte (%d)\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "Niveau de la batterie :\t\t%s\n" "Nombre de fichiers :\t\t%d\n" "Capacité minimale restante :\t%d\n" "Disponibilité :\t\t\t%s\n" "Chargement du flash :\t\t%s\n" "État de l'objectif :\t\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "Non pleine" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Pleine" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "Occupé" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "Libre" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "En cours de chargement" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "Prêt" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Normal\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "La direction de l'objectif ne correspond pas à la lumière du flash\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "Objectif non connecté\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "Valeur incorrecte pour l'état %d de l'objectif\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "État de la carte :\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "Protection en écriture" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "Carte non convenable" #: camlibs/minolta/dimagev/dimagev.c:406 #, c-format msgid "Bad value for card status %d" msgstr "Valeur incorrecte pour l'état %d de la carte" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Bibliothèque pour l'appareil Minolta Dimage V\n" "%s\n" "Gus Hartmann \n" "Remerciements à Minolta pour les spécifications ." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Flash : automatique (dispositif anti yeux rouges)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Flash : automatique" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Flash : actif (dispositif anti yeux rouges)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Flash : actif" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Flash : désactivé" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Flash : non défini" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Résumé pour Mustek MDC800 :\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "Pas de signalement d'état." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "Carte CompactFlash détectée\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Carte CompactFlash non détectée\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "Mode actuel : prise de vues\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "Mode actuel : lecture\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Batteries opérationnelles." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Batteries faibles." #: camlibs/mustek/mdc800.c:264 msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Bibliothèque gPhoto2 pour Mustek MDC-800\n" "Henning Zabel \n" "Porté pour gPhoto2 par Marcus Meissner \n" "Prise en charge des protocoles série et USB." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "Bibliothèque coolshot v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Déconnexion de l'appareil." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "Téléchargement de l'image %s." #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Envoi de l'image : %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "La taille du fichier est de %ld octets. La taille du fichier envoyé ne peut " "pas dépasser %i octets." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Envoi…" #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "Suppression de l'image %s." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Bibliothèque gPhoto pour Panasonic DC1000\n" "Mariusz Zynel \n" "\n" "Basée sur le programme dc1000 écrit par\n" "Fredrik Roubert et\n" "Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "Téléchargement de %s." #: camlibs/panasonic/dc1580.c:627 msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Bibliothèque gPhoto2 pour Panasonic DC1580\n" "Mariusz Zynel \n" "\n" "Basée sur le programme dc1000 écrit par\n" "Fredrik Roubert et\n" "Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "Téléchargement de « %s »…" #: camlibs/panasonic/l859/l859.c:582 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Mini caméscope PV-L859-K/PV-L779-K Panasonic\n" "\n" "Panasonic a introduit la technologie d'acquisition d'images appelée " "PHOTOSHOT pour la première fois dans cette série de mini caméscopes. Les " "fichiers sont stockées au format JPEG sur une carte flash interne, et " "peuvent être transférées par l'intermédiaire du port série intégré. Les " "fichiers sont enregistrées dans l'une des deux résolutions : NORMALE " "(320×240) ou FINE (640×480). Le capteur CCD derrière l'objectif ne possède " "que 300 000 pixels, et ne produit donc que des images de basse qualité." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Problèmes connus :\n" "\n" "Si des problèmes de communication surviennent, réinitialisez l'appareil et " "redémarrez l'application. Le pilote n'est pas encore assez robuste pour " "récupérer ces situations, en particulier si un problème survient alors que " "l'appareil n'est pas correctement arrêté à des vitesses supérieures à " "9600 bauds." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "Pilote de mini caméscope Panasonic PV-L859-K ou PV-L779-K\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" " L'espace mémoire total est de %8d octets.\n" " L'espace mémoire libre est de %8d octets.\n" " Nombre de fichiers : %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" " Auteurs : Till Adam\n" "\n" "et : Miah Gregory\n" " " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "Téléchargement de fichier…" #: camlibs/pccam600/library.c:249 msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" "Auteur : Peter Kajberg \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "pccam600_init : plus de %d blocs attendus, %d reçus" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "" "pccam600_get_file : indice %d, alors qu'un indice supérieur à %d était " "attendu" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "pccam600_close : la valeur de retour est %d au lieu de %d" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "pccam600_init : %d blocs attendus, %d reçus" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" "pccam600 init : erreur inattendue : gp_port_read a renvoyé %d au lieu de %d" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Programme de téléchargement pour plusieurs appareils Polaroid. Écrit " "initialement par Peter Desnoyers et adapté pour " "gPhoto2 par Nathan Stenzel et Lutz " "Mueller . \n" "Les tests du Polaroid 640SE ont été effectués par Michael Golden " "." #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Modèle : %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "Programme de téléchargement pour les appareils basés sur le GrandTek 98x. " "Écrit initialement par Chris Byrne et adapté pour gPhoto2 " "par Lutz Mueller . Améliorations du protocole et " "posttraitement pour Jenoptik JD350e par Michael Trawny . Corrections de bogues par Marcus Meissner ." #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "Qualité d'image" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Taille d'image" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Réglage du flash" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Autoextinction (en minute)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Renseignements" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "normale" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "fine" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "très fine" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "automatique" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "activé" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "désactivé" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "lecture" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "enregistrement" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "menu" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "batterie" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "secteur" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Réception d'en-tête inattendu (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Réception d'une réponse inattendue" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Erreur de somme de contrôle" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "L'appareil a refusé la commande." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "L'appareil a envoyé plus d'octets que prévu (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "Demande de renseignements sur l'image %i (= 0x%x), mais renseignements sur " "l'image %i reçus." #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "%i octets reçus d'une image de format inconnu. Veuillez écrire à %s pour " "demander de l'aide." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Programme de téléchargement pour appareil Polaroid DC700. Écrit initialement " "par Ryan Lantzer pour gPhoto 4.x. Adapté pour gPhoto2 par " "Lutz Mueller ." #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Appareil" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "Combien de temps avant l'arrêt de l'appareil ?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Image" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Date : %3$02i/%2$02i/%1$i %4$02i:%5$02i:%6$02i\n" "Nombre d'images prises : %7$i\n" "Nombre d'images libres : %8$i\n" "Version du logiciel : %9$s\n" "Débit : %10$s bauds\n" "Mémoire : %11$i mégaoctets\n" "Mode : %12$s\n" "Qualité de l'image : %13$s\n" "Réglage du flash : %14$s\n" "Renseignements : %15$s\n" "Retardateur : %16$s\n" "LCD : %17$s\n" "Extinction automatique : %18$i minutes\n" "Source d'énergie : %19$s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "Le type de port demandé (%i) n'est pas géré par ce pilote." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "CHDK n’a pas quitté le mode d’enregistrement." #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Cet appareil Canon ne prend pas en charge Canon Capture" #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, c-format msgid "Unknown value %04x" msgstr "Valeur %04x inconnue" #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, c-format msgid "Unknown value %04d" msgstr "Valeur %04d inconnue" #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "type de données %i inattendu" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "La valeur de cible n’est pas dans l’énumération." #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "Manuel" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 msgid "Automatic" msgstr "Automatique" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 msgid "One-push Automatic" msgstr "Automatique en une pression" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "Fluorescent" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Tungstène" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Nuageux" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "Ombre" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "Température de couleur" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "Préconfiguré" #: camlibs/ptp2/config.c:1415 msgid "Fluorescent Lamp 1" msgstr "Lampe fluorescente 1" #: camlibs/ptp2/config.c:1416 msgid "Fluorescent Lamp 2" msgstr "Lampe fluorescente 2" #: camlibs/ptp2/config.c:1417 msgid "Fluorescent Lamp 3" msgstr "Lampe fluorescente 3" #: camlibs/ptp2/config.c:1418 msgid "Fluorescent Lamp 4" msgstr "Lampe fluorescente 4" #: camlibs/ptp2/config.c:1419 msgid "Fluorescent Lamp 5" msgstr "Lampe fluorescente 5" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "Choix de température de couleur" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "Préconfiguration personnalisée 1" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "Préconfiguration personnalisée 2" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "Préconfiguration personnalisée 3" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "Préconfiguration personnalisée 4" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "Préconfiguration personnalisée 5" #: camlibs/ptp2/config.c:1430 msgid "Fluorescent: Warm White" msgstr "Fluorescent : blanc chaud" #: camlibs/ptp2/config.c:1431 msgid "Fluorescent: Cold White" msgstr "Fluorescent : blanc froid" #: camlibs/ptp2/config.c:1432 msgid "Fluorescent: Day White" msgstr "Fluorescent : blanc jour" #: camlibs/ptp2/config.c:1433 msgid "Fluorescent: Daylight" msgstr "Fluorescent : lumière du jour" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 msgid "JPEG Fine" msgstr "JPEG fin" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 msgid "JPEG Normal" msgstr "JPEG normal" #: camlibs/ptp2/config.c:1443 msgid "RAW + JPEG Fine" msgstr "Brut et JPEG fin" #: camlibs/ptp2/config.c:1444 msgid "RAW + JPEG Normal" msgstr "Brut et JPEG normal" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "Une seule prise" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "Continu à vitesse lente" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "Continu à vitesse rapide" #: camlibs/ptp2/config.c:1452 msgid "Self-timer" msgstr "Retardateur" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "Miroir relevé" #: camlibs/ptp2/config.c:1735 msgid "undefined" msgstr "indéfinie" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "économique " #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "aucune perte de qualité" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 msgid "Undefined" msgstr "Indéfinie" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "CRW" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "TV" #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "AV" #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "A_DEP" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "M_DEP" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "DEP" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "Personnalisé" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "Verrou" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "Portrait de nuit" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "Sports" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "Paysage" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "Gros plan" #: camlibs/ptp2/config.c:1780 msgid "Flash Off" msgstr "Flash désactivé" #: camlibs/ptp2/config.c:1788 msgid "red eye suppression" msgstr "Supprimer l'effet yeux rouges" # Le fill-in permet d'équilibrer la lumière du flash et la lumière ambiante. #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "équilibrer" #: camlibs/ptp2/config.c:1790 msgid "auto + red eye suppression" msgstr "automatique et suppression de l'effet yeux rouges" #: camlibs/ptp2/config.c:1791 msgid "on + red eye suppression" msgstr "activé et suppression de l'effet yeux rouges" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "iTTL" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 msgid "Commander" msgstr "Commande" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "Stroboscopique" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "TTL" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 msgid "Auto Aperture" msgstr "Ouverture automatique du diaphragme" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 msgid "Full Manual" msgstr "Totalement manuel" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "AF-S" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "AF-C" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "AF-A" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 msgid "MF (fixed)" msgstr "MF (fixe)" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "MF (sélection)" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "Pondérée centrale" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "Moyenne" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "Évaluative" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "Partielle" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "Moyenne pondérée centrale" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "Point de mesure associé au cadre de mise au point automatique" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "Plusieurs points" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "Fidèle" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "Monochrome" #: camlibs/ptp2/config.c:1947 msgid "User defined 1" msgstr "Défini par d'utilisateur 1" #: camlibs/ptp2/config.c:1948 msgid "User defined 2" msgstr "Défini par d'utilisateur 2" #: camlibs/ptp2/config.c:1949 msgid "User defined 3" msgstr "Défini par d'utilisateur 3" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "Mise au point manuelle seulement au centre" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "Mise au point automatique seulement au centre" #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "Mise au point manuelle sur plusieurs points (non indiqués)" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 msgid "Multiple Focusing Points, Auto" msgstr "Mise au point automatique sur plusieurs points" #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 msgid "Multiple Focusing Points (Right)" msgstr "Plusieurs points de mise au point (à droite)" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "Plusieurs points de mise au point (au centre)" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 msgid "Multiple Focusing Points (Left)" msgstr "Plusieurs points de mise au point (à gauche)" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 msgid "Large" msgstr "Large" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 msgid "Medium 1" msgstr "Moyenne 1" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 msgid "Medium 2" msgstr "Moyenne 2" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 msgid "Medium 3" msgstr "Moyenne 3" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "Petite" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "16:9" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "3:2" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "10 secondes" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "2 secondes" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "TFT" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "PC" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "TFT et PC" #: camlibs/ptp2/config.c:2092 msgid "Setting 4" msgstr "Réglage 4" #: camlibs/ptp2/config.c:2093 msgid "Setting 5" msgstr "Réglage 5" #: camlibs/ptp2/config.c:2094 msgid "Setting 6" msgstr "Réglage 6" #: camlibs/ptp2/config.c:2095 msgid "Setting 7" msgstr "Réglage 7" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "Carte" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "Sortie vidéo" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, c-format msgid "Unknown %d" msgstr "Inconnue %d" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "Paramètres d'usine" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "mRAW" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "sRAW" #: camlibs/ptp2/config.c:2246 #, fuzzy msgid "Smaller JPEG" msgstr "JPEG plus petit (S2)" #: camlibs/ptp2/config.c:2247 #, fuzzy msgid "Tiny JPEG" msgstr "JPEG très petit (S3)" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "mRAW et grand JPEG fin" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "sRAW et grand JPEG fin" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "mRAW et moyen JPEG fin" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "sRAW et moyen JPEG fin" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "mRAW et petit JPEG fin" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "sRAW et petit JPEG fin" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "mRAW et grand JPEG normal" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "sRAW et grand JPEG normal" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "mRAW et moyen JPEG normal" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "sRAW et moyen JPEG normal" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "mRAW et petit JPEG normal" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "sRAW et petit JPEG normal" #: camlibs/ptp2/config.c:2272 #, fuzzy msgid "RAW + Smaller JPEG" msgstr "Brut et petit JPEG fin (S2)" #: camlibs/ptp2/config.c:2273 #, fuzzy msgid "mRAW + Smaller JPEG" msgstr "mRAW et petit JPEG fin (S2)" #: camlibs/ptp2/config.c:2274 #, fuzzy msgid "sRAW + Smaller JPEG" msgstr "sRAW et petit JPEG fin (S2)" #: camlibs/ptp2/config.c:2275 #, fuzzy msgid "RAW + Tiny JPEG" msgstr "Brut et petit JPEG fin (S3)" #: camlibs/ptp2/config.c:2276 #, fuzzy msgid "mRAW + Tiny JPEG" msgstr "mRAW et grand JPEG fin (S3)" #: camlibs/ptp2/config.c:2277 #, fuzzy msgid "sRAW + Tiny JPEG" msgstr "sRAW et grand JPEG fin (S3)" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "Continu" #: camlibs/ptp2/config.c:2305 msgid "Timer 10 sec" msgstr "Retardateur de 10 secondes" #: camlibs/ptp2/config.c:2306 msgid "Timer 2 sec" msgstr "Retardateur de 2 secondes" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "Un seul silencieux" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "Continu silencieux" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, c-format msgid "Auto ISO" msgstr "Automatique ISO" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "Réduction du bruit multi-image ISO automatique" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, c-format msgid "%d Multi Frame Noise Reduction" msgstr "Réduction du bruit multi-image %d" #: camlibs/ptp2/config.c:2453 msgid "Multi Frame Noise Reduction" msgstr "Réduction du bruit multi-image" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Retardateur" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "%0.4f s" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "%d %d/%d" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "%d/%d" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "%f" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "Creative" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "Action" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "Paysage de nuit" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "Enfants" #: camlibs/ptp2/config.c:2868 msgid "Automatic (No Flash)" msgstr "Automatique (flash désactivé)" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "Automatique intelligent" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "Automatique supérieur" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 msgid "Movie" msgstr "Film" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "Téléobjectif continu, priorité à l’exposition automatique" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "Panorama glissé" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "Automatique intelligent sans flash" #: camlibs/ptp2/config.c:2876 msgid "Sports Action" msgstr "Sports et action" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "Coucher de soleil" #: camlibs/ptp2/config.c:2880 msgid "Night Scene" msgstr "Scène de nuit" #: camlibs/ptp2/config.c:2881 msgid "Hand-held Twilight" msgstr "Crépuscule sans trépied" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 msgid "Picture Effect" msgstr "Effet d’image" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "Paysage de nuit" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "Fête ou intérieur" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "Plage ou neige" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "Crépuscule ou aube" #: camlibs/ptp2/config.c:2893 msgid "Pet Portrait" msgstr "Portrait d'animal" #: camlibs/ptp2/config.c:2894 msgid "Candlelight" msgstr "Lumière de bougie" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "Fleurissement" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "Couleurs d'automne" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "Alimentation" #: camlibs/ptp2/config.c:2901 msgid "Child" msgstr "Enfant" #: camlibs/ptp2/config.c:2903 msgid "Close up" msgstr "Gros plan" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "A6400 (160-6400)" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "A3200 (160-3200)" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "A800 (160-800)" # NOTE: s/ou/uo/ #: camlibs/ptp2/config.c:3032 msgid "Flourescent" msgstr "Fluorescent" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "Eau" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "1 EV" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "2 EV" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "3 EV" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "Très élevé" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "Scène" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 msgid "Effects" msgstr "Effets" #: camlibs/ptp2/config.c:3075 msgid "U1" msgstr "U1" #: camlibs/ptp2/config.c:3076 msgid "U2" msgstr "U2" #: camlibs/ptp2/config.c:3104 msgid "Back Light" msgstr "Rétroéclairage" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "Panorama" #: camlibs/ptp2/config.c:3106 msgid "Smoothing" msgstr "Lissage de grande gamme dynamique" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "Effet maquette" #: camlibs/ptp2/config.c:3108 msgid "Select Color" msgstr "Couleurs sélectives" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "Un seul coup" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "Rafale" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "Intervallomètre" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "Continu à vitesse lente" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 msgid "Timer" msgstr "Retardateur" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "Miroir relevé" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "Télécommande à réponse rapide" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 msgid "Delayed Remote" msgstr "Télécommande à retardateur" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "Relâchement silencieux" #: camlibs/ptp2/config.c:3125 msgid "Selftimer 2s" msgstr "Retardateur 2 s" #: camlibs/ptp2/config.c:3126 msgid "Selftimer 10s" msgstr "Retardateur 10 s" #: camlibs/ptp2/config.c:3127 msgid "Bracketing C 0.3 Steps" msgstr "Paliers du bracketing C 0,3" #: camlibs/ptp2/config.c:3128 msgid "Bracketing C 0.7 Steps" msgstr "Paliers du bracketing C 0,7" #: camlibs/ptp2/config.c:3129 msgid "Bracketing C 1.0 Steps" msgstr "Paliers du bracketing C 1,0" #: camlibs/ptp2/config.c:3130 msgid "Bracketing C 2.0 Steps" msgstr "Paliers du bracketing C 2,0" #: camlibs/ptp2/config.c:3131 msgid "Bracketing C 3.0 Steps" msgstr "Paliers du bracketing C 3,0" #: camlibs/ptp2/config.c:3132 msgid "Bracketing S 0.3 Steps" msgstr "Paliers du bracketing S 0,3" #: camlibs/ptp2/config.c:3133 msgid "Bracketing S 0.7 Steps" msgstr "Paliers du bracketing S 0,7" #: camlibs/ptp2/config.c:3134 msgid "Bracketing S 1.0 Steps" msgstr "Paliers du bracketing S 1,0" #: camlibs/ptp2/config.c:3135 msgid "Bracketing S 2.0 Steps" msgstr "Paliers du bracketing S 2,0" #: camlibs/ptp2/config.c:3136 msgid "Bracketing S 3.0 Steps" msgstr "Paliers du bracketing S 3,0" #: camlibs/ptp2/config.c:3137 msgid "Bracketing WB Lo" msgstr "Balance des blancs du bracketing basse" #: camlibs/ptp2/config.c:3138 msgid "Bracketing WB Hi" msgstr "Balance des blancs du bracketing haute" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 msgid "Centre-spot" msgstr "Point central" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "Plusieurs points" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "Une seule zone" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "Sujet le plus proche" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "Groupe dynamique" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "Mise au point automatique sur une seule zone" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "Mise au point automatique sur une zone dynamique" #: camlibs/ptp2/config.c:3154 #, fuzzy msgid "Group-dynamic AF" msgstr "Mise au point automatique sur un groupe dynamique" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "" "Mise au point automatique sur une zone dynamique avec priorité à l'objet le " "plus proche" #: camlibs/ptp2/config.c:3162 msgid "Dynamic Area (9)" msgstr "Zone dynamique (9)" #: camlibs/ptp2/config.c:3163 msgid "Dynamic Area (21)" msgstr "Zone dynamique (21)" #: camlibs/ptp2/config.c:3164 msgid "Dynamic Area (51)" msgstr "Zone dynamique (51)" #: camlibs/ptp2/config.c:3165 msgid "3D Tracking" msgstr "Suivi en 3D" #: camlibs/ptp2/config.c:3171 msgid "sRGB (portrait)" msgstr "sRVB (portrait)" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "AdobeRVB" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "sRVB (nature)" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "sRVB" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "Valeur inconnu (0x%04x)" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 msgid "Centre" msgstr "Centre" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "Haut" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 msgid "Bottom" msgstr "Bas" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "Gauche" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 msgid "Right" msgstr "Droite" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "Pondérée centré" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "Plusieurs points" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "Point central" #: camlibs/ptp2/config.c:3266 msgid "Automatic Flash" msgstr "Flash automatique" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 msgid "Fill flash" msgstr "Flash en appoint" #: camlibs/ptp2/config.c:3269 msgid "Red-eye automatic" msgstr "Dispositif anti yeux rouges automatique" #: camlibs/ptp2/config.c:3270 msgid "Red-eye fill" msgstr "Dispositif anti yeux rouges en appoint" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 msgid "External sync" msgstr "Synchronisation externe" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 msgid "Auto Slow Sync" msgstr "Synchronisation automatique lente" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "Synchronisation au deuxième rideau et synchronisation lente" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 msgid "Red-eye Reduction + Slow Sync" msgstr "Dispositif anti yeux rouges et synchronisation lente" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "Synchronisation au premier rideau" #: camlibs/ptp2/config.c:3277 msgid "Red-eye reduction" msgstr "Dispositif anti yeux rouges" #: camlibs/ptp2/config.c:3278 msgid "Red-eye reduction with slow sync" msgstr "Dispositif anti yeux rouges avec synchronisation lente" #: camlibs/ptp2/config.c:3279 msgid "Slow sync" msgstr "Synchronisation lente" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "Synchronisation au deuxième rideau avec synchronisation lente" #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "Synchronisation au deuxième rideau" #: camlibs/ptp2/config.c:3283 msgid "Rear Curtain Sync" msgstr "Synchronisation au deuxième rideau" #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "Synchronisation sans fil" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Synchronisation lente" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "Noir et blanc" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "Vision nocturne" #: camlibs/ptp2/config.c:3298 msgid "Color sketch" msgstr "Esquisse en couleur" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "Effet miniature" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "Couleurs sélectives" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "Silhouette" #: camlibs/ptp2/config.c:3302 msgid "High key" msgstr "Touche haut" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "Touche bas" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 msgid "infinite" msgstr "Infini" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "%d mm" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "Mise au point automatique en priorité sur le visage" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "Mise au point automatique sur zone large" #: camlibs/ptp2/config.c:3772 msgid "Normal-area AF" msgstr "Mise au point automatique sur zone normale" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "Mise au point automatique avec suivi d'objet" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "Mise au point automatique avec un seul servo" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "Mise au point automatique avec servo à plein temps" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 msgid "Manual Focus" msgstr "Mise au point manuelle" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 msgid "AE/AF Lock" msgstr "Verrouillage d’exposition ou mise au point automatiques" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "Verrouillage d’exposition automatique seulement" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "Verrouillage de mise au point automatique seulement" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "Verrouillage de mise au point automatique en attente" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "Mise au point automatique activée" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "Verrouillage de niveau de flash" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "20 secondes" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 msgid "1 minute" msgstr "1 minute" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "5 minutes" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 msgid "10 minutes" msgstr "10 minutes" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "5 secondes" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "SDRAM" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "6 mm" #: camlibs/ptp2/config.c:3828 msgid "8 mm" msgstr "8 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "10 mm" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "12 mm" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "1/60" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "1/30" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "1/15" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "1/8" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "1/4" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "1/2" #: camlibs/ptp2/config.c:3842 msgid "1" msgstr "1" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 msgid "2" msgstr "2" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 msgid "4" msgstr "4" #: camlibs/ptp2/config.c:3845 msgid "8" msgstr "8" #: camlibs/ptp2/config.c:3846 msgid "15" msgstr "15" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "30" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "pose longue" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "30 s" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "25 s" #: camlibs/ptp2/config.c:3855 msgid "20s" msgstr "20 s" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 msgid "15s" msgstr "15 s" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "13 s" #: camlibs/ptp2/config.c:3858 msgid "10s" msgstr "10 s" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "8 s" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "6 s" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "5 s" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "4 s" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "3 s" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "2,5 s" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "2 s" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "1,6 s" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "1,3 s" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "1 s" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "1/1,3 s" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "1/1,6 s" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "1/2 s" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "1/2,5 s" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "1/3 s" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "1/4 s" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "1/5 s" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "1/6 s" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "1/8 s" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "1/10 s" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "1/13 s" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "1/15 s" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "1/20 s" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "1/25 s" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "1/30 s" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "1/40 s" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "1/50 s" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "1/60 s" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "1/80 s" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "1/100 s" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "1/125 s" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "1/160 s" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "1/200 s" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "1/250 s" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "1/320 s" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "1/400 s" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "1/500 s" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "1/640 s" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "1/800 s" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "1/1000 s" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "1/1250 s" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "1/1600 s" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "1/2000 s" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "1/2500 s" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "1/3200 s" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "1/4000 s" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "1/5000 s" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "1/6400 s" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "1/8000 s" #: camlibs/ptp2/config.c:3916 msgid "15 minutes" msgstr "15 minutes" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 msgid "Sharper" msgstr "Plus nette" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "Plus Doux" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 msgid "Direct Print" msgstr "Directement pour l'impression" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 msgid "Medium Low" msgstr "Moyenne basse" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 msgid "Medium high" msgstr "Moyenne élevée" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 msgid "Low contrast" msgstr "Faible contraste" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 msgid "Medium High" msgstr "Moyenne élevée" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "Contrôle élevé" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "Zone de mise au point (gros plan)" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "Zone de mise au point (très proche)" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "Zone de mise au point (proche)" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "Zone de mise au point (moyen)" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "Zone de mise au point (loin)" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "Zone de mise au point (réservé 1)" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "Zone de mise au point (réservé 2)" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "Zone de mise au point (réservé 3)" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "Zone de mise au point (réservé 4)" #: camlibs/ptp2/config.c:3976 msgid "Automatic Macro" msgstr "Macro automatique" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "Mise au point automatique avec un seul servo" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "Mise au point automatique avec servo en continu" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "Un coup" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "AI Servo" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 msgid "AI Focus" msgstr "AI Focus" #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "4 secondes" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "8 secondes" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "Attente" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 msgid "Fluorescent H" msgstr "Fluorescent élevé" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 msgid "Custom Whitebalance PC-1" msgstr "Balance des blancs, réglage nº 1 " #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 msgid "Custom Whitebalance PC-2" msgstr "Balance des blancs, réglage nº 2 " #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 msgid "Custom Whitebalance PC-3" msgstr "Balance des blancs, réglage nº 3 " #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "Nombre manquant" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "Ombre" #: camlibs/ptp2/config.c:4118 msgid "Low sharpening" msgstr "Netteté faible" #: camlibs/ptp2/config.c:4120 msgid "Black & white" msgstr "Noir et blanc" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 msgid "AE & Flash" msgstr "Exposition automatique et flash" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 msgid "AE only" msgstr "Exposition automatique uniquement" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 msgid "Flash only" msgstr "Flash uniquement" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 msgid "WB bracketing" msgstr "Balance des blancs du bracketing" #: camlibs/ptp2/config.c:4221 msgid "ADL bracketing" msgstr "D-Lighting actif (ADL) du bracketing" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "Démarrage" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "Arrêt" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "Démarrage et arrêt" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "50 Hz" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "60 Hz" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "Réponse rapide" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 msgid "Remote Mirror Up" msgstr "Miroir relevé par la télécommande" #: camlibs/ptp2/config.c:4248 msgid "Application Mode 0" msgstr "Mode d’application 0" #: camlibs/ptp2/config.c:4249 msgid "Application Mode 1" msgstr "Mode d’application 1" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "Modéré" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "Renforcé" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "MTR > au-dessous" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "Au-dessous > MTR" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "Sensibilité automatique" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "Sensibilité élevée" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "Sensibilité moyenne" #: camlibs/ptp2/config.c:4286 msgid "Low sensitivity" msgstr "Sensibilité basse" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "Microphone désactivé" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "Haut 1" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "Haut 2" #: camlibs/ptp2/config.c:4378 msgid "Flash/speed" msgstr "Flash/vitesse" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "Flash/vitesse/ouverture" #: camlibs/ptp2/config.c:4380 msgid "Flash/aperture" msgstr "Flash/ouverture" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "JPEG de base" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 msgid "NEF+Fine" msgstr "NEF et fin" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "NEF (brut)" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "NEF et de base" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 msgid "NEF+Normal" msgstr "NEF et normal" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "TIFF (RVB)" #: camlibs/ptp2/config.c:4575 msgid "RAW+JPEG" msgstr "Brut et JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "6 secondes" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "16 secondes" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "30 secondes" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "30 minutes" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "Aucune perte de qualité" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "Perte de qualité" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "Priorité de taille" #: camlibs/ptp2/config.c:4642 msgid "Optimal quality" msgstr "Qualité optimale" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "1/250 s (synchronisation ultrarapide automatique)" #: camlibs/ptp2/config.c:4659 msgid "1/320s (Auto FP)" msgstr "1/320 s (synchronisation ultrarapide automatique)" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "Relâchement" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "Relâchement et mise au point" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "9 points" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "21 points" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "51 points" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "51 points (3D)" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "5 (long)" #: camlibs/ptp2/config.c:4695 msgid "3 (Normal)" msgstr "3 (normal)" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "1 (court)" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "Temps de pose ou mise au point automatique activés" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "Mise au point automatique activée" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "AF51" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "AF11" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "Verrouillage d’exposition ou mise au point automatiques" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "Verrouillage d’exposition automatique seulement" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "" "Verrouillage d’exposition automatique (réinitialisation au relâchement)" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "Verrouillage d’exposition automatique (en attente)" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "Verrouillage de mise au point automatique seulement" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "4 fps" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "3 fps" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "2 fps" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "1 fps" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "6 fps" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "5 fps" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "9 fps" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "8 fps" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "7 fps" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "11 fps" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "10 fps" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "Non assigné" #: camlibs/ptp2/config.c:4780 msgid "Preview" msgstr "Prévisualisation" #: camlibs/ptp2/config.c:4781 msgid "FV lock" msgstr "Verrouillage de valeur de flash" #: camlibs/ptp2/config.c:4785 msgid "AE lock (hold)" msgstr "Verrouillage d’exposition automatique (en attente)" #: camlibs/ptp2/config.c:4788 msgid "Bracketing burst" msgstr "Bracketing en rafale" #: camlibs/ptp2/config.c:4789 msgid "Matrix metering" msgstr "Mesure en matrice" #: camlibs/ptp2/config.c:4790 msgid "Center-weighted metering" msgstr "Mesure pondérée centrale" #: camlibs/ptp2/config.c:4791 msgid "Spot metering" msgstr "Mesure de position" #: camlibs/ptp2/config.c:4792 msgid "Playback" msgstr "Lecture" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "Accéder aux éléments principaux dans MON MENU" #: camlibs/ptp2/config.c:4794 msgid "+NEF (RAW)" msgstr "+NEF (brut)" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "Grille de cadrage" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "D-Lighting actif" #: camlibs/ptp2/config.c:4797 msgid "1 step spd/aperture" msgstr "Un pas de vitesse/ouverture" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "Choisir un numéro d’objectif (non CPU)" # NOTE: s/t$// #: camlibs/ptp2/config.c:4799 msgid "Viewfinder virtual horizont" msgstr "Horizon virtuel de viewfinder" #: camlibs/ptp2/config.c:4800 msgid "Start movie recording" msgstr "Démarrer l’enregistrement de film" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "Activé (affichage d’image exclue)" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "50 %" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "100 %" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "75 %" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "25 %" #: camlibs/ptp2/config.c:4871 msgid "Unknown value" msgstr "Valeur inconnue" #: camlibs/ptp2/config.c:4999 msgid "Nikon changeafarea works only in LiveView mode." msgstr "" "La modification de zone de mise au point automatique de Nikon ne fonctionne " "qu’en mode de visée par l’écran." #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "La fonction de mise au point automatique Nikon n’a pas fonctionné." #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "" "La mise au point manuelle de Nikon ne fonctionne qu’en mode de visée par " "l’écran." #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "Mise au point manuelle de Nikon à la limite." #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "Pas de mise au point manuelle de Nikon trop petit." #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "Appuyez à moitié" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 msgid "Press Full" msgstr "Appuyez complètement" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "Relâchez à moitié" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "Relâchez complètement" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "Immédiat" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 msgid "Press 1" msgstr "Appuyez sur 1" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 msgid "Press 2" msgstr "Appuyez sur 2" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 msgid "Press 3" msgstr "Appuyez sur 3" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 msgid "Release 1" msgstr "Relâchez 1" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 msgid "Release 2" msgstr "Relâchez 2" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 msgid "Release 3" msgstr "Relâchez 3" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "Proche 1" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "Proche 2" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "Proche 3" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "Loin 1" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "Loin 2" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "Loin 3" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "Proche %d" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "Loin %d" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 msgid "Nikon enable liveview failed" msgstr "Impossible d'activer le mode de visée par l’écran de Nikon" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" "Pour faire fonctionner l'acquisition en pose longue, assurez-vous que le " "mode de connexion est commuté sur « M » et d'avoir réglé le « temps de " "pose » sur « pose longue »." #: camlibs/ptp2/config.c:5923 msgid "Internal RAM" msgstr "Mémoire interne" #: camlibs/ptp2/config.c:5924 msgid "Memory card" msgstr "Carte mémoire" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "ESSID" #: camlibs/ptp2/config.c:6092 msgid "Display" msgstr "Affichage" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "Date de création : %s, dernière date d'utilisation : %s" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "Supprimer" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "WEP 64 bits" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "WEP 128 bits" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "Pris en charge" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "Ad-hoc" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "Nom du profil" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "ESSID du Wi-Fi" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "Adresse IP (vide pour DHCP)" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "Masque du réseau" #: camlibs/ptp2/config.c:6359 msgid "Default gateway" msgstr "Passerelle par défaut" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "Mode d’accès" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "Canal Wi-Fi" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "Chiffrement" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "Clef de chiffrement (en hexadécimal)" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "Écriture" #: camlibs/ptp2/config.c:6412 msgid "List Wifi profiles" msgstr "Liste des profils Wi-Fi" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "Créer un profil Wi-Fi" #: camlibs/ptp2/config.c:6521 msgid "Power Down" msgstr "Éteindre" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 msgid "Focus Lock" msgstr "Verrouillage de mise au point" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 msgid "Bulb Mode" msgstr "Mode pose longue" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "Verrouillage d’interface utilisateur" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "" "Fonction de mise au point automatique d'appareil reflex numérique Nikon" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "" "Fonction de mise au point automatique d'appareil reflex numérique Canon" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "Fonction de mise au point manuelle d'appareil reflex numérique Nikon" #: camlibs/ptp2/config.c:6530 msgid "Set Nikon Autofocus area" msgstr "Définition de zone de mise au point automatique Nikon" #: camlibs/ptp2/config.c:6531 msgid "Set Nikon Control Mode" msgstr "Définition du mode de contrôle Nikon" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "Fonction de mise au point manuelle d'appareil reflex numérique Canon" #: camlibs/ptp2/config.c:6533 msgid "Cancel Canon DSLR Autofocus" msgstr "" "Annulation de mise au point automatique d'appareil reflex numérique Canon" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "Zoom de Canon EOS" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "Position du zoom de Canon EOS" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "Viewfinder de Canon EOS" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "Viewfinder de Nikon" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "Télécommande de déblocage du Canon EOS" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "Script CHDK" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 msgid "Movie Capture" msgstr "Acquisition de film" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 msgid "Serial Number" msgstr "Numéro de série" #: camlibs/ptp2/config.c:6548 msgid "Camera Manufacturer" msgstr "Fabricant de l'appareil" #: camlibs/ptp2/config.c:6550 msgid "Device Version" msgstr "Version du périphérique" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "Extension du fabricant" #: camlibs/ptp2/config.c:6556 msgid "PTP Version" msgstr "Version de PTP" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 msgid "DPOF Version" msgstr "Version de DPOF" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "Alimentation sur secteur" #: camlibs/ptp2/config.c:6559 msgid "External Flash" msgstr "Flash externe" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "Niveau de batterie" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 msgid "Camera Orientation" msgstr "Orientation de la l'appareil" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 msgid "Flash Open" msgstr "Flash activé" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 msgid "Flash Charged" msgstr "Flash chargé" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 msgid "Lens Name" msgstr "Nom d'objectif" #: camlibs/ptp2/config.c:6570 msgid "Shutter Counter" msgstr "Décompte du temps de pose" #: camlibs/ptp2/config.c:6571 msgid "Available Shots" msgstr "Prises de vue disponibles" #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "Distance focale minimale" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "Distance focale maximale" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "Ouverture maximale à distance focale minimale" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "Ouverture minimale à distance focale maximale" #: camlibs/ptp2/config.c:6576 msgid "Low Light" msgstr "Lumière faible" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 msgid "Light Meter" msgstr "Posemètre" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 msgid "AF Locked" msgstr "Mise au point automatique verrouillée" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "Exposition automatique verrouillée" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 msgid "FV Locked" msgstr "Valeur de flash verrouillée" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 msgid "Camera Date and Time" msgstr "Date et heure de l'appareil" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "Mode Sonore" #: camlibs/ptp2/config.c:6591 msgid "Image Comment" msgstr "Commentaire de l'image" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 msgid "Enable Image Comment" msgstr "Permettre les commentaires d'image" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 msgid "LCD Off Time" msgstr "Temps d'extinction de l'écran LCD" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 msgid "Recording Media" msgstr "Support d'enregistrement" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "Temps d'affichage rapide" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "Menu CSM" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "Inverser les boutons de commande" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 msgid "Camera Output" msgstr "Type de sortie de l'appareil" #: camlibs/ptp2/config.c:6601 msgid "Recording Destination" msgstr "Destination d'enregistrement" #: camlibs/ptp2/config.c:6602 msgid "EVF Mode" msgstr "Mode EVF" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "Artiste" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "Numéro CCD" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Copyright" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "Nettoyer le capteur" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 msgid "Flicker Reduction" msgstr "Dispositif anti scintillement" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "Fonctions Ex personnalisées" #: camlibs/ptp2/config.c:6613 msgid "Focus Info" msgstr "Informations de mise au point" #: camlibs/ptp2/config.c:6614 msgid "Focus Area" msgstr "Zone de mise au point" #: camlibs/ptp2/config.c:6615 msgid "Auto Power Off" msgstr "Autoextinction" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "Profondeur de champ" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "Menus et lecture" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "Système de fichiers rapide" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 msgid "Capture Target" msgstr "Cible d'acquisition" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 msgid "Image Format SD" msgstr "Format d'image SD" #: camlibs/ptp2/config.c:6634 msgid "Image Format CF" msgstr "Format d'image CF" #: camlibs/ptp2/config.c:6636 msgid "Image Format Ext HD" msgstr "Format d'image disque dur externe" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "Vitesse ISO" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 msgid "ISO Auto" msgstr "ISO automatique" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 msgid "WhiteBalance" msgstr "Balance des blancs" #: camlibs/ptp2/config.c:6654 msgid "WhiteBalance Adjust A" msgstr "Balance des blancs ajustement A" #: camlibs/ptp2/config.c:6655 msgid "WhiteBalance Adjust B" msgstr "Balance des blancs ajustement B" #: camlibs/ptp2/config.c:6656 msgid "WhiteBalance X A" msgstr "Balance des blancs X A" #: camlibs/ptp2/config.c:6657 msgid "WhiteBalance X B" msgstr "Balance des blancs X B" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "Effet photographie" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 msgid "Color Model" msgstr "Mode de couleur" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 msgid "Color Space" msgstr "Espace de couleur" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "Réduction du bruit pour l'exposition longue" #: camlibs/ptp2/config.c:6669 msgid "Auto Focus Mode 2" msgstr "Mode de mise au point automatique 2" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "Éclairage d'assistance" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "Attribut de rotation" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 msgid "Flash Compensation" msgstr "Correction du flash" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 msgid "AEB Exposure Compensation" msgstr "Correction d'exposition AEB" #: camlibs/ptp2/config.c:6685 msgid "Nikon Flash Mode" msgstr "Mode de flash Nikon" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 msgid "Flash Commander Mode" msgstr "Mode de commande du flash" #: camlibs/ptp2/config.c:6687 msgid "Flash Commander Power" msgstr "Énergie de commande du flash" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "Canal de commande du flash" #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 msgid "Flash Command Self Mode" msgstr "Mode automatique de commande du flash" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 msgid "Flash Command Self Compensation" msgstr "Correction de commande automatique du flash" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "Valeur automatique de commande du flash" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 msgid "Flash Command A Mode" msgstr "Mode A de commande du flash" #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 msgid "Flash Command A Compensation" msgstr "Correction A de commande du flash" #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "Valeur A de commande du flash" #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 msgid "Flash Command B Mode" msgstr "Mode B de commande du flash" #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 msgid "Flash Command B Compensation" msgstr "Correction B de commande du flash" #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "Valeur B de commande du flash" #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "Éclairage de la zone de mise au point automatique" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "Mode sonore de mise au point automatique" #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "Valeur d'ouverture du diaphragme" #: camlibs/ptp2/config.c:6702 #, fuzzy msgid "Movie F-Number" msgstr "Valeur d'ouverture du diaphragme" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "Programme flexible" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "Longueur de mise au point" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "Distance focale" #: camlibs/ptp2/config.c:6710 msgid "Focus Mode 2" msgstr "Mode de mise au point 2" #: camlibs/ptp2/config.c:6712 #, fuzzy msgid "Continuous AF" msgstr "Continu" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "Mode effet" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 msgid "Exposure Program" msgstr "Programme d'exposition" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 msgid "Scene Mode" msgstr "Mode scène" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "Format d’image" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 msgid "HDR Mode" msgstr "Mode grande gamme dynamique (HDR)" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "Grande gamme dynamique (HDR)" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "Lissage de grande gamme dynamique (HDR)" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "Mode d’acquisition de cliché" #: camlibs/ptp2/config.c:6725 msgid "Canon Shooting Mode" msgstr "Mode de prise de vue Canon" #: camlibs/ptp2/config.c:6726 msgid "Canon Auto Exposure Mode" msgstr "Mode d’exposition automatique Canon" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 msgid "Drive Mode" msgstr "Mode de commande" #: camlibs/ptp2/config.c:6728 msgid "Picture Style" msgstr "Style de l'image" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "Mode de mesure de mise au point" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "Mode de mesure de l'exposition" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "Priorité à l'ouverture active" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "Priorité à l'ouverture maximale" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "Point de mise au point" #: camlibs/ptp2/config.c:6738 msgid "Capture Delay" msgstr "Retard d'acquisition" #: camlibs/ptp2/config.c:6742 msgid "Shutter Speed 2" msgstr "Temps de pose 2" #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "Temps de pose 2" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "Mode de mesure" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 msgid "AF Distance" msgstr "Longueur de mise au point automatique" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 msgid "Focus Area Wrap" msgstr "Collimateur de zone de mise au point" #: camlibs/ptp2/config.c:6751 msgid "Exposure Delay Mode" msgstr "Mode de temporisation d'exposition" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 msgid "Exposure Lock" msgstr "Verrouillage d’exposition" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "Mode AE-L/AF-L" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "Mode de mise au point automatique en mode de visée par l’écran" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "Mise au point automatique en mode de visée par l’écran" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "Numéro de fichier séquencé" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 msgid "Flash Sign" msgstr "Authentifier le flash" #: camlibs/ptp2/config.c:6759 msgid "Modelling Flash" msgstr "Modélisation du flash" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "Grille viewfinder" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 msgid "Image Review" msgstr "Affichage d’image" #: camlibs/ptp2/config.c:6762 msgid "Image Rotation Flag" msgstr "Attribut de rotation de l'image" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "Débloquer sans la carte CompactFlash" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 msgid "Flash Mode Manual Power" msgstr "Énergie du mode manuel du flash" #: camlibs/ptp2/config.c:6765 msgid "Auto Focus Area" msgstr "Zone de mise au point automatique" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 msgid "Flash Exposure Compensation" msgstr "Correction d'exposition par le flash" #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 msgid "Bracketing" msgstr "Bracketing" #: camlibs/ptp2/config.c:6769 msgid "Bracket Mode" msgstr "Mode de bracket" #: camlibs/ptp2/config.c:6770 msgid "EV Step" msgstr "Palier de valeur d'exposition" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 msgid "Bracket Set" msgstr "Bracket défini" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "Ordre de bracket" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "Nombre d'images en rafale" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "Intervalle de prise de vue en rafale" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "Prise de vue maximum " #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 msgid "Auto White Balance Bias" msgstr "Balance des blancs automatique" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 msgid "Tungsten White Balance Bias" msgstr "Balance des blancs tungstène" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 msgid "Fluorescent White Balance Bias" msgstr "Balance des blancs fluorescent" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 msgid "Daylight White Balance Bias" msgstr "Balance des blancs ensoleillé" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 msgid "Flash White Balance Bias" msgstr "Balance des blancs flash" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 msgid "Cloudy White Balance Bias" msgstr "Balance des blancs nuageux" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 msgid "Shady White Balance Bias" msgstr "Balance des blancs ombre" #: camlibs/ptp2/config.c:6794 msgid "White Balance Bias Preset Nr" msgstr "Nombre de Balance des blancs pré-configuré" #: camlibs/ptp2/config.c:6795 msgid "White Balance Bias Preset 0" msgstr "Balance des blancs pré-configuré 0" #: camlibs/ptp2/config.c:6796 msgid "White Balance Bias Preset 1" msgstr "Balance des blancs pré-configuré 1" #: camlibs/ptp2/config.c:6797 msgid "White Balance Bias Preset 2" msgstr "Balance des blancs pré-configuré 2" #: camlibs/ptp2/config.c:6798 msgid "White Balance Bias Preset 3" msgstr "Balance des blancs pré-configuré 3" #: camlibs/ptp2/config.c:6799 msgid "White Balance Bias Preset 4" msgstr "Balance des blancs pré-configuré 4" #: camlibs/ptp2/config.c:6800 msgid "Selftimer Delay" msgstr "Délai du retardateur" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "Zone pondérée centrale" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 msgid "Flash Shutter Speed" msgstr "Temps de pose avec flash" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 msgid "Remote Timeout" msgstr "Temporisation" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 msgid "Remote Mode" msgstr "Mode télécommande" #: camlibs/ptp2/config.c:6805 msgid "Application Mode" msgstr "Mode d’application" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "Optimiser l'image" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 msgid "Sharpening" msgstr "Netteté" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 msgid "Tone Compensation" msgstr "Correction des tons" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 msgid "Saturation" msgstr "Saturation" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 msgid "Hue Adjustment" msgstr "Ajustement de le nuance" #: camlibs/ptp2/config.c:6811 msgid "Auto Exposure Bracketing" msgstr "Exposition automatique du bracketing" #: camlibs/ptp2/config.c:6812 msgid "Movie Sound" msgstr "Son du film" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 msgid "Manual Movie Setting" msgstr "Réglage de film manuel" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "Microphone" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "Inverser les indicateurs" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "Contrôle de distorsion automatique" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 msgid "Video Mode" msgstr "Mode vidéo" #: camlibs/ptp2/config.c:6835 msgid "Meter Off Time" msgstr "Temps de mesure expiré" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 msgid "Assign Func Button" msgstr "Assigner une touche de fonction" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 msgid "Assign Preview Button" msgstr "Assigner un bouton de prévisualisation" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 msgid "Movie Quality" msgstr "Qualité du film" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 msgid "Minimum Shutter Speed" msgstr "Temps de pose minimal" #: camlibs/ptp2/config.c:6862 msgid "Movie Resolution" msgstr "Résolution du film" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 msgid "Continuous Shooting Speed Slow" msgstr "Vitesse lente de prise de vue continue" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "Limite haute d'ISO automatique" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "Vitesse de synchronisation du flash" #: camlibs/ptp2/config.c:6869 msgid "Focus Metering" msgstr "Mesure de mise au point" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 msgid "High ISO Noise Reduction" msgstr "Réduction du bruit pour grande ISO" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 msgid "Continuous Shooting Speed High" msgstr "Vitesse rapide de prise de vue continue" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 msgid "JPEG Compression Policy" msgstr "politique de compression JPEG" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "priorité au mode AF-C" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "priorité au mode AF-S" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "Activation de la mise au point automatique" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "Zone dynamique de mise au point automatique" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 msgid "AF Lock On" msgstr "Verrouillage de mise au point automatique activé" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "Zone ponctuelle de mise au point automatique" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "Bouton d'activation de la mise au point automatique" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "Réduction du bruit pour grande ISO" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "Maximum de relâchement continu" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 msgid "Raw Compression" msgstr "Compression brute" #: camlibs/ptp2/config.c:6922 msgid "Image Quality 2" msgstr "Qualité d'image 2" #: camlibs/ptp2/config.c:6944 msgid "Image Settings" msgstr "Réglages de l'image" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "Réglages de capture d'image" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "Profils Wi-Fi" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 msgid "Other PTP Device Properties" msgstr "Autres propriétés de périphérique PTP" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "Propriété PTP 0x%04x" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "La propriété « %s » sur 0x%04x est actuellement en lecture seule." #: camlibs/ptp2/config.c:7324 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "La propriété « %s » sur 0x%04x n'était pas définie (0x%04x : %s)" #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "La propriété « %s » sur 0x%04x n'était pas définie (0x%04x : %s)." #: camlibs/ptp2/config.c:7351 #, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "" "Échec d'analyse de la valeur de l'élément graphique « %s » sur 0x%04x avec " "%d." #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "Vous devez indiquer un répertoire commençant par /store_xxxxxxxxx/" #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" "Pilote PTP2\n" "© 2001-2005 par Mariusz Woloszyn .\n" "© 2003-%d par Marcus Meissner .\n" "Ce Pilote permet d'utiliser les appareils compatibles PTP ou PictBridge\n" "et les lecteur multimédia utilisant MTP (Media Transfer Protocol)." #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 msgid "Canon enable viewfinder failed" msgstr "Impossible d'activer Canon viewfinder" #: camlibs/ptp2/library.c:2403 msgid "Canon get viewfinder image failed" msgstr "Impossible d'obtenir l'image dans Canon viewfinder" #: camlibs/ptp2/library.c:2537 msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "Cet appareil Canon ne prend pas en charge le mode Canon viewfinder" #: camlibs/ptp2/library.c:2545 msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "Cet appareil Nikon ne prend pas en charge le mode de visée par l’écran" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "" "Cet appareil Nikon n'a pas l'air de renvoyer une image JPEG en mode de visée " "par l’écran" #: camlibs/ptp2/library.c:2660 msgid "Nikon disable liveview failed" msgstr "Impossible de désactiver le mode de visée par l’écran de Nikon" #: camlibs/ptp2/library.c:2799 msgid "Sorry, your camera does not support Nikon capture" msgstr "Cet appareil ne prend pas en charge l'acquisition Nikon" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" "Impossible d'activer le mode de visée par l’écran sur un Nikon 1, mais c’est " "nécessaire pour la capture." #: camlibs/ptp2/library.c:3045 msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Cet appareil ne prend pas en charge Capture EOS Canon" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 #, fuzzy msgid "Canon EOS Half-Press failed" msgstr "Échec de Capture EOS Canon" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 msgid "Canon EOS Get Changes failed" msgstr "Impossible d'obtenir les modifications de Canon EOS" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "" "Capture EOS Canon n'a pas pu déclencher : possible problème de mise au point." #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 #, fuzzy msgid "Canon EOS Half-Release failed" msgstr "Échec de Capture EOS Canon" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 #, fuzzy msgid "Canon EOS Full-Press failed" msgstr "Échec de Capture EOS Canon" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 #, fuzzy msgid "Canon EOS Full-Release failed" msgstr "Échec de Capture EOS Canon" #: camlibs/ptp2/library.c:3106 msgid "Canon EOS Capture failed" msgstr "Échec de Capture EOS Canon" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "Échec de Capture EOS Canon : %x" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "" "Capture EOS Canon n'a pas pu déclencher : possible problème de miroir relevé." #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" "Capture EOS Canon n'a pas pu déclencher : possible manque de mémoire sur la " "carte." #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "" "Capture EOS Canon n'a pas pu déclencher : carte peut-être en lecture seule." #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" "Capture EOS Canon n'a pas pu déclencher : erreur %d inconnue, veuillez le " "signaler." #: camlibs/ptp2/library.c:3332 msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "" "Cet appareil Canon ne prend pas en charge l'initiation de Canon Capture" #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 msgid "Canon disable viewfinder failed" msgstr "Impossible de désactiver Canon viewfinder" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 msgid "Canon Capture failed" msgstr "Échec de Canon Capture" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "Cet appareil ne prend pas en charge l'acquisition générique" #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "Échec du déclenchement de Capture EOS Canon : 0x%x" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" "L'initialisation de cet appareil ne fonctionne pas. Veuillez le signaler." #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "lecture seule" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "lecture et écriture" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, c-format msgid "Manufacturer: %s\n" msgstr "Fabricant : %s\n" #: camlibs/ptp2/library.c:4800 #, c-format msgid "Model: %s\n" msgstr "Modèle : %s\n" #: camlibs/ptp2/library.c:4802 #, c-format msgid " Version: %s\n" msgstr " Version : %s\n" #: camlibs/ptp2/library.c:4805 #, c-format msgid " Serial Number: %s\n" msgstr " Numéro de série : %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "Identifiant du fabricant : 0x%x (%d.%d)\n" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "Description du fabricant : %s\n" #: camlibs/ptp2/library.c:4821 #, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "Version standard de PTP : %d.%d\n" #: camlibs/ptp2/library.c:4828 #, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Mode d’opération : 0x%04x\n" #: camlibs/ptp2/library.c:4833 #, c-format msgid "" "\n" "Capture Formats: " msgstr "" "\n" "Formats d'acquisition : " #: camlibs/ptp2/library.c:4847 #, c-format msgid "Display Formats: " msgstr "Formats d'affichage : " #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "Propriétés de la prise en charge d'objet MTP :\n" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr " Erreur PTP %04x pour cette requête" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" "\n" "Capacités de l'appareil :\n" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "\tFichier téléchargé, " #: camlibs/ptp2/library.c:4902 #, c-format msgid "File Deletion, " msgstr "Fichier supprimé, " #: camlibs/ptp2/library.c:4904 #, c-format msgid "No File Deletion, " msgstr "Pas de fichier supprimé, " #: camlibs/ptp2/library.c:4908 #, c-format msgid "File Upload\n" msgstr "Fichier envoyé\n" #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "Pas de fichier envoyé\n" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "\tAcquisition d'image générique, " #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "\tPas d'image capturée, " #: camlibs/ptp2/library.c:4920 #, c-format msgid "Open Capture, " msgstr "Prise de vue ouverte, " #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "Pas de capture possible, " #: camlibs/ptp2/library.c:4929 #, c-format msgid "Canon Capture" msgstr "Canon Capture" #: camlibs/ptp2/library.c:4933 #, c-format msgid "Canon EOS Capture" msgstr "Capture Canon EOS" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "%sBouton de temps de pose de Canon EOS" #: camlibs/ptp2/library.c:4947 #, c-format msgid "Nikon Capture 1" msgstr "Capture 1 Nikon" #: camlibs/ptp2/library.c:4951 #, c-format msgid "%sNikon Capture 2" msgstr "%sCapture 2 Nikon" #: camlibs/ptp2/library.c:4955 #, c-format msgid "%sNikon Capture 3 " msgstr "%sCapture 3 Nikon " #: camlibs/ptp2/library.c:4965 #, c-format msgid "Sony Capture" msgstr "Capture Sony" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "Capture Olympus E XML\n" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "Aucune acquisition spécifique au fabricant\n" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "\tPrise en charge du Wi-Fi Nikon\n" #: camlibs/ptp2/library.c:4991 #, c-format msgid "\tCanon Wifi support\n" msgstr "\tPrise en charge du Wi-Fi Canon\n" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" "\n" "Résumé du dispositifs de stockage :\n" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "\tDescription du stockage : %s\n" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "\tNom de volume : %s\n" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "ROM intégrée" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "ROM amovible" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "RAM intégrée" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "RAM amovible (carte mémoire)" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, c-format msgid "Unknown: 0x%04x\n" msgstr "Inconnu : 0x%04x\n" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "\tType de stockage : %s\n" #: camlibs/ptp2/library.c:5043 msgid "Generic Flat" msgstr "Générique plat" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "Générique hiérarchique" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "Disposition de l'appareil numérique (DCIM) " #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "\tType de système de fichiers : %s\n" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "Lecture et écriture" #: camlibs/ptp2/library.c:5056 msgid "Read-Only" msgstr "Lecture seule" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "Lecture seul avec suppression d'objet" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "\tCapacité d'accès : %s\n" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "\tCapacité maximale : %llu (%lu Mo)\n" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "\tEspace mémoire libre (en octet) : %llu (%lu Mo)\n" #: camlibs/ptp2/library.c:5075 #, c-format msgid "\tFree Space (Images): %d\n" msgstr "\tEspace mémoire libre (en nombre d'images) : %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" "\n" "Résumé des propriétés de l'appareil :\n" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr " n'a pas pu être lue.\n" #: camlibs/ptp2/library.c:5116 #, c-format msgid "cannot be queried.\n" msgstr "impossible d'être demandé.\n" #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr " erreur %x pour cette requête." #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "Le fichier « %s/%s » n'existe pas." #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "Les métadonnée ne sont prises en charge que par les appareils MTP." #: camlibs/ptp2/library.c:6414 msgid "Device does not support setting object protection." msgstr "Ce périphérique ne permet pas de définir la protection d'objet." #: camlibs/ptp2/library.c:6418 #, c-format msgid "Device failed to set object protection to %d" msgstr "" "Impossible de définir la protection de l'objet à %d sur le périphérique" #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Initialisation de l'appareil" #: camlibs/ptp2/library.c:7254 #, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "" "PTP n'est actuellement implémenté que pour les appareils USB et PTP/IP, type " "de port %x" #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" "La prise en charge du XML encapsulé d’Olympus n’est actuellement disponible " "qu’avec la prise en charge de libxml2 lors de la construction." #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "Erreur PTP non définie" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP fonctionnel" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "Erreur générale PTP" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "Session PTP non ouverte" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "Identifiant de transaction PTP incorrect" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "Opération PTP non prise en charge" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "Paramètre PTP non pris en charge" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "Transfert PTP incomplet" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "Identifiant de stockage PTP incorrect" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "Identificateur d'objet PTP incorrect" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "Propriété de périphérique PTP non prise en charge" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "Code de format d'objet PTP incorrect" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "Pas d'espace PTP disponible" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "Objet PTP protégé en écriture" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "Mémoire PTP en lecture seule" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "Accès PTP refusé" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "Pas de vignette PTP présente" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "Échec du test PTP automatique" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "Effacement PTP partiel" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "Espace PTP non disponible" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "Spécification PTP par format non prise en charge" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "Pas de renseignements PTP corrects sur l'objet" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "Format de code PTP incorrect" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "Code de fabricant PTP inconnu" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "Acquisition PTP déjà terminée" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "Périphérique PTP occupé" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "Objet PTP père incorrect" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "Format de propriété de périphérique PTP incorrect" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "Valeur de propriété de périphérique PTP incorrecte" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "Paramètre PTP incorrect" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "Session PTP déjà ouverte" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "Opération PTP annulée" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "Spécification PTP de la destination non prise en charge" #: camlibs/ptp2/ptp.c:4047 msgid "Filename Required" msgstr "Nom de fichier nécessaire" #: camlibs/ptp2/ptp.c:4048 msgid "Filename Conflicts" msgstr "Conflit de nom de fichier" #: camlibs/ptp2/ptp.c:4049 msgid "Filename Invalid" msgstr "Nom de fichier incorrect" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "Erreur matérielle" #: camlibs/ptp2/ptp.c:4052 msgid "Out of Focus" msgstr "Hors de mise au point" #: camlibs/ptp2/ptp.c:4053 msgid "Change Camera Mode Failed" msgstr "Échec de modification du mode de l'appareil" #: camlibs/ptp2/ptp.c:4054 msgid "Invalid Status" msgstr "État incorrect" #: camlibs/ptp2/ptp.c:4055 msgid "Set Property Not Supported" msgstr "Définition de propriété non prise en charge" #: camlibs/ptp2/ptp.c:4056 msgid "Whitebalance Reset Error" msgstr "Erreur de réinitialisation de balance des blancs" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "Erreur de référence de poussière" #: camlibs/ptp2/ptp.c:4058 msgid "Shutter Speed Bulb" msgstr "Temps de pose en pose longue" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "Séquence avec miroir relevé" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "" "Mode de l'appareil sans ajustement de la valeur d'ouverture du diaphragme" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "Pas en mode de visée par l’écran" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "Fin de palier de lecteur Mf" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "Palier de lecteur Mf insuffisant" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "Annulation du transfert avancé" #: camlibs/ptp2/ptp.c:4066 msgid "Unknown Command" msgstr "Commande inconnue" #: camlibs/ptp2/ptp.c:4067 msgid "Operation Refused" msgstr "Opération refusée" #: camlibs/ptp2/ptp.c:4068 msgid "Lens Cover Present" msgstr "Présence du cache d'objectif" #: camlibs/ptp2/ptp.c:4069 msgid "Battery Low" msgstr "Batterie déchargée" #: camlibs/ptp2/ptp.c:4070 msgid "Camera Not Ready" msgstr "Appareil non prêt" #: camlibs/ptp2/ptp.c:4072 msgid "PTP Timeout" msgstr "Délai d'attente PTP" #: camlibs/ptp2/ptp.c:4073 msgid "PTP Cancel Request" msgstr "Annuler la demande PTP" #: camlibs/ptp2/ptp.c:4075 msgid "PTP Response Expected" msgstr "Réponse PTP attendue" #: camlibs/ptp2/ptp.c:4076 msgid "PTP Data Expected" msgstr "Données PTP attendues" #: camlibs/ptp2/ptp.c:4077 msgid "PTP I/O Error" msgstr "Erreur d'entrée sortie PTP" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "Propriété PTP non définie" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "Mode d’opération" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "Paramètre de compression" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Balance des blancs" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "Augmentation RVB" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "Temps de pose" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "Mode d’exposition programmé " #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "Indice d’exposition (vitesse ISO du film)" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "Correction d’exposition de balance des blancs" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "Retard de préacquisition" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "Contraste" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Zoom numérique" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "Nombre d'image pour l'intervallomètre" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "Intervalle de prise de vue pour l'intervallomètre" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "URL d'envoi" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "Droit d'auteur" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "Taille de vignette prise en charge" #: camlibs/ptp2/ptp.c:4136 #, fuzzy msgid "Enabled Streams" msgstr "État incorrect" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Format de date" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "Résolution du film" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "Qualité du film" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Contraste" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "Luminosité" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Format de date" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "Format d'horodatage" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "Sortie vidéo" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "Économie d'énergie" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "Langue de l'interface utilisateur" #: camlibs/ptp2/ptp.c:4169 msgid "Battery Type" msgstr "Type de batterie" #: camlibs/ptp2/ptp.c:4170 msgid "Battery Mode" msgstr "Mode de batterie" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "Type de verrouillage d'interface utilisateur" #: camlibs/ptp2/ptp.c:4172 msgid "Camera Mode" msgstr "Mode de l'appareil" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "Vue complète du format de fichier" #: camlibs/ptp2/ptp.c:4176 msgid "Self Time" msgstr "Retardateur automatique" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 msgid "Shooting Mode" msgstr "Mode de prise de vue" #: camlibs/ptp2/ptp.c:4180 msgid "Image Mode" msgstr "Mode d’image" #: camlibs/ptp2/ptp.c:4187 msgid "Slow Shutter Setting" msgstr "Réglage du temps de pose long" #: camlibs/ptp2/ptp.c:4188 msgid "AF Mode" msgstr "Mode de mise au point automatique" #: camlibs/ptp2/ptp.c:4189 msgid "Image Stabilization" msgstr "Stabilisation d'image" #: camlibs/ptp2/ptp.c:4191 msgid "Color Gain" msgstr "Gain des couleurs" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "Sensibilité" #: camlibs/ptp2/ptp.c:4194 msgid "Parameter Set" msgstr "Jeu de paramètres" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "Priorité à l'ouverture active" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "Priorité à l'ouverture maximale" #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "Distance focale de type téléobjectif" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "Largeur de distance focale" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "Dénominateur de distance focale" #: camlibs/ptp2/ptp.c:4207 msgid "Capture Transfer Mode" msgstr "Mode de transfert de prise de vue" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "Préfixe du nom" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "Mode de qualité des tailles d'image" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "Taille de vignette prise en charge" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "Taille de sortie des données depuis l'appareil" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "Taille d'entrée des données vers l'appareil" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "Version d'API de la télécommande" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "Propriétaire de l'appareil" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "Temps UNIX" #: camlibs/ptp2/ptp.c:4219 msgid "Camera Body ID" msgstr "Identifiant du matériel de l'appareil" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "Afficher la valeur d'ouverture " #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "Priorité à l'ouverture de l'Apex ouverte" #: camlibs/ptp2/ptp.c:4223 msgid "Digital Zoom Magnification" msgstr "Zoom numérique avec loupe de visée" #: camlibs/ptp2/ptp.c:4224 msgid "Ml Spot Position" msgstr "Position plusieurs points" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "Afficher la valeur d'ouverture maximale" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "Priorité à l'ouverture de l'Apex au maximum" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "Position initiale de l'EZoom" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "Taille du téléobjectif de l'EZoom" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "Quantité du flash énumérée" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "Angle de rotation" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "Rotation de la scène" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "Mode émulation de l'événement" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "Type de diaporama" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "Taille moyenne des fichiers" #: camlibs/ptp2/ptp.c:4239 msgid "Model ID" msgstr "Identifiant du modèle :" #: camlibs/ptp2/ptp.c:4248 msgid "Shooting Bank" msgstr "Prise de vue personnalisée" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "Nom de prise de vue personnalisée A" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "Nom de prise de vue personnalisée B" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "Nom de prise de vue personnalisée C" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "Nom de prise de vue personnalisée D" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "Réinitialiser la personnalisation 0" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "Température de couleur de balance des blancs" #: camlibs/ptp2/ptp.c:4278 msgid "White Balance Preset Number" msgstr "Numéro de préconfiguration de balance des blancs" #: camlibs/ptp2/ptp.c:4280 msgid "White Balance Preset Name 0" msgstr "Nom 0 de préconfiguration de balance des blancs" #: camlibs/ptp2/ptp.c:4282 msgid "White Balance Preset Name 1" msgstr "Nom 1 de préconfiguration de balance des blancs" #: camlibs/ptp2/ptp.c:4284 msgid "White Balance Preset Name 2" msgstr "Nom 2 de préconfiguration de balance des blancs" #: camlibs/ptp2/ptp.c:4286 msgid "White Balance Preset Name 3" msgstr "Nom 3 de préconfiguration de balance des blancs" #: camlibs/ptp2/ptp.c:4288 msgid "White Balance Preset Name 4" msgstr "Nom 4 de préconfiguration de balance des blancs" #: camlibs/ptp2/ptp.c:4290 msgid "White Balance Preset Value 0" msgstr "Valeur 0 de préconfiguration de balance des blancs" #: camlibs/ptp2/ptp.c:4292 msgid "White Balance Preset Value 1" msgstr "Valeur 1 de préconfiguration de balance des blancs" #: camlibs/ptp2/ptp.c:4294 msgid "White Balance Preset Value 2" msgstr "Valeur 2 de préconfiguration de balance des blancs" #: camlibs/ptp2/ptp.c:4296 msgid "White Balance Preset Value 3" msgstr "Valeur 3 de préconfiguration de balance des blancs" #: camlibs/ptp2/ptp.c:4298 msgid "White Balance Preset Value 4" msgstr "Valeur 4 de préconfiguration de balance des blancs" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "Distance focale de l'objectif (non CPU)" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "Ouverture relative au maximum de l'objectif (non CPU)" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "DX automatiquement rogné" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "Nom de menu personnalisé A" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "Nom de menu personnalisé B" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "Nom de menu personnalisé C" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "Nom de menu personnalisé D" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "Réinitialiser le menu personnalisé" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "Mise au point automatique verticale activée" #: camlibs/ptp2/ptp.c:4360 msgid "Focus Area Zone" msgstr "Zone de mise au point" #: camlibs/ptp2/ptp.c:4362 msgid "Enable Copyright" msgstr "Activer les droits d'auteur" #: camlibs/ptp2/ptp.c:4366 msgid "Exposure ISO Step" msgstr "Palier d'exposition ISO" #: camlibs/ptp2/ptp.c:4368 msgid "Exposure Step" msgstr "Palier d'exposition" #: camlibs/ptp2/ptp.c:4370 msgid "Exposure Compensation (EV)" msgstr "Correction d'exposition (valeur d'exposition)" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "Zone pondérée centrale" #: camlibs/ptp2/ptp.c:4376 msgid "Exposure Base Matrix" msgstr "Matrice de base d'exposition" #: camlibs/ptp2/ptp.c:4378 msgid "Exposure Base Center" msgstr "Centre de base d'exposition" #: camlibs/ptp2/ptp.c:4380 msgid "Exposure Base Spot" msgstr "Point de base d'exposition" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "Zone de mise au point automatique en mode de visée par l’écran" #: camlibs/ptp2/ptp.c:4390 msgid "Auto Meter Off Time" msgstr "Mesure automatique hors délai" #: camlibs/ptp2/ptp.c:4392 msgid "Self Timer Delay" msgstr "Délai du retardateur" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "Configuration de date d'image" #: camlibs/ptp2/ptp.c:4398 msgid "Auto Off Timers" msgstr "Délais d'extinction automatique" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "Niveau d'angle" #: camlibs/ptp2/ptp.c:4402 msgid "Shooting Speed" msgstr "Vitesse de prise du vue" #: camlibs/ptp2/ptp.c:4406 msgid "Exposure delay mode" msgstr "Mode de temporisation d'exposition" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 msgid "Long Exposure Noise Reduction" msgstr "Réduction du bruit pour exposition longue" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "Éclairage du LCD" #: camlibs/ptp2/ptp.c:4418 msgid "High ISO noise reduction" msgstr "Réduction du bruit pour grande ISO" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "Conseils sur l'écran" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "Nom de l'artiste" #: camlibs/ptp2/ptp.c:4424 msgid "Copyright Information" msgstr "Renseignements sur les droits d'auteur" #: camlibs/ptp2/ptp.c:4432 msgid "Modeling Flash" msgstr "Modélisation du flash" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "Mode bracketing manuel" #: camlibs/ptp2/ptp.c:4440 msgid "Auto Bracket Selection" msgstr "Sélection de bracket automatique" #: camlibs/ptp2/ptp.c:4441 msgid "NIKON Auto Bracketing Set" msgstr "Bracketing Nikon automatique réglé" #: camlibs/ptp2/ptp.c:4443 msgid "Center Button Shooting Mode" msgstr "Mode de prise de vue par le bouton central" #: camlibs/ptp2/ptp.c:4445 msgid "Center Button Playback Mode" msgstr "Mode de lecture par le bouton central" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "Multisélecteur" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "Lecture des renseignements de la photographie" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "Assigner une touche de fonction" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "Personnaliser les boutons de commande" #: camlibs/ptp2/ptp.c:4457 msgid "Aperture Setting" msgstr "Réglages de l'ouverture du diaphragme" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "Boutons et commandes" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "Pas de carte CompactFlash libérée" #: camlibs/ptp2/ptp.c:4465 msgid "Center Button Zoom Ratio" msgstr "Rapport du zoom par le bouton central" #: camlibs/ptp2/ptp.c:4467 msgid "Function Button 2" msgstr "Bouton de fonction 2" #: camlibs/ptp2/ptp.c:4471 msgid "Normal AF On" msgstr "Mise au point automatique normale activée" #: camlibs/ptp2/ptp.c:4473 msgid "Clean Image Sensor" msgstr "Nettoyer le capteur d'image" #: camlibs/ptp2/ptp.c:4475 msgid "Image Comment String" msgstr "Commentaire d'image" #: camlibs/ptp2/ptp.c:4477 msgid "Image Comment Enable" msgstr "Commentaire d'image activé" #: camlibs/ptp2/ptp.c:4479 msgid "Image Rotation" msgstr "Rotation de l'image" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "Définition manuelle du nombre d'objectifs" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "Taille de l'écran de film" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "Voix du film" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "Microphone du film" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "Emplacement de carte du film" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "Retard d'extinction du moniteur" #: camlibs/ptp2/ptp.c:4497 msgid "Bracketing Enable" msgstr "Bracketing activé" #: camlibs/ptp2/ptp.c:4499 msgid "Exposure Bracketing Step" msgstr "Palier d'exposition du bracketing" #: camlibs/ptp2/ptp.c:4501 msgid "Exposure Bracketing Program" msgstr "Programme d'exposition du bracketing" #: camlibs/ptp2/ptp.c:4503 msgid "Auto Exposure Bracket Count" msgstr "Mesure d'exposition automatique de bracket" #: camlibs/ptp2/ptp.c:4504 msgid "White Balance Bracket Step" msgstr "Palier de balance des blancs du bracket" #: camlibs/ptp2/ptp.c:4505 msgid "White Balance Bracket Program" msgstr "Programme de balance des blancs du bracket" #: camlibs/ptp2/ptp.c:4507 msgid "Lens ID" msgstr "Identifiant de l'objectif" #: camlibs/ptp2/ptp.c:4509 msgid "Lens Sort" msgstr "Genre d'objectif" #: camlibs/ptp2/ptp.c:4511 msgid "Lens Type" msgstr "Type d'objectif" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "Distance focale minimale" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "Distance focale maximale" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "Ouverture maximale à la distance focale minimale" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "Ouverture minimale à la distance focale maximale" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "Afficher la découverte d'ISO" #: camlibs/ptp2/ptp.c:4523 msgid "Auto Off Photo" msgstr "Arrêt automatique des photographies" #: camlibs/ptp2/ptp.c:4525 msgid "Auto Off Menu" msgstr "Arrêt automatique du menu" #: camlibs/ptp2/ptp.c:4527 msgid "Auto Off Info" msgstr "Arrêt automatique des renseignements" #: camlibs/ptp2/ptp.c:4529 msgid "Self Timer Shot Number" msgstr "Nombre de prises de vue avec retardateur" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "Contrôle des vignettes" #: camlibs/ptp2/ptp.c:4537 msgid "Nikon Exposure Time" msgstr "Temps de pose du Nikon" #: camlibs/ptp2/ptp.c:4539 msgid "Warning Status" msgstr "État d'alerte" #: camlibs/ptp2/ptp.c:4546 msgid "AF LCD Top Mode 2" msgstr "Mode 2 de mise au point automatique LCD en haut" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "Capteur de mise au point automatique activé" #: camlibs/ptp2/ptp.c:4552 msgid "Exposure Meter" msgstr "Mesure de l'exposition" #: camlibs/ptp2/ptp.c:4556 msgid "USB Speed" msgstr "Vitesse du port USB" #: camlibs/ptp2/ptp.c:4558 msgid "CCD Serial Number" msgstr "Numéro de série du CCD" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "Type PTN du groupe" #: camlibs/ptp2/ptp.c:4564 msgid "FNumber Lock" msgstr "Verrouillage de la valeur d'ouverture du diaphragme" #: camlibs/ptp2/ptp.c:4566 msgid "Exposure Aperture Lock" msgstr "Verrouillage de l'ouverture d'exposition" #: camlibs/ptp2/ptp.c:4568 msgid "TV Lock Setting" msgstr "Réglage du verrouillage télévision" #: camlibs/ptp2/ptp.c:4570 msgid "AV Lock Setting" msgstr "Réglage du verrouillage de priorité à l'ouverture" #: camlibs/ptp2/ptp.c:4572 msgid "Illum Setting" msgstr "Réglages de l'éclairage" #: camlibs/ptp2/ptp.c:4574 msgid "Focus Point Bright" msgstr "Luminosité de l'endroit de mise au point" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "Flash externe connecté" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "État du flash externe" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "Spécification du flash externe" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 msgid "External Flash Mode" msgstr "Mode de flash externe" #: camlibs/ptp2/ptp.c:4584 msgid "External Flash Compensation" msgstr "Correction d'exposition par le flash externe" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "Effet de remplissage noir et blanc" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "Dureté noir et blanc" #: camlibs/ptp2/ptp.c:4604 msgid "BW Contrast" msgstr "Contraste noir et blanc" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "Type de réglages noir et blanc" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "Mode de sauvegarde emplacement 2" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "Mode de bit brut" # NOTE: s/ou/uo/ #: camlibs/ptp2/ptp.c:4614 msgid "Flourescent Type" msgstr "Type fluorescent" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "Ajuster la température de couleur" #: camlibs/ptp2/ptp.c:4618 msgid "Tune Preset 0" msgstr "Ajuster la préconfiguration 0" #: camlibs/ptp2/ptp.c:4620 msgid "Tune Preset 1" msgstr "Ajuster la préconfiguration 1" #: camlibs/ptp2/ptp.c:4622 msgid "Tune Preset 2" msgstr "Ajuster la préconfiguration 2" #: camlibs/ptp2/ptp.c:4624 msgid "Tune Preset 3" msgstr "Ajuster la préconfiguration 3" #: camlibs/ptp2/ptp.c:4626 msgid "Tune Preset 4" msgstr "Ajuster la préconfiguration 4" #: camlibs/ptp2/ptp.c:4630 msgid "Autofocus Mode" msgstr "Mode de mise au point automatique" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "Éclairage d'assistance de mise au point automatique" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "Réglage automatique ISO P/A/DVP" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "Afficher la grille viewfinder" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "Énergie du mode de commande du flash" #: camlibs/ptp2/ptp.c:4656 msgid "Auto FP" msgstr "Synchronisation ultrarapide automatique" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "Affichage d'avertissement" #: camlibs/ptp2/ptp.c:4662 msgid "Battery Cell Kind" msgstr "Type de cellule de batterie" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "Limite haute d'ISO automatique" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "Continu à vitesse rapide" #: camlibs/ptp2/ptp.c:4670 msgid "Info Disp Setting" msgstr "Réglage d'affichage de renseignements" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "Bouton de prévisualisation" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "Bouton de prévisualisation 2" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "Bouton 2 de verrouillage d'exposition ou mise au point automatiques" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "Affichage d'indicateur" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "Priorité de type de cellule" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "Images et paliers du bracketing" #: camlibs/ptp2/ptp.c:4684 msgid "Live View Mode" msgstr "Mode de visée par l’écran" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "Fonction mode de visée par l’écran" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "État du mode de visée par l’écran" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "Rapport du zoom d'image en mode de visée par l’écran" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "Condition interdite en mode de visée par l’écran" #: camlibs/ptp2/ptp.c:4694 msgid "Exposure Display Status" msgstr "Affichage de l'état d'exposition" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "État d'indicateur d'exposition " #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "État d'erreur d'affichage de renseignements" #: camlibs/ptp2/ptp.c:4700 msgid "Exposure Indicate Lightup" msgstr "L'éclairage indique l'exposition" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "Valeur de répétition manuelle du flash" #: camlibs/ptp2/ptp.c:4708 msgid "Flash MRepeat Count" msgstr "Nombre de répétitions manuelles du flash" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "Intervalle de répétitions manuelles du flash" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "Activer le contrôle d'image" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "Modifier le contrôle d'image" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "ISO" #: camlibs/ptp2/ptp.c:4749 msgid "Image Compression" msgstr "Compression d’image" #: camlibs/ptp2/ptp.c:4758 msgid "Secure Time" msgstr "Retardateur sécurisé" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "Certification du périphérique" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "Révocation de renseignements" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "Synchronisation des partenaires" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "Nom du périphérique familier" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "Niveau sonore" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "Icône du périphérique" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "Renseignements sur l'initiateur de session" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "Type d'appareil perçu" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "Taux de lecture" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "Lecture d'objets" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "Lecture de l'indice du conteneur" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "Position de lecture" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "Identifiant PlaysForSure" #: camlibs/ptp2/ptp.c:4782 msgid "Quality" msgstr "Qualité" #: camlibs/ptp2/ptp.c:4783 msgid "Release Mode" msgstr "Mode de relâchement" #: camlibs/ptp2/ptp.c:4784 msgid "Focus Areas" msgstr "Zones de mise au point" #: camlibs/ptp2/ptp.c:4785 msgid "AE Lock" msgstr "Verrouillage d'exposition automatique" #: camlibs/ptp2/ptp.c:4797 msgid "Image size" msgstr "Taille d'image" #: camlibs/ptp2/ptp.c:4798 msgid "Shutter speed" msgstr "Temps de pose" #: camlibs/ptp2/ptp.c:4799 msgid "Color temperature" msgstr "Température de couleur" #: camlibs/ptp2/ptp.c:4802 msgid "Expose Index" msgstr "Indice d’exposition" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "Filtre AB" #: camlibs/ptp2/ptp.c:4807 msgid "Still Image" msgstr "Image fixe" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "%.1f arrêts" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "%.0f mm" #: camlibs/ptp2/ptp.c:4940 msgid "JPEG Norm" msgstr "JPEG Normal" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "RAW + JPEG de base" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Incandescent" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "Macro automatique (bloquée)" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "Moyenne pondérée centrale" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "Point central" #: camlibs/ptp2/ptp.c:4966 msgid "Automatic flash" msgstr "Flash automatique" #: camlibs/ptp2/ptp.c:4969 msgid "Automatic Red-eye Reduction" msgstr "Dispositif anti yeux rouges automatique" #: camlibs/ptp2/ptp.c:4970 msgid "Red-eye fill flash" msgstr "Flash anti yeux rouges en appoint" #: camlibs/ptp2/ptp.c:4988 msgid "Power Wind" msgstr "Puissance du vent" #: camlibs/ptp2/ptp.c:4994 msgid "Timer + Remote" msgstr "Retardateur avec télécommande" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "Verrouillage de mise au point automatique seulement" #: camlibs/ptp2/ptp.c:5056 msgid "Flash Lock" msgstr "Verrouillage du flash" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "Réinitialisation de la mise au point au centre" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "Mise en évidence de l'endroit de mise au point actif" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "Inutilisé" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "SDRAM" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "USB 1.1" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "USB 2.0" #: camlibs/ptp2/ptp.c:5169 msgid "LCD Backlight" msgstr "Luminosité de l'écran LCD" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "Luminosité de l'écran LCD et affichage de renseignements" #: camlibs/ptp2/ptp.c:5228 msgid "1 min" msgstr "1 min" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "5 min" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "10 min" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "15 min" #: camlibs/ptp2/ptp.c:5266 msgid "Dark on light" msgstr "Foncé sur clair" #: camlibs/ptp2/ptp.c:5267 msgid "Light on dark" msgstr "Clair sur foncé" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "Lithium Ion" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "Nickel hydride" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "Nickel cadmium" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "Alkalium manganese" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "Alerte niveau 1" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "Cas d'urgence" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "Alerte niveau 0" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "Économique" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "Très fine" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "Suppression des yeux rouge" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "Synchronisation basse vitesse" #: camlibs/ptp2/ptp.c:5345 msgid "Auto + Red Eye Suppression" msgstr "Automatique + suppression des yeux rouge" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "Activé + suppression des yeux rouge" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "Afficher la distance" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "Temps de pose court" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "Temps de pose long" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "Vue de nuit" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "Niveaux de gris" #: camlibs/ptp2/ptp.c:5370 msgid "Pan Focus" msgstr "Mise au point panoramique" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "Une seule prise de vue" #: camlibs/ptp2/ptp.c:5375 msgid "Continuous Shooting" msgstr "Prise de vue continue" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "Retardateur pour une seul prise de vue" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "Prise de vue continue (basse vitesse)" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "Prise de vue continue (haute vitesse)" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2x" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4x" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "Régulier" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "Mesure pondérée centrale" #: camlibs/ptp2/ptp.c:5386 msgid "Spot Metering" msgstr "Mesure de position" #: camlibs/ptp2/ptp.c:5387 msgid "Average Metering" msgstr "Mesure moyenne" #: camlibs/ptp2/ptp.c:5388 msgid "Evaluative Metering" msgstr "Mesure évaluative" #: camlibs/ptp2/ptp.c:5389 msgid "Partial Metering" msgstr "Mesure partielle" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "Mesure pondérée centrale moyenne" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "Mesure de position associée au cadre de mise au point automatique" #: camlibs/ptp2/ptp.c:5392 msgid "Multi-Spot Metering" msgstr "Mesure sur plusieurs points" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "Fonction de temps de pose long non disponible" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "Faible 2" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 msgid "High 2" msgstr "Élevé 2" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "Haute 1" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "Haute 2" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "Paramètre standard de développement" #: camlibs/ptp2/ptp.c:5462 msgid "Development Parameters 1" msgstr "Paramètre 1 de développement" #: camlibs/ptp2/ptp.c:5463 msgid "Development Parameters 2" msgstr "Paramètre 2 de développement" #: camlibs/ptp2/ptp.c:5464 msgid "Development Parameters 3" msgstr "Paramètre 3 de développement" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "Position sur plusieurs points centrés" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "Position sur plusieurs point attachés à la mise au point automatique" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "Carte support" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "Groupe de la carte support" #: camlibs/ptp2/ptp.c:5600 msgid "Encounter" msgstr "Rencontrer" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "Boîte de rencontre" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "M4A" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "Microcode" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "Format d'image Windows" #: camlibs/ptp2/ptp.c:5605 msgid "Undefined Audio" msgstr "Audio non définie" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "Codec Audible.com" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "Liste de lecture Samsung" #: camlibs/ptp2/ptp.c:5612 msgid "Undefined Video" msgstr "Vidéo non définie" #: camlibs/ptp2/ptp.c:5617 msgid "Undefined Collection" msgstr "Collection non définie" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "Résumé multimédia de l'album" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "Résumé d'image de l'album" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "Résumé audio de l'album" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "Résumé vidéo de l'album" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "Résumé de lecture audio et vidéo" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "Résumé du groupe de contact" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "Résumé du répertoire de messages" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "Résumé du chapitre production" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "Résumé de la liste audio" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "Résumé de la liste vidéo" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "Résumé du support de diffusion" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "Liste de lecture WPL" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "Liste de lecture M3U" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "Liste de lecture MPL" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "Liste de lecture ASX" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "Liste de lecture PLS" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "Document non défini" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "Résumé du document" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "Document XML" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "Document Microsoft Word" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "Document HTML compilé MHT" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "Feuille de calcul Microsoft Excel (.xls)" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "Microsoft Powerpoint (.ppt)" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "Message non défini" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "Résumé du message" #: camlibs/ptp2/ptp.c:5643 msgid "Undefined Contact" msgstr "Contact non défini" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "Résumé du contact" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "vCard2" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "vCard3" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "Objet non défini dans le calendrier" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "Résumé de l'objet dans le calendrier" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "vCalendar1" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "vCalendar2" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "Exécutable Windows non défini" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "Support de diffusion" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "Section" #: camlibs/ptp2/ptp.c:5692 #, c-format msgid "Unknown(%04x)" msgstr "inconnu(%04x)" #: camlibs/ptp2/ptp.c:5702 #, fuzzy msgid "Get device info" msgstr "obtenir les renseignements du périphérique" #: camlibs/ptp2/ptp.c:5703 msgid "Open session" msgstr "Ouvrir la session" #: camlibs/ptp2/ptp.c:5704 msgid "Close session" msgstr "Fermer la session" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "Obtenir l'identifiant du support de stockage " #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "Obtenir les renseignements sur le support de stockage" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "Obtenir le nombre d'objet" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "Obtenir les identificateurs de l'objet" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "Obtenir les renseignements sur l'objet " #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "Obtenir l'objet" #: camlibs/ptp2/ptp.c:5711 msgid "Get thumbnail" msgstr "Récupération de vignette" #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "Supprimer l'objet" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "Envoyer des renseignements sur l'objet" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "Envoyer l'objet" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "Initialiser l'acquisition" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "Format de stockage" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "Réinitialiser le périphérique" #: camlibs/ptp2/ptp.c:5718 msgid "Self test device" msgstr "Test automatique du dispositif" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "Définir la protection de l'objet" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "Éteindre le périphérique" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "Obtenir la description de propriété du périphérique" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "Obtenir la valeur de propriété du périphérique " #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "Réglage de valeur de propriété du périphérique" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "Réinitialiser la valeur de propriété du périphérique" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "Mettre fin à l'acquisition ouverte" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "Déplacer l'objet" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "Copier l'objet" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "Obtenir l'objet partiel" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "Initier l'acquisition ouverte" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 #, fuzzy msgid "Get Vendor Extension Maps" msgstr "Extension du fabricant" #: camlibs/ptp2/ptp.c:5735 #, fuzzy msgid "Get Vendor Device Info" msgstr "obtenir les renseignements du périphérique" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 #, fuzzy msgid "Get Filesystem Manifest" msgstr "Système de fichiers rapide" #: camlibs/ptp2/ptp.c:5738 #, fuzzy msgid "Get Stream Info" msgstr "Obtenir les renseignements sur le support de stockage" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "Obtenir les propriétés de l'objet prises en charge" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "Obtenir la description des propriétés de l'objet" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "Obtenir la valeur des propriétés de l'objet" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "Définir la valeur des propriétés de l'objet" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "Obtenir la liste des propriétés de l'objet" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "Définir la liste des propriétés de l'objet" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "Obtenir les propriétés interdépendantes de l'objet" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "Envoyer la liste des propriétés de l'objet" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "Obtenir les références de l'objet" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "Définir les références de l'objet" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "Mettre à jour le microcode de l'appareil" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "Aller à la position suivante de la liste de lecture" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "Obtenir une requête sur le temps de sécurité" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "Obtenir une réponse sur le temps de sécurité" #: camlibs/ptp2/ptp.c:5759 msgid "Set license response" msgstr "Définir la réponse de la licence" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "Obtenir la liste de synchronisation" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "Envoyer une demande de mesure" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "Obtenir la demande de mesure" #: camlibs/ptp2/ptp.c:5763 msgid "Get meter response" msgstr "Obtenir une réponse sur la mesure" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "Effacer les données stockées" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "Obtenir l'état de la licence" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "Envoyer une commande WMDRM-PD" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "Envoyer une requête WMDRM-PD" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "Signaler les articles ajoutés ou supprimés" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "Signaler les articles acquis" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "Obtenir les types de liste de lecture transférable" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "Envoyer une requête WMDRM-PD pour l'application" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "Obtenir une réponse WMDRM-PD pour l'application" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "Activer les opérations de fichier de confiance" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "Désactiver les opérations de fichier de confiance" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "Fin de la session sécurisée" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "Ouvrir une session média" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "Fermer une session média" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "Obtenir le bloc de donnée suivant" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "Régler l'heure de la position actuelle" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "Envoyer une requête d'enregistrement" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "Obtenir une réponse d'enregistrement" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "Obtenir une requête de proximité" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "Envoyer d'une réponse de proximité" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "Envoyer une requête de licence WMDRM-ND" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "Obtenir une réponse de licence WMDRM-ND" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "Processus de l'objet WFC" #: camlibs/ptp2/ptp.c:5799 msgid "Get Partial Object (64bit Offset)" msgstr "Obtenir l'objet partiel (offset de 64 bits)" #: camlibs/ptp2/ptp.c:5800 msgid "Send Partial Object" msgstr "Envoyer l'objet partiel" #: camlibs/ptp2/ptp.c:5801 msgid "Truncate Object" msgstr "Tronquer l'objet" #: camlibs/ptp2/ptp.c:5802 msgid "Begin Edit Object" msgstr "Début d’édition d’objet" #: camlibs/ptp2/ptp.c:5803 msgid "End Edit Object" msgstr "Fin d’édition d’objet" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "Inconnue %d" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "Extension du fabricant" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "Téléchargement du film…" #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "Téléchargement audio…" #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "Téléchargement des données EXIF…" #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "Pas de données EXIF disponibles pour %s." #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "Impossible de supprimer le fichier." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "Impossible de supprimer le répertoire." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "Impossible de créer le répertoire." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "Version : %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "État RTC : %d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "Date de l'appareil : %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "Identifiant de l'appareil : %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "Pas de carte SD insérée.\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "Identifiant de carte SD : %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "Photographies sur l'appareil : %d.\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "Mémoire SD : %d Mo au total, %d Mo libre.\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "Mémoire interne : %d Mo au total, %d Mo libre.\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Rétroconception en utilisant USB Snoopy, en observant l'image\n" "de mise à jour du microcode et en faisant des essais au hasard.\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "Pilote Ricoh ou Philips par\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "basé sur le pilote de Bob Paauwe\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "inconnu (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Modèle : %s\n" "Mémoire : %d octet(s) sur %d disponible(s)" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2,0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1,5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1,0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0,5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0,0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0,5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1,0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1,5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2,0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 × 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Extérieur" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Maximal" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "Minimal" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Personnage" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Son" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Image et son" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Personnage et son" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3x" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5x" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6x" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7x" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8x" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9x" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Configuration" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Général" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Droit d’auteur (20 caractères maximum)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "Images" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Balance des blancs" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Mode d’enregistrement" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Compression" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "La vitesse %i n'est pas autorisée." #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "%i attendus, %i reçus. Veuillez signaler cette erreur à %s." #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "%i octets attendus, %i reçus. Veuillez signaler cette erreur à %s." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "0x%x était attendu mais 0x%x a été reçu. Veuillez contacter %s." #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "Mauvais caractères (0x%x, 0x%x). Veuillez contacter %s." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "L'appareil est occupé. Si le problème persiste, veuillez contacter %s." #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "" "Délai d'attente dépassé même après deux nouvelles tentatives. Veuillez " "contacter %s." #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "" "Erreur de communication même après deux nouvelles tentatives. Veuillez " "contacter %s." #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "L'appareil n'est pas dans le bon mode. Veuillez contacter %s." #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "L'appareil n'a pas accepté les paramètres. Veuillez contacter %s." #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "Une erreur inconnue est survenue. Veuillez contacter %s." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "" "La longueur du fichier ne doit pas dépasser 12 caractères (« %s » contient " "%i caractères)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "Le pilote pour Samsung digimax 800k driver a été écrit pour gPhoto par James " "McKenzie . Lutz Müller " "l'a porté pour gPhoto2. Marcus Meißner l'a corrigé " "et amélioré." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "Résolution et taille" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Date et heure (GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 msgid "Aperture Settings" msgstr "Réglages de l'ouverture" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Mode couleur" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Dispositif anti yeux rouges" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Réglage du flash" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "Économie d'énergie pour l'hôte (seconde)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Économie d'énergie pour l'appareil (seconde)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Mode de l'objectif" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "coréen" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "anglais" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "français" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "allemand" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "italien" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "japonais" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "espagnol" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "portugais" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Réglages de l'image" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "Quelques notes à propos des appareils Epson :\n" "- certains paramètres ne sont pas configurables à distance :\n" " * le zoom ;\n" " * la mise au point ;\n" " * la configuration personnalisée de la balance des blancs ;\n" "- la configuration a été rétroconçue avec un appareil PhotoPC 3000z,\n" " au cas où le vôtre se comporterait différemment, veuillez contacter\n" " la liste de développement par courrier électronique (en anglais)\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Pas de carte présente" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "Impossible d'obtenir la capacité de la batterie" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "Le niveau de la batterie est trop faible (%d %%). Opération annulée." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Impossible de récupérer la quantité de mémoire disponible" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "L'appareil a refusé trois fois de garder la connexion ouverte." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "Le premier octet reçu (0x%x) n'est pas valable." #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "La transmission du paquet a échoué après %i essais. Veuillez contacter %s." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Impossible de transmettre un paquet malgré plusieurs tentatives." #: camlibs/sierra/library.c:789 #, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "" "Le paquet de donnée a été rejeté par l'appareil. Veuillez contacter %s." #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "" "Impossible de transmettre un paquet (code erreur %i). Veuillez contacter %s." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "La transmission a échoué après deux essais. Abandon…" #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "Résultat inattendu 0x%x. Veuillez contacter %s." #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "Réponse inattendue (%i). Veuillez contacter %s." #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "Impossible d'obtenir le registre %i. Veuillez contacter %s." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "Trop de tentatives infructueuses." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Envoi de données…" #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "Les appels récursifs ne sont pas gérées par le pilote sierra. Veuillez " "contacter %s." #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "Impossible d'obtenir la chaîne de registre %i. Veuillez contacter %s." #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "32 octets attendus, %i reçus. Veuillez contacter %s." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "Temps de pose (en microseconde, 0 pour auto)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "Temps de pose (en seconde)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "N/B" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Anti yeux rouges" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "Synchronisation lente" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "Contraste+" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Contraste-" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "Luminosité+" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "Luminosité-" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Ajustement de l'image" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "Clignote" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "Mode LED" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "Infini" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "Prévisualisation de vignette" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "Suivant" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "Précédent" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Mode d’opération" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "Luminosité de l’écran LCD" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "Extinction automatique de l’écran LCD (en seconde)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "Poids centré" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "Matrice" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Mise au point automatique sur un point" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Mesure de l'exposition" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "Zoom (en millimètre)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "Aucun" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "Verrouillage d'exposition automatique" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "Fisheye" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Large" #: camlibs/sierra/nikon-desc.c:558 msgid "Misc exposure/lens settings" msgstr "Paramètres divers d'exposition et d'objectif" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Verrouillage d’exposition automatique" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880 :\n" " configuration (ou préférences) de l'appareil :\n" "\n" " le zoom optique ne fonctionne pas\n" " convenablement ;\n" "\n" " les paramètres de configuration ne peuvent\n" " pas tous être correctement lus ou écrits. Par\n" " exemple, le paramétrage précis de la balance\n" " des blancs, ou le paramétrage de la langue ;\n" "\n" " placez l'appareil en mode « M » pour pouvoir\n" " paramétrer le temps de pose.\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995 :\n" " la configuration (les préférences) pour cet appareil\n" " est incomplète, contactez la liste de diffusion des\n" " développeurs de gPhoto si vous désirez contribuer à\n" " ce pilote ;\n" "\n" " la récupération des images devrait fonctionner\n" " correctement.\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "Tableau blanc" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "Tableau noir" #: camlibs/sierra/olympus-desc.c:489 msgid "Color or Function Mode" msgstr "Mode couleur ou fonction" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 msgid "Slow" msgstr "Lente" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "Anti yeux rouges en appoint" #: camlibs/sierra/olympus-desc.c:596 msgid "Fluorescent-1-home-6700K" msgstr "Tube fluorescent nº 1 (maison, température de couleur 6700 K)" #: camlibs/sierra/olympus-desc.c:597 msgid "Fluorescent-2-desk-5000K" msgstr "Tube fluorescent nº 2 (bureau, température de couleur 5000 K)" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "Tube fluorescent nº 3 (travail, température de couleur 4200 K)" # NOTE: s/ou/uo/ #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "Tubes fluorescent nº 1 (maison, température de couleur 6700 K)" # NOTE: s/ou/uo/ #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "Tubes fluorescent nº 2 (bureau, température de couleur 5000 K)" # NOTE: s/ou/uo/ #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "Tubes fluorescent nº 3 (travail, température de couleur 4200 K)" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "Crépuscule" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Moniteur" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "Mode LCD" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "ESP" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Zoom numérique" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "Position de mise au point" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Format de l'heure" #: camlibs/sierra/olympus-desc.c:1147 msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Quelques notes à propos des appareils photographiques Olympus :\n" "(1) configuration de l'appareil :\n" " une valeur équivaut à la valeur par défaut (automatique) ;\n" "(2) l'Olympus C-3040Z (et éventuellement le C-2040Z, voire\n" " d'autres) ont un mode de contrôle USB par le PC. Afin\n" " d'utiliser ce mode, l'appareil doit être mis en mode « USB\n" " PC control ». Pour obtenir le menu de changement de mode,\n" " allumez l'appareil, ouvrez la trappe d'accès à la carte\n" " mémoire et appuyez sur les boutons LCD et menu en les\n" " maintenant jusqu'à ce que le menu de contrôle de l'appareil\n" " apparaisse. Placez-le sur ON ;\n" "(3) si vous passez du mode « LCD » à « Moniteur » ou « Normal »,\n" " n'oubliez pas de le remettre sur « Off » avant la déconnexion.\n" " Sinon vous ne pourriez plus utiliser les boutons de l'appareil.\n" " Si vous êtes bloqué dans cet état, vous devrez reconnecter\n" " l'appareil au PC et repasser LCD sur « Off »." #: camlibs/sierra/olympus-desc.c:1166 msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus 750 Ultra Zoom :\n" "(1) L'Olympus 750UZ a un mode de contrôle USB par le PC. Afin\n" " d'utiliser ce mode, l'appareil doit être mis en mode « USB\n" " PC control ». Pour obtenir le menu de changement de mode,\n" " allumez l'appareil, ouvrez la trappe d'accès à la carte\n" " mémoire et appuyez sur les boutons « OK » et « quickview »\n" " en les maintenant jusqu'à ce que le menu de contrôle de\n" " l'appareil apparaisse. Placez-le en mode de contrôle ;\n" "(2) si vous passez du mode « LCD » à « Moniteur » ou « Normal »,\n" " n'oubliez pas de le remettre sur « Off » avant la déconnexion.\n" " Sinon vous ne pourriez plus utiliser les boutons de l'appareil.\n" " Si vous êtes bloqué dans cet état, vous devrez reconnecter\n" " l'appareil au PC et repasser LCD sur « Off »." #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Pilote sierra par défaut :\n" "\n" " c'est le pilote sierra par défaut, il\n" " devrait permettre la récupération et\n" " la lecture des images de l'appareil ;\n" "\n" " les réglages de configuration de l'appareil (ou\n" " préférences) sont basés sur l'Olympus 3040, et\n" " sont sûrement incomplets. Si vous constatez que\n" " les paramètres de configuration sont complets pour\n" " votre appareil, ou si pouvez fournir du code pour\n" " permettre une configuration complète, veuillez\n" " contacter la liste de diffusion des développeurs.\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "Le fichier à envoyer est de longueur nulle" #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "Pas assez de mémoire disponible sur la carte mémoire" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Impossible d'obtenir le nom du répertoire contenant les images" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "Le téléchargement est géré uniquement dans le répertoire « %s »" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Meilleure" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (inconnu)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "Temps de pose (en microseconde, 0 pour auto)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "Noir/Blanc" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "Tableau blanc" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Tableau noir" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "Lumière/Contraste" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "Lumière+" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "Lumière-" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Lumière naturelle" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "Infini/Fisheye" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "Mode de mesure de point" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1x" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1.6x" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2.5x" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "Arrêt automatique (serveur) (en seconde)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "Combien de temps sera nécessaire à l'extinction de l'appareil connecté à " "l'ordinateur ?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "Arrêt automatique (test) (en seconde)" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "Combien de temps sera nécessaire à l'extinction de l'appareil non connecté à " "l'ordinateur ?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "Arrêt automatique de l'écran LCD (en seconde)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Réglage de la prise de vue" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2.3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2.8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5.6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 msgid "standard" msgstr "standard" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "HyPict" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "couleur" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "noir et blanc" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" "Note : absence de carte mémoire, quelques valeurs peuvent être incorrectes\n" #: camlibs/sierra/sierra.c:1948 #, c-format msgid "Camera Model: %s\n" msgstr "Modèle de l'appareil : %s\n" #: camlibs/sierra/sierra.c:1957 #, c-format msgid "Serial Number: %s\n" msgstr "Numéro de série : %s\n" #: camlibs/sierra/sierra.c:1960 #, c-format msgid "Software Rev.: %s\n" msgstr "Révision du logiciel : %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, c-format msgid "Frames Taken: %i\n" msgstr "Images prises : %i\n" #: camlibs/sierra/sierra.c:1971 #, c-format msgid "Frames Left: %i\n" msgstr "Images restantes : %i\n" #: camlibs/sierra/sierra.c:1973 #, c-format msgid "Battery Life: %i\n" msgstr "Durée de vie de la batterie : %i\n" #: camlibs/sierra/sierra.c:1975 #, c-format msgid "Memory Left: %i bytes\n" msgstr "Mémoire restante : %i octets\n" #: camlibs/sierra/sierra.c:1980 #, c-format msgid "Date: %s" msgstr "Date : %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "Manuel de l'appareil non disponible.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "Quelques notes à propos des appareils Epson :\n" "- certains paramètres ne sont pas configurables à distance :\n" " * le zoom ;\n" " * la mise au point ;\n" " * la configuration personnalisée de la balance des blancs ;\n" "- la configuration a été rétroconçue avec un appareil\n" " PhotoPC 3000z, au cas où le vôtre se comporterait différemment,\n" " veuillez contacter %s par courrier électronique (en anglais)\n" #: camlibs/sierra/sierra.c:2060 msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "Quelques notes à propos des appareils photographiques Olympus\n" "(et peut-être d'autres) :\n" "(1) configuration de l'appareil :\n" " une valeur équivaut à la valeur par défaut (automatique) ;\n" "(2) l'Olympus C-3040Z (et éventuellement le C-2040Z, voire\n" " d'autres) ont un mode de contrôle USB par le PC. Afin\n" " d'utiliser ce mode, l'appareil doit être mis en mode « USB\n" " PC control ». Pour obtenir le menu de changement de mode,\n" " allumez l'appareil, ouvrez la trappe d'accès à la carte\n" " mémoire et appuyez sur les boutons LCD et menu en les\n" " maintenant jusqu'à ce que le menu de contrôle de l'appareil\n" " apparaisse. Placez-le sur ON ;\n" "(3) si vous passez du mode « LCD » à « Moniteur » ou « Normal »,\n" " n'oubliez pas de le remettre sur « Off » avant la déconnexion.\n" " Sinon vous ne pourriez plus utiliser les boutons de l'appareil.\n" " Si vous êtes bloqué dans cet état, vous devrez reconnecter\n" " l'appareil au PC et repasser LCD sur « Off »." #: camlibs/sierra/sierra.c:2087 msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "Bibliothèque sierra SPARClite\n" "Scott Fritzinger \n" "Prise en charge des appareils numériques basés\n" "sur les composants sierra dont les Olympus,\n" "Nikon, Epson, et Pentax.\n" "\n" "Merci à Data Engines (www.dataengines.com) pour\n" "l'utilisation de leur implémentation de la\n" "prise en charge de l'USB pour Olympus C-3030Z." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (inconnu)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "Pilote Sipix StyleCam Blink\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Impossible d'appliquer les réglages USB" #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "SiPix Web2\n" "Marcus Meissner \n" "Pilote de contrôle de l'appareil SiPix Web2." #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket\n" "Lee Benfield \n" "Pilote de contrôle des appareils Smal Ultrapocket, et versions OEM (slimshot)" #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Appareil Sonix.\n" "%i image y est contenue.\n" msgstr[1] "" "Appareil Sonix.\n" "%i images y sont contenues.\n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" "Ce pilote permet d'utiliser certains appareils dotés d'une puce Sonix\n" "sn9c2028. Il gère les options suivante :\n" " - les vignettes pour une interface graphique ;\n" " - les images au format PPM ;\n" " - la suppression de toutes les images ;\n" " - la suppression de la dernière image (les appareils Sonix ne\n" " permettent pas tous de le faire) ;\n" " - l'acquisition d'images par l'appareil (de même).\n" "S'il y en a sur l'appareil, les extraits vidéos sont téléchargés\n" "comme images consécutives ou fichier AVI suivant le modèle.\n" "Les vignettes des vidéos AVI sont prise de la première image.\n" "Une seule image ne peut pas être supprimé sauf si c'est la dernière.\n" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "Bibliothèque pour les appareils Sonix\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "Prise en charge des appareils numériques Sony DSC-F1\n" "M. Adam Kendall \n" "Basé sur l'interface ligne de commande chotplay\n" "de Ken-ichi Hayashi\n" "Adaptation à gPhoto2 réalisée par Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "Bibliothèque gPhoto pour Sony DSC-F55/505\n" "Prise en charge du Sony MSAC-SR1 et du Memory Stick utilisé par le DCR-" "PC100\n" "Version initiale écrite par Mark Davies \n" "Adaptation à gPhoto2 réalisée par Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "Révision de microcode : %8s\n" "Images : %i\n" "Mémoire totale : %i ko\n" "Mémoire libre : %i ko\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "Révision du microcode : %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "Pilote Soundvision\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "FLASH :\n" " Fichiers : %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "SDRAM :\n" " Fichiers : %d\n" " Images : %4d\n" " Films : %4d\n" "Espace utilisé : %8d\n" "Espace libre : %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "Bibliothèque spca50x v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" "L'appareil USB a une puce S&Q\n" "Le nombre total d'images prises est %i\n" "Certaines d'entre elles pourraient être des\n" "extraits vidéo contenant plusieurs images\n" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" "Pour les appareils basés sur les puces S&Q Technologies.\n" "Ils devraient normalement fonctionner avec gtkam. Les photographies\n" "seront enregistrées au format PPM.\n" "\n" "Tous les appareils S&Q connus ont deux types de réglages de\n" "résolution. Ces résolutions dépendront de l'appareil utilisé.\n" "Quelques un permettent de supprimer toutes les images. La plupart ne\n" "le permettent pas. L'envoi de données à l'appareil n'est pas possible.\n" "Le mode de compression d'images trouvé dans la plupart des appareils\n" "S&Q est pris en charge, à un certain degré.\n" "S'il y en a sur l'appareil, les extraits vidéos sont vus comme des\n" "sous-dossiers. Gtkam les téléchargera séparément. Quand des extraits\n" "vidéo sont présents sur l'appareil, un petit triangle est présent\n" "avant le nom de l'appareil. Si aucun dossier n'est affiché, cliquez\n" "sur le petit triangle pour le faire apparaître. Cliquer sur le dossier\n" "pour le parcourir et y voir les images ou les télécharger. Les images\n" "seront téléchargées séparément, avec des noms spécifiques à l'extrait\n" "vidéo d'où elles proviennent. Ainsi, vous pourriez librement choisir\n" "de sauvegarder les extraits vidéo dans des répertoires séparés ou non.\n" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "Pilote générique sq905\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "Le cadre numérique USB a une puce ST2205\n" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "Les cadres numériques basés sur ST2205 existent avec de nombreuses\n" "résolutions. Le pilote gPhoto pour ces périphériques permet\n" "d'envoyer, recevoir et effacer des images du cadre numérique." #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "Pilote de cadre numérique USB ST2205\n" "Hans de Goede \n" "Ce pilote permet d'envoyer, recevoir et effacer des images du\n" "cadre numérique." #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "Orientation" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "Pilote pour les appareils utilisant le processeur ASIC STV0674.\n" "Protocole rétroconçu en utilisant SnoopyPro\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "Mauvaise exposition (probablement manque de lumière)" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "Informations pour les appareils basés sur le STV0680 :\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Révision du microcode : %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "Révision de l'ASIC : %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "Identifiant du capteur : %d.%d\n" #: camlibs/stv0680/library.c:562 #, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "L'appareil est configuré pour une lumière scintillante à %d Hz.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Mémoire dans l'appareil : %d Mbit.\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "L'appareil gère les vignettes.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "L'appareil gère la vidéo.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "Les images de l'appareil sont monochromes.\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "L'appareil a de la mémoire.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "L'appareil permet d'utiliser les formats vidéo : " #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "Identifiant du fabricant : %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "Identifiant de produit : %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "Nombre d'images : %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "Nombre maximal d'images : %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Largeur d'image : %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "Hauteur d'image : %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "Taille de l'image : %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Largeur de la vignette : %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Hauteur de la vignette : %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "Taille de la vignette : %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "Pilote pour les appareils utilisant le processeur ASIC STV0680.\n" "Protocole rétroconçu en utilisant CommLite Beta 5\n" "Carsten Weinholz \n" "Étendu les appareils Aiptek PenCam et autres appareils en mode double USB " "STM." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Obtention d'informations sur %i fichiers…" #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "Bibliothèque SX330z (Traveler) (et autres appareils Aldi).\n" "D'autres appareils comme les Jenoptik, Skanhex, Maginon devraient " "fonctionner.\n" "Veuillez envoyer les rapports de bogue et commentaires à :\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z ne gère que l'USB" #: camlibs/topfield/puppy.c:553 msgid "Driver Settings" msgstr "Réglages du pilote" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "Mode turbo" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Bibliothèque pour télécharger et envoyer des fichiers de Topfield PVR.\n" "Porté depuis puppy © Peter Urbanec \n" #: camlibs/topfield/puppy.c:659 #, c-format msgid "Downloading %s..." msgstr "Téléchargement de %s…" #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "Pilote Toshiba pdr-m11.\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" "Erreur interne lors de la rechercher de camlibs (noms de chemin d'accès peut-" "être trop long)." #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Chargement des pilotes depuis « %s »…" #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "" "Une erreur est survenue dans la bibliothèque d'entrée sortie (« %s ») : %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Aucun appareil n'a pu être détecté" #: libgphoto2/gphoto2-camera.c:750 #, c-format msgid "Could not detect any camera at port %s" msgstr "Aucun appareil n'a pu être détecté sur le port %s" #: libgphoto2/gphoto2-camera.c:774 msgid "You have to set the port prior to initialization of the camera." msgstr "Vous devez indiquer un port avant d'initialiser l'appareil." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Impossible de charger le pilote d'appareil « %s » nécessaire (%s)." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "La fonction « camera_init » manque au pilote d'appareil « %s »." #: libgphoto2/gphoto2-camera.c:864 msgid "This camera does not provide any configuration options." msgstr "Cet appareil ne fournit pas d'option de configuration." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "Cet appareil n'est pas configurable." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Cet appareil ne permet pas d'utiliser de résumé." #: libgphoto2/gphoto2-camera.c:960 msgid "This camera does not provide a manual." msgstr "Cet appareil ne fournit pas de manuel." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "Cet appareil ne fournit aucun renseignement sur le pilote." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Cet appareil ne permet pas l'acquisition." #: libgphoto2/gphoto2-camera.c:1056 msgid "This camera can not trigger capture." msgstr "Cet appareil ne permet pas de déclencher l'acquisition." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Cet appareil ne permet pas l'acquisition de prévisualisations." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "Le chemin d'accès « %s » n'est pas absolu." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "Vous avez essayé d'effacer « %s » du répertoire « %s », mais le système de " "fichiers ne permet pas l'effacement de fichiers." #: libgphoto2/gphoto2-filesys.c:1259 #, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "" "Des sous-répertoires sont toujours présents dans le répertoire « %s/%s » que " "vous essayez d'effacer." #: libgphoto2/gphoto2-filesys.c:1264 #, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "" "Des fichier sont toujours présents dans le répertoire « %s/%s » que vous " "essayez d'effacer." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Ce système de fichiers ne permet pas l'envoi de fichiers." #: libgphoto2/gphoto2-filesys.c:1359 #, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "Le répertoire « %s » ne contient que %i fichiers, mais un fichier numéro %i " "a été demandé." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Le fichier « %s » n'a pas été trouvé dans le répertoire « %s »." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Impossible de trouver le fichier « %s »." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "Ce système de fichiers ne permet pas de récupérer des fichiers" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Type de fichier %i inconnu." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "" "Ce système de fichiers ne permet pas la récupération d'informations sur les " "fichiers" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "" "Ce système de fichiers ne permet pas de modifier les informations sur les " "fichiers" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "" "Les attributs en lecture seule (comme la hauteur et la largeur) ne peuvent " "être modifiés." #: libgphoto2/gphoto2-filesys.c:2455 msgid "The filesystem doesn't support getting storage information" msgstr "" "Ce système de fichiers ne permet pas de récupérer d'informations sur le type " "de stockage" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Données corrompues" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Le fichier existe" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Modèle inconnu" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Répertoire non trouvé" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Fichier non trouvé" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "Le répertoire existe" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "E/S en cours" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "Le chemin d'accès n'est pas absolu" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Opération annulée" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "Impossible de finir l'opération avec l'appareil" #: libgphoto2/gphoto2-result.c:57 msgid "OS error in camera communication" msgstr "Erreur de communication entre l'appareil et le système d'exploitation" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "Pas assez d'espace" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Erreur inconnue dans la bibliothèque de l'appareil" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Erreur inconnue" #~ msgid "Small Fine JPEG (S1 Fine)" #~ msgstr "Petit JPEG fin (S1 fin)" # Taille/qualité #~ msgid "Small Normal JPEG (S1 Normal)" #~ msgstr "Petit JPEG normal (S1 normal)" #~ msgid "RAW + Small Fine JPEG (S1 Fine)" #~ msgstr "Brut et petit JPEG fin (S1 fin)" #~ msgid "mRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "mRAW et petit JPEG fin (S1 fin)" #~ msgid "sRAW + Small Fine JPEG (S1 Fine)" #~ msgstr "sRAW et petit JPEG fin (S1 fin)" #~ msgid "RAW + Small Normal JPEG (S1 Normal)" #~ msgstr "Brut et petit JPEG normal (S1 normal)" #~ msgid "mRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "mRAW et petit JPEG normal (S1 normal)" #~ msgid "sRAW + Small Normal JPEG (S1 Normal)" #~ msgstr "sRAW et petit JPEG normal (S1 normal)" #~ msgid "Unknown (%04x)" #~ msgstr "Inconnu (%04x)" #~ msgid "Disabled" #~ msgstr "Désactivé" #~ msgid "Canon EOS Trigger Capture failed to release: Perhaps no focus?" #~ msgstr "" #~ "Échec du déclenchement de Capture EOS Canon : possible problème de mise " #~ "au point." #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Perhaps no more memory on " #~ "card?" #~ msgstr "" #~ "Échec du déclenchement de Capture EOS Canon : possible manque de mémoire " #~ "sur la carte." #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Unknown error %d, please " #~ "report." #~ msgstr "" #~ "Échec du déclenchement de Capture EOS Canon : erreur %d inconnue, " #~ "veuillez le signaler." #~ msgid "Deleting '%s' from folder '%s'..." #~ msgstr "Suppression de « %s » du répertoire « %s »…" #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "Téléchargement de « %s » depuis le répertoire « %s »…" #~ msgid "CHDK Reboot" #~ msgstr "Redémarrage de CHDK" #~ msgid "PTP Error: bad parameter" #~ msgstr "Erreur PTP : mauvais paramètre" #~ msgid "Canon Capture failed: 0x%04x" #~ msgstr "Échec de Canon Capture : 0x%04x" #~ msgid "No event received, error %x." #~ msgstr "Aucun événement reçu, erreur %x." #~ msgid "Canon EOS Trigger Capture failed: 0x%x (result 0x%x)" #~ msgstr "Échec du déclenchement de Capture EOS Canon : 0x%x (résultat 0x%x)" #~ msgid "PTP: Undefined Error" #~ msgstr "PTP : erreur non définie" #~ msgid "PTP: OK!" #~ msgstr "PTP : fonctionnel" #~ msgid "PTP: General Error" #~ msgstr "PTP : erreur générale" #~ msgid "PTP: Session Not Open" #~ msgstr "PTP : session non ouverte" #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP : identifiant de transaction incorrect" #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP : opération non prise en charge" #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP : paramètre non pris en charge" #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP : transfert incomplet" #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP : identifiant de stockage incorrect" #~ msgid "PTP: Invalid Object Handle" #~ msgstr "PTP : identificateur d'objet incorrect" #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "PTP : propriété de périphérique non prise en charge" #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP : code de format d'objet incorrect" #~ msgid "PTP: Store Full" #~ msgstr "PTP : espace mémoire rempli" #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP : objet protégé en écriture" #~ msgid "PTP: Store Read Only" #~ msgstr "PTP : mémoire en lecture seule" #~ msgid "PTP: Access Denied" #~ msgstr "PTP : accès refusé" #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP : pas de vignette présente" #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP : échec du test automatique" #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP : effacement partiel" #~ msgid "PTP: Store Not Available" #~ msgstr "PTP : espace non disponible" #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "PTP : spécification par format non prise en charge" #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP : pas de renseignements corrects sur l'objet" #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP : format de code incorrect" #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "PTP : code de fabricant inconnu" #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP : acquisition déjà terminée" #~ msgid "PTP: Device Busy" #~ msgstr "PTP : périphérique occupé" #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP : objet père incorrect" #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP : format de propriété de périphérique incorrect" #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP : valeur de propriété de périphérique incorrecte" #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP : paramètre incorrect" #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP : session déjà ouverte" #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP : opération annulée" #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "PTP : spécification de la destination non prise en charge" #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP : nom de fichier EK nécessaire" #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP : conflit de nom de fichier EK" #~ msgid "PTP: EK Filename Invalid" #~ msgstr "PTP : nom de fichier EK incorrect" #~ msgid "PTP: I/O error" #~ msgstr "PTP : erreur d'entrée sortie" #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP : erreur : mauvais paramètre" #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP : erreur de protocole, données attendues" #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP : erreur de protocole, réponse attendue" #~ msgid "Could not find any driver for '%s'" #~ msgstr "Impossible de trouver un pilote pour « %s »" #~ msgid "No additional information available." #~ msgstr "Pas de renseignements supplémentaires disponibles." #~ msgid "Movie Recording" #~ msgstr "Enregistrement de film" #~ msgid "Unknown (some kind of error)" #~ msgstr "Inconnu (une sorte d'erreur)" #~ msgid "ISO Auto Time" #~ msgstr "Temps ISO automatique" #~ msgid "No zoom" #~ msgstr "pas de zoom" #~ msgid "Zoom 1" #~ msgstr "Zoom 1" #~ msgid "Zoom 2" #~ msgstr "Zoom 2" #~ msgid "Zoom 3" #~ msgstr "Zoom 3" #~ msgid "Zoom 4" #~ msgstr "Zoom 4" #~ msgid "Zoom 5" #~ msgstr "Zoom 5" #~ msgid "Zoom 6" #~ msgstr "Zoom 6" #~ msgid "Zoom 7" #~ msgstr "Zoom 7" #~ msgid "Zoom 8" #~ msgstr "Zoom 8" #~ msgid "Zoom 9" #~ msgstr "Zoom 9" #~ msgid "%s is a file type for which no thumbnail is provided" #~ msgstr "%s est un type de fichier pour lequel aucune vignette n'est fournie" #~ msgid "ISO speed" #~ msgstr "Vitesse ISO" #~ msgid "Flash mode" #~ msgstr "Mode flash" #~ msgid "Date and Time (readonly)" #~ msgstr "Date et heure (lecture seule)" #~ msgid "Unavailable" #~ msgstr "Indisponible" #~ msgid "Set camera date to PC date" #~ msgstr "Mettre l'appareil à la date du PC" #~ msgid "Firmware revision (readonly)" #~ msgstr "Révision de microcode (lecture seule)" #~ msgid "Power (readonly)" #~ msgstr "Énergie (lecture seule)" #~ msgid "Exposure bias changed" #~ msgstr "La compensation de l'exposition a changé " #~ msgid "Invalid resolution setting" #~ msgstr "Paramètre de résolution invalide" #~ msgid "Resolution changed" #~ msgstr "la résolution a changé" #~ msgid "Could not change resolution" #~ msgstr "Impossible de changer la résolution" #~ msgid "Invalid zoom level" #~ msgstr "Niveau de zoom invalide" #~ msgid "" #~ "canon_usb_poll_interrupt_pipe: interrupt read failed after %i tries, " #~ "%6.3f sec \"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_pipe : échec de lecture après %i essais, " #~ "%6.3f secondes « %s »" #~ msgid "" #~ "canon_usb_poll_interrupt_multiple: interrupt read failed after %i tries, " #~ "\"%s\"" #~ msgstr "" #~ "canon_usb_poll_interrupt_multiple : lecture interrompue après %i essais, " #~ "« %s »" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for thumbnail size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue : longueur anormale 0x%04x pour le paquet de " #~ "taille de vignette" #~ msgid "" #~ "canon_usb_capture_dialogue: bogus length 0x%04x for full image size packet" #~ msgstr "" #~ "canon_usb_capture_dialogue : longueur anormale 0x%04x pour le paquet de " #~ "taille d'image complète" #~ msgid "canon_usb_capture_dialogue: secondary image descriptor received" #~ msgstr "canon_usb_capture_dialogue : descripteur d'image secondaire reçu" #~ msgid "canon_usb_capture_dialogue: first interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue : première lecture d'interruption " #~ "désynchronisée" #~ msgid "canon_usb_capture_dialogue: second interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue : deuxième lecture d'interruption " #~ "désynchronisée" #~ msgid "" #~ "canon_usb_capture_dialogue: photographic failure signaled, code = 0x%08x" #~ msgstr "" #~ "canon_usb_capture_dialogue : échec photographique signalé, code = 0x%08x" #~ msgid "canon_usb_capture_dialogue: third EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue : troisième lecture d'interruption EOS " #~ "désynchronisée" #~ msgid "" #~ "canon_usb_capture_dialogue: fourth EOS interrupt read out of sequence" #~ msgstr "" #~ "canon_usb_capture_dialogue: quatrième lecture d'interruption EOS " #~ "désynchronisée" #~ msgid "canon_usb_dialogue: payload too big, won't fit into buffer (%i > %i)" #~ msgstr "" #~ "canon_usb_dialogue : charge trop élevée, ne tiendra pas dans le tampon " #~ "(%i > %i)" #~ msgid "canon_usb_dialogue: expected 0x%x bytes, but camera reports 0x%x" #~ msgstr "" #~ "canon_usb_dialogue : 0x%x octets attendus, mais l'appareil n'en a reçu " #~ "que 0x%x" #~ msgid "Unsupported image type" #~ msgstr "Type d'image non géré" #~ msgid "" #~ "This driver supports cameras with Jeilin jl2005c chip \n" #~ "These cameras do not support deletion of photos, nor uploading\n" #~ "of data. \n" #~ "Decoding of compressed photos may or may not work well\n" #~ "and does not work equally well for all supported cameras.\n" #~ "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" #~ "If present on the camera, video clip frames are downloaded \n" #~ "as consecutive still photos.\n" #~ "For further details please consult libgphoto2/camlibs/README.jl2005c\n" #~ msgstr "" #~ "Ce pilote supporte les appareils intégrant des puces\n" #~ "Jeilin jl2005c.\n" #~ "Ces appareils ne supportent pas la suppression de photos\n" #~ " ni l'envoie de données\n" #~ "Le décodage de photo compréssée peut, dans certain cas, \n" #~ "ne pas bien marcher. Aussi, il se peut que le pilote n'arrive pas\n" #~ " du tout a les décodé.Ce processus n'est pas du tout supporté\n" #~ "pour les Argus QuickClix\n" #~ "Si il est présent sur l'appareil , les images des vidéo clip sont\n" #~ "téléchargable comme une séquence consécutive images.\n" #~ "Pour plus de détail, allez voir dans libgphoto2/camlibs/README.jl2005c\n" #~ msgid "Your camera does not support changing filenames." #~ msgstr "Cet appareil ne permet pas de changer les noms de fichiers." #~ msgid "spot" #~ msgstr "spot" #~ msgid "average" #~ msgstr "moyenne" #~ msgid "multi spot metering" #~ msgstr "Plusieurs mesure de spot" #~ msgid "large" #~ msgstr "large" #~ msgid "medium 1" #~ msgstr "Moyenne 1" #~ msgid "medium 2" #~ msgstr "Moyenne 2" #~ msgid "medium 3" #~ msgstr "Moyenne 3" #~ msgid "small" #~ msgstr "Petite" #~ msgid "Timer + Remote 2" #~ msgstr "retardateur avec télécommande 2" #~ msgid "Default" #~ msgstr "Par défault" #~ msgid "Daylight n1" #~ msgstr "Lumière naturelle" #~ msgid "Cloudy n2" #~ msgstr "Nuageux" #~ msgid "Tungsten n3" #~ msgstr "Tungstène" #~ msgid "Flash n5" #~ msgstr "Flash" #~ msgid "Camera Time" #~ msgstr "Heure de l'appareil" #~ msgid "Set camera time to PC time" #~ msgstr "Mettre l'appareil à la date et l'heure du PC" #~ msgid "Canon Image Quality" #~ msgstr "Qualité de l'image Canon" #~ msgid "EOS ISO Speed" #~ msgstr "Vitesse ISO pour les EOS" #~ msgid "EOS WhiteBalance" #~ msgstr "Balance des blancs pour les EOS" #~ msgid "Auto ISO PADV Time" #~ msgstr "Heure d'extinction automatique" #~ msgid "EOS Exposure Compensation" #~ msgstr "Correction d'exposition avec le système EOS" #~ msgid "EOS Aperture" #~ msgstr "Ouverture du diaphragme pour les EOS" #~ msgid "EOS Shutter Speed" #~ msgstr "Vitesse de l'obturateur pour les EOS" #~ msgid "Canon enable liveview failed: %x" #~ msgstr "Canon: Impossible d'activer liveview: %x" #~ msgid "Canon disable liveview failed: %x" #~ msgstr "Canon: Impossible de désactivé liveview: %x" #~ msgid "ISO Step" #~ msgstr "Palier ISO" #~ msgid "This camera does not support event handling." #~ msgstr "Cet appareil photo ne supporte pass la gestion des événements" #~ msgid "" #~ "Could not append '%s' to folder '%s' because this file already exists." #~ msgstr "" #~ "Impossible d'ajouter des données '%s' au dossier '%s' car il existe déjà." #, fuzzy #~ msgid "" #~ "canon_usb_init: Unexpected return of %i bytes (expected %i) from \"get " #~ "picture abilities.\"" #~ msgstr "" #~ "canon_usb_lock_keys: retour inattendu de %i octets (attendus %i) de \"get " #~ "picture abilities.\"" #, fuzzy #~ msgid "" #~ "canon_usb_lock_keys: Unexpected return of %i bytes (expected %i) from " #~ "\"get picture abilities.\" We will continue." #~ msgstr "" #~ "canon_usb_lock_keys: retour inattendu de %i octets (attendus %i) de \"get " #~ "picture abilities.\"" #, fuzzy #~ msgid "" #~ "Download program for Casio QV cameras. Originally written for gphoto-0.4. " #~ "Adapted for gphoto2 by Lutz Mueller ." #~ msgstr "" #~ "Téléchargé le programme des appareils photos Polaroïd DC700. " #~ "Originellement écrit par Ryan Lantzer pour GPhoto 4.X. " #~ "Adapté pour GPhoto2 by Lutz Müeller ." #~ msgid "Could not follow the link '%s' (%m)." #~ msgstr "Impossible de suivre le lien '%s' (%m)." #~ msgid "Could not follow the link '%s' in '%s' (%m)." #~ msgstr "Impossible de suivre le lien '%s' in '%s' (%m)." # Browser == Stöberer? [CM] #~ msgid "Directory Browse" #~ msgstr "Navigation dans le répertoire" #~ msgid "View hidden directories" #~ msgstr "Voir les répertoires cachés" #, fuzzy #~ msgid "Unsupported port type: %d. This driver only works with USBcameras.\n" #~ msgstr "" #~ "Type de port non géré : %d. Ce pilote ne marche qu'avec des appareils " #~ "USB.\n" #~ msgid " " #~ msgstr " " #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for KBGear JamCam v2.0 & v3.0 digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support pour les appareils numériques KBGear JamCam v2.0 & v3.0\n" #~ "basé sur une rétro-conception du protocole série.\n" #~ "\n" #~ msgid "Self Timer (only next picture)" #~ msgstr "Retardateur (image suivante uniquement)" #~ msgid "Day-lt" #~ msgstr "Lumière naturelle" #~ msgid "There is nothing to summarize for this camera." #~ msgstr "Il n'y a rien à résumer pour cet appareil." #~ msgid "No manual" #~ msgstr "Pas de manuel" #~ msgid "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support for Panasonic Coolshot digital cameras\n" #~ "based on reverse engineering serial protocol.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Chris Pinkham \n" #~ "Support pour les appareils numériques Panasonic Coolshot\n" #~ "basé sur une rétro-conception du protocole série.\n" #~ "\n" #~ msgid "Manual Not Implemented Yet" #~ msgstr "Le manuel n'est pas encore implémenté." #~ msgid "" #~ "PTP2 driver\n" #~ "(c)2001-2003 by Mariusz Woloszyn .\n" #~ "Enjoy!" #~ msgstr "" #~ "Pilote PTP2\n" #~ "(c) 2001-2003 par Mariusz Woloszyn .\n" #~ "Bonne chance !" #~ msgid "" #~ "Model: %s\n" #~ " device version: %s\n" #~ " serial number: %s\n" #~ "Vendor extension ID: 0x%08x\n" #~ "Vendor extension description: %s\n" #~ msgstr "" #~ "Modèle : %s\n" #~ " Version du périphérique : %s\n" #~ " Numéro de série : %s\n" #~ "ID étendue du vendeur : 0x%08x\n" #~ "Description étendue du vendeur : %s\n" #, fuzzy #~ msgid "auto red eye" #~ msgstr "Anti yeux rouges" #, fuzzy #~ msgid "on red eye" #~ msgstr "Anti yeux rouges" #, fuzzy #~ msgid "Macro Mode" #~ msgstr "Enregistrement" #~ msgid "Number of values" #~ msgstr "Nombre de valeurs" #~ msgid "Current value" #~ msgstr "Valeur actuelle" #, fuzzy #~ msgid "Date Time" #~ msgstr "Date & heure" #, fuzzy #~ msgid "ShutterSpeed" #~ msgstr "Vitesse de l'obturateur (en secondes)" #, fuzzy #~ msgid "Real Image Width" #~ msgstr "Largeur d'image : %d\n" #, fuzzy #~ msgid "Colour Mode" #~ msgstr "Mode couleur" #, fuzzy #~ msgid "Exposure Bracketing Distance" #~ msgstr "Mesure de l'exposition" #, fuzzy #~ msgid "Incadescent" #~ msgstr "Incandescent" #~ msgid "%sCamera ID: %s\n" #~ msgstr "%sIdentifiant appareil: %s\n" #, fuzzy #~ msgid "Couldn't open camera.\n" #~ msgstr "Impossible de remettre l'appareil à zéro.\n" #, fuzzy #~ msgid "Error opening camera\n" #~ msgstr "Problème à la remise à zéro de l'appareil" #, fuzzy #~ msgid "" #~ "Sony DSC-F1 Digital Camera Support\n" #~ "M. Adam Kendall \n" #~ "\n" #~ "Based on the chotplay CLI interface from\n" #~ "Ken-ichi Hayashi\n" #~ "\n" #~ "This lib may not work. YMMV\n" #~ msgstr "" #~ "Support des appareils numériques Sony DSC-F1\n" #~ "M. Adam Kendall \n" #~ "Basé sur l'interface ligne de commande chotplay\n" #~ "de Ken-ichi Hayashi\n" #~ "Portage gPhoto2 par Bart van Leeuwen " #~ msgid "" #~ "\n" #~ "Till Adam \n" #~ "Support for digital cameras with a sunplus spca50x chip based on several " #~ "other gphoto2 camlib modules and the information kindly provided by " #~ "Mustek.\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "Till Adam \n" #~ "Support pour les appareils photos avec la puce sunplus spca50x basé sur " #~ "divers autres modules d'appareils gphoto2 et les informations gentiment " #~ "fournies par Mustek.\n" #~ "\n" #~ msgid "Could not open '%s'" #~ msgstr "Impossible d'ouvrir '%s'" #~ msgid "Could not load required camera driver '%s'." #~ msgstr "Impossible de trouver un pilote pour '%s'." #~ msgid "Could not append folder '%s' as this folder already exists." #~ msgstr "Impossible d'ajouter le dossier '%s' car il existe déjà." #~ msgid "Could not find folder '%s'." #~ msgstr "Impossible de trouver le dossier '%s'." #~ msgid "Folder '%s' does not contain a folder '%s'." #~ msgstr "Le dossier '%s' ne contient pas de sous-dossier '%s'." #~ msgid "" #~ "Could not open '/proc/meminfo' for reading ('%m'). Make sure the proc " #~ "filesystem is mounted." #~ msgstr "" #~ "Ne peut ouvrir '/proc/meminfo' en lecture ('%m'). Vérifiez que le système " #~ "de fichier proc est monté." #~ msgid "An error occured while reading '/proc/meminfo' ('%m')." #~ msgstr "" #~ "Une erreur est arrivée lors de la lecture de '/proc/meminfo' ('%m')." #~ msgid "sysctl call failed ('%m')." #~ msgstr "Erreur lors de l'appel à sysctl() ('%m')." #~ msgid "sysconf call failed ('%m')." #~ msgstr "Erreur lors de l'appel à sysconf ('%m')." #~ msgid "swapctl call failed ('%m')." #~ msgstr "Erreur lors de l'appel à swapctl ('%m')." #~ msgid "" #~ "Step #2 of initialization failed for PowerShot camera! (returned %i, " #~ "expected %i) Camera not operational" #~ msgstr "" #~ "Passage n°2 de l'initialisation en erreur pour l'appareil PowerShot ! " #~ "(retourné %i, attendu %i). Appareil non opérationnel" #~ msgid "" #~ "EOS Step #3 of initialization failed! (returned %i, expected %i) Camera " #~ "not operational" #~ msgstr "" #~ "Passage n°3 de l'initialisation de l'EOS en erreur ! (retourne %i, " #~ "attendu %i). Appareil non opérationnel." #~ msgid "" #~ "For the A50, using 115200 may effectively be slower than using 57600\n" #~ "If you experience a lot of serial transmission errors, try to have your " #~ "computer as idle as possible\n" #~ " (i.e. no disk activity)\n" #~ msgstr "" #~ "Pour le modèle A50, l'utilisation du 115200 ne sera pas plus rapide que " #~ "57600\n" #~ "Si vous rencontrez beaucoup d'erreurs de transmission, essayez d'avoir " #~ "votre ordinateur aussi calme que possible (c-à-d sans activité disque)\n" #~ msgid "Unsupported port type: %d.This driver only works with USBcameras.\n" #~ msgstr "" #~ "Type de port non géré : %d. Ce pilote ne marche qu'avec des appareils " #~ "USB.\n" #, fuzzy #~ msgid "Incadesent" #~ msgstr "Incandescent" #, fuzzy #~ msgid "Could not find any driver for '%s' / '%s'" #~ msgstr "Impossible de trouver un pilote pour '%s'" #~ msgid "" #~ "Step #2 of initialization failed for EOS camera! (returned %i, expected " #~ "%i) Camera not operational" #~ msgstr "" #~ "Passage n°2 de l'initialisation en erreur pour l'appareil EOS ! (retourné " #~ "%i, attendu %i) Appareil non opérationnel." #, fuzzy #~ msgid "Camera settings" #~ msgstr "Réglages de l'appareil" #~ msgid "On 1" #~ msgstr "Activé 1" #~ msgid "On 2" #~ msgstr "Activé 2" #~ msgid "Canon Image Size" #~ msgstr "Taille de l'image Canon" libgphoto2-2.5.9/po/remove-potcdate.sin0000644000175000001440000000066012557123417014755 00000000000000# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } libgphoto2-2.5.9/po/hu.gmo0000644000175000001440000014551712623156274012300 00000000000000Þ•D<\$p0hq04Ú01 '1;41p11›1 1¥1ª1¯1³1·1»1¿1 Ä1 Ï1Ú1Ý1á1æ1ì1ï1õ1ø1þ122 2 222 2#2 &212 G2.R22Š22­2 Ê2Ø2ñ233 -383K3+S313'±3(Ù34  4.5A5oS5Ã5#â56 6 6 6 *666;6C6K6_6r6w6~6O“6ã6ó67@'7 h7‰71¥7×7ô7# 8-8J8b88)”8$¾8>ã8"9*9H9W9p9†9 —9¤9½9Ñ9í9 ::#:,:;: B:M:\:z::¥:»:Ñ:î: ; ;";=; Q; [; e;o;Ž;:;<Ø;<2<!L<'n<–<²<(Ì<õ<= -=;N=0Š=»=Ð=5é=5>U>p>> ”>  > ¬>º>ÿÎ>Î?Ý?ã?ö?.@ 6@ C@EP@–@§@»@Ñ@è@ø@ A A4AJA_AxA‡A ŽA˜A¯AÌAãAûAB1BPBVB^BdBzBB(¥BÎB'âB1 C‘ˆЈ!‰(‰8‰H‰^‰|Š ‹Š™Š±Š.ÄŠóŠ ‹O‹o‹Š‹#§‹Ë‹æ‹ö‹ Œ Œ5ŒOŒ!cŒ …Œ “Œ Œ!ªŒÌŒêŒ7Pmsy~+–,Â8ï#(Ž0LŽ7}Ž µŽÁŽÜŽïŽ  "6(_rˆ ¯ ¿hË4:"U x„ ‰”ªÀ,Òÿ‘#‘5‘J‘S‘b‘j‘~‘‘‘¦‘ ¶‘5Ñ#ù‘’%’ *’6’=’\’t’’’*§’!Ò’ô’ú’““4)“1^”U”Ræ”)9•c• j• v• „••¬• ±•¿• Е Þ•é•– –+–?–\– u––Ž–  –­–¾– Ï–Ý– û–—¡ —¯—´—&»— â—D4šëÁšf­›œy*œ¤œ«œ ¯œ$Мõœ +*Vo$®'Ó+û'ž-ž#Až)ež*žºž*ΞùžŸŸ6ŸZ=Ÿ ˜Ÿ£ŸßÌŸâŸ%üŸ"  B …M IÓ ¡>%¡„d¡é¡û¡ ¢"¢Š2¢½£&Á£ è£ö£ ¤1¤G¤"_¤‚¤ˆ¤›¤£¤ ¬¤/·¤ ç¤Iõ¤?¥T¥h¥0}¥®¥±¥´¥·¥º¥$½¥bâ¥E¦V¦o¦v¦Œ¦ž¦ ³¦½¦ݦ á¦#§'&§N§e§€§/ §-Ч(þ§%'¨M¨#l¨%¨,¶¨&ã¨& ©1©9©Y© x©™©³©)Ó©%ý©.#ª,Rªª—ª ¶ª!תùª«³/«\ã« @¬ N¬ \¬j¬ˆ¬¢¬µ¬ ¼¬Ȭ!á¬(­+,­$X­7}­-µ­:ã­2®Q®o®X‚®Û®,á® ¯/¯K¯ _¯i¯y¯¯’¯±¯¹¯%;° a°l°€°š–°S1±…²/—²Dzá²õ²³(³"E³/h³˜³¸³0ʳ2û³_.´mŽ´ü´µµØ3µù ¶·6 ·9B·|·*„·X¯·¸(¸ 1¸>¸ ^¸h¸ ¸¸)£¸P͸¹å2º»I6¼$€¼-¥¼,Ó¼1½J2½%}½C£½6ç½A¾4`¾A•¾-×¾&¿7,¿–d¿)û¿&%À@LÀ?À+ÍÀùÀ# 9Â%Z €Â&ŽÂ:µÂmðÂ"^ÃÃ4ŠÃ¿ÃÏÃàÃüÃÄ(Ä?ÄXXÄV±Ä3Å<ÅRÅiÅ,xÅ¥ÅÄÅÍÅ+ëÅÆ&Æ-Æ >Æ JÆ VÆ:dÆŸÆ®Æ³Æ 3Ç>Ç NÇ ZÇ fÇ sÇHÇÊÇÒÇ1ïÇ#!ÈEÈMÈ®SÈÊÊ)Ê0ÊKÊ^ÊdÊ€ÊˆÊœÊŸÊ¢Ê ³Ê¿ÊØÊõÊ ûÊ ËË'Ë;Ë'&9¬úJVÈ)Åè ˜£R¡C•ب¿î %$Ë@-C›3Ñ(–סªpéQˆ’ƒ×·(EäÌ£Õc8t-A–õ2‘[fo¸huOÕqÍ ûnwð²I²Ì6µ/º/S)¨“lN7VËO9;ntubp øåz÷MÏ“:—?Hã#!¤7µ"ÓD ã•! !Á_«Þ‘,vê"~€&.BXBÐ#yeq»{œ.d:$_ý$Z1΀âå»?Q ÿî®›´¾™‰%^4Âs<üÏj@r¦xœòÝ/Œ%¼¶=Ñ`ÄEë ~êz†,=çX'g[§+(Ÿ5@Û w¹æÊUÇ7ò­ öÆÞÉ0I'Š|}ô T¶6Zíoû*ॴBøÅk3ôØ’âc Ê5öþþ^ù„FÁ‚Üý„ÎÖ­+³ÙÒ—AsH<>Š÷¸,³R.5ì&0ÂÀÔ6ÿͱŸÃ +rˆ}ažÉ˜>N¤J üáÆA`«†ž2<ši*8L0Úh¯ió3‹ŒGƒämú¬Sa\ ®ð?ÄÓ‡Y]x§…C8=Àé#ù©We”±|>gÝÐYD¹ï2¢‰…TŽšÛçb¢Ù™Ž91Ô:Pð-ñ y {õÇáK‡픂 à֯Ȫ;"½ ¦MóWìïFGÚK*P)mæ]LÒ·Üßß1¿D;jñdU¾v4°¼ë½ºf‹4©èl¥ \k Camera identification: Model: %s Owner: %s Power status: %s Flash disk information: %s Time: %s Drive %s %11s bytes total %11s bytes available (battery is %d%% full)%i (unknown)%i pictures could not be deleted because they are protected%lld (unknown)%s (host time %s%i seconds)-0.5-1.0-1.5-2.00.00.51.01.51.6x1152 x 8641280 x 9601x2.02.5x29 mm2x34 mm3x41 mm4x51 mm58 mm5x640 x 4806x7x8x9xAC adapterASIC Revision: %d.%d Album nameAn error occurred in the io-library ('%s'): %sApertureAutoAuto Off (field) (in seconds)Auto Off (host) (in seconds)Auto Off TimeAuto Power Off (minutes)Auto exposure lockAuto, red-eye reductionAutofocus error.Automatic Available memory: Bad EOTBad checksum - got 0x%02x, expected 0x%02x.Bad data - got 0x%02x, expected 0x%02x or 0x%02x.Bad data - got 0x%02x, expected 0x%02x.Bad exposure (not enough light probably)Bad value for lens status %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev Reverse engineering of image data by: Jeff Laing Implemented using documents found on the web. Permission given by Vision.Batteries are low.Batteries are ok.Battery Level: %s Number of Images: %d Minimum Capacity Left: %d Busy: %s Flash Charging: %s Lens Status: Battery exhausted, camera off.Battery status: %s, AC Adapter: %s BeepBestBlack & WhiteBlack BoardBlack/WhiteBlueBright+Bright-Brightness/ContrastBulb Exposure TimeBusyCameraCamera ConfigurationCamera Library for the Kodak DC215 Zoom camera. Michael Koltan Camera SettingsCamera and Driver ConfigurationCamera has memory. Camera not ready, multiple 'Identify camera' requests failed: %sCamera pictures are monochrome. Camera power save (seconds)Camera refused 3 times to keep a connection open.Camera rejected the command.Camera reset itself.Camera sent unexpected byte 0x%02x.Camera supports Thumbnails. Camera supports Video. Camera supports videoformats: Camera unavailableCannot retrieve the available memory leftCannot retrieve the battery capacityCannot retrieve the name of the folder containing the picturesCaptureCapture type is not supportedCard Status: Card can not be written.Card is not formattedCard is not openCard is openCard is write protected.Card not supported.Card removed during access.Changing speed... wait...CharacterCharacter & SoundChargingChecksum errorCloudyColor ModeColor SettingsCommand can not be cancelled.Command order error.Communication error 1Communication error 2Communication error 3Compact Flash Card detected CompactFlash CardCompressionConfigurationConfiguration for your FUJI cameraConnected to cameraContrast+Contrast-CopyrightCopyright (max. 20 characters)Corrupted dataCould not allocate %i byte(s) for downloading the picture.Could not allocate %i byte(s) for downloading the thumbnail.Could not apply USB settingsCould not contact camera.Could not create \DCIM directory.Could not create destination directory.Could not detect any cameraCould not find file '%s'.Could not find localization data at '%s'Could not get disk info: %sCould not get disk name: %sCould not get flash drive letterCould not initialize upload (camera responded with 0x%02x).Could not load required camera driver '%s' (%s).Could not open '%s'.Could not reset camera. Could not set speed to %i (camera responded with %i).Could not transmit packet even after several retries.Current Mode: Camera Mode Current Mode: Playback Mode CustomDate & TimeDate FormatDate and TimeDate and time (GMT)Date: %i/%02i/%02i %02i:%02i:%02i Pictures taken: %i Free pictures: %i Software version: %s Baudrate: %s Memory: %i megabytes Camera mode: %s Image quality: %s Flash setting: %s Information: %s Timer: %s LCD: %s Auto power off: %i minutes Power source: %sDay/Month/YearDebugDeleting image %s.Detected a '%s'.Digita Johannes Erdfelt Digital ZoomDigital zoomDirectory Browse Mode - written by Scott Fritzinger .Directory existsDirectory not foundDisconnecting camera.Do not display TV menuDownloading %s.Downloading '%s'...Downloading data...Downloading file...Downloading image %s.Downloading image...Downloading thumbnail...Downloading...DriverDual IrisEEPROM checksum error.ERROR: message format error.ERROR: message overrunERROR: out of sequence.ERROR: unexpected messageERROR: unexpected message2.ERROR: unexpected packet type.EmptyEnglishErrorError capturing imageError changing speedError changing speed.Error deleting associated thumbnail fileError deleting fileError waiting ACK during initializationExecute predefined command with parameter values.ExposureExposure CompensationExposure MeteringExposure compensationF2F2.3F2.8F4F5.6F8FileFile '%s' could not be found in folder '%s'.File compressionFile existsFile not foundFile protected.File resolutionFile typeFile was too big. You may have to turn your camera off and back on before uploading more files.FineFirmware Revision: %d.%d Firmware version: %d.%02d FixedFlashFlash ModeFlash SettingFlash SettingsFlashLight : AutoFlashLight : Auto (RedEye Reduction)FlashLight : OffFlashLight : OnFlashLight : On (RedEye Reduction)FlashLight : undefinedFlashPixFluorescentFocusFocus ModeFocus positionFocusing error.ForceForce Flash Format card and set album name.Format compact flashFrenchFullGeneralGermanGetting configuration...Getting data...Getting file list...Getting file...Getting information on %i files...Getting thumbnail...GreenHighHigh (1152 x 872)High (good quality)Host Mode: %s Exposure Correction: %s Exposure Data: %d Date Valid: %s Date: %d/%02d/%02d %02d:%02d:%02d Self Timer Set: %s Quality Setting: %s Play/Record Mode: %s Card ID Valid: %s Card ID: %d Flash Mode: Host power save (seconds)How long will it take until the camera powers off when connected to the computer?How long will it take until the camera powers off when not connected to the computer?How long will it take until the camera powers off?HyPictIDISO SpeedIdleIllegal parameter.ImageImage & SoundImage AdjustmentImage QualityImage SizeImage height: %d Image number not valid.Image protected.Image size: %d Image type is not supportedImage width: %d In useIncandescentInfinity/Fish-eyeInformationInternal error (1).Internal error (2).InvalidInvalid Value ( %d ) Iris error.ItalianJD11 Marcus Meissner Driver for the Jenoptik JD11 camera. Protocol reverse engineered using WINE and IDA.JPEGJapaneseKeep filename on uploadKnown problems: 1. If the Kodak DC3200 does not receive a command at least every 10 seconds, it will time out, and will have to be re-initialized. If you notice the camera does not respond, simply re-select the camera. This will cause it to reinitialize.Known problems: If communications problems occur, reset the camera and restart the application. The driver is not robust enough yet to recover from these situations, especially if a problem occurs and the camera is not properly shutdown at speeds faster than 9600.Kodak DC120 Camera Library Scott Fritzinger Camera Library for the Kodak DC120 camera. (by popular demand).Kodak DC240 Camera Library Scott Fritzinger and Hubert Figuiere Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras. Rewritten and updated for gPhoto2.Kodak DC3200 Driver Donn Morrison Questions and comments appreciated.Konica ConfigurationKonica library Lutz Mueller Support for all Konica and several HP cameras.KoreanLCDLCD Auto Off (in seconds)LCD Auto Shut Off (seconds)LCD BrightnessLCD ModeLED ModeLanguageLens ModeLens direction does not match flash light Lens is not connected Light too dark.List all filesListing files in '%s'...Listing folders in '%s'...Loading camera drivers from '%s'...LocalLocalizationLocalization data corrupt.Localization data too long.Localization file too long!Looking for camera ...Looks like a modem, not a cameraLowLow (576 x 436)Low (best quality)MacroMatthew G. Martin Based on fujiplay by Thierry Bousch MaximalMaximum number of Images: %d MediumMedium (1152 x 872)Medium (better quality)Memory card status (%d): %s Memory in camera: %d Mbit. MinimalMinolta Dimage V Camera Library %s Gus Hartmann Special thanks to Minolta for the spec.Model: Minolta Dimage V (%s) Hardware Revision: %s Firmware Revision: %s Model: Model: %s Memory: %d byte(s) of %d availableModel: %s Serial Number: %s, Hardware Version: %i.%i Software Version: %i.%i Testing Software Version: %i.%i Name: %s, Manufacturer: %s Model: Kodak %s Month/Day/YearNTSCName to set on card when formatting.Nikon Coolpix 880: Camera configuration (or preferences): The optical zoom does not properly function. Not all configuration settings can be properly read or written, for example, the fine tuned setting of white balance, and the language settings. Put the camera in 'M' mode in order to to set the shutter speed. NoNo Compact Flash Card detected No cardNo card present.No memory card presentNo reason availableNo response from cameraNo space left on card.NoneNone selectedNormalNormal Not FullNot enough memory available on the memory cardNot usedNote: no memory card present, some values may be invalid Number of Images: %d Number of pictures: %dNumber of pictures: %d Number of pictures: %i Firmware Version: %sOFFOKONOffOnOn, red-eye reductionOnly root folder is supported - you requested a file listing for folder '%s'.Operation ModeOperation cancelledOtherOther SettingsOther command executing.Out of memoryOutdoorOwner name changedPALPTP Access DeniedPTP Capture Already TerminatedPTP Device Prop Not SupportedPTP General ErrorPTP Incomplete TransferPTP Invalid Code FormatPTP Invalid Device Prop FormatPTP Invalid Device Prop ValuePTP Invalid Object Format CodePTP Invalid Object HandlePTP Invalid ParameterPTP Invalid Parent ObjectPTP Invalid Storage IDPTP Invalid Transaction IDPTP No Thumbnail PresentPTP No Valid Object InfoPTP OK!PTP Object Write ProtectedPTP Operation Not SupportedPTP Parameter Not SupportedPTP Partial DeletionPTP Self Test FailedPTP Session Already OpenedPTP Session Not OpenPTP Specification By Format UnsupportedPTP Specification Of Destination UnsupportedPTP Store FullPTP Store Not AvailablePTP Store Read OnlyPTP Transaction CanceledPTP Undefined ErrorPTP Unknown Vendor CodePanasonic DC1000 gPhoto library Mariusz Zynel Based on dc1000 program written by Fredrik Roubert and Galen Brooks .Panasonic PV-L859-K/PV-L779-K Palmcorder Driver Andrew Selkirk Parameter 1Parameter 2Parameter 3Path not absolutePersistent SettingsPicture SettingsPicturesPlayPort speedProblem downloading imageProblem getting image informationProblem getting number of imagesProblem opening portProblem reading image from flashProblem resetting cameraProblem setting camera communication speedProblem taking live imageProduct ID: %02x%02x Prohibit Flash Read-only file attributes like width and height can not be changed.ReadyReceived unexpected data (0x%02x, 0x%02x).Received unexpected header (%i)Received unexpected responseReceiving data...RecordRecord ModeRedRed eye flashRed-eye ReductionRemoteRequested information about picture %i (= 0x%x), but got information about picture %i backResetting protocol...ResolutionResolution SwitchResolution plus SizeRicoh / Philips driver by Lutz Mueller , Martin Fischer , based on Bob Paauwe's driver STV0680 Adam Harrison Driver for cameras using the STV0680 processor ASIC. Protocol reverse engineered using CommLite Beta 5 Carsten Weinholz Extended for Aiptek PenCam and other STM USB Dual-mode cameras.Self TimerSelf Timer (next picture only)Self Timer TimeSending data...Sensor ID: %d.%d SepiaSession-persistent SettingsSet clock in cameraShall the camera beep when taking a picture?Shot SettingsShutter Speed (in seconds)Shutter Speed (microseconds, 0 auto)Shutter Speed microseconds (0 auto)SiPix Web2 Marcus Meissner Driver for accessing the SiPix Web2 camera.Sipix StyleCam Blink Driver Vincent Sanders Marcus Meissner . SkylightSlide Show IntervalSlow SyncSony DSC-F1 Digital Camera Support M. Adam Kendall Based on the chotplay CLI interface from Ken-ichi Hayashi Gphoto2 port by Bart van Leeuwen Sony DSC-F55/505 gPhoto library Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100 Originally written by Mark Davies gPhoto2 port by Raymond Penners SoundSoundvision Driver Vince Weaver Space remaining: High: %d, Medium: %d, Low: %d SpanishSpeed %i is not supported!Speeds greater than 57600 are not supported for uploading to this cameraSpot Metering ModeStandardStrobe error.Summary for Mustek MDC800: SuperFineSwitching Camera OffSystem error.TV Output FormatTesting different speeds...The Directory Browse "camera" lets you index photos on your hard drive.The JD11 camera works rather well with this driver. An RS232 interface @ 115 kbit is required for image transfer. The driver allows you to get - thumbnails (64x48 PGM format) - full images (640x480 PPM format) The Kodak DC120 camera uses the KDC file format for storing images. If you want to view the images you download from your camera, you will need to download the "kdc2tiff" program. It is available from http://kdc2tiff.sourceforge.netThe Samsung digimax 800k driver has been written by James McKenzie for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and enhanced the port.The battery level of the camera is too low (%d%%). The operation is aborted.The camera did not accept the command.The camera does not accept '%s' as filename.The camera does not support speed %i.The camera sent more bytes than expected (%i)The camera sent only %i byte(s), but we need at least %i.The file to be uploaded has a null lengthThe filename's length must not exceed 12 characters ('%s' has %i characters).The filesystem does not support upload of files.The filesystem doesn't support getting file informationThe filesystem doesn't support getting filesThe filesystem doesn't support setting file informationThe first byte received (0x%x) is not valid.The path '%s' is not absolute.The requested port type (%i) is not supported by this driver.There is currently an operation in progress. This camera only supports one operation at a time. Please wait until the current operation has finished.This camera can not capture previews.This camera can not capture.This camera does not provide information about the driver.This camera does not support setting configuration options.This camera does not support summaries.This library has been tested with a Kodak DC 215 Zoom camera. It might work also with DC 200 and DC 210 cameras. If you happen to have such a camera, please send a message to koltan@gmx.de to let me know, if you have any troubles with this driver library or if everything is okay.Thumbnail height: %d Thumbnail size: %d Thumbnail width: %d Time formatToo many retries failed.Total pictures captured: %d, Flashes fired: %d Transmission timed out even after 2 retries. Giving up...Trying to contact camera...TungstenUnknown camera library errorUnknown errorUnknown error.Unknown file type %i.Unknown modelUnrecognized responseUnsuitable cardUnsupported command.Unsupported port type %i = 0x%x given. Initialization impossible.Unsupported port type: %d. This driver only works with USB cameras. Upload is supported into the '%s' folder onlyUploading file...Uploading image: %s.Uploading...User canceled downloadVendor ID: %02x%02x Version: Volatile SettingsWaiting for completion...Waiting...WeakWhite BalanceWhite BoardWhite levelWrite-protectedWrong escape sequence: expected 0x%02x, got 0x%02x.Year/Month/DayYesYou have been trying to delete '%s' from folder '%s', but the filesystem does not support deletion of files.ZoomZoom (in millimeters)a/c adaptorautobatteryblack & whitecamera inactive for > 9 seconds, re-initing. colorcoolshot library vcould not change owner namecould not set timeexternallyfinegPhoto2 Mustek VDC-3500/Relisys Dimera 3500 This software was created with the help of proprietary information belonging to StarDot Technologies. Author: Brian Beattie Contributors: Chuck Homic Converting raw camera images to RGB Dan Fandrich Information on protocol, raw image format, gphoto2 port high (640x480)in fill modeinternallyjamcam library vlow (320x240)menuno status reported.normalnot available: %soffonon batteryplaypower OKpower badreadyrecordsuperfinesx330z is USB onlytime setunknown (0x%02x)Project-Id-Version: libgphoto2 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2003-02-14 11:11+0100 Last-Translator: Tamas Szanto Language-Team: Hungarian Language: hu MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit A kamera adatai: Típus: %s Tulajdonos: %s Energia: %s A flash-lemez adatai: %s IdÅ‘: %s Meghajtó: %s %11s bájt összesen %11s bájt szabad (az akkumulátor feltöltöttsége: %d%%)%i (ismeretlen)%i képet nem sikerült letörölni, mert védettek%lld (ismeretlen)%s (a számítógép ideje %s%i másodperc)-0,5-1,0-1,5-2,00,00,51,01,51,6x1152 x 8641280 x 9601x2,02,5x29 mm2x34 mm3x41 mm4x51 mm58 mm5x640 x 4806x7x8x9xAC adapterrÅ‘lASIC-revízió: %d.%d KötetnévHiba történt a kimeneti/bemeneti programkönyvtárban ('%s'): %sApertúraAutomatikusAutomatikus kikapcsolás (kapcsolat nélkül) (s)Automatikus kikapcsolás (kapcsolat esetén) (s)Automatikus lekapcsolási idÅ‘Automatikus kikapcsolás (perc)Autoexponálási zárolásAutomatikus, vörösszemeffektus-csökkentésAutofókuszálási hiba.Automatikus A rendelkezésre álló memória: Hibás EOTHibás ellenÅ‘rzőösszeg - 0x%02x érkezett 0x%02x helyett.Hibás adatok - 0x%02x érkezett 0x%02x vagy 0x%02x helyett.Hibás adatok - 0x%02x érkezett 0x%02x helyett.Hibás exponálás (valószínűleg nincs elég fény)Hibás értékű lencse-állapotkód: %d Barbie/HotWheels/WWF Scott Fritzinger Andreas Meyer Pete Zaitcev A képformátum visszafejtése: Jeff Laing A weben talált dokumentáció alapján készült. A Vision engedélyével.Az akkumulátor szintje alacsony.Az akkumulátor szintje megfelelÅ‘.Feltöltöttségi szint: %s A képek száma: %d Minimális megmaradt kapacitás: %d Elfoglaltság: %s vaku-feltöltés: %s A lencse állapota: Az akkumulátor lemerült, a kamera kikapcsolt.Az akkumulátor állapota: %s, AC adapter: %s HangjelzésLegjobbFekete-fehérFekete alapFekete/fehérKékFényerÅ‘+FényerÅ‘-FényerÅ‘/kontrasztAz izzó exponálási idejeElfoglaltKameraA kamera beállításaiKamerakezelési programkönyvtár a Kodak DC215 Zoom kamerához. Michael Koltan A kamera beállításaiA kamera és a meghajtóprogram beállításaiA kamera nem tartalmaz memóriát. A kamera nem áll készen, több kameraazonosítási kísérlet nem sikerült: %sA kamera képei fekete-fehérek. A kamera energiatakarékossági ideje (s)A kamera háromszor is megtagadta a kapcsolat nyitvatartását.A kamera nem fogadta el a parancsot.A kamera alapállapotba állt vissza.Nem várt bájt (0x%02x) érkezett a kamerától.A kamera támogatja gyorsnézeti képek (thumbnailek) használatát. A kamera támogatja videofelvételek készítését. A kamera által támogatott videoformátumok: Nem áll rendelkezésre kameraNem kérdezhetÅ‘ le a rendelkezésre álló szabad memóriaA telep kapacitását nem lehet lekérdezniNem sikerült lekérdezni a képeket tartalmazó könyvtár nevétRögzítésA felvétel típusa nem támogatottA kártya állapota: A kártya nem írható.A kértya nincs megformázvaA kártya nincs megnyitvaA kártya meg van nyitvaA kártya írásvédett.A kártya nem támogatott.A kártyát eltávolították a hozzáférés közben.Sebességváltás...egy kis türelmet kérek...KarakterKarakter és hangTöltésHibás ellenÅ‘rzőösszegFelhÅ‘sSzínmódSzínbeállításokA parancs nem szakítható félbe.Hibás parancssorrend.Kommunikációs hiba (1)Kommunikációs hiba (2)Kommunikációs hiba (3)Compact Flash kártya detektálva Compact Flash kártyaTömörítésBeállításokA Fuji kamera beállításaiLétrejött a kapcsolat a kamerávalKontraszt+Kontraszt-SzerzÅ‘i jogSzerzÅ‘i jog (max. 20 karakter)Hibás adatokNem sikerült %i bájtot lefoglalni a kép letöltéséhez.Nem sikerült %i bájtot lefoglalni az elÅ‘nézeti képek részére.Nem sikerült alkalmazni az USB-beállításokatNem sikerült felvenni a kapcsolatot a kamerával.Nem sikerült létrehozni a \DCIM könyvtárat.Nem sikerült létrehozni a célkönyvtárat.Nem található kameraA(z) '%s' fájl nem található.Nemzetköziesítési adat nem található itt: '%s'Nem sikerült lekérdezni a lemez jellemzÅ‘it: %sNem sikerült lekérdezni a lemez nevét: %sNem sikerült lekérdezni a Flash meghajtó betűjelétNem sikerült inicializálni a feltöltést (a kamera válasza: 0x%02x).Nem sikerült betölteni a(z) '%s' nevű meghajtóprogramot (%s).'%s' megnyitása nem sikerült.A kamerát nem sikerült alapállapotba hozni. Nem sikerült beállítani a(z) %i sebességet (a kamera válasza: %i).Több próbálkozás után sem sikerült egy csomag átvitele.A jelenlegi mód: kameramód Jelenlegi üzemmód: lejátszás egyéniDátum és idÅ‘DátumformátumDátum és idÅ‘Dátum és idÅ‘ (GMT)Dátum: %i/%02i/%02i %02i:%02i:%02i A képek száma: %i Szabad képhelyek: %i Szoftververzió: %s Baud-ráta: %s Memória: %i MB Kameramód: %s KépminÅ‘ség: %s A vaku beállítása: %s Információ: %s IdÅ‘zítÅ‘: %s LCD: %s Automatikus kikapcsolás: %i perc után Ãramellátás: %sNap/hónap/évNyomkövetésA(z) %s kép törlése.Detektálva: '%s'.Digita Johannes Erdfelt Digitális nagyításDigitális nagyításKönyvtárböngészési mód - készítette: Scott Fritzinger .A könyvtár már létezikA könyvtár nem találhatóA kapcsolat megszűnt a kamerával.A TV-menü ne jelenjen meg%s letöltése.'%s' letöltése...Adatok letöltése...Fájl letöltése...A(z) %s kép letöltése.Kép letöltése...ElÅ‘nézeti képek letöltése...Letöltés...MeghajtóDuál íriszHibás EEPROM-ellenÅ‘rzőösszeg.HIBA: hibás üzenetformátumHIBA: üzenettúlfutásHIBA: nem megfelelÅ‘ sorrendHIBA: nem várt üzenetHIBA: nem várt üzenet2HIBA: nem várt csomagtípusÜresangolHibaHiba képrögzítéskorA sebesség megváltoztatása nem sikerültA sebesség megváltoztatása nem sikerült.Nem sikerült törölni a társított elÅ‘nézeti képetHiba történt a fájl törlésekorNem jött ACK válasz az inicializálás közbenElÅ‘re megadott parancs végrehajtása paraméterekkel.ExponálásExponálási kompenzációExponálásmérésExponálási kompenzációF2F2.3F2.8F4F5.6F8Fájl'%s' nevű fájl nem létezik a(z) '%s' könyvtárban.FájltömörítésA fájl már létezikA fájl nem találhatóVédett fájl.FájlfelbontásFájltípusA fájl túl nagy. A következÅ‘ feltöltési kísérlet elÅ‘tt érdemes ki- és bekapcsolni a kamerát.FinomFirmware-revízió: %d.%d A firmware verziószáma: %d.%02d RögzítettVakuVakus módA vaku beállításaiA vaku beállításaiVaku: automatikusVaku: automatikus (vörösszem-csökkentés)Vaku: kiVaku: beVaku: be (vörösszem-csökkentés)Vaku: nem definiáltFlashPixFluoreszkálóFókuszFókuszálási módA fókusz helyzeteFókuszálási hiba.KényszerítésVaku mindig A kártya leformázása és kötetnév beállítása.A Compact Flash kártya formázásafranciaTeleÃltalánosnémetInformációk lekérdezése...Adatok lekérdezése...A fájllista lekérdezése...Fájl letöltése...Információ lekérdezése %i fájlról...ElÅ‘nézeti képek letöltése...ZöldMagasMagas (1152 x 872)Magas (jó minÅ‘ség)Host-mód: %s Exponálási korrekció: %s Exponálási adatok: %d Érvényességi dátum: %s Dátum: %d/%02d/%02d %02d:%02d:%02d Az idÅ‘zítÅ‘ beállítása: %s MinÅ‘ségi beállítás: %s Lejátszási/felvételi mód: %s Kártyaazonosító-érvényesség: %s Kártyaazonosító: %d Vakuzási mód: A számítógép energiatakarékossági ideje (s)Mennyi idÅ‘ után kapcsoljon le a kamera, ha össze van kötve egy számítógéppel?Mennyi idÅ‘ után kapcsoljon le a kamera, ha nincs összekötve számítógéppel?Mennyi idÅ‘ után kapcsoljon ki a kamera?HyPictAzonosítóISO-sebességÜresjáratNem megengedett paraméter.KépKép és hangKépkiigazításKépminÅ‘ségKépméretA kép magassága: %d Egy képszám érvénytelen.Védett kép.A kép mérete: %d A képtípus nem támogatottA kép szélessége: %d HasználtFehéren izzóVégtelen/halszemInformációBelsÅ‘ hiba (1).BelsÅ‘ hiba (2).ÉrvénytelenÉrvénytelen érték ( %d ) Ãriszhiba.olaszJD11 Marcus Meissner Meghajtóprogram a Jenoptik JD11 kamerához. A protokoll visszafejtése a WINE és az IDA segítségével történt.JPEGjapánA fájlnév megÅ‘rzése feltöltéskorIsmert problémák: 1. A Kodak DC3200 típusokat újra kell inicializálni, ha 10 másodpercig nem kapnak semmiylen parancsot. Ha azt veszi észre, hogy a kamera nem válaszol, válassza ki újból a kamerát, melynek hatására megtörténik az újrainicializálás.Ismert problémák: Ha adatátviteli problémák adódnak, hozza alaphelyzetbe a kamerát és indítsa újra az alkalmazást. A meghajtó nem elég robosztus ahhoz, hogy az ilyen helyzeteket automatikusan megoldja, különösen akkor, ha a sebesség nagyobb 9600-nál és a kamera lezárása nem a szokott módon történt.Kodak DC120 programkönyvtár Scott Fritzinger Programkönyvtár a Kodak DC120 kamera kezeléséhez (sokak kérésére).Kodak DC240 programkönyvtár Scott Fritzinger és Hubert Figuiere Programkönyvtár a Kodak DC240, DC280, DC3400 és DC5000 kamerák kezeléséhez. Újraírva és felfrissítve a gPhoto2-höz.Kodak DC3200 meghajtó Donn Morrison Várom a kérdéseket, észrevételeket.Konica-beállításokKonica programkönyvtár Lutz Mueller Az összes Konica és néhány HP kamera támogatása.koreaiLCDLCD automatikus kikapcsolás (s)Az LCD automatikus kikapcsolása (s)Az LCD fényerejeLCD-módLED-módNyelvLencsemódA lencse iránya nem felel meg a vakuénak A lencse nincs bekötve Túl sötét a megvilágítás.Az összes fájl kilistázásaA fájlok kilistázása itt: '%s'...A könyvtárak listázása itt: '%s'...Kamerameghajtók letöltése innen: '%s'...helyiNemzetköziesítésA nemzetköziesítési adat hibás.A nemzetköziesítési adat túl hosszú.A nemzetköziesítési fájl túl hosszú.Kamera keresése...Az eszköz modemnek tűnik, nem kameránakAlacsonyAlacsony (576 x 436)Alacsony (a legjobb minÅ‘ség)MakróMatthew G. Martin Thierry Bousch fujiplay programja alapján MaximálisA képek maximális száma: %d KözepesKözepes (1152 x 872)Közepes (jobb minÅ‘ség)A memóriakártya állapota (%d): %s A kamera memóriája: %d Mbit. MinimálisMinolta Dimage V programkönyvtár %s Gus Hartmann Köszönet a Minoltának a specifikáció megadásáért!Típus: Minolta Dimage V (%s) Hardver-verzió: %s Firmware-verzió: %s Típus:Típus: %s Memória: %d bájt áll rendelkezésre %d bájtbólTípus: %s Sorozatszám: %s, Hardververzió: %i.%i Szoftververzió: %i.%i Tesztelési szoftververzió: %i.%i Név: %s, Gyártó: %s Típus: Kodak %s Hónap/nap/évNTSCFormázáskor beállítható név.Nikon Coolpix 880: A kamera beállítási opciói: Az optikai nagyítás egyelÅ‘re nem működik megfelelÅ‘en. Nem minden beállítás olvasható és írható megfelelÅ‘ módon, ilyen például a fehéregyensúly finombeállítása és a nyelvválasztás. Kapcsolja a kamerát 'M' módba a zársebesség beállításához. NemNem található Compact Flash kártya Nincs kártyaNincs behelyezve kártya.Nincs behelyezve memóriakártyaA hiba oka nem ismertA kamera nem válaszoltNem maradt szabd hely a kártyán.NincsNincs kiválasztvaNormálNormál Nincs teleNincs elég szabad memória a memóriakártyánNem használtMegjegyzés: nincs memóriakártya, néhány érték érvénytelen lehet A képek száma: %d A képek száma: %dA képek száma: %d A képek száma: %i A firmware verziószáma: %sKIOKBEKiBeBe, vörösszemeffektus-csökkentésCsak a gyökérkönyvtár használható - listázási kísérlet történt a(z) '%s' könyvtárra.Működési módA művelet félbeszakadtEgyébEgyéb beállításokMás parancs fut.Elfogyott a memóriaSzabadbanA tulajdonos neve megváltozottPALPTP - a hozzáférés megtagadvaA PTP-felvétel már befejezÅ‘döttNem támogatott PTP eszköztulajdonságPTP - általános hibaPTP - nem teljes transzferPTP érvénytelen kódformátumPTP érvénytelen eszköztulajdonság-formátumPTP érvénytelen eszköztulajdonság-értékPTP érvénytelen objektumformátum-kódÉrvénytelen PTP objektumazonosítóPTP - érvénytelen paraméterPTP - érvénytelen szülÅ‘objektumPTP érvénytelen tárolóazonosítóPTP - érvénytelen tranzakciós azonosítóPTP - nem érhetÅ‘ el elÅ‘nézeti képPTP érvénytelen objektuminformációPTP OK.PTP - az objektum írásvédettPTP - nem támogatott műveletPTP - nem támogatott paraméterPTP - részleges törlésPTP - az önteszt nem sikerültPTP - a munkafolyamat már meg van nyitvaPTP - a munkafolyamat nincs megnyitvaNem támogatott formátumú PTP-specifikációNem támogatott PTP specifikáció vagy célPTP - a tároló beteltA PTP-tároló nem érhetÅ‘ elPTP - a tároló csak olvashatóPTP - a tranzakció félbeszakadtPTP - nem definiált hibaIsmeretlen PTP gyártókódPanasonic DC1000 gPhoto programkönyvtár Mariusz Zynel Fredrik Roubert és Galen Brooks dc1000 nevű programja alapján.Panasonic PV-L859-K/PV-L779-K Palmcorder-meghajtó Andrew Selkirk 1. paraméter2. paraméter3. paraméterAz elérési út nem abzolútMegmaradó beállításokKépbeállításokKépekLejátszásA csatlakozó sebességeNem sikerült letölteni a képetNem sikerült lekérdezni a kép adataitNem sikerült lekérdezni a képek számátHiba történt a port megnyitásakorNem sikerült beolvasni egy képet a Flash kártyárólNem sikerült alapállapotba hozni a kamerátNem sikerült beállítani a kamera átviteli sebességétNem sikerült közvetlenül felvételt készíteniTermékazonosító: %02x%02x A vaku letiltása A csak olvasható fájljellemzÅ‘k (pl. szélesség, magasság) nem változtathatók meg.KészNem várt adatok érkeztek (0x%02x, 0x%02x).Nem várt fejléc érkezett (%i)Nem várt válasz érkezettAdatok fogadása...FelvételFelvételi módVörösVörösszem-vakuVörösszemhatás-csökkentéstávoliA(z) %i (= 0x%x) azonosítójú kép adatainak lekérdezése történt, de a gép a(z) %i azonosítójú kép adatait adta visszaA protokoll alapállapotba hozása...FelbontásFelbontáskapcsolóFelbontás és méretRicoh/Philips meghajtó Lutz Mueller , Martin Fischer , Bob Paauwe meghajtóprogramja segítségével STV0680 Adam Harrison Meghajtóprogram az STV0680 ASIC processzorral ellátott kamerákhoz. A protokoll visszafejtése a CommLite Beta 5 segítségével történt. Carsten Weinholz Továbbfejlesztette a meghajtóprogramot az Aiptek PenCam és más STM USB duál módú kamerák kezeléséhez.Saját idÅ‘zítÅ‘Saját idÅ‘zítÅ‘ (csak a következÅ‘ képnél)A saját idÅ‘zítÅ‘ idejeAdatok küldése...ÉrzékelÅ‘azonosító: %d.%d SzépiaMunkafolyamathoz kötött beállításokA kamera órájának beállításaAdjon hangjelzést a kamera kép felvételekor?Képkészítési beállításokZársebesség (s)Zársebesség (ezredmásodperc, 0 = automatikus)Zársebesség [ezredmásodpercben] (0=automatikus)SiPix Web2 Marcus Meissner Meghajtó a SiPix Web2 kamera kezeléséhez.Sipix StyleCam Blink meghajtó Vincent Sanders Marcus Meissner . ÉgboltDiavetítési idÅ‘közLassú szinkronizálásTámogatás a Sony DSC-F1 digitális kamerákhoz M. Adam Kendall A chotplay CLI felületen alapul, amely Ken-ichi Hayashi munkája A Gphoto2-átirat szerzÅ‘je: Bart van Leeuwen Sony DSC-F55/505 gPhoto programkönyvtár Támogatás a Sony MSAC-SR1 és a Memory Stick használatához a DCR-PC100-ben Az eredeti program Mark Davies munkája Ãtirat a gPhoto2-höz: Raymond Penners HangSoundvision-meghajtó Vince Weaver Megmaradt hely: magas (%d), közepes (%d), alacsony (%d) spanyolA megadott sebesség (%i) nem támogatott.57600-nál magasabb sebességet nem lehet használni ennél a kameránál feltöltéshezPontmérÅ‘ mód (spot metering)StandardStrobe-hiba.A Mustek MDC800 áttekintése: SuperFineA kamera kikapcsolásaRendszerhiba.TV-kimeneti formátumA különféle sebességek tesztelése...A "camera" böngészése lehetÅ‘vé teszi a képek indexelését a merevlemezen.A JD11 kamera elég jól működik ezzel a meghajtóval. RS232 felület és 115 kbites kapcsolat szükséges képek áttöltéséhez. A meghajtó segítségével létrehozhatók: - elÅ‘nézeti képek (64x48 PGM formátumban) - teljes képek (640x480 PPM formátumban) A Kodak DC120 kamera a KDC nevű fájlformátumot használja képek tárolásához. A kameráról letöltött képek megtekintéséhez szükség van a "kdc2tiff" programra, mely letölthetÅ‘ innen: http://kdc2tiff.sourceforge.netA Samsung digimax 800k meghajtót James McKenzie készítette a gphoto-hoz. KésÅ‘bb Lutz Mueller átírta a gphoto2-höz. Marcus Meissner tovább tökéletesítette az átiratot, kijavítva néhány hibát.A kamera energiaszintje nagyon alacsony (%d%%). A művelet félbeszakadt.A kamera nem fogadta el a parancsot.A kamera nem fogadja el a(z) '%s' fájlnevet.A kamera nem támogatja a(z) %i sebességet.A kamera a vártnál több bájtot küldött (%i)A kamera csak %i bájtot küldött, de legalább %i bájtot kellett volna.A feltöltendÅ‘ fájl 0 hosszúságúA fájlnév nem lehet 12 karakternél hosszabb ('%s': %i karakter).A fájlrendszer nem támogatja fájlok feltöltését.A fájlrendszer nem támogatja a fájljellemzÅ‘k lekérdezését.A fájlrendszer nem támogatja fájlok letöltésétA fájlrendszer nem támogatja fájlinformációk beállításátAz elsÅ‘ fogadott bájt (0x%x) érvénytelen.Az elérési út ('%s') nem abszolút.A kért porttípust (%i) nem támogatja ez a meghajtó.Jelenleg még tart egy művelet, és a kamera egyszerre csak egy művelet végzését teszi lehetÅ‘vé. Kérem várja meg a művelet befejezÅ‘dését.Ez a kamera nem támogat gyorsnézeteket.Ez a kamera nem támogat rögzítést.A meghajtóprogram adatai nem érhetÅ‘k el ennél a kameránál.A kamera nem teszi lehetÅ‘vé a beállítások módosítását.Ez a kamera nem támogat összesítéseket.A programkönyvtár tesztelése egy Kodak DC 215 Zoom kamerával történt. Lehet, hogy nem működik a DC 200 és DC 210 kamerákkal. Ha Ön ilyennel rendelkezik, kérem írjon e-mailt a koltan@gmx.de címre, és írja meg, milyen hibákat tapasztalt, vagy hibátlan-e a működés.Az elÅ‘nézeti kép magassága: %d Az elÅ‘nézeti kép mérete: %d Az elÅ‘nézeti kép szélessége: %d IdÅ‘formátumTúl sok próbálkozás nem sikerült.A felvett képek száma: %d, a vakuvillanások száma: %d Az adatátvitel 2 próbálkozás után sem sikerült (idÅ‘túllépés történt). A művelet nem sikerült...Kapcsolatfelvétel a kamerával...TungstenIsmeretlen hiba a kamerakezelÅ‘ programkönyvtárbanIsmeretlen hibaIsmeretlen hiba.Ismeretlen fájltípus: %i.Ismeretlen típusNem felismerhetÅ‘ válaszNem megfelelÅ‘ kártyaNem támogatott parancs.Nem támogatott porttípus (%i = 0x%x) van megadva. Nem lehet inicializálni a kamerát.Nem támogatott porttípus: %d. Ez a meghajtó csak USB-alapú kamerákkal működik. Csak a(z) '%s' mappába lehet fájlokat feltölteniFájl feltöltése...Kép feltöltése: %s.Feltöltés...A felhasználó megszakította a letöltéstGyártóazonosító: %02x%02x Verzió:Nem megmaradó beállításokVárakozás a művelet befejezÅ‘désére...Várakozás...GyengeFehéregyensúlyFehér alapFehérszintÃrásvédettHibás escape-szekvencia: 0x%02x helyett 0x%02x érkezett.Év/hónap/napIgenA program megpróbálta törölni a(z) '%s' fájlt a(z) '%s' mappából, de a fájlrendszer nem támogatja fájlok törlését.NagyításNagyítás (mm)a/c adapterautomatikusakkumulátorfekete-fehéra kamera inaktív volt több mint 9 másodpercig, újrainicializálás. színesCoolshot programkönyvtár va tulajdonos nevét nem sikerült megváltoztatniaz idÅ‘ beállítása nem sikerültkülsÅ‘finomgPhoto2 Mustek VDC-3500/Relisys Dimera 3500 Ez a szoftver a StarDot Technologies kereskedelmi szoftverfejlesztÅ‘ csomagjával készült. SzerzÅ‘: Brian Beattie Hozzájárultak még: Chuck Homic A kamera képeinek RGB-re konvertálása Dan Fandrich Információ a protokollról, a nyers képformátumról, a gphoto2-átiratról magas (640x480)feltöltöttségi módbelsÅ‘jamcam programkönyvtár valacsony (320x240)menünincs állapotinformáció.normálnem érhetÅ‘ el: %skibeakkumulátorróllejátszásenergiaszint: megfelelÅ‘energiaszint: nem megfelelÅ‘készfelvételnagyon finomaz sx330z csak USB-saz idÅ‘ beállítvaismeretlen (0x%02x)libgphoto2-2.5.9/po/cs.po0000644000175000001440000125350512623156271012120 00000000000000# Czech Translation of libgphoto2 # This file is distributed under the same license as the libgphoto2 package. # # Pavel Borecki , 2013. # Marek ÄŒernocký , 2013 (just fixes). # msgid "" msgstr "" "Project-Id-Version: libgphoto2 2.5.1\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2013-06-06 11:53+0200\n" "Last-Translator: Marek ÄŒernocký \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Gtranslator 2.91.6\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Poedit-SourceCharset: UTF-8\n" #: camlibs/adc65/adc65.c:242 msgid "" "Adc65\n" "Benjamin Moos " msgstr "" "Adc65\n" "Benjamin Moos " #: camlibs/agfa-cl20/agfa_cl20.c:528 #, c-format msgid "" "Camera appears to not be using CompactFlash storage\n" "Unfortunately we do not support that at the moment :-(\n" msgstr "" "Zdá se, že v přístroji není vložena paměťová karta CompactFlash.\n" "Takový provoz ale není (alespoň prozatím) podporován.\n" #: camlibs/agfa-cl20/agfa_cl20.c:531 #, c-format msgid "Camera has taken %d pictures, and is using CompactFlash storage.\n" msgstr "" "Přístroj pořídil již %d snímků a je v nÄ›m vložena paměťová karta " "CompactFlash.\n" #: camlibs/agfa-cl20/agfa_cl20.c:539 msgid "" "agfa_cl20\n" "The Agfa CL20 Linux Driver People!\n" " Email us at cl20@poeml.de \n" " Visit us at http://cl20.poeml.de " msgstr "" "agfa_cl20\n" "OvladaÄ pro přístroj Agfa CL20 je kolektivní prací jeho tvůrců.\n" "NapiÅ¡te nám na cl20@poeml.de (v angliÄtinÄ› Äi nÄ›mÄinÄ›)\n" "NavÅ¡tivte nás na http://cl20.poeml.de" #: camlibs/aox/library.c:109 #, c-format msgid "" "Your USB camera has an Aox chipset.\n" "Number of lo-res PICs = %i\n" "Number of hi-res PICs = %i\n" "Number of PICs = %i\n" msgstr "" "Tento přístroj pro rozhraní USB obsahuje Äip Aox.\n" "PoÄet snímků s nízkým rozliÅ¡ením = %i\n" "PoÄet snímků s vysokým rozliÅ¡ením = %i\n" "Celkový poÄet snímků = %i\n" #: camlibs/aox/library.c:122 msgid "" "Aox generic driver\n" "Theodore Kilgore \n" msgstr "" "Obecný ovladaÄ pro Aox\n" "Theodore Kilgore \n" #: camlibs/ax203/library.c:99 #, c-format msgid "Your USB picture frame has a AX203 chipset\n" msgstr "Tento fotorámeÄek s USB obsahuje Äip AX203\n" #: camlibs/ax203/library.c:108 msgid "" "AX203 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "Displeje fotorámeÄků, obsahujících Äip AX203, mívají různá rozliÅ¡ení.\n" "OvladaÄ v gPhoto umí snímky z takových zařízení stahovat, nahrávat je\n" "do nich i je v nich mazat." #: camlibs/ax203/library.c:121 msgid "" "AX203 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "OvladaÄ pro fotorámeÄky obsahující Äip AX203\n" "Hans de Goede \n" "Tento ovladaÄ umí snímky z takových zařízení stahovat, nahrávat\n" "je do nich i je v nich mazat." #: camlibs/ax203/library.c:443 camlibs/st2205/library.c:542 msgid "Picture Frame Configuration" msgstr "Nastavení zařízení (fotorámeÄku)" #: camlibs/ax203/library.c:446 camlibs/ax203/library.c:462 #: camlibs/st2205/library.c:545 camlibs/st2205/library.c:569 msgid "Synchronize frame data and time with PC" msgstr "Synchronizovat datum a Äas ve fotorámeÄku s poÄítaÄem" #: camlibs/barbie/barbie.c:360 #, c-format msgid "" "Number of pictures: %i\n" "Firmware Version: %s" msgstr "" "PoÄet snímků: %i\n" "Verze firmware: %s" #: camlibs/barbie/barbie.c:368 msgid "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Reverse engineering of image data by:\n" "Jeff Laing \n" "\n" "Implemented using documents found on\n" "the web. Permission given by Vision." msgstr "" "Barbie/HotWheels/WWF\n" "Scott Fritzinger \n" "Andreas Meyer \n" "Pete Zaitcev \n" "\n" "Formát obrazových dat prozkoumal:\n" "Jeff Laing \n" "\n" "VytvoÅ™eno s pomocí informací z veÅ™ejnÄ› dostupných dokumentů (na Internetu).\n" "Se svolením od spoleÄnosti Vision." #: camlibs/canon/canon.c:645 #, c-format msgid "Could not create directory %s." msgstr "Nebylo možné vytvoÅ™it složku %s." #: camlibs/canon/canon.c:648 #, c-format msgid "Could not remove directory %s." msgstr "Nebylo možné odstranit složku %s." #: camlibs/canon/canon.c:1211 camlibs/canon/canon.c:1589 #: camlibs/canon/usb.c:560 msgid "lock keys failed." msgstr "Uzamykací klíÄe selhaly." #: camlibs/canon/canon.c:1307 camlibs/canon/canon.c:1308 msgid "*UNKNOWN*" msgstr "*NEZNÃMÉ*" #: camlibs/canon/canon.c:1490 #, c-format msgid "" "canon_int_capture_image: initial canon_usb_list_all_dirs() failed with " "status %li" msgstr "" "canon_int_capture_image: úvodní volání canon_usb_list_all_dirs() selhalo se " "stavem %li" #: camlibs/canon/canon.c:1622 #, c-format msgid "" "canon_int_capture_image: final canon_usb_list_all_dirs() failed with status " "%i" msgstr "" "canon_int_capture_image: závÄ›reÄné volání canon_usb_list_all_dirs() selhalo " "se stavem %i" #: camlibs/canon/canon.c:2554 #, c-format msgid "Name '%s' (%li characters) too long, maximum 30 characters are allowed." msgstr "Název „%s“ (%li znaků) je příliÅ¡ dlouhý, možných je nanejvýš 30 znaků." #: camlibs/canon/canon.c:2970 #, c-format msgid "Lower case letters in %s not allowed." msgstr "V %s není možné použít malá písmena." #: camlibs/canon/canon.c:3150 #, c-format msgid "" "canon_int_list_directory: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory: Chyba: úvodní zpráva je příliÅ¡ krátká (%i < " "nezbytné minimum %i)" #: camlibs/canon/canon.c:3172 msgid "" "canon_int_list_directory: Reached end of packet while examining the first " "dirent" msgstr "" "canon_int_list_directory: PÅ™i zkoumání první položky složky neoÄekávanÄ› " "dosaženo konce paketu." #: camlibs/canon/canon.c:3257 msgid "canon_int_list_directory: truncated directory entry encountered" msgstr "canon_int_list_directory: ve složce byla zjiÅ¡tÄ›na oříznutá položka" #: camlibs/canon/canon.c:3616 msgid "File protected." msgstr "Soubor je chránÄ›n." #: camlibs/canon/canon.c:3717 #, fuzzy, c-format msgid "" "canon_int_get_info_func: ERROR: initial message too short (%i < minimum %i)" msgstr "" "canon_int_list_directory: Chyba: úvodní zpráva je příliÅ¡ krátká (%i < " "nezbytné minimum %i)" #: camlibs/canon/canon.c:4021 msgid "Could not extract JPEG thumbnail from data: No beginning/end" msgstr "Z dat nelze získat náhled ve formátu JPEG: Není zaÄátek ani konec" #: camlibs/canon/canon.c:4110 msgid "Could not extract JPEG thumbnail from data: Data is not JFIF" msgstr "Ze souboru JPEG nelze získat náhled: data nejsou ve formátu JIFF" #: camlibs/canon/canon.h:156 camlibs/canon/canon.h:170 #, c-format msgid "NULL parameter \"%s\" in %s line %i" msgstr "Prázdný parametr „%s“ v %s na řádku %i" #: camlibs/canon/canon.h:638 #, c-format msgid "" "Don't know how to handle camera->port->type value %i aka 0x%x in %s line %i." msgstr "" "Není známo jak se zachovat v případÄ›, kdy je přístroj->port->typ nastaveno " "na hodnotu %i neboli 0x%x, v %s na řádku %i." #: camlibs/canon/crc.c:234 #, c-format msgid "FATAL ERROR: initial CRC value for length %d unknown\n" msgstr "" "Fatální chyba: úvodní hodnota kontrolního souÄtu pro délku %d není známa\n" #: camlibs/canon/crc.c:247 #, c-format msgid "unable to guess initial CRC value\n" msgstr "Není možné odhadnout poÄáteÄní hodnotu kontrolního souÄtu.\n" #: camlibs/canon/crc.c:274 #, c-format msgid "" "warning: CRC not checked (add len %d, value 0x%04x) " "#########################\n" msgstr "" "varování: kontrolní souÄet nebyl ověřen (pÅ™id. délky %d, hodnota 0x%04x) " "##########################\n" #: camlibs/canon/library.c:97 camlibs/canon/library.c:1616 msgid "Compatibility Mode" msgstr "Kompatibilní režim" #: camlibs/canon/library.c:98 msgid "Thumbnail" msgstr "Náhled snímku" #: camlibs/canon/library.c:99 msgid "Full Image" msgstr "Snímek" #: camlibs/canon/library.c:123 camlibs/canon/library.c:266 #: camlibs/ptp2/config.c:1758 camlibs/ptp2/config.c:1769 #: camlibs/ptp2/config.c:2644 camlibs/ptp2/config.c:2672 #: camlibs/ptp2/config.c:3457 camlibs/ptp2/config.c:3502 #: camlibs/ptp2/config.c:3539 camlibs/ptp2/config.c:3569 #: camlibs/ptp2/ptp.c:5355 #, c-format msgid "Bulb" msgstr "Exp. po dobu stisku spouÅ¡tÄ›" #: camlibs/canon/library.c:216 msgid "Auto focus: one-shot" msgstr "Automat. zaostÅ™.: jednorázové pÅ™i namáÄknutí spouÅ¡tÄ›" #: camlibs/canon/library.c:217 msgid "Auto focus: AI servo" msgstr "Automat. zaostÅ™.: průběžnÄ›" #: camlibs/canon/library.c:218 msgid "Auto focus: AI focus" msgstr "Automat. zaostÅ™.: automat. volba jednoráz. Äi průběž." #: camlibs/canon/library.c:219 msgid "Manual focus" msgstr "RuÄní zaostÅ™ování" #: camlibs/canon/library.c:224 msgid "Beep off" msgstr "Vypnout zvuk. upozornÄ›ní" #: camlibs/canon/library.c:225 msgid "Beep on" msgstr "Zapnout zvuk. upozornÄ›ní" #: camlibs/canon/library.c:230 camlibs/canon/library.c:281 #: camlibs/ptp2/config.c:3267 camlibs/ptp2/config.c:4787 #: camlibs/ptp2/ptp.c:4967 msgid "Flash off" msgstr "Blesk vypnut" #: camlibs/canon/library.c:231 msgid "Flash on" msgstr "Blesk odpálen vždy" #: camlibs/canon/library.c:232 msgid "Flash auto" msgstr "Blesk odpálen dle potÅ™eby" #: camlibs/canon/library.c:259 msgid "AUTO" msgstr "PlnÄ› automat. režim" #: camlibs/canon/library.c:260 camlibs/ptp2/config.c:1765 #: camlibs/ptp2/ptp.c:5349 msgid "P" msgstr "Äást. nastavitelný automat. režim" #: camlibs/canon/library.c:261 camlibs/ptp2/ptp.c:5350 msgid "Tv" msgstr "exp. Äas ruÄnÄ›, zaclonÄ›ní automat." #: camlibs/canon/library.c:262 camlibs/ptp2/ptp.c:5351 msgid "Av" msgstr "zaclonÄ›ní ruÄnÄ›, exp. Äas automat." #: camlibs/canon/library.c:263 camlibs/ptp2/ptp.c:5352 msgid "M" msgstr "plnÄ› ruÄní režim" #: camlibs/canon/library.c:264 msgid "A-DEP" msgstr "" "max. svÄ›tla (min. zaclon.) pÅ™i dost. hl. ostrosti (AUTOMAT. zvol. objekty)" #: camlibs/canon/library.c:265 msgid "M-DEP" msgstr "" "max. svÄ›tla (min. zaclon.) pÅ™i dost. hl. ostrosti (RUÄŒNÄš zvol. nejbl. a " "nejvzd. objekt)" #: camlibs/canon/library.c:267 msgid "Manual 2" msgstr "RuÄní „2“" #: camlibs/canon/library.c:268 msgid "Far scene" msgstr "Vzdálená scéna" #: camlibs/canon/library.c:269 msgid "Fast shutter" msgstr "Krátký exp. Äas" #: camlibs/canon/library.c:270 msgid "Slow shutter" msgstr "Dlouhý exp. Äas" #: camlibs/canon/library.c:271 msgid "Night scene" msgstr "NoÄní scéna" #: camlibs/canon/library.c:272 msgid "Gray scale" msgstr "StupnÄ› Å¡edé" #: camlibs/canon/library.c:273 camlibs/konica/qm150.c:998 #: camlibs/konica/qm150.c:1014 camlibs/ptp2/config.c:3292 #: camlibs/ptp2/config.c:4119 camlibs/ptp2/ptp.c:5365 camlibs/ptp2/ptp.c:5500 #: camlibs/ricoh/library.c:331 camlibs/sierra/olympus-desc.c:482 #: camlibs/sierra/sierra.c:995 camlibs/sierra/sierra.c:1004 #: camlibs/sierra/sierra.c:1310 msgid "Sepia" msgstr "Sépiový nádech" #: camlibs/canon/library.c:274 camlibs/ptp2/config.c:1777 #: camlibs/ptp2/config.c:1941 camlibs/ptp2/config.c:2859 #: camlibs/ptp2/config.c:2861 camlibs/ptp2/config.c:2899 #: camlibs/ptp2/config.c:3067 camlibs/ptp2/config.c:3086 #: camlibs/ptp2/config.c:3926 camlibs/ptp2/ptp.c:4981 camlibs/ptp2/ptp.c:5180 #: camlibs/ptp2/ptp.c:5366 camlibs/st2205/library.c:515 #: camlibs/st2205/library.c:528 msgid "Portrait" msgstr "Portrét" #: camlibs/canon/library.c:275 camlibs/ptp2/config.c:1929 #: camlibs/ptp2/config.c:3260 camlibs/sierra/nikon-desc.c:492 #: camlibs/sierra/olympus-desc.c:775 camlibs/sierra/olympus-desc.c:791 msgid "Spot" msgstr "Bod" #: camlibs/canon/library.c:276 camlibs/kodak/dc210/dc210.c:243 #: camlibs/kodak/dc210/dc210.c:257 camlibs/konica/qm150.c:1019 #: camlibs/ptp2/config.c:2863 camlibs/ptp2/config.c:2877 #: camlibs/ptp2/config.c:3069 camlibs/ptp2/config.c:3088 #: camlibs/ptp2/ptp.c:4983 camlibs/ptp2/ptp.c:5368 camlibs/ricoh/library.c:499 #: camlibs/sierra/epson-desc.c:218 camlibs/sierra/nikon-desc.c:324 #: camlibs/sierra/olympus-desc.c:637 camlibs/sierra/sierra.c:1115 #: camlibs/sierra/sierra.c:1120 camlibs/sierra/sierra.c:1391 #: camlibs/sierra/sierra.c:1587 camlibs/sierra/sierra.c:1590 #: camlibs/sierra/sierra.c:1803 msgid "Macro" msgstr "Makro" #: camlibs/canon/library.c:277 msgid "BW" msgstr "ÄŒernobílé" #: camlibs/canon/library.c:278 msgid "PanFocus" msgstr "Pevné ohnisko" #: camlibs/canon/library.c:279 camlibs/ptp2/config.c:3922 #: camlibs/ptp2/config.c:4116 camlibs/ptp2/ptp.c:5176 camlibs/ptp2/ptp.c:5497 msgid "Vivid" msgstr "ZvýraznÄ›ní barev" #: camlibs/canon/library.c:280 camlibs/ptp2/config.c:1943 #: camlibs/ptp2/config.c:4117 camlibs/ptp2/ptp.c:5371 camlibs/ptp2/ptp.c:5498 msgid "Neutral" msgstr "Neutrální" #: camlibs/canon/library.c:282 msgid "Long shutter" msgstr "Dlouhý exp. Äas" #: camlibs/canon/library.c:283 msgid "Super macro" msgstr "Supermakro" #: camlibs/canon/library.c:284 msgid "Foliage" msgstr "Listí" #: camlibs/canon/library.c:285 msgid "Indoor" msgstr "Interiér" #: camlibs/canon/library.c:286 msgid "Fireworks" msgstr "Ohňostroj" #: camlibs/canon/library.c:287 msgid "Beach" msgstr "Pláž" #: camlibs/canon/library.c:288 msgid "Underwater" msgstr "Pod vodou" #: camlibs/canon/library.c:289 msgid "Snow" msgstr "Sníh" #: camlibs/canon/library.c:290 msgid "Kids and pets" msgstr "DÄ›ti a domácí mazlíÄci" #: camlibs/canon/library.c:291 msgid "Night snapshot" msgstr "NoÄní momentka" #: camlibs/canon/library.c:292 msgid "Digital macro" msgstr "Digitální makro" #: camlibs/canon/library.c:293 msgid "MyColors" msgstr "různé barev. úpravy snímku" #: camlibs/canon/library.c:294 msgid "Photo in movie" msgstr "Pořízování static. snímku v režimu videozáznamu" #: camlibs/canon/library.c:300 camlibs/ptp2/config.c:1440 #: camlibs/ptp2/config.c:2235 camlibs/ptp2/config.c:4574 #: camlibs/ptp2/ptp.c:4942 msgid "RAW" msgstr "surová data ze snímaÄe (RAW)" #: camlibs/canon/library.c:302 msgid "RAW 2" msgstr "surová data ze snímaÄe (RAW) „2“" #: camlibs/canon/library.c:304 camlibs/ptp2/config.c:2243 #: camlibs/ptp2/config.c:2245 msgid "Small Normal JPEG" msgstr "JPEG – nízké rozl., více ztrát. kompr." #: camlibs/canon/library.c:306 camlibs/ptp2/config.c:2242 #: camlibs/ptp2/config.c:2244 msgid "Small Fine JPEG" msgstr "JPEG – nízké rozl., ménÄ› ztrát. kompr." #: camlibs/canon/library.c:308 camlibs/ptp2/config.c:2241 msgid "Medium Normal JPEG" msgstr "JPEG – stÅ™ední rozl. a více ztrát. kompr." #: camlibs/canon/library.c:310 camlibs/ptp2/config.c:2240 msgid "Medium Fine JPEG" msgstr "JPEG – stÅ™ední rozl. a ménÄ› ztrát. kompr." #: camlibs/canon/library.c:312 camlibs/ptp2/config.c:2239 msgid "Large Normal JPEG" msgstr "JPEG – vysoké rozl. a více ztrát. kompr." #: camlibs/canon/library.c:314 camlibs/ptp2/config.c:2238 msgid "Large Fine JPEG" msgstr "JPEG – vysoké rozl. a ménÄ› ztrát. kompr." #: camlibs/canon/library.c:316 camlibs/ptp2/config.c:2266 #: camlibs/ptp2/config.c:2267 msgid "RAW + Small Normal JPEG" msgstr "RAW + JPEG s nízkým rozl. a více ztrát. kompr." #: camlibs/canon/library.c:318 camlibs/ptp2/config.c:2254 #: camlibs/ptp2/config.c:2255 msgid "RAW + Small Fine JPEG" msgstr "RAW + JPEG s nízkým rozl. a ménÄ› ztrát. kompr." #: camlibs/canon/library.c:320 camlibs/ptp2/config.c:2263 msgid "RAW + Medium Normal JPEG" msgstr "RAW + JPEG se stÅ™edním rozl. a více ztrát. kompr." #: camlibs/canon/library.c:322 camlibs/ptp2/config.c:2251 msgid "RAW + Medium Fine JPEG" msgstr "RAW + JPEG se stÅ™edním rozl. a ménÄ› ztrát. kompr." #: camlibs/canon/library.c:324 camlibs/ptp2/config.c:2260 msgid "RAW + Large Normal JPEG" msgstr "RAW + JPEG s vysokým rozl. a více ztrát. kompr." #: camlibs/canon/library.c:326 camlibs/ptp2/config.c:2248 msgid "RAW + Large Fine JPEG" msgstr "RAW + JPEG s vysokým rozl. a ménÄ› ztrát. kompr." #: camlibs/canon/library.c:368 msgid "" "This is the driver for Canon PowerShot, Digital IXUS, IXY Digital,\n" " and EOS Digital cameras in their native (sometimes called \"normal\")\n" " mode. It also supports a small number of Canon digital camcorders\n" " with still image capability.\n" "It includes code for communicating over a serial port or USB connection,\n" " but not (yet) over IEEE 1394 (Firewire).\n" "It is designed to work with over 70 models as old as the PowerShot A5\n" " and Pro70 of 1998 and as new as the PowerShot A510 and EOS 350D of\n" " 2005.\n" "It has not been verified against the EOS 1D or EOS 1Ds.\n" "For the A50, using 115200 bps may effectively be slower than using 57600\n" "If you experience a lot of serial transmission errors, try to have your\n" " computer as idle as possible (i.e. no disk activity)\n" msgstr "" "Toto je ovladaÄ pro přístroje Canon Å™ad PowerShot, Digital IXUS, IXY Digital " "a EOS provozovaných\n" "v běžném režimu.\n" "Funguje též s nÄ›kolika málo kamerami od tohoto výrobce, které umí i fotit.\n" "Komunikace s přístrojem je možné pÅ™es sériové Äi USB rozhraní, pÅ™es IEEE " "1394 (Firewire)\n" "prozatím nikoli. Podporováno je více než 70 typů přístrojů – od starých " "PowerShot A5 a Pro70 z roku \n" "1998 po nové PowerShot A510 a EOS 350D z roku 2005. Nebylo vyzkouÅ¡eno s EOS " "1D Äi EOS 1Ds.\n" "Přístroj A50 paradoxnÄ› komunikuje svižnÄ›ji na rychlosti 57600 b/s než na " "115200.\n" "Pokud se setkáte s výskytem velkého množství chyb pÅ™i pÅ™enosu po sériovém " "rozhraní, zkuste\n" "svůj poÄítaÄ pÅ™i ovládání přístroje ponechat co nejménÄ› zatížený\n" "(Ätení/zápis na datové úložiÅ¡tÄ›, atp.)\n" #: camlibs/canon/library.c:497 #, c-format msgid "Camera unavailable: %s" msgstr "Přístroj není k dispozici: %s" #: camlibs/canon/library.c:517 msgid "Switching Camera Off" msgstr "Probíhá vypínání přístroje" #: camlibs/canon/library.c:587 camlibs/canon/library.c:621 msgid "Error capturing image" msgstr "Chyba pÅ™i poÅ™izování snímku" #: camlibs/canon/library.c:677 camlibs/canon/library.c:1110 #, c-format msgid "Could not get disk name: %s" msgstr "Nelze získat název datového úložiÅ¡tÄ›: %s" #: camlibs/canon/library.c:678 camlibs/canon/library.c:1111 msgid "No reason available" msgstr "Důvod není znám" #: camlibs/canon/library.c:685 #, c-format msgid "Could not get disk info: %s" msgstr "Nelze získat informace o datovém úložiÅ¡ti: %s" #: camlibs/canon/library.c:754 #, c-format msgid "Internal error #1 in get_file_func() (%s line %i)" msgstr "VnitÅ™ní chyba Ä. 1 v get_file_func() (%s řádek %i)" #: camlibs/canon/library.c:777 #, c-format msgid "No audio file could be found for %s" msgstr "Pro %s nebyl nalezen žádný soubor se zvukovým záznamem" #: camlibs/canon/library.c:1033 #, c-format msgid "" " Drive %s\n" " %11s bytes total\n" " %11s bytes available" msgstr "" "Mechanika %s\n" " %11s bajtů celkem\n" " %11s bajtů volných" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "AC adapter" msgstr "Síťový napájecí zdroj" #: camlibs/canon/library.c:1041 camlibs/canon/library.c:1047 #: camlibs/canon/library.c:1948 camlibs/canon/library.c:1954 msgid "on battery" msgstr "provoz na akumulátor" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power OK" msgstr "napájení je v pořádku" #: camlibs/canon/library.c:1043 camlibs/canon/library.c:1950 msgid "power bad" msgstr "napájení není v pořádku" #: camlibs/canon/library.c:1051 #, c-format msgid "not available: %s" msgstr "nedostupné: %s" #: camlibs/canon/library.c:1077 #, c-format msgid "%s (host time %s%i seconds)" msgstr "%s (Äas na poÄítaÄi %s%i vteÅ™in)" #: camlibs/canon/library.c:1087 #, c-format msgid "" "\n" "Camera identification:\n" " Model: %s\n" " Owner: %s\n" "\n" "Power status: %s\n" "\n" "Flash disk information:\n" "%s\n" "\n" "Time: %s\n" msgstr "" "\n" "Identifikace přístroje:\n" " Typ: %s\n" " Vlastník: %s\n" "\n" "Stav napájení: %s\n" "\n" "Informace o datovém úložiÅ¡ti:\n" "%s\n" "\n" "ÄŒas: %s\n" #: camlibs/canon/library.c:1145 msgid "" "Canon PowerShot series driver by\n" " Wolfgang G. Reissnegger,\n" " Werner Almesberger,\n" " Edouard Lafargue,\n" " Philippe Marzouk,\n" "A5 additions by Ole W. Saastad\n" "Additional enhancements by\n" " Holger Klemm\n" " Stephen H. Westin" msgstr "" "OvladaÄ pro přístroje Canon Å™ady PowerShot. Tvůrci:\n" "Wolfgang G. Reissnegger,\n" "Werner Almesberger,\n" "Edouard Lafargue,\n" "Philippe Marzouk,\n" "Pro typ A5 rozšířil Ole W. Saastad\n" "Dalšími vylepÅ¡eními pÅ™ispÄ›li:\n" "Holger Klemm\n" "Stephen H. Westin" #: camlibs/canon/library.c:1189 msgid "Error deleting file" msgstr "Chyba pÅ™i mazání souboru" #: camlibs/canon/library.c:1205 msgid "Error deleting associated thumbnail file" msgstr "Chyba pÅ™i mazání souvisejícího souboru s náhledem" #: camlibs/canon/library.c:1339 camlibs/canon/library.c:1472 msgid "" "Speeds greater than 57600 are not supported for uploading to this camera" msgstr "Do tohoto přístroje není možné nahrávat rychlostí vyšší než 57600 b/s." #: camlibs/canon/library.c:1356 camlibs/canon/library.c:1490 msgid "Could not get flash drive letter" msgstr "Není možné získat oznaÄení datového úložiÅ¡tÄ›." #: camlibs/canon/library.c:1398 camlibs/canon/library.c:1513 msgid "" "Could not upload, no free folder name available!\n" "999CANON folder name exists and has an AUT_9999.JPG picture in it." msgstr "" "Nelze nahrávat, protože jsou vyÄerpána dostupná jména složek!\n" "Existuje již i složka 999CANON a v ní soubor AUT_9999.JPG." #: camlibs/canon/library.c:1420 camlibs/canon/library.c:1533 msgid "Could not create \\DCIM directory." msgstr "Nelze vytvoÅ™it složku \\DCIM." #: camlibs/canon/library.c:1426 camlibs/canon/library.c:1539 msgid "Could not create destination directory." msgstr "Cílovou složku nebylo možné vytvoÅ™it." #: camlibs/canon/library.c:1586 camlibs/ptp2/config.c:6981 #: camlibs/ptp2/config.c:7270 msgid "Camera and Driver Configuration" msgstr "Nastavení­ přístroje a jeho ovladaÄe" #: camlibs/canon/library.c:1589 camlibs/ptp2/config.c:6936 #: camlibs/ptp2/config.c:6937 camlibs/ptp2/config.c:6938 #: camlibs/ptp2/config.c:6939 camlibs/ptp2/config.c:6940 #: camlibs/ptp2/config.c:6941 camlibs/sierra/epson-desc.c:282 #: camlibs/sierra/nikon-desc.c:695 camlibs/sierra/nikon-desc.c:706 #: camlibs/sierra/nikon-desc.c:717 camlibs/sierra/olympus-desc.c:1017 #: camlibs/sierra/olympus-desc.c:1116 camlibs/sierra/olympus-desc.c:1127 #: camlibs/sierra/olympus-desc.c:1140 camlibs/sierra/sierra.c:1185 #: camlibs/sierra/sierra.c:1647 msgid "Camera Settings" msgstr "Nastavení přístroje" #: camlibs/canon/library.c:1593 camlibs/canon/library.c:1996 #: camlibs/ptp2/config.c:6603 camlibs/ptp2/config.c:6604 msgid "Owner Name" msgstr "Jméno vlastníka" #: camlibs/canon/library.c:1599 camlibs/canon/library.c:2009 msgid "Capture Size Class" msgstr "Třída velikosti záznamu" #: camlibs/canon/library.c:1638 camlibs/canon/library.c:2035 #: camlibs/ptp2/config.c:6641 camlibs/ptp2/config.c:6642 #: camlibs/ptp2/config.c:6644 camlibs/ptp2/config.c:6645 #: camlibs/ptp2/config.c:6646 camlibs/ptp2/config.c:6826 #: camlibs/ptp2/config.c:6830 camlibs/ptp2/ptp.c:4195 #: camlibs/sierra/olympus-desc.c:881 camlibs/sierra/olympus-desc.c:899 msgid "ISO Speed" msgstr "Citlivost na svÄ›tlo (ISO)" #: camlibs/canon/library.c:1657 camlibs/canon/library.c:1658 #: camlibs/canon/library.c:1684 camlibs/canon/library.c:1685 #: camlibs/canon/library.c:1711 camlibs/canon/library.c:1712 #: camlibs/canon/library.c:1751 camlibs/canon/library.c:1752 #: camlibs/canon/library.c:1778 camlibs/canon/library.c:1779 #: camlibs/canon/library.c:1809 camlibs/canon/library.c:1810 #: camlibs/canon/library.c:1837 camlibs/canon/library.c:1838 #: camlibs/canon/library.c:1865 camlibs/canon/library.c:1866 #: camlibs/canon/library.c:1893 camlibs/canon/library.c:1894 #: camlibs/ptp2/config.c:3957 camlibs/ptp2/config.c:4269 #: camlibs/ptp2/library.c:4670 camlibs/ptp2/library.c:4672 #: camlibs/ptp2/ptp.c:5126 camlibs/ptp2/ptp.c:5306 camlibs/ptp2/ptp.c:5396 msgid "Unknown" msgstr "Neznámé" #: camlibs/canon/library.c:1665 camlibs/canon/library.c:2064 msgid "Shooting mode" msgstr "Režim poÅ™izování snímků" #: camlibs/canon/library.c:1692 camlibs/canon/library.c:2093 #: camlibs/ptp2/config.c:6739 camlibs/ptp2/config.c:6740 #: camlibs/ptp2/config.c:6744 camlibs/ptp2/config.c:6745 #: camlibs/ptp2/config.c:6746 camlibs/ptp2/ptp.c:4197 camlibs/ptp2/ptp.c:4787 msgid "Shutter Speed" msgstr "ExpoziÄní Äas" #: camlibs/canon/library.c:1722 camlibs/canon/library.c:2266 #: camlibs/kodak/dc210/dc210.c:236 camlibs/kodak/dc210/dc210.c:395 #: camlibs/konica/qm150.c:1033 camlibs/ptp2/config.c:6670 #: camlibs/ptp2/ptp.c:4182 camlibs/ptp2/ptp.c:4208 camlibs/ricoh/library.c:500 #: camlibs/sierra/sierra.c:1160 camlibs/sierra/sierra.c:1420 msgid "Zoom" msgstr "PÅ™iblížení" #: camlibs/canon/library.c:1732 camlibs/canon/library.c:2121 #: camlibs/canon/library.c:2282 camlibs/ptp2/config.c:6731 #: camlibs/ptp2/config.c:6732 camlibs/ptp2/config.c:6735 #: camlibs/ptp2/ptp.c:4196 camlibs/ptp2/ptp.c:4786 camlibs/sierra/sierra.c:962 #: camlibs/sierra/sierra.c:1283 camlibs/sierra/sierra.c:1498 #: camlibs/sierra/sierra.c:1739 msgid "Aperture" msgstr "ZaclonÄ›ní" #: camlibs/canon/library.c:1758 camlibs/canon/library.c:2148 #: camlibs/ptp2/config.c:6675 camlibs/ptp2/config.c:6676 #: camlibs/ptp2/config.c:6677 camlibs/ptp2/config.c:6678 #: camlibs/ptp2/config.c:6680 camlibs/ptp2/ptp.c:4198 camlibs/ptp2/ptp.c:4372 #: camlibs/sierra/nikon-desc.c:459 camlibs/sierra/nikon-desc.c:482 #: camlibs/sierra/olympus-desc.c:766 msgid "Exposure Compensation" msgstr "Kompenzace chyby měření expoziÄních hodnot" #: camlibs/canon/library.c:1785 camlibs/canon/library.c:2177 #: camlibs/ptp2/config.c:6631 camlibs/ptp2/config.c:6632 #: camlibs/ptp2/config.c:6635 msgid "Image Format" msgstr "Formát obrazu" #: camlibs/canon/library.c:1817 camlibs/canon/library.c:2205 #: camlibs/ptp2/config.c:6708 camlibs/ptp2/config.c:6711 #: camlibs/ptp2/ptp.c:4111 camlibs/sierra/nikon-desc.c:331 #: camlibs/sierra/olympus-desc.c:644 msgid "Focus Mode" msgstr "Režim zaostÅ™ování" #: camlibs/canon/library.c:1845 camlibs/canon/library.c:2311 #: camlibs/ptp2/config.c:6683 camlibs/ptp2/config.c:6684 #: camlibs/ptp2/ptp.c:4113 camlibs/ptp2/ptp.c:4177 camlibs/ptp2/ptp.c:4430 #: camlibs/ptp2/ptp.c:4640 camlibs/sierra/sierra.c:1022 #: camlibs/sierra/sierra.c:1323 camlibs/sierra/sierra.c:1532 #: camlibs/sierra/sierra.c:1763 msgid "Flash Mode" msgstr "Režim blesku" #: camlibs/canon/library.c:1873 camlibs/canon/library.c:2234 #: camlibs/konica/library.c:668 camlibs/konica/library.c:883 #: camlibs/ptp2/ptp.c:4178 msgid "Beep" msgstr "Zvuková upozornÄ›ní" #: camlibs/canon/library.c:1904 camlibs/ptp2/config.c:6934 msgid "Camera Actions" msgstr "Akce pro přístroj" #: camlibs/canon/library.c:1908 camlibs/canon/library.c:2340 #: camlibs/ptp2/config.c:6518 camlibs/ptp2/config.c:6519 msgid "Synchronize camera date and time with PC" msgstr "Synchronizovat datum a Äas na přístroji s poÄí­taÄem" #: camlibs/canon/library.c:1915 camlibs/ptp2/config.c:6943 msgid "Camera Status Information" msgstr "Informace o stavu přístroje" #: camlibs/canon/library.c:1919 camlibs/ptp2/config.c:6549 #: camlibs/ptp2/config.c:6553 camlibs/ptp2/config.c:6554 #: camlibs/ptp2/ptp.c:4216 msgid "Camera Model" msgstr "Model přístroje" #: camlibs/canon/library.c:1924 camlibs/konica/library.c:654 #: camlibs/konica/library.c:866 camlibs/konica/qm150.c:758 #: camlibs/polaroid/pdc700.c:1006 camlibs/polaroid/pdc700.c:1019 #: camlibs/polaroid/pdc700.c:1089 msgid "Date and Time" msgstr "Datum a Äas" #: camlibs/canon/library.c:1932 msgid "Error" msgstr "Chyba" #: camlibs/canon/library.c:1936 camlibs/ptp2/config.c:6555 #: camlibs/ptp2/ptp.c:4215 msgid "Firmware Version" msgstr "Verze firmware" #: camlibs/canon/library.c:1956 msgid "Power" msgstr "Napájení" #: camlibs/canon/library.c:1964 msgid "Driver" msgstr "OvladaÄ" #: camlibs/canon/library.c:1968 camlibs/canon/library.c:2354 msgid "List all files" msgstr "Vypsat vÅ¡echny soubory" #: camlibs/canon/library.c:1974 camlibs/canon/library.c:2367 msgid "Keep filename on upload" msgstr "PÅ™i nahrávání do přístroje zachovat název souboru" #: camlibs/canon/library.c:2000 camlibs/canon/library.c:2039 #: camlibs/canon/library.c:2068 camlibs/canon/library.c:2097 #: camlibs/canon/library.c:2125 camlibs/canon/library.c:2153 #: camlibs/canon/library.c:2181 camlibs/canon/library.c:2209 #: camlibs/canon/library.c:2238 camlibs/canon/library.c:2271 #: camlibs/canon/library.c:2286 camlibs/canon/library.c:2315 #: camlibs/canon/library.c:2344 msgid "Camera unavailable" msgstr "Přístroj není dostupný" #: camlibs/canon/library.c:2003 msgid "Owner name changed" msgstr "Jméno vlastníka bylo zmÄ›nÄ›no" #: camlibs/canon/library.c:2005 msgid "could not change owner name" msgstr "Jméno vlastníka nelze zmÄ›nit" #: camlibs/canon/library.c:2017 msgid "Capture size class changed" msgstr "Třída velikosti snímku byla zmÄ›nÄ›na" #: camlibs/canon/library.c:2024 msgid "Invalid capture size class setting" msgstr "Neplatné nastavení třídy velikosti snímku" #: camlibs/canon/library.c:2053 msgid "Invalid ISO speed setting" msgstr "Neplatné nastavení citlivosti (ISO)" #: camlibs/canon/library.c:2056 msgid "ISO speed changed" msgstr "Nastavení citlivosti (ISO) zmÄ›nÄ›no" #: camlibs/canon/library.c:2058 msgid "Could not change ISO speed" msgstr "Nastavení citlivosti (ISO) nebylo možné zmÄ›nit" #: camlibs/canon/library.c:2082 msgid "Invalid shooting mode setting" msgstr "Neplatné nastavení režimu poÅ™izování snímků" #: camlibs/canon/library.c:2085 msgid "Shooting mode changed" msgstr "Režim snímání zmÄ›nÄ›n" #: camlibs/canon/library.c:2087 msgid "Could not change shooting mode" msgstr "Režim snímání nelze zmÄ›nit" #: camlibs/canon/library.c:2111 msgid "Invalid shutter speed setting" msgstr "Neplatné nastavení expoziÄního Äasu" #: camlibs/canon/library.c:2114 msgid "Shutter speed changed" msgstr "ExpoziÄní Äas zmÄ›nÄ›n" #: camlibs/canon/library.c:2116 msgid "Could not change shutter speed" msgstr "Nelze zmÄ›nit expoziÄní Äas" #: camlibs/canon/library.c:2139 camlibs/canon/library.c:2300 msgid "Invalid aperture setting" msgstr "Neplatné nastavení clony" #: camlibs/canon/library.c:2142 camlibs/canon/library.c:2303 msgid "Aperture changed" msgstr "Nastavení zaclonÄ›ní zmÄ›nÄ›no" #: camlibs/canon/library.c:2144 camlibs/canon/library.c:2305 msgid "Could not change aperture" msgstr "Nelze zmÄ›nit nastavení zaclonÄ›ní" #: camlibs/canon/library.c:2167 msgid "Invalid exposure compensation setting" msgstr "Neplatné nastavení kompenzace expoziÄních hodnot" #: camlibs/canon/library.c:2170 msgid "Exposure compensation changed" msgstr "Nastavení kompenzace expozice bylo zmÄ›nÄ›no" #: camlibs/canon/library.c:2172 msgid "Could not change exposure compensation" msgstr "Nastavení kompenzace expozice nelze zmÄ›nit." #: camlibs/canon/library.c:2194 msgid "Invalid image format setting" msgstr "Neplatné nastavení datového formátu snímku" #: camlibs/canon/library.c:2198 msgid "Image format changed" msgstr "Formát obrazových dat byl zmÄ›nÄ›n" #: camlibs/canon/library.c:2200 msgid "Could not change image format" msgstr "Formát obrazových dat nebylo možné zmÄ›nit" #: camlibs/canon/library.c:2223 msgid "Invalid focus mode setting" msgstr "Neplatný režim zaostÅ™ování" #: camlibs/canon/library.c:2226 msgid "Focus mode changed" msgstr "Režim zaostÅ™ování byl zmÄ›nÄ›n" #: camlibs/canon/library.c:2228 msgid "Could not change focus mode" msgstr "Režim zaostÅ™ování nelze zmÄ›nit" #: camlibs/canon/library.c:2252 msgid "Invalid beep mode setting" msgstr "Neplatné nastavení zvukových upozornÄ›ní" #: camlibs/canon/library.c:2255 msgid "Beep mode changed" msgstr "Nastavení zvukových upozornÄ›ní bylo zmÄ›nÄ›no" #: camlibs/canon/library.c:2257 msgid "Could not change beep mode" msgstr "Nastavení zvukových upozornÄ›ní nelze zmÄ›nit" #: camlibs/canon/library.c:2274 msgid "Zoom level changed" msgstr "Míra pÅ™iblížení byla zmÄ›nÄ›na" #: camlibs/canon/library.c:2276 msgid "Could not change zoom level" msgstr "Míru pÅ™iblížení nelze zmÄ›nit" #: camlibs/canon/library.c:2329 msgid "Invalid flash mode setting" msgstr "Neplatné nastavení blesku" #: camlibs/canon/library.c:2332 msgid "Flash mode changed" msgstr "Režim blesku byl zmÄ›nÄ›n" #: camlibs/canon/library.c:2334 msgid "Could not change flash mode" msgstr "Režim blesku nelze zmÄ›nit" #: camlibs/canon/library.c:2347 msgid "time set" msgstr "Nastavení Äasu" #: camlibs/canon/library.c:2349 msgid "could not set time" msgstr "Nastavení Äasu nelze zmÄ›nit" #: camlibs/canon/library.c:2581 #, c-format msgid "Unsupported port type %i = 0x%x given. Initialization impossible." msgstr "Zadán nepodporovaný typ portu %i = 0x%x. Inicializace není možná." #: camlibs/canon/serial.c:706 camlibs/canon/serial.c:769 msgid "Battery exhausted, camera off." msgstr "Akumulátor je vybitý – přístroj se vypnul" #: camlibs/canon/serial.c:709 msgid "ERROR: unexpected message" msgstr "Chyba: neoÄekávané hlášení" #: camlibs/canon/serial.c:719 msgid "ERROR: message overrun" msgstr "Chyba: příliÅ¡ dlouhá zpráva" #: camlibs/canon/serial.c:746 msgid "ERROR: out of sequence." msgstr "Chyba: mimo poÅ™adí." #: camlibs/canon/serial.c:751 msgid "ERROR: unexpected packet type." msgstr "Chyba: neoÄekávaný typ paketu" #: camlibs/canon/serial.c:761 msgid "ERROR: message format error." msgstr "Chyba: chybný formát zprávy." #: camlibs/canon/serial.c:773 msgid "ERROR: unexpected message2." msgstr "Chyba: neoÄekávané hlášení 2." #: camlibs/canon/serial.c:983 msgid "Uploading file..." msgstr "Probíhá nahrávání souboru do přístroje…" #: camlibs/canon/serial.c:1054 camlibs/digita/digita.c:261 #: camlibs/directory/directory.c:576 msgid "Getting file..." msgstr "Probíhá stahování souboru…" #: camlibs/canon/serial.c:1124 msgid "" "canon_serial_get_dirents: canon_serial_dialogue failed to fetch directory " "entries" msgstr "" "canon_serial_get_dirents: canon_serial_dialogue – nezdaÅ™ilo se naÄíst " "položky ve složce" #: camlibs/canon/serial.c:1132 #, c-format msgid "" "canon_serial_get_dirents: Initial dirent packet too short (only %i bytes)" msgstr "" "canon_serial_get_dirents: úvodní paket s informacemi o položkách složky je " "příliÅ¡ krátký (pouhých %i bajtů)" #: camlibs/canon/serial.c:1150 #, c-format msgid "canon_serial_get_dirents: Could not allocate %i bytes of memory" msgstr "canon_serial_get_dirents: NezdaÅ™ilo se vyhradit %i bajtů pamÄ›ti" #: camlibs/canon/serial.c:1170 msgid "canon_serial_get_dirents: Failed to read another directory entry" msgstr "" "canon_serial_get_dirents: NepodaÅ™ilo se naÄíst následující položku ve složce" #: camlibs/canon/serial.c:1186 msgid "canon_serial_get_dirents: Truncated directory entry received" msgstr "canon_serial_get_dirents: obrženy oříznuté položky složky" #: camlibs/canon/serial.c:1214 msgid "canon_serial_get_dirents: Too many dirents, we must be looping." msgstr "" "canon_serial_get_dirents: PříliÅ¡ mnoho položek ve složce – nejspíš doÅ¡lo k " "zacyklení." #: camlibs/canon/serial.c:1224 #, c-format msgid "canon_serial_get_dirents: Could not resize dirent buffer to %i bytes" msgstr "" "canon_serial_get_dirents: NezdaÅ™ila se zmÄ›na velikosti vyrovnávací paměťi " "položek složky na %i bajtů" #: camlibs/canon/serial.c:1293 msgid "Error changing speed." msgstr "ZmÄ›na rychlosti komunikace se nezdaÅ™ila." #: camlibs/canon/serial.c:1302 msgid "Resetting protocol..." msgstr "Probíhá opÄ›tovné navázání komunikace…" #: camlibs/canon/serial.c:1311 msgid "Camera OK." msgstr "Přístroj je pÅ™ipraven." #: camlibs/canon/serial.c:1324 msgid "Looking for camera ..." msgstr "Probíhá hledání přístroje…" #: camlibs/canon/serial.c:1334 msgid "Trying to contact camera..." msgstr "Probíhá pokus o spojení s přístrojem…" #: camlibs/canon/serial.c:1338 msgid "Communication error 1" msgstr "Chyba komunikace 1" #: camlibs/canon/serial.c:1348 camlibs/canon/serial.c:1352 #: camlibs/dimera/dimera3500.c:994 msgid "No response from camera" msgstr "Přístroj neodpovídá" #: camlibs/canon/serial.c:1356 msgid "Unrecognized response" msgstr "Nerozpoznaná odpovÄ›Ä" #: camlibs/canon/serial.c:1376 #, c-format msgid "Detected a \"%s\" aka \"%s\"" msgstr "ZjiÅ¡tÄ›no „%s“ neboli „%s“" #: camlibs/canon/serial.c:1384 #, c-format msgid "Unknown model \"%s\"" msgstr "Neznámý typ „%s“" #: camlibs/canon/serial.c:1405 msgid "Bad EOT" msgstr "Neplatný řídící znak „dokonÄení pÅ™enosu“ (EOT)" #: camlibs/canon/serial.c:1411 msgid "Communication error 2" msgstr "Chyba komunikace 2" #: camlibs/canon/serial.c:1434 msgid "Communication error 3" msgstr "Chyba komunikace 3" #: camlibs/canon/serial.c:1438 msgid "Changing speed... wait..." msgstr "Probíhá zmÄ›na rychlosti… Äekejte…" #: camlibs/canon/serial.c:1443 msgid "Error changing speed" msgstr "ZmÄ›na rychlosti se nezdaÅ™ila" #: camlibs/canon/serial.c:1454 msgid "Error waiting for ACK during initialization, retrying" msgstr "" "VyprÅ¡ela lhůta potvrzující odpovÄ›di (ACK) od přístroje – probíhá opÄ›tovný " "pokus" #: camlibs/canon/serial.c:1460 msgid "Error waiting ACK during initialization" msgstr "VyprÅ¡ela lhůta potvrzující odpovÄ›di (ACK) od přístroje." #: camlibs/canon/serial.c:1464 msgid "Connected to camera" msgstr "Spojení s přístrojem je navázáno" #: camlibs/canon/serial.c:1502 msgid "ERROR: a fatal error condition was detected, can't continue " msgstr "Chyba: doÅ¡lo k fatální chybÄ›, není možné pokraÄovat" #: camlibs/canon/serial.c:1518 #, c-format msgid "ERROR: %d is too big" msgstr "Chyba: %d je příliÅ¡ velké" #: camlibs/canon/serial.c:1528 msgid "Getting thumbnail..." msgstr "Probíhá získávání náhledu…" #: camlibs/canon/usb.c:221 msgid "NOT RECOGNIZED" msgstr "NEZNÃMÉ" #: camlibs/canon/usb.c:236 msgid "Could not establish initial contact with camera" msgstr "Nelze navázat prvotní kontakt s přístrojem" #: camlibs/canon/usb.c:244 msgid "Camera was already active" msgstr "Přístroj je již je aktivní" #: camlibs/canon/usb.c:247 msgid "Camera was woken up" msgstr "Přístroj byl probuzen" #: camlibs/canon/usb.c:252 #, c-format msgid "Initial camera response '%c' unrecognized" msgstr "Nerozpoznaná úvodní odpovÄ›Ä od přístroje – „%c“" #: camlibs/canon/usb.c:264 #, c-format msgid "" "Step #2 of initialization failed: (\"%s\" on read of %i). Camera not " "operational" msgstr "" "Navazování spojení s přístrojem se nezdaÅ™ilo v kroku 2: („%s“ pÅ™i Ätení z " "%i). Přístroj není pÅ™ipraven." #: camlibs/canon/usb.c:269 #, c-format msgid "" "Step #2 of initialization failed! (returned %i bytes, expected %i). Camera " "not operational" msgstr "" "Navazování spojení s přístrojem se nezdaÅ™ilo v kroku 2! (pÅ™ijato %i bajtů, " "oÄekáváno %i). Přístroj není pÅ™ipraven." #: camlibs/canon/usb.c:288 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on read of %i. Camera not " "operational" msgstr "" "Navazování spojení s přístrojem se nezdaÅ™ilo v kroku 3: „%s“ pÅ™i Ätení %i. " "Přístroj není pÅ™ipraven" #: camlibs/canon/usb.c:295 camlibs/canon/usb.c:322 #, c-format msgid "" "Step #3 of initialization failed! (returned %i, expected %i). Camera not " "operational" msgstr "" "Navazování spojení s přístrojem se nezdaÅ™ilo v kroku 3! (pÅ™ijato %i, " "oÄekáváno %i). Přístroj není pÅ™ipraven." #: camlibs/canon/usb.c:315 #, c-format msgid "" "Step #3 of initialization failed: \"%s\" on write of %i. Camera not " "operational" msgstr "" "Navazování spojení s přístrojem se nezdaÅ™ilo v kroku 3: „%s“ pÅ™i zápisu %i. " "Přístroj není pÅ™ipraven" #: camlibs/canon/usb.c:353 camlibs/canon/usb.c:394 #, c-format msgid "Step #4 failed: \"%s\" on read of %i. Camera not operational" msgstr "" "Krok Äíslo 4 se nezdaÅ™il: „%s“ pÅ™i naÄítání %i. Přístroj není pÅ™ipraven" #: camlibs/canon/usb.c:360 camlibs/canon/usb.c:401 #, c-format msgid "Step #4 failed (returned %i, expected %i). Camera not operational" msgstr "" "Navazování spojení s přístrojem se nezdaÅ™ilo v kroku 4: (pÅ™ijato %i, " "oÄekáváno %i). Přístroj není pÅ™ipraven." #: camlibs/canon/usb.c:513 #, c-format msgid "Camera not ready, multiple 'Identify camera' requests failed: %s" msgstr "" "Přístroj není pÅ™ipraven, nezdaÅ™ilo se hned nÄ›kolik po sobÄ› jdoucích " "požadavků na jeho identifikaci: %s" #: camlibs/canon/usb.c:551 camlibs/canon/usb.c:567 #, c-format msgid "Camera not ready, get_battery failed: %s" msgstr "" "Přístroj není pÅ™ipraven, dotaz get_battery (získat stav akumulátoru) se " "nezdaÅ™il: %s" #: camlibs/canon/usb.c:632 #, c-format msgid "" "canon_usb_lock_keys: Unexpected length returned from \"lock keys\" function " "(%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: od této funkce obdrženo neoÄekávané množství dat (%i " "bajtů, oÄekáváno %i)" #: camlibs/canon/usb.c:654 camlibs/canon/usb.c:680 camlibs/canon/usb.c:720 #, c-format msgid "canon_usb_lock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_lock_keys: obdrženo neoÄekávané množství dat (%i bajtů, oÄekáváno " "%i)" #: camlibs/canon/usb.c:763 camlibs/canon/usb.c:779 #, c-format msgid "" "canon_usb_unlock_keys: Unexpected length returned (%i bytes, expected %i)" msgstr "" "canon_usb_unlock_keys: obdrženo neoÄekávané množství dat (%i bajtů, " "oÄekáváno %i)" #: camlibs/canon/usb.c:835 camlibs/canon/usb.c:854 #, c-format msgid "" "canon_usb_get_body_id: Unexpected data length returned (%i bytes, expected " "%i)" msgstr "" "canon_usb_get_body_id: obdržena neoÄekávané množství dat (%i bajtů, " "oÄekáváno %i)" #: camlibs/canon/usb.c:1718 msgid "Receiving data..." msgstr "Probíhá příjem dat…" #: camlibs/canon/usb.c:2102 camlibs/canon/usb.c:2248 #, c-format msgid "Out of memory: %d bytes needed." msgstr "Nedostatek pamÄ›ti: je tÅ™eba %d bajtů." #: camlibs/canon/usb.c:2166 msgid "canon_usb_set_file_attributes: canon_usb_dialogue failed" msgstr "canon_usb_set_file_attributes: volání canon_usb_dialogue se nezdaÅ™ilo" #: camlibs/canon/usb.c:2173 #, c-format msgid "" "Warning in canon_usb_set_file_attributes: canon_usb_dialogue returned error " "status 0x%08x from camera" msgstr "" "Varování canon_usb_set_file_attributes: volání canon_usb_dialogue z " "přístroje vrátilo stav 0x%08x" #: camlibs/canon/usb.c:2263 #, c-format msgid "Couldn't read from file \"%s\"" msgstr "Ze souboru „%s“ nelze Äíst" #: camlibs/canon/usb.c:2273 #, c-format msgid "Out of memory: %ld bytes needed." msgstr "Nedostatek pamÄ›ti: je tÅ™eba %ld bajtů." #: camlibs/canon/usb.c:2306 camlibs/canon/usb.c:2317 camlibs/canon/usb.c:2353 #: camlibs/canon/usb.c:2367 camlibs/canon/usb.c:2381 msgid "File upload failed." msgstr "Nahrání souboru se nezdaÅ™ilo." #: camlibs/canon/usb.c:2407 msgid "" "File was too big. You may have to turn your camera off and back on before " "uploading more files." msgstr "" "Soubor byl příliÅ¡ velký. PÅ™ed nahráváním dalších souborů bude přístroj " "nejspíš tÅ™eba vypnout a zapnout." #: camlibs/canon/usb.c:2454 #, c-format msgid "" "canon_usb_get_dirents: Couldn't fit payload into buffer, '%.96s' (truncated) " "too long." msgstr "" "canon_usb_get_dirents: Data se nevejdou do vyrovnávací pamÄ›ti – " "„%.96s“ (zkráceno) je příliÅ¡ dlouhé." #: camlibs/canon/usb.c:2471 #, c-format msgid "" "canon_usb_get_dirents: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_get_dirents: canon_usb_long_dialogue – nezdaÅ™ilo se získat položky " "ve složce, obdržen stav %i" #: camlibs/canon/usb.c:2525 #, c-format msgid "" "canon_usb_list_all_dirs: Couldn't fit payload into buffer, " "'%.96s' (truncated) too long." msgstr "" "canon_usb_list_all_dirs: Data se nevejdou do vyrovnávací pamÄ›ti – " "„%.96s“ (zkráceno) je příliÅ¡ dlouhé." #: camlibs/canon/usb.c:2544 #, c-format msgid "" "canon_usb_list_all_dirs: canon_usb_long_dialogue failed to fetch direntries, " "returned %i" msgstr "" "canon_usb_list_all_dirs: canon_usb_long_dialogue – nezdaÅ™ilo se získat " "položky ve složce, obdržen stav %i" #: camlibs/canon/usb.c:2621 #, c-format msgid "Detected a '%s'." msgstr "Detekováno jako „%s“." #: camlibs/canon/usb.c:2627 #, c-format msgid "Name \"%s\" from camera does not match any known camera" msgstr "Název „%s“ neodpovídá žádnému ze známých přístrojů" #: camlibs/casio/casio-qv.c:152 #, c-format msgid "Image type %d not supported" msgstr "Typ obrazových dat %d není podporován." #: camlibs/casio/casio-qv.c:175 camlibs/konica/qm150.c:435 #, c-format msgid "Image %s is delete protected." msgstr "Snímek %s je chránÄ›n proti smazání." #: camlibs/casio/casio-qv.c:188 msgid "" "Driver framework written by Lutz Mueller .\n" "This software has QVplay's source code, written by Ken-ichi HAYASHI and Jun-ichiro \"itojun\" Itoh .\n" "Integration of QVplay by Michael Haardt ." msgstr "" "Å ablonu pro tvorbu ovladaÄů, vytvoÅ™il Lutz Müller .\n" "Obsahuje zdrojový kód z programu QVplay, který vytvoÅ™il Ken-ichi HAYASHI " " a Jun-ichiro „itojun“ Itoh .\n" "QVplay zaÄlenil Michael Haardt ." #: camlibs/casio/casio-qv.c:207 #, c-format msgid "Battery level: %.1f Volts. Revision: %08x." msgstr "Úroveň nabití akumulátoru: %1f Voltů. Revize: %08x" #: camlibs/casio/casio-qv.c:265 camlibs/dimera/dimera3500.c:838 #: camlibs/kodak/dc210/dc210.c:184 camlibs/polaroid/pdc700.c:982 #: camlibs/sierra/sierra.c:912 camlibs/sierra/sierra.c:1490 #: camlibs/sierra/sierra-desc.c:205 camlibs/topfield/puppy.c:550 msgid "Camera Configuration" msgstr "Nastavení přístroje" #: camlibs/casio/casio-qv.c:268 camlibs/konica/qm150.c:1135 #, c-format msgid "Battery" msgstr "Akumulátor" #: camlibs/casio/casio-qv.c:275 msgid "Brightness" msgstr "Jas" #: camlibs/casio/casio-qv.c:277 camlibs/casio/casio-qv.c:280 msgid "Too bright" msgstr "PříliÅ¡ svÄ›tlé" #: camlibs/casio/casio-qv.c:278 camlibs/casio/casio-qv.c:281 msgid "Too dark" msgstr "PříliÅ¡ tmavé" #: camlibs/casio/casio-qv.c:279 camlibs/casio/casio-qv.c:282 #: camlibs/kodak/dc240/library.c:574 msgid "OK" msgstr "V pořádku" #: camlibs/clicksmart310/library.c:98 #, c-format msgid "Your Logitech Clicksmart 310 has %i picture in it.\n" msgid_plural "Your Logitech Clicksmart 310 has %i pictures in it.\n" msgstr[0] "" "Váš Logitech Clicksmart 310 má ve svém datovém úložiÅ¡ti %i obrázek.\n" msgstr[1] "" "Váš Logitech Clicksmart 310 má ve svém datovém úložiÅ¡ti %i obrázky.\n" msgstr[2] "" "Váš Logitech Clicksmart 310 má ve svém datovém úložiÅ¡ti %i obrázků.\n" #: camlibs/clicksmart310/library.c:111 msgid "" "There are two resolution settings, 352x288 and 176x144. Photo data \n" "is in JPEG format when downloaded and thus has no predetermined\n" "size. Therefore, the advertised maximum number of photos the\n" "camera can hold must be understood as an approximation.\n" "All gphoto2 options will work, except for the following which\n" "the hardware will not support:\n" "\tDeletion of individual or selected photos (gphoto2 -d)\n" "\tCapture (gphoto2 --capture or --capture-image)\n" "However, capture is possible using the webcam interface,\n" "supported by the spca50x kernel module.\n" "GUI access using gtkam has been tested, and works. However,\n" "the camera does not produce separate thumbnails. Since the images\n" "are in any event already small and of low resolution, the driver\n" "merely downloads the actual images to use as thumbnails.\n" "The camera can shoot in 'video clip' mode. The resulting frames\n" "are saved here as a succession of still photos. The user can \n" "animate them using (for example) ImageMagick's 'animate' function.\n" "For more details on the camera's functions, please consult\n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" msgstr "" "Je možné nastavit dvoje rozliÅ¡ení, 352×288 a 176×144. Obrazová data\n" "jsou komprimovaná (JPEG) a proto není možné pÅ™edem odhadnout\n" "jak bude snímek velký. Údaj o poÄtu snímků, které se vejdou do pamÄ›ti\n" "pÅ™istroje, je tedy jen pÅ™ibližný.\n" "V gPhoto2 fungují vÅ¡echny volby krom tÄ›ch, které zařízení neumí:\n" "\tMazání jednotlivých Äi vybraných snímků (gphoto2 -d)\n" "\tPořízení snímku (gphoto2 --capture Äi --capture-image)\n" "Pořízení snímku je ale možné v režimu webové kamery,\n" "podporované v modulu jádra spca50x.\n" "Ovládání z grafického uživatelského rozhraní (gtkam) bylo\n" "vyzkouÅ¡eno a funguje. NicménÄ›, přístroj nepoÅ™izuje zvlášť snímky a zvlášť " "jejich náhledy.\n" "Ale protože snímky samotné mají velmi nízké rozliÅ¡ení a tím malou velikost, " "ovladaÄ je používá\n" "rovnou i jako náhledy.Přístroj umí poÅ™izovat i nÄ›kolik po sobÄ› jdoucích " "snímků (režim videoklip).\n" "Z nich je pak možné vytvoÅ™it animaci tÅ™eba pomocí funkce animovat " "(animate)\n" "programu ImageMagick.Více informací o funkcích přístroje je uvedeno v " "souboru \n" "libgphoto2/camlibs/clicksmart310/README.clicksmart310.\n" #: camlibs/clicksmart310/library.c:138 msgid "" "Logitech Clicksmart 310 driver\n" "Theodore Kilgore \n" msgstr "" "OvladaÄ pro Logitech Clicksmart 310\n" "Theodore Kilgore \n" #: camlibs/digigr8/library.c:151 msgid "" "For cameras with insides from S&Q Technologies, which have the \n" "USB Vendor ID 0x2770 and Product ID 0x905C, 0x9050, 0x9051,\n" "0x9052, or 0x913D. Photos are saved in PPM format.\n" "\n" "Some of these cameras allow software deletion of all photos.\n" "Others do not. No supported camera can do capture-image. All\n" "can do capture-preview (image captured and sent to computer).\n" "If delete-all does work for your camera, then capture-preview will\n" "have the side-effect that it also deletes what is on the camera.\n" "\n" "File uploading is not supported for these cameras. Also, none of the\n" "supported cameras allow deletion of individual photos by use of a\n" "software command.\n" msgstr "" "UrÄeno pro přístroje s Äipy od S&Q Technologies, s identifikátorem výrobce\n" "0x2770 a identifikátory výrobku 0x905C, 0x9050, 0x9051, 0x9052 a 0x913D.\n" "Snímky jsou ukládány ve formátu PPM.\n" "\n" "Jen nÄ›které z přístrojů umožňují mazání vÅ¡ech snímků naráz.\n" "PoÅ™izovat snímky je možné pouze povelem pro pořízení náhledového snímku, " "namísto kterého je\n" "pořízen snímek samotný.\n" "Pozor, na přístrojích, které umožňují smazání vÅ¡ech snímků naráz, vyvolá " "takové pořízení snímku\n" "smazání vÅ¡ech snímků uložených v přístroji! \n" "\n" "Nahrávání snímků do přístroje není možné. Taktéž není možné mazat jednotlivé " "snímky\n" "povelem z poÄítaÄe.\n" #: camlibs/digigr8/library.c:170 msgid "" "sq905C generic driver\n" "Theodore Kilgore \n" msgstr "" "Obecný ovladaÄ pro sq905C\n" "Theodore Kilgore \n" #: camlibs/digita/digita.c:337 camlibs/dimera/dimera3500.c:321 msgid "Image type is not supported" msgstr "Typ obrázku není podporován" #: camlibs/digita/digita.c:393 #, c-format msgid "Number of pictures: %d" msgstr "PoÄet obrázků: %d" #: camlibs/digita/digita.c:400 msgid "" "Digita\n" "Johannes Erdfelt " msgstr "" "Digita\n" "Johannes Erdfelt " #: camlibs/dimera/dimera3500.c:161 #, c-format msgid "" "Only root folder is supported - you requested a file listing for folder '%s'." msgstr "" "Bylo vyžádáno vypsání souborů ve složce „%s“ – toto je ale možné pouze pro " "koÅ™enovou složku." #: camlibs/dimera/dimera3500.c:169 camlibs/dimera/dimera3500.c:430 msgid "Problem getting number of images" msgstr "Vyskytl se problém pÅ™i získávání poÄtu obrázků" #: camlibs/dimera/dimera3500.c:339 camlibs/dimera/dimera3500.c:581 msgid "Problem getting image information" msgstr "Vyskytl se problém pÅ™i získávání informací o obrázku" #: camlibs/dimera/dimera3500.c:369 msgid "Capture type is not supported" msgstr "Typ zachytávání není podporován" #: camlibs/dimera/dimera3500.c:451 #, c-format msgid " (battery is %d%% full)" msgstr " (akumulátor je nabitý z %d %%)" #: camlibs/dimera/dimera3500.c:455 #, c-format msgid "" "Dimera 3500 ver. %s %d/%d %d:%d.\n" "%d pictures used of approximately %d (high res) or %d (low res).\n" "Camera features: %s, %s, %s, %s.\n" "Flash is %s, is %s and is %s.\n" "Resolution is set to %s.\n" "Camera is %s powered %s.\n" msgstr "" "Dimera 3500 Ver. %s %d/%d %d:%d.\n" "%d snímků z pÅ™ibližnÄ› %d (vysoké rozliÅ¡ení) nebo %d (nízké rozliÅ¡ení).\n" "Funkce přístroje: %s, %s, %s, %s.\n" "Blesk je %s, %s a %s.\n" "RozliÅ¡ení je nastaveno na %s.\n" "Přístroj byl %s zapnut %s.\n" #: camlibs/dimera/dimera3500.c:466 camlibs/dimera/dimera3500.c:852 #: camlibs/kodak/dc210/dc210.c:269 camlibs/kodak/dc210/dc210.c:437 #: camlibs/konica/library.c:766 camlibs/konica/library.c:1007 #: camlibs/konica/qm150.c:848 camlibs/ptp2/config.c:1409 #: camlibs/ptp2/config.c:3034 camlibs/ptp2/config.c:4031 #: camlibs/ptp2/ptp.c:4950 camlibs/ricoh/library.c:501 #: camlibs/sierra/nikon-desc.c:286 msgid "Flash" msgstr "Blesk" #: camlibs/dimera/dimera3500.c:466 camlibs/ptp2/config.c:3071 #: camlibs/ptp2/config.c:3090 msgid "No Flash" msgstr "Bez blesku" #: camlibs/dimera/dimera3500.c:468 msgid "Dual Iris" msgstr "Dvojitá clona ano" #: camlibs/dimera/dimera3500.c:468 msgid "No Dual Iris" msgstr "Dvojitá clona ne" #: camlibs/dimera/dimera3500.c:470 msgid "Resolution Switch" msgstr "PÅ™epínaÄ rozliÅ¡ení" #: camlibs/dimera/dimera3500.c:470 msgid "No Resolution Switch" msgstr "Žádný pÅ™epínaÄ rozliÅ¡ení" #: camlibs/dimera/dimera3500.c:472 msgid "No Power Light" msgstr "Žádná kontrolka napájení" #: camlibs/dimera/dimera3500.c:474 msgid "ON" msgstr "Zapnuto" #: camlibs/dimera/dimera3500.c:474 msgid "OFF" msgstr "Vypnuto" #: camlibs/dimera/dimera3500.c:476 msgid "ready" msgstr "PÅ™ipraveno" #: camlibs/dimera/dimera3500.c:476 msgid "Not ready" msgstr "NepÅ™ipraveno" #: camlibs/dimera/dimera3500.c:478 msgid "in fill mode" msgstr "je ve vyplňovacím režimu" #: camlibs/dimera/dimera3500.c:478 msgid "Not in fill mode" msgstr "Není ve vyplňovacím režimu" #: camlibs/dimera/dimera3500.c:480 msgid "low (320x240)" msgstr "nízké (320×240)" #: camlibs/dimera/dimera3500.c:480 msgid "high (640x480)" msgstr "vysoké (640×480)" #: camlibs/dimera/dimera3500.c:482 msgid "externally" msgstr "z vnÄ›jÅ¡ku" #: camlibs/dimera/dimera3500.c:482 msgid "internally" msgstr "z vnitÅ™ku" #: camlibs/dimera/dimera3500.c:492 msgid "" "* Image glitches or problems communicating are\n" " often caused by a low battery.\n" "* Images captured remotely on this camera are stored\n" " in temporary RAM and not in the flash memory card.\n" "* Exposure control when capturing images can be\n" " configured manually or set to automatic mode.\n" "* Image quality is currently lower than it could be.\n" msgstr "" "* Poruchy v obrazu Äi problémy s komunikací jsou mnohdy způsobeny vybitým " "akumulátorem.\n" "* Snímky, pořízené ovládáním z poÄítaÄe, jsou doÄasnÄ› uloženy v operaÄní " "pamÄ›ti a nikoli na\n" " paměťové kartÄ›.\n" "* ExpoziÄní hodnoty mohou být nastavovány ruÄnÄ› Äi automaticky.\n" "* Obrazová kvalita je v souÄasnosti horší, než by mÄ›la být.\n" #: camlibs/dimera/dimera3500.c:506 msgid "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "This software was created with the\n" "help of proprietary information belonging\n" "to StarDot Technologies.\n" "\n" "Author:\n" " Brian Beattie \n" "Contributors:\n" " Chuck Homic \n" " Converting raw camera images to RGB\n" " Dan Fandrich \n" " Information on protocol, raw image format,\n" " gphoto2 port\n" msgstr "" "gPhoto2 Mustek VDC-3500/Relisys Dimera 3500\n" "Tento software byl vytvoÅ™en s pomocí neveÅ™ejných informací náležejících " "spoleÄnosti\n" "StarDot Technologies.\n" "\n" "Tvůrce:\n" " Brian Beattie \n" "Podíleli se:\n" " Chuck Homic \n" " Konverze snímků RAW do RGB\n" " Dan Fandrich \n" " Informace o protokolu, formátu snímků RAW, zaÄlenÄ›ní do gphoto2\n" #: camlibs/dimera/dimera3500.c:599 msgid "Problem reading image from flash" msgstr "Vyskytl se problém s naÄítáním obrázků z paměťové karty" #: camlibs/dimera/dimera3500.c:617 camlibs/dimera/dimera3500.c:783 #: camlibs/dimera/dimera3500.c:933 msgid "Out of memory" msgstr "Nedostatek pamÄ›ti" #: camlibs/dimera/dimera3500.c:634 camlibs/dimera/dimera3500.c:670 #: camlibs/konica/qm150.c:258 camlibs/panasonic/coolshot/library.c:403 #: camlibs/ricoh/g3.c:361 camlibs/samsung/samsung.c:214 #: camlibs/sipix/web2.c:173 camlibs/smal/ultrapocket.c:139 #: camlibs/smal/ultrapocket.c:187 msgid "Downloading image..." msgstr "Probíhá stažení obrázku…" #: camlibs/dimera/dimera3500.c:656 camlibs/dimera/dimera3500.c:692 msgid "Problem downloading image" msgstr "Vyskytl se problém pÅ™i stahování obrázků" #: camlibs/dimera/dimera3500.c:664 msgid "User canceled download" msgstr "Stahování obrázku bylo pÅ™eruÅ¡eno uživatelem" #: camlibs/dimera/dimera3500.c:798 msgid "Problem taking live image" msgstr "Vyskytl se problém se zobrazováním živého náhledu" #: camlibs/dimera/dimera3500.c:840 camlibs/konica/library.c:792 #: camlibs/konica/library.c:1025 camlibs/konica/qm150.c:876 #: camlibs/ricoh/library.c:497 msgid "Exposure" msgstr "Expozice" #: camlibs/dimera/dimera3500.c:843 camlibs/dimera/dimera3500.c:880 msgid "Automatic exposure adjustment on preview" msgstr "Automatická úroveň jasu náhledu" #: camlibs/dimera/dimera3500.c:847 camlibs/dimera/dimera3500.c:872 msgid "Exposure level on preview" msgstr "Úroveň jasu pro náhledy" #: camlibs/dimera/dimera3500.c:855 camlibs/dimera/dimera3500.c:889 msgid "Automatic flash on capture" msgstr "PÅ™i pořízení snímku dle potÅ™eby odpálen blesk" #: camlibs/dimera/dimera3500.c:961 msgid "Problem opening port" msgstr "Vyskytl se problém pÅ™i otevírání portu" #: camlibs/dimera/dimera3500.c:971 msgid "Problem resetting camera" msgstr "Vyskytl se problém pÅ™i restartování přístroje " #: camlibs/dimera/dimera3500.c:981 msgid "Problem setting camera communication speed" msgstr "Vyskytl se problém pÅ™i nastavení rychlosti komunikace" #: camlibs/dimera/dimera3500.c:1000 msgid "Looks like a modem, not a camera" msgstr "Zdá se, že přístroj není urÄen pro pořízování snímků (modem?)" #: camlibs/directory/directory.c:287 #, c-format msgid "Listing files in '%s'..." msgstr "Výpis souborů v „%s“…" #: camlibs/directory/directory.c:361 #, c-format msgid "Listing folders in '%s'..." msgstr "Výpis složek v „%s“…" #: camlibs/directory/directory.c:381 #, c-format msgid "Could not get information about '%s' (%s)." msgstr "Nebylo možné získat informace o „%s“ (%s)." #: camlibs/directory/directory.c:414 #, c-format msgid "Could not get information about '%s' in '%s' (%s)." msgstr "Nebylo možné získat informace o „%s“ v „%s“ (%s)." #: camlibs/directory/directory.c:462 #, c-format msgid "Could not change time of file '%s' in '%s' (%s)." msgstr "Nebylo možné zmÄ›nit datum a Äas souboru „%s“ v „%s“ (%s)." #: camlibs/directory/directory.c:550 #, c-format msgid "Could not open '%s'." msgstr "Nelze otevřít „%s“." #: camlibs/directory/directory.c:614 msgid "" "The Directory Browse \"camera\" lets you index photos on your hard drive." msgstr "" "Režim procházení „Fotoaparát“ slouží pro indexování snímků uložených na " "poÄítaÄi." #: camlibs/directory/directory.c:623 msgid "Directory Browse Mode - written by Scott Fritzinger ." msgstr "Režim procházení složek – vytvoÅ™il Scott Fritzinger ." #: camlibs/directory/directory.c:671 #, c-format msgid "Could not delete file '%s' in folder '%s' (error code %i: %s)." msgstr "Soubor „%s“ ve složce „%s“ nelze smazat (Äíslo chyby: %i: %s)." #: camlibs/enigma13/enigma13.c:70 msgid "" "Download program for Digital Dream Enigma 1.3. by , and adapted from spca50x driver.Thanks you, spca50x team, it was easy " "to port your driver on this cam! " msgstr "" "Stahovací progroam pro přístroj Digital Dream Enigma 1.3. Na základÄ› " "ovladaÄe pro spca50x vytvoÅ™il . PodÄ›kování " "tvůrcům spca50x – upravit ovladaÄ pro tento přístroj bylo snadné!" #: camlibs/fuji/fuji.c:86 #, c-format msgid "The camera sent only %i byte(s), but we need at least %i." msgstr "Přístroj poslal pouze %i bajtů, ale potÅ™eba je pÅ™inejmenším %i." #: camlibs/fuji/fuji.c:129 camlibs/ricoh/library.c:560 msgid "Could not contact camera." msgstr "Spojení s přístrojem se nezdaÅ™ilo." #: camlibs/fuji/fuji.c:191 #, c-format msgid "Received unexpected data (0x%02x, 0x%02x)." msgstr "Obdržena neoÄekávaná data (0x%02x, 0x%02x)." #: camlibs/fuji/fuji.c:217 #, c-format msgid "Wrong escape sequence: expected 0x%02x, got 0x%02x." msgstr "Chybná řídící sekvence: oÄekáváno 0x%02x, obdrženo 0x%02x." #: camlibs/fuji/fuji.c:234 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x." msgstr "Å patná data – obdrženo 0x%02x, oÄekáváno 0x%02x." #: camlibs/fuji/fuji.c:247 #, c-format msgid "Bad data - got 0x%02x, expected 0x%02x or 0x%02x." msgstr "Å patná data – obdrženo 0x%02x, oÄekáváno 0x%02x nebo 0x%02x." #: camlibs/fuji/fuji.c:254 #, c-format msgid "Bad checksum - got 0x%02x, expected 0x%02x." msgstr "Å patný kontrolní souÄet – obdrženo 0x%02x, oÄekáváno 0x%02x." #: camlibs/fuji/fuji.c:292 camlibs/fuji/fuji.c:731 msgid "Camera rejected the command." msgstr "Přístroj tento povel odmítl." #: camlibs/fuji/fuji.c:301 camlibs/fuji/fuji.c:740 msgid "Camera reset itself." msgstr "Přístroj se sám restartoval." #: camlibs/fuji/fuji.c:305 camlibs/fuji/fuji.c:745 #, c-format msgid "Camera sent unexpected byte 0x%02x." msgstr "Přístroj poslal neoÄekávaný bajt 0x%02x." #: camlibs/fuji/fuji.c:320 camlibs/konica/lowlevel.c:382 #: camlibs/polaroid/pdc700.c:316 camlibs/ricoh/g3.c:355 msgid "Downloading..." msgstr "Probíhá stahování…" #: camlibs/fuji/fuji.c:541 #, c-format msgid "Could not allocate %i byte(s) for downloading the thumbnail." msgstr "NezdaÅ™ila se rezervace %i bajtů pro stažení náhledu." #: camlibs/fuji/fuji.c:575 #, c-format msgid "Could not allocate %i byte(s) for downloading the picture." msgstr "NezdaÅ™ila se rezervace %i bajtů pro stažení snímku." #: camlibs/fuji/fuji.c:674 #, c-format msgid "The camera does not accept '%s' as filename." msgstr "Přístroj odmítá soubor pojmenovaný „%s“." #: camlibs/fuji/fuji.c:678 #, c-format msgid "Could not initialize upload (camera responded with 0x%02x)." msgstr "NepodaÅ™ilo se zahájit nahrávání (přístroj odpovÄ›dÄ›l s 0x%02x)." #: camlibs/fuji/fuji.c:776 #, c-format msgid "The camera does not support speed %i." msgstr "Přístroj neumí komunikovat rychlostí %i." #: camlibs/fuji/fuji.c:780 #, c-format msgid "Could not set speed to %i (camera responded with %i)." msgstr "" "NepodaÅ™ilo se nastavit rychlost komunikace na %i (přístroj odpovÄ›dÄ›l s %i)." #: camlibs/fuji/library.c:155 msgid "" "Matthew G. Martin\n" "Based on fujiplay by Thierry Bousch \n" msgstr "" "Matthew G. Martin\n" "Odvozeno od programu fujiplay, jehož tvůrcem je\n" "Thierry Bousch \n" #: camlibs/fuji/library.c:319 #, c-format msgid "Bit rate %ld is not supported." msgstr "Rychlost pÅ™enosu dat %ld není podporována." #: camlibs/fuji/library.c:367 msgid "Configuration for your FUJI camera" msgstr "Nastavení přístroje FUJI" #: camlibs/fuji/library.c:372 camlibs/fuji/library.c:405 #: camlibs/ptp2/ptp.c:4120 camlibs/ricoh/library.c:446 #: camlibs/ricoh/library.c:448 camlibs/sierra/sierra.c:1718 #: camlibs/sierra/sierra.c:1891 msgid "Date & Time" msgstr "Datum a Äas" #: camlibs/fuji/library.c:387 camlibs/fuji/library.c:420 #: camlibs/ptp2/config.c:6082 msgid "ID" msgstr "Identifikátor" #: camlibs/fuji/library.c:440 msgid "Version: " msgstr "Verze: " #: camlibs/fuji/library.c:446 msgid "Model: " msgstr "Model: " #: camlibs/fuji/library.c:453 msgid "Available memory: " msgstr "Množství­ pamÄ›ti k dispozici: " #: camlibs/gsmart300/library.c:166 msgid "" "gsmart300 library \n" "Till Adam \n" "Jerome Lodewyck \n" "Support for Mustek gSmart 300 digital cameras\n" "based on several other gphoto2 camlib modules and the specifications kindly " "provided by Mustek.\n" "\n" msgstr "" "Knihovna pro gsmart300\n" "Till Adam \n" "Jerome Lodewyck \n" "Podpora pro zařízení Mustek gSmart 300, odvozeno od nÄ›kolika dalších\n" "modulů (knihoven) v gphoto2 a dokumentace ochotnÄ› poskytnuté spoleÄností " "Mustek.\n" #: camlibs/gsmart300/library.c:210 camlibs/spca50x/library.c:566 #, c-format msgid "Unsupported port type: %d. This driver only works with USB cameras.\n" msgstr "" "Nepodporovaný typ portu: %d. Tento ovladaÄ podporuje pouze USB zařízení.\n" #: camlibs/gsmart300/library.c:227 camlibs/spca50x/library.c:624 msgid "Could not reset camera.\n" msgstr "Přístroj nebylo možné restartovat.\n" #: camlibs/gsmart300/library.c:335 camlibs/spca50x/library.c:504 #, c-format msgid "" "Your camera only supports deleting the last file on the camera. In this " "case, this is file '%s'." msgstr "" "Tento přístroj umožňuje smazat vždy pouze poslední z uložených snímků. Což " "je momentálnÄ› soubor „%s“." #: camlibs/hp215/hp215.c:456 #, c-format msgid "" "Current camera time: %04d-%02d-%02d %02d:%02d\n" "Free card memory: %d\n" "Images on card: %d\n" "Free space (Images): %d\n" "Battery level: %d %%." msgstr "" "Datum a Äas na přístroji: %04d-%02d-%02d %02d:%02d\n" "Volná kapacita paměť. karty: %d\n" "Snímků na paměťové kartÄ›: %d\n" "PoÄet snímků, které je jeÅ¡tÄ› možné pořídit: %d\n" "Stav akumulátoru: %d %%" #: camlibs/hp215/hp215.c:480 msgid "" "hp215\n" "Marcus Meissner \n" "Driver to access the HP Photosmart 215 camera.\n" "Merged from the standalone hp215 program.\n" "This driver allows download of images and previews, and deletion of images.\n" msgstr "" "hp215\n" "Marcus Meissner \n" "OvladaÄ pro komunikaci s přístrojem HP Photosmart 215.\n" "Vzniklo zaÄlenÄ›ním samostatného programu hp215.\n" "OvladaÄ umožňuje stahovat snímky a náhledy a také je z přístroje mazat.\n" #: camlibs/iclick/library.c:104 #, c-format msgid "" "Your USB camera is an iClick 5X.\n" "The total number of pictures taken is %i\n" msgstr "" "Přístroj, pÅ™ipojený pÅ™es USB, je iClick 5X.\n" "Celkový poÄet pořízených snímků je %i\n" #: camlibs/iclick/library.c:116 msgid "" "Information regarding cameras with ID 0x2770:0x9153.\n" "\n" "We do not recommend the use of a GUI program to access\n" "this camera, unless you are just having fun or trying to\n" "see if you can blow a fuse.\n" "For production use, try\n" "gphoto2 -P\n" "from the command line.\n" "Note: it is not possible to download video clips.\n" msgstr "" "Informace týkající se přístrojů s identifikací 0x2770:0x9153.\n" "\n" "Pro práci s tímto přístrojem nedoporuÄujeme používat grafické uživatelské " "rozhraní.\n" "Namísto toho používejte příkaz „gphoto2 -P“.\n" "Stahování videozáznamu není možné.\n" #: camlibs/iclick/library.c:134 msgid "" "iClick 5X driver\n" "Theodore Kilgore \n" msgstr "" "OvladaÄ pro iClick 5X\n" "Theodore Kilgore \n" #: camlibs/jamcam/jamcam.c:277 #, c-format msgid "Frames Taken : %4d\n" msgstr "Pořízeno snímků: %4d\n" #: camlibs/jamcam/jamcam.c:288 msgid "jamcam library v" msgstr "knihovna jamcam v" #: camlibs/jamcam/library.c:341 camlibs/jd11/serial.c:474 #: camlibs/sierra/library.c:1255 camlibs/sonydscf1/sonydscf1.c:270 msgid "Downloading data..." msgstr "Probíhá stahování dat…" #: camlibs/jamcam/library.c:501 camlibs/jd11/serial.c:378 msgid "Downloading thumbnail..." msgstr "Probíhá stahování náhledu…" #: camlibs/jd11/jd11.c:160 msgid "" "The JD11 camera works rather well with this driver.\n" "An RS232 interface @ 115 kbit is required for image transfer.\n" "The driver allows you to get\n" "\n" " - thumbnails (64x48 PGM format)\n" " - full images (640x480 PPM format)\n" msgstr "" "Přístroj JD11 s tímto ovladaÄem funguje dosti dobÅ™e.\n" "Pro pÅ™enos snímků je tÅ™eba rozhraní RS232 (sériové) s rychlostí 115kbit.\n" "OvladaÄ umožňuje získávat\n" "\n" " - náhledy (64×48 pixelů ve formátu PGM)\n" " - snímky (640×480 pixelů ve formátu PPM)\n" #: camlibs/jd11/jd11.c:173 msgid "" "JD11\n" "Marcus Meissner \n" "Driver for the Jenoptik JD11 camera.\n" "Protocol reverse engineered using WINE and IDA." msgstr "" "JD11\n" "Marcus Meissner \n" "OvladaÄ pro přístroj Jenoptik JD11.\n" "KomunikaÄní protokol byl prozkoumán s použitím aplikací WINE a IDA." #: camlibs/jd11/jd11.c:186 msgid "JD11 Configuration" msgstr "Nastavení JD11" #: camlibs/jd11/jd11.c:189 camlibs/jd11/jd11.c:246 msgid "Other Settings" msgstr "Ostatní­ nastavení" #: camlibs/jd11/jd11.c:194 camlibs/jd11/jd11.c:247 msgid "Bulb Exposure Time" msgstr "Exponování po dobu stisku spouÅ¡tÄ›" #: camlibs/jd11/jd11.c:203 camlibs/jd11/jd11.c:255 msgid "Color Settings" msgstr "Nastavení barev" #: camlibs/jd11/jd11.c:210 camlibs/jd11/jd11.c:257 msgid "Red" msgstr "ÄŒervená" #: camlibs/jd11/jd11.c:218 camlibs/jd11/jd11.c:262 camlibs/ptp2/config.c:1774 msgid "Green" msgstr "Zelená" #: camlibs/jd11/jd11.c:226 camlibs/jd11/jd11.c:267 msgid "Blue" msgstr "Modrá" #: camlibs/jl2005a/library.c:105 #, c-format msgid "" "This camera contains a Jeilin JL2005A chipset.\n" "The number of photos in it is %i. \n" msgstr "" "VaÅ¡e USB zařízení je postaveno na\n" "Äipu Jeilin JL2005A Chipsatz.\n" "Aktuální poÄet obrázků na nÄ›m je %i.\n" #: camlibs/jl2005a/library.c:115 msgid "" "This driver supports cameras with Jeilin jl2005a chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.jl2005a\n" msgstr "" "Tento ovladaÄ je urÄen pro přístroje s Äipem Jeilin jl2005a.\n" "Tyto přístroje neumožňují mazání snímků ani nahrávání dat.\n" "NaÄítání komprimovaných snímků může a nemusí fungovat – dle konkrétního " "přístroje.\n" "Videozáznamy jsou stahovány jako posloupnost snímků.\n" "Více podrobností je uvedeno v souboru libgphoto2/camlibs/jl2005c/README." "jl2005a\n" #: camlibs/jl2005a/library.c:132 msgid "" "jl2005a camera library\n" "Theodore Kilgore \n" msgstr "" "OvladaÄ pro zařízení jl2005a\n" "Theodore Kilgore \n" #: camlibs/jl2005c/library.c:135 #, c-format msgid "" "This camera contains a Jeilin JL2005%c chipset.\n" "The number of photos in it is %i. \n" msgstr "" "Tento přístroj obsahje Äip JL2005%c.\n" "PoÄet uložených snímků je %i.\n" #: camlibs/jl2005c/library.c:146 msgid "" "This driver supports cameras with Jeilin JL2005B or C or D chip \n" "These cameras do not support deletion of photos, nor uploading\n" "of data. \n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For more details please consult libgphoto2/camlibs/README.jl2005c\n" msgstr "" "Tento ovladaÄ je urÄen pro přístroje s Äipem Jeilin jl2005B/C/D.\n" "Tyto přístroje neumožňují mazání snímků ani nahrávání dat.\n" "Videozáznamy jsou stahovány jako posloupnost snímků.\n" "Více podrobností je uvedeno v souboru libgphoto2/camlibs/jl2005c/README." "jl2005c\n" #: camlibs/jl2005c/library.c:161 msgid "" "jl2005bcd camera library\n" "Theodore Kilgore \n" msgstr "" "OvladaÄ pro přístroj jl2005bcd\n" "Theodore Kilgore \n" #: camlibs/kodak/dc120/dc120.c:92 camlibs/kodak/dc120/dc120.c:168 msgid "CompactFlash Card" msgstr "Karta CompactFlash" #: camlibs/kodak/dc120/dc120.c:383 msgid "" "The Kodak DC120 camera uses the KDC file format for storing images. If you " "want to view the images you download from your camera, you will need to " "download the \"kdc2tiff\" program. It is available from http://kdc2tiff." "sourceforge.net" msgstr "" "Přístroj Kodak DC120 používá pro ukládání snímků formát KDC. Pro další práci " "se snímky staženými z přístroje budete potÅ™ebovat pÅ™evodní program " "„kdc2tiff“ (http://kdc2tiff.sourceforge.net)." #: camlibs/kodak/dc120/dc120.c:395 msgid "" "Kodak DC120 Camera Library\n" "Scott Fritzinger \n" "Camera Library for the Kodak DC120 camera.\n" "(by popular demand)." msgstr "" "Knihovna pro přístroj Kodak DC120\n" "Scott Fritzinger \n" "(na popud Äetných přání)." #: camlibs/kodak/dc120/library.c:150 camlibs/kodak/dc210/library.c:456 #: camlibs/kodak/dc240/library.c:327 camlibs/panasonic/dc1000.c:420 #: camlibs/panasonic/dc1580.c:544 msgid "Getting data..." msgstr "Získávají se data…" #: camlibs/kodak/dc120/library.c:552 msgid "Waiting for completion..." msgstr "ÄŒeká se na dokonÄení…" #: camlibs/kodak/dc210/dc210.c:186 msgid "File" msgstr "Soubor" #: camlibs/kodak/dc210/dc210.c:189 camlibs/kodak/dc210/dc210.c:358 msgid "File type" msgstr "Typ souboru" #: camlibs/kodak/dc210/dc210.c:191 camlibs/kodak/dc210/dc210.c:196 #: camlibs/ptp2/config.c:1746 camlibs/ptp2/ptp.c:5327 msgid "JPEG" msgstr "JPEG" #: camlibs/kodak/dc210/dc210.c:192 camlibs/kodak/dc210/dc210.c:198 msgid "FlashPix" msgstr "FlashPix (.fpx)" #: camlibs/kodak/dc210/dc210.c:202 camlibs/kodak/dc210/dc210.c:367 msgid "File resolution" msgstr "RozliÅ¡ení obrázku" #: camlibs/kodak/dc210/dc210.c:204 camlibs/kodak/dc210/dc210.c:209 #: camlibs/ricoh/library.c:318 msgid "640 x 480" msgstr "640 × 480" #: camlibs/kodak/dc210/dc210.c:205 camlibs/kodak/dc210/dc210.c:211 msgid "1152 x 864" msgstr "1152 × 864" #: camlibs/kodak/dc210/dc210.c:217 camlibs/kodak/dc210/dc210.c:380 msgid "File compression" msgstr "Komprimace dat" #: camlibs/kodak/dc210/dc210.c:219 camlibs/kodak/dc210/dc210.c:225 msgid "Low (best quality)" msgstr "mírná (nejlepší obrazová kvalita)" #: camlibs/kodak/dc210/dc210.c:220 camlibs/kodak/dc210/dc210.c:227 msgid "Medium (better quality)" msgstr "stÅ™ední (lepší obrazová kvalita)" #: camlibs/kodak/dc210/dc210.c:221 camlibs/kodak/dc210/dc210.c:229 msgid "High (good quality)" msgstr "vysoká (dobrá obrazová kvalita)" #: camlibs/kodak/dc210/dc210.c:233 camlibs/konica/qm150.c:1047 #: camlibs/ptp2/config.c:6624 msgid "Capture" msgstr "Pořídit snímek" #: camlibs/kodak/dc210/dc210.c:247 msgid "58 mm" msgstr "58 mm" #: camlibs/kodak/dc210/dc210.c:249 msgid "51 mm" msgstr "51 mm" #: camlibs/kodak/dc210/dc210.c:251 msgid "41 mm" msgstr "41 mm" #: camlibs/kodak/dc210/dc210.c:253 msgid "34 mm" msgstr "34 mm" #: camlibs/kodak/dc210/dc210.c:255 msgid "29 mm" msgstr "29 mm" #: camlibs/kodak/dc210/dc210.c:261 camlibs/kodak/dc210/dc210.c:420 msgid "Exposure compensation" msgstr "Kompenzace hodnot z expozimetru" #: camlibs/kodak/dc210/dc210.c:271 camlibs/kodak/dc210/dc210.c:277 #: camlibs/konica/library.c:771 camlibs/konica/library.c:787 #: camlibs/konica/library.c:802 camlibs/konica/library.c:805 #: camlibs/konica/library.c:1016 camlibs/konica/library.c:1046 #: camlibs/konica/qm150.c:853 camlibs/konica/qm150.c:871 #: camlibs/konica/qm150.c:940 camlibs/konica/qm150.c:943 #: camlibs/konica/qm150.c:961 camlibs/konica/qm150.c:964 #: camlibs/konica/qm150.c:979 camlibs/konica/qm150.c:982 #: camlibs/konica/qm150.c:999 camlibs/konica/qm150.c:1002 #: camlibs/ptp2/config.c:1752 camlibs/ptp2/config.c:1946 #: camlibs/ptp2/config.c:2229 camlibs/ptp2/config.c:2860 #: camlibs/ptp2/config.c:3030 camlibs/ptp2/config.c:3045 #: camlibs/ptp2/config.c:3053 camlibs/ptp2/config.c:3066 #: camlibs/ptp2/config.c:3085 camlibs/ptp2/config.c:3160 #: camlibs/ptp2/config.c:3272 camlibs/ptp2/config.c:3785 #: camlibs/ptp2/config.c:3933 camlibs/ptp2/config.c:3944 #: camlibs/ptp2/config.c:3956 camlibs/ptp2/config.c:4007 #: camlibs/ptp2/config.c:4026 camlibs/ptp2/config.c:4236 #: camlibs/ptp2/config.c:4526 camlibs/ptp2/ptp.c:4972 camlibs/ptp2/ptp.c:4980 #: camlibs/ptp2/ptp.c:5003 camlibs/ptp2/ptp.c:5011 camlibs/ptp2/ptp.c:5214 #: camlibs/ptp2/ptp.c:5265 camlibs/ptp2/ptp.c:5341 camlibs/ptp2/ptp.c:5348 #: camlibs/ptp2/ptp.c:5358 camlibs/ptp2/ptp.c:5395 camlibs/ptp2/ptp.c:5412 #: camlibs/ptp2/ptp.c:5466 camlibs/ricoh/library.c:311 #: camlibs/ricoh/library.c:326 camlibs/ricoh/library.c:367 #: camlibs/sierra/epson-desc.c:151 camlibs/sierra/epson-desc.c:169 #: camlibs/sierra/nikon-desc.c:168 camlibs/sierra/nikon-desc.c:202 #: camlibs/sierra/nikon-desc.c:234 camlibs/sierra/nikon-desc.c:252 #: camlibs/sierra/nikon-desc.c:282 camlibs/sierra/olympus-desc.c:196 #: camlibs/sierra/olympus-desc.c:235 camlibs/sierra/olympus-desc.c:289 #: camlibs/sierra/olympus-desc.c:371 camlibs/sierra/olympus-desc.c:403 #: camlibs/sierra/olympus-desc.c:433 camlibs/sierra/olympus-desc.c:457 #: camlibs/sierra/olympus-desc.c:498 camlibs/sierra/olympus-desc.c:515 #: camlibs/sierra/olympus-desc.c:534 camlibs/sierra/olympus-desc.c:555 #: camlibs/sierra/olympus-desc.c:574 camlibs/sierra/olympus-desc.c:593 #: camlibs/sierra/olympus-desc.c:614 camlibs/sierra/olympus-desc.c:638 #: camlibs/sierra/olympus-desc.c:873 camlibs/sierra/olympus-desc.c:890 #: camlibs/sierra/sierra.c:923 camlibs/sierra/sierra.c:929 #: camlibs/sierra/sierra.c:963 camlibs/sierra/sierra.c:969 #: camlibs/sierra/sierra.c:1023 camlibs/sierra/sierra.c:1030 #: camlibs/sierra/sierra.c:1084 camlibs/sierra/sierra.c:1091 #: camlibs/sierra/sierra.c:1258 camlibs/sierra/sierra.c:1287 #: camlibs/sierra/sierra.c:1327 camlibs/sierra/sierra.c:1370 #: camlibs/sierra/sierra.c:1533 camlibs/sierra/sierra.c:1539 #: camlibs/sierra/sierra.c:1561 camlibs/sierra/sierra.c:1566 #: camlibs/sierra/sierra.c:1766 camlibs/sierra/sierra.c:1786 #: camlibs/st2205/library.c:511 camlibs/st2205/library.c:524 msgid "Auto" msgstr "Automatické" #: camlibs/kodak/dc210/dc210.c:272 camlibs/kodak/dc210/dc210.c:279 #: camlibs/sierra/epson-desc.c:152 camlibs/sierra/nikon-desc.c:235 #: camlibs/sierra/olympus-desc.c:499 camlibs/sierra/olympus-desc.c:516 #: camlibs/sierra/olympus-desc.c:535 camlibs/sierra/sierra.c:1024 #: camlibs/sierra/sierra.c:1032 camlibs/sierra/sierra.c:1329 #: camlibs/sierra/sierra.c:1534 camlibs/sierra/sierra.c:1541 #: camlibs/sierra/sierra.c:1768 msgid "Force" msgstr "Vynucené" #: camlibs/kodak/dc210/dc210.c:273 camlibs/kodak/dc210/dc210.c:281 #: camlibs/ptp2/config.c:2100 camlibs/ptp2/config.c:3939 #: camlibs/ptp2/config.c:3997 camlibs/ptp2/config.c:5147 #: camlibs/ptp2/config.c:5160 camlibs/ptp2/config.c:5184 #: camlibs/ptp2/config.c:5264 camlibs/ptp2/config.c:5269 #: camlibs/ptp2/config.c:5283 camlibs/ptp2/config.c:6169 #: camlibs/ptp2/config.c:6470 camlibs/ptp2/config.c:6480 #: camlibs/ptp2/config.c:6490 camlibs/ptp2/config.c:6500 #: camlibs/ptp2/config.c:6510 camlibs/ptp2/library.c:5019 #: camlibs/ptp2/library.c:5023 camlibs/ptp2/ptp.c:5009 #: camlibs/ricoh/library.c:346 msgid "None" msgstr "Žádné" #: camlibs/kodak/dc210/dc210.c:285 camlibs/kodak/dc210/dc210.c:438 msgid "Red eye flash" msgstr "Blesk – omezení jevu Äervených oÄí" #: camlibs/kodak/dc210/dc210.c:287 camlibs/kodak/dc210/dc210.c:291 #: camlibs/konica/library.c:670 camlibs/konica/library.c:677 #: camlibs/konica/library.c:769 camlibs/konica/library.c:778 #: camlibs/konica/library.c:1012 camlibs/konica/qm150.c:791 #: camlibs/konica/qm150.c:795 camlibs/konica/qm150.c:805 #: camlibs/konica/qm150.c:809 camlibs/konica/qm150.c:851 #: camlibs/konica/qm150.c:864 camlibs/konica/qm150.c:1021 #: camlibs/konica/qm150.c:1028 camlibs/konica/qm150.c:1035 #: camlibs/konica/qm150.c:1042 camlibs/ptp2/config.c:1254 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1265 #: camlibs/ptp2/config.c:1284 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1295 camlibs/ptp2/config.c:1526 #: camlibs/ptp2/config.c:1532 camlibs/ptp2/config.c:1539 #: camlibs/ptp2/config.c:3787 camlibs/ptp2/config.c:4615 #: camlibs/ptp2/config.c:4806 camlibs/ptp2/config.c:5228 #: camlibs/ptp2/config.c:5231 camlibs/ptp2/config.c:5249 #: camlibs/ptp2/config.c:5972 camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 #: camlibs/ptp2/ptp.c:4891 camlibs/ptp2/ptp.c:5216 camlibs/ptp2/ptp.c:5342 #: camlibs/ptp2/ptp.c:5428 camlibs/ricoh/library.c:338 #: camlibs/ricoh/library.c:369 camlibs/sierra/nikon-desc.c:305 #: camlibs/sierra/sierra.c:1140 camlibs/sierra/sierra.c:1146 #: camlibs/sierra/sierra.c:1409 camlibs/topfield/puppy.c:559 #: camlibs/topfield/puppy.c:571 camlibs/topfield/puppy.c:593 msgid "On" msgstr "Zapnuto" #: camlibs/kodak/dc210/dc210.c:288 camlibs/kodak/dc210/dc210.c:293 #: camlibs/kodak/dc210/dc210.c:453 camlibs/konica/library.c:671 #: camlibs/konica/library.c:674 camlibs/konica/library.c:768 #: camlibs/konica/library.c:775 camlibs/konica/library.c:886 #: camlibs/konica/library.c:1010 camlibs/konica/qm150.c:792 #: camlibs/konica/qm150.c:798 camlibs/konica/qm150.c:806 #: camlibs/konica/qm150.c:812 camlibs/konica/qm150.c:850 #: camlibs/konica/qm150.c:857 camlibs/konica/qm150.c:1022 #: camlibs/konica/qm150.c:1025 camlibs/konica/qm150.c:1036 #: camlibs/konica/qm150.c:1039 camlibs/ptp2/config.c:1255 #: camlibs/ptp2/config.c:1256 camlibs/ptp2/config.c:1269 #: camlibs/ptp2/config.c:1285 camlibs/ptp2/config.c:1286 #: camlibs/ptp2/config.c:1299 camlibs/ptp2/config.c:1527 #: camlibs/ptp2/config.c:1533 camlibs/ptp2/config.c:1538 #: camlibs/ptp2/config.c:1835 camlibs/ptp2/config.c:1896 #: camlibs/ptp2/config.c:2087 camlibs/ptp2/config.c:2117 #: camlibs/ptp2/config.c:2143 camlibs/ptp2/config.c:2169 #: camlibs/ptp2/config.c:3786 camlibs/ptp2/config.c:4115 #: camlibs/ptp2/config.c:4226 camlibs/ptp2/config.c:4525 #: camlibs/ptp2/config.c:4607 camlibs/ptp2/config.c:4616 #: camlibs/ptp2/config.c:4698 camlibs/ptp2/config.c:4805 #: camlibs/ptp2/config.c:5227 camlibs/ptp2/config.c:5230 #: camlibs/ptp2/config.c:5248 camlibs/ptp2/config.c:5973 #: camlibs/ptp2/ptp.c:4889 camlibs/ptp2/ptp.c:4890 camlibs/ptp2/ptp.c:4891 #: camlibs/ptp2/ptp.c:5215 camlibs/ptp2/ptp.c:5340 camlibs/ptp2/ptp.c:5380 #: camlibs/ptp2/ptp.c:5426 camlibs/ptp2/ptp.c:5491 camlibs/ptp2/ptp.c:5496 #: camlibs/ricoh/library.c:339 camlibs/ricoh/library.c:368 #: camlibs/ricoh/library.c:376 camlibs/sierra/epson-desc.c:153 #: camlibs/sierra/nikon-desc.c:236 camlibs/sierra/nikon-desc.c:304 #: camlibs/sierra/nikon-desc.c:359 camlibs/sierra/olympus-desc.c:500 #: camlibs/sierra/olympus-desc.c:517 camlibs/sierra/olympus-desc.c:536 #: camlibs/sierra/olympus-desc.c:658 camlibs/sierra/olympus-desc.c:856 #: camlibs/sierra/olympus-desc.c:940 camlibs/sierra/sierra.c:1025 #: camlibs/sierra/sierra.c:1034 camlibs/sierra/sierra.c:1141 #: camlibs/sierra/sierra.c:1144 camlibs/sierra/sierra.c:1331 #: camlibs/sierra/sierra.c:1411 camlibs/sierra/sierra.c:1535 #: camlibs/sierra/sierra.c:1543 camlibs/sierra/sierra.c:1770 #: camlibs/topfield/puppy.c:560 camlibs/topfield/puppy.c:571 msgid "Off" msgstr "Vypnuto" #: camlibs/kodak/dc210/dc210.c:296 msgid "Other" msgstr "Jiné" #: camlibs/kodak/dc210/dc210.c:302 msgid "Set clock in camera" msgstr "Nastavení Äasu na přístroji" #: camlibs/kodak/dc210/dc210.c:306 camlibs/kodak/dc210/dc210.c:431 msgid "Port speed" msgstr "Rychlost rozhraní" #: camlibs/kodak/dc210/dc210.c:316 camlibs/kodak/dc210/library.c:712 msgid "Album name" msgstr "Název alba" #: camlibs/kodak/dc210/dc210.c:319 msgid "Name to set on card when formatting." msgstr "Název, který se má pÅ™iÅ™adit paměťové kartÄ› po naformátování" #: camlibs/kodak/dc210/dc210.c:321 msgid "Format compact flash" msgstr "Formátovat paměťovou kartu (CompactFlash) pro data" #: camlibs/kodak/dc210/dc210.c:324 msgid "Format card and set album name." msgstr "Formátovat paměťovou kartu pro data a nastavit název alba." #: camlibs/kodak/dc210/dc210.c:327 msgid "Debug" msgstr "Režim ladÄ›ní" #: camlibs/kodak/dc210/dc210.c:345 msgid "" "Execute predefined command\n" "with parameter values." msgstr "" "Vykonat pÅ™edefinované povely\n" "s hodnotami parametrů." #: camlibs/kodak/dc210/dc210.c:498 #, c-format msgid "Pictures in camera: %d\n" msgstr "Obrázků v přístroji: %d\n" #: camlibs/kodak/dc210/dc210.c:502 #, c-format msgid "" "There is space for another\n" " %d low compressed\n" " %d medium compressed or\n" " %d high compressed pictures\n" msgstr "" "Zbývá jeÅ¡tÄ› prostor pro dalších:\n" " %d mírnÄ›,\n" " %d stÅ™ednÄ› nebo\n" " %d vysoce komprimovaných obrázků\n" #: camlibs/kodak/dc210/dc210.c:506 #, c-format msgid "Total pictures taken: %d\n" msgstr "CelkovÄ› pořízeno snímků: %d\n" #: camlibs/kodak/dc210/dc210.c:510 #, c-format msgid "Total flashes fired: %d\n" msgstr "CelkovÄ› vysláno záblesků: %d\n" #: camlibs/kodak/dc210/dc210.c:514 #, c-format msgid "Firmware: %d.%d\n" msgstr "Firmware: %d.%d\n" #: camlibs/kodak/dc210/dc210.c:519 #, c-format msgid "Filetype: JPEG (" msgstr "typ souboru: JPEG (" #: camlibs/kodak/dc210/dc210.c:521 #, c-format msgid "Filetype: FlashPix (" msgstr "typ souboru: FlashPix (" #: camlibs/kodak/dc210/dc210.c:527 #, c-format msgid "low compression, " msgstr "mírná komprimace," #: camlibs/kodak/dc210/dc210.c:529 #, c-format msgid "medium compression, " msgstr "stÅ™ední komprimace, " #: camlibs/kodak/dc210/dc210.c:531 #, c-format msgid "high compression, " msgstr "vysoká komprimace, " #: camlibs/kodak/dc210/dc210.c:533 #, c-format msgid "unknown compression %d, " msgstr "neznámé rozliÅ¡ení %d, " #: camlibs/kodak/dc210/dc210.c:543 #, c-format msgid "unknown resolution %d)\n" msgstr "neznámé rozliÅ¡ení %d)\n" #: camlibs/kodak/dc210/dc210.c:556 #, c-format msgid "AC adapter is connected.\n" msgstr "Síťový napájecí zdroj je pÅ™ipojen.\n" #: camlibs/kodak/dc210/dc210.c:558 #, c-format msgid "AC adapter is not connected.\n" msgstr "Síťový napájecí zdroj není pÅ™ipojen.\n" #: camlibs/kodak/dc210/dc210.c:562 msgid "Time: %a, %d %b %Y %T\n" msgstr "ÄŒas: %a, %d. %b %Y %T\n" #: camlibs/kodak/dc210/dc210.c:568 #, c-format msgid "Zoom: 58 mm\n" msgstr "PÅ™iblížení: 58 mm\n" #: camlibs/kodak/dc210/dc210.c:570 #, c-format msgid "Zoom: 51 mm\n" msgstr "PÅ™iblížení: 51 mm\n" #: camlibs/kodak/dc210/dc210.c:572 #, c-format msgid "Zoom: 41 mm\n" msgstr "PÅ™iblížení: 41 mm\n" #: camlibs/kodak/dc210/dc210.c:574 #, c-format msgid "Zoom: 34 mm\n" msgstr "PÅ™iblížení: 34 mm\n" #: camlibs/kodak/dc210/dc210.c:576 #, c-format msgid "Zoom: 29 mm\n" msgstr "PÅ™iblížení: 29 mm\n" #: camlibs/kodak/dc210/dc210.c:578 #, c-format msgid "Zoom: macro\n" msgstr "PÅ™iblížení: makro\n" #: camlibs/kodak/dc210/dc210.c:580 #, c-format msgid "Unknown zoom mode %d\n" msgstr "Neznámý režim pÅ™iblížení %d\n" #: camlibs/kodak/dc210/dc210.c:586 #, c-format msgid "Exposure compensation: %s\n" msgstr "Kompenzace expozice: %s\n" #: camlibs/kodak/dc210/dc210.c:588 #, c-format msgid "Exposure compensation: %d\n" msgstr "Kompenzace expozice: %d\n" #: camlibs/kodak/dc210/dc210.c:593 #, c-format msgid "Flash mode: auto, " msgstr "Režim blesku: odpálit dle potÅ™eby," #: camlibs/kodak/dc210/dc210.c:595 #, c-format msgid "Flash mode: force, " msgstr "Režim blesku: odpálit vždy," #: camlibs/kodak/dc210/dc210.c:597 #, c-format msgid "Flash mode: off\n" msgstr "Režim blesku: vypnuto\n" #: camlibs/kodak/dc210/dc210.c:599 #, c-format msgid "Unknown flash mode %d, " msgstr "Neznámý režim blesku %d," #: camlibs/kodak/dc210/dc210.c:607 #, c-format msgid "red eye flash on.\n" msgstr "zmírnÄ›ní jevu Äervených oÄí zapnuto.\n" #: camlibs/kodak/dc210/dc210.c:610 #, c-format msgid "red eye flash off.\n" msgstr "zmírnÄ›ní jevu Äervených oÄí vypnuto.\n" #: camlibs/kodak/dc210/dc210.c:615 #, c-format msgid "No card in camera.\n" msgstr "V přístroji není vložena paměťová karta.\n" #: camlibs/kodak/dc210/dc210.c:617 #, c-format msgid "" "Card name: %s\n" "Free space on card: %d kB\n" msgstr "" "Název paměťové karty: %s\n" "Volné místo na kartÄ›: %d kB\n" #: camlibs/kodak/dc210/dc210.c:637 msgid "" "This library has been tested with a Kodak DC 215 Zoom camera. It might work " "also with DC 200 and DC 210 cameras. If you happen to have such a camera, " "please send a message to koltan@gmx.de to let me know, if you have any " "troubles with this driver library or if everything is okay." msgstr "" "Tato knihovna byla testována na přístroji Kodak DC 215 Zoom. Mohla by též " "fungovat s přístroji DC 200 a DC 210. Pokud takový přístroj máte k " "dispozici, zaÅ¡lete prosím zprávu na , zda jste narazili na " "nÄ›jaké problémy s tímto ovladaÄem Äi zda vÅ¡e funguje jak má." #: camlibs/kodak/dc210/dc210.c:649 msgid "" "Camera Library for the Kodak DC215 Zoom camera.\n" "Michael Koltan \n" msgstr "" "Knihovna pro přístroj Kodak DC215 Zoom.\n" "Michael Koltan \n" #: camlibs/kodak/dc210/library.c:364 msgid "Waiting..." msgstr "ÄŒeká se…" #: camlibs/kodak/dc210/library.c:1384 msgid "Parameter 1" msgstr "Parametr 1" #: camlibs/kodak/dc210/library.c:1388 msgid "Parameter 2" msgstr "Parametr 2" #: camlibs/kodak/dc210/library.c:1392 msgid "Parameter 3" msgstr "Parametr 3" #: camlibs/kodak/dc240/dc240.c:202 #, c-format msgid "Model: Kodak %s\n" msgstr "Model: Kodak %s\n" #: camlibs/kodak/dc240/dc240.c:203 #, c-format msgid "Firmware version: %d.%02d\n" msgstr "Verze firmware: %d.%02d\n" #: camlibs/kodak/dc240/dc240.c:205 #, c-format msgid "Battery status: %s, AC Adapter: %s\n" msgstr "Stav akumulátoru: %s, síťový napájecí zdroj: %s\n" #: camlibs/kodak/dc240/dc240.c:209 #, c-format msgid "Number of pictures: %d\n" msgstr "PoÄet snímků: %d\n" #: camlibs/kodak/dc240/dc240.c:211 #, c-format msgid "Space remaining: High: %d, Medium: %d, Low: %d\n" msgstr "Zbývající místo (dle kvality): vysoká: %d, stÅ™ední: %d, nízká: %d\n" #: camlibs/kodak/dc240/dc240.c:215 #, c-format msgid "Memory card status (%d): %s\n" msgstr "Stav paměťové karty (%d): %s\n" #: camlibs/kodak/dc240/dc240.c:219 #, c-format msgid "Total pictures captured: %d, Flashes fired: %d\n" msgstr "CelkovÄ› pořízeno obrázků: %d; odpáleno záblesků: %d\n" #: camlibs/kodak/dc240/dc240.c:233 msgid "" "Kodak DC240 Camera Library\n" "Scott Fritzinger and Hubert Figuiere \n" "Camera Library for the Kodak DC240, DC280, DC3400 and DC5000 cameras.\n" "Rewritten and updated for gPhoto2." msgstr "" "Knihovna pro přístroje Kodak DC240, DC280, DC3400 a DC5000\n" "Scott Fritzinger a Hubert Figuiere \n" "PÅ™edÄ›láno a upraveno pro gPhoto2." #: camlibs/kodak/dc240/library.c:577 msgid "Weak" msgstr "Slabé" #: camlibs/kodak/dc240/library.c:580 msgid "Empty" msgstr "Prázdné" #: camlibs/kodak/dc240/library.c:585 camlibs/kodak/dc240/library.c:600 #: camlibs/ptp2/config.c:4784 camlibs/ptp2/ptp.c:5403 msgid "Invalid" msgstr "Neplatné" #: camlibs/kodak/dc240/library.c:592 camlibs/ptp2/config.c:2076 #: camlibs/ptp2/ptp.c:5336 msgid "Not used" msgstr "Nepoužito" #: camlibs/kodak/dc240/library.c:595 msgid "In use" msgstr "Používá se" #: camlibs/kodak/dc240/library.c:609 msgid "Card is open" msgstr "Paměťová karta je otevÅ™ena" #: camlibs/kodak/dc240/library.c:610 msgid "Card is not open" msgstr "Paměťová karta není otevÅ™ena" #: camlibs/kodak/dc240/library.c:612 msgid "Card is not formatted" msgstr "Paměťová karta není naformátována" #: camlibs/kodak/dc240/library.c:614 msgid "No card" msgstr "Není vložena paměťová karta" #: camlibs/kodak/dc3200/dc3200.c:64 msgid "" "There is currently an operation in progress. This camera only supports one " "operation at a time. Please wait until the current operation has finished." msgstr "" "V souÄasnosti v přístroji již probíhá operace. Protože umí zpracovávat jen " "jeden povel naráz, vyÄkejte prosím, než bude tato operace dokonÄena." #: camlibs/kodak/dc3200/dc3200.c:167 #, c-format msgid "camera inactive for > 9 seconds, re-initing.\n" msgstr "" "Přístroj byl neaktivní po více než 9 vteÅ™in – zahajuje se opÄ›tovná " "inicializace\n" #: camlibs/kodak/dc3200/dc3200.c:456 msgid "" "Known problems:\n" "\n" "1. If the Kodak DC3200 does not receive a command at least every 10 seconds, " "it will time out, and will have to be re-initialized. If you notice the " "camera does not respond, simply re-select the camera. This will cause it to " "reinitialize." msgstr "" "Známé problémy:\n" "\n" "1. Když Kodak DC3200 neobdrží alespoň každých 10 vteÅ™in žádný povel, " "pÅ™estane komunikovat a je tÅ™eba jej inicializovat znovu. Pokud zjistíte, že " "přístroj neodpovídá, jednoduÅ¡e přístroj znovu vyberte. To spustí jeho " "opÄ›tovnou inicializaci." #: camlibs/kodak/dc3200/dc3200.c:469 msgid "" "Kodak DC3200 Driver\n" "Donn Morrison \n" "\n" "Questions and comments appreciated." msgstr "" "OvladaÄ pro Kodak DC3200\n" "Donn Morrison \n" "\n" "Dotazy a komentáře jsou vítány." #: camlibs/kodak/ez200/ez200.c:198 #, c-format msgid "" "Your USB camera is a Kodak EZ200.\n" "Number of PICs = %i\n" msgstr "" "VaÅ¡e USB zařízení je Kodak EZ200.\n" "PoÄet obrázků = %i\n" #: camlibs/kodak/ez200/ez200.c:206 msgid "" "Kodak EZ200 driver\n" "Bucas Jean-Francois \n" msgstr "" "OvladaÄ pro Kodak EZ200\n" "Bucas Jean Francois \n" #: camlibs/konica/konica.c:62 msgid "Focusing error." msgstr "Chyba zaostÅ™ování." #: camlibs/konica/konica.c:65 msgid "Iris error." msgstr "Chyba závÄ›rky." #: camlibs/konica/konica.c:68 msgid "Strobe error." msgstr "Chyba stroboskopu." #: camlibs/konica/konica.c:71 msgid "EEPROM checksum error." msgstr "Chyba v kontrolním souÄtu firmware." #: camlibs/konica/konica.c:74 msgid "Internal error (1)." msgstr "VnitÅ™ní chyba (1)." #: camlibs/konica/konica.c:77 msgid "Internal error (2)." msgstr "VnitÅ™ní chyba (2)." #: camlibs/konica/konica.c:80 msgid "No card present." msgstr "Není přítomna žádná paměťová karta." #: camlibs/konica/konica.c:83 msgid "Card not supported." msgstr "Paměťová karta není podporována." #: camlibs/konica/konica.c:86 msgid "Card removed during access." msgstr "PamÄ›tová karta byla vyjmuta v průbÄ›hu operací s ní." #: camlibs/konica/konica.c:89 msgid "Image number not valid." msgstr "Neplatné Äíslo snímku." #: camlibs/konica/konica.c:92 msgid "Card can not be written." msgstr "Na paměťovou kartu není možné zapisovat." #: camlibs/konica/konica.c:95 msgid "Card is write protected." msgstr "Paměťová karta je uzamÄena proti zápisu." #: camlibs/konica/konica.c:98 msgid "No space left on card." msgstr "Na paměťové kartÄ› doÅ¡lo místo." #: camlibs/konica/konica.c:101 msgid "Image protected." msgstr "Snímek je chránÄ›n proti smazání." #: camlibs/konica/konica.c:104 msgid "Light too dark." msgstr "Nedostatek svÄ›tla." #: camlibs/konica/konica.c:107 msgid "Autofocus error." msgstr "Chyba automatického ostÅ™ení." #: camlibs/konica/konica.c:110 msgid "System error." msgstr "Systémová chyba." #: camlibs/konica/konica.c:113 msgid "Illegal parameter." msgstr "Neplatný parametr." #: camlibs/konica/konica.c:116 msgid "Command can not be cancelled." msgstr "Příkaz nelze zruÅ¡it." #: camlibs/konica/konica.c:119 msgid "Localization data too long." msgstr "Data národního prostÅ™edí jsou příliÅ¡ objemná." #: camlibs/konica/konica.c:122 msgid "Localization data corrupt." msgstr "Data národního prostÅ™edí jsou poÅ¡kozena." #: camlibs/konica/konica.c:125 msgid "Unsupported command." msgstr "Nepodporovaný příkaz." #: camlibs/konica/konica.c:128 msgid "Other command executing." msgstr "PrávÄ› probíhá vykonávání jiného povelu." #: camlibs/konica/konica.c:131 msgid "Command order error." msgstr "Chyba poÅ™adí příkazů." #: camlibs/konica/konica.c:134 msgid "Unknown error." msgstr "Neznámá chyba." #: camlibs/konica/konica.c:137 #, c-format msgid "" "The camera has just sent an error that has not yet been discovered. Please " "report the following to %s with additional information how you got this " "error: (0x%x,0x%x). Thank you very much!" msgstr "" "Tento přístroj právÄ› ohlásil chybu, která doposud nebyla známa. Prosím " "ohlaste to na %s s podrobnostmi, jak k tomu doÅ¡lo (0x%x, 0x%x). VÅ™elé díky!" #: camlibs/konica/library.c:157 camlibs/pccam300/library.c:118 msgid "Getting file list..." msgstr "Probíhá získávání seznamu souborů…" #: camlibs/konica/library.c:323 msgid "Testing different speeds..." msgstr "Probíhá testování různých rychlostí…" #: camlibs/konica/library.c:338 msgid "" "The camera could not be contacted. Please make sure it is connected to the " "computer and turned on." msgstr "" "S přístrojem se nebylo možné spojit. Prosím zkontrolujte, zda je propojen s " "poÄítaÄem a zapnutý." #: camlibs/konica/library.c:422 #, c-format msgid "%i pictures could not be deleted because they are protected" msgstr "%i snímků nemohlo být smazáno, protože jsou proti smazání chránÄ›ny." #: camlibs/konica/library.c:522 #, c-format msgid "" "Model: %s\n" "Serial Number: %s,\n" "Hardware Version: %i.%i\n" "Software Version: %i.%i\n" "Testing Software Version: %i.%i\n" "Name: %s,\n" "Manufacturer: %s\n" msgstr "" "Model: %s\n" "Sériové Äíslo: %s,\n" "Verze hardware: %i.%i\n" "Verze firmware: %i.%i\n" "Verze testovacího softwaru: %i.%i\n" "Název: %s,\n" "Výrobce: %s\n" #: camlibs/konica/library.c:613 msgid "" "Konica library\n" "Lutz Mueller \n" "Support for all Konica and several HP cameras." msgstr "" "Knihovna pro Konica\n" "Lutz Müller \n" "UrÄeno pro vÅ¡echny přístroje od Konica a také nÄ›které od HP." #: camlibs/konica/library.c:638 msgid "Getting configuration..." msgstr "Probíhá zjišťování souÄasného nastavení přístroje…" #: camlibs/konica/library.c:645 camlibs/konica/qm150.c:749 msgid "Konica Configuration" msgstr "Konica – nastavení" #: camlibs/konica/library.c:650 camlibs/konica/library.c:862 #: camlibs/konica/qm150.c:754 msgid "Persistent Settings" msgstr "Trvalá nastavení" #: camlibs/konica/library.c:680 msgid "Shall the camera beep when taking a picture?" msgstr "Má přístroj pÅ™i pořízení snímku vydat zvukové upozornÄ›ní?" #: camlibs/konica/library.c:684 camlibs/konica/library.c:895 msgid "Self Timer Time" msgstr "Prodleva samospouÅ¡tÄ›" #: camlibs/konica/library.c:691 camlibs/konica/library.c:903 #: camlibs/konica/qm150.c:763 msgid "Auto Off Time" msgstr "Prodleva pÅ™ed automatickým vypnutím" #: camlibs/konica/library.c:698 camlibs/konica/library.c:911 msgid "Slide Show Interval" msgstr "Prodleva střídání snímků" #: camlibs/konica/library.c:705 camlibs/konica/library.c:920 #: camlibs/konica/qm150.c:771 camlibs/ricoh/library.c:496 #: camlibs/sierra/sierra.c:922 camlibs/sierra/sierra.c:1254 #: camlibs/sierra/sierra.c:1605 camlibs/sierra/sierra.c:1814 msgid "Resolution" msgstr "RozliÅ¡ení" #: camlibs/konica/library.c:707 camlibs/konica/library.c:715 #: camlibs/konica/library.c:925 msgid "Low (576 x 436)" msgstr "Nízké (576 × 436)" #: camlibs/konica/library.c:708 camlibs/konica/library.c:718 msgid "Medium (1152 x 872)" msgstr "StÅ™ední (1152 × 872)" #: camlibs/konica/library.c:709 camlibs/konica/library.c:712 #: camlibs/konica/library.c:923 msgid "High (1152 x 872)" msgstr "Vysoké (1152 × 872)" #: camlibs/konica/library.c:725 camlibs/konica/library.c:936 #: camlibs/konica/qm150.c:819 msgid "Localization" msgstr "Národní prostÅ™edí" #: camlibs/konica/library.c:731 camlibs/konica/library.c:939 #: camlibs/sierra/epson-desc.c:246 camlibs/sierra/nikon-desc.c:434 #: camlibs/sierra/sierra.c:1681 camlibs/sierra/sierra.c:1865 msgid "Language" msgstr "Jazyk" #: camlibs/konica/library.c:738 camlibs/konica/library.c:748 #: camlibs/konica/library.c:756 camlibs/konica/library.c:943 #: camlibs/konica/library.c:968 camlibs/konica/library.c:986 msgid "None selected" msgstr "Nezvoleno žádné" #: camlibs/konica/library.c:743 camlibs/konica/library.c:965 msgid "TV Output Format" msgstr "Formát výstupu na televizor" #: camlibs/konica/library.c:745 camlibs/konica/library.c:969 #: camlibs/ptp2/config.c:1912 msgid "NTSC" msgstr "NTSC" #: camlibs/konica/library.c:746 camlibs/konica/library.c:971 #: camlibs/ptp2/config.c:1913 msgid "PAL" msgstr "PAL" #: camlibs/konica/library.c:747 camlibs/konica/library.c:973 msgid "Do not display TV menu" msgstr "Nezobrazovat nabídku televizoru" #: camlibs/konica/library.c:751 camlibs/konica/library.c:983 #: camlibs/konica/qm150.c:823 msgid "Date Format" msgstr "Formát data" #: camlibs/konica/library.c:753 camlibs/konica/library.c:987 #: camlibs/konica/qm150.c:825 camlibs/konica/qm150.c:830 msgid "Month/Day/Year" msgstr "MÄ›síc/Den/Rok" #: camlibs/konica/library.c:754 camlibs/konica/library.c:989 #: camlibs/konica/qm150.c:826 camlibs/konica/qm150.c:833 msgid "Day/Month/Year" msgstr "Den/MÄ›síc/Rok" #: camlibs/konica/library.c:755 camlibs/konica/library.c:991 #: camlibs/konica/qm150.c:827 camlibs/konica/qm150.c:836 msgid "Year/Month/Day" msgstr "Rok/MÄ›síc/Den" #: camlibs/konica/library.c:761 camlibs/konica/library.c:1003 #: camlibs/konica/qm150.c:843 msgid "Session-persistent Settings" msgstr "Nastavení platná pouze pro tuto relaci" #: camlibs/konica/library.c:770 camlibs/konica/library.c:781 #: camlibs/konica/library.c:1014 camlibs/konica/qm150.c:852 #: camlibs/konica/qm150.c:862 msgid "On, red-eye reduction" msgstr "Odpálen vždy, omezení jevu Äervených oÄí" #: camlibs/konica/library.c:772 camlibs/konica/library.c:784 #: camlibs/konica/qm150.c:854 camlibs/konica/qm150.c:869 msgid "Auto, red-eye reduction" msgstr "Odpálen dle potÅ™eby, omezení jevu Äervených oÄí" #: camlibs/konica/library.c:799 camlibs/konica/library.c:1033 #: camlibs/konica/qm150.c:935 camlibs/ptp2/config.c:4674 #: camlibs/ptp2/config.c:4680 msgid "Focus" msgstr "Ohnisko" #: camlibs/konica/library.c:801 camlibs/konica/library.c:808 #: camlibs/sierra/epson-desc.c:170 camlibs/sierra/sierra.c:1562 #: camlibs/sierra/sierra.c:1568 camlibs/sierra/sierra.c:1788 msgid "Fixed" msgstr "Pevné" #: camlibs/konica/library.c:815 camlibs/konica/library.c:1038 #: camlibs/konica/qm150.c:1085 msgid "Volatile Settings" msgstr "DoÄasná nastavení" #: camlibs/konica/library.c:819 camlibs/konica/library.c:1041 #: camlibs/konica/qm150.c:1089 camlibs/polaroid/pdc700.c:165 #: camlibs/ptp2/config.c:6673 msgid "Self Timer" msgstr "Samospoušť" #: camlibs/konica/library.c:821 camlibs/konica/library.c:825 #: camlibs/konica/library.c:1051 camlibs/konica/qm150.c:1091 #: camlibs/konica/qm150.c:1095 msgid "Self Timer (next picture only)" msgstr "Samospoušť (pouze pro příští snímek)" #: camlibs/konica/library.c:822 camlibs/konica/library.c:829 #: camlibs/konica/qm150.c:1092 camlibs/konica/qm150.c:1099 #: camlibs/minolta/dimagev/dimagev.c:394 camlibs/ptp2/config.c:3055 #: camlibs/ptp2/config.c:3921 camlibs/ptp2/config.c:3934 #: camlibs/ptp2/config.c:3945 camlibs/ptp2/config.c:4254 #: camlibs/ptp2/config.c:4523 camlibs/ptp2/config.c:4609 #: camlibs/ptp2/ptp.c:5004 camlibs/ptp2/ptp.c:5012 camlibs/ptp2/ptp.c:5175 #: camlibs/ptp2/ptp.c:5184 camlibs/ptp2/ptp.c:5314 camlibs/ptp2/ptp.c:5321 #: camlibs/ricoh/library.c:348 camlibs/sierra/epson-desc.c:219 #: camlibs/sierra/nikon-desc.c:253 camlibs/sierra/nikon-desc.c:325 #: camlibs/sierra/olympus-desc.c:480 camlibs/sierra/olympus-desc.c:660 #: camlibs/sierra/sierra.c:993 camlibs/sierra/sierra.c:1000 #: camlibs/sierra/sierra.c:1054 camlibs/sierra/sierra.c:1061 #: camlibs/sierra/sierra.c:1116 camlibs/sierra/sierra.c:1122 #: camlibs/sierra/sierra.c:1306 camlibs/sierra/sierra.c:1349 #: camlibs/sierra/sierra.c:1393 camlibs/sierra/sierra.c:1588 #: camlibs/sierra/sierra.c:1592 camlibs/sierra/sierra.c:1805 #, c-format msgid "Normal" msgstr "Běžné" #: camlibs/konica/library.c:1080 #, c-format msgid "Could not find localization data at '%s'" msgstr "NezdaÅ™ilo se nalézt data národního prostÅ™edí na „%s“" #: camlibs/konica/library.c:1146 msgid "Localization file too long!" msgstr "Soubor s národním prostÅ™edím je příliÅ¡ dlouhý!" #: camlibs/konica/qm150.c:251 msgid "This preview doesn't exist." msgstr "Tento náhled neexistuje." #: camlibs/konica/qm150.c:283 msgid "Data has been corrupted." msgstr "Data byla poÅ¡kozena." #: camlibs/konica/qm150.c:399 #, c-format msgid "Image type %d is not supported by this camera !" msgstr "Obrázek typu %d není tímto přístrojem podporován!" #: camlibs/konica/qm150.c:453 #, c-format msgid "Can't delete image %s." msgstr "Snímek %s nelze smazat." #: camlibs/konica/qm150.c:484 msgid "Can't delete all images." msgstr "Nelze smazat vÅ¡echny snímky naráz." #: camlibs/konica/qm150.c:517 msgid "Uploading image..." msgstr "Probíhá odesílání snímku…" #: camlibs/konica/qm150.c:527 camlibs/konica/qm150.c:592 msgid "Can't upload this image to the camera. An error has occurred." msgstr "Tento snímek se nepodaÅ™ilo odeslat do přístroje. Vyskytla se chyba." #: camlibs/konica/qm150.c:634 msgid "You must be in record mode to capture images." msgstr "" "Pro pořízování snímků musí být přístroj pÅ™epnutý do přísluÅ¡ného režimu." #: camlibs/konica/qm150.c:637 msgid "No space available to capture new images. You must delete some images." msgstr "" "Pro poÅ™izování dalších snímků již není místo. Je tÅ™eba smazat nÄ›jaké " "pÅ™edchozí." #: camlibs/konica/qm150.c:641 msgid "Can't capture new images. Unknown error" msgstr "Nelze pořízovat další snímky. Neznámá chyba." #: camlibs/konica/qm150.c:653 msgid "No answer from the camera." msgstr "Žádná odezva od zařízení." #: camlibs/konica/qm150.c:773 camlibs/konica/qm150.c:781 #: camlibs/ptp2/config.c:3054 camlibs/ptp2/config.c:3935 #: camlibs/ptp2/config.c:4524 camlibs/ptp2/config.c:4608 #: camlibs/ptp2/config.c:4866 camlibs/ptp2/ptp.c:5005 camlibs/ptp2/ptp.c:5440 #: camlibs/ptp2/ptp.c:5446 camlibs/ptp2/ptp.c:5452 #: camlibs/sierra/nikon-desc.c:203 camlibs/sierra/sierra.c:964 #: camlibs/sierra/sierra.c:971 camlibs/sierra/sierra.c:1289 msgid "Low" msgstr "nízké" #: camlibs/konica/qm150.c:774 camlibs/konica/qm150.c:784 #: camlibs/ptp2/config.c:2056 camlibs/ptp2/config.c:2063 #: camlibs/sierra/nikon-desc.c:204 camlibs/sierra/sierra.c:965 #: camlibs/sierra/sierra.c:973 camlibs/sierra/sierra.c:1291 msgid "Medium" msgstr "stÅ™ední" #: camlibs/konica/qm150.c:775 camlibs/konica/qm150.c:778 #: camlibs/ptp2/config.c:3056 camlibs/ptp2/config.c:3938 #: camlibs/ptp2/config.c:4522 camlibs/ptp2/config.c:4610 #: camlibs/ptp2/ptp.c:5008 camlibs/ptp2/ptp.c:5442 camlibs/ptp2/ptp.c:5448 #: camlibs/ptp2/ptp.c:5454 camlibs/sierra/sierra.c:925 #: camlibs/sierra/sierra.c:933 camlibs/sierra/sierra.c:966 #: camlibs/sierra/sierra.c:975 camlibs/sierra/sierra.c:1262 #: camlibs/sierra/sierra.c:1293 msgid "High" msgstr "vysoké" #: camlibs/konica/qm150.c:789 camlibs/polaroid/pdc700.c:164 #: camlibs/ptp2/config.c:2115 camlibs/ptp2/config.c:2141 #: camlibs/ptp2/config.c:2167 camlibs/ptp2/ptp.c:5489 msgid "LCD" msgstr "LCD displej" #: camlibs/konica/qm150.c:803 msgid "Icons" msgstr "Ikony" #: camlibs/konica/qm150.c:937 camlibs/konica/qm150.c:946 msgid "2.0 m" msgstr "2,0 m" #: camlibs/konica/qm150.c:938 camlibs/konica/qm150.c:949 msgid "0.5 m" msgstr "0,5 m" #: camlibs/konica/qm150.c:939 camlibs/konica/qm150.c:952 msgid "0.1 m" msgstr "0,1 m" #: camlibs/konica/qm150.c:957 msgid "White balance" msgstr "Vyvážení bílé" #: camlibs/konica/qm150.c:959 camlibs/konica/qm150.c:970 msgid "Office" msgstr "Kancelář" #: camlibs/konica/qm150.c:960 camlibs/konica/qm150.c:967 #: camlibs/ptp2/config.c:1406 camlibs/ptp2/config.c:3033 #: camlibs/ptp2/config.c:4008 camlibs/ptp2/config.c:4027 #: camlibs/ptp2/ptp.c:4947 camlibs/ptp2/ptp.c:5413 #: camlibs/sierra/olympus-desc.c:556 camlibs/sierra/olympus-desc.c:575 #: camlibs/sierra/olympus-desc.c:594 camlibs/sierra/olympus-desc.c:615 msgid "Daylight" msgstr "Denní svÄ›tlo" #: camlibs/konica/qm150.c:975 camlibs/ptp2/config.c:6737 #: camlibs/ptp2/ptp.c:4124 camlibs/ptp2/ptp.c:4192 msgid "Sharpness" msgstr "Ostrost" #: camlibs/konica/qm150.c:977 camlibs/konica/qm150.c:985 msgid "Sharp" msgstr "Ostré" #: camlibs/konica/qm150.c:978 camlibs/konica/qm150.c:988 #: camlibs/ptp2/ptp.c:5372 camlibs/ptp2/ptp.c:5499 msgid "Soft" msgstr "MÄ›kké" #: camlibs/konica/qm150.c:993 camlibs/sierra/epson-desc.c:136 #: camlibs/sierra/nikon-desc.c:219 msgid "Color" msgstr "Barva" #: camlibs/konica/qm150.c:995 camlibs/konica/qm150.c:1005 msgid "Light" msgstr "SvÄ›tlo" #: camlibs/konica/qm150.c:996 camlibs/konica/qm150.c:1008 msgid "Deep" msgstr "Hloubka" #: camlibs/konica/qm150.c:997 camlibs/konica/qm150.c:1011 msgid "Black and White" msgstr "ÄŒerná a bílá" #: camlibs/konica/qm150.c:1049 camlibs/konica/qm150.c:1053 #: camlibs/ptp2/config.c:2301 msgid "Single" msgstr "Jednotlivé" #: camlibs/konica/qm150.c:1050 camlibs/konica/qm150.c:1056 msgid "Sequence 9" msgstr "dávka po 9" #: camlibs/konica/qm150.c:1061 msgid "Date display" msgstr "Zobrazení data" #: camlibs/konica/qm150.c:1063 camlibs/konica/qm150.c:1072 msgid "Anywhere" msgstr "Kdekoli" #: camlibs/konica/qm150.c:1064 camlibs/konica/qm150.c:1070 msgid "Play mode" msgstr "Režim pÅ™ehrávání" #: camlibs/konica/qm150.c:1065 camlibs/konica/qm150.c:1078 msgid "Record mode" msgstr "Režim nahrávání" #: camlibs/konica/qm150.c:1066 camlibs/konica/qm150.c:1076 msgid "Everywhere" msgstr "Kdekoli" #: camlibs/konica/qm150.c:1137 camlibs/ptp2/ptp.c:5307 #, c-format msgid "AC" msgstr "Elektrická síť" #: camlibs/konica/qm150.c:1140 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:361 #, c-format msgid "Play" msgstr "PÅ™ehrávat" #: camlibs/konica/qm150.c:1142 camlibs/minolta/dimagev/dimagev.c:295 #: camlibs/sierra/nikon-desc.c:360 #, c-format msgid "Record" msgstr "Nahrávat" #: camlibs/konica/qm150.c:1152 #, c-format msgid "DD/MM/YYYY" msgstr "DD/MM/RRRR" #: camlibs/konica/qm150.c:1157 #, c-format msgid "YYYY/MM/DD" msgstr "RRRR/MM/DD" #: camlibs/konica/qm150.c:1161 #, c-format msgid "MM/DD/YYYY" msgstr "MM/DD/RRRR" #: camlibs/konica/qm150.c:1165 #, c-format msgid "" "Model: %s\n" "Capacity: %i Mb\n" "Power: %s\n" "Auto Off Time: %i min\n" "Mode: %s\n" "Images: %i/%i\n" "Date display: %s\n" "Date and Time: %s\n" msgstr "" "Model: %s\n" "Kapacita: %i MB\n" "Napájení: %s\n" "Prodleva automat. vypnutí: %i min\n" "Režim: %s\n" "Snímků: %i/%i\n" "Zobrazení data: %s\n" "Datum a Äas: %s\n" #: camlibs/konica/qm150.c:1188 #, c-format msgid "" "Konica Q-M150 Library\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Support for the french Konica Q-M150." msgstr "" "Knihovna pro Konica Q-M150\n" "Marcus Meissner \n" "Aurelien Croc (AP2C) \n" "http://www.ap2c.com\n" "Podpora pro francouzskou verzi Konica Q-M150." #: camlibs/konica/qm150.c:1203 #, c-format msgid "" "About Konica Q-M150:\n" "This camera does not allow any changes\n" "from the outside. So in the configuration, you can\n" "only see what it is configured on the camera\n" "but you can not change anything.\n" "\n" "If you have some issues with this driver, please e-mail its authors.\n" msgstr "" "O přístroji Konica Q-M150:\n" "Žádný z parametrů přístroje nelze nastavovat z poÄítaÄe. Je možné vidÄ›t, " "jaká\n" "nastavení jsou, ale nelze je mÄ›nit. V případÄ› problémů s ovladaÄem, poÅ¡lete " "prosím e-mail jeho tvůrcům.\n" #: camlibs/largan/lmini/largan.c:228 msgid "" "Largan driver\n" "Hubert Figuiere \n" msgstr "" "OvladaÄ pro Largan\n" "Hubert Figuiere \n" #: camlibs/lg_gsm/library.c:102 #, c-format msgid "" "Your USB camera seems to be a LG GSM.\n" "Firmware: %s\n" "Firmware Version: %s\n" msgstr "" "Zdá se, že přístroj je LG GSM.\n" "Firmware: %s\n" "Verze firmware: %s\n" #: camlibs/lg_gsm/library.c:114 msgid "" "LG GSM generic driver\n" "Guillaume Bedot \n" msgstr "" "Obecný ovladaÄ pro LG GSM\n" "Guillaume Bedot \n" #: camlibs/mars/library.c:124 #, c-format msgid "" "Mars MR97310 camera.\n" "There is %i photo in it.\n" msgid_plural "" "Mars MR97310 camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Přístroj Mars MR97310.\n" "Uložen %i snímek.\n" msgstr[1] "" "Přístroj Mars MR97310.\n" "Uloženy %i snímky.\n" msgstr[2] "" "Přístroj Mars MR97310.\n" "Uloženo %i snímků.\n" #: camlibs/mars/library.c:135 msgid "" "This driver supports cameras with Mars MR97310 chip (and direct\n" "equivalents ??Pixart PACx07??).\n" "These cameras do not support deletion of photos, nor uploading\n" "of data.\n" "Decoding of compressed photos may or may not work well\n" "and does not work equally well for all supported cameras.\n" "Photo data processing for Argus QuickClix is NOT SUPPORTED.\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos.\n" "For further details please consult libgphoto2/camlibs/README.\n" msgstr "" "Tento ovladaÄ je urÄen pro přístroje s Äipem Mars MR97310 Chip (a odvozené – " "Pixart PAC0x7 ?).\n" "Tyto přístroje neumožňují mazání snímků ani nahrávání dat.\n" "NaÄítání komprimovaných snímků může a nemusí fungovat – dle konkrétního " "přístroje.\n" "Videozáznamy jsou stahovány jako posloupnost snímků.\n" "Více podrobností je uvedeno v souboru libgphoto2/camlibs/README.\n" #: camlibs/mars/library.c:153 msgid "" "Mars MR97310 camera library\n" "Theodore Kilgore \n" msgstr "" "OvladaÄ pro Mars MR97310\n" "Theodore Kilgore \n" #: camlibs/minolta/dimagev/dimagev.c:259 #, c-format msgid "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Hardware Revision:\t%s\n" "Firmware Revision:\t%s\n" msgstr "" "Model:\t\t\tMinolta Dimage V (%s)\n" "Verze hardwaru:\t%s\n" "Verze firmwaru:\t%s\n" #: camlibs/minolta/dimagev/dimagev.c:274 #, c-format msgid "" "Host Mode:\t\t%s\n" "Exposure Correction:\t%s\n" "Exposure Data:\t\t%d\n" "Date Valid:\t\t%s\n" "Date:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Self Timer Set:\t\t%s\n" "Quality Setting:\t%s\n" "Play/Record Mode:\t%s\n" "Card ID Valid:\t\t%s\n" "Card ID:\t\t%d\n" "Flash Mode:\t\t" msgstr "" "Režim hostitele:\t\t%s\n" "Korekce expozice:\t%s\n" "ExpoziÄní údaje:\t%d\n" "Platné datum:\t\t%s\n" "Datum:\t\t\t%d/%02d/%02d %02d:%02d:%02d\n" "Nastavení samospouÅ¡tÄ›:\t%s\n" "Nastavení kvality:\t\t%s\n" "Režim pÅ™ehrávání/záznamu:\t%s\n" "ID platných paměťových karet:\t%s\n" "ID paměťových karet:\t\t%d\n" "Režim blesku:\t\t" #: camlibs/minolta/dimagev/dimagev.c:286 camlibs/ptp2/config.c:3119 #: camlibs/ptp2/ptp.c:4992 msgid "Remote" msgstr "Vzdálené" #: camlibs/minolta/dimagev/dimagev.c:286 msgid "Local" msgstr "Místní" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "Yes" msgstr "Ano" #: camlibs/minolta/dimagev/dimagev.c:287 camlibs/minolta/dimagev/dimagev.c:289 #: camlibs/minolta/dimagev/dimagev.c:293 camlibs/minolta/dimagev/dimagev.c:296 #: camlibs/ptp2/ptp.c:4892 msgid "No" msgstr "Ne" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:4573 #: camlibs/ptp2/ptp.c:5322 camlibs/sierra/nikon-desc.c:283 msgid "Fine" msgstr "Jemné" #: camlibs/minolta/dimagev/dimagev.c:294 camlibs/ptp2/config.c:1940 #: camlibs/ptp2/config.c:3290 camlibs/ptp2/config.c:4572 #: camlibs/ptp2/ptp.c:5441 camlibs/ptp2/ptp.c:5447 camlibs/ptp2/ptp.c:5453 #: camlibs/ptp2/ptp.c:5457 camlibs/sierra/sierra.c:924 #: camlibs/sierra/sierra.c:931 camlibs/sierra/sierra.c:1260 msgid "Standard" msgstr "Standardní" #: camlibs/minolta/dimagev/dimagev.c:310 #, c-format msgid "Automatic\n" msgstr "Dle potÅ™eby\n" #: camlibs/minolta/dimagev/dimagev.c:318 #, c-format msgid "Force Flash\n" msgstr "Blesk odpálit vždy\n" #: camlibs/minolta/dimagev/dimagev.c:326 #, c-format msgid "Prohibit Flash\n" msgstr "Blesk vypnut\n" #: camlibs/minolta/dimagev/dimagev.c:334 #, c-format msgid "Invalid Value ( %d )\n" msgstr "Neplatná hodnota ( %d )\n" #: camlibs/minolta/dimagev/dimagev.c:348 #, c-format msgid "" "Battery Level:\t\t%s\n" "Number of Images:\t%d\n" "Minimum Capacity Left:\t%d\n" "Busy:\t\t\t%s\n" "Flash Charging:\t\t%s\n" "Lens Status:\t\t" msgstr "" "Úroveň nabití akumulátoru:\t\t%s\n" "PoÄet snímků:\t%d\n" "Zbývající kapacita je pÅ™inejmenším:\t%d\n" "Vytížení:\t\t%s\n" "Nabíjení blesku:\t\t%s\n" "Stav objektivu:\t\t" #: camlibs/minolta/dimagev/dimagev.c:354 msgid "Not Full" msgstr "Prázdné" #: camlibs/minolta/dimagev/dimagev.c:354 camlibs/minolta/dimagev/dimagev.c:397 #: camlibs/ptp2/config.c:1811 camlibs/ptp2/config.c:1865 #: camlibs/ptp2/config.c:1918 camlibs/ptp2/ptp.c:5235 camlibs/ptp2/ptp.c:5241 #, c-format msgid "Full" msgstr "Plné" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Busy" msgstr "ZaneprázdnÄ›no" #: camlibs/minolta/dimagev/dimagev.c:357 msgid "Idle" msgstr "NeÄinné" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Charging" msgstr "Probíhá nabíjení" #: camlibs/minolta/dimagev/dimagev.c:358 msgid "Ready" msgstr "PÅ™ipraveno" #: camlibs/minolta/dimagev/dimagev.c:369 #, c-format msgid "Normal\n" msgstr "Běžné\n" #: camlibs/minolta/dimagev/dimagev.c:372 #, c-format msgid "Lens direction does not match flash light\n" msgstr "NasmÄ›rování objektivu se neshoduje s bleskem\n" #: camlibs/minolta/dimagev/dimagev.c:375 #, c-format msgid "Lens is not connected\n" msgstr "Objektiv není pÅ™ipojen\n" #: camlibs/minolta/dimagev/dimagev.c:378 #, c-format msgid "Bad value for lens status %d\n" msgstr "Å patná hodnota stavu objektivu %d\n" #: camlibs/minolta/dimagev/dimagev.c:387 #, c-format msgid "Card Status:\t\t" msgstr "Stav paměťové karty:\t\t" #: camlibs/minolta/dimagev/dimagev.c:400 #, c-format msgid "Write-protected" msgstr "ChránÄ›no proti zápisu" #: camlibs/minolta/dimagev/dimagev.c:403 #, c-format msgid "Unsuitable card" msgstr "Nepoužitelná paměťová karta" #: camlibs/minolta/dimagev/dimagev.c:406 #, c-format msgid "Bad value for card status %d" msgstr "Å patná hodnota pro stav paměťové karty %d" #: camlibs/minolta/dimagev/dimagev.c:425 #, c-format msgid "" "Minolta Dimage V Camera Library\n" "%s\n" "Gus Hartmann \n" "Special thanks to Minolta for the spec." msgstr "" "Knihovna pro Minolta Dimage V\n" "%s\n" "Gus Hartmann \n" "PodÄ›kování MinoltÄ› za poskytnutí dokumentace." #: camlibs/mustek/core.c:575 msgid "FlashLight : Auto (RedEye Reduction)" msgstr "Blesk: odpálení dle potÅ™eby (s omezením jevu Äervených oÄí)" #: camlibs/mustek/core.c:577 msgid "FlashLight : Auto" msgstr "Blesk: odpálení dle potÅ™eby" #: camlibs/mustek/core.c:579 msgid "FlashLight : On (RedEye Reduction)" msgstr "Blesk: odpálení vždy (s omezením jevu Äervených oÄí)" #: camlibs/mustek/core.c:581 msgid "FlashLight : On" msgstr "Blesk: odpálení vždy" #: camlibs/mustek/core.c:583 msgid "FlashLight : Off" msgstr "Blesk: vypnut" #: camlibs/mustek/core.c:585 msgid "FlashLight : undefined" msgstr "Blesk: neurÄeno" #: camlibs/mustek/mdc800.c:217 msgid "Summary for Mustek MDC800:\n" msgstr "Souhrné informace pro zařízení Mustek MDC800:\n" #: camlibs/mustek/mdc800.c:220 msgid "no status reported." msgstr "Nebylo obdrženo žádné hlášení o stavu." #: camlibs/mustek/mdc800.c:226 msgid "Compact Flash Card detected\n" msgstr "ZjiÅ¡tÄ›na paměťová karta typu Compact Flash\n" #: camlibs/mustek/mdc800.c:228 msgid "No Compact Flash Card detected\n" msgstr "Nebyla rozpoznána žádná paměťová karta typu Compact Flash\n" #: camlibs/mustek/mdc800.c:232 msgid "Current Mode: Camera Mode\n" msgstr "SouÄasný režim: fotografování\n" #: camlibs/mustek/mdc800.c:234 msgid "Current Mode: Playback Mode\n" msgstr "SouÄasný režim: pÅ™ehrávání\n" #: camlibs/mustek/mdc800.c:243 msgid "Batteries are ok." msgstr "Akumulátory jsou nabité." #: camlibs/mustek/mdc800.c:245 msgid "Batteries are low." msgstr "Akumulátory jsou vybité." #: camlibs/mustek/mdc800.c:264 msgid "" "Mustek MDC-800 gPhoto2 Library\n" "Henning Zabel \n" "Ported to gphoto2 by Marcus Meissner \n" "Supports Serial and USB Protocols." msgstr "" "Knihovna gPhoto2 pro přístroj Mustek MDC-800\n" "Henning Zabel \n" "Do gphoto2 zaÄlenil Marcus Meissner \n" "Podporuje komunikaci pÅ™es sériové i USB rozhraní." #: camlibs/panasonic/coolshot/coolshot.c:256 msgid "coolshot library v" msgstr "OvladaÄ pro coolshot v" #: camlibs/panasonic/dc1000.c:371 camlibs/panasonic/dc1580.c:467 msgid "Disconnecting camera." msgstr "Probíhá odpojení přístroje." #: camlibs/panasonic/dc1000.c:408 #, c-format msgid "Downloading image %s." msgstr "Probíhá stahování snímku %s" #: camlibs/panasonic/dc1000.c:446 camlibs/panasonic/dc1580.c:567 #, c-format msgid "Uploading image: %s." msgstr "Probíhá odesílání snímku: %s." #: camlibs/panasonic/dc1000.c:457 camlibs/panasonic/dc1580.c:578 #, c-format msgid "" "File size is %ld bytes. The size of the largest file possible to upload is: " "%i bytes." msgstr "" "Velikost souboru je %ld bajtů. Nahrávat je pÅ™itom možné soubory velké " "nanejvýš %i bajtů." #: camlibs/panasonic/dc1000.c:470 camlibs/panasonic/dc1580.c:589 #: camlibs/ricoh/ricoh.c:852 msgid "Uploading..." msgstr "Probíhá odesílání…" #: camlibs/panasonic/dc1000.c:497 camlibs/panasonic/dc1580.c:615 #, c-format msgid "Deleting image %s." msgstr "Probíhá mazání snímku %s." #: camlibs/panasonic/dc1000.c:510 msgid "" "Panasonic DC1000 gPhoto library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Knihovna gPhoto pro Panasonic DC1000\n" "Mariusz Zynel \n" "\n" "Založeno na programu dc1000, který vytvoÅ™ili:\n" "Fredrik Roubert a Galen Brooks ." #: camlibs/panasonic/dc1580.c:521 #, c-format msgid "Downloading %s." msgstr "Probíhá stahování „%s“." #: camlibs/panasonic/dc1580.c:627 msgid "" "Panasonic DC1580 gPhoto2 library\n" "Mariusz Zynel \n" "\n" "Based on dc1000 program written by\n" "Fredrik Roubert and\n" "Galen Brooks ." msgstr "" "Knihovna gPhoto pro zařízení Panasonic DC1580\n" "Mariusz Zynel \n" "\n" "Založeno na programu dc1000 od\n" "Fredrik Roubert a\n" "Galen Brooks ." #: camlibs/panasonic/l859/l859.c:504 #, c-format msgid "Downloading '%s'..." msgstr "Probíhá stahování „%s“…" #: camlibs/panasonic/l859/l859.c:582 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic introduced image capturing technology called PHOTOSHOT for the " "first time, in this series of Palmcorders. Images are stored in JPEG format " "on an internal flashcard and can be transferred to a computer through the " "built-in serial port. Images are saved in one of two resolutions; NORMAL is " "320x240 and FINE is 640x480. The CCD device which captures the images from " "the lens is only 300K and thus produces only low quality pictures." msgstr "" "Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "\n" "Panasonic zavádí technologii snímání obrazu nazývanou PHOTOSHOT poprvé v " "této Å™adÄ› Palmcoders. Snímky se uchovávají ve formátu JPEG na interní " "paměťové kartÄ› a lze je pÅ™enášet do poÄítaÄe pomocí vestavÄ›ného sériového " "portu. Snímky jsou ukládány v jednom ze dvou rozliÅ¡ení: NORMÃLNÃM 320×240 a " "JEMNÉM 640×480. SnímaÄ CCD, který provádí snímání z optiky má pouze 300K a " "proto mají výsledné snímky nízkou kvalitu." #: camlibs/panasonic/l859/l859.c:600 msgid "" "Known problems:\n" "\n" "If communications problems occur, reset the camera and restart the " "application. The driver is not robust enough yet to recover from these " "situations, especially if a problem occurs and the camera is not properly " "shutdown at speeds faster than 9600." msgstr "" "Známé problémy:\n" "\n" "Pokud se vyskytne problém v komunikaci, restartujte kameru i aplikaci. " "OvladaÄ se není schopen s takovými situacemi vypořádat, zvláštÄ› po " "nekorektním vypnutí přístroje pÅ™i komunikaci rychlejší než 9600 b/s." #: camlibs/panasonic/l859/l859.c:614 msgid "" "Panasonic PV-L859-K/PV-L779-K Palmcorder Driver\n" "Andrew Selkirk " msgstr "" "OvladaÄ pro zařízení Panasonic PV-L859-K/PV-L779-K Palmcorder\n" "Andrew Selkirk " #: camlibs/pccam300/library.c:216 #, c-format msgid "" " Total memory is %8d bytes.\n" " Free memory is %8d bytes.\n" " Filecount: %d" msgstr "" "Celková kapacita: %8d bajtů.\n" "Volná kapacita: %8d bajtů.\n" "PoÄet souborů: %d" #: camlibs/pccam300/library.c:228 msgid "" "Creative PC-CAM 300\n" " Authors: Till Adam\n" "\n" "and: Miah Gregory\n" " " msgstr "" "Creative PC-CAM 300\n" "Tvůrci: Till Adam a Miah Gregory " #: camlibs/pccam600/library.c:190 msgid "Downloading file..." msgstr "Probíhá stahování souboru…" #: camlibs/pccam600/library.c:249 msgid "" "Creative PC-CAM600\n" "Author: Peter Kajberg \n" msgstr "" "Creative PC-CAM600\n" "Autor: Peter Kajberg \n" #: camlibs/pccam600/pccam600.c:126 camlibs/pccam600/pccam600.c:155 #, c-format msgid "pccam600_init: Expected > %d blocks got %d" msgstr "pccam600_init: OÄekáváno > %d bloků, obdrženo %d" #: camlibs/pccam600/pccam600.c:139 #, c-format msgid "pccam600_get_file:got index %d but expected index > %d" msgstr "pccam600_get_file: získán index %d, ale oÄekáván index > %d" #: camlibs/pccam600/pccam600.c:180 #, c-format msgid "pccam600_close: return value was %d instead of %d" msgstr "pccam600_close: byla vrácena hodnota %d namísto %d" #: camlibs/pccam600/pccam600.c:213 #, c-format msgid "pccam600_init: Expected %d blocks got %d" msgstr "pccam600_init: oÄekáváno %d bloků, obdrženo %d" #: camlibs/pccam600/pccam600.c:224 #, c-format msgid "pccam600 init: Unexpected error: gp_port_read returned %d instead of %d" msgstr "" "pccam600_init: neoÄekávaná chyba: funkce gp_port_read vrátila %d namísto %d" #: camlibs/polaroid/pdc320.c:462 msgid "" "Download program for several Polaroid cameras. Originally written by Peter " "Desnoyers , and adapted for gphoto2 by Nathan " "Stenzel and Lutz Mueller .\n" "Polaroid 640SE testing was done by Michael Golden ." msgstr "" "Knihovna pro vícero přístrojů Polaroid.\n" "PůvodnÄ› vytvoÅ™il Peter Desnoyers , pro gphoto2 " "pÅ™izpůsobili Nathan Stenzel a Lutz " "Müller .\n" "Na přístroji Polaroid 640SE otestoval Michael Golden ." #: camlibs/polaroid/pdc320.c:492 #, c-format msgid "Model: %x, %x, %x, %x" msgstr "Model: %x, %x, %x, %x" #: camlibs/polaroid/pdc640.c:890 msgid "" "Download program for GrandTek 98x based cameras. Originally written by Chris " "Byrne , and adapted for gphoto2 by Lutz Mueller " ".Protocol enhancements and postprocessing for Jenoptik " "JD350e by Michael Trawny . Bugfixes by " "Marcus Meissner ." msgstr "" "Knihovna pro přístroje postavené na Äipech Å™ady GrandTek 98x.\n" "Původní autor: Chris Byrne , do gphoto2 pÅ™evedl\n" "Lutz Müller .\n" "VylepÅ¡ení protokolu a následné zpracování pořízeného snímku pro Jenoptik " "JD350e provedl\n" "Michael Trawny .\n" "Chyby opravil Marcus Meissner ." #: camlibs/polaroid/pdc700.c:161 camlibs/ptp2/config.c:6630 #: camlibs/ptp2/config.c:6704 camlibs/ptp2/config.c:6705 #: camlibs/ptp2/config.c:6877 camlibs/ptp2/config.c:6890 #: camlibs/ptp2/ptp.c:4173 msgid "Image Quality" msgstr "Obrazová kvalita" #: camlibs/polaroid/pdc700.c:162 camlibs/ptp2/config.c:6637 #: camlibs/ptp2/config.c:6638 camlibs/ptp2/config.c:6639 #: camlibs/ptp2/config.c:6640 camlibs/ptp2/ptp.c:4104 camlibs/ptp2/ptp.c:4175 #: camlibs/ptp2/ptp.c:4739 msgid "Image Size" msgstr "Velikost snímku" #: camlibs/polaroid/pdc700.c:163 msgid "Flash Setting" msgstr "Nastavení blesku" #: camlibs/polaroid/pdc700.c:166 msgid "Auto Power Off (minutes)" msgstr "Automat. vypnutí (v minutách)" #: camlibs/polaroid/pdc700.c:167 msgid "Information" msgstr "Informace" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1737 msgid "normal" msgstr "obyÄejné" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1738 #: camlibs/sierra/sierra.c:1607 camlibs/sierra/sierra.c:1614 #: camlibs/sierra/sierra.c:1819 msgid "fine" msgstr "jemné" #: camlibs/polaroid/pdc700.c:169 camlibs/ptp2/config.c:1740 #: camlibs/sierra/sierra.c:1608 camlibs/sierra/sierra.c:1616 #: camlibs/sierra/sierra.c:1821 msgid "superfine" msgstr "superjemné" #: camlibs/polaroid/pdc700.c:171 camlibs/ptp2/config.c:1786 #: camlibs/ptp2/config.c:4126 camlibs/sierra/epson-desc.c:116 #: camlibs/sierra/sierra.c:1505 camlibs/sierra/sierra.c:1519 #: camlibs/sierra/sierra.c:1754 msgid "auto" msgstr "automatické" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1787 camlibs/sierra/nikon-desc.c:565 #: camlibs/sierra/nikon-desc.c:570 msgid "on" msgstr "zapnuto" #: camlibs/polaroid/pdc700.c:171 camlibs/polaroid/pdc700.c:172 #: camlibs/ptp2/config.c:1785 camlibs/ptp2/config.c:2284 #: camlibs/sierra/nikon-desc.c:564 camlibs/sierra/nikon-desc.c:569 msgid "off" msgstr "vypnuto" #: camlibs/polaroid/pdc700.c:173 msgid "play" msgstr "pÅ™ehrávání" #: camlibs/polaroid/pdc700.c:173 msgid "record" msgstr "záznam" #: camlibs/polaroid/pdc700.c:173 msgid "menu" msgstr "nabídka" #: camlibs/polaroid/pdc700.c:174 msgid "battery" msgstr "akumulátor" #: camlibs/polaroid/pdc700.c:174 msgid "a/c adaptor" msgstr "síť. napájecí zdroj" #: camlibs/polaroid/pdc700.c:231 #, c-format msgid "Received unexpected header (%i)" msgstr "Obdržena neoÄekávaná hlaviÄka (%i)" #: camlibs/polaroid/pdc700.c:244 msgid "Received unexpected response" msgstr "Obdržena neoÄekávaná odpovÄ›Ä" #: camlibs/polaroid/pdc700.c:265 msgid "Checksum error" msgstr "Chyba v kontrolním souÄtu" #: camlibs/polaroid/pdc700.c:298 msgid "The camera did not accept the command." msgstr "Přístroj povel nepÅ™ijal." #: camlibs/polaroid/pdc700.c:351 #, c-format msgid "The camera sent more bytes than expected (%i)" msgstr "Přístroj zaslal více bajtů, než bylo oÄekáváno (%i)" #: camlibs/polaroid/pdc700.c:453 #, c-format msgid "" "Requested information about picture %i (= 0x%x), but got information about " "picture %i back" msgstr "" "Byly požadovány informace o snímku %i (= 0x%x), namísto toho ale obdrženy " "informace o jiném snímku (%i)" #: camlibs/polaroid/pdc700.c:916 #, c-format msgid "" "%i bytes of an unknown image format have been received. Please write to %s " "and ask for assistance." msgstr "" "Bylo pÅ™ijato %i bajtů neznámých obrazových dat. NapiÅ¡te prosím na %s a " "požádejte o souÄinnost." #: camlibs/polaroid/pdc700.c:941 msgid "" "Download program for Polaroid DC700 camera. Originally written by Ryan " "Lantzer for gphoto-4.x. Adapted for gphoto2 by Lutz " "Mueller ." msgstr "" "Program pro stahování snímků z přístroje Polaroid DC700. Původní autor Ryan " "Lantzer , pro gphoto2 upravil Lutz Müller ." #: camlibs/polaroid/pdc700.c:984 msgid "Camera" msgstr "Přístroj" #: camlibs/polaroid/pdc700.c:997 msgid "How long will it take until the camera powers off?" msgstr "Jak dlouho potrvá, než se přístroj vypne?" #: camlibs/polaroid/pdc700.c:1000 camlibs/ricoh/library.c:356 msgid "Image" msgstr "Snímek" #: camlibs/polaroid/pdc700.c:1111 #, c-format msgid "" "Date: %i/%02i/%02i %02i:%02i:%02i\n" "Pictures taken: %i\n" "Free pictures: %i\n" "Software version: %s\n" "Baudrate: %s\n" "Memory: %i megabytes\n" "Camera mode: %s\n" "Image quality: %s\n" "Flash setting: %s\n" "Information: %s\n" "Timer: %s\n" "LCD: %s\n" "Auto power off: %i minutes\n" "Power source: %s" msgstr "" "Datum: %i/%02i/%02i %02i:%02i:%02i\n" "Uložených snímků: %i\n" "Volná kapacita (snímků): %i\n" "Verze firmware: %s\n" "Rychlost komunikace: %s\n" "Paměť: %i MB\n" "Režim přístroje: %s\n" "Obrazová kvalita: %s\n" "Nastavení blesku %s\n" "Informace: %s\n" "Prodleva samospouÅ¡tÄ›: %s\n" "Displej: %s\n" "Prodleva automat. vypnutí: %i minut\n" "Napájení: %s" #: camlibs/polaroid/pdc700.c:1235 #, c-format msgid "The requested port type (%i) is not supported by this driver." msgstr "Požadovaný typ portu (%i) není tímto ovladaÄem podporován." #: camlibs/ptp2/config.c:151 msgid "CHDK did not leave recording mode." msgstr "" #: camlibs/ptp2/config.c:412 camlibs/ptp2/config.c:476 msgid "Sorry, your Canon camera does not support Canon capture" msgstr "Tento typ přístroje Canon neumožňuje dálkovÄ› řízené snímání " #: camlibs/ptp2/config.c:663 camlibs/ptp2/config.c:716 #: camlibs/ptp2/config.c:762 camlibs/ptp2/config.c:835 #: camlibs/ptp2/config.c:887 camlibs/ptp2/config.c:961 #: camlibs/ptp2/config.c:969 camlibs/ptp2/config.c:1001 #: camlibs/ptp2/config.c:1011 camlibs/ptp2/config.c:1035 #, c-format msgid "Unknown value %04x" msgstr "Neznámá hodnota %04x" #: camlibs/ptp2/config.c:694 camlibs/ptp2/config.c:862 #: camlibs/ptp2/config.c:910 #, c-format msgid "Unknown value %04d" msgstr "Neznámá hodnota %04d" #: camlibs/ptp2/config.c:1065 camlibs/ptp2/config.c:1082 #: camlibs/ptp2/config.c:1191 camlibs/ptp2/config.c:1393 #, c-format msgid "unexpected datatype %i" msgstr "neoÄekávaný typ dat %i" #: camlibs/ptp2/config.c:1333 msgid "Target value is not in enumeration." msgstr "" #: camlibs/ptp2/config.c:1403 camlibs/ptp2/config.c:1755 #: camlibs/ptp2/config.c:1768 camlibs/ptp2/config.c:1797 #: camlibs/ptp2/config.c:1834 camlibs/ptp2/config.c:1895 #: camlibs/ptp2/config.c:3955 camlibs/ptp2/config.c:3974 #: camlibs/ptp2/config.c:3992 camlibs/ptp2/config.c:4032 #: camlibs/ptp2/ptp.c:4944 camlibs/ptp2/ptp.c:5219 camlibs/ptp2/ptp.c:5359 #: camlibs/ptp2/ptp.c:5394 camlibs/ptp2/ptp.c:5434 #: camlibs/sierra/olympus-desc.c:639 msgid "Manual" msgstr "RuÄní" #: camlibs/ptp2/config.c:1404 camlibs/ptp2/config.c:3975 #: camlibs/ptp2/ptp.c:4945 camlibs/ptp2/ptp.c:4956 msgid "Automatic" msgstr "Automatické" #: camlibs/ptp2/config.c:1405 camlibs/ptp2/ptp.c:4946 msgid "One-push Automatic" msgstr "Jednorázové automatické" #: camlibs/ptp2/config.c:1407 camlibs/ptp2/config.c:4011 #: camlibs/ptp2/config.c:4030 camlibs/ptp2/ptp.c:4948 camlibs/ptp2/ptp.c:5416 #: camlibs/ricoh/library.c:328 camlibs/sierra/nikon-desc.c:285 #: camlibs/sierra/olympus-desc.c:557 camlibs/sierra/olympus-desc.c:576 #: camlibs/sierra/sierra.c:1086 camlibs/sierra/sierra.c:1095 #: camlibs/sierra/sierra.c:1374 msgid "Fluorescent" msgstr "Výbojkové" #: camlibs/ptp2/config.c:1408 camlibs/ptp2/config.c:3031 #: camlibs/ptp2/config.c:4010 camlibs/ptp2/config.c:4029 #: camlibs/ptp2/ptp.c:5415 camlibs/sierra/olympus-desc.c:558 #: camlibs/sierra/olympus-desc.c:577 camlibs/sierra/olympus-desc.c:595 #: camlibs/sierra/olympus-desc.c:616 camlibs/sierra/sierra.c:1087 #: camlibs/sierra/sierra.c:1097 camlibs/sierra/sierra.c:1376 msgid "Tungsten" msgstr "Žárovka" #: camlibs/ptp2/config.c:1410 camlibs/ptp2/config.c:1429 #: camlibs/ptp2/config.c:3035 camlibs/ptp2/config.c:4009 #: camlibs/ptp2/config.c:4028 camlibs/ptp2/ptp.c:4951 camlibs/ptp2/ptp.c:5414 #: camlibs/sierra/nikon-desc.c:288 camlibs/sierra/olympus-desc.c:559 #: camlibs/sierra/olympus-desc.c:578 camlibs/sierra/olympus-desc.c:599 #: camlibs/sierra/olympus-desc.c:622 camlibs/sierra/sierra.c:1088 #: camlibs/sierra/sierra.c:1100 camlibs/sierra/sierra.c:1378 msgid "Cloudy" msgstr "Zataženo" #: camlibs/ptp2/config.c:1411 camlibs/ptp2/config.c:1420 #: camlibs/ptp2/config.c:1428 camlibs/ptp2/config.c:3036 #: camlibs/ptp2/ptp.c:4952 msgid "Shade" msgstr "Ve stínu" #: camlibs/ptp2/config.c:1412 camlibs/ptp2/config.c:4014 #: camlibs/ptp2/config.c:4035 camlibs/ptp2/config.c:6650 #: camlibs/ptp2/config.c:6651 camlibs/ptp2/ptp.c:4154 camlibs/ptp2/ptp.c:4781 #: camlibs/ptp2/ptp.c:4953 camlibs/ptp2/ptp.c:5419 msgid "Color Temperature" msgstr "Barevná teplota" #: camlibs/ptp2/config.c:1413 camlibs/ptp2/config.c:1435 #: camlibs/ptp2/config.c:3040 camlibs/ptp2/ptp.c:4954 camlibs/ptp2/ptp.c:5417 #: camlibs/sierra/nikon-desc.c:287 camlibs/sierra/olympus-desc.c:621 msgid "Preset" msgstr "PÅ™ednastavené" #: camlibs/ptp2/config.c:1415 msgid "Fluorescent Lamp 1" msgstr "Výbojkové svítidlo 1" #: camlibs/ptp2/config.c:1416 msgid "Fluorescent Lamp 2" msgstr "Výbojkové svítidlo 2" #: camlibs/ptp2/config.c:1417 msgid "Fluorescent Lamp 3" msgstr "Výbojkové svítidlo 3" #: camlibs/ptp2/config.c:1418 msgid "Fluorescent Lamp 4" msgstr "Výbojkové svítidlo 4" #: camlibs/ptp2/config.c:1419 msgid "Fluorescent Lamp 5" msgstr "Výbojkové svítidlo 5" #: camlibs/ptp2/config.c:1421 camlibs/ptp2/config.c:1434 msgid "Choose Color Temperature" msgstr "Zvolte barevnou teplotu" #: camlibs/ptp2/config.c:1422 msgid "Preset Custom 1" msgstr "PÅ™ednastavené uživatelem 1" #: camlibs/ptp2/config.c:1423 msgid "Preset Custom 2" msgstr "PÅ™ednastavené uživatelem 2" #: camlibs/ptp2/config.c:1424 msgid "Preset Custom 3" msgstr "PÅ™ednastavené uživatelem 3" #: camlibs/ptp2/config.c:1425 msgid "Preset Custom 4" msgstr "PÅ™ednastavené uživatelem 4" #: camlibs/ptp2/config.c:1426 msgid "Preset Custom 5" msgstr "PÅ™ednastavené uživatelem 5" #: camlibs/ptp2/config.c:1430 #, fuzzy msgid "Fluorescent: Warm White" msgstr "Výbojkové svítidlo 1" #: camlibs/ptp2/config.c:1431 #, fuzzy msgid "Fluorescent: Cold White" msgstr "Výbojkové H" #: camlibs/ptp2/config.c:1432 #, fuzzy msgid "Fluorescent: Day White" msgstr "Výbojkové svítidlo 1" #: camlibs/ptp2/config.c:1433 #, fuzzy msgid "Fluorescent: Daylight" msgstr "Výbojkové H" #: camlibs/ptp2/config.c:1441 camlibs/ptp2/config.c:4532 #: camlibs/ptp2/config.c:4543 camlibs/ptp2/config.c:4554 #: camlibs/ptp2/config.c:4566 camlibs/ptp2/ptp.c:4941 msgid "JPEG Fine" msgstr "jemný JPEG" #: camlibs/ptp2/config.c:1442 camlibs/ptp2/config.c:4531 #: camlibs/ptp2/config.c:4542 camlibs/ptp2/config.c:4553 #: camlibs/ptp2/config.c:4565 msgid "JPEG Normal" msgstr "obyÄejný JPEG" #: camlibs/ptp2/config.c:1443 msgid "RAW + JPEG Fine" msgstr "RAW + jemný JPEG" #: camlibs/ptp2/config.c:1444 msgid "RAW + JPEG Normal" msgstr "RAW + obyÄejný JPEG" #: camlibs/ptp2/config.c:1449 msgid "Single frame" msgstr "Jednotlivý snímek" #: camlibs/ptp2/config.c:1450 camlibs/ptp2/config.c:2304 msgid "Continuous low speed" msgstr "NepÅ™etržité snímání s delší prodl. mezi snímky" #: camlibs/ptp2/config.c:1451 camlibs/ptp2/config.c:2303 msgid "Continuous high speed" msgstr "NepÅ™etržité snímání s kratší prodl. mezi snímky" #: camlibs/ptp2/config.c:1452 msgid "Self-timer" msgstr "Samospoušť" #: camlibs/ptp2/config.c:1453 msgid "Mup Mirror up" msgstr "Zdvihnutí zrcátka" #: camlibs/ptp2/config.c:1735 msgid "undefined" msgstr "neurÄené" #: camlibs/ptp2/config.c:1736 msgid "economy" msgstr "ekonomické" #: camlibs/ptp2/config.c:1739 msgid "lossless" msgstr "bezztrátové" #: camlibs/ptp2/config.c:1745 camlibs/ptp2/config.c:2114 #: camlibs/ptp2/config.c:3973 camlibs/ptp2/library.c:5028 #: camlibs/ptp2/library.c:5042 camlibs/ptp2/ptp.c:4965 camlibs/ptp2/ptp.c:5313 #: camlibs/ptp2/ptp.c:5319 camlibs/ptp2/ptp.c:5326 camlibs/ptp2/ptp.c:5488 #: camlibs/ptp2/ptp.c:5701 msgid "Undefined" msgstr "Nedefinováno" #: camlibs/ptp2/config.c:1747 camlibs/ptp2/ptp.c:5328 msgid "CRW" msgstr "CRW (Canon RAW)" #: camlibs/ptp2/config.c:1753 camlibs/ptp2/config.c:1766 msgid "TV" msgstr "Exp. Äas ruÄnÄ›, zaclonÄ›ní automat." #: camlibs/ptp2/config.c:1754 camlibs/ptp2/config.c:1767 msgid "AV" msgstr "ZaclonÄ›ní ruÄnÄ›, exp. Äas automat." #: camlibs/ptp2/config.c:1756 camlibs/ptp2/config.c:1770 #: camlibs/ptp2/ptp.c:5353 msgid "A_DEP" msgstr "" "Max. svÄ›tla (min. zaclon.) pÅ™i dost. hl. ostr. (pro AUTOMAT. zvol. objekty)" #: camlibs/ptp2/config.c:1757 camlibs/ptp2/ptp.c:5354 msgid "M_DEP" msgstr "" "Max. svÄ›tla (min. zaclon.) pÅ™i dost. hl. ostr. (pro RUÄŒNÄš zvol. nejbl. a " "nejvzd. objekt)" #: camlibs/ptp2/config.c:1771 msgid "DEP" msgstr "Režim urÄování hloubky ostrosti" #: camlibs/ptp2/config.c:1772 camlibs/ptp2/config.c:3928 #: camlibs/ptp2/config.c:3950 camlibs/ptp2/config.c:4012 #: camlibs/ptp2/ptp.c:5017 camlibs/ptp2/ptp.c:5182 #: camlibs/sierra/epson-desc.c:171 camlibs/sierra/sierra.c:1563 #: camlibs/sierra/sierra.c:1570 camlibs/sierra/sierra.c:1790 msgid "Custom" msgstr "Uživatelské" #: camlibs/ptp2/config.c:1773 msgid "Lock" msgstr "Zámek" #: camlibs/ptp2/config.c:1775 camlibs/ptp2/config.c:2865 #: camlibs/ptp2/config.c:2882 camlibs/ptp2/config.c:2904 #: camlibs/ptp2/config.c:3103 camlibs/ptp2/ptp.c:4986 msgid "Night Portrait" msgstr "NoÄní portrét" #: camlibs/ptp2/config.c:1776 camlibs/ptp2/config.c:2864 #: camlibs/ptp2/config.c:2902 camlibs/ptp2/config.c:3070 #: camlibs/ptp2/config.c:3089 camlibs/ptp2/ptp.c:4984 camlibs/ptp2/ptp.c:5367 msgid "Sports" msgstr "Sporty" #: camlibs/ptp2/config.c:1778 camlibs/ptp2/config.c:1942 #: camlibs/ptp2/config.c:2862 camlibs/ptp2/config.c:2878 #: camlibs/ptp2/config.c:2900 camlibs/ptp2/config.c:3068 #: camlibs/ptp2/config.c:3087 camlibs/ptp2/config.c:3927 #: camlibs/ptp2/ptp.c:4982 camlibs/ptp2/ptp.c:5181 camlibs/st2205/library.c:513 #: camlibs/st2205/library.c:526 msgid "Landscape" msgstr "Krajina" #: camlibs/ptp2/config.c:1779 msgid "Closeup" msgstr "Zblízka" #: camlibs/ptp2/config.c:1780 msgid "Flash Off" msgstr "Vypnout blesk" #: camlibs/ptp2/config.c:1788 msgid "red eye suppression" msgstr "Omezení jevu Äervených oÄí" #: camlibs/ptp2/config.c:1789 msgid "fill in" msgstr "výplňový záblesk" #: camlibs/ptp2/config.c:1790 msgid "auto + red eye suppression" msgstr "Odpálen dle potÅ™eby + omezení jevu Äervených oÄí" #: camlibs/ptp2/config.c:1791 msgid "on + red eye suppression" msgstr "Odpálen vždy + omezení jevu Äervených oÄí" #: camlibs/ptp2/config.c:1796 msgid "iTTL" msgstr "Intenzita záblesku dle pomoc. pÅ™i vyklop. zrcátku" #: camlibs/ptp2/config.c:1798 camlibs/ptp2/ptp.c:5220 msgid "Commander" msgstr "Režim řídícího blesku" #: camlibs/ptp2/config.c:1799 msgid "Repeating" msgstr "Opakované" #: camlibs/ptp2/config.c:1804 camlibs/ptp2/config.c:1833 #: camlibs/ptp2/config.c:1893 camlibs/ptp2/ptp.c:5222 msgid "TTL" msgstr "Měření skrze ÄoÄky objektivu" #: camlibs/ptp2/config.c:1805 camlibs/ptp2/config.c:1894 #: camlibs/ptp2/ptp.c:5223 msgid "Auto Aperture" msgstr "Automat. nastavení zaclonÄ›ní" #: camlibs/ptp2/config.c:1806 camlibs/ptp2/ptp.c:5224 msgid "Full Manual" msgstr "PlnÄ› ruÄní" #: camlibs/ptp2/config.c:1902 camlibs/ptp2/config.c:3977 #: camlibs/ptp2/ptp.c:5190 msgid "AF-S" msgstr "jednoráz. automat. zaostÅ™ení pÅ™i namáÄknutí spouÅ¡tÄ›" #: camlibs/ptp2/config.c:1903 camlibs/ptp2/config.c:3978 #: camlibs/ptp2/config.c:3984 camlibs/ptp2/ptp.c:5191 msgid "AF-C" msgstr "průbežné automatické zaostÅ™ování" #: camlibs/ptp2/config.c:1904 camlibs/ptp2/config.c:3979 #: camlibs/ptp2/config.c:3983 camlibs/ptp2/ptp.c:5192 msgid "AF-A" msgstr "automat. volba jednorázového Äi průběžného zaostÅ™ení" #: camlibs/ptp2/config.c:1905 camlibs/ptp2/ptp.c:5193 msgid "MF (fixed)" msgstr "MF (napevno)" #: camlibs/ptp2/config.c:1906 camlibs/ptp2/ptp.c:5194 msgid "MF (selection)" msgstr "MF (výbÄ›r)" #: camlibs/ptp2/config.c:1928 msgid "Center-weighted" msgstr "S důrazem na stÅ™ed zábÄ›ru" #: camlibs/ptp2/config.c:1930 camlibs/ptp2/config.c:3256 #: camlibs/ptp2/config.c:3831 camlibs/ptp2/ptp.c:4961 msgid "Average" msgstr "ZprůmÄ›rované" #: camlibs/ptp2/config.c:1931 msgid "Evaluative" msgstr "Vyhodnocující" #: camlibs/ptp2/config.c:1932 msgid "Partial" msgstr "ČásteÄné" #: camlibs/ptp2/config.c:1933 msgid "Center-weighted average" msgstr "ZprůmÄ›rované s důrazem na stÅ™ed zábÄ›ru" #: camlibs/ptp2/config.c:1934 msgid "Spot metering interlocked with AF frame" msgstr "Bodové měření propojené s oblastí automatického zaostÅ™ování" #: camlibs/ptp2/config.c:1935 msgid "Multi spot" msgstr "Vícebodové" #: camlibs/ptp2/config.c:1944 msgid "Faithful" msgstr "VÄ›rné" #: camlibs/ptp2/config.c:1945 camlibs/ptp2/ptp.c:5369 camlibs/ptp2/ptp.c:5501 msgid "Monochrome" msgstr "Monochromatické" #: camlibs/ptp2/config.c:1947 msgid "User defined 1" msgstr "UrÄené uživatelem 1" #: camlibs/ptp2/config.c:1948 msgid "User defined 2" msgstr "UrÄené uživatelem 2" #: camlibs/ptp2/config.c:1949 msgid "User defined 3" msgstr "UrÄené uživatelem 3" #: camlibs/ptp2/config.c:2035 camlibs/ptp2/ptp.c:5404 msgid "Focusing Point on Center Only, Manual" msgstr "ZaostÅ™ení pouze na stÅ™ed – ruÄní" #: camlibs/ptp2/config.c:2036 camlibs/ptp2/ptp.c:5405 msgid "Focusing Point on Center Only, Auto" msgstr "ZaostÅ™ení pouze na stÅ™ed – automat." #: camlibs/ptp2/config.c:2037 camlibs/ptp2/ptp.c:5406 msgid "Multiple Focusing Points (No Specification), Manual" msgstr "ZaostÅ™ení na více bodů (neurÄeno), ruÄní" #: camlibs/ptp2/config.c:2038 camlibs/ptp2/ptp.c:5407 msgid "Multiple Focusing Points, Auto" msgstr "ZaostÅ™ení na více bodů – automat." #: camlibs/ptp2/config.c:2039 camlibs/ptp2/ptp.c:5408 msgid "Multiple Focusing Points (Right)" msgstr "ZostÅ™ení na více bodů (vpravo)" #: camlibs/ptp2/config.c:2040 camlibs/ptp2/ptp.c:5409 msgid "Multiple Focusing Points (Center)" msgstr "ZostÅ™ení na více bodů (stÅ™ed)" #: camlibs/ptp2/config.c:2041 camlibs/ptp2/ptp.c:5410 msgid "Multiple Focusing Points (Left)" msgstr "ZostÅ™ení na více bodů (vlevo)" #: camlibs/ptp2/config.c:2046 camlibs/ptp2/config.c:2055 #: camlibs/ptp2/config.c:2064 camlibs/ptp2/ptp.c:5330 msgid "Large" msgstr "Velké" #: camlibs/ptp2/config.c:2047 camlibs/ptp2/ptp.c:5331 msgid "Medium 1" msgstr "StÅ™ední 1" #: camlibs/ptp2/config.c:2048 camlibs/ptp2/ptp.c:5333 msgid "Medium 2" msgstr "StÅ™ední 2" #: camlibs/ptp2/config.c:2049 camlibs/ptp2/ptp.c:5334 msgid "Medium 3" msgstr "StÅ™ední 3" #: camlibs/ptp2/config.c:2050 camlibs/ptp2/config.c:2057 #: camlibs/ptp2/config.c:2062 camlibs/ptp2/ptp.c:5332 msgid "Small" msgstr "Malé" #: camlibs/ptp2/config.c:2069 msgid "16:9" msgstr "" #: camlibs/ptp2/config.c:2070 msgid "3:2" msgstr "" #: camlibs/ptp2/config.c:2077 camlibs/ptp2/config.c:3803 #: camlibs/ptp2/config.c:3821 camlibs/ptp2/ptp.c:5067 camlibs/ptp2/ptp.c:5070 #: camlibs/ptp2/ptp.c:5337 msgid "10 seconds" msgstr "10 vteÅ™in" #: camlibs/ptp2/config.c:2078 camlibs/ptp2/config.c:3819 #: camlibs/ptp2/config.c:3998 camlibs/ptp2/ptp.c:5065 camlibs/ptp2/ptp.c:5338 msgid "2 seconds" msgstr "2 vteÅ™iny" #: camlibs/ptp2/config.c:2088 msgid "TFT" msgstr "displej přístroje" #: camlibs/ptp2/config.c:2089 msgid "PC" msgstr "monitor poÄítaÄe" #: camlibs/ptp2/config.c:2090 msgid "TFT + PC" msgstr "displej přístroje i monitor poÄítaÄ" #: camlibs/ptp2/config.c:2092 #, fuzzy msgid "Setting 4" msgstr "Typ ÄŒB nastavení" #: camlibs/ptp2/config.c:2093 #, fuzzy msgid "Setting 5" msgstr "Typ ÄŒB nastavení" #: camlibs/ptp2/config.c:2094 #, fuzzy msgid "Setting 6" msgstr "Typ ÄŒB nastavení" #: camlibs/ptp2/config.c:2095 #, fuzzy msgid "Setting 7" msgstr "Typ ÄŒB nastavení" #: camlibs/ptp2/config.c:2101 camlibs/ptp2/config.c:3813 #: camlibs/ptp2/ptp.c:5153 msgid "Card" msgstr "paměťová karta" #: camlibs/ptp2/config.c:2116 camlibs/ptp2/config.c:2142 #: camlibs/ptp2/config.c:2168 camlibs/ptp2/ptp.c:5490 msgid "Video OUT" msgstr "Videovýstup" #: camlibs/ptp2/config.c:2138 camlibs/ptp2/config.c:2152 #: camlibs/ptp2/config.c:2170 #, c-format msgid "Unknown %d" msgstr "Neznámé %d" #: camlibs/ptp2/config.c:2195 camlibs/ptp2/config.c:4043 msgid "Factory Default" msgstr "Tovární nastavení" #: camlibs/ptp2/config.c:2236 msgid "mRAW" msgstr "mRAW" #: camlibs/ptp2/config.c:2237 msgid "sRAW" msgstr "sRAW" #: camlibs/ptp2/config.c:2246 msgid "Smaller JPEG" msgstr "Menší JPEG" #: camlibs/ptp2/config.c:2247 msgid "Tiny JPEG" msgstr "Drobný JPEG" #: camlibs/ptp2/config.c:2249 msgid "mRAW + Large Fine JPEG" msgstr "mRAW + JPEG s vysokým rozliÅ¡. a ztrátový" #: camlibs/ptp2/config.c:2250 msgid "sRAW + Large Fine JPEG" msgstr "sRAW + JPEG s vysokým rozliÅ¡. a ztrátový" #: camlibs/ptp2/config.c:2252 msgid "mRAW + Medium Fine JPEG" msgstr "mRAW + JPEG se stÅ™edním rozliÅ¡. a ztrátový" #: camlibs/ptp2/config.c:2253 msgid "sRAW + Medium Fine JPEG" msgstr "sRAW + JPEG se stÅ™edním rozliÅ¡. a ztrátový" #: camlibs/ptp2/config.c:2256 camlibs/ptp2/config.c:2257 msgid "mRAW + Small Fine JPEG" msgstr "mRAW + JPEG s nízkým rozliÅ¡. a ztrátový" #: camlibs/ptp2/config.c:2258 camlibs/ptp2/config.c:2259 msgid "sRAW + Small Fine JPEG" msgstr "sRAW + JPEG s nízkým rozliÅ¡. a ztrátový" #: camlibs/ptp2/config.c:2261 msgid "mRAW + Large Normal JPEG" msgstr "mRAW + JPEG s vys. rozliÅ¡. a ztrátovÄ›jší" #: camlibs/ptp2/config.c:2262 msgid "sRAW + Large Normal JPEG" msgstr "sRAW + JPEG s vys. rozliÅ¡. a ztrátovÄ›jší" #: camlibs/ptp2/config.c:2264 msgid "mRAW + Medium Normal JPEG" msgstr "mRAW + JPEG se stÅ™ed. rozliÅ¡. a ztrátovÄ›jší" #: camlibs/ptp2/config.c:2265 msgid "sRAW + Medium Normal JPEG" msgstr "sRAW + JPEG se stÅ™ed. rozliÅ¡. a ztrátovÄ›jší" #: camlibs/ptp2/config.c:2268 camlibs/ptp2/config.c:2269 msgid "mRAW + Small Normal JPEG" msgstr "sRAW + JPEG s nízkým rozliÅ¡. a ztrátovÄ›jší" #: camlibs/ptp2/config.c:2270 camlibs/ptp2/config.c:2271 msgid "sRAW + Small Normal JPEG" msgstr "sRAW + JPEG s nízkým rozliÅ¡. a ztrátovÄ›jší" #: camlibs/ptp2/config.c:2272 #, fuzzy msgid "RAW + Smaller JPEG" msgstr "RAW + JPEG s nízkým rozl. a ménÄ› ztrát. kompr." #: camlibs/ptp2/config.c:2273 #, fuzzy msgid "mRAW + Smaller JPEG" msgstr "mRAW + JPEG s nízkým rozliÅ¡. a ztrátový" #: camlibs/ptp2/config.c:2274 #, fuzzy msgid "sRAW + Smaller JPEG" msgstr "sRAW + JPEG s nízkým rozliÅ¡. a ztrátový" #: camlibs/ptp2/config.c:2275 #, fuzzy msgid "RAW + Tiny JPEG" msgstr "Drobný JPEG" #: camlibs/ptp2/config.c:2276 #, fuzzy msgid "mRAW + Tiny JPEG" msgstr "mRAW + JPEG s vysokým rozliÅ¡. a ztrátový" #: camlibs/ptp2/config.c:2277 #, fuzzy msgid "sRAW + Tiny JPEG" msgstr "sRAW + JPEG s vysokým rozliÅ¡. a ztrátový" #: camlibs/ptp2/config.c:2302 camlibs/ptp2/ptp.c:5435 msgid "Continuous" msgstr "Průběžné" #: camlibs/ptp2/config.c:2305 msgid "Timer 10 sec" msgstr "Samospoušť 10 vteÅ™in" #: camlibs/ptp2/config.c:2306 msgid "Timer 2 sec" msgstr "Samospoušť 2 vteÅ™iny" #: camlibs/ptp2/config.c:2307 msgid "Single silent" msgstr "JednotlivÄ› tiÅ¡e" #: camlibs/ptp2/config.c:2308 msgid "Continuous silent" msgstr "NepÅ™eruÅ¡ovanÄ› tiÅ¡e" #: camlibs/ptp2/config.c:2400 camlibs/ptp2/config.c:2418 #: camlibs/ptp2/config.c:2441 camlibs/ptp2/config.c:6662 #: camlibs/ptp2/ptp.c:4364 #, c-format msgid "Auto ISO" msgstr "Automat. nastavení citlivosti (ISO)" #: camlibs/ptp2/config.c:2402 camlibs/ptp2/config.c:2420 #: camlibs/ptp2/config.c:2445 #, fuzzy, c-format msgid "Auto ISO Multi Frame Noise Reduction" msgstr "PotlaÄení Å¡umu pÅ™i vysoké citlivosti (ISO)" #: camlibs/ptp2/config.c:2405 camlibs/ptp2/config.c:2423 #, fuzzy, c-format msgid "%d Multi Frame Noise Reduction" msgstr "Omezení úrovnÄ› Å¡umu pÅ™i dlouhých expoziÄních Äasech" #: camlibs/ptp2/config.c:2453 #, fuzzy msgid "Multi Frame Noise Reduction" msgstr "PotlaÄení Å¡umu pÅ™i vysoké citlivosti (ISO)" #: camlibs/ptp2/config.c:2648 camlibs/ptp2/config.c:2676 #: camlibs/ptp2/config.c:3465 camlibs/ptp2/config.c:3510 #, fuzzy, c-format msgid "Time" msgstr "Samospoušť" #: camlibs/ptp2/config.c:2652 #, c-format msgid "%0.4fs" msgstr "%0.4f s" #: camlibs/ptp2/config.c:2682 #, c-format msgid "%d %d/%d" msgstr "%d %d/%d" #: camlibs/ptp2/config.c:2685 #, c-format msgid "%d/%d" msgstr "%d/%d" #: camlibs/ptp2/config.c:2688 #, c-format msgid "%f" msgstr "%f" #: camlibs/ptp2/config.c:2857 msgid "Creative" msgstr "Kreativní" #: camlibs/ptp2/config.c:2858 msgid "Action" msgstr "AkÄní" #: camlibs/ptp2/config.c:2866 camlibs/ptp2/config.c:3102 #: camlibs/ptp2/ptp.c:4985 msgid "Night Landscape" msgstr "NoÄní krajina" #: camlibs/ptp2/config.c:2867 camlibs/ptp2/config.c:3072 #: camlibs/ptp2/config.c:3091 msgid "Children" msgstr "DÄ›ti" #: camlibs/ptp2/config.c:2868 msgid "Automatic (No Flash)" msgstr "Automat (bez blesku)" #: camlibs/ptp2/config.c:2870 msgid "Intelligent Auto" msgstr "" #: camlibs/ptp2/config.c:2871 msgid "Superior Auto" msgstr "" #: camlibs/ptp2/config.c:2872 camlibs/ptp2/ptp.c:4806 #, fuzzy msgid "Movie" msgstr "Zvukový stopa k videu" #: camlibs/ptp2/config.c:2873 msgid "Tele-zoom Cont. Priority AE" msgstr "" #: camlibs/ptp2/config.c:2874 msgid "Sweep Panorama" msgstr "" #: camlibs/ptp2/config.c:2875 msgid "Intelligent Auto Flash Off" msgstr "" #: camlibs/ptp2/config.c:2876 #, fuzzy msgid "Sports Action" msgstr "Sporty" #: camlibs/ptp2/config.c:2879 camlibs/ptp2/config.c:2891 msgid "Sunset" msgstr "Západ Slunce" #: camlibs/ptp2/config.c:2880 #, fuzzy msgid "Night Scene" msgstr "NoÄní scéna" #: camlibs/ptp2/config.c:2881 #, fuzzy msgid "Hand-held Twilight" msgstr "Svit svíÄek" #: camlibs/ptp2/config.c:2883 camlibs/ptp2/ptp.c:4803 #, fuzzy msgid "Picture Effect" msgstr "Efekt miniatury" #: camlibs/ptp2/config.c:2888 msgid "Night landscape" msgstr "NoÄní krajina" #: camlibs/ptp2/config.c:2889 msgid "Party/Indoor" msgstr "Párty/interiér" #: camlibs/ptp2/config.c:2890 msgid "Beach/Snow" msgstr "Pláž/sníh" #: camlibs/ptp2/config.c:2892 msgid "Dusk/Dawn" msgstr "Stmívání/rozednÄ›ní" #: camlibs/ptp2/config.c:2893 msgid "Pet Portrait" msgstr "Portrét domác. mazlíÄků" #: camlibs/ptp2/config.c:2894 msgid "Candlelight" msgstr "Svit svíÄek" #: camlibs/ptp2/config.c:2895 msgid "Blossom" msgstr "KvÄ›ty" #: camlibs/ptp2/config.c:2896 msgid "Autumn colors" msgstr "Podzimní barvy" #: camlibs/ptp2/config.c:2897 msgid "Food" msgstr "Jídlo" #: camlibs/ptp2/config.c:2901 #, fuzzy msgid "Child" msgstr "DÄ›ti" #: camlibs/ptp2/config.c:2903 #, fuzzy msgid "Close up" msgstr "Zblízka" #: camlibs/ptp2/config.c:2912 msgid "A6400 (160-6400)" msgstr "" #: camlibs/ptp2/config.c:2913 msgid "A3200 (160-3200)" msgstr "" #: camlibs/ptp2/config.c:2914 msgid "A800 (160-800)" msgstr "" #: camlibs/ptp2/config.c:3032 #, fuzzy msgid "Flourescent" msgstr "Výbojkové" #: camlibs/ptp2/config.c:3039 msgid "Water" msgstr "" #: camlibs/ptp2/config.c:3046 msgid "1 EV" msgstr "1 EV" #: camlibs/ptp2/config.c:3047 msgid "2 EV" msgstr "2 EV" #: camlibs/ptp2/config.c:3048 msgid "3 EV" msgstr "3 EV" #: camlibs/ptp2/config.c:3057 camlibs/ptp2/config.c:4521 msgid "Extra high" msgstr "Extra vysoké" #: camlibs/ptp2/config.c:3073 camlibs/ptp2/config.c:3092 msgid "Scene" msgstr "Scéna" #: camlibs/ptp2/config.c:3074 camlibs/ptp2/config.c:3093 msgid "Effects" msgstr "Efekty" #: camlibs/ptp2/config.c:3075 #, fuzzy msgid "U1" msgstr "1" #: camlibs/ptp2/config.c:3076 #, fuzzy msgid "U2" msgstr "2" #: camlibs/ptp2/config.c:3104 #, fuzzy msgid "Back Light" msgstr "Podsvícení displeje" #: camlibs/ptp2/config.c:3105 msgid "Panorama" msgstr "" #: camlibs/ptp2/config.c:3106 #, fuzzy msgid "Smoothing" msgstr "HDR – vyhlazování" #: camlibs/ptp2/config.c:3107 msgid "Tilt-Shift" msgstr "" #: camlibs/ptp2/config.c:3108 #, fuzzy msgid "Select Color" msgstr "Zvolená barva" #: camlibs/ptp2/config.c:3113 camlibs/ptp2/ptp.c:4987 camlibs/ptp2/ptp.c:5431 msgid "Single Shot" msgstr "Jednotlivé snímky" #: camlibs/ptp2/config.c:3114 msgid "Burst" msgstr "Dávka" #: camlibs/ptp2/config.c:3115 camlibs/ptp2/ptp.c:4989 msgid "Timelapse" msgstr "ÄŒasosbÄ›rné snímání" #: camlibs/ptp2/config.c:3116 camlibs/ptp2/config.c:3124 #: camlibs/ptp2/ptp.c:4990 msgid "Continuous Low Speed" msgstr "Kontinuální snímání s delší prodlevou mezi snímky" #: camlibs/ptp2/config.c:3117 camlibs/ptp2/ptp.c:4991 msgid "Timer" msgstr "Samospoušť" #: camlibs/ptp2/config.c:3118 camlibs/ptp2/ptp.c:4993 msgid "Mirror Up" msgstr "Zdvihnutí zrcátka" #: camlibs/ptp2/config.c:3120 msgid "Quick Response Remote" msgstr "Dálk. ovl. poříz. dalšího snímku bez opÄ›tovného ostÅ™ení" #: camlibs/ptp2/config.c:3121 camlibs/ptp2/config.c:4241 #: camlibs/ptp2/ptp.c:5285 msgid "Delayed Remote" msgstr "Pozdržené vzdálené" #: camlibs/ptp2/config.c:3122 msgid "Quiet Release" msgstr "Režim tiché závÄ›rky" #: camlibs/ptp2/config.c:3125 #, fuzzy msgid "Selftimer 2s" msgstr "Samospoušť" #: camlibs/ptp2/config.c:3126 #, fuzzy msgid "Selftimer 10s" msgstr "Samospoušť" #: camlibs/ptp2/config.c:3127 #, fuzzy msgid "Bracketing C 0.3 Steps" msgstr "" "Více snímků s odstupňovanými hodnotami – poÄet snímků a velikosti kroků" #: camlibs/ptp2/config.c:3128 #, fuzzy msgid "Bracketing C 0.7 Steps" msgstr "" "Více snímků s odstupňovanými hodnotami – poÄet snímků a velikosti kroků" #: camlibs/ptp2/config.c:3129 #, fuzzy msgid "Bracketing C 1.0 Steps" msgstr "" "Více snímků s odstupňovanými hodnotami – poÄet snímků a velikosti kroků" #: camlibs/ptp2/config.c:3130 #, fuzzy msgid "Bracketing C 2.0 Steps" msgstr "" "Více snímků s odstupňovanými hodnotami – poÄet snímků a velikosti kroků" #: camlibs/ptp2/config.c:3131 #, fuzzy msgid "Bracketing C 3.0 Steps" msgstr "" "Více snímků s odstupňovanými hodnotami – poÄet snímků a velikosti kroků" #: camlibs/ptp2/config.c:3132 #, fuzzy msgid "Bracketing S 0.3 Steps" msgstr "" "Více snímků s odstupňovanými hodnotami – poÄet snímků a velikosti kroků" #: camlibs/ptp2/config.c:3133 #, fuzzy msgid "Bracketing S 0.7 Steps" msgstr "" "Více snímků s odstupňovanými hodnotami – poÄet snímků a velikosti kroků" #: camlibs/ptp2/config.c:3134 #, fuzzy msgid "Bracketing S 1.0 Steps" msgstr "" "Více snímků s odstupňovanými hodnotami – poÄet snímků a velikosti kroků" #: camlibs/ptp2/config.c:3135 #, fuzzy msgid "Bracketing S 2.0 Steps" msgstr "" "Více snímků s odstupňovanými hodnotami – poÄet snímků a velikosti kroků" #: camlibs/ptp2/config.c:3136 #, fuzzy msgid "Bracketing S 3.0 Steps" msgstr "" "Více snímků s odstupňovanými hodnotami – poÄet snímků a velikosti kroků" #: camlibs/ptp2/config.c:3137 #, fuzzy msgid "Bracketing WB Lo" msgstr "Více snímků s odstupňováním daného nastavení" #: camlibs/ptp2/config.c:3138 #, fuzzy msgid "Bracketing WB Hi" msgstr "Více snímků s odstupňováním daného nastavení" #: camlibs/ptp2/config.c:3147 camlibs/ptp2/ptp.c:4995 msgid "Centre-spot" msgstr "StÅ™edový bod" #: camlibs/ptp2/config.c:3148 camlibs/ptp2/ptp.c:4963 camlibs/ptp2/ptp.c:4996 msgid "Multi-spot" msgstr "Vícebodové" #: camlibs/ptp2/config.c:3149 camlibs/ptp2/config.c:3161 #: camlibs/ptp2/ptp.c:4997 msgid "Single Area" msgstr "Jediná oblast" #: camlibs/ptp2/config.c:3150 camlibs/ptp2/ptp.c:4998 msgid "Closest Subject" msgstr "Nejbližší objekt" #: camlibs/ptp2/config.c:3151 camlibs/ptp2/ptp.c:4999 msgid "Group Dynamic" msgstr "Kterýmkoli ze senzorů" #: camlibs/ptp2/config.c:3152 msgid "Single-area AF" msgstr "Automat. zaostÅ™ení na jedinou oblast" #: camlibs/ptp2/config.c:3153 msgid "Dynamic-area AF" msgstr "Automatické zaostÅ™ení kterýmkoli ze senzorů" #: camlibs/ptp2/config.c:3154 #, fuzzy msgid "Group-dynamic AF" msgstr "Automatické zaostÅ™ení kterýmkoli ze skupiny vybraných senzorů" #: camlibs/ptp2/config.c:3155 msgid "Dynamic-area AF with closest subject priority" msgstr "" "Automat. zaostÅ™ení kterýmkoli ze senzorů s upÅ™ednostnÄ›ním nejbližšího objektu" #: camlibs/ptp2/config.c:3162 #, fuzzy msgid "Dynamic Area (9)" msgstr "PromÄ›nlivá oblast automatického ostÅ™ení" #: camlibs/ptp2/config.c:3163 #, fuzzy msgid "Dynamic Area (21)" msgstr "PromÄ›nlivá oblast automatického ostÅ™ení" #: camlibs/ptp2/config.c:3164 #, fuzzy msgid "Dynamic Area (51)" msgstr "PromÄ›nlivá oblast automatického ostÅ™ení" #: camlibs/ptp2/config.c:3165 #, fuzzy msgid "3D Tracking" msgstr "Více snímků s odstupňovaným projasnÄ›ním stínů" #: camlibs/ptp2/config.c:3171 msgid "sRGB (portrait)" msgstr "sRGB (optimální pro portréty)" #: camlibs/ptp2/config.c:3172 camlibs/ptp2/config.c:3179 #: camlibs/ptp2/config.c:3185 msgid "AdobeRGB" msgstr "AdobeRGB" #: camlibs/ptp2/config.c:3173 msgid "sRGB (nature)" msgstr "sRGB (optimální pro přírodu)" #: camlibs/ptp2/config.c:3178 camlibs/ptp2/config.c:3184 msgid "sRGB" msgstr "sRGB" #: camlibs/ptp2/config.c:3226 #, c-format msgid "Unknown value 0x%04x" msgstr "Neznámá hodnota 0x%04x" #: camlibs/ptp2/config.c:3246 camlibs/ptp2/ptp.c:5147 msgid "Centre" msgstr "UprostÅ™ed" #: camlibs/ptp2/config.c:3247 camlibs/ptp2/ptp.c:5148 msgid "Top" msgstr "NahoÅ™e" #: camlibs/ptp2/config.c:3248 camlibs/ptp2/ptp.c:5149 msgid "Bottom" msgstr "Dole" #: camlibs/ptp2/config.c:3249 camlibs/ptp2/ptp.c:5150 msgid "Left" msgstr "Vlevo" #: camlibs/ptp2/config.c:3250 camlibs/ptp2/ptp.c:5151 msgid "Right" msgstr "Vpravo" #: camlibs/ptp2/config.c:3257 camlibs/sierra/olympus-desc.c:790 msgid "Center Weighted" msgstr "S prioritou stÅ™edu zábÄ›ru" #: camlibs/ptp2/config.c:3258 msgid "Multi Spot" msgstr "Vícebodové" #: camlibs/ptp2/config.c:3259 msgid "Center Spot" msgstr "Bod ve stÅ™edu" #: camlibs/ptp2/config.c:3266 msgid "Automatic Flash" msgstr "Blesk dle potÅ™eby" #: camlibs/ptp2/config.c:3268 camlibs/ptp2/ptp.c:4968 msgid "Fill flash" msgstr "Vyplňující blesk" #: camlibs/ptp2/config.c:3269 msgid "Red-eye automatic" msgstr "Odpálen dle potÅ™eby s omezením jevu Äervených oÄí" #: camlibs/ptp2/config.c:3270 msgid "Red-eye fill" msgstr "Vyplňující blesk s omezením jevu Äervených oÄí" #: camlibs/ptp2/config.c:3271 camlibs/ptp2/ptp.c:4971 msgid "External sync" msgstr "VnÄ›jší synchronizace" #: camlibs/ptp2/config.c:3273 camlibs/ptp2/ptp.c:4973 msgid "Auto Slow Sync" msgstr "Automatická pomalá synchronizace" #: camlibs/ptp2/config.c:3274 camlibs/ptp2/ptp.c:4974 msgid "Rear Curtain Sync + Slow Sync" msgstr "Synchronizace s koncem exp. + pomalá synchronizace" #: camlibs/ptp2/config.c:3275 camlibs/ptp2/ptp.c:4975 msgid "Red-eye Reduction + Slow Sync" msgstr "Omezení jevu Äervenách oÄí + pomalá synchronizace" #: camlibs/ptp2/config.c:3276 msgid "Front-curtain sync" msgstr "Synchronizace se zaÄátkem expozice" #: camlibs/ptp2/config.c:3277 msgid "Red-eye reduction" msgstr "Omezení jevu Äervených oÄí" #: camlibs/ptp2/config.c:3278 msgid "Red-eye reduction with slow sync" msgstr "Omezení jevu Äervenách oÄí + pomalá synchronizace" #: camlibs/ptp2/config.c:3279 msgid "Slow sync" msgstr "Pomalá synchronizace" #: camlibs/ptp2/config.c:3280 msgid "Rear-curtain with slow sync" msgstr "Pomalá synchronizace s koncem exp." #: camlibs/ptp2/config.c:3281 msgid "Rear-curtain sync" msgstr "Synchronizace s koncem exp." #: camlibs/ptp2/config.c:3283 #, fuzzy msgid "Rear Curtain Sync" msgstr "Synchronizace s koncem exp." #: camlibs/ptp2/config.c:3284 msgid "Wireless Sync" msgstr "" #: camlibs/ptp2/config.c:3285 camlibs/sierra/epson-desc.c:155 #: camlibs/sierra/sierra.c:1027 camlibs/sierra/sierra.c:1038 #: camlibs/sierra/sierra.c:1335 camlibs/sierra/sierra.c:1537 #: camlibs/sierra/sierra.c:1547 camlibs/sierra/sierra.c:1774 msgid "Slow Sync" msgstr "Pomalá synchronizace" #: camlibs/ptp2/config.c:3291 camlibs/ricoh/library.c:330 #: camlibs/sierra/epson-desc.c:137 msgid "Black & White" msgstr "ÄŒerná a bílá" #: camlibs/ptp2/config.c:3297 msgid "Night Vision" msgstr "NoÄní vidÄ›ní" #: camlibs/ptp2/config.c:3298 msgid "Color sketch" msgstr "Barevný náÄrtek" #: camlibs/ptp2/config.c:3299 msgid "Miniature effect" msgstr "Efekt miniatury" #: camlibs/ptp2/config.c:3300 msgid "Selective color" msgstr "Zvolená barva" #: camlibs/ptp2/config.c:3301 msgid "Silhouette" msgstr "Obrys" #: camlibs/ptp2/config.c:3302 msgid "High key" msgstr "SvÄ›tlé tóny, nízký kontrast" #: camlibs/ptp2/config.c:3303 msgid "Low key" msgstr "Tmavé tóny, vysoký kontrast" #: camlibs/ptp2/config.c:3388 camlibs/ptp2/config.c:3432 msgid "infinite" msgstr "nekoneÄno" #: camlibs/ptp2/config.c:3390 camlibs/ptp2/config.c:3398 #: camlibs/ptp2/config.c:3436 #, c-format msgid "%d mm" msgstr "%d mm" #: camlibs/ptp2/config.c:3461 camlibs/ptp2/config.c:3506 #, c-format msgid "x 200" msgstr "" #: camlibs/ptp2/config.c:3770 msgid "Face-priority AF" msgstr "Automat. zaostÅ™ení s důrazem na obliÄeje" #: camlibs/ptp2/config.c:3771 msgid "Wide-area AF" msgstr "Automat. zaostÅ™ení pro Å¡irokoúhlé zábÄ›ry" #: camlibs/ptp2/config.c:3772 msgid "Normal-area AF" msgstr "Automat. zaostÅ™ení pro běžný úhel zábÄ›ru" #: camlibs/ptp2/config.c:3773 msgid "Subject-tracking AF" msgstr "Automat. zaostÅ™ení na pohybující se objekt" #: camlibs/ptp2/config.c:3778 msgid "Single-servo AF" msgstr "Jednoráz. automat. zaostÅ™ení pÅ™i namáÄknutí spouÅ¡tÄ›" #: camlibs/ptp2/config.c:3779 msgid "Full-time-servo AF" msgstr "Průběžné autom. zaostÅ™ování" #: camlibs/ptp2/config.c:3780 camlibs/ptp2/ptp.c:4955 msgid "Manual Focus" msgstr "RuÄní zaostÅ™ení" #: camlibs/ptp2/config.c:3793 camlibs/ptp2/ptp.c:5051 msgid "AE/AF Lock" msgstr "Zablok. zaostÅ™ení i expozice" #: camlibs/ptp2/config.c:3794 camlibs/ptp2/ptp.c:5053 msgid "AE Lock only" msgstr "Zablok. expozice" #: camlibs/ptp2/config.c:3795 msgid "AF Lock Only" msgstr "Zablok. automatického zaostÅ™ení" #: camlibs/ptp2/config.c:3796 camlibs/ptp2/ptp.c:5054 msgid "AF Lock Hold" msgstr "Zablok. automat. zaostÅ™ení bez držení tlaÄítka" #: camlibs/ptp2/config.c:3797 camlibs/ptp2/ptp.c:5055 msgid "AF On" msgstr "Automat. zaostÅ™ení zapnuto" #: camlibs/ptp2/config.c:3798 msgid "Flash Level Lock" msgstr "Zablok. intenzity záblesku" #: camlibs/ptp2/config.c:3804 camlibs/ptp2/config.c:3822 #: camlibs/ptp2/ptp.c:5068 camlibs/ptp2/ptp.c:5071 msgid "20 seconds" msgstr "20 vteÅ™in" #: camlibs/ptp2/config.c:3805 camlibs/ptp2/config.c:3913 #: camlibs/ptp2/config.c:4626 camlibs/ptp2/ptp.c:5072 msgid "1 minute" msgstr "1 minuta" #: camlibs/ptp2/config.c:3806 camlibs/ptp2/config.c:3914 #: camlibs/ptp2/config.c:4627 camlibs/ptp2/ptp.c:5073 msgid "5 minutes" msgstr "5 minut" #: camlibs/ptp2/config.c:3807 camlibs/ptp2/config.c:3915 #: camlibs/ptp2/config.c:4628 camlibs/ptp2/ptp.c:5074 msgid "10 minutes" msgstr "10 minut" #: camlibs/ptp2/config.c:3808 camlibs/ptp2/config.c:3820 #: camlibs/ptp2/ptp.c:5066 camlibs/ptp2/ptp.c:5075 msgid "5 seconds" msgstr "5 vteÅ™in" #: camlibs/ptp2/config.c:3814 msgid "SDRAM" msgstr "operaÄní paměť" #: camlibs/ptp2/config.c:3827 msgid "6 mm" msgstr "6 mm" #: camlibs/ptp2/config.c:3828 msgid "8 mm" msgstr "8 mm" #: camlibs/ptp2/config.c:3829 msgid "10 mm" msgstr "10 mm" #: camlibs/ptp2/config.c:3830 msgid "12 mm" msgstr "12 mm" #: camlibs/ptp2/config.c:3836 msgid "1/60" msgstr "1/60" #: camlibs/ptp2/config.c:3837 msgid "1/30" msgstr "1/30" #: camlibs/ptp2/config.c:3838 msgid "1/15" msgstr "1/15" #: camlibs/ptp2/config.c:3839 msgid "1/8" msgstr "1/8" #: camlibs/ptp2/config.c:3840 msgid "1/4" msgstr "1/4" #: camlibs/ptp2/config.c:3841 msgid "1/2" msgstr "1/2" #: camlibs/ptp2/config.c:3842 msgid "1" msgstr "1" #: camlibs/ptp2/config.c:3843 camlibs/ptp2/config.c:4696 msgid "2" msgstr "2" #: camlibs/ptp2/config.c:3844 camlibs/ptp2/config.c:4694 msgid "4" msgstr "4" #: camlibs/ptp2/config.c:3845 msgid "8" msgstr "8" #: camlibs/ptp2/config.c:3846 msgid "15" msgstr "15" #: camlibs/ptp2/config.c:3847 msgid "30" msgstr "30" #: camlibs/ptp2/config.c:3852 msgid "bulb" msgstr "po dobu stisku spouÅ¡tÄ›" #: camlibs/ptp2/config.c:3853 camlibs/ptp2/config.c:4736 msgid "30s" msgstr "30 s" #: camlibs/ptp2/config.c:3854 msgid "25s" msgstr "25 s" #: camlibs/ptp2/config.c:3855 msgid "20s" msgstr "20 s" #: camlibs/ptp2/config.c:3856 camlibs/ptp2/config.c:4735 msgid "15s" msgstr "15 s" #: camlibs/ptp2/config.c:3857 msgid "13s" msgstr "13 s" #: camlibs/ptp2/config.c:3858 msgid "10s" msgstr "10 s" #: camlibs/ptp2/config.c:3859 camlibs/ptp2/config.c:4734 msgid "8s" msgstr "8 s" #: camlibs/ptp2/config.c:3860 msgid "6s" msgstr "6 s" #: camlibs/ptp2/config.c:3861 msgid "5s" msgstr "5 s" #: camlibs/ptp2/config.c:3862 camlibs/ptp2/config.c:4733 msgid "4s" msgstr "4 s" #: camlibs/ptp2/config.c:3863 msgid "3s" msgstr "3 s" #: camlibs/ptp2/config.c:3864 msgid "2.5s" msgstr "2,5 s" #: camlibs/ptp2/config.c:3865 camlibs/ptp2/config.c:4732 msgid "2s" msgstr "2 s" #: camlibs/ptp2/config.c:3866 msgid "1.6s" msgstr "1,6 s" #: camlibs/ptp2/config.c:3867 msgid "1.3s" msgstr "1,3 s" #: camlibs/ptp2/config.c:3868 camlibs/ptp2/config.c:4731 msgid "1s" msgstr "1 s" #: camlibs/ptp2/config.c:3869 msgid "1/1.3s" msgstr "1/1,3 s" #: camlibs/ptp2/config.c:3870 msgid "1/1.6s" msgstr "1/1,6 s" #: camlibs/ptp2/config.c:3871 camlibs/ptp2/config.c:4730 msgid "1/2s" msgstr "1/2 s" #: camlibs/ptp2/config.c:3872 msgid "1/2.5s" msgstr "1/2,5 s" #: camlibs/ptp2/config.c:3873 msgid "1/3s" msgstr "1/3 s" #: camlibs/ptp2/config.c:3874 camlibs/ptp2/config.c:4729 msgid "1/4s" msgstr "1/4 s" #: camlibs/ptp2/config.c:3875 msgid "1/5s" msgstr "1/5 s" #: camlibs/ptp2/config.c:3876 msgid "1/6s" msgstr "1/6 s" #: camlibs/ptp2/config.c:3877 camlibs/ptp2/config.c:4728 msgid "1/8s" msgstr "1/8 s" #: camlibs/ptp2/config.c:3878 msgid "1/10s" msgstr "1/10 s" #: camlibs/ptp2/config.c:3879 msgid "1/13s" msgstr "1/13 s" #: camlibs/ptp2/config.c:3880 camlibs/ptp2/config.c:4727 msgid "1/15s" msgstr "1/15 s" #: camlibs/ptp2/config.c:3881 msgid "1/20s" msgstr "1/20 s" #: camlibs/ptp2/config.c:3882 msgid "1/25s" msgstr "1/25 s" #: camlibs/ptp2/config.c:3883 camlibs/ptp2/config.c:4726 msgid "1/30s" msgstr "1/30 s" #: camlibs/ptp2/config.c:3884 msgid "1/40s" msgstr "1/40 s" #: camlibs/ptp2/config.c:3885 msgid "1/50s" msgstr "1/50 s" #: camlibs/ptp2/config.c:3886 camlibs/ptp2/config.c:4654 #: camlibs/ptp2/config.c:4667 camlibs/ptp2/config.c:4725 msgid "1/60s" msgstr "1/60 s" #: camlibs/ptp2/config.c:3887 camlibs/ptp2/config.c:4653 #: camlibs/ptp2/config.c:4666 msgid "1/80s" msgstr "1/80 s" #: camlibs/ptp2/config.c:3888 camlibs/ptp2/config.c:4652 #: camlibs/ptp2/config.c:4665 msgid "1/100s" msgstr "1/100 s" #: camlibs/ptp2/config.c:3889 camlibs/ptp2/config.c:4651 #: camlibs/ptp2/config.c:4664 msgid "1/125s" msgstr "1/125 s" #: camlibs/ptp2/config.c:3890 camlibs/ptp2/config.c:4650 #: camlibs/ptp2/config.c:4663 msgid "1/160s" msgstr "1/160 s" #: camlibs/ptp2/config.c:3891 camlibs/ptp2/config.c:4649 #: camlibs/ptp2/config.c:4662 msgid "1/200s" msgstr "1/200 s" #: camlibs/ptp2/config.c:3892 camlibs/ptp2/config.c:4648 #: camlibs/ptp2/config.c:4661 msgid "1/250s" msgstr "1/250 s" #: camlibs/ptp2/config.c:3893 msgid "1/320s" msgstr "1/320 s" #: camlibs/ptp2/config.c:3894 msgid "1/400s" msgstr "1/400 s" #: camlibs/ptp2/config.c:3895 msgid "1/500s" msgstr "1/500 s" #: camlibs/ptp2/config.c:3896 msgid "1/640s" msgstr "1/640 s" #: camlibs/ptp2/config.c:3897 msgid "1/800s" msgstr "1/800 s" #: camlibs/ptp2/config.c:3898 msgid "1/1000s" msgstr "1/1000 s" #: camlibs/ptp2/config.c:3899 camlibs/ptp2/config.c:3900 msgid "1/1250s" msgstr "1/1250 s" #: camlibs/ptp2/config.c:3901 msgid "1/1600s" msgstr "1/1600 s" #: camlibs/ptp2/config.c:3902 msgid "1/2000s" msgstr "1/2000 s" #: camlibs/ptp2/config.c:3903 msgid "1/2500s" msgstr "1/2500 s" #: camlibs/ptp2/config.c:3904 msgid "1/3200s" msgstr "1/3200 s" #: camlibs/ptp2/config.c:3905 msgid "1/4000s" msgstr "1/4000 s" #: camlibs/ptp2/config.c:3906 msgid "1/5000s" msgstr "1/5000 s" #: camlibs/ptp2/config.c:3907 msgid "1/6400s" msgstr "1/6400 s" #: camlibs/ptp2/config.c:3908 msgid "1/8000s" msgstr "1/8000 s" #: camlibs/ptp2/config.c:3916 msgid "15 minutes" msgstr "15 minut" #: camlibs/ptp2/config.c:3923 camlibs/ptp2/ptp.c:5177 msgid "Sharper" msgstr "OstÅ™ejší" #: camlibs/ptp2/config.c:3924 camlibs/ptp2/ptp.c:5178 msgid "Softer" msgstr "MÄ›kÄí" #: camlibs/ptp2/config.c:3925 camlibs/ptp2/ptp.c:5179 msgid "Direct Print" msgstr "Přímý tisk" #: camlibs/ptp2/config.c:3936 camlibs/ptp2/config.c:3947 #: camlibs/ptp2/ptp.c:5006 camlibs/ptp2/ptp.c:5014 msgid "Medium Low" msgstr "StÅ™ední nízké" #: camlibs/ptp2/config.c:3937 camlibs/ptp2/ptp.c:5007 msgid "Medium high" msgstr "StÅ™ední vysoké" #: camlibs/ptp2/config.c:3946 camlibs/ptp2/ptp.c:5013 msgid "Low contrast" msgstr "Nízký kontrast" #: camlibs/ptp2/config.c:3948 camlibs/ptp2/ptp.c:5015 msgid "Medium High" msgstr "StÅ™ední vysoké" #: camlibs/ptp2/config.c:3949 camlibs/ptp2/ptp.c:5016 msgid "High control" msgstr "Řízení výšky" #: camlibs/ptp2/config.c:3958 camlibs/ptp2/ptp.c:5397 msgid "Zone Focus (Close-up)" msgstr "Zónové zaostÅ™ování (detail)" #: camlibs/ptp2/config.c:3959 camlibs/ptp2/ptp.c:5398 msgid "Zone Focus (Very Close)" msgstr "Zónové zaostÅ™ování (velmi blízko)" #: camlibs/ptp2/config.c:3960 camlibs/ptp2/ptp.c:5399 msgid "Zone Focus (Close)" msgstr "Zónové zaostÅ™ování (blízko)" #: camlibs/ptp2/config.c:3961 camlibs/ptp2/ptp.c:5400 msgid "Zone Focus (Medium)" msgstr "Zónové zaostÅ™ování (stÅ™ední)" #: camlibs/ptp2/config.c:3962 camlibs/ptp2/ptp.c:5401 msgid "Zone Focus (Far)" msgstr "Zónové zaostÅ™ování (daleké)" #: camlibs/ptp2/config.c:3963 msgid "Zone Focus (Reserved 1)" msgstr "Zónové zaostÅ™ování (vyhrazeno 1)" #: camlibs/ptp2/config.c:3964 msgid "Zone Focus (Reserved 2)" msgstr "Zónové zaostÅ™ování (vyhrazeno 2)" #: camlibs/ptp2/config.c:3965 msgid "Zone Focus (Reserved 3)" msgstr "Zónové zaostÅ™ování (vyhrazeno 3)" #: camlibs/ptp2/config.c:3966 msgid "Zone Focus (Reserved 4)" msgstr "Zónové zaostÅ™ování (vyhrazeno 4)" #: camlibs/ptp2/config.c:3976 msgid "Automatic Macro" msgstr "Automatický makrorežim" #: camlibs/ptp2/config.c:3980 msgid "Single-Servo AF" msgstr "Jednoráz. automat. zaostÅ™ení pÅ™i namáÄknutí spouÅ¡tÄ›" #: camlibs/ptp2/config.c:3981 msgid "Continuous-Servo AF" msgstr "Průběžné automat. zaostÅ™ování" #: camlibs/ptp2/config.c:3989 msgid "One Shot" msgstr "Jednoráz. automat. zaostÅ™ení pÅ™i namáÄknutí spouÅ¡tÄ›" #: camlibs/ptp2/config.c:3990 camlibs/ptp2/ptp.c:5432 msgid "AI Servo" msgstr "NepÅ™etržité průběžné zaostÅ™ování" #: camlibs/ptp2/config.c:3991 camlibs/ptp2/ptp.c:5433 msgid "AI Focus" msgstr "Jednoráz. / průběžné zaostÅ™ování – automat." #: camlibs/ptp2/config.c:3999 camlibs/ptp2/config.c:4621 #: camlibs/ptp2/ptp.c:5058 msgid "4 seconds" msgstr "4 vteÅ™iny" #: camlibs/ptp2/config.c:4000 camlibs/ptp2/config.c:4623 #: camlibs/ptp2/ptp.c:5060 msgid "8 seconds" msgstr "8 vteÅ™in" #: camlibs/ptp2/config.c:4001 msgid "Hold" msgstr "Držet" #: camlibs/ptp2/config.c:4013 camlibs/ptp2/ptp.c:5418 camlibs/ptp2/ptp.c:5424 msgid "Fluorescent H" msgstr "Výbojkové H" #: camlibs/ptp2/config.c:4015 camlibs/ptp2/ptp.c:5420 msgid "Custom Whitebalance PC-1" msgstr "Uživatelské nastavení vyvážení bílé PC-1" #: camlibs/ptp2/config.c:4016 camlibs/ptp2/ptp.c:5421 msgid "Custom Whitebalance PC-2" msgstr "Uživatelské nastavení vyvážení bílé PC-2" #: camlibs/ptp2/config.c:4017 camlibs/ptp2/ptp.c:5422 msgid "Custom Whitebalance PC-3" msgstr "Uživatelské nastavení vyvážení bílé PC-3" #: camlibs/ptp2/config.c:4018 camlibs/ptp2/ptp.c:5423 msgid "Missing Number" msgstr "ChybÄ›jící Äíslo" #: camlibs/ptp2/config.c:4034 msgid "Shadow" msgstr "Stín" #: camlibs/ptp2/config.c:4118 msgid "Low sharpening" msgstr "Mírné doostÅ™ování" #: camlibs/ptp2/config.c:4120 msgid "Black & white" msgstr "ÄŒerná a bílá" #: camlibs/ptp2/config.c:4217 camlibs/ptp2/ptp.c:5099 msgid "AE & Flash" msgstr "expozimetr a blesk" #: camlibs/ptp2/config.c:4218 camlibs/ptp2/ptp.c:5100 msgid "AE only" msgstr "pouze expozimetr" #: camlibs/ptp2/config.c:4219 camlibs/ptp2/config.c:4381 #: camlibs/ptp2/ptp.c:5101 msgid "Flash only" msgstr "Pouze blesk" #: camlibs/ptp2/config.c:4220 camlibs/ptp2/ptp.c:5102 msgid "WB bracketing" msgstr "Více snímků s odstupňovaným vyvážením bílé" #: camlibs/ptp2/config.c:4221 msgid "ADL bracketing" msgstr "Více snímků s odstupňovaným projasnÄ›ním stínů" #: camlibs/ptp2/config.c:4227 msgid "Startup" msgstr "SpouÅ¡tÄ›ní" #: camlibs/ptp2/config.c:4228 msgid "Shutdown" msgstr "Vypínání" #: camlibs/ptp2/config.c:4229 msgid "Startup and Shutdown" msgstr "SpouÅ¡tÄ›ní a vypínání" #: camlibs/ptp2/config.c:4234 msgid "50 Hz" msgstr "50 Hz" #: camlibs/ptp2/config.c:4235 msgid "60 Hz" msgstr "60 Hz" #: camlibs/ptp2/config.c:4242 camlibs/ptp2/ptp.c:5286 msgid "Quick Response" msgstr "Rychlá odezva" #: camlibs/ptp2/config.c:4243 camlibs/ptp2/ptp.c:5287 msgid "Remote Mirror Up" msgstr "Vzdálené zdvihnutí zrcátka" #: camlibs/ptp2/config.c:4248 #, fuzzy msgid "Application Mode 0" msgstr "Režim provozu přístroje" #: camlibs/ptp2/config.c:4249 #, fuzzy msgid "Application Mode 1" msgstr "Režim provozu přístroje" #: camlibs/ptp2/config.c:4255 camlibs/ptp2/ptp.c:5185 msgid "Moderate" msgstr "StÅ™ední" #: camlibs/ptp2/config.c:4256 camlibs/ptp2/ptp.c:5186 msgid "Enhanced" msgstr "VylepÅ¡ené" #: camlibs/ptp2/config.c:4262 camlibs/ptp2/ptp.c:5104 msgid "MTR > Under" msgstr "MTR > pod" #: camlibs/ptp2/config.c:4263 camlibs/ptp2/ptp.c:5105 msgid "Under > MTR" msgstr "nad > MTR" #: camlibs/ptp2/config.c:4283 msgid "Auto sensitivity" msgstr "Automatická citlivost" #: camlibs/ptp2/config.c:4284 msgid "High sensitivity" msgstr "Vysoká citlivost" #: camlibs/ptp2/config.c:4285 msgid "Medium sensitivity" msgstr "StÅ™ední citlivost" #: camlibs/ptp2/config.c:4286 msgid "Low sensitivity" msgstr "Nízká citlivost" #: camlibs/ptp2/config.c:4287 msgid "Microphone off" msgstr "Vypnout mikrofon" #: camlibs/ptp2/config.c:4342 msgid "Hi 1" msgstr "Vysoké 1" #: camlibs/ptp2/config.c:4343 msgid "Hi 2" msgstr "Vysoké 2" #: camlibs/ptp2/config.c:4378 msgid "Flash/speed" msgstr "Blesk/expoziÄní Äas" #: camlibs/ptp2/config.c:4379 msgid "Flash/speed/aperture" msgstr "Blesk/expoziÄní Äas/zaclonÄ›ní" #: camlibs/ptp2/config.c:4380 msgid "Flash/aperture" msgstr "Blesk/zaclonÄ›ní" #: camlibs/ptp2/config.c:4533 camlibs/ptp2/config.c:4541 #: camlibs/ptp2/config.c:4552 camlibs/ptp2/config.c:4564 #: camlibs/ptp2/ptp.c:4939 msgid "JPEG Basic" msgstr "JPEG – základní kvalita" #: camlibs/ptp2/config.c:4534 camlibs/ptp2/config.c:4547 #: camlibs/ptp2/config.c:4559 camlibs/ptp2/config.c:4570 msgid "NEF+Fine" msgstr "NEF + vysoká kvalita" #: camlibs/ptp2/config.c:4535 camlibs/ptp2/config.c:4536 #: camlibs/ptp2/config.c:4544 camlibs/ptp2/config.c:4556 #: camlibs/ptp2/config.c:4567 msgid "NEF (Raw)" msgstr "NEF (Raw)" #: camlibs/ptp2/config.c:4545 camlibs/ptp2/config.c:4557 #: camlibs/ptp2/config.c:4568 msgid "NEF+Basic" msgstr "NEF + základní kvalita" #: camlibs/ptp2/config.c:4546 camlibs/ptp2/config.c:4558 #: camlibs/ptp2/config.c:4569 msgid "NEF+Normal" msgstr "NEF + normální kvalita" #: camlibs/ptp2/config.c:4555 msgid "TIFF (RGB)" msgstr "TIFF (RGB)" #: camlibs/ptp2/config.c:4575 #, fuzzy msgid "RAW+JPEG" msgstr "RAW + jemný JPEG" #: camlibs/ptp2/config.c:4622 camlibs/ptp2/ptp.c:5059 msgid "6 seconds" msgstr "6 vteÅ™in" #: camlibs/ptp2/config.c:4624 camlibs/ptp2/ptp.c:5061 msgid "16 seconds" msgstr "16 vteÅ™in" #: camlibs/ptp2/config.c:4625 camlibs/ptp2/ptp.c:5063 msgid "30 seconds" msgstr "30 vteÅ™in" #: camlibs/ptp2/config.c:4629 camlibs/ptp2/ptp.c:5062 msgid "30 minutes" msgstr "30 minut" #: camlibs/ptp2/config.c:4635 camlibs/ptp2/ptp.c:5139 camlibs/ptp2/ptp.c:5323 msgid "Lossless" msgstr "Bezeztrátová" #: camlibs/ptp2/config.c:4636 camlibs/ptp2/ptp.c:5140 msgid "Lossy" msgstr "Ztrátová" #: camlibs/ptp2/config.c:4641 msgid "Size Priority" msgstr "Priority velikosti" #: camlibs/ptp2/config.c:4642 msgid "Optimal quality" msgstr "Optimální kvalita" #: camlibs/ptp2/config.c:4647 camlibs/ptp2/config.c:4660 msgid "1/250s (Auto FP)" msgstr "1/250 s (Auto FP)" #: camlibs/ptp2/config.c:4659 #, fuzzy msgid "1/320s (Auto FP)" msgstr "1/250 s (Auto FP)" #: camlibs/ptp2/config.c:4672 camlibs/ptp2/config.c:4679 msgid "Release" msgstr "Uvolnit" #: camlibs/ptp2/config.c:4673 msgid "Release + Focus" msgstr "Uvolnit + zaostÅ™it" #: camlibs/ptp2/config.c:4685 msgid "9 points" msgstr "9 bodů" #: camlibs/ptp2/config.c:4686 msgid "21 points" msgstr "21 bodů" #: camlibs/ptp2/config.c:4687 msgid "51 points" msgstr "51 bodů" #: camlibs/ptp2/config.c:4688 msgid "51 points (3D)" msgstr "51 bodů (třírozmÄ›rné)" #: camlibs/ptp2/config.c:4693 msgid "5 (Long)" msgstr "5 (dlouhé)" #: camlibs/ptp2/config.c:4695 msgid "3 (Normal)" msgstr "3 (normální)" #: camlibs/ptp2/config.c:4697 msgid "1 (Short)" msgstr "1 (krátké)" #: camlibs/ptp2/config.c:4703 msgid "Shutter/AF-ON" msgstr "ZávÄ›rka / zap. automat. zaostÅ™ení" #: camlibs/ptp2/config.c:4704 camlibs/ptp2/config.c:4715 msgid "AF-ON" msgstr "automat. zaostÅ™ení zapnuto" #: camlibs/ptp2/config.c:4709 msgid "AF51" msgstr "AF51" #: camlibs/ptp2/config.c:4710 msgid "AF11" msgstr "AF11" #: camlibs/ptp2/config.c:4716 camlibs/ptp2/config.c:4782 msgid "AE/AF lock" msgstr "UzamÄení expozice i ostÅ™ení" #: camlibs/ptp2/config.c:4717 camlibs/ptp2/config.c:4783 msgid "AE lock only" msgstr "UzamÄení pouze expozice" #: camlibs/ptp2/config.c:4718 msgid "AE lock (Reset on release)" msgstr "UzamÄení automatického ostÅ™ení (resetovat pÅ™i uvolnÄ›ní)" #: camlibs/ptp2/config.c:4719 msgid "AE lock (Hold)" msgstr "UzamÄení automatického ostÅ™ení (držet)" #: camlibs/ptp2/config.c:4720 camlibs/ptp2/config.c:4786 msgid "AF lock only" msgstr "UzamÄení pouze ostÅ™ení" #: camlibs/ptp2/config.c:4741 camlibs/ptp2/config.c:4751 #: camlibs/ptp2/config.c:4764 msgid "4 fps" msgstr "4 snímky/s" #: camlibs/ptp2/config.c:4742 camlibs/ptp2/config.c:4752 #: camlibs/ptp2/config.c:4765 msgid "3 fps" msgstr "3 snímky/s" #: camlibs/ptp2/config.c:4743 camlibs/ptp2/config.c:4753 #: camlibs/ptp2/config.c:4766 msgid "2 fps" msgstr "2 snímky/s" #: camlibs/ptp2/config.c:4744 camlibs/ptp2/config.c:4754 #: camlibs/ptp2/config.c:4767 msgid "1 fps" msgstr "1 snímek/s" #: camlibs/ptp2/config.c:4749 camlibs/ptp2/config.c:4762 msgid "6 fps" msgstr "6 snímků/s" #: camlibs/ptp2/config.c:4750 camlibs/ptp2/config.c:4763 msgid "5 fps" msgstr "5 snímků/s" #: camlibs/ptp2/config.c:4759 camlibs/ptp2/config.c:4774 msgid "9 fps" msgstr "9 snímků/s" #: camlibs/ptp2/config.c:4760 msgid "8 fps" msgstr "8 snímků/s" #: camlibs/ptp2/config.c:4761 msgid "7 fps" msgstr "7 snímků/s" #: camlibs/ptp2/config.c:4772 msgid "11 fps" msgstr "11 snímků/s" #: camlibs/ptp2/config.c:4773 msgid "10 fps" msgstr "10 snímků/s" #: camlibs/ptp2/config.c:4779 msgid "Unassigned" msgstr "" #: camlibs/ptp2/config.c:4780 #, fuzzy msgid "Preview" msgstr "TlaÄítko náhledu" #: camlibs/ptp2/config.c:4781 #, fuzzy msgid "FV lock" msgstr "UzamÄení expozice i ostÅ™ení" #: camlibs/ptp2/config.c:4785 #, fuzzy msgid "AE lock (hold)" msgstr "UzamÄení automatického ostÅ™ení (držet)" #: camlibs/ptp2/config.c:4788 #, fuzzy msgid "Bracketing burst" msgstr "Více snímků s odstupňováním daného nastavení" #: camlibs/ptp2/config.c:4789 #, fuzzy msgid "Matrix metering" msgstr "ČásteÄné měření" #: camlibs/ptp2/config.c:4790 #, fuzzy msgid "Center-weighted metering" msgstr "Měření s důrazem na stÅ™ed" #: camlibs/ptp2/config.c:4791 #, fuzzy msgid "Spot metering" msgstr "Bodové měření" #: camlibs/ptp2/config.c:4792 #, fuzzy msgid "Playback" msgstr "Rychlost pÅ™ehrávání" #: camlibs/ptp2/config.c:4793 msgid "Access top item in MY MENU" msgstr "" #: camlibs/ptp2/config.c:4794 #, fuzzy msgid "+NEF (RAW)" msgstr "NEF (Raw)" #: camlibs/ptp2/config.c:4795 msgid "Framing grid" msgstr "" #: camlibs/ptp2/config.c:4796 camlibs/ptp2/config.c:6875 #: camlibs/ptp2/config.c:6902 camlibs/ptp2/config.c:6911 #: camlibs/ptp2/ptp.c:4612 camlibs/ptp2/ptp.c:4751 msgid "Active D-Lighting" msgstr "ProjasnÄ›ní stínů" #: camlibs/ptp2/config.c:4797 #, fuzzy msgid "1 step spd/aperture" msgstr "Blesk/expoziÄní Äas/zaclonÄ›ní" #: camlibs/ptp2/config.c:4798 msgid "Choose non-CPU lens number" msgstr "" #: camlibs/ptp2/config.c:4799 #, fuzzy msgid "Viewfinder virtual horizont" msgstr "Zobr. pomocné kompoz. mřížky v hledáÄku" #: camlibs/ptp2/config.c:4800 #, fuzzy msgid "Start movie recording" msgstr "PoÅ™izování videonahrávky" #: camlibs/ptp2/config.c:4807 msgid "On (image review excluded)" msgstr "" #: camlibs/ptp2/config.c:4867 msgid "50%" msgstr "50 %" #: camlibs/ptp2/config.c:4868 msgid "100%" msgstr "100 %" #: camlibs/ptp2/config.c:4869 msgid "75%" msgstr "75 %" #: camlibs/ptp2/config.c:4870 msgid "25%" msgstr "25 %" #: camlibs/ptp2/config.c:4871 msgid "Unknown value" msgstr "Neznámá hodnota" #: camlibs/ptp2/config.c:4999 #, fuzzy msgid "Nikon changeafarea works only in LiveView mode." msgstr "U tohoto typu přístroje Nikon není režim živého náhledu k dispozici" #: camlibs/ptp2/config.c:5015 msgid "Nikon autofocus drive did not focus." msgstr "" #: camlibs/ptp2/config.c:5096 msgid "Nikon manual focus works only in LiveView mode." msgstr "" #: camlibs/ptp2/config.c:5106 msgid "Nikon manual focus at limit." msgstr "" #: camlibs/ptp2/config.c:5110 msgid "Nikon manual focus stepping too small." msgstr "" #: camlibs/ptp2/config.c:5148 camlibs/ptp2/config.c:5186 msgid "Press Half" msgstr "NamáÄknutí spouÅ¡tÄ›" #: camlibs/ptp2/config.c:5149 camlibs/ptp2/config.c:5188 msgid "Press Full" msgstr "Úplné stisknutí spouÅ¡tÄ›" #: camlibs/ptp2/config.c:5150 camlibs/ptp2/config.c:5208 msgid "Release Half" msgstr "ČásteÄné uvolnÄ›ní spouÅ¡tÄ›" #: camlibs/ptp2/config.c:5151 camlibs/ptp2/config.c:5210 msgid "Release Full" msgstr "Úplné uvolnÄ›ní spouÅ¡tÄ›" #: camlibs/ptp2/config.c:5152 camlibs/ptp2/config.c:5190 msgid "Immediate" msgstr "Okamžité" #: camlibs/ptp2/config.c:5154 camlibs/ptp2/config.c:5196 #, fuzzy msgid "Press 1" msgstr "NamáÄknutí spouÅ¡tÄ›" #: camlibs/ptp2/config.c:5155 camlibs/ptp2/config.c:5198 #, fuzzy msgid "Press 2" msgstr "NamáÄknutí spouÅ¡tÄ›" #: camlibs/ptp2/config.c:5156 camlibs/ptp2/config.c:5200 #, fuzzy msgid "Press 3" msgstr "NamáÄknutí spouÅ¡tÄ›" #: camlibs/ptp2/config.c:5157 camlibs/ptp2/config.c:5202 #, fuzzy msgid "Release 1" msgstr "Uvolnit" #: camlibs/ptp2/config.c:5158 camlibs/ptp2/config.c:5204 #, fuzzy msgid "Release 2" msgstr "Uvolnit" #: camlibs/ptp2/config.c:5159 camlibs/ptp2/config.c:5206 #, fuzzy msgid "Release 3" msgstr "Uvolnit" #: camlibs/ptp2/config.c:5261 msgid "Near 1" msgstr "Blízko 1" #: camlibs/ptp2/config.c:5262 msgid "Near 2" msgstr "Blízko 2" #: camlibs/ptp2/config.c:5263 msgid "Near 3" msgstr "Blízko 3" #: camlibs/ptp2/config.c:5265 msgid "Far 1" msgstr "Daleko 1" #: camlibs/ptp2/config.c:5266 msgid "Far 2" msgstr "Daleko 2" #: camlibs/ptp2/config.c:5267 msgid "Far 3" msgstr "Daleko 3" #: camlibs/ptp2/config.c:5285 #, c-format msgid "Near %d" msgstr "Blízko %d" #: camlibs/ptp2/config.c:5286 #, c-format msgid "Far %d" msgstr "Daleko %d" #: camlibs/ptp2/config.c:5593 camlibs/ptp2/config.c:5718 #: camlibs/ptp2/config.c:5720 camlibs/ptp2/library.c:2571 #: camlibs/ptp2/library.c:2578 camlibs/ptp2/library.c:2586 #: camlibs/ptp2/library.c:2593 #, fuzzy msgid "Nikon enable liveview failed" msgstr "Nikon – zapnutí živého náhledu se nezdaÅ™ilo: %x" #: camlibs/ptp2/config.c:5858 msgid "" "For bulb capture to work, make sure the mode dial is switched to 'M' and set " "'shutterspeed' to 'bulb'." msgstr "" "Pro režim řízení expoziÄního Äasu délkou stisku spouÅ¡tÄ› (bulp), je tÅ™eba, " "aby otoÄný voliÄ režimů byl pÅ™epnut do polohy „M“ (plnÄ› ruÄní režim) a " "„expoziÄní Äas“ nastaven na „bulb“." #: camlibs/ptp2/config.c:5923 msgid "Internal RAM" msgstr "Interní paměť" #: camlibs/ptp2/config.c:5924 msgid "Memory card" msgstr "Paměťová karta" #: camlibs/ptp2/config.c:6087 msgid "ESSID" msgstr "Název bezdrátové sítÄ›" #: camlibs/ptp2/config.c:6092 msgid "Display" msgstr "Zobrazit" #: camlibs/ptp2/config.c:6102 #, c-format msgid "Creation date: %s, Last usage date: %s" msgstr "Datum pořízení: %s, naposledy použito: %s" #: camlibs/ptp2/config.c:6108 msgid "Delete" msgstr "Smazat" #: camlibs/ptp2/config.c:6170 msgid "WEP 64-bit" msgstr "Å¡ifrování WEP – 64-bit" #: camlibs/ptp2/config.c:6171 msgid "WEP 128-bit" msgstr "Å¡ifrování WEP – 128-bit" #: camlibs/ptp2/config.c:6215 msgid "Managed" msgstr "přístupový bod ‒ klient" #: camlibs/ptp2/config.c:6216 msgid "Ad-hoc" msgstr "přímá komunikace" #: camlibs/ptp2/config.c:6355 msgid "Profile name" msgstr "Název profilu" #: camlibs/ptp2/config.c:6356 msgid "WIFI ESSID" msgstr "Název bezdrátové sítÄ› (ESSID)" #: camlibs/ptp2/config.c:6357 msgid "IP address (empty for DHCP)" msgstr "IP adresa (pro DHCP prázdné)" #: camlibs/ptp2/config.c:6358 msgid "Network mask" msgstr "Síťová maska" #: camlibs/ptp2/config.c:6359 msgid "Default gateway" msgstr "Výchozí brána" #: camlibs/ptp2/config.c:6360 msgid "Access mode" msgstr "Režim přístupu" #: camlibs/ptp2/config.c:6361 msgid "WIFI channel" msgstr "Kanál WiFi" #: camlibs/ptp2/config.c:6362 msgid "Encryption" msgstr "Å ifrování" #: camlibs/ptp2/config.c:6363 msgid "Encryption key (hex)" msgstr "Å ifrovací klÃ­Ä (v hex. zápisu)" #: camlibs/ptp2/config.c:6364 msgid "Write" msgstr "Zapsat" #: camlibs/ptp2/config.c:6412 msgid "List Wifi profiles" msgstr "Vypsat profily pro WiFi" #: camlibs/ptp2/config.c:6413 msgid "Create Wifi profile" msgstr "VytvoÅ™it profil pro WiFi" #: camlibs/ptp2/config.c:6521 #, fuzzy msgid "Power Down" msgstr "Dávkové snímání" #: camlibs/ptp2/config.c:6522 camlibs/ptp2/ptp.c:4386 msgid "Focus Lock" msgstr "UzamÄení zaostÅ™ení" #: camlibs/ptp2/config.c:6523 camlibs/ptp2/config.c:6524 #: camlibs/ptp2/config.c:6525 msgid "Bulb Mode" msgstr "Režim exp. po dobu stisku spouÅ¡tÄ›" #: camlibs/ptp2/config.c:6526 msgid "UI Lock" msgstr "UzamÄení uživatelského rozhraní" #: camlibs/ptp2/config.c:6527 msgid "Drive Nikon DSLR Autofocus" msgstr "dig. zrcadl. Nikon – ovl. automat. zaostÅ™ení" #: camlibs/ptp2/config.c:6528 msgid "Drive Canon DSLR Autofocus" msgstr "dig. zrcadl. Canon – ovl. automat. zaostÅ™ení" #: camlibs/ptp2/config.c:6529 msgid "Drive Nikon DSLR Manual focus" msgstr "dig. zrcadl. Nikon – ovl. ruÄn. zaostÅ™ení" #: camlibs/ptp2/config.c:6530 #, fuzzy msgid "Set Nikon Autofocus area" msgstr "dig. zrcadl. Nikon – ovl. automat. zaostÅ™ení" #: camlibs/ptp2/config.c:6531 #, fuzzy msgid "Set Nikon Control Mode" msgstr "Nikon – režim blesku" #: camlibs/ptp2/config.c:6532 msgid "Drive Canon DSLR Manual focus" msgstr "dig. zrcadl. Canon – ovl. ruÄn. zaostÅ™ení" #: camlibs/ptp2/config.c:6533 #, fuzzy msgid "Cancel Canon DSLR Autofocus" msgstr "dig. zrcadl. Canon – ovl. automat. zaostÅ™ení" #: camlibs/ptp2/config.c:6534 msgid "Canon EOS Zoom" msgstr "dig. zrcadl. Canon – pÅ™iblížení" #: camlibs/ptp2/config.c:6535 msgid "Canon EOS Zoom Position" msgstr "dig. zrcadl. Canon – míra pÅ™iblížení" #: camlibs/ptp2/config.c:6536 msgid "Canon EOS Viewfinder" msgstr "dig. zrcadl. Canon – hledáÄek" #: camlibs/ptp2/config.c:6537 msgid "Nikon Viewfinder" msgstr "Nikon – hledáÄek" #: camlibs/ptp2/config.c:6538 msgid "Canon EOS Remote Release" msgstr "dig. zrcadl. Canon – dálkové ovl. spouÅ¡tÄ›" #: camlibs/ptp2/config.c:6539 msgid "CHDK Script" msgstr "Skript rozÅ¡iÅ™ujícího softwaru (CHDK)" #: camlibs/ptp2/config.c:6540 camlibs/ptp2/config.c:6541 #: camlibs/ptp2/config.c:6542 #, fuzzy msgid "Movie Capture" msgstr "Pořídit snímek" #: camlibs/ptp2/config.c:6547 camlibs/ptp2/config.c:6569 msgid "Serial Number" msgstr "Sériové Äíslo" #: camlibs/ptp2/config.c:6548 msgid "Camera Manufacturer" msgstr "Výrobce přístroje" #: camlibs/ptp2/config.c:6550 msgid "Device Version" msgstr "Verze přístroje" #: camlibs/ptp2/config.c:6551 msgid "Vendor Extension" msgstr "Nadstavba pÅ™idaná výrobcem" #: camlibs/ptp2/config.c:6556 msgid "PTP Version" msgstr "Verze protokolu pro pÅ™enos snímků (PTP)" #: camlibs/ptp2/config.c:6557 camlibs/ptp2/ptp.c:4236 msgid "DPOF Version" msgstr "Verze formátu přímé objednávky tisku" #: camlibs/ptp2/config.c:6558 camlibs/ptp2/ptp.c:4538 msgid "AC Power" msgstr "Napájení z elektrické sítÄ›" #: camlibs/ptp2/config.c:6559 msgid "External Flash" msgstr "Externí blesk" #: camlibs/ptp2/config.c:6560 camlibs/ptp2/config.c:6561 #: camlibs/ptp2/ptp.c:4102 msgid "Battery Level" msgstr "Stav nabití akumulátoru" #: camlibs/ptp2/config.c:6562 camlibs/ptp2/config.c:6563 #: camlibs/ptp2/config.c:6564 camlibs/ptp2/ptp.c:4560 msgid "Camera Orientation" msgstr "Poloha přístroje" #: camlibs/ptp2/config.c:6565 camlibs/ptp2/ptp.c:4702 msgid "Flash Open" msgstr "Vyklopení blesku" #: camlibs/ptp2/config.c:6566 camlibs/ptp2/ptp.c:4704 msgid "Flash Charged" msgstr "Blesk je nabit" #: camlibs/ptp2/config.c:6567 camlibs/ptp2/config.c:6568 msgid "Lens Name" msgstr "OznaÄení objektivu" #: camlibs/ptp2/config.c:6570 msgid "Shutter Counter" msgstr "PoÄet probÄ›hlých cyklů závÄ›rky" #: camlibs/ptp2/config.c:6571 msgid "Available Shots" msgstr "Zbývá cyklů" #: camlibs/ptp2/config.c:6572 msgid "Focal Length Minimum" msgstr "Min. ohnisková vzdálenost" #: camlibs/ptp2/config.c:6573 msgid "Focal Length Maximum" msgstr "Max. ohnisková vzdálenost" #: camlibs/ptp2/config.c:6574 msgid "Maximum Aperture at Focal Length Minimum" msgstr "Max. zaclonÄ›ní, možné pÅ™i nejkratším ohnisku" #: camlibs/ptp2/config.c:6575 msgid "Maximum Aperture at Focal Length Maximum" msgstr "Max. zaclonÄ›ní, možné pÅ™i nejdelším ohnisku" #: camlibs/ptp2/config.c:6576 msgid "Low Light" msgstr "Málo svÄ›tla" #: camlibs/ptp2/config.c:6577 camlibs/ptp2/config.c:6578 msgid "Light Meter" msgstr "Expozimetr" #: camlibs/ptp2/config.c:6579 camlibs/ptp2/ptp.c:4542 msgid "AF Locked" msgstr "Autom. zaostÅ™ení uzamÄeno" #: camlibs/ptp2/config.c:6580 camlibs/ptp2/ptp.c:4543 msgid "AE Locked" msgstr "Expozimetr uzamÄen" #: camlibs/ptp2/config.c:6581 camlibs/ptp2/ptp.c:4544 msgid "FV Locked" msgstr "Nevysílat měřící záblesky pÅ™ed každým snímkem" #: camlibs/ptp2/config.c:6586 camlibs/ptp2/config.c:6587 #: camlibs/ptp2/config.c:6588 camlibs/ptp2/config.c:6589 msgid "Camera Date and Time" msgstr "Datum a Äas na přístroji" #: camlibs/ptp2/config.c:6590 camlibs/ptp2/ptp.c:4157 camlibs/ptp2/ptp.c:4168 msgid "Beep Mode" msgstr "Režim zvukového upozorňování" #: camlibs/ptp2/config.c:6591 msgid "Image Comment" msgstr "Komentář k obrázku" #: camlibs/ptp2/config.c:6592 msgid "WLAN GUID" msgstr "" #: camlibs/ptp2/config.c:6593 msgid "Enable Image Comment" msgstr "Povolit komentář k obrázku" #: camlibs/ptp2/config.c:6594 camlibs/ptp2/ptp.c:4394 msgid "LCD Off Time" msgstr "Prodl. pÅ™ed vypnutím displeje" #: camlibs/ptp2/config.c:6595 camlibs/ptp2/ptp.c:4554 msgid "Recording Media" msgstr "Záznamové médium" #: camlibs/ptp2/config.c:6596 msgid "Quick Review Time" msgstr "Doba zobrazení snímku po vyfotografování" #: camlibs/ptp2/config.c:6597 camlibs/ptp2/ptp.c:4658 msgid "CSM Menu" msgstr "Nabídka uživatelských nastavení" #: camlibs/ptp2/config.c:6598 camlibs/ptp2/ptp.c:4455 msgid "Reverse Command Dial" msgstr "ZmÄ›na smyslu otáÄení kruh. voliÄe" #: camlibs/ptp2/config.c:6599 camlibs/ptp2/config.c:6600 #: camlibs/ptp2/ptp.c:4220 msgid "Camera Output" msgstr "Výstup z přístroje" #: camlibs/ptp2/config.c:6601 #, fuzzy msgid "Recording Destination" msgstr "Záznamové médium" #: camlibs/ptp2/config.c:6602 msgid "EVF Mode" msgstr "Režim elektronického hledáÄku" #: camlibs/ptp2/config.c:6605 camlibs/ptp2/config.c:6606 #: camlibs/ptp2/ptp.c:4133 msgid "Artist" msgstr "UmÄ›lec" #: camlibs/ptp2/config.c:6607 msgid "CCD Number" msgstr "Sériové Äíslo obrazového snímaÄe" #: camlibs/ptp2/config.c:6608 camlibs/ptp2/config.c:6609 #: camlibs/ricoh/library.c:438 msgid "Copyright" msgstr "Autorská práva" #: camlibs/ptp2/config.c:6610 msgid "Clean Sensor" msgstr "ÄŒiÅ¡tÄ›ní snímaÄe obrazu" #: camlibs/ptp2/config.c:6611 camlibs/ptp2/ptp.c:4320 msgid "Flicker Reduction" msgstr "Omez. vlivu blikání výbojkového osvÄ›tlení" #: camlibs/ptp2/config.c:6612 msgid "Custom Functions Ex" msgstr "„Ex“ uživatelských funkcí" #: camlibs/ptp2/config.c:6613 #, fuzzy msgid "Focus Info" msgstr "Režim zaostÅ™ování" #: camlibs/ptp2/config.c:6614 #, fuzzy msgid "Focus Area" msgstr "Fokus Bereich" #: camlibs/ptp2/config.c:6615 #, fuzzy msgid "Auto Power Off" msgstr "Automat. vypnutí (v minutách)" #: camlibs/ptp2/config.c:6616 msgid "Depth of Field" msgstr "" #: camlibs/ptp2/config.c:6617 camlibs/ptp2/ptp.c:4459 msgid "Menus and Playback" msgstr "Nabídky a pÅ™ehrávání" #: camlibs/ptp2/config.c:6620 msgid "Fast Filesystem" msgstr "Rychlý souborový systém" #: camlibs/ptp2/config.c:6621 camlibs/ptp2/config.c:6622 msgid "Capture Target" msgstr "Kam zaznamenávat pořízené snímky" #: camlibs/ptp2/config.c:6623 msgid "CHDK" msgstr "" #: camlibs/ptp2/config.c:6633 msgid "Image Format SD" msgstr "Obraz. formát pro paměťovou kartu SD" #: camlibs/ptp2/config.c:6634 msgid "Image Format CF" msgstr "Obraz. formát pro paměťovou kartu CF" #: camlibs/ptp2/config.c:6636 msgid "Image Format Ext HD" msgstr "Obraz. formát pro externí pevný disk" #: camlibs/ptp2/config.c:6643 #, fuzzy msgid "Movie ISO Speed" msgstr "Citlivost na svÄ›tlo (ISO)" #: camlibs/ptp2/config.c:6647 camlibs/ptp2/ptp.c:4646 msgid "ISO Auto" msgstr "Citlivost (ISO) automaticky" #: camlibs/ptp2/config.c:6648 camlibs/ptp2/config.c:6649 #: camlibs/ptp2/config.c:6652 camlibs/ptp2/config.c:6653 msgid "WhiteBalance" msgstr "Vyvážení bílé" #: camlibs/ptp2/config.c:6654 msgid "WhiteBalance Adjust A" msgstr "Vyvážení bílé – pÅ™izpůsobení A" #: camlibs/ptp2/config.c:6655 msgid "WhiteBalance Adjust B" msgstr "Vyvážení bílé – pÅ™izpůsobení B" #: camlibs/ptp2/config.c:6656 msgid "WhiteBalance X A" msgstr "Vyvážení bílé X A" #: camlibs/ptp2/config.c:6657 msgid "WhiteBalance X B" msgstr "Vyvážení bílé X B" #: camlibs/ptp2/config.c:6658 camlibs/ptp2/ptp.c:4230 msgid "Photo Effect" msgstr "Efekty" #: camlibs/ptp2/config.c:6659 camlibs/ptp2/ptp.c:4304 msgid "Color Model" msgstr "Model barev" #: camlibs/ptp2/config.c:6660 camlibs/ptp2/config.c:6661 #: camlibs/ptp2/ptp.c:4316 msgid "Color Space" msgstr "Prostor barev" #: camlibs/ptp2/config.c:6667 camlibs/ptp2/config.c:6668 msgid "Long Exp Noise Reduction" msgstr "Redukce Å¡umu pÅ™i dlouhých exp. Äasech" #: camlibs/ptp2/config.c:6669 msgid "Auto Focus Mode 2" msgstr "Automat. zaostÅ™ení – „režim 2“" #: camlibs/ptp2/config.c:6671 camlibs/ptp2/config.c:6674 #: camlibs/ptp2/ptp.c:4231 msgid "Assist Light" msgstr "Pomocné pÅ™isvÄ›tlení pro automat. zaostÅ™ení" #: camlibs/ptp2/config.c:6672 msgid "Rotation Flag" msgstr "OznaÄovat k otoÄení" #: camlibs/ptp2/config.c:6681 camlibs/ptp2/ptp.c:4199 msgid "Flash Compensation" msgstr "Kompenzace blesku" #: camlibs/ptp2/config.c:6682 camlibs/ptp2/ptp.c:4200 msgid "AEB Exposure Compensation" msgstr "Krok odstupňování více snímků s různou exp." #: camlibs/ptp2/config.c:6685 msgid "Nikon Flash Mode" msgstr "Nikon – režim blesku" #: camlibs/ptp2/config.c:6686 camlibs/ptp2/ptp.c:4642 msgid "Flash Commander Mode" msgstr "Ovládání podřízených záblesk. jednotek" #: camlibs/ptp2/config.c:6687 msgid "Flash Commander Power" msgstr "Řídící blesk – intenzita záblesku" #: camlibs/ptp2/config.c:6688 camlibs/ptp2/ptp.c:4712 msgid "Flash Command Channel" msgstr "Řídící blesk – kanál pro ovl. podřízených jedn." #: camlibs/ptp2/config.c:6689 camlibs/ptp2/ptp.c:4714 msgid "Flash Command Self Mode" msgstr "Řídící blesk – režim pro řídící jednotku" #: camlibs/ptp2/config.c:6690 camlibs/ptp2/ptp.c:4716 msgid "Flash Command Self Compensation" msgstr "Řídící blesk – kompenzace pro řídící jednotku" #: camlibs/ptp2/config.c:6691 camlibs/ptp2/ptp.c:4718 msgid "Flash Command Self Value" msgstr "Řídící blesk – hodnota pro řídící jednotku" #: camlibs/ptp2/config.c:6692 camlibs/ptp2/ptp.c:4720 msgid "Flash Command A Mode" msgstr "Řídící blesk – režim pro skupinu A podřízených jedn." #: camlibs/ptp2/config.c:6693 camlibs/ptp2/ptp.c:4722 msgid "Flash Command A Compensation" msgstr "Řídící blesk – kompenz. pro skup. A podřízených jedn." #: camlibs/ptp2/config.c:6694 camlibs/ptp2/ptp.c:4724 msgid "Flash Command A Value" msgstr "Řídící blesk – hodnota pro skup. A podřízených jedn." #: camlibs/ptp2/config.c:6695 camlibs/ptp2/ptp.c:4726 msgid "Flash Command B Mode" msgstr "Řídící blesk – režim pro skup. B podřízených jedn." #: camlibs/ptp2/config.c:6696 camlibs/ptp2/ptp.c:4728 msgid "Flash Command B Compensation" msgstr "Řídící blesk – kompenz. pro skup. B podřízených jedn." #: camlibs/ptp2/config.c:6697 camlibs/ptp2/ptp.c:4730 msgid "Flash Command B Value" msgstr "Řídící blesk – hodnota pro skup. A podřízených jedn." #: camlibs/ptp2/config.c:6698 camlibs/ptp2/ptp.c:4638 msgid "AF Area Illumination" msgstr "PÅ™isvícení pro automatické ostÅ™ení" #: camlibs/ptp2/config.c:6699 camlibs/ptp2/ptp.c:4628 msgid "AF Beep Mode" msgstr "Zvuk. upozorňování automat. zaostÅ™." #: camlibs/ptp2/config.c:6700 camlibs/ptp2/config.c:6701 #: camlibs/ptp2/ptp.c:4108 msgid "F-Number" msgstr "Clonové Äíslo" #: camlibs/ptp2/config.c:6702 #, fuzzy msgid "Movie F-Number" msgstr "Clonové Äíslo" #: camlibs/ptp2/config.c:6703 camlibs/ptp2/ptp.c:4550 msgid "Flexible Program" msgstr "PÅ™izpůsobivý program" #: camlibs/ptp2/config.c:6706 camlibs/ptp2/ptp.c:4110 msgid "Focus Distance" msgstr "Ohnisková vzdálenost" #: camlibs/ptp2/config.c:6707 camlibs/ptp2/ptp.c:4109 camlibs/ptp2/ptp.c:4203 msgid "Focal Length" msgstr "Hloubka ostrosti" #: camlibs/ptp2/config.c:6710 msgid "Focus Mode 2" msgstr "Režim zaostÅ™ování „2“" #: camlibs/ptp2/config.c:6712 #, fuzzy msgid "Continuous AF" msgstr "Průběžné" #: camlibs/ptp2/config.c:6713 camlibs/ptp2/config.c:6714 #: camlibs/ptp2/ptp.c:4126 camlibs/ptp2/ptp.c:4326 msgid "Effect Mode" msgstr "Efektový režim" #: camlibs/ptp2/config.c:6715 camlibs/ptp2/config.c:6716 #: camlibs/ptp2/config.c:6855 camlibs/ptp2/config.c:6864 msgid "Exposure Program" msgstr "ExpoziÄní program" #: camlibs/ptp2/config.c:6717 camlibs/ptp2/ptp.c:4535 msgid "Scene Mode" msgstr "Scénický Å™ežim" #: camlibs/ptp2/config.c:6718 camlibs/ptp2/ptp.c:4801 msgid "Aspect Ratio" msgstr "" #: camlibs/ptp2/config.c:6720 camlibs/ptp2/ptp.c:4590 msgid "HDR Mode" msgstr "Režim vysokého dyn. rozsahu (HDR)" #: camlibs/ptp2/config.c:6721 camlibs/ptp2/ptp.c:4592 msgid "HDR High Dynamic" msgstr "HDR – vysoká dynamika" #: camlibs/ptp2/config.c:6722 camlibs/ptp2/ptp.c:4594 msgid "HDR Smoothing" msgstr "HDR – vyhlazování" #: camlibs/ptp2/config.c:6723 camlibs/ptp2/config.c:6724 #: camlibs/ptp2/ptp.c:4122 msgid "Still Capture Mode" msgstr "Režim poÅ™izování statických snímků" #: camlibs/ptp2/config.c:6725 msgid "Canon Shooting Mode" msgstr "Canon – režim poÅ™izování snímků" #: camlibs/ptp2/config.c:6726 msgid "Canon Auto Exposure Mode" msgstr "Canon – režim automat. expozice" #: camlibs/ptp2/config.c:6727 camlibs/ptp2/ptp.c:4181 msgid "Drive Mode" msgstr "Dávkový režim" #: camlibs/ptp2/config.c:6728 msgid "Picture Style" msgstr "Styl snímku" #: camlibs/ptp2/config.c:6729 camlibs/ptp2/ptp.c:4131 msgid "Focus Metering Mode" msgstr "Režim měření zaostÅ™ení" #: camlibs/ptp2/config.c:6730 camlibs/ptp2/ptp.c:4112 msgid "Exposure Metering Mode" msgstr "Režim měření nasvÄ›tlení scény" #: camlibs/ptp2/config.c:6733 msgid "AV Open" msgstr "AV Open" #: camlibs/ptp2/config.c:6734 msgid "AV Max" msgstr "Nast. horní hranice automat. nast. zaclonÄ›ní" #: camlibs/ptp2/config.c:6736 camlibs/ptp2/ptp.c:4185 msgid "Focusing Point" msgstr "Ostřící bod" #: camlibs/ptp2/config.c:6738 msgid "Capture Delay" msgstr "Prodleva snímání" #: camlibs/ptp2/config.c:6742 msgid "Shutter Speed 2" msgstr "ExpoziÄní Äas „2“" #: camlibs/ptp2/config.c:6743 #, fuzzy msgid "Movie Shutter Speed 2" msgstr "ExpoziÄní Äas „2“" #: camlibs/ptp2/config.c:6747 camlibs/ptp2/config.c:6748 #: camlibs/ptp2/ptp.c:4183 msgid "Metering Mode" msgstr "Režim měření" #: camlibs/ptp2/config.c:6749 camlibs/ptp2/ptp.c:4184 msgid "AF Distance" msgstr "Vzdálenost automat. zaostÅ™ení" #: camlibs/ptp2/config.c:6750 camlibs/ptp2/ptp.c:4354 msgid "Focus Area Wrap" msgstr "Obal oblasti zaostÅ™ení" #: camlibs/ptp2/config.c:6751 msgid "Exposure Delay Mode" msgstr "Režim prodlevy expozice" #: camlibs/ptp2/config.c:6752 camlibs/ptp2/ptp.c:4384 msgid "Exposure Lock" msgstr "UzamÄení expoziÄních hodnot" #: camlibs/ptp2/config.c:6753 msgid "AE-L/AF-L Mode" msgstr "Zda tlaÄítko AE-L/AF-L blokuje exp. Äi zaostÅ™ení" #: camlibs/ptp2/config.c:6754 camlibs/ptp2/config.c:6755 msgid "Live View AF Mode" msgstr "Režim autom. zaostÅ™ení v živém náhledu" #: camlibs/ptp2/config.c:6756 camlibs/ptp2/ptp.c:4388 msgid "Live View AF Focus" msgstr "Automat. zaostÅ™ení v živém náhledu" #: camlibs/ptp2/config.c:6757 camlibs/ptp2/ptp.c:4410 msgid "File Number Sequencing" msgstr "Číselná posloupnost souborů" #: camlibs/ptp2/config.c:6758 camlibs/ptp2/ptp.c:4644 msgid "Flash Sign" msgstr "Výkon (smÄ›rné Äíslo) blesku" #: camlibs/ptp2/config.c:6759 msgid "Modelling Flash" msgstr "Náhled vrhaných stínů sérií záblesků" #: camlibs/ptp2/config.c:6760 msgid "Viewfinder Grid" msgstr "Zobr. pomocné kompoz. mřížky v hledáÄku" #: camlibs/ptp2/config.c:6761 camlibs/ptp2/ptp.c:4636 msgid "Image Review" msgstr "Zobrazení snímku po pořízení" #: camlibs/ptp2/config.c:6762 msgid "Image Rotation Flag" msgstr "OznaÄení snímku k otoÄení" #: camlibs/ptp2/config.c:6763 msgid "Release without CF card" msgstr "PoÅ™izování snímků i bez paměťové karty" #: camlibs/ptp2/config.c:6764 camlibs/ptp2/ptp.c:4652 msgid "Flash Mode Manual Power" msgstr "RuÄní režim nastavení intenzity záblesku" #: camlibs/ptp2/config.c:6765 msgid "Auto Focus Area" msgstr "Oblast pro automatické zaostÅ™ování" #: camlibs/ptp2/config.c:6766 camlibs/ptp2/ptp.c:4588 msgid "Flash Exposure Compensation" msgstr "Kompenzace vlivu blesku na exp." #: camlibs/ptp2/config.c:6767 camlibs/ptp2/config.c:6768 msgid "Bracketing" msgstr "Více snímků s odstupňováním daného nastavení" #: camlibs/ptp2/config.c:6769 msgid "Bracket Mode" msgstr "Režim více snímků s odstupňováním daného nastavení" #: camlibs/ptp2/config.c:6770 msgid "EV Step" msgstr "Velikost kroku zmÄ›ny expozice" #: camlibs/ptp2/config.c:6771 camlibs/ptp2/ptp.c:4434 msgid "Bracket Set" msgstr "Nastavit pořízení nÄ›kolika snímků s různými úrovnÄ›mi daného nastavení" #: camlibs/ptp2/config.c:6772 camlibs/ptp2/ptp.c:4438 msgid "Bracket Order" msgstr "" "PoÅ™adí pÅ™i poÅ™izování nÄ›kolika snímků s různými úrovnÄ›mi daného nastavení" #: camlibs/ptp2/config.c:6773 camlibs/ptp2/ptp.c:4127 msgid "Burst Number" msgstr "PoÄet snímků v dávce" #: camlibs/ptp2/config.c:6774 camlibs/ptp2/ptp.c:4128 msgid "Burst Interval" msgstr "Prodlevy mezi jednotlivými snímky dávky" #: camlibs/ptp2/config.c:6775 camlibs/ptp2/ptp.c:4404 camlibs/ptp2/ptp.c:4541 msgid "Maximum Shots" msgstr "Kolik snímků nejvýše pořídit" #: camlibs/ptp2/config.c:6778 camlibs/ptp2/config.c:6786 #: camlibs/ptp2/ptp.c:4262 msgid "Auto White Balance Bias" msgstr "Jemné doladÄ›ní automatického vyvážení bílé" #: camlibs/ptp2/config.c:6779 camlibs/ptp2/config.c:6787 #: camlibs/ptp2/ptp.c:4264 msgid "Tungsten White Balance Bias" msgstr "Jemné doladÄ›ní vyvážení bílé pro žárovkové osvÄ›tlení" #: camlibs/ptp2/config.c:6780 camlibs/ptp2/config.c:6788 #: camlibs/ptp2/ptp.c:4266 msgid "Fluorescent White Balance Bias" msgstr "Jemné doladÄ›ní vyvážení bílé pro výbojkové osvÄ›tlení" #: camlibs/ptp2/config.c:6781 camlibs/ptp2/config.c:6789 #: camlibs/ptp2/ptp.c:4268 msgid "Daylight White Balance Bias" msgstr "Jemné doladÄ›ní vyvážení bílé pro denní svÄ›tlo" #: camlibs/ptp2/config.c:6782 camlibs/ptp2/config.c:6790 #: camlibs/ptp2/ptp.c:4270 msgid "Flash White Balance Bias" msgstr "Jemné doladÄ›ní vyvážení bílé pro osvÄ›tlení bleskem" #: camlibs/ptp2/config.c:6783 camlibs/ptp2/config.c:6791 #: camlibs/ptp2/ptp.c:4272 msgid "Cloudy White Balance Bias" msgstr "Jemné doladÄ›ní vyvážení bílé pro zataženou oblohu" #: camlibs/ptp2/config.c:6784 camlibs/ptp2/config.c:6792 #: camlibs/ptp2/ptp.c:4274 msgid "Shady White Balance Bias" msgstr "Jemné doladÄ›ní vyvážení bílé pro svÄ›tlo v polostínu" #: camlibs/ptp2/config.c:6794 msgid "White Balance Bias Preset Nr" msgstr "Jemná úprava vyvážení bílé – pÅ™ednastavená hodnota Ä:" #: camlibs/ptp2/config.c:6795 msgid "White Balance Bias Preset 0" msgstr "Jemná úprava vyvážení bílé – pÅ™ednastavená hodnota 0" #: camlibs/ptp2/config.c:6796 msgid "White Balance Bias Preset 1" msgstr "Jemná úprava vyvážení bílé – pÅ™ednastavená hodnota 1" #: camlibs/ptp2/config.c:6797 msgid "White Balance Bias Preset 2" msgstr "Jemná úprava vyvážení bílé – pÅ™ednastavená hodnota 2" #: camlibs/ptp2/config.c:6798 msgid "White Balance Bias Preset 3" msgstr "Jemná úprava vyvážení bílé – pÅ™ednastavená hodnota 3" #: camlibs/ptp2/config.c:6799 msgid "White Balance Bias Preset 4" msgstr "Jemná úprava vyvážení bílé – pÅ™ednastavená hodnota 4" #: camlibs/ptp2/config.c:6800 msgid "Selftimer Delay" msgstr "Prodleva samospouÅ¡tÄ›" #: camlibs/ptp2/config.c:6801 msgid "Center Weight Area" msgstr "S důrazem na stÅ™ed" #: camlibs/ptp2/config.c:6802 camlibs/ptp2/config.c:6889 #: camlibs/ptp2/config.c:6927 camlibs/ptp2/ptp.c:4428 msgid "Flash Shutter Speed" msgstr "Exp. Äas blesku" #: camlibs/ptp2/config.c:6803 camlibs/ptp2/ptp.c:4648 msgid "Remote Timeout" msgstr "Vzdálené vyprÅ¡ení Äasové prodlevy" #: camlibs/ptp2/config.c:6804 camlibs/ptp2/ptp.c:4322 msgid "Remote Mode" msgstr "Režim dálkového ovládání" #: camlibs/ptp2/config.c:6805 #, fuzzy msgid "Application Mode" msgstr "Režim provozu přístroje" #: camlibs/ptp2/config.c:6806 camlibs/ptp2/ptp.c:4596 msgid "Optimize Image" msgstr "Optimalizace snímku" #: camlibs/ptp2/config.c:6807 camlibs/ptp2/ptp.c:4300 msgid "Sharpening" msgstr "DoostÅ™ení" #: camlibs/ptp2/config.c:6808 camlibs/ptp2/ptp.c:4302 msgid "Tone Compensation" msgstr "Kompenzace barevného nádechu" #: camlibs/ptp2/config.c:6809 camlibs/ptp2/ptp.c:4598 msgid "Saturation" msgstr "Sytost barev" #: camlibs/ptp2/config.c:6810 camlibs/ptp2/ptp.c:4306 msgid "Hue Adjustment" msgstr "Úprava barevného tónu" #: camlibs/ptp2/config.c:6811 msgid "Auto Exposure Bracketing" msgstr "Více snímků s odstupňovanou expozicí" #: camlibs/ptp2/config.c:6812 msgid "Movie Sound" msgstr "Zvukový stopa k videu" #: camlibs/ptp2/config.c:6813 camlibs/ptp2/ptp.c:4491 msgid "Manual Movie Setting" msgstr "RuÄní nastavení videa" #: camlibs/ptp2/config.c:6814 msgid "Microphone" msgstr "Mikrofon" #: camlibs/ptp2/config.c:6815 msgid "Reverse Indicators" msgstr "OtoÄené indikátory" #: camlibs/ptp2/config.c:6816 camlibs/ptp2/ptp.c:4533 msgid "Auto Distortion Control" msgstr "Automatická kompenzace deformací" #: camlibs/ptp2/config.c:6817 camlibs/ptp2/ptp.c:4324 msgid "Video Mode" msgstr "Videorežim" #: camlibs/ptp2/config.c:6835 msgid "Meter Off Time" msgstr "ÄŒasomÄ›r" #: camlibs/ptp2/config.c:6841 camlibs/ptp2/config.c:6848 #, fuzzy msgid "Assign Func Button" msgstr "PÅ™iÅ™azení funkÄního tlaÄítka" #: camlibs/ptp2/config.c:6842 camlibs/ptp2/config.c:6849 #, fuzzy msgid "Assign Preview Button" msgstr "TlaÄítko náhledu" #: camlibs/ptp2/config.c:6854 camlibs/ptp2/config.c:6863 #: camlibs/ptp2/config.c:6916 camlibs/ptp2/config.c:6917 #: camlibs/ptp2/ptp.c:4493 camlibs/ptp2/ptp.c:4743 msgid "Movie Quality" msgstr "Kvalita videonahrávky" #: camlibs/ptp2/config.c:6856 camlibs/ptp2/config.c:6865 #: camlibs/ptp2/config.c:6873 camlibs/ptp2/config.c:6884 #: camlibs/ptp2/config.c:6909 msgid "Minimum Shutter Speed" msgstr "Nejnižší expoziÄní Äas" #: camlibs/ptp2/config.c:6862 #, fuzzy msgid "Movie Resolution" msgstr "RozliÅ¡ení obrázku" #: camlibs/ptp2/config.c:6866 camlibs/ptp2/config.c:6878 #: camlibs/ptp2/config.c:6886 camlibs/ptp2/config.c:6914 msgid "Continuous Shooting Speed Slow" msgstr "Kontinuální snímání s delší prodlevou mezi snímky" #: camlibs/ptp2/config.c:6867 camlibs/ptp2/config.c:6874 #: camlibs/ptp2/config.c:6885 camlibs/ptp2/config.c:6910 msgid "ISO Auto Hi Limit" msgstr "Maximum pro ISO v automatickém režimu" #: camlibs/ptp2/config.c:6868 camlibs/ptp2/config.c:6888 #: camlibs/ptp2/config.c:6926 camlibs/ptp2/ptp.c:4426 msgid "Flash Sync. Speed" msgstr "Synchronizace záblesku a exponování" #: camlibs/ptp2/config.c:6869 #, fuzzy msgid "Focus Metering" msgstr "Režim měření zaostÅ™ení" #: camlibs/ptp2/config.c:6876 camlibs/ptp2/config.c:6901 #: camlibs/ptp2/config.c:6912 camlibs/ptp2/config.c:6918 #: camlibs/ptp2/ptp.c:4745 msgid "High ISO Noise Reduction" msgstr "PotlaÄení Å¡umu pÅ™i vysoké citlivosti (ISO)" #: camlibs/ptp2/config.c:6887 camlibs/ptp2/config.c:6925 msgid "Continuous Shooting Speed High" msgstr "Kontinuální snímání s kratší prodlevou mezi snímky" #: camlibs/ptp2/config.c:6891 camlibs/ptp2/ptp.c:4314 msgid "JPEG Compression Policy" msgstr "Strategie komprimace JPEG" #: camlibs/ptp2/config.c:6892 msgid "AF-C Mode Priority" msgstr "UpÅ™ednostňovat průběžné autom. zaostÅ™ování" #: camlibs/ptp2/config.c:6893 msgid "AF-S Mode Priority" msgstr "UpÅ™ednostňovat jednorázové autom. zaostÅ™ení pÅ™i namáÄknutí spouÅ¡tÄ›" #: camlibs/ptp2/config.c:6894 msgid "AF Activation" msgstr "Zapnutí automatického ostÅ™ení" #: camlibs/ptp2/config.c:6895 camlibs/ptp2/ptp.c:4666 msgid "Dynamic AF Area" msgstr "PromÄ›nlivá oblast automatického ostÅ™ení" #: camlibs/ptp2/config.c:6896 camlibs/ptp2/ptp.c:4358 msgid "AF Lock On" msgstr "UzamÄení automat. zaostÅ™ení" #: camlibs/ptp2/config.c:6897 camlibs/ptp2/ptp.c:4469 msgid "AF Area Point" msgstr "Bod pro automat. zaostÅ™ení" #: camlibs/ptp2/config.c:6898 msgid "AF On Button" msgstr "TlaÄítko zapnutí automat. zostÅ™ení" #: camlibs/ptp2/config.c:6913 #, fuzzy msgid "Movie High ISO Noise Reduction" msgstr "PotlaÄení Å¡umu pÅ™i vysoké citlivosti (ISO)" #: camlibs/ptp2/config.c:6915 msgid "Maximum continuous release" msgstr "Nejvyšší poÄet po sobÄ› jdoucích snímků" #: camlibs/ptp2/config.c:6920 camlibs/ptp2/ptp.c:4260 msgid "Raw Compression" msgstr "Komprimace dat RAW" #: camlibs/ptp2/config.c:6922 #, fuzzy msgid "Image Quality 2" msgstr "Obrazová kvalita" #: camlibs/ptp2/config.c:6944 msgid "Image Settings" msgstr "Nastavení obrazu" #: camlibs/ptp2/config.c:6947 camlibs/ptp2/config.c:6948 #: camlibs/ptp2/config.c:6949 camlibs/ptp2/config.c:6950 #: camlibs/ptp2/config.c:6951 camlibs/ptp2/config.c:6952 msgid "Capture Settings" msgstr "Nastavení snímání" #: camlibs/ptp2/config.c:6954 msgid "WIFI profiles" msgstr "Profily pro sítÄ› WiFi" #: camlibs/ptp2/config.c:7088 camlibs/ptp2/config.c:7362 msgid "Other PTP Device Properties" msgstr "Ostatní vlastnosti zařízení ohlednÄ› PTP" #: camlibs/ptp2/config.c:7116 camlibs/ptp2/config.c:7372 #, c-format msgid "PTP Property 0x%04x" msgstr "PTP vlastnost 0x%04x" #: camlibs/ptp2/config.c:7318 camlibs/ptp2/config.c:7389 #, c-format msgid "Sorry, the property '%s' / 0x%04x is currently ready-only." msgstr "Vlastnost „%s“ / 0x%04x lze nyní pouze Äíst." #: camlibs/ptp2/config.c:7324 #, fuzzy, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)" msgstr "" "Vlastnost „%s“ / 0x%04x nebyla nastavena – Äíslo chyby PTP protokolu 0x%04x." #: camlibs/ptp2/config.c:7346 camlibs/ptp2/config.c:7428 #, fuzzy, c-format msgid "The property '%s' / 0x%04x was not set (0x%04x: %s)." msgstr "" "Vlastnost „%s“ / 0x%04x nebyla nastavena – Äíslo chyby PTP protokolu 0x%04x." #: camlibs/ptp2/config.c:7351 #, fuzzy, c-format msgid "Parsing the value of widget '%s' / 0x%04x failed with %d." msgstr "Rozbor hodnoty widgetu „%s“ / 0x%04x selhal s %d!" #: camlibs/ptp2/library.c:105 msgid "You need to specify a folder starting with /store_xxxxxxxxx/" msgstr "Je tÅ™eba zadat složku s názvem v podobÄ› /store_xxxxxxxx/." #: camlibs/ptp2/library.c:2355 #, c-format msgid "" "PTP2 driver\n" "(c) 2001-2005 by Mariusz Woloszyn .\n" "(c) 2003-%d by Marcus Meissner .\n" "This driver supports cameras that support PTP or PictBridge(tm), and\n" "Media Players that support the Media Transfer Protocol (MTP).\n" "\n" "Enjoy!" msgstr "" "OvladaÄ pro protokol PTP2\n" "(c)2001-2005 Mariusz Woloszyn .\n" "(c)2003-%d Marcus Meissner .\n" "Tento ovladaÄ podporuje přístroje, které komunikují pomocí\n" "protokolů PTP, PictBridgeâ„¢ Äi MTP (multimediální pÅ™ehrávaÄe).\n" "\n" "Užijte si to!" #: camlibs/ptp2/library.c:2399 camlibs/ptp2/library.c:3496 #, fuzzy msgid "Canon enable viewfinder failed" msgstr "Canon – zapnutí hledáÄku se nezdaÅ™ilo: %d" #: camlibs/ptp2/library.c:2403 #, fuzzy msgid "Canon get viewfinder image failed" msgstr "Canon – nepodaÅ™ilo se získat obraz z hledáÄku: %d" #: camlibs/ptp2/library.c:2537 msgid "Sorry, your Canon camera does not support Canon Viewfinder mode" msgstr "U tohoto typu přístroje Canon není režim hledáÄku k dispozici" #: camlibs/ptp2/library.c:2545 msgid "Sorry, your Nikon camera does not support LiveView mode" msgstr "U tohoto typu přístroje Nikon není režim živého náhledu k dispozici" #: camlibs/ptp2/library.c:2623 camlibs/ptp2/library.c:2639 msgid "" "Sorry, your Nikon camera does not seem to return a JPEG image in LiveView " "mode" msgstr "Tento přístroj Nikon neposkytuje snímky JPEG v režimu živého náhledu." #: camlibs/ptp2/library.c:2660 #, fuzzy msgid "Nikon disable liveview failed" msgstr "Nikon – vypnutí živého náhledu se nezdaÅ™ilo: %x" #: camlibs/ptp2/library.c:2799 msgid "Sorry, your camera does not support Nikon capture" msgstr "Spoušť tohoto přístroje Nikon nelze ovládat z poÄítaÄe" #: camlibs/ptp2/library.c:2831 camlibs/ptp2/library.c:3870 msgid "Failed to enable liveview on a Nikon 1, but it is required for capture" msgstr "" #: camlibs/ptp2/library.c:3045 msgid "Sorry, your Canon camera does not support Canon EOS Capture" msgstr "Spoušť tohoto přístroje Canon nelze ovládat z poÄítaÄe" #: camlibs/ptp2/library.c:3067 camlibs/ptp2/library.c:3967 #, fuzzy msgid "Canon EOS Half-Press failed" msgstr "Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: %x" #: camlibs/ptp2/library.c:3071 camlibs/ptp2/library.c:3133 #: camlibs/ptp2/library.c:3974 camlibs/ptp2/library.c:4191 #, fuzzy msgid "Canon EOS Get Changes failed" msgstr "Canon, Å™ada EOS – naÄtení zmÄ›n se nezdaÅ™ilo: 0x%04x" #: camlibs/ptp2/library.c:3078 camlibs/ptp2/library.c:3116 #: camlibs/ptp2/library.c:3983 camlibs/ptp2/library.c:4038 msgid "Canon EOS Capture failed to release: Perhaps no focus?" msgstr "" "Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: Nejspíš není zaostÅ™eno?" #: camlibs/ptp2/library.c:3091 camlibs/ptp2/library.c:3103 #: camlibs/ptp2/library.c:3993 camlibs/ptp2/library.c:4005 #, fuzzy msgid "Canon EOS Half-Release failed" msgstr "Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: %x" #: camlibs/ptp2/library.c:3096 camlibs/ptp2/library.c:3998 #, fuzzy msgid "Canon EOS Full-Press failed" msgstr "Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: %x" #: camlibs/ptp2/library.c:3099 camlibs/ptp2/library.c:4001 #, fuzzy msgid "Canon EOS Full-Release failed" msgstr "Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: %x" #: camlibs/ptp2/library.c:3106 #, fuzzy msgid "Canon EOS Capture failed" msgstr "Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: %x" #: camlibs/ptp2/library.c:3109 #, c-format msgid "Canon EOS Capture failed: %x" msgstr "Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: %x" #: camlibs/ptp2/library.c:3118 camlibs/ptp2/library.c:4040 #, fuzzy msgid "Canon EOS Capture failed to release: Perhaps mirror up?" msgstr "" "Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: Nejspíš není zaostÅ™eno?" #: camlibs/ptp2/library.c:3120 camlibs/ptp2/library.c:4042 msgid "Canon EOS Capture failed to release: Perhaps no more memory on card?" msgstr "" "Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: Nejspíš není volné místo na " "paměťové kartÄ›?" #: camlibs/ptp2/library.c:3122 camlibs/ptp2/library.c:4044 #, fuzzy msgid "Canon EOS Capture failed to release: Card read-only?" msgstr "" "Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: Nejspíš není zaostÅ™eno?" #: camlibs/ptp2/library.c:3124 camlibs/ptp2/library.c:4046 #, c-format msgid "Canon EOS Capture failed to release: Unknown error %d, please report." msgstr "" "Canon, Å™ada EOS – pořízení snímku se nezdaÅ™ilo: Neznámá chyba %d, prosíme " "ohlaste ji." #: camlibs/ptp2/library.c:3332 msgid "Sorry, your Canon camera does not support Canon Capture initiation" msgstr "Spoušť tohoto přístroje Canon nelze ovládat z poÄítaÄe." #: camlibs/ptp2/library.c:3374 camlibs/ptp2/library.c:4108 #, fuzzy msgid "Canon disable viewfinder failed" msgstr "Canon – vypnutí hledáÄku se nezdaÅ™ilo: %d" #: camlibs/ptp2/library.c:3379 camlibs/ptp2/library.c:3387 #: camlibs/ptp2/library.c:4129 #, fuzzy msgid "Canon Capture failed" msgstr "Canon – pořízení snímku se nezdaÅ™ilo: %x" #: camlibs/ptp2/library.c:3669 camlibs/ptp2/library.c:4145 msgid "Sorry, your camera does not support generic capture" msgstr "Spoušť tohoto přístroje nelze ovládat z poÄítaÄe." #: camlibs/ptp2/library.c:4028 camlibs/ptp2/library.c:4031 #, c-format msgid "Canon EOS Trigger Capture failed: 0x%x" msgstr "" "Canon, Å™ada EOS – pořízení snímku vyvolané pohybem v zábÄ›ru se nezdaÅ™ilo: 0x" "%x" #: camlibs/ptp2/library.c:4073 msgid "Sorry, initializing your camera did not work. Please report this." msgstr "" "Inicializace tohoto přístroje nefunguje. Prosím ohlaste to (v angliÄtinÄ›) " "vývojářům (gPhoto2)." #: camlibs/ptp2/library.c:4668 msgid "read only" msgstr "pouze pro Ätení" #: camlibs/ptp2/library.c:4669 msgid "readwrite" msgstr "Ätení i zápis" #: camlibs/ptp2/library.c:4798 camlibs/sierra/sierra.c:1951 #, c-format msgid "Manufacturer: %s\n" msgstr "Výrobce: %s\n" #: camlibs/ptp2/library.c:4800 #, c-format msgid "Model: %s\n" msgstr "Model: %s\n" #: camlibs/ptp2/library.c:4802 #, c-format msgid " Version: %s\n" msgstr " Verze: %s\n" #: camlibs/ptp2/library.c:4805 #, c-format msgid " Serial Number: %s\n" msgstr " Sériové Äíslo: %s\n" #: camlibs/ptp2/library.c:4809 #, c-format msgid "Vendor Extension ID: 0x%x (%d.%d)\n" msgstr "Identifikátor rozšíření výrobce: 0x%x (%d.%d)\n" #: camlibs/ptp2/library.c:4816 #, c-format msgid "Vendor Extension Description: %s\n" msgstr "Popis rozšíření výrobce: %s\n" #: camlibs/ptp2/library.c:4821 #, c-format msgid "PTP Standard Version: %d.%d\n" msgstr "Verze standardu PTP: %d.%d\n" #: camlibs/ptp2/library.c:4828 #, c-format msgid "Functional Mode: 0x%04x\n" msgstr "Režim provozu: 0x%04x\n" #: camlibs/ptp2/library.c:4833 #, c-format msgid "" "\n" "Capture Formats: " msgstr "" "\n" "Formát snímků: " #: camlibs/ptp2/library.c:4847 #, c-format msgid "Display Formats: " msgstr "Formát displeje:" #: camlibs/ptp2/library.c:4863 #, c-format msgid "Supported MTP Object Properties:\n" msgstr "Podporované vlastnosti protokolu pro pÅ™enos médií (MTP):\n" #: camlibs/ptp2/library.c:4878 #, c-format msgid " PTP error %04x on query" msgstr "PÅ™i dotazu doÅ¡lo k chybÄ› %04x protokolu pro pÅ™enos snímků (PTP)" #: camlibs/ptp2/library.c:4895 #, c-format msgid "" "\n" "Device Capabilities:\n" msgstr "" "\n" "Funkce zařízení:\n" #: camlibs/ptp2/library.c:4899 #, c-format msgid "\tFile Download, " msgstr "\tStažení souboru, " #: camlibs/ptp2/library.c:4902 #, c-format msgid "File Deletion, " msgstr "Smazání souboru – ano, " #: camlibs/ptp2/library.c:4904 #, c-format msgid "No File Deletion, " msgstr "Smazání souboru – ne, " #: camlibs/ptp2/library.c:4908 #, c-format msgid "File Upload\n" msgstr "Odeslání souboru – ano\n" #: camlibs/ptp2/library.c:4910 #, c-format msgid "No File Upload\n" msgstr "Odeslání souboru – ne\n" #: camlibs/ptp2/library.c:4915 #, c-format msgid "\tGeneric Image Capture, " msgstr "\tObecné zachycení snímku – ano, " #: camlibs/ptp2/library.c:4917 #, c-format msgid "\tNo Image Capture, " msgstr "\tObecné zachycení snímku – ne, " #: camlibs/ptp2/library.c:4920 #, c-format msgid "Open Capture, " msgstr "ZaÄít pořízovat snímky – ano, " #: camlibs/ptp2/library.c:4922 #, c-format msgid "No Open Capture, " msgstr "ZaÄít pořízovat snímky – ne, " #: camlibs/ptp2/library.c:4929 #, fuzzy, c-format msgid "Canon Capture" msgstr "Canon – poÅ™izování snímků\n" #: camlibs/ptp2/library.c:4933 #, fuzzy, c-format msgid "Canon EOS Capture" msgstr "Canon, Å™ada EOS – poÅ™izování snímků\n" #: camlibs/ptp2/library.c:4937 #, c-format msgid "%sCanon EOS Shutter Button" msgstr "" #: camlibs/ptp2/library.c:4947 #, fuzzy, c-format msgid "Nikon Capture 1" msgstr "Nikon – poÅ™izování snímků\n" #: camlibs/ptp2/library.c:4951 #, fuzzy, c-format msgid "%sNikon Capture 2" msgstr "Nikon – poÅ™izování snímků\n" #: camlibs/ptp2/library.c:4955 #, fuzzy, c-format msgid "%sNikon Capture 3 " msgstr "Nikon – poÅ™izování snímků\n" #: camlibs/ptp2/library.c:4965 #, fuzzy, c-format msgid "Sony Capture" msgstr "Canon – poÅ™izování snímků\n" #: camlibs/ptp2/library.c:4972 #, c-format msgid "Olympus E XML Capture\n" msgstr "" #: camlibs/ptp2/library.c:4978 #, c-format msgid "No vendor specific capture\n" msgstr "Žádná metoda poÅ™izování snímků specifická dle výrobce\n" #: camlibs/ptp2/library.c:4985 #, c-format msgid "\tNikon Wifi support\n" msgstr "\tNikon – podpora WiFi\n" #: camlibs/ptp2/library.c:4991 #, c-format msgid "\tCanon Wifi support\n" msgstr "\tCanon – podpora WiFi\n" #: camlibs/ptp2/library.c:5002 #, c-format msgid "" "\n" "Storage Devices Summary:\n" msgstr "" "\n" "Informace o datovém úložiÅ¡ti:\n" #: camlibs/ptp2/library.c:5018 #, c-format msgid "\tStorageDescription: %s\n" msgstr "\tPopis datového úložiÅ¡tÄ›: %s\n" #: camlibs/ptp2/library.c:5022 #, c-format msgid "\tVolumeLabel: %s\n" msgstr "\tJmenovka svazku: %s\n" #: camlibs/ptp2/library.c:5029 msgid "Builtin ROM" msgstr "VÄ›stavÄ›ná ROM" #: camlibs/ptp2/library.c:5030 msgid "Removable ROM" msgstr "Vyjímatelná ROM" #: camlibs/ptp2/library.c:5031 msgid "Builtin RAM" msgstr "VestavÄ›ná RAM" #: camlibs/ptp2/library.c:5032 msgid "Removable RAM (memory card)" msgstr "Vyjímatelné RAM (paměťová karta)" #: camlibs/ptp2/library.c:5034 camlibs/ptp2/library.c:5047 #: camlibs/ptp2/library.c:5059 #, c-format msgid "Unknown: 0x%04x\n" msgstr "Neznámé: 0x%04x\n" #: camlibs/ptp2/library.c:5038 #, c-format msgid "\tStorage Type: %s\n" msgstr "\tTyp datového úložiÅ¡tÄ›: %s\n" #: camlibs/ptp2/library.c:5043 msgid "Generic Flat" msgstr "Obecné ploché" #: camlibs/ptp2/library.c:5044 msgid "Generic Hierarchical" msgstr "Obecné hierarchické" #: camlibs/ptp2/library.c:5045 msgid "Digital Camera Layout (DCIM)" msgstr "Standardní rozvržení (DCIM)" #: camlibs/ptp2/library.c:5051 #, c-format msgid "\tFilesystemtype: %s\n" msgstr "\tTyp souborového systému: %s\n" #: camlibs/ptp2/library.c:5055 msgid "Read-Write" msgstr "ÄŒtení i zápis" #: camlibs/ptp2/library.c:5056 msgid "Read-Only" msgstr "Jen pro Ätení" #: camlibs/ptp2/library.c:5057 msgid "Read Only with Object deletion" msgstr "Jen pro Ätení s mazáním objektů" #: camlibs/ptp2/library.c:5063 #, c-format msgid "\tAccess Capability: %s\n" msgstr "\tMožnosti přístupu: %s\n" #: camlibs/ptp2/library.c:5065 #, c-format msgid "\tMaximum Capability: %llu (%lu MB)\n" msgstr "\tNejvyšší možná kapacita: %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5070 #, c-format msgid "\tFree Space (Bytes): %llu (%lu MB)\n" msgstr "\tZbývající kapacita (v bajtech): %llu (%lu MB)\n" #: camlibs/ptp2/library.c:5075 #, c-format msgid "\tFree Space (Images): %d\n" msgstr "\tZbývající kapacita (snímků): %d\n" #: camlibs/ptp2/library.c:5083 #, c-format msgid "" "\n" "Device Property Summary:\n" msgstr "" "\n" "Souhrn vlastností zařízení:\n" #: camlibs/ptp2/library.c:5109 #, c-format msgid " not read out.\n" msgstr " nenaÄteno.\n" #: camlibs/ptp2/library.c:5116 #, fuzzy, c-format msgid "cannot be queried.\n" msgstr "Na paměťovou kartu není možné zapisovat." #: camlibs/ptp2/library.c:5189 #, c-format msgid " error %x on query." msgstr "chyba %x protokolu pro pÅ™enos obrázků (PTP) bÄ›hem dotazu." #: camlibs/ptp2/library.c:5945 camlibs/ptp2/library.c:6051 #: camlibs/ptp2/library.c:6225 #, c-format msgid "File '%s/%s' does not exist." msgstr "Soubor „%s/%s“ neexistuje." #: camlibs/ptp2/library.c:6230 msgid "Metadata only supported for MTP devices." msgstr "" "Metadata jsou podporována pouze u zařízení komunikujících protokolem MTP." #: camlibs/ptp2/library.c:6414 msgid "Device does not support setting object protection." msgstr "Přístroj nepodporuje nastavování ochrany objektu." #: camlibs/ptp2/library.c:6418 #, fuzzy, c-format msgid "Device failed to set object protection to %d" msgstr "Přístroj nebyl schopen nastavit ochranu objektu na %d, chyba 0x%04x." #: camlibs/ptp2/library.c:6870 msgid "Initializing Camera" msgstr "Probíhá inicializace zařízení" #: camlibs/ptp2/library.c:7254 #, c-format msgid "" "Currently, PTP is only implemented for USB and PTP/IP cameras currently, " "port type %x" msgstr "" "V souÄasnosti lze pomocí protokolu pro pÅ™enos obrázků (PTP) komunikovat " "pouze s přístroji pÅ™ipojenými pÅ™es rozhraní USB Äi síť TCP/IP – typ portu je " "%x." #: camlibs/ptp2/library.c:7333 msgid "" "Olympus wrapped XML support is currently only available with libxml2 support " "built in." msgstr "" #: camlibs/ptp2/ptp.c:4013 msgid "PTP Undefined Error" msgstr "Neznámá chyba protokolu pro pÅ™enos snímků (PTP)" #: camlibs/ptp2/ptp.c:4014 msgid "PTP OK!" msgstr "PTP – v pořádku" #: camlibs/ptp2/ptp.c:4015 msgid "PTP General Error" msgstr "PTP – obecná chyba" #: camlibs/ptp2/ptp.c:4016 msgid "PTP Session Not Open" msgstr "PTP – relace není otevÅ™ena" #: camlibs/ptp2/ptp.c:4017 msgid "PTP Invalid Transaction ID" msgstr "PTP – neplatný identifikátor transakce" #: camlibs/ptp2/ptp.c:4018 msgid "PTP Operation Not Supported" msgstr "PTP – operace není podporována" #: camlibs/ptp2/ptp.c:4019 msgid "PTP Parameter Not Supported" msgstr "PTP – parametr není podporován" #: camlibs/ptp2/ptp.c:4020 msgid "PTP Incomplete Transfer" msgstr "PTP – pÅ™enos nebyl dokonÄen" #: camlibs/ptp2/ptp.c:4021 msgid "PTP Invalid Storage ID" msgstr "PTP – neplatný identifikátor datového úložiÅ¡tÄ›" #: camlibs/ptp2/ptp.c:4022 msgid "PTP Invalid Object Handle" msgstr "PTP – neplatný způsob zacházení s objektem" #: camlibs/ptp2/ptp.c:4023 msgid "PTP Device Prop Not Supported" msgstr "PTP – vlastnost přístroje není podporována" #: camlibs/ptp2/ptp.c:4024 msgid "PTP Invalid Object Format Code" msgstr "PTP – neplatný zápis formátu objektu" #: camlibs/ptp2/ptp.c:4025 msgid "PTP Store Full" msgstr "PTP – datové úložiÅ¡tÄ› je plné" #: camlibs/ptp2/ptp.c:4026 msgid "PTP Object Write Protected" msgstr "PTP – objekt je chránÄ›n proti zápisu" #: camlibs/ptp2/ptp.c:4027 msgid "PTP Store Read Only" msgstr "PTP – datové úložiÅ¡tÄ› je pouze pro Ätení" #: camlibs/ptp2/ptp.c:4028 msgid "PTP Access Denied" msgstr "PTP – přístup odepÅ™en" #: camlibs/ptp2/ptp.c:4029 msgid "PTP No Thumbnail Present" msgstr "PTP – nejsou k dispozici žádné náhledy" #: camlibs/ptp2/ptp.c:4030 msgid "PTP Self Test Failed" msgstr "PTP – samotestování nedopadlo úspěšnÄ›" #: camlibs/ptp2/ptp.c:4031 msgid "PTP Partial Deletion" msgstr "PTP – ÄásteÄné smazání" #: camlibs/ptp2/ptp.c:4032 msgid "PTP Store Not Available" msgstr "PTP – datové úložiÅ¡tÄ› není k dispozici" #: camlibs/ptp2/ptp.c:4033 msgid "PTP Specification By Format Unsupported" msgstr "PTP – urÄení dle formátu není podporováno" #: camlibs/ptp2/ptp.c:4034 msgid "PTP No Valid Object Info" msgstr "PTP – informace o objektu nejsou platné" #: camlibs/ptp2/ptp.c:4035 msgid "PTP Invalid Code Format" msgstr "PTP – neplatný formát instrukcí" #: camlibs/ptp2/ptp.c:4036 msgid "PTP Unknown Vendor Code" msgstr "PTP – neznámé instrukce výrobce" #: camlibs/ptp2/ptp.c:4037 msgid "PTP Capture Already Terminated" msgstr "PTP – poÅ™izování snímku již byl zruÅ¡eno" #: camlibs/ptp2/ptp.c:4038 msgid "PTP Device Busy" msgstr "PTP – zařízení je zaneprázdnÄ›né" #: camlibs/ptp2/ptp.c:4039 msgid "PTP Invalid Parent Object" msgstr "PTP – neplatný nadÅ™azený objekt" #: camlibs/ptp2/ptp.c:4040 msgid "PTP Invalid Device Prop Format" msgstr "PTP – neplatný formát vlastnosti zařízení" #: camlibs/ptp2/ptp.c:4041 msgid "PTP Invalid Device Prop Value" msgstr "PTP – neplatná hodnota vlastnosti zařízení" #: camlibs/ptp2/ptp.c:4042 camlibs/ptp2/ptp.c:4074 msgid "PTP Invalid Parameter" msgstr "PTP – neplatný parametr" #: camlibs/ptp2/ptp.c:4043 msgid "PTP Session Already Opened" msgstr "PTP – relace je již otevÅ™ena" #: camlibs/ptp2/ptp.c:4044 msgid "PTP Transaction Canceled" msgstr "PTP – transakce zruÅ¡ena" #: camlibs/ptp2/ptp.c:4045 msgid "PTP Specification Of Destination Unsupported" msgstr "PTP – zadání cíle není podporováno" #: camlibs/ptp2/ptp.c:4047 #, fuzzy msgid "Filename Required" msgstr "PTP s rozšířením firmy Kodak – je vyžadován název souboru" #: camlibs/ptp2/ptp.c:4048 #, fuzzy msgid "Filename Conflicts" msgstr "PTP s rozšířením firmy Kodak – soubor takového názvu již existuje" #: camlibs/ptp2/ptp.c:4049 #, fuzzy msgid "Filename Invalid" msgstr "PTP s rozšířením firmy Kodak – neplatný název souboru" #: camlibs/ptp2/ptp.c:4051 msgid "Hardware Error" msgstr "Hardwarová chyba" #: camlibs/ptp2/ptp.c:4052 msgid "Out of Focus" msgstr "Mimo ohnisko" #: camlibs/ptp2/ptp.c:4053 msgid "Change Camera Mode Failed" msgstr "ZmÄ›na režimu přístroje se nezdaÅ™ila" #: camlibs/ptp2/ptp.c:4054 msgid "Invalid Status" msgstr "Neplatný stav" #: camlibs/ptp2/ptp.c:4055 msgid "Set Property Not Supported" msgstr "Nastavování vlastnosti není podporováno" #: camlibs/ptp2/ptp.c:4056 msgid "Whitebalance Reset Error" msgstr "Chyba resetu vyvážení bílé" #: camlibs/ptp2/ptp.c:4057 msgid "Dust Reference Error" msgstr "" "Chyba pÅ™i poÅ™izování referen. snímku pro odstraňování následků prachu na " "snímaÄi." #: camlibs/ptp2/ptp.c:4058 msgid "Shutter Speed Bulb" msgstr "Expozice po dobu stisku spouÅ¡tÄ›" #: camlibs/ptp2/ptp.c:4059 msgid "Mirror Up Sequence" msgstr "Posloupnost zdvihnutí zrcátka" #: camlibs/ptp2/ptp.c:4060 msgid "Camera Mode Not Adjust FNumber" msgstr "Volba režimu neupraví zaclonÄ›ní" #: camlibs/ptp2/ptp.c:4061 msgid "Not in Liveview" msgstr "Není možné v režimu živého náhledu" #: camlibs/ptp2/ptp.c:4062 msgid "Mf Drive Step End" msgstr "Konec kroku ruÄního zaostÅ™ení" #: camlibs/ptp2/ptp.c:4063 msgid "Mf Drive Step Insufficiency" msgstr "PříliÅ¡ malý krok ruÄního zaostÅ™ení" #: camlibs/ptp2/ptp.c:4064 msgid "Advanced Transfer Cancel" msgstr "PÅ™eruÅ¡it pokroÄilý pÅ™enos" #: camlibs/ptp2/ptp.c:4066 #, fuzzy msgid "Unknown Command" msgstr "Neznámý povel" #: camlibs/ptp2/ptp.c:4067 #, fuzzy msgid "Operation Refused" msgstr "Operace zamítnuta" #: camlibs/ptp2/ptp.c:4068 #, fuzzy msgid "Lens Cover Present" msgstr "SejmÄ›te z objektivu krytku" #: camlibs/ptp2/ptp.c:4069 #, fuzzy msgid "Battery Low" msgstr "Akumulátor je vybitý" #: camlibs/ptp2/ptp.c:4070 #, fuzzy msgid "Camera Not Ready" msgstr "Přístroj není pÅ™ipraven" #: camlibs/ptp2/ptp.c:4072 msgid "PTP Timeout" msgstr "VyprÅ¡el Äasový limit PTP" #: camlibs/ptp2/ptp.c:4073 #, fuzzy msgid "PTP Cancel Request" msgstr "ZruÅ¡it požadavek PTP" #: camlibs/ptp2/ptp.c:4075 #, fuzzy msgid "PTP Response Expected" msgstr "Chyba protokolu pro pÅ™enos obrázků (PTP): oÄekávána odpovÄ›Ä" #: camlibs/ptp2/ptp.c:4076 #, fuzzy msgid "PTP Data Expected" msgstr "Chyba protokolu pro pÅ™enos obrázků (PTP): oÄekávána data" #: camlibs/ptp2/ptp.c:4077 #, fuzzy msgid "PTP I/O Error" msgstr "VstupnÄ›/výstupní chyba PTP" #: camlibs/ptp2/ptp.c:4101 msgid "Undefined PTP Property" msgstr "Nedefinovaná vlastnost PTP" #: camlibs/ptp2/ptp.c:4103 msgid "Functional Mode" msgstr "Režim provozu" #: camlibs/ptp2/ptp.c:4105 msgid "Compression Setting" msgstr "Nastavení komprimace" #: camlibs/ptp2/ptp.c:4106 camlibs/ptp2/ptp.c:4186 camlibs/ptp2/ptp.c:4747 #: camlibs/sierra/epson-desc.c:176 camlibs/sierra/nikon-desc.c:293 #: camlibs/sierra/olympus-desc.c:564 camlibs/sierra/olympus-desc.c:583 #: camlibs/sierra/olympus-desc.c:604 camlibs/sierra/olympus-desc.c:628 #: camlibs/sierra/sierra.c:1083 camlibs/sierra/sierra.c:1366 #: camlibs/sierra/sierra.c:1560 camlibs/sierra/sierra.c:1783 msgid "White Balance" msgstr "Vyvážení bílé" #: camlibs/ptp2/ptp.c:4107 msgid "RGB Gain" msgstr "RGB zisk" #: camlibs/ptp2/ptp.c:4114 msgid "Exposure Time" msgstr "ExpoziÄní Äas" #: camlibs/ptp2/ptp.c:4115 msgid "Exposure Program Mode" msgstr "Režim expoziÄního programu" #: camlibs/ptp2/ptp.c:4117 msgid "Exposure Index (film speed ISO)" msgstr "ExpoziÄní index (obdoba ISO u filmových svitků)" #: camlibs/ptp2/ptp.c:4119 msgid "Exposure Bias Compensation" msgstr "Kompenzace expoziÄního upÅ™ednostňování" #: camlibs/ptp2/ptp.c:4121 msgid "Pre-Capture Delay" msgstr "Prodleva pÅ™ed pořízením snímku" #: camlibs/ptp2/ptp.c:4123 camlibs/ptp2/ptp.c:4190 msgid "Contrast" msgstr "Kontrast" #: camlibs/ptp2/ptp.c:4125 camlibs/sierra/nikon-desc.c:553 #: camlibs/sierra/nikon-desc.c:576 msgid "Digital Zoom" msgstr "Digitální pÅ™iblížení" #: camlibs/ptp2/ptp.c:4129 msgid "Timelapse Number" msgstr "PoÄet ÄasosbÄ›rných snímků" #: camlibs/ptp2/ptp.c:4130 msgid "Timelapse Interval" msgstr "Prodleva mezi ÄasosbÄ›rnými snímky" #: camlibs/ptp2/ptp.c:4132 msgid "Upload URL" msgstr "URL pro odesílání" #: camlibs/ptp2/ptp.c:4134 msgid "Copyright Info" msgstr "Informace o autorských právech" #: camlibs/ptp2/ptp.c:4135 #, fuzzy msgid "Supported Streams" msgstr "Podporovaná velikost náhledového obrázku" #: camlibs/ptp2/ptp.c:4136 #, fuzzy msgid "Enabled Streams" msgstr "Neplatný stav" #: camlibs/ptp2/ptp.c:4137 #, fuzzy msgid "Video Format" msgstr "Formát data" #: camlibs/ptp2/ptp.c:4138 #, fuzzy msgid "Video Resolution" msgstr "RozliÅ¡ení obrázku" #: camlibs/ptp2/ptp.c:4139 #, fuzzy msgid "Video Quality" msgstr "Kvalita videonahrávky" #: camlibs/ptp2/ptp.c:4140 msgid "Video Framerate" msgstr "" #: camlibs/ptp2/ptp.c:4141 #, fuzzy msgid "Video Contrast" msgstr "Kontrast" #: camlibs/ptp2/ptp.c:4142 #, fuzzy msgid "Video Brightness" msgstr "Jas" #: camlibs/ptp2/ptp.c:4143 #, fuzzy msgid "Audio Format" msgstr "Formát data" #: camlibs/ptp2/ptp.c:4144 msgid "Audio Bitrate" msgstr "" #: camlibs/ptp2/ptp.c:4145 msgid "Audio Samplingrate" msgstr "" #: camlibs/ptp2/ptp.c:4146 msgid "Audio Bits per sample" msgstr "" #: camlibs/ptp2/ptp.c:4147 msgid "Audio Volume" msgstr "" #: camlibs/ptp2/ptp.c:4156 msgid "Date Time Stamp Format" msgstr "Formát zápisu data a Äasu do razítka" #: camlibs/ptp2/ptp.c:4158 msgid "Video Out" msgstr "Videovýstup" #: camlibs/ptp2/ptp.c:4159 msgid "Power Saving" msgstr "Å etÅ™ení energií" #: camlibs/ptp2/ptp.c:4160 msgid "UI Language" msgstr "Jazyk uživatelského rozhraní" #: camlibs/ptp2/ptp.c:4169 msgid "Battery Type" msgstr "Typ akumulátoru" #: camlibs/ptp2/ptp.c:4170 msgid "Battery Mode" msgstr "Režim akumulátoru" #: camlibs/ptp2/ptp.c:4171 msgid "UILockType" msgstr "Typ zámku uživatelského rozhraní" #: camlibs/ptp2/ptp.c:4172 msgid "Camera Mode" msgstr "Režim provozu přístroje" #: camlibs/ptp2/ptp.c:4174 msgid "Full View File Format" msgstr "Formát souboru s úplným zobrazením" #: camlibs/ptp2/ptp.c:4176 msgid "Self Time" msgstr "Samospoušť" #: camlibs/ptp2/ptp.c:4179 camlibs/ptp2/ptp.c:4312 msgid "Shooting Mode" msgstr "Režim focení" #: camlibs/ptp2/ptp.c:4180 msgid "Image Mode" msgstr "Režim obrazu" #: camlibs/ptp2/ptp.c:4187 msgid "Slow Shutter Setting" msgstr "Nastavení dlouhého expoziÄního Äasu" #: camlibs/ptp2/ptp.c:4188 msgid "AF Mode" msgstr "Režim automatického ostÅ™ení" #: camlibs/ptp2/ptp.c:4189 msgid "Image Stabilization" msgstr "Stabilizace obrazu" #: camlibs/ptp2/ptp.c:4191 msgid "Color Gain" msgstr "Zesílení barev" #: camlibs/ptp2/ptp.c:4193 msgid "Sensitivity" msgstr "Citlivost" #: camlibs/ptp2/ptp.c:4194 msgid "Parameter Set" msgstr "Nastavení parametru" #: camlibs/ptp2/ptp.c:4201 msgid "Av Open" msgstr "Av Open" #: camlibs/ptp2/ptp.c:4202 msgid "Av Max" msgstr "Nastavení omezení nejvyÅ¡. zaclon." #: camlibs/ptp2/ptp.c:4204 camlibs/ptp2/ptp.c:4228 msgid "Focal Length Tele" msgstr "Nejdelší ohnisková vzdálenost" #: camlibs/ptp2/ptp.c:4205 msgid "Focal Length Wide" msgstr "Nejkratší ohnisková vzdálenost" #: camlibs/ptp2/ptp.c:4206 msgid "Focal Length Denominator" msgstr "Jmenovatel ohniskové vzdálenosti" #: camlibs/ptp2/ptp.c:4207 msgid "Capture Transfer Mode" msgstr "Režim pÅ™enosu snímání" #: camlibs/ptp2/ptp.c:4209 msgid "Name Prefix" msgstr "PÅ™edpona názvu" #: camlibs/ptp2/ptp.c:4210 msgid "Size Quality Mode" msgstr "Režimy velikosti a kvality" #: camlibs/ptp2/ptp.c:4211 msgid "Supported Thumb Size" msgstr "Podporovaná velikost náhledového obrázku" #: camlibs/ptp2/ptp.c:4212 msgid "Size of Output Data from Camera" msgstr "Velikost výstupních dat z přístroje" #: camlibs/ptp2/ptp.c:4213 msgid "Size of Input Data to Camera" msgstr "Velikost vstupních dat do přístroje" #: camlibs/ptp2/ptp.c:4214 msgid "Remote API Version" msgstr "Verze API daného zařízení" #: camlibs/ptp2/ptp.c:4217 msgid "Camera Owner" msgstr "Vlastník přístroje" #: camlibs/ptp2/ptp.c:4218 msgid "UNIX Time" msgstr "UNIXový Äas" #: camlibs/ptp2/ptp.c:4219 msgid "Camera Body ID" msgstr "Identifikátor tÄ›la přístroje" #: camlibs/ptp2/ptp.c:4221 msgid "Disp Av" msgstr "Zobr. Av" #: camlibs/ptp2/ptp.c:4222 msgid "Av Open Apex" msgstr "Av Open Apex" #: camlibs/ptp2/ptp.c:4223 msgid "Digital Zoom Magnification" msgstr "ZvÄ›tÅ¡ení digitálního pÅ™iblížení" #: camlibs/ptp2/ptp.c:4224 msgid "Ml Spot Position" msgstr "Pozice Ml bodu" #: camlibs/ptp2/ptp.c:4225 msgid "Disp Av Max" msgstr "Zobr. Av Max" #: camlibs/ptp2/ptp.c:4226 msgid "Av Max Apex" msgstr "Av Max Apex" #: camlibs/ptp2/ptp.c:4227 msgid "EZoom Start Position" msgstr "PÅ™iblížení po skocích (Easy Zoom) – poÄáteÄní úroveň pÅ™iblížení" #: camlibs/ptp2/ptp.c:4229 msgid "EZoom Size of Tele" msgstr "PÅ™iblížení po skocích (Easy Zoom) – nejvyšší úroveň pÅ™iblížení" #: camlibs/ptp2/ptp.c:4232 msgid "Flash Quantity Count" msgstr "PoÄet záblesků" #: camlibs/ptp2/ptp.c:4233 msgid "Rotation Angle" msgstr "Úhel natoÄení" #: camlibs/ptp2/ptp.c:4234 msgid "Rotation Scene" msgstr "NatoÄení scény" #: camlibs/ptp2/ptp.c:4235 msgid "Event Emulate Mode" msgstr "Režim simulace události" #: camlibs/ptp2/ptp.c:4237 msgid "Type of Slideshow" msgstr "Typ prezentace" #: camlibs/ptp2/ptp.c:4238 msgid "Average Filesizes" msgstr "PrůmÄ›rná velikost souborů" #: camlibs/ptp2/ptp.c:4239 msgid "Model ID" msgstr "Identifikátor modelu" #: camlibs/ptp2/ptp.c:4248 msgid "Shooting Bank" msgstr "Zásobník snímků" #: camlibs/ptp2/ptp.c:4250 msgid "Shooting Bank Name A" msgstr "Zásobník snímků A" #: camlibs/ptp2/ptp.c:4252 msgid "Shooting Bank Name B" msgstr "Zásobník snímků B" #: camlibs/ptp2/ptp.c:4254 msgid "Shooting Bank Name C" msgstr "Zásobník snímků C" #: camlibs/ptp2/ptp.c:4256 msgid "Shooting Bank Name D" msgstr "Zásobník snímků D" #: camlibs/ptp2/ptp.c:4258 msgid "Reset Bank 0" msgstr "Resetovat zásobník 0" #: camlibs/ptp2/ptp.c:4276 msgid "White Balance Colour Temperature" msgstr "Barevná teplota vyvážení bílé" #: camlibs/ptp2/ptp.c:4278 msgid "White Balance Preset Number" msgstr "Číslo pÅ™ednastaveného vyvážení bílé" #: camlibs/ptp2/ptp.c:4280 msgid "White Balance Preset Name 0" msgstr "Název pÅ™ednastaveného vyvážení bílé 0" #: camlibs/ptp2/ptp.c:4282 msgid "White Balance Preset Name 1" msgstr "Název pÅ™ednastaveného vyvážení bílé 1" #: camlibs/ptp2/ptp.c:4284 msgid "White Balance Preset Name 2" msgstr "Název pÅ™ednastaveného vyvážení bílé 2" #: camlibs/ptp2/ptp.c:4286 msgid "White Balance Preset Name 3" msgstr "Název pÅ™ednastaveného vyvážení bílé 3" #: camlibs/ptp2/ptp.c:4288 msgid "White Balance Preset Name 4" msgstr "Název pÅ™ednastaveného vyvážení bílé 4" #: camlibs/ptp2/ptp.c:4290 msgid "White Balance Preset Value 0" msgstr "Hodnota pÅ™ednastaveného vyvážení bílé 0" #: camlibs/ptp2/ptp.c:4292 msgid "White Balance Preset Value 1" msgstr "Hodnota pÅ™ednastaveného vyvážení bílé 1" #: camlibs/ptp2/ptp.c:4294 msgid "White Balance Preset Value 2" msgstr "Hodnota pÅ™ednastaveného vyvážení bílé 2" #: camlibs/ptp2/ptp.c:4296 msgid "White Balance Preset Value 3" msgstr "Hodnota pÅ™ednastaveného vyvážení bílé 3" #: camlibs/ptp2/ptp.c:4298 msgid "White Balance Preset Value 4" msgstr "Hodnota pÅ™ednastaveného vyvážení bílé 4" #: camlibs/ptp2/ptp.c:4308 msgid "Lens Focal Length (Non CPU)" msgstr "Ohnisk. vzdálenost (bez Äipu)" #: camlibs/ptp2/ptp.c:4310 msgid "Lens Maximum Aperture (Non CPU)" msgstr "Max. zaclonÄ›ní objektivu (bez Äipu)" #: camlibs/ptp2/ptp.c:4318 msgid "Auto DX Crop" msgstr "Automat. oÅ™ezávání na formát „DX“" #: camlibs/ptp2/ptp.c:4330 msgid "Menu Bank Name A" msgstr "Zásobník nabídky A" #: camlibs/ptp2/ptp.c:4332 msgid "Menu Bank Name B" msgstr "Zásobník nabídky B" #: camlibs/ptp2/ptp.c:4334 msgid "Menu Bank Name C" msgstr "Zásobník nabídky C" #: camlibs/ptp2/ptp.c:4336 msgid "Menu Bank Name D" msgstr "Zásobník nabídky D" #: camlibs/ptp2/ptp.c:4338 msgid "Reset Menu Bank" msgstr "Reset zásobníku nabídky" #: camlibs/ptp2/ptp.c:4356 msgid "Vertical AF On" msgstr "Zapnout svislé automat. zaostÅ™ení" #: camlibs/ptp2/ptp.c:4360 msgid "Focus Area Zone" msgstr "Oblast, kam automaticky zaostÅ™ovat" #: camlibs/ptp2/ptp.c:4362 msgid "Enable Copyright" msgstr "Zapnout informace o autorských právech" #: camlibs/ptp2/ptp.c:4366 msgid "Exposure ISO Step" msgstr "míra zmÄ›ny hodnoty ISO" #: camlibs/ptp2/ptp.c:4368 msgid "Exposure Step" msgstr "míra zmÄ›ny expoziÄní hodnoty" #: camlibs/ptp2/ptp.c:4370 msgid "Exposure Compensation (EV)" msgstr "Kompenzace expoziÄní hodnoty (EV)" #: camlibs/ptp2/ptp.c:4374 msgid "Centre Weight Area" msgstr "S důrazem na stÅ™ed" #: camlibs/ptp2/ptp.c:4376 msgid "Exposure Base Matrix" msgstr "Měření expoziÄní hodnoty z mřížky" #: camlibs/ptp2/ptp.c:4378 msgid "Exposure Base Center" msgstr "Měření expoziÄní hodnoty ze stÅ™edu" #: camlibs/ptp2/ptp.c:4380 msgid "Exposure Base Spot" msgstr "Měření expoziÄní hodnoty z jediného bodu" #: camlibs/ptp2/ptp.c:4382 msgid "Live View AF Area" msgstr "Oblast zaostÅ™ování v režimu živého náhledu" #: camlibs/ptp2/ptp.c:4390 msgid "Auto Meter Off Time" msgstr "Prodleva automatického vypnutí senzoru" #: camlibs/ptp2/ptp.c:4392 msgid "Self Timer Delay" msgstr "Prodleva samospouÅ¡tÄ›" #: camlibs/ptp2/ptp.c:4396 msgid "Img Conf Time" msgstr "Img Conf Time" #: camlibs/ptp2/ptp.c:4398 msgid "Auto Off Timers" msgstr "Prodlevy automatického vypnutí" #: camlibs/ptp2/ptp.c:4400 msgid "Angle Level" msgstr "Úhel náklonu" #: camlibs/ptp2/ptp.c:4402 msgid "Shooting Speed" msgstr "Prodleva mezi snímky v dávce" #: camlibs/ptp2/ptp.c:4406 msgid "Exposure delay mode" msgstr "Režim prodlevy exponování" #: camlibs/ptp2/ptp.c:4408 camlibs/ptp2/ptp.c:4741 msgid "Long Exposure Noise Reduction" msgstr "Omezení úrovnÄ› Å¡umu pÅ™i dlouhých expoziÄních Äasech" #: camlibs/ptp2/ptp.c:4416 msgid "LCD Illumination" msgstr "PodsvÄ›tlení LCD displeje" #: camlibs/ptp2/ptp.c:4418 msgid "High ISO noise reduction" msgstr "Redukce Å¡umu pÅ™i vysokých hodnotách citlivosti (ISO)" #: camlibs/ptp2/ptp.c:4420 msgid "On screen tips" msgstr "Zobrazovat rady" #: camlibs/ptp2/ptp.c:4422 msgid "Artist Name" msgstr "Jméno umÄ›lce" #: camlibs/ptp2/ptp.c:4424 msgid "Copyright Information" msgstr "Informace o autorských právech" #: camlibs/ptp2/ptp.c:4432 msgid "Modeling Flash" msgstr "" "Náhledové záblesky pro zjiÅ¡tÄ›ní, kam budou vrhány stíny (Modeling Flash)" #: camlibs/ptp2/ptp.c:4436 msgid "Manual Mode Bracketing" msgstr "Více snímků s různými hodnotami v ruÄním režimu" #: camlibs/ptp2/ptp.c:4440 msgid "Auto Bracket Selection" msgstr "VýbÄ›r automatického pořízení více snímků s různými hodnotami" #: camlibs/ptp2/ptp.c:4441 msgid "NIKON Auto Bracketing Set" msgstr "" "NIKON – nastavení automatického pořízení více snímků s různými hodnotami" #: camlibs/ptp2/ptp.c:4443 msgid "Center Button Shooting Mode" msgstr "Režim stÅ™edového tlaÄítka pro focení" #: camlibs/ptp2/ptp.c:4445 msgid "Center Button Playback Mode" msgstr "Režim stÅ™edového tlaÄítka pro pÅ™ehrávání" #: camlibs/ptp2/ptp.c:4447 msgid "Multiselector" msgstr "Vícenásobný výbÄ›r" #: camlibs/ptp2/ptp.c:4449 msgid "Photo Info. Playback" msgstr "PÅ™ehrávání informací o snímku" #: camlibs/ptp2/ptp.c:4451 msgid "Assign Func. Button" msgstr "PÅ™iÅ™azení funkÄního tlaÄítka" #: camlibs/ptp2/ptp.c:4453 msgid "Customise Command Dials" msgstr "Upravit příkazové voliÄe" #: camlibs/ptp2/ptp.c:4457 msgid "Aperture Setting" msgstr "Nastavení clony" #: camlibs/ptp2/ptp.c:4461 msgid "Buttons and Dials" msgstr "TlaÄítka a kruhové voliÄe" #: camlibs/ptp2/ptp.c:4463 msgid "No CF Card Release" msgstr "Bez paměťové karty CF nelze pořídit snímek" #: camlibs/ptp2/ptp.c:4465 msgid "Center Button Zoom Ratio" msgstr "PomÄ›r pÅ™iblížení stÅ™edového tlaÄítka" #: camlibs/ptp2/ptp.c:4467 msgid "Function Button 2" msgstr "FunkÄní tlaÄítko 2" #: camlibs/ptp2/ptp.c:4471 msgid "Normal AF On" msgstr "Zapnout obyÄené automatické ostÅ™ení" #: camlibs/ptp2/ptp.c:4473 msgid "Clean Image Sensor" msgstr "ÄŒiÅ¡tÄ›ní snímaÄe obrazu" #: camlibs/ptp2/ptp.c:4475 msgid "Image Comment String" msgstr "Text komentáře k obrázku" #: camlibs/ptp2/ptp.c:4477 msgid "Image Comment Enable" msgstr "Zapnout komentáře k obrázku" #: camlibs/ptp2/ptp.c:4479 msgid "Image Rotation" msgstr "OtoÄení obrázku" #: camlibs/ptp2/ptp.c:4481 msgid "Manual Set Lens Number" msgstr "RuÄní nastavení Äísla objektivu" #: camlibs/ptp2/ptp.c:4483 msgid "Movie Screen Size" msgstr "RozliÅ¡ení videonahrávky" #: camlibs/ptp2/ptp.c:4485 msgid "Movie Voice" msgstr "Hlas videonahrávky" #: camlibs/ptp2/ptp.c:4487 msgid "Movie Microphone" msgstr "Mikrofon pro videonahrávku" #: camlibs/ptp2/ptp.c:4489 msgid "Movie Card Slot" msgstr "Slot paměťové karty pro videonahrávku" #: camlibs/ptp2/ptp.c:4495 msgid "Monitor Off Delay" msgstr "Prodleva automatického vypnutí displeje" #: camlibs/ptp2/ptp.c:4497 msgid "Bracketing Enable" msgstr "Zapnout poÅ™izování více snímků s různými hodnotami daného nastavení" #: camlibs/ptp2/ptp.c:4499 msgid "Exposure Bracketing Step" msgstr "Velikost rozdílu mezi expozicemi jednotlivých snímků dávky" #: camlibs/ptp2/ptp.c:4501 msgid "Exposure Bracketing Program" msgstr "Režim pořízení více snímků s různým stupnÄ›m expozice" #: camlibs/ptp2/ptp.c:4503 msgid "Auto Exposure Bracket Count" msgstr "PoÄet snímků, pořízených s různým stupnÄ›m expozice" #: camlibs/ptp2/ptp.c:4504 msgid "White Balance Bracket Step" msgstr "Velikost rozdílu ve vyvážení bílé mezi jednotlivými snímky dávky" #: camlibs/ptp2/ptp.c:4505 msgid "White Balance Bracket Program" msgstr "Režim pořízení více snímků s různým vyvážením bílé" #: camlibs/ptp2/ptp.c:4507 msgid "Lens ID" msgstr "Identifikátor objektivu" #: camlibs/ptp2/ptp.c:4509 msgid "Lens Sort" msgstr "Druh objektivu" #: camlibs/ptp2/ptp.c:4511 msgid "Lens Type" msgstr "Typ objektivu" #: camlibs/ptp2/ptp.c:4513 msgid "Min. Focal Length" msgstr "Nejnižší ohnisková vzdálenost" #: camlibs/ptp2/ptp.c:4515 msgid "Max. Focal Length" msgstr "Nejvyšší ohnisková vzdálenost" #: camlibs/ptp2/ptp.c:4517 msgid "Max. Aperture at Min. Focal Length" msgstr "Nejvyšší možné zaclonÄ›ní pÅ™i nejkratší možné ohniskové vzdálenosti" #: camlibs/ptp2/ptp.c:4519 msgid "Max. Aperture at Max. Focal Length" msgstr "Nejvyšší možné zaclonÄ›ní pÅ™i nejdelší možné ohniskové vzdálenosti" #: camlibs/ptp2/ptp.c:4521 msgid "Finder ISO Display" msgstr "Zobrazovat hodnotu citlivosti (ISO) v hledáÄku" #: camlibs/ptp2/ptp.c:4523 msgid "Auto Off Photo" msgstr "Doba zobrazení pořízeného snímku" #: camlibs/ptp2/ptp.c:4525 msgid "Auto Off Menu" msgstr "Doba zobrazení nabídky" #: camlibs/ptp2/ptp.c:4527 msgid "Auto Off Info" msgstr "Doba zobrazení informací" #: camlibs/ptp2/ptp.c:4529 msgid "Self Timer Shot Number" msgstr "PoÄet snímků pÅ™i použití samospouÅ¡tÄ›" #: camlibs/ptp2/ptp.c:4531 msgid "Vignette Control" msgstr "Omezení jevu vinÄ›tace" #: camlibs/ptp2/ptp.c:4537 msgid "Nikon Exposure Time" msgstr "NIKON – ExpoziÄní Äas" #: camlibs/ptp2/ptp.c:4539 msgid "Warning Status" msgstr "Stav varování" #: camlibs/ptp2/ptp.c:4546 msgid "AF LCD Top Mode 2" msgstr "AF LCD Top Mode 2" #: camlibs/ptp2/ptp.c:4548 msgid "Active AF Sensor" msgstr "Aktivní senzor automatického ostÅ™ení" #: camlibs/ptp2/ptp.c:4552 msgid "Exposure Meter" msgstr "Expozimetr" #: camlibs/ptp2/ptp.c:4556 msgid "USB Speed" msgstr "Rychlost USB rozhraní" #: camlibs/ptp2/ptp.c:4558 msgid "CCD Serial Number" msgstr "Sériové Äíslo obrazového snímaÄe" #: camlibs/ptp2/ptp.c:4562 msgid "Group PTN Type" msgstr "Typ skupiny PTN" #: camlibs/ptp2/ptp.c:4564 msgid "FNumber Lock" msgstr "UzamÄení hodnoty nastavení clony" #: camlibs/ptp2/ptp.c:4566 msgid "Exposure Aperture Lock" msgstr "UzamÄení expozice a clony" #: camlibs/ptp2/ptp.c:4568 msgid "TV Lock Setting" msgstr "Nastavení uzamykání expoziÄního Äasu" #: camlibs/ptp2/ptp.c:4570 msgid "AV Lock Setting" msgstr "Nastavení uzamykání zaclonÄ›ní" #: camlibs/ptp2/ptp.c:4572 msgid "Illum Setting" msgstr "Nastavení pÅ™isvÄ›tlení" #: camlibs/ptp2/ptp.c:4574 msgid "Focus Point Bright" msgstr "Jas zaostÅ™ovacího bodu" #: camlibs/ptp2/ptp.c:4576 msgid "External Flash Attached" msgstr "Externí blesk pÅ™ipojen" #: camlibs/ptp2/ptp.c:4578 msgid "External Flash Status" msgstr "Stav externího blesku" #: camlibs/ptp2/ptp.c:4580 msgid "External Flash Sort" msgstr "Druh externího blesku" #: camlibs/ptp2/ptp.c:4582 camlibs/ptp2/ptp.c:4586 msgid "External Flash Mode" msgstr "Režim externího blesku" #: camlibs/ptp2/ptp.c:4584 msgid "External Flash Compensation" msgstr "Kompenzace externího blesku" #: camlibs/ptp2/ptp.c:4600 msgid "BW Filler Effect" msgstr "Efekty pro ÄŒB snímky" #: camlibs/ptp2/ptp.c:4602 msgid "BW Sharpness" msgstr "ÄŒB ostrost" #: camlibs/ptp2/ptp.c:4604 msgid "BW Contrast" msgstr "ÄŒB kontrast" #: camlibs/ptp2/ptp.c:4606 msgid "BW Setting Type" msgstr "Typ ÄŒB nastavení" #: camlibs/ptp2/ptp.c:4608 msgid "Slot 2 Save Mode" msgstr "Režim uložení pro slot 2" #: camlibs/ptp2/ptp.c:4610 msgid "Raw Bit Mode" msgstr "Režim RAW" #: camlibs/ptp2/ptp.c:4614 msgid "Flourescent Type" msgstr "Typ výbojkového osvÄ›tlení" #: camlibs/ptp2/ptp.c:4616 msgid "Tune Colour Temperature" msgstr "Nastavení barevné teploty" #: camlibs/ptp2/ptp.c:4618 msgid "Tune Preset 0" msgstr "PÅ™ednastavené 0" #: camlibs/ptp2/ptp.c:4620 msgid "Tune Preset 1" msgstr "PÅ™ednastavené 1" #: camlibs/ptp2/ptp.c:4622 msgid "Tune Preset 2" msgstr "PÅ™ednastavené 2" #: camlibs/ptp2/ptp.c:4624 msgid "Tune Preset 3" msgstr "PÅ™ednastavené 3" #: camlibs/ptp2/ptp.c:4626 msgid "Tune Preset 4" msgstr "PÅ™ednastavené 4" #: camlibs/ptp2/ptp.c:4630 msgid "Autofocus Mode" msgstr "Režim automatického ostÅ™ení" #: camlibs/ptp2/ptp.c:4632 msgid "AF Assist Lamp" msgstr "Pomocné pÅ™isvícení automatického ostÅ™ení" #: camlibs/ptp2/ptp.c:4634 msgid "Auto ISO P/A/DVP Setting" msgstr "Nastavení automat. ISO v režimech P/A/DVP" #: camlibs/ptp2/ptp.c:4650 msgid "Viewfinder Grid Display" msgstr "Zobrazení kompoziÄní mřížky v hledáÄku" #: camlibs/ptp2/ptp.c:4654 msgid "Flash Mode Commander Power" msgstr "Režim ovládajícího blesku – intenzita" #: camlibs/ptp2/ptp.c:4656 msgid "Auto FP" msgstr "Auto FP" #: camlibs/ptp2/ptp.c:4660 msgid "Warning Display" msgstr "Zobrazení varování" #: camlibs/ptp2/ptp.c:4662 msgid "Battery Cell Kind" msgstr "Druh Älánků akumulátoru" #: camlibs/ptp2/ptp.c:4664 msgid "ISO Auto High Limit" msgstr "Nastavení horní hranice automat. ISO" #: camlibs/ptp2/ptp.c:4668 msgid "Continuous Speed High" msgstr "Průběžné s vysokou rychlostí" #: camlibs/ptp2/ptp.c:4670 msgid "Info Disp Setting" msgstr "Nastavení informaÄního displeje" #: camlibs/ptp2/ptp.c:4672 msgid "Preview Button" msgstr "TlaÄítko náhledu" #: camlibs/ptp2/ptp.c:4674 msgid "Preview Button 2" msgstr "TlaÄítko Ä. 2 náhledu" #: camlibs/ptp2/ptp.c:4676 msgid "AEAF Lock Button 2" msgstr "TlaÄítko Ä. 2 uzamÄení expozice/zaostÅ™ení" #: camlibs/ptp2/ptp.c:4678 msgid "Indicator Display" msgstr "Stavový displej" #: camlibs/ptp2/ptp.c:4680 msgid "Cell Kind Priority" msgstr "Priorita typu akumulátoru" #: camlibs/ptp2/ptp.c:4682 msgid "Bracketing Frames and Steps" msgstr "" "Více snímků s odstupňovanými hodnotami – poÄet snímků a velikosti kroků" #: camlibs/ptp2/ptp.c:4684 msgid "Live View Mode" msgstr "Režim živého náhledu" #: camlibs/ptp2/ptp.c:4686 msgid "Live View Drive Mode" msgstr "Dávkové snímání v režimu živého náhledu" #: camlibs/ptp2/ptp.c:4688 msgid "Live View Status" msgstr "Stav živého náhledu" #: camlibs/ptp2/ptp.c:4690 msgid "Live View Image Zoom Ratio" msgstr "PÅ™iblížení v živém náhledu" #: camlibs/ptp2/ptp.c:4692 msgid "Live View Prohibit Condition" msgstr "Důvod nedostupnosti živého náhledu" #: camlibs/ptp2/ptp.c:4694 msgid "Exposure Display Status" msgstr "Stav zobrazení expozice" #: camlibs/ptp2/ptp.c:4696 msgid "Exposure Indicate Status" msgstr "Stav indikátoru expozice" #: camlibs/ptp2/ptp.c:4698 msgid "Info Display Error Status" msgstr "Chybový stav informaÄního displeje" #: camlibs/ptp2/ptp.c:4700 msgid "Exposure Indicate Lightup" msgstr "Rozsvícení indikátoru expozice" #: camlibs/ptp2/ptp.c:4706 msgid "Flash MRepeat Value" msgstr "Hodnota „M-opakováním“ blesku" #: camlibs/ptp2/ptp.c:4708 msgid "Flash MRepeat Count" msgstr "PoÄet „M-opakování“ blesku" #: camlibs/ptp2/ptp.c:4710 msgid "Flash MRepeat Interval" msgstr "Prodleva mezi „M-opakováním“ blesku" #: camlibs/ptp2/ptp.c:4732 msgid "Active Pic Ctrl Item" msgstr "Aktivní položka nastavování obrazu" #: camlibs/ptp2/ptp.c:4734 msgid "Change Pic Ctrl Item" msgstr "ZmÄ›nit položku nastavování obrazu" #: camlibs/ptp2/ptp.c:4737 camlibs/ptp2/ptp.c:4805 msgid "ISO" msgstr "" #: camlibs/ptp2/ptp.c:4749 #, fuzzy msgid "Image Compression" msgstr "Komprimace dat RAW" #: camlibs/ptp2/ptp.c:4758 msgid "Secure Time" msgstr "ZabezpeÄený Äas" #: camlibs/ptp2/ptp.c:4759 msgid "Device Certificate" msgstr "Certifikát zařízení" #: camlibs/ptp2/ptp.c:4760 msgid "Revocation Info" msgstr "Informace o zneplatnÄ›ných certifikátech" #: camlibs/ptp2/ptp.c:4762 msgid "Synchronization Partner" msgstr "ProtÄ›jÅ¡ek pro synchronizaci" #: camlibs/ptp2/ptp.c:4764 msgid "Friendly Device Name" msgstr "Snadno zapamatovatelný název zařízení" #: camlibs/ptp2/ptp.c:4765 msgid "Volume Level" msgstr "Hlasitost" #: camlibs/ptp2/ptp.c:4766 msgid "Device Icon" msgstr "Ikona zařízení" #: camlibs/ptp2/ptp.c:4767 msgid "Session Initiator Info" msgstr "Informace o iniciátoru relace" #: camlibs/ptp2/ptp.c:4768 msgid "Perceived Device Type" msgstr "Typ zjiÅ¡tÄ›ného přístroje" #: camlibs/ptp2/ptp.c:4769 msgid "Playback Rate" msgstr "Rychlost pÅ™ehrávání" #: camlibs/ptp2/ptp.c:4770 msgid "Playback Object" msgstr "PÅ™ehrávání objektu" #: camlibs/ptp2/ptp.c:4772 msgid "Playback Container Index" msgstr "Index pÅ™ehrávacího kontejneru" #: camlibs/ptp2/ptp.c:4773 msgid "Playback Position" msgstr "Pozice pÅ™ehrávání" #: camlibs/ptp2/ptp.c:4774 msgid "PlaysForSure ID" msgstr "ID ochrany „autorských“ práv (DRM) (MS PlaysForSure)" #: camlibs/ptp2/ptp.c:4782 msgid "Quality" msgstr "Kvalita" #: camlibs/ptp2/ptp.c:4783 msgid "Release Mode" msgstr "Oblast pro zaostÅ™ení" #: camlibs/ptp2/ptp.c:4784 msgid "Focus Areas" msgstr "Fokus Bereich" #: camlibs/ptp2/ptp.c:4785 msgid "AE Lock" msgstr "UzamÄení expozice" #: camlibs/ptp2/ptp.c:4797 #, fuzzy msgid "Image size" msgstr "Velikost snímku" #: camlibs/ptp2/ptp.c:4798 #, fuzzy msgid "Shutter speed" msgstr "ExpoziÄní Äas" #: camlibs/ptp2/ptp.c:4799 #, fuzzy msgid "Color temperature" msgstr "Barevná teplota" #: camlibs/ptp2/ptp.c:4802 #, fuzzy msgid "Expose Index" msgstr "ExpoziÄní Äas" #: camlibs/ptp2/ptp.c:4804 msgid "AB Filter" msgstr "" #: camlibs/ptp2/ptp.c:4807 #, fuzzy msgid "Still Image" msgstr "Snímek" #: camlibs/ptp2/ptp.c:4914 camlibs/ptp2/ptp.c:4920 camlibs/ptp2/ptp.c:4921 #: camlibs/ptp2/ptp.c:4928 #, c-format msgid "%.1f stops" msgstr "krok po %.1f" #: camlibs/ptp2/ptp.c:4922 #, c-format msgid "%.0f mm" msgstr "%.0f mm" #: camlibs/ptp2/ptp.c:4940 msgid "JPEG Norm" msgstr "JPEG běžné kvality" #: camlibs/ptp2/ptp.c:4943 msgid "RAW + JPEG Basic" msgstr "RAW + JPEG základní kvality" #: camlibs/ptp2/ptp.c:4949 camlibs/ricoh/library.c:329 #: camlibs/sierra/nikon-desc.c:284 msgid "Incandescent" msgstr "Zataženo" #: camlibs/ptp2/ptp.c:4957 msgid "Automatic Macro (close-up)" msgstr "Automat. makrorežim (blízké)" #: camlibs/ptp2/ptp.c:4962 msgid "Center Weighted Average" msgstr "PrůmÄ›r. s důrazem na stÅ™ed zábÄ›ru" #: camlibs/ptp2/ptp.c:4964 msgid "Center-spot" msgstr "Bod ve stÅ™edu zábÄ›ru" #: camlibs/ptp2/ptp.c:4966 msgid "Automatic flash" msgstr "Blesk odpálen dle potÅ™eby" #: camlibs/ptp2/ptp.c:4969 msgid "Automatic Red-eye Reduction" msgstr "Automat. omezení jevu Äervených oÄí" #: camlibs/ptp2/ptp.c:4970 msgid "Red-eye fill flash" msgstr "Vyplňující blesk s omezením jevu Äervených oÄí" #: camlibs/ptp2/ptp.c:4988 msgid "Power Wind" msgstr "Dávkové snímání" #: camlibs/ptp2/ptp.c:4994 msgid "Timer + Remote" msgstr "Samospoušť + dálkové" #: camlibs/ptp2/ptp.c:5052 msgid "AF Lock only" msgstr "Uzamknout pouze automat. zaostÅ™ení" #: camlibs/ptp2/ptp.c:5056 msgid "Flash Lock" msgstr "UzamÄení nastavení blesku" #: camlibs/ptp2/ptp.c:5107 msgid "Reset focus point to center" msgstr "Vrátit zaostÅ™ovací bod zpÄ›t na stÅ™ed" #: camlibs/ptp2/ptp.c:5108 msgid "Highlight active focus point" msgstr "Zvýrazňovat aktivní zaostÅ™ovací bod" #: camlibs/ptp2/ptp.c:5109 msgid "Unused" msgstr "Nepoužito" #: camlibs/ptp2/ptp.c:5154 msgid "SDRam" msgstr "OperaÄní paměť" #: camlibs/ptp2/ptp.c:5156 msgid "USB 1.1" msgstr "USB 1.1" #: camlibs/ptp2/ptp.c:5157 msgid "USB 2.0" msgstr "USB 2.0" #: camlibs/ptp2/ptp.c:5169 msgid "LCD Backlight" msgstr "Podsvícení displeje" #: camlibs/ptp2/ptp.c:5170 msgid "LCD Backlight and Info Display" msgstr "Podsvícení displeje a stavového řádku" #: camlibs/ptp2/ptp.c:5228 msgid "1 min" msgstr "1 minuta" #: camlibs/ptp2/ptp.c:5229 msgid "5 mins" msgstr "5 minut" #: camlibs/ptp2/ptp.c:5230 msgid "10 mins" msgstr "10 minut" #: camlibs/ptp2/ptp.c:5231 msgid "15 mins" msgstr "15 minut" #: camlibs/ptp2/ptp.c:5266 msgid "Dark on light" msgstr "Tmavé na svÄ›tlém pozadí" #: camlibs/ptp2/ptp.c:5267 msgid "Light on dark" msgstr "SvÄ›tlé na tmavém pozadí" #: camlibs/ptp2/ptp.c:5308 msgid "Lithium Ion" msgstr "Lithium-iontové" #: camlibs/ptp2/ptp.c:5309 msgid "Nickel hydride" msgstr "Nikl-hydridové" #: camlibs/ptp2/ptp.c:5310 msgid "Nickel cadmium" msgstr "Nikl-kadmiové" #: camlibs/ptp2/ptp.c:5311 msgid "Alkalium manganese" msgstr "Alkalické manganové" #: camlibs/ptp2/ptp.c:5315 msgid "Warning Level 1" msgstr "Varování úrovnÄ› 1" #: camlibs/ptp2/ptp.c:5316 msgid "Emergency" msgstr "Nouzové" #: camlibs/ptp2/ptp.c:5317 msgid "Warning Level 0" msgstr "Varování úrovnÄ› 0" #: camlibs/ptp2/ptp.c:5320 msgid "Economy" msgstr "Ekonomické" #: camlibs/ptp2/ptp.c:5324 msgid "SuperFine" msgstr "Superjemné" #: camlibs/ptp2/ptp.c:5343 msgid "Red Eye Suppression" msgstr "Omezení jevu Äervených oÄí" #: camlibs/ptp2/ptp.c:5344 msgid "Low Speed Synchronization" msgstr "Pomalá synchronizace" #: camlibs/ptp2/ptp.c:5345 msgid "Auto + Red Eye Suppression" msgstr "Odpálen dle potÅ™eby + omezení jevu Äervených oÄí" #: camlibs/ptp2/ptp.c:5346 msgid "On + Red Eye Suppression" msgstr "Odpálen vždy + omezení jevu Äervených oÄí" #: camlibs/ptp2/ptp.c:5360 msgid "Distant View" msgstr "Vzdálený pohled" #: camlibs/ptp2/ptp.c:5361 msgid "High-Speed Shutter" msgstr "Krátký expoziÄní Äas" #: camlibs/ptp2/ptp.c:5362 msgid "Low-Speed Shutter" msgstr "Dlouhý expoziÄní Äas" #: camlibs/ptp2/ptp.c:5363 camlibs/ptp2/ptp.c:5427 msgid "Night View" msgstr "NoÄní vidÄ›ní" #: camlibs/ptp2/ptp.c:5364 msgid "Grayscale" msgstr "StupnÄ› Å¡edé" #: camlibs/ptp2/ptp.c:5370 msgid "Pan Focus" msgstr "Pevné ohnisko" #: camlibs/ptp2/ptp.c:5374 msgid "Single-Frame Shooting" msgstr "Jednotlivé snímky" #: camlibs/ptp2/ptp.c:5375 msgid "Continuous Shooting" msgstr "Dávkové snímání" #: camlibs/ptp2/ptp.c:5376 msgid "Timer (Single) Shooting" msgstr "ÄŒasované pořízení jedn. snímku" #: camlibs/ptp2/ptp.c:5377 msgid "Continuous Low-speed Shooting" msgstr "NepÅ™eruÅ¡ované snímání s delší prodlevou mezi jedn. snímky" #: camlibs/ptp2/ptp.c:5378 msgid "Continuous High-speed Shooting" msgstr "NepÅ™eruÅ¡ované snímání s kratší prodl. mezi jedn. snímky" #: camlibs/ptp2/ptp.c:5381 camlibs/ricoh/library.c:377 #: camlibs/sierra/sierra.c:1163 camlibs/sierra/sierra.c:1169 msgid "2x" msgstr "2×" #: camlibs/ptp2/ptp.c:5382 camlibs/ricoh/library.c:379 msgid "4x" msgstr "4×" #: camlibs/ptp2/ptp.c:5383 msgid "Smooth" msgstr "Hladké" #: camlibs/ptp2/ptp.c:5385 msgid "Center-weighted Metering" msgstr "Měření s důrazem na stÅ™ed" #: camlibs/ptp2/ptp.c:5386 msgid "Spot Metering" msgstr "Bodové měření" #: camlibs/ptp2/ptp.c:5387 msgid "Average Metering" msgstr "PrůmÄ›rující měření" #: camlibs/ptp2/ptp.c:5388 msgid "Evaluative Metering" msgstr "Vyhodnocující měření" #: camlibs/ptp2/ptp.c:5389 msgid "Partial Metering" msgstr "ČásteÄné měření" #: camlibs/ptp2/ptp.c:5390 msgid "Center-weighted Average Metering" msgstr "PrůmÄ›r. měření s důrazem na stÅ™ed zábÄ›ru" #: camlibs/ptp2/ptp.c:5391 msgid "Spot Metering Interlocked with AF Frame" msgstr "Bod. měření provázané s oblastí pro automat. zaostÅ™ení" #: camlibs/ptp2/ptp.c:5392 msgid "Multi-Spot Metering" msgstr "Vícebodové měření" #: camlibs/ptp2/ptp.c:5429 msgid "Low-speed shutter function not available" msgstr "Funkce pomalé závÄ›rky není k dispozici" #: camlibs/ptp2/ptp.c:5439 camlibs/ptp2/ptp.c:5445 camlibs/ptp2/ptp.c:5451 msgid "Low 2" msgstr "Nízké 2" #: camlibs/ptp2/ptp.c:5443 camlibs/ptp2/ptp.c:5449 camlibs/ptp2/ptp.c:5455 msgid "High 2" msgstr "Vysoké 2" #: camlibs/ptp2/ptp.c:5458 msgid "Upper 1" msgstr "Vyšší 1" #: camlibs/ptp2/ptp.c:5459 msgid "Upper 2" msgstr "Vyšší 2" #: camlibs/ptp2/ptp.c:5461 msgid "Standard Development Parameters" msgstr "Běžné parametry pro vývojáře" #: camlibs/ptp2/ptp.c:5462 msgid "Development Parameters 1" msgstr "Parametry pro vývojáře 1" #: camlibs/ptp2/ptp.c:5463 msgid "Development Parameters 2" msgstr "Parametry pro vývojáře 2" #: camlibs/ptp2/ptp.c:5464 msgid "Development Parameters 3" msgstr "Parametry pro vývojáře 3" #: camlibs/ptp2/ptp.c:5493 msgid "MlSpotPosCenter" msgstr "StÅ™ed umístÄ›ní Ml bodu" #: camlibs/ptp2/ptp.c:5494 msgid "MlSpotPosAfLink" msgstr "Spojení pozice Ml bodu a automat. ostÅ™ení" #: camlibs/ptp2/ptp.c:5598 msgid "Media Card" msgstr "Paměťová karta" #: camlibs/ptp2/ptp.c:5599 msgid "Media Card Group" msgstr "Skupina paměťových karet" #: camlibs/ptp2/ptp.c:5600 msgid "Encounter" msgstr "Encounter" #: camlibs/ptp2/ptp.c:5601 msgid "Encounter Box" msgstr "Encounter Box" #: camlibs/ptp2/ptp.c:5602 msgid "M4A" msgstr "M4A" #: camlibs/ptp2/ptp.c:5603 msgid "Firmware" msgstr "Firmware" #: camlibs/ptp2/ptp.c:5604 msgid "Windows Image Format" msgstr "Obrazový formát Microsoft Windows" #: camlibs/ptp2/ptp.c:5605 msgid "Undefined Audio" msgstr "NeurÄený zvukový záznam" #: camlibs/ptp2/ptp.c:5609 msgid "Audible.com Codec" msgstr "Kodek Audible.com" #: camlibs/ptp2/ptp.c:5611 msgid "Samsung Playlist" msgstr "Seznam audiostop Samsung" #: camlibs/ptp2/ptp.c:5612 msgid "Undefined Video" msgstr "NeurÄený videozáznam" #: camlibs/ptp2/ptp.c:5617 msgid "Undefined Collection" msgstr "NeurÄená sbírka" #: camlibs/ptp2/ptp.c:5618 msgid "Abstract Multimedia Album" msgstr "Abstraktní multimediální album" #: camlibs/ptp2/ptp.c:5619 msgid "Abstract Image Album" msgstr "Abstraktní album snímků" #: camlibs/ptp2/ptp.c:5620 msgid "Abstract Audio Album" msgstr "Abstraktní hudební album" #: camlibs/ptp2/ptp.c:5621 msgid "Abstract Video Album" msgstr "Abstraktní video album" #: camlibs/ptp2/ptp.c:5622 msgid "Abstract Audio Video Playlist" msgstr "Abstraktní seznam audiostop a vidonahrávek" #: camlibs/ptp2/ptp.c:5623 msgid "Abstract Contact Group" msgstr "Abstraktní skupina kontaktů" #: camlibs/ptp2/ptp.c:5624 msgid "Abstract Message Folder" msgstr "Abstraktní složka zpráv" #: camlibs/ptp2/ptp.c:5625 msgid "Abstract Chaptered Production" msgstr "Abstraktní produkce po kapitolách" #: camlibs/ptp2/ptp.c:5626 msgid "Abstract Audio Playlist" msgstr "Astraktní seznam audiostop" #: camlibs/ptp2/ptp.c:5627 msgid "Abstract Video Playlist" msgstr "Astraktní seznam videonahrávek" #: camlibs/ptp2/ptp.c:5628 msgid "Abstract Mediacast" msgstr "Abstraktní Mediacast" #: camlibs/ptp2/ptp.c:5629 msgid "WPL Playlist" msgstr "Seznam audiostop (formát WPL)" #: camlibs/ptp2/ptp.c:5630 msgid "M3U Playlist" msgstr "Seznam audiostop (formát M3U)" #: camlibs/ptp2/ptp.c:5631 msgid "MPL Playlist" msgstr "Seznam audiostop (formám MPL)" #: camlibs/ptp2/ptp.c:5632 msgid "ASX Playlist" msgstr "Seznam audiostop (formát ASX)" #: camlibs/ptp2/ptp.c:5633 msgid "PLS Playlist" msgstr "Seznam audiostop (formát PLS)" #: camlibs/ptp2/ptp.c:5634 msgid "Undefined Document" msgstr "NeurÄený dokument" #: camlibs/ptp2/ptp.c:5635 msgid "Abstract Document" msgstr "Abstraktní dokument" #: camlibs/ptp2/ptp.c:5636 msgid "XMLDocument" msgstr "Dokument ve formátu XML" #: camlibs/ptp2/ptp.c:5637 msgid "Microsoft Word Document" msgstr "Dokument Microsoft Word" #: camlibs/ptp2/ptp.c:5638 msgid "MHT Compiled HTML Document" msgstr "Dokument MHT (zkompilované HTML)" #: camlibs/ptp2/ptp.c:5639 msgid "Microsoft Excel Spreadsheet (.xls)" msgstr "Tabulka Microsoft Excel (.xls)" #: camlibs/ptp2/ptp.c:5640 msgid "Microsoft Powerpoint (.ppt)" msgstr "Prezentace Microsoft PowerPoint (.ppt)" #: camlibs/ptp2/ptp.c:5641 msgid "Undefined Message" msgstr "NeurÄená zpráva" #: camlibs/ptp2/ptp.c:5642 msgid "Abstract Message" msgstr "Abstraktní zpráva" #: camlibs/ptp2/ptp.c:5643 msgid "Undefined Contact" msgstr "NeurÄený kontakt" #: camlibs/ptp2/ptp.c:5644 msgid "Abstract Contact" msgstr "Abstraktní kontakt" #: camlibs/ptp2/ptp.c:5645 msgid "vCard2" msgstr "vCard2" #: camlibs/ptp2/ptp.c:5646 msgid "vCard3" msgstr "vCard3" #: camlibs/ptp2/ptp.c:5647 msgid "Undefined Calendar Item" msgstr "NeurÄená kalendářová položka" #: camlibs/ptp2/ptp.c:5648 msgid "Abstract Calendar Item" msgstr "Abstraktní kalendářová položka" #: camlibs/ptp2/ptp.c:5649 msgid "vCalendar1" msgstr "vCalendar1" #: camlibs/ptp2/ptp.c:5650 msgid "vCalendar2" msgstr "vCalendar2" #: camlibs/ptp2/ptp.c:5651 msgid "Undefined Windows Executable" msgstr "NeurÄený spustitelný soubor pro Microsoft Windows" #: camlibs/ptp2/ptp.c:5652 msgid "Media Cast" msgstr "Mediacast" #: camlibs/ptp2/ptp.c:5653 msgid "Section" msgstr "Oddíl" #: camlibs/ptp2/ptp.c:5692 #, c-format msgid "Unknown(%04x)" msgstr "Neznámé (%04x)" #: camlibs/ptp2/ptp.c:5702 #, fuzzy msgid "Get device info" msgstr "NaÄíst informace o zařízení" #: camlibs/ptp2/ptp.c:5703 msgid "Open session" msgstr "Otevřít relaci" #: camlibs/ptp2/ptp.c:5704 msgid "Close session" msgstr "UkonÄit relaci" #: camlibs/ptp2/ptp.c:5705 msgid "Get storage IDs" msgstr "NaÄíst identifikátory datového úložiÅ¡tÄ›" #: camlibs/ptp2/ptp.c:5706 msgid "Get storage info" msgstr "NaÄíst informace o datovém úložiÅ¡ti" #: camlibs/ptp2/ptp.c:5707 msgid "Get number of objects" msgstr "Získat poÄet objektů" #: camlibs/ptp2/ptp.c:5708 msgid "Get object handles" msgstr "NaÄíst manipulaci s objektem" #: camlibs/ptp2/ptp.c:5709 msgid "Get object info" msgstr "NaÄíst informace o objektu" #: camlibs/ptp2/ptp.c:5710 msgid "Get object" msgstr "Získat objekt" #: camlibs/ptp2/ptp.c:5711 msgid "Get thumbnail" msgstr "Získat náhled" #: camlibs/ptp2/ptp.c:5712 msgid "Delete object" msgstr "Smazat objekt" #: camlibs/ptp2/ptp.c:5713 msgid "Send object info" msgstr "Odeslat informace o objektu" #: camlibs/ptp2/ptp.c:5714 msgid "Send object" msgstr "Odeslat objekt" #: camlibs/ptp2/ptp.c:5715 msgid "Initiate capture" msgstr "Zahájit snímání" #: camlibs/ptp2/ptp.c:5716 msgid "Format storage" msgstr "Formátovat úložiÅ¡tÄ› dat" #: camlibs/ptp2/ptp.c:5717 msgid "Reset device" msgstr "Restartovat zaří­zení­" #: camlibs/ptp2/ptp.c:5718 msgid "Self test device" msgstr "Samotestování zařízení" #: camlibs/ptp2/ptp.c:5719 msgid "Set object protection" msgstr "Nastavit ochranu objektu" #: camlibs/ptp2/ptp.c:5720 msgid "Power down device" msgstr "Vypnutí zařízení" #: camlibs/ptp2/ptp.c:5721 msgid "Get device property description" msgstr "NaÄíst popis vlastnosti zařízení" #: camlibs/ptp2/ptp.c:5722 msgid "Get device property value" msgstr "NaÄíst hodnotu vlastnosti zařízení" #: camlibs/ptp2/ptp.c:5723 msgid "Set device property value" msgstr "Nastavit hodnotu vlastnosti zařízení" #: camlibs/ptp2/ptp.c:5724 msgid "Reset device property value" msgstr "Resetovat hodnotu vlastnosti zařízení" #: camlibs/ptp2/ptp.c:5725 msgid "Terminate open capture" msgstr "UkonÄit zahájení snímání" #: camlibs/ptp2/ptp.c:5726 msgid "Move object" msgstr "PÅ™esunout objekt" #: camlibs/ptp2/ptp.c:5727 msgid "Copy object" msgstr "Zkopírovat objekt" #: camlibs/ptp2/ptp.c:5728 msgid "Get partial object" msgstr "Získat neúplný objekt" #: camlibs/ptp2/ptp.c:5729 msgid "Initiate open capture" msgstr "Inicializovat zahájení snímání" #: camlibs/ptp2/ptp.c:5731 msgid "Start Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5732 msgid "Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5733 msgid "Stop Enumerate Handles" msgstr "" #: camlibs/ptp2/ptp.c:5734 #, fuzzy msgid "Get Vendor Extension Maps" msgstr "Nadstavba pÅ™idaná výrobcem" #: camlibs/ptp2/ptp.c:5735 #, fuzzy msgid "Get Vendor Device Info" msgstr "NaÄíst informace o zařízení" #: camlibs/ptp2/ptp.c:5736 msgid "Get Resized Image Object" msgstr "" #: camlibs/ptp2/ptp.c:5737 #, fuzzy msgid "Get Filesystem Manifest" msgstr "Rychlý souborový systém" #: camlibs/ptp2/ptp.c:5738 #, fuzzy msgid "Get Stream Info" msgstr "NaÄíst informace o datovém úložiÅ¡ti" #: camlibs/ptp2/ptp.c:5739 msgid "Get Stream" msgstr "" #: camlibs/ptp2/ptp.c:5743 msgid "Get object properties supported" msgstr "NaÄíst podporované vlastnosti objektu" #: camlibs/ptp2/ptp.c:5744 msgid "Get object property description" msgstr "NaÄíst popis vlastnosti objektu" #: camlibs/ptp2/ptp.c:5745 msgid "Get object property value" msgstr "NaÄíst hodnotu vlastnosti objektu" #: camlibs/ptp2/ptp.c:5746 msgid "Set object property value" msgstr "Nastavit hodnotu vlastnosti objektu" #: camlibs/ptp2/ptp.c:5747 msgid "Get object property list" msgstr "NaÄíst seznam vlastností objektu" #: camlibs/ptp2/ptp.c:5748 msgid "Set object property list" msgstr "Nastavit seznam vlastností objektu" #: camlibs/ptp2/ptp.c:5749 msgid "Get interdependent property description" msgstr "Získat popis vzájemnÄ› závislých vlastností" #: camlibs/ptp2/ptp.c:5750 msgid "Send object property list" msgstr "Odeslat seznam vlastností objektu" #: camlibs/ptp2/ptp.c:5751 msgid "Get object references" msgstr "NaÄíst reference objektu" #: camlibs/ptp2/ptp.c:5752 msgid "Set object references" msgstr "Nastavit reference objektu" #: camlibs/ptp2/ptp.c:5753 msgid "Update device firmware" msgstr "Aktualizovat firmware zařízení" #: camlibs/ptp2/ptp.c:5754 msgid "Skip to next position in playlist" msgstr "PÅ™ejít na další položku v seznamu audiostop" #: camlibs/ptp2/ptp.c:5757 msgid "Get secure time challenge" msgstr "Získat výzvu zabezpeÄeného Äasu" #: camlibs/ptp2/ptp.c:5758 msgid "Get secure time response" msgstr "Získat odpovÄ›Ä zabezpeÄeného Äasu" #: camlibs/ptp2/ptp.c:5759 msgid "Set license response" msgstr "Nastavit odpovÄ›Ä na licenci" #: camlibs/ptp2/ptp.c:5760 msgid "Get sync list" msgstr "Získat synchronizaÄní seznam" #: camlibs/ptp2/ptp.c:5761 msgid "Send meter challenge query" msgstr "Odeslat výzvu dotazu poÄítadla" #: camlibs/ptp2/ptp.c:5762 msgid "Get meter challenge" msgstr "Odeslat výzvu poÄítadla" #: camlibs/ptp2/ptp.c:5763 msgid "Get meter response" msgstr "Získat odezvu poÄítadla" #: camlibs/ptp2/ptp.c:5764 msgid "Clean data store" msgstr "Vymazat datové úložiÅ¡tÄ›" #: camlibs/ptp2/ptp.c:5765 msgid "Get license state" msgstr "Získat stav licence" #: camlibs/ptp2/ptp.c:5766 msgid "Send WMDRM-PD Command" msgstr "Odeslat příkaz WMDRM-PD" #: camlibs/ptp2/ptp.c:5767 msgid "Send WMDRM-PD Request" msgstr "Odeslat žádost WMDRM-PD" #: camlibs/ptp2/ptp.c:5770 msgid "Report Added/Deleted Items" msgstr "Hlášení pÅ™idaných/smazaných položek" #: camlibs/ptp2/ptp.c:5771 msgid "Report Acquired Items" msgstr "Hlášení získaných položek" #: camlibs/ptp2/ptp.c:5772 msgid "Get transferable playlist types" msgstr "Získat typy pÅ™enositelných seznamů stop" #: camlibs/ptp2/ptp.c:5775 msgid "Send WMDRM-PD Application Request" msgstr "Odeslat požadavek aplikace WMDRM-PD" #: camlibs/ptp2/ptp.c:5776 msgid "Get WMDRM-PD Application Response" msgstr "Získat odpovÄ›Ä aplikace WMDRM-PD" #: camlibs/ptp2/ptp.c:5777 msgid "Enable trusted file operations" msgstr "Zapnout důvÄ›ryhodné souborové operace" #: camlibs/ptp2/ptp.c:5778 msgid "Disable trusted file operations" msgstr "Vypnout důvÄ›ryhodné souborové operace" #: camlibs/ptp2/ptp.c:5779 msgid "End trusted application session" msgstr "UkonÄit relaci důvÄ›ryhodné aplikace" #: camlibs/ptp2/ptp.c:5782 msgid "Open Media Session" msgstr "Otevřít mediální relaci" #: camlibs/ptp2/ptp.c:5783 msgid "Close Media Session" msgstr "UkonÄit mediální relaci" #: camlibs/ptp2/ptp.c:5784 msgid "Get Next Data Block" msgstr "Získat následující datový blok" #: camlibs/ptp2/ptp.c:5785 msgid "Set Current Time Position" msgstr "Nastavit souÄasnou pozici na Äasové ose" #: camlibs/ptp2/ptp.c:5788 msgid "Send Registration Request" msgstr "Odeslat registraÄní požadavek" #: camlibs/ptp2/ptp.c:5789 msgid "Get Registration Response" msgstr "Získat registraÄní odpovÄ›Ä" #: camlibs/ptp2/ptp.c:5790 msgid "Get Proximity Challenge" msgstr "Získat výzvu na pÅ™iblížení" #: camlibs/ptp2/ptp.c:5791 msgid "Send Proximity Response" msgstr "Odeslat odezvu na pÅ™iblížení" #: camlibs/ptp2/ptp.c:5792 msgid "Send WMDRM-ND License Request" msgstr "Odeslat licenÄní žádost WMDRM-ND" #: camlibs/ptp2/ptp.c:5793 msgid "Get WMDRM-ND License Response" msgstr "Získat licenÄní odpovÄ›Ä WMDRM-ND" #: camlibs/ptp2/ptp.c:5796 msgid "Process WFC Object" msgstr "Zpracovat WFC objekt" #: camlibs/ptp2/ptp.c:5799 #, fuzzy msgid "Get Partial Object (64bit Offset)" msgstr "Získat neúplný objekt" #: camlibs/ptp2/ptp.c:5800 #, fuzzy msgid "Send Partial Object" msgstr "Získat neúplný objekt" #: camlibs/ptp2/ptp.c:5801 #, fuzzy msgid "Truncate Object" msgstr "Zpracovat WFC objekt" #: camlibs/ptp2/ptp.c:5802 #, fuzzy msgid "Begin Edit Object" msgstr "Odeslat objekt" #: camlibs/ptp2/ptp.c:5803 #, fuzzy msgid "End Edit Object" msgstr "Odeslat objekt" #: camlibs/ptp2/ptp.c:6012 #, fuzzy msgid "Unknown PTP_OC" msgstr "Neznámé %d" #: camlibs/ptp2/ptp.c:6029 #, fuzzy msgid "Unknown VendorExtensionID" msgstr "Nadstavba pÅ™idaná výrobcem" #: camlibs/ricoh/g3.c:357 msgid "Downloading movie..." msgstr "Probíhá stahování videonahrávky…" #: camlibs/ricoh/g3.c:363 msgid "Downloading audio..." msgstr "Probíhá stahování zvukového nahrávky…" #: camlibs/ricoh/g3.c:378 msgid "Downloading EXIF data..." msgstr "Probíhá stahování EXIF informací…" #: camlibs/ricoh/g3.c:380 camlibs/ricoh/g3.c:399 #, c-format msgid "No EXIF data available for %s." msgstr "Pro %s nejsou k dispozici žádné EXIF informace." #: camlibs/ricoh/g3.c:484 msgid "Could not delete file." msgstr "Soubor nelze smazat." #: camlibs/ricoh/g3.c:512 msgid "Could not remove directory." msgstr "Složku nelze smazat." #: camlibs/ricoh/g3.c:540 msgid "Could not create directory." msgstr "Složku nelze vytvoÅ™it." #: camlibs/ricoh/g3.c:559 #, c-format msgid "Version: %s\n" msgstr "Verze: %s\n" #: camlibs/ricoh/g3.c:564 #, c-format msgid "RTC Status: %d\n" msgstr "Stav hodin reálného Äasu (RTC): %d\n" #: camlibs/ricoh/g3.c:570 #, c-format msgid "Camera time: %s %s\n" msgstr "ÄŒas na přístroji: %s %s\n" #: camlibs/ricoh/g3.c:576 camlibs/sierra/sierra.c:1954 #, c-format msgid "Camera ID: %s\n" msgstr "Identifikátor přístroje: %s\n" #: camlibs/ricoh/g3.c:582 #, c-format msgid "No SD Card inserted.\n" msgstr "Paměťová karta typu SD není vložena.\n" #: camlibs/ricoh/g3.c:585 #, c-format msgid "SD Card ID: %s\n" msgstr "Identifikátor paměťové karty SD: %s\n" #: camlibs/ricoh/g3.c:593 #, c-format msgid "Photos on camera: %d\n" msgstr "Snímků v přístroji: %d\n" #: camlibs/ricoh/g3.c:599 #, c-format msgid "SD memory: %d MB total, %d MB free.\n" msgstr "Paměťová karta SD: %d MB kapacity celkem, z toho %d MB volných.\n" #: camlibs/ricoh/g3.c:606 #, c-format msgid "Internal memory: %d MB total, %d MB free.\n" msgstr "VestavÄ›né datové úložiÅ¡tÄ›: %d MB celkem, %d MB volných.\n" #: camlibs/ricoh/g3.c:616 msgid "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Reverse engineered using USB Snoopy, looking\n" "at the firmware update image and wild guessing.\n" msgstr "" "Ricoh Caplio G3.\n" "Marcus Meissner \n" "Prozkoumáno s využítím USB Snoopy, analýzy souboru s aktualizací firmware a " "kvalifikovaného\n" "odhadu.\n" #: camlibs/ricoh/library.c:217 msgid "" "Ricoh / Philips driver by\n" "Lutz Mueller ,\n" "Martin Fischer ,\n" "based on Bob Paauwe's driver\n" msgstr "" "OvladaÄ pro Ricoh / Philips od\n" "Lutz Müller ,\n" "Martin Fischer ,\n" "založeno na ovladaÄi od Boba Paauwese\n" #: camlibs/ricoh/library.c:251 #, c-format msgid "unknown (0x%02x)" msgstr "neznámé (0x%02x)" #: camlibs/ricoh/library.c:254 #, c-format msgid "" "Model: %s\n" "Memory: %d byte(s) of %d available" msgstr "" "Model: %s\n" "Datové úložiÅ¡tÄ›: %d bajtů z %d volných" #: camlibs/ricoh/library.c:302 msgid "-2.0" msgstr "-2,0" #: camlibs/ricoh/library.c:303 msgid "-1.5" msgstr "-1,5" #: camlibs/ricoh/library.c:304 msgid "-1.0" msgstr "-1,0" #: camlibs/ricoh/library.c:305 msgid "-0.5" msgstr "-0,5" #: camlibs/ricoh/library.c:306 msgid "0.0" msgstr "0,0" #: camlibs/ricoh/library.c:307 msgid "0.5" msgstr "0,5" #: camlibs/ricoh/library.c:308 msgid "1.0" msgstr "1,0" #: camlibs/ricoh/library.c:309 msgid "1.5" msgstr "1,5" #: camlibs/ricoh/library.c:310 msgid "2.0" msgstr "2,0" #: camlibs/ricoh/library.c:319 msgid "1280 x 960" msgstr "1280 × 960" #: camlibs/ricoh/library.c:327 msgid "Outdoor" msgstr "Exteriér" #: camlibs/ricoh/library.c:347 msgid "Maximal" msgstr "Nejvýše" #: camlibs/ricoh/library.c:349 msgid "Minimal" msgstr "NejménÄ›" #: camlibs/ricoh/library.c:357 msgid "Character" msgstr "Text" #: camlibs/ricoh/library.c:358 msgid "Sound" msgstr "Zvuk" #: camlibs/ricoh/library.c:359 msgid "Image & Sound" msgstr "Zvuk a obraz" #: camlibs/ricoh/library.c:360 msgid "Character & Sound" msgstr "Text a zvuk" #: camlibs/ricoh/library.c:378 msgid "3x" msgstr "3×" #: camlibs/ricoh/library.c:380 msgid "5x" msgstr "5×" #: camlibs/ricoh/library.c:381 msgid "6x" msgstr "6×" #: camlibs/ricoh/library.c:382 msgid "7x" msgstr "7×" #: camlibs/ricoh/library.c:383 msgid "8x" msgstr "8×" #: camlibs/ricoh/library.c:384 msgid "9x" msgstr "9×" #: camlibs/ricoh/library.c:431 msgid "Configuration" msgstr "Nastavení" #: camlibs/ricoh/library.c:434 msgid "General" msgstr "Obecné" #: camlibs/ricoh/library.c:440 msgid "Copyright (max. 20 characters)" msgstr "Informace o autorských právech (nejvýš 20 znaků)" #: camlibs/ricoh/library.c:454 msgid "Pictures" msgstr "Snímky" #: camlibs/ricoh/library.c:498 msgid "White level" msgstr "Vyvážení bílé" #: camlibs/ricoh/library.c:502 msgid "Record Mode" msgstr "Režim nahrávání" #: camlibs/ricoh/library.c:503 msgid "Compression" msgstr "Komprimace" #: camlibs/ricoh/library.c:570 #, c-format msgid "Speed %i is not supported!" msgstr "Rychlost %i není podporována!" #: camlibs/ricoh/ricoh.c:67 #, c-format msgid "Expected %i, got %i. Please report this error to %s." msgstr "" "OÄekáváno %i, %i obdrženo. Tuto chybu prosím ohlaste na %s (v angliÄtinÄ›)." #: camlibs/ricoh/ricoh.c:76 #, c-format msgid "Expected %i bytes, got %i. Please report this error to %s." msgstr "" "OÄekáváno %i bajtů, namísto toho obdrženo %i. Nahlaste prosím tuto chybu na " "%s (v angliÄtinÄ›)." #: camlibs/ricoh/ricoh.c:178 camlibs/ricoh/ricoh.c:192 #, c-format msgid "We expected 0x%x but received 0x%x. Please contact %s." msgstr "" "OÄekáváno 0x%x, namísto toho obdrženo 0x%x. Kontaktujte prosím %s (v " "angliÄtinÄ›)." #: camlibs/ricoh/ricoh.c:221 #, c-format msgid "Bad characters (0x%x, 0x%x). Please contact %s." msgstr "Chybné znaky (0x%x, 0x%x). Kontaktujte prosím %s (v angliÄtinÄ›)." #: camlibs/ricoh/ricoh.c:262 camlibs/ricoh/ricoh.c:337 #, c-format msgid "Camera busy. If the problem persists, please contact %s." msgstr "" "Přístroj je zaneprázdnÄ›ný. Pokud problém pÅ™etrvává, kontaktujte prosím %s (v " "angliÄtinÄ›)." #: camlibs/ricoh/ricoh.c:297 #, c-format msgid "Timeout even after 2 retries. Please contact %s." msgstr "" "I po dvou pokusech vyprÅ¡el Äasový limit. Kontaktujte prosím %s (v " "angliÄtinÄ›)." #: camlibs/ricoh/ricoh.c:313 #, c-format msgid "Communication error even after 2 retries. Please contact %s." msgstr "" "I po dvou pokusech se komunikace stále nedaří. Kontaktujte prosím %s (v " "angliÄtinÄ›)." #: camlibs/ricoh/ricoh.c:351 #, c-format msgid "Camera is in wrong mode. Please contact %s." msgstr "" "Přístroj se nachází ve Å¡patném režimu. Kontaktujte prosím %s (v angliÄtinÄ›)." #: camlibs/ricoh/ricoh.c:360 #, c-format msgid "Camera did not accept the parameters. Please contact %s." msgstr "" "Přístroj tento parametr nepÅ™ijímá. Kontaktujte prosím %s (v angliÄtinÄ›)." #: camlibs/ricoh/ricoh.c:366 #, c-format msgid "An unknown error occurred. Please contact %s." msgstr "Vyskytla se neznámá chyba. Kontaktujte prosím %s (v angliÄtinÄ›)." #: camlibs/ricoh/ricoh.c:832 #, c-format msgid "" "The filename's length must not exceed 12 characters ('%s' has %i characters)." msgstr "Délka názvu souboru nesmí pÅ™ekroÄit 12 znaků („%s“ jich obsahuje %i)." #: camlibs/samsung/samsung.c:243 msgid "" "The Samsung digimax 800k driver has been written by James McKenzie " " for gphoto. Lutz Mueller ported it to gphoto2. Marcus Meissner fixed and " "enhanced the port." msgstr "" "OvladaÄ přístroje Samsung digimax 800k pro gphoto, vytvoÅ™il James McKenzie\n" ".Pro gphoto2 upravil Lutz Müller . Další úpravy a vylepÅ¡ení provedl Marcus Meissner " "." #: camlibs/sierra/epson-desc.c:85 camlibs/sierra/nikon-desc.c:92 #: camlibs/sierra/nikon-desc.c:126 camlibs/sierra/olympus-desc.c:106 #: camlibs/sierra/olympus-desc.c:136 camlibs/sierra/olympus-desc.c:165 msgid "Resolution plus Size" msgstr "RozliÅ¡ení a velikost" #: camlibs/sierra/epson-desc.c:103 camlibs/sierra/nikon-desc.c:144 #: camlibs/sierra/olympus-desc.c:183 msgid "Date and time (GMT)" msgstr "Datum a Äas (v GMT)" #: camlibs/sierra/epson-desc.c:127 camlibs/sierra/nikon-desc.c:210 #: camlibs/sierra/olympus-desc.c:392 camlibs/sierra/olympus-desc.c:424 #: camlibs/sierra/olympus-desc.c:448 camlibs/sierra/olympus-desc.c:472 msgid "Aperture Settings" msgstr "Nastavení zaclonÄ›ní" #: camlibs/sierra/epson-desc.c:142 camlibs/sierra/nikon-desc.c:225 #: camlibs/sierra/sierra.c:992 camlibs/sierra/sierra.c:1302 #: camlibs/sierra/sierra.c:1631 camlibs/sierra/sierra.c:1832 msgid "Color Mode" msgstr "Režim barev" #: camlibs/sierra/epson-desc.c:154 camlibs/sierra/sierra.c:1026 #: camlibs/sierra/sierra.c:1036 camlibs/sierra/sierra.c:1333 #: camlibs/sierra/sierra.c:1536 camlibs/sierra/sierra.c:1545 #: camlibs/sierra/sierra.c:1772 msgid "Red-eye Reduction" msgstr "Omezení jevu Äervených oÄí" #: camlibs/sierra/epson-desc.c:160 camlibs/sierra/nikon-desc.c:243 #: camlibs/sierra/olympus-desc.c:506 camlibs/sierra/olympus-desc.c:525 #: camlibs/sierra/olympus-desc.c:546 msgid "Flash Settings" msgstr "Nastavení blesku" #: camlibs/sierra/epson-desc.c:193 camlibs/sierra/olympus-desc.c:709 msgid "Host power save (seconds)" msgstr "Prodl. pÅ™echodu poÄítaÄe do úspor. režimu (ve vteÅ™inách)" #: camlibs/sierra/epson-desc.c:209 camlibs/sierra/olympus-desc.c:694 msgid "Camera power save (seconds)" msgstr "Prodl. pÅ™echodu přístroje do úspor. režimu (ve vteÅ™inách)" #: camlibs/sierra/epson-desc.c:224 camlibs/sierra/sierra.c:1114 #: camlibs/sierra/sierra.c:1387 camlibs/sierra/sierra.c:1586 #: camlibs/sierra/sierra.c:1799 msgid "Lens Mode" msgstr "Režim objektivu" #: camlibs/sierra/epson-desc.c:233 camlibs/sierra/sierra.c:1682 #: camlibs/sierra/sierra.c:1691 camlibs/sierra/sierra.c:1868 msgid "Korean" msgstr "KorejÅ¡tina (한국어)" #: camlibs/sierra/epson-desc.c:234 camlibs/sierra/nikon-desc.c:419 #: camlibs/sierra/sierra.c:1683 camlibs/sierra/sierra.c:1693 #: camlibs/sierra/sierra.c:1870 msgid "English" msgstr "AngliÄtina (English)" #: camlibs/sierra/epson-desc.c:235 camlibs/sierra/nikon-desc.c:420 #: camlibs/sierra/sierra.c:1684 camlibs/sierra/sierra.c:1695 #: camlibs/sierra/sierra.c:1872 msgid "French" msgstr "FrancouzÅ¡tina (Français)" #: camlibs/sierra/epson-desc.c:236 camlibs/sierra/nikon-desc.c:421 #: camlibs/sierra/sierra.c:1685 camlibs/sierra/sierra.c:1697 #: camlibs/sierra/sierra.c:1874 msgid "German" msgstr "NÄ›mÄina (Deutsch)" #: camlibs/sierra/epson-desc.c:237 camlibs/sierra/sierra.c:1686 #: camlibs/sierra/sierra.c:1699 camlibs/sierra/sierra.c:1876 msgid "Italian" msgstr "ItalÅ¡tina (Italiano)" #: camlibs/sierra/epson-desc.c:238 camlibs/sierra/sierra.c:1687 #: camlibs/sierra/sierra.c:1701 camlibs/sierra/sierra.c:1878 msgid "Japanese" msgstr "JaponÅ¡tina (日本語)" #: camlibs/sierra/epson-desc.c:239 camlibs/sierra/sierra.c:1688 #: camlibs/sierra/sierra.c:1703 camlibs/sierra/sierra.c:1880 msgid "Spanish" msgstr "Å panÄ›lÅ¡tina (Español)" #: camlibs/sierra/epson-desc.c:240 camlibs/sierra/sierra.c:1689 #: camlibs/sierra/sierra.c:1705 camlibs/sierra/sierra.c:1882 #, fuzzy msgid "Portuguese" msgstr "PortugalÅ¡tina (Português)" #: camlibs/sierra/epson-desc.c:278 camlibs/sierra/nikon-desc.c:691 #: camlibs/sierra/nikon-desc.c:702 camlibs/sierra/nikon-desc.c:713 #: camlibs/sierra/olympus-desc.c:1013 camlibs/sierra/olympus-desc.c:1112 #: camlibs/sierra/olympus-desc.c:1123 camlibs/sierra/olympus-desc.c:1133 #: camlibs/sierra/sierra.c:913 camlibs/sierra/sierra.c:1580 msgid "Picture Settings" msgstr "Nastavení obrazu" #: camlibs/sierra/epson-desc.c:289 msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to the gphoto developer mailing list (in English)\n" msgstr "" "NÄ›kolik poznámek k přístrojům Epson:\n" "- NÄ›které z parametrů se nedají ovládat z poÄítaÄe:\n" " * pÅ™iblížení\n" " * ostÅ™ení\n" " * uživatelské nastavení vyvážení bílé\n" "- Nastavení byla prozkoumána na přístroji PhotoPC 3000z, pokud se váš " "přístroj chová jinak,\n" "zaÅ¡lete prosím zprávu do e-mailové konference vývojářů gphoto (v " "angliÄtinÄ›)\n" #: camlibs/sierra/library.c:149 camlibs/sierra/library.c:1381 msgid "No memory card present" msgstr "Paměťová karta není­ přítomna" #: camlibs/sierra/library.c:304 msgid "Cannot retrieve the battery capacity" msgstr "Nelze naÄí­st informace o kapacitÄ› akumulátoru" #: camlibs/sierra/library.c:312 #, c-format msgid "" "The battery level of the camera is too low (%d%%). The operation is aborted." msgstr "" "Úroveň nabití akumulátoru je příliÅ¡ nízká (%d%%). Operace proto byla zruÅ¡ena." #: camlibs/sierra/library.c:336 msgid "Cannot retrieve the available memory left" msgstr "Nelze získat informaci o zbývající volné kapacitÄ› datového úložiÅ¡tÄ›" #: camlibs/sierra/library.c:391 msgid "Camera refused 3 times to keep a connection open." msgstr "Přístroj 3× po sobÄ› odmítl ponechat spojení navázané." #: camlibs/sierra/library.c:616 #, c-format msgid "The first byte received (0x%x) is not valid." msgstr "První obdržený bajt (0x%x) není platný." #: camlibs/sierra/library.c:738 #, c-format msgid "" "Transmission of packet timed out even after %i retries. Please contact %s." msgstr "" "PÅ™enos paketů se nezdaÅ™il ani po %i pokusech. Kontaktujte prosím %s (v " "angliÄtinÄ›)." #: camlibs/sierra/library.c:773 camlibs/sierra/library.c:798 msgid "Could not transmit packet even after several retries." msgstr "Ani po nÄ›kolika pokusech se nepodaÅ™ilo pÅ™enést paket." #: camlibs/sierra/library.c:789 #, c-format msgid "Packet was rejected by camera. Please contact %s." msgstr "Paket byl přístrojem odmítnut. Kontaktujte prosím %s (v angliÄtinÄ›)." #: camlibs/sierra/library.c:816 #, c-format msgid "Could not transmit packet (error code %i). Please contact %s." msgstr "" "Nebylo možné pÅ™enést paket (kód chyby %i). Kontaktujte prosím %s (v " "angliÄtinÄ›)." #: camlibs/sierra/library.c:907 msgid "Transmission timed out even after 2 retries. Giving up..." msgstr "I na druhý pokus vyprÅ¡el Äasový limit. UpouÅ¡tí se od dalších pokusů…" #: camlibs/sierra/library.c:926 #, c-format msgid "Got unexpected result 0x%x. Please contact %s." msgstr "" "Získán neoÄekávaný výsledek (kód chyby 0x%x). Kontaktujte prosím %s (v " "angliÄtinÄ›)." #: camlibs/sierra/library.c:1025 #, c-format msgid "Received unexpected answer (%i). Please contact %s." msgstr "" "Obdržena neoÄekávaná odpovÄ›Ä (kód chyby %i). Kontaktujte prosím %s (v " "angliÄtinÄ›)." #: camlibs/sierra/library.c:1088 #, c-format msgid "Could not get register %i. Please contact %s." msgstr "NezdaÅ™ilo se získat registr %i. Kontaktujte prosím %s (v angliÄtinÄ›)." #: camlibs/sierra/library.c:1108 camlibs/sierra/library.c:1128 msgid "Too many retries failed." msgstr "Selhalo příliÅ¡ mnoho pokusů." #: camlibs/sierra/library.c:1168 msgid "Sending data..." msgstr "Probíhá odesílání dat…" #: camlibs/sierra/library.c:1226 #, c-format msgid "" "recursive calls are not supported by the sierra driver! Please contact %s." msgstr "" "Rekurzivní volání nejsou s ovladaÄem sierra možná! Kontaktujte prosím %s (v " "angliÄtinÄ›)." #: camlibs/sierra/library.c:1280 #, c-format msgid "Could not get string register %i. Please contact %s." msgstr "" "NezdaÅ™ilo se získat Å™etÄ›zcový registr %i. Kontaktujte prosím %s (v " "angliÄtinÄ›)." #: camlibs/sierra/library.c:1519 #, c-format msgid "Expected 32 bytes, got %i. Please contact %s." msgstr "OÄekáváno 32 bajtů, obdrženo %i. Kontaktujte prosím %s (v angliÄtinÄ›)." #: camlibs/sierra/nikon-desc.c:162 camlibs/sierra/olympus-desc.c:361 msgid "Shutter Speed microseconds (0 auto)" msgstr "Exp. Äas v mikrosekundách (0 = automat. nastavení)" #: camlibs/sierra/nikon-desc.c:193 camlibs/sierra/olympus-desc.c:229 #: camlibs/sierra/olympus-desc.c:283 camlibs/sierra/olympus-desc.c:343 msgid "Shutter Speed (in seconds)" msgstr "Exp. Äas (ve vteÅ™inách)" #: camlibs/sierra/nikon-desc.c:220 camlibs/sierra/olympus-desc.c:481 msgid "B/W" msgstr "ÄŒ/B" #: camlibs/sierra/nikon-desc.c:237 camlibs/sierra/olympus-desc.c:501 #: camlibs/sierra/olympus-desc.c:518 camlibs/sierra/olympus-desc.c:537 msgid "Anti-redeye" msgstr "Omezení jevu Äervených oÄí" #: camlibs/sierra/nikon-desc.c:238 msgid "Slow-sync" msgstr "Pomalá synchronizace" #: camlibs/sierra/nikon-desc.c:254 camlibs/sierra/sierra.c:1057 #: camlibs/sierra/sierra.c:1067 camlibs/sierra/sierra.c:1355 msgid "Contrast+" msgstr "PÅ™idat kontrast" #: camlibs/sierra/nikon-desc.c:255 camlibs/sierra/sierra.c:1058 #: camlibs/sierra/sierra.c:1069 camlibs/sierra/sierra.c:1357 msgid "Contrast-" msgstr "Ubrat kontrast" #: camlibs/sierra/nikon-desc.c:256 msgid "Brightness+" msgstr "Ubrat jas" #: camlibs/sierra/nikon-desc.c:257 msgid "Brightness-" msgstr "PÅ™idat jas" #: camlibs/sierra/nikon-desc.c:262 msgid "Image Adjustment" msgstr "Seřízení obrazu" #: camlibs/sierra/nikon-desc.c:306 msgid "Blink" msgstr "Bliknutí" #: camlibs/sierra/nikon-desc.c:311 msgid "LED Mode" msgstr "Režim pÅ™isvÄ›tlující LED" #: camlibs/sierra/nikon-desc.c:326 msgid "Infinity" msgstr "NekoneÄno" #: camlibs/sierra/nikon-desc.c:362 msgid "Preview Thumbnail" msgstr "Náhledový obrázek" #: camlibs/sierra/nikon-desc.c:363 msgid "Next" msgstr "Následující" #: camlibs/sierra/nikon-desc.c:364 msgid "Previous" msgstr "PÅ™edchozí" #: camlibs/sierra/nikon-desc.c:378 msgid "Operation Mode" msgstr "Režim provozu přístroje" #: camlibs/sierra/nikon-desc.c:392 camlibs/sierra/olympus-desc.c:680 #: camlibs/sierra/sierra.c:1220 camlibs/sierra/sierra.c:1459 msgid "LCD Brightness" msgstr "Jas displeje" #: camlibs/sierra/nikon-desc.c:407 camlibs/sierra/olympus-desc.c:722 msgid "LCD Auto Shut Off (seconds)" msgstr "Prodleva automatického vypnutí displeje (vteÅ™iny)" #: camlibs/sierra/nikon-desc.c:491 msgid "Center-Weighted" msgstr "S důrazem na stÅ™ed" #: camlibs/sierra/nikon-desc.c:493 camlibs/sierra/olympus-desc.c:776 #: camlibs/sierra/olympus-desc.c:793 msgid "Matrix" msgstr "Mřížka" #: camlibs/sierra/nikon-desc.c:494 msgid "Spot-AF" msgstr "Automat. zaostÅ™ení na jediný bod" #: camlibs/sierra/nikon-desc.c:499 camlibs/sierra/olympus-desc.c:781 #: camlibs/sierra/olympus-desc.c:799 msgid "Exposure Metering" msgstr "Měření expoziÄních hodnot" #: camlibs/sierra/nikon-desc.c:517 camlibs/sierra/olympus-desc.c:815 #: camlibs/sierra/olympus-desc.c:831 camlibs/sierra/olympus-desc.c:847 msgid "Zoom (in millimeters)" msgstr "PÅ™iblížení­ (v milimetrech)" #: camlibs/sierra/nikon-desc.c:543 msgid "none" msgstr "žádné" #: camlibs/sierra/nikon-desc.c:546 msgid "AE-lock" msgstr "UzamÄení měření exp. hodnot" #: camlibs/sierra/nikon-desc.c:547 msgid "Fisheye" msgstr "Rybí oko" #: camlibs/sierra/nikon-desc.c:548 msgid "Wide" msgstr "Å irokoúhlé" #: camlibs/sierra/nikon-desc.c:558 msgid "Misc exposure/lens settings" msgstr "Různá nastavení pro exp. a objektiv" #: camlibs/sierra/nikon-desc.c:581 msgid "Auto exposure lock" msgstr "Automat. uzamÄení exp. Äasu" #: camlibs/sierra/nikon-desc.c:724 msgid "" "Nikon Coolpix 880:\n" " Camera configuration (or preferences):\n" "\n" " The optical zoom does not properly\n" " function.\n" "\n" " Not all configuration settings\n" " can be properly read or written, for\n" " example, the fine tuned setting of\n" " white balance, and the language settings.\n" "\n" " Put the camera in 'M' mode in order to\n" " to set the shutter speed.\n" msgstr "" "Nikon Coolpix 880:\n" " Funkce přístroje:\n" "\n" " Nastavování optického pÅ™iblížení nefunguje správnÄ›\n" "\n" " Ne vÅ¡echna nastavení je možné naÄítat Äi mÄ›nit, například jemné " "dolaÄování vyvážení\n" " bílé a nastavení jazyka nabídek přístroje.\n" "\n" " Aby bylo možné nastavovat expoziÄní Äas, musí být přístroj pÅ™epnutý " "do režimu „M“ (ruÄní).\n" #: camlibs/sierra/nikon-desc.c:743 msgid "" "Nikon Coolpix 995:\n" " Camera configuration (preferences) for this\n" " camera are incomplete, contact the gphoto\n" " developer mailing list\n" " if you would like to contribute to this\n" " driver.\n" "\n" " The download should function correctly.\n" msgstr "" "Nikon Coolpix 995:\n" " Ne vÅ¡echny položky nastavení tohoto zařízení jsou \n" " k dispozici, pokud chcete pomoci s jejich doplnÄ›ním, \n" " obraÅ¥te na e-mailovou konferenci vývojářů gphoto.\n" "\n" " Stahování snímků by mÄ›lo fungovat v pořádku.\n" #: camlibs/sierra/olympus-desc.c:483 msgid "White board" msgstr "SvÄ›tlé pozadí" #: camlibs/sierra/olympus-desc.c:484 msgid "Black board" msgstr "Tmavé pozadí" #: camlibs/sierra/olympus-desc.c:489 msgid "Color or Function Mode" msgstr "Režim barev Äi fungování" #: camlibs/sierra/olympus-desc.c:519 camlibs/sierra/olympus-desc.c:538 msgid "Slow" msgstr "Pomalé" #: camlibs/sierra/olympus-desc.c:540 msgid "Anti-redeye Fill" msgstr "Výplň. záblesk s omezením jevu Äervených oÄí" #: camlibs/sierra/olympus-desc.c:596 msgid "Fluorescent-1-home-6700K" msgstr "výbojkové-1-domov-6700K" #: camlibs/sierra/olympus-desc.c:597 msgid "Fluorescent-2-desk-5000K" msgstr "výbokové-2-stůl-5000K" #: camlibs/sierra/olympus-desc.c:598 msgid "Fluorescent-3-office-4200K" msgstr "výbojkové-3-kancelář-4200K" #: camlibs/sierra/olympus-desc.c:617 msgid "Flourescent-1-home-6700K" msgstr "výbojkové-1-domov-6700K" #: camlibs/sierra/olympus-desc.c:618 msgid "Flourescent-2-desk-5000K" msgstr "výbojkové-2-stůl-5000K" #: camlibs/sierra/olympus-desc.c:619 msgid "Flourescent-3-office-4200K" msgstr "výbojkové-3-kancelář-4200K" #: camlibs/sierra/olympus-desc.c:620 msgid "Dusk" msgstr "Soumrak" #: camlibs/sierra/olympus-desc.c:659 msgid "Monitor" msgstr "Monitor" #: camlibs/sierra/olympus-desc.c:665 msgid "LCD Mode" msgstr "Režim displeje" #: camlibs/sierra/olympus-desc.c:792 msgid "ESP" msgstr "ESP – měření osvÄ›tl. scény z celé plochy zábÄ›ru" #: camlibs/sierra/olympus-desc.c:864 msgid "Digital zoom" msgstr "Digitální pÅ™iblížení" #: camlibs/sierra/olympus-desc.c:915 camlibs/sierra/olympus-desc.c:931 msgid "Focus position" msgstr "Pozice ohniska" #: camlibs/sierra/olympus-desc.c:948 msgid "Time format" msgstr "Formát zápisu Äasu" #: camlibs/sierra/olympus-desc.c:1147 msgid "" "Some notes about Olympus cameras:\n" "(1) Camera Configuration:\n" " A zero value will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "NÄ›kolik poznámek k přístrojům Olympus:\n" "\n" "1) Místo nezadaných hodnot nastavení budou použity ty výchozí (automatika).\n" "\n" "2) Typ C-3040Z (a pravdÄ›podobnÄ› též C-2040Z a další) je pro ovládání z " "poÄítaÄe pÅ™es USB tÅ™eba\n" "nejprve pÅ™epnout do přísluÅ¡ného režimu. Postup pro toto je následující: - " "zapnout přístroj\n" " - otevřít krytku slotu pro paměťovou kartu\n" " - podržet souÄasnÄ› tlaÄítka „nabídka“ a „displej“, dokud se na displeji " "přístroje neobjeví\n" "nabídka pro zapnutí přísluÅ¡ného režimu.\n" "\n" "3) Pokud bÄ›hem ovládání z poÄítaÄe pÅ™epnete displej do režimu „monitor“ Äi " "„normální“,\n" "nezapomeňte jej pÅ™ed odpojením od poÄítaÄe pÅ™epnout zpÄ›t do režimu " "„vypnuto“. Pokud tak\n" "neuÄiníte, přístroj pak nebude reagovat na stisk žádného z tlaÄítek na nÄ›m. " "Pro nápravu staÄí\n" "pÅ™ipojit jej zpÄ›t k poÄítaÄi a provést zmínÄ›né vypnutí displeje." #: camlibs/sierra/olympus-desc.c:1166 msgid "" "Olympus 750 Ultra Zoom:\n" "(1) Olympus 750UZ has a USB PC Control mode. To switch\n" " into 'USB PC control mode', turn on the camera, open\n" " the memory card access door and then press and\n" " hold both the 'OK' and 'quickview' buttons until the\n" " camera control menu appears. Set it to control mode.\n" "(2) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you can't use\n" " the camera buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC, then switch LCD to 'Off'." msgstr "" "Olympus 750 Ultra Zoom:\n" "\n" "1) tento typ je pro ovládání z poÄítaÄe pÅ™es USB tÅ™eba nejprve pÅ™epnout do " "přísluÅ¡ného režimu.\n" "Postup pro toto je následující:\n" " - zapnout přístroj\n" " - otevřít krytku slotu pro paměťovou kartu\n" " - podržet souÄasnÄ› tlaÄítka „nabídka“ a „rychlé zobrazení“ (quickview), " "dokud se na displeji\n" "přístroje neobjeví nabídka pro zapnutí přísluÅ¡ného režimu.\n" "\n" "2) Pokud bÄ›hem ovládání z poÄítaÄe pÅ™epnete displej do režimu „monitor“ Äi " "„normální“,\n" "nezapomeňte jej pÅ™ed odpojením od poÄítaÄe pÅ™epnout zpÄ›t do režimu " "„vypnuto“. Pokud tak\n" "neuÄiníte, přístroj pak nebude reagovat na stisk žádného z tlaÄítek na nÄ›m. " "Pro nápravu staÄí\n" "pÅ™ipojit jej zpÄ›t k poÄítaÄi a provést zmínÄ›né vypnutí displeje." #: camlibs/sierra/olympus-desc.c:1182 msgid "" "Default sierra driver:\n" "\n" " This is the default sierra driver, it\n" " should be capable of supporting the download\n" " and browsing of pictures on your camera.\n" "\n" " Camera configuration (or preferences)\n" " settings are based on the Olympus 3040,\n" " and are likely incomplete. If you verify\n" " that the configuration settings are\n" " complete for your camera, or can contribute\n" " code to support complete configuration,\n" " please contact the developer mailing list.\n" msgstr "" "Výchozí ovladaÄ pro Sierra:\n" "\n" " Tento výchozí ovladaÄ by mÄ›l umožňovat stahování a procházení snímků v " "přístroji.\n" "\n" " Položky nastavení přístroje jsou odvozeny z Olympus 3040 a pravdÄ›podobnÄ› " "nekompletní.\n" " Pokud pro váš přístroj nic nechybí Äi dovedete chybÄ›jící doprogramovat, " "dejte o tom\n" " vÄ›dÄ›t na e-mailové konferenci vývojářů gPhoto2 (v angliÄtinÄ›).\n" #: camlibs/sierra/sierra.c:770 camlibs/soundvision/soundvision.c:416 msgid "The file to be uploaded has a null length" msgstr "Soubor, který má být nahrán, neobsahuje žádná data (nulová velikost)." #: camlibs/sierra/sierra.c:784 msgid "Not enough memory available on the memory card" msgstr "Na paměťové kartÄ› již není dostatek volného místa" #: camlibs/sierra/sierra.c:791 msgid "Cannot retrieve the name of the folder containing the pictures" msgstr "Nelze získat název složky s obrázky" #: camlibs/sierra/sierra.c:798 #, c-format msgid "Upload is supported into the '%s' folder only" msgstr "Nahrávání souborů do přístroje je možné pouze do složky „%s“" #: camlibs/sierra/sierra.c:926 camlibs/sierra/sierra.c:935 #: camlibs/sierra/sierra.c:1264 msgid "Best" msgstr "Nejlepší" #: camlibs/sierra/sierra.c:938 camlibs/sierra/sierra.c:978 #: camlibs/sierra/sierra.c:1011 camlibs/sierra/sierra.c:1041 #: camlibs/sierra/sierra.c:1072 camlibs/sierra/sierra.c:1103 #: camlibs/sierra/sierra.c:1127 camlibs/sierra/sierra.c:1149 #: camlibs/sierra/sierra.c:1178 camlibs/sierra/sierra.c:1522 #: camlibs/sierra/sierra.c:1550 camlibs/sierra/sierra.c:1573 #: camlibs/sierra/sierra.c:1595 camlibs/sierra/sierra.c:1621 #: camlibs/sierra/sierra.c:1640 camlibs/sierra/sierra.c:1708 #, c-format msgid "%i (unknown)" msgstr "%i (neznámé)" #: camlibs/sierra/sierra.c:950 camlibs/sierra/sierra.c:1274 msgid "Shutter Speed (microseconds, 0 auto)" msgstr "ExpoziÄní Äas v mikrosekundách (0 = nastavit automaticky)" #: camlibs/sierra/sierra.c:994 camlibs/sierra/sierra.c:1002 #: camlibs/sierra/sierra.c:1308 msgid "Black/White" msgstr "ÄŒerná/bílá" #: camlibs/sierra/sierra.c:996 camlibs/sierra/sierra.c:1006 #: camlibs/sierra/sierra.c:1312 msgid "White Board" msgstr "SvÄ›tlé pozadí" #: camlibs/sierra/sierra.c:997 camlibs/sierra/sierra.c:1008 #: camlibs/sierra/sierra.c:1314 msgid "Black Board" msgstr "Tmavé pozadí" #: camlibs/sierra/sierra.c:1052 camlibs/sierra/sierra.c:1345 msgid "Brightness/Contrast" msgstr "Jas/Kontrast" #: camlibs/sierra/sierra.c:1055 camlibs/sierra/sierra.c:1063 #: camlibs/sierra/sierra.c:1351 msgid "Bright+" msgstr "PÅ™idat jas" #: camlibs/sierra/sierra.c:1056 camlibs/sierra/sierra.c:1065 #: camlibs/sierra/sierra.c:1353 msgid "Bright-" msgstr "Ubrat jas" #: camlibs/sierra/sierra.c:1085 camlibs/sierra/sierra.c:1093 #: camlibs/sierra/sierra.c:1372 msgid "Skylight" msgstr "Denní svÄ›tlo" #: camlibs/sierra/sierra.c:1117 camlibs/sierra/sierra.c:1124 #: camlibs/sierra/sierra.c:1395 msgid "Infinity/Fish-eye" msgstr "NekoneÄno/rybí oko" #: camlibs/sierra/sierra.c:1138 camlibs/sierra/sierra.c:1405 msgid "Spot Metering Mode" msgstr "Bodové měření" #: camlibs/sierra/sierra.c:1161 camlibs/sierra/sierra.c:1167 msgid "1x" msgstr "1×" #: camlibs/sierra/sierra.c:1162 camlibs/sierra/sierra.c:1172 msgid "1.6x" msgstr "1,6×" #: camlibs/sierra/sierra.c:1164 camlibs/sierra/sierra.c:1175 msgid "2.5x" msgstr "2,5×" #: camlibs/sierra/sierra.c:1192 camlibs/sierra/sierra.c:1439 #: camlibs/sierra/sierra.c:1654 camlibs/sierra/sierra.c:1846 msgid "Auto Off (host) (in seconds)" msgstr "ÄŒas automat. vypnutí (s poÄítaÄem) (ve vteÅ™inách)" #: camlibs/sierra/sierra.c:1194 camlibs/sierra/sierra.c:1656 msgid "" "How long will it take until the camera powers off when connected to the " "computer?" msgstr "" "Po jak dlouhé dobÄ› neÄinnosti bÄ›hem pÅ™ipojení k poÄítaÄi se má přístroj " "vypnout?" #: camlibs/sierra/sierra.c:1206 camlibs/sierra/sierra.c:1449 #: camlibs/sierra/sierra.c:1668 camlibs/sierra/sierra.c:1856 msgid "Auto Off (field) (in seconds)" msgstr "ÄŒas automat. vypnutí přístroje (mimo poÄ.) (ve vteÅ™inách)?" #: camlibs/sierra/sierra.c:1208 camlibs/sierra/sierra.c:1670 msgid "" "How long will it take until the camera powers off when not connected to the " "computer?" msgstr "" "Po jak dlouhé dobÄ› neÄinnosti se má přístroj sám vypnout, když není pÅ™ipojen " "k poÄítaÄi?" #: camlibs/sierra/sierra.c:1230 camlibs/sierra/sierra.c:1468 msgid "LCD Auto Off (in seconds)" msgstr "ÄŒas automat. vypnutí displeje (ve vteÅ™inách)" #: camlibs/sierra/sierra.c:1492 msgid "Shot Settings" msgstr "Nastavení snímání" #: camlibs/sierra/sierra.c:1499 camlibs/sierra/sierra.c:1507 #: camlibs/sierra/sierra.c:1742 msgid "F2" msgstr "F2" #: camlibs/sierra/sierra.c:1500 camlibs/sierra/sierra.c:1509 #: camlibs/sierra/sierra.c:1744 msgid "F2.3" msgstr "F2,3" #: camlibs/sierra/sierra.c:1501 camlibs/sierra/sierra.c:1511 #: camlibs/sierra/sierra.c:1746 msgid "F2.8" msgstr "F2,8" #: camlibs/sierra/sierra.c:1502 camlibs/sierra/sierra.c:1513 #: camlibs/sierra/sierra.c:1748 msgid "F4" msgstr "F4" #: camlibs/sierra/sierra.c:1503 camlibs/sierra/sierra.c:1515 #: camlibs/sierra/sierra.c:1750 msgid "F5.6" msgstr "F5,6" #: camlibs/sierra/sierra.c:1504 camlibs/sierra/sierra.c:1517 #: camlibs/sierra/sierra.c:1752 msgid "F8" msgstr "F8" #: camlibs/sierra/sierra.c:1606 camlibs/sierra/sierra.c:1612 #: camlibs/sierra/sierra.c:1817 msgid "standard" msgstr "standardní" #: camlibs/sierra/sierra.c:1609 camlibs/sierra/sierra.c:1618 #: camlibs/sierra/sierra.c:1823 msgid "HyPict" msgstr "PÅ™epoÄítat na vyšší rozliÅ¡ení (v přístroji)" #: camlibs/sierra/sierra.c:1632 camlibs/sierra/sierra.c:1635 #: camlibs/sierra/sierra.c:1835 msgid "color" msgstr "barevné" #: camlibs/sierra/sierra.c:1633 camlibs/sierra/sierra.c:1637 #: camlibs/sierra/sierra.c:1837 msgid "black & white" msgstr "Äerná a bílá" #: camlibs/sierra/sierra.c:1939 msgid "Note: no memory card present, some values may be invalid\n" msgstr "" "Poznámka: není vložena žádná paměťová karta, nÄ›které hodnoty proto nemusí " "odpovídat skuteÄnosti\n" #: camlibs/sierra/sierra.c:1948 #, c-format msgid "Camera Model: %s\n" msgstr "Model přístroje: %s\n" #: camlibs/sierra/sierra.c:1957 #, c-format msgid "Serial Number: %s\n" msgstr "Sériové Äíslo: %s\n" #: camlibs/sierra/sierra.c:1960 #, c-format msgid "Software Rev.: %s\n" msgstr "Verze firmware: %s\n" #: camlibs/sierra/sierra.c:1965 camlibs/sierra/sierra.c:1968 #, c-format msgid "Frames Taken: %i\n" msgstr "Pořízeno snímků: %i\n" #: camlibs/sierra/sierra.c:1971 #, c-format msgid "Frames Left: %i\n" msgstr "JeÅ¡tÄ› je možné pořídit snímků: %i\n" #: camlibs/sierra/sierra.c:1973 #, c-format msgid "Battery Life: %i\n" msgstr "Zbývající Äas provozu na akumulátor: %i\n" #: camlibs/sierra/sierra.c:1975 #, c-format msgid "Memory Left: %i bytes\n" msgstr "Volné místo na paměťové kartÄ›: %i bytes\n" #: camlibs/sierra/sierra.c:1980 #, c-format msgid "Date: %s" msgstr "Datum: %s" #: camlibs/sierra/sierra.c:2041 msgid "No camera manual available.\n" msgstr "" "Pro tento přístroj není k dispozici příruÄka o jeho používání z poÄítaÄe.\n" #: camlibs/sierra/sierra.c:2048 #, c-format msgid "" "Some notes about Epson cameras:\n" "- Some parameters are not controllable remotely:\n" " * zoom\n" " * focus\n" " * custom white balance setup\n" "- Configuration has been reverse-engineered with\n" " a PhotoPC 3000z, if your camera acts differently\n" " please send a mail to %s (in English)\n" msgstr "" "NÄ›kolik poznámek ohlednÄ› přístrojů Epson:\n" "- NÄ›které z parametrů není možné ovládat z poÄítaÄe:\n" " * PÅ™iblížení\n" " * ZaostÅ™ování\n" " * Uživatelské nastavení vyvážení bílé\n" "- Způsob nastavování byl prozkoumán s přístrojem PhotoPC 3000z.\n" "Pokud se váš přístroj chová odliÅ¡nÄ›, prosím podejte o tom zprávu na %s (v " "angliÄtinÄ›).\n" #: camlibs/sierra/sierra.c:2060 msgid "" "Some notes about Olympus cameras (and others?):\n" "(1) Camera Configuration:\n" " A value of 0 will take the default one (auto).\n" "(2) Olympus C-3040Z (and possibly also the C-2040Z\n" " and others) have a USB PC Control mode. To switch\n" " to this mode, turn on the camera, open\n" " the memory card access door and then press and\n" " hold both of the menu and LCD buttons until the\n" " camera control menu appears. Set it to ON.\n" "(3) If you switch the 'LCD mode' to 'Monitor' or\n" " 'Normal', don't forget to switch it back to 'Off'\n" " before disconnecting. Otherwise you cannot use\n" " the camera's buttons. If you end up in this\n" " state, you should reconnect the camera to the\n" " PC and switch LCD to 'Off'." msgstr "" "NÄ›kolik poznámek k přístrojům Olympus (a možná i dalších):\n" "\n" "1) Místo nezadaných hodnot nastavení budou použity ty výchozí (automatika).\n" "\n" "2) Typ C-3040Z (a pravdÄ›podobnÄ› též C-2040Z a další) je pro ovládání z " "poÄítaÄe pÅ™es USB tÅ™eba\n" "nejprve pÅ™epnout do přísluÅ¡ného režimu. Postup je následující:\n" " - zapnout přístroj\n" " - otevřít krytku slotu pro paměťovou kartu\n" " - podržet souÄasnÄ› tlaÄítka „nabídka“ a „displej“, dokud se na displeji " "přístroje neobjeví\n" "nabídka pro zapnutí přísluÅ¡ného režimu.\n" "\n" "3) Pokud bÄ›hem ovládání z poÄítaÄe pÅ™epnete displej do režimu „monitor“ Äi " "„normální“,\n" "nezapomeňte jej pÅ™ed odpojením od poÄítaÄe pÅ™epnout zpÄ›t do režimu " "„vypnuto“. Pokud tak\n" "neuÄiníte, přístroj pak nebude reagovat na stisk žádného z tlaÄítek na nÄ›m. " "Pro nápravu staÄí\n" "pÅ™ipojit jej zpÄ›t k poÄítaÄi a provést zmínÄ›né vypnutí displeje." #: camlibs/sierra/sierra.c:2087 msgid "" "sierra SPARClite library\n" "Scott Fritzinger \n" "Support for sierra-based digital cameras\n" "including Olympus, Nikon, Epson, and Pentax.\n" "\n" "Thanks to Data Engines (www.dataengines.com)\n" "for the use of their Olympus C-3030Z for USB\n" "support implementation." msgstr "" "OvladaÄ pro Äipy sierra SPARClite\n" "Scott Fritzinger \n" "Podpora pro přístroje obsahující Äip Sierra\n" "od Olympus, Nikon, Epson, Pentax, a dalších.\n" "\n" "PodÄ›kování spoleÄnosti Data Engines\n" "(www.dataengines.com) za poskytnutí jejich\n" "přístroje Olympus C-3030Z pro úÄely implementace\n" "podpory USB." #: camlibs/sierra/sierra-desc.c:186 #, c-format msgid "%lld (unknown)" msgstr "%lld (neznámé)" #: camlibs/sipix/blink.c:871 msgid "" "Sipix StyleCam Blink Driver\n" "Vincent Sanders \n" "Marcus Meissner .\n" msgstr "" "OvladaÄ pro přístroj Sipix StyleCam Blink\n" "Vincent Sanders \n" "Marcus Meissner .\n" #: camlibs/sipix/blink.c:993 camlibs/stv0674/stv0674.c:251 msgid "Could not apply USB settings" msgstr "Nastavení USB se nepodaÅ™ilo použít." #: camlibs/sipix/web2.c:626 msgid "" "SiPix Web2\n" "Marcus Meissner \n" "Driver for accessing the SiPix Web2 camera." msgstr "" "OvladaÄ pro zařízení SiPix Web2\n" "Marcus Meissner " #: camlibs/smal/smal.c:165 msgid "" "Smal Ultrapocket\n" "Lee Benfield \n" "Driver for accessing the Smal Ultrapocket camera, and OEM versions (slimshot)" msgstr "" "Smal Ultrapocket\n" "Lee Benfiel \n" "OvladaÄ pro přístroje Smal Ultrapocket a jejich OEM verze (slimshot)." #: camlibs/sonix/library.c:122 #, c-format msgid "" "Sonix camera.\n" "There is %i photo in it.\n" msgid_plural "" "Sonix camera.\n" "There are %i photos in it.\n" msgstr[0] "" "Přístroj Sonix.\n" "Nyní obsahuje %i snímek.\n" msgstr[1] "" "Přístroj Sonix.\n" "Nyní obsahuje %i snímky.\n" msgstr[2] "" "Přístroj Sonix.\n" "Nyní obsahuje %i snímků.\n" #: camlibs/sonix/library.c:133 msgid "" "This driver supports some cameras that use the Sonix sn9c2028 chip.\n" "The following operations are supported:\n" " - thumbnails for a GUI frontend\n" " - full images in PPM format\n" " - delete all images\n" " - delete last image (not all of the Sonix cameras can do this)\n" " - image capture to camera (\t\tditto\t\t)\n" "If present on the camera, video clip frames are downloaded \n" "as consecutive still photos or as AVI files, depending on the model.\n" "Thumbnails for AVIs are still photos made from the first frame.\n" "A single image cannot be deleted unless it is the last one.\n" msgstr "" "Sonix sn9c2025.\n" "Podporovány jsou následující operace:\n" "\n" " - stahování náhledů pro ovládání z grafického uživatelského rozhraní\n" " - stahování snímků ve formátu PPM\n" " - mazání vÅ¡ech snímků naráz\n" " - mazání posledního snímku (ne vÅ¡echny přístroje to umožňují)\n" " - uložení pořízeného snímku na datové úložiÅ¡tÄ› přístroje\n" "\n" "Videozáznamy jsou staženy jako posloupnost snímku Äi ve formátu AVI – dle " "konkrétního typu.\n" "Náhledy videozáznamů v AVI jsou statickými snímky prvního políÄka " "videozáznamu.\n" "Snímky není možné mazat jednotlivÄ› – s vyjímkou posledního uloženého.\n" #: camlibs/sonix/library.c:151 msgid "" "Sonix camera library\n" "Theodore Kilgore \n" msgstr "" "OvladaÄ pro přístroje Sonix\n" "Theodore Kilgore \n" #: camlibs/sonydscf1/sonydscf1.c:583 msgid "" "Sony DSC-F1 Digital Camera Support\n" "M. Adam Kendall \n" "Based on the chotplay CLI interface from\n" "Ken-ichi Hayashi\n" "Gphoto2 port by Bart van Leeuwen " msgstr "" "OvladaÄ pro přístroj Sony DSC-F1\n" "M. Adam Kendall \n" "Vychází z rozhraní pro příkazovou řádku chotplay od Ken-ichi Hayashi\n" "Pro Gphoto2 upravil Bart van Leeuwen " #: camlibs/sonydscf55/camera.c:102 msgid "" "Sony DSC-F55/505 gPhoto library\n" "Supports Sony MSAC-SR1 and Memory Stick used by DCR-PC100\n" "Originally written by Mark Davies \n" "gPhoto2 port by Raymond Penners " msgstr "" "OvladaÄ v gPhoto pro přístroj Sony DSC-F55/505\n" "Podporuje paměťové karty Sony MSAC-SR1 a Memory Stick z DCR-PC100\n" "PůvodnÄ› vytvoÅ™il Mark Davies \n" "pro gPhoto2 upravil Raymond Penners " #: camlibs/soundvision/soundvision.c:333 #, c-format msgid "" "Firmware Revision: %8s\n" "Pictures: %i\n" "Memory Total: %ikB\n" "Memory Free: %ikB\n" msgstr "" "Verze firmwaru: %8s\n" "PoÄet snímků: %i\n" "Velikost datového úložiÅ¡tÄ›: %i kB\n" "Volné místo: %i kB\n" #: camlibs/soundvision/soundvision.c:339 #, c-format msgid "Firmware Revision: %8s" msgstr "Verze firmwaru: %8s" #: camlibs/soundvision/soundvision.c:346 msgid "" "Soundvision Driver\n" "Vince Weaver \n" msgstr "" "OvladaÄ pro Soundvision\n" "Vince Weaver \n" #: camlibs/spca50x/library.c:270 #, c-format msgid "" "FLASH:\n" " Files: %d\n" msgstr "" "Datové úložiÅ¡tÄ›:\n" " Souborů: %d\n" #: camlibs/spca50x/library.c:279 #, c-format msgid "" "SDRAM:\n" " Files: %d\n" " Images: %4d\n" " Movies: %4d\n" "Space used: %8d\n" "Space free: %8d\n" msgstr "" "Datové úložiÅ¡tÄ›:\n" " Souborů: %d\n" " Snímků: %4d\n" " Videonahrávek: %4d\n" "Využitá kapacita: %8d\n" "Volná kapacita: %8d\n" #: camlibs/spca50x/library.c:295 msgid "spca50x library v" msgstr "ovladaÄ spca50x v" #: camlibs/sq905/library.c:133 #, c-format msgid "" "Your USB camera has a S&Q chipset.\n" "The total number of pictures taken is %i\n" "Some of these could be clips containing\n" "several frames\n" msgstr "" "Váš USB přístroj je založen na Äipu S&Q.\n" "Celkové množství pořízených snímků je %i.\n" "NÄ›které z nich mohou být krátkými\n" "videonahrávkami o nÄ›kolika snímcích\n" #: camlibs/sq905/library.c:148 msgid "" "For cameras with S&Q Technologies chip.\n" "Should work with gtkam. Photos will be saved in PPM format.\n" "\n" "All known S&Q cameras have two resolution settings. What\n" "those are, will depend on your particular camera.\n" "A few of these cameras allow deletion of all photos. Most do not.\n" "Uploading of data to the camera is not supported.\n" "The photo compression mode found on many of the S&Q\n" "cameras is supported, to some extent.\n" "If present on the camera, video clips are seen as subfolders.\n" "Gtkam will download these separately. When clips are present\n" "on the camera, there is a little triangle before the name of\n" "the camera. If no folders are listed, click on the little \n" "triangle to make them appear. Click on a folder to enter it\n" "and see the frames in it, or to download them. The frames will\n" "be downloaded as separate photos, with special names which\n" "specify from which clip they came. Thus, you may freely \n" "choose to save clip frames in separate directories. or not.\n" msgstr "" "Pro přístroje s Äipy od S&Q Technologies.\n" "MÄ›lo by fungovat s gtkam. Snímky jsou ukládány ve formátu PPM.\n" "\n" "VÅ¡echny známé přístroje od S&Q umí dvÄ› rozliÅ¡ení. Jaké, to záleží na " "konkrétním přístroji.\n" "Pouze malá Äást z nich umožňuje smazat vÅ¡echny snímky naráz.\n" "Nahrávání dat do přístroje není možné. Režim komprese obrazových dat, které " "mnohé tyto\n" "přístroje umí, je podporován jen ÄásteÄnÄ›.\n" "Videozáznamy jsou v přístroji ukládány jako podsložky, Gtkam je stahuje " "oddÄ›lenÄ›.\n" "Pokud se na přístroji nachází pořízený videozáznam, pÅ™ed názvem přístroje je " "zobrazen malý\n" "trojúhelník. K záznamu se lze dostat kliknutím na složku, Äímž se zobrazí " "jednotlivé snímky a je\n" "možné je stáhnout.\n" "Záznam bude stažen jako jednotlivé snímky s názvy odvozenými od " "videozáznamu, ke kterému\n" "náleží. Díky tomu je není nutné uchovávat v oddÄ›lených složkách.\n" #: camlibs/sq905/library.c:176 msgid "" "sq905 generic driver\n" "Theodore Kilgore \n" msgstr "" "Obecný ovladaÄ pro sq905\n" "Theodore Kilgore \n" #: camlibs/st2205/library.c:83 #, c-format msgid "Your USB picture frame has a ST2205 chipset\n" msgstr "Tento fotorámeÄek obsahuje Äip ST2205.\n" #: camlibs/st2205/library.c:92 msgid "" "ST2205 based picture frames come with a variety of resolutions.\n" "The gphoto driver for these devices allows you to download,\n" "upload and delete pictures from the picture frame." msgstr "" "Displeje fotorámeÄků, obsahujících Äip ST2205 mívají různá rozliÅ¡ení.\n" "OvladaÄ v gPhoto umí z takových zařízení stahovat snímky, odesílat je do " "nich a mazat je v nich." #: camlibs/st2205/library.c:105 msgid "" "ST2205 USB picture frame driver\n" "Hans de Goede \n" "This driver allows you to download, upload and delete pictures\n" "from the picture frame." msgstr "" "OvladaÄ pro USB fotorámeÄky obsahující Äip ST2205\n" "Hans de Goede \n" "OvladaÄ v umí z takových zařízení stahovat snímky, odesílat je do nich a " "mazat je vnich." #: camlibs/st2205/library.c:549 camlibs/st2205/library.c:573 msgid "Orientation" msgstr "NatoÄení" #: camlibs/stv0674/stv0674.c:198 msgid "" "STV0674\n" "Vincent Sanders \n" "Driver for cameras using the STV0674 processor ASIC.\n" "Protocol reverse engineered using SnoopyPro\n" msgstr "" "STV0674\n" "Vincent Sanders \n" "OvladaÄ pro zařízení obsahující Äip STV0674.\n" "KomunikaÄní protokol byl prozkoumán s použitím SnoopyPro.\n" #: camlibs/stv0680/library.c:377 camlibs/stv0680/library.c:411 msgid "Bad exposure (not enough light probably)" msgstr "Å patná expozice (nejspíš nedostateÄné osvÄ›tlení)" #: camlibs/stv0680/library.c:543 msgid "Information on STV0680-based camera:\n" msgstr "Informace o přístroji s Äipem STV0680:\n" #: camlibs/stv0680/library.c:548 #, c-format msgid "Firmware Revision: %d.%d\n" msgstr "Verze firmwaru: %d.%d\n" #: camlibs/stv0680/library.c:552 #, c-format msgid "ASIC Revision: %d.%d\n" msgstr "Verze Äipu: %d.%d\n" #: camlibs/stv0680/library.c:556 #, c-format msgid "Sensor ID: %d.%d\n" msgstr "Identifikátor snímaÄe: %d.%d\n" #: camlibs/stv0680/library.c:562 #, c-format msgid "Camera is configured for lights flickering by %dHz.\n" msgstr "Přístroj je nastaven na svÄ›tla blikající na frekvenci %d Hz.\n" #: camlibs/stv0680/library.c:565 #, c-format msgid "Memory in camera: %d Mbit.\n" msgstr "Kapacita datového úložiÅ¡tÄ› přístroje: %d Mb\n" #: camlibs/stv0680/library.c:569 msgid "Camera supports Thumbnails.\n" msgstr "Přístroj poskytuje náhledové snímky.\n" #: camlibs/stv0680/library.c:571 msgid "Camera supports Video.\n" msgstr "Přístroj umí poÅ™izovat videonahrávky.\n" #: camlibs/stv0680/library.c:574 msgid "Camera pictures are monochrome.\n" msgstr "Přístroj poÅ™izuje monochromatické snímky.\n" #: camlibs/stv0680/library.c:576 msgid "Camera has memory.\n" msgstr "Přístroj má datové úložiÅ¡tÄ›.\n" #: camlibs/stv0680/library.c:578 msgid "Camera supports videoformats: " msgstr "Přístroj umí tyto formáty videonahrávek:" #: camlibs/stv0680/library.c:584 #, c-format msgid "Vendor ID: %02x%02x\n" msgstr "Identifikátor výrobce: %02x%02x\n" #: camlibs/stv0680/library.c:588 #, c-format msgid "Product ID: %02x%02x\n" msgstr "Identifikátor výrobku: %02x%02x\n" #: camlibs/stv0680/library.c:595 #, c-format msgid "Number of Images: %d\n" msgstr "PoÄet uložených snímků: %d\n" #: camlibs/stv0680/library.c:598 #, c-format msgid "Maximum number of Images: %d\n" msgstr "Nanejvýš je možné pořídit snímků: %d\n" #: camlibs/stv0680/library.c:601 #, c-format msgid "Image width: %d\n" msgstr "Šírka snímku v pixelech: %d\n" #: camlibs/stv0680/library.c:604 #, c-format msgid "Image height: %d\n" msgstr "Výška snímku v pixelech: %d\n" #: camlibs/stv0680/library.c:607 #, c-format msgid "Image size: %d\n" msgstr "RozliÅ¡ení snímku: %d\n" #: camlibs/stv0680/library.c:611 #, c-format msgid "Thumbnail width: %d\n" msgstr "Šířka náhledu v pixelech: %d\n" #: camlibs/stv0680/library.c:612 #, c-format msgid "Thumbnail height: %d\n" msgstr "Výška náhledu v pixelech: %d\n" #: camlibs/stv0680/library.c:613 #, c-format msgid "Thumbnail size: %d\n" msgstr "RozliÅ¡ení náhledu: %d\n" #: camlibs/stv0680/stv0680.c:270 msgid "" "STV0680\n" "Adam Harrison \n" "Driver for cameras using the STV0680 processor ASIC.\n" "Protocol reverse engineered using CommLite Beta 5\n" "Carsten Weinholz \n" "Extended for Aiptek PenCam and other STM USB Dual-mode cameras." msgstr "" "STV0680\n" "Adam Harrison \n" "OvladaÄ pro přístroje s Äipem STV0680.\n" "Protokol byl prozkoumán s použitím CommLite Beta 5.\n" "Carsten Weinholz \n" "Rozšířeno pro Aiptek PenCam a další USB přístroje STM s duálním režimem." #: camlibs/sx330z/library.c:139 #, c-format msgid "Getting information on %i files..." msgstr "Probíhá získávání informací o %i souborech…" #: camlibs/sx330z/library.c:242 msgid "" "(Traveler) SX330z Library (And other Aldi-cams).\n" "Even other Vendors like Jenoptik, Skanhex, Maginon should work.\n" "Please send bugreports and comments.\n" "Dominik Kuhlen \n" msgstr "" "OvladaÄ pro (Traveler) SX330z (a další přístroje Aldi).\n" "Přístroje od firem Jenoptik, SkanHex a Maginon by mÄ›ly fungovat také.\n" "Prosím posílejte hlášení o chybách a podnÄ›ty (v angliÄtinÄ›).\n" "Dominik Kuhlen \n" #: camlibs/sx330z/library.c:285 msgid "sx330z is USB only" msgstr "sx330z umí pouze rozhraní USB" #: camlibs/topfield/puppy.c:553 msgid "Driver Settings" msgstr "Nastavení ovladaÄe" #: camlibs/topfield/puppy.c:557 msgid "Turbo mode" msgstr "Turbo režim" #: camlibs/topfield/puppy.c:612 msgid "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "Library to download / upload files from a Topfield PVR.\n" "Ported from puppy (c) Peter Urbanec \n" msgstr "" "Topfield TF5000PVR\n" "Marcus Meissner \n" "OvladaÄ pro stahování a nahrávání souborů pro videorekordér Topfield.\n" "Z puppy © pÅ™edÄ›lal Peter Urbanec \n" #: camlibs/topfield/puppy.c:659 #, c-format msgid "Downloading %s..." msgstr "Probíhá stahování %s…" #: camlibs/toshiba/pdrm11/library.c:120 msgid "" "Toshiba\n" "David Hogue \n" "Toshiba pdr-m11 driver.\n" msgstr "" "Toshiba\n" "David Hogue \n" "OvladaÄ pro Toshiba pdr-m11.\n" #: libgphoto2/gphoto2-abilities-list.c:189 msgid "Internal error looking for camlibs. (path names too long?)" msgstr "" "Vyskytla se vnitÅ™ní chyba pÅ™i hledání ovladaÄů pro zařízení.\n" "Nejsou (souborové) cesty příliÅ¡ dlouhé?" #: libgphoto2/gphoto2-abilities-list.c:202 #, c-format msgid "Loading camera drivers from '%s'..." msgstr "Probíhá nahrávání ovladaÄů přístrojů z „%s“…" #: libgphoto2/gphoto2-camera.c:77 #, c-format msgid "An error occurred in the io-library ('%s'): %s" msgstr "Vyskytla se chyba ve vstupnÄ›/výstupní knihovnÄ› („%s“): %s" #: libgphoto2/gphoto2-camera.c:729 msgid "Could not detect any camera" msgstr "Nebyl nalezen žádný přístroj" #: libgphoto2/gphoto2-camera.c:750 #, c-format msgid "Could not detect any camera at port %s" msgstr "Na portu %s nebyl nalezen žádný přístroj" #: libgphoto2/gphoto2-camera.c:774 msgid "You have to set the port prior to initialization of the camera." msgstr "" "Nejdříve je tÅ™eba nastavit port, až poté je možné zahájit komunikaci s " "přístrojem." #: libgphoto2/gphoto2-camera.c:798 #, c-format msgid "Could not load required camera driver '%s' (%s)." msgstr "Pro přístroj nelze naÄíst potÅ™ebný ovladaÄ â€ž%s“ (%s)." #: libgphoto2/gphoto2-camera.c:811 #, c-format msgid "Camera driver '%s' is missing the 'camera_init' function." msgstr "OvladaÄ pro přístroj „%s“ postrádá funkci „camera_init“." #: libgphoto2/gphoto2-camera.c:864 msgid "This camera does not provide any configuration options." msgstr "Tento přístroj neposkytuje poÄítaÄi přístup ke svým nastavením." #: libgphoto2/gphoto2-camera.c:897 msgid "This camera does not support setting configuration options." msgstr "Nastavení tohoto přístroje nelze mÄ›nit z poÄítaÄe." #: libgphoto2/gphoto2-camera.c:929 msgid "This camera does not support summaries." msgstr "Pro tento přístroj nejsou k dispozici souhrnné informace." #: libgphoto2/gphoto2-camera.c:960 msgid "This camera does not provide a manual." msgstr "" "Pro tento přístroj není k dispozici popis podrobností o jeho používání z " "poÄítaÄe." #: libgphoto2/gphoto2-camera.c:992 msgid "This camera does not provide information about the driver." msgstr "K ovladaÄi pro tento přístroj nejsou k dispozici žádné informace." #: libgphoto2/gphoto2-camera.c:1026 msgid "This camera can not capture." msgstr "Tento přístroj neumí poÅ™izovat snímky (pÅ™i ovládání z poÄítaÄe)." #: libgphoto2/gphoto2-camera.c:1056 msgid "This camera can not trigger capture." msgstr "Tento přístroj neumí spouÅ¡tÄ›né pořízení snímku." #: libgphoto2/gphoto2-camera.c:1089 msgid "This camera can not capture previews." msgstr "Tento přístroj neumí poÅ™izovat náhledy." #: libgphoto2/gphoto2-filesys.c:301 #, c-format msgid "The path '%s' is not absolute." msgstr "(souborová) cesta „%s“ není úplná (absolutní)." #: libgphoto2/gphoto2-filesys.c:1122 #, c-format msgid "" "You have been trying to delete '%s' from folder '%s', but the filesystem " "does not support deletion of files." msgstr "" "Má být vymazáno „%s“ ze složky „%s“, ale tento souborový systém mazání " "souborů neumožňuje." #: libgphoto2/gphoto2-filesys.c:1259 #, c-format msgid "" "There are still subfolders in folder '%s/%s' that you are trying to remove." msgstr "" "Složku „%s/%s“ nelze smazat, neb není prázdná (vymažte z ní podsložky)." #: libgphoto2/gphoto2-filesys.c:1264 #, c-format msgid "There are still files in folder '%s/%s' that you are trying to remove." msgstr "Složku „%s/%s“ nelze smazat, neb není prázdná (vymažte z ní soubory)." #: libgphoto2/gphoto2-filesys.c:1303 msgid "The filesystem does not support upload of files." msgstr "Tento souborový systém neumožňuje nahrávat soubory." #: libgphoto2/gphoto2-filesys.c:1359 #, c-format msgid "" "Folder '%s' only contains %i files, but you requested a file with number %i." msgstr "" "Složka „%s“ obsahuje pouze %i souborů, což je ménÄ›, než poÅ™adové Äíslo %i " "souboru, který je vyžadován." #: libgphoto2/gphoto2-filesys.c:1407 #, c-format msgid "File '%s' could not be found in folder '%s'." msgstr "Soubor „%s“ nebyl ve složce „%s“ nalezen." #: libgphoto2/gphoto2-filesys.c:1524 #, c-format msgid "Could not find file '%s'." msgstr "Soubor „%s“ nelze nalézt." #: libgphoto2/gphoto2-filesys.c:1548 msgid "The filesystem doesn't support getting files" msgstr "Souborový systém neposkytuje seznam přítomných souborů" #: libgphoto2/gphoto2-filesys.c:1582 libgphoto2/gphoto2-filesys.c:2111 #: libgphoto2/gphoto2-filesys.c:2267 #, c-format msgid "Unknown file type %i." msgstr "Neznámý typ souboru %i." #: libgphoto2/gphoto2-filesys.c:1871 msgid "The filesystem doesn't support getting file information" msgstr "Tento souborový systém neposkytuje informace o souborech" #: libgphoto2/gphoto2-filesys.c:2376 msgid "The filesystem doesn't support setting file information" msgstr "Tento souborový systém neumožňuje nastavovat informace o souboru" #: libgphoto2/gphoto2-filesys.c:2398 msgid "Read-only file attributes like width and height can not be changed." msgstr "" "Údaje o datech, jako napÅ™. vodorovné a svislé rozliÅ¡ení slouží \n" "pouze pro informaci a proto je nelze mÄ›nit." #: libgphoto2/gphoto2-filesys.c:2455 msgid "The filesystem doesn't support getting storage information" msgstr "Tento souborový systém o sobÄ› neposkytuje žádné informace" #: libgphoto2/gphoto2-result.c:47 msgid "Corrupted data" msgstr "Data jsou poÅ¡kozená" #: libgphoto2/gphoto2-result.c:48 msgid "File exists" msgstr "Soubor existuje" #: libgphoto2/gphoto2-result.c:49 msgid "Unknown model" msgstr "Neznámý typ přístroje" #: libgphoto2/gphoto2-result.c:50 msgid "Directory not found" msgstr "Složka nebyla nenalezena" #: libgphoto2/gphoto2-result.c:51 msgid "File not found" msgstr "Soubor nebyl nenalezen" #: libgphoto2/gphoto2-result.c:52 msgid "Directory exists" msgstr "Složka existuje" #: libgphoto2/gphoto2-result.c:53 msgid "I/O in progress" msgstr "Probíhá vstupnÄ›/výstupní operace" #: libgphoto2/gphoto2-result.c:54 msgid "Path not absolute" msgstr "Souborová cesta není absolutní" #: libgphoto2/gphoto2-result.c:55 msgid "Operation cancelled" msgstr "Operace byla zruÅ¡ena" #: libgphoto2/gphoto2-result.c:56 msgid "Camera could not complete operation" msgstr "Přístroj nebyl schopen dokonÄit operaci" #: libgphoto2/gphoto2-result.c:57 msgid "OS error in camera communication" msgstr "Nastala chyba pÅ™i komunikaci s přístrojem" #: libgphoto2/gphoto2-result.c:58 msgid "Not enough free space" msgstr "Na datovém úložiÅ¡ti není dostatek volného místa" #: libgphoto2/gphoto2-result.c:83 msgid "Unknown camera library error" msgstr "Neznámá chyba ovladaÄe pro přístroj" #: libgphoto2/gphoto2-result.c:89 msgid "Unknown error" msgstr "Neznámá chyba" #~ msgid "Unknown (some kind of error)" #~ msgstr "Neznámá odpovÄ›Ä (chyba přístroje)" #~ msgid "CHDK Reboot" #~ msgstr "Restart rozÅ¡iÅ™ujícího softwaru (CHDK)" #~ msgid "PTP Error: bad parameter" #~ msgstr "Chyba protokolu pro pÅ™enos obrázků (PTP): Å¡patný parametr" #~ msgid "Canon Capture failed: 0x%04x" #~ msgstr "Canon – pořízení snímku se nezdaÅ™ilo: 0x%04x" #~ msgid "No event received, error %x." #~ msgstr "Nebyla zaznamenána žádná událost, chyba %x." #~ msgid "Canon EOS Trigger Capture failed: 0x%x (result 0x%x)" #~ msgstr "" #~ "Canon, Å™ada EOS – pořízení snímku vyvolané pohybem v zábÄ›ru se nezdaÅ™ilo: " #~ "0x%x (výsledek 0x%x)" #~ msgid "Canon EOS Trigger Capture failed to release: Perhaps no focus?" #~ msgstr "" #~ "Canon, Å™ada EOS – pořízení snímku vyvolané pohybem v zábÄ›ru se nezdaÅ™ilo: " #~ "Nejspíš není zaostÅ™eno?" #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Perhaps no more memory on " #~ "card?" #~ msgstr "" #~ "Canon, Å™ada EOS – pořízení snímku vyvolané pohybem v zábÄ›ru se nezdaÅ™ilo: " #~ "Nejspíš není volné místo na paměťové kartÄ›?" #~ msgid "" #~ "Canon EOS Trigger Capture failed to release: Unknown error %d, please " #~ "report." #~ msgstr "" #~ "Canon, Å™ada EOS – pořízení snímku vyvolané pohybem v zábÄ›ru se nezdaÅ™ilo: " #~ "Neznámá chyba %d, prosím nahlaste ji." #~ msgid "PTP: Undefined Error" #~ msgstr "PTP: Neznámá chyba" #~ msgid "PTP: OK!" #~ msgstr "PTP: V pořádku!" #~ msgid "PTP: General Error" #~ msgstr "PTP: Obecná chyba" #~ msgid "PTP: Session Not Open" #~ msgstr "PTP: Relace není otevÅ™ena" #~ msgid "PTP: Invalid Transaction ID" #~ msgstr "PTP: Neplatný identifikátor transakce" #~ msgid "PTP: Operation Not Supported" #~ msgstr "PTP: Operace není podporována" #~ msgid "PTP: Parameter Not Supported" #~ msgstr "PTP: Parametr není podporován" #~ msgid "PTP: Incomplete Transfer" #~ msgstr "PTP: PÅ™enos nebyl úplný" #~ msgid "PTP: Invalid Storage ID" #~ msgstr "PTP: Neplatný identifikátor úložiÅ¡tÄ› dat" #~ msgid "PTP: Invalid Object Handle" #~ msgstr "PTP: Neplatná manipulace s objektem" #~ msgid "PTP: Device Prop Not Supported" #~ msgstr "PTP: Vlastnost zařízení není podporována" #~ msgid "PTP: Invalid Object Format Code" #~ msgstr "PTP: Neplatné znÄ›ní formátu objektu" #~ msgid "PTP: Store Full" #~ msgstr "PTP: Datové úložiÅ¡tÄ› je zaplnÄ›né" #~ msgid "PTP: Object Write Protected" #~ msgstr "PTP: Objekt je chránÄ›n proti pÅ™episu" #~ msgid "PTP: Store Read Only" #~ msgstr "PTP: Z tohoto datového úložiÅ¡tÄ› je možné pouze Äíst" #~ msgid "PTP: Access Denied" #~ msgstr "PTP: Přístup odepÅ™en" #~ msgid "PTP: No Thumbnail Present" #~ msgstr "PTP: Náhled snímku není přítomen" #~ msgid "PTP: Self Test Failed" #~ msgstr "PTP: Samotestování nedopadlo úspěšnÄ›" #~ msgid "PTP: Partial Deletion" #~ msgstr "PTP: Mazání nebylo dokonÄeno" #~ msgid "PTP: Store Not Available" #~ msgstr "PTP: Datové úložiÅ¡tÄ› není k dispozici" #~ msgid "PTP: Specification By Format Unsupported" #~ msgstr "PTP: UrÄení dle formátu není podporováno" #~ msgid "PTP: No Valid Object Info" #~ msgstr "PTP: Neexistuje platná informace o objektu" #~ msgid "PTP: Invalid Code Format" #~ msgstr "PTP: Neplatný formát kódu" #~ msgid "PTP: Unknown Vendor Code" #~ msgstr "PTP: Neznámý kód výrobce" #~ msgid "PTP: Capture Already Terminated" #~ msgstr "PTP: Zachycování snímku již bylo pÅ™eruÅ¡eno" #~ msgid "PTP: Device Busy" #~ msgstr "PTP: Zařízení je zaneprázdnÄ›no" #~ msgid "PTP: Invalid Parent Object" #~ msgstr "PTP: Neplatný nadÅ™azený objekt" #~ msgid "PTP: Invalid Device Prop Format" #~ msgstr "PTP: Neplatný formát vlastnosti přístroje" #~ msgid "PTP: Invalid Device Prop Value" #~ msgstr "PTP: Neplatná hodnota vlastnosti přístroje" #~ msgid "PTP: Invalid Parameter" #~ msgstr "PTP: Neplatný parametr" #~ msgid "PTP: Session Already Opened" #~ msgstr "PTP: Relace je již otevÅ™ena" #~ msgid "PTP: Transaction Canceled" #~ msgstr "PTP: Transakce byla zruÅ¡ena" #~ msgid "PTP: Specification Of Destination Unsupported" #~ msgstr "PTP: UrÄení cíle není podporováno" #~ msgid "PTP: EK Filename Required" #~ msgstr "PTP (s rozšířením Kodak): Je nutné urÄit název souboru" #~ msgid "PTP: EK Filename Conflicts" #~ msgstr "PTP (s rozšířením Kodak): Již existuje soubor stejného názvu" #~ msgid "PTP: EK Filename Invalid" #~ msgstr "PTP (s rozšířením Kodak): Název souboru je neplatný" #~ msgid "PTP: I/O error" #~ msgstr "PTP: Chyba vstupu/výstupu" #~ msgid "PTP: Error: bad parameter" #~ msgstr "PTP: Chyba: Å¡patný parametr" #~ msgid "PTP: Protocol error, data expected" #~ msgstr "PTP: Chyba protokolu, byla oÄekávána data" #~ msgid "PTP: Protocol error, response expected" #~ msgstr "PTP: Chyba protokolu, byla oÄekávána odezva" #~ msgid "ISO Auto Time" #~ msgstr "Automatický Äas ISO" #~ msgid "Unknown (%04x)" #~ msgstr "Neznámé (%04x)" #~ msgid "Could not find any driver for '%s'" #~ msgstr "Pro „%s“ není k dispozici ovladaÄ" #~ msgid "No additional information available." #~ msgstr "Nejsou k dispozici žádné další doplňující informace." #~ msgid "Deleting '%s' from folder '%s'..." #~ msgstr "Probíhá mazání „%s“ ze složky „%s“…" #~ msgid "Downloading '%s' from folder '%s'..." #~ msgstr "Probíhá stahování „%s“ ze složky „%s“…" libgphoto2-2.5.9/libgphoto2_port/0000755000175000001440000000000012623156266013723 500000000000000libgphoto2-2.5.9/libgphoto2_port/configure0000755000175000001440000221604112615454333015555 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for libgphoto2 port access library 0.12.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 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=: # Pre-4.2 versions of Zsh do 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_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } 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.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= 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 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do 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_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: gphoto-devel@lists.sourceforge.net about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_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 || $as_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" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error 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 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # 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 as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # 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" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # 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 } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac 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 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then 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 -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' 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='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # 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'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/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=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libgphoto2 port access library' PACKAGE_TARNAME='libgphoto2_port' PACKAGE_VERSION='0.12.0' PACKAGE_STRING='libgphoto2 port access library 0.12.0' PACKAGE_BUGREPORT='gphoto-devel@lists.sourceforge.net' PACKAGE_URL='' ac_unique_file="libgphoto2_port/gphoto2-port-version.c" # 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='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS AM_LDFLAGS AM_CXXFLAGS AM_CFLAGS AM_CPPFLAGS apidocdir ENABLE_GTK_DOC_FALSE ENABLE_GTK_DOC_TRUE GTKDOC pkgconfigdir iolibdir IOLIB_LTLIST IOLIB_LIST HAVE_UDEV_FALSE HAVE_UDEV_TRUE udevscriptdir HAVE_LIBUSB_FALSE HAVE_LIBUSB_TRUE REQUIREMENTS_FOR_LIBUSB LIBUSB_CONFIG_PROG LIBUSB_LIBS LIBUSB_CFLAGS HAVE_LIBUSB1_FALSE HAVE_LIBUSB1_TRUE REQUIREMENTS_FOR_LIBUSB1 LIBUSB1_CONFIG_PROG PKG_CONFIG_LIBDIR LIBUSB1_LIBS LIBUSB1_CFLAGS PKG_CONFIG_PATH PKG_CONFIG SERIAL_LIBS VERSIONMAPLDFLAGS POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV MSGMERGE XGETTEXT GMSGFMT MSGFMT USE_NLS MKINSTALLDIRS GETTEXT_PACKAGE MAIL_GPHOTO_TRANSLATION MAIL_GPHOTO_USER MAIL_GPHOTO_DEVEL URL_USB_MASSSTORAGE URL_JPHOTO_HOME URL_DIGICAM_LIST URL_GPHOTO_PROJECT URL_GPHOTO_HOME LIBLTDL LTDLINCL LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL OBJDUMP DLLTOOL AS host_os host_vendor host_cpu host build_os build_vendor build_cpu build ac_ct_AR AR CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC LIBGPHOTO2_PORT_VERSION_INFO LIBGPHOTO2_PORT_CURRENT_MIN LIBGPHOTO2_PORT_CURRENT LIBGPHOTO2_PORT_REVISION LIBGPHOTO2_PORT_AGE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_static enable_shared with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_nls enable_rpath with_libiconv_prefix with_libintl_prefix enable_serial enable_ttylock enable_lockdev with_libusb_1_0 with_libusb enable_disk enable_ptpip enable_debug with_doc_dir enable_docs with_html_dir ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP LT_SYS_LIBRARY_PATH LTDLINCL LIBLTDL PKG_CONFIG PKG_CONFIG_PATH LIBUSB1_CFLAGS LIBUSB1_LIBS PKG_CONFIG_LIBDIR LIBUSB_CFLAGS LIBUSB_LIBS udevscriptdir' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # 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= ;; *) 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_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=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_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=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 ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_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'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. 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 # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" 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 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 .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # 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 -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | 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 .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" 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 libgphoto2 port access library 0.12.0 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/libgphoto2_port] --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 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 libgphoto2 port access library 0.12.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --disable-serial do not compile in SERIAL support --disable-ttylock do not use ttylock library --disable-lockdev do not use lockdev library --disable-disk disable the 'disk' port driver --disable-ptpip disable the 'ptpip' port driver for TCP/IP connected PTP cameras --disable-debug do not include debugging code --enable-docs Use gtk-doc to build documentation [default=no] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-libusb-1.0=PREFIX where to find libusb-1.0, "no" or "auto" --with-libusb=PREFIX where to find libusb, "no" or "auto" --with-doc-dir=PATH Where to install docs [default=autodetect] --with-html-dir=PATH Where to install html docs [default=autodetect] 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 (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor LT_SYS_LIBRARY_PATH User-defined run-time library search path. LTDLINCL CFLAGS for compiling with libltdl LIBLTDL LIBS to add for linking against libltdl PKG_CONFIG pkg-config package config utility PKG_CONFIG_PATH directory where pkg-config looks for *.pc files LIBUSB1_CFLAGS CFLAGS for compiling with libusb-1.0 LIBUSB1_LIBS LIBS to add for linking against libusb-1.0 PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path LIBUSB_CFLAGS CFLAGS for compiling with libusb LIBUSB_LIBS LIBS to add for linking against libusb udevscriptdir Directory where udev scripts like check-ptp-camera will be installed 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" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && 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=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_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 $as_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 libgphoto2 port access library configure 0.12.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 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 ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* 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_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------------------------- ## ## Report this to gphoto-devel@lists.sourceforge.net ## ## ------------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel 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 libgphoto2 port access library $as_me 0.12.0, which was generated by GNU Autoconf 2.69. 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=. $as_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=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append 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 as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset 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 $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" 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_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; 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 $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_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'; as_fn_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 $as_echo "/* confdefs.h */" > 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 cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } 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. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_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,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_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 # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_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. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## 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 ac_config_headers="$ac_config_headers config.h" ac_aux_dir= for ac_dir in auto-aux "$srcdir"/auto-aux; 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 as_fn_error $? "cannot find install-sh, install.sh, or shtool in auto-aux \"$srcdir\"/auto-aux" "$LINENO" 5 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. am__api_version='1.15' # 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. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$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 rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$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' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # 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 ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$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 test -d ./--version && rmdir ./--version 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. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 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='libgphoto2_port' VERSION='0.12.0' 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"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Use the silent-rules feature when possible. # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' LIBGPHOTO2_PORT_AGE=0 LIBGPHOTO2_PORT_REVISION=0 LIBGPHOTO2_PORT_CURRENT=12 LIBGPHOTO2_PORT_CURRENT_MIN=`expr $LIBGPHOTO2_PORT_CURRENT - $LIBGPHOTO2_PORT_AGE` LIBGPHOTO2_PORT_VERSION_INFO=$LIBGPHOTO2_PORT_CURRENT:$LIBGPHOTO2_PORT_REVISION:$LIBGPHOTO2_PORT_AGE 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$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" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM 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. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 | *.dSYM | *.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 if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* 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" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg 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) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : 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 ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_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='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&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". rm -rf conftest.dir 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 am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac 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 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; 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 ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj 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 $am__obj 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$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 ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } 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 if test -n "$ac_tool_prefix"; then for ac_prog in ar lib "link -lib" 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} { $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 $as_echo_n "checking the archiver ($AR) interface... " >&6; } if ${am_cv_ar_interface+:} false; then : $as_echo_n "(cached) " >&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 am_cv_ar_interface=ar cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int some_variable = 0; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a fi rm -f core 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' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 $as_echo "$am_cv_ar_interface" >&6; } case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) as_fn_error $? "could not determine $AR interface" "$LINENO" 5 ;; esac SED=${SED-sed} # 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=no fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&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 && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&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` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; 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 enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump enable_dlopen=yes case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Backslashify 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' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&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" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then 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" as_fn_executable_p "$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 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_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 as_fn_arith $ac_count + 1 && ac_count=$as_val 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 if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then 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" as_fn_executable_p "$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 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_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 as_fn_arith $ac_count + 1 && ac_count=$as_val 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 if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then 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" as_fn_executable_p "$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 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_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 as_fn_arith $ac_count + 1 && ac_count=$as_val 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 if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then 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" as_fn_executable_p "$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 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_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 as_fn_arith $ac_count + 1 && ac_count=$as_val 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 if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$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 no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&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 yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&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 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&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 # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&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* | cegcc*) # 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; ;; mint*) # On MiNT this can take a long time and run out of memory. 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; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # 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 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; 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" && \ test undefined != "$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`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$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 cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&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 # that 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 # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; 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 ;; haiku*) 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])(-bit)?( [LM]SB)? 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 glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; 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 ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi 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}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # 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. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&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* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; 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 if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= 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"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$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"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/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, # D for any global variable and I for any imported 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};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,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 lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # 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\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$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=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && 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 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #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. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$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_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_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 yes = "$pipe_works"; 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 $as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_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 dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || 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 what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; 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* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; 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" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; 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" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) 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 if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # 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_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&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 there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&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 yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; 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" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h 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=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options # 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 --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else pic_mode=default fi # 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 shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$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 set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=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 func_cc_basename $compiler cc_basename=$func_cc_basename_result # 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "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 yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&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" ## exclude from sc_useless_quotes_in_assignment # 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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; 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= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; 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* | cegcc*) # 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' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +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 case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # 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' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; 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 | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # 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* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # 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='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; 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* | sunf77* | sunf90* | sunf95*) 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 that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&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" ## exclude from sc_useless_quotes_in_assignment # 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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; 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\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&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 "$_lt_linker_boilerplate" | $SED '/^$/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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&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:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&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_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* | cegcc*) # 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 yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; 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 | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [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 ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, 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 install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _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* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' 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/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' 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, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; 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 ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; 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 | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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 no = "$tmp_diet" then tmp_addflag=' $pic_flag' 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; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # 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; func_echo_all \"$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' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; 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; func_echo_all \"$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 yes = "$supports_anon_versioning"; 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 tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # 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='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; 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 $linker_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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $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 cannot *** 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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $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 no = "$ld_shlibs"; 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 yes = "$GCC" && 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 ia64 = "$host_cpu"; 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 GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX 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") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; 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 yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; 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. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_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 "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ 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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_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 "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ 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' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' 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* | cegcc*) # 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. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # 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 $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper 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 `func_echo_all "$deplibs" | $SED '\''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' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all 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 ;; # 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 $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$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 "x$output_objdir/$soname" = "x$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 yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $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 no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$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 yes,no = "$GCC,$with_gnu_ld"; 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 $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $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' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" 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 "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $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 ;; esac fi if test no = "$with_gnu_ld"; 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 yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $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. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -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 ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; 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* | bitrig*) 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__`"; 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 archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; 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" && func_echo_all "$wl-set_version $wl$verstring"` $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" && func_echo_all "-set_version $verstring"` -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 yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$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='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-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; 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 "-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 archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $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 $pic_flag $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 yes = "$GCC"; 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 sequent = "$host_vendor"; 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 yes = "$GCC"; 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 CANNOT 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 yes = "$GCC"; 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 sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test no = "$ld_shlibs" && 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 yes,yes = "$GCC,$enable_shared"; 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. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 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\":${as_lineno-$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=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # 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 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # 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` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac 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" elif test -n "$lt_multi_os_dir"; then 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; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` 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 # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; 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 # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # 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' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # 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' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac 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=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $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 # correct to gnu/linux during the next big refactor 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* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc 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="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; 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 dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. 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 # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # 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' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # 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 # correct to gnu/linux during the next big refactor 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 ;; 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[23].*) 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$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' 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 ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" 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=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' 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 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; 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' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor 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 yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor 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 ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor 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 if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # 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 # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) 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;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 # correct to gnu/linux during the next big refactor 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* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi 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 shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec 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' ;; 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 # correct to gnu/linux during the next big refactor 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 yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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=sco 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 yes = "$with_gnu_ld"; 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_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 # correct to gnu/linux during the next big refactor 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; 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* | cegcc*) 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; 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 ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && 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" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; 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 $LINENO "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 /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 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; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; 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 $LINENO "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 /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 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; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$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= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&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" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "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" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$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: if test "x${LTDLINCL}${LIBLTDL}" = "x"; then ac_fn_c_check_header_mongrel "$LINENO" "ltdl.h" "ac_cv_header_ltdl_h" "$ac_includes_default" if test "x$ac_cv_header_ltdl_h" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lt_dlinit in -lltdl" >&5 $as_echo_n "checking for lt_dlinit in -lltdl... " >&6; } if ${ac_cv_lib_ltdl_lt_dlinit+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lltdl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 lt_dlinit (); int main () { return lt_dlinit (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ltdl_lt_dlinit=yes else ac_cv_lib_ltdl_lt_dlinit=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ltdl_lt_dlinit" >&5 $as_echo "$ac_cv_lib_ltdl_lt_dlinit" >&6; } if test "x$ac_cv_lib_ltdl_lt_dlinit" = xyes; then : LTDLINCL="" LIBLTDL="-lltdl" $as_echo "#define HAVE_LTDL 1" >>confdefs.h else as_fn_error $? " $PACKAGE requires the ltdl library, included with libtool Please make sure that the proper development package is installed (libltdl-dev, libtool-ltdl-devel, etc.) " "$LINENO" 5 fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libltdl flags" >&5 $as_echo_n "checking for libltdl flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: set explicitly: ${LTDLINCL} ${LIBLTDL}" >&5 $as_echo "set explicitly: ${LTDLINCL} ${LIBLTDL}" >&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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking that we can compile and link with libltdl" >&5 $as_echo_n "checking that we can compile and link with libltdl... " >&6; } saved_CPPFLAGS="$CPPFLAGS" saved_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $LTDLINCL" LIBS="$LIBS $LIBLTDL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* for NULL */ #include /* for lt_* */ int main () { int ret = lt_dlforeachfile("/usr/lib:/usr/local/lib", NULL, NULL); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "cannot compile and link against libltdl ${PACKAGE_TARNAME} requires libltdl (the libtool dl* library), but cannot compile and link against it. Aborting. " "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CPPFLAGS="$saved_CPPFLAGS" LIBS="$saved_LIBS" 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 # report on compiler/libtool setup # make sure "cd" doesn't print anything on stdout if test x"${CDPATH+set}" = xset then CDPATH=: export CDPATH fi # make sure $() command substitution works { $as_echo "$as_me:${as_lineno-$LINENO}: checking for POSIX sh \$() command substitution" >&5 $as_echo_n "checking for POSIX sh \$() command substitution... " >&6; } if test "x$(pwd)" = "x`pwd`" && test "y$(echo "foobar")" = "y`echo foobar`" # '''' then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } uname=`uname 2>&1` # '' uname_a=`uname -a 2>&1` # '' as_fn_error $? " * POSIX sh \$() command substition does not work with this shell. * * You are running a very rare species of shell. Please report this * sighting to <${PACKAGE_BUGREPORT}>: * SHELL=${SHELL} * uname=${uname} * uname-a=${uname_a} * Please also include your OS and version. * * Run this configure script using a better (i.e. POSIX compliant) shell. " "$LINENO" 5 fi gp_config_len="30" gp_config_empty="" gp_config_len3="$(expr "$gp_config_len" - 3)" n="$gp_config_len" while test "$n" -gt 0; do gp_config_empty="${gp_config_empty} " n="$(expr "$n" - 1)" done gp_config_msg=" Configuration (${PACKAGE_TARNAME} ${PACKAGE_VERSION}): " gp_config_msg="${gp_config_msg} Build " gp_config_msg_len="$(expr "Source directory" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Source directory" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Source directory:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${srcdir} " gp_config_msg_len="$(expr "Compiler" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Compiler" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Compiler:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${CC} " gp_config_msg_len="$(expr "libltdl includes" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libltdl includes" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libltdl includes:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} $LTDLINCL " gp_config_msg_len="$(expr "libltdl library" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libltdl library" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libltdl library:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} $LIBLTDL " cat >>confdefs.h <<_ACEOF #define HAVE_CC "$CC" _ACEOF AM_CPPFLAGS="" # ---------------------------------------------------------------------- # References to external resources (web sites, mailing listes, etc.) # ---------------------------------------------------------------------- URL_GPHOTO_HOME="http://www.gphoto.org/" cat >>confdefs.h <<_ACEOF #define URL_GPHOTO_HOME "http://www.gphoto.org/" _ACEOF URL_GPHOTO_PROJECT="http://sourceforge.net/projects/gphoto" cat >>confdefs.h <<_ACEOF #define URL_GPHOTO_PROJECT "http://sourceforge.net/projects/gphoto" _ACEOF URL_DIGICAM_LIST="http://www.teaser.fr/~hfiguiere/linux/digicam.html" cat >>confdefs.h <<_ACEOF #define URL_DIGICAM_LIST "http://www.teaser.fr/~hfiguiere/linux/digicam.html" _ACEOF URL_JPHOTO_HOME="http://jphoto.sourceforge.net/" cat >>confdefs.h <<_ACEOF #define URL_JPHOTO_HOME "http://jphoto.sourceforge.net/" _ACEOF URL_USB_MASSSTORAGE="http://www.linux-usb.org/USB-guide/x498.html" cat >>confdefs.h <<_ACEOF #define URL_USB_MASSSTORAGE "http://www.linux-usb.org/USB-guide/x498.html" _ACEOF MAIL_GPHOTO_DEVEL="" cat >>confdefs.h <<_ACEOF #define MAIL_GPHOTO_DEVEL "" _ACEOF MAIL_GPHOTO_USER="" cat >>confdefs.h <<_ACEOF #define MAIL_GPHOTO_USER "" _ACEOF MAIL_GPHOTO_TRANSLATION="" cat >>confdefs.h <<_ACEOF #define MAIL_GPHOTO_TRANSLATION "" _ACEOF GETTEXT_PACKAGE="${PACKAGE}-${LIBGPHOTO2_PORT_CURRENT_MIN}" cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF sed_cmds="s|^DOMAIN.*|DOMAIN = ${GETTEXT_PACKAGE}|" sed_cmds="${sed_cmds};s|^COPYRIGHT_HOLDER.*|COPYRIGHT_HOLDER = Lutz Mueller and others|" if test -n "$PACKAGE_BUGREPORT"; then sed_mb="${PACKAGE_BUGREPORT}" else as_fn_error $? " *** Your configure.{ac,in} is wrong. *** Either define PACKAGE_BUGREPORT (by using the 4-parameter AC INIT syntax) *** or give GP_GETTEXT_HACK the third parameter. *** " "$LINENO" 5 fi sed_cmds="${sed_cmds};s|^MSGID_BUGS_ADDRESS.*|MSGID_BUGS_ADDRESS = ${sed_mb}|" # Not so sure whether this hack is all *that* evil... { $as_echo "$as_me:${as_lineno-$LINENO}: checking for po/Makevars requiring hack" >&5 $as_echo_n "checking for po/Makevars requiring hack... " >&6; } if test -f "${srcdir}/po/Makevars.template"; then sed "$sed_cmds" < "${srcdir}/po/Makevars.template" > "${srcdir}/po/Makevars" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, done." >&5 $as_echo "yes, done." >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ALL_LINGUAS="cs da de es eu fi fr it ja nl pl pt_BR ru sk sr sv uk vi zh_CN zh_TW" MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$GMSGFMT" != ":"; then if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 $as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } GMSGFMT=":" fi fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi rm -f messages.po fi ac_config_commands="$ac_config_commands default-1" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # 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 # Prepare PATH_SEPARATOR. # 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 ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 $as_echo_n "checking for ld used by GCC... " >&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. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi LIBICONV= LTLIBICONV= INCICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } LIBINTL= LTLIBINTL= POSUB= if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if ${gt_cv_func_gnugettext1_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_gnugettext1_libc=yes else gt_cv_func_gnugettext1_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libc" >&5 $as_echo "$gt_cv_func_gnugettext1_libc" >&6; } if test "$gt_cv_func_gnugettext1_libc" != "yes"; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi LIBINTL= LTLIBINTL= INCINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if ${gt_cv_func_gnugettext1_libintl+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_gnugettext1_libintl=yes else gt_cv_func_gnugettext1_libintl=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext1_libintl=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libintl" >&5 $as_echo "$gt_cv_func_gnugettext1_libintl" >&6; } fi if test "$gt_cv_func_gnugettext1_libc" = "yes" \ || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$GMSGFMT" != ":"; then if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 $as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } GMSGFMT=":" fi fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi rm -f messages.po fi ac_config_commands="$ac_config_commands default-2" am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 $as_echo_n "checking for iconv declaration... " >&6; } if ${am_cv_proto_iconv+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : am_cv_proto_iconv_arg1="" else am_cv_proto_iconv_arg1="const" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" fi am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:- }$am_cv_proto_iconv" >&5 $as_echo "${ac_t:- }$am_cv_proto_iconv" >&6; } cat >>confdefs.h <<_ACEOF #define ICONV_CONST $am_cv_proto_iconv_arg1 _ACEOF fi if test "x${BUILD_INCLUDED_LIBINTL}" = "xyes"; then AM_CFLAGS="${AM_CFLAGS} -I\$(top_srcdir)/intl" fi gp_config_msg_len="$(expr "Use translations" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Use translations" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Use translations:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${USE_NLS} " if test "x$USE_NLS" = "xyes" && test "${BUILD_INCLUDED_LIBINTL}"; then gp_config_msg_len="$(expr "Use included libintl" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Use included libintl" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Use included libintl:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${BUILD_INCLUDED_LIBINTL} " fi localedir="\$(datadir)/locale" AM_CPPFLAGS="$AM_CPPFLAGS -DLOCALEDIR=\\\"${localedir}\\\"" ac_fn_c_check_func "$LINENO" "gettext" "ac_cv_func_gettext" if test "x$ac_cv_func_gettext" = xyes; then : gettext_without_libintl=true fi # same trick as with libdl in libgphoto2: # if gettext() doesn't require linking against libintl, # we don't have to check for gettext in libintl. Otherwise # we may even require libintl. if test "$gettext_without_libintl" != "true" -a "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettext in -lintl" >&5 $as_echo_n "checking for gettext in -lintl... " >&6; } if ${ac_cv_lib_intl_gettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 gettext (); int main () { return gettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_gettext=yes else ac_cv_lib_intl_gettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_gettext" >&5 $as_echo "$ac_cv_lib_intl_gettext" >&6; } if test "x$ac_cv_lib_intl_gettext" = xyes; then : INTLLIBS="$INTLLIBS -lintl" fi fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } if eval \${$as_ac_Header+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_ac_Header=yes" else eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_ac_Header { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* 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 sort of thing. */ char tx; char *t = &tx; 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 sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; 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 if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi for ac_header in stdlib.h unistd.h stdio.h fcntl.h errno.h sys/time.h \ sys/param.h sys/select.h termios.h sgetty.h ttold.h ioctl-types.h \ fcntl.h sgtty.h sys/ioctl.h sys/time.h termio.h unistd.h \ endian.h byteswap.h asm/io.h mntent.h sys/mntent.h sys/mnttab.h \ scsi/sg.h limits.h sys/file.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "regex.h" "ac_cv_header_regex_h" "$ac_includes_default" if test "x$ac_cv_header_regex_h" = xyes; then : $as_echo "#define HAVE_REGEX 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for regexec in -lregex" >&5 $as_echo_n "checking for regexec in -lregex... " >&6; } if ${ac_cv_lib_regex_regexec+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lregex $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 regexec (); int main () { return regexec (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_regex_regexec=yes else ac_cv_lib_regex_regexec=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_regex_regexec" >&5 $as_echo "$ac_cv_lib_regex_regexec" >&6; } if test "x$ac_cv_lib_regex_regexec" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBREGEX 1 _ACEOF LIBS="-lregex $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for asm .symver support" >&5 $as_echo_n "checking for asm .symver support... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { int f1() { } int f2() { } asm(".symver f1, f@VER1"); asm(".symver f2, f@@VER2"); int main(int argc, char **argv) { } ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define HAVE_ASM_SYMVERS 1" >>confdefs.h VERSIONMAPLDFLAGS="-Wl,--version-script=\$(srcdir)/libgphoto2_port.ver" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else VERSIONMAPLDFLAGS="" { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mnt_mountp in struct mnttab" >&5 $as_echo_n "checking for mnt_mountp in struct mnttab... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined(HAVE_SYS_MNTENT_H) && defined(HAVE_SYS_MNTTAB_H) # include # include #endif int main () { struct mnttab mt; mt.mnt_mountp; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define HAVE_MNTTAB 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext for ac_func in setmntent endmntent strerror snprintf vsnprintf flock do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int foo = TIOCM_RTS; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define HAVE_RTS_IOCTL 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int foo = TIOCM_RTS; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define HAVE_RTS_IOCTL 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int foo = TIOCM_RTS; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define HAVE_RTS_IOCTL 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int foo = TIOCM_RTS; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : $as_echo "#define HAVE_RTS_IOCTL 1" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Check for va_copy() ac_fn_c_check_header_mongrel "$LINENO" "stdarg.h" "ac_cv_header_stdarg_h" "$ac_includes_default" if test "x$ac_cv_header_stdarg_h" = xyes; then : else as_fn_error $? " Building $PACKAGE_NAME requires . " "$LINENO" 5 fi have_va_copy=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { va_list a,b; va_copy(a,b); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_va_copy="va_copy" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { va_list a,b; __va_copy(a,b); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : have_va_copy="__va_copy" $as_echo "#define va_copy __va_copy" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for va_copy() or replacement" >&5 $as_echo_n "checking for va_copy() or replacement... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_va_copy" >&5 $as_echo "$have_va_copy" >&6; } if test "x$have_va_copy" != "xno"; then $as_echo "#define HAVE_VA_COPY 1" >>confdefs.h fi serial_msg=yes have_serial=true try_ttylock=true try_lockdev=true try_resmgr=true if test "$ac_cv_header_sgtty_h" = "no" then have_serial=false serial_msg=no fi # Check whether --enable-serial was given. if test "${enable_serial+set}" = set; then : enableval=$enable_serial; if test x$enableval = xno; then have_serial=false serial_msg=no try_ttylock=false try_lockdev=false try_resmgr=false fi fi if $have_serial; then IOLIB_LIST="$IOLIB_LIST serial" $as_echo "#define HAVE_SERIAL 1" >>confdefs.h fi gp_config_msg="${gp_config_msg} Serial ports " gp_config_msg_len="$(expr "Serial support" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Serial support" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Serial support:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} $serial_msg " SERIAL_LIBS="" if $have_serial; then # GP_SERLOCK([ttylock]) # Check whether --enable-ttylock was given. if test "${enable_ttylock+set}" = set; then : enableval=$enable_ttylock; if test x$enableval = xno; then try_ttylock=false fi fi # GP_SERLOCK([lockdev]) # Check whether --enable-lockdev was given. if test "${enable_lockdev+set}" = set; then : enableval=$enable_lockdev; if test x$enableval = xno; then try_lockdev=false fi fi ttylock_msg=no if $try_ttylock; then ac_fn_c_check_header_mongrel "$LINENO" "lockdev.h" "ac_cv_header_lockdev_h" "$ac_includes_default" if test "x$ac_cv_header_lockdev_h" = xyes; then : fi ac_fn_c_check_header_compile "$LINENO" "ttylock.h" "ac_cv_header_ttylock_h" "#ifdef HAVE_LOCKDEV_H # include #endif " if test "x$ac_cv_header_ttylock_h" = xyes; then : lockdev_result="no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ttylocked ("/dev/foo"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lockdev_result="no" $as_echo "#define HAVE_TTYLOCK 1" >>confdefs.h ttylock_msg=yes try_lockdev=false, save_LIBS="$LIBS" LIBS="$LIBS -llockdev" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ttylocked ("/dev/foo"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lockdev_result="yes" $as_echo "#define HAVE_TTYLOCK 1" >>confdefs.h ttylock_msg=yes try_lockdev=false SERIAL_LIBS=-llockdev fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ttylock needs lockdev" >&5 $as_echo_n "checking if ttylock needs lockdev... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lockdev_result}" >&5 $as_echo "${lockdev_result}" >&6; } fi fi gp_config_msg_len="$(expr "ttylock locking" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "ttylock locking" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "ttylock locking:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${ttylock_msg} " lockdev_msg=no if $try_lockdev; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dev_lock in -llockdev" >&5 $as_echo_n "checking for dev_lock in -llockdev... " >&6; } if ${ac_cv_lib_lockdev_dev_lock+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-llockdev $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 dev_lock (); int main () { return dev_lock (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_lockdev_dev_lock=yes else ac_cv_lib_lockdev_dev_lock=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lockdev_dev_lock" >&5 $as_echo "$ac_cv_lib_lockdev_dev_lock" >&6; } if test "x$ac_cv_lib_lockdev_dev_lock" = xyes; then : ac_fn_c_check_header_mongrel "$LINENO" "lockdev.h" "ac_cv_header_lockdev_h" "$ac_includes_default" if test "x$ac_cv_header_lockdev_h" = xyes; then : $as_echo "#define HAVE_LOCKDEV 1" >>confdefs.h lockdev_msg=yes SERIAL_LIBS=-llockdev fi fi fi gp_config_msg_len="$(expr "lockdev locking" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "lockdev locking" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "lockdev locking:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${lockdev_msg} " fi # have_serial { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 $as_echo_n "checking for pthread_create in -lpthread... " >&6; } if ${ac_cv_lib_pthread_pthread_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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_create (); int main () { return pthread_create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pthread_pthread_create=yes else ac_cv_lib_pthread_pthread_create=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 $as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPTHREAD 1 _ACEOF LIBS="-lpthread $LIBS" fi gp_config_msg="${gp_config_msg} USB ports " # # [GP_PKG_CONFIG] # export PKG_CONFIG export PKG_CONFIG_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking PKG_CONFIG_PATH" >&5 $as_echo_n "checking PKG_CONFIG_PATH... " >&6; } if test "x${PKG_CONFIG_PATH}" = "x"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: empty" >&5 $as_echo "empty" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${PKG_CONFIG_PATH}" >&5 $as_echo "${PKG_CONFIG_PATH}" >&6; } fi # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="false" ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$PKG_CONFIG" = "false"; then as_fn_error $? " *** Build requires pkg-config *** *** Possible solutions: *** - set PKG_CONFIG to where your pkg-config is located *** - set PATH to include the directory where pkg-config is installed *** - get it from http://freedesktop.org/software/pkgconfig/ and install it " "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dynamic library extension" >&5 $as_echo_n "checking for dynamic library extension... " >&6; } soext="" case "$host" in *linux*) soext=".so" ;; *sunos*) soext=".so" ;; *solaris*) soext=".so" ;; *bsd*) soext=".so" ;; *darwin*) soext=".dylib" ;; *w32*) soext=".dll" ;; esac case "$host_os" in gnu*) soext=".so" ;; esac if test "x$soext" = "x"; then soext=".so" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${soext}" >&5 $as_echo "${soext}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Host system \"${host}\" not recognized, defaulting to \"${soext}\". " >&5 $as_echo "$as_me: WARNING: Host system \"${host}\" not recognized, defaulting to \"${soext}\". " >&2;} else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${soext}" >&5 $as_echo "${soext}" >&6; } fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # ---------------------------------------------------------------------- # [GP_CHECK_LIBRARY]([LIBUSB1],[libusb-1.0],[>= 1.0.0], # [libusb.h],[libusb_init], # [...],[...],[default-on]) # http://libusb.sourceforge.net/ # ---------------------------------------------------------------------- # Use _CFLAGS and _LIBS given to configure. # This makes it possible to set these vars in a configure script # and AC_CONFIG_SUBDIRS this configure. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libusb-1.0 to use" >&5 $as_echo_n "checking for libusb-1.0 to use... " >&6; } REQUIREMENTS_FOR_LIBUSB1="libusb-1.0 >= 1.0.0" userdef_LIBUSB1=no have_LIBUSB1=no if test "x${LIBUSB1_LIBS}" = "x" && test "x${LIBUSB1_CFLAGS}" = "x"; then # define --with/--without argument try_LIBUSB1=auto # Check whether --with-libusb-1.0 was given. if test "${with_libusb_1_0+set}" = set; then : withval=$with_libusb_1_0; try_LIBUSB1="$withval" fi if test "x${try_LIBUSB1}" = "xno"; then REQUIREMENTS_FOR_LIBUSB1= fi if test "x${try_LIBUSB1}" = "xauto"; then try_LIBUSB1=autodetect; fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${try_LIBUSB1}" >&5 $as_echo "${try_LIBUSB1}" >&6; } if test "x${try_LIBUSB1}" = "xautodetect"; then # OK, we have to autodetect. # We start autodetection with the cleanest known method: pkg-config if test "x${have_LIBUSB1}" = "xno"; then # we need that line break after the PKG_CHECK_MODULES pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBUSB1" >&5 $as_echo_n "checking for LIBUSB1... " >&6; } if test -n "$LIBUSB1_CFLAGS"; then pkg_cv_LIBUSB1_CFLAGS="$LIBUSB1_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb-1.0 >= 1.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libusb-1.0 >= 1.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBUSB1_CFLAGS=`$PKG_CONFIG --cflags "libusb-1.0 >= 1.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBUSB1_LIBS"; then pkg_cv_LIBUSB1_LIBS="$LIBUSB1_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb-1.0 >= 1.0.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libusb-1.0 >= 1.0.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBUSB1_LIBS=`$PKG_CONFIG --libs "libusb-1.0 >= 1.0.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBUSB1_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libusb-1.0 >= 1.0.0" 2>&1` else LIBUSB1_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libusb-1.0 >= 1.0.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBUSB1_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else LIBUSB1_CFLAGS=$pkg_cv_LIBUSB1_CFLAGS LIBUSB1_LIBS=$pkg_cv_LIBUSB1_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_LIBUSB1=yes fi fi # If pkg-config didn't find anything, try the libfoo-config program # certain known libraries ship with. if test "x${have_LIBUSB1}" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking libusb-1.0 config program" >&5 $as_echo_n "checking libusb-1.0 config program... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } # Extract the first word of "gp_lib_config", so it can be a program name with args. set dummy none; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_LIBUSB1_CONFIG_PROG+:} false; then : $as_echo_n "(cached) " >&6 else case $LIBUSB1_CONFIG_PROG in [\\/]* | ?:[\\/]*) ac_cv_path_LIBUSB1_CONFIG_PROG="$LIBUSB1_CONFIG_PROG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_LIBUSB1_CONFIG_PROG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi LIBUSB1_CONFIG_PROG=$ac_cv_path_LIBUSB1_CONFIG_PROG if test -n "$LIBUSB1_CONFIG_PROG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBUSB1_CONFIG_PROG" >&5 $as_echo "$LIBUSB1_CONFIG_PROG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "${LIBUSB1_CONFIG_PROG}" && test "${LIBUSB1_CONFIG_PROG}" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libusb-1.0 version according to none" >&5 $as_echo_n "checking for libusb-1.0 version according to none... " >&6; } _LIBUSB1_COMPN="-lt" # split requested version number using m4 regexps _LIBUSB1_REQ_1="1" _LIBUSB1_REQ_2="0" _LIBUSB1_REQ_3="0" _LIBUSB1_REQ_4="" # split installed version number via shell and sed _LIBUSB1_VERSION="$("${LIBUSB1_CONFIG_PROG}" --version | sed 's/^.* //')" _LIBUSB1_VER_1="$(echo "${_LIBUSB1_VERSION}" | sed 's/\([0-9]*\).*/\1/g')" _LIBUSB1_VER_2="$(echo "${_LIBUSB1_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\).*/\2/g')" _LIBUSB1_VER_3="$(echo "${_LIBUSB1_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/g')" _LIBUSB1_VER_4="$(echo "${_LIBUSB1_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(.*\)/\4/g')" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_LIBUSB1_VERSION}" >&5 $as_echo "${_LIBUSB1_VERSION}" >&6; } _tmp=false if test "${_LIBUSB1_VER_1}" "${_LIBUSB1_COMPN}" "${_LIBUSB1_REQ_1}"; then _tmp=true; elif test "${_LIBUSB1_VER_2}" "${_LIBUSB1_COMPN}" "${_LIBUSB1_REQ_2}"; then _tmp=true; elif test "${_LIBUSB1_VER_3}" "${_LIBUSB1_COMPN}" "${_LIBUSB1_REQ_3}"; then _tmp=true; elif test "x${_LIBUSB1_VER_4}" = "x" && test "x${_LIBUSB1_REQ_4}" != "x"; then _tmp=true; elif test "${_LIBUSB1_VER_4}" "${_LIBUSB1_COMPN}" "${_LIBUSB1_REQ_4}"; then _tmp=true; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libusb-1.0 version is matching requirement >= 1.0.0" >&5 $as_echo_n "checking if libusb-1.0 version is matching requirement >= 1.0.0... " >&6; } if "${_tmp}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Version requirement libusb-1.0 >= 1.0.0 not met. Found: ${_LIBUSB1_VERSION}" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libusb-1.0 parameters from none" >&5 $as_echo_n "checking for libusb-1.0 parameters from none... " >&6; } LIBUSB1_LIBS="$(${LIBUSB1_CONFIG_PROG} --libs || echo "*error*")" LIBUSB1_CFLAGS="$(${LIBUSB1_CONFIG_PROG} --cflags || echo "*error*")" if test "x${LIBUSB1_LIBS}" = "*error*" || test "x${LIBUSB1_CFLAGS}" = "*error*"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: error" >&5 $as_echo "error" >&6; } else have_LIBUSB1=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi fi fi # Version requirement given, so we do not rely on probing. elif test "x${try_LIBUSB1}" = "xno"; then : else # We've been given a prefix to look in for library libusb-1.0. # We start looking for libusb-1.0.la files first. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libusb-1.0.la file in ${try_LIBUSB1}" >&5 $as_echo_n "checking for libusb-1.0.la file in ${try_LIBUSB1}... " >&6; } if test -f "${try_LIBUSB1}/lib/libusb-1.0.la"; then LIBUSB1_LIBS="${try_LIBUSB1}/lib/libusb-1.0.la" LIBUSB1_CFLAGS="-I${try_LIBUSB1}/include" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libtool file $LIBUSB1_LIBS (good)" >&5 $as_echo "libtool file $LIBUSB1_LIBS (good)" >&6; } have_LIBUSB1=yes elif test -f "${try_LIBUSB1}/lib64/libusb-1.0.la"; then # HACK LIBUSB1_LIBS="${try_LIBUSB1}/lib64/libusb-1.0.la" LIBUSB1_CFLAGS="-I${try_LIBUSB1}/include" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libtool file $LIBUSB1_LIBS (good)" >&5 $as_echo "libtool file $LIBUSB1_LIBS (good)" >&6; } have_LIBUSB1=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: wild guess that something is in $try_LIBUSB1" >&5 $as_echo "wild guess that something is in $try_LIBUSB1" >&6; } LIBUSB1_LIBS="-L${try_LIBUSB1}/lib -l$(echo "libusb-1.0" | sed 's/^lib//')" LIBUSB1_CFLAGS="-I${try_LIBUSB1}/include" have_LIBUSB1=yes { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * Warning: * libtool file libusb-1.0.la could not be found. * We may be linking against the WRONG library. " >&5 $as_echo "$as_me: WARNING: * Warning: * libtool file libusb-1.0.la could not be found. * We may be linking against the WRONG library. " >&2;} fi fi elif test "x${LIBUSB1_LIBS}" != "x" && test "x${LIBUSB1_CFLAGS}" != "x"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: user-defined" >&5 $as_echo "user-defined" >&6; } userdef_LIBUSB1=yes have_LIBUSB1=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: broken call" >&5 $as_echo "broken call" >&6; } as_fn_error $? " * Fatal: * When calling configure for ${PACKAGE_TARNAME} * ${PACKAGE_NAME} * either set both LIBUSB1_LIBS *and* LIBUSB1_CFLAGS * or neither. " "$LINENO" 5 fi if test "x${have_LIBUSB1}" = "xyes"; then # ACTION-IF-FOUND case "$host" in *-*-mingw* | *-*-cygwin* | *-*-msvc* ) IOLIB_LIST="$IOLIB_LIST usb1" ;; *) IOLIB_LIST="$IOLIB_LIST usb1 usbdiskdirect usbscsi" ;; esac # only in libusbx? but not in traditional libusb 1.0 # note that the library is not always named libusb-1.0.so , e.g. on freebsd it is not. save_LIBS="$LIBS" LIBS="$LIBS $LIBUSB1_LIBS" ac_fn_c_check_func "$LINENO" "libusb_strerror" "ac_cv_func_libusb_strerror" if test "x$ac_cv_func_libusb_strerror" = xyes; then : $as_echo "#define HAVE_LIBUSB_STRERROR 1" >>confdefs.h fi LIBS="$save_LIBS" fi if test "x${have_LIBUSB1}" = "xyes"; then CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="${LIBUSB1_CFLAGS}" ac_fn_c_check_header_mongrel "$LINENO" "libusb.h" "ac_cv_header_libusb_h" "$ac_includes_default" if test "x$ac_cv_header_libusb_h" = xyes; then : have_LIBUSB1=yes else have_LIBUSB1=no fi CPPFLAGS="$CPPFLAGS_save" fi if test "x${userdef_LIBUSB1}" = "xno" && test "x${have_LIBUSB1}" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for function libusb_init in libusb-1.0" >&5 $as_echo_n "checking for function libusb_init in libusb-1.0... " >&6; } LIBS_save="$LIBS" LIBS="${LIBUSB1_LIBS}" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 libusb_init (); int main () { return libusb_init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else have_LIBUSB1=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$LIBS_save" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${have_LIBUSB1}" >&5 $as_echo "${have_LIBUSB1}" >&6; } fi if test "x$have_LIBUSB1" = "xyes"; then HAVE_LIBUSB1_TRUE= HAVE_LIBUSB1_FALSE='#' else HAVE_LIBUSB1_TRUE='#' HAVE_LIBUSB1_FALSE= fi if test "x$have_LIBUSB1" = "xyes"; then $as_echo "#define HAVE_LIBUSB1 1" >>confdefs.h gp_config_msg_len="$(expr "libusb-1.0" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libusb-1.0" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libusb-1.0:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} yes " { $as_echo "$as_me:${as_lineno-$LINENO}: checking libusb-1.0 library flags" >&5 $as_echo_n "checking libusb-1.0 library flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${LIBUSB1_LIBS}\"" >&5 $as_echo "\"${LIBUSB1_LIBS}\"" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking libusb-1.0 cpp flags" >&5 $as_echo_n "checking libusb-1.0 cpp flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${LIBUSB1_CFLAGS}\"" >&5 $as_echo "\"${LIBUSB1_CFLAGS}\"" >&6; } else REQUIREMENTS_FOR_LIBUSB1= gp_config_msg_len="$(expr "libusb-1.0" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libusb-1.0" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libusb-1.0:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} no " fi # We select the old libusb 0 only if we are not doing libusb1 # ---------------------------------------------------------------------- # [GP_CHECK_LIBRARY]([LIBUSB],[libusb],[>= 0.1.5], # [usb.h],[usb_open], # [...],[...],[default-on]) # http://libusb.sourceforge.net/ # ---------------------------------------------------------------------- # Use _CFLAGS and _LIBS given to configure. # This makes it possible to set these vars in a configure script # and AC_CONFIG_SUBDIRS this configure. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libusb to use" >&5 $as_echo_n "checking for libusb to use... " >&6; } REQUIREMENTS_FOR_LIBUSB="libusb >= 0.1.5" userdef_LIBUSB=no have_LIBUSB=no if test "x${LIBUSB_LIBS}" = "x" && test "x${LIBUSB_CFLAGS}" = "x"; then # define --with/--without argument try_LIBUSB=auto # Check whether --with-libusb was given. if test "${with_libusb+set}" = set; then : withval=$with_libusb; try_LIBUSB="$withval" fi if test "x${try_LIBUSB}" = "xno"; then REQUIREMENTS_FOR_LIBUSB= fi if test "x${try_LIBUSB}" = "xauto"; then try_LIBUSB=autodetect; fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${try_LIBUSB}" >&5 $as_echo "${try_LIBUSB}" >&6; } if test "x${try_LIBUSB}" = "xautodetect"; then # OK, we have to autodetect. # We start autodetection with the cleanest known method: pkg-config if test "x${have_LIBUSB}" = "xno"; then # we need that line break after the PKG_CHECK_MODULES pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBUSB" >&5 $as_echo_n "checking for LIBUSB... " >&6; } if test -n "$LIBUSB_CFLAGS"; then pkg_cv_LIBUSB_CFLAGS="$LIBUSB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb >= 0.1.5\""; } >&5 ($PKG_CONFIG --exists --print-errors "libusb >= 0.1.5") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBUSB_CFLAGS=`$PKG_CONFIG --cflags "libusb >= 0.1.5" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBUSB_LIBS"; then pkg_cv_LIBUSB_LIBS="$LIBUSB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb >= 0.1.5\""; } >&5 ($PKG_CONFIG --exists --print-errors "libusb >= 0.1.5") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBUSB_LIBS=`$PKG_CONFIG --libs "libusb >= 0.1.5" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBUSB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libusb >= 0.1.5" 2>&1` else LIBUSB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libusb >= 0.1.5" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBUSB_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else LIBUSB_CFLAGS=$pkg_cv_LIBUSB_CFLAGS LIBUSB_LIBS=$pkg_cv_LIBUSB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_LIBUSB=yes fi fi # If pkg-config didn't find anything, try the libfoo-config program # certain known libraries ship with. if test "x${have_LIBUSB}" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking libusb config program" >&5 $as_echo_n "checking libusb config program... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: libusb-config" >&5 $as_echo "libusb-config" >&6; } # Extract the first word of "gp_lib_config", so it can be a program name with args. set dummy libusb-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_LIBUSB_CONFIG_PROG+:} false; then : $as_echo_n "(cached) " >&6 else case $LIBUSB_CONFIG_PROG in [\\/]* | ?:[\\/]*) ac_cv_path_LIBUSB_CONFIG_PROG="$LIBUSB_CONFIG_PROG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_LIBUSB_CONFIG_PROG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi LIBUSB_CONFIG_PROG=$ac_cv_path_LIBUSB_CONFIG_PROG if test -n "$LIBUSB_CONFIG_PROG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBUSB_CONFIG_PROG" >&5 $as_echo "$LIBUSB_CONFIG_PROG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "${LIBUSB_CONFIG_PROG}" && test "${LIBUSB_CONFIG_PROG}" != "none"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libusb version according to libusb-config" >&5 $as_echo_n "checking for libusb version according to libusb-config... " >&6; } _LIBUSB_COMPN="-lt" # split requested version number using m4 regexps _LIBUSB_REQ_1="0" _LIBUSB_REQ_2="1" _LIBUSB_REQ_3="5" _LIBUSB_REQ_4="" # split installed version number via shell and sed _LIBUSB_VERSION="$("${LIBUSB_CONFIG_PROG}" --version | sed 's/^.* //')" _LIBUSB_VER_1="$(echo "${_LIBUSB_VERSION}" | sed 's/\([0-9]*\).*/\1/g')" _LIBUSB_VER_2="$(echo "${_LIBUSB_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\).*/\2/g')" _LIBUSB_VER_3="$(echo "${_LIBUSB_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/g')" _LIBUSB_VER_4="$(echo "${_LIBUSB_VERSION}" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\(.*\)/\4/g')" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_LIBUSB_VERSION}" >&5 $as_echo "${_LIBUSB_VERSION}" >&6; } _tmp=false if test "${_LIBUSB_VER_1}" "${_LIBUSB_COMPN}" "${_LIBUSB_REQ_1}"; then _tmp=true; elif test "${_LIBUSB_VER_2}" "${_LIBUSB_COMPN}" "${_LIBUSB_REQ_2}"; then _tmp=true; elif test "${_LIBUSB_VER_3}" "${_LIBUSB_COMPN}" "${_LIBUSB_REQ_3}"; then _tmp=true; elif test "x${_LIBUSB_VER_4}" = "x" && test "x${_LIBUSB_REQ_4}" != "x"; then _tmp=true; elif test "${_LIBUSB_VER_4}" "${_LIBUSB_COMPN}" "${_LIBUSB_REQ_4}"; then _tmp=true; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libusb version is matching requirement >= 0.1.5" >&5 $as_echo_n "checking if libusb version is matching requirement >= 0.1.5... " >&6; } if "${_tmp}"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Version requirement libusb >= 0.1.5 not met. Found: ${_LIBUSB_VERSION}" "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libusb parameters from libusb-config" >&5 $as_echo_n "checking for libusb parameters from libusb-config... " >&6; } LIBUSB_LIBS="$(${LIBUSB_CONFIG_PROG} --libs || echo "*error*")" LIBUSB_CFLAGS="$(${LIBUSB_CONFIG_PROG} --cflags || echo "*error*")" if test "x${LIBUSB_LIBS}" = "*error*" || test "x${LIBUSB_CFLAGS}" = "*error*"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: error" >&5 $as_echo "error" >&6; } else have_LIBUSB=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi fi fi # Version requirement given, so we do not rely on probing. elif test "x${try_LIBUSB}" = "xno"; then : else # We've been given a prefix to look in for library libusb. # We start looking for libusb.la files first. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libusb.la file in ${try_LIBUSB}" >&5 $as_echo_n "checking for libusb.la file in ${try_LIBUSB}... " >&6; } if test -f "${try_LIBUSB}/lib/libusb.la"; then LIBUSB_LIBS="${try_LIBUSB}/lib/libusb.la" LIBUSB_CFLAGS="-I${try_LIBUSB}/include" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libtool file $LIBUSB_LIBS (good)" >&5 $as_echo "libtool file $LIBUSB_LIBS (good)" >&6; } have_LIBUSB=yes elif test -f "${try_LIBUSB}/lib64/libusb.la"; then # HACK LIBUSB_LIBS="${try_LIBUSB}/lib64/libusb.la" LIBUSB_CFLAGS="-I${try_LIBUSB}/include" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libtool file $LIBUSB_LIBS (good)" >&5 $as_echo "libtool file $LIBUSB_LIBS (good)" >&6; } have_LIBUSB=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: wild guess that something is in $try_LIBUSB" >&5 $as_echo "wild guess that something is in $try_LIBUSB" >&6; } LIBUSB_LIBS="-L${try_LIBUSB}/lib -l$(echo "libusb" | sed 's/^lib//')" LIBUSB_CFLAGS="-I${try_LIBUSB}/include" have_LIBUSB=yes { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: * Warning: * libtool file libusb.la could not be found. * We may be linking against the WRONG library. " >&5 $as_echo "$as_me: WARNING: * Warning: * libtool file libusb.la could not be found. * We may be linking against the WRONG library. " >&2;} fi fi elif test "x${LIBUSB_LIBS}" != "x" && test "x${LIBUSB_CFLAGS}" != "x"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: user-defined" >&5 $as_echo "user-defined" >&6; } userdef_LIBUSB=yes have_LIBUSB=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: broken call" >&5 $as_echo "broken call" >&6; } as_fn_error $? " * Fatal: * When calling configure for ${PACKAGE_TARNAME} * ${PACKAGE_NAME} * either set both LIBUSB_LIBS *and* LIBUSB_CFLAGS * or neither. " "$LINENO" 5 fi if test "x${have_LIBUSB}" = "xyes"; then # ACTION-IF-FOUND case "$host" in *-*-mingw* | *-*-cygwin* | *-*-msvc* ) IOLIB_LIST="$IOLIB_LIST usb" ;; *) if test "x$have_LIBUSB1" != xyes; then IOLIB_LIST="$IOLIB_LIST usb usbdiskdirect usbscsi" else gp_config_msg_len="$(expr "libusb0 support" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libusb0 support" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libusb0 support:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} detected, but disabled (libusb1 support is enabled) " fi ;; esac fi if test "x${have_LIBUSB}" = "xyes"; then CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="${LIBUSB_CFLAGS}" ac_fn_c_check_header_mongrel "$LINENO" "usb.h" "ac_cv_header_usb_h" "$ac_includes_default" if test "x$ac_cv_header_usb_h" = xyes; then : have_LIBUSB=yes else have_LIBUSB=no fi CPPFLAGS="$CPPFLAGS_save" fi if test "x${userdef_LIBUSB}" = "xno" && test "x${have_LIBUSB}" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for function usb_open in libusb" >&5 $as_echo_n "checking for function usb_open in libusb... " >&6; } LIBS_save="$LIBS" LIBS="${LIBUSB_LIBS}" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* 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 usb_open (); int main () { return usb_open (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else have_LIBUSB=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$LIBS_save" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${have_LIBUSB}" >&5 $as_echo "${have_LIBUSB}" >&6; } fi if test "x$have_LIBUSB" = "xyes"; then HAVE_LIBUSB_TRUE= HAVE_LIBUSB_FALSE='#' else HAVE_LIBUSB_TRUE='#' HAVE_LIBUSB_FALSE= fi if test "x$have_LIBUSB" = "xyes"; then $as_echo "#define HAVE_LIBUSB 1" >>confdefs.h gp_config_msg_len="$(expr "libusb" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libusb" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libusb:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} yes " { $as_echo "$as_me:${as_lineno-$LINENO}: checking libusb library flags" >&5 $as_echo_n "checking libusb library flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${LIBUSB_LIBS}\"" >&5 $as_echo "\"${LIBUSB_LIBS}\"" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking libusb cpp flags" >&5 $as_echo_n "checking libusb cpp flags... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"${LIBUSB_CFLAGS}\"" >&5 $as_echo "\"${LIBUSB_CFLAGS}\"" >&6; } else REQUIREMENTS_FOR_LIBUSB= gp_config_msg_len="$(expr "libusb" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "libusb" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "libusb:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} no " fi if test "x${udevscriptdir}" = "x"; then udevscriptdir="\${libdir}/udev"; fi if if echo "$host"|grep -i linux >/dev/null ; then test "x$have_LIBUSB" = xyes -o "x$have_LIBUSB1" = xyes; fi ; then HAVE_UDEV_TRUE= HAVE_UDEV_FALSE='#' else HAVE_UDEV_TRUE='#' HAVE_UDEV_FALSE= fi # Check whether --enable-disk was given. if test "${enable_disk+set}" = set; then : enableval=$enable_disk; else enable_disk=yes fi if test "x$enable_disk" = "xyes"; then IOLIB_LIST="$IOLIB_LIST disk" fi # Check whether --enable-ptpip was given. if test "${enable_ptpip+set}" = set; then : enableval=$enable_ptpip; else enable_ptpip=yes fi if test "x$enable_ptpip" = "xyes"; then IOLIB_LIST="$IOLIB_LIST ptpip" fi # ---------------------------------------------------------------------- # Define IOLIB stuff # ---------------------------------------------------------------------- for x in ${IOLIB_LIST}; do IOLIB_LTLIST="${IOLIB_LTLIST} ${x}.la" done iolibdir="\$(libdir)/\$(PACKAGE_TARNAME)/\$(VERSION)" AM_CPPFLAGS="$AM_CPPFLAGS -DIOLIBS=\\\"${iolibdir}\\\"" pkgconfigdir='${libdir}/pkgconfig' ac_fn_c_check_func "$LINENO" "re_compile_pattern" "ac_cv_func_re_compile_pattern" if test "x$ac_cv_func_re_compile_pattern" = xyes; then : $as_echo "#define HAVE_GNU_REGEX 1" >>confdefs.h fi # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; if test "$enableval" = "no"; then $as_echo "#define DISABLE_DEBUGGING 1" >>confdefs.h fi fi # ---------------------------------------------------------------------- # gtk-doc? # ---------------------------------------------------------------------- gp_config_msg="${gp_config_msg} Documentation " # Check whether --with-doc-dir was given. if test "${with_doc_dir+set}" = set; then : withval=$with_doc_dir; fi # check for the main ("root") documentation directory { $as_echo "$as_me:${as_lineno-$LINENO}: checking main docdir" >&5 $as_echo_n "checking main docdir... " >&6; } if test "x${with_doc_dir}" != "x" then # docdir is given as parameter docdir="${with_doc_dir}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${docdir} (from parameter)" >&5 $as_echo "${docdir} (from parameter)" >&6; } else # otherwise invent a docdir hopefully compatible with system policy if test -d "/usr/share/doc" then maindocdir='${prefix}/share/doc' { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${maindocdir} (FHS style)" >&5 $as_echo "${maindocdir} (FHS style)" >&6; } elif test -d "/usr/doc" then maindocdir='${prefix}/doc' { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${maindocdir} (old style)" >&5 $as_echo "${maindocdir} (old style)" >&6; } else maindocdir='${datadir}/doc' { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${maindocdir} (default value)" >&5 $as_echo "${maindocdir} (default value)" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking package docdir" >&5 $as_echo_n "checking package docdir... " >&6; } # check whether to include package version into documentation path # FIXME: doesn't work properly. if ls -d /usr/{share/,}doc/make-0-9* > /dev/null 2>&1 then docdir="${maindocdir}/${PACKAGE}-${VERSION}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${docdir} (redhat style)" >&5 $as_echo "${docdir} (redhat style)" >&6; } else docdir="${maindocdir}/${PACKAGE}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${docdir} (default style)" >&5 $as_echo "${docdir} (default style)" >&6; } fi fi # docdir has to be determined in advance # --------------------------------------------------------------------------- # gtk-doc: We use gtk-doc for building our documentation. However, we # require the user to explicitely request the build. # --------------------------------------------------------------------------- try_gtkdoc=false gtkdoc_msg="no (not requested)" have_gtkdoc=false # Check whether --enable-docs was given. if test "${enable_docs+set}" = set; then : enableval=$enable_docs; if test x$enableval = xyes; then try_gtkdoc=true fi fi if $try_gtkdoc; then # Extract the first word of "gtkdoc-mkdb", so it can be a program name with args. set dummy gtkdoc-mkdb; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GTKDOC+:} false; then : $as_echo_n "(cached) " >&6 else case $GTKDOC in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC="$GTKDOC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GTKDOC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC=$ac_cv_path_GTKDOC if test -n "$GTKDOC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC" >&5 $as_echo "$GTKDOC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -n "${GTKDOC}"; then have_gtkdoc=true gtkdoc_msg="yes" else gtkdoc_msg="no (http://www.gtk.org/rdp/download.html)" fi fi if $have_gtkdoc; then ENABLE_GTK_DOC_TRUE= ENABLE_GTK_DOC_FALSE='#' else ENABLE_GTK_DOC_TRUE='#' ENABLE_GTK_DOC_FALSE= fi gp_config_msg_len="$(expr "build API docs with gtk-doc" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "build API docs with gtk-doc" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "build API docs with gtk-doc:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} $gtkdoc_msg " # --------------------------------------------------------------------------- # Give the user the possibility to install html documentation in a # user-defined location. # --------------------------------------------------------------------------- # Check whether --with-html-dir was given. if test "${with_html_dir+set}" = set; then : withval=$with_html_dir; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for html dir" >&5 $as_echo_n "checking for html dir... " >&6; } if test "x${with_html_dir}" = "x" ; then htmldir="${docdir}/html" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${htmldir} (default)" >&5 $as_echo "${htmldir} (default)" >&6; } else htmldir="${with_html_dir}" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${htmldir} (from parameter)" >&5 $as_echo "${htmldir} (from parameter)" >&6; } fi apidocdir="${htmldir}/api" if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -Wall" CFLAGS="$CFLAGS -Wmissing-declarations -Wmissing-prototypes" fi # Activate internal code AM_CPPFLAGS="$AM_CPPFLAGS -D_GPHOTO2_INTERNAL_CODE" # CPPFLAGS: C PreProcessor flags # CFLAGS: C compiler flags # CXXFLAGS: C++ compiler flags # LDFLAGS: Linker flags # --------------------------------------------------------------------------- # Create output files # --------------------------------------------------------------------------- ac_config_files="$ac_config_files Makefile po/Makefile.in libgphoto2_port/Makefile libgphoto2_port.pc libgphoto2_port-uninstalled.pc gphoto2-port-config test/Makefile doc/Makefile gphoto-m4/Makefile" 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_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; 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 if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_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= U= 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=`$as_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. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBUSB1_TRUE}" && test -z "${HAVE_LIBUSB1_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBUSB1\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_LIBUSB_TRUE}" && test -z "${HAVE_LIBUSB_FALSE}"; then as_fn_error $? "conditional \"HAVE_LIBUSB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_UDEV_TRUE}" && test -z "${HAVE_UDEV_FALSE}"; then as_fn_error $? "conditional \"HAVE_UDEV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $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} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## 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=: # Pre-4.2 versions of Zsh do 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_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } 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.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= 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 $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith 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 if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # 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 ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac 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 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then 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 -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_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 || $as_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" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # 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 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=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 libgphoto2 port access library $as_me 0.12.0, which was generated by GNU Autoconf 2.69. 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 case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # 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_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent 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_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ libgphoto2 port access library config.status 0.12.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 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' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. 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=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= 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 ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_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. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append 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 || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # 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' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in AS \ DLLTOOL \ OBJDUMP \ SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ 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_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) 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 \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that 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' RM='$RM' ofile='$ofile' # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "default-2") CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "libgphoto2_port/Makefile") CONFIG_FILES="$CONFIG_FILES libgphoto2_port/Makefile" ;; "libgphoto2_port.pc") CONFIG_FILES="$CONFIG_FILES libgphoto2_port.pc" ;; "libgphoto2_port-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES libgphoto2_port-uninstalled.pc" ;; "gphoto2-port-config") CONFIG_FILES="$CONFIG_FILES gphoto2-port-config" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "gphoto-m4/Makefile") CONFIG_FILES="$CONFIG_FILES gphoto-m4/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; 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= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # 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. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[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="$ac_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 || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append 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 '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; 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 || $as_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"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_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 || ac_write_fail=1 # 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= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 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 || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;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 " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_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 "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | 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) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf 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 -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/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 || $as_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"` # 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'`; 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 || $as_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; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options that 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 # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 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 this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Whether or not to build static libraries. build_old_libs=$enable_static # Assembler program. AS=$lt_AS # DLL creation program. DLLTOOL=$lt_DLLTOOL # Object dumper program. OBJDUMP=$lt_OBJDUMP # 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 # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # 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 # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # 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 # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # 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 # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # 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 into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # 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 lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # 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 # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # 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 # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # 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 # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # 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 # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # 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 # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # 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 # 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 # 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 # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_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 cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _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 set != "${COLLECT_NAMES+set}"; 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 '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; "default-1":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "default-2":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # 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 || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi # Message about configured subprojects if test "x$subdirs" != "x"; then gp_config_msg="${gp_config_msg} " _subdirs="" for sd in $subdirs; do ssd="$(basename "$sd")" if test "x$_subdirs" = "x"; then _subdirs="$ssd"; else _subdirs="$_subdirs $ssd" fi done gp_config_msg_len="$(expr "Subprojects" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "Subprojects" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "Subprojects:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} ${_subdirs} " fi echo "${gp_config_msg} You may run \"make\" and \"make install\" now." # End of file. libgphoto2-2.5.9/libgphoto2_port/README0000644000175000001440000000022412561423352014513 00000000000000libgphoto2_port is a part of libgphoto2. It could be separated, but as nobody else is using it, it remains integrated into the libgphoto2 package. libgphoto2-2.5.9/libgphoto2_port/Makefile.in0000644000175000001440000017120512615454335015715 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ ######################################################################## # Usage instructions ######################################################################## # If you only want to build a single iolib (say usb.la), run # gmake usb.la # or make usb.la # # If you only want to install a single camlib or two, run # make IOLIB_LTLIST="usb.la ptpip.la" install-iolibLTLIBRARIES ######################################################################## # -*- Makefile -*- # -*- Makefile -*- # -*- Makefile -*- # -*- Makefile -*- # -*- Makefile -*- VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ udevscript_PROGRAMS = subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(nobase_include_HEADERS) \ $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = libgphoto2_port.pc libgphoto2_port-uninstalled.pc \ gphoto2-port-config CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(iolibdir)" "$(DESTDIR)$(udevscriptdir)" \ "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)" \ "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(iolib_LTLIBRARIES) am__DEPENDENCIES_1 = am__dirstamp = $(am__leading_dot)dirstamp am_disk_la_OBJECTS = disk/disk_la-disk.lo disk_la_OBJECTS = $(am_disk_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = disk_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(disk_la_LDFLAGS) $(LDFLAGS) -o $@ am_ptpip_la_OBJECTS = ptpip/ptpip_la-ptpip.lo ptpip_la_OBJECTS = $(am_ptpip_la_OBJECTS) ptpip_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(ptpip_la_LDFLAGS) $(LDFLAGS) -o $@ am_serial_la_OBJECTS = serial/serial_la-unix.lo serial_la_OBJECTS = $(am_serial_la_OBJECTS) serial_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(serial_la_LDFLAGS) $(LDFLAGS) -o $@ am_usb_la_OBJECTS = usb/usb_la-libusb.lo usb_la_OBJECTS = $(am_usb_la_OBJECTS) usb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(usb_la_LDFLAGS) $(LDFLAGS) -o $@ am_usb1_la_OBJECTS = libusb1/usb1_la-libusb1.lo usb1_la_OBJECTS = $(am_usb1_la_OBJECTS) usb1_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(usb1_la_LDFLAGS) $(LDFLAGS) -o $@ am_usbdiskdirect_la_OBJECTS = usbdiskdirect/usbdiskdirect_la-linux.lo usbdiskdirect_la_OBJECTS = $(am_usbdiskdirect_la_OBJECTS) usbdiskdirect_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(usbdiskdirect_la_LDFLAGS) $(LDFLAGS) \ -o $@ am_usbscsi_la_OBJECTS = usbscsi/usbscsi_la-linux.lo usbscsi_la_OBJECTS = $(am_usbscsi_la_OBJECTS) usbscsi_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(usbscsi_la_LDFLAGS) $(LDFLAGS) -o $@ PROGRAMS = $(udevscript_PROGRAMS) SCRIPTS = $(bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/auto-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(disk_la_SOURCES) $(ptpip_la_SOURCES) $(serial_la_SOURCES) \ $(usb_la_SOURCES) $(usb1_la_SOURCES) \ $(usbdiskdirect_la_SOURCES) $(usbscsi_la_SOURCES) DIST_SOURCES = $(disk_la_SOURCES) $(ptpip_la_SOURCES) \ $(serial_la_SOURCES) $(usb_la_SOURCES) $(usb1_la_SOURCES) \ $(usbdiskdirect_la_SOURCES) $(usbscsi_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-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 \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(doc_DATA) $(noinst_DATA) $(pkgconfig_DATA) HEADERS = $(nobase_include_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/disk/Makefile-files $(srcdir)/gphoto2-port-config.in \ $(srcdir)/libgphoto2_port-uninstalled.pc.in \ $(srcdir)/libgphoto2_port.pc.in \ $(srcdir)/libusb1/Makefile-files \ $(srcdir)/ptpip/Makefile-files $(srcdir)/serial/Makefile-files \ $(srcdir)/usb/Makefile-files \ $(srcdir)/usbdiskdirect/Makefile-files \ $(srcdir)/usbscsi/Makefile-files $(top_srcdir)/auto-aux/ar-lib \ $(top_srcdir)/auto-aux/compile \ $(top_srcdir)/auto-aux/config.guess \ $(top_srcdir)/auto-aux/config.sub \ $(top_srcdir)/auto-aux/depcomp \ $(top_srcdir)/auto-aux/install-sh \ $(top_srcdir)/auto-aux/ltmain.sh \ $(top_srcdir)/auto-aux/missing \ $(top_srcdir)/auto-aux/mkinstalldirs ABOUT-NLS AUTHORS \ COPYING.LIB ChangeLog INSTALL NEWS README auto-aux/ar-lib \ auto-aux/compile auto-aux/config.guess auto-aux/config.rpath \ auto-aux/config.sub auto-aux/depcomp auto-aux/install-sh \ auto-aux/ltmain.sh auto-aux/missing auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 GZIP_ENV = --best DIST_TARGETS = dist-bzip2 dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir) AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ IOLIB_LIST = @IOLIB_LIST@ IOLIB_LTLIST = @IOLIB_LTLIST@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGPHOTO2_PORT_AGE = @LIBGPHOTO2_PORT_AGE@ LIBGPHOTO2_PORT_CURRENT = @LIBGPHOTO2_PORT_CURRENT@ LIBGPHOTO2_PORT_CURRENT_MIN = @LIBGPHOTO2_PORT_CURRENT_MIN@ LIBGPHOTO2_PORT_REVISION = @LIBGPHOTO2_PORT_REVISION@ LIBGPHOTO2_PORT_VERSION_INFO = @LIBGPHOTO2_PORT_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBUSB1_CFLAGS = @LIBUSB1_CFLAGS@ LIBUSB1_CONFIG_PROG = @LIBUSB1_CONFIG_PROG@ LIBUSB1_LIBS = @LIBUSB1_LIBS@ LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ LIBUSB_CONFIG_PROG = @LIBUSB_CONFIG_PROG@ LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBUSB = @REQUIREMENTS_FOR_LIBUSB@ REQUIREMENTS_FOR_LIBUSB1 = @REQUIREMENTS_FOR_LIBUSB1@ SED = @SED@ SERIAL_LIBS = @SERIAL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ 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@ iolibdir = @iolibdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ CLEANFILES = ######################################################################## # Miscellaneous stuff EXTRA_DIST = usb/usb-os2.c AUTHORS ChangeLog COPYING.LIB NEWS README \ iolib.sym gphoto2-port-config.in libgphoto2_port.pc.in \ libgphoto2_port-uninstalled.pc.in \ gphoto2/gphoto2-port-library.h EXTRA_LTLIBRARIES = disk.la ptpip.la serial.la usb.la usb1.la \ usbdiskdirect.la usbscsi.la #AM_CPPFLAGS = -I@srcdir@ $(VERSION_FLAGS) #VERSION_FLAGS = -DLIBGPPORT_VERSION=\"@LIBGPPORT_VERSION@\" -DHAVE_TERMIOS_H bin_SCRIPTS = gphoto2-port-config # The . stands for the current dir, i.e. the iolibs to build. SUBDIRS = po libgphoto2_port test . doc gphoto-m4 ######################################################################## # All iolibs are defined as EXTRA_LTLIBRARIES. This requires that # all iolibs have -rpath set explicitly in foobar_la_LDFLAGS. # You're probably best off by using the iolib_* variables defined # below. iolib_LTLIBRARIES = $(IOLIB_LTLIST) ######################################################################## # Define the compile/link/etc. flags common to all iolibs in one place, # i.e. here. iolib_dependencies = $(top_srcdir)/iolib.sym iolib_ldflags = -module -no-undefined -avoid-version \ -export-dynamic \ -export-symbols $(top_srcdir)/iolib.sym \ -rpath '$(iolibdir)' iolib_libadd = $(top_builddir)/libgphoto2_port/libgphoto2_port.la disk_la_LDFLAGS = $(iolib_ldflags) disk_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(INTL_CFLAGS) \ $(LIBUSB_CFLAGS) \ $(CPPFLAGS) disk_la_DEPENDENCIES = $(iolib_dependencies) disk_la_LIBADD = $(iolib_libadd) $(INTLLIBS) disk_la_SOURCES = disk/disk.c ptpip_la_LDFLAGS = $(iolib_ldflags) ptpip_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(INTL_CFLAGS) \ $(CPPFLAGS) ptpip_la_DEPENDENCIES = $(iolib_dependencies) ptpip_la_LIBADD = $(iolib_libadd) $(INTLLIBS) ptpip_la_SOURCES = ptpip/ptpip.c serial_la_LDFLAGS = $(iolib_ldflags) serial_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(INTL_CFLAGS) \ $(CPPFLAGS) serial_la_DEPENDENCIES = $(iolib_dependencies) serial_la_LIBADD = $(iolib_libadd) $(SERIAL_LIBS) $(INTLLIBS) serial_la_SOURCES = serial/unix.c usb_la_LDFLAGS = $(iolib_ldflags) usb_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(INTL_CFLAGS) \ $(LIBUSB_CFLAGS) \ $(CPPFLAGS) usb_la_DEPENDENCIES = $(iolib_dependencies) usb_la_LIBADD = $(iolib_libadd) $(LIBUSB_LIBS) $(INTLLIBS) usb_la_SOURCES = usb/libusb.c usb1_la_LDFLAGS = $(iolib_ldflags) usb1_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(INTL_CFLAGS) \ $(LIBUSB1_CFLAGS) \ $(CPPFLAGS) usb1_la_DEPENDENCIES = $(iolib_dependencies) usb1_la_LIBADD = $(iolib_libadd) $(LIBUSB1_LIBS) $(INTLLIBS) usb1_la_SOURCES = libusb1/libusb1.c usbdiskdirect_la_LDFLAGS = $(iolib_ldflags) usbdiskdirect_la_CPPFLAGS = $(AM_CPPFLAGS) $(INTL_CFLAGS) $(CPPFLAGS) usbdiskdirect_la_DEPENDENCIES = $(iolib_dependencies) usbdiskdirect_la_LIBADD = $(iolib_libadd) $(INTLLIBS) $(SERIAL_LIBS) usbdiskdirect_la_SOURCES = usbdiskdirect/linux.c usbscsi_la_LDFLAGS = $(iolib_ldflags) usbscsi_la_CPPFLAGS = $(AM_CPPFLAGS) $(INTL_CFLAGS) $(CPPFLAGS) usbscsi_la_DEPENDENCIES = $(iolib_dependencies) usbscsi_la_LIBADD = $(iolib_libadd) $(INTLLIBS) usbscsi_la_SOURCES = usbscsi/linux.c doc_DATA = AUTHORS README NEWS ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4 pkgconfig_DATA = libgphoto2_port.pc noinst_DATA = libgphoto2_port-uninstalled.pc # ship headers nobase_include_HEADERS = \ gphoto2/gphoto2-port.h \ gphoto2/gphoto2-port-info-list.h \ gphoto2/gphoto2-port-log.h \ gphoto2/gphoto2-port-version.h \ gphoto2/gphoto2-port-portability.h \ gphoto2/gphoto2-port-result.h all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .lo .o .obj am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/disk/Makefile-files $(srcdir)/ptpip/Makefile-files $(srcdir)/serial/Makefile-files $(srcdir)/usb/Makefile-files $(srcdir)/libusb1/Makefile-files $(srcdir)/usbdiskdirect/Makefile-files $(srcdir)/usbscsi/Makefile-files $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(srcdir)/disk/Makefile-files $(srcdir)/ptpip/Makefile-files $(srcdir)/serial/Makefile-files $(srcdir)/usb/Makefile-files $(srcdir)/libusb1/Makefile-files $(srcdir)/usbdiskdirect/Makefile-files $(srcdir)/usbscsi/Makefile-files $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 libgphoto2_port.pc: $(top_builddir)/config.status $(srcdir)/libgphoto2_port.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ libgphoto2_port-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/libgphoto2_port-uninstalled.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ gphoto2-port-config: $(top_builddir)/config.status $(srcdir)/gphoto2-port-config.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-iolibLTLIBRARIES: $(iolib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(iolib_LTLIBRARIES)'; test -n "$(iolibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(iolibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(iolibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(iolibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(iolibdir)"; \ } uninstall-iolibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(iolib_LTLIBRARIES)'; test -n "$(iolibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(iolibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(iolibdir)/$$f"; \ done clean-iolibLTLIBRARIES: -test -z "$(iolib_LTLIBRARIES)" || rm -f $(iolib_LTLIBRARIES) @list='$(iolib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } disk/$(am__dirstamp): @$(MKDIR_P) disk @: > disk/$(am__dirstamp) disk/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) disk/$(DEPDIR) @: > disk/$(DEPDIR)/$(am__dirstamp) disk/disk_la-disk.lo: disk/$(am__dirstamp) \ disk/$(DEPDIR)/$(am__dirstamp) disk.la: $(disk_la_OBJECTS) $(disk_la_DEPENDENCIES) $(EXTRA_disk_la_DEPENDENCIES) $(AM_V_CCLD)$(disk_la_LINK) $(disk_la_OBJECTS) $(disk_la_LIBADD) $(LIBS) ptpip/$(am__dirstamp): @$(MKDIR_P) ptpip @: > ptpip/$(am__dirstamp) ptpip/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ptpip/$(DEPDIR) @: > ptpip/$(DEPDIR)/$(am__dirstamp) ptpip/ptpip_la-ptpip.lo: ptpip/$(am__dirstamp) \ ptpip/$(DEPDIR)/$(am__dirstamp) ptpip.la: $(ptpip_la_OBJECTS) $(ptpip_la_DEPENDENCIES) $(EXTRA_ptpip_la_DEPENDENCIES) $(AM_V_CCLD)$(ptpip_la_LINK) $(ptpip_la_OBJECTS) $(ptpip_la_LIBADD) $(LIBS) serial/$(am__dirstamp): @$(MKDIR_P) serial @: > serial/$(am__dirstamp) serial/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) serial/$(DEPDIR) @: > serial/$(DEPDIR)/$(am__dirstamp) serial/serial_la-unix.lo: serial/$(am__dirstamp) \ serial/$(DEPDIR)/$(am__dirstamp) serial.la: $(serial_la_OBJECTS) $(serial_la_DEPENDENCIES) $(EXTRA_serial_la_DEPENDENCIES) $(AM_V_CCLD)$(serial_la_LINK) $(serial_la_OBJECTS) $(serial_la_LIBADD) $(LIBS) usb/$(am__dirstamp): @$(MKDIR_P) usb @: > usb/$(am__dirstamp) usb/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) usb/$(DEPDIR) @: > usb/$(DEPDIR)/$(am__dirstamp) usb/usb_la-libusb.lo: usb/$(am__dirstamp) \ usb/$(DEPDIR)/$(am__dirstamp) usb.la: $(usb_la_OBJECTS) $(usb_la_DEPENDENCIES) $(EXTRA_usb_la_DEPENDENCIES) $(AM_V_CCLD)$(usb_la_LINK) $(usb_la_OBJECTS) $(usb_la_LIBADD) $(LIBS) libusb1/$(am__dirstamp): @$(MKDIR_P) libusb1 @: > libusb1/$(am__dirstamp) libusb1/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) libusb1/$(DEPDIR) @: > libusb1/$(DEPDIR)/$(am__dirstamp) libusb1/usb1_la-libusb1.lo: libusb1/$(am__dirstamp) \ libusb1/$(DEPDIR)/$(am__dirstamp) usb1.la: $(usb1_la_OBJECTS) $(usb1_la_DEPENDENCIES) $(EXTRA_usb1_la_DEPENDENCIES) $(AM_V_CCLD)$(usb1_la_LINK) $(usb1_la_OBJECTS) $(usb1_la_LIBADD) $(LIBS) usbdiskdirect/$(am__dirstamp): @$(MKDIR_P) usbdiskdirect @: > usbdiskdirect/$(am__dirstamp) usbdiskdirect/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) usbdiskdirect/$(DEPDIR) @: > usbdiskdirect/$(DEPDIR)/$(am__dirstamp) usbdiskdirect/usbdiskdirect_la-linux.lo: \ usbdiskdirect/$(am__dirstamp) \ usbdiskdirect/$(DEPDIR)/$(am__dirstamp) usbdiskdirect.la: $(usbdiskdirect_la_OBJECTS) $(usbdiskdirect_la_DEPENDENCIES) $(EXTRA_usbdiskdirect_la_DEPENDENCIES) $(AM_V_CCLD)$(usbdiskdirect_la_LINK) $(usbdiskdirect_la_OBJECTS) $(usbdiskdirect_la_LIBADD) $(LIBS) usbscsi/$(am__dirstamp): @$(MKDIR_P) usbscsi @: > usbscsi/$(am__dirstamp) usbscsi/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) usbscsi/$(DEPDIR) @: > usbscsi/$(DEPDIR)/$(am__dirstamp) usbscsi/usbscsi_la-linux.lo: usbscsi/$(am__dirstamp) \ usbscsi/$(DEPDIR)/$(am__dirstamp) usbscsi.la: $(usbscsi_la_OBJECTS) $(usbscsi_la_DEPENDENCIES) $(EXTRA_usbscsi_la_DEPENDENCIES) $(AM_V_CCLD)$(usbscsi_la_LINK) $(usbscsi_la_OBJECTS) $(usbscsi_la_LIBADD) $(LIBS) install-udevscriptPROGRAMS: $(udevscript_PROGRAMS) @$(NORMAL_INSTALL) @list='$(udevscript_PROGRAMS)'; test -n "$(udevscriptdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(udevscriptdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(udevscriptdir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(udevscriptdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(udevscriptdir)$$dir" || exit $$?; \ } \ ; done uninstall-udevscriptPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(udevscript_PROGRAMS)'; test -n "$(udevscriptdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(udevscriptdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(udevscriptdir)" && rm -f $$files clean-udevscriptPROGRAMS: @list='$(udevscript_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f disk/*.$(OBJEXT) -rm -f disk/*.lo -rm -f libusb1/*.$(OBJEXT) -rm -f libusb1/*.lo -rm -f ptpip/*.$(OBJEXT) -rm -f ptpip/*.lo -rm -f serial/*.$(OBJEXT) -rm -f serial/*.lo -rm -f usb/*.$(OBJEXT) -rm -f usb/*.lo -rm -f usbdiskdirect/*.$(OBJEXT) -rm -f usbdiskdirect/*.lo -rm -f usbscsi/*.$(OBJEXT) -rm -f usbscsi/*.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@disk/$(DEPDIR)/disk_la-disk.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libusb1/$(DEPDIR)/usb1_la-libusb1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ptpip/$(DEPDIR)/ptpip_la-ptpip.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@serial/$(DEPDIR)/serial_la-unix.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@usb/$(DEPDIR)/usb_la-libusb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@usbdiskdirect/$(DEPDIR)/usbdiskdirect_la-linux.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@usbscsi/$(DEPDIR)/usbscsi_la-linux.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< disk/disk_la-disk.lo: disk/disk.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(disk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT disk/disk_la-disk.lo -MD -MP -MF disk/$(DEPDIR)/disk_la-disk.Tpo -c -o disk/disk_la-disk.lo `test -f 'disk/disk.c' || echo '$(srcdir)/'`disk/disk.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) disk/$(DEPDIR)/disk_la-disk.Tpo disk/$(DEPDIR)/disk_la-disk.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='disk/disk.c' object='disk/disk_la-disk.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(disk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o disk/disk_la-disk.lo `test -f 'disk/disk.c' || echo '$(srcdir)/'`disk/disk.c ptpip/ptpip_la-ptpip.lo: ptpip/ptpip.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptpip_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ptpip/ptpip_la-ptpip.lo -MD -MP -MF ptpip/$(DEPDIR)/ptpip_la-ptpip.Tpo -c -o ptpip/ptpip_la-ptpip.lo `test -f 'ptpip/ptpip.c' || echo '$(srcdir)/'`ptpip/ptpip.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ptpip/$(DEPDIR)/ptpip_la-ptpip.Tpo ptpip/$(DEPDIR)/ptpip_la-ptpip.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ptpip/ptpip.c' object='ptpip/ptpip_la-ptpip.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(ptpip_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ptpip/ptpip_la-ptpip.lo `test -f 'ptpip/ptpip.c' || echo '$(srcdir)/'`ptpip/ptpip.c serial/serial_la-unix.lo: serial/unix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(serial_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT serial/serial_la-unix.lo -MD -MP -MF serial/$(DEPDIR)/serial_la-unix.Tpo -c -o serial/serial_la-unix.lo `test -f 'serial/unix.c' || echo '$(srcdir)/'`serial/unix.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) serial/$(DEPDIR)/serial_la-unix.Tpo serial/$(DEPDIR)/serial_la-unix.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='serial/unix.c' object='serial/serial_la-unix.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(serial_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o serial/serial_la-unix.lo `test -f 'serial/unix.c' || echo '$(srcdir)/'`serial/unix.c usb/usb_la-libusb.lo: usb/libusb.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(usb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT usb/usb_la-libusb.lo -MD -MP -MF usb/$(DEPDIR)/usb_la-libusb.Tpo -c -o usb/usb_la-libusb.lo `test -f 'usb/libusb.c' || echo '$(srcdir)/'`usb/libusb.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) usb/$(DEPDIR)/usb_la-libusb.Tpo usb/$(DEPDIR)/usb_la-libusb.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='usb/libusb.c' object='usb/usb_la-libusb.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(usb_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o usb/usb_la-libusb.lo `test -f 'usb/libusb.c' || echo '$(srcdir)/'`usb/libusb.c libusb1/usb1_la-libusb1.lo: libusb1/libusb1.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(usb1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libusb1/usb1_la-libusb1.lo -MD -MP -MF libusb1/$(DEPDIR)/usb1_la-libusb1.Tpo -c -o libusb1/usb1_la-libusb1.lo `test -f 'libusb1/libusb1.c' || echo '$(srcdir)/'`libusb1/libusb1.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libusb1/$(DEPDIR)/usb1_la-libusb1.Tpo libusb1/$(DEPDIR)/usb1_la-libusb1.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libusb1/libusb1.c' object='libusb1/usb1_la-libusb1.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(usb1_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libusb1/usb1_la-libusb1.lo `test -f 'libusb1/libusb1.c' || echo '$(srcdir)/'`libusb1/libusb1.c usbdiskdirect/usbdiskdirect_la-linux.lo: usbdiskdirect/linux.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(usbdiskdirect_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT usbdiskdirect/usbdiskdirect_la-linux.lo -MD -MP -MF usbdiskdirect/$(DEPDIR)/usbdiskdirect_la-linux.Tpo -c -o usbdiskdirect/usbdiskdirect_la-linux.lo `test -f 'usbdiskdirect/linux.c' || echo '$(srcdir)/'`usbdiskdirect/linux.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) usbdiskdirect/$(DEPDIR)/usbdiskdirect_la-linux.Tpo usbdiskdirect/$(DEPDIR)/usbdiskdirect_la-linux.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='usbdiskdirect/linux.c' object='usbdiskdirect/usbdiskdirect_la-linux.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(usbdiskdirect_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o usbdiskdirect/usbdiskdirect_la-linux.lo `test -f 'usbdiskdirect/linux.c' || echo '$(srcdir)/'`usbdiskdirect/linux.c usbscsi/usbscsi_la-linux.lo: usbscsi/linux.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(usbscsi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT usbscsi/usbscsi_la-linux.lo -MD -MP -MF usbscsi/$(DEPDIR)/usbscsi_la-linux.Tpo -c -o usbscsi/usbscsi_la-linux.lo `test -f 'usbscsi/linux.c' || echo '$(srcdir)/'`usbscsi/linux.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) usbscsi/$(DEPDIR)/usbscsi_la-linux.Tpo usbscsi/$(DEPDIR)/usbscsi_la-linux.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='usbscsi/linux.c' object='usbscsi/usbscsi_la-linux.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(usbscsi_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o usbscsi/usbscsi_la-linux.lo `test -f 'usbscsi/linux.c' || echo '$(srcdir)/'`usbscsi/linux.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf disk/.libs disk/_libs -rm -rf libusb1/.libs libusb1/_libs -rm -rf ptpip/.libs ptpip/_libs -rm -rf serial/.libs serial/_libs -rm -rf usb/.libs usb/_libs -rm -rf usbdiskdirect/.libs usbdiskdirect/_libs -rm -rf usbscsi/.libs usbscsi/_libs distclean-libtool: -rm -f libtool config.lt install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-nobase_includeHEADERS: $(nobase_include_HEADERS) @$(NORMAL_INSTALL) @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \ echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \ $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \ done uninstall-nobase_includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) # 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, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) @case `sed 15q $(srcdir)/NEWS` in \ *"$(VERSION)"*) : ;; \ *) \ echo "NEWS not updated; not releasing" 1>&2; \ exit 1;; \ esac $(am__remove_distdir) 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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -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 $(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 $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ $(HEADERS) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(iolibdir)" "$(DESTDIR)$(udevscriptdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f disk/$(DEPDIR)/$(am__dirstamp) -rm -f disk/$(am__dirstamp) -rm -f libusb1/$(DEPDIR)/$(am__dirstamp) -rm -f libusb1/$(am__dirstamp) -rm -f ptpip/$(DEPDIR)/$(am__dirstamp) -rm -f ptpip/$(am__dirstamp) -rm -f serial/$(DEPDIR)/$(am__dirstamp) -rm -f serial/$(am__dirstamp) -rm -f usb/$(DEPDIR)/$(am__dirstamp) -rm -f usb/$(am__dirstamp) -rm -f usbdiskdirect/$(DEPDIR)/$(am__dirstamp) -rm -f usbdiskdirect/$(am__dirstamp) -rm -f usbscsi/$(DEPDIR)/$(am__dirstamp) -rm -f usbscsi/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-iolibLTLIBRARIES clean-libtool \ clean-udevscriptPROGRAMS mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf disk/$(DEPDIR) libusb1/$(DEPDIR) ptpip/$(DEPDIR) serial/$(DEPDIR) usb/$(DEPDIR) usbdiskdirect/$(DEPDIR) usbscsi/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-data-local install-docDATA \ install-iolibLTLIBRARIES install-nobase_includeHEADERS \ install-pkgconfigDATA install-udevscriptPROGRAMS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binSCRIPTS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf disk/$(DEPDIR) libusb1/$(DEPDIR) ptpip/$(DEPDIR) serial/$(DEPDIR) usb/$(DEPDIR) usbdiskdirect/$(DEPDIR) usbscsi/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binSCRIPTS uninstall-docDATA \ uninstall-iolibLTLIBRARIES uninstall-local \ uninstall-nobase_includeHEADERS uninstall-pkgconfigDATA \ uninstall-udevscriptPROGRAMS .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-iolibLTLIBRARIES clean-libtool clean-udevscriptPROGRAMS \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-compile distclean-generic \ distclean-hdr distclean-libtool 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-data-local install-docDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-iolibLTLIBRARIES install-man \ install-nobase_includeHEADERS install-pdf install-pdf-am \ install-pkgconfigDATA install-ps install-ps-am install-strip \ install-udevscriptPROGRAMS installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binSCRIPTS \ uninstall-docDATA uninstall-iolibLTLIBRARIES uninstall-local \ uninstall-nobase_includeHEADERS uninstall-pkgconfigDATA \ uninstall-udevscriptPROGRAMS .PRECIOUS: Makefile # Compatibility for header inclusions. # # - Old code has -I/usr/include/gphoto2 # #include # # - New code has -I/usr/include # #include install-data-local: rm -f $(DESTDIR)$(includedir)/gphoto2/gphoto2 $(INSTALL) -m 0755 -d $(DESTDIR)$(includedir)/gphoto2 $(LN_S) . $(DESTDIR)$(includedir)/gphoto2/gphoto2 uninstall-local: rm -f $(DESTDIR)$(includedir)/gphoto2/gphoto2 # 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. .NOEXPORT: libgphoto2-2.5.9/libgphoto2_port/ptpip/0000755000175000001440000000000012623156264015055 500000000000000libgphoto2-2.5.9/libgphoto2_port/ptpip/Makefile-files0000644000175000001440000000043412610415620017524 00000000000000# -*- Makefile -*- EXTRA_LTLIBRARIES += ptpip.la ptpip_la_LDFLAGS = $(iolib_ldflags) ptpip_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(INTL_CFLAGS) \ $(CPPFLAGS) ptpip_la_DEPENDENCIES = $(iolib_dependencies) ptpip_la_LIBADD = $(iolib_libadd) $(INTLLIBS) ptpip_la_SOURCES = ptpip/ptpip.c libgphoto2-2.5.9/libgphoto2_port/ptpip/ptpip.c0000644000175000001440000001467712610415536016310 00000000000000/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ /* ptpip.c * * Copyright (c) 2006 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #ifdef HAVE_FCNTL_H # include #endif #include #ifdef HAVE_SYS_TIME_H # include #endif #ifdef HAVE_SYS_PARAM_H # include #endif #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define CHECK(result) {int r=(result); if (r<0) return (r);} struct _GPPortPrivateLibrary { int dummy; /* unused yet */ }; GPPortType gp_port_library_type (void) { return GP_PORT_PTPIP; } /* thanks to Avahi this makes more trouble than its worth */ #undef HAVE_MDNS_BONJOUR #ifdef HAVE_MDNS_BONJOUR #include #include #include #include struct mdnsinfo { GPPortInfoList* list; const char* name; }; static void _ptpip_resolved ( DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char *fullname, const char *hosttarget, uint16_t port, uint16_t txtLen, const char *txtRecord, void *context ) { struct hostent* hent; struct in_addr inaddr; GPPortInfo *info; int i, cnt; struct mdnsinfo *mdnsi = context; char path[200]; if (errorCode != kDNSServiceErr_NoError) { GP_LOG_E ("Error on 2nd level query."); return; } GP_LOG_D ("fullname %s, hosttarget %s, port %d", fullname, hosttarget, htons(port)); cnt = TXTRecordGetCount (txtLen, txtRecord); for (i=0;ih_addr_list[0],hent->h_length); gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_PTPIP); gp_port_info_set_name (info, mdnsi->name); snprintf (path, sizeof(path), "ptpip:%s:%d", inet_ntoa(inaddr), htons(port)); gp_port_info_set_path (info, path); gp_port_info_list_append (mdnsi->list, info); } static void _ptpip_enumerate ( DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char *serviceName, const char *regtype, const char *replyDomain, void *context ) { struct mdnsinfo mdnsi; DNSServiceRef sd; if (errorCode != kDNSServiceErr_NoError) { GP_LOG_E ("Error on _ptp._tcp query."); return; } GP_LOG_D ("found %s, %s, %s", serviceName, regtype, replyDomain); mdnsi.list = context; mdnsi.name = serviceName; DNSServiceResolve (&sd, 0, interfaceIndex, serviceName, regtype, replyDomain, _ptpip_resolved, &mdnsi ); DNSServiceProcessResult (sd); DNSServiceRefDeallocate (sd); } #endif int gp_port_library_list (GPPortInfoList *list) { GPPortInfo info; #ifdef HAVE_MDNS_BONJOUR DNSServiceRef sd; DNSServiceErrorType ret; int fd; fd_set infds; struct timeval tv; #endif gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_PTPIP); gp_port_info_set_name (info, _("PTP/IP Connection")); gp_port_info_set_path (info, "ptpip:"); CHECK (gp_port_info_list_append (list, info)); /* Generic matcher so you can pass any IP address */ gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_PTPIP); gp_port_info_set_name (info, ""); gp_port_info_set_path (info, "^ptpip:"); CHECK (gp_port_info_list_append (list, info)); #ifdef HAVE_MDNS_BONJOUR ret = DNSServiceBrowse ( &sd, 0, /* unused flags */ 0, /* all ifaces */ "_ptp._tcp", NULL, _ptpip_enumerate, list ); /* We need to make it a non-blocking query */ fd = DNSServiceRefSockFD(sd); if (fd != -1) { FD_ZERO (&infds); FD_SET (fd, &infds); tv.tv_sec = 0; tv.tv_usec = 1; /* If we have input, we can try to process a result */ if (1 == select (fd+1, &infds, NULL, NULL, &tv)) DNSServiceProcessResult (sd); } DNSServiceRefDeallocate (sd); #endif return GP_OK; } static int gp_port_ptpip_init (GPPort *dev) { C_MEM (dev->pl = calloc (1, sizeof (GPPortPrivateLibrary))); return GP_OK; } static int gp_port_ptpip_exit (GPPort *port) { free (port->pl); port->pl = NULL; return GP_OK; } static int gp_port_ptpip_open (GPPort *port) { return GP_OK; } static int gp_port_ptpip_close (GPPort *port) { return GP_OK; } static int gp_port_ptpip_write (GPPort *port, const char *bytes, int size) { return GP_OK; } static int gp_port_ptpip_read(GPPort *port, char *bytes, int size) { return GP_OK; } static int gp_port_ptpip_update (GPPort *port) { return GP_OK; } GPPortOperations * gp_port_library_operations (void) { GPPortOperations *ops; ops = calloc (1, sizeof (GPPortOperations)); if (!ops) return NULL; ops->init = gp_port_ptpip_init; ops->exit = gp_port_ptpip_exit; ops->open = gp_port_ptpip_open; ops->close = gp_port_ptpip_close; ops->read = gp_port_ptpip_read; ops->write = gp_port_ptpip_write; ops->update = gp_port_ptpip_update; return ops; } libgphoto2-2.5.9/libgphoto2_port/libgphoto2_port-uninstalled.pc.in0000644000175000001440000000162312610415510022215 00000000000000# Note: As this file is sitting in ${top_builddir}, # ${top_builddir} ~= ${pcfiledir} # and ${top_srcdir} ~= ${pcfiledir}/@srcdir@ # Note: This refers to directory matches, not to string matches. # Note: ${pcfiledir} already is an absolute path name, so there is # no much sense prepending a ${pc_top_builddir} before it. prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ VERSION=@VERSION@ driverdir=@camlibdir@ Name: libgphoto2_port Description: Library for easy access to digital cameras URL: http://gphoto.org/proj/libgphoto2/ Version: @VERSION@ # This is what works for gphoto-suite Libs: ${pcfiledir}/libgphoto2_port/libgphoto2_port.la -lm Cflags: -I${pcfiledir}/@srcdir@ # This is what Sun wants (and does not work with gphoto-suite) # Libs: ${pc_top_builddir}/${pcfiledir}/libgphoto2_port/libgphoto2_port.la -lm # Cflags: -I${pc_top_builddir}/${pcfiledir} libgphoto2-2.5.9/libgphoto2_port/config.h.in0000644000175000001440000001526012615454334015670 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define if you want to disabled debugging. */ #undef DISABLE_DEBUGGING /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* The gettext domain we're using */ #undef GETTEXT_PACKAGE /* Define to 1 if you have the header file. */ #undef HAVE_ASM_IO_H /* Define if there is asm .symver support. */ #undef HAVE_ASM_SYMVERS /* Define to 1 if you have the header file. */ #undef HAVE_BYTESWAP_H /* The C compiler we're using */ #undef HAVE_CC /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_ENDIAN_H /* Define to 1 if you have the `endmntent' function. */ #undef HAVE_ENDMNTENT /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `flock' function. */ #undef HAVE_FLOCK /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define if you have GNU regex. */ #undef HAVE_GNU_REGEX /* Define if you have the iconv() function. */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_IOCTL_TYPES_H /* Define to 1 if you have the `pthread' library (-lpthread). */ #undef HAVE_LIBPTHREAD /* Define to 1 if you have the `regex' library (-lregex). */ #undef HAVE_LIBREGEX /* whether we compile with libusb support */ #undef HAVE_LIBUSB /* whether we compile with libusb-1.0 support */ #undef HAVE_LIBUSB1 /* Define if libusb-1.0 has libusb_strerror */ #undef HAVE_LIBUSB_STRERROR /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define if you have dev_lock/lockdev based locking. */ #undef HAVE_LOCKDEV /* Whether libltdl (of libtool fame) is present */ #undef HAVE_LTDL /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_MNTENT_H /* whether struct mnttag has mnt_mountp field */ #undef HAVE_MNTTAB /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* whether we have regex.h */ #undef HAVE_REGEX /* Define if you have TIOCM_TRS. */ #undef HAVE_RTS_IOCTL /* Define to 1 if you have the header file. */ #undef HAVE_SCSI_SG_H /* Whether you have serial support enabled */ #undef HAVE_SERIAL /* Define to 1 if you have the `setmntent' function. */ #undef HAVE_SETMNTENT /* Define to 1 if you have the header file. */ #undef HAVE_SGETTY_H /* Define to 1 if you have the header file. */ #undef HAVE_SGTTY_H /* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* 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 header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H /* 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_MNTENT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MNTTAB_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SELECT_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_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_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_TERMIO_H /* Define to 1 if you have the header file. */ #undef HAVE_TTOLD_H /* Define if you have ttylock based tty locking. */ #undef HAVE_TTYLOCK /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Whether we have the va_copy() function */ #undef HAVE_VA_COPY /* Define to 1 if you have the `vsnprintf' function. */ #undef HAVE_VSNPRINTF /* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* gphoto development mailing list */ #undef MAIL_GPHOTO_DEVEL /* gphoto translation mailing list */ #undef MAIL_GPHOTO_TRANSLATION /* gphoto user mailing list */ #undef MAIL_GPHOTO_USER /* 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 home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* camera list with support status */ #undef URL_DIGICAM_LIST /* gphoto project home page */ #undef URL_GPHOTO_HOME /* gphoto sourceforge project page */ #undef URL_GPHOTO_PROJECT /* jphoto home page */ #undef URL_JPHOTO_HOME /* information about using USB mass storage */ #undef URL_USB_MASSSTORAGE /* Version number of package */ #undef VERSION /* 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 /* __va_copy() was the originally proposed name */ #undef va_copy libgphoto2-2.5.9/libgphoto2_port/Makefile.am0000644000175000001440000000576112610415620015674 00000000000000######################################################################## # Usage instructions ######################################################################## # If you only want to build a single iolib (say usb.la), run # gmake usb.la # or make usb.la # # If you only want to install a single camlib or two, run # make IOLIB_LTLIST="usb.la ptpip.la" install-iolibLTLIBRARIES ######################################################################## CLEANFILES = EXTRA_DIST = EXTRA_LTLIBRARIES = udevscript_PROGRAMS = ## These two definitions look obsolete: ## Specify some includes and versioning #AM_CPPFLAGS = -I@srcdir@ $(VERSION_FLAGS) #VERSION_FLAGS = -DLIBGPPORT_VERSION=\"@LIBGPPORT_VERSION@\" -DHAVE_TERMIOS_H ## Executable files bin_SCRIPTS = gphoto2-port-config # The . stands for the current dir, i.e. the iolibs to build. SUBDIRS = po libgphoto2_port test . doc gphoto-m4 ######################################################################## # All iolibs are defined as EXTRA_LTLIBRARIES. This requires that # all iolibs have -rpath set explicitly in foobar_la_LDFLAGS. # You're probably best off by using the iolib_* variables defined # below. iolib_LTLIBRARIES = $(IOLIB_LTLIST) ######################################################################## # Define the compile/link/etc. flags common to all iolibs in one place, # i.e. here. iolib_dependencies = $(top_srcdir)/iolib.sym iolib_ldflags = -module -no-undefined -avoid-version \ -export-dynamic \ -export-symbols $(top_srcdir)/iolib.sym \ -rpath '$(iolibdir)' iolib_libadd = $(top_builddir)/libgphoto2_port/libgphoto2_port.la AM_CPPFLAGS += -I$(top_srcdir) include disk/Makefile-files include ptpip/Makefile-files include serial/Makefile-files include usb/Makefile-files include libusb1/Makefile-files include usbdiskdirect/Makefile-files include usbscsi/Makefile-files ######################################################################## # Miscellaneous stuff EXTRA_DIST += \ AUTHORS \ ChangeLog \ COPYING.LIB \ NEWS \ README \ iolib.sym \ gphoto2-port-config.in doc_DATA = AUTHORS README NEWS ACLOCAL_AMFLAGS = -I auto-m4 -I gphoto-m4 EXTRA_DIST += libgphoto2_port.pc.in pkgconfig_DATA = libgphoto2_port.pc EXTRA_DIST += libgphoto2_port-uninstalled.pc.in noinst_DATA = libgphoto2_port-uninstalled.pc # ship headers nobase_include_HEADERS = \ gphoto2/gphoto2-port.h \ gphoto2/gphoto2-port-info-list.h \ gphoto2/gphoto2-port-log.h \ gphoto2/gphoto2-port-version.h \ gphoto2/gphoto2-port-portability.h \ gphoto2/gphoto2-port-result.h EXTRA_DIST += gphoto2/gphoto2-port-library.h # Compatibility for header inclusions. # # - Old code has -I/usr/include/gphoto2 # #include # # - New code has -I/usr/include # #include install-data-local: rm -f $(DESTDIR)$(includedir)/gphoto2/gphoto2 $(INSTALL) -m 0755 -d $(DESTDIR)$(includedir)/gphoto2 $(LN_S) . $(DESTDIR)$(includedir)/gphoto2/gphoto2 uninstall-local: rm -f $(DESTDIR)$(includedir)/gphoto2/gphoto2 libgphoto2-2.5.9/libgphoto2_port/libusb1/0000755000175000001440000000000012623156264015262 500000000000000libgphoto2-2.5.9/libgphoto2_port/libusb1/libusb1.c0000644000175000001440000012777312623143566016731 00000000000000/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ /* gphoto2-port-usb.c * * Copyright 2001 Lutz Mueller * Copyright 1999-2000 Johannes Erdfelt * Copyright 2011,2015 Marcus Meissner * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define C_GP(RESULT) do {\ int _r=(RESULT);\ if (_rdevslastchecked) { if (pl->nrofdevs) libusb_free_device_list (pl->devs, 1); free (pl->descs); pl->nrofdevs = 0; pl->devs = NULL; pl->descs = NULL; } if (!pl->nrofdevs) { int i; pl->nrofdevs = libusb_get_device_list (pl->ctx, &pl->devs); C_MEM (pl->descs = malloc (sizeof(pl->descs[0])*pl->nrofdevs)); for (i=0;inrofdevs;i++) LOG_ON_LIBUSB_E (libusb_get_device_descriptor(pl->devs[i], &pl->descs[i])); } time (&pl->devslastchecked); return pl->nrofdevs; } int gp_port_library_list (GPPortInfoList *list) { GPPortInfo info; int nrofdevices = 0; int d, i, i1, i2, unknownint; libusb_context *ctx; libusb_device **devs = NULL; int nrofdevs = 0; struct libusb_device_descriptor *descs; C_LIBUSB (libusb_init (&ctx), GP_ERROR_IO); /* TODO: make sure libusb_exit gets called in all error paths inside this function */ /* generic matcher. This will catch passed XXX,YYY entries for instance. */ C_GP (gp_port_info_new (&info)); gp_port_info_set_type (info, GP_PORT_USB); gp_port_info_set_name (info, ""); gp_port_info_set_path (info, "^usb:"); C_GP (gp_port_info_list_append (list, info)); nrofdevs = libusb_get_device_list (ctx, &devs); C_MEM (descs = malloc (sizeof(descs[0])*nrofdevs)); for (i=0;ibNumInterfaces; i1++) for (i2 = 0; i2 < config->interface[i1].num_altsetting; i2++) { const struct libusb_interface_descriptor *intf = &config->interface[i1].altsetting[i2]; if ( (intf->bInterfaceClass == LIBUSB_CLASS_HID) || (intf->bInterfaceClass == LIBUSB_CLASS_PRINTER) || (intf->bInterfaceClass == LIBUSB_CLASS_COMM) || (intf->bInterfaceClass == 0xe0) /* wireless/bluetooth*/ ) continue; unknownint++; } libusb_free_config_descriptor (config); } /* when we find only hids, printer or comm ifaces ... skip this */ if (!unknownint) continue; /* Note: We do not skip USB storage. Some devices can support both, * and the Ricoh erronously reports it. */ nrofdevices++; } #if 0 /* If we already added usb:, and have 0 or 1 devices we have nothing to do. * This should be the standard use case. */ /* We never want to return just "usb:" ... also return "usb:XXX,YYY", and * let upper layers filter out the usb: */ if (nrofdevices <= 1) return (GP_OK); #endif /* Redo the same bus/device walk, but now add the ports with usb:x,y notation, * so we can address all USB devices. */ for (d = 0; d < nrofdevs; d++) { char path[200]; /* Devices which are definitely not cameras. */ if ( (descs[d].bDeviceClass == LIBUSB_CLASS_HUB) || (descs[d].bDeviceClass == LIBUSB_CLASS_HID) || (descs[d].bDeviceClass == LIBUSB_CLASS_PRINTER) || (descs[d].bDeviceClass == LIBUSB_CLASS_COMM) ) continue; /* excepts HUBs, usually the interfaces have the classes, not * the device */ unknownint = 0; for (i = 0; i < descs[d].bNumConfigurations; i++) { struct libusb_config_descriptor *config; if (LOG_ON_LIBUSB_E (libusb_get_config_descriptor (devs[d], i, &config))) { unknownint++; continue; } for (i1 = 0; i1 < config->bNumInterfaces; i1++) for (i2 = 0; i2 < config->interface[i1].num_altsetting; i2++) { const struct libusb_interface_descriptor *intf = &config->interface[i1].altsetting[i2]; if ( (intf->bInterfaceClass == LIBUSB_CLASS_HID) || (intf->bInterfaceClass == LIBUSB_CLASS_PRINTER) || (intf->bInterfaceClass == LIBUSB_CLASS_COMM)) continue; unknownint++; } libusb_free_config_descriptor (config); } /* when we find only hids, printer or comm ifaces ... skip this */ if (!unknownint) continue; /* Note: We do not skip USB storage. Some devices can support both, * and the Ricoh erronously reports it. */ C_GP (gp_port_info_new (&info)); gp_port_info_set_type (info, GP_PORT_USB); gp_port_info_set_name (info, "Universal Serial Bus"); snprintf (path,sizeof(path), "usb:%03d,%03d", libusb_get_bus_number (devs[d]), libusb_get_device_address (devs[d]) ); gp_port_info_set_path (info, path); C_GP (gp_port_info_list_append (list, info)); } /* This will only be added if no other device was ever added. * Users doing "usb:" usage will enter the regular expression matcher case. */ if (nrofdevices == 0) { C_GP (gp_port_info_new (&info)); gp_port_info_set_type (info, GP_PORT_USB); gp_port_info_set_name (info, "Universal Serial Bus"); gp_port_info_set_path (info, "usb:"); C_GP (gp_port_info_list_append (list, info)); } libusb_free_device_list (devs, 1); libusb_exit (ctx); /* should free all stuff above */ free (descs); return (GP_OK); } static int gp_libusb1_init (GPPort *port) { C_MEM (port->pl = malloc (sizeof (GPPortPrivateLibrary))); memset (port->pl, 0, sizeof (GPPortPrivateLibrary)); port->pl->config = port->pl->interface = port->pl->altsetting = -1; if (LOG_ON_LIBUSB_E (libusb_init (&port->pl->ctx))) { free (port->pl); port->pl = NULL; return GP_ERROR_IO; } #if 0 libusb_set_debug (port->pl->ctx, 255); #endif return GP_OK; } static int gp_libusb1_exit (GPPort *port) { if (port->pl) { free (port->pl->descs); if (port->pl->nrofdevs) libusb_free_device_list (port->pl->devs, 1); libusb_exit (port->pl->ctx); free (port->pl); port->pl = NULL; } return GP_OK; } static int gp_libusb1_find_path_lib(GPPort *port); static int gp_libusb1_queue_interrupt_urbs (GPPort *port); static int gp_libusb1_open (GPPort *port) { int ret; GP_LOG_D ("()"); C_PARAMS (port); if (!port->pl->d) { gp_libusb1_find_path_lib(port); C_PARAMS (port->pl->d); } C_LIBUSB (libusb_open (port->pl->d, &port->pl->dh), GP_ERROR_IO); if (!port->pl->dh) { int saved_errno = errno; gp_port_set_error (port, _("Could not open USB device (%s)."), strerror(saved_errno)); return GP_ERROR_IO; } ret = libusb_kernel_driver_active (port->pl->dh, port->settings.usb.interface); #if 0 if (strstr(name,"usbfs") || strstr(name,"storage")) { /* other gphoto instance most likely */ gp_port_set_error (port, _("Camera is already in use.")); return GP_ERROR_IO_LOCK; } #endif switch (ret) { case 1: GP_LOG_D ("Device has a kernel driver attached (%d), detaching it now.", ret); ret = libusb_detach_kernel_driver (port->pl->dh, port->settings.usb.interface); if (ret < 0) gp_port_set_error (port, _("Could not detach kernel driver of camera device.")); else port->pl->detached = 1; case 0: /* not detached */ break; default: gp_port_set_error (port, _("Could not query kernel driver of device.")); break; } GP_LOG_D ("claiming interface %d", port->settings.usb.interface); if (LOG_ON_LIBUSB_E (libusb_claim_interface (port->pl->dh, port->settings.usb.interface))) { int saved_errno = errno; gp_port_set_error (port, _("Could not claim interface %d (%s). " "Make sure no other program (%s) " "or kernel module (such as %s) " "is using the device and you have " "read/write access to the device."), port->settings.usb.interface, strerror(saved_errno), #ifdef __linux__ "gvfs-gphoto2-volume-monitor", #else #if defined(__APPLE__) _("MacOS PTPCamera service"), #else _("unknown libgphoto2 using program"), #endif #endif "sdc2xx, stv680, spca50x"); return GP_ERROR_IO_USB_CLAIM; } gp_libusb1_queue_interrupt_urbs (port); return GP_OK; } static int _close_async_interrupts(GPPort *port) { int i, haveone; struct timeval tv; C_PARAMS (port); if (port->pl->dh == NULL) return GP_OK; /* Catch up on pending ones */ tv.tv_sec = 0; tv.tv_usec = 1000; LOG_ON_LIBUSB_E (libusb_handle_events_timeout(port->pl->ctx, &tv)); /* Now cancel and free the async transfers */ for (i = 0; i < sizeof(port->pl->transfers)/sizeof(port->pl->transfers[0]); i++) { if (port->pl->transfers[i]) { GP_LOG_D("canceling transfer %d:%p (status %d)",i, port->pl->transfers[i], port->pl->transfers[i]->status); /* this happens if the transfer is completed for instance, but not reaped. we cannot cancel it. */ if (LOG_ON_LIBUSB_E(libusb_cancel_transfer(port->pl->transfers[i])) < 0) { libusb_free_transfer (port->pl->transfers[i]); port->pl->transfers[i] = NULL; } } } /* Do just one round ... this should be sufficient and avoids endless loops. */ haveone = 0; for (i = 0; i < sizeof(port->pl->transfers)/sizeof(port->pl->transfers[0]); i++) { if (port->pl->transfers[i]) { GP_LOG_D("checking: transfer %d:%p status %d",i, port->pl->transfers[i], port->pl->transfers[i]->status); haveone = 1; } } if (haveone) LOG_ON_LIBUSB_E (libusb_handle_events(port->pl->ctx)); return GP_OK; } static int gp_libusb1_close (GPPort *port) { C_PARAMS (port); if (port->pl->dh == NULL) return GP_OK; _close_async_interrupts(port); if (libusb_release_interface (port->pl->dh, port->settings.usb.interface) < 0) { int saved_errno = errno; gp_port_set_error (port, _("Could not release interface %d (%s)."), port->settings.usb.interface, strerror(saved_errno)); return GP_ERROR_IO; } #if 0 /* This confuses the EOS 5d camera and possible other EOSs. *sigh* */ /* This is only for our very special Canon cameras which need a good * whack after close, otherwise they get timeouts on reconnect. */ if (port->pl->d->descriptor.idVendor == 0x04a9) { if (usb_reset (port->pl->dh) < 0) { int saved_errno = errno; gp_port_set_error (port, _("Could not reset " "USB port (%s)."), strerror(saved_errno)); return (GP_ERROR_IO); } } #endif if (port->pl->detached) { if (LOG_ON_LIBUSB_E (libusb_attach_kernel_driver (port->pl->dh, port->settings.usb.interface))) gp_port_set_error (port, _("Could not reattach kernel driver of camera device.")); } libusb_close (port->pl->dh); free (port->pl->irqs); free (port->pl->irqlens); port->pl->dh = NULL; return GP_OK; } static int gp_libusb1_clear_halt_lib(GPPort *port, int ep) { unsigned char internal_ep; C_PARAMS (port && port->pl->dh); switch (ep) { case GP_PORT_USB_ENDPOINT_IN : internal_ep = port->settings.usb.inep; break; case GP_PORT_USB_ENDPOINT_OUT : internal_ep = port->settings.usb.outep; break; case GP_PORT_USB_ENDPOINT_INT : internal_ep = port->settings.usb.intep; break; default: gp_port_set_error (port, "bad EndPoint argument 0x%x", ep); return GP_ERROR_BAD_PARAMETERS; } C_LIBUSB (libusb_clear_halt(port->pl->dh, internal_ep), GP_ERROR_IO_USB_CLEAR_HALT); return GP_OK; } static int gp_libusb1_write (GPPort *port, const char *bytes, int size) { int curwritten; C_PARAMS (port && port->pl->dh); C_LIBUSB (libusb_bulk_transfer (port->pl->dh, port->settings.usb.outep, (unsigned char*)bytes, size, &curwritten, port->timeout), GP_ERROR_IO_WRITE); return curwritten; } static int gp_libusb1_read(GPPort *port, char *bytes, int size) { int curread; C_PARAMS (port && port->pl->dh); C_LIBUSB (libusb_bulk_transfer (port->pl->dh, port->settings.usb.inep, (unsigned char*)bytes, size, &curread, port->timeout), GP_ERROR_IO_READ ); return curread; } static int gp_libusb1_reset(GPPort *port) { C_PARAMS (port && port->pl->dh); /* earlier libusb 1 versions get crashes otherwise */ _close_async_interrupts(port); C_LIBUSB (libusb_reset_device (port->pl->dh), GP_ERROR_IO); return GP_OK; } static void LIBUSB_CALL _cb_irq(struct libusb_transfer *transfer) { struct _GPPortPrivateLibrary *pl = transfer->user_data; int i; GP_LOG_D("%p with status %d", transfer, transfer->status); if ( (transfer->status == LIBUSB_TRANSFER_CANCELLED) || (transfer->status == LIBUSB_TRANSFER_TIMED_OUT) || /* on close */ (transfer->status == LIBUSB_TRANSFER_NO_DEVICE) /* on removing camera */ ) { /* Only requeue the global transfers, not temporary ones */ for (i = 0; i < sizeof(pl->transfers)/sizeof(pl->transfers[0]); i++) { if (pl->transfers[i] == transfer) { libusb_free_transfer (transfer); pl->transfers[i] = NULL; return; } } return; } if (transfer->status != LIBUSB_TRANSFER_COMPLETED) { GP_LOG_D("transfer %p should be in LIBUSB_TRANSFER_COMPLETED, but is %d!", transfer, transfer->status); return; } if (transfer->actual_length) { GP_LOG_DATA ((char*)transfer->buffer, transfer->actual_length, "interrupt"); pl->irqs = realloc(pl->irqs, sizeof(pl->irqs[0])*(pl->nrofirqs+1)); pl->irqlens = realloc(pl->irqlens, sizeof(pl->irqlens[0])*(pl->nrofirqs+1)); pl->irqlens[pl->nrofirqs] = transfer->actual_length; pl->irqs[pl->nrofirqs] = malloc(transfer->actual_length); memcpy(pl->irqs[pl->nrofirqs],transfer->buffer,transfer->actual_length); pl->nrofirqs++; } GP_LOG_D("requeuing complete transfer %p", transfer); LOG_ON_LIBUSB_E(libusb_submit_transfer(transfer)); return; } static int gp_libusb1_queue_interrupt_urbs (GPPort *port) { unsigned int i; for (i = 0; i < sizeof(port->pl->transfers)/sizeof(port->pl->transfers[0]); i++) { unsigned char *buf; port->pl->transfers[i] = libusb_alloc_transfer(0); buf = malloc(256); /* FIXME: safe size? */ libusb_fill_interrupt_transfer(port->pl->transfers[i], port->pl->dh, port->settings.usb.intep, buf, 256, _cb_irq, port->pl, 0 ); port->pl->transfers[i]->flags |= LIBUSB_TRANSFER_FREE_BUFFER; LOG_ON_LIBUSB_E(libusb_submit_transfer (port->pl->transfers[i])); } return GP_OK; } static int gp_libusb1_check_int (GPPort *port, char *bytes, int size, int timeout) { int ret; struct timeval tv; C_PARAMS (port && port->pl->dh && timeout >= 0); if (port->pl->nrofirqs) goto handleirq; tv.tv_sec = timeout/1000; tv.tv_usec = (timeout%1000)*1000; ret = LOG_ON_LIBUSB_E (libusb_handle_events_timeout(port->pl->ctx, &tv)); if (port->pl->nrofirqs) goto handleirq; if (ret < LIBUSB_SUCCESS) return translate_libusb_error(ret, GP_ERROR_IO_READ); return GP_ERROR_TIMEOUT; handleirq: if (size > port->pl->irqlens[0]) size = port->pl->irqlens[0]; memcpy(bytes, port->pl->irqs[0], size); memmove(port->pl->irqs,port->pl->irqs+1,sizeof(port->pl->irqs[0])*(port->pl->nrofirqs-1)); memmove(port->pl->irqlens,port->pl->irqlens+1,sizeof(port->pl->irqlens[0])*(port->pl->nrofirqs-1)); port->pl->nrofirqs--; return size; } static int gp_libusb1_msg(GPPort *port, int request, int value, int index, char *bytes, int size, int flags, int default_error) { int handled = 0; C_PARAMS (port && port->pl->dh); C_LIBUSB (handled = libusb_control_transfer (port->pl->dh, flags, request, value, index, (unsigned char*)bytes, size, port->timeout), default_error); return handled; } static int gp_libusb1_msg_write_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { return gp_libusb1_msg (port, request, value, index, bytes, size, LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE, GP_ERROR_IO_WRITE); } static int gp_libusb1_msg_read_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { return gp_libusb1_msg (port, request, value, index, bytes, size, LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_IN, GP_ERROR_IO_READ); } /* The next two functions support the nonstandard request types 0x41 (write) * and 0xc1 (read), which are occasionally needed. */ static int gp_libusb1_msg_interface_write_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { return gp_libusb1_msg (port, request, value, index, bytes, size, LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_INTERFACE, GP_ERROR_IO_WRITE); } static int gp_libusb1_msg_interface_read_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { return gp_libusb1_msg (port, request, value, index, bytes, size, LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_INTERFACE | LIBUSB_ENDPOINT_IN, GP_ERROR_IO_READ); } /* The next two functions support the nonstandard request types 0x21 (write) * and 0xa1 (read), which are occasionally needed. */ static int gp_libusb1_msg_class_write_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { return gp_libusb1_msg (port, request, value, index, bytes, size, LIBUSB_REQUEST_TYPE_CLASS | LIBUSB_RECIPIENT_INTERFACE, GP_ERROR_IO_WRITE); } static int gp_libusb1_msg_class_read_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { return gp_libusb1_msg (port, request, value, index, bytes, size, LIBUSB_REQUEST_TYPE_CLASS | LIBUSB_RECIPIENT_INTERFACE | LIBUSB_ENDPOINT_IN, GP_ERROR_IO_READ); } /* * This function applys changes to the device. * * New settings are in port->settings_pending and the old ones * are in port->settings. Compare them first and only call * usb_set_configuration() and usb_set_altinterface() if needed * since some USB devices does not like it if this is done * more than necessary (Canon Digital IXUS 300 for one). * */ static int gp_libusb1_update (GPPort *port) { int ifacereleased = FALSE, changedone = FALSE; C_PARAMS (port && port->pl && port->pl->ctx); GP_LOG_D ("(old int=%d, conf=%d, alt=%d) port %s, (new int=%d, conf=%d, alt=%d) port %s", port->settings.usb.interface, port->settings.usb.config, port->settings.usb.altsetting, port->settings.usb.port, port->settings_pending.usb.interface, port->settings_pending.usb.config, port->settings_pending.usb.altsetting, port->settings_pending.usb.port ); /* do not overwrite it ... we need to set it. if (port->pl->interface == -1) port->pl->interface = port->settings.usb.interface; if (port->pl->config == -1) port->pl->config = port->settings.usb.config; if (port->pl->altsetting == -1) port->pl->altsetting = port->settings.usb.altsetting; */ /* The portname can also be changed with the device still fully closed. */ memcpy(&port->settings.usb.port, &port->settings_pending.usb.port, sizeof(port->settings.usb.port)); if (!port->pl->dh) { GP_LOG_D("lowlevel libusb1 port not yet opened, no need for libusb changes"); return GP_OK; /* the port might not be opened, yet. that is ok */ } memcpy(&port->settings.usb, &port->settings_pending.usb, sizeof(port->settings.usb)); /* The interface changed. release the old, claim the new ... */ if (port->settings.usb.interface != port->pl->interface) { GP_LOG_D ("changing interface %d -> %d", port->pl->interface, port->settings.usb.interface); if (LOG_ON_LIBUSB_E (libusb_release_interface (port->pl->dh, port->pl->interface))) { /* Not a hard error for now. -Marcus */ } else { GP_LOG_D ("claiming interface %d", port->settings.usb.interface); C_LIBUSB (libusb_claim_interface (port->pl->dh, port->settings.usb.interface), GP_ERROR_IO_USB_CLAIM); port->pl->interface = port->settings.usb.interface; } changedone = TRUE; } if (port->settings.usb.config != port->pl->config) { GP_LOG_D ("changing config %d -> %d", port->pl->config, port->settings.usb.config); /* This can only be changed with the interface released. * This is a hard requirement since 2.6.12. */ if (LOG_ON_LIBUSB_E (libusb_release_interface (port->pl->dh, port->settings.usb.interface))) { ifacereleased = FALSE; } else { ifacereleased = TRUE; } if (LOG_ON_LIBUSB_E (libusb_set_configuration(port->pl->dh, port->settings.usb.config))) { #if 0 /* setting the configuration failure is not fatal */ int saved_errno = errno; gp_port_set_error (port, _("Could not set config %d/%d (%s)"), port->settings.usb.interface, port->settings.usb.config, strerror(saved_errno)); return GP_ERROR_IO_UPDATE; #endif GP_LOG_E ("setting configuration from %d to %d failed, but continuing...", port->pl->config, port->settings.usb.config); } GP_LOG_D ("Changed usb.config from %d to %d", port->pl->config, port->settings.usb.config); if (ifacereleased) { GP_LOG_D ("claiming interface %d", port->settings.usb.interface); LOG_ON_LIBUSB_E (libusb_claim_interface (port->pl->dh, port->settings.usb.interface)); } /* * Copy at once if something else fails so that this * does not get re-applied */ port->pl->config = port->settings.usb.config; changedone = TRUE; } /* This can be changed with interface claimed. (And I think it must be claimed.) */ if (port->settings.usb.altsetting != port->pl->altsetting) { if (LOG_ON_LIBUSB_E (libusb_set_interface_alt_setting (port->pl->dh, port->settings.usb.interface, port->settings.usb.altsetting))) { int saved_errno = errno; gp_port_set_error (port, _("Could not set altsetting from %d " "to %d (%s)"), port->pl->altsetting, port->settings.usb.altsetting, strerror(saved_errno)); return GP_ERROR_IO_UPDATE; } GP_LOG_D ("Changed usb.altsetting from %d to %d", port->pl->altsetting, port->settings.usb.altsetting); port->pl->altsetting = port->settings.usb.altsetting; changedone = TRUE; } /* requeue the interrupts */ if (changedone) gp_libusb1_queue_interrupt_urbs (port); return GP_OK; } static int gp_libusb1_find_ep(libusb_device *dev, int config, int interface, int altsetting, int direction, int type) { const struct libusb_interface_descriptor *intf; struct libusb_config_descriptor *confdesc; int i; if (LOG_ON_LIBUSB_E (libusb_get_config_descriptor (dev, config, &confdesc))) return -1; intf = &confdesc->interface[interface].altsetting[altsetting]; for (i = 0; i < intf->bNumEndpoints; i++) { if (((intf->endpoint[i].bEndpointAddress & LIBUSB_ENDPOINT_DIR_MASK) == direction) && ((intf->endpoint[i].bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) == type)) { unsigned char ret; ret = intf->endpoint[i].bEndpointAddress; /* intf is cleared after next line, copy epaddr! */ libusb_free_config_descriptor (confdesc); return ret; } } libusb_free_config_descriptor (confdesc); return -1; } static int gp_libusb1_find_first_altsetting(struct libusb_device *dev, int *config, int *interface, int *altsetting) { int i, i1, i2; struct libusb_device_descriptor desc; if (LOG_ON_LIBUSB_E (libusb_get_device_descriptor (dev, &desc))) return -1; for (i = 0; i < desc.bNumConfigurations; i++) { struct libusb_config_descriptor *confdesc; if (LOG_ON_LIBUSB_E (libusb_get_config_descriptor (dev, i, &confdesc))) return -1; for (i1 = 0; i1 < confdesc->bNumInterfaces; i1++) for (i2 = 0; i2 < confdesc->interface[i1].num_altsetting; i2++) if (confdesc->interface[i1].altsetting[i2].bNumEndpoints) { *config = i; *interface = i1; *altsetting = i2; libusb_free_config_descriptor (confdesc); return 0; } libusb_free_config_descriptor (confdesc); } return -1; } static int gp_libusb1_find_path_lib(GPPort *port) { char *s; int d, busnr = 0, devnr = 0; GPPortPrivateLibrary *pl; C_PARAMS (port); pl = port->pl; s = strchr (port->settings.usb.port,':'); C_PARAMS (s && (s[1] != '\0')); C_PARAMS (sscanf (s+1, "%d,%d", &busnr, &devnr) == 2); /* usb:%d,%d */ pl->nrofdevs = load_devicelist (port->pl); for (d = 0; d < pl->nrofdevs; d++) { struct libusb_config_descriptor *confdesc; int config = -1, interface = -1, altsetting = -1; if (busnr != libusb_get_bus_number (pl->devs[d])) continue; if (devnr != libusb_get_device_address (pl->devs[d])) continue; port->pl->d = pl->devs[d]; GP_LOG_D ("Found path %s", port->settings.usb.port); /* Use the first config, interface and altsetting we find */ gp_libusb1_find_first_altsetting(pl->devs[d], &config, &interface, &altsetting); if (LOG_ON_LIBUSB_E (libusb_get_config_descriptor (pl->devs[d], config, &confdesc))) continue; /* Set the defaults */ port->settings.usb.config = confdesc->bConfigurationValue; port->settings.usb.interface = confdesc->interface[interface].altsetting[altsetting].bInterfaceNumber; port->settings.usb.altsetting = confdesc->interface[interface].altsetting[altsetting].bAlternateSetting; port->settings.usb.inep = gp_libusb1_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_BULK); port->settings.usb.outep = gp_libusb1_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_OUT, LIBUSB_TRANSFER_TYPE_BULK); port->settings.usb.intep = gp_libusb1_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_INTERRUPT); port->settings.usb.maxpacketsize = libusb_get_max_packet_size (pl->devs[d], port->settings.usb.inep); GP_LOG_D ("Detected defaults: config %d, interface %d, altsetting %d, " "inep %02x, outep %02x, intep %02x, class %02x, subclass %02x", port->settings.usb.config, port->settings.usb.interface, port->settings.usb.altsetting, port->settings.usb.inep, port->settings.usb.outep, port->settings.usb.intep, confdesc->interface[interface].altsetting[altsetting].bInterfaceClass, confdesc->interface[interface].altsetting[altsetting].bInterfaceSubClass ); libusb_free_config_descriptor (confdesc); return GP_OK; } #if 0 gp_port_set_error (port, _("Could not find USB device " "(vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer."), idvendor, idproduct); #endif return GP_ERROR_IO_USB_FIND; } static int gp_libusb1_find_device_lib(GPPort *port, int idvendor, int idproduct) { char *s; int d, busnr = 0, devnr = 0; GPPortPrivateLibrary *pl; C_PARAMS (port); pl = port->pl; s = strchr (port->settings.usb.port,':'); if (s && (s[1] != '\0')) { /* usb:%d,%d */ if (sscanf (s+1, "%d,%d", &busnr, &devnr) != 2) { devnr = 0; sscanf (s+1, "%d", &busnr); } } /* * 0x0000 idvendor is not valid. * 0x0000 idproduct is ok. * Should the USB layer report that ? I don't know. * Better to check here. */ if (!idvendor) { gp_port_set_error (port, _("The supplied vendor or product " "id (0x%x,0x%x) is not valid."), idvendor, idproduct); return GP_ERROR_BAD_PARAMETERS; } pl->nrofdevs = load_devicelist (port->pl); for (d = 0; d < pl->nrofdevs; d++) { struct libusb_config_descriptor *confdesc; int config = -1, interface = -1, altsetting = -1; if ((pl->descs[d].idVendor != idvendor) || (pl->descs[d].idProduct != idproduct)) continue; if (busnr && (busnr != libusb_get_bus_number (pl->devs[d]))) continue; if (devnr && (devnr != libusb_get_device_address (pl->devs[d]))) continue; port->pl->d = pl->devs[d]; GP_LOG_D ("Looking for USB device (vendor 0x%x, product 0x%x)... found.", idvendor, idproduct); /* Use the first config, interface and altsetting we find */ gp_libusb1_find_first_altsetting(pl->devs[d], &config, &interface, &altsetting); if (LOG_ON_LIBUSB_E (libusb_get_config_descriptor (pl->devs[d], config, &confdesc))) continue; /* Set the defaults */ if (confdesc->interface[interface].altsetting[altsetting].bInterfaceClass == LIBUSB_CLASS_MASS_STORAGE) { GP_LOG_D ("USB device (vendor 0x%x, product 0x%x) is a mass" " storage device, and might not function with gphoto2." " Reference: %s", idvendor, idproduct, URL_USB_MASSSTORAGE); } port->settings.usb.config = confdesc->bConfigurationValue; port->settings.usb.interface = confdesc->interface[interface].altsetting[altsetting].bInterfaceNumber; port->settings.usb.altsetting = confdesc->interface[interface].altsetting[altsetting].bAlternateSetting; port->settings.usb.inep = gp_libusb1_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_BULK); port->settings.usb.outep = gp_libusb1_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_OUT, LIBUSB_TRANSFER_TYPE_BULK); port->settings.usb.intep = gp_libusb1_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_INTERRUPT); port->settings.usb.maxpacketsize = libusb_get_max_packet_size (pl->devs[d], port->settings.usb.inep); GP_LOG_D ("Detected defaults: config %d, interface %d, altsetting %d, " "inep %02x, outep %02x, intep %02x, class %02x, subclass %02x", port->settings.usb.config, port->settings.usb.interface, port->settings.usb.altsetting, port->settings.usb.inep, port->settings.usb.outep, port->settings.usb.intep, confdesc->interface[interface].altsetting[altsetting].bInterfaceClass, confdesc->interface[interface].altsetting[altsetting].bInterfaceSubClass ); libusb_free_config_descriptor (confdesc); return GP_OK; } #if 0 gp_port_set_error (port, _("Could not find USB device " "(vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer."), idvendor, idproduct); #endif return GP_ERROR_IO_USB_FIND; } /* This function reads the Microsoft OS Descriptor and looks inside to * find if it is a MTP device. This is the similar to the way that * Windows Media Player 10 uses. * It is documented to some degree on various internet pages. */ static int gp_libusb1_match_mtp_device(struct libusb_device *dev,int *configno, int *interfaceno, int *altsettingno) { /* Marcus: Avoid this probing altogether, its too unstable on some devices */ return 0; #if 0 char buf[1000], cmd; int ret,i,i1,i2, xifaces,xnocamifaces; usb_dev_handle *devh; /* All of them are "vendor specific" device class */ #if 0 if ((desc.bDeviceClass!=0xff) && (desc.bDeviceClass!=0)) return 0; #endif if (dev->config) { xifaces = xnocamifaces = 0; for (i = 0; i < desc.bNumConfigurations; i++) { unsigned int j; for (j = 0; j < dev->config[i].bNumInterfaces; j++) { int k; xifaces++; for (k = 0; k < dev->config[i].interface[j].num_altsetting; k++) { struct usb_interface_descriptor *intf = &dev->config[i].interface[j].altsetting[k]; if ( (intf->bInterfaceClass == LIBUSB_CLASS_HID) || (intf->bInterfaceClass == LIBUSB_CLASS_PRINTER) || (intf->bInterfaceClass == LIBUSB_CLASS_AUDIO) || (intf->bInterfaceClass == LIBUSB_CLASS_HUB) || (intf->bInterfaceClass == LIBUSB_CLASS_COMM) || (intf->bInterfaceClass == 0xe0) /* wireless/bluetooth*/ ) xnocamifaces++; } } } } if (xifaces == xnocamifaces) /* only non-camera ifaces */ return 0; devh = usb_open (dev); if (!devh) return 0; /* * Loop over the device configurations and interfaces. Nokia MTP-capable * handsets (possibly others) typically have the string "MTP" in their * MTP interface descriptions, that's how they can be detected, before * we try the more esoteric "OS descriptors" (below). */ if (dev->config) { for (i = 0; i < desc.bNumConfigurations; i++) { unsigned int j; for (j = 0; j < dev->config[i].bNumInterfaces; j++) { int k; for (k = 0; k < dev->config[i].interface[j].num_altsetting; k++) { buf[0] = '\0'; ret = usb_get_string_simple(devh, dev->config[i].interface[j].altsetting[k].iInterface, (char *) buf, 1024); if (ret < 3) continue; if (strcmp((char *) buf, "MTP") == 0) { GP_LOG_D ("Configuration %d, interface %d, altsetting %d:\n", i, j, k); GP_LOG_D (" Interface description contains the string \"MTP\"\n"); GP_LOG_D (" Device recognized as MTP, no further probing.\n"); goto found; } } } } } /* get string descriptor at 0xEE */ ret = usb_get_descriptor (devh, 0x03, 0xee, buf, sizeof(buf)); if (ret > 0) GP_LOG_DATA (buf, ret, "get_MS_OSD"); if (ret < 10) goto errout; if (!((buf[2] == 'M') && (buf[4]=='S') && (buf[6]=='F') && (buf[8]=='T'))) goto errout; cmd = buf[16]; ret = usb_control_msg (devh, USB_ENDPOINT_IN|USB_RECIP_DEVICE|LIBUSB_REQUEST_TYPE_VENDOR, cmd, 0, 4, buf, sizeof(buf), 1000); if (ret == -1) { GP_LOG_E ("control message says %d\n", ret); goto errout; } if (buf[0] != 0x28) { GP_LOG_E ("ret is %d, buf[0] is %x\n", ret, buf[0]); goto errout; } if (ret > 0) GP_LOG_DATA (buf, ret, "get_MS_ExtDesc"); if ((buf[0x12] != 'M') || (buf[0x13] != 'T') || (buf[0x14] != 'P')) { GP_LOG_E ("buf at 0x12 is %02x%02x%02x\n", buf[0x12], buf[0x13], buf[0x14]); goto errout; } ret = usb_control_msg (devh, USB_ENDPOINT_IN|USB_RECIP_DEVICE|LIBUSB_REQUEST_TYPE_VENDOR, cmd, 0, 5, buf, sizeof(buf), 1000); if (ret == -1) goto errout; if (buf[0] != 0x28) { GP_LOG_E ("ret is %d, buf[0] is %x\n", ret, buf[0]); goto errout; } if (ret > 0) GP_LOG_DATA (buf, ret, "get_MS_ExtProp"); if ((buf[0x12] != 'M') || (buf[0x13] != 'T') || (buf[0x14] != 'P')) { GP_LOG_E ("buf at 0x12 is %02x%02x%02x\n", buf[0x12], buf[0x13], buf[0x14]); goto errout; } found: usb_close (devh); /* Now chose a nice interface for us to use ... Just take the first. */ if (desc.bNumConfigurations > 1) GP_LOG_E ("The device has %d configurations!\n", desc.bNumConfigurations); for (i = 0; i < desc.bNumConfigurations; i++) { struct usb_config_descriptor *config = &dev->config[i]; if (config->bNumInterfaces > 1) GP_LOG_E ("The configuration has %d interfaces!\n", config->bNumInterfaces); for (i1 = 0; i1 < config->bNumInterfaces; i1++) { struct usb_interface *interface = &config->interface[i1]; if (interface->num_altsetting > 1) GP_LOG_E ("The interface has %d altsettings!\n", interface->num_altsetting); for (i2 = 0; i2 < interface->num_altsetting; i2++) { *configno = i; *interfaceno = i1; *altsettingno = i2; return 1; } } } return 1; errout: usb_close (devh); return 0; #endif } static int gp_libusb1_match_device_by_class(struct libusb_device *dev, int class, int subclass, int protocol, int *configno, int *interfaceno, int *altsettingno) { int i, i1, i2; struct libusb_device_descriptor desc; if (class == 666) /* Special hack for MTP devices with MS OS descriptors. */ return gp_libusb1_match_mtp_device (dev, configno, interfaceno, altsettingno); if (LOG_ON_LIBUSB_E (libusb_get_device_descriptor(dev, &desc))) return 0; if (desc.bDeviceClass == class && (subclass == -1 || desc.bDeviceSubClass == subclass) && (protocol == -1 || desc.bDeviceProtocol == protocol)) return 1; for (i = 0; i < desc.bNumConfigurations; i++) { struct libusb_config_descriptor *config; if (LOG_ON_LIBUSB_E (libusb_get_config_descriptor (dev, i, &config))) continue; for (i1 = 0; i1 < config->bNumInterfaces; i1++) { const struct libusb_interface *interface = &config->interface[i1]; for (i2 = 0; i2 < interface->num_altsetting; i2++) { const struct libusb_interface_descriptor *altsetting = &interface->altsetting[i2]; if (altsetting->bInterfaceClass == class && (subclass == -1 || altsetting->bInterfaceSubClass == subclass) && (protocol == -1 || altsetting->bInterfaceProtocol == protocol)) { *configno = i; *interfaceno = i1; *altsettingno = i2; libusb_free_config_descriptor (config); return 2; } } } libusb_free_config_descriptor (config); } return 0; } static int gp_libusb1_find_device_by_class_lib(GPPort *port, int class, int subclass, int protocol) { char *s; int d, busnr = 0, devnr = 0; GPPortPrivateLibrary *pl; C_PARAMS (port); pl = port->pl; s = strchr (port->settings.usb.port,':'); if (s && (s[1] != '\0')) { /* usb:%d,%d */ if (sscanf (s+1, "%d,%d", &busnr, &devnr) != 2) { devnr = 0; sscanf (s+1, "%d", &busnr); } } /* * 0x00 class is not valid. * 0x00 subclass and protocol is ok. * Should the USB layer report that ? I don't know. * Better to check here. */ C_PARAMS (class); pl->nrofdevs = load_devicelist (port->pl); for (d = 0; d < pl->nrofdevs; d++) { struct libusb_config_descriptor *confdesc; int i, ret, config = -1, interface = -1, altsetting = -1; if (busnr && (busnr != libusb_get_bus_number (pl->devs[d]))) continue; if (devnr && (devnr != libusb_get_device_address (pl->devs[d]))) continue; GP_LOG_D ("Looking for USB device (class 0x%x, subclass, 0x%x, protocol 0x%x)...", class, subclass, protocol); ret = gp_libusb1_match_device_by_class(pl->devs[d], class, subclass, protocol, &config, &interface, &altsetting); if (!ret) continue; port->pl->d = pl->devs[d]; GP_LOG_D ("Found USB class device (class 0x%x, subclass, 0x%x, protocol 0x%x)", class, subclass, protocol); if (LOG_ON_LIBUSB_E (libusb_get_config_descriptor (pl->devs[d], config, &confdesc))) continue; /* Set the defaults */ port->settings.usb.config = confdesc->bConfigurationValue; port->settings.usb.interface = confdesc->interface[interface].altsetting[altsetting].bInterfaceNumber; port->settings.usb.altsetting = confdesc->interface[interface].altsetting[altsetting].bAlternateSetting; port->settings.usb.inep = gp_libusb1_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_BULK); port->settings.usb.outep = gp_libusb1_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_OUT, LIBUSB_TRANSFER_TYPE_BULK); port->settings.usb.intep = gp_libusb1_find_ep(pl->devs[d], config, interface, altsetting, LIBUSB_ENDPOINT_IN, LIBUSB_TRANSFER_TYPE_INTERRUPT); port->settings.usb.maxpacketsize = 0; GP_LOG_D ("inep to look for is %02x", port->settings.usb.inep); for (i=0;iinterface[interface].altsetting[altsetting].bNumEndpoints;i++) { if (port->settings.usb.inep == confdesc->interface[interface].altsetting[altsetting].endpoint[i].bEndpointAddress) { port->settings.usb.maxpacketsize = confdesc->interface[interface].altsetting[altsetting].endpoint[i].wMaxPacketSize; break; } } GP_LOG_D ("Detected defaults: config %d, interface %d, altsetting %d, " "idVendor ID %04x, idProduct %04x, inep %02x, outep %02x, intep %02x", port->settings.usb.config, port->settings.usb.interface, port->settings.usb.altsetting, pl->descs[d].idVendor, pl->descs[d].idProduct, port->settings.usb.inep, port->settings.usb.outep, port->settings.usb.intep ); libusb_free_config_descriptor (confdesc); return GP_OK; } #if 0 gp_port_set_error (port, _("Could not find USB device " "(class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device " "is connected to the computer."), class, subclass, protocol); #endif return GP_ERROR_IO_USB_FIND; } GPPortOperations * gp_port_library_operations (void) { GPPortOperations *ops; ops = calloc (1, sizeof (GPPortOperations)); if (!ops) return (NULL); ops->init = gp_libusb1_init; ops->exit = gp_libusb1_exit; ops->open = gp_libusb1_open; ops->close = gp_libusb1_close; ops->read = gp_libusb1_read; ops->reset = gp_libusb1_reset; ops->write = gp_libusb1_write; ops->check_int = gp_libusb1_check_int; ops->update = gp_libusb1_update; ops->clear_halt = gp_libusb1_clear_halt_lib; ops->msg_write = gp_libusb1_msg_write_lib; ops->msg_read = gp_libusb1_msg_read_lib; ops->msg_interface_write = gp_libusb1_msg_interface_write_lib; ops->msg_interface_read = gp_libusb1_msg_interface_read_lib; ops->msg_class_write = gp_libusb1_msg_class_write_lib; ops->msg_class_read = gp_libusb1_msg_class_read_lib; ops->find_device = gp_libusb1_find_device_lib; ops->find_device_by_class = gp_libusb1_find_device_by_class_lib; return (ops); } libgphoto2-2.5.9/libgphoto2_port/libusb1/Makefile-files0000644000175000001440000000052012610415510017723 00000000000000# -*- Makefile -*- EXTRA_LTLIBRARIES += usb1.la usb1_la_LDFLAGS = $(iolib_ldflags) usb1_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(INTL_CFLAGS) \ $(LIBUSB1_CFLAGS) \ $(CPPFLAGS) usb1_la_DEPENDENCIES = $(iolib_dependencies) usb1_la_LIBADD = $(iolib_libadd) usb1_la_LIBADD += $(LIBUSB1_LIBS) $(INTLLIBS) usb1_la_SOURCES = libusb1/libusb1.c libgphoto2-2.5.9/libgphoto2_port/installcheck.mk0000644000175000001440000000205012610415510016617 00000000000000# FIXME: Only run this if not cross-compiling installcheck-local: $(INSTALL_TESTS) $(INSTALLCHECK_DEPS) @total=0; failed=0; success=0; ignored=0; \ echo "Running \"installcheck\" test cases..."; \ for script in $(INSTALL_TESTS); do \ echo "Test case: $$script"; \ total="$$(expr $$total + 1)"; \ if test -f "./$$script"; then dir="./"; \ elif test -f "$$script"; then dir=""; \ else dir="$(srcdir)/"; fi; \ if $(INSTALL_TESTS_ENVIRONMENT) "$$dir/$$script"; then \ echo "SUCCEEDED: $$script"; \ success="$$(expr $$success + 1)"; \ else \ s="$$?"; \ if test "$$s" = "77"; then \ echo "FAILURE IGNORED (return code $$s): $$script"; \ ignored="$$(expr $$ignored + 1)"; \ else \ echo "FAILED (return code $$s): $$script"; \ failed="$$(expr $$failed + 1)"; \ fi; \ fi; \ done; \ echo "Test summary: $$success succeeded, $$failed failed, $$ignored failures ignored, $$total tests in total."; \ if test "$$failed" -gt 0; then \ echo "Error: One or more \"installcheck\" testcases have failed."; \ exit 1; \ fi libgphoto2-2.5.9/libgphoto2_port/NEWS0000644000175000001440000000513212610415620014327 00000000000000libgphoto2_port 0.12.0 API: gp_log_data was changed to void gp_log_data (const char *domain, const char *data, unsigned int size, const char *format, ...) to enable more compact debug logging. libgphoto2_port 0.10.1 API: gp_port_reset(GPPort*) added for a usb reset of the device. libgphoto2_port 0.10.0 API: * GPPortInfo is now abstract, and a pointer in the background. Use gp_port_info_get_* functions to access variables. info.type -> gp_port_info_get_path(info, &type); info.path -> gp_port_info_get_path(info, &path); info.name -> gp_port_info_get_name(info, &name); (gp_port_info_get_type(), gp_port_info_get_name() and gp_port_info_get_path() should be the only ones necessary, if at all.) The gp_port_info_set_* and gp_port_info_new are internal to libgphoto2_port. Build: * Switch build to use ELF symbol versions to avoid major version bumps. Introduced LIBGPHOTO2_0_0 and LIBGPHOTO2_5_0 ELF versions. libgphoto2_port.sym is now libgphoto2_port.ver but with similar tasks. Library Loader: * Bumped the GPPortInfo path size to 4096, since 64byte is not sufficient for paths on UNIX systems when using disk: libgphoto2_port 0.8.1 Build: * Non-recursive iolib build: Makes "make -j2" useful, and dynamic load checks without install possible. Selective iolib rebuild is "make usb.la" now. Selective iolib install is "make DRIVERS='usb.la disk.la' install-iolibLTLIBRARIES". Library Loader: * Return error if not a single iolib can be found and loaded. Tests: * "make check" makes sure that loading iolibs from build tree works. * "make installcheck" makes sure that loading installed iolibs works. ------------------------------------------------------------------------ libgphoto2_port 0.8.0 * various bug fixes and doxygenation USB: * reset the USB device on close. This cures the infamous "Canon hang on second init" problem. Disk: * handle automounter properly. ------------------------------------------------------------------------ libgphoto2_port 0.7.2 Build: * Put auto* files into auto-aux/ and auto-m4/. * Introduce libgphoto2_port-uninstalled.pc pkgconfig file (#1643245). USB: * Reported wMaxPacketsize of the IN endpoint to the camlib via GPPortSettings. ------------------------------------------------------------------------ libgphoto2_port 0.7.1 Build: * Fix usb, disk and ptpip iolibs to not pick up old gphoto2 headers. ------------------------------------------------------------------------ libgphoto2_port 0.7.0 * Added a few internal functions. libgphoto2-2.5.9/libgphoto2_port/aclocal.m40000644000175000001440000015367212615454332015515 00000000000000# generated automatically by aclocal 1.15 -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- dnl serial 11 (pkg-config-0.29) dnl dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15], [], [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 and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_AR([ACT-IF-FAIL]) # ------------------------- # Try to determine the archiver interface, and trigger the ar-lib wrapper # if it is needed. If the detection of archiver interface fails, run # ACT-IF-FAIL (default is to abort configure with a proper error message). AC_DEFUN([AM_PROG_AR], [AC_BEFORE([$0], [LT_INIT])dnl AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([ar-lib])dnl AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) : ${AR=ar} AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], [AC_LANG_PUSH([C]) am_cv_ar_interface=ar AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a ]) AC_LANG_POP([C])]) case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) m4_default([$1], [AC_MSG_ERROR([could not determine $AR interface])]) ;; esac AC_SUBST([AR])dnl ]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])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])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. 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 m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [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". rm -rf conftest.dir 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 am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) 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 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; 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 ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj 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 $am__obj 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]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf 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 -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/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"` # 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'`; 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 } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. 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"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # 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.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl 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], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # 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]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _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])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. 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])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .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 # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # 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 ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # 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])]) # Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([gphoto-m4/gp-check-library.m4]) m4_include([gphoto-m4/gp-check-shell-environment.m4]) m4_include([gphoto-m4/gp-config-msg.m4]) m4_include([gphoto-m4/gp-documentation.m4]) m4_include([gphoto-m4/gp-gettext-hack.m4]) m4_include([gphoto-m4/gp-libltdl.m4]) m4_include([gphoto-m4/gp-pkg-config.m4]) m4_include([gphoto-m4/gp-references.m4]) m4_include([gphoto-m4/gp-udev.m4]) m4_include([gphoto-m4/gp-va-copy.m4]) m4_include([auto-m4/gettext.m4]) m4_include([auto-m4/iconv.m4]) m4_include([auto-m4/lib-ld.m4]) m4_include([auto-m4/lib-link.m4]) m4_include([auto-m4/lib-prefix.m4]) m4_include([auto-m4/libtool.m4]) m4_include([auto-m4/ltoptions.m4]) m4_include([auto-m4/ltsugar.m4]) m4_include([auto-m4/ltversion.m4]) m4_include([auto-m4/lt~obsolete.m4]) m4_include([auto-m4/nls.m4]) m4_include([auto-m4/po.m4]) m4_include([auto-m4/progtest.m4]) libgphoto2-2.5.9/libgphoto2_port/usbscsi/0000755000175000001440000000000012623156264015374 500000000000000libgphoto2-2.5.9/libgphoto2_port/usbscsi/linux.c0000644000175000001440000002172612614217723016625 00000000000000/* SCSI commands to USB Mass storage devices port library for Linux * * Copyright (c) 2010-2012 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #define _DEFAULT_SOURCE /* for flock */ #include "config.h" #include #include #include #include #include #include #ifdef HAVE_FCNTL_H # include #endif #ifdef HAVE_LIMITS_H # include #endif #ifdef HAVE_SYS_FILE_H # include # ifndef LOCK_SH # define LOCK_SH 1 # endif # ifndef LOCK_EX # define LOCK_EX 2 # endif # ifndef LOCK_NB # define LOCK_NB 4 # endif # ifndef LOCK_UN # define LOCK_UN 4 # endif #endif #include #include #ifdef HAVE_SYS_PARAM_H # include #endif #ifdef HAVE_SYS_IOCTL_H # include #endif #ifdef HAVE_SCSI_SG_H # include #endif #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define CHECK(result) {int r=(result); if (r<0) return (r);} struct _GPPortPrivateLibrary { int fd; /* Device handle */ }; GPPortType gp_port_library_type () { return GP_PORT_USB_SCSI; } static int gp_port_usbscsi_lock (GPPort *port) { #if HAVE_FLOCK GP_LOG_D ("Trying to lock '%s'...", port->settings.usbscsi.path); if (flock(port->pl->fd, LOCK_EX | LOCK_NB) != 0) { switch (errno) { case EWOULDBLOCK: gp_port_set_error (port, _("Device '%s' is locked by another app."), port->settings.usbscsi.path); return GP_ERROR_IO_LOCK; default: gp_port_set_error (port, _("Failed to lock '%s' (%m)."), port->settings.usbscsi.path); return GP_ERROR_IO; } } #else GP_LOG_D ("Locking '%s' not possible, flock not availbale.", port->settings.usbscsi.path); #endif return GP_OK; } static int gp_port_usbscsi_unlock (GPPort *port) { #ifdef HAVE_FLOCK if (flock(port->pl->fd, LOCK_UN) != 0) { gp_port_set_error (port, _("Failed to unlock '%s' (%m)."), port->settings.usbscsi.path); return GP_ERROR_IO; } #endif return GP_OK; } static const char * gp_port_usbscsi_resolve_symlink (const char *link) { ssize_t ret; static char path[PATH_MAX + 1]; char *slash, buf[PATH_MAX + 1]; struct stat st; int len; snprintf (path, sizeof(path), "%s", link); do { ret = readlink (path, buf, PATH_MAX); if (ret < 0) return NULL; buf[ret] = 0; slash = strrchr (path, '/'); if (buf[0] == '/' || slash == NULL) { snprintf (path, sizeof(path), "%s", buf); } else { *slash = 0; len = strlen (path); snprintf (path + len, sizeof (path) - len, "/%s", buf); } if (stat (path, &st)) return NULL; } while (S_ISLNK(st.st_mode)); return path; } static int gp_port_usbscsi_get_usb_id (const char *sg, unsigned short *vendor_id, unsigned short *product_id) { FILE *f; char c, *s, buf[32], path[PATH_MAX + 1]; const char *xpath; snprintf (path, sizeof (path), "/sys/class/scsi_generic/%s", sg); xpath = gp_port_usbscsi_resolve_symlink(path); if (xpath) { snprintf (path, sizeof (path), "%s/../../../../../modalias", gp_port_usbscsi_resolve_symlink(path)); } else { /* older kernels, perhaps also works on newer ones */ snprintf (path, sizeof (path), "/sys/class/scsi_generic/%s/device/../../../modalias", sg); } f = fopen (path, "r"); if (!f) return GP_ERROR_IO_SUPPORTED_USB; s = fgets (buf, sizeof(buf), f); fclose (f); if (!s) return GP_ERROR_IO_SUPPORTED_USB; if (sscanf (s, "usb:v%4hxp%4hx%c", vendor_id, product_id, &c) != 3 || c != 'd') return GP_ERROR_IO_SUPPORTED_USB; return GP_OK; } int gp_port_library_list (GPPortInfoList *list) { DIR *dir; struct dirent *dirent; int ret; GPPortInfo info; unsigned short vendor_id, product_id; dir = opendir ("/sys/class/scsi_generic"); if (dir == NULL) return GP_OK; while ((dirent = readdir (dir))) { char path[4096]; if (gp_port_usbscsi_get_usb_id (dirent->d_name, &vendor_id, &product_id) != GP_OK) continue; /* Not a usb device */ gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_USB_SCSI); snprintf (path, sizeof (path), "usbscsi:/dev/%s", dirent->d_name); gp_port_info_set_path (info, path); gp_port_info_set_name (info, _("USB Mass Storage raw SCSI")); ret = gp_port_info_list_append (list, info); if (ret < GP_OK) /* can only be out of memory */ break; } closedir (dir); return GP_OK; } static int gp_port_usbscsi_init (GPPort *port) { C_MEM (port->pl = calloc (1, sizeof (GPPortPrivateLibrary))); port->pl->fd = -1; return GP_OK; } static int gp_port_usbscsi_exit (GPPort *port) { C_PARAMS (port); free (port->pl); port->pl = NULL; return GP_OK; } static int gp_port_usbscsi_open (GPPort *port) { int result, i; const int max_tries = 5; const char *path = port->settings.usbscsi.path; port->pl->fd = open (path, O_RDWR); if (port->pl->fd == -1) { gp_port_set_error (port, _("Failed to open '%s' (%m)."), path); return GP_ERROR_IO; } result = gp_port_usbscsi_lock (port); for (i = 0; i < max_tries && result == GP_ERROR_IO_LOCK; i++) { GP_LOG_D ("Failed to get a lock, trying again..."); sleep (1); result = gp_port_usbscsi_lock (port); } if (result != GP_OK) { close (port->pl->fd); port->pl->fd = -1; } return result; } static int gp_port_usbscsi_close (GPPort *port) { int result; if (!port || port->pl->fd == -1) return GP_OK; result = gp_port_usbscsi_unlock (port); if (close (port->pl->fd) == -1) { gp_port_set_error (port, _("Could not close " "'%s' (%m)."), port->settings.usbscsi.path); return GP_ERROR_IO; } port->pl->fd = -1; return result; } static int gp_port_usbscsi_send_scsi_cmd (GPPort *port, int to_dev, char *cmd, int cmd_size, char *sense, int sense_size, char *data, int data_size) { #ifdef HAVE_SCSI_SG_H sg_io_hdr_t io_hdr; C_PARAMS (port); /* The device needs to be opened for that operation */ if (port->pl->fd == -1) CHECK (gp_port_usbscsi_open (port)) memset(sense, 0, sense_size); memset(&io_hdr, 0, sizeof(sg_io_hdr_t)); if (to_dev) { io_hdr.dxfer_direction = SG_DXFER_TO_DEV; } else { memset (data, 0, data_size); io_hdr.dxfer_direction = SG_DXFER_FROM_DEV; } io_hdr.interface_id = 'S'; io_hdr.cmdp = (unsigned char *)cmd; io_hdr.cmd_len = cmd_size; io_hdr.sbp = (unsigned char *)sense; io_hdr.mx_sb_len = sense_size; io_hdr.dxferp = (unsigned char *)data; io_hdr.dxfer_len = data_size; /*io_hdr.timeout = 1500;*/ io_hdr.timeout = port->timeout; GP_LOG_D ("setting scsi command timeout to %d", port->timeout); if (io_hdr.timeout < 1500) io_hdr.timeout = 1500; if (ioctl (port->pl->fd, SG_IO, &io_hdr) < 0) { gp_port_set_error (port, _("Could not send scsi command to: " "'%s' (%m)."), port->settings.usbscsi.path); return GP_ERROR_IO; } return GP_OK; #else return GP_ERROR_NOT_SUPPORTED; #endif } static int gp_port_usbscsi_update (GPPort *port) { C_PARAMS (port); memcpy (&port->settings, &port->settings_pending, sizeof (port->settings)); return GP_OK; } static int gp_port_usbscsi_find_device(GPPort *port, int idvendor, int idproduct) { unsigned short vendor_id, product_id; const char *sg; C_PARAMS (port); sg = strrchr (port->settings.usbscsi.path, '/'); C_PARAMS (sg); sg++; CHECK (gp_port_usbscsi_get_usb_id (sg, &vendor_id, &product_id)) if (vendor_id != idvendor || product_id != idproduct) return GP_ERROR_IO_USB_FIND; return GP_OK; } GPPortOperations * gp_port_library_operations () { GPPortOperations *ops; ops = calloc (1, sizeof (GPPortOperations)); if (!ops) return (NULL); ops->init = gp_port_usbscsi_init; ops->exit = gp_port_usbscsi_exit; ops->open = gp_port_usbscsi_open; ops->close = gp_port_usbscsi_close; ops->send_scsi_cmd = gp_port_usbscsi_send_scsi_cmd; ops->update = gp_port_usbscsi_update; ops->find_device = gp_port_usbscsi_find_device; return (ops); } libgphoto2-2.5.9/libgphoto2_port/usbscsi/Makefile-files0000644000175000001440000000051412610415510020040 00000000000000## Compile the IO library into a libtool module shared library EXTRA_LTLIBRARIES += usbscsi.la usbscsi_la_LDFLAGS = $(iolib_ldflags) usbscsi_la_CPPFLAGS = $(AM_CPPFLAGS) $(INTL_CFLAGS) $(CPPFLAGS) usbscsi_la_DEPENDENCIES = $(iolib_dependencies) usbscsi_la_LIBADD = $(iolib_libadd) $(INTLLIBS) usbscsi_la_SOURCES = usbscsi/linux.c libgphoto2-2.5.9/libgphoto2_port/libgphoto2_port.pc.in0000644000175000001440000000050212610415620017672 00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ VERSION=@VERSION@ Name: libgphoto2_port Description: Device-independent access to serial, USB, and other ports URL: http://gphoto.org/proj/libgphoto2/ Version: @VERSION@ Libs: -L${libdir} -lgphoto2_port -lm Cflags: -I${includedir}/gphoto2 libgphoto2-2.5.9/libgphoto2_port/usbdiskdirect/0000755000175000001440000000000012623156264016560 500000000000000libgphoto2-2.5.9/libgphoto2_port/usbdiskdirect/linux.c0000644000175000001440000002271112610415536020002 00000000000000/* Direct IO to USB Mass storage devices port library for Linux * * Copyright (c) 2010 Hans de Goede * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser 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 */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #ifdef HAVE_FCNTL_H # include #endif #ifdef HAVE_LIMITS_H # include #endif #include #include #ifdef HAVE_SYS_PARAM_H # include #endif #ifdef HAVE_LOCKDEV # include #endif #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif /* From Linux asm/fcntl.h */ #ifndef O_DIRECT #define O_DIRECT 00040000 /* direct disk access hint */ #endif #define CHECK(result) {int r=(result); if (r<0) return (r);} struct _GPPortPrivateLibrary { int fd; /* Device handle */ }; GPPortType gp_port_library_type () { return GP_PORT_USB_DISK_DIRECT; } static int gp_port_usbdiskdirect_lock (GPPort *port, const char *path) { #ifdef HAVE_LOCKDEV int pid; GP_LOG_D ("Trying to lock '%s'...", path); pid = dev_lock (path); if (pid) { if (port) { if (pid > 0) gp_port_set_error (port, _("Device '%s' is " "locked by pid %d"), path, pid); else gp_port_set_error (port, _("Device '%s' could " "not be locked (dev_lock returned " "%d)"), path, pid); } return GP_ERROR_IO_LOCK; } #else # ifdef __GCC__ # warning No locking library found. # warning You will run into problems if you use # warning gphoto2 with a usbdiskdirect picframe in # warning combination with Konqueror (KDE) or Nautilus (GNOME). # warning This will *not* concern USB cameras. # endif #endif return GP_OK; } static int gp_port_usbdiskdirect_unlock (GPPort *port, const char *path) { #ifdef HAVE_LOCKDEV int pid; pid = dev_unlock (path, 0); if (pid) { if (port) { if (pid > 0) gp_port_set_error (port, _("Device '%s' could " "not be unlocked as it is locked by " "pid %d."), path, pid); else gp_port_set_error (port, _("Device '%s' could " "not be unlocked (dev_unlock " "returned %d)"), path, pid); } return GP_ERROR_IO_LOCK; } #endif /* !HAVE_LOCKDEV */ return GP_OK; } static const char * gp_port_usbdiskdirect_resolve_symlink (const char *link) { ssize_t ret; static char path[PATH_MAX + 1]; char *slash, buf[PATH_MAX + 1]; struct stat st; int len; snprintf (path, sizeof(path), "%s", link); do { ret = readlink (path, buf, PATH_MAX); if (ret < 0) return NULL; buf[ret] = 0; slash = strrchr (path, '/'); if (buf[0] == '/' || slash == NULL) { snprintf (path, sizeof(path), "%s", buf); } else { *slash = 0; len = strlen (path); snprintf (path + len, sizeof (path) - len, "/%s", buf); } if (stat (path, &st)) return NULL; } while (S_ISLNK(st.st_mode)); return path; } static int gp_port_usbdiskdirect_get_usb_id (const char *disk, unsigned short *vendor_id, unsigned short *product_id) { FILE *f; char c, *s, buf[32], path[PATH_MAX + 1]; snprintf (path, sizeof (path), "/sys/block/%s", disk); snprintf (path, sizeof (path), "%s/../../../../../modalias", gp_port_usbdiskdirect_resolve_symlink(path)); f = fopen (path, "r"); if (!f) return GP_ERROR_IO_SUPPORTED_USB; s = fgets (buf, sizeof(buf), f); fclose (f); if (!s) return GP_ERROR_IO_SUPPORTED_USB; if (sscanf (s, "usb:v%4hxp%4hx%c", vendor_id, product_id, &c) != 3 || c != 'd') return GP_ERROR_IO_SUPPORTED_USB; return GP_OK; } int gp_port_library_list (GPPortInfoList *list) { DIR *dir; struct dirent *dirent; GPPortInfo info; int ret; unsigned short vendor_id, product_id; dir = opendir ("/sys/block"); if (dir == NULL) return GP_OK; while ((dirent = readdir (dir))) { char path[4096]; if (dirent->d_name[0] != 's' || dirent->d_name[1] != 'd' || dirent->d_name[2] < 'a' || dirent->d_name[2] > 'z') continue; if (gp_port_usbdiskdirect_get_usb_id (dirent->d_name, &vendor_id, &product_id) != GP_OK) continue; /* Not a usb device */ gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_USB_DISK_DIRECT); snprintf (path, sizeof (path), "usbdiskdirect:/dev/%s", dirent->d_name); gp_port_info_set_path (info, path); gp_port_info_set_name (info, _("USB Mass Storage direct IO")); ret = gp_port_info_list_append (list, info); if (ret < GP_OK) break; } closedir (dir); return GP_OK; } static int gp_port_usbdiskdirect_init (GPPort *port) { C_MEM (port->pl = calloc (1, sizeof (GPPortPrivateLibrary))); port->pl->fd = -1; return GP_OK; } static int gp_port_usbdiskdirect_exit (GPPort *port) { C_PARAMS (port); free (port->pl); port->pl = NULL; return GP_OK; } static int gp_port_usbdiskdirect_open (GPPort *port) { int result, i; const int max_tries = 5; const char *path = port->settings.usbdiskdirect.path; result = gp_port_usbdiskdirect_lock (port, path); if (result != GP_OK) { for (i = 0; i < max_tries; i++) { result = gp_port_usbdiskdirect_lock (port, path); if (result == GP_OK) break; GP_LOG_D ("Failed to get a lock, trying again..."); sleep (1); } CHECK (result) } port->pl->fd = open (path, O_RDWR|O_DIRECT|O_SYNC); if (port->pl->fd == -1) { gp_port_usbdiskdirect_unlock (port, path); gp_port_set_error (port, _("Failed to open '%s' (%m)."), path); return GP_ERROR_IO; } return GP_OK; } static int gp_port_usbdiskdirect_close (GPPort *port) { if (!port || port->pl->fd == -1) return GP_OK; if (close (port->pl->fd) == -1) { gp_port_set_error (port, _("Could not close " "'%s' (%m)."), port->settings.usbdiskdirect.path); return GP_ERROR_IO; } port->pl->fd = -1; CHECK (gp_port_usbdiskdirect_unlock (port, port->settings.usbdiskdirect.path)) return GP_OK; } static int gp_port_usbdiskdirect_seek (GPPort *port, int offset, int whence) { off_t ret; C_PARAMS (!port); /* The device needs to be opened for that operation */ if (port->pl->fd == -1) CHECK (gp_port_usbdiskdirect_open (port)) ret = lseek (port->pl->fd, offset, whence); if (ret == -1) { gp_port_set_error (port, _("Could not seek to offset: %x on " "'%s' (%m)."), offset, port->settings.usbdiskdirect.path); return GP_ERROR_IO; } return ret; } static int gp_port_usbdiskdirect_write (GPPort *port, const char *bytes, int size) { int ret; C_PARAMS (port); /* The device needs to be opened for that operation */ if (port->pl->fd == -1) CHECK (gp_port_usbdiskdirect_open (port)) ret = write (port->pl->fd, bytes, size); if (ret < 0) { gp_port_set_error (port, _("Could not write to '%s' (%m)."), port->settings.usbdiskdirect.path); return GP_ERROR_IO; } return ret; } static int gp_port_usbdiskdirect_read (GPPort *port, char *bytes, int size) { int ret; C_PARAMS (port); /* The device needs to be opened for that operation */ if (port->pl->fd == -1) CHECK (gp_port_usbdiskdirect_open (port)) ret = read (port->pl->fd, bytes, size); if (ret < 0) { gp_port_set_error (port, _("Could not read from '%s' (%m)."), port->settings.usbdiskdirect.path); return GP_ERROR_IO; } return ret; } static int gp_port_usbdiskdirect_update (GPPort *port) { C_PARAMS (port); memcpy (&port->settings, &port->settings_pending, sizeof (port->settings)); return GP_OK; } static int gp_port_usbdiskdirect_find_device(GPPort *port, int idvendor, int idproduct) { unsigned short vendor_id, product_id; const char *disk; C_PARAMS (port); disk = strrchr (port->settings.usbdiskdirect.path, '/'); C_PARAMS (disk); disk++; CHECK (gp_port_usbdiskdirect_get_usb_id (disk, &vendor_id, &product_id)) if (vendor_id != idvendor || product_id != idproduct) return GP_ERROR_IO_USB_FIND; return GP_OK; } GPPortOperations * gp_port_library_operations () { GPPortOperations *ops; ops = calloc (1, sizeof (GPPortOperations)); if (!ops) return (NULL); ops->init = gp_port_usbdiskdirect_init; ops->exit = gp_port_usbdiskdirect_exit; ops->open = gp_port_usbdiskdirect_open; ops->close = gp_port_usbdiskdirect_close; ops->seek = gp_port_usbdiskdirect_seek; ops->read = gp_port_usbdiskdirect_read; ops->write = gp_port_usbdiskdirect_write; ops->update = gp_port_usbdiskdirect_update; ops->find_device = gp_port_usbdiskdirect_find_device; return (ops); } libgphoto2-2.5.9/libgphoto2_port/usbdiskdirect/Makefile-files0000644000175000001440000000060512610415510021225 00000000000000## Compile the IO library into a libtool module shared library EXTRA_LTLIBRARIES += usbdiskdirect.la usbdiskdirect_la_LDFLAGS = $(iolib_ldflags) usbdiskdirect_la_CPPFLAGS = $(AM_CPPFLAGS) $(INTL_CFLAGS) $(CPPFLAGS) usbdiskdirect_la_DEPENDENCIES = $(iolib_dependencies) usbdiskdirect_la_LIBADD = $(iolib_libadd) $(INTLLIBS) $(SERIAL_LIBS) usbdiskdirect_la_SOURCES = usbdiskdirect/linux.c libgphoto2-2.5.9/libgphoto2_port/test/0000755000175000001440000000000012623156266014702 500000000000000libgphoto2-2.5.9/libgphoto2_port/test/Makefile.in0000644000175000001440000012101012615454335016661 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ TESTS = test-port-list$(EXEEXT) check_PROGRAMS = test-port-list$(EXEEXT) noinst_PROGRAMS = test-gp-port$(EXEEXT) test-port-list$(EXEEXT) subdir = test ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) test_gp_port_SOURCES = test-gp-port.c test_gp_port_OBJECTS = test_gp_port-test-gp-port.$(OBJEXT) test_gp_port_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = test_gp_port_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(test_gp_port_LDFLAGS) $(LDFLAGS) -o $@ test_port_list_SOURCES = test-port-list.c test_port_list_OBJECTS = test_port_list-test-port-list.$(OBJEXT) test_port_list_LDADD = $(LDADD) test_port_list_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(test_port_list_LDFLAGS) $(LDFLAGS) -o \ $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/auto-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = test-gp-port.c test-port-list.c DIST_SOURCES = test-gp-port.c test-port-list.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/auto-aux/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/auto-aux/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/auto-aux/depcomp \ $(top_srcdir)/auto-aux/mkinstalldirs \ $(top_srcdir)/auto-aux/test-driver \ $(top_srcdir)/installcheck.mk DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir) AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ IOLIB_LIST = @IOLIB_LIST@ IOLIB_LTLIST = @IOLIB_LTLIST@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGPHOTO2_PORT_AGE = @LIBGPHOTO2_PORT_AGE@ LIBGPHOTO2_PORT_CURRENT = @LIBGPHOTO2_PORT_CURRENT@ LIBGPHOTO2_PORT_CURRENT_MIN = @LIBGPHOTO2_PORT_CURRENT_MIN@ LIBGPHOTO2_PORT_REVISION = @LIBGPHOTO2_PORT_REVISION@ LIBGPHOTO2_PORT_VERSION_INFO = @LIBGPHOTO2_PORT_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBUSB1_CFLAGS = @LIBUSB1_CFLAGS@ LIBUSB1_CONFIG_PROG = @LIBUSB1_CONFIG_PROG@ LIBUSB1_LIBS = @LIBUSB1_LIBS@ LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ LIBUSB_CONFIG_PROG = @LIBUSB_CONFIG_PROG@ LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBUSB = @REQUIREMENTS_FOR_LIBUSB@ REQUIREMENTS_FOR_LIBUSB1 = @REQUIREMENTS_FOR_LIBUSB1@ SED = @SED@ SERIAL_LIBS = @SERIAL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ 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@ iolibdir = @iolibdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ INSTALL_TESTS = test-port-list # When we build all our iolibs in one directory, we can run our checks # with IOLIBS set to the camlib build directory. TESTS_ENVIRONMENT = env \ IOLIBS="$(top_builddir)" # After installation, this will be IOLIBS = $(DESTDIR)$(iolibdir) INSTALL_TESTS_ENVIRONMENT = env \ IOLIBS="$(DESTDIR)$(iolibdir)" \ LD_LIBRARY_PATH="$(DESTDIR)$(libdir)$${LD_LIBRARY_PATH+:$${LD_LIBRARY_PATH}}" test_gp_port_CPPFLAGS = $(AM_CPPFLAGS) $(LTDLINCL) $(CPPFLAGS) test_gp_port_SOURCE = test-gp-port.c test_gp_port_LDFLAGS = $(top_builddir)/libgphoto2_port/libgphoto2_port.la $(LIBLTDL) $(INTLLIBS) test_port_list_CPPFLAGS = $(AM_CPPFLAGS) $(LTDLINCL) $(CPPFLAGS) test_port_list_SOURCE = test-gp-port.c test_port_list_LDFLAGS = \ $(top_builddir)/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(INTLLIBS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/installcheck.mk $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_srcdir)/installcheck.mk $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list test-gp-port$(EXEEXT): $(test_gp_port_OBJECTS) $(test_gp_port_DEPENDENCIES) $(EXTRA_test_gp_port_DEPENDENCIES) @rm -f test-gp-port$(EXEEXT) $(AM_V_CCLD)$(test_gp_port_LINK) $(test_gp_port_OBJECTS) $(test_gp_port_LDADD) $(LIBS) test-port-list$(EXEEXT): $(test_port_list_OBJECTS) $(test_port_list_DEPENDENCIES) $(EXTRA_test_port_list_DEPENDENCIES) @rm -f test-port-list$(EXEEXT) $(AM_V_CCLD)$(test_port_list_LINK) $(test_port_list_OBJECTS) $(test_port_list_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_gp_port-test-gp-port.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_port_list-test-port-list.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< test_gp_port-test-gp-port.o: test-gp-port.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_gp_port_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_gp_port-test-gp-port.o -MD -MP -MF $(DEPDIR)/test_gp_port-test-gp-port.Tpo -c -o test_gp_port-test-gp-port.o `test -f 'test-gp-port.c' || echo '$(srcdir)/'`test-gp-port.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_gp_port-test-gp-port.Tpo $(DEPDIR)/test_gp_port-test-gp-port.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-gp-port.c' object='test_gp_port-test-gp-port.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_gp_port_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_gp_port-test-gp-port.o `test -f 'test-gp-port.c' || echo '$(srcdir)/'`test-gp-port.c test_gp_port-test-gp-port.obj: test-gp-port.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_gp_port_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_gp_port-test-gp-port.obj -MD -MP -MF $(DEPDIR)/test_gp_port-test-gp-port.Tpo -c -o test_gp_port-test-gp-port.obj `if test -f 'test-gp-port.c'; then $(CYGPATH_W) 'test-gp-port.c'; else $(CYGPATH_W) '$(srcdir)/test-gp-port.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_gp_port-test-gp-port.Tpo $(DEPDIR)/test_gp_port-test-gp-port.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-gp-port.c' object='test_gp_port-test-gp-port.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_gp_port_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_gp_port-test-gp-port.obj `if test -f 'test-gp-port.c'; then $(CYGPATH_W) 'test-gp-port.c'; else $(CYGPATH_W) '$(srcdir)/test-gp-port.c'; fi` test_port_list-test-port-list.o: test-port-list.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_port_list_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_port_list-test-port-list.o -MD -MP -MF $(DEPDIR)/test_port_list-test-port-list.Tpo -c -o test_port_list-test-port-list.o `test -f 'test-port-list.c' || echo '$(srcdir)/'`test-port-list.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_port_list-test-port-list.Tpo $(DEPDIR)/test_port_list-test-port-list.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-port-list.c' object='test_port_list-test-port-list.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_port_list_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_port_list-test-port-list.o `test -f 'test-port-list.c' || echo '$(srcdir)/'`test-port-list.c test_port_list-test-port-list.obj: test-port-list.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_port_list_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_port_list-test-port-list.obj -MD -MP -MF $(DEPDIR)/test_port_list-test-port-list.Tpo -c -o test_port_list-test-port-list.obj `if test -f 'test-port-list.c'; then $(CYGPATH_W) 'test-port-list.c'; else $(CYGPATH_W) '$(srcdir)/test-port-list.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_port_list-test-port-list.Tpo $(DEPDIR)/test_port_list-test-port-list.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test-port-list.c' object='test_port_list-test-port-list.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_port_list_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_port_list-test-port-list.obj `if test -f 'test-port-list.c'; then $(CYGPATH_W) 'test-port-list.c'; else $(CYGPATH_W) '$(srcdir)/test-port-list.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? test-port-list.log: test-port-list$(EXEEXT) @p='test-port-list$(EXEEXT)'; \ b='test-port-list'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(PROGRAMS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: installcheck-local maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am 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-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 installcheck-local \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ uninstall uninstall-am .PRECIOUS: Makefile # FIXME: Only run this if not cross-compiling installcheck-local: $(INSTALL_TESTS) $(INSTALLCHECK_DEPS) @total=0; failed=0; success=0; ignored=0; \ echo "Running \"installcheck\" test cases..."; \ for script in $(INSTALL_TESTS); do \ echo "Test case: $$script"; \ total="$$(expr $$total + 1)"; \ if test -f "./$$script"; then dir="./"; \ elif test -f "$$script"; then dir=""; \ else dir="$(srcdir)/"; fi; \ if $(INSTALL_TESTS_ENVIRONMENT) "$$dir/$$script"; then \ echo "SUCCEEDED: $$script"; \ success="$$(expr $$success + 1)"; \ else \ s="$$?"; \ if test "$$s" = "77"; then \ echo "FAILURE IGNORED (return code $$s): $$script"; \ ignored="$$(expr $$ignored + 1)"; \ else \ echo "FAILED (return code $$s): $$script"; \ failed="$$(expr $$failed + 1)"; \ fi; \ fi; \ done; \ echo "Test summary: $$success succeeded, $$failed failed, $$ignored failures ignored, $$total tests in total."; \ if test "$$failed" -gt 0; then \ echo "Error: One or more \"installcheck\" testcases have failed."; \ exit 1; \ fi # 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. .NOEXPORT: libgphoto2-2.5.9/libgphoto2_port/test/Makefile.am0000644000175000001440000000205012610415517016644 00000000000000TESTS = INSTALL_TESTS = check_PROGRAMS = noinst_PROGRAMS = # When we build all our iolibs in one directory, we can run our checks # with IOLIBS set to the camlib build directory. TESTS_ENVIRONMENT = env \ IOLIBS="$(top_builddir)" # After installation, this will be IOLIBS = $(DESTDIR)$(iolibdir) INSTALL_TESTS_ENVIRONMENT = env \ IOLIBS="$(DESTDIR)$(iolibdir)" \ LD_LIBRARY_PATH="$(DESTDIR)$(libdir)$${LD_LIBRARY_PATH+:$${LD_LIBRARY_PATH}}" AM_CPPFLAGS += -I$(top_srcdir) noinst_PROGRAMS += test-gp-port test-port-list test_gp_port_CPPFLAGS = $(AM_CPPFLAGS) $(LTDLINCL) $(CPPFLAGS) test_gp_port_SOURCE = test-gp-port.c test_gp_port_LDFLAGS = $(top_builddir)/libgphoto2_port/libgphoto2_port.la $(LIBLTDL) $(INTLLIBS) TESTS += test-port-list INSTALL_TESTS += test-port-list check_PROGRAMS += test-port-list test_port_list_CPPFLAGS = $(AM_CPPFLAGS) $(LTDLINCL) $(CPPFLAGS) test_port_list_SOURCE = test-gp-port.c test_port_list_LDFLAGS = \ $(top_builddir)/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(INTLLIBS) include $(top_srcdir)/installcheck.mk libgphoto2-2.5.9/libgphoto2_port/test/test-port-list.c0000644000175000001440000000651412610415536017700 00000000000000/* test-port-list.c * * Copyright (C) 2002 Lutz Mueller * Copyright (C) 2007 Hans Ulrich Niedermann * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include #ifdef __GNUC__ #define __unused__ __attribute__((unused)) #else #define __unused__ #endif static void log_func (GPLogLevel level, const char *domain __unused__, const char *str, void *data __unused__) { if (level <= GP_LOG_ERROR) { fprintf (stdout, "%s\n", str); fflush (stdout); } } static int run_test () { int i; int ret; GPPortInfoList *il; int count; ret = gp_port_info_list_new (&il); if (ret < 0) { printf ("Could not create list of ports: %s\n", gp_port_result_as_string (ret)); return (1); } ret = gp_port_info_list_load (il); if (ret < 0) { printf ("Could not load list of ports: %s\n", gp_port_result_as_string (ret)); return (2); } count = gp_port_info_list_count (il); if (count < 0) { printf("gp_port_info_list_count error: %d\n", count); return 1; } else if (count == 0) { /* Unlike gphoto2-abilities-list, * gphoto2-port-info-list.c does not just load * the driver libs, but also scans for * ports. Thus 0 ports are a valid results. */ } /* Non-empty list */ printf ("%i ports found on your system.\n", count); for (i = 0; i < count; i++) { const char *port_type_str; char *name, *path; GPPortInfo info; GPPortType type; ret = gp_port_info_list_get_info (il, i, &info); if (ret < 0) { printf ("ERROR getting iolib info: %s\n", gp_port_result_as_string (ret)); return (1); } gp_port_info_get_type (info, &type); gp_port_info_get_name (info, &name); gp_port_info_get_path (info, &path); switch (type) { case GP_PORT_NONE: port_type_str = "NONE"; break; case GP_PORT_SERIAL: port_type_str = "SERIAL"; break; case GP_PORT_USB: port_type_str = "USB"; break; case GP_PORT_USB_DISK_DIRECT: port_type_str = "USBDISKDIRECT"; break; case GP_PORT_USB_SCSI: port_type_str = "USBSCSI"; break; case GP_PORT_DISK: port_type_str = "DISK"; break; case GP_PORT_PTPIP: port_type_str = "PTPIP"; break; default: port_type_str = "UNKNOWN"; return 3; break; } printf ("No: %d\n" "Type: %s\n" "Name: %s\n" "Path: %s\n", i, port_type_str, name, path ); } gp_port_info_list_free (il); return 0; } int main () { gp_log_add_func (GP_LOG_DATA, log_func, NULL); return run_test(); } libgphoto2-2.5.9/libgphoto2_port/test/test-gp-port.c0000644000175000001440000000726512610415536017337 00000000000000/* test-gp-port.c * * Copyright 2002 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include static void log_func (GPLogLevel level, const char *domain, const char *str, void *data) { fprintf (stdout, "%s\n", str); } int main (int argc, char **argv) { GPPort *dev; GPPortSettings settings; char buf[32]; int ret; GPPortInfoList *il; GPPortInfo info; GPLevel level; unsigned int i; gp_log_add_func (GP_LOG_DATA, log_func, NULL); for (i = 0; i < 2; i++) { ret = gp_port_info_list_new (&il); if (ret < 0) { printf ("Could not create list of ports: %s\n", gp_port_result_as_string (ret)); return (1); } ret = gp_port_info_list_load (il); if (ret < 0) { printf ("Could not load list of ports: %s\n", gp_port_result_as_string (ret)); return (1); } printf ("############\n"); printf ("############ There are %i IO-drivers " "installed on your system.\n", gp_port_info_list_count (il)); printf ("############\n"); ret = gp_port_info_list_get_info (il, 0, &info); if (ret < 0) { printf ("Could not get info of first port in " "list: %s\n", gp_port_result_as_string (ret)); return (1); } ret = gp_port_new (&dev); if (ret < 0) { printf ("Could not create device: %s\n", gp_port_result_as_string (ret)); return (1); } ret = gp_port_set_info (dev, info); if (ret < 0) { printf ("Could not set port info: %s\n", gp_port_result_as_string (ret)); return (1); } gp_port_info_list_free (il); ret = gp_port_set_timeout (dev, 500); if (ret < 0) { printf ("Could not set timeout: %s\n", gp_port_result_as_string (ret)); return (1); } strcpy (settings.serial.port, "serial:/dev/ttyS0"); settings.serial.speed = 19200; settings.serial.bits = 8; settings.serial.parity = 0; settings.serial.stopbits = 1; ret = gp_port_set_settings (dev, settings); if (ret < 0) { printf ("Could not set settings: %s\n", gp_port_result_as_string (ret)); return (1); } ret = gp_port_open (dev); if (ret < 0) { printf ("Could not open device: %s\n", gp_port_result_as_string (ret)); return (1); } gp_port_get_settings(dev, &settings); settings.serial.speed = 57600; gp_port_set_settings(dev, settings); ret = gp_port_get_pin (dev, GP_PIN_DTR, &level); if (ret < 0) { printf ("Could not get level of pin DTR: %s\n", gp_port_result_as_string (ret)); return (1); } ret = gp_port_set_pin (dev, GP_PIN_CTS, GP_LEVEL_HIGH); if (ret < 0) { printf ("Could not set level of pin CTS: %s\n", gp_port_result_as_string (ret)); return (1); } gp_port_write (dev, "AT\n", 3); gp_port_read (dev, buf, 3); buf[3] = 0; printf("recv: %s\n", buf); gp_port_close (dev); gp_port_free (dev); } return 0; } libgphoto2-2.5.9/libgphoto2_port/disk/0000755000175000001440000000000012623156264014653 500000000000000libgphoto2-2.5.9/libgphoto2_port/disk/disk.c0000644000175000001440000002552012610415536015671 00000000000000/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ /* gphoto2-port-usb.c * * Copyright (c) 2001 Lutz Mueller * Copyright (c) 1999-2000 Johannes Erdfelt * Copyright (c) 2005, 2007 Hubert Figuiere * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include #ifdef HAVE_SYS_PARAM_H #include #endif #include #include #ifdef HAVE_MNTENT_H # include #endif #ifdef HAVE_SYS_MNTENT_H # include #endif #ifdef HAVE_SYS_MNTTAB_H # include #endif /* on Solaris */ #ifndef HAVE_SETMNTENT #define setmntent(f,m) fopen(f,m) #endif #ifndef HAVE_ENDMNTENT #define endmntent(f) fclose(f) #endif #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define CHECK(result) {int r=(result); if (r<0) return (r);} struct _GPPortPrivateLibrary { char *mount_point; }; GPPortType gp_port_library_type (void) { return GP_PORT_DISK; } int gp_port_library_list (GPPortInfoList *list) { GPPortInfo info; # ifdef HAVE_MNTENT_H FILE *mnt; struct mntent *mntent; char path[1024]; char *s; struct stat stbuf; mnt = setmntent ("/etc/fstab", "r"); if (mnt) { while ((mntent = getmntent (mnt))) { /* detect floppies so we don't access them with the stat() below */ GP_LOG_D ("found fstab fsname %s", mntent->mnt_fsname); if ((NULL != strstr(mntent->mnt_fsname,"fd")) || (NULL != strstr(mntent->mnt_fsname,"floppy")) || (NULL != strstr(mntent->mnt_fsname,"fuse")) || (NULL != strstr(mntent->mnt_fsname,"nfs")) || (NULL != strstr(mntent->mnt_fsname,"cifs")) || (NULL != strstr(mntent->mnt_fsname,"smbfs"))|| (NULL != strstr(mntent->mnt_fsname,"afs")) || (NULL != strstr(mntent->mnt_fsname,"autofs"))|| (NULL != strstr(mntent->mnt_fsname,"cgroup"))|| (NULL != strstr(mntent->mnt_fsname,"systemd"))|| (NULL != strstr(mntent->mnt_fsname,"mqueue"))|| (NULL != strstr(mntent->mnt_fsname,"securityfs"))|| (NULL != strstr(mntent->mnt_fsname,"proc"))|| (NULL != strstr(mntent->mnt_fsname,"devtmpfs"))|| (NULL != strstr(mntent->mnt_fsname,"devpts"))|| (NULL != strstr(mntent->mnt_fsname,"sysfs"))|| (NULL != strstr(mntent->mnt_fsname,"gphotofs")|| /* fstype based */ (NULL != strstr(mntent->mnt_type,"autofs")) || (NULL != strstr(mntent->mnt_type,"nfs")) || (NULL != strstr(mntent->mnt_type,"smbfs"))|| (NULL != strstr(mntent->mnt_type,"proc"))|| (NULL != strstr(mntent->mnt_type,"sysfs"))|| (NULL != strstr(mntent->mnt_type,"fuse"))|| (NULL != strstr(mntent->mnt_type,"cifs"))|| (NULL != strstr(mntent->mnt_type,"afs")) || /* mount options */ /* x-systemd.automount or similar */ (NULL != strstr(mntent->mnt_opts,"automount")) ) ) { continue; } snprintf (path, sizeof(path), "%s/DCIM", mntent->mnt_dir); if (-1 == stat(path, &stbuf)) { snprintf (path, sizeof(path), "%s/dcim", mntent->mnt_dir); if (-1 == stat(path, &stbuf)) continue; } s = malloc (strlen(_("Media '%s'"))+strlen(mntent->mnt_fsname)+1); sprintf (s, _("Media '%s'"), mntent->mnt_fsname); gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_DISK); gp_port_info_set_name (info, s); free (s); s = malloc (strlen("disk:")+strlen(mntent->mnt_dir)+1); sprintf (s, "disk:%s", mntent->mnt_dir); gp_port_info_set_path (info, s); if (gp_port_info_list_lookup_path (list, s) >= GP_OK) { free (s); continue; } free(s); CHECK (gp_port_info_list_append (list, info)); } endmntent(mnt); } mnt = setmntent ("/etc/mtab", "r"); if (mnt) { while ((mntent = getmntent (mnt))) { /* detect floppies so we don't access them with the stat() below */ GP_LOG_D ("found mtab fsname %s", mntent->mnt_fsname); if ((NULL != strstr(mntent->mnt_fsname,"fd")) || (NULL != strstr(mntent->mnt_fsname,"floppy")) || (NULL != strstr(mntent->mnt_fsname,"fuse")) || (NULL != strstr(mntent->mnt_fsname,"nfs")) || (NULL != strstr(mntent->mnt_fsname,"cifs")) || (NULL != strstr(mntent->mnt_fsname,"smbfs"))|| (NULL != strstr(mntent->mnt_fsname,"afs")) || (NULL != strstr(mntent->mnt_fsname,"autofs"))|| (NULL != strstr(mntent->mnt_fsname,"cgroup"))|| (NULL != strstr(mntent->mnt_fsname,"systemd"))|| (NULL != strstr(mntent->mnt_fsname,"mqueue"))|| (NULL != strstr(mntent->mnt_fsname,"securityfs"))|| (NULL != strstr(mntent->mnt_fsname,"proc"))|| (NULL != strstr(mntent->mnt_fsname,"devtmpfs"))|| (NULL != strstr(mntent->mnt_fsname,"devpts"))|| (NULL != strstr(mntent->mnt_fsname,"sysfs"))|| (NULL != strstr(mntent->mnt_fsname,"gphotofs"))|| /* fstype based */ (NULL != strstr(mntent->mnt_type,"autofs")) || (NULL != strstr(mntent->mnt_type,"nfs")) || (NULL != strstr(mntent->mnt_type,"smbfs"))|| (NULL != strstr(mntent->mnt_type,"proc"))|| (NULL != strstr(mntent->mnt_type,"sysfs"))|| (NULL != strstr(mntent->mnt_type,"fuse"))|| (NULL != strstr(mntent->mnt_type,"cifs"))|| (NULL != strstr(mntent->mnt_type,"afs")) || /* options */ (NULL != strstr(mntent->mnt_opts,"automount")) ) { continue; } snprintf (path, sizeof(path), "%s/DCIM", mntent->mnt_dir); if (-1 == stat(path, &stbuf)) { snprintf (path, sizeof(path), "%s/dcim", mntent->mnt_dir); if (-1 == stat(path, &stbuf)) continue; } /* automount should be blacklist here, but we still need * to look it up first otherwise the automounted camera * won't appear. */ if (NULL != strstr(mntent->mnt_fsname, "automount")) { continue; } gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_DISK); s = malloc (strlen(_("Media '%s'"))+strlen(mntent->mnt_fsname)+1); sprintf (s, _("Media '%s'"), mntent->mnt_fsname); gp_port_info_set_name (info, s); free (s); s = malloc (strlen("disk:")+strlen(mntent->mnt_dir)+1); sprintf (s, "disk:%s", mntent->mnt_dir); gp_port_info_set_path (info, s); if (gp_port_info_list_lookup_path (list, s) >= GP_OK) { free (s); continue; } free (s); CHECK (gp_port_info_list_append (list, info)); } endmntent(mnt); } # else # ifdef HAVE_MNTTAB FILE *mnt; struct mnttab mnttab; char path[1024]; struct stat stbuf; info.type = GP_PORT_DISK; mnt = fopen ("/etc/fstab", "r"); if (mnt) { while (! getmntent (mnt, &mntent)) { /* detect floppies so we don't access them with the stat() below */ if ( (NULL != strstr(mnttab.mnt_special,"fd")) || (NULL != strstr(mnttab.mnt_special,"floppy")) ) continue; snprintf (path, sizeof(path), "%s/DCIM", mnttab.mnt_mountp); if (-1 == stat(path, &stbuf)) { snprintf (path, sizeof(path), "%s/dcim", mnttab.mnt_mountp); if (-1 == stat(path, &stbuf)) continue; } snprintf (info.name, sizeof(info.name), _("Media '%s'"), mntent.mnt_special), snprintf (info.path, sizeof(info.path), "disk:%s", mntent.mnt_mountp); if (gp_port_info_list_lookup_path (list, info.path) >= GP_OK) continue; CHECK (gp_port_info_list_append (list, info)); } fclose(mnt); } mnt = fopen ("/etc/mtab", "r"); if (mnt) { while (! getmntent (mnt, &mntent)) { /* detect floppies so we don't access them with the stat() below */ if ( (NULL != strstr(mnttab.mnt_special,"fd")) || (NULL != strstr(mnttab.mnt_special,"floppy")) ) continue; snprintf (path, sizeof(path), "%s/DCIM", mnttab.mnt_mountp); if (-1 == stat(path, &stbuf)) { snprintf (path, sizeof(path), "%s/dcim", mnttab.mnt_mountp); if (-1 == stat(path, &stbuf)) continue; } snprintf (info.name, sizeof(info.name), _("Media '%s'"), mntent.mnt_special), snprintf (info.path, sizeof(info.path), "disk:%s", mntent.mnt_mountp); if (gp_port_info_list_lookup_path (list, info.path) >= GP_OK) continue; CHECK (gp_port_info_list_append (list, info)); } fclose(mnt); } # endif # endif /* generic disk:/xxx/ matcher */ gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_DISK); gp_port_info_set_name (info, ""); gp_port_info_set_path (info, "^disk:"); CHECK (gp_port_info_list_append (list, info)); return GP_OK; } static int gp_port_disk_init (GPPort *dev) { C_MEM (dev->pl = calloc (1, sizeof (GPPortPrivateLibrary))); return GP_OK; } static int gp_port_disk_exit (GPPort *port) { free (port->pl); port->pl = NULL; return GP_OK; } static int gp_port_disk_open (GPPort *port) { return GP_OK; } static int gp_port_disk_close (GPPort *port) { return GP_OK; } static int gp_port_disk_write (GPPort *port, const char *bytes, int size) { return GP_OK; } static int gp_port_disk_read(GPPort *port, char *bytes, int size) { return GP_OK; } GPPortOperations * gp_port_library_operations (void) { GPPortOperations *ops; ops = calloc (1, sizeof (GPPortOperations)); if (!ops) return NULL; ops->init = gp_port_disk_init; ops->exit = gp_port_disk_exit; ops->open = gp_port_disk_open; ops->close = gp_port_disk_close; ops->read = gp_port_disk_read; ops->write = gp_port_disk_write; return ops; } libgphoto2-2.5.9/libgphoto2_port/disk/Makefile-files0000644000175000001440000000047112610415510017321 00000000000000# -*- Makefile -*- EXTRA_LTLIBRARIES += disk.la disk_la_LDFLAGS = $(iolib_ldflags) disk_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(INTL_CFLAGS) \ $(LIBUSB_CFLAGS) \ $(CPPFLAGS) disk_la_DEPENDENCIES = $(iolib_dependencies) disk_la_LIBADD = $(iolib_libadd) disk_la_LIBADD += $(INTLLIBS) disk_la_SOURCES = disk/disk.c libgphoto2-2.5.9/libgphoto2_port/doc/0000755000175000001440000000000012623156266014470 500000000000000libgphoto2-2.5.9/libgphoto2_port/doc/gphoto2-port-sections.txt0000644000175000001440000000447412557123324021346 00000000000000
gphoto2-port GPhoto2-Port GPPortPrivateLibrary GPPortPrivateCore GPPortSettingsSerial GPPortSettingsUSB GPPortSettings GPPort gp_port_new gp_port_free gp_port_set_info gp_port_get_info gp_port_open gp_port_close gp_port_read gp_port_write gp_port_get_settings gp_port_set_settings gp_port_get_timeout gp_port_set_timeout gp_port_get_pin gp_port_set_pin gp_port_get_error gp_port_set_error
gphoto2-port-info-list GPhoto2-Port-Info-List GPPortType GPPortInfo GPPortInfoList gp_port_info_list_new gp_port_info_list_free gp_port_info_list_load gp_port_info_list_count gp_port_info_list_get_info gp_port_info_list_lookup_path gp_port_info_list_lookup_name gp_port_info_list_append
gphoto2-port-result GPhoto2-Port-Result GP_OK GP_ERROR_NOT_SUPPORTED GP_ERROR_BAD_PARAMETERS GP_ERROR_NO_MEMORY GP_ERROR_TIMEOUT GP_ERROR_LIBRARY GP_ERROR_IO GP_ERROR_IO_CLOSE GP_ERROR_IO_INIT GP_ERROR_IO_LOCK GP_ERROR_IO_OPEN GP_ERROR_IO_PIN GP_ERROR_IO_READ GP_ERROR_IO_SERIAL_BREAK GP_ERROR_IO_SERIAL_FLUSH GP_ERROR_IO_SERIAL_SPEED GP_ERROR_IO_SUPPORTED_SERIAL GP_ERROR_IO_SUPPORTED_USB GP_ERROR_IO_TIMEOUT GP_ERROR_IO_UPDATE GP_ERROR_IO_USB_CLAIM GP_ERROR_IO_USB_CLEAR_HALT GP_ERROR_IO_USB_FIND GP_ERROR_IO_WRITE GP_ERROR_UNKNOWN_PORT gp_port_result_as_string
gphoto2-port-log GPhoto2-Port-Log GPLogLevel GPLogFunc gp_log_add_func gp_log_remove_func gp_log gp_logv gp_log_data GP_LOG GP_DEBUG
gphoto2-port-usb GPhoto2-Port-USB</FILE> gp_port_usb_find_device gp_port_usb_clear_halt gp_port_usb_msg_read gp_port_usb_msg_write </SECTION> <SECTION> <FILE>gphoto2-port-library</FILE> <TITLE>GPhoto2-Port-Library GPPortOperations GPPortLibraryType GPPortLibraryList GPPortLibraryOperations gp_port_library_type gp_port_library_list gp_port_library_operations
gphoto2-port-serial GPhoto2-Port-Serial</FILE> B0 B1000000 B110 B115200 B1152000 B1200 B134 B150 B1500000 B153600 B1800 B19200 B200 B2000000 B230400 B2400 B300 B307200 B38400 B460800 B4800 B50 B500000 B57600 B576000 B600 B614400 B75 B76800 B921600 B9600 CBAUD CBAUDEX CIBAUD CLOCAL CMSPAR CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB </SECTION> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libgphoto2-2.5.9/libgphoto2_port/doc/Makefile.in����������������������������������������������������0000644�0001750�0000144�00000041201�12615454335�016452� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/DocRules.am $(srcdir)/Makefile.in \ $(top_srcdir)/auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ IOLIB_LIST = @IOLIB_LIST@ IOLIB_LTLIST = @IOLIB_LTLIST@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGPHOTO2_PORT_AGE = @LIBGPHOTO2_PORT_AGE@ LIBGPHOTO2_PORT_CURRENT = @LIBGPHOTO2_PORT_CURRENT@ LIBGPHOTO2_PORT_CURRENT_MIN = @LIBGPHOTO2_PORT_CURRENT_MIN@ LIBGPHOTO2_PORT_REVISION = @LIBGPHOTO2_PORT_REVISION@ LIBGPHOTO2_PORT_VERSION_INFO = @LIBGPHOTO2_PORT_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBUSB1_CFLAGS = @LIBUSB1_CFLAGS@ LIBUSB1_CONFIG_PROG = @LIBUSB1_CONFIG_PROG@ LIBUSB1_LIBS = @LIBUSB1_LIBS@ LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ LIBUSB_CONFIG_PROG = @LIBUSB_CONFIG_PROG@ LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBUSB = @REQUIREMENTS_FOR_LIBUSB@ REQUIREMENTS_FOR_LIBUSB1 = @REQUIREMENTS_FOR_LIBUSB1@ SED = @SED@ SERIAL_LIBS = @SERIAL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ 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@ iolibdir = @iolibdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ # The name of the module. DOC_MODULE = gphoto2-port # The directory containing the source code (if it contains documentation). DOC_SOURCE_DIR = ../libgphoto2_port # The top-level SGML file. DOC_MAIN_SGML_FILE = $(DOC_MODULE)-api.sgml # include common doc generation rules EXTRA_DIST = $(DOC_MODULE)-api.sgml $(DOC_MODULE)-sections.txt \ DocRules.am @ENABLE_GTK_DOC_TRUE@TARGET_DIR = $(apidocdir)/$(DOC_MODULE) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/DocRules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(srcdir)/DocRules.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: @ENABLE_GTK_DOC_FALSE@html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local cscopelist-am ctags-am dist-hook \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local 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 \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am .PRECIOUS: Makefile clean-local: rm -f *~ *.bak *.hierarchy *.signals *.args *-unused.txt maintainer-clean-local: clean rm -rf sgml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt @ENABLE_GTK_DOC_TRUE@all-local: templates sgml html @ENABLE_GTK_DOC_TRUE@scan: @ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) @ENABLE_GTK_DOC_TRUE@templates: scan @ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) @ENABLE_GTK_DOC_TRUE@sgml: templates @ENABLE_GTK_DOC_TRUE@ cd $(srcdir) && gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) @ENABLE_GTK_DOC_TRUE@html: sgml @ENABLE_GTK_DOC_TRUE@ if ! test -d html ; then mkdir html ; fi @ENABLE_GTK_DOC_TRUE@ cd html && gtkdoc-mkhtml $(DOC_MODULE) ../$(srcdir)/$(DOC_MAIN_SGML_FILE) @ENABLE_GTK_DOC_TRUE@install-data-local: @ENABLE_GTK_DOC_TRUE@ $(INSTALL) -d -m 0755 $(DESTDIR)$(TARGET_DIR) @ENABLE_GTK_DOC_TRUE@ $(INSTALL_DATA) ./html/*.html $(DESTDIR)$(TARGET_DIR) @ENABLE_GTK_DOC_TRUE@ $(INSTALL_DATA) ./html/index.sgml $(DESTDIR)$(TARGET_DIR) @ENABLE_GTK_DOC_TRUE@ gtkdoc-fixxref --module=$(DOC_MODULE) --html-dir=$(DESTDIR)$(apidocdir) @ENABLE_GTK_DOC_TRUE@dist-hook: @ENABLE_GTK_DOC_TRUE@ (cd $(srcdir) ; tar cvf - html) | (cd $(distdir); tar xf -) @ENABLE_GTK_DOC_TRUE@.PHONY : html sgml templates scan @ENABLE_GTK_DOC_FALSE@all-local: @ENABLE_GTK_DOC_FALSE@ @echo "Dummy target $@." @ENABLE_GTK_DOC_FALSE@dist-hook: @ENABLE_GTK_DOC_FALSE@ @echo "Dummy target $@." @ENABLE_GTK_DOC_FALSE@ @echo "Re-run configure with adequate parameters and run make again to build docs." @ENABLE_GTK_DOC_FALSE@install-data-local: @ENABLE_GTK_DOC_FALSE@ @echo "Dummy target $@" @ENABLE_GTK_DOC_FALSE@ @echo "Re-run configure with adequate parameters and run make again to build docs." # Local Variables: # mode: makefile # End: # 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. .NOEXPORT: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libgphoto2-2.5.9/libgphoto2_port/doc/Makefile.am����������������������������������������������������0000644�0001750�0000144�00000000462�12557123324�016441� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������## Process this file with automake to produce Makefile.in # The name of the module. DOC_MODULE=gphoto2-port # The directory containing the source code (if it contains documentation). DOC_SOURCE_DIR=../libgphoto2_port # include common doc generation rules include DocRules.am EXTRA_DIST += DocRules.am ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libgphoto2-2.5.9/libgphoto2_port/doc/gphoto2-port-api.sgml������������������������������������������0000644�0001750�0000144�00000006410�12557123324�020403� �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!DOCTYPE BOOK PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [ <!entity hash "#"> <!entity gphoto2-port-log SYSTEM "sgml/gphoto2-port-log.sgml"> <!entity gphoto2-port-info-list SYSTEM "sgml/gphoto2-port-info-list.sgml"> <!entity gphoto2-port-result SYSTEM "sgml/gphoto2-port-result.sgml"> <!entity gphoto2-port SYSTEM "sgml/gphoto2-port.sgml"> <!entity gphoto2-port-library SYSTEM "sgml/gphoto2-port-library.sgml"> ]> <book id="index"> <bookinfo> <title>GPhoto2-Port API Reference Manual Lutz Müller
lutz@users.sf.net
2000 The Free Software Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy of the GNU Free Documentation License from the Free Software Foundation by visiting their Web site or by writing to:
The Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
This manual documents the GPhoto2-Port library. It gives an overview of GPhoto2-Port, discusses examples that come with GPhoto2-Port and includes detailed documentation of the GPhoto2-Port API. GPhoto2-Port Overview GPhoto2-Port is the GPhoto2 I/O library. The benefit to using this library would be that all communications can be done quickly and without worry for device specific functions; all devices are abstracted to a point, allowing you to read/write to a device using the same interface. For example, you can set all the options on the serial port easily, and then read/write to that device. Additionally, you could easily switch over to a USB device, and read/write without having to learn the USB internals. The whole idea behind this is simplicity. It should be easy to write a program that uses any sort of serial-based device. This will take the hassle out of playing with low-level configurations and actually just get on to writing the core of the application. GPhoto2-Port Core Reference &gphoto2-port-log; &gphoto2-port-result; &gphoto2-port-info-list; &gphoto2-port; &gphoto2-port-library; libgphoto2-2.5.9/libgphoto2_port/doc/DocRules.am0000644000175000001440000000273312561423352016446 00000000000000 # The top-level SGML file. DOC_MAIN_SGML_FILE=$(DOC_MODULE)-api.sgml EXTRA_DIST = $(DOC_MODULE)-api.sgml $(DOC_MODULE)-sections.txt clean-local: rm -f *~ *.bak *.hierarchy *.signals *.args *-unused.txt maintainer-clean-local: clean rm -rf sgml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt if ENABLE_GTK_DOC TARGET_DIR=$(apidocdir)/$(DOC_MODULE) all-local: templates sgml html scan: cd $(srcdir) && gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) templates: scan cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) sgml: templates cd $(srcdir) && gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) html: sgml if ! test -d html ; then mkdir html ; fi cd html && gtkdoc-mkhtml $(DOC_MODULE) ../$(srcdir)/$(DOC_MAIN_SGML_FILE) install-data-local: $(INSTALL) -d -m 0755 $(DESTDIR)$(TARGET_DIR) $(INSTALL_DATA) ./html/*.html $(DESTDIR)$(TARGET_DIR) $(INSTALL_DATA) ./html/index.sgml $(DESTDIR)$(TARGET_DIR) gtkdoc-fixxref --module=$(DOC_MODULE) --html-dir=$(DESTDIR)$(apidocdir) dist-hook: (cd $(srcdir) ; tar cvf - html) | (cd $(distdir); tar xf -) .PHONY : html sgml templates scan else all-local: @echo "Dummy target $@." dist-hook: @echo "Dummy target $@." @echo "Re-run configure with adequate parameters and run make again to build docs." install-data-local: @echo "Dummy target $@" @echo "Re-run configure with adequate parameters and run make again to build docs." endif # Local Variables: # mode: makefile # End: libgphoto2-2.5.9/libgphoto2_port/COPYING.LIB0000644000175000001440000006125512557123324015307 00000000000000 GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright © 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright © This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! libgphoto2-2.5.9/libgphoto2_port/auto-aux/0000755000175000001440000000000012623156266015466 500000000000000libgphoto2-2.5.9/libgphoto2_port/auto-aux/compile0000755000175000001440000001624512615454334016772 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/libgphoto2_port/auto-aux/depcomp0000755000175000001440000005601612615454335016772 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/libgphoto2_port/auto-aux/ar-lib0000755000175000001440000001330212615454334016477 00000000000000#! /bin/sh # Wrapper for Microsoft lib.exe me=ar-lib scriptversion=2012-03-01.08; # UTC # Copyright (C) 2010-2014 Free Software Foundation, Inc. # Written by Peter Rosin . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # func_error message func_error () { echo "$me: $1" 1>&2 exit 1 } file_conv= # func_file_conv build_file # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv in mingw) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin) file=`cygpath -m "$file" || echo "$file"` ;; wine) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_at_file at_file operation archive # Iterate over all members in AT_FILE performing OPERATION on ARCHIVE # for each of them. # When interpreting the content of the @FILE, do NOT use func_file_conv, # since the user would need to supply preconverted file names to # binutils ar, at least for MinGW. func_at_file () { operation=$2 archive=$3 at_file_contents=`cat "$1"` eval set x "$at_file_contents" shift for member do $AR -NOLOGO $operation:"$member" "$archive" || exit $? done } case $1 in '') func_error "no command. Try '$0 --help' for more information." ;; -h | --h*) cat <. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libgphoto2-2.5.9/libgphoto2_port/auto-aux/test-driver0000755000175000001440000001104012615454335017577 00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/libgphoto2_port/auto-aux/install-sh0000755000175000001440000003452312615454334017417 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2013-12-25.23; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/libgphoto2_port/auto-aux/ltmain.sh0000755000175000001440000117077112615454327017247 00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.6 package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 3 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES 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 . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do 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 # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >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 "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # 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. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # 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" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # 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). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 3 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, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname (GNU libtool) 2.4.6 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # 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+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # 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 relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -stdlib=* select c++ std lib with clang -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: libgphoto2-2.5.9/libgphoto2_port/auto-aux/config.rpath0000755000175000001440000003521312557123756017726 00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2003 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; mingw* | pw32* | os2*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux*) case $CC in icc|ecc) wl='-Wl,' ;; ccc) wl='-Wl,' ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; sco3.2v5*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) wl='-Wl,' ;; sysv4*MP*) ;; uts4*) ;; esac fi # Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no 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 ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then 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 fi ;; amigaos*) 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 use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; 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 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 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) 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 hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 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 rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi4*) ;; 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=' ' libext=lib ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then hardcode_direct=no fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) 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 ;; hpux10* | hpux11*) if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=no ;; ia64*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; *) 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 ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4.2uw2*) hardcode_direct=yes hardcode_minus_L=no ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) ;; sysv5*) hardcode_libdir_flag_spec= ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. libname_spec='lib$name' case "$host_os" in aix3*) ;; aix4* | aix5*) ;; amigaos*) ;; beos*) ;; bsdi4*) ;; cygwin* | mingw* | pw32*) shrext=.dll ;; darwin* | rhapsody*) shrext=.dylib ;; dgux*) ;; freebsd1*) ;; freebsd*) ;; gnu*) ;; hpux9* | hpux10* | hpux11*) case "$host_cpu" in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac ;; irix5* | irix6* | nonstopux*) case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux*) ;; netbsd*) ;; newsos6) ;; nto-qnx) ;; openbsd*) ;; os2*) libname_spec='$name' shrext=.dll ;; osf3* | osf4* | osf5*) ;; sco3.2v5*) ;; solaris*) ;; sunos4*) ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ;; sysv4*MP*) ;; uts4*) ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' < # Created: 1993-05-16 # Public domain. # # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' IFS=" "" $nl" errstatus=0 dirmode= usage="\ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Create each directory DIR (with mode MODE, if specified), including all leading file name components. Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" exit $? ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --version) echo "$0 $scriptversion" exit $? ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac # Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and # mkdir -p a/c at the same time, both will detect that a is missing, # one will create a, then the other will try to create a and die with # a "File exists" error. This is a problem when calling mkinstalldirs # from a parallel make. We use --version in the probe to restrict # ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec 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. test -d ./-p && rmdir ./-p test -d ./--version && rmdir ./--version fi ;; *) if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" else # Clean up after NextStep and OpenStep mkdir. for d in ./-m ./-p ./--version "./$dirmode"; do test -d $d && rmdir $d done fi ;; esac for file do case $file in /*) pathcomp=/ ;; *) pathcomp= ;; esac oIFS=$IFS IFS=/ set fnord $file shift IFS=$oIFS for d do test "x$d" = x && continue pathcomp=$pathcomp$d case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr= chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp=$pathcomp/ done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/libgphoto2_port/auto-aux/config.guess0000755000175000001440000012442112615454334017730 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2014 Free Software Foundation, Inc. timestamp='2014-11-04' # 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 # the Free Software Foundation; either version 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac case "${UNAME_MACHINE}" in i?86) test -z "$VENDOR" && VENDOR=pc ;; *) test -z "$VENDOR" && VENDOR=unknown ;; esac test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-${VENDOR}-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-${VENDOR}-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # 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'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; 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 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-${VENDOR}-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-${VENDOR}-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-${VENDOR}-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-${VENDOR}-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp 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 echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 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 ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` 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 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} 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 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} 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 # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-${VENDOR}-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $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 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` 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 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF 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 ;; *:AIX:*:[4567]) 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 IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # 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 -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-${VENDOR}-osf1mk else echo ${UNAME_MACHINE}-${VENDOR}-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' 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 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' 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 ;; 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 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-${VENDOR}-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-${VENDOR}-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks 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 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-${VENDOR}-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-${VENDOR}-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-${VENDOR}-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-${VENDOR}-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-${VENDOR}-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-${VENDOR}-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-${VENDOR}-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-${VENDOR}-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-${VENDOR}-linux-${LIBC} ;; PA8*) echo hppa2.0-${VENDOR}-linux-${LIBC} ;; *) echo hppa-${VENDOR}-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-${VENDOR}-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-${VENDOR}-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-${VENDOR}-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-${VENDOR}-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} 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 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} 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 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-${VENDOR}-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-${VENDOR}-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-${VENODR}-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp 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 echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi 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}-${VENDOR}-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/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-${VENODR}-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) 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; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { 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; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' 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; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 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 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 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-${VENDOR}-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-${VENDOR}-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-${VENDOR}-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-${VENDOR}-tops10 exit ;; *:TENEX:*:*) echo pdp10-${VENDOR}-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-${VENDOR}-tops20 exit ;; *:ITS:*:*) echo pdp10-${VENDOR}-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-${VENDOR}-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in 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 ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-${VENDOR}-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp 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` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: libgphoto2-2.5.9/libgphoto2_port/auto-aux/missing0000755000175000001440000001533012615454334017005 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: libgphoto2-2.5.9/libgphoto2_port/AUTHORS0000644000175000001440000000021712557123324014706 00000000000000Scott Fritzinger Johannes Erdfelt (USB support) Based on work by: Beat Christen libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/0000755000175000001440000000000012623156266015541 500000000000000libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-packaging.m40000644000175000001440000000420412610415620020237 00000000000000AC_DEFUN([GPKG_CHECK_RPM], [ AC_ARG_WITH([rpmbuild], [AS_HELP_STRING([--with-rpmbuild=PATH], [Program to use for building RPMs])]) AC_MSG_CHECKING([for rpmbuild or rpm]) if test -x "${with_rpmbuild}" then RPMBUILD="${with_rpmbuild}" AC_MSG_RESULT([${RPMBUILD} (from parameter)]) else AC_MSG_RESULT([using autodetection]) AC_CHECK_PROGS(RPMBUILD, [rpmbuild rpm], false) AC_MSG_CHECKING([for rpmbuild or rpm]) AC_MSG_RESULT([${RPMBUILD} (autodetected)]) fi AC_SUBST([RPMBUILD]) AM_CONDITIONAL([ENABLE_RPM], [test "$RPMBUILD" != "false"]) ]) AC_DEFUN([GPKG_CHECK_LINUX], [ # effective_target has to be determined in advance AC_REQUIRE([AC_NEED_BYTEORDER_H]) is_linux=false case "$effective_target" in *linux*) is_linux=true ;; esac AM_CONDITIONAL([HAVE_LINUX], ["$is_linux"]) # required for docdir # FIXME: Implicit dependency # AC_REQUIRE(GP_CHECK_DOC_DIR) AC_ARG_WITH([hotplug-doc-dir], [AS_HELP_STRING([--with-hotplug-doc-dir=PATH], [Where to install hotplug scripts as docs [default=autodetect]])]) if "$is_linux"; then AC_MSG_CHECKING([for hotplug doc dir]) if test "x${with_hotplug_doc_dir}" != "x" then # given as parameter hotplugdocdir="${with_hotplug_doc_dir}" AC_MSG_RESULT([${hotplugdocdir} (from parameter)]) else # start at docdir hotplugdocdir="${docdir}/linux-hotplug" AC_MSG_RESULT([${hotplugdocdir} (default)]) fi else hotplugdocdir="" fi AC_ARG_WITH([hotplug-usermap-dir], [AS_HELP_STRING([--with-hotplug-usermap-dir=PATH], [Where to install hotplug scripts as docs [default=autodetect]])]) if "$is_linux"; then AC_MSG_CHECKING([for hotplug usermap dir]) if test "x${with_hotplug_usermap_dir}" != "x" then # given as parameter hotplugusermapdir="${with_hotplug_usermap_dir}" AC_MSG_RESULT([${hotplugusermapdir} (from parameter)]) else # start at docdir hotplugusermapdir="${docdir}/linux-hotplug" AC_MSG_RESULT([${hotplugusermapdir} (default)]) fi else hotplugusermapdir="" fi # Let us hope that automake does not create "" directories # on non-Linux systems now. AC_SUBST([hotplugdocdir]) AC_SUBST([hotplugusermapdir]) ]) libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-dynamic-libraries.m40000644000175000001440000000361312610415620021714 00000000000000AC_DEFUN([GP_DYNAMIC_LIBRARIES],[dnl dnl We require either of those dnl AC_REQUIRE([AC_LIBTTDL_INSTALLABLE])dnl dnl AC_REQUIRE([AC_LIBLTDL_CONVENIENCE])dnl AC_REQUIRE([AC_LIBTOOL_DLOPEN])dnl AC_REQUIRE([AC_PROG_LIBTOOL])dnl dnl --------------------------------------------------------------------------- dnl Check for libltdl: dnl - lt_dlforeachfile has been introduced in libtool-1.4. dnl - However, there are still systems out there running libtool-1.3. dnl For those, we will use our shipped libltdl. This has the welcome dnl side effect that we don't have to distinguish between libltdl 1.3 with dnl and without the notorious segfault bug. dnl - FIXME: In case we're using our own version, we have to check whether dnl -ldl is required? dnl --------------------------------------------------------------------------- # $0 ltdl_msg="no (not found or too old)" have_ltdl=false LIBS_save="$LIBS" LIBS="$LIBLTDL" AC_CHECK_LIB([ltdl], [lt_dlforeachfile],[ CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="$LTDLINCL" AC_CHECK_HEADER([ltdl.h],[ AC_DEFINE([HAVE_LTDL],1,[whether we use libltdl]) ltdl_msg="yes (from system)" have_ltdl=: ]) CPPFLAGS="$CPPFLAGS_save" ]) LIBS="$LIBS_save" if "$have_ltdl"; then :; else AC_MSG_CHECKING([for included libltdl]) if test -d "$srcdir/libltdl"; then LIBLTDL="\$(top_builddir)/libltdl/libltdlc.la" LTDLINCL="-I\$(top_srcdir)/libltdl" have_ltdl=: ltdl_msg="yes (included)" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_ERROR([ *** Could not detect or configure libltdl. ]) fi fi GP_CONFIG_MSG([libltdl],["${ltdl_msg}"]) ])dnl dnl dnl #################################################################### dnl dnl Please do not remove this: dnl filetype: 2b993145-3256-47b4-84fd-ec4dcdf4fdf9 dnl I use this to find all the different instances of this file which dnl are supposed to be synchronized. dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-libltdl.m40000644000175000001440000000346012610415620017744 00000000000000dnl Written by Hans Ulrich Niedermann dnl LDFLAGS vs LIBS fix by Dan Nicholson dnl dnl We are using our own libltdl checks instead of AC_WITH_LTDL dnl because we do not want to ship our own copy of libltdl any more. dnl Not shipping libltdl makes it possible to ditch our own autogen.sh dnl and relying on standard autoconf's "autoreconf". dnl dnl Look for external libltdl, not shipping internal libltdl. AC_DEFUN([GP_LIB_LTDL],[dnl AC_ARG_VAR([LTDLINCL],[CFLAGS for compiling with libltdl]) AC_ARG_VAR([LIBLTDL],[LIBS to add for linking against libltdl]) if test "x${LTDLINCL}${LIBLTDL}" = "x"; then AC_CHECK_HEADER([ltdl.h], [dnl AC_CHECK_LIB([ltdl], [lt_dlinit],[dnl LTDLINCL="" LIBLTDL="-lltdl" AC_DEFINE([HAVE_LTDL],[1],[Whether libltdl (of libtool fame) is present]) ],[dnl AC_MSG_ERROR([ $PACKAGE requires the ltdl library, included with libtool Please make sure that the proper development package is installed (libltdl-dev, libtool-ltdl-devel, etc.) ])[]dnl ])dnl ]) else AC_MSG_CHECKING([for libltdl flags]) AC_MSG_RESULT([set explicitly: ${LTDLINCL} ${LIBLTDL}]) fi AC_SUBST([LTDLINCL]) AC_SUBST([LIBLTDL]) dnl dnl Make sure we can actually compile and link against libltdl AC_LANG_PUSH([C]) AC_MSG_CHECKING([that we can compile and link with libltdl]) saved_CPPFLAGS="$CPPFLAGS" saved_LIBS="$LIBS" CPPFLAGS="$CPPFLAGS $LTDLINCL" LIBS="$LIBS $LIBLTDL" AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl #include /* for NULL */ #include /* for lt_* */ ],[dnl int ret = lt_dlforeachfile("/usr/lib:/usr/local/lib", NULL, NULL); ])], [AC_MSG_RESULT([yes])], [dnl AC_MSG_RESULT([no]) AC_MSG_ERROR([cannot compile and link against libltdl ${PACKAGE_TARNAME} requires libltdl (the libtool dl* library), but cannot compile and link against it. Aborting. ]) ]) CPPFLAGS="$saved_CPPFLAGS" LIBS="$saved_LIBS" AC_LANG_POP ])dnl libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-va-copy.m40000644000175000001440000000212212610415620017666 00000000000000dnl @synopsis GP_VA_COPY dnl dnl Checks whether one of these compiles and links: dnl 1. va_copy() dnl 2. __va_copy() dnl 3. fallback dnl dnl In case of 1 or 2, AC_DEFINE(HAVE_VA_COPY). dnl In case of 2, AC_DEFINE(va_copy,__va_copy) dnl dnl In code, use it like this dnl #ifdef HAVE_VA_COPY dnl ... code with va_copy ... dnl #else dnl ... code without va_copy or with error ... dnl #endif dnl AC_DEFUN([GP_VA_COPY],[dnl dnl AC_CHECK_HEADER([stdarg.h],[],[ AC_MSG_ERROR([ Building $PACKAGE_NAME requires . ]) ]) dnl have_va_copy=no AC_TRY_LINK([ #include ],[ va_list a,b; va_copy(a,b); ],[ have_va_copy="va_copy" ],[ AC_TRY_LINK([ #include ],[ va_list a,b; __va_copy(a,b); ],[ have_va_copy="__va_copy" AC_DEFINE([va_copy],[__va_copy],[__va_copy() was the originally proposed name]) ]) ]) dnl AC_MSG_CHECKING([for va_copy() or replacement]) AC_MSG_RESULT([$have_va_copy]) dnl if test "x$have_va_copy" != "xno"; then AC_DEFINE([HAVE_VA_COPY],1,[Whether we have the va_copy() function]) fi ])dnl dnl dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-manual-pstoimg.m40000644000175000001440000000210612610415620021247 00000000000000dnl --------------------------------------------------------------------------- dnl pstoimg: This program is needed for processing images. If not found, dnl documentation can still be built, but without figures. dnl --------------------------------------------------------------------------- AC_DEFUN([GP_CHECK_PSTOIMG], [ AC_REQUIRE([GP_CHECK_DOT])dnl for creating tesseract.ps try_pstoimg=true have_pstoimg=false AC_ARG_WITH(pstoimg, AS_HELP_STRING([--without-pstoimg], [Do not use pstoimg]),[ if test "x$withval" = "xno"; then try_pstoimg=false fi]) if $try_pstoimg; then AC_PATH_PROG(PSTOIMG,pstoimg) if test -n "${PSTOIMG}"; then have_pstoimg=true fi fi if $have_pstoimg; then AC_SUBST(PSTOIMG) AC_MSG_CHECKING([whether ${PSTOIMG} works]) rm -f tesseract.png ${PSTOIMG} -type png -scale 1.2 -antialias -crop a tesseract.ps > /dev/null if test $? != 0 || test ! -f tesseract.png; then have_pstoimg=false AC_MSG_RESULT(no) else AC_MSG_RESULT(yes) fi rm -f tesseract.png fi AM_CONDITIONAL(ENABLE_PSTOIMG, $have_pstoimg) ]) libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/README.m40000644000175000001440000000035312610415620016645 00000000000000This is the gPhoto projects' collection of autoconf/automake m4 macros. It has been designed to be used in - gphoto2 - libgphoto2 - libgphoto2_port (located in libgphoto2/) - gtkam Some macros are re-used ones from libexif. libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/Makefile.in0000644000175000001440000003512512615454335017533 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = gphoto-m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ IOLIB_LIST = @IOLIB_LIST@ IOLIB_LTLIST = @IOLIB_LTLIST@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGPHOTO2_PORT_AGE = @LIBGPHOTO2_PORT_AGE@ LIBGPHOTO2_PORT_CURRENT = @LIBGPHOTO2_PORT_CURRENT@ LIBGPHOTO2_PORT_CURRENT_MIN = @LIBGPHOTO2_PORT_CURRENT_MIN@ LIBGPHOTO2_PORT_REVISION = @LIBGPHOTO2_PORT_REVISION@ LIBGPHOTO2_PORT_VERSION_INFO = @LIBGPHOTO2_PORT_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBUSB1_CFLAGS = @LIBUSB1_CFLAGS@ LIBUSB1_CONFIG_PROG = @LIBUSB1_CONFIG_PROG@ LIBUSB1_LIBS = @LIBUSB1_LIBS@ LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ LIBUSB_CONFIG_PROG = @LIBUSB_CONFIG_PROG@ LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBUSB = @REQUIREMENTS_FOR_LIBUSB@ REQUIREMENTS_FOR_LIBUSB1 = @REQUIREMENTS_FOR_LIBUSB1@ SED = @SED@ SERIAL_LIBS = @SERIAL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ 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@ iolibdir = @iolibdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ EXTRA_DIST = gp-byteorder.m4 gp-camlibs.m4 gp-check-doxygen.m4 gp-check-library.m4 gp-check-popt.m4 gp-check-shell-environment.m4 gp-config-msg.m4 gp-documentation.m4 gp-dynamic-libraries.m4 gp-gettext-hack.m4 gp-internal-docs.m4 gp-libltdl.m4 gp-manual-docbook-xml.m4 gp-manual-documentation.m4 gp-manual-fig2dev.m4 gp-manual-graphviz.m4 gp-manual-gtk-doc.m4 gp-manual-pstoimg.m4 gp-manual-w3m.m4 gp-packaging.m4 gp-pkg-config.m4 gp-references.m4 gp-stdint.m4 gp-udev.m4 gp-va-copy.m4 README.m4 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gphoto-m4/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu gphoto-m4/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info 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-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 \ tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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. .NOEXPORT: libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-stdint.m40000644000175000001440000005700212610415620017624 00000000000000dnl AC_NEED_STDINT_H ( HEADER-TO-GENERATE ) dnl Originally written 2001 by Dan Fandrich dnl My contribution is hereby placed into the public domain. dnl No warranty is expressed or implied. dnl dnl Look for a header file that defines size-specific integer types like the dnl ones recommended to be in stdint.h in the C99 standard (e.g. uint32_t). dnl This is a dumbed-down version of the macro of the same name in the file dnl ac_need_stdint_h.m4 which is part of the ac-archive, available at dnl (also, another macro dnl AC_CREATE_STDINT_H by the same author). This version is not as smart, dnl but works on older autoconf versions and has a different license. dnl AX_CHECK_DEFINED_TYPE ( TYPE, FILE, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND ) dnl This is similar to _AC_CHECK_TYPE_NEW (a.k.a. new syntax version of dnl AC_CHECK_TYPE) in autoconf 2.50 but works on older versions AC_DEFUN([AX_CHECK_DEFINED_TYPE], [AC_MSG_CHECKING([for $1 in $2]) AC_EGREP_CPP(changequote(<<,>>)dnl <<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl changequote([,]), [#include <$2>], ac_cv_type_$1=yes, ac_cv_type_$1=no)dnl AC_MSG_RESULT($ac_cv_type_$1) if test $ac_cv_type_$1 = yes; then $3 else $4 fi ]) dnl Look for a header file that defines size-specific integer types AC_DEFUN([AX_NEED_STDINT_H], [ ac_dir=`AS_DIRNAME(["$1"])` if test "$ac_dir" != "$1" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && AS_MKDIR_P(["$ac_dir"]) fi AX_CHECK_DEFINED_TYPE(uint8_t, stdint.h, [ cat > "$1" < EOF], [AX_CHECK_DEFINED_TYPE(uint8_t, inttypes.h, [cat > "$1" < EOF], [AX_CHECK_DEFINED_TYPE(uint8_t, sys/types.h, [cat > "$1" < EOF], [AX_CHECK_DEFINED_TYPE(u_int8_t, sys/types.h, [cat > "$1" < typedef u_int8_t uint8_t; typedef u_int16_t uint16_t; typedef u_int32_t uint32_t; EOF AX_CHECK_DEFINED_TYPE(u_int64_t, sys/types.h, [cat >> "$1" <> "$1" <]) AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>]) m4_ifvaln([$1],[$1]) break done AC_MSG_CHECKING([for stdint uintptr_t]) ]) ]) AC_DEFUN([AX_CHECK_HEADER_STDINT_O],[ AC_CACHE_CHECK([for stdint uint32_t], [ac_cv_header_stdint_o],[ ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h) AC_MSG_RESULT([(..)]) for i in m4_ifval([$1],[$1],[inttypes.h sys/inttypes.h stdint.h]) ; do unset ac_cv_type_uint32_t unset ac_cv_type_uint64_t AC_CHECK_TYPE(uint32_t,[ac_cv_header_stdint_o=$i],continue,[#include <$i>]) AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>]) m4_ifvaln([$1],[$1]) break break; done AC_MSG_CHECKING([for stdint uint32_t]) ]) ]) AC_DEFUN([AX_CHECK_HEADER_STDINT_U],[ AC_CACHE_CHECK([for stdint u_int32_t], [ac_cv_header_stdint_u],[ ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h) AC_MSG_RESULT([(..)]) for i in m4_ifval([$1],[$1],[sys/types.h inttypes.h sys/inttypes.h]) ; 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],continue,[#include <$i>]) AC_CHECK_TYPE(u_int64_t,[and64="/u_int64_t"],[and64=""],[#include<$i>]) m4_ifvaln([$1],[$1]) break break; done AC_MSG_CHECKING([for stdint u_int32_t]) ]) ]) AC_DEFUN([AX_CREATE_STDINT_H], [# ------ AX CREATE STDINT H ------------------------------------- AC_MSG_CHECKING([for stdint types]) ac_stdint_h=`echo ifelse($1, , _stdint.h, $1)` # try to shortcircuit - if the default include path of the compiler # can find a "stdint.h" header then we assume that all compilers can. AC_CACHE_VAL([ac_cv_header_stdint_t],[ old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS="" old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS="" old_CFLAGS="$CFLAGS" ; CFLAGS="" AC_TRY_COMPILE([#include ],[int_least32_t v = 0;], [ac_cv_stdint_result="(assuming C99 compatible system)" ac_cv_header_stdint_t="stdint.h"; ], [ac_cv_header_stdint_t=""]) CXXFLAGS="$old_CXXFLAGS" CPPFLAGS="$old_CPPFLAGS" CFLAGS="$old_CFLAGS" ]) v="... $ac_cv_header_stdint_h" 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?)]) elif test "_$ac_cv_header_stdint_t" = "_" ; then AC_MSG_RESULT([(putting them into $ac_stdint_h)$v]) else ac_cv_header_stdint="$ac_cv_header_stdint_t" AC_MSG_RESULT([$ac_cv_header_stdint (shortcircuit)]) fi if test "_$ac_cv_header_stdint_t" = "_" ; then # can not shortcircuit.. dnl .....intro message done, now do a few system checks..... dnl btw, all old CHECK_TYPE macros do automatically "DEFINE" a type, dnl therefore we use the autoconf implementation detail CHECK_TYPE_NEW dnl instead that is triggered with 3 or more arguments (see types.m4) inttype_headers=`echo $2 | sed -e 's/,/ /g'` ac_cv_stdint_result="(no helpful system typedefs seen)" AX_CHECK_HEADER_STDINT_X(dnl stdint.h inttypes.h sys/inttypes.h $inttype_headers, ac_cv_stdint_result="(seen uintptr_t$and64 in $i)") if test "_$ac_cv_header_stdint_x" = "_" ; then AX_CHECK_HEADER_STDINT_O(dnl, inttypes.h sys/inttypes.h stdint.h $inttype_headers, ac_cv_stdint_result="(seen uint32_t$and64 in $i)") fi if test "_$ac_cv_header_stdint_x" = "_" ; then if test "_$ac_cv_header_stdint_o" = "_" ; then AX_CHECK_HEADER_STDINT_U(dnl, sys/types.h inttypes.h sys/inttypes.h $inttype_headers, ac_cv_stdint_result="(seen u_int32_t$and64 in $i)") fi fi dnl if there was no good C99 header file, do some typedef checks... if test "_$ac_cv_header_stdint_x" = "_" ; then AC_MSG_CHECKING([for stdint datatype model]) AC_MSG_RESULT([(..)]) AX_CHECK_DATA_MODEL fi if test "_$ac_cv_header_stdint_x" != "_" ; then ac_cv_header_stdint="$ac_cv_header_stdint_x" elif test "_$ac_cv_header_stdint_o" != "_" ; then ac_cv_header_stdint="$ac_cv_header_stdint_o" elif test "_$ac_cv_header_stdint_u" != "_" ; then ac_cv_header_stdint="$ac_cv_header_stdint_u" else ac_cv_header_stdint="stddef.h" fi AC_MSG_CHECKING([for extra inttypes in chosen header]) AC_MSG_RESULT([($ac_cv_header_stdint)]) dnl see if int_least and int_fast types are present in _this_ header. 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>]) AC_CHECK_TYPE(intmax_t,,,[#include <$ac_cv_header_stdint>]) fi # shortcircut to system "stdint.h" # ------------------ PREPARE VARIABLES ------------------------------ if test "$GCC" = "yes" ; then ac_cv_stdint_message="using gnu compiler "`$CC --version | head -1` else ac_cv_stdint_message="using $CC" fi AC_MSG_RESULT([make use of $ac_cv_header_stdint in $ac_stdint_h dnl $ac_cv_stdint_result]) dnl ----------------------------------------------------------------- # ----------------- DONE inttypes.h checks START header ------------- AC_CONFIG_COMMANDS([$ac_stdint_h],[ AC_MSG_NOTICE(creating $ac_stdint_h : $_ac_stdint_h) ac_stdint=$tmp/_stdint.h echo "#ifndef" $_ac_stdint_h >$ac_stdint echo "#define" $_ac_stdint_h "1" >>$ac_stdint echo "#ifndef" _GENERATED_STDINT_H >>$ac_stdint echo "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint echo "/* generated $ac_cv_stdint_message */" >>$ac_stdint if test "_$ac_cv_header_stdint_t" != "_" ; then echo "#define _STDINT_HAVE_STDINT_H" "1" >>$ac_stdint echo "#include " >>$ac_stdint echo "#endif" >>$ac_stdint echo "#endif" >>$ac_stdint else cat >>$ac_stdint < #else #include /* .................... configured part ............................ */ STDINT_EOF echo "/* whether we have a C99 compatible stdint header file */" >>$ac_stdint if test "_$ac_cv_header_stdint_x" != "_" ; then ac_header="$ac_cv_header_stdint_x" echo "#define _STDINT_HEADER_INTPTR" '"'"$ac_header"'"' >>$ac_stdint else echo "/* #undef _STDINT_HEADER_INTPTR */" >>$ac_stdint fi echo "/* whether we have a C96 compatible inttypes header file */" >>$ac_stdint if test "_$ac_cv_header_stdint_o" != "_" ; then ac_header="$ac_cv_header_stdint_o" echo "#define _STDINT_HEADER_UINT32" '"'"$ac_header"'"' >>$ac_stdint else echo "/* #undef _STDINT_HEADER_UINT32 */" >>$ac_stdint fi echo "/* whether we have a BSD compatible inet types header */" >>$ac_stdint if test "_$ac_cv_header_stdint_u" != "_" ; then ac_header="$ac_cv_header_stdint_u" echo "#define _STDINT_HEADER_U_INT32" '"'"$ac_header"'"' >>$ac_stdint else echo "/* #undef _STDINT_HEADER_U_INT32 */" >>$ac_stdint fi echo "" >>$ac_stdint if test "_$ac_header" != "_" ; then if test "$ac_header" != "stddef.h" ; then echo "#include <$ac_header>" >>$ac_stdint echo "" >>$ac_stdint fi fi echo "/* which 64bit typedef has been found */" >>$ac_stdint if test "$ac_cv_type_uint64_t" = "yes" ; then echo "#define _STDINT_HAVE_UINT64_T" "1" >>$ac_stdint else echo "/* #undef _STDINT_HAVE_UINT64_T */" >>$ac_stdint fi if test "$ac_cv_type_u_int64_t" = "yes" ; then echo "#define _STDINT_HAVE_U_INT64_T" "1" >>$ac_stdint else echo "/* #undef _STDINT_HAVE_U_INT64_T */" >>$ac_stdint fi echo "" >>$ac_stdint echo "/* which type model has been detected */" >>$ac_stdint if test "_$ac_cv_char_data_model" != "_" ; then echo "#define _STDINT_CHAR_MODEL" "$ac_cv_char_data_model" >>$ac_stdint echo "#define _STDINT_LONG_MODEL" "$ac_cv_long_data_model" >>$ac_stdint else echo "/* #undef _STDINT_CHAR_MODEL // skipped */" >>$ac_stdint echo "/* #undef _STDINT_LONG_MODEL // skipped */" >>$ac_stdint fi echo "" >>$ac_stdint echo "/* whether int_least types were detected */" >>$ac_stdint if test "$ac_cv_type_int_least32_t" = "yes"; then echo "#define _STDINT_HAVE_INT_LEAST32_T" "1" >>$ac_stdint else echo "/* #undef _STDINT_HAVE_INT_LEAST32_T */" >>$ac_stdint fi echo "/* whether int_fast types were detected */" >>$ac_stdint if test "$ac_cv_type_int_fast32_t" = "yes"; then echo "#define _STDINT_HAVE_INT_FAST32_T" "1" >>$ac_stdint else echo "/* #undef _STDINT_HAVE_INT_FAST32_T */" >>$ac_stdint fi echo "/* whether intmax_t type was detected */" >>$ac_stdint if test "$ac_cv_type_intmax_t" = "yes"; then echo "#define _STDINT_HAVE_INTMAX_T" "1" >>$ac_stdint else echo "/* #undef _STDINT_HAVE_INTMAX_T */" >>$ac_stdint fi echo "" >>$ac_stdint cat >>$ac_stdint <= 199901L #define _HAVE_UINT64_T #define _HAVE_LONGLONG_UINT64_T typedef long long int64_t; typedef unsigned long long uint64_t; #elif !defined __STRICT_ANSI__ #if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__ #define _HAVE_UINT64_T typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__ /* note: all ELF-systems seem to have loff-support which needs 64-bit */ #if !defined _NO_LONGLONG #define _HAVE_UINT64_T #define _HAVE_LONGLONG_UINT64_T typedef long long int64_t; typedef unsigned long long uint64_t; #endif #elif defined __alpha || (defined __mips && defined _ABIN32) #if !defined _NO_LONGLONG typedef long int64_t; typedef unsigned long uint64_t; #endif /* compiler/cpu type to define int64_t */ #endif #endif #endif #if defined _STDINT_HAVE_U_INT_TYPES /* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */ typedef u_int8_t uint8_t; typedef u_int16_t uint16_t; typedef u_int32_t uint32_t; /* glibc compatibility */ #ifndef __int8_t_defined #define __int8_t_defined #endif #endif #ifdef _STDINT_NEED_INT_MODEL_T /* we must guess all the basic types. Apart from byte-adressable system, */ /* there a few 32-bit-only dsp-systems that we guard with BYTE_MODEL 8-} */ /* (btw, those nibble-addressable systems are way off, or so we assume) */ dnl /* have a look at "64bit and data size neutrality" at */ dnl /* http://unix.org/version2/whatsnew/login_64bit.html */ dnl /* (the shorthand "ILP" types always have a "P" part) */ #if defined _STDINT_BYTE_MODEL #if _STDINT_LONG_MODEL+0 == 242 /* 2:4:2 = IP16 = a normal 16-bit system */ typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned long uint32_t; #ifndef __int8_t_defined #define __int8_t_defined typedef char int8_t; typedef short int16_t; typedef long int32_t; #endif #elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL == 444 /* 2:4:4 = LP32 = a 32-bit system derived from a 16-bit */ /* 4:4:4 = ILP32 = a normal 32-bit system */ typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #ifndef __int8_t_defined #define __int8_t_defined typedef char int8_t; typedef short int16_t; typedef int int32_t; #endif #elif _STDINT_LONG_MODEL+0 == 484 || _STDINT_LONG_MODEL+0 == 488 /* 4:8:4 = IP32 = a 32-bit system prepared for 64-bit */ /* 4:8:8 = LP64 = a normal 64-bit system */ typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #ifndef __int8_t_defined #define __int8_t_defined typedef char int8_t; typedef short int16_t; typedef int int32_t; #endif /* this system has a "long" of 64bit */ #ifndef _HAVE_UINT64_T #define _HAVE_UINT64_T typedef unsigned long uint64_t; typedef long int64_t; #endif #elif _STDINT_LONG_MODEL+0 == 448 /* LLP64 a 64-bit system derived from a 32-bit system */ typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #ifndef __int8_t_defined #define __int8_t_defined typedef char int8_t; typedef short int16_t; typedef int int32_t; #endif /* assuming the system has a "long long" */ #ifndef _HAVE_UINT64_T #define _HAVE_UINT64_T #define _HAVE_LONGLONG_UINT64_T typedef unsigned long long uint64_t; typedef long long int64_t; #endif #else #define _STDINT_NO_INT32_T #endif #else #define _STDINT_NO_INT8_T #define _STDINT_NO_INT32_T #endif #endif /* * quote from SunOS-5.8 sys/inttypes.h: * Use at your own risk. As of February 1996, the committee is squarely * behind the fixed sized types; the "least" and "fast" types are still being * discussed. The probability that the "fast" types may be removed before * the standard is finalized is high enough that they are not currently * implemented. */ #if defined _STDINT_NEED_INT_LEAST_T typedef int8_t int_least8_t; typedef int16_t int_least16_t; typedef int32_t int_least32_t; #ifdef _HAVE_UINT64_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_UINT64_T typedef uint64_t uint_least64_t; #endif /* least types */ #endif #if defined _STDINT_NEED_INT_FAST_T typedef int8_t int_fast8_t; typedef int int_fast16_t; typedef int32_t int_fast32_t; #ifdef _HAVE_UINT64_T typedef int64_t int_fast64_t; #endif typedef uint8_t uint_fast8_t; typedef unsigned uint_fast16_t; typedef uint32_t uint_fast32_t; #ifdef _HAVE_UINT64_T typedef uint64_t uint_fast64_t; #endif /* fast types */ #endif #ifdef _STDINT_NEED_INTMAX_T #ifdef _HAVE_UINT64_T typedef int64_t intmax_t; typedef uint64_t uintmax_t; #else typedef long intmax_t; typedef unsigned long uintmax_t; #endif #endif #ifdef _STDINT_NEED_INTPTR_T #ifndef __intptr_t_defined #define __intptr_t_defined /* we encourage using "long" to store pointer values, never use "int" ! */ #if _STDINT_LONG_MODEL+0 == 242 || _STDINT_LONG_MODEL+0 == 484 typedef unsinged int uintptr_t; typedef int intptr_t; #elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL+0 == 444 typedef unsigned long uintptr_t; typedef long intptr_t; #elif _STDINT_LONG_MODEL+0 == 448 && defined _HAVE_UINT64_T typedef uint64_t uintptr_t; typedef int64_t intptr_t; #else /* matches typical system types ILP32 and LP64 - but not IP16 or LLP64 */ typedef unsigned long uintptr_t; typedef long intptr_t; #endif #endif #endif /* The ISO C99 standard specifies that in C++ implementations these should only be defined if explicitly requested. */ #if !defined __cplusplus || defined __STDC_CONSTANT_MACROS #ifndef UINT32_C /* Signed. */ # define INT8_C(c) c # define INT16_C(c) c # define INT32_C(c) c # ifdef _HAVE_LONGLONG_UINT64_T # define INT64_C(c) c ## L # else # define INT64_C(c) c ## LL # endif /* Unsigned. */ # define UINT8_C(c) c ## U # define UINT16_C(c) c ## U # define UINT32_C(c) c ## U # ifdef _HAVE_LONGLONG_UINT64_T # define UINT64_C(c) c ## UL # else # define UINT64_C(c) c ## ULL # endif /* Maximal type. */ # ifdef _HAVE_LONGLONG_UINT64_T # define INTMAX_C(c) c ## L # define UINTMAX_C(c) c ## UL # else # define INTMAX_C(c) c ## LL # define UINTMAX_C(c) c ## ULL # endif /* literalnumbers */ #endif #endif /* These limits are merily those of a two complement byte-oriented system */ /* Minimum of signed integral types. */ # define INT8_MIN (-128) # define INT16_MIN (-32767-1) # define INT32_MIN (-2147483647-1) # define INT64_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum of signed integral types. */ # define INT8_MAX (127) # define INT16_MAX (32767) # define INT32_MAX (2147483647) # define INT64_MAX (__INT64_C(9223372036854775807)) /* Maximum of unsigned integral types. */ # define UINT8_MAX (255) # define UINT16_MAX (65535) # define UINT32_MAX (4294967295U) # define UINT64_MAX (__UINT64_C(18446744073709551615)) /* Minimum of signed integral types having a minimum size. */ # define INT_LEAST8_MIN INT8_MIN # define INT_LEAST16_MIN INT16_MIN # define INT_LEAST32_MIN INT32_MIN # define INT_LEAST64_MIN INT64_MIN /* Maximum of signed integral types having a minimum size. */ # define INT_LEAST8_MAX INT8_MAX # define INT_LEAST16_MAX INT16_MAX # define INT_LEAST32_MAX INT32_MAX # define INT_LEAST64_MAX INT64_MAX /* Maximum of unsigned integral types having a minimum size. */ # define UINT_LEAST8_MAX UINT8_MAX # define UINT_LEAST16_MAX UINT16_MAX # define UINT_LEAST32_MAX UINT32_MAX # define UINT_LEAST64_MAX UINT64_MAX /* shortcircuit*/ #endif /* once */ #endif #endif STDINT_EOF fi if cmp -s $ac_stdint_h $ac_stdint 2>/dev/null; then AC_MSG_NOTICE([$ac_stdint_h is unchanged]) else ac_dir=`AS_DIRNAME(["$ac_stdint_h"])` AS_MKDIR_P(["$ac_dir"]) rm -f $ac_stdint_h mv $ac_stdint $ac_stdint_h fi ],[# variables for create stdint.h replacement PACKAGE="$PACKAGE" VERSION="$VERSION" ac_stdint_h="$ac_stdint_h" _ac_stdint_h=AS_TR_CPP(_$PACKAGE-$ac_stdint_h) ac_cv_stdint_message="$ac_cv_stdint_message" ac_cv_header_stdint_t="$ac_cv_header_stdint_t" ac_cv_header_stdint_x="$ac_cv_header_stdint_x" ac_cv_header_stdint_o="$ac_cv_header_stdint_o" ac_cv_header_stdint_u="$ac_cv_header_stdint_u" ac_cv_type_uint64_t="$ac_cv_type_uint64_t" ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t" ac_cv_char_data_model="$ac_cv_char_data_model" ac_cv_long_data_model="$ac_cv_long_data_model" ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t" ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t" ac_cv_type_intmax_t="$ac_cv_type_intmax_t" ]) ]) libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-manual-w3m.m40000644000175000001440000000214412610415620020275 00000000000000dnl --------------------------------------------------------------------------- dnl w3m: This program is needed for converting HTML to text. dnl --------------------------------------------------------------------------- AC_DEFUN([GP_CHECK_W3M], [ try_w3m=true have_w3m=false AC_ARG_WITH(w3m, [ --without-w3m Don't use w3m],[ if test "x$withval" = "xno"; then try_w3m=false fi]) if $try_w3m; then AC_PATH_PROG(W3M,w3m) if test -n "${W3M}"; then have_w3m=true fi fi if $have_w3m; then AC_MSG_CHECKING([whether ${W3M} works]) cat > html2text-test.xxxhtml 2> /dev/null < <h1>HTML2TEXT Test</h1>

This is a test.

EOF ${W3M} -T text/html -cols 78 -dump html2text-test.xxxhtml > html2text-test.txt if test $? != 0 || test ! -f html2text-test.txt || test ! -s html2text-test.txt then have_w3m=false AC_MSG_RESULT([no (see http://www.w3m.org/ or http://w3m.sourceforge.net/ ...)]) W3M=false AC_SUBST(W3M) else AC_MSG_RESULT([yes]) AC_SUBST(W3M) fi fi AM_CONDITIONAL([HAVE_W3M], [$have_w3m]) ]) libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/Makefile.am0000644000175000001440000000076012610415620017504 00000000000000EXTRA_DIST = gp-byteorder.m4 gp-camlibs.m4 gp-check-doxygen.m4 gp-check-library.m4 gp-check-popt.m4 gp-check-shell-environment.m4 gp-config-msg.m4 gp-documentation.m4 gp-dynamic-libraries.m4 gp-gettext-hack.m4 gp-internal-docs.m4 gp-libltdl.m4 gp-manual-docbook-xml.m4 gp-manual-documentation.m4 gp-manual-fig2dev.m4 gp-manual-graphviz.m4 gp-manual-gtk-doc.m4 gp-manual-pstoimg.m4 gp-manual-w3m.m4 gp-packaging.m4 gp-pkg-config.m4 gp-references.m4 gp-stdint.m4 gp-udev.m4 gp-va-copy.m4 README.m4 libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-references.m40000644000175000001440000000213612610415620020436 00000000000000dnl dnl Define external references dnl dnl Define once, use many times. dnl No more URLs and Mail addresses in translated strings and stuff. dnl AC_DEFUN([GP_REF],[ AC_SUBST([$1],["$2"]) AC_DEFINE_UNQUOTED([$1],["$2"],[$3]) ]) AC_DEFUN([GP_REFERENCES], [ GP_REF( [URL_GPHOTO_HOME], [http://www.gphoto.org/], [gphoto project home page])dnl GP_REF( [URL_GPHOTO_PROJECT], [http://sourceforge.net/projects/gphoto], [gphoto sourceforge project page]) GP_REF( [URL_DIGICAM_LIST], [http://www.teaser.fr/~hfiguiere/linux/digicam.html], [camera list with support status]) GP_REF( [URL_JPHOTO_HOME], [http://jphoto.sourceforge.net/], [jphoto home page]) GP_REF( [URL_USB_MASSSTORAGE], [http://www.linux-usb.org/USB-guide/x498.html], [information about using USB mass storage]) GP_REF( [MAIL_GPHOTO_DEVEL], [], [gphoto development mailing list]) GP_REF( [MAIL_GPHOTO_USER], [], [gphoto user mailing list]) GP_REF( [MAIL_GPHOTO_TRANSLATION], [], [gphoto translation mailing list]) ]) libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-manual-graphviz.m40000644000175000001440000000226412610415620021424 00000000000000dnl --------------------------------------------------------------------------- dnl dot: This program is needed for processing images. If not found, dnl documentation can still be built, but without figures. dnl --------------------------------------------------------------------------- AC_DEFUN([GP_CHECK_DOT], [ try_dot=true have_dot=false AC_ARG_WITH(dot, AS_HELP_STRING([--without-dot], [Do not use dot]), [ if test "x$withval" = "xno"; then try_dot=false fi]) if $try_dot; then AC_PATH_PROG(DOT,dot) if test -n "${DOT}"; then have_dot=true fi fi if $have_dot; then AC_SUBST(DOT) AC_MSG_CHECKING([whether ${DOT} works]) ${DOT} -Tps -o tesseract.ps 2> /dev/null </dev/null ; then $1; fi ]) ])dnl libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-camlibs.m40000644000175000001440000001242512610415620017731 00000000000000dnl GP_CAMLIB & Co. dnl dnl Redundancy free definition of libgphoto2 camlibs. dnl dnl Removes the redundany from the camlib lists, and executes dnl additional consistency checks, e.g. to ensure that subdirectories dnl actually exist. dnl dnl You can mark camlibs as unlisted, i.e. they won't be listed dnl explicitly but still be recognized. dnl dnl Example usage: dnl dnl GP_CAMLIB([canon]) dnl GP_CAMLIB([casio]) dnl [...] dnl GP_CAMLIB([ptp],[unlisted]) dnl GP_CAMLIB([ptp2]) dnl [...] dnl GP_CAMLIB([toshiba]) dnl GP_CAMLIBS_DEFINE([camlibs]) dnl dnl The camlibs basedir parameter of GP_CAMLIBS_DEFINE is optional. dnl dnl #################################################################### dnl AC_DEFUN([GP_CAMLIBS_INIT],[dnl AC_BEFORE([$0],[GP_CAMLIB])dnl m4_define_default([gp_camlib_srcdir], [camlibs])dnl m4_define_default([gp_camlibs], [])dnl m4_define_default([gp_camlibs_unlisted], [])dnl ])dnl dnl dnl #################################################################### dnl AC_DEFUN([GP_CAMLIB],[dnl AC_REQUIRE([GP_CAMLIBS_INIT])dnl AC_BEFORE([$0],[GP_CAMLIBS_DEFINE])dnl m4_if([$2],[unlisted],[dnl # $0($1,$2) m4_append([gp_camlibs_unlisted], [$1], [ ])dnl ],[$#],[1],[dnl # $0($1) m4_append([gp_camlibs], [$1], [ ])dnl ],[dnl m4_errprint(__file__:__line__:[ Error: *** Illegal parameter 2 to $0: `$2' *** Valid values are: undefined or [unlisted] ])dnl m4_exit(1)dnl ])dnl ])dnl dnl dnl #################################################################### dnl AC_DEFUN([GP_CAMLIBS_WARNING],[dnl AC_MSG_WARN([ # Caution: You have chosen to build a non-standard set of camlibs. # You may have disabled the camlib required for your camera, or # enabled a camlib that does *not* work, and overrides the camlib # that does work. Consequently, # YOUR CAMERA MAY NOT WORK! # # Many cameras of several brands are supported by a camlib with a # name different from the name of the camera brand or model. If you # are unsure, please # * enable at least the "ptp2" camlib # * or even better, just build "all" camlibs. ]) sleep 2 ]) dnl dnl #################################################################### dnl AC_DEFUN([GP_CAMLIBS_DEFINE],[dnl AC_REQUIRE([GP_CAMLIBS_INIT])dnl m4_pattern_allow([m4_strip])dnl m4_ifval([$1],[m4_define([gp_camlib_srcdir],[$1])])dnl dnl for camlib in m4_strip(gp_camlibs) m4_strip(gp_camlibs_unlisted) dnl do dnl if test -d "$srcdir/m4_strip(gp_camlib_srcdir)/$camlib"; then :; else dnl AC_MSG_ERROR([ dnl * Fatal: dnl * Source subdirectory for camlib \`$camlib' not found in dnl * directory \`$srcdir/m4_strip(gp_camlib_srcdir)/' dnl ]) dnl fi dnl done AC_MSG_CHECKING([which camlibs to compile]) dnl Yes, that help output won't be all that pretty, but we at least dnl do not have to edit it by hand. AC_ARG_WITH([camlibs],[AS_HELP_STRING( [--with-camlibs=], [Compile camera drivers (camlibs) in . ]dnl [Drivers may be separated with commas. ]dnl [CAUTION: DRIVER NAMES AND CAMERA NAMES MAY DIFFER. ]dnl ['all' is the default and compiles all camlibs. ]dnl [Possible camlibs are: ]dnl m4_strip(gp_camlibs))], [camlibs="$withval"], [camlibs="all"])dnl dnl ALL_DEFINED_CAMLIBS="m4_strip(gp_camlibs) m4_strip(gp_camlibs_unlisted)" ALL_DEFAULT_CAMLIBS="m4_strip(gp_camlibs)" BUILD_THESE_CAMLIBS_BASE="" if test "$camlibs" = "all"; then BUILD_THESE_CAMLIBS_BASE="$ALL_DEFAULT_CAMLIBS" AC_MSG_RESULT([all]) else # If the string starts with "all,", we start with the default list # and add the explicitly defined ones later if echo "$camlibs" | grep "^all," > /dev/null; then BUILD_THESE_CAMLIBS_BASE="$ALL_DEFAULT_CAMLIBS" camlibs="$(echo "$camlibs" | sed 's/^all,//')" fi # camlibs=$(echo $camlibs | sed 's/,/ /g') IFS_save="$IFS" IFS=",$IFS" # Walk through enumeration of camlibs given by user and add them to list # of camlibs to build if we know them. for camlib in ${camlibs}; do IFS="$IFS_save" found=false for from_all_camlib in ${ALL_DEFINED_CAMLIBS}; do if test "$camlib" = "$from_all_camlib"; then if test "x$BUILD_THESE_CAMLIBS_BASE" = "x"; then BUILD_THESE_CAMLIBS_BASE="$camlib" else BUILD_THESE_CAMLIBS_BASE="$BUILD_THESE_CAMLIBS_BASE $camlib" fi found=: break fi done if $found; then :; else AC_MSG_ERROR([Unknown camlib $camlib!]) fi done if test "x$BUILD_THESE_CAMLIBS_BASE" = "xcanon" ; then # Gentoo mode... if user just said "canon", add "ptp2" ... should save support requests. BUILD_THESE_CAMLIBS_BASE="$BUILD_THESE_CAMLIBS_BASE ptp2" camlibs="$camlibs ptp2" AC_MSG_WARN([ "You have just selected the old canon driver. However most current Canons\n" "are supported by the PTP2 driver.\n" "Autoselecting ptp2 driver too to avoid support requests.\n" ]) fi IFS="$IFS_save" AC_MSG_RESULT([$camlibs]) GP_CAMLIBS_WARNING AC_DEFINE_UNQUOTED([INCOMPLETE_CAMLIB_SET], ["$BUILD_THESE_CAMLIBS_BASE"], [Whether the set of camlibs built is incomplete]) fi BUILD_THESE_CAMLIBS="" for f in $BUILD_THESE_CAMLIBS_BASE do BUILD_THESE_CAMLIBS="${BUILD_THESE_CAMLIBS}${BUILD_THESE_CAMLIBS+ }${f}.la" done AC_SUBST([BUILD_THESE_CAMLIBS]) AC_SUBST([ALL_DEFINED_CAMLIBS]) AC_SUBST([ALL_DEFAULT_CAMLIBS]) ])dnl dnl dnl #################################################################### dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-manual-docbook-xml.m40000644000175000001440000000264412610415620022012 00000000000000dnl ------------------------------------------------------------------------ dnl try to find xmlto (required for generation of man pages and html docs) dnl ------------------------------------------------------------------------ AC_DEFUN([GP_CHECK_DOCBOOK_XML], [ AC_MSG_CHECKING([for XML catalogs]) XML_CATALOG_FILES="`find /etc/xml /usr/share/xml /usr/share/sgml -type f \( -iname 'catalog.xml' -or -iname 'catalog' \) -print 2> /dev/null | while read file; do echo -n "$file "; done`" if test "x$XML_CATALOG_FILES" = "x" then AC_MSG_RESULT([none found.]) else AC_MSG_RESULT([found ${XML_CATALOG_FILES}]) fi AC_SUBST(XML_CATALOG_FILES) #XML_DEBUG_CATALOG=0 #AC_SUBST(XML_DEBUG_CATALOG) manual_msg="no (http://cyberelk.net/tim/xmlto/)" try_xmlto=true have_xmlto=false AC_ARG_WITH(xmlto, [ --without-xmlto Don't use xmlto],[ if test x$withval = xno; then try_xmlto=false fi]) if $try_xmlto; then AC_PATH_PROG(XMLTO,xmlto) if test -n "${XMLTO}"; then have_xmlto=true manual_msg="yes" PURE_XMLTO="$XMLTO" if true || test "x$XML_CATALOG_FILES" = "x"; then unset XML_CATALOG_FILES XMLTO="${XMLTO} -m \$(top_srcdir)/src/xsl/custom.xsl" else XMLTO="env XML_CATALOG_FILES=\"${XML_CATALOG_FILES}\" ${XMLTO} -m ${top_srcdir}/src/xsl/custom.xsl" fi else # in case anybody runs $(XMLTO) somewhere, we return false XMLTO=false fi fi AM_CONDITIONAL(XMLTO, $have_xmlto) ]) libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-internal-docs.m40000644000175000001440000000163212610415620021057 00000000000000dnl dnl dnl AC_DEFUN([GP_INTERNAL_DOCS],[dnl # Whether to enable the internal docs build. # # This takes quite some time due to the generation of lots of call # graphs, so it is disabled by default. set_enable_internal_docs=no AC_ARG_ENABLE([internal-docs], [dnl AS_HELP_STRING([--enable-internal-docs], [Build internal code docs if doxygen available])], [dnl dnl If either --enable-foo nor --disable-foo were given, execute this. if test "x$enableval" = xno \ || test "x$enableval" = xoff \ || test "x$enableval" = xfalse; then set_enable_internal_docs=no elif test "x$enableval" = xyes \ || test "x$enableval" = xon \ || test "x$enableval" = xtrue then set_enable_internal_docs=yes fi ]) AC_MSG_CHECKING([whether to create internal code docs]) AC_MSG_RESULT([${set_enable_internal_docs}]) AM_CONDITIONAL([ENABLE_INTERNAL_DOCS], [test "x${set_enable_internal_docs}" = "xyes"]) ])dnl libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-check-shell-environment.m40000644000175000001440000000220412610415620023035 00000000000000dnl @synopsis GP_CHECK_SHELL_ENVIRONMENT([SHOW-LOCALE-VARS]) dnl dnl Check that the shell environment is sane. dnl dnl If SHOW-LOCALE-VARS is set to [true], print all LC_* and LANG* dnl variables at configure time. (WARNING: This is not portable!) dnl dnl AC_DEFUN([GP_CHECK_SHELL_ENVIRONMENT], [ # make sure "cd" doesn't print anything on stdout if test x"${CDPATH+set}" = xset then CDPATH=: export CDPATH fi # make sure $() command substitution works AC_MSG_CHECKING([for POSIX sh \$() command substitution]) if test "x$(pwd)" = "x`pwd`" && test "y$(echo "foobar")" = "y`echo foobar`" # '''' then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) uname=`uname 2>&1` # '' uname_a=`uname -a 2>&1` # '' AC_MSG_ERROR([ * POSIX sh \$() command substition does not work with this shell. * * You are running a very rare species of shell. Please report this * sighting to <${PACKAGE_BUGREPORT}>: * SHELL=${SHELL} * uname=${uname} * uname-a=${uname_a} * Please also include your OS and version. * * Run this configure script using a better (i.e. POSIX compliant) shell. ]) fi dnl m4_if([$1],[true],[dnl printenv | grep -E '^(LC_|LANG)' ])dnl dnl ])dnl dnl libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-manual-gtk-doc.m40000644000175000001440000000143112610415620021115 00000000000000dnl --------------------------------------------------------------------------- dnl gtk-doc: We use gtk-doc for building our documentation. However, we dnl require the user to explicitely request the build. dnl --------------------------------------------------------------------------- AC_DEFUN([GP_CHECK_GTK_DOC], [ try_gtkdoc=false gtkdoc_msg="no (not requested)" have_gtkdoc=false AC_ARG_ENABLE(docs, [ --enable-docs Use gtk-doc to build documentation [default=no]],[ if test x$enableval = xyes; then try_gtkdoc=true fi]) if $try_gtkdoc; then AC_PATH_PROG(GTKDOC,gtkdoc-mkdb) if test -n "${GTKDOC}"; then have_gtkdoc=true gtkdoc_msg="yes" else gtkdoc_msg="no (http://www.gtk.org/rdp/download.html)" fi fi AM_CONDITIONAL(ENABLE_GTK_DOC, $have_gtkdoc) ]) libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-manual-documentation.m40000644000175000001440000002260712610415620022446 00000000000000dnl dnl check where to install documentation dnl dnl determines documentation "root directory", i.e. the directory dnl where all documentation will be placed in dnl AC_DEFUN([GP_CHECK_DOCDIR], [ AC_ARG_WITH(doc-dir, [ --with-doc-dir=PATH Where to install docs [default=autodetect]])dnl # check for the main ("root") documentation directory AC_MSG_CHECKING([main docdir]) if test "x${with_doc_dir}" != "x" then # docdir is given as parameter docdir="${with_doc_dir}" AC_MSG_RESULT([${docdir} (from parameter)]) else # otherwise invent a docdir hopefully compatible with system policy if test -d "/usr/share/doc" then maindocdir='${prefix}/share/doc' AC_MSG_RESULT([${maindocdir} (FHS style)]) elif test -d "/usr/doc" then maindocdir='${prefix}/doc' AC_MSG_RESULT([${maindocdir} (old style)]) else maindocdir='${datadir}/doc' AC_MSG_RESULT([${maindocdir} (default value)]) fi AC_MSG_CHECKING(package docdir) # check whether to include package version into documentation path # FIXME: doesn't work properly. if ls -d /usr/{share/,}doc/*-[[]0-9[]]* > /dev/null 2>&1 then docdir="${maindocdir}/${PACKAGE}-${VERSION}" AC_MSG_RESULT([${docdir} (redhat style)]) else docdir="${maindocdir}/${PACKAGE}" AC_MSG_RESULT([${docdir} (default style)]) fi fi AC_SUBST(docdir) ])dnl dnl Solaris hack for grep and tr AC_DEFUN([GP_CHECK_TR], [ if test -n "`echo $host_os | grep '[sS]olaris'`"; then TR=/usr/xpg4/bin/tr GREP=/usr/xpg4/bin/grep else TR=tr GREP=grep fi ]) dnl dnl check whether to build docs and where to: dnl dnl * determine presence of prerequisites (only gtk-doc for now) dnl * determine destination directory for HTML files dnl AC_DEFUN([GP_BUILD_DOCS], [ # doc dir has to be determined in advance AC_REQUIRE([GP_CHECK_DOCDIR]) AC_REQUIRE([GP_CHECK_GTK_DOC]) AC_REQUIRE([GP_CHECK_FIG2DEV]) AC_REQUIRE([GP_CHECK_DOCBOOK_XML]) AC_REQUIRE([GP_CHECK_TR]) AC_REQUIRE([GP_CHECK_PSTOIMG]) AC_REQUIRE([GP_CHECK_DOT]) AC_REQUIRE([GP_CHECK_W3M]) gphoto2xml='$(top_srcdir)/src/gphoto2.xml' AC_SUBST(gphoto2xml) dnl --------------------------------------------------------------------------- dnl Give the user the possibility to install documentation in dnl user-defined locations. dnl --------------------------------------------------------------------------- AC_ARG_WITH(html-dir, [ --with-html-dir=PATH Where to install html docs [default=autodetect]]) AC_MSG_CHECKING([for html dir]) if test "x${with_html_dir}" = "x" ; then htmldir="${docdir}/html" AC_MSG_RESULT([${htmldir} (default)]) else htmldir="${with_html_dir}" AC_MSG_RESULT([${htmldir} (from parameter)]) fi AC_SUBST(htmldir) AC_ARG_WITH(xhtml-dir, [ --with-xhtml-dir=PATH Where to install xhtml docs [default=autodetect]]) AC_MSG_CHECKING([for xhtml dir]) if test "x${with_xhtml_dir}" = "x" ; then xhtmldir="${docdir}/xhtml" AC_MSG_RESULT([${xhtmldir} (default)]) else xhtmldir="${with_xhtml_dir}" AC_MSG_RESULT([${xhtmldir} (from parameter)]) fi AC_SUBST(xhtmldir) AC_ARG_WITH(html-nochunks-dir, [ --with-html-nochunks-dir=PATH Where to install html-nochunks docs [default=autodetect]]) AC_MSG_CHECKING([for html-nochunks dir]) if test "x${with_html_nochunks_dir}" = "x" ; then htmlnochunksdir="${docdir}/html-nochunks" AC_MSG_RESULT([${htmlnochunksdir} (default)]) else htmlnochunksdir="${with_html_nochunks_dir}" AC_MSG_RESULT([${htmlnochunksdir} (from parameter)]) fi AC_SUBST(htmlnochunksdir) AC_ARG_WITH(xhtml-nochunks-dir, [ --with-xhtml-nochunks-dir=PATH Where to install xhtml-nochunks docs [default=autodetect]]) AC_MSG_CHECKING([for xhtml-nochunks dir]) if test "x${with_xhtml_nochunks_dir}" = "x" ; then xhtmlnochunksdir="${docdir}/xhtml-nochunks" AC_MSG_RESULT([${xhtmlnochunksdir} (default)]) else xhtmlnochunksdir="${with_xhtml_nochunks_dir}" AC_MSG_RESULT([${xhtmlnochunksdir} (from parameter)]) fi AC_SUBST(xhtmlnochunksdir) AC_ARG_WITH(xml-dir, [ --with-xml-dir=PATH Where to install xml docs [default=autodetect]]) AC_MSG_CHECKING([for xml dir]) if test "x${with_xml_dir}" = "x" ; then xmldir="${docdir}/xml" AC_MSG_RESULT([${xmldir} (default)]) else xmldir="${with_xml_dir}" AC_MSG_RESULT([${xmldir} (from parameter)]) fi AC_SUBST(xmldir) xmlcssdir="${xmldir}/css" AC_SUBST(xmlcssdir) AC_ARG_WITH(txt-dir, [ --with-txt-dir=PATH Where to install txt docs [default=autodetect]]) AC_MSG_CHECKING([for txt dir]) if test "x${with_txt_dir}" = "x" ; then txtdir="${docdir}/txt" AC_MSG_RESULT([${txtdir} (default)]) else txtdir="${with_txt_dir}" AC_MSG_RESULT([${txtdir} (from parameter)]) fi AC_SUBST(txtdir) AC_ARG_WITH(man-dir, [ --with-man-dir=PATH Where to install man docs [default=autodetect]]) AC_MSG_CHECKING([for man dir]) if test "x${with_man_dir}" = "x" ; then manmandir="${docdir}/man" AC_MSG_RESULT([${manmandir} (default)]) else manmandir="${with_man_dir}" AC_MSG_RESULT([${manmandir} (from parameter)]) fi AC_SUBST(manmandir) AC_ARG_WITH(pdf-dir, [ --with-pdf-dir=PATH Where to install pdf docs [default=autodetect]]) AC_MSG_CHECKING([for pdf dir]) if test "x${with_pdf_dir}" = "x" ; then pdfdir="${docdir}/pdf" AC_MSG_RESULT([${pdfdir} (default)]) else pdfdir="${with_pdf_dir}" AC_MSG_RESULT([${pdfdir} (from parameter)]) fi AC_SUBST(pdfdir) AC_ARG_WITH(ps-dir, [ --with-ps-dir=PATH Where to install ps docs [default=autodetect]]) AC_MSG_CHECKING([for ps dir]) if test "x${with_ps_dir}" = "x" ; then psdir="${docdir}/ps" AC_MSG_RESULT([${psdir} (default)]) else psdir="${with_ps_dir}" AC_MSG_RESULT([${psdir} (from parameter)]) fi AC_SUBST(psdir) AC_ARG_WITH(figure-dir, [ --with-figure-dir=PATH Where to install figures [default=autodetect]]) AC_MSG_CHECKING([for figure dir]) if test "x${with_figure_dir}" = "x" ; then figuredir="${docdir}/figures" AC_MSG_RESULT([${figuredir} (default)]) else figuredir="${with_figure_dir}" AC_MSG_RESULT([${figuredir} (from parameter)]) fi AC_SUBST(figuredir) AC_ARG_WITH(screenshots-dir, [ --with-screenshots-dir=PATH Where to install screenshotss [default=autodetect]]) AC_MSG_CHECKING([for screenshots dir]) if test "x${with_screenshots_dir}" = "x" ; then screenshotsdir="${docdir}/screenshots" AC_MSG_RESULT([${screenshotsdir} (default)]) else screenshotsdir="${with_screenshots_dir}" AC_MSG_RESULT([${screenshotsdir} (from parameter)]) fi AC_SUBST(screenshotsdir) screenshotsgtkamdir="${screenshotsdir}/gtkam" AC_SUBST(screenshotsgtkamdir) doc_formats_list='man html txt ps pdf' # initialize have_xmlto* to false for i in $doc_formats_list; do d=`echo $i | $TR A-Z a-z` eval "have_xmlto$d=false" done AC_MSG_CHECKING(checking doc formats) AC_ARG_WITH(doc_formats, [ --with-doc-formats= create doc with format in ; ] [ 'all' build all doc formats; ] [ possible formats are: ] [ man, html, ps, pdf ], doc_formats="$withval", doc_formats="man html txt") if test "$doc_formats" = "all"; then doc_formats=$doc_formats_list else doc_formats=`echo $doc_formats | sed 's/,/ /g'` fi # set have_xmlto* to true if requested and possible if $have_xmlto; then for i in $doc_formats; do if test -n "`echo $doc_formats_list | $GREP -E \"(^| )$i( |\$)\"`"; then eval "have_xmlto$i=true" else AC_ERROR(Unknown doc format $i!) fi done AC_MSG_RESULT($doc_formats) else AC_MSG_RESULT([deactivated (requires xmlto)]) fi # Make sure that xmltopdf actually works if $have_xmltopdf; then AC_MSG_CHECKING([whether pdf creation works]) oldcwd="$(pwd)" top_srcdir() { echo "$srcdir"; } mkdir test-pdf cd test-pdf cat>test-db.xml< Foo Title Foo Chapter Foo bar blah blah . EOF ${PURE_XMLTO} pdf -o . test-db.xml --searchpath .. if test -s test-db.pdf; then AC_MSG_RESULT([yes, look at $(pwd)/test-db.pdf to verify]) else if $have_xmltopdf; then AC_MSG_ERROR([PDF creation requested, but failed. See $(pwd) ...]) else AC_MSG_RESULT([no, but not requested]) fi fi cd "$oldcwd" unset top_srcdir fi AM_CONDITIONAL(XMLTOHTML,$have_xmltohtml) AM_CONDITIONAL(XMLTOMAN,$have_xmltoman) AM_CONDITIONAL(XMLTOTXT,$have_xmltotxt) AM_CONDITIONAL(XMLTOTXT2,$have_xmltotxt && $have_w3m) AM_CONDITIONAL(XMLTOPDF,$have_xmltopdf) AM_CONDITIONAL(XMLTOPS,$have_xmltops) # create list of supported formats AC_MSG_CHECKING([for manual formats to re­create]) xxx="" manual_html="" manual_pdf="" manual_ps="" if $have_xmltohtml; then xxx="${xxx} html" fi if $have_xmltoman; then xxx="${xxx} man" fi if $have_xmltopdf; then xxx="${xxx} pdf" fi if $have_xmltops; then xxx="${xxx} ps" fi if $have_xmltotxt; then xxx="${xxx} txt" fi AC_SUBST(manual_html) AC_SUBST(manual_pdf) AC_SUBST(manual_ps) AC_MSG_RESULT($xxx) if test "x$xxx" != "x" then if $have_fig2dev; then fig_out="" else fig_out="out" fi manual_msg="in (${xxx} ) formats with${fig_out} figures" fi ])dnl libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-manual-fig2dev.m40000644000175000001440000000171112610415620021114 00000000000000dnl --------------------------------------------------------------------------- dnl fig2dev: This program is needed for processing images. If not found, dnl documentation can still be built, but without figures. dnl --------------------------------------------------------------------------- AC_DEFUN([GP_CHECK_FIG2DEV], [ try_fig2dev=true have_fig2dev=false AC_ARG_WITH(fig2dev, [ --without-fig2dev Don't use fig2dev],[ if test "x$withval" = "xno"; then try_fig2dev=false fi]) if $try_fig2dev; then AC_PATH_PROG(FIG2DEV,fig2dev) if test -n "${FIG2DEV}"; then have_fig2dev=true fi fi if $have_fig2dev; then AC_SUBST(FIG2DEV) ${FIG2DEV} -L ps > /dev/null < /dev/null 2>&1 then docdir="${maindocdir}/${PACKAGE}-${VERSION}" AC_MSG_RESULT([${docdir} (redhat style)]) else docdir="${maindocdir}/${PACKAGE}" AC_MSG_RESULT([${docdir} (default style)]) fi fi AC_SUBST([docdir]) ])dnl dnl dnl check whether to build docs and where to: dnl dnl * determine presence of prerequisites (only gtk-doc for now) dnl * determine destination directory for HTML files dnl AC_DEFUN([GP_BUILD_GTK_DOCS], [ # docdir has to be determined in advance AC_REQUIRE([GP_CHECK_DOC_DIR]) # --------------------------------------------------------------------------- # gtk-doc: We use gtk-doc for building our documentation. However, we # require the user to explicitely request the build. # --------------------------------------------------------------------------- try_gtkdoc=false gtkdoc_msg="no (not requested)" have_gtkdoc=false AC_ARG_ENABLE([docs], [AS_HELP_STRING([--enable-docs], [Use gtk-doc to build documentation [default=no]])],[ if test x$enableval = xyes; then try_gtkdoc=true fi ]) if $try_gtkdoc; then AC_PATH_PROG([GTKDOC],[gtkdoc-mkdb]) if test -n "${GTKDOC}"; then have_gtkdoc=true gtkdoc_msg="yes" else gtkdoc_msg="no (http://www.gtk.org/rdp/download.html)" fi fi AM_CONDITIONAL([ENABLE_GTK_DOC], [$have_gtkdoc]) GP_CONFIG_MSG([build API docs with gtk-doc],[$gtkdoc_msg]) # --------------------------------------------------------------------------- # Give the user the possibility to install html documentation in a # user-defined location. # --------------------------------------------------------------------------- AC_ARG_WITH([html-dir], [AS_HELP_STRING([--with-html-dir=PATH], [Where to install html docs [default=autodetect]])]) AC_MSG_CHECKING([for html dir]) if test "x${with_html_dir}" = "x" ; then htmldir="${docdir}/html" AC_MSG_RESULT([${htmldir} (default)]) else htmldir="${with_html_dir}" AC_MSG_RESULT([${htmldir} (from parameter)]) fi AC_SUBST([htmldir]) apidocdir="${htmldir}/api" AC_SUBST([apidocdir]) ])dnl libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-byteorder.m40000644000175000001440000003144112610415620020315 00000000000000dnl AC_NEED_BYTEORDER_H ( HEADER-TO-GENERATE ) dnl Originally written by Dan Fandrich dnl My contribution is hereby placed into the public domain. dnl No warranty is expressed or implied. dnl dnl Create a header file that guarantees that byte swapping macros of the dnl ntohl variety as well as the extended types included in OpenBSD and dnl NetBSD such as le32toh are defined. If possible, the standard ntohl dnl are overloaded as they are optimized for the given platform, but when dnl this is not possible (e.g. on a big-endian machine) they are defined dnl in this file. dnl Look for a symbol in a header file dnl AC_HAVE_SYMBOL ( IDENTIFIER, HEADER-FILE, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND ) AC_DEFUN([AC_HAVE_SYMBOL], [ AC_MSG_CHECKING(for $1 in $2) AC_EGREP_CPP([symbol is present|\<$1\>],[ #include <$2> #ifdef $1 symbol is present #endif ], [AC_MSG_RESULT(yes) $3 ], [AC_MSG_RESULT(no) $4 ])]) dnl Create a header file that defines extended byte swapping macros AC_DEFUN([AC_NEED_BYTEORDER_H], [ ac_dir=`AS_DIRNAME(["$1"])` if test "$ac_dir" != "$1" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && AS_MKDIR_P(["$ac_dir"]) fi # We're only interested in the target CPU, but it's not always set effective_target="$target" if test "x$effective_target" = xNONE -o "x$effective_target" = x ; then effective_target="$host" fi AC_SUBST(effective_target) cat > "$1" << EOF /* This file is generated automatically by configure */ /* It is valid only for the system type ${effective_target} */ #ifndef __BYTEORDER_H #define __BYTEORDER_H EOF dnl First, do an endian check AC_C_BIGENDIAN dnl Look for NetBSD-style extended byte swapping macros AC_HAVE_SYMBOL(le32toh,machine/endian.h, [HAVE_LE32TOH=1 cat >> "$1" << EOF /* extended byte swapping macros are already available */ #include EOF], [ dnl Look for standard byte swapping macros AC_HAVE_SYMBOL(ntohl,arpa/inet.h, [cat >> "$1" << EOF /* ntohl and relatives live here */ #include #define __HAVE_NTOHL EOF], [AC_HAVE_SYMBOL(ntohl,netinet/in.h, [cat >> "$1" << EOF /* ntohl and relatives live here */ #include #define __HAVE_NTOHL EOF],true)]) ]) dnl Look for generic byte swapping macros dnl OpenBSD AC_HAVE_SYMBOL(swap32,machine/endian.h, [cat >> "$1" << EOF /* swap32 and swap16 are defined in machine/endian.h */ EOF], [ dnl Linux GLIBC AC_HAVE_SYMBOL(bswap_32,byteswap.h, [cat >> "$1" << EOF /* Define generic byte swapping functions */ #include #define swap16(x) bswap_16(x) #define swap32(x) bswap_32(x) #define swap64(x) bswap_64(x) EOF], [ dnl NetBSD AC_HAVE_SYMBOL(bswap32,machine/endian.h, dnl We're already including machine/endian.h if this test succeeds [cat >> "$1" << EOF /* Define generic byte swapping functions */ EOF if test "$HAVE_LE32TOH" != "1"; then echo '#include '>> "$1" fi cat >> "$1" << EOF #define swap16(x) bswap16(x) #define swap32(x) bswap32(x) #define swap64(x) bswap64(x) EOF], [ dnl FreeBSD AC_HAVE_SYMBOL(__byte_swap_long,sys/types.h, [cat >> "$1" << EOF /* Define generic byte swapping functions */ #include #define swap16(x) __byte_swap_word(x) #define swap32(x) __byte_swap_long(x) /* No optimized 64 bit byte swapping macro is available */ #define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\ ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\ ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\ ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\ ((x) >> 8) & 0x00000000ff000000ULL | \\ ((x) >> 24) & 0x0000000000ff0000ULL | \\ ((x) >> 40) & 0x000000000000ff00ULL | \\ ((x) >> 56) & 0x00000000000000ffULL)) EOF], [ dnl OS X AC_HAVE_SYMBOL(NXSwapLong,machine/byte_order.h, [cat >> "$1" << EOF /* Define generic byte swapping functions */ #include #define swap16(x) NXSwapShort(x) #define swap32(x) NXSwapLong(x) #define swap64(x) NXSwapLongLong(x) EOF], [ if test $ac_cv_c_bigendian = yes; then cat >> "$1" << EOF /* No other byte swapping functions are available on this big-endian system */ #define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8))) #define swap32(x) ((uint32_t)(((uint32_t)(x) << 24) & 0xff000000UL | \\ ((uint32_t)(x) << 8) & 0x00ff0000UL | \\ ((x) >> 8) & 0x0000ff00UL | \\ ((x) >> 24) & 0x000000ffUL)) #define swap64(x) ((uint64_t)(((uint64_t)(x) << 56) & 0xff00000000000000ULL | \\ ((uint64_t)(x) << 40) & 0x00ff000000000000ULL | \\ ((uint64_t)(x) << 24) & 0x0000ff0000000000ULL | \\ ((uint64_t)(x) << 8) & 0x000000ff00000000ULL | \\ ((x) >> 8) & 0x00000000ff000000ULL | \\ ((x) >> 24) & 0x0000000000ff0000ULL | \\ ((x) >> 40) & 0x000000000000ff00ULL | \\ ((x) >> 56) & 0x00000000000000ffULL)) EOF else cat >> "$1" << EOF /* Use these as generic byteswapping macros on this little endian system */ /* on windows we might not have ntohs / ntohl without including winsock.dll, * so use generic macros */ #ifdef __HAVE_NTOHL # define swap16(x) htons(x) # define swap32(x) htonl(x) #else # define swap16(x) ((uint16_t)(((x) << 8) | ((uint16_t)(x) >> 8))) # define swap32(x) ((uint32_t)((((uint32_t)(x) << 24) & 0xff000000UL) | \\ (((uint32_t)(x) << 8) & 0x00ff0000UL) | \\ (((x) >> 8) & 0x0000ff00UL) | \\ (((x) >> 24) & 0x000000ffUL))) #endif /* No optimized 64 bit byte swapping macro is available */ #define swap64(x) ((uint64_t)((((uint64_t)(x) << 56) & 0xff00000000000000ULL) | \\ (((uint64_t)(x) << 40) & 0x00ff000000000000ULL) | \\ (((uint64_t)(x) << 24) & 0x0000ff0000000000ULL) | \\ (((uint64_t)(x) << 8) & 0x000000ff00000000ULL) | \\ (((x) >> 8) & 0x00000000ff000000ULL) | \\ (((x) >> 24) & 0x0000000000ff0000ULL) | \\ (((x) >> 40) & 0x000000000000ff00ULL) | \\ (((x) >> 56) & 0x00000000000000ffULL))) EOF fi ]) ]) ]) ]) ]) [ if test "$HAVE_LE32TOH" != "1"; then cat >> "$1" << EOF /* The byte swapping macros have the form: */ /* EENN[a]toh or htoEENN[a] where EE is be (big endian) or */ /* le (little-endian), NN is 16 or 32 (number of bits) and a, */ /* if present, indicates that the endian side is a pointer to an */ /* array of uint8_t bytes instead of an integer of the specified length. */ /* h refers to the host's ordering method. */ /* So, to convert a 32-bit integer stored in a buffer in little-endian */ /* format into a uint32_t usable on this machine, you could use: */ /* uint32_t value = le32atoh(&buf[3]); */ /* To put that value back into the buffer, you could use: */ /* htole32a(&buf[3], value); */ /* Define aliases for the standard byte swapping macros */ /* Arguments to these macros must be properly aligned on natural word */ /* boundaries in order to work properly on all architectures */ #ifndef htobe16 # ifdef __HAVE_NTOHL # define htobe16(x) htons(x) # else # ifdef WORDS_BIGENDIAN # define htobe16(x) (x) # else # define htobe16(x) swap16(x) # endif # endif #endif #ifndef htobe32 # ifdef __HAVE_NTOHL # define htobe32(x) htonl(x) # else # ifdef WORDS_BIGENDIAN # define htobe32(x) (x) # else # define htobe32(x) swap32(x) # endif # endif #endif #ifndef be16toh # define be16toh(x) htobe16(x) #endif #ifndef be32toh # define be32toh(x) htobe32(x) #endif #define HTOBE16(x) (x) = htobe16(x) #define HTOBE32(x) (x) = htobe32(x) #define BE32TOH(x) (x) = be32toh(x) #define BE16TOH(x) (x) = be16toh(x) EOF if test $ac_cv_c_bigendian = yes; then cat >> "$1" << EOF /* Define our own extended byte swapping macros for big-endian machines */ #ifndef htole16 # define htole16(x) swap16(x) #endif #ifndef htole32 # define htole32(x) swap32(x) #endif #ifndef le16toh # define le16toh(x) swap16(x) #endif #ifndef le32toh # define le32toh(x) swap32(x) #endif #ifndef le64toh # define le64toh(x) swap64(x) #endif #ifndef htobe64 # define htobe64(x) (x) #endif #ifndef be64toh # define be64toh(x) (x) #endif #define HTOLE16(x) (x) = htole16(x) #define HTOLE32(x) (x) = htole32(x) #define LE16TOH(x) (x) = le16toh(x) #define LE32TOH(x) (x) = le32toh(x) #define LE64TOH(x) (x) = le64toh(x) #define HTOBE64(x) (void) (x) #define BE64TOH(x) (void) (x) EOF else cat >> "$1" << EOF /* On little endian machines, these macros are null */ #ifndef htole16 # define htole16(x) (x) #endif #ifndef htole32 # define htole32(x) (x) #endif #ifndef htole64 # define htole64(x) (x) #endif #ifndef le16toh # define le16toh(x) (x) #endif #ifndef le32toh # define le32toh(x) (x) #endif #ifndef le64toh # define le64toh(x) (x) #endif #define HTOLE16(x) (void) (x) #define HTOLE32(x) (void) (x) #define HTOLE64(x) (void) (x) #define LE16TOH(x) (void) (x) #define LE32TOH(x) (void) (x) #define LE64TOH(x) (void) (x) /* These don't have standard aliases */ #ifndef htobe64 # define htobe64(x) swap64(x) #endif #ifndef be64toh # define be64toh(x) swap64(x) #endif #define HTOBE64(x) (x) = htobe64(x) #define BE64TOH(x) (x) = be64toh(x) EOF fi fi cat >> "$1" << EOF /* Define the C99 standard length-specific integer types */ #include <_stdint.h> EOF case "${effective_target}" in i[3456]86-*) cat >> "$1" << EOF /* Here are some macros to create integers from a byte array */ /* These are used to get and put integers from/into a uint8_t array */ /* with a specific endianness. This is the most portable way to generate */ /* and read messages to a network or serial device. Each member of a */ /* packet structure must be handled separately. */ /* The i386 and compatibles can handle unaligned memory access, */ /* so use the optimized macros above to do this job */ #ifndef be16atoh # define be16atoh(x) be16toh(*(uint16_t*)(x)) #endif #ifndef be32atoh # define be32atoh(x) be32toh(*(uint32_t*)(x)) #endif #ifndef be64atoh # define be64atoh(x) be64toh(*(uint64_t*)(x)) #endif #ifndef le16atoh # define le16atoh(x) le16toh(*(uint16_t*)(x)) #endif #ifndef le32atoh # define le32atoh(x) le32toh(*(uint32_t*)(x)) #endif #ifndef le64atoh # define le64atoh(x) le64toh(*(uint64_t*)(x)) #endif #ifndef htob16a # define htobe16a(a,x) *(uint16_t*)(a) = htobe16(x) #endif #ifndef htobe32a # define htobe32a(a,x) *(uint32_t*)(a) = htobe32(x) #endif #ifndef htobe64a # define htobe64a(a,x) *(uint64_t*)(a) = htobe64(x) #endif #ifndef htole16a # define htole16a(a,x) *(uint16_t*)(a) = htole16(x) #endif #ifndef htole32a # define htole32a(a,x) *(uint32_t*)(a) = htole32(x) #endif #ifndef htole64a # define htole64a(a,x) *(uint64_t*)(a) = htole64(x) #endif EOF ;; *) cat >> "$1" << EOF /* Here are some macros to create integers from a byte array */ /* These are used to get and put integers from/into a uint8_t array */ /* with a specific endianness. This is the most portable way to generate */ /* and read messages to a network or serial device. Each member of a */ /* packet structure must be handled separately. */ /* Non-optimized but portable macros */ #define be16atoh(x) ((uint16_t)(((x)[0]<<8)|(x)[1])) #define be32atoh(x) ((uint32_t)(((x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3])) #define be64atoh_x(x,off,shift) (((uint64_t)((x)[off]))<>8), (a)[1]=(uint8_t)(x) #define htobe32a(a,x) (a)[0]=(uint8_t)((x)>>24), (a)[1]=(uint8_t)((x)>>16), \\ (a)[2]=(uint8_t)((x)>>8), (a)[3]=(uint8_t)(x) #define htobe64a(a,x) (a)[0]=(uint8_t)((x)>>56), (a)[1]=(uint8_t)((x)>>48), \\ (a)[2]=(uint8_t)((x)>>40), (a)[3]=(uint8_t)((x)>>32), \\ (a)[4]=(uint8_t)((x)>>24), (a)[5]=(uint8_t)((x)>>16), \\ (a)[6]=(uint8_t)((x)>>8), (a)[7]=(uint8_t)(x) #define htole16a(a,x) (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) #define htole32a(a,x) (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\ (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) #define htole64a(a,x) (a)[7]=(uint8_t)((x)>>56), (a)[6]=(uint8_t)((x)>>48), \\ (a)[5]=(uint8_t)((x)>>40), (a)[4]=(uint8_t)((x)>>32), \\ (a)[3]=(uint8_t)((x)>>24), (a)[2]=(uint8_t)((x)>>16), \\ (a)[1]=(uint8_t)((x)>>8), (a)[0]=(uint8_t)(x) EOF ;; esac ] cat >> "$1" << EOF #endif /*__BYTEORDER_H*/ EOF]) libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-config-msg.m40000644000175000001440000000523412610415620020350 00000000000000dnl dnl GP_CONFIG_INIT dnl use default LHS width (called implicitly if not called explicitly) dnl GP_CONFIG_INIT([WIDTH-OF-LHS]) dnl explicitly set the LHS width to the given value dnl dnl GP_CONFIG_MSG dnl empty output line dnl GP_CONFIG_MSG([LHS],[RHS]) dnl formatted output line "LHS: RHS" dnl dnl GP_CONFIG_OUTPUT dnl print all the output messages we collected in the mean time dnl dnl Simple way to print a configuration summary at the end of ./configure. dnl dnl Example usage: dnl dnl GP_CONFIG_INIT dnl GP_CONFIG_MSG([Source code location],[${srcdir}]) dnl GP_CONFIG_MSG([Compiler],[${CC}]) dnl GP_CONFIG_MSG dnl GP_CONFIG_MSG([Feature foo],[${foo}]) dnl GP_CONFIG_MSG([Location of bar],[${bar}]) dnl [...] dnl AC_OUTPUT dnl GP_CONFIG_OUTPUT dnl dnl AC_DEFUN([GP_CONFIG_INIT], [dnl AC_REQUIRE([GP_CHECK_SHELL_ENVIRONMENT]) dnl the empty string must contain at least as many spaces as the substr length dnl FIXME: let m4 determine that length dnl (collect left parts in array and choose largest length) m4_if([$1],[],[gp_config_len="30"],[gp_config_len="$1"]) gp_config_empty="" gp_config_len3="$(expr "$gp_config_len" - 3)" n="$gp_config_len" while test "$n" -gt 0; do gp_config_empty="${gp_config_empty} " n="$(expr "$n" - 1)" done gp_config_msg=" Configuration (${PACKAGE_TARNAME} ${PACKAGE_VERSION}): " ])dnl dnl dnl AC_DEFUN([GP_CONFIG_MSG], [AC_REQUIRE([GP_CONFIG_INIT])dnl m4_if([$1],[],[ gp_config_msg="${gp_config_msg} " ],[$2],[],[ gp_config_msg="${gp_config_msg} [$1] " ],[ gp_config_msg_len="$(expr "[$1]" : '.*')" if test "$gp_config_msg_len" -ge "$gp_config_len"; then gp_config_msg_lhs="$(expr "[$1]" : "\(.\{0,${gp_config_len3}\}\)")..:" else gp_config_msg_lhs="$(expr "[$1]:${gp_config_empty}" : "\(.\{0,${gp_config_len}\}\)")" fi gp_config_msg="${gp_config_msg} ${gp_config_msg_lhs} [$2] " ])])dnl dnl AC_DEFUN([GP_CONFIG_MSG_SUBDIRS],[dnl # Message about configured subprojects if test "x$subdirs" != "x"; then GP_CONFIG_MSG()dnl _subdirs="" for sd in $subdirs; do ssd="$(basename "$sd")" if test "x$_subdirs" = "x"; then _subdirs="$ssd"; else _subdirs="$_subdirs $ssd" fi done GP_CONFIG_MSG([Subprojects],[${_subdirs}])dnl fi ])dnl dnl AC_DEFUN([GP_CONFIG_OUTPUT], [AC_REQUIRE([GP_CONFIG_INIT])dnl AC_REQUIRE([GP_CONFIG_MSG])dnl AC_REQUIRE([GP_CONFIG_MSG_SUBDIRS])dnl echo "${gp_config_msg} You may run \"make\" and \"make install\" now." ])dnl dnl dnl Please do not remove this: dnl filetype: de774af3-dc3b-4b1d-b6f2-4aca35d3da16 dnl I use this to find all the different instances of this file which dnl are supposed to be synchronized. dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-gettext-hack.m40000644000175000001440000000466412610415620020715 00000000000000dnl dnl GP_GETTEXT_HACK dnl dnl gettext hack, originally designed for libexif, libgphoto2, and Co. dnl This creates a po/Makevars file with adequate values if the dnl po/Makevars.template is present. dnl dnl Example usage: dnl GP_GETTEXT_HACK([${PACKAGE_TARNAME}-${LIBFOO_CURRENT}], dnl [Copyright Holder], dnl [foo-translation@example.org]) dnl ALL_LINGUAS="de es fr" dnl AM_GNU_GETTEXT_VERSION([0.14.1]) dnl AM_GNU_GETTEXT([external]) dnl AM_PO_SUBDIRS() dnl AM_ICONV() dnl GP_GETTEXT_FLAGS dnl dnl You can leave out the GP_GETTEXT_HACK parameters if you want to, dnl GP_GETTEXT_HACK will try fall back to sensible values in that case: dnl AC_DEFUN([GP_GETTEXT_HACK], [ AC_BEFORE([$0], [AM_GNU_GETTEXT])dnl AC_BEFORE([$0], [AM_GNU_GETTEXT_VERSION])dnl m4_if([$1],[],[GETTEXT_PACKAGE="${PACKAGE_TARNAME}"],[GETTEXT_PACKAGE="$1"]) AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], ["$GETTEXT_PACKAGE"], [The gettext domain we're using]) AC_SUBST([GETTEXT_PACKAGE]) sed_cmds="s|^DOMAIN.*|DOMAIN = ${GETTEXT_PACKAGE}|" m4_if([$2],[],[],[sed_cmds="${sed_cmds};s|^COPYRIGHT_HOLDER.*|COPYRIGHT_HOLDER = $2|"]) m4_ifval([$3],[ if test -n "$PACKAGE_BUGREPORT"; then sed_mb="${PACKAGE_BUGREPORT}" else AC_MSG_ERROR([ *** Your configure.{ac,in} is wrong. *** Either define PACKAGE_BUGREPORT (by using the 4-parameter AC INIT syntax) *** or give [GP_GETTEXT_HACK] the third parameter. *** ]) fi ],[ sed_mb="$3" ]) sed_cmds="${sed_cmds};s|^MSGID_BUGS_ADDRESS.*|MSGID_BUGS_ADDRESS = ${sed_mb}|" # Not so sure whether this hack is all *that* evil... AC_MSG_CHECKING([for po/Makevars requiring hack]) if test -f "${srcdir}/po/Makevars.template"; then sed "$sed_cmds" < "${srcdir}/po/Makevars.template" > "${srcdir}/po/Makevars" AC_MSG_RESULT([yes, done.]) else AC_MSG_RESULT([no]) fi ]) AC_DEFUN([GP_GETTEXT_FLAGS], [ AC_REQUIRE([AM_GNU_GETTEXT]) AC_REQUIRE([GP_CONFIG_INIT]) if test "x${BUILD_INCLUDED_LIBINTL}" = "xyes"; then AM_CFLAGS="${AM_CFLAGS} -I\$(top_srcdir)/intl" fi GP_CONFIG_MSG([Use translations],[${USE_NLS}]) if test "x$USE_NLS" = "xyes" && test "${BUILD_INCLUDED_LIBINTL}"; then GP_CONFIG_MSG([Use included libintl],[${BUILD_INCLUDED_LIBINTL}]) fi ]) dnl Please do not remove this: dnl filetype: 71ff3941-a5ae-4677-a369-d7cb01f92c81 dnl I use this to find all the different instances of this file which dnl are supposed to be synchronized. dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-check-library.m40000644000175000001440000003775312610415620021051 00000000000000dnl @synopsis GP_CHECK_LIBRARY([VARNAMEPART],[libname],[VERSION-REQUIREMENT], dnl [headername],[functionname], dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], dnl [OPTIONAL-REQUIRED-ETC],[WHERE-TO-GET-IT]) dnl dnl Checks for the presence of a certain library. dnl dnl Parameters: dnl dnl VARNAMEPART partial variable name for variable definitions dnl libname name of library dnl VERSION-REQUIREMENT check for the version using pkg-config. dnl default: [] dnl headername name of header file dnl default: [] dnl functionname name of function name in library dnl default: [] dnl ACTION-IF-FOUND shell action to execute if found dnl default: [] dnl ACTION-IF-NOT-FOUND shell action to execute if not found dnl default: [] dnl OPTIONAL-REQUIRED-ETC one of "mandatory", "default-on", "default-off" dnl "disable-explicitly" dnl default: [mandatory] dnl WHERE-TO-GET-IT place where to find the library, e.g. a URL dnl default: [] dnl dnl What the ACTION-IFs can do: dnl dnl * change the variable have_[$1] to "yes" or "no" and thus change dnl the outcome of the test dnl * execute additional checks to define more specific variables, e.g. dnl for different API versions dnl dnl What the OPTIONAL-REQUIRED-ETC options mean: dnl dnl mandatory Absolute requirement, cannot be disabled. dnl default-on If found, it is used. If not found, it is not used. dnl default-off In case of --with-libfoo, detect it. Without dnl --with-libfoo, do not look for and use it. dnl disable-explicitly Required by default, but can be disabled by dnl explicitly giving --without-libfoo. dnl dnl These results have happened after calling GP_CHECK_LIBRARY: dnl dnl AM_CONDITIONAL([HAVE_VARPREFIX],[ if found ]) dnl AM_SUBST([have_VARPREFIX], [ "yes" if found, "no" if not found ]) dnl AM_SUBST([VARPREFIX_CFLAGS],[ -I, -D and stuff ]) dnl AM_SUBST([VARPREFIX_LIBS], [ /path/to/libname.la -L/path -lfoo ]) dnl dnl Parameters to ./configure which influence the GP_CHECK_LIBRARY results: dnl dnl * VARNAMEPART_LIBS=/foobar/arm-palmos/lib/libname.la dnl VARNAMEPART_CFLAGS=-I/foobar/include dnl * --without-libfoo dnl * --with-libfoo=/usr/local dnl * --with-libfoo-include-dir=/foobar/include dnl * --with-libfoo-lib=/foobar/arm-palmos/lib dnl * --with-libfoo=autodetect dnl dnl Examples: dnl GP_CHECK_LIBRARY([LIBEXIF], [libexif])dnl dnl GP_CHECK_LIBRARY([LIBEXIF], [libexif-gtk], [>= 0.3.3])dnl dnl note the space! ^ dnl dnl Possible enhancements: dnl dnl * Derive VAR_PREFIX directly from libname dnl This will change the calling conventions, so be aware of that. dnl * Give names of a header file and function name and to a test dnl compilation. dnl AC_DEFUN([_GP_CHECK_LIBRARY_SOEXT],[dnl AC_MSG_CHECKING([for dynamic library extension]) soext="" case "$host" in *linux*) soext=".so" ;; *sunos*) soext=".so" ;; *solaris*) soext=".so" ;; *bsd*) soext=".so" ;; *darwin*) soext=".dylib" ;; *w32*) soext=".dll" ;; esac case "$host_os" in gnu*) soext=".so" ;; esac if test "x$soext" = "x"; then soext=".so" AC_MSG_RESULT([${soext}]) AC_MSG_WARN([ Host system "${host}" not recognized, defaulting to "${soext}". ]) else AC_MSG_RESULT([${soext}]) fi ])dnl dnl AC_DEFUN([_GP_CHECK_LIBRARY],[ # ---------------------------------------------------------------------- # [GP_CHECK_LIBRARY]([$1],[$2],[$3], # [$4],[$5], # [...],[...],[$8]) m4_ifval([$9],[dnl # $9 ])dnl # ---------------------------------------------------------------------- dnl AC_REQUIRE([GP_CONFIG_MSG])dnl AC_REQUIRE([GP_PKG_CONFIG])dnl AC_REQUIRE([_GP_CHECK_LIBRARY_SOEXT])dnl # Use _CFLAGS and _LIBS given to configure. # This makes it possible to set these vars in a configure script # and AC_CONFIG_SUBDIRS this configure. AC_ARG_VAR([$1][_CFLAGS], [CFLAGS for compiling with ][$2])dnl AC_ARG_VAR([$1][_LIBS], [LIBS to add for linking against ][$2])dnl dnl AC_MSG_CHECKING([for ][$2][ to use]) m4_ifval([$3],[REQUIREMENTS_FOR_][$1][="][$2][ $3]["], [REQUIREMENTS_FOR_][$1][="][$2]["]) userdef_[$1]=no have_[$1]=no if test "x${[$1][_LIBS]}" = "x" && test "x${[$1][_CFLAGS]}" = "x"; then # define --with/--without argument m4_if([$8], [default-off], [m4_pushdef([gp_lib_arg],[--without-][$2])dnl try_[$1]=no ], [m4_pushdef([gp_lib_arg],[--with-][$2])dnl try_[$1]=auto ])dnl AC_ARG_WITH([$2],[AS_HELP_STRING([gp_lib_arg][=PREFIX],[where to find ][$2][, "no" or "auto"])],[try_][$1][="$withval"]) if test "x${[try_][$1]}" = "xno"; then [REQUIREMENTS_FOR_][$1][=] fi if test "x${[try_][$1]}" = "xauto"; then [try_][$1]=autodetect; fi AC_MSG_RESULT([${try_][$1][}]) m4_popdef([gp_lib_arg])dnl if test "x${[try_][$1]}" = "xautodetect"; then # OK, we have to autodetect. # We start autodetection with the cleanest known method: pkg-config if test "x${[have_][$1]}" = "xno"; then # we need that line break after the PKG_CHECK_MODULES m4_ifval([$3], [PKG_CHECK_MODULES([$1],[$2][ $3],[have_][$1][=yes],[:])], [PKG_CHECK_MODULES([$1],[$2], [have_][$1][=yes],[:])] ) fi # If pkg-config didn't find anything, try the libfoo-config program # certain known libraries ship with. if test "x${[have_][$1]}" = "xno"; then AC_MSG_CHECKING([$2][ config program]) m4_pushdef([gp_lib_config],[m4_if([$2],[libusb],[libusb-config], [$2],[libgphoto2],[gphoto2-config], [$2],[libgphoto2_port],[gphoto2-port-config], [$2],[gdlib],[gdlib-config], [$2],[libxml-2.0],[xml2-config], [none])])dnl AC_MSG_RESULT([gp_lib_config]) AC_PATH_PROG([$1][_CONFIG_PROG],[gp_lib_config]) if test -n "${[$1][_CONFIG_PROG]}" && test "${[$1][_CONFIG_PROG]}" != "none"; then m4_ifval([$3],[ AC_MSG_CHECKING([for ][$2][ version according to ][gp_lib_config]) m4_pushdef([gp_lib_compop],[regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*.*], [\1])])dnl comparison operator m4_if( gp_lib_compop,[>=],[_][$1][_COMPN="-lt"], gp_lib_compop,[>], [_][$1][_COMPN="-le"], gp_lib_compop,[<], [_][$1][_COMPN="-ge"], gp_lib_compop,[<=],[_][$1][_COMPN="-gt"], gp_lib_compop,[=], [_][$1][_COMPN="-ne"], [m4_errprint(__file__:__line__:[ Error: Illegal version comparison operator: `gp_lib_compop' It must be one of ">=", ">", "<", "<=", "=". ])m4_exit(1)]) m4_popdef([gp_lib_compop])dnl # split requested version number using m4 regexps _[$1]_REQ_1="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\).*], [\2])" _[$1]_REQ_2="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\)\.\([0-9]+\).*], [\3])" _[$1]_REQ_3="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\).*], [\4])" _[$1]_REQ_4="regexp([$3], [\(>=\|>\|<\|<=\|=\)[ \t]*\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)\(.*\)], [\5])" # split installed version number via shell and sed _[$1]_VERSION="$("${[$1][_CONFIG_PROG]}" --version | sed 's/^.* //')" _[$1]_VER_1="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\).*/\1/g')" _[$1]_VER_2="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/g')" _[$1]_VER_3="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/g')" _[$1]_VER_4="$(echo "${_[$1]_VERSION}" | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)\(.*\)/\4/g')" AC_MSG_RESULT([${_][$1][_VERSION}]) _tmp=false if test "${_[$1]_VER_1}" "${_[$1]_COMPN}" "${_[$1]_REQ_1}"; then _tmp=true; elif test "${_[$1]_VER_2}" "${_[$1]_COMPN}" "${_[$1]_REQ_2}"; then _tmp=true; elif test "${_[$1]_VER_3}" "${_[$1]_COMPN}" "${_[$1]_REQ_3}"; then _tmp=true; elif test "x${_[$1]_VER_4}" = "x" && test "x${_[$1]_REQ_4}" != "x"; then _tmp=true; elif test "${_[$1]_VER_4}" "${_[$1]_COMPN}" "${_[$1]_REQ_4}"; then _tmp=true; fi AC_MSG_CHECKING([if ][$2][ version is matching requirement ][$3]) if "${_tmp}"; then AC_MSG_RESULT([no]) AC_MSG_ERROR([Version requirement ][$2][ ][$3][ not met. Found: ${_][$1][_VERSION}]) else AC_MSG_RESULT([yes]) fi ])dnl if version requirement given AC_MSG_CHECKING([for ][$2][ parameters from ][gp_lib_config]) [$1]_LIBS="$(${[$1][_CONFIG_PROG]} --libs || echo "*error*")" [$1]_CFLAGS="$(${[$1][_CONFIG_PROG]} --cflags || echo "*error*")" if test "x${[$1]_LIBS}" = "*error*" || test "x${[$1]_CFLAGS}" = "*error*"; then AC_MSG_RESULT([error]) else have_[$1]=yes AC_MSG_RESULT([ok]) fi fi m4_popdef([gp_lib_config])dnl fi m4_ifval([$3],[# Version requirement given, so we do not rely on probing.],[ # Neither pkg-config, nor the libfoo-config program have found anything. # So let's just probe the system. AC_MSG_WARN([The `$2' library could not be found using pkg-config or its known config program. No version checks will be performed if it is found using any other method.]) if test "x${[have_][$1]}" = "xno"; then ifs="$IFS" IFS=":" # FIXME: for W32 and OS/2 we may need ";" here for _libdir_ in \ ${LD_LIBRARY_PATH} \ "${libdir}" \ "${prefix}/lib64" "${prefix}/lib" \ /usr/lib64 /usr/lib \ /usr/local/lib64 /usr/local/lib \ /opt/lib64 /opt/lib do IFS="$ifs" for _soext_ in .la ${soext} .a; do if test -f "${_libdir_}/[$2]${_soext_}" then if test "x${_soext_}" = "x.la" || test "x${_soext_}" = "x.a"; then [$1]_LIBS="${_libdir_}/[$2]${_soext_}" else [$1]_LIBS="-L${_libdir_} -l$(echo "$2" | sed 's/^lib//')" fi break fi done if test "x${[$1][_LIBS]}" != "x"; then break fi done IFS="$ifs" if test "x${[$1][_LIBS]}" != "x"; then have_[$1]=yes fi fi ]) elif test "x${[try_][$1]}" = "xno"; then : else # We've been given a prefix to look in for library $2. # We start looking for $2.la files first. AC_MSG_CHECKING([for ][$2][.la file in ${[try_][$1]}]) if test -f "${[try_][$1]}/lib/[$2].la"; then [$1][_LIBS]="${[try_][$1]}/lib/[$2].la" [$1][_CFLAGS]="-I${[try_][$1]}/include" AC_MSG_RESULT([libtool file $][$1][_LIBS (good)]) have_[$1]=yes elif test -f "${[try_][$1]}/lib64/[$2].la"; then # HACK [$1][_LIBS]="${[try_][$1]}/lib64/[$2].la" [$1][_CFLAGS]="-I${[try_][$1]}/include" AC_MSG_RESULT([libtool file $][$1][_LIBS (good)]) have_[$1]=yes else AC_MSG_RESULT([wild guess that something is in $try_][$1]) [$1][_LIBS]="-L${[try_][$1]}/lib -l$(echo "$2" | sed 's/^lib//')" [$1][_CFLAGS]="-I${[try_][$1]}/include" have_[$1]=yes AC_MSG_WARN([ * Warning: * libtool file $2.la could not be found. * We may be linking against the WRONG library. ]) fi fi elif test "x${[$1][_LIBS]}" != "x" && test "x${[$1][_CFLAGS]}" != "x"; then AC_MSG_RESULT([user-defined]) userdef_[$1]=yes have_[$1]=yes else AC_MSG_RESULT([broken call]) AC_MSG_ERROR([ * Fatal: * When calling configure for ${PACKAGE_TARNAME} * ${PACKAGE_NAME} * either set both [$1][_LIBS] *and* [$1][_CFLAGS] * or neither. ]) fi AC_SUBST([REQUIREMENTS_FOR_][$1]) dnl dnl ACTION-IF-FOUND dnl m4_ifval([$6],[dnl if test "x${[have_][$1]}" = "xyes"; then # ACTION-IF-FOUND $6 fi ])dnl dnl dnl ACTION-IF-NOT-FOUND dnl m4_ifval([$7],[dnl if test "x${[have_][$1]}" = "xno"; then # ACTION-IF-NOT-FOUND $7 fi ])dnl dnl dnl Run our own test compilation dnl m4_ifval([$4],[dnl if test "x${[have_][$1]}" = "xyes"; then dnl AC_MSG_CHECKING([whether ][$2][ test compile succeeds]) dnl AC_MSG_RESULT([${[have_][$1]}]) CPPFLAGS_save="$CPPFLAGS" CPPFLAGS="${[$1]_CFLAGS}" AC_CHECK_HEADER([$4],[have_][$1][=yes],[have_][$1][=no]) CPPFLAGS="$CPPFLAGS_save" fi ])dnl dnl dnl Run our own test link dnl Does not work for libraries which be built after configure time, dnl so we deactivate it for them (userdef_). dnl m4_ifval([$5],[dnl if test "x${[userdef_][$1]}" = "xno" && test "x${[have_][$1]}" = "xyes"; then AC_MSG_CHECKING([for function ][$5][ in ][$2]) LIBS_save="$LIBS" LIBS="${[$1]_LIBS}" AC_TRY_LINK_FUNC([$5],[],[have_][$1][=no]) LIBS="$LIBS_save" AC_MSG_RESULT([${[have_][$1]}]) fi ])dnl dnl dnl Abort configure script if mandatory, but not found dnl m4_if([$8],[mandatory],[ if test "x${[have_][$1]}" = "xno"; then AC_MSG_ERROR([ PKG_CONFIG_PATH=${PKG_CONFIG_PATH} [$1][_LIBS]=${[$1][_LIBS]} [$1][_CFLAGS]=${[$1][_CFLAGS]} * Fatal: ${PACKAGE_NAME} requires $2 $3 to build. * * Possible solutions: * - set PKG_CONFIG_PATH to adequate value * - call configure with [$1][_LIBS]=.. and [$1][_CFLAGS]=.. * - call configure with one of the --with-$2 parameters ][m4_ifval([$9],[dnl * - get $2 and install it: * $9],[dnl * - get $2 and install it])]) fi ])dnl dnl dnl Abort configure script if not found and not explicitly disabled dnl m4_if([$8],[disable-explicitly],[ if test "x${[try_][$1]}" != "xno" && test "x${[have_][$1]}" = "xno"; then AC_MSG_ERROR([ PKG_CONFIG_PATH=${PKG_CONFIG_PATH} [$1][_LIBS]=${[$1][_LIBS]} [$1][_CFLAGS]=${[$1][_CFLAGS]} * Fatal: ${PACKAGE_NAME} by default requires $2 $3 to build. * You must explicitly disable $2 to build ${PACKAGE_TARNAME} without it. * * Possible solutions: * - call configure with --with-$2=no or --without-$2 * - set PKG_CONFIG_PATH to adequate value * - call configure with [$1][_LIBS]=.. and [$1][_CFLAGS]=.. * - call configure with one of the --with-$2 parameters ][m4_ifval([$9],[dnl * - get $2 and install it: * $9],[dnl * - get $2 and install it ])][m4_if([$2],[libusb],[dnl * - if you have libusb >= 1.0 installed, you must also install * either the libusb0 compat library or a libusb 0.x version ])]) fi ])dnl AM_CONDITIONAL([HAVE_][$1], [test "x$have_[$1]" = "xyes"]) if test "x$have_[$1]" = "xyes"; then AC_DEFINE([HAVE_][$1], 1, [whether we compile with ][$2][ support]) GP_CONFIG_MSG([$2],[yes])dnl AC_MSG_CHECKING([$2][ library flags]) AC_MSG_RESULT(["${[$1][_LIBS]}"]) AC_MSG_CHECKING([$2][ cpp flags]) AC_MSG_RESULT(["${[$1][_CFLAGS]}"]) else [REQUIREMENTS_FOR_][$1][=] GP_CONFIG_MSG([$2],[no])dnl fi dnl AC_SUBST is done implicitly by AC_ARG_VAR above. dnl AC_SUBST([$1][_LIBS]) dnl AC_SUBST([$1][_CFLAGS]) ])dnl dnl dnl #################################################################### dnl AC_DEFUN([_GP_CHECK_LIBRARY_SYNTAX_ERROR],[dnl m4_errprint(__file__:__line__:[ Error: *** Calling $0 macro with old syntax *** Aborting. ])dnl m4_exit(1)dnl ])dnl dnl dnl #################################################################### dnl AC_DEFUN([GP_CHECK_LIBRARY],[dnl m4_if([$4], [mandatory], [_GP_CHECK_LIBRARY_SYNTAX_ERROR($0)], [$4], [default-enabled], [_GP_CHECK_LIBRARY_SYNTAX_ERROR($0)], [$4], [default-disabled], [_GP_CHECK_LIBRARY_SYNTAX_ERROR($0)])dnl m4_if([$8], [], [dnl _GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[mandatory],[$9])], [$8], [default-on], [dnl _GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])], [$8], [disable-explicitly], [dnl _GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])], [$8], [default-off], [dnl _GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])], [$8], [mandatory], [dnl _GP_CHECK_LIBRARY([$1],[$2],[$3],[$4],[$5],[$6],[$7],[$8],[$9])], [m4_errprint(__file__:__line__:[ Error: Illegal argument 6 to $0: `$6' It must be one of "default-on", "default-off", "mandatory". ])m4_exit(1)])dnl ])dnl dnl m4_pattern_disallow([GP_CHECK_LIBRARY]) m4_pattern_disallow([_GP_CHECK_LIBRARY]) m4_pattern_disallow([_GP_CHECK_LIBRARY_SYNTAX_ERROR]) m4_pattern_disallow([_GP_CHECK_LIBRARY_SOEXT]) dnl dnl #################################################################### dnl dnl Please do not remove this: dnl filetype: 6e60b4f0-acb2-4cd5-8258-42014f92bd2c dnl I use this to find all the different instances of this file which dnl are supposed to be synchronized. dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/libgphoto2_port/gphoto-m4/gp-check-popt.m40000644000175000001440000001143012610415620020347 00000000000000dnl @synopsis GP_CHECK_POPT(FLAG) dnl dnl Check whether libpopt is available. dnl FLAG must be one of dnl "mandatory" dnl "default-enabled" dnl "default-disabled" dnl AC_DEFUN([GP_CHECK_POPT],[ # # [GP_CHECK_POPT] # AC_REQUIRE([GP_CONFIG_MSG])dnl m4_if([$1],[mandatory], [_GP_CHECK_POPT([mandatory])], [$1],[default-enabled], [_GP_CHECK_POPT([disable])], [$1],[default-disabled], [_GP_CHECK_POPT([enable])], [m4_errprint(__file__:__line__:[ Error: Illegal argument to $0: `$1' Valid values are: mandatory, default-enabled, default-disabled ])m4_exit(1)])dnl ])dnl dnl AC_DEFUN([_GP_CHECK_POPT],[ m4_if([$1],[mandatory],[ try_popt=yes require_popt=yes ],[ try_popt=auto require_popt=no AC_ARG_ENABLE([popt], [AS_HELP_STRING([--$1-popt],[Do not use popt])], [ if test "x$enableval" = xno \ || test "x$enableval" = xoff \ || test "x$enableval" = xfalse; then try_popt=no require_popt=no elif test "x$enableval" = xyes \ || test "x$enableval" = xon \ || test "x$enableval" = xtrue then try_popt=yes require_popt=yes fi ])dnl ])dnl AC_MSG_CHECKING([whether popt is required]) AC_MSG_RESULT([${require_popt}]) if test "$require_popt" != yes; then AC_MSG_CHECKING([whether popt is requested]) AC_MSG_RESULT([${try_popt}]) fi dnl Implicit AC_SUBST AC_ARG_VAR([POPT_CFLAGS],[cppflags to compile with libpopt])dnl AC_ARG_VAR([POPT_LIBS],[location of libpopt to link against])dnl have_popt=no if test "x$POPT_CFLAGS" = "x" && test "x$POPT_LIBS" = "x"; then # try to find options to compile popt.h CPPFLAGS_save="$CPPFLAGS" popth_found=no for popt_prefix in "" /usr /usr/local do if test -n "${popt_prefix}"; then : elif test -d "${popt_prefix}/include"; then CPPFLAGS="-I${popt_prefix}/include ${CPPFLAGS}" else continue fi ac_cv_header_popt_h="" unset ac_cv_header_popt_h AC_CHECK_HEADER([popt.h], [popth_found=yes]) if test "$popth_found" = yes; then break; fi done CPPFLAGS="$CPPFLAGS_save" if test "$popth_found" = "yes"; then if test "$popt_prefix" = ""; then POPT_CFLAGS="" else POPT_CFLAGS="-I${popt_prefix}/include" fi elif test "$require_popt" = "yes"; then AC_MSG_ERROR([ * Cannot autodetect popt.h * * Set POPT_CFLAGS and POPT_LIBS correctly. ]) fi # try to find options to link against popt LDFLAGS_save="$LDFLAGS" popt_links=no for popt_prefix in /usr "" /usr/local; do # We could have "/usr" and "lib64" at the beginning of the # lists. Then the first tested location would # incidentally be the right one on 64bit systems, and # thus work around a bug in libtool on 32bit systems: # # 32bit libtool doesn't know about 64bit systems, and so the # compilation will fail when linking a 32bit library from # /usr/lib to a 64bit binary. # # This hack has been confirmed to workwith a # 32bit Debian Sarge and 64bit Fedora Core 3 system. for ldir in lib64 "" lib; do popt_libdir="${popt_prefix}/${ldir}" if test "${popt_libdir}" = "/"; then popt_libdir="" elif test -d "${popt_libdir}"; then LDFLAGS="-L${popt_libdir} ${LDFLAGS}" else continue fi # Avoid caching of results ac_cv_lib_popt_poptStuffArgs="" unset ac_cv_lib_popt_poptStuffArgs AC_CHECK_LIB([popt], [poptStuffArgs], [popt_links=yes]) if test "$popt_links" = yes; then break; fi done if test "$popt_links" = yes; then break; fi done LDFLAGS="$LDFLAGS_save" if test "$popt_links" = "yes"; then if test "$popt_libdir" = ""; then POPT_LIBS="-lpopt" else POPT_LIBS="-L${popt_libdir} -lpopt" fi have_popt=yes elif test "$require_popt" = "yes"; then AC_MSG_ERROR([ * Cannot autodetect library directory containing popt * * Set POPT_CFLAGS and POPT_LIBS correctly. ]) fi elif test "x$POPT_CFLAGS" != "x" && test "x$POPT_LIBS" != "x"; then # just use the user specivied option popt_msg="yes (user specified)" have_popt=yes else AC_MSG_ERROR([ * Fatal: Either set both POPT_CFLAGS and POPT_LIBS or neither. ]) fi AC_MSG_CHECKING([if popt is functional]) if test "$require_popt$have_popt" = "yesno"; then AC_MSG_RESULT([no, but required]) AC_MSG_ERROR([ * popt library not found * Fatal: ${PACKAGE_NAME} (${PACKAGE_TARNAME}) requires popt * Please install it and/or set POPT_CFLAGS and POPT_LIBS. ]) fi AC_MSG_RESULT([${have_popt}]) GP_CONFIG_MSG([use popt library], [${have_popt}]) if test "$have_popt" = "yes"; then AC_DEFINE([HAVE_POPT],[1],[whether the popt library is available]) GP_CONFIG_MSG([popt libs],[${POPT_LIBS}]) GP_CONFIG_MSG([popt cppflags],[${POPT_CFLAGS}]) fi AM_CONDITIONAL([HAVE_POPT],[test "$have_popt" = "yes"]) ])dnl dnl dnl Please do not remove this: dnl filetype: 7595380e-eff3-49e5-90ab-e40f1d544639 dnl I use this to find all the different instances of this file which dnl are supposed to be synchronized. dnl dnl Local Variables: dnl mode: autoconf dnl End: libgphoto2-2.5.9/libgphoto2_port/serial/0000755000175000001440000000000012623156264015200 500000000000000libgphoto2-2.5.9/libgphoto2_port/serial/unix.c0000644000175000001440000005637212610415536016260 00000000000000/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ /* * Copyright 2001 Lutz Mueller * Copyright 2000 Philippe Marzouk * Copyright 2000 Edouard Lafargue * Copyright 1999 Johannes Erdfelt * Copyright 1999 Scott Fritzinger * * Based on work by: * Copyright 1999 Beat Christen * for the toshiba gPhoto library. * * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE /* Solaris needs this */ #define __EXTENSIONS__ #include "config.h" #include #include #include #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_ERRNO_H #include #endif #include #include #include #include #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_IOCTL_H #include #endif #ifdef HAVE_SYS_SELECT_H # include #endif #ifdef HAVE_TERMIOS_H # include # ifndef CRTSCTS # define CRTSCTS 020000000000 # endif #else # include #endif #ifdef HAVE_TTYLOCK # include #elif defined(HAVE_LOCKDEV) # include #endif #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define CHECK(result) {int r=(result); if (r<0) return (r);} /* Linux */ #ifdef __linux__ /* devfs is accounted for in the implementation */ #define GP_PORT_SERIAL_PREFIX "/dev/ttyS%i" #define GP_PORT_SERIAL_RANGE_LOW 0 #define GP_PORT_SERIAL_RANGE_HIGH 32 #ifndef IXANY #define IXANY 0004000 #endif #endif /* FreeBSD */ #ifdef __FreeBSD__ #if __FreeBSD_version < 600000 #define GP_PORT_SERIAL_PREFIX "/dev/cuaa%x" #else #define GP_PORT_SERIAL_PREFIX "/dev/cuad%x" #endif #define GP_PORT_SERIAL_RANGE_LOW 0 #define GP_PORT_SERIAL_RANGE_HIGH (0xf) #endif /* OpenBSD */ /* devices appear to go up to /dev/cuac7, but we just list the first 4 */ #ifdef __OpenBSD__ # define GP_PORT_SERIAL_PREFIX "/dev/cua%02x" # define GP_PORT_SERIAL_RANGE_LOW 0 # define GP_PORT_SERIAL_RANGE_HIGH 3 #endif /* NetBSD */ #ifdef __NetBSD__ #define GP_PORT_SERIAL_PREFIX "/dev/tty0%i" #define GP_PORT_SERIAL_RANGE_LOW 0 #define GP_PORT_SERIAL_RANGE_HIGH 32 #endif /* Tru64 UNIX */ #ifdef __osf__ #define GP_PORT_SERIAL_PREFIX "/dev/tty%02i" #define GP_PORT_SERIAL_RANGE_LOW 0 #define GP_PORT_SERIAL_RANGE_HIGH 4 #endif /* Darwin */ #ifdef __APPLE__ /* This is the Keyspan USB serial adapter device (UNTESTED) */ #define GP_PORT_SERIAL_PREFIX "/dev/tty.KeyUSA28X%i" #define GP_PORT_SERIAL_RANGE_LOW 111 #define GP_PORT_SERIAL_RANGE_HIGH 1112 #endif /* Solaris */ #ifdef sun #define GP_PORT_SERIAL_PREFIX "/dev/tty%c" #define GP_PORT_SERIAL_RANGE_LOW 'a' #define GP_PORT_SERIAL_RANGE_HIGH 'z' #endif /* BeOS */ #ifdef beos /* ????????????? */ #define GP_PORT_SERIAL_PREFIX NULL #define GP_PORT_SERIAL_RANGE_LOW 0 #define GP_PORT_SERIAL_RANGE_HIGH 0 #endif /* Windows */ #ifdef WIN32 #define GP_PORT_SERIAL_PREFIX "COM%i:" #define GP_PORT_SERIAL_RANGE_LOW 1 #define GP_PORT_SERIAL_RANGE_HIGH 4 #endif #ifdef OS2 #define GP_PORT_SERIAL_PREFIX "COM%i" #define GP_PORT_SERIAL_RANGE_LOW 1 #define GP_PORT_SERIAL_RANGE_HIGH 4 #endif /* IRIX */ #if defined(__sgi) #define GP_PORT_SERIAL_PREFIX "/dev/ttyd%i" #define GP_PORT_SERIAL_RANGE_LOW 1 #define GP_PORT_SERIAL_RANGE_HIGH 11 #endif /* Others? */ /* Default */ #ifndef GP_PORT_SERIAL_PREFIX #define GP_PORT_SERIAL_PREFIX "/dev/cua%i" #define GP_PORT_SERIAL_RANGE_LOW 0 #define GP_PORT_SERIAL_RANGE_HIGH 0 #endif struct _GPPortPrivateLibrary { int fd; /* Device handle */ int baudrate; /* Current speed */ }; static int gp_port_serial_check_speed (GPPort *dev); GPPortType gp_port_library_type () { return (GP_PORT_SERIAL); } static int gp_port_serial_lock (GPPort *dev, const char *path) { #if defined(HAVE_LOCKDEV) int pid; #endif GP_LOG_D ("Trying to lock '%s'...", path); #if defined(HAVE_TTYLOCK) if (ttylock ((char*) path)) { if (dev) gp_port_set_error (dev, _("Could not lock device " "'%s'"), path); return (GP_ERROR_IO_LOCK); } #define __HAVE_LOCKING #elif defined(HAVE_LOCKDEV) pid = dev_lock (path); if (pid) { if (dev) { if (pid > 0) gp_port_set_error (dev, _("Device '%s' is " "locked by pid %d"), path, pid); else gp_port_set_error (dev, _("Device '%s' could " "not be locked (dev_lock returned " "%d)"), path, pid); } return (GP_ERROR_IO_LOCK); } #define __HAVE_LOCKING #endif #ifndef __HAVE_LOCKING # ifdef __GCC__ # warning No locking library found. # warning You will run into problems if you use # warning gphoto2 with a serial (RS232) camera in # warning combination with Konqueror (KDE) or Nautilus (GNOME). # warning This will *not* concern USB cameras. # endif #endif return (GP_OK); } static int gp_port_serial_unlock (GPPort *dev, const char *path) { #if defined(HAVE_TTYLOCK) if (ttyunlock ((char*) path)) { if (dev) gp_port_set_error (dev, _("Device '%s' could not be " "unlocked."), path); return (GP_ERROR_IO_LOCK); } #elif defined(HAVE_LOCKDEV) int pid; pid = dev_unlock (path, 0); if (pid) { if (dev) { if (pid > 0) gp_port_set_error (dev, _("Device '%s' could " "not be unlocked as it is locked by " "pid %d."), path, pid); else gp_port_set_error (dev, _("Device '%s' could " "not be unlocked (dev_unlock " "returned %d)"), path, pid); } return (GP_ERROR_IO_LOCK); } #endif /* !HAVE_LOCKDEV */ return (GP_OK); } int gp_port_library_list (GPPortInfoList *list) { GPPortInfo info; char path[1024], prefix[1024]; int x; struct stat s; #ifdef OS2 int r, fh, option; #endif /* Copy in the serial port prefix */ strcpy (prefix, GP_PORT_SERIAL_PREFIX); /* On Linux systems, check for devfs */ #ifdef __linux if (!stat ("/dev/tts", &s)) strcpy (prefix, "/dev/tts/%i"); #endif for (x=GP_PORT_SERIAL_RANGE_LOW; x<=GP_PORT_SERIAL_RANGE_HIGH; x++) { char *xname; sprintf (path, prefix, x); /* OS/2 seems to need an additional check */ #ifdef OS2 r = DosOpen (path, &fh, &option, 0, 0, 1, OPEN_FLAGS_FAIL_ON_ERROR | OPEN_SHARE_DENYREADWRITE, 0); DosClose(fh); if (r) continue; #endif /* Very first of all, if the device node is not there, * there is no need to try locking. */ if ((stat (path, &s) == -1) && ((errno == ENOENT) || (errno == ENODEV))) continue; gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_SERIAL); C_MEM (xname = malloc (strlen("serial:")+strlen(path)+1)); strcpy (xname, "serial:"); strcat (xname, path); gp_port_info_set_path (info, xname); free (xname); C_MEM (xname = malloc (100)); snprintf (xname, 100, _("Serial Port %i"), x); gp_port_info_set_name (info, xname); free (xname); CHECK (gp_port_info_list_append (list, info)); } /* * Generic support. Append it to the list without checking for * return values, because this entry will not be counted. */ gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_SERIAL); gp_port_info_set_path (info, "^serial:"); gp_port_info_set_name (info, ""); return gp_port_info_list_append (list, info); } static int gp_port_serial_init (GPPort *dev) { C_PARAMS (dev); C_MEM (dev->pl = calloc (1, sizeof (GPPortPrivateLibrary))); /* There is no default speed. */ dev->pl->baudrate = -1; return GP_OK; } static int gp_port_serial_exit (GPPort *dev) { C_PARAMS (dev); free (dev->pl); dev->pl = NULL; return GP_OK; } static int gp_port_serial_open (GPPort *dev) { int result, max_tries = 5, i; #ifdef OS2 int fd; #endif char *port; GPPortInfo info; result = gp_port_get_info (dev, &info); if (result < GP_OK) return result; result = gp_port_info_get_path (info, &port); if (result < GP_OK) return result; GP_LOG_D ("opening %s", port); /* Ports are named "serial:/dev/whatever/port" */ port = strchr (port, ':'); if (!port) return GP_ERROR_UNKNOWN_PORT; port++; result = gp_port_serial_lock (dev, port); if (result != GP_OK) { for (i = 0; i < max_tries; i++) { result = gp_port_serial_lock (dev, port); if (result == GP_OK) break; GP_LOG_D ("Failed to get a lock, trying again..."); sleep (1); } CHECK (result); } dev->pl->fd = -1; #if defined(__FreeBSD__) || defined(__APPLE__) || defined(__DragonFly__) dev->pl->fd = open (port, O_RDWR | O_NOCTTY | O_NONBLOCK); #elif OS2 fd = open (port, O_RDWR | O_BINARY); dev->pl->fd = open (port, O_RDWR | O_BINARY); close(fd); #else if (dev->pl->fd == -1) dev->pl->fd = open (port, O_RDWR | O_NOCTTY | O_SYNC | O_NONBLOCK); #endif if (dev->pl->fd == -1) { int saved_errno = errno; gp_port_set_error (dev, _("Failed to open '%s' (%s)."), port, strerror(saved_errno)); dev->pl->fd = 0; return GP_ERROR_IO; } return GP_OK; } static int gp_port_serial_close (GPPort *dev) { const char *path; if (!dev) return (GP_OK); if (dev->pl->fd) { if (close (dev->pl->fd) == -1) { int saved_errno = errno; gp_port_set_error (dev, _("Could not close " "'%s' (%s)."), dev->settings.serial.port, strerror(saved_errno)); return GP_ERROR_IO; } dev->pl->fd = 0; } /* Unlock the port */ path = strchr (dev->settings.serial.port, ':'); C_PARAMS (path); path++; CHECK (gp_port_serial_unlock (dev, path)); #if defined(__sgi) /* * On IRIX, we need to set the baudrate each time after opening * the port. */ dev->pl->baudrate = 0; #endif return GP_OK; } static int gp_port_serial_write (GPPort *dev, const char *bytes, int size) { int len, ret; C_PARAMS (dev); /* The device needs to be opened for that operation */ if (!dev->pl->fd) CHECK (gp_port_serial_open (dev)); /* Make sure we are operating at the specified speed */ CHECK (gp_port_serial_check_speed (dev)); len = 0; while (len < size) { /* * Make sure we write all data while handling * the harmless errors */ ret = write (dev->pl->fd, bytes, size - len); if (ret == -1) { int saved_errno = errno; switch (saved_errno) { case EAGAIN: case EINTR: ret = 0; break; default: gp_port_set_error (dev, _("Could not write " "to port (%s)"), strerror(saved_errno)); return GP_ERROR_IO_WRITE; } } len += ret; } /* wait till all bytes are really sent */ #ifndef OS2 #ifdef HAVE_TERMIOS_H tcdrain (dev->pl->fd); #else ioctl (dev->pl->fd, TCDRAIN, 0); #endif #endif return GP_OK; } static int gp_port_serial_read (GPPort *dev, char *bytes, int size) { struct timeval timeout; fd_set readfs; /* file descriptor set */ int readen = 0, now; C_PARAMS (dev); /* The device needs to be opened for that operation */ if (!dev->pl->fd) CHECK (gp_port_serial_open (dev)); /* Make sure we are operating at the specified speed */ CHECK (gp_port_serial_check_speed (dev)); FD_ZERO (&readfs); FD_SET (dev->pl->fd, &readfs); while (readen < size) { /* Set timeout value within input loop */ timeout.tv_usec = (dev->timeout % 1000) * 1000; timeout.tv_sec = (dev->timeout / 1000); /* Any data available? */ if (!select (dev->pl->fd + 1, &readfs, NULL, NULL, &timeout)) return GP_ERROR_TIMEOUT; if (!FD_ISSET (dev->pl->fd, &readfs)) return (GP_ERROR_TIMEOUT); if (dev->settings.serial.parity != GP_PORT_SERIAL_PARITY_OFF) { unsigned char ffchar[1]; unsigned char nullchar[1]; ffchar[0] = 0xff; nullchar[0] = 0; now = read (dev->pl->fd, bytes, 1); if (now < 0) return GP_ERROR_IO_READ; if (!memcmp(bytes,ffchar,1)) { now = read (dev->pl->fd, bytes, 1); if (now < 0) return GP_ERROR_IO_READ; /* Parity errors are signaled by the serial layer * as 0xff 0x00 sequence. * * 0xff sent by the camera are escaped as * 0xff 0xff sequence. * * All other 0xff 0xXX sequences are errors. * * cf. man tcsetattr, description of PARMRK. */ if (!memcmp(bytes,nullchar,1)) { gp_port_set_error (dev, _("Parity error.")); return GP_ERROR_IO_READ; } if (!memcmp(bytes,ffchar,1)) { gp_port_set_error (dev, _("Unexpected parity response sequence 0xff 0x%02x."), ((unsigned char*)bytes)[0]); return GP_ERROR_IO_READ; } /* Ok, we read 1 byte and it is 0xff */ /* FALLTHROUGH */ } } else { /* Just read the bytes */ now = read (dev->pl->fd, bytes, size - readen); if (now < 0) return GP_ERROR_IO_READ; } bytes += now; readen += now; } return readen; } #ifdef HAVE_TERMIOS_H static int get_termios_bit (GPPort *dev, GPPin pin, int *bit) { switch (pin) { case GP_PIN_RTS: *bit = TIOCM_RTS; break; case GP_PIN_DTR: *bit = TIOCM_DTR; break; case GP_PIN_CTS: *bit = TIOCM_CTS; break; case GP_PIN_DSR: *bit = TIOCM_DSR; break; case GP_PIN_CD: *bit = TIOCM_CD; break; case GP_PIN_RING: *bit = TIOCM_RNG; break; default: gp_port_set_error (dev, _("Unknown pin %i."), pin); return GP_ERROR_IO; } return (GP_OK); } #endif static int gp_port_serial_get_pin (GPPort *dev, GPPin pin, GPLevel *level) { #ifdef HAVE_TERMIOS_H int j, bit; #endif C_PARAMS (dev && level); *level = 0; #ifdef HAVE_TERMIOS_H CHECK (get_termios_bit (dev, pin, &bit)); if (ioctl (dev->pl->fd, TIOCMGET, &j) < 0) { int saved_errno = errno; gp_port_set_error (dev, _("Could not get level of pin %i " "(%s)."), pin, strerror(saved_errno)); return GP_ERROR_IO; } *level = j & bit; #else # ifdef __GCC__ # warning ACCESSING PINS IS NOT IMPLEMENTED FOR NON-TERMIOS SYSTEMS! # endif #endif return (GP_OK); } static int gp_port_serial_set_pin (GPPort *dev, GPPin pin, GPLevel level) { #ifdef HAVE_TERMIOS_H int bit, request; #endif C_PARAMS (dev); #ifdef HAVE_TERMIOS_H CHECK (get_termios_bit (dev, pin, &bit)); switch (level) { case GP_LEVEL_LOW: request = TIOCMBIS; break; default: request = TIOCMBIC; break; } if (ioctl (dev->pl->fd, request, &bit) < 0) { int saved_errno = errno; gp_port_set_error (dev, _("Could not set level of pin %i to " "%i (%s)."), pin, level, strerror(saved_errno)); return GP_ERROR_IO; } #else # ifdef __GCC__ # warning ACCESSING PINS IS NOT IMPLEMENTED FOR NON-TERMIOS SYSTEMS! # endif #endif return GP_OK; } static int gp_port_serial_flush (GPPort *dev, int direction) { /* The device needs to be opened for that operation */ if (!dev->pl->fd) CHECK (gp_port_serial_open (dev)); /* Make sure we are operating at the specified speed */ CHECK (gp_port_serial_check_speed (dev)); #ifdef HAVE_TERMIOS_H if (tcflush (dev->pl->fd, direction ? TCOFLUSH : TCIFLUSH) < 0) { int saved_errno = errno; gp_port_set_error (dev, _("Could not flush '%s' (%s)."), dev->settings.serial.port, strerror(saved_errno)); return (GP_ERROR_IO); } #else # ifdef __GCC__ # warning SERIAL FLUSH NOT IMPLEMENTED FOR NON TERMIOS SYSTEMS! # endif #endif return (GP_OK); } static speed_t gp_port_serial_baudconv (int baudrate) { #define BAUDCASE(x) case (x): { ret = B##x; break; } speed_t ret; switch (baudrate) { /* POSIX defined baudrates */ BAUDCASE(0); BAUDCASE(50); BAUDCASE(75); BAUDCASE(110); BAUDCASE(134); BAUDCASE(150); BAUDCASE(200); BAUDCASE(300); BAUDCASE(600); BAUDCASE(1200); BAUDCASE(1800); BAUDCASE(2400); BAUDCASE(4800); BAUDCASE(9600); BAUDCASE(19200); BAUDCASE(38400); /* non POSIX values */ #ifdef B7200 BAUDCASE(7200); #endif #ifdef B14400 BAUDCASE(14400); #endif #ifdef B28800 BAUDCASE(28800); #endif #ifdef B57600 BAUDCASE(57600); #endif #ifdef B115200 BAUDCASE(115200); #endif #ifdef B230400 BAUDCASE(230400); #endif default: ret = (speed_t) baudrate; GP_LOG_D ("Baudrate %d unknown - using as is", baudrate); } return ret; #undef BAUDCASE } static int gp_port_serial_check_speed (GPPort *dev) { speed_t speed; #ifdef OS2 ULONG rc; ULONG ulParmLen = 2; /* Maximum size of the parameter packet */ #else #ifdef HAVE_TERMIOS_H struct termios tio; #else struct sgttyb ttyb; #endif #endif /* * We need an open device in order to set the speed. If there is no * open device, postpone setting of speed. */ if (!dev->pl->fd) return (GP_OK); /* If baudrate is up to date, do nothing */ if (dev->pl->baudrate == dev->settings.serial.speed) return (GP_OK); GP_LOG_D ("Setting baudrate to %d...", dev->settings.serial.speed); speed = gp_port_serial_baudconv (dev->settings.serial.speed); #ifdef OS2 rc = DosDevIOCtl (dev->pl->fd, /* Device handle */ 0x0001, /* Serial-device control */ 0x0043, /* Sets bit rate */ (PULONG) &(dev->settings.serial.speed), sizeof(baudrate), /* Max. size of parameter list */ &ulParmLen, /* Size of parameter packet */ NULL, /* No data packet */ 0, /* Maximum size of data packet */ NULL); /* Size of data packet */ if(rc != 0) printf("DosDevIOCtl baudrate error:%d\n",rc); #else /* !OS2 */ #ifdef HAVE_TERMIOS_H if (tcgetattr(dev->pl->fd, &tio) < 0) { gp_port_set_error (dev, _("Could not set the baudrate to %d"), dev->settings.serial.speed); return GP_ERROR_IO_SERIAL_SPEED; } tio.c_cflag = (tio.c_cflag & ~CSIZE) | CS8; /* Set into raw, no echo mode */ tio.c_iflag &= ~(IGNBRK | IGNCR | INLCR | ICRNL | IXANY | IXON | IXOFF | INPCK | ISTRIP); #ifdef IUCLC tio.c_iflag &= ~IUCLC; #endif tio.c_iflag |= (BRKINT | IGNPAR); tio.c_oflag &= ~OPOST; tio.c_lflag &= ~(ICANON | ISIG | ECHO | ECHONL | ECHOE | ECHOK | IEXTEN); tio.c_cflag &= ~(CRTSCTS | PARENB | PARODD); tio.c_cflag |= CLOCAL | CREAD; tio.c_cc[VMIN] = 1; tio.c_cc[VTIME] = 0; if (dev->settings.serial.parity != GP_PORT_SERIAL_PARITY_OFF) { tio.c_iflag &= ~IGNPAR; tio.c_iflag |= INPCK | PARMRK ; tio.c_cflag |= PARENB; if (dev->settings.serial.parity == GP_PORT_SERIAL_PARITY_ODD) tio.c_cflag |= PARODD; } /* Set the new speed. */ cfsetispeed (&tio, speed); cfsetospeed (&tio, speed); if (tcsetattr (dev->pl->fd, TCSANOW, &tio) < 0) { GP_LOG_E ("Error on 'tcsetattr'."); return GP_ERROR_IO_SERIAL_SPEED; } /* Clear O_NONBLOCK. */ if (fcntl (dev->pl->fd, F_SETFL, 0) < 0) { GP_LOG_E ("Error on 'fcntl'."); return GP_ERROR_IO_SERIAL_SPEED; } /* * Verify if the speed change has been successful. * This is needed because some Solaris systems just ignore unsupported * speeds (like 115200) instead of complaining. * * Only perform the check if we really changed to some speed. */ if (speed != B0) { if (tcgetattr (dev->pl->fd, &tio)) { GP_LOG_E ("Error on 'tcgetattr'."); return (GP_ERROR_IO_SERIAL_SPEED); } if ((cfgetispeed (&tio) != speed) || (cfgetospeed (&tio) != speed)) { GP_LOG_E ("Cannot set baudrate to %d...", dev->settings.serial.speed); return (GP_ERROR_NOT_SUPPORTED); } } #else /* !HAVE_TERMIOS_H */ if (ioctl (dev->pl->fd, TIOCGETP, &ttyb) < 0) { perror("ioctl(TIOCGETP)"); return GP_ERROR_IO_SERIAL_SPEED; } ttyb.sg_ispeed = dev->settings.serial.speed; ttyb.sg_ospeed = dev->settings.serial.speed; ttyb.sg_flags = 0; if (ioctl (dev->pl->fd, TIOCSETP, &ttyb) < 0) { perror("ioctl(TIOCSETP)"); return GP_ERROR_IO_SERIAL_SPEED; } #endif #endif dev->pl->baudrate = dev->settings.serial.speed; return GP_OK; } static int gp_port_serial_update (GPPort *dev) { memcpy (&dev->settings, &dev->settings_pending, sizeof (dev->settings)); CHECK (gp_port_serial_check_speed (dev)); return GP_OK; } static int gp_port_serial_send_break (GPPort *dev, int duration) { /* The device needs to be opened for that operation */ if (!dev->pl->fd) CHECK (gp_port_serial_open (dev)); /* Make sure we are operating at the specified speed */ CHECK (gp_port_serial_check_speed (dev)); /* Duration is in milliseconds */ #ifdef HAVE_TERMIOS_H tcsendbreak (dev->pl->fd, duration / 310); tcdrain (dev->pl->fd); #else # ifdef __GCC__ # warning SEND BREAK NOT IMPLEMENTED FOR NON TERMIOS SYSTEMS! # endif #endif return GP_OK; } GPPortOperations * gp_port_library_operations () { GPPortOperations *ops; ops = malloc (sizeof (GPPortOperations)); if (!ops) return (NULL); memset (ops, 0, sizeof (GPPortOperations)); ops->init = gp_port_serial_init; ops->exit = gp_port_serial_exit; ops->open = gp_port_serial_open; ops->close = gp_port_serial_close; ops->read = gp_port_serial_read; ops->write = gp_port_serial_write; ops->update = gp_port_serial_update; ops->get_pin = gp_port_serial_get_pin; ops->set_pin = gp_port_serial_set_pin; ops->send_break = gp_port_serial_send_break; ops->flush = gp_port_serial_flush; return (ops); } libgphoto2-2.5.9/libgphoto2_port/serial/Makefile-files0000644000175000001440000000050412610415510017643 00000000000000# -*- Makefile -*- EXTRA_LTLIBRARIES += serial.la serial_la_LDFLAGS = $(iolib_ldflags) serial_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(INTL_CFLAGS) \ $(CPPFLAGS) serial_la_DEPENDENCIES = $(iolib_dependencies) serial_la_LIBADD = $(iolib_libadd) serial_la_LIBADD += $(SERIAL_LIBS) $(INTLLIBS) serial_la_SOURCES = serial/unix.c libgphoto2-2.5.9/libgphoto2_port/ABOUT-NLS0000644000175000001440000015111612557123756015103 00000000000000Notes on the Free Translation Project ************************************* Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work at translations should contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. Quick configuration advice ========================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias, message inheritance, automatic charset conversion or plural form handling) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need _not_ provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. INSTALL Matters =============== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. If not, the GNU `gettext' own library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is _not_ required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --disable-nls will respectively bypass any pre-existing `gettext' to use the internationalizing routines provided within this package, or else, _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might be not what is desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. The configuration process will not test for the `catgets' function and therefore it will not be used. The reason is that even an emulation of `gettext' on top of `catgets' could not provide all the extensions of the GNU `gettext' library. Internationalized packages have usually many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. Using This Package ================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your country by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. Translating Teams ================= For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `translation@iro.umontreal.ca' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skill are praised more than programming skill, here. Available Packages ================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of January 2004. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am ar az be bg bs ca cs da de el en en_GB eo es +----------------------------------------------------+ a2ps | [] [] [] [] | aegis | () | ant-phone | () | anubis | | ap-utils | | aspell | [] | bash | [] [] [] [] | batchelor | | bfd | [] [] | binutils | [] [] | bison | [] [] [] | bluez-pin | [] [] [] | clisp | | clisp | [] [] [] | console-tools | [] [] | coreutils | [] [] [] [] | cpio | [] [] [] | darkstat | [] () [] | diffutils | [] [] [] [] [] [] [] | e2fsprogs | [] [] [] | enscript | [] [] [] [] | error | [] [] [] [] [] | fetchmail | [] () [] [] [] [] | fileutils | [] [] [] | findutils | [] [] [] [] [] [] [] | flex | [] [] [] [] | fslint | | gas | [] | gawk | [] [] [] [] | gbiff | [] | gcal | [] | gcc | [] [] | gettext | [] [] [] [] [] | gettext-examples | [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] [] [] [] | gliv | | glunarclock | [] [] | gnubiff | [] | gnucash | [] () [] [] | gnucash-glossary | [] () [] | gnupg | [] () [] [] [] [] | gpe-aerial | [] | gpe-beam | [] [] | gpe-calendar | [] [] | gpe-clock | [] [] | gpe-conf | [] [] | gpe-contacts | [] [] | gpe-edit | [] | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] | gpe-taskmanager | [] [] | gpe-timesheet | [] | gpe-today | [] [] | gpe-todo | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] | gpsdrive | () () () | gramadoir | [] | grep | [] [] [] [] [] [] | gretl | [] | gtick | [] () | hello | [] [] [] [] [] [] | id-utils | [] [] | indent | [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] | iso_3166_1 | [] [] [] [] [] [] | iso_3166_2 | | iso_3166_3 | [] | iso_4217 | [] [] [] [] | iso_639 | | jpilot | [] [] [] | jtag | | jwhois | [] | kbd | [] [] [] [] [] | latrine | () | ld | [] [] | libc | [] [] [] [] [] [] | libgpewidget | [] [] | libiconv | [] [] [] [] [] | lifelines | [] () | lilypond | [] | lingoteach | | lingoteach_lessons | () () | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | [] [] | make | [] [] [] | man-db | [] () [] [] () | minicom | [] [] [] | mysecretdiary | [] [] [] | nano | [] () [] [] [] | nano_1_0 | [] () [] [] [] | opcodes | [] | parted | [] [] [] [] [] | ptx | [] [] [] [] [] | python | | radius | [] | recode | [] [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] [] [] [] | sed | [] [] [] [] [] [] | sh-utils | [] [] [] | shared-mime-info | | sharutils | [] [] [] [] [] [] | silky | () | skencil | [] () [] | sketch | [] () [] | soundtracker | [] [] [] | sp | [] | tar | [] [] [] [] | texinfo | [] [] [] | textutils | [] [] [] [] | tin | () () | tp-robot | | tuxpaint | [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] [] [] | vorbis-tools | [] [] [] [] | wastesedge | () | wdiff | [] [] [] [] | wget | [] [] [] [] [] [] | xchat | [] [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] | +----------------------------------------------------+ af am ar az be bg bs ca cs da de el en en_GB eo es 4 0 0 1 9 4 1 40 41 60 78 17 1 5 13 68 et eu fa fi fr ga gl he hr hu id is it ja ko lg +-------------------------------------------------+ a2ps | [] [] [] () () | aegis | | ant-phone | [] | anubis | [] | ap-utils | [] | aspell | [] [] | bash | [] [] | batchelor | [] [] | bfd | [] | binutils | [] [] | bison | [] [] [] [] | bluez-pin | [] [] [] [] [] | clisp | | clisp | [] | console-tools | | coreutils | [] [] [] [] [] [] | cpio | [] [] [] [] | darkstat | () [] [] [] | diffutils | [] [] [] [] [] [] [] | e2fsprogs | | enscript | [] [] | error | [] [] [] [] | fetchmail | [] | fileutils | [] [] [] [] [] [] | findutils | [] [] [] [] [] [] [] [] [] [] [] | flex | [] [] [] | fslint | [] | gas | [] | gawk | [] [] [] | gbiff | [] | gcal | [] | gcc | [] | gettext | [] [] [] | gettext-examples | [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] | gliv | () | glunarclock | [] [] [] [] | gnubiff | [] | gnucash | () [] | gnucash-glossary | [] | gnupg | [] [] [] [] [] [] [] | gpe-aerial | [] | gpe-beam | [] | gpe-calendar | [] [] [] | gpe-clock | [] | gpe-conf | [] | gpe-contacts | [] [] | gpe-edit | [] [] | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] | gpe-sketchbook | [] | gpe-su | [] | gpe-taskmanager | [] | gpe-timesheet | [] [] [] | gpe-today | [] [] | gpe-todo | [] [] | gphoto2 | [] [] [] | gprof | [] [] | gpsdrive | () () () | gramadoir | [] [] | grep | [] [] [] [] [] [] [] [] [] [] [] | gretl | [] [] | gtick | [] [] [] | hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | indent | [] [] [] [] [] [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] | iso_3166_1 | [] [] [] [] [] | iso_3166_2 | | iso_3166_3 | | iso_4217 | [] [] [] [] [] [] | iso_639 | | jpilot | [] () | jtag | [] | jwhois | [] [] [] [] | kbd | [] | latrine | [] | ld | [] | libc | [] [] [] [] [] [] | libgpewidget | [] [] [] [] | libiconv | [] [] [] [] [] [] [] [] [] | lifelines | () | lilypond | [] | lingoteach | [] [] | lingoteach_lessons | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | | make | [] [] [] [] [] [] | man-db | () () | minicom | [] [] [] [] | mysecretdiary | [] [] | nano | [] [] [] [] | nano_1_0 | [] [] [] [] | opcodes | [] | parted | [] [] [] | ptx | [] [] [] [] [] [] [] | python | | radius | [] | recode | [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] | sed | [] [] [] [] [] [] [] [] [] | sh-utils | [] [] [] [] [] [] [] | shared-mime-info | [] [] [] | sharutils | [] [] [] [] [] | silky | () [] () () | skencil | [] | sketch | [] | soundtracker | [] [] | sp | [] () | tar | [] [] [] [] [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] [] [] [] [] | tin | [] () | tp-robot | [] | tuxpaint | [] [] [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux | [] [] [] [] () [] | vorbis-tools | [] | wastesedge | () | wdiff | [] [] [] [] [] [] | wget | [] [] [] [] [] [] [] | xchat | [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] [] | +-------------------------------------------------+ et eu fa fi fr ga gl he hr hu id is it ja ko lg 22 2 1 26 106 28 24 8 10 41 33 1 26 33 12 0 lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru +-----------------------------------------------------+ a2ps | [] [] () () [] [] [] | aegis | () () () | ant-phone | [] [] | anubis | [] [] [] [] [] [] | ap-utils | [] () [] | aspell | [] | bash | [] [] [] | batchelor | [] | bfd | [] | binutils | [] | bison | [] [] [] [] [] | bluez-pin | [] [] [] | clisp | | clisp | [] | console-tools | [] | coreutils | [] [] | cpio | [] [] [] [] [] | darkstat | [] [] [] [] | diffutils | [] [] [] [] [] [] | e2fsprogs | [] | enscript | [] [] [] [] | error | [] [] [] | fetchmail | [] [] () [] | fileutils | [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] | fslint | [] [] | gas | | gawk | [] [] [] | gbiff | [] [] | gcal | | gcc | | gettext | [] [] [] | gettext-examples | [] [] [] | gettext-runtime | [] [] [] [] | gettext-tools | [] [] | gimp-print | [] | gliv | [] [] [] | glunarclock | [] [] [] [] | gnubiff | [] | gnucash | [] [] () [] | gnucash-glossary | [] [] | gnupg | [] | gpe-aerial | [] [] [] [] | gpe-beam | [] [] [] [] | gpe-calendar | [] [] [] [] | gpe-clock | [] [] [] [] | gpe-conf | [] [] [] [] | gpe-contacts | [] [] [] [] | gpe-edit | [] [] [] [] | gpe-go | [] [] [] | gpe-login | [] [] [] [] | gpe-ownerinfo | [] [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] [] [] | gphoto2 | [] | gprof | [] [] | gpsdrive | () () [] | gramadoir | () [] | grep | [] [] [] [] [] | gretl | | gtick | [] [] [] | hello | [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | indent | [] [] [] [] | iso_3166 | [] [] [] | iso_3166_1 | [] [] | iso_3166_2 | | iso_3166_3 | [] | iso_4217 | [] [] [] [] [] [] [] [] | iso_639 | [] | jpilot | () () | jtag | | jwhois | [] [] [] [] () | kbd | [] [] [] | latrine | [] | ld | | libc | [] [] [] [] | libgpewidget | [] [] [] | libiconv | [] [] [] [] [] | lifelines | | lilypond | | lingoteach | | lingoteach_lessons | | lynx | [] [] [] | m4 | [] [] [] [] [] | mailutils | [] [] [] | make | [] [] [] [] | man-db | [] | minicom | [] [] [] [] | mysecretdiary | [] [] [] | nano | [] [] [] [] [] | nano_1_0 | [] [] [] [] [] [] | opcodes | [] [] | parted | [] [] [] [] | ptx | [] [] [] [] [] [] [] [] | python | | radius | [] [] | recode | [] [] [] [] | rpm | [] [] [] | screem | | scrollkeeper | [] [] [] [] [] | sed | [] [] [] | sh-utils | [] [] | shared-mime-info | [] [] | sharutils | [] [] | silky | () | skencil | [] [] | sketch | [] [] | soundtracker | | sp | | tar | [] [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] | tin | | tp-robot | [] | tuxpaint | [] [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] | vorbis-tools | [] [] [] | wastesedge | | wdiff | [] [] [] [] [] | wget | [] [] [] | xchat | [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] [] | +-----------------------------------------------------+ lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru 1 2 0 3 12 0 10 69 6 7 1 40 26 36 76 63 sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu +-----------------------------------------------------+ a2ps | [] [] [] [] | 16 aegis | | 0 ant-phone | | 3 anubis | [] [] | 9 ap-utils | () | 3 aspell | | 4 bash | | 9 batchelor | | 3 bfd | [] [] | 6 binutils | [] [] [] | 8 bison | [] [] | 14 bluez-pin | [] [] [] | 14 clisp | | 0 clisp | | 5 console-tools | | 3 coreutils | [] [] [] [] | 16 cpio | [] [] | 14 darkstat | [] [] [] () () | 12 diffutils | [] [] [] | 23 e2fsprogs | [] [] | 6 enscript | [] [] | 12 error | [] [] [] | 15 fetchmail | [] [] | 11 fileutils | [] [] [] [] [] | 17 findutils | [] [] [] [] [] [] | 29 flex | [] [] | 13 fslint | | 3 gas | [] | 3 gawk | [] [] | 12 gbiff | | 4 gcal | [] [] | 4 gcc | [] | 4 gettext | [] [] [] [] [] | 16 gettext-examples | [] [] [] [] [] | 14 gettext-runtime | [] [] [] [] [] [] [] [] | 22 gettext-tools | [] [] [] [] [] [] | 14 gimp-print | [] [] | 10 gliv | | 3 glunarclock | [] [] [] | 13 gnubiff | | 3 gnucash | [] [] | 9 gnucash-glossary | [] [] [] | 8 gnupg | [] [] [] [] | 17 gpe-aerial | [] | 7 gpe-beam | [] | 8 gpe-calendar | [] [] [] [] | 13 gpe-clock | [] [] [] | 10 gpe-conf | [] [] | 9 gpe-contacts | [] [] [] | 11 gpe-edit | [] [] [] [] [] | 12 gpe-go | | 5 gpe-login | [] [] [] [] [] | 13 gpe-ownerinfo | [] [] [] [] | 13 gpe-sketchbook | [] [] | 9 gpe-su | [] [] [] | 10 gpe-taskmanager | [] [] [] | 10 gpe-timesheet | [] [] [] [] | 12 gpe-today | [] [] [] [] [] | 13 gpe-todo | [] [] [] [] | 12 gphoto2 | [] [] [] | 11 gprof | [] [] | 9 gpsdrive | [] [] | 3 gramadoir | [] | 5 grep | [] [] [] [] | 26 gretl | | 3 gtick | | 7 hello | [] [] [] [] [] | 34 id-utils | [] [] | 12 indent | [] [] [] [] | 21 iso_3166 | [] [] [] [] [] [] [] | 27 iso_3166_1 | [] [] [] | 16 iso_3166_2 | | 0 iso_3166_3 | | 2 iso_4217 | [] [] [] [] [] [] | 24 iso_639 | | 1 jpilot | [] [] [] [] [] | 9 jtag | [] | 2 jwhois | () [] [] | 11 kbd | [] [] | 11 latrine | | 2 ld | [] [] | 5 libc | [] [] [] [] | 20 libgpewidget | [] [] [] [] | 13 libiconv | [] [] [] [] [] [] [] [] | 27 lifelines | [] | 2 lilypond | [] | 3 lingoteach | | 2 lingoteach_lessons | () | 0 lynx | [] [] [] | 14 m4 | [] [] | 15 mailutils | | 5 make | [] [] [] | 16 man-db | [] | 5 minicom | | 11 mysecretdiary | [] [] | 10 nano | [] [] [] [] | 17 nano_1_0 | [] [] [] | 17 opcodes | [] [] | 6 parted | [] [] [] | 15 ptx | [] [] | 22 python | | 0 radius | | 4 recode | [] [] [] | 20 rpm | [] [] | 9 screem | [] [] | 2 scrollkeeper | [] [] [] | 15 sed | [] [] [] [] [] [] | 24 sh-utils | [] [] | 14 shared-mime-info | [] [] | 7 sharutils | [] [] [] [] | 17 silky | () | 3 skencil | [] | 6 sketch | [] | 6 soundtracker | [] [] | 7 sp | [] | 3 tar | [] [] [] [] [] | 24 texinfo | [] [] [] | 14 textutils | [] [] [] [] | 16 tin | | 1 tp-robot | | 2 tuxpaint | [] [] [] [] [] | 29 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux | [] [] | 15 vorbis-tools | | 8 wastesedge | | 0 wdiff | [] [] [] | 18 wget | [] [] [] [] [] [] [] [] | 24 xchat | [] [] [] [] [] | 15 xfree86_xkb_xml | [] [] [] [] [] | 11 xpad | | 5 +-----------------------------------------------------+ 63 teams sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu 131 domains 47 19 28 83 0 0 59 13 1 1 11 0 22 22 0 1373 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If January 2004 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. Using `gettext' in new packages =============================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `translation@iro.umontreal.ca' to make the `.pot' files available to the translation teams. libgphoto2-2.5.9/libgphoto2_port/ChangeLog0000644000175000001440000010570212610415510015404 000000000000002010-04-01 Marcus Meissner * disk driver: Get rid of HAL, upstream unmaintained and the team strongly recommends we do not use it anymore. 2009-10-03 Marcus Meissner * gphoto2/gphoto2-port-log.h, libgphoto2_port/gphoto2-port-log.c: Add gp_log_simple_add_func, gp_log_simple_remove_func that get passed simple strings to print. 2009-07-23 Marcus Meissner * configure.ac: resmgr is no longer existing. 2008-03-15 Marcus Meissner * libgphoto2_port/gphoto2-port-info.h: The internal GPPortInfo structure definition. Only shared within libgphoto2_port/ * libgphoto2_port/gphoto2-port-info-list.c: Added new abstract GPPortInfo implementation, with accessor functions. * removed DiskSettings, let it get handled in directory using the GPPortInfo (as it should have been done before). * libgphoto2_port/libgphoto2_port.ver: mark some symbols INTERNAL through symbolversions. * Do not start symbol versions with 2.0.0, but with this release. 2008-02-13 Marcus Meissner * disk/disk.c: Do not check "gphotofs" filesystems, to avoid recursion in gphotofs. 2007-12-28 Marcus Meissner * Migrated libgphoto2_port to use symbol versions. This allows reverting the major version change. 2007-10-28 Dan Fandrich * libgphoto2_port/libgphoto2_port/gphoto2-port-info-list.c: Be more resiliant in case of errors enumerating a port library. 2007-10-28 Marcus Meissner * gphoto2/gphoto2-port-info-list.c: GPPortInfo.path increased to 4096, since disk: for instance can take paths. This breaks libgphoto2_port binary compatibility, so bumping interface. 2007-06-09 Marcus Meissner * usb/libusb.c: Reset the USB port before close. This will help the notorious "Canon hang on init" problem. 2007-05-09 Marcus Meissner * gphoto2/gphoto2-port.h, gphoto2/gphoto2-port-library.h, libgphoto2_port/gphoto2-port.c, libgphoto2_port/libgphoto2_port.sym, usb/libusb.c: Added USB class based control read and write (for PTP driver). 2007-02-12 Marcus Meissner * ptpip/ptpip.c: mDNS auto discovery disabled, since the mDNS compat module of avahi crashes autodetect if used incorrectly. 2007-01-20 Marcus Meissner * usb/libusb.c: Use usb_interrupt_read instead of usb_bulk_read. 2006-09-09 Marcus Meissner * disk: Merged Solaris mount entry handling from SF tracker http://sourceforge.net/tracker/download.php?group_id=8874&atid=108874&file_id=171553&aid=1427300 (but pretty modified). 2006-02-19 Marcus Meissner * Regular expression support added for: usb: (currently supported: usb:XXX,YYY, can get easily more) disk: (disk:/full/path/) ptpip: (ptpip:ipnr:port) 2006-02-17 Marcus Meissner * libgphoto2_port/gphoto2-port-info-list.c: Fixed various problems in regular expression based ports handling. 2006-02-16 Marcus Meissner * ptpip/: New directory for PTP/IP support. * configure.in: added ptpip directory autodetect mDNSresponder (UNIX version of Bonjour) 2006-01-04 Hubert Figuiere * configure.in: buumped .so version. Bumped package version. 2005-08-17 Marcus Meissner * usb/libusb.c: Recurse into the interfaces to see HID devices and similar so we can skip them. This avoids unnecessary listing of some non camera devices and usb:XXX,YYY confusion. 2005-08-14 Marcus Meissner * configure.in: Use "disk" unconditional. When we detect HAL , define HAVE_HAL. * disk/disk.c: Read /etc/fstab and /etc/mtab and look for digital camera mounts. 2005-06-12 Hubert Figuiere * libgphoto2_port/gphoto2-port.h: new disk settings struct. * libgphoto2_port/gphoto2-port.c (gp_port_set_info): copy disk port settings * libgphoto2_port/gphoto2-port-result.[ch]: added GP_HAL_ERROR * disk/Makefile.am: added HAL flags * disk/disk.c (gp_port_library_list): list mounted filesystems using libhal. * configure.in (HAL_CFLAGS): detect libhal 2005-06-11 Hans Ulrich Niedermann * libgphoto2_port/Makefile.am: link libgphoto2_port with explicit symbol list 2005-06-11 Hubert Figuiere * disk/*: * configure.in: added disk/ subdir * libgphoto2_port/gphoto2-port-info-list.h: added GP_PORT_DISK. 2005-06-08 Theodore Kilgota * usb/libusb.c: added gp_port_usb_msg_interface_write_lib and gp_port_usb_msg_interface_read_lib functions, and corresponding entries in "ops" list, in order to support 0x41 and 0xc1 request types needed by Sonix sn9c2028 cameras. * libgphoto2_port/gphoto2_port_library.h: msg_interface_write and msg_interface_read declared * libgphoto2_port/gphoto2_port.h: gp_port_usb_msg_interface_write and gp_port_usb_msg_interface_read functions declared * libgphoto2_port/gphoto2_port.c: gp_port_usb_msg_interface_write and gp_port_usb_msg_interface_read functions added 2005-03-04 Marcus Meissner * serial/unix.c: make IUCLC check more generic. (from Robert Millan) 2005-02-16 Marcus Meissner * usb/libusb.c: also detach the usb-storage driver when we open a USB device. We can support those cameras. 2005-02-12 Hans Ulrich Niedermann * configure.in: fix shell syntax error I introduced in 2002-11 and no one noticed except for the Debian packagers 2005-01-17 Colin Marquardt * po/ja.po: Update thanks to Takeshi AIHANA. 2005-01-04 Marcus Meissner * libpghoto2_port/gphoto2-port.c, gphoto2-port-info-list.c: Marked up debug strings for translation too. Removed translation markup from function names. * po/*.po: make update-po * po/ru.po: Merged new russian translations from Vyacheslav Dikonov. 2004-10-28 Hubert Figuiere * libgphoto2_port/gphoto2-port-log.h: Fix build for gcc 2.95 (bug #1055868) 2004-08-22 Marcus Meissner * libgphoto_port/gphoto-port.h, gphoto-port-log.h: Added attributes so gcc knows gp_log* are varargs using printf style functions and can warn on bad format strings. 2004-08-22 Marcus Meissner * Detach USB kernel drivers (unless storage or usbfs) before claiming interface. This should help stv680 and spca504x cameras (dc2xx driver should be gone from kernel). 2004-01-06 Marcus Meissner * Multiple USB Devices at once support. 2003-12-11 Lutz Mueller Patch by Andreas Burmester : * serial/unix.c: Do not verify the speed change if we set the speed to 0. 2003-08-16 Patrick Mansfield * usb/libusb.c: change the mass storage check to output a debug message and not prevent the camera from being used, as reported by Marcus Meissner, at the least the olympus 5050z shows up as a mass storage device, but works fine with gphoto2. 2003-08-10 Patrick Mansfield * usb/libusb.c: Fix the check for mass storage devices. 2003-08-10 Patrick Mansfield * usb/libusb.c: Check for and do not allow USB mass storage devices. 2003-05-04 Lutz Mueller * libgphoto2_port/gphoto2-port-portability.h: Patch by Mike Petullo for OpenBSD. 2003-01-23 Hubert Figuiere * libgphoto2_port/gphoto2-port-info-list.c (gp_port_info_list_free): actually free the list. It was simply leaked. (reported by DigiKam author on IRC). 2002-11-29 Marcus Meissner * serial/unix.c, configure.in: Added support for libresmgr style locking. 2002-11-12 Lutz Mueller * libgphoto2_port/gphoto2-port-version.c: Use HAVE_CC only if defined. 2002-11-08 Hans Ulrich Niedermann * configure.in: increased AGE to 1, define HAVE_USB and HAVE_SERIAL * libgphoto2-port/gphoto2-port-version.[ch]: added * libgphoto2-port/Makefile.am: added gphoto2-version.[ch] 2002-09-12 Marcus Meissner * configure.in, serial/Makefile.am: Do not use xx_LDFLAGS, automake is unhappy about that. 2002-07-25 Christophe Barbé po files from Stefan Bj|rnelund * libgphoto2_port/po/sv.po: Update Swedish translation. 2002-07-14 Hans Ulrich Niedermann * ABOUT-NLS: Remove this file, it is generated by gettextize. 2002-07-12 Lutz Müller * configure.in: Use ltdl if available. 2002-06-27 Lutz Müller * autogen.sh: We don't need this file. 2002-06-21 Christophe Barbé po files from Takeshi AIHANA * libgphoto2_port/po/ja.po: Update Japan translation. 2002-06-18 Christophe Barbé po file from Fabian Mandelbaum * libgphoto2_port/po/es.po: Spanish translation. 2002-06-17 Lutz Müller * configure.in: Fix indentation. 2002-06-17 Lutz Müller Patch by Arnaud Launay , slightly modified: * configure.in: Check for usb_busses in -lusb. 2002-06-17 Lutz Müller * Makefile.am: Remove 'autogen.sh' from EXTRA_DIST - people that compile our tarballs don't need it. 2002-06-14 Lutz Müller * libgphoto2_port/gphoto2-port-info-list.c: Cleanup the ltdl-specific part. 2002-06-14 Lutz Müller * libgphoto2_port/Makefile.am: * configure.in: Fix (?) -version-info 2002-06-14 Lutz Müller * configure.in: Don't use ltdl.h - libtool is just too broken (or I am too stupid to use it). 2002-06-13 Hans Ulrich Niedermann * m4/documentation.m4: - set XMLTO to either xmlto (if present) or false (if not) - set have_xmltohtml and stuff instead of have_xmltoHTML and stuff - only set have_xmlto* to true if have_xmlto - output which formats we will create under which file/dir name 2002-06-12 Lutz Müller * configure.in: * libgphoto2_port/gphoto2-port-info-list.c: Make libgphoto2_port use ltdl.h. I needed to introduce a global variable - code is marked as UGLY_HACK. If you know how to fix it, please tell me. 2002-06-12 Lutz Müller * serial/unix.c: Substitute some '#if's by '#ifdef's. 2002-06-12 Lutz Müller * m4/documentation.m4: People reported problems with AC_CHECK_PROG. Let's try AC_PATH_PROG instead. 2002-06-11 Lutz Müller * m4/documentation.m4: Fix checks for xmlto-[html,pdf,man,ps]. 2002-06-11 Hans Ulrich Niedermann * m4/packaging.m4: package dependency on libusb only if required 2002-06-06 Lutz Müller Patch by Patrick Mansfield : * libgphoto2_port/gphoto2-port-info-list.c: #ifdef instead of #if 2002-06-06 Lutz Müller * m4/documentation.m4: Fix this ugly output all over the place. 2002-06-06 Lutz Müller * intl: Remove these files - they should be generated by gettextize. * autogen.sh: Check for and run gettextize. 2002-06-06 Lutz Müller * acconfig.h: According to http://www.gnu.org/manual/autoconf-2.53/html_mono/autoconf.html, this file is obsolete. * configure.in: Adapt to above. 2002-06-04 Hans Ulrich Niedermann * m4/documentation.m4: build HTML, PDF, PS manual only if possible * usb/libusb.c: added note about stv680 kernel driver 2002-05-30 Hans Ulrich Niedermann * m4/documentation.m4: fixed fig2dev test, hack: assume xmlto cannot do pdf and ps even if it claims to, added output message 2002-05-28 Hans Ulrich Niedermann * doc/DocRules.am: API docs belong to API_DIR 2002-05-26 Hans Ulrich Niedermann * m4/documentation.m4: test for xmlto, define API_DIR 2002-05-25 Hans Ulrich Niedermann * m4/documentation.m4: use AC_BEFORE where sensible * serial/unix.c: the locking problems only concern RS232 cams 2002-05-25 Lutz Müller Patch by Dave Woodman , slightly modified: * serial/unix.c: Make sure speed changes have been successful. 2002-05-23 Lutz Müller * test/test-gp-port.c: More tests. * libgphoto2_port/gphoto2-port.c: Nicer debugging output. 2002-04-22 Marcus Meissner * serial/unix.c: Unescape 0xff/0xXX parity framing sequences here. 2002-04-19 Mariusz Woloszyn * libgphoto2_port/gphoto2-port-library.h: changed definition of GPPortOperations.check_int. * libgphoto2_port/gphoto2-port.[ch]: added gp_port_check_int_fast(). * usb/libusb.c: changed definition of gp_port_usb_check_int. 2002-04-16 Marcus Meissner * libgphoto_port/gphoto2-port.h, serial/unix.c: Handle parity, introduced new enum GPPortSerialParity, switched one element of the structure from int to enum (enums are ints, so it should remain binary compatible). 2002-03-23 Dan Fandrich * m4/byteorder.m4: Added support for cross-compilation. Changed to look for machine/endian.h instead of sys/endian.h on *BSD. 2003-03-22 Lutz Müller * libgphoto2_port/Makefile.am: Remove "-g" from [C,LD]FLAGS. If you need it, please add it again in configure.in. 2002-03-21 Marcus Meissner * usb/libusb.c: gp_port_usb_find_bulk no exists, replaced with _ep. Also look for intep in class based matching. Dump intep in debugoutput. interrupt endpoints are *input* endpoints, not output. Remember we did the altsetting after we did change it. 2002-03-19 Marcus Meissner * configure.in, acconfig.h: Fixed some warnings newer autoconf versions generate. Use AM_PROG_LIBTOOL. 2002-03-14 Dan Fandrich * m4/byteorder.m4 * m4/stdint.m4: Changed to allow building in non-source directory. Added support for 64 bit integers. 2002-03-13 Hans Ulrich Niedermann * configure.in: more verbose (and hopefully more user-understandable) libusb error message and configuration information, fixed typo 2002-03-12 Mariusz Woloszyn * changed all _event, eventep to _int and intep as it describes usb inerrupt endpoint 2002-03-11 Lutz Müller * configure.in: Fix versionning. 2002-03-11 Mariusz Woloszyn * libgphoto2_port/gphoto2-port-library.h: added check_event to GPPortOperationsl * libgphoto2_port/gphoto2-port.h: added eventep to GPPortSettingsUSB * usb/libusb.c: added gp_port_usb_check_event(), changed gp_port_usb_find_bulk to gp_port_usb_find_ep(), added setting of eventsep to gp_port_usb_find_device_lib() * libgphoto2_port/gphoto2-port.[ch]: added gp_port_check_event() 2002-02-23 Dan Fandrich * libgphoto2_port/gphoto2-port-info-list.c: Fixed error test for non-GNU regex. 2002-02-23 Lutz Müller * [serial,usb]/Makefile.am: LIBADD libgphoto2_port. 2002-02-22 Lutz Müller * serial/unix.c: Improved IRIX fix to set the speed exactly once after opening the device. 2002-02-21 Lutz Müller * serial/unix.c: IRIX fixes. 2002-02-19 Lutz Müller * serial/unix.c (gp_port_library_list): Don't check for return value when adding generic ports. Fixes #518616. 2002-02-18 Colin Marquardt * configure.in: Added zh_CN.GB2312 to ALL_LINGUAS. 2002-02-16 Hans Ulrich Niedermann * usb/Makefile.am: Added usb-os2.c to EXTRA_DIST 2002-02-13 Marcus Meissner * gphoto2-port.h: placed typedefs after the enums (GPPin and GPLevel) since g++ does not like it. 2002-02-11 Lutz Müller * doc/DocRules.am: Fix building docs when $(builddir) == $(srcdir). 2002-02-09 Dan Fandrich * serial/unix.c: Added serial ports for Tru64 UNIX 2002-02-06 Lutz Müller * m4/documentation.m4: Fix #510543. 2002-02-06 Lutz Müller * libgphoto2_port/gphoto2-port.h: extern C. 2002-01-13 Hans Ulrich Niedermann * configure.in: Added "ja" to ALL_LINGUAS to fix broken "make dist" 2002-01-31 Lutz Müller * libgphoto2_port/gphoto-port.[c,h]: The buffer that is sent using gp_port_write is "const". 2002-01-24 Dan Fandrich * gphoto2-port-log.h * gphoto2-port.h: Removed config.h include (should be done in .c files) * usb/usb-os2.c * test/test-gp-port.c * gphoto2-port-portability.c: Added include of config.h 2002-01-19 Dan Fandrich * configure.in: Replaced AC_TRY_RUN with AC_TRY_LINK in ttylock test so cross-compiling is possible. 2002-01-13 Dan Fandrich * libgphoto2_port/gphoto2-port-log.h * libgphoto2_port/gphoto2-port.h: Put #ifdef HAVE_CONFIG_H around include 2002-01-13 Hans Ulrich Niedermann * libgphoto2_port/gphoto2-port.[ch]: renamed "class" parameter to "mainclass" to allow for compilation of C++ programs with libgphoto2_port 2002-01-09 Dan Fandrich * m4/byteorder.m4: Added support for NetBSD swap macros. * m4/Makefile.am: Added byteorder.m4 to file list 2002-01-09 Dan Fandrich * libgphoto2_port/gphoto2-port-log.h: Conditionally use C99 variadic macros 2002-01-09 Dan Fandrich * libgphoto2_port/gphoto2-port.h: Moved typedefs after the definitions of the dependent types. 2002-01-08 Lutz Müller * configure.in: Substitute AM_PROG_LIBTOOL by AC_PROG_LIBTOOL (first is deprecated). 2002-01-04 Dan Fandrich * configure.in: Only add gcc-specific CFLAGS if we're running gcc. * Minor changes to other files to improve portability. 2002-01-04 Hans Ulrich Niedermann * usb/libusb.c: fixed error message to contain something to report 2002-01-04 Colin Marquardt * po/de.po: Update. 2002-01-02 Lutz Müller * libgphoto2_port/Makefile.am: * usb/Makefile.am: * serial/Makefile.am: Install io-drivers into versioned subdirectories. 2001-12-20 Lutz Müller Patch from Tim Waugh : * usb/libusb.c: "I think this makes it clearer exactly which kernel module to unload when dc2xx is loaded." 2001-12-14 Lutz Müller * configure.in: Comment out check for ltdl.h. See comment in there. 2001-12-14 Lutz Müller * gphoto2-port-config.in: Added missing -lgphoto2_port 2001-12-13 Lutz Müller * configure.in: Check if ltdl.h is available and ... * libgphoto2_port: ... use it. 2001-12-12 Lutz Müller Remove some error codes, and move some variable names into the gp-namespace. 2001-12-11 Lutz Müller * libgphoto2_port/gphoto2-port-result.[c,h]: Remove GP_ERROR_IO_TIMEOUT - we already have GP_ERROR_TIMEOUT. 2001-12-07 Hans Ulrich Niedermann * libgphoto2_port/gphoto2-port-log.c: ENABLE_DEBUGGING -> DISABLE_DEBUGGING * doc/gphoto2-port-sections.txt: added lots of constants, a few macros and created new sections about serial and usb specific stuff 2001-12-07 Lutz Müller * configure.in: You won't believe how much dead code there is... 2001-12-07 Hans Ulrich Niedermann * gphoto2-port-config.in: made it work again 2001-12-01 Hans Ulrich Niedermann * configure.in: help cosmetics * m4/documentation.m4: help cosmetics, added check for transfig and AM_CONDITIONAL BUILD_FIGURES, simplified mechanism that determines whether to build docs or not * m4/packaging.m4: help cosmetics, renamed PGK_* to GPKG_*, improved messages 2001-11-29 Lutz Müller * libgphoto2_port/gphoto2-port-info-list.c: The logic was still broken... 2001-11-29 Lutz Müller * libgphoto2_port/gphoto2-port-info-list.c: Oh god, I checked in a #if 0 that I used for debugging purposes. Sorry, guys.... 2001-11-29 Fredrik * libgphoto2_port/gphoto2-port-portability.h: OpenBSD also prepends underscores to symbols. 2001-11-29 Lutz Müller * libgphoto2_port/gphoto2-port-info-list.c: Fix regex stuff (at least for HAVE_GNU_REGEX). 2001-11-29 Lutz Müller * configure.in: Check for GNU regex * acconfig.h: HAVE_GNU_REGEX * serial: * libgphoto2_port: First try to implement a regex match. Doesn't work yet. 2001-11-29 Hans Ulrich Niedermann * libgphoto2_port/m4/packaging.m4: added packaging macro 2001-11-27 Hans Ulrich Niedermann * po/libgphoto2_port.pot: I'm sick of all the diffs * po/de.po: I'm still sick of all the diffs 2001-11-27 Lutz Müller * serial/unix.c (gp_port_library_list): Lock device here before trying to access a port, too. 2001-11-26 Lutz Müller * configure.in: Fix typo (USB_LIBS, not USB_LDFLAGS) *sigh* * usb/Makefile.am: libgphoto2-port-usb.so needs -lusb, therefore add it using LIBADD (ldopen is not clever enough to figure that out). 2001-11-25 Lutz Müller * gphoto2-port-config.in: Remove another reference to IOLIB_CFLAGS... 2001-11-25 Lutz Müller * serial/unix.c: Always set the speed at the beginning - don't assume it to be at 9600. 2001-11-25 Lutz Müller * serial/unix.c: For flush and break, check that the device is open and at the right speed. 2001-11-24 Lutz Müller * serial/unix.c: Try to fix logic of speed setting: Now check before each read/write operation if the current speed is the requested one. If not, change it and remember it in dev->pl->baudrate. 2001-11-24 Lutz Müller * libgphoto2_port/Makefile.am: @IOLIB_CFLAGS@ doesn't exist any more. 2001-11-23 Lutz Müller * serial/unix.c: Only set the baudrate if the device is open. If you set parameters on device 0, you mess up the console... 2001-11-23 Lutz Müller * configure.in: * serial/Makefile.am * usb/Makefile.am: Clean up Makefiles. Avoid version on io-drivers (we don't check it anyways) 2001-11-22 Lutz Müller Patch from Marr : * libgphoto2/gphoto2-port.c: Fix bug whereby hexadecimal output is erroneously shown in decimal format. * serial/unix.c (gp_port_serial_update): Don't open/close the port here (does this break anything?) 2001-11-17 Colin Marquardt * configure.in (Module): Added 'de' to ALL_LINGUAS. 2001-11-11 Lutz Müller * configure.in: Look for usb.h in locations specified by libusb-config. 2001-10-29 Lutz Müller * usb/libusb.c: memset port->pl to 0 so that we can later detect errors 2001-10-28 Lutz Müller * libgphoto2_port/gphoto2-port-portability.[c,h] (GP_SYSTEM_RMDIR): New 2001-10-27 Lutz Müller * libgphoto2: Updated documentation 2001-10-26 Lutz Müller * include: Move everything from here to ... * libgphoto2_port: ... here. 2001-10-26 Lutz Müller * configure.in: Give users the possibility _not_ to compile in USB support. Same with SERIAL. 2001-10-26 Lutz Müller * include/gphoto2-port.h: Changed the syntax of gp_port_new to be consistent with gp_camera_new. 2001-10-26 Lutz Müller * network * parallel * ieee1394: Removed. Once someone wants to implement those, they can be easily resurrected. 2001-10-25 Lutz Müller * usb/libusb.c: * include/gphoto2-port.h: Cleanup. 2001-10-25 Fredrik * libgphoto2_port/gp_port.c: Write number of bytes we are going to read in debug message as this was not shown when the read failed. Fix bug when logging data in gp_port_usb_msg_read(). 2001-10-25 Lutz Müller * libgphoto2_port/gphoto2-port-core.[c,h]: Replaced by ... * libgphoto2_port/gphoto2-port-info-list.[c,h]: ... this file. 2001-10-23 Lutz Müller * libgphoto2_port/gphoto2-port-log.[c,h]: Remove the history stuff. * libgphoto2_port/gp_port.c (gp_port_set_error), (gp_port_get_error): New. * serial/unix.c: Use gp_port_set_error 2001-10-22 Lutz Müller * libgphoto2_port/gphoto2-port-log.[c,h]: Use va_list instead of a buffers. That means, no more incomplete data dumps. 2001-10-20 Lutz Müller * libgphoto2_port/gp_port.c: Forot to set default speed to 0 2001-10-20 Lutz Müller * configure.in: Add some more warning flags * include/gphoto2-port.h: More cleanup in preparation of documentation * libgphoto2_port/gp_port.c: Move internals into port->pc * serial/unix.c: Move internals into port->pl. If speed in settings is 0, set to 9600 (default). 2001-10-17 Lutz Müller * libgphoto2_port/gphoto2-port-log.[c,h]: Added GP_LOG_DATA 2001-10-17 Lutz Müller * include/gphoto2-port-debug.h * libgphoto2_port/debug.c: Removed 2001-10-16 Lutz Müller * libgphoto2_port/result.c: * include/gphoto2-port-result.h: #define GP_ERROR_NOT_SUPPORTED * libgphoto2_port/gp_port.c: Clean up in preparation of documentation 2001-10-16 Lutz Müller * ieee1394/Makefile.am: * serial/Makefile.am: * parallel/Makefile.am: * usb/Makefile.am: * network/Makefile.am: -I$(top_srcdir)/libgphoto2_port * include/gphoto2-port-result.h: GP_ERROR_UNKNOWN_PORT instead of GP_ERROR_IO_UNKNOWN_PORT. * include/gphoto2-port.h: GPPortType, GPPortOperations, GPPort * libgphoto2_port/gphoto2-port-core.[c,h]: New. 2001-10-16 Lutz Müller * doc: Create framework for documentation. * libgphoto2_port/gphoto2-port-log.[c,h]: Updated 2001-10-14 Lutz Müller * include/gphoto2-port-result.h: GP_ERROR_NO_MEMORY * libgphoto2_port/result.c: GP_ERROR_NO_MEMORY 2001-10-12 Lutz Müller Patch from Fredrik : * libgphoto2_port/gp_port.c: * usb/libusb.c: Better error checking 2001-10-07 Lutz Müller Patch from David Faure * libgphoto2_port/library.c: Fix logic 2001-10-06 Lutz Müller Suggestions from Hans Ulrich Niedermann : * libgphoto2_port/debug.c: #warn the user #ifndef HAVE_VSNPRINTF and use a #define at the beginning instead of #ifdefs in the code. 2001-10-06 Lutz Müller * include/gphoto2-port-debug.h * libgphoto2_port/debug.c (gp_port_debug_history_get_size): New. (gp_port_debug_printf): Append the msg to the history after calling the debugging function. (gp_port_history_append): Don't try to remove full messages, just remove as many bytes as needed. 2001-10-06 Lutz Müller * include/gphoto2-port-debug.h * libgphoto2/debug.c (gp_port_debug_get_level): New. In addition, remove port-dependent debug levels as frontends are not able to change them dynamically. Just use the global one. * include/gphoto2-port.h * libgphoto2_port/gp_port.c: gp_port_init without debug level. That can and should be done separately. * libgphoto2_port/library.c * test/test-gp-port.c * serial/unix.c: Adjust to above changes * usb/libusb.c: Use gp_port_debug_printf instead of fprintf 2001-10-06 Lutz Müller Chris Byrne found this bug: * libgphoto2_port/debug.c: Use "%s" because the string we print can contain characters like "%%%%i%s&%i". 2001-10-05 Lutz Müller * libgphoto2_port/gp_port.c: Print what we received only if we received something... 2001-10-05 Lutz Müller Patch from Hans Ulrich Niedermann , slightly adapted: * include/gphoto2-port-debug.h * libgphoto2_port/debug.c (gp_port_debug_print_data): New * libgphoto2_port/gp_port.c: Use the new function. 2001-10-05 Lutz Müller * libgphoto2_port/debug.c: #include 2001-10-05 Lutz Müller Suggestion from Fredrik : * configure.in: Check for vsnprintf * libgphoto2_port/debug.c: Use vsnprintf if available 2001-10-05 Lutz Müller Patch based on suggestions from Fredrik : * libgphoto2_port/debug.c: Make sure we memset the same number of bytes we malloc. 2001-10-04 Lutz Müller * serial/unix.c: * usb/libusb.c: Fix includes 2001-10-04 Lutz Müller * include/Makefile.am * include/gphoto2-port-result.h * libgphoto2_port/Makefile.am * libgphoto2_port/result.c: New * include/gphoto2-port-debug.h: Define debug levels here * include/gphoto2-port.h: Clean up * libgphoto2_port/debug.c: Check if history is big enough for message 2001-10-04 Lutz Müller * include/Makefile.am * include/gphoto2-port-debug.h * libgphoto2_port/Makefile.am * libgphoto2_port/debug.c: New files * libgphoto2_port/gp_port.c: Move debugging stuff out of here. 2001-10-04 Lutz Müller * include/gphoto2-port.h: * libgphoto2_port/gp_port.c: Revert the result_as_description thing 2001-10-04 Lutz Müller * acconfig.h: * configure.in: * serial/unix.c: Use baudboy.h if available (Red Hat) 2001-10-04 Lutz Müller Thanks to Bill Richardson : * test/Makefile.am: Oops, don't use -lgphoto_port 2001-10-03 Lutz Müller * acconfig.h: #undef HAVE_TTYLOCK * configure.in: Improved checks for locking headers/libs * serial/unix.c: Yet another locking lib: ttylock.h 2001-10-03 Lutz Müller * include/gphoto2-port.h: * libgphoto2_port/gp_port.c: Explain to the users why claiming an interface could fail. 2001-10-03 Lutz Müller * include/gphoto2-port.h: * libgphoto2_port/gp_port.c (gp_port_result_as_description): New 2001-10-03 Lutz Müller * serial/unix.c: Correctly interpret the return value of dev_[un]lock 2001-10-03 Lutz Müller * test/gphoto2-port-test.c: Renamed into * test/test-gp-port.c * test/Makefile.am: New * Makefile.am: Add test to SUBDIRS * acconfig.h: #undef HAVE_LOCKDEV * configure.in: Check for lockdev and use it if available * serial/Makefile.am: -llockdev if that is available * serial/unix.c: Use lockdev if available 2001-09-24 Lutz Müller * libgphoto2_port/gp_port.c (gp_port_count): Make sure libgphoto2_port is initialized. 2001-09-22 Lutz Müller Patch from Fredrik * include/gphoto2-port.h: * libgphoto2_port/gp_port.c: * serial/unix.c: * usb/libusb.c: Clean up settings code. 2001-09-22 Lutz Müller Patch from Carsten Pfeiffer * libgphoto2_port/library.c: * libgphoto2_port/portability.c: char *whatever -> const char *whatever 2001-09-18 Chris PInkham * include/gphoto2-port.h libgphoto2_port/gp_port.c usb/libusb.c: changed *usb_msg_read* and *usb_msg_write* functions to allow passing in of request and index values. 2001-09-14 Lutz Müller Patch from Fredrik : * usb/libusb.c: Only set configuration stuff on gp_port_usb_update (instead of gp_port_usb_open). 2001-09-14 Lutz Müller * libgphoto2_port/gp_port.c: Set some default settings in case of GP_PORT_USB, too. 2001-09-02 Lutz Müller * include/gphoto2-portability.h: * include/libgphoto2_port/portability.c: const *char 2001-08-30 Lutz Müller * include/gphoto2-port.h: GP_ERROR_IO_LOCK * libgphoto2_port/gp_port.c: Better error reporting. * serial/unix.c: Implement locking of serial ports 2001-08-29 Lutz Müller All work from Fabrice Bellet : * libgphoto2_port/library.c (gp_port_library_list): Don't try to open .* * usb/libusb.c (gp_port_usb_close): Release the interface here. 2001-08-29 Lutz Müller * libgphoto2_port/gp_port.c: if (!dev) return (GP_OK) instead of accessing dev->whatever... Plus, set the timeout on gp_port_open. 2001-08-27 Lutz Müller Suggestion from Fabrice Bellet : * include/gphoto2-port.h: * usb/libusb.c (gp_port_usb_close): Don't report an error if the device has already been closed. Correctly reuse the devices on gp_port_open after gp_port_close. * parallel/Makefile.am: Remove some references to libgpio. 2001-03-16 Lutz Müller * gphoto2-port-test.c: Applied patch from Michael which brings the file in sync with current API. 2000-07-15 Fabrice Bellet * gpio-usb.c : removed useless call to usb_release_interface() because the usbdev close ioctl already does the job for us. Compilation warning fix. 2000-07-09 Fabrice Bellet * Makefile.am : fixed typo. * gpio-usb.c : cosmetic namespace changes. * gpio.c : fixed compilation warnings. 2000-01-07 Ole Aamot * Added USB patch from Johannes Erdfelt 1999-12-28 Ole Aamot * libgpio.spec.in: added 1999-12-27 Ole Aamot * Added auto* build scripts. libgphoto2-2.5.9/libgphoto2_port/iolib.sym0000644000175000001440000000010512557123324015462 00000000000000gp_port_library_list gp_port_library_operations gp_port_library_type libgphoto2-2.5.9/libgphoto2_port/configure.ac0000644000175000001440000003672112611103012016114 00000000000000dnl Process this file with autoreconf to produce a configure script. AC_PREREQ(2.59) AC_INIT([libgphoto2 port access library], [0.12.0], [gphoto-devel@lists.sourceforge.net], [libgphoto2_port]) AC_CONFIG_SRCDIR([libgphoto2_port/gphoto2-port-version.c]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([auto-m4]) AC_CONFIG_AUX_DIR([auto-aux]) dnl Working around bug in automake <= 1.9.6: dnl - Please do not add filename-length-max=99 here. dnl - Otherwise "make distdir" will fail in libgphoto2 dnl The generated Makefile rule fails to remove the absolute part at dnl the beginning of the /path/to/buildroot/PACKAGE-VERSION/foo/bar dnl before determining the string length. However, the only relevant dnl string to determine the length of would be PACKAGE-VERSION/foo/bar AM_INIT_AUTOMAKE([-Wall gnu 1.9 dist-bzip2 check-news subdir-objects]) AC_LANG(C) # Use the silent-rules feature when possible. m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])]) AM_SILENT_RULES([no]) dnl --------------------------------------------------------------------------- dnl Advanced information about versioning: dnl * "Writing shared libraries" by Mike Hearn dnl http://navi.cx/~mike/writing-shared-libraries.html dnl * libtool.info chapter "Versioning" dnl * libtool.info chapter "Updating library version information" dnl --------------------------------------------------------------------------- dnl Versioning: dnl - AGE (Micro): Increment if any interfaces have been added; set to 0 dnl if any interfaces have been removed. Removal has dnl precedence over adding, so set to 0 if both happened. dnl It denotes upward compatibility. dnl - REVISION (Minor): Increment any time the source changes; set to dnl 0 if you incremented CURRENT. dnl - CURRENT (Major): Increment if the interface has changes. AGE is always dnl *changed* at the same time. dnl dnl To summarize. Any interface *change* increment CURRENT. If that interface dnl change does not break upward compatibility (ie it is an addition), dnl increment AGE, Otherwise AGE is reset to 0. If CURRENT has changed, dnl REVISION is set to 0, otherwise REVISION is incremented. dnl --------------------------------------------------------------------------- dnl A:R:C=6:1:6 libgphoto2_port-0.6.1 libgphoto2-2.2.1 dnl A:R:C=7:0:7 libgphoto2_port-0.7.0 libgphoto2-2.3 dnl A:R:C=7:1:7 libgphoto2_port-0.7.1 libgphoto2-2.3.x dnl A:R:C=8:0:8 libgphoto2_port-0.8.0 libgphoto2-2.4.x dnl A:R:C=9:1:9 libgphoto2_port-0.10.0 libgphoto2-2.5.x AC_SUBST([LIBGPHOTO2_PORT_AGE], [0]) AC_SUBST([LIBGPHOTO2_PORT_REVISION], [0]) AC_SUBST([LIBGPHOTO2_PORT_CURRENT], [12]) AC_SUBST([LIBGPHOTO2_PORT_CURRENT_MIN], [`expr $LIBGPHOTO2_PORT_CURRENT - $LIBGPHOTO2_PORT_AGE`]) AC_SUBST([LIBGPHOTO2_PORT_VERSION_INFO], [$LIBGPHOTO2_PORT_CURRENT:$LIBGPHOTO2_PORT_REVISION:$LIBGPHOTO2_PORT_AGE]) dnl --------------------------------------------------------------------------- dnl Checks for programs. dnl --------------------------------------------------------------------------- AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AM_PROG_CC_C_O m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) dnl Something with the sequences is not quite alright yet. dnl SED is supposed to be set in AC_LIBTOOL_SETUP, but the dnl sequence seems to get mixed up. SED=${SED-sed} dnl check for/set up libtool and libltdl dnl AC_DISABLE_STATIC dnl AC_DISABLE_SHARED dnl AC_LIBLTDL_CONVENIENCE([libltdl]) dnl AC_WITH_LTDL dnl AC_LIB_LTDL dnl Disable building static library, as no one uses it anyway. AC_DISABLE_STATIC AC_LIBTOOL_WIN32_DLL AC_LIBTOOL_DLOPEN AC_PROG_LIBTOOL dnl We are using our own libltdl checks instead of AC_WITH_LTDL dnl because we do not want to ship our own copy of libltdl any more. dnl Not shipping libltdl makes it possible to ditch our own autogen.sh dnl and relying on standard autoconf's "autoreconf". GP_LIB_LTDL # report on compiler/libtool setup GP_CONFIG_MSG([Build]) GP_CONFIG_MSG([Source directory],[${srcdir}]) GP_CONFIG_MSG([Compiler],[${CC}]) GP_CONFIG_MSG([libltdl includes],[$LTDLINCL]) GP_CONFIG_MSG([libltdl library],[$LIBLTDL]) AC_DEFINE_UNQUOTED(HAVE_CC,"$CC",[The C compiler we're using]) AM_CPPFLAGS="" # ---------------------------------------------------------------------- # References to external resources (web sites, mailing listes, etc.) # ---------------------------------------------------------------------- GP_REFERENCES()dnl dnl --------------------------------------------------------------------------- dnl i18n support dnl --------------------------------------------------------------------------- dnl The following is a hack to get gphoto2 to build on gettext-0.10.35 dnl systems - BUILD_INCLUDED_LIBINTL is set only in gettext-0.10.37 which is dnl the gettext version provided with gphoto2. dnl BUILD_INCLUDED_LIBINTL=no dnl AC_SUBST(BUILD_INCLUDED_LIBINTL) dnl USE_INCLUDED_LIBINTL=no dnl AC_SUBST(USE_INCLUDED_LIBINTL) GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2_PORT_CURRENT_MIN}],[Lutz Mueller and others],[${MAIL_GPHOTO_TRANSLATION}]) ALL_LINGUAS="cs da de es eu fi fr it ja nl pl pt_BR ru sk sr sv uk vi zh_CN zh_TW" AM_GNU_GETTEXT_VERSION([0.14.1]) AM_GNU_GETTEXT([external]) AM_PO_SUBDIRS() AM_ICONV() GP_GETTEXT_FLAGS() AC_SUBST([localedir],["\$(datadir)/locale"]) AM_CPPFLAGS="$AM_CPPFLAGS -DLOCALEDIR=\\\"${localedir}\\\"" AC_CHECK_FUNC(gettext, gettext_without_libintl=true) # same trick as with libdl in libgphoto2: # if gettext() doesn't require linking against libintl, # we don't have to check for gettext in libintl. Otherwise # we may even require libintl. dnl AC_CHECK_LIB(intl, gettext, [LIBS="$LIBS -lintl"]) if test "$gettext_without_libintl" != "true" -a "$USE_NLS" = "yes"; then AC_CHECK_LIB(intl, gettext, [INTLLIBS="$INTLLIBS -lintl"]) fi dnl --------------------------------------------------------------------------- dnl Checks for header files. dnl --------------------------------------------------------------------------- AC_HEADER_DIRENT AC_HEADER_STDC AC_C_INLINE([]) AC_C_CONST([]) AC_CHECK_HEADERS(stdlib.h unistd.h stdio.h fcntl.h errno.h sys/time.h \ sys/param.h sys/select.h termios.h sgetty.h ttold.h ioctl-types.h \ fcntl.h sgtty.h sys/ioctl.h sys/time.h termio.h unistd.h \ endian.h byteswap.h asm/io.h mntent.h sys/mntent.h sys/mnttab.h \ scsi/sg.h limits.h sys/file.h) dnl FIXME: Provide regex.h with the corresponding object code for dnl platforms which do not have it, e.g. Windows. AC_CHECK_HEADER([regex.h], [AC_DEFINE([HAVE_REGEX],1,[whether we have regex.h])],[]) AC_CHECK_LIB([regex],[regexec]) AC_MSG_CHECKING([for asm .symver support]) AC_COMPILE_IFELSE([dnl AC_LANG_PROGRAM([[]],[[ int f1() { } int f2() { } asm(".symver f1, f@VER1"); asm(".symver f2, f@@VER2"); int main(int argc, char **argv) { } ]])dnl ],[ AC_DEFINE([HAVE_ASM_SYMVERS],1,[Define if there is asm .symver support.]) VERSIONMAPLDFLAGS="-Wl,--version-script=\$(srcdir)/libgphoto2_port.ver" AC_MSG_RESULT(yes) ],[ VERSIONMAPLDFLAGS="" AC_MSG_RESULT(no) ]) AC_SUBST(VERSIONMAPLDFLAGS) dnl Check for mnt_mountp in struct mnttab AC_MSG_CHECKING([for mnt_mountp in struct mnttab]) AC_COMPILE_IFELSE([dnl AC_LANG_PROGRAM([[ #if defined(HAVE_SYS_MNTENT_H) && defined(HAVE_SYS_MNTTAB_H) # include # include #endif ]], [[ struct mnttab mt; mt.mnt_mountp; ]])dnl ],[ AC_DEFINE(HAVE_MNTTAB,1,whether struct mnttag has mnt_mountp field) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) ]) dnl Checks for library functions. AC_CHECK_FUNCS(setmntent endmntent strerror snprintf vsnprintf flock) dnl Check if TIOCM_RTS is included in one of several possible files AC_TRY_COMPILE([#include ], [int foo = TIOCM_RTS;], AC_DEFINE(HAVE_RTS_IOCTL,1,[Define if you have TIOCM_RTS.])) AC_TRY_COMPILE([#include ], [int foo = TIOCM_RTS;], AC_DEFINE(HAVE_RTS_IOCTL,1,[Define if you have TIOCM_RTS.])) AC_TRY_COMPILE([#include ], [int foo = TIOCM_RTS;], AC_DEFINE(HAVE_RTS_IOCTL,1,[Define if you have TIOCM_TRS.])) AC_TRY_COMPILE([#include ], [int foo = TIOCM_RTS;], AC_DEFINE(HAVE_RTS_IOCTL,1,[Define if you have TIOCM_TRS.])) # Check for va_copy() GP_VA_COPY dnl --------------------------------------------------------------------------- dnl serial dnl --------------------------------------------------------------------------- serial_msg=yes have_serial=true try_ttylock=true try_lockdev=true try_resmgr=true if test "$ac_cv_header_sgtty_h" = "no" then have_serial=false serial_msg=no fi AC_ARG_ENABLE([serial], [AS_HELP_STRING([--disable-serial], [do not compile in SERIAL support])], [ if test x$enableval = xno; then have_serial=false serial_msg=no try_ttylock=false try_lockdev=false try_resmgr=false fi ]) if $have_serial; then IOLIB_LIST="$IOLIB_LIST serial" AC_DEFINE([HAVE_SERIAL],1,[Whether you have serial support enabled]) fi GP_CONFIG_MSG([Serial ports]) GP_CONFIG_MSG([Serial support],[$serial_msg]) SERIAL_LIBS="" if $have_serial; then dnl ----------------------------------------- dnl Serial port locking: We try to use either dnl (1) ttylock.h dnl (2) lockdev.h dnl ----------------------------------------- AC_DEFUN([GP_SERLOCK],[dnl # $0([$1]) AC_ARG_ENABLE([$1], [AS_HELP_STRING([--disable-][$1], [do not use ][$1][ library]) ],[ if test x$enableval = xno; then try_[$1]=false fi ]) ])dnl GP_SERLOCK([ttylock])dnl GP_SERLOCK([lockdev])dnl ttylock_msg=no if $try_ttylock; then AC_CHECK_HEADER([lockdev.h]) AC_CHECK_HEADER([ttylock.h],[ lockdev_result="no" AC_TRY_LINK([#include ],[ttylocked ("/dev/foo");],[ lockdev_result="no" AC_DEFINE(HAVE_TTYLOCK,1,[Define if you have ttylock based tty locking.]) ttylock_msg=yes try_lockdev=false, save_LIBS="$LIBS" LIBS="$LIBS -llockdev" AC_TRY_LINK([#include ],[ttylocked ("/dev/foo");],[ lockdev_result="yes" AC_DEFINE(HAVE_TTYLOCK,1,[Define if you have ttylock based tty locking.]) ttylock_msg=yes try_lockdev=false SERIAL_LIBS=-llockdev ]) LIBS="$save_LIBS" ]) AC_MSG_CHECKING([if ttylock needs lockdev]) AC_MSG_RESULT([${lockdev_result}]) ],[],[#ifdef HAVE_LOCKDEV_H # include #endif ]) fi GP_CONFIG_MSG([ttylock locking],[${ttylock_msg}]) lockdev_msg=no if $try_lockdev; then AC_CHECK_LIB(lockdev, dev_lock,[ AC_CHECK_HEADER(lockdev.h,[ AC_DEFINE(HAVE_LOCKDEV,1,[Define if you have dev_lock/lockdev based locking.]) lockdev_msg=yes SERIAL_LIBS=-llockdev ]) ]) fi GP_CONFIG_MSG([lockdev locking],[${lockdev_msg}]) fi # have_serial AC_SUBST([SERIAL_LIBS]) dnl --------------------------------------------------------------------------- dnl libusb dnl --------------------------------------------------------------------------- dnl libpthread is dynamically linked by libusb, which is dynamically loaded dnl but newer Linux systems need it on startup, not later. So link libgphoto2_port dnl against libpthread AC_CHECK_LIB(pthread, pthread_create) dnl --------------------------------------------------------------------------- dnl libusb1 dnl --------------------------------------------------------------------------- GP_CONFIG_MSG([USB ports]) GP_CHECK_LIBRARY([LIBUSB1],[libusb-1.0],[>= 1.0.0], [libusb.h],[libusb_init],[ case "$host" in *-*-mingw* | *-*-cygwin* | *-*-msvc* ) IOLIB_LIST="$IOLIB_LIST usb1" ;; *) IOLIB_LIST="$IOLIB_LIST usb1 usbdiskdirect usbscsi" ;; esac # only in libusbx? but not in traditional libusb 1.0 # note that the library is not always named libusb-1.0.so , e.g. on freebsd it is not. save_LIBS="$LIBS" LIBS="$LIBS $LIBUSB1_LIBS" AC_CHECK_FUNC(libusb_strerror, [ AC_DEFINE(HAVE_LIBUSB_STRERROR,1,[Define if libusb-1.0 has libusb_strerror]) ]) LIBS="$save_LIBS" ],[], [default-on], [http://libusb.sourceforge.net/] ) # We select the old libusb 0 only if we are not doing libusb1 GP_CHECK_LIBRARY([LIBUSB],[libusb],[>= 0.1.5], [usb.h],[usb_open],[ case "$host" in *-*-mingw* | *-*-cygwin* | *-*-msvc* ) dnl Windows itself has usb.h we mis-detect, in that case remove access to the other usb.h IOLIB_LIST="$IOLIB_LIST usb" ;; *) if test "x$have_LIBUSB1" != xyes; then IOLIB_LIST="$IOLIB_LIST usb usbdiskdirect usbscsi" else GP_CONFIG_MSG([libusb0 support],[detected, but disabled (libusb1 support is enabled)]) fi ;; esac ],[], [default-on], [http://libusb.sourceforge.net/] ) dnl depends on libusb's availability GP_UDEV([test "x$have_LIBUSB" = xyes -o "x$have_LIBUSB1" = xyes]) AC_ARG_ENABLE([disk], AS_HELP_STRING([--disable-disk], [disable the 'disk' port driver]), ,enable_disk=yes) dnl disk port also works everywhere, but it's not really necessary if test "x$enable_disk" = "xyes"; then IOLIB_LIST="$IOLIB_LIST disk" fi AC_ARG_ENABLE([ptpip], AS_HELP_STRING([--disable-ptpip], [disable the 'ptpip' port driver for TCP/IP connected PTP cameras]), ,enable_ptpip=yes) dnl ptpip - works 'everywhere' with TCP/IP stack. if test "x$enable_ptpip" = "xyes"; then IOLIB_LIST="$IOLIB_LIST ptpip" fi # ---------------------------------------------------------------------- # Define IOLIB stuff # ---------------------------------------------------------------------- AC_SUBST(IOLIB_LIST) for x in ${IOLIB_LIST}; do IOLIB_LTLIST="${IOLIB_LTLIST} ${x}.la" done AC_SUBST(IOLIB_LTLIST) AC_SUBST([iolibdir],["\$(libdir)/\$(PACKAGE_TARNAME)/\$(VERSION)"]) AM_CPPFLAGS="$AM_CPPFLAGS -DIOLIBS=\\\"${iolibdir}\\\"" dnl -------------------------------------------------------------------- dnl guess directory to install *.pc into dnl -------------------------------------------------------------------- pkgconfigdir='${libdir}/pkgconfig' AC_SUBST([pkgconfigdir]) dnl ---------------------------------------------------------------------- dnl GNU regex? dnl ---------------------------------------------------------------------- AC_CHECK_FUNC(re_compile_pattern, AC_DEFINE(HAVE_GNU_REGEX,1,[Define if you have GNU regex.]) ) dnl ---------------------------------------------------------------------- dnl disable debugging if requested dnl ---------------------------------------------------------------------- AC_ARG_ENABLE([debug], AS_HELP_STRING([--disable-debug],[do not include debugging code]), [ if test "$enableval" = "no"; then AC_DEFINE(DISABLE_DEBUGGING,1,[Define if you want to disabled debugging.]) fi ]) # ---------------------------------------------------------------------- # gtk-doc? # ---------------------------------------------------------------------- GP_CONFIG_MSG([Documentation]) GP_CHECK_DOC_DIR()dnl GP_BUILD_GTK_DOCS()dnl dnl --------------------------------------------------------------------------- dnl Turn on all warnings when using gcc dnl --------------------------------------------------------------------------- if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -Wall" CFLAGS="$CFLAGS -Wmissing-declarations -Wmissing-prototypes" fi # Activate internal code AM_CPPFLAGS="$AM_CPPFLAGS -D_GPHOTO2_INTERNAL_CODE" # CPPFLAGS: C PreProcessor flags AC_SUBST([AM_CPPFLAGS]) # CFLAGS: C compiler flags AC_SUBST([AM_CFLAGS]) # CXXFLAGS: C++ compiler flags AC_SUBST([AM_CXXFLAGS]) # LDFLAGS: Linker flags AC_SUBST([AM_LDFLAGS]) # --------------------------------------------------------------------------- # Create output files # --------------------------------------------------------------------------- AC_CONFIG_FILES([ Makefile po/Makefile.in libgphoto2_port/Makefile libgphoto2_port.pc libgphoto2_port-uninstalled.pc gphoto2-port-config test/Makefile doc/Makefile gphoto-m4/Makefile ]) AC_OUTPUT GP_CONFIG_OUTPUT # End of file. libgphoto2-2.5.9/libgphoto2_port/auto-m4/0000755000175000001440000000000012623156263015206 500000000000000libgphoto2-2.5.9/libgphoto2_port/auto-m4/ltoptions.m40000644000175000001440000003426212615454327017435 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 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 8 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_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT 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* | *-*-cegcc*) 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], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [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_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --with-aix-soname flag, and support the `aix-soname=aix' # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT # is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_WITH([aix-soname], [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) with_aix_soname=$lt_cv_with_aix_soname]) AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _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@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [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], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## 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])]) libgphoto2-2.5.9/libgphoto2_port/auto-m4/ltversion.m40000644000175000001440000000127312615454327017423 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 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. # @configure_input@ # serial 4179 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.6]) m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) libgphoto2-2.5.9/libgphoto2_port/auto-m4/po.m40000644000175000001440000004265212557123756016026 00000000000000# po.m4 serial 3 (gettext-0.14) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AM_NLS])dnl dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU msgfmt. if test "$GMSGFMT" != ":"; then dnl If it is no GNU msgfmt we define it as : so that the dnl Makefiles still can work. if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` AC_MSG_RESULT( [found $GMSGFMT program is not GNU msgfmt; ignore it]) GMSGFMT=":" fi fi dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po fi AC_OUTPUT_COMMANDS([ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" < #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) libgphoto2-2.5.9/libgphoto2_port/auto-m4/libtool.m40000644000175000001440000112475312615454327017054 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 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) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # 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 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 this program. If not, see . ]) # serial 58 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.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl 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 _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) 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' 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_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _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 AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl 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_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that 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 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 set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=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_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify 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' ]) # _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 ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # 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], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _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], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [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 "$][$1" | $SED "$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 "$" | $SED "$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' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) 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 \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_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]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false 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) 2011 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. lt_cl_success=: test yes = "$silent" && 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) ])# 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 that 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 # Generated automatically by $as_me ($PACKAGE) $VERSION # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _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 set != "${COLLECT_NAMES+set}"; 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 '$q' "$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' 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)], [Go], [_LT_LANG(GO)], [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 m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _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([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) 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)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) 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], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _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 there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; 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 ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) 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 yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; 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" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # 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 if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _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 yes != "$lt_cv_apple_cc_single_mod"; 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([TAGNAME]) # ---------------------------------- # 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. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`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 "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _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 no = "$enable_libtool_lock" || 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 what ABI is being produced by ac_compile, and set mode # options accordingly. 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 what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; 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* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. 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*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; 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" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; 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 yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. 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*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) 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_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR 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 bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _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_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _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" ## exclude from sc_useless_quotes_in_assignment # 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:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 yes = "[$]$2"; 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 "$_lt_linker_boilerplate" | $SED '/^$/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 yes = "[$]$2"; 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* | cegcc*) # 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; ;; mint*) # On MiNT this can take a long time and run out of memory. 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; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # 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 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; 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" && \ test undefined != "$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`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 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 yes = "$cross_compiling"; 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 $LINENO "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 /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 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; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return 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 yes != "$enable_dlopen"; 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* | cegcc*) 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 ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) 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 no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && 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 yes = "$lt_cv_dlopen_self"; 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:$LINENO: $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:$LINENO: \$? = $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 "$_lt_compiler_boilerplate" | $SED '/^$/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 no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; 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 no = "$hard_links"; 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 where 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 yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; 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 relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; 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_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _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_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # 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 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # 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` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac 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" elif test -n "$lt_multi_os_dir"; then 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; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` 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 AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; 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 # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # 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' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # 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' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac 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=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $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 # correct to gnu/linux during the next big refactor 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* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc 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' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; 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 dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. 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 # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # 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' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # 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 # correct to gnu/linux during the next big refactor 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 ;; 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[[23]].*) 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$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' 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 ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" 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=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' 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 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; 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' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor 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 yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor 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 ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor 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 AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no 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], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # 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 # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) 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;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 # correct to gnu/linux during the next big refactor 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* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi 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 shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec 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' ;; 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 # correct to gnu/linux during the next big refactor 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 yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor 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 # correct to gnu/linux during the next big refactor 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=sco 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 yes = "$with_gnu_ld"; 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_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 # correct to gnu/linux during the next big refactor 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 no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _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([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _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], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that 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 that 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 m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; 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 yes = "$with_gnu_ld"; 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 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [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 # that 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 # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; 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 ;; haiku*) 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])(-bit)?( [LM]SB)? 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 glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; 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 ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi 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_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob 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 # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) 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 no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi 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:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $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:$LINENO: 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_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-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 yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _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([AC_PROG_AWK])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* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; 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 if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= 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"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$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"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/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, # D for any global variable and I for any imported 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};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,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 lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # 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 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #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. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$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_globsym_save_LIBS=$LIBS lt_globsym_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_globsym_save_LIBS CFLAGS=$lt_globsym_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 yes = "$pipe_works"; 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 # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' 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_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _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_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _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)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; 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* | cegcc*) # 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']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; 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)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $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 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _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 ia64 = "$host_cpu"; 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 ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # 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']) ;; 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 ia64 != "$host_cpu"; 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 | kopensolaris*-gnu | 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' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _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* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _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* | sunCC*) # 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 yes = "$GCC"; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; 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* | cegcc*) # 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']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; 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' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +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 case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; 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 ia64 = "$host_cpu"; 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 ;; 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' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # 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']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; 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 | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny 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)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # 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* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _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\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # 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)='' ;; *Sun\ F* | *Sun*Fortran*) _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 ' ;; *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,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; 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* | sunf77* | sunf90* | sunf95*) _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 that 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_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # 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]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # 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_PATH_MANIFEST_TOOL])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' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] 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 GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX 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") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ 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_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* | cegcc*) # 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 yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; 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 | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[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 ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, 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 install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _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* | cegcc*) # _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(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _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/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] 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, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); 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 ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; 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 | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; 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 no = "$tmp_diet" then tmp_addflag=' $pic_flag' 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; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # 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; func_echo_all \"$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' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; 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; func_echo_all \"$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 yes = "$supports_anon_versioning"; 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 tcc*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # 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)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; 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 $linker_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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $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 cannot *** 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 $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $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 no = "$_LT_TAGVAR(ld_shlibs, $1)"; 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 yes = "$GCC" && 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 ia64 = "$host_cpu"; 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 GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX 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") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; 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 yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; 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([$1]) _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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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([$1]) _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' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' 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* | cegcc*) # 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. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # 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 $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _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' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _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 `func_echo_all "$deplibs" | $SED '\''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(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; 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 ;; # 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 $pic_flag -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 yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$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 "x$output_objdir/$soname" = "x$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 yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $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 no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$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 yes,no = "$GCC,$with_gnu_ld"; 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 $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $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' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_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 no = "$with_gnu_ld"; 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 yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $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. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -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" && func_echo_all "-set_version $verstring"` -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 ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; 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* | bitrig*) 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__`"; 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 _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' 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 shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) if test yes = "$GCC"; 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" && func_echo_all "$wl-set_version $wl$verstring"` $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" && func_echo_all "-set_version $verstring"` -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 yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $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" && func_echo_all "-set_version $verstring"` -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 "-set_version $verstring"` -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 yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $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 $pic_flag $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 yes = "$GCC"; 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 sequent = "$host_vendor"; 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 yes = "$GCC"; 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 CANNOT 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 yes = "$GCC"; 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 sni = "$host_vendor"; 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 no = "$_LT_TAGVAR(ld_shlibs, $1)" && 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 yes,yes = "$GCC,$enable_shared"; 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_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$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_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_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* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_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_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([], [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([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _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 ## 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_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 what 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 no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac 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 yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _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], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi 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_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(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_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 yes != "$_lt_caught_CXX_error"; 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_CFLAGS=$CFLAGS 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++"} CFLAGS=$CXXFLAGS 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 yes = "$GXX"; 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 yes = "$GXX"; 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 yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -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 -v "^Configured with:" | $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 ia64 = "$host_cpu"; 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive 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 if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; 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 yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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([$1]) _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' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' 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* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # 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 _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # 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 $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _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(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _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, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); 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 ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; 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 ;; freebsd2.*) # 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 ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; 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 "x$output_objdir/$soname" = "x$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; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$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 no = "$with_gnu_ld"; 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; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; 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 $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $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" && func_echo_all "-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_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -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 | kopensolaris*-gnu | 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; func_echo_all "$list"' _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 | sort | $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 | sort | $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 | sort | $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 | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above 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; func_echo_all \"$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=`func_echo_all "$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; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # 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 yes = "$supports_anon_versioning"; 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; func_echo_all \"$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='func_echo_all' # 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 ;; openbsd* | bitrig*) 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__`"; 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=func_echo_all 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" && func_echo_all "$wl-set_version $verstring"` -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" && func_echo_all "-set_version $verstring"` -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 "-set_version $verstring"` -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=`func_echo_all "$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; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; 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" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $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 -v "^Configured with:" | $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* | sunCC*) # 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='func_echo_all' # 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 yes,no = "$GXX,$with_gnu_ld"; 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 $pic_flag -nostdlib $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 $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -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 -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $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 $wl-h $wl$soname -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 -v "^Configured with:" | $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 CANNOT 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(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _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 no = "$_LT_TAGVAR(ld_shlibs, $1)" && 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 CFLAGS=$lt_save_CFLAGS 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 yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf 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). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _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 AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])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 ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac 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 $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev 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 prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$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 no = "$pre_test_object_deps_done"; 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 CFLAGS=$_lt_libdeps_save_CFLAGS # 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)= ;; 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_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_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _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_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(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_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 yes != "$_lt_disable_F77"; 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 lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS 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 no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac 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 yes = "$enable_shared" || 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 CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _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_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _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_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(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_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 yes != "$_lt_disable_FC"; 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 lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS 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 no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac 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 yes = "$enable_shared" || 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 CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" 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_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS 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 _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_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... 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 CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # 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_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go 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 _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_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... 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 CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_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_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= 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 CFLAGS=$lt_save_CFLAGS ])# _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 set = "${GCJFLAGS+set}" || 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_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # 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_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _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 10 -lt "$lt_ac_count" && 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], [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_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS libgphoto2-2.5.9/libgphoto2_port/auto-m4/progtest.m40000644000175000001440000000563412557123756017256 00000000000000# progtest.m4 serial 3 (gettext-0.12) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) libgphoto2-2.5.9/libgphoto2_port/auto-m4/lib-link.m40000644000175000001440000005534312557123756017112 00000000000000# lib-link.m4 serial 4 (gettext-0.12) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, dnl hardcode_direct, hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib$1-prefix], [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib$1-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) libgphoto2-2.5.9/libgphoto2_port/auto-m4/gettext.m40000644000175000001440000004513012557123756017066 00000000000000# gettext.m4 serial 28 (gettext-0.13) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define(gt_included_intl, ifelse([$1], [external], [no], [yes])) define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Set USE_NLS. AM_NLS ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. dnl Add a version number to the cache macros. define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, [AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], gt_cv_func_gnugettext_libc=yes, gt_cv_func_gnugettext_libc=no)]) if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], gt_cv_func_gnugettext_libintl, [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], gt_cv_func_gnugettext_libintl=yes, gt_cv_func_gnugettext_libintl=no) dnl Now see whether libintl exists and depends on libiconv. if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext_libintl=yes ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if test "$gt_cv_func_gnugettext_libc" = "yes" \ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl For backward compatibility. Some Makefiles may be using this. if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST(INTLOBJS) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl Checks for all prerequisites of the intl subdirectory, dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. AC_DEFUN([AM_INTL_SUBDIR], [ AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_ISC_POSIX])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_C_CONST])dnl AC_REQUIRE([bh_C_SIGNED])dnl AC_REQUIRE([AC_C_INLINE])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([jm_AC_TYPE_LONG_LONG])dnl AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl AC_REQUIRE([gt_TYPE_WCHAR_T])dnl AC_REQUIRE([gt_TYPE_WINT_T])dnl AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) AC_REQUIRE([gt_TYPE_INTMAX_T]) AC_REQUIRE([gt_PRINTF_POSIX]) AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_REQUIRE([jm_GLIBC21])dnl AC_REQUIRE([gt_INTDIV0])dnl AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl AC_REQUIRE([gt_INTTYPES_PRI])dnl AC_REQUIRE([gl_XSIZE])dnl AC_CHECK_TYPE([ptrdiff_t], , [AC_DEFINE([ptrdiff_t], [long], [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) ]) AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ __fsetlocking]) dnl Use the _snprintf function only if it is declared (because on NetBSD it dnl is defined as a weak alias of snprintf; we prefer to use the latter). gt_CHECK_DECL(_snprintf, [#include ]) gt_CHECK_DECL(_snwprintf, [#include ]) dnl Use the *_unlocked functions only if they are declared. dnl (because some of them were defined without being declared in Solaris dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built dnl on Solaris 2.5.1 to run on Solaris 2.6). dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. gt_CHECK_DECL(feof_unlocked, [#include ]) gt_CHECK_DECL(fgets_unlocked, [#include ]) gt_CHECK_DECL(getc_unlocked, [#include ]) case $gt_cv_func_printf_posix in *yes) HAVE_POSIX_PRINTF=1 ;; *) HAVE_POSIX_PRINTF=0 ;; esac AC_SUBST([HAVE_POSIX_PRINTF]) if test "$ac_cv_func_asprintf" = yes; then HAVE_ASPRINTF=1 else HAVE_ASPRINTF=0 fi AC_SUBST([HAVE_ASPRINTF]) if test "$ac_cv_func_snprintf" = yes; then HAVE_SNPRINTF=1 else HAVE_SNPRINTF=0 fi AC_SUBST([HAVE_SNPRINTF]) if test "$ac_cv_func_wprintf" = yes; then HAVE_WPRINTF=1 else HAVE_WPRINTF=0 fi AC_SUBST([HAVE_WPRINTF]) AM_ICONV AM_LANGINFO_CODESET if test $ac_cv_header_locale_h = yes; then AM_LC_MESSAGES fi dnl intl/plural.c is generated from intl/plural.y. It requires bison, dnl because plural.y uses bison specific features. It requires at least dnl bison-1.26 because earlier versions generate a plural.c that doesn't dnl compile. dnl bison is only needed for the maintainer (who touches plural.y). But in dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put dnl the rule in general Makefile. Now, some people carelessly touch the dnl files or have a broken "make" program, hence the plural.c rule will dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not dnl present or too old. AC_CHECK_PROGS([INTLBISON], [bison]) if test -z "$INTLBISON"; then ac_verc_fail=yes else dnl Found it, now check the version. AC_MSG_CHECKING([version of bison]) changequote(<<,>>)dnl ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) changequote([,])dnl ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac AC_MSG_RESULT([$ac_prog_version]) fi if test $ac_verc_fail = yes; then INTLBISON=: fi ]) dnl gt_CHECK_DECL(FUNC, INCLUDES) dnl Check whether a function is declared. AC_DEFUN([gt_CHECK_DECL], [ AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, [AC_TRY_COMPILE([$2], [ #ifndef $1 char *p = (char *) $1; #endif ], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) if test $ac_cv_have_decl_$1 = yes; then gt_value=1 else gt_value=0 fi AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) libgphoto2-2.5.9/libgphoto2_port/auto-m4/lib-ld.m40000644000175000001440000000675612557123756016560 00000000000000# lib-ld.m4 serial 3 (gettext-0.13) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 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 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 GCC]) 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. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path 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(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) libgphoto2-2.5.9/libgphoto2_port/auto-m4/nls.m40000644000175000001440000000350512557123756016176 00000000000000# nls.m4 serial 1 (gettext-0.12) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ]) AC_DEFUN([AM_MKINSTALLDIRS], [ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but $(top_srcdir). dnl Try to locate it. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) ]) libgphoto2-2.5.9/libgphoto2_port/auto-m4/lib-prefix.m40000644000175000001440000001250712557123756017445 00000000000000# lib-prefix.m4 serial 3 (gettext-0.13) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) libgphoto2-2.5.9/libgphoto2_port/auto-m4/ltsugar.m40000644000175000001440000001044012615454327017053 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 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 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. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # 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 ]) libgphoto2-2.5.9/libgphoto2_port/INSTALL0000644000175000001440000003661012615454335014701 00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command `./configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. libgphoto2-2.5.9/libgphoto2_port/po/0000755000175000001440000000000012623156265014340 500000000000000libgphoto2-2.5.9/libgphoto2_port/po/libgphoto2_port-12.pot0000644000175000001440000001737112623156264020351 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Lutz Mueller and others # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "" #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "" #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "" #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "" #: serial/unix.c:583 msgid "Parity error." msgstr "" #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "" #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "" #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "" #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "" #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "" #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "" #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "" #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "" #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "" #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "" #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "" #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "" #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "" #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "" #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "" #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "" #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "" #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "" #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "" #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "" #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "" #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "" #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "" #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "" libgphoto2-2.5.9/libgphoto2_port/po/insert-header.sin0000644000175000001440000000124012557123756017527 00000000000000# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } libgphoto2-2.5.9/libgphoto2_port/po/ja.gmo0000644000175000001440000001274612623156265015370 00000000000000Þ•1¤C,89Hb5œyÒjL3·ë(  I6j:¡<Ü"</\Œ¨À#Ü !; U b ny‚ ¡ ¯½Ì2æ% ;? +{ § 0¾ ï ý  , B G T ŸX ø $ 19 :k =¦ Ää °© LZE§?íI-=wHµkþjQêL<4‰¾'Ý!6'!^$€1¥× éô 3M!i‹6¤KÛ0'OX@¨.éF_r…˜!«ÍÑâ!-.*/#%10' $ , &+()  "Bad parametersCamera is already in use.Could not claim the USB deviceCould not close '%s' (%m).Could not detach kernel driver '%s' of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not lock device '%s'Could not lock the deviceCould not query kernel driver of device.Could not set the baudrate to %dDevice '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to open '%s' (%m).Generic PortI/O problemMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowProject-Id-Version: libgphoto2_port 2.4.7 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2009-09-23 04:04+0900 Last-Translator: Tadashi Jokagi Language-Team: Japanese Language: ja MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ãŠã‹ã—ãªãƒ‘ラメータ既ã«ã‚«ãƒ¡ãƒ©ã¯ä½¿ç”¨ä¸­ã§ã™ã€‚USB デãƒã‚¤ã‚¹ã¨æ–­å®šã§ãã¾ã›ã‚“ã§ã—ãŸ'%s' ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。Kernel ドライム'%s' を解放ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚USB デãƒã‚¤ã‚¹ (Class: 0x%x, SubClass: 0x%x, プロトコル: 0x%x) ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ã“ã®ãƒ‡ãƒã‚¤ã‚¹ãŒã‚³ãƒ³ãƒ”ãƒ¥ãƒ¼ã‚¿ã«æŽ¥ç¶šã•れã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ä¸‹ã•ã„。USB デãƒã‚¤ã‚¹ (ベンダー:0x%x 製å“: 0x%x) ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ã“ã®ãƒ‡ãƒã‚¤ã‚¹ãŒã‚³ãƒ³ãƒ”ãƒ¥ãƒ¼ã‚¿ã«æŽ¥ç¶šã•れã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ä¸‹ã•ã„。USB ãƒãƒ¼ãƒˆä¸Šã«æŒ‡å®šã—ãŸãƒ‡ãƒã‚¤ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸãƒ‡ãƒã‚¤ã‚¹ '%s' をロックã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸãƒ‡ãƒã‚¤ã‚¹ã‚’ロックã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸKernel ã®ãƒ‡ãƒã‚¤ã‚¹ãƒ»ãƒ‰ãƒ©ã‚¤ãƒã‚’照会ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ボーレートを %d ã«ã‚»ãƒƒãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚デãƒã‚¤ã‚¹ '%s' ãŒãƒ­ãƒƒã‚¯ã§ãã¾ã›ã‚“ (dev_lock ã®è¿”り値 %d)デãƒã‚¤ã‚¹ '%s' ã®ãƒ­ãƒƒã‚¯ã‚’解放ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(dev_unlock ã®è¿”り値 %d)デãƒã‚¤ã‚¹ '%s' ãŒä»–ã®ãƒ—ロセス (PID:%d) ãŒãƒ­ãƒƒã‚¯ã—ã¦ã„ã‚‹ã®ã§è§£æ”¾ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸã€‚デãƒã‚¤ã‚¹ '%s' ã®ãƒ­ãƒƒã‚¯ã‚’解放ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸã€‚デãƒã‚¤ã‚¹ '%s' ã¯ä»–ã®ãƒ—ロセス (PID:%d) ãŒãƒ­ãƒƒã‚¯ã—ã¦ã„ã¾ã™USB ãƒãƒ¼ãƒˆä¸Šã§ Halt 状態ã®ã‚¯ãƒªã‚¢ã‚¨ãƒ©ãƒ¼ãƒãƒ¼ãƒˆã®åˆæœŸåŒ–エラーライブラリã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ãƒãƒ¼ãƒˆã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã‚·ãƒªã‚¢ãƒ«ãƒãƒ¼ãƒˆã®ã‚¹ãƒ”ードã®è¨­å®šã‚¨ãƒ©ãƒ¼ãƒãƒ¼ãƒˆè¨­å®šã®æ›´æ–°ã‚¨ãƒ©ãƒ¼ãƒãƒ¼ãƒˆã¸ã®æ›¸ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼'%s' ã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—㟠(%m)。Generic ãƒãƒ¼ãƒˆI/O å•題メディア「%sã€ã‚¨ãƒ©ãƒ¼ãªã—有効ãªã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚りã¾ã›ã‚“メモリãŒè¶³ã‚Šã¾ã›ã‚“パリティ・エラーã§ã™ã€‚シリアルãƒãƒ¼ãƒˆ %iシリアルãƒãƒ¼ãƒˆã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“ãã®æ“作 '%s' ã¯ã“ã®ãƒ‡ãƒã‚¤ã‚¹ã§ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“ãƒãƒ¼ãƒˆãŒæœªã åˆæœŸåŒ–ã•れã¦ã„ã¾ã›ã‚“æä¾›ãƒ™ãƒ³ãƒ€ãƒ¼ã¾ãŸã¯è£½å“ ID (0x%x,0x%x) ã¯æ­£ã—ãã‚りã¾ã›ã‚“。ãƒãƒ¼ãƒˆã‹ã‚‰ã®èª­ã¿è¾¼ã¿/書ãè¾¼ã¿ã§ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆUSB ãƒãƒ¼ãƒˆã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“予期ã—ãªã„パリティ応答シーケンス 0xff 0x%02x ã§ã™ã€‚䏿˜Žãªã‚¨ãƒ©ãƒ¼ä¸æ˜Žãªãƒ”ン %i䏿˜Žãªãƒãƒ¼ãƒˆä¸æ˜Žãªã‚¨ãƒ©ãƒ¼ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ãªã„æ“作高libhal エラー低libgphoto2-2.5.9/libgphoto2_port/po/Rules-quot0000644000175000001440000000337612557123756016301 00000000000000# Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header libgphoto2-2.5.9/libgphoto2_port/po/zh_CN.gmo0000644000175000001440000000707212623156265015773 00000000000000Þ•*l;¼¨©¸×yòjl3× & @6a:˜<Ó"3/SƒŸ·#Ó ÷2 L Yen  ›©¸2Ò%;++g“0ª Ûé ù  . ® ¹ Ë Mà F. u “ ¦ ³ $Í &ò 8 R &g Ž ® ½ È Ó ä õ    ' . A J U ] h  +Ž º Í Ý þ   - *$ #%'(& ) !" Bad parametersCould not claim the USB deviceCould not close '%s' (%m).Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not lock device '%s'Could not lock the deviceCould not set the baudrate to %dDevice '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to open '%s' (%m).Generic PortI/O problemNo errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationProject-Id-Version: libgphoto2_port Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2002-11-21 13:11+0800 Last-Translator: Wang Li Language-Team: zh_CN Language: MIME-Version: 1.0 Content-Type: text/plain; charset=gb2312 Content-Transfer-Encoding: 8bit ´íÎóµÄ²ÎÊýÎÞ·¨ÇëÇó USB É豸ÎÞ·¨¹Ø±Õ¡®%s¡¯(%m)¡£ÎÞ·¨ÕÒµ½ USB É豸 (Àà 0x%x¡¢×ÓÀà 0x%x¡¢Ð­Òé 0x%x)¡£È·ÐŸÃÉ豸ÒÑÁ¬½Óµ½¼ÆËã»ú¡£ÎÞ·¨ÕÒµ½ USB É豸 (¹©Ó¦ÉÌ 0x%x¡¢²úÆ· 0x%x)¡£È·ÐŸÃÉ豸ÒÑÁ¬½Óµ½¼ÆËã»ú¡£ÎÞ·¨ÔÚ USB ¶Ë¿ÚÕÒµ½ÇëÇóµÄÉ豸ÎÞ·¨Ëø¶¨É豸¡®%s¡¯ÎÞ·¨Ëø¶¨É豸ÎÞ·¨ÉèÖý«²¨ÌØÂÊÉèÖÃΪ %dÎÞ·¨Ëø¶¨É豸¡®%s¡¯(dev_lock ·µ»Ø %d)ÎÞ·¨½âËøÉ豸¡®%s¡¯(dev_unlock ·µ»Ø %d)ÓÉÓÚÉ豸¡®%s¡¯Òѱ»½ø³ÌºÅΪ %d µÄ½ø³ÌËø¶¨£¬ËùÒÔÎÞ·¨Ëø¶¨¡£ÎÞ·¨½âËøÉ豸¡®%s¡¯¡£É豸¡®%s¡¯ÒѾ­±»½øÐкÅΪ %d µÄ½ø³ÌËø¶¨Çå³ý USB ¶Ë¿ÚµÄÒ»¸öÖÐÖ¹Ìõ¼þ³ö´í³õʼ»¯¶Ë¿Ú³ö´í×°Èë¿â³ö´í¶Á¶Ë¿Ú³ö´íÉèÖô®¿ÚËٶȳö´í¸üж˿ÚÉèÖóö´íд¶Ë¿Ú³ö´í´ò¿ª¡®%s¡¯(%m)ʧ°Ü¡£Í¨Óö˿ÚI/O ÎÊÌâÎÞ´íÎóûÓпÉÓõĴíÎóÃèÊöÄÚ´æºÄ¾¡ÆæÅ¼´íÎó¡£´®¿Ú %i²»Ö§³Ö´®¿Ú¸ÃÉ豸²»Ö§³Ö²Ù×÷¡®%s¡¯¶Ë¿ÚÉÐδ³õʼ»¯¸ø³öµÄ¹©Ó¦ÉÌ»ò²úÆ· id (0x%x¡¢0x%x) ²»ºÏ·¨¡£¶ÁÈ¡»òдÈë¶Ë¿Ú³¬Ê±²»Ö§³Ö USB ½Ó¿ÚÒâÍâµÄÆæÅ¼Ó¦´ðÐòÁÐ 0xff 0x%02x¡£Î´ÖªµÄ´íÎóδ֪²å½Å %i¡£Î´Öª¶Ë¿ÚδָÃ÷µÄ´íÎó²»Ö§³ÖµÄ²Ù×÷libgphoto2-2.5.9/libgphoto2_port/po/zh_TW.po0000644000175000001440000002450012623156265015654 00000000000000# Traditional Chinese Messages for libgphoto2_port. # Copyright (C) 2002, 05 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # Wang Li , 2002. # Wei-Lun Chao , 2005, 2013, 2015. # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.5.8\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2015-10-08 12:39+0800\n" "Last-Translator: Wei-Lun Chao \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "通用通訊埠" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "無錯誤" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "未指明的錯誤" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "I/O å•題" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "ä¸ç•¶çš„åƒæ•¸" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "䏿”¯æ´çš„æ“ä½œ" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "超出了固定é™åˆ¶" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "è®€å–æˆ–寫入通訊埠逾時" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "䏿”¯æ´åºåˆ—埠" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "䏿”¯æ´ USB 介é¢" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "䏿˜Žé€šè¨ŠåŸ " #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "記憶體耗盡" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "載入函å¼åº«æ™‚錯誤" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "åˆå§‹åŒ–通訊埠時錯誤" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "讀å–通訊埠時錯誤" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "寫入通訊埠時錯誤" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "更新通訊埠設定時錯誤" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "設定åºåˆ—埠速度時錯誤" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "清除 USB 通訊埠的一個中止æ¢ä»¶æ™‚錯誤" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "無法在 USB é€šè¨ŠåŸ æ‰¾åˆ°è¦æ±‚çš„è£ç½®" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "ç„¡æ³•è¦æ±‚ USB è£ç½®" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "無法鎖定è£ç½®" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "libhal 錯誤" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "䏿˜Žçš„錯誤" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "這個è£ç½®ä¸æ”¯æ´ %s æ“作" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "通訊埠尚未åˆå§‹åŒ–" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "低" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "高" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "沒有å¯ç”¨çš„錯誤æè¿°" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "媒體 %s" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "無法鎖定è£ç½® %s" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "è£ç½® %s 已經被行程編號為 %d 的行程鎖定" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "無法鎖定è£ç½® %s (dev_lock 回傳 %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "無法解鎖è£ç½® %s。" #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "由於è£ç½® %s 已被行程編號為 %d 的行程鎖定,所以無法解鎖。" #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "無法解鎖è£ç½® %s (dev_unlock 回傳 %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "åºåˆ—埠 %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "開啟 %s (%s) 時失敗。" #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "無法關閉 %s (%s)。" #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "無法寫入通訊埠 (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "奇嶿ª¢æŸ¥éŒ¯èª¤ã€‚" #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "æ„å¤–çš„å¥‡å¶æ‡‰ç­”åºåˆ— 0xff 0x%02x。" #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "䏿˜Žé‡è…³ %i。" #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "無法ç²å–é‡è…³ %i 的層級 (%s)。" #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "無法將é‡è…³ %i 的層級設定為 %i (%s)。" #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "ç„¡æ³•æ¸…ç† %s (%s)。" #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "無法將鮑率設定為 %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "USB 大é‡è²¯è—體直接 IO" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "開啟 %s (%m)失敗。" #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "無法關閉 %s (%m)。" #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "無法尋指到å移:%x æ–¼ %s (%m)。" #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "無法寫入 %s (%m)。" #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "無法讀å–自 %s (%m)。" #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "無法開啟 USB è£ç½® (%s)。" #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "照相機在使用中。" #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "ç„¡æ³•å¸æŽ›ç…§ç›¸æ©Ÿè£ç½®çš„æ ¸å¿ƒé©…å‹•ç¨‹å¼ %s。" #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "無法查詢è£ç½®çš„æ ¸å¿ƒé©…動程å¼ã€‚" #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "ç„¡æ³•è«‹æ±‚ä»‹é¢ %d (%s)ã€‚è«‹ç¢ºèªæ²’æœ‰å…¶å®ƒç¨‹å¼ (%s) 或核心模組 (例如 %s) 正在使用這" "個è£ç½®ï¼Œä¸¦ä¸”您有å°é€™å€‹è£ç½®çš„讀/寫權。" #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "MacOS PTPCamera æœå‹™" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "䏿˜Žçš„ libgphoto2 正使用程å¼" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "ç„¡æ³•é‡‹æ”¾ä»‹é¢ %d (%s)。" #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "無法é‡ç½® USB 通訊埠 (%s)。" #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "無法關閉 USB 通訊埠 (%s)。" #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "無法設定é…ç½® %d/%d (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "無法設定從 %d 到 %d 的補充設定 (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "æä¾›çš„å» å•†æˆ–ç”¢å“ id (0x%xã€0x%x) 䏿­£ç¢ºã€‚" #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "無法找到 USB è£ç½® (廠商 0x%xã€ç”¢å“ 0x%x)。請確èªé€™å€‹è£ç½®å·²é€£æŽ¥åˆ°é›»è…¦ã€‚" #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "無法找到 USB è£ç½® (類別 0x%xã€å­é¡ž 0x%xã€å”定 0x%x)。請確èªé€™å€‹è£ç½®å·²é€£æŽ¥åˆ°é›»" "腦。" #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "無法å¸é›¢ç…§ç›¸æ©Ÿè£ç½®çš„內核驅動程å¼ã€‚" #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "ç„¡æ³•é‡æ–°é™„接照相機è£ç½®çš„內核驅動程å¼ã€‚" #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "è£ç½® %s 已被å¦ä¸€å€‹æ‡‰ç”¨ç¨‹å¼éŽ–å®šã€‚" #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "鎖定 %s (%m) 時失敗。" #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "解除鎖定 %s (%m) 時失敗。" #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "USB 大é‡è²¯è—體原始 SCSI" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "ç„¡æ³•ç™¼é€ scsi 命令給:%s (%m)。" libgphoto2-2.5.9/libgphoto2_port/po/fr.gmo0000644000175000001440000002013512623156265015374 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an r¼“P.dÅ“4Y%Ž%´&ÚU9W”‘‚&9©$ã56>+u/¡8Ñ( 93,m.šAÉ= MI#—?»(û*$%ORuWÈi =ŠGÈBDS˜(¸á4û20c*‚$­'Ò-ú(GXhƒ ”#¡ÅØëúA([@„>Å%9*d8€¹É Þëý ! 2 &6 @,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port 2.5.3 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-01-11 09:27-0400 Last-Translator: David Prévot Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: Lokalize 1.5 Mauvais paramètresL'appareil photographique est déjà utilisé.Impossible d'utiliser l'interface %d (%s). Assurez-vous qu'aucun autre programme (%s) ou module du noyau (comme %s) n'utilisent le périphérique et que vous y avez accès en lecture et écriture.Impossible de communiquer avec le périphérique USBImpossible de fermer « %s » (%m).Impossible de fermer « %s » (%s).Impossible de fermer le port USB (%s).Impossible de détacher le pilote « %s » du noyau pour l'appareil photographique.Impossible de détacher le pilote de noyau de l'appareil.Impossible de trouver le périphérique USB (fabricant 0x%x, sous-classe 0x%x, produit 0x%x). Assurez-vous qu'il est bien connecté à l'ordinateur.Impossible de trouver le périphérique USB (fabricant 0x%x, produit 0x%x). Assurez-vous qu'il est bien connecté à l'ordinateur.Impossible de trouver l'appareil demandé sur le port USBImpossible de vider « %s » (%s).Impossible d'obtenir le niveau de la broche %i (%s).Impossible de verrouiller le périphérique « %s »Impossible de verrouiller le périphériqueImpossible d'ouvrir le périphérique USB (%s).Impossible de recevoir le pilote pour ce périphérique.Impossible de lire dans « %s » (%m).Impossible de rattacher le pilote de noyau de l'appareil.Impossible de libérer l'interface %d (%s).Impossible de réinitialiser le port USB (%s).Impossible de rechercher une position : %x dans « %s » (%m).Impossible d'envoyer une commande scsi à : « %s » (%m).Impossible de définir un paramètre alternatif (altsetting) de %d à %d (%s)Impossible de configurer %d/%d (%s)Impossible de configurer le niveau de la broche %i à %i (%s).Impossible de configurer le débit à %dImpossible d'écrire dans « %s » (%m).Impossible d'écrire sur le port (%s)Le périphérique « %s » n'a pas pu être verrouillé (dev_lock a renvoyé %d)Le périphérique « %s » n'a pas pu être déverrouillé (dev_unlock a renvoyé %d)Le périphérique « %s » n'a pas pu être déverrouillé car il est verrouillé par le processus %d.Le périphérique « %s » n'a pas pu être déverrouillé.Le périphérique « %s » est verrouillé par une autre application.Le périphérique « %s » est verrouillé par le processus %d.Erreur de réinitialisation d'une condition d'arrêt sur le port USBErreur d'initialisation du portErreur au chargement de la bibliothèqueErreur de lecture du portErreur de configuration de la vitesse du port sérieErreur de modification de la configuration du portErreur d'écriture sur le portImpossible de verrouiller « %s » (%m).Impossible d'ouvrir « %s » (%m).Échec d'ouverture de « %s » (%s).Impossible de déverrouiller « %s » (%m).Limite déterminée dépasséePort génériqueProblème d'E/Sservice PTPCamera de MacOSMedia « %s »Pas d'erreurDescription d'erreur non disponibleMémoire épuiséeErreur de parité.Port série %iPort série non pris en chargeL'opération « %s » n'est pas possible avec ce périphériqueLe port n'a pas encore été initialiséL'identifiant de fabricant ou produit (0x%x,0x%x) est incorrect.Délai d'attente dépassé en lecture ou écriture sur le portE/S directes de stockage de masse USBStockage de masse USB contenant des données brutes SCSI Port USB non pris en chargeSéquence de réponse de parité 0xff 0x%02x inattendue.Erreur inconnueBroche %i inconnue.Port inconnuErreur indéfinieOpération non prise en chargehautErreur de libhalbasprogramme utilisant libgphoto2 inconnulibgphoto2-2.5.9/libgphoto2_port/po/de.po0000644000175000001440000004104512623156264015213 00000000000000# translation of de.po to # German Translation. # Copyright © 2000-2002 Scott Fritzinger et al. # # [Please leave these here: öäüßÖÄÜ] # Colin Marquardt , 2001, 2002. # Marcus Meissner , 2003, 2005, 2013 # msgid "" msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2007-05-10 11:07+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Generischer Port" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Kein Fehler" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Unspezifizierter Fehler" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "I/O-Problem" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Falsche Parameter" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Nicht unterstützte Funktion" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Festes Limit überschritten." #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Zeitüberschreitung beim Lesen oder Schreiben des Ports" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Serieller Port nicht unterstützt" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "USB-Port nicht unterstützt" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Unbekannter Port" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Speicher voll" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Fehler beim Laden einer Bibliothek" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Fehler beim Initialisieren des Ports" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Fehler beim Lesen des Ports" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Fehler beim Schreiben des Ports" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Fehler beim Aktualisieren der Port-Einstellungen" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Fehler beim Setzen der Port-Geschwindigkeit" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Fehler beim Löschen einer »halt condition« auf dem USB-Port" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Konnte das angeforderte Gerät nicht am USB-Port finden" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Konnte das USB-Gerät nicht beanspruchen" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Konnte das Gerät nicht alleinig reservieren" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "Fehler in libhal" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Unbekannter Fehler" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Die Funktion »%s« wird von diesem Gerät nicht unterstützt." #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Der Port wurde noch nicht initialisiert." #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "niedrig" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "hoch" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Keine Fehlerbeschreibung verfügbar." #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "Medium »%s«" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Konnte Gerät »%s« nicht reservieren" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "Gerät »%s« ist von PID %d reserviert" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "Gerät »%s« konnte nicht reserviert werden (dev_lock lieferte %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Reservierung von Gerät »%s« konnte nicht freigegeben werden" #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "Reservierung von Gerät »%s« konnte nicht freigegeben werden, da es von PID " "%d reserviert ist." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "" "Reservierung von Gerät »%s« konnte nicht freigegeben werden (dev_unlock " "lieferte %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Serieller Port %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Konnte »%s« nicht öffnen (%s)." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Konnte »%s« nicht schließen (%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Konnte nicht auf Port schreiben (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "Paritätsfehler." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Unerwartete Paritätsantwort, Sequenz 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Unbekannter Pin %i." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Konnte Level von Pin %i nicht holen (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Konnte Level von Pin %i nicht auf %i setzen (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Konnte »%s« nicht leeren (%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Konnte Baudrate nicht auf %d setzen" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "USB Mass Storage direkter IO" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Konnte »%s« nicht öffnen (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Konnte »%s« nicht schließen (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Konnte nicht auf Offset %x auf »%s« vorspulen (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Konnte nicht auf »%s« schreiben (%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Konnte nicht von »%s« lesen (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Konnte USB-Gerät nicht öffnen (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Kamera ist bereits in Benutzung." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Konnte Kerneltreiber '%s' nicht vom Kamera Device lösen." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Konnte den Kerneltreiber des Gerätes nicht abfragen." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Konnte Schnittstelle %d nicht reservieren (%s). Stellen Sie sicher, dass " "kein\n" "anderes Programm (%s) oder Kernelmodul (z.B. %s) das Gerät verwendet und " "Sie \n" "Lese- und Schreibrechte für das Gerät haben." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "MacOS PTPCamera Dienst" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "unbekanntes anderes libgphoto2 Programm" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Konnte Schnittstelle %d nicht freigeben (%s)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Konnte USB-Port nicht resetten (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Konnte USB-Port nicht schließen (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Konnte Konfiguration %d/%d nicht setzen (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Konnte Alternativ-Setting %d/%d nicht setzen (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "" "Die angegebene Hersteller- oder Produkt-ID (0x%x,0x%x) ist nicht gültig." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Konnte USB-Gerät (Hersteller 0x%x, Produkt 0x%x) nicht finden. \n" "Stellen Sie sicher, dass das Gerät ordnungsgemäß an den Computer " "angeschlossen ist." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Konnte USB-Gerät (Klasse 0x%x, Subklasse 0x%x, Protokoll 0x%x) nicht " "finden. \n" "Stellen Sie sicher, dass das Gerät ordnungsgemäß an den Computer " "angeschlossen ist." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Konnte Kerneltreiber nicht vom Kamera Device lösen." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "Konnte Kerneltreiber nicht an Kamera Device reattachen." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "Gerät »%s« ist von einer anderen app reserviert." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "Konnte »%s« nicht reservieren (%m)." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Konnte »%s« nicht freigeben (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "USB Mass Storage raw SCSI" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Konnte SCSI Kommando nicht an »%s« senden (%m)" #~ msgid "Called for filename '%s'." #~ msgstr "Aufgerufen für »%s«." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Konnte »%s« nicht laden (%s)." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Konnte einige Funktionen nicht in '%s' finden: '%s'." #~ msgid "'%s' already loaded" #~ msgstr "'%s' bereits geladen" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Konnte Port Treiberliste»%s« nicht laden." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "Habe '%s' ('%s') von '%s' geladen." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "Benutze ltdl um I/O Treiber von '%s' zu laden..." #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "Zähle Eintrage (%i vorhanden)..." #~ msgstr[1] "Zähle Eintrage (%i vorhanden)..." #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "%i regulärer Eintrag verfügbar." #~ msgstr[1] "%i reguläre Einträge verfügbar." #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "Suche Pfad '%s' (%i Eintrag vorhanden)..." #~ msgstr[1] "Suche Pfad '%s' (%i Einträge vorhanden)..." #~ msgid "Starting regex search for '%s'..." #~ msgstr "Starte Suche mit regulärem Ausdruck '%s'..." #~ msgid "Trying '%s'..." #~ msgstr "Versuche '%s'..." #~ msgid "regcomp failed" #~ msgstr "regcomp fehlgeschlagen" #~ msgid "re_match failed (%i)" #~ msgstr "re_match fehlgeschlagen (%i)" #~ msgid "regexec failed" #~ msgstr "regexec fehlgeschlagen" #~ msgid "Looking up entry '%s'..." #~ msgstr "Suche Eintrag '%s'..." #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "Hole Informationen von Eintrag %i (%i vorhanden)..." #~ msgstr[1] "Hole Informationen von Eintrag %i (%i vorhanden)..." #~ msgid "Creating new device..." #~ msgstr "Lege neues Gerät an..." #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Konnte »%s« nicht laden (%s)." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "Konnte 'gp_port_library_operations' in '%s' nicht finden ('%s')" #~ msgid "Opening %s port..." #~ msgstr "Öffne Port %s..." #~ msgid "Closing port..." #~ msgstr "Schließe Port..." #~ msgid "Resetting port..." #~ msgstr "Resette Port..." #~ msgid "Freeing port..." #~ msgstr "Lösche Port..." #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Schreibe %i=0x%x Byte(s) auf den Port..." #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "Konnte nur %i von %i Byte schreiben" #~ msgstr[1] "Konnte nur %i von %i Bytes schreiben" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "Lese %i=0x%x byte vom Port..." #~ msgstr[1] "Lese %i=0x%x bytes vom Port..." #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "Konnte nur %i von %i Byte lesen" #~ msgstr[1] "Konnte nur %i von %i Bytes lesen" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "Lese %i=0x%x Byte vom Interrupt Endpoint" #~ msgstr[1] "Lese %i=0x%x Bytes vom Interrupt Endpoint" #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Konnte nur %i von %i Byte(s) lesen" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "Lese %i=0x%x Byte vom Interrupt Endpoint (schnell)..." #~ msgstr[1] "Lese %i=0x%x Bytes vom Interrupt Endpoint (schnell)..." #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Setze Timeout auf %i Millisekunden..." #~ msgid "Getting timeout..." #~ msgstr "Hole Timeout..." #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Derzeitiger Timeout: %i Millisekunden" #~ msgid "Setting settings..." #~ msgstr "Setze Einstellungen..." #~ msgid "Getting level of pin %i..." #~ msgstr "Hole Level von Pin %i..." #~ msgid "Level of pin %i: %i" #~ msgstr "Level von Pin %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Setze Pin %i (%s: '%s') auf '%s'..." #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "Sende Break (%i Millisekunden)..." #~ msgid "Flushing port..." #~ msgstr "Leere Port..." #~ msgid "Clear halt..." #~ msgstr "Lösche Halt..." #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Schreibe Nachricht (request=0x%x, Wert=0x%x, Index=0x%x, Größe=%i=0x%x)..." #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Lese Nachricht (request=0x%x, Wert=0x%x, Index=0x%x, Größe=%i=0x%x)..." #~ msgid "Device has driver '%s' attached." #~ msgstr "Gerät hat Kerneltreiber »%s« zugewiesen." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Gerät hat Kerneltreiber '%s' zugewiesen, löse Treiber jetzt." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "Das USB-Gerät (Hersteller 0x%x, Produkt 0x%x) ist ein USB Mass Storage " #~ "Gerät und wird von System direkt unterstützt (und deshalb nicht von " #~ "gphoto2). Lesen Sie hierzu bitte %s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "Gerät hat Kerneltreiber »%d« zugewiesen, löse Treiber jetzt." #~ msgid "msg_read" #~ msgstr "msg_read" #~ msgid "(unknown)" #~ msgstr "(unbekannt)" libgphoto2-2.5.9/libgphoto2_port/po/ja.po0000644000175000001440000004133612623156265015221 00000000000000# ja.po for libgphoto2_port. # This file is distributed under the same license as the libgphoto2 package. # # Takeshi Aihana , 2001-2002, 2004. # AMANO Kazuhiro , 2002. # Tadashi Jokagi , 2008-2009. # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.4.7\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2009-09-23 04:04+0900\n" "Last-Translator: Tadashi Jokagi \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Generic ãƒãƒ¼ãƒˆ" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "エラーãªã—" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "䏿˜Žãªã‚¨ãƒ©ãƒ¼" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "I/O å•題" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "ãŠã‹ã—ãªãƒ‘ラメータ" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "サãƒãƒ¼ãƒˆã—ã¦ã„ãªã„æ“作" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "ãƒãƒ¼ãƒˆã‹ã‚‰ã®èª­ã¿è¾¼ã¿/書ãè¾¼ã¿ã§ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆ" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "シリアルãƒãƒ¼ãƒˆã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "USB ãƒãƒ¼ãƒˆã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "䏿˜Žãªãƒãƒ¼ãƒˆ" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "メモリãŒè¶³ã‚Šã¾ã›ã‚“" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "ライブラリã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "ãƒãƒ¼ãƒˆã®åˆæœŸåŒ–エラー" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "ãƒãƒ¼ãƒˆã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "ãƒãƒ¼ãƒˆã¸ã®æ›¸ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "ãƒãƒ¼ãƒˆè¨­å®šã®æ›´æ–°ã‚¨ãƒ©ãƒ¼" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "シリアルãƒãƒ¼ãƒˆã®ã‚¹ãƒ”ードã®è¨­å®šã‚¨ãƒ©ãƒ¼" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "USB ãƒãƒ¼ãƒˆä¸Šã§ Halt 状態ã®ã‚¯ãƒªã‚¢ã‚¨ãƒ©ãƒ¼" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "USB ãƒãƒ¼ãƒˆä¸Šã«æŒ‡å®šã—ãŸãƒ‡ãƒã‚¤ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "USB デãƒã‚¤ã‚¹ã¨æ–­å®šã§ãã¾ã›ã‚“ã§ã—ãŸ" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "デãƒã‚¤ã‚¹ã‚’ロックã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸ" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "libhal エラー" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "䏿˜Žãªã‚¨ãƒ©ãƒ¼" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "ãã®æ“作 '%s' ã¯ã“ã®ãƒ‡ãƒã‚¤ã‚¹ã§ã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "ãƒãƒ¼ãƒˆãŒæœªã åˆæœŸåŒ–ã•れã¦ã„ã¾ã›ã‚“" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "低" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "高" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "有効ãªã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚りã¾ã›ã‚“" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "メディア「%sã€" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "デãƒã‚¤ã‚¹ '%s' をロックã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸ" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "デãƒã‚¤ã‚¹ '%s' ã¯ä»–ã®ãƒ—ロセス (PID:%d) ãŒãƒ­ãƒƒã‚¯ã—ã¦ã„ã¾ã™" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "デãƒã‚¤ã‚¹ '%s' ãŒãƒ­ãƒƒã‚¯ã§ãã¾ã›ã‚“ (dev_lock ã®è¿”り値 %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "デãƒã‚¤ã‚¹ '%s' ã®ãƒ­ãƒƒã‚¯ã‚’解放ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸã€‚" #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "デãƒã‚¤ã‚¹ '%s' ãŒä»–ã®ãƒ—ロセス (PID:%d) ãŒãƒ­ãƒƒã‚¯ã—ã¦ã„ã‚‹ã®ã§è§£æ”¾ã™ã‚‹ã“ã¨ãŒå‡ºæ¥" "ã¾ã›ã‚“ã§ã—ãŸã€‚" #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "" "デãƒã‚¤ã‚¹ '%s' ã®ãƒ­ãƒƒã‚¯ã‚’解放ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(dev_unlock ã®è¿”り値 " "%d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "シリアルãƒãƒ¼ãƒˆ %i" #: serial/unix.c:430 #, fuzzy, c-format msgid "Failed to open '%s' (%s)." msgstr "'%s' ã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—㟠(%m)。" #: serial/unix.c:450 #, fuzzy, c-format msgid "Could not close '%s' (%s)." msgstr "'%s' ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: serial/unix.c:506 #, fuzzy, c-format msgid "Could not write to port (%s)" msgstr "ãƒãƒ¼ãƒˆã¸æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—㟠(%m)" #: serial/unix.c:583 msgid "Parity error." msgstr "パリティ・エラーã§ã™ã€‚" #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "予期ã—ãªã„パリティ応答シーケンス 0xff 0x%02x ã§ã™ã€‚" #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "䏿˜Žãªãƒ”ン %i" #: serial/unix.c:652 #, fuzzy, c-format msgid "Could not get level of pin %i (%s)." msgstr "ピン %i ã®ãƒ¬ãƒ™ãƒ«ã‚’å–å¾—ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: serial/unix.c:688 #, fuzzy, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "ピン %i ã‹ã‚‰ %i ã®ãƒ¬ãƒ™ãƒ«ã‚’設定ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: serial/unix.c:715 #, fuzzy, c-format msgid "Could not flush '%s' (%s)." msgstr "フラッシュ '%s' ã§ãã¾ã›ã‚“ã§ã—㟠(%m)。" #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "ボーレートを %d ã«ã‚»ãƒƒãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "'%s' ã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—㟠(%m)。" #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "'%s' ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: usbdiskdirect/linux.c:324 #, fuzzy, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "'%s' ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: usbdiskdirect/linux.c:346 #, fuzzy, c-format msgid "Could not write to '%s' (%m)." msgstr "ãƒãƒ¼ãƒˆã¸æ›¸ãè¾¼ã‚ã¾ã›ã‚“ã§ã—㟠(%m)" #: usbdiskdirect/linux.c:367 #, fuzzy, c-format msgid "Could not read from '%s' (%m)." msgstr "'%s' ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: usb/libusb.c:261 libusb1/libusb1.c:378 #, fuzzy, c-format msgid "Could not open USB device (%s)." msgstr "USB デãƒã‚¤ã‚¹ã‚’é–‹ãã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "æ—¢ã«ã‚«ãƒ¡ãƒ©ã¯ä½¿ç”¨ä¸­ã§ã™ã€‚" #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Kernel ドライム'%s' を解放ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Kernel ã®ãƒ‡ãƒã‚¤ã‚¹ãƒ»ãƒ‰ãƒ©ã‚¤ãƒã‚’照会ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: usb/libusb.c:296 libusb1/libusb1.c:409 #, fuzzy, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "インタフェース %d (%m) ã¨æ–­å®šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ä»–ã®ãƒ—ログラムã¾ãŸã¯ (接頭å­" "㌠%s ã®ã‚ˆã†ãª) Kernel モジュールãŒã“ã®ãƒ‡ãƒã‚¤ã‚¹ã‚’使用ã—ã¦ã„ãªã„ã‹ç¢ºèªã—ã¦ã€" "ãã®ãƒ‡ãƒã‚¤ã‚¹ã®èª­ã¿è¾¼ã¿/書ãè¾¼ã¿ã‚’ã—ã¦ã¿ã¦ä¸‹ã•ã„。" #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, fuzzy, c-format msgid "Could not release interface %d (%s)." msgstr "インタフェース %d を解放ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: usb/libusb.c:342 libusb1/libusb1.c:500 #, fuzzy, c-format msgid "Could not reset USB port (%s)." msgstr "USB ãƒãƒ¼ãƒˆã‚’リセットã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: usb/libusb.c:372 #, fuzzy, c-format msgid "Could not close USB port (%s)." msgstr "USB ãƒãƒ¼ãƒˆã‚’é–‰ã˜ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: usb/libusb.c:633 libusb1/libusb1.c:838 #, fuzzy, c-format msgid "Could not set config %d/%d (%s)" msgstr "設定 %d/%d ã‚’åæ˜ ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, fuzzy, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "設定 %d/%d ã‚’åæ˜ ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "æä¾›ãƒ™ãƒ³ãƒ€ãƒ¼ã¾ãŸã¯è£½å“ ID (0x%x,0x%x) ã¯æ­£ã—ãã‚りã¾ã›ã‚“。" #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "USB デãƒã‚¤ã‚¹ (ベンダー:0x%x 製å“: 0x%x) ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ã“ã®ãƒ‡ãƒã‚¤ã‚¹" "ãŒã‚³ãƒ³ãƒ”ãƒ¥ãƒ¼ã‚¿ã«æŽ¥ç¶šã•れã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ä¸‹ã•ã„。" #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "USB デãƒã‚¤ã‚¹ (Class: 0x%x, SubClass: 0x%x, プロトコル: 0x%x) ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" "ã§ã—ãŸã€‚ã“ã®ãƒ‡ãƒã‚¤ã‚¹ãŒã‚³ãƒ³ãƒ”ãƒ¥ãƒ¼ã‚¿ã«æŽ¥ç¶šã•れã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ä¸‹ã•ã„。" #: libusb1/libusb1.c:396 #, fuzzy msgid "Could not detach kernel driver of camera device." msgstr "Kernel ドライム'%s' を解放ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: libusb1/libusb1.c:509 #, fuzzy msgid "Could not reattach kernel driver of camera device." msgstr "Kernel ドライム'%s' を解放ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: usbscsi/linux.c:109 #, fuzzy, c-format msgid "Device '%s' is locked by another app." msgstr "デãƒã‚¤ã‚¹ '%s' ã¯ä»–ã®ãƒ—ロセス (PID:%d) ãŒãƒ­ãƒƒã‚¯ã—ã¦ã„ã¾ã™" #: usbscsi/linux.c:114 #, fuzzy, c-format msgid "Failed to lock '%s' (%m)." msgstr "'%s' ã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—㟠(%m)。" #: usbscsi/linux.c:130 #, fuzzy, c-format msgid "Failed to unlock '%s' (%m)." msgstr "'%s' ã®ã‚ªãƒ¼ãƒ—ンã«å¤±æ•—ã—ã¾ã—㟠(%m)。" #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "" #: usbscsi/linux.c:342 #, fuzzy, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "設定 %d/%d ã‚’åæ˜ ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #~ msgid "Called for filename '%s'." #~ msgstr "ファイル「%sã€ã‚’呼ã³å‡ºã›ã¾ã›ã‚“ã§ã—ãŸã€‚" #~ msgid "Could not load '%s': '%s'." #~ msgstr "「%sã€ã‚’読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“: '%s'。" #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "'%s' ã®ã„ãã¤ã‹ã®æ©Ÿèƒ½ã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“: '%s'" #~ msgid "'%s' already loaded" #~ msgstr "「%sã€ã¯ã™ã§ã«èª­ã¿è¾¼ã¾ã‚Œã¾ã—ãŸ" #, fuzzy #~ msgid "Could not load port driver list: '%s'." #~ msgstr "デãƒã‚¤ã‚¹ '%s' をロックã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸ" #, fuzzy #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "デãƒã‚¤ã‚¹ '%s' をロックã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸ" #~ msgid "Counting entries (%i available)..." #~ msgstr "エントリã®ç®—出中 (%i 件利用å¯èƒ½)..." #~ msgid "Starting regex search for '%s'..." #~ msgstr "「%sã€ã®æ­£è¦è¡¨ç¾æ¤œç´¢ã‚’é–‹å§‹ã—ã¦ã„ã¾ã™..." #~ msgid "Trying '%s'..." #~ msgstr "「%sã€ã‚’試ã—ã¦ã„ã¾ã™..." #~ msgid "Looking up entry '%s'..." #~ msgstr "エントリ「%sã€ã‚’検索ã—ã¦ã„ã¾ã™..." #~ msgid "Creating new device..." #~ msgstr "æ–°ã—ã„デãƒã‚¤ã‚¹ã‚’作æˆã—ã¦ã„ã¾ã™..." #~ msgid "Could not load '%s' ('%s')." #~ msgstr "'%s' ('%s')を読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "" #~ "'%s' ('%s') ã§ 'gp_port_library_operations' を見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“" #~ msgid "Closing port..." #~ msgstr "ãƒãƒ¼ãƒˆã‚’é–‰ã˜ã¦ã„ã¾ã™..." #~ msgid "Freeing port..." #~ msgstr "ãƒãƒ¼ãƒˆã‚’開放ã—ã¦ã„ã¾ã™..." #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "タイムアウトを %i ミリ秒ã«è¨­å®šã—ã¦ã„ã¾ã™..." #~ msgid "Getting timeout..." #~ msgstr "タイムアウトをå–å¾—ã—ã¦ã„ã¾ã™..." #~ msgid "Current timeout: %i milliseconds" #~ msgstr "ç¾åœ¨ã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆ: %i ミリ秒" #~ msgid "Setting settings..." #~ msgstr "設定ã®ã‚»ãƒƒãƒ†ã‚£ãƒ³ã‚°ã‚’ã—ã¦ã„ã¾ã™..." #~ msgid "Getting level of pin %i..." #~ msgstr "ピン %i ã®ãƒ¬ãƒ™ãƒ«ã‚’å–å¾—ã—ã¦ã„ã¾ã™..." #~ msgid "Level of pin %i: %i" #~ msgstr "ピン %i ã®ãƒ¬ãƒ™ãƒ«: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "ピン %i (%s: 「%sã€) を「%sã€ã«è¨­å®šã—ã¦ã„ã¾ã™..." #~ msgid "Flushing port..." #~ msgstr "ãƒãƒ¼ãƒˆã‚’フラッシュã—ã¦ã„ã¾ã™..." #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "メッセージを書ã込んã§ã„ã¾ã™ (リクエスト=0x%x 値=0x%x インデックス=0x%x サ" #~ "イズ=%i=0x%x)..." #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "メッセージを読ã¿è¾¼ã‚“ã§ã„ã¾ã™ (リクエスト=0x%x 値=0x%x インデックス=0x%x サ" #~ "イズ=%i=0x%x)..." #~ msgid "msg_read" #~ msgstr "msg_read" #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "ドライム'%s' ãŒãƒ‡ãƒã‚¤ã‚¹ã‚’使用ã—ã¦ã„ã¾ã™ã€‚今ã™ã解放ã—ã¾ã™ã€‚" #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "USB デãƒã‚¤ã‚¹ (ベンダー:0x%x 製å“: 0x%x) ã¯ãƒžã‚¹ãƒ»ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ç”¨ãƒ‡ãƒã‚¤ã‚¹ã§ã€" #~ "gphoto2 ã§ã¯å–り扱ãˆã¾ã›ã‚“。å‚考情報: %s" #~ msgid "(unknown)" #~ msgstr "(䏿˜Ž)" #~ msgid "Could not load any io-library because '%s' could not be opened (%m)" #~ msgstr "" #~ "'%s' ã‚’é–‹ãã“ã¨ãŒã§ããªã„ã®ã§ã„ãã¤ã‹ã® I/O ライブラリを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—" #~ "㟠(%m)" #, fuzzy #~ msgid "Could not find some functions in '%s' (%s)" #~ msgstr "'%s' ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #, fuzzy #~ msgid "Could not load list (%s)" #~ msgstr "'%s' ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #, fuzzy #~ msgid "Could not load '%s' ('%s')" #~ msgstr "'%s' ã‚’é–‰ã˜ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—㟠(%m)。" #~ msgid "Camera is supported by USB Storage driver." #~ msgstr "USB ストレージ・ドライãƒã§ã‚µãƒãƒ¼ãƒˆã—ã¦ã„るカメラã§ã™ã€‚" #~ msgid "open" #~ msgstr "open" #~ msgid "close" #~ msgstr "close" #~ msgid "write" #~ msgstr "write" #~ msgid "read" #~ msgstr "read" #~ msgid "check_int" #~ msgstr "check_int" #~ msgid "update" #~ msgstr "update" #~ msgid "get_pin" #~ msgstr "get_pin" #~ msgid "set_pin" #~ msgstr "set_pin" #~ msgid "send_break" #~ msgstr "send_break" #~ msgid "flush" #~ msgstr "flush" #~ msgid "find_device" #~ msgstr "find_device" #~ msgid "find_device_by_class" #~ msgstr "find_device_by_class" #~ msgid "msg_write" #~ msgstr "msg_write" libgphoto2-2.5.9/libgphoto2_port/po/ru.gmo0000644000175000001440000002367312623156265015425 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an rÿ“#“)·@áX"/{/«6Û|nËþÂÊSTáA6KxDÄB ZL3§nÛEJ]LîD;r€IóK==‰4Ç5üˆ2Œ»œHNå[4SIä2. Aa )£ vÍ =D!%‚!;¨!/ä!/"=D"8‚"»"(Ó"ü"#1#2E#%x#ž#,½#Gê#Y2$:Œ$kÇ$x3%1¬%Þ%(ø%g!&#‰&­&Ì&#ì&1' B'N' b'Nl'@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port 2.5.3 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-01-11 16:00+0400 Last-Translator: Yuri Kozlov Language-Team: Russian Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 1.4 Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Ðеверные аргументыФотоаппарат уже занÑÑ‚.Ðевозможно захватить Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%s). УбедитеÑÑŒ, что уÑтройÑтво не занÑто другой программой (%s) или модулем Ñдра (таким как %s), и что у Ð²Ð°Ñ ÐµÑть право на чтение/запиÑÑŒ уÑтройÑтва.Ðевозможно получить контроль над уÑтройÑтвом USBÐе удалоÑÑŒ закрыть «%s» (%m).Ðе удалоÑÑŒ закрыть «%s» (%s).Ðевозможно закрыть порт USB (%s).Ðевозможно отключить драйвер Ñдра «%s» Ð´Ð»Ñ ÑƒÑтройÑтва фотоаппарата.Ðевозможно отключить драйвер Ñдра уÑтройÑтва фотоаппарата.Ðе найдено уÑтройÑтво USB (клаÑÑ 0x%x, подклаÑÑ 0x%x, протокол 0x%x). УбедитеÑÑŒ, что уÑтройÑтво подключено к компьютеру.Ðе найдено уÑтройÑтво USB (производитель 0x%x, продукт 0x%x). УбедитеÑÑŒ, что уÑтройÑтво подключено к компьютеру.Ðе найдено запрошенное уÑтройÑтво на порту USBÐевозможно ÑброÑить буферы уÑтройÑтва «%s» (%s).Ðевозможно получить уровень pin %i (%s).Ðевозможно заблокировать уÑтройÑтво «%s»Ðевозможно заблокировать уÑтройÑтвоÐевозможно открыть USB-уÑтройÑтво (%s).Ðевозможно опроÑить драйвер Ñдра Ð´Ð»Ñ ÑƒÑтройÑтва.Ðе удалоÑÑŒ прочитать «%s» (%m).Ðевозможно отключить драйвер Ñдра уÑтройÑтва фотоаппарата.Ðевозможно оÑвободить Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%s).Ðевозможно вернуть в иÑходное ÑоÑтоÑние порт USB (%s).Ðе удалоÑÑŒ перейти к Ñмещению: %x на «%s» (%m).Ðе удалоÑÑŒ поÑлать команду scsi: «%s» (%m).Ðевозможно уÑтановить альтернативную конфигурацию из %d в %d (%s)Ðевозможно изменить конфигурацию %d/%d (%s)Ðевозможно уÑтановить уровень pin %i в %i (%s).Ðевозможно уÑтановить ÑкороÑть %dÐе удалоÑÑŒ запиÑать в «%s» (%m).Ðе удалоÑÑŒ запиÑать в порт (%s)УÑтройÑтво «%s» невозможно заблокировать (Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ dev_lock вернула значение %d)УÑтройÑтво «%s» невозможно разблокировать (Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ dev_unlock вернула значение %d)УÑтройÑтво «%s» невозможно разблокировать, так как оно заблокировано процеÑÑом Ñ pid %d.УÑтройÑтво «%s» невозможно разблокировать.УÑтройÑтво «%s» заблокировано другим приложением.УÑтройÑтво «%s» заблокировано процеÑÑом Ñ pid %dОшибка уÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ halt-уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ð° порту USBОшибка инициализации портаОшибка загрузки библиотеки функцийОшибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð· портаОшибка уÑтановки ÑкороÑти передачи через поÑледовательный портОшибка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð°Ñтроек портаОшибка запиÑи в портÐе удалоÑÑŒ заблокировать «%s» (%m).Ðе удалоÑÑŒ открыть «%s» (%m).Ðе удалоÑÑŒ открыть «%s» (%s).Ðе удалоÑÑŒ разблокировать «%s» (%m).Превышен фикÑированный пределОбычный портПроблема ввода/выводаСлужба MacOS PTPCameraÐоÑитель «%s»Ошибок нетОпиÑание ошибки недоÑтупноÐедоÑтаточно памÑтиОшибка чётноÑти.ПоÑледовательный порт %iÐет поддержки поÑледовательного портаДейÑтвие «%s» не поддерживаетÑÑ Ñтим уÑтройÑтвомПорт ещё не был инициализированÐеверный идентификатор Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ продукта (0x%x,0x%x).ИÑтекло Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð° при чтении или запиÑи данных в портПрÑмой ввод-вывод USB Mass StorageUSB Mass Storage raw SCSIÐет поддержки порта USBÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑть ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ñ‡Ñ‘Ñ‚Ð½Ð¾Ñти — 0xff 0x%02xÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°ÐеизвеÑтный pin %i.ÐеизвеÑтный портÐÐµÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°Ðеподдерживаемое дейÑтвиевыÑок.ошибка libhalнизк.неизвеÑÑ‚Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‰Ð°Ñ libgphoto2libgphoto2-2.5.9/libgphoto2_port/po/sv.po0000644000175000001440000004013212623156265015250 00000000000000# Swedish translation of libgphoto2_port # Copyright © 2000, 2006, 2007 Free Software Foundation, Inc. # Daniel Nylander , 2006, 2007. # Andreas Hyden 2000. # Stefan Björnelund , 2002. # Sverker Wiberg , 2002. # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.4.0\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2007-08-09 00:44+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Allmän port" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Inget fel" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Ospecificerat fel" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "In-/ut-problem" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Felaktiga parametrar" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Operationen stöds inte" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Fast gräns överstigen" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Timeout vid läsning frÃ¥n eller skrivning till porten" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Serieporten stöds inte" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "USB-porten stöds inte" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Okänd port" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Slut pÃ¥ minne" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Fel vid inläsning av ett bibliotek" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Fel vid initiering av porten" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Fel vid läsning frÃ¥n porten" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Fel vid skrivning till porten" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Fel vid uppdatering av portinställningarna" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Fel vid inställning av serieportens hastighet" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Fel vid rensning av stopptillstÃ¥nd pÃ¥ USB-porten" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Kunde inte finna den begärda enheten pÃ¥ USB-porten" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Kunde inte göra ansprÃ¥k pÃ¥ USB-enheten" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Kunde inte lÃ¥sa enheten" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "libhal-fel" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Okänt fel" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Operationen \"%s\" stöds inte av denna enhet" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Porten har ännu inte blivit initierad" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "lÃ¥g" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "hög" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Ingen felbeskrivning tillgänglig" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "Media \"%s\"" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Kunde inte lÃ¥sa enheten \"%s\"" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "Enheten \"%s\" är lÃ¥st av pid %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "Enheten \"%s\" kunde inte lÃ¥sas (dev_lock returnerade %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Enheten \"%s\" kunde inte lÃ¥sas upp." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "Enheten \"%s\" kunde inte lÃ¥sas upp eftersom den är lÃ¥st av pid %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "Enheten \"%s\" kunde inte lÃ¥sas upp (dev_lock returnerade %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Serieport %i" #: serial/unix.c:430 #, fuzzy, c-format msgid "Failed to open '%s' (%s)." msgstr "Misslyckades med att öppna \"%s\" (%m)." #: serial/unix.c:450 #, fuzzy, c-format msgid "Could not close '%s' (%s)." msgstr "Kunde inte stänga \"%s\" (%m)." #: serial/unix.c:506 #, fuzzy, c-format msgid "Could not write to port (%s)" msgstr "Kunde inte skriva till porten (%m)" #: serial/unix.c:583 msgid "Parity error." msgstr "Paritetsfel." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Oväntad paritetsvarsekvens 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Okänd pin %i." #: serial/unix.c:652 #, fuzzy, c-format msgid "Could not get level of pin %i (%s)." msgstr "Kunde inte hämta nivÃ¥n av pin %i (%m)." #: serial/unix.c:688 #, fuzzy, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Kunde inte ställa in nivÃ¥n av pin %i till %i (%m)." # Hmm #: serial/unix.c:715 #, fuzzy, c-format msgid "Could not flush '%s' (%s)." msgstr "Kunde inte spola ut \"%s\" (%m)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Kunde inte ställa in bithastigheten till %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Misslyckades med att öppna \"%s\" (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Kunde inte stänga \"%s\" (%m)." #: usbdiskdirect/linux.c:324 #, fuzzy, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Kunde inte stänga \"%s\" (%m)." #: usbdiskdirect/linux.c:346 #, fuzzy, c-format msgid "Could not write to '%s' (%m)." msgstr "Kunde inte skriva till porten (%m)" #: usbdiskdirect/linux.c:367 #, fuzzy, c-format msgid "Could not read from '%s' (%m)." msgstr "Kunde inte stänga \"%s\" (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, fuzzy, c-format msgid "Could not open USB device (%s)." msgstr "Kunde inte öppna USB-enheten (%m)" #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Kameran används redan." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Kunde inte koppla loss kärndrivrutinen \"%s\" för kameraenhet." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Kunde inte frÃ¥ga kärndrivrutinen efter enheten." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, fuzzy, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Kunde inte göra ansprÃ¥k pÃ¥ gränssnittet %d (%m). Kontrollera att inget annat " "program eller kärnmodul (sÃ¥som %s) använder enheten och att du du har skriv/" "läsrättigheter för enheten." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, fuzzy, c-format msgid "Could not release interface %d (%s)." msgstr "Kunde inte släppa gränssnittet %d (%m)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, fuzzy, c-format msgid "Could not reset USB port (%s)." msgstr "Kunde inte nollställa USB-porten (%m)." #: usb/libusb.c:372 #, fuzzy, c-format msgid "Could not close USB port (%s)." msgstr "Kunde inte stänga USB-porten (%m)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, fuzzy, c-format msgid "Could not set config %d/%d (%s)" msgstr "Kunde inte ställa in konfiguration %d/%d (%m)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, fuzzy, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Kunde inte ställa in alternativinställning %d till %d (%m)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "" "Den angivna tillverkare- eller produktidentiteten (0x%x,0x%x) är inte giltig." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Kunde inte finna USB-enheten (tillverkare 0x%x, produkt 0x%x). Kontrollera " "att enheten är ansluten till datorn." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Kunde inte finna USB-enheten (klass 0x%x, underklass 0x%x, protokoll 0x%x). " "Kontrollera att enheten är ansluten till datorn." #: libusb1/libusb1.c:396 #, fuzzy msgid "Could not detach kernel driver of camera device." msgstr "Kunde inte koppla loss kärndrivrutinen \"%s\" för kameraenhet." #: libusb1/libusb1.c:509 #, fuzzy msgid "Could not reattach kernel driver of camera device." msgstr "Kunde inte koppla loss kärndrivrutinen \"%s\" för kameraenhet." #: usbscsi/linux.c:109 #, fuzzy, c-format msgid "Device '%s' is locked by another app." msgstr "Enheten \"%s\" är lÃ¥st av pid %d" #: usbscsi/linux.c:114 #, fuzzy, c-format msgid "Failed to lock '%s' (%m)." msgstr "Misslyckades med att öppna \"%s\" (%m)." #: usbscsi/linux.c:130 #, fuzzy, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Misslyckades med att öppna \"%s\" (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "" #: usbscsi/linux.c:342 #, fuzzy, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Kunde inte ställa in alternativinställning %d till %d (%m)" #~ msgid "Called for filename '%s'." #~ msgstr "FrÃ¥gade efter filnamnet \"%s\"." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Kunde inte läsa in \"%s\": \"%s\"." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Kunde inte hitta vissa funktioner i \"%s\": \"%s\"." #~ msgid "'%s' already loaded" #~ msgstr "\"%s\" redan inläst" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Kunde inte läsa in lista av portdrivrutiner: \"%s\"." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "Läste in \"%s\" (\"%s\") frÃ¥n \"%s\"." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "Använder ltdl för att läsa in io-drivrutiner frÃ¥n \"%s\"..." #~ msgid "Counting entries (%i available)..." #~ msgstr "Räknar poster (%i tillgängliga)..." #~ msgid "%i regular entries available." #~ msgstr "%i vanliga poster tillgängliga." #~ msgid "Looking for path '%s' (%i entries available)..." #~ msgstr "Letar efter sökvägen \"%s\" (%i poster tillgängliga)..." #~ msgid "Starting regex search for '%s'..." #~ msgstr "Startar sökning med reguljärt uttryck efter \"%s\"..." #~ msgid "Trying '%s'..." #~ msgstr "Provar \"%s\"..." #~ msgid "regcomp failed" #~ msgstr "regcomp misslyckades" #~ msgid "re_match failed (%i)" #~ msgstr "re_match misslyckades (%i)" #~ msgid "regexec failed" #~ msgstr "regexec misslyckades" #~ msgid "Looking up entry '%s'..." #~ msgstr "SlÃ¥r upp posten \"%s\"..." #~ msgid "Getting info of entry %i (%i available)..." #~ msgstr "FÃ¥r information om posten %i (%i tillgängliga)..." #~ msgid "Creating new device..." #~ msgstr "Skapar ny enhet..." #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Kunde inte läsa in \"%s\" (\"%s)\"." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "Kunde inte finna \"gp_port_library_operations\" i \"%s\" (\"%s\")" #~ msgid "Opening %s port..." #~ msgstr "Öppnar porten %s..." #~ msgid "Closing port..." #~ msgstr "Stänger port..." #~ msgid "Freeing port..." #~ msgstr "Frigör port..." #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Skriver %i=0x%x byte till port..." #~ msgid "Could only write %i out of %i byte(s)" #~ msgstr "Kunde endast skriva %i av totalt %i byte" #~ msgid "Reading %i=0x%x bytes from port..." #~ msgstr "Läser %i=0x%x byte frÃ¥n port..." #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Kunde endast läsa %i ut av totalt %i byte" # Intressant engelska. Vad menas? #~ msgid "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr "Läser %i=0x%x byte frÃ¥n avbruten ändpunkt..." # Intressant engelska igen.. #~ msgid "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr "Läser %i=0x%x byte frÃ¥n avbruten ändpunkt (snabbt)..." #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Ställer in timeout till %i millisekund(er)..." #~ msgid "Getting timeout..." #~ msgstr "FÃ¥r timeout..." #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Aktuell timeout: %i millisekunder" #~ msgid "Setting settings..." #~ msgstr "Ställer in inställningar..." #~ msgid "Getting level of pin %i..." #~ msgstr "Hämtar nivÃ¥n av pin %i..." #~ msgid "Level of pin %i: %i" #~ msgstr "NivÃ¥ av pin %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Ställer in pin %i (%s: \"%s\") till \"%s\"..." #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "Skickar avbrott (%i millisekunder)..." #~ msgid "Flushing port..." #~ msgstr "Spolar port..." #~ msgid "Clear halt..." #~ msgstr "Rensa stopp" #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Skriver meddelande (begäran=0x%x värde=0x%x index=0x%x storlek=%i=0x%x)..." #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Läser meddelande (begäran=0x%x värde=0x%x index=0x%x storlek=%i=0x%x)..." #~ msgid "msg_read" #~ msgstr "medd_läs" #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Enheten har drivrutinen \"%s\" ansluten, kopplar loss den nu." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "USB-enheten (tillverkare 0x%x, produkt 0x%x) är en masslagringsenhet och " #~ "kanske inte fungerar med gphoto2. Referens: %s" #~ msgid "(unknown)" #~ msgstr "(okänt)" #~ msgid "Could not load any io-library because '%s' could not be opened (%m)" #~ msgstr "" #~ "Kunde inte ladda nÃ¥got io-bibliotek eftersom '%s' inte kunde öppnas (%m)" #, fuzzy #~ msgid "Could not find some functions in '%s' (%s)" #~ msgstr "Kunde inte stänga '%s' (%m)." #, fuzzy #~ msgid "Could not load list (%s)" #~ msgstr "Kunde inte stänga '%s' (%m)." #, fuzzy #~ msgid "Could not load '%s' ('%s')" #~ msgstr "Kunde inte stänga '%s' (%m)." #~ msgid "open" #~ msgstr "öppna" #~ msgid "close" #~ msgstr "stäng" #~ msgid "write" #~ msgstr "skriv" #~ msgid "read" #~ msgstr "läs" #~ msgid "check_int" #~ msgstr "check_int" #~ msgid "update" #~ msgstr "uppdatera" #~ msgid "get_pin" #~ msgstr "hämta_pin" #~ msgid "set_pin" #~ msgstr "sätt_pin" #~ msgid "send_break" #~ msgstr "sänd_avbrott" #~ msgid "flush" #~ msgstr "spola_ut" #~ msgid "find_device" #~ msgstr "hitta_enhet" #~ msgid "find_device_by_class" #~ msgstr "hitta_enhet_efter_klass" #~ msgid "msg_write" #~ msgstr "medd_skriv" libgphoto2-2.5.9/libgphoto2_port/po/POTFILES.in0000644000175000001440000000031512610415510016017 00000000000000libgphoto2_port/gphoto2-port-info-list.c libgphoto2_port/gphoto2-port-result.c libgphoto2_port/gphoto2-port.c disk/disk.c serial/unix.c usbdiskdirect/linux.c usb/libusb.c libusb1/libusb1.c usbscsi/linux.c libgphoto2-2.5.9/libgphoto2_port/po/sr.gmo0000644000175000001440000002332712623156265015417 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an r“™6µ3ìG 2h2›CÎtk‡ÖóÁÊbŒ2ï<"9_0™;Êg1nz 9NUO¤NôbCA¦DèV-3„:¸fófZiÁ>+Wj9Â^ü2[4Ž1ÃTõIJ 1” :Æ 8!8:!:s!9®!è!"9"U"i"/""¯""Ò"&õ";#GX#< #kÝ#bI$D¬$@ñ$12%Nd%³%Ó%#ï%&3& S&(^& ‡&D’&@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port-2.5.3 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-01-14 09:35+0200 Last-Translator: МироÑлав Ðиколић Language-Team: Serbian <(nothing)> Language: sr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Лоши параметриФото-апарат је већ у употреби.Ðе могу да придобијем Ñучеље %d (%s). Уверите Ñе да ниједан други програм (%s) или модул језгра (као што је %s) не кориÑти уређај и да ви имате право на читање/пиÑање на уређају.Ðе могу да оÑтварим право на УСБ уређајÐе могу да затворим „%s“ (%m).Ðе могу да затворим „%s“ (%s).Ðе могу да затворим УСБ прикључак (%s).Ðе могу да откачим управљачки програм језгра „%s“ фото-апарата.Ðе могу да откачим управљачки програм језгра фото-апарата.Ðе могу да пронађем УСБ уређај (разред 0x%x, подразред 0x%x, протокол 0x%x). Уверите Ñе да је тај уређај прикључен на рачунар.Ðе могу да пронађем УСБ уређај (продавац 0x%x, производ 0x%x). Уверите Ñе да је тај уређај прикључен на рачунар.Ðе могу да пронађем захтевани уређај на УСБ прикључкуÐе могу да преточим „%s“ (%s).Ðе могу да добавим ниво пина %i (%s).Ðе могу да закључам уређај „%s“Ðе могу да закључам уређајÐе могу да отворим УСБ уређај (%s).Ðе могу да пропитам управљачки програм језгра за уређај.Ðе могу да читам Ñа „%s“ (%m).Ðе могу поново да прикачим управљачки програм језгра фото-апарата.Ðе могу да отпуÑтим Ñучеље %d (%s).Ðе могу поново да подеÑим УСБ прикључак (%s).Ðе могу да премотам на померај: %x на „%s“ (%m).Ðе могу да пошаљем ÑцÑи наредбу на: „%s“ (%m).Ðе могу да подеÑим подешавање зауÑтављања Ñа %d на %d (%s)Ðе могу да подеÑим подешавања %d/%d (%s)Ðе могу да подеÑим ниво пина %i на %i (%s).Ðе могу да подеÑим брзину преноÑа података на %dÐе могу да запишем у „%s“ (%m).Ðе могу да пишем на прикључку (%s)Уређај „%s“ не може бити закључан (закљ_уређ је вратио %d)Уређај „%s“ не може бити откључан (откљ_уређ је вратио %d)Уређај „%s“ не може бити откључан јер је закључан пидом %d.Уређај „%s“ не може бити откључан.Уређај „%s“ је закључан неким другим програмом.Уређај „%s“ је закључан пидом %dГрешка чишћења уÑлова зауÑтављања на УСБ прикључкуГрешка покретања прикључкаГрешка учитавања библиотекеГрешка читања Ñа прикључкаГрешка подешавања брзине ÑеријÑког прикључкаГрешка оÑвежавања подешавања прикључкаГрешка пиÑања на прикључакÐиÑам уÑпео да закључам „%s“ (%m).ÐиÑам уÑпео да отворим „%s“ (%m).ÐиÑам уÑпео да отворим „%s“ (%s).ÐиÑам уÑпео да откључам „%s“ (%m).Премашено је Ñтално ограничењеОпшти прикључакУ/И проблемУÑлуга ПТП фото-апарата МекОС-аМедиј „%s“Ðема Ð³Ñ€ÐµÑˆÐºÐµÐžÐ¿Ð¸Ñ Ð³Ñ€ÐµÑˆÐºÐµ није доÑтупанÐема више меморијеГрешка једнакоÑти.СеријÑки прикључак %iСеријÑки прикључак није подржанРадња „%s“ није подржана овим уређајемПрикључак још увек није покренутДоÑтављени ид продавца или производа (0x%x,0x%x) није иÑправан.ИÑтекло је време за читање или упиÑивање на прикључакÐепоÑредни УИ УСБ маÑовног ÑкладиштаСирови СЦСИ УСБ маÑовног ÑкладиштаУСБ прикључак није подржанÐеочекиван низ одговора једнакоÑти 0xff 0x%02x.Ðепозната грешкаÐепознат пин %i.Ðепознат прикључакÐепозната грешкаÐеподржана радњавиÑокгрешка хал библиотекенизакнепозната библгфото2 кориÑти програмlibgphoto2-2.5.9/libgphoto2_port/po/es.po0000644000175000001440000003115712623156264015235 00000000000000# Spanish Translation. # Copyright © 2002 Fabian Mandelbaum. # Fabian Mandelbaum , 2002. # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2002-06-18 22:59-0300\n" "Last-Translator: Fabian Mandelbaum \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Puerto genérico" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Sin error" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Error no especificado" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "Problema de E/S" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Parámetros incorrectos" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Operación no soportada" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Tiempo de espera agotado leyendo de, o escribiendo en, el puerto" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Puerto serie no soportado" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "Puerto USB no soportado" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Puerto desconocido" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Sin memoria" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Error cargando una biblioteca" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Error inicializando el puerto" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Error leyendo desde el puerto" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Error escribiendo en el puerto" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Error actualizando las configuraciones del puerto" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Error configurando la velocidad del puerto serie" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Error borrando una condición de parada en el puerto USB" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "No se pudo encontrar el dispositivo pedido en el puerto USB" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "No se pudo reclamar el dispositivo USB" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "No se pudo trabar el dispositivo" #: libgphoto2_port/gphoto2-port-result.c:100 #, fuzzy msgid "libhal error" msgstr "Sin error" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Error desconocido" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Este dispositivo no soporta la operación '%s'" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Todavía no se ha inicializado el puerto" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "No está disponible la descripción del error" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "No se pudo trabar el dispositivo '%s'" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "El dispositivo '%s' está trabado por el pid %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "No se pudo trabar el dispositivo '%s' (dev_lock devolvió %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "No se pudo destrabar el dispositivo '%s'." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "No se pudo destrabar el dispositivo '%s' ya que está trabado por el pid %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "No se pudo destrabar el dispositivo '%s' (dev_unlock devolvió %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Puerto serie %i" #: serial/unix.c:430 #, fuzzy, c-format msgid "Failed to open '%s' (%s)." msgstr "No se pudo abrir '%s' (%m)." #: serial/unix.c:450 #, fuzzy, c-format msgid "Could not close '%s' (%s)." msgstr "No se pudo cerrar '%s' (%m)." #: serial/unix.c:506 #, fuzzy, c-format msgid "Could not write to port (%s)" msgstr "No se pudo escribir en el puerto (%m)" #: serial/unix.c:583 msgid "Parity error." msgstr "Error de paridad." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Secuencia de respuesta de paridad 0xff, 0x%02x no esperada." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Pin %i desconocido." #: serial/unix.c:652 #, fuzzy, c-format msgid "Could not get level of pin %i (%s)." msgstr "No se pudo obtener el nivel de pin %i (%m)." #: serial/unix.c:688 #, fuzzy, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "No se pudo configurar el nivel de pin %i como %i (%m)." #: serial/unix.c:715 #, fuzzy, c-format msgid "Could not flush '%s' (%s)." msgstr "No se pudo vaciar '%s' (%m)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "No se pudo configurar la tasa de baud en %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "No se pudo abrir '%s' (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "No se pudo cerrar '%s' (%m)." #: usbdiskdirect/linux.c:324 #, fuzzy, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "No se pudo cerrar '%s' (%m)." #: usbdiskdirect/linux.c:346 #, fuzzy, c-format msgid "Could not write to '%s' (%m)." msgstr "No se pudo escribir en el puerto (%m)" #: usbdiskdirect/linux.c:367 #, fuzzy, c-format msgid "Could not read from '%s' (%m)." msgstr "No se pudo cerrar '%s' (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, fuzzy, c-format msgid "Could not open USB device (%s)." msgstr "No se pudo abrir el dispositivo USB (%m)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "" #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "" #: usb/libusb.c:287 libusb1/libusb1.c:402 #, fuzzy msgid "Could not query kernel driver of device." msgstr "No se pudo trabar el dispositivo" #: usb/libusb.c:296 libusb1/libusb1.c:409 #, fuzzy, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "No se pudo reclamar la interfaz %d (%m). Debe asegurarse que ningún otro " "programa o módulo del núcleo (ej: dc2xx o stv680) esté utilizando el " "dispositivo y que Usted tiene acceso de lectura/escritura al dispositivo." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, fuzzy, c-format msgid "Could not release interface %d (%s)." msgstr "No se pudo liberar la interfaz %d (%m)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, fuzzy, c-format msgid "Could not reset USB port (%s)." msgstr "No se pudo cerrar el puerto USB (%m)." #: usb/libusb.c:372 #, fuzzy, c-format msgid "Could not close USB port (%s)." msgstr "No se pudo cerrar el puerto USB (%m)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, fuzzy, c-format msgid "Could not set config %d/%d (%s)" msgstr "No se pudo ajustar la configuración %d%d (%m)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, fuzzy, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "No se pudo configurar alternativa %d%d (%m)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "" "El fabricante o ID de producto proporcionado (0x%x, 0x%x) no es válido." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "No se pudo encontrar el dispositivo USB (fabricante 0x%x, producto 0x%x). " "Debe asegurarse que este dispositivo está conectado a la computadora." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "No se pudo encontrar el dispositivo USB (clase 0x%x, subclase 0x%x, " "protocolo 0x%x). Debe asegurarse que este dispositivo está conectado a la " "computadora." #: libusb1/libusb1.c:396 #, fuzzy msgid "Could not detach kernel driver of camera device." msgstr "No se pudo trabar el dispositivo" #: libusb1/libusb1.c:509 #, fuzzy msgid "Could not reattach kernel driver of camera device." msgstr "No se pudo trabar el dispositivo" #: usbscsi/linux.c:109 #, fuzzy, c-format msgid "Device '%s' is locked by another app." msgstr "El dispositivo '%s' está trabado por el pid %d" #: usbscsi/linux.c:114 #, fuzzy, c-format msgid "Failed to lock '%s' (%m)." msgstr "No se pudo abrir '%s' (%m)." #: usbscsi/linux.c:130 #, fuzzy, c-format msgid "Failed to unlock '%s' (%m)." msgstr "No se pudo abrir '%s' (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "" #: usbscsi/linux.c:342 #, fuzzy, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "No se pudo cerrar '%s' (%m)." #, fuzzy #~ msgid "Called for filename '%s'." #~ msgstr "No se pudo abrir '%s' (%m)." #, fuzzy #~ msgid "Could not load '%s': '%s'." #~ msgstr "No se pudo cerrar '%s' (%m)." #, fuzzy #~ msgid "Could not load port driver list: '%s'." #~ msgstr "No se pudo trabar el dispositivo '%s'" #, fuzzy #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "No se pudo trabar el dispositivo '%s'" #~ msgid "Could not load any io-library because '%s' could not be opened (%m)" #~ msgstr "" #~ "No se pudo cargar biblioteca de entrada/salida alguna porque '%s' no se " #~ "pudo abrir (%m)" #, fuzzy #~ msgid "Could not find some functions in '%s' (%s)" #~ msgstr "No se pudo cerrar '%s' (%m)." #, fuzzy #~ msgid "Could not load list (%s)" #~ msgstr "No se pudo cerrar '%s' (%m)." #, fuzzy #~ msgid "Could not load '%s' ('%s')." #~ msgstr "No se pudo cerrar '%s' (%m)." #, fuzzy #~ msgid "Could not load '%s' ('%s')" #~ msgstr "No se pudo cerrar '%s' (%m)." #, fuzzy #~ msgid "Could only write %i out of %i byte(s)" #~ msgstr "No se pudo escribir en el puerto (%m)" #, fuzzy #~ msgid "Getting level of pin %i..." #~ msgstr "No se pudo obtener el nivel de pin %i (%m)." #, fuzzy #~ msgid "Clear halt..." #~ msgstr "clear_halt" #~ msgid "msg_read" #~ msgstr "msg_read" #, fuzzy #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "No se pudo encontrar el dispositivo USB (fabricante 0x%x, producto 0x%x). " #~ "Debe asegurarse que este dispositivo está conectado a la computadora." #~ msgid "open" #~ msgstr "abrir" #~ msgid "close" #~ msgstr "cerrar" #~ msgid "write" #~ msgstr "escribir" #~ msgid "read" #~ msgstr "leer" #~ msgid "check_int" #~ msgstr "check_int" #~ msgid "update" #~ msgstr "actualizar" #~ msgid "get_pin" #~ msgstr "get_pin" #~ msgid "set_pin" #~ msgstr "set_pin" #~ msgid "send_break" #~ msgstr "send_break" #~ msgid "flush" #~ msgstr "vaciar" #~ msgid "find_device" #~ msgstr "find_device" #~ msgid "find_device_by_class" #~ msgstr "find_device_by_class" #~ msgid "msg_write" #~ msgstr "msg_write" libgphoto2-2.5.9/libgphoto2_port/po/stamp-po0000644000175000001440000000001212623156265015734 00000000000000timestamp libgphoto2-2.5.9/libgphoto2_port/po/eu.gmo0000644000175000001440000001110712623156265015375 00000000000000Þ•-„=ìàáð )5Dyzjô3_“®(È ñ6:I<„"Áä/4Ph#„ ¨Éã ý  > LZi2ƒ%¶;Ü+ D 0[ Œ š ª · É ˆß h z #› ¿ CÜ ˆ }© 1' !Y { 7˜ 'Ð <ø :5Dp%µ&Û14On+‹*·â"ú -;'Jr‚”¦)ÅïM4\‘5¬âó,&"$ ) +% *(! #- ,'Bad parametersCamera is already in use.Could not claim the USB deviceCould not close '%s' (%m).Could not detach kernel driver '%s' of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not lock device '%s'Could not lock the deviceCould not query kernel driver of device.Could not set the baudrate to %dDevice '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to open '%s' (%m).Generic PortI/O problemNo errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationProject-Id-Version: eu Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2005-05-14 13:32+0200 Last-Translator: Iñaki Larrañaga Language-Team: Language: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.9.1 Parametro okerrakKamera jadanik erabiltzen ari daEzin izan da USB gailua aldarrikatuEzin izan da '%s' itxi (%m).Ezin izan da kamera gailuaren kerneleko '%s' kontrolatzailea askatuEzin izan da USB gailua aurkitu (0x%x klasea, 0x%x azpiklasea, 0x%x protokoloa). Ziurta zaitez gailua ordenagailura konektatuta dagoela.Ezin izan da USB gailua (0x%x hornitzailea, 0x%x produktua) aurkitu. Ziurta zaitez gailua ordenagailuari konektatuta dagoela.Ezin izan da eskatutako gailua USB atakan aurkituEzin izan da '%s' gailua blokeatuEzin izan da gailua blokeatuEzin izan da gailuaren kontrolatzailea kernelari eskatuEzin izan da %d(r)en baudio-tasa ezarriEzin izan da '%s' gailua blokeatu (dev_lock-ek %d itzuli du)Ezin izan da '%s' desblokeatu (dev_unlock-ek %d itzuli du)Ezin izan da '%s' gailua desblokeatu, %d pid-ak blokeatuta baitauka.Ezin izan da '%s' gailua desblokeatu.'%s' gailua %d pid-ek blokeatuta daukaErrorea USB atakako itzaltze-baldintza ezabatzeanErrorea ataka hasieratzeanErrorea liburutegia kargatzeanErrorea atakatik irakurtzeanErrorea serieko atakaren abiadura ezartzeanErrorea atakako konfigurazioa eguneratzeanErrorea atakan idazteanHuts egin du '%s' irekitzean (%m).Ataka generikoaS/I-ko arazoaErrorerik gabeErrorearen azalpena ez dago eskuragarriMemoriarik gabeParitate-errorea.Serieko ataka: %iSerieko ataka ez dago onartutaGailu honek ez du '%s' eragiketa onartzenEz da ataka hasieratu oraindikZehaztutako hornitzailearen edo produktuaren IDa (0x%x,0x%x) ez da baliozkoa.Denbora-muga irungitu da atakan irakurtzean/idazteanUSB ataka ez dago onartutaUstegabeko 0xff 0x%02x paritate-erantzuna sekuentzia.Errore ezezaguna%i PIN ezezaguna.Ataka ezezagunaZehaztu gabeko erroreaEragiketa ez dago onartutalibgphoto2-2.5.9/libgphoto2_port/po/Makefile.in.in0000644000175000001440000003020512557123756016737 00000000000000# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2004 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.14 PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ localedir = $(datadir)/locale gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = @MKINSTALLDIRS@ mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: all-@USE_NLS@ all-yes: stamp-po all-no: # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @echo "touch stamp-po" @echo timestamp > stamp-poT @mv stamp-poT stamp-po # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)' test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all $(mkinstalldirs) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: $(mkinstalldirs) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir); \ else \ cp -p $(srcdir)/$$file $(distdir); \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ $(SHELL) ./config.status force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: libgphoto2-2.5.9/libgphoto2_port/po/sr.po0000644000175000001440000005125312623156265015252 00000000000000# Serbian translation of libgphoto2_port. # Copyright (C) 2012 Lutz Mueller and others # This file is distributed under the same license as the libgphoto2 package. # МироÑлав Ðиколић , 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: libgphoto2_port-2.5.3\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-01-14 09:35+0200\n" "Last-Translator: МироÑлав Ðиколић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Општи прикључак" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Ðема грешке" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Ðепозната грешка" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "У/И проблем" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Лоши параметри" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Ðеподржана радња" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Премашено је Ñтално ограничење" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "ИÑтекло је време за читање или упиÑивање на прикључак" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "СеријÑки прикључак није подржан" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "УСБ прикључак није подржан" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Ðепознат прикључак" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Ðема више меморије" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Грешка учитавања библиотеке" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Грешка покретања прикључка" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Грешка читања Ñа прикључка" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Грешка пиÑања на прикључак" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Грешка оÑвежавања подешавања прикључка" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Грешка подешавања брзине ÑеријÑког прикључка" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Грешка чишћења уÑлова зауÑтављања на УСБ прикључку" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Ðе могу да пронађем захтевани уређај на УСБ прикључку" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Ðе могу да оÑтварим право на УСБ уређај" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Ðе могу да закључам уређај" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "грешка хал библиотеке" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Ðепозната грешка" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Радња „%s“ није подржана овим уређајем" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Прикључак још увек није покренут" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "низак" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "виÑок" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "ÐžÐ¿Ð¸Ñ Ð³Ñ€ÐµÑˆÐºÐµ није доÑтупан" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "Медиј „%s“" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Ðе могу да закључам уређај „%s“" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "Уређај „%s“ је закључан пидом %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "Уређај „%s“ не може бити закључан (закљ_уређ је вратио %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Уређај „%s“ не може бити откључан." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "Уређај „%s“ не може бити откључан јер је закључан пидом %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "Уређај „%s“ не може бити откључан (откљ_уређ је вратио %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "СеријÑки прикључак %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "ÐиÑам уÑпео да отворим „%s“ (%s)." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Ðе могу да затворим „%s“ (%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Ðе могу да пишем на прикључку (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "Грешка једнакоÑти." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Ðеочекиван низ одговора једнакоÑти 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Ðепознат пин %i." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Ðе могу да добавим ниво пина %i (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Ðе могу да подеÑим ниво пина %i на %i (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Ðе могу да преточим „%s“ (%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Ðе могу да подеÑим брзину преноÑа података на %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "ÐепоÑредни УИ УСБ маÑовног Ñкладишта" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "ÐиÑам уÑпео да отворим „%s“ (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Ðе могу да затворим „%s“ (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Ðе могу да премотам на померај: %x на „%s“ (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Ðе могу да запишем у „%s“ (%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Ðе могу да читам Ñа „%s“ (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Ðе могу да отворим УСБ уређај (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Фото-апарат је већ у употреби." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Ðе могу да откачим управљачки програм језгра „%s“ фото-апарата." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Ðе могу да пропитам управљачки програм језгра за уређај." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Ðе могу да придобијем Ñучеље %d (%s). Уверите Ñе да ниједан други програм " "(%s) или модул језгра (као што је %s) не кориÑти уређај и да ви имате право " "на читање/пиÑање на уређају." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "УÑлуга ПТП фото-апарата МекОС-а" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "непозната библгфото2 кориÑти програм" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Ðе могу да отпуÑтим Ñучеље %d (%s)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Ðе могу поново да подеÑим УСБ прикључак (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Ðе могу да затворим УСБ прикључак (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Ðе могу да подеÑим подешавања %d/%d (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Ðе могу да подеÑим подешавање зауÑтављања Ñа %d на %d (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "ДоÑтављени ид продавца или производа (0x%x,0x%x) није иÑправан." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Ðе могу да пронађем УСБ уређај (продавац 0x%x, производ 0x%x). Уверите Ñе да " "је тај уређај прикључен на рачунар." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Ðе могу да пронађем УСБ уређај (разред 0x%x, подразред 0x%x, протокол 0x%x). " "Уверите Ñе да је тај уређај прикључен на рачунар." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Ðе могу да откачим управљачки програм језгра фото-апарата." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "Ðе могу поново да прикачим управљачки програм језгра фото-апарата." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "Уређај „%s“ је закључан неким другим програмом." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "ÐиÑам уÑпео да закључам „%s“ (%m)." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "ÐиÑам уÑпео да откључам „%s“ (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "Сирови СЦСИ УСБ маÑовног Ñкладишта" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Ðе могу да пошаљем ÑцÑи наредбу на: „%s“ (%m)." #~ msgid "Called for filename '%s'." #~ msgstr "Позвах назив датотеке „%s“." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Ðе могу да учитам „%s“: „%s“." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Ðе могу да пронађем неке функције у „%s“: „%s“." #~ msgid "'%s' already loaded" #~ msgstr "„%s“ је већ учитан" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Ðе могу да учитам ÑпиÑак управљачких програма прикључка: „%s“." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "Учитан је „%s“ („%s“) из „%s“." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "КориÑтим лтдл да учитам уи управљачке програме из „%s“..." #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "Бројим уноÑе (%i доÑтупан)..." #~ msgstr[1] "Бројим уноÑе (%i доÑтупна)..." #~ msgstr[2] "Бројим уноÑе (%i доÑтупних)..." #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "ДоÑтупан је %i редован уноÑ." #~ msgstr[1] "ДоÑтупна Ñу %i редовна уноÑа." #~ msgstr[2] "ДоÑтупно је %i редовних уноÑа." #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "Тражим путању „%s“ (%i ÑƒÐ½Ð¾Ñ Ñ˜Ðµ доÑтупан)..." #~ msgstr[1] "Тражим путању „%s“ (%i уноÑа Ñу доÑтупна)..." #~ msgstr[2] "Тражим путању „%s“ (%i уноÑа је доÑтупно)..." #~ msgid "Starting regex search for '%s'..." #~ msgstr "Покрећем претрагу регуларног израза за „%s“..." #~ msgid "Trying '%s'..." #~ msgstr "Покушавам „%s“..." #~ msgid "regcomp failed" #~ msgstr "није уÑпело „regcomp“" #~ msgid "re_match failed (%i)" #~ msgstr "није уÑпело „re_match“ (%i)" #~ msgid "regexec failed" #~ msgstr "није уÑпело „regexec“" #~ msgid "Looking up entry '%s'..." #~ msgstr "Тражим Ñтавку „%s“..." #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "Добављам податке Ñтавке „%i“ (%i доÑтупна)..." #~ msgstr[1] "Добављам податке Ñтавке „%i“ (%i доÑтупне)..." #~ msgstr[2] "Добављам податке Ñтавке „%i“ (%i доÑтупних)..." #~ msgid "Creating new device..." #~ msgstr "Стварам нови уређај..." #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Ðе могу да учитам „%s“ („%s“)." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "Ðе могу да пронађем „gp_port_library_operations“ у „%s“ („%s“)" #~ msgid "Opening %s port..." #~ msgstr "Отварам %s прикључак..." #~ msgid "Closing port..." #~ msgstr "Затварам прикључак..." #~ msgid "Resetting port..." #~ msgstr "Поништавам прикључак..." #~ msgid "Freeing port..." #~ msgstr "ОÑлобађам прикључак..." #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "ЗапиÑујем %i=0x%x бајт(а) на прикључак..." #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "Ðе могу да запишем %i од %i бајта" #~ msgstr[1] "Ðе могу да запишем %i од %i бајта" #~ msgstr[2] "Ðе могу да запишем %i од %i бајтова" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "Читам %i=0x%x бајт Ñа прикључка..." #~ msgstr[1] "Читам %i=0x%x бајта Ñа прикључка..." #~ msgstr[2] "Читам %i=0x%x бајтова Ñа прикључка..." #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "Ðе могу да прочитам %i од %i бајта" #~ msgstr[1] "Ðе могу да прочитам %i од %i бајта" #~ msgstr[2] "Ðе могу да прочитам %i од %i бајтова" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "Читам %i=0x%x бајт Ñа крајње тачке прекида..." #~ msgstr[1] "Читам %i=0x%x бајта Ñа крајње тачке прекида..." #~ msgstr[2] "Читам %i=0x%x бајтова Ñа крајње тачке прекида..." #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Могу да прочитам Ñамо %i од %i бајта" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "Читам %i=0x%x бајт Ñа крајње тачке прекида (брзо)..." #~ msgstr[1] "Читам %i=0x%x бајта Ñа крајње тачке прекида (брзо)..." #~ msgstr[2] "Читам %i=0x%x бајтова Ñа крајње тачке прекида (брзо)..." #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Подешавам време иÑтека на %i милиÑекунду(е)..." #~ msgid "Getting timeout..." #~ msgstr "Добављам време иÑтека..." #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Текуће време иÑтека: %i милиÑекунде" #~ msgid "Setting settings..." #~ msgstr "Подешавам подешавања..." #~ msgid "Getting level of pin %i..." #~ msgstr "Добављам ниво пина %i..." #~ msgid "Level of pin %i: %i" #~ msgstr "Ðиво пина %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Подешавам пин %i (%s: „%s“) на „%s“..." #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "Шаљем прекид (%i милиÑекунде)..." #~ msgid "Flushing port..." #~ msgstr "Претачем прикључак..." #~ msgid "Clear halt..." #~ msgstr "ЧиÑтим заÑтој..." #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Порука запиÑивања (захтев=0x%x вредноÑÑ‚=0x%x индекÑ=0x%x величина=%i=0x" #~ "%x)..." #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Порука читања (захтев=0x%x вредноÑÑ‚=0x%x индекÑ=0x%x величина=%i=0x%x)..." #~ msgid "Device has driver '%s' attached." #~ msgstr "Уређај има прикачен управљачки програм „%s“." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Уређај има прикачен управљачки програм „%s“, откачињем га." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "УСБ уређај (продавац 0x%x, производ 0x%x) је уређај за маÑовно " #~ "Ñкладиштење, и можда неће радити Ñа гфото-ом2. Упуте: %s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "Уређај има прикачен управљачки програм језгра (%d), откачињем га." libgphoto2-2.5.9/libgphoto2_port/po/es.gmo0000644000175000001440000001055112623156265015375 00000000000000Þ•*l;¼¨©¸×yòjl3× & @6a:˜<Ó"3/SƒŸ·#Ó ÷2 L Yen  ›©¸2Ò%;++g“0ª Ûé ù  z. © &À ç š Ÿ ;/ %k ‘ +² <Þ A K] )© .Ó 7:Xv0”1Å÷2B R+\ ˆ”¦¶-Ð'þG&@n¯;Ç)<R *$ #%'(& ) !" Bad parametersCould not claim the USB deviceCould not close '%s' (%m).Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not lock device '%s'Could not lock the deviceCould not set the baudrate to %dDevice '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to open '%s' (%m).Generic PortI/O problemNo errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationProject-Id-Version: libgphoto2_port Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2002-06-18 22:59-0300 Last-Translator: Fabian Mandelbaum Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Parámetros incorrectosNo se pudo reclamar el dispositivo USBNo se pudo cerrar '%s' (%m).No se pudo encontrar el dispositivo USB (clase 0x%x, subclase 0x%x, protocolo 0x%x). Debe asegurarse que este dispositivo está conectado a la computadora.No se pudo encontrar el dispositivo USB (fabricante 0x%x, producto 0x%x). Debe asegurarse que este dispositivo está conectado a la computadora.No se pudo encontrar el dispositivo pedido en el puerto USBNo se pudo trabar el dispositivo '%s'No se pudo trabar el dispositivoNo se pudo configurar la tasa de baud en %dNo se pudo trabar el dispositivo '%s' (dev_lock devolvió %d)No se pudo destrabar el dispositivo '%s' (dev_unlock devolvió %d)No se pudo destrabar el dispositivo '%s' ya que está trabado por el pid %d.No se pudo destrabar el dispositivo '%s'.El dispositivo '%s' está trabado por el pid %dError borrando una condición de parada en el puerto USBError inicializando el puertoError cargando una bibliotecaError leyendo desde el puertoError configurando la velocidad del puerto serieError actualizando las configuraciones del puertoError escribiendo en el puertoNo se pudo abrir '%s' (%m).Puerto genéricoProblema de E/SSin errorNo está disponible la descripción del errorSin memoriaError de paridad.Puerto serie %iPuerto serie no soportadoEste dispositivo no soporta la operación '%s'Todavía no se ha inicializado el puertoEl fabricante o ID de producto proporcionado (0x%x, 0x%x) no es válido.Tiempo de espera agotado leyendo de, o escribiendo en, el puertoPuerto USB no soportadoSecuencia de respuesta de paridad 0xff, 0x%02x no esperada.Error desconocidoPin %i desconocido.Puerto desconocidoError no especificadoOperación no soportadalibgphoto2-2.5.9/libgphoto2_port/po/nl.po0000644000175000001440000004321012623156265015231 00000000000000# Dutch translations for libgphoto2_port. # This file is distributed under the same license as the libgphoto2 package. # # "To noÄ sem jo videl!" # # Kurt De Bree , 2006. # Benno Schulenberg , 2008, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: libgphoto2_port-2.5.3\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-01-11 15:17+0100\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.0\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Algemene poort" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Geen fout" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Ongespecificeerde fout" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "Invoer-/uitvoerprobleem" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Ongeldige parameters" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Niet-ondersteunde actie" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Vaste limiet is overschreden" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Tijdsoverschrijding tijdens lezen van of schrijven naar de poort" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Seriële poort wordt niet ondersteund" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "USB-poort wordt niet ondersteund" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Onbekende poort" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Onvoldoende geheugen beschikbaar" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Fout bij het laden van een bibliotheek" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Fout bij het initialiseren van de poort" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Fout bij het lezen van de poort" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Fout bij het schrijven naar de poort" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Fout tijdens het bijwerken van de poortinstellingen" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Fout tijdens het instellen van de poortsnelheid" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Fout tijdens het wissen van de 'halt'-toestand op de USB-poort" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Kan op de USB-poort het gevraagde apparaat niet vinden" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Kan het USB-apparaat niet claimen" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Kan het apparaat niet vergrendelen" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "'libhal'-fout" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Onbekende fout" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Actie '%s' wordt niet ondersteund door dit apparaat" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "De poort is nog niet geïnitialiseerd" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "laag" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "hoog" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Geen foutbeschrijving beschikbaar" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "Media '%s'" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Kan apparaat '%s' niet vergrendelen" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "Apparaat '%s' is vergrendeld door PID %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "Apparaat '%s' kan niet worden vergrendeld (dev_lock gaf %d terug)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Apparaat '%s' kan niet worden ontgrendeld." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "Apparaat '%s' kan niet worden ontgrendeld aangezien het vergrendeld is door " "PID %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "Apparaat '%s' kan niet worden ontgrendeld (dev_unlock gaf %d terug)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Seriële poort %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Kan '%s' niet openen (%s)." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Kan '%s' niet sluiten (%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Kan niet naar poort schrijven (%s)." #: serial/unix.c:583 msgid "Parity error." msgstr "Pariteitsfout." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Onverwachte pariteitsantwoordvolgorde 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Onbekende pin %i." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Kan het niveau van pin %i niet bepalen (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Kan het niveau van pin %i niet op %i instellen (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Kan '%s' niet leegmaken (%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Kan de baudrate niet instellen op %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "USB-massaopslag, directe invoer/uitvoer" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Kan '%s' niet openen (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Kan '%s' niet sluiten (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Kan niet springen naar positie %x in '%s' (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Kan niet naar '%s' schrijven (%m)" #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Kan niet uit '%s' lezen (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Kan USB-apparaat niet openen (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Camera is reeds in gebruik." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "" "Kan het kernelstuurprogramma '%s' van het camera-apparaat niet onthechten." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Kan het kernelstuurprogramma van het apparaat niet ondervragen." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Kan interface %d niet claimen (%s). Zorg ervoor dat geen ander programma " "(%s) of kernelmodule (zoals %s) het apparaat gebruikt en dat u lees- en " "schrijfrechten voor dit apparaat hebt." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "MacOS PTP-camera-service" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "onbekende 'libgphoto2' gebruikt programma" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Kan interface %d niet vrijgeven (%s)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Kan USB-poort niet resetten (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Kan USB-poort niet sluiten (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Kan configuratie %d/%d niet instellen (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Kan 'alt'-instelling niet wijzigen van %d naar %d (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "Het opgegeven leveranciers- of product-ID (0x%x,0x%x) is ongeldig." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Kan USB-apparaat (leverancier 0x%x, product 0x%x) niet vinden. Zorg ervoor " "dat het apparaat aan de computer aangesloten is." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Kan USB-apparaat (klasse 0x%x, subklasse 0x%x, protocol 0x%x) niet vinden. " "Zorg ervoor dat het apparaat aan de computer aangesloten is." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Kan het kernelstuurprogramma van het camera-apparaat niet onthechten." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "" "Kan het kernelstuurprogramma van het camera-apparaat niet opnieuw aanhechten." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "Apparaat '%s' is vergrendeld door een ander programma." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "Kan '%s' niet vergrendelen (%m)." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Kan '%s' niet ontgrendelen (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "USB-massaopslag, rauwe SCSI-toegang" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Kan SCSI-commando niet verzenden naar '%s' (%m)." #~ msgid "Called for filename '%s'." #~ msgstr "Gevraagde bestandsnaam is '%s'." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Kan '%s' niet laden: '%s'." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Kan sommige functies in '%s' niet vinden: '%s'." #~ msgid "'%s' already loaded" #~ msgstr "'%s' is al geladen" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Kan poortstuurprogrammalijst niet laden: '%s'." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "'%s' ('%s') is geladen uit '%s'." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "Laden (met 'ltdl') van invoer-/uitvoerstuurprogramma's uit '%s'..." #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "Tellen van items (%i beschikbaar)..." #~ msgstr[1] "Tellen van items (%i beschikbaar)..." #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "%i normaal item is beschikbaar." #~ msgstr[1] "%i normale items zijn beschikbaar." #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "Zoeken naar pad '%s' (%i item beschikbaar)..." #~ msgstr[1] "Zoeken naar pad '%s' (%i items beschikbaar)..." #~ msgid "Starting regex search for '%s'..." #~ msgstr "Begin van zoeken (met reguliere expressie) naar '%s'..." #~ msgid "Trying '%s'..." #~ msgstr "Proberen van '%s'..." #~ msgid "regcomp failed" #~ msgstr "regcomp() is mislukt" #~ msgid "re_match failed (%i)" #~ msgstr "re_match() is mislukt (%i)" #~ msgid "regexec failed" #~ msgstr "regexec() is mislukt" #~ msgid "Looking up entry '%s'..." #~ msgstr "Zoeken van item '%s'..." #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "Ontvangen van info over item %i (%i beschikbaar)..." #~ msgstr[1] "Ontvangen van info over item %i (%i beschikbaar)..." #~ msgid "Creating new device..." #~ msgstr "Aanmaken van nieuw apparaat..." #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Kan '%s' niet laden ('%s')." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "Kan 'gp_port_library_operations' niet vinden in '%s' ('%s')" #~ msgid "Opening %s port..." #~ msgstr "Openen van de %s-poort..." #~ msgid "Closing port..." #~ msgstr "Sluiten van poort..." #~ msgid "Resetting port..." #~ msgstr "Resetten van poort..." #~ msgid "Freeing port..." #~ msgstr "Vrijmaken van poort..." #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Schrijven van %i=0x%x byte(s) naar de poort..." #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "Kon slechts %i van %i byte schrijven" #~ msgstr[1] "Kon slechts %i van %i bytes schrijven" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "Lezen van %i=0x%x byte van de poort..." #~ msgstr[1] "Lezen van %i=0x%x bytes van de poort..." #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "Kon slechts %i van %i byte lezen" #~ msgstr[1] "Kon slechts %i van %i bytes lezen" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "Lezen van %i=0x%x byte van interrupt-eindpunt..." #~ msgstr[1] "Lezen van %i=0x%x bytes van interrupt-eindpunt..." #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Kon slechts %i van %i byte(s) lezen" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "Lezen van %i=0x%x byte van interrupt-eindpunt (snel)..." #~ msgstr[1] "Lezen van %i=0x%x bytes van interrupt-eindpunt (snel)..." #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Instellen van tijdslimiet op %i milliseconde(n)..." #~ msgid "Getting timeout..." #~ msgstr "Bepalen van tijdslimiet..." #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Huidige tijdslimiet: %i milliseconden" #~ msgid "Setting settings..." #~ msgstr "Doorvoeren van instellingen..." #~ msgid "Getting level of pin %i..." #~ msgstr "Bepalen van het niveau van pin %i..." #~ msgid "Level of pin %i: %i" #~ msgstr "Niveau van pin %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Instellen van pin %i (%s: '%s') op '%s'..." #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "Verzenden van 'break' (%i milliseconden)..." #~ msgid "Flushing port..." #~ msgstr "Leegmaken van poort..." #~ msgid "Clear halt..." #~ msgstr "Wissen van 'halt'-toestand..." #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Schrijven van bericht (verzoek=0x%x waarde=0x%x index=0x%x omvang=%i=0x" #~ "%x)..." #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Lezen van bericht (verzoek=0x%x waarde=0x%x index=0x%x omvang=%i=0x%x)..." #~ msgid "Device has driver '%s' attached." #~ msgstr "Het apparaat heeft als stuurprogramma '%s' aangehecht." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "" #~ "Het apparaat heeft als stuurprogramma '%s' aangehecht; dit wordt nu " #~ "onthecht." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "Het USB-apparaat (leverancier 0x%x, product 0x%x) is een massa-" #~ "opslagmedium en zal misschien niet werken met gphoto2. Referentie: %s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "" #~ "Het apparaat heeft een stuurprogramma aangehecht (%d); deze wordt nu " #~ "onthecht." #~ msgid "Could not open USB device (%m)." #~ msgstr "Kan USB-apparaat niet openen (%m)." #~ msgid "" #~ "Could not claim interface %d (%m). Make sure no other program or kernel " #~ "module (such as %s) is using the device and you have read/write access to " #~ "the device." #~ msgstr "" #~ "Kan interface %d niet claimen (%m). Zorg ervoor dat geen ander programma " #~ "of kernelmodule (zoals %s) het apparaat gebruikt en dat u lees- en " #~ "schrijfrechten voor dit apparaat hebt." #~ msgid "Could not release interface %d (%m)." #~ msgstr "Kan interface %d niet vrijgeven (%m)." #~ msgid "Could not reset USB port (%m)." #~ msgstr "Kan USB-poort niet resetten (%m)." #~ msgid "Could not set config %d/%d (%m)" #~ msgstr "Kan configuratie %d/%d niet instellen (%m)" #~ msgid "Could not set altsetting from %d to %d (%m)" #~ msgstr "Kan 'alt'-instelling niet wijzigen van %d naar %d (%m)" #~ msgid "(unknown)" #~ msgstr "(onbekend)" libgphoto2-2.5.9/libgphoto2_port/po/sk.po0000644000175000001440000004453512623156265015250 00000000000000# Slovak translation of libgphoto2 # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # Ivan Masár , 2008, 2010, 2012. # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.5.0\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2012-07-31 00:34+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "VÅ¡eobecný port" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Žiadna chyba" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "NeurÄená chyba" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "V/V problém" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Chybné parametre" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Nepodporovaná operácia" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Pevný limit bol prekroÄený" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "" "Vyhradený Äasový interval vypÅ¡al poÄas Äítania alebo zapisovania do portu" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Sériový port nie je podporovaný" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "USB port nie je podporovaný" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Neznámy port" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Nedostatok pamäte" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Chyba pri naÄítavaná knižnice" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Chyba pri inicializácii portu" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Chyba pri Äítaní z portu" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Chyba pri zapisovaní do portu" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Chyba pri aktualizácii nastavení portu" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Chyba pri nastavovaní rýchlosti sériového portu" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Chyba pri ruÅ¡ení stavu blokovania portu USB" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Nebolo možné nájsÅ¥ požadované zariadenie na porte USB" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Nebolo možné prevziaÅ¥ kontrolu nad USB zariadením" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Nebolo možné zamknúť zariadenie" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "chyba libhal" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Neznáma chyba" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Toto zariadenie nepodporuje operáciu „%s“" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Port zatiaľ nebol inicializovaný" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "nízka" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "vysoká" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Nie je dostupný popis chyby" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "NosiÄ â€ž%s“" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Nebolo možné zamknúť zariadenie „%s“" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "Zariadenie „%s“ zamkol proces s PID %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "Zariadenie „%s“ nebolo možné zamknúť (dev_lock returned %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Zariadenie „%s“ nebolo možné odomknúť." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "Zariadenie „%s“ nebolo možné odomknúť, pretože ho zamkol proces s PID %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "Zariadenie „%s“ nebolo možné odomknúť (dev_unlock vrátil %d)." #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Sériový port %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Nebolo možné otvoriÅ¥ „%s“ (%s)." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Nebolo možné zatvoriÅ¥ „%s“ (%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Nebolo možné zapísaÅ¥ do portu (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "Chyba parity." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "NeoÄakávaná odpoveÄ parity 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Neznámy kolík %i." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Nebolo možné zistiÅ¥ úroveň kontaktu %i (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Nebolo možné nastaviÅ¥ úroveň kontaktu %i na %i (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "nebolo možné vyÄistiÅ¥ „%s“ (%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Nebolo možné nastaviÅ¥ rýchlosÅ¥ na %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "Hromadné úložisko USB priamy V/V" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Nepodarilo sa otvoriÅ¥ „%s“ (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Nebolo možné zatvoriÅ¥ „%s“ (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Nebolo možné presunúť sa na pozíciu %x v „%s“ (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Nebolo možné zapísaÅ¥ do „%s“ (%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Nebolo možné ÄítaÅ¥ z „%s“ (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Nebolo možné otvoriÅ¥ zariadenie USB (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Kamera sa už používa." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Nebolo možné odpojiÅ¥ ovládaÄ zariadenia fotoaparátu „%s“." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Nepodarilo sa spojiÅ¥ s ovládaÄom zariadenia v jadre." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, fuzzy, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Nepodarilo sa prevziaÅ¥ kontrolu nad rozhraním %d (%s). Uistite sa, že žiadny " "iný program alebo modul jadra (ako %s) nepoužíva zariadenie a že k " "zariadeniu máte prístup na Äítanie aj zápis." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Nebolo možné uvoľniÅ¥ rozhranie %d (%s)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Nebolo možné reÅ¡tartovaÅ¥ port USB (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Nebolo možné zatvoriÅ¥ port USB (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Nebolo možné nastaviÅ¥ konfiguráciu %d/%d (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Nebolo možné nastaviÅ¥ alternatívne nastavenie z %d na %d (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "Zadaný ID dodávateľa alebo produktu (0x%x,0x%x) nie je platný." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Nebolo možné nájsÅ¥ USB zariadenie (dodávateľ 0x%x, produkt 0x%x). Uistite " "sa, že je toto zariadenie pripojené k poÄítaÄu." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Nebolo možné nájsÅ¥ USB zariadenie (trieda 0x%x, podtrieda 0x%x, protocol 0x" "%x). Uistite sa, že je toto zariadenie pripojené k poÄítaÄu." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Nebolo možné odpojiÅ¥ ovládaÄ zariadenia fotoaparátu." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "Nebolo možné odpojiÅ¥ ovládaÄ zariadenia fotoaparátu." #: usbscsi/linux.c:109 #, fuzzy, c-format msgid "Device '%s' is locked by another app." msgstr "Zariadenie „%s“ zamkol proces s PID %d" #: usbscsi/linux.c:114 #, fuzzy, c-format msgid "Failed to lock '%s' (%m)." msgstr "Nepodarilo sa otvoriÅ¥ „%s“ (%m)." #: usbscsi/linux.c:130 #, fuzzy, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Nepodarilo sa otvoriÅ¥ „%s“ (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "Hromadné úložisko USB pomocou SCSI" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Nebolo možné poslaÅ¥ príkaz SCSI pre „%s“ (%m)." #~ msgid "Called for filename '%s'." #~ msgstr "Bol požadovaný názov súboru „%s“." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Nebolo možné naÄítaÅ¥ „%s“: „%s“." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Nebolo možné nájsÅ¥ niektoré funkcie v „%s“: „%s“." #~ msgid "'%s' already loaded" #~ msgstr "„%s“ je už naÄítané" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Nebolo možné naÄítaÅ¥ zoznam ovládaÄov portov: „%s“." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "Bol naÄítaný „%s“ („%s“) z „%s“." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "Na naÄítanie io-drivers „%s“ sa používa ltdl..." #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "PoÄítajú sa položky (%i dostupná)..." #~ msgstr[1] "PoÄítajú sa položky (%i dostupné)..." #~ msgstr[2] "PoÄítajú sa položky (%i dostupných)..." #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "%i dostupná obyÄajná položka." #~ msgstr[1] "%i dostupné obyÄajné položky." #~ msgstr[2] "%i dostupných obyÄajných položiek." #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "Hľadá sa cesta „%s“ (%i dostupná položka)..." #~ msgstr[1] "Hľadá sa cesta „%s“ (%i dostupné položky)..." #~ msgstr[2] "Hľadá sa cesta „%s“ (%i dostupných položiek)..." #~ msgid "Starting regex search for '%s'..." #~ msgstr "ZaÄína sa hľadanie regulárneho výrazu „%s“..." #~ msgid "Trying '%s'..." #~ msgstr "Skúša sa „%s“..." #~ msgid "regcomp failed" #~ msgstr "regcomp zlyhal" #~ msgid "re_match failed (%i)" #~ msgstr "re_match zlyhal (%i)" #~ msgid "regexec failed" #~ msgstr "regexec zlyhal" #~ msgid "Looking up entry '%s'..." #~ msgstr "Vyhľadáva sa položka „%s“..." #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "Získavajú sa informácie o položke %i (%i dostupná)..." #~ msgstr[1] "Získavajú sa informácie o položke %i (%i dostupné)..." #~ msgstr[2] "Získavajú sa informácie o položke %i (%i dostupných)..." #~ msgid "Creating new device..." #~ msgstr "Vytvára sa nové zariadenie..." #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Nebolo možné naÄítaÅ¥ „%s“ („%s“)." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "Nebolo možné nájsÅ¥ 'gp_port_library_operations' v „%s“ („%s“)" #~ msgid "Opening %s port..." #~ msgstr "Otvára sa port %s..." #~ msgid "Closing port..." #~ msgstr "Zatvára sa port..." #~ msgid "Freeing port..." #~ msgstr "Uvoľnuje sa port..." #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Zapisujú sa bajty %i=0x%x do portu..." #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "Bolo možné zapísaÅ¥ iba %i z %i bajtu" #~ msgstr[1] "Bolo možné zapísaÅ¥ iba %i z %i bajtov" #~ msgstr[2] "Bolo možné zapísaÅ¥ iba %i z %i bajtov" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "Číta sa %i=0x%x bajt z portu..." #~ msgstr[1] "Číta sa %i=0x%x bajty z portu..." #~ msgstr[2] "Číta sa %i=0x%x bajtov z portu..." #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "Bolo možné preÄítaÅ¥ iba %i z %i bajtu" #~ msgstr[1] "Bolo možné preÄítaÅ¥ iba %i z %i bajtov" #~ msgstr[2] "Bolo možné preÄítaÅ¥ iba %i z %i bajtov" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "Číta sa %i=0x%x bajt z konca preruÅ¡enia..." #~ msgstr[1] "Číta sa %i=0x%x bajty z konca preruÅ¡enia..." #~ msgstr[2] "Číta sa %i=0x%x bajtov z konca preruÅ¡enia..." #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Bolo možné preÄítaÅ¥ iba %i z %i bajtov" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "Číta sa %i=0x%x bajt z konca preruÅ¡enia (rýchlo)..." #~ msgstr[1] "Číta sa %i=0x%x bajty z konca preruÅ¡enia (rýchlo)..." #~ msgstr[2] "Číta sa %i=0x%x bajtov z konca preruÅ¡enia (rýchlo)..." #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Nastavuje sa interval expirácie na %i millisekúnd..." #~ msgid "Getting timeout..." #~ msgstr "ZisÅ¥uje sa interval expirácie..." #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Aktuálny interval expirácie: %i millisekúnd" #~ msgid "Setting settings..." #~ msgstr "Nastavuje sa..." #~ msgid "Getting level of pin %i..." #~ msgstr "ZisÅ¥uje sa úroveň kolíka %i..." #~ msgid "Level of pin %i: %i" #~ msgstr "Úroveň kolíka %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Nastavuje sa kolík %i (%s: „%s“) na „%s“..." #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "Posiela sa preruÅ¡enie (%i millisekúnd)..." #~ msgid "Flushing port..." #~ msgstr "ÄŒistí sa port..." #~ msgid "Clear halt..." #~ msgstr "ÄŒistí sa blokovanie..." #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Zapisuje sa správa (požiadavka=0x%x hodnota=0x%x index=0x%x veľkosÅ¥=%i=0x" #~ "%x)..." #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Číta sa správa (požiadavka=0x%x hodnota=0x%x index=0x%x veľkosÅ¥=%i=0x" #~ "%x)..." #~ msgid "Device has driver '%s' attached." #~ msgstr "Zariadenie má pripojený ovládaÄ â€ž%s“." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Zariadenie má pripojený ovládaÄ â€ž%s“, teraz sa odpája." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "Zariadenie USB (dodávateľ 0x%x, produkt 0x%x) je hromadné úložné " #~ "zariadenie a nemusí s gphoto2 fungovaÅ¥. Odkaz: %s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "Zariadenie má pripojený ovládaÄ jadra (%d), teraz sa odpája." #~ msgid "Could not open USB device (%m)." #~ msgstr "Nebolo možné otvoriÅ¥ zariadenie USB (%m)." #~ msgid "" #~ "Could not claim interface %d (%m). Make sure no other program or kernel " #~ "module (such as %s) is using the device and you have read/write access to " #~ "the device." #~ msgstr "" #~ "nepodarilo sa prevziaÅ¥ kontrolu nad rozhraním %d (%m). Uistite sa, že " #~ "žiadny iný program alebo modul jadra (ako %s) nepoužíva zariadenie a že k " #~ "zariadeniu máte prístup na Äítanie aj zápis." #~ msgid "Could not release interface %d (%m)." #~ msgstr "Nebolo možné uvoľniÅ¥ rozhranie %d (%m)." #~ msgid "Could not reset USB port (%m)." #~ msgstr "Nebolo možné reÅ¡tartovaÅ¥ port USB (%m)." #~ msgid "Could not set config %d/%d (%m)" #~ msgstr "Nebolo možné nastaviÅ¥ konfiguráciu %d/%d (%m)" #~ msgid "Could not set altsetting from %d to %d (%m)" #~ msgstr "Nebolo možné nastaviÅ¥ alternatívne nastavenie z %d na %d (%m)" #~ msgid "(unknown)" #~ msgstr "(neznámy)" #~ msgid "msg_read" #~ msgstr "msg_read" libgphoto2-2.5.9/libgphoto2_port/po/quot.sed0000644000175000001440000000023112557123757015747 00000000000000s/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g libgphoto2-2.5.9/libgphoto2_port/po/eu.po0000644000175000001440000003121312623156264015230 00000000000000# translation of libgphoto2_port.po to Basque # Basque Translation. # Copyright © 2005 Iñaki Larrañaga. # Iñaki Larrañaga , 2005. # msgid "" msgstr "" "Project-Id-Version: eu\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2005-05-14 13:32+0200\n" "Last-Translator: Iñaki Larrañaga \n" "Language-Team: \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.9.1\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Ataka generikoa" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Errorerik gabe" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Zehaztu gabeko errorea" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "S/I-ko arazoa" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Parametro okerrak" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Eragiketa ez dago onartuta" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Denbora-muga irungitu da atakan irakurtzean/idaztean" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Serieko ataka ez dago onartuta" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "USB ataka ez dago onartuta" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Ataka ezezaguna" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Memoriarik gabe" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Errorea liburutegia kargatzean" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Errorea ataka hasieratzean" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Errorea atakatik irakurtzean" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Errorea atakan idaztean" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Errorea atakako konfigurazioa eguneratzean" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Errorea serieko atakaren abiadura ezartzean" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Errorea USB atakako itzaltze-baldintza ezabatzean" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Ezin izan da eskatutako gailua USB atakan aurkitu" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Ezin izan da USB gailua aldarrikatu" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Ezin izan da gailua blokeatu" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Errore ezezaguna" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Gailu honek ez du '%s' eragiketa onartzen" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Ez da ataka hasieratu oraindik" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Errorearen azalpena ez dago eskuragarri" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Ezin izan da '%s' gailua blokeatu" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "'%s' gailua %d pid-ek blokeatuta dauka" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "Ezin izan da '%s' gailua blokeatu (dev_lock-ek %d itzuli du)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Ezin izan da '%s' gailua desblokeatu." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "Ezin izan da '%s' gailua desblokeatu, %d pid-ak blokeatuta baitauka." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "Ezin izan da '%s' desblokeatu (dev_unlock-ek %d itzuli du)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Serieko ataka: %i" #: serial/unix.c:430 #, fuzzy, c-format msgid "Failed to open '%s' (%s)." msgstr "Huts egin du '%s' irekitzean (%m)." #: serial/unix.c:450 #, fuzzy, c-format msgid "Could not close '%s' (%s)." msgstr "Ezin izan da '%s' itxi (%m)." #: serial/unix.c:506 #, fuzzy, c-format msgid "Could not write to port (%s)" msgstr "Ezin izan da atakan idatzi (%m)" #: serial/unix.c:583 msgid "Parity error." msgstr "Paritate-errorea." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Ustegabeko 0xff 0x%02x paritate-erantzuna sekuentzia." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "%i PIN ezezaguna." #: serial/unix.c:652 #, fuzzy, c-format msgid "Could not get level of pin %i (%s)." msgstr "Ezin izan da %i pin-aren maila lortu (%m)." #: serial/unix.c:688 #, fuzzy, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Ezin izan da %i pin-aren maila %i gisa ezarri (%m)." #: serial/unix.c:715 #, fuzzy, c-format msgid "Could not flush '%s' (%s)." msgstr "Ezin izan da '%s' hustu (%m)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Ezin izan da %d(r)en baudio-tasa ezarri" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Huts egin du '%s' irekitzean (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Ezin izan da '%s' itxi (%m)." #: usbdiskdirect/linux.c:324 #, fuzzy, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Ezin izan da '%s' itxi (%m)." #: usbdiskdirect/linux.c:346 #, fuzzy, c-format msgid "Could not write to '%s' (%m)." msgstr "Ezin izan da atakan idatzi (%m)" #: usbdiskdirect/linux.c:367 #, fuzzy, c-format msgid "Could not read from '%s' (%m)." msgstr "Ezin izan da '%s' itxi (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, fuzzy, c-format msgid "Could not open USB device (%s)." msgstr "Ezin izan da USB gailua ireki (%m)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Kamera jadanik erabiltzen ari da" #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Ezin izan da kamera gailuaren kerneleko '%s' kontrolatzailea askatu" #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Ezin izan da gailuaren kontrolatzailea kernelari eskatu" #: usb/libusb.c:296 libusb1/libusb1.c:409 #, fuzzy, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Ezin izan da %d interfazea aldarrikatu (%m). Ziurta zaitez beste programa " "batek edo kerneleko modulo batek (%s bezalakoak) gailua erabiltzen ari ez " "dela, eta gailuan irakurtzeko/idazteko baimenak dituzula." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, fuzzy, c-format msgid "Could not release interface %d (%s)." msgstr "Ezin izan da %d interfazea askatu (%m)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, fuzzy, c-format msgid "Could not reset USB port (%s)." msgstr "Ezin izan da USB ataka itxi (%m)." #: usb/libusb.c:372 #, fuzzy, c-format msgid "Could not close USB port (%s)." msgstr "Ezin izan da USB ataka itxi (%m)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, fuzzy, c-format msgid "Could not set config %d/%d (%s)" msgstr "Ezin izan da %d/%d konfigurazioa ezarri (%m)." #: usb/libusb.c:664 libusb1/libusb1.c:867 #, fuzzy, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Ezin izan da %d/%d aukerazko konfigurazioa ezarri (%m)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "" "Zehaztutako hornitzailearen edo produktuaren IDa (0x%x,0x%x) ez da baliozkoa." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Ezin izan da USB gailua (0x%x hornitzailea, 0x%x produktua) aurkitu. Ziurta " "zaitez gailua ordenagailuari konektatuta dagoela." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Ezin izan da USB gailua aurkitu (0x%x klasea, 0x%x azpiklasea, 0x%x " "protokoloa). Ziurta zaitez gailua ordenagailura konektatuta dagoela." #: libusb1/libusb1.c:396 #, fuzzy msgid "Could not detach kernel driver of camera device." msgstr "Ezin izan da kamera gailuaren kerneleko '%s' kontrolatzailea askatu" #: libusb1/libusb1.c:509 #, fuzzy msgid "Could not reattach kernel driver of camera device." msgstr "Ezin izan da kamera gailuaren kerneleko '%s' kontrolatzailea askatu" #: usbscsi/linux.c:109 #, fuzzy, c-format msgid "Device '%s' is locked by another app." msgstr "'%s' gailua %d pid-ek blokeatuta dauka" #: usbscsi/linux.c:114 #, fuzzy, c-format msgid "Failed to lock '%s' (%m)." msgstr "Huts egin du '%s' irekitzean (%m)." #: usbscsi/linux.c:130 #, fuzzy, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Huts egin du '%s' irekitzean (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "" #: usbscsi/linux.c:342 #, fuzzy, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Ezin izan da %d/%d aukerazko konfigurazioa ezarri (%m)" #, fuzzy #~ msgid "Called for filename '%s'." #~ msgstr "Huts egin du '%s' irekitzean (%m)." #, fuzzy #~ msgid "Could not load '%s': '%s'." #~ msgstr "Ezin izan da '%s' itxi (%m)." #, fuzzy #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Ezin izan da '%s' hustu (%m)." #, fuzzy #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Ezin izan da '%s' gailua blokeatu" #, fuzzy #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Ezin izan da '%s' itxi (%m)." #, fuzzy #~ msgid "Could only write %i out of %i byte(s)" #~ msgstr "Ezin izan da atakan idatzi (%m)" #, fuzzy #~ msgid "Getting level of pin %i..." #~ msgstr "Ezin izan da %i pin-aren maila lortu (%m)." #, fuzzy #~ msgid "Clear halt..." #~ msgstr "clear_halt" #~ msgid "msg_read" #~ msgstr "msg_read" #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Gailuak '%s' kontrolatzailea erantsita du, askatu orain." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "USB gailua (0x%x hornitzailea, 0x%x produktua) biltegiratze-gailua da, " #~ "eta ez du gphoto2-rekin funtzionatuko. Erreferentzia: %s" #~ msgid "Could not load any io-library because '%s' could not be opened (%m)" #~ msgstr "" #~ "Ezin izan da sarrerako/irteerako liburutegia kargatu, '%s' ezin izan " #~ "delako ireki (%m)" #~ msgid "open" #~ msgstr "ireki" #~ msgid "close" #~ msgstr "itxi" #~ msgid "write" #~ msgstr "idatzi" #~ msgid "read" #~ msgstr "irakurri" #~ msgid "check_int" #~ msgstr "check_int" #~ msgid "update" #~ msgstr "eguneratu" #~ msgid "get_pin" #~ msgstr "get_pin" #~ msgid "set_pin" #~ msgstr "set_pin" #~ msgid "send_break" #~ msgstr "send_break" #~ msgid "flush" #~ msgstr "hustu" #~ msgid "find_device" #~ msgstr "find_device" #~ msgid "find_device_by_class" #~ msgstr "find_device_by_class" #~ msgid "msg_write" #~ msgstr "msg_write" #~ msgid "Camera is supported by USB Storage driver." #~ msgstr "USB biltegi kontrolatzaileak kamera onartzen du" libgphoto2-2.5.9/libgphoto2_port/po/it.gmo0000644000175000001440000001745112623156265015410 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an r{“&ÈD( 6V'vDž?ã‘#}µ<3p0#Á#å+ @5!v@˜-Ù*521h0š2Ë6þ75#m%‘J·MLP09Î%@.-o-%ËAñ=3'q&™ÀÞ'ü$:IY r }+‹·ÈÛì6*=Ah5ª(à' 15G}¤¶Íäéú(@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port 2.5.8 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2015-08-05 13:07+0100 Last-Translator: Marco Colombo Language-Team: Italian Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8-bit Parametri non correttiLa fotocamera è già in uso.Impossibile reclamare l'interfaccia %d (%s). Assicurarsi che nessun altro programma (%s) o un modulo del kernel (come %s) stia usando il device e che si abbia accesso in lettura e scrittura al device.Impossibile reclamare il dispositivo USBImpossibile chiudere "%s" (%m).Impossibile chiudere "%s" (%s).Impossibile chiudere la porta USB (%s).Impossibile scollegare il driver "%s" del kernel per il dispositivo.Impossibile scollegare il driver del kernel per il dispositivo.Impossibile trovare il dispositivo USB (classe 0x%x, sottoclasse 0x%x, protocollo 0x%x). Assicurarsi che il dispositivo sia connesso al computer.Impossibile trovare il dispositivo USB (vendor 0x%x, prodotto 0x%x). Assicurarsi che il dispositivo sia connesso al computer.Impossibile trovare il dispositivo richiesto sulla porta USBImpossibile svuotare "%s" (%s).Impossibile ottenere il livello del pin %i (%s).Impossibile bloccare il device "%s"Impossibile bloccare il dispositivoImpossibile aprire il dispositivo USB (%s).Impossibile interrogare il driver del kernel per il dispositivo.Impossibile leggere da "%s" (%m).Impossibile riattaccare il driver del kernel per il dispositivo.Impossibile rilasciare l'interfaccia %d (%s).Impossibile reimpostare la porta USB (%s).Impossibile fare il seek all'offset: %x su "%s" (%m).Impossibile mandare il comando scsi a: "%s" (%m).Impossibile impostare altsetting da %d a %d (%s)Impossibile impostare la configurazione %d/%d (%s)Impossibile impostare il livello del pin %i a %i (%s).Impossibile impostare la velocità di trasmissione a %dImpossibile scrivere sul "%s" (%m).Impossibile scrivere sulla porta (%s)Non è stato possibile bloccare il device "%s" (dev_lock ha restituito %d)Non è stato possibile sbloccare il device "%s" (dev_unlock ha restituito %d)Non è stato possibile sbloccare il device "%s" perché bloccato dal pid %d.Non è stato possibile sbloccare il device "%s".Il dispositivo "%s" è bloccato da un'altra applicazione.Il device "%s" è bloccato dal pid %dErrore nella rimozione di una condizione di halt sulla porta USBErrore durante l'inizializzazione della portaErrore durante il caricamento di una libreriaErrore durante la lettura dalla portaErrore durante l'impostazione della velocità della porta serialeErrore durante l'aggiornamento delle impostazioni della portaErrore durante la scrittura sulla portaImpossibile fare il lock di "%s" (%m).Impossibile aprire "%s" (%m).Impossibile aprire "%s" (%s).Impossibile fare l'unlock di "%s" (%m).Limite fisso superatoPorta genericaProblema di I/Oservizio MacOS PTPCameraMedia "%s"Nessun erroreNessuna descrizione dell'errore disponibileMemoria esauritaErrore di parità.Porta seriale %iPorta seriale non gestitaL'operazione "%s" non è gestita da questo dispositivoLa porta non è ancora stata inizializzataL'id del vendor o del prodotto (0x%x,0x%x) fornito non è valido.Timeout durante la lettura o la scrittura sulla portaArchiviazione di massa USB con IO directArchiviazione di massa USB con raw SCSIPorta USB non gestitaSequenza di risposta di parità 0xff 0x%02x inattesa.Errore sconosciutoPin %i sconosciuto.Porta sconosciutaErrore non specificatoOperazione non gestitaaltoerrore in libhalbassoprogramma sconosciuto che usa libgphoto2libgphoto2-2.5.9/libgphoto2_port/po/fi.po0000644000175000001440000004535012623156264015224 00000000000000# Finnish messages for libgphoto2_port. # Copyright © 2012 Free Software Foundation, Inc. # Copyright © 2012 Lutz Mueller and others # This file is distributed under the same license as the libgphoto2 package. # Jorma Karvonen , 2012-2014. # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.5.4\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-04-28 09:07+0200\n" "Last-Translator: Jorma Karvonen \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Geneerinen portti" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Ei virhettä" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Määrittelemätön virhe" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "Siirräntäpulma" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Virheelliset parametrit" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Tukematon toiminto" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Kiinteä raja ylitetty" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Aikakatkaisu portin lukemisessa tai kirjoittamisessa" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Sarjaporttia ei tueta" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "USB-porttia ei tueta" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Tuntematon portti" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Muisti loppui" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Virhe ladattaessa kirjastoa" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Virhe alustettaessa porttia" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Virhe luettaessa portista" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Virhe kirjoitettaessa porttiin" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Virhe päivitettäessä portin asetuksia" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Virhe asetettaessa sarjaportin nopeutta" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Virhe nollatessa halt-tilaa USB-portissa" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Pyydetyn laitteen löytäminen USB-portista epäonnistui" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "USB-laitteen vaatiminen omaan käyttöön epäonnistui" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Laitteen lukitus epäonnistui" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "libhal-virhe" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Tuntematon virhe" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Tämä laite ei tue ’%s’-toimintoa" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Porttia ei ole vielä alustettu" # low ja high ovat mikropiirin tai sarjaportin nastojen binaaritiloja. # Mikropiireissä low on looginen nolla (maan potentiaali) ja high on # looginen ykkönen (esimerkiksi +5V). Sarjaporteissa looginen ykkönen # on yleensä -5...-12V ja looginen nolla +5...+12 V, mutta Gphotossa # näytetään noudattavan mikropiirilogiikkaa. #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "looginen nolla" # low ja high ovat mikropiirin tai sarjaportin nastojen binaaritiloja. # Mikropiireissä low on looginen nolla (maan potentiaali) ja high on # looginen ykkönen (esimerkiksi +5V). Sarjaporteissa looginen ykkönen # on yleensä -5...-12V ja looginen nolla +5...+12 V, mutta Gphotossa # näytetään noudattavan mikropiirilogiikkaa. #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "looginen ykkönen" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Virhekuvausta ei ole saatavilla" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "Media ’%s’" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Laitteen ’%s’ lukitus epäonnistui" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "Laitteen ’%s’ on lukinnut pid %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "Laitteen ’%s’ lukitus epäonnistui (dev_lock palautti %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Laitteen ’%s’ lukituksen avaus epäonnistui." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "Laitteen ’%s’ lukituksen avaus epäonnistui, koska sen on lukinnut pid %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "Laitteen ’%s’ lukituksen avaus epäonnistui (dev_unlock palautti %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Sarjaportti %i" # Ensimmäinen parametri on portti #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Portin ’%s’ avaaminen epäonnistui (%s)." # Ensimmäinen parametri on sarjaportti #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Sarjaportin ’%s’ (%s) sulkeminen epäonnistui." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Kirjoittaminen porttiin (%s) epäonnistui" #: serial/unix.c:583 msgid "Parity error." msgstr "Pariteettivirhe." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Odottamaton pariteettivastaussekvenssi 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Tuntematon nasta %i." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Nastan %i (%s) tason hakeminen epäonnistui." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Nastan %i tason asettaminen arvoon %i (%s) epäonnistui." # Ensimmäinen parametri on sarjaportti #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Sarjaportin ’%s’ (%s) puhdistaminen epäonnistui." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Siirtonopeuden asettaminen arvoon %d epäonnistui" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "USB-massatallennuksen suora liitäntä" # Ensimmäinen parametri on polku #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Polun ’%s’ avaaminen epäonnistui (%m)." # Ensimmäinen parametri on polku #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Polun ’%s’ (%m) sulkeminen epäonnistui." # Toinen parametri on polku #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Siirrososoitteen: %x etsintä polussa ’%s’ (%m) epäonnistui." # Ensimmäinen parametri on polku #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Polkuun ’%s’ (%m) kirjoittaminen epäonnistui." # Ensimmäinen parametri on polku #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Polusta ’%s’ (%m) lukeminen epäonnistui." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "USB-laitteen (%s) avaaminen epäonnistui." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Kamera on jo käytössä." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Kameralaitteen käyttöjärjestelmäajuria ’%s’ ei voitu irrottaa." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Laitteen käyttöjärjestelmäajurin kyseleminen epäonnistui." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Liitännän %d (%s) vaatiminen epäonnistui. Varmista, että mikään toinen " "ohjelma (%s) tai käyttöjärjestelmämoduuli (sellainen kuin %s) ei käytä " "laitetta ja sinulla on laitteeseen luku- tai kirjoitusoikeus." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "MacOS PTPCamera-palvelu" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "tuntematon libgphoto2-kirjastoa käyttävä ohjelma" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Liitännän %d (%s) vapauttaminen epäonnistui." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "USB-portin (%s) nollaus epäonnistui." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "USB-portin (%s) sulkeminen epäonnistui." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Asetuksen %d/%d (%s) asettaminen epäonnistui" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Asetuksen altsetting asetus arvosta %d arvoon %d (%s) epäonnistui" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "Tarjottu toimittaja- tai tuotetunniste (0x%x,0x%x) ei ole kelvollinen." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "USB-laitetta (toimittaja 0x%x, tuote 0x%x) ei löydetty. Varmista, että laite " "on liitetty tietokoneeseen." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "USB-laitetta (luokka 0x%x, aliluokka 0x%x, yhteyskäytäntö 0x%x) ei löydetty. " "Varmista, että laite on liitetty tietokoneeseen." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Kameralaitteen käyttöjärjestelmäajurin irrottaminen epäonnistui." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "" "Kameralaitteen käyttöjärjestelmäajurin liittäminen uudelleen epäonnistui." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "Toinen sovellus on lukinnut laitteen ’%s’." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "Kohteen ’%s’ lukitseminen epäonnistui (%m)." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Toiminto unlock ’%s’ epäonnistui (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "USB-massatallennuksen raaka-SCSI" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Scsi-komennon lähettäminen kohteeseen: ’%s’ (%m) epäonnistui." # Tässä tulostetaan jokainen tiedostonimi, jonka funktio # foreach_func kutsuu. #~ msgid "Called for filename '%s'." #~ msgstr "Kutsuttu tiedostonimellä ’%s’." # Tämä virheilmoitus seuraa, jos edellisen lataus edellisen kohdan # tiedostonimellä epäonnistuu. #~ msgid "Could not load '%s': '%s'." #~ msgstr "Lataus tiedostonimellä ’%s’ epäonnistui: ’%s’." # Ensimmäinen parametri on edelleen tiedostonimi #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Tiedostonimestä ’%s’ ei löydetty mitään funktioita: ’%s’." # Ensimmäinen parametri on edelleen tiedostonimi #~ msgid "'%s' already loaded" #~ msgstr "’%s’ on jo ladattu" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Porttiajuriluettelon lataus epäonnistui: ’%s’." # 1. parametri on GPPortInfoList-tietueen nimikenttä # 2. parametri on polku # 3. parametri on edelleen edellä mainittu tiedostonimi #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "Ladattu ’%s’ (’%s’) tiedostonimestä ’%s’." # Parametri on iolibs #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "Käytetään ltdl:ää lataamaan siirtoajurit siirtokirjastoista ’%s’..." # Lasketaan porttien lukumäärää luettelossa #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "Lasketaan portteja (%i saatavilla)..." #~ msgstr[1] "Lasketaan portteja (%i saatavilla)..." # Porttien lukumäärästä on vähennetty geneeriset portit #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "%i tavallinen portti saatavilla." #~ msgstr[1] "%i tavallista porttia saatavilla." # Etsitään luettelon portit ja kerrotaan, kuinka monta polkuun täsmäävää # porttia löytyy. #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "Etsitään polkua ’%s’ (%i portti saatavilla)..." #~ msgstr[1] "Etsitään polkua ’%s’ (%i porttia saatavilla)..." # Käytetään säännöllistä lauseketta polkuetsinnässä #~ msgid "Starting regex search for '%s'..." #~ msgstr "Aloitetaan säännöllisen lausekkeen etsintä polulle ’%s’..." # Kokeillaan vuorotellen eri polkuja #~ msgid "Trying '%s'..." #~ msgstr "Yritetään polkua ’%s’..." #~ msgid "regcomp failed" #~ msgstr "funktio regcomp epäonnistui" #~ msgid "re_match failed (%i)" #~ msgstr "funktio re_match epäonnistui (%i)" #~ msgid "regexec failed" #~ msgstr "funktio regexec epäonnistui" # Parametrina on portin nimi, listalta etsitään tätä nimeä #~ msgid "Looking up entry '%s'..." #~ msgstr "Etsitään porttia ’%s’..." #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "Haetaan portin %i tietoja (%i saatavilla)..." #~ msgstr[1] "Haetaan portin %i tietoja (%i saatavilla)..." #~ msgid "Creating new device..." #~ msgstr "Luodaan uusi laite..." # Parametri on info->library_filename #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Kirjastotiedostonimen ’%s’ (’%s’) lataus epäonnistui." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "" #~ "Ei löydetty ’gp_port_library_operations’ kirjastotiedostonimestä " #~ "’%s’ (’%s’)" # Parametrina on SERIAL tai USB #~ msgid "Opening %s port..." #~ msgstr "Avataan %s-portti..." #~ msgid "Closing port..." #~ msgstr "Suljetaan portti..." #~ msgid "Resetting port..." #~ msgstr "Nollataan portti..." #~ msgid "Freeing port..." #~ msgstr "Vapautetaan portti..." #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Kirjoitetaan %i=0x%x tavua porttiin..." #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "Voitiin kirjoittaa vain %i / %i tavu" #~ msgstr[1] "Voitiin kirjoittaa vain %i / %i tavua" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "Luetaan %i=0x%x tavu portista..." #~ msgstr[1] "Luetaan %i=0x%x tavua portista..." #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "Voitiin lukea vain %i / %i tavu" #~ msgstr[1] "Voitiin lukea vain %i / %i tavua" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "Luetaan %i=0x%x tavu keskeytyspäätepisteestä..." #~ msgstr[1] "Luetaan %i=0x%x tavua keskeytyspäätepisteestä..." #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Ei voitu lukea %i / %i tavua" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "Luetaan %i=0x%x tavu keskeytyspäätepisteestä (nopea)..." #~ msgstr[1] "Luetaan %i=0x%x tavua keskeytyspäätepisteestä (nopea)..." #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Asetetaan aikakatkaisuksi %i millisekuntia..." #~ msgid "Getting timeout..." #~ msgstr "Haetaan aikakatkaisu..." #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Nykyinen aikakatkaisu: %i millisekuntia" #~ msgid "Setting settings..." #~ msgstr "Tee asetukset..." #~ msgid "Getting level of pin %i..." #~ msgstr "Haetaan nastan %i taso..." #~ msgid "Level of pin %i: %i" #~ msgstr "Nastan %i taso: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Asetetaan nastan %i (%s: ’%s’) arvoksi ’%s’..." #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "Lähetetään katkos (%i millisekuntia)..." #~ msgid "Flushing port..." #~ msgstr "Puhdistetaan portti..." #~ msgid "Clear halt..." #~ msgstr "Nollaa halt-tila..." #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Kirjoitetaan viesti (pyyntö=0x%x arvo=0x%x indeksi=0x%x koko=%i=0x%x)..." #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "Luetaan viesti (pyyntö=0x%x arvo=0x%x indeksi=0x%x koko=%i=0x%x)..." #~ msgid "Device has driver '%s' attached." #~ msgstr "Laitteeseen on liitetty ajuri ’%s’." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Laitteeseen on liitetty ajuri ’%s’, irrotetaan se nyt." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "USB-laite (toimittaja 0x%x, tuote 0x%x) on massatallennuslaite, ja ei " #~ "ehkä toimi gphoto2:n kanssa. Viite: %s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "Laitteen käyttöjärjestelmäajuri on liitetty (%d), irrota se nyt." libgphoto2-2.5.9/libgphoto2_port/po/pl.po0000644000175000001440000004270712623156265015245 00000000000000# Polish translation for libgphoto2_port. # Copyright (C) 2005, 2006, 2007, 2010, 2012, 2013, 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # Jakub Bogusz , 2005-2014. # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.5.3\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-01-11 14:15+0100\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Ogólny port" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Brak błędu" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "NieokreÅ›lony błąd" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "Problem we/wy" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "ZÅ‚e parametry" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "NieobsÅ‚ugiwana operacja" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Przekroczony ustalony limit" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Przekroczony limit czasu przy odczycie lub zapisie do portu" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Port szeregowy nie jest obsÅ‚ugiwany" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "Port USB nie jest obsÅ‚ugiwany" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Nieznany port" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Brak pamiÄ™ci" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Błąd podczas Å‚adowania biblioteki" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Błąd podczas inicjalizacji portu" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Błąd podczas odczytu z portu" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Błąd podczas zapisu do portu" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Błąd podczas uaktualniania ustawieÅ„ portu" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Błąd podczas ustawiania prÄ™dkoÅ›ci portu szeregowego" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Błąd podczas zerowania warunku stopu na pocie USB" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Nie udaÅ‚o siÄ™ odnaleźć żądanego urzÄ…dzenia na porcie USB" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Nie udaÅ‚o siÄ™ zawÅ‚aszczyć urzÄ…dzenia USB" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Nie udaÅ‚o siÄ™ zablokować urzÄ…dzenia" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "Błąd libhal" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Nieznany błąd" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Operacja '%s' nie jest obsÅ‚ugiwana przez to urzÄ…dzenie" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Port nie zostaÅ‚ jeszcze zainicjowany" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "niski" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "wysoki" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Opis błędu niedostÄ™pny" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "NoÅ›nik '%s'" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Nie udaÅ‚o siÄ™ zablokować urzÄ…dzenia '%s'" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "UrzÄ…dzenie '%s' jest zablokowane przez pid %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "UrzÄ…dzenie '%s' nie może zostać zablokowane (dev_lock zwróciÅ‚o %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "UrzÄ…dzenie '%s' nie może zostać odblokowane." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "UrzÄ…dzenie '%s' nie może zostać odblokowane, bo jest zablokowane przez pid " "%d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "UrzÄ…dzenie '%s' nie może zostać odblokowane (dev_unlock zwróciÅ‚o %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Port szeregowy %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Nie udaÅ‚o siÄ™ otworzyć '%s' (%s)." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Nie udaÅ‚o siÄ™ zamknąć '%s' (%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Nie udaÅ‚ siÄ™ zapis do portu (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "Błąd parzystoÅ›ci." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Nieoczekiwana sekwencja odpowiedzi parzystoÅ›ci 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Nieznany pin %i." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Nie udaÅ‚o siÄ™ pobrać poziomu pinu %i (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Nie udaÅ‚o siÄ™ ustawić poziomu pinu %i na %i (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Nie udaÅ‚o siÄ™ opróżnić '%s' (%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Nie udaÅ‚o siÄ™ ustawić liczby bodów na %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "BezpoÅ›rednie we/wy urzÄ…dzeÅ„ USB Mass Storage" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Nie udaÅ‚o siÄ™ otworzyć '%s' (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Nie udaÅ‚o siÄ™ zamknąć '%s' (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Nie udaÅ‚o siÄ™ zmienić poÅ‚ożenia na %x w '%s' (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Nie udaÅ‚ siÄ™ zapis do '%s' (%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Nie udaÅ‚ siÄ™ odczyt z '%s' (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Nie udaÅ‚o siÄ™ otworzyć urzÄ…dzenia USB (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Aparat jest już w użyciu." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Nie udaÅ‚o siÄ™ odłączyć sterownika jÄ…dra '%s' od aparatu." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Nie udaÅ‚o siÄ™ zapytać jÄ…dra o sterownik urzÄ…dzenia." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Nie udaÅ‚o siÄ™ zawÅ‚aszczyć interfejsu %d (%s). Należy upewnić siÄ™, czy żaden " "inny program (%s) lub moduÅ‚ jÄ…dra (taki jak %s) nie używa tego urzÄ…dzenia i " "mamy prawa odczytu/zapisu do urzÄ…dzenia." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "UsÅ‚uga MacOS PTPCamera" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "nieznany program korzystajÄ…cy z libgphoto2" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Nie udaÅ‚o siÄ™ oddać interfejsu %d (%s)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Nie udaÅ‚o siÄ™ zresetować portu USB (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Nie udaÅ‚o siÄ™ zamknąć portu USB (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Nie udaÅ‚o siÄ™ ustawić konfiguracji %d/%d (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Nie udaÅ‚o siÄ™ przestawić altsetting z %d na %d (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "" "Podany identyfikator producenta lub produktu (0x%x,0x%x) nie jest poprawny." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Nie udaÅ‚o siÄ™ odnaleźć urzÄ…dzenia USB (producent 0x%x, produkt 0x%x). Należy " "upewnić siÄ™, że to urzÄ…dzenie jest podłączone do komputera." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Nie udaÅ‚o siÄ™ odnaleźć urzÄ…dzenia USB (klasa 0x%x, podklasa 0x%x, protokół 0x" "%x). Należy upewnić siÄ™, że to urzÄ…dzenie jest podłączone do komputera)." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Nie udaÅ‚o siÄ™ odłączyć sterownika jÄ…dra od aparatu." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "Nie udaÅ‚o siÄ™ ponownie podłączyć sterownika jÄ…dra do aparatu." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "UrzÄ…dzenie '%s' jest zablokowane przez innÄ… aplikacjÄ™." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "Nie udaÅ‚o siÄ™ zablokować '%s' (%m)." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Nie udaÅ‚o siÄ™ odblokować '%s' (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "BezpoÅ›rednie operacje SCSI urzÄ…dzeÅ„ USB Mass Storage" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Nie udaÅ‚o siÄ™ wysÅ‚ać polecenia SCSI do '%s' (%m)." #~ msgid "Called for filename '%s'." #~ msgstr "WywoÅ‚ano dla nazwy pliku '%s'." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Nie udaÅ‚o siÄ™ zaÅ‚adować '%s': '%s'." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Nie udaÅ‚o siÄ™ odnaleźć funkcji w '%s': '%s'." #~ msgid "'%s' already loaded" #~ msgstr "'%s' już zaÅ‚adowany" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Nie udaÅ‚o siÄ™ zaÅ‚adować listy sterowników portów: '%s'." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "ZaÅ‚adowano '%s' ('%s') z '%s'." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "Użycie ltdl do zaÅ‚adowania sterowników we/wy z '%s'..." #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "Liczenie wpisów (%i dostÄ™pny)..." #~ msgstr[1] "Liczenie wpisów (%i dostÄ™pne)..." #~ msgstr[2] "Liczenie wpisów (%i dostÄ™pnych)..." #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "%i dostÄ™pny zwykÅ‚y wpis." #~ msgstr[1] "%i dostÄ™pne zwykÅ‚e wpisy." #~ msgstr[2] "%i dostÄ™pnych zwykÅ‚ych wpisów." #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "Poszukiwanie Å›cieżki '%s' (%i dostÄ™pny wpis)..." #~ msgstr[1] "Poszukiwanie Å›cieżki '%s' (%i dostÄ™pne wpisy)..." #~ msgstr[2] "Poszukiwanie Å›cieżki '%s' (%i dostÄ™pnych wpisów)..." #~ msgid "Starting regex search for '%s'..." #~ msgstr "RozpoczÄ™cie szukania wyrażenia regularnego dla '%s'..." #~ msgid "Trying '%s'..." #~ msgstr "Próbowanie '%s'..." #~ msgid "regcomp failed" #~ msgstr "regcomp nie powiodÅ‚o siÄ™" #~ msgid "re_match failed (%i)" #~ msgstr "re_match nie powiodÅ‚o siÄ™ (%i)" #~ msgid "regexec failed" #~ msgstr "regexec nie powiodÅ‚o siÄ™" #~ msgid "Looking up entry '%s'..." #~ msgstr "Poszukiwanie wpisu '%s'..." #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "Pobieranie informacji z wpisu %i (%i dostÄ™pny)..." #~ msgstr[1] "Pobieranie informacji z wpisu %i (%i dostÄ™pne)..." #~ msgstr[2] "Pobieranie informacji z wpisu %i (%i dostÄ™pnych)..." #~ msgid "Creating new device..." #~ msgstr "Tworzenie nowego urzÄ…dzenia..." #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Nie udaÅ‚o siÄ™ zaÅ‚adować '%s' ('%s')." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "Nie udaÅ‚o siÄ™ odnaleźć 'gp_port_library_operations' w '%s' ('%s')" #~ msgid "Opening %s port..." #~ msgstr "Otwieranie portu %s..." #~ msgid "Closing port..." #~ msgstr "Zamykanie portu..." #~ msgid "Resetting port..." #~ msgstr "Resetowanie portu..." #~ msgid "Freeing port..." #~ msgstr "Zwalnianie portu..." #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Zapis %i=0x%x bajtu(ów) do portu..." #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "UdaÅ‚o siÄ™ zapisać tylko %i z %i bajtu" #~ msgstr[1] "UdaÅ‚o siÄ™ zapisać tylko %i z %i bajtów" #~ msgstr[2] "UdaÅ‚o siÄ™ zapisać tylko %i z %i bajtów" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "Odczyt %i=0x%x bajtu z portu..." #~ msgstr[1] "Odczyt %i=0x%x bajtów z portu..." #~ msgstr[2] "Odczyt %i=0x%x bajtów z portu..." #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "UdaÅ‚o siÄ™ odczytać tylko %i z %i bajtu" #~ msgstr[1] "UdaÅ‚o siÄ™ odczytać tylko %i z %i bajtów" #~ msgstr[2] "UdaÅ‚o siÄ™ odczytać tylko %i z %i bajtów" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "Odczyt %i=0x%x bajtu z koÅ„cówki przerwania..." #~ msgstr[1] "Odczyt %i=0x%x bajtów z koÅ„cówki przerwania..." #~ msgstr[2] "Odczyt %i=0x%x bajtów z koÅ„cówki przerwania..." #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "UdaÅ‚o siÄ™ odczytać tylko %i z %i bajtu(ów)" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "Odczyt %i=0x%x bajtu z koÅ„cówki przerwania (szybki)..." #~ msgstr[1] "Odczyt %i=0x%x bajtów z koÅ„cówki przerwania (szybki)..." #~ msgstr[2] "Odczyt %i=0x%x bajtów z koÅ„cówki przerwania (szybki)..." #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Ustawianie limitu czasu na %i ms..." #~ msgid "Getting timeout..." #~ msgstr "Pobieranie limitu czasu..." #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Bieżący limit czasu: %i milisekund" #~ msgid "Setting settings..." #~ msgstr "Ustawianie ustawieÅ„..." #~ msgid "Getting level of pin %i..." #~ msgstr "Pobieranie poziomu pinu %i..." #~ msgid "Level of pin %i: %i" #~ msgstr "Poziom pinu %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Ustawianie pinu %i (%s: '%s') na '%s'..." #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "WysyÅ‚anie sygnaÅ‚u break (%i ms)..." #~ msgid "Flushing port..." #~ msgstr "Przeczyszczanie portu..." #~ msgid "Clear halt..." #~ msgstr "Zerowanie stopu..." #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Zapis komunikatu (żądanie=0x%x wartość=0x%x indeks=0x%x rozmiar=%i=0x" #~ "%x)..." #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Odczyt komunikatu (żądanie=0x%x wartość=0x%x indeks=0x%x rozmiar=%i=0x" #~ "%x)..." #~ msgid "Device has driver '%s' attached." #~ msgstr "UrzÄ…dzenie ma podłączony sterownik '%s'." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "UrzÄ…dzenie ma podłączony sterownik '%s', odłączanie go." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "UrzÄ…dzenie USB (producent 0x%x, produkt 0x%x) to urzÄ…dzenie przechowujÄ…ce " #~ "dane i może nie dziaÅ‚ać z gphoto2. OdnoÅ›nik: %s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "UrzÄ…dzenie ma podłączony sterownik jÄ…dra (%d), odłączanie go." libgphoto2-2.5.9/libgphoto2_port/po/zh_CN.po0000644000175000001440000002622012623156265015623 00000000000000# Simplified Chinese Translation. # Copyright © 2000-2002 Scott Fritzinger et al. # Wang Li , 2002 # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2002-11-21 13:11+0800\n" "Last-Translator: Wang Li \n" "Language-Team: zh_CN \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=gb2312\n" "Content-Transfer-Encoding: 8bit\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "ͨÓö˿Ú" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "ÎÞ´íÎó" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "δָÃ÷µÄ´íÎó" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "I/O ÎÊÌâ" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "´íÎóµÄ²ÎÊý" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "²»Ö§³ÖµÄ²Ù×÷" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "¶ÁÈ¡»òдÈë¶Ë¿Ú³¬Ê±" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "²»Ö§³Ö´®¿Ú" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "²»Ö§³Ö USB ½Ó¿Ú" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "δ֪¶Ë¿Ú" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "ÄÚ´æºÄ¾¡" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "×°Èë¿â³ö´í" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "³õʼ»¯¶Ë¿Ú³ö´í" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "¶Á¶Ë¿Ú³ö´í" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "д¶Ë¿Ú³ö´í" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "¸üж˿ÚÉèÖóö´í" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "ÉèÖô®¿ÚËٶȳö´í" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Çå³ý USB ¶Ë¿ÚµÄÒ»¸öÖÐÖ¹Ìõ¼þ³ö´í" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "ÎÞ·¨ÔÚ USB ¶Ë¿ÚÕÒµ½ÇëÇóµÄÉ豸" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "ÎÞ·¨ÇëÇó USB É豸" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "ÎÞ·¨Ëø¶¨É豸" #: libgphoto2_port/gphoto2-port-result.c:100 #, fuzzy msgid "libhal error" msgstr "ÎÞ´íÎó" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "δ֪µÄ´íÎó" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "¸ÃÉ豸²»Ö§³Ö²Ù×÷¡®%s¡¯" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "¶Ë¿ÚÉÐδ³õʼ»¯" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "ûÓпÉÓõĴíÎóÃèÊö" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "ÎÞ·¨Ëø¶¨É豸¡®%s¡¯" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "É豸¡®%s¡¯ÒѾ­±»½øÐкÅΪ %d µÄ½ø³ÌËø¶¨" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "ÎÞ·¨Ëø¶¨É豸¡®%s¡¯(dev_lock ·µ»Ø %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "ÎÞ·¨½âËøÉ豸¡®%s¡¯¡£" #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "ÓÉÓÚÉ豸¡®%s¡¯Òѱ»½ø³ÌºÅΪ %d µÄ½ø³ÌËø¶¨£¬ËùÒÔÎÞ·¨Ëø¶¨¡£" #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "ÎÞ·¨½âËøÉ豸¡®%s¡¯(dev_unlock ·µ»Ø %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "´®¿Ú %i" #: serial/unix.c:430 #, fuzzy, c-format msgid "Failed to open '%s' (%s)." msgstr "´ò¿ª¡®%s¡¯(%m)ʧ°Ü¡£" #: serial/unix.c:450 #, fuzzy, c-format msgid "Could not close '%s' (%s)." msgstr "ÎÞ·¨¹Ø±Õ¡®%s¡¯(%m)¡£" #: serial/unix.c:506 #, fuzzy, c-format msgid "Could not write to port (%s)" msgstr "ÎÞ·¨Ð´¶Ë¿Ú (%m)" #: serial/unix.c:583 msgid "Parity error." msgstr "ÆæÅ¼´íÎó¡£" #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "ÒâÍâµÄÆæÅ¼Ó¦´ðÐòÁÐ 0xff 0x%02x¡£" #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "δ֪²å½Å %i¡£" #: serial/unix.c:652 #, fuzzy, c-format msgid "Could not get level of pin %i (%s)." msgstr "ÎÞ·¨»ñÈ¡²å½Å %i µÄ¼¶±ð (%m)¡£" #: serial/unix.c:688 #, fuzzy, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "ÎÞ·¨½«²å½Å %i µÄ¼¶±ðÉèÖÃΪ %i (%m)¡£" #: serial/unix.c:715 #, fuzzy, c-format msgid "Could not flush '%s' (%s)." msgstr "ÎÞ·¨Ë¢Ð¡®%s¡¯(%m)¡£" #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "ÎÞ·¨ÉèÖý«²¨ÌØÂÊÉèÖÃΪ %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "´ò¿ª¡®%s¡¯(%m)ʧ°Ü¡£" #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "ÎÞ·¨¹Ø±Õ¡®%s¡¯(%m)¡£" #: usbdiskdirect/linux.c:324 #, fuzzy, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "ÎÞ·¨¹Ø±Õ¡®%s¡¯(%m)¡£" #: usbdiskdirect/linux.c:346 #, fuzzy, c-format msgid "Could not write to '%s' (%m)." msgstr "ÎÞ·¨Ð´¶Ë¿Ú (%m)" #: usbdiskdirect/linux.c:367 #, fuzzy, c-format msgid "Could not read from '%s' (%m)." msgstr "ÎÞ·¨¹Ø±Õ¡®%s¡¯(%m)¡£" #: usb/libusb.c:261 libusb1/libusb1.c:378 #, fuzzy, c-format msgid "Could not open USB device (%s)." msgstr "ÎÞ·¨´ò¿ª USB É豸 (%m)¡£" #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "" #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "" #: usb/libusb.c:287 libusb1/libusb1.c:402 #, fuzzy msgid "Could not query kernel driver of device." msgstr "ÎÞ·¨Ëø¶¨É豸" #: usb/libusb.c:296 libusb1/libusb1.c:409 #, fuzzy, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "ÎÞ·¨ÇëÇó½çÃæ %d (%m)¡£ÇëÈ·ÈÏûÓÐÆäËü³ÌÐò»òÄÚºËÄ£¿é (ÀýÈç dc2xx »ò stv680) Õý" "ÔÚʹÓøÃÉ豸²¢ÇÒÄúÓжԸÃÉ豸µÄ¶Á/дȨ¡£" #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, fuzzy, c-format msgid "Could not release interface %d (%s)." msgstr "ÎÞ·¨ÊͷŽçÃæ %d (%m)¡£" #: usb/libusb.c:342 libusb1/libusb1.c:500 #, fuzzy, c-format msgid "Could not reset USB port (%s)." msgstr "ÎÞ·¨¹Ø±Õ USB ¶Ë¿Ú (%m)¡£" #: usb/libusb.c:372 #, fuzzy, c-format msgid "Could not close USB port (%s)." msgstr "ÎÞ·¨¹Ø±Õ USB ¶Ë¿Ú (%m)¡£" #: usb/libusb.c:633 libusb1/libusb1.c:838 #, fuzzy, c-format msgid "Could not set config %d/%d (%s)" msgstr "ÎÞ·¨É趨ÅäÖà %d/%d (%m)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, fuzzy, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "ÎÞ·¨É趨²¹³äÉèÖà %d/%d (%m)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "¸ø³öµÄ¹©Ó¦ÉÌ»ò²úÆ· id (0x%x¡¢0x%x) ²»ºÏ·¨¡£" #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "ÎÞ·¨ÕÒµ½ USB É豸 (¹©Ó¦ÉÌ 0x%x¡¢²úÆ· 0x%x)¡£È·ÐŸÃÉ豸ÒÑÁ¬½Óµ½¼ÆËã»ú¡£" #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "ÎÞ·¨ÕÒµ½ USB É豸 (Àà 0x%x¡¢×ÓÀà 0x%x¡¢Ð­Òé 0x%x)¡£È·ÐŸÃÉ豸ÒÑÁ¬½Óµ½¼ÆËã»ú¡£" #: libusb1/libusb1.c:396 #, fuzzy msgid "Could not detach kernel driver of camera device." msgstr "ÎÞ·¨Ëø¶¨É豸" #: libusb1/libusb1.c:509 #, fuzzy msgid "Could not reattach kernel driver of camera device." msgstr "ÎÞ·¨Ëø¶¨É豸" #: usbscsi/linux.c:109 #, fuzzy, c-format msgid "Device '%s' is locked by another app." msgstr "É豸¡®%s¡¯ÒѾ­±»½øÐкÅΪ %d µÄ½ø³ÌËø¶¨" #: usbscsi/linux.c:114 #, fuzzy, c-format msgid "Failed to lock '%s' (%m)." msgstr "´ò¿ª¡®%s¡¯(%m)ʧ°Ü¡£" #: usbscsi/linux.c:130 #, fuzzy, c-format msgid "Failed to unlock '%s' (%m)." msgstr "´ò¿ª¡®%s¡¯(%m)ʧ°Ü¡£" #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "" #: usbscsi/linux.c:342 #, fuzzy, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "ÎÞ·¨¹Ø±Õ¡®%s¡¯(%m)¡£" #, fuzzy #~ msgid "Called for filename '%s'." #~ msgstr "´ò¿ª¡®%s¡¯(%m)ʧ°Ü¡£" #, fuzzy #~ msgid "Could not load '%s': '%s'." #~ msgstr "ÎÞ·¨¹Ø±Õ¡®%s¡¯(%m)¡£" #, fuzzy #~ msgid "Could not load port driver list: '%s'." #~ msgstr "ÎÞ·¨Ëø¶¨É豸¡®%s¡¯" #, fuzzy #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "ÎÞ·¨Ëø¶¨É豸¡®%s¡¯" #~ msgid "Could not load any io-library because '%s' could not be opened (%m)" #~ msgstr "ÓÉÓÚÎÞ·¨´ò¿ª¡®%s¡¯(%m)ËùÒÔÎÞ·¨×°ÈëÈκΠio ¿â" #, fuzzy #~ msgid "Could not find some functions in '%s' (%s)" #~ msgstr "ÎÞ·¨¹Ø±Õ¡®%s¡¯(%m)¡£" #, fuzzy #~ msgid "Could not load list (%s)" #~ msgstr "ÎÞ·¨¹Ø±Õ¡®%s¡¯(%m)¡£" #, fuzzy #~ msgid "Could not load '%s' ('%s')." #~ msgstr "ÎÞ·¨¹Ø±Õ¡®%s¡¯(%m)¡£" #, fuzzy #~ msgid "Could not load '%s' ('%s')" #~ msgstr "ÎÞ·¨¹Ø±Õ¡®%s¡¯(%m)¡£" #, fuzzy #~ msgid "Could only write %i out of %i byte(s)" #~ msgstr "ÎÞ·¨Ð´¶Ë¿Ú (%m)" #, fuzzy #~ msgid "Getting level of pin %i..." #~ msgstr "ÎÞ·¨»ñÈ¡²å½Å %i µÄ¼¶±ð (%m)¡£" #, fuzzy #~ msgid "Clear halt..." #~ msgstr "Çå³ýÖÐÖ¹" #~ msgid "msg_read" #~ msgstr "¶ÁÏûÏ¢" #, fuzzy #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "ÎÞ·¨ÕÒµ½ USB É豸 (¹©Ó¦ÉÌ 0x%x¡¢²úÆ· 0x%x)¡£È·ÐŸÃÉ豸ÒÑÁ¬½Óµ½¼ÆËã»ú¡£" #~ msgid "open" #~ msgstr "´ò¿ª" #~ msgid "close" #~ msgstr "¹Ø±Õ" #~ msgid "write" #~ msgstr "дÈë" #~ msgid "read" #~ msgstr "¶Á³ö" #~ msgid "check_int" #~ msgstr "ÍêÕûÐÔ¼ì²é" #~ msgid "update" #~ msgstr "¸üÐÂ" #~ msgid "get_pin" #~ msgstr "»ñÈ¡²å½Å" #~ msgid "set_pin" #~ msgstr "ÉèÖòå½Å" #~ msgid "send_break" #~ msgstr "·¢ËÍÖжÏ" #~ msgid "flush" #~ msgstr "Ë¢ÐÂ" #~ msgid "find_device" #~ msgstr "ѰÕÒÉ豸" #~ msgid "find_device_by_class" #~ msgstr "°´Àà±ðѰÕÒÉ豸" #~ msgid "msg_write" #~ msgstr "дÏûÏ¢" libgphoto2-2.5.9/libgphoto2_port/po/de.gmo0000644000175000001440000001724312623156265015363 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an r‡“ -ÈN'!?!a%ƒ8©3â¡“¸6Lƒ)¢#Ì+ð#4@!u7—-Ï$ý3".V1…,·1ä#%:$`@…TÆ];y0µ$æ; $G"l+«0×#(Lk!Š¬È Ùå ü # 8FV h:‰(ÄHí66mФ1¿ñ)A]bs'{@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: de Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2007-05-10 11:07+0200 Last-Translator: Language-Team: Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.11.4 Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1; Falsche ParameterKamera ist bereits in Benutzung.Konnte Schnittstelle %d nicht reservieren (%s). Stellen Sie sicher, dass kein anderes Programm (%s) oder Kernelmodul (z.B. %s) das Gerät verwendet und Sie Lese- und Schreibrechte für das Gerät haben.Konnte das USB-Gerät nicht beanspruchenKonnte »%s« nicht schließen (%m).Konnte »%s« nicht schließen (%s).Konnte USB-Port nicht schließen (%s).Konnte Kerneltreiber '%s' nicht vom Kamera Device lösen.Konnte Kerneltreiber nicht vom Kamera Device lösen.Konnte USB-Gerät (Klasse 0x%x, Subklasse 0x%x, Protokoll 0x%x) nicht finden. Stellen Sie sicher, dass das Gerät ordnungsgemäß an den Computer angeschlossen ist.Konnte USB-Gerät (Hersteller 0x%x, Produkt 0x%x) nicht finden. Stellen Sie sicher, dass das Gerät ordnungsgemäß an den Computer angeschlossen ist.Konnte das angeforderte Gerät nicht am USB-Port findenKonnte »%s« nicht leeren (%s).Konnte Level von Pin %i nicht holen (%s).Konnte Gerät »%s« nicht reservierenKonnte das Gerät nicht alleinig reservierenKonnte USB-Gerät nicht öffnen (%s).Konnte den Kerneltreiber des Gerätes nicht abfragen.Konnte nicht von »%s« lesen (%m).Konnte Kerneltreiber nicht an Kamera Device reattachen.Konnte Schnittstelle %d nicht freigeben (%s).Konnte USB-Port nicht resetten (%s).Konnte nicht auf Offset %x auf »%s« vorspulen (%m).Konnte SCSI Kommando nicht an »%s« senden (%m)Konnte Alternativ-Setting %d/%d nicht setzen (%s)Konnte Konfiguration %d/%d nicht setzen (%s)Konnte Level von Pin %i nicht auf %i setzen (%s).Konnte Baudrate nicht auf %d setzenKonnte nicht auf »%s« schreiben (%m).Konnte nicht auf Port schreiben (%s)Gerät »%s« konnte nicht reserviert werden (dev_lock lieferte %d)Reservierung von Gerät »%s« konnte nicht freigegeben werden (dev_unlock lieferte %d)Reservierung von Gerät »%s« konnte nicht freigegeben werden, da es von PID %d reserviert ist.Reservierung von Gerät »%s« konnte nicht freigegeben werdenGerät »%s« ist von einer anderen app reserviert.Gerät »%s« ist von PID %d reserviertFehler beim Löschen einer »halt condition« auf dem USB-PortFehler beim Initialisieren des PortsFehler beim Laden einer BibliothekFehler beim Lesen des PortsFehler beim Setzen der Port-GeschwindigkeitFehler beim Aktualisieren der Port-EinstellungenFehler beim Schreiben des PortsKonnte »%s« nicht reservieren (%m).Konnte »%s« nicht öffnen (%m).Konnte »%s« nicht öffnen (%s).Konnte »%s« nicht freigeben (%m).Festes Limit überschritten.Generischer PortI/O-ProblemMacOS PTPCamera DienstMedium »%s«Kein FehlerKeine Fehlerbeschreibung verfügbar.Speicher vollParitätsfehler.Serieller Port %iSerieller Port nicht unterstütztDie Funktion »%s« wird von diesem Gerät nicht unterstützt.Der Port wurde noch nicht initialisiert.Die angegebene Hersteller- oder Produkt-ID (0x%x,0x%x) ist nicht gültig.Zeitüberschreitung beim Lesen oder Schreiben des PortsUSB Mass Storage direkter IOUSB Mass Storage raw SCSIUSB-Port nicht unterstütztUnerwartete Paritätsantwort, Sequenz 0xff 0x%02x.Unbekannter FehlerUnbekannter Pin %i.Unbekannter PortUnspezifizierter FehlerNicht unterstützte FunktionhochFehler in libhalniedrigunbekanntes anderes libgphoto2 Programmlibgphoto2-2.5.9/libgphoto2_port/po/cs.gmo0000644000175000001440000001715512623156265015402 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an rÕ“i |È f‡¥ÃBá9$Œ^|ë2h ›'¼#ä%#3I}9› Õö3.I.x$§.Ì&û!"DHaKªLö,C1p*¢3Í @4['¸Óñ/ N o |‰¡±ÀÞ ñÿ 72!jBŒ?Ï/.?n8‰ÂÒçö&<)C@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port 2.5.3 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-03-09 13:57+0100 Last-Translator: Marek ÄŒernocký Language-Team: Czech Language: cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; Å patné parametryFotoaparát je již používán.Nelze pÅ™idÄ›lit rozhraní %d (%s). Zkontrolujte, že žádný jiný program (%s) nebo jaderný modul (napÅ™. %s) zařízení nepoužívá a že máte k zařízení přístup pro Ätení a pro zápis.Nelze pÅ™idÄ›lit USB zařízeníNelze zavřít „%s“ (%m).Nelze zavřít „%s“ (%s).Nelze zavřít port USB (%s).Nelze odpojit jaderný ovladaÄ â€ž%s“ zařízení fotoaparátu.Nelze odpojit jaderný ovladaÄ zařízení fotoaparátu.Nelze najít zařízení USB (třída 0x%x, podtřída 0x%x, protokol 0x%x). Zkontrolujte, že je toto zařízení pÅ™ipojeno k poÄítaÄi.Nelze najít zařízení USB (dodavatel 0x%x, produkt 0x%x). Zkontrolujte, že je toto zařízení pÅ™ipojeno k poÄítaÄi.Nelze najít požadované zařízení na portu USBNelze vyprázdnit „%s“ (%s).Nelze získat úroveň vývodu %i (%s).Nelze zamknout zařízení „%s“Nelze zamknout zařízeníNelze otevřít zařízení USB (%s).Nelze se dotázat jaderného ovladaÄe zařízení.Nelze Äíst z „%s“ (%m).Nelze odpojit jaderný ovladaÄ zařízení fotoaparátu.Nelze uvolnit rozhraní %d (%s).Nelze resetovat port USB (%s).Nelze se pÅ™esunout na pozici: %x na „%s“ (%m).Nelze odeslat příkaz SCSI na: „%s“ (%m).Nelze provést zmÄ›nu nastavení %d na %d (%s)Nelze provést nastavení %d/%d (%s)Nelze nastavit úroveň vývodu %i na %i (%s).Nelze nastavit rychlost pÅ™enosu na %dNelze zapisovat do „%s“ (%m).Nelze zapisovat na port (%s)Zařízení „%s“ nemohlo být zamÄeno (funkce dev_lock vrátila %d)Zařízení „%s“ nemohlo být odemÄeno (funkce dev_unlock vrátila %d)Zařízení „%s“ nemohlo být odemÄeno, protože je zamÄeno od pid %d.Zařízení „%s“ nemohlo být odemÄeno.Zařízení „%s“ je zamÄeno jinou aplikací.Zařízení „%s“ je zamÄeno od pid %dChyba pÅ™i nulování stavu zastavení na portu USBChyba pÅ™i inicializaci portuChyba pÅ™i naÄítání knihovnyChyba pÅ™i Ätení z portuChyba pÅ™i nastavování rychlosti sériového portuChyba pÅ™i aktualizaci nastavení portuChyba pÅ™i zápisu na portNelze zamknout „%s“ (%m).Nelze otevřít „%s“ (%m).Nelze otevřít „%s“ (%s).Nelze odemknout „%s“ (%m).Bylo dosaženo pevného omezeníObecný portProblém V/VSlužba MacOS PTPCameraMédia „%s“Žádná chybaNení k dispozici popis chybyNedostatek pamÄ›tiChyba parity.Sériový port %iSériový port není podporovánOperace „%s“ není tímto zařízením podporovánaPort jeÅ¡tÄ› nebyl inicializovánPoskytnuté ID dodavatele nebo produktu (0x%x,0x%x) není platné.PÅ™i Ätení z nebo zápisu na port vyprÅ¡elo Äasové omezeníUSB rozhraní typu „Mass Storage direct IO“USB rozhraní typu „Mass Storage raw SCSI“Port USB není podporovánNeoÄekávaná sekvence odpovÄ›di na paritu 0xff 0x%02x.Neznámá chybaNeznámý vývod %i.Neznámý portNeurÄená chybaNepodporovaná operacevysokáChyba knihovny libhalnizkáneznámý program používaný libgphoto2libgphoto2-2.5.9/libgphoto2_port/po/vi.gmo0000644000175000001440000002066212623156265015410 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an r>“ Ò.àß+ï"">$a_†Væ=™Û;uA±0ó($M(mN–'åe 's*›WÆ:LY*¦7Ñ2 $<!a[ƒgßNG-–:ÄJÿIJ#”!¸"Ú9ý47l$Œ#±#Õ)ù*# N[k‡¤µÕæù+E<'‚Qª:ü-7 %e %‹ ?± ñ !!,!$F!k! o!|!.ƒ!@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port 2.5.6 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-12-23 07:43+0700 Last-Translator: Trần Ngá»c Quân Language-Team: Vietnamese Language: vi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Language-Team-Website: X-Generator: Poedit 1.5.5 X-Poedit-SourceCharset: UTF-8 Tham số saiMáy ảnh đã được được dùng rồi.Không thể yêu cầu giao diện %d (%s). Kiểm tra xem không có chương trình khác (%s) hoặc mô-Ä‘un hạt nhân (v.d. %s) Ä‘ang sá»­ dụng thiết bị và bạn có quyá»n Ä‘á»c/ghi vào thiết bị này.Không thể quyá»n đòi thiết bị USBKhông thể đóng “%s†(%m).Không thể đóng “%s†(%s).Không thể đóng cổng USB (%s).Không thể gỡ ra trình Ä‘iá»u khiển hạt nhân “%s†cá»§a thiết bị máy ảnh.Không thể gỡ ra trình Ä‘iá»u khiển hạt nhân cá»§a thiết bị máy ảnh.Không tìm thấy thiết bị USB (hạng 0x%x, lá»›p con 0x%x, giao thức 0x%x). Kiểm tra xem thiết bị này được kết nối đến máy tính.Không tìm thấy thiết bị USB (nhà sản xuất 0x%x, sản phẩm 0x%x). Kiểm tra xem thiết bị này được kết nối đến máy tính.Không tìm thấy thiết bị yêu cầu trên cổng USBKhông thể đẩy dữ liệu lên đĩa (flush) “%s†(%s).Không thể lấy được mức chân %i (%s).Không thể khóa thiết bị “%sâ€Không thể khóa thiết bịKhông thể mở thiết bị USB (%s).Không thể truy vấn trình Ä‘iá»u khiển hạt nhân cá»§a thiết bị.Không thể Ä‘á»c từ “%s†(%m).Không thể gỡ kết nối lại trình Ä‘iá»u khiển hạt nhân cá»§a thiết bị máy ảnh.Không thể thả giao diện %d (%s).Không thể đặt lại cổng USB (%s).Không thể di chuyển vị trí Ä‘á»c đến vị trí bù: %x trên “%s†(%m).Không thể gá»­i câu lệnh scsi đến: “%s†(%m).Không thể đặt altsetting (cài đặt xen kẽ) từ %d thành %d (%s)Không thể đặt cấu hình %d/%d (%s)Không thể đặt mức chân từ %i thành %i (%s).Không thể đặt tốc độ truyá»n thành %dKhông thể ghi vào “%s†(%m).Không thể ghi vào cổng (%s)Không thể khóa thiết bị “%s†(dev_lock [khóa thiết bị] đã trả vá» %d)Không thể mở khóa thiết bị “%s†(dev_unlock [mở khóa thiết bị] đã trả vá» %d)Không thể mở khóa thiết bị “%s†bởi vì nó bị PID %d khóa.Không thể mở khóa thiết bị “%sâ€Thiết bị “%s†bị khóa bởi ứng dụng khác.Thiết bị “%s†bị khóa bởi tiến trình có mã số (PID) %dGặp lá»—i khi thoát khá»i trạng thái bị ngừng cá»§a cổng USBGặp lá»—i khi khởi tạo cổngGặp lá»—i khi tải thư việnGặp lá»—i khi Ä‘á»c từ cổngGặp lá»—i khi đặt tốc độ cá»§a cổng song songGặp lá»—i khi cập nhật các cài đặt cổngGặp lá»—i khi ghi vào cổngGặp lá»—i khi khóa “%s†(%m).Gặp lá»—i khi mở “%s†(%m).Gặp lá»—i khi mở “%s†(%s).Gặp lá»—i khi mở khóa “%s†(%m).Giá»›i hạn cứng đã bị vượt quáCổng chungVấn đỠV/RDịch vụ MacOS PTPCameraÄa phương tiện “%sâ€Không có lá»—iKhông có sẵn mô tả lá»—iHết bá»™ nhá»›Lá»—i chẵn lẻ.Cổng nối tiếp %iCổng song song không được há»— trợThao tác “%s†không được há»— trợ bởi thiết bị nàyCổng còn chưa được khởi tạoMã sản phẩm hay mã nhà sản xuất (0x%x, 0x%x) không phải hợp lệ.Quá hạn khi Ä‘á»c từ hoặc khi ghi vào cổng đóV/R trá»±c tiếp Lưu trữ Hàng loạt USBSCSI thô Lưu trữ Hàng loạt USBCổng USB không được há»— trợGặp dãy đáp ứng chẵn lẻ bất thưá»ng 0xff 0x%02x.Lá»—i không rõKhông hiểu chân %i.Không rõ cổngLá»—i không xác địnhThao tác không được há»— trợcaoLá»—i libhalthấpkhông hiểu chương trình dùng libgphoto2libgphoto2-2.5.9/libgphoto2_port/po/sv.gmo0000644000175000001440000001131312623156265015413 00000000000000Þ•2¬C<HIXr‘5¬yâj\3Çû(0 Y6z:±<ì")L/lœ¸Ð#ì 1Ke z ‡ “ž§ Æ Ôâñ2 %> ;d +  Ì 0ã  " 2 ? Q g l y ‚}   )- W >u ~´ p3 4¤ Ù ÷ 1,B8o<¨Då#* N2o¢#¿ã.+0\&z¡ ¹Æ Õ à!ê   (5+M&yN 6ï&(= fq €Œž¶ »Æ"./+0$& 21( % - ')* ,! #Bad parametersCamera is already in use.Could not claim the USB deviceCould not close '%s' (%m).Could not detach kernel driver '%s' of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not lock device '%s'Could not lock the deviceCould not query kernel driver of device.Could not set the baudrate to %dDevice '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to open '%s' (%m).Fixed limit exceededGeneric PortI/O problemMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowProject-Id-Version: libgphoto2_port 2.4.0 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2007-08-09 00:44+0100 Last-Translator: Daniel Nylander Language-Team: Swedish Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Felaktiga parametrarKameran används redan.Kunde inte göra ansprÃ¥k pÃ¥ USB-enhetenKunde inte stänga "%s" (%m).Kunde inte koppla loss kärndrivrutinen "%s" för kameraenhet.Kunde inte finna USB-enheten (klass 0x%x, underklass 0x%x, protokoll 0x%x). Kontrollera att enheten är ansluten till datorn.Kunde inte finna USB-enheten (tillverkare 0x%x, produkt 0x%x). Kontrollera att enheten är ansluten till datorn.Kunde inte finna den begärda enheten pÃ¥ USB-portenKunde inte lÃ¥sa enheten "%s"Kunde inte lÃ¥sa enhetenKunde inte frÃ¥ga kärndrivrutinen efter enheten.Kunde inte ställa in bithastigheten till %dEnheten "%s" kunde inte lÃ¥sas (dev_lock returnerade %d)Enheten "%s" kunde inte lÃ¥sas upp (dev_lock returnerade %d)Enheten "%s" kunde inte lÃ¥sas upp eftersom den är lÃ¥st av pid %d.Enheten "%s" kunde inte lÃ¥sas upp.Enheten "%s" är lÃ¥st av pid %dFel vid rensning av stopptillstÃ¥nd pÃ¥ USB-portenFel vid initiering av portenFel vid inläsning av ett bibliotekFel vid läsning frÃ¥n portenFel vid inställning av serieportens hastighetFel vid uppdatering av portinställningarnaFel vid skrivning till portenMisslyckades med att öppna "%s" (%m).Fast gräns överstigenAllmän portIn-/ut-problemMedia "%s"Inget felIngen felbeskrivning tillgängligSlut pÃ¥ minneParitetsfel.Serieport %iSerieporten stöds inteOperationen "%s" stöds inte av denna enhetPorten har ännu inte blivit initieradDen angivna tillverkare- eller produktidentiteten (0x%x,0x%x) är inte giltig.Timeout vid läsning frÃ¥n eller skrivning till portenUSB-porten stöds inteOväntad paritetsvarsekvens 0xff 0x%02x.Okänt felOkänd pin %i.Okänd portOspecificerat felOperationen stöds intehöglibhal-fellÃ¥glibgphoto2-2.5.9/libgphoto2_port/po/Makevars0000644000175000001440000000346212615454540015757 00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = libgphoto2_port-12 # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Lutz Mueller and others # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = gphoto-devel@lists.sourceforge.net # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = libgphoto2-2.5.9/libgphoto2_port/po/pl.gmo0000644000175000001440000001770712623156265015413 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an r÷“‹šͶ-„$²$×)ü>&9e£Ÿ”C?Ø&-?,m'š/Â8ò"+CN*’+½7é5!6W0Ž4¿,ô"!"DGgI¯Qù/K9{.µ3ä"$;`7,·ä&$*$O&t› · ÄÒ ê ÷ ,A$S8x%±K×;#/_7Ç<æ#3 DRg€ ‡•+›@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port 2.5.3 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-01-11 14:15+0100 Last-Translator: Jakub Bogusz Language-Team: Polish Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); ZÅ‚e parametryAparat jest już w użyciu.Nie udaÅ‚o siÄ™ zawÅ‚aszczyć interfejsu %d (%s). Należy upewnić siÄ™, czy żaden inny program (%s) lub moduÅ‚ jÄ…dra (taki jak %s) nie używa tego urzÄ…dzenia i mamy prawa odczytu/zapisu do urzÄ…dzenia.Nie udaÅ‚o siÄ™ zawÅ‚aszczyć urzÄ…dzenia USBNie udaÅ‚o siÄ™ zamknąć '%s' (%m).Nie udaÅ‚o siÄ™ zamknąć '%s' (%s).Nie udaÅ‚o siÄ™ zamknąć portu USB (%s).Nie udaÅ‚o siÄ™ odłączyć sterownika jÄ…dra '%s' od aparatu.Nie udaÅ‚o siÄ™ odłączyć sterownika jÄ…dra od aparatu.Nie udaÅ‚o siÄ™ odnaleźć urzÄ…dzenia USB (klasa 0x%x, podklasa 0x%x, protokół 0x%x). Należy upewnić siÄ™, że to urzÄ…dzenie jest podłączone do komputera).Nie udaÅ‚o siÄ™ odnaleźć urzÄ…dzenia USB (producent 0x%x, produkt 0x%x). Należy upewnić siÄ™, że to urzÄ…dzenie jest podłączone do komputera.Nie udaÅ‚o siÄ™ odnaleźć żądanego urzÄ…dzenia na porcie USBNie udaÅ‚o siÄ™ opróżnić '%s' (%s).Nie udaÅ‚o siÄ™ pobrać poziomu pinu %i (%s).Nie udaÅ‚o siÄ™ zablokować urzÄ…dzenia '%s'Nie udaÅ‚o siÄ™ zablokować urzÄ…dzeniaNie udaÅ‚o siÄ™ otworzyć urzÄ…dzenia USB (%s).Nie udaÅ‚o siÄ™ zapytać jÄ…dra o sterownik urzÄ…dzenia.Nie udaÅ‚ siÄ™ odczyt z '%s' (%m).Nie udaÅ‚o siÄ™ ponownie podłączyć sterownika jÄ…dra do aparatu.Nie udaÅ‚o siÄ™ oddać interfejsu %d (%s).Nie udaÅ‚o siÄ™ zresetować portu USB (%s).Nie udaÅ‚o siÄ™ zmienić poÅ‚ożenia na %x w '%s' (%m).Nie udaÅ‚o siÄ™ wysÅ‚ać polecenia SCSI do '%s' (%m).Nie udaÅ‚o siÄ™ przestawić altsetting z %d na %d (%s)Nie udaÅ‚o siÄ™ ustawić konfiguracji %d/%d (%s)Nie udaÅ‚o siÄ™ ustawić poziomu pinu %i na %i (%s).Nie udaÅ‚o siÄ™ ustawić liczby bodów na %dNie udaÅ‚ siÄ™ zapis do '%s' (%m).Nie udaÅ‚ siÄ™ zapis do portu (%s)UrzÄ…dzenie '%s' nie może zostać zablokowane (dev_lock zwróciÅ‚o %d)UrzÄ…dzenie '%s' nie może zostać odblokowane (dev_unlock zwróciÅ‚o %d)UrzÄ…dzenie '%s' nie może zostać odblokowane, bo jest zablokowane przez pid %d.UrzÄ…dzenie '%s' nie może zostać odblokowane.UrzÄ…dzenie '%s' jest zablokowane przez innÄ… aplikacjÄ™.UrzÄ…dzenie '%s' jest zablokowane przez pid %dBłąd podczas zerowania warunku stopu na pocie USBBłąd podczas inicjalizacji portuBłąd podczas Å‚adowania bibliotekiBłąd podczas odczytu z portuBłąd podczas ustawiania prÄ™dkoÅ›ci portu szeregowegoBłąd podczas uaktualniania ustawieÅ„ portuBłąd podczas zapisu do portuNie udaÅ‚o siÄ™ zablokować '%s' (%m).Nie udaÅ‚o siÄ™ otworzyć '%s' (%m).Nie udaÅ‚o siÄ™ otworzyć '%s' (%s).Nie udaÅ‚o siÄ™ odblokować '%s' (%m).Przekroczony ustalony limitOgólny portProblem we/wyUsÅ‚uga MacOS PTPCameraNoÅ›nik '%s'Brak błęduOpis błędu niedostÄ™pnyBrak pamiÄ™ciBłąd parzystoÅ›ci.Port szeregowy %iPort szeregowy nie jest obsÅ‚ugiwanyOperacja '%s' nie jest obsÅ‚ugiwana przez to urzÄ…dzeniePort nie zostaÅ‚ jeszcze zainicjowanyPodany identyfikator producenta lub produktu (0x%x,0x%x) nie jest poprawny.Przekroczony limit czasu przy odczycie lub zapisie do portuBezpoÅ›rednie we/wy urzÄ…dzeÅ„ USB Mass StorageBezpoÅ›rednie operacje SCSI urzÄ…dzeÅ„ USB Mass StoragePort USB nie jest obsÅ‚ugiwanyNieoczekiwana sekwencja odpowiedzi parzystoÅ›ci 0xff 0x%02x.Nieznany błądNieznany pin %i.Nieznany portNieokreÅ›lony błądNieobsÅ‚ugiwana operacjawysokiBłąd libhalniskinieznany program korzystajÄ…cy z libgphoto2libgphoto2-2.5.9/libgphoto2_port/po/da.gmo0000644000175000001440000001667212623156265015364 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an r“­À°ÝެÈä72<uolå6R‰'¦Îê"/&V2v)©#Ó0÷.(3W*‹/¶!æ )8I=‚<À"ý& G7g!Ÿ!Áã2(3\z™· Õö %1 J U"`ƒ ˜¦µ3Ô)G2,z§Æã)ÿ )5 DPg †’#–@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port 2.5.3 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-02-04 15:15+0100 Last-Translator: Mogens Jaeger Language-Team: Danish Language: da MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 1.5 Plural-Forms: nplurals=2; plural=(n != 1); X-Poedit-Language: Danish X-Poedit-Country: DENMARK X-Poedit-SourceCharset: utf-8 Forkerte parametreKameraet er allerede i brug.Kunne ikke kræve grænseflade %d (%s). Sikr dig at ingen andre programmer (%s) eller kernemoduler (som f.eks. %s) bruger enheden, og at du har læse/skrive adgang til enheden.Kunne ikke kræve USB enhedenKunne ikke lukke '%s' (%m).Kunne ikke lukke '%s' (%s).Kunne ikke lukke USB-port (%s).Kunne ikke frigøre kernedriver '%s' fra kameraenheden.Kunne ikke frigøre kernedriver fra kameraenheden.Kunne ikke finde USB-enheden (class 0x%x, subclass 0x%x, protokol0x%x). Sikr dig at enheden er tilsluttet computeren.Kunne ikke finde USB-enheden (fremstiller 0x%x, produkt 0x%x). Sikr dig at enheden er tilsluttet computeren.Kunne ikke finde den efterspurgte enhed pÃ¥ USB-portenKunne ikke tømme '%s' (%s).Kunne ikke hente niveau af pin %i (%s).Kunne ikke lÃ¥se enhed '%s'Kunne ikke lÃ¥se enhedenKunne ikke Ã¥bne USB enheden (%s).Kunne ikke forespørge kernedriver fra enheden.Kunne ikke læse fra '%s' (%m).Kunne ikke frigøre kernedriver fra kameraenheden.Kunne ikke frigøre grænseflade %d (%s).Kunne ikke nulstille USB-port (%s).Kunne ikke søge efter offset: %x pÃ¥ '%s' (%m).Kunne ikke sende SCSI kommando til: '%s' (%m).Kunne ikke sætte alt-indstillinger %d til /%d (%s)Kunne ikke sætte konfiguration %d/%d (%s)Kunne ikke sætte niveau af pin %i til %i (%s).Kunne ikke sætte baudrate til %dKunne ikke skrive til '%s' (%m).Kunne ikke skrive til port (%s)Enheden '%s' kunne ikke lÃ¥ses (dev_lock returnerede %d)Enheden '%s' kunne ikke lÃ¥ses op (dev_unlock returnerede %d)Enheden '%s' kunne ikke lÃ¥ses op da den er lÃ¥st af pid %d.Enheden '%s' kunne ikke lÃ¥ses op.Enheden '%s' er lÃ¥st af en anden app.Enheden '%s' er lÃ¥st af pid %dFejl ved nulstilling af en stop-tilstand pÃ¥ USB-portenFejl ved initialisering af portenFejl ved indlæsning af bibliotekFejl ved læsning fra portenFejl ved indstilling af den serielle porthastighedFejl ved opdatering af portindstillingerFejl ved skrivning til portenLÃ¥sning af '%s' (%m) fejlede.Ã…bning af '%s' (%m) fejlede.Ã…bning af '%s' (%s) fejlede.OplÃ¥sning af '%s' (%m) fejlede.Fast grænseværdi overskredetAlmindelig portI/O problemMacOS PTPCamera-tjenesteMedie '%s'Ingen fejlIngen fejlbeskrivelse tilgængeligIkke mere hukommelseParitetsfejl.Seriel-port %iSeriel-port ikke understøttetProcessen '%s' er ikke understøttet af denne enhedPorten er endnu ikke blevet initialiseretDet leverede fremstiller- eller produkt-id (0x%x,0x%x) er ikke gyldigt.Tidsudløb ved læsning/skrivning til portenUSB masselagerenhed direkte IOUSB masselagerenhed rÃ¥ SCSIUSB-port ikke understøttetUventet paritetssvar-sekvens 0xff 0x%02x.Ukendt fejlUkendt pin %i.Ukendt portIkke-specificeret fejlIkke understøttet proceshøjlibhal fejllavandet ukendt program bruger enhedenlibgphoto2-2.5.9/libgphoto2_port/po/pt_BR.gmo0000644000175000001440000001316512623156265016000 00000000000000Þ•8ÜOœØÙè!5<yrjì3W‹¦(Àé**3 ^6:Ô<"Lo/¿Ûó# 3 T n ˆ ª ¶ Á Ê é ÷   2. %a ;‡ +à ï  $ 0; l z Š — © ¿ Ä Ñ ÂÕ ˜ ¯ .Ë $ú O¢o”D§,ì'>A$€;¥9á1+M@yEºL-M,{:¨ãÿ,4-a©Äãó $=L^n7‡#¿<ã/ *P%{¡:·ò-D[`o10-(7 . 4'  32&,$/#5  6!*+)%"8Bad parametersCamera is already in use.Could not claim the USB deviceCould not close '%s' (%m).Could not detach kernel driver '%s' of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not lock device '%s'Could not lock the deviceCould not query kernel driver of device.Could not read from '%s' (%m).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set the baudrate to %dCould not write to '%s' (%m).Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to open '%s' (%m).Fixed limit exceededGeneric PortI/O problemMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowProject-Id-Version: libgphoto2_port 2.4.9 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2010-05-09 20:44-0300 Last-Translator: Fabrício Godoy Language-Team: Brazilian Portuguese Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); Parâmetros incorretosA câmera já está em uso.Não foi possível contactar o dispositivo USBNão foi possível fechar "%s" (%m).Não foi possível desanexar o driver de kernel "%s" do dispositivo de câmera.Não foi possível localizar o dispositivo USB (classe 0x%x, subclasse 0x%x, protocolo 0x%x). Tenha certeza de que esse dispositivo está conectado ao computador.Não foi possível localizar o dispositivo USB (fabricante 0x%x, produto 0x%x). Tenha certeza de que esse dispositivo está conectado ao computador.Não foi possível localizar o dispositivo especificado na porta USBNão foi possível travar o dispositivo "%s"Não foi possível travar o dispositivoNão foi possível examinar o driver de kernel do dispositivo.Não foi possível ler de "%s" (%m).Não foi possível buscar até a posição %x em "%s" (%m).Não foi possível enviar um comando SCSI para "%s" (%m).Não foi possível ajustar a taxa de baud para %dNão foi possível escrever para "%s" (%m).O dispositivo "%s" não pôde ser travado (dev_lock retornou %d)O dispositivo "%s" não pôde ser destravado (dev_unlock retornou %d)O dispositivo "%s" não pôde ser destravado pois está travado pelo PID %d.O dispositivo "%s" não pôde ser destravado.O dispositivo "%s" está travado pelo PID %dErro ao apagar uma condição de desligamento na porta USBErro ao inicializar a portaErro ao carregar uma bibliotecaErro ao ler da portaErro ao ajustar a velocidade da porta serialErro ao atualizar as configurações da portaErro ao escrever na portaFalhou ao abrir "%s" (%m).O limite definido foi excedidoPorta genéricaProblema de E/SMídia "%s"Sem erroDescrição do erro não disponívelMemória cheiaErro de paridade.Porta serial %iPorta serial sem suporteNão há suporte a operação "%s" por esse dispositivoA porta ainda não foi inicializadaO fabricante ou o ID do produto (0x%x,0x%x) não é válido.Tempo esgotado ao ler ou gravar da/para a portaE/S direta para armazenamento em massa USBArmazenamento em massa USB bruto SCSIPorta USB sem suporteSequência de resposta de paridade inesperada 0xff 0x%02x.Erro desconhecidoPino desconhecido %i.Porta desconhecidaErro não especificadoOperação sem suportealtoerro no libhalbaixolibgphoto2-2.5.9/libgphoto2_port/po/en@quot.header0000644000175000001440000000226312557123756017055 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # libgphoto2-2.5.9/libgphoto2_port/po/uk.po0000644000175000001440000005620712623156265015251 00000000000000# Ukrainian translation of libgphoto2_port. # Copyright (C) 2000 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # # Maxim V. Dziumanenko , 2006-2007. # Yuri Chornoivan , 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: libgphoto2_port-2.5.3\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-01-11 13:48+0200\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.5\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Звичайний порт" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Помилок немає" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Ðевизначена помилка" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "Помилка вводу/виводу" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Ðеправильні аргументи" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Ðепідтримувана діÑ" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Перевищено визначене обмеженнÑ" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Вийшов Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ñ– при читанні або запиÑÑ– у порт" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Ðемає підтримки поÑлідовного порту" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "Ðемає підтримки порту USB" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Ðевідомий порт" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "ÐедоÑтатньо пам'Ñті" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Помилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Помилка ініціалізації порту" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Помилка Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· порту" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Помилка запиÑу у порт" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Помилка Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² порту" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Помилка вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті передачі через поÑлідовний порт" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Помилка уÑÑƒÐ½ÐµÐ½Ð½Ñ halt-умови на порту USB" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ запитаний приÑтрій на порту USB" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ контроль на д приÑтроєм USB" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Ðе вдалоÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ приÑтрій" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "помилка libhal" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Ðевідома помилка" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Цей приÑтрій не підтримує операцію «%s»" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "порт ще не був ініціалізований" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "низьк." #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "виÑок." #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "ÐžÐ¿Ð¸Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ недоÑтупний" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "ÐоÑій «%s»" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Ðе вдалоÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ приÑтрій «%s»" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "ПриÑтрій «%s» заблоковано процеÑом з pid %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "Ðеможливо заблокувати приÑтрій «%s» (Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ dev_lock повернула %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "ПриÑтрій «%s» неможливо розблокувати." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "ПриÑтрій «%s» неможливо розблокувати, оÑкільки він заблокований процеÑом %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "" "приÑтрій «%s» неможливо розблокувати (Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ dev_unlock повернула Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ " "%d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "ПоÑлідовний порт %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ «%s» (%s)." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Ðе вдалоÑÑ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸ «%s» (%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати у порт (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "Помилка парноÑті" #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Ðеочікувана поÑлідовніÑть контролю парноÑті 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Ðевідомий pin %i." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ рівень pin %i (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Ðе вдалоÑÑ Ð²Ñтановити рівень pin %i у %i (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Ðе вдалоÑÑ Ñкинути буфери приÑтрою «%s» (%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Ðеможливо вÑтановити швидкіÑть %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "БезпоÑереднє введеннÑ-Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð° приÑтрої USB" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ «%s» (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Ðе вдалоÑÑ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸ «%s» (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Ðе вдалоÑÑ Ð²Ñтановити позицію з відÑтупом %x на «%s» (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ «%s» (%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· «%s» (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ приÑтрій USB (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Фотоапарат вже зайнÑтий." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ драйвера Ñдра «%s» Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтрою фотоапарата." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Ðе вдалоÑÑ Ð¾Ð¿Ð¸Ñ‚Ð°Ñ‚Ð¸ драйвер Ñдра Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтрою." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Ðе вдалоÑÑ Ð·Ð°Ñ…Ð¾Ð¿Ð¸Ñ‚Ð¸ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%s). Перевірте, що приÑтрій не зайнÑтий " "іншою програмою (%s) або модулем Ñдра (таким Ñк %s), та що у Ð²Ð°Ñ Ñ” доÑтуп " "Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу до приÑтрою." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "Служба PTPCamera MacOS" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "невідома програма, що викориÑтовує libgphoto2" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Ðе вдалоÑÑ Ð·Ð²Ñ–Ð»ÑŒÐ½Ð¸Ñ‚Ð¸ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%s)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ початковий Ñтан порту USB (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Ðе вдалоÑÑ Ð·Ð°Ñ€Ð¸Ñ‚Ð¸ порт USB (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Ðе вдалоÑÑ Ð²Ñтановити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ %d/%d (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Ðе вдалоÑÑ Ð²Ñтановити альтернативне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð· %d на %d (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "неправильний ідентифікатор виробника та продукту (0x%x,0x%x)." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ приÑтрій USB (виробник 0x%x, продукт 0x%x). Перевірте, що " "приÑтрій з'єднаний з комп'ютером." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ приÑтрій USB (ÐºÐ»Ð°Ñ 0x%x, Ð¿Ñ–Ð´ÐºÐ»Ð°Ñ 0x%x, протокол 0x%x). " "Перевірте, що приÑтрій з'єднаний з комп'ютером." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ драйвера Ñдра Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтрою фотоапарата." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "Ðе вдалоÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ з’єднати драйвер Ñдра Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтрою фотоапарата." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "ПриÑтрій «%s» заблоковано іншою програмою." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "Ðе вдалоÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ «%s» (%m)." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ «%s» (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "SCSI без обробки Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтроїв USB" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Ðе вдалоÑÑ Ð½Ð°Ð´Ñ–Ñлати команду scsi до «%s» (%m)." #~ msgid "Called for filename '%s'." #~ msgstr "Виклик Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s»." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ «%s»: «%s»." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Ðе знайдені деÑкі функції у «%s»: «%s»." #~ msgid "'%s' already loaded" #~ msgstr "«%s» вже завантажено" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ ÑпиÑок драйверів портів: «%s»." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "Завантажено «%s» («%s») з «%s»." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "ВикориÑтовуєтьÑÑ ltdl Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ñ–Ð² портів з «%s»…" #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "Підрахунок кількоÑті запиÑів (доÑтупно %i)…" #~ msgstr[1] "Підрахунок кількоÑті запиÑів (доÑтупно %i)…" #~ msgstr[2] "Підрахунок кількоÑті запиÑів (доÑтупно %i)…" #~ msgstr[3] "Підрахунок кількоÑті запиÑів (доÑтупно %i)…" #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "доÑтупний %i звичайний запиÑ." #~ msgstr[1] "доÑтупні %i звичайних запиÑи." #~ msgstr[2] "доÑтупні %i звичайних запиÑів." #~ msgstr[3] "доÑтупний %i звичайний запиÑ." #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "Пошук шлÑху «%s» (доÑтупний %i запиÑ)…" #~ msgstr[1] "Пошук шлÑху «%s» (доÑтупні %i запиÑи)…" #~ msgstr[2] "Пошук шлÑху «%s» (доÑтупні %i запиÑів)…" #~ msgstr[3] "Пошук шлÑху «%s» (доÑтупний %i запиÑ)…" #~ msgid "Starting regex search for '%s'..." #~ msgstr "Початок пошуку «%s» з викориÑтаннÑм регулÑрних виразів…" #~ msgid "Trying '%s'..." #~ msgstr "перевірÑєтьÑÑ Â«%s»…" #~ msgid "regcomp failed" #~ msgstr "помилка regcomp" #~ msgid "re_match failed (%i)" #~ msgstr "помилка re_match (%i)" #~ msgid "regexec failed" #~ msgstr "помилка regexec" #~ msgid "Looking up entry '%s'..." #~ msgstr "Пошук запиÑу «%s»…" #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про Ð·Ð°Ð¿Ð¸Ñ %i (доÑтупно %i)…" #~ msgstr[1] "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про Ð·Ð°Ð¿Ð¸Ñ %i (доÑтупно %i)…" #~ msgstr[2] "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про Ð·Ð°Ð¿Ð¸Ñ %i (доÑтупно %i)…" #~ msgstr[3] "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про Ð·Ð°Ð¿Ð¸Ñ %i (доÑтупно %i)…" #~ msgid "Creating new device..." #~ msgstr "СтворюєтьÑÑ Ð½Ð¾Ð²Ð¸Ð¹ приÑтрій…" #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ «%s» («%s»)." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ 'gp_port_library_operations' у «%s» («%s»)" #~ msgid "Opening %s port..." #~ msgstr "Ð’Ñ–Ð´ÐºÑ€Ð¸Ð²Ð°Ð½Ð½Ñ %s порту…" #~ msgid "Closing port..." #~ msgstr "Ð—Ð°ÐºÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ€Ñ‚Ñƒâ€¦" #~ msgid "Resetting port..." #~ msgstr "ЗвільнÑємо порт…" #~ msgid "Freeing port..." #~ msgstr "Ð—Ð²Ñ–Ð»ÑŒÐ½ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ€Ñ‚Ñƒâ€¦" #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Ð—Ð°Ð¿Ð¸Ñ %i=0x%x байтів до порту…" #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "ЗапиÑано лише %i з %i байта" #~ msgstr[1] "ЗапиÑано лише %i з %i байтів" #~ msgstr[2] "ЗапиÑано лише %i з %i байтів" #~ msgstr[3] "ЗапиÑано лише %i з %i байта" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байта з порту…" #~ msgstr[1] "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байтів з порту…" #~ msgstr[2] "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байтів з порту…" #~ msgstr[3] "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байта з порту…" #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "ВдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ лише %i з %i байта" #~ msgstr[1] "ВдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ лише %i з %i байтів" #~ msgstr[2] "ВдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ лише %i з %i байтів" #~ msgstr[3] "ВдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ лише %i з %i байта" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байта з кінцевої точки перериваннÑ…" #~ msgstr[1] "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байтів з кінцевої точки перериваннÑ…" #~ msgstr[2] "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байтів з кінцевої точки перериваннÑ…" #~ msgstr[3] "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байта з кінцевої точки перериваннÑ…" #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "ВдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ лише %i з %i байта" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байта з кінцевої точки Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ (приÑкорене)…" #~ msgstr[1] "" #~ "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байтів з кінцевої точки Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ (приÑкорене)…" #~ msgstr[2] "" #~ "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байтів з кінцевої точки Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ (приÑкорене)…" #~ msgstr[3] "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ %i=0x%x байта з кінцевої точки Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ (приÑкорене)…" #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ %i міліÑекунду…" #~ msgid "Getting timeout..." #~ msgstr "Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу затримки…" #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Поточний Ñ‡Ð°Ñ Ð·Ð°Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸: %i міліÑекунд" #~ msgid "Setting settings..." #~ msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð²â€¦" #~ msgid "Getting level of pin %i..." #~ msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ€Ñ–Ð²Ð½Ñ pin %i…" #~ msgid "Level of pin %i: %i" #~ msgstr "Рівень pin %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ pin %i (%s: «%s») у «%s»…" #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "ÐадÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñигналу Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ (%i міліÑекунда)…" #~ msgid "Flushing port..." #~ msgstr "Ð¡ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ñ–Ð² порту…" #~ msgid "Clear halt..." #~ msgstr "ОчиÑтити ознаку halt…" #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Ð—Ð°Ð¿Ð¸Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ (запит=0x%x значеннÑ=0x%x індекÑ=0x%x розмір=%i=0x%x)…" #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ (запит=0x%x значеннÑ=0x%x індекÑ=0x%x розмір=%i=0x%x)" #~ "…" #~ msgid "Device has driver '%s' attached." #~ msgstr "З приÑтроєм з’єднано драйвер «%s»." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Підключено драйвер «%s». ВиконуєтьÑÑ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð°." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "ПриÑтрій USB (виробник 0x%x, продукт 0x%x) працює Ñк приÑтрій Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ " #~ "даних. Програма gphoto2 не може його викориÑтовувати: %s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "Ð”Ð»Ñ Ð¿Ñ€Ð¸Ñтрою викориÑтано драйвер Ñдра (%d), від’єднуємо драйвер." #~ msgid "Could not open USB device (%m)." #~ msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ приÑтрій USB (%m)." #~ msgid "" #~ "Could not claim interface %d (%m). Make sure no other program or kernel " #~ "module (such as %s) is using the device and you have read/write access to " #~ "the device." #~ msgstr "" #~ "Ðе вдалоÑÑ Ð·Ð°Ñ…Ð¾Ð¿Ð¸Ñ‚Ð¸ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%m). Перевірте, що приÑтрій не зайнÑтий " #~ "іншою програмою або модулем Ñдра (таким Ñк %s), та що у Ð²Ð°Ñ Ñ” доÑтуп " #~ "Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу до приÑтрою." #~ msgid "Could not release interface %d (%m)." #~ msgstr "Ðе вдалоÑÑ Ð·Ð²Ñ–Ð»ÑŒÐ½Ð¸Ñ‚Ð¸ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%m)." #~ msgid "Could not reset USB port (%m)." #~ msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ початковий Ñтан порту USB (%m)." #~ msgid "Could not set config %d/%d (%m)" #~ msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ конфігурацію %d/%d (%m)" #~ msgid "Could not set altsetting from %d to %d (%m)" #~ msgstr "Ðе вдалоÑÑ Ð²Ñтановити альтернативне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð· %d на %d (%m)" #~ msgid "(unknown)" #~ msgstr "(невідомий)" #~ msgid "msg_read" #~ msgstr "msg_read" libgphoto2-2.5.9/libgphoto2_port/po/en@boldquot.header0000644000175000001440000000247112557123756017717 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # libgphoto2-2.5.9/libgphoto2_port/po/vi.po0000644000175000001440000004550312623156265015245 00000000000000# Vietnamese translation for Lib GPhoto Port. # Bản dịch tiếng Việt dành cho libgphoto2-port. # Copyright © 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # Ngô Trần Thá»§y , 2005. # Clytie Siddall , 2008, 2009, 2010. # Trần Ngá»c Quân , 2012-2014. # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.5.6\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-12-23 07:43+0700\n" "Last-Translator: Trần Ngá»c Quân \n" "Language-Team: Vietnamese \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Language-Team-Website: \n" "X-Generator: Poedit 1.5.5\n" "X-Poedit-SourceCharset: UTF-8\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Cổng chung" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Không có lá»—i" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Lá»—i không xác định" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "Vấn đỠV/R" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Tham số sai" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Thao tác không được há»— trợ" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Giá»›i hạn cứng đã bị vượt quá" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Quá hạn khi Ä‘á»c từ hoặc khi ghi vào cổng đó" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Cổng song song không được há»— trợ" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "Cổng USB không được há»— trợ" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Không rõ cổng" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Hết bá»™ nhá»›" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Gặp lá»—i khi tải thư viện" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Gặp lá»—i khi khởi tạo cổng" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Gặp lá»—i khi Ä‘á»c từ cổng" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Gặp lá»—i khi ghi vào cổng" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Gặp lá»—i khi cập nhật các cài đặt cổng" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Gặp lá»—i khi đặt tốc độ cá»§a cổng song song" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Gặp lá»—i khi thoát khá»i trạng thái bị ngừng cá»§a cổng USB" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Không tìm thấy thiết bị yêu cầu trên cổng USB" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Không thể quyá»n đòi thiết bị USB" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Không thể khóa thiết bị" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "Lá»—i libhal" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Lá»—i không rõ" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Thao tác “%s†không được há»— trợ bởi thiết bị này" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Cổng còn chưa được khởi tạo" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "thấp" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "cao" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Không có sẵn mô tả lá»—i" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "Äa phương tiện “%sâ€" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Không thể khóa thiết bị “%sâ€" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "Thiết bị “%s†bị khóa bởi tiến trình có mã số (PID) %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "Không thể khóa thiết bị “%s†(dev_lock [khóa thiết bị] đã trả vá» %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Không thể mở khóa thiết bị “%sâ€" #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "Không thể mở khóa thiết bị “%s†bởi vì nó bị PID %d khóa." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "" "Không thể mở khóa thiết bị “%s†(dev_unlock [mở khóa thiết bị] đã trả vá» %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Cổng nối tiếp %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Gặp lá»—i khi mở “%s†(%s)." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Không thể đóng “%s†(%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Không thể ghi vào cổng (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "Lá»—i chẵn lẻ." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Gặp dãy đáp ứng chẵn lẻ bất thưá»ng 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Không hiểu chân %i." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Không thể lấy được mức chân %i (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Không thể đặt mức chân từ %i thành %i (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Không thể đẩy dữ liệu lên đĩa (flush) “%s†(%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Không thể đặt tốc độ truyá»n thành %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "V/R trá»±c tiếp Lưu trữ Hàng loạt USB" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Gặp lá»—i khi mở “%s†(%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Không thể đóng “%s†(%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Không thể di chuyển vị trí Ä‘á»c đến vị trí bù: %x trên “%s†(%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Không thể ghi vào “%s†(%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Không thể Ä‘á»c từ “%s†(%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Không thể mở thiết bị USB (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Máy ảnh đã được được dùng rồi." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Không thể gỡ ra trình Ä‘iá»u khiển hạt nhân “%s†cá»§a thiết bị máy ảnh." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Không thể truy vấn trình Ä‘iá»u khiển hạt nhân cá»§a thiết bị." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Không thể yêu cầu giao diện %d (%s). Kiểm tra xem không có chương trình khác " "(%s) hoặc mô-Ä‘un hạt nhân (v.d. %s) Ä‘ang sá»­ dụng thiết bị và bạn có quyá»n " "Ä‘á»c/ghi vào thiết bị này." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "Dịch vụ MacOS PTPCamera" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "không hiểu chương trình dùng libgphoto2" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Không thể thả giao diện %d (%s)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Không thể đặt lại cổng USB (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Không thể đóng cổng USB (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Không thể đặt cấu hình %d/%d (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Không thể đặt altsetting (cài đặt xen kẽ) từ %d thành %d (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "Mã sản phẩm hay mã nhà sản xuất (0x%x, 0x%x) không phải hợp lệ." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Không tìm thấy thiết bị USB (nhà sản xuất 0x%x, sản phẩm 0x%x). Kiểm tra xem " "thiết bị này được kết nối đến máy tính." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Không tìm thấy thiết bị USB (hạng 0x%x, lá»›p con 0x%x, giao thức 0x%x). Kiểm " "tra xem thiết bị này được kết nối đến máy tính." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Không thể gỡ ra trình Ä‘iá»u khiển hạt nhân cá»§a thiết bị máy ảnh." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "" "Không thể gỡ kết nối lại trình Ä‘iá»u khiển hạt nhân cá»§a thiết bị máy ảnh." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "Thiết bị “%s†bị khóa bởi ứng dụng khác." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "Gặp lá»—i khi khóa “%s†(%m)." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Gặp lá»—i khi mở khóa “%s†(%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "SCSI thô Lưu trữ Hàng loạt USB" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Không thể gá»­i câu lệnh scsi đến: “%s†(%m)." #~ msgid "Called for filename '%s'." #~ msgstr "Äã gá»i cho tên tập tin “%sâ€." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Không thể tải “%sâ€: “%sâ€." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Không thể tìm thấy má»™t số chức năng trong “%sâ€: â€%sâ€." #~ msgid "'%s' already loaded" #~ msgstr "“%s†đã được tải sẵn" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Không thể tải được danh sách trình Ä‘iá»u khiển thiết bị cổng: “%sâ€." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "Äã tải “%s†(“%sâ€) từ “%sâ€." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "Äang dùng ltdl để tải các trình Ä‘iá»u khiển V/R từ “%sâ€â€¦" #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "Äang đếm số lượng mục tin (có %i sẵn sàng)…" #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "%i mục tin thông thưá»ng sẵn dùng." #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "Äang tìm cho đưá»ng đẫn “%s†(%i mục sẵn sàng)…" #~ msgid "Starting regex search for '%s'..." #~ msgstr "Äang bắt đầu quá trình tìm kiếm bằng biểu thức chính quy cho “%sâ€â€¦" #~ msgid "Trying '%s'..." #~ msgstr "Äang thá»­ “%sâ€â€¦" #~ msgid "regcomp failed" #~ msgstr "regcomp gặp lá»—i" #~ msgid "re_match failed (%i)" #~ msgstr "re_match (khá»›p lại) gặp lá»—i (%i)" #~ msgid "regexec failed" #~ msgstr "regexec (thá»±c hiện biểu thức chính quy) gặp lá»—i" #~ msgid "Looking up entry '%s'..." #~ msgstr "Tìm kiếm mục “%sâ€â€¦ " #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "Äang lấy dữ liệu cá»§a mục %i (có %i sẵn sàng)…" #~ msgid "Creating new device..." #~ msgstr "Äang tạo thiết bị má»›i…" #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Không thể tải “%s†(“%sâ€)." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "" #~ "Không tìm thấy “gp_port_library_operations†(các thao tác thư viện cổng " #~ "gp) tại “%s†(â€%sâ€)" #~ msgid "Opening %s port..." #~ msgstr "Äang mở cổng %s…" #~ msgid "Closing port..." #~ msgstr "Äang đóng cổng…" #~ msgid "Resetting port..." #~ msgstr "Äang đặt lại cổng…" #~ msgid "Freeing port..." #~ msgstr "Äang giải phóng cổng…" #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Äang ghi %i=0x%x byte ra cổng…" #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "Chỉ ghi được %i từ %i byte" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "Äang Ä‘á»c %i=0x%x byte từ cổng…" #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "Chỉ Ä‘á»c được %i trong số %i byte" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "Äang Ä‘á»c %i=0x%x byte từ thá»i Ä‘iểm cuối cùng bị ngắt…" #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Chỉ Ä‘á»c được %i trong số %i byte" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "Äang Ä‘á»c %i=0x%x byte từ thá»i Ä‘iểm cuối cùng bị ngắt (nhanh)…" #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Äang đặt thá»i gian chá» tối Ä‘a thành %i mi-li-giây…" #~ msgid "Getting timeout..." #~ msgstr "Äang lấy thá»i gian chá» tối Ä‘a…" #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Thá»i gian chá» tối Ä‘a hiện thá»i: %i mi-li-giây" #~ msgid "Setting settings..." #~ msgstr "Äang cài đặt các cài đặt…." #~ msgid "Getting level of pin %i..." #~ msgstr "Äang lấy mức cá»§a chân %i…" #~ msgid "Level of pin %i: %i" #~ msgstr "Mức cá»§a chân %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Äăng đặt chân %i (%s: “%sâ€) thành “%sâ€â€¦ " #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "Äang gá»­i lệnh ngắt (%i mi-li-giây)…" #~ msgid "Flushing port..." #~ msgstr "Äang đẩy dữ liệu lên cổng…" #~ msgid "Clear halt..." #~ msgstr "Thoát khá»i trạng thái bị ngừng…" #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Äang ghi thông Ä‘iệp (yêu cầu=0x%x giá trị=0x%x chỉ mục=0x%x kích cỡ=%i=0x" #~ "%x)…" #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Äang Ä‘á»c thông Ä‘iệp (yêu cầu=0x%x giá trị=0x%x chỉ mục=0x%x kích cỡ=%i=0x" #~ "%x)…" #~ msgid "Device has driver '%s' attached." #~ msgstr "Trình Ä‘iá»u khiển “%s†được gắn nối." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Thiết bị có trình Ä‘iá»u khiển đính kèm “%s†nên gỡ ra ngay bây giá»." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "Thiết bị USB (nhà sản xuất 0x%x, sản phẩm 0x%x) là má»™t thiết bị lưu trữ " #~ "hàng loạt, và có thể không hoạt động được vá»›i trình gphoto2. Tham khảo : " #~ "%s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "" #~ "Thiết bị có trình Ä‘iá»u khiển nhân đính kèm (%d), Ä‘ang gỡ ra ngay bây giá»." #~ msgid "Could not open USB device (%m)." #~ msgstr "Không thể mở thiết bị USB (%m)." #~ msgid "" #~ "Could not claim interface %d (%m). Make sure no other program or kernel " #~ "module (such as %s) is using the device and you have read/write access to " #~ "the device." #~ msgstr "" #~ "Không thể quyá»n đòi giao diện %d (%m). Kiểm tra xem không có chương trình " #~ "khác hoặc môđ-Ä‘un hạt nhân (v.d. %s) Ä‘ang sá»­ dụng thiết bị, và bạn có " #~ "quyá»n Ä‘á»c từ và ghi vào thiết bị này." #~ msgid "Could not release interface %d (%m)." #~ msgstr "Không thể nhả giao diện %d (%m)." #~ msgid "Could not reset USB port (%m)." #~ msgstr "Không thể đặt lại cổng USB (%m)." #~ msgid "Could not set config %d/%d (%m)" #~ msgstr "Không thể đặt cấu hình %d/%d (%m)" #~ msgid "Could not set altsetting from %d to %d (%m)" #~ msgstr "Không thể đặt altsetting (cài đặt xen kẽ) từ %d thành %d (%m)" #~ msgid "(unknown)" #~ msgstr "(không rõ)" #~ msgid "msg_read" #~ msgstr "msg_read (Ä‘á»c thông Ä‘iệp)" libgphoto2-2.5.9/libgphoto2_port/po/uk.gmo0000644000175000001440000002362212623156265015410 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an r+“)¿-é4TL/¡/Ñ3y5r¯È"¹ëX¥Mþ>LB‹;Î? SJCž~âBaY¤bþLag®LHc=¬Aê5,qb†ÔŠ[DæM+IyCÃ4 << +y v¥ A!'^!7†!1¾!1ð!9"":\"—"&³"Ú"÷" #.##$R#w#"—#Aº#Gü#8D$i}$qç$VY%8°%,é%`&w&—&²&%Î&#ô& '$' :'KF'@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port-2.5.3 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-01-11 13:48+0200 Last-Translator: Yuri Chornoivan Language-Team: Ukrainian Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 1.5 Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; Ðеправильні аргументиФотоапарат вже зайнÑтий.Ðе вдалоÑÑ Ð·Ð°Ñ…Ð¾Ð¿Ð¸Ñ‚Ð¸ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%s). Перевірте, що приÑтрій не зайнÑтий іншою програмою (%s) або модулем Ñдра (таким Ñк %s), та що у Ð²Ð°Ñ Ñ” доÑтуп Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу до приÑтрою.Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ контроль на д приÑтроєм USBÐе вдалоÑÑ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸ «%s» (%m).Ðе вдалоÑÑ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸ «%s» (%s).Ðе вдалоÑÑ Ð·Ð°Ñ€Ð¸Ñ‚Ð¸ порт USB (%s).Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ драйвера Ñдра «%s» Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтрою фотоапарата.Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ драйвера Ñдра Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтрою фотоапарата.Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ приÑтрій USB (ÐºÐ»Ð°Ñ 0x%x, Ð¿Ñ–Ð´ÐºÐ»Ð°Ñ 0x%x, протокол 0x%x). Перевірте, що приÑтрій з'єднаний з комп'ютером.Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ приÑтрій USB (виробник 0x%x, продукт 0x%x). Перевірте, що приÑтрій з'єднаний з комп'ютером.Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ запитаний приÑтрій на порту USBÐе вдалоÑÑ Ñкинути буфери приÑтрою «%s» (%s).Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ рівень pin %i (%s).Ðе вдалоÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ приÑтрій «%s»Ðе вдалоÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ приÑтрійÐе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ приÑтрій USB (%s).Ðе вдалоÑÑ Ð¾Ð¿Ð¸Ñ‚Ð°Ñ‚Ð¸ драйвер Ñдра Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтрою.Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· «%s» (%m).Ðе вдалоÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ з’єднати драйвер Ñдра Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтрою фотоапарата.Ðе вдалоÑÑ Ð·Ð²Ñ–Ð»ÑŒÐ½Ð¸Ñ‚Ð¸ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%s).Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ початковий Ñтан порту USB (%s).Ðе вдалоÑÑ Ð²Ñтановити позицію з відÑтупом %x на «%s» (%m).Ðе вдалоÑÑ Ð½Ð°Ð´Ñ–Ñлати команду scsi до «%s» (%m).Ðе вдалоÑÑ Ð²Ñтановити альтернативне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð· %d на %d (%s)Ðе вдалоÑÑ Ð²Ñтановити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ %d/%d (%s)Ðе вдалоÑÑ Ð²Ñтановити рівень pin %i у %i (%s).Ðеможливо вÑтановити швидкіÑть %dÐе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ «%s» (%m).Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати у порт (%s)Ðеможливо заблокувати приÑтрій «%s» (Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ dev_lock повернула %d)приÑтрій «%s» неможливо розблокувати (Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ dev_unlock повернула Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %d)ПриÑтрій «%s» неможливо розблокувати, оÑкільки він заблокований процеÑом %d.ПриÑтрій «%s» неможливо розблокувати.ПриÑтрій «%s» заблоковано іншою програмою.ПриÑтрій «%s» заблоковано процеÑом з pid %dПомилка уÑÑƒÐ½ÐµÐ½Ð½Ñ halt-умови на порту USBПомилка ініціалізації портуПомилка Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· портуПомилка вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾Ñті передачі через поÑлідовний портПомилка Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² портуПомилка запиÑу у портÐе вдалоÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ «%s» (%m).Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ «%s» (%m).Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ «%s» (%s).Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ «%s» (%m).Перевищено визначене обмеженнÑЗвичайний портПомилка вводу/виводуСлужба PTPCamera MacOSÐоÑій «%s»Помилок Ð½ÐµÐ¼Ð°Ñ”ÐžÐ¿Ð¸Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ недоÑтупнийÐедоÑтатньо пам'ÑтіПомилка парноÑтіПоÑлідовний порт %iÐемає підтримки поÑлідовного портуЦей приÑтрій не підтримує операцію «%s»порт ще не був ініціалізованийнеправильний ідентифікатор виробника та продукту (0x%x,0x%x).Вийшов Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ñ– при читанні або запиÑÑ– у портБезпоÑереднє введеннÑ-Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð° приÑтрої USBSCSI без обробки Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñтроїв USBÐемає підтримки порту USBÐеочікувана поÑлідовніÑть контролю парноÑті 0xff 0x%02x.Ðевідома помилкаÐевідомий pin %i.Ðевідомий портÐевизначена помилкаÐепідтримувана діÑвиÑок.помилка libhalнизьк.невідома програма, що викориÑтовує libgphoto2libgphoto2-2.5.9/libgphoto2_port/po/boldquot.sed0000644000175000001440000000033112557123756016610 00000000000000s/"\([^"]*\)"/“\1â€/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“â€/""/g s/“/“/g s/â€/â€/g s/‘/‘/g s/’/’/g libgphoto2-2.5.9/libgphoto2_port/po/nl.gmo0000644000175000001440000001731412623156265015403 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an rÈ“\q¸!Fh„  JÁE ˆR|Û6X,­#Ú"þ"!?D„M¢%ð!/80h6™*Ð4û$0!U#wA›CÝS!*u6 (×>'?&gŽ/®3Þ$ 7Xs ޝÌÛó  !! Cds%…3«%ßB@H'‰#± Õ3ö*9K[rŠ )¢@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port-2.5.3 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-01-11 15:17+0100 Last-Translator: Benno Schulenberg Language-Team: Dutch Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Lokalize 1.0 Ongeldige parametersCamera is reeds in gebruik.Kan interface %d niet claimen (%s). Zorg ervoor dat geen ander programma (%s) of kernelmodule (zoals %s) het apparaat gebruikt en dat u lees- en schrijfrechten voor dit apparaat hebt.Kan het USB-apparaat niet claimenKan '%s' niet sluiten (%m).Kan '%s' niet sluiten (%s).Kan USB-poort niet sluiten (%s).Kan het kernelstuurprogramma '%s' van het camera-apparaat niet onthechten.Kan het kernelstuurprogramma van het camera-apparaat niet onthechten.Kan USB-apparaat (klasse 0x%x, subklasse 0x%x, protocol 0x%x) niet vinden. Zorg ervoor dat het apparaat aan de computer aangesloten is.Kan USB-apparaat (leverancier 0x%x, product 0x%x) niet vinden. Zorg ervoor dat het apparaat aan de computer aangesloten is.Kan op de USB-poort het gevraagde apparaat niet vindenKan '%s' niet leegmaken (%s).Kan het niveau van pin %i niet bepalen (%s).Kan apparaat '%s' niet vergrendelenKan het apparaat niet vergrendelenKan USB-apparaat niet openen (%s).Kan het kernelstuurprogramma van het apparaat niet ondervragen.Kan niet uit '%s' lezen (%m).Kan het kernelstuurprogramma van het camera-apparaat niet opnieuw aanhechten.Kan interface %d niet vrijgeven (%s).Kan USB-poort niet resetten (%s).Kan niet springen naar positie %x in '%s' (%m).Kan SCSI-commando niet verzenden naar '%s' (%m).Kan 'alt'-instelling niet wijzigen van %d naar %d (%s)Kan configuratie %d/%d niet instellen (%s)Kan het niveau van pin %i niet op %i instellen (%s).Kan de baudrate niet instellen op %dKan niet naar '%s' schrijven (%m)Kan niet naar poort schrijven (%s).Apparaat '%s' kan niet worden vergrendeld (dev_lock gaf %d terug)Apparaat '%s' kan niet worden ontgrendeld (dev_unlock gaf %d terug)Apparaat '%s' kan niet worden ontgrendeld aangezien het vergrendeld is door PID %d.Apparaat '%s' kan niet worden ontgrendeld.Apparaat '%s' is vergrendeld door een ander programma.Apparaat '%s' is vergrendeld door PID %dFout tijdens het wissen van de 'halt'-toestand op de USB-poortFout bij het initialiseren van de poortFout bij het laden van een bibliotheekFout bij het lezen van de poortFout tijdens het instellen van de poortsnelheidFout tijdens het bijwerken van de poortinstellingenFout bij het schrijven naar de poortKan '%s' niet vergrendelen (%m).Kan '%s' niet openen (%m).Kan '%s' niet openen (%s).Kan '%s' niet ontgrendelen (%m).Vaste limiet is overschredenAlgemene poortInvoer-/uitvoerprobleemMacOS PTP-camera-serviceMedia '%s'Geen foutGeen foutbeschrijving beschikbaarOnvoldoende geheugen beschikbaarPariteitsfout.Seriële poort %iSeriële poort wordt niet ondersteundActie '%s' wordt niet ondersteund door dit apparaatDe poort is nog niet geïnitialiseerdHet opgegeven leveranciers- of product-ID (0x%x,0x%x) is ongeldig.Tijdsoverschrijding tijdens lezen van of schrijven naar de poortUSB-massaopslag, directe invoer/uitvoerUSB-massaopslag, rauwe SCSI-toegangUSB-poort wordt niet ondersteundOnverwachte pariteitsantwoordvolgorde 0xff 0x%02x.Onbekende foutOnbekende pin %i.Onbekende poortOngespecificeerde foutNiet-ondersteunde actiehoog'libhal'-foutlaagonbekende 'libgphoto2' gebruikt programmalibgphoto2-2.5.9/libgphoto2_port/po/fi.gmo0000644000175000001440000001754612623156265015377 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an rÄ“Xp׊6b,™2Æ(ùF"Ei‚¯j285Ö, &9`)~>¨-çO/e%•A»DýBB-…8³1ì2)Q={H¹N0Q.‚$±(Öÿ7'Q(y¢0Á+ò,+KwŽ ±É Øå $3&IpF4×&  3T3kŸ°Å×ñ #32@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port 2.5.4 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2014-04-28 09:07+0200 Last-Translator: Jorma Karvonen Language-Team: Finnish Language: fi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Virheelliset parametritKamera on jo käytössä.Liitännän %d (%s) vaatiminen epäonnistui. Varmista, että mikään toinen ohjelma (%s) tai käyttöjärjestelmämoduuli (sellainen kuin %s) ei käytä laitetta ja sinulla on laitteeseen luku- tai kirjoitusoikeus.USB-laitteen vaatiminen omaan käyttöön epäonnistuiPolun ’%s’ (%m) sulkeminen epäonnistui.Sarjaportin ’%s’ (%s) sulkeminen epäonnistui.USB-portin (%s) sulkeminen epäonnistui.Kameralaitteen käyttöjärjestelmäajuria ’%s’ ei voitu irrottaa.Kameralaitteen käyttöjärjestelmäajurin irrottaminen epäonnistui.USB-laitetta (luokka 0x%x, aliluokka 0x%x, yhteyskäytäntö 0x%x) ei löydetty. Varmista, että laite on liitetty tietokoneeseen.USB-laitetta (toimittaja 0x%x, tuote 0x%x) ei löydetty. Varmista, että laite on liitetty tietokoneeseen.Pyydetyn laitteen löytäminen USB-portista epäonnistuiSarjaportin ’%s’ (%s) puhdistaminen epäonnistui.Nastan %i (%s) tason hakeminen epäonnistui.Laitteen ’%s’ lukitus epäonnistuiLaitteen lukitus epäonnistuiUSB-laitteen (%s) avaaminen epäonnistui.Laitteen käyttöjärjestelmäajurin kyseleminen epäonnistui.Polusta ’%s’ (%m) lukeminen epäonnistui.Kameralaitteen käyttöjärjestelmäajurin liittäminen uudelleen epäonnistui.Liitännän %d (%s) vapauttaminen epäonnistui.USB-portin (%s) nollaus epäonnistui.Siirrososoitteen: %x etsintä polussa ’%s’ (%m) epäonnistui.Scsi-komennon lähettäminen kohteeseen: ’%s’ (%m) epäonnistui.Asetuksen altsetting asetus arvosta %d arvoon %d (%s) epäonnistuiAsetuksen %d/%d (%s) asettaminen epäonnistuiNastan %i tason asettaminen arvoon %i (%s) epäonnistui.Siirtonopeuden asettaminen arvoon %d epäonnistuiPolkuun ’%s’ (%m) kirjoittaminen epäonnistui.Kirjoittaminen porttiin (%s) epäonnistuiLaitteen ’%s’ lukitus epäonnistui (dev_lock palautti %d)Laitteen ’%s’ lukituksen avaus epäonnistui (dev_unlock palautti %d)Laitteen ’%s’ lukituksen avaus epäonnistui, koska sen on lukinnut pid %d.Laitteen ’%s’ lukituksen avaus epäonnistui.Toinen sovellus on lukinnut laitteen ’%s’.Laitteen ’%s’ on lukinnut pid %dVirhe nollatessa halt-tilaa USB-portissaVirhe alustettaessa porttiaVirhe ladattaessa kirjastoaVirhe luettaessa portistaVirhe asetettaessa sarjaportin nopeuttaVirhe päivitettäessä portin asetuksiaVirhe kirjoitettaessa porttiinKohteen ’%s’ lukitseminen epäonnistui (%m).Polun ’%s’ avaaminen epäonnistui (%m).Portin ’%s’ avaaminen epäonnistui (%s).Toiminto unlock ’%s’ epäonnistui (%m).Kiinteä raja ylitettyGeneerinen porttiSiirräntäpulmaMacOS PTPCamera-palveluMedia ’%s’Ei virhettäVirhekuvausta ei ole saatavillaMuisti loppuiPariteettivirhe.Sarjaportti %iSarjaporttia ei tuetaTämä laite ei tue ’%s’-toimintoaPorttia ei ole vielä alustettuTarjottu toimittaja- tai tuotetunniste (0x%x,0x%x) ei ole kelvollinen.Aikakatkaisu portin lukemisessa tai kirjoittamisessaUSB-massatallennuksen suora liitäntäUSB-massatallennuksen raaka-SCSIUSB-porttia ei tuetaOdottamaton pariteettivastaussekvenssi 0xff 0x%02x.Tuntematon virheTuntematon nasta %i.Tuntematon porttiMäärittelemätön virheTukematon toimintolooginen ykkönenlibhal-virhelooginen nollatuntematon libgphoto2-kirjastoa käyttävä ohjelmalibgphoto2-2.5.9/libgphoto2_port/po/da.po0000644000175000001440000004025612623156264015212 00000000000000# Danish translation for libgphoto2_port. # This file is distributed under the same license as the libgphoto2 package. # Copyright (C) 2005, 2007 Free Software Foundation, Inc. # Mogens Jaeger , 2005, 2007, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.5.3\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-02-04 15:15+0100\n" "Last-Translator: Mogens Jaeger \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.5\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Language: Danish\n" "X-Poedit-Country: DENMARK\n" "X-Poedit-SourceCharset: utf-8\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Almindelig port" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Ingen fejl" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Ikke-specificeret fejl" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "I/O problem" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Forkerte parametre" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Ikke understøttet proces" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Fast grænseværdi overskredet" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Tidsudløb ved læsning/skrivning til porten" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Seriel-port ikke understøttet" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "USB-port ikke understøttet" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Ukendt port" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Ikke mere hukommelse" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Fejl ved indlæsning af bibliotek" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Fejl ved initialisering af porten" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Fejl ved læsning fra porten" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Fejl ved skrivning til porten" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Fejl ved opdatering af portindstillinger" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Fejl ved indstilling af den serielle porthastighed" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Fejl ved nulstilling af en stop-tilstand pÃ¥ USB-porten" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Kunne ikke finde den efterspurgte enhed pÃ¥ USB-porten" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Kunne ikke kræve USB enheden" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Kunne ikke lÃ¥se enheden" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "libhal fejl" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Ukendt fejl" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Processen '%s' er ikke understøttet af denne enhed" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Porten er endnu ikke blevet initialiseret" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "lav" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "høj" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Ingen fejlbeskrivelse tilgængelig" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "Medie '%s'" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Kunne ikke lÃ¥se enhed '%s'" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "Enheden '%s' er lÃ¥st af pid %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "Enheden '%s' kunne ikke lÃ¥ses (dev_lock returnerede %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Enheden '%s' kunne ikke lÃ¥ses op." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "Enheden '%s' kunne ikke lÃ¥ses op da den er lÃ¥st af pid %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "Enheden '%s' kunne ikke lÃ¥ses op (dev_unlock returnerede %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Seriel-port %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Ã…bning af '%s' (%s) fejlede." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Kunne ikke lukke '%s' (%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Kunne ikke skrive til port (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "Paritetsfejl." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Uventet paritetssvar-sekvens 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Ukendt pin %i." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Kunne ikke hente niveau af pin %i (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Kunne ikke sætte niveau af pin %i til %i (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Kunne ikke tømme '%s' (%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Kunne ikke sætte baudrate til %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "USB masselagerenhed direkte IO" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Ã…bning af '%s' (%m) fejlede." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Kunne ikke lukke '%s' (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Kunne ikke søge efter offset: %x pÃ¥ '%s' (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Kunne ikke skrive til '%s' (%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Kunne ikke læse fra '%s' (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Kunne ikke Ã¥bne USB enheden (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Kameraet er allerede i brug." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Kunne ikke frigøre kernedriver '%s' fra kameraenheden." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Kunne ikke forespørge kernedriver fra enheden." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Kunne ikke kræve grænseflade %d (%s). Sikr dig at ingen andre programmer " "(%s) eller kernemoduler (som f.eks. %s) bruger enheden, og at du har læse/" "skrive adgang til enheden." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "MacOS PTPCamera-tjeneste" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "andet ukendt program bruger enheden" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Kunne ikke frigøre grænseflade %d (%s)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Kunne ikke nulstille USB-port (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Kunne ikke lukke USB-port (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Kunne ikke sætte konfiguration %d/%d (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Kunne ikke sætte alt-indstillinger %d til /%d (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "" "Det leverede fremstiller- eller produkt-id (0x%x,0x%x) er ikke gyldigt." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Kunne ikke finde USB-enheden (fremstiller 0x%x, produkt 0x%x). Sikr dig at " "enheden er tilsluttet computeren." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Kunne ikke finde USB-enheden (class 0x%x, subclass 0x%x, protokol0x%x). Sikr " "dig at enheden er tilsluttet computeren." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Kunne ikke frigøre kernedriver fra kameraenheden." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "Kunne ikke frigøre kernedriver fra kameraenheden." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "Enheden '%s' er lÃ¥st af en anden app." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "LÃ¥sning af '%s' (%m) fejlede." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "OplÃ¥sning af '%s' (%m) fejlede." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "USB masselagerenhed rÃ¥ SCSI" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Kunne ikke sende SCSI kommando til: '%s' (%m)." #~ msgid "Called for filename '%s'." #~ msgstr "Kaldte filnavnet '%s'." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Kunne ikke indlæse '%s': '%s'." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Kunne ikke finde visse funktioner i '%s': '%s'." #~ msgid "'%s' already loaded" #~ msgstr "'%s' allerede indlæst" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Kunne ikke indlæse portdriverliste: '%s'." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "Indlæste '%s' ('%s') fra '%s'." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "Bruger ltdl til at indlæse io-drivere fra '%s'..." #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "Tæller indgang (%i til rÃ¥dighed)..." #~ msgstr[1] "Tæller indgange (%i til rÃ¥dighed)..." #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "%i regulær indgang til rÃ¥dighed." #~ msgstr[1] "%i regulære indgange til rÃ¥dighed." #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "Ser efter sti '%s' (%i indgang til rÃ¥dighed)..." #~ msgstr[1] "Ser efter sti '%s' (%i indgange til rÃ¥dighed)..." #~ msgid "Starting regex search for '%s'..." #~ msgstr "Starter regex-søgning efter '%s'..." #~ msgid "Trying '%s'..." #~ msgstr "Prøver '%s'..." #~ msgid "regcomp failed" #~ msgstr "regcomp fejlede" #~ msgid "re_match failed (%i)" #~ msgstr "re_match fejlede (%i)" #~ msgid "regexec failed" #~ msgstr "regexec fejlede" #~ msgid "Looking up entry '%s'..." #~ msgstr "Ser efter indgang '%s'..." #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "Henter information om indgang %i (%i til rÃ¥dighed)..." #~ msgstr[1] "Henter information om indgange %i (%i til rÃ¥dighed)..." #~ msgid "Creating new device..." #~ msgstr "Danner ny enhed..." #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Kunne ikke indlæse '%s' ('%s')." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "Kunne ikke finde 'gp_port_library_operations' i '%s' ('%s')" #~ msgid "Opening %s port..." #~ msgstr "Ã…bner %s port..." #~ msgid "Closing port..." #~ msgstr "Lukker port..." #~ msgid "Resetting port..." #~ msgstr "Nulstiller port..." #~ msgid "Freeing port..." #~ msgstr "Frigør port..." #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Skriver %i=0x%x byte til port..." #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "Kunne kun skrive %i ud af %i byte" #~ msgstr[1] "Kunne kun skrive %i ud af %i byte" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "Læser %i=0x%x byte fra port..." #~ msgstr[1] "Læser %i=0x%x byte fra port..." #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "Kunne kun læse %i ud af %i byte" #~ msgstr[1] "Kunne kun læse %i ud af %i byte" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "Læser %i=0x%x byte fra afbrudt endepunkt..." #~ msgstr[1] "Læser %i=0x%x byte fra afbrudte endepunkter..." #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Kunne kun læse %i ud af %i byte" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "Læser %i=0x%x byte fra afbrudt endepunkt (hurtig)..." #~ msgstr[1] "Læser %i=0x%x byte fra afbrudte endepunkter (hurtig)..." #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Sætter tidsudløb til %i millisekund(er)..." #~ msgid "Getting timeout..." #~ msgstr "Henter tidsudløb..." #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Nuværende tidsudløb: %i millisekunder" #~ msgid "Setting settings..." #~ msgstr "Sætter indstillinger..." #~ msgid "Getting level of pin %i..." #~ msgstr "Henter niveau for pin %i..." #~ msgid "Level of pin %i: %i" #~ msgstr "Niveau for pin %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Sætter pin %i (%s: '%s') til '%s'..." #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "Sender skift (%i millisekunder)..." #~ msgid "Flushing port..." #~ msgstr "Tømmer port..." #~ msgid "Clear halt..." #~ msgstr "Ryd stop..." #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Skriver besked (forespørgsel=0x%x værdi=0x%x indeks=0x%x størrelse=%i=0x" #~ "%x)..." #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Læser besked (forespørgsel=0x%x værdi=0x%x indeks=0x%x størrelse=%i=0x" #~ "%x)..." #~ msgid "Device has driver '%s' attached." #~ msgstr "Enheden har driver '%s' tilknyttet." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Enheden har driver '%s' tilknyttet, frigør det nu." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "USB-enheden (fremstiller 0x%x, produkt 0x%x) er en masselagerenhed, og " #~ "virker mÃ¥ske ikke med gphoto2. Reference: %s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "Enheden har en kernedriver tilknyttet (%d), frigør den nu." libgphoto2-2.5.9/libgphoto2_port/po/it.po0000644000175000001440000002630312623156264015237 00000000000000# Italian messages for libgphoto2_port. # Copyright (C) 2000, 2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # Marco Colombo , 2005, 2006, 2007, 2009, 2010, 2015 # Daniele Medri , 2000. # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.5.8\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2015-08-05 13:07+0100\n" "Last-Translator: Marco Colombo \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Porta generica" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Nessun errore" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Errore non specificato" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "Problema di I/O" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Parametri non corretti" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Operazione non gestita" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Limite fisso superato" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Timeout durante la lettura o la scrittura sulla porta" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Porta seriale non gestita" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "Porta USB non gestita" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Porta sconosciuta" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Memoria esaurita" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Errore durante il caricamento di una libreria" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Errore durante l'inizializzazione della porta" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Errore durante la lettura dalla porta" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Errore durante la scrittura sulla porta" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Errore durante l'aggiornamento delle impostazioni della porta" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Errore durante l'impostazione della velocità della porta seriale" # FIXME #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Errore nella rimozione di una condizione di halt sulla porta USB" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Impossibile trovare il dispositivo richiesto sulla porta USB" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Impossibile reclamare il dispositivo USB" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Impossibile bloccare il dispositivo" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "errore in libhal" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Errore sconosciuto" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "L'operazione \"%s\" non è gestita da questo dispositivo" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "La porta non è ancora stata inizializzata" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "basso" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "alto" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Nessuna descrizione dell'errore disponibile" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "Media \"%s\"" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Impossibile bloccare il device \"%s\"" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "Il device \"%s\" è bloccato dal pid %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "" "Non è stato possibile bloccare il device \"%s\" (dev_lock ha restituito %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Non è stato possibile sbloccare il device \"%s\"." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "Non è stato possibile sbloccare il device \"%s\" perché bloccato dal pid %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "" "Non è stato possibile sbloccare il device \"%s\" (dev_unlock ha restituito " "%d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Porta seriale %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Impossibile aprire \"%s\" (%s)." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Impossibile chiudere \"%s\" (%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Impossibile scrivere sulla porta (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "Errore di parità." # FIXME #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Sequenza di risposta di parità 0xff 0x%02x inattesa." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Pin %i sconosciuto." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Impossibile ottenere il livello del pin %i (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Impossibile impostare il livello del pin %i a %i (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Impossibile svuotare \"%s\" (%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Impossibile impostare la velocità di trasmissione a %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "Archiviazione di massa USB con IO direct" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Impossibile aprire \"%s\" (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Impossibile chiudere \"%s\" (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Impossibile fare il seek all'offset: %x su \"%s\" (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Impossibile scrivere sul \"%s\" (%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Impossibile leggere da \"%s\" (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Impossibile aprire il dispositivo USB (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "La fotocamera è già in uso." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Impossibile scollegare il driver \"%s\" del kernel per il dispositivo." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Impossibile interrogare il driver del kernel per il dispositivo." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Impossibile reclamare l'interfaccia %d (%s). Assicurarsi che nessun altro " "programma (%s) o un modulo del kernel (come %s) stia usando il device e che " "si abbia accesso in lettura e scrittura al device." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "servizio MacOS PTPCamera" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "programma sconosciuto che usa libgphoto2" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Impossibile rilasciare l'interfaccia %d (%s)." # FIXME #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Impossibile reimpostare la porta USB (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Impossibile chiudere la porta USB (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Impossibile impostare la configurazione %d/%d (%s)" # FIXME #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Impossibile impostare altsetting da %d a %d (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "L'id del vendor o del prodotto (0x%x,0x%x) fornito non è valido." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Impossibile trovare il dispositivo USB (vendor 0x%x, prodotto 0x%x). " "Assicurarsi che il dispositivo sia connesso al computer." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Impossibile trovare il dispositivo USB (classe 0x%x, sottoclasse 0x%x, " "protocollo 0x%x). Assicurarsi che il dispositivo sia connesso al computer." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Impossibile scollegare il driver del kernel per il dispositivo." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "Impossibile riattaccare il driver del kernel per il dispositivo." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "Il dispositivo \"%s\" è bloccato da un'altra applicazione." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "Impossibile fare il lock di \"%s\" (%m)." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Impossibile fare l'unlock di \"%s\" (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "Archiviazione di massa USB con raw SCSI" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Impossibile mandare il comando scsi a: \"%s\" (%m)." libgphoto2-2.5.9/libgphoto2_port/po/ru.po0000644000175000001440000006076712623156265015266 00000000000000# translation of gphoto2-2.4.9.ru.po to Russian # Russian translations for libgphoto2 # This file is distributed under the same license as the libgphoto2 package. # # Valek Filippov , 2005. # Ð’ÑчеÑлав Диконов (Vyacheslav Dikonov) , 2005. # Yuri Kozlov , 2010, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.5.3\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-01-11 16:00+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Обычный порт" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Ошибок нет" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "ÐÐµÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "Проблема ввода/вывода" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Ðеверные аргументы" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Ðеподдерживаемое дейÑтвие" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Превышен фикÑированный предел" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "ИÑтекло Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð° при чтении или запиÑи данных в порт" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Ðет поддержки поÑледовательного порта" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "Ðет поддержки порта USB" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "ÐеизвеÑтный порт" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "ÐедоÑтаточно памÑти" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Ошибка загрузки библиотеки функций" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Ошибка инициализации порта" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð· порта" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Ошибка запиÑи в порт" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Ошибка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð°Ñтроек порта" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Ошибка уÑтановки ÑкороÑти передачи через поÑледовательный порт" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Ошибка уÑÑ‚Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ halt-уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ð° порту USB" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Ðе найдено запрошенное уÑтройÑтво на порту USB" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Ðевозможно получить контроль над уÑтройÑтвом USB" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Ðевозможно заблокировать уÑтройÑтво" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "ошибка libhal" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "ДейÑтвие «%s» не поддерживаетÑÑ Ñтим уÑтройÑтвом" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Порт ещё не был инициализирован" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "низк." #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "выÑок." #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "ОпиÑание ошибки недоÑтупно" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "ÐоÑитель «%s»" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Ðевозможно заблокировать уÑтройÑтво «%s»" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "УÑтройÑтво «%s» заблокировано процеÑÑом Ñ pid %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "" "УÑтройÑтво «%s» невозможно заблокировать (Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ dev_lock вернула значение " "%d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "УÑтройÑтво «%s» невозможно разблокировать." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "УÑтройÑтво «%s» невозможно разблокировать, так как оно заблокировано " "процеÑÑом Ñ pid %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "" "УÑтройÑтво «%s» невозможно разблокировать (Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ dev_unlock вернула " "значение %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "ПоÑледовательный порт %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Ðе удалоÑÑŒ открыть «%s» (%s)." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Ðе удалоÑÑŒ закрыть «%s» (%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Ðе удалоÑÑŒ запиÑать в порт (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "Ошибка чётноÑти." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾ÑледовательноÑть ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ñ‡Ñ‘Ñ‚Ð½Ð¾Ñти — 0xff 0x%02x" #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "ÐеизвеÑтный pin %i." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Ðевозможно получить уровень pin %i (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Ðевозможно уÑтановить уровень pin %i в %i (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Ðевозможно ÑброÑить буферы уÑтройÑтва «%s» (%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Ðевозможно уÑтановить ÑкороÑть %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "ПрÑмой ввод-вывод USB Mass Storage" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Ðе удалоÑÑŒ открыть «%s» (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Ðе удалоÑÑŒ закрыть «%s» (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Ðе удалоÑÑŒ перейти к Ñмещению: %x на «%s» (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Ðе удалоÑÑŒ запиÑать в «%s» (%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Ðе удалоÑÑŒ прочитать «%s» (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Ðевозможно открыть USB-уÑтройÑтво (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Фотоаппарат уже занÑÑ‚." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Ðевозможно отключить драйвер Ñдра «%s» Ð´Ð»Ñ ÑƒÑтройÑтва фотоаппарата." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Ðевозможно опроÑить драйвер Ñдра Ð´Ð»Ñ ÑƒÑтройÑтва." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Ðевозможно захватить Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%s). УбедитеÑÑŒ, что уÑтройÑтво не занÑто " "другой программой (%s) или модулем Ñдра (таким как %s), и что у Ð²Ð°Ñ ÐµÑть " "право на чтение/запиÑÑŒ уÑтройÑтва." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "Служба MacOS PTPCamera" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‰Ð°Ñ libgphoto2" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Ðевозможно оÑвободить Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%s)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Ðевозможно вернуть в иÑходное ÑоÑтоÑние порт USB (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Ðевозможно закрыть порт USB (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Ðевозможно изменить конфигурацию %d/%d (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Ðевозможно уÑтановить альтернативную конфигурацию из %d в %d (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "Ðеверный идентификатор Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ продукта (0x%x,0x%x)." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Ðе найдено уÑтройÑтво USB (производитель 0x%x, продукт 0x%x). УбедитеÑÑŒ, что " "уÑтройÑтво подключено к компьютеру." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Ðе найдено уÑтройÑтво USB (клаÑÑ 0x%x, подклаÑÑ 0x%x, протокол 0x%x). " "УбедитеÑÑŒ, что уÑтройÑтво подключено к компьютеру." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Ðевозможно отключить драйвер Ñдра уÑтройÑтва фотоаппарата." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "Ðевозможно отключить драйвер Ñдра уÑтройÑтва фотоаппарата." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "УÑтройÑтво «%s» заблокировано другим приложением." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "Ðе удалоÑÑŒ заблокировать «%s» (%m)." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Ðе удалоÑÑŒ разблокировать «%s» (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "USB Mass Storage raw SCSI" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Ðе удалоÑÑŒ поÑлать команду scsi: «%s» (%m)." #~ msgid "Called for filename '%s'." #~ msgstr "Вызвано Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s»." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Ðевозможно загрузить «%s»: «%s»." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Ðе найдены некоторые функции в «%s»: «%s»." #~ msgid "'%s' already loaded" #~ msgstr "«%s» уже загружен" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Ðевозможно загрузить ÑпиÑок драйверов портов: «%s»." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "Загружено «%s» («%s») из «%s»." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "ИÑпользуетÑÑ ltdl Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ драйверов ввода/вывода из «%s»…" #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "ПодÑчитываютÑÑ Ð·Ð°Ð¿Ð¸Ñи (%i доÑтупна)…" #~ msgstr[1] "ПодÑчитываютÑÑ Ð·Ð°Ð¿Ð¸Ñи (%i доÑтупны)…" #~ msgstr[2] "ПодÑчитываютÑÑ Ð·Ð°Ð¿Ð¸Ñи (%i доÑтупно)…" #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "доÑтупна %i Ð¾Ð±Ñ‹Ñ‡Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ." #~ msgstr[1] "доÑтупно %i обычных запиÑи." #~ msgstr[2] "доÑтупно %i обычных запиÑей." #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "ПоиÑк пути «%s» (доÑтупна %i запиÑÑŒ)…" #~ msgstr[1] "ПоиÑк пути «%s» (доÑтупно %i запиÑи)…" #~ msgstr[2] "ПоиÑк пути «%s» (доÑтупно %i запиÑей)…" #~ msgid "Starting regex search for '%s'..." #~ msgstr "Ðачало поиÑка «%s» c иÑпользованием регулÑрного выражениÑ…" #~ msgid "Trying '%s'..." #~ msgstr "ПроверÑетÑÑ Â«%s»…" #~ msgid "regcomp failed" #~ msgstr "Ñбой regcomp" #~ msgid "re_match failed (%i)" #~ msgstr "Ñбой re_match (%i)" #~ msgid "regexec failed" #~ msgstr "Ñбой regexec" #~ msgid "Looking up entry '%s'..." #~ msgstr "ПоиÑк запиÑи «%s»…" #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "Получение информации о запиÑи %i (%i доÑтупна)…" #~ msgstr[1] "Получение информации о запиÑи %i (%i доÑтупны)…" #~ msgstr[2] "Получение информации о запиÑи %i (%i доÑтупно)…" #~ msgid "Creating new device..." #~ msgstr "СоздаётÑÑ Ð½Ð¾Ð²Ð¾Ðµ уÑтройÑтво…" #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Ðевозможно загрузить «%s» («%s»)." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "Ðе найден «gp_port_library_operations» в «%s» («%s»)" #~ msgid "Opening %s port..." #~ msgstr "Открытие порта %s…" #~ msgid "Closing port..." #~ msgstr "Закрытие порта…" #~ msgid "Resetting port..." #~ msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ð¾Ñ€Ñ‚Ð°â€¦" #~ msgid "Freeing port..." #~ msgstr "ОÑвобождение порта…" #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "ЗапиÑываетÑÑ %i=0x%x байт в порт…" #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "Возможно запиÑать только %i байт из %i" #~ msgstr[1] "Возможно запиÑать только %i байта из %i" #~ msgstr[2] "Возможно запиÑать только %i байтов из %i" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "СчитываетÑÑ %i=0x%x байт из порта…" #~ msgstr[1] "СчитываетÑÑ %i=0x%x байта из порта…" #~ msgstr[2] "СчитываетÑÑ %i=0x%x байтов из порта…" #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "Можно прочитать только %i из %i байта" #~ msgstr[1] "Можно прочитать только %i из %i байтов" #~ msgstr[2] "Можно прочитать только %i из %i байтов" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "СчитываетÑÑ %i=0x%x байт из конечной точки прерываниÑ…" #~ msgstr[1] "СчитываетÑÑ %i=0x%x байта из конечной точки прерываниÑ…" #~ msgstr[2] "СчитываетÑÑ %i=0x%x байтов из конечной точки прерываниÑ…" #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Можно прочитать только %i из %i байт" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "" #~ "СчитываетÑÑ %i=0x%x байт из конечной точки Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ (уÑкоренно)…" #~ msgstr[1] "" #~ "СчитываетÑÑ %i=0x%x байта из конечной точки Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ (уÑкоренно)…" #~ msgstr[2] "" #~ "СчитываетÑÑ %i=0x%x байтов из конечной точки Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°Ð½Ð¸Ñ (уÑкоренно)…" #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "УÑтановка времени задержки равного %i·миллиÑекунд…" #~ msgid "Getting timeout..." #~ msgstr "Определение времени задержки…" #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Текущее Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð´ÐµÑ€Ð¶ÐºÐ¸: %i·(в миллиÑекундах)" #~ msgid "Setting settings..." #~ msgstr "УÑтановка конфигурации…" #~ msgid "Getting level of pin %i..." #~ msgstr "Получение ÑƒÑ€Ð¾Ð²Ð½Ñ pin %i…" #~ msgid "Level of pin %i: %i" #~ msgstr "Уровень pin %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "УÑтановка pin %i (%s: «%s») в «%s»…" #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "ПоÑылка Ñигнала break (%i миллиÑекунд)…" #~ msgid "Flushing port..." #~ msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð±ÑƒÑ„ÐµÑ€Ð¾Ð² порта…" #~ msgid "Clear halt..." #~ msgstr "ОчиÑтка признака halt…" #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "ЗапиÑÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ (запроÑ=0x%x значение=0x%x индекÑ=0x%x размер=%i=0x%x)…" #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Чтение ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ (запроÑ=0x%x значение=0x%x индекÑ=0x%x размер=%i=0x%x)…" #~ msgid "Device has driver '%s' attached." #~ msgstr "Подключено уÑтройÑтво Ñ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð¾Ð¼ «%s»." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Подключён драйвер «%s». ПроизводитÑÑ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ драйвера." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "USB уÑтройÑтво (производитель 0x%x, продукт 0x%x) работает как уÑтройÑтво " #~ "Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ….Программа gphoto2 не может его иÑпользовать. Смотрите: %s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "Подключён драйвер Ñдра «%d». ПроизводитÑÑ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ драйвера." #~ msgid "Could not open USB device (%m)." #~ msgstr "Ðевозможно открыть USB-уÑтройÑтво (%m)." #~ msgid "" #~ "Could not claim interface %d (%m). Make sure no other program or kernel " #~ "module (such as %s) is using the device and you have read/write access to " #~ "the device." #~ msgstr "" #~ "Ðевозможно захватить Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%m). УбедитеÑÑŒ, что уÑтройÑтво не " #~ "занÑто другой программой или модулем Ñдра (таким как %s), и что у Ð²Ð°Ñ " #~ "еÑть доÑтуп к уÑтройÑтву по чтению и запиÑи." #~ msgid "Could not release interface %d (%m)." #~ msgstr "Ðевозможно оÑвободить Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ %d (%m)." #~ msgid "Could not reset USB port (%m)." #~ msgstr "Ðевозможно вернуть в иÑходное ÑоÑтоÑние порт USB (%m)." #~ msgid "Could not set config %d/%d (%m)" #~ msgstr "Ðевозможно изменить конфигурацию %d/%d (%m)" #~ msgid "Could not set altsetting from %d to %d (%m)" #~ msgstr "Ðевозможно уÑтановить альтернативную конфигурацию из %d в %d (%m)" #~ msgid "(unknown)" #~ msgstr "(неизвеÑтно)" #~ msgid "msg_read" #~ msgstr "прочеÑть_Ñообщение" #, fuzzy #~ msgid "Loading io-drivers from '%s' without ltdl..." #~ msgstr "Загрузка драйверов ввода/вывода из '%s'..." #~ msgid "Could not load any io-library because '%s' could not be opened (%m)" #~ msgstr "" #~ "Ðевозможно загрузить библиотеку функций ввода/вывода, потому что " #~ "невозможно открыть '%s'(%m) " #~ msgid "'%s' is not a library (%s)" #~ msgstr "'%s' не ÑвлÑетÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¾Ð¹ (%s)" #~ msgid "Could not find some functions in '%s' (%s)" #~ msgstr "Ðе найдены некоторые функции в '%s' (%s)" #~ msgid "Could not load list (%s)" #~ msgstr "Ðевозможно загрузить ÑпиÑок (%s)" #~ msgid "Loaded '%s' (%s) from '%s'" #~ msgstr "Загружено '%s' (%s) из '%s'" #~ msgid "Could not load '%s' ('%s')" #~ msgstr "Ðевозможно загрузить '%s' (%s)." #~ msgid "Camera is supported by USB Storage driver." #~ msgstr "" #~ "Фотоаппарат поддерживаетÑÑ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð¾Ð¼ уÑтройÑтв Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… 'USB " #~ "Storage'" #~ msgid "open" #~ msgstr "открыть" #~ msgid "close" #~ msgstr "закрыть" #~ msgid "write" #~ msgstr "запиÑать" #~ msgid "read" #~ msgstr "прочитать" #~ msgid "check_int" #~ msgstr "проверить_прерывание" #~ msgid "update" #~ msgstr "обновить" #~ msgid "get_pin" #~ msgstr "получить_pin" #~ msgid "set_pin" #~ msgstr "уÑтановить_pin" #~ msgid "send_break" #~ msgstr "поÑлать_Ñигнал_break" #~ msgid "flush" #~ msgstr "ÑброÑить_буферы" #~ msgid "find_device" #~ msgstr "найти_уÑтройÑтво" #~ msgid "find_device_by_class" #~ msgstr "найти_уÑтройÑтво_в_клаÑÑе" #~ msgid "msg_write" #~ msgstr "запиÑать_Ñообщение" libgphoto2-2.5.9/libgphoto2_port/po/fr.po0000644000175000001440000004543512623156264015241 00000000000000# gPhoto French translation # Copyright © 2001 Jérôme Fenal # Copyright © 2011-2014 Free Software Foundation, Inc. # This file is distributed under the same license as the libgphoto2 package. # # Jérôme Fenal , 2001. # Dimitri Duc , 2011. # David Prévot , 2012-2014. msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.5.3\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-01-11 09:27-0400\n" "Last-Translator: David Prévot \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Lokalize 1.5\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Port générique" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Pas d'erreur" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Erreur indéfinie" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "Problème d'E/S" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Mauvais paramètres" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Opération non prise en charge" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Limite déterminée dépassée" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Délai d'attente dépassé en lecture ou écriture sur le port" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Port série non pris en charge" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "Port USB non pris en charge" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Port inconnu" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Mémoire épuisée" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Erreur au chargement de la bibliothèque" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Erreur d'initialisation du port" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Erreur de lecture du port" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Erreur d'écriture sur le port" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Erreur de modification de la configuration du port" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Erreur de configuration de la vitesse du port série" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Erreur de réinitialisation d'une condition d'arrêt sur le port USB" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Impossible de trouver l'appareil demandé sur le port USB" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Impossible de communiquer avec le périphérique USB" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Impossible de verrouiller le périphérique" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "Erreur de libhal" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Erreur inconnue" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "L'opération « %s » n'est pas possible avec ce périphérique" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Le port n'a pas encore été initialisé" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "bas" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "haut" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Description d'erreur non disponible" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "Media « %s »" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Impossible de verrouiller le périphérique « %s »" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "Le périphérique « %s » est verrouillé par le processus %d." #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "" "Le périphérique « %s » n'a pas pu être verrouillé (dev_lock a renvoyé %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Le périphérique « %s » n'a pas pu être déverrouillé." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "Le périphérique « %s » n'a pas pu être déverrouillé car il est verrouillé " "par le processus %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "" "Le périphérique « %s » n'a pas pu être déverrouillé (dev_unlock a renvoyé %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Port série %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Échec d'ouverture de « %s » (%s)." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Impossible de fermer « %s » (%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Impossible d'écrire sur le port (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "Erreur de parité." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Séquence de réponse de parité 0xff 0x%02x inattendue." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Broche %i inconnue." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Impossible d'obtenir le niveau de la broche %i (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Impossible de configurer le niveau de la broche %i à %i (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Impossible de vider « %s » (%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Impossible de configurer le débit à %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "E/S directes de stockage de masse USB" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Impossible d'ouvrir « %s » (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Impossible de fermer « %s » (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Impossible de rechercher une position : %x dans « %s » (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Impossible d'écrire dans « %s » (%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Impossible de lire dans « %s » (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Impossible d'ouvrir le périphérique USB (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "L'appareil photographique est déjà utilisé." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "" "Impossible de détacher le pilote « %s » du noyau pour l'appareil " "photographique." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Impossible de recevoir le pilote pour ce périphérique." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Impossible d'utiliser l'interface %d (%s). Assurez-vous qu'aucun autre " "programme (%s) ou module du noyau (comme %s) n'utilisent le périphérique et " "que vous y avez accès en lecture et écriture." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "service PTPCamera de MacOS" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "programme utilisant libgphoto2 inconnu" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Impossible de libérer l'interface %d (%s)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Impossible de réinitialiser le port USB (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Impossible de fermer le port USB (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Impossible de configurer %d/%d (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "" "Impossible de définir un paramètre alternatif (altsetting) de %d à %d (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "L'identifiant de fabricant ou produit (0x%x,0x%x) est incorrect." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Impossible de trouver le périphérique USB (fabricant 0x%x, produit 0x%x). " "Assurez-vous qu'il est bien connecté à l'ordinateur." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Impossible de trouver le périphérique USB (fabricant 0x%x, sous-classe 0x%x, " "produit 0x%x). Assurez-vous qu'il est bien connecté à l'ordinateur." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Impossible de détacher le pilote de noyau de l'appareil." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "Impossible de rattacher le pilote de noyau de l'appareil." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "Le périphérique « %s » est verrouillé par une autre application." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "Impossible de verrouiller « %s » (%m)." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Impossible de déverrouiller « %s » (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "Stockage de masse USB contenant des données brutes SCSI " #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Impossible d'envoyer une commande scsi à : « %s » (%m)." #~ msgid "Called for filename '%s'." #~ msgstr "Appel du fichier « %s »." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Impossible de charger « %s » : « %s »." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Impossible de trouver certaines fonctions dans « %s » : « %s »." #~ msgid "'%s' already loaded" #~ msgstr "« %s » déjà chargé" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Impossible de charger la liste des pilotes de port : « %s »." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "Charger « %s » (« %s ») à partir de « %s »." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "" #~ "Utilisation de ltdl pour charger les pilotes d'entrées et sorties à " #~ "partir de « %s »…" #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "Compte des entrées (%i disponible)…" #~ msgstr[1] "Compte des entrées (%i disponibles)…" #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "%i entrée normale disponible." #~ msgstr[1] "%i entrées normales disponibles." #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "Recherche du chemin « %s » (%i entrée disponible)…" #~ msgstr[1] "Recherche du chemin « %s » (%i entrées disponibles)…" #~ msgid "Starting regex search for '%s'..." #~ msgstr "Recherche d'après l'expression rationnelle pour « %s »…" #~ msgid "Trying '%s'..." #~ msgstr "Tentative dans « %s »…" #~ msgid "regcomp failed" #~ msgstr "Erreur de regcomp" #~ msgid "re_match failed (%i)" #~ msgstr "Erreur de re_match (%i)" #~ msgid "regexec failed" #~ msgstr "Erreur de regexec" #~ msgid "Looking up entry '%s'..." #~ msgstr "Recherche de l'entrée « %s »…" #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "Obtention de renseignements sur l'entrée %i (%i disponible)…" #~ msgstr[1] "Obtention de renseignements sur l'entrée %i (%i disponibles)…" #~ msgid "Creating new device..." #~ msgstr "Création de nouveau périphérique…" #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Impossible de charger « %s » (« %s »)." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "" #~ "Impossible de trouver « gp_port_library_operations » dans « %s » (« %s »)" #~ msgid "Opening %s port..." #~ msgstr "Ouverture du port %s…" #~ msgid "Closing port..." #~ msgstr "Fermeture du port…" #~ msgid "Resetting port..." #~ msgstr "Réinitialisation du port…" #~ msgid "Freeing port..." #~ msgstr "Libération du port…" #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Écriture de %i=0x%x octet(s) sur le port…" #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "Écriture de seulement %i sur %i octet" #~ msgstr[1] "Écriture de seulement %i sur %i octets" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "Lecture de %i=0x%x octet du port…" #~ msgstr[1] "Lecture de %i=0x%x octets du port…" #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "Lecture de seulement %i sur %i octet" #~ msgstr[1] "Lecture de seulement %i sur %i octets" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "" #~ "Lecture de %i=0x%x octet depuis le signal d'interruption de la " #~ "terminaison…" #~ msgstr[1] "" #~ "Lecture de %i=0x%x octets depuis le signal d'interruption de la " #~ "terminaison…" #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Lecture de seulement %i sur %i octet(s)" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "" #~ "Lecture de %i=0x%x octet depuis le signal d'interruption de la " #~ "terminaison (rapide)…" #~ msgstr[1] "" #~ "Lecture de %i=0x%x octets depuis le signal d'interruption de la " #~ "terminaison (rapide)…" #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Réglage du délai à %i milliseconde(s)…" #~ msgid "Getting timeout..." #~ msgstr "Obtention du délai…" #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Délai actuel : %i millisecondes" #~ msgid "Setting settings..." #~ msgstr "Réglage des paramètres…" #~ msgid "Getting level of pin %i..." #~ msgstr "Obtention du niveau de la broche %i…" #~ msgid "Level of pin %i: %i" #~ msgstr "Niveau de la broche %i : %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Réglage de broche %i (%s : « %s ») à « %s »…" #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "Envoi du signal d'interruption (%i millisecondes)…" #~ msgid "Flushing port..." #~ msgstr "Vidage des données du port…" #~ msgid "Clear halt..." #~ msgstr "Réinitialiser l'arrêt…" #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Écriture du message (requête=0x%x valeur=0x%x indice=0x%x taille=%i=0x%x)…" #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Lecture du message (requête=0x%x valeur=0x%x indice=0x%x taille=%i=0x%x)…" #~ msgid "Device has driver '%s' attached." #~ msgstr "Le périphérique a le pilote « %s » attaché." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Le périphérique a le pilote « %s » attaché, détachement immédiat." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "Le périphérique USB (fabricant 0x%x, produit 0x%x) est un périphérique de " #~ "stockage de masse, et pourrait ne pas fonctionner avec gPhoto2. " #~ "Référence : %s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "" #~ "Le périphérique a un pilote de noyau attaché (%d), détachement immédiat." #~ msgid "msg_read" #~ msgstr "Lecture du message" #~ msgid "(unknown)" #~ msgstr "(inconnu)" #~ msgid "Could not load any io-library because '%s' could not be opened (%m)" #~ msgstr "" #~ "Ne peut charger aucune bibliothèque d'E/S car '%s' ne peut être ouvert " #~ "(%m)" #, fuzzy #~ msgid "Could not find some functions in '%s' (%s)" #~ msgstr "Impossible de fermer '%s' (%m)." #, fuzzy #~ msgid "Could not load list (%s)" #~ msgstr "Impossible de fermer '%s' (%m)." #, fuzzy #~ msgid "Could not load '%s' ('%s')" #~ msgstr "Impossible de fermer '%s' (%m)." #~ msgid "open" #~ msgstr "ouvrir" #~ msgid "close" #~ msgstr "fermer" #~ msgid "write" #~ msgstr "écrire" #~ msgid "read" #~ msgstr "lire" #~ msgid "check_int" #~ msgstr "check_int" #~ msgid "update" #~ msgstr "mettre à jour" #~ msgid "get_pin" #~ msgstr "get_pin" #~ msgid "set_pin" #~ msgstr "set_pin" #~ msgid "send_break" #~ msgstr "send_break" #~ msgid "flush" #~ msgstr "flush" #~ msgid "find_device" #~ msgstr "find_device" #~ msgid "find_device_by_class" #~ msgstr "find_device_by_class" #~ msgid "msg_write" #~ msgstr "msg_write" libgphoto2-2.5.9/libgphoto2_port/po/remove-potcdate.sin0000644000175000001440000000066012557123757020101 00000000000000# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } libgphoto2-2.5.9/libgphoto2_port/po/pt_BR.po0000644000175000001440000004105312623156265015631 00000000000000# Brazilian Portuguese translation of libgphoto2. # This file is distributed under the same license as the libgphoto2 package. # Copyright (C) 2002-2010 Free Software Foundation, Inc. # Evandro Gardenali , 2002. # Fabrício Godoy , 2010. # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.4.9\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2010-05-09 20:44-0300\n" "Last-Translator: Fabrício Godoy \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Porta genérica" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Sem erro" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "Erro não especificado" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "Problema de E/S" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Parâmetros incorretos" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Operação sem suporte" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "O limite definido foi excedido" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "Tempo esgotado ao ler ou gravar da/para a porta" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Porta serial sem suporte" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "Porta USB sem suporte" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Porta desconhecida" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Memória cheia" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Erro ao carregar uma biblioteca" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Erro ao inicializar a porta" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Erro ao ler da porta" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Erro ao escrever na porta" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Erro ao atualizar as configurações da porta" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Erro ao ajustar a velocidade da porta serial" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Erro ao apagar uma condição de desligamento na porta USB" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Não foi possível localizar o dispositivo especificado na porta USB" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Não foi possível contactar o dispositivo USB" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Não foi possível travar o dispositivo" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "erro no libhal" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Erro desconhecido" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Não há suporte a operação \"%s\" por esse dispositivo" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "A porta ainda não foi inicializada" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "baixo" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "alto" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Descrição do erro não disponível" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "Mídia \"%s\"" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Não foi possível travar o dispositivo \"%s\"" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "O dispositivo \"%s\" está travado pelo PID %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "O dispositivo \"%s\" não pôde ser travado (dev_lock retornou %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "O dispositivo \"%s\" não pôde ser destravado." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "" "O dispositivo \"%s\" não pôde ser destravado pois está travado pelo PID %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "O dispositivo \"%s\" não pôde ser destravado (dev_unlock retornou %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Porta serial %i" #: serial/unix.c:430 #, fuzzy, c-format msgid "Failed to open '%s' (%s)." msgstr "Falhou ao abrir \"%s\" (%m)." #: serial/unix.c:450 #, fuzzy, c-format msgid "Could not close '%s' (%s)." msgstr "Não foi possível fechar \"%s\" (%m)." #: serial/unix.c:506 #, fuzzy, c-format msgid "Could not write to port (%s)" msgstr "Não foi possível escrever para a porta (%m)" #: serial/unix.c:583 msgid "Parity error." msgstr "Erro de paridade." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "Sequência de resposta de paridade inesperada 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Pino desconhecido %i." #: serial/unix.c:652 #, fuzzy, c-format msgid "Could not get level of pin %i (%s)." msgstr "Não foi possível obter o nível do pino %i (%m)." #: serial/unix.c:688 #, fuzzy, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Não foi possível ajustar o nível do pino de %i para %i (%m)." #: serial/unix.c:715 #, fuzzy, c-format msgid "Could not flush '%s' (%s)." msgstr "Não foi possível descarregar \"%s\" (%m)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Não foi possível ajustar a taxa de baud para %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "E/S direta para armazenamento em massa USB" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Falhou ao abrir \"%s\" (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Não foi possível fechar \"%s\" (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Não foi possível buscar até a posição %x em \"%s\" (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Não foi possível escrever para \"%s\" (%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Não foi possível ler de \"%s\" (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, fuzzy, c-format msgid "Could not open USB device (%s)." msgstr "Não foi possível abrir o dispositivo USB (%m)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "A câmera já está em uso." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "" "Não foi possível desanexar o driver de kernel \"%s\" do dispositivo de " "câmera." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Não foi possível examinar o driver de kernel do dispositivo." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, fuzzy, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Não foi possível chamar a interface %d (%m). Tenha certeza de que nenhum " "outro programa ou módulo do kernel (como %s) está usando o dispositivo e que " "você tem acesso de leitura e escrita para o dispositivo." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, fuzzy, c-format msgid "Could not release interface %d (%s)." msgstr "Não foi possível liberar a interface %d (%m)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, fuzzy, c-format msgid "Could not reset USB port (%s)." msgstr "Não foi possível reiniciar a porta USB (%m)." #: usb/libusb.c:372 #, fuzzy, c-format msgid "Could not close USB port (%s)." msgstr "Não foi possível fechar a porta USB (%m)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, fuzzy, c-format msgid "Could not set config %d/%d (%s)" msgstr "Não foi possível definir a configuração %d/%d (%m)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, fuzzy, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Não foi possível definir a configuração alternativa de %d para %d (%m)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "O fabricante ou o ID do produto (0x%x,0x%x) não é válido." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Não foi possível localizar o dispositivo USB (fabricante 0x%x, produto 0x" "%x). Tenha certeza de que esse dispositivo está conectado ao computador." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Não foi possível localizar o dispositivo USB (classe 0x%x, subclasse 0x%x, " "protocolo 0x%x). Tenha certeza de que esse dispositivo está conectado ao " "computador." #: libusb1/libusb1.c:396 #, fuzzy msgid "Could not detach kernel driver of camera device." msgstr "" "Não foi possível desanexar o driver de kernel \"%s\" do dispositivo de " "câmera." #: libusb1/libusb1.c:509 #, fuzzy msgid "Could not reattach kernel driver of camera device." msgstr "" "Não foi possível desanexar o driver de kernel \"%s\" do dispositivo de " "câmera." #: usbscsi/linux.c:109 #, fuzzy, c-format msgid "Device '%s' is locked by another app." msgstr "O dispositivo \"%s\" está travado pelo PID %d" #: usbscsi/linux.c:114 #, fuzzy, c-format msgid "Failed to lock '%s' (%m)." msgstr "Falhou ao abrir \"%s\" (%m)." #: usbscsi/linux.c:130 #, fuzzy, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Falhou ao abrir \"%s\" (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "Armazenamento em massa USB bruto SCSI" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Não foi possível enviar um comando SCSI para \"%s\" (%m)." #~ msgid "Called for filename '%s'." #~ msgstr "Chamou pelo arquivo \"%s\"." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Não foi possível carregar \"%s\": \"%s\"." #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Não foi possível localizar algumas funções em \"%s\": \"%s\"." #~ msgid "'%s' already loaded" #~ msgstr "\"%s\" já está carregado" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Não foi possível carregar a lista de drivers porta: \"%s\"." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "Carregado \"%s\" (\"%s\") de \"%s\"." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "Usando LTDL para carregar drivers de E/S de \"%s\"..." #~ msgid "Counting entries (%i available)..." #~ msgstr "Contando entradas (%i disponível)..." #~ msgid "%i regular entries available." #~ msgstr "%i entradas regulares disponíveis." #~ msgid "Looking for path '%s' (%i entries available)..." #~ msgstr "Procurando pelo caminho \"%s\" (%i entradas disponíveis)..." #~ msgid "Starting regex search for '%s'..." #~ msgstr "Iniciando busca, por REGEX, por \"%s\"..." #~ msgid "Trying '%s'..." #~ msgstr "Tentando \"%s\"..." #~ msgid "regcomp failed" #~ msgstr "falha ao computar expressão" #~ msgid "re_match failed (%i)" #~ msgstr "falha ao comparar expressão (%i)" #~ msgid "regexec failed" #~ msgstr "falha ao executar expressão" #~ msgid "Looking up entry '%s'..." #~ msgstr "Procurando entrada \"%s\"..." #~ msgid "Getting info of entry %i (%i available)..." #~ msgstr "Obtendo informações da entrada %i (%i disponíveis)..." #~ msgid "Creating new device..." #~ msgstr "Criando novo dispositivo..." #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Não foi possível carregar \"%s\" (\"%s\")." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "" #~ "Não foi possível localizar \"gp_port_library_operations\" em \"%s\" (\"%s" #~ "\")" #~ msgid "Opening %s port..." #~ msgstr "Abrindo a porta %s..." #~ msgid "Closing port..." #~ msgstr "Fechando porta..." #~ msgid "Freeing port..." #~ msgstr "Liberando porta..." #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Escrevendo %i=0x%x byte(s) para a porta..." #~ msgid "Could only write %i out of %i byte(s)" #~ msgstr "Foi possível escrever apenas %i de %i byte(s)" #~ msgid "Reading %i=0x%x bytes from port..." #~ msgstr "Lendo %i=0x%x bytes da porta..." #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Foi possível apenas ler %i de %i byte(s)" #~ msgid "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr "Lendo %i=0x%x bytes da ponta de interrupção..." #~ msgid "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr "Lendo %i=0x%x bytes da ponta de interrupção (rápido)..." #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Definindo o tempo limite para %i milisegundo(s)..." #~ msgid "Getting timeout..." #~ msgstr "Obtendo tempo limite..." #~ msgid "Current timeout: %i milliseconds" #~ msgstr "Tempo limite atual: %i milisegundos" #~ msgid "Setting settings..." #~ msgstr "Definindo configurações..." #~ msgid "Getting level of pin %i..." #~ msgstr "Obtendo nível do pino %i..." #~ msgid "Level of pin %i: %i" #~ msgstr "Nível do pino %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Definindo pino %i (%s: \"%s\") para \"%s\"..." #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "Enviando interrupção (%i milisegundos)..." #~ msgid "Flushing port..." #~ msgstr "Descarregando porta..." #~ msgid "Clear halt..." #~ msgstr "Limpar desligamento..." #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Escrevendo mensagem (requisição=0x%x valor=0x%x índice=0x%x tamanho=%i=0x" #~ "%x)..." #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Lendo mensagem (requisição=0x%x valor=0x%x índice=0x%x tamanho=%i=0x%x)..." #~ msgid "msg_read" #~ msgstr "ler mensagem" #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "O dispositivo está com o driver \"%s\" anexado, desanexando agora." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "O dispositivo USB (fabricante 0x%x, produto 0x%x) é um dispositivo de " #~ "armazenamento em massa, e pode não funcionar com o gphoto2. Referência: %s" #~ msgid "(unknown)" #~ msgstr "(desconhecido)" #~ msgid "Loading io-drivers from '%s' without ltdl..." #~ msgstr "Carregando drivers de E/S de \"%s\" sem LTDL..." #~ msgid "Could not load any io-library because '%s' could not be opened (%m)" #~ msgstr "" #~ "Não foi possível carregar nenhuma biblioteca de E/S porque \"%s\" não " #~ "pôde ser aberto (%m)" #~ msgid "'%s' is not a library (%s)" #~ msgstr "\"%s\" não é uma biblioteca (%s)" #~ msgid "Could not find some functions in '%s' (%s)" #~ msgstr "Não foi possível localizar algumas funções em \"%s\" (%s)" #~ msgid "Could not load list (%s)" #~ msgstr "Não foi possível carregar lista (%s)." #~ msgid "Loaded '%s' (%s) from '%s'" #~ msgstr "Carregado \"%s\" (%s) de \"%s\"" #~ msgid "Could not load '%s' ('%s')" #~ msgstr "Não foi possível carregar \"%s\" (\"%s\")" libgphoto2-2.5.9/libgphoto2_port/po/sk.gmo0000644000175000001440000001601412623156265015403 00000000000000Þ•FLa|*Id5ž0Ôyj3ê#9]x’(²Û2ú$- R *q *œ +Ç ó ) = ^ | 6™ :Ð < "H k /‹ » × ï # / P j „ ž ³ À Ì × à ÿ  * 2D %w ; +Ù  :0Q ‚  ­¿Õ ÚçÂë®À5Ù''7'_C‡:Ë„—;(X1,³#à,71(i:’+Í+ù<%6bA™1Û9 )G*q&œCÃFRN.¡*Ð-û)!Hj3†(ºã%&(Om ~‹ ›©Æ Ùç"ù."KBnP±#%&L+i•¤ ¸Æ×ð ø92*/'$- ?BD 5 >.%@F )461":3A&;!(0 C7<# 8E=+,Bad parametersCamera is already in use.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to open '%s' (%m).Failed to open '%s' (%s).Fixed limit exceededGeneric PortI/O problemMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowProject-Id-Version: libgphoto2_port 2.5.0 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2012-07-31 00:34+0100 Last-Translator: Ivan Masár Language-Team: Slovak Language: sk MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; Chybné parametreKamera sa už používa.Nebolo možné prevziaÅ¥ kontrolu nad USB zariadenímNebolo možné zatvoriÅ¥ „%s“ (%m).Nebolo možné zatvoriÅ¥ „%s“ (%s).Nebolo možné zatvoriÅ¥ port USB (%s).Nebolo možné odpojiÅ¥ ovládaÄ zariadenia fotoaparátu „%s“.Nebolo možné odpojiÅ¥ ovládaÄ zariadenia fotoaparátu.Nebolo možné nájsÅ¥ USB zariadenie (trieda 0x%x, podtrieda 0x%x, protocol 0x%x). Uistite sa, že je toto zariadenie pripojené k poÄítaÄu.Nebolo možné nájsÅ¥ USB zariadenie (dodávateľ 0x%x, produkt 0x%x). Uistite sa, že je toto zariadenie pripojené k poÄítaÄu.Nebolo možné nájsÅ¥ požadované zariadenie na porte USBnebolo možné vyÄistiÅ¥ „%s“ (%s).Nebolo možné zistiÅ¥ úroveň kontaktu %i (%s).Nebolo možné zamknúť zariadenie „%s“Nebolo možné zamknúť zariadenieNebolo možné otvoriÅ¥ zariadenie USB (%s).Nepodarilo sa spojiÅ¥ s ovládaÄom zariadenia v jadre.Nebolo možné ÄítaÅ¥ z „%s“ (%m).Nebolo možné odpojiÅ¥ ovládaÄ zariadenia fotoaparátu.Nebolo možné uvoľniÅ¥ rozhranie %d (%s).Nebolo možné reÅ¡tartovaÅ¥ port USB (%s).Nebolo možné presunúť sa na pozíciu %x v „%s“ (%m).Nebolo možné poslaÅ¥ príkaz SCSI pre „%s“ (%m).Nebolo možné nastaviÅ¥ alternatívne nastavenie z %d na %d (%s)Nebolo možné nastaviÅ¥ konfiguráciu %d/%d (%s)Nebolo možné nastaviÅ¥ úroveň kontaktu %i na %i (%s).Nebolo možné nastaviÅ¥ rýchlosÅ¥ na %dNebolo možné zapísaÅ¥ do „%s“ (%m).Nebolo možné zapísaÅ¥ do portu (%s)Zariadenie „%s“ nebolo možné zamknúť (dev_lock returned %d)Zariadenie „%s“ nebolo možné odomknúť (dev_unlock vrátil %d).Zariadenie „%s“ nebolo možné odomknúť, pretože ho zamkol proces s PID %d.Zariadenie „%s“ nebolo možné odomknúť.Zariadenie „%s“ zamkol proces s PID %dChyba pri ruÅ¡ení stavu blokovania portu USBChyba pri inicializácii portuChyba pri naÄítavaná knižniceChyba pri Äítaní z portuChyba pri nastavovaní rýchlosti sériového portuChyba pri aktualizácii nastavení portuChyba pri zapisovaní do portuNepodarilo sa otvoriÅ¥ „%s“ (%m).Nebolo možné otvoriÅ¥ „%s“ (%s).Pevný limit bol prekroÄenýVÅ¡eobecný portV/V problémNosiÄ â€ž%s“Žiadna chybaNie je dostupný popis chybyNedostatok pamäteChyba parity.Sériový port %iSériový port nie je podporovanýToto zariadenie nepodporuje operáciu „%s“Port zatiaľ nebol inicializovanýZadaný ID dodávateľa alebo produktu (0x%x,0x%x) nie je platný.Vyhradený Äasový interval vypÅ¡al poÄas Äítania alebo zapisovania do portuHromadné úložisko USB priamy V/VHromadné úložisko USB pomocou SCSIUSB port nie je podporovanýNeoÄakávaná odpoveÄ parity 0xff 0x%02x.Neznáma chybaNeznámy kolík %i.Neznámy portNeurÄená chybaNepodporovaná operáciavysokáchyba libhalnízkalibgphoto2-2.5.9/libgphoto2_port/po/cs.po0000644000175000001440000004250112623156264015226 00000000000000# Czech translation of libgphoto2_port # This file is distributed under the same license as the libgphoto2 package. # # Miloslav Trmac , 2003. # Marek ÄŒernocký , 2011, 2012, 2014. # msgid "" msgstr "" "Project-Id-Version: libgphoto2_port 2.5.3\n" "Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-11-18 21:16+0100\n" "PO-Revision-Date: 2014-03-09 13:57+0100\n" "Last-Translator: Marek ÄŒernocký \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: libgphoto2_port/gphoto2-port-info-list.c:409 msgid "Generic Port" msgstr "Obecný port" #: libgphoto2_port/gphoto2-port-result.c:58 msgid "No error" msgstr "Žádná chyba" #: libgphoto2_port/gphoto2-port-result.c:60 msgid "Unspecified error" msgstr "NeurÄená chyba" #: libgphoto2_port/gphoto2-port-result.c:62 msgid "I/O problem" msgstr "Problém V/V" #: libgphoto2_port/gphoto2-port-result.c:64 msgid "Bad parameters" msgstr "Å patné parametry" #: libgphoto2_port/gphoto2-port-result.c:66 msgid "Unsupported operation" msgstr "Nepodporovaná operace" #: libgphoto2_port/gphoto2-port-result.c:68 msgid "Fixed limit exceeded" msgstr "Bylo dosaženo pevného omezení" #: libgphoto2_port/gphoto2-port-result.c:70 msgid "Timeout reading from or writing to the port" msgstr "PÅ™i Ätení z nebo zápisu na port vyprÅ¡elo Äasové omezení" #: libgphoto2_port/gphoto2-port-result.c:72 msgid "Serial port not supported" msgstr "Sériový port není podporován" #: libgphoto2_port/gphoto2-port-result.c:74 msgid "USB port not supported" msgstr "Port USB není podporován" #: libgphoto2_port/gphoto2-port-result.c:76 msgid "Unknown port" msgstr "Neznámý port" #: libgphoto2_port/gphoto2-port-result.c:78 msgid "Out of memory" msgstr "Nedostatek pamÄ›ti" #: libgphoto2_port/gphoto2-port-result.c:80 msgid "Error loading a library" msgstr "Chyba pÅ™i naÄítání knihovny" #: libgphoto2_port/gphoto2-port-result.c:82 msgid "Error initializing the port" msgstr "Chyba pÅ™i inicializaci portu" #: libgphoto2_port/gphoto2-port-result.c:84 msgid "Error reading from the port" msgstr "Chyba pÅ™i Ätení z portu" #: libgphoto2_port/gphoto2-port-result.c:86 msgid "Error writing to the port" msgstr "Chyba pÅ™i zápisu na port" #: libgphoto2_port/gphoto2-port-result.c:88 msgid "Error updating the port settings" msgstr "Chyba pÅ™i aktualizaci nastavení portu" #: libgphoto2_port/gphoto2-port-result.c:90 msgid "Error setting the serial port speed" msgstr "Chyba pÅ™i nastavování rychlosti sériového portu" #: libgphoto2_port/gphoto2-port-result.c:92 msgid "Error clearing a halt condition on the USB port" msgstr "Chyba pÅ™i nulování stavu zastavení na portu USB" #: libgphoto2_port/gphoto2-port-result.c:94 msgid "Could not find the requested device on the USB port" msgstr "Nelze najít požadované zařízení na portu USB" #: libgphoto2_port/gphoto2-port-result.c:96 msgid "Could not claim the USB device" msgstr "Nelze pÅ™idÄ›lit USB zařízení" #: libgphoto2_port/gphoto2-port-result.c:98 msgid "Could not lock the device" msgstr "Nelze zamknout zařízení" #: libgphoto2_port/gphoto2-port-result.c:100 msgid "libhal error" msgstr "Chyba knihovny libhal" #: libgphoto2_port/gphoto2-port-result.c:102 msgid "Unknown error" msgstr "Neznámá chyba" #: libgphoto2_port/gphoto2-port.c:59 #, c-format msgid "The operation '%s' is not supported by this device" msgstr "Operace „%s“ není tímto zařízením podporována" #: libgphoto2_port/gphoto2-port.c:60 msgid "The port has not yet been initialized" msgstr "Port jeÅ¡tÄ› nebyl inicializován" #: libgphoto2_port/gphoto2-port.c:682 msgid "low" msgstr "nizká" #: libgphoto2_port/gphoto2-port.c:683 msgid "high" msgstr "vysoká" #: libgphoto2_port/gphoto2-port.c:1211 msgid "No error description available" msgstr "Není k dispozici popis chyby" #: disk/disk.c:147 disk/disk.c:148 disk/disk.c:219 disk/disk.c:220 #: disk/disk.c:260 disk/disk.c:283 #, c-format msgid "Media '%s'" msgstr "Média „%s“" #: serial/unix.c:226 #, c-format msgid "Could not lock device '%s'" msgstr "Nelze zamknout zařízení „%s“" #: serial/unix.c:236 usbdiskdirect/linux.c:96 #, c-format msgid "Device '%s' is locked by pid %d" msgstr "Zařízení „%s“ je zamÄeno od pid %d" #: serial/unix.c:239 usbdiskdirect/linux.c:99 #, c-format msgid "Device '%s' could not be locked (dev_lock returned %d)" msgstr "Zařízení „%s“ nemohlo být zamÄeno (funkce dev_lock vrátila %d)" #: serial/unix.c:268 #, c-format msgid "Device '%s' could not be unlocked." msgstr "Zařízení „%s“ nemohlo být odemÄeno." #: serial/unix.c:280 usbdiskdirect/linux.c:128 #, c-format msgid "Device '%s' could not be unlocked as it is locked by pid %d." msgstr "Zařízení „%s“ nemohlo být odemÄeno, protože je zamÄeno od pid %d." #: serial/unix.c:284 usbdiskdirect/linux.c:132 #, c-format msgid "Device '%s' could not be unlocked (dev_unlock returned %d)" msgstr "Zařízení „%s“ nemohlo být odemÄeno (funkce dev_unlock vrátila %d)" #: serial/unix.c:342 #, c-format msgid "Serial Port %i" msgstr "Sériový port %i" #: serial/unix.c:430 #, c-format msgid "Failed to open '%s' (%s)." msgstr "Nelze otevřít „%s“ (%s)." #: serial/unix.c:450 #, c-format msgid "Could not close '%s' (%s)." msgstr "Nelze zavřít „%s“ (%s)." #: serial/unix.c:506 #, c-format msgid "Could not write to port (%s)" msgstr "Nelze zapisovat na port (%s)" #: serial/unix.c:583 msgid "Parity error." msgstr "Chyba parity." #: serial/unix.c:587 #, c-format msgid "Unexpected parity response sequence 0xff 0x%02x." msgstr "NeoÄekávaná sekvence odpovÄ›di na paritu 0xff 0x%02x." #: serial/unix.c:630 #, c-format msgid "Unknown pin %i." msgstr "Neznámý vývod %i." #: serial/unix.c:652 #, c-format msgid "Could not get level of pin %i (%s)." msgstr "Nelze získat úroveň vývodu %i (%s)." #: serial/unix.c:688 #, c-format msgid "Could not set level of pin %i to %i (%s)." msgstr "Nelze nastavit úroveň vývodu %i na %i (%s)." #: serial/unix.c:715 #, c-format msgid "Could not flush '%s' (%s)." msgstr "Nelze vyprázdnit „%s“ (%s)." #: serial/unix.c:827 #, c-format msgid "Could not set the baudrate to %d" msgstr "Nelze nastavit rychlost pÅ™enosu na %d" #: usbdiskdirect/linux.c:235 msgid "USB Mass Storage direct IO" msgstr "USB rozhraní typu „Mass Storage direct IO“" #: usbdiskdirect/linux.c:286 usbscsi/linux.c:270 #, c-format msgid "Failed to open '%s' (%m)." msgstr "Nelze otevřít „%s“ (%m)." #: usbdiskdirect/linux.c:300 usbscsi/linux.c:298 #, c-format msgid "Could not close '%s' (%m)." msgstr "Nelze zavřít „%s“ (%m)." #: usbdiskdirect/linux.c:324 #, c-format msgid "Could not seek to offset: %x on '%s' (%m)." msgstr "Nelze se pÅ™esunout na pozici: %x na „%s“ (%m)." #: usbdiskdirect/linux.c:346 #, c-format msgid "Could not write to '%s' (%m)." msgstr "Nelze zapisovat do „%s“ (%m)." #: usbdiskdirect/linux.c:367 #, c-format msgid "Could not read from '%s' (%m)." msgstr "Nelze Äíst z „%s“ (%m)." #: usb/libusb.c:261 libusb1/libusb1.c:378 #, c-format msgid "Could not open USB device (%s)." msgstr "Nelze otevřít zařízení USB (%s)." #: usb/libusb.c:274 libusb1/libusb1.c:387 msgid "Camera is already in use." msgstr "Fotoaparát je již používán." #: usb/libusb.c:282 #, c-format msgid "Could not detach kernel driver '%s' of camera device." msgstr "Nelze odpojit jaderný ovladaÄ â€ž%s“ zařízení fotoaparátu." #: usb/libusb.c:287 libusb1/libusb1.c:402 msgid "Could not query kernel driver of device." msgstr "Nelze se dotázat jaderného ovladaÄe zařízení." #: usb/libusb.c:296 libusb1/libusb1.c:409 #, c-format msgid "" "Could not claim interface %d (%s). Make sure no other program (%s) or kernel " "module (such as %s) is using the device and you have read/write access to " "the device." msgstr "" "Nelze pÅ™idÄ›lit rozhraní %d (%s). Zkontrolujte, že žádný jiný program (%s) " "nebo jaderný modul (napÅ™. %s) zařízení nepoužívá a že máte k zařízení " "přístup pro Ätení a pro zápis." #: usb/libusb.c:308 libusb1/libusb1.c:420 msgid "MacOS PTPCamera service" msgstr "Služba MacOS PTPCamera" #: usb/libusb.c:310 libusb1/libusb1.c:422 msgid "unknown libgphoto2 using program" msgstr "neznámý program používaný libgphoto2" #: usb/libusb.c:327 libusb1/libusb1.c:486 #, c-format msgid "Could not release interface %d (%s)." msgstr "Nelze uvolnit rozhraní %d (%s)." #: usb/libusb.c:342 libusb1/libusb1.c:500 #, c-format msgid "Could not reset USB port (%s)." msgstr "Nelze resetovat port USB (%s)." #: usb/libusb.c:372 #, c-format msgid "Could not close USB port (%s)." msgstr "Nelze zavřít port USB (%s)." #: usb/libusb.c:633 libusb1/libusb1.c:838 #, c-format msgid "Could not set config %d/%d (%s)" msgstr "Nelze provést nastavení %d/%d (%s)" #: usb/libusb.c:664 libusb1/libusb1.c:867 #, c-format msgid "Could not set altsetting from %d to %d (%s)" msgstr "Nelze provést zmÄ›nu nastavení %d na %d (%s)" #: usb/libusb.c:753 libusb1/libusb1.c:1032 #, c-format msgid "The supplied vendor or product id (0x%x,0x%x) is not valid." msgstr "Poskytnuté ID dodavatele nebo produktu (0x%x,0x%x) není platné." #: usb/libusb.c:824 usb/libusb.c:910 libusb1/libusb1.c:1001 #: libusb1/libusb1.c:1093 #, c-format msgid "" "Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer." msgstr "" "Nelze najít zařízení USB (dodavatel 0x%x, produkt 0x%x). Zkontrolujte, že je " "toto zařízení pÅ™ipojeno k poÄítaÄi." #: usb/libusb.c:1203 libusb1/libusb1.c:1382 #, c-format msgid "" "Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make " "sure this device is connected to the computer." msgstr "" "Nelze najít zařízení USB (třída 0x%x, podtřída 0x%x, protokol 0x%x). " "Zkontrolujte, že je toto zařízení pÅ™ipojeno k poÄítaÄi." #: libusb1/libusb1.c:396 msgid "Could not detach kernel driver of camera device." msgstr "Nelze odpojit jaderný ovladaÄ zařízení fotoaparátu." #: libusb1/libusb1.c:509 msgid "Could not reattach kernel driver of camera device." msgstr "Nelze odpojit jaderný ovladaÄ zařízení fotoaparátu." #: usbscsi/linux.c:109 #, c-format msgid "Device '%s' is locked by another app." msgstr "Zařízení „%s“ je zamÄeno jinou aplikací." #: usbscsi/linux.c:114 #, c-format msgid "Failed to lock '%s' (%m)." msgstr "Nelze zamknout „%s“ (%m)." #: usbscsi/linux.c:130 #, c-format msgid "Failed to unlock '%s' (%m)." msgstr "Nelze odemknout „%s“ (%m)." #: usbscsi/linux.c:231 msgid "USB Mass Storage raw SCSI" msgstr "USB rozhraní typu „Mass Storage raw SCSI“" #: usbscsi/linux.c:342 #, c-format msgid "Could not send scsi command to: '%s' (%m)." msgstr "Nelze odeslat příkaz SCSI na: „%s“ (%m)." #~ msgid "Called for filename '%s'." #~ msgstr "Požadován soubor „%s“." #~ msgid "Could not load '%s': '%s'." #~ msgstr "Nelze naÄíst „%s“: „%s“" #~ msgid "Could not find some functions in '%s': '%s'." #~ msgstr "Nelze najít nÄ›které funkce v „%s“: „%s“." #~ msgid "'%s' already loaded" #~ msgstr "Soubor „%s“ je již naÄten" #~ msgid "Could not load port driver list: '%s'." #~ msgstr "Nelze naÄíst seznam ovladaÄů portů: „%s“." #~ msgid "Loaded '%s' ('%s') from '%s'." #~ msgstr "NaÄten „%s“ („%s“) ze souboru „%s“." #~ msgid "Using ltdl to load io-drivers from '%s'..." #~ msgstr "Používá se ltdl k naÄtení V/V ovladaÄů z „%s“…" #~ msgid "Counting entries (%i available)..." #~ msgid_plural "Counting entries (%i available)..." #~ msgstr[0] "PoÄítají se záznamy (%i dostupný)…" #~ msgstr[1] "PoÄítají se záznamy (%i dostupné)…" #~ msgstr[2] "PoÄítají se záznamy (%i dostupných)…" #~ msgid "%i regular entry available." #~ msgid_plural "%i regular entries available." #~ msgstr[0] "Dostupný je %i běžný záznam." #~ msgstr[1] "Dostupné jsou %i běžné záznamy." #~ msgstr[2] "Dostupných je %i běžných záznamů." #~ msgid "Looking for path '%s' (%i entry available)..." #~ msgid_plural "Looking for path '%s' (%i entries available)..." #~ msgstr[0] "Hledá se cesta „%s“ (%i dostupný záznam)…" #~ msgstr[1] "Hledá se cesta „%s“ (%i dostupné záznamy)…" #~ msgstr[2] "Hledá se cesta „%s“ (%i dostupných záznamů)…" #~ msgid "Starting regex search for '%s'..." #~ msgstr "ZaÄíná se vyhledávat „%s“ pomocí regulárního výrazu…" #~ msgid "Trying '%s'..." #~ msgstr "Zkouší se „%s“…" #~ msgid "regcomp failed" #~ msgstr "kompilace regulárního výrazu selhala" #~ msgid "re_match failed (%i)" #~ msgstr "porovnání regulárním výrazem selhalo (%i)" #~ msgid "regexec failed" #~ msgstr "spuÅ¡tÄ›ní regulárního výrazu selhalo" #~ msgid "Looking up entry '%s'..." #~ msgstr "Vyhledává se záznam „%s“…" #~ msgid "Getting info of entry %i (%i available)..." #~ msgid_plural "Getting info of entry %i (%i available)..." #~ msgstr[0] "Získávají se informace o záznamu %i (k dispozici je %i)…" #~ msgstr[1] "Získávají se informace o záznamu %i (k dispozici jsou %i)…" #~ msgstr[2] "Získávají se informace o záznamu %i (k dispozici je %i)…" #~ msgid "Creating new device..." #~ msgstr "Vytváří se nové zařízení…" #~ msgid "Could not load '%s' ('%s')." #~ msgstr "Nelze naÄíst „%s“ („%s“)." #~ msgid "Could not find 'gp_port_library_operations' in '%s' ('%s')" #~ msgstr "Nelze najít funkci „gp_port_library_operation“ v „%s“ („%s“)" #~ msgid "Opening %s port..." #~ msgstr "Otevírá se port %s…" #~ msgid "Closing port..." #~ msgstr "Zavírá se port…" #~ msgid "Resetting port..." #~ msgstr "Resetuje se port…" #~ msgid "Freeing port..." #~ msgstr "Uvolňuje se port…" #~ msgid "Writing %i=0x%x byte(s) to port..." #~ msgstr "Zapisuje se %i=0x%x bajtů na port…" #~ msgid "Could only write %i out of %i byte" #~ msgid_plural "Could only write %i out of %i bytes" #~ msgstr[0] "Je možné zapsat pouze %i z %i bajtu" #~ msgstr[1] "Je možné zapsat pouze %i z %i bajtů" #~ msgstr[2] "Je možné zapsat pouze %i z %i bajtů" #~ msgid "Reading %i=0x%x byte from port..." #~ msgid_plural "Reading %i=0x%x bytes from port..." #~ msgstr[0] "ÄŒte se %i=0x%x bajt z portu…" #~ msgstr[1] "ÄŒtou se %i=0x%x bajty z portu…" #~ msgstr[2] "ÄŒte se %i=0x%x bajtů z portu…" #~ msgid "Could only read %i out of %i byte" #~ msgid_plural "Could only read %i out of %i byte(s)" #~ msgstr[0] "Je možné pÅ™eÄíst pouze %i z %i bajtu" #~ msgstr[1] "Je možné pÅ™eÄíst pouze %i z %i bajtů" #~ msgstr[2] "Je možné pÅ™eÄíst pouze %i z %i bajtů" #~ msgid "Reading %i=0x%x byte from interrupt endpoint..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint..." #~ msgstr[0] "ÄŒte se %i=0x%x bajt z koncového bodu pÅ™eruÅ¡ení…" #~ msgstr[1] "ÄŒtou se %i=0x%x bajty z koncového bodu pÅ™eruÅ¡ení…" #~ msgstr[2] "ÄŒte se %i=0x%x bajtů z koncového bodu pÅ™eruÅ¡ení…" #~ msgid "Could only read %i out of %i byte(s)" #~ msgstr "Je možné pÅ™eÄíst pouze %i z %i bajtů" #~ msgid "Reading %i=0x%x byte from interrupt endpoint (fast)..." #~ msgid_plural "Reading %i=0x%x bytes from interrupt endpoint (fast)..." #~ msgstr[0] "ÄŒte se %i=0x%x bajt z koncového bodu pÅ™eruÅ¡ení (zrychlenÄ›)…" #~ msgstr[1] "ÄŒtou se %i=0x%x bajty z koncového bodu pÅ™eruÅ¡ení (zrychlenÄ›)…" #~ msgstr[2] "ÄŒte se %i=0x%x bajtů z koncového bodu pÅ™eruÅ¡ení (zrychlenÄ›)…" #~ msgid "Setting timeout to %i millisecond(s)..." #~ msgstr "Nastavuje se Äasové omezení na %i ms…" #~ msgid "Getting timeout..." #~ msgstr "Zjišťuje se Äasové omezení…" #~ msgid "Current timeout: %i milliseconds" #~ msgstr "SouÄasné Äasové omezení: %i milisekund" #~ msgid "Setting settings..." #~ msgstr "Nastavuje se nastavení…" #~ msgid "Getting level of pin %i..." #~ msgstr "Získává se úroveň vývodu %i…" #~ msgid "Level of pin %i: %i" #~ msgstr "Úroveň vývodu %i: %i" #~ msgid "Setting pin %i (%s: '%s') to '%s'..." #~ msgstr "Nastavuje se vývod %i (%s: „%s“) na „%s“…" #~ msgid "Sending break (%i milliseconds)..." #~ msgstr "Posílá se pÅ™eruÅ¡ení (%i ms)…" #~ msgid "Flushing port..." #~ msgstr "Vyprazdňuje se port…" #~ msgid "Clear halt..." #~ msgstr "Nulování stavu zastavení…" #~ msgid "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "Zapisuje se zpráva (požadavek=0x%x hodnota=0x%x index=0x%x velikost=%i=0x" #~ "%x)…" #~ msgid "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)..." #~ msgstr "" #~ "ÄŒte se zpráva (požadavek=0x%x hodnota=0x%x index=0x%x velikost=%i=0x%x)…" #~ msgid "Device has driver '%s' attached." #~ msgstr "Zařízení má pÅ™ipojeno ovladaÄ â€ž%s“." #~ msgid "Device has driver '%s' attached, detaching it now." #~ msgstr "Zařízení má pÅ™ipojeno ovladaÄ â€ž%s“, nyní se odpojuje." #~ msgid "" #~ "USB device (vendor 0x%x, product 0x%x) is a mass storage device, and " #~ "might not function with gphoto2. Reference: %s" #~ msgstr "" #~ "Zařízení USB (výrobce 0x%x, výrobek 0x%x) je zařízení typu „master " #~ "storage“ a možná nebude s gphoto2 fungovat. PříruÄka: %s" #~ msgid "Device has a kernel driver attached (%d), detaching it now." #~ msgstr "Zařízení má pÅ™ipojeno jaderný ovladaÄ (%d), nyní se odpojuje." libgphoto2-2.5.9/libgphoto2_port/po/zh_TW.gmo0000644000175000001440000001603612623156265016025 00000000000000Þ•L|eÜpq€¢š=\w’5±0çyj’3ý1 #L p ‹ ¥ (Å î 2 $@ e *„ *¯ +Ú  )& P q  6¬ :ã < "[ %~ ¤ /Ä ô  ( #D h ‰ £ ½ × ñ   " /; S^g † ”¢±2Ë%þ;$+`Œ§Á0Ø  '4F\ an rµ“IY r+C"[6~3µné`X,¹æ'þ&<O*oš9µï" )0(Z.ƒ²0Ð5*P,{P¨ù.5A2wªÆßø6Okƒ!ŸÁ× çò  9I _lŸ6¸ï+J*_Šš­½Ðã çõ$ù@,/A D%2K!  4+I30;GH59L8(":=J)*E<BC'& F 1?>#$ -7.6Bad parametersCamera is already in use.Could not claim interface %d (%s). Make sure no other program (%s) or kernel module (such as %s) is using the device and you have read/write access to the device.Could not claim the USB deviceCould not close '%s' (%m).Could not close '%s' (%s).Could not close USB port (%s).Could not detach kernel driver '%s' of camera device.Could not detach kernel driver of camera device.Could not find USB device (class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device is connected to the computer.Could not find USB device (vendor 0x%x, product 0x%x). Make sure this device is connected to the computer.Could not find the requested device on the USB portCould not flush '%s' (%s).Could not get level of pin %i (%s).Could not lock device '%s'Could not lock the deviceCould not open USB device (%s).Could not query kernel driver of device.Could not read from '%s' (%m).Could not reattach kernel driver of camera device.Could not release interface %d (%s).Could not reset USB port (%s).Could not seek to offset: %x on '%s' (%m).Could not send scsi command to: '%s' (%m).Could not set altsetting from %d to %d (%s)Could not set config %d/%d (%s)Could not set level of pin %i to %i (%s).Could not set the baudrate to %dCould not write to '%s' (%m).Could not write to port (%s)Device '%s' could not be locked (dev_lock returned %d)Device '%s' could not be unlocked (dev_unlock returned %d)Device '%s' could not be unlocked as it is locked by pid %d.Device '%s' could not be unlocked.Device '%s' is locked by another app.Device '%s' is locked by pid %dError clearing a halt condition on the USB portError initializing the portError loading a libraryError reading from the portError setting the serial port speedError updating the port settingsError writing to the portFailed to lock '%s' (%m).Failed to open '%s' (%m).Failed to open '%s' (%s).Failed to unlock '%s' (%m).Fixed limit exceededGeneric PortI/O problemMacOS PTPCamera serviceMedia '%s'No errorNo error description availableOut of memoryParity error.Serial Port %iSerial port not supportedThe operation '%s' is not supported by this deviceThe port has not yet been initializedThe supplied vendor or product id (0x%x,0x%x) is not valid.Timeout reading from or writing to the portUSB Mass Storage direct IOUSB Mass Storage raw SCSIUSB port not supportedUnexpected parity response sequence 0xff 0x%02x.Unknown errorUnknown pin %i.Unknown portUnspecified errorUnsupported operationhighlibhal errorlowunknown libgphoto2 using programProject-Id-Version: libgphoto2_port 2.5.8 Report-Msgid-Bugs-To: gphoto-devel@lists.sourceforge.net POT-Creation-Date: 2015-11-18 21:16+0100 PO-Revision-Date: 2015-10-08 12:39+0800 Last-Translator: Wei-Lun Chao Language-Team: Chinese (traditional) Language: zh_TW MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; ä¸ç•¶çš„åƒæ•¸ç…§ç›¸æ©Ÿåœ¨ä½¿ç”¨ä¸­ã€‚ç„¡æ³•è«‹æ±‚ä»‹é¢ %d (%s)ã€‚è«‹ç¢ºèªæ²’æœ‰å…¶å®ƒç¨‹å¼ (%s) 或核心模組 (例如 %s) 正在使用這個è£ç½®ï¼Œä¸¦ä¸”您有å°é€™å€‹è£ç½®çš„讀/å¯«æ¬Šã€‚ç„¡æ³•è¦æ±‚ USB è£ç½®ç„¡æ³•關閉 %s (%m)。無法關閉 %s (%s)。無法關閉 USB 通訊埠 (%s)ã€‚ç„¡æ³•å¸æŽ›ç…§ç›¸æ©Ÿè£ç½®çš„æ ¸å¿ƒé©…å‹•ç¨‹å¼ %s。無法å¸é›¢ç…§ç›¸æ©Ÿè£ç½®çš„內核驅動程å¼ã€‚無法找到 USB è£ç½® (類別 0x%xã€å­é¡ž 0x%xã€å”定 0x%x)。請確èªé€™å€‹è£ç½®å·²é€£æŽ¥åˆ°é›»è…¦ã€‚無法找到 USB è£ç½® (廠商 0x%xã€ç”¢å“ 0x%x)。請確èªé€™å€‹è£ç½®å·²é€£æŽ¥åˆ°é›»è…¦ã€‚無法在 USB é€šè¨ŠåŸ æ‰¾åˆ°è¦æ±‚çš„è£ç½®ç„¡æ³•æ¸…ç† %s (%s)。無法ç²å–é‡è…³ %i 的層級 (%s)。無法鎖定è£ç½® %s無法鎖定è£ç½®ç„¡æ³•開啟 USB è£ç½® (%s)。無法查詢è£ç½®çš„æ ¸å¿ƒé©…動程å¼ã€‚無法讀å–自 %s (%m)ã€‚ç„¡æ³•é‡æ–°é™„接照相機è£ç½®çš„內核驅動程å¼ã€‚ç„¡æ³•é‡‹æ”¾ä»‹é¢ %d (%s)。無法é‡ç½® USB 通訊埠 (%s)。無法尋指到å移:%x æ–¼ %s (%m)ã€‚ç„¡æ³•ç™¼é€ scsi 命令給:%s (%m)。無法設定從 %d 到 %d 的補充設定 (%s)無法設定é…ç½® %d/%d (%s)無法將é‡è…³ %i 的層級設定為 %i (%s)。無法將鮑率設定為 %d無法寫入 %s (%m)。無法寫入通訊埠 (%s)無法鎖定è£ç½® %s (dev_lock 回傳 %d)無法解鎖è£ç½® %s (dev_unlock 回傳 %d)由於è£ç½® %s 已被行程編號為 %d 的行程鎖定,所以無法解鎖。無法解鎖è£ç½® %s。è£ç½® %s 已被å¦ä¸€å€‹æ‡‰ç”¨ç¨‹å¼éŽ–å®šã€‚è£ç½® %s 已經被行程編號為 %d 的行程鎖定清除 USB 通訊埠的一個中止æ¢ä»¶æ™‚錯誤åˆå§‹åŒ–通訊埠時錯誤載入函å¼åº«æ™‚錯誤讀å–通訊埠時錯誤設定åºåˆ—埠速度時錯誤更新通訊埠設定時錯誤寫入通訊埠時錯誤鎖定 %s (%m) 時失敗。開啟 %s (%m)失敗。開啟 %s (%s) 時失敗。解除鎖定 %s (%m) 時失敗。超出了固定é™åˆ¶é€šç”¨é€šè¨ŠåŸ I/O å•題MacOS PTPCamera æœå‹™åª’é«” %s無錯誤沒有å¯ç”¨çš„錯誤æè¿°è¨˜æ†¶é«”è€—ç›¡å¥‡å¶æª¢æŸ¥éŒ¯èª¤ã€‚åºåˆ—埠 %i䏿”¯æ´åºåˆ—埠這個è£ç½®ä¸æ”¯æ´ %s æ“作通訊埠尚未åˆå§‹åŒ–æä¾›çš„å» å•†æˆ–ç”¢å“ id (0x%xã€0x%x) 䏿­£ç¢ºã€‚è®€å–æˆ–寫入通訊埠逾時USB 大é‡è²¯è—體直接 IOUSB 大é‡è²¯è—體原始 SCSI䏿”¯æ´ USB 介颿„å¤–çš„å¥‡å¶æ‡‰ç­”åºåˆ— 0xff 0x%02xã€‚ä¸æ˜Žçš„éŒ¯èª¤ä¸æ˜Žé‡è…³ %iã€‚ä¸æ˜Žé€šè¨ŠåŸ æœªæŒ‡æ˜Žçš„éŒ¯èª¤ä¸æ”¯æ´çš„æ“ä½œé«˜libhal éŒ¯èª¤ä½Žä¸æ˜Žçš„ libgphoto2 正使用程å¼libgphoto2-2.5.9/libgphoto2_port/gphoto2-port-config.in0000644000175000001440000000207112561423352017774 00000000000000#! /bin/sh # leave these definitions here # they are required for correct interpolation of # @libdir@ and @includedir@ later on prefix="@prefix@" exec_prefix="@exec_prefix@" usage() { cat <&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = libgphoto2_port ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = am_libgphoto2_port_la_OBJECTS = \ libgphoto2_port_la-gphoto2-port-info-list.lo \ libgphoto2_port_la-gphoto2-port-log.lo \ libgphoto2_port_la-gphoto2-port-version.lo \ libgphoto2_port_la-gphoto2-port.lo \ libgphoto2_port_la-gphoto2-port-portability.lo \ libgphoto2_port_la-gphoto2-port-result.lo libgphoto2_port_la_OBJECTS = $(am_libgphoto2_port_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libgphoto2_port_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libgphoto2_port_la_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/auto-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libgphoto2_port_la_SOURCES) DIST_SOURCES = $(libgphoto2_port_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/auto-aux/depcomp \ $(top_srcdir)/auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ IOLIB_LIST = @IOLIB_LIST@ IOLIB_LTLIST = @IOLIB_LTLIST@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBGPHOTO2_PORT_AGE = @LIBGPHOTO2_PORT_AGE@ LIBGPHOTO2_PORT_CURRENT = @LIBGPHOTO2_PORT_CURRENT@ LIBGPHOTO2_PORT_CURRENT_MIN = @LIBGPHOTO2_PORT_CURRENT_MIN@ LIBGPHOTO2_PORT_REVISION = @LIBGPHOTO2_PORT_REVISION@ LIBGPHOTO2_PORT_VERSION_INFO = @LIBGPHOTO2_PORT_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBUSB1_CFLAGS = @LIBUSB1_CFLAGS@ LIBUSB1_CONFIG_PROG = @LIBUSB1_CONFIG_PROG@ LIBUSB1_LIBS = @LIBUSB1_LIBS@ LIBUSB_CFLAGS = @LIBUSB_CFLAGS@ LIBUSB_CONFIG_PROG = @LIBUSB_CONFIG_PROG@ LIBUSB_LIBS = @LIBUSB_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBUSB = @REQUIREMENTS_FOR_LIBUSB@ REQUIREMENTS_FOR_LIBUSB1 = @REQUIREMENTS_FOR_LIBUSB1@ SED = @SED@ SERIAL_LIBS = @SERIAL_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ 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@ iolibdir = @iolibdir@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ lib_LTLIBRARIES = libgphoto2_port.la libgphoto2_port_la_CPPFLAGS = \ -I$(srcdir) -I$(top_srcdir) \ $(AM_CPPFLAGS) $(CPPFLAGS) \ $(LTDLINCL) # Notes about the list of exported symbols: # gp_* also contains internal symbols which are intended for # INTERNAL USE ONLY and should be converted into gpi_* symbols # gp_log_* is the gphoto2 logging API for use by # - libgphoto2_port and iolibs # - libgphoto2 and camlibs # - frontends (optional) # gp_system_* is a portable interface to a few filesystem functions # Used by # - libgphoto2_port and iolibs # - libgphoto2 and camlibs # - the gphoto2 frontend (NOT for other frontends) # Other frontends use their respective toolkit (glib, Qt, ...) # gp_port_* is the "real" gphoto2_port API for use by # - libgphoto2 and camlibs # - frontends # # Yes, this is messy, but we are going to clean this up. libgphoto2_port_la_LDFLAGS = \ -no-undefined \ @VERSIONMAPLDFLAGS@ \ -version-info @LIBGPHOTO2_PORT_VERSION_INFO@ libgphoto2_port_la_LIBADD = \ $(LIBLTDL) \ $(INTLLIBS) # The libtool docs describe these params, but they don't build. # "-dlopen" self \ # "-dlopen" $(top_builddir)/serial/....la \ # "-dlopen" $(top_builddir)/usb/....la libgphoto2_port_la_SOURCES = \ gphoto2-port-info-list.c \ gphoto2-port-info.h \ gphoto2-port-log.c \ gphoto2-port-version.c \ gphoto2-port.c \ gphoto2-port-portability.c \ gphoto2-port-result.c libgphoto2_port_la_DEPENDENCIES = \ $(top_srcdir)/gphoto2/gphoto2-port-version.h \ $(top_srcdir)/gphoto2/gphoto2-port-library.h \ $(srcdir)/libgphoto2_port.ver # Note: If you have problem with this file not being put into # the source tarball correctly at "make dist", this may # be the result of tar not creating archives with >99 # characters of path length. EXTRA_DIST = \ libgphoto2_port.ver all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libgphoto2_port/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu libgphoto2_port/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libgphoto2_port.la: $(libgphoto2_port_la_OBJECTS) $(libgphoto2_port_la_DEPENDENCIES) $(EXTRA_libgphoto2_port_la_DEPENDENCIES) $(AM_V_CCLD)$(libgphoto2_port_la_LINK) -rpath $(libdir) $(libgphoto2_port_la_OBJECTS) $(libgphoto2_port_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_port_la-gphoto2-port-info-list.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_port_la-gphoto2-port-log.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_port_la-gphoto2-port-portability.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_port_la-gphoto2-port-result.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_port_la-gphoto2-port-version.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgphoto2_port_la-gphoto2-port.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libgphoto2_port_la-gphoto2-port-info-list.lo: gphoto2-port-info-list.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_port_la-gphoto2-port-info-list.lo -MD -MP -MF $(DEPDIR)/libgphoto2_port_la-gphoto2-port-info-list.Tpo -c -o libgphoto2_port_la-gphoto2-port-info-list.lo `test -f 'gphoto2-port-info-list.c' || echo '$(srcdir)/'`gphoto2-port-info-list.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_port_la-gphoto2-port-info-list.Tpo $(DEPDIR)/libgphoto2_port_la-gphoto2-port-info-list.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-port-info-list.c' object='libgphoto2_port_la-gphoto2-port-info-list.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_port_la-gphoto2-port-info-list.lo `test -f 'gphoto2-port-info-list.c' || echo '$(srcdir)/'`gphoto2-port-info-list.c libgphoto2_port_la-gphoto2-port-log.lo: gphoto2-port-log.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_port_la-gphoto2-port-log.lo -MD -MP -MF $(DEPDIR)/libgphoto2_port_la-gphoto2-port-log.Tpo -c -o libgphoto2_port_la-gphoto2-port-log.lo `test -f 'gphoto2-port-log.c' || echo '$(srcdir)/'`gphoto2-port-log.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_port_la-gphoto2-port-log.Tpo $(DEPDIR)/libgphoto2_port_la-gphoto2-port-log.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-port-log.c' object='libgphoto2_port_la-gphoto2-port-log.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_port_la-gphoto2-port-log.lo `test -f 'gphoto2-port-log.c' || echo '$(srcdir)/'`gphoto2-port-log.c libgphoto2_port_la-gphoto2-port-version.lo: gphoto2-port-version.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_port_la-gphoto2-port-version.lo -MD -MP -MF $(DEPDIR)/libgphoto2_port_la-gphoto2-port-version.Tpo -c -o libgphoto2_port_la-gphoto2-port-version.lo `test -f 'gphoto2-port-version.c' || echo '$(srcdir)/'`gphoto2-port-version.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_port_la-gphoto2-port-version.Tpo $(DEPDIR)/libgphoto2_port_la-gphoto2-port-version.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-port-version.c' object='libgphoto2_port_la-gphoto2-port-version.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_port_la-gphoto2-port-version.lo `test -f 'gphoto2-port-version.c' || echo '$(srcdir)/'`gphoto2-port-version.c libgphoto2_port_la-gphoto2-port.lo: gphoto2-port.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_port_la-gphoto2-port.lo -MD -MP -MF $(DEPDIR)/libgphoto2_port_la-gphoto2-port.Tpo -c -o libgphoto2_port_la-gphoto2-port.lo `test -f 'gphoto2-port.c' || echo '$(srcdir)/'`gphoto2-port.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_port_la-gphoto2-port.Tpo $(DEPDIR)/libgphoto2_port_la-gphoto2-port.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-port.c' object='libgphoto2_port_la-gphoto2-port.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_port_la-gphoto2-port.lo `test -f 'gphoto2-port.c' || echo '$(srcdir)/'`gphoto2-port.c libgphoto2_port_la-gphoto2-port-portability.lo: gphoto2-port-portability.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_port_la-gphoto2-port-portability.lo -MD -MP -MF $(DEPDIR)/libgphoto2_port_la-gphoto2-port-portability.Tpo -c -o libgphoto2_port_la-gphoto2-port-portability.lo `test -f 'gphoto2-port-portability.c' || echo '$(srcdir)/'`gphoto2-port-portability.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_port_la-gphoto2-port-portability.Tpo $(DEPDIR)/libgphoto2_port_la-gphoto2-port-portability.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-port-portability.c' object='libgphoto2_port_la-gphoto2-port-portability.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_port_la-gphoto2-port-portability.lo `test -f 'gphoto2-port-portability.c' || echo '$(srcdir)/'`gphoto2-port-portability.c libgphoto2_port_la-gphoto2-port-result.lo: gphoto2-port-result.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgphoto2_port_la-gphoto2-port-result.lo -MD -MP -MF $(DEPDIR)/libgphoto2_port_la-gphoto2-port-result.Tpo -c -o libgphoto2_port_la-gphoto2-port-result.lo `test -f 'gphoto2-port-result.c' || echo '$(srcdir)/'`gphoto2-port-result.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgphoto2_port_la-gphoto2-port-result.Tpo $(DEPDIR)/libgphoto2_port_la-gphoto2-port-result.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gphoto2-port-result.c' object='libgphoto2_port_la-gphoto2-port-result.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgphoto2_port_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgphoto2_port_la-gphoto2-port-result.lo `test -f 'gphoto2-port-result.c' || echo '$(srcdir)/'`gphoto2-port-result.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am 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-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 tags-am uninstall uninstall-am uninstall-libLTLIBRARIES .PRECIOUS: Makefile ../libltdl/libltdlc.la: cd ../libltdl && $(MAKE) libltdlc.la # 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. .NOEXPORT: libgphoto2-2.5.9/libgphoto2_port/libgphoto2_port/Makefile.am0000644000175000001440000000400312610415517021002 00000000000000lib_LTLIBRARIES = libgphoto2_port.la libgphoto2_port_la_CPPFLAGS = \ -I$(srcdir) -I$(top_srcdir) \ $(AM_CPPFLAGS) $(CPPFLAGS) \ $(LTDLINCL) # Notes about the list of exported symbols: # gp_* also contains internal symbols which are intended for # INTERNAL USE ONLY and should be converted into gpi_* symbols # gp_log_* is the gphoto2 logging API for use by # - libgphoto2_port and iolibs # - libgphoto2 and camlibs # - frontends (optional) # gp_system_* is a portable interface to a few filesystem functions # Used by # - libgphoto2_port and iolibs # - libgphoto2 and camlibs # - the gphoto2 frontend (NOT for other frontends) # Other frontends use their respective toolkit (glib, Qt, ...) # gp_port_* is the "real" gphoto2_port API for use by # - libgphoto2 and camlibs # - frontends # # Yes, this is messy, but we are going to clean this up. libgphoto2_port_la_LDFLAGS = \ -no-undefined \ @VERSIONMAPLDFLAGS@ \ -version-info @LIBGPHOTO2_PORT_VERSION_INFO@ libgphoto2_port_la_LIBADD = \ $(LIBLTDL) \ $(INTLLIBS) # The libtool docs describe these params, but they don't build. # "-dlopen" self \ # "-dlopen" $(top_builddir)/serial/....la \ # "-dlopen" $(top_builddir)/usb/....la libgphoto2_port_la_SOURCES = \ gphoto2-port-info-list.c \ gphoto2-port-info.h \ gphoto2-port-log.c \ gphoto2-port-version.c \ gphoto2-port.c \ gphoto2-port-portability.c \ gphoto2-port-result.c libgphoto2_port_la_DEPENDENCIES = \ $(top_srcdir)/gphoto2/gphoto2-port-version.h \ $(top_srcdir)/gphoto2/gphoto2-port-library.h \ $(srcdir)/libgphoto2_port.ver # Note: If you have problem with this file not being put into # the source tarball correctly at "make dist", this may # be the result of tar not creating archives with >99 # characters of path length. EXTRA_DIST = \ libgphoto2_port.ver ../libltdl/libltdlc.la: cd ../libltdl && $(MAKE) libltdlc.la libgphoto2-2.5.9/libgphoto2_port/libgphoto2_port/gphoto2-port-log.c0000644000175000001440000003126712610415620022244 00000000000000/** \file * * \author Copyright 2001 Lutz Mueller * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) #endif #ifndef DISABLE_DEBUGGING /** * \brief Internal logging function entry. * * Internal structure to remember the logging functions. * Use gp_log_add_func() and gp_log_remove_func() to access it. */ typedef struct { unsigned int id; /**< Internal id */ GPLogLevel level; /**< Internal loglevel */ GPLogFunc func; /**< Internal function pointer to call */ void *data; /**< Private data supplied by caller */ } LogFunc; static LogFunc *log_funcs = NULL; static unsigned int log_funcs_count = 0; /** * \brief Add a function to get logging information * * \param level the maximum level of logging it will get, up to and including the passed value * \param func a #GPLogFunc * \param data data * * Adds a log function that will be called for each log message that is flagged * with a log level that appears in given log level. This function returns * an id that you can use for removing the log function again (using * #gp_log_remove_func). * * \return an id or a gphoto2 error code **/ int gp_log_add_func (GPLogLevel level, GPLogFunc func, void *data) { C_PARAMS (func); C_MEM (log_funcs = realloc (log_funcs, sizeof (LogFunc) * (log_funcs_count + 1))); log_funcs_count++; log_funcs[log_funcs_count - 1].id = log_funcs_count; log_funcs[log_funcs_count - 1].level = level; log_funcs[log_funcs_count - 1].func = func; log_funcs[log_funcs_count - 1].data = data; return (log_funcs_count); } char* gpi_vsnprintf (const char* format, va_list args) { va_list xargs; int strsize; char *str; #ifdef HAVE_VA_COPY va_copy (xargs, args); #else /* according to 'the web', the only interesting compiler without va_copy is MSVC * and there a simple assignment is the way to go */ xargs = args; #endif /* query the size necessary for the string, add the terminating '\0' */ strsize = vsnprintf (NULL, 0, format, xargs) + 1; va_end (xargs); str = malloc(strsize); if (!str) return NULL; /* actually print the string into the buffer */ vsnprintf (str, strsize, format, args); return str; } /** * \brief Remove a logging receiving function * \param id an id (return value of #gp_log_add_func) * * Removes the log function with given id. * * \return a gphoto2 error code **/ int gp_log_remove_func (int id) { C_PARAMS (id > 0 && id <= log_funcs_count); memmove (log_funcs + id - 1, log_funcs + id, log_funcs_count - id); log_funcs_count--; return (GP_OK); } /** * Width of offset field in characters. Note that HEXDUMP_COMPLETE_LINE * needs to be changed when this value is changed. */ #define HEXDUMP_OFFSET_WIDTH 4 /** * Distance between offset, hexdump and ascii blocks. Note that * HEXDUMP_COMPLETE_LINE needs to be changed when this value is changed. */ #define HEXDUMP_BLOCK_DISTANCE 2 /** Initial value for x "pointer" (for hexdump) */ #define HEXDUMP_INIT_X (HEXDUMP_OFFSET_WIDTH + HEXDUMP_BLOCK_DISTANCE) /** Initial value for y "pointer" (for ascii values) */ #define HEXDUMP_INIT_Y (HEXDUMP_INIT_X + 3 * 16 - 1 + HEXDUMP_BLOCK_DISTANCE) /** Used to switch to next line */ #define HEXDUMP_LINE_WIDTH (HEXDUMP_INIT_Y + 16) /** Used to put the '-' character in the middle of the hexdumps */ #define HEXDUMP_MIDDLE (HEXDUMP_INIT_X + 3 * 8 - 1) /** * We are lazy and do our typing only once. Please note that you have * to add/remove some lines when increasing/decreasing the values of * HEXDUMP_BLOCK_DISTANCE and/or HEXDUMP_OFFSET_WIDTH. */ #define HEXDUMP_COMPLETE_LINE {\ curline[HEXDUMP_OFFSET_WIDTH - 4] = hexchars[(index >> 12) & 0xf]; \ curline[HEXDUMP_OFFSET_WIDTH - 3] = hexchars[(index >> 8) & 0xf]; \ curline[HEXDUMP_OFFSET_WIDTH - 2] = hexchars[(index >> 4) & 0xf]; \ curline[HEXDUMP_OFFSET_WIDTH - 1] = '0'; \ curline[HEXDUMP_OFFSET_WIDTH + 0] = ' '; \ curline[HEXDUMP_OFFSET_WIDTH + 1] = ' '; \ curline[HEXDUMP_MIDDLE] = '-'; \ curline[HEXDUMP_INIT_Y-2] = ' '; \ curline[HEXDUMP_INIT_Y-1] = ' '; \ curline[HEXDUMP_LINE_WIDTH] = '\n'; \ curline = curline + (HEXDUMP_LINE_WIDTH + 1);} /** * \brief Log data * \brief domain the domain * \brief data the data to be logged * \brief size the size of the data * * Takes the data and creates a formatted hexdump string. If you would like * to log text messages, use #gp_log instead. **/ /* coverity[-tainted_sink] */ void gp_log_data (const char *domain, const char *data, unsigned int size, const char *format, ...) { va_list args; static const char hexchars[16] = "0123456789abcdef"; char *curline, *result = 0, *msg = 0; int x = HEXDUMP_INIT_X; int y = HEXDUMP_INIT_Y; unsigned int index, original_size = size; unsigned char value; va_start (args, format); msg = gpi_vsnprintf(format, args); va_end (args); if (!msg) { GP_LOG_E ("Malloc for expanding format string '%s' failed.", format); goto exit; } if (!data) { gp_log (GP_LOG_DATA, domain, "%s (no hexdump, NULL buffer)", msg); goto exit; } if (!size) { gp_log (GP_LOG_DATA, domain, "%s (empty hexdump of empty buffer)", msg); goto exit; } if (size > 1024*1024) { /* Does not make sense for 200 MB movies */ size = 1024*1024; } curline = result = malloc ((HEXDUMP_LINE_WIDTH+1)*(((size-1)/16)+1)+1); if (!result) { GP_LOG_E ("Malloc for %i bytes failed", (HEXDUMP_LINE_WIDTH+1)*(((size-1)/16)+1)+1); goto exit; } for (index = 0; index < size; ++index) { value = (unsigned char)data[index]; curline[x] = hexchars[value >> 4]; curline[x+1] = hexchars[value & 0xf]; curline[x+2] = ' '; curline[y++] = ((value>=32)&&(value<127))?value:'.'; x += 3; if ((index & 0xf) == 0xf) { /* end of line */ x = HEXDUMP_INIT_X; y = HEXDUMP_INIT_Y; HEXDUMP_COMPLETE_LINE; } } if ((index & 0xf) != 0) { /* not at end of line yet? */ /* if so, complete this line */ while (y < HEXDUMP_INIT_Y + 16) { curline[x+0] = ' '; curline[x+1] = ' '; curline[x+2] = ' '; curline[y++] = ' '; x += 3; } HEXDUMP_COMPLETE_LINE; } curline[0] = '\0'; if (size == original_size) gp_log (GP_LOG_DATA, domain, "%s (hexdump of %d bytes)\n%s", msg, size, result); else gp_log (GP_LOG_DATA, domain, "%s (hexdump of the first %d of %d bytes)\n%s", msg, size, original_size, result); exit: free (msg); free (result); } #undef HEXDUMP_COMPLETE_LINE #undef HEXDUMP_MIDDLE #undef HEXDUMP_LINE_WIDTH #undef HEXDUMP_INIT_Y #undef HEXDUMP_INIT_X #undef HEXDUMP_BLOCK_DISTANCE #undef HEXDUMP_OFFSET_WIDTH /** * \brief Log a debug or error message with va_list * \param level gphoto2 log level * \param domain the domain * \param format the format * \param args the va_list corresponding to format * * Logs a message at the given log level. You would normally use this * function to log as yet unformatted strings. **/ void gp_logv (GPLogLevel level, const char *domain, const char *format, va_list args) { unsigned int i; char *str = 0; if (!log_funcs_count) return; str = gpi_vsnprintf(format, args); if (!str) { GP_LOG_E ("Malloc for expanding format string '%s' failed.", format); return; } for (i = 0; i < log_funcs_count; i++) if (log_funcs[i].level >= level) log_funcs[i].func (level, domain, str, log_funcs[i].data); free (str); } /** * \brief Log a debug or error message * \param level gphoto2 log level * \param domain the log domain * \param format a printf style format string * \param ... the variable argumentlist for above format string * * Logs a message at the given log level. You would normally use this * function to log general debug output in a printf way. **/ void gp_log (GPLogLevel level, const char *domain, const char *format, ...) { va_list args; va_start (args, format); gp_logv (level, domain, format, args); va_end (args); } void gp_log_with_source_location(GPLogLevel level, const char *file, int line, const char *func, const char *format, ...) { va_list args; char domain[100]; /* Only display filename without any path/directory part */ file = strrchr(file, '/') ? strrchr(file, '/') + 1 : file; snprintf(domain, sizeof(domain), "%s [%s:%d]", func, file, line); va_start (args, format); gp_logv (level, domain, format, args); va_end (args); } #else /* DISABLE_DEBUGGING */ /* * Even if debugging is disabled, we must keep stubs to these functions * around so that programs dynamically linked to this library will still run. */ /* Remove these macros so we can compile functions with these names */ #ifdef gp_log_add_func #undef gp_log_add_func #endif #ifdef gp_log_remove_func #undef gp_log_remove_func #endif #ifdef gp_log_data #undef gp_log_data #endif #ifdef gp_logv #undef gp_logv #endif #ifdef gp_log #undef gp_log #endif #ifdef gp_log_with_source_location #undef gp_log_with_source_location #endif int gp_log_add_func (GPLogLevel level, GPLogFunc func, void *data) { return 0; } int gp_log_remove_func (int id) { return 0; } void gp_log_data (const char *domain, const char *data, unsigned int size, const char *format, ...) { } void gp_logv (GPLogLevel level, const char *domain, const char *format, va_list args) { } void gp_log (GPLogLevel level, const char *domain, const char *format, ...) { } void gp_log_with_source_location(GPLogLevel level, const char *file, int line, const char *func, const char *format, ...) { } #endif /* DISABLE_DEBUGGING */ #ifdef _GPHOTO2_INTERNAL_CODE /** * \brief (Internal) translate a enumeration code to a string */ const char * gpi_enum_to_string(unsigned int _enum, const StringFlagItem *map) { int i; for (i=0; map[i].str != NULL; i++) { if (_enum == map[i].flag) { return(map[i].str); break; } } return NULL; } /** * \brief (Internal) translate a string to an enumeration code */ int gpi_string_to_enum(const char *str, unsigned int *result, const StringFlagItem *map) { int i; for (i=0; map[i].str != NULL; i++) { if (0==strcmp(map[i].str, str)) { (*result) = map[i].flag; return 0; } } return 1; } void gpi_flags_to_string_list(unsigned int flags, const StringFlagItem *map, string_item_func func, void *data) { int i; for (i=0; map[i].str != NULL; i++) { if ((flags == 0) && (map[i].flag == 0)) { func(map[i].str, data); break; } else if (0 != (flags & map[i].flag)) { func(map[i].str, data); } } } unsigned int gpi_string_to_flag(const char *str, const StringFlagItem *map) { int i; for (i=0; map[i].str != NULL; i++) { if (0==strcmp(map[i].str, str)) { return map[i].flag; } } return 0; } int gpi_string_or_to_flags(const char *str, unsigned int *flags, const StringFlagItem *map) { int i; int found = 0; for (i=0; map[i].str != NULL; i++) { if (0==strcmp(map[i].str, str)) { (*flags) |= map[i].flag; found = 1; } } if (found) { return 0; } else { return 1; } } unsigned int gpi_string_list_to_flags(const char *str[], const StringFlagItem *map) { int i; unsigned int flags = 0; for (i=0; str[i] != NULL; i++) { flags |= gpi_string_to_flag(str[i], map); } return flags; } #endif /* _GPHOTO2_INTERNAL_CODE */ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/libgphoto2_port/libgphoto2_port/gphoto2-port-version.c0000644000175000001440000000541212610415536023147 00000000000000/** \file * * Copyright 2002 Hans Ulrich Niedermann #include const char **gp_port_library_version(GPVersionVerbosity verbose) { /* we could also compute/parse the short strings from the long ones, but the current method is easier for now :-) */ static const char *shrt[] = { PACKAGE_VERSION, #ifdef HAVE_CC HAVE_CC, #else "unknown cc", #endif #ifdef HAVE_LTDL "ltdl", #else "no ltdl", #endif #ifdef HAVE_LIBUSB "USB", #else "no USB", #endif #ifdef HAVE_SERIAL "serial " #ifdef HAVE_RESMGR "resmgr locking", #elif HAVE_TTYLOCK "ttylock locking", #elif HAVE_LOCKDEV "lockdev locking", #else "without locking", #endif #else "no serial", #endif NULL }; static const char *verb[] = { PACKAGE_VERSION, #ifdef HAVE_CC HAVE_CC " (C compiler used)", #else "unknown (C compiler used)", #endif #ifdef HAVE_LTDL "ltdl (for portable loading of camlibs)", #else "no ltdl (for portable loading of camlibs)", #endif #ifdef HAVE_LIBUSB_WIN32 "USB (libusb-win32, for USB cameras)", #elif defined(HAVE_LIBUSB1) "USB (libusb1, for USB cameras)", #elif defined(HAVE_LIBUSB) "USB (libusb0, for USB cameras)", #else "no USB (for USB cameras)", #endif #ifdef HAVE_SERIAL "serial (for serial cameras)", #else "no serial (for serial cameras)", #endif #ifdef HAVE_RESMGR "resmgr (serial port access and locking)", #else "no resmgr (serial port access and locking)", #endif #ifdef HAVE_TTYLOCK "ttylock (serial port locking)", #else "no ttylock (serial port locking)", #endif #ifdef HAVE_LOCKDEV "lockdev (serial port locking)", #else "no lockdev (serial port locking)", #endif NULL }; return((verbose == GP_VERSION_VERBOSE)?verb:shrt); } /* static void foobar() { GPVersionFunc gp_port_lib_ver_func = NULL; gp_port_lib_ver_func = gp_port_library_version; gp_port_lib_ver_func(GP_VERSION_VERBOSE); } */ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/libgphoto2_port/libgphoto2_port/gphoto2-port.c0000644000175000001440000007404412610415620021465 00000000000000/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ /** \file * * \author Copyright 2001 Lutz Mueller * \author Copyright 1999 Scott Fritzinger * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #include #include "gphoto2-port-info.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define _(String) (String) # define N_(String) (String) # define ngettext(String1,String2,Count) ((Count==1)?String1:String2) #endif #define CHECK_RESULT(result) {int r=(result); if (r<0) return (r);} #define CHECK_SUPP(p,t,o) {if (!(o)) {gp_port_set_error ((p), _("The operation '%s' is not supported by this device"), (t)); return (GP_ERROR_NOT_SUPPORTED);}} #define CHECK_INIT(p) {if (!(p)->pc->ops) {gp_port_set_error ((p), _("The port has not yet been initialized")); return (GP_ERROR_BAD_PARAMETERS);}} #define LOG_DATA(DATA, SIZE, EXPECTED, MSG_PRE, MSG_POST, ...) \ if (SIZE != EXPECTED) \ GP_LOG_DATA (DATA, SIZE, MSG_PRE " %i = 0x%x out of %i bytes " MSG_POST, SIZE, SIZE, EXPECTED, ##__VA_ARGS__); \ else \ GP_LOG_DATA (DATA, SIZE, MSG_PRE " %i = 0x%x bytes " MSG_POST, SIZE, SIZE, ##__VA_ARGS__) /** * \brief Internal private libgphoto2_port data. * This structure contains private data. **/ struct _GPPortPrivateCore { char error[2048]; /**< Internal kept error message. */ struct _GPPortInfo info; /**< Internal port information of this port. */ GPPortOperations *ops; /**< Internal port operations. */ lt_dlhandle lh; /**< Internal libtool library handle. */ }; /** * \brief Create new GPPort * * Allocate and initialize the memory for a new #GPPort. * * After you called this function, * you probably want to call #gp_port_set_info in order to make the newly * created port functional. * * \param port Pointer the #GPPort* pointer * \return a gphoto2 error code **/ int gp_port_new (GPPort **port) { C_PARAMS (port); GP_LOG_D ("Creating new device..."); C_MEM (*port = calloc (1, sizeof (GPPort))); (*port)->pc = calloc (1, sizeof (GPPortPrivateCore)); if (!(*port)->pc) { gp_port_free (*port); return (GP_ERROR_NO_MEMORY); } return (GP_OK); } static int gp_port_init (GPPort *port) { C_PARAMS (port); CHECK_INIT (port); if (port->pc->ops->init) CHECK_RESULT (port->pc->ops->init (port)); return (GP_OK); } static int gp_port_exit (GPPort *port) { C_PARAMS (port); CHECK_INIT (port); if (port->pc->ops->exit) CHECK_RESULT (port->pc->ops->exit (port)); return (GP_OK); } /** * \brief Configure a port * * Makes a port functional by passing in the necessary path * information (from the serial:/dev/ttyS0 or similar variables). * After calling this function, you can access the port using for * example gp_port_open(). * * \param port a GPPort * \param info the GPPortInfo to set * * \return a gphoto2 error code **/ int gp_port_set_info (GPPort *port, GPPortInfo info) { int ret; GPPortLibraryOperations ops_func; C_PARAMS (port); free (port->pc->info.name); C_MEM (port->pc->info.name = strdup (info->name)); free (port->pc->info.path); C_MEM (port->pc->info.path = strdup (info->path)); port->pc->info.type = info->type; free (port->pc->info.library_filename); C_MEM (port->pc->info.library_filename = strdup (info->library_filename)); port->type = info->type; /* Clean up */ if (port->pc->ops) { gp_port_exit (port); free (port->pc->ops); port->pc->ops = NULL; } if (port->pc->lh) { #if !defined(VALGRIND) lt_dlclose (port->pc->lh); lt_dlexit (); #endif } lt_dlinit (); port->pc->lh = lt_dlopenext (info->library_filename); if (!port->pc->lh) { GP_LOG_E ("Could not load '%s' ('%s').", info->library_filename, lt_dlerror ()); lt_dlexit (); return (GP_ERROR_LIBRARY); } /* Load the operations */ ops_func = lt_dlsym (port->pc->lh, "gp_port_library_operations"); if (!ops_func) { GP_LOG_E ("Could not find 'gp_port_library_operations' in '%s' ('%s')", info->library_filename, lt_dlerror ()); lt_dlclose (port->pc->lh); lt_dlexit (); port->pc->lh = NULL; return (GP_ERROR_LIBRARY); } port->pc->ops = ops_func (); gp_port_init (port); /* Initialize the settings to some default ones */ switch (info->type) { case GP_PORT_SERIAL: port->settings.serial.speed = 0; port->settings.serial.bits = 8; port->settings.serial.parity = 0; port->settings.serial.stopbits = 1; gp_port_set_timeout (port, 500); break; case GP_PORT_USB: strncpy (port->settings.usb.port, info->path, sizeof (port->settings.usb.port)); port->settings.usb.inep = -1; port->settings.usb.outep = -1; port->settings.usb.config = -1; port->settings.usb.interface = 0; port->settings.usb.altsetting = -1; gp_port_set_timeout (port, 5000); break; case GP_PORT_USB_DISK_DIRECT: snprintf(port->settings.usbdiskdirect.path, sizeof(port->settings.usbdiskdirect.path), "%s", strchr(info->path, ':') + 1); break; case GP_PORT_USB_SCSI: snprintf(port->settings.usbscsi.path, sizeof(port->settings.usbscsi.path), "%s", strchr(info->path, ':') + 1); break; default: /* Nothing in here */ break; } ret = gp_port_set_settings (port, port->settings); if (ret != GP_ERROR_NOT_SUPPORTED) CHECK_RESULT (ret); return GP_OK; } /** * \brief Retreives information about the port. * * Retrieves the informations set by gp_port_set_info(). * * \param port a GPPort * \param info GPPortInfo * \return a gphoto2 error code **/ int gp_port_get_info (GPPort *port, GPPortInfo *info) { C_PARAMS (port && info); *info = &port->pc->info; return (GP_OK); } /** * \brief Open a port. * \param port a #GPPort * * Opens a port which should have been created with #gp_port_new and * configured with #gp_port_set_info and #gp_port_set_settings * * \return a gphoto2 error code **/ int gp_port_open (GPPort *port) { C_PARAMS (port); CHECK_INIT (port); GP_LOG_D ("Opening %s port...", port->type == GP_PORT_SERIAL ? "SERIAL" : (port->type == GP_PORT_USB ? "USB" : "")); CHECK_SUPP (port, "open", port->pc->ops->open); CHECK_RESULT (port->pc->ops->open (port)); return GP_OK; } /** * \brief Close a port. * \param port a #GPPort * * Closes a port temporarily. It can afterwards be reopened using * #gp_port_open. * * \return a gphoto2 error code **/ int gp_port_close (GPPort *port) { GP_LOG_D ("Closing port..."); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "close", port->pc->ops->close); CHECK_RESULT (port->pc->ops->close(port)); return (GP_OK); } /** * \brief Reset a port. * \param port a #GPPort * * Resets a port. Device will likely reconnect and appear under a new id. * * \return a gphoto2 error code **/ int gp_port_reset (GPPort *port) { GP_LOG_D ("Resetting port..."); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "reset", port->pc->ops->reset); CHECK_RESULT (port->pc->ops->reset(port)); return (GP_OK); } /** * \brief Free the port structure * \param port a #GPPort * * Closes the port and frees the memory. * * \return a gphoto2 error code **/ int gp_port_free (GPPort *port) { GP_LOG_D ("Freeing port..."); C_PARAMS (port); if (port->pc) { if (port->pc->ops) { /* We don't care for return values */ gp_port_close (port); gp_port_exit (port); free (port->pc->ops); port->pc->ops = NULL; } if (port->pc->lh) { #if !defined(VALGRIND) lt_dlclose (port->pc->lh); lt_dlexit (); #endif port->pc->lh = NULL; } free (port->pc->info.name); free (port->pc->info.path); free (port->pc->info.library_filename); free (port->pc); port->pc = NULL; } free (port); return GP_OK; } /** * \brief Writes a specified amount of data to a port. * \param port a #GPPort * \param data the data to write to the port * \param size the number of bytes to write to the port * * Writes data to the port. On non-serial ports the amount of data * written is returned (and not just GP_OK). * * \return a negative gphoto2 error code or the amount of data written. **/ int gp_port_write (GPPort *port, const char *data, int size) { int retval; gp_log (GP_LOG_DATA, __func__, "Writing %i = 0x%x bytes to port...", size, size); C_PARAMS (port && data); CHECK_INIT (port); /* Check if we wrote all bytes */ CHECK_SUPP (port, "write", port->pc->ops->write); retval = port->pc->ops->write (port, data, size); if (retval < 0) { GP_LOG_E ("Writing %i = 0x%x bytes to port failed: %s (%d)", size, size, gp_port_result_as_string(retval), retval); return retval; } LOG_DATA (data, retval, size, "Wrote ", "to port:"); return (retval); } /** * \brief Read data from port * * \param port a #GPPort * \param data a pointer to an allocated buffer * \param size the number of bytes that should be read * * Reads a specified number of bytes from the port into the supplied buffer. * It returns the number of bytes read or a negative error code. * * \return a gphoto2 error code or the amount of data read **/ int gp_port_read (GPPort *port, char *data, int size) { int retval; gp_log (GP_LOG_DATA, __func__, "Reading %i = 0x%x bytes from port...", size, size); C_PARAMS (port); CHECK_INIT (port); /* Check if we read as many bytes as expected */ CHECK_SUPP (port, "read", port->pc->ops->read); retval = port->pc->ops->read (port, data, size); if (retval < 0) { GP_LOG_E ("Reading %i = 0x%x bytes from port failed: %s (%d)", size, size, gp_port_result_as_string(retval), retval); return retval; } LOG_DATA (data, retval, size, "Read ", "from port:"); return (retval); } /** * \brief Check for intterupt. * * \param port a GPPort * \param data a pointer to an allocated buffer * \param size the number of bytes that should be read * * Reads a specified number of bytes from the interrupt endpoint * into the supplied buffer. * Function waits port->timeout miliseconds for data on interrupt endpoint. * * \return a gphoto2 error code **/ int gp_port_check_int (GPPort *port, char *data, int size) { int retval; gp_log (GP_LOG_DATA, __func__, "Reading %i = 0x%x bytes from interrupt endpoint...", size, size); C_PARAMS (port); CHECK_INIT (port); /* Check if we read as many bytes as expected */ CHECK_SUPP (port, "check_int", port->pc->ops->check_int); retval = port->pc->ops->check_int (port, data, size, port->timeout); CHECK_RESULT (retval); LOG_DATA (data, retval, size, "Read ", "from interrupt endpoint:"); return (retval); } /** The timeout in milliseconds for fast interrupt reads. */ #define FAST_TIMEOUT 50 /** * \brief Check for interrupt without wait * \param port a GPPort * \param data a pointer to an allocated buffer * \param size the number of bytes that should be read * * Reads a specified number of bytes from the inerrupt endpoint * into the supplied buffer. * Function waits 50 miliseconds for data on interrupt endpoint. * * \return a gphoto2 error code **/ int gp_port_check_int_fast (GPPort *port, char *data, int size) { int retval; gp_log (GP_LOG_DATA, __func__, "Reading %i = 0x%x bytes from interrupt endpoint...", size, size); C_PARAMS (port); CHECK_INIT (port); /* Check if we read as many bytes as expected */ CHECK_SUPP (port, "check_int", port->pc->ops->check_int); retval = port->pc->ops->check_int (port, data, size, FAST_TIMEOUT); CHECK_RESULT (retval); #ifdef IGNORE_EMPTY_INTR_READS /* For Canon cameras, we will make lots of reads that will return zero length. Don't bother to log them as errors. */ if (retval != 0 ) #endif LOG_DATA (data, retval, size, "Read ", "from interrupt endpoint (fast):"); return (retval); } /** * \brief Set timeout of port * \param port a #GPPort * \param timeout the timeout * * Sets the timeout of a port. #gp_port_read will wait timeout milliseconds * for data. If no data will be received in that period, %GP_ERROR_TIMEOUT * will be returned. * * \return a gphoto2 error code **/ int gp_port_set_timeout (GPPort *port, int timeout) { C_PARAMS (port); GP_LOG_D ("Setting port timeout to %i milliseconds.", timeout); port->timeout = timeout; return GP_OK; } /** Deprecated */ int gp_port_timeout_set (GPPort *, int); int gp_port_timeout_set (GPPort *port, int timeout) { return (gp_port_set_timeout (port, timeout)); } /** Deprecated */ int gp_port_timeout_get (GPPort *, int *); int gp_port_timeout_get (GPPort *port, int *timeout) { return (gp_port_get_timeout (port, timeout)); } /** * \brief Get the current port timeout. * \param port a #GPPort * \param timeout pointer to timeout * * Retreives the current timeout of the port. * * \return a gphoto2 error code **/ int gp_port_get_timeout (GPPort *port, int *timeout) { C_PARAMS (port); GP_LOG_D ("Current port timeout is %i milliseconds.", port->timeout); *timeout = port->timeout; return GP_OK; } /** * \brief Set port settings * \param port a #GPPort * \param settings the #GPPortSettings to be set * * Adjusts the settings of a port. You should always call * #gp_port_get_settings, adjust the values depending on the type of the port, * and then call #gp_port_set_settings. * * \return a gphoto2 error code **/ int gp_port_set_settings (GPPort *port, GPPortSettings settings) { GP_LOG_D ("Setting settings..."); C_PARAMS (port); CHECK_INIT (port); /* * We copy the settings to settings_pending and call update on the * port. */ memcpy (&port->settings_pending, &settings, sizeof (port->settings_pending)); CHECK_SUPP (port, "update", port->pc->ops->update); CHECK_RESULT (port->pc->ops->update (port)); return (GP_OK); } /** Deprecated */ int gp_port_settings_get (GPPort *, GPPortSettings *); int gp_port_settings_get (GPPort *port, GPPortSettings *settings) { return (gp_port_get_settings (port, settings)); } /** Deprecated */ int gp_port_settings_set (GPPort *, GPPortSettings); int gp_port_settings_set (GPPort *port, GPPortSettings settings) { return (gp_port_set_settings (port, settings)); } /** * \brief Get the current port settings. * \param port a #GPPort * \param settings pointer to the retrieved settings * * Retreives the current settings of a port. * * \return a gphoto2 error code **/ int gp_port_get_settings (GPPort *port, GPPortSettings *settings) { C_PARAMS (port); memcpy (settings, &(port->settings), sizeof (gp_port_settings)); return GP_OK; } /** * \brief Get setting of specific serial PIN * * \param port a GPPort * \param pin the serial pin to be retrieved * \param level the setting of the pin * * \return a gphoto2 error code */ int gp_port_get_pin (GPPort *port, GPPin pin, GPLevel *level) { GP_LOG_D ("Getting level of pin %i...", pin); C_PARAMS (port && level); CHECK_INIT (port); CHECK_SUPP (port, "get_pin", port->pc->ops->get_pin); CHECK_RESULT (port->pc->ops->get_pin (port, pin, level)); GP_LOG_D ("Level of pin %i: %i", pin, *level); return (GP_OK); } static struct { GPPin pin; unsigned char number; const char *description_short; const char *description_long; } PinTable[] = { /* we do not translate these technical terms ... for now */ {GP_PIN_RTS , 7, "RTS" , "Request To Send" }, {GP_PIN_DTR , 4, "DTR" , "Data Terminal Ready"}, {GP_PIN_CTS , 8, "CTS" , "Clear To Send" }, {GP_PIN_DSR , 6, "DSR" , "Data Set Ready" }, {GP_PIN_CD , 1, "CD" , "Carrier Detect" }, {GP_PIN_RING, 9, "RING", "Ring Indicator" }, {0, 0, NULL, NULL} }; static struct { GPLevel level; const char *description; } LevelTable[] = { {GP_LEVEL_LOW, N_("low")}, {GP_LEVEL_HIGH, N_("high")}, {0, NULL} }; /** * \brief Set specified serial PIN to value * * \param port a GPPort * \param pin the serial pin to be retrieved * \param level the setting of the pin * * Pulls the specified pin of a serial port to the specified level. * * \return a gphoto2 error code */ int gp_port_set_pin (GPPort *port, GPPin pin, GPLevel level) { unsigned int i, j; for (i = 0; PinTable[i].description_short; i++) if (PinTable[i].pin == pin) break; for (j = 0; LevelTable[j].description; j++) if (LevelTable[j].level == level) break; GP_LOG_D ("Setting pin %i (%s: '%s') to '%s'...", PinTable[i].number, PinTable[i].description_short, PinTable[i].description_long, _(LevelTable[j].description)); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "set_pin", port->pc->ops->set_pin); CHECK_RESULT (port->pc->ops->set_pin (port, pin, level)); return (GP_OK); } /** * \brief Send a break over a serial port * * \param port a GPPort * \param duration duration of break in milliseconds * * Sends a break with the specified duration in milliseconds. * * \return a gphoto2 error code */ int gp_port_send_break (GPPort *port, int duration) { GP_LOG_D ("Sending break (%i milliseconds)...", duration); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "send_break", port->pc->ops->send_break); CHECK_RESULT (port->pc->ops->send_break (port, duration)); return (GP_OK); } /** * \brief Flush data on serial port * * \param port a GPPort * \param direction the direction of the flush * * Flushes the serial output or input (depending on direction) * of the serial port. * * \return a gphoto2 error code */ int gp_port_flush (GPPort *port, int direction) { GP_LOG_D ("Flushing port..."); C_PARAMS (port); CHECK_SUPP (port, "flush", port->pc->ops->flush); CHECK_RESULT (port->pc->ops->flush (port, direction)); return (GP_OK); } /* USB-specific functions */ /* ------------------------------------------------------------------ */ /** * \brief Find USB device by vendor/product * * \param port a GPPort * \param idvendor USB vendor id * \param idproduct USB product id * * Find the USB device with the specified vendor:product id pair. * * \return a gphoto2 error code */ int gp_port_usb_find_device (GPPort *port, int idvendor, int idproduct) { C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "find_device", port->pc->ops->find_device); CHECK_RESULT (port->pc->ops->find_device (port, idvendor, idproduct)); return (GP_OK); } /** * \brief Find USB device by interface class * * \param port a GPPort * \param mainclass the USB interface class * \param subclass the USB interface subclass * \param protocol the USB interface protocol * * Find the USB device with the specified vendor:product id pair. * * \return a gphoto2 error code */ int gp_port_usb_find_device_by_class (GPPort *port, int mainclass, int subclass, int protocol) { C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "find_device_by_class", port->pc->ops->find_device_by_class); CHECK_RESULT (port->pc->ops->find_device_by_class (port, mainclass, subclass, protocol)); return (GP_OK); } /** * \brief Clear USB endpoint HALT condition * * \param port a GPPort * \param ep endpoint to clear HALT * * Clears the HALT (stall?) endpoint condition of the specified endpoint. * * \return a gphoto2 error code */ int gp_port_usb_clear_halt (GPPort *port, int ep) { GP_LOG_D ("Clear USB halt..."); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "clear_halt", port->pc->ops->clear_halt); CHECK_RESULT (port->pc->ops->clear_halt (port, ep)); return (GP_OK); } /** * \brief Send a USB control message with output data * * \param port a GPPort * \param request control request code * \param value control value * \param index control index * \param bytes pointer to data * \param size size of the data * * Sends a specific USB control command and write associated data. * * \return a gphoto2 error code */ int gp_port_usb_msg_write (GPPort *port, int request, int value, int index, char *bytes, int size) { int retval; GP_LOG_DATA (bytes, size, "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x):", request, value, index, size, size); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "msg_write", port->pc->ops->msg_write); retval = port->pc->ops->msg_write(port, request, value, index, bytes, size); CHECK_RESULT (retval); return (retval); } /** * \brief Send a USB control message with input data * * \param port a GPPort * \param request control request code * \param value control value * \param index control index * \param bytes pointer to data * \param size size of the data * * Sends a specific USB interface control command and read associated data. * * \return a gphoto2 error code */ int gp_port_usb_msg_read (GPPort *port, int request, int value, int index, char *bytes, int size) { int retval; gp_log (GP_LOG_DATA, __func__, "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)...", request, value, index, size, size); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "msg_read", port->pc->ops->msg_read); retval = port->pc->ops->msg_read (port, request, value, index, bytes, size); CHECK_RESULT (retval); LOG_DATA (bytes, retval, size, "Read", "USB message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)", request, value, index, size, size); return (retval); } /* * The next two functions handle the request types 0x41 for write * and 0xc1 for read. */ /** * \brief Send a USB interface control message with output data * * \param port a GPPort * \param request control request code * \param value control value * \param index control index * \param bytes pointer to data * \param size size of the data * * Sends a specific USB interface control command and write associated data. * * \return a gphoto2 error code */ int gp_port_usb_msg_interface_write (GPPort *port, int request, int value, int index, char *bytes, int size) { int retval; GP_LOG_DATA (bytes, size, "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)...", request, value, index, size, size); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "msg_build", port->pc->ops->msg_interface_write); retval = port->pc->ops->msg_interface_write(port, request, value, index, bytes, size); CHECK_RESULT (retval); return (retval); } /** * \brief Send a USB interface control message with input data * * \param port a GPPort * \param request control request code * \param value control value * \param index control index * \param bytes pointer to data * \param size size of the data * * Sends a specific USB control command and read associated data. * * \return a gphoto2 error code */ int gp_port_usb_msg_interface_read (GPPort *port, int request, int value, int index, char *bytes, int size) { int retval; gp_log (GP_LOG_DATA, __func__, "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)...", request, value, index, size, size); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "msg_read", port->pc->ops->msg_interface_read); retval = port->pc->ops->msg_interface_read (port, request, value, index, bytes, size); CHECK_RESULT (retval); LOG_DATA (bytes, retval, size, "Read", "USB message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)", request, value, index, size, size); return (retval); } /* * The next two functions handle the request types 0x21 for write * and 0xa1 for read. */ /** * \brief Send a USB class control message with output data * * \param port a GPPort * \param request control request code * \param value control value * \param index control index * \param bytes pointer to data * \param size size of the data * * Sends a specific USB class control command and write associated data. * * \return a gphoto2 error code */ int gp_port_usb_msg_class_write (GPPort *port, int request, int value, int index, char *bytes, int size) { int retval; GP_LOG_DATA (bytes, size, "Writing message (request=0x%x value=0x%x index=0x%x size=%i=0x%x):", request, value, index, size, size); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "msg_build", port->pc->ops->msg_class_write); retval = port->pc->ops->msg_class_write(port, request, value, index, bytes, size); CHECK_RESULT (retval); return (retval); } /** * \brief Send a USB class control message with input data * * \param port a GPPort * \param request control request code * \param value control value * \param index control index * \param bytes pointer to data * \param size size of the data * * Sends a specific USB class control command and read associated data. * * \return a gphoto2 error code */ int gp_port_usb_msg_class_read (GPPort *port, int request, int value, int index, char *bytes, int size) { int retval; gp_log (GP_LOG_DATA, __func__, "Reading message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)...", request, value, index, size, size); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "msg_read", port->pc->ops->msg_class_read); retval = port->pc->ops->msg_class_read (port, request, value, index, bytes, size); CHECK_RESULT (retval); LOG_DATA (bytes, retval, size, "Read", "USB message (request=0x%x value=0x%x index=0x%x size=%i=0x%x)", request, value, index, size, size); return (retval); } /** * \brief Seek on a port (for usb disk direct ports) * * \param port a #GPPort * \param offset offset to seek to * \param whence the underlying lseek call whence parameter * * Seeks to a specific offset on the usb disk * * \return a gphoto2 error code **/ int gp_port_seek (GPPort *port, int offset, int whence) { int retval; GP_LOG_D ("Seeking to: %d whence: %d", offset, whence); C_PARAMS (port); CHECK_INIT (port); CHECK_SUPP (port, "seek", port->pc->ops->seek); retval = port->pc->ops->seek (port, offset, whence); GP_LOG_D ("Seek result: %d", retval); return retval; } /** * \brief Send a SCSI command to a port (for usb scsi ports) * * \param port a #GPPort * \param to_dev data direction, set to 1 for a scsi cmd which sends * data to the device, set to 0 for cmds which read data from the dev. * \param cmd buffer holding the command to send * \param cmd_size sizeof cmd buffer * \param sense buffer for returning scsi sense information * \param sense_size sizeof sense buffer * \param data buffer containing informatino to write to the device * (to_dev is 1), or to store data read from the device (to_dev 0). * * Send a SCSI command to a usb scsi port attached device. * * \return a gphoto2 error code **/ int gp_port_send_scsi_cmd (GPPort *port, int to_dev, char *cmd, int cmd_size, char *sense, int sense_size, char *data, int data_size) { int retval; GP_LOG_DATA (cmd, cmd_size, "Sending scsi cmd:"); if (to_dev && data_size) GP_LOG_DATA (data, data_size, "with scsi cmd data:"); C_PARAMS (port); CHECK_INIT (port); memset (sense, 0, sense_size); CHECK_SUPP (port, "send_scsi_cmd", port->pc->ops->send_scsi_cmd); retval = port->pc->ops->send_scsi_cmd (port, to_dev, cmd, cmd_size, sense, sense_size, data, data_size); GP_LOG_D ("scsi cmd result: %d", retval); if (sense[0] != 0) { GP_LOG_DATA (sense, sense_size, "sense data:"); /* https://secure.wikimedia.org/wikipedia/en/wiki/Key_Code_Qualifier */ GP_LOG_D ("sense decided:"); if ((sense[0]&0x7f)!=0x70) { GP_LOG_D ("\tInvalid header."); } GP_LOG_D ("\tCurrent command read filemark: %s",(sense[2]&0x80)?"yes":"no"); GP_LOG_D ("\tEarly warning passed: %s",(sense[2]&0x40)?"yes":"no"); GP_LOG_D ("\tIncorrect blocklengt: %s",(sense[2]&0x20)?"yes":"no"); GP_LOG_D ("\tSense Key: %d",sense[2]&0xf); if (sense[0]&0x80) GP_LOG_D ("\tResidual Length: %d",sense[3]*0x1000000+sense[4]*0x10000+sense[5]*0x100+sense[6]); GP_LOG_D ("\tAdditional Sense Length: %d",sense[7]); GP_LOG_D ("\tAdditional Sense Code: %d",sense[12]); GP_LOG_D ("\tAdditional Sense Code Qualifier: %d",sense[13]); if (sense[15]&0x80) { GP_LOG_D ("\tIllegal Param is in %s",(sense[15]&0x40)?"the CDB":"the Data Out Phase"); if (sense[15]&0x8) { GP_LOG_D ("Pointer at %d, bit %d",sense[16]*256+sense[17],sense[15]&0x7); } } } if (!to_dev && data_size) GP_LOG_DATA (data, data_size, "scsi cmd data:"); return retval; } /** * \brief Set verbose port error message * \param port a #GPPort * \param format printf style format string * \param ... variable arguments depending on format string * * Sets an error message that can later be retrieved using #gp_port_get_error. * * \return a gphoto2 error code **/ int gp_port_set_error (GPPort *port, const char *format, ...) { va_list args; C_PARAMS (port); if (format) { va_start (args, format); vsnprintf (port->pc->error, sizeof (port->pc->error), _(format), args); GP_LOG_E ("%s", port->pc->error); va_end (args); } else port->pc->error[0] = '\0'; return (GP_OK); } /** * \brief Get verbose port error message * \param port a #GPPort * * Retrieves an error message from a port. If you want to make sure that * you get correct error messages, you need to call #gp_port_set_error with * an error message of %NULL each time before calling another port-related * function of which you want to check the return value. * * \return a translated error message **/ const char * gp_port_get_error (GPPort *port) { if (port && port->pc && strlen (port->pc->error)) return (port->pc->error); return _("No error description available"); } libgphoto2-2.5.9/libgphoto2_port/libgphoto2_port/gphoto2-port-info-list.c0000644000175000001440000003347112610415536023374 00000000000000/** \file * * \author Copyright 2001 Lutz Mueller * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _GNU_SOURCE #include "config.h" #include #include #include #include #ifdef HAVE_REGEX #include #else #warning We need regex.h, but it has not been detected. #endif #include #include #include #include #include "gphoto2-port-info.h" #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define bind_textdomain_codeset(Domain,codeset) (codeset) # define ngettext(String1,String2,Count) ((Count==1)?String1:String2) # define _(String) (String) # define N_(String) (String) #endif /** * \internal GPPortInfoList: * * The internals of this list are private. **/ struct _GPPortInfoList { GPPortInfo *info; unsigned int count; unsigned int iolib_count; }; #define CR(x) {int r=(x);if (r<0) return (r);} /** * \brief Specify codeset for translations * * This function specifies the codeset that are used for the translated * strings that are passed back by the libgphoto2_port functions. * * This function is called by the gp_message_codeset() function, there is * no need to call it yourself. * * \param codeset new codeset to use * \return the previous codeset */ const char* gp_port_message_codeset (const char *codeset) { return bind_textdomain_codeset (GETTEXT_PACKAGE, codeset); } /** * \brief Create a new GPPortInfoList * * \param list pointer to a GPPortInfoList* which is allocated * * Creates a new list which can later be filled with port infos (#GPPortInfo) * using #gp_port_info_list_load. * * \return a gphoto2 error code **/ int gp_port_info_list_new (GPPortInfoList **list) { C_PARAMS (list); /* * We put this in here because everybody needs to call this function * before accessing ports... */ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); C_MEM (*list = calloc (1, sizeof (GPPortInfoList))); return (GP_OK); } /** * \brief Free a GPPortInfo list * \param list a #GPPortInfoList * * Frees a GPPortInfoList structure and its internal data structures. * * \return a gphoto2 error code **/ int gp_port_info_list_free (GPPortInfoList *list) { C_PARAMS (list); if (list->info) { unsigned int i; for (i=0;icount;i++) { free (list->info[i]->name); list->info[i]->name = NULL; free (list->info[i]->path); list->info[i]->path = NULL; free (list->info[i]->library_filename); list->info[i]->library_filename = NULL; free (list->info[i]); } free (list->info); list->info = NULL; } list->count = 0; free (list); return (GP_OK); } /** * \brief Append a portinfo to the port information list * * \param list a #GPPortInfoList * \param info the info to append * * Appends an entry to the list. This function is typically called by * an io-driver during #gp_port_library_list. If you leave info.name blank, * #gp_port_info_list_lookup_path will try to match non-existent paths * against info.path and - if successfull - will append this entry to the * list. * * \return A gphoto2 error code, or an index into the port list (excluding generic entries). * which can be used for gp_port_info_list_get_info. **/ int gp_port_info_list_append (GPPortInfoList *list, GPPortInfo info) { int generic, i; C_PARAMS (list); C_MEM (list->info = realloc (list->info, sizeof (GPPortInfo) * (list->count + 1))); list->count++; list->info[list->count - 1] = info; /* Ignore generic entries */ for (generic = i = 0; i < list->count; i++) if (!strlen (list->info[i]->name)) generic++; return (list->count - 1 - generic); } static int foreach_func (const char *filename, lt_ptr data) { GPPortInfoList *list = data; lt_dlhandle lh; GPPortLibraryType lib_type; GPPortLibraryList lib_list; GPPortType type; unsigned int j, old_size = list->count; int result; GP_LOG_D ("Called for filename '%s'.", filename ); lh = lt_dlopenext (filename); if (!lh) { GP_LOG_D ("Could not load '%s': '%s'.", filename, lt_dlerror ()); return (0); } lib_type = lt_dlsym (lh, "gp_port_library_type"); lib_list = lt_dlsym (lh, "gp_port_library_list"); if (!lib_type || !lib_list) { GP_LOG_D ("Could not find some functions in '%s': '%s'.", filename, lt_dlerror ()); lt_dlclose (lh); return (0); } type = lib_type (); for (j = 0; j < list->count; j++) if (list->info[j]->type == type) break; if (j != list->count) { GP_LOG_D ("'%s' already loaded", filename); lt_dlclose (lh); return (0); } result = lib_list (list); #if !defined(VALGRIND) lt_dlclose (lh); #endif if (result < 0) { GP_LOG_E ("Error during assembling of port list: '%s' (%d).", gp_port_result_as_string (result), result); } if (old_size != list->count) { /* * It doesn't matter if lib_list returned a failure code, * at least some entries were added */ list->iolib_count++; for (j = old_size; j < list->count; j++){ GP_LOG_D ("Loaded '%s' ('%s') from '%s'.", list->info[j]->name, list->info[j]->path, filename); list->info[j]->library_filename = strdup (filename); } } return (0); } /** * \brief Load system ports * * \param list a #GPPortInfoList * * Searches the system for io-drivers and appends them to the list. You would * normally call this function once after #gp_port_info_list_new and then * use this list in order to supply #gp_port_set_info with parameters or to do * autodetection. * * \return a gphoto2 error code **/ int gp_port_info_list_load (GPPortInfoList *list) { const char *iolibs_env = getenv(IOLIBDIR_ENV); const char *iolibs = (iolibs_env != NULL)?iolibs_env:IOLIBS; int result; C_PARAMS (list); GP_LOG_D ("Using ltdl to load io-drivers from '%s'...", iolibs); lt_dlinit (); lt_dladdsearchdir (iolibs); result = lt_dlforeachfile (iolibs, foreach_func, list); lt_dlexit (); if (result < 0) return (result); if (list->iolib_count == 0) { GP_LOG_E ("No iolibs found in '%s'", iolibs); return GP_ERROR_LIBRARY; } return (GP_OK); } /** * \brief Number of ports in the list * \param list a #GPPortInfoList * * Returns the number of entries in the passed list. * * \return The number of entries or a gphoto2 error code **/ int gp_port_info_list_count (GPPortInfoList *list) { unsigned int count, i; C_PARAMS (list); GP_LOG_D ("Counting entries (%i available)...", list->count); /* Ignore generic entries */ count = list->count; for (i = 0; i < list->count; i++) if (!strlen (list->info[i]->name)) count--; GP_LOG_D ("%i regular entries available.", count); return count; } /** * \brief Lookup a specific path in the list * * \param list a #GPPortInfoList * \param path a path * * Looks for an entry in the list with the supplied path. If no exact match * can be found, a regex search will be performed in the hope some driver * claimed ports like "serial:*". * * \return The index of the entry or a gphoto2 error code **/ int gp_port_info_list_lookup_path (GPPortInfoList *list, const char *path) { unsigned int i; int result, generic; #ifdef HAVE_REGEX regex_t pattern; #ifdef HAVE_GNU_REGEX const char *rv; #else regmatch_t match; #endif #endif C_PARAMS (list && path); GP_LOG_D ("Looking for path '%s' (%i entries available)...", path, list->count); /* Exact match? */ for (generic = i = 0; i < list->count; i++) if (!strlen (list->info[i]->name)) generic++; else if (!strcmp (list->info[i]->path, path)) return (i - generic); #ifdef HAVE_REGEX /* Regex match? */ GP_LOG_D ("Starting regex search for '%s'...", path); for (i = 0; i < list->count; i++) { GPPortInfo newinfo; if (strlen (list->info[i]->name)) continue; GP_LOG_D ("Trying '%s'...", list->info[i]->path); /* Compile the pattern */ #ifdef HAVE_GNU_REGEX memset (&pattern, 0, sizeof (pattern)); rv = re_compile_pattern (list->info[i]->path, strlen (list->info[i]->path), &pattern); if (rv) { GP_LOG_D ("%s", rv); continue; } #else result = regcomp (&pattern, list->info[i]->path, REG_ICASE); if (result) { char buf[1024]; if (regerror (result, &pattern, buf, sizeof (buf))) GP_LOG_E ("%s", buf); else GP_LOG_E ("regcomp failed"); return (GP_ERROR_UNKNOWN_PORT); } #endif /* Try to match */ #ifdef HAVE_GNU_REGEX result = re_match (&pattern, path, strlen (path), 0, NULL); regfree (&pattern); if (result < 0) { GP_LOG_D ("re_match failed (%i)", result); continue; } #else result = regexec (&pattern, path, 1, &match, 0); regfree (&pattern); if (result) { GP_LOG_D ("regexec failed"); continue; } #endif gp_port_info_new (&newinfo); gp_port_info_set_type (newinfo, list->info[i]->type); newinfo->library_filename = strdup(list->info[i]->library_filename); gp_port_info_set_name (newinfo, _("Generic Port")); gp_port_info_set_path (newinfo, path); CR (result = gp_port_info_list_append (list, newinfo)); return result; } #endif /* HAVE_REGEX */ return (GP_ERROR_UNKNOWN_PORT); } /** * \brief Look up a name in the list * \param list a #GPPortInfoList * \param name a name * * Looks for an entry in the list with the exact given name. * * \return The index of the entry or a gphoto2 error code **/ int gp_port_info_list_lookup_name (GPPortInfoList *list, const char *name) { unsigned int i, generic; C_PARAMS (list && name); GP_LOG_D ("Looking up entry '%s'...", name); /* Ignore generic entries */ for (generic = i = 0; i < list->count; i++) if (!strlen (list->info[i]->name)) generic++; else if (!strcmp (list->info[i]->name, name)) return (i - generic); return (GP_ERROR_UNKNOWN_PORT); } /** * \brief Get port information of specific entry * \param list a #GPPortInfoList * \param n the index of the entry * \param info the returned information * * Returns a pointer to the current port entry. * * \return a gphoto2 error code **/ int gp_port_info_list_get_info (GPPortInfoList *list, int n, GPPortInfo *info) { int i; C_PARAMS (list && info); GP_LOG_D ("Getting info of entry %i (%i available)...", n, list->count); C_PARAMS (n >= 0 && n < list->count); /* Ignore generic entries */ for (i = 0; i <= n; i++) if (!strlen (list->info[i]->name)) { n++; C_PARAMS (n < list->count); } *info = list->info[n]; return GP_OK; } /** * \brief Get name of a specific port entry * \param info a #GPPortInfo * \param name a pointer to a char* which will receive the name * * Retreives the name of the passed in GPPortInfo, by reference. * * \return a gphoto2 error code **/ int gp_port_info_get_name (GPPortInfo info, char **name) { *name = info->name; return GP_OK; } /** * \brief Set name of a specific port entry * \param info a #GPPortInfo * \param name a char* pointer which will receive the name * * Sets the name of the passed in GPPortInfo * This is a libgphoto2_port internal function. * * \return a gphoto2 error code **/ int gp_port_info_set_name (GPPortInfo info, const char *name) { C_MEM (info->name = strdup (name)); return GP_OK; } /** * \brief Get path of a specific port entry * \param info a #GPPortInfo * \param path a pointer to a char* which will receive the path * * Retreives the path of the passed in GPPortInfo, by reference. * * \return a gphoto2 error code **/ int gp_port_info_get_path (GPPortInfo info, char **path) { *path = info->path; return GP_OK; } /** * \brief Set path of a specific port entry * \param info a #GPPortInfo * \param path a char* pointer which will receive the path * * Sets the path of the passed in GPPortInfo * This is a libgphoto2_port internal function. * * \return a gphoto2 error code **/ int gp_port_info_set_path (GPPortInfo info, const char *path) { C_MEM (info->path = strdup (path)); return GP_OK; } /** * \brief Get type of a specific port entry * \param info a #GPPortInfo * \param type a pointer to a GPPortType variable which will receive the type * * Retreives the type of the passed in GPPortInfo * * \return a gphoto2 error code **/ int gp_port_info_get_type (GPPortInfo info, GPPortType *type) { *type = info->type; return GP_OK; } /** * \brief Set type of a specific port entry * \param info a #GPPortInfo * \param type a GPPortType variable which will has the type * * Sets the type of the passed in GPPortInfo * This is a libgphoto2_port internal function. * * \return a gphoto2 error code **/ int gp_port_info_set_type (GPPortInfo info, GPPortType type) { info->type = type; return GP_OK; } /** * \brief Create a new portinfo * \param info pointer to a #GPPortInfo * * Allocates and initializes a GPPortInfo structure. * This is a libgphoto2_port internal function. * * \return a gphoto2 error code **/ int gp_port_info_new (GPPortInfo *info) { C_MEM (*info = calloc (1, sizeof(struct _GPPortInfo))); return GP_OK; } libgphoto2-2.5.9/libgphoto2_port/libgphoto2_port/gphoto2-port-result.c0000644000175000001440000000637312610415536023007 00000000000000/** \file * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #include "config.h" #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif /** * gp_port_result_as_string: * @result: a gphoto2 error code * * Returns a string representation of a gphoto2 error code. Those are static * error descriptions. You can get dynamic ones that explain the error more * in depth using #gp_port_get_error. * * Return value: a string representation of a gphoto2 error code **/ const char * gp_port_result_as_string (int result) { switch (result) { case GP_OK: return _("No error"); case GP_ERROR: return _("Unspecified error"); case GP_ERROR_IO: return _("I/O problem"); case GP_ERROR_BAD_PARAMETERS: return _("Bad parameters"); case GP_ERROR_NOT_SUPPORTED: return _("Unsupported operation"); case GP_ERROR_FIXED_LIMIT_EXCEEDED: return _("Fixed limit exceeded"); case GP_ERROR_TIMEOUT: return _("Timeout reading from or writing to the port"); case GP_ERROR_IO_SUPPORTED_SERIAL: return _("Serial port not supported"); case GP_ERROR_IO_SUPPORTED_USB: return _("USB port not supported"); case GP_ERROR_UNKNOWN_PORT: return _("Unknown port"); case GP_ERROR_NO_MEMORY: return _("Out of memory"); case GP_ERROR_LIBRARY: return _("Error loading a library"); case GP_ERROR_IO_INIT: return _("Error initializing the port"); case GP_ERROR_IO_READ: return _("Error reading from the port"); case GP_ERROR_IO_WRITE: return _("Error writing to the port"); case GP_ERROR_IO_UPDATE: return _("Error updating the port settings"); case GP_ERROR_IO_SERIAL_SPEED: return _("Error setting the serial port speed"); case GP_ERROR_IO_USB_CLEAR_HALT: return _("Error clearing a halt condition on the USB port"); case GP_ERROR_IO_USB_FIND: return _("Could not find the requested device on the USB port"); case GP_ERROR_IO_USB_CLAIM: return _("Could not claim the USB device"); case GP_ERROR_IO_LOCK: return _("Could not lock the device"); case GP_ERROR_HAL: return _("libhal error"); default: return _("Unknown error"); } } libgphoto2-2.5.9/libgphoto2_port/libgphoto2_port/gphoto2-port-info.h0000644000175000001440000000247012610415620022415 00000000000000/** \file * * \author Copyright 2001 Lutz Mueller * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef GPHOTO_PORT_INFO_H #define GPHOTO_PORT_INFO_H /** * \internal GPPortInfo: * * The internals of this list are private. **/ struct _GPPortInfo { GPPortType type; /**< \brief The type of this port. */ char *name; /**< \brief The name of this port (usb:) */ char *path; /**< \brief The path of this port (usb:001,023) */ /* Private */ char *library_filename; /**< \brief Internal pathname of the port driver. Do not use outside of the port library. */ }; #endif libgphoto2-2.5.9/libgphoto2_port/libgphoto2_port/gphoto2-port-portability.c0000644000175000001440000001560012610415536024024 00000000000000/** \file * * \author Copyright 2001 Lutz Mueller * \author Copyright 1999 Scott Fritzinger * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA * * This file contains various portability functions that * make non UNIX (Windows) ports easier. */ #include "config.h" #include #include #include #include /* Windows Portability ------------------------------------------------------------------ */ #ifdef WIN32 void gp_port_win_convert_path (char *path) { int x; if (strchr(path, '\\')) /* already converted */ return; if (path[0] != '.') { path[0] = path[1]; path[1] = ':'; path[2] = '\\'; } for (x=0; xhandle = INVALID_HANDLE_VALUE; d->got_first = 0; strcpy(d->dir, dirname); d->drive_count = 0; d->drive_index = 0; dr = GetLogicalDrives(); for (x=0; x<32; x++) { if ((dr >> x) & 0x0001) { sprintf(d->drive[d->drive_count], "%c", 'A' + x); d->drive_count += 1; } } return (d); } gp_system_dirent gp_system_readdir (gp_system_dir d) { char dirn[1024]; if (strcmp(d->dir, "/")==0) { if (d->drive_index == d->drive_count) return (NULL); strcpy(d->search.cFileName, d->drive[d->drive_index]); d->drive_index += 1; return (&(d->search)); } /* Append the wildcard */ strcpy(dirn, d->dir); gp_port_win_convert_path(dirn); if (dirn[strlen(dirn)-1] != '\\') strcat(dirn, "\\"); strcat(dirn, "*"); if (d->handle == INVALID_HANDLE_VALUE) { d->handle = FindFirstFile(dirn, &(d->search)); if (d->handle == INVALID_HANDLE_VALUE) return NULL; } else { if (!FindNextFile(d->handle, &(d->search))) return NULL; } return (&(d->search)); } const char *gp_system_filename (gp_system_dirent de) { return (de->cFileName); } int gp_system_closedir (gp_system_dir d) { FindClose(d->handle); free(d); return (1); } int gp_system_is_file (const char *filename) { struct stat st; gp_port_win_convert_path(filename); if (stat(filename, &st)!=0) return 0; return (st.st_mode & _S_IFREG); } int gp_system_is_dir (const char *dirname) { struct stat st; if (strlen(dirname) <= 3) return 1; gp_port_win_convert_path(dirname); if (stat(dirname, &st)!=0) return 0; return (st.st_mode & _S_IFDIR); } #else /** * \brief mkdir UNIX functionality * \param dirname directory to create * * Creates a new directory. * * \return a gphoto error code */ int gp_system_mkdir (const char *dirname) { if (mkdir(dirname, 0700)<0) return (GP_ERROR); return (GP_OK); } /** * \brief rmdir UNIX functionality * \param dirname directory to remove * * Removes a empty directory. * * \return a gphoto error code */ int gp_system_rmdir (const char *dirname) { if (rmdir (dirname) < 0) return (GP_ERROR); return (GP_OK); } /** * \brief opendir UNIX functionality * \param dirname directory to open * * Opens a directory for readdir and later closedir operations, * to enumerate its contents. * * \return a directory handle for use in gp_system_readdir() and gp_system_closedir() */ gp_system_dir gp_system_opendir (const char *dirname) { return (opendir(dirname)); } /** * \brief readdir UNIX functionality * \param d directory to enumerate * * Reads one directory entry from the specified directory handle * as returned from gp_system_opendir(). Use gp_system_filename() * to extract the filename from the returned value. * * \return a new gp_system_dirent or NULL */ gp_system_dirent gp_system_readdir (gp_system_dir d) { return (readdir(d)); } /** * \brief retrieve UNIX filename out of a directory entry * \param de directory entry as returned from gp_system_readdir() * * Extracts a filename out of the passed directory entry. * * \return the filename of the directory entry */ const char *gp_system_filename (gp_system_dirent de) { return (de->d_name); } /** * \brief closedir UNIX functionality * \param dir directory to close * * Closes a directory after readdir operations. * * \return a gphoto error code */ int gp_system_closedir (gp_system_dir dir) { closedir(dir); return (GP_OK); } /** * \brief check if passed filename is a file * \param filename file name to check * * Checks whether the passed in filename is * a file and returns this as boolean. * * \return boolean flag whether passed filename is a file. */ int gp_system_is_file (const char *filename) { struct stat st; if (stat(filename, &st)!=0) return 0; return (!S_ISDIR(st.st_mode)); } /** * \brief check if passed filename is a directory * \param dirname file name to check * * Checks whether the passed in dirname is * a directory and returns this as boolean. * * \return boolean flag whether passed filename is a directory. */ int gp_system_is_dir (const char *dirname) { struct stat st; if (stat(dirname, &st)!=0) return 0; return (S_ISDIR(st.st_mode)); } #endif libgphoto2-2.5.9/libgphoto2_port/libgphoto2_port/libgphoto2_port.ver0000644000175000001440000000416412610415620022604 00000000000000LIBGPHOTO2_5_0 { global: gp_log; gp_log_add_func; gp_log_data; gp_log_remove_func; gp_log_with_source_location; gp_logv; gp_port_check_int; gp_port_check_int_fast; gp_port_close; gp_port_flush; gp_port_free; gp_port_get_error; gp_port_get_info; gp_port_get_pin; gp_port_get_settings; gp_port_get_timeout; gp_port_info_get_name; gp_port_info_get_path; gp_port_info_get_type; gp_port_info_list_append; gp_port_info_list_count; gp_port_info_list_free; gp_port_info_list_get_info; gp_port_info_list_load; gp_port_info_list_lookup_name; gp_port_info_list_lookup_path; gp_port_info_list_new; gp_port_library_version; gp_port_message_codeset; gp_port_new; gp_port_open; gp_port_read; gp_port_result_as_string; gp_port_reset; gp_port_seek; gp_port_send_break; gp_port_send_scsi_cmd; gp_port_set_error; gp_port_set_info; gp_port_set_pin; gp_port_set_settings; gp_port_set_timeout; gp_port_settings_get; gp_port_settings_set; gp_port_timeout_get; gp_port_timeout_set; gp_port_usb_clear_halt; gp_port_usb_find_device; gp_port_usb_find_device_by_class; gp_port_usb_msg_class_read; gp_port_usb_msg_class_write; gp_port_usb_msg_interface_read; gp_port_usb_msg_interface_write; gp_port_usb_msg_read; gp_port_usb_msg_write; gp_port_write; gp_system_closedir; gp_system_filename; gp_system_is_dir; gp_system_is_file; gp_system_mkdir; gp_system_opendir; gp_system_readdir; gp_system_rmdir; local: *; }; # These are only supposed to be used by libgphoto2 internally. LIBGPHOTO2_INTERNAL { gpi_gphoto_port_type_map; gpi_enum_to_string; gpi_string_to_enum; gpi_string_to_flag; gpi_string_or_to_flags; gpi_string_list_to_flags; gpi_flags_to_string_list; gpi_vsnprintf; gp_port_info_new; gp_port_info_set_name; gp_port_info_set_path; gp_port_info_set_type; }; #LIBGPHOTO2_6_0 { # global: # # The asm(".symver ...") constructs will put stuff into this node, # # it needs to stay. # # Currently used by: # # gp_port_set_info, gp_port_get_info, # # gp_port_info_list_append, gp_port_info_list_get_info # # # Add new exported functions here too! #} LIBGPHOTO2_5_0; # here comes the next version... libgphoto2-2.5.9/libgphoto2_port/gphoto2/0000755000175000001440000000000012623156264015303 500000000000000libgphoto2-2.5.9/libgphoto2_port/gphoto2/gphoto2-port-portability.h0000644000175000001440000001603112610415536022275 00000000000000/** \file gphoto2-port-log.h * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_PORT_PORTABILITY_H__ #define __GPHOTO2_PORT_PORTABILITY_H__ #ifdef _GPHOTO2_INTERNAL_CODE #if defined(WIN32) && !defined(__WINESRC__) /************************************************************************ * Begin Windows definitions (but not during WINE compilation) ************************************************************************/ # include /* done by mingw/wine headers ... defined to struct ... tsaes*/ #undef interface # include # include # include # include # include # ifdef IOLIBS # undef IOLIBS # endif # define IOLIBS "." # define strcasecmp _stricmp # ifndef snprintf # define snprintf _snprintf # endif /* Work-around for readdir() */ typedef struct { HANDLE handle; int got_first; WIN32_FIND_DATA search; char dir[1024]; char drive[32][2]; int drive_count; int drive_index; } GPPORTWINDIR; /* Directory-oriented functions */ # define gp_system_dir GPPORTWINDIR * # define gp_system_dirent WIN32_FIND_DATA * # define gp_system_dir_delim '\\' # define sleep(x) usleep((x) * 1000 * 1000) /************************************************************************ * End WIN32 definitions ************************************************************************/ #elif defined(__SOME_OS2_MAGIC_HERE__) /************************************************************************ * Begin OS/2 definitions ************************************************************************/ # define strcasecmp(foo,bar) stricmp(foo,bar) # define gp_system_dir_delim '\\' # ifndef GPIO_OS2_INCLUDED # define GPIO_OS2_INCLUDED # define IOLIBS getenv("IOLIBS") /*#define IOLIBS "./libgphoto2_port"*/ # define RTLD_LAZY 0x001 # ifndef HAVE_TERMIOS_H # define INCL_DOSDEVIOCTL /* DosDevIOCtl values */ # define IOCTL_ASYNC 0x0001 # define ASYNC_SETBAUDRATE 0x0041 /* c_cflag bit meaning */ # define CBAUD 0x0000100f # define B0 0x00000000 /* hang up */ # define B50 0x00000001 # define B75 0x00000002 # define B110 0x00000003 # define B134 0x00000004 # define B150 0x00000005 # define B200 0x00000006 # define B300 0x00000007 # define B600 0x00000008 # define B1200 0x00000009 # define B1800 0x0000000a # define B2400 0x0000000b # define B4800 0x0000000c # define B9600 0x0000000d # define B19200 0x0000000e # define B38400 0x0000000f # define EXTA B19200 # define EXTB B38400 # define CSIZE 0x00000030 # define CS5 0x00000000 # define CS6 0x00000010 # define CS7 0x00000020 # define CS8 0x00000030 # define CSTOPB 0x00000040 # define CREAD 0x00000080 # define PARENB 0x00000100 # define PARODD 0x00000200 # define HUPCL 0x00000400 # define CLOCAL 0x00000800 # define CBAUDEX 0x00001000 # define B57600 0x00001001 # define B115200 0x00001002 # define B230400 0x00001003 # define B460800 0x00001004 # define B76800 0x00001005 # define B153600 0x00001006 # define B307200 0x00001007 # define B614400 0x00001008 # define B921600 0x00001009 # define B500000 0x0000100a # define B576000 0x0000100b # define B1000000 0x0000100c # define B1152000 0x0000100d # define B1500000 0x0000100e # define B2000000 0x0000100f # endif /* HAVE_TERMIOS_H */ # define CIBAUD 0x100f0000 /* input baud rate (not used) */ # define CMSPAR 0x40000000 /* mark or space (stick) parity */ /* #define CRTSCTS 0x80000000 */ /* flow control */ /* modem lines */ # define TIOCM_LE 0x001 # define TIOCM_DTR 0x002 # define TIOCM_RTS 0x004 # define TIOCM_ST 0x008 # define TIOCM_SR 0x010 # define TIOCM_CTS 0x020 # define TIOCM_CAR 0x040 # define TIOCM_RNG 0x080 # define TIOCM_DSR 0x100 # define TIOCM_CD TIOCM_CAR # define TIOCM_RI TIOCM_RNG # define TIOCMBIC 0x06C # define TIOCMBIS 0x06B # define TIOCMGET 0x06E # endif /* GPIO_OS2_INCLUDED */ /************************************************************************ * End OS/2 definitions ************************************************************************/ #else /************************************************************************ * Begin POSIX/XOPEN definitions ************************************************************************/ /* yummy. :) */ /* XOPEN needed for usleep */ #ifndef _XOPEN_SOURCE # define _XOPEN_SOURCE 500 #else # if ((_XOPEN_SOURCE - 0) < 500) # undef _XOPEN_SOURCE # define _XOPEN_SOURCE 500 # endif #endif /* for nanosleep */ # ifndef _POSIX_C_SOURCE # define _POSIX_C_SOURCE 199309 # endif # include # include # include # include #ifdef HAVE_SYS_PARAM_H # include #endif # include # include /* Directory-oriented functions */ /** A system directory handle */ # define gp_system_dir DIR * /** A system directory entry */ # define gp_system_dirent struct dirent * /** The directory delimiter character on this platform. */ # define gp_system_dir_delim '/' /************************************************************************ * End POSIX/XOPEN definitions ************************************************************************/ #endif /* else */ /************************************************************************ * Begin platform independent portability functions ************************************************************************/ int gp_system_mkdir (const char *dirname); int gp_system_rmdir (const char *dirname); gp_system_dir gp_system_opendir (const char *dirname); gp_system_dirent gp_system_readdir (gp_system_dir d); const char* gp_system_filename (gp_system_dirent de); int gp_system_closedir (gp_system_dir dir); int gp_system_is_file (const char *filename); int gp_system_is_dir (const char *dirname); /************************************************************************ * End platform independent portability functions ************************************************************************/ #endif /* _GPHOTO2_INTERNAL_CODE */ #endif /* ifndef __GPHOTO2_PORT_PORTABILITY_H__ */ /* end of file */ libgphoto2-2.5.9/libgphoto2_port/gphoto2/gphoto2-port-version.h0000644000175000001440000000247012610415536021422 00000000000000/** \file gphoto2-port-version.h * * Copyright 2002 Hans Ulrich Niedermann * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_PORT_VERSION_H__ #define __GPHOTO2_PORT_VERSION_H__ typedef enum { GP_VERSION_SHORT = 0, GP_VERSION_VERBOSE = 1 } GPVersionVerbosity; #ifdef __cplusplus extern "C" { #endif typedef const char **(*GPVersionFunc)(GPVersionVerbosity verbose); const char **gp_port_library_version(GPVersionVerbosity verbose); #ifdef __cplusplus } #endif #endif /* __GPHOTO2_PORT_VERSION_H__ */ /* * Local Variables: * c-file-style:"linux" * indent-tabs-mode:t * End: */ libgphoto2-2.5.9/libgphoto2_port/gphoto2/gphoto2-port-result.h0000644000175000001440000000572712610415536021263 00000000000000/** \file gphoto2-port-result.h * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_PORT_RESULT_H__ #define __GPHOTO2_PORT_RESULT_H__ /* Return values. gphoto2-port should only return values from 0 to -99 */ /** * \brief Everything is OK * * Note that this is also the value 0, and every error is negative (lower). */ #define GP_OK 0 /** * \brief Generic Error */ #define GP_ERROR -1 /** * \brief Bad parameters passed */ #define GP_ERROR_BAD_PARAMETERS -2 /** * \brief Out of memory */ #define GP_ERROR_NO_MEMORY -3 /** * \brief Error in the camera driver */ #define GP_ERROR_LIBRARY -4 /** * \brief Unknown libgphoto2 port passed */ #define GP_ERROR_UNKNOWN_PORT -5 /** * \brief Functionality not supported */ #define GP_ERROR_NOT_SUPPORTED -6 /** * \brief Generic I/O error */ #define GP_ERROR_IO -7 /** * \brief Buffer overflow of internal structure */ #define GP_ERROR_FIXED_LIMIT_EXCEEDED -8 /** * \brief Operation timed out */ #define GP_ERROR_TIMEOUT -10 /** * \brief Serial ports not supported */ #define GP_ERROR_IO_SUPPORTED_SERIAL -20 /** * \brief USB ports not supported */ #define GP_ERROR_IO_SUPPORTED_USB -21 /** * \brief Error initialising I/O */ #define GP_ERROR_IO_INIT -31 /** * \brief I/O during read */ #define GP_ERROR_IO_READ -34 /** * \brief I/O during write */ #define GP_ERROR_IO_WRITE -35 /** * \brief I/O during update of settings */ #define GP_ERROR_IO_UPDATE -37 /** * \brief Specified serial speed not possible. */ #define GP_ERROR_IO_SERIAL_SPEED -41 /** * \brief Error during USB Clear HALT */ #define GP_ERROR_IO_USB_CLEAR_HALT -51 /** * \brief Error when trying to find USB device */ #define GP_ERROR_IO_USB_FIND -52 /** * \brief Error when trying to claim the USB device */ #define GP_ERROR_IO_USB_CLAIM -53 /** * \brief Error when trying to lock the device */ #define GP_ERROR_IO_LOCK -60 /** * \brief Unspecified error when talking to HAL */ #define GP_ERROR_HAL -70 const char *gp_port_result_as_string (int result); #endif /* __GPHOTO2_PORT_RESULT_H__ */ libgphoto2-2.5.9/libgphoto2_port/gphoto2/gphoto2-port-info-list.h0000644000175000001440000000733212610415524021640 00000000000000/** \file * * \author Copyright 2001 Lutz Mueller * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_PORT_INFO_LIST_H__ #define __GPHOTO2_PORT_INFO_LIST_H__ /** * \brief The gphoto port type. * * Enumeration specifying the port type. * The enum is providing bitmasks, but most code uses it as * just the one specific values. */ typedef enum { GP_PORT_NONE = 0, /**< \brief No specific type associated. */ GP_PORT_SERIAL = 1 << 0, /**< \brief Serial port. */ GP_PORT_USB = 1 << 2, /**< \brief USB port. */ GP_PORT_DISK = 1 << 3, /**< \brief Disk / local mountpoint port. */ GP_PORT_PTPIP = 1 << 4, /**< \brief PTP/IP port. */ GP_PORT_USB_DISK_DIRECT = 1 << 5, /**< \brief Direct IO to an usb mass storage device. */ GP_PORT_USB_SCSI = 1 << 6 /**< \brief USB Mass Storage raw SCSI port. */ } GPPortType; /** * \brief Information about the current port. * * Specific information about the current port. Usually taken from the * "--port=XXXX" setting from the frontend. * * This is not to be confused with the driver configurable port settings * in \ref GPPortSettings. */ struct _GPPortInfo; typedef struct _GPPortInfo *GPPortInfo; #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifdef _GPHOTO2_INTERNAL_CODE #include extern const StringFlagItem gpi_gphoto_port_type_map[]; #endif int gp_port_info_new (GPPortInfo *info); int gp_port_info_get_name (GPPortInfo info, char **name); int gp_port_info_set_name (GPPortInfo info, const char *name); int gp_port_info_get_path (GPPortInfo info, char **path); int gp_port_info_set_path (GPPortInfo info, const char *path); int gp_port_info_get_type (GPPortInfo info, GPPortType *type); int gp_port_info_set_type (GPPortInfo info, const GPPortType type); int gp_port_info_get_library_filename (GPPortInfo info, char **lib); int gp_port_info_set_library_filename (GPPortInfo info, char *lib); /* Internals are private */ typedef struct _GPPortInfoList GPPortInfoList; int gp_port_info_list_new (GPPortInfoList **list); int gp_port_info_list_free (GPPortInfoList *list); int gp_port_info_list_append (GPPortInfoList *list, GPPortInfo info); int gp_port_info_list_load (GPPortInfoList *list); int gp_port_info_list_count (GPPortInfoList *list); int gp_port_info_list_lookup_path (GPPortInfoList *list, const char *path); int gp_port_info_list_lookup_name (GPPortInfoList *list, const char *name); int gp_port_info_list_get_info (GPPortInfoList *list, int n, GPPortInfo *info); const char *gp_port_message_codeset (const char*); /** * Name of the environment variable which may contain the path where * to look for the IO libs. If this environment variable is not defined, * use the compiled-in default constant. * * \internal Internal use only. */ #ifdef _GPHOTO2_INTERNAL_CODE #define IOLIBDIR_ENV "IOLIBS" #endif /* _GPHOTO2_INTERNAL_CODE */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_PORT_INFO_LIST_H__ */ libgphoto2-2.5.9/libgphoto2_port/gphoto2/gphoto2-port-log.h0000644000175000001440000001663112610415620020514 00000000000000/** \file gphoto2-port-log.h * * Copyright 2001 Lutz Mueller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_PORT_LOG_H__ #define __GPHOTO2_PORT_LOG_H__ #include /** * \brief Logging level * Specifies the logging severity level. */ typedef enum { GP_LOG_ERROR = 0, /**< \brief Log message is an error infomation. */ GP_LOG_VERBOSE = 1, /**< \brief Log message is an verbose debug infomation. */ GP_LOG_DEBUG = 2, /**< \brief Log message is an debug infomation. */ GP_LOG_DATA = 3 /**< \brief Log message is a data hex dump. */ } GPLogLevel; /** * GP_LOG_ALL: * * Used by frontends if they want to be sure their * callback function receives all messages. Defined * as the highest debug level. Can make frontend code * more understandable and extension of log levels * easier. **/ #define GP_LOG_ALL GP_LOG_DATA /** * \brief Logging function hook * * This is the function frontends can use to receive logging information * from the libgphoto2 framework. It is set using gp_log_add_func() and * removed using gp_log_remove_func() and will then receive the logging * messages of the level specified. * * \param level the log level of the passed message, as set by the camera driver or libgphoto2 * \param domain the logging domain as set by the camera driver, or libgphoto2 function * \param str the logmessage, without linefeed * \param data the caller private data that was passed to gp_log_add_func() */ typedef void (* GPLogFunc) (GPLogLevel level, const char *domain, const char *str, void *data); #ifndef DISABLE_DEBUGGING int gp_log_add_func (GPLogLevel level, GPLogFunc func, void *data); int gp_log_remove_func (int id); /* Logging */ void gp_log (GPLogLevel level, const char *domain, const char *format, ...) #ifdef __GNUC__ __attribute__((__format__(printf,3,4))) #endif ; void gp_log_with_source_location( GPLogLevel level, const char *file, int line, const char *func, const char *format, ...) #ifdef __GNUC__ __attribute__((__format__(printf,5,6))) #endif ; void gp_logv (GPLogLevel level, const char *domain, const char *format, va_list args) #ifdef __GNUC__ __attribute__((__format__(printf,3,0))) #endif ; void gp_log_data (const char *domain, const char *data, unsigned int size, const char *format, ...) #ifdef __GNUC__ __attribute__((__format__(printf,4,5))) #endif ; /* * GP_DEBUG: * msg: message to log * params: params to message * * Logs message at log level #GP_LOG_DEBUG by calling #gp_log() with * an automatically generated domain * You have to define GP_MODULE as "mymod" for your module * mymod before using #GP_DEBUG(). */ #ifdef _GPHOTO2_INTERNAL_CODE #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define GP_DEBUG(...) \ gp_log(GP_LOG_DEBUG, GP_MODULE "/" __FILE__, __VA_ARGS__) /* * GP_LOG_D/E: * simple helper macros for convenient and consistent logging of error * and debug messages including information about the source location. */ #define GP_LOG_D(...) gp_log(GP_LOG_DEBUG, __func__, __VA_ARGS__) #define GP_LOG_E(...) gp_log_with_source_location(GP_LOG_ERROR, __FILE__, __LINE__, __func__, __VA_ARGS__) #define GP_LOG_DATA(DATA, SIZE, MSG, ...) gp_log_data(__func__, DATA, SIZE, MSG, ##__VA_ARGS__) #elif defined(__GNUC__) && __GNUC__ >= 2 #define GP_DEBUG(msg, params...) \ gp_log(GP_LOG_DEBUG, GP_MODULE "/" __FILE__, msg, ##params) /* * GP_LOG_D/E: * simple helper macros for convenient and consistent logging of error * and debug messages including information about the source location. */ #define GP_LOG_D(...) gp_log(GP_LOG_DEBUG, __func__, __VA_ARGS__) #define GP_LOG_E(...) gp_log_with_source_location(GP_LOG_ERROR, __FILE__, __LINE__, __func__, __VA_ARGS__) #define GP_LOG_DATA(DATA, SIZE, MSG, ...) gp_log_data(__func__, DATA, SIZE, MSG, ##__VA_ARGS__) #else # ifdef __GNUC__ # warning Disabling GP_DEBUG because variadic macros are not allowed # endif #define GP_DEBUG (void) #define GP_LOG_D(...) /* no-op */ #define GP_LOG_E(...) /* no-op */ #define GP_LOG_DATA(DATA, SIZE, ...) /* no-op */ #endif #endif /* _GPHOTO2_INTERNAL_CODE */ #else /* DISABLE_DEBUGGING */ /* Stub these functions out if debugging is disabled */ #define gp_log_add_func(level, func, data) (0) #define gp_log_remove_func(id) (0) #define gp_log(level, domain, format, args...) /**/ #define gp_log_with_source_location(level, file, line, func, format, ...) #define gp_logv(level, domain, format, args) /**/ #define gp_log_data(domain, data, size) /**/ #ifdef _GPHOTO2_INTERNAL_CODE #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define GP_DEBUG(...) /* no-op */ #define GP_LOG_D(...) /* no-op */ #define GP_LOG_E(...) /* no-op */ #define GP_LOG_DATA(DATA, SIZE, ...) /* no-op */ #elif defined(__GNUC__) #define GP_DEBUG(msg, params...) /* no-op */ #define GP_LOG_D(...) /* no-op */ #define GP_LOG_E(...) /* no-op */ #define GP_LOG_DATA(DATA, SIZE, ...) /* no-op */ #else #define GP_DEBUG (void) #define GP_LOG_D (void /* no-op */ #define GP_LOG_E (void) /* no-op */ #define GP_LOG_DATA(void) /* no-op */ #endif #endif /* _GPHOTO2_INTERNAL_CODE */ #endif /* DISABLE_DEBUGGING */ #ifdef _GPHOTO2_INTERNAL_CODE typedef struct StringFlagItem { char *str; unsigned int flag; } StringFlagItem; typedef void (*string_item_func) (const char *str, void *data); const char * gpi_enum_to_string(const unsigned int _enum, const StringFlagItem *map); int gpi_string_to_enum(const char *str, unsigned int *result, const StringFlagItem *map); void gpi_flags_to_string_list(const unsigned int flags, const StringFlagItem *map, string_item_func func, void *data); int gpi_string_or_to_flags(const char *str, unsigned int *flags, const StringFlagItem *map); unsigned int gpi_string_to_flag(const char *str, const StringFlagItem *map); unsigned int gpi_string_list_to_flags(const char *str[], const StringFlagItem *map); /* Allocates a sufficiently large buffer and interpolates the format * string with the proveded va_list args. The returned memory has to * be freed by the caller. */ char* gpi_vsnprintf (const char* format, va_list args); #define C_MEM(MEM) do {\ if ((MEM) == NULL) {\ GP_LOG_E ("Out of memory: '%s' failed.", #MEM);\ return GP_ERROR_NO_MEMORY;\ }\ } while(0) #define C_PARAMS(PARAMS) do {\ if (!(PARAMS)) {\ GP_LOG_E ("Invalid parameters: '%s' is NULL/FALSE.", #PARAMS);\ return GP_ERROR_BAD_PARAMETERS;\ }\ } while(0) #define C_PARAMS_MSG(PARAMS, MSG, ...) do {\ if (!(PARAMS)) {\ GP_LOG_E ("Invalid parameters: " #MSG " ('%s' is NULL/FALSE.)", ##__VA_ARGS__, #PARAMS);\ return GP_ERROR_BAD_PARAMETERS;\ }\ } while(0) #endif /* _GPHOTO2_INTERNAL_CODE */ #endif /* __GPHOTO2_PORT_LOG_H__ */ libgphoto2-2.5.9/libgphoto2_port/gphoto2/gphoto2-port.h0000644000175000001440000002030312610415524017727 00000000000000/** \file * * \author Copyright 2001 Lutz Mueller * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_PORT_H__ #define __GPHOTO2_PORT_H__ #include /* For portability */ #include #ifdef OS2 #include #include #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifndef TRUE #define TRUE (0==0) #endif #ifndef FALSE #define FALSE (1==0) #endif /** * \brief Serial parity * * Parity of the serial port. */ typedef enum _GPPortSerialParity { GP_PORT_SERIAL_PARITY_OFF = 0, /**< \brief Parity is off (disabled) */ GP_PORT_SERIAL_PARITY_EVEN, /**< \brief Parity is even. */ GP_PORT_SERIAL_PARITY_ODD /**< \brief Parity is odd. */ } GPPortSerialParity; /** \brief Maximum length of receive buffer */ #define GP_PORT_MAX_BUF_LEN 4096 /** * \brief Port settings for serial ports. */ typedef struct _GPPortSettingsSerial { char port[128]; /**< The portname (/dev/ttyX)*/ int speed; /**< The baudrate of the device. */ int bits; /**< How many bits data. */ GPPortSerialParity parity; /**< parity data, see GP_PORT_SERIAL_PARITY_ defines */ int stopbits; /**< How many stop bits are used. */ } GPPortSettingsSerial; /** * \brief Port settings for USB ports. */ typedef struct _GPPortSettingsUSB { int inep; /**< \brief Bulk IN endpoint used. */ int outep; /**< \brief Bulk OUT endpoint used. */ int intep; /**< \brief Interrupt endpoint used. */ int config; /**< \brief USB bConfigurationValue used. */ int interface; /**< \brief USB Interface number used. */ int altsetting; /**< \brief USB Alternative Setting used. */ int maxpacketsize; /**< \brief Maximum USB packetsize of the IN endpoint. (r/o) */ /* must be last to avoid binary incompatibility. * luckily we just need to make sure this struct does not * get larger than _GPPortSettingsSerial. */ char port[64]; /**< \brief USB Portname. Specific to lowlevel USB. */ } GPPortSettingsUSB; /** * \brief Port settings for USB mass storage direct IO ports. */ typedef struct _GPPortSettingsUsbDiskDirect { char path[128]; /**< /brief The ports device node path (/dev/sdX)*/ } GPPortSettingsUsbDiskDirect; /** * \brief Port settings for USB Mass Storage raw SCSI ports. */ typedef struct _GPPortSettingsUsbScsi { char path[128]; /**< /brief The ports device node path (/dev/sg#)*/ } GPPortSettingsUsbScsi; /** * \brief Union of port settings. * * This contains a shared union of possible settings for ports needing * them. */ typedef union _GPPortSettings { GPPortSettingsSerial serial; /**< \brief Serial specific settings */ GPPortSettingsUSB usb; /**< \brief USB specific settings */ GPPortSettingsUsbDiskDirect usbdiskdirect; /**< \brief usb disk direct port specific settings */ GPPortSettingsUsbScsi usbscsi; /**< \brief usb scsi port specific settings */ } GPPortSettings; enum { GP_PORT_USB_ENDPOINT_IN, /**< \brief USB bulk IN ep */ GP_PORT_USB_ENDPOINT_OUT, /**< \brief USB bulk OUT ep */ GP_PORT_USB_ENDPOINT_INT /**< \brief USB Interrupt ep */ }; typedef struct _GPPortPrivateLibrary GPPortPrivateLibrary; typedef struct _GPPortPrivateCore GPPortPrivateCore; /** * \brief The GPhoto port structure. * * This structure tracks the physical connection of the device. * It can correspond the various methods of lowlevel access, serial * usb and others and abstracts them as much as possible. * * Frontends should consider this structure opaque and only use accessor * functions. * * Camera drivers should only access the type and pl members directly, * and use accessor functions for the rest. */ typedef struct _GPPort { /* For your convenience */ GPPortType type; /**< \brief Actual type of this port */ GPPortSettings settings; /**< \brief Current port settings. */ GPPortSettings settings_pending;/**< \brief Settings to be committed. */ int timeout; /**< \brief Port timeout in milliseconds. */ GPPortPrivateLibrary *pl; /**< \brief Camera driver private data pointer. */ GPPortPrivateCore *pc; /**< \brief Port library private data pointer. */ } GPPort; int gp_port_new (GPPort **port); int gp_port_free (GPPort *port); int gp_port_set_info (GPPort *port, GPPortInfo info); int gp_port_get_info (GPPort *port, GPPortInfo *info); int gp_port_open (GPPort *port); int gp_port_close (GPPort *port); int gp_port_reset (GPPort *port); int gp_port_write (GPPort *port, const char *data, int size); int gp_port_read (GPPort *port, char *data, int size); int gp_port_check_int (GPPort *port, char *data, int size); int gp_port_check_int_fast (GPPort *port, char *data, int size); int gp_port_get_timeout (GPPort *port, int *timeout); int gp_port_set_timeout (GPPort *port, int timeout); int gp_port_set_settings (GPPort *port, GPPortSettings settings); int gp_port_get_settings (GPPort *port, GPPortSettings *settings); /** * \brief Serial pins. * * A number of serial pins to trigger and pull. This is necessary * for some devices that have more than just the regular 3 or 4 wires. */ typedef enum _GPPin { GP_PIN_RTS, /**< \brief RTS line */ GP_PIN_DTR, /**< \brief DTR line */ GP_PIN_CTS, /**< \brief CTS line */ GP_PIN_DSR, /**< \brief DSR line */ GP_PIN_CD, /**< \brief Carrier Detect line */ GP_PIN_RING /**< \brief RING (Modem) line */ } GPPin; /** * \brief Level to pull specific lines. * * The level on which to pull some of the serial lines. */ typedef enum _GPLevel { GP_LEVEL_LOW = 0, /**< \brief Pull to low (0V) */ GP_LEVEL_HIGH = 1 /**< \brief Pull to high (nV) */ } GPLevel; int gp_port_get_pin (GPPort *port, GPPin pin, GPLevel *level); int gp_port_set_pin (GPPort *port, GPPin pin, GPLevel level); int gp_port_send_break (GPPort *port, int duration); int gp_port_flush (GPPort *port, int direction); int gp_port_usb_find_device (GPPort *port, int idvendor, int idproduct); int gp_port_usb_find_device_by_class (GPPort *port, int mainclass, int subclass, int protocol); int gp_port_usb_clear_halt (GPPort *port, int ep); int gp_port_usb_msg_write (GPPort *port, int request, int value, int index, char *bytes, int size); int gp_port_usb_msg_read (GPPort *port, int request, int value, int index, char *bytes, int size); int gp_port_usb_msg_interface_write (GPPort *port, int request, int value, int index, char *bytes, int size); int gp_port_usb_msg_interface_read (GPPort *port, int request, int value, int index, char *bytes, int size); int gp_port_usb_msg_class_write (GPPort *port, int request, int value, int index, char *bytes, int size); int gp_port_usb_msg_class_read (GPPort *port, int request, int value, int index, char *bytes, int size); int gp_port_seek (GPPort *port, int offset, int whence); int gp_port_send_scsi_cmd (GPPort *port, int to_dev, char *cmd, int cmd_size, char *sense, int sense_size, char *data, int data_size); /* Error reporting */ int gp_port_set_error (GPPort *port, const char *format, ...) #ifdef __GNUC__ __attribute__((__format__(printf,2,3))) #endif ; const char *gp_port_get_error (GPPort *port); /* DEPRECATED */ /** \deprecated internal typedef */ typedef GPPort gp_port; /** \deprecated internal typedef */ typedef GPPortSettings gp_port_settings; /** \deprecated internal define */ #define PIN_CTS GP_PIN_CTS #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_PORT_H__ */ libgphoto2-2.5.9/libgphoto2_port/gphoto2/gphoto2-port-library.h0000644000175000001440000000762112610415536021404 00000000000000/** \file gphoto2-port-library.h * * \author Copyright 2001 Lutz Mueller * * \par License * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_PORT_LIBRARY_H__ #define __GPHOTO2_PORT_LIBRARY_H__ #include #include /** * \brief The port operations * * These operations are to be implemented and set by the port library, * which drives the lowlevel protocol (serial, usb, etc.). * * They are acessed using the accessor functions, like gp_port_open(), * gp_port_read() and gp_port_write(). */ typedef struct _GPPortOperations { int (*init) (GPPort *); int (*exit) (GPPort *); int (*open) (GPPort *); int (*close) (GPPort *); int (*read) (GPPort *, char *, int); int (*check_int)(GPPort *, char *, int, int); int (*write) (GPPort *, const char *, int); int (*update) (GPPort *); /* Pointers to devices. Please note these are stubbed so there is no need to #ifdef GP_PORT_* anymore. */ /* for serial devices */ int (*get_pin) (GPPort *, GPPin, GPLevel*); int (*set_pin) (GPPort *, GPPin, GPLevel); int (*send_break)(GPPort *, int); int (*flush) (GPPort *, int); /* for USB devices */ int (*find_device)(GPPort * dev, int idvendor, int idproduct); int (*find_device_by_class)(GPPort * dev, int class, int subclass, int protocol); int (*clear_halt) (GPPort * dev, int ep); int (*msg_write) (GPPort * dev, int request, int value, int index, char *bytes, int size); int (*msg_read) (GPPort * dev, int request, int value, int index, char *bytes, int size); int (*msg_interface_write) (GPPort * dev, int request, int value, int index, char *bytes, int size); int (*msg_interface_read) (GPPort * dev, int request, int value, int index, char *bytes, int size); int (*msg_class_write) (GPPort * dev, int request, int value, int index, char *bytes, int size); int (*msg_class_read) (GPPort * dev, int request, int value, int index, char *bytes, int size); /* For USB disk direct IO devices */ int (*seek) (GPPort * dev, int offset, int whence); /* For USB Mass Storage raw SCSI ports */ int (*send_scsi_cmd) (GPPort *port, int to_dev, char *cmd, int cmd_size, char *sense, int sense_size, char *data, int data_size); int (*reset) (GPPort *); } GPPortOperations; typedef GPPortType (* GPPortLibraryType) (void); typedef int (* GPPortLibraryList) (GPPortInfoList *list); typedef GPPortOperations *(* GPPortLibraryOperations) (void); /* * If you want to write an io library, you need to implement the following * functions. Everything else in your io library should be declared static. */ GPPortType gp_port_library_type (void); int gp_port_library_list (GPPortInfoList *list); GPPortOperations *gp_port_library_operations (void); #endif /* __GPHOTO2_PORT_LIBRARY_H__ */ libgphoto2-2.5.9/libgphoto2_port/usb/0000755000175000001440000000000012623156264014512 500000000000000libgphoto2-2.5.9/libgphoto2_port/usb/usb-os2.c0000644000175000001440000002054512610415536016072 00000000000000/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ /* gphoto2-port-usb.c - USB transport functions Copyright 1999-2000 Johannes Erdfelt The GPIO Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GPIO Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GPIO Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "config.h" #include #include #include #include #include #include #include #include #include /*#include */ #include int gp_port_usb_list(gp_port_info *list, int *count); int gp_port_usb_init(gp_port *dev); int gp_port_usb_exit(gp_port *dev); int gp_port_usb_open(gp_port *dev); int gp_port_usb_close(gp_port *dev); int gp_port_usb_reset(gp_port *dev); int gp_port_usb_write(gp_port * dev, char *bytes, int size); int gp_port_usb_read(gp_port * dev, char *bytes, int size); int gp_port_usb_update(gp_port * dev); int gp_port_usb_clear_halt_lib(gp_port * dev, int ep); int gp_port_usb_msg_read_lib(gp_port * dev, int value, char *bytes, int size); int gp_port_usb_msg_write_lib(gp_port * dev, int value, char *bytes, int size); int gp_port_usb_find_device_lib(gp_port *dev, int idvendor, int idproduct); /* Dynamic library functions --------------------------------------------------------------------- */ gp_port_type gp_port_library_type () { return (GP_PORT_USB); } gp_port_operations *gp_port_library_operations () { gp_port_operations *ops; ops = calloc(1, sizeof(gp_port_operations)); if (!ops) return NULL; ops->init = gp_port_usb_init; ops->exit = gp_port_usb_exit; ops->open = gp_port_usb_open; ops->close = gp_port_usb_close; ops->read = gp_port_usb_read; ops->write = gp_port_usb_write; ops->update = gp_port_usb_update; ops->clear_halt = gp_port_usb_clear_halt_lib; ops->msg_write = gp_port_usb_msg_write_lib; ops->msg_read = gp_port_usb_msg_read_lib; ops->find_device = gp_port_usb_find_device_lib; return (ops); } int gp_port_library_list(gp_port_info *list, int *count) { list[*count].type = GP_PORT_USB; strcpy(list[*count].name, "Universal Serial Bus"); strcpy(list[*count].path, "usb:"); /* list[*count].argument_needed = 0; */ *count += 1; return GP_OK; } int gp_port_usb_init(gp_port *dev) { /* usb_init(); usb_find_busses(); usb_find_devices();*/ return (GP_OK); } int gp_port_usb_exit(gp_port *dev) { return (GP_OK); } int gp_port_usb_open(gp_port *dev) { int ret; void *udev; if (dev->debug_level) printf ("gp_port_usb_open() called\n"); /* Open the device using the previous usb_handle returned by find_device */ udev = dev->device_handle; /*dev->device_handle = usb_open(udev);*/ if (!dev->device_handle) return GP_ERROR_IO_OPEN; /*ret = usb_set_configuration(dev->device_handle, dev->settings.usb.config);*/ if (ret < 0) { fprintf(stderr, "gp_port_usb_open: could not set config %d: %s\n", dev->settings.usb.config, strerror(errno)); return GP_ERROR_IO_OPEN; } /*ret = usb_claim_interface(dev->device_handle, dev->settings.usb.interface);*/ if (ret < 0) { fprintf(stderr, "gp_port_usb_open: could not claim intf %d: %s\n", dev->settings.usb.interface, strerror(errno)); return GP_ERROR_IO_OPEN; } /*ret = usb_set_altinterface(dev->device_handle, dev->settings.usb.altsetting);*/ if (ret < 0) { fprintf(stderr, "gp_port_usb_open: could not set intf %d/%d: %s\n", dev->settings.usb.interface, dev->settings.usb.altsetting, strerror(errno)); return GP_ERROR_IO_OPEN; } return GP_OK; } int gp_port_usb_close(gp_port *dev) { if (dev->debug_level) printf ("gp_port_usb_close() called\n"); /*if (usb_close(dev->device_handle) < 0) fprintf(stderr, "gp_port_usb_close: %s\n", strerror(errno)); */ dev->device_handle = NULL; return GP_OK; } int gp_port_usb_reset(gp_port *dev) { /*gp_port_usb_close(dev); return gp_port_usb_open(dev);*/ } int gp_port_usb_clear_halt_lib(gp_port * dev, int ep) { int ret=0; switch (ep) { case GP_PORT_USB_ENDPOINT_IN : /*ret=usb_clear_halt(dev->device_handle, dev->settings.usb.inep);*/ break; case GP_PORT_USB_ENDPOINT_OUT : /*ret=usb_clear_halt(dev->device_handle, dev->settings.usb.outep);*/ case GP_PORT_USB_ENDPOINT_INT : /*ret=usb_clear_halt(dev->device_handle, dev->settings.usb.intep);*/ break; default: fprintf(stderr,"gp_port_usb_clear_halt: bad EndPoint argument\n"); return GP_ERROR_IO_USB_CLEAR_HALT; } return (ret ? GP_ERROR_IO_USB_CLEAR_HALT : GP_OK); } int gp_port_usb_write(gp_port * dev, char *bytes, int size) { int ret; /* if (dev->debug_level) { int i; printf("gp_port_usb_write(): "); for (i = 0; i < size; i++) printf("%02x ",(unsigned char)bytes[i]); printf("\n"); } */ /*ret = usb_bulk_write(dev->device_handle, dev->settings.usb.outep, bytes, size, dev->timeout);*/ if (ret < 0) return (GP_ERROR_IO_WRITE); return (ret); } int gp_port_usb_read(gp_port * dev, char *bytes, int size) { int ret; /*ret = usb_bulk_read(dev->device_handle, dev->settings.usb.inep, bytes, size, dev->timeout);*/ if (ret < 0) return GP_ERROR_IO_READ; /* if (dev->debug_level) { int i; printf("gp_port_usb_read(timeout=%d): ", dev->timeout); for (i = 0; i < ret; i++) printf("%02x ",(unsigned char)(bytes[i])); printf("\n"); } */ return ret; } int gp_port_usb_msg_write_lib(gp_port * dev, int value, char *bytes, int size) { /*return usb_control_msg(dev->device_handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE, size > 1 ? 0x04 : 0x0c, value, 0, bytes, size, dev->timeout);*/ } int gp_port_usb_msg_read_lib(gp_port * dev, int value, char *bytes, int size) { /*return usb_control_msg(dev->device_handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | 0x80, size > 1 ? 0x04 : 0x0c, value, 0, bytes, size, dev->timeout);*/ } /* * This function applys changes to the device * (At this time it does nothing) */ int gp_port_usb_update(gp_port * dev) { memcpy(&dev->settings, &dev->settings_pending, sizeof(dev->settings)); return GP_OK; } int gp_port_usb_find_device_lib(gp_port * d, int idvendor, int idproduct) { /*struct usb_bus *bus; struct usb_device *dev; for (bus = usb_busses; bus; bus = bus->next) { for (dev = bus->devices; dev; dev = dev->next) { if ((dev->descriptor.idVendor == idvendor) && (dev->descriptor.idProduct == idproduct)) { if (d) d->device_handle = dev; return GP_OK; } } } */ return GP_ERROR_IO_USB_FIND; } libgphoto2-2.5.9/libgphoto2_port/usb/Makefile-files0000644000175000001440000000053712610415510017163 00000000000000# -*- Makefile -*- EXTRA_DIST += usb/usb-os2.c EXTRA_LTLIBRARIES += usb.la usb_la_LDFLAGS = $(iolib_ldflags) usb_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ $(INTL_CFLAGS) \ $(LIBUSB_CFLAGS) \ $(CPPFLAGS) usb_la_DEPENDENCIES = $(iolib_dependencies) usb_la_LIBADD = $(iolib_libadd) usb_la_LIBADD += $(LIBUSB_LIBS) $(INTLLIBS) usb_la_SOURCES = usb/libusb.c libgphoto2-2.5.9/libgphoto2_port/usb/libusb.c0000644000175000001440000011246712614217654016072 00000000000000/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ /* gphoto2-port-usb.c * * Copyright 2001 Lutz Mueller * Copyright 1999-2000 Johannes Erdfelt * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define _BSD_SOURCE #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #define CHECK(result) {int r=(result); if (r<0) return (r);} struct _GPPortPrivateLibrary { void *dh; struct usb_device *d; int config; int interface; int altsetting; int detached; }; GPPortType gp_port_library_type (void) { return (GP_PORT_USB); } int gp_port_library_list (GPPortInfoList *list) { GPPortInfo info; struct usb_bus *bus; struct usb_device *dev; int nrofdevices = 0, i, i1, i2, unknownint; /* generic matcher. This will catch passed XXX,YYY entries for instance. */ gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_USB); gp_port_info_set_name (info, ""); gp_port_info_set_path (info, "^usb:"); CHECK (gp_port_info_list_append (list, info)); usb_init (); usb_find_busses (); usb_find_devices (); bus = usb_get_busses(); /* Look and enumerate all USB ports. */ while (bus) { for (dev = bus->devices; dev; dev = dev->next) { /* Devices which are definitely not cameras. */ if ( (dev->descriptor.bDeviceClass == USB_CLASS_HUB) || (dev->descriptor.bDeviceClass == USB_CLASS_HID) || (dev->descriptor.bDeviceClass == USB_CLASS_PRINTER) || (dev->descriptor.bDeviceClass == USB_CLASS_COMM) || (dev->descriptor.bDeviceClass == 0xe0) /* wireless / bluetooth */ ) continue; /* excepts HUBs, usually the interfaces have the classes, not * the device */ unknownint = 0; for (i = 0; i < dev->descriptor.bNumConfigurations; i++) { if (!dev->config) { unknownint++; continue; } for (i1 = 0; i1 < dev->config[i].bNumInterfaces; i1++) for (i2 = 0; i2 < dev->config[i].interface[i1].num_altsetting; i2++) { struct usb_interface_descriptor *intf = &dev->config[i].interface[i1].altsetting[i2]; if ( (intf->bInterfaceClass == USB_CLASS_HID) || (intf->bInterfaceClass == USB_CLASS_PRINTER) || (intf->bInterfaceClass == USB_CLASS_COMM) || (intf->bInterfaceClass == 0xe0) /* wireless/bluetooth*/ ) continue; unknownint++; } } /* when we find only hids, printer or comm ifaces ... skip this */ if (!unknownint) continue; /* Note: We do not skip USB storage. Some devices can support both, * and the Ricoh erronously reports it. */ nrofdevices++; } bus = bus->next; } #if 0 /* If we already added usb:, and have 0 or 1 devices we have nothing to do. * This should be the standard use case. */ /* We never want to return just "usb:" ... also return "usb:XXX,YYY", and * let upper layers filter out the usb: */ if (nrofdevices <= 1) return (GP_OK); #endif /* Redo the same bus/device walk, but now add the ports with usb:x,y notation, * so we can address all USB devices. */ bus = usb_get_busses(); while (bus) { for (dev = bus->devices; dev; dev = dev->next) { char *s; char path[200]; /* Devices which are definitely not cameras. */ if ( (dev->descriptor.bDeviceClass == USB_CLASS_HUB) || (dev->descriptor.bDeviceClass == USB_CLASS_HID) || (dev->descriptor.bDeviceClass == USB_CLASS_PRINTER) || (dev->descriptor.bDeviceClass == USB_CLASS_COMM) ) continue; /* excepts HUBs, usually the interfaces have the classes, not * the device */ unknownint = 0; for (i = 0; i < dev->descriptor.bNumConfigurations; i++) { if (!dev->config) { unknownint++; continue; } for (i1 = 0; i1 < dev->config[i].bNumInterfaces; i1++) for (i2 = 0; i2 < dev->config[i].interface[i1].num_altsetting; i2++) { struct usb_interface_descriptor *intf = &dev->config[i].interface[i1].altsetting[i2]; if ( (intf->bInterfaceClass == USB_CLASS_HID) || (intf->bInterfaceClass == USB_CLASS_PRINTER) || (intf->bInterfaceClass == USB_CLASS_COMM)) continue; unknownint++; } } /* when we find only hids, printer or comm ifaces ... skip this */ if (!unknownint) continue; /* Note: We do not skip USB storage. Some devices can support both, * and the Ricoh erronously reports it. */ gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_USB); gp_port_info_set_name (info, "Universal Serial Bus"); snprintf (path,sizeof(path), "usb:%s,%s", bus->dirname, dev->filename); /* On MacOS X we might get usb:006,002-04a9-3139-00-00. */ s = strchr(path, '-');if (s) *s='\0'; gp_port_info_set_path (info, path); CHECK (gp_port_info_list_append (list, info)); } bus = bus->next; } /* This will only be added if no other device was ever added. * Users doing "usb:" usage will enter the regular expression matcher case. */ if (nrofdevices == 0) { gp_port_info_new (&info); gp_port_info_set_type (info, GP_PORT_USB); gp_port_info_set_name (info, "Universal Serial Bus"); gp_port_info_set_path (info, "usb:"); CHECK (gp_port_info_list_append (list, info)); } return (GP_OK); } static int gp_port_usb_init (GPPort *port) { C_MEM (port->pl = calloc (1, sizeof (GPPortPrivateLibrary))); port->pl->config = port->pl->interface = port->pl->altsetting = -1; usb_init (); usb_find_busses (); usb_find_devices (); return (GP_OK); } static int gp_port_usb_exit (GPPort *port) { free (port->pl); port->pl = NULL; return (GP_OK); } static int gp_port_usb_find_path_lib(GPPort *); static int gp_port_usb_open (GPPort *port) { int ret; char name[64]; GP_LOG_D ("gp_port_usb_open(%p)", port); C_PARAMS (port); if (!port->pl->d) { ret = gp_port_usb_find_path_lib(port); C_PARAMS (port->pl->d); } /* * Open the device using the previous usb_handle returned by * find_device */ port->pl->dh = usb_open (port->pl->d); if (!port->pl->dh) { int saved_errno = errno; gp_port_set_error (port, _("Could not open USB device (%s)."), strerror(saved_errno)); return GP_ERROR_IO; } #if defined(LIBUSB_HAS_GET_DRIVER_NP) && defined(LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP) memset(name,0,sizeof(name)); ret = usb_get_driver_np (port->pl->dh, port->settings.usb.interface, name, sizeof(name) ); if (name[0] != 0) GP_LOG_D ("Device has driver '%s' attached.", name); if (strstr(name,"usbfs") || strstr(name,"storage")) { /* other gphoto instance most likely */ gp_port_set_error (port, _("Camera is already in use.")); return GP_ERROR_IO_LOCK; } if (ret >= 0) { GP_LOG_D ("Device has driver '%s' attached, detaching it now.", name); ret = usb_detach_kernel_driver_np (port->pl->dh, port->settings.usb.interface); if (ret < 0) gp_port_set_error (port, _("Could not detach kernel driver '%s' of camera device."),name); else port->pl->detached = 1; } else { if (errno != ENODATA) /* ENODATA - just no driver there */ gp_port_set_error (port, _("Could not query kernel driver of device.")); } #endif GP_LOG_D ("claiming interface %d", port->settings.usb.interface); ret = usb_claim_interface (port->pl->dh, port->settings.usb.interface); if (ret < 0) { int saved_errno = errno; gp_port_set_error (port, _("Could not claim interface %d (%s). " "Make sure no other program (%s) " "or kernel module (such as %s) " "is using the device and you have " "read/write access to the device." ), port->settings.usb.interface, strerror(saved_errno), #ifdef __linux__ "gvfs-gphoto2-volume-monitor", #else #if defined(__APPLE__) N_("MacOS PTPCamera service"), #else N_("unknown libgphoto2 using program"), #endif #endif "sdc2xx, stv680, spca50x"); return GP_ERROR_IO_USB_CLAIM; } return GP_OK; } static int gp_port_usb_close (GPPort *port) { C_PARAMS (port && port->pl->dh); if (usb_release_interface (port->pl->dh, port->settings.usb.interface) < 0) { int saved_errno = errno; gp_port_set_error (port, _("Could not release " "interface %d (%s)."), port->settings.usb.interface, strerror(saved_errno)); return (GP_ERROR_IO); } #if 0 /* This confuses the EOS 5d camera and possible other EOSs. *sigh* */ /* This is only for our very special Canon cameras which need a good * whack after close, otherwise they get timeouts on reconnect. */ if (port->pl->d->descriptor.idVendor == 0x04a9) { if (usb_reset (port->pl->dh) < 0) { int saved_errno = errno; gp_port_set_error (port, _("Could not reset " "USB port (%s)."), strerror(saved_errno)); return (GP_ERROR_IO); } } #endif #if defined(LIBUSB_HAS_GET_DRIVER_NP) && defined(LIBUSB_HAS_DETACH_KERNEL_DRIVER_NP) && defined(USBDEVFS_CONNECT) if (port->pl->detached) { char filename[PATH_MAX + 1]; int fd; /* FIXME shouldn't be a fixed path to usb root */ snprintf(filename, sizeof(filename) - 1, "%s/%s/%s", "/dev/bus/usb", port->pl->d->bus->dirname, port->pl->d->filename); fd = open(filename, O_RDWR); if (fd >= 0) { struct usbdevfs_ioctl command; command.ifno = 0; command.ioctl_code = USBDEVFS_CONNECT; command.data = NULL; if (ioctl(fd, USBDEVFS_IOCTL, &command)) GP_LOG_D ("reattach kernel driver failed"); close(fd); } } #endif if (usb_close (port->pl->dh) < 0) { int saved_errno = errno; gp_port_set_error (port, _("Could not close USB port (%s)."), strerror(saved_errno)); return (GP_ERROR_IO); } port->pl->dh = NULL; return GP_OK; } static int gp_port_usb_clear_halt_lib(GPPort *port, int ep) { int ret=0; C_PARAMS (port && port->pl->dh); switch (ep) { case GP_PORT_USB_ENDPOINT_IN : ret=usb_clear_halt(port->pl->dh, port->settings.usb.inep); break; case GP_PORT_USB_ENDPOINT_OUT : ret=usb_clear_halt(port->pl->dh, port->settings.usb.outep); break; case GP_PORT_USB_ENDPOINT_INT : ret=usb_clear_halt(port->pl->dh, port->settings.usb.intep); break; default: gp_port_set_error (port, "gp_port_usb_clear_halt: " "bad EndPoint argument"); return GP_ERROR_BAD_PARAMETERS; } return (ret ? GP_ERROR_IO_USB_CLEAR_HALT : GP_OK); } static int gp_port_usb_write (GPPort *port, const char *bytes, int size) { int ret; C_PARAMS (port && port->pl->dh); ret = usb_bulk_write (port->pl->dh, port->settings.usb.outep, (char *) bytes, size, port->timeout); if (ret < 0) return (GP_ERROR_IO_WRITE); return (ret); } static int gp_port_usb_read(GPPort *port, char *bytes, int size) { int ret; C_PARAMS (port && port->pl->dh); ret = usb_bulk_read(port->pl->dh, port->settings.usb.inep, bytes, size, port->timeout); if (ret < 0) return GP_ERROR_IO_READ; return ret; } static int gp_port_usb_reset(GPPort *port) { int ret; GP_LOG_D ("Reseting port"); C_PARAMS (port && port->pl->dh); ret = usb_reset(port->pl->dh); if (ret < 0) { GP_LOG_E ("gp_port_reset: %d", ret); return GP_ERROR_IO_READ; } return GP_OK; } static int gp_port_usb_check_int (GPPort *port, char *bytes, int size, int timeout) { int ret; C_PARAMS (port && port->pl->dh && timeout >= 0); ret = usb_interrupt_read(port->pl->dh, port->settings.usb.intep, bytes, size, timeout); if (ret < 0) { if ((errno == EAGAIN) || (errno == ETIMEDOUT)) return GP_ERROR_TIMEOUT; return GP_ERROR_IO_READ; } return ret; } static int gp_port_usb_msg_write_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { C_PARAMS (port && port->pl->dh); return usb_control_msg(port->pl->dh, USB_TYPE_VENDOR | USB_RECIP_DEVICE, request, value, index, bytes, size, port->timeout); } static int gp_port_usb_msg_read_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { C_PARAMS (port && port->pl->dh); return usb_control_msg(port->pl->dh, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, request, value, index, bytes, size, port->timeout); } /* The next two functions support the nonstandard request types 0x41 (write) * and 0xc1 (read), which are occasionally needed. */ static int gp_port_usb_msg_interface_write_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { C_PARAMS (port && port->pl->dh); return usb_control_msg(port->pl->dh, USB_TYPE_VENDOR | USB_RECIP_INTERFACE, request, value, index, bytes, size, port->timeout); } static int gp_port_usb_msg_interface_read_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { C_PARAMS (port && port->pl->dh); return usb_control_msg(port->pl->dh, USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_ENDPOINT_IN, request, value, index, bytes, size, port->timeout); } /* The next two functions support the nonstandard request types 0x21 (write) * and 0xa1 (read), which are occasionally needed. */ static int gp_port_usb_msg_class_write_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { C_PARAMS (port && port->pl->dh); return usb_control_msg(port->pl->dh, USB_TYPE_CLASS | USB_RECIP_INTERFACE, request, value, index, bytes, size, port->timeout); } static int gp_port_usb_msg_class_read_lib(GPPort *port, int request, int value, int index, char *bytes, int size) { C_PARAMS (port && port->pl->dh); return usb_control_msg(port->pl->dh, USB_TYPE_CLASS | USB_RECIP_INTERFACE | USB_ENDPOINT_IN, request, value, index, bytes, size, port->timeout); } /* * This function applys changes to the device. * * New settings are in port->settings_pending and the old ones * are in port->settings. Compare them first and only call * usb_set_configuration() and usb_set_altinterface() if needed * since some USB devices does not like it if this is done * more than necessary (Canon Digital IXUS 300 for one). * */ static int gp_port_usb_update (GPPort *port) { int ret, ifacereleased = FALSE; C_PARAMS (port); GP_LOG_D ("gp_port_usb_update(old int=%d, conf=%d, alt=%d) port %s, (new int=%d, conf=%d, alt=%d), port %s", port->settings.usb.interface, port->settings.usb.config, port->settings.usb.altsetting, port->settings.usb.port, port->settings_pending.usb.interface, port->settings_pending.usb.config, port->settings_pending.usb.altsetting, port->settings_pending.usb.port ); #if 0 if (port->pl->interface == -1) port->pl->interface = port->settings.usb.interface; if (port->pl->config == -1) port->pl->config = port->settings.usb.config; if (port->pl->altsetting == -1) port->pl->altsetting = port->settings.usb.altsetting; #endif /* The portname can also be changed with the device still fully closed. */ memcpy(&port->settings.usb.port, &port->settings_pending.usb.port, sizeof(port->settings.usb.port)); if (!port->pl->dh) return GP_OK; /* the port might not be opened, yet. that is ok */ memcpy(&port->settings.usb, &port->settings_pending.usb, sizeof(port->settings.usb)); /* The interface changed. release the old, claim the new ... */ if (port->settings.usb.interface != port->pl->interface) { GP_LOG_D ("changing interface %d -> %d", port->pl->interface, port->settings.usb.interface ); if (usb_release_interface (port->pl->dh, port->pl->interface) < 0) { GP_LOG_D ("releasing the iface for config failed."); /* Not a hard error for now. -Marcus */ } else { GP_LOG_D ("claiming interface %d", port->settings.usb.interface); ret = usb_claim_interface (port->pl->dh, port->settings.usb.interface); if (ret < 0) { GP_LOG_D ("reclaiming the iface for config failed."); return GP_ERROR_IO_UPDATE; } port->pl->interface = port->settings.usb.interface; } } if (port->settings.usb.config != port->pl->config) { GP_LOG_D ("changing config %d -> %d", port->pl->config, port->settings.usb.config ); /* This can only be changed with the interface released. * This is a hard requirement since 2.6.12. */ if (usb_release_interface (port->pl->dh, port->settings.usb.interface) < 0) { GP_LOG_D ("releasing the iface for config failed."); ifacereleased = FALSE; } else { ifacereleased = TRUE; } ret = usb_set_configuration(port->pl->dh, port->settings.usb.config); if (ret < 0) { #if 0 /* setting the configuration failure is not fatal */ int saved_errno = errno; gp_port_set_error (port, _("Could not set config %d/%d (%s)"), port->settings.usb.interface, port->settings.usb.config, strerror(saved_errno)); return GP_ERROR_IO_UPDATE; #endif GP_LOG_E ("setting configuration from %d to %d failed with ret = %d, but continue...", port->pl->config, port->settings.usb.config, ret); } GP_LOG_D ("Changed usb.config from %d to %d", port->pl->config, port->settings.usb.config); if (ifacereleased) { GP_LOG_D ("claiming interface %d", port->settings.usb.interface); ret = usb_claim_interface (port->pl->dh, port->settings.usb.interface); if (ret < 0) GP_LOG_D ("reclaiming the iface for config failed."); } /* * Copy at once if something else fails so that this * does not get re-applied */ port->pl->config = port->settings.usb.config; } /* This can be changed with interface claimed. (And I think it must be claimed.) */ if (port->settings.usb.altsetting != port->pl->altsetting) { ret = usb_set_altinterface(port->pl->dh, port->settings.usb.altsetting); if (ret < 0) { int saved_errno = errno; gp_port_set_error (port, _("Could not set altsetting from %d " "to %d (%s)"), port->pl->altsetting, port->settings.usb.altsetting, strerror(saved_errno)); return GP_ERROR_IO_UPDATE; } GP_LOG_D ("Changed usb.altsetting from %d to %d", port->pl->altsetting, port->settings.usb.altsetting); port->pl->altsetting = port->settings.usb.altsetting; } return GP_OK; } static int gp_port_usb_find_ep(struct usb_device *dev, int config, int interface, int altsetting, int direction, int type) { struct usb_interface_descriptor *intf; int i; if (!dev->config) return -1; intf = &dev->config[config].interface[interface].altsetting[altsetting]; for (i = 0; i < intf->bNumEndpoints; i++) { if ((intf->endpoint[i].bEndpointAddress & USB_ENDPOINT_DIR_MASK) == direction && (intf->endpoint[i].bmAttributes & USB_ENDPOINT_TYPE_MASK) == type) return intf->endpoint[i].bEndpointAddress; } return -1; } static int gp_port_usb_find_first_altsetting(struct usb_device *dev, int *config, int *interface, int *altsetting) { int i, i1, i2; if (!dev->config) return -1; for (i = 0; i < dev->descriptor.bNumConfigurations; i++) for (i1 = 0; i1 < dev->config[i].bNumInterfaces; i1++) for (i2 = 0; i2 < dev->config[i].interface[i1].num_altsetting; i2++) if (dev->config[i].interface[i1].altsetting[i2].bNumEndpoints) { *config = i; *interface = i1; *altsetting = i2; return 0; } return -1; } static int gp_port_usb_find_device_lib(GPPort *port, int idvendor, int idproduct) { struct usb_bus *bus; struct usb_device *dev; char *s; char busname[64], devname[64]; C_PARAMS (port); s = strchr (port->settings.usb.port,':'); busname[0] = devname[0] = '\0'; if (s && (s[1] != '\0')) { /* usb:%d,%d */ strncpy(busname,s+1,sizeof(busname)); busname[sizeof(busname)-1] = '\0'; s = strchr(busname,','); if (s) { strncpy(devname, s+1,sizeof(devname)); devname[sizeof(devname)-1] = '\0'; *s = '\0'; } else { busname[0] = '\0'; } } /* * NULL idvendor is not valid. * NULL idproduct is ok. * Should the USB layer report that ? I don't know. * Better to check here. */ if (!idvendor) { gp_port_set_error (port, _("The supplied vendor or product " "id (0x%x,0x%x) is not valid."), idvendor, idproduct); return GP_ERROR_BAD_PARAMETERS; } for (bus = usb_busses; bus; bus = bus->next) { if ((busname[0] != '\0') && strcmp(busname, bus->dirname)) continue; for (dev = bus->devices; dev; dev = dev->next) { if ( (devname[0] != '\0') && (dev->filename != strstr(dev->filename, devname)) ) continue; if ((dev->descriptor.idVendor == idvendor) && (dev->descriptor.idProduct == idproduct)) { int config = -1, interface = -1, altsetting = -1; port->pl->d = dev; GP_LOG_D ("Looking for USB device (vendor 0x%x, product 0x%x)... found.", idvendor, idproduct); /* Use the first config, interface and altsetting we find */ gp_port_usb_find_first_altsetting(dev, &config, &interface, &altsetting); /* Set the defaults */ if (dev->config) { int i; if (dev->config[config].interface[interface].altsetting[altsetting].bInterfaceClass == USB_CLASS_MASS_STORAGE) { GP_LOG_D ("USB device (vendor 0x%x, product 0x%x) is a mass" " storage device, and might not function with gphoto2." " Reference: %s", idvendor, idproduct, URL_USB_MASSSTORAGE); } port->settings.usb.config = dev->config[config].bConfigurationValue; port->settings.usb.interface = dev->config[config].interface[interface].altsetting[altsetting].bInterfaceNumber; port->settings.usb.altsetting = dev->config[config].interface[interface].altsetting[altsetting].bAlternateSetting; port->settings.usb.inep = gp_port_usb_find_ep(dev, config, interface, altsetting, USB_ENDPOINT_IN, USB_ENDPOINT_TYPE_BULK); port->settings.usb.outep = gp_port_usb_find_ep(dev, config, interface, altsetting, USB_ENDPOINT_OUT, USB_ENDPOINT_TYPE_BULK); port->settings.usb.intep = gp_port_usb_find_ep(dev, config, interface, altsetting, USB_ENDPOINT_IN, USB_ENDPOINT_TYPE_INTERRUPT); port->settings.usb.maxpacketsize = 0; GP_LOG_D ("inep to look for is %02x", port->settings.usb.inep); for (i=0;iconfig[config].interface[interface].altsetting[altsetting].bNumEndpoints;i++) { if (port->settings.usb.inep == dev->config[config].interface[interface].altsetting[altsetting].endpoint[i].bEndpointAddress) { port->settings.usb.maxpacketsize = dev->config[config].interface[interface].altsetting[altsetting].endpoint[i].wMaxPacketSize; break; } } GP_LOG_D ("Detected defaults: config %d, interface %d, altsetting %d, " "inep %02x, outep %02x, intep %02x, class %02x, subclass %02x", port->settings.usb.config, port->settings.usb.interface, port->settings.usb.altsetting, port->settings.usb.inep, port->settings.usb.outep, port->settings.usb.intep, dev->config[config].interface[interface].altsetting[altsetting].bInterfaceClass, dev->config[config].interface[interface].altsetting[altsetting].bInterfaceSubClass ); } return GP_OK; } } } #if 0 gp_port_set_error (port, _("Could not find USB device " "(vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer."), idvendor, idproduct); #endif return GP_ERROR_IO_USB_FIND; } static int gp_port_usb_find_path_lib(GPPort *port) { struct usb_bus *bus; struct usb_device *dev; char *s; char busname[64], devname[64]; C_PARAMS (port); s = strchr (port->settings.usb.port,':'); busname[0] = devname[0] = '\0'; C_PARAMS (s && s[1] != '\0'); /* generic usb: match ... can't do */ if (s && (s[1] != '\0')) { /* usb:%d,%d */ strncpy(busname,s+1,sizeof(busname)); busname[sizeof(busname)-1] = '\0'; s = strchr(busname,','); C_PARAMS (s); /* generic usb: match ... can't do */ strncpy(devname, s+1,sizeof(devname)); devname[sizeof(devname)-1] = '\0'; *s = '\0'; } for (bus = usb_busses; bus; bus = bus->next) { if (strcmp(busname, bus->dirname)) continue; for (dev = bus->devices; dev; dev = dev->next) { int config = -1, interface = -1, altsetting = -1; if ((dev->filename != strstr(dev->filename, devname))) continue; port->pl->d = dev; GP_LOG_D ("Found device for path %s", port->settings.usb.port); /* Use the first config, interface and altsetting we find */ gp_port_usb_find_first_altsetting(dev, &config, &interface, &altsetting); /* Set the defaults */ if (dev->config) { int i; port->settings.usb.config = dev->config[config].bConfigurationValue; port->settings.usb.interface = dev->config[config].interface[interface].altsetting[altsetting].bInterfaceNumber; port->settings.usb.altsetting = dev->config[config].interface[interface].altsetting[altsetting].bAlternateSetting; port->settings.usb.inep = gp_port_usb_find_ep(dev, config, interface, altsetting, USB_ENDPOINT_IN, USB_ENDPOINT_TYPE_BULK); port->settings.usb.outep = gp_port_usb_find_ep(dev, config, interface, altsetting, USB_ENDPOINT_OUT, USB_ENDPOINT_TYPE_BULK); port->settings.usb.intep = gp_port_usb_find_ep(dev, config, interface, altsetting, USB_ENDPOINT_IN, USB_ENDPOINT_TYPE_INTERRUPT); port->settings.usb.maxpacketsize = 0; GP_LOG_D ("inep to look for is %02x", port->settings.usb.inep); for (i=0;iconfig[config].interface[interface].altsetting[altsetting].bNumEndpoints;i++) { if (port->settings.usb.inep == dev->config[config].interface[interface].altsetting[altsetting].endpoint[i].bEndpointAddress) { port->settings.usb.maxpacketsize = dev->config[config].interface[interface].altsetting[altsetting].endpoint[i].wMaxPacketSize; break; } } GP_LOG_D ("Detected defaults: config %d, interface %d, altsetting %d, " "inep %02x, outep %02x, intep %02x, class %02x, subclass %02x", port->settings.usb.config, port->settings.usb.interface, port->settings.usb.altsetting, port->settings.usb.inep, port->settings.usb.outep, port->settings.usb.intep, dev->config[config].interface[interface].altsetting[altsetting].bInterfaceClass, dev->config[config].interface[interface].altsetting[altsetting].bInterfaceSubClass ); } return GP_OK; } } #if 0 gp_port_set_error (port, _("Could not find USB device " "(vendor 0x%x, product 0x%x). Make sure this device " "is connected to the computer."), idvendor, idproduct); #endif return GP_ERROR_IO_USB_FIND; } /* This function reads the Microsoft OS Descriptor and looks inside to * find if it is a MTP device. This is the similar to the way that * Windows Media Player 10 uses. * It is documented to some degree on various internet pages. */ #if 0 static int gp_port_usb_match_mtp_device(struct usb_device *dev,int *configno, int *interfaceno, int *altsettingno) { char buf[1000], cmd; int ret,i,i1,i2, xifaces,xnocamifaces; usb_dev_handle *devh; /* All of them are "vendor specific" device class */ #if 0 if ((dev->descriptor.bDeviceClass!=0xff) && (dev->descriptor.bDeviceClass!=0)) return 0; #endif xifaces = xnocamifaces = 0; if (dev->config) { for (i = 0; i < dev->descriptor.bNumConfigurations; i++) { unsigned int j; for (j = 0; j < dev->config[i].bNumInterfaces; j++) { int k; xifaces++; for (k = 0; k < dev->config[i].interface[j].num_altsetting; k++) { struct usb_interface_descriptor *intf = &dev->config[i].interface[j].altsetting[k]; if ( (intf->bInterfaceClass == USB_CLASS_HID) || (intf->bInterfaceClass == USB_CLASS_PRINTER) || (intf->bInterfaceClass == USB_CLASS_AUDIO) || (intf->bInterfaceClass == USB_CLASS_HUB) || (intf->bInterfaceClass == USB_CLASS_COMM) || (intf->bInterfaceClass == 0xe0) /* wireless/bluetooth*/ ) xnocamifaces++; } } } } if (xifaces == xnocamifaces) /* only non-camera ifaces */ return 0; /* Marcus: Avoid this probing altogether, its too unstable on some devices */ return 0; #if 0 devh = usb_open (dev); if (!devh) return 0; /* * Loop over the device configurations and interfaces. Nokia MTP-capable * handsets (possibly others) typically have the string "MTP" in their * MTP interface descriptions, that's how they can be detected, before * we try the more esoteric "OS descriptors" (below). */ if (dev->config) { for (i = 0; i < dev->descriptor.bNumConfigurations; i++) { unsigned int j; for (j = 0; j < dev->config[i].bNumInterfaces; j++) { int k; for (k = 0; k < dev->config[i].interface[j].num_altsetting; k++) { buf[0] = '\0'; ret = usb_get_string_simple(devh, dev->config[i].interface[j].altsetting[k].iInterface, (char *) buf, 1024); if (ret < 3) continue; if (strcmp((char *) buf, "MTP") == 0) { GP_LOG_D ("Configuration %d, interface %d, altsetting %d:\n", i, j, k); GP_LOG_D (" Interface description contains the string \"MTP\"\n"); GP_LOG_D (" Device recognized as MTP, no further probing.\n"); goto found; } } } } } /* get string descriptor at 0xEE */ ret = usb_get_descriptor (devh, 0x03, 0xee, buf, sizeof(buf)); if (ret > 0) GP_LOG_DATA (buf, ret, "get_MS_OSD"); if (ret < 10) goto errout; if (!((buf[2] == 'M') && (buf[4]=='S') && (buf[6]=='F') && (buf[8]=='T'))) goto errout; cmd = buf[16]; ret = usb_control_msg (devh, USB_ENDPOINT_IN|USB_RECIP_DEVICE|USB_TYPE_VENDOR, cmd, 0, 4, buf, sizeof(buf), 1000); if (ret == -1) { GP_LOG_E ("control message says %d\n", ret); goto errout; } if (buf[0] != 0x28) { GP_LOG_E ("ret is %d, buf[0] is %x\n", ret, buf[0]); goto errout; } if (ret > 0) GP_LOG_DATA (buf, ret, "get_MS_ExtDesc"); if ((buf[0x12] != 'M') || (buf[0x13] != 'T') || (buf[0x14] != 'P')) { GP_LOG_E ("buf at 0x12 is %02x%02x%02x\n", buf[0x12], buf[0x13], buf[0x14]); goto errout; } ret = usb_control_msg (devh, USB_ENDPOINT_IN|USB_RECIP_DEVICE|USB_TYPE_VENDOR, cmd, 0, 5, buf, sizeof(buf), 1000); if (ret == -1) goto errout; if (buf[0] != 0x28) { GP_LOG_E ("ret is %d, buf[0] is %x\n", ret, buf[0]); goto errout; } if (ret > 0) GP_LOG_DATA (buf, ret, "get_MS_ExtProp"); if ((buf[0x12] != 'M') || (buf[0x13] != 'T') || (buf[0x14] != 'P')) { GP_LOG_E ("buf at 0x12 is %02x%02x%02x\n", buf[0x12], buf[0x13], buf[0x14]); goto errout; } found: usb_close (devh); /* Now chose a nice interface for us to use ... Just take the first. */ if (dev->descriptor.bNumConfigurations > 1) GP_LOG_E ("The device has %d configurations!\n", dev->descriptor.bNumConfigurations); for (i = 0; i < dev->descriptor.bNumConfigurations; i++) { struct usb_config_descriptor *config = &dev->config[i]; if (config->bNumInterfaces > 1) GP_LOG_E ("The configuration has %d interfaces!\n", config->bNumInterfaces); for (i1 = 0; i1 < config->bNumInterfaces; i1++) { struct usb_interface *interface = &config->interface[i1]; if (interface->num_altsetting > 1) GP_LOG_E ("The interface has %d altsettings!\n", interface->num_altsetting); for (i2 = 0; i2 < interface->num_altsetting; i2++) { *configno = i; *interfaceno = i1; *altsettingno = i2; return 1; } } } return 1; errout: usb_close (devh); return 0; #endif } #endif static int gp_port_usb_match_device_by_class(struct usb_device *dev, int class, int subclass, int protocol, int *configno, int *interfaceno, int *altsettingno) { int i, i1, i2; #if 0 if (class == 666) /* Special hack for MTP devices with MS OS descriptors. */ return gp_port_usb_match_mtp_device (dev, configno, interfaceno, altsettingno); #endif if (dev->descriptor.bDeviceClass == class && (subclass == -1 || dev->descriptor.bDeviceSubClass == subclass) && (protocol == -1 || dev->descriptor.bDeviceProtocol == protocol)) return 1; if (!dev->config) return 0; for (i = 0; i < dev->descriptor.bNumConfigurations; i++) { struct usb_config_descriptor *config = &dev->config[i]; for (i1 = 0; i1 < config->bNumInterfaces; i1++) { struct usb_interface *interface = &config->interface[i1]; for (i2 = 0; i2 < interface->num_altsetting; i2++) { struct usb_interface_descriptor *altsetting = &interface->altsetting[i2]; if (altsetting->bInterfaceClass == class && (subclass == -1 || altsetting->bInterfaceSubClass == subclass) && (protocol == -1 || altsetting->bInterfaceProtocol == protocol)) { *configno = i; *interfaceno = i1; *altsettingno = i2; return 2; } } } } return 0; } static int gp_port_usb_find_device_by_class_lib(GPPort *port, int class, int subclass, int protocol) { struct usb_bus *bus; struct usb_device *dev; char *s; char busname[64], devname[64]; C_PARAMS (port); busname[0] = devname[0] = '\0'; s = strchr (port->settings.usb.port,':'); if (s && (s[1] != '\0')) { /* usb:%d,%d */ strncpy(busname,s+1,sizeof(busname)); busname[sizeof(busname)-1] = '\0'; s = strchr(busname,','); if (s) { strncpy(devname, s+1,sizeof(devname)); devname[sizeof(devname)-1] = '\0'; *s = '\0'; } else { busname[0] = '\0'; } } /* * NULL class is not valid. * NULL subclass and protocol is ok. * Should the USB layer report that ? I don't know. * Better to check here. */ C_PARAMS (class); for (bus = usb_busses; bus; bus = bus->next) { if ((busname[0] != '\0') && strcmp(busname, bus->dirname)) continue; for (dev = bus->devices; dev; dev = dev->next) { int ret, config = -1, interface = -1, altsetting = -1; if ((devname[0] != '\0') && strcmp(devname, dev->filename)) continue; GP_LOG_D ("Looking for USB device (class 0x%x, subclass, 0x%x, protocol 0x%x)...", class, subclass, protocol); ret = gp_port_usb_match_device_by_class(dev, class, subclass, protocol, &config, &interface, &altsetting); if (!ret) continue; port->pl->d = dev; GP_LOG_D ("Found USB class device (class 0x%x, subclass, 0x%x, protocol 0x%x)", class, subclass, protocol); /* Set the defaults */ if (dev->config) { int i; port->settings.usb.config = dev->config[config].bConfigurationValue; port->settings.usb.interface = dev->config[config].interface[interface].altsetting[altsetting].bInterfaceNumber; port->settings.usb.altsetting = dev->config[config].interface[interface].altsetting[altsetting].bAlternateSetting; port->settings.usb.inep = gp_port_usb_find_ep(dev, config, interface, altsetting, USB_ENDPOINT_IN, USB_ENDPOINT_TYPE_BULK); port->settings.usb.outep = gp_port_usb_find_ep(dev, config, interface, altsetting, USB_ENDPOINT_OUT, USB_ENDPOINT_TYPE_BULK); port->settings.usb.intep = gp_port_usb_find_ep(dev, config, interface, altsetting, USB_ENDPOINT_IN, USB_ENDPOINT_TYPE_INTERRUPT); port->settings.usb.maxpacketsize = 0; GP_LOG_D ("inep to look for is %02x", port->settings.usb.inep); for (i=0;iconfig[config].interface[interface].altsetting[altsetting].bNumEndpoints;i++) { if (port->settings.usb.inep == dev->config[config].interface[interface].altsetting[altsetting].endpoint[i].bEndpointAddress) { port->settings.usb.maxpacketsize = dev->config[config].interface[interface].altsetting[altsetting].endpoint[i].wMaxPacketSize; break; } } GP_LOG_D ("Detected defaults: config %d, interface %d, altsetting %d, " "idVendor ID %04x, idProduct %04x, inep %02x, outep %02x, intep %02x", port->settings.usb.config, port->settings.usb.interface, port->settings.usb.altsetting, dev->descriptor.idVendor, dev->descriptor.idProduct, port->settings.usb.inep, port->settings.usb.outep, port->settings.usb.intep ); } return GP_OK; } } #if 0 gp_port_set_error (port, _("Could not find USB device " "(class 0x%x, subclass 0x%x, protocol 0x%x). Make sure this device " "is connected to the computer."), class, subclass, protocol); #endif return GP_ERROR_IO_USB_FIND; } GPPortOperations * gp_port_library_operations (void) { GPPortOperations *ops; ops = calloc (1, sizeof (GPPortOperations)); if (!ops) return (NULL); ops->init = gp_port_usb_init; ops->exit = gp_port_usb_exit; ops->open = gp_port_usb_open; ops->close = gp_port_usb_close; ops->read = gp_port_usb_read; ops->reset = gp_port_usb_reset; ops->write = gp_port_usb_write; ops->check_int = gp_port_usb_check_int; ops->update = gp_port_usb_update; ops->clear_halt = gp_port_usb_clear_halt_lib; ops->msg_write = gp_port_usb_msg_write_lib; ops->msg_read = gp_port_usb_msg_read_lib; ops->msg_interface_write = gp_port_usb_msg_interface_write_lib; ops->msg_interface_read = gp_port_usb_msg_interface_read_lib; ops->msg_class_write = gp_port_usb_msg_class_write_lib; ops->msg_class_read = gp_port_usb_msg_class_read_lib; ops->find_device = gp_port_usb_find_device_lib; ops->find_device_by_class = gp_port_usb_find_device_by_class_lib; return (ops); } libgphoto2-2.5.9/gphoto2/0000755000175000001440000000000012623156263012165 500000000000000libgphoto2-2.5.9/gphoto2/gphoto2-context.h0000644000175000001440000001160112610415536015316 00000000000000/** \file * \brief Context callback operation functions. * * \author Copyright 2001 Lutz Mueller * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_CONTEXT_H__ #define __GPHOTO2_CONTEXT_H__ #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * \brief The gphoto context structure. * * This structure allows callback handling, passing error contexts back, * progress handling and download cancellation and similar things. * It is usually passed around the functions. */ typedef struct _GPContext GPContext; GPContext *gp_context_new (void); void gp_context_ref (GPContext *context); void gp_context_unref (GPContext *context); /** * \brief Return codes that can be returned by progress handling. * * An application can return special values back to the libgphoto2 * progress callback handling functions. If "Cancel" is selected, * libgphoto2 and the camera driver will try to cancel transfer. */ typedef enum _GPContextFeedback { GP_CONTEXT_FEEDBACK_OK, /**< Everything ok... proceed. */ GP_CONTEXT_FEEDBACK_CANCEL /**< Please cancel the current transfer if possible. */ } GPContextFeedback; /* Functions */ typedef void (* GPContextIdleFunc) (GPContext *context, void *data); typedef void (* GPContextErrorFunc) (GPContext *context, const char *text, void *data); typedef void (* GPContextStatusFunc) (GPContext *context, const char *text, void *data); typedef void (* GPContextMessageFunc) (GPContext *context, const char *text, void *data); typedef GPContextFeedback (* GPContextQuestionFunc) (GPContext *context, const char *text, void *data); typedef GPContextFeedback (* GPContextCancelFunc) (GPContext *context, void *data); typedef unsigned int (* GPContextProgressStartFunc) (GPContext *context, float target, const char *text, void *data); typedef void (* GPContextProgressUpdateFunc) (GPContext *context, unsigned int id, float current, void *data); typedef void (* GPContextProgressStopFunc) (GPContext *context, unsigned int id, void *data); /* Setting those functions (frontends) */ void gp_context_set_idle_func (GPContext *context, GPContextIdleFunc func, void *data); void gp_context_set_progress_funcs (GPContext *context, GPContextProgressStartFunc start_func, GPContextProgressUpdateFunc update_func, GPContextProgressStopFunc stop_func, void *data); void gp_context_set_error_func (GPContext *context, GPContextErrorFunc func, void *data); void gp_context_set_status_func (GPContext *context, GPContextStatusFunc func, void *data); void gp_context_set_question_func (GPContext *context, GPContextQuestionFunc func, void *data); void gp_context_set_cancel_func (GPContext *context, GPContextCancelFunc func, void *data); void gp_context_set_message_func (GPContext *context, GPContextMessageFunc func, void *data); /* Calling those functions (backends) */ void gp_context_idle (GPContext *context); void gp_context_error (GPContext *context, const char *format, ...) #ifdef __GNUC__ __attribute__((__format__(printf,2,3))) #endif ; void gp_context_status (GPContext *context, const char *format, ...) #ifdef __GNUC__ __attribute__((__format__(printf,2,3))) #endif ; void gp_context_message (GPContext *context, const char *format, ...) #ifdef __GNUC__ __attribute__((__format__(printf,2,3))) #endif ; GPContextFeedback gp_context_question (GPContext *context, const char *format, ...) #ifdef __GNUC__ __attribute__((__format__(printf,2,3))) #endif ; GPContextFeedback gp_context_cancel (GPContext *context); unsigned int gp_context_progress_start (GPContext *context, float target, const char *format, ...) #ifdef __GNUC__ __attribute__((__format__(printf,3,4))) #endif ; void gp_context_progress_update (GPContext *context, unsigned int id, float current); void gp_context_progress_stop (GPContext *context, unsigned int id); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_CONTEXT_H__ */ libgphoto2-2.5.9/gphoto2/gphoto2-list.h0000644000175000001440000000556412610415524014615 00000000000000/** \file gphoto2-list.h * * Lists of files, folders, cameras, etc. * * \author Copyright 2001 Scott Fritzinger * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_LIST_H__ #define __GPHOTO2_LIST_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * \brief A generic list * * This structure provides a list with \a name:value pairs that is used in various * parts of libgphoto2. Its details are internal, please use the * gp_list_xxx accessor functions. * * Usage pattern for CameraList for users external of * libgphoto2, such as libgphoto2 frontends: * * \code * CameraList *list; * gp_list_new (&list); * init_list_somehow (list); * for (i=0; i < gp_list_count(list); i++) { * char *name, *value; * gp_list_get_name (list, i, &name); * gp_list_get_name (list, i, &value); * do_something_with (name, value); * } * gp_list_free (list); * \endcode * * Please do NOT directly instantiate a CameraList object like this: * \code * CameraList foo; // DO NOT DO THIS * \endcode * * Please do NOT directly access the structure members like this: * \code * list->entry[i].name // DO NOT DO THIS * \endcode */ typedef struct _CameraList CameraList; int gp_list_new (CameraList **list); int gp_list_ref (CameraList *list); int gp_list_unref (CameraList *list); int gp_list_free (CameraList *list); int gp_list_count (CameraList *list); int gp_list_append (CameraList *list, const char *name, const char *value); int gp_list_reset (CameraList *list); int gp_list_sort (CameraList *list); int gp_list_find_by_name (CameraList *list, int *index, const char *name); int gp_list_get_name (CameraList *list, int index, const char **name); int gp_list_get_value (CameraList *list, int index, const char **value); int gp_list_set_name (CameraList *list, int index, const char *name); int gp_list_set_value (CameraList *list, int index, const char *value); int gp_list_populate (CameraList *list, const char *format, int count); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_LIST_H__ */ libgphoto2-2.5.9/gphoto2/gphoto2-filesys.h0000644000175000001440000003576512610415536015331 00000000000000/** \file * \brief Filesystem related operations and declarations. * * \author Copyright 2000 Scott Fritzinger * \author Copyright 2008-2009 Marcus Meissner * * \note * Contributions: * Lutz Mueller (2001) * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_FILESYS_H__ #define __GPHOTO2_FILESYS_H__ #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * \brief Bitmask on what fields are set in the CameraFileInfo structure. * * Bitmask to mark up which fields are set in the CameraFileInfo * structure. The other fields might be uninitialized. * If you set information via gp_camera_file_set_info() you * need to set those flags. If you retrieve information via * gp_camera_file_get_info() you need to check those flags. * They are seperate for both "normal" and "preview" parts * and are mostly image related. */ typedef enum { GP_FILE_INFO_NONE = 0, /**< \brief No fields set. */ GP_FILE_INFO_TYPE = 1 << 0, /**< \brief The MIME type is set. */ GP_FILE_INFO_SIZE = 1 << 2, /**< \brief The filesize is set. */ GP_FILE_INFO_WIDTH = 1 << 3, /**< \brief The width is set. */ GP_FILE_INFO_HEIGHT = 1 << 4, /**< \brief The height is set. */ GP_FILE_INFO_PERMISSIONS = 1 << 5, /**< \brief The access permissions are set. */ GP_FILE_INFO_STATUS = 1 << 6, /**< \brief The status is set (downloaded). */ GP_FILE_INFO_MTIME = 1 << 7, /**< \brief The modification time is set. */ GP_FILE_INFO_ALL = 0xFF /**< \brief All possible fields set. Internal. */ } CameraFileInfoFields; /** * \brief Bitmask containing the file permission flags. * * Possible flag values of the permission entry in the file information. */ typedef enum { GP_FILE_PERM_NONE = 0, /**< \brief No permissions. */ GP_FILE_PERM_READ = 1 << 0, /**< \brief Read permissions. */ GP_FILE_PERM_DELETE = 1 << 1, /**< \brief Write permissions */ GP_FILE_PERM_ALL = 0xFF /**< \brief Internal. */ } CameraFilePermissions; /** * \brief Possible status values. * * Bitmask of possible stati. Currently only download is supported. */ typedef enum { GP_FILE_STATUS_NOT_DOWNLOADED, /**< File is not downloaded. */ GP_FILE_STATUS_DOWNLOADED /**< File is already downloaded. */ } CameraFileStatus; /** * \brief File information of a regular file. * * Contains information a regular file with fields being * set depending on the bitmask in the fields member. */ typedef struct _CameraFileInfoFile { CameraFileInfoFields fields; /**< \brief Bitmask containing the set members. */ CameraFileStatus status; /**< \brief Status of the file. */ uint64_t size; /**< \brief Size of the file. */ char type[64]; /**< \brief MIME type of the file. */ uint32_t width; /**< \brief Height of the file. */ uint32_t height; /**< \brief Width of the file. */ CameraFilePermissions permissions;/**< \brief Permissions of the file. */ time_t mtime; /**< \brief Modification time of the file. */ } CameraFileInfoFile; /** * \brief File information of a preview file. * * Contains information of a preview file with fields being * set depending on the bitmask in the fields member. */ typedef struct _CameraFileInfoPreview { CameraFileInfoFields fields; /**< \brief Bitmask containing the set members. */ CameraFileStatus status; /**< \brief Status of the preview. */ uint64_t size; /**< \brief Size of the preview. */ char type[64]; /**< \brief MIME type of the preview. */ uint32_t width; /**< \brief Width of the preview. */ uint32_t height; /**< \brief Height of the preview. */ } CameraFileInfoPreview; /** * \brief File information of an audio file. * * Contains information of an audio file with fields being * set depending on the bitmask in the fields member. */ typedef struct _CameraFileInfoAudio { CameraFileInfoFields fields; /**< \brief Bitmask containing the set members. */ CameraFileStatus status; /**< \brief Status of the preview file. */ uint64_t size; /**< \brief Size of the audio file. */ char type[64]; /**< \brief MIME type of the audio file. */ } CameraFileInfoAudio; /** * \brief File information structure. * * Contains the normal, preview and audio file information structures * for a specific file. */ typedef struct _CameraFileInfo { CameraFileInfoPreview preview; CameraFileInfoFile file; CameraFileInfoAudio audio; } CameraFileInfo; /** * \brief Storage information flags. * * Bitmask to specify which entries of the filesystem * storage information is set. */ typedef enum { GP_STORAGEINFO_BASE = (1<<0), /**< \brief The base directory. * Usually / if just 1 storage is attached. */ GP_STORAGEINFO_LABEL = (1<<1), /**< \brief Label of the filesystem. * Could also be a DOS label. */ GP_STORAGEINFO_DESCRIPTION = (1<<2), /**< \brief More verbose description. */ GP_STORAGEINFO_ACCESS = (1<<3), /**< \brief Access permissions. */ GP_STORAGEINFO_STORAGETYPE = (1<<4), /**< \brief Hardware type. */ GP_STORAGEINFO_FILESYSTEMTYPE = (1<<5), /**< \brief Filesystem type. */ GP_STORAGEINFO_MAXCAPACITY = (1<<6), /**< \brief Maximum capacity in kbytes */ GP_STORAGEINFO_FREESPACEKBYTES = (1<<7), /**< \brief Free space in kbytes. */ GP_STORAGEINFO_FREESPACEIMAGES = (1<<8) /**< \brief Free space in images. */ } CameraStorageInfoFields; /** * \brief Hardware storage types. * * Type of hardware this storage is on. The types and values * are the same as the PTP standard uses (PTP_ST_xxx). */ typedef enum { GP_STORAGEINFO_ST_UNKNOWN = 0, /**< \brief Unknown storage type. */ GP_STORAGEINFO_ST_FIXED_ROM = 1, /**< \brief A fixed ROM storage. */ GP_STORAGEINFO_ST_REMOVABLE_ROM = 2, /**< \brief A removable ROM storage. */ GP_STORAGEINFO_ST_FIXED_RAM = 3, /**< \brief A fixed RAM storage. (e.g. SDRAM) */ GP_STORAGEINFO_ST_REMOVABLE_RAM = 4 /**< \brief A removable RAM storage. (any kind of cards etc) */ } CameraStorageType; /** * \brief Storage access modes. * * The modes we can access the storage with. Uses the same * types and values as the PTP standard (PTP_AC_xxx). */ typedef enum { GP_STORAGEINFO_AC_READWRITE = 0, /**< \brief Storage is Read / Write. */ GP_STORAGEINFO_AC_READONLY = 1, /**< \brief Storage is Ready Only. */ GP_STORAGEINFO_AC_READONLY_WITH_DELETE = 2 /**< \brief Storage is Ready Only, but allows Delete.*/ } CameraStorageAccessType; /** * \brief Filesystem hierarchy types. * * The type of the filesystem hierarchy the devices uses. * Same types and values as the PTP standard defines (PTP_FST_xxx). */ typedef enum { GP_STORAGEINFO_FST_UNDEFINED = 0, /**< \brief Undefined or unknown filesystem hierarchy. */ GP_STORAGEINFO_FST_GENERICFLAT = 1, /**< \brief Generic flat storage (all in 1 directory). */ GP_STORAGEINFO_FST_GENERICHIERARCHICAL = 2, /**< \brief Generic tree hierarchy. */ GP_STORAGEINFO_FST_DCF = 3 /**< \brief DCIM style storage. */ } CameraStorageFilesystemType; /** * \brief Storage information structue. * * This structure contains the information of a specific camera storage. * Only the members as specified by the \a fields member are valid. */ typedef struct _CameraStorageInformation { CameraStorageInfoFields fields; /**< \brief Bitmask of struct members that are specified. */ char basedir[256]; /**< \brief Basedirectory of the storage. Will be "/" if just 1 storage on the camera. */ char label[256]; /**< \brief Label of the storage. Similar to DOS label. */ char description[256];/**< \brief Description of the storage. */ CameraStorageType type; /**< \brief Hardware type of the storage. */ CameraStorageFilesystemType fstype; /**< \brief Hierarchy type of the filesystem. */ CameraStorageAccessType access; /**< \brief Access permissions. */ uint64_t capacitykbytes; /**< \brief Total capacity in kbytes. */ uint64_t freekbytes; /**< \brief Free space in kbytes. */ uint64_t freeimages; /**< \brief Free space in images (guessed by camera). */ } CameraStorageInformation; /** * \brief Filesystem structure, only exposed to camera drivers. * * Internal structure, contents not exposed to frontends. Camera * drivers get these passed to filesystem related functions and * are supposed to use it only via the accessor functions. */ typedef struct _CameraFilesystem CameraFilesystem; int gp_filesystem_new (CameraFilesystem **fs); int gp_filesystem_free (CameraFilesystem *fs); /* Manual editing */ int gp_filesystem_append (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context); int gp_filesystem_set_info_noop (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo info, GPContext *context); int gp_filesystem_set_file_noop (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context); int gp_filesystem_delete_file_noop (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context); int gp_filesystem_reset (CameraFilesystem *fs); /* Information retrieval */ int gp_filesystem_count (CameraFilesystem *fs, const char *folder, GPContext *context); int gp_filesystem_name (CameraFilesystem *fs, const char *folder, int filenumber, const char **filename, GPContext *context); int gp_filesystem_get_folder (CameraFilesystem *fs, const char *filename, char **folder, GPContext *context); int gp_filesystem_number (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context); /* Listings */ typedef int (*CameraFilesystemListFunc) (CameraFilesystem *fs, const char *folder, CameraList *list, void *data, GPContext *context); int gp_filesystem_list_files (CameraFilesystem *fs, const char *folder, CameraList *list, GPContext *context); int gp_filesystem_list_folders (CameraFilesystem *fs, const char *folder, CameraList *list, GPContext *context); /* File information */ typedef int (*CameraFilesystemSetInfoFunc) (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo info, void *data, GPContext *context); typedef int (*CameraFilesystemGetInfoFunc) (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, void *data, GPContext *context); int gp_filesystem_get_info (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo *info, GPContext *context); int gp_filesystem_set_info (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileInfo info, GPContext *context); /* Files */ typedef int (*CameraFilesystemGetFileFunc) (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context); typedef int (*CameraFilesystemReadFileFunc) (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, uint64_t offset, char *buf, uint64_t *size, void *data, GPContext *context); typedef int (*CameraFilesystemDeleteFileFunc) (CameraFilesystem *fs, const char *folder, const char *filename, void *data, GPContext *context); int gp_filesystem_get_file (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context); int gp_filesystem_read_file (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, uint64_t offset, char *buf, uint64_t *size, GPContext *context); int gp_filesystem_delete_file (CameraFilesystem *fs, const char *folder, const char *filename, GPContext *context); /* Folders */ typedef int (*CameraFilesystemPutFileFunc) (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, void *data, GPContext *context); typedef int (*CameraFilesystemDeleteAllFunc) (CameraFilesystem *fs, const char *folder, void *data, GPContext *context); typedef int (*CameraFilesystemDirFunc) (CameraFilesystem *fs, const char *folder, const char *name, void *data, GPContext *context); typedef int (*CameraFilesystemStorageInfoFunc) (CameraFilesystem *fs, CameraStorageInformation **, int *nrofstorageinformations, void *data, GPContext *context); int gp_filesystem_get_storageinfo (CameraFilesystem *fs, CameraStorageInformation **, int *nrofstorageinformations, GPContext *context); typedef struct _CameraFilesystemFuncs CameraFilesystemFuncs; struct _CameraFilesystemFuncs { CameraFilesystemListFunc file_list_func; CameraFilesystemListFunc folder_list_func; CameraFilesystemPutFileFunc put_file_func; CameraFilesystemDeleteAllFunc delete_all_func; CameraFilesystemGetInfoFunc get_info_func; CameraFilesystemSetInfoFunc set_info_func; CameraFilesystemDirFunc make_dir_func; CameraFilesystemDirFunc remove_dir_func; CameraFilesystemGetFileFunc get_file_func; CameraFilesystemReadFileFunc read_file_func; CameraFilesystemDeleteFileFunc del_file_func; CameraFilesystemStorageInfoFunc storage_info_func; /* for later use. Remove one if you add a new function */ void *unused[31]; }; int gp_filesystem_set_funcs (CameraFilesystem *fs, CameraFilesystemFuncs *funcs, void *data); int gp_filesystem_put_file (CameraFilesystem *fs, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context); int gp_filesystem_delete_all (CameraFilesystem *fs, const char *folder, GPContext *context); int gp_filesystem_make_dir (CameraFilesystem *fs, const char *folder, const char *name, GPContext *context); int gp_filesystem_remove_dir (CameraFilesystem *fs, const char *folder, const char *name, GPContext *context); /* For debugging */ int gp_filesystem_dump (CameraFilesystem *fs); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_FILESYS_H__ */ libgphoto2-2.5.9/gphoto2/gphoto2-setting.h0000644000175000001440000000217412610415524015311 00000000000000/** \file * * \author Copyright 2000 Scott Fritzinger * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_SETTING_H__ #define __GPHOTO2_SETTING_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ int gp_setting_set (char *id, char *key, char *value); int gp_setting_get (char *id, char *key, char *value); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_SETTING_H__ */ libgphoto2-2.5.9/gphoto2/gphoto2-abilities-list.h0000644000175000001440000001726112610415524016555 00000000000000/** \file gphoto2-abilities-list.h * \brief List of supported camera models including their abilities. * * \author Copyright 2000 Scott Fritzinger * * \par * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \par * This library 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 * Lesser General Public License for more details. * * \par * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_ABILITIES_LIST_H__ #define __GPHOTO2_ABILITIES_LIST_H__ #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * Current implementation status of the camera driver. */ typedef enum { GP_DRIVER_STATUS_PRODUCTION, /**< Driver is production ready. */ GP_DRIVER_STATUS_TESTING, /**< Driver is beta quality. */ GP_DRIVER_STATUS_EXPERIMENTAL, /**< Driver is alpha quality and might even not work. */ GP_DRIVER_STATUS_DEPRECATED /**< Driver is no longer recommended to use and will be removed. */ } CameraDriverStatus; /** * Type of the device represented. Currently we have Still Cameras * and MTP Audio Players. */ typedef enum { GP_DEVICE_STILL_CAMERA = 0, /**< Traditional still camera */ GP_DEVICE_AUDIO_PLAYER = 1 << 0 /**< Audio player */ } GphotoDeviceType; /** * A bitmask of remote control related operations of the device. * Some drivers might support additional dynamic capabilities (like the PTP driver). */ typedef enum { GP_OPERATION_NONE = 0, /**< No remote control operation supported. */ GP_OPERATION_CAPTURE_IMAGE = 1 << 0, /**< Capturing images supported. */ GP_OPERATION_CAPTURE_VIDEO = 1 << 1, /**< Capturing videos supported. */ GP_OPERATION_CAPTURE_AUDIO = 1 << 2, /**< Capturing audio supported. */ GP_OPERATION_CAPTURE_PREVIEW = 1 << 3, /**< Capturing image previews supported. */ GP_OPERATION_CONFIG = 1 << 4, /**< Camera and Driver configuration supported. */ GP_OPERATION_TRIGGER_CAPTURE = 1 << 5 /**< Camera can trigger capture and wait for events. */ } CameraOperation; /** * A bitmask of image related operations of the device. */ typedef enum { GP_FILE_OPERATION_NONE = 0, /**< No special file operations, just download. */ GP_FILE_OPERATION_DELETE = 1 << 1, /**< Deletion of files is possible. */ GP_FILE_OPERATION_PREVIEW = 1 << 3, /**< Previewing viewfinder content is possible. */ GP_FILE_OPERATION_RAW = 1 << 4, /**< Raw retrieval is possible (used by non-JPEG cameras) */ GP_FILE_OPERATION_AUDIO = 1 << 5, /**< Audio retrieval is possible. */ GP_FILE_OPERATION_EXIF = 1 << 6 /**< EXIF retrieval is possible. */ } CameraFileOperation; /** * A bitmask of filesystem related operations of the device. */ typedef enum { GP_FOLDER_OPERATION_NONE = 0, /**< No special filesystem operation. */ GP_FOLDER_OPERATION_DELETE_ALL = 1 << 0, /**< Deletion of all files on the device. */ GP_FOLDER_OPERATION_PUT_FILE = 1 << 1, /**< Upload of files to the device possible. */ GP_FOLDER_OPERATION_MAKE_DIR = 1 << 2, /**< Making directories on the device possible. */ GP_FOLDER_OPERATION_REMOVE_DIR = 1 << 3 /**< Removing directories from the device possible. */ } CameraFolderOperation; #ifdef _GPHOTO2_INTERNAL_CODE /* enum CameraOperation */ extern const StringFlagItem gpi_camera_operation_map[]; /* enum CameraFileOperation */ extern const StringFlagItem gpi_file_operation_map[]; /* enum CameraFolderOperation */ extern const StringFlagItem gpi_folder_operation_map[]; /* enum GphotoDeviceType */ extern const StringFlagItem gpi_gphoto_device_type_map[]; /* enum CameraDriverStatus */ extern const StringFlagItem gpi_camera_driver_status_map[]; #endif /* _GPHOTO2_INTERNAL_CODE */ /** * \brief Describes the properties of a specific camera. * * The internals of this structures are used extensively by the * camlibs, but the status regarding use by frontends is questionable. */ typedef struct { char model [128]; /**< \brief name of camera model */ CameraDriverStatus status; /**< \brief driver quality */ /** \brief Supported port types. */ GPPortType port; /** \brief Supported serial port speeds (terminated with a value of 0). */ int speed [64]; /* Supported operations */ CameraOperation operations; /**< \brief Camera operation funcs */ CameraFileOperation file_operations; /**< \brief Camera file op funcs */ CameraFolderOperation folder_operations;/**< \brief Camera folder op funcs */ int usb_vendor; /**< \brief USB Vendor D */ int usb_product; /**< \brief USB Product ID */ int usb_class; /**< \brief USB device class */ int usb_subclass; /**< \brief USB device subclass */ int usb_protocol; /**< \brief USB device protocol */ /* For core use */ char library [1024]; /**< \brief (Internal) library filename */ char id [1024]; /**< \brief (Internal) camera ID name */ GphotoDeviceType device_type; /**< \brief Device type. */ /** Reserved space to use in the future w/out changing the * struct size */ int reserved2; /**< reserved space \internal */ int reserved3; /**< reserved space \internal */ int reserved4; /**< reserved space \internal */ int reserved5; /**< reserved space \internal */ int reserved6; /**< reserved space \internal */ int reserved7; /**< reserved space \internal */ int reserved8; /**< reserved space \internal */ } CameraAbilities; /** * \brief List of supported camera models including their abilities * * The internals of this list are hidden - use the access functions. */ typedef struct _CameraAbilitiesList CameraAbilitiesList; int gp_abilities_list_new (CameraAbilitiesList **list); int gp_abilities_list_free (CameraAbilitiesList *list); int gp_abilities_list_load (CameraAbilitiesList *list, GPContext *context); int gp_abilities_list_load_dir (CameraAbilitiesList *list, const char *dir, GPContext *context); int gp_abilities_list_reset (CameraAbilitiesList *list); int gp_abilities_list_detect (CameraAbilitiesList *list, GPPortInfoList *info_list, CameraList *l, GPContext *context); int gp_abilities_list_append (CameraAbilitiesList *list, CameraAbilities abilities); int gp_abilities_list_count (CameraAbilitiesList *list); int gp_abilities_list_lookup_model (CameraAbilitiesList *list, const char *model); int gp_abilities_list_get_abilities (CameraAbilitiesList *list, int index, CameraAbilities *abilities); const char *gp_message_codeset (const char *); /** * Name of the environment variable which may contain the path where * to look for the camlibs. If this environment variable is not defined, * use the compiled-in default constant. * * \internal Internal use only. */ #ifdef _GPHOTO2_INTERNAL_CODE #define CAMLIBDIR_ENV "CAMLIBS" #endif /* _GPHOTO2_INTERNAL_CODE */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_ABILITIES_LIST_H__ */ libgphoto2-2.5.9/gphoto2/gphoto2.h0000644000175000001440000000275312610415536013644 00000000000000/** \file * \brief Convenience header for gphoto2 * * \author Copyright 2001 Lutz Mueller * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_H__ #define __GPHOTO2_H__ #ifdef __cplusplus extern "C" { #endif #ifdef OS2 # include # include # define CAMLIBS getenv("CAMLIBS") # define RTLD_LAZY 0x001 # define VERSION "2" # define usleep(t) _sleep2(((t)+500)/ 1000) #endif #ifdef WIN32 #undef CAMLIBS #define CAMLIBS "." #endif #include #include #include #include #include #include #ifdef __cplusplus } #endif #endif /* __GPHOTO2_H__ */ libgphoto2-2.5.9/gphoto2/gphoto2-widget.h0000644000175000001440000001142312610415524015114 00000000000000/** \file * * \author Copyright 2000 Scott Fritzinger * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_WIDGET_H__ #define __GPHOTO2_WIDGET_H__ #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** \brief internal structure please use the accessors. */ typedef struct _CameraWidget CameraWidget; #ifdef __cplusplus } #endif /* __cplusplus */ #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * \brief Type of the widget to be created. * * The actual widget type we want to create. The type of the value * it supports depends on this type. */ typedef enum { /* Value (get/set): */ GP_WIDGET_WINDOW, /**< \brief Window widget * This is the toplevel configuration widget. It should likely contain multiple #GP_WIDGET_SECTION entries. */ GP_WIDGET_SECTION, /**< \brief Section widget (think Tab) */ GP_WIDGET_TEXT, /**< \brief Text widget. */ /* char * */ GP_WIDGET_RANGE, /**< \brief Slider widget. */ /* float */ GP_WIDGET_TOGGLE, /**< \brief Toggle widget (think check box) */ /* int */ GP_WIDGET_RADIO, /**< \brief Radio button widget. */ /* char * */ GP_WIDGET_MENU, /**< \brief Menu widget (same as RADIO). */ /* char * */ GP_WIDGET_BUTTON, /**< \brief Button press widget. */ /* CameraWidgetCallback */ GP_WIDGET_DATE /**< \brief Date entering widget. */ /* int */ } CameraWidgetType; /** * \brief Callback handler for Button widgets. */ typedef int (* CameraWidgetCallback) (Camera *, CameraWidget *, GPContext *); int gp_widget_new (CameraWidgetType type, const char *label, CameraWidget **widget); int gp_widget_free (CameraWidget *widget); int gp_widget_ref (CameraWidget *widget); int gp_widget_unref (CameraWidget *widget); int gp_widget_append (CameraWidget *widget, CameraWidget *child); int gp_widget_prepend (CameraWidget *widget, CameraWidget *child); int gp_widget_count_children (CameraWidget *widget); int gp_widget_get_child (CameraWidget *widget, int child_number, CameraWidget **child); /* Retrieve Widgets */ int gp_widget_get_child_by_label (CameraWidget *widget, const char *label, CameraWidget **child); int gp_widget_get_child_by_id (CameraWidget *widget, int id, CameraWidget **child); int gp_widget_get_child_by_name (CameraWidget *widget, const char *name, CameraWidget **child); int gp_widget_get_root (CameraWidget *widget, CameraWidget **root); int gp_widget_get_parent (CameraWidget *widget, CameraWidget **parent); int gp_widget_set_value (CameraWidget *widget, const void *value); int gp_widget_get_value (CameraWidget *widget, void *value); int gp_widget_set_name (CameraWidget *widget, const char *name); int gp_widget_get_name (CameraWidget *widget, const char **name); int gp_widget_set_info (CameraWidget *widget, const char *info); int gp_widget_get_info (CameraWidget *widget, const char **info); int gp_widget_get_id (CameraWidget *widget, int *id); int gp_widget_get_type (CameraWidget *widget, CameraWidgetType *type); int gp_widget_get_label (CameraWidget *widget, const char **label); int gp_widget_set_range (CameraWidget *range, float low, float high, float increment); int gp_widget_get_range (CameraWidget *range, float *min, float *max, float *increment); int gp_widget_add_choice (CameraWidget *widget, const char *choice); int gp_widget_count_choices (CameraWidget *widget); int gp_widget_get_choice (CameraWidget *widget, int choice_number, const char **choice); int gp_widget_changed (CameraWidget *widget); int gp_widget_set_changed (CameraWidget *widget, int changed); int gp_widget_set_readonly (CameraWidget *widget, int readonly); int gp_widget_get_readonly (CameraWidget *widget, int *readonly); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_WIDGET_H__ */ libgphoto2-2.5.9/gphoto2/gphoto2-library.h0000644000175000001440000000433712610415524015303 00000000000000/** \file * \brief Camery driver header. * * \author Copyright 2000 Scott Fritzinger * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_LIBRARY_H__ #define __GPHOTO2_LIBRARY_H__ #include #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * \brief Returns a unique id for the camera driver. * * \param id a #CameraText * \return a gphoto2 error code * **/ typedef int (* CameraLibraryIdFunc) (CameraText *id); /** * \brief Adds the abilities of the supported models to the supplied list. * * \param list a #CameraAbilitiesList * \return a gphoto2 error code * **/ typedef int (* CameraLibraryAbilitiesFunc) (CameraAbilitiesList *list); /** * \brief Initializes the camera. * * \param camera a #Camera * \param context a #GPContext * \return a gphoto2 error code * * The camera driver will establish a first connection * to the camera and configure the camera variable (i.e. using * #gp_filesystem_set_list_funcs or #gp_port_get_settings). * **/ typedef int (* CameraLibraryInitFunc) (Camera *camera, GPContext *context); /* * If you want to write a camera library, you need to implement * the following three functions. Everything else should be declared * as static. */ int camera_id (CameraText *id); int camera_abilities (CameraAbilitiesList *list); int camera_init (Camera *camera, GPContext *context); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_LIBRARY_H__ */ libgphoto2-2.5.9/gphoto2/gphoto2-result.h0000644000175000001440000000775112610415524015160 00000000000000/** \file * * \author Copyright 2000 Scott Fritzinger * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_RESULT_H__ #define __GPHOTO2_RESULT_H__ /* Additional error codes are defined here */ #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * \brief Corrupted data received * * Data is corrupt. This error is reported by camera drivers if corrupted * data has been received that can not be automatically handled. Normally, * drivers will do everything possible to automatically recover from this * error. **/ #define GP_ERROR_CORRUPTED_DATA -102 /* Corrupted data */ /** * \brief File already exists * * An operation failed because a file existed. This error is reported for * example when the user tries to create a file that already exists. **/ #define GP_ERROR_FILE_EXISTS -103 /** * \brief Specified camera model was not found * * The specified model could not be found. This error is reported when * the user specified a model that does not seem to be supported by * any driver. **/ #define GP_ERROR_MODEL_NOT_FOUND -105 /** * \brief Specified directory was not found * * The specified directory could not be found. This error is reported when * the user specified a directory that is non-existent. **/ #define GP_ERROR_DIRECTORY_NOT_FOUND -107 /** * \brief Specified file was not found * * The specified file could not be found. This error is reported when * the user wants to access a file that is non-existent. **/ #define GP_ERROR_FILE_NOT_FOUND -108 /** * \brief Specified directory already exists * * The specified directory already exists. This error is reported for example * when the user wants to create a directory that already exists. **/ #define GP_ERROR_DIRECTORY_EXISTS -109 /** * \brief The camera is already busy * * Camera I/O or a command is in progress. **/ #define GP_ERROR_CAMERA_BUSY -110 /** * \brief Path is not absolute * * The specified path is not absolute. This error is reported when the user * specifies paths that are not absolute, i.e. paths like "path/to/directory". * As a rule of thumb, in gphoto2, there is nothing like relative paths. **/ #define GP_ERROR_PATH_NOT_ABSOLUTE -111 /** * \brief Cancellation successful. * * A cancellation requestion by the frontend via progress callback and * GP_CONTEXT_FEEDBACK_CANCEL was successful and the transfer has been aborted. */ #define GP_ERROR_CANCEL -112 /** * \brief Unspecified camera error * * The camera reported some kind of error. This can be either a * photographic error, such as failure to autofocus, underexposure, or * violating storage permission, anything else that stops the camera * from performing the operation. */ #define GP_ERROR_CAMERA_ERROR -113 /** * \brief Unspecified failure of the operating system * * There was some sort of OS error in communicating with the camera, * e.g. lack of permission for an operation. */ #define GP_ERROR_OS_FAILURE -114 /** * \brief Not enough space * * There was not enough free space when uploading a file. */ #define GP_ERROR_NO_SPACE -115 const char *gp_result_as_string (int result); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_RESULT_H__ */ libgphoto2-2.5.9/gphoto2/gphoto2-camera.h0000644000175000001440000003354212610415524015067 00000000000000/** \file * * \brief Implement Camera object representing a camera attached to the system. * * \author Copyright 2000 Scott Fritzinger * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_CAMERA_H__ #define __GPHOTO2_CAMERA_H__ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * \brief Object representing a camera attached to the system. * * A Camera object represents a specific instance of a (physical of * virtual) camera attached to the system. * * The abilities of this type of camera are stored in a CameraAbility * object. * * The details of the Camera object are internal. */ typedef struct _Camera Camera; #ifdef __cplusplus } #endif /* __cplusplus */ #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * \brief CameraText structure used in various functions. * * A text structure containing translated text returned * by various functions (about, manual, summary). You should * not assume a size. */ typedef struct { char text [32 * 1024]; /**< \brief Character string containing the translated text. */ } CameraText; /** * \brief A structure created by the capture operation. * * A structure containing the folder and filename of an object * after a successful capture and is passed as reference to the * gp_camera_capture() function. */ typedef struct { char name [128]; /**< \brief Name of the captured file. */ char folder [1024]; /**< \brief Name of the folder of the captured file. */ } CameraFilePath; /** * \brief Type of the capture to do. * * Specifies the type of capture the user wants to do with the * gp_camera_capture() function. */ typedef enum { GP_CAPTURE_IMAGE, /**< \brief Capture an image. */ GP_CAPTURE_MOVIE, /**< \brief Capture a movie. */ GP_CAPTURE_SOUND /**< \brief Capture audio. */ } CameraCaptureType; /** * \brief Specify what event we received from the camera. * * Used by gp_camera_wait_for_event() to specify what * event happened on the camera. * This functionality is still in development and might change. * */ typedef enum { GP_EVENT_UNKNOWN, /**< unknown and unhandled event */ GP_EVENT_TIMEOUT, /**< timeout, no arguments */ GP_EVENT_FILE_ADDED, /**< CameraFilePath* = file path on camfs */ GP_EVENT_FOLDER_ADDED, /**< CameraFilePath* = folder on camfs */ GP_EVENT_CAPTURE_COMPLETE /**< last capture is complete */ } CameraEventType; /** * \name Camera object member functions * * These functions must be implemented by a camlib and the camlib's * camera_init() function will add them to a Camera object. * * @{ */ /** * \brief The camera exit function * * \param camera the current camera * \param context a #GPContext * * This functions is called in the camera driver for closing the camera * connection. It should do the necessary cleanups of the internal camera * state, free allocated private structures and similar. * * The driver does not need to close the #GPPort, this is done by libgphoto2 * itself. * * Implement this function if you need to any of this stuff, otherwise leave * it out. * * \returns a gphoto error code */ typedef int (*CameraExitFunc) (Camera *camera, GPContext *context); /** * \brief Get a configuration tree for the camera and its driver * * \param camera the current camera * \param widget pointer to store the toplevel widget of the tree * \param context the active #GPContext * * A camera driver can support configuration of either its own behaviour * or the camera device itself. To allow a flexible driver framework, * the camera driver provides a generic configuration widget tree to the * frontend, which then renders it, allows user input and sends it back * via the #CameraSetConfigFunc function to have the driver configure itself * or the camera. * * If you do not have configuration ability, there is no need to specify this * function. * * \returns a gphoto error code */ typedef int (*CameraGetConfigFunc) (Camera *camera, CameraWidget **widget, GPContext *context); /** * \brief Set the configuration in the camera * * \param camera the current camera * \param widget the configuration widget tree that was changed * \param context the active #GPContext * * This function is called in the driver after the configuration is set. * It is called directly after setting the value and might called multiple * times (or never) after just one #CameraGetConfigFunc. * * \returns a gphoto error code */ typedef int (*CameraSetConfigFunc) (Camera *camera, CameraWidget *widget, GPContext *context); typedef int (*CameraCaptureFunc) (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context); typedef int (*CameraTriggerCaptureFunc) (Camera *camera, GPContext *context); typedef int (*CameraCapturePreviewFunc) (Camera *camera, CameraFile *file, GPContext *context); typedef int (*CameraSummaryFunc) (Camera *camera, CameraText *text, GPContext *context); typedef int (*CameraManualFunc) (Camera *camera, CameraText *text, GPContext *context); typedef int (*CameraAboutFunc) (Camera *camera, CameraText *text, GPContext *context); typedef int (*CameraWaitForEvent) (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context); /**@}*/ /** * \param camera a \ref Camera object * \param context a \ref GPContext object * \return a gphoto2 error code * * Implement this function in the camera driver if the camera needs to * be initialized before or reset the after each access from * libgphoto2. * * For example, you would probably set the speed to the highest one * right before downloading an image, and reset it to the default speed * afterwards so that other programs will not be affected by this speed * change. */ typedef int (*CameraPrePostFunc) (Camera *camera, GPContext *context); /** * \brief Various camera specific functions. * * This structure contains various pointers to functions that apply to * the camera itself, and not the filesystem (which is handled by the * filesystem functions). Set the ones you want to provide, leave the rest * unset. * * This structure should only used by the driver itself, the frontend * should use the gp_camera_xxx wrapper functions for it, who handle * opening and locking around those hooks. */ typedef struct _CameraFunctions { CameraPrePostFunc pre_func; /**< \brief Function called before each camera operation. */ CameraPrePostFunc post_func; /**< \brief Function called after each camera operation. */ CameraExitFunc exit; /**< \brief Function called on closing the camera. */ /* Configuration */ CameraGetConfigFunc get_config; /**< \brief Called for requesting the configuration widgets. */ CameraSetConfigFunc set_config; /**< \brief Called after a configuration was changed */ /* Capturing */ CameraCaptureFunc capture; /**< \brief Remote control the camera to capture */ CameraTriggerCaptureFunc trigger_capture;/**< \brief Remote control the camera to trigger capture */ CameraCapturePreviewFunc capture_preview;/**< \brief Preview viewfinder content. */ /* Textual information */ CameraSummaryFunc summary; /**< \brief Give a summary about the current camera status, translated. */ CameraManualFunc manual; /**< \brief Give a brief manual about any specific items a user has to know, translated. */ CameraAboutFunc about; /**< \brief A little About text, including authors and credits. */ /* Event Interface */ CameraWaitForEvent wait_for_event; /**< \brief Wait for a specific event from the camera */ /* Reserved space to use in the future without changing the struct size */ void *reserved1; /**< \brief reserved for future use */ void *reserved2; /**< \brief reserved for future use */ void *reserved3; /**< \brief reserved for future use */ void *reserved4; /**< \brief reserved for future use */ void *reserved5; /**< \brief reserved for future use */ void *reserved6; /**< \brief reserved for future use */ void *reserved7; /**< \brief reserved for future use */ void *reserved8; /**< \brief reserved for future use */ } CameraFunctions; typedef struct _CameraPrivateLibrary CameraPrivateLibrary; typedef struct _CameraPrivateCore CameraPrivateCore; struct _Camera { /** \name Those should be accessed only by the camera driver. * @{ */ GPPort *port; CameraFilesystem *fs; CameraFunctions *functions; /**@}*/ CameraPrivateLibrary *pl; /**< Private data of camera libraries. */ CameraPrivateCore *pc; /**< Private data of the core of gphoto2. */ }; /** Create a new camera device. */ int gp_camera_new (Camera **camera); /** \name Preparing initialization * @{ */ int gp_camera_set_abilities (Camera *camera, CameraAbilities abilities); int gp_camera_get_abilities (Camera *camera, CameraAbilities *abilities); int gp_camera_set_port_info (Camera *camera, GPPortInfo info); int gp_camera_get_port_info (Camera *camera, GPPortInfo *info); /**@}*/ /** * \name camera speed * * You normally don't use that. If you do, you prevent the camera driver * from selecting the optimal speed. * * @{ */ int gp_camera_set_port_speed (Camera *camera, int speed); int gp_camera_get_port_speed (Camera *camera); /**@}*/ /** \name Initialization * @{ */ int gp_camera_autodetect (CameraList *list, GPContext *context); int gp_camera_init (Camera *camera, GPContext *context); int gp_camera_exit (Camera *camera, GPContext *context); /**@}*/ /** \name Operations on cameras * @{ */ int gp_camera_ref (Camera *camera); int gp_camera_unref (Camera *camera); int gp_camera_free (Camera *camera); int gp_camera_get_config (Camera *camera, CameraWidget **window, GPContext *context); int gp_camera_set_config (Camera *camera, CameraWidget *window, GPContext *context); int gp_camera_get_summary (Camera *camera, CameraText *summary, GPContext *context); int gp_camera_get_manual (Camera *camera, CameraText *manual, GPContext *context); int gp_camera_get_about (Camera *camera, CameraText *about, GPContext *context); int gp_camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context); int gp_camera_trigger_capture (Camera *camera, GPContext *context); int gp_camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context); int gp_camera_wait_for_event (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context); int gp_camera_get_storageinfo (Camera *camera, CameraStorageInformation**, int *, GPContext *context); /**@}*/ /** \name Operations on folders * @{ */ int gp_camera_folder_list_files (Camera *camera, const char *folder, CameraList *list, GPContext *context); int gp_camera_folder_list_folders (Camera *camera, const char *folder, CameraList *list, GPContext *context); int gp_camera_folder_delete_all (Camera *camera, const char *folder, GPContext *context); int gp_camera_folder_put_file (Camera *camera, const char *folder, const char *filename, CameraFileType type, CameraFile *file, GPContext *context); int gp_camera_folder_make_dir (Camera *camera, const char *folder, const char *name, GPContext *context); int gp_camera_folder_remove_dir (Camera *camera, const char *folder, const char *name, GPContext *context); /**@}*/ /** \name Operations on files * @{ */ int gp_camera_file_get_info (Camera *camera, const char *folder, const char *file, CameraFileInfo *info, GPContext *context); int gp_camera_file_set_info (Camera *camera, const char *folder, const char *file, CameraFileInfo info, GPContext *context); int gp_camera_file_get (Camera *camera, const char *folder, const char *file, CameraFileType type, CameraFile *camera_file, GPContext *context); int gp_camera_file_read (Camera *camera, const char *folder, const char *file, CameraFileType type, uint64_t offset, char *buf, uint64_t *size, GPContext *context); int gp_camera_file_delete (Camera *camera, const char *folder, const char *file, GPContext *context); /**@}*/ /** * \name Some cameras need 'keep-alive-messages'. * @{ */ typedef int (* CameraTimeoutFunc) (Camera *camera, GPContext *context); typedef unsigned int (* CameraTimeoutStartFunc) (Camera *camera, unsigned int timeout, CameraTimeoutFunc func, void *data); typedef void (* CameraTimeoutStopFunc) (Camera *camera, unsigned int id, void *data); void gp_camera_set_timeout_funcs (Camera *camera, CameraTimeoutStartFunc start_func, CameraTimeoutStopFunc stop_func, void *data); int gp_camera_start_timeout (Camera *camera, unsigned int timeout, CameraTimeoutFunc func); void gp_camera_stop_timeout (Camera *camera, unsigned int id); /**@}*/ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_CAMERA_H__ */ libgphoto2-2.5.9/gphoto2/gphoto2-file.h0000644000175000001440000001530312610415620014546 00000000000000/** \file * \brief Abstracted gphoto2 file operations. * * \author Copyright 2000 Scott Fritzinger * \author Copyright 2008-2009 Marcus Meissner * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_FILE_H__ #define __GPHOTO2_FILE_H__ #include #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #define GP_MIME_TXT "text/plain" #define GP_MIME_WAV "audio/wav" #define GP_MIME_RAW "image/x-raw" #define GP_MIME_PNG "image/png" #define GP_MIME_PGM "image/x-portable-graymap" #define GP_MIME_PPM "image/x-portable-pixmap" #define GP_MIME_PNM "image/x-portable-anymap" #define GP_MIME_JPEG "image/jpeg" #define GP_MIME_TIFF "image/tiff" #define GP_MIME_BMP "image/bmp" #define GP_MIME_QUICKTIME "video/quicktime" #define GP_MIME_AVI "video/x-msvideo" #define GP_MIME_CRW "image/x-canon-raw" #define GP_MIME_CR2 "image/x-canon-cr2" #define GP_MIME_UNKNOWN "application/octet-stream" #define GP_MIME_EXIF "application/x-exif" #define GP_MIME_MP3 "audio/mpeg" #define GP_MIME_OGG "application/ogg" #define GP_MIME_WMA "audio/x-wma" #define GP_MIME_ASF "audio/x-asf" #define GP_MIME_MPEG "video/mpeg" #define GP_MIME_AVCHD "video/mp2t" #define GP_MIME_RW2 "image/x-panasonic-raw2" #define GP_MIME_ARW "image/x-sony-arw" /** * \brief The type of view on the specified file. * * Specifies the file of the current file, usually passed * to the gp_camera_file_get() and gp_camera_file_put() * functions. This is useful for multiple views of one * file, like that an single image file has "raw", "normal", * "exif" and "preview" views, or a media file has "normal" * and "metadata" file views. */ typedef enum { GP_FILE_TYPE_PREVIEW, /**< A preview of an image. */ GP_FILE_TYPE_NORMAL, /**< The regular normal data of a file. */ GP_FILE_TYPE_RAW, /**< The raw mode of a file, for instance the raw bayer data for cameras * where postprocessing is done in the driver. The RAW files of modern * DSLRs are GP_FILE_TYPE_NORMAL usually. */ GP_FILE_TYPE_AUDIO, /**< The audio view of a file. Perhaps an embedded comment or similar. */ GP_FILE_TYPE_EXIF, /**< The embedded EXIF data of an image. */ GP_FILE_TYPE_METADATA /**< The metadata of a file, like Metadata of files on MTP devices. */ } CameraFileType; /** * \brief File storage type. * * The file storage type. Only used internally for now, but might * be exposed later on. See gp_file_new() and gp_file_new_from_fd(). */ typedef enum { GP_FILE_ACCESSTYPE_MEMORY, /**< File is in system memory. */ GP_FILE_ACCESSTYPE_FD, /**< File is associated with a UNIX filedescriptor. */ GP_FILE_ACCESSTYPE_HANDLER /**< File is associated with a programmatic handler. */ } CameraFileAccessType; /* FIXME: api might be unstable. function return gphoto results codes. */ typedef struct _CameraFileHandler { int (*size) (void*priv, uint64_t *size); /* only for read? */ int (*read) (void*priv, unsigned char *data, uint64_t *len); int (*write) (void*priv, unsigned char *data, uint64_t *len); /* FIXME: should we have both read/write methods? */ /* FIXME: how to finish method, due to LRU it might be longlived. */ } CameraFileHandler; /*! \struct CameraFile * \brief File structure. * * The internals of the CameraFile struct are private, please use * the accessor functions. */ typedef struct _CameraFile CameraFile; int gp_file_new (CameraFile **file); int gp_file_new_from_fd (CameraFile **file, int fd); int gp_file_new_from_handler (CameraFile **file, CameraFileHandler *handler, void*priv); int gp_file_ref (CameraFile *file); int gp_file_unref (CameraFile *file); int gp_file_free (CameraFile *file); int gp_file_set_name (CameraFile *file, const char *name); int gp_file_get_name (CameraFile *file, const char **name); int gp_file_set_mime_type (CameraFile *file, const char *mime_type); int gp_file_get_mime_type (CameraFile *file, const char **mime_type); int gp_file_set_mtime (CameraFile *file, time_t mtime); int gp_file_get_mtime (CameraFile *file, time_t *mtime); int gp_file_detect_mime_type (CameraFile *file); int gp_file_adjust_name_for_mime_type (CameraFile *file); int gp_file_get_name_by_type (CameraFile *file, const char *basename, CameraFileType type, char **newname); int gp_file_set_data_and_size (CameraFile*, char *data, unsigned long int size); int gp_file_get_data_and_size (CameraFile*, const char **data, unsigned long int *size); /* "Do not use those" * * These functions probably were originally intended for internal use only. * However, due to * - the lack of good documentation * - this being the obvious way to save a file * - the fact that libgphoto2 has been exporting all its internal * symbols for years (until 2005-06) * - our in-house frontends gphoto2 and gtkam using them * a number of external frontends started to use these functions, as * of 2005-06: * - digikam * - f-spot * - gthumb * But a few frontends can live without it (and thus are likely to * use the correct API): * - flphoto * - kamera * * So we're going to phase these functions out over the next year or * so, going the GTK way of keeping the ABI but breaking the API. So * we'll continue to export functionally equivalent functions, but the * header files will not contain definitions for you to use any more. */ int gp_file_open (CameraFile *file, const char *filename); int gp_file_save (CameraFile *file, const char *filename); int gp_file_clean (CameraFile *file); int gp_file_copy (CameraFile *destination, CameraFile *source); /* These are for use by camera drivers only */ int gp_file_append (CameraFile*, const char *data, unsigned long int size); int gp_file_slurp (CameraFile*, char *data, size_t size, size_t *readlen); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __GPHOTO2_FILE_H__ */ libgphoto2-2.5.9/gphoto2/gphoto2-version.h0000644000175000001440000000215512610415524015320 00000000000000/** \file * * \author Copyright 2002 Hans Ulrich Niedermann * * \note * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * \note * This library 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 * Lesser General Public License for more details. * * \note * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #ifndef __GPHOTO2_VERSION_H__ #define __GPHOTO2_VERSION_H__ #include #ifdef __cplusplus extern "C" { #endif const char **gp_library_version(GPVersionVerbosity verbose); #ifdef __cplusplus } #endif #endif /* __GPHOTO2_VERSION_H__ */ libgphoto2-2.5.9/packaging/0000755000175000001440000000000012623156275012532 500000000000000libgphoto2-2.5.9/packaging/Makefile.in0000644000175000001440000005255512623156012014520 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = packaging ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-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 \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in \ $(top_srcdir)/auto-aux/mkinstalldirs ChangeLog DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ SUBDIRS = linux-hotplug generic rpm all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packaging/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign packaging/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # 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, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic clean-libtool cscopelist-am ctags \ ctags-am 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-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 \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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. .NOEXPORT: libgphoto2-2.5.9/packaging/Makefile.am0000644000175000001440000000004412557123324014477 00000000000000SUBDIRS = linux-hotplug generic rpm libgphoto2-2.5.9/packaging/rpm/0000755000175000001440000000000012623156275013330 500000000000000libgphoto2-2.5.9/packaging/rpm/Makefile.in0000644000175000001440000004013312623156012015303 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # $Id$ # # create an RPM package out of an automake based source distribution # © 2001 Hans Ulrich Niedermann # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = packaging/rpm ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = package.spec CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/package.spec.in \ $(top_srcdir)/auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ EXTRA_DIST = package.spec.in @PACKAGE@.spec DISTCLEANFILES = @PACKAGE@.spec all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packaging/rpm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign packaging/rpm/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): package.spec: $(top_builddir)/config.status $(srcdir)/package.spec.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ clean-local cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info 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-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 \ tags-am uninstall uninstall-am .PRECIOUS: Makefile clean-local: rm -rf BUILD RPMS SPECS SOURCES SRPMS @PACKAGE@.spec: package.spec cp $< $@ rpm: Makefile package.spec $(MAKE) clean mkdir -p BUILD SPECS SOURCES SRPMS for arch in i386 i486 i586 i686 alpha noarch; do \ mkdir -p "RPMS/$${arch}"; \ done $(MAKE) SOURCES/@PACKAGE@-@VERSION@.tar.gz SPECS/@PACKAGE@-@VERSION@.spec @RPMBUILD@ --define "_topdir $$(pwd)" -ba SPECS/@PACKAGE@-@VERSION@.spec SOURCES/@PACKAGE@-@VERSION@.tar.gz: $(top_srcdir)/@PACKAGE@-@VERSION@.tar.gz ln -f $< $@ SPECS/@PACKAGE@-@VERSION@.spec: package.spec ln -f $< $@ # 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. .NOEXPORT: libgphoto2-2.5.9/packaging/rpm/Makefile.am0000644000175000001440000000140312561423352015274 00000000000000# $Id$ # # create an RPM package out of an automake based source distribution # © 2001 Hans Ulrich Niedermann # EXTRA_DIST = package.spec.in @PACKAGE@.spec DISTCLEANFILES = @PACKAGE@.spec clean-local: rm -rf BUILD RPMS SPECS SOURCES SRPMS @PACKAGE@.spec: package.spec cp $< $@ rpm: Makefile package.spec $(MAKE) clean mkdir -p BUILD SPECS SOURCES SRPMS for arch in i386 i486 i586 i686 alpha noarch; do \ mkdir -p "RPMS/$${arch}"; \ done $(MAKE) SOURCES/@PACKAGE@-@VERSION@.tar.gz SPECS/@PACKAGE@-@VERSION@.spec @RPMBUILD@ --define "_topdir $$(pwd)" -ba SPECS/@PACKAGE@-@VERSION@.spec SOURCES/@PACKAGE@-@VERSION@.tar.gz: $(top_srcdir)/@PACKAGE@-@VERSION@.tar.gz ln -f $< $@ SPECS/@PACKAGE@-@VERSION@.spec: package.spec ln -f $< $@ libgphoto2-2.5.9/packaging/rpm/package.spec.in0000644000175000001440000002613312610415510016113 00000000000000######################################################################## # # $Id$ # # RPM spec file for @PACKAGE@ # # TODO list concerning packaging # - review and coordinate RPM packaging for libgphoto2, gphoto2, gtkam # ######################################################################## %define debug_package %{nil} #################################### Summary: Software for accessing digital cameras Name: @PACKAGE@ Version: @VERSION@ Release: 2 License: LGPL Group: Applications/Multimedia BuildRoot: %{_tmppath}/%{name}-%{version}-root # sources only available from sf.net - but not wgettable. # Source: http://www.gphoto.org/dist/@PACKAGE@-@VERSION@.tar.gz Source: http://prdownloads.sourceforge.net/gphoto/@PACKAGE@-@VERSION@.tar.gz Url: @URL_GPHOTO_HOME@ ExcludeArch: s390 s390x Provides: libgphoto2 Provides: libgphoto2_port Requires: libgphoto2_port # absolute requirements PreReq: hotplug >= 2001_04_24-13 PreReq: /sbin/ldconfig, grep, fileutils BuildRequires: findutils perl # the following requirements are optional @ENABLE_GTK_DOC_TRUE@BuildRequires: gtk-doc Requires: libusb >= 0.1.8 BuildRequires: libusb-devel >= 0.1.8 #################################### %description The gPhoto2 project is a universal, free application and library framework that lets you download images from several different digital camera models, including the newer models with USB connections. Note that a) for some older camera models you must use the old "gphoto" package. b) for USB mass storage models you must use the driver in the kernel This libgphoto2 package contains only the library that digital camera applications can use. Frontend like the command-line utility gphoto2 and other (GUI) frontends are available seperately. #################################### %package devel Summary: Headers and libraries to compile against the libgphoto2 library. Requires: %{name} = %{version} Provides: libgphoto2-devel Provides: libgphoto2_port-devel Group: Development/Libraries #################################### %description devel The gPhoto2 project is a universal, free application and library framework that lets you download images from several different digital camera models, including the newer models with USB connections. Note that a) for some older camera models you must use the old "gphoto" package. b) for USB mass storage models you must use the driver in the kernel This libgphoto2-devel package contains the files needed to compile frontends like the command-line utility gphoto2 and other (GUI) frontends, which are available seperately. ######################################################################## # Building and installing the beast into %{buildroot} ######################################################################## #################################### %prep rm -rf "${RPM_BUILD_DIR}/%{name}-%{version}" %setup -q -n %{name}-%{version} #################################### %build %define __libtoolize : # FIXME: We should copy the disable- arguments here #@ENABLE_GTK_DOC_TRUE@FIXMEPERCENTconfigure --enable-docs --with-docs-dir=%{buildroot}%{_docdir}/%{name} %configure --with-docs-dir=%{buildroot}%{_docdir}/%{name} make #################################### %install rm -rf "${RPM_BUILD_ROOT}" # Convince gphoto2 to be packaged. perl -p -i -e "s|^libdir.*|libdir='$RPM_BUILD_ROOT%{_libdir}'|g" \ libgphoto2_port/libgphoto2_port/libgphoto2_port.la %makeinstall # Fix up libtool libraries. find $RPM_BUILD_ROOT -name '*.la' | \ xargs perl -p -i -e "s|$RPM_BUILD_ROOT||g" @ENABLE_GTK_DOC_TRUE@cp -a %{buildroot}%{_docdir}/%{name}-%{version}/html html @ENABLE_GTK_DOC_TRUE@cp -a %{buildroot}%{_docdir}/libgphoto2_port-0.5.1/html/api/gphoto2-port html/api @ENABLE_GTK_DOC_TRUE@find html -name '*.sgml' | xargs rm %find_lang @GETTEXT_PACKAGE@ # FIXME: Update this manually as long as libgphoto2_port has a # different build system. %find_lang libgphoto2_port-0 # build file list find %{buildroot} -type f -or -type l \ | sed 's!^%{buildroot}!!' | sort > %{name}-%{version}.all.files # extract .so libs egrep '\.so(\.[0-9]+)*$' \ < %{name}-%{version}.all.files > %{name}-%{version}.so.files egrep -v '\.so(\.[0-9]+)*$' \ < %{name}-%{version}.all.files > %{name}-%{version}.no-so.files # extract files for devel package egrep '(-config|\.h|\.la|\.a|\.pc|\.3)$' \ < %{name}-%{version}.no-so.files > %{name}-%{version}.devel.files egrep -v '(-config|\.h|\.la|\.a|\.pc|\.3)$' \ < %{name}-%{version}.no-so.files > %{name}-%{version}.no-devel.files # extract doc files egrep '^%{_docdir}' \ < %{name}-%{version}.no-devel.files > %{name}-%{version}.doc.files egrep -v '^%{_docdir}' \ < %{name}-%{version}.no-devel.files > %{name}-%{version}.no-doc.files # extract i18n files egrep '^%{_datadir}/locale' \ < %{name}-%{version}.no-doc.files > %{name}-%{version}.i18n.files egrep -v '^%{_datadir}/locale' \ < %{name}-%{version}.no-doc.files > %{name}-%{version}.no-i18n.files # extract misc files for lib package egrep '^(%{_libdir}|%{_datadir})/libgphoto2' \ < %{name}-%{version}.no-i18n.files > %{name}-%{version}.misc.files egrep -v '^(%{_libdir}|%{_datadir})/libgphoto2' \ < %{name}-%{version}.no-i18n.files > %{name}-%{version}.rest.files \ || echo "non-zero exit code is not fatal here" if [ -s %{name}-%{version}.rest.files ] then cat %{name}-%{version}.rest.files fi cat %{name}-%{version}.{so,doc,misc,i18n}.files \ > %{name}-%{version}.files # HACK touch debugfiles.list exit 0 #################################### %clean # FIXME: Cleanup deactiveated for debugging # rm -rf "${RPM_BUILD_ROOT}" ######################################################################## # file list and installation for main package ######################################################################## #################################### %files -f %{name}-%{version}.files %defattr(-,root,root) # FIXME: correct %docxyz markup for doc files #################################### %post # register libraries /sbin/ldconfig # add supported cameras to /etc/hotplug/usb.usermap grep -v '^usbcam' /etc/hotplug/usb.usermap > /etc/hotplug/usb.usermap.tmp %{_libdir}/@PACKAGE@/print-usb-usermap >> /etc/hotplug/usb.usermap.tmp mv /etc/hotplug/usb.usermap.tmp /etc/hotplug/usb.usermap #################################### %postun # unregister libraries /sbin/ldconfig if [ "$1" = 0 ]; then # remove supported cameras from /etc/hotplug/usb.usermap # if erasing the package not as part of a package update grep -v '^usbcam' /etc/hotplug/usb.usermap > /etc/hotplug/usb.usermap.new mv /etc/hotplug/usb.usermap.new /etc/hotplug/usb.usermap fi ######################################################################## # file list and installation for -devel subpackage ######################################################################## #################################### %files devel -f %{name}-%{version}.devel.files %defattr(-,root,root) @ENABLE_GTK_DOC_TRUE@%doc html/api ######################################################################## # ChangeLog ######################################################################## %changelog * Thu Jun 20 2002 Hans Ulrich Niedermann 2.1.4head - hack in correct find_lang arguments - fix misc. nagging little things preventing "rpmbuild -ta" from working * Thu Jun 20 2002 Hans Ulrich Niedermann 2.1.0rc3-1 - only --enable-docs and copy API docs if GTK_DOC found - use --with-doc-formats from local ./configure call * Tue May 28 2002 Hans Ulrich Niedermann 2.0.1dev8-1 - comment out requirements if not used (gtk-doc, transfig) - provide libgphoto2_port - for future compatibility - fixed handling of misc HTML docs (API docs and docbook-generated manual) - install linux-hotplug scripts into a directory of that name - added gphoto2_port(3) man page * Sat May 18 2002 Hans Ulrich Niedermann 2.0.1dev6-1 - added API HTML docs to the -devel package - added man page gphoto2(3), require hotplug >= 2001_04_24-13 * Thu May 9 2002 Hans Ulrich Niedermann 2.0.1dev4-1 - merged changes from current Redhat spec file into gphoto2 distribution as they managed to get the beast to build - re-added FAQ to package (Redhat left it out regrettably) - only require hotplug 2001_04_24-11 instead of 2001_04_24-13 * Mon Apr 29 2002 Tim Waugh 2.0-6 - In fact, don't even build for mainframe. * Mon Apr 29 2002 Florian La Roche 2.0-5 - do not require hotplug for mainframe * Mon Apr 15 2002 Nalin Dahyabhai 2.0-4 - Set the owner of the device to the console lock holder, not the owner of /dev/console, in the hotplug agent, fixing access for users who log in at VTs and use startx (#62976). * Fri Apr 12 2002 Tim Waugh 2.0-3 - Rebuild (fixed bug #63355). * Sat Apr 06 2002 Hans Ulrich Niedermann - require libusb >= 0.0.5 and for building require transfig * Wed Feb 27 2002 Tim Waugh 2.0-2 - Fix from CVS: close port unconditionally in gp_camera_exit(). * Mon Feb 25 2002 Tim Waugh 2.0-1 - 2.0 is released. - Ship the .so symlinks in the devel package. * Mon Feb 25 2002 Tim Waugh 2.0-0.rc4.1 - 2.0rc4. * Fri Feb 22 2002 Tim Waugh 2.0-0.rc3.1 - 2.0rc3. No longer need CVS patch. - Build no longer requires xmlto. * Thu Feb 21 2002 Tim Waugh 2.0-0.rc2.2 - Fix DC240 hangs (patch from CVS). - Rebuild in new environment. * Tue Feb 19 2002 Tim Waugh 2.0-0.rc2.1 - 2.0rc2 (bug #59993). No longer need docs patch or man page. - Really fix up libtool libraries (bug #60002). * Fri Feb 15 2002 Tim Waugh 2.0-0.beta5.2 - PreReq /sbin/ldconfig, grep, and fileutils (bug #59941). * Tue Feb 12 2002 Tim Waugh 2.0-0.beta5.1 - 2.0beta5. - Fix Makefiles so that documentation can be built. - Ship pkgconfig file. - Add man page. * Thu Feb 7 2002 Tim Waugh 2.0-0.beta4.1 - 2.0beta4. - Build requires transfig, and at least version 0.1.5 of libusb. - Clean up file lists. - Build documentation. * Fri Jan 25 2002 Tim Waugh 2.0-0.beta3.2 - Rebuild in new environment. - Dump docbook-dtd30-sgml requirement; gtk-doc is sufficient. * Sun Nov 18 2001 Tim Waugh 2.0-0.beta3.1 - Adapted for Red Hat Linux. * Sat Oct 27 2001 Hans Ulrich Niedermann - fixed update behaviour for hotplug list (do not erase it when updating) * Thu Oct 25 2001 Tim Waugh - hotplug dependency is a prereq not a requires (the package scripts need it) * Sun Oct 14 2001 Hans Ulrich Niedermann - integrated spec file into source package * Sun Oct 14 2001 Hans Ulrich Niedermann - 2.0beta3 * Tue Oct 2 2001 Tim Waugh 2.0beta2-0.1 - Adapted for Red Hat Linux. - 2.0beta2. * Mon Aug 6 2001 Till Kamppeter 2.0-0.beta1.2mdk - Corrected "Requires:" * Mon Aug 6 2001 Till Kamppeter 2.0-0.beta1.1mdk - Initial release ######################################################################## # Local Variables: # mode: rpm-spec # End: libgphoto2-2.5.9/packaging/rpm/libgphoto2.spec0000644000175000001440000002573412623156275016210 00000000000000######################################################################## # # $Id$ # # RPM spec file for libgphoto2 # # TODO list concerning packaging # - review and coordinate RPM packaging for libgphoto2, gphoto2, gtkam # ######################################################################## %define debug_package %{nil} #################################### Summary: Software for accessing digital cameras Name: libgphoto2 Version: 2.5.9 Release: 2 License: LGPL Group: Applications/Multimedia BuildRoot: %{_tmppath}/%{name}-%{version}-root # sources only available from sf.net - but not wgettable. # Source: http://www.gphoto.org/dist/libgphoto2-2.5.9.tar.gz Source: http://prdownloads.sourceforge.net/gphoto/libgphoto2-2.5.9.tar.gz Url: http://www.gphoto.org/ ExcludeArch: s390 s390x Provides: libgphoto2 Provides: libgphoto2_port Requires: libgphoto2_port # absolute requirements PreReq: hotplug >= 2001_04_24-13 PreReq: /sbin/ldconfig, grep, fileutils BuildRequires: findutils perl # the following requirements are optional #BuildRequires: gtk-doc Requires: libusb >= 0.1.8 BuildRequires: libusb-devel >= 0.1.8 #################################### %description The gPhoto2 project is a universal, free application and library framework that lets you download images from several different digital camera models, including the newer models with USB connections. Note that a) for some older camera models you must use the old "gphoto" package. b) for USB mass storage models you must use the driver in the kernel This libgphoto2 package contains only the library that digital camera applications can use. Frontend like the command-line utility gphoto2 and other (GUI) frontends are available seperately. #################################### %package devel Summary: Headers and libraries to compile against the libgphoto2 library. Requires: %{name} = %{version} Provides: libgphoto2-devel Provides: libgphoto2_port-devel Group: Development/Libraries #################################### %description devel The gPhoto2 project is a universal, free application and library framework that lets you download images from several different digital camera models, including the newer models with USB connections. Note that a) for some older camera models you must use the old "gphoto" package. b) for USB mass storage models you must use the driver in the kernel This libgphoto2-devel package contains the files needed to compile frontends like the command-line utility gphoto2 and other (GUI) frontends, which are available seperately. ######################################################################## # Building and installing the beast into %{buildroot} ######################################################################## #################################### %prep rm -rf "${RPM_BUILD_DIR}/%{name}-%{version}" %setup -q -n %{name}-%{version} #################################### %build %define __libtoolize : # FIXME: We should copy the disable- arguments here ##FIXMEPERCENTconfigure --enable-docs --with-docs-dir=%{buildroot}%{_docdir}/%{name} %configure --with-docs-dir=%{buildroot}%{_docdir}/%{name} make #################################### %install rm -rf "${RPM_BUILD_ROOT}" # Convince gphoto2 to be packaged. perl -p -i -e "s|^libdir.*|libdir='$RPM_BUILD_ROOT%{_libdir}'|g" \ libgphoto2_port/libgphoto2_port/libgphoto2_port.la %makeinstall # Fix up libtool libraries. find $RPM_BUILD_ROOT -name '*.la' | \ xargs perl -p -i -e "s|$RPM_BUILD_ROOT||g" #cp -a %{buildroot}%{_docdir}/%{name}-%{version}/html html #cp -a %{buildroot}%{_docdir}/libgphoto2_port-0.5.1/html/api/gphoto2-port html/api #find html -name '*.sgml' | xargs rm %find_lang libgphoto2-6 # FIXME: Update this manually as long as libgphoto2_port has a # different build system. %find_lang libgphoto2_port-0 # build file list find %{buildroot} -type f -or -type l \ | sed 's!^%{buildroot}!!' | sort > %{name}-%{version}.all.files # extract .so libs egrep '\.so(\.[0-9]+)*$' \ < %{name}-%{version}.all.files > %{name}-%{version}.so.files egrep -v '\.so(\.[0-9]+)*$' \ < %{name}-%{version}.all.files > %{name}-%{version}.no-so.files # extract files for devel package egrep '(-config|\.h|\.la|\.a|\.pc|\.3)$' \ < %{name}-%{version}.no-so.files > %{name}-%{version}.devel.files egrep -v '(-config|\.h|\.la|\.a|\.pc|\.3)$' \ < %{name}-%{version}.no-so.files > %{name}-%{version}.no-devel.files # extract doc files egrep '^%{_docdir}' \ < %{name}-%{version}.no-devel.files > %{name}-%{version}.doc.files egrep -v '^%{_docdir}' \ < %{name}-%{version}.no-devel.files > %{name}-%{version}.no-doc.files # extract i18n files egrep '^%{_datadir}/locale' \ < %{name}-%{version}.no-doc.files > %{name}-%{version}.i18n.files egrep -v '^%{_datadir}/locale' \ < %{name}-%{version}.no-doc.files > %{name}-%{version}.no-i18n.files # extract misc files for lib package egrep '^(%{_libdir}|%{_datadir})/libgphoto2' \ < %{name}-%{version}.no-i18n.files > %{name}-%{version}.misc.files egrep -v '^(%{_libdir}|%{_datadir})/libgphoto2' \ < %{name}-%{version}.no-i18n.files > %{name}-%{version}.rest.files \ || echo "non-zero exit code is not fatal here" if [ -s %{name}-%{version}.rest.files ] then cat %{name}-%{version}.rest.files fi cat %{name}-%{version}.{so,doc,misc,i18n}.files \ > %{name}-%{version}.files # HACK touch debugfiles.list exit 0 #################################### %clean # FIXME: Cleanup deactiveated for debugging # rm -rf "${RPM_BUILD_ROOT}" ######################################################################## # file list and installation for main package ######################################################################## #################################### %files -f %{name}-%{version}.files %defattr(-,root,root) # FIXME: correct %docxyz markup for doc files #################################### %post # register libraries /sbin/ldconfig # add supported cameras to /etc/hotplug/usb.usermap grep -v '^usbcam' /etc/hotplug/usb.usermap > /etc/hotplug/usb.usermap.tmp %{_libdir}/libgphoto2/print-usb-usermap >> /etc/hotplug/usb.usermap.tmp mv /etc/hotplug/usb.usermap.tmp /etc/hotplug/usb.usermap #################################### %postun # unregister libraries /sbin/ldconfig if [ "$1" = 0 ]; then # remove supported cameras from /etc/hotplug/usb.usermap # if erasing the package not as part of a package update grep -v '^usbcam' /etc/hotplug/usb.usermap > /etc/hotplug/usb.usermap.new mv /etc/hotplug/usb.usermap.new /etc/hotplug/usb.usermap fi ######################################################################## # file list and installation for -devel subpackage ######################################################################## #################################### %files devel -f %{name}-%{version}.devel.files %defattr(-,root,root) #%doc html/api ######################################################################## # ChangeLog ######################################################################## %changelog * Thu Jun 20 2002 Hans Ulrich Niedermann 2.1.4head - hack in correct find_lang arguments - fix misc. nagging little things preventing "rpmbuild -ta" from working * Thu Jun 20 2002 Hans Ulrich Niedermann 2.1.0rc3-1 - only --enable-docs and copy API docs if GTK_DOC found - use --with-doc-formats from local ./configure call * Tue May 28 2002 Hans Ulrich Niedermann 2.0.1dev8-1 - comment out requirements if not used (gtk-doc, transfig) - provide libgphoto2_port - for future compatibility - fixed handling of misc HTML docs (API docs and docbook-generated manual) - install linux-hotplug scripts into a directory of that name - added gphoto2_port(3) man page * Sat May 18 2002 Hans Ulrich Niedermann 2.0.1dev6-1 - added API HTML docs to the -devel package - added man page gphoto2(3), require hotplug >= 2001_04_24-13 * Thu May 9 2002 Hans Ulrich Niedermann 2.0.1dev4-1 - merged changes from current Redhat spec file into gphoto2 distribution as they managed to get the beast to build - re-added FAQ to package (Redhat left it out regrettably) - only require hotplug 2001_04_24-11 instead of 2001_04_24-13 * Mon Apr 29 2002 Tim Waugh 2.0-6 - In fact, don't even build for mainframe. * Mon Apr 29 2002 Florian La Roche 2.0-5 - do not require hotplug for mainframe * Mon Apr 15 2002 Nalin Dahyabhai 2.0-4 - Set the owner of the device to the console lock holder, not the owner of /dev/console, in the hotplug agent, fixing access for users who log in at VTs and use startx (#62976). * Fri Apr 12 2002 Tim Waugh 2.0-3 - Rebuild (fixed bug #63355). * Sat Apr 06 2002 Hans Ulrich Niedermann - require libusb >= 0.0.5 and for building require transfig * Wed Feb 27 2002 Tim Waugh 2.0-2 - Fix from CVS: close port unconditionally in gp_camera_exit(). * Mon Feb 25 2002 Tim Waugh 2.0-1 - 2.0 is released. - Ship the .so symlinks in the devel package. * Mon Feb 25 2002 Tim Waugh 2.0-0.rc4.1 - 2.0rc4. * Fri Feb 22 2002 Tim Waugh 2.0-0.rc3.1 - 2.0rc3. No longer need CVS patch. - Build no longer requires xmlto. * Thu Feb 21 2002 Tim Waugh 2.0-0.rc2.2 - Fix DC240 hangs (patch from CVS). - Rebuild in new environment. * Tue Feb 19 2002 Tim Waugh 2.0-0.rc2.1 - 2.0rc2 (bug #59993). No longer need docs patch or man page. - Really fix up libtool libraries (bug #60002). * Fri Feb 15 2002 Tim Waugh 2.0-0.beta5.2 - PreReq /sbin/ldconfig, grep, and fileutils (bug #59941). * Tue Feb 12 2002 Tim Waugh 2.0-0.beta5.1 - 2.0beta5. - Fix Makefiles so that documentation can be built. - Ship pkgconfig file. - Add man page. * Thu Feb 7 2002 Tim Waugh 2.0-0.beta4.1 - 2.0beta4. - Build requires transfig, and at least version 0.1.5 of libusb. - Clean up file lists. - Build documentation. * Fri Jan 25 2002 Tim Waugh 2.0-0.beta3.2 - Rebuild in new environment. - Dump docbook-dtd30-sgml requirement; gtk-doc is sufficient. * Sun Nov 18 2001 Tim Waugh 2.0-0.beta3.1 - Adapted for Red Hat Linux. * Sat Oct 27 2001 Hans Ulrich Niedermann - fixed update behaviour for hotplug list (do not erase it when updating) * Thu Oct 25 2001 Tim Waugh - hotplug dependency is a prereq not a requires (the package scripts need it) * Sun Oct 14 2001 Hans Ulrich Niedermann - integrated spec file into source package * Sun Oct 14 2001 Hans Ulrich Niedermann - 2.0beta3 * Tue Oct 2 2001 Tim Waugh 2.0beta2-0.1 - Adapted for Red Hat Linux. - 2.0beta2. * Mon Aug 6 2001 Till Kamppeter 2.0-0.beta1.2mdk - Corrected "Requires:" * Mon Aug 6 2001 Till Kamppeter 2.0-0.beta1.1mdk - Initial release ######################################################################## # Local Variables: # mode: rpm-spec # End: libgphoto2-2.5.9/packaging/generic/0000755000175000001440000000000012623156275014146 500000000000000libgphoto2-2.5.9/packaging/generic/Makefile.in0000644000175000001440000006404612623156012016132 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ utils_PROGRAMS = print-camera-list$(EXEEXT) subdir = packaging/generic ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/gphoto-m4/gp-byteorder.m4 \ $(top_srcdir)/gphoto-m4/gp-camlibs.m4 \ $(top_srcdir)/gphoto-m4/gp-check-doxygen.m4 \ $(top_srcdir)/gphoto-m4/gp-check-library.m4 \ $(top_srcdir)/gphoto-m4/gp-check-shell-environment.m4 \ $(top_srcdir)/gphoto-m4/gp-config-msg.m4 \ $(top_srcdir)/gphoto-m4/gp-documentation.m4 \ $(top_srcdir)/gphoto-m4/gp-gettext-hack.m4 \ $(top_srcdir)/gphoto-m4/gp-internal-docs.m4 \ $(top_srcdir)/gphoto-m4/gp-libltdl.m4 \ $(top_srcdir)/gphoto-m4/gp-packaging.m4 \ $(top_srcdir)/gphoto-m4/gp-pkg-config.m4 \ $(top_srcdir)/gphoto-m4/gp-references.m4 \ $(top_srcdir)/gphoto-m4/gp-stdint.m4 \ $(top_srcdir)/gphoto-m4/gp-udev.m4 \ $(top_srcdir)/gphoto-m4/gp-va-copy.m4 \ $(top_srcdir)/auto-m4/gettext.m4 \ $(top_srcdir)/auto-m4/iconv.m4 $(top_srcdir)/auto-m4/lib-ld.m4 \ $(top_srcdir)/auto-m4/lib-link.m4 \ $(top_srcdir)/auto-m4/lib-prefix.m4 \ $(top_srcdir)/auto-m4/libtool.m4 \ $(top_srcdir)/auto-m4/ltoptions.m4 \ $(top_srcdir)/auto-m4/ltsugar.m4 \ $(top_srcdir)/auto-m4/ltversion.m4 \ $(top_srcdir)/auto-m4/lt~obsolete.m4 \ $(top_srcdir)/auto-m4/nls.m4 $(top_srcdir)/auto-m4/po.m4 \ $(top_srcdir)/auto-m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/auto-aux/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(utilsdir)" "$(DESTDIR)$(udevscriptdir)" PROGRAMS = $(utils_PROGRAMS) print_camera_list_SOURCES = print-camera-list.c print_camera_list_OBJECTS = print-camera-list.$(OBJEXT) am__DEPENDENCIES_1 = print_camera_list_DEPENDENCIES = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } SCRIPTS = $(udevscript_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/auto-aux/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = print-camera-list.c DIST_SOURCES = print-camera-list.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/auto-aux/depcomp \ $(top_srcdir)/auto-aux/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_DEFAULT_CAMLIBS = @ALL_DEFAULT_CAMLIBS@ ALL_DEFINED_CAMLIBS = @ALL_DEFINED_CAMLIBS@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ -I$(top_srcdir) -I$(top_builddir) \ -I$(top_srcdir)/libgphoto2_port -I$(top_srcdir)/libgphoto2 \ -I$(top_builddir)/libgphoto2 AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_LDFLAGS = @AM_LDFLAGS@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ BUILD_THESE_CAMLIBS = @BUILD_THESE_CAMLIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DOT = @DOT@ DOXYGEN = @DOXYGEN@ DOXYGEN_OUTPUT_DIR = @DOXYGEN_OUTPUT_DIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FLEX = @FLEX@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTKDOC = @GTKDOC@ HAVE_DOT = @HAVE_DOT@ HTML_APIDOC_DIR = @HTML_APIDOC_DIR@ HTML_APIDOC_INTERNALS_DIR = @HTML_APIDOC_INTERNALS_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBEXIF_CFLAGS = @LIBEXIF_CFLAGS@ LIBEXIF_CONFIG_PROG = @LIBEXIF_CONFIG_PROG@ LIBEXIF_LIBS = @LIBEXIF_LIBS@ LIBGD_CFLAGS = @LIBGD_CFLAGS@ LIBGD_CONFIG_PROG = @LIBGD_CONFIG_PROG@ LIBGD_LIBS = @LIBGD_LIBS@ LIBGPHOTO2_AGE = @LIBGPHOTO2_AGE@ LIBGPHOTO2_CURRENT = @LIBGPHOTO2_CURRENT@ LIBGPHOTO2_CURRENT_MIN = @LIBGPHOTO2_CURRENT_MIN@ LIBGPHOTO2_REVISION = @LIBGPHOTO2_REVISION@ LIBGPHOTO2_VERSION_INFO = @LIBGPHOTO2_VERSION_INFO@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBJPEG = @LIBJPEG@ LIBLTDL = @LIBLTDL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_CONFIG_PROG = @LIBXML2_CONFIG_PROG@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTDLINCL = @LTDLINCL@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAIL_GPHOTO_DEVEL = @MAIL_GPHOTO_DEVEL@ MAIL_GPHOTO_TRANSLATION = @MAIL_GPHOTO_TRANSLATION@ MAIL_GPHOTO_USER = @MAIL_GPHOTO_USER@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ NO_UNUSED_CFLAGS = @NO_UNUSED_CFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ REQUIREMENTS_FOR_LIBEXIF = @REQUIREMENTS_FOR_LIBEXIF@ REQUIREMENTS_FOR_LIBGD = @REQUIREMENTS_FOR_LIBGD@ REQUIREMENTS_FOR_LIBXML2 = @REQUIREMENTS_FOR_LIBXML2@ RPMBUILD = @RPMBUILD@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ URL_DIGICAM_LIST = @URL_DIGICAM_LIST@ URL_GPHOTO_HOME = @URL_GPHOTO_HOME@ URL_GPHOTO_PROJECT = @URL_GPHOTO_PROJECT@ URL_JPHOTO_HOME = @URL_JPHOTO_HOME@ URL_USB_MASSSTORAGE = @URL_USB_MASSSTORAGE@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ VERSIONMAPLDFLAGS = @VERSIONMAPLDFLAGS@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ apidocdir = @apidocdir@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ camlibdir = @camlibdir@ camlibdocdir = @camlibdocdir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ effective_target = @effective_target@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ hotplugdocdir = @hotplugdocdir@ hotplugusermapdir = @hotplugusermapdir@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgconfigdir = @pkgconfigdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevscriptdir = @udevscriptdir@ utilsdir = @utilsdir@ @HAVE_UDEV_TRUE@udevscript_SCRIPTS = check-ptp-camera EXTRA_DIST = check-ptp-camera print_camera_list_SOURCE = print-camera-list.c print_camera_list_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign packaging/generic/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign packaging/generic/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-utilsPROGRAMS: $(utils_PROGRAMS) @$(NORMAL_INSTALL) @list='$(utils_PROGRAMS)'; test -n "$(utilsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(utilsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(utilsdir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(utilsdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(utilsdir)$$dir" || exit $$?; \ } \ ; done uninstall-utilsPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(utils_PROGRAMS)'; test -n "$(utilsdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(utilsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(utilsdir)" && rm -f $$files clean-utilsPROGRAMS: @list='$(utils_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list print-camera-list$(EXEEXT): $(print_camera_list_OBJECTS) $(print_camera_list_DEPENDENCIES) $(EXTRA_print_camera_list_DEPENDENCIES) @rm -f print-camera-list$(EXEEXT) $(AM_V_CCLD)$(LINK) $(print_camera_list_OBJECTS) $(print_camera_list_LDADD) $(LIBS) install-udevscriptSCRIPTS: $(udevscript_SCRIPTS) @$(NORMAL_INSTALL) @list='$(udevscript_SCRIPTS)'; test -n "$(udevscriptdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(udevscriptdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(udevscriptdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(udevscriptdir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(udevscriptdir)$$dir" || exit $$?; \ } \ ; done uninstall-udevscriptSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(udevscript_SCRIPTS)'; test -n "$(udevscriptdir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(udevscriptdir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print-camera-list.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @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; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(utilsdir)" "$(DESTDIR)$(udevscriptdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-utilsPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-udevscriptSCRIPTS install-utilsPROGRAMS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-udevscriptSCRIPTS uninstall-utilsPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libtool clean-utilsPROGRAMS cscopelist-am ctags ctags-am \ 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-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 \ install-udevscriptSCRIPTS install-utilsPROGRAMS installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am \ uninstall-udevscriptSCRIPTS uninstall-utilsPROGRAMS .PRECIOUS: Makefile # 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. .NOEXPORT: libgphoto2-2.5.9/packaging/generic/Makefile.am0000644000175000001440000000074212610415517016116 00000000000000utils_PROGRAMS = print-camera-list if HAVE_UDEV udevscript_SCRIPTS = check-ptp-camera endif EXTRA_DIST = check-ptp-camera AM_CPPFLAGS += -I$(top_srcdir) -I$(top_builddir) -I$(top_srcdir)/libgphoto2_port -I$(top_srcdir)/libgphoto2 -I$(top_builddir)/libgphoto2 print_camera_list_SOURCE = print-camera-list.c print_camera_list_LDADD = \ $(top_builddir)/libgphoto2/libgphoto2.la \ $(top_builddir)/libgphoto2_port/libgphoto2_port/libgphoto2_port.la \ $(LIBLTDL) \ $(LIBEXIF_LIBS) libgphoto2-2.5.9/packaging/generic/check-ptp-camera0000644000175000001440000000230612610415620017102 00000000000000#!/bin/bash # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301 USA # # # check if any interface of this device is a PTP camera interface (06) INTERFACE="${1:-06/01/01}" BASENAME=${DEVPATH##*/} for d in /sys/${DEVPATH}/${BASENAME}:*; do [[ -d ${d} ]] || continue INTERFACEID="$(< ${d}/bInterfaceClass)" INTERFACEID="${INTERFACEID}/$(< ${d}/bInterfaceSubClass)" INTERFACEID="${INTERFACEID}/$(< ${d}/bInterfaceProtocol)" #echo ${d}: ${INTERFACEID} if [[ ${INTERFACE} == ${INTERFACEID} ]]; then # Found interface exit 0 fi done exit 1 libgphoto2-2.5.9/packaging/generic/print-camera-list.c0000644000175000001440000013422512610415620017560 00000000000000/* print-camera-list - print libgphoto2 camera list in different formats * * Copyright 2002,2005 Hans Ulrich Niedermann * Portions Copyright 2002 Lutz Mueller * Portions Copyright 2005 Julien BLACHE * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ #define GP_USB_HOTPLUG_SCRIPT "usbcam" /* Not sure whether this is the best possible name */ #define ARGV0 "print-camera-list" #define HELP_TEXT \ ARGV0 " - print libgphoto2 camera list in different formats" \ "\n" \ "Syntax:\n" \ " " ARGV0 " [] []\n" \ "\n" \ "Options:\n" \ " --debug print all debug output\n" \ " --help print this help message\n" \ " --verbose also print comments with camera model names\n" \ "\n" \ ARGV0 " prints the camera list in the specified format FORMAT on stdout.\n" \ "\n" \ "All other messages are printed on stderr. In case of any error, the \n" \ "program aborts regardless of data printed on stdout and returns a non-zero\n" \ "status code.\n" #include #include #include #include #include #include #include /* for detailed version message */ #include #include "config.h" #ifndef TRUE #define TRUE (0==0) #endif #ifndef FALSE #define FALSE (0!=0) #endif typedef struct { char *name; GPVersionFunc version_func; } module_version; const module_version module_versions[] = { { "libgphoto2", gp_library_version }, { "libgphoto2_port", gp_port_library_version }, { NULL, NULL } }; typedef char *string_array_t[]; typedef string_array_t *string_array_p; typedef struct { int number_of_cameras; int add_comments; int argc; string_array_p argv; } func_params_t; typedef int (* begin_func_t) (const func_params_t *params, void **data); typedef int (* middle_func_t) (const func_params_t *params, void **data); typedef int (* camera_func_t) (const func_params_t *params, const int i, const int total, const CameraAbilities *ca, void *data); typedef int (* end_func_t) (const func_params_t *params, void *data); #define GP_USB_HOTPLUG_MATCH_VENDOR_ID 0x0001 #define GP_USB_HOTPLUG_MATCH_PRODUCT_ID 0x0002 #define GP_USB_HOTPLUG_MATCH_INT_CLASS 0x0080 #define GP_USB_HOTPLUG_MATCH_INT_SUBCLASS 0x0100 #define GP_USB_HOTPLUG_MATCH_INT_PROTOCOL 0x0200 #ifdef __GNUC__ #define CR(result) \ do { \ int r = (result); \ if (r < 0) { \ fprintf(stderr, ARGV0 ": " \ "Fatal error running `%s'.\n" \ "Aborting.\n", #result ); \ return (r); \ } \ } while (0) #else /* !__GNUC__ */ #define CR(result) \ do { \ int r = (result); \ if (r < 0) { \ fprintf(stderr, ARGV0 ": " \ "Fatal error detected, aborting.\n"); \ return (r); \ } \ } while (0) #endif /* __GNUC__ */ #define FATAL(msg...) \ do { \ fprintf(stderr, ARGV0 ": Fatal: " msg); \ fprintf(stderr, "\n"); \ exit(13); \ } while (0) #define ASSERT(cond) \ do { \ if (!(cond)) { \ FATAL("Assertion failed: %s", #cond); \ } \ } while (0) /* print_version_comment * Print comment to output containing information on library versions * * out the file to write the comment to * startline printed at the start of each line, e.g. "# " or " | " * endline printed as the end of each line, e.g. "\n" or "\n" * firstline printed before first line, e.g. NULL or "\n" */ static void print_version_comment(FILE *out, const char *startline, const char *endline, const char *firstline, const char *lastline) { unsigned int n; if (out == NULL) { FATAL("Internal error: NULL out in print_version_comment()"); } if (firstline != NULL) { fputs(firstline, out); } if (startline != NULL) { fputs(startline, out); } fputs("Created from this library:", out); if (endline != NULL) { fputs(endline, out); } for (n=0; (module_versions[n].name != NULL) && (module_versions[n].version_func != NULL); n++) { const char *name = module_versions[n].name; GPVersionFunc func = module_versions[n].version_func; const char **v = func(GP_VERSION_SHORT); unsigned int i; if (!v) { continue; } if (!v[0]) { continue; } if (startline != NULL) { fputs(startline, out); } fputs(" ", out); fprintf(out,"%-15s %-14s ", name, v[0]); for (i=1; v[i] != NULL; i++) { fputs(v[i], out); if (v[i+1] != NULL) { fputs(", ", out); } } if (endline != NULL) { fputs(endline, out); } } if (lastline != NULL) { fputs(lastline, out); } } static int hotplug_begin_func (const func_params_t *params, void **data) { if (params->add_comments) { printf("# linux-hotplug configuration file " "for libgphoto2 supported devices\n"); print_version_comment(stdout, "# ", "\n", NULL, "#\n"); } return 0; } /* print_usb_usermap * * Print out lines that can be included into usb.usermap * - for all cams supported by our instance of libgphoto2. * * usb.usermap is a file used by * Linux Hotplug http://linux-hotplug.sourceforge.net/ */ static int hotplug_camera_func (const func_params_t *params, const int i, const int total, const CameraAbilities *a, void *data) { int flags = 0; int class = 0, subclass = 0, proto = 0; const char *usermap_script = ((*params->argv)[0] != NULL) ?((*params->argv)[0]) :(GP_USB_HOTPLUG_SCRIPT); if (a->port & GP_PORT_USB) { if (a->usb_vendor) { /* usb product id may be zero! */ class = 0; subclass = 0; proto = 0; flags = (GP_USB_HOTPLUG_MATCH_VENDOR_ID | GP_USB_HOTPLUG_MATCH_PRODUCT_ID); } else if ((a->usb_class) && (a->usb_class != 666)) { class = a->usb_class; subclass = a->usb_subclass; proto = a->usb_protocol; flags = GP_USB_HOTPLUG_MATCH_INT_CLASS; if (subclass != -1) flags |= GP_USB_HOTPLUG_MATCH_INT_SUBCLASS; else subclass = 0; if (proto != -1) flags |= GP_USB_HOTPLUG_MATCH_INT_PROTOCOL; else proto = 0; } } else { /* not a USB camera */ return 0; } if (params->add_comments) { printf ("# %s\n", a->model); } /* The first 3 lone bytes are the device class. * the second 3 lone bytes are the interface class. * for PTP we want the interface class. */ printf ("%-20s " "0x%04x 0x%04x 0x%04x 0x0000 " "0x0000 0x00 0x00 " "0x00 0x%02x 0x%02x " "0x%02x 0x00000000\n", usermap_script, flags, a->usb_vendor, a->usb_product, class, subclass, proto); return 0; } static void print_headline (void) { printf("No.|%-20s|%-20s|%s\n", "camlib", "driver name", "camera model"); } static void print_hline (void) { printf("---+%-20s+%-20s+%s\n", "--------------------", "--------------------", "-------------------------------------------"); } static int human_begin_func (const func_params_t *params, void **data) { print_hline(); print_headline(); print_hline(); return 0; } static int human_end_func (const func_params_t *params, void *data) { print_hline(); print_headline(); return 0; } /** C equivalent of basename(1) */ static const char * path_basename (const char *pathname) { char *result, *tmp; /* remove path part from camlib name */ for (result=tmp=(char *)pathname; (*tmp!='\0'); tmp++) { if ((*tmp == gp_system_dir_delim) && (*(tmp+1) != '\0')) { result = tmp+1; } } return (const char *)result; } static int human_camera_func (const func_params_t *params, const int i, const int total, const CameraAbilities *a, void *data) { const char *camlib_basename; camlib_basename = path_basename(a->library); printf("%3d|%-20s|%-20s|%s\n", i+1, camlib_basename, a->id, a->model); return 0; } static int idlist_camera_func (const func_params_t *params, const int i, const int total, const CameraAbilities *a, void *data) { if (a->usb_vendor) { /* usb product id may be zero! */ printf("%04x:%04x %s\n", a->usb_vendor, a->usb_product, a->model); } return 0; } typedef enum { UDEV_PRE_0_98 = 0, UDEV_0_98 = 1, UDEV_136 = 2, UDEV_175 = 3, UDEV_201 = 4 } udev_version_t; static const StringFlagItem udev_version_t_map[] = { { "pre-0.98", UDEV_PRE_0_98 }, { "0.98", UDEV_0_98 }, { "136", UDEV_136 }, { "175", UDEV_175 }, { "201", UDEV_201 }, { NULL, 0 } }; typedef struct { udev_version_t version; char *mode; char *owner; char *group; char *script; const char *begin_string; const char *usbcam_string; const char *usbdisk_string; } udev_persistent_data_t; static void udev_parse_params (const func_params_t *params, void **data) { /* Note: 2 lines because we need to use || ... having them on the same * line would mean &&. */ static const char * const begin_strings[] = { /* UDEV_PRE_0_98 */ "ACTION!=\"add\", GOTO=\"libgphoto2_rules_end\"\n" "BUS!=\"usb_device\", GOTO=\"libgphoto2_usb_end\"\n\n", /* UDEV_0_98 */ "ACTION!=\"add\", GOTO=\"libgphoto2_rules_end\"\n" "SUBSYSTEM!=\"usb|usb_device\", GOTO=\"libgphoto2_usb_end\"\n\n", /* UDEV_136 */ "ACTION!=\"add\", GOTO=\"libgphoto2_rules_end\"\n" "SUBSYSTEM!=\"usb\", GOTO=\"libgphoto2_usb_end\"\n" "ENV{DEVTYPE}!=\"usb_device\", GOTO=\"libgphoto2_usb_end\"\n\n" "ENV{ID_USB_INTERFACES}==\"\", IMPORT{program}=\"usb_id --export %%p\"\n" /* ignore mass storage class having devices in mark-up */ "ENV{ID_USB_INTERFACES}==\"*:08*:*\", GOTO=\"libgphoto2_usb_end\"\n" /* shortcut the most common camera driver, ptp class, so we avoid parsing 1000 * more rules . It will be completed in udev_begin_func() */ "ENV{ID_USB_INTERFACES}==\"*:060101:*\", ENV{ID_GPHOTO2}=\"1\", ENV{GPHOTO2_DRIVER}=\"PTP\", ", /* UDEV_175 */ "ACTION!=\"add\", GOTO=\"libgphoto2_rules_end\"\n" "SUBSYSTEM!=\"usb\", GOTO=\"libgphoto2_usb_end\"\n" "ENV{DEVTYPE}!=\"usb_device\", GOTO=\"libgphoto2_usb_end\"\n\n" "ENV{ID_USB_INTERFACES}==\"\", IMPORT{builtin}=\"usb_id\"\n" /* ignore mass storage class having devices in mark-up */ "ENV{ID_USB_INTERFACES}==\"*:08*:*\", GOTO=\"libgphoto2_usb_end\"\n" /* shortcut the most common camera driver, ptp class, so we avoid parsing 1000 * more rules . It will be completed in udev_begin_func() */ "ENV{ID_USB_INTERFACES}==\"*:060101:*\", ENV{ID_GPHOTO2}=\"1\", ENV{GPHOTO2_DRIVER}=\"PTP\", ", /* UDEV_201 ... regular stuff is done via hwdb, only scsi generic here. */ "ACTION!=\"add\", GOTO=\"libgphoto2_rules_end\"\n" "SUBSYSTEM!=\"usb\", GOTO=\"libgphoto2_usb_end\"\n" "ENV{ID_USB_INTERFACES}==\"\", IMPORT{builtin}=\"usb_id\"\n" /* shortcut the most common camera driver, ptp class, so we avoid parsing 1000 * more rules . It will be completed in udev_begin_func() */ "ENV{ID_USB_INTERFACES}==\"*:060101:*\", ENV{ID_GPHOTO2}=\"1\", ENV{GPHOTO2_DRIVER}=\"PTP\", ", }; static const char * const usbcam_strings[] = { /* UDEV_PRE_0_98 */ "SYSFS{idVendor}==\"%04x\", SYSFS{idProduct}==\"%04x\"", /* UDEV_0_98 */ "ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\"", /* UDEV_136 */ "ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ENV{ID_GPHOTO2}=\"1\", ENV{GPHOTO2_DRIVER}=\"proprietary\"", /* UDEV_175 */ "ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ENV{ID_GPHOTO2}=\"1\", ENV{GPHOTO2_DRIVER}=\"proprietary\"", /* UDEV_201 */ "" }; static const char * const usbdisk_strings[] = { /* UDEV_PRE_0_98 */ "KERNEL==\"%s\", SYSFS{idVendor}==\"%04x\", SYSFS{idProduct}==\"%04x\"", /* UDEV_0_98 */ "KERNEL==\"%s\", ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\"", /* UDEV_136 */ "KERNEL==\"%s\", ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ENV{ID_GPHOTO2}=\"1\", ENV{GPHOTO2_DRIVER}=\"proprietary\"", /* UDEV_175 */ "KERNEL==\"%s\", ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ENV{ID_GPHOTO2}=\"1\", ENV{GPHOTO2_DRIVER}=\"proprietary\"", /* UDEV_201 */ "KERNEL==\"%s\", ATTRS{idVendor}==\"%04x\", ATTRS{idProduct}==\"%04x\", ENV{ID_GPHOTO2}=\"1\", ENV{GPHOTO2_DRIVER}=\"proprietary\"" }; udev_persistent_data_t *pdata; pdata = calloc(1, sizeof(udev_persistent_data_t)); pdata->version = UDEV_0_98; ASSERT(data != NULL); *data = (void *) pdata; if (1) { int i; char *key = NULL, *val = NULL; for (i=0; ((key=(*params->argv)[i]) != NULL) && ((val=(*params->argv)[i+1]) != NULL); i+=2) { if (0) { /* nothing */ } else if (strcmp("script", key)==0) { pdata->script = val; } else if (strcmp("owner", key)==0) { pdata->owner = val; } else if (strcmp("group", key)==0) { pdata->group = val; } else if (strcmp("version", key)==0) { unsigned int *ver = &pdata->version; if (gpi_string_to_enum(val, ver, udev_version_t_map)) { FATAL("Unrecognized udev version: \"%s\"", val); } } else if (strcmp("mode", key)==0) { pdata->mode = val; } else { FATAL("Unknown key argument: %s", key); } } if ((key != NULL) && (val == NULL)) { FATAL("Single argument remaining; need pairs of key and value"); } } if ((0==0) && (pdata->mode == NULL) && (pdata->group == NULL) && (pdata->owner == NULL) && (pdata->script == NULL) && (pdata->version <= UDEV_0_98)) { FATAL("Either